--- linux-5.8.0.orig/Documentation/ABI/testing/debugfs-aufs +++ linux-5.8.0/Documentation/ABI/testing/debugfs-aufs @@ -0,0 +1,55 @@ +What: /debug/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /debug/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /debug/aufs/si_/plink +Date: Apr 2013 +Contact: J. R. Okajima +Description: + It has three lines and shows the information about the + pseudo-link. The first line is a single number + representing a number of buckets. The second line is a + number of pseudo-links per buckets (separated by a + blank). The last line is a single number representing a + total number of psedo-links. + When the aufs mount option 'noplink' is specified, it + will show "1\n0\n0\n". + +What: /debug/aufs/si_/xib +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xib (External Inode Number + Bitmap), its block size and file size. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. + +What: /debug/aufs/si_/xi0, xi1 ... xiN and xiN-N +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xino (External Inode Number + Translation Table), its link count, block size and file + size. + Due to the file size limit, there may exist multiple + xino files per branch. In this case, "-N" is added to + the filename and it corresponds to the index of the + internal xino array. "-0" is omitted. + When the aufs mount option 'noxino' is specified, Those + entries won't exist. About XINO files, see the aufs + manual. + +What: /debug/aufs/si_/xigen +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xigen (External Inode + Generation Table), its block size and file size. + If CONFIG_AUFS_EXPORT is disabled, this entry will not + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- linux-5.8.0.orig/Documentation/ABI/testing/sysfs-aufs +++ linux-5.8.0/Documentation/ABI/testing/sysfs-aufs @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /sys/fs/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /sys/fs/aufs/si_/br0, br1 ... brN +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of a member directory (which + is called branch) in aufs, and its permission. + +What: /sys/fs/aufs/si_/brid0, brid1 ... bridN +Date: July 2013 +Contact: J. R. Okajima +Description: + It shows the id of a member directory (which is called + branch) in aufs. + +What: /sys/fs/aufs/si_/xi_path +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of XINO (External Inode Number + Bitmap, Translation Table and Generation Table) file + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. --- linux-5.8.0.orig/Documentation/ABI/testing/sysfs-bus-iio +++ linux-5.8.0/Documentation/ABI/testing/sysfs-bus-iio @@ -1569,7 +1569,8 @@ KernelVersion: 4.3 Contact: linux-iio@vger.kernel.org Description: - Raw (unscaled no offset etc.) percentage reading of a substance. + Raw (unscaled no offset etc.) reading of a substance. Units + after application of scale and offset are percents. What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw --- linux-5.8.0.orig/Documentation/ABI/testing/sysfs-devices-memory +++ linux-5.8.0/Documentation/ABI/testing/sysfs-devices-memory @@ -26,8 +26,9 @@ Contact: Badari Pulavarty Description: The file /sys/devices/system/memory/memoryX/phys_device - is read-only and is designed to show the name of physical - memory device. Implementation is currently incomplete. + is read-only; it is a legacy interface only ever used on s390x + to expose the covered storage increment. +Users: Legacy s390-tools lsmem/chmem What: /sys/devices/system/memory/memoryX/phys_index Date: September 2008 --- linux-5.8.0.orig/Documentation/Makefile +++ linux-5.8.0/Documentation/Makefile @@ -78,7 +78,7 @@ $(abspath $(BUILDDIR)/$3/$4) htmldocs: - @$(srctree)/scripts/sphinx-pre-install --version-check + @$(srctree)/scripts/sphinx-pre-install --version-check --no-virtualenv @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var))) linkcheckdocs: --- linux-5.8.0.orig/Documentation/admin-guide/device-mapper/dm-integrity.rst +++ linux-5.8.0/Documentation/admin-guide/device-mapper/dm-integrity.rst @@ -177,14 +177,20 @@ The bitmap flush interval in milliseconds. The metadata buffers are synchronized when this interval expires. +allow_discards + Allow block discard requests (a.k.a. TRIM) for the integrity device. + Discards are only allowed to devices using internal hash. + fix_padding Use a smaller padding of the tag area that is more space-efficient. If this option is not present, large padding is used - that is for compatibility with older kernels. -allow_discards - Allow block discard requests (a.k.a. TRIM) for the integrity device. - Discards are only allowed to devices using internal hash. +legacy_recalculate + Allow recalculating of volumes with HMAC keys. This is disabled by + default for security reasons - an attacker could modify the volume, + set recalc_sector to zero, and the kernel would not detect the + modification. The journal mode (D/J), buffer_sectors, journal_watermark, commit_time and allow_discards can be changed when reloading the target (load an inactive --- linux-5.8.0.orig/Documentation/admin-guide/ext4.rst +++ linux-5.8.0/Documentation/admin-guide/ext4.rst @@ -482,6 +482,9 @@ multiple of this tuning parameter if the stripe size is not set in the ext4 superblock + mb_max_inode_prealloc + The maximum length of per-inode ext4_prealloc_space list. + mb_max_to_scan The maximum number of extents the multiblock allocator will search to find the best extent. --- linux-5.8.0.orig/Documentation/admin-guide/hw-vuln/multihit.rst +++ linux-5.8.0/Documentation/admin-guide/hw-vuln/multihit.rst @@ -80,6 +80,10 @@ - The processor is not vulnerable. * - KVM: Mitigation: Split huge pages - Software changes mitigate this issue. + * - KVM: Mitigation: VMX unsupported + - KVM is not vulnerable because Virtual Machine Extensions (VMX) is not supported. + * - KVM: Mitigation: VMX disabled + - KVM is not vulnerable because Virtual Machine Extensions (VMX) is disabled. * - KVM: Vulnerable - The processor is vulnerable, but no mitigation enabled --- linux-5.8.0.orig/Documentation/admin-guide/kdump/vmcoreinfo.rst +++ linux-5.8.0/Documentation/admin-guide/kdump/vmcoreinfo.rst @@ -399,6 +399,17 @@ The mask to extract the Pointer Authentication Code from a kernel virtual address. +TCR_EL1.T1SZ +------------ + +Indicates the size offset of the memory region addressed by TTBR1_EL1. +The region size is 2^(64-T1SZ) bytes. + +TTBR1_EL1 is the table base address register specified by ARMv8-A +architecture which is used to lookup the page-tables for the Virtual +addresses in the higher VA range (refer to ARMv8 ARM document for +more details). + arm === --- linux-5.8.0.orig/Documentation/admin-guide/kernel-parameters.txt +++ linux-5.8.0/Documentation/admin-guide/kernel-parameters.txt @@ -577,7 +577,7 @@ loops can be debugged more effectively on production systems. - clearcpuid=BITNUM [X86] + clearcpuid=BITNUM[,BITNUM...] [X86] Disable CPUID feature X for the kernel. See arch/x86/include/asm/cpufeatures.h for the valid bit numbers. Note the Linux specific bits are not necessarily @@ -694,6 +694,10 @@ 0: default value, disable debugging 1: enable debugging at boot time + cpufreq_driver= [X86] Allow only the named cpu frequency scaling driver + to register. Example: cpufreq_driver=powernow-k8 + Format: { none | STRING } + cpuidle.off=1 [CPU_IDLE] disable the cpuidle sub-system @@ -2810,6 +2814,8 @@ mds=off [X86] tsx_async_abort=off [X86] kvm.nx_huge_pages=off [X86] + no_entry_flush [PPC] + no_uaccess_flush [PPC] Exceptions: This does not have any effect on @@ -3132,6 +3138,8 @@ noefi Disable EFI runtime services support. + no_entry_flush [PPC] Don't flush the L1-D cache when entering the kernel. + noexec [IA-64] noexec [X86] @@ -3181,6 +3189,9 @@ nospec_store_bypass_disable [HW] Disable all mitigations for the Speculative Store Bypass vulnerability + no_uaccess_flush + [PPC] Don't flush the L1-D cache after accessing user data. + noxsave [BUGS=X86] Disables x86 extended register state save and restore using xsave. The kernel will fallback to enabling legacy floating-point and sse state. @@ -3568,6 +3579,12 @@ nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide. + clearmsi [X86] Clears MSI/MSI-X enable bits early in boot + time in order to avoid issues like adapters + screaming irqs and preventing boot progress. + Also, it enforces the PCI Local Bus spec + rule that those bits should be 0 in system reset + events (useful for kexec/kdump cases). noioapicquirk [APIC] Disable all boot interrupt quirks. Safety option to keep boot IRQs enabled. This should never be necessary. @@ -5421,6 +5438,7 @@ device); j = NO_REPORT_LUNS (don't use report luns command, uas only); + k = NO_SAME (do not use WRITE_SAME, uas only) l = NOT_LOCKABLE (don't try to lock and unlock ejectable media, not on uas); m = MAX_SECTORS_64 (don't transfer more @@ -5721,6 +5739,10 @@ This option is obsoleted by the "nopv" option, which has equivalent effect for XEN platform. + xen_no_vector_callback + [KNL,X86,XEN] Disable the vector callback for Xen + event channel interrupts. + xen_scrub_pages= [XEN] Boolean option to control scrubbing pages before giving them back to Xen, for use by other domains. Can be also changed at runtime @@ -5734,6 +5756,14 @@ improve timer resolution at the expense of processing more timer interrupts. + xen.event_eoi_delay= [XEN] + How long to delay EOI handling in case of event + storms (jiffies). Default is 10. + + xen.event_loop_timeout= [XEN] + After which time (jiffies) the event handling loop + should start to delay EOI handling. Default is 2. + nopv= [X86,XEN,KVM,HYPER_V,VMWARE] Disables the PV optimizations forcing the guest to run as generic guest with no PV drivers. Currently support --- linux-5.8.0.orig/Documentation/admin-guide/mm/memory-hotplug.rst +++ linux-5.8.0/Documentation/admin-guide/mm/memory-hotplug.rst @@ -160,8 +160,8 @@ "online_movable", "online", "offline" command which will be performed on all sections in the block. -``phys_device`` read-only: designed to show the name of physical memory - device. This is not well implemented now. +``phys_device`` read-only: legacy interface only ever used on s390x to + expose the covered storage increment. ``removable`` read-only: contains an integer value indicating whether the memory block is removable or not removable. A value of 1 indicates that the memory --- linux-5.8.0.orig/Documentation/admin-guide/sysctl/vm.rst +++ linux-5.8.0/Documentation/admin-guide/sysctl/vm.rst @@ -961,11 +961,11 @@ left disabled as the caching effect is likely to be more important than data locality. -zone_reclaim may be enabled if it's known that the workload is partitioned -such that each partition fits within a NUMA node and that accessing remote -memory would cause a measurable performance reduction. The page allocator -will then reclaim easily reusable pages (those page cache pages that are -currently not used) before allocating off node pages. +Consider enabling one or more zone_reclaim mode bits if it's known that the +workload is partitioned such that each partition fits within a NUMA node +and that accessing remote memory would cause a measurable performance +reduction. The page allocator will take additional actions before +allocating off node pages. Allowing zone reclaim to write out pages stops processes that are writing large amounts of data from dirtying pages on other nodes. Zone --- linux-5.8.0.orig/Documentation/asm-annotations.rst +++ linux-5.8.0/Documentation/asm-annotations.rst @@ -100,6 +100,11 @@ ~~~~~~~~~~~~~~~~~~ This section covers ``SYM_FUNC_*`` and ``SYM_CODE_*`` enumerated above. +``objtool`` requires that all code must be contained in an ELF symbol. Symbol +names that have a ``.L`` prefix do not emit symbol table entries. ``.L`` +prefixed symbols can be used within a code region, but should be avoided for +denoting a range of code via ``SYM_*_START/END`` annotations. + * ``SYM_FUNC_START`` and ``SYM_FUNC_START_LOCAL`` are supposed to be **the most frequent markings**. They are used for functions with standard calling conventions -- global and local. Like in C, they both align the functions to --- linux-5.8.0.orig/Documentation/cgroups/namespace.txt +++ linux-5.8.0/Documentation/cgroups/namespace.txt @@ -0,0 +1,142 @@ + CGroup Namespaces + +CGroup Namespace provides a mechanism to virtualize the view of the +/proc//cgroup file. The CLONE_NEWCGROUP clone-flag can be used with +clone() and unshare() syscalls to create a new cgroup namespace. +The process running inside the cgroup namespace will have its /proc//cgroup +output restricted to cgroupns-root. cgroupns-root is the cgroup of the process +at the time of creation of the cgroup namespace. + +Prior to CGroup Namespace, the /proc//cgroup file used to show complete +path of the cgroup of a process. In a container setup (where a set of cgroups +and namespaces are intended to isolate processes), the /proc//cgroup file +may leak potential system level information to the isolated processes. + +For Example: + $ cat /proc/self/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/batchjobs/container_id1 + +The path '/batchjobs/container_id1' can generally be considered as system-data +and its desirable to not expose it to the isolated process. + +CGroup Namespaces can be used to restrict visibility of this path. +For Example: + # Before creating cgroup namespace + $ ls -l /proc/self/ns/cgroup + lrwxrwxrwx 1 root root 0 2014-07-15 10:37 /proc/self/ns/cgroup -> cgroup:[4026531835] + $ cat /proc/self/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/batchjobs/container_id1 + + # unshare(CLONE_NEWCGROUP) and exec /bin/bash + $ ~/unshare -c + [ns]$ ls -l /proc/self/ns/cgroup + lrwxrwxrwx 1 root root 0 2014-07-15 10:35 /proc/self/ns/cgroup -> cgroup:[4026532183] + # From within new cgroupns, process sees that its in the root cgroup + [ns]$ cat /proc/self/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/ + + # From global cgroupns: + $ cat /proc//cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/batchjobs/container_id1 + + # Unshare cgroupns along with userns and mountns + # Following calls unshare(CLONE_NEWCGROUP|CLONE_NEWUSER|CLONE_NEWNS), then + # sets up uid/gid map and execs /bin/bash + $ ~/unshare -c -u -m + # Originally, we were in /batchjobs/container_id1 cgroup. Mount our own cgroup + # hierarchy. + [ns]$ mount -t cgroup cgroup /tmp/cgroup + [ns]$ ls -l /tmp/cgroup + total 0 + -r--r--r-- 1 root root 0 2014-10-13 09:32 cgroup.controllers + -r--r--r-- 1 root root 0 2014-10-13 09:32 cgroup.populated + -rw-r--r-- 1 root root 0 2014-10-13 09:25 cgroup.procs + -rw-r--r-- 1 root root 0 2014-10-13 09:32 cgroup.subtree_control + +The cgroupns-root (/batchjobs/container_id1 in above example) becomes the +filesystem root for the namespace specific cgroupfs mount. + +The virtualization of /proc/self/cgroup file combined with restricting +the view of cgroup hierarchy by namespace-private cgroupfs mount +should provide a completely isolated cgroup view inside the container. + +In its current form, the cgroup namespaces patcheset provides following +behavior: + +(1) The 'cgroupns-root' for a cgroup namespace is the cgroup in which + the process calling unshare is running. + For ex. if a process in /batchjobs/container_id1 cgroup calls unshare, + cgroup /batchjobs/container_id1 becomes the cgroupns-root. + For the init_cgroup_ns, this is the real root ('/') cgroup + (identified in code as cgrp_dfl_root.cgrp). + +(2) The cgroupns-root cgroup does not change even if the namespace + creator process later moves to a different cgroup. + $ ~/unshare -c # unshare cgroupns in some cgroup + [ns]$ cat /proc/self/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/ + [ns]$ mkdir sub_cgrp_1 + [ns]$ echo 0 > sub_cgrp_1/cgroup.procs + [ns]$ cat /proc/self/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/sub_cgrp_1 + +(3) Each process gets its CGROUPNS specific view of /proc//cgroup +(a) Processes running inside the cgroup namespace will be able to see + cgroup paths (in /proc/self/cgroup) only inside their root cgroup + [ns]$ sleep 100000 & # From within unshared cgroupns + [1] 7353 + [ns]$ echo 7353 > sub_cgrp_1/cgroup.procs + [ns]$ cat /proc/7353/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/sub_cgrp_1 + +(b) From global cgroupns, the real cgroup path will be visible: + $ cat /proc/7353/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/batchjobs/container_id1/sub_cgrp_1 + +(c) From a sibling cgroupns (cgroupns root-ed at a different cgroup), cgroup + path relative to its own cgroupns-root will be shown: + # ns2's cgroupns-root is at '/batchjobs/container_id2' + [ns2]$ cat /proc/7353/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/../container_id2/sub_cgrp_1 + + Note that the relative path always starts with '/' to indicate that its + relative to the cgroupns-root of the caller. + +(4) Processes inside a cgroupns can move in-and-out of the cgroupns-root + (if they have proper access to external cgroups). + # From inside cgroupns (with cgroupns-root at /batchjobs/container_id1), and + # assuming that the global hierarchy is still accessible inside cgroupns: + $ cat /proc/7353/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/sub_cgrp_1 + $ echo 7353 > batchjobs/container_id2/cgroup.procs + $ cat /proc/7353/cgroup + 0:cpuset,cpu,cpuacct,memory,devices,freezer,hugetlb:/../container_id2 + + Note that this kind of setup is not encouraged. A task inside cgroupns + should only be exposed to its own cgroupns hierarchy. Otherwise it makes + the virtualization of /proc//cgroup less useful. + +(5) Setns to another cgroup namespace is allowed when: + (a) the process has CAP_SYS_ADMIN in its current userns + (b) the process has CAP_SYS_ADMIN in the target cgroupns' userns + No implicit cgroup changes happen with attaching to another cgroupns. It + is expected that the somone moves the attaching process under the target + cgroupns-root. + +(6) When some thread from a multi-threaded process unshares its + cgroup-namespace, the new cgroupns gets applied to the entire process (all + the threads). For the unified-hierarchy this is expected as it only allows + process-level containerization. For the legacy hierarchies this may be + unexpected. So all the threads in the process will have the same cgroup. + +(7) The cgroup namespace is alive as long as there is atleast 1 + process inside it. When the last process exits, the cgroup + namespace is destroyed. The cgroupns-root and the actual cgroups + remain though. + +(8) Namespace specific cgroup hierarchy can be mounted by a process running + inside cgroupns: + $ mount -t cgroup -o __DEVEL__sane_behavior cgroup $MOUNT_POINT + + This will mount the unified cgroup hierarchy with cgroupns-root as the + filesystem root. The process needs CAP_SYS_ADMIN in its userns and mntns. --- linux-5.8.0.orig/Documentation/conf.py +++ linux-5.8.0/Documentation/conf.py @@ -36,7 +36,7 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include', 'cdomain', +extensions = ['kerneldoc', 'rstFlatTable', 'kernel_include', #y'cdomain', 'kfigure', 'sphinx.ext.ifconfig', 'automarkup', 'maintainers_include', 'sphinx.ext.autosectionlabel' ] --- linux-5.8.0.orig/Documentation/core-api/cpu_hotplug.rst +++ linux-5.8.0/Documentation/core-api/cpu_hotplug.rst @@ -50,13 +50,6 @@ This option is limited to the X86 and S390 architecture. -``cede_offline={"off","on"}`` - Use this option to disable/enable putting offlined processors to an extended - ``H_CEDE`` state on supported pseries platforms. If nothing is specified, - ``cede_offline`` is set to "on". - - This option is limited to the PowerPC architecture. - ``cpu0_hotplug`` Allow to shutdown CPU0. --- linux-5.8.0.orig/Documentation/core-api/printk-formats.rst +++ linux-5.8.0/Documentation/core-api/printk-formats.rst @@ -566,6 +566,12 @@ Thanks ====== +Kernel messages: + + %pj 123456 + + For generating the jhash of a string truncated to six digits + If you add other %p extensions, please extend with one or more test cases, if at all feasible. --- linux-5.8.0.orig/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml +++ linux-5.8.0/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml @@ -23,8 +23,7 @@ - items: - const: allwinner,sun7i-a20-crypto - const: allwinner,sun4i-a10-crypto - - items: - - const: allwinner,sun8i-a33-crypto + - const: allwinner,sun8i-a33-crypto reg: maxItems: 1 @@ -59,7 +58,9 @@ properties: compatible: contains: - const: allwinner,sun6i-a31-crypto + enum: + - allwinner,sun6i-a31-crypto + - allwinner,sun8i-a33-crypto then: required: --- linux-5.8.0.orig/Documentation/devicetree/bindings/display/bridge/sii902x.txt +++ linux-5.8.0/Documentation/devicetree/bindings/display/bridge/sii902x.txt @@ -8,6 +8,8 @@ - interrupts: describe the interrupt line used to inform the host about hotplug events. - reset-gpios: OF device-tree gpio specification for RST_N pin. + - iovcc-supply: I/O Supply Voltage (1.8V or 3.3V) + - cvcc12-supply: Digital Core Supply Voltage (1.2V) HDMI audio properties: - #sound-dai-cells: <0> or <1>. <0> if only i2s or spdif pin @@ -54,6 +56,8 @@ compatible = "sil,sii9022"; reg = <0x39>; reset-gpios = <&pioA 1 0>; + iovcc-supply = <&v3v3_hdmi>; + cvcc12-supply = <&v1v2_hdmi>; #sound-dai-cells = <0>; sil,i2s-data-lanes = < 0 1 2 >; --- linux-5.8.0.orig/Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt +++ linux-5.8.0/Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt @@ -20,8 +20,9 @@ - gpio-controller : Marks the device node as a GPIO controller - interrupts : Interrupt specifier, see interrupt-controller/interrupts.txt - interrupt-controller : Mark the GPIO controller as an interrupt-controller -- ngpios : number of GPIO lines, see gpio.txt - (should be multiple of 8, up to 80 pins) +- ngpios : number of *hardware* GPIO lines, see gpio.txt. This will expose + 2 software GPIOs per hardware GPIO: one for hardware input, one for hardware + output. Up to 80 pins, must be a multiple of 8. - clocks : A phandle to the APB clock for SGPM clock division - bus-frequency : SGPM CLK frequency --- linux-5.8.0.orig/Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt +++ linux-5.8.0/Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.txt @@ -21,7 +21,7 @@ Example: mux: mux-controller { - compatible = "mux-gpio"; + compatible = "gpio-mux"; #mux-control-cells = <0>; mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>, --- linux-5.8.0.orig/Documentation/devicetree/bindings/mmc/mtk-sd.txt +++ linux-5.8.0/Documentation/devicetree/bindings/mmc/mtk-sd.txt @@ -49,6 +49,8 @@ error caused by stop clock(fifo full) Valid range = [0:0x7]. if not present, default value is 0. applied to compatible "mediatek,mt2701-mmc". +- resets: Phandle and reset specifier pair to softreset line of MSDC IP. +- reset-names: Should be "hrst". Examples: mmc0: mmc@11230000 { --- linux-5.8.0.orig/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt +++ linux-5.8.0/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt @@ -15,8 +15,15 @@ - "nvidia,tegra210-sdhci": for Tegra210 - "nvidia,tegra186-sdhci": for Tegra186 - "nvidia,tegra194-sdhci": for Tegra194 -- clocks : Must contain one entry, for the module clock. - See ../clocks/clock-bindings.txt for details. +- clocks: For Tegra210, Tegra186 and Tegra194 must contain two entries. + One for the module clock and one for the timeout clock. + For all other Tegra devices, must contain a single entry for + the module clock. See ../clocks/clock-bindings.txt for details. +- clock-names: For Tegra210, Tegra186 and Tegra194 must contain the + strings 'sdhci' and 'tmclk' to represent the module and + the timeout clocks, respectively. + For all other Tegra devices must contain the string 'sdhci' + to represent the module clock. - resets : Must contain an entry for each entry in reset-names. See ../reset/reset.txt for details. - reset-names : Must include the following entries: @@ -99,7 +106,7 @@ Example: sdhci@700b0000 { - compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci"; + compatible = "nvidia,tegra124-sdhci"; reg = <0x0 0x700b0000 0x0 0x200>; interrupts = ; clocks = <&tegra_car TEGRA210_CLK_SDMMC1>; @@ -107,6 +114,25 @@ resets = <&tegra_car 14>; reset-names = "sdhci"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; + pinctrl-0 = <&sdmmc1_3v3>; + pinctrl-1 = <&sdmmc1_1v8>; + nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>; + nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>; + nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>; + nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>; + status = "disabled"; +}; + +sdhci@700b0000 { + compatible = "nvidia,tegra210-sdhci"; + reg = <0x0 0x700b0000 0x0 0x200>; + interrupts = ; + clocks = <&tegra_car TEGRA210_CLK_SDMMC1>, + <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; + clock-names = "sdhci", "tmclk"; + resets = <&tegra_car 14>; + reset-names = "sdhci"; + pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; pinctrl-0 = <&sdmmc1_3v3>; pinctrl-1 = <&sdmmc1_1v8>; nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>; --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/btusb.txt +++ linux-5.8.0/Documentation/devicetree/bindings/net/btusb.txt @@ -38,7 +38,7 @@ compatible = "usb1286,204e"; reg = <1>; interrupt-parent = <&gpio0>; - interrupt-name = "wakeup"; + interrupt-names = "wakeup"; interrupts = <3 IRQ_TYPE_LEVEL_LOW>; }; }; --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/can/tcan4x5x.txt +++ linux-5.8.0/Documentation/devicetree/bindings/net/can/tcan4x5x.txt @@ -33,7 +33,7 @@ spi-max-frequency = <10000000>; bosch,mram-cfg = <0x0 0 0 32 0 0 1 1>; interrupt-parent = <&gpio1>; - interrupts = <14 GPIO_ACTIVE_LOW>; + interrupts = <14 IRQ_TYPE_LEVEL_LOW>; device-state-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; device-wake-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>; --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/ethernet-controller.yaml +++ linux-5.8.0/Documentation/devicetree/bindings/net/ethernet-controller.yaml @@ -191,6 +191,11 @@ Indicates that full-duplex is used. When absent, half duplex is assumed. + pause: + $ref: /schemas/types.yaml#definitions/flag + description: + Indicates that pause should be enabled. + asym-pause: $ref: /schemas/types.yaml#definitions/flag description: --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/nfc/nxp-nci.txt +++ linux-5.8.0/Documentation/devicetree/bindings/net/nfc/nxp-nci.txt @@ -25,7 +25,7 @@ clock-frequency = <100000>; interrupt-parent = <&gpio1>; - interrupts = <29 GPIO_ACTIVE_HIGH>; + interrupts = <29 IRQ_TYPE_LEVEL_HIGH>; enable-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>; firmware-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/nfc/pn544.txt +++ linux-5.8.0/Documentation/devicetree/bindings/net/nfc/pn544.txt @@ -25,7 +25,7 @@ clock-frequency = <400000>; interrupt-parent = <&gpio1>; - interrupts = <17 GPIO_ACTIVE_HIGH>; + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; enable-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; firmware-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; --- linux-5.8.0.orig/Documentation/devicetree/bindings/net/socionext-netsec.txt +++ linux-5.8.0/Documentation/devicetree/bindings/net/socionext-netsec.txt @@ -30,7 +30,9 @@ - max-frame-size: See ethernet.txt in the same directory. The MAC address will be determined using the optional properties -defined in ethernet.txt. +defined in ethernet.txt. The 'phy-mode' property is required, but may +be set to the empty string if the PHY configuration is programmed by +the firmware or set by hardware straps, and needs to be preserved. Example: eth0: ethernet@522d0000 { --- linux-5.8.0.orig/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml +++ linux-5.8.0/Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml @@ -9,6 +9,14 @@ maintainers: - Dilip Kota +select: + properties: + compatible: + contains: + const: intel,lgm-pcie + required: + - compatible + properties: compatible: items: --- linux-5.8.0.orig/Documentation/devicetree/bindings/phy/socionext,uniphier-usb3hs-phy.yaml +++ linux-5.8.0/Documentation/devicetree/bindings/phy/socionext,uniphier-usb3hs-phy.yaml @@ -31,12 +31,16 @@ clocks: minItems: 1 - maxItems: 2 + maxItems: 3 clock-names: oneOf: - const: link # for PXs2 - - items: # for PXs3 + - items: # for PXs3 with phy-ext + - const: link + - const: phy + - const: phy-ext + - items: # for others - const: link - const: phy --- linux-5.8.0.orig/Documentation/devicetree/bindings/rtc/rtc.yaml +++ linux-5.8.0/Documentation/devicetree/bindings/rtc/rtc.yaml @@ -47,4 +47,9 @@ description: Enables wake up of host system on alarm. + reset-source: + $ref: /schemas/types.yaml#/definitions/flag + description: + The RTC is able to reset the machine. + ... --- linux-5.8.0.orig/Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.txt +++ linux-5.8.0/Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.txt @@ -23,8 +23,8 @@ - compatible: Must be one of : - "brcm,spi-bcm-qspi", "brcm,spi-brcmstb-qspi" : MSPI+BSPI on BRCMSTB SoCs - "brcm,spi-bcm-qspi", "brcm,spi-brcmstb-mspi" : Second Instance of MSPI + "brcm,spi-brcmstb-qspi", "brcm,spi-bcm-qspi" : MSPI+BSPI on BRCMSTB SoCs + "brcm,spi-brcmstb-mspi", "brcm,spi-bcm-qspi" : Second Instance of MSPI BRCMSTB SoCs "brcm,spi-bcm7425-qspi", "brcm,spi-bcm-qspi", "brcm,spi-brcmstb-mspi" : Second Instance of MSPI BRCMSTB SoCs @@ -36,8 +36,8 @@ BRCMSTB SoCs "brcm,spi-bcm7278-qspi", "brcm,spi-bcm-qspi", "brcm,spi-brcmstb-mspi" : Second Instance of MSPI BRCMSTB SoCs - "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi" : MSPI+BSPI on Cygnus, NSP - "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi" : NS2 SoCs + "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi" : MSPI+BSPI on Cygnus, NSP + "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi" : NS2 SoCs - reg: Define the bases and ranges of the associated I/O address spaces. @@ -86,7 +86,7 @@ spi@f03e3400 { #address-cells = <0x1>; #size-cells = <0x0>; - compatible = "brcm,spi-brcmstb-qspi", "brcm,spi-brcmstb-qspi"; + compatible = "brcm,spi-brcmstb-qspi", "brcm,spi-bcm-qspi"; reg = <0xf03e0920 0x4 0xf03e3400 0x188 0xf03e3200 0x50>; reg-names = "cs_reg", "mspi", "bspi"; interrupts = <0x6 0x5 0x4 0x3 0x2 0x1 0x0>; @@ -149,7 +149,7 @@ #address-cells = <1>; #size-cells = <0>; clocks = <&upg_fixed>; - compatible = "brcm,spi-brcmstb-qspi", "brcm,spi-brcmstb-mspi"; + compatible = "brcm,spi-brcmstb-mspi", "brcm,spi-bcm-qspi"; reg = <0xf0416000 0x180>; reg-names = "mspi"; interrupts = <0x14>; @@ -160,7 +160,7 @@ iProc SoC Example: qspi: spi@18027200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; + compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; reg = <0x18027200 0x184>, <0x18027000 0x124>, <0x1811c408 0x004>, @@ -191,7 +191,7 @@ NS2 SoC Example: qspi: spi@66470200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi"; + compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi"; reg = <0x66470200 0x184>, <0x66470000 0x124>, <0x67017408 0x004>, --- linux-5.8.0.orig/Documentation/filesystems/affs.rst +++ linux-5.8.0/Documentation/filesystems/affs.rst @@ -110,13 +110,15 @@ - R maps to r for user, group and others. On directories, R implies x. - - If both W and D are allowed, w will be set. + - W maps to w. - E maps to x. - - H and P are always retained and ignored under Linux. + - D is ignored. - - A is always reset when a file is written to. + - H, S and P are always retained and ignored under Linux. + + - A is cleared when a file is written to. User id and group id will be used unless set[gu]id are given as mount options. Since most of the Amiga file systems are single user systems @@ -128,11 +130,13 @@ The Linux rwxrwxrwx file mode is handled as follows: - - r permission will set R for user, group and others. + - r permission will allow R for user, group and others. + + - w permission will allow W for user, group and others. - - w permission will set W and D for user, group and others. + - x permission of the user will allow E for plain files. - - x permission of the user will set E for plain files. + - D will be allowed for user, group and others. - All other flags (suid, sgid, ...) are ignored and will not be retained. --- linux-5.8.0.orig/Documentation/filesystems/aufs/README +++ linux-5.8.0/Documentation/filesystems/aufs/README @@ -0,0 +1,401 @@ + +Aufs5 -- advanced multi layered unification filesystem version 5.x +http://aufs.sf.net +Junjiro R. Okajima + + +0. Introduction +---------------------------------------- +In the early days, aufs was entirely re-designed and re-implemented +Unionfs Version 1.x series. Adding many original ideas, approaches, +improvements and implementations, it became totally different from +Unionfs while keeping the basic features. +Later, Unionfs Version 2.x series began taking some of the same +approaches to aufs1's. +Unionfs was being developed by Professor Erez Zadok at Stony Brook +University and his team. + +Aufs5 supports linux-v5.0 and later, If you want older kernel version +support, +- for linux-v4.x series, try aufs4-linux.git or aufs4-standalone.git +- for linux-v3.x series, try aufs3-linux.git or aufs3-standalone.git +- for linux-v2.6.16 and later, try aufs2-2.6.git, aufs2-standalone.git + or aufs1 from CVS on SourceForge. + +Note: it becomes clear that "Aufs was rejected. Let's give it up." + According to Christoph Hellwig, linux rejects all union-type + filesystems but UnionMount. + + +PS. Al Viro seems have a plan to merge aufs as well as overlayfs and + UnionMount, and he pointed out an issue around a directory mutex + lock and aufs addressed it. But it is still unsure whether aufs will + be merged (or any other union solution). + + + +1. Features +---------------------------------------- +- unite several directories into a single virtual filesystem. The member + directory is called as a branch. +- you can specify the permission flags to the branch, which are 'readonly', + 'readwrite' and 'whiteout-able.' +- by upper writable branch, internal copyup and whiteout, files/dirs on + readonly branch are modifiable logically. +- dynamic branch manipulation, add, del. +- etc... + +Also there are many enhancements in aufs, such as: +- test only the highest one for the directory permission (dirperm1) +- copyup on open (coo=) +- 'move' policy for copy-up between two writable branches, after + checking free space. +- xattr, acl +- readdir(3) in userspace. +- keep inode number by external inode number table +- keep the timestamps of file/dir in internal copyup operation +- seekable directory, supporting NFS readdir. +- whiteout is hardlinked in order to reduce the consumption of inodes + on branch +- do not copyup, nor create a whiteout when it is unnecessary +- revert a single systemcall when an error occurs in aufs +- remount interface instead of ioctl +- maintain /etc/mtab by an external command, /sbin/mount.aufs. +- loopback mounted filesystem as a branch +- kernel thread for removing the dir who has a plenty of whiteouts +- support copyup sparse file (a file which has a 'hole' in it) +- default permission flags for branches +- selectable permission flags for ro branch, whether whiteout can + exist or not +- export via NFS. +- support /fs/aufs and /aufs. +- support multiple writable branches, some policies to select one + among multiple writable branches. +- a new semantics for link(2) and rename(2) to support multiple + writable branches. +- no glibc changes are required. +- pseudo hardlink (hardlink over branches) +- allow a direct access manually to a file on branch, e.g. bypassing aufs. + including NFS or remote filesystem branch. +- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. +- and more... + +Currently these features are dropped temporary from aufs5. +See design/08plan.txt in detail. +- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs + (robr) +- statistics of aufs thread (/sys/fs/aufs/stat) + +Features or just an idea in the future (see also design/*.txt), +- reorder the branch index without del/re-add. +- permanent xino files for NFSD +- an option for refreshing the opened files after add/del branches +- light version, without branch manipulation. (unnecessary?) +- copyup in userspace +- inotify in userspace +- readv/writev + + +2. Download +---------------------------------------- +There are three GIT trees for aufs5, aufs5-linux.git, +aufs5-standalone.git, and aufs-util.git. Note that there is no "5" in +"aufs-util.git." +While the aufs-util is always necessary, you need either of aufs5-linux +or aufs5-standalone. + +The aufs5-linux tree includes the whole linux mainline GIT tree, +git://git.kernel.org/.../torvalds/linux.git. +And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot +build aufs5 as an external kernel module. +Several extra patches are not included in this tree. Only +aufs5-standalone tree contains them. They are described in the later +section "Configuration and Compilation." + +On the other hand, the aufs5-standalone tree has only aufs source files +and necessary patches, and you can select CONFIG_AUFS_FS=m. +But you need to apply all aufs patches manually. + +You will find GIT branches whose name is in form of "aufs5.x" where "x" +represents the linux kernel version, "linux-5.x". For instance, +"aufs5.0" is for linux-5.0. For latest "linux-5.x-rcN", use +"aufs5.x-rcN" branch. + +o aufs5-linux tree +$ git clone --reference /your/linux/git/tree \ + git://github.com/sfjro/aufs5-linux.git aufs5-linux.git +- if you don't have linux GIT tree, then remove "--reference ..." +$ cd aufs5-linux.git +$ git checkout origin/aufs5.0 + +Or You may want to directly git-pull aufs into your linux GIT tree, and +leave the patch-work to GIT. +$ cd /your/linux/git/tree +$ git remote add aufs5 git://github.com/sfjro/aufs5-linux.git +$ git fetch aufs5 +$ git checkout -b my5.0 v5.0 +$ (add your local change...) +$ git pull aufs5 aufs5.0 +- now you have v5.0 + your_changes + aufs5.0 in you my5.0 branch. +- you may need to solve some conflicts between your_changes and + aufs5.0. in this case, git-rerere is recommended so that you can + solve the similar conflicts automatically when you upgrade to 5.1 or + later in the future. + +o aufs5-standalone tree +$ git clone git://github.com/sfjro/aufs5-standalone.git aufs5-standalone.git +$ cd aufs5-standalone.git +$ git checkout origin/aufs5.0 + +o aufs-util tree +$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git +- note that the public aufs-util.git is on SourceForge instead of + GitHUB. +$ cd aufs-util.git +$ git checkout origin/aufs5.0 + +Note: The 5.x-rcN branch is to be used with `rc' kernel versions ONLY. +The minor version number, 'x' in '5.x', of aufs may not always +follow the minor version number of the kernel. +Because changes in the kernel that cause the use of a new +minor version number do not always require changes to aufs-util. + +Since aufs-util has its own minor version number, you may not be +able to find a GIT branch in aufs-util for your kernel's +exact minor version number. +In this case, you should git-checkout the branch for the +nearest lower number. + +For (an unreleased) example: +If you are using "linux-5.10" and the "aufs5.10" branch +does not exist in aufs-util repository, then "aufs5.9", "aufs5.8" +or something numerically smaller is the branch for your kernel. + +Also you can view all branches by + $ git branch -a + + +3. Configuration and Compilation +---------------------------------------- +Make sure you have git-checkout'ed the correct branch. + +For aufs5-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. + +For aufs5-standalone tree, +There are several ways to build. + +1. +- apply ./aufs5-kbuild.patch to your kernel source files. +- apply ./aufs5-base.patch too. +- apply ./aufs5-mmap.patch too. +- apply ./aufs5-standalone.patch too, if you have a plan to set + CONFIG_AUFS_FS=m. otherwise you don't need ./aufs5-standalone.patch. +- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your + kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. +- enable CONFIG_AUFS_FS, you can select either + =m or =y. +- and build your kernel as usual. +- install the built kernel. +- install the header files too by "make headers_install" to the + directory where you specify. By default, it is $PWD/usr. + "make help" shows a brief note for headers_install. +- and reboot your system. + +2. +- module only (CONFIG_AUFS_FS=m). +- apply ./aufs5-base.patch to your kernel source files. +- apply ./aufs5-mmap.patch too. +- apply ./aufs5-standalone.patch too. +- build your kernel, don't forget "make headers_install", and reboot. +- edit ./config.mk and set other aufs configurations if necessary. + Note: You should read $PWD/fs/aufs/Kconfig carefully which describes + every aufs configurations. +- build the module by simple "make". +- you can specify ${KDIR} make variable which points to your kernel + source tree. +- install the files + + run "make install" to install the aufs module, or copy the built + $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). + + run "make install_headers" (instead of headers_install) to install + the modified aufs header file (you can specify DESTDIR which is + available in aufs standalone version's Makefile only), or copy + $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever + you like manually. By default, the target directory is $PWD/usr. +- no need to apply aufs5-kbuild.patch, nor copying source files to your + kernel source tree. + +Note: The header file aufs_type.h is necessary to build aufs-util + as well as "make headers_install" in the kernel source tree. + headers_install is subject to be forgotten, but it is essentially + necessary, not only for building aufs-util. + You may not meet problems without headers_install in some older + version though. + +And then, +- read README in aufs-util, build and install it +- note that your distribution may contain an obsoleted version of + aufs_type.h in /usr/include/linux or something. When you build aufs + utilities, make sure that your compiler refers the correct aufs header + file which is built by "make headers_install." +- if you want to use readdir(3) in userspace or pathconf(3) wrapper, + then run "make install_ulib" too. And refer to the aufs manual in + detail. + +There several other patches in aufs5-standalone.git. They are all +optional. When you meet some problems, they will help you. +- aufs5-loopback.patch + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message like "you may want to try + another patch for loopback file". +- proc_mounts.patch + When there are many mountpoints and many mount(2)/umount(2) are + running, then /proc/mounts may not show the all mountpoints. This + patch makes /proc/mounts always show the full mountpoints list. + If you don't want to apply this patch and meet such problem, then you + need to increase the value of 'ProcMounts_Times' make-variable in + aufs-util.git as a second best solution. +- vfs-ino.patch + Modifies a system global kernel internal function get_next_ino() in + order to stop assigning 0 for an inode-number. Not directly related to + aufs, but recommended generally. +- tmpfs-idr.patch + Keeps the tmpfs inode number as the lowest value. Effective to reduce + the size of aufs XINO files for tmpfs branch. Also it prevents the + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. +- lockdep-debug.patch + Because aufs is not only an ordinary filesystem (callee of VFS), but + also a caller of VFS functions for branch filesystems, subclassing of + the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging + feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will + need to apply this debug patch to expand several constant values. + If you don't know what LOCKDEP is, then you don't have apply this + patch. + + +4. Usage +---------------------------------------- +At first, make sure aufs-util are installed, and please read the aufs +manual, aufs.5 in aufs-util.git tree. +$ man -l aufs.5 + +And then, +$ mkdir /tmp/rw /tmp/aufs +# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs + +Here is another example. The result is equivalent. +# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs + Or +# mount -t aufs -o br:/tmp/rw none /tmp/aufs +# mount -o remount,append:${HOME} /tmp/aufs + +Then, you can see whole tree of your home dir through /tmp/aufs. If +you modify a file under /tmp/aufs, the one on your home directory is +not affected, instead the same named file will be newly created under +/tmp/rw. And all of your modification to a file will be applied to +the one under /tmp/rw. This is called the file based Copy on Write +(COW) method. +Aufs mount options are described in aufs.5. +If you run chroot or something and make your aufs as a root directory, +then you need to customize the shutdown script. See the aufs manual in +detail. + +Additionally, there are some sample usages of aufs which are a +diskless system with network booting, and LiveCD over NFS. +See sample dir in CVS tree on SourceForge. + + +5. Contact +---------------------------------------- +When you have any problems or strange behaviour in aufs, please let me +know with: +- /proc/mounts (instead of the output of mount(8)) +- /sys/module/aufs/* +- /sys/fs/aufs/* (if you have them) +- /debug/aufs/* (if you have them) +- linux kernel version + if your kernel is not plain, for example modified by distributor, + the url where i can download its source is necessary too. +- aufs version which was printed at loading the module or booting the + system, instead of the date you downloaded. +- configuration (define/undefine CONFIG_AUFS_xxx) +- kernel configuration or /proc/config.gz (if you have it) +- LSM (linux security module, if you are using) +- behaviour which you think to be incorrect +- actual operation, reproducible one is better +- mailto: aufs-users at lists.sourceforge.net + +Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, +and Feature Requests) on SourceForge. Please join and write to +aufs-users ML. + + +6. Acknowledgements +---------------------------------------- +Thanks to everyone who have tried and are using aufs, whoever +have reported a bug or any feedback. + +Especially donators: +Tomas Matejicek(slax.org) made a donation (much more than once). + Since Apr 2010, Tomas M (the author of Slax and Linux Live + scripts) is making "doubling" donations. + Unfortunately I cannot list all of the donators, but I really + appreciate. + It ends Aug 2010, but the ordinary donation URL is still available. + +Dai Itasaka made a donation (2007/8). +Chuck Smith made a donation (2008/4, 10 and 12). +Henk Schoneveld made a donation (2008/9). +Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). +Francois Dupoux made a donation (2008/11). +Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public + aufs2 GIT tree (2009/2). +William Grant made a donation (2009/3). +Patrick Lane made a donation (2009/4). +The Mail Archive (mail-archive.com) made donations (2009/5). +Nippy Networks (Ed Wildgoose) made a donation (2009/7). +New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). +Pavel Pronskiy made a donation (2011/2). +Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy + Networks (Ed Wildgoose) made a donation for hardware (2011/3). +Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and +11). +Sam Liddicott made a donation (2011/9). +Era Scarecrow made a donation (2013/4). +Bor Ratajc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +POIRETTE Marc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +lauri kasvandik made a donation (2013/5). +"pemasu from Finland" made a donation (2013/7). +The Parted Magic Project made a donation (2013/9 and 11). +Pavel Barta made a donation (2013/10). +Nikolay Pertsev made a donation (2014/5). +James B made a donation (2014/7 and 2015/7). +Stefano Di Biase made a donation (2014/8). +Daniel Epellei made a donation (2015/1). +OmegaPhil made a donation (2016/1, 2018/4). +Tomasz Szewczyk made a donation (2016/4). +James Burry made a donation (2016/12). +Carsten Rose made a donation (2018/9). +Porteus Kiosk made a donation (2018/10). + +Thank you very much. +Donations are always, including future donations, very important and +helpful for me to keep on developing aufs. + + +7. +---------------------------------------- +If you are an experienced user, no explanation is needed. Aufs is +just a linux filesystem. + + +Enjoy! + +# Local variables: ; +# mode: text; +# End: ; --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/01intro.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/01intro.txt @@ -0,0 +1,171 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Introduction +---------------------------------------- + +aufs [ei ju: ef es] | /ey-yoo-ef-es/ | [a u f s] +1. abbrev. for "advanced multi-layered unification filesystem". +2. abbrev. for "another unionfs". +3. abbrev. for "auf das" in German which means "on the" in English. + Ex. "Butter aufs Brot"(G) means "butter onto bread"(E). + But "Filesystem aufs Filesystem" is hard to understand. +4. abbrev. for "African Urban Fashion Show". + +AUFS is a filesystem with features: +- multi layered stackable unification filesystem, the member directory + is called as a branch. +- branch permission and attribute, 'readonly', 'real-readonly', + 'readwrite', 'whiteout-able', 'link-able whiteout', etc. and their + combination. +- internal "file copy-on-write". +- logical deletion, whiteout. +- dynamic branch manipulation, adding, deleting and changing permission. +- allow bypassing aufs, user's direct branch access. +- external inode number translation table and bitmap which maintains the + persistent aufs inode number. +- seekable directory, including NFS readdir. +- file mapping, mmap and sharing pages. +- pseudo-link, hardlink over branches. +- loopback mounted filesystem as a branch. +- several policies to select one among multiple writable branches. +- revert a single systemcall when an error occurs in aufs. +- and more... + + +Multi Layered Stackable Unification Filesystem +---------------------------------------------------------------------- +Most people already knows what it is. +It is a filesystem which unifies several directories and provides a +merged single directory. When users access a file, the access will be +passed/re-directed/converted (sorry, I am not sure which English word is +correct) to the real file on the member filesystem. The member +filesystem is called 'lower filesystem' or 'branch' and has a mode +'readonly' and 'readwrite.' And the deletion for a file on the lower +readonly branch is handled by creating 'whiteout' on the upper writable +branch. + +On LKML, there have been discussions about UnionMount (Jan Blunck, +Bharata B Rao and Valerie Aurora) and Unionfs (Erez Zadok). They took +different approaches to implement the merged-view. +The former tries putting it into VFS, and the latter implements as a +separate filesystem. +(If I misunderstand about these implementations, please let me know and +I shall correct it. Because it is a long time ago when I read their +source files last time). + +UnionMount's approach will be able to small, but may be hard to share +branches between several UnionMount since the whiteout in it is +implemented in the inode on branch filesystem and always +shared. According to Bharata's post, readdir does not seems to be +finished yet. +There are several missing features known in this implementations such as +- for users, the inode number may change silently. eg. copy-up. +- link(2) may break by copy-up. +- read(2) may get an obsoleted filedata (fstat(2) too). +- fcntl(F_SETLK) may be broken by copy-up. +- unnecessary copy-up may happen, for example mmap(MAP_PRIVATE) after + open(O_RDWR). + +In linux-3.18, "overlay" filesystem (formerly known as "overlayfs") was +merged into mainline. This is another implementation of UnionMount as a +separated filesystem. All the limitations and known problems which +UnionMount are equally inherited to "overlay" filesystem. + +Unionfs has a longer history. When I started implementing a stackable +filesystem (Aug 2005), it already existed. It has virtual super_block, +inode, dentry and file objects and they have an array pointing lower +same kind objects. After contributing many patches for Unionfs, I +re-started my project AUFS (Jun 2006). + +In AUFS, the structure of filesystem resembles to Unionfs, but I +implemented my own ideas, approaches and enhancements and it became +totally different one. + +Comparing DM snapshot and fs based implementation +- the number of bytes to be copied between devices is much smaller. +- the type of filesystem must be one and only. +- the fs must be writable, no readonly fs, even for the lower original + device. so the compression fs will not be usable. but if we use + loopback mount, we may address this issue. + for instance, + mount /cdrom/squashfs.img /sq + losetup /sq/ext2.img + losetup /somewhere/cow + dmsetup "snapshot /dev/loop0 /dev/loop1 ..." +- it will be difficult (or needs more operations) to extract the + difference between the original device and COW. +- DM snapshot-merge may help a lot when users try merging. in the + fs-layer union, users will use rsync(1). + +You may want to read my old paper "Filesystems in LiveCD" +(http://aufs.sourceforge.net/aufs2/report/sq/sq.pdf). + + +Several characters/aspects/persona of aufs +---------------------------------------------------------------------- + +Aufs has several characters, aspects or persona. +1. a filesystem, callee of VFS helper +2. sub-VFS, caller of VFS helper for branches +3. a virtual filesystem which maintains persistent inode number +4. reader/writer of files on branches such like an application + +1. Callee of VFS Helper +As an ordinary linux filesystem, aufs is a callee of VFS. For instance, +unlink(2) from an application reaches sys_unlink() kernel function and +then vfs_unlink() is called. vfs_unlink() is one of VFS helper and it +calls filesystem specific unlink operation. Actually aufs implements the +unlink operation but it behaves like a redirector. + +2. Caller of VFS Helper for Branches +aufs_unlink() passes the unlink request to the branch filesystem as if +it were called from VFS. So the called unlink operation of the branch +filesystem acts as usual. As a caller of VFS helper, aufs should handle +every necessary pre/post operation for the branch filesystem. +- acquire the lock for the parent dir on a branch +- lookup in a branch +- revalidate dentry on a branch +- mnt_want_write() for a branch +- vfs_unlink() for a branch +- mnt_drop_write() for a branch +- release the lock on a branch + +3. Persistent Inode Number +One of the most important issue for a filesystem is to maintain inode +numbers. This is particularly important to support exporting a +filesystem via NFS. Aufs is a virtual filesystem which doesn't have a +backend block device for its own. But some storage is necessary to +keep and maintain the inode numbers. It may be a large space and may not +suit to keep in memory. Aufs rents some space from its first writable +branch filesystem (by default) and creates file(s) on it. These files +are created by aufs internally and removed soon (currently) keeping +opened. +Note: Because these files are removed, they are totally gone after + unmounting aufs. It means the inode numbers are not persistent + across unmount or reboot. I have a plan to make them really + persistent which will be important for aufs on NFS server. + +4. Read/Write Files Internally (copy-on-write) +Because a branch can be readonly, when you write a file on it, aufs will +"copy-up" it to the upper writable branch internally. And then write the +originally requested thing to the file. Generally kernel doesn't +open/read/write file actively. In aufs, even a single write may cause a +internal "file copy". This behaviour is very similar to cp(1) command. + +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/02struct.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/02struct.txt @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Basic Aufs Internal Structure + +Superblock/Inode/Dentry/File Objects +---------------------------------------------------------------------- +As like an ordinary filesystem, aufs has its own +superblock/inode/dentry/file objects. All these objects have a +dynamically allocated array and store the same kind of pointers to the +lower filesystem, branch. +For example, when you build a union with one readwrite branch and one +readonly, mounted /au, /rw and /ro respectively. +- /au = /rw + /ro +- /ro/fileA exists but /rw/fileA + +Aufs lookup operation finds /ro/fileA and gets dentry for that. These +pointers are stored in a aufs dentry. The array in aufs dentry will be, +- [0] = NULL (because /rw/fileA doesn't exist) +- [1] = /ro/fileA + +This style of an array is essentially same to the aufs +superblock/inode/dentry/file objects. + +Because aufs supports manipulating branches, ie. add/delete/change +branches dynamically, these objects has its own generation. When +branches are changed, the generation in aufs superblock is +incremented. And a generation in other object are compared when it is +accessed. When a generation in other objects are obsoleted, aufs +refreshes the internal array. + + +Superblock +---------------------------------------------------------------------- +Additionally aufs superblock has some data for policies to select one +among multiple writable branches, XIB files, pseudo-links and kobject. +See below in detail. +About the policies which supports copy-down a directory, see +wbr_policy.txt too. + + +Branch and XINO(External Inode Number Translation Table) +---------------------------------------------------------------------- +Every branch has its own xino (external inode number translation table) +file. The xino file is created and unlinked by aufs internally. When two +members of a union exist on the same filesystem, they share the single +xino file. +The struct of a xino file is simple, just a sequence of aufs inode +numbers which is indexed by the lower inode number. +In the above sample, assume the inode number of /ro/fileA is i111 and +aufs assigns the inode number i999 for fileA. Then aufs writes 999 as +4(8) bytes at 111 * 4(8) bytes offset in the xino file. + +When the inode numbers are not contiguous, the xino file will be sparse +which has a hole in it and doesn't consume as much disk space as it +might appear. If your branch filesystem consumes disk space for such +holes, then you should specify 'xino=' option at mounting aufs. + +Aufs has a mount option to free the disk blocks for such holes in XINO +files on tmpfs or ramdisk. But it is not so effective actually. If you +meet a problem of disk shortage due to XINO files, then you should try +"tmpfs-ino.patch" (and "vfs-ino.patch" too) in aufs4-standalone.git. +The patch localizes the assignment inumbers per tmpfs-mount and avoid +the holes in XINO files. + +Also a writable branch has three kinds of "whiteout bases". All these +are existed when the branch is joined to aufs, and their names are +whiteout-ed doubly, so that users will never see their names in aufs +hierarchy. +1. a regular file which will be hardlinked to all whiteouts. +2. a directory to store a pseudo-link. +3. a directory to store an "orphan"-ed file temporary. + +1. Whiteout Base + When you remove a file on a readonly branch, aufs handles it as a + logical deletion and creates a whiteout on the upper writable branch + as a hardlink of this file in order not to consume inode on the + writable branch. +2. Pseudo-link Dir + See below, Pseudo-link. +3. Step-Parent Dir + When "fileC" exists on the lower readonly branch only and it is + opened and removed with its parent dir, and then user writes + something into it, then aufs copies-up fileC to this + directory. Because there is no other dir to store fileC. After + creating a file under this dir, the file is unlinked. + +Because aufs supports manipulating branches, ie. add/delete/change +dynamically, a branch has its own id. When the branch order changes, +aufs finds the new index by searching the branch id. + + +Pseudo-link +---------------------------------------------------------------------- +Assume "fileA" exists on the lower readonly branch only and it is +hardlinked to "fileB" on the branch. When you write something to fileA, +aufs copies-up it to the upper writable branch. Additionally aufs +creates a hardlink under the Pseudo-link Directory of the writable +branch. The inode of a pseudo-link is kept in aufs super_block as a +simple list. If fileB is read after unlinking fileA, aufs returns +filedata from the pseudo-link instead of the lower readonly +branch. Because the pseudo-link is based upon the inode, to keep the +inode number by xino (see above) is essentially necessary. + +All the hardlinks under the Pseudo-link Directory of the writable branch +should be restored in a proper location later. Aufs provides a utility +to do this. The userspace helpers executed at remounting and unmounting +aufs by default. +During this utility is running, it puts aufs into the pseudo-link +maintenance mode. In this mode, only the process which began the +maintenance mode (and its child processes) is allowed to operate in +aufs. Some other processes which are not related to the pseudo-link will +be allowed to run too, but the rest have to return an error or wait +until the maintenance mode ends. If a process already acquires an inode +mutex (in VFS), it has to return an error. + + +XIB(external inode number bitmap) +---------------------------------------------------------------------- +Addition to the xino file per a branch, aufs has an external inode number +bitmap in a superblock object. It is also an internal file such like a +xino file. +It is a simple bitmap to mark whether the aufs inode number is in-use or +not. +To reduce the file I/O, aufs prepares a single memory page to cache xib. + +As well as XINO files, aufs has a feature to truncate/refresh XIB to +reduce the number of consumed disk blocks for these files. + + +Virtual or Vertical Dir, and Readdir in Userspace +---------------------------------------------------------------------- +In order to support multiple layers (branches), aufs readdir operation +constructs a virtual dir block on memory. For readdir, aufs calls +vfs_readdir() internally for each dir on branches, merges their entries +with eliminating the whiteout-ed ones, and sets it to file (dir) +object. So the file object has its entry list until it is closed. The +entry list will be updated when the file position is zero and becomes +obsoleted. This decision is made in aufs automatically. + +The dynamically allocated memory block for the name of entries has a +unit of 512 bytes (by default) and stores the names contiguously (no +padding). Another block for each entry is handled by kmem_cache too. +During building dir blocks, aufs creates hash list and judging whether +the entry is whiteouted by its upper branch or already listed. +The merged result is cached in the corresponding inode object and +maintained by a customizable life-time option. + +Some people may call it can be a security hole or invite DoS attack +since the opened and once readdir-ed dir (file object) holds its entry +list and becomes a pressure for system memory. But I'd say it is similar +to files under /proc or /sys. The virtual files in them also holds a +memory page (generally) while they are opened. When an idea to reduce +memory for them is introduced, it will be applied to aufs too. +For those who really hate this situation, I've developed readdir(3) +library which operates this merging in userspace. You just need to set +LD_PRELOAD environment variable, and aufs will not consume no memory in +kernel space for readdir(3). + + +Workqueue +---------------------------------------------------------------------- +Aufs sometimes requires privilege access to a branch. For instance, +in copy-up/down operation. When a user process is going to make changes +to a file which exists in the lower readonly branch only, and the mode +of one of ancestor directories may not be writable by a user +process. Here aufs copy-up the file with its ancestors and they may +require privilege to set its owner/group/mode/etc. +This is a typical case of a application character of aufs (see +Introduction). + +Aufs uses workqueue synchronously for this case. It creates its own +workqueue. The workqueue is a kernel thread and has privilege. Aufs +passes the request to call mkdir or write (for example), and wait for +its completion. This approach solves a problem of a signal handler +simply. +If aufs didn't adopt the workqueue and changed the privilege of the +process, then the process may receive the unexpected SIGXFSZ or other +signals. + +Also aufs uses the system global workqueue ("events" kernel thread) too +for asynchronous tasks, such like handling inotify/fsnotify, re-creating a +whiteout base and etc. This is unrelated to a privilege. +Most of aufs operation tries acquiring a rw_semaphore for aufs +superblock at the beginning, at the same time waits for the completion +of all queued asynchronous tasks. + + +Whiteout +---------------------------------------------------------------------- +The whiteout in aufs is very similar to Unionfs's. That is represented +by its filename. UnionMount takes an approach of a file mode, but I am +afraid several utilities (find(1) or something) will have to support it. + +Basically the whiteout represents "logical deletion" which stops aufs to +lookup further, but also it represents "dir is opaque" which also stop +further lookup. + +In aufs, rmdir(2) and rename(2) for dir uses whiteout alternatively. +In order to make several functions in a single systemcall to be +revertible, aufs adopts an approach to rename a directory to a temporary +unique whiteouted name. +For example, in rename(2) dir where the target dir already existed, aufs +renames the target dir to a temporary unique whiteouted name before the +actual rename on a branch, and then handles other actions (make it opaque, +update the attributes, etc). If an error happens in these actions, aufs +simply renames the whiteouted name back and returns an error. If all are +succeeded, aufs registers a function to remove the whiteouted unique +temporary name completely and asynchronously to the system global +workqueue. + + +Copy-up +---------------------------------------------------------------------- +It is a well-known feature or concept. +When user modifies a file on a readonly branch, aufs operate "copy-up" +internally and makes change to the new file on the upper writable branch. +When the trigger systemcall does not update the timestamps of the parent +dir, aufs reverts it after copy-up. + + +Move-down (aufs3.9 and later) +---------------------------------------------------------------------- +"Copy-up" is one of the essential feature in aufs. It copies a file from +the lower readonly branch to the upper writable branch when a user +changes something about the file. +"Move-down" is an opposite action of copy-up. Basically this action is +ran manually instead of automatically and internally. +For desgin and implementation, aufs has to consider these issues. +- whiteout for the file may exist on the lower branch. +- ancestor directories may not exist on the lower branch. +- diropq for the ancestor directories may exist on the upper branch. +- free space on the lower branch will reduce. +- another access to the file may happen during moving-down, including + UDBA (see "Revalidate Dentry and UDBA"). +- the file should not be hard-linked nor pseudo-linked. they should be + handled by auplink utility later. + +Sometimes users want to move-down a file from the upper writable branch +to the lower readonly or writable branch. For instance, +- the free space of the upper writable branch is going to run out. +- create a new intermediate branch between the upper and lower branch. +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/03atomic_open.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/03atomic_open.txt @@ -0,0 +1,85 @@ + +# Copyright (C) 2015-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Support for a branch who has its ->atomic_open() +---------------------------------------------------------------------- +The filesystems who implement its ->atomic_open() are not majority. For +example NFSv4 does, and aufs should call NFSv4 ->atomic_open, +particularly for open(O_CREAT|O_EXCL, 0400) case. Other than +->atomic_open(), NFSv4 returns an error for this open(2). While I am not +sure whether all filesystems who have ->atomic_open() behave like this, +but NFSv4 surely returns the error. + +In order to support ->atomic_open() for aufs, there are a few +approaches. + +A. Introduce aufs_atomic_open() + - calls one of VFS:do_last(), lookup_open() or atomic_open() for + branch fs. +B. Introduce aufs_atomic_open() calling create, open and chmod. this is + an aufs user Pip Cet's approach + - calls aufs_create(), VFS finish_open() and notify_change(). + - pass fake-mode to finish_open(), and then correct the mode by + notify_change(). +C. Extend aufs_open() to call branch fs's ->atomic_open() + - no aufs_atomic_open(). + - aufs_lookup() registers the TID to an aufs internal object. + - aufs_create() does nothing when the matching TID is registered, but + registers the mode. + - aufs_open() calls branch fs's ->atomic_open() when the matching + TID is registered. +D. Extend aufs_open() to re-try branch fs's ->open() with superuser's + credential + - no aufs_atomic_open(). + - aufs_create() registers the TID to an internal object. this info + represents "this process created this file just now." + - when aufs gets EACCES from branch fs's ->open(), then confirm the + registered TID and re-try open() with superuser's credential. + +Pros and cons for each approach. + +A. + - straightforward but highly depends upon VFS internal. + - the atomic behavaiour is kept. + - some of parameters such as nameidata are hard to reproduce for + branch fs. + - large overhead. +B. + - easy to implement. + - the atomic behavaiour is lost. +C. + - the atomic behavaiour is kept. + - dirty and tricky. + - VFS checks whether the file is created correctly after calling + ->create(), which means this approach doesn't work. +D. + - easy to implement. + - the atomic behavaiour is lost. + - to open a file with superuser's credential and give it to a user + process is a bad idea, since the file object keeps the credential + in it. It may affect LSM or something. This approach doesn't work + either. + +The approach A is ideal, but it hard to implement. So here is a +variation of A, which is to be implemented. + +A-1. Introduce aufs_atomic_open() + - calls branch fs ->atomic_open() if exists. otherwise calls + vfs_create() and finish_open(). + - the demerit is that the several checks after branch fs + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/03lookup.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/03lookup.txt @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Lookup in a Branch +---------------------------------------------------------------------- +Since aufs has a character of sub-VFS (see Introduction), it operates +lookup for branches as VFS does. It may be a heavy work. But almost all +lookup operation in aufs is the simplest case, ie. lookup only an entry +directly connected to its parent. Digging down the directory hierarchy +is unnecessary. VFS has a function lookup_one_len() for that use, and +aufs calls it. + +When a branch is a remote filesystem, aufs basically relies upon its +->d_revalidate(), also aufs forces the hardest revalidate tests for +them. +For d_revalidate, aufs implements three levels of revalidate tests. See +"Revalidate Dentry and UDBA" in detail. + + +Test Only the Highest One for the Directory Permission (dirperm1 option) +---------------------------------------------------------------------- +Let's try case study. +- aufs has two branches, upper readwrite and lower readonly. + /au = /rw + /ro +- "dirA" exists under /ro, but /rw. and its mode is 0700. +- user invoked "chmod a+rx /au/dirA" +- the internal copy-up is activated and "/rw/dirA" is created and its + permission bits are set to world readable. +- then "/au/dirA" becomes world readable? + +In this case, /ro/dirA is still 0700 since it exists in readonly branch, +or it may be a natively readonly filesystem. If aufs respects the lower +branch, it should not respond readdir request from other users. But user +allowed it by chmod. Should really aufs rejects showing the entries +under /ro/dirA? + +To be honest, I don't have a good solution for this case. So aufs +implements 'dirperm1' and 'nodirperm1' mount options, and leave it to +users. +When dirperm1 is specified, aufs checks only the highest one for the +directory permission, and shows the entries. Otherwise, as usual, checks +every dir existing on all branches and rejects the request. + +As a side effect, dirperm1 option improves the performance of aufs +because the number of permission check is reduced when the number of +branch is many. + + +Revalidate Dentry and UDBA (User's Direct Branch Access) +---------------------------------------------------------------------- +Generally VFS helpers re-validate a dentry as a part of lookup. +0. digging down the directory hierarchy. +1. lock the parent dir by its i_mutex. +2. lookup the final (child) entry. +3. revalidate it. +4. call the actual operation (create, unlink, etc.) +5. unlock the parent dir + +If the filesystem implements its ->d_revalidate() (step 3), then it is +called. Actually aufs implements it and checks the dentry on a branch is +still valid. +But it is not enough. Because aufs has to release the lock for the +parent dir on a branch at the end of ->lookup() (step 2) and +->d_revalidate() (step 3) while the i_mutex of the aufs dir is still +held by VFS. +If the file on a branch is changed directly, eg. bypassing aufs, after +aufs released the lock, then the subsequent operation may cause +something unpleasant result. + +This situation is a result of VFS architecture, ->lookup() and +->d_revalidate() is separated. But I never say it is wrong. It is a good +design from VFS's point of view. It is just not suitable for sub-VFS +character in aufs. + +Aufs supports such case by three level of revalidation which is +selectable by user. +1. Simple Revalidate + Addition to the native flow in VFS's, confirm the child-parent + relationship on the branch just after locking the parent dir on the + branch in the "actual operation" (step 4). When this validation + fails, aufs returns EBUSY. ->d_revalidate() (step 3) in aufs still + checks the validation of the dentry on branches. +2. Monitor Changes Internally by Inotify/Fsnotify + Addition to above, in the "actual operation" (step 4) aufs re-lookup + the dentry on the branch, and returns EBUSY if it finds different + dentry. + Additionally, aufs sets the inotify/fsnotify watch for every dir on branches + during it is in cache. When the event is notified, aufs registers a + function to kernel 'events' thread by schedule_work(). And the + function sets some special status to the cached aufs dentry and inode + private data. If they are not cached, then aufs has nothing to + do. When the same file is accessed through aufs (step 0-3) later, + aufs will detect the status and refresh all necessary data. + In this mode, aufs has to ignore the event which is fired by aufs + itself. +3. No Extra Validation + This is the simplest test and doesn't add any additional revalidation + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/04branch.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/04branch.txt @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Branch Manipulation + +Since aufs supports dynamic branch manipulation, ie. add/remove a branch +and changing its permission/attribute, there are a lot of works to do. + + +Add a Branch +---------------------------------------------------------------------- +o Confirm the adding dir exists outside of aufs, including loopback + mount, and its various attributes. +o Initialize the xino file and whiteout bases if necessary. + See struct.txt. + +o Check the owner/group/mode of the directory + When the owner/group/mode of the adding directory differs from the + existing branch, aufs issues a warning because it may impose a + security risk. + For example, when a upper writable branch has a world writable empty + top directory, a malicious user can create any files on the writable + branch directly, like copy-up and modify manually. If something like + /etc/{passwd,shadow} exists on the lower readonly branch but the upper + writable branch, and the writable branch is world-writable, then a + malicious guy may create /etc/passwd on the writable branch directly + and the infected file will be valid in aufs. + I am afraid it can be a security issue, but aufs can do nothing except + producing a warning. + + +Delete a Branch +---------------------------------------------------------------------- +o Confirm the deleting branch is not busy + To be general, there is one merit to adopt "remount" interface to + manipulate branches. It is to discard caches. At deleting a branch, + aufs checks the still cached (and connected) dentries and inodes. If + there are any, then they are all in-use. An inode without its + corresponding dentry can be alive alone (for example, inotify/fsnotify case). + + For the cached one, aufs checks whether the same named entry exists on + other branches. + If the cached one is a directory, because aufs provides a merged view + to users, as long as one dir is left on any branch aufs can show the + dir to users. In this case, the branch can be removed from aufs. + Otherwise aufs rejects deleting the branch. + + If any file on the deleting branch is opened by aufs, then aufs + rejects deleting. + + +Modify the Permission of a Branch +---------------------------------------------------------------------- +o Re-initialize or remove the xino file and whiteout bases if necessary. + See struct.txt. + +o rw --> ro: Confirm the modifying branch is not busy + Aufs rejects the request if any of these conditions are true. + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/05wbr_policy.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/05wbr_policy.txt @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Policies to Select One among Multiple Writable Branches +---------------------------------------------------------------------- +When the number of writable branch is more than one, aufs has to decide +the target branch for file creation or copy-up. By default, the highest +writable branch which has the parent (or ancestor) dir of the target +file is chosen (top-down-parent policy). +By user's request, aufs implements some other policies to select the +writable branch, for file creation several policies, round-robin, +most-free-space, and other policies. For copy-up, top-down-parent, +bottom-up-parent, bottom-up and others. + +As expected, the round-robin policy selects the branch in circular. When +you have two writable branches and creates 10 new files, 5 files will be +created for each branch. mkdir(2) systemcall is an exception. When you +create 10 new directories, all will be created on the same branch. +And the most-free-space policy selects the one which has most free +space among the writable branches. The amount of free space will be +checked by aufs internally, and users can specify its time interval. + +The policies for copy-up is more simple, +top-down-parent is equivalent to the same named on in create policy, +bottom-up-parent selects the writable branch where the parent dir +exists and the nearest upper one from the copyup-source, +bottom-up selects the nearest upper writable branch from the +copyup-source, regardless the existence of the parent dir. + +There are some rules or exceptions to apply these policies. +- If there is a readonly branch above the policy-selected branch and + the parent dir is marked as opaque (a variation of whiteout), or the + target (creating) file is whiteout-ed on the upper readonly branch, + then the result of the policy is ignored and the target file will be + created on the nearest upper writable branch than the readonly branch. +- If there is a writable branch above the policy-selected branch and + the parent dir is marked as opaque or the target file is whiteouted + on the branch, then the result of the policy is ignored and the target + file will be created on the highest one among the upper writable + branches who has diropq or whiteout. In case of whiteout, aufs removes + it as usual. +- link(2) and rename(2) systemcalls are exceptions in every policy. + They try selecting the branch where the source exists as possible + since copyup a large file will take long time. If it can't be, + ie. the branch where the source exists is readonly, then they will + follow the copyup policy. +- There is an exception for rename(2) when the target exists. + If the rename target exists, aufs compares the index of the branches + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/06dirren.dot +++ linux-5.8.0/Documentation/filesystems/aufs/design/06dirren.dot @@ -0,0 +1,31 @@ + +// to view this graph, run dot(1) command in GRAPHVIZ. + +digraph G { +node [shape=box]; +whinfo [label="detailed info file\n(lower_brid_root-hinum, h_inum, namelen, old name)"]; + +node [shape=oval]; + +aufs_rename -> whinfo [label="store/remove"]; + +node [shape=oval]; +inode_list [label="h_inum list in branch\ncache"]; + +node [shape=box]; +whinode [label="h_inum list file"]; + +node [shape=oval]; +brmgmt [label="br_add/del/mod/umount"]; + +brmgmt -> inode_list [label="create/remove"]; +brmgmt -> whinode [label="load/store"]; + +inode_list -> whinode [style=dashed,dir=both]; + +aufs_rename -> inode_list [label="add/del"]; + +aufs_lookup -> inode_list [label="search"]; + +aufs_lookup -> whinfo [label="load/remove"]; +} --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/06dirren.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/06dirren.txt @@ -0,0 +1,102 @@ + +# Copyright (C) 2017-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Special handling for renaming a directory (DIRREN) +---------------------------------------------------------------------- +First, let's assume we have a simple usecase. + +- /u = /rw + /ro +- /rw/dirA exists +- /ro/dirA and /ro/dirA/file exist too +- there is no dirB on both branches +- a user issues rename("dirA", "dirB") + +Now, what should aufs behave against this rename(2)? +There are a few possible cases. + +A. returns EROFS. + since dirA exists on a readonly branch which cannot be renamed. +B. returns EXDEV. + it is possible to copy-up dirA (only the dir itself), but the child + entries ("file" in this case) should not be. it must be a bad + approach to copy-up recursively. +C. returns a success. + even the branch /ro is readonly, aufs tries renaming it. Obviously it + is a violation of aufs' policy. +D. construct an extra information which indicates that /ro/dirA should + be handled as the name of dirB. + overlayfs has a similar feature called REDIRECT. + +Until now, aufs implements the case B only which returns EXDEV, and +expects the userspace application behaves like mv(1) which tries +issueing rename(2) recursively. + +A new aufs feature called DIRREN is introduced which implements the case +D. There are several "extra information" added. + +1. detailed info per renamed directory + path: /rw/dirB/$AUFS_WH_DR_INFO_PFX. +2. the inode-number list of directories on a branch + path: /rw/dirB/$AUFS_WH_DR_BRHINO + +The filename of "detailed info per directory" represents the lower +branch, and its format is +- a type of the branch id + one of these. + + uuid (not implemented yet) + + fsid + + dev +- the inode-number of the branch root dir + +And it contains these info in a single regular file. +- magic number +- branch's inode-number of the logically renamed dir +- the name of the before-renamed dir + +The "detailed info per directory" file is created in aufs rename(2), and +loaded in any lookup. +The info is considered in lookup for the matching case only. Here +"matching" means that the root of branch (in the info filename) is same +to the current looking-up branch. After looking-up the before-renamed +name, the inode-number is compared. And the matched dentry is used. + +The "inode-number list of directories" is a regular file which contains +simply the inode-numbers on the branch. The file is created or updated +in removing the branch, and loaded in adding the branch. Its lifetime is +equal to the branch. +The list is refered in lookup, and when the current target inode is +found in the list, the aufs tries loading the "detailed info per +directory" and get the changed and valid name of the dir. + +Theoretically these "extra informaiton" may be able to be put into XATTR +in the dir inode. But aufs doesn't choose this way because +1. XATTR may not be supported by the branch (or its configuration) +2. XATTR may have its size limit. +3. XATTR may be less easy to convert than a regular file, when the + format of the info is changed in the future. +At the same time, I agree that the regular file approach is much slower +than XATTR approach. So, in the future, aufs may take the XATTR or other +better approach. + +This DIRREN feature is enabled by aufs configuration, and is activated +by a new mount option. + +For the more complicated case, there is a work with UDBA option, which +is to dected the direct access to the branches (by-passing aufs) and to +maintain the cashes in aufs. Since a single cached aufs dentry may +contains two names, before- and after-rename, the name comparision in +UDBA handler may not work correctly. In this case, the behaviour will be +equivalen to udba=reval case. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/06fhsm.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/06fhsm.txt @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +File-based Hierarchical Storage Management (FHSM) +---------------------------------------------------------------------- +Hierarchical Storage Management (or HSM) is a well-known feature in the +storage world. Aufs provides this feature as file-based with multiple +writable branches, based upon the principle of "Colder, the Lower". +Here the word "colder" means that the less used files, and "lower" means +that the position in the order of the stacked branches vertically. +These multiple writable branches are prioritized, ie. the topmost one +should be the fastest drive and be used heavily. + +o Characters in aufs FHSM story +- aufs itself and a new branch attribute. +- a new ioctl interface to move-down and to establish a connection with + the daemon ("move-down" is a converse of "copy-up"). +- userspace tool and daemon. + +The userspace daemon establishes a connection with aufs and waits for +the notification. The notified information is very similar to struct +statfs containing the number of consumed blocks and inodes. +When the consumed blocks/inodes of a branch exceeds the user-specified +upper watermark, the daemon activates its move-down process until the +consumed blocks/inodes reaches the user-specified lower watermark. + +The actual move-down is done by aufs based upon the request from +user-space since we need to maintain the inode number and the internal +pointer arrays in aufs. + +Currently aufs FHSM handles the regular files only. Additionally they +must not be hard-linked nor pseudo-linked. + + +o Cowork of aufs and the user-space daemon + During the userspace daemon established the connection, aufs sends a + small notification to it whenever aufs writes something into the + writable branch. But it may cost high since aufs issues statfs(2) + internally. So user can specify a new option to cache the + info. Actually the notification is controlled by these factors. + + the specified cache time. + + classified as "force" by aufs internally. + Until the specified time expires, aufs doesn't send the info + except the forced cases. When aufs decide forcing, the info is always + notified to userspace. + For example, the number of free inodes is generally large enough and + the shortage of it happens rarely. So aufs doesn't force the + notification when creating a new file, directory and others. This is + the typical case which aufs doesn't force. + When aufs writes the actual filedata and the files consumes any of new + blocks, the aufs forces notifying. + + +o Interfaces in aufs +- New branch attribute. + + fhsm + Specifies that the branch is managed by FHSM feature. In other word, + participant in the FHSM. + When nofhsm is set to the branch, it will not be the source/target + branch of the move-down operation. This attribute is set + independently from coo and moo attributes, and if you want full + FHSM, you should specify them as well. +- New mount option. + + fhsm_sec + Specifies a second to suppress many less important info to be + notified. +- New ioctl. + + AUFS_CTL_FHSM_FD + create a new file descriptor which userspace can read the notification + (a subset of struct statfs) from aufs. +- Module parameter 'brs' + It has to be set to 1. Otherwise the new mount option 'fhsm' will not + be set. +- mount helpers /sbin/mount.aufs and /sbin/umount.aufs + When there are two or more branches with fhsm attributes, + /sbin/mount.aufs invokes the user-space daemon and /sbin/umount.aufs + terminates it. As a result of remounting and branch-manipulation, the + number of branches with fhsm attribute can be one. In this case, + /sbin/mount.aufs will terminate the user-space daemon. + + +Finally the operation is done as these steps in kernel-space. +- make sure that, + + no one else is using the file. + + the file is not hard-linked. + + the file is not pseudo-linked. + + the file is a regular file. + + the parent dir is not opaqued. +- find the target writable branch. +- make sure the file is not whiteout-ed by the upper (than the target) + branch. +- make the parent dir on the target branch. +- mutex lock the inode on the branch. +- unlink the whiteout on the target branch (if exists). +- lookup and create the whiteout-ed temporary name on the target branch. +- copy the file as the whiteout-ed temporary name on the target branch. +- rename the whiteout-ed temporary name to the original name. +- unlink the file on the source branch. +- maintain the internal pointer array and the external inode number + table (XINO). +- maintain the timestamps and other attributes of the parent dir and the + file. + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/06mmap.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/06mmap.txt @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +mmap(2) -- File Memory Mapping +---------------------------------------------------------------------- +In aufs, the file-mapped pages are handled by a branch fs directly, no +interaction with aufs. It means aufs_mmap() calls the branch fs's +->mmap(). +This approach is simple and good, but there is one problem. +Under /proc, several entries show the mmapped files by its path (with +device and inode number), and the printed path will be the path on the +branch fs's instead of virtual aufs's. +This is not a problem in most cases, but some utilities lsof(1) (and its +user) may expect the path on aufs. + +To address this issue, aufs adds a new member called vm_prfile in struct +vm_area_struct (and struct vm_region). The original vm_file points to +the file on the branch fs in order to handle everything correctly as +usual. The new vm_prfile points to a virtual file in aufs, and the +show-functions in procfs refers to vm_prfile if it is set. +Also we need to maintain several other places where touching vm_file +such like +- fork()/clone() copies vma and the reference count of vm_file is + incremented. +- merging vma maintains the ref count too. + +This is not a good approach. It just fakes the printed path. But it +leaves all behaviour around f_mapping unchanged. This is surely an +advantage. +Actually aufs had adopted another complicated approach which calls +generic_file_mmap() and handles struct vm_operations_struct. In this +approach, aufs met a hard problem and I could not solve it without +switching the approach. + +There may be one more another approach which is +- bind-mount the branch-root onto the aufs-root internally +- grab the new vfsmount (ie. struct mount) +- lazy-umount the branch-root internally +- in open(2) the aufs-file, open the branch-file with the hidden + vfsmount (instead of the original branch's vfsmount) +- ideally this "bind-mount and lazy-umount" should be done atomically, + but it may be possible from userspace by the mount helper. + +Adding the internal hidden vfsmount and using it in opening a file, the +file path under /proc will be printed correctly. This approach looks +smarter, but is not possible I am afraid. +- aufs-root may be bind-mount later. when it happens, another hidden + vfsmount will be required. +- it is hard to get the chance to bind-mount and lazy-umount + + in kernel-space, FS can have vfsmount in open(2) via + file->f_path, and aufs can know its vfsmount. But several locks are + already acquired, and if aufs tries to bind-mount and lazy-umount + here, then it may cause a deadlock. + + in user-space, bind-mount doesn't invoke the mount helper. +- since /proc shows dev and ino, aufs has to give vma these info. it + means a new member vm_prinode will be necessary. this is essentially + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/06xattr.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/06xattr.txt @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Listing XATTR/EA and getting the value +---------------------------------------------------------------------- +For the inode standard attributes (owner, group, timestamps, etc.), aufs +shows the values from the topmost existing file. This behaviour is good +for the non-dir entries since the bahaviour exactly matches the shown +information. But for the directories, aufs considers all the same named +entries on the lower branches. Which means, if one of the lower entry +rejects readdir call, then aufs returns an error even if the topmost +entry allows it. This behaviour is necessary to respect the branch fs's +security, but can make users confused since the user-visible standard +attributes don't match the behaviour. +To address this issue, aufs has a mount option called dirperm1 which +checks the permission for the topmost entry only, and ignores the lower +entry's permission. + +A similar issue can happen around XATTR. +getxattr(2) and listxattr(2) families behave as if dirperm1 option is +always set. Otherwise these very unpleasant situation would happen. +- listxattr(2) may return the duplicated entries. +- users may not be able to remove or reset the XATTR forever, + + +XATTR/EA support in the internal (copy,move)-(up,down) +---------------------------------------------------------------------- +Generally the extended attributes of inode are categorized as these. +- "security" for LSM and capability. +- "system" for posix ACL, 'acl' mount option is required for the branch + fs generally. +- "trusted" for userspace, CAP_SYS_ADMIN is required. +- "user" for userspace, 'user_xattr' mount option is required for the + branch fs generally. + +Moreover there are some other categories. Aufs handles these rather +unpopular categories as the ordinary ones, ie. there is no special +condition nor exception. + +In copy-up, the support for XATTR on the dst branch may differ from the +src branch. In this case, the copy-up operation will get an error and +the original user operation which triggered the copy-up will fail. It +can happen that even all copy-up will fail. +When both of src and dst branches support XATTR and if an error occurs +during copying XATTR, then the copy-up should fail obviously. That is a +good reason and aufs should return an error to userspace. But when only +the src branch support that XATTR, aufs should not return an error. +For example, the src branch supports ACL but the dst branch doesn't +because the dst branch may natively un-support it or temporary +un-support it due to "noacl" mount option. Of course, the dst branch fs +may NOT return an error even if the XATTR is not supported. It is +totally up to the branch fs. + +Anyway when the aufs internal copy-up gets an error from the dst branch +fs, then aufs tries removing the just copied entry and returns the error +to the userspace. The worst case of this situation will be all copy-up +will fail. + +For the copy-up operation, there two basic approaches. +- copy the specified XATTR only (by category above), and return the + error unconditionally if it happens. +- copy all XATTR, and ignore the error on the specified category only. + +In order to support XATTR and to implement the correct behaviour, aufs +chooses the latter approach and introduces some new branch attributes, +"icexsec", "icexsys", "icextr", "icexusr", and "icexoth". +They correspond to the XATTR namespaces (see above). Additionally, to be +convenient, "icex" is also provided which means all "icex*" attributes +are set (here the word "icex" stands for "ignore copy-error on XATTR"). + +The meaning of these attributes is to ignore the error from setting +XATTR on that branch. +Note that aufs tries copying all XATTR unconditionally, and ignores the +error from the dst branch according to the specified attributes. + +Some XATTR may have its default value. The default value may come from +the parent dir or the environment. If the default value is set at the +file creating-time, it will be overwritten by copy-up. +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/07export.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/07export.txt @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Export Aufs via NFS +---------------------------------------------------------------------- +Here is an approach. +- like xino/xib, add a new file 'xigen' which stores aufs inode + generation. +- iget_locked(): initialize aufs inode generation for a new inode, and + store it in xigen file. +- destroy_inode(): increment aufs inode generation and store it in xigen + file. it is necessary even if it is not unlinked, because any data of + inode may be changed by UDBA. +- encode_fh(): for a root dir, simply return FILEID_ROOT. otherwise + build file handle by + + branch id (4 bytes) + + superblock generation (4 bytes) + + inode number (4 or 8 bytes) + + parent dir inode number (4 or 8 bytes) + + inode generation (4 bytes)) + + return value of exportfs_encode_fh() for the parent on a branch (4 + bytes) + + file handle for a branch (by exportfs_encode_fh()) +- fh_to_dentry(): + + find the index of a branch from its id in handle, and check it is + still exist in aufs. + + 1st level: get the inode number from handle and search it in cache. + + 2nd level: if not found in cache, get the parent inode number from + the handle and search it in cache. and then open the found parent + dir, find the matching inode number by vfs_readdir() and get its + name, and call lookup_one_len() for the target dentry. + + 3rd level: if the parent dir is not cached, call + exportfs_decode_fh() for a branch and get the parent on a branch, + build a pathname of it, convert it a pathname in aufs, call + path_lookup(). now aufs gets a parent dir dentry, then handle it as + the 2nd level. + + to open the dir, aufs needs struct vfsmount. aufs keeps vfsmount + for every branch, but not itself. to get this, (currently) aufs + searches in current->nsproxy->mnt_ns list. it may not be a good + idea, but I didn't get other approach. + + test the generation of the gotten inode. +- every inode operation: they may get EBUSY due to UDBA. in this case, + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/08shwh.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/08shwh.txt @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Show Whiteout Mode (shwh) +---------------------------------------------------------------------- +Generally aufs hides the name of whiteouts. But in some cases, to show +them is very useful for users. For instance, creating a new middle layer +(branch) by merging existing layers. + +(borrowing aufs1 HOW-TO from a user, Michael Towers) +When you have three branches, +- Bottom: 'system', squashfs (underlying base system), read-only +- Middle: 'mods', squashfs, read-only +- Top: 'overlay', ram (tmpfs), read-write + +The top layer is loaded at boot time and saved at shutdown, to preserve +the changes made to the system during the session. +When larger changes have been made, or smaller changes have accumulated, +the size of the saved top layer data grows. At this point, it would be +nice to be able to merge the two overlay branches ('mods' and 'overlay') +and rewrite the 'mods' squashfs, clearing the top layer and thus +restoring save and load speed. + +This merging is simplified by the use of another aufs mount, of just the +two overlay branches using the 'shwh' option. +# mount -t aufs -o ro,shwh,br:/livesys/overlay=ro+wh:/livesys/mods=rr+wh \ + aufs /livesys/merge_union + +A merged view of these two branches is then available at +/livesys/merge_union, and the new feature is that the whiteouts are +visible! +Note that in 'shwh' mode the aufs mount must be 'ro', which will disable +writing to all branches. Also the default mode for all branches is 'ro'. +It is now possible to save the combined contents of the two overlay +branches to a new squashfs, e.g.: +# mksquashfs /livesys/merge_union /path/to/newmods.squash + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. --- linux-5.8.0.orig/Documentation/filesystems/aufs/design/10dynop.txt +++ linux-5.8.0/Documentation/filesystems/aufs/design/10dynop.txt @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Dynamically customizable FS operations +---------------------------------------------------------------------- +Generally FS operations (struct inode_operations, struct +address_space_operations, struct file_operations, etc.) are defined as +"static const", but it never means that FS have only one set of +operation. Some FS have multiple sets of them. For instance, ext2 has +three sets, one for XIP, for NOBH, and for normal. +Since aufs overrides and redirects these operations, sometimes aufs has +to change its behaviour according to the branch FS type. More importantly +VFS acts differently if a function (member in the struct) is set or +not. It means aufs should have several sets of operations and select one +among them according to the branch FS definition. + +In order to solve this problem and not to affect the behaviour of VFS, +aufs defines these operations dynamically. For instance, aufs defines +dummy direct_IO function for struct address_space_operations, but it may +not be set to the address_space_operations actually. When the branch FS +doesn't have it, aufs doesn't set it to its address_space_operations +while the function definition itself is still alive. So the behaviour +itself will not change, and it will return an error when direct_IO is +not set. + +The lifetime of these dynamically generated operation object is +maintained by aufs branch object. When the branch is removed from aufs, +the reference counter of the object is decremented. When it reaches +zero, the dynamically generated operation object will be freed. + +This approach is designed to support AIO (io_submit), Direct I/O and +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. --- linux-5.8.0.orig/Documentation/filesystems/seq_file.rst +++ linux-5.8.0/Documentation/filesystems/seq_file.rst @@ -199,6 +199,12 @@ is a reasonable thing to do. The seq_file code will also avoid taking any other locks while the iterator is active. +The iterater value returned by start() or next() is guaranteed to be +passed to a subsequent next() or stop() call. This allows resources +such as locks that were taken to be reliably released. There is *no* +guarantee that the iterator will be passed to show(), though in practice +it often will be. + Formatted output ================ --- linux-5.8.0.orig/Documentation/filesystems/sysfs.rst +++ linux-5.8.0/Documentation/filesystems/sysfs.rst @@ -242,12 +242,10 @@ is 4096. - show() methods should return the number of bytes printed into the - buffer. This is the return value of scnprintf(). + buffer. -- show() must not use snprintf() when formatting the value to be - returned to user space. If you can guarantee that an overflow - will never happen you can use sprintf() otherwise you must use - scnprintf(). +- show() should only use sysfs_emit() or sysfs_emit_at() when formatting + the value to be returned to user space. - store() should return the number of bytes used from the buffer. If the entire buffer has been used, just return the count argument. --- linux-5.8.0.orig/Documentation/gpu/todo.rst +++ linux-5.8.0/Documentation/gpu/todo.rst @@ -273,6 +273,24 @@ Level: Advanced +Garbage collect fbdev scrolling acceleration +-------------------------------------------- + +Scroll acceleration is disabled in fbcon by hard-wiring p->scrollmode = +SCROLL_REDRAW. There's a ton of code this will allow us to remove: +- lots of code in fbcon.c +- a bunch of the hooks in fbcon_ops, maybe the remaining hooks could be called + directly instead of the function table (with a switch on p->rotate) +- fb_copyarea is unused after this, and can be deleted from all drivers + +Note that not all acceleration code can be deleted, since clearing and cursor +support is still accelerated, which might be good candidates for further +deletion projects. + +Contact: Daniel Vetter + +Level: Intermediate + idr_init_base() --------------- @@ -484,6 +502,27 @@ Level: Intermediate +Remove automatic page mapping from dma-buf importing +---------------------------------------------------- + +When importing dma-bufs, the dma-buf and PRIME frameworks automatically map +imported pages into the importer's DMA area. drm_gem_prime_fd_to_handle() and +drm_gem_prime_handle_to_fd() require that importers call dma_buf_attach() +even if they never do actual device DMA, but only CPU access through +dma_buf_vmap(). This is a problem for USB devices, which do not support DMA +operations. + +To fix the issue, automatic page mappings should be removed from the +buffer-sharing code. Fixing this is a bit more involved, since the import/export +cache is also tied to &drm_gem_object.import_attach. Meanwhile we paper over +this problem for USB devices by fishing out the USB host controller device, as +long as that supports DMA. Otherwise importing can still needlessly fail. + +Contact: Thomas Zimmermann , Daniel Vetter + +Level: Advanced + + Better Testing ============== --- linux-5.8.0.orig/Documentation/kmsg/IPVS +++ linux-5.8.0/Documentation/kmsg/IPVS @@ -0,0 +1,81 @@ +/*? Text: "%s(): NULL arg\n" */ +/*? Text: "%s(): NULL scheduler_name\n" */ +/*? Text: "%s(): [%s] pe already existed in the system\n" */ +/*? Text: "%s(): [%s] pe already linked\n" */ +/*? Text: "%s(): [%s] pe is not in the list. failed\n" */ +/*? Text: "%s(): [%s] scheduler already existed in the system\n" */ +/*? Text: "%s(): [%s] scheduler already linked\n" */ +/*? Text: "%s(): [%s] scheduler is not in the list. failed\n" */ +/*? Text: "%s(): done error\n" */ +/*? Text: "%s(): init error\n" */ +/*? Text: "%s(): lower threshold is higher than upper threshold\n" */ +/*? Text: "%s(): no memory\n" */ +/*? Text: "%s(): request for already hashed, called from %pF\n" */ +/*? Text: "%s(): request for unhash flagged, called from %pF\n" */ +/*? Text: "%s(): server weight less than zero\n" */ +/*? Text: "%s: %s %pI4:%d - %s\n" */ +/*? Text: "%s: %s [%pI6]:%d - %s\n" */ +/*? Text: "%s: %s [%pI6c]:%d - %s\n" */ +/*? Text: "%s: FWM %u 0x%08X - %s\n" */ +/*? Text: "%s: enter\n" */ +/*? Text: "%s: loaded support on port[%d] = %d\n" */ +/*? Text: "BACKUP v0, Dropping buffer bogus conn options\n" */ +/*? Text: "BACKUP v0, bogus conn\n" */ +/*? Text: "BACKUP, Dropping buffer, Err: %d in decoding\n" */ +/*? Text: "BACKUP, Dropping buffer, Unknown version %d\n" */ +/*? Text: "BACKUP, Dropping buffer, msg > buffer\n" */ +/*? Text: "BACKUP, Dropping buffer, to small\n" */ +/*? Text: "BACKUP, Invalid PE parameters\n" */ +/*? Text: "BUG control DEL with n=0 : %s:%d to %s:%d\n" */ +/*? Text: "Connection hash table configured (size=%d, memory=%ldKbytes)\n" */ +/*? Text: "Error binding address of the mcast interface\n" */ +/*? Text: "Error binding to the multicast addr\n" */ +/*? Text: "Error connecting to the multicast addr\n" */ +/*? Text: "Error during creation of socket; terminating\n" */ +/*? Text: "Error joining to the multicast group\n" */ +/*? Text: "Error setting outbound mcast interface\n" */ +/*? Text: "Failed to stop Backup Daemon\n" */ +/*? Text: "Failed to stop Master Daemon\n" */ +/*? Text: "Registered protocols (%s)\n" */ +/*? Text: "SYNC, connection pe_data invalid\n" */ +/*? Text: "Schedule: port zero only supported in persistent services, check your ipvs configuration\n" */ +/*? Text: "Scheduler module ip_vs_%s not found\n" */ +/*? Text: "There is no net ptr to find in the skb in %s() line:%d\n" */ +/*? Text: "UDP no ns data\n" */ +/*? Text: "You probably need to specify IP address on multicast interface.\n" */ +/*? Text: "[%s] pe registered.\n" */ +/*? Text: "[%s] pe unregistered.\n" */ +/*? Text: "[%s] scheduler registered.\n" */ +/*? Text: "[%s] scheduler unregistered.\n" */ +/*? Text: "can't register hooks.\n" */ +/*? Text: "can't register netlink/ioctl.\n" */ +/*? Text: "can't setup connection table.\n" */ +/*? Text: "can't setup control.\n" */ +/*? Text: "cannot register Generic Netlink interface.\n" */ +/*? Text: "cannot register sockopt.\n" */ +/*? Text: "get_ctl: len %u < %u\n" */ +/*? Text: "ip_vs_send_async error %d\n" */ +/*? Text: "ip_vs_sync_buff_create failed.\n" */ +/*? Text: "ipvs loaded.\n" */ +/*? Text: "ipvs unloaded.\n" */ +/*? Text: "length: %u != %u\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "not enough space in Netlink message\n" */ +/*? Text: "persistence engine module ip_vs_pe_%s not found\n" */ +/*? Text: "receiving message error\n" */ +/*? Text: "request control ADD for already controlled: %s:%d to %s:%d\n" */ +/*? Text: "request control DEL for uncontrolled: %s:%d to %s:%d\n" */ +/*? Text: "set_ctl: invalid protocol: %d %pI4:%d %s\n" */ +/*? Text: "set_ctl: len %u != %u\n" */ +/*? Text: "shouldn't reach here, because the box is on the half connection in the tun/dr module.\n" */ +/*? Text: "stopping backup sync thread %d ...\n" */ +/*? Text: "stopping master sync thread %d ...\n" */ +/*? Text: "sync thread started: state = BACKUP, mcast_ifn = %s, syncid = %d\n" */ +/*? Text: "sync thread started: state = MASTER, mcast_ifn = %s, syncid = %d\n" */ +/*? Text: "unknown Generic Netlink command\n" */ +/*? Text: "sync thread started: state = MASTER, mcast_ifn = %s, syncid = %d, id = %d\n" */ +/*? Text: "sync thread started: state = BACKUP, mcast_ifn = %s, syncid = %d, id = %d\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "Unknown mcast interface: %s\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/aes_s390 +++ linux-5.8.0/Documentation/kmsg/s390/aes_s390 @@ -0,0 +1,45 @@ +/*? + * Text: "Allocating XTS fallback algorithm %s failed\n" + * Severity: Error + * Parameter: + * @1: algorithm name + * Description: + * The aes_s390 module failed to allocate a software fallback for the AES + * modes that are not supported by the hardware. A possible reason for this + * problem is that the aes_generic module that provides the fallback + * algorithms is not available. + * User action: + * Ensure that the aes_generic module is available and loaded and reload + * the aes_s390 module. + */ + +/*? + * Text: "Allocating AES fallback algorithm %s failed\n" + * Severity: Error + * Parameter: + * @1: algorithm name + * Description: + * The advanced encryption standard (AES) algorithm includes three modes with + * 128-bit, 192-bit, and 256-bit keys. Your hardware system only provides + * hardware acceleration for the 128-bit mode. The aes_s390 module failed to + * allocate a software fallback for the AES modes that are not supported by the + * hardware. A possible reason for this problem is that the aes_generic module + * that provides the fallback algorithms is not available. + * User action: + * Use the 128-bit mode only or ensure that the aes_generic module is available + * and loaded and reload the aes_s390 module. + */ + +/*? + * Text: "AES hardware acceleration is only available for 128-bit keys\n" + * Severity: Informational + * Description: + * The advanced encryption standard (AES) algorithm includes three modes with + * 128-bit, 192-bit, and 256-bit keys. Your hardware system only provides + * hardware acceleration for the 128-bit key mode. The aes_s390 module + * will use the less performant software fallback algorithm for the 192-bit + * and 256-bit key modes. + * User action: + * None. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/af_iucv +++ linux-5.8.0/Documentation/kmsg/s390/af_iucv @@ -0,0 +1,23 @@ +/*? + * Text: "Application %s on z/VM guest %s exceeds message limit\n" + * Severity: Error + * Parameter: + * @1: application name + * @2: z/VM user ID + * Description: + * Messages or packets destined for the application have accumulated and + * reached the maximum value. The default for the message limit is 65535. + * You can specify a different limit as the value for MSGLIMIT within + * the IUCV statement of the z/VM virtual machine on which the application + * runs. + * User action: + * Ensure that you do not send data faster than the application retrieves + * them. Ensure that the message limit on the z/VM guest virtual machine + * on which the application runs is high enough. + */ + +/*? Text: "Attempt to release alive iucv socket %p\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/ap +++ linux-5.8.0/Documentation/kmsg/s390/ap @@ -0,0 +1,49 @@ +/*? + * Text: "%d is not a valid cryptographic domain\n" + * Severity: Warning + * Parameter: + * @1: AP domain index + * Description: + * The cryptographic domain specified for the 'domain=' module or kernel + * parameter must be an integer in the range 0 to 15. + * User action: + * Reload the cryptographic device driver with a correct module parameter. + * If the device driver has been compiled into the kernel, correct the value + * in the kernel parameter line and reboot Linux. + */ + +/*? + * Text: "The hardware system does not support AP instructions\n" + * Severity: Warning + * Description: + * The ap module addresses AP adapters through AP instructions. The hardware + * system on which the Linux instance runs does not support AP instructions. + * The ap module cannot detect any AP adapters. + * User action: + * Load the ap module only if your Linux instance runs on hardware that + * supports AP instructions. If the ap module has been compiled into the kernel, + * ignore this message. + */ + +/*? + * Text: "Registering adapter interrupts for AP device %02x.%04x failed\n" + * Severity: Error + * Parameter: + * @1: AP device ID + * @2: AP queue + * Description: + * The hardware system supports AP adapter interrupts but failed to enable + * an adapter for interrupts. Possible causes for this error are: + * i) The AP adapter firmware does not support AP interrupts. + * ii) An AP adapter firmware update to a firmware level that supports AP + * adapter interrupts failed. + * iii) The AP adapter firmware has been successfully updated to a level that + * supports AP interrupts but the new firmware has not been activated. + * User action: + * Ensure that the firmware on your AP adapters support AP interrupts and that + * any firmware updates have completed successfully. If necessary, deconfigure + * your cryptographic adapters and reconfigure them to ensure that any firmware + * updates become active, then reload the ap module. If the ap module has been + * compiled into the kernel, reboot Linux. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/appldata +++ linux-5.8.0/Documentation/kmsg/s390/appldata @@ -0,0 +1,91 @@ +/*? + * Text: "Starting the data collection for %s failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: appldata module + * @2: return code + * Description: + * The specified data collection module used the z/VM diagnose call + * DIAG 0xDC to start writing data. z/VM returned an error and the data + * collection could not start. If the return code is 5, your z/VM guest + * virtual machine is not authorized to write data records. + * User action: + * If the return code is 5, ensure that your z/VM guest virtual machine's + * entry in the z/VM directory includes the OPTION APPLMON statement. + * For other return codes see the section about DIAGNOSE Code X'DC' + * in "z/VM CP Programming Services". + */ + +/*? + * Text: "Stopping the data collection for %s failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: appldata module + * @2: return code + * Description: + * The specified data collection module used the z/VM diagnose call DIAG 0xDC + * to stop writing data. z/VM returned an error and the data collection + * continues. + * User action: + * See the section about DIAGNOSE Code X'DC' in "z/VM CP Programming Services". + */ + +/*? + * Text: "Starting a new OS data collection failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * After a CPU hotplug event, the record size for the running operating + * system data collection is no longer correct. The appldata_os module tried + * to start a new data collection with the correct record size but received + * an error from the z/VM diagnose call DIAG 0xDC. Any data collected with + * the current record size might be faulty. + * User action: + * Start a new data collection with the cappldata_os module. For information + * about starting data collections see "Device Drivers, Features, and + * Commands". For information about the return codes see the section about + * DIAGNOSE Code X'DC' in "z/VM CP Programming Services". + */ + +/*? + * Text: "Stopping a faulty OS data collection failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * After a CPU hotplug event, the record size for the running operating + * system data collection is no longer correct. The appldata_os module tried + * to stop the faulty data collection but received an error from the z/VM + * diagnose call DIAG 0xDC. Any data collected with the current record size + * might be faulty. + * User action: + * Try to restart appldata_os monitoring. For information about stopping + * and starting data collections see "Device Drivers, Features, and + * Commands". For information about the return codes see the section about + * DIAGNOSE Code X'DC' in "z/VM CP Programming Services". + */ + +/*? + * Text: "Maximum OS record size %i exceeds the maximum record size %i\n" + * Severity: Error + * Parameter: + * @1: no of bytes + * @2: no of bytes + * Description: + * The OS record size grows with the number of CPUs and is adjusted by the + * appldata_os module in response to CPU hotplug events. For more than 110 + * CPUs the record size would exceed the maximum record size of 4024 bytes + * that is supported by the z/VM hypervisor. To prevent the maximum supported + * record size from being exceeded while data collection is in progress, + * you cannot load the appldata_os module on Linux instances that are + * configured for a maximum of more than 110 CPUs. + * User action: + * If you do not want to collect operating system data, you can ignore this + * message. If you want to collect operating system data, reconfigure your + * Linux instance to support less than 110 CPUs. + */ + +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/bpf_jit +++ linux-5.8.0/Documentation/kmsg/s390/bpf_jit @@ -0,0 +1,16 @@ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ + +/*? + * Text: "Unknown opcode %02x\n" + * Severity: Error + * Parameter: + * @1: Instruction opcode + * Description: + * The BPF JIT compiler has found an unknown instruction in the BPF program + * and therefore stops the compilation. As a fallback, the interpreter is used. + * User action: + * Report this problem and the error message to your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/cio +++ linux-5.8.0/Documentation/kmsg/s390/cio @@ -0,0 +1,247 @@ +/*? + * Text: "%s is not a valid device for the cio_ignore kernel parameter\n" + * Severity: Warning + * Parameter: + * @1: device bus-ID + * Description: + * The device specification for the cio_ignore kernel parameter is + * syntactically incorrect or specifies an unknown device. This device is not + * excluded from being sensed and analyzed. + * User action: + * Correct your device specification in the kernel parameter line to have the + * device excluded when you next reboot Linux. You can write the correct + * device specification to /proc/cio_ignore to add the device to the list of + * devices to be excluded. This does not immediately make the device + * inaccessible but the device is ignored if it disappears and later reappears. + */ + +/*? + * Text: "0.%x.%04x to 0.%x.%04x is not a valid range for cio_ignore\n" + * Severity: Warning + * Parameter: + * @1: from subchannel set ID + * @2: from device number + * @3: to subchannel set ID + * @4: to device number + * Description: + * The device range specified for the cio_ignore kernel parameter is + * syntactically incorrect. No devices specified with this range are + * excluded from being sensed and analyzed. + * User action: + * Correct your range specification in the kernel parameter line to have the + * range of devices excluded when you next reboot Linux. You can write the + * correct range specification to /proc/cio_ignore to add the range of devices + * to the list of devices to be excluded. This does not immediately make the + * devices in the range inaccessible but any of these devices are ignored if + * they disappear and later reappear. + */ + +/*? + * Text: "Processing %s for channel path %x.%02x\n" + * Severity: Notice + * Parameter: + * @1: configuration change + * @2: channel subsystem ID + * @3: CHPID + * Description: + * A configuration change is in progress for the given channel path. + * User action: + * None. + */ + +/*? + * Text: "No CCW console was found\n" + * Severity: Warning + * Description: + * Linux did not find the expected CCW console and tries to use an alternative + * console. A possible reason why the console was not found is that the console + * has been specified in the cio_ignore list. + * User action: + * None, if an appropriate alternative console has been found, and you want + * to use this alternative console. If you want to use the CCW console, ensure + * that is not specified in the cio_ignore list, explicitly specify the console + * with the 'condev=' kernel parameter, and reboot Linux. + */ + +/*? + * Text: "Channel measurement facility initialized using format %s (mode %s)\n" + * Severity: Informational + * Parameter: + * @1: format + * @2: mode + * Description: + * The channel measurement facility has been initialized successfully. + * Format 'extended' should be used for z990 and later mainframe systems. + * Format 'basic' is intended for earlier mainframes. Mode 'autodetected' means + * that the format has been set automatically. Mode 'parameter' means that the + * format has been set according to the 'format=' kernel parameter. + * User action: + * None. + */ + +/*? + * Text: "The CSS device driver initialization failed with errno=%d\n" + * Severity: Alert + * Parameter: + * @1: Return code + * Description: + * The channel subsystem bus could not be established. + * User action: + * See the errno man page to find out what caused the problem. + */ + /*? Text: "%s: Got subchannel machine check but no sch_event handler provided.\n" */ + +/*? + * Text: "%s: Setting the device online failed because it is boxed\n" + * Severity: Warning + * Parameter: + * @1: Device bus-ID + * Description: + * Initialization of a device did not complete because it did not respond in + * time or it was reserved by another operating system. + * User action: + * Make sure that the device is working correctly, then try again to set it + * online. For devices that support the reserve/release mechanism (for example + * DASDs), you can try to override the reservation of the other system by + * writing 'force' to the 'online' sysfs attribute of the affected device. + */ + +/*? + * Text: "%s: Setting the device online failed because it is not operational\n" + * Severity: Warning + * Parameter: + * @1: Device bus-ID + * Description: + * Initialization of a device did not complete because it is not present or + * not operational. + * User action: + * Make sure that the device is present and working correctly, then try again + * to set it online. + */ + +/*? + * Text: "%s: The device stopped operating while being set offline\n" + * Severity: Warning + * Parameter: + * @1: Device bus-ID + * Description: + * While the device was set offline, it was not present or not operational. + * The device is now inactive, but setting it online again might fail. + * User action: + * None. + */ + +/*? + * Text: "%s: The device entered boxed state while being set offline\n" + * Severity: Warning + * Parameter: + * @1: Device bus-ID + * Description: + * While the device was set offline, it did not respond in time or it was + * reserved by another operating system. The device is now inactive, but + * setting it online again might fail. + * User action: + * None. + */ + +/*? + * Text: "Logging for subchannel 0.%x.%04x failed with errno=%d\n" + * Severity: Warning + * Parameter: + * @1: subchannel set ID + * @2: subchannel number + * @3: errno + * Description: + * Capturing model-dependent logs and traces could not be triggered for the + * specified subchannel. + * User action: + * See the errno man page to find out what caused the problem. + */ + +/*? + * Text: "Logging for subchannel 0.%x.%04x was triggered\n" + * Severity: Notice + * Parameter: + * @1: subchannel set ID + * @2: subchannel number + * Description: + * Model-dependent logs and traces may be captured for the specified + * subchannel. + * User action: + * None. + */ + +/*? + * Text: "%s: No interrupt was received within %lus (CS=%02x, DS=%02x, CHPID=%x.%02x)\n" + * Severity: Warning + * Parameter: + * @1: device number + * @2: timeout value + * @3: channel status + * @4: device status + * @5: channel subsystem ID + * @6: CHPID + * Description: + * Internal I/Os are used by the common I/O layer to ensure that devices are + * operational and accessible. + * The common I/O layer did not receive an interrupt for an internal I/O + * during the specified timeout period. + * As a result, the device might assume a state that makes the device + * unusable to Linux until the problem is resolved. + * User action: + * Make sure that the device is working correctly and try the action again. + */ + +/*? + * Text: "Link stopped: RS=%02x RSID=%04x IC=%02x IUPARAMS=%s IUNODEID=%s AUPARAMS=%s AUNODEID=%s\n" + * Severity: Error + * Parameter: + * @1: reporting source + * @2: reporting source ID + * @3: incident code + * @4: incident unit parameters + * @5: incident unit node ID + * @6: attached unit parameters + * @7: attached unit node ID + * + * Description: + * A hardware error has occurred. A unit at one end of an interface + * link has detected a failure in the link or in one of the units attached to + * the link. As a result, data transfer across the link has stopped. In the + * message text, the node IDs of involved units are represented in the + * following format: TTTTTT/MDL,MMM.PPSSSSSSSSSSSS,XXXX where TTTTTT refers to + * the machine type, MDL the model number, MMM the manufacturer, PP the + * manufacturing plant, SSSSSSSSSSSS the unit sequence number and XXXX the + * machine type-dependent physical interface number. If no data is available + * for the unit parameters or node ID field, "n/a" is used instead. + * + * User action: + * Report the problem to your support organization. + */ + +/*? + * Text: "Link degraded: RS=%02x RSID=%04x IC=%02x IUPARAMS=%s IUNODEID=%s AUPARAMS=%s AUNODEID=%s\n" + * Severity: Warning + * Parameter: + * @1: reporting source + * @2: reporting source ID + * @3: incident code + * @4: incident unit parameters + * @5: incident unit node ID + * @6: attached unit parameters + * @7: attached unit node ID + * Description: + * A hardware error has occurred. A unit at one end of an interface + * link has detected a failure in the link or in one of the units attached to + * the link. As a result, data transfer across the link is degraded. In the + * message text, the node IDs of involved units are represented in the + * following format: TTTTTT/MDL,MMM.PPSSSSSSSSSSSS,XXXX where TTTTTT refers to + * the machine type, MDL the model number, MMM the manufacturer, PP the + * manufacturing plant, SSSSSSSSSSSS the unit sequence number and XXXX the + * machine type-dependent physical interface number. If no data is available + * for the unit parameters or node ID field, "n/a" is used instead. + * + * User action: + * Report the problem to your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/cpcmd +++ linux-5.8.0/Documentation/kmsg/s390/cpcmd @@ -0,0 +1,16 @@ +/*? + * Text: "The cpcmd kernel function failed to allocate a response buffer\n" + * Severity: Warning + * Description: + * IPL code, console detection, and device drivers like vmcp or vmlogrdr use + * the cpcmd kernel function to send commands to the z/VM control program (CP). + * If a program that uses the cpcmd function does not allocate a contiguous + * response buffer below 2 GB guest real storage, cpcmd creates a bounce buffer + * to be used as the response buffer. Because of low memory or memory + * fragmentation, cpcmd could not create the bounce buffer. + * User action: + * Look for related page allocation failure messages and at the stack trace to + * find out which program or operation failed. Free some memory and retry the + * failed operation. Consider allocating more memory to your z/VM guest virtual + * machine. + */ --- linux-5.8.0.orig/Documentation/kmsg/s390/cpu +++ linux-5.8.0/Documentation/kmsg/s390/cpu @@ -0,0 +1,46 @@ +/*? + * Text: "%d configured CPUs, %d standby CPUs\n" + * Severity: Informational + * Parameter: + * @1: number of configured CPUs + * @2: number of standby CPUs + * Description: + * The kernel detected the given number of configured and standby CPUs. + * User action: + * None. + */ + +/*? + * Text: "The CPU configuration topology of the machine is:" + * Severity: Informational + * Description: + * The first six values of the topology information represent fields Mag6 to + * Mag1 of system-information block (SYSIB) 15.1.2. These fields specify the + * maximum numbers of topology-list entries (TLE) at successive topology nesting + * levels. The last value represents the MNest value of SYSIB 15.1.2 which + * specifies the maximum possible nesting that can be configured through + * dynamic changes. For details see the SYSIB 15.1.2 information in the + * "Principles of Operation." + * User action: + * None. + */ + +/*? + * Text: "CPU %i exceeds the maximum %i and is excluded from the dump\n" + * Severity: Warning + * Parameter: + * @1: CPU number + * @2: maximum CPU number + * Description: + * The Linux kernel is used as a system dumper but it runs on more CPUs than + * it has been compiled for with the CONFIG_NR_CPUS kernel configuration + * option. The system dump will be created but information on one or more + * CPUs will be missing. + * User action: + * Update the system dump kernel to a newer version that supports more + * CPUs or reduce the number of installed CPUs and reproduce the problem + * that should be analyzed. If you send the system dump that prompted this + * message to a support organization, be sure to communicate that the dump + * does not include all CPU information. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/cpum_cf +++ linux-5.8.0/Documentation/kmsg/s390/cpum_cf @@ -0,0 +1,68 @@ +/*? + * Text: "Enabling the performance measuring unit failed with rc=%x\n" + * Severity: Error + * Parameter: + * @1: error condition + * Description: + * The device driver failed to enable CPU counter sets with the + * load counter controls (lcctl) instruction. + * See the section about lcctl in "The Load-Program-Parameter and the CPU-Measurement + * Facilities", SA23-2260, for an explanation of the error conditions. + * User action: + * Stop the performance measurement programs and try again. + */ + +/*? + * Text: "Disabling the performance measuring unit failed with rc=%x\n" + * Severity: Error + * Parameter: + * @1: error condition + * Description: + * The device driver failed to disable CPU counter sets with the + * load counter controls (lcctl) instruction. + * See the section about lcctl in "The Load-Program-Parameter and the CPU-Measurement + * Facilities", SA23-2260, for an explanation of the error conditions. + * User action: + * Stop the performance measurement programs and try again. + */ + +/*? + * Text: "Registering the cpum_cf PMU failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: error code + * Description: + * The device driver could not register the Performance Measurement Unit (PMU) + * for the CPU-measurement counter facility. + * A possible cause of this problem is memory constraints. + * User action: + * If the error code is -12 (ENOMEM), consider assigning more memory + * to your Linux instance. + */ + +/*? + * Text: "CPU[%i] Counter data was lost\n" + * Severity: Error + * Parameter: + * @1: cpu number + * Description: + * CPU counter data was lost because of machine internal + * high-priority activities. + * User action: + * None. + */ + +/*? + * Text: "Registering for CPU-measurement alerts failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: error code + * Description: + * The device driver could not register to receive CPU-measurement alerts. + * Alerts make you aware of measurement errors. + * A possible cause of this problem is memory constraints. + * User action: + * If the error code is -12 (ENOMEM), consider assigning more memory + * to your Linux instance. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/cpum_sf +++ linux-5.8.0/Documentation/kmsg/s390/cpum_sf @@ -0,0 +1,104 @@ +/*? + * Text: "The sampling buffer limits have changed to: min=%lu max=%lu (diag=x%lu)\n" + * Severity: Informational + * Parameter: + * @1: minimum size in sample-data-blocks + * @2: maximum size in sample-data-blocks + * @3: size factor for buffering diagnostic-sampling data entries + * Description: + * The minimum or maximum size limit for the sampling facility buffer was + * changed. The change is effective immediately. + * User action: + * None. + */ + +/*? + * Text: "Switching off the sampling facility failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: error condition + * Description: + * The CPU-measurement sampling facility could not be switched off and continues + * to run. For details, see LOAD SAMPLING CONTROLS in + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * If this problem persists, reboot your Linux instance. + */ + +/*? + * Text: "Sample data was lost\n" + * Severity: Error + * Description: + * Sample data was lost because of machine-internal high-priority activities. + * The sampling facility is stopped. + * User action: + * End all performance measurement sessions. Discard the measurement data, + * which are likely to be flawed. Repeat your measurements. + * If the problem persists, contact your hardware administrator. + */ + +/*? + * Text: "Sampling facility support for perf is not available: reason=%04x\n" + * Severity: Error + * Parameter: + * @1: reason code + * Description: + * The device driver could not initialize the sampling facility support. + * Possible reason codes are: + * 0001: The device driver failed to query CPU-measurement sampling facility + * information. + * + * 0002: The device driver does not support the basic-sampling function that + * is available on the LPAR within which the Linux instance runs. + * + * 0003: The device driver could not register to receive CPU-measurement alerts. + * A possible cause of this problem is memory constraints. + * + * 0004: The device driver could not register the Performance Measurement Unit + * (PMU) for the CPU-measurement sampling facility. + * A possible cause of this problem is memory constraints. + * User action: + * Consider assigning more memory to your Linux instance. + */ + +/*? + * Text: "Loading sampling controls failed: op=%i err=%i\n" + * Severity: Error + * Parameter: + * @1: Type of operation + * @2: Error condition + * Description: + * The sampling facility support could not load sampling controls to enable + * (operation type 1) or disable (operation type 2) the CPU-measurement sampling + * facility. For details of the error condition, see LOAD SAMPLING CONTROLS in + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * If the problem persists, reboot your Linux instance. + */ + +/*? + * Text: "A sampling buffer entry is incorrect (alert=0x%x)\n" + * Severity: Error + * Parameter: + * @1: Alert code + * Description: + * An incorrect sampling facility buffer entry was detected. The alert code + * indicates the root cause, for example, an incorrect entry address or an + * incorrect sample-data-block-table entry. + * User action: + * End active performance measurement sessions, for example, perf processes. If + * the problem persists, reboot your Linux instance. + */ + +/*? + * Text: "Registering for s390dbf failed\n" + * Severity: Error + * Description: + * The device driver failed to register for the s390 debug feature. You will + * not receive any debug information. A possible cause of this problem is + * memory constraints. + * User action: + * Consider assigning more memory + * to your Linux instance. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/crc32-vx +++ linux-5.8.0/Documentation/kmsg/s390/crc32-vx @@ -0,0 +1 @@ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/ctcm +++ linux-5.8.0/Documentation/kmsg/s390/ctcm @@ -0,0 +1,202 @@ +/*? + * Text: "%s: An I/O-error occurred on the CTCM device\n" + * Severity: Error + * Parameter: + * @1: bus ID of the CTCM device + * Description: + * An I/O error was detected on one of the subchannels of the CTCM device. + * Depending on the error, the CTCM device driver might attempt an automatic + * recovery. + * User action: + * Check the status of the CTCM device, for example, with ifconfig. If the + * device is not operational, perform a manual recovery. See "Device Drivers, + * Features, and Commands" for details about how to recover a CTCM device. + */ + +/*? + * Text: "%s: An adapter hardware operation timed out\n" + * Severity: Error + * Parameter: + * @1: bus ID of the CTCM device + * Description: + * The CTCM device uses an adapter to physically connect to its communication + * peer. An operation on this adapter timed out. + * User action: + * Check the status of the CTCM device, for example, with ifconfig. If the + * device is not operational, perform a manual recovery. See "Device Drivers, + * Features, and Commands" for details about how to recover a CTCM device. + */ + +/*? + * Text: "%s: An error occurred on the adapter hardware\n" + * Severity: Error + * Parameter: + * @1: bus ID of the CTCM device + * Description: + * The CTCM device uses an adapter to physically connect to its communication + * peer. An operation on this adapter returned an error. + * User action: + * Check the status of the CTCM device, for example, with ifconfig. If the + * device is not operational, perform a manual recovery. See "Device Drivers, + * Features, and Commands" for details about how to recover a CTCM device. + */ + +/*? + * Text: "%s: The communication peer has disconnected\n" + * Severity: Notice + * Parameter: + * @1: channel ID + * Description: + * The remote device has disconnected. Possible reasons are that the remote + * interface has been closed or that the operating system instance with the + * communication peer has been rebooted or shut down. + * User action: + * Check the status of the peer device. Ensure that the peer operating system + * instance is running and that the peer interface is operational. + */ + +/*? + * Text: "%s: The remote operating system is not available\n" + * Severity: Notice + * Parameter: + * @1: channel ID + * Description: + * The operating system instance with the communication peer has disconnected. + * Possible reasons are that the operating system instance has been rebooted + * or shut down. + * User action: + * Ensure that the peer operating system instance is running and that the peer + * interface is operational. + */ + +/*? + * Text: "%s: The adapter received a non-specific IRQ\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the CTCM device + * Description: + * The adapter hardware used by the CTCM device received an IRQ that cannot + * be mapped to a particular device. This is a hardware problem. + * User action: + * Check the status of the CTCM device, for example, with ifconfig. Check if + * the connection to the remote device still works. If the CTCM device is not + * operational, set it offline and back online. If this does not resolve the + * problem, perform a manual recovery. See "Device Drivers, Features, and + * Commands" for details about how to recover a CTCM device. If this problem + * persists, gather Linux debug data, collect the hardware logs, and report the + * problem to your support organization. + */ + +/*? + * Text: "%s: A check occurred on the subchannel\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the CTCM device + * Description: + * A check condition has been detected on the subchannel. + * User action: + * Check if the connection to the remote device still works. If the CTCM device + * is not operational, set it offline and back online. If this does not resolve + * the problem, perform a manual recovery. See "Device Drivers, Features, and + * Commands" for details about how to recover a CTCM device. If this problem + * persists, gather Linux debug data and report the problem to your support + * organization. + */ + +/*? + * Text: "%s: The communication peer is busy\n" + * Severity: Informational + * Parameter: + * @1: channel ID + * Description: + * A busy target device was reported. This might be a temporary problem. + * User action: + * If this problem persists or is reported frequently ensure that the target + * device is working properly. + */ + +/*? + * Text: "%s: The specified target device is not valid\n" + * Severity: Error + * Parameter: + * @1: channel ID + * Description: + * A target device was called with a faulty device specification. This is an + * adapter hardware problem. + * User action: + * Gather Linux debug data, collect the hardware logs, and contact IBM support. + */ + +/*? + * Text: "An I/O operation resulted in error %04x\n" + * Severity: Error + * Parameter: + * @1: channel ID + * @2: error information + * Description: + * A hardware operation ended with an error. + * User action: + * Check the status of the CTCM device, for example, with ifconfig. If the + * device is not operational, perform a manual recovery. See "Device Drivers, + * Features, and Commands" for details about how to recover a CTCM device. + * If this problem persists, gather Linux debug data, collect the hardware logs, + * and report the problem to your support organization. + */ + +/*? + * Text: "%s: Initialization failed with RX/TX init handshake error %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the CTCM device + * @2: error information + * Description: + * A problem occurred during the initialization of the connection. If the + * connection can be established after an automatic recovery, a success message + * is issued. + * User action: + * If the problem is not resolved by the automatic recovery process, check the + * local and remote device. If this problem persists, gather Linux debug data + * and report the problem to your support organization. + */ + +/*? + * Text: "%s: The network backlog for %s is exceeded, package dropped\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the CTCM device + * @2: calling function + * Description: + * There is more network traffic than can be handled by the device. The device + * is closed and some data has not been transmitted. The device might be + * recovered automatically. + * User action: + * Investigate and resolve the congestion. If necessary, set the device + * online to make it operational. + */ + +/*? + * Text: "%s: The XID used in the MPC protocol is not valid, rc = %d\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the CTCM device + * @2: return code + * Description: + * The exchange identification (XID) used by the CTCM device driver when + * in MPC mode is not valid. + * User action: + * Note the error information provided with this message and contact your + * support organization. + */ + +/*? Text: "CTCM driver unloaded\n" */ +/*? Text: "%s: %s Internal error: net_device is NULL, ch = 0x%p\n" */ +/*? Text: "%s / Initializing the ctcm device driver failed, ret = %d\n" */ +/*? Text: "%s: %s: Internal error: Can't determine channel for interrupt device %s\n" */ +/*? Text: "CTCM driver initialized\n" */ +/*? Text: "%s: setup OK : r/w = %s/%s, protocol : %d\n" */ +/*? Text: "%s: Connected with remote side\n" */ +/*? Text: "%s: Restarting device\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/dasd +++ linux-5.8.0/Documentation/kmsg/s390/dasd @@ -0,0 +1,704 @@ +/* dasd_ioctl */ + +/*? + * Text: "%s: The DASD has been put in the quiesce state\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * No I/O operation is possible on this device. + * User action: + * Resume the DASD to enable I/O operations. + */ + +/*? + * Text: "%s: I/O operations have been resumed on the DASD\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD is no longer in state quiesce and I/O operations can be performed + * on the device. + * User action: + * None. + */ + +/*? + * Text: "%s: The DASD cannot be formatted while it is enabled\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD you try to format is enabled. Enabled devices cannot be formatted. + * User action: + * Contact the owner of the formatting tool. + */ + +/*? + * Text: "%s: The specified DASD is a partition and cannot be formatted\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD you try to format is a partition. Partitions cannot be formatted + * separately. You can only format a complete DASD including all its partitions. + * User action: + * Format the complete DASD. + * ATTENTION: Formatting irreversibly destroys all data on all partitions + * of the DASD. + */ + +/*? + * Text: "%s: The specified DASD is a partition and cannot be checked\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD you try to check is a partition. Partitions cannot be checked + * separately. You can only check a complete DASD including all its partitions. + * User action: + * Check the complete DASD. + */ + +/*? + * Text: "%s: Formatting unit %d failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: start track + * @3: return code + * Description: + * The formatting process might have been interrupted by a signal, for example, + * CTRL+C. If the process was not interrupted intentionally, an I/O error + * might have occurred. + * User action: + * Retry to format the device. If the error persists, check the log file for + * related error messages. If you cannot resolve the error, note the return + * code and contact your support organization. + */ + + +/* dasd */ + +/*? + * Text: "%s: Cancelling request %p failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to request + * @3: return code of previous function + * Description: + * In response to a user action, the DASD device driver tried but failed to + * cancel a previously started I/O operation. + * User action: + * Try the action again. + */ + +/*? + * Text: "%s: Flushing the DASD request queue failed for request %p\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to request + * Description: + * As part of the unloading process, the DASD device driver flushes the + * request queue. This failed because a previously started I/O operation + * could not be canceled. + * User action: + * Try again to unload the DASD device driver or to shut down Linux. + */ + +/*? + * Text: "The DASD device driver could not be initialized\n" + * Severity: Informational + * Description: + * The initialization of the DASD device driver failed because of previous + * errors. + * User action: + * Check for related previous error messages. + */ + +/*? + * Text: "%s: Accessing the DASD failed because it is in probeonly mode\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * The dasd= module or kernel parameter specified the probeonly attribute for + * the DASD you are trying to access. The DASD device driver cannot access + * DASDs that are in probeonly mode. + * User action: + * Change the dasd= parameter as to omit probeonly for the DASD and reload + * the DASD device driver. If the DASD device driver has been compiled into + * the kernel, reboot Linux. + */ + +/*? + * Text: "%s: cqr %p timed out (%lus), %i retries remaining\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: request + * @3: timeout value + * @4: number of retries left + * Description: + * A try of the error recovery procedure (ERP) for the channel queued request + * (cqr) timed out and failed to recover the error. ERP continues for the DASD. + * User action: + * Ignore this message if it occurs infrequently and if the recovery succeeds + * during one of the retries. If this error persists, check for related + * previous error messages and report the problem to your support organization. + * + * The timeout can be changed by writing a new value to the sysfs 'expires' attribute of the DASD. The value specifies the timeout in seconds. + */ + +/*? + * Text: "%s: cqr %p timed out (%lus) but cannot be ended, retrying in 5 s\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: request + * @3: timeout value + * Description: + * A try of the error recovery procedure (ERP) for the channel queued request + * (cqr) timed out and failed to recover the error. The I/O request submitted + * during the try could not be canceled. The ERP waits for 5 seconds before + * trying again. + * User action: + * Ignore this message if it occurs infrequently and if the recovery succeeds + * during one of the retries. If this error persists, check for related + * previous error messages and report the problem to your support organization. + * + * The timeout can be changed by writing a new value to the sysfs 'expires' attribute of the DASD. The value specifies the timeout in seconds. + */ + +/*? + * Text: "%s: The DASD cannot be set offline while it is in use\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD cannot be set offline because it is in use by an internal process. + * An action to free the DASD might not have completed yet. + * User action: + * Wait some time and set the DASD offline later. + */ + +/*? + * Text: "%s: The DASD cannot be set offline with open count %i\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: count + * Description: + * The DASD is being used by one or more processes and cannot be set offline. + * User action: + * Ensure that the DASD is not in use anymore, for example, unmount all + * partitions. Then try again to set the DASD offline. + */ + +/*? + * Text: "%s: Setting the DASD online failed with rc=%d\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * Description: + * The DASD could not be set online because of previous errors. + * User action: + * Look for previous error messages. If you cannot resolve the error, note + * the return code and contact your support organization. + */ + +/*? + * Text: "%s Setting the DASD online with discipline %s failed with rc=%i\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: discipline + * @3: return code + * Description: + * The DASD could not be set online because of previous errors. + * User action: + * Look for previous error messages. If you cannot resolve the error, note the + * return code and contact your support organization. + */ + +/*? + * Text: "%s Setting the DASD online failed because of missing DIAG discipline\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD was to be set online with discipline DIAG but this discipline of + * the DASD device driver is not available. + * User action: + * Ensure that the dasd_diag_mod module is loaded. If your Linux system does + * not include this module, you cannot set DASDs online with the DIAG + * discipline. + */ + +/*? + * Text: "%s Setting the DASD online failed because of a missing discipline\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD was to be set online with a DASD device driver discipline that + * is not available. + * User action: + * Ensure that all DASD modules are loaded correctly. + */ + +--------------------------- + +/*? + * Text: "The statistics feature has been switched off\n" + * Severity: Informational + * Description: + * The statistics feature of the DASD device driver has been switched off. + * User action: + * None. + */ + +/*? + * Text: "The statistics feature has been switched on\n" + * Severity: Informational + * Description: + * The statistics feature of the DASD device driver has been switched on. + * User action: + * None. + */ + +/*? + * Text: "The statistics have been reset\n" + * Severity: Informational + * Description: + * The DASD statistics data have been reset. + * User action: + * None. + */ + +/*? + * Text: "%s is not a supported value for /proc/dasd/statistics\n" + * Severity: Warning + * Parameter: + * @1: value + * Description: + * An incorrect value has been written to /proc/dasd/statistics. + * The supported values are: 'set on', 'set off', and 'reset'. + * User action: + * Write a supported value to /proc/dasd/statistics. + */ + +/*? + * Text: "%s is not a valid device range\n" + * Severity: Error + * Parameter: + * @1: range + * Description: + * A device range specified with the dasd= parameter is not valid. + * User action: + * Examine the dasd= parameter and correct the device range. + */ + +/*? + * Text: "The probeonly mode has been activated\n" + * Severity: Informational + * Description: + * The probeonly mode of the DASD device driver has been activated. In this + * mode the device driver rejects any 'open' syscalls with EPERM. + * User action: + * None. + */ + +/*? + * Text: "The IPL device is not a CCW device\n" + * Severity: Error + * Description: + * The value for the dasd= parameter contains the 'ipldev' keyword. During + * the boot process this keyword is replaced with the device from which the + * IPL was performed. The 'ipldev' keyword is not valid if the IPL device is + * not a CCW device. + * User action: + * Do not specify the 'ipldev' keyword when performing an IPL from a device + * other than a CCW device. + */ + +/*? + * Text: "A closing parenthesis ')' is missing in the dasd= parameter\n" + * Severity: Warning + * Description: + * The specification for the dasd= kernel or module parameter has an opening + * parenthesis '(' * without a matching closing parenthesis ')'. + * User action: + * Correct the parameter value. + */ + +/*? + * Text: "The autodetection mode has been activated\n" + * Severity: Informational + * Description: + * The autodetection mode of the DASD device driver has been activated. In + * this mode the DASD device driver sets all detected DASDs online. + * User action: + * None. + */ + +/*? + * Text: "%*s is not a supported device option\n" + * Severity: Warning + * Parameter: + * @1: length of option code + * @2: option code + * Description: + * The dasd= parameter includes an unknown option for a DASD or a device range. + * Options are specified in parenthesis and immediately follow a device or + * device range. + * User action: + * Check the dasd= syntax and remove any unsupported options from the dasd= + * parameter specification. + */ + +/*? + * Text: "PAV support has be deactivated\n" + * Severity: Informational + * Description: + * The 'nopav' keyword has been specified with the dasd= kernel or module + * parameter. The Parallel Access Volume (PAV) support of the DASD device + * driver has been deactivated. + * User action: + * None. + */ + +/*? + * Text: "'nopav' is not supported on z/VM\n" + * Severity: Informational + * Description: + * For Linux instances that run as guest operating systems of the z/VM + * hypervisor Parallel Access Volume (PAV) support is controlled by z/VM not + * by Linux. + * User action: + * Remove 'nopav' from the dasd= module or kernel parameter specification. + */ + +/*? + * Text: "High Performance FICON support has been deactivated\n" + * Severity: Informational + * Description: + * The 'nofcx' keyword has been specified with the dasd= kernel or module + * parameter. The High Performance FICON (transport mode) support of the DASD + * device driver has been deactivated. + * User action: + * None. + */ + +/*? + * Text: "The dasd= parameter value %s has an invalid ending\n" + * Severity: Warning + * Parameter: + * @1: parameter value + * Description: + * The specified value for the dasd= kernel or module parameter is not correct. + * User action: + * Check the module or the kernel parameter. + */ + +/*? + * Text: "Registering the device driver with major number %d failed\n" + * Severity: Warning + * Parameter: + * @1: DASD major + * Description: + * Major number 94 is reserved for the DASD device driver. The DASD device + * driver failed to register with this major number. Another device driver + * might have used major number 94. + * User action: + * Determine which device driver uses major number 94 instead of the DASD + * device driver and unload this device driver. Then try again to load the + * DASD device driver. + */ + +/*? + * Text: "%s: default ERP has run out of retries and failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The error recovery procedure (ERP) tried to recover an error but the number + * of retries for the I/O was exceeded before the error could be resolved. + * User action: + * Check for related previous error messages. + */ + +/*? + * Text: "%s: Unable to terminate request %p on suspend\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to request + * Description: + * As part of the suspend process, the DASD device driver terminates requests + * on the request queue. This failed because a previously started I/O operation + * could not be canceled. The suspend process will be stopped. + * User action: + * Try again to suspend the system. + */ + +/*? + * Text: "%s: ERP failed for the DASD\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * An error recovery procedure (ERP) was performed for the DASD but failed. + * User action: + * Check the message log for previous related error messages. + */ + +/*? + * Text: "%s: An error occurred in the DASD device driver, reason=%s\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: reason code + * Description: + * This problem indicates a program error in the DASD device driver. + * User action: + * Note the reason code and contact your support organization. +*/ + +/*? + * Text: "%s: No operational channel path is left for the device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * All channel paths to the device have become non-operational. The DASD + * device driver suspends I/O operations and queues I/O requests for this + * device until at least one channel path becomes operational again. + * User action: + * Ensure that each channel path to the device has been set up correctly + * and that the related physical cable connections are in place. + */ + +/*? + * Text: "%s: No verified channel paths remain for the device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * All verified channel paths to the device have become non-operational. + * Any other paths to the device have previously been identified as not usable. + * The DASD device driver suspends I/O operations and queues I/O requests + * for this device until at least one channel path becomes operational + * again. + * User action: + * Ensure that each channel path to the device has been set up correctly + * and that the related physical cable connections are in place. + * Set all paths to the device offline and online again to repeat the path + * verification. Alternatively, set the device offline and online again to + * verify all available paths for this device. + * If this problem persists, gather Linux debug data and report the problem + * to your support organization. + */ + +/*? + * Text: "%s: A channel path to the device has become operational\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * At least one channel path of this device has become operational again. + * The DASD device driver resumes I/O operations to the device and processes + * the I/O requests that were queued while there was no operational channel path. + * User action: + * None. + */ + +------------------------------------------------------------------------------------ +/* dasd_diag */ + +/*? + * Text: "%s: A 64-bit DIAG call failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * 64-bit DIAG calls require a 64-bit z/VM version. + * User action: + * Use z/VM 5.2 or later or set the sysfs 'use_diag' attribute of the DASD to 0 + * to switch off DIAG. + */ + +/*? + * Text: "%s: Accessing the DASD failed because of an incorrect format (rc=%d)\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * Description: + * The format of the DASD is not correct. + * User action: + * Check the device format. For details about the return code see the + * section about the INITIALIZE function for DIAGNOSE Code X'250' + * in "z/VM CP Programming Services". If you cannot resolve the error, note + * the return code and contact your support organization. + */ + +/*? + * Text: "%s: New DASD with %ld byte/block, total size %ld KB%s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * @2: bytes per block + * @3: size + * @4: access mode + * Description: + * A DASD with the indicated block size and total size has been set online. + * If the DASD is configured as read-only to the real or virtual hardware, + * the message includes an indication of this hardware access mode. The + * hardware access mode is independent from the 'readonly' attribute of + * the device in sysfs. + * User action: + * None. + */ + +/*? + * Text: "%s: DIAG ERP failed with rc=%d\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * Description: + * An error in the DIAG processing could not be recovered by the error + * recovery procedure (ERP) of the DIAG discipline. + * User action: + * Note the return code, check for related I/O errors, and report this problem + * to your support organization. + */ + +/*? + * Text: "%s: DIAG initialization failed with rc=%d\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * Description: + * Initializing the DASD with the DIAG discipline failed. Possible reasons for + * this problem are that the device has a device type other than FBA or ECKD, + * or has a block size other than one of the supported sizes: + * 512 byte, 1024 byte, 2048 byte, or 4096 byte. + * User action: + * Ensure that the device can be written to and has a supported device type + * and block size. For details about the return code see the section about + * the INITIALIZE function for DIAGNOSE Code X'250' in "z/VM CP Programming + * Services". If you cannot resolve the error, note the error code and contact + * your support organization. + */ + +/*? + * Text: "%s: Device type %d is not supported in DIAG mode\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: device type + * Description: + * Only DASD of type FBA and ECKD are supported in DIAG mode. + * User action: + * Set the sysfs 'use_diag' attribute of the DASD to 0 and try again to access + * the DASD. + */ + +/*? + * Text: "Discipline %s cannot be used without z/VM\n" + * Severity: Informational + * Parameter: + * @1: discipline name + * Description: + * The discipline that is specified with the dasd= kernel or module parameter + * is only available for Linux instances that run as guest operating + * systems of the z/VM hypervisor. + * User action: + * Remove the unsupported discipline from the parameter string. + */ + +/*? + * Text: "%s: The access mode of a DIAG device changed to read-only\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A device changed its access mode from writeable to + * read-only while in use. + * User action: + * Set the device offline, ensure that the device is configured correctly in + * z/VM, then set the device online again. + */ + +------------------------------------------------------------------------------------ +/* dasd_erp */ + +/*? + * Text: "%s: A timeout error occurred for cqr %p\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to request + * Description: + * A channel queued request (cqr) failed because it timed out. + * One possible reason for this error is that a request did not + * complete within the timeout interval specified for the DASD. + * The timeout interval is set as the value of the 'timeout' sysfs + * attribute of a DASD. A value of 0 disables the timeout function. + * The timeout function can be used; for example, by mirroring setups; + * to quickly process a request queue for a DASD that has become unavailable. + * User action: + * Check the message log for previous related error messages. Verify + * that the storage server and the connection from host to storage + * server are operational. If the 'timeout' sysfs attribute of the + * DASD has been set to a value other than 0, verify that this + * setting is intentional and change it if required. + */ + +/*? + * Text: "%s: A transport error occurred for cqr %p\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to request + * Description: + * A channel queued request (cqr) failed because the connection to the + * device was lost and the 'failfast' flag is set for the request. + * This flag can result from, for example: + * + * - A software layer above the DASD device driver; + * for example, in a host based mirroring setup. + * + * - Value 1 for the 'failfast' sysfs attribute of the DASD. + * This setting applies to all requests on the DASD. + * + * User action: + * Ensure that each channel path to the device has been set up + * correctly and that the related physical cable connections are in + * place. If the 'failfast' attribute of the DASD is set to 1, + * verify that this setting is intentional and change it to 0 if required. + */ + +/*? + * Text: "%s Setting the DASD online failed because the required module %s could not be loaded (rc=%d)\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: kernel module name + * @3: return code + * Description: + * The DASD was to be set online with discipline DIAG but this discipline of + * the DASD device driver is not available and an attempt to load the + * corresponding kernel module failed with the specified return code. + * + * User action: + * Ensure that the kernel module with the specified name is correctly installed + * or set the sysfs 'use_diag' attribute of the DASD to 0 to switch off DIAG. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/dasd-eckd +++ linux-5.8.0/Documentation/kmsg/s390/dasd-eckd @@ -0,0 +1,2154 @@ +/* dasd_eckd */ + +/*? + * Text: "%s: ERP failed for the DASD\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * An error recovery procedure (ERP) was performed for the DASD but failed. + * User action: + * Check the message log for previous related error messages. + */ + +/*? + * Text: "%s: An error occurred in the DASD device driver, reason=%s\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: reason code + * Description: + * This problem indicates a program error in the DASD device driver. + * User action: + * Note the reason code and contact your support organization. +*/ + +/*? + * Text: "%s: Allocating memory for private DASD data failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD device driver maintains data structures for each DASD it manages. + * There is not enough memory to allocate these data structures for one or + * more DASD. + * User action: + * Free some memory and try the operation again. + */ + +/*? + * Text: "%s: DASD with %d KB/block, %d KB total size, %d KB/track, %s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * @2: block size + * @3: DASD size + * @4: track size + * @5: disc layout + * Description: + * A DASD with the shown characteristics has been set online. + * User action: + * None. + */ + +/*? + * Text: "%s: Start track number %u used in formatting is too big\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: track number + * Description: + * The DASD format I/O control was used incorrectly by a formatting tool. + * User action: + * Contact the owner of the formatting tool. + */ + +/*? + * Text: "%s: Stop track number %u used in formatting is too big\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: track number + * Description: + * The DASD format I/O control was used incorrectly by a formatting tool. + * User action: + * Contact the owner of the formatting tool. + */ + +/*? + * Text: "%s: The DASD is not formatted\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A DASD has been set online but it has not been formatted yet. You must + * format the DASD before you can use it. + * User action: + * Format the DASD, for example, with dasdfmt. + */ + +/*? + * Text: "%s: 0x%x is not a known command\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: command + * Description: + * This problem is likely to be caused by a programming error. + * User action: + * Contact your support organization. + */ + +/*? + * Text: "%s: Track 0 has no records following the VTOC\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * Linux has identified a volume table of contents (VTOC) on the DASD but + * cannot read any data records following the VTOC. A possible cause of this + * problem is that the DASD has been used with another System z operating + * system. + * User action: + * Format the DASD for usage with Linux, for example, with dasdfmt. + * ATTENTION: Formatting irreversibly destroys all data on the DASD. + */ + +/*? + * Text: "%s: An I/O control call used incorrect flags 0x%x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: flags + * Description: + * The DASD format I/O control was used incorrectly. + * User action: + * Contact the owner of the formatting tool. + */ + +/*? + * Text: "%s: New DASD %04X/%02X (CU %04X/%02X) with %d cylinders, %d heads, %d sectors%s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * @2: device type + * @3: device model + * @4: control unit type + * @5: control unit model + * @6: number of cylinders + * @7: tracks per cylinder + * @8: sectors per track + * @9: access mode + * Description: + * A DASD with the shown characteristics has been set online. + * If the DASD is configured as read-only to the real or virtual hardware, + * the message includes an indication of this hardware access mode. The + * hardware access mode is independent from the 'readonly' attribute of + * the device in sysfs. + * User action: + * None. + */ + +/*? + * Text: "%s: The disk layout of the DASD is not supported\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD device driver only supports the following disk layouts: CDL, LDL, + * FBA, CMS, and CMS RESERVED. + * User action: + * None. + */ + +/*? + * Text: "%s: Start track %u used in formatting exceeds end track\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: track number + * Description: + * The DASD format I/O control was used incorrectly by a formatting tool. + * User action: + * Contact the owner of the formatting tool. + */ + +/*? + * Text: "%s: The DASD cache mode was set to %x (%i cylinder prestage)\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * @2: operation mode + * @3: number of cylinders + * Description: + * The DASD cache mode has been changed. See the storage system documentation + * for information about the different cache operation modes. + * User action: + * None. + */ + +/*? + * Text: "%s: The DASD cannot be formatted with block size %u\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: block size + * Description: + * The block size specified for a format instruction is not valid. The block + * size must be between 512 and 4096 byte and must be a power of 2. + * User action: + * Call the format command with a supported block size. + */ + +/*? + * Text: "%s: The UID of the DASD has changed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The Unique Identifier (UID) of a DASD that is currently in use has changed. + * This indicates that the physical disk has been replaced. + * User action: + * None if the replacement was intentional. + * If the disk change is not expected, stop using the disk to prevent possible + * data loss. +*/ + + +/* dasd_3990_erp */ + +/*? + * Text: "%s: is offline or not installed - INTERVENTION REQUIRED!!\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD to be accessed is not in an accessible state. The I/O operation + * will wait until the device is operational again. This is an operating system + * independent message that is issued by the storage system. + * User action: + * Make the DASD accessible again. For details see the storage system + * documentation. + */ + +/*? + * Text: "%s: The DASD cannot be reached on any path (lpum=%x/opm=%x)\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: last path used mask + * @3: online path mask + * Description: + * After a path to the DASD failed, the error recovery procedure of the DASD + * device driver tried but failed to reconnect the DASD through an alternative + * path. + * User action: + * Ensure that the cabling between the storage server and the mainframe + * system is securely in place. Check the file systems on the DASD when it is + * accessible again. + */ + +/*? + * Text: "%s: Unable to allocate DCTL-CQR\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an internal error. + * User action: + * Contact your support organization. + */ + +/*? + * Text: "%s: FORMAT 0 - Invalid Parameter\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A data argument of a command is not valid. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - DPS Installation Check\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This operating system independent message is issued by the storage system + * for one of the following reasons: + * - A 3380 Model D or E DASD does not have the Dynamic Path Selection (DPS) + * feature in the DASD A-unit. + * - The device type of an attached DASD is not supported by the firmware. + * - A type 3390 DASD is attached to a 3 MB channel. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 2 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Drive motor switch is off\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - CCW Count less than required\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The CCW count of a command is less than required. This is an operating + * system independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Channel requested ... %02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: reason code + * Description: + * This is an operating system independent message that is issued by the + * storage system. The possible reason codes indicate the following problems: + * 00 No Message. + * 01 The channel has requested unit check sense data. + * 02 The channel has requested retry and retry is exhausted. + * 03 A SA Check-2 error has occurred. This sense is presented with + * Equipment Check. + * 04 The channel has requested retry and retry is not possible. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Status Not As Required: reason %02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: reason code + * Description: + * This is an operating system independent message that is issued by the + * storage system. There are several potential reasons for this message; + * byte 8 contains the reason code. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Device status 1 not valid\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Storage Path Restart\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * An operation for an active channel program was queued in a Storage Control + * when a warm start was received by the path. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Reset Notification\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A system reset or its equivalent was received on an interface. The Unit + * Check that generates this sense is posted to the next channel initiated + * selection following the resetting event. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Invalid Command Sequence\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * An incorrect sequence of commands has occurred. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Missing device address bit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Subsystem Processing Error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A firmware logic error has been detected. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Seek incomplete\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Invalid Command\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A command was issued that is not in the 2107/1750 command set. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Command Invalid on Secondary Address\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A command or order not allowed on a PPRC secondary device has been received + * by the secondary device. This is an operating system independent message + * that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Invalid Defective/Alternate Track Pointer\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A defective track has been accessed. The subsystem generates an invalid + * Defective/Alternate Track Pointer as a part of RAID Recovery. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Channel Returned with Incorrect retry CCW\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A command portion of the CCW returned after a command retry sequence does + * not match the command for which retry was signaled. This is an operating + * system independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Diagnostic of Special Command Violates File Mask\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A command is not allowed under the Access Authorization specified by the + * File Mask. This is an operating system independent message that is issued + * by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Head address does not compare\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Device did not respond to selection\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Device check-2 error or Set Sector is not complete\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Device Error Source\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The device has completed soft error logging. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Data Pinned for Device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * Modified data in cache or in persistent storage exists for the DASD. The + * data cannot be destaged to the device. This track is the first track pinned + * for this device. This is an operating system independent message that is + * issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel C\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Device Status 1 not as expected\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 0 - Device Fenced - device = %02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: sense data byte 4 + * Description: + * The device shown in sense byte 4 has been fenced. This is an operating + * system independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Interruption cannot be reset\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Index missing\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - DASD Fast Write inhibited\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * DASD Fast Write is not allowed because of a nonvolatile storage battery + * check condition. This is an operating system independent message that is + * issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Invalid tag-in for an extended command sequence\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Key area error; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Count area error; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Track physical address did not compare\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 2 - 3990 check-2 error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Offset active cannot be reset\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - RCC 1 and RCC 2 sequences not successful\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in count address area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Data area error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel A\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in count address area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the key area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Caching status reset to default\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The storage director has assigned two new subsystem status devices and + * resets the status to its default value. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the data area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Device not ready\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in key area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - DASD controller failed to set or reset the long busy latch\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 1 - Cylinder address did not compare\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 3 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in data area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 2 - Support facility errors\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Key area error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - End operation with transfer count not zero\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 2 - Microcode detected error %02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: error code + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the count area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 3 - Allegiance terminated\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * Allegiance terminated because of a Reset Allegiance or an Unconditional + * Reserve command on another channel. This is an operating system independent + * message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Home address area error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Count area error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Invalid tag-in during selection sequence\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in data area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in home address area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Home address area error; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - Data area error; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in home address area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the home address area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the home address area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the count area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 4 - No sync byte in key area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Invalid DCC selection response or timeout\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the data area\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Operation Terminated\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The storage system ends an operation related to an active channel program + * when termination and redrive are required and logging is not desired. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel B\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 5 - Data Check in the key area; offset active\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Volume is suspended duplex\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The duplex pair volume has entered the suspended duplex state because of a + * failure. This is an operating system independent message that is issued by + * the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel D\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - RCC 1 sequence not successful\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel E\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - 3990 microcode time out when stopping selection\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel F\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - RCC initiated by a connection check alert\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel G\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - extra RCC required\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 6 - Overrun on channel H\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - Unexpected end operation response code\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Permanent path error (DASD controller not available)\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Missing end operation; device transfer incomplete\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Cache or nonvolatile storage equipment failure\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * An equipment failure has occurred in the cache storage or nonvolatile + * storage of the storage system. This is an operating system independent + * message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - DPS cannot be filled\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - Error correction code hardware fault\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Missing end operation; device transfer complete\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - DASD controller not available on disconnected command chain\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - No interruption from device during a command chain\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - No response to selection after a poll interruption\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 9 - Track physical address did not compare while oriented\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 9 - Head address did not compare\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Invalid tag-in for an immediate command sequence\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 9 - Cylinder address did not compare\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - DPS checks after a system reset or selective reset\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Caching reinitiated\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * Caching has been automatically reinitiated following an error. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - End operation with transfer count zero\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 7 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 9 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - Short busy time-out during device selection\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Caching terminated\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The storage system was unable to initiate caching or had to suspend caching + * for a 3990 control unit. If this problem is caused by a failure condition, + * an additional message will provide more information about the failure. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * Check for additional messages that point out possible failures. For more + * information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Subsystem status cannot be determined\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The status of a DASD Fast Write or PPRC volume cannot be determined. + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Nonvolatile storage terminated\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The storage director has stopped using nonvolatile storage or cannot + * initiate nonvolatile storage. If this problem is caused by a failure, an + * additional message will provide more information about the failure. This is + * an operating system independent message that is issued by the storage system. + * User action: + * Check for additional messages that point out possible failures. For more + * information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT 8 - Reserved\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: Write inhibited path encountered\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an informational message. + * User action: + * None. + */ + +/*? + * Text: "%s: FORMAT 9 - Device check-2 error\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * This is an operating system independent message that is issued by the + * storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Track format incorrect\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A track format error occurred while data was being written to the DASD or + * while a duplex pair was being established. This is an operating system + * independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: FORMAT F - Cache fast write access not authorized\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * A request for Cache Fast Write Data access cannot be satisfied because + * of missing access authorization for the storage system. This is an operating + * system independent message that is issued by the storage system. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: Data recovered during retry with PCI fetch mode active\n" + * Severity: Emerg + * Parameter: + * @1: bus ID of the DASD + * Description: + * A data error has been recovered on the storages system but the Linux file + * system cannot be informed about the data mismatch. To prevent Linux from + * running with incorrect data, the DASD device driver will trigger a kernel + * panic. + * User action: + * Reset your real or virtual hardware and reboot Linux. + */ + +/*? + * Text: "%s: The specified record was not found\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The record to be accessed does not exist. The DASD might be unformatted + * or defect. + * User action: + * Try to format the DASD or replace it. + * ATTENTION: Formatting irreversibly destroys all data on the DASD. + */ + +/*? + * Text: "%s: ERP %p (%02x) refers to %p\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: pointer to ERP + * @3: ERP status + * @4: cqr + * Description: + * This message provides debug information for the enhanced error recovery + * procedure (ERP). + * User action: + * If you do not need this information, you can suppress this message by + * switching off ERP logging, for example, by writing '1' to the 'erplog' + * sysfs attribute of the DASD. + */ + +/*? + * Text: "%s: ERP chain at END of ERP-ACTION\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * This message provides debug information for the enhanced error recovery + * procedure (ERP). + * User action: + * If you do not need this information, you can suppress this message by + * switching off ERP logging, for example, by writing '1' to the 'erplog' + * sysfs attribute of the DASD. + */ + +/*? + * Text: "%s: The cylinder data for accessing the DASD is inconsistent\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * An error occurred in the storage system hardware. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: Accessing the DASD failed because of a hardware error\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * An error occurred in the storage system hardware. + * User action: + * For more information see the documentation of your storage system. + */ + +/*? + * Text: "%s: ERP chain at BEGINNING of ERP-ACTION\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * This message provides debug information for the enhanced error recovery + * procedure (ERP). + * User action: + * If you do not need this information, you can suppress this message by + * switching off ERP logging, for example, by writing '1' to the 'erplog' + * sysfs attribute of the DASD. + */ + +/*? + * Text: "%s: ERP %p has run out of retries and failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: ERP pointer + * Description: + * The error recovery procedure (ERP) tried to recover an error but the number + * of retries for the I/O was exceeded before the error could be resolved. + * User action: + * Check for related previous error messages. + */ + +/*? + * Text: "%s: SIM - SRC: %02x%02x%02x%02x\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: sense byte + * @3: sense byte + * @4: sense byte + * @5: sense byte + * Description: + * This error message is a System Information Message (SIM) generated by the + * storage system. The System Reference Code (SRC) defines the error in detail. + * User action: + * Look up the SRC in the storage server documentation. + */ + +/*? + * Text: "%s: log SIM - SRC: %02x%02x%02x%02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: sense byte + * @3: sense byte + * @4: sense byte + * @5: sense byte + * Description: + * This System Information Message (SIM) is generated by the storage system. + * The System Reference Code (SRC) defines the error in detail. + * User action: + * Look up the SRC in the storage server documentation. + */ + +/*? + * Text: "%s: Reading device feature codes failed with rc=%d\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * Description: + * The device feature codes state which advanced features are supported by a + * device. + * Examples for advanced features are PAV or high performance FICON. + * Some early devices do not provide feature codes and no advanced features are + * available on these devices. + * User action: + * None, if the DASD does not provide feature codes. If the DASD provides + * feature codes, make sure that it is working correctly, then set it offline + * and back online. + */ + +/*? + * Text: "%s: A channel path group could not be established\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * Initialization of a DASD did not complete because a channel path group + * could not be established. + * User action: + * Make sure that the DASD is working correctly, then try again to set it + * online. If initialization still fails, reboot. + */ + +/*? + * Text: "%s: The DASD is not operating in multipath mode\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD channel path group could not be configured to use multipath mode. + * This might negatively affect I/O performance on this DASD. + * User action: + * Make sure that the DASD is working correctly, then try again to set it + * online. If initialization still fails, reboot. + */ + +/*? + * Text: "%s: Detecting the DASD disk layout failed because of an I/O error\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The disk layout of the DASD could not be detected because of an unexpected + * I/O error. The DASD device driver treats the device like an unformatted DASD, + * and partitions on the device are not accessible. + * User action: + * If the DASD is formatted, make sure that the DASD is working correctly, + * then set it offline and back online. If the DASD is unformatted, format the + * DASD, for example, with dasdfmt. + * ATTENTION: Formatting irreversibly destroys all data on the DASD. + */ + +/*? + * Text: "%s: An I/O request was rejected because writing is inhibited\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * An I/O request was returned with an error indication of 'command reject' + * and 'write inhibited'. The most likely reason for this error is a + * failed write request to a device that was attached as read-only in z/VM. + * User action: + * Set the device offline, ensure that the device is configured correctly in + * z/VM, then set the device online again. + */ + +/*? + * Text: "%s: An Alias device was reassigned to a new base device with UID: %s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the alias + * @2: UID of new base device + * Description: + * The alias device with the indicated bus ID has been reassigned. The UID of the new base device is shown in the message. + * User action: + * None. + */ + +/*? + * Text: "%s: Detecting the maximum supported data size for zHPF requests failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * High Performance FICON (zHPF) requests are limited to a hardware-dependent + * maximum data size. The DASD device driver failed to detect this size and zHPF + * is not available for this device. + * User action: + * Set the device offline and online again. If this problem persists, gather + * Linux debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Reading device feature codes failed (rc=%d) for new path %x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * @3: path mask + * Description: + * A new path has been made available to the a device. + * A command to read the device feature codes on this device returned an error. + * The new path will not be used for I/O. + * User action: + * Set the new path offline and online again to repeat the path verification. + * Alternatively, set the device offline and online again to + * verify all available paths for this device. + * If this problem persists, gather Linux debug data and report the problem + * to your support organization. + */ + +/*? + * Text: "%s: Detecting the maximum data size for zHPF requests failed (rc=%d) for a new path %x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: return code + * @3: path mask + * Description: + * High Performance FICON (zHPF) requests are limited to a hardware-dependent + * maximum data size. A command to detect this size for + * a new path returned an error. The new path will not be used for I/O. + * User action: + * Set the new path offline and online again to repeat the path verification. + * Alternatively, set the device offline and online again to + * verify all available paths for this device. + * If this problem persists, gather Linux debug data and report the problem + * to your support organization. + */ + +/*? + * Text: "%s: The maximum data size for zHPF requests %u on a new path %x is below the active maximum %u\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * @2: size in bytes + * @3: path mask + * @4: size in bytes + * Description: + * High Performance FICON (zHPF) requests are limited to a hardware-dependent + * maximum data size. The maximum of the new path is below + * the previously established common maximum for the + * existing paths for this device. This could cause requests on the new + * path to fail. The new path will not be used for I/O. + * User action: + * Set the device offline and online again to establish a new common maximum + * data size for the device. + */ + +/*? + * Text: "%s: The device reservation was lost\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * This Linux instance has lost its reservation of the device to another + * operating system instance. Depending on the reservation policy for the + * device, I/O might be blocked until the other operating system instance + * surrenders the reservation or all I/O requests might fail until the + * device is reset. + * User action: + * None, if this situation is handled by system automation software. + * If this situation is not handled by automation, check the + * last_known_reservation_state attribute of the device in sysfs. + * If the value is 'lost', verify that the device is no longer reserved + * by another operating system instance, then set the device offline and + * online again. For any other value of the last_known_reservation_state + * no action is required. I/O will resume when the device reservation is + * surrendered by the other operating system instance. + */ + +/*? + * Text: "%s: The storage server does not support raw-track access\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD cannot be accessed in raw-track access mode because the storage + * server does not have all required features for this access mode. + * In raw-track access mode, the DASD device driver accesses complete ECKD + * tracks. + * By default, the DASD device driver accesses only the data fields of ECKD + * devices and omits the count and key data fields. + * User action: + * Ensure that the raw_track_access sysfs attribute of the DASD has the value + * 0 to access the device in default ECKD mode. + */ + +/*? + * Text: "%s: The newly added channel path %02X will not be used because it leads to a different device %s\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: logical path mask + * @3: UID + * Description: + * The newly added channel path has a different UID than the DASD device. This indicates + * an incorrect cabling. This path is not going to be used. + * User action: + * Check the cabling of the DASD device. Disconnect and reconnect the cable. + */ + +/*? + * Text: "%s: Not all channel paths lead to the same device, path %02X leads to device %s instead of %s\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: logical path mask + * @3: UID + * @4: UID + * Description: + * Some channel paths have a different UID than others. This indicates + * an incorrect cabling. The DASD device is not enabled. + * User action: + * Check cabling of the DASD device and retry to enable the device. + */ + +/*? + * Text: "Service on the storage server caused path %x.%02x to go offline" + * Severity: Warning + * Parameter: + * @1: channel subsystem ID + * @2: CHPID + * Description: + * A channel path to the DASD has been set offline because of + * a service action on the storage server. The path will be set back + * online automatically when the service action is completed. + * User action: + * None. + */ + +/*? + * Text: "Path %x.%02x is back online after service on the storage server" + * Severity: Informational + * Parameter: + * @1: channel subsystem ID + * @2: CHPID + * Description: + * A path had been set offline temporarily because of a service + * action on the storage server. + * The service action has completed, and the channel path is available + * again. + * User action: + * None. + */ + +/*? + * Text: "%s: High Performance FICON disabled\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * Description: + * High Performance FICON (HPF) has been disabled. Either the device + * lost HPF functionality, or none of the remaining channel paths are + * HPF capable. + * User action: + * Report the problem to your support organization. + * Ensure that the cabling between the storage server and the mainframe + * system is securely in place. + * Reset the device and channel paths by writing "all" or a logical path mask + * to the path_reset sysfs attribute of the device. + */ + +/*? + * Text: "%s: Channel path %02X lost HPF functionality and is disabled\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: logical path mask + * Description: + * A channel path has lost High Performance FICON (HPF) functionality + * and was removed from regular operations. + * User action: + * Report the problem to your support organization. + * Ensure that the cabling between the storage server and the mainframe + * system is securely in place. + * Reset the device and channel paths by writing "all" or a logical path mask + * to the path_reset sysfs attribute of the device. + */ + +/*? + * Text: "%s: Path %x.%02x (pathmask %02x) is disabled - IFCC threshold exceeded\n" + * Severity: Error + * Parameter: + * @1: bus ID of the DASD + * @2: cssid + * @3: chpid + * @4: logical path mask + * Description: + * Due to numerous interface or channel control checks (IFCCs), a channel path + * was removed from regular operations to retain good I/O performance. + * User action: + * Ensure that the cabling between the storage server and the mainframe + * system is securely in place. + * Reset the device and channel paths by writing "all" or a logical path mask + * to the path_reset sysfs attribute of the device. + * If the problem persists, report it to your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/dasd-fba +++ linux-5.8.0/Documentation/kmsg/s390/dasd-fba @@ -0,0 +1,36 @@ + +/*? + * Text: "%s: New FBA DASD %04X/%02X (CU %04X/%02X) with %d MB and %d B/blk%s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the DASD + * @2: device type + * @3: device model + * @4: control unit type + * @5: control unit model + * @6: size + * @7: bytes per block + * @8: access mode + * Description: + * A DASD with the shown characteristics has been set online. + * If the DASD is configured as read-only to the real or virtual hardware, + * the message includes an indication of this hardware access mode. The + * hardware access mode is independent from the 'readonly' attribute of + * the device in sysfs. + * User action: + * None. + */ + +/*? + * Text: "%s: Allocating memory for private DASD data failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the DASD + * Description: + * The DASD device driver maintains data structures for each DASD it manages. + * There is not enough memory to allocate these data structures for one or + * more DASD. + * User action: + * Free some memory and try the operation again. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/dcssblk +++ linux-5.8.0/Documentation/kmsg/s390/dcssblk @@ -0,0 +1,206 @@ +/*? + * Text: "Adjacent DCSSs %s and %s are not contiguous\n" + * Severity: Error + * Parameter: + * @1: name 1 + * @2: name 2 + * Description: + * You can only map a set of two or more DCSSs to a single DCSS device if the + * DCSSs in the set form a contiguous memory space. The DCSS device cannot be + * created because there is a memory gap between two adjacent DCSSs. + * User action: + * Ensure that you have specified all DCSSs that belong to the set. Check the + * definitions of the DCSSs on the z/VM hypervisor to verify that they form + * a contiguous memory space. + */ + +/*? + * Text: "DCSS %s and DCSS %s have incompatible types\n" + * Severity: Error + * Parameter: + * @1: name 1 + * @2: name 2 + * Description: + * You can only map a set of two or more DCSSs to a single DCSS device if + * either all DCSSs in the set have the same type or if the set contains DCSSs + * of the two types EW and EN but no other type. The DCSS device cannot be + * created because at least two of the specified DCSSs are not compatible. + * User action: + * Check the definitions of the DCSSs on the z/VM hypervisor to verify that + * their types are compatible. + */ + +/*? + * Text: "DCSS %s is of type SC and cannot be loaded as exclusive-writable\n" + * Severity: Error + * Parameter: + * @1: device name + * Description: + * You cannot load a DCSS device in exclusive-writable access mode if the DCSS + * devise maps to one or more DCSSs of type SC. + * User action: + * Load the DCSS in shared access mode. + */ + +/*? + * Text: "DCSS device %s is removed after a failed access mode change\n" + * Severity: Error + * Parameter: + * @1: device name + * Description: + * To change the access mode of a DCSS device, all DCSSs that map to the device + * were unloaded. Reloading the DCSSs for the new access mode failed and the + * device is removed. + * User action: + * Look for related messages to find out why the DCSSs could not be reloaded. + * If necessary, add the device again. + */ + +/*? + * Text: "All DCSSs that map to device %s are saved\n" + * Severity: Informational + * Parameter: + * @1: device name + * Description: + * A save request has been submitted for the DCSS device. Changes to all DCSSs + * that map to the device are saved permanently. + * User action: + * None. + */ + +/*? + * Text: "Device %s is in use, its DCSSs will be saved when it becomes idle\n" + * Severity: Informational + * Parameter: + * @1: device name + * Description: + * A save request for the device has been deferred until the device becomes + * idle. Then changes to all DCSSs that the device maps to will be saved + * permanently. + * User action: + * None. + */ + +/*? + * Text: "A pending save request for device %s has been canceled\n" + * Severity: Informational + * Parameter: + * @1: device name + * Description: + * A save request for the DCSSs that map to a DCSS device has been pending + * while the device was in use. This save request has been canceled. Changes to + * the DCSSs will not be saved permanently. + * User action: + * None. + */ + +/*? + * Text: "Loaded %s with total size %lu bytes and capacity %lu sectors\n" + * Severity: Informational + * Parameter: + * @1: DCSS names + * @2: total size in bytes + * @3: total size in 512 byte sectors + * Description: + * The listed DCSSs have been verified as contiguous and successfully loaded. + * The displayed sizes are the sums of all DCSSs. + * User action: + * None. + */ + +/*? + * Text: "Device %s cannot be removed because it is not a known device\n" + * Severity: Warning + * Parameter: + * @1: device name + * Description: + * The DCSS device you are trying to remove is not known to the DCSS device + * driver. + * User action: + * List the entries under /sys/devices/dcssblk/ to see the names of the + * existing DCSS devices. + */ + +/*? + * Text: "Device %s cannot be removed while it is in use\n" + * Severity: Warning + * Parameter: + * @1: device name + * Description: + * You are trying to remove a device that is in use. + * User action: + * Make sure that all users of the device close the device before you try to + * remove it. + */ + +/*? + * Text: "Device %s has become idle and is being saved now\n" + * Severity: Informational + * Parameter: + * @1: device name + * Description: + * A save request for the DCSSs that map to a DCSS device has been pending + * while the device was in use. The device has become idle and all changes + * to the DCSSs are now saved permanently. + * User action: + * None. + */ + +/*? + * Text: "Writing to %s failed because it is a read-only device\n" + * Severity: Warning + * Parameter: + * @1: device name + * Description: + * The DCSS device is in shared access mode and cannot be written to. Depending + * on the type of the DCSSs that the device maps to, you might be able to + * change the access mode to exclusive-writable. + * User action: + * If the DCSSs of the device are of type SC, do not attempt to write to the + * device. If the DCSSs of the device are of type ER or SR, change the access + * mode to exclusive-writable before writing to the device. + */ + +/*? + * Text: "The address range of DCSS %s changed while the system was suspended\n" + * Severity: Error + * Parameter: + * @1: device name + * Description: + * After resuming the system, the start address or end address of a DCSS does + * not match the address when the system was suspended. DCSSs must not be + * changed after the system was suspended. + * This error cannot be recovered. The system is stopped with a kernel panic. + * User action: + * Reboot Linux. + */ + +/*? + * Text: "Suspending the system failed because DCSS device %s is writable\n" + * Severity: Error + * Parameter: + * @1: device name + * Description: + * A system cannot be suspended if one or more DCSSs are accessed in exclusive- + * writable mode. DCSS segment types EW, SW, and EN are always writable and + * must be removed before a system is suspended. + * User action: + * Remove all DCSSs of segment types EW, SW, and EN by writing the DCSS name to + * the sysfs 'remove' attribute. Set the access mode for all DCSSs of segment + * types SR and ER to read-only by writing 1 to the sysfs 'shared' attribute of + * the DCSS. Then try again to suspend the system. + */ + +/*? + * Text: "DCSS %s is of type SN or EN and cannot be saved\n" + * Severity: Warning + * Parameter: + * @1: DCSS name + * Description: + * DCSSs of type SN or EN cannot be saved. + * User action: + * If the DCSS was set up with the intention to prevent the content from being saved, + * no action is necessary. + * To be able to save the content, you must define the DCSS with a type other than SN or EN. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/diag288_wdt +++ linux-5.8.0/Documentation/kmsg/s390/diag288_wdt @@ -0,0 +1,66 @@ +/*? + * Text: "The watchdog cannot be activated\n" + * Severity: Error + * Description: + * Diagnose instruction 0x288 was called to activate the diag288 watchdog. + * The diagnose call returned an error that cannot be handled by the device driver. + * The watchdog stays inactive. + * User action: + * Contact your support organization. + */ + +/*? + * Text: "The watchdog cannot be initialized\n" + * Severity: Error + * Description: + * Diagnose instruction 0x288 was called to initialize the diag288 watchdog. + * The diagnose call returned an error that cannot be handled by the device driver. + * The watchdog stays inactive. + * A possible reason for this error is that your real or virtual hardware does not support + * the diag288 watchdog. + * User action: + * Confirm that the diag288 watchdog is supported in your environment. + * Use a watchdog that is supported in your environment. + */ + +/*? + * Text: "The watchdog cannot be deactivated\n" + * Severity: Error + * Description: + * Diagnose instruction 0x288 was called to deactivate the diag288 watchdog. + * The diagnose call returned an error that cannot be handled by the device driver. + * The watchdog stays active and a watchdog timeout will trigger the configured timeout action. + * The diag288 watchdog device driver might intentionally be configured to prevent deactivation. + * User action: + * You can configure the diag288 watchdog device driver such that it can be deactivated. + * If the diag288 device driver has been compiled as a separate module, diag288_wdt, reload the module + * without specifying the 'nowayout' module parameter. + * If the diag288 device driver has been compiled into your kernel, + * reboot Linux without specifying the 'diag288.nowayout' kernel parameter'. + */ + +/*? + * Text: "The watchdog timer cannot be started or reset\n" + * Severity: Error + * Description: + * Diagnose instruction 0x288 was called to start the diag288 watchdog or to set timer back to zero. + * The diagnose call returned an error that cannot be handled by the device driver. + * The watchdog stays inactive or becomes inactive. + * User action: + * Contact your support organization. + */ + +/*? + * Text: "Linux cannot be suspended while the watchdog is in use\n" + * Severity: Error + * Description: + * The watchdog must not time out while Linux is suspended. + * Therefore, the diag288 watchdog device driver prevents Linux from being suspended + * while the watchdog is in use. + * User action: + * i) Stop the watchdog application. ii) If the problem persists, close the watchdog + * device node by issuing 'echo V > /dev/watchdog'. + * iii) If the device driver still prevents Linux from being suspended, + * contact your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/extmem +++ linux-5.8.0/Documentation/kmsg/s390/extmem @@ -0,0 +1,293 @@ +/*? + * Text: "Querying a DCSS type failed with rc=%ld\n" + * Severity: Warning + * Parameter: + * @1: return code + * Description: + * The DCSS kernel interface used z/VM diagnose call X'64' to query the + * type of a DCSS. z/VM failed to determine the type and returned an error. + * User action: + * Look for related messages to find out which DCSS is affected. + * For details about the return codes see the section about DIAGNOSE Code + * X'64' in "z/VM CP Programming Services". + */ + +/*? + * Text: "Loading DCSS %s failed with rc=%ld\n" + * Severity: Warning + * Parameter: + * @1: DCSS name + * @2: return code + * Description: + * The DCSS kernel interface used diagnose call X'64' to load a DCSS. z/VM + * failed to load the DCSS and returned an error. + * User action: + * For details about the return codes see the section about DIAGNOSE Code + * X'64' in "z/VM CP Programming Services". + */ + +/*? + * Text: "DCSS %s of range %p to %p and type %s loaded as exclusive-writable\n" + * Severity: Informational + * Parameter: + * @1: DCSS name + * @2: starting page address + * @3: ending page address + * @4: DCSS type + * Description: + * The DCSS was loaded successfully in exclusive-writable access mode. + * User action: + * None. + */ + +/*? + * Text: "DCSS %s of range %p to %p and type %s loaded in shared access mode\n" + * Severity: Informational + * Parameter: + * @1: DCSS name + * @2: starting page address + * @3: ending page address + * @4: DCSS type + * Description: + * The DCSS was loaded successfully in shared access mode. + * User action: + * None. + */ + +/*? + * Text: "DCSS %s is already in the requested access mode\n" + * Severity: Informational + * Parameter: + * @1: DCSS name + * Description: + * A request to reload a DCSS with a new access mode has been rejected + * because the new access mode is the same as the current access mode. + * User action: + * None. + */ + +/*? + * Text: "DCSS %s is in use and cannot be reloaded\n" + * Severity: Warning + * Parameter: + * @1: DCSS name + * Description: + * Reloading a DCSS in a different access mode has failed because the DCSS is + * being used by one or more device drivers. The DCSS remains loaded with the + * current access mode. + * User action: + * Ensure that the DCSS is not used by any device driver then try again to + * load the DCSS with the new access mode. + */ + +/*? + * Text: "DCSS %s overlaps with used memory resources and cannot be reloaded\n" + * Severity: Warning + * Parameter: + * @1: DCSS name + * Description: + * The DCSS has been unloaded and cannot be reloaded because it overlaps with + * another loaded DCSS or with the memory of the z/VM guest virtual machine + * (guest storage). + * User action: + * Ensure that no DCSS is loaded that has overlapping memory resources + * with the DCSS you want to reload. If the DCSS overlaps with guest storage, + * use the DEF STORE CONFIG z/VM CP command to create a sufficient storage gap + * for the DCSS. For details, see the section about the DCSS device driver in + * "Device Drivers, Features, and Commands". + */ + +/*? + * Text: "Reloading DCSS %s failed with rc=%ld\n" + * Severity: Warning + * Parameter: + * @1: DCSS name + * @2: return code + * Description: + * The DCSS kernel interface used z/VM diagnose call X'64' to reload a DCSS + * in a different access mode. The DCSS was unloaded but z/VM failed to reload + * the DCSS. + * User action: + * For details about the return codes see the section about DIAGNOSE Code + * X'64' in "z/VM CP Programming Services". + */ + +/*? + * Text: "Unloading unknown DCSS %s failed\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * The specified DCSS cannot be unloaded. The DCSS is known to the DCSS device + * driver but not to the DCSS kernel interface. This problem indicates a + * program error in extmem.c. + * User action: + * Report this problem to your support organization. + */ + +/*? + * Text: "Saving unknown DCSS %s failed\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * The specified DCSS cannot be saved. The DCSS is known to the DCSS device + * driver but not to the DCSS kernel interface. This problem indicates a + * program error in extmem.c. + * User action: + * Report this problem to your support organization. + */ + +/*? + * Text: "Saving a DCSS failed with DEFSEG response code %i\n" + * Severity: Error + * Parameter: + * @1: response-code + * Description: + * The DEFSEG z/VM CP command failed to permanently save changes to a DCSS. + * User action: + * Ensure that the z/VM guest virtual machine is authorized to issue + * the CP DEFSEG command (typically privilege class E). + * Look for related messages to find the cause of this error. See also message + * HCPE in the DEFSEG section of the "z/VM CP Command and + * Utility Reference". + */ + +/*? + * Text: "Saving a DCSS failed with SAVESEG response code %i\n" + * Severity: Error + * Parameter: + * @1: response-code + * Description: + * The SAVESEG z/VM CP command failed to permanently save changes to a DCSS. + * User action: + * Ensure that the z/VM guest virtual machine is authorized to issue + * the CP SAVESEG command (typically privilege class E). + * Look for related messages to find the cause of this error. See also message + * HCPE in the SAVESEG section of the "z/VM CP Command and + * Utility Reference". + */ + +/*? + * Text: "DCSS %s cannot be loaded or queried\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * You cannot load or query the specified DCSS because it either is not defined + * in the z/VM hypervisor, or it is a class S DCSS, or it is above 2047 MB + * and the Linux system is a 31-bit system. + * User action: + * Use the CP command "QUERY NSS" to find out if the DCSS is a valid + * DCSS that can be loaded. + */ + +/*? + * Text: "DCSS %s cannot be loaded or queried without z/VM\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * A DCSS is a z/VM resource. Your Linux instance is not running as a z/VM + * guest operating system and, therefore, cannot load DCSSs. + * User action: + * Load DCSSs only on Linux instances that run as z/VM guest operating systems. + */ + +/*? + * Text: "Loading or querying DCSS %s resulted in a hardware error\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * Either the z/VM DIAGNOSE X'64' query or load call issued for the DCSS + * returned with an error. + * User action: + * Look for previous extmem message to find the return code from the + * DIAGNOSE X'64' query or load call. For details about the return codes see + * the section about DIAGNOSE Code X'64' in "z/VM CP Programming Services". + */ + +/*? + * Text: "DCSS %s has multiple page ranges and cannot be loaded or queried\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * You can only load or query a DCSS with multiple page ranges if: + * - The DCSS has 6 or fewer page ranges + * - The page ranges form a contiguous address space + * - The page ranges are of type EW or EN + * User action: + * Check the definition of the DCSS to make sure that the conditions for + * DCSSs with multiple page ranges are met. + */ + +/*? + * Text: "%s needs used memory resources and cannot be loaded or queried\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * You cannot load or query the DCSS because it overlaps with an already + * loaded DCSS or with the memory of the z/VM guest virtual machine + * (guest storage). + * User action: + * Ensure that no DCSS is loaded that has overlapping memory resources + * with the DCSS you want to load or query. If the DCSS overlaps with guest + * storage, use the DEF STORE CONFIG z/VM CP command to create a sufficient + * storage gap for the DCSS. For details, see the section about the DCSS + * device driver in "Device Drivers, Features, and Commands". + */ + +/*? + * Text: "DCSS %s is already loaded in a different access mode\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * The DCSS you are trying to load has already been loaded in a different + * access mode. You cannot simultaneously load the DCSS in different modes. + * User action: + * Reload the DCSS in a different mode or load it with the same mode in which + * it has already been loaded. + */ + +/*? + * Text: "There is not enough memory to load or query DCSS %s\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * The available memory is not enough to load or query the DCSS. + * User action: + * Free some memory and repeat the failed operation. + */ + +/*? + * Text: "DCSS %s overlaps with used storage and cannot be loaded\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * You cannot load the DCSS because it overlaps with an already loaded DCSS + * or with the memory of the z/VM guest virtual machine (guest storage). + * User action: + * Ensure that no DCSS is loaded that has overlapping memory resources + * with the DCSS you want to load. If the DCSS overlaps with guest storage, + * use the DEF STORE CONFIG z/VM CP command to create a sufficient storage gap + * for the DCSS. For details, see the section about the DCSS device driver in + * "Device Drivers, Features, and Commands". + */ + +/*? + * Text: "DCSS %s exceeds the kernel mapping range (%lu) and cannot be loaded\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * @2: kernel mapping range in bytes + * Description: + * You cannot load the DCSS because it exceeds the kernel mapping range limit. + * User action: + * Ensure that the DCSS range is defined below the kernel mapping range. + */ --- linux-5.8.0.orig/Documentation/kmsg/s390/hmcdrv +++ linux-5.8.0/Documentation/kmsg/s390/hmcdrv @@ -0,0 +1,22 @@ +/*? + * Text: "Allocating the requested cache size of %zu bytes failed\n" + * Severity: Error + * Parameter: + * @1: size + * Description: + * You cannot use the 'hmcdrv' module. + * Either the cache size that was specified for the 'hmcdrv' module exceeded + * the maximum of 1048576 (1 megabyte), or not enough free memory was + * available. + * If the 'hmcdrv' module was compiled into the kernel, the cache size was + * specified with the 'hmcdrv.cachesize' kernel parameter. + * For a separate 'hmcdrv' module, the cache size was specified with the + * 'cachesize=' module parameter. + * User action: + * Specify a smaller cache size and try again to load the module. + * Do not exceed the maximum specification of 1048576 (1 megabyte). + * If necessary, free some memory and try again. + * If the module is compiled into the kernel, you must reboot Linux to change + * the cache size specification. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/hugetlb +++ linux-5.8.0/Documentation/kmsg/s390/hugetlb @@ -0,0 +1,13 @@ +/*? + * Text: "hugepagesz= specifies an unsupported page size %s\n" + * Severity: Error + * Parameter: + * @1: size + * Description: + * The hugepagesz= kernel parameter specifies a huge page size + * that is not supported. + * User action: + * Specify "1M" for 1 MB huge pages. These are supported as of z10. + * Specify "2G" for 2 GB huge pages. These are supported as of zEC12 + * and zBC12 machines. + */ --- linux-5.8.0.orig/Documentation/kmsg/s390/hvc_iucv +++ linux-5.8.0/Documentation/kmsg/s390/hvc_iucv @@ -0,0 +1,123 @@ +/*? + * Text: "The z/VM IUCV HVC device driver cannot be used without z/VM\n" + * Severity: Notice + * Description: + * The z/VM IUCV hypervisor console (HVC) device driver requires the + * z/VM inter-user communication vehicle (IUCV). + * User action: + * Set "hvc_iucv=" to zero in the kernel parameter line and reboot Linux. + */ + +/*? + * Text: "%lu is not a valid value for the hvc_iucv= kernel parameter\n" + * Severity: Error + * Parameter: + * @1: hvc_iucv_devices + * Description: + * The "hvc_iucv=" kernel parameter specifies the number of z/VM IUCV + * hypervisor console (HVC) terminal devices. + * The parameter value ranges from 0 to 8. + * If zero is specified, the z/VM IUCV HVC device driver is disabled + * and no IUCV-based terminal access is available. + * User action: + * Correct the "hvc_iucv=" setting in the kernel parameter line and + * reboot Linux. + */ + +/*? + * Text: "Creating a new HVC terminal device failed with error code=%d\n" + * Severity: Error + * Parameter: + * @1: errno + * Description: + * The device driver initialization failed to allocate a new + * HVC terminal device. + * A possible cause of this problem is memory constraints. + * User action: + * If the error code is -12 (ENOMEM), consider assigning more memory + * to your z/VM guest virtual machine. + */ + +/*? + * Text: "Registering HVC terminal device as Linux console failed\n" + * Severity: Error + * Description: + * The device driver initialization failed to set up the first HVC terminal + * device for use as Linux console. + * User action: + * If the error code is -12 (ENOMEM), consider assigning more memory + * to your z/VM guest virtual machine. + */ + +/*? + * Text: "Registering IUCV handlers failed with error code=%d\n" + * Severity: Error + * Parameter: + * @1: errno + * Description: + * The device driver initialization failed to register with z/VM IUCV to + * handle IUCV connections, as well as sending and receiving of IUCV messages. + * User action: + * Check for related IUCV error messages and see the errno manual page + * to find out what caused the problem. + */ + +/*? + * Text: "Allocating memory failed with reason code=%d\n" + * Severity: Error + * Parameter: + * @1: reason + * Description: + * The z/VM IUCV hypervisor console (HVC) device driver initialization failed, + * because of a general memory allocation failure. The reason code indicates + * the memory operation that has failed: + * kmem_cache (reason code=1), + * mempool (reason code=2), or + * hvc_iucv_allow= (reason code=3) + * User action: + * Consider assigning more memory to your z/VM guest virtual machine. + */ + +/*? + * Text: "hvc_iucv_allow= does not specify a valid z/VM user ID list\n" + * Severity: Error + * Description: + * The "hvc_iucv_allow=" kernel parameter specifies a comma-separated list + * of z/VM user IDs that are permitted to connect to the z/VM IUCV hypervisor + * device driver. + * The z/VM user IDs in the list must not exceed eight characters and must + * not contain spaces. + * User action: + * Correct the "hvc_iucv_allow=" setting in the kernel parameter line and reboot + * Linux. + */ + +/*? + * Text: "hvc_iucv_allow= specifies too many z/VM user IDs\n" + * Severity: Error + * Description: + * The "hvc_iucv_allow=" kernel parameter specifies a comma-separated list + * of z/VM user IDs that are permitted to connect to the z/VM IUCV hypervisor + * device driver. + * The number of z/VM user IDs that are specified with the "hvc_iucv_allow=" + * kernel parameter exceeds the maximum of 500. + * User action: + * Correct the "hvc_iucv_allow=" setting by reducing the z/VM user IDs in + * the list and reboot Linux. + */ + +/*? + * Text: "A connection request from z/VM user ID %s was refused\n" + * Severity: Informational + * Parameter: + * @1: ID + * Description: + * An IUCV connection request from another z/VM guest virtual machine has been + * refused. The request was from a z/VM guest virtual machine that is not + * listed by the "hvc_iucv_allow=" kernel parameter. + * User action: + * Check the "hvc_iucv_allow=" kernel parameter setting. + * Consider adding the z/VM user ID to the "hvc_iucv_allow=" list in the kernel + * parameter line and reboot Linux. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/hypfs +++ linux-5.8.0/Documentation/kmsg/s390/hypfs @@ -0,0 +1,56 @@ +/*? + * Text: "The hardware system does not support hypfs\n" + * Severity: Error + * Description: + * hypfs requires DIAGNOSE Code X'204' but this diagnose code is not available + * on your hardware. You need more recent hardware to use hypfs. + * User action: + * None. + */ + +/*? + * Text: "The hardware system does not provide all functions required by hypfs\n" + * Severity: Error + * Description: + * hypfs requires DIAGNOSE Code X'224' but this diagnode code is not available + * on your hardware. You need more recent hardware to use hypfs. + * User action: + * None. + */ + +/*? + * Text: "Updating the hypfs tree failed\n" + * Severity: Error + * Description: + * There was not enough memory available to update the hypfs tree. + * User action: + * Free some memory and try again to update the hypfs tree. Consider assigning + * more memory to your LPAR or z/VM guest virtual machine. + */ + +/*? + * Text: "%s is not a valid mount option\n" + * Severity: Error + * Parameter: + * @1: mount option + * Description: + * hypfs has detected mount options that are not valid. + * User action: + * See "Device Drivers Features and Commands" for information about valid + * mount options for hypfs. + */ + +/*? + * Text: "Initialization of hypfs failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: error code + * Description: + * Initialization of hypfs failed because of resource or hardware constraints. + * Possible reasons for this problem are insufficient free memory or missing + * hardware interfaces. + * User action: + * See errno.h for information about the error codes. + */ + +/*? Text: "Hypervisor filesystem mounted\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/iucv +++ linux-5.8.0/Documentation/kmsg/s390/iucv @@ -0,0 +1,33 @@ +/*? + * Text: "Defining an interrupt buffer on CPU %i failed with 0x%02x (%s)\n" + * Severity: Warning + * Parameter: + * @1: CPU number + * @2: hexadecimal error value + * @3: short error code explanation + * Description: + * Defining an interrupt buffer for external interrupts failed. Error + * value 0x03 indicates a problem with the z/VM directory entry of the + * z/VM guest virtual machine. This problem can also be caused by a + * program error. + * User action: + * If the error value is 0x03, examine the z/VM directory entry of your + * z/VM guest virtual machine. If the directory entry is correct or if the + * error value is not 0x03, report this problem to your support organization. + */ + +/*? + * Text: "Suspending Linux did not completely close all IUCV connections\n" + * Severity: Warning + * Description: + * When resuming a suspended Linux instance, the IUCV base code found + * data structures from one or more IUCV connections that existed before the + * Linux instance was suspended. Modules that use IUCV connections must close + * these connections when a Linux instance is suspended. This problem + * indicates an error in a program that used an IUCV connection. + * User action: + * Report this problem to your support organization. + */ + +/*? Text: "iucv_external_interrupt: out of memory\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/lcs +++ linux-5.8.0/Documentation/kmsg/s390/lcs @@ -0,0 +1,169 @@ +/*? + * Text: "%s: Allocating a socket buffer to interface %s failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the LCS device + * @2: network interface + * Description: + * LAN channel station (LCS) devices require a socket buffer (SKB) structure + * for storing incoming data. The LCS device driver failed to allocate an SKB + * structure to the LCS device. A likely cause of this problem is memory + * constraints. + * User action: + * Free some memory and repeat the failed operation. + */ + +/*? + * Text: "%s: Shutting down the LCS device failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the LCS device + * Description: + * A request to shut down a LAN channel station (LCS) device resulted in an + * error. The error is logged in the LCS trace at trace level 4. + * User action: + * Try again to shut down the device. If the error persists, see the LCS trace + * to find out what causes the error. + */ + +/*? + * Text: "%s: Detecting a network adapter for LCS devices failed with rc=%d (0x%x)\n" + * Severity: Error + * Parameter: + * @1: bus ID of the LCS device + * @2: lcs_detect return code in decimal notation + * @3: lcs_detect return code in hexadecimal notation + * Description: + * The LCS device driver could not initialize a network adapter. + * User action: + * Ensure that the physical connection from the port to the network is + * in place. If the error persists, note the return code from the error + * message and contact IBM support. + */ + +/*? + * Text: "%s: A recovery process has been started for the LCS device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the LCS device + * Description: + * The LAN channel station (LCS) device is shut down and restarted. The recovery + * process might have been initiated by a user or started automatically as a + * response to a device problem. + * User action: + * Wait until a message indicates the completion of the recovery process. + */ + +/*? + * Text: "%s: An I/O-error occurred on the LCS device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the LCS device + * Description: + * The LAN channel station (LCS) device reported a problem that can be recovered + * by the LCS device driver. Repeated occurrences of this problem indicate a + * malfunctioning device. + * User action: + * If this problem occurs frequently, initiate a recovery process for the + * device, for example, by writing '1' to the 'recover' sysfs attribute of the + * device. + */ + +/*? + * Text: "%s: A command timed out on the LCS device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the LCS device + * Description: + * The LAN channel station (LCS) device reported a problem that can be recovered + * by the LCS device driver. Repeated occurrences of this problem indicate a + * malfunctioning device. + * User action: + * If this problem occurs frequently, initiate a recovery process for the + * device, for example, by writing '1' to the 'recover' sysfs attribute of the + * device. + */ + +/*? + * Text: "%s: An error occurred on the LCS device, rc=%ld\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the LCS device + * @2: return code + * Description: + * The LAN channel station (LCS) device reported a problem that can be recovered + * by the LCS device driver. Repeated occurrences of this problem indicate a + * malfunctioning device. + * User action: + * If this problem occurs frequently, initiate a recovery process for the + * device, for example, by writing '1' to the 'recover' sysfs attribute of the + * device. + */ + +/*? + * Text: "%s: The LCS device stopped because of an error, dstat=0x%X, cstat=0x%X \n" + * Severity: Warning + * Parameter: + * @1: bus ID of the LCS device + * @2: device status + * @3: subchannel status + * Description: + * The LAN channel station (LCS) device reported an error. The LCS device driver + * might start a device recovery process. + * User action: + * If the device driver does not start a recovery process, initiate a recovery + * process, for example, by writing '1' to the 'recover' sysfs attribute of the + * device. If the problem persists, note the status information provided with + * the message and contact IBM support. + */ + +/*? + * Text: "%s: Starting an LCS device resulted in an error, rc=%d!\n" + * Severity: Error + * Parameter: + * @1: bus ID of the LCS device + * @2: ccw_device_start return code in decimal notation + * Description: + * The LAN channel station (LCS) device driver failed to initialize an LCS + * device. The device is not operational. + * User action: + * Initiate a recovery process, for example, by writing '1' to the 'recover' + * sysfs attribute of the device. If the problem persists, contact IBM support. + */ + +/*? + * Text: "%s: Sending data from the LCS device to the LAN failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: bus ID of the LCS device + * @2: ccw_device_resume return code in decimal notation + * Description: + * The LAN channel station (LCS) device driver could not send data to the LAN + * using the LCS device. This might be a temporary problem. Operations continue + * on the LCS device. + * User action: + * If this problem occurs frequently, initiate a recovery process, for example, + * by writing '1' to the 'recover' sysfs attribute of the device. If the + * problem persists, contact IBM support. + */ + +/*? Text: "Query IPAssist failed. Assuming unsupported!\n" */ +/*? Text: "Stoplan for %s initiated by LGW\n" */ +/*? Text: "Not enough memory to add new multicast entry!\n" */ +/*? Text: "Not enough memory for debug facility.\n" */ +/*? Text: "Adding multicast address failed. Table possibly full!\n" */ +/*? Text: "Error in opening device!\n" */ +/*? Text: "LCS device %s %s IPv6 support\n" */ +/*? Text: "Device %s successfully recovered!\n" */ +/*? Text: "LCS device %s %s Multicast support\n" */ +/*? Text: " Initialization failed\n" */ +/*? Text: "Loading %s\n" */ +/*? Text: "Initialization failed\n" */ +/*? Text: "Terminating lcs module.\n" */ +/*? Text: "Device %s could not be recovered!\n" */ +/*? Text: "Initializing the lcs device driver failed\n" */ +/*? Text: "%s: The lcs device driver failed to recover the device\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/monreader +++ linux-5.8.0/Documentation/kmsg/s390/monreader @@ -0,0 +1,128 @@ +/*? + * Text: "Reading monitor data failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * The z/VM *MONITOR record device driver failed to read monitor data + * because the IUCV REPLY function failed. The read function against + * the monitor record device returns EIO. All monitor data that has been read + * since the last read with 0 size is incorrect. + * User action: + * Disregard all monitor data that has been read since the last read with + * 0 size. If the device driver has been compiled as a separate module, unload + * and reload the monreader module. If the device driver has been compiled + * into the kernel, reboot Linux. For more information about possible causes + * of the error see the IUCV section in "z/VM CP Programming Services" and + * the *MONITOR section in "z/VM Performance". + */ + +/*? + * Text: "z/VM *MONITOR system service disconnected with rc=%i\n" + * Severity: Error + * Parameter: + * @1: IPUSER SEVER return code + * Description: + * The z/VM *MONITOR record device driver receives monitor records through + * an IUCV connection to the z/VM *MONITOR system service. This connection + * has been severed and the read function of the z/VM *MONITOR device driver + * returns EIO. All data received since the last read with 0 size is incorrect. + * User action: + * Disregard all monitor data read since the last read with 0 size. Close and + * reopen the monitor record device. For information about the IPUSER SEVER + * return codes see "z/VM Performance". + */ + +/*? + * Text: "The read queue for monitor data is full\n" + * Severity: Warning + * Description: + * The read function of the z/VM *MONITOR device driver returns EOVERFLOW + * because not enough monitor data has been read since the monitor device + * has been opened. Monitor data already read are valid and subsequent reads + * return valid data but some intermediate data might be missing. + * User action: + * Be aware that monitor data might be missing. Assure that you regularly + * read monitor data after opening the monitor record device. + */ + +/*? + * Text: "Connecting to the z/VM *MONITOR system service failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: IUCV CONNECT return code + * Description: + * The z/VM *MONITOR record device driver receives monitor records through + * an IUCV connection to the z/VM *MONITOR system service. This connection + * could not be established when the monitor record device was opened. If + * the return code is 15, your z/VM guest virtual machine is not authorized + * to connect to the *MONITOR system service. + * User action: + * If the return code is 15, ensure that the IUCV *MONITOR statement is + * included in the z/VM directory entry for your z/VM guest virtual machine. + * For other IUCV CONNECT return codes see the IUCV section in "CP Programming + * Services" and the *MONITOR section in "z/VM Performance". + */ + +/*? + * Text: "Disconnecting the z/VM *MONITOR system service failed with rc=%i\n" + * Severity: Warning + * Parameter: + * @1: IUCV SEVER return code + * Description: + * The z/VM *MONITOR record device driver receives monitor data through an + * IUCV connection to the z/VM *MONITOR system service. This connection + * could not be closed when the monitor record device was closed. You might + * not be able to resume monitoring. + * User action: + * No immediate action is necessary. If you cannot open the monitor record + * device in the future, reboot Linux. For information about the IUCV SEVER + * return codes see the IUCV section in "CP Programming Services" and the + * *MONITOR section in "z/VM Performance". + */ + +/*? + * Text: "The z/VM *MONITOR record device driver cannot be loaded without z/VM\n" + * Severity: Error + * Description: + * The z/VM *MONITOR record device driver uses z/VM system services to provide + * monitor data about z/VM guest operating systems to applications on Linux. + * On Linux instances that run in environments other than the z/VM hypervisor, + * the z/VM *MONITOR record device driver does not provide any useful + * function and the corresponding monreader module cannot be loaded. + * User action: + * Load the z/VM *MONITOR record device driver only on Linux instances that run + * as guest operating systems of the z/VM hypervisor. If the z/VM *MONITOR + * record device driver has been compiled into the kernel, ignore this message. + */ + +/*? + * Text: "The z/VM *MONITOR record device driver failed to register with IUCV\n" + * Severity: Error + * Description: + * The z/VM *MONITOR record device driver receives monitor data through an IUCV + * connection and needs to register with the IUCV device driver. This + * registration failed and the z/VM *MONITOR record device driver was not + * loaded. A possible cause of this problem is insufficient memory. + * User action: + * Free some memory and try again to load the module. If the z/VM *MONITOR + * record device driver has been compiled into the kernel, you might have to + * configure more memory and reboot Linux. If you do not want to read monitor + * data, ignore this message. + */ + +/*? + * Text: "The specified *MONITOR DCSS %s does not have the required type SC\n" + * Severity: Error + * Parameter: + * @1: DCSS name + * Description: + * The DCSS that was specified with the monreader.mondcss kernel parameter or + * with the mondcss module parameter cannot be a *MONITOR DCSS because it is + * not of type SC. + * User action: + * Confirm that you are using the name of the DCSS that has been configured as + * the *MONITOR DCSS on the z/VM hypervisor. If the default name, MONDCSS, is + * used, omit the monreader.mondcss or mondcss parameter. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/monwriter +++ linux-5.8.0/Documentation/kmsg/s390/monwriter @@ -0,0 +1,17 @@ +/*? + * Text: "Writing monitor data failed with rc=%i\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * The monitor stream application device driver used the z/VM diagnose call + * DIAG X'DC' to start writing monitor data. z/VM returned an error and the + * monitor data cannot be written. If the return code is 5, your z/VM guest + * virtual machine is not authorized to write monitor data. + * User action: + * If the return code is 5, ensure that your z/VM guest virtual machine's + * entry in the z/VM directory includes the OPTION APPLMON statement. + * For other return codes see the section about DIAGNOSE Code X'DC' + * in "z/VM CP Programming Services". + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/netiucv +++ linux-5.8.0/Documentation/kmsg/s390/netiucv @@ -0,0 +1,156 @@ +/*? + * Text: "%s: The peer interface of the IUCV device has closed the connection\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the IUCV device + * Description: + * The peer interface on the remote z/VM guest virtual machine has closed the + * connection. Do not expect further packets on this interface. Any packets + * you send to this interface will be dropped. + * User action: + * None. + */ + +/*? + * Text: "%s: The IUCV device failed to connect to z/VM guest %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the IUCV device + * @2: z/VM user ID + * Description: + * The connection cannot be established because the z/VM guest virtual + * machine with the peer interface is not running. + * User action: + * Ensure that the z/VM guest virtual machine with the peer interface is + * running; then try again to establish the connection. + */ + +/*? + * Text: "%s: The IUCV device failed to connect to the peer on z/VM guest %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the IUCV device + * @2: z/VM user ID + * Description: + * The connection cannot be established because the z/VM guest virtual machine + * with the peer interface is not configured for IUCV connections. + * User action: + * Configure the z/VM guest virtual machine with the peer interface for IUCV + * connections; then try again to establish the connection. + */ + +/*? + * Text: "%s: Connecting the IUCV device would exceed the maximum number of IUCV connections\n" + * Severity: Error + * Parameter: + * @1: bus ID of the IUCV device + * Description: + * The connection cannot be established because the maximum number of IUCV + * connections has been reached on the local z/VM guest virtual machine. + * User action: + * Close some of the established IUCV connections on the local z/VM guest + * virtual machine; then try again to establish the connection. + */ + +/*? + * Text: "%s: z/VM guest %s has too many IUCV connections to connect with the IUCV device\n" + * Severity: Error + * Parameter: + * @1: bus ID of the IUCV device + * @2: remote z/VM user ID + * Description: + * Connecting to the remote z/VM guest virtual machine failed because the + * maximum number of IUCV connections for the remote z/VM guest virtual + * machine has been reached. + * User action: + * Close some of the established IUCV connections on the remote z/VM guest + * virtual machine; then try again to establish the connection. + */ + +/*? + * Text: "%s: The IUCV device cannot connect to a z/VM guest with no IUCV authorization\n" + * Severity: Error + * Parameter: + * @1: bus ID of the IUCV device + * Description: + * Because the remote z/VM guest virtual machine is not authorized for IUCV + * connections, the connection cannot be established. + * User action: + * Add the statements 'IUCV ALLOW' and 'IUCV ANY' to the z/VM directory + * entry of the remote z/VM guest virtual machine; then try again to + * establish the connection. See "z/VM CP Planning and Administration" + * for details about the IUCV statements. + */ + +/*? + * Text: "%s: Connecting the IUCV device failed with error %d\n" + * Severity: Error + * Parameter: + * @1: bus ID of the IUCV device + * @2: error code + * Description: + * The connection cannot be established because of an IUCV CONNECT error. + * User action: + * Report this problem to your support organization. + */ + +/*? + * Text: "%s: The IUCV device has been connected successfully to %s\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the IUCV device + * @2: remote z/VM user ID + * Description: + * The connection has been established and the interface is ready to + * transmit communication packages. + * User action: + * None. + */ + +/*? + * Text: "%s: The IUCV interface to %s has been established successfully\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the IUCV device + * @2: remote z/VM user ID + * Description: + * The IUCV interface to the remote z/VM guest virtual machine has been + * established and can be activated with "ifconfig up" or an equivalent + * command. + * User action: + * None. + */ + +/*? + * Text: "%s: The IUCV device is connected to %s and cannot be removed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the IUCV device + * @2: remote z/VM user ID + * Description: + * Removing a connection failed because the interface is active with a peer + * interface on a remote z/VM guest virtual machine. + * User action: + * Deactivate the interface with "ifconfig down" or an equivalent command; + * then try again to remove the interface. + */ + +/*? + * Text: "%s: The peer z/VM guest %s has closed the connection\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the IUCV device + * @2: remote z/VM user ID + * Description: + * The peer interface is no longer available. + * User action: + * Either deactivate and remove the interface, or wait for the peer + * z/VM guest to re-establish the interface. + */ + +/*? Text: "driver unloaded\n" */ +/*? Text: "driver initialized\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/numa +++ linux-5.8.0/Documentation/kmsg/s390/numa @@ -0,0 +1,11 @@ +/*? + * Text: "NUMA mode: %s\n" + * Severity: Informational + * Parameter: + * @1: mode + * Description: + * Linux started with the specified NUMA mode. + * User action: + * None. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/numa_emu +++ linux-5.8.0/Documentation/kmsg/s390/numa_emu @@ -0,0 +1,50 @@ +/*? + * Text: "Not enough memory for %d nodes, reducing node count\n" + * Severity: Warning + * Parameter: + * @1: requested number of nodes + * Description: + * Using the requested memory stripe size for emulating the requested number of + * NUMA nodes requires more than the available memory. The number of nodes is + * specified with the emu_nodes= kernel parameter. The memory stripe size to + * be used for distributing the available memory among the nodes is specified + * with the emu_size= kernel parameter. Fewer nodes were created than the + * requested number; each node has one memory stripe of the requested size. + * User action: + * Specify fewer nodes, reduce the memory stripe size, or make more memory + * available to your Linux instance. + */ + +/*? + * Text: "Creating %d nodes with memory stripe size %ld MB\n" + * Severity: Informational + * Parameter: + * @1: number of nodes + * @2: stripe size + * Description: + * NUMA emulation is activated with the reported number of NUMA nodes. + * The specified memory stripe size is used to distribute, in round-robin + * fashion, the available memory among the nodes. + * User action: + * None. + */ + +/*? + * Text: "Increasing memory stripe size from %ld MB to %ld MB\n" + * Severity: Warning + * Parameter: + * @1: requested memory stripe size + * @2: adjusted memory stripe size + * Description: + * NUMA emulation could not use the requested memory stripe size and + * therefore has increased it to the next possible value. + * The requested memory stripe size is a default value or it was specified + * with the emu_size= kernel parameter. + * The memory stripe size must be a multiple of the memory block size that + * can be read in hexadecimal notation from + * /sys/devices/system/memory/block_size_bytes. + * User action: + * To avoid this message in the future, specify a valid memory stripe size + * with the emu_size= kernel parameter. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/os_info +++ linux-5.8.0/Documentation/kmsg/s390/os_info @@ -0,0 +1,36 @@ +/*? + * Text: "entry %i: %s (addr=0x%lx size=%lu)\n" + * Severity: Informational + * Parameter: + * @1: entry ID + * @2: entry state + * @3: entry address + * @4: entry size + * Description: + * Linux is running in kdump mode and reports information defined by the + * previously running production kernel. Possible values for + * "entry state" are: + * + * - copied: The entry has been found, verified, and copied + * + * - not available: The entry has not been defined + * + * - checksum failed: The entry has been found, but it is not valid + * User action: + * If kdump fails, contact your service organization and include this message + * in the error report. + */ + +/*? + * Text: "crashkernel: addr=0x%lx size=%lu\n" + * Severity: Informational + * Parameter: + * @1: address + * @2: size + * Description: + * Linux is running in kdump mode and reports the address and size of + * the memory area that was reserved for kdump by the previously running + * production kernel. + * User action: + * None. + */ --- linux-5.8.0.orig/Documentation/kmsg/s390/perf +++ linux-5.8.0/Documentation/kmsg/s390/perf @@ -0,0 +1,90 @@ +/*? + * Text: "CPU[%i] CPUM_CF: ver=%u.%u A=%04x E=%04x C=%04x\n" + * Severity: Informational + * Parameter: + * @1: cpu number + * @2: first version number + * @3: second version number + * @4: counter set authorization + * @5: counter set enable controls + * @6: counter set activation controls + * Description: + * This message displays information about the CPU-measurement counter facility + * (CPUM_CF) on a particular CPU. For details, see + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * None. + */ + +/*? + * Text: "CPU[%i] CPUM_SF: basic=%i diag=%i min=%lu max=%lu cpu_speed=%u\n" + * Severity: Informational + * Parameter: + * @1: cpu number + * @2: authorization status for the basic-sampling function + * @3: authorization status for the diagnostic-sampling function + * @4: minimum sampling interval + * @5: maximum sampling interval + * @6: cpu speed + * Description: + * This message displays generic information about the CPU-measurement sampling + * facility (CPUM_SF) on a particular CPU. For details, see + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * None. + */ + +/*? + * Text: "CPU[%i] CPUM_SF: Basic-sampling: a=%i e=%i c=%i bsdes=%i tear=%016lx dear=%016lx\n" + * Severity: Informational + * Parameter: + * @1: cpu number + * @2: authorization control + * @3: enable control + * @4: activation control + * @5: basic-sampling-data-entry size + * @6: tear register contents + * @7: dear register contents + * Description: + * This message displays information about the basic-sampling function of the + * CPU-measurement sampling facility (CPUM_SF) on a particular CPU. + * For details, see + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * None. + */ + +/*? + * Text: "CPU[%i] CPUM_SF: Diagnostic-sampling: a=%i e=%i c=%i dsdes=%i tear=%016lx dear=%016lx\n" + * Severity: Informational + * Parameter: + * @1: cpu number + * @2: authorization control + * @3: enable control + * @4: activation control + * @5: diagnostic-sampling-data-entry size + * @6: tear register contents + * @7: dear register contents + * Description: + * This message displays information about the diagnostic-sampling function of the + * CPU-measurement sampling facility (CPUM_SF) on a particular CPU. + * For details, see + * "The Load-Program-Parameter and the CPU-Measurement Facilities", SA23-2260. + * User action: + * None. + */ + +/*? + * Text: "The sampling facility is already reserved by %p\n" + * Severity: Warning + * Parameter: + * @1: address of perf sampling support owner + * Description: + * A process tried to reserve the sampling facility support, but it was already + * reserved by another process. + * User action: + * Check whether another process, for example, the perf program or OProfile is + * currently active. Retry activating the sampling facility after the other + * process has ended. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/prng +++ linux-5.8.0/Documentation/kmsg/s390/prng @@ -0,0 +1,103 @@ +/* prng */ + +/*? + * Text: "prng runs in TDES mode with chunksize=%d and reseed_limit=%u\n" + * Severity: Informational + * Parameter: + * @1: read chunk size in bytes + * @2: reseed limit + * Description: + * The pseudo-random number device driver started in triple DES mode. + * For IBM mainframes earlier than IBM zEnterprise EC12 (zEC12), + * triple DES is the only available mode. + * As of zEC12, the preferred mode is SHA-512. + * User action: + * If triple DES is the expected mode, no action is required. + * Otherwise, verify that the prng started with the mode= module or + * prng.mode= kernel parameter set to a value other than 1. + * The value 1 forces triple DES mode. Also ensure that the mainframe + * runs with the latest firmware level. + */ + +/*? + * Text: "The prng module stopped after running in triple DES mode\n" + * Severity: Informational + * Description: + * The pseudo-random number device driver was running in triple DES mode. + * The device driver module, prng, was unloaded, or it stopped + * because Linux shut down. + * User action: + * None. + */ + +/*? + * Text: "The prng module cannot start in SHA-512 mode\n" + * Severity: Error + * Description: + * The pseudo-random number device driver was loaded with the mode= module parameter + * or the prng.mode= kernel parameter set to 2. This setting forces SHA-512 mode, + * but the required support for MSA 5 is not available. This support requires an IBM + * zEnterprise EC12 (zEC12) or later mainframe. + * User action: + * If your mainframe is earlier than zEC12, set the mode= module or + * prng.mode= kernel parameter to 0 or 1 to run the + * pseudo-random number device driver in triple DES mode. + * Otherwise, ensure that MSA 5 support available. + */ + +/*? + * Text: "prng runs in SHA-512 mode with chunksize=%d and reseed_limit=%u\n" + * Severity: Informational + * Parameter: + * @1: read chunk size in bytes + * @2: reseed limit + * Description: + * The pseudo-random number device driver started in SHA-512 mode. + * As of IBM zEnterprise EC12, this is the preferred mode. + * User action: + * None. + */ + +/*? + * Text: "The prng module stopped after running in SHA-512 mode\n" + * Severity: Informational + * Description: + * The pseudo-random number device driver was running in SHA-512 mode. + * The device driver module, prng, was unloaded, or stopped + * because Linux shut down. + * User action: + * None. + */ + +/*? + * Text: "The prng self test state test for the SHA-512 mode failed\n" + * Severity: Error + * Description: + * The pseudo-random number device driver is not operational because the self test failed. + * After processing a published National Institute of Standards and Technology (NIST) test vector for the + * Deterministic Random Bit Generator (DRBG) algorithm, the device driver + * was not in the expected working state. This failure might indicate + * that the cryptographic software or hardware is not working correctly. + * The processed NIST test vector was: Hash Drbg, Sha-512, Count #0. + * User action: + * Unload and reload the prng module, or + * if prng was compiled into the kernel, restart Linux. + * If the error persists, contact your support organization. + */ + +/*? + * Text: "The prng self test data test for the SHA-512 mode failed\n" + * Severity: Error + * Description: + * The pseudo-random number device driver is not operational because the self test failed. + * After processing a published National Institute of Standards and Technology (NIST) test vector for the + * Deterministic Random Bit Generator (DRBG) algorithm, the device driver + * did not produce the expected pseudo-random data. This failure might indicate + * that the cryptographic software or hardware is not working correctly. + * The processed NIST test vector was: Hash Drbg, Sha-512, Count #0. + * User action: + * Unload and reload the prng module, or + * if prng was compiled into the kernel, restart Linux. + * If the error persists, contact your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/qeth +++ linux-5.8.0/Documentation/kmsg/s390/qeth @@ -0,0 +1,929 @@ +/*? + * Text: "%s: The LAN is offline\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A start LAN command was sent by the qeth device driver but the physical or + * virtual adapter has not started the LAN. The LAN might take a few seconds + * to become available. + * User action: + * Check the status of the qeth device, for example, with the lsqeth command. + * If the device does not become operational within a few seconds, initiate a + * recovery process, for example, by writing '1' to the 'recover' sysfs + * attribute of the device. + */ + +/*? + * Text: "%s: A recovery process has been started for the device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A recovery process was started either by the qeth device driver or through + * a user command. + * User action: + * Wait until a message indicates the completion of the recovery process. + */ + +/*? + * Text: "%s: The qeth device driver failed to recover an error on the device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth device driver performed an automatic recovery operation to recover + * an error on a qeth device. The recovery operation failed. + * User action: + * Try the following actions in the given order: i) Check the status of the + * qeth device, for example, with the lsqeth command. ii) Initiate a recovery + * process by writing '1' to the 'recover' sysfs attribute of the device. + * iii) Ungroup and regroup the subchannel triplet of the device. vi) Reboot + * Linux. v) If the problem persists, gather Linux debug data and report the + * problem to your support organization. + */ + +/*? + * Text: "%s: Device recovery failed to restore all offload features\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth device driver performed a recovery operation on a qeth device. Part + * of the recovery is to restore the offload features that were enabled before + * the recovery. At least one of those offload features could not be restored. + * User action: + * Check which offload features are enabled on the device, for example with + * the "ethtool -k" command. Try to explicitly re-enable the missing offload + * features for the device, for example with the "ethtool -K" command. + */ + +/*? + * Text: "%s: The link for interface %s on CHPID 0x%X failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * @3: CHPID + * Description: + * A network link failed. A possible reason for this error is that a physical + * network cable has been disconnected. + * User action: + * Ensure that the network cable on the adapter hardware is connected properly. + * If the connection is to a guest LAN, ensure that the device is still coupled + * to the guest LAN. + */ + +/*? + * Text: "%s: The link for %s on CHPID 0x%X has been restored\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * @3: CHPID + * Description: + * A failed network link has been re-established. A device recovery is in + * progress. + * User action: + * Wait until a message indicates the completion of the recovery process. + */ + +/*? + * Text: "%s: A hardware operation timed out on the device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A hardware operation timed out on the qeth device. + * User action: + * Check the status of the qeth device, for example, with the lsqeth command. + * If the device is not operational, initiate a recovery process, for example, + * by writing '1' to the 'recover' sysfs attribute of the device. + */ + +/*? + * Text: "%s: The adapter hardware is of an unknown type\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth device driver does not recognize the adapter hardware. The cause + * of this problem could be a hardware error or a Linux level that does not + * support your adapter hardware. + * User action: + * i) Investigate if your adapter hardware is supported by your Linux level. + * Consider using hardware that is supported by your Linux level or upgrading + * to a Linux level that supports your hardware. ii) Install the latest + * firmware on your adapter hardware. iii) If the problem persists and is not + * caused by a version mismatch, contact IBM support. + */ + +/*? + * Text: "%s: The adapter is used exclusively by another host\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth adapter is exclusively used by another host. + * User action: + * Use another qeth adapter or configure this one not exclusively to a + * particular host. + */ + +/*? + * Text: "%s: QDIO reported an error, rc=%i\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: return code + * Description: + * The QDIO subsystem reported an error. + * User action: + * Check for related QDIO errors. Check the status of the qeth device, for + * example, with the lsqeth command. If the device is not operational, initiate + * a recovery process, for example, by writing '1' to the 'recover' sysfs + * attribute of the device. + */ + +/*? + * Text: "%s: There is no kernel module to support discipline %d\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * @2: discipline + * Description: + * The qeth device driver or a user command requested a kernel module for a + * particular qeth discipline. Either the discipline is not supported by the + * qeth device driver or the requested module is not available to your Linux + * system. + * User action: + * Check if the requested discipline module has been compiled into the kernel + * or is present in /lib/modules//kernel/drivers/s390/net. + */ + +/*? + * Text: "Initializing the qeth device driver failed\n" + * Severity: Error + * Parameter: + * Description: + * The base module of the qeth device driver could not be initialized. + * User action: + * See errno.h to determine the reason for the error. + * i) Reboot Linux. ii) If the problem persists, gather Linux debug data and + * report the problem to your support organization. + */ + +/*? + * Text: "%s: Registering IP address %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: IP address + * Description: + * An IP address could not be registered with the network adapter. + * User action: + * Check if another operating system instance has already registered the + * IP address with the same network adapter or at the same logical IP subnet. + */ + +/*? + * Text: "%s: Reading the adapter MAC address failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth device driver could not read the MAC address from the network + * adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Starting ARP processing support for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not start ARP support on the network adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Starting IP fragmentation support for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not start IP fragmentation support on the + * network adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Starting VLAN support for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not start VLAN support on the network adapter. + * User action: + * None if you do not require VLAN support. If you need VLAN support, + * ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Starting multicast support for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not start multicast support on the network + * adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Activating IPv6 support for %s failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not activate IPv6 support on the network + * adapter. + * User action: + * None if you do not require IPv6 communication. If you need IPv6 support, + * ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Enabling the passthrough mode for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not enable the passthrough mode on the + * network adapter. The passthrough mode is required for all network traffic + * other than IPv4. In particular, the passthrough mode is required for IPv6 + * traffic. + * User action: + * None if all you want to support is IPv4 communication. If you want to support + * IPv6 or other network traffic apart from IPv4, ungroup and regroup the + * subchannel triplet of the device. If this does not resolve the problem, + * reboot Linux. If the problem persists, gather Linux debug data and report + * the problem to your support organization. + */ + +/*? + * Text: "%s: Enabling broadcast filtering for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not enable broadcast filtering on the network + * adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Setting up broadcast filtering for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not set up broadcast filtering on the network + * adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Setting up broadcast echo filtering for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not set up broadcast echo filtering on the + * network adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: Starting HW checksumming for %s failed, using SW checksumming\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The network adapter supports hardware checksumming for IP packages + * but the qeth device driver could not start hardware checksumming on the + * adapter. The qeth device driver continues to use software checksumming for + * IP packages. + * User action: + * None if you do not require hardware checksumming for network + * traffic. If you want to enable hardware checksumming, ungroup and regroup + * the subchannel triplet of the device. If this does not resolve the problem, + * reboot Linux. If the problem persists, gather Linux debug data and report + * the problem to your support organization. + */ + +/*? + * Text: "%s: Enabling HW checksumming for %s failed, using SW checksumming\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The network adapter supports hardware checksumming for IP packages + * but the qeth device driver could not enable hardware checksumming on the + * adapter. The qeth device driver continues to use software checksumming for + * IP packages. + * User action: + * None if you do not require hardware checksumming for network + * traffic. If you want to enable hardware checksumming, ungroup and regroup + * the subchannel triplet of the device. If this does not resolve the problem, + * reboot Linux. If the problem persists, gather Linux debug data and report + * the problem to your support organization. + */ + +/*? + * Text: "%s: Starting outbound TCP segmentation offload for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The network adapter supports TCP segmentation offload, but the qeth device + * driver could not start this support on the adapter. + * User action: + * None if you do not require TCP segmentation offload. If you want to + * enable TCP segmentation offload, ungroup and regroup the subchannel triplet + * of the device. If this does not resolve the problem, reboot Linux. If the + * problem persists, gather Linux debug data and report the problem to your + * support organization. + */ + +/*? + * Text: "%s: The network adapter failed to generate a unique ID\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * In IBM mainframe environments, network interfaces are not identified by + * a specific MAC address. Therefore, the network adapters provide the network + * interfaces with unique IDs to be used in their IPv6 link local addresses. + * Without such a unique ID, duplicate addresses might be assigned in other + * LPARs. + * User action: + * Install the latest firmware on the adapter hardware. Manually, configure + * an IPv6 link local address for this device. + */ + +/*? + * Text: "There is no IPv6 support for the layer 3 discipline\n" + * Severity: Warning + * Description: + * If you want to use IPv6 with the layer 3 discipline, you need a Linux kernel + * with IPv6 support. Because your Linux kernel has not been compiled with + * IPv6 support, you cannot use IPv6 with the layer 3 discipline, even if your + * adapter supports IPv6. + * User action: + * Use a Linux kernel that has been complied to include IPv6 support if you + * want to use IPv6 with layer 3 qeth devices. + */ + +/*? + * Text: "%s: The qeth device is not configured for the OSI layer required by z/VM\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A qeth device that connects to a virtual network on z/VM must be configured for the + * same Open Systems Interconnection (OSI) layer as the virtual network. An ETHERNET + * guest LAN or VSWITCH uses the data link layer (layer 2) while an IP guest LAN + * or VSWITCH uses the network layer (layer 3). + * User action: + * If you are connecting to an ETHERNET guest LAN or VSWITCH, set the layer2 sysfs + * attribute of the qeth device to 1. If you are connecting to an IP guest LAN or + * VSWITCH, set the layer2 sysfs attribute of the qeth device to 0. + */ + +/*? + * Text: "%s: Starting source MAC-address support for %s failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The qeth device driver could not enable source MAC-address on the network + * adapter. + * User action: + * Ungroup and regroup the subchannel triplet of the device. If this does not + * resolve the problem, reboot Linux. If the problem persists, gather Linux + * debug data and report the problem to your support organization. + */ + +/*? + * Text: "%s: MAC address %pM already exists\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: MAC-address + * Description: + * Setting the MAC address for the qeth device fails, because this + * MAC address is already defined on the OSA CHPID. + * User action: + * Use a different MAC address for this qeth device. + */ + +/*? + * Text: "%s: MAC address %pM is not authorized\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: MAC-address + * Description: + * This qeth device is a virtual network interface card (NIC), to which z/VM + * has already assigned a MAC address. z/VM MAC address verification does + * not allow you to change this predefined address. + * User action: + * None; use the MAC address that has been assigned by z/VM. + */ + +/*? + * Text: "%s: The HiperSockets network traffic analyzer is activated\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The sysfs 'sniffer' attribute of the HiperSockets device has the value '1'. + * The corresponding HiperSockets interface has been switched into promiscuous mode. + * As a result, the HiperSockets network traffic analyzer is started on the device. + * User action: + * None. + */ + + /*? + * Text: "%s: The HiperSockets network traffic analyzer is deactivated\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The sysfs 'sniffer' attribute of the HiperSockets device has the value '1'. + * Promiscuous mode has been switched off for the corresponding HiperSockets interface + * As a result, the HiperSockets network traffic analyzer is stopped on the device. + * User action: + * None. + */ + +/*? + * Text: "%s: The device is not authorized to run as a HiperSockets network traffic analyzer\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The sysfs 'sniffer' attribute of the HiperSockets device has the value '1'. + * The corresponding HiperSockets interface is switched into promiscuous mode + * but the network traffic analyzer (NTA) rules configured at the Support Element (SE) + * do not allow tracing. Possible reasons are: + * - Tracing is not authorized for all HiperSockets LANs in the mainframe system + * - Tracing is not authorized for this HiperSockets LAN + * - LPAR is not authorized to enable an NTA + * User action: + * Configure appropriate HiperSockets NTA rules at the SE. + */ + +/*? + * Text: "%s: A HiperSockets network traffic analyzer is already active in the HiperSockets LAN\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The sysfs 'sniffer' attribute of the HiperSockets device has the value '1'. + * The HiperSockets interface is switched into promiscuous mode but another + * HiperSockets device on the same HiperSockets LAN is already running as + * a network traffic analyzer. + * A HiperSockets LAN can only have one active network traffic analyzer. + * User action: + * Do not configure multiple HiperSockets devices in the same HiperSockets LAN as + * tracing devices. + */ + +/*? + * Text: "%s: Enabling HW TX checksumming for %s failed, using SW TX checksumming\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * Description: + * The network adapter supports hardware checksumming for outgoing IP packages + * but the qeth device driver could not enable hardware TX checksumming on the + * adapter. The qeth device driver continues to use software checksumming for + * outgoing IP packages. + * User action: + * None if you do not require hardware checksumming for outgoing network + * traffic. If you want to enable hardware checksumming, ungroup and regroup + * the subchannel triplet of the device. If this does not resolve the problem, + * reboot Linux. If the problem persists, gather Linux debug data and report + * the problem to your support organization. + */ + +/*? + * Text: "%s: A connection could not be established because of an OLM limit\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * z/OS has activated Optimized Latency Mode (OLM) for a connection through an OSA Express3 adapter. + * This reduces the maximum number of concurrent connections per physical port for shared adapters. + * The new connection would exceed the maximum. Linux cannot establish further connections using + * this adapter. + * User action: + * If possible, deactivate an existing connection that uses this adapter and try again to establish + * the new connection. If you cannot free an existing connection, use a different adapter for the + * new connection. + */ + +/*? + * Text: "%s: Setting the device online failed because of insufficient authorization\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The qeth device is configured with OSX CHPIDs. An OSX CHPID cannot be activated unless the LPAR is explicitly authorized to access it. + * For z/VM guest operating systems, the z/VM user ID must be explicitly authorized in addition to the LPAR. + * You grant these authorizations through the Service Element. + * User action: + * At the Service Element, authorize the LPAR and, if applicable, the z/VM user ID for using the OSX CHPIDs with which the qeth device has been configured. + * Then try again to set the device online. + */ + +/*? + * Text: "%s: portname is deprecated and is ignored\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * An OSA-Express port name was required to identify a shared OSA port. + * All operating system instances that shared the port had to use the same port name. + * This requirement no longer applies, and the specified portname attribute is ignored. + * User action: + * For future upgrades, remove OSA port name specifications from your + * network configuration. + */ + +/*? Text: "core functions removed\n" */ +/*? Text: "%s: Device is a%s card%s%s%s\nwith link type %s.\n" */ +/*? Text: "%s: issue_next_read failed: no iob available!\n" */ +/*? Text: "%s: Priority Queueing not supported\n" */ +/*? Text: "%s: sense data available. cstat 0x%X dstat 0x%X\n" */ +/*? Text: "loading core functions\n" */ +/*? Text: "%s: MAC address %pM successfully registered on device %s\n" */ +/*? Text: "%s: Device successfully recovered!\n" */ +/*? Text: "register layer 2 discipline\n" */ +/*? Text: "unregister layer 2 discipline\n" */ +/*? Text: "%s: Hardware IP fragmentation not supported on %s\n" */ +/*? Text: "%s: IPv6 not supported on %s\n" */ +/*? Text: "%s: VLAN not supported on %s\n" */ +/*? Text: "%s: Inbound source MAC-address not supported on %s\n" */ +/*? Text: "%s: IPV6 enabled\n" */ +/*? Text: "%s: ARP processing not supported on %s!\n" */ +/*? Text: "%s: Hardware IP fragmentation enabled \n" */ +/*? Text: "%s: set adapter parameters not supported.\n" */ +/*? Text: "%s: VLAN enabled\n" */ +/*? Text: "register layer 3 discipline\n" */ +/*? Text: "%s: Outbound TSO enabled\n" */ +/*? Text: "%s: Broadcast not supported on %s\n" */ +/*? Text: "%s: Outbound TSO not supported on %s\n" */ +/*? Text: "%s: Inbound HW Checksumming not supported on %s,\ncontinuing using Inbound SW Checksumming\n" */ +/*? Text: "%s: Using no checksumming on %s.\n" */ +/*? Text: "%s: Broadcast enabled\n" */ +/*? Text: "%s: Multicast not supported on %s\n" */ +/*? Text: "%s: Using SW checksumming on %s.\n" */ +/*? Text: "%s: HW Checksumming (%sbound) enabled\n" */ +/*? Text: "unregister layer 3 discipline\n" */ +/*? Text: "%s: Multicast enabled\n" */ +/*? Text: "%s: QDIO data connection isolation is deactivated\n" */ +/*? Text: "%s: QDIO data connection isolation is activated\n" */ +/*? Text: "%s: Adapter does not support QDIO data connection isolation\n" */ +/*? Text: "%s: Adapter is dedicated. QDIO data connection isolation not supported\n" */ +/*? Text: "%s: TSO does not permit QDIO data connection isolation\n" */ +/*? Text: "%s: HW TX Checksumming enabled\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "qeth_l3: ignoring TR device\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ + +/*? + * Text: "%s: Turning off reflective relay mode at the adjacent switch failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The policy for the QDIO data connection isolation was + * changed successfully, and communications are now handled according to the + * new policy. The ISOLATION_FORWARD policy is no longer used, but the qeth + * device driver could not turn off the reflective relay mode on the adjacent + * switch port. + * User action: + * Check the adjacent switch for errors and correct the problem. + */ + +/*? + * Text: "%s: The adjacent switch port does not support reflective relay mode\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The 'isolation' sysfs attribute of the qeth device could not be set to 'forward'. + * This setting selects the ISOLATION_FORWARD policy for the QDIO data connection + * isolation. The ISOLATION_FORWARD policy requires a network adapter in Virtual + * Ethernet Port Aggregator (VEPA) mode with an adjacent switch port in reflective + * relay mode. + * User action: + * Use a switch port that supports reflective relay mode if you want to use the + * ISOLATION_FORWARD policy for the qeth device. + */ + +/*? + * Text: "%s: The reflective relay mode cannot be enabled at the adjacent switch port" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The 'isolation' sysfs attribute of the qeth device could not be set to 'forward'. + * This setting selects the ISOLATION_FORWARD policy for the QDIO data connection + * isolation. The ISOLATION_FORWARD policy requires a network adapter in Virtual + * Ethernet Port Aggregator (VEPA) mode with an adjacent switch port in reflective relay + * mode. The qeth device driver failed to enable the required reflective relay mode on + * the adjacent switch port although the switch port supports this mode. + * User action: + * Enable reflective relay mode on the switch for the adjacent port and try again. + */ + +/*? + * Text: "%s: Interface %s is down because the adjacent port is no longer in reflective relay mode\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * @2: interface name + * Description: + * The ISOLATION_FORWARD policy is active for the QDIO data connection isolation + * of the qeth device. This policy requires a network adapter in Virtual Ethernet + * Port Aggregator (VEPA) mode with an adjacent switch port in reflective relay mode. + * The reflective relay mode on the adjacent switch port was disabled. The qeth device + * was set offline and the interface was deactivated to prevent any unintended network traffic. + * User action: + * Enable the reflective relay mode again on the adjacent port or use the 'isolation' + * sysfs attribute of the qeth device to set a different policy for the QDIO data connection + * isolation. You can then resume operations by setting the qeth device back + * online and activating the interface. + */ + +/*? + * Text: "%s: Failed to create completion queue\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The HiperSockets device could not be configured with a completion queue. + * A completion queue is required to operate AF_IUCV communication in an LPAR. + * User action: + * i) Investigate if you have the latest firmware level in place. + * ii) If the problem persists and is not caused by a version mismatch, contact IBM + * support. + */ + +/*? + * Text: "%s: Completion Queueing supported\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The HiperSockets device supports completion queueing. This is required to + * set up AF_IUCV communication in an LPAR. + */ + +/*? + * Text: "%s: Completion Queue support enabled" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The HiperSockets device is enabled for completion queueing. This is part of + * the process to set up AF_IUCV communication in an LPAR. + */ + +/*? + * Text: "%s: Completion Queue support disabled" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The HiperSockets device is disabled for completion queueing. This device + * cannot or no longer be used to set up AF_IUCV communication in an LPAR. + */ + +/*? + * Text: "%s: The device represents a Bridge Capable Port\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * Description: + * You can configure this device as a Bridge Port. + * User action: + * None. + */ + +/*? + * Text: "%s: The device is not configured as a Bridge Port\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The Bridge Port role cannot be withdrawn from a device + * that is not configured as a Bridge Port. + * User action: + * None. + */ + +/*? + * Text: "%s: The LAN already has a primary Bridge Port\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A LAN can have multiple secondary Bridge Ports, but only + * one primary Bridge Port. Configuring the device as a + * primary Bridge Port failed because another port on the + * LAN has been configured as the primary Bridge Port. + * User action: + * Find out which operating system instance has configured the primary + * Bridge Port. Assure that the primary role for this port is withdrawn + * before trying again to configure your device as the primary Bridge + * Port. Alternatively, consider configuring your device as a secondary + * Bridge Port. + */ + +/*? + * Text: "%s: The device is already a secondary Bridge Port\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A device cannot be configured as a primary or secondary + * Bridge Port if it is already configured as a secondary Bridge Port. + * User action: + * None, if you want the device to be a secondary Bridge Port. + * If you want to configure the device as the primary Bridge Port, + * withdraw the secondary role by writing 'none' to the 'bridgeport_role' + * sysfs attribute of the device. Then try again to configure the + * device as the primary Bridge Port. + */ + +/*? + * Text: "%s: The LAN cannot have more secondary Bridge Ports\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A LAN can have up to five secondary Bridge Ports. + * You cannot configure a further device as a secondary + * Bridge Port unless the Bridge Ports role is withdrawn from one of + * the existing secondary Bridge Ports. + * User action: + * Assure that the Bridge Port role is withdrawn from one of the + * existing secondary Bridge Ports before trying again to configure your + * device as a secondary Bridge Port. + */ + +/*? + * Text: "%s: The device is already a primary Bridge Port\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * A device cannot be configured as a primary or secondary + * Bridge Port if it is already configured as a primary Bridge Port. + * User action: + * None, if you want the device to be a primary Bridge Port. + * If you want to configure the device as a secondary Bridge Port, + * withdraw the primary role by writing 'none' to the 'bridgeport_role' + * sysfs attribute of the device. Then try again to configure the + * device as the secondary Bridge Port. + */ + +/*? + * Text: "%s: The device is not authorized to be a Bridge Port\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * The device cannot be configured as a Bridge Port because + * the required authorizations in the hardware are not in place. + * User action: + * See your hardware documentation about how to authorize + * ports for becoming a Bridge Port. + */ + +/*? + * Text: "%s: A Bridge Port is already configured by a different operating system\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * Linux instances cannot configure the target port as a Bridge Port. + * Another operating system already uses a Bridge Port on the HiperSockets + * or on the OSA adapter. For example, a z/VM instance might be using + * a port in a VSWITCH configuration. Multiple Bridge Ports on the same + * HiperSockets or OSA adapter must be configured by instances of the same + * operating system, for example, all Linux or all z/VM. + * User action: + * Reconsider your network topology. Configure Bridge Ports only for ports + * on adapters where any other Bridge Ports are configured by other Linux + * instances. + */ + +/*? + * Text: "%s: Setting address notification failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the qeth device + * Description: + * Enabling or disabling the address notification feature of a + * HiperSockets device failed. The device might not be configured as a + * Bridge Port. + * User action: + * None, unless you need address notifications for this device. + * If you need notifications, confirm that your device is attached to a + * HiperSockets LAN that supports Bridge Capable Ports and that your + * device is configured as a Bridge Port. If the 'bridgeport_role' + * sysfs attribute of the device contains, one of the values 'primary' + * or 'secondary' and you cannot set the address notification, contact + * your support organization. + */ + +/*? + * Text: "%s: Address notification from the Bridge Port stopped %s (%s)\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the qeth device + * @2: network interface name + * @3: error reported by the hardware + * Description: + * A Bridge Port no longer provides address notifications. + * Possible reasons include traffic overflow and that the device is no + * longer configured as a Bridge Port. A udev event with + * BRIDGEDHOST=abort was emitted to alert applications that rely on the + * address notifications. + * User action: + * None. + */ + +/*? + * Text: "%s: The qeth driver ran out of channel command buffers\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the qeth device + * Description: + * Command buffers can temporarily run out during periods of + * intense network configuration activities. + * The device driver recovers from this condition as outstanding + * commands are completed. + * User action: + * Wait for a short time. If the problem persists, + * initiate a recovery process by writing '1' to the 'recover' + * sysfs attribute of the device. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/s390dbf +++ linux-5.8.0/Documentation/kmsg/s390/s390dbf @@ -0,0 +1,83 @@ +/*? + * Text: "Root becomes the owner of all s390dbf files in sysfs\n" + * Severity: Warning + * Description: + * The S/390 debug feature you are using only supports uid/gid = 0. + * User action: + * None. + */ + +/*? + * Text: "Registering debug feature %s failed\n" + * Severity: Error + * Parameter: + * @1: feature name + * Description: + * The initialization of an S/390 debug feature failed. A likely cause of this + * problem is memory constraints. The system keeps running, but the debug + * data for this feature will not be available in sysfs. + * User action: + * Consider assigning more memory to your LPAR or z/VM guest virtual machine. + */ + +/*? + * Text: "Registering view %s/%s would exceed the maximum number of views %i\n" + * Severity: Error + * Parameter: + * @1: feature name + * @2: view name + * @3: maximum + * Description: + * The maximum number of allowed debug feature views has been reached. The + * view has not been registered. The system keeps running but the new view + * will not be available in sysfs. This is a program error. + * User action: + * Report this problem to your support partner. + */ + +/*? + * Text: "%s is not a valid level for a debug feature\n" + * Severity: Warning + * Parameter: + * @1: level + * Description: + * Setting a new level for a debug feature by using the 'level' sysfs attribute + * failed. Valid levels are the minus sign (-) and the integers in the + * range 0 to 6. The minus sign switches off the feature. The numbers switch + * the feature on, where higher numbers produce more debug output. + * User action: + * Write a valid value to the 'level' sysfs attribute. + */ + +/*? + * Text: "Flushing debug data failed because %c is not a valid area\n" + * Severity: Informational + * Parameter: + * @1: debug area number + * Description: + * Flushing a debug area by using the 'flush' sysfs attribute failed. Valid + * values are the minus sign (-) for flushing all areas, or the number of the + * respective area for flushing a single area. + * User action: + * Write a valid area number or the minus sign (-) to the 'flush' sysfs + * attribute. + */ + +/*? + * Text: "Allocating memory for %i pages failed\n" + * Severity: Informational + * Parameter: + * @1: number of pages + * Description: + * Setting the debug feature size by using the 'page' sysfs attribute failed. + * Linux did not have enough memory for expanding the debug feature to the + * requested size. + * User action: + * Use a smaller number of pages for the debug feature or allocate more + * memory to your LPAR or z/VM guest virtual machine. + */ + +/*? Text: "%s: set new size (%i pages)\n" */ +/*? Text: "%s: switched off\n" */ +/*? Text: "%s: level %i is out of range (%i - %i)\n" */ +/*? Text: "Registering view %s/%s failed due to out of memory\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/sclp_cmd +++ linux-5.8.0/Documentation/kmsg/s390/sclp_cmd @@ -0,0 +1,44 @@ +/*? Text: "sync request failed (cmd=0x%08x, status=0x%02x)\n" */ +/*? Text: "readcpuinfo failed (response=0x%04x)\n" */ +/*? Text: "configure cpu failed (cmd=0x%08x, response=0x%04x)\n" */ +/*? Text: "configure channel-path failed (cmd=0x%08x, response=0x%04x)\n" */ +/*? Text: "read channel-path info failed (response=0x%04x)\n" */ +/*? Text: "assign storage failed (cmd=0x%08x, response=0x%04x, rn=0x%04x)\n" */ +/*? Text: "configure PCI I/O adapter failed: cmd=0x%08x response=0x%04x\n" */ +/*? Text: "request failed (status=0x%02x)\n" */ +/*? Text: "request failed with response code 0x%x\n" */ + +/*? + * Text: "Memory hotplug state changed, suspend refused.\n" + * Severity: Error + * Description: + * Suspend is refused after a memory hotplug operation was performed. + * User action: + * The system needs to be restarted and no memory hotplug operation must be + * performed in order to allow suspend. + */ + +/*? + * Text: "Standby memory at 0x%llx (%lluM of %lluM usable)\n" + * Severity: Informational + * Parameter: + * @1: start address of standby memory + * @2: usable memory in MB + * @3: total detected memory in MB + * Description: + * Standby memory was detected. It can be used for memory hotplug only + * if it is aligned to the Linux hotplug memory block size. + * If the aligned amount of memory matches the total amount, + * all detected standby memory can be used. Otherwise, some of the detected + * memory is unaligned and cannot be used. + * User action: + * None, if the usable and the total amount of detected standby memory match. + * If the amounts of memory do not match, + * check the memory setup of your guest virtual machine and ensure that + * the standby memory start and end + * address is aligned to the Linux hotplug memory block size. + * On Linux, issue "cat /sys/devices/system/memory/block_size_bytes" + * to find the hotplug memory block size value in hexadecimal notation. + * On z/VM, query your memory setup with "vmcp q v store". + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/sclp_config +++ linux-5.8.0/Documentation/kmsg/s390/sclp_config @@ -0,0 +1,15 @@ +/*? + * Text: "CPU capability may have changed\n" + * Severity: Informational + * Description: + * The capability of the CPUs in the configuration may have been upgraded + * or downgraded. This message may also appear if the capability of the + * CPUs in the configuration did not change. + * For details see the STORE SYSTEM INFORMATION description in the + * "Principles of Operation." + * User action: + * The user can examine /proc/sysinfo for CPU capability values. + */ +/*? Text: "Open for Business request failed with response code 0x%04x\n" */ +/*? Text: "SCLP receiver did not register to receive Configuration Management Data Events.\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/sclp_cpi +++ linux-5.8.0/Documentation/kmsg/s390/sclp_cpi @@ -0,0 +1,3 @@ +/*? Text: "request failed (status=0x%02x)\n" */ +/*? Text: "request failed with response code 0x%x\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/sclp_ocf +++ linux-5.8.0/Documentation/kmsg/s390/sclp_ocf @@ -0,0 +1 @@ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/sclp_sdias +++ linux-5.8.0/Documentation/kmsg/s390/sclp_sdias @@ -0,0 +1,4 @@ +/*? Text: "sclp_send failed for get_nr_blocks\n" */ +/*? Text: "SCLP error: %x\n" */ +/*? Text: "sclp_send failed: %x\n" */ +/*? Text: "Error from SCLP while copying hsa. Event status = %x\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/scm_block +++ linux-5.8.0/Documentation/kmsg/s390/scm_block @@ -0,0 +1,51 @@ +/*? + * Text: "%lx: The capabilities of the SCM increment changed\n" + * Severity: Informational + * Parameter: + * @1: start address of the SCM increment + * Description: + * A configuration change is in progress for the storage class memory (SCM) + * increment. + * User action: + * Verify that the capability of the SCM increment is as intended; for + * example, with lsscm. + */ + +/*? + * Text: "An I/O operation to SCM failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * An error occurred during I/O to storage class memory (SCM). The operation + * was repeated, but the maximum number of retries was exceeded before the + * request could be fulfilled. + * User action: + * Contact your support organization. + */ + +/*? + * Text: "%lx: Write access to the SCM increment is suspended\n" + * Severity: Informational + * Parameter: + * @1: start address of the SCM increment + * Description: + * A concurrent firmware upgrade is in progress. For the duration of the + * upgrade, write access to the storage class memory (SCM) increment has been + * suspended. + * User action: + * None. + */ + +/*? + * Text: "%lx: Write access to the SCM increment is restored\n" + * Severity: Informational + * Parameter: + * @1: start address of the SCM increment + * Description: + * Write access to the storage class memory (SCM) increment was restored + * after a temporary suspension during a concurrent firmware upgrade. + * User action: + * None. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/setup +++ linux-5.8.0/Documentation/kmsg/s390/setup @@ -0,0 +1,165 @@ +/*? + * Text: "The initial RAM disk does not fit into the memory\n" + * Severity: Error + * Description: + * The load address and the size of the initial RAM disk specify a memory + * area that is not available. + * User action: + * Lower the load address of the initial RAM disk, reduce the size of the + * initial RAM disk, or increase the size of the system memory to make the + * initial RAM disk fit into the memory. + */ + +/*? + * Text: "The maximum memory size is %luMB\n" + * Severity: Notice + * Parameter: + * @1: size in MB + * Description: + * The system memory size cannot exceed the amount of memory that is + * provided by the real or virtual hardware. It can be further reduced + * through an upper memory address limit that is specified with the + * mem= kernel parameter. + * User action: + * None. + */ + +/*? + * Text: "Linux is running as a z/VM guest operating system in 31-bit mode\n" + * Severity: Informational + * Description: + * The 31-bit Linux kernel detected that it is running as a guest operating + * system of the z/VM hypervisor. + * User action: + * None. + */ + +/*? + * Text: "Linux is running natively in 31-bit mode\n" + * Severity: Informational + * Description: + * The 31-bit Linux kernel detected that it is running on an IBM mainframe, + * either as the sole operating system in an LPAR or as the sole operating + * system on the entire mainframe. The Linux kernel is not running as a + * guest operating system of the z/VM hypervisor. + * User action: + * None. + */ + +/*? + * Text: "The hardware system has IEEE compatible floating point units\n" + * Severity: Informational + * Description: + * The Linux kernel detected that it is running on a hardware system with + * CPUs that have IEEE compatible floating point units. + * User action: + * None. + */ + +/*? + * Text: "The hardware system has no IEEE compatible floating point units\n" + * Severity: Informational + * Description: + * The Linux kernel detected that it is running on a hardware system with + * CPUs that do not have IEEE compatible floating point units. + * User action: + * None. + */ + +/*? + * Text: "Linux is running as a z/VM guest operating system in 64-bit mode\n" + * Severity: Informational + * Description: + * The 64-bit Linux kernel detected that it is running as a guest operating + * system of the z/VM hypervisor. + * User action: + * None. + */ + +/*? + * Text: "Linux is running under KVM in 64-bit mode\n" + * Severity: Informational + * Description: + * The 64-bit Linux kernel detected that it is running as a guest operating + * system of the KVM hypervisor. + * User action: + * None. + */ + +/*? + * Text: "Linux is running natively in 64-bit mode\n" + * Severity: Informational + * Description: + * The 64-bit Linux kernel detected that it is running on an IBM mainframe, + * either as the sole operating system in an LPAR or as the sole operating + * system on the entire mainframe. The Linux kernel is not running as a + * guest operating system of the z/VM hypervisor. + * User action: + * None. + */ + +/*? + * Text: "Defining the Linux kernel NSS failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * The Linux kernel could not define the named saved system (NSS) with + * the z/VM CP DEFSYS command. The return code represents the numeric + * portion of the CP DEFSYS error message. + * User action: + * For return code 1, the z/VM guest virtual machine is not authorized + * to define named saved systems. + * Ensure that the z/VM guest virtual machine is authorized to issue + * the CP DEFSYS command (typically privilege class E). + * For other return codes, see the help and message documentation for + * the CP DEFSYS command. + */ + +/*? + * Text: "Saving the Linux kernel NSS failed with rc=%d\n" + * Severity: Error + * Parameter: + * @1: return code + * Description: + * The Linux kernel could not save the named saved system (NSS) with + * the z/VM CP SAVESYS command. The return code represents the numeric + * portion of the CP SAVESYS error message. + * User action: + * For return code 1, the z/VM guest virtual machine is not authorized + * to save named saved systems. + * Ensure that the z/VM guest virtual machine is authorized to issue + * the CP SAVESYS command (typically privilege class E). + * For other return codes, see the help and message documentation for + * the CP SAVESYS command. + */ + +/*? + * Text: "crashkernel reservation failed: %s\n" + * Severity: Informational + * Parameter: + * @1: reason string + * Description: + * The memory reservation for the kdump "crashkernel" parameter was not + * successful. The Linux kernel was either not able to find a free memory + * area or an invalid area has been defined. The reason string describes the + * cause of the failure in more detail. + * User action: + * Increase the memory footprint of your virtual machine or adjust the values + * for the "crashkernel" kernel parameter. Then boot your Linux system again. + */ + +/*? + * Text: "Reserving %lluMB of memory at %lluMB for crashkernel (System RAM: %luMB)\n" + * Severity: Informational + * Parameter: + * @1: amount of reserved memory + * @2: storage location of reserved memory + * @3: amount of system RAM + * Description: + * The memory reservation for the kdump "crashkernel" parameter was successful + * and a kdump kernel can now be loaded with the kexec tool. + * User action: + * None. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/smsgiucv +++ linux-5.8.0/Documentation/kmsg/s390/smsgiucv @@ -0,0 +1 @@ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/smsgiucv_app +++ linux-5.8.0/Documentation/kmsg/s390/smsgiucv_app @@ -0,0 +1 @@ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/tape +++ linux-5.8.0/Documentation/kmsg/s390/tape @@ -0,0 +1,63 @@ +/*? + * Text: "%s: A tape unit was detached while in use\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A tape unit has been detached from the I/O configuration while a tape + * was being accessed. This typically results in I/O error messages and + * potentially in damaged data on the tape. + * User action: + * Check the output of the application that accesses the tape device. + * If this problem occurred during a write-type operation, consider repeating + * the operation after bringing the tape device back online. + */ + +/*? + * Text: "%s: A tape cartridge has been mounted\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the tape device + * Description: + * A tape cartridge has been inserted into the tape unit. The tape in the + * tape unit is ready to be accessed. + * User action: + * None. + */ + +/*? + * Text: "%s: The tape cartridge has been successfully unloaded\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape cartridge has been unloaded from the tape unit. Insert a tape + * cartridge before accessing the tape device. + * User action: + * None. + */ + +/*? + * Text: "A cartridge is loaded in tape device %s, refusing to suspend\n" + * Severity: Error + * Parameter: + * @1: bus ID of the tape device + * Description: + * A request to suspend a tape device currently loaded with a cartridge is + * rejected. + * User action: + * Unload the tape device. Then try to suspend the system again. + */ + +/*? + * Text: "Tape device %s is busy, refusing to suspend\n" + * Severity: Error + * Parameter: + * @1: bus ID of the tape device + * Description: + * A request to suspend a tape device being currently in use is rejected. + * User action: + * Terminate applications performing tape operations + * and then try to suspend the system again. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/tape_34xx +++ linux-5.8.0/Documentation/kmsg/s390/tape_34xx @@ -0,0 +1,418 @@ +/*? + * Text: "%s: An unexpected condition %d occurred in tape error recovery\n" + * Severity: Error + * Parameter: + * @1: bus ID of the tape device + * @2: number + * Description: + * The control unit has reported an error condition that is not recognized by + * the error recovery process of the tape device driver. + * User action: + * Report this problem and the condition number from the message to your + * support organization. + */ + +/*? + * Text: "%s: A data overrun occurred between the control unit and tape unit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A data overrun error has occurred on the connection between the control + * unit and the tape unit. If this problem occurred during a write-type + * operation, the integrity of the data on the tape might be compromised. + * User action: + * Use a faster connection. If this problem occurred during a write-type + * operation, consider repositioning the tape and repeating the operation. + */ + +/*? + * Text: "%s: The block ID sequence on the tape is incorrect\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The control unit has detected an incorrect block ID sequence on the tape. + * This problem typically indicates that the data on the tape is damaged. + * User action: + * If this problem occurred during a write-type operation reposition the tape + * and repeat the operation. + */ + +/*? + * Text: "%s: A read error occurred that cannot be recovered\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A read error has occurred that cannot be recovered. The current tape might + * be damaged. + * User action: + * None. + */ + +/*? + * Text: "%s: A write error on the tape cannot be recovered\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A write error has occurred that could not be recovered by the automatic + * error recovery process. + * User action: + * Use a different tape cartridge. + */ + +/*? + * Text: "%s: Writing the ID-mark failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The ID-mark at the beginning of tape could not be written. The tape medium + * might be write-protected. + * User action: + * Try a different tape cartridge. Ensure that the write-protection on the + * cartridge is switched off. + */ + +/*? + * Text: "%s: Reading the tape beyond the end of the recorded area failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A read-type operation failed because it extended beyond the end of the + * recorded area on the tape medium. + * User action: + * None. + */ + +/*? + * Text: "%s: The tape contains an incorrect block ID sequence\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The control unit has detected an incorrect block ID sequence on the tape. + * This problem typically indicates that the data on the tape is damaged. + * User action: + * If this problem occurred during a write-type operation reposition the tape + * and repeat the operation. + */ + +/*? + * Text: "%s: A path equipment check occurred for the tape device\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A path equipment check has occurred. This check indicates problems with the + * connection between the mainframe system and the tape control unit. + * User action: + * Ensure that the cable connections between the mainframe system and the + * control unit are securely in place and not damaged. + */ + +/*? + * Text: "%s: The tape unit cannot process the tape format\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * Either the tape unit is not able to read the format ID mark, or the + * specified format is not supported by the tape unit. + * User action: + * If you do not need the data recorded on the current tape, use a different + * tape or write a new format ID mark at the beginning of the tape. Be aware + * that writing a new ID mark leads to a loss of all data that has been + * recorded on the tape. If you need the data on the current tape, use a tape + * unit that supports the tape format. + */ + +/*? + * Text: "%s: The tape medium is write-protected\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A write-type operation failed because the tape medium is write-protected. + * User action: + * Eject the tape cartridge, switch off the write protection on the cartridge, + * insert the cartridge, and try the operation again. + */ + +/*? + * Text: "%s: The tape does not have the required tape tension\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape does not have the required tape tension. + * User action: + * Rewind and reposition the tape, then repeat the operation. + */ + +/*? + * Text: "%s: The tape unit failed to load the cartridge\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * An error has occurred while loading the tape cartridge. + * User action: + * Unload the cartridge and load it again. + */ + +/*? + * Text: "%s: Automatic unloading of the tape cartridge failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit failed to unload the cartridge. + * User action: + * Unload the cartridge manually by using the eject button on the tape unit. + */ + +/*? + * Text: "%s: An equipment check has occurred on the tape unit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * Possible reasons for the check condition are a unit adapter error, a buffer + * error on the lower interface, an unusable internal path, or an error that + * has occurred while loading the cartridge. + * User action: + * Examine the tape unit and the cartridge loader. Consult the tape unit + * documentation for details. + */ + +/*? + * Text: "%s: The tape information states an incorrect length\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape is shorter than stated at the beginning of the tape data. A + * possible reason for this problem is that the tape might have been physically + * truncated. Data written to the tape might be incomplete or damaged. + * User action: + * If this problem occurred during a write-type operation, consider repeating + * the operation with a different tape cartridge. + */ + +/*? + * Text: "%s: The tape unit is not ready\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit is online but not ready. + * User action: + * Turn the ready switch on the tape unit to the ready position and try the + * operation again. + */ + +/*? + * Text: "%s: The tape medium has been rewound or unloaded manually\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit rewind button, unload button, or both have been used to + * rewind or unload the tape cartridge. A tape cartridge other than the + * intended cartridge might have been inserted or the tape medium might not + * be at the expected position. + * User action: + * Verify that the correct tape cartridge has been inserted and that the tape + * medium is at the required position before continuing to work with the tape. + */ + +/*? + * Text: "%s: The tape subsystem is running in degraded mode\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape subsystem is not operating at its maximum performance. + * User action: + * Contact your service representative for the tape unit and report this + * problem. + */ + +/*? + * Text: "%s: The tape unit is already assigned\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit is already assigned to another channel path. + * User action: + * Free the tape unit from the operating system instance to which it is + * currently assigned then try again. + */ + +/*? + * Text: "%s: The tape unit is not online\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit is not online to the tape device driver. + * User action: + * Ensure that the tape unit is operational and that the cable connections + * between the control unit and the tape unit are securely in place and not + * damaged. + */ + +/*? + * Text: "%s: The control unit has fenced access to the tape volume\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The control unit fences further access to the current tape volume. The data + * integrity on the tape volume might have been compromised. + * User action: + * Rewind and unload the tape cartridge. + */ + +/*? + * Text: "%s: A parity error occurred on the tape bus\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * A data parity check error occurred on the bus. Data that was read or written + * while the error occurred is not valid. + * User action: + * Reposition the tape and repeat the read-type or write-type operation. + */ + +/*? + * Text: "%s: I/O error recovery failed on the tape control unit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * An I/O error occurred that cannot be recovered by the automatic error + * recovery process of the tape control unit. The application that operates + * the tape unit will receive a return value of -EIO which indicates an + * I/O error. The data on the tape might be damaged. + * User action: + * If this problem occurred during a write-type operation, consider + * repositioning the tape and repeating the operation. + */ + +/*? + * Text: "%s: The tape unit requires a firmware update\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit requires firmware patches from the tape control unit but the + * required patches are not available on the control unit. + * User action: + * Make the require patches available on the control unit then reposition the + * tape and retry the operation. For details about obtaining and installing + * firmware updates see the control unit documentation. + */ + +/*? + * Text: "%s: The maximum block size for buffered mode is exceeded\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The block to be written is larger than allowed for the buffered mode. + * User action: + * Use a smaller block size. + */ + +/*? + * Text: "%s: A channel interface error cannot be recovered\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * An error has occurred on the channel interface. This error cannot + * be recovered by the control unit error recovery process. + * User action: + * See the documentation of the control unit. + */ + +/*? + * Text: "%s: A channel protocol error occurred\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * An error was detected in the channel protocol. + * User action: + * Reposition the tape and try the operation again. + */ + +/*? + * Text: "%s: The tape unit does not support the compaction algorithm\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit cannot read the current tape. The data on the tape has been + * compressed with an algorithm that is not supported by the tape unit. + * User action: + * Use a tape unit that supports the compaction algorithm used for the + * current tape. + */ + +/*? + * Text: "%s: The tape unit does not support tape format 3480-2 XF\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit does not support tapes recorded in the 3480-2 XF format. + * User action: + * If you do not need the data recorded on the current tape, rewind the tape + * and overwrite it with a supported format. If you need the data on the + * current tape, use a tape unit that supports the tape format. + */ + +/*? + * Text: "%s: The tape unit does not support format 3480 XF\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit does not support tapes recorded in the 3480 XF format. + * User action: + * If you do not need the data recorded on the current tape, rewind the tape + * and overwrite it with a supported format. If you need the data on the + * current tape, use a tape unit that supports the tape format. + */ + +/*? + * Text: "%s: The tape unit does not support the current tape length\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The length of the tape in the cartridge is incompatible with the tape unit. + * User action: + * Either use a different tape unit or use a tape with a supported length. + */ + +/*? + * Text: "%s: The tape unit does not support the tape length\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The length of the tape in the cartridge is incompatible with the tape + * unit. + * User action: + * Either use a different tape unit or use a tape with a supported length. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/tape_3590 +++ linux-5.8.0/Documentation/kmsg/s390/tape_3590 @@ -0,0 +1,183 @@ +/*? + * Text: "%s: The tape medium must be loaded into a different tape unit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape device has indicated an error condition that requires loading + * the tape cartridge into a different tape unit to recover. + * User action: + * Unload the cartridge and use a different tape unit to retry the operation. + */ + +/*? + * Text: "%s: Tape media information: exception %s, service %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: exception + * @3: service + * Description: + * This is an operating system independent tape medium information message + * that was issued by the tape unit. The information in the message is + * intended for the IBM customer engineer. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: Device subsystem information: exception %s, service %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: exception + * @3: required service action + * Description: + * This is an operating system independent device subsystem information message + * that was issued by the tape unit. The information in the message is + * intended for the IBM customer engineer. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: I/O subsystem information: exception %s, service %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: exception + * @3: required service action + * Description: + * This is an operating system independent I/O subsystem information message + * that was issued by the tape unit. The information in the message is + * intended for the IBM customer engineer. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: The tape unit has issued sense message %s\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: sense message code + * Description: + * The tape unit has issued an operating system independent sense message. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: The tape unit has issued an unknown sense message code 0x%x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: code + * Description: + * The tape device driver has received an unknown sense message from the + * tape unit. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: MIM SEV=%i, MC=%02x, ES=%x/%x, RC=%02x-%04x-%02x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: SEV + * @3: message code + * @4: exception + * @5: required service action + * @6: refcode + * @7: mid + * @8: fid + * Description: + * This is an operating system independent information message that was + * issued by the tape unit. The information in the message is intended for + * the IBM customer engineer. + * User action: + * See to the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: IOSIM SEV=%i, DEVTYPE=3590/%02x, MC=%02x, ES=%x/%x, REF=0x%04x-0x%04x-0x%04x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: SEV + * @3: model + * @4: message code + * @5: exception + * @6: required service action + * @7: refcode1 + * @8: refcode2 + * @9: refcode3 + * Description: + * This is an operating system independent I/O subsystem information message + * that was issued by the tape unit. The information in the message is + * intended for the IBM customer engineer. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: DEVSIM SEV=%i, DEVTYPE=3590/%02x, MC=%02x, ES=%x/%x, REF=0x%04x-0x%04x-0x%04x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: SEV + * @3: model + * @4: message code + * @5: exception + * @6: required service action + * @7: refcode1 + * @8: refcode2 + * @9: refcode3 + * Description: + * This is an operating system independent device subsystem information message + * issued by the tape unit. The information in the message is intended for + * the IBM customer engineer. + * User action: + * See the documentation for the tape unit for further information. + */ + +/*? + * Text: "%s: The tape unit has issued an unknown sense message code %x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * @2: code + * Description: + * The tape device has issued a sense message, that is unknown to the device + * driver. + * User action: + * Use the message code printed as hexadecimal value and see the documentation + * for the tape unit for further information. + */ + +/*? + * Text: "%s: The tape unit failed to obtain the encryption key from EKM\n" + * Severity: Error + * Parameter: + * @1: bus ID of the tape device + * Description: + * The tape unit was unable to retrieve the encryption key required to decode + * the data on the tape from the enterprise key manager (EKM). + * User action: + * See the EKM and tape unit documentation for information about how to enable + * the tape unit to retrieve the encryption key. + */ + +/*? + * Text: "%s: A different host has privileged access to the tape unit\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the tape device + * Description: + * You cannot access the tape unit because a different operating system + * instance has privileged access to the unit. + * User action: + * Unload the current cartridge to solve this problem. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/time +++ linux-5.8.0/Documentation/kmsg/s390/time @@ -0,0 +1,36 @@ +/*? + * Text: "The ETR interface has adjusted the clock by %li microseconds\n" + * Severity: Notice + * Parameter: + * @1: number of microseconds + * Description: + * The external time reference (ETR) interface has synchronized the system + * clock with the external reference and set it to a new value. The time + * difference between the old and new clock value has been passed to the + * network time protocol (NTP) as a single shot adjustment. + * User action: + * None. + */ + +/*? + * Text: "The real or virtual hardware system does not provide an ETR interface\n" + * Severity: Warning + * Description: + * The 'etr=' parameter has been passed on the kernel parameter line for + * a Linux instance that does not have access to the external time reference + * (ETR) facility. + * User action: + * To avoid this warning remove the 'etr=' kernel parameter. + */ + +/*? + * Text: "The real or virtual hardware system does not provide an STP interface\n" + * Severity: Warning + * Description: + * The 'stp=' parameter has been passed on the kernel parameter line for + * a Linux instance that does not have access to the server time protocol + * (STP) facility. + * User action: + * To avoid this warning remove the 'stp=' kernel parameter. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/vmlogrdr +++ linux-5.8.0/Documentation/kmsg/s390/vmlogrdr @@ -0,0 +1,19 @@ +/*? Text: "vmlogrdr: failed to start recording automatically\n" */ +/*? Text: "vmlogrdr: connection severed with reason %i\n" */ +/*? Text: "vmlogrdr: iucv connection to %s failed with rc %i \n" */ +/*? Text: "vmlogrdr: failed to stop recording automatically\n" */ +/*? Text: "not running under VM, driver not loaded.\n" */ + +/*? + * Text: "vmlogrdr: device %s is busy. Refuse to suspend.\n" + * Severity: Error + * Parameter: + * @1: device name + * Description: + * Suspending vmlogrdr devices that are in uses is not supported. + * A request to suspend such a device is refused. + * User action: + * Close all applications that use any of the vmlogrdr devices + * and then try to suspend the system again. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/vmur +++ linux-5.8.0/Documentation/kmsg/s390/vmur @@ -0,0 +1,48 @@ +/*? + * Text: "The %s cannot be loaded without z/VM\n" + * Severity: Error + * Parameter: + * @1: z/VM virtual unit record device driver + * Description: + * The z/VM virtual unit record device driver provides Linux with access to + * z/VM virtual unit record devices like punch card readers, card punches, and + * line printers. On Linux instances that run in environments other than the + * z/VM hypervisor, the device driver does not provide any useful function and + * the corresponding vmur module cannot be loaded. + * User action: + * Load the vmur module only on Linux instances that run as guest operating + * systems of the z/VM hypervisor. If the z/VM virtual unit record device + * has been compiled into the kernel, ignore this message. + */ + +/*? + * Text: "Kernel function alloc_chrdev_region failed with error code %d\n" + * Severity: Error + * Parameter: + * @1: error code according to errno definitions + * Description: + * The z/VM virtual unit record device driver (vmur) needs to register a range + * of character device minor numbers from 0x0000 to 0xffff. + * This registration failed, probably because of memory constraints. + * User action: + * Free some memory and reload the vmur module. If the z/VM virtual unit + * record device driver has been compiled into the kernel reboot Linux. + * Consider assigning more memory to your LPAR or z/VM guest virtual machine. + */ + +/*? + * Text: "Unit record device %s is busy, %s refusing to suspend.\n" + * Severity: Error + * Parameter: + * @1: bus ID of the unit record device + * @1: z/VM virtual unit record device driver + * Description: + * Linux cannot be suspended while a unit record device is in use. + * User action: + * Stop all applications that work on z/VM spool file queues, for example, the + * vmur tool. Then try again to suspend Linux. + */ + +/*? Text: "%s loaded.\n" */ +/*? Text: "%s unloaded.\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/xpram +++ linux-5.8.0/Documentation/kmsg/s390/xpram @@ -0,0 +1,74 @@ +/*? + * Text: "%d is not a valid number of XPRAM devices\n" + * Severity: Error + * Parameter: + * @1: number of partitions + * Description: + * The number of XPRAM partitions specified for the 'devs' module parameter + * or with the 'xpram.parts' kernel parameter must be an integer in the + * range 1 to 32. The XPRAM device driver created a maximum of 32 partitions + * that are probably not configured as intended. + * User action: + * If the XPRAM device driver has been compiled as a separate module, + * unload the module and load it again with a correct value for the 'devs' + * module parameter. If the XPRAM device driver has been compiled + * into the kernel, correct the 'xpram.parts' parameter in the kernel + * command line and restart Linux. + */ + +/*? + * Text: "Not enough expanded memory available\n" + * Severity: Error + * Description: + * The amount of expanded memory required to set up your XPRAM partitions + * depends on the 'sizes' parameter specified for the xpram module or on + * the specifications for the 'xpram.parts' parameter if the XPRAM device + * driver has been compiled into the kernel. Your + * current specification exceed the amount of available expanded memory. + * Your XPRAM partitions are probably not configured as intended. + * User action: + * If the XPRAM device driver has been compiled as a separate module, + * unload the xpram module and load it again with an appropriate value + * for the 'sizes' module parameter. If the XPRAM device driver has been + * compiled into the kernel, adjust the 'xpram.parts' parameter in the + * kernel command line and restart Linux. If you need more than the + * available expanded memory, increase the expanded memory allocation for + * your virtual hardware or LPAR. + */ + +/*? + * Text: "No expanded memory available\n" + * Severity: Error + * Description: + * The XPRAM device driver has been loaded in a Linux instance that runs + * in an LPAR or virtual hardware without expanded memory. + * No XPRAM partitions are created. + * User action: + * Allocate expanded memory for your LPAR or virtual hardware or do not + * load the xpram module. You can ignore this message, if you do not want + * to create XPRAM partitions. + */ + +/*? + * Text: "Resuming the system failed: %s\n" + * Severity: Error + * Parameter: + * @1: cause of the failure + * Description: + * A system cannot be resumed if the expanded memory setup changes + * after hibernation. Possible reasons for the failure are: + * - Expanded memory was removed after hibernation. + * - Size of the expanded memory changed after hibernation. + * The system is stopped with a kernel panic. + * User action: + * Reboot Linux. + */ + +/*? Text: " number of devices (partitions): %d \n" */ +/*? Text: " size of partition %d: %u kB\n" */ +/*? Text: " size of partition %d to be set automatically\n" */ +/*? Text: " memory needed (for sized partitions): %lu kB\n" */ +/*? Text: " partitions to be sized automatically: %d\n" */ +/*? Text: " automatically determined partition size: %lu kB\n" */ +/*? Text: " %u pages expanded memory found (%lu KB).\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/zcrypt +++ linux-5.8.0/Documentation/kmsg/s390/zcrypt @@ -0,0 +1,22 @@ +/*? + * Text: "Cryptographic device %02x.%04x failed and was set offline\n" + * Severity: Error + * Parameter: + * @1: AP device ID + * @2: AP queue + * Description: + * A cryptographic device failed to process a cryptographic request. + * The cryptographic device driver could not correct the error and + * set the device offline. The application that issued the + * request received an indication that the request has failed. + * User action: + * Use the lszcrypt command to confirm that the cryptographic + * hardware is still configured to your LPAR or z/VM guest virtual + * machine. If the device is available to your Linux instance the + * command output contains a line that begins with 'card', + * where is the two-digit decimal number in the message text. + * After ensuring that the device is available, use the chzcrypt command to + * set it online again. + * If the error persists, contact your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/zdump +++ linux-5.8.0/Documentation/kmsg/s390/zdump @@ -0,0 +1,27 @@ +/*? + * Text: "The 32-bit dump tool cannot be used for a 64-bit system\n" + * Severity: Alert + * Description: + * The dump process ends without creating a system dump. + * User action: + * Use a 64-bit dump tool to obtain a system dump for 64-bit Linux instance. + */ +/*? + * Text: "The 64-bit dump tool cannot be used for a 32-bit system\n" + * Severity: Alert + * Description: + * The dump process ends without creating a system dump. + * User action: + * Use a 32-bit dump tool to obtain a system dump for 32-bit Linux instance. + */ +/*? + * Text: "The dump process started for a 64-bit operating system\n" + * Severity: Alert + * Description: + * The SCSI dump process started to create a dump for a 64-bit operating + * system instance. + * User action: + * None. + */ +/*? Text: "0x%x is an unknown architecture.\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/zfcp +++ linux-5.8.0/Documentation/kmsg/s390/zfcp @@ -0,0 +1,709 @@ +/*? + * Text: "%s is not a valid SCSI device\n" + * Severity: Error + * Parameter: + * @1: device specification + * Description: + * The specification for an initial SCSI device provided with the 'zfcp.device' + * kernel parameter or with the 'device' module parameter is syntactically + * incorrect. The specified SCSI device could not be attached to the Linux + * system. + * User action: + * Correct the value for the 'zfcp.device' or 'device' parameter and reboot + * Linux. See "Device Drivers, Features, and Commands" for information about + * the syntax. + */ + +/*? + * Text: "The zfcp device driver could not register with the common I/O layer\n" + * Severity: Error + * Description: + * The device driver initialization failed. A possible cause of this problem is + * memory constraints. + * User action: + * Free some memory and try again to load the zfcp device driver. If the zfcp + * device driver has been compiled into the kernel, reboot Linux. Consider + * assigning more memory to your LPAR or z/VM guest virtual machine. If the + * problem persists, contact your support organization. + */ + +/*? + * Text: "%s: Setting up data structures for the FCP adapter failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The zfcp device driver could not allocate data structures for an FCP adapter. + * A possible reason for this problem is memory constraints. + * User action: + * Set the FCP adapter offline or detach it from the Linux system, free some + * memory and set the FCP adapter online again or attach it again. If this + * problem persists, gather Linux debug data, collect the FCP adapter + * hardware logs, and report the problem to your support organization. + */ + +/*? + * Text: "%s: The FCP device is operational again\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * An FCP device has been unavailable because it had been detached from the + * Linux system or because the corresponding CHPID was offline. The FCP device + * is now available again and the zfcp device driver resumes all operations to + * the FCP device. + * User action: + * None. + */ + +/*? + * Text: "%s: The CHPID for the FCP device is offline\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The CHPID for an FCP device has been set offline, either logically in Linux + * or on the hardware. + * User action: + * Find out which CHPID corresponds to the FCP device, for example, with the + * lscss command. Check if the CHPID has been set logically offline in sysfs. + * Write 'on' to the CHPID's status attribute to set it online. If the CHPID is + * online in sysfs, find out if it has been varied offline through a hardware + * management interface, for example the service element (SE). + */ + +/*? + * Text: "%s: The FCP device has been detached\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * An FCP device is no longer available to Linux. + * User action: + * Ensure that the FCP adapter is operational and attached to the LPAR or z/VM + * virtual machine. + */ + +/*? + * Text: "%s: The FCP device did not respond within the specified time\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The common I/O layer waited for a response from the FCP adapter but + * no response was received within the specified time limit. This might + * indicate a hardware problem. + * User action: + * Consult your hardware administrator. If this problem persists, + * gather Linux debug data, collect the FCP adapter hardware logs, and + * report the problem to your support organization. + */ + +/*? + * Text: "%s: Registering the FCP device with the SCSI stack failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter could not be registered with the Linux SCSI + * stack. A possible reason for this problem is memory constraints. + * User action: + * Set the FCP adapter offline or detach it from the Linux system, free some + * memory and set the FCP adapter online again or attach it again. If this + * problem persists, gather Linux debug data, collect the FCP adapter + * hardware logs, and report the problem to your support organization. + */ + +/*? + * Text: "%s: ERP cannot recover an error on the FCP device\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * An error occurred on an FCP device. The error recovery procedure (ERP) + * could not resolve the error. The FCP device driver cannot use the FCP device. + * User action: + * Check for previous error messages for the same FCP device to find the + * cause of the problem. + */ + +/*? + * Text: "%s: Creating an ERP thread for the FCP device failed.\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The zfcp device driver could not set up error recovery procedure (ERP) + * processing for the FCP device. The FCP device is not available for use + * in Linux. + * User action: + * Free some memory and try again to load the zfcp device driver. If the zfcp + * device driver has been compiled into the kernel, reboot Linux. Consider + * assigning more memory to your LPAR or z/VM guest virtual machine. If the + * problem persists, contact your support organization. + */ + +/*? + * Text: "%s: ERP failed for LUN 0x%016Lx on port 0x%016Lx\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: LUN + * @3: WWPN + * Description: + * An error occurred on the SCSI device at the specified LUN. The error recovery + * procedure (ERP) could not resolve the error. The SCSI device is not + * available. + * User action: + * Verify that the LUN is correct. Check the fibre channel fabric for errors + * related to the specified WWPN and LUN, the storage server, and Linux. + */ + +/*? + * Text: "%s: ERP failed for remote port 0x%016Lx\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: WWPN + * Description: + * An error occurred on a remote port. The error recovery procedure (ERP) + * could not resolve the error. The port is not available. + * User action: + * Verify that the WWPN is correct and check the fibre channel fabric for + * errors related to the WWPN. + */ + +/*? + * Text: "%s: Registering port 0x%016Lx failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: WWPN + * Description: + * The Linux kernel could not allocate enough memory to register the + * remote port with the indicated WWPN with the SCSI stack. The remote + * port is not available. + * User action: + * Free some memory and trigger the rescan for ports. + */ + +/*? + * Text: "%s: A QDIO problem occurred\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * QDIO reported a problem to the zfcp device driver. The zfcp device driver + * tries to recover this problem. + * User action: + * Check for related error messages. If this problem occurs frequently, gather + * Linux debug data and contact your support organization. + */ + +/*? + * Text: "%s: Setting up the QDIO connection to the FCP adapter failed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The zfcp device driver failed to establish a QDIO connection with the FCP + * adapter. + * User action: + * Set the FCP adapter offline or detach it from the Linux system, free some + * memory and set the FCP adapter online again or attach it again. If this + * problem persists, gather Linux debug data, collect the FCP adapter + * hardware logs, and report the problem to your support organization. + */ + +/*? + * Text: "%s: The FCP adapter reported a problem that cannot be recovered\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter has a problem that cannot be recovered by the zfcp device + * driver. The zfcp device driver stopped using the FCP device. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to your support organization. + */ + +/*? + * Text: "%s: There is a wrap plug instead of a fibre channel cable\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter is not physically connected to the fibre channel fabric. + * User action: + * Remove the wrap plug from the FCP adapter and connect the adapter with the + * fibre channel fabric. + */ + +/*? + * Text: "%s: FCP device not operational because of an unsupported FC class\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter hardware does not support the fibre channel service class + * requested by the zfcp device driver. This problem indicates a program error + * in the zfcp device driver. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to your support organization. + */ + +/*? + * Text: "%s: 0x%Lx is an ambiguous request identifier\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: request ID + * Description: + * The FCP adapter reported that it received the same request ID twice. This is + * an error. The zfcp device driver stopped using the FCP device. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to your support organization. + */ + +/*? + * Text: "%s: QTCB version 0x%x not supported by FCP adapter (0x%x to 0x%x)\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: requested version + * @3: lowest supported version + * @4: highest supported version + * Description: + * See message text. + * The queue transfer control block (QTCB) version requested by the zfcp device + * driver is not supported by the FCP adapter hardware. + * User action: + * If the requested version is higher than the highest version supported by the + * hardware, install more recent firmware on the FCP adapter. If the requested + * version is lower then the lowest version supported by the hardware, upgrade + * to a Linux level with a more recent zfcp device driver. + */ + +/*? + * Text: "%s: The FCP adapter could not log in to the fibre channel fabric\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The fibre channel switch rejected the login request from the FCP adapter. + * User action: + * Check the fibre channel fabric or switch logs for possible errors. + */ + +/*? + * Text: "%s: The FCP device is suspended because of a firmware update\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP device is not available while a firmware update is in progress. This + * problem is temporary. The FCP device will resume operations when the + * firmware update is completed. + * User action: + * Wait 10 seconds and try the operation again. + */ + +/*? + * Text: "%s: All NPIV ports on the FCP adapter have been assigned\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The number of N_Port ID Virtualization (NPIV) ports that can be assigned + * on an FCP adapter is limited. Once assigned, NPIV ports are not released + * automatically but have to be released explicitly through the support + * element (SE). + * User action: + * Identify NPIV ports that have been assigned but are no longer in use and + * release them from the SE. + */ + +/*? + * Text: "%s: The link between the FCP adapter and the FC fabric is down\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter is not usable. Specific error information is not available. + * User action: + * Check the cabling and the fibre channel fabric configuration. If this + * problem persists, gather Linux debug data, collect the FCP adapter + * hardware logs, and report the problem to your support organization. + */ + +/*? + * Text: "%s: The QTCB type is not supported by the FCP adapter\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The queue transfer control block (QTCB) type requested by the zfcp device + * driver is not supported by the FCP adapter hardware. + * User action: + * Install the latest firmware on your FCP adapter hardware. If this does not + * resolve the problem, upgrade to a Linux level with a more recent zfcp device + * driver. If the problem persists, contact your support organization. + */ + +/*? + * Text: "%s: The error threshold for checksum statistics has been exceeded\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter has reported a large number of bit errors. This might + * indicate a problem with the physical components of the fibre channel fabric. + * Details about the errors have been written to the HBA trace for the FCP + * adapter. + * User action: + * Check for problems in the fibre channel fabric and ensure that all cables + * are properly plugged. + */ + +/*? + * Text: "%s: The local link has been restored\n" + * Severity: Informational + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * A problem with the connection between the FCP adapter and the adjacent node + * on the fibre channel fabric has been resolved. The FCP adapter is now + * available again. + * User action: + * None. + */ + +/*? + * Text: "%s: The mode table on the FCP adapter has been damaged\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * This is an FCP adapter hardware problem. + * User action: + * Report this problem with FCP hardware logs to IBM support. + */ + +/*? + * Text: "%s: The adjacent fibre channel node does not support FCP\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The fibre channel switch or storage system that is connected to the FCP + * channel does not support the fibre channel protocol (FCP). The zfcp + * device driver stopped using the FCP device. + * User action: + * Check the adjacent fibre channel node. + */ + +/*? + * Text: "%s: The FCP adapter does not recognize the command 0x%x\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: command + * Description: + * A command code that was sent from the zfcp device driver to the FCP adapter + * is not valid. The zfcp device driver stopped using the FCP device. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to your support organization. + */ + +/*? + * Text: "%s: There is no light signal from the local fibre channel cable\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * There is no signal on the fibre channel cable that connects the FCP adapter + * to the fibre channel fabric. + * User action: + * Ensure that the cable is in place and connected properly to the FCP adapter + * and to the adjacent fibre channel switch or storage system. + */ + +/*? + * Text: "%s: The WWPN assignment file on the FCP adapter has been damaged\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * This is an FCP adapter hardware problem. + * User action: + * Report this problem with FCP hardware logs to IBM support. + */ + +/*? + * Text: "%s: The FCP device detected a WWPN that is duplicate or not valid\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * This condition indicates an error in the FCP adapter hardware or in the z/VM + * hypervisor. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to IBM support. + */ + +/*? + * Text: "%s: The fibre channel fabric does not support NPIV\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP adapter requires N_Port ID Virtualization (NPIV) from the adjacent + * fibre channel node. Either the FCP adapter is connected to a fibre channel + * switch that does not support NPIV or the FCP adapter tries to use NPIV in a + * point-to-point setup. The connection is not operational. + * User action: + * Verify that NPIV is correctly used for this connection. Check the FCP adapter + * configuration and the fibre channel switch configuration. If necessary, + * update the fibre channel switch firmware. + */ + +/*? + * Text: "%s: The FCP adapter cannot support more NPIV ports\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * N_Port ID Virtualization (NPIV) ports consume physical resources on the FCP + * adapter. The FCP adapter resources are exhausted. The connection is not + * operational. + * User action: + * Analyze the number of available NPIV ports and which operating system + * instances use them. If necessary, reconfigure your setup to move some + * NPIV ports to an FCP adapter with free resources. + */ + +/*? + * Text: "%s: The adjacent switch cannot support more NPIV ports\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * N_Port ID Virtualization (NPIV) ports consume physical resources. The + * resources of the fibre channel switch that is connected to the FCP adapter + * are exhausted. The connection is not operational. + * User action: + * Analyze the number of available NPIV ports on the adjacent fibre channel + * switch and how they are used. If necessary, reconfigure your fibre channel + * fabric to accommodate the required NPIV ports. + */ + +/*? + * Text: "%s: 0x%x is not a valid transfer protocol status\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: status information + * Description: + * The transfer protocol status information reported by the FCP adapter is not + * a valid status for the zfcp device driver. The zfcp device driver stopped + * using the FCP device. + * User action: + * Gather Linux debug data, collect the FCP adapter hardware logs, and report + * this problem to your support organization. + */ + +/*? + * Text: "%s: Unknown or unsupported arbitrated loop fibre channel topology detected\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The FCP device is connected to a fibre channel arbitrated loop or the FCP adapter + * reported an unknown fibre channel topology. The zfcp device driver supports + * point-to-point connections and switched fibre channel fabrics but not arbitrated + * loop topologies. The FCP device cannot be used. + * User action: + * Check the fibre channel setup and ensure that only supported topologies are + * connected to the FCP adapter. + */ + +/*? + * Text: "%s: FCP adapter maximum QTCB size (%d bytes) is too small\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: maximum supported size + * @3: requested QTCB size + * Description: + * The queue transfer control block (QTCB) size requested by the zfcp + * device driver is not supported by the FCP adapter hardware. + * User action: + * Update the firmware on your FCP adapter hardware to the latest + * available level and update the Linux kernel to the latest supported + * level. If the problem persists, contact your support organization. + */ + +/*? + * Text: "%s: The FCP adapter only supports newer control block versions\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The protocol supported by the FCP adapter is not compatible with the zfcp + * device driver. + * User action: + * Upgrade your Linux kernel to a level that includes a zfcp device driver + * with support for the control block version required by your FCP adapter. + */ + +/*? + * Text: "%s: The FCP adapter only supports older control block versions\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * Description: + * The protocol supported by the FCP adapter is not compatible with the zfcp + * device driver. + * User action: + * Install the latest firmware on your FCP adapter. + */ + +/*? + * Text: "%s: Not enough FCP adapter resources to open remote port 0x%016Lx\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: WWPN + * Description: + * Each port that is opened consumes physical resources of the FCP adapter to + * which it is attached. These resources are exhausted and the specified port + * cannot be opened. + * User action: + * Reduce the total number of remote ports that are attached to the + * FCP adapter. + */ + +/*? + * Text: "%s: LUN 0x%Lx on port 0x%Lx is already in use by CSS%d, MIF Image ID %x\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: LUN + * @3: remote port WWPN + * @4: channel subsystem ID + * @5: MIF Image ID of the LPAR + * Description: + * The SCSI device at the indicated LUN is already in use by another system. + * Only one system at a time can use the SCSI device. + * User action: + * Ensure that the other system stops using the device before trying to use it. + */ + +/*? + * Text: "%s: No handle is available for LUN 0x%016Lx on port 0x%016Lx\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: LUN + * @3: WWPN + * Description: + * The FCP adapter can only open a limited number of SCSI devices. This limit + * has been reached and the SCSI device at the indicated LUN cannot be opened. + * User action: + * For FCP subchannels running in non-NPIV mode, check all SCSI + * devices opened through the FCP adapter and close some of them. For + * FCP subchannels running in NPIV mode, verify the SAN zoning and + * host connections on the storage systems. Ensure that the zoning and + * host connections only allow access to the required LUNs. As a + * workaround, disable the automatic LUN scanning by setting the + * zfcp.allow_lun_scan kernel parameter or the allow_lun_scan module + * parameter to 0. + */ + +/*? + * Text: "%s: Incorrect direction %d, LUN 0x%016Lx on port 0x%016Lx closed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: value in direction field + * @3: LUN + * @4: WWPN + * Description: + * The direction field in a SCSI request contains an incorrect value. The zfcp + * device driver closed down the SCSI device at the indicated LUN. + * User action: + * Gather Linux debug data and report this problem to your support organization. + */ + +/*? + * Text: "%s: Incorrect CDB length %d, LUN 0x%016Lx on port 0x%016Lx closed\n" + * Severity: Error + * Parameter: + * @1: bus ID of the zfcp device + * @2: value in length field + * @3: LUN + * @4: WWPN + * Description: + * The control-data-block (CDB) length field in a SCSI request is not valid or + * too large for the FCP adapter. The zfcp device driver closed down the SCSI + * device at the indicated LUN. + * User action: + * Gather Linux debug data and report this problem to your support organization. + */ + +/*? + * Text: "%s: Opening WKA port 0x%x failed\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: destination ID of the WKA port + * Description: + * The FCP adapter rejected a request to open the specified + * well-known address (WKA) port. No retry is possible. + * User action: + * Verify the setup and check if the maximum number of remote ports + * used through this adapter is below the maximum allowed. If the + * problem persists, gather Linux debug data, collect the FCP adapter + * hardware logs, and report the problem to your support organization. + */ + +/*? + * Text: "%s: The name server reported %d words residual data\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: number of words in residual data + * Description: + * The fibre channel name server sent too much information about remote ports. + * The zfcp device driver did not receive sufficient information to attach all + * available remote ports in the SAN. + * User action: + * Verify that you are running the latest firmware level on the FCP + * adapter. Check your SAN setup and consider reducing the number of ports + * visible to the FCP adapter by using more restrictive zoning in the SAN. + */ + +/*? + * Text: "%s: A port opened with WWPN 0x%016Lx returned data that identifies it as WWPN 0x%016Lx\n" + * Severity: Warning + * Parameter: + * @1: bus ID of the zfcp device + * @2: expected WWPN + * @3: reported WWPN + * Description: + * A remote port was opened successfully, but it reported an + * unexpected WWPN in the returned port login (PLOGI) data. This + * condition might have been caused by a change applied to the SAN + * configuration while the port was being opened. + * User action: + * If this condition is only temporary and access to the remote port + * is possible, no action is required. If the condition persists, + * identify the storage system with the specified WWPN and contact the + * support organization of the storage system. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/s390/zpci +++ linux-5.8.0/Documentation/kmsg/s390/zpci @@ -0,0 +1,42 @@ +/*? + * Text: "%s: Event 0x%x reconfigured PCI function 0x%x\n" + * Severity: Informational + * Parameter: + * @1: device name of the function + * @2: PCI event code + * @3: function ID + * Description: + * The availability of a PCI function has changed. + * Possible reasons for the change include PCI configuration actions on the + * Hardware Management Console or hypervisor. + * For shared PCI functions, the function might also have been reserved or + * released by another system. + * If the device name of a function is shown as 'n/a', the device registration + * with the PCI device driver has not completed. + * The function ID identifies the function to the I/O configuration (IOCDS). + * The PCI event code can be useful diagnostic information for your support + * organization. + * User action: + * None. + */ + +/*? + * Text: "%s: Event 0x%x reports an error for PCI function 0x%x\n" + * Severity: Error + * Parameter: + * @1: device name of the function + * @2: PCI event code + * @3: function ID + * Description: + * A PCI function entered an error state from which it cannot recover + * automatically. + * User action: + * Trigger a recovery action by writing '1' to the 'recover' sysfs attribute + * of the PCI function. + * In sysfs, PCI functions are represented as /sys/bus/pci/devices/, + * where is the device name of the function. + * If the device name of a function is shown as 'n/a', the device + * registration with the PCI device driver has not completed. + * If the problem persists, contact your support organization. + */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ --- linux-5.8.0.orig/Documentation/kmsg/sbp_target +++ linux-5.8.0/Documentation/kmsg/sbp_target @@ -0,0 +1,49 @@ +/*? Text: "ABORT TASK SET not implemented\n" */ +/*? Text: "ABORT TASK not implemented\n" */ +/*? Text: "Cannot change the directory_id on an active target.\n" */ +/*? Text: "Cannot enable a target with no LUNs!\n" */ +/*? Text: "Could not update Config ROM\n" */ +/*? Text: "Ignoring ORB_POINTER write while active.\n" */ +/*? Text: "LOGICAL UNIT RESET not implemented\n" */ +/*? Text: "Node ACL not found for %s\n" */ +/*? Text: "Only one TPG per Unit is possible.\n" */ +/*? Text: "QUERY LOGINS not implemented\n" */ +/*? Text: "Reconnect timer expired for node: %016llx\n" */ +/*? Text: "SET PASSWORD not implemented\n" */ +/*? Text: "TARGET RESET not implemented\n" */ +/*? Text: "Unable to allocate struct sbp_nacl\n" */ +/*? Text: "Unable to allocate struct sbp_tpg\n" */ +/*? Text: "Unable to allocate struct sbp_tport\n" */ +/*? Text: "Waiting for reconnect from node: %016llx\n" */ +/*? Text: "cannot find login: %d\n" */ +/*? Text: "failed to allocate login descriptor\n" */ +/*? Text: "failed to allocate login response block\n" */ +/*? Text: "failed to allocate session descriptor\n" */ +/*? Text: "failed to init se_session\n" */ +/*? Text: "failed to map command block handler: %d\n" */ +/*? Text: "failed to read peer GUID: %d\n" */ +/*? Text: "ignoring management request while busy\n" */ +/*? Text: "ignoring request from foreign node (%x != %x)\n" */ +/*? Text: "ignoring request with wrong generation\n" */ +/*? Text: "initiator already logged-in\n" */ +/*? Text: "login to unknown LUN: %d\n" */ +/*? Text: "logout from different node ID\n" */ +/*? Text: "max number of logins reached\n" */ +/*? Text: "mgt_agent LOGIN to LUN %d from %016llx\n" */ +/*? Text: "mgt_agent LOGOUT from LUN %d session %d\n" */ +/*? Text: "mgt_agent RECONNECT from %016llx\n" */ +/*? Text: "mgt_agent RECONNECT login GUID doesn't match\n" */ +/*? Text: "mgt_agent RECONNECT unknown login ID\n" */ +/*? Text: "mgt_orb bad request\n" */ +/*? Text: "netif_stop_queue() cannot be called before register_netdev()\n" */ +/*? Text: "refusing exclusive login with other active logins\n" */ +/*? Text: "refusing login while another exclusive login present\n" */ +/*? Text: "sbp_run_transaction: page size ignored\n" */ +/*? Text: "sbp_send_sense: unknown sense format: 0x%x\n" */ +/*? Text: "target_fabric_configfs_init() failed\n" */ +/*? Text: "target_fabric_configfs_register() failed for SBP\n" */ +/*? Text: "unknown management function 0x%x\n" */ +/*? Text: "unlink LUN: failed to update unit directory\n" */ +/*? Text: "flen=%u proglen=%u pass=%u image=%pK from=%s pid=%d\n" */ +/*? Text: "%s selects TX queue %d, but real number of TX queues is %d\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ \ No newline at end of file --- linux-5.8.0.orig/Documentation/kmsg/zram +++ linux-5.8.0/Documentation/kmsg/zram @@ -0,0 +1,34 @@ +/*? Text: "Error allocating compressor buffer space\n" */ +/*? Text: "Error allocating memory for compressed page: %u, size=%zu\n" */ +/*? Text: "Error creating memory pool\n" */ +/*? Text: "num_devices not specified. Using default: 1\n" */ +/*? Text: "Error allocating compressor working memory!\n" */ +/*? Text: "Error allocating zram address table\n" */ +/*? Text: "Unable to get major number\n" */ +/*? Text: "Compression failed! err=%d\n" */ +/*? Text: "Decompression failed! err=%d, page=%u\n" */ +/*? Text: "There is little point creating a zram of greater than twice the size of memory since we expect a 2:1 compression ratio. Note that zram uses about 0.1%% of the size of the disk when not in use so a huge zram is wasteful.\n\tMemory Size: %zu kB\n\tSize you selected: %llu kB\nContinuing anyway ...\n" */ +/*? Text: "disk size not provided. You can use disksize_kb module param to specify size.\nUsing default: (%u%% of RAM).\n" */ +/*? Text: "Error creating sysfs group" */ +/*? Text: "Error allocating memory for incompressible page: %u\n" */ +/*? Text: "Creating %u devices ...\n" */ +/*? Text: "Initialization failed: err=%d\n" */ +/*? Text: "Error allocating disk queue for device %d\n" */ +/*? Text: "Error allocating disk structure for device %d\n" */ +/*? Text: "Invalid value for num_devices: %u\n" */ +/*? Text: "Error allocating temp memory!\n" */ +/*? Text: "Unable to allocate temp memory\n" */ +/*? Text: "Created %u device(s) ...\n" */ +/*? Text: "There is little point creating a zram of greater than twice the size of memory since we expect a 2:1 compression ratio. Note that zram uses about 0.1%% of the size of the disk when not in use so a huge zram is wasteful.\n\tMemory Size: %lu kB\n\tSize you selected: %llu kB\nContinuing anyway ...\n" */ +/*? Text: "Cannot change disksize for initialized device\n" */ +/*? Text: "Can't change algorithm for initialized device\n" */ +/*? Text: "Cannot initialise %s compressing backend\n" */ +/*? Text: "Cannot change max compression streams\n" */ +/*? Text: "Destroyed %u device(s)\n" */ +/*? Text: "Created %u device(s)\n" */ +/*? Text: "Unable to register zram-control class\n" */ +/*? Text: "Removed device: %s\n" */ +/*? Text: "Added device: %s\n" */ +/*? Text: "Error creating sysfs group for device %d\n" */ +/*? Text: "Error allocating memory for compressed page: %u, size=%u\n" */ +/*? Text: "%s: %d output lines suppressed due to ratelimiting\n" */ \ No newline at end of file --- linux-5.8.0.orig/Documentation/networking/device_drivers/amazon/ena.rst +++ linux-5.8.0/Documentation/networking/device_drivers/amazon/ena.rst @@ -274,7 +274,7 @@ inputs for hash functions. - The driver configures RSS settings using the AQ SetFeature command (ENA_ADMIN_RSS_HASH_FUNCTION, ENA_ADMIN_RSS_HASH_INPUT and - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG properties). + ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG properties). - If the NETIF_F_RXHASH flag is set, the 32-bit result of the hash function delivered in the Rx CQ descriptor is set in the received SKB. --- linux-5.8.0.orig/Documentation/networking/ip-sysctl.rst +++ linux-5.8.0/Documentation/networking/ip-sysctl.rst @@ -630,16 +630,15 @@ default: initial size of receive buffer used by TCP sockets. This value overrides net.core.rmem_default used by other protocols. - Default: 87380 bytes. This value results in window of 65535 with - default setting of tcp_adv_win_scale and tcp_app_win:0 and a bit - less for default tcp_app_win. See below about these variables. + Default: 131072 bytes. + This value results in initial window of 65535. max: maximal size of receive buffer allowed for automatically selected receiver buffers for TCP socket. This value does not override net.core.rmem_max. Calling setsockopt() with SO_RCVBUF disables automatic tuning of that socket's receive buffer size, in which case this value is ignored. - Default: between 87380B and 6MB, depending on RAM size. + Default: between 131072 and 6MB, depending on RAM size. tcp_sack - BOOLEAN Enable select acknowledgments (SACKS). @@ -1142,13 +1141,15 @@ icmp_msgs_per_sec - INTEGER Limit maximal number of ICMP packets sent per second from this host. Only messages whose type matches icmp_ratemask (see below) are - controlled by this limit. + controlled by this limit. For security reasons, the precise count + of messages per second is randomized. Default: 1000 icmp_msgs_burst - INTEGER icmp_msgs_per_sec controls number of ICMP packets sent per second, while icmp_msgs_burst controls the burst size of these packets. + For security reasons, the precise burst size is randomized. Default: 50 --- linux-5.8.0.orig/Documentation/networking/j1939.rst +++ linux-5.8.0/Documentation/networking/j1939.rst @@ -414,8 +414,8 @@ .can_family = AF_CAN, .can_addr.j1939 = { .name = J1939_NO_NAME; - .pgn = 0x30, - .addr = 0x12300, + .addr = 0x30, + .pgn = 0x12300, }, }; --- linux-5.8.0.orig/Documentation/networking/tls-offload.rst +++ linux-5.8.0/Documentation/networking/tls-offload.rst @@ -428,6 +428,24 @@ which were part of a TLS stream. * ``rx_tls_decrypted_bytes`` - number of TLS payload bytes in RX packets which were successfully decrypted. + * ``rx_tls_ctx`` - number of TLS RX HW offload contexts added to device for + decryption. + * ``rx_tls_del`` - number of TLS RX HW offload contexts deleted from device + (connection has finished). + * ``rx_tls_resync_req_pkt`` - number of received TLS packets with a resync + request. + * ``rx_tls_resync_req_start`` - number of times the TLS async resync request + was started. + * ``rx_tls_resync_req_end`` - number of times the TLS async resync request + properly ended with providing the HW tracked tcp-seq. + * ``rx_tls_resync_req_skip`` - number of times the TLS async resync request + procedure was started by not properly ended. + * ``rx_tls_resync_res_ok`` - number of times the TLS resync response call to + the driver was successfully handled. + * ``rx_tls_resync_res_skip`` - number of times the TLS resync response call to + the driver was terminated unsuccessfully. + * ``rx_tls_err`` - number of RX packets which were part of a TLS stream + but were not decrypted due to unexpected error in the state machine. * ``tx_tls_encrypted_packets`` - number of TX packets passed to the device for encryption of their TLS payload. * ``tx_tls_encrypted_bytes`` - number of TLS payload bytes in TX packets --- linux-5.8.0.orig/Documentation/scsi/libsas.rst +++ linux-5.8.0/Documentation/scsi/libsas.rst @@ -189,7 +189,6 @@ The event interface:: /* LLDD calls these to notify the class of an event. */ - void (*notify_ha_event)(struct sas_ha_struct *, enum ha_event); void (*notify_port_event)(struct sas_phy *, enum port_event); void (*notify_phy_event)(struct sas_phy *, enum phy_event); --- linux-5.8.0.orig/Documentation/security/keys/core.rst +++ linux-5.8.0/Documentation/security/keys/core.rst @@ -1040,8 +1040,8 @@ "key" is the ID of the key to be watched. - "queue_fd" is a file descriptor referring to an open "/dev/watch_queue" - which manages the buffer into which notifications will be delivered. + "queue_fd" is a file descriptor referring to an open pipe which + manages the buffer into which notifications will be delivered. "filter" is either NULL to remove a watch or a filter specification to indicate what events are required from the key. --- linux-5.8.0.orig/Documentation/security/lsm.rst +++ linux-5.8.0/Documentation/security/lsm.rst @@ -129,3 +129,31 @@ The capabilities security module does not use the general security blobs, unlike other modules. The reasons are historical and are based on overhead, complexity and performance concerns. + +LSM External Interfaces +======================= + +The LSM infrastructure does not generally provide external interfaces. +The individual security modules provide what external interfaces they +require. + +The file ``/sys/kernel/security/lsm`` provides a comma +separated list of the active security modules. + +The file ``/proc/pid/attr/display`` contains the name of the security +module for which the ``/proc/pid/attr/current`` interface will +apply. This interface can be written to. + +The infrastructure does provide an interface for the special +case where multiple security modules provide a process context. +This is provided in compound context format. + +- `lsm\0value\0lsm\0value\0` + +The `lsm` and `value` fields are nul terminated bytestrings. +Each field may contain whitespace or non-printable characters. +The nul bytes are included in the size of a compound context. +The context ``Bell\0Secret\0Biba\0Loose\0`` has a size of 23. + +The file ``/proc/pid/attr/context`` provides the security +context of the identified process. --- linux-5.8.0.orig/Documentation/sound/alsa-configuration.rst +++ linux-5.8.0/Documentation/sound/alsa-configuration.rst @@ -1501,7 +1501,7 @@ This module supports multiple cards. Note: One miXart8 board will be represented as 4 alsa cards. -See MIXART.txt for details. +See Documentation/sound/cards/mixart.rst for details. When the driver is compiled as a module and the hotplug firmware is supported, the firmware data is loaded via hotplug automatically. --- linux-5.8.0.orig/Documentation/sound/designs/timestamping.rst +++ linux-5.8.0/Documentation/sound/designs/timestamping.rst @@ -143,7 +143,7 @@ before returning from the ``STATUS`` and ``STATUS_EXT`` ioctl. in most cases this driver_timestamp will be identical to the regular system tstamp. -Examples of typestamping with HDaudio: +Examples of timestamping with HDAudio: 1. DMA timestamp, no compensation for DMA+analog delay :: --- linux-5.8.0.orig/Documentation/sphinx/cdomain.py +++ linux-5.8.0/Documentation/sphinx/cdomain.py @@ -32,15 +32,34 @@ """ +import re + from docutils import nodes from docutils.parsers.rst import directives import sphinx from sphinx import addnodes -from sphinx.domains.c import c_funcptr_sig_re, c_sig_re from sphinx.domains.c import CObject as Base_CObject from sphinx.domains.c import CDomain as Base_CDomain +# fixes https://github.com/sphinx-doc/sphinx/commit/0f49e30c51b5cc5055cda5b4b294c2dd9d1df573#r38750737 + +# pylint: disable=invalid-name +c_sig_re = re.compile( + r'''^([^(]*?) # return type + ([\w:.]+) \s* # thing name (colon allowed for C++) + (?: \((.*)\) )? # optionally arguments + (\s+const)? $ # const specifier + ''', re.VERBOSE) + +c_funcptr_sig_re = re.compile( + r'''^([^(]+?) # return type + (\( [^()]+ \)) \s* # name in parentheses + \( (.*) \) # arguments + (\s+const)? $ # const specifier + ''', re.VERBOSE) +# pylint: enable=invalid-name + __version__ = '1.0' # Get Sphinx version --- linux-5.8.0.orig/Documentation/userspace-api/media/v4l/colorspaces-defs.rst +++ linux-5.8.0/Documentation/userspace-api/media/v4l/colorspaces-defs.rst @@ -36,8 +36,7 @@ :c:type:`v4l2_hsv_encoding` specifies which encoding is used. .. note:: The default R'G'B' quantization is full range for all - colorspaces except for BT.2020 which uses limited range R'G'B' - quantization. + colorspaces. HSV formats are always full range. .. tabularcolumns:: |p{6.7cm}|p{10.8cm}| @@ -169,8 +168,8 @@ - Details * - ``V4L2_QUANTIZATION_DEFAULT`` - Use the default quantization encoding as defined by the - colorspace. This is always full range for R'G'B' (except for the - BT.2020 colorspace) and HSV. It is usually limited range for Y'CbCr. + colorspace. This is always full range for R'G'B' and HSV. + It is usually limited range for Y'CbCr. * - ``V4L2_QUANTIZATION_FULL_RANGE`` - Use the full range quantization encoding. I.e. the range [0…1] is mapped to [0…255] (with possible clipping to [1…254] to avoid the @@ -180,4 +179,4 @@ * - ``V4L2_QUANTIZATION_LIM_RANGE`` - Use the limited range quantization encoding. I.e. the range [0…1] is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to - [16…240]. + [16…240]. Limited Range cannot be used with HSV. --- linux-5.8.0.orig/Documentation/userspace-api/media/v4l/colorspaces-details.rst +++ linux-5.8.0/Documentation/userspace-api/media/v4l/colorspaces-details.rst @@ -377,9 +377,8 @@ The :ref:`itu2020` standard defines the colorspace used by Ultra-high definition television (UHDTV). The default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_BT2020``. The default R'G'B' quantization is limited -range (!), and so is the default Y'CbCr quantization. The chromaticities -of the primary colors and the white reference are: +``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range. +The chromaticities of the primary colors and the white reference are: --- linux-5.8.0.orig/Documentation/virt/kvm/api.rst +++ linux-5.8.0/Documentation/virt/kvm/api.rst @@ -182,6 +182,9 @@ be retrieved using KVM_CAP_ARM_VM_IPA_SIZE of the KVM_CHECK_EXTENSION ioctl() at run-time. +Creation of the VM will fail if the requested IPA size (whether it is +implicit or explicit) is unsupported on the host. + Please note that configuring the IPA size does not affect the capability exposed by the guest CPUs in ID_AA64MMFR0_EL1[PARange]. It only affects size of the address translated by the stage2 level (guest physical to @@ -1260,6 +1263,9 @@ the entire memory slot size. Any object may back this memory, including anonymous memory, ordinary files, and hugetlbfs. +On architectures that support a form of address tagging, userspace_addr must +be an untagged address. + It is recommended that the lower 21 bits of guest_phys_addr and userspace_addr be identical. This allows large pages in the guest to be backed by large pages in the host. @@ -1312,7 +1318,7 @@ :Capability: KVM_CAP_ENABLE_CAP_VM :Architectures: all -:Type: vcpu ioctl +:Type: vm ioctl :Parameters: struct kvm_enable_cap (in) :Returns: 0 on success; -1 on error --- linux-5.8.0.orig/Documentation/virt/kvm/mmu.rst +++ linux-5.8.0/Documentation/virt/kvm/mmu.rst @@ -455,7 +455,7 @@ number, it will ignore the cached MMIO information and handle the page fault through the slow path. -Since only 19 bits are used to store generation-number on mmio spte, all +Since only 18 bits are used to store generation-number on mmio spte, all pages are zapped when there is an overflow. Unfortunately, a single memory access might access kvm_memslots(kvm) multiple --- linux-5.8.0.orig/Documentation/x86/topology.rst +++ linux-5.8.0/Documentation/x86/topology.rst @@ -41,6 +41,8 @@ Packages contain a number of cores plus shared resources, e.g. DRAM controller, shared caches etc. +Modern systems may also use the term 'Die' for package. + AMD nomenclature for package is 'Node'. Package-related topology information in the kernel: @@ -53,11 +55,18 @@ The number of dies in a package. This information is retrieved via CPUID. + - cpuinfo_x86.cpu_die_id: + + The physical ID of the die. This information is retrieved via CPUID. + - cpuinfo_x86.phys_proc_id: The physical ID of the package. This information is retrieved via CPUID and deduced from the APIC IDs of the cores in the package. + Modern systems use this value for the socket. There may be multiple + packages within a socket. This value may differ from cpu_die_id. + - cpuinfo_x86.logical_proc_id: The logical ID of the package. As we do not trust BIOSes to enumerate the --- linux-5.8.0.orig/Documentation/xtensa/mmu.rst +++ linux-5.8.0/Documentation/xtensa/mmu.rst @@ -82,7 +82,8 @@ +------------------+ | VMALLOC area | VMALLOC_START 0xc0000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0xc7ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0xc8000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE @@ -124,7 +125,8 @@ +------------------+ | VMALLOC area | VMALLOC_START 0xa0000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0xa7ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0xa8000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE @@ -167,7 +169,8 @@ +------------------+ | VMALLOC area | VMALLOC_START 0x90000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0x97ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0x98000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE --- linux-5.8.0.orig/Kconfig +++ linux-5.8.0/Kconfig @@ -19,6 +19,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "security/Kconfig" --- linux-5.8.0.orig/MAINTAINERS +++ linux-5.8.0/MAINTAINERS @@ -1170,7 +1170,7 @@ M: Martijn Coenen M: Joel Fernandes M: Christian Brauner -L: devel@driverdev.osuosl.org +L: linux-kernel@vger.kernel.org S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git F: drivers/android/ @@ -2984,6 +2984,19 @@ F: include/uapi/linux/audit.h F: kernel/audit* +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" +L: aufs-users@lists.sourceforge.net (members only) +L: linux-unionfs@vger.kernel.org +W: http://aufs.sourceforge.net +T: git://github.com/sfjro/aufs4-linux.git +S: Supported +F: Documentation/filesystems/aufs/ +F: Documentation/ABI/testing/debugfs-aufs +F: Documentation/ABI/testing/sysfs-aufs +F: fs/aufs/ +F: include/uapi/linux/aufs_type.h + AUXILIARY DISPLAY DRIVERS M: Miguel Ojeda Sandonis S: Maintained @@ -16289,7 +16302,7 @@ STAGING SUBSYSTEM M: Greg Kroah-Hartman -L: devel@driverdev.osuosl.org +L: linux-staging@lists.linux.dev S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git F: drivers/staging/ @@ -18302,7 +18315,7 @@ M: Martyn Welch M: Manohar Vanga M: Greg Kroah-Hartman -L: devel@driverdev.osuosl.org +L: linux-kernel@vger.kernel.org S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git F: Documentation/driver-api/vme.rst --- linux-5.8.0.orig/Makefile +++ linux-5.8.0/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 8 -SUBLEVEL = 0 +SUBLEVEL = 18 EXTRAVERSION = NAME = Kleptomaniac Octopus @@ -212,6 +212,20 @@ KBUILD_CHECKSRC = 0 endif +# Call message checker as part of the C compilation +# +# Use 'make D=1' to enable checking +# Use 'make D=2' to create the message catalog + +ifdef D + ifeq ("$(origin D)", "command line") + KBUILD_KMSG_CHECK = $(D) + endif +endif +ifndef KBUILD_KMSG_CHECK + KBUILD_KMSG_CHECK = 0 +endif + # Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the # directory of external module to build. Setting M= takes precedence. ifeq ("$(origin M)", "command line") @@ -266,7 +280,7 @@ %asm-generic kernelversion %src-pkg dt_binding_check \ outputmakefile no-sync-config-targets := $(no-dot-config-targets) install %install \ - kernelrelease + kernelrelease image_name single-targets := %.a %.i %.ko %.lds %.ll %.lst %.mod %.o %.s %.symtypes %/ config-build := @@ -452,7 +466,7 @@ YACC = bison AWK = awk INSTALLKERNEL := installkernel -DEPMOD = /sbin/depmod +DEPMOD = depmod PERL = perl PYTHON = python PYTHON3 = python3 @@ -467,6 +481,7 @@ CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF) +KMSG_CHECK = $(srctree)/scripts/kmsg-doc NOSTDINC_FLAGS := CFLAGS_MODULE = AFLAGS_MODULE = @@ -475,6 +490,13 @@ AFLAGS_KERNEL = LDFLAGS_vmlinux = +# Prefer linux-backports-modules +ifneq ($(KBUILD_SRC),) +ifneq ($(shell if test -e $(KBUILD_OUTPUT)/ubuntu-build; then echo yes; fi),yes) +UBUNTUINCLUDE := -I/usr/src/linux-headers-lbm-$(KERNELRELEASE) +endif +endif + # Use USERINCLUDE when you must reference the UAPI directories only. USERINCLUDE := \ -I$(srctree)/arch/$(SRCARCH)/include/uapi \ @@ -486,17 +508,21 @@ # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option LINUXINCLUDE := \ + $(UBUNTUINCLUDE) \ -I$(srctree)/arch/$(SRCARCH)/include \ -I$(objtree)/arch/$(SRCARCH)/include/generated \ $(if $(building_out_of_srctree),-I$(srctree)/include) \ -I$(objtree)/include \ $(USERINCLUDE) +# UBUNTU: Include our third party driver stuff too +LINUXINCLUDE += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include) + KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ -Werror=implicit-function-declaration -Werror=implicit-int \ - -Wno-format-security \ + -Werror=return-type -Wno-format-security \ -std=gnu89 KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_AFLAGS_KERNEL := @@ -519,6 +545,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE export CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE CFLAGS_UBSAN CFLAGS_KCSAN export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE +export KBUILD_KMSG_CHECK KMSG_CHECK export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL @@ -651,7 +678,7 @@ ifeq ($(KBUILD_EXTMOD),) # Objects we will link into vmlinux / subdirs we need to visit core-y := init/ usr/ -drivers-y := drivers/ sound/ +drivers-y := drivers/ sound/ ubuntu/ drivers-$(CONFIG_SAMPLES) += samples/ drivers-y += net/ virt/ libs-y := lib/ @@ -815,8 +842,11 @@ else DEBUG_CFLAGS += -g endif +ifneq ($(LLVM_IAS),1) KBUILD_AFLAGS += -Wa,-gdwarf-2 endif +endif + ifdef CONFIG_DEBUG_INFO_DWARF4 DEBUG_CFLAGS += -gdwarf-4 endif @@ -876,10 +906,6 @@ LDFLAGS_vmlinux += --gc-sections endif -ifdef CONFIG_LIVEPATCH -KBUILD_CFLAGS += $(call cc-option, -flive-patching=inline-clone) -endif - ifdef CONFIG_SHADOW_CALL_STACK CC_FLAGS_SCS := -fsanitize=shadow-call-stack KBUILD_CFLAGS += $(CC_FLAGS_SCS) @@ -942,12 +968,6 @@ # change __FILE__ to the relative path from the srctree KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) -# ensure -fcf-protection is disabled when using retpoline as it is -# incompatible with -mindirect-branch=thunk-extern -ifdef CONFIG_RETPOLINE -KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none) -endif - include scripts/Makefile.kasan include scripts/Makefile.extrawarn include scripts/Makefile.ubsan @@ -958,8 +978,8 @@ KBUILD_AFLAGS += $(KAFLAGS) KBUILD_CFLAGS += $(KCFLAGS) -KBUILD_LDFLAGS_MODULE += --build-id -LDFLAGS_vmlinux += --build-id +KBUILD_LDFLAGS_MODULE += --build-id=sha1 +LDFLAGS_vmlinux += --build-id=sha1 ifeq ($(CONFIG_STRIP_ASM_SYMS),y) LDFLAGS_vmlinux += $(call ld-option, -X,) @@ -1215,11 +1235,19 @@ endef define filechk_version.h - echo \#define LINUX_VERSION_CODE $(shell \ - expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \ - echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' + if [ $(SUBLEVEL) -gt 255 ]; then \ + echo \#define LINUX_VERSION_CODE $(shell \ + expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + 255); \ + else \ + echo \#define LINUX_VERSION_CODE $(shell \ + expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \ + fi; \ + echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + \ + ((c) > 255 ? 255 : (c)))' endef +$(version_h): PATCHLEVEL := $(if $(PATCHLEVEL), $(PATCHLEVEL), 0) +$(version_h): SUBLEVEL := $(if $(SUBLEVEL), $(SUBLEVEL), 0) $(version_h): FORCE $(call filechk,version.h) $(Q)rm -f $(old_version_h) @@ -1258,6 +1286,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= # Deprecated. It is no-op now. PHONY += headers_check --- linux-5.8.0.orig/arch/Kconfig +++ linux-5.8.0/arch/Kconfig @@ -131,6 +131,22 @@ managed by the kernel and kept transparent to the probed application. ) +config HAVE_64BIT_ALIGNED_ACCESS + def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS + help + Some architectures require 64 bit accesses to be 64 bit + aligned, which also requires structs containing 64 bit values + to be 64 bit aligned too. This includes some 32 bit + architectures which can do 64 bit accesses, as well as 64 bit + architectures without unaligned access. + + This symbol should be selected by an architecture if 64 bit + accesses are required to be 64 bit aligned in this way even + though it is not a 64 bit architecture. + + See Documentation/unaligned-memory-access.txt for more + information on the topic of unaligned memory accesses. + config HAVE_EFFICIENT_UNALIGNED_ACCESS bool help @@ -411,6 +427,13 @@ bool depends on MMU_GATHER_TABLE_FREE +config ARCH_WANT_IRQS_OFF_ACTIVATE_MM + bool + help + Temporary select until all architectures can be converted to have + irqs disabled over activate_mm. Architectures that do IPI based TLB + shootdowns should enable this. + config ARCH_HAVE_NMI_SAFE_CMPXCHG bool @@ -979,6 +1002,12 @@ entries at 4000, 5000 and 6000 locations. This option turns on syscall related optimizations for a given architecture. +config ARCH_SPLIT_ARG64 + bool + help + If a 32-bit architecture requires 64-bit arguments to be split into + pairs of 32-bit arguments, select this option. + source "kernel/gcov/Kconfig" source "scripts/gcc-plugins/Kconfig" --- linux-5.8.0.orig/arch/alpha/include/asm/io.h +++ linux-5.8.0/arch/alpha/include/asm/io.h @@ -489,10 +489,10 @@ } #endif -#define ioread16be(p) be16_to_cpu(ioread16(p)) -#define ioread32be(p) be32_to_cpu(ioread32(p)) -#define iowrite16be(v,p) iowrite16(cpu_to_be16(v), (p)) -#define iowrite32be(v,p) iowrite32(cpu_to_be32(v), (p)) +#define ioread16be(p) swab16(ioread16(p)) +#define ioread32be(p) swab32(ioread32(p)) +#define iowrite16be(v,p) iowrite16(swab16(v), (p)) +#define iowrite32be(v,p) iowrite32(swab32(v), (p)) #define inb_p inb #define inw_p inw --- linux-5.8.0.orig/arch/arc/Makefile +++ linux-5.8.0/arch/arc/Makefile @@ -107,16 +107,22 @@ boot := arch/arc/boot -#default target for make without any arguments. -KBUILD_IMAGE := $(boot)/bootpImage - -all: bootpImage -bootpImage: vmlinux - -boot_targets += uImage uImage.bin uImage.gz +boot_targets := uImage.bin uImage.gz uImage.lzma +PHONY += $(boot_targets) $(boot_targets): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ +uimage-default-y := uImage.bin +uimage-default-$(CONFIG_KERNEL_GZIP) := uImage.gz +uimage-default-$(CONFIG_KERNEL_LZMA) := uImage.lzma + +PHONY += uImage +uImage: $(uimage-default-y) + @ln -sf $< $(boot)/uImage + @$(kecho) ' Image $(boot)/uImage is ready' + +CLEAN_FILES += $(boot)/uImage + archclean: $(Q)$(MAKE) $(clean)=$(boot) --- linux-5.8.0.orig/arch/arc/boot/Makefile +++ linux-5.8.0/arch/arc/boot/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -targets := vmlinux.bin vmlinux.bin.gz uImage +targets := vmlinux.bin vmlinux.bin.gz # uImage build relies on mkimage being availble on your host for ARC target # You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage @@ -13,11 +13,6 @@ UIMAGE_LOADADDR = $(CONFIG_LINUX_LINK_BASE) UIMAGE_ENTRYADDR = $(LINUX_START_TEXT) -suffix-y := bin -suffix-$(CONFIG_KERNEL_GZIP) := gz -suffix-$(CONFIG_KERNEL_LZMA) := lzma - -targets += uImage targets += uImage.bin targets += uImage.gz targets += uImage.lzma @@ -42,7 +37,3 @@ $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE $(call if_changed,uimage,lzma) - -$(obj)/uImage: $(obj)/uImage.$(suffix-y) - @ln -sf $(notdir $<) $@ - @echo ' Image $@ is ready' --- linux-5.8.0.orig/arch/arc/boot/dts/axc001.dtsi +++ linux-5.8.0/arch/arc/boot/dts/axc001.dtsi @@ -91,7 +91,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >; --- linux-5.8.0.orig/arch/arc/boot/dts/axc003.dtsi +++ linux-5.8.0/arch/arc/boot/dts/axc003.dtsi @@ -129,7 +129,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >; --- linux-5.8.0.orig/arch/arc/boot/dts/axc003_idu.dtsi +++ linux-5.8.0/arch/arc/boot/dts/axc003_idu.dtsi @@ -135,7 +135,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >; --- linux-5.8.0.orig/arch/arc/boot/dts/hsdk.dts +++ linux-5.8.0/arch/arc/boot/dts/hsdk.dts @@ -88,6 +88,8 @@ arcpct: pct { compatible = "snps,archs-pct"; + interrupt-parent = <&cpu_intc>; + interrupts = <20>; }; /* TIMER0 with interrupt for clockevent */ @@ -208,7 +210,7 @@ reg = <0x8000 0x2000>; interrupts = <10>; interrupt-names = "macirq"; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; snps,pbl = <32>; snps,multicast-filter-bins = <256>; clocks = <&gmacclk>; @@ -226,7 +228,7 @@ #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; - phy0: ethernet-phy@0 { + phy0: ethernet-phy@0 { /* Micrel KSZ9031 */ reg = <0>; }; }; --- linux-5.8.0.orig/arch/arc/boot/dts/vdk_axc003.dtsi +++ linux-5.8.0/arch/arc/boot/dts/vdk_axc003.dtsi @@ -46,7 +46,7 @@ }; - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0xe0012000 0x200 >; --- linux-5.8.0.orig/arch/arc/boot/dts/vdk_axc003_idu.dtsi +++ linux-5.8.0/arch/arc/boot/dts/vdk_axc003_idu.dtsi @@ -54,7 +54,7 @@ }; - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0xe0012000 0x200 >; --- linux-5.8.0.orig/arch/arc/include/asm/Kbuild +++ linux-5.8.0/arch/arc/include/asm/Kbuild @@ -1,7 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 generic-y += extable.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += parport.h generic-y += user.h --- linux-5.8.0.orig/arch/arc/include/asm/page.h +++ linux-5.8.0/arch/arc/include/asm/page.h @@ -10,6 +10,7 @@ #ifndef __ASSEMBLY__ #define clear_page(paddr) memset((paddr), 0, PAGE_SIZE) +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #define copy_page(to, from) memcpy((to), (from), PAGE_SIZE) struct vm_area_struct; --- linux-5.8.0.orig/arch/arc/include/asm/pgtable.h +++ linux-5.8.0/arch/arc/include/asm/pgtable.h @@ -134,8 +134,10 @@ #ifdef CONFIG_ARC_HAS_PAE40 #define PTE_BITS_NON_RWX_IN_PD1 (0xff00000000 | PAGE_MASK | _PAGE_CACHEABLE) +#define MAX_POSSIBLE_PHYSMEM_BITS 40 #else #define PTE_BITS_NON_RWX_IN_PD1 (PAGE_MASK | _PAGE_CACHEABLE) +#define MAX_POSSIBLE_PHYSMEM_BITS 32 #endif /************************************************************************** --- linux-5.8.0.orig/arch/arc/kernel/head.S +++ linux-5.8.0/arch/arc/kernel/head.S @@ -67,7 +67,22 @@ sr r5, [ARC_REG_LPB_CTRL] 1: #endif /* CONFIG_ARC_LPB_DISABLE */ -#endif + + /* On HSDK, CCMs need to remapped super early */ +#ifdef CONFIG_ARC_SOC_HSDK + mov r6, 0x60000000 + lr r5, [ARC_REG_ICCM_BUILD] + breq r5, 0, 1f + sr r6, [ARC_REG_AUX_ICCM] +1: + lr r5, [ARC_REG_DCCM_BUILD] + breq r5, 0, 2f + sr r6, [ARC_REG_AUX_DCCM] +2: +#endif /* CONFIG_ARC_SOC_HSDK */ + +#endif /* CONFIG_ISA_ARCV2 */ + ; Config DSP_CTRL properly, so kernel may use integer multiply, ; multiply-accumulate, and divide operations DSP_EARLY_INIT --- linux-5.8.0.orig/arch/arc/kernel/perf_event.c +++ linux-5.8.0/arch/arc/kernel/perf_event.c @@ -562,7 +562,7 @@ { struct arc_reg_pct_build pct_bcr; struct arc_reg_cc_build cc_bcr; - int i, has_interrupts; + int i, has_interrupts, irq = -1; int counter_size; /* in bits */ union cc_name { @@ -638,22 +638,25 @@ }; if (has_interrupts) { - int irq = platform_get_irq(pdev, 0); - - if (irq < 0) { - pr_err("Cannot get IRQ number for the platform\n"); - return -ENODEV; + irq = platform_get_irq(pdev, 0); + if (irq >= 0) { + int ret; + + arc_pmu->irq = irq; + + /* intc map function ensures irq_set_percpu_devid() called */ + ret = request_percpu_irq(irq, arc_pmu_intr, "ARC perf counters", + this_cpu_ptr(&arc_pmu_cpu)); + + if (!ret) + on_each_cpu(arc_cpu_pmu_irq_init, &irq, 1); + else + irq = -1; } - arc_pmu->irq = irq; - - /* intc map function ensures irq_set_percpu_devid() called */ - request_percpu_irq(irq, arc_pmu_intr, "ARC perf counters", - this_cpu_ptr(&arc_pmu_cpu)); - - on_each_cpu(arc_cpu_pmu_irq_init, &irq, 1); + } - } else + if (irq == -1) arc_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT; /* --- linux-5.8.0.orig/arch/arc/kernel/stacktrace.c +++ linux-5.8.0/arch/arc/kernel/stacktrace.c @@ -38,15 +38,15 @@ #ifdef CONFIG_ARC_DW2_UNWIND -static void seed_unwind_frame_info(struct task_struct *tsk, - struct pt_regs *regs, - struct unwind_frame_info *frame_info) +static int +seed_unwind_frame_info(struct task_struct *tsk, struct pt_regs *regs, + struct unwind_frame_info *frame_info) { /* * synchronous unwinding (e.g. dump_stack) * - uses current values of SP and friends */ - if (tsk == NULL && regs == NULL) { + if (regs == NULL && (tsk == NULL || tsk == current)) { unsigned long fp, sp, blink, ret; frame_info->task = current; @@ -65,11 +65,15 @@ frame_info->call_frame = 0; } else if (regs == NULL) { /* - * Asynchronous unwinding of sleeping task - * - Gets SP etc from task's pt_regs (saved bottom of kernel - * mode stack of task) + * Asynchronous unwinding of a likely sleeping task + * - first ensure it is actually sleeping + * - if so, it will be in __switch_to, kernel mode SP of task + * is safe-kept and BLINK at a well known location in there */ + if (tsk->state == TASK_RUNNING) + return -1; + frame_info->task = tsk; frame_info->regs.r27 = TSK_K_FP(tsk); @@ -103,6 +107,8 @@ frame_info->regs.r63 = regs->ret; frame_info->call_frame = 0; } + + return 0; } #endif @@ -112,11 +118,12 @@ int (*consumer_fn) (unsigned int, void *), void *arg) { #ifdef CONFIG_ARC_DW2_UNWIND - int ret = 0; + int ret = 0, cnt = 0; unsigned int address; struct unwind_frame_info frame_info; - seed_unwind_frame_info(tsk, regs, &frame_info); + if (seed_unwind_frame_info(tsk, regs, &frame_info)) + return 0; while (1) { address = UNW_PC(&frame_info); @@ -132,6 +139,11 @@ break; frame_info.regs.r63 = frame_info.regs.r31; + + if (cnt++ > 128) { + printk("unwinder looping too long, aborting !\n"); + return 0; + } } return address; /* return the last address it saw */ --- linux-5.8.0.orig/arch/arc/kernel/troubleshoot.c +++ linux-5.8.0/arch/arc/kernel/troubleshoot.c @@ -18,44 +18,37 @@ #define ARC_PATH_MAX 256 -/* - * Common routine to print scratch regs (r0-r12) or callee regs (r13-r25) - * -Prints 3 regs per line and a CR. - * -To continue, callee regs right after scratch, special handling of CR - */ -static noinline void print_reg_file(long *reg_rev, int start_num) -{ - unsigned int i; - char buf[512]; - int n = 0, len = sizeof(buf); - - for (i = start_num; i < start_num + 13; i++) { - n += scnprintf(buf + n, len - n, "r%02u: 0x%08lx\t", - i, (unsigned long)*reg_rev); - - if (((i + 1) % 3) == 0) - n += scnprintf(buf + n, len - n, "\n"); - - /* because pt_regs has regs reversed: r12..r0, r25..r13 */ - if (is_isa_arcv2() && start_num == 0) - reg_rev++; - else - reg_rev--; - } - - if (start_num != 0) - n += scnprintf(buf + n, len - n, "\n\n"); - - /* To continue printing callee regs on same line as scratch regs */ - if (start_num == 0) - pr_info("%s", buf); - else - pr_cont("%s\n", buf); -} - -static void show_callee_regs(struct callee_regs *cregs) +static noinline void print_regs_scratch(struct pt_regs *regs) { - print_reg_file(&(cregs->r13), 13); + pr_cont("BTA: 0x%08lx\n SP: 0x%08lx FP: 0x%08lx BLK: %pS\n", + regs->bta, regs->sp, regs->fp, (void *)regs->blink); + pr_cont("LPS: 0x%08lx\tLPE: 0x%08lx\tLPC: 0x%08lx\n", + regs->lp_start, regs->lp_end, regs->lp_count); + + pr_info("r00: 0x%08lx\tr01: 0x%08lx\tr02: 0x%08lx\n" \ + "r03: 0x%08lx\tr04: 0x%08lx\tr05: 0x%08lx\n" \ + "r06: 0x%08lx\tr07: 0x%08lx\tr08: 0x%08lx\n" \ + "r09: 0x%08lx\tr10: 0x%08lx\tr11: 0x%08lx\n" \ + "r12: 0x%08lx\t", + regs->r0, regs->r1, regs->r2, + regs->r3, regs->r4, regs->r5, + regs->r6, regs->r7, regs->r8, + regs->r9, regs->r10, regs->r11, + regs->r12); +} + +static void print_regs_callee(struct callee_regs *regs) +{ + pr_cont("r13: 0x%08lx\tr14: 0x%08lx\n" \ + "r15: 0x%08lx\tr16: 0x%08lx\tr17: 0x%08lx\n" \ + "r18: 0x%08lx\tr19: 0x%08lx\tr20: 0x%08lx\n" \ + "r21: 0x%08lx\tr22: 0x%08lx\tr23: 0x%08lx\n" \ + "r24: 0x%08lx\tr25: 0x%08lx\n", + regs->r13, regs->r14, + regs->r15, regs->r16, regs->r17, + regs->r18, regs->r19, regs->r20, + regs->r21, regs->r22, regs->r23, + regs->r24, regs->r25); } static void print_task_path_n_nm(struct task_struct *tsk) @@ -175,7 +168,7 @@ void show_regs(struct pt_regs *regs) { struct task_struct *tsk = current; - struct callee_regs *cregs; + struct callee_regs *cregs = (struct callee_regs *)tsk->thread.callee_reg; /* * generic code calls us with preemption disabled, but some calls @@ -204,25 +197,15 @@ STS_BIT(regs, A2), STS_BIT(regs, A1), STS_BIT(regs, E2), STS_BIT(regs, E1)); #else - pr_cont(" [%2s%2s%2s%2s]", + pr_cont(" [%2s%2s%2s%2s] ", STS_BIT(regs, IE), (regs->status32 & STATUS_U_MASK) ? "U " : "K ", STS_BIT(regs, DE), STS_BIT(regs, AE)); #endif - pr_cont(" BTA: 0x%08lx\n SP: 0x%08lx FP: 0x%08lx BLK: %pS\n", - regs->bta, regs->sp, regs->fp, (void *)regs->blink); - pr_info("LPS: 0x%08lx\tLPE: 0x%08lx\tLPC: 0x%08lx\n", - regs->lp_start, regs->lp_end, regs->lp_count); - - /* print regs->r0 thru regs->r12 - * Sequential printing was generating horrible code - */ - print_reg_file(&(regs->r0), 0); - /* If Callee regs were saved, display them too */ - cregs = (struct callee_regs *)current->thread.callee_reg; + print_regs_scratch(regs); if (cregs) - show_callee_regs(cregs); + print_regs_callee(cregs); preempt_disable(); } --- linux-5.8.0.orig/arch/arc/mm/init.c +++ linux-5.8.0/arch/arc/mm/init.c @@ -27,8 +27,8 @@ #ifdef CONFIG_HIGHMEM static unsigned long min_high_pfn, max_high_pfn; -static u64 high_mem_start; -static u64 high_mem_sz; +static phys_addr_t high_mem_start; +static phys_addr_t high_mem_sz; #endif #ifdef CONFIG_DISCONTIGMEM @@ -70,6 +70,7 @@ high_mem_sz = size; in_use = 1; memblock_add_node(base, size, 1); + memblock_reserve(base, size); #endif } @@ -158,7 +159,7 @@ min_high_pfn = PFN_DOWN(high_mem_start); max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz); - max_zone_pfn[ZONE_HIGHMEM] = max_high_pfn; + max_zone_pfn[ZONE_HIGHMEM] = min_low_pfn; high_memory = (void *)(min_high_pfn << PAGE_SHIFT); kmap_init(); @@ -167,22 +168,26 @@ free_area_init(max_zone_pfn); } -/* - * mem_init - initializes memory - * - * Frees up bootmem - * Calculates and displays memory available/used - */ -void __init mem_init(void) +static void __init highmem_init(void) { #ifdef CONFIG_HIGHMEM unsigned long tmp; - reset_all_zones_managed_pages(); + memblock_free(high_mem_start, high_mem_sz); for (tmp = min_high_pfn; tmp < max_high_pfn; tmp++) free_highmem_page(pfn_to_page(tmp)); #endif +} +/* + * mem_init - initializes memory + * + * Frees up bootmem + * Calculates and displays memory available/used + */ +void __init mem_init(void) +{ memblock_free_all(); + highmem_init(); mem_init_print_info(NULL); } --- linux-5.8.0.orig/arch/arc/plat-eznps/include/plat/ctop.h +++ linux-5.8.0/arch/arc/plat-eznps/include/plat/ctop.h @@ -33,7 +33,6 @@ #define CTOP_AUX_DPC (CTOP_AUX_BASE + 0x02C) #define CTOP_AUX_LPC (CTOP_AUX_BASE + 0x030) #define CTOP_AUX_EFLAGS (CTOP_AUX_BASE + 0x080) -#define CTOP_AUX_IACK (CTOP_AUX_BASE + 0x088) #define CTOP_AUX_GPA1 (CTOP_AUX_BASE + 0x08C) #define CTOP_AUX_UDMC (CTOP_AUX_BASE + 0x300) --- linux-5.8.0.orig/arch/arc/plat-hsdk/Kconfig +++ linux-5.8.0/arch/arc/plat-hsdk/Kconfig @@ -8,5 +8,6 @@ select ARC_HAS_ACCL_REGS select ARC_IRQ_NO_AUTOSAVE select CLK_HSDK + select RESET_CONTROLLER select RESET_HSDK select HAVE_PCI --- linux-5.8.0.orig/arch/arc/plat-hsdk/platform.c +++ linux-5.8.0/arch/arc/plat-hsdk/platform.c @@ -17,22 +17,6 @@ #define ARC_CCM_UNUSED_ADDR 0x60000000 -static void __init hsdk_init_per_cpu(unsigned int cpu) -{ - /* - * By default ICCM is mapped to 0x7z while this area is used for - * kernel virtual mappings, so move it to currently unused area. - */ - if (cpuinfo_arc700[cpu].iccm.sz) - write_aux_reg(ARC_REG_AUX_ICCM, ARC_CCM_UNUSED_ADDR); - - /* - * By default DCCM is mapped to 0x8z while this area is used by kernel, - * so move it to currently unused area. - */ - if (cpuinfo_arc700[cpu].dccm.sz) - write_aux_reg(ARC_REG_AUX_DCCM, ARC_CCM_UNUSED_ADDR); -} #define ARC_PERIPHERAL_BASE 0xf0000000 #define CREG_BASE (ARC_PERIPHERAL_BASE + 0x1000) @@ -339,5 +323,4 @@ MACHINE_START(SIMULATION, "hsdk") .dt_compat = hsdk_compat, .init_early = hsdk_init_early, - .init_per_cpu = hsdk_init_per_cpu, MACHINE_END --- linux-5.8.0.orig/arch/arm/Kconfig +++ linux-5.8.0/arch/arm/Kconfig @@ -506,8 +506,10 @@ select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C_RTC if RTC_CLASS select NEED_MACH_IO_H + select S3C2410_WATCHDOG select SAMSUNG_ATAGS select USE_OF + select WATCHDOG help Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443 and S3C2450 SoCs based systems, such as the Simtec Electronics BAST --- linux-5.8.0.orig/arch/arm/boot/compressed/atags_to_fdt.c +++ linux-5.8.0/arch/arm/boot/compressed/atags_to_fdt.c @@ -15,7 +15,8 @@ { int offset = fdt_path_offset(fdt, node_path); if (offset == -FDT_ERR_NOTFOUND) - offset = fdt_add_subnode(fdt, 0, node_path); + /* Add the node to root if not found, dropping the leading '/' */ + offset = fdt_add_subnode(fdt, 0, node_path + 1); return offset; } --- linux-5.8.0.orig/arch/arm/boot/compressed/head.S +++ linux-5.8.0/arch/arm/boot/compressed/head.S @@ -1179,9 +1179,9 @@ __armv7_mmu_cache_off: mrc p15, 0, r0, c1, c0 #ifdef CONFIG_MMU - bic r0, r0, #0x000d + bic r0, r0, #0x0005 #else - bic r0, r0, #0x000c + bic r0, r0, #0x0004 #endif mcr p15, 0, r0, c1, c0 @ turn MMU and cache off mov r0, #0 @@ -1444,8 +1444,7 @@ mov r4, r0 @ preserve image base mov r8, r1 @ preserve DT pointer - ARM( adrl r0, call_cache_fn ) - THUMB( adr r0, call_cache_fn ) + adr_l r0, call_cache_fn adr r1, 0f @ clean the region of code we bl cache_clean_flush @ may run with the MMU off @@ -1476,6 +1475,9 @@ @ issued from HYP mode take us to the correct handler code. We @ will disable the MMU before jumping to the kernel proper. @ + ARM( bic r1, r1, #(1 << 30) ) @ clear HSCTLR.TE + THUMB( orr r1, r1, #(1 << 30) ) @ set HSCTLR.TE + mcr p15, 4, r1, c1, c0, 0 adr r0, __hyp_reentry_vectors mcr p15, 4, r0, c12, c0, 0 @ set HYP vector base (HVBAR) isb --- linux-5.8.0.orig/arch/arm/boot/dts/am33xx.dtsi +++ linux-5.8.0/arch/arm/boot/dts/am33xx.dtsi @@ -40,6 +40,9 @@ ethernet1 = &cpsw_emac1; spi0 = &spi0; spi1 = &spi1; + mmc0 = &mmc1; + mmc1 = &mmc2; + mmc2 = &mmc3; }; cpus { --- linux-5.8.0.orig/arch/arm/boot/dts/armada-388-helios4.dts +++ linux-5.8.0/arch/arm/boot/dts/armada-388-helios4.dts @@ -70,6 +70,9 @@ system-leds { compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&helios_system_led_pins>; + status-led { label = "helios4:green:status"; gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; @@ -86,6 +89,9 @@ io-leds { compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&helios_io_led_pins>; + sata1-led { label = "helios4:green:ata1"; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; @@ -121,11 +127,15 @@ fan1: j10-pwm { compatible = "pwm-fan"; pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ + pinctrl-names = "default"; + pinctrl-0 = <&helios_fan1_pins>; }; fan2: j17-pwm { compatible = "pwm-fan"; pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ + pinctrl-names = "default"; + pinctrl-0 = <&helios_fan2_pins>; }; usb2_phy: usb2-phy { @@ -286,16 +296,22 @@ "mpp39", "mpp40"; marvell,function = "sd0"; }; - helios_led_pins: helios-led-pins { - marvell,pins = "mpp24", "mpp25", - "mpp49", "mpp50", + helios_system_led_pins: helios-system-led-pins { + marvell,pins = "mpp24", "mpp25"; + marvell,function = "gpio"; + }; + helios_io_led_pins: helios-io-led-pins { + marvell,pins = "mpp49", "mpp50", "mpp52", "mpp53", "mpp54"; marvell,function = "gpio"; }; - helios_fan_pins: helios-fan-pins { - marvell,pins = "mpp41", "mpp43", - "mpp48", "mpp55"; + helios_fan1_pins: helios_fan1_pins { + marvell,pins = "mpp41", "mpp43"; + marvell,function = "gpio"; + }; + helios_fan2_pins: helios_fan2_pins { + marvell,pins = "mpp48", "mpp55"; marvell,function = "gpio"; }; microsom_spi1_cs_pins: spi1-cs-pins { --- linux-5.8.0.orig/arch/arm/boot/dts/armada-xp-98dx3236.dtsi +++ linux-5.8.0/arch/arm/boot/dts/armada-xp-98dx3236.dtsi @@ -266,11 +266,6 @@ reg = <0x11000 0x100>; }; -&i2c1 { - compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c"; - reg = <0x11100 0x100>; -}; - &mpic { reg = <0x20a00 0x2d0>, <0x21070 0x58>; }; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts +++ linux-5.8.0/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts @@ -82,11 +82,6 @@ status = "okay"; }; -&vuart { - // VUART Host Console - status = "okay"; -}; - &uart1 { // Host Console status = "okay"; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts +++ linux-5.8.0/arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts @@ -22,9 +22,9 @@ #size-cells = <1>; ranges; - vga_memory: framebuffer@7f000000 { + vga_memory: framebuffer@9f000000 { no-map; - reg = <0x7f000000 0x01000000>; + reg = <0x9f000000 0x01000000>; /* 16M */ }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts +++ linux-5.8.0/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts @@ -25,7 +25,7 @@ #size-cells = <1>; ranges; - flash_memory: region@ba000000 { + flash_memory: region@b8000000 { no-map; reg = <0xb8000000 0x4000000>; /* 64M */ }; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-g4.dtsi +++ linux-5.8.0/arch/arm/boot/dts/aspeed-g4.dtsi @@ -370,6 +370,7 @@ compatible = "aspeed,ast2400-lpc-snoop"; reg = <0x10 0x8>; interrupts = <8>; + clocks = <&syscon ASPEED_CLK_GATE_LCLK>; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-g5.dtsi +++ linux-5.8.0/arch/arm/boot/dts/aspeed-g5.dtsi @@ -424,7 +424,6 @@ interrupts = <8>; clocks = <&syscon ASPEED_CLK_APB>; no-loopback-test; - aspeed,sirq-polarity-sense = <&syscon 0x70 25>; status = "disabled"; }; @@ -492,6 +491,7 @@ compatible = "aspeed,ast2500-lpc-snoop"; reg = <0x10 0x8>; interrupts = <8>; + clocks = <&syscon ASPEED_CLK_GATE_LCLK>; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/aspeed-g6.dtsi +++ linux-5.8.0/arch/arm/boot/dts/aspeed-g6.dtsi @@ -366,7 +366,7 @@ #gpio-cells = <2>; gpio-controller; compatible = "aspeed,ast2600-gpio"; - reg = <0x1e780000 0x800>; + reg = <0x1e780000 0x400>; interrupts = ; gpio-ranges = <&pinctrl 0 0 208>; ngpios = <208>; @@ -522,6 +522,7 @@ compatible = "aspeed,ast2600-lpc-snoop"; reg = <0x0 0x80>; interrupts = ; + clocks = <&syscon ASPEED_CLK_GATE_LCLK>; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/at91-sam9x60ek.dts +++ linux-5.8.0/arch/arm/boot/dts/at91-sam9x60ek.dts @@ -330,14 +330,6 @@ }; &pinctrl { - atmel,mux-mask = < - /* A B C */ - 0xFFFFFE7F 0xC0E0397F 0xEF00019D /* pioA */ - 0x03FFFFFF 0x02FC7E68 0x00780000 /* pioB */ - 0xffffffff 0xF83FFFFF 0xB800F3FC /* pioC */ - 0x003FFFFF 0x003F8000 0x00000000 /* pioD */ - >; - adc { pinctrl_adc_default: adc_default { atmel,pins = ; @@ -559,11 +551,14 @@ atmel,pins = ; }; }; -}; /* pinctrl */ -&pmc { - atmel,osc-bypass; -}; + usb1 { + pinctrl_usb_default: usb_default { + atmel,pins = ; + }; + }; +}; /* pinctrl */ &pwm0 { pinctrl-names = "default"; @@ -662,6 +657,8 @@ atmel,vbus-gpio = <0 &pioD 15 GPIO_ACTIVE_HIGH &pioD 16 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/at91-sama5d27_som1.dtsi +++ linux-5.8.0/arch/arm/boot/dts/at91-sama5d27_som1.dtsi @@ -84,8 +84,8 @@ pinctrl-0 = <&pinctrl_macb0_default>; phy-mode = "rmii"; - ethernet-phy@0 { - reg = <0x0>; + ethernet-phy@7 { + reg = <0x7>; interrupt-parent = <&pioA>; interrupts = ; pinctrl-names = "default"; --- linux-5.8.0.orig/arch/arm/boot/dts/at91-sama5d3_xplained.dts +++ linux-5.8.0/arch/arm/boot/dts/at91-sama5d3_xplained.dts @@ -128,7 +128,7 @@ }; macb0: ethernet@f0028000 { - phy-mode = "rgmii"; + phy-mode = "rgmii-rxid"; #address-cells = <1>; #size-cells = <0>; status = "okay"; @@ -242,6 +242,11 @@ atmel,pins = ; /* PE9, conflicts with A9 */ }; + pinctrl_usb_default: usb_default { + atmel,pins = + ; + }; }; }; }; @@ -259,6 +264,8 @@ &pioE 3 GPIO_ACTIVE_LOW &pioE 4 GPIO_ACTIVE_LOW >; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/at91-sama5d4_xplained.dts +++ linux-5.8.0/arch/arm/boot/dts/at91-sama5d4_xplained.dts @@ -134,6 +134,11 @@ atmel,pins = ; }; + pinctrl_usb_default: usb_default { + atmel,pins = + ; + }; pinctrl_key_gpio: key_gpio_0 { atmel,pins = ; @@ -159,6 +164,8 @@ &pioE 11 GPIO_ACTIVE_HIGH &pioE 14 GPIO_ACTIVE_HIGH >; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/at91sam9rl.dtsi +++ linux-5.8.0/arch/arm/boot/dts/at91sam9rl.dtsi @@ -278,23 +278,26 @@ atmel,adc-use-res = "highres"; trigger0 { - trigger-name = "timer-counter-0"; + trigger-name = "external-rising"; trigger-value = <0x1>; + trigger-external; }; + trigger1 { - trigger-name = "timer-counter-1"; - trigger-value = <0x3>; + trigger-name = "external-falling"; + trigger-value = <0x2>; + trigger-external; }; trigger2 { - trigger-name = "timer-counter-2"; - trigger-value = <0x5>; + trigger-name = "external-any"; + trigger-value = <0x3>; + trigger-external; }; trigger3 { - trigger-name = "external"; - trigger-value = <0x13>; - trigger-external; + trigger-name = "continuous"; + trigger-value = <0x6>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/bcm-hr2.dtsi +++ linux-5.8.0/arch/arm/boot/dts/bcm-hr2.dtsi @@ -217,7 +217,7 @@ }; qspi: spi@27200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; + compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; reg = <0x027200 0x184>, <0x027000 0x124>, <0x11c408 0x004>, --- linux-5.8.0.orig/arch/arm/boot/dts/bcm-nsp.dtsi +++ linux-5.8.0/arch/arm/boot/dts/bcm-nsp.dtsi @@ -284,7 +284,7 @@ }; qspi: spi@27200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; + compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; reg = <0x027200 0x184>, <0x027000 0x124>, <0x11c408 0x004>, --- linux-5.8.0.orig/arch/arm/boot/dts/bcm5301x.dtsi +++ linux-5.8.0/arch/arm/boot/dts/bcm5301x.dtsi @@ -488,7 +488,7 @@ }; spi@18029200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-nsp-qspi"; + compatible = "brcm,spi-nsp-qspi", "brcm,spi-bcm-qspi"; reg = <0x18029200 0x184>, <0x18029000 0x124>, <0x1811b408 0x004>, --- linux-5.8.0.orig/arch/arm/boot/dts/dra76x.dtsi +++ linux-5.8.0/arch/arm/boot/dts/dra76x.dtsi @@ -32,8 +32,8 @@ interrupts = , ; interrupt-names = "int0", "int1"; - clocks = <&mcan_clk>, <&l3_iclk_div>; - clock-names = "cclk", "hclk"; + clocks = <&l3_iclk_div>, <&mcan_clk>; + clock-names = "hclk", "cclk"; bosch,mram-cfg = <0x0 0 0 32 0 0 1 1>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos3250-artik5.dtsi +++ linux-5.8.0/arch/arm/boot/dts/exynos3250-artik5.dtsi @@ -75,7 +75,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx3>; - interrupts = <5 IRQ_TYPE_NONE>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps14_irq>; reg = <0x66>; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos3250-monk.dts +++ linux-5.8.0/arch/arm/boot/dts/exynos3250-monk.dts @@ -196,7 +196,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; wakeup-source; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos3250-rinato.dts +++ linux-5.8.0/arch/arm/boot/dts/exynos3250-rinato.dts @@ -266,7 +266,7 @@ s2mps14_pmic@66 { compatible = "samsung,s2mps14-pmic"; interrupt-parent = <&gpx0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; wakeup-source; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5250-spring.dts +++ linux-5.8.0/arch/arm/boot/dts/exynos5250-spring.dts @@ -108,7 +108,7 @@ compatible = "samsung,s5m8767-pmic"; reg = <0x66>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>; wakeup-source; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5410-odroidxu.dts +++ linux-5.8.0/arch/arm/boot/dts/exynos5410-odroidxu.dts @@ -327,6 +327,8 @@ regulator-name = "vddq_lcd"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + /* Supplies also GPK and GPJ */ + regulator-always-on; }; ldo8_reg: LDO8 { @@ -637,11 +639,11 @@ }; &usbdrd_dwc3_0 { - dr_mode = "host"; + dr_mode = "peripheral"; }; &usbdrd_dwc3_1 { - dr_mode = "peripheral"; + dr_mode = "host"; }; &usbdrd3_0 { --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5410-pinctrl.dtsi +++ linux-5.8.0/arch/arm/boot/dts/exynos5410-pinctrl.dtsi @@ -560,6 +560,34 @@ interrupt-controller; #interrupt-cells = <2>; }; + + usb3_1_oc: usb3-1-oc { + samsung,pins = "gpk2-4", "gpk2-5"; + samsung,pin-function = ; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + + usb3_1_vbusctrl: usb3-1-vbusctrl { + samsung,pins = "gpk2-6", "gpk2-7"; + samsung,pin-function = ; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + + usb3_0_oc: usb3-0-oc { + samsung,pins = "gpk3-0", "gpk3-1"; + samsung,pin-function = ; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + + usb3_0_vbusctrl: usb3-0-vbusctrl { + samsung,pins = "gpk3-2", "gpk3-3"; + samsung,pin-function = ; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; }; &pinctrl_2 { --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5410.dtsi +++ linux-5.8.0/arch/arm/boot/dts/exynos5410.dtsi @@ -398,6 +398,8 @@ &usbdrd3_0 { clocks = <&clock CLK_USBD300>; clock-names = "usbdrd30"; + pinctrl-names = "default"; + pinctrl-0 = <&usb3_0_oc>, <&usb3_0_vbusctrl>; }; &usbdrd_phy0 { @@ -409,6 +411,8 @@ &usbdrd3_1 { clocks = <&clock CLK_USBD301>; clock-names = "usbdrd30"; + pinctrl-names = "default"; + pinctrl-0 = <&usb3_1_oc>, <&usb3_1_vbusctrl>; }; &usbdrd_dwc3_1 { --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5420-arndale-octa.dts +++ linux-5.8.0/arch/arm/boot/dts/exynos5420-arndale-octa.dts @@ -349,7 +349,7 @@ reg = <0x66>; interrupt-parent = <&gpx3>; - interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps11_irq>; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5422-odroid-core.dtsi +++ linux-5.8.0/arch/arm/boot/dts/exynos5422-odroid-core.dtsi @@ -411,12 +411,6 @@ status = "okay"; }; -&bus_fsys { - operating-points-v2 = <&bus_fsys2_opp_table>; - devfreq = <&bus_wcore>; - status = "okay"; -}; - &bus_fsys2 { operating-points-v2 = <&bus_fsys2_opp_table>; devfreq = <&bus_wcore>; @@ -515,7 +509,7 @@ samsung,s2mps11-acokb-ground; interrupt-parent = <&gpx0>; - interrupts = <4 IRQ_TYPE_EDGE_FALLING>; + interrupts = <4 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&s2mps11_irq>; --- linux-5.8.0.orig/arch/arm/boot/dts/exynos5800.dtsi +++ linux-5.8.0/arch/arm/boot/dts/exynos5800.dtsi @@ -23,17 +23,17 @@ &cluster_a15_opp_table { opp-2000000000 { opp-hz = /bits/ 64 <2000000000>; - opp-microvolt = <1312500>; + opp-microvolt = <1312500 1312500 1500000>; clock-latency-ns = <140000>; }; opp-1900000000 { opp-hz = /bits/ 64 <1900000000>; - opp-microvolt = <1262500>; + opp-microvolt = <1262500 1262500 1500000>; clock-latency-ns = <140000>; }; opp-1800000000 { opp-hz = /bits/ 64 <1800000000>; - opp-microvolt = <1237500>; + opp-microvolt = <1237500 1237500 1500000>; clock-latency-ns = <140000>; }; opp-1700000000 { --- linux-5.8.0.orig/arch/arm/boot/dts/imx50-evk.dts +++ linux-5.8.0/arch/arm/boot/dts/imx50-evk.dts @@ -59,7 +59,7 @@ MX50_PAD_CSPI_MISO__CSPI_MISO 0x00 MX50_PAD_CSPI_MOSI__CSPI_MOSI 0x00 MX50_PAD_CSPI_SS0__GPIO4_11 0xc4 - MX50_PAD_ECSPI1_MOSI__CSPI_SS1 0xf4 + MX50_PAD_ECSPI1_MOSI__GPIO4_13 0x84 >; }; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6q-tbs2910.dts +++ linux-5.8.0/arch/arm/boot/dts/imx6q-tbs2910.dts @@ -16,6 +16,13 @@ stdout-path = &uart1; }; + aliases { + mmc0 = &usdhc2; + mmc1 = &usdhc3; + mmc2 = &usdhc4; + /delete-property/ mmc3; + }; + memory@10000000 { device_type = "memory"; reg = <0x10000000 0x80000000>; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi @@ -273,7 +273,7 @@ /* VDD_AUD_1P8: Audio codec */ reg_aud_1p8v: ldo3 { - regulator-name = "vdd1p8"; + regulator-name = "vdd1p8a"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi @@ -137,7 +137,7 @@ lcd_backlight: lcd-backlight { compatible = "pwm-backlight"; - pwms = <&pwm4 0 5000000>; + pwms = <&pwm4 0 5000000 0>; pwm-names = "LCD_BKLT_PWM"; brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; @@ -167,7 +167,7 @@ i2c-gpio,delay-us = <2>; /* ~100 kHz */ #address-cells = <1>; #size-cells = <0>; - status = "disabld"; + status = "disabled"; }; i2c_cam: i2c-gpio-cam { @@ -179,7 +179,7 @@ i2c-gpio,delay-us = <2>; /* ~100 kHz */ #address-cells = <1>; #size-cells = <0>; - status = "disabld"; + status = "disabled"; }; }; @@ -551,7 +551,7 @@ pinctrl_i2c3: i2c3grp { fsl,pins = < - MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 + MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1 MX6QDL_PAD_GPIO_16__I2C3_SDA 0x4001b8b1 >; }; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6qdl-sr-som.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6qdl-sr-som.dtsi @@ -53,7 +53,6 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_microsom_enet_ar8035>; - phy-handle = <&phy>; phy-mode = "rgmii-id"; phy-reset-duration = <2>; phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>; @@ -63,10 +62,19 @@ #address-cells = <1>; #size-cells = <0>; - phy: ethernet-phy@0 { + /* + * The PHY can appear at either address 0 or 4 due to the + * configuration (LED) pin not being pulled sufficiently. + */ + ethernet-phy@0 { reg = <0>; qca,clk-out-frequency = <125000000>; }; + + ethernet-phy@4 { + reg = <4>; + qca,clk-out-frequency = <125000000>; + }; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6qdl-udoo.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6qdl-udoo.dtsi @@ -98,7 +98,7 @@ &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6qdl-wandboard-revd1.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6qdl-wandboard-revd1.dtsi @@ -166,7 +166,6 @@ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b030 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b030 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b030 - MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 >; }; --- linux-5.8.0.orig/arch/arm/boot/dts/imx6sl.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx6sl.dtsi @@ -939,8 +939,10 @@ }; rngb: rngb@21b4000 { + compatible = "fsl,imx6sl-rngb", "fsl,imx25-rngb"; reg = <0x021b4000 0x4000>; interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; weim: weim@21b8000 { --- linux-5.8.0.orig/arch/arm/boot/dts/imx6sx-pinfunc.h +++ linux-5.8.0/arch/arm/boot/dts/imx6sx-pinfunc.h @@ -1026,7 +1026,7 @@ #define MX6SX_PAD_QSPI1B_DQS__SIM_M_HADDR_15 0x01B0 0x04F8 0x0000 0x7 0x0 #define MX6SX_PAD_QSPI1B_SCLK__QSPI1_B_SCLK 0x01B4 0x04FC 0x0000 0x0 0x0 #define MX6SX_PAD_QSPI1B_SCLK__UART3_DCE_RX 0x01B4 0x04FC 0x0840 0x1 0x4 -#define MX6SX_PAD_QSPI1B_SCLK__UART3_DTE_TX 0x01B4 0x04FC 0x0000 0x0 0x0 +#define MX6SX_PAD_QSPI1B_SCLK__UART3_DTE_TX 0x01B4 0x04FC 0x0000 0x1 0x0 #define MX6SX_PAD_QSPI1B_SCLK__ECSPI3_SCLK 0x01B4 0x04FC 0x0730 0x2 0x1 #define MX6SX_PAD_QSPI1B_SCLK__ESAI_RX_HF_CLK 0x01B4 0x04FC 0x0780 0x3 0x2 #define MX6SX_PAD_QSPI1B_SCLK__CSI1_DATA_16 0x01B4 0x04FC 0x06DC 0x4 0x1 --- linux-5.8.0.orig/arch/arm/boot/dts/imx7d-zii-rmu2.dts +++ linux-5.8.0/arch/arm/boot/dts/imx7d-zii-rmu2.dts @@ -58,7 +58,7 @@ <&clks IMX7D_ENET1_TIME_ROOT_CLK>; assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>; assigned-clock-rates = <0>, <100000000>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&fec1_phy>; status = "okay"; --- linux-5.8.0.orig/arch/arm/boot/dts/imx7ulp.dtsi +++ linux-5.8.0/arch/arm/boot/dts/imx7ulp.dtsi @@ -394,7 +394,7 @@ clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, <&pcc3 IMX7ULP_CLK_PCTLC>; clock-names = "gpio", "port"; - gpio-ranges = <&iomuxc1 0 0 32>; + gpio-ranges = <&iomuxc1 0 0 20>; }; gpio_ptd: gpio@40af0000 { @@ -408,7 +408,7 @@ clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, <&pcc3 IMX7ULP_CLK_PCTLD>; clock-names = "gpio", "port"; - gpio-ranges = <&iomuxc1 0 32 32>; + gpio-ranges = <&iomuxc1 0 32 12>; }; gpio_pte: gpio@40b00000 { @@ -422,7 +422,7 @@ clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, <&pcc3 IMX7ULP_CLK_PCTLE>; clock-names = "gpio", "port"; - gpio-ranges = <&iomuxc1 0 64 32>; + gpio-ranges = <&iomuxc1 0 64 16>; }; gpio_ptf: gpio@40b10000 { @@ -436,7 +436,7 @@ clocks = <&pcc2 IMX7ULP_CLK_RGPIO2P1>, <&pcc3 IMX7ULP_CLK_PCTLF>; clock-names = "gpio", "port"; - gpio-ranges = <&iomuxc1 0 96 32>; + gpio-ranges = <&iomuxc1 0 96 20>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/iwg20d-q7-common.dtsi +++ linux-5.8.0/arch/arm/boot/dts/iwg20d-q7-common.dtsi @@ -57,7 +57,7 @@ lvds-receiver { compatible = "ti,ds90cf384a", "lvds-decoder"; - powerdown-gpios = <&gpio7 25 GPIO_ACTIVE_LOW>; + power-supply = <&vcc_3v3_tft1>; ports { #address-cells = <1>; @@ -81,6 +81,7 @@ panel { compatible = "edt,etm0700g0dh6"; backlight = <&lcd_backlight>; + power-supply = <&vcc_3v3_tft1>; port { panel_in: endpoint { @@ -113,6 +114,17 @@ }; }; + vcc_3v3_tft1: regulator-panel { + compatible = "regulator-fixed"; + + regulator-name = "vcc-3v3-tft1"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + enable-active-high; + startup-delay-us = <500>; + gpio = <&gpio7 25 GPIO_ACTIVE_HIGH>; + }; + vcc_sdhi1: regulator-vcc-sdhi1 { compatible = "regulator-fixed"; @@ -207,6 +219,7 @@ reg = <0x38>; interrupt-parent = <&gpio2>; interrupts = <12 IRQ_TYPE_EDGE_FALLING>; + vcc-supply = <&vcc_3v3_tft1>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/logicpd-som-lv-baseboard.dtsi +++ linux-5.8.0/arch/arm/boot/dts/logicpd-som-lv-baseboard.dtsi @@ -51,6 +51,8 @@ &mcbsp2 { status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp2_pins>; }; &charger { @@ -102,35 +104,18 @@ regulator-max-microvolt = <3300000>; }; - lcd0: display@0 { - compatible = "panel-dpi"; - label = "28"; - status = "okay"; - /* default-on; */ + lcd0: display { + /* This isn't the exact LCD, but the timings meet spec */ + compatible = "logicpd,type28"; pinctrl-names = "default"; pinctrl-0 = <&lcd_enable_pin>; - enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */ + backlight = <&bl>; + enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>; port { lcd_in: endpoint { remote-endpoint = <&dpi_out>; }; }; - - panel-timing { - clock-frequency = <9000000>; - hactive = <480>; - vactive = <272>; - hfront-porch = <3>; - hback-porch = <2>; - hsync-len = <42>; - vback-porch = <3>; - vfront-porch = <2>; - vsync-len = <11>; - hsync-active = <1>; - vsync-active = <1>; - de-active = <1>; - pixelclk-active = <0>; - }; }; bl: backlight { --- linux-5.8.0.orig/arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi +++ linux-5.8.0/arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi @@ -81,6 +81,8 @@ }; &mcbsp2 { + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp2_pins>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/lpc32xx.dtsi +++ linux-5.8.0/arch/arm/boot/dts/lpc32xx.dtsi @@ -329,9 +329,6 @@ clocks = <&xtal_32k>, <&xtal>; clock-names = "xtal_32k", "xtal"; - - assigned-clocks = <&clk LPC32XX_CLK_HCLK_PLL>; - assigned-clock-rates = <208000000>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/ls1021a.dtsi +++ linux-5.8.0/arch/arm/boot/dts/ls1021a.dtsi @@ -181,7 +181,7 @@ #address-cells = <1>; #size-cells = <0>; reg = <0x0 0x1550000 0x0 0x10000>, - <0x0 0x40000000 0x0 0x40000000>; + <0x0 0x40000000 0x0 0x20000000>; reg-names = "QuadSPI", "QuadSPI-memory"; interrupts = ; clock-names = "qspi_en", "qspi"; @@ -772,7 +772,7 @@ fsl,tmr-prsc = <2>; fsl,tmr-add = <0xaaaaaaab>; fsl,tmr-fiper1 = <999999995>; - fsl,tmr-fiper2 = <99990>; + fsl,tmr-fiper2 = <999999995>; fsl,max-adj = <499999999>; fsl,extts-fifo; }; --- linux-5.8.0.orig/arch/arm/boot/dts/meson8.dtsi +++ linux-5.8.0/arch/arm/boot/dts/meson8.dtsi @@ -239,8 +239,6 @@ , , , - , - , , , , --- linux-5.8.0.orig/arch/arm/boot/dts/meson8b-odroidc1.dts +++ linux-5.8.0/arch/arm/boot/dts/meson8b-odroidc1.dts @@ -218,7 +218,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm/boot/dts/meson8m2-mxiii-plus.dts +++ linux-5.8.0/arch/arm/boot/dts/meson8m2-mxiii-plus.dts @@ -81,7 +81,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/mmp3.dtsi +++ linux-5.8.0/arch/arm/boot/dts/mmp3.dtsi @@ -295,6 +295,7 @@ interrupts = ; clocks = <&soc_clocks MMP2_CLK_CCIC0>; clock-names = "axi"; + power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>; #clock-cells = <0>; clock-output-names = "mclk"; status = "disabled"; @@ -306,6 +307,7 @@ interrupts = ; clocks = <&soc_clocks MMP2_CLK_CCIC1>; clock-names = "axi"; + power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>; #clock-cells = <0>; clock-output-names = "mclk"; status = "disabled"; --- linux-5.8.0.orig/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts +++ linux-5.8.0/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts @@ -192,6 +192,7 @@ fixed-link { speed = <1000>; full-duplex; + pause; }; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/omap3-gta04.dtsi +++ linux-5.8.0/arch/arm/boot/dts/omap3-gta04.dtsi @@ -114,7 +114,7 @@ gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>; gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>; gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>; - cs-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; + cs-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; num-chipselects = <1>; /* lcd panel */ @@ -124,7 +124,6 @@ spi-max-frequency = <100000>; spi-cpol; spi-cpha; - spi-cs-high; backlight= <&backlight>; label = "lcd"; --- linux-5.8.0.orig/arch/arm/boot/dts/omap4-panda-es.dts +++ linux-5.8.0/arch/arm/boot/dts/omap4-panda-es.dts @@ -46,7 +46,7 @@ button_pins: pinmux_button_pins { pinctrl-single,pins = < - OMAP4_IOPAD(0x11b, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio_113 */ + OMAP4_IOPAD(0x0fc, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio_113 */ >; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/omap4.dtsi +++ linux-5.8.0/arch/arm/boot/dts/omap4.dtsi @@ -389,7 +389,7 @@ status = "disabled"; }; - target-module@56000000 { + sgx_module: target-module@56000000 { compatible = "ti,sysc-omap4", "ti,sysc"; reg = <0x5600fe00 0x4>, <0x5600fe10 0x4>; --- linux-5.8.0.orig/arch/arm/boot/dts/omap443x.dtsi +++ linux-5.8.0/arch/arm/boot/dts/omap443x.dtsi @@ -33,10 +33,12 @@ }; ocp { + /* 4430 has only gpio_86 tshut and no talert interrupt */ bandgap: bandgap@4a002260 { reg = <0x4a002260 0x4 0x4a00232C 0x4>; compatible = "ti,omap4430-bandgap"; + gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; #thermal-sensor-cells = <0>; }; @@ -74,3 +76,13 @@ }; /include/ "omap443x-clocks.dtsi" + +/* + * Use dpll_per for sgx at 153.6MHz like droid4 stock v3.0.8 Android kernel + */ +&sgx_module { + assigned-clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 24>, + <&dpll_per_m7x2_ck>; + assigned-clock-rates = <0>, <153600000>; + assigned-clock-parents = <&dpll_per_m7x2_ck>; +}; --- linux-5.8.0.orig/arch/arm/boot/dts/omap5.dtsi +++ linux-5.8.0/arch/arm/boot/dts/omap5.dtsi @@ -463,11 +463,11 @@ }; }; - target-module@5000 { + target-module@4000 { compatible = "ti,sysc-omap2", "ti,sysc"; - reg = <0x5000 0x4>, - <0x5010 0x4>, - <0x5014 0x4>; + reg = <0x4000 0x4>, + <0x4010 0x4>, + <0x4014 0x4>; reg-names = "rev", "sysc", "syss"; ti,sysc-sidle = , , @@ -479,7 +479,7 @@ ti,syss-mask = <1>; #address-cells = <1>; #size-cells = <1>; - ranges = <0 0x5000 0x1000>; + ranges = <0 0x4000 0x1000>; dsi1: encoder@0 { compatible = "ti,omap5-dsi"; @@ -489,8 +489,9 @@ reg-names = "proto", "phy", "pll"; interrupts = ; status = "disabled"; - clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>; - clock-names = "fck"; + clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>, + <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>; + clock-names = "fck", "sys_clk"; }; }; @@ -520,8 +521,9 @@ reg-names = "proto", "phy", "pll"; interrupts = ; status = "disabled"; - clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>; - clock-names = "fck"; + clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>, + <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>; + clock-names = "fck", "sys_clk"; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/owl-s500.dtsi +++ linux-5.8.0/arch/arm/boot/dts/owl-s500.dtsi @@ -84,21 +84,21 @@ global_timer: timer@b0020200 { compatible = "arm,cortex-a9-global-timer"; reg = <0xb0020200 0x100>; - interrupts = ; + interrupts = ; status = "disabled"; }; twd_timer: timer@b0020600 { compatible = "arm,cortex-a9-twd-timer"; reg = <0xb0020600 0x20>; - interrupts = ; + interrupts = ; status = "disabled"; }; twd_wdt: wdt@b0020620 { compatible = "arm,cortex-a9-twd-wdt"; reg = <0xb0020620 0xe0>; - interrupts = ; + interrupts = ; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/picoxcell-pc3x2.dtsi +++ linux-5.8.0/arch/arm/boot/dts/picoxcell-pc3x2.dtsi @@ -45,18 +45,21 @@ emac: gem@30000 { compatible = "cadence,gem"; reg = <0x30000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <31>; }; dmac1: dmac@40000 { compatible = "snps,dw-dmac"; reg = <0x40000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <25>; }; dmac2: dmac@50000 { compatible = "snps,dw-dmac"; reg = <0x50000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <26>; }; @@ -234,6 +237,7 @@ axi2pico@c0000000 { compatible = "picochip,axi2pico-pc3x2"; reg = <0xc0000000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <13 14 15 16 17 18 19 20 21>; }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/r8a7793-gose.dts +++ linux-5.8.0/arch/arm/boot/dts/r8a7793-gose.dts @@ -336,7 +336,7 @@ reg = <0x20>; remote = <&vin1>; - port { + ports { #address-cells = <1>; #size-cells = <0>; @@ -394,7 +394,7 @@ interrupts = <2 IRQ_TYPE_LEVEL_LOW>; default-input = <0>; - port { + ports { #address-cells = <1>; #size-cells = <0>; --- linux-5.8.0.orig/arch/arm/boot/dts/s5pv210-aries.dtsi +++ linux-5.8.0/arch/arm/boot/dts/s5pv210-aries.dtsi @@ -47,6 +47,18 @@ }; }; + pmic_ap_clk: clock-0 { + /* Workaround for missing clock on PMIC */ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <32768>; + }; + + bt_codec: bt_sco { + compatible = "linux,bt-sco"; + #sound-dai-cells = <0>; + }; + vibrator_pwr: regulator-fixed-0 { compatible = "regulator-fixed"; regulator-name = "vibrator-en"; @@ -54,7 +66,7 @@ gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; - pinctr-0 = <&vibrator_ena>; + pinctrl-0 = <&vibrator_ena>; }; touchkey_vdd: regulator-fixed-1 { @@ -507,7 +519,7 @@ value = <0x5200>; }; - spi_lcd: spi-gpio-0 { + spi_lcd: spi-2 { compatible = "spi-gpio"; #address-cells = <1>; #size-cells = <0>; @@ -590,6 +602,11 @@ }; }; +&i2s0 { + dmas = <&pdma0 9>, <&pdma0 10>, <&pdma0 11>; + status = "okay"; +}; + &mfc { memory-region = <&mfc_left>, <&mfc_right>; }; @@ -754,6 +771,11 @@ samsung,pwm-outputs = <1>; }; +&rtc { + clocks = <&clocks CLK_RTC>, <&pmic_ap_clk>; + clock-names = "rtc", "rtc_src"; +}; + &sdhci1 { #address-cells = <1>; #size-cells = <0>; --- linux-5.8.0.orig/arch/arm/boot/dts/s5pv210-fascinate4g.dts +++ linux-5.8.0/arch/arm/boot/dts/s5pv210-fascinate4g.dts @@ -35,12 +35,110 @@ linux,code = ; }; }; + + headset_micbias_reg: regulator-fixed-3 { + compatible = "regulator-fixed"; + regulator-name = "Headset_Micbias"; + gpio = <&gpj2 5 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-names = "default"; + pinctrl-0 = <&headset_micbias_ena>; + }; + + main_micbias_reg: regulator-fixed-4 { + compatible = "regulator-fixed"; + regulator-name = "Main_Micbias"; + gpio = <&gpj4 2 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-names = "default"; + pinctrl-0 = <&main_micbias_ena>; + }; + + sound { + compatible = "samsung,fascinate4g-wm8994"; + + model = "Fascinate4G"; + + extcon = <&fsa9480>; + + main-micbias-supply = <&main_micbias_reg>; + headset-micbias-supply = <&headset_micbias_reg>; + + earpath-sel-gpios = <&gpj2 6 GPIO_ACTIVE_HIGH>; + + io-channels = <&adc 3>; + io-channel-names = "headset-detect"; + headset-detect-gpios = <&gph0 6 GPIO_ACTIVE_HIGH>; + headset-key-gpios = <&gph3 6 GPIO_ACTIVE_HIGH>; + + samsung,audio-routing = + "HP", "HPOUT1L", + "HP", "HPOUT1R", + + "SPK", "SPKOUTLN", + "SPK", "SPKOUTLP", + + "RCV", "HPOUT2N", + "RCV", "HPOUT2P", + + "LINE", "LINEOUT2N", + "LINE", "LINEOUT2P", + + "IN1LP", "Main Mic", + "IN1LN", "Main Mic", + + "IN1RP", "Headset Mic", + "IN1RN", "Headset Mic", + + "Modem Out", "Modem TX", + "Modem RX", "Modem In", + + "Bluetooth SPK", "TX", + "RX", "Bluetooth Mic"; + + pinctrl-names = "default"; + pinctrl-0 = <&headset_det &earpath_sel>; + + cpu { + sound-dai = <&i2s0>, <&bt_codec>; + }; + + codec { + sound-dai = <&wm8994>; + }; + }; }; &pinctrl0 { pinctrl-names = "default"; pinctrl-0 = <&sleep_cfg>; + headset_det: headset-det { + samsung,pins = "gph0-6", "gph3-6"; + samsung,pin-function = ; + samsung,pin-pud = ; + }; + + headset_micbias_ena: headset-micbias-ena { + samsung,pins = "gpj2-5"; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + + earpath_sel: earpath-sel { + samsung,pins = "gpj2-6"; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + + main_micbias_ena: main-micbias-ena { + samsung,pins = "gpj4-2"; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + /* Based on vendor kernel v2.6.35.7 */ sleep_cfg: sleep-cfg { PIN_SLP(gpa0-0, PREV, NONE); --- linux-5.8.0.orig/arch/arm/boot/dts/s5pv210-galaxys.dts +++ linux-5.8.0/arch/arm/boot/dts/s5pv210-galaxys.dts @@ -72,6 +72,73 @@ pinctrl-0 = <&fm_irq &fm_rst>; }; }; + + micbias_reg: regulator-fixed-3 { + compatible = "regulator-fixed"; + regulator-name = "MICBIAS"; + gpio = <&gpj4 2 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-names = "default"; + pinctrl-0 = <&micbias_reg_ena>; + }; + + sound { + compatible = "samsung,aries-wm8994"; + + model = "Aries"; + + extcon = <&fsa9480>; + + main-micbias-supply = <&micbias_reg>; + headset-micbias-supply = <&micbias_reg>; + + earpath-sel-gpios = <&gpj2 6 GPIO_ACTIVE_HIGH>; + + io-channels = <&adc 3>; + io-channel-names = "headset-detect"; + headset-detect-gpios = <&gph0 6 GPIO_ACTIVE_LOW>; + headset-key-gpios = <&gph3 6 GPIO_ACTIVE_HIGH>; + + samsung,audio-routing = + "HP", "HPOUT1L", + "HP", "HPOUT1R", + + "SPK", "SPKOUTLN", + "SPK", "SPKOUTLP", + + "RCV", "HPOUT2N", + "RCV", "HPOUT2P", + + "LINE", "LINEOUT2N", + "LINE", "LINEOUT2P", + + "IN1LP", "Main Mic", + "IN1LN", "Main Mic", + + "IN1RP", "Headset Mic", + "IN1RN", "Headset Mic", + + "IN2LN", "FM In", + "IN2RN", "FM In", + + "Modem Out", "Modem TX", + "Modem RX", "Modem In", + + "Bluetooth SPK", "TX", + "RX", "Bluetooth Mic"; + + pinctrl-names = "default"; + pinctrl-0 = <&headset_det &earpath_sel>; + + cpu { + sound-dai = <&i2s0>, <&bt_codec>; + }; + + codec { + sound-dai = <&wm8994>; + }; + }; }; &aliases { @@ -88,6 +155,12 @@ samsung,pin-drv = ; }; + headset_det: headset-det { + samsung,pins = "gph0-6", "gph3-6"; + samsung,pin-function = ; + samsung,pin-pud = ; + }; + fm_irq: fm-irq { samsung,pins = "gpj2-4"; samsung,pin-function = ; @@ -102,12 +175,24 @@ samsung,pin-drv = ; }; + earpath_sel: earpath-sel { + samsung,pins = "gpj2-6"; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; + massmemory_en: massmemory-en { samsung,pins = "gpj2-7"; samsung,pin-function = ; samsung,pin-pud = ; samsung,pin-drv = ; }; + + micbias_reg_ena: micbias-reg-ena { + samsung,pins = "gpj4-2"; + samsung,pin-pud = ; + samsung,pin-drv = ; + }; /* Based on CyanogenMod 3.0.101 kernel */ sleep_cfg: sleep-cfg { --- linux-5.8.0.orig/arch/arm/boot/dts/s5pv210.dtsi +++ linux-5.8.0/arch/arm/boot/dts/s5pv210.dtsi @@ -52,34 +52,26 @@ }; }; + xxti: oscillator-0 { + compatible = "fixed-clock"; + clock-frequency = <0>; + clock-output-names = "xxti"; + #clock-cells = <0>; + }; + + xusbxti: oscillator-1 { + compatible = "fixed-clock"; + clock-frequency = <0>; + clock-output-names = "xusbxti"; + #clock-cells = <0>; + }; + soc { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges; - external-clocks { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <0>; - - xxti: oscillator@0 { - compatible = "fixed-clock"; - reg = <0>; - clock-frequency = <0>; - clock-output-names = "xxti"; - #clock-cells = <0>; - }; - - xusbxti: oscillator@1 { - compatible = "fixed-clock"; - reg = <1>; - clock-frequency = <0>; - clock-output-names = "xusbxti"; - #clock-cells = <0>; - }; - }; - onenand: onenand@b0600000 { compatible = "samsung,s5pv210-onenand"; reg = <0xb0600000 0x2000>, @@ -100,19 +92,16 @@ }; clocks: clock-controller@e0100000 { - compatible = "samsung,s5pv210-clock", "simple-bus"; + compatible = "samsung,s5pv210-clock"; reg = <0xe0100000 0x10000>; clock-names = "xxti", "xusbxti"; clocks = <&xxti>, <&xusbxti>; #clock-cells = <1>; - #address-cells = <1>; - #size-cells = <1>; - ranges; + }; - pmu_syscon: syscon@e0108000 { - compatible = "samsung-s5pv210-pmu", "syscon"; - reg = <0xe0108000 0x8000>; - }; + pmu_syscon: syscon@e0108000 { + compatible = "samsung-s5pv210-pmu", "syscon"; + reg = <0xe0108000 0x8000>; }; pinctrl0: pinctrl@e0200000 { @@ -128,35 +117,28 @@ }; }; - amba { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges; - - pdma0: dma@e0900000 { - compatible = "arm,pl330", "arm,primecell"; - reg = <0xe0900000 0x1000>; - interrupt-parent = <&vic0>; - interrupts = <19>; - clocks = <&clocks CLK_PDMA0>; - clock-names = "apb_pclk"; - #dma-cells = <1>; - #dma-channels = <8>; - #dma-requests = <32>; - }; + pdma0: dma@e0900000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0xe0900000 0x1000>; + interrupt-parent = <&vic0>; + interrupts = <19>; + clocks = <&clocks CLK_PDMA0>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; + }; - pdma1: dma@e0a00000 { - compatible = "arm,pl330", "arm,primecell"; - reg = <0xe0a00000 0x1000>; - interrupt-parent = <&vic0>; - interrupts = <20>; - clocks = <&clocks CLK_PDMA1>; - clock-names = "apb_pclk"; - #dma-cells = <1>; - #dma-channels = <8>; - #dma-requests = <32>; - }; + pdma1: dma@e0a00000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0xe0a00000 0x1000>; + interrupt-parent = <&vic0>; + interrupts = <20>; + clocks = <&clocks CLK_PDMA1>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; }; adc: adc@e1700000 { @@ -241,43 +223,36 @@ status = "disabled"; }; - audio-subsystem { - compatible = "samsung,s5pv210-audss", "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - - clk_audss: clock-controller@eee10000 { - compatible = "samsung,s5pv210-audss-clock"; - reg = <0xeee10000 0x1000>; - clock-names = "hclk", "xxti", - "fout_epll", - "sclk_audio0"; - clocks = <&clocks DOUT_HCLKP>, <&xxti>, - <&clocks FOUT_EPLL>, - <&clocks SCLK_AUDIO0>; - #clock-cells = <1>; - }; + clk_audss: clock-controller@eee10000 { + compatible = "samsung,s5pv210-audss-clock"; + reg = <0xeee10000 0x1000>; + clock-names = "hclk", "xxti", + "fout_epll", + "sclk_audio0"; + clocks = <&clocks DOUT_HCLKP>, <&xxti>, + <&clocks FOUT_EPLL>, + <&clocks SCLK_AUDIO0>; + #clock-cells = <1>; + }; - i2s0: i2s@eee30000 { - compatible = "samsung,s5pv210-i2s"; - reg = <0xeee30000 0x1000>; - interrupt-parent = <&vic2>; - interrupts = <16>; - dma-names = "rx", "tx", "tx-sec"; - dmas = <&pdma1 9>, <&pdma1 10>, <&pdma1 11>; - clock-names = "iis", - "i2s_opclk0", - "i2s_opclk1"; - clocks = <&clk_audss CLK_I2S>, - <&clk_audss CLK_I2S>, - <&clk_audss CLK_DOUT_AUD_BUS>; - samsung,idma-addr = <0xc0010000>; - pinctrl-names = "default"; - pinctrl-0 = <&i2s0_bus>; - #sound-dai-cells = <0>; - status = "disabled"; - }; + i2s0: i2s@eee30000 { + compatible = "samsung,s5pv210-i2s"; + reg = <0xeee30000 0x1000>; + interrupt-parent = <&vic2>; + interrupts = <16>; + dma-names = "rx", "tx", "tx-sec"; + dmas = <&pdma1 9>, <&pdma1 10>, <&pdma1 11>; + clock-names = "iis", + "i2s_opclk0", + "i2s_opclk1"; + clocks = <&clk_audss CLK_I2S>, + <&clk_audss CLK_I2S>, + <&clk_audss CLK_DOUT_AUD_BUS>; + samsung,idma-addr = <0xc0010000>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s0_bus>; + #sound-dai-cells = <0>; + status = "disabled"; }; i2s1: i2s@e2100000 { --- linux-5.8.0.orig/arch/arm/boot/dts/sam9x60.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sam9x60.dtsi @@ -588,6 +588,15 @@ compatible = "microchip,sam9x60-pinctrl", "atmel,at91sam9x5-pinctrl", "atmel,at91rm9200-pinctrl", "simple-bus"; ranges = <0xfffff400 0xfffff400 0x800>; + /* mux-mask corresponding to sam9x60 SoC in TFBGA228L package */ + atmel,mux-mask = < + /* A B C */ + 0xffffffff 0xffe03fff 0xef00019d /* pioA */ + 0x03ffffff 0x02fc7e7f 0x00780000 /* pioB */ + 0xffffffff 0xffffffff 0xf83fffff /* pioC */ + 0x003fffff 0x003f8000 0x00000000 /* pioD */ + >; + pioA: gpio@fffff400 { compatible = "microchip,sam9x60-gpio", "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; reg = <0xfffff400 0x200>; --- linux-5.8.0.orig/arch/arm/boot/dts/sama5d2.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sama5d2.dtsi @@ -645,6 +645,7 @@ clocks = <&pmc PMC_TYPE_PERIPHERAL 51>; #address-cells = <1>; #size-cells = <1>; + no-memory-wc; ranges = <0 0xf8044000 0x1420>; }; @@ -713,7 +714,7 @@ can0: can@f8054000 { compatible = "bosch,m_can"; - reg = <0xf8054000 0x4000>, <0x210000 0x4000>; + reg = <0xf8054000 0x4000>, <0x210000 0x1c00>; reg-names = "m_can", "message_ram"; interrupts = <56 IRQ_TYPE_LEVEL_HIGH 7>, <64 IRQ_TYPE_LEVEL_HIGH 7>; @@ -1113,7 +1114,7 @@ can1: can@fc050000 { compatible = "bosch,m_can"; - reg = <0xfc050000 0x4000>, <0x210000 0x4000>; + reg = <0xfc050000 0x4000>, <0x210000 0x3800>; reg-names = "m_can", "message_ram"; interrupts = <57 IRQ_TYPE_LEVEL_HIGH 7>, <65 IRQ_TYPE_LEVEL_HIGH 7>; @@ -1123,7 +1124,7 @@ assigned-clocks = <&pmc PMC_TYPE_GCK 57>; assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_UTMI>; assigned-clock-rates = <40000000>; - bosch,mram-cfg = <0x1100 0 0 64 0 0 32 32>; + bosch,mram-cfg = <0x1c00 0 0 64 0 0 32 32>; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/socfpga_arria10.dtsi +++ linux-5.8.0/arch/arm/boot/dts/socfpga_arria10.dtsi @@ -819,7 +819,7 @@ timer3: timer3@ffd00100 { compatible = "snps,dw-apb-timer"; interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>; - reg = <0xffd01000 0x100>; + reg = <0xffd00100 0x100>; clocks = <&l4_sys_free_clk>; clock-names = "timer"; resets = <&rst L4SYSTIMER1_RESET>; --- linux-5.8.0.orig/arch/arm/boot/dts/ste-db8500.dtsi +++ linux-5.8.0/arch/arm/boot/dts/ste-db8500.dtsi @@ -12,4 +12,42 @@ 200000 0>; }; }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* Modem trace memory */ + ram@06000000 { + reg = <0x06000000 0x00f00000>; + no-map; + }; + + /* Modem shared memory */ + ram@06f00000 { + reg = <0x06f00000 0x00100000>; + no-map; + }; + + /* Modem private memory */ + ram@07000000 { + reg = <0x07000000 0x01000000>; + no-map; + }; + + /* + * Initial Secure Software ISSW memory + * + * This is probably only used if the kernel tries + * to actually call into trustzone to run secure + * applications, which the mainline kernel probably + * will not do on this old chipset. But you can never + * be too careful, so reserve this memory anyway. + */ + ram@17f00000 { + reg = <0x17f00000 0x00100000>; + no-map; + }; + }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/ste-db8520.dtsi +++ linux-5.8.0/arch/arm/boot/dts/ste-db8520.dtsi @@ -12,4 +12,42 @@ 200000 0>; }; }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* Modem trace memory */ + ram@06000000 { + reg = <0x06000000 0x00f00000>; + no-map; + }; + + /* Modem shared memory */ + ram@06f00000 { + reg = <0x06f00000 0x00100000>; + no-map; + }; + + /* Modem private memory */ + ram@07000000 { + reg = <0x07000000 0x01000000>; + no-map; + }; + + /* + * Initial Secure Software ISSW memory + * + * This is probably only used if the kernel tries + * to actually call into trustzone to run secure + * applications, which the mainline kernel probably + * will not do on this old chipset. But you can never + * be too careful, so reserve this memory anyway. + */ + ram@17f00000 { + reg = <0x17f00000 0x00100000>; + no-map; + }; + }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/ste-db9500.dtsi +++ linux-5.8.0/arch/arm/boot/dts/ste-db9500.dtsi @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "ste-dbx5x0.dtsi" + +/ { + cpus { + cpu@300 { + /* cpufreq controls */ + operating-points = <1152000 0 + 800000 0 + 400000 0 + 200000 0>; + }; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* + * Initial Secure Software ISSW memory + * + * This is probably only used if the kernel tries + * to actually call into trustzone to run secure + * applications, which the mainline kernel probably + * will not do on this old chipset. But you can never + * be too careful, so reserve this memory anyway. + */ + ram@17f00000 { + reg = <0x17f00000 0x00100000>; + no-map; + }; + }; +}; --- linux-5.8.0.orig/arch/arm/boot/dts/ste-snowball.dts +++ linux-5.8.0/arch/arm/boot/dts/ste-snowball.dts @@ -4,7 +4,7 @@ */ /dts-v1/; -#include "ste-db8500.dtsi" +#include "ste-db9500.dtsi" #include "ste-href-ab8500.dtsi" #include "ste-href-family-pinctrl.dtsi" --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi +++ linux-5.8.0/arch/arm/boot/dts/stm32mp15-pinctrl.dtsi @@ -1574,143 +1574,157 @@ }; }; - usart2_pins_a: usart2-0 { + uart4_pins_a: uart4-0 { pins1 { - pinmux = , /* USART2_TX */ - ; /* USART2_RTS */ + pinmux = ; /* UART4_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = , /* USART2_RX */ - ; /* USART2_CTS_NSS */ + pinmux = ; /* UART4_RX */ bias-disable; }; }; - usart2_sleep_pins_a: usart2-sleep-0 { - pins { - pinmux = , /* USART2_TX */ - , /* USART2_RTS */ - , /* USART2_RX */ - ; /* USART2_CTS_NSS */ - }; - }; - - usart2_pins_b: usart2-1 { + uart4_pins_b: uart4-1 { pins1 { - pinmux = , /* USART2_TX */ - ; /* USART2_RTS */ + pinmux = ; /* UART4_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = , /* USART2_RX */ - ; /* USART2_CTS_NSS */ + pinmux = ; /* UART4_RX */ bias-disable; }; }; - usart2_sleep_pins_b: usart2-sleep-1 { - pins { - pinmux = , /* USART2_TX */ - , /* USART2_RTS */ - , /* USART2_RX */ - ; /* USART2_CTS_NSS */ + uart4_pins_c: uart4-2 { + pins1 { + pinmux = ; /* UART4_TX */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; /* UART4_RX */ + bias-disable; }; }; - usart3_pins_a: usart3-0 { + uart7_pins_a: uart7-0 { pins1 { - pinmux = ; /* USART3_TX */ + pinmux = ; /* UART7_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = ; /* USART3_RX */ + pinmux = , /* UART7_RX */ + , /* UART7_CTS */ + ; /* UART7_RTS */ bias-disable; }; }; - uart4_pins_a: uart4-0 { + uart7_pins_b: uart7-1 { pins1 { - pinmux = ; /* UART4_TX */ + pinmux = ; /* UART7_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = ; /* UART4_RX */ + pinmux = ; /* UART7_RX */ bias-disable; }; }; - uart4_pins_b: uart4-1 { + uart8_pins_a: uart8-0 { pins1 { - pinmux = ; /* UART4_TX */ + pinmux = ; /* UART8_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = ; /* UART4_RX */ + pinmux = ; /* UART8_RX */ bias-disable; }; }; - uart4_pins_c: uart4-2 { - pins1 { - pinmux = ; /* UART4_TX */ + spi4_pins_a: spi4-0 { + pins { + pinmux = , /* SPI4_SCK */ + ; /* SPI4_MOSI */ bias-disable; drive-push-pull; - slew-rate = <0>; + slew-rate = <1>; }; pins2 { - pinmux = ; /* UART4_RX */ + pinmux = ; /* SPI4_MISO */ bias-disable; }; }; - uart7_pins_a: uart7-0 { + usart2_pins_a: usart2-0 { pins1 { - pinmux = ; /* UART4_TX */ + pinmux = , /* USART2_TX */ + ; /* USART2_RTS */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = , /* UART4_RX */ - , /* UART4_CTS */ - ; /* UART4_RTS */ + pinmux = , /* USART2_RX */ + ; /* USART2_CTS_NSS */ bias-disable; }; }; - uart7_pins_b: uart7-1 { + usart2_sleep_pins_a: usart2-sleep-0 { + pins { + pinmux = , /* USART2_TX */ + , /* USART2_RTS */ + , /* USART2_RX */ + ; /* USART2_CTS_NSS */ + }; + }; + + usart2_pins_b: usart2-1 { pins1 { - pinmux = ; /* UART7_TX */ + pinmux = , /* USART2_TX */ + ; /* USART2_RTS */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = ; /* UART7_RX */ + pinmux = , /* USART2_RX */ + ; /* USART2_CTS_NSS */ bias-disable; }; }; - uart8_pins_a: uart8-0 { + usart2_sleep_pins_b: usart2-sleep-1 { + pins { + pinmux = , /* USART2_TX */ + , /* USART2_RTS */ + , /* USART2_RX */ + ; /* USART2_CTS_NSS */ + }; + }; + + usart3_pins_a: usart3-0 { pins1 { - pinmux = ; /* UART8_TX */ + pinmux = ; /* USART3_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { - pinmux = ; /* UART8_RX */ + pinmux = ; /* USART3_RX */ bias-disable; }; }; @@ -1776,18 +1790,4 @@ bias-disable; }; }; - - spi4_pins_a: spi4-0 { - pins { - pinmux = , /* SPI4_SCK */ - ; /* SPI4_MOSI */ - bias-disable; - drive-push-pull; - slew-rate = <1>; - }; - pins2 { - pinmux = ; /* SPI4_MISO */ - bias-disable; - }; - }; }; --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts +++ linux-5.8.0/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts @@ -121,8 +121,6 @@ reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; /* ETH_RST# */ interrupt-parent = <&gpioa>; interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* ETH_MDINT# */ - rxc-skew-ps = <1860>; - txc-skew-ps = <1860>; reset-assert-us = <10000>; reset-deassert-us = <300>; micrel,force-master; --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi +++ linux-5.8.0/arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi @@ -11,7 +11,6 @@ serial0 = &uart4; serial1 = &usart3; serial2 = &uart8; - ethernet0 = ðernet0; }; chosen { @@ -26,23 +25,13 @@ display_bl: display-bl { compatible = "pwm-backlight"; - pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>; + pwms = <&pwm2 3 500000 PWM_POLARITY_INVERTED>; brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>; default-brightness-level = <8>; enable-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>; status = "okay"; }; - ethernet_vio: vioregulator { - compatible = "regulator-fixed"; - regulator-name = "vio"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - gpio = <&gpiog 3 GPIO_ACTIVE_LOW>; - regulator-always-on; - regulator-boot-on; - }; - gpio-keys-polled { compatible = "gpio-keys-polled"; #size-cells = <0>; @@ -57,6 +46,16 @@ linux,code = ; gpios = <&gpiof 3 GPIO_ACTIVE_LOW>; }; + + /* + * The EXTi IRQ line 0 is shared with PMIC, + * so mark this as polled GPIO key. + */ + button-2 { + label = "TA3-GPIO-C"; + linux,code = ; + gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; + }; }; gpio-keys { @@ -70,13 +69,6 @@ wakeup-source; }; - button-2 { - label = "TA3-GPIO-C"; - linux,code = ; - gpios = <&gpioi 11 GPIO_ACTIVE_LOW>; - wakeup-source; - }; - button-3 { label = "TA4-GPIO-D"; linux,code = ; @@ -90,7 +82,7 @@ led-0 { label = "green:led5"; - gpios = <&gpiog 2 GPIO_ACTIVE_HIGH>; + gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>; default-state = "off"; }; @@ -141,28 +133,6 @@ status = "okay"; }; -ðernet0 { - status = "okay"; - pinctrl-0 = <ðernet0_rmii_pins_a>; - pinctrl-1 = <ðernet0_rmii_sleep_pins_a>; - pinctrl-names = "default", "sleep"; - phy-mode = "rmii"; - max-speed = <100>; - phy-handle = <&phy0>; - st,eth-ref-clk-sel; - phy-reset-gpios = <&gpioh 15 GPIO_ACTIVE_LOW>; - - mdio0 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "snps,dwmac-mdio"; - - phy0: ethernet-phy@1 { - reg = <1>; - }; - }; -}; - &i2c2 { /* Header X22 */ pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins_a>; --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +++ linux-5.8.0/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi @@ -9,6 +9,10 @@ #include / { + aliases { + ethernet0 = ðernet0; + }; + memory@c0000000 { device_type = "memory"; reg = <0xC0000000 0x40000000>; @@ -55,6 +59,17 @@ no-map; }; }; + + ethernet_vio: vioregulator { + compatible = "regulator-fixed"; + regulator-name = "vio"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpiog 3 GPIO_ACTIVE_LOW>; + regulator-always-on; + regulator-boot-on; + vin-supply = <&vdd>; + }; }; &adc { @@ -94,6 +109,28 @@ status = "okay"; }; +ðernet0 { + status = "okay"; + pinctrl-0 = <ðernet0_rmii_pins_a>; + pinctrl-1 = <ðernet0_rmii_sleep_pins_a>; + pinctrl-names = "default", "sleep"; + phy-mode = "rmii"; + max-speed = <100>; + phy-handle = <&phy0>; + st,eth-ref-clk-sel; + phy-reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>; + + mdio0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + + phy0: ethernet-phy@1 { + reg = <1>; + }; + }; +}; + &i2c4 { pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins_a>; @@ -166,6 +203,7 @@ vdda: ldo1 { regulator-name = "vdda"; + regulator-always-on; regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; interrupts = ; @@ -249,7 +287,7 @@ compatible = "ti,tsc2004"; reg = <0x49>; vio-supply = <&v3v3>; - interrupts-extended = <&gpioh 3 IRQ_TYPE_EDGE_FALLING>; + interrupts-extended = <&gpioh 15 IRQ_TYPE_EDGE_FALLING>; }; eeprom@50 { @@ -315,7 +353,8 @@ pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>; pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>; pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>; - broken-cd; + cd-gpios = <&gpiog 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + disable-wp; st,sig-dir; st,neg-edge; st,use-ckin; --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi +++ linux-5.8.0/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi @@ -295,9 +295,9 @@ &sdmmc2 { pinctrl-names = "default", "opendrain", "sleep"; - pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; - pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_b>; - pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_b>; + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>; + pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>; + pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>; bus-width = <8>; mmc-ddr-1_8v; no-sd; --- linux-5.8.0.orig/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi +++ linux-5.8.0/arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi @@ -21,6 +21,10 @@ }; }; +&dts { + status = "okay"; +}; + &i2c4 { pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins_a>; --- linux-5.8.0.orig/arch/arm/boot/dts/sun4i-a10.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sun4i-a10.dtsi @@ -143,7 +143,7 @@ trips { cpu_alert0: cpu-alert0 { /* milliCelsius */ - temperature = <850000>; + temperature = <85000>; hysteresis = <2000>; type = "passive"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun6i-a31-hummingbird.dts +++ linux-5.8.0/arch/arm/boot/dts/sun6i-a31-hummingbird.dts @@ -154,7 +154,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts +++ linux-5.8.0/arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts @@ -130,7 +130,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_gmac_3v3>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun7i-a20-bananapi.dts +++ linux-5.8.0/arch/arm/boot/dts/sun7i-a20-bananapi.dts @@ -132,7 +132,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_gmac_3v3>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun7i-a20-bananapro.dts +++ linux-5.8.0/arch/arm/boot/dts/sun7i-a20-bananapro.dts @@ -110,7 +110,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_gmac_3v3>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ linux-5.8.0/arch/arm/boot/dts/sun7i-a20-cubietruck.dts @@ -151,7 +151,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun7i-a20-pcduino3-nano.dts +++ linux-5.8.0/arch/arm/boot/dts/sun7i-a20-pcduino3-nano.dts @@ -1,5 +1,5 @@ /* - * Copyright 2015 Adam Sampson + * Copyright 2015-2020 Adam Sampson * * This file is dual-licensed: you can use it either under the terms * of the GPL or the X11 license, at your option. Note that this dual @@ -115,7 +115,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts @@ -131,7 +131,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_sw>; phy-handle = <&rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; allwinner,rx-delay-ps = <700>; allwinner,tx-delay-ps = <700>; status = "okay"; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts @@ -183,7 +183,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_dldo4>; phy-handle = <&rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts @@ -53,11 +53,6 @@ }; }; -&emac { - /* LEDs changed to active high on the plus */ - /delete-property/ allwinner,leds-active-low; -}; - &mmc1 { vmmc-supply = <®_vcc3v3>; bus-width = <4>; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts @@ -67,7 +67,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts @@ -129,7 +129,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_dc1sw>; status = "okay"; }; @@ -223,16 +223,16 @@ }; ®_dc1sw { - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-name = "vcc-gmac-phy"; }; ®_dcdc1 { regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-3v0"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-3v3"; }; ®_dcdc2 { --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-v3s.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sun8i-v3s.dtsi @@ -421,7 +421,7 @@ gic: interrupt-controller@1c81000 { compatible = "arm,gic-400"; reg = <0x01c81000 0x1000>, - <0x01c82000 0x1000>, + <0x01c82000 0x2000>, <0x01c84000 0x2000>, <0x01c86000 0x2000>; interrupt-controller; --- linux-5.8.0.orig/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts +++ linux-5.8.0/arch/arm/boot/dts/sun8i-v40-bananapi-m2-berry.dts @@ -120,7 +120,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_dc1sw>; status = "okay"; }; @@ -198,16 +198,16 @@ }; ®_dc1sw { - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-name = "vcc-gmac-phy"; }; ®_dcdc1 { regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-3v0"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-3v3"; }; ®_dcdc2 { --- linux-5.8.0.orig/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts +++ linux-5.8.0/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts @@ -129,7 +129,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_cldo1>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sun9i-a80-optimus.dts +++ linux-5.8.0/arch/arm/boot/dts/sun9i-a80-optimus.dts @@ -124,7 +124,7 @@ pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_cldo1>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/sunxi-bananapi-m2-plus-v1.2.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sunxi-bananapi-m2-plus-v1.2.dtsi @@ -16,15 +16,27 @@ regulator-type = "voltage"; regulator-boot-on; regulator-always-on; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1300000>; + regulator-min-microvolt = <1108475>; + regulator-max-microvolt = <1308475>; regulator-ramp-delay = <50>; /* 4ms */ gpios = <&r_pio 0 1 GPIO_ACTIVE_HIGH>; /* PL1 */ gpios-states = <0x1>; - states = <1100000 0>, <1300000 1>; + states = <1108475 0>, <1308475 1>; }; }; &cpu0 { cpu-supply = <®_vdd_cpux>; }; + +&cpu1 { + cpu-supply = <®_vdd_cpux>; +}; + +&cpu2 { + cpu-supply = <®_vdd_cpux>; +}; + +&cpu3 { + cpu-supply = <®_vdd_cpux>; +}; --- linux-5.8.0.orig/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi +++ linux-5.8.0/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi @@ -126,7 +126,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm/boot/dts/tegra20-ventana.dts +++ linux-5.8.0/arch/arm/boot/dts/tegra20-ventana.dts @@ -3,6 +3,7 @@ #include #include "tegra20.dtsi" +#include "tegra20-cpu-opp.dtsi" / { model = "NVIDIA Tegra20 Ventana evaluation board"; @@ -599,6 +600,16 @@ }; }; + cpus { + cpu0: cpu@0 { + operating-points-v2 = <&cpu0_opp_table>; + }; + + cpu@1 { + operating-points-v2 = <&cpu0_opp_table>; + }; + }; + gpio-keys { compatible = "gpio-keys"; --- linux-5.8.0.orig/arch/arm/boot/dts/vf610-zii-dev-rev-b.dts +++ linux-5.8.0/arch/arm/boot/dts/vf610-zii-dev-rev-b.dts @@ -406,6 +406,9 @@ }; }; +&mdio1 { + clock-frequency = <5000000>; +}; &iomuxc { pinctrl_gpio_e6185_eeprom_sel: pinctrl-gpio-e6185-eeprom-spi0 { --- linux-5.8.0.orig/arch/arm/boot/dts/vfxxx.dtsi +++ linux-5.8.0/arch/arm/boot/dts/vfxxx.dtsi @@ -495,7 +495,7 @@ }; ocotp: ocotp@400a5000 { - compatible = "fsl,vf610-ocotp"; + compatible = "fsl,vf610-ocotp", "syscon"; reg = <0x400a5000 0x1000>; clocks = <&clks VF610_CLK_OCOTP>; }; --- linux-5.8.0.orig/arch/arm/configs/aspeed_g4_defconfig +++ linux-5.8.0/arch/arm/configs/aspeed_g4_defconfig @@ -160,7 +160,8 @@ CONFIG_SENSORS_W83773G=y CONFIG_WATCHDOG_SYSFS=y CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_ASPEED=y CONFIG_DRM=y --- linux-5.8.0.orig/arch/arm/configs/aspeed_g5_defconfig +++ linux-5.8.0/arch/arm/configs/aspeed_g5_defconfig @@ -175,7 +175,8 @@ CONFIG_SENSORS_W83773G=y CONFIG_WATCHDOG_SYSFS=y CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_ASPEED=y CONFIG_DRM=y --- linux-5.8.0.orig/arch/arm/configs/omap2plus_defconfig +++ linux-5.8.0/arch/arm/configs/omap2plus_defconfig @@ -81,7 +81,6 @@ CONFIG_BINFMT_MISC=y CONFIG_CMA=y CONFIG_ZSMALLOC=m -CONFIG_ZSMALLOC_PGTABLE_MAPPING=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y --- linux-5.8.0.orig/arch/arm/crypto/aes-ce-core.S +++ linux-5.8.0/arch/arm/crypto/aes-ce-core.S @@ -386,20 +386,32 @@ .Lctrloop4x: subs r4, r4, #4 bmi .Lctr1x - add r6, r6, #1 + + /* + * NOTE: the sequence below has been carefully tweaked to avoid + * a silicon erratum that exists in Cortex-A57 (#1742098) and + * Cortex-A72 (#1655431) cores, where AESE/AESMC instruction pairs + * may produce an incorrect result if they take their input from a + * register of which a single 32-bit lane has been updated the last + * time it was modified. To work around this, the lanes of registers + * q0-q3 below are not manipulated individually, and the different + * counter values are prepared by successive manipulations of q7. + */ + add ip, r6, #1 vmov q0, q7 + rev ip, ip + add lr, r6, #2 + vmov s31, ip @ set lane 3 of q1 via q7 + add ip, r6, #3 + rev lr, lr vmov q1, q7 - rev ip, r6 - add r6, r6, #1 + vmov s31, lr @ set lane 3 of q2 via q7 + rev ip, ip vmov q2, q7 - vmov s7, ip - rev ip, r6 - add r6, r6, #1 + vmov s31, ip @ set lane 3 of q3 via q7 + add r6, r6, #4 vmov q3, q7 - vmov s11, ip - rev ip, r6 - add r6, r6, #1 - vmov s15, ip + vld1.8 {q4-q5}, [r1]! vld1.8 {q6}, [r1]! vld1.8 {q15}, [r1]! --- linux-5.8.0.orig/arch/arm/include/asm/Kbuild +++ linux-5.8.0/arch/arm/include/asm/Kbuild @@ -2,7 +2,6 @@ generic-y += early_ioremap.h generic-y += extable.h generic-y += flat.h -generic-y += local64.h generic-y += parport.h generic-y += seccomp.h --- linux-5.8.0.orig/arch/arm/include/asm/assembler.h +++ linux-5.8.0/arch/arm/include/asm/assembler.h @@ -494,4 +494,88 @@ #define _ASM_NOKPROBE(entry) #endif + .macro __adldst_l, op, reg, sym, tmp, c + .if __LINUX_ARM_ARCH__ < 7 + ldr\c \tmp, .La\@ + .subsection 1 + .align 2 +.La\@: .long \sym - .Lpc\@ + .previous + .else + .ifnb \c + THUMB( ittt \c ) + .endif + movw\c \tmp, #:lower16:\sym - .Lpc\@ + movt\c \tmp, #:upper16:\sym - .Lpc\@ + .endif + +#ifndef CONFIG_THUMB2_KERNEL + .set .Lpc\@, . + 8 // PC bias + .ifc \op, add + add\c \reg, \tmp, pc + .else + \op\c \reg, [pc, \tmp] + .endif +#else +.Lb\@: add\c \tmp, \tmp, pc + /* + * In Thumb-2 builds, the PC bias depends on whether we are currently + * emitting into a .arm or a .thumb section. The size of the add opcode + * above will be 2 bytes when emitting in Thumb mode and 4 bytes when + * emitting in ARM mode, so let's use this to account for the bias. + */ + .set .Lpc\@, . + (. - .Lb\@) + + .ifnc \op, add + \op\c \reg, [\tmp] + .endif +#endif + .endm + + /* + * mov_l - move a constant value or [relocated] address into a register + */ + .macro mov_l, dst:req, imm:req + .if __LINUX_ARM_ARCH__ < 7 + ldr \dst, =\imm + .else + movw \dst, #:lower16:\imm + movt \dst, #:upper16:\imm + .endif + .endm + + /* + * adr_l - adr pseudo-op with unlimited range + * + * @dst: destination register + * @sym: name of the symbol + * @cond: conditional opcode suffix + */ + .macro adr_l, dst:req, sym:req, cond + __adldst_l add, \dst, \sym, \dst, \cond + .endm + + /* + * ldr_l - ldr pseudo-op with unlimited range + * + * @dst: destination register + * @sym: name of the symbol + * @cond: conditional opcode suffix + */ + .macro ldr_l, dst:req, sym:req, cond + __adldst_l ldr, \dst, \sym, \dst, \cond + .endm + + /* + * str_l - str pseudo-op with unlimited range + * + * @src: source register + * @sym: name of the symbol + * @tmp: mandatory scratch register + * @cond: conditional opcode suffix + */ + .macro str_l, src:req, sym:req, tmp:req, cond + __adldst_l str, \src, \sym, \tmp, \cond + .endm + #endif /* __ASM_ASSEMBLER_H__ */ --- linux-5.8.0.orig/arch/arm/include/asm/kexec-internal.h +++ linux-5.8.0/arch/arm/include/asm/kexec-internal.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ARM_KEXEC_INTERNAL_H +#define _ARM_KEXEC_INTERNAL_H + +struct kexec_relocate_data { + unsigned long kexec_start_address; + unsigned long kexec_indirection_page; + unsigned long kexec_mach_type; + unsigned long kexec_r2; +}; + +#endif --- linux-5.8.0.orig/arch/arm/include/asm/kprobes.h +++ linux-5.8.0/arch/arm/include/asm/kprobes.h @@ -44,20 +44,20 @@ unsigned long val, void *data); /* optinsn template addresses */ -extern __visible kprobe_opcode_t optprobe_template_entry; -extern __visible kprobe_opcode_t optprobe_template_val; -extern __visible kprobe_opcode_t optprobe_template_call; -extern __visible kprobe_opcode_t optprobe_template_end; -extern __visible kprobe_opcode_t optprobe_template_sub_sp; -extern __visible kprobe_opcode_t optprobe_template_add_sp; -extern __visible kprobe_opcode_t optprobe_template_restore_begin; -extern __visible kprobe_opcode_t optprobe_template_restore_orig_insn; -extern __visible kprobe_opcode_t optprobe_template_restore_end; +extern __visible kprobe_opcode_t optprobe_template_entry[]; +extern __visible kprobe_opcode_t optprobe_template_val[]; +extern __visible kprobe_opcode_t optprobe_template_call[]; +extern __visible kprobe_opcode_t optprobe_template_end[]; +extern __visible kprobe_opcode_t optprobe_template_sub_sp[]; +extern __visible kprobe_opcode_t optprobe_template_add_sp[]; +extern __visible kprobe_opcode_t optprobe_template_restore_begin[]; +extern __visible kprobe_opcode_t optprobe_template_restore_orig_insn[]; +extern __visible kprobe_opcode_t optprobe_template_restore_end[]; #define MAX_OPTIMIZED_LENGTH 4 #define MAX_OPTINSN_SIZE \ - ((unsigned long)&optprobe_template_end - \ - (unsigned long)&optprobe_template_entry) + ((unsigned long)optprobe_template_end - \ + (unsigned long)optprobe_template_entry) #define RELATIVEJUMP_SIZE 4 struct arch_optimized_insn { --- linux-5.8.0.orig/arch/arm/include/asm/pgtable-2level.h +++ linux-5.8.0/arch/arm/include/asm/pgtable-2level.h @@ -75,6 +75,8 @@ #define PTE_HWTABLE_OFF (PTE_HWTABLE_PTRS * sizeof(pte_t)) #define PTE_HWTABLE_SIZE (PTRS_PER_PTE * sizeof(u32)) +#define MAX_POSSIBLE_PHYSMEM_BITS 32 + /* * PMD_SHIFT determines the size of the area a second-level page table can map * PGDIR_SHIFT determines what a third-level page table entry can map --- linux-5.8.0.orig/arch/arm/include/asm/pgtable-3level.h +++ linux-5.8.0/arch/arm/include/asm/pgtable-3level.h @@ -25,6 +25,8 @@ #define PTE_HWTABLE_OFF (0) #define PTE_HWTABLE_SIZE (PTRS_PER_PTE * sizeof(u64)) +#define MAX_POSSIBLE_PHYSMEM_BITS 40 + /* * PGDIR_SHIFT determines the size a top-level page table entry can map. */ --- linux-5.8.0.orig/arch/arm/kernel/asm-offsets.c +++ linux-5.8.0/arch/arm/kernel/asm-offsets.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -170,5 +171,9 @@ DEFINE(MPU_RGN_PRBAR, offsetof(struct mpu_rgn, prbar)); DEFINE(MPU_RGN_PRLAR, offsetof(struct mpu_rgn, prlar)); #endif + DEFINE(KEXEC_START_ADDR, offsetof(struct kexec_relocate_data, kexec_start_address)); + DEFINE(KEXEC_INDIR_PAGE, offsetof(struct kexec_relocate_data, kexec_indirection_page)); + DEFINE(KEXEC_MACH_TYPE, offsetof(struct kexec_relocate_data, kexec_mach_type)); + DEFINE(KEXEC_R2, offsetof(struct kexec_relocate_data, kexec_r2)); return 0; } --- linux-5.8.0.orig/arch/arm/kernel/entry-armv.S +++ linux-5.8.0/arch/arm/kernel/entry-armv.S @@ -252,31 +252,10 @@ #else svc_entry #endif - @ - @ call emulation code, which returns using r9 if it has emulated - @ the instruction, or the more conventional lr if we are to treat - @ this as a real undefined instruction - @ - @ r0 - instruction - @ -#ifndef CONFIG_THUMB2_KERNEL - ldr r0, [r4, #-4] -#else - mov r1, #2 - ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2 - cmp r0, #0xe800 @ 32-bit instruction if xx >= 0 - blo __und_svc_fault - ldrh r9, [r4] @ bottom 16 bits - add r4, r4, #2 - str r4, [sp, #S_PC] - orr r0, r9, r0, lsl #16 -#endif - badr r9, __und_svc_finish - mov r2, r4 - bl call_fpe mov r1, #4 @ PC correction to apply -__und_svc_fault: + THUMB( tst r5, #PSR_T_BIT ) @ exception taken in Thumb mode? + THUMB( movne r1, #2 ) @ if so, fix up PC correction mov r0, sp @ struct pt_regs *regs bl __und_fault --- linux-5.8.0.orig/arch/arm/kernel/head.S +++ linux-5.8.0/arch/arm/kernel/head.S @@ -672,11 +672,7 @@ bcc 1b bx lr #else -#ifdef CONFIG_CPU_ENDIAN_BE8 - moveq r0, #0x00004000 @ set bit 22, mov to mvn instruction -#else moveq r0, #0x400000 @ set bit 22, mov to mvn instruction -#endif b 2f 1: ldr ip, [r7, r3] #ifdef CONFIG_CPU_ENDIAN_BE8 @@ -685,7 +681,7 @@ tst ip, #0x000f0000 @ check the rotation field orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 biceq ip, ip, #0x00004000 @ clear bit 22 - orreq ip, ip, r0 @ mask in offset bits 7-0 + orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 #else bic ip, ip, #0x000000ff tst ip, #0xf00 @ check the rotation field --- linux-5.8.0.orig/arch/arm/kernel/hw_breakpoint.c +++ linux-5.8.0/arch/arm/kernel/hw_breakpoint.c @@ -683,6 +683,40 @@ arch_install_hw_breakpoint(bp); } +/* + * Arm32 hardware does not always report a watchpoint hit address that matches + * one of the watchpoints set. It can also report an address "near" the + * watchpoint if a single instruction access both watched and unwatched + * addresses. There is no straight-forward way, short of disassembling the + * offending instruction, to map that address back to the watchpoint. This + * function computes the distance of the memory access from the watchpoint as a + * heuristic for the likelyhood that a given access triggered the watchpoint. + * + * See this same function in the arm64 platform code, which has the same + * problem. + * + * The function returns the distance of the address from the bytes watched by + * the watchpoint. In case of an exact match, it returns 0. + */ +static u32 get_distance_from_watchpoint(unsigned long addr, u32 val, + struct arch_hw_breakpoint_ctrl *ctrl) +{ + u32 wp_low, wp_high; + u32 lens, lene; + + lens = __ffs(ctrl->len); + lene = __fls(ctrl->len); + + wp_low = val + lens; + wp_high = val + lene; + if (addr < wp_low) + return wp_low - addr; + else if (addr > wp_high) + return addr - wp_high; + else + return 0; +} + static int watchpoint_fault_on_uaccess(struct pt_regs *regs, struct arch_hw_breakpoint *info) { @@ -692,23 +726,25 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr, struct pt_regs *regs) { - int i, access; - u32 val, ctrl_reg, alignment_mask; + int i, access, closest_match = 0; + u32 min_dist = -1, dist; + u32 val, ctrl_reg; struct perf_event *wp, **slots; struct arch_hw_breakpoint *info; struct arch_hw_breakpoint_ctrl ctrl; slots = this_cpu_ptr(wp_on_reg); + /* + * Find all watchpoints that match the reported address. If no exact + * match is found. Attribute the hit to the closest watchpoint. + */ + rcu_read_lock(); for (i = 0; i < core_num_wrps; ++i) { - rcu_read_lock(); - wp = slots[i]; - if (wp == NULL) - goto unlock; + continue; - info = counter_arch_bp(wp); /* * The DFAR is an unknown value on debug architectures prior * to 7.1. Since we only allow a single watchpoint on these @@ -717,33 +753,31 @@ */ if (debug_arch < ARM_DEBUG_ARCH_V7_1) { BUG_ON(i > 0); + info = counter_arch_bp(wp); info->trigger = wp->attr.bp_addr; } else { - if (info->ctrl.len == ARM_BREAKPOINT_LEN_8) - alignment_mask = 0x7; - else - alignment_mask = 0x3; - - /* Check if the watchpoint value matches. */ - val = read_wb_reg(ARM_BASE_WVR + i); - if (val != (addr & ~alignment_mask)) - goto unlock; - - /* Possible match, check the byte address select. */ - ctrl_reg = read_wb_reg(ARM_BASE_WCR + i); - decode_ctrl_reg(ctrl_reg, &ctrl); - if (!((1 << (addr & alignment_mask)) & ctrl.len)) - goto unlock; - /* Check that the access type matches. */ if (debug_exception_updates_fsr()) { access = (fsr & ARM_FSR_ACCESS_MASK) ? HW_BREAKPOINT_W : HW_BREAKPOINT_R; if (!(access & hw_breakpoint_type(wp))) - goto unlock; + continue; } + val = read_wb_reg(ARM_BASE_WVR + i); + ctrl_reg = read_wb_reg(ARM_BASE_WCR + i); + decode_ctrl_reg(ctrl_reg, &ctrl); + dist = get_distance_from_watchpoint(addr, val, &ctrl); + if (dist < min_dist) { + min_dist = dist; + closest_match = i; + } + /* Is this an exact match? */ + if (dist != 0) + continue; + /* We have a winner. */ + info = counter_arch_bp(wp); info->trigger = addr; } @@ -765,13 +799,23 @@ * we can single-step over the watchpoint trigger. */ if (!is_default_overflow_handler(wp)) - goto unlock; - + continue; step: enable_single_step(wp, instruction_pointer(regs)); -unlock: - rcu_read_unlock(); } + + if (min_dist > 0 && min_dist != -1) { + /* No exact match found. */ + wp = slots[closest_match]; + info = counter_arch_bp(wp); + info->trigger = addr; + pr_debug("watchpoint fired: address = 0x%x\n", info->trigger); + perf_bp_event(wp, regs); + if (is_default_overflow_handler(wp)) + enable_single_step(wp, instruction_pointer(regs)); + } + + rcu_read_unlock(); } static void watchpoint_single_step_handler(unsigned long pc) --- linux-5.8.0.orig/arch/arm/kernel/iwmmxt.S +++ linux-5.8.0/arch/arm/kernel/iwmmxt.S @@ -16,6 +16,7 @@ #include #include #include +#include "iwmmxt.h" #if defined(CONFIG_CPU_PJ4) || defined(CONFIG_CPU_PJ4B) #define PJ4(code...) code @@ -113,33 +114,33 @@ concan_dump: - wstrw wCSSF, [r1, #MMX_WCSSF] - wstrw wCASF, [r1, #MMX_WCASF] - wstrw wCGR0, [r1, #MMX_WCGR0] - wstrw wCGR1, [r1, #MMX_WCGR1] - wstrw wCGR2, [r1, #MMX_WCGR2] - wstrw wCGR3, [r1, #MMX_WCGR3] + wstrw wCSSF, r1, MMX_WCSSF + wstrw wCASF, r1, MMX_WCASF + wstrw wCGR0, r1, MMX_WCGR0 + wstrw wCGR1, r1, MMX_WCGR1 + wstrw wCGR2, r1, MMX_WCGR2 + wstrw wCGR3, r1, MMX_WCGR3 1: @ MUP? wRn tst r2, #0x2 beq 2f - wstrd wR0, [r1, #MMX_WR0] - wstrd wR1, [r1, #MMX_WR1] - wstrd wR2, [r1, #MMX_WR2] - wstrd wR3, [r1, #MMX_WR3] - wstrd wR4, [r1, #MMX_WR4] - wstrd wR5, [r1, #MMX_WR5] - wstrd wR6, [r1, #MMX_WR6] - wstrd wR7, [r1, #MMX_WR7] - wstrd wR8, [r1, #MMX_WR8] - wstrd wR9, [r1, #MMX_WR9] - wstrd wR10, [r1, #MMX_WR10] - wstrd wR11, [r1, #MMX_WR11] - wstrd wR12, [r1, #MMX_WR12] - wstrd wR13, [r1, #MMX_WR13] - wstrd wR14, [r1, #MMX_WR14] - wstrd wR15, [r1, #MMX_WR15] + wstrd wR0, r1, MMX_WR0 + wstrd wR1, r1, MMX_WR1 + wstrd wR2, r1, MMX_WR2 + wstrd wR3, r1, MMX_WR3 + wstrd wR4, r1, MMX_WR4 + wstrd wR5, r1, MMX_WR5 + wstrd wR6, r1, MMX_WR6 + wstrd wR7, r1, MMX_WR7 + wstrd wR8, r1, MMX_WR8 + wstrd wR9, r1, MMX_WR9 + wstrd wR10, r1, MMX_WR10 + wstrd wR11, r1, MMX_WR11 + wstrd wR12, r1, MMX_WR12 + wstrd wR13, r1, MMX_WR13 + wstrd wR14, r1, MMX_WR14 + wstrd wR15, r1, MMX_WR15 2: teq r0, #0 @ anything to load? reteq lr @ if not, return @@ -147,30 +148,30 @@ concan_load: @ Load wRn - wldrd wR0, [r0, #MMX_WR0] - wldrd wR1, [r0, #MMX_WR1] - wldrd wR2, [r0, #MMX_WR2] - wldrd wR3, [r0, #MMX_WR3] - wldrd wR4, [r0, #MMX_WR4] - wldrd wR5, [r0, #MMX_WR5] - wldrd wR6, [r0, #MMX_WR6] - wldrd wR7, [r0, #MMX_WR7] - wldrd wR8, [r0, #MMX_WR8] - wldrd wR9, [r0, #MMX_WR9] - wldrd wR10, [r0, #MMX_WR10] - wldrd wR11, [r0, #MMX_WR11] - wldrd wR12, [r0, #MMX_WR12] - wldrd wR13, [r0, #MMX_WR13] - wldrd wR14, [r0, #MMX_WR14] - wldrd wR15, [r0, #MMX_WR15] + wldrd wR0, r0, MMX_WR0 + wldrd wR1, r0, MMX_WR1 + wldrd wR2, r0, MMX_WR2 + wldrd wR3, r0, MMX_WR3 + wldrd wR4, r0, MMX_WR4 + wldrd wR5, r0, MMX_WR5 + wldrd wR6, r0, MMX_WR6 + wldrd wR7, r0, MMX_WR7 + wldrd wR8, r0, MMX_WR8 + wldrd wR9, r0, MMX_WR9 + wldrd wR10, r0, MMX_WR10 + wldrd wR11, r0, MMX_WR11 + wldrd wR12, r0, MMX_WR12 + wldrd wR13, r0, MMX_WR13 + wldrd wR14, r0, MMX_WR14 + wldrd wR15, r0, MMX_WR15 @ Load wCx - wldrw wCSSF, [r0, #MMX_WCSSF] - wldrw wCASF, [r0, #MMX_WCASF] - wldrw wCGR0, [r0, #MMX_WCGR0] - wldrw wCGR1, [r0, #MMX_WCGR1] - wldrw wCGR2, [r0, #MMX_WCGR2] - wldrw wCGR3, [r0, #MMX_WCGR3] + wldrw wCSSF, r0, MMX_WCSSF + wldrw wCASF, r0, MMX_WCASF + wldrw wCGR0, r0, MMX_WCGR0 + wldrw wCGR1, r0, MMX_WCGR1 + wldrw wCGR2, r0, MMX_WCGR2 + wldrw wCGR3, r0, MMX_WCGR3 @ clear CUP/MUP (only if r1 != 0) teq r1, #0 --- linux-5.8.0.orig/arch/arm/kernel/iwmmxt.h +++ linux-5.8.0/arch/arm/kernel/iwmmxt.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __IWMMXT_H__ +#define __IWMMXT_H__ + +.irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +.set .LwR\b, \b +.set .Lr\b, \b +.endr + +.set .LwCSSF, 0x2 +.set .LwCASF, 0x3 +.set .LwCGR0, 0x8 +.set .LwCGR1, 0x9 +.set .LwCGR2, 0xa +.set .LwCGR3, 0xb + +.macro wldrd, reg:req, base:req, offset:req +.inst 0xedd00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) +.endm + +.macro wldrw, reg:req, base:req, offset:req +.inst 0xfd900100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) +.endm + +.macro wstrd, reg:req, base:req, offset:req +.inst 0xedc00100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) +.endm + +.macro wstrw, reg:req, base:req, offset:req +.inst 0xfd800100 | (.L\reg << 12) | (.L\base << 16) | (\offset >> 2) +.endm + +#ifdef __clang__ + +#define wCon c1 + +.macro tmrc, dest:req, control:req +mrc p1, 0, \dest, \control, c0, 0 +.endm + +.macro tmcr, control:req, src:req +mcr p1, 0, \src, \control, c0, 0 +.endm +#endif + +#endif --- linux-5.8.0.orig/arch/arm/kernel/machine_kexec.c +++ linux-5.8.0/arch/arm/kernel/machine_kexec.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -23,11 +24,6 @@ extern void relocate_new_kernel(void); extern const unsigned int relocate_new_kernel_size; -extern unsigned long kexec_start_address; -extern unsigned long kexec_indirection_page; -extern unsigned long kexec_mach_type; -extern unsigned long kexec_boot_atags; - static atomic_t waiting_for_crash_ipi; /* @@ -160,6 +156,7 @@ void machine_kexec(struct kimage *image) { unsigned long page_list, reboot_entry_phys; + struct kexec_relocate_data *data; void (*reboot_entry)(void); void *reboot_code_buffer; @@ -175,18 +172,17 @@ reboot_code_buffer = page_address(image->control_code_page); - /* Prepare parameters for reboot_code_buffer*/ - set_kernel_text_rw(); - kexec_start_address = image->start; - kexec_indirection_page = page_list; - kexec_mach_type = machine_arch_type; - kexec_boot_atags = image->arch.kernel_r2; - /* copy our kernel relocation code to the control code page */ reboot_entry = fncpy(reboot_code_buffer, &relocate_new_kernel, relocate_new_kernel_size); + data = reboot_code_buffer + relocate_new_kernel_size; + data->kexec_start_address = image->start; + data->kexec_indirection_page = page_list; + data->kexec_mach_type = machine_arch_type; + data->kexec_r2 = image->arch.kernel_r2; + /* get the identity mapping physical address for the reboot code */ reboot_entry_phys = virt_to_idmap(reboot_entry); --- linux-5.8.0.orig/arch/arm/kernel/relocate_kernel.S +++ linux-5.8.0/arch/arm/kernel/relocate_kernel.S @@ -5,14 +5,16 @@ #include #include +#include #include .align 3 /* not needed for this code, but keeps fncpy() happy */ ENTRY(relocate_new_kernel) - ldr r0,kexec_indirection_page - ldr r1,kexec_start_address + adr r7, relocate_new_kernel_end + ldr r0, [r7, #KEXEC_INDIR_PAGE] + ldr r1, [r7, #KEXEC_START_ADDR] /* * If there is no indirection page (we are doing crashdumps) @@ -57,34 +59,16 @@ 2: /* Jump to relocated kernel */ - mov lr,r1 - mov r0,#0 - ldr r1,kexec_mach_type - ldr r2,kexec_boot_atags - ARM( ret lr ) - THUMB( bx lr ) - - .align - - .globl kexec_start_address -kexec_start_address: - .long 0x0 - - .globl kexec_indirection_page -kexec_indirection_page: - .long 0x0 - - .globl kexec_mach_type -kexec_mach_type: - .long 0x0 - - /* phy addr of the atags for the new kernel */ - .globl kexec_boot_atags -kexec_boot_atags: - .long 0x0 + mov lr, r1 + mov r0, #0 + ldr r1, [r7, #KEXEC_MACH_TYPE] + ldr r2, [r7, #KEXEC_R2] + ARM( ret lr ) + THUMB( bx lr ) ENDPROC(relocate_new_kernel) + .align 3 relocate_new_kernel_end: .globl relocate_new_kernel_size --- linux-5.8.0.orig/arch/arm/kernel/signal.c +++ linux-5.8.0/arch/arm/kernel/signal.c @@ -694,18 +694,20 @@ addr = page_address(page); + /* Poison the entire page */ + memset32(addr, __opcode_to_mem_arm(0xe7fddef1), + PAGE_SIZE / sizeof(u32)); + /* Give the signal return code some randomness */ offset = 0x200 + (get_random_int() & 0x7fc); signal_return_offset = offset; - /* - * Copy signal return handlers into the vector page, and - * set sigreturn to be a pointer to these. - */ + /* Copy signal return handlers into the page */ memcpy(addr + offset, sigreturn_codes, sizeof(sigreturn_codes)); - ptr = (unsigned long)addr + offset; - flush_icache_range(ptr, ptr + sizeof(sigreturn_codes)); + /* Flush out all instructions in this page */ + ptr = (unsigned long)addr; + flush_icache_range(ptr, ptr + PAGE_SIZE); return page; } --- linux-5.8.0.orig/arch/arm/kernel/stacktrace.c +++ linux-5.8.0/arch/arm/kernel/stacktrace.c @@ -22,6 +22,19 @@ * A simple function epilogue looks like this: * ldm sp, {fp, sp, pc} * + * When compiled with clang, pc and sp are not pushed. A simple function + * prologue looks like this when built with clang: + * + * stmdb {..., fp, lr} + * add fp, sp, #x + * sub sp, sp, #y + * + * A simple function epilogue looks like this when built with clang: + * + * sub sp, fp, #x + * ldm {..., fp, pc} + * + * * Note that with framepointer enabled, even the leaf functions have the same * prologue and epilogue, therefore we can ignore the LR value in this case. */ @@ -34,6 +47,16 @@ low = frame->sp; high = ALIGN(low, THREAD_SIZE); +#ifdef CONFIG_CC_IS_CLANG + /* check current frame pointer is within bounds */ + if (fp < low + 4 || fp > high - 4) + return -EINVAL; + + frame->sp = frame->fp; + frame->fp = *(unsigned long *)(fp); + frame->pc = frame->lr; + frame->lr = *(unsigned long *)(fp + 4); +#else /* check current frame pointer is within bounds */ if (fp < low + 12 || fp > high - 4) return -EINVAL; @@ -42,6 +65,7 @@ frame->fp = *(unsigned long *)(fp - 12); frame->sp = *(unsigned long *)(fp - 8); frame->pc = *(unsigned long *)(fp - 4); +#endif return 0; } --- linux-5.8.0.orig/arch/arm/kernel/sys_oabi-compat.c +++ linux-5.8.0/arch/arm/kernel/sys_oabi-compat.c @@ -248,6 +248,7 @@ __u64 data; } __attribute__ ((packed,aligned(4))); +#ifdef CONFIG_EPOLL asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd, struct oabi_epoll_event __user *event) { @@ -298,6 +299,20 @@ kfree(kbuf); return err ? -EFAULT : ret; } +#else +asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd, + struct oabi_epoll_event __user *event) +{ + return -EINVAL; +} + +asmlinkage long sys_oabi_epoll_wait(int epfd, + struct oabi_epoll_event __user *events, + int maxevents, int timeout) +{ + return -EINVAL; +} +#endif struct oabi_sembuf { unsigned short sem_num; --- linux-5.8.0.orig/arch/arm/mach-at91/pm.c +++ linux-5.8.0/arch/arm/mach-at91/pm.c @@ -592,13 +592,13 @@ sram_pool = gen_pool_get(&pdev->dev, NULL); if (!sram_pool) { pr_warn("%s: sram pool unavailable!\n", __func__); - return; + goto out_put_device; } sram_base = gen_pool_alloc(sram_pool, at91_pm_suspend_in_sram_sz); if (!sram_base) { pr_warn("%s: unable to alloc sram!\n", __func__); - return; + goto out_put_device; } sram_pbase = gen_pool_virt_to_phys(sram_pool, sram_base); @@ -606,12 +606,17 @@ at91_pm_suspend_in_sram_sz, false); if (!at91_suspend_sram_fn) { pr_warn("SRAM: Could not map\n"); - return; + goto out_put_device; } /* Copy the pm suspend handler to SRAM */ at91_suspend_sram_fn = fncpy(at91_suspend_sram_fn, &at91_pm_suspend_in_sram, at91_pm_suspend_in_sram_sz); + return; + +out_put_device: + put_device(&pdev->dev); + return; } static bool __init at91_is_pm_mode_active(int pm_mode) @@ -795,6 +800,7 @@ pmc_np = of_find_matching_node_and_match(NULL, atmel_pmc_ids, &of_id); soc_pm.data.pmc = of_iomap(pmc_np, 0); + of_node_put(pmc_np); if (!soc_pm.data.pmc) { pr_err("AT91: PM not supported, PMC not found\n"); return; --- linux-5.8.0.orig/arch/arm/mach-at91/pm_suspend.S +++ linux-5.8.0/arch/arm/mach-at91/pm_suspend.S @@ -415,7 +415,7 @@ str tmp1, [pmc, #AT91_PMC_PLL_UPDT] /* step 2. */ - ldr tmp1, =#AT91_PMC_PLL_ACR_DEFAULT_PLLA + ldr tmp1, =AT91_PMC_PLL_ACR_DEFAULT_PLLA str tmp1, [pmc, #AT91_PMC_PLL_ACR] /* step 3. */ --- linux-5.8.0.orig/arch/arm/mach-exynos/exynos.c +++ linux-5.8.0/arch/arm/mach-exynos/exynos.c @@ -193,7 +193,7 @@ } DT_MACHINE_START(EXYNOS_DT, "Samsung Exynos (Flattened Device Tree)") - .l2c_aux_val = 0x3c400001, + .l2c_aux_val = 0x3c400000, .l2c_aux_mask = 0xc20fffff, .smp = smp_ops(exynos_smp_ops), .map_io = exynos_init_io, --- linux-5.8.0.orig/arch/arm/mach-exynos/mcpm-exynos.c +++ linux-5.8.0/arch/arm/mach-exynos/mcpm-exynos.c @@ -26,6 +26,7 @@ #define EXYNOS5420_USE_L2_COMMON_UP_STATE BIT(30) static void __iomem *ns_sram_base_addr __ro_after_init; +static bool secure_firmware __ro_after_init; /* * The common v7_exit_coherency_flush API could not be used because of the @@ -58,15 +59,16 @@ static int exynos_cpu_powerup(unsigned int cpu, unsigned int cluster) { unsigned int cpunr = cpu + (cluster * EXYNOS5420_CPUS_PER_CLUSTER); + bool state; pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster); if (cpu >= EXYNOS5420_CPUS_PER_CLUSTER || cluster >= EXYNOS5420_NR_CLUSTERS) return -EINVAL; - if (!exynos_cpu_power_state(cpunr)) { - exynos_cpu_power_up(cpunr); - + state = exynos_cpu_power_state(cpunr); + exynos_cpu_power_up(cpunr); + if (!state && secure_firmware) { /* * This assumes the cluster number of the big cores(Cortex A15) * is 0 and the Little cores(Cortex A7) is 1. @@ -258,6 +260,8 @@ return -ENOMEM; } + secure_firmware = exynos_secure_firmware_available(); + /* * To increase the stability of KFC reset we need to program * the PMU SPARE3 register --- linux-5.8.0.orig/arch/arm/mach-footbridge/dc21285.c +++ linux-5.8.0/arch/arm/mach-footbridge/dc21285.c @@ -65,15 +65,15 @@ if (addr) switch (size) { case 1: - asm("ldrb %0, [%1, %2]" + asm volatile("ldrb %0, [%1, %2]" : "=r" (v) : "r" (addr), "r" (where) : "cc"); break; case 2: - asm("ldrh %0, [%1, %2]" + asm volatile("ldrh %0, [%1, %2]" : "=r" (v) : "r" (addr), "r" (where) : "cc"); break; case 4: - asm("ldr %0, [%1, %2]" + asm volatile("ldr %0, [%1, %2]" : "=r" (v) : "r" (addr), "r" (where) : "cc"); break; } @@ -99,17 +99,17 @@ if (addr) switch (size) { case 1: - asm("strb %0, [%1, %2]" + asm volatile("strb %0, [%1, %2]" : : "r" (value), "r" (addr), "r" (where) : "cc"); break; case 2: - asm("strh %0, [%1, %2]" + asm volatile("strh %0, [%1, %2]" : : "r" (value), "r" (addr), "r" (where) : "cc"); break; case 4: - asm("str %0, [%1, %2]" + asm volatile("str %0, [%1, %2]" : : "r" (value), "r" (addr), "r" (where) : "cc"); break; --- linux-5.8.0.orig/arch/arm/mach-imx/suspend-imx6.S +++ linux-5.8.0/arch/arm/mach-imx/suspend-imx6.S @@ -67,6 +67,7 @@ #define MX6Q_CCM_CCR 0x0 .align 3 + .arm .macro sync_l2_cache --- linux-5.8.0.orig/arch/arm/mach-ixp4xx/Kconfig +++ linux-5.8.0/arch/arm/mach-ixp4xx/Kconfig @@ -13,7 +13,6 @@ select I2C select I2C_IOP3XX select PCI - select TIMER_OF select USE_OF help Say 'Y' here to support Device Tree-based IXP4xx platforms. --- linux-5.8.0.orig/arch/arm/mach-omap1/board-osk.c +++ linux-5.8.0/arch/arm/mach-omap1/board-osk.c @@ -199,6 +199,8 @@ */ gpio_request(OSK_TPS_GPIO_USB_PWR_EN, "n_vbus_en"); gpio_direction_output(OSK_TPS_GPIO_USB_PWR_EN, 1); + /* Free the GPIO again as the driver will request it */ + gpio_free(OSK_TPS_GPIO_USB_PWR_EN); /* Set GPIO 2 high so LED D3 is off by default */ tps65010_set_gpio_out_value(GPIO2, HIGH); --- linux-5.8.0.orig/arch/arm/mach-omap2/cpuidle44xx.c +++ linux-5.8.0/arch/arm/mach-omap2/cpuidle44xx.c @@ -151,10 +151,10 @@ (cx->mpu_logic_state == PWRDM_POWER_OFF); /* Enter broadcast mode for periodic timers */ - tick_broadcast_enable(); + RCU_NONIDLE(tick_broadcast_enable()); /* Enter broadcast mode for one-shot timers */ - tick_broadcast_enter(); + RCU_NONIDLE(tick_broadcast_enter()); /* * Call idle CPU PM enter notifier chain so that @@ -166,7 +166,7 @@ if (dev->cpu == 0) { pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state); - omap_set_pwrdm_state(mpu_pd, cx->mpu_state); + RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state)); /* * Call idle CPU cluster PM enter notifier chain @@ -174,15 +174,19 @@ */ if (mpuss_can_lose_context) { error = cpu_cluster_pm_enter(); - if (error) - goto cpu_cluster_pm_out; + if (error) { + index = 0; + cx = state_ptr + index; + pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state); + RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state)); + mpuss_can_lose_context = 0; + } } } omap4_enter_lowpower(dev->cpu, cx->cpu_state); cpu_done[dev->cpu] = true; -cpu_cluster_pm_out: /* Wakeup CPU1 only if it is not offlined */ if (dev->cpu == 0 && cpumask_test_cpu(1, cpu_online_mask)) { @@ -190,9 +194,9 @@ mpuss_can_lose_context) gic_dist_disable(); - clkdm_deny_idle(cpu_clkdm[1]); - omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON); - clkdm_allow_idle(cpu_clkdm[1]); + RCU_NONIDLE(clkdm_deny_idle(cpu_clkdm[1])); + RCU_NONIDLE(omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON)); + RCU_NONIDLE(clkdm_allow_idle(cpu_clkdm[1])); if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) && mpuss_can_lose_context) { @@ -218,7 +222,7 @@ cpu_pm_exit(); cpu_pm_out: - tick_broadcast_exit(); + RCU_NONIDLE(tick_broadcast_exit()); fail: cpuidle_coupled_parallel_barrier(dev, &abort_barrier); --- linux-5.8.0.orig/arch/arm/mach-omap2/omap-iommu.c +++ linux-5.8.0/arch/arm/mach-omap2/omap-iommu.c @@ -74,7 +74,7 @@ return pwrdm; clk = of_clk_get(dev->of_node->parent, 0); - if (!clk) { + if (IS_ERR(clk)) { dev_err(dev, "no fck found\n"); return NULL; } --- linux-5.8.0.orig/arch/arm/mach-omap2/omap_device.c +++ linux-5.8.0/arch/arm/mach-omap2/omap_device.c @@ -230,10 +230,12 @@ break; case BUS_NOTIFY_BIND_DRIVER: od = to_omap_device(pdev); - if (od && (od->_state == OMAP_DEVICE_STATE_ENABLED) && - pm_runtime_status_suspended(dev)) { + if (od) { od->_driver_status = BUS_NOTIFY_BIND_DRIVER; - pm_runtime_set_active(dev); + if (od->_state == OMAP_DEVICE_STATE_ENABLED && + pm_runtime_status_suspended(dev)) { + pm_runtime_set_active(dev); + } } break; case BUS_NOTIFY_ADD_DEVICE: --- linux-5.8.0.orig/arch/arm/mach-omap2/pmic-cpcap.c +++ linux-5.8.0/arch/arm/mach-omap2/pmic-cpcap.c @@ -71,7 +71,7 @@ .vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN, .vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX, .vddmin = 900000, - .vddmax = 1350000, + .vddmax = 1375000, .vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US, .i2c_slave_addr = 0x44, .volt_reg_addr = 0x0, --- linux-5.8.0.orig/arch/arm/mach-omap2/sr_device.c +++ linux-5.8.0/arch/arm/mach-omap2/sr_device.c @@ -88,34 +88,26 @@ extern struct omap_sr_data omap_sr_pdata[]; -static int __init sr_dev_init(struct omap_hwmod *oh, void *user) +static int __init sr_init_by_name(const char *name, const char *voltdm) { struct omap_sr_data *sr_data = NULL; struct omap_volt_data *volt_data; - struct omap_smartreflex_dev_attr *sr_dev_attr; static int i; - if (!strncmp(oh->name, "smartreflex_mpu_iva", 20) || - !strncmp(oh->name, "smartreflex_mpu", 16)) + if (!strncmp(name, "smartreflex_mpu_iva", 20) || + !strncmp(name, "smartreflex_mpu", 16)) sr_data = &omap_sr_pdata[OMAP_SR_MPU]; - else if (!strncmp(oh->name, "smartreflex_core", 17)) + else if (!strncmp(name, "smartreflex_core", 17)) sr_data = &omap_sr_pdata[OMAP_SR_CORE]; - else if (!strncmp(oh->name, "smartreflex_iva", 16)) + else if (!strncmp(name, "smartreflex_iva", 16)) sr_data = &omap_sr_pdata[OMAP_SR_IVA]; if (!sr_data) { - pr_err("%s: Unknown instance %s\n", __func__, oh->name); + pr_err("%s: Unknown instance %s\n", __func__, name); return -EINVAL; } - sr_dev_attr = (struct omap_smartreflex_dev_attr *)oh->dev_attr; - if (!sr_dev_attr || !sr_dev_attr->sensor_voltdm_name) { - pr_err("%s: No voltage domain specified for %s. Cannot initialize\n", - __func__, oh->name); - goto exit; - } - - sr_data->name = oh->name; + sr_data->name = name; if (cpu_is_omap343x()) sr_data->ip_type = 1; else @@ -136,10 +128,10 @@ } } - sr_data->voltdm = voltdm_lookup(sr_dev_attr->sensor_voltdm_name); + sr_data->voltdm = voltdm_lookup(voltdm); if (!sr_data->voltdm) { pr_err("%s: Unable to get voltage domain pointer for VDD %s\n", - __func__, sr_dev_attr->sensor_voltdm_name); + __func__, voltdm); goto exit; } @@ -160,6 +152,20 @@ return 0; } +static int __init sr_dev_init(struct omap_hwmod *oh, void *user) +{ + struct omap_smartreflex_dev_attr *sr_dev_attr; + + sr_dev_attr = (struct omap_smartreflex_dev_attr *)oh->dev_attr; + if (!sr_dev_attr || !sr_dev_attr->sensor_voltdm_name) { + pr_err("%s: No voltage domain specified for %s. Cannot initialize\n", + __func__, oh->name); + return 0; + } + + return sr_init_by_name(oh->name, sr_dev_attr->sensor_voltdm_name); +} + /* * API to be called from board files to enable smartreflex * autocompensation at init. @@ -169,7 +175,42 @@ sr_enable_on_init = true; } +static const char * const omap4_sr_instances[] = { + "mpu", + "iva", + "core", +}; + +static const char * const dra7_sr_instances[] = { + "mpu", + "core", +}; + int __init omap_devinit_smartreflex(void) { + const char * const *sr_inst; + int i, nr_sr = 0; + + if (soc_is_omap44xx()) { + sr_inst = omap4_sr_instances; + nr_sr = ARRAY_SIZE(omap4_sr_instances); + + } else if (soc_is_dra7xx()) { + sr_inst = dra7_sr_instances; + nr_sr = ARRAY_SIZE(dra7_sr_instances); + } + + if (nr_sr) { + const char *name, *voltdm; + + for (i = 0; i < nr_sr; i++) { + name = kasprintf(GFP_KERNEL, "smartreflex_%s", sr_inst[i]); + voltdm = sr_inst[i]; + sr_init_by_name(name, voltdm); + } + + return 0; + } + return omap_hwmod_for_each_by_class("smartreflex", sr_dev_init, NULL); } --- linux-5.8.0.orig/arch/arm/mach-s3c24xx/mach-at2440evb.c +++ linux-5.8.0/arch/arm/mach-s3c24xx/mach-at2440evb.c @@ -143,7 +143,7 @@ .dev_id = "s3c2410-sdi", .table = { /* Card detect S3C2410_GPG(10) */ - GPIO_LOOKUP("GPG", 10, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOG", 10, "cd", GPIO_ACTIVE_LOW), { }, }, }; --- linux-5.8.0.orig/arch/arm/mach-s3c24xx/mach-h1940.c +++ linux-5.8.0/arch/arm/mach-s3c24xx/mach-h1940.c @@ -468,9 +468,9 @@ .dev_id = "s3c2410-sdi", .table = { /* Card detect S3C2410_GPF(5) */ - GPIO_LOOKUP("GPF", 5, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOF", 5, "cd", GPIO_ACTIVE_LOW), /* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_LOW), { }, }, }; --- linux-5.8.0.orig/arch/arm/mach-s3c24xx/mach-mini2440.c +++ linux-5.8.0/arch/arm/mach-s3c24xx/mach-mini2440.c @@ -244,9 +244,9 @@ .dev_id = "s3c2410-sdi", .table = { /* Card detect S3C2410_GPG(8) */ - GPIO_LOOKUP("GPG", 8, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOG", 8, "cd", GPIO_ACTIVE_LOW), /* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_HIGH), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_HIGH), { }, }, }; --- linux-5.8.0.orig/arch/arm/mach-s3c24xx/mach-n30.c +++ linux-5.8.0/arch/arm/mach-s3c24xx/mach-n30.c @@ -359,9 +359,9 @@ .dev_id = "s3c2410-sdi", .table = { /* Card detect S3C2410_GPF(1) */ - GPIO_LOOKUP("GPF", 1, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOF", 1, "cd", GPIO_ACTIVE_LOW), /* Write protect S3C2410_GPG(10) */ - GPIO_LOOKUP("GPG", 10, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOG", 10, "wp", GPIO_ACTIVE_LOW), { }, }, }; --- linux-5.8.0.orig/arch/arm/mach-s3c24xx/mach-rx1950.c +++ linux-5.8.0/arch/arm/mach-s3c24xx/mach-rx1950.c @@ -571,9 +571,9 @@ .dev_id = "s3c2410-sdi", .table = { /* Card detect S3C2410_GPF(5) */ - GPIO_LOOKUP("GPF", 5, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOF", 5, "cd", GPIO_ACTIVE_LOW), /* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_LOW), { }, }, }; --- linux-5.8.0.orig/arch/arm/mach-socfpga/pm.c +++ linux-5.8.0/arch/arm/mach-socfpga/pm.c @@ -49,14 +49,14 @@ if (!ocram_pool) { pr_warn("%s: ocram pool unavailable!\n", __func__); ret = -ENODEV; - goto put_node; + goto put_device; } ocram_base = gen_pool_alloc(ocram_pool, socfpga_sdram_self_refresh_sz); if (!ocram_base) { pr_warn("%s: unable to alloc ocram!\n", __func__); ret = -ENOMEM; - goto put_node; + goto put_device; } ocram_pbase = gen_pool_virt_to_phys(ocram_pool, ocram_base); @@ -67,7 +67,7 @@ if (!suspend_ocram_base) { pr_warn("%s: __arm_ioremap_exec failed!\n", __func__); ret = -ENOMEM; - goto put_node; + goto put_device; } /* Copy the code that puts DDR in self refresh to ocram */ @@ -81,6 +81,8 @@ if (!socfpga_sdram_self_refresh_in_ocram) ret = -EFAULT; +put_device: + put_device(&pdev->dev); put_node: of_node_put(np); --- linux-5.8.0.orig/arch/arm/mach-sunxi/sunxi.c +++ linux-5.8.0/arch/arm/mach-sunxi/sunxi.c @@ -66,6 +66,7 @@ "allwinner,sun8i-h2-plus", "allwinner,sun8i-h3", "allwinner,sun8i-r40", + "allwinner,sun8i-v3", "allwinner,sun8i-v3s", NULL, }; --- linux-5.8.0.orig/arch/arm/mm/Kconfig +++ linux-5.8.0/arch/arm/mm/Kconfig @@ -743,6 +743,7 @@ config CPU_BIG_ENDIAN bool "Build big-endian kernel" depends on ARCH_SUPPORTS_BIG_ENDIAN + depends on !LD_IS_LLD help Say Y if you plan on running a kernel in big-endian mode. Note that your board must be properly built and your board --- linux-5.8.0.orig/arch/arm/mm/cache-l2x0.c +++ linux-5.8.0/arch/arm/mm/cache-l2x0.c @@ -1249,20 +1249,28 @@ ret = of_property_read_u32(np, "prefetch-data", &val); if (ret == 0) { - if (val) + if (val) { prefetch |= L310_PREFETCH_CTRL_DATA_PREFETCH; - else + *aux_val |= L310_PREFETCH_CTRL_DATA_PREFETCH; + } else { prefetch &= ~L310_PREFETCH_CTRL_DATA_PREFETCH; + *aux_val &= ~L310_PREFETCH_CTRL_DATA_PREFETCH; + } + *aux_mask &= ~L310_PREFETCH_CTRL_DATA_PREFETCH; } else if (ret != -EINVAL) { pr_err("L2C-310 OF prefetch-data property value is missing\n"); } ret = of_property_read_u32(np, "prefetch-instr", &val); if (ret == 0) { - if (val) + if (val) { prefetch |= L310_PREFETCH_CTRL_INSTR_PREFETCH; - else + *aux_val |= L310_PREFETCH_CTRL_INSTR_PREFETCH; + } else { prefetch &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH; + *aux_val &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH; + } + *aux_mask &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH; } else if (ret != -EINVAL) { pr_err("L2C-310 OF prefetch-instr property value is missing\n"); } --- linux-5.8.0.orig/arch/arm/plat-samsung/Kconfig +++ linux-5.8.0/arch/arm/plat-samsung/Kconfig @@ -241,6 +241,7 @@ depends on PM && DEBUG_KERNEL depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 depends on DEBUG_EXYNOS_UART || DEBUG_S3C24XX_UART || DEBUG_S3C2410_UART + depends on DEBUG_LL && MMU help Say Y here if you want verbose debugging from the PM Suspend and Resume code. See --- linux-5.8.0.orig/arch/arm/probes/kprobes/opt-arm.c +++ linux-5.8.0/arch/arm/probes/kprobes/opt-arm.c @@ -85,21 +85,21 @@ "optprobe_template_end:\n"); #define TMPL_VAL_IDX \ - ((unsigned long *)&optprobe_template_val - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_val - (unsigned long *)optprobe_template_entry) #define TMPL_CALL_IDX \ - ((unsigned long *)&optprobe_template_call - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_call - (unsigned long *)optprobe_template_entry) #define TMPL_END_IDX \ - ((unsigned long *)&optprobe_template_end - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_end - (unsigned long *)optprobe_template_entry) #define TMPL_ADD_SP \ - ((unsigned long *)&optprobe_template_add_sp - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_add_sp - (unsigned long *)optprobe_template_entry) #define TMPL_SUB_SP \ - ((unsigned long *)&optprobe_template_sub_sp - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_sub_sp - (unsigned long *)optprobe_template_entry) #define TMPL_RESTORE_BEGIN \ - ((unsigned long *)&optprobe_template_restore_begin - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_begin - (unsigned long *)optprobe_template_entry) #define TMPL_RESTORE_ORIGN_INSN \ - ((unsigned long *)&optprobe_template_restore_orig_insn - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_orig_insn - (unsigned long *)optprobe_template_entry) #define TMPL_RESTORE_END \ - ((unsigned long *)&optprobe_template_restore_end - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_end - (unsigned long *)optprobe_template_entry) /* * ARM can always optimize an instruction when using ARM ISA, except @@ -234,7 +234,7 @@ } /* Copy arch-dep-instance from template. */ - memcpy(code, (unsigned long *)&optprobe_template_entry, + memcpy(code, (unsigned long *)optprobe_template_entry, TMPL_END_IDX * sizeof(kprobe_opcode_t)); /* Adjust buffer according to instruction. */ --- linux-5.8.0.orig/arch/arm/vdso/Makefile +++ linux-5.8.0/arch/arm/vdso/Makefile @@ -19,7 +19,7 @@ ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ -z max-page-size=4096 -nostdlib -shared $(ldflags-y) \ - --hash-style=sysv --build-id \ + --hash-style=sysv --build-id=sha1 \ -T obj-$(CONFIG_VDSO) += vdso.o --- linux-5.8.0.orig/arch/arm/vfp/entry.S +++ linux-5.8.0/arch/arm/vfp/entry.S @@ -37,20 +37,3 @@ .align 2 .LCvfp: .word vfp_vector - -@ This code is called if the VFP does not exist. It needs to flag the -@ failure to the VFP initialisation code. - - __INIT -ENTRY(vfp_testing_entry) - dec_preempt_count_ti r10, r4 - ldr r0, VFP_arch_address - str r0, [r0] @ set to non-zero value - ret r9 @ we have handled the fault -ENDPROC(vfp_testing_entry) - - .align 2 -VFP_arch_address: - .word VFP_arch - - __FINIT --- linux-5.8.0.orig/arch/arm/vfp/vfphw.S +++ linux-5.8.0/arch/arm/vfp/vfphw.S @@ -78,11 +78,6 @@ ENTRY(vfp_support_entry) DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10 - ldr r3, [sp, #S_PSR] @ Neither lazy restore nor FP exceptions - and r3, r3, #MODE_MASK @ are supported in kernel mode - teq r3, #USR_MODE - bne vfp_kmode_exception @ Returns through lr - VFPFMRX r1, FPEXC @ Is the VFP enabled? DBGSTR1 "fpexc %08x", r1 tst r1, #FPEXC_EN --- linux-5.8.0.orig/arch/arm/vfp/vfpmodule.c +++ linux-5.8.0/arch/arm/vfp/vfpmodule.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "vfpinstr.h" @@ -31,7 +32,6 @@ /* * Our undef handlers (in entry.S) */ -asmlinkage void vfp_testing_entry(void); asmlinkage void vfp_support_entry(void); asmlinkage void vfp_null_entry(void); @@ -42,7 +42,7 @@ * Used in startup: set to non-zero if VFP checks fail * After startup, holds VFP architecture */ -unsigned int VFP_arch; +static unsigned int __initdata VFP_arch; /* * The pointer to the vfpstate structure of the thread which currently @@ -436,7 +436,7 @@ * present on all CPUs within a SMP complex. Needs to be called prior to * vfp_init(). */ -void vfp_disable(void) +void __init vfp_disable(void) { if (VFP_arch) { pr_debug("%s: should be called prior to vfp_init\n", __func__); @@ -642,7 +642,9 @@ return 0; } -void vfp_kmode_exception(void) +#ifdef CONFIG_KERNEL_MODE_NEON + +static int vfp_kmode_exception(struct pt_regs *regs, unsigned int instr) { /* * If we reach this point, a floating point exception has been raised @@ -660,9 +662,51 @@ pr_crit("BUG: unsupported FP instruction in kernel mode\n"); else pr_crit("BUG: FP instruction issued in kernel mode with FP unit disabled\n"); + pr_crit("FPEXC == 0x%08x\n", fmrx(FPEXC)); + return 1; } -#ifdef CONFIG_KERNEL_MODE_NEON +static struct undef_hook vfp_kmode_exception_hook[] = {{ + .instr_mask = 0xfe000000, + .instr_val = 0xf2000000, + .cpsr_mask = MODE_MASK | PSR_T_BIT, + .cpsr_val = SVC_MODE, + .fn = vfp_kmode_exception, +}, { + .instr_mask = 0xff100000, + .instr_val = 0xf4000000, + .cpsr_mask = MODE_MASK | PSR_T_BIT, + .cpsr_val = SVC_MODE, + .fn = vfp_kmode_exception, +}, { + .instr_mask = 0xef000000, + .instr_val = 0xef000000, + .cpsr_mask = MODE_MASK | PSR_T_BIT, + .cpsr_val = SVC_MODE | PSR_T_BIT, + .fn = vfp_kmode_exception, +}, { + .instr_mask = 0xff100000, + .instr_val = 0xf9000000, + .cpsr_mask = MODE_MASK | PSR_T_BIT, + .cpsr_val = SVC_MODE | PSR_T_BIT, + .fn = vfp_kmode_exception, +}, { + .instr_mask = 0x0c000e00, + .instr_val = 0x0c000a00, + .cpsr_mask = MODE_MASK, + .cpsr_val = SVC_MODE, + .fn = vfp_kmode_exception, +}}; + +static int __init vfp_kmode_exception_hook_init(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(vfp_kmode_exception_hook); i++) + register_undef_hook(&vfp_kmode_exception_hook[i]); + return 0; +} +subsys_initcall(vfp_kmode_exception_hook_init); /* * Kernel-side NEON support functions @@ -708,6 +752,21 @@ #endif /* CONFIG_KERNEL_MODE_NEON */ +static int __init vfp_detect(struct pt_regs *regs, unsigned int instr) +{ + VFP_arch = UINT_MAX; /* mark as not present */ + regs->ARM_pc += 4; + return 0; +} + +static struct undef_hook vfp_detect_hook __initdata = { + .instr_mask = 0x0c000e00, + .instr_val = 0x0c000a00, + .cpsr_mask = MODE_MASK, + .cpsr_val = SVC_MODE, + .fn = vfp_detect, +}; + /* * VFP support code initialisation. */ @@ -728,10 +787,11 @@ * The handler is already setup to just log calls, so * we just need to read the VFPSID register. */ - vfp_vector = vfp_testing_entry; + register_undef_hook(&vfp_detect_hook); barrier(); vfpsid = fmrx(FPSID); barrier(); + unregister_undef_hook(&vfp_detect_hook); vfp_vector = vfp_null_entry; pr_info("VFP support v0.3: "); --- linux-5.8.0.orig/arch/arm/xen/enlighten.c +++ linux-5.8.0/arch/arm/xen/enlighten.c @@ -369,8 +369,6 @@ return -ENOMEM; } gnttab_init(); - if (!xen_initial_domain()) - xenbus_probe(NULL); /* * Making sure board specific code will not set up ops for --- linux-5.8.0.orig/arch/arm/xen/p2m.c +++ linux-5.8.0/arch/arm/xen/p2m.c @@ -93,10 +93,39 @@ int i; for (i = 0; i < count; i++) { + struct gnttab_unmap_grant_ref unmap; + int rc; + if (map_ops[i].status) continue; - set_phys_to_machine(map_ops[i].host_addr >> XEN_PAGE_SHIFT, - map_ops[i].dev_bus_addr >> XEN_PAGE_SHIFT); + if (likely(set_phys_to_machine(map_ops[i].host_addr >> XEN_PAGE_SHIFT, + map_ops[i].dev_bus_addr >> XEN_PAGE_SHIFT))) + continue; + + /* + * Signal an error for this slot. This in turn requires + * immediate unmapping. + */ + map_ops[i].status = GNTST_general_error; + unmap.host_addr = map_ops[i].host_addr, + unmap.handle = map_ops[i].handle; + map_ops[i].handle = ~0; + if (map_ops[i].flags & GNTMAP_device_map) + unmap.dev_bus_addr = map_ops[i].dev_bus_addr; + else + unmap.dev_bus_addr = 0; + + /* + * Pre-populate the status field, to be recognizable in + * the log message below. + */ + unmap.status = 1; + + rc = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, + &unmap, 1); + if (rc || unmap.status != GNTST_okay) + pr_err_once("gnttab unmap failed: rc=%d st=%d\n", + rc, unmap.status); } return 0; --- linux-5.8.0.orig/arch/arm64/Kconfig +++ linux-5.8.0/arch/arm64/Kconfig @@ -509,7 +509,7 @@ help This option adds a workaround for ARM Cortex-A55 Erratum 1024718. - Affected Cortex-A55 cores (r0p0, r0p1, r1p0) could cause incorrect + Affected Cortex-A55 cores (all revisions) could cause incorrect update of the hardware dirty bit when the DBM/AP bits are updated without a break-before-make. The workaround is to disable the usage of hardware DBM locally on the affected cores. CPUs not affected by @@ -919,8 +919,9 @@ that is selected here. config CPU_BIG_ENDIAN - bool "Build big-endian kernel" - help + bool "Build big-endian kernel" + depends on !LD_IS_LLD || LLD_VERSION >= 130000 + help Say Y if you plan on running a kernel with a big-endian userspace. config CPU_LITTLE_ENDIAN @@ -1133,6 +1134,7 @@ config FORCE_MAX_ZONEORDER int default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE) + default "13" if (ARCH_THUNDER && ARM64_4K_PAGES) default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE) default "11" help --- linux-5.8.0.orig/arch/arm64/Kconfig.platforms +++ linux-5.8.0/arch/arm64/Kconfig.platforms @@ -54,6 +54,7 @@ config ARCH_BERLIN bool "Marvell Berlin SoC Family" select DW_APB_ICTL + select DW_APB_TIMER_OF select GPIOLIB select PINCTRL help --- linux-5.8.0.orig/arch/arm64/Makefile +++ linux-5.8.0/arch/arm64/Makefile @@ -17,7 +17,7 @@ # Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour # for relative relocs, since this leads to better Image compression # with the relocation offsets always being zero. -LDFLAGS_vmlinux += -shared -Bsymbolic -z notext -z norelro \ +LDFLAGS_vmlinux += -shared -Bsymbolic -z notext \ $(call ld-option, --no-apply-dynamic-relocs) endif @@ -96,16 +96,20 @@ CHECKFLAGS += -D__AARCH64EB__ # Prefer the baremetal ELF build target, but not all toolchains include # it so fall back to the standard linux version if needed. -KBUILD_LDFLAGS += -EB $(call ld-option, -maarch64elfb, -maarch64linuxb) +KBUILD_LDFLAGS += -EB $(call ld-option, -maarch64elfb, -maarch64linuxb -z norelro) UTS_MACHINE := aarch64_be else KBUILD_CPPFLAGS += -mlittle-endian CHECKFLAGS += -D__AARCH64EL__ # Same as above, prefer ELF but fall back to linux target if needed. -KBUILD_LDFLAGS += -EL $(call ld-option, -maarch64elf, -maarch64linux) +KBUILD_LDFLAGS += -EL $(call ld-option, -maarch64elf, -maarch64linux -z norelro) UTS_MACHINE := aarch64 endif +ifeq ($(CONFIG_LD_IS_LLD), y) +KBUILD_LDFLAGS += -z norelro +endif + CHECKFLAGS += -D__aarch64__ ifeq ($(CONFIG_ARM64_MODULE_PLTS),y) @@ -158,6 +162,8 @@ PHONY += vdso_install vdso_install: $(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso $@ + $(if $(CONFIG_COMPAT_VDSO), \ + $(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso32 $@) # We use MRPROPER_FILES and CLEAN_FILES now archclean: --- linux-5.8.0.orig/arch/arm64/boot/dts/actions/s700.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/actions/s700.dtsi @@ -231,7 +231,7 @@ pinctrl: pinctrl@e01b0000 { compatible = "actions,s700-pinctrl"; - reg = <0x0 0xe01b0000 0x0 0x1000>; + reg = <0x0 0xe01b0000 0x0 0x100>; clocks = <&cmu CLK_GPIO>; gpio-controller; gpio-ranges = <&pinctrl 0 0 136>; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts @@ -105,7 +105,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_dc1sw>; status = "okay"; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts @@ -120,7 +120,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_gmac_3v3>; status = "okay"; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-plus.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-plus.dts @@ -13,7 +13,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-txid"; phy-handle = <&ext_rgmii_phy>; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts @@ -126,8 +126,6 @@ }; &ehci0 { - phys = <&usbphy 0>; - phy-names = "usb"; status = "okay"; }; @@ -169,6 +167,7 @@ pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>; vmmc-supply = <®_dcdc1>; vqmmc-supply = <®_eldo1>; + max-frequency = <200000000>; bus-width = <8>; non-removable; cap-mmc-hw-reset; @@ -177,8 +176,6 @@ }; &ohci0 { - phys = <&usbphy 0>; - phy-names = "usb"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi @@ -279,7 +279,7 @@ ®_dldo4 { regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <3300000>; + regulator-max-microvolt = <1800000>; regulator-name = "vcc-wifi-io"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi @@ -32,7 +32,6 @@ pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; vmmc-supply = <®_dcdc1>; - non-removable; disable-wp; bus-width = <4>; cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi @@ -513,7 +513,7 @@ resets = <&ccu RST_BUS_MMC2>; reset-names = "ahb"; interrupts = ; - max-frequency = <200000000>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>; @@ -592,6 +592,8 @@ <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>, <&ccu RST_BUS_EHCI0>; + phys = <&usbphy 0>; + phy-names = "usb"; status = "disabled"; }; @@ -602,6 +604,8 @@ clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>; + phys = <&usbphy 0>; + phy-names = "usb"; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts @@ -36,7 +36,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; /delete-property/ allwinner,leds-active-low; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts @@ -123,7 +123,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts @@ -124,7 +124,7 @@ pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi @@ -125,8 +125,7 @@ , , , - , - ; + ; interrupt-names = "gp", "gpmmu", "pp", @@ -137,8 +136,7 @@ "pp2", "ppmmu2", "pp3", - "ppmmu3", - "pmu"; + "ppmmu3"; clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; clock-names = "bus", "core"; resets = <&ccu RST_BUS_GPU>; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts @@ -97,7 +97,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&ext_rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_aldo2>; status = "okay"; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts @@ -100,7 +100,7 @@ &emac { pinctrl-names = "default"; pinctrl-0 = <&ext_rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_gmac_3v3>; allwinner,rx-delay-ps = <200>; --- linux-5.8.0.orig/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -435,6 +435,7 @@ interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>; @@ -451,6 +452,7 @@ interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>; @@ -467,6 +469,7 @@ interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>; + max-frequency = <150000000>; status = "disabled"; #address-cells = <1>; #size-cells = <0>; @@ -666,6 +669,8 @@ <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>, <&ccu RST_BUS_EHCI0>; + phys = <&usb2phy 0>; + phy-names = "usb"; status = "disabled"; }; @@ -676,6 +681,8 @@ clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; resets = <&ccu RST_BUS_OHCI0>; + phys = <&usb2phy 0>; + phy-names = "usb"; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts +++ linux-5.8.0/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts @@ -159,7 +159,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "n25q00a"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +++ linux-5.8.0/arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts @@ -192,7 +192,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "n25q00a"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi @@ -176,7 +176,7 @@ }; ethmac: ethernet@ff3f0000 { - compatible = "amlogic,meson-axg-dwmac", + compatible = "amlogic,meson-g12a-dwmac", "snps,dwmac-3.70a", "snps,dwmac"; reg = <0x0 0xff3f0000 0x0 0x10000>, @@ -247,6 +247,8 @@ hwrng: rng@218 { compatible = "amlogic,meson-rng"; reg = <0x0 0x218 0x0 0x4>; + clocks = <&clkc CLKID_RNG0>; + clock-names = "core"; }; }; @@ -2345,7 +2347,7 @@ interrupts = ; dr_mode = "host"; snps,dis_u2_susphy_quirk; - snps,quirk-frame-length-adjustment; + snps,quirk-frame-length-adjustment = <0x20>; snps,parkmode-disable-ss-quirk; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts @@ -340,7 +340,7 @@ eee-broken-1000t; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts @@ -333,7 +333,7 @@ max-speed = <1000>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi @@ -264,7 +264,7 @@ max-speed = <1000>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; interrupt-parent = <&gpio_intc>; @@ -336,9 +336,11 @@ bus-width = <4>; cap-sd-highspeed; - sd-uhs-sdr50; max-frequency = <100000000>; + /* WiFi firmware requires power to be kept while in suspend */ + keep-power-in-suspend; + non-removable; disable-wp; @@ -398,7 +400,7 @@ shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; max-speed = <2000000>; clocks = <&wifi32k>; - clock-names = "lpo"; + clock-names = "lpo"; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-g12b.dtsi @@ -135,3 +135,7 @@ }; }; }; + +&mali { + dma-coherent; +}; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts @@ -165,7 +165,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts @@ -200,7 +200,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi @@ -126,7 +126,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi @@ -147,7 +147,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-p230.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxl-s905d-p230.dts @@ -82,7 +82,7 @@ /* External PHY reset is shared with internal PHY Led signal */ reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts @@ -194,7 +194,7 @@ reg = <0>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; @@ -341,7 +341,7 @@ #size-cells = <1>; compatible = "winbond,w25q16", "jedec,spi-nor"; reg = <0>; - spi-max-frequency = <3000000>; + spi-max-frequency = <104000000>; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts @@ -112,7 +112,7 @@ max-speed = <1000>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxm-q200.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxm-q200.dts @@ -64,7 +64,7 @@ /* External PHY reset is shared with internal PHY Led signal */ reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio_intc>; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts @@ -114,7 +114,7 @@ max-speed = <1000>; reset-assert-us = <10000>; - reset-deassert-us = <30000>; + reset-deassert-us = <80000>; reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi @@ -41,13 +41,13 @@ led-white { label = "vim3:white:sys"; - gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>; + gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; }; led-red { label = "vim3:red"; - gpios = <&gpio_expander 5 GPIO_ACTIVE_LOW>; + gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>; }; }; @@ -270,7 +270,6 @@ bus-width = <4>; cap-sd-highspeed; - sd-uhs-sdr50; max-frequency = <100000000>; non-removable; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-sm1-khadas-vim3l.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-sm1-khadas-vim3l.dts @@ -93,3 +93,7 @@ phy-names = "usb2-phy0", "usb2-phy1"; }; */ + +&sd_emmc_a { + sd-uhs-sdr50; +}; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-sm1-odroid-c4.dts @@ -51,7 +51,7 @@ regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; - gpio = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; + gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>; enable-active-high; regulator-always-on; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/amlogic/meson-sm1.dtsi @@ -130,7 +130,7 @@ opp-microvolt = <790000>; }; - opp-1512000000 { + opp-1500000000 { opp-hz = /bits/ 64 <1500000000>; opp-microvolt = <800000>; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/broadcom/northstar2/ns2.dtsi @@ -745,7 +745,7 @@ }; qspi: spi@66470200 { - compatible = "brcm,spi-bcm-qspi", "brcm,spi-ns2-qspi"; + compatible = "brcm,spi-ns2-qspi", "brcm,spi-bcm-qspi"; reg = <0x66470200 0x184>, <0x66470000 0x124>, <0x67017408 0x004>, --- linux-5.8.0.orig/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi @@ -4,21 +4,26 @@ */ usb { compatible = "simple-bus"; - dma-ranges; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0x0 0x68500000 0x00400000>; + #address-cells = <2>; + #size-cells = <2>; + ranges = <0x0 0x0 0x0 0x68500000 0x0 0x00400000>; + + /* + * Internally, USB bus to the interconnect can only address up + * to 40-bit + */ + dma-ranges = <0 0 0 0 0x100 0x0>; usbphy0: usb-phy@0 { compatible = "brcm,sr-usb-combo-phy"; - reg = <0x00000000 0x100>; + reg = <0x0 0x00000000 0x0 0x100>; #phy-cells = <1>; status = "disabled"; }; xhci0: usb@1000 { compatible = "generic-xhci"; - reg = <0x00001000 0x1000>; + reg = <0x0 0x00001000 0x0 0x1000>; interrupts = ; phys = <&usbphy0 1>, <&usbphy0 0>; phy-names = "phy0", "phy1"; @@ -28,7 +33,7 @@ bdc0: usb@2000 { compatible = "brcm,bdc-v0.16"; - reg = <0x00002000 0x1000>; + reg = <0x0 0x00002000 0x0 0x1000>; interrupts = ; phys = <&usbphy0 0>, <&usbphy0 1>; phy-names = "phy0", "phy1"; @@ -38,21 +43,21 @@ usbphy1: usb-phy@10000 { compatible = "brcm,sr-usb-combo-phy"; - reg = <0x00010000 0x100>; + reg = <0x0 0x00010000 0x0 0x100>; #phy-cells = <1>; status = "disabled"; }; usbphy2: usb-phy@20000 { compatible = "brcm,sr-usb-hs-phy"; - reg = <0x00020000 0x100>; + reg = <0x0 0x00020000 0x0 0x100>; #phy-cells = <0>; status = "disabled"; }; xhci1: usb@11000 { compatible = "generic-xhci"; - reg = <0x00011000 0x1000>; + reg = <0x0 0x00011000 0x0 0x1000>; interrupts = ; phys = <&usbphy1 1>, <&usbphy2>, <&usbphy1 0>; phy-names = "phy0", "phy1", "phy2"; @@ -62,7 +67,7 @@ bdc1: usb@21000 { compatible = "brcm,bdc-v0.16"; - reg = <0x00021000 0x1000>; + reg = <0x0 0x00021000 0x0 0x1000>; interrupts = ; phys = <&usbphy2>; phy-names = "phy0"; --- linux-5.8.0.orig/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi @@ -389,7 +389,7 @@ s2mps13-pmic@66 { compatible = "samsung,s2mps13-pmic"; interrupt-parent = <&gpa0>; - interrupts = <7 IRQ_TYPE_NONE>; + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; reg = <0x66>; samsung,s2mps11-wrstbi-ground; --- linux-5.8.0.orig/arch/arm64/boot/dts/exynos/exynos7-espresso.dts +++ linux-5.8.0/arch/arm64/boot/dts/exynos/exynos7-espresso.dts @@ -90,7 +90,7 @@ s2mps15_pmic@66 { compatible = "samsung,s2mps15-pmic"; reg = <0x66>; - interrupts = <2 IRQ_TYPE_NONE>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; interrupt-parent = <&gpa0>; pinctrl-names = "default"; pinctrl-0 = <&pmic_irq>; @@ -157,6 +157,7 @@ regulator-min-microvolt = <700000>; regulator-max-microvolt = <1150000>; regulator-enable-ramp-delay = <125>; + regulator-always-on; }; ldo8_reg: LDO8 { --- linux-5.8.0.orig/arch/arm64/boot/dts/exynos/exynos7.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/exynos/exynos7.dtsi @@ -79,8 +79,10 @@ }; psci { - compatible = "arm,psci-0.2"; + compatible = "arm,psci"; method = "smc"; + cpu_off = <0x84000002>; + cpu_on = <0xC4000003>; }; soc: soc { @@ -483,13 +485,6 @@ pmu_system_controller: system-controller@105c0000 { compatible = "samsung,exynos7-pmu", "syscon"; reg = <0x105c0000 0x5000>; - - reboot: syscon-reboot { - compatible = "syscon-reboot"; - regmap = <&pmu_system_controller>; - offset = <0x0400>; - mask = <0x1>; - }; }; rtc: rtc@10590000 { @@ -650,3 +645,4 @@ }; #include "exynos7-pinctrl.dtsi" +#include "arm/exynos-syscon-restart.dtsi" --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/Makefile +++ linux-5.8.0/arch/arm64/boot/dts/freescale/Makefile @@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb +dtb-$(CONFIG_ARCH_MXC) += imx8mm-beacon-kit.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/fsl-ls1012a.dtsi @@ -190,6 +190,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = ; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring", --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts +++ linux-5.8.0/arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts @@ -121,20 +121,10 @@ }; partition@210000 { - reg = <0x210000 0x0f0000>; + reg = <0x210000 0x1d0000>; label = "bootloader"; }; - partition@300000 { - reg = <0x300000 0x040000>; - label = "DP firmware"; - }; - - partition@340000 { - reg = <0x340000 0x0a0000>; - label = "trusted firmware"; - }; - partition@3e0000 { reg = <0x3e0000 0x020000>; label = "bootloader environment"; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi @@ -89,7 +89,7 @@ reboot { compatible ="syscon-reboot"; regmap = <&rst>; - offset = <0xb0>; + offset = <0>; mask = <0x02>; }; @@ -285,7 +285,7 @@ <0x0 0x20000000 0x0 0x10000000>; reg-names = "fspi_base", "fspi_mmap"; interrupts = ; - clocks = <&clockgen 4 3>, <&clockgen 4 3>; + clocks = <&clockgen 2 0>, <&clockgen 2 0>; clock-names = "fspi_en", "fspi"; status = "disabled"; }; @@ -910,7 +910,7 @@ ethernet@0,4 { compatible = "fsl,enetc-ptp"; reg = <0x000400 0 0 0 0>; - clocks = <&clockgen 4 0>; + clocks = <&clockgen 2 3>; little-endian; fsl,extts-fifo; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi @@ -241,6 +241,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = <0 75 0x4>; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring", --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi @@ -244,6 +244,7 @@ ranges = <0x0 0x00 0x1700000 0x100000>; reg = <0x00 0x1700000 0x0 0x100000>; interrupts = ; + dma-coherent; sec_jr0: jr@10000 { compatible = "fsl,sec-v5.4-job-ring", @@ -304,7 +305,7 @@ dcfg: dcfg@1ee0000 { compatible = "fsl,ls1046a-dcfg", "syscon"; - reg = <0x0 0x1ee0000 0x0 0x10000>; + reg = <0x0 0x1ee0000 0x0 0x1000>; big-endian; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi @@ -210,6 +210,7 @@ host-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; device-wakeup-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; clocks = <&osc_32k>; + max-speed = <4000000>; clock-names = "extclk"; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/imx8mm.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/imx8mm.dtsi @@ -129,7 +129,7 @@ opp-1600000000 { opp-hz = /bits/ 64 <1600000000>; - opp-microvolt = <900000>; + opp-microvolt = <950000>; opp-supported-hw = <0xc>, <0x7>; clock-latency-ns = <150000>; opp-suspend; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/imx8mn.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/imx8mn.dtsi @@ -781,28 +781,6 @@ #index-cells = <1>; reg = <0x32e40200 0x200>; }; - - usbotg2: usb@32e50000 { - compatible = "fsl,imx8mn-usb", "fsl,imx7d-usb"; - reg = <0x32e50000 0x200>; - interrupts = ; - clocks = <&clk IMX8MN_CLK_USB1_CTRL_ROOT>; - clock-names = "usb1_ctrl_root_clk"; - assigned-clocks = <&clk IMX8MN_CLK_USB_BUS>, - <&clk IMX8MN_CLK_USB_CORE_REF>; - assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>, - <&clk IMX8MN_SYS_PLL1_100M>; - fsl,usbphy = <&usbphynop2>; - fsl,usbmisc = <&usbmisc2 0>; - status = "disabled"; - }; - - usbmisc2: usbmisc@32e50200 { - compatible = "fsl,imx8mn-usbmisc", "fsl,imx7d-usbmisc"; - #index-cells = <1>; - reg = <0x32e50200 0x200>; - }; - }; dma_apbh: dma-controller@33000000 { @@ -864,14 +842,6 @@ compatible = "usb-nop-xceiv"; clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; - assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>; - clock-names = "main_clk"; - }; - - usbphynop2: usbphynop2 { - compatible = "usb-nop-xceiv"; - clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; - assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>; clock-names = "main_clk"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/imx8mp.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/imx8mp.dtsi @@ -253,7 +253,7 @@ #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; - gpio-ranges = <&iomuxc 0 56 26>, <&iomuxc 0 144 4>; + gpio-ranges = <&iomuxc 0 56 26>, <&iomuxc 26 144 4>; }; gpio4: gpio@30230000 { @@ -688,7 +688,7 @@ reg = <0x30bd0000 0x10000>; interrupts = ; clocks = <&clk IMX8MP_CLK_SDMA1_ROOT>, - <&clk IMX8MP_CLK_SDMA1_ROOT>; + <&clk IMX8MP_CLK_AHB>; clock-names = "ipg", "ahb"; #dma-cells = <3>; fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin"; --- linux-5.8.0.orig/arch/arm64/boot/dts/freescale/imx8mq.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/freescale/imx8mq.dtsi @@ -420,7 +420,7 @@ tmu: tmu@30260000 { compatible = "fsl,imx8mq-tmu"; reg = <0x30260000 0x10000>; - interrupt = ; + interrupts = ; clocks = <&clk IMX8MQ_CLK_TMU_ROOT>; little-endian; fsl,tmu-range = <0xb0000 0xa0026 0x80048 0x70061>; @@ -614,6 +614,7 @@ gpc: gpc@303a0000 { compatible = "fsl,imx8mq-gpc"; reg = <0x303a0000 0x10000>; + interrupts = ; interrupt-parent = <&gic>; interrupt-controller; #interrupt-cells = <3>; --- linux-5.8.0.orig/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts +++ linux-5.8.0/arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts @@ -530,6 +530,17 @@ status = "ok"; compatible = "adi,adv7533"; reg = <0x39>; + adi,dsi-lanes = <4>; + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + }; + port@1 { + reg = <1>; + }; + }; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts +++ linux-5.8.0/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts @@ -516,7 +516,7 @@ reg = <0x39>; interrupt-parent = <&gpio1>; interrupts = <1 2>; - pd-gpio = <&gpio0 4 0>; + pd-gpios = <&gpio0 4 0>; adi,dsi-lanes = <4>; #sound-dai-cells = <0>; --- linux-5.8.0.orig/arch/arm64/boot/dts/intel/socfpga_agilex.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/intel/socfpga_agilex.dtsi @@ -129,7 +129,7 @@ rx-fifo-depth = <16384>; snps,multicast-filter-bins = <256>; iommus = <&smmu 2>; - altr,sysmgr-syscon = <&sysmgr 0x48 8>; + altr,sysmgr-syscon = <&sysmgr 0x48 0>; status = "disabled"; }; @@ -145,7 +145,7 @@ rx-fifo-depth = <16384>; snps,multicast-filter-bins = <256>; iommus = <&smmu 3>; - altr,sysmgr-syscon = <&sysmgr 0x4c 16>; + altr,sysmgr-syscon = <&sysmgr 0x4c 0>; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts +++ linux-5.8.0/arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts @@ -102,7 +102,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "mt25qu02g"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts +++ linux-5.8.0/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts @@ -20,17 +20,23 @@ compatible = "globalscale,espressobin-v7-emmc", "globalscale,espressobin-v7", "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710"; + + aliases { + /* ethernet1 is wan port */ + ethernet1 = &switch0port3; + ethernet3 = &switch0port1; + }; }; &switch0 { ports { - port@1 { + switch0port1: port@1 { reg = <1>; label = "lan1"; phy-handle = <&switch0phy0>; }; - port@3 { + switch0port3: port@3 { reg = <3>; label = "wan"; phy-handle = <&switch0phy2>; --- linux-5.8.0.orig/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7.dts +++ linux-5.8.0/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7.dts @@ -19,17 +19,23 @@ model = "Globalscale Marvell ESPRESSOBin Board V7"; compatible = "globalscale,espressobin-v7", "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710"; + + aliases { + /* ethernet1 is wan port */ + ethernet1 = &switch0port3; + ethernet3 = &switch0port1; + }; }; &switch0 { ports { - port@1 { + switch0port1: port@1 { reg = <1>; label = "lan1"; phy-handle = <&switch0phy0>; }; - port@3 { + switch0port3: port@3 { reg = <3>; label = "wan"; phy-handle = <&switch0phy2>; --- linux-5.8.0.orig/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dtsi @@ -13,6 +13,10 @@ / { aliases { ethernet0 = ð0; + /* for dsa slave device */ + ethernet1 = &switch0port1; + ethernet2 = &switch0port2; + ethernet3 = &switch0port3; serial0 = &uart0; serial1 = &uart1; }; @@ -120,7 +124,7 @@ #address-cells = <1>; #size-cells = <0>; - port@0 { + switch0port0: port@0 { reg = <0>; label = "cpu"; ethernet = <ð0>; @@ -131,19 +135,19 @@ }; }; - port@1 { + switch0port1: port@1 { reg = <1>; label = "wan"; phy-handle = <&switch0phy0>; }; - port@2 { + switch0port2: port@2 { reg = <2>; label = "lan0"; phy-handle = <&switch0phy1>; }; - port@3 { + switch0port3: port@3 { reg = <3>; label = "lan1"; phy-handle = <&switch0phy2>; --- linux-5.8.0.orig/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +++ linux-5.8.0/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts @@ -146,7 +146,7 @@ pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; phy-mode = "rgmii-id"; - phy = <&phy1>; + phy-handle = <&phy1>; status = "okay"; }; @@ -204,7 +204,7 @@ }; partition@20000 { - label = "u-boot"; + label = "a53-firmware"; reg = <0x20000 0x160000>; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/mediatek/mt7622.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/mediatek/mt7622.dtsi @@ -686,6 +686,8 @@ clocks = <&pericfg CLK_PERI_MSDC30_0_PD>, <&topckgen CLK_TOP_MSDC50_0_SEL>; clock-names = "source", "hclk"; + resets = <&pericfg MT7622_PERI_MSDC0_SW_RST>; + reset-names = "hrst"; status = "disabled"; }; @@ -696,6 +698,8 @@ clocks = <&pericfg CLK_PERI_MSDC30_1_PD>, <&topckgen CLK_TOP_AXI_SEL>; clock-names = "source", "hclk"; + resets = <&pericfg MT7622_PERI_MSDC1_SW_RST>; + reset-names = "hrst"; status = "disabled"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi @@ -431,12 +431,11 @@ status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&nor_gpio1_pins>; - bus-width = <8>; - max-frequency = <50000000>; - non-removable; + flash@0 { compatible = "jedec,spi-nor"; reg = <0>; + spi-max-frequency = <50000000>; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/mediatek/mt8183.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/mediatek/mt8183.dtsi @@ -345,7 +345,7 @@ compatible = "mediatek,mt8183-gce"; reg = <0 0x10238000 0 0x4000>; interrupts = ; - #mbox-cells = <3>; + #mbox-cells = <2>; clocks = <&infracfg CLK_INFRA_GCE>; clock-names = "gce"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts +++ linux-5.8.0/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts @@ -10,18 +10,6 @@ model = "NVIDIA Jetson TX2 Developer Kit"; compatible = "nvidia,p2771-0000", "nvidia,tegra186"; - aconnect { - status = "okay"; - - dma-controller@2930000 { - status = "okay"; - }; - - interrupt-controller@2a40000 { - status = "okay"; - }; - }; - i2c@3160000 { power-monitor@42 { compatible = "ti,ina3221"; --- linux-5.8.0.orig/arch/arm64/boot/dts/nvidia/tegra186.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/nvidia/tegra186.dtsi @@ -331,8 +331,9 @@ compatible = "nvidia,tegra186-sdhci"; reg = <0x0 0x03400000 0x0 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA186_CLK_SDMMC1>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA186_CLK_SDMMC1>, + <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; resets = <&bpmp TEGRA186_RESET_SDMMC1>; reset-names = "sdhci"; iommus = <&smmu TEGRA186_SID_SDMMC1>; @@ -357,8 +358,9 @@ compatible = "nvidia,tegra186-sdhci"; reg = <0x0 0x03420000 0x0 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA186_CLK_SDMMC2>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA186_CLK_SDMMC2>, + <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; resets = <&bpmp TEGRA186_RESET_SDMMC2>; reset-names = "sdhci"; iommus = <&smmu TEGRA186_SID_SDMMC2>; @@ -378,8 +380,9 @@ compatible = "nvidia,tegra186-sdhci"; reg = <0x0 0x03440000 0x0 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA186_CLK_SDMMC3>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA186_CLK_SDMMC3>, + <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; resets = <&bpmp TEGRA186_RESET_SDMMC3>; reset-names = "sdhci"; iommus = <&smmu TEGRA186_SID_SDMMC3>; @@ -401,8 +404,9 @@ compatible = "nvidia,tegra186-sdhci"; reg = <0x0 0x03460000 0x0 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA186_CLK_SDMMC4>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA186_CLK_SDMMC4>, + <&bpmp TEGRA186_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; assigned-clocks = <&bpmp TEGRA186_CLK_SDMMC4>, <&bpmp TEGRA186_CLK_PLLC4_VCO>; assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLC4_VCO>; --- linux-5.8.0.orig/arch/arm64/boot/dts/nvidia/tegra194.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/nvidia/tegra194.dtsi @@ -152,7 +152,7 @@ nvidia,schmitt = ; nvidia,lpdr = ; nvidia,enable-input = ; - nvidia,io-high-voltage = ; + nvidia,io-hv = ; nvidia,tristate = ; nvidia,pull = ; }; @@ -164,7 +164,7 @@ nvidia,schmitt = ; nvidia,lpdr = ; nvidia,enable-input = ; - nvidia,io-high-voltage = ; + nvidia,io-hv = ; nvidia,tristate = ; nvidia,pull = ; }; @@ -453,8 +453,9 @@ compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03400000 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA194_CLK_SDMMC1>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA194_CLK_SDMMC1>, + <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; resets = <&bpmp TEGRA194_RESET_SDMMC1>; reset-names = "sdhci"; nvidia,pad-autocal-pull-up-offset-3v3-timeout = @@ -475,8 +476,9 @@ compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03440000 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA194_CLK_SDMMC3>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA194_CLK_SDMMC3>, + <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; resets = <&bpmp TEGRA194_RESET_SDMMC3>; reset-names = "sdhci"; nvidia,pad-autocal-pull-up-offset-1v8 = <0x00>; @@ -498,8 +500,9 @@ compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03460000 0x10000>; interrupts = ; - clocks = <&bpmp TEGRA194_CLK_SDMMC4>; - clock-names = "sdhci"; + clocks = <&bpmp TEGRA194_CLK_SDMMC4>, + <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>; + clock-names = "sdhci", "tmclk"; assigned-clocks = <&bpmp TEGRA194_CLK_SDMMC4>, <&bpmp TEGRA194_CLK_PLLC4>; assigned-clock-parents = @@ -903,7 +906,7 @@ hsp_aon: hsp@c150000 { compatible = "nvidia,tegra194-hsp", "nvidia,tegra186-hsp"; - reg = <0x0c150000 0xa0000>; + reg = <0x0c150000 0x90000>; interrupts = , , , --- linux-5.8.0.orig/arch/arm64/boot/dts/nvidia/tegra210.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/nvidia/tegra210.dtsi @@ -981,6 +981,7 @@ <&tegra_car 128>, /* hda2hdmi */ <&tegra_car 111>; /* hda2codec_2x */ reset-names = "hda", "hda2hdmi", "hda2codec_2x"; + power-domains = <&pd_sor>; status = "disabled"; }; @@ -1180,8 +1181,9 @@ compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci"; reg = <0x0 0x700b0000 0x0 0x200>; interrupts = ; - clocks = <&tegra_car TEGRA210_CLK_SDMMC1>; - clock-names = "sdhci"; + clocks = <&tegra_car TEGRA210_CLK_SDMMC1>, + <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; + clock-names = "sdhci", "tmclk"; resets = <&tegra_car 14>; reset-names = "sdhci"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8", @@ -1208,8 +1210,9 @@ compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci"; reg = <0x0 0x700b0200 0x0 0x200>; interrupts = ; - clocks = <&tegra_car TEGRA210_CLK_SDMMC2>; - clock-names = "sdhci"; + clocks = <&tegra_car TEGRA210_CLK_SDMMC2>, + <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; + clock-names = "sdhci", "tmclk"; resets = <&tegra_car 9>; reset-names = "sdhci"; pinctrl-names = "sdmmc-1v8-drv"; @@ -1225,8 +1228,9 @@ compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci"; reg = <0x0 0x700b0400 0x0 0x200>; interrupts = ; - clocks = <&tegra_car TEGRA210_CLK_SDMMC3>; - clock-names = "sdhci"; + clocks = <&tegra_car TEGRA210_CLK_SDMMC3>, + <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; + clock-names = "sdhci", "tmclk"; resets = <&tegra_car 69>; reset-names = "sdhci"; pinctrl-names = "sdmmc-3v3", "sdmmc-1v8", @@ -1248,8 +1252,9 @@ compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci"; reg = <0x0 0x700b0600 0x0 0x200>; interrupts = ; - clocks = <&tegra_car TEGRA210_CLK_SDMMC4>; - clock-names = "sdhci"; + clocks = <&tegra_car TEGRA210_CLK_SDMMC4>, + <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; + clock-names = "sdhci", "tmclk"; resets = <&tegra_car 15>; reset-names = "sdhci"; pinctrl-names = "sdmmc-3v3-drv", "sdmmc-1v8-drv"; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/ipq6018.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/ipq6018.dtsi @@ -98,8 +98,8 @@ #size-cells = <2>; ranges; - tz: tz@48500000 { - reg = <0x0 0x48500000 0x0 0x00200000>; + tz: memory@4a600000 { + reg = <0x0 0x4a600000 0x0 0x00400000>; no-map; }; @@ -109,7 +109,7 @@ }; q6_region: memory@4ab00000 { - reg = <0x0 0x4ab00000 0x0 0x02800000>; + reg = <0x0 0x4ab00000 0x0 0x05500000>; no-map; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi @@ -556,7 +556,7 @@ pins = "gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; cdc_pdm_lines_sus: pdm-lines-off { @@ -569,7 +569,7 @@ pins = "gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"; drive-strength = <2>; - bias-disable; + bias-pull-down; }; }; }; @@ -585,7 +585,7 @@ pins = "gpio113", "gpio114", "gpio115", "gpio116"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; @@ -613,7 +613,7 @@ pinconf { pins = "gpio110"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; @@ -639,7 +639,7 @@ pinconf { pins = "gpio116"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; ext_mclk_tlmm_lines_sus: mclk-lines-off { @@ -667,7 +667,7 @@ pins = "gpio112", "gpio117", "gpio118", "gpio119"; drive-strength = <8>; - bias-pull-none; + bias-disable; }; }; ext_sec_tlmm_lines_sus: tlmm-lines-off { --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi @@ -151,6 +151,9 @@ sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + pinctrl-names = "default"; + pinctrl-0 = <&muic_i2c_default>; + #address-cells = <1>; #size-cells = <0>; @@ -192,6 +195,14 @@ }; }; + muic_i2c_default: muic-i2c-default { + pins = "gpio105", "gpio106"; + function = "gpio"; + + drive-strength = <2>; + bias-disable; + }; + muic_int_default: muic-int-default { pinmux { function = "gpio"; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/msm8916-samsung-a5u-eur.dts +++ linux-5.8.0/arch/arm64/boot/dts/qcom/msm8916-samsung-a5u-eur.dts @@ -32,7 +32,7 @@ &pronto { iris { - compatible = "qcom,wcn3680"; + compatible = "qcom,wcn3660b"; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/msm8916.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/msm8916.dtsi @@ -54,7 +54,7 @@ no-map; }; - reserved@8668000 { + reserved@86680000 { reg = <0x0 0x86680000 0x0 0x80000>; no-map; }; @@ -67,7 +67,7 @@ qcom,client-id = <1>; }; - rfsa@867e00000 { + rfsa@867e0000 { reg = <0x0 0x867e0000 0x0 0x20000>; no-map; }; @@ -228,14 +228,14 @@ }; thermal-zones { - cpu0_1-thermal { + cpu0-1-thermal { polling-delay-passive = <250>; polling-delay = <1000>; thermal-sensors = <&tsens 5>; trips { - cpu0_1_alert0: trip-point@0 { + cpu0_1_alert0: trip-point0 { temperature = <75000>; hysteresis = <2000>; type = "passive"; @@ -258,7 +258,7 @@ }; }; - cpu2_3-thermal { + cpu2-3-thermal { polling-delay-passive = <250>; polling-delay = <1000>; @@ -1021,7 +1021,7 @@ reg-names = "mdp_phys"; interrupt-parent = <&mdss>; - interrupts = <0 0>; + interrupts = <0>; clocks = <&gcc GCC_MDSS_AHB_CLK>, <&gcc GCC_MDSS_AXI_CLK>, @@ -1053,7 +1053,7 @@ reg-names = "dsi_ctrl"; interrupt-parent = <&mdss>; - interrupts = <4 0>; + interrupts = <4>; assigned-clocks = <&gcc BYTE0_CLK_SRC>, <&gcc PCLK0_CLK_SRC>; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/pm8916.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/pm8916.dtsi @@ -119,7 +119,7 @@ wcd_codec: codec@f000 { compatible = "qcom,pm8916-wcd-analog-codec"; - reg = <0xf000 0x200>; + reg = <0xf000>; reg-names = "pmic-codec-core"; clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>; clock-names = "mclk"; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sc7180-idp.dts +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sc7180-idp.dts @@ -312,7 +312,7 @@ &remoteproc_mpss { status = "okay"; compatible = "qcom,sc7180-mss-pil"; - iommus = <&apps_smmu 0x460 0x1>, <&apps_smmu 0x444 0x3>; + iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>; memory-region = <&mba_mem &mpss_mem>; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sc7180.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sc7180.dtsi @@ -1021,7 +1021,8 @@ ipa: ipa@1e40000 { compatible = "qcom,sc7180-ipa"; - iommus = <&apps_smmu 0x440 0x3>; + iommus = <&apps_smmu 0x440 0x0>, + <&apps_smmu 0x442 0x0>; reg = <0 0x1e40000 0 0x7000>, <0 0x1e47000 0 0x2000>, <0 0x1e04000 0 0x2c000>; @@ -2193,7 +2194,7 @@ system-cache-controller@9200000 { compatible = "qcom,sc7180-llcc"; - reg = <0 0x09200000 0 0x200000>, <0 0x09600000 0 0x50000>; + reg = <0 0x09200000 0 0x50000>, <0 0x09600000 0 0x50000>; reg-names = "llcc_base", "llcc_broadcast_base"; interrupts = ; }; @@ -2357,7 +2358,7 @@ <19200000>; interrupt-parent = <&mdss>; - interrupts = <0 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <0>; status = "disabled"; @@ -2380,7 +2381,7 @@ reg-names = "dsi_ctrl"; interrupt-parent = <&mdss>; - interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <4>; clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi @@ -634,7 +634,7 @@ }; &mss_pil { - iommus = <&apps_smmu 0x780 0x1>, + iommus = <&apps_smmu 0x781 0x0>, <&apps_smmu 0x724 0x3>; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sdm845-db845c.dts +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sdm845-db845c.dts @@ -385,7 +385,9 @@ &gcc { protected-clocks = , , - ; + , + , + ; }; &gpu { @@ -994,11 +996,11 @@ reg = <0x10>; // CAM0_RST_N - reset-gpios = <&tlmm 9 0>; + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&cam0_default>; gpios = <&tlmm 13 0>, - <&tlmm 9 0>; + <&tlmm 9 GPIO_ACTIVE_LOW>; clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; clock-names = "xvclk"; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sdm845.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sdm845.dtsi @@ -1763,7 +1763,8 @@ ipa: ipa@1e40000 { compatible = "qcom,sdm845-ipa"; - iommus = <&apps_smmu 0x720 0x3>; + iommus = <&apps_smmu 0x720 0x0>, + <&apps_smmu 0x722 0x0>; reg = <0 0x1e40000 0 0x7000>, <0 0x1e47000 0 0x2000>, <0 0x1e04000 0 0x2c000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts @@ -245,7 +245,9 @@ &gcc { protected-clocks = , , - ; + , + , + ; }; &gpu { @@ -263,24 +265,23 @@ &i2c3 { status = "okay"; clock-frequency = <400000>; + /* Overwrite pinctrl-0 from sdm845.dtsi */ + pinctrl-0 = <&qup_i2c3_default &i2c3_hid_active>; - hid@15 { + tsel: hid@15 { compatible = "hid-over-i2c"; reg = <0x15>; hid-descr-addr = <0x1>; - interrupts-extended = <&tlmm 37 IRQ_TYPE_EDGE_RISING>; + interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_HIGH>; }; - hid@2c { + tsc2: hid@2c { compatible = "hid-over-i2c"; reg = <0x2c>; hid-descr-addr = <0x20>; - interrupts-extended = <&tlmm 37 IRQ_TYPE_EDGE_RISING>; - - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_hid_active>; + interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_HIGH>; }; }; @@ -288,15 +289,15 @@ status = "okay"; clock-frequency = <400000>; - hid@10 { + tsc1: hid@10 { compatible = "hid-over-i2c"; reg = <0x10>; hid-descr-addr = <0x1>; - interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>; + interrupts-extended = <&tlmm 125 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; - pinctrl-0 = <&i2c6_hid_active>; + pinctrl-0 = <&i2c5_hid_active>; }; }; @@ -304,7 +305,7 @@ status = "okay"; clock-frequency = <400000>; - hid@5c { + ecsh: hid@5c { compatible = "hid-over-i2c"; reg = <0x5c>; hid-descr-addr = <0x1>; @@ -312,7 +313,7 @@ interrupts-extended = <&tlmm 92 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; - pinctrl-0 = <&i2c12_hid_active>; + pinctrl-0 = <&i2c11_hid_active>; }; }; @@ -426,8 +427,8 @@ &tlmm { gpio-reserved-ranges = <0 4>, <81 4>; - i2c2_hid_active: i2c2-hid-active { - pins = <37>; + i2c3_hid_active: i2c2-hid-active { + pins = "gpio37"; function = "gpio"; input-enable; @@ -435,8 +436,8 @@ drive-strength = <2>; }; - i2c6_hid_active: i2c6-hid-active { - pins = <125>; + i2c5_hid_active: i2c5-hid-active { + pins = "gpio125"; function = "gpio"; input-enable; @@ -444,8 +445,8 @@ drive-strength = <2>; }; - i2c12_hid_active: i2c12-hid-active { - pins = <92>; + i2c11_hid_active: i2c11-hid-active { + pins = "gpio92"; function = "gpio"; input-enable; @@ -454,7 +455,7 @@ }; wcd_intr_default: wcd_intr_default { - pins = <54>; + pins = "gpio54"; function = "gpio"; input-enable; --- linux-5.8.0.orig/arch/arm64/boot/dts/qcom/sm8250-mtp.dts +++ linux-5.8.0/arch/arm64/boot/dts/qcom/sm8250-mtp.dts @@ -10,7 +10,7 @@ / { model = "Qualcomm Technologies, Inc. SM8250 MTP"; - compatible = "qcom,sm8250-mtp"; + compatible = "qcom,sm8250-mtp", "qcom,sm8250"; aliases { serial0 = &uart2; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/cat875.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/cat875.dtsi @@ -22,7 +22,6 @@ status = "okay"; phy0: ethernet-phy@0 { - rxc-skew-ps = <1500>; reg = <0>; interrupt-parent = <&gpio2>; interrupts = <21 IRQ_TYPE_LEVEL_LOW>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi @@ -31,7 +31,6 @@ status = "okay"; phy0: ethernet-phy@0 { - rxc-skew-ps = <1500>; reg = <0>; interrupt-parent = <&gpio2>; interrupts = <11 IRQ_TYPE_LEVEL_LOW>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a774a1.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a774a1.dtsi @@ -2250,7 +2250,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a774a1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -2262,7 +2262,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a774a1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -2274,7 +2274,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a774a1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -2286,7 +2286,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a774a1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a774b1.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a774b1.dtsi @@ -2108,7 +2108,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a774b1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -2120,7 +2120,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a774b1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -2132,7 +2132,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a774b1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -2144,7 +2144,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a774b1", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a774c0.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a774c0.dtsi @@ -1214,9 +1214,8 @@ reg = <0 0xe6ea0000 0 0x0064>; interrupts = ; clocks = <&cpg CPG_MOD 210>; - dmas = <&dmac1 0x43>, <&dmac1 0x42>, - <&dmac2 0x43>, <&dmac2 0x42>; - dma-names = "tx", "rx", "tx", "rx"; + dmas = <&dmac0 0x43>, <&dmac0 0x42>; + dma-names = "tx", "rx"; power-domains = <&sysc R8A774C0_PD_ALWAYS_ON>; resets = <&cpg 210>; #address-cells = <1>; @@ -1618,7 +1617,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a774c0", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -1630,7 +1629,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a774c0", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -1642,7 +1641,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a774c0", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77951.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77951.dtsi @@ -2590,7 +2590,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a7795", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -2603,7 +2603,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a7795", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -2616,7 +2616,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a7795", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -2629,7 +2629,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a7795", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77960.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77960.dtsi @@ -2394,7 +2394,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a7796", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -2407,7 +2407,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a7796", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -2420,7 +2420,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a7796", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -2433,7 +2433,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a7796", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77961.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77961.dtsi @@ -1257,7 +1257,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a77961", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -1269,7 +1269,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a77961", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -1281,7 +1281,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a77961", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -1293,7 +1293,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a77961", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77965.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77965.dtsi @@ -2120,7 +2120,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a77965", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -2133,7 +2133,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a77965", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -2146,7 +2146,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a77965", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; @@ -2159,7 +2159,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a77965", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77990.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77990.dtsi @@ -1192,9 +1192,8 @@ reg = <0 0xe6ea0000 0 0x0064>; interrupts = ; clocks = <&cpg CPG_MOD 210>; - dmas = <&dmac1 0x43>, <&dmac1 0x42>, - <&dmac2 0x43>, <&dmac2 0x42>; - dma-names = "tx", "rx", "tx", "rx"; + dmas = <&dmac0 0x43>, <&dmac0 0x42>; + dma-names = "tx", "rx"; power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; resets = <&cpg 210>; #address-cells = <1>; @@ -1595,7 +1594,7 @@ status = "disabled"; }; - sdhi0: sd@ee100000 { + sdhi0: mmc@ee100000 { compatible = "renesas,sdhi-r8a77990", "renesas,rcar-gen3-sdhi"; reg = <0 0xee100000 0 0x2000>; @@ -1608,7 +1607,7 @@ status = "disabled"; }; - sdhi1: sd@ee120000 { + sdhi1: mmc@ee120000 { compatible = "renesas,sdhi-r8a77990", "renesas,rcar-gen3-sdhi"; reg = <0 0xee120000 0 0x2000>; @@ -1621,7 +1620,7 @@ status = "disabled"; }; - sdhi3: sd@ee160000 { + sdhi3: mmc@ee160000 { compatible = "renesas,sdhi-r8a77990", "renesas,rcar-gen3-sdhi"; reg = <0 0xee160000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/r8a77995.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/r8a77995.dtsi @@ -916,7 +916,7 @@ status = "disabled"; }; - sdhi2: sd@ee140000 { + sdhi2: mmc@ee140000 { compatible = "renesas,sdhi-r8a77995", "renesas,rcar-gen3-sdhi"; reg = <0 0xee140000 0 0x2000>; --- linux-5.8.0.orig/arch/arm64/boot/dts/renesas/ulcb.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/renesas/ulcb.dtsi @@ -469,6 +469,7 @@ mmc-hs200-1_8v; mmc-hs400-1_8v; non-removable; + full-pwr-cycle-in-suspend; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/px30.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/px30.dtsi @@ -1096,7 +1096,7 @@ vopl_mmu: iommu@ff470f00 { compatible = "rockchip,iommu"; reg = <0x0 0xff470f00 0x0 0x100>; - interrupts = ; + interrupts = ; interrupt-names = "vopl_mmu"; clocks = <&cru ACLK_VOPL>, <&cru HCLK_VOPL>; clock-names = "aclk", "iface"; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts @@ -243,7 +243,6 @@ interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&pmic_int>; - rockchip,system-power-controller; wakeup-source; #clock-cells = <1>; clock-output-names = "rk808-clkout1", "xin32k"; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts @@ -334,6 +334,7 @@ }; &usb20_otg { + dr_mode = "host"; status = "okay"; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3328.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3328.dtsi @@ -927,6 +927,7 @@ phy-mode = "rmii"; phy-handle = <&phy>; snps,txpbl = <0x4>; + clock_in_out = "output"; status = "disabled"; mdio { @@ -1236,8 +1237,8 @@ uart0 { uart0_xfer: uart0-xfer { - rockchip,pins = <1 RK_PB1 1 &pcfg_pull_up>, - <1 RK_PB0 1 &pcfg_pull_none>; + rockchip,pins = <1 RK_PB1 1 &pcfg_pull_none>, + <1 RK_PB0 1 &pcfg_pull_up>; }; uart0_cts: uart0-cts { @@ -1255,8 +1256,8 @@ uart1 { uart1_xfer: uart1-xfer { - rockchip,pins = <3 RK_PA4 4 &pcfg_pull_up>, - <3 RK_PA6 4 &pcfg_pull_none>; + rockchip,pins = <3 RK_PA4 4 &pcfg_pull_none>, + <3 RK_PA6 4 &pcfg_pull_up>; }; uart1_cts: uart1-cts { @@ -1274,15 +1275,15 @@ uart2-0 { uart2m0_xfer: uart2m0-xfer { - rockchip,pins = <1 RK_PA0 2 &pcfg_pull_up>, - <1 RK_PA1 2 &pcfg_pull_none>; + rockchip,pins = <1 RK_PA0 2 &pcfg_pull_none>, + <1 RK_PA1 2 &pcfg_pull_up>; }; }; uart2-1 { uart2m1_xfer: uart2m1-xfer { - rockchip,pins = <2 RK_PA0 1 &pcfg_pull_up>, - <2 RK_PA1 1 &pcfg_pull_none>; + rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>, + <2 RK_PA1 1 &pcfg_pull_up>; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3368-lion.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3368-lion.dtsi @@ -156,7 +156,7 @@ pinctrl-0 = <&rgmii_pins>; snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; - snps,reset-gpio = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>; + snps,reset-gpio = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; tx_delay = <0x10>; rx_delay = <0x10>; status = "okay"; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts @@ -765,7 +765,6 @@ &pcie0 { bus-scan-delay-ms = <1000>; ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; - max-link-speed = <2>; num-lanes = <4>; pinctrl-names = "default"; pinctrl-0 = <&pcie_clkreqn_cpm>; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi @@ -101,7 +101,7 @@ vcc5v0_host: vcc5v0-host-regulator { compatible = "regulator-fixed"; - gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>; + gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>; enable-active-low; pinctrl-names = "default"; pinctrl-0 = <&vcc5v0_host_en>; @@ -157,7 +157,7 @@ phy-mode = "rgmii"; pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; + snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; tx_delay = <0x10>; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi @@ -74,14 +74,14 @@ label = "red:diy"; gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; default-state = "off"; - linux,default-trigger = "mmc1"; + linux,default-trigger = "mmc2"; }; yellow-led { label = "yellow:yellow-led"; gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; default-state = "off"; - linux,default-trigger = "mmc0"; + linux,default-trigger = "mmc1"; }; }; --- linux-5.8.0.orig/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -29,6 +29,9 @@ i2c6 = &i2c6; i2c7 = &i2c7; i2c8 = &i2c8; + mmc0 = &sdio0; + mmc1 = &sdmmc; + mmc2 = &sdhci; serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; @@ -229,6 +232,7 @@ reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>; reg-names = "axi-base", "apb-base"; + device_type = "pci"; #address-cells = <3>; #size-cells = <2>; #interrupt-cells = <1>; @@ -247,7 +251,6 @@ <0 0 0 2 &pcie0_intc 1>, <0 0 0 3 &pcie0_intc 2>, <0 0 0 4 &pcie0_intc 3>; - linux,pci-domain = <0>; max-link-speed = <1>; msi-map = <0x0 &its 0x0 0x1000>; phys = <&pcie_phy 0>, <&pcie_phy 1>, @@ -1273,7 +1276,6 @@ compatible = "rockchip,rk3399-vdec"; reg = <0x0 0xff660000 0x0 0x400>; interrupts = ; - interrupt-names = "vdpu"; clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>, <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>; clock-names = "axi", "ahb", "cabac", "core"; --- linux-5.8.0.orig/arch/arm64/boot/dts/ti/k3-am65-main.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/ti/k3-am65-main.dtsi @@ -780,7 +780,7 @@ }; }; - dss: dss@04a00000 { + dss: dss@4a00000 { compatible = "ti,am65x-dss"; reg = <0x0 0x04a00000 0x0 0x1000>, /* common */ <0x0 0x04a02000 0x0 0x1000>, /* vidl1 */ @@ -813,6 +813,8 @@ status = "disabled"; + dma-coherent; + dss_ports: ports { #address-cells = <1>; #size-cells = <0>; --- linux-5.8.0.orig/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi @@ -748,7 +748,7 @@ }; }; - dss: dss@04a00000 { + dss: dss@4a00000 { compatible = "ti,j721e-dss"; reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */ --- linux-5.8.0.orig/arch/arm64/boot/dts/xilinx/zynqmp.dtsi +++ linux-5.8.0/arch/arm64/boot/dts/xilinx/zynqmp.dtsi @@ -500,7 +500,7 @@ }; i2c0: i2c@ff020000 { - compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; + compatible = "cdns,i2c-r1p14"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 17 4>; @@ -511,7 +511,7 @@ }; i2c1: i2c@ff030000 { - compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; + compatible = "cdns,i2c-r1p14"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 18 4>; --- linux-5.8.0.orig/arch/arm64/crypto/aes-glue.c +++ linux-5.8.0/arch/arm64/crypto/aes-glue.c @@ -55,7 +55,7 @@ #define aes_mac_update neon_aes_mac_update MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 NEON"); #endif -#if defined(USE_V8_CRYPTO_EXTENSIONS) || !defined(CONFIG_CRYPTO_AES_ARM64_BS) +#if defined(USE_V8_CRYPTO_EXTENSIONS) || !IS_ENABLED(CONFIG_CRYPTO_AES_ARM64_BS) MODULE_ALIAS_CRYPTO("ecb(aes)"); MODULE_ALIAS_CRYPTO("cbc(aes)"); MODULE_ALIAS_CRYPTO("ctr(aes)"); @@ -650,7 +650,7 @@ } static struct skcipher_alg aes_algs[] = { { -#if defined(USE_V8_CRYPTO_EXTENSIONS) || !defined(CONFIG_CRYPTO_AES_ARM64_BS) +#if defined(USE_V8_CRYPTO_EXTENSIONS) || !IS_ENABLED(CONFIG_CRYPTO_AES_ARM64_BS) .base = { .cra_name = "__ecb(aes)", .cra_driver_name = "__ecb-aes-" MODE, --- linux-5.8.0.orig/arch/arm64/crypto/aes-neonbs-core.S +++ linux-5.8.0/arch/arm64/crypto/aes-neonbs-core.S @@ -788,7 +788,7 @@ 0: mov bskey, x21 mov rounds, x22 - br x7 + br x16 SYM_FUNC_END(__xts_crypt8) .macro __xts_crypt, do8, o0, o1, o2, o3, o4, o5, o6, o7 @@ -806,7 +806,7 @@ uzp1 v30.4s, v30.4s, v25.4s ld1 {v25.16b}, [x24] -99: adr x7, \do8 +99: adr x16, \do8 bl __xts_crypt8 ldp q16, q17, [sp, #.Lframe_local_offset] --- linux-5.8.0.orig/arch/arm64/crypto/poly1305-armv8.pl +++ linux-5.8.0/arch/arm64/crypto/poly1305-armv8.pl @@ -840,7 +840,6 @@ ldp d14,d15,[sp,#64] addp $ACC2,$ACC2,$ACC2 ldr x30,[sp,#8] - .inst 0xd50323bf // autiasp //////////////////////////////////////////////////////////////// // lazy reduction, but without narrowing @@ -882,6 +881,7 @@ str x4,[$ctx,#8] // set is_base2_26 ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size poly1305_blocks_neon,.-poly1305_blocks_neon --- linux-5.8.0.orig/arch/arm64/crypto/poly1305-core.S_shipped +++ linux-5.8.0/arch/arm64/crypto/poly1305-core.S_shipped @@ -779,7 +779,6 @@ ldp d14,d15,[sp,#64] addp v21.2d,v21.2d,v21.2d ldr x30,[sp,#8] - .inst 0xd50323bf // autiasp //////////////////////////////////////////////////////////////// // lazy reduction, but without narrowing @@ -821,6 +820,7 @@ str x4,[x0,#8] // set is_base2_26 ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size poly1305_blocks_neon,.-poly1305_blocks_neon --- linux-5.8.0.orig/arch/arm64/crypto/sha1-ce-glue.c +++ linux-5.8.0/arch/arm64/crypto/sha1-ce-glue.c @@ -19,6 +19,7 @@ MODULE_DESCRIPTION("SHA1 secure hash using ARMv8 Crypto Extensions"); MODULE_AUTHOR("Ard Biesheuvel "); MODULE_LICENSE("GPL v2"); +MODULE_ALIAS_CRYPTO("sha1"); struct sha1_ce_state { struct sha1_state sst; --- linux-5.8.0.orig/arch/arm64/crypto/sha2-ce-glue.c +++ linux-5.8.0/arch/arm64/crypto/sha2-ce-glue.c @@ -19,6 +19,8 @@ MODULE_DESCRIPTION("SHA-224/SHA-256 secure hash using ARMv8 Crypto Extensions"); MODULE_AUTHOR("Ard Biesheuvel "); MODULE_LICENSE("GPL v2"); +MODULE_ALIAS_CRYPTO("sha224"); +MODULE_ALIAS_CRYPTO("sha256"); struct sha256_ce_state { struct sha256_state sst; --- linux-5.8.0.orig/arch/arm64/crypto/sha3-ce-glue.c +++ linux-5.8.0/arch/arm64/crypto/sha3-ce-glue.c @@ -23,6 +23,10 @@ MODULE_DESCRIPTION("SHA3 secure hash using ARMv8 Crypto Extensions"); MODULE_AUTHOR("Ard Biesheuvel "); MODULE_LICENSE("GPL v2"); +MODULE_ALIAS_CRYPTO("sha3-224"); +MODULE_ALIAS_CRYPTO("sha3-256"); +MODULE_ALIAS_CRYPTO("sha3-384"); +MODULE_ALIAS_CRYPTO("sha3-512"); asmlinkage void sha3_ce_transform(u64 *st, const u8 *data, int blocks, int md_len); --- linux-5.8.0.orig/arch/arm64/crypto/sha512-ce-glue.c +++ linux-5.8.0/arch/arm64/crypto/sha512-ce-glue.c @@ -23,6 +23,8 @@ MODULE_DESCRIPTION("SHA-384/SHA-512 secure hash using ARMv8 Crypto Extensions"); MODULE_AUTHOR("Ard Biesheuvel "); MODULE_LICENSE("GPL v2"); +MODULE_ALIAS_CRYPTO("sha384"); +MODULE_ALIAS_CRYPTO("sha512"); asmlinkage void sha512_ce_transform(struct sha512_state *sst, u8 const *src, int blocks); --- linux-5.8.0.orig/arch/arm64/include/asm/Kbuild +++ linux-5.8.0/arch/arm64/include/asm/Kbuild @@ -1,6 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 generic-y += early_ioremap.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += qrwlock.h generic-y += qspinlock.h --- linux-5.8.0.orig/arch/arm64/include/asm/archrandom.h +++ linux-5.8.0/arch/arm64/include/asm/archrandom.h @@ -6,7 +6,6 @@ #include #include -#include #include static inline bool __arm64_rndr(unsigned long *v) --- linux-5.8.0.orig/arch/arm64/include/asm/atomic.h +++ linux-5.8.0/arch/arm64/include/asm/atomic.h @@ -17,7 +17,7 @@ #include #define ATOMIC_OP(op) \ -static inline void arch_##op(int i, atomic_t *v) \ +static __always_inline void arch_##op(int i, atomic_t *v) \ { \ __lse_ll_sc_body(op, i, v); \ } @@ -32,7 +32,7 @@ #undef ATOMIC_OP #define ATOMIC_FETCH_OP(name, op) \ -static inline int arch_##op##name(int i, atomic_t *v) \ +static __always_inline int arch_##op##name(int i, atomic_t *v) \ { \ return __lse_ll_sc_body(op##name, i, v); \ } @@ -56,7 +56,7 @@ #undef ATOMIC_FETCH_OPS #define ATOMIC64_OP(op) \ -static inline void arch_##op(long i, atomic64_t *v) \ +static __always_inline void arch_##op(long i, atomic64_t *v) \ { \ __lse_ll_sc_body(op, i, v); \ } @@ -71,7 +71,7 @@ #undef ATOMIC64_OP #define ATOMIC64_FETCH_OP(name, op) \ -static inline long arch_##op##name(long i, atomic64_t *v) \ +static __always_inline long arch_##op##name(long i, atomic64_t *v) \ { \ return __lse_ll_sc_body(op##name, i, v); \ } @@ -94,7 +94,7 @@ #undef ATOMIC64_FETCH_OP #undef ATOMIC64_FETCH_OPS -static inline long arch_atomic64_dec_if_positive(atomic64_t *v) +static __always_inline long arch_atomic64_dec_if_positive(atomic64_t *v) { return __lse_ll_sc_body(atomic64_dec_if_positive, v); } --- linux-5.8.0.orig/arch/arm64/include/asm/cpufeature.h +++ linux-5.8.0/arch/arm64/include/asm/cpufeature.h @@ -268,6 +268,8 @@ /* * CPU feature detected at boot time based on feature of one or more CPUs. * All possible conflicts for a late CPU are ignored. + * NOTE: this means that a late CPU with the feature will *not* cause the + * capability to be advertised by cpus_have_*cap()! */ #define ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE \ (ARM64_CPUCAP_SCOPE_LOCAL_CPU | \ --- linux-5.8.0.orig/arch/arm64/include/asm/cputype.h +++ linux-5.8.0/arch/arm64/include/asm/cputype.h @@ -85,6 +85,8 @@ #define QCOM_CPU_PART_FALKOR_V1 0x800 #define QCOM_CPU_PART_FALKOR 0xC00 #define QCOM_CPU_PART_KRYO 0x200 +#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800 +#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801 #define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803 #define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804 #define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805 @@ -114,6 +116,8 @@ #define MIDR_QCOM_FALKOR_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR_V1) #define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR) #define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO) +#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD) +#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER) #define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER) #define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD) #define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER) --- linux-5.8.0.orig/arch/arm64/include/asm/insn.h +++ linux-5.8.0/arch/arm64/include/asm/insn.h @@ -359,9 +359,13 @@ __AARCH64_INSN_FUNCS(exception, 0xFF000000, 0xD4000000) __AARCH64_INSN_FUNCS(hint, 0xFFFFF01F, 0xD503201F) __AARCH64_INSN_FUNCS(br, 0xFFFFFC1F, 0xD61F0000) +__AARCH64_INSN_FUNCS(br_auth, 0xFEFFF800, 0xD61F0800) __AARCH64_INSN_FUNCS(blr, 0xFFFFFC1F, 0xD63F0000) +__AARCH64_INSN_FUNCS(blr_auth, 0xFEFFF800, 0xD63F0800) __AARCH64_INSN_FUNCS(ret, 0xFFFFFC1F, 0xD65F0000) +__AARCH64_INSN_FUNCS(ret_auth, 0xFFFFFBFF, 0xD65F0BFF) __AARCH64_INSN_FUNCS(eret, 0xFFFFFFFF, 0xD69F03E0) +__AARCH64_INSN_FUNCS(eret_auth, 0xFFFFFBFF, 0xD69F0BFF) __AARCH64_INSN_FUNCS(mrs, 0xFFF00000, 0xD5300000) __AARCH64_INSN_FUNCS(msr_imm, 0xFFF8F01F, 0xD500401F) __AARCH64_INSN_FUNCS(msr_reg, 0xFFF00000, 0xD5100000) --- linux-5.8.0.orig/arch/arm64/include/asm/kvm_arm.h +++ linux-5.8.0/arch/arm64/include/asm/kvm_arm.h @@ -71,11 +71,12 @@ * IMO: Override CPSR.I and enable signaling with VI * FMO: Override CPSR.F and enable signaling with VF * SWIO: Turn set/way invalidates into set/way clean+invalidate + * PTW: Take a stage2 fault if a stage1 walk steps in device memory */ #define HCR_GUEST_FLAGS (HCR_TSC | HCR_TSW | HCR_TWE | HCR_TWI | HCR_VM | \ HCR_BSU_IS | HCR_FB | HCR_TAC | \ HCR_AMO | HCR_SWIO | HCR_TIDCP | HCR_RW | HCR_TLOR | \ - HCR_FMO | HCR_IMO) + HCR_FMO | HCR_IMO | HCR_PTW ) #define HCR_VIRT_EXCP_MASK (HCR_VSE | HCR_VI | HCR_VF) #define HCR_HOST_NVHE_FLAGS (HCR_RW | HCR_API | HCR_APK) #define HCR_HOST_VHE_FLAGS (HCR_RW | HCR_TGE | HCR_E2H) --- linux-5.8.0.orig/arch/arm64/include/asm/kvm_asm.h +++ linux-5.8.0/arch/arm64/include/asm/kvm_asm.h @@ -121,6 +121,34 @@ *__hyp_this_cpu_ptr(sym); \ }) +#define __KVM_EXTABLE(from, to) \ + " .pushsection __kvm_ex_table, \"a\"\n" \ + " .align 3\n" \ + " .long (" #from " - .), (" #to " - .)\n" \ + " .popsection\n" + + +#define __kvm_at(at_op, addr) \ +( { \ + int __kvm_at_err = 0; \ + u64 spsr, elr; \ + asm volatile( \ + " mrs %1, spsr_el2\n" \ + " mrs %2, elr_el2\n" \ + "1: at "at_op", %3\n" \ + " isb\n" \ + " b 9f\n" \ + "2: msr spsr_el2, %1\n" \ + " msr elr_el2, %2\n" \ + " mov %w0, %4\n" \ + "9:\n" \ + __KVM_EXTABLE(1b, 2b) \ + : "+r" (__kvm_at_err), "=&r" (spsr), "=&r" (elr) \ + : "r" (addr), "i" (-EFAULT)); \ + __kvm_at_err; \ +} ) + + #else /* __ASSEMBLY__ */ .macro hyp_adr_this_cpu reg, sym, tmp @@ -146,6 +174,21 @@ kern_hyp_va \vcpu .endm +/* + * KVM extable for unexpected exceptions. + * In the same format _asm_extable, but output to a different section so that + * it can be mapped to EL2. The KVM version is not sorted. The caller must + * ensure: + * x18 has the hypervisor value to allow any Shadow-Call-Stack instrumented + * code to write to it, and that SPSR_EL2 and ELR_EL2 are restored by the fixup. + */ +.macro _kvm_extable, from, to + .pushsection __kvm_ex_table, "a" + .align 3 + .long (\from - .), (\to - .) + .popsection +.endm + #endif #endif /* __ARM_KVM_ASM_H__ */ --- linux-5.8.0.orig/arch/arm64/include/asm/kvm_emulate.h +++ linux-5.8.0/arch/arm64/include/asm/kvm_emulate.h @@ -319,7 +319,7 @@ return (kvm_vcpu_get_hsr(vcpu) & ESR_ELx_SRT_MASK) >> ESR_ELx_SRT_SHIFT; } -static __always_inline bool kvm_vcpu_dabt_iss1tw(const struct kvm_vcpu *vcpu) +static __always_inline bool kvm_vcpu_abt_iss1tw(const struct kvm_vcpu *vcpu) { return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_S1PTW); } @@ -327,7 +327,7 @@ static __always_inline bool kvm_vcpu_dabt_iswrite(const struct kvm_vcpu *vcpu) { return !!(kvm_vcpu_get_hsr(vcpu) & ESR_ELx_WNR) || - kvm_vcpu_dabt_iss1tw(vcpu); /* AF/DBM update */ + kvm_vcpu_abt_iss1tw(vcpu); /* AF/DBM update */ } static inline bool kvm_vcpu_dabt_is_cm(const struct kvm_vcpu *vcpu) @@ -356,6 +356,11 @@ return kvm_vcpu_trap_get_class(vcpu) == ESR_ELx_EC_IABT_LOW; } +static inline bool kvm_vcpu_trap_is_exec_fault(const struct kvm_vcpu *vcpu) +{ + return kvm_vcpu_trap_is_iabt(vcpu) && !kvm_vcpu_abt_iss1tw(vcpu); +} + static __always_inline u8 kvm_vcpu_trap_get_fault(const struct kvm_vcpu *vcpu) { return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC; @@ -393,6 +398,9 @@ static inline bool kvm_is_write_fault(struct kvm_vcpu *vcpu) { + if (kvm_vcpu_abt_iss1tw(vcpu)) + return true; + if (kvm_vcpu_trap_is_iabt(vcpu)) return false; --- linux-5.8.0.orig/arch/arm64/include/asm/kvm_host.h +++ linux-5.8.0/arch/arm64/include/asm/kvm_host.h @@ -190,6 +190,7 @@ #define c2_TTBR1 (TTBR1_EL1 * 2) /* Translation Table Base Register 1 */ #define c2_TTBR1_high (c2_TTBR1 + 1) /* TTBR1 top 32 bits */ #define c2_TTBCR (TCR_EL1 * 2) /* Translation Table Base Control R. */ +#define c2_TTBCR2 (c2_TTBCR + 1) /* Translation Table Base Control R. 2 */ #define c3_DACR (DACR32_EL2 * 2)/* Domain Access Control Register */ #define c5_DFSR (ESR_EL1 * 2) /* Data Fault Status Register */ #define c5_IFSR (IFSR32_EL2 * 2)/* Instruction Fault Status Register */ @@ -217,6 +218,7 @@ #define cp14_DBGWCR0 (DBGWCR0_EL1 * 2) #define cp14_DBGWVR0 (DBGWVR0_EL1 * 2) #define cp14_DBGDCCINT (MDCCINT_EL1 * 2) +#define cp14_DBGVCR (DBGVCR32_EL2 * 2) #define NR_COPRO_REGS (NR_SYS_REGS * 2) @@ -443,7 +445,7 @@ #define KVM_ARCH_WANT_MMU_NOTIFIER int kvm_unmap_hva_range(struct kvm *kvm, - unsigned long start, unsigned long end); + unsigned long start, unsigned long end, unsigned flags); int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); --- linux-5.8.0.orig/arch/arm64/include/asm/kvm_hyp.h +++ linux-5.8.0/arch/arm64/include/asm/kvm_hyp.h @@ -77,6 +77,9 @@ void __debug_switch_to_guest(struct kvm_vcpu *vcpu); void __debug_switch_to_host(struct kvm_vcpu *vcpu); +void __debug_save_host_buffers_nvhe(struct kvm_vcpu *vcpu); +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); --- linux-5.8.0.orig/arch/arm64/include/asm/memory.h +++ linux-5.8.0/arch/arm64/include/asm/memory.h @@ -163,7 +163,6 @@ #include #include -extern s64 physvirt_offset; extern s64 memstart_addr; /* PHYS_OFFSET - the physical address of the start of memory. */ #define PHYS_OFFSET ({ VM_BUG_ON(memstart_addr & 1); memstart_addr; }) @@ -233,13 +232,13 @@ /* - * The linear kernel range starts at the bottom of the virtual address - * space. Testing the top bit for the start of the region is a - * sufficient check and avoids having to worry about the tag. + * Check whether an arbitrary address is within the linear map, which + * lives in the [PAGE_OFFSET, PAGE_END) interval at the bottom of the + * kernel's TTBR1 address range. */ -#define __is_lm_address(addr) (!(((u64)addr) & BIT(vabits_actual - 1))) +#define __is_lm_address(addr) (((u64)(addr) ^ PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET)) -#define __lm_to_phys(addr) (((addr) + physvirt_offset)) +#define __lm_to_phys(addr) (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET) #define __kimg_to_phys(addr) ((addr) - kimage_voffset) #define __virt_to_phys_nodebug(x) ({ \ @@ -257,7 +256,7 @@ #define __phys_addr_symbol(x) __pa_symbol_nodebug(x) #endif /* CONFIG_DEBUG_VIRTUAL */ -#define __phys_to_virt(x) ((unsigned long)((x) - physvirt_offset)) +#define __phys_to_virt(x) ((unsigned long)((x) - PHYS_OFFSET) | PAGE_OFFSET) #define __phys_to_kimg(x) ((unsigned long)((x) + kimage_voffset)) /* @@ -301,6 +300,11 @@ #define ARCH_PFN_OFFSET ((unsigned long)PHYS_PFN_OFFSET) #if !defined(CONFIG_SPARSEMEM_VMEMMAP) || defined(CONFIG_DEBUG_VIRTUAL) +#define page_to_virt(x) ({ \ + __typeof__(x) __page = x; \ + void *__addr = __va(page_to_phys(__page)); \ + (void *)__tag_set((const void *)__addr, page_kasan_tag(__page));\ +}) #define virt_to_page(x) pfn_to_page(virt_to_pfn(x)) #else #define page_to_virt(x) ({ \ @@ -318,7 +322,7 @@ #endif /* !CONFIG_SPARSEMEM_VMEMMAP || CONFIG_DEBUG_VIRTUAL */ #define virt_addr_valid(addr) ({ \ - __typeof__(addr) __addr = addr; \ + __typeof__(addr) __addr = __tag_reset(addr); \ __is_lm_address(__addr) && pfn_valid(virt_to_pfn(__addr)); \ }) --- linux-5.8.0.orig/arch/arm64/include/asm/mmu_context.h +++ linux-5.8.0/arch/arm64/include/asm/mmu_context.h @@ -65,10 +65,7 @@ static inline bool __cpu_uses_extended_idmap(void) { - if (IS_ENABLED(CONFIG_ARM64_VA_BITS_52)) - return false; - - return unlikely(idmap_t0sz != TCR_T0SZ(VA_BITS)); + return unlikely(idmap_t0sz != TCR_T0SZ(vabits_actual)); } /* --- linux-5.8.0.orig/arch/arm64/include/asm/numa.h +++ linux-5.8.0/arch/arm64/include/asm/numa.h @@ -25,6 +25,9 @@ /* Returns a pointer to the cpumask of CPUs on Node 'node'. */ static inline const struct cpumask *cpumask_of_node(int node) { + if (node == NUMA_NO_NODE) + return cpu_all_mask; + return node_to_cpumask_map[node]; } #endif --- linux-5.8.0.orig/arch/arm64/include/asm/pgtable-hwdef.h +++ linux-5.8.0/arch/arm64/include/asm/pgtable-hwdef.h @@ -216,6 +216,7 @@ #define TCR_TxSZ(x) (TCR_T0SZ(x) | TCR_T1SZ(x)) #define TCR_TxSZ_WIDTH 6 #define TCR_T0SZ_MASK (((UL(1) << TCR_TxSZ_WIDTH) - 1) << TCR_T0SZ_OFFSET) +#define TCR_T1SZ_MASK (((UL(1) << TCR_TxSZ_WIDTH) - 1) << TCR_T1SZ_OFFSET) #define TCR_EPD0_SHIFT 7 #define TCR_EPD0_MASK (UL(1) << TCR_EPD0_SHIFT) --- linux-5.8.0.orig/arch/arm64/include/asm/pgtable.h +++ linux-5.8.0/arch/arm64/include/asm/pgtable.h @@ -23,6 +23,8 @@ #define VMALLOC_START (MODULES_END) #define VMALLOC_END (- PUD_SIZE - VMEMMAP_SIZE - SZ_64K) +#define vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT)) + #define FIRST_USER_ADDRESS 0UL #ifndef __ASSEMBLY__ @@ -33,8 +35,6 @@ #include #include -extern struct page *vmemmap; - extern void __pte_error(const char *file, int line, unsigned long val); extern void __pmd_error(const char *file, int line, unsigned long val); extern void __pud_error(const char *file, int line, unsigned long val); @@ -98,8 +98,6 @@ #define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID)) #define pte_valid_not_user(pte) \ ((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID) -#define pte_valid_young(pte) \ - ((pte_val(pte) & (PTE_VALID | PTE_AF)) == (PTE_VALID | PTE_AF)) #define pte_valid_user(pte) \ ((pte_val(pte) & (PTE_VALID | PTE_USER)) == (PTE_VALID | PTE_USER)) @@ -107,9 +105,12 @@ * Could the pte be present in the TLB? We must check mm_tlb_flush_pending * so that we don't erroneously return false for pages that have been * remapped as PROT_NONE but are yet to be flushed from the TLB. + * Note that we can't make any assumptions based on the state of the access + * flag, since ptep_clear_flush_young() elides a DSB when invalidating the + * TLB. */ #define pte_accessible(mm, pte) \ - (mm_tlb_flush_pending(mm) ? pte_present(pte) : pte_valid_young(pte)) + (mm_tlb_flush_pending(mm) ? pte_present(pte) : pte_valid(pte)) /* * p??_access_permitted() is true for valid user mappings (subject to the @@ -135,13 +136,6 @@ return pte; } -static inline pte_t pte_wrprotect(pte_t pte) -{ - pte = clear_pte_bit(pte, __pgprot(PTE_WRITE)); - pte = set_pte_bit(pte, __pgprot(PTE_RDONLY)); - return pte; -} - static inline pte_t pte_mkwrite(pte_t pte) { pte = set_pte_bit(pte, __pgprot(PTE_WRITE)); @@ -167,6 +161,20 @@ return pte; } +static inline pte_t pte_wrprotect(pte_t pte) +{ + /* + * If hardware-dirty (PTE_WRITE/DBM bit set and PTE_RDONLY + * clear), set the PTE_DIRTY bit. + */ + if (pte_hw_dirty(pte)) + pte = pte_mkdirty(pte); + + pte = clear_pte_bit(pte, __pgprot(PTE_WRITE)); + pte = set_pte_bit(pte, __pgprot(PTE_RDONLY)); + return pte; +} + static inline pte_t pte_mkold(pte_t pte) { return clear_pte_bit(pte, __pgprot(PTE_AF)); @@ -788,12 +796,6 @@ pte = READ_ONCE(*ptep); do { old_pte = pte; - /* - * If hardware-dirty (PTE_WRITE/DBM bit set and PTE_RDONLY - * clear), set the PTE_DIRTY bit. - */ - if (pte_hw_dirty(pte)) - pte = pte_mkdirty(pte); pte = pte_wrprotect(pte); pte_val(pte) = cmpxchg_relaxed(&pte_val(*ptep), pte_val(old_pte), pte_val(pte)); --- linux-5.8.0.orig/arch/arm64/include/asm/processor.h +++ linux-5.8.0/arch/arm64/include/asm/processor.h @@ -95,7 +95,8 @@ #endif /* CONFIG_ARM64_FORCE_52BIT */ extern phys_addr_t arm64_dma_phys_limit; -#define ARCH_LOW_ADDRESS_LIMIT (arm64_dma_phys_limit - 1) +extern phys_addr_t arm64_dma32_phys_limit; +#define ARCH_LOW_ADDRESS_LIMIT ((arm64_dma_phys_limit ? : arm64_dma32_phys_limit) - 1) struct debug_info { #ifdef CONFIG_HAVE_HW_BREAKPOINT --- linux-5.8.0.orig/arch/arm64/include/asm/smp.h +++ linux-5.8.0/arch/arm64/include/asm/smp.h @@ -46,7 +46,12 @@ * Logical CPU mapping. */ extern u64 __cpu_logical_map[NR_CPUS]; -#define cpu_logical_map(cpu) __cpu_logical_map[cpu] +extern u64 cpu_logical_map(int cpu); + +static inline void set_cpu_logical_map(int cpu, u64 hwid) +{ + __cpu_logical_map[cpu] = hwid; +} struct seq_file; --- linux-5.8.0.orig/arch/arm64/kernel/cpu_errata.c +++ linux-5.8.0/arch/arm64/kernel/cpu_errata.c @@ -234,14 +234,17 @@ smccc_end = NULL; break; -#if IS_ENABLED(CONFIG_KVM) case SMCCC_CONDUIT_SMC: cb = call_smc_arch_workaround_1; +#if IS_ENABLED(CONFIG_KVM) smccc_start = __smccc_workaround_1_smc; smccc_end = __smccc_workaround_1_smc + __SMCCC_WORKAROUND_1_SMC_SZ; - break; +#else + smccc_start = NULL; + smccc_end = NULL; #endif + break; default: return -1; @@ -454,6 +457,12 @@ return required; } +static void cpu_enable_ssbd_mitigation(const struct arm64_cpu_capabilities *cap) +{ + if (ssbd_state != ARM64_SSBD_FORCE_DISABLE) + cap->matches(cap, SCOPE_LOCAL_CPU); +} + /* known invulnerable cores */ static const struct midr_range arm64_ssb_cpus[] = { MIDR_ALL_VERSIONS(MIDR_CORTEX_A35), @@ -596,6 +605,12 @@ return (need_wa > 0); } +static void +cpu_enable_branch_predictor_hardening(const struct arm64_cpu_capabilities *cap) +{ + cap->matches(cap, SCOPE_LOCAL_CPU); +} + static const __maybe_unused struct midr_range tx2_family_cpus[] = { MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN), MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2), @@ -735,6 +750,8 @@ MIDR_REV_RANGE(MIDR_CORTEX_A53, 0, 0, 4), /* Brahma-B53 r0p[0] */ MIDR_REV(MIDR_BRAHMA_B53, 0, 0), + /* Kryo2XX Silver rAp4 */ + MIDR_REV(MIDR_QCOM_KRYO_2XX_SILVER, 0xa, 0x4), {}, }; #endif @@ -887,9 +904,11 @@ }, #endif { + .desc = "Branch predictor hardening", .capability = ARM64_HARDEN_BRANCH_PREDICTOR, .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, .matches = check_branch_predictor, + .cpu_enable = cpu_enable_branch_predictor_hardening, }, #ifdef CONFIG_HARDEN_EL2_VECTORS { @@ -903,6 +922,7 @@ .capability = ARM64_SSBD, .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, .matches = has_ssbd_mitigation, + .cpu_enable = cpu_enable_ssbd_mitigation, .midr_range_list = arm64_ssb_cpus, }, #ifdef CONFIG_ARM64_ERRATUM_1418040 @@ -910,6 +930,12 @@ .desc = "ARM erratum 1418040", .capability = ARM64_WORKAROUND_1418040, ERRATA_MIDR_RANGE_LIST(erratum_1418040_list), + /* + * We need to allow affected CPUs to come in late, but + * also need the non-affected CPUs to be able to come + * in at any point in time. Wonderful. + */ + .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE, }, #endif #ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT --- linux-5.8.0.orig/arch/arm64/kernel/cpufeature.c +++ linux-5.8.0/arch/arm64/kernel/cpufeature.c @@ -1290,6 +1290,8 @@ MIDR_ALL_VERSIONS(MIDR_CORTEX_A73), MIDR_ALL_VERSIONS(MIDR_HISI_TSV110), MIDR_ALL_VERSIONS(MIDR_NVIDIA_CARMEL), + MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_2XX_GOLD), + MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_2XX_SILVER), MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_3XX_SILVER), MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_SILVER), { /* sentinel */ } @@ -1407,7 +1409,7 @@ /* List of CPUs which have broken DBM support. */ static const struct midr_range cpus[] = { #ifdef CONFIG_ARM64_ERRATUM_1024718 - MIDR_RANGE(MIDR_CORTEX_A55, 0, 0, 1, 0), // A55 r0p0 -r1p0 + MIDR_ALL_VERSIONS(MIDR_CORTEX_A55), /* Kryo4xx Silver (rdpe => r1p0) */ MIDR_REV(MIDR_QCOM_KRYO_4XX_SILVER, 0xd, 0xe), #endif @@ -2469,7 +2471,7 @@ int parange, ipa_max; unsigned int safe_vmid_bits, vmid_bits; - if (!IS_ENABLED(CONFIG_KVM) || !IS_ENABLED(CONFIG_KVM_ARM_HOST)) + if (!IS_ENABLED(CONFIG_KVM)) return; safe_mmfr1 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR1_EL1); --- linux-5.8.0.orig/arch/arm64/kernel/crash_core.c +++ linux-5.8.0/arch/arm64/kernel/crash_core.c @@ -7,6 +7,14 @@ #include #include #include +#include + +static inline u64 get_tcr_el1_t1sz(void); + +static inline u64 get_tcr_el1_t1sz(void) +{ + return (read_sysreg(tcr_el1) & TCR_T1SZ_MASK) >> TCR_T1SZ_OFFSET; +} void arch_crash_save_vmcoreinfo(void) { @@ -16,6 +24,8 @@ kimage_voffset); vmcoreinfo_append_str("NUMBER(PHYS_OFFSET)=0x%llx\n", PHYS_OFFSET); + vmcoreinfo_append_str("NUMBER(TCR_EL1_T1SZ)=0x%llx\n", + get_tcr_el1_t1sz()); vmcoreinfo_append_str("KERNELOFFSET=%lx\n", kaslr_offset()); vmcoreinfo_append_str("NUMBER(KERNELPACMASK)=0x%llx\n", system_supports_address_auth() ? --- linux-5.8.0.orig/arch/arm64/kernel/crash_dump.c +++ linux-5.8.0/arch/arm64/kernel/crash_dump.c @@ -64,5 +64,7 @@ ssize_t elfcorehdr_read(char *buf, size_t count, u64 *ppos) { memcpy(buf, phys_to_virt((phys_addr_t)*ppos), count); + *ppos += count; + return count; } --- linux-5.8.0.orig/arch/arm64/kernel/efi-header.S +++ linux-5.8.0/arch/arm64/kernel/efi-header.S @@ -147,6 +147,6 @@ * correctly at this alignment, we must ensure that .text is * placed at a 4k boundary in the Image to begin with. */ - .align 12 + .balign SEGMENT_ALIGN efi_header_end: .endm --- linux-5.8.0.orig/arch/arm64/kernel/entry.S +++ linux-5.8.0/arch/arm64/kernel/entry.S @@ -169,19 +169,6 @@ stp x28, x29, [sp, #16 * 14] .if \el == 0 - .if \regsize == 32 - /* - * If we're returning from a 32-bit task on a system affected by - * 1418040 then re-enable userspace access to the virtual counter. - */ -#ifdef CONFIG_ARM64_ERRATUM_1418040 -alternative_if ARM64_WORKAROUND_1418040 - mrs x0, cntkctl_el1 - orr x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN - msr cntkctl_el1, x0 -alternative_else_nop_endif -#endif - .endif clear_gp_regs mrs x21, sp_el0 ldr_this_cpu tsk, __entry_task, x20 @@ -337,14 +324,6 @@ tst x22, #PSR_MODE32_BIT // native task? b.eq 3f -#ifdef CONFIG_ARM64_ERRATUM_1418040 -alternative_if ARM64_WORKAROUND_1418040 - mrs x0, cntkctl_el1 - bic x0, x0, #2 // ARCH_TIMER_USR_VCT_ACCESS_EN - msr cntkctl_el1, x0 -alternative_else_nop_endif -#endif - #ifdef CONFIG_ARM64_ERRATUM_845719 alternative_if ARM64_WORKAROUND_845719 #ifdef CONFIG_PID_IN_CONTEXTIDR --- linux-5.8.0.orig/arch/arm64/kernel/head.S +++ linux-5.8.0/arch/arm64/kernel/head.S @@ -338,7 +338,7 @@ */ adrp x5, __idmap_text_end clz x5, x5 - cmp x5, TCR_T0SZ(VA_BITS) // default T0SZ small enough? + cmp x5, TCR_T0SZ(VA_BITS_MIN) // default T0SZ small enough? b.ge 1f // .. then skip VA range extension adr_l x6, idmap_t0sz @@ -989,6 +989,7 @@ tlbi vmalle1 // Remove any stale TLB entries dsb nsh + isb msr sctlr_el1, x19 // re-enable the MMU isb --- linux-5.8.0.orig/arch/arm64/kernel/insn.c +++ linux-5.8.0/arch/arm64/kernel/insn.c @@ -176,7 +176,7 @@ bool __kprobes aarch64_insn_is_branch(u32 insn) { - /* b, bl, cb*, tb*, b.cond, br, blr */ + /* b, bl, cb*, tb*, ret*, b.cond, br*, blr* */ return aarch64_insn_is_b(insn) || aarch64_insn_is_bl(insn) || @@ -185,8 +185,11 @@ aarch64_insn_is_tbz(insn) || aarch64_insn_is_tbnz(insn) || aarch64_insn_is_ret(insn) || + aarch64_insn_is_ret_auth(insn) || aarch64_insn_is_br(insn) || + aarch64_insn_is_br_auth(insn) || aarch64_insn_is_blr(insn) || + aarch64_insn_is_blr_auth(insn) || aarch64_insn_is_bcond(insn); } --- linux-5.8.0.orig/arch/arm64/kernel/kaslr.c +++ linux-5.8.0/arch/arm64/kernel/kaslr.c @@ -11,8 +11,8 @@ #include #include #include +#include -#include #include #include #include @@ -84,6 +84,7 @@ void *fdt; u64 seed, offset, mask, module_range; const u8 *cmdline, *str; + unsigned long raw; int size; /* @@ -122,15 +123,12 @@ } /* - * Mix in any entropy obtainable architecturally, open coded - * since this runs extremely early. + * Mix in any entropy obtainable architecturally if enabled + * and supported. */ - if (__early_cpu_has_rndr()) { - unsigned long raw; - if (__arm64_rndr(&raw)) - seed ^= raw; - } + if (arch_get_random_seed_long_early(&raw)) + seed ^= raw; if (!seed) { kaslr_status = KASLR_DISABLED_NO_SEED; --- linux-5.8.0.orig/arch/arm64/kernel/kexec_image.c +++ linux-5.8.0/arch/arm64/kernel/kexec_image.c @@ -43,7 +43,7 @@ u64 flags, value; bool be_image, be_kernel; struct kexec_buf kbuf; - unsigned long text_offset; + unsigned long text_offset, kernel_segment_number; struct kexec_segment *kernel_segment; int ret; @@ -88,11 +88,37 @@ /* Adjust kernel segment with TEXT_OFFSET */ kbuf.memsz += text_offset; - ret = kexec_add_buffer(&kbuf); - if (ret) + kernel_segment_number = image->nr_segments; + + /* + * The location of the kernel segment may make it impossible to satisfy + * the other segment requirements, so we try repeatedly to find a + * location that will work. + */ + while ((ret = kexec_add_buffer(&kbuf)) == 0) { + /* Try to load additional data */ + kernel_segment = &image->segment[kernel_segment_number]; + ret = load_other_segments(image, kernel_segment->mem, + kernel_segment->memsz, initrd, + initrd_len, cmdline); + if (!ret) + break; + + /* + * We couldn't find space for the other segments; erase the + * kernel segment and try the next available hole. + */ + image->nr_segments -= 1; + kbuf.buf_min = kernel_segment->mem + kernel_segment->memsz; + kbuf.mem = KEXEC_BUF_MEM_UNKNOWN; + } + + if (ret) { + pr_err("Could not find any suitable kernel location!"); return ERR_PTR(ret); + } - kernel_segment = &image->segment[image->nr_segments - 1]; + kernel_segment = &image->segment[kernel_segment_number]; kernel_segment->mem += text_offset; kernel_segment->memsz -= text_offset; image->start = kernel_segment->mem; @@ -101,12 +127,7 @@ kernel_segment->mem, kbuf.bufsz, kernel_segment->memsz); - /* Load additional data */ - ret = load_other_segments(image, - kernel_segment->mem, kernel_segment->memsz, - initrd, initrd_len, cmdline); - - return ERR_PTR(ret); + return 0; } #ifdef CONFIG_KEXEC_IMAGE_VERIFY_SIG --- linux-5.8.0.orig/arch/arm64/kernel/machine_kexec_file.c +++ linux-5.8.0/arch/arm64/kernel/machine_kexec_file.c @@ -182,8 +182,10 @@ /* duplicate a device tree blob */ ret = fdt_open_into(initial_boot_params, buf, buf_size); - if (ret) + if (ret) { + vfree(buf); return -EINVAL; + } ret = setup_dtb(image, initrd_load_addr, initrd_len, cmdline, buf); @@ -242,6 +244,11 @@ return ret; } +/* + * Tries to add the initrd and DTB to the image. If it is not possible to find + * valid locations, this function will undo changes to the image and return non + * zero. + */ int load_other_segments(struct kimage *image, unsigned long kernel_load_addr, unsigned long kernel_size, @@ -250,7 +257,8 @@ { struct kexec_buf kbuf; void *headers, *dtb = NULL; - unsigned long headers_sz, initrd_load_addr = 0, dtb_len; + unsigned long headers_sz, initrd_load_addr = 0, dtb_len, + orig_segments = image->nr_segments; int ret = 0; kbuf.image = image; @@ -336,6 +344,7 @@ return 0; out_err: + image->nr_segments = orig_segments; vfree(dtb); return ret; } --- linux-5.8.0.orig/arch/arm64/kernel/module-plts.c +++ linux-5.8.0/arch/arm64/kernel/module-plts.c @@ -271,8 +271,7 @@ mod->arch.core.plt_shndx = i; else if (!strcmp(secstrings + sechdrs[i].sh_name, ".init.plt")) mod->arch.init.plt_shndx = i; - else if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE) && - !strcmp(secstrings + sechdrs[i].sh_name, + else if (!strcmp(secstrings + sechdrs[i].sh_name, ".text.ftrace_trampoline")) tramp = sechdrs + i; else if (sechdrs[i].sh_type == SHT_SYMTAB) --- linux-5.8.0.orig/arch/arm64/kernel/module.lds +++ linux-5.8.0/arch/arm64/kernel/module.lds @@ -1,5 +1,5 @@ SECTIONS { - .plt (NOLOAD) : { BYTE(0) } - .init.plt (NOLOAD) : { BYTE(0) } - .text.ftrace_trampoline (NOLOAD) : { BYTE(0) } + .plt 0 (NOLOAD) : { BYTE(0) } + .init.plt 0 (NOLOAD) : { BYTE(0) } + .text.ftrace_trampoline 0 (NOLOAD) : { BYTE(0) } } --- linux-5.8.0.orig/arch/arm64/kernel/paravirt.c +++ linux-5.8.0/arch/arm64/kernel/paravirt.c @@ -50,16 +50,19 @@ struct pv_time_stolen_time_region *reg; reg = per_cpu_ptr(&stolen_time_region, cpu); - if (!reg->kaddr) { - pr_warn_once("stolen time enabled but not configured for cpu %d\n", - cpu); + + /* + * paravirt_steal_clock() may be called before the CPU + * online notification callback runs. Until the callback + * has run we just return zero. + */ + if (!reg->kaddr) return 0; - } return le64_to_cpu(READ_ONCE(reg->kaddr->stolen_time)); } -static int stolen_time_dying_cpu(unsigned int cpu) +static int stolen_time_cpu_down_prepare(unsigned int cpu) { struct pv_time_stolen_time_region *reg; @@ -73,7 +76,7 @@ return 0; } -static int init_stolen_time_cpu(unsigned int cpu) +static int stolen_time_cpu_online(unsigned int cpu) { struct pv_time_stolen_time_region *reg; struct arm_smccc_res res; @@ -103,19 +106,20 @@ return 0; } -static int pv_time_init_stolen_time(void) +static int __init pv_time_init_stolen_time(void) { int ret; - ret = cpuhp_setup_state(CPUHP_AP_ARM_KVMPV_STARTING, - "hypervisor/arm/pvtime:starting", - init_stolen_time_cpu, stolen_time_dying_cpu); + ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, + "hypervisor/arm/pvtime:online", + stolen_time_cpu_online, + stolen_time_cpu_down_prepare); if (ret < 0) return ret; return 0; } -static bool has_pv_steal_clock(void) +static bool __init has_pv_steal_clock(void) { struct arm_smccc_res res; --- linux-5.8.0.orig/arch/arm64/kernel/perf_event.c +++ linux-5.8.0/arch/arm64/kernel/perf_event.c @@ -155,7 +155,7 @@ pmu_attr = container_of(attr, struct perf_pmu_events_attr, attr); - return sprintf(page, "event=0x%03llx\n", pmu_attr->id); + return sprintf(page, "event=0x%04llx\n", pmu_attr->id); } #define ARMV8_EVENT_ATTR(name, config) \ @@ -244,10 +244,13 @@ test_bit(pmu_attr->id, cpu_pmu->pmceid_bitmap)) return attr->mode; - pmu_attr->id -= ARMV8_PMUV3_EXT_COMMON_EVENT_BASE; - if (pmu_attr->id < ARMV8_PMUV3_MAX_COMMON_EVENTS && - test_bit(pmu_attr->id, cpu_pmu->pmceid_ext_bitmap)) - return attr->mode; + if (pmu_attr->id >= ARMV8_PMUV3_EXT_COMMON_EVENT_BASE) { + u64 id = pmu_attr->id - ARMV8_PMUV3_EXT_COMMON_EVENT_BASE; + + if (id < ARMV8_PMUV3_MAX_COMMON_EVENTS && + test_bit(id, cpu_pmu->pmceid_ext_bitmap)) + return attr->mode; + } return 0; } @@ -507,6 +510,11 @@ static inline void armv8pmu_enable_counter(u32 mask) { + /* + * Make sure event configuration register writes are visible before we + * enable the counter. + * */ + isb(); write_sysreg(mask, pmcntenset_el0); } --- linux-5.8.0.orig/arch/arm64/kernel/probes/decode-insn.c +++ linux-5.8.0/arch/arm64/kernel/probes/decode-insn.c @@ -29,7 +29,8 @@ aarch64_insn_is_msr_imm(insn) || aarch64_insn_is_msr_reg(insn) || aarch64_insn_is_exception(insn) || - aarch64_insn_is_eret(insn)) + aarch64_insn_is_eret(insn) || + aarch64_insn_is_eret_auth(insn)) return false; /* --- linux-5.8.0.orig/arch/arm64/kernel/probes/uprobes.c +++ linux-5.8.0/arch/arm64/kernel/probes/uprobes.c @@ -38,7 +38,7 @@ /* TODO: Currently we do not support AARCH32 instruction probing */ if (mm->context.flags & MMCF_AARCH32) - return -ENOTSUPP; + return -EOPNOTSUPP; else if (!IS_ALIGNED(addr, AARCH64_INSN_SIZE)) return -EINVAL; --- linux-5.8.0.orig/arch/arm64/kernel/process.c +++ linux-5.8.0/arch/arm64/kernel/process.c @@ -516,6 +516,38 @@ } /* + * ARM erratum 1418040 handling, affecting the 32bit view of CNTVCT. + * Assuming the virtual counter is enabled at the beginning of times: + * + * - disable access when switching from a 64bit task to a 32bit task + * - enable access when switching from a 32bit task to a 64bit task + */ +static void erratum_1418040_thread_switch(struct task_struct *prev, + struct task_struct *next) +{ + bool prev32, next32; + u64 val; + + if (!IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040)) + return; + + prev32 = is_compat_thread(task_thread_info(prev)); + next32 = is_compat_thread(task_thread_info(next)); + + if (prev32 == next32 || !this_cpu_has_cap(ARM64_WORKAROUND_1418040)) + return; + + val = read_sysreg(cntkctl_el1); + + if (!next32) + val |= ARCH_TIMER_USR_VCT_ACCESS_EN; + else + val &= ~ARCH_TIMER_USR_VCT_ACCESS_EN; + + write_sysreg(val, cntkctl_el1); +} + +/* * Thread switching. */ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev, @@ -530,6 +562,7 @@ entry_task_switch(next); uao_thread_switch(next); ssbs_thread_switch(next); + erratum_1418040_thread_switch(prev, next); /* * Complete any pending TLB or cache maintenance on this CPU in case --- linux-5.8.0.orig/arch/arm64/kernel/psci.c +++ linux-5.8.0/arch/arm64/kernel/psci.c @@ -66,7 +66,6 @@ static void cpu_psci_cpu_die(unsigned int cpu) { - int ret; /* * There are no known implementations of PSCI actually using the * power state field, pass a sensible default for now. @@ -74,9 +73,7 @@ u32 state = PSCI_POWER_STATE_TYPE_POWER_DOWN << PSCI_0_2_POWER_STATE_TYPE_SHIFT; - ret = psci_ops.cpu_off(state); - - pr_crit("unable to power off CPU%u (%d)\n", cpu, ret); + psci_ops.cpu_off(state); } static int cpu_psci_cpu_kill(unsigned int cpu) --- linux-5.8.0.orig/arch/arm64/kernel/ptrace.c +++ linux-5.8.0/arch/arm64/kernel/ptrace.c @@ -1855,7 +1855,7 @@ if (flags & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE)) { tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); - if (!in_syscall(regs) || (flags & _TIF_SYSCALL_EMU)) + if (flags & _TIF_SYSCALL_EMU) return NO_SYSCALL; } --- linux-5.8.0.orig/arch/arm64/kernel/setup.c +++ linux-5.8.0/arch/arm64/kernel/setup.c @@ -85,7 +85,7 @@ void __init smp_setup_processor_id(void) { u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; - cpu_logical_map(0) = mpidr; + set_cpu_logical_map(0, mpidr); /* * clear __my_cpu_offset on boot CPU to avoid hang caused by @@ -276,6 +276,12 @@ u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID }; +u64 cpu_logical_map(int cpu) +{ + return __cpu_logical_map[cpu]; +} +EXPORT_SYMBOL_GPL(cpu_logical_map); + void __init setup_arch(char **cmdline_p) { init_mm.start_code = (unsigned long) _text; --- linux-5.8.0.orig/arch/arm64/kernel/signal.c +++ linux-5.8.0/arch/arm64/kernel/signal.c @@ -910,13 +910,6 @@ asmlinkage void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags) { - /* - * The assembly code enters us with IRQs off, but it hasn't - * informed the tracing code of that for efficiency reasons. - * Update the trace code with the current status. - */ - trace_hardirqs_off(); - do { /* Check valid user FS if needed */ addr_limit_user_check(); --- linux-5.8.0.orig/arch/arm64/kernel/smp.c +++ linux-5.8.0/arch/arm64/kernel/smp.c @@ -214,6 +214,7 @@ if (system_uses_irq_prio_masking()) init_gic_priority_masking(); + rcu_cpu_starting(cpu); preempt_disable(); trace_hardirqs_off(); @@ -401,6 +402,7 @@ /* Mark this CPU absent */ set_cpu_present(cpu, 0); + rcu_report_dead(cpu); if (IS_ENABLED(CONFIG_HOTPLUG_CPU)) { update_cpu_boot_status(CPU_KILL_ME); @@ -567,7 +569,7 @@ return; /* map the logical cpu id to cpu MPIDR */ - cpu_logical_map(cpu_count) = hwid; + set_cpu_logical_map(cpu_count, hwid); cpu_madt_gicc[cpu_count] = *processor; @@ -681,7 +683,7 @@ goto next; pr_debug("cpu logical map 0x%llx\n", hwid); - cpu_logical_map(cpu_count) = hwid; + set_cpu_logical_map(cpu_count, hwid); early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: @@ -722,7 +724,7 @@ for (i = 1; i < nr_cpu_ids; i++) { if (cpu_logical_map(i) != INVALID_HWID) { if (smp_cpu_setup(i)) - cpu_logical_map(i) = INVALID_HWID; + set_cpu_logical_map(i, INVALID_HWID); } } } --- linux-5.8.0.orig/arch/arm64/kernel/suspend.c +++ linux-5.8.0/arch/arm64/kernel/suspend.c @@ -117,7 +117,7 @@ if (!ret) ret = -EOPNOTSUPP; } else { - __cpu_suspend_exit(); + RCU_NONIDLE(__cpu_suspend_exit()); } unpause_graph_tracing(); --- linux-5.8.0.orig/arch/arm64/kernel/syscall.c +++ linux-5.8.0/arch/arm64/kernel/syscall.c @@ -120,8 +120,8 @@ */ cortex_a76_erratum_1463225_svc_handler(); + user_exit_irqoff(); local_daif_restore(DAIF_PROCCTX); - user_exit(); if (has_syscall_work(flags)) { /* @@ -156,15 +156,8 @@ if (!has_syscall_work(flags) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) { local_daif_mask(); flags = current_thread_info()->flags; - if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP)) { - /* - * We're off to userspace, where interrupts are - * always enabled after we restore the flags from - * the SPSR. - */ - trace_hardirqs_on(); + if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP)) return; - } local_daif_restore(DAIF_PROCCTX); } --- linux-5.8.0.orig/arch/arm64/kernel/topology.c +++ linux-5.8.0/arch/arm64/kernel/topology.c @@ -36,21 +36,23 @@ if (mpidr & MPIDR_UP_BITMASK) return; - /* Create cpu topology mapping based on MPIDR. */ - if (mpidr & MPIDR_MT_BITMASK) { - /* Multiprocessor system : Multi-threads per core */ - cpuid_topo->thread_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); - cpuid_topo->core_id = MPIDR_AFFINITY_LEVEL(mpidr, 1); - cpuid_topo->package_id = MPIDR_AFFINITY_LEVEL(mpidr, 2) | - MPIDR_AFFINITY_LEVEL(mpidr, 3) << 8; - } else { - /* Multiprocessor system : Single-thread per core */ - cpuid_topo->thread_id = -1; - cpuid_topo->core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); - cpuid_topo->package_id = MPIDR_AFFINITY_LEVEL(mpidr, 1) | - MPIDR_AFFINITY_LEVEL(mpidr, 2) << 8 | - MPIDR_AFFINITY_LEVEL(mpidr, 3) << 16; - } + /* + * This would be the place to create cpu topology based on MPIDR. + * + * However, it cannot be trusted to depict the actual topology; some + * pieces of the architecture enforce an artificial cap on Aff0 values + * (e.g. GICv3's ICC_SGI1R_EL1 limits it to 15), leading to an + * artificial cycling of Aff1, Aff2 and Aff3 values. IOW, these end up + * having absolutely no relationship to the actual underlying system + * topology, and cannot be reasonably used as core / package ID. + * + * If the MT bit is set, Aff0 *could* be used to define a thread ID, but + * we still wouldn't be able to obtain a sane core ID. This means we + * need to entirely ignore MPIDR for any topology deduction. + */ + cpuid_topo->thread_id = -1; + cpuid_topo->core_id = cpuid; + cpuid_topo->package_id = cpu_to_node(cpuid); pr_debug("CPU%u: cluster %d core %d thread %d mpidr %#016llx\n", cpuid, cpuid_topo->package_id, cpuid_topo->core_id, --- linux-5.8.0.orig/arch/arm64/kernel/vdso/Makefile +++ linux-5.8.0/arch/arm64/kernel/vdso/Makefile @@ -24,7 +24,7 @@ # routines, as x86 does (see 6f121e548f83 ("x86, vdso: Reimplement vdso.so # preparation in build-time C")). ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ - -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id -n \ + -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id=sha1 -n \ $(btildflags-y) -T ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 --- linux-5.8.0.orig/arch/arm64/kernel/vdso32/Makefile +++ linux-5.8.0/arch/arm64/kernel/vdso32/Makefile @@ -128,7 +128,7 @@ VDSO_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 VDSO_LDFLAGS += -nostdlib -shared -mfloat-abi=soft VDSO_LDFLAGS += -Wl,--hash-style=sysv -VDSO_LDFLAGS += -Wl,--build-id +VDSO_LDFLAGS += -Wl,--build-id=sha1 VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd) @@ -208,7 +208,7 @@ cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ # Install commands for the unstripped file -quiet_cmd_vdso_install = INSTALL $@ +quiet_cmd_vdso_install = INSTALL32 $@ cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/vdso32.so vdso.so: $(obj)/vdso.so.dbg --- linux-5.8.0.orig/arch/arm64/kernel/vmlinux.lds.S +++ linux-5.8.0/arch/arm64/kernel/vmlinux.lds.S @@ -21,6 +21,13 @@ jiffies = jiffies_64; + +#define HYPERVISOR_EXTABLE \ + . = ALIGN(SZ_8); \ + __start___kvm_ex_table = .; \ + *(__kvm_ex_table) \ + __stop___kvm_ex_table = .; + #define HYPERVISOR_TEXT \ /* \ * Align to 4 KB so that \ @@ -36,6 +43,7 @@ __hyp_idmap_text_end = .; \ __hyp_text_start = .; \ *(.hyp.text) \ + HYPERVISOR_EXTABLE \ __hyp_text_end = .; #define IDMAP_TEXT \ --- linux-5.8.0.orig/arch/arm64/kvm/hyp/debug-sr.c +++ linux-5.8.0/arch/arm64/kvm/hyp/debug-sr.c @@ -168,6 +168,21 @@ write_sysreg(ctxt->sys_regs[MDCCINT_EL1], mdccint_el1); } +void __hyp_text __debug_save_host_buffers_nvhe(struct kvm_vcpu *vcpu) +{ + /* + * Non-VHE: Disable and flush SPE data generation + * VHE: The vcpu can run, but it can't hide. + */ + __debug_save_spe_nvhe(&vcpu->arch.host_debug_state.pmscr_el1); + +} + +void __hyp_text __debug_restore_host_buffers_nvhe(struct kvm_vcpu *vcpu) +{ + __debug_restore_spe_nvhe(vcpu->arch.host_debug_state.pmscr_el1); +} + void __hyp_text __debug_switch_to_guest(struct kvm_vcpu *vcpu) { struct kvm_cpu_context *host_ctxt; @@ -175,13 +190,6 @@ struct kvm_guest_debug_arch *host_dbg; struct kvm_guest_debug_arch *guest_dbg; - /* - * Non-VHE: Disable and flush SPE data generation - * VHE: The vcpu can run, but it can't hide. - */ - if (!has_vhe()) - __debug_save_spe_nvhe(&vcpu->arch.host_debug_state.pmscr_el1); - if (!(vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY)) return; @@ -201,8 +209,6 @@ struct kvm_guest_debug_arch *host_dbg; struct kvm_guest_debug_arch *guest_dbg; - if (!has_vhe()) - __debug_restore_spe_nvhe(vcpu->arch.host_debug_state.pmscr_el1); if (!(vcpu->arch.flags & KVM_ARM64_DEBUG_DIRTY)) return; --- linux-5.8.0.orig/arch/arm64/kvm/hyp/entry.S +++ linux-5.8.0/arch/arm64/kvm/hyp/entry.S @@ -198,20 +198,23 @@ // This is our single instruction exception window. A pending // SError is guaranteed to occur at the earliest when we unmask // it, and at the latest just after the ISB. - .global abort_guest_exit_start abort_guest_exit_start: isb - .global abort_guest_exit_end abort_guest_exit_end: msr daifset, #4 // Mask aborts + ret - // If the exception took place, restore the EL1 exception - // context so that we can report some information. - // Merge the exception code with the SError pending bit. - tbz x0, #ARM_EXIT_WITH_SERROR_BIT, 1f + _kvm_extable abort_guest_exit_start, 9997f + _kvm_extable abort_guest_exit_end, 9997f +9997: + msr daifset, #4 // Mask aborts + mov x0, #(1 << ARM_EXIT_WITH_SERROR_BIT) + + // restore the EL1 exception context so that we can report some + // information. Merge the exception code with the SError pending bit. msr elr_el2, x2 msr esr_el2, x3 msr spsr_el2, x4 --- linux-5.8.0.orig/arch/arm64/kvm/hyp/hyp-entry.S +++ linux-5.8.0/arch/arm64/kvm/hyp/hyp-entry.S @@ -15,6 +15,30 @@ #include #include +.macro save_caller_saved_regs_vect + /* x0 and x1 were saved in the vector entry */ + stp x2, x3, [sp, #-16]! + stp x4, x5, [sp, #-16]! + stp x6, x7, [sp, #-16]! + stp x8, x9, [sp, #-16]! + stp x10, x11, [sp, #-16]! + stp x12, x13, [sp, #-16]! + stp x14, x15, [sp, #-16]! + stp x16, x17, [sp, #-16]! +.endm + +.macro restore_caller_saved_regs_vect + ldp x16, x17, [sp], #16 + ldp x14, x15, [sp], #16 + ldp x12, x13, [sp], #16 + ldp x10, x11, [sp], #16 + ldp x8, x9, [sp], #16 + ldp x6, x7, [sp], #16 + ldp x4, x5, [sp], #16 + ldp x2, x3, [sp], #16 + ldp x0, x1, [sp], #16 +.endm + .text .pushsection .hyp.text, "ax" @@ -142,13 +166,19 @@ b __guest_exit el2_sync: - /* Check for illegal exception return, otherwise panic */ + /* Check for illegal exception return */ mrs x0, spsr_el2 + tbnz x0, #20, 1f - /* if this was something else, then panic! */ - tst x0, #PSR_IL_BIT - b.eq __hyp_panic + save_caller_saved_regs_vect + stp x29, x30, [sp, #-16]! + bl kvm_unexpected_el2_exception + ldp x29, x30, [sp], #16 + restore_caller_saved_regs_vect + eret + +1: /* Let's attempt a recovery from the illegal exception return */ get_vcpu_ptr x1, x0 mov x0, #ARM_EXCEPTION_IL @@ -156,27 +186,14 @@ el2_error: - ldp x0, x1, [sp], #16 + save_caller_saved_regs_vect + stp x29, x30, [sp, #-16]! + + bl kvm_unexpected_el2_exception + + ldp x29, x30, [sp], #16 + restore_caller_saved_regs_vect - /* - * Only two possibilities: - * 1) Either we come from the exit path, having just unmasked - * PSTATE.A: change the return code to an EL2 fault, and - * carry on, as we're already in a sane state to handle it. - * 2) Or we come from anywhere else, and that's a bug: we panic. - * - * For (1), x0 contains the original return code and x1 doesn't - * contain anything meaningful at that stage. We can reuse them - * as temp registers. - * For (2), who cares? - */ - mrs x0, elr_el2 - adr x1, abort_guest_exit_start - cmp x0, x1 - adr x1, abort_guest_exit_end - ccmp x0, x1, #4, ne - b.ne __hyp_panic - mov x0, #(1 << ARM_EXIT_WITH_SERROR_BIT) eret sb --- linux-5.8.0.orig/arch/arm64/kvm/hyp/switch.c +++ linux-5.8.0/arch/arm64/kvm/hyp/switch.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,9 @@ #include #include +extern struct exception_table_entry __start___kvm_ex_table; +extern struct exception_table_entry __stop___kvm_ex_table; + /* Check whether the FP regs were dirtied while in the host-side run loop: */ static bool __hyp_text update_fp_enabled(struct kvm_vcpu *vcpu) { @@ -299,10 +303,10 @@ * saved the guest context yet, and we may return early... */ par = read_sysreg(par_el1); - asm volatile("at s1e1r, %0" : : "r" (far)); - isb(); - - tmp = read_sysreg(par_el1); + if (!__kvm_at("s1e1r", far)) + tmp = read_sysreg(par_el1); + else + tmp = SYS_PAR_EL1_F; /* back to the guest */ write_sysreg(par, par_el1); if (unlikely(tmp & SYS_PAR_EL1_F)) @@ -595,7 +599,7 @@ kvm_vcpu_trap_get_fault_type(vcpu) == FSC_FAULT && kvm_vcpu_dabt_isvalid(vcpu) && !kvm_vcpu_dabt_isextabt(vcpu) && - !kvm_vcpu_dabt_iss1tw(vcpu); + !kvm_vcpu_abt_iss1tw(vcpu); if (valid) { int ret = __vgic_v2_perform_cpuif_access(vcpu); @@ -827,6 +831,15 @@ __sysreg32_restore_state(vcpu); __sysreg_restore_state_nvhe(guest_ctxt); + /* + * We must flush and disable the SPE buffer for nVHE, as + * the translation regime(EL1&0) is going to be loaded with + * that of the guest. And we must do this before we change the + * translation regime to EL2 (via MDCR_EL2_EPB == 0) and + * before we load guest Stage1. + */ + __debug_save_host_buffers_nvhe(vcpu); + __activate_vm(kern_hyp_va(vcpu->kvm)); __activate_traps(vcpu); @@ -859,11 +872,13 @@ if (vcpu->arch.flags & KVM_ARM64_FP_ENABLED) __fpsimd_save_fpexc32(vcpu); + __debug_switch_to_host(vcpu); + /* * This must come after restoring the host sysregs, since a non-VHE * system may enable SPE here and make use of the TTBRs. */ - __debug_switch_to_host(vcpu); + __debug_restore_host_buffers_nvhe(vcpu); if (pmu_switch_needed) __pmu_switch_to_host(host_ctxt); @@ -897,7 +912,7 @@ * making sure it is a kernel address and not a PC-relative * reference. */ - asm volatile("ldr %0, =__hyp_panic_string" : "=r" (str_va)); + asm volatile("ldr %0, =%1" : "=r" (str_va) : "S" (__hyp_panic_string)); __hyp_do_panic(str_va, spsr, elr, @@ -934,3 +949,30 @@ unreachable(); } + +asmlinkage void __hyp_text kvm_unexpected_el2_exception(void) +{ + unsigned long addr, fixup; + struct kvm_cpu_context *host_ctxt; + struct exception_table_entry *entry, *end; + unsigned long elr_el2 = read_sysreg(elr_el2); + + entry = hyp_symbol_addr(__start___kvm_ex_table); + end = hyp_symbol_addr(__stop___kvm_ex_table); + host_ctxt = &__hyp_this_cpu_ptr(kvm_host_data)->host_ctxt; + + while (entry < end) { + addr = (unsigned long)&entry->insn + entry->insn; + fixup = (unsigned long)&entry->fixup + entry->fixup; + + if (addr != elr_el2) { + entry++; + continue; + } + + write_sysreg(fixup, elr_el2); + return; + } + + hyp_panic(host_ctxt); +} --- linux-5.8.0.orig/arch/arm64/kvm/hypercalls.c +++ linux-5.8.0/arch/arm64/kvm/hypercalls.c @@ -31,7 +31,7 @@ val = SMCCC_RET_SUCCESS; break; case KVM_BP_HARDEN_NOT_REQUIRED: - val = SMCCC_RET_NOT_REQUIRED; + val = SMCCC_ARCH_WORKAROUND_RET_UNAFFECTED; break; } break; --- linux-5.8.0.orig/arch/arm64/kvm/mmio.c +++ linux-5.8.0/arch/arm64/kvm/mmio.c @@ -146,7 +146,7 @@ } /* Page table accesses IO mem: tell guest to fix its TTBR */ - if (kvm_vcpu_dabt_iss1tw(vcpu)) { + if (kvm_vcpu_abt_iss1tw(vcpu)) { kvm_inject_dabt(vcpu, kvm_vcpu_get_hfar(vcpu)); return 1; } --- linux-5.8.0.orig/arch/arm64/kvm/mmu.c +++ linux-5.8.0/arch/arm64/kvm/mmu.c @@ -365,7 +365,8 @@ * destroying the VM), otherwise another faulting VCPU may come in and mess * with things behind our backs. */ -static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size) +static void __unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size, + bool may_block) { pgd_t *pgd; phys_addr_t addr = start, end = start + size; @@ -390,11 +391,16 @@ * If the range is too large, release the kvm->mmu_lock * to prevent starvation and lockup detector warnings. */ - if (next != end) + if (may_block && next != end) cond_resched_lock(&kvm->mmu_lock); } while (pgd++, addr = next, addr != end); } +static void unmap_stage2_range(struct kvm *kvm, phys_addr_t start, u64 size) +{ + __unmap_stage2_range(kvm, start, size, true); +} + static void stage2_flush_ptes(struct kvm *kvm, pmd_t *pmd, phys_addr_t addr, phys_addr_t end) { @@ -1839,7 +1845,7 @@ unsigned long vma_pagesize, flags = 0; write_fault = kvm_is_write_fault(vcpu); - exec_fault = kvm_vcpu_trap_is_iabt(vcpu); + exec_fault = kvm_vcpu_trap_is_exec_fault(vcpu); VM_BUG_ON(write_fault && exec_fault); if (fault_status == FSC_PERM && !write_fault && !exec_fault) { @@ -1867,6 +1873,7 @@ !fault_supports_stage2_huge_mapping(memslot, hva, vma_pagesize)) { force_pte = true; vma_pagesize = PAGE_SIZE; + vma_shift = PAGE_SHIFT; } /* @@ -1910,6 +1917,7 @@ if (kvm_is_device_pfn(pfn)) { mem_type = PAGE_S2_DEVICE; flags |= KVM_S2PTE_FLAG_IS_IOMAP; + force_pte = true; } else if (logging_active) { /* * Faults on pages in a memslot with logging enabled @@ -1961,7 +1969,12 @@ (fault_status == FSC_PERM && stage2_is_exec(kvm, fault_ipa, vma_pagesize)); - if (vma_pagesize == PUD_SIZE) { + /* + * If PUD_SIZE == PMD_SIZE, there is no real PUD level, and + * all we have is a 2-level page table. Trying to map a PUD in + * this case would be fatally wrong. + */ + if (PUD_SIZE != PMD_SIZE && vma_pagesize == PUD_SIZE) { pud_t new_pud = kvm_pfn_pud(pfn, mem_type); new_pud = kvm_pud_mkhuge(new_pud); @@ -2198,18 +2211,21 @@ static int kvm_unmap_hva_handler(struct kvm *kvm, gpa_t gpa, u64 size, void *data) { - unmap_stage2_range(kvm, gpa, size); + unsigned flags = *(unsigned *)data; + bool may_block = flags & MMU_NOTIFIER_RANGE_BLOCKABLE; + + __unmap_stage2_range(kvm, gpa, size, may_block); return 0; } int kvm_unmap_hva_range(struct kvm *kvm, - unsigned long start, unsigned long end) + unsigned long start, unsigned long end, unsigned flags) { if (!kvm->arch.pgd) return 0; trace_kvm_unmap_hva_range(start, end); - handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, NULL); + handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, &flags); return 0; } @@ -2453,8 +2469,7 @@ * Prevent userspace from creating a memory region outside of the IPA * space addressable by the KVM guest IPA space. */ - if (memslot->base_gfn + memslot->npages >= - (kvm_phys_size(kvm) >> PAGE_SHIFT)) + if ((memslot->base_gfn + memslot->npages) > (kvm_phys_size(kvm) >> PAGE_SHIFT)) return -EFAULT; mmap_read_lock(current->mm); --- linux-5.8.0.orig/arch/arm64/kvm/reset.c +++ linux-5.8.0/arch/arm64/kvm/reset.c @@ -406,10 +406,10 @@ pr_info("kvm: Limiting the IPA size due to kernel %s Address limit\n", (va_max < pa_max) ? "Virtual" : "Physical"); - WARN(ipa_max < KVM_PHYS_SHIFT, - "KVM IPA limit (%d bit) is smaller than default size\n", ipa_max); kvm_ipa_limit = ipa_max; - kvm_info("IPA Size Limit: %dbits\n", kvm_ipa_limit); + kvm_info("IPA Size Limit: %d bits%s\n", kvm_ipa_limit, + ((kvm_ipa_limit < KVM_PHYS_SHIFT) ? + " (Reduced IPA size, limited VM/VMM compatibility)" : "")); return 0; } @@ -438,6 +438,11 @@ 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); --- linux-5.8.0.orig/arch/arm64/kvm/sys_regs.c +++ linux-5.8.0/arch/arm64/kvm/sys_regs.c @@ -636,6 +636,10 @@ { u64 pmcr, val; + /* No PMU available, PMCR_EL0 may UNDEF... */ + if (!kvm_arm_support_pmu_v3()) + return; + pmcr = read_sysreg(pmcr_el0); /* * Writable bits of PMCR_EL0 (ARMV8_PMU_PMCR_MASK) are reset to UNKNOWN @@ -1166,16 +1170,6 @@ return REG_HIDDEN_USER | REG_HIDDEN_GUEST; } -/* Visibility overrides for SVE-specific ID registers */ -static unsigned int sve_id_visibility(const struct kvm_vcpu *vcpu, - const struct sys_reg_desc *rd) -{ - if (vcpu_has_sve(vcpu)) - return 0; - - return REG_HIDDEN_USER; -} - /* Generate the emulated ID_AA64ZFR0_EL1 value exposed to the guest */ static u64 guest_id_aa64zfr0_el1(const struct kvm_vcpu *vcpu) { @@ -1202,9 +1196,6 @@ { u64 val; - if (WARN_ON(!vcpu_has_sve(vcpu))) - return -ENOENT; - val = guest_id_aa64zfr0_el1(vcpu); return reg_to_user(uaddr, &val, reg->id); } @@ -1217,9 +1208,6 @@ int err; u64 val; - if (WARN_ON(!vcpu_has_sve(vcpu))) - return -ENOENT; - err = reg_from_user(&val, uaddr, id); if (err) return err; @@ -1482,7 +1470,7 @@ ID_SANITISED(ID_AA64PFR1_EL1), ID_UNALLOCATED(4,2), ID_UNALLOCATED(4,3), - { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, .visibility = sve_id_visibility }, + { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, }, ID_UNALLOCATED(4,5), ID_UNALLOCATED(4,6), ID_UNALLOCATED(4,7), @@ -1853,9 +1841,9 @@ { Op1( 0), CRn( 0), CRm( 1), Op2( 0), trap_raz_wi }, DBG_BCR_BVR_WCR_WVR(1), /* DBGDCCINT */ - { Op1( 0), CRn( 0), CRm( 2), Op2( 0), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 2), Op2( 0), trap_debug32, NULL, cp14_DBGDCCINT }, /* DBGDSCRext */ - { Op1( 0), CRn( 0), CRm( 2), Op2( 2), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 2), Op2( 2), trap_debug32, NULL, cp14_DBGDSCRext }, DBG_BCR_BVR_WCR_WVR(2), /* DBGDTR[RT]Xint */ { Op1( 0), CRn( 0), CRm( 3), Op2( 0), trap_raz_wi }, @@ -1870,7 +1858,7 @@ { Op1( 0), CRn( 0), CRm( 6), Op2( 2), trap_raz_wi }, DBG_BCR_BVR_WCR_WVR(6), /* DBGVCR */ - { Op1( 0), CRn( 0), CRm( 7), Op2( 0), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 7), Op2( 0), trap_debug32, NULL, cp14_DBGVCR }, DBG_BCR_BVR_WCR_WVR(7), DBG_BCR_BVR_WCR_WVR(8), DBG_BCR_BVR_WCR_WVR(9), @@ -1960,6 +1948,7 @@ { Op1( 0), CRn( 2), CRm( 0), Op2( 0), access_vm_reg, NULL, c2_TTBR0 }, { Op1( 0), CRn( 2), CRm( 0), Op2( 1), access_vm_reg, NULL, c2_TTBR1 }, { Op1( 0), CRn( 2), CRm( 0), Op2( 2), access_vm_reg, NULL, c2_TTBCR }, + { Op1( 0), CRn( 2), CRm( 0), Op2( 3), access_vm_reg, NULL, c2_TTBCR2 }, { Op1( 0), CRn( 3), CRm( 0), Op2( 0), access_vm_reg, NULL, c3_DACR }, { Op1( 0), CRn( 5), CRm( 0), Op2( 0), access_vm_reg, NULL, c5_DFSR }, { Op1( 0), CRn( 5), CRm( 0), Op2( 1), access_vm_reg, NULL, c5_IFSR }, --- linux-5.8.0.orig/arch/arm64/kvm/trace_arm.h +++ linux-5.8.0/arch/arm64/kvm/trace_arm.h @@ -2,6 +2,7 @@ #if !defined(_TRACE_ARM_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ARM_ARM64_KVM_H +#include #include #include --- linux-5.8.0.orig/arch/arm64/kvm/vgic/vgic-mmio-v3.c +++ linux-5.8.0/arch/arm64/kvm/vgic/vgic-mmio-v3.c @@ -273,6 +273,23 @@ return extract_bytes(value, addr & 7, len); } +static unsigned long vgic_uaccess_read_v3r_typer(struct kvm_vcpu *vcpu, + gpa_t addr, unsigned int len) +{ + unsigned long mpidr = kvm_vcpu_get_mpidr_aff(vcpu); + int target_vcpu_id = vcpu->vcpu_id; + u64 value; + + value = (u64)(mpidr & GENMASK(23, 0)) << 32; + value |= ((target_vcpu_id & 0xffff) << 8); + + if (vgic_has_its(vcpu->kvm)) + value |= GICR_TYPER_PLPIS; + + /* reporting of the Last bit is not supported for userspace */ + return extract_bytes(value, addr & 7, len); +} + static unsigned long vgic_mmio_read_v3r_iidr(struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len) { @@ -593,8 +610,9 @@ REGISTER_DESC_WITH_LENGTH(GICR_IIDR, vgic_mmio_read_v3r_iidr, vgic_mmio_write_wi, 4, VGIC_ACCESS_32bit), - REGISTER_DESC_WITH_LENGTH(GICR_TYPER, - vgic_mmio_read_v3r_typer, vgic_mmio_write_wi, 8, + REGISTER_DESC_WITH_LENGTH_UACCESS(GICR_TYPER, + vgic_mmio_read_v3r_typer, vgic_mmio_write_wi, + vgic_uaccess_read_v3r_typer, vgic_mmio_uaccess_write_wi, 8, VGIC_ACCESS_64bit | VGIC_ACCESS_32bit), REGISTER_DESC_WITH_LENGTH(GICR_WAKER, vgic_mmio_read_raz, vgic_mmio_write_wi, 4, --- linux-5.8.0.orig/arch/arm64/lib/memcpy.S +++ linux-5.8.0/arch/arm64/lib/memcpy.S @@ -56,9 +56,8 @@ stp \reg1, \reg2, [\ptr], \val .endm - .weak memcpy SYM_FUNC_START_ALIAS(__memcpy) -SYM_FUNC_START_PI(memcpy) +SYM_FUNC_START_WEAK_PI(memcpy) #include "copy_template.S" ret SYM_FUNC_END_PI(memcpy) --- linux-5.8.0.orig/arch/arm64/lib/memmove.S +++ linux-5.8.0/arch/arm64/lib/memmove.S @@ -45,9 +45,8 @@ D_l .req x13 D_h .req x14 - .weak memmove SYM_FUNC_START_ALIAS(__memmove) -SYM_FUNC_START_PI(memmove) +SYM_FUNC_START_WEAK_PI(memmove) cmp dstin, src b.lo __memcpy add tmp1, src, count --- linux-5.8.0.orig/arch/arm64/lib/memset.S +++ linux-5.8.0/arch/arm64/lib/memset.S @@ -42,9 +42,8 @@ tmp3w .req w9 tmp3 .req x9 - .weak memset SYM_FUNC_START_ALIAS(__memset) -SYM_FUNC_START_PI(memset) +SYM_FUNC_START_WEAK_PI(memset) mov dst, dstin /* Preserve return value. */ and A_lw, val, #255 orr A_lw, A_lw, A_lw, lsl #8 --- linux-5.8.0.orig/arch/arm64/mm/init.c +++ linux-5.8.0/arch/arm64/mm/init.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -43,8 +44,6 @@ #include #include -#define ARM64_ZONE_DMA_BITS 30 - /* * We need to be able to catch inadvertent references to memstart_addr * that occur (potentially in generic code) before arm64_memblock_init() @@ -54,12 +53,6 @@ s64 memstart_addr __ro_after_init = -1; EXPORT_SYMBOL(memstart_addr); -s64 physvirt_offset __ro_after_init; -EXPORT_SYMBOL(physvirt_offset); - -struct page *vmemmap __ro_after_init; -EXPORT_SYMBOL(vmemmap); - /* * We create both ZONE_DMA and ZONE_DMA32. ZONE_DMA covers the first 1G of * memory as some devices, namely the Raspberry Pi 4, have peripherals with @@ -67,7 +60,7 @@ * bit addressable memory area. */ phys_addr_t arm64_dma_phys_limit __ro_after_init; -static phys_addr_t arm64_dma32_phys_limit __ro_after_init; +phys_addr_t arm64_dma32_phys_limit __ro_after_init; #ifdef CONFIG_KEXEC_CORE /* @@ -195,8 +188,14 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) { unsigned long max_zone_pfns[MAX_NR_ZONES] = {0}; + unsigned int __maybe_unused acpi_zone_dma_bits; + unsigned int __maybe_unused dt_zone_dma_bits; #ifdef CONFIG_ZONE_DMA + acpi_zone_dma_bits = fls64(acpi_iort_dma_get_max_cpu_address()); + dt_zone_dma_bits = fls64(of_dma_get_max_cpu_address(NULL)); + zone_dma_bits = min3(32U, dt_zone_dma_bits, acpi_zone_dma_bits); + arm64_dma_phys_limit = max_zone_phys(zone_dma_bits); max_zone_pfns[ZONE_DMA] = PFN_DOWN(arm64_dma_phys_limit); #endif #ifdef CONFIG_ZONE_DMA32 @@ -220,6 +219,18 @@ if (!valid_section(__pfn_to_section(pfn))) return 0; + + /* + * ZONE_DEVICE memory does not have the memblock entries. + * memblock_is_map_memory() check for ZONE_DEVICE based + * addresses will always fail. Even the normal hotplugged + * memory will never have MEMBLOCK_NOMAP flag set in their + * memblock entries. Skip memblock search for all non early + * memory sections covering all of hotplug memory including + * both normal and ZONE_DEVICE based. + */ + if (!early_section(__pfn_to_section(pfn))) + return pfn_section_valid(__pfn_to_section(pfn), pfn); #endif return memblock_is_map_memory(addr); } @@ -290,20 +301,6 @@ memstart_addr = round_down(memblock_start_of_DRAM(), ARM64_MEMSTART_ALIGN); - physvirt_offset = PHYS_OFFSET - PAGE_OFFSET; - - vmemmap = ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT)); - - /* - * If we are running with a 52-bit kernel VA config on a system that - * does not support it, we have to offset our vmemmap and physvirt_offset - * s.t. we avoid the 52-bit portion of the direct linear map - */ - if (IS_ENABLED(CONFIG_ARM64_VA_BITS_52) && (vabits_actual != 52)) { - vmemmap += (_PAGE_OFFSET(48) - _PAGE_OFFSET(52)) >> PAGE_SHIFT; - physvirt_offset = PHYS_OFFSET - _PAGE_OFFSET(48); - } - /* * Remove the memory that we will not be able to cover with the * linear mapping. Take care not to clip the kernel which may be @@ -319,6 +316,16 @@ } /* + * If we are running with a 52-bit kernel VA config on a system that + * does not support it, we have to place the available physical + * memory in the 48-bit addressable part of the linear region, i.e., + * we have to move it upward. Since memstart_addr represents the + * physical address of PAGE_OFFSET, we have to *subtract* from it. + */ + if (IS_ENABLED(CONFIG_ARM64_VA_BITS_52) && (vabits_actual != 52)) + memstart_addr -= _PAGE_OFFSET(48) - _PAGE_OFFSET(52); + + /* * Apply the memory limit if it was set. Since the kernel may be loaded * high up in memory, add back the kernel region that must be accessible * via the linear mapping. @@ -387,18 +394,11 @@ early_init_fdt_scan_reserved_mem(); - if (IS_ENABLED(CONFIG_ZONE_DMA)) { - zone_dma_bits = ARM64_ZONE_DMA_BITS; - arm64_dma_phys_limit = max_zone_phys(ARM64_ZONE_DMA_BITS); - } - if (IS_ENABLED(CONFIG_ZONE_DMA32)) arm64_dma32_phys_limit = max_zone_phys(32); else arm64_dma32_phys_limit = PHYS_MASK + 1; - reserve_crashkernel(); - reserve_elfcorehdr(); high_memory = __va(memblock_end_of_DRAM() - 1) + 1; @@ -438,6 +438,12 @@ sparse_init(); zone_sizes_init(min, max); + /* + * request_standard_resources() depends on crashkernel's memory being + * reserved, so do it here. + */ + reserve_crashkernel(); + memblock_dump_all(); } --- linux-5.8.0.orig/arch/arm64/mm/mmu.c +++ linux-5.8.0/arch/arm64/mm/mmu.c @@ -39,7 +39,7 @@ #define NO_BLOCK_MAPPINGS BIT(0) #define NO_CONT_MAPPINGS BIT(1) -u64 idmap_t0sz = TCR_T0SZ(VA_BITS); +u64 idmap_t0sz = TCR_T0SZ(VA_BITS_MIN); u64 idmap_ptrs_per_pgd = PTRS_PER_PGD; u64 __section(".mmuoff.data.write") vabits_actual; @@ -1414,11 +1414,44 @@ free_empty_tables(start, end, PAGE_OFFSET, PAGE_END); } +static bool inside_linear_region(u64 start, u64 size) +{ + u64 start_linear_pa = __pa(_PAGE_OFFSET(vabits_actual)); + u64 end_linear_pa = __pa(PAGE_END - 1); + + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { + /* + * Check for a wrap, it is possible because of randomized linear + * mapping the start physical address is actually bigger than + * the end physical address. In this case set start to zero + * because [0, end_linear_pa] range must still be able to cover + * all addressable physical addresses. + */ + if (start_linear_pa > end_linear_pa) + start_linear_pa = 0; + } + + WARN_ON(start_linear_pa > end_linear_pa); + + /* + * Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] + * accommodating both its ends but excluding PAGE_END. Max physical + * range which can be mapped inside this linear mapping range, must + * also be derived from its end points. + */ + return start >= start_linear_pa && (start + size - 1) <= end_linear_pa; +} + int arch_add_memory(int nid, u64 start, u64 size, struct mhp_params *params) { int ret, flags = 0; + if (!inside_linear_region(start, size)) { + pr_err("[%llx %llx] is outside linear mapping region\n", start, start + size); + return -EINVAL; + } + if (rodata_full || debug_pagealloc_enabled()) flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; --- linux-5.8.0.orig/arch/arm64/mm/numa.c +++ linux-5.8.0/arch/arm64/mm/numa.c @@ -46,7 +46,11 @@ */ const struct cpumask *cpumask_of_node(int node) { - if (WARN_ON(node >= nr_node_ids)) + + if (node == NUMA_NO_NODE) + return cpu_all_mask; + + if (WARN_ON(node < 0 || node >= nr_node_ids)) return cpu_none_mask; if (WARN_ON(node_to_cpumask_map[node] == NULL)) --- linux-5.8.0.orig/arch/arm64/mm/physaddr.c +++ linux-5.8.0/arch/arm64/mm/physaddr.c @@ -9,7 +9,7 @@ phys_addr_t __virt_to_phys(unsigned long x) { - WARN(!__is_lm_address(x), + WARN(!__is_lm_address(__tag_reset(x)), "virt_to_phys used for non-linear address: %pK (%pS)\n", (void *)x, (void *)x); --- linux-5.8.0.orig/arch/arm64/net/bpf_jit_comp.c +++ linux-5.8.0/arch/arm64/net/bpf_jit_comp.c @@ -141,14 +141,17 @@ } } -static inline int bpf2a64_offset(int bpf_to, int bpf_from, +static inline int bpf2a64_offset(int bpf_insn, int off, const struct jit_ctx *ctx) { - int to = ctx->offset[bpf_to]; - /* -1 to account for the Branch instruction */ - int from = ctx->offset[bpf_from] - 1; - - return to - from; + /* BPF JMP offset is relative to the next instruction */ + bpf_insn++; + /* + * Whereas arm64 branch instructions encode the offset + * from the branch itself, so we must subtract 1 from the + * instruction offset. + */ + return ctx->offset[bpf_insn + off] - (ctx->offset[bpf_insn] - 1); } static void jit_fill_hole(void *area, unsigned int size) @@ -578,7 +581,7 @@ /* JUMP off */ case BPF_JMP | BPF_JA: - jmp_offset = bpf2a64_offset(i + off, i, ctx); + jmp_offset = bpf2a64_offset(i, off, ctx); check_imm26(jmp_offset); emit(A64_B(jmp_offset), ctx); break; @@ -605,7 +608,7 @@ case BPF_JMP32 | BPF_JSLE | BPF_X: emit(A64_CMP(is64, dst, src), ctx); emit_cond_jmp: - jmp_offset = bpf2a64_offset(i + off, i, ctx); + jmp_offset = bpf2a64_offset(i, off, ctx); check_imm19(jmp_offset); switch (BPF_OP(code)) { case BPF_JEQ: @@ -837,10 +840,21 @@ const struct bpf_prog *prog = ctx->prog; int i; + /* + * - offset[0] offset of the end of prologue, + * start of the 1st instruction. + * - offset[1] - offset of the end of 1st instruction, + * start of the 2nd instruction + * [....] + * - offset[3] - offset of the end of 3rd instruction, + * start of 4th instruction + */ for (i = 0; i < prog->len; i++) { const struct bpf_insn *insn = &prog->insnsi[i]; int ret; + if (ctx->image == NULL) + ctx->offset[i] = ctx->idx; ret = build_insn(insn, ctx, extra_pass); if (ret > 0) { i++; @@ -848,11 +862,16 @@ ctx->offset[i] = ctx->idx; continue; } - if (ctx->image == NULL) - ctx->offset[i] = ctx->idx; if (ret) return ret; } + /* + * offset is allocated with prog->len + 1 so fill in + * the last element with the offset after the last + * instruction (end of program) + */ + if (ctx->image == NULL) + ctx->offset[i] = ctx->idx; return 0; } @@ -928,7 +947,7 @@ memset(&ctx, 0, sizeof(ctx)); ctx.prog = prog; - ctx.offset = kcalloc(prog->len, sizeof(int), GFP_KERNEL); + ctx.offset = kcalloc(prog->len + 1, sizeof(int), GFP_KERNEL); if (ctx.offset == NULL) { prog = orig_prog; goto out_off; @@ -1008,7 +1027,7 @@ prog->jited_len = image_size; if (!prog->is_func || extra_pass) { - bpf_prog_fill_jited_linfo(prog, ctx.offset); + bpf_prog_fill_jited_linfo(prog, ctx.offset + 1); out_off: kfree(ctx.offset); kfree(jit_data); --- linux-5.8.0.orig/arch/csky/include/asm/Kbuild +++ linux-5.8.0/arch/csky/include/asm/Kbuild @@ -2,7 +2,6 @@ generic-y += asm-offsets.h generic-y += gpio.h generic-y += kvm_para.h -generic-y += local64.h generic-y += qrwlock.h generic-y += user.h generic-y += vmlinux.lds.h --- linux-5.8.0.orig/arch/h8300/include/asm/Kbuild +++ linux-5.8.0/arch/h8300/include/asm/Kbuild @@ -2,7 +2,6 @@ generic-y += asm-offsets.h generic-y += extable.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += parport.h generic-y += spinlock.h --- linux-5.8.0.orig/arch/h8300/kernel/asm-offsets.c +++ linux-5.8.0/arch/h8300/kernel/asm-offsets.c @@ -63,6 +63,9 @@ OFFSET(TI_FLAGS, thread_info, flags); OFFSET(TI_CPU, thread_info, cpu); OFFSET(TI_PRE, thread_info, preempt_count); +#ifdef CONFIG_PREEMPTION + DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); +#endif return 0; } --- linux-5.8.0.orig/arch/hexagon/include/asm/Kbuild +++ linux-5.8.0/arch/hexagon/include/asm/Kbuild @@ -2,5 +2,4 @@ generic-y += extable.h generic-y += iomap.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h --- linux-5.8.0.orig/arch/ia64/include/asm/pgtable.h +++ linux-5.8.0/arch/ia64/include/asm/pgtable.h @@ -366,6 +366,15 @@ } #define pgd_index pgd_index +/* + * In the kernel's mapped region we know everything is in region number 5, so + * as an optimisation its PGD already points to the area for that region. + * However, this also means that we cannot use pgd_index() and we must + * never add the region here. + */ +#define pgd_offset_k(addr) \ + (init_mm.pgd + (((addr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))) + /* Look up a pgd entry in the gate area. On IA-64, the gate-area resides in the kernel-mapped segment, hence we use pgd_offset_k() here. */ --- linux-5.8.0.orig/arch/ia64/include/asm/syscall.h +++ linux-5.8.0/arch/ia64/include/asm/syscall.h @@ -32,7 +32,7 @@ static inline long syscall_get_error(struct task_struct *task, struct pt_regs *regs) { - return regs->r10 == -1 ? regs->r8:0; + return regs->r10 == -1 ? -regs->r8:0; } static inline long syscall_get_return_value(struct task_struct *task, --- linux-5.8.0.orig/arch/ia64/kernel/Makefile +++ linux-5.8.0/arch/ia64/kernel/Makefile @@ -41,7 +41,7 @@ endif obj-$(CONFIG_INTEL_IOMMU) += pci-dma.o -obj-$(CONFIG_BINFMT_ELF) += elfcore.o +obj-$(CONFIG_ELF_CORE) += elfcore.o # fp_emulate() expects f2-f5,f16-f31 to contain the user-level state. CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31 --- linux-5.8.0.orig/arch/ia64/kernel/err_inject.c +++ linux-5.8.0/arch/ia64/kernel/err_inject.c @@ -59,7 +59,7 @@ char *buf) \ { \ u32 cpu=dev->id; \ - return sprintf(buf, "%lx\n", name[cpu]); \ + return sprintf(buf, "%llx\n", name[cpu]); \ } #define store(name) \ @@ -86,9 +86,9 @@ #ifdef ERR_INJ_DEBUG printk(KERN_DEBUG "pal_mc_err_inject for cpu%d:\n", cpu); - printk(KERN_DEBUG "err_type_info=%lx,\n", err_type_info[cpu]); - printk(KERN_DEBUG "err_struct_info=%lx,\n", err_struct_info[cpu]); - printk(KERN_DEBUG "err_data_buffer=%lx, %lx, %lx.\n", + printk(KERN_DEBUG "err_type_info=%llx,\n", err_type_info[cpu]); + printk(KERN_DEBUG "err_struct_info=%llx,\n", err_struct_info[cpu]); + printk(KERN_DEBUG "err_data_buffer=%llx, %llx, %llx.\n", err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3); @@ -117,8 +117,8 @@ #ifdef ERR_INJ_DEBUG printk(KERN_DEBUG "Returns: status=%d,\n", (int)status[cpu]); - printk(KERN_DEBUG "capabilities=%lx,\n", capabilities[cpu]); - printk(KERN_DEBUG "resources=%lx\n", resources[cpu]); + printk(KERN_DEBUG "capabilities=%llx,\n", capabilities[cpu]); + printk(KERN_DEBUG "resources=%llx\n", resources[cpu]); #endif return size; } @@ -131,7 +131,7 @@ char *buf) { unsigned int cpu=dev->id; - return sprintf(buf, "%lx\n", phys_addr[cpu]); + return sprintf(buf, "%llx\n", phys_addr[cpu]); } static ssize_t @@ -145,7 +145,7 @@ ret = get_user_pages_fast(virt_addr, 1, FOLL_WRITE, NULL); if (ret<=0) { #ifdef ERR_INJ_DEBUG - printk("Virtual address %lx is not existing.\n",virt_addr); + printk("Virtual address %llx is not existing.\n", virt_addr); #endif return -EINVAL; } @@ -163,7 +163,7 @@ { unsigned int cpu=dev->id; - return sprintf(buf, "%lx, %lx, %lx\n", + return sprintf(buf, "%llx, %llx, %llx\n", err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3); @@ -178,13 +178,13 @@ int ret; #ifdef ERR_INJ_DEBUG - printk("write err_data_buffer=[%lx,%lx,%lx] on cpu%d\n", + printk("write err_data_buffer=[%llx,%llx,%llx] on cpu%d\n", err_data_buffer[cpu].data1, err_data_buffer[cpu].data2, err_data_buffer[cpu].data3, cpu); #endif - ret=sscanf(buf, "%lx, %lx, %lx", + ret = sscanf(buf, "%llx, %llx, %llx", &err_data_buffer[cpu].data1, &err_data_buffer[cpu].data2, &err_data_buffer[cpu].data3); --- linux-5.8.0.orig/arch/ia64/kernel/kprobes.c +++ linux-5.8.0/arch/ia64/kernel/kprobes.c @@ -396,83 +396,9 @@ { } -/* - * At this point the target function has been tricked into - * returning into our trampoline. Lookup the associated instance - * and then: - * - call the handler function - * - cleanup by marking the instance as unused - * - long jump back to the original return address - */ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs) { - struct kretprobe_instance *ri = NULL; - struct hlist_head *head, empty_rp; - struct hlist_node *tmp; - unsigned long flags, orig_ret_address = 0; - unsigned long trampoline_address = - ((struct fnptr *)kretprobe_trampoline)->ip; - - INIT_HLIST_HEAD(&empty_rp); - kretprobe_hash_lock(current, &head, &flags); - - /* - * It is possible to have multiple instances associated with a given - * task either because an multiple functions in the call path - * have a return probe installed on them, and/or more than one return - * return probe was registered for a target function. - * - * We can handle this because: - * - instances are always inserted at the head of the list - * - when multiple return probes are registered for the same - * function, the first instance's ret_addr will point to the - * real return address, and all the rest will point to - * kretprobe_trampoline - */ - hlist_for_each_entry_safe(ri, tmp, head, hlist) { - if (ri->task != current) - /* another task is sharing our hash bucket */ - continue; - - orig_ret_address = (unsigned long)ri->ret_addr; - if (orig_ret_address != trampoline_address) - /* - * This is the real return address. Any other - * instances associated with this task are for - * other calls deeper on the call stack - */ - break; - } - - regs->cr_iip = orig_ret_address; - - hlist_for_each_entry_safe(ri, tmp, head, hlist) { - if (ri->task != current) - /* another task is sharing our hash bucket */ - continue; - - if (ri->rp && ri->rp->handler) - ri->rp->handler(ri, regs); - - orig_ret_address = (unsigned long)ri->ret_addr; - recycle_rp_inst(ri, &empty_rp); - - if (orig_ret_address != trampoline_address) - /* - * This is the real return address. Any other - * instances associated with this task are for - * other calls deeper on the call stack - */ - break; - } - kretprobe_assert(ri, orig_ret_address, trampoline_address); - - kretprobe_hash_unlock(current, &flags); - - hlist_for_each_entry_safe(ri, tmp, &empty_rp, hlist) { - hlist_del(&ri->hlist); - kfree(ri); - } + regs->cr_iip = __kretprobe_trampoline_handler(regs, kretprobe_trampoline, NULL); /* * By returning a non-zero value, we are telling * kprobe_handler() that we don't want the post_handler @@ -485,6 +411,7 @@ struct pt_regs *regs) { ri->ret_addr = (kprobe_opcode_t *)regs->b0; + ri->fp = NULL; /* Replace the return addr with trampoline addr */ regs->b0 = ((struct fnptr *)kretprobe_trampoline)->ip; --- linux-5.8.0.orig/arch/ia64/kernel/mca.c +++ linux-5.8.0/arch/ia64/kernel/mca.c @@ -1822,7 +1822,7 @@ data = mca_bootmem(); first_time = 0; } else - data = (void *)__get_free_pages(GFP_KERNEL, + data = (void *)__get_free_pages(GFP_ATOMIC, get_order(sz)); if (!data) panic("Could not allocate MCA memory for cpu %d\n", --- linux-5.8.0.orig/arch/ia64/kernel/ptrace.c +++ linux-5.8.0/arch/ia64/kernel/ptrace.c @@ -2146,27 +2146,39 @@ { struct syscall_get_set_args *args = data; struct pt_regs *pt = args->regs; - unsigned long *krbs, cfm, ndirty; + unsigned long *krbs, cfm, ndirty, nlocals, nouts; int i, count; if (unw_unwind_to_user(info) < 0) return; + /* + * We get here via a few paths: + * - break instruction: cfm is shared with caller. + * syscall args are in out= regs, locals are non-empty. + * - epsinstruction: cfm is set by br.call + * locals don't exist. + * + * For both cases argguments are reachable in cfm.sof - cfm.sol. + * CFM: [ ... | sor: 17..14 | sol : 13..7 | sof : 6..0 ] + */ cfm = pt->cr_ifs; + nlocals = (cfm >> 7) & 0x7f; /* aka sol */ + nouts = (cfm & 0x7f) - nlocals; /* aka sof - sol */ krbs = (unsigned long *)info->task + IA64_RBS_OFFSET/8; ndirty = ia64_rse_num_regs(krbs, krbs + (pt->loadrs >> 19)); count = 0; if (in_syscall(pt)) - count = min_t(int, args->n, cfm & 0x7f); + count = min_t(int, args->n, nouts); + /* Iterate over outs. */ for (i = 0; i < count; i++) { + int j = ndirty + nlocals + i + args->i; if (args->rw) - *ia64_rse_skip_regs(krbs, ndirty + i + args->i) = - args->args[i]; + *ia64_rse_skip_regs(krbs, j) = args->args[i]; else - args->args[i] = *ia64_rse_skip_regs(krbs, - ndirty + i + args->i); + args->args[i] = *ia64_rse_skip_regs(krbs, j); } if (!args->rw) { --- linux-5.8.0.orig/arch/ia64/mm/init.c +++ linux-5.8.0/arch/ia64/mm/init.c @@ -537,8 +537,8 @@ if (map_start < map_end) memmap_init_zone((unsigned long)(map_end - map_start), - args->nid, args->zone, page_to_pfn(map_start), - MEMMAP_EARLY, NULL); + args->nid, args->zone, page_to_pfn(map_start), page_to_pfn(map_end), + MEMINIT_EARLY, NULL); return 0; } @@ -547,8 +547,8 @@ unsigned long start_pfn) { if (!vmem_map) { - memmap_init_zone(size, nid, zone, start_pfn, MEMMAP_EARLY, - NULL); + memmap_init_zone(size, nid, zone, start_pfn, start_pfn + size, + MEMINIT_EARLY, NULL); } else { struct page *start; struct memmap_init_callback_data args; --- linux-5.8.0.orig/arch/m68k/coldfire/device.c +++ linux-5.8.0/arch/m68k/coldfire/device.c @@ -554,7 +554,7 @@ }; #endif /* IS_ENABLED(CONFIG_MCF_EDMA) */ -#if IS_ENABLED(CONFIG_MMC) +#ifdef MCFSDHC_BASE static struct mcf_esdhc_platform_data mcf_esdhc_data = { .max_bus_width = 4, .cd_type = ESDHC_CD_NONE, @@ -579,7 +579,7 @@ .resource = mcf_esdhc_resources, .dev.platform_data = &mcf_esdhc_data, }; -#endif /* IS_ENABLED(CONFIG_MMC) */ +#endif /* MCFSDHC_BASE */ static struct platform_device *mcf_devices[] __initdata = { &mcf_uart, @@ -613,7 +613,7 @@ #if IS_ENABLED(CONFIG_MCF_EDMA) &mcf_edma, #endif -#if IS_ENABLED(CONFIG_MMC) +#ifdef MCFSDHC_BASE &mcf_esdhc, #endif }; --- linux-5.8.0.orig/arch/m68k/include/asm/Kbuild +++ linux-5.8.0/arch/m68k/include/asm/Kbuild @@ -2,6 +2,5 @@ generated-y += syscall_table.h generic-y += extable.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += spinlock.h --- linux-5.8.0.orig/arch/m68k/include/asm/m53xxacr.h +++ linux-5.8.0/arch/m68k/include/asm/m53xxacr.h @@ -89,9 +89,9 @@ * coherency though in all cases. And for copyback caches we will need * to push cached data as well. */ -#define CACHE_INIT CACR_CINVA -#define CACHE_INVALIDATE CACR_CINVA -#define CACHE_INVALIDATED CACR_CINVA +#define CACHE_INIT (CACHE_MODE + CACR_CINVA - CACR_EC) +#define CACHE_INVALIDATE (CACHE_MODE + CACR_CINVA) +#define CACHE_INVALIDATED (CACHE_MODE + CACR_CINVA) #define ACR0_MODE ((CONFIG_RAMBASE & 0xff000000) + \ (0x000f0000) + \ --- linux-5.8.0.orig/arch/m68k/mac/config.c +++ linux-5.8.0/arch/m68k/mac/config.c @@ -776,16 +776,12 @@ struct platform_device scc_a_pdev = { .name = "scc", .id = 0, - .num_resources = ARRAY_SIZE(scc_a_rsrcs), - .resource = scc_a_rsrcs, }; EXPORT_SYMBOL(scc_a_pdev); struct platform_device scc_b_pdev = { .name = "scc", .id = 1, - .num_resources = ARRAY_SIZE(scc_b_rsrcs), - .resource = scc_b_rsrcs, }; EXPORT_SYMBOL(scc_b_pdev); @@ -812,10 +808,15 @@ /* Set up serial port resources for the console initcall. */ - scc_a_rsrcs[0].start = (resource_size_t) mac_bi_data.sccbase + 2; - scc_a_rsrcs[0].end = scc_a_rsrcs[0].start; - scc_b_rsrcs[0].start = (resource_size_t) mac_bi_data.sccbase; - scc_b_rsrcs[0].end = scc_b_rsrcs[0].start; + scc_a_rsrcs[0].start = (resource_size_t)mac_bi_data.sccbase + 2; + scc_a_rsrcs[0].end = scc_a_rsrcs[0].start; + scc_a_pdev.num_resources = ARRAY_SIZE(scc_a_rsrcs); + scc_a_pdev.resource = scc_a_rsrcs; + + scc_b_rsrcs[0].start = (resource_size_t)mac_bi_data.sccbase; + scc_b_rsrcs[0].end = scc_b_rsrcs[0].start; + scc_b_pdev.num_resources = ARRAY_SIZE(scc_b_rsrcs); + scc_b_pdev.resource = scc_b_rsrcs; switch (macintosh_config->scc_type) { case MAC_SCC_PSC: --- linux-5.8.0.orig/arch/m68k/mac/iop.c +++ linux-5.8.0/arch/m68k/mac/iop.c @@ -183,7 +183,7 @@ static __inline__ void iop_stop(volatile struct mac_iop *iop) { - iop->status_ctrl &= ~IOP_RUN; + iop->status_ctrl = IOP_AUTOINC; } static __inline__ void iop_start(volatile struct mac_iop *iop) @@ -191,14 +191,9 @@ iop->status_ctrl = IOP_RUN | IOP_AUTOINC; } -static __inline__ void iop_bypass(volatile struct mac_iop *iop) -{ - iop->status_ctrl |= IOP_BYPASS; -} - static __inline__ void iop_interrupt(volatile struct mac_iop *iop) { - iop->status_ctrl |= IOP_IRQ; + iop->status_ctrl = IOP_IRQ | IOP_RUN | IOP_AUTOINC; } static int iop_alive(volatile struct mac_iop *iop) @@ -244,7 +239,6 @@ } else { iop_base[IOP_NUM_SCC] = (struct mac_iop *) SCC_IOP_BASE_QUADRA; } - iop_base[IOP_NUM_SCC]->status_ctrl = 0x87; iop_scc_present = 1; } else { iop_base[IOP_NUM_SCC] = NULL; @@ -256,7 +250,7 @@ } else { iop_base[IOP_NUM_ISM] = (struct mac_iop *) ISM_IOP_BASE_QUADRA; } - iop_base[IOP_NUM_ISM]->status_ctrl = 0; + iop_stop(iop_base[IOP_NUM_ISM]); iop_ism_present = 1; } else { iop_base[IOP_NUM_ISM] = NULL; @@ -415,7 +409,8 @@ msg->status = IOP_MSGSTATUS_UNUSED; msg = msg->next; iop_send_queue[iop_num][chan] = msg; - if (msg) iop_do_send(msg); + if (msg && iop_readb(iop, IOP_ADDR_SEND_STATE + chan) == IOP_MSG_IDLE) + iop_do_send(msg); } /* @@ -489,16 +484,12 @@ if (!(q = iop_send_queue[iop_num][chan])) { iop_send_queue[iop_num][chan] = msg; + iop_do_send(msg); } else { while (q->next) q = q->next; q->next = msg; } - if (iop_readb(iop_base[iop_num], - IOP_ADDR_SEND_STATE + chan) == IOP_MSG_IDLE) { - iop_do_send(msg); - } - return 0; } --- linux-5.8.0.orig/arch/microblaze/include/asm/Kbuild +++ linux-5.8.0/arch/microblaze/include/asm/Kbuild @@ -1,9 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 generated-y += syscall_table.h generic-y += extable.h -generic-y += hw_irq.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += parport.h generic-y += syscalls.h --- linux-5.8.0.orig/arch/mips/Kconfig +++ linux-5.8.0/arch/mips/Kconfig @@ -678,6 +678,7 @@ select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_SMP select MIPS_L1_CACHE_SHIFT_7 + select NUMA help This are the SGI Origin 200, Origin 2000 and Onyx 2 Graphics workstations. To compile a Linux kernel that runs on these, say Y @@ -875,6 +876,7 @@ select I8253 select I8259 select ISA + select MIPS_L1_CACHE_SHIFT_6 select SWAP_IO_SPACE if CPU_BIG_ENDIAN select SYS_HAS_CPU_R4X00 select SYS_HAS_CPU_R5000 @@ -2202,6 +2204,7 @@ config KVM_GUEST bool "KVM Guest Kernel" + depends on CPU_MIPS32_R2 depends on BROKEN_ON_SMP help Select this option if building a guest kernel for KVM (Trap & Emulate) --- linux-5.8.0.orig/arch/mips/Makefile +++ linux-5.8.0/arch/mips/Makefile @@ -136,6 +136,25 @@ # cflags-y += -fno-stack-check +# binutils from v2.35 when built with --enable-mips-fix-loongson3-llsc=yes, +# supports an -mfix-loongson3-llsc flag which emits a sync prior to each ll +# instruction to work around a CPU bug (see __SYNC_loongson3_war in asm/sync.h +# for a description). +# +# We disable this in order to prevent the assembler meddling with the +# instruction that labels refer to, ie. if we label an ll instruction: +# +# 1: ll v0, 0(a0) +# +# ...then with the assembler fix applied the label may actually point at a sync +# instruction inserted by the assembler, and if we were using the label in an +# exception table the table would no longer contain the address of the ll +# instruction. +# +# Avoid this by explicitly disabling that assembler behaviour. +# +cflags-y += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,) + # # CPU-dependent compiler/assembler options for optimization. # --- linux-5.8.0.orig/arch/mips/alchemy/common/clock.c +++ linux-5.8.0/arch/mips/alchemy/common/clock.c @@ -152,6 +152,7 @@ { struct clk_init_data id; struct clk_hw *h; + struct clk *clk; h = kzalloc(sizeof(*h), GFP_KERNEL); if (!h) @@ -164,7 +165,13 @@ id.ops = &alchemy_clkops_cpu; h->init = &id; - return clk_register(NULL, h); + clk = clk_register(NULL, h); + if (IS_ERR(clk)) { + pr_err("failed to register clock\n"); + kfree(h); + } + + return clk; } /* AUXPLLs ************************************************************/ --- linux-5.8.0.orig/arch/mips/bcm47xx/Kconfig +++ linux-5.8.0/arch/mips/bcm47xx/Kconfig @@ -27,6 +27,7 @@ select BCMA select BCMA_HOST_SOC select BCMA_DRIVER_MIPS + select BCMA_DRIVER_PCI if PCI select BCMA_DRIVER_PCI_HOSTMODE if PCI select BCMA_DRIVER_GPIO default y --- linux-5.8.0.orig/arch/mips/boot/compressed/Makefile +++ linux-5.8.0/arch/mips/boot/compressed/Makefile @@ -31,6 +31,7 @@ # Prevents link failures: __sanitizer_cov_trace_pc() is not linked in. KCOV_INSTRUMENT := n +UBSAN_SANITIZE := n # decompressor objects (linked with vmlinuz) vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o --- linux-5.8.0.orig/arch/mips/boot/compressed/decompress.c +++ linux-5.8.0/arch/mips/boot/compressed/decompress.c @@ -13,6 +13,7 @@ #include #include +#include /* * These two variables specify the free mem region @@ -113,7 +114,7 @@ dtb_size = fdt_totalsize((void *)&__appended_dtb); /* last four bytes is always image size in little endian */ - image_size = le32_to_cpup((void *)&__image_end - 4); + image_size = get_unaligned_le32((void *)&__image_end - 4); /* copy dtb to where the booted kernel will expect it */ memcpy((void *)VMLINUX_LOAD_ADDRESS_ULL + image_size, --- linux-5.8.0.orig/arch/mips/boot/dts/ingenic/qi_lb60.dts +++ linux-5.8.0/arch/mips/boot/dts/ingenic/qi_lb60.dts @@ -69,7 +69,7 @@ "Speaker", "OUTL", "Speaker", "OUTR", "INL", "LOUT", - "INL", "ROUT"; + "INR", "ROUT"; simple-audio-card,aux-devs = <&>; --- linux-5.8.0.orig/arch/mips/cavium-octeon/octeon-usb.c +++ linux-5.8.0/arch/mips/cavium-octeon/octeon-usb.c @@ -518,6 +518,7 @@ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (res == NULL) { + put_device(&pdev->dev); dev_err(&pdev->dev, "No memory resources\n"); return -ENXIO; } @@ -529,8 +530,10 @@ * know the difference. */ base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(base)) + if (IS_ERR(base)) { + put_device(&pdev->dev); return PTR_ERR(base); + } mutex_lock(&dwc3_octeon_clocks_mutex); dwc3_octeon_clocks_start(&pdev->dev, (u64)base); --- linux-5.8.0.orig/arch/mips/cavium-octeon/setup.c +++ linux-5.8.0/arch/mips/cavium-octeon/setup.c @@ -1162,12 +1162,15 @@ bool do_prune; bool fill_mac; - if (fw_passed_dtb) { - fdt = (void *)fw_passed_dtb; +#ifdef CONFIG_MIPS_ELF_APPENDED_DTB + if (!fdt_check_header(&__appended_dtb)) { + fdt = &__appended_dtb; do_prune = false; fill_mac = true; pr_info("Using appended Device Tree.\n"); - } else if (octeon_bootinfo->minor_version >= 3 && octeon_bootinfo->fdt_addr) { + } else +#endif + if (octeon_bootinfo->minor_version >= 3 && octeon_bootinfo->fdt_addr) { fdt = phys_to_virt(octeon_bootinfo->fdt_addr); if (fdt_check_header(fdt)) panic("Corrupt Device Tree passed to kernel."); --- linux-5.8.0.orig/arch/mips/configs/qi_lb60_defconfig +++ linux-5.8.0/arch/mips/configs/qi_lb60_defconfig @@ -8,6 +8,7 @@ # CONFIG_COMPAT_BRK is not set CONFIG_SLAB=y CONFIG_MACH_INGENIC=y +CONFIG_JZ4740_QI_LB60=y CONFIG_HZ_100=y # CONFIG_SECCOMP is not set CONFIG_MODULES=y --- linux-5.8.0.orig/arch/mips/crypto/Makefile +++ linux-5.8.0/arch/mips/crypto/Makefile @@ -12,8 +12,8 @@ obj-$(CONFIG_CRYPTO_POLY1305_MIPS) += poly1305-mips.o poly1305-mips-y := poly1305-core.o poly1305-glue.o -perlasm-flavour-$(CONFIG_CPU_MIPS32) := o32 -perlasm-flavour-$(CONFIG_CPU_MIPS64) := 64 +perlasm-flavour-$(CONFIG_32BIT) := o32 +perlasm-flavour-$(CONFIG_64BIT) := 64 quiet_cmd_perlasm = PERLASM $@ cmd_perlasm = $(PERL) $(<) $(perlasm-flavour-y) $(@) --- linux-5.8.0.orig/arch/mips/dec/setup.c +++ linux-5.8.0/arch/mips/dec/setup.c @@ -6,7 +6,7 @@ * for more details. * * Copyright (C) 1998 Harald Koerfgen - * Copyright (C) 2000, 2001, 2002, 2003, 2005 Maciej W. Rozycki + * Copyright (C) 2000, 2001, 2002, 2003, 2005, 2020 Maciej W. Rozycki */ #include #include @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include #include +#include #include #include #include @@ -29,7 +31,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -146,6 +150,9 @@ ioport_resource.start = ~0UL; ioport_resource.end = 0UL; + + /* Stay away from the firmware working memory area for now. */ + memblock_reserve(PHYS_OFFSET, __pa_symbol(&_text) - PHYS_OFFSET); } /* --- linux-5.8.0.orig/arch/mips/include/asm/Kbuild +++ linux-5.8.0/arch/mips/include/asm/Kbuild @@ -5,7 +5,6 @@ generated-y += syscall_table_64_n64.h generated-y += syscall_table_64_o32.h generic-y += export.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += parport.h generic-y += qrwlock.h --- linux-5.8.0.orig/arch/mips/include/asm/asm.h +++ linux-5.8.0/arch/mips/include/asm/asm.h @@ -20,10 +20,27 @@ #include #include +#ifndef __VDSO__ +/* + * Emit CFI data in .debug_frame sections, not .eh_frame sections. + * We don't do DWARF unwinding at runtime, so only the offline DWARF + * information is useful to anyone. Note we should change this if we + * ever decide to enable DWARF unwinding at runtime. + */ +#define CFI_SECTIONS .cfi_sections .debug_frame +#else + /* + * For the vDSO, emit both runtime unwind information and debug + * symbols for the .dbg file. + */ +#define CFI_SECTIONS +#endif + /* * LEAF - declare leaf routine */ #define LEAF(symbol) \ + CFI_SECTIONS; \ .globl symbol; \ .align 2; \ .type symbol, @function; \ @@ -36,6 +53,7 @@ * NESTED - declare nested routine entry point */ #define NESTED(symbol, framesize, rpc) \ + CFI_SECTIONS; \ .globl symbol; \ .align 2; \ .type symbol, @function; \ --- linux-5.8.0.orig/arch/mips/include/asm/atomic.h +++ linux-5.8.0/arch/mips/include/asm/atomic.h @@ -249,7 +249,7 @@ * bltz that can branch to code outside of the LL/SC loop. As \ * such, we don't need to emit another barrier here. \ */ \ - if (!__SYNC_loongson3_war) \ + if (__SYNC_loongson3_war == 0) \ smp_mb__after_atomic(); \ \ return result; \ --- linux-5.8.0.orig/arch/mips/include/asm/cmpxchg.h +++ linux-5.8.0/arch/mips/include/asm/cmpxchg.h @@ -99,7 +99,7 @@ * contains a completion barrier prior to the LL, so we don't \ * need to emit an extra one here. \ */ \ - if (!__SYNC_loongson3_war) \ + if (__SYNC_loongson3_war == 0) \ smp_mb__before_llsc(); \ \ __res = (__typeof__(*(ptr))) \ @@ -191,7 +191,7 @@ * contains a completion barrier prior to the LL, so we don't \ * need to emit an extra one here. \ */ \ - if (!__SYNC_loongson3_war) \ + if (__SYNC_loongson3_war == 0) \ smp_mb__before_llsc(); \ \ __res = cmpxchg_local((ptr), (old), (new)); \ @@ -201,7 +201,7 @@ * contains a completion barrier after the SC, so we don't \ * need to emit an extra one here. \ */ \ - if (!__SYNC_loongson3_war) \ + if (__SYNC_loongson3_war == 0) \ smp_llsc_mb(); \ \ __res; \ --- linux-5.8.0.orig/arch/mips/include/asm/cpu-features.h +++ linux-5.8.0/arch/mips/include/asm/cpu-features.h @@ -568,6 +568,10 @@ # define cpu_has_mac2008_only __opt(MIPS_CPU_MAC_2008_ONLY) #endif +#ifndef cpu_has_ftlbparex +# define cpu_has_ftlbparex __opt(MIPS_CPU_FTLBPAREX) +#endif + #ifdef CONFIG_SMP /* * Some systems share FTLB RAMs between threads within a core (siblings in --- linux-5.8.0.orig/arch/mips/include/asm/cpu-type.h +++ linux-5.8.0/arch/mips/include/asm/cpu-type.h @@ -47,6 +47,7 @@ case CPU_34K: case CPU_1004K: case CPU_74K: + case CPU_1074K: case CPU_M14KC: case CPU_M14KEC: case CPU_INTERAPTIV: --- linux-5.8.0.orig/arch/mips/include/asm/cpu.h +++ linux-5.8.0/arch/mips/include/asm/cpu.h @@ -425,6 +425,7 @@ #define MIPS_CPU_MM_SYSAD BIT_ULL(58) /* CPU supports write-through SysAD Valid merge */ #define MIPS_CPU_MM_FULL BIT_ULL(59) /* CPU supports write-through full merge */ #define MIPS_CPU_MAC_2008_ONLY BIT_ULL(60) /* CPU Only support MAC2008 Fused multiply-add instruction */ +#define MIPS_CPU_FTLBPAREX BIT_ULL(61) /* CPU has FTLB parity exception */ /* * CPU ASE encodings --- linux-5.8.0.orig/arch/mips/include/asm/kvm_host.h +++ linux-5.8.0/arch/mips/include/asm/kvm_host.h @@ -981,7 +981,7 @@ #define KVM_ARCH_WANT_MMU_NOTIFIER int kvm_unmap_hva_range(struct kvm *kvm, - unsigned long start, unsigned long end); + unsigned long start, unsigned long end, unsigned flags); int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); --- linux-5.8.0.orig/arch/mips/include/asm/mach-loongson64/cpu-feature-overrides.h +++ linux-5.8.0/arch/mips/include/asm/mach-loongson64/cpu-feature-overrides.h @@ -26,7 +26,6 @@ #define cpu_has_counter 1 #define cpu_has_dc_aliases (PAGE_SIZE < 0x4000) #define cpu_has_divec 0 -#define cpu_has_ejtag 0 #define cpu_has_inclusive_pcaches 1 #define cpu_has_llsc 1 #define cpu_has_mcheck 0 @@ -42,7 +41,6 @@ #define cpu_has_veic 0 #define cpu_has_vint 0 #define cpu_has_vtag_icache 0 -#define cpu_has_watch 1 #define cpu_has_wsbh 1 #define cpu_has_ic_fills_f_dc 1 #define cpu_hwrena_impl_bits 0xc0000000 --- linux-5.8.0.orig/arch/mips/include/asm/pgtable-32.h +++ linux-5.8.0/arch/mips/include/asm/pgtable-32.h @@ -154,6 +154,7 @@ #if defined(CONFIG_XPA) +#define MAX_POSSIBLE_PHYSMEM_BITS 40 #define pte_pfn(x) (((unsigned long)((x).pte_high >> _PFN_SHIFT)) | (unsigned long)((x).pte_low << _PAGE_PRESENT_SHIFT)) static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) @@ -169,6 +170,7 @@ #elif defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) +#define MAX_POSSIBLE_PHYSMEM_BITS 36 #define pte_pfn(x) ((unsigned long)((x).pte_high >> 6)) static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) @@ -183,6 +185,7 @@ #else +#define MAX_POSSIBLE_PHYSMEM_BITS 32 #ifdef CONFIG_CPU_VR41XX #define pte_pfn(x) ((unsigned long)((x).pte >> (PAGE_SHIFT + 2))) #define pfn_pte(pfn, prot) __pte(((pfn) << (PAGE_SHIFT + 2)) | pgprot_val(prot)) --- linux-5.8.0.orig/arch/mips/kernel/binfmt_elfn32.c +++ linux-5.8.0/arch/mips/kernel/binfmt_elfn32.c @@ -103,4 +103,11 @@ #undef ns_to_kernel_old_timeval #define ns_to_kernel_old_timeval ns_to_old_timeval32 +/* + * Some data types as stored in coredump. + */ +#define user_long_t compat_long_t +#define user_siginfo_t compat_siginfo_t +#define copy_siginfo_to_external copy_siginfo_to_external32 + #include "../../../fs/binfmt_elf.c" --- linux-5.8.0.orig/arch/mips/kernel/binfmt_elfo32.c +++ linux-5.8.0/arch/mips/kernel/binfmt_elfo32.c @@ -106,4 +106,11 @@ #undef ns_to_kernel_old_timeval #define ns_to_kernel_old_timeval ns_to_old_timeval32 +/* + * Some data types as stored in coredump. + */ +#define user_long_t compat_long_t +#define user_siginfo_t compat_siginfo_t +#define copy_siginfo_to_external copy_siginfo_to_external32 + #include "../../../fs/binfmt_elf.c" --- linux-5.8.0.orig/arch/mips/kernel/cpu-probe.c +++ linux-5.8.0/arch/mips/kernel/cpu-probe.c @@ -1827,6 +1827,19 @@ default: break; } + + /* Recent MIPS cores use the implementation-dependent ExcCode 16 for + * cache/FTLB parity exceptions. + */ + switch (__get_cpu_type(c->cputype)) { + case CPU_PROAPTIV: + case CPU_P5600: + case CPU_P6600: + case CPU_I6400: + case CPU_I6500: + c->options |= MIPS_CPU_FTLBPAREX; + break; + } } static inline void cpu_probe_alchemy(struct cpuinfo_mips *c, unsigned int cpu) @@ -2129,16 +2142,17 @@ */ case PRID_COMP_INGENIC_D0: c->isa_level &= ~MIPS_CPU_ISA_M32R2; - break; + fallthrough; /* * The config0 register in the XBurst CPUs with a processor ID of - * PRID_COMP_INGENIC_D1 has an abandoned huge page tlb mode, this - * mode is not compatible with the MIPS standard, it will cause - * tlbmiss and into an infinite loop (line 21 in the tlb-funcs.S) - * when starting the init process. After chip reset, the default - * is HPTLB mode, Write 0xa9000000 to cp0 register 5 sel 4 to - * switch back to VTLB mode to prevent getting stuck. + * PRID_COMP_INGENIC_D0 or PRID_COMP_INGENIC_D1 has an abandoned + * huge page tlb mode, this mode is not compatible with the MIPS + * standard, it will cause tlbmiss and into an infinite loop + * (line 21 in the tlb-funcs.S) when starting the init process. + * After chip reset, the default is HPTLB mode, Write 0xa9000000 + * to cp0 register 5 sel 4 to switch back to VTLB mode to prevent + * getting stuck. */ case PRID_COMP_INGENIC_D1: write_c0_page_ctrl(XBURST_PAGECTRL_HPTLB_DIS); --- linux-5.8.0.orig/arch/mips/kernel/perf_event_mipsxx.c +++ linux-5.8.0/arch/mips/kernel/perf_event_mipsxx.c @@ -1898,8 +1898,8 @@ (base_id >= 64 && base_id < 90) || (base_id >= 128 && base_id < 164) || (base_id >= 192 && base_id < 200) || - (base_id >= 256 && base_id < 274) || - (base_id >= 320 && base_id < 358) || + (base_id >= 256 && base_id < 275) || + (base_id >= 320 && base_id < 361) || (base_id >= 384 && base_id < 574)) break; --- linux-5.8.0.orig/arch/mips/kernel/relocate.c +++ linux-5.8.0/arch/mips/kernel/relocate.c @@ -187,8 +187,14 @@ static inline __init unsigned long rotate_xor(unsigned long hash, const void *area, size_t size) { - size_t i; - unsigned long *ptr = (unsigned long *)area; + const typeof(hash) *ptr = PTR_ALIGN(area, sizeof(hash)); + size_t diff, i; + + diff = (void *)ptr - area; + if (unlikely(size < diff + sizeof(hash))) + return hash; + + size = ALIGN_DOWN(size - diff, sizeof(hash)); for (i = 0; i < size / sizeof(hash); i++) { /* Rotate by odd number of bits and XOR. */ --- linux-5.8.0.orig/arch/mips/kernel/setup.c +++ linux-5.8.0/arch/mips/kernel/setup.c @@ -497,7 +497,7 @@ if (ret != 0 || crash_size <= 0) return; - if (!memblock_find_in_range(crash_base, crash_base + crash_size, crash_size, 0)) { + if (!memblock_find_in_range(crash_base, crash_base + crash_size, crash_size, 1)) { pr_warn("Invalid memory region reserved for crash kernel\n"); return; } @@ -531,8 +531,8 @@ static void __init check_kernel_sections_mem(void) { - phys_addr_t start = PFN_PHYS(PFN_DOWN(__pa_symbol(&_text))); - phys_addr_t size = PFN_PHYS(PFN_UP(__pa_symbol(&_end))) - start; + phys_addr_t start = __pa_symbol(&_text); + phys_addr_t size = __pa_symbol(&_end) - start; if (!memblock_is_region_memory(start, size)) { pr_info("Kernel sections are not in the memory maps\n"); --- linux-5.8.0.orig/arch/mips/kernel/smp-bmips.c +++ linux-5.8.0/arch/mips/kernel/smp-bmips.c @@ -239,6 +239,8 @@ */ static void bmips_init_secondary(void) { + bmips_cpu_setup(); + switch (current_cpu_type()) { case CPU_BMIPS4350: case CPU_BMIPS4380: --- linux-5.8.0.orig/arch/mips/kernel/topology.c +++ linux-5.8.0/arch/mips/kernel/topology.c @@ -20,7 +20,7 @@ for_each_present_cpu(i) { struct cpu *c = &per_cpu(cpu_devices, i); - c->hotpluggable = 1; + c->hotpluggable = !!i; ret = register_cpu(c, i); if (ret) printk(KERN_WARNING "topology_init: register_cpu %d " --- linux-5.8.0.orig/arch/mips/kernel/traps.c +++ linux-5.8.0/arch/mips/kernel/traps.c @@ -1286,6 +1286,18 @@ err = own_fpu_inatomic(1); if (msa && !err) { enable_msa(); + /* + * with MSA enabled, userspace can see MSACSR + * and MSA regs, but the values in them are from + * other task before current task, restore them + * from saved fp/msa context + */ + write_msa_csr(current->thread.fpu.msacsr); + /* + * own_fpu_inatomic(1) just restore low 64bit, + * fix the high 64bit + */ + init_msa_upper(); set_thread_flag(TIF_USEDMSA); set_thread_flag(TIF_MSA_CTX_LIVE); } @@ -2457,7 +2469,8 @@ if (cpu_has_fpu && !cpu_has_nofpuex) set_except_vector(EXCCODE_FPE, handle_fpe); - set_except_vector(MIPS_EXCCODE_TLBPAR, handle_ftlb); + if (cpu_has_ftlbparex) + set_except_vector(MIPS_EXCCODE_TLBPAR, handle_ftlb); if (cpu_has_rixiex) { set_except_vector(EXCCODE_TLBRI, tlb_do_page_fault_0); --- linux-5.8.0.orig/arch/mips/kernel/vmlinux.lds.S +++ linux-5.8.0/arch/mips/kernel/vmlinux.lds.S @@ -90,6 +90,7 @@ INIT_TASK_DATA(THREAD_SIZE) NOSAVE_DATA + PAGE_ALIGNED_DATA(PAGE_SIZE) CACHELINE_ALIGNED_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT) READ_MOSTLY_DATA(1 << CONFIG_MIPS_L1_CACHE_SHIFT) DATA_DATA @@ -222,6 +223,5 @@ *(.options) *(.pdr) *(.reginfo) - *(.eh_frame) } } --- linux-5.8.0.orig/arch/mips/kvm/Kconfig +++ linux-5.8.0/arch/mips/kvm/Kconfig @@ -37,10 +37,11 @@ config KVM_MIPS_TE bool "Trap & Emulate" + depends on CPU_MIPS32_R2 help Use trap and emulate to virtualize 32-bit guests in user mode. This does not require any special hardware Virtualization support beyond - standard MIPS32/64 r2 or later, but it does require the guest kernel + standard MIPS32 r2 or later, but it does require the guest kernel to be configured with CONFIG_KVM_GUEST=y so that it resides in the user address segment. --- linux-5.8.0.orig/arch/mips/kvm/mips.c +++ linux-5.8.0/arch/mips/kvm/mips.c @@ -137,6 +137,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) { switch (type) { + case KVM_VM_MIPS_AUTO: + break; #ifdef CONFIG_KVM_MIPS_VZ case KVM_VM_MIPS_VZ: #else --- linux-5.8.0.orig/arch/mips/kvm/mmu.c +++ linux-5.8.0/arch/mips/kvm/mmu.c @@ -518,7 +518,8 @@ return 1; } -int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) +int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, + unsigned flags) { handle_hva_to_gpa(kvm, start, end, &kvm_unmap_hva_handler, NULL); --- linux-5.8.0.orig/arch/mips/kvm/vz.c +++ linux-5.8.0/arch/mips/kvm/vz.c @@ -29,7 +29,9 @@ #include #include "interrupt.h" +#ifdef CONFIG_CPU_LOONGSON64 #include "loongson_regs.h" +#endif #include "trace.h" --- linux-5.8.0.orig/arch/mips/lantiq/irq.c +++ linux-5.8.0/arch/mips/lantiq/irq.c @@ -302,7 +302,7 @@ generic_handle_irq(irq_linear_revmap(ltq_domain, hwirq)); /* if this is a EBU irq, we need to ack it or get a deadlock */ - if ((irq == LTQ_ICU_EBU_IRQ) && (module == 0) && LTQ_EBU_PCC_ISTAT) + if (irq == LTQ_ICU_EBU_IRQ && !module && LTQ_EBU_PCC_ISTAT != 0) ltq_ebu_w32(ltq_ebu_r32(LTQ_EBU_PCC_ISTAT) | 0x10, LTQ_EBU_PCC_ISTAT); } --- linux-5.8.0.orig/arch/mips/lib/uncached.c +++ linux-5.8.0/arch/mips/lib/uncached.c @@ -37,10 +37,12 @@ */ unsigned long run_uncached(void *func) { - register long sp __asm__("$sp"); register long ret __asm__("$2"); long lfunc = (long)func, ufunc; long usp; + long sp; + + __asm__("move %0, $sp" : "=r" (sp)); if (sp >= (long)CKSEG0 && sp < (long)CKSEG2) usp = CKSEG1ADDR(sp); --- linux-5.8.0.orig/arch/mips/loongson2ef/Platform +++ linux-5.8.0/arch/mips/loongson2ef/Platform @@ -22,6 +22,10 @@ endif endif +# Some -march= flags enable MMI instructions, and GCC complains about that +# support being enabled alongside -msoft-float. Thus explicitly disable MMI. +cflags-y += $(call cc-option,-mno-loongson-mmi) + # # Loongson Machines' Support # --- linux-5.8.0.orig/arch/mips/loongson64/Platform +++ linux-5.8.0/arch/mips/loongson64/Platform @@ -6,28 +6,6 @@ cflags-$(CONFIG_CPU_LOONGSON64) += -Wa,--trap # -# Some versions of binutils, not currently mainline as of 2019/02/04, support -# an -mfix-loongson3-llsc flag which emits a sync prior to each ll instruction -# to work around a CPU bug (see __SYNC_loongson3_war in asm/sync.h for a -# description). -# -# We disable this in order to prevent the assembler meddling with the -# instruction that labels refer to, ie. if we label an ll instruction: -# -# 1: ll v0, 0(a0) -# -# ...then with the assembler fix applied the label may actually point at a sync -# instruction inserted by the assembler, and if we were using the label in an -# exception table the table would no longer contain the address of the ll -# instruction. -# -# Avoid this by explicitly disabling that assembler behaviour. If upstream -# binutils does not merge support for the flag then we can revisit & remove -# this later - for now it ensures vendor toolchains don't cause problems. -# -cflags-$(CONFIG_CPU_LOONGSON64) += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,) - -# # binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a # as MIPS64 R2; older versions as just R1. This leaves the possibility open # that GCC might generate R2 code for -march=loongson3a which then is rejected --- linux-5.8.0.orig/arch/mips/loongson64/cop2-ex.c +++ linux-5.8.0/arch/mips/loongson64/cop2-ex.c @@ -95,10 +95,8 @@ if (res) goto fault; - set_fpr64(current->thread.fpu.fpr, - insn.loongson3_lswc2_format.rt, value); - set_fpr64(current->thread.fpu.fpr, - insn.loongson3_lswc2_format.rq, value_next); + set_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lswc2_format.rt], 0, value); + set_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lswc2_format.rq], 0, value_next); compute_return_epc(regs); own_fpu(1); } @@ -130,15 +128,13 @@ goto sigbus; lose_fpu(1); - value_next = get_fpr64(current->thread.fpu.fpr, - insn.loongson3_lswc2_format.rq); + value_next = get_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lswc2_format.rq], 0); StoreDW(addr + 8, value_next, res); if (res) goto fault; - value = get_fpr64(current->thread.fpu.fpr, - insn.loongson3_lswc2_format.rt); + value = get_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lswc2_format.rt], 0); StoreDW(addr, value, res); if (res) @@ -204,8 +200,7 @@ if (res) goto fault; - set_fpr64(current->thread.fpu.fpr, - insn.loongson3_lsdc2_format.rt, value); + set_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lsdc2_format.rt], 0, value); compute_return_epc(regs); own_fpu(1); @@ -221,8 +216,7 @@ if (res) goto fault; - set_fpr64(current->thread.fpu.fpr, - insn.loongson3_lsdc2_format.rt, value); + set_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lsdc2_format.rt], 0, value); compute_return_epc(regs); own_fpu(1); break; @@ -286,8 +280,7 @@ goto sigbus; lose_fpu(1); - value = get_fpr64(current->thread.fpu.fpr, - insn.loongson3_lsdc2_format.rt); + value = get_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lsdc2_format.rt], 0); StoreW(addr, value, res); if (res) @@ -305,8 +298,7 @@ goto sigbus; lose_fpu(1); - value = get_fpr64(current->thread.fpu.fpr, - insn.loongson3_lsdc2_format.rt); + value = get_fpr64(¤t->thread.fpu.fpr[insn.loongson3_lsdc2_format.rt], 0); StoreDW(addr, value, res); if (res) --- linux-5.8.0.orig/arch/mips/mm/c-r4k.c +++ linux-5.8.0/arch/mips/mm/c-r4k.c @@ -1590,7 +1590,7 @@ return 1; } -static void __init loongson2_sc_init(void) +static void loongson2_sc_init(void) { struct cpuinfo_mips *c = ¤t_cpu_data; @@ -1606,7 +1606,7 @@ c->options |= MIPS_CPU_INCLUSIVE_CACHES; } -static void __init loongson3_sc_init(void) +static void loongson3_sc_init(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned int config2, lsize; @@ -1712,7 +1712,11 @@ printk("MIPS secondary cache %ldkB, %s, linesize %d bytes.\n", scache_size >> 10, way_string[c->scache.ways], c->scache.linesz); + + if (current_cpu_type() == CPU_BMIPS5000) + c->options |= MIPS_CPU_INCLUSIVE_CACHES; } + #else if (!(c->scache.flags & MIPS_CACHE_NOT_PRESENT)) panic("Dunno how to handle MIPS32 / MIPS64 second level cache"); --- linux-5.8.0.orig/arch/mips/mm/sc-mips.c +++ linux-5.8.0/arch/mips/mm/sc-mips.c @@ -146,7 +146,7 @@ return 1; } -static int __init mips_sc_probe_cm3(void) +static int mips_sc_probe_cm3(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned long cfg = read_gcr_l2_config(); @@ -180,7 +180,7 @@ return 0; } -static inline int __init mips_sc_probe(void) +static inline int mips_sc_probe(void) { struct cpuinfo_mips *c = ¤t_cpu_data; unsigned int config1, config2; --- linux-5.8.0.orig/arch/mips/mm/tlb-r4k.c +++ linux-5.8.0/arch/mips/mm/tlb-r4k.c @@ -438,6 +438,7 @@ } return mask == PM_HUGE_MASK; } +EXPORT_SYMBOL(has_transparent_hugepage); #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ --- linux-5.8.0.orig/arch/mips/oprofile/op_model_mipsxx.c +++ linux-5.8.0/arch/mips/oprofile/op_model_mipsxx.c @@ -245,7 +245,6 @@ switch (counters) { #define HANDLE_COUNTER(n) \ - fallthrough; \ case n + 1: \ control = r_c0_perfctrl ## n(); \ counter = r_c0_perfcntr ## n(); \ @@ -256,8 +255,11 @@ handled = IRQ_HANDLED; \ } HANDLE_COUNTER(3) + fallthrough; HANDLE_COUNTER(2) + fallthrough; HANDLE_COUNTER(1) + fallthrough; HANDLE_COUNTER(0) } --- linux-5.8.0.orig/arch/mips/pci/pci-xtalk-bridge.c +++ linux-5.8.0/arch/mips/pci/pci-xtalk-bridge.c @@ -728,6 +728,7 @@ pci_free_resource_list(&host->windows); err_remove_domain: irq_domain_remove(domain); + irq_domain_free_fwnode(fn); return err; } @@ -735,8 +736,10 @@ { struct pci_bus *bus = platform_get_drvdata(pdev); struct bridge_controller *bc = BRIDGE_CONTROLLER(bus); + struct fwnode_handle *fn = bc->domain->fwnode; irq_domain_remove(bc->domain); + irq_domain_free_fwnode(fn); pci_lock_rescan_remove(); pci_stop_root_bus(bus); pci_remove_root_bus(bus); --- linux-5.8.0.orig/arch/mips/sni/a20r.c +++ linux-5.8.0/arch/mips/sni/a20r.c @@ -143,7 +143,10 @@ }, }; -static u32 a20r_ack_hwint(void) +/* + * Trigger chipset to update CPU's CAUSE IP field + */ +static u32 a20r_update_cause_ip(void) { u32 status = read_c0_status(); @@ -205,12 +208,14 @@ int irq; clear_c0_status(IE_IRQ0); - status = a20r_ack_hwint(); + status = a20r_update_cause_ip(); cause = read_c0_cause(); irq = ffs(((cause & status) >> 8) & 0xf8); if (likely(irq > 0)) do_IRQ(SNI_A20R_IRQ_BASE + irq - 1); + + a20r_update_cause_ip(); set_c0_status(IE_IRQ0); } @@ -222,8 +227,8 @@ irq_set_chip_and_handler(i, &a20r_irq_type, handle_level_irq); sni_hwint = a20r_hwint; change_c0_status(ST0_IM, IE_IRQ0); - if (request_irq(SNI_A20R_IRQ_BASE + 3, sni_isa_irq_handler, 0, "ISA", - NULL)) + if (request_irq(SNI_A20R_IRQ_BASE + 3, sni_isa_irq_handler, + IRQF_SHARED, "ISA", sni_isa_irq_handler)) pr_err("Failed to register ISA interrupt\n"); } --- linux-5.8.0.orig/arch/mips/vdso/Makefile +++ linux-5.8.0/arch/mips/vdso/Makefile @@ -16,16 +16,13 @@ $(filter -march=%,$(KBUILD_CFLAGS)) \ $(filter -m%-float,$(KBUILD_CFLAGS)) \ $(filter -mno-loongson-%,$(KBUILD_CFLAGS)) \ + $(CLANG_FLAGS) \ -D__VDSO__ ifndef CONFIG_64BIT ccflags-vdso += -DBUILD_VDSO32 endif -ifdef CONFIG_CC_IS_CLANG -ccflags-vdso += $(filter --target=%,$(KBUILD_CFLAGS)) -endif - # # The -fno-jump-tables flag only prevents the compiler from generating # jump tables but does not prevent the compiler from emitting absolute @@ -62,7 +59,7 @@ # VDSO linker flags. ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ $(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \ - -G 0 --eh-frame-hdr --hash-style=sysv --build-id -T + -G 0 --eh-frame-hdr --hash-style=sysv --build-id=sha1 -T CFLAGS_REMOVE_vdso.o = -pg --- linux-5.8.0.orig/arch/mips/vdso/genvdso.c +++ linux-5.8.0/arch/mips/vdso/genvdso.c @@ -122,6 +122,7 @@ if (fstat(fd, &stat) != 0) { fprintf(stderr, "%s: Failed to stat '%s': %s\n", program_name, path, strerror(errno)); + close(fd); return NULL; } @@ -130,6 +131,7 @@ if (addr == MAP_FAILED) { fprintf(stderr, "%s: Failed to map '%s': %s\n", program_name, path, strerror(errno)); + close(fd); return NULL; } @@ -139,6 +141,7 @@ if (memcmp(ehdr->e_ident, ELFMAG, SELFMAG) != 0) { fprintf(stderr, "%s: '%s' is not an ELF file\n", program_name, path); + close(fd); return NULL; } @@ -150,6 +153,7 @@ default: fprintf(stderr, "%s: '%s' has invalid ELF class\n", program_name, path); + close(fd); return NULL; } @@ -161,6 +165,7 @@ default: fprintf(stderr, "%s: '%s' has invalid ELF data order\n", program_name, path); + close(fd); return NULL; } @@ -168,15 +173,18 @@ fprintf(stderr, "%s: '%s' has invalid ELF machine (expected EM_MIPS)\n", program_name, path); + close(fd); return NULL; } else if (swap_uint16(ehdr->e_type) != ET_DYN) { fprintf(stderr, "%s: '%s' has invalid ELF type (expected ET_DYN)\n", program_name, path); + close(fd); return NULL; } *_size = stat.st_size; + close(fd); return addr; } @@ -293,10 +301,12 @@ /* Calculate and write symbol offsets to */ if (!get_symbols(dbg_vdso_path, dbg_vdso)) { unlink(out_path); + fclose(out_file); return EXIT_FAILURE; } fprintf(out_file, "};\n"); + fclose(out_file); return EXIT_SUCCESS; } --- linux-5.8.0.orig/arch/nds32/include/asm/Kbuild +++ linux-5.8.0/arch/nds32/include/asm/Kbuild @@ -4,6 +4,5 @@ generic-y += export.h generic-y += gpio.h generic-y += kvm_para.h -generic-y += local64.h generic-y += parport.h generic-y += user.h --- linux-5.8.0.orig/arch/nios2/kernel/sys_nios2.c +++ linux-5.8.0/arch/nios2/kernel/sys_nios2.c @@ -22,6 +22,7 @@ unsigned int op) { struct vm_area_struct *vma; + struct mm_struct *mm = current->mm; if (len == 0) return 0; @@ -34,16 +35,22 @@ if (addr + len < addr) return -EFAULT; + if (mmap_read_lock_killable(mm)) + return -EINTR; + /* * Verify that the specified address region actually belongs * to this process. */ - vma = find_vma(current->mm, addr); - if (vma == NULL || addr < vma->vm_start || addr + len > vma->vm_end) + vma = find_vma(mm, addr); + if (vma == NULL || addr < vma->vm_start || addr + len > vma->vm_end) { + mmap_read_unlock(mm); return -EFAULT; + } flush_cache_range(vma, addr, addr + len); + mmap_read_unlock(mm); return 0; } --- linux-5.8.0.orig/arch/openrisc/include/asm/uaccess.h +++ linux-5.8.0/arch/openrisc/include/asm/uaccess.h @@ -164,19 +164,19 @@ #define __get_user_nocheck(x, ptr, size) \ ({ \ - long __gu_err, __gu_val; \ - __get_user_size(__gu_val, (ptr), (size), __gu_err); \ - (x) = (__force __typeof__(*(ptr)))__gu_val; \ + long __gu_err; \ + __get_user_size((x), (ptr), (size), __gu_err); \ __gu_err; \ }) #define __get_user_check(x, ptr, size) \ ({ \ - long __gu_err = -EFAULT, __gu_val = 0; \ - const __typeof__(*(ptr)) * __gu_addr = (ptr); \ - if (access_ok(__gu_addr, size)) \ - __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ - (x) = (__force __typeof__(*(ptr)))__gu_val; \ + long __gu_err = -EFAULT; \ + const __typeof__(*(ptr)) *__gu_addr = (ptr); \ + if (access_ok(__gu_addr, size)) \ + __get_user_size((x), __gu_addr, (size), __gu_err); \ + else \ + (x) = (__typeof__(*(ptr))) 0; \ __gu_err; \ }) @@ -190,11 +190,13 @@ case 2: __get_user_asm(x, ptr, retval, "l.lhz"); break; \ case 4: __get_user_asm(x, ptr, retval, "l.lwz"); break; \ case 8: __get_user_asm2(x, ptr, retval); break; \ - default: (x) = __get_user_bad(); \ + default: (x) = (__typeof__(*(ptr)))__get_user_bad(); \ } \ } while (0) #define __get_user_asm(x, addr, err, op) \ +{ \ + unsigned long __gu_tmp; \ __asm__ __volatile__( \ "1: "op" %1,0(%2)\n" \ "2:\n" \ @@ -208,10 +210,14 @@ " .align 2\n" \ " .long 1b,3b\n" \ ".previous" \ - : "=r"(err), "=r"(x) \ - : "r"(addr), "i"(-EFAULT), "0"(err)) + : "=r"(err), "=r"(__gu_tmp) \ + : "r"(addr), "i"(-EFAULT), "0"(err)); \ + (x) = (__typeof__(*(addr)))__gu_tmp; \ +} #define __get_user_asm2(x, addr, err) \ +{ \ + unsigned long long __gu_tmp; \ __asm__ __volatile__( \ "1: l.lwz %1,0(%2)\n" \ "2: l.lwz %H1,4(%2)\n" \ @@ -228,8 +234,11 @@ " .long 1b,4b\n" \ " .long 2b,4b\n" \ ".previous" \ - : "=r"(err), "=&r"(x) \ - : "r"(addr), "i"(-EFAULT), "0"(err)) + : "=r"(err), "=&r"(__gu_tmp) \ + : "r"(addr), "i"(-EFAULT), "0"(err)); \ + (x) = (__typeof__(*(addr)))( \ + (__typeof__((x)-(x)))__gu_tmp); \ +} /* more complex routines */ --- linux-5.8.0.orig/arch/openrisc/kernel/stacktrace.c +++ linux-5.8.0/arch/openrisc/kernel/stacktrace.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -68,12 +69,25 @@ { unsigned long *sp = NULL; + if (!try_get_task_stack(tsk)) + return; + if (tsk == current) sp = (unsigned long *) &sp; - else - sp = (unsigned long *) KSTK_ESP(tsk); + else { + unsigned long ksp; + + /* Locate stack from kernel context */ + ksp = task_thread_info(tsk)->ksp; + ksp += STACK_FRAME_OVERHEAD; /* redzone */ + ksp += sizeof(struct pt_regs); + + sp = (unsigned long *) ksp; + } unwind_stack(trace, sp, save_stack_address_nosched); + + put_task_stack(tsk); } EXPORT_SYMBOL_GPL(save_stack_trace_tsk); --- linux-5.8.0.orig/arch/openrisc/mm/cache.c +++ linux-5.8.0/arch/openrisc/mm/cache.c @@ -16,7 +16,7 @@ #include #include -static void cache_loop(struct page *page, const unsigned int reg) +static __always_inline void cache_loop(struct page *page, const unsigned int reg) { unsigned long paddr = page_to_pfn(page) << PAGE_SHIFT; unsigned long line = paddr & ~(L1_CACHE_BYTES - 1); --- linux-5.8.0.orig/arch/parisc/Kconfig +++ linux-5.8.0/arch/parisc/Kconfig @@ -201,10 +201,12 @@ def_bool y depends on PA8X00 || PA7200 +config PARISC_HUGE_KERNEL + def_bool y if !MODULES || UBSAN || FTRACE || COMPILE_TEST + config MLONGCALLS - bool "Enable the -mlong-calls compiler option for big kernels" - default y if !MODULES || UBSAN || FTRACE - default n + def_bool y if PARISC_HUGE_KERNEL + bool "Enable the -mlong-calls compiler option for big kernels" if !PARISC_HUGE_KERNEL depends on PA8X00 help If you configure the kernel to include many drivers built-in instead --- linux-5.8.0.orig/arch/parisc/include/asm/Kbuild +++ linux-5.8.0/arch/parisc/include/asm/Kbuild @@ -3,7 +3,6 @@ generated-y += syscall_table_64.h generated-y += syscall_table_c32.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += seccomp.h generic-y += user.h --- linux-5.8.0.orig/arch/parisc/include/asm/barrier.h +++ linux-5.8.0/arch/parisc/include/asm/barrier.h @@ -26,6 +26,67 @@ #define __smp_rmb() mb() #define __smp_wmb() mb() +#define __smp_store_release(p, v) \ +do { \ + typeof(p) __p = (p); \ + union { typeof(*p) __val; char __c[1]; } __u = \ + { .__val = (__force typeof(*p)) (v) }; \ + compiletime_assert_atomic_type(*p); \ + switch (sizeof(*p)) { \ + case 1: \ + asm volatile("stb,ma %0,0(%1)" \ + : : "r"(*(__u8 *)__u.__c), "r"(__p) \ + : "memory"); \ + break; \ + case 2: \ + asm volatile("sth,ma %0,0(%1)" \ + : : "r"(*(__u16 *)__u.__c), "r"(__p) \ + : "memory"); \ + break; \ + case 4: \ + asm volatile("stw,ma %0,0(%1)" \ + : : "r"(*(__u32 *)__u.__c), "r"(__p) \ + : "memory"); \ + break; \ + case 8: \ + if (IS_ENABLED(CONFIG_64BIT)) \ + asm volatile("std,ma %0,0(%1)" \ + : : "r"(*(__u64 *)__u.__c), "r"(__p) \ + : "memory"); \ + break; \ + } \ +} while (0) + +#define __smp_load_acquire(p) \ +({ \ + union { typeof(*p) __val; char __c[1]; } __u; \ + typeof(p) __p = (p); \ + compiletime_assert_atomic_type(*p); \ + switch (sizeof(*p)) { \ + case 1: \ + asm volatile("ldb,ma 0(%1),%0" \ + : "=r"(*(__u8 *)__u.__c) : "r"(__p) \ + : "memory"); \ + break; \ + case 2: \ + asm volatile("ldh,ma 0(%1),%0" \ + : "=r"(*(__u16 *)__u.__c) : "r"(__p) \ + : "memory"); \ + break; \ + case 4: \ + asm volatile("ldw,ma 0(%1),%0" \ + : "=r"(*(__u32 *)__u.__c) : "r"(__p) \ + : "memory"); \ + break; \ + case 8: \ + if (IS_ENABLED(CONFIG_64BIT)) \ + asm volatile("ldd,ma 0(%1),%0" \ + : "=r"(*(__u64 *)__u.__c) : "r"(__p) \ + : "memory"); \ + break; \ + } \ + __u.__val; \ +}) #include #endif /* !__ASSEMBLY__ */ --- linux-5.8.0.orig/arch/parisc/include/asm/spinlock.h +++ linux-5.8.0/arch/parisc/include/asm/spinlock.h @@ -10,34 +10,25 @@ static inline int arch_spin_is_locked(arch_spinlock_t *x) { volatile unsigned int *a = __ldcw_align(x); - smp_mb(); return *a == 0; } -static inline void arch_spin_lock(arch_spinlock_t *x) -{ - volatile unsigned int *a; - - a = __ldcw_align(x); - while (__ldcw(a) == 0) - while (*a == 0) - cpu_relax(); -} +#define arch_spin_lock(lock) arch_spin_lock_flags(lock, 0) static inline void arch_spin_lock_flags(arch_spinlock_t *x, unsigned long flags) { volatile unsigned int *a; - unsigned long flags_dis; a = __ldcw_align(x); - while (__ldcw(a) == 0) { - local_save_flags(flags_dis); - local_irq_restore(flags); + while (__ldcw(a) == 0) while (*a == 0) - cpu_relax(); - local_irq_restore(flags_dis); - } + if (flags & PSW_SM_I) { + local_irq_enable(); + cpu_relax(); + local_irq_disable(); + } else + cpu_relax(); } #define arch_spin_lock_flags arch_spin_lock_flags @@ -46,12 +37,8 @@ volatile unsigned int *a; a = __ldcw_align(x); -#ifdef CONFIG_SMP - (void) __ldcw(a); -#else - mb(); -#endif - *a = 1; + /* Release with ordered store. */ + __asm__ __volatile__("stw,ma %0,0(%1)" : : "r"(1), "r"(a) : "memory"); } static inline int arch_spin_trylock(arch_spinlock_t *x) --- linux-5.8.0.orig/arch/parisc/kernel/entry.S +++ linux-5.8.0/arch/parisc/kernel/entry.S @@ -454,7 +454,6 @@ nop LDREG 0(\ptp),\pte bb,<,n \pte,_PAGE_PRESENT_BIT,3f - LDCW 0(\tmp),\tmp1 b \fault stw \spc,0(\tmp) 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) @@ -464,23 +463,26 @@ 3: .endm - /* Release pa_tlb_lock lock without reloading lock address. */ - .macro tlb_unlock0 spc,tmp,tmp1 + /* Release pa_tlb_lock lock without reloading lock address. + Note that the values in the register spc are limited to + NR_SPACE_IDS (262144). Thus, the stw instruction always + stores a nonzero value even when register spc is 64 bits. + We use an ordered store to ensure all prior accesses are + performed prior to releasing the lock. */ + .macro tlb_unlock0 spc,tmp #ifdef CONFIG_SMP 98: or,COND(=) %r0,\spc,%r0 - LDCW 0(\tmp),\tmp1 - or,COND(=) %r0,\spc,%r0 - stw \spc,0(\tmp) + stw,ma \spc,0(\tmp) 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) #endif .endm /* Release pa_tlb_lock lock. */ - .macro tlb_unlock1 spc,tmp,tmp1 + .macro tlb_unlock1 spc,tmp #ifdef CONFIG_SMP 98: load_pa_tlb_lock \tmp 99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) - tlb_unlock0 \spc,\tmp,\tmp1 + tlb_unlock0 \spc,\tmp #endif .endm @@ -995,10 +997,17 @@ bb,<,n %r20, 31 - PSW_SM_I, intr_restore nop + /* ssm PSW_SM_I done later in intr_restore */ +#ifdef CONFIG_MLONGCALLS + ldil L%intr_restore, %r2 + load32 preempt_schedule_irq, %r1 + bv %r0(%r1) + ldo R%intr_restore(%r2), %r2 +#else + ldil L%intr_restore, %r1 BL preempt_schedule_irq, %r2 - nop - - b,n intr_restore /* ssm PSW_SM_I done by intr_restore */ + ldo R%intr_restore(%r1), %r2 +#endif #endif /* CONFIG_PREEMPTION */ /* @@ -1163,7 +1172,7 @@ idtlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1189,7 +1198,7 @@ idtlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1223,7 +1232,7 @@ mtsp t1, %sr1 /* Restore sr1 */ - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1256,7 +1265,7 @@ mtsp t1, %sr1 /* Restore sr1 */ - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1285,7 +1294,7 @@ idtlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1313,7 +1322,7 @@ idtlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1420,7 +1429,7 @@ iitlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1444,7 +1453,7 @@ iitlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1478,7 +1487,7 @@ mtsp t1, %sr1 /* Restore sr1 */ - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1502,7 +1511,7 @@ mtsp t1, %sr1 /* Restore sr1 */ - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1532,7 +1541,7 @@ iitlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1552,7 +1561,7 @@ iitlbt pte,prot - tlb_unlock1 spc,t0,t1 + tlb_unlock1 spc,t0 rfir nop @@ -1582,7 +1591,7 @@ idtlbt pte,prot - tlb_unlock0 spc,t0,t1 + tlb_unlock0 spc,t0 rfir nop #else @@ -1608,7 +1617,7 @@ mtsp t1, %sr1 /* Restore sr1 */ - tlb_unlock0 spc,t0,t1 + tlb_unlock0 spc,t0 rfir nop @@ -1628,7 +1637,7 @@ idtlbt pte,prot - tlb_unlock0 spc,t0,t1 + tlb_unlock0 spc,t0 rfir nop #endif --- linux-5.8.0.orig/arch/parisc/kernel/irq.c +++ linux-5.8.0/arch/parisc/kernel/irq.c @@ -376,7 +376,11 @@ /* * IRQ STACK - used for irq handler */ +#ifdef CONFIG_64BIT +#define IRQ_STACK_SIZE (4096 << 4) /* 64k irq stack size */ +#else #define IRQ_STACK_SIZE (4096 << 3) /* 32k irq stack size */ +#endif union irq_stack_union { unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)]; --- linux-5.8.0.orig/arch/parisc/kernel/syscall.S +++ linux-5.8.0/arch/parisc/kernel/syscall.S @@ -640,11 +640,7 @@ sub,<> %r28, %r25, %r0 2: stw %r24, 0(%r26) /* Free lock */ -#ifdef CONFIG_SMP -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) -#endif - stw %r20, 0(%sr2,%r20) + stw,ma %r20, 0(%sr2,%r20) #if ENABLE_LWS_DEBUG /* Clear thread register indicator */ stw %r0, 4(%sr2,%r20) @@ -658,11 +654,7 @@ 3: /* Error occurred on load or store */ /* Free lock */ -#ifdef CONFIG_SMP -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) -#endif - stw %r20, 0(%sr2,%r20) + stw,ma %r20, 0(%sr2,%r20) #if ENABLE_LWS_DEBUG stw %r0, 4(%sr2,%r20) #endif @@ -863,11 +855,7 @@ cas2_end: /* Free lock */ -#ifdef CONFIG_SMP -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) -#endif - stw %r20, 0(%sr2,%r20) + stw,ma %r20, 0(%sr2,%r20) /* Enable interrupts */ ssm PSW_SM_I, %r0 /* Return to userspace, set no error */ @@ -877,11 +865,7 @@ 22: /* Error occurred on load or store */ /* Free lock */ -#ifdef CONFIG_SMP -98: LDCW 0(%sr2,%r20), %r1 /* Barrier */ -99: ALTERNATIVE(98b, 99b, ALT_COND_NO_SMP, INSN_NOP) -#endif - stw %r20, 0(%sr2,%r20) + stw,ma %r20, 0(%sr2,%r20) ssm PSW_SM_I, %r0 ldo 1(%r0),%r28 b lws_exit --- linux-5.8.0.orig/arch/powerpc/Kconfig +++ linux-5.8.0/arch/powerpc/Kconfig @@ -135,7 +135,7 @@ select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION) select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UACCESS_FLUSHCACHE - select ARCH_HAS_UACCESS_MCSAFE if PPC64 + select ARCH_HAS_COPY_MC if PPC64 select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_KEEP_MEMBLOCK @@ -146,6 +146,7 @@ select ARCH_USE_BUILTIN_BSWAP select ARCH_USE_CMPXCHG_LOCKREF if PPC64 select ARCH_WANT_IPC_PARSE_VERSION + select ARCH_WANT_IRQS_OFF_ACTIVATE_MM select ARCH_WEAK_RELEASE_ACQUIRE select BINFMT_ELF select BUILDTIME_TABLE_SORT @@ -739,7 +740,7 @@ config PPC_256K_PAGES bool "256k page size" - depends on 44x && !STDBINUTILS + depends on 44x && !STDBINUTILS && !PPC_47x help Make the page size 256k. @@ -973,6 +974,19 @@ read/write operations on these variables. Say Y if you have secure boot enabled and want to expose variables to userspace. +config PPC_RTAS_FILTER + bool "Enable filtering of RTAS syscalls" + default y + depends on PPC_RTAS + help + The RTAS syscall API has security issues that could be used to + compromise system integrity. This option enforces restrictions on the + RTAS calls and arguments passed by userspace programs to mitigate + these issues. + + Say Y unless you know what you are doing and the filter is causing + problems for you. + endmenu config ISA_DMA_API --- linux-5.8.0.orig/arch/powerpc/Makefile +++ linux-5.8.0/arch/powerpc/Makefile @@ -248,7 +248,6 @@ cpu-as-$(CONFIG_4xx) += -Wa,-m405 cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec) -cpu-as-$(CONFIG_E200) += -Wa,-me200 cpu-as-$(CONFIG_E500) += -Wa,-me500 # When using '-many -mpower4' gas will first try and find a matching power4 @@ -283,7 +282,7 @@ all: zImage # With make 3.82 we cannot mix normal and wildcard targets -BOOT_TARGETS1 := zImage zImage.initrd uImage +BOOT_TARGETS1 := zImage zImage.initrd uImage vmlinux.strip BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.% uImage.% PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2) --- linux-5.8.0.orig/arch/powerpc/boot/Makefile +++ linux-5.8.0/arch/powerpc/boot/Makefile @@ -117,7 +117,7 @@ elf_util.c $(zlib-y) devtree.c stdlib.c \ oflib.c ofconsole.c cuboot.c -src-wlib-$(CONFIG_PPC_MPC52XX) += mpc52xx-psc.c +src-wlib-$(CONFIG_PPC_MPC52xx) += mpc52xx-psc.c src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S opal.c ifndef CONFIG_PPC64_BOOT_WRAPPER src-wlib-y += crtsavres.S --- linux-5.8.0.orig/arch/powerpc/boot/serial.c +++ linux-5.8.0/arch/powerpc/boot/serial.c @@ -128,7 +128,7 @@ dt_is_compatible(devp, "fsl,cpm2-smc-uart")) rc = cpm_console_init(devp, &serial_cd); #endif -#ifdef CONFIG_PPC_MPC52XX +#ifdef CONFIG_PPC_MPC52xx else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart")) rc = mpc5200_psc_console_init(devp, &serial_cd); #endif --- linux-5.8.0.orig/arch/powerpc/configs/pasemi_defconfig +++ linux-5.8.0/arch/powerpc/configs/pasemi_defconfig @@ -109,7 +109,6 @@ CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_RADEON=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y CONFIG_SOUND=y CONFIG_SND=y --- linux-5.8.0.orig/arch/powerpc/configs/ppc6xx_defconfig +++ linux-5.8.0/arch/powerpc/configs/ppc6xx_defconfig @@ -772,7 +772,6 @@ CONFIG_FB_SM501=m CONFIG_FB_IBM_GXT4500=y CONFIG_LCD_PLATFORM=m -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_LOGO=y --- linux-5.8.0.orig/arch/powerpc/include/asm/Kbuild +++ linux-5.8.0/arch/powerpc/include/asm/Kbuild @@ -4,7 +4,6 @@ generated-y += syscall_table_c32.h generated-y += syscall_table_spu.h generic-y += export.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += vtime.h generic-y += early_ioremap.h --- linux-5.8.0.orig/arch/powerpc/include/asm/bitops.h +++ linux-5.8.0/arch/powerpc/include/asm/bitops.h @@ -216,15 +216,34 @@ */ static inline int fls(unsigned int x) { - return 32 - __builtin_clz(x); + int lz; + + if (__builtin_constant_p(x)) + return x ? 32 - __builtin_clz(x) : 0; + asm("cntlzw %0,%1" : "=r" (lz) : "r" (x)); + return 32 - lz; } #include +/* + * 64-bit can do this using one cntlzd (count leading zeroes doubleword) + * instruction; for 32-bit we use the generic version, which does two + * 32-bit fls calls. + */ +#ifdef CONFIG_PPC64 static inline int fls64(__u64 x) { - return 64 - __builtin_clzll(x); + int lz; + + if (__builtin_constant_p(x)) + return x ? 64 - __builtin_clzll(x) : 0; + asm("cntlzd %0,%1" : "=r" (lz) : "r" (x)); + return 64 - lz; } +#else +#include +#endif #ifdef CONFIG_PPC64 unsigned int __arch_hweight8(unsigned int w); --- linux-5.8.0.orig/arch/powerpc/include/asm/book3s/32/mmu-hash.h +++ linux-5.8.0/arch/powerpc/include/asm/book3s/32/mmu-hash.h @@ -94,6 +94,7 @@ } mm_context_t; void update_bats(void); +static inline void cleanup_cpu_mmu_context(void) { }; /* patch sites */ extern s32 patch__hash_page_A0, patch__hash_page_A1, patch__hash_page_A2; --- linux-5.8.0.orig/arch/powerpc/include/asm/book3s/32/pgtable.h +++ linux-5.8.0/arch/powerpc/include/asm/book3s/32/pgtable.h @@ -36,8 +36,10 @@ */ #ifdef CONFIG_PTE_64BIT #define PTE_RPN_MASK (~((1ULL << PTE_RPN_SHIFT) - 1)) +#define MAX_POSSIBLE_PHYSMEM_BITS 36 #else #define PTE_RPN_MASK (~((1UL << PTE_RPN_SHIFT) - 1)) +#define MAX_POSSIBLE_PHYSMEM_BITS 32 #endif /* @@ -527,9 +529,9 @@ if (pte_val(*ptep) & _PAGE_HASHPTE) flush_hash_entry(mm, ptep, addr); __asm__ __volatile__("\ - stw%U0%X0 %2,%0\n\ + stw%X0 %2,%0\n\ eieio\n\ - stw%U0%X0 %L2,%1" + stw%X1 %L2,%1" : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4)) : "r" (pte) : "memory"); --- linux-5.8.0.orig/arch/powerpc/include/asm/book3s/64/hash-4k.h +++ linux-5.8.0/arch/powerpc/include/asm/book3s/64/hash-4k.h @@ -13,20 +13,19 @@ */ #define MAX_EA_BITS_PER_CONTEXT 46 -#define REGION_SHIFT (MAX_EA_BITS_PER_CONTEXT - 2) /* - * Our page table limit us to 64TB. Hence for the kernel mapping, - * each MAP area is limited to 16 TB. - * The four map areas are: linear mapping, vmap, IO and vmemmap + * Our page table limit us to 64TB. For 64TB physical memory, we only need 64GB + * of vmemmap space. To better support sparse memory layout, we use 61TB + * linear map range, 1TB of vmalloc, 1TB of I/O and 1TB of vmememmap. */ +#define REGION_SHIFT (40) #define H_KERN_MAP_SIZE (ASM_CONST(1) << REGION_SHIFT) /* - * Define the address range of the kernel non-linear virtual area - * 16TB + * Define the address range of the kernel non-linear virtual area (61TB) */ -#define H_KERN_VIRT_START ASM_CONST(0xc000100000000000) +#define H_KERN_VIRT_START ASM_CONST(0xc0003d0000000000) #ifndef __ASSEMBLY__ #define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE) --- linux-5.8.0.orig/arch/powerpc/include/asm/book3s/64/kup-radix.h +++ linux-5.8.0/arch/powerpc/include/asm/book3s/64/kup-radix.h @@ -27,6 +27,7 @@ #endif .endm +#ifdef CONFIG_PPC_KUAP .macro kuap_check_amr gpr1, gpr2 #ifdef CONFIG_PPC_KUAP_DEBUG BEGIN_MMU_FTR_SECTION_NESTED(67) @@ -38,6 +39,7 @@ END_MMU_FTR_SECTION_NESTED_IFSET(MMU_FTR_RADIX_KUAP, 67) #endif .endm +#endif .macro kuap_save_amr_and_lock gpr1, gpr2, use_cr, msr_pr_cr #ifdef CONFIG_PPC_KUAP @@ -61,6 +63,10 @@ #else /* !__ASSEMBLY__ */ +#include + +DECLARE_STATIC_KEY_FALSE(uaccess_flush_key); + #ifdef CONFIG_PPC_KUAP #include @@ -103,8 +109,16 @@ static inline unsigned long get_kuap(void) { + /* + * We return AMR_KUAP_BLOCKED when we don't support KUAP because + * prevent_user_access_return needs to return AMR_KUAP_BLOCKED to + * cause restore_user_access to do a flush. + * + * This has no effect in terms of actually blocking things on hash, + * so it doesn't break anything. + */ if (!early_mmu_has_feature(MMU_FTR_RADIX_KUAP)) - return 0; + return AMR_KUAP_BLOCKED; return mfspr(SPRN_AMR); } @@ -123,6 +137,29 @@ isync(); } +static inline bool +bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write) +{ + return WARN(mmu_has_feature(MMU_FTR_RADIX_KUAP) && + (regs->kuap & (is_write ? AMR_KUAP_BLOCK_WRITE : AMR_KUAP_BLOCK_READ)), + "Bug: %s fault blocked by AMR!", is_write ? "Write" : "Read"); +} +#else /* CONFIG_PPC_KUAP */ +static inline void kuap_restore_amr(struct pt_regs *regs, unsigned long amr) { } + +static inline unsigned long kuap_get_and_check_amr(void) +{ + return 0UL; +} + +static inline unsigned long get_kuap(void) +{ + return AMR_KUAP_BLOCKED; +} + +static inline void set_kuap(unsigned long value) { } +#endif /* !CONFIG_PPC_KUAP */ + static __always_inline void allow_user_access(void __user *to, const void __user *from, unsigned long size, unsigned long dir) { @@ -142,6 +179,8 @@ unsigned long size, unsigned long dir) { set_kuap(AMR_KUAP_BLOCKED); + if (static_branch_unlikely(&uaccess_flush_key)) + do_uaccess_flush(); } static inline unsigned long prevent_user_access_return(void) @@ -149,6 +188,8 @@ unsigned long flags = get_kuap(); set_kuap(AMR_KUAP_BLOCKED); + if (static_branch_unlikely(&uaccess_flush_key)) + do_uaccess_flush(); return flags; } @@ -156,30 +197,9 @@ static inline void restore_user_access(unsigned long flags) { set_kuap(flags); + if (static_branch_unlikely(&uaccess_flush_key) && flags == AMR_KUAP_BLOCKED) + do_uaccess_flush(); } - -static inline bool -bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write) -{ - return WARN(mmu_has_feature(MMU_FTR_RADIX_KUAP) && - (regs->kuap & (is_write ? AMR_KUAP_BLOCK_WRITE : AMR_KUAP_BLOCK_READ)), - "Bug: %s fault blocked by AMR!", is_write ? "Write" : "Read"); -} -#else /* CONFIG_PPC_KUAP */ -static inline void kuap_restore_amr(struct pt_regs *regs, unsigned long amr) -{ -} - -static inline void kuap_check_amr(void) -{ -} - -static inline unsigned long kuap_get_and_check_amr(void) -{ - return 0; -} -#endif /* CONFIG_PPC_KUAP */ - #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_KUP_RADIX_H */ --- linux-5.8.0.orig/arch/powerpc/include/asm/book3s/64/mmu.h +++ linux-5.8.0/arch/powerpc/include/asm/book3s/64/mmu.h @@ -228,14 +228,14 @@ extern void hash__setup_initial_memory_limit(phys_addr_t first_memblock_base, phys_addr_t first_memblock_size); -extern void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base, - phys_addr_t first_memblock_size); static inline void setup_initial_memory_limit(phys_addr_t first_memblock_base, phys_addr_t first_memblock_size) { - if (early_radix_enabled()) - return radix__setup_initial_memory_limit(first_memblock_base, - first_memblock_size); + /* + * Hash has more strict restrictions. At this point we don't + * know which translations we will pick. Hence go with hash + * restrictions. + */ return hash__setup_initial_memory_limit(first_memblock_base, first_memblock_size); } --- linux-5.8.0.orig/arch/powerpc/include/asm/code-patching.h +++ linux-5.8.0/arch/powerpc/include/asm/code-patching.h @@ -73,7 +73,7 @@ #endif #define OP_RT_RA_MASK 0xffff0000UL -#define LIS_R2 0x3c020000UL +#define LIS_R2 0x3c400000UL #define ADDIS_R2_R12 0x3c4c0000UL #define ADDI_R2_R2 0x38420000UL --- linux-5.8.0.orig/arch/powerpc/include/asm/cpm1.h +++ linux-5.8.0/arch/powerpc/include/asm/cpm1.h @@ -68,6 +68,7 @@ #define PROFF_SPI ((uint)0x0180) #define PROFF_SCC3 ((uint)0x0200) #define PROFF_SMC1 ((uint)0x0280) +#define PROFF_DSP1 ((uint)0x02c0) #define PROFF_SCC4 ((uint)0x0300) #define PROFF_SMC2 ((uint)0x0380) --- linux-5.8.0.orig/arch/powerpc/include/asm/cpu_has_feature.h +++ linux-5.8.0/arch/powerpc/include/asm/cpu_has_feature.h @@ -7,7 +7,7 @@ #include #include -static inline bool early_cpu_has_feature(unsigned long feature) +static __always_inline bool early_cpu_has_feature(unsigned long feature) { return !!((CPU_FTRS_ALWAYS & feature) || (CPU_FTRS_POSSIBLE & cur_cpu_spec->cpu_features & feature)); @@ -46,7 +46,7 @@ return static_branch_likely(&cpu_feature_keys[i]); } #else -static inline bool cpu_has_feature(unsigned long feature) +static __always_inline bool cpu_has_feature(unsigned long feature) { return early_cpu_has_feature(feature); } --- linux-5.8.0.orig/arch/powerpc/include/asm/cputable.h +++ linux-5.8.0/arch/powerpc/include/asm/cputable.h @@ -369,7 +369,7 @@ CPU_FTR_PPC_LE | CPU_FTR_NEED_PAIRED_STWCX) #define CPU_FTRS_82XX (CPU_FTR_COMMON | CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_NOEXECUTE) #define CPU_FTRS_G2_LE (CPU_FTR_COMMON | CPU_FTR_MAYBE_CAN_DOZE | \ - CPU_FTR_MAYBE_CAN_NAP) + CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_NOEXECUTE) #define CPU_FTRS_E300 (CPU_FTR_MAYBE_CAN_DOZE | \ CPU_FTR_MAYBE_CAN_NAP | \ CPU_FTR_COMMON | CPU_FTR_NOEXECUTE) @@ -409,7 +409,6 @@ CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV | CPU_FTR_ALTIVEC_COMP | \ CPU_FTR_CELL_TB_BUG | CPU_FTR_SMT) -#define CPU_FTRS_GENERIC_32 (CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) /* 64-bit CPUs */ #define CPU_FTRS_PPC970 (CPU_FTR_LWSYNC | \ @@ -522,8 +521,6 @@ CPU_FTRS_7447 | CPU_FTRS_7447A | CPU_FTRS_82XX | CPU_FTRS_G2_LE | CPU_FTRS_E300 | CPU_FTRS_E300C2 | CPU_FTRS_CLASSIC32 | -#else - CPU_FTRS_GENERIC_32 | #endif #ifdef CONFIG_PPC_8xx CPU_FTRS_8XX | @@ -600,8 +597,6 @@ CPU_FTRS_7447 & CPU_FTRS_7447A & CPU_FTRS_82XX & CPU_FTRS_G2_LE & CPU_FTRS_E300 & CPU_FTRS_E300C2 & CPU_FTRS_CLASSIC32 & -#else - CPU_FTRS_GENERIC_32 & #endif #ifdef CONFIG_PPC_8xx CPU_FTRS_8XX & --- linux-5.8.0.orig/arch/powerpc/include/asm/cputhreads.h +++ linux-5.8.0/arch/powerpc/include/asm/cputhreads.h @@ -3,6 +3,7 @@ #define _ASM_POWERPC_CPUTHREADS_H #ifndef __ASSEMBLY__ +#include #include #include --- linux-5.8.0.orig/arch/powerpc/include/asm/dcr-native.h +++ linux-5.8.0/arch/powerpc/include/asm/dcr-native.h @@ -53,8 +53,8 @@ #define mfdcr(rn) \ ({unsigned int rval; \ if (__builtin_constant_p(rn) && rn < 1024) \ - asm volatile("mfdcr %0," __stringify(rn) \ - : "=r" (rval)); \ + asm volatile("mfdcr %0, %1" : "=r" (rval) \ + : "n" (rn)); \ else if (likely(cpu_has_feature(CPU_FTR_INDEXED_DCR))) \ rval = mfdcrx(rn); \ else \ @@ -64,8 +64,8 @@ #define mtdcr(rn, v) \ do { \ if (__builtin_constant_p(rn) && rn < 1024) \ - asm volatile("mtdcr " __stringify(rn) ",%0" \ - : : "r" (v)); \ + asm volatile("mtdcr %0, %1" \ + : : "n" (rn), "r" (v)); \ else if (likely(cpu_has_feature(CPU_FTR_INDEXED_DCR))) \ mtdcrx(rn, v); \ else \ --- linux-5.8.0.orig/arch/powerpc/include/asm/drmem.h +++ linux-5.8.0/arch/powerpc/include/asm/drmem.h @@ -8,26 +8,39 @@ #ifndef _ASM_POWERPC_LMB_H #define _ASM_POWERPC_LMB_H +#include + struct drmem_lmb { u64 base_addr; u32 drc_index; u32 aa_index; u32 flags; -#ifdef CONFIG_MEMORY_HOTPLUG - int nid; -#endif }; struct drmem_lmb_info { struct drmem_lmb *lmbs; int n_lmbs; - u32 lmb_size; + u64 lmb_size; }; extern struct drmem_lmb_info *drmem_info; +static inline struct drmem_lmb *drmem_lmb_next(struct drmem_lmb *lmb, + const struct drmem_lmb *start) +{ + /* + * DLPAR code paths can take several milliseconds per element + * when interacting with firmware. Ensure that we don't + * unfairly monopolize the CPU. + */ + if (((++lmb - start) % 16) == 0) + cond_resched(); + + return lmb; +} + #define for_each_drmem_lmb_in_range(lmb, start, end) \ - for ((lmb) = (start); (lmb) < (end); (lmb)++) + for ((lmb) = (start); (lmb) < (end); lmb = drmem_lmb_next(lmb, start)) #define for_each_drmem_lmb(lmb) \ for_each_drmem_lmb_in_range((lmb), \ @@ -67,7 +80,7 @@ #define DRCONF_MEM_RESERVED 0x00000080 #define DRCONF_MEM_HOTREMOVABLE 0x00000100 -static inline u32 drmem_lmb_size(void) +static inline u64 drmem_lmb_size(void) { return drmem_info->lmb_size; } @@ -104,22 +117,4 @@ lmb->aa_index = 0xffffffff; } -#ifdef CONFIG_MEMORY_HOTPLUG -static inline void lmb_set_nid(struct drmem_lmb *lmb) -{ - lmb->nid = memory_add_physaddr_to_nid(lmb->base_addr); -} -static inline void lmb_clear_nid(struct drmem_lmb *lmb) -{ - lmb->nid = -1; -} -#else -static inline void lmb_set_nid(struct drmem_lmb *lmb) -{ -} -static inline void lmb_clear_nid(struct drmem_lmb *lmb) -{ -} -#endif - #endif /* _ASM_POWERPC_LMB_H */ --- linux-5.8.0.orig/arch/powerpc/include/asm/exception-64s.h +++ linux-5.8.0/arch/powerpc/include/asm/exception-64s.h @@ -57,11 +57,18 @@ nop; \ nop +#define ENTRY_FLUSH_SLOT \ + ENTRY_FLUSH_FIXUP_SECTION; \ + nop; \ + nop; \ + nop; + /* * r10 must be free to use, r13 must be paca */ #define INTERRUPT_TO_KERNEL \ - STF_ENTRY_BARRIER_SLOT + STF_ENTRY_BARRIER_SLOT; \ + ENTRY_FLUSH_SLOT /* * Macros for annotating the expected destination of (h)rfid @@ -123,6 +130,9 @@ hrfid; \ b hrfi_flush_fallback +#else /* __ASSEMBLY__ */ +/* Prototype for function defined in exceptions-64s.S */ +void do_uaccess_flush(void); #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_EXCEPTION_H */ --- linux-5.8.0.orig/arch/powerpc/include/asm/feature-fixups.h +++ linux-5.8.0/arch/powerpc/include/asm/feature-fixups.h @@ -205,6 +205,22 @@ FTR_ENTRY_OFFSET 955b-956b; \ .popsection; +#define UACCESS_FLUSH_FIXUP_SECTION \ +959: \ + .pushsection __uaccess_flush_fixup,"a"; \ + .align 2; \ +960: \ + FTR_ENTRY_OFFSET 959b-960b; \ + .popsection; + +#define ENTRY_FLUSH_FIXUP_SECTION \ +957: \ + .pushsection __entry_flush_fixup,"a"; \ + .align 2; \ +958: \ + FTR_ENTRY_OFFSET 957b-958b; \ + .popsection; + #define RFI_FLUSH_FIXUP_SECTION \ 951: \ .pushsection __rfi_flush_fixup,"a"; \ @@ -237,8 +253,11 @@ #include extern long stf_barrier_fallback; +extern long entry_flush_fallback; extern long __start___stf_entry_barrier_fixup, __stop___stf_entry_barrier_fixup; extern long __start___stf_exit_barrier_fixup, __stop___stf_exit_barrier_fixup; +extern long __start___uaccess_flush_fixup, __stop___uaccess_flush_fixup; +extern long __start___entry_flush_fixup, __stop___entry_flush_fixup; extern long __start___rfi_flush_fixup, __stop___rfi_flush_fixup; extern long __start___barrier_nospec_fixup, __stop___barrier_nospec_fixup; extern long __start__btb_flush_fixup, __stop__btb_flush_fixup; --- linux-5.8.0.orig/arch/powerpc/include/asm/fixmap.h +++ linux-5.8.0/arch/powerpc/include/asm/fixmap.h @@ -52,7 +52,7 @@ FIX_HOLE, /* reserve the top 128K for early debugging purposes */ FIX_EARLY_DEBUG_TOP = FIX_HOLE, - FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+((128*1024)/PAGE_SIZE)-1, + FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+(ALIGN(SZ_128K, PAGE_SIZE)/PAGE_SIZE)-1, #ifdef CONFIG_HIGHMEM FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */ FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1, --- linux-5.8.0.orig/arch/powerpc/include/asm/hw_breakpoint.h +++ linux-5.8.0/arch/powerpc/include/asm/hw_breakpoint.h @@ -40,6 +40,7 @@ #else #define HW_BREAKPOINT_SIZE 0x8 #endif +#define HW_BREAKPOINT_SIZE_QUADWORD 0x10 #define DABR_MAX_LEN 8 #define DAWR_MAX_LEN 512 --- linux-5.8.0.orig/arch/powerpc/include/asm/kasan.h +++ linux-5.8.0/arch/powerpc/include/asm/kasan.h @@ -27,10 +27,12 @@ #ifdef CONFIG_KASAN void kasan_early_init(void); +void kasan_mmu_init(void); void kasan_init(void); void kasan_late_init(void); #else static inline void kasan_init(void) { } +static inline void kasan_mmu_init(void) { } static inline void kasan_late_init(void) { } #endif --- linux-5.8.0.orig/arch/powerpc/include/asm/kup.h +++ linux-5.8.0/arch/powerpc/include/asm/kup.h @@ -14,7 +14,7 @@ #define KUAP_CURRENT_WRITE 8 #define KUAP_CURRENT (KUAP_CURRENT_READ | KUAP_CURRENT_WRITE) -#ifdef CONFIG_PPC64 +#ifdef CONFIG_PPC_BOOK3S_64 #include #endif #ifdef CONFIG_PPC_8xx @@ -35,6 +35,9 @@ .macro kuap_check current, gpr .endm +.macro kuap_check_amr gpr1, gpr2 +.endm + #endif #else /* !__ASSEMBLY__ */ @@ -53,17 +56,28 @@ void setup_kuap(bool disabled); #else static inline void setup_kuap(bool disabled) { } + +static inline bool +bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write) +{ + return false; +} + +static inline void kuap_check_amr(void) { } + +/* + * book3s/64/kup-radix.h defines these functions for the !KUAP case to flush + * the L1D cache after user accesses. Only include the empty stubs for other + * platforms. + */ +#ifndef CONFIG_PPC_BOOK3S_64 static inline void allow_user_access(void __user *to, const void __user *from, unsigned long size, unsigned long dir) { } static inline void prevent_user_access(void __user *to, const void __user *from, unsigned long size, unsigned long dir) { } static inline unsigned long prevent_user_access_return(void) { return 0UL; } static inline void restore_user_access(unsigned long flags) { } -static inline bool -bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write) -{ - return false; -} +#endif /* CONFIG_PPC_BOOK3S_64 */ #endif /* CONFIG_PPC_KUAP */ static inline void allow_read_from_user(const void __user *from, unsigned long size) --- linux-5.8.0.orig/arch/powerpc/include/asm/kvm_host.h +++ linux-5.8.0/arch/powerpc/include/asm/kvm_host.h @@ -58,7 +58,8 @@ #define KVM_ARCH_WANT_MMU_NOTIFIER extern int kvm_unmap_hva_range(struct kvm *kvm, - unsigned long start, unsigned long end); + unsigned long start, unsigned long end, + unsigned flags); extern int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); extern int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); extern int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); --- linux-5.8.0.orig/arch/powerpc/include/asm/machdep.h +++ linux-5.8.0/arch/powerpc/include/asm/machdep.h @@ -59,6 +59,9 @@ int (*pcibios_root_bridge_prepare)(struct pci_host_bridge *bridge); + /* finds all the pci_controllers present at boot */ + void (*discover_phbs)(void); + /* To setup PHBs when using automatic OF platform driver for PCI */ int (*pci_setup_phb)(struct pci_controller *host); --- linux-5.8.0.orig/arch/powerpc/include/asm/mmu_context.h +++ linux-5.8.0/arch/powerpc/include/asm/mmu_context.h @@ -246,7 +246,7 @@ */ static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next) { - switch_mm(prev, next, current); + switch_mm_irqs_off(prev, next, current); } /* We don't currently use enter_lazy_tlb() for anything */ --- linux-5.8.0.orig/arch/powerpc/include/asm/nohash/32/pgtable.h +++ linux-5.8.0/arch/powerpc/include/asm/nohash/32/pgtable.h @@ -153,8 +153,10 @@ */ #if defined(CONFIG_PPC32) && defined(CONFIG_PTE_64BIT) #define PTE_RPN_MASK (~((1ULL << PTE_RPN_SHIFT) - 1)) +#define MAX_POSSIBLE_PHYSMEM_BITS 36 #else #define PTE_RPN_MASK (~((1UL << PTE_RPN_SHIFT) - 1)) +#define MAX_POSSIBLE_PHYSMEM_BITS 32 #endif /* --- linux-5.8.0.orig/arch/powerpc/include/asm/nohash/pgtable.h +++ linux-5.8.0/arch/powerpc/include/asm/nohash/pgtable.h @@ -197,9 +197,9 @@ */ if (IS_ENABLED(CONFIG_PPC32) && IS_ENABLED(CONFIG_PTE_64BIT) && !percpu) { __asm__ __volatile__("\ - stw%U0%X0 %2,%0\n\ + stw%X0 %2,%0\n\ eieio\n\ - stw%U0%X0 %L2,%1" + stw%X1 %L2,%1" : "=m" (*ptep), "=m" (*((unsigned char *)ptep+4)) : "r" (pte) : "memory"); return; --- linux-5.8.0.orig/arch/powerpc/include/asm/percpu.h +++ linux-5.8.0/arch/powerpc/include/asm/percpu.h @@ -10,8 +10,6 @@ #ifdef CONFIG_SMP -#include - #define __my_cpu_offset local_paca->data_offset #endif /* CONFIG_SMP */ @@ -19,4 +17,6 @@ #include +#include + #endif /* _ASM_POWERPC_PERCPU_H_ */ --- linux-5.8.0.orig/arch/powerpc/include/asm/perf_event.h +++ linux-5.8.0/arch/powerpc/include/asm/perf_event.h @@ -12,6 +12,8 @@ #ifdef CONFIG_PPC_PERF_CTRS #include +#else +static inline bool is_sier_available(void) { return false; } #endif #ifdef CONFIG_FSL_EMB_PERF_EVENT --- linux-5.8.0.orig/arch/powerpc/include/asm/ptrace.h +++ linux-5.8.0/arch/powerpc/include/asm/ptrace.h @@ -62,6 +62,9 @@ }; #endif + +#define STACK_FRAME_WITH_PT_REGS (STACK_FRAME_OVERHEAD + sizeof(struct pt_regs)) + #ifdef __powerpc64__ /* @@ -190,7 +193,7 @@ #define TRAP_FLAGS_MASK 0x11 #define TRAP(regs) ((regs)->trap & ~TRAP_FLAGS_MASK) #define FULL_REGS(regs) (((regs)->trap & 1) == 0) -#define SET_FULL_REGS(regs) ((regs)->trap |= 1) +#define SET_FULL_REGS(regs) ((regs)->trap &= ~1) #endif #define CHECK_FULL_REGS(regs) BUG_ON(!FULL_REGS(regs)) #define NV_REG_POISON 0xdeadbeefdeadbeefUL @@ -205,7 +208,7 @@ #define TRAP_FLAGS_MASK 0x1F #define TRAP(regs) ((regs)->trap & ~TRAP_FLAGS_MASK) #define FULL_REGS(regs) (((regs)->trap & 1) == 0) -#define SET_FULL_REGS(regs) ((regs)->trap |= 1) +#define SET_FULL_REGS(regs) ((regs)->trap &= ~1) #define IS_CRITICAL_EXC(regs) (((regs)->trap & 2) != 0) #define IS_MCHECK_EXC(regs) (((regs)->trap & 4) != 0) #define IS_DEBUG_EXC(regs) (((regs)->trap & 8) != 0) @@ -238,7 +241,7 @@ } #define arch_has_single_step() (1) -#ifndef CONFIG_BOOK3S_601 +#ifndef CONFIG_PPC_BOOK3S_601 #define arch_has_block_step() (true) #else #define arch_has_block_step() (false) --- linux-5.8.0.orig/arch/powerpc/include/asm/reg.h +++ linux-5.8.0/arch/powerpc/include/asm/reg.h @@ -815,7 +815,7 @@ #define THRM1_TIN (1 << 31) #define THRM1_TIV (1 << 30) #define THRM1_THRES(x) ((x&0x7f)<<23) -#define THRM3_SITV(x) ((x&0x3fff)<<1) +#define THRM3_SITV(x) ((x & 0x1fff) << 1) #define THRM1_TID (1<<2) #define THRM1_TIE (1<<1) #define THRM1_V (1<<0) --- linux-5.8.0.orig/arch/powerpc/include/asm/rtas.h +++ linux-5.8.0/arch/powerpc/include/asm/rtas.h @@ -253,8 +253,6 @@ extern void rtas_progress(char *s, unsigned short hex); extern int rtas_suspend_cpu(struct rtas_suspend_me_data *data); extern int rtas_suspend_last_cpu(struct rtas_suspend_me_data *data); -extern int rtas_online_cpus_mask(cpumask_var_t cpus); -extern int rtas_offline_cpus_mask(cpumask_var_t cpus); extern int rtas_ibm_suspend_me(u64 handle); struct rtc_time; --- linux-5.8.0.orig/arch/powerpc/include/asm/security_features.h +++ linux-5.8.0/arch/powerpc/include/asm/security_features.h @@ -84,12 +84,19 @@ // Software required to flush link stack on context switch #define SEC_FTR_FLUSH_LINK_STACK 0x0000000000001000ull +// The L1-D cache should be flushed when entering the kernel +#define SEC_FTR_L1D_FLUSH_ENTRY 0x0000000000004000ull + +// The L1-D cache should be flushed after user accesses from the kernel +#define SEC_FTR_L1D_FLUSH_UACCESS 0x0000000000008000ull // Features enabled by default #define SEC_FTR_DEFAULT \ (SEC_FTR_L1D_FLUSH_HV | \ SEC_FTR_L1D_FLUSH_PR | \ SEC_FTR_BNDS_CHK_SPEC_BAR | \ + SEC_FTR_L1D_FLUSH_ENTRY | \ + SEC_FTR_L1D_FLUSH_UACCESS | \ SEC_FTR_FAVOUR_SECURITY) #endif /* _ASM_POWERPC_SECURITY_FEATURES_H */ --- linux-5.8.0.orig/arch/powerpc/include/asm/setup.h +++ linux-5.8.0/arch/powerpc/include/asm/setup.h @@ -52,12 +52,16 @@ }; void setup_rfi_flush(enum l1d_flush_type, bool enable); +void setup_entry_flush(bool enable); +void setup_uaccess_flush(bool enable); void do_rfi_flush_fixups(enum l1d_flush_type types); #ifdef CONFIG_PPC_BARRIER_NOSPEC void setup_barrier_nospec(void); #else static inline void setup_barrier_nospec(void) { }; #endif +void do_uaccess_flush_fixups(enum l1d_flush_type types); +void do_entry_flush_fixups(enum l1d_flush_type types); void do_barrier_nospec_fixups(bool enable); extern bool barrier_nospec_enabled; --- linux-5.8.0.orig/arch/powerpc/include/asm/string.h +++ linux-5.8.0/arch/powerpc/include/asm/string.h @@ -53,9 +53,7 @@ #ifndef CONFIG_KASAN #define __HAVE_ARCH_MEMSET32 #define __HAVE_ARCH_MEMSET64 -#define __HAVE_ARCH_MEMCPY_MCSAFE -extern int memcpy_mcsafe(void *dst, const void *src, __kernel_size_t sz); extern void *__memset16(uint16_t *, uint16_t v, __kernel_size_t); extern void *__memset32(uint32_t *, uint32_t v, __kernel_size_t); extern void *__memset64(uint64_t *, uint64_t v, __kernel_size_t); --- linux-5.8.0.orig/arch/powerpc/include/asm/svm.h +++ linux-5.8.0/arch/powerpc/include/asm/svm.h @@ -15,6 +15,8 @@ return mfmsr() & MSR_S; } +void __init svm_swiotlb_init(void); + void dtl_cache_ctor(void *addr); #define get_dtl_cache_ctor() (is_secure_guest() ? dtl_cache_ctor : NULL) @@ -25,6 +27,8 @@ return false; } +static inline void svm_swiotlb_init(void) {} + #define get_dtl_cache_ctor() NULL #endif /* CONFIG_PPC_SVM */ --- linux-5.8.0.orig/arch/powerpc/include/asm/switch_to.h +++ linux-5.8.0/arch/powerpc/include/asm/switch_to.h @@ -71,6 +71,16 @@ { msr_check_and_clear(MSR_FP|MSR_VEC|MSR_VSX); } +#else +static inline void enable_kernel_vsx(void) +{ + BUILD_BUG(); +} + +static inline void disable_kernel_vsx(void) +{ + BUILD_BUG(); +} #endif #ifdef CONFIG_SPE --- linux-5.8.0.orig/arch/powerpc/include/asm/timex.h +++ linux-5.8.0/arch/powerpc/include/asm/timex.h @@ -17,7 +17,7 @@ static inline cycles_t get_cycles(void) { - if (IS_ENABLED(CONFIG_BOOK3S_601)) + if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) return 0; return mftb(); --- linux-5.8.0.orig/arch/powerpc/include/asm/tlb.h +++ linux-5.8.0/arch/powerpc/include/asm/tlb.h @@ -67,19 +67,6 @@ return false; return cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm)); } -static inline void mm_reset_thread_local(struct mm_struct *mm) -{ - WARN_ON(atomic_read(&mm->context.copros) > 0); - /* - * It's possible for mm_access to take a reference on mm_users to - * access the remote mm from another thread, but it's not allowed - * to set mm_cpumask, so mm_users may be > 1 here. - */ - WARN_ON(current->mm != mm); - atomic_set(&mm->context.active_cpus, 1); - cpumask_clear(mm_cpumask(mm)); - cpumask_set_cpu(smp_processor_id(), mm_cpumask(mm)); -} #else /* CONFIG_PPC_BOOK3S_64 */ static inline int mm_is_thread_local(struct mm_struct *mm) { --- linux-5.8.0.orig/arch/powerpc/include/asm/uaccess.h +++ linux-5.8.0/arch/powerpc/include/asm/uaccess.h @@ -289,8 +289,6 @@ #define __put_user_nocheck_goto(x, ptr, size, label) \ do { \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ - if (!is_kernel_addr((unsigned long)__pu_addr)) \ - might_fault(); \ __chk_user_ptr(ptr); \ __put_user_size_goto((x), __pu_addr, (size), label); \ } while (0) @@ -386,7 +384,7 @@ __typeof__(size) __gu_size = (size); \ \ __chk_user_ptr(__gu_addr); \ - if (!is_kernel_addr((unsigned long)__gu_addr)) \ + if (do_allow && !is_kernel_addr((unsigned long)__gu_addr)) \ might_fault(); \ barrier_nospec(); \ if (do_allow) \ @@ -436,6 +434,32 @@ extern unsigned long __copy_tofrom_user(void __user *to, const void __user *from, unsigned long size); +#ifdef CONFIG_ARCH_HAS_COPY_MC +unsigned long __must_check +copy_mc_generic(void *to, const void *from, unsigned long size); + +static inline unsigned long __must_check +copy_mc_to_kernel(void *to, const void *from, unsigned long size) +{ + return copy_mc_generic(to, from, size); +} +#define copy_mc_to_kernel copy_mc_to_kernel + +static inline unsigned long __must_check +copy_mc_to_user(void __user *to, const void *from, unsigned long n) +{ + if (likely(check_copy_size(from, n, true))) { + if (access_ok(to, n)) { + allow_write_to_user(to, n); + n = copy_mc_generic((void *)to, from, n); + prevent_write_to_user(to, n); + } + } + + return n; +} +#endif + #ifdef __powerpc64__ static inline unsigned long raw_copy_in_user(void __user *to, const void __user *from, unsigned long n) @@ -524,20 +548,6 @@ return ret; } -static __always_inline unsigned long __must_check -copy_to_user_mcsafe(void __user *to, const void *from, unsigned long n) -{ - if (likely(check_copy_size(from, n, true))) { - if (access_ok(to, n)) { - allow_write_to_user(to, n); - n = memcpy_mcsafe((void *)to, from, n); - prevent_write_to_user(to, n); - } - } - - return n; -} - unsigned long __arch_clear_user(void __user *addr, unsigned long size); static inline unsigned long clear_user(void __user *addr, unsigned long size) @@ -569,6 +579,9 @@ { if (unlikely(!access_ok(ptr, len))) return false; + + might_fault(); + allow_read_write_user((void __user *)ptr, ptr, len); return true; } @@ -582,6 +595,9 @@ { if (unlikely(!access_ok(ptr, len))) return false; + + might_fault(); + allow_read_from_user(ptr, len); return true; } @@ -593,6 +609,9 @@ { if (unlikely(!access_ok(ptr, len))) return false; + + might_fault(); + allow_write_to_user((void __user *)ptr, len); return true; } --- linux-5.8.0.orig/arch/powerpc/kernel/Makefile +++ linux-5.8.0/arch/powerpc/kernel/Makefile @@ -172,6 +172,9 @@ KCOV_INSTRUMENT_setup_64.o := n KCOV_INSTRUMENT_paca.o := n +CFLAGS_setup_64.o += -fno-stack-protector +CFLAGS_paca.o += -fno-stack-protector + extra-$(CONFIG_PPC_FPU) += fpu.o extra-$(CONFIG_ALTIVEC) += vector.o extra-$(CONFIG_PPC64) += entry_64.o --- linux-5.8.0.orig/arch/powerpc/kernel/asm-offsets.c +++ linux-5.8.0/arch/powerpc/kernel/asm-offsets.c @@ -306,7 +306,7 @@ /* Interrupt register frame */ DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE); - DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs)); + DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_WITH_PT_REGS); STACK_PT_REGS_OFFSET(GPR0, gpr[0]); STACK_PT_REGS_OFFSET(GPR1, gpr[1]); STACK_PT_REGS_OFFSET(GPR2, gpr[2]); --- linux-5.8.0.orig/arch/powerpc/kernel/dma-iommu.c +++ linux-5.8.0/arch/powerpc/kernel/dma-iommu.c @@ -160,7 +160,8 @@ return bypass_mask; } - mask = 1ULL < (fls_long(tbl->it_offset + tbl->it_size) - 1); + mask = 1ULL << (fls_long(tbl->it_offset + tbl->it_size) + + tbl->it_page_shift - 1); mask += mask - 1; return mask; --- linux-5.8.0.orig/arch/powerpc/kernel/eeh_cache.c +++ linux-5.8.0/arch/powerpc/kernel/eeh_cache.c @@ -264,8 +264,9 @@ { struct pci_io_addr_range *piar; struct rb_node *n; + unsigned long flags; - spin_lock(&pci_io_addr_cache_root.piar_lock); + spin_lock_irqsave(&pci_io_addr_cache_root.piar_lock, flags); for (n = rb_first(&pci_io_addr_cache_root.rb_root); n; n = rb_next(n)) { piar = rb_entry(n, struct pci_io_addr_range, rb_node); @@ -273,7 +274,7 @@ (piar->flags & IORESOURCE_IO) ? "i/o" : "mem", &piar->addr_lo, &piar->addr_hi, pci_name(piar->pcidev)); } - spin_unlock(&pci_io_addr_cache_root.piar_lock); + spin_unlock_irqrestore(&pci_io_addr_cache_root.piar_lock, flags); return 0; } --- linux-5.8.0.orig/arch/powerpc/kernel/entry_32.S +++ linux-5.8.0/arch/powerpc/kernel/entry_32.S @@ -344,6 +344,9 @@ .globl transfer_to_syscall transfer_to_syscall: +#ifdef CONFIG_PPC_BOOK3S_32 + kuep_lock r11, r12 +#endif #ifdef CONFIG_TRACE_IRQFLAGS andi. r12,r9,MSR_EE beq- trace_syscall_entry_irq_off --- linux-5.8.0.orig/arch/powerpc/kernel/exceptions-64s.S +++ linux-5.8.0/arch/powerpc/kernel/exceptions-64s.S @@ -470,7 +470,7 @@ ld r10,PACAKMSR(r13) /* get MSR value for kernel */ /* MSR[RI] is clear iff using SRR regs */ - .if IHSRR == EXC_HV_OR_STD + .if IHSRR_IF_HVMODE BEGIN_FTR_SECTION xori r10,r10,MSR_RI END_FTR_SECTION_IFCLR(CPU_FTR_HVMODE) @@ -910,8 +910,6 @@ * Vectors for the FWNMI option. Share common code. */ TRAMP_REAL_BEGIN(system_reset_fwnmi) - /* XXX: fwnmi guest could run a nested/PR guest, so why no test? */ - __IKVM_REAL(system_reset)=0 GEN_INT_ENTRY system_reset, virt=0 #endif /* CONFIG_PPC_PSERIES */ @@ -1322,6 +1320,11 @@ * If none is found, do a Linux page fault. Linux page faults can happen in * kernel mode due to user copy operations of course. * + * KVM: The KVM HDSI handler may perform a load with MSR[DR]=1 in guest + * MMU context, which may cause a DSI in the host, which must go to the + * KVM handler. MSR[IR] is not enabled, so the real-mode handler will + * always be used regardless of AIL setting. + * * - Radix MMU * The hardware loads from the Linux page table directly, so a fault goes * immediately to Linux page fault. @@ -1332,10 +1335,8 @@ IVEC=0x300 IDAR=1 IDSISR=1 -#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE IKVM_SKIP=1 IKVM_REAL=1 -#endif INT_DEFINE_END(data_access) EXC_REAL_BEGIN(data_access, 0x300, 0x80) @@ -1374,6 +1375,8 @@ * ppc64_bolted_size (first segment). The kernel handler must avoid stomping * on user-handler data structures. * + * KVM: Same as 0x300, DSLB must test for KVM guest. + * * A dedicated save area EXSLB is used (XXX: but it actually need not be * these days, we could use EXGEN). */ @@ -1382,10 +1385,8 @@ IAREA=PACA_EXSLB IRECONCILE=0 IDAR=1 -#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE IKVM_SKIP=1 IKVM_REAL=1 -#endif INT_DEFINE_END(data_access_slb) EXC_REAL_BEGIN(data_access_slb, 0x380, 0x80) @@ -2860,15 +2861,8 @@ .endr blr -TRAMP_REAL_BEGIN(rfi_flush_fallback) - SET_SCRATCH0(r13); - GET_PACA(r13); - std r1,PACA_EXRFI+EX_R12(r13) - ld r1,PACAKSAVE(r13) - std r9,PACA_EXRFI+EX_R9(r13) - std r10,PACA_EXRFI+EX_R10(r13) - std r11,PACA_EXRFI+EX_R11(r13) - mfctr r9 +/* Clobbers r10, r11, ctr */ +.macro L1D_DISPLACEMENT_FLUSH ld r10,PACA_RFI_FLUSH_FALLBACK_AREA(r13) ld r11,PACA_L1D_FLUSH_SIZE(r13) srdi r11,r11,(7 + 3) /* 128 byte lines, unrolled 8x */ @@ -2879,7 +2873,7 @@ sync /* - * The load adresses are at staggered offsets within cachelines, + * The load addresses are at staggered offsets within cachelines, * which suits some pipelines better (on others it should not * hurt). */ @@ -2894,7 +2888,30 @@ ld r11,(0x80 + 8)*7(r10) addi r10,r10,0x80*8 bdnz 1b +.endm +TRAMP_REAL_BEGIN(entry_flush_fallback) + std r9,PACA_EXRFI+EX_R9(r13) + std r10,PACA_EXRFI+EX_R10(r13) + std r11,PACA_EXRFI+EX_R11(r13) + mfctr r9 + L1D_DISPLACEMENT_FLUSH + mtctr r9 + ld r9,PACA_EXRFI+EX_R9(r13) + ld r10,PACA_EXRFI+EX_R10(r13) + ld r11,PACA_EXRFI+EX_R11(r13) + blr + +TRAMP_REAL_BEGIN(rfi_flush_fallback) + SET_SCRATCH0(r13); + GET_PACA(r13); + std r1,PACA_EXRFI+EX_R12(r13) + ld r1,PACAKSAVE(r13) + std r9,PACA_EXRFI+EX_R9(r13) + std r10,PACA_EXRFI+EX_R10(r13) + std r11,PACA_EXRFI+EX_R11(r13) + mfctr r9 + L1D_DISPLACEMENT_FLUSH mtctr r9 ld r9,PACA_EXRFI+EX_R9(r13) ld r10,PACA_EXRFI+EX_R10(r13) @@ -2912,32 +2929,7 @@ std r10,PACA_EXRFI+EX_R10(r13) std r11,PACA_EXRFI+EX_R11(r13) mfctr r9 - ld r10,PACA_RFI_FLUSH_FALLBACK_AREA(r13) - ld r11,PACA_L1D_FLUSH_SIZE(r13) - srdi r11,r11,(7 + 3) /* 128 byte lines, unrolled 8x */ - mtctr r11 - DCBT_BOOK3S_STOP_ALL_STREAM_IDS(r11) /* Stop prefetch streams */ - - /* order ld/st prior to dcbt stop all streams with flushing */ - sync - - /* - * The load adresses are at staggered offsets within cachelines, - * which suits some pipelines better (on others it should not - * hurt). - */ -1: - ld r11,(0x80 + 8)*0(r10) - ld r11,(0x80 + 8)*1(r10) - ld r11,(0x80 + 8)*2(r10) - ld r11,(0x80 + 8)*3(r10) - ld r11,(0x80 + 8)*4(r10) - ld r11,(0x80 + 8)*5(r10) - ld r11,(0x80 + 8)*6(r10) - ld r11,(0x80 + 8)*7(r10) - addi r10,r10,0x80*8 - bdnz 1b - + L1D_DISPLACEMENT_FLUSH mtctr r9 ld r9,PACA_EXRFI+EX_R9(r13) ld r10,PACA_EXRFI+EX_R10(r13) @@ -2947,8 +2939,21 @@ hrfid USE_TEXT_SECTION() - MASKED_INTERRUPT - MASKED_INTERRUPT hsrr=1 + +_GLOBAL(do_uaccess_flush) + UACCESS_FLUSH_FIXUP_SECTION + nop + nop + nop + blr + L1D_DISPLACEMENT_FLUSH + blr +_ASM_NOKPROBE_SYMBOL(do_uaccess_flush) +EXPORT_SYMBOL(do_uaccess_flush) + + +MASKED_INTERRUPT +MASKED_INTERRUPT hsrr=1 #ifdef CONFIG_KVM_BOOK3S_64_HANDLER kvmppc_skip_interrupt: --- linux-5.8.0.orig/arch/powerpc/kernel/head_32.S +++ linux-5.8.0/arch/powerpc/kernel/head_32.S @@ -274,14 +274,8 @@ DO_KVM 0x200 MachineCheck: EXCEPTION_PROLOG_0 -#ifdef CONFIG_VMAP_STACK - li r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ - mtmsr r11 - isync -#endif #ifdef CONFIG_PPC_CHRP mfspr r11, SPRN_SPRG_THREAD - tovirt_vmstack r11, r11 lwz r11, RTAS_SP(r11) cmpwi cr1, r11, 0 bne cr1, 7f @@ -478,14 +472,11 @@ cmplw 0,r1,r3 #endif mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP - li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC -#else - li r1,_PAGE_PRESENT | _PAGE_EXEC -#endif + li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER #if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) bge- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ + li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */ #endif 112: rlwimi r2,r3,12,20,29 /* insert top 10 bits of address */ @@ -544,13 +535,10 @@ lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP - li r1, _PAGE_PRESENT | _PAGE_ACCESSED -#else - li r1, _PAGE_PRESENT -#endif + li r1, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER bge- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ + li r1, _PAGE_PRESENT | _PAGE_ACCESSED addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */ 112: rlwimi r2,r3,12,20,29 /* insert top 10 bits of address */ lwz r2,0(r2) /* get pmd entry */ @@ -624,13 +612,10 @@ lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP - li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED -#else - li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT -#endif + li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER bge- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ + li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */ 112: rlwimi r2,r3,12,20,29 /* insert top 10 bits of address */ lwz r2,0(r2) /* get pmd entry */ @@ -998,7 +983,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) blr -load_segment_registers: +_GLOBAL(load_segment_registers) li r0, NUM_USER_SEGMENTS /* load up user segment register values */ mtctr r0 /* for context 0 */ li r3, 0 /* Kp = 0, Ks = 0, VSID = 0 */ --- linux-5.8.0.orig/arch/powerpc/kernel/head_32.h +++ linux-5.8.0/arch/powerpc/kernel/head_32.h @@ -40,48 +40,52 @@ .macro EXCEPTION_PROLOG_1 for_rtas=0 #ifdef CONFIG_VMAP_STACK - .ifeq \for_rtas - li r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ - mtmsr r11 - isync - .endif - subi r11, r1, INT_FRAME_SIZE /* use r1 if kernel */ + mr r11, r1 + subi r1, r1, INT_FRAME_SIZE /* use r1 if kernel */ + beq 1f + mfspr r1,SPRN_SPRG_THREAD + lwz r1,TASK_STACK-THREAD(r1) + addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE #else - tophys(r11,r1) /* use tophys(r1) if kernel */ - subi r11, r11, INT_FRAME_SIZE /* alloc exc. frame */ -#endif + subi r11, r1, INT_FRAME_SIZE /* use r1 if kernel */ beq 1f mfspr r11,SPRN_SPRG_THREAD - tovirt_vmstack r11, r11 lwz r11,TASK_STACK-THREAD(r11) addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE - tophys_novmstack r11, r11 +#endif 1: + tophys_novmstack r11, r11 #ifdef CONFIG_VMAP_STACK - mtcrf 0x7f, r11 + mtcrf 0x7f, r1 bt 32 - THREAD_ALIGN_SHIFT, stack_overflow #endif .endm .macro EXCEPTION_PROLOG_2 handle_dar_dsisr=0 -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION +#ifdef CONFIG_VMAP_STACK mtcr r10 -FTR_SECTION_ELSE - stw r10, _CCR(r11) -ALT_MMU_FTR_SECTION_END_IFSET(MMU_FTR_HPTE_TABLE) + li r10, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ + mtmsr r10 + isync #else stw r10,_CCR(r11) /* save registers */ #endif mfspr r10, SPRN_SPRG_SCRATCH0 +#ifdef CONFIG_VMAP_STACK + stw r11,GPR1(r1) + stw r11,0(r1) + mr r11, r1 +#else + stw r1,GPR1(r11) + stw r1,0(r11) + tovirt(r1, r11) /* set new kernel sp */ +#endif stw r12,GPR12(r11) stw r9,GPR9(r11) stw r10,GPR10(r11) -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION +#ifdef CONFIG_VMAP_STACK mfcr r10 stw r10, _CCR(r11) -END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE) #endif mfspr r12,SPRN_SPRG_SCRATCH1 stw r12,GPR11(r11) @@ -97,19 +101,12 @@ stw r10, _DSISR(r11) .endif lwz r9, SRR1(r12) -#if defined(CONFIG_VMAP_STACK) && defined(CONFIG_PPC_BOOK3S) -BEGIN_MMU_FTR_SECTION andi. r10, r9, MSR_PR -END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE) -#endif lwz r12, SRR0(r12) #else mfspr r12,SPRN_SRR0 mfspr r9,SPRN_SRR1 #endif - stw r1,GPR1(r11) - stw r1,0(r11) - tovirt_novmstack r1, r11 /* set new kernel sp */ #ifdef CONFIG_40x rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */ #else @@ -134,18 +131,28 @@ #ifdef CONFIG_VMAP_STACK mfspr r11, SPRN_SRR0 mtctr r11 -#endif andi. r11, r9, MSR_PR - lwz r11,TASK_STACK-THREAD(r12) + mr r11, r1 + lwz r1,TASK_STACK-THREAD(r12) beq- 99f - addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE -#ifdef CONFIG_VMAP_STACK + addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE li r10, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */ mtmsr r10 isync + tovirt(r12, r12) + stw r11,GPR1(r1) + stw r11,0(r1) + mr r11, r1 +#else + andi. r11, r9, MSR_PR + lwz r11,TASK_STACK-THREAD(r12) + beq- 99f + addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE + tophys(r11, r11) + stw r1,GPR1(r11) + stw r1,0(r11) + tovirt(r1, r11) /* set new kernel sp */ #endif - tovirt_vmstack r12, r12 - tophys_novmstack r11, r11 mflr r10 stw r10, _LINK(r11) #ifdef CONFIG_VMAP_STACK @@ -153,9 +160,6 @@ #else mfspr r10,SPRN_SRR0 #endif - stw r1,GPR1(r11) - stw r1,0(r11) - tovirt_novmstack r1, r11 /* set new kernel sp */ stw r10,_NIP(r11) mfcr r10 rlwinm r10,r10,0,4,2 /* Clear SO bit in CR */ @@ -327,20 +331,19 @@ .macro vmap_stack_overflow_exception #ifdef CONFIG_VMAP_STACK #ifdef CONFIG_SMP - mfspr r11, SPRN_SPRG_THREAD - tovirt(r11, r11) - lwz r11, TASK_CPU - THREAD(r11) - slwi r11, r11, 3 - addis r11, r11, emergency_ctx@ha + mfspr r1, SPRN_SPRG_THREAD + lwz r1, TASK_CPU - THREAD(r1) + slwi r1, r1, 3 + addis r1, r1, emergency_ctx@ha #else - lis r11, emergency_ctx@ha + lis r1, emergency_ctx@ha #endif - lwz r11, emergency_ctx@l(r11) - cmpwi cr1, r11, 0 + lwz r1, emergency_ctx@l(r1) + cmpwi cr1, r1, 0 bne cr1, 1f - lis r11, init_thread_union@ha - addi r11, r11, init_thread_union@l -1: addi r11, r11, THREAD_SIZE - INT_FRAME_SIZE + lis r1, init_thread_union@ha + addi r1, r1, init_thread_union@l +1: addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE EXCEPTION_PROLOG_2 SAVE_NVGPRS(r11) addi r3, r1, STACK_FRAME_OVERHEAD --- linux-5.8.0.orig/arch/powerpc/kernel/head_40x.S +++ linux-5.8.0/arch/powerpc/kernel/head_40x.S @@ -285,11 +285,7 @@ rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */ lwz r11, 0(r11) /* Get Linux PTE */ -#ifdef CONFIG_SWAP li r9, _PAGE_PRESENT | _PAGE_ACCESSED -#else - li r9, _PAGE_PRESENT -#endif andc. r9, r9, r11 /* Check permission */ bne 5f @@ -370,11 +366,7 @@ rlwimi r11, r10, 22, 20, 29 /* Compute PTE address */ lwz r11, 0(r11) /* Get Linux PTE */ -#ifdef CONFIG_SWAP li r9, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC -#else - li r9, _PAGE_PRESENT | _PAGE_EXEC -#endif andc. r9, r9, r11 /* Check permission */ bne 5f --- linux-5.8.0.orig/arch/powerpc/kernel/head_64.S +++ linux-5.8.0/arch/powerpc/kernel/head_64.S @@ -420,6 +420,10 @@ /* From now on, r24 is expected to be logical cpuid */ mr r24,r5 + /* Create a temp kernel stack for use before relocation is on. */ + ld r1,PACAEMERGSP(r13) + subi r1,r1,STACK_FRAME_OVERHEAD + /* See if we need to call a cpu state restore handler */ LOAD_REG_ADDR(r23, cur_cpu_spec) ld r23,0(r23) @@ -448,10 +452,6 @@ sync /* order paca.run and cur_cpu_spec */ isync /* In case code patching happened */ - /* Create a temp kernel stack for use before relocation is on. */ - ld r1,PACAEMERGSP(r13) - subi r1,r1,STACK_FRAME_OVERHEAD - b __secondary_start #endif /* SMP */ @@ -993,7 +993,7 @@ bl start_kernel /* Not reached */ - trap +0: trap EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0 .previous --- linux-5.8.0.orig/arch/powerpc/kernel/head_8xx.S +++ linux-5.8.0/arch/powerpc/kernel/head_8xx.S @@ -175,7 +175,7 @@ /* On the MPC8xx, this is a software emulation interrupt. It occurs * for all unimplemented and illegal instructions. */ - EXCEPTION(0x1000, SoftEmu, program_check_exception, EXC_XFER_STD) + EXCEPTION(0x1000, SoftEmu, emulation_assist_interrupt, EXC_XFER_STD) . = 0x1100 /* @@ -202,9 +202,7 @@ InstructionTLBMiss: mtspr SPRN_SPRG_SCRATCH0, r10 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) || defined(CONFIG_HUGETLBFS) mtspr SPRN_SPRG_SCRATCH1, r11 -#endif /* If we are faulting a kernel address, we have to use the * kernel page tables. @@ -238,11 +236,9 @@ rlwimi r11, r10, 32 - 9, _PMD_PAGE_512K mtspr SPRN_MI_TWC, r11 #endif -#ifdef CONFIG_SWAP - rlwinm r11, r10, 32-5, _PAGE_PRESENT + rlwinm r11, r10, 32-7, _PAGE_PRESENT and r11, r11, r10 rlwimi r10, r11, 0, _PAGE_PRESENT -#endif /* The Linux PTE won't go exactly into the MMU TLB. * Software indicator bits 20 and 23 must be clear. * Software indicator bits 22, 24, 25, 26, and 27 must be @@ -256,9 +252,7 @@ /* Restore registers */ 0: mfspr r10, SPRN_SPRG_SCRATCH0 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) || defined(CONFIG_HUGETLBFS) mfspr r11, SPRN_SPRG_SCRATCH1 -#endif rfi patch_site 0b, patch__itlbmiss_exit_1 @@ -268,9 +262,7 @@ addi r10, r10, 1 stw r10, (itlb_miss_counter - PAGE_OFFSET)@l(0) mfspr r10, SPRN_SPRG_SCRATCH0 -#if defined(ITLB_MISS_KERNEL) || defined(CONFIG_SWAP) mfspr r11, SPRN_SPRG_SCRATCH1 -#endif rfi #endif @@ -316,11 +308,9 @@ * r11 = ((r10 & PRESENT) & ((r10 & ACCESSED) >> 5)); * r10 = (r10 & ~PRESENT) | r11; */ -#ifdef CONFIG_SWAP - rlwinm r11, r10, 32-5, _PAGE_PRESENT + rlwinm r11, r10, 32-7, _PAGE_PRESENT and r11, r11, r10 rlwimi r10, r11, 0, _PAGE_PRESENT -#endif /* The Linux PTE won't go exactly into the MMU TLB. * Software indicator bits 24, 25, 26, and 27 must be * set. All other Linux PTE bits control the behavior --- linux-5.8.0.orig/arch/powerpc/kernel/hw_breakpoint.c +++ linux-5.8.0/arch/powerpc/kernel/hw_breakpoint.c @@ -419,7 +419,7 @@ if (dawr_enabled()) { max_len = DAWR_MAX_LEN; /* DAWR region can't cross 512 bytes boundary */ - if (ALIGN(start_addr, SZ_512M) != ALIGN(end_addr - 1, SZ_512M)) + if (ALIGN_DOWN(start_addr, SZ_512) != ALIGN_DOWN(end_addr - 1, SZ_512)) return -EINVAL; } else if (IS_ENABLED(CONFIG_PPC_8xx)) { /* 8xx can setup a range without limitation */ @@ -498,11 +498,11 @@ return ((info->address <= dar) && (dar - info->address < info->len)); } -static bool dar_user_range_overlaps(unsigned long dar, int size, - struct arch_hw_breakpoint *info) +static bool ea_user_range_overlaps(unsigned long ea, int size, + struct arch_hw_breakpoint *info) { - return ((dar < info->address + info->len) && - (dar + size > info->address)); + return ((ea < info->address + info->len) && + (ea + size > info->address)); } static bool dar_in_hw_range(unsigned long dar, struct arch_hw_breakpoint *info) @@ -515,20 +515,30 @@ return ((hw_start_addr <= dar) && (hw_end_addr > dar)); } -static bool dar_hw_range_overlaps(unsigned long dar, int size, - struct arch_hw_breakpoint *info) +static bool ea_hw_range_overlaps(unsigned long ea, int size, + struct arch_hw_breakpoint *info) { unsigned long hw_start_addr, hw_end_addr; + unsigned long align_size = HW_BREAKPOINT_SIZE; - hw_start_addr = ALIGN_DOWN(info->address, HW_BREAKPOINT_SIZE); - hw_end_addr = ALIGN(info->address + info->len, HW_BREAKPOINT_SIZE); + /* + * On p10 predecessors, quadword is handle differently then + * other instructions. + */ + if (!cpu_has_feature(CPU_FTR_ARCH_31) && size == 16) + align_size = HW_BREAKPOINT_SIZE_QUADWORD; + + hw_start_addr = ALIGN_DOWN(info->address, align_size); + hw_end_addr = ALIGN(info->address + info->len, align_size); - return ((dar < hw_end_addr) && (dar + size > hw_start_addr)); + return ((ea < hw_end_addr) && (ea + size > hw_start_addr)); } /* * If hw has multiple DAWR registers, we also need to check all * dawrx constraint bits to confirm this is _really_ a valid event. + * If type is UNKNOWN, but privilege level matches, consider it as + * a positive match. */ static bool check_dawrx_constraints(struct pt_regs *regs, int type, struct arch_hw_breakpoint *info) @@ -536,7 +546,12 @@ if (OP_IS_LOAD(type) && !(info->type & HW_BRK_TYPE_READ)) return false; - if (OP_IS_STORE(type) && !(info->type & HW_BRK_TYPE_WRITE)) + /* + * The Cache Management instructions other than dcbz never + * cause a match. i.e. if type is CACHEOP, the instruction + * is dcbz, and dcbz is treated as Store. + */ + if ((OP_IS_STORE(type) || type == CACHEOP) && !(info->type & HW_BRK_TYPE_WRITE)) return false; if (is_kernel_addr(regs->nip) && !(info->type & HW_BRK_TYPE_KERNEL)) @@ -553,7 +568,8 @@ * including extraneous exception. Otherwise return false. */ static bool check_constraints(struct pt_regs *regs, struct ppc_inst instr, - int type, int size, struct arch_hw_breakpoint *info) + unsigned long ea, int type, int size, + struct arch_hw_breakpoint *info) { bool in_user_range = dar_in_user_range(regs->dar, info); bool dawrx_constraints; @@ -569,22 +585,27 @@ } if (unlikely(ppc_inst_equal(instr, ppc_inst(0)))) { - if (in_user_range) - return true; + if (cpu_has_feature(CPU_FTR_ARCH_31) && + !dar_in_hw_range(regs->dar, info)) + return false; - if (dar_in_hw_range(regs->dar, info)) { - info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; - return true; - } - return false; + return true; } dawrx_constraints = check_dawrx_constraints(regs, type, info); - if (dar_user_range_overlaps(regs->dar, size, info)) + if (type == UNKNOWN) { + if (cpu_has_feature(CPU_FTR_ARCH_31) && + !dar_in_hw_range(regs->dar, info)) + return false; + + return dawrx_constraints; + } + + if (ea_user_range_overlaps(ea, size, info)) return dawrx_constraints; - if (dar_hw_range_overlaps(regs->dar, size, info)) { + if (ea_hw_range_overlaps(ea, size, info)) { if (dawrx_constraints) { info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; return true; @@ -593,8 +614,17 @@ return false; } +static int cache_op_size(void) +{ +#ifdef __powerpc64__ + return ppc64_caches.l1d.block_size; +#else + return L1_CACHE_BYTES; +#endif +} + static void get_instr_detail(struct pt_regs *regs, struct ppc_inst *instr, - int *type, int *size, bool *larx_stcx) + int *type, int *size, unsigned long *ea) { struct instruction_op op; @@ -602,16 +632,25 @@ return; analyse_instr(&op, regs, *instr); - - /* - * Set size = 8 if analyse_instr() fails. If it's a userspace - * watchpoint(valid or extraneous), we can notify user about it. - * If it's a kernel watchpoint, instruction emulation will fail - * in stepping_handler() and watchpoint will be disabled. - */ *type = GETTYPE(op.type); - *size = !(*type == UNKNOWN) ? GETSIZE(op.type) : 8; - *larx_stcx = (*type == LARX || *type == STCX); + *ea = op.ea; +#ifdef __powerpc64__ + if (!(regs->msr & MSR_64BIT)) + *ea &= 0xffffffffUL; +#endif + + *size = GETSIZE(op.type); + if (*type == CACHEOP) { + *size = cache_op_size(); + *ea &= ~(*size - 1); + } else if (*type == LOAD_VMX || *type == STORE_VMX) { + *ea &= ~(*size - 1); + } +} + +static bool is_larx_stcx_instr(int type) +{ + return type == LARX || type == STCX; } /* @@ -678,7 +717,7 @@ struct ppc_inst instr = ppc_inst(0); int type = 0; int size = 0; - bool larx_stcx = false; + unsigned long ea; /* Disable breakpoints during exception handling */ hw_breakpoint_disable(); @@ -692,7 +731,7 @@ rcu_read_lock(); if (!IS_ENABLED(CONFIG_PPC_8xx)) - get_instr_detail(regs, &instr, &type, &size, &larx_stcx); + get_instr_detail(regs, &instr, &type, &size, &ea); for (i = 0; i < nr_wp_slots(); i++) { bp[i] = __this_cpu_read(bp_per_reg[i]); @@ -702,7 +741,7 @@ info[i] = counter_arch_bp(bp[i]); info[i]->type &= ~HW_BRK_TYPE_EXTRANEOUS_IRQ; - if (check_constraints(regs, instr, type, size, info[i])) { + if (check_constraints(regs, instr, ea, type, size, info[i])) { if (!IS_ENABLED(CONFIG_PPC_8xx) && ppc_inst_equal(instr, ppc_inst(0))) { handler_error(bp[i], info[i]); @@ -744,7 +783,7 @@ } if (!IS_ENABLED(CONFIG_PPC_8xx)) { - if (larx_stcx) { + if (is_larx_stcx_instr(type)) { for (i = 0; i < nr_wp_slots(); i++) { if (!hit[i]) continue; --- linux-5.8.0.orig/arch/powerpc/kernel/irq.c +++ linux-5.8.0/arch/powerpc/kernel/irq.c @@ -214,7 +214,7 @@ struct pt_regs regs; ppc_save_regs(®s); - regs.softe = IRQS_ALL_DISABLED; + regs.softe = IRQS_ENABLED; again: if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) @@ -315,6 +315,31 @@ } } +#if defined(CONFIG_PPC_BOOK3S_64) && defined(CONFIG_PPC_KUAP) +static inline void replay_soft_interrupts_irqrestore(void) +{ + unsigned long kuap_state = get_kuap(); + + /* + * Check if anything calls local_irq_enable/restore() when KUAP is + * disabled (user access enabled). We handle that case here by saving + * and re-locking AMR but we shouldn't get here in the first place, + * hence the warning. + */ + kuap_check_amr(); + + if (kuap_state != AMR_KUAP_BLOCKED) + set_kuap(AMR_KUAP_BLOCKED); + + replay_soft_interrupts(); + + if (kuap_state != AMR_KUAP_BLOCKED) + set_kuap(kuap_state); +} +#else +#define replay_soft_interrupts_irqrestore() replay_soft_interrupts() +#endif + notrace void arch_local_irq_restore(unsigned long mask) { unsigned char irq_happened; @@ -368,15 +393,22 @@ } } + /* + * Disable preempt here, so that the below preempt_enable will + * perform resched if required (a replayed interrupt may set + * need_resched). + */ + preempt_disable(); irq_soft_mask_set(IRQS_ALL_DISABLED); trace_hardirqs_off(); - replay_soft_interrupts(); + replay_soft_interrupts_irqrestore(); local_paca->irq_happened = 0; trace_hardirqs_on(); irq_soft_mask_set(IRQS_ENABLED); __hard_irq_enable(); + preempt_enable(); } EXPORT_SYMBOL(arch_local_irq_restore); --- linux-5.8.0.orig/arch/powerpc/kernel/mce.c +++ linux-5.8.0/arch/powerpc/kernel/mce.c @@ -575,12 +575,11 @@ long notrace machine_check_early(struct pt_regs *regs) { long handled = 0; - bool nested = in_nmi(); u8 ftrace_enabled = this_cpu_get_ftrace_enabled(); this_cpu_set_ftrace_enabled(0); - - if (!nested) + /* Do not use nmi_enter/exit for pseries hpte guest */ + if (radix_enabled() || !firmware_has_feature(FW_FEATURE_LPAR)) nmi_enter(); hv_nmi_check_nonrecoverable(regs); @@ -591,7 +590,7 @@ if (ppc_md.machine_check_early) handled = ppc_md.machine_check_early(regs); - if (!nested) + if (radix_enabled() || !firmware_has_feature(FW_FEATURE_LPAR)) nmi_exit(); this_cpu_set_ftrace_enabled(ftrace_enabled); --- linux-5.8.0.orig/arch/powerpc/kernel/paca.c +++ linux-5.8.0/arch/powerpc/kernel/paca.c @@ -201,7 +201,7 @@ struct paca_struct **paca_ptrs __read_mostly; EXPORT_SYMBOL(paca_ptrs); -void __init __nostackprotector initialise_paca(struct paca_struct *new_paca, int cpu) +void __init initialise_paca(struct paca_struct *new_paca, int cpu) { #ifdef CONFIG_PPC_PSERIES new_paca->lppaca_ptr = NULL; @@ -234,7 +234,7 @@ } /* Put the paca pointer into r13 and SPRG_PACA */ -void __nostackprotector setup_paca(struct paca_struct *new_paca) +void setup_paca(struct paca_struct *new_paca) { /* Setup r13 */ local_paca = new_paca; --- linux-5.8.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-5.8.0/arch/powerpc/kernel/pci-common.c @@ -341,6 +341,7 @@ } return NULL; } +EXPORT_SYMBOL(pci_find_hose_for_OF_device); struct pci_controller *pci_find_controller_for_domain(int domain_nr) { @@ -1533,6 +1534,7 @@ { return pci_bus_find_capability(fake_pci_bus(hose, bus), devfn, cap); } +EXPORT_SYMBOL_GPL(early_find_capability); struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus) { @@ -1625,3 +1627,13 @@ } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID, fixup_hide_host_resource_fsl); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, fixup_hide_host_resource_fsl); + + +static int __init discover_phbs(void) +{ + if (ppc_md.discover_phbs) + ppc_md.discover_phbs(); + + return 0; +} +core_initcall(discover_phbs); --- linux-5.8.0.orig/arch/powerpc/kernel/process.c +++ linux-5.8.0/arch/powerpc/kernel/process.c @@ -1231,15 +1231,17 @@ restore_math(current->thread.regs); /* - * The copy-paste buffer can only store into foreign real - * addresses, so unprivileged processes can not see the - * data or use it in any way unless they have foreign real - * mappings. If the new process has the foreign real address - * mappings, we must issue a cp_abort to clear any state and - * prevent snooping, corruption or a covert channel. + * On POWER9 the copy-paste buffer can only paste into + * foreign real addresses, so unprivileged processes can not + * see the data or use it in any way unless they have + * foreign real mappings. If the new process has the foreign + * real address mappings, we must issue a cp_abort to clear + * any state and prevent snooping, corruption or a covert + * channel. ISA v3.1 supports paste into local memory. */ if (current->mm && - atomic_read(¤t->mm->context.vas_windows)) + (cpu_has_feature(CPU_FTR_ARCH_31) || + atomic_read(¤t->mm->context.vas_windows))) asm volatile(PPC_CP_ABORT); } #endif /* CONFIG_PPC_BOOK3S_64 */ @@ -2118,7 +2120,7 @@ * See if this is an exception frame. * We look for the "regshere" marker in the current frame. */ - if (validate_sp(sp, tsk, STACK_INT_FRAME_SIZE) + if (validate_sp(sp, tsk, STACK_FRAME_WITH_PT_REGS) && stack[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) { struct pt_regs *regs = (struct pt_regs *) (sp + STACK_FRAME_OVERHEAD); --- linux-5.8.0.orig/arch/powerpc/kernel/prom_init.c +++ linux-5.8.0/arch/powerpc/kernel/prom_init.c @@ -1325,14 +1325,10 @@ if (prop_len > sizeof(vec)) prom_printf("WARNING: ibm,arch-vec-5-platform-support longer than expected (len: %d)\n", prop_len); - prom_getprop(prom.chosen, "ibm,arch-vec-5-platform-support", - &vec, sizeof(vec)); - for (i = 0; i < sizeof(vec); i += 2) { - prom_debug("%d: index = 0x%x val = 0x%x\n", i / 2 - , vec[i] - , vec[i + 1]); - prom_parse_platform_support(vec[i], vec[i + 1], - &supported); + prom_getprop(prom.chosen, "ibm,arch-vec-5-platform-support", &vec, sizeof(vec)); + for (i = 0; i < prop_len; i += 2) { + prom_debug("%d: index = 0x%x val = 0x%x\n", i / 2, vec[i], vec[i + 1]); + prom_parse_platform_support(vec[i], vec[i + 1], &supported); } } --- linux-5.8.0.orig/arch/powerpc/kernel/ptrace/ptrace-noadv.c +++ linux-5.8.0/arch/powerpc/kernel/ptrace/ptrace-noadv.c @@ -217,8 +217,9 @@ return -EIO; brk.address = ALIGN_DOWN(bp_info->addr, HW_BREAKPOINT_SIZE); - brk.type = HW_BRK_TYPE_TRANSLATE; + brk.type = HW_BRK_TYPE_TRANSLATE | HW_BRK_TYPE_PRIV_ALL; brk.len = DABR_MAX_LEN; + brk.hw_len = DABR_MAX_LEN; if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_READ) brk.type |= HW_BRK_TYPE_READ; if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_WRITE) --- linux-5.8.0.orig/arch/powerpc/kernel/rtas.c +++ linux-5.8.0/arch/powerpc/kernel/rtas.c @@ -843,96 +843,6 @@ __rtas_suspend_cpu((struct rtas_suspend_me_data *)info, 1); } -enum rtas_cpu_state { - DOWN, - UP, -}; - -#ifndef CONFIG_SMP -static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, - cpumask_var_t cpus) -{ - if (!cpumask_empty(cpus)) { - cpumask_clear(cpus); - return -EINVAL; - } else - return 0; -} -#else -/* On return cpumask will be altered to indicate CPUs changed. - * CPUs with states changed will be set in the mask, - * CPUs with status unchanged will be unset in the mask. */ -static int rtas_cpu_state_change_mask(enum rtas_cpu_state state, - cpumask_var_t cpus) -{ - int cpu; - int cpuret = 0; - int ret = 0; - - if (cpumask_empty(cpus)) - return 0; - - for_each_cpu(cpu, cpus) { - struct device *dev = get_cpu_device(cpu); - - switch (state) { - case DOWN: - cpuret = device_offline(dev); - break; - case UP: - cpuret = device_online(dev); - break; - } - if (cpuret < 0) { - pr_debug("%s: cpu_%s for cpu#%d returned %d.\n", - __func__, - ((state == UP) ? "up" : "down"), - cpu, cpuret); - if (!ret) - ret = cpuret; - if (state == UP) { - /* clear bits for unchanged cpus, return */ - cpumask_shift_right(cpus, cpus, cpu); - cpumask_shift_left(cpus, cpus, cpu); - break; - } else { - /* clear bit for unchanged cpu, continue */ - cpumask_clear_cpu(cpu, cpus); - } - } - cond_resched(); - } - - return ret; -} -#endif - -int rtas_online_cpus_mask(cpumask_var_t cpus) -{ - int ret; - - ret = rtas_cpu_state_change_mask(UP, cpus); - - if (ret) { - cpumask_var_t tmp_mask; - - if (!alloc_cpumask_var(&tmp_mask, GFP_KERNEL)) - return ret; - - /* Use tmp_mask to preserve cpus mask from first failure */ - cpumask_copy(tmp_mask, cpus); - rtas_offline_cpus_mask(tmp_mask); - free_cpumask_var(tmp_mask); - } - - return ret; -} - -int rtas_offline_cpus_mask(cpumask_var_t cpus) -{ - return rtas_cpu_state_change_mask(DOWN, cpus); -} - int rtas_ibm_suspend_me(u64 handle) { long state; @@ -940,8 +850,6 @@ unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; struct rtas_suspend_me_data data; DECLARE_COMPLETION_ONSTACK(done); - cpumask_var_t offline_mask; - int cpuret; if (!rtas_service_present("ibm,suspend-me")) return -ENOSYS; @@ -962,9 +870,6 @@ return -EIO; } - if (!alloc_cpumask_var(&offline_mask, GFP_KERNEL)) - return -ENOMEM; - atomic_set(&data.working, 0); atomic_set(&data.done, 0); atomic_set(&data.error, 0); @@ -973,24 +878,8 @@ lock_device_hotplug(); - /* All present CPUs must be online */ - cpumask_andnot(offline_mask, cpu_present_mask, cpu_online_mask); - cpuret = rtas_online_cpus_mask(offline_mask); - if (cpuret) { - pr_err("%s: Could not bring present CPUs online.\n", __func__); - atomic_set(&data.error, cpuret); - goto out; - } - cpu_hotplug_disable(); - /* Check if we raced with a CPU-Offline Operation */ - if (!cpumask_equal(cpu_present_mask, cpu_online_mask)) { - pr_info("%s: Raced against a concurrent CPU-Offline\n", __func__); - atomic_set(&data.error, -EAGAIN); - goto out_hotplug_enable; - } - /* Call function on all CPUs. One of us will make the * rtas call */ @@ -1001,18 +890,11 @@ if (atomic_read(&data.error) != 0) printk(KERN_ERR "Error doing global join\n"); -out_hotplug_enable: - cpu_hotplug_enable(); - /* Take down CPUs not online prior to suspend */ - cpuret = rtas_offline_cpus_mask(offline_mask); - if (cpuret) - pr_warn("%s: Could not restore CPUs to offline state.\n", - __func__); + cpu_hotplug_enable(); -out: unlock_device_hotplug(); - free_cpumask_var(offline_mask); + return atomic_read(&data.error); } @@ -1110,6 +992,147 @@ return NULL; } +#ifdef CONFIG_PPC_RTAS_FILTER + +/* + * The sys_rtas syscall, as originally designed, allows root to pass + * arbitrary physical addresses to RTAS calls. A number of RTAS calls + * can be abused to write to arbitrary memory and do other things that + * are potentially harmful to system integrity, and thus should only + * be used inside the kernel and not exposed to userspace. + * + * All known legitimate users of the sys_rtas syscall will only ever + * pass addresses that fall within the RMO buffer, and use a known + * subset of RTAS calls. + * + * Accordingly, we filter RTAS requests to check that the call is + * permitted, and that provided pointers fall within the RMO buffer. + * The rtas_filters list contains an entry for each permitted call, + * with the indexes of the parameters which are expected to contain + * addresses and sizes of buffers allocated inside the RMO buffer. + */ +struct rtas_filter { + const char *name; + int token; + /* Indexes into the args buffer, -1 if not used */ + int buf_idx1; + int size_idx1; + int buf_idx2; + int size_idx2; + + int fixed_size; +}; + +static struct rtas_filter rtas_filters[] __ro_after_init = { + { "ibm,activate-firmware", -1, -1, -1, -1, -1 }, + { "ibm,configure-connector", -1, 0, -1, 1, -1, 4096 }, /* Special cased */ + { "display-character", -1, -1, -1, -1, -1 }, + { "ibm,display-message", -1, 0, -1, -1, -1 }, + { "ibm,errinjct", -1, 2, -1, -1, -1, 1024 }, + { "ibm,close-errinjct", -1, -1, -1, -1, -1 }, + { "ibm,open-errinjct", -1, -1, -1, -1, -1 }, + { "ibm,get-config-addr-info2", -1, -1, -1, -1, -1 }, + { "ibm,get-dynamic-sensor-state", -1, 1, -1, -1, -1 }, + { "ibm,get-indices", -1, 2, 3, -1, -1 }, + { "get-power-level", -1, -1, -1, -1, -1 }, + { "get-sensor-state", -1, -1, -1, -1, -1 }, + { "ibm,get-system-parameter", -1, 1, 2, -1, -1 }, + { "get-time-of-day", -1, -1, -1, -1, -1 }, + { "ibm,get-vpd", -1, 0, -1, 1, 2 }, + { "ibm,lpar-perftools", -1, 2, 3, -1, -1 }, + { "ibm,platform-dump", -1, 4, 5, -1, -1 }, + { "ibm,read-slot-reset-state", -1, -1, -1, -1, -1 }, + { "ibm,scan-log-dump", -1, 0, 1, -1, -1 }, + { "ibm,set-dynamic-indicator", -1, 2, -1, -1, -1 }, + { "ibm,set-eeh-option", -1, -1, -1, -1, -1 }, + { "set-indicator", -1, -1, -1, -1, -1 }, + { "set-power-level", -1, -1, -1, -1, -1 }, + { "set-time-for-power-on", -1, -1, -1, -1, -1 }, + { "ibm,set-system-parameter", -1, 1, -1, -1, -1 }, + { "set-time-of-day", -1, -1, -1, -1, -1 }, + { "ibm,suspend-me", -1, -1, -1, -1, -1 }, + { "ibm,update-nodes", -1, 0, -1, -1, -1, 4096 }, + { "ibm,update-properties", -1, 0, -1, -1, -1, 4096 }, + { "ibm,physical-attestation", -1, 0, 1, -1, -1 }, +}; + +static bool in_rmo_buf(u32 base, u32 end) +{ + return base >= rtas_rmo_buf && + base < (rtas_rmo_buf + RTAS_RMOBUF_MAX) && + base <= end && + end >= rtas_rmo_buf && + end < (rtas_rmo_buf + RTAS_RMOBUF_MAX); +} + +static bool block_rtas_call(int token, int nargs, + struct rtas_args *args) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(rtas_filters); i++) { + struct rtas_filter *f = &rtas_filters[i]; + u32 base, size, end; + + if (token != f->token) + continue; + + if (f->buf_idx1 != -1) { + base = be32_to_cpu(args->args[f->buf_idx1]); + if (f->size_idx1 != -1) + size = be32_to_cpu(args->args[f->size_idx1]); + else if (f->fixed_size) + size = f->fixed_size; + else + size = 1; + + end = base + size - 1; + if (!in_rmo_buf(base, end)) + goto err; + } + + if (f->buf_idx2 != -1) { + base = be32_to_cpu(args->args[f->buf_idx2]); + if (f->size_idx2 != -1) + size = be32_to_cpu(args->args[f->size_idx2]); + else if (f->fixed_size) + size = f->fixed_size; + else + size = 1; + end = base + size - 1; + + /* + * Special case for ibm,configure-connector where the + * address can be 0 + */ + if (!strcmp(f->name, "ibm,configure-connector") && + base == 0) + return false; + + if (!in_rmo_buf(base, end)) + goto err; + } + + return false; + } + +err: + pr_err_ratelimited("sys_rtas: RTAS call blocked - exploit attempt?\n"); + pr_err_ratelimited("sys_rtas: token=0x%x, nargs=%d (called by %s)\n", + token, nargs, current->comm); + return true; +} + +#else + +static bool block_rtas_call(int token, int nargs, + struct rtas_args *args) +{ + return false; +} + +#endif /* CONFIG_PPC_RTAS_FILTER */ + /* We assume to be passed big endian arguments */ SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs) { @@ -1147,6 +1170,9 @@ args.rets = &args.args[nargs]; memset(args.rets, 0, nret * sizeof(rtas_arg_t)); + if (block_rtas_call(token, nargs, &args)) + return -EINVAL; + /* Need to handle ibm,suspend_me call specially */ if (token == ibm_suspend_me_token) { @@ -1208,6 +1234,9 @@ unsigned long rtas_region = RTAS_INSTANTIATE_MAX; u32 base, size, entry; int no_base, no_size, no_entry; +#ifdef CONFIG_PPC_RTAS_FILTER + int i; +#endif /* Get RTAS dev node and fill up our "rtas" structure with infos * about it. @@ -1247,6 +1276,12 @@ #ifdef CONFIG_RTAS_ERROR_LOGGING rtas_last_error_token = rtas_token("rtas-last-error"); #endif + +#ifdef CONFIG_PPC_RTAS_FILTER + for (i = 0; i < ARRAY_SIZE(rtas_filters); i++) { + rtas_filters[i].token = rtas_token(rtas_filters[i].name); + } +#endif } int __init early_init_dt_scan_rtas(unsigned long node, --- linux-5.8.0.orig/arch/powerpc/kernel/setup-common.c +++ linux-5.8.0/arch/powerpc/kernel/setup-common.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -64,6 +65,7 @@ #include #include #include +#include #include "setup.h" @@ -311,6 +313,7 @@ min = pvr & 0xFF; break; case 0x004e: /* POWER9 bits 12-15 give chip type */ + case 0x0080: /* POWER10 bit 12 gives SMT8/4 */ maj = (pvr >> 8) & 0x0F; min = pvr & 0xFF; break; @@ -870,6 +873,16 @@ */ initialize_cache_info(); + /* + * Lock down the kernel if booted in secure mode. This is required to + * maintain kernel integrity. + */ + if (IS_ENABLED(CONFIG_LOCK_DOWN_IN_SECURE_BOOT)) { + if (is_ppc_secureboot_enabled()) + security_lock_kernel_down("PowerNV Secure Boot mode", + LOCKDOWN_INTEGRITY_MAX); + } + /* Initialize RTAS if available. */ rtas_initialize(); @@ -918,8 +931,6 @@ /* On BookE, setup per-core TLB data structures. */ setup_tlb_core_data(); - - smp_release_cpus(); #endif /* Print various info about the machine that has been gathered so far. */ @@ -940,6 +951,8 @@ exc_lvl_early_init(); emergency_stack_init(); + smp_release_cpus(); + initmem_init(); early_memtest(min_low_pfn << PAGE_SHIFT, max_low_pfn << PAGE_SHIFT); --- linux-5.8.0.orig/arch/powerpc/kernel/setup.h +++ linux-5.8.0/arch/powerpc/kernel/setup.h @@ -8,12 +8,6 @@ #ifndef __ARCH_POWERPC_KERNEL_SETUP_H #define __ARCH_POWERPC_KERNEL_SETUP_H -#ifdef CONFIG_CC_IS_CLANG -#define __nostackprotector -#else -#define __nostackprotector __attribute__((__optimize__("no-stack-protector"))) -#endif - void initialize_cache_info(void); void irqstack_early_init(void); --- linux-5.8.0.orig/arch/powerpc/kernel/setup_64.c +++ linux-5.8.0/arch/powerpc/kernel/setup_64.c @@ -279,7 +279,7 @@ * device-tree is not accessible via normal means at this point. */ -void __init __nostackprotector early_setup(unsigned long dt_ptr) +void __init early_setup(unsigned long dt_ptr) { static __initdata struct paca_struct boot_paca; @@ -857,7 +857,13 @@ static enum l1d_flush_type enabled_flush_types; static void *l1d_flush_fallback_area; static bool no_rfi_flush; +static bool no_entry_flush; +static bool no_uaccess_flush; bool rfi_flush; +bool entry_flush; +bool uaccess_flush; +DEFINE_STATIC_KEY_FALSE(uaccess_flush_key); +EXPORT_SYMBOL(uaccess_flush_key); static int __init handle_no_rfi_flush(char *p) { @@ -867,6 +873,22 @@ } early_param("no_rfi_flush", handle_no_rfi_flush); +static int __init handle_no_entry_flush(char *p) +{ + pr_info("entry-flush: disabled on command line."); + no_entry_flush = true; + return 0; +} +early_param("no_entry_flush", handle_no_entry_flush); + +static int __init handle_no_uaccess_flush(char *p) +{ + pr_info("uaccess-flush: disabled on command line."); + no_uaccess_flush = true; + return 0; +} +early_param("no_uaccess_flush", handle_no_uaccess_flush); + /* * The RFI flush is not KPTI, but because users will see doco that says to use * nopti we hijack that option here to also disable the RFI flush. @@ -898,6 +920,32 @@ rfi_flush = enable; } +void entry_flush_enable(bool enable) +{ + if (enable) { + do_entry_flush_fixups(enabled_flush_types); + on_each_cpu(do_nothing, NULL, 1); + } else { + do_entry_flush_fixups(L1D_FLUSH_NONE); + } + + entry_flush = enable; +} + +void uaccess_flush_enable(bool enable) +{ + if (enable) { + do_uaccess_flush_fixups(enabled_flush_types); + static_branch_enable(&uaccess_flush_key); + on_each_cpu(do_nothing, NULL, 1); + } else { + static_branch_disable(&uaccess_flush_key); + do_uaccess_flush_fixups(L1D_FLUSH_NONE); + } + + uaccess_flush = enable; +} + static void __ref init_fallback_flush(void) { u64 l1d_size, limit; @@ -956,10 +1004,28 @@ enabled_flush_types = types; - if (!no_rfi_flush && !cpu_mitigations_off()) + if (!cpu_mitigations_off() && !no_rfi_flush) rfi_flush_enable(enable); } +void setup_entry_flush(bool enable) +{ + if (cpu_mitigations_off()) + return; + + if (!no_entry_flush) + entry_flush_enable(enable); +} + +void setup_uaccess_flush(bool enable) +{ + if (cpu_mitigations_off()) + return; + + if (!no_uaccess_flush) + uaccess_flush_enable(enable); +} + #ifdef CONFIG_DEBUG_FS static int rfi_flush_set(void *data, u64 val) { @@ -987,9 +1053,63 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_rfi_flush, rfi_flush_get, rfi_flush_set, "%llu\n"); +static int entry_flush_set(void *data, u64 val) +{ + bool enable; + + if (val == 1) + enable = true; + else if (val == 0) + enable = false; + else + return -EINVAL; + + /* Only do anything if we're changing state */ + if (enable != entry_flush) + entry_flush_enable(enable); + + return 0; +} + +static int entry_flush_get(void *data, u64 *val) +{ + *val = entry_flush ? 1 : 0; + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(fops_entry_flush, entry_flush_get, entry_flush_set, "%llu\n"); + +static int uaccess_flush_set(void *data, u64 val) +{ + bool enable; + + if (val == 1) + enable = true; + else if (val == 0) + enable = false; + else + return -EINVAL; + + /* Only do anything if we're changing state */ + if (enable != uaccess_flush) + uaccess_flush_enable(enable); + + return 0; +} + +static int uaccess_flush_get(void *data, u64 *val) +{ + *val = uaccess_flush ? 1 : 0; + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(fops_uaccess_flush, uaccess_flush_get, uaccess_flush_set, "%llu\n"); + static __init int rfi_flush_debugfs_init(void) { debugfs_create_file("rfi_flush", 0600, powerpc_debugfs_root, NULL, &fops_rfi_flush); + debugfs_create_file("entry_flush", 0600, powerpc_debugfs_root, NULL, &fops_entry_flush); + debugfs_create_file("uaccess_flush", 0600, powerpc_debugfs_root, NULL, &fops_uaccess_flush); return 0; } device_initcall(rfi_flush_debugfs_init); --- linux-5.8.0.orig/arch/powerpc/kernel/smp.c +++ linux-5.8.0/arch/powerpc/kernel/smp.c @@ -818,7 +818,7 @@ return err; } -static int init_big_cores(void) +static int __init init_big_cores(void) { int cpu; @@ -1250,7 +1250,7 @@ /* Activate a secondary processor. */ void start_secondary(void *unused) { - unsigned int cpu = smp_processor_id(); + unsigned int cpu = raw_smp_processor_id(); struct cpumask *(*sibling_mask)(int) = cpu_sibling_mask; mmgrab(&init_mm); --- linux-5.8.0.orig/arch/powerpc/kernel/syscall_64.c +++ linux-5.8.0/arch/powerpc/kernel/syscall_64.c @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include #include --- linux-5.8.0.orig/arch/powerpc/kernel/sysfs.c +++ linux-5.8.0/arch/powerpc/kernel/sysfs.c @@ -32,29 +32,27 @@ static DEFINE_PER_CPU(struct cpu, cpu_devices); -/* - * SMT snooze delay stuff, 64-bit only for now - */ - #ifdef CONFIG_PPC64 -/* Time in microseconds we delay before sleeping in the idle loop */ -static DEFINE_PER_CPU(long, smt_snooze_delay) = { 100 }; +/* + * Snooze delay has not been hooked up since 3fa8cad82b94 ("powerpc/pseries/cpuidle: + * smt-snooze-delay cleanup.") and has been broken even longer. As was foretold in + * 2014: + * + * "ppc64_util currently utilises it. Once we fix ppc64_util, propose to clean + * up the kernel code." + * + * powerpc-utils stopped using it as of 1.3.8. At some point in the future this + * code should be removed. + */ static ssize_t store_smt_snooze_delay(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { - struct cpu *cpu = container_of(dev, struct cpu, dev); - ssize_t ret; - long snooze; - - ret = sscanf(buf, "%ld", &snooze); - if (ret != 1) - return -EINVAL; - - per_cpu(smt_snooze_delay, cpu->dev.id) = snooze; + pr_warn_once("%s (%d) stored to unsupported smt_snooze_delay, which has no effect.\n", + current->comm, current->pid); return count; } @@ -62,9 +60,9 @@ struct device_attribute *attr, char *buf) { - struct cpu *cpu = container_of(dev, struct cpu, dev); - - return sprintf(buf, "%ld\n", per_cpu(smt_snooze_delay, cpu->dev.id)); + pr_warn_once("%s (%d) read from unsupported smt_snooze_delay\n", + current->comm, current->pid); + return sprintf(buf, "100\n"); } static DEVICE_ATTR(smt_snooze_delay, 0644, show_smt_snooze_delay, @@ -72,16 +70,10 @@ static int __init setup_smt_snooze_delay(char *str) { - unsigned int cpu; - long snooze; - if (!cpu_has_feature(CPU_FTR_SMT)) return 1; - snooze = simple_strtol(str, NULL, 10); - for_each_possible_cpu(cpu) - per_cpu(smt_snooze_delay, cpu) = snooze; - + pr_warn("smt-snooze-delay command line option has no effect\n"); return 1; } __setup("smt-snooze-delay=", setup_smt_snooze_delay); --- linux-5.8.0.orig/arch/powerpc/kernel/tau_6xx.c +++ linux-5.8.0/arch/powerpc/kernel/tau_6xx.c @@ -13,13 +13,14 @@ */ #include -#include #include #include #include #include #include #include +#include +#include #include #include @@ -39,9 +40,7 @@ unsigned char grew; } tau[NR_CPUS]; -struct timer_list tau_timer; - -#undef DEBUG +static bool tau_int_enable; /* TODO: put these in a /proc interface, with some sanity checks, and maybe * dynamic adjustment to minimize # of interrupts */ @@ -50,72 +49,49 @@ #define step_size 2 /* step size when temp goes out of range */ #define window_expand 1 /* expand the window by this much */ /* configurable values for shrinking the window */ -#define shrink_timer 2*HZ /* period between shrinking the window */ +#define shrink_timer 2000 /* period between shrinking the window */ #define min_window 2 /* minimum window size, degrees C */ static void set_thresholds(unsigned long cpu) { -#ifdef CONFIG_TAU_INT - /* - * setup THRM1, - * threshold, valid bit, enable interrupts, interrupt when below threshold - */ - mtspr(SPRN_THRM1, THRM1_THRES(tau[cpu].low) | THRM1_V | THRM1_TIE | THRM1_TID); + u32 maybe_tie = tau_int_enable ? THRM1_TIE : 0; - /* setup THRM2, - * threshold, valid bit, enable interrupts, interrupt when above threshold - */ - mtspr (SPRN_THRM2, THRM1_THRES(tau[cpu].high) | THRM1_V | THRM1_TIE); -#else - /* same thing but don't enable interrupts */ - mtspr(SPRN_THRM1, THRM1_THRES(tau[cpu].low) | THRM1_V | THRM1_TID); - mtspr(SPRN_THRM2, THRM1_THRES(tau[cpu].high) | THRM1_V); -#endif + /* setup THRM1, threshold, valid bit, interrupt when below threshold */ + mtspr(SPRN_THRM1, THRM1_THRES(tau[cpu].low) | THRM1_V | maybe_tie | THRM1_TID); + + /* setup THRM2, threshold, valid bit, interrupt when above threshold */ + mtspr(SPRN_THRM2, THRM1_THRES(tau[cpu].high) | THRM1_V | maybe_tie); } static void TAUupdate(int cpu) { - unsigned thrm; - -#ifdef DEBUG - printk("TAUupdate "); -#endif + u32 thrm; + u32 bits = THRM1_TIV | THRM1_TIN | THRM1_V; /* if both thresholds are crossed, the step_sizes cancel out * and the window winds up getting expanded twice. */ - if((thrm = mfspr(SPRN_THRM1)) & THRM1_TIV){ /* is valid? */ - if(thrm & THRM1_TIN){ /* crossed low threshold */ - if (tau[cpu].low >= step_size){ - tau[cpu].low -= step_size; - tau[cpu].high -= (step_size - window_expand); - } - tau[cpu].grew = 1; -#ifdef DEBUG - printk("low threshold crossed "); -#endif + thrm = mfspr(SPRN_THRM1); + if ((thrm & bits) == bits) { + mtspr(SPRN_THRM1, 0); + + if (tau[cpu].low >= step_size) { + tau[cpu].low -= step_size; + tau[cpu].high -= (step_size - window_expand); } + tau[cpu].grew = 1; + pr_debug("%s: low threshold crossed\n", __func__); } - if((thrm = mfspr(SPRN_THRM2)) & THRM1_TIV){ /* is valid? */ - if(thrm & THRM1_TIN){ /* crossed high threshold */ - if (tau[cpu].high <= 127-step_size){ - tau[cpu].low += (step_size - window_expand); - tau[cpu].high += step_size; - } - tau[cpu].grew = 1; -#ifdef DEBUG - printk("high threshold crossed "); -#endif + thrm = mfspr(SPRN_THRM2); + if ((thrm & bits) == bits) { + mtspr(SPRN_THRM2, 0); + + if (tau[cpu].high <= 127 - step_size) { + tau[cpu].low += (step_size - window_expand); + tau[cpu].high += step_size; } + tau[cpu].grew = 1; + pr_debug("%s: high threshold crossed\n", __func__); } - -#ifdef DEBUG - printk("grew = %d\n", tau[cpu].grew); -#endif - -#ifndef CONFIG_TAU_INT /* tau_timeout will do this if not using interrupts */ - set_thresholds(cpu); -#endif - } #ifdef CONFIG_TAU_INT @@ -140,17 +116,16 @@ static void tau_timeout(void * info) { int cpu; - unsigned long flags; int size; int shrink; - /* disabling interrupts *should* be okay */ - local_irq_save(flags); cpu = smp_processor_id(); -#ifndef CONFIG_TAU_INT - TAUupdate(cpu); -#endif + if (!tau_int_enable) + TAUupdate(cpu); + + /* Stop thermal sensor comparisons and interrupts */ + mtspr(SPRN_THRM3, 0); size = tau[cpu].high - tau[cpu].low; if (size > min_window && ! tau[cpu].grew) { @@ -173,32 +148,26 @@ set_thresholds(cpu); - /* - * Do the enable every time, since otherwise a bunch of (relatively) - * complex sleep code needs to be added. One mtspr every time - * tau_timeout is called is probably not a big deal. - * - * Enable thermal sensor and set up sample interval timer - * need 20 us to do the compare.. until a nice 'cpu_speed' function - * call is implemented, just assume a 500 mhz clock. It doesn't really - * matter if we take too long for a compare since it's all interrupt - * driven anyway. - * - * use a extra long time.. (60 us @ 500 mhz) + /* Restart thermal sensor comparisons and interrupts. + * The "PowerPC 740 and PowerPC 750 Microprocessor Datasheet" + * recommends that "the maximum value be set in THRM3 under all + * conditions." */ - mtspr(SPRN_THRM3, THRM3_SITV(500*60) | THRM3_E); - - local_irq_restore(flags); + mtspr(SPRN_THRM3, THRM3_SITV(0x1fff) | THRM3_E); } -static void tau_timeout_smp(struct timer_list *unused) -{ +static struct workqueue_struct *tau_workq; - /* schedule ourselves to be run again */ - mod_timer(&tau_timer, jiffies + shrink_timer) ; +static void tau_work_func(struct work_struct *work) +{ + msleep(shrink_timer); on_each_cpu(tau_timeout, NULL, 0); + /* schedule ourselves to be run again */ + queue_work(tau_workq, work); } +DECLARE_WORK(tau_work, tau_work_func); + /* * setup the TAU * @@ -231,21 +200,19 @@ return 1; } + tau_int_enable = IS_ENABLED(CONFIG_TAU_INT) && + !strcmp(cur_cpu_spec->platform, "ppc750"); - /* first, set up the window shrinking timer */ - timer_setup(&tau_timer, tau_timeout_smp, 0); - tau_timer.expires = jiffies + shrink_timer; - add_timer(&tau_timer); + tau_workq = alloc_workqueue("tau", WQ_UNBOUND, 1, 0); + if (!tau_workq) + return -ENOMEM; on_each_cpu(TAU_init_smp, NULL, 0); - printk("Thermal assist unit "); -#ifdef CONFIG_TAU_INT - printk("using interrupts, "); -#else - printk("using timers, "); -#endif - printk("shrink_timer: %d jiffies\n", shrink_timer); + queue_work(tau_workq, &tau_work); + + pr_info("Thermal assist unit using %s, shrink_timer: %d ms\n", + tau_int_enable ? "interrupts" : "workqueue", shrink_timer); tau_initialized = 1; return 0; --- linux-5.8.0.orig/arch/powerpc/kernel/time.c +++ linux-5.8.0/arch/powerpc/kernel/time.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -1132,6 +1133,7 @@ tick_setup_hrtimer_broadcast(); of_clk_init(NULL); + enable_sched_clock_irqtime(); } /* --- linux-5.8.0.orig/arch/powerpc/kernel/traps.c +++ linux-5.8.0/arch/powerpc/kernel/traps.c @@ -509,8 +509,11 @@ die("Unrecoverable nested System Reset", regs, SIGABRT); #endif /* Must die if the interrupt is not recoverable */ - if (!(regs->msr & MSR_RI)) + if (!(regs->msr & MSR_RI)) { + /* For the reason explained in die_mce, nmi_exit before die */ + nmi_exit(); die("Unrecoverable System Reset", regs, SIGABRT); + } if (saved_hsrrs) { mtspr(SPRN_HSRR0, hsrr0); @@ -889,7 +892,7 @@ { unsigned int ra, rb, t, i, sel, instr, rc; const void __user *addr; - u8 vbuf[16], *vdst; + u8 vbuf[16] __aligned(16), *vdst; unsigned long ea, msr, msr_mask; bool swap; --- linux-5.8.0.orig/arch/powerpc/kernel/vdso.c +++ linux-5.8.0/arch/powerpc/kernel/vdso.c @@ -677,7 +677,7 @@ node = cpu_to_node(cpu); WARN_ON_ONCE(node > 0xffff); - val = (cpu & 0xfff) | ((node & 0xffff) << 16); + val = (cpu & 0xffff) | ((node & 0xffff) << 16); mtspr(SPRN_SPRG_VDSO_WRITE, val); get_paca()->sprg_vdso = val; --- linux-5.8.0.orig/arch/powerpc/kernel/vmlinux.lds.S +++ linux-5.8.0/arch/powerpc/kernel/vmlinux.lds.S @@ -85,7 +85,7 @@ ALIGN_FUNCTION(); #endif /* careful! __ftr_alt_* sections need to be close to .text */ - *(.text.hot TEXT_MAIN .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); + *(.text.hot .text.hot.* TEXT_MAIN .text.fixup .text.unlikely .text.unlikely.* .fixup __ftr_alt_* .ref.text); #ifdef CONFIG_PPC64 *(.tramp.ftrace.text); #endif @@ -132,6 +132,20 @@ } . = ALIGN(8); + __uaccess_flush_fixup : AT(ADDR(__uaccess_flush_fixup) - LOAD_OFFSET) { + __start___uaccess_flush_fixup = .; + *(__uaccess_flush_fixup) + __stop___uaccess_flush_fixup = .; + } + + . = ALIGN(8); + __entry_flush_fixup : AT(ADDR(__entry_flush_fixup) - LOAD_OFFSET) { + __start___entry_flush_fixup = .; + *(__entry_flush_fixup) + __stop___entry_flush_fixup = .; + } + + . = ALIGN(8); __stf_exit_barrier_fixup : AT(ADDR(__stf_exit_barrier_fixup) - LOAD_OFFSET) { __start___stf_exit_barrier_fixup = .; *(__stf_exit_barrier_fixup) @@ -173,6 +187,12 @@ .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { _sinittext = .; INIT_TEXT + + /* + *.init.text might be RO so we must ensure this section ends on + * a page boundary. + */ + . = ALIGN(PAGE_SIZE); _einittext = .; #ifdef CONFIG_PPC64 *(.tramp.ftrace.init); @@ -186,21 +206,9 @@ EXIT_TEXT } - .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { - INIT_DATA - } - - .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { - INIT_SETUP(16) - } - - .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { - INIT_CALLS - } + . = ALIGN(PAGE_SIZE); - .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { - CON_INITCALL - } + INIT_DATA_SECTION(16) . = ALIGN(8); __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { @@ -228,9 +236,6 @@ __stop___fw_ftr_fixup = .; } #endif - .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { - INIT_RAM_FS - } PERCPU_SECTION(L1_CACHE_BYTES) --- linux-5.8.0.orig/arch/powerpc/kvm/book3s.c +++ linux-5.8.0/arch/powerpc/kvm/book3s.c @@ -834,7 +834,8 @@ kvm->arch.kvm_ops->commit_memory_region(kvm, mem, old, new, change); } -int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) +int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, + unsigned flags) { return kvm->arch.kvm_ops->unmap_hva_range(kvm, start, end); } --- linux-5.8.0.orig/arch/powerpc/kvm/book3s_hv.c +++ linux-5.8.0/arch/powerpc/kvm/book3s_hv.c @@ -3485,6 +3485,13 @@ */ asm volatile("eieio; tlbsync; ptesync"); + /* + * cp_abort is required if the processor supports local copy-paste + * to clear the copy buffer that was under control of the guest. + */ + if (cpu_has_feature(CPU_FTR_ARCH_31)) + asm volatile(PPC_CP_ABORT); + mtspr(SPRN_LPID, vcpu->kvm->arch.host_lpid); /* restore host LPID */ isync(); @@ -5207,6 +5214,12 @@ case KVM_PPC_ALLOCATE_HTAB: { u32 htab_order; + /* If we're a nested hypervisor, we currently only support radix */ + if (kvmhv_on_pseries()) { + r = -EOPNOTSUPP; + break; + } + r = -EFAULT; if (get_user(htab_order, (u32 __user *)argp)) break; --- linux-5.8.0.orig/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ linux-5.8.0/arch/powerpc/kvm/book3s_hv_rmhandlers.S @@ -1831,6 +1831,14 @@ #endif /* CONFIG_PPC_RADIX_MMU */ /* + * cp_abort is required if the processor supports local copy-paste + * to clear the copy buffer that was under control of the guest. + */ +BEGIN_FTR_SECTION + PPC_CP_ABORT +END_FTR_SECTION_IFSET(CPU_FTR_ARCH_31) + + /* * POWER7/POWER8 guest -> host partition switch code. * We don't have to lock against tlbies but we do * have to coordinate the hardware threads. --- linux-5.8.0.orig/arch/powerpc/kvm/book3s_xive.c +++ linux-5.8.0/arch/powerpc/kvm/book3s_xive.c @@ -1214,12 +1214,9 @@ static bool kvmppc_xive_vcpu_id_valid(struct kvmppc_xive *xive, u32 cpu) { /* We have a block of xive->nr_servers VPs. We just need to check - * raw vCPU ids are below the expected limit for this guest's - * core stride ; kvmppc_pack_vcpu_id() will pack them down to an - * index that can be safely used to compute a VP id that belongs - * to the VP block. + * packed vCPU ids are below that. */ - return cpu < xive->nr_servers * xive->kvm->arch.emul_smt_mode; + return kvmppc_pack_vcpu_id(xive->kvm, cpu) < xive->nr_servers; } int kvmppc_xive_compute_vp_id(struct kvmppc_xive *xive, u32 cpu, u32 *vp) --- linux-5.8.0.orig/arch/powerpc/kvm/book3s_xive_native.c +++ linux-5.8.0/arch/powerpc/kvm/book3s_xive_native.c @@ -251,6 +251,13 @@ } state = &sb->irq_state[src]; + + /* Some sanity checking */ + if (!state->valid) { + pr_devel("%s: source %lx invalid !\n", __func__, irq); + return VM_FAULT_SIGBUS; + } + kvmppc_xive_select_irq(state, &hw_num, &xd); arch_spin_lock(&sb->lock); --- linux-5.8.0.orig/arch/powerpc/kvm/e500_mmu_host.c +++ linux-5.8.0/arch/powerpc/kvm/e500_mmu_host.c @@ -734,7 +734,8 @@ return 0; } -int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) +int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, + unsigned flags) { /* kvm_unmap_hva flushes everything anyways */ kvm_unmap_hva(kvm, start); --- linux-5.8.0.orig/arch/powerpc/kvm/powerpc.c +++ linux-5.8.0/arch/powerpc/kvm/powerpc.c @@ -1515,7 +1515,7 @@ return emulated; } -int kvmppc_get_vmx_dword(struct kvm_vcpu *vcpu, int index, u64 *val) +static int kvmppc_get_vmx_dword(struct kvm_vcpu *vcpu, int index, u64 *val) { union kvmppc_one_reg reg; int vmx_offset = 0; @@ -1533,7 +1533,7 @@ return result; } -int kvmppc_get_vmx_word(struct kvm_vcpu *vcpu, int index, u64 *val) +static int kvmppc_get_vmx_word(struct kvm_vcpu *vcpu, int index, u64 *val) { union kvmppc_one_reg reg; int vmx_offset = 0; @@ -1551,7 +1551,7 @@ return result; } -int kvmppc_get_vmx_hword(struct kvm_vcpu *vcpu, int index, u64 *val) +static int kvmppc_get_vmx_hword(struct kvm_vcpu *vcpu, int index, u64 *val) { union kvmppc_one_reg reg; int vmx_offset = 0; @@ -1569,7 +1569,7 @@ return result; } -int kvmppc_get_vmx_byte(struct kvm_vcpu *vcpu, int index, u64 *val) +static int kvmppc_get_vmx_byte(struct kvm_vcpu *vcpu, int index, u64 *val) { union kvmppc_one_reg reg; int vmx_offset = 0; --- linux-5.8.0.orig/arch/powerpc/lib/Makefile +++ linux-5.8.0/arch/powerpc/lib/Makefile @@ -39,7 +39,7 @@ memcpy_power7.o obj64-y += copypage_64.o copyuser_64.o mem_64.o hweight_64.o \ - memcpy_64.o memcpy_mcsafe_64.o + memcpy_64.o copy_mc_64.o obj64-$(CONFIG_SMP) += locks.o obj64-$(CONFIG_ALTIVEC) += vmx-helper.o --- linux-5.8.0.orig/arch/powerpc/lib/copy_mc_64.S +++ linux-5.8.0/arch/powerpc/lib/copy_mc_64.S @@ -0,0 +1,242 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) IBM Corporation, 2011 + * Derived from copyuser_power7.s by Anton Blanchard + * Author - Balbir Singh + */ +#include +#include +#include + + .macro err1 +100: + EX_TABLE(100b,.Ldo_err1) + .endm + + .macro err2 +200: + EX_TABLE(200b,.Ldo_err2) + .endm + + .macro err3 +300: EX_TABLE(300b,.Ldone) + .endm + +.Ldo_err2: + ld r22,STK_REG(R22)(r1) + ld r21,STK_REG(R21)(r1) + ld r20,STK_REG(R20)(r1) + ld r19,STK_REG(R19)(r1) + ld r18,STK_REG(R18)(r1) + ld r17,STK_REG(R17)(r1) + ld r16,STK_REG(R16)(r1) + ld r15,STK_REG(R15)(r1) + ld r14,STK_REG(R14)(r1) + addi r1,r1,STACKFRAMESIZE +.Ldo_err1: + /* Do a byte by byte copy to get the exact remaining size */ + mtctr r7 +46: +err3; lbz r0,0(r4) + addi r4,r4,1 +err3; stb r0,0(r3) + addi r3,r3,1 + bdnz 46b + li r3,0 + blr + +.Ldone: + mfctr r3 + blr + + +_GLOBAL(copy_mc_generic) + mr r7,r5 + cmpldi r5,16 + blt .Lshort_copy + +.Lcopy: + /* Get the source 8B aligned */ + neg r6,r4 + mtocrf 0x01,r6 + clrldi r6,r6,(64-3) + + bf cr7*4+3,1f +err1; lbz r0,0(r4) + addi r4,r4,1 +err1; stb r0,0(r3) + addi r3,r3,1 + subi r7,r7,1 + +1: bf cr7*4+2,2f +err1; lhz r0,0(r4) + addi r4,r4,2 +err1; sth r0,0(r3) + addi r3,r3,2 + subi r7,r7,2 + +2: bf cr7*4+1,3f +err1; lwz r0,0(r4) + addi r4,r4,4 +err1; stw r0,0(r3) + addi r3,r3,4 + subi r7,r7,4 + +3: sub r5,r5,r6 + cmpldi r5,128 + + mflr r0 + stdu r1,-STACKFRAMESIZE(r1) + std r14,STK_REG(R14)(r1) + std r15,STK_REG(R15)(r1) + std r16,STK_REG(R16)(r1) + std r17,STK_REG(R17)(r1) + std r18,STK_REG(R18)(r1) + std r19,STK_REG(R19)(r1) + std r20,STK_REG(R20)(r1) + std r21,STK_REG(R21)(r1) + std r22,STK_REG(R22)(r1) + std r0,STACKFRAMESIZE+16(r1) + + blt 5f + srdi r6,r5,7 + mtctr r6 + + /* Now do cacheline (128B) sized loads and stores. */ + .align 5 +4: +err2; ld r0,0(r4) +err2; ld r6,8(r4) +err2; ld r8,16(r4) +err2; ld r9,24(r4) +err2; ld r10,32(r4) +err2; ld r11,40(r4) +err2; ld r12,48(r4) +err2; ld r14,56(r4) +err2; ld r15,64(r4) +err2; ld r16,72(r4) +err2; ld r17,80(r4) +err2; ld r18,88(r4) +err2; ld r19,96(r4) +err2; ld r20,104(r4) +err2; ld r21,112(r4) +err2; ld r22,120(r4) + addi r4,r4,128 +err2; std r0,0(r3) +err2; std r6,8(r3) +err2; std r8,16(r3) +err2; std r9,24(r3) +err2; std r10,32(r3) +err2; std r11,40(r3) +err2; std r12,48(r3) +err2; std r14,56(r3) +err2; std r15,64(r3) +err2; std r16,72(r3) +err2; std r17,80(r3) +err2; std r18,88(r3) +err2; std r19,96(r3) +err2; std r20,104(r3) +err2; std r21,112(r3) +err2; std r22,120(r3) + addi r3,r3,128 + subi r7,r7,128 + bdnz 4b + + clrldi r5,r5,(64-7) + + /* Up to 127B to go */ +5: srdi r6,r5,4 + mtocrf 0x01,r6 + +6: bf cr7*4+1,7f +err2; ld r0,0(r4) +err2; ld r6,8(r4) +err2; ld r8,16(r4) +err2; ld r9,24(r4) +err2; ld r10,32(r4) +err2; ld r11,40(r4) +err2; ld r12,48(r4) +err2; ld r14,56(r4) + addi r4,r4,64 +err2; std r0,0(r3) +err2; std r6,8(r3) +err2; std r8,16(r3) +err2; std r9,24(r3) +err2; std r10,32(r3) +err2; std r11,40(r3) +err2; std r12,48(r3) +err2; std r14,56(r3) + addi r3,r3,64 + subi r7,r7,64 + +7: ld r14,STK_REG(R14)(r1) + ld r15,STK_REG(R15)(r1) + ld r16,STK_REG(R16)(r1) + ld r17,STK_REG(R17)(r1) + ld r18,STK_REG(R18)(r1) + ld r19,STK_REG(R19)(r1) + ld r20,STK_REG(R20)(r1) + ld r21,STK_REG(R21)(r1) + ld r22,STK_REG(R22)(r1) + addi r1,r1,STACKFRAMESIZE + + /* Up to 63B to go */ + bf cr7*4+2,8f +err1; ld r0,0(r4) +err1; ld r6,8(r4) +err1; ld r8,16(r4) +err1; ld r9,24(r4) + addi r4,r4,32 +err1; std r0,0(r3) +err1; std r6,8(r3) +err1; std r8,16(r3) +err1; std r9,24(r3) + addi r3,r3,32 + subi r7,r7,32 + + /* Up to 31B to go */ +8: bf cr7*4+3,9f +err1; ld r0,0(r4) +err1; ld r6,8(r4) + addi r4,r4,16 +err1; std r0,0(r3) +err1; std r6,8(r3) + addi r3,r3,16 + subi r7,r7,16 + +9: clrldi r5,r5,(64-4) + + /* Up to 15B to go */ +.Lshort_copy: + mtocrf 0x01,r5 + bf cr7*4+0,12f +err1; lwz r0,0(r4) /* Less chance of a reject with word ops */ +err1; lwz r6,4(r4) + addi r4,r4,8 +err1; stw r0,0(r3) +err1; stw r6,4(r3) + addi r3,r3,8 + subi r7,r7,8 + +12: bf cr7*4+1,13f +err1; lwz r0,0(r4) + addi r4,r4,4 +err1; stw r0,0(r3) + addi r3,r3,4 + subi r7,r7,4 + +13: bf cr7*4+2,14f +err1; lhz r0,0(r4) + addi r4,r4,2 +err1; sth r0,0(r3) + addi r3,r3,2 + subi r7,r7,2 + +14: bf cr7*4+3,15f +err1; lbz r0,0(r4) +err1; stb r0,0(r3) + +15: li r3,0 + blr + +EXPORT_SYMBOL_GPL(copy_mc_generic); --- linux-5.8.0.orig/arch/powerpc/lib/feature-fixups.c +++ linux-5.8.0/arch/powerpc/lib/feature-fixups.c @@ -234,6 +234,110 @@ do_stf_exit_barrier_fixups(types); } +void do_uaccess_flush_fixups(enum l1d_flush_type types) +{ + unsigned int instrs[4], *dest; + long *start, *end; + int i; + + start = PTRRELOC(&__start___uaccess_flush_fixup); + end = PTRRELOC(&__stop___uaccess_flush_fixup); + + instrs[0] = 0x60000000; /* nop */ + instrs[1] = 0x60000000; /* nop */ + instrs[2] = 0x60000000; /* nop */ + instrs[3] = 0x4e800020; /* blr */ + + i = 0; + if (types == L1D_FLUSH_FALLBACK) { + instrs[3] = 0x60000000; /* nop */ + /* fallthrough to fallback flush */ + } + + if (types & L1D_FLUSH_ORI) { + instrs[i++] = 0x63ff0000; /* ori 31,31,0 speculation barrier */ + instrs[i++] = 0x63de0000; /* ori 30,30,0 L1d flush*/ + } + + if (types & L1D_FLUSH_MTTRIG) + instrs[i++] = 0x7c12dba6; /* mtspr TRIG2,r0 (SPR #882) */ + + for (i = 0; start < end; start++, i++) { + dest = (void *)start + *start; + + pr_devel("patching dest %lx\n", (unsigned long)dest); + + patch_instruction((struct ppc_inst *)dest, ppc_inst(instrs[0])); + + patch_instruction((struct ppc_inst *)(dest + 1), ppc_inst(instrs[1])); + patch_instruction((struct ppc_inst *)(dest + 2), ppc_inst(instrs[2])); + patch_instruction((struct ppc_inst *)(dest + 3), ppc_inst(instrs[3])); + } + + printk(KERN_DEBUG "uaccess-flush: patched %d locations (%s flush)\n", i, + (types == L1D_FLUSH_NONE) ? "no" : + (types == L1D_FLUSH_FALLBACK) ? "fallback displacement" : + (types & L1D_FLUSH_ORI) ? (types & L1D_FLUSH_MTTRIG) + ? "ori+mttrig type" + : "ori type" : + (types & L1D_FLUSH_MTTRIG) ? "mttrig type" + : "unknown"); +} + +void do_entry_flush_fixups(enum l1d_flush_type types) +{ + unsigned int instrs[3], *dest; + long *start, *end; + int i; + + start = PTRRELOC(&__start___entry_flush_fixup); + end = PTRRELOC(&__stop___entry_flush_fixup); + + instrs[0] = 0x60000000; /* nop */ + instrs[1] = 0x60000000; /* nop */ + instrs[2] = 0x60000000; /* nop */ + + i = 0; + if (types == L1D_FLUSH_FALLBACK) { + instrs[i++] = 0x7d4802a6; /* mflr r10 */ + instrs[i++] = 0x60000000; /* branch patched below */ + instrs[i++] = 0x7d4803a6; /* mtlr r10 */ + } + + if (types & L1D_FLUSH_ORI) { + instrs[i++] = 0x63ff0000; /* ori 31,31,0 speculation barrier */ + instrs[i++] = 0x63de0000; /* ori 30,30,0 L1d flush*/ + } + + if (types & L1D_FLUSH_MTTRIG) + instrs[i++] = 0x7c12dba6; /* mtspr TRIG2,r0 (SPR #882) */ + + for (i = 0; start < end; start++, i++) { + dest = (void *)start + *start; + + pr_devel("patching dest %lx\n", (unsigned long)dest); + + patch_instruction((struct ppc_inst *)dest, ppc_inst(instrs[0])); + + if (types == L1D_FLUSH_FALLBACK) + patch_branch((struct ppc_inst *)(dest + 1), (unsigned long)&entry_flush_fallback, + BRANCH_SET_LINK); + else + patch_instruction((struct ppc_inst *)(dest + 1), ppc_inst(instrs[1])); + + patch_instruction((struct ppc_inst *)(dest + 2), ppc_inst(instrs[2])); + } + + printk(KERN_DEBUG "entry-flush: patched %d locations (%s flush)\n", i, + (types == L1D_FLUSH_NONE) ? "no" : + (types == L1D_FLUSH_FALLBACK) ? "fallback displacement" : + (types & L1D_FLUSH_ORI) ? (types & L1D_FLUSH_MTTRIG) + ? "ori+mttrig type" + : "ori type" : + (types & L1D_FLUSH_MTTRIG) ? "mttrig type" + : "unknown"); +} + void do_rfi_flush_fixups(enum l1d_flush_type types) { unsigned int instrs[3], *dest; --- linux-5.8.0.orig/arch/powerpc/lib/sstep.c +++ linux-5.8.0/arch/powerpc/lib/sstep.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -1339,6 +1340,9 @@ switch (opcode) { #ifdef __powerpc64__ case 1: + if (!cpu_has_feature(CPU_FTR_ARCH_31)) + return -1; + prefix_r = word & (1ul << 20); ra = (suffix >> 16) & 0x1f; rd = (suffix >> 21) & 0x1f; @@ -2715,6 +2719,9 @@ } break; case 1: /* Prefixed instructions */ + if (!cpu_has_feature(CPU_FTR_ARCH_31)) + return -1; + prefix_r = word & (1ul << 20); ra = (suffix >> 16) & 0x1f; op->update_reg = ra; @@ -2733,6 +2740,7 @@ case 41: /* plwa */ op->type = MKOP(LOAD, PREFIXED | SIGNEXT, 4); break; +#ifdef CONFIG_VSX case 42: /* plxsd */ op->reg = rd + 32; op->type = MKOP(LOAD_VSX, PREFIXED, 8); @@ -2773,13 +2781,14 @@ op->element_size = 16; op->vsx_flags = VSX_CHECK_VEC; break; +#endif /* CONFIG_VSX */ case 56: /* plq */ op->type = MKOP(LOAD, PREFIXED, 16); break; case 57: /* pld */ op->type = MKOP(LOAD, PREFIXED, 8); break; - case 60: /* stq */ + case 60: /* pstq */ op->type = MKOP(STORE, PREFIXED, 16); break; case 61: /* pstd */ --- linux-5.8.0.orig/arch/powerpc/mm/book3s64/hash_native.c +++ linux-5.8.0/arch/powerpc/mm/book3s64/hash_native.c @@ -68,7 +68,7 @@ rs = ((unsigned long)pid << PPC_BITLSHIFT(31)); asm volatile(PPC_TLBIEL(%0, %1, %2, %3, %4) - : : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "r"(r) + : : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "i"(r) : "memory"); } --- linux-5.8.0.orig/arch/powerpc/mm/book3s64/hash_utils.c +++ linux-5.8.0/arch/powerpc/mm/book3s64/hash_utils.c @@ -663,11 +663,10 @@ * Pick a size for the linear mapping. Currently, we only * support 16M, 1M and 4K which is the default */ - if (IS_ENABLED(STRICT_KERNEL_RWX) && + if (IS_ENABLED(CONFIG_STRICT_KERNEL_RWX) && (unsigned long)_stext % 0x1000000) { if (mmu_psize_defs[MMU_PAGE_16M].shift) - pr_warn("Kernel not 16M aligned, " - "disabling 16M linear map alignment"); + pr_warn("Kernel not 16M aligned, disabling 16M linear map alignment\n"); aligned = false; } --- linux-5.8.0.orig/arch/powerpc/mm/book3s64/pkeys.c +++ linux-5.8.0/arch/powerpc/mm/book3s64/pkeys.c @@ -83,13 +83,17 @@ scan_pkey_feature(); /* - * Let's assume 32 pkeys on P8 bare metal, if its not defined by device - * tree. We make this exception since skiboot forgot to expose this - * property on power8. + * Let's assume 32 pkeys on P8/P9 bare metal, if its not defined by device + * tree. We make this exception since some version of skiboot forgot to + * expose this property on power8/9. */ - if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR) && - cpu_has_feature(CPU_FTRS_POWER8)) - pkeys_total = 32; + if (!pkeys_devtree_defined && !firmware_has_feature(FW_FEATURE_LPAR)) { + unsigned long pvr = mfspr(SPRN_PVR); + + if (PVR_VER(pvr) == PVR_POWER8 || PVR_VER(pvr) == PVR_POWER8E || + PVR_VER(pvr) == PVR_POWER8NVL || PVR_VER(pvr) == PVR_POWER9) + pkeys_total = 32; + } /* * Adjust the upper limit, based on the number of bits supported by --- linux-5.8.0.orig/arch/powerpc/mm/book3s64/radix_pgtable.c +++ linux-5.8.0/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -654,21 +654,6 @@ } } -void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base, - phys_addr_t first_memblock_size) -{ - /* - * We don't currently support the first MEMBLOCK not mapping 0 - * physical on those processors - */ - BUG_ON(first_memblock_base != 0); - - /* - * Radix mode is not limited by RMA / VRMA addressing. - */ - ppc64_rma_size = ULONG_MAX; -} - #ifdef CONFIG_MEMORY_HOTPLUG static void free_pte_table(pte_t *pte_start, pmd_t *pmd) { @@ -700,6 +685,21 @@ pud_clear(pud); } +static void free_pud_table(pud_t *pud_start, p4d_t *p4d) +{ + pud_t *pud; + int i; + + for (i = 0; i < PTRS_PER_PUD; i++) { + pud = pud_start + i; + if (!pud_none(*pud)) + return; + } + + pud_free(&init_mm, pud_start); + p4d_clear(p4d); +} + struct change_mapping_params { pte_t *pte; unsigned long start; @@ -874,6 +874,7 @@ pud_base = (pud_t *)p4d_page_vaddr(*p4d); remove_pud_table(pud_base, addr, next); + free_pud_table(pud_base, p4d); } spin_unlock(&init_mm.page_table_lock); --- linux-5.8.0.orig/arch/powerpc/mm/book3s64/radix_tlb.c +++ linux-5.8.0/arch/powerpc/mm/book3s64/radix_tlb.c @@ -644,19 +644,29 @@ struct mm_struct *mm = arg; unsigned long pid = mm->context.id; + /* + * A kthread could have done a mmget_not_zero() after the flushing CPU + * checked mm_is_singlethreaded, and be in the process of + * kthread_use_mm when interrupted here. In that case, current->mm will + * be set to mm, because kthread_use_mm() setting ->mm and switching to + * the mm is done with interrupts off. + */ if (current->mm == mm) - return; /* Local CPU */ + goto out_flush; if (current->active_mm == mm) { - /* - * Must be a kernel thread because sender is single-threaded. - */ - BUG_ON(current->mm); + WARN_ON_ONCE(current->mm != NULL); + /* Is a kernel thread and is using mm as the lazy tlb */ mmgrab(&init_mm); - switch_mm(mm, &init_mm, current); current->active_mm = &init_mm; + switch_mm_irqs_off(mm, &init_mm, current); mmdrop(mm); } + + atomic_dec(&mm->context.active_cpus); + cpumask_clear_cpu(smp_processor_id(), mm_cpumask(mm)); + +out_flush: _tlbiel_pid(pid, RIC_FLUSH_ALL); } @@ -671,7 +681,6 @@ */ smp_call_function_many(mm_cpumask(mm), do_exit_flush_lazy_tlb, (void *)mm, 1); - mm_reset_thread_local(mm); } void radix__flush_tlb_mm(struct mm_struct *mm) --- linux-5.8.0.orig/arch/powerpc/mm/drmem.c +++ linux-5.8.0/arch/powerpc/mm/drmem.c @@ -362,10 +362,8 @@ if (!drmem_info->lmbs) return; - for_each_drmem_lmb(lmb) { + for_each_drmem_lmb(lmb) read_drconf_v1_cell(lmb, &prop); - lmb_set_nid(lmb); - } } static void __init init_drmem_v2_lmbs(const __be32 *prop) @@ -410,8 +408,6 @@ lmb->aa_index = dr_cell.aa_index; lmb->flags = dr_cell.flags; - - lmb_set_nid(lmb); } } } --- linux-5.8.0.orig/arch/powerpc/mm/fault.c +++ linux-5.8.0/arch/powerpc/mm/fault.c @@ -267,6 +267,9 @@ return false; } +// This comes from 64-bit struct rt_sigframe + __SIGNAL_FRAMESIZE +#define SIGFRAME_MAX_SIZE (4096 + 128) + static bool bad_stack_expansion(struct pt_regs *regs, unsigned long address, struct vm_area_struct *vma, unsigned int flags, bool *must_retry) @@ -274,7 +277,7 @@ /* * N.B. The POWER/Open ABI allows programs to access up to * 288 bytes below the stack pointer. - * The kernel signal delivery code writes up to about 1.5kB + * The kernel signal delivery code writes a bit over 4KB * below the stack pointer (r1) before decrementing it. * The exec code can write slightly over 640kB to the stack * before setting the user r1. Thus we allow the stack to @@ -299,7 +302,7 @@ * between the last mapped region and the stack will * expand the stack rather than segfaulting. */ - if (address + 2048 >= uregs->gpr[1]) + if (address + SIGFRAME_MAX_SIZE >= uregs->gpr[1]) return false; if ((flags & FAULT_FLAG_WRITE) && (flags & FAULT_FLAG_USER) && @@ -383,7 +386,6 @@ static inline void cmo_account_page_fault(void) { } #endif /* CONFIG_PPC_SMLPAR */ -#ifdef CONFIG_PPC_BOOK3S static void sanity_check_fault(bool is_write, bool is_user, unsigned long error_code, unsigned long address) { @@ -400,6 +402,9 @@ return; } + if (!IS_ENABLED(CONFIG_PPC_BOOK3S)) + return; + /* * For hash translation mode, we should never get a * PROTFAULT. Any update to pte to reduce access will result in us @@ -434,10 +439,6 @@ WARN_ON_ONCE(error_code & DSISR_PROTFAULT); } -#else -static void sanity_check_fault(bool is_write, bool is_user, - unsigned long error_code, unsigned long address) { } -#endif /* CONFIG_PPC_BOOK3S */ /* * Define the correct "is_write" bit in error_code based --- linux-5.8.0.orig/arch/powerpc/mm/hugetlbpage.c +++ linux-5.8.0/arch/powerpc/mm/hugetlbpage.c @@ -330,10 +330,24 @@ get_hugepd_cache_index(pdshift - shift)); } -static void hugetlb_free_pte_range(struct mmu_gather *tlb, pmd_t *pmd, unsigned long addr) +static void hugetlb_free_pte_range(struct mmu_gather *tlb, pmd_t *pmd, + unsigned long addr, unsigned long end, + unsigned long floor, unsigned long ceiling) { + unsigned long start = addr; pgtable_t token = pmd_pgtable(*pmd); + start &= PMD_MASK; + if (start < floor) + return; + if (ceiling) { + ceiling &= PMD_MASK; + if (!ceiling) + return; + } + if (end - 1 > ceiling - 1) + return; + pmd_clear(pmd); pte_free_tlb(tlb, token, addr); mm_dec_nr_ptes(tlb->mm); @@ -363,7 +377,7 @@ */ WARN_ON(!IS_ENABLED(CONFIG_PPC_8xx)); - hugetlb_free_pte_range(tlb, pmd, addr); + hugetlb_free_pte_range(tlb, pmd, addr, end, floor, ceiling); continue; } --- linux-5.8.0.orig/arch/powerpc/mm/init_32.c +++ linux-5.8.0/arch/powerpc/mm/init_32.c @@ -171,6 +171,8 @@ btext_unmap(); #endif + kasan_mmu_init(); + setup_kup(); /* Shortly after that, the entire linear mapping will be available */ --- linux-5.8.0.orig/arch/powerpc/mm/init_64.c +++ linux-5.8.0/arch/powerpc/mm/init_64.c @@ -162,16 +162,16 @@ return next++; } -static __meminit void vmemmap_list_populate(unsigned long phys, - unsigned long start, - int node) +static __meminit int vmemmap_list_populate(unsigned long phys, + unsigned long start, + int node) { struct vmemmap_backing *vmem_back; vmem_back = vmemmap_list_alloc(node); if (unlikely(!vmem_back)) { - WARN_ON(1); - return; + pr_debug("vmemap list allocation failed\n"); + return -ENOMEM; } vmem_back->phys = phys; @@ -179,6 +179,7 @@ vmem_back->list = vmemmap_list; vmemmap_list = vmem_back; + return 0; } static bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start, @@ -199,6 +200,7 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, struct vmem_altmap *altmap) { + bool altmap_alloc; unsigned long page_size = 1 << mmu_psize_defs[mmu_vmemmap_psize].shift; /* Align to the page size of the linear mapping. */ @@ -228,13 +230,32 @@ p = altmap_alloc_block_buf(page_size, altmap); if (!p) pr_debug("altmap block allocation failed, falling back to system memory"); + else + altmap_alloc = true; } - if (!p) + if (!p) { p = vmemmap_alloc_block_buf(page_size, node); + altmap_alloc = false; + } if (!p) return -ENOMEM; - vmemmap_list_populate(__pa(p), start, node); + if (vmemmap_list_populate(__pa(p), start, node)) { + /* + * If we don't populate vmemap list, we don't have + * the ability to free the allocated vmemmap + * pages in section_deactivate. Hence free them + * here. + */ + int nr_pfns = page_size >> PAGE_SHIFT; + unsigned long page_order = get_order(page_size); + + if (altmap_alloc) + vmem_altmap_free(altmap, nr_pfns); + else + free_pages((unsigned long)p, page_order); + return -ENOMEM; + } pr_debug(" * %016lx..%016lx allocated at %p\n", start, start + page_size, p); @@ -431,9 +452,16 @@ if (!(mfmsr() & MSR_HV)) early_check_vec5(); - if (early_radix_enabled()) + if (early_radix_enabled()) { radix__early_init_devtree(); - else + /* + * We have finalized the translation we are going to use by now. + * Radix mode is not limited by RMA / VRMA addressing. + * Hence don't limit memblock allocations. + */ + ppc64_rma_size = ULONG_MAX; + memblock_set_current_limit(MEMBLOCK_ALLOC_ANYWHERE); + } else hash__early_init_devtree(); } #endif /* CONFIG_PPC_BOOK3S_64 */ --- linux-5.8.0.orig/arch/powerpc/mm/kasan/kasan_init_32.c +++ linux-5.8.0/arch/powerpc/mm/kasan/kasan_init_32.c @@ -117,10 +117,22 @@ kasan_update_early_region(k_start, k_end, __pte(0)); } -static void __init kasan_mmu_init(void) +void __init kasan_mmu_init(void) { int ret; + + if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE)) { + ret = kasan_init_shadow_page_tables(KASAN_SHADOW_START, KASAN_SHADOW_END); + + if (ret) + panic("kasan: kasan_init_shadow_page_tables() failed"); + } +} + +void __init kasan_init(void) +{ struct memblock_region *reg; + int ret; for_each_memblock(memory, reg) { phys_addr_t base = reg->base; @@ -134,20 +146,13 @@ panic("kasan: kasan_init_region() failed"); } - if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE) || - IS_ENABLED(CONFIG_KASAN_VMALLOC)) { + if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) { ret = kasan_init_shadow_page_tables(KASAN_SHADOW_START, KASAN_SHADOW_END); if (ret) panic("kasan: kasan_init_shadow_page_tables() failed"); } -} - -void __init kasan_init(void) -{ - kasan_mmu_init(); - kasan_remap_early_shadow_ro(); clear_page(kasan_early_shadow_page); --- linux-5.8.0.orig/arch/powerpc/mm/mem.c +++ linux-5.8.0/arch/powerpc/mm/mem.c @@ -50,6 +50,7 @@ #include #include #include +#include #include @@ -290,7 +291,10 @@ * back to to-down. */ memblock_set_bottom_up(true); - swiotlb_init(0); + if (is_secure_guest()) + svm_swiotlb_init(); + else + swiotlb_init(0); #endif high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); @@ -534,7 +538,7 @@ * space occurs, before returning to user space. */ - if (cpu_has_feature(MMU_FTR_TYPE_44x)) + if (mmu_has_feature(MMU_FTR_TYPE_44x)) return; invalidate_icache_range(addr, addr + PAGE_SIZE); --- linux-5.8.0.orig/arch/powerpc/mm/ptdump/hashpagetable.c +++ linux-5.8.0/arch/powerpc/mm/ptdump/hashpagetable.c @@ -258,7 +258,7 @@ for (i = 0; i < HPTES_PER_GROUP; i += 4, hpte_group += 4) { lpar_rc = plpar_pte_read_4(0, hpte_group, (void *)ptes); - if (lpar_rc != H_SUCCESS) + if (lpar_rc) continue; for (j = 0; j < 4; j++) { if (HPTE_V_COMPARE(ptes[j].v, want_v) && --- linux-5.8.0.orig/arch/powerpc/perf/core-book3s.c +++ linux-5.8.0/arch/powerpc/perf/core-book3s.c @@ -133,6 +133,9 @@ bool is_sier_available(void) { + if (!ppmu) + return false; + if (ppmu->flags & PPMU_HAS_SIER) return true; @@ -204,7 +207,7 @@ if (!(mmcra & MMCRA_SAMPLE_ENABLE) || sdar_valid) *addrp = mfspr(SPRN_SDAR); - if (is_kernel_addr(mfspr(SPRN_SDAR)) && perf_allow_kernel(&event->attr) != 0) + if (is_kernel_addr(mfspr(SPRN_SDAR)) && event->attr.exclude_kernel) *addrp = 0; } @@ -467,7 +470,7 @@ * exporting it to userspace (avoid exposure of regions * where we could have speculative execution) */ - if (is_kernel_addr(addr) && perf_allow_kernel(&event->attr) != 0) + if (is_kernel_addr(addr) && event->attr.exclude_kernel) continue; /* Branches are read most recent first (ie. mfbhrb 0 is @@ -1517,9 +1520,16 @@ ret = 0; out: if (has_branch_stack(event)) { - power_pmu_bhrb_enable(event); - cpuhw->bhrb_filter = ppmu->bhrb_filter_map( - event->attr.branch_sample_type); + u64 bhrb_filter = -1; + + if (ppmu->bhrb_filter_map) + bhrb_filter = ppmu->bhrb_filter_map( + event->attr.branch_sample_type); + + if (bhrb_filter != -1) { + cpuhw->bhrb_filter = bhrb_filter; + power_pmu_bhrb_enable(event); + } } perf_pmu_enable(event->pmu); @@ -1841,7 +1851,6 @@ int n; int err; struct cpu_hw_events *cpuhw; - u64 bhrb_filter; if (!ppmu) return -ENOENT; @@ -1947,7 +1956,10 @@ err = power_check_constraints(cpuhw, events, cflags, n + 1); if (has_branch_stack(event)) { - bhrb_filter = ppmu->bhrb_filter_map( + u64 bhrb_filter = -1; + + if (ppmu->bhrb_filter_map) + bhrb_filter = ppmu->bhrb_filter_map( event->attr.branch_sample_type); if (bhrb_filter == -1) { @@ -2060,7 +2072,17 @@ left += period; if (left <= 0) left = period; - record = siar_valid(regs); + + /* + * If address is not requested in the sample via + * PERF_SAMPLE_IP, just record that sample irrespective + * of SIAR valid check. + */ + if (event->attr.sample_type & PERF_SAMPLE_IP) + record = siar_valid(regs); + else + record = 1; + event->hw.last_period = event->hw.sample_period; } if (left < 0x80000000LL) @@ -2073,6 +2095,17 @@ perf_event_update_userpage(event); /* + * Due to hardware limitation, sometimes SIAR could sample a kernel + * address even when freeze on supervisor state (kernel) is set in + * MMCR2. Check attr.exclude_kernel and address to drop the sample in + * these cases. + */ + if (event->attr.exclude_kernel && + (event->attr.sample_type & PERF_SAMPLE_IP) && + is_kernel_addr(mfspr(SPRN_SIAR))) + record = 0; + + /* * Finally record data if requested. */ if (record) { @@ -2101,6 +2134,10 @@ if (perf_event_overflow(event, &data, regs)) power_pmu_stop(event, 0); + } else if (period) { + /* Account for interrupt in case of invalid SIAR */ + if (perf_event_account_interrupt(event)) + power_pmu_stop(event, 0); } } --- linux-5.8.0.orig/arch/powerpc/perf/hv-gpci-requests.h +++ linux-5.8.0/arch/powerpc/perf/hv-gpci-requests.h @@ -95,7 +95,7 @@ #define REQUEST_NAME system_performance_capabilities #define REQUEST_NUM 0x40 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff" #include I(REQUEST_BEGIN) REQUEST(__field(0, 1, perf_collect_privileged) __field(0x1, 1, capability_mask) @@ -223,7 +223,7 @@ #define REQUEST_NAME system_hypervisor_times #define REQUEST_NUM 0xF0 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff" #include I(REQUEST_BEGIN) REQUEST(__count(0, 8, time_spent_to_dispatch_virtual_processors) __count(0x8, 8, time_spent_processing_virtual_processor_timers) @@ -234,7 +234,7 @@ #define REQUEST_NAME system_tlbie_count_and_time #define REQUEST_NUM 0xF4 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff" #include I(REQUEST_BEGIN) REQUEST(__count(0, 8, tlbie_instructions_issued) /* --- linux-5.8.0.orig/arch/powerpc/perf/isa207-common.c +++ linux-5.8.0/arch/powerpc/perf/isa207-common.c @@ -233,6 +233,9 @@ u64 sier = mfspr(SPRN_SIER); u64 val = (sier & ISA207_SIER_TYPE_MASK) >> ISA207_SIER_TYPE_SHIFT; + if (cpu_has_feature(CPU_FTR_ARCH_31)) + mantissa = P10_MMCRA_THR_CTR_MANT(mmcra); + if (val == 0 || val == 7) *weight = 0; else @@ -269,6 +272,15 @@ mask |= CNST_PMC_MASK(pmc); value |= CNST_PMC_VAL(pmc); + + /* + * PMC5 and PMC6 are used to count cycles and instructions and + * they do not support most of the constraint bits. Add a check + * to exclude PMC5/6 from most of the constraints except for + * EBB/BHRB. + */ + if (pmc >= 5) + goto ebb_bhrb; } if (pmc <= 4) { @@ -313,7 +325,12 @@ value |= CNST_SAMPLE_VAL(event >> EVENT_SAMPLE_SHIFT); } - if (cpu_has_feature(CPU_FTR_ARCH_300)) { + if (cpu_has_feature(CPU_FTR_ARCH_31)) { + if (event_is_threshold(event)) { + mask |= CNST_THRESH_CTL_SEL_MASK; + value |= CNST_THRESH_CTL_SEL_VAL(event >> EVENT_THRESH_SHIFT); + } + } else if (cpu_has_feature(CPU_FTR_ARCH_300)) { if (event_is_threshold(event) && is_thresh_cmp_valid(event)) { mask |= CNST_THRESH_MASK; value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT); @@ -335,6 +352,7 @@ } } +ebb_bhrb: if (!pmc && ebb) /* EBB events must specify the PMC */ return -1; --- linux-5.8.0.orig/arch/powerpc/perf/isa207-common.h +++ linux-5.8.0/arch/powerpc/perf/isa207-common.h @@ -118,6 +118,9 @@ #define CNST_THRESH_VAL(v) (((v) & EVENT_THRESH_MASK) << 32) #define CNST_THRESH_MASK CNST_THRESH_VAL(EVENT_THRESH_MASK) +#define CNST_THRESH_CTL_SEL_VAL(v) (((v) & 0x7ffull) << 32) +#define CNST_THRESH_CTL_SEL_MASK CNST_THRESH_CTL_SEL_VAL(0x7ff) + #define CNST_EBB_VAL(v) (((v) & EVENT_EBB_MASK) << 24) #define CNST_EBB_MASK CNST_EBB_VAL(EVENT_EBB_MASK) @@ -191,6 +194,10 @@ #define MMCRA_THR_CTR_EXP(v) (((v) >> MMCRA_THR_CTR_EXP_SHIFT) &\ MMCRA_THR_CTR_EXP_MASK) +#define P10_MMCRA_THR_CTR_MANT_MASK 0xFFul +#define P10_MMCRA_THR_CTR_MANT(v) (((v) >> MMCRA_THR_CTR_MANT_SHIFT) &\ + P10_MMCRA_THR_CTR_MANT_MASK) + /* MMCR1 Threshold Compare bit constant for power9 */ #define p9_MMCRA_THR_CMP_SHIFT 45 --- linux-5.8.0.orig/arch/powerpc/platforms/8xx/micropatch.c +++ linux-5.8.0/arch/powerpc/platforms/8xx/micropatch.c @@ -360,6 +360,17 @@ if (IS_ENABLED(CONFIG_SMC_UCODE_PATCH)) { smc_uart_t *smp; + if (IS_ENABLED(CONFIG_PPC_EARLY_DEBUG_CPM)) { + int i; + + for (i = 0; i < sizeof(*smp); i += 4) { + u32 __iomem *src = (u32 __iomem *)&cp->cp_dparam[PROFF_SMC1 + i]; + u32 __iomem *dst = (u32 __iomem *)&cp->cp_dparam[PROFF_DSP1 + i]; + + out_be32(dst, in_be32(src)); + } + } + smp = (smc_uart_t *)&cp->cp_dparam[PROFF_SMC1]; out_be16(&smp->smc_rpbase, 0x1ec0); smp = (smc_uart_t *)&cp->cp_dparam[PROFF_SMC2]; --- linux-5.8.0.orig/arch/powerpc/platforms/Kconfig +++ linux-5.8.0/arch/powerpc/platforms/Kconfig @@ -223,12 +223,11 @@ temperature within 2-4 degrees Celsius. This option shows the current on-die temperature in /proc/cpuinfo if the cpu supports it. - Unfortunately, on some chip revisions, this sensor is very inaccurate - and in many cases, does not work at all, so don't assume the cpu - temp is actually what /proc/cpuinfo says it is. + Unfortunately, this sensor is very inaccurate when uncalibrated, so + don't assume the cpu temp is actually what /proc/cpuinfo says it is. config TAU_INT - bool "Interrupt driven TAU driver (DANGEROUS)" + bool "Interrupt driven TAU driver (EXPERIMENTAL)" depends on TAU help The TAU supports an interrupt driven mode which causes an interrupt @@ -236,12 +235,7 @@ to get notified the temp has exceeded a range. With this option off, a timer is used to re-check the temperature periodically. - However, on some cpus it appears that the TAU interrupt hardware - is buggy and can cause a situation which would lead unexplained hard - lockups. - - Unless you are extending the TAU driver, or enjoy kernel/hardware - debugging, leave this option off. + If in doubt, say N here. config TAU_AVERAGE bool "Average high and low temp" --- linux-5.8.0.orig/arch/powerpc/platforms/cell/Kconfig +++ linux-5.8.0/arch/powerpc/platforms/cell/Kconfig @@ -44,6 +44,7 @@ tristate "SPU file system" default m depends on PPC_CELL + depends on COREDUMP select SPU_BASE help The SPU file system is used to access Synergistic Processing --- linux-5.8.0.orig/arch/powerpc/platforms/cell/spufs/coredump.c +++ linux-5.8.0/arch/powerpc/platforms/cell/spufs/coredump.c @@ -105,7 +105,7 @@ size_t sz = spufs_coredump_read[i].size; char fullname[80]; struct elf_note en; - size_t ret; + int ret; sprintf(fullname, "SPU/%d/%s", dfd, spufs_coredump_read[i].name); en.n_namesz = strlen(fullname) + 1; --- linux-5.8.0.orig/arch/powerpc/platforms/powermac/sleep.S +++ linux-5.8.0/arch/powerpc/platforms/powermac/sleep.S @@ -44,7 +44,8 @@ #define SL_TB 0xa0 #define SL_R2 0xa8 #define SL_CR 0xac -#define SL_R12 0xb0 /* r12 to r31 */ +#define SL_LR 0xb0 +#define SL_R12 0xb4 /* r12 to r31 */ #define SL_SIZE (SL_R12 + 80) .section .text @@ -63,105 +64,107 @@ blr #else mflr r0 - stw r0,4(r1) - stwu r1,-SL_SIZE(r1) + lis r11,sleep_storage@ha + addi r11,r11,sleep_storage@l + stw r0,SL_LR(r11) mfcr r0 - stw r0,SL_CR(r1) - stw r2,SL_R2(r1) - stmw r12,SL_R12(r1) + stw r0,SL_CR(r11) + stw r1,SL_SP(r11) + stw r2,SL_R2(r11) + stmw r12,SL_R12(r11) /* Save MSR & SDR1 */ mfmsr r4 - stw r4,SL_MSR(r1) + stw r4,SL_MSR(r11) mfsdr1 r4 - stw r4,SL_SDR1(r1) + stw r4,SL_SDR1(r11) /* Get a stable timebase and save it */ 1: mftbu r4 - stw r4,SL_TB(r1) + stw r4,SL_TB(r11) mftb r5 - stw r5,SL_TB+4(r1) + stw r5,SL_TB+4(r11) mftbu r3 cmpw r3,r4 bne 1b /* Save SPRGs */ mfsprg r4,0 - stw r4,SL_SPRG0(r1) + stw r4,SL_SPRG0(r11) mfsprg r4,1 - stw r4,SL_SPRG0+4(r1) + stw r4,SL_SPRG0+4(r11) mfsprg r4,2 - stw r4,SL_SPRG0+8(r1) + stw r4,SL_SPRG0+8(r11) mfsprg r4,3 - stw r4,SL_SPRG0+12(r1) + stw r4,SL_SPRG0+12(r11) /* Save BATs */ mfdbatu r4,0 - stw r4,SL_DBAT0(r1) + stw r4,SL_DBAT0(r11) mfdbatl r4,0 - stw r4,SL_DBAT0+4(r1) + stw r4,SL_DBAT0+4(r11) mfdbatu r4,1 - stw r4,SL_DBAT1(r1) + stw r4,SL_DBAT1(r11) mfdbatl r4,1 - stw r4,SL_DBAT1+4(r1) + stw r4,SL_DBAT1+4(r11) mfdbatu r4,2 - stw r4,SL_DBAT2(r1) + stw r4,SL_DBAT2(r11) mfdbatl r4,2 - stw r4,SL_DBAT2+4(r1) + stw r4,SL_DBAT2+4(r11) mfdbatu r4,3 - stw r4,SL_DBAT3(r1) + stw r4,SL_DBAT3(r11) mfdbatl r4,3 - stw r4,SL_DBAT3+4(r1) + stw r4,SL_DBAT3+4(r11) mfibatu r4,0 - stw r4,SL_IBAT0(r1) + stw r4,SL_IBAT0(r11) mfibatl r4,0 - stw r4,SL_IBAT0+4(r1) + stw r4,SL_IBAT0+4(r11) mfibatu r4,1 - stw r4,SL_IBAT1(r1) + stw r4,SL_IBAT1(r11) mfibatl r4,1 - stw r4,SL_IBAT1+4(r1) + stw r4,SL_IBAT1+4(r11) mfibatu r4,2 - stw r4,SL_IBAT2(r1) + stw r4,SL_IBAT2(r11) mfibatl r4,2 - stw r4,SL_IBAT2+4(r1) + stw r4,SL_IBAT2+4(r11) mfibatu r4,3 - stw r4,SL_IBAT3(r1) + stw r4,SL_IBAT3(r11) mfibatl r4,3 - stw r4,SL_IBAT3+4(r1) + stw r4,SL_IBAT3+4(r11) BEGIN_MMU_FTR_SECTION mfspr r4,SPRN_DBAT4U - stw r4,SL_DBAT4(r1) + stw r4,SL_DBAT4(r11) mfspr r4,SPRN_DBAT4L - stw r4,SL_DBAT4+4(r1) + stw r4,SL_DBAT4+4(r11) mfspr r4,SPRN_DBAT5U - stw r4,SL_DBAT5(r1) + stw r4,SL_DBAT5(r11) mfspr r4,SPRN_DBAT5L - stw r4,SL_DBAT5+4(r1) + stw r4,SL_DBAT5+4(r11) mfspr r4,SPRN_DBAT6U - stw r4,SL_DBAT6(r1) + stw r4,SL_DBAT6(r11) mfspr r4,SPRN_DBAT6L - stw r4,SL_DBAT6+4(r1) + stw r4,SL_DBAT6+4(r11) mfspr r4,SPRN_DBAT7U - stw r4,SL_DBAT7(r1) + stw r4,SL_DBAT7(r11) mfspr r4,SPRN_DBAT7L - stw r4,SL_DBAT7+4(r1) + stw r4,SL_DBAT7+4(r11) mfspr r4,SPRN_IBAT4U - stw r4,SL_IBAT4(r1) + stw r4,SL_IBAT4(r11) mfspr r4,SPRN_IBAT4L - stw r4,SL_IBAT4+4(r1) + stw r4,SL_IBAT4+4(r11) mfspr r4,SPRN_IBAT5U - stw r4,SL_IBAT5(r1) + stw r4,SL_IBAT5(r11) mfspr r4,SPRN_IBAT5L - stw r4,SL_IBAT5+4(r1) + stw r4,SL_IBAT5+4(r11) mfspr r4,SPRN_IBAT6U - stw r4,SL_IBAT6(r1) + stw r4,SL_IBAT6(r11) mfspr r4,SPRN_IBAT6L - stw r4,SL_IBAT6+4(r1) + stw r4,SL_IBAT6+4(r11) mfspr r4,SPRN_IBAT7U - stw r4,SL_IBAT7(r1) + stw r4,SL_IBAT7(r11) mfspr r4,SPRN_IBAT7L - stw r4,SL_IBAT7+4(r1) + stw r4,SL_IBAT7+4(r11) END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) /* Backup various CPU config stuffs */ @@ -180,9 +183,9 @@ lis r5,grackle_wake_up@ha addi r5,r5,grackle_wake_up@l tophys(r5,r5) - stw r5,SL_PC(r1) + stw r5,SL_PC(r11) lis r4,KERNELBASE@h - tophys(r5,r1) + tophys(r5,r11) addi r5,r5,SL_PC lis r6,MAGIC@ha addi r6,r6,MAGIC@l @@ -194,12 +197,6 @@ tophys(r3,r3) stw r3,0x80(r4) stw r5,0x84(r4) - /* Store a pointer to our backup storage into - * a kernel global - */ - lis r3,sleep_storage@ha - addi r3,r3,sleep_storage@l - stw r5,0(r3) .globl low_cpu_die low_cpu_die: @@ -279,7 +276,7 @@ lis r3,sleep_storage@ha addi r3,r3,sleep_storage@l tophys(r3,r3) - lwz r1,0(r3) + addi r1,r3,SL_PC /* Pass thru to older resume code ... */ _ASM_NOKPROBE_SYMBOL(core99_wake_up) @@ -294,14 +291,7 @@ * we do any r1 memory access as we are not sure they * are in a sane state above the first 256Mb region */ - li r0,16 /* load up segment register values */ - mtctr r0 /* for context 0 */ - lis r3,0x2000 /* Ku = 1, VSID = 0 */ - li r4,0 -3: mtsrin r3,r4 - addi r3,r3,0x111 /* increment VSID */ - addis r4,r4,0x1000 /* address of next segment */ - bdnz 3b + bl load_segment_registers sync isync @@ -406,13 +396,6 @@ blt 1b sync - /* restore the MSR and turn on the MMU */ - lwz r3,SL_MSR(r1) - bl turn_on_mmu - - /* get back the stack pointer */ - tovirt(r1,r1) - /* Restore TB */ li r3,0 mttbl r3 @@ -426,28 +409,24 @@ mtcr r0 lwz r2,SL_R2(r1) lmw r12,SL_R12(r1) - addi r1,r1,SL_SIZE - lwz r0,4(r1) - mtlr r0 - blr -_ASM_NOKPROBE_SYMBOL(grackle_wake_up) -turn_on_mmu: - mflr r4 - tovirt(r4,r4) + /* restore the MSR and SP and turn on the MMU and return */ + lwz r3,SL_MSR(r1) + lwz r4,SL_LR(r1) + lwz r1,SL_SP(r1) mtsrr0 r4 mtsrr1 r3 sync isync rfi -_ASM_NOKPROBE_SYMBOL(turn_on_mmu) +_ASM_NOKPROBE_SYMBOL(grackle_wake_up) #endif /* defined(CONFIG_PM) || defined(CONFIG_CPU_FREQ) */ - .section .data + .section .bss .balign L1_CACHE_BYTES sleep_storage: - .long 0 + .space SL_SIZE .balign L1_CACHE_BYTES, 0 #endif /* CONFIG_PPC_BOOK3S_32 */ --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/memtrace.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/memtrace.c @@ -30,6 +30,7 @@ char name[16]; }; +static DEFINE_MUTEX(memtrace_mutex); static u64 memtrace_size; static struct memtrace_entry *memtrace_array; @@ -67,6 +68,23 @@ return 0; } +static void memtrace_clear_range(unsigned long start_pfn, + unsigned long nr_pages) +{ + unsigned long pfn; + + /* + * As pages are offline, we cannot trust the memmap anymore. As HIGHMEM + * does not apply, avoid passing around "struct page" and use + * clear_page() instead directly. + */ + for (pfn = start_pfn; pfn < start_pfn + nr_pages; pfn++) { + if (IS_ALIGNED(pfn, PAGES_PER_SECTION)) + cond_resched(); + clear_page(__va(PFN_PHYS(pfn))); + } +} + /* called with device_hotplug_lock held */ static bool memtrace_offline_pages(u32 nid, u64 start_pfn, u64 nr_pages) { @@ -112,6 +130,11 @@ for (base_pfn = end_pfn; base_pfn > start_pfn; base_pfn -= nr_pages) { if (memtrace_offline_pages(nid, base_pfn, nr_pages) == true) { /* + * Clear the range while we still have a linear + * mapping. + */ + memtrace_clear_range(base_pfn, nr_pages); + /* * Remove memory in memory block size chunks so that * iomem resources are always split to the same size and * we never try to remove memory that spans two iomem @@ -257,6 +280,7 @@ static int memtrace_enable_set(void *data, u64 val) { + int rc = -EAGAIN; u64 bytes; /* @@ -269,25 +293,31 @@ return -EINVAL; } + mutex_lock(&memtrace_mutex); + /* Re-add/online previously removed/offlined memory */ if (memtrace_size) { if (memtrace_online()) - return -EAGAIN; + goto out_unlock; } - if (!val) - return 0; + if (!val) { + rc = 0; + goto out_unlock; + } /* Offline and remove memory */ if (memtrace_init_regions_runtime(val)) - return -EINVAL; + goto out_unlock; if (memtrace_init_debugfs()) - return -EINVAL; + goto out_unlock; memtrace_size = val; - - return 0; + rc = 0; +out_unlock: + mutex_unlock(&memtrace_mutex); + return rc; } static int memtrace_enable_get(void *data, u64 *val) --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/npu-dma.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/npu-dma.c @@ -385,7 +385,8 @@ for (i = 0; i < npucomp->pe_num; ++i) { struct pnv_ioda_pe *pe = npucomp->pe[i]; - if (!pe->table_group.ops->take_ownership) + if (!pe->table_group.ops || + !pe->table_group.ops->take_ownership) continue; pe->table_group.ops->take_ownership(&pe->table_group); } @@ -401,7 +402,8 @@ for (i = 0; i < npucomp->pe_num; ++i) { struct pnv_ioda_pe *pe = npucomp->pe[i]; - if (!pe->table_group.ops->release_ownership) + if (!pe->table_group.ops || + !pe->table_group.ops->release_ownership) continue; pe->table_group.ops->release_ownership(&pe->table_group); } @@ -623,6 +625,11 @@ return -ENODEV; hose = pci_bus_to_host(npdev->bus); + if (hose->npu == NULL) { + dev_info_once(&npdev->dev, "Nvlink1 does not support contexts"); + return 0; + } + nphb = hose->private_data; dev_dbg(&gpdev->dev, "Map LPAR opalid=%llu lparid=%u\n", @@ -670,6 +677,11 @@ return -ENODEV; hose = pci_bus_to_host(npdev->bus); + if (hose->npu == NULL) { + dev_info_once(&npdev->dev, "Nvlink1 does not support contexts"); + return 0; + } + nphb = hose->private_data; dev_dbg(&gpdev->dev, "destroy context opalid=%llu\n", --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/opal-dump.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/opal-dump.c @@ -318,15 +318,14 @@ return count; } -static struct dump_obj *create_dump_obj(uint32_t id, size_t size, - uint32_t type) +static void create_dump_obj(uint32_t id, size_t size, uint32_t type) { struct dump_obj *dump; int rc; dump = kzalloc(sizeof(*dump), GFP_KERNEL); if (!dump) - return NULL; + return; dump->kobj.kset = dump_kset; @@ -346,21 +345,39 @@ rc = kobject_add(&dump->kobj, NULL, "0x%x-0x%x", type, id); if (rc) { kobject_put(&dump->kobj); - return NULL; + return; } + /* + * As soon as the sysfs file for this dump is created/activated there is + * a chance the opal_errd daemon (or any userspace) might read and + * acknowledge the dump before kobject_uevent() is called. If that + * happens then there is a potential race between + * dump_ack_store->kobject_put() and kobject_uevent() which leads to a + * use-after-free of a kernfs object resulting in a kernel crash. + * + * To avoid that, we need to take a reference on behalf of the bin file, + * so that our reference remains valid while we call kobject_uevent(). + * We then drop our reference before exiting the function, leaving the + * bin file to drop the last reference (if it hasn't already). + */ + + /* Take a reference for the bin file */ + kobject_get(&dump->kobj); rc = sysfs_create_bin_file(&dump->kobj, &dump->dump_attr); - if (rc) { + if (rc == 0) { + kobject_uevent(&dump->kobj, KOBJ_ADD); + + pr_info("%s: New platform dump. ID = 0x%x Size %u\n", + __func__, dump->id, dump->size); + } else { + /* Drop reference count taken for bin file */ kobject_put(&dump->kobj); - return NULL; } - pr_info("%s: New platform dump. ID = 0x%x Size %u\n", - __func__, dump->id, dump->size); - - kobject_uevent(&dump->kobj, KOBJ_ADD); - - return dump; + /* Drop our reference */ + kobject_put(&dump->kobj); + return; } static irqreturn_t process_dump(int irq, void *data) --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/opal-elog.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/opal-elog.c @@ -179,14 +179,14 @@ return count; } -static struct elog_obj *create_elog_obj(uint64_t id, size_t size, uint64_t type) +static void create_elog_obj(uint64_t id, size_t size, uint64_t type) { struct elog_obj *elog; int rc; elog = kzalloc(sizeof(*elog), GFP_KERNEL); if (!elog) - return NULL; + return; elog->kobj.kset = elog_kset; @@ -219,18 +219,37 @@ rc = kobject_add(&elog->kobj, NULL, "0x%llx", id); if (rc) { kobject_put(&elog->kobj); - return NULL; + return; } + /* + * As soon as the sysfs file for this elog is created/activated there is + * a chance the opal_errd daemon (or any userspace) might read and + * acknowledge the elog before kobject_uevent() is called. If that + * happens then there is a potential race between + * elog_ack_store->kobject_put() and kobject_uevent() which leads to a + * use-after-free of a kernfs object resulting in a kernel crash. + * + * To avoid that, we need to take a reference on behalf of the bin file, + * so that our reference remains valid while we call kobject_uevent(). + * We then drop our reference before exiting the function, leaving the + * bin file to drop the last reference (if it hasn't already). + */ + + /* Take a reference for the bin file */ + kobject_get(&elog->kobj); rc = sysfs_create_bin_file(&elog->kobj, &elog->raw_attr); - if (rc) { + if (rc == 0) { + kobject_uevent(&elog->kobj, KOBJ_ADD); + } else { + /* Drop the reference taken for the bin file */ kobject_put(&elog->kobj); - return NULL; } - kobject_uevent(&elog->kobj, KOBJ_ADD); + /* Drop our reference */ + kobject_put(&elog->kobj); - return elog; + return; } static irqreturn_t elog_event(int irq, void *data) --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/setup.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/setup.c @@ -122,12 +122,29 @@ type = L1D_FLUSH_ORI; } + /* + * If we are non-Power9 bare metal, we don't need to flush on kernel + * entry or after user access: they fix a P9 specific vulnerability. + */ + if (!pvr_version_is(PVR_POWER9)) { + security_ftr_clear(SEC_FTR_L1D_FLUSH_ENTRY); + security_ftr_clear(SEC_FTR_L1D_FLUSH_UACCESS); + } + enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && \ (security_ftr_enabled(SEC_FTR_L1D_FLUSH_PR) || \ security_ftr_enabled(SEC_FTR_L1D_FLUSH_HV)); setup_rfi_flush(type, enable); setup_count_cache_flush(); + + enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && + security_ftr_enabled(SEC_FTR_L1D_FLUSH_ENTRY); + setup_entry_flush(enable); + + enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && + security_ftr_enabled(SEC_FTR_L1D_FLUSH_UACCESS); + setup_uaccess_flush(enable); } static void __init pnv_setup_arch(void) @@ -169,11 +186,16 @@ add_preferred_console("hvc", 0, NULL); if (!radix_enabled()) { + size_t size = sizeof(struct slb_entry) * mmu_slb_size; int i; /* Allocate per cpu area to save old slb contents during MCE */ - for_each_possible_cpu(i) - paca_ptrs[i]->mce_faulty_slbs = memblock_alloc_node(mmu_slb_size, __alignof__(*paca_ptrs[i]->mce_faulty_slbs), cpu_to_node(i)); + for_each_possible_cpu(i) { + paca_ptrs[i]->mce_faulty_slbs = + memblock_alloc_node(size, + __alignof__(struct slb_entry), + cpu_to_node(i)); + } } } --- linux-5.8.0.orig/arch/powerpc/platforms/powernv/smp.c +++ linux-5.8.0/arch/powerpc/platforms/powernv/smp.c @@ -43,7 +43,7 @@ #include #define DBG(fmt...) udbg_printf(fmt) #else -#define DBG(fmt...) +#define DBG(fmt...) do { } while (0) #endif static void pnv_smp_setup_cpu(int cpu) --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/dlpar.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/dlpar.c @@ -127,7 +127,6 @@ #define NEXT_PROPERTY 3 #define PREV_PARENT 4 #define MORE_MEMORY 5 -#define CALL_AGAIN -2 #define ERR_CFG_USE -9003 struct device_node *dlpar_configure_connector(__be32 drc_index, @@ -168,6 +167,9 @@ spin_unlock(&rtas_data_buf_lock); + if (rtas_busy_delay(rc)) + continue; + switch (rc) { case COMPLETE: break; @@ -216,9 +218,6 @@ last_dn = last_dn->parent; break; - case CALL_AGAIN: - break; - case MORE_MEMORY: case ERR_CFG_USE: default: --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/hotplug-cpu.c @@ -35,54 +35,10 @@ #include #include "pseries.h" -#include "offline_states.h" /* This version can't take the spinlock, because it never returns */ static int rtas_stop_self_token = RTAS_UNKNOWN_SERVICE; -static DEFINE_PER_CPU(enum cpu_state_vals, preferred_offline_state) = - CPU_STATE_OFFLINE; -static DEFINE_PER_CPU(enum cpu_state_vals, current_state) = CPU_STATE_OFFLINE; - -static enum cpu_state_vals default_offline_state = CPU_STATE_OFFLINE; - -static bool cede_offline_enabled __read_mostly = true; - -/* - * Enable/disable cede_offline when available. - */ -static int __init setup_cede_offline(char *str) -{ - return (kstrtobool(str, &cede_offline_enabled) == 0); -} - -__setup("cede_offline=", setup_cede_offline); - -enum cpu_state_vals get_cpu_current_state(int cpu) -{ - return per_cpu(current_state, cpu); -} - -void set_cpu_current_state(int cpu, enum cpu_state_vals state) -{ - per_cpu(current_state, cpu) = state; -} - -enum cpu_state_vals get_preferred_offline_state(int cpu) -{ - return per_cpu(preferred_offline_state, cpu); -} - -void set_preferred_offline_state(int cpu, enum cpu_state_vals state) -{ - per_cpu(preferred_offline_state, cpu) = state; -} - -void set_default_offline_state(int cpu) -{ - per_cpu(preferred_offline_state, cpu) = default_offline_state; -} - static void rtas_stop_self(void) { static struct rtas_args args; @@ -101,9 +57,7 @@ static void pseries_mach_cpu_die(void) { - unsigned int cpu = smp_processor_id(); unsigned int hwcpu = hard_smp_processor_id(); - u8 cede_latency_hint = 0; local_irq_disable(); idle_task_exit(); @@ -112,49 +66,6 @@ else xics_teardown_cpu(); - if (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { - set_cpu_current_state(cpu, CPU_STATE_INACTIVE); - if (ppc_md.suspend_disable_cpu) - ppc_md.suspend_disable_cpu(); - - cede_latency_hint = 2; - - get_lppaca()->idle = 1; - if (!lppaca_shared_proc(get_lppaca())) - get_lppaca()->donate_dedicated_cpu = 1; - - while (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { - while (!prep_irq_for_idle()) { - local_irq_enable(); - local_irq_disable(); - } - - extended_cede_processor(cede_latency_hint); - } - - local_irq_disable(); - - if (!lppaca_shared_proc(get_lppaca())) - get_lppaca()->donate_dedicated_cpu = 0; - get_lppaca()->idle = 0; - - if (get_preferred_offline_state(cpu) == CPU_STATE_ONLINE) { - unregister_slb_shadow(hwcpu); - - hard_irq_disable(); - /* - * Call to start_secondary_resume() will not return. - * Kernel stack will be reset and start_secondary() - * will be called to continue the online operation. - */ - start_secondary_resume(); - } - } - - /* Requested state is CPU_STATE_OFFLINE at this point */ - WARN_ON(get_preferred_offline_state(cpu) != CPU_STATE_OFFLINE); - - set_cpu_current_state(cpu, CPU_STATE_OFFLINE); unregister_slb_shadow(hwcpu); rtas_stop_self(); @@ -196,33 +107,28 @@ */ static void pseries_cpu_die(unsigned int cpu) { - int tries; int cpu_status = 1; unsigned int pcpu = get_hard_smp_processor_id(cpu); + unsigned long timeout = jiffies + msecs_to_jiffies(120000); - if (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { - cpu_status = 1; - for (tries = 0; tries < 5000; tries++) { - if (get_cpu_current_state(cpu) == CPU_STATE_INACTIVE) { - cpu_status = 0; - break; - } - msleep(1); - } - } else if (get_preferred_offline_state(cpu) == CPU_STATE_OFFLINE) { + while (true) { + cpu_status = smp_query_cpu_stopped(pcpu); + if (cpu_status == QCSS_STOPPED || + cpu_status == QCSS_HARDWARE_ERROR) + break; - for (tries = 0; tries < 25; tries++) { - cpu_status = smp_query_cpu_stopped(pcpu); - if (cpu_status == QCSS_STOPPED || - cpu_status == QCSS_HARDWARE_ERROR) - break; - cpu_relax(); + if (time_after(jiffies, timeout)) { + pr_warn("CPU %i (hwid %i) didn't die after 120 seconds\n", + cpu, pcpu); + timeout = jiffies + msecs_to_jiffies(120000); } + + cond_resched(); } - if (cpu_status != 0) { - printk("Querying DEAD? cpu %i (%i) shows %i\n", - cpu, pcpu, cpu_status); + if (cpu_status == QCSS_HARDWARE_ERROR) { + pr_warn("CPU %i (hwid %i) reported error while dying\n", + cpu, pcpu); } /* Isolation and deallocation are definitely done by @@ -359,28 +265,15 @@ if (get_hard_smp_processor_id(cpu) != thread) continue; - if (get_cpu_current_state(cpu) == CPU_STATE_OFFLINE) - break; - - if (get_cpu_current_state(cpu) == CPU_STATE_ONLINE) { - set_preferred_offline_state(cpu, - CPU_STATE_OFFLINE); - cpu_maps_update_done(); - timed_topology_update(1); - rc = device_offline(get_cpu_device(cpu)); - if (rc) - goto out; - cpu_maps_update_begin(); + if (!cpu_online(cpu)) break; - } - /* - * The cpu is in CPU_STATE_INACTIVE. - * Upgrade it's state to CPU_STATE_OFFLINE. - */ - set_preferred_offline_state(cpu, CPU_STATE_OFFLINE); - WARN_ON(plpar_hcall_norets(H_PROD, thread) != H_SUCCESS); - __cpu_die(cpu); + cpu_maps_update_done(); + timed_topology_update(1); + rc = device_offline(get_cpu_device(cpu)); + if (rc) + goto out; + cpu_maps_update_begin(); break; } if (cpu == num_possible_cpus()) { @@ -414,8 +307,6 @@ for_each_present_cpu(cpu) { if (get_hard_smp_processor_id(cpu) != thread) continue; - BUG_ON(get_cpu_current_state(cpu) - != CPU_STATE_OFFLINE); cpu_maps_update_done(); timed_topology_update(1); find_and_online_cpu_nid(cpu); @@ -1013,27 +904,8 @@ .notifier_call = pseries_smp_notifier, }; -#define MAX_CEDE_LATENCY_LEVELS 4 -#define CEDE_LATENCY_PARAM_LENGTH 10 -#define CEDE_LATENCY_PARAM_MAX_LENGTH \ - (MAX_CEDE_LATENCY_LEVELS * CEDE_LATENCY_PARAM_LENGTH * sizeof(char)) -#define CEDE_LATENCY_TOKEN 45 - -static char cede_parameters[CEDE_LATENCY_PARAM_MAX_LENGTH]; - -static int parse_cede_parameters(void) -{ - memset(cede_parameters, 0, CEDE_LATENCY_PARAM_MAX_LENGTH); - return rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1, - NULL, - CEDE_LATENCY_TOKEN, - __pa(cede_parameters), - CEDE_LATENCY_PARAM_MAX_LENGTH); -} - static int __init pseries_cpu_hotplug_init(void) { - int cpu; int qcss_tok; #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE @@ -1056,16 +928,8 @@ smp_ops->cpu_die = pseries_cpu_die; /* Processors can be added/removed only on LPAR */ - if (firmware_has_feature(FW_FEATURE_LPAR)) { + if (firmware_has_feature(FW_FEATURE_LPAR)) of_reconfig_notifier_register(&pseries_smp_nb); - cpu_maps_update_begin(); - if (cede_offline_enabled && parse_cede_parameters() == 0) { - default_offline_state = CPU_STATE_INACTIVE; - for_each_online_cpu(cpu) - set_default_offline_state(cpu); - } - cpu_maps_update_done(); - } return 0; } --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/hotplug-memory.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -27,7 +27,7 @@ unsigned long pseries_memory_block_size(void) { struct device_node *np; - unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; + u64 memblock_size = MIN_MEMORY_BLOCK_SIZE; struct resource r; np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); @@ -279,7 +279,7 @@ return dlpar_change_lmb_state(lmb, false); } -static int pseries_remove_memblock(unsigned long base, unsigned int memblock_size) +static int pseries_remove_memblock(unsigned long base, unsigned long memblock_size) { unsigned long block_sz, start_pfn; int sections_per_block; @@ -310,10 +310,11 @@ static int pseries_remove_mem_node(struct device_node *np) { - const __be32 *regs; + const __be32 *prop; unsigned long base; - unsigned int lmb_size; + unsigned long lmb_size; int ret = -EINVAL; + int addr_cells, size_cells; /* * Check to see if we are actually removing memory @@ -324,12 +325,19 @@ /* * Find the base address and size of the memblock */ - regs = of_get_property(np, "reg", NULL); - if (!regs) + prop = of_get_property(np, "reg", NULL); + if (!prop) return ret; - base = be64_to_cpu(*(unsigned long *)regs); - lmb_size = be32_to_cpu(regs[3]); + addr_cells = of_n_addr_cells(np); + size_cells = of_n_size_cells(np); + + /* + * "reg" property represents (addr,size) tuple. + */ + base = of_read_number(prop, addr_cells); + prop += addr_cells; + lmb_size = of_read_number(prop, size_cells); pseries_remove_memblock(base, lmb_size); return 0; @@ -356,25 +364,32 @@ static int dlpar_remove_lmb(struct drmem_lmb *lmb) { + struct memory_block *mem_block; unsigned long block_sz; int rc; if (!lmb_is_removable(lmb)) return -EINVAL; + mem_block = lmb_to_memblock(lmb); + if (mem_block == NULL) + return -EINVAL; + rc = dlpar_offline_lmb(lmb); - if (rc) + if (rc) { + put_device(&mem_block->dev); return rc; + } block_sz = pseries_memory_block_size(); - __remove_memory(lmb->nid, lmb->base_addr, block_sz); + __remove_memory(mem_block->nid, lmb->base_addr, block_sz); + put_device(&mem_block->dev); /* Update memory regions for memory remove */ memblock_remove(lmb->base_addr, block_sz); invalidate_lmb_associativity_index(lmb); - lmb_clear_nid(lmb); lmb->flags &= ~DRCONF_MEM_ASSIGNED; return 0; @@ -593,7 +608,7 @@ #else static inline int pseries_remove_memblock(unsigned long base, - unsigned int memblock_size) + unsigned long memblock_size) { return -EOPNOTSUPP; } @@ -631,7 +646,7 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb) { unsigned long block_sz; - int rc; + int nid, rc; if (lmb->flags & DRCONF_MEM_ASSIGNED) return -EINVAL; @@ -642,11 +657,13 @@ return rc; } - lmb_set_nid(lmb); block_sz = memory_block_size_bytes(); + /* Find the node id for this address. */ + nid = memory_add_physaddr_to_nid(lmb->base_addr); + /* Add the memory */ - rc = __add_memory(lmb->nid, lmb->base_addr, block_sz); + rc = __add_memory(nid, lmb->base_addr, block_sz); if (rc) { invalidate_lmb_associativity_index(lmb); return rc; @@ -654,9 +671,8 @@ rc = dlpar_online_lmb(lmb); if (rc) { - __remove_memory(lmb->nid, lmb->base_addr, block_sz); + __remove_memory(nid, lmb->base_addr, block_sz); invalidate_lmb_associativity_index(lmb); - lmb_clear_nid(lmb); } else { lmb->flags |= DRCONF_MEM_ASSIGNED; } @@ -925,10 +941,11 @@ static int pseries_add_mem_node(struct device_node *np) { - const __be32 *regs; + const __be32 *prop; unsigned long base; - unsigned int lmb_size; + unsigned long lmb_size; int ret = -EINVAL; + int addr_cells, size_cells; /* * Check to see if we are actually adding memory @@ -939,12 +956,18 @@ /* * Find the base and size of the memblock */ - regs = of_get_property(np, "reg", NULL); - if (!regs) + prop = of_get_property(np, "reg", NULL); + if (!prop) return ret; - base = be64_to_cpu(*(unsigned long *)regs); - lmb_size = be32_to_cpu(regs[3]); + addr_cells = of_n_addr_cells(np); + size_cells = of_n_size_cells(np); + /* + * "reg" property represents (addr,size) tuple. + */ + base = of_read_number(prop, addr_cells); + prop += addr_cells; + lmb_size = of_read_number(prop, size_cells); /* * Update memory region to represent the memory add --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/msi.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/msi.c @@ -4,6 +4,7 @@ * Copyright 2006-2007 Michael Ellerman, IBM Corp. */ +#include #include #include #include @@ -458,7 +459,28 @@ return hwirq; } - virq = irq_create_mapping(NULL, hwirq); + /* + * Depending on the number of online CPUs in the original + * kernel, it is likely for CPU #0 to be offline in a kdump + * kernel. The associated IRQs in the affinity mappings + * provided by irq_create_affinity_masks() are thus not + * started by irq_startup(), as per-design for managed IRQs. + * This can be a problem with multi-queue block devices driven + * by blk-mq : such a non-started IRQ is very likely paired + * with the single queue enforced by blk-mq during kdump (see + * blk_mq_alloc_tag_set()). This causes the device to remain + * silent and likely hangs the guest at some point. + * + * We don't really care for fine-grained affinity when doing + * kdump actually : simply ignore the pre-computed affinity + * masks in this case and let the default mask with all CPUs + * be used when creating the IRQ mappings. + */ + if (is_kdump_kernel()) + virq = irq_create_mapping(NULL, hwirq); + else + virq = irq_create_mapping_affinity(NULL, hwirq, + entry->affinity); if (!virq) { pr_debug("rtas_msi: Failed mapping hwirq %d\n", hwirq); --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/papr_scm.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/papr_scm.c @@ -702,6 +702,9 @@ p->bus_desc.of_node = p->pdev->dev.of_node; p->bus_desc.provider_name = kstrdup(p->pdev->name, GFP_KERNEL); + /* Set the dimm command family mask to accept PDSMs */ + set_bit(NVDIMM_FAMILY_PAPR, &p->bus_desc.dimm_family_mask); + if (!p->bus_desc.provider_name) return -ENOMEM; --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/pmem.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/pmem.c @@ -24,7 +24,6 @@ #include #include "pseries.h" -#include "offline_states.h" static struct device_node *pmem_node; --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/ras.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/ras.c @@ -184,7 +184,6 @@ case EPOW_SHUTDOWN_ON_UPS: pr_emerg("Loss of system power detected. System is running on" " UPS/battery. Check RTAS error log for details\n"); - orderly_poweroff(true); break; case EPOW_SHUTDOWN_LOSS_OF_CRITICAL_FUNCTIONS: @@ -522,18 +521,55 @@ return 0; /* need to perform reset */ } +static int mce_handle_err_realmode(int disposition, u8 error_type) +{ +#ifdef CONFIG_PPC_BOOK3S_64 + if (disposition == RTAS_DISP_NOT_RECOVERED) { + switch (error_type) { + case MC_ERROR_TYPE_SLB: + case MC_ERROR_TYPE_ERAT: + /* + * Store the old slb content in paca before flushing. + * Print this when we go to virtual mode. + * There are chances that we may hit MCE again if there + * is a parity error on the SLB entry we trying to read + * for saving. Hence limit the slb saving to single + * level of recursion. + */ + if (local_paca->in_mce == 1) + slb_save_contents(local_paca->mce_faulty_slbs); + flush_and_reload_slb(); + disposition = RTAS_DISP_FULLY_RECOVERED; + break; + default: + break; + } + } else if (disposition == RTAS_DISP_LIMITED_RECOVERY) { + /* Platform corrected itself but could be degraded */ + pr_err("MCE: limited recovery, system may be degraded\n"); + disposition = RTAS_DISP_FULLY_RECOVERED; + } +#endif + return disposition; +} -static int mce_handle_error(struct pt_regs *regs, struct rtas_error_log *errp) +static int mce_handle_err_virtmode(struct pt_regs *regs, + struct rtas_error_log *errp, + struct pseries_mc_errorlog *mce_log, + int disposition) { struct mce_error_info mce_err = { 0 }; - unsigned long eaddr = 0, paddr = 0; - struct pseries_errorlog *pseries_log; - struct pseries_mc_errorlog *mce_log; - int disposition = rtas_error_disposition(errp); int initiator = rtas_error_initiator(errp); int severity = rtas_error_severity(errp); + unsigned long eaddr = 0, paddr = 0; u8 error_type, err_sub_type; + if (!mce_log) + goto out; + + error_type = mce_log->error_type; + err_sub_type = rtas_mc_error_sub_type(mce_log); + if (initiator == RTAS_INITIATOR_UNKNOWN) mce_err.initiator = MCE_INITIATOR_UNKNOWN; else if (initiator == RTAS_INITIATOR_CPU) @@ -572,18 +608,7 @@ mce_err.error_type = MCE_ERROR_TYPE_UNKNOWN; mce_err.error_class = MCE_ECLASS_UNKNOWN; - if (!rtas_error_extended(errp)) - goto out; - - pseries_log = get_pseries_errorlog(errp, PSERIES_ELOG_SECT_ID_MCE); - if (pseries_log == NULL) - goto out; - - mce_log = (struct pseries_mc_errorlog *)pseries_log->data; - error_type = mce_log->error_type; - err_sub_type = rtas_mc_error_sub_type(mce_log); - - switch (mce_log->error_type) { + switch (error_type) { case MC_ERROR_TYPE_UE: mce_err.error_type = MCE_ERROR_TYPE_UE; mce_common_process_ue(regs, &mce_err); @@ -683,37 +708,31 @@ mce_err.error_type = MCE_ERROR_TYPE_UNKNOWN; break; } +out: + save_mce_event(regs, disposition == RTAS_DISP_FULLY_RECOVERED, + &mce_err, regs->nip, eaddr, paddr); + return disposition; +} -#ifdef CONFIG_PPC_BOOK3S_64 - if (disposition == RTAS_DISP_NOT_RECOVERED) { - switch (error_type) { - case MC_ERROR_TYPE_SLB: - case MC_ERROR_TYPE_ERAT: - /* - * Store the old slb content in paca before flushing. - * Print this when we go to virtual mode. - * There are chances that we may hit MCE again if there - * is a parity error on the SLB entry we trying to read - * for saving. Hence limit the slb saving to single - * level of recursion. - */ - if (local_paca->in_mce == 1) - slb_save_contents(local_paca->mce_faulty_slbs); - flush_and_reload_slb(); - disposition = RTAS_DISP_FULLY_RECOVERED; - break; - default: - break; - } - } else if (disposition == RTAS_DISP_LIMITED_RECOVERY) { - /* Platform corrected itself but could be degraded */ - printk(KERN_ERR "MCE: limited recovery, system may " - "be degraded\n"); - disposition = RTAS_DISP_FULLY_RECOVERED; - } -#endif +static int mce_handle_error(struct pt_regs *regs, struct rtas_error_log *errp) +{ + struct pseries_errorlog *pseries_log; + struct pseries_mc_errorlog *mce_log = NULL; + int disposition = rtas_error_disposition(errp); + u8 error_type; + + if (!rtas_error_extended(errp)) + goto out; + + pseries_log = get_pseries_errorlog(errp, PSERIES_ELOG_SECT_ID_MCE); + if (!pseries_log) + goto out; + + mce_log = (struct pseries_mc_errorlog *)pseries_log->data; + error_type = mce_log->error_type; + + disposition = mce_handle_err_realmode(disposition, error_type); -out: /* * Enable translation as we will be accessing per-cpu variables * in save_mce_event() which may fall outside RMO region, also @@ -724,10 +743,10 @@ * Note: All the realmode handling like flushing SLB entries for * SLB multihit is done by now. */ +out: mtmsr(mfmsr() | MSR_IR | MSR_DR); - save_mce_event(regs, disposition == RTAS_DISP_FULLY_RECOVERED, - &mce_err, regs->nip, eaddr, paddr); - + disposition = mce_handle_err_virtmode(regs, errp, mce_log, + disposition); return disposition; } --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/rng.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/rng.c @@ -36,6 +36,7 @@ ppc_md.get_random_seed = pseries_get_random_long; + of_node_put(dn); return 0; } machine_subsys_initcall(pseries, rng_init); --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/setup.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/setup.c @@ -570,6 +570,14 @@ setup_rfi_flush(types, enable); setup_count_cache_flush(); + + enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && + security_ftr_enabled(SEC_FTR_L1D_FLUSH_ENTRY); + setup_entry_flush(enable); + + enable = security_ftr_enabled(SEC_FTR_FAVOUR_SECURITY) && + security_ftr_enabled(SEC_FTR_L1D_FLUSH_UACCESS); + setup_uaccess_flush(enable); } #ifdef CONFIG_PCI_IOV --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/smp.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/smp.c @@ -44,8 +44,6 @@ #include #include "pseries.h" -#include "offline_states.h" - /* * The Primary thread of each non-boot processor was started from the OF client @@ -108,10 +106,7 @@ /* Fixup atomic count: it exited inside IRQ handler. */ task_thread_info(paca_ptrs[lcpu]->__current)->preempt_count = 0; -#ifdef CONFIG_HOTPLUG_CPU - if (get_cpu_current_state(lcpu) == CPU_STATE_INACTIVE) - goto out; -#endif + /* * If the RTAS start-cpu token does not exist then presume the * cpu is already spinning. @@ -126,9 +121,6 @@ return 0; } -#ifdef CONFIG_HOTPLUG_CPU -out: -#endif return 1; } @@ -143,10 +135,6 @@ vpa_init(cpu); cpumask_clear_cpu(cpu, of_spin_mask); -#ifdef CONFIG_HOTPLUG_CPU - set_cpu_current_state(cpu, CPU_STATE_ONLINE); - set_default_offline_state(cpu); -#endif } static int smp_pSeries_kick_cpu(int nr) @@ -163,20 +151,6 @@ * the processor will continue on to secondary_start */ paca_ptrs[nr]->cpu_start = 1; -#ifdef CONFIG_HOTPLUG_CPU - set_preferred_offline_state(nr, CPU_STATE_ONLINE); - - if (get_cpu_current_state(nr) == CPU_STATE_INACTIVE) { - long rc; - unsigned long hcpuid; - - hcpuid = get_hard_smp_processor_id(nr); - rc = plpar_hcall_norets(H_PROD, hcpuid); - if (rc != H_SUCCESS) - printk(KERN_ERR "Error: Prod to wake up processor %d " - "Ret= %ld\n", nr, rc); - } -#endif return 0; } --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/suspend.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/suspend.c @@ -13,7 +13,6 @@ #include #include #include -#include "../../kernel/cacheinfo.h" static u64 stream_id; static struct device suspend_dev; @@ -78,9 +77,7 @@ * Update configuration which can be modified based on device tree * changes during resume. */ - cacheinfo_cpu_offline(smp_processor_id()); post_mobility_fixup(); - cacheinfo_cpu_online(smp_processor_id()); } /** @@ -132,15 +129,11 @@ struct device_attribute *attr, const char *buf, size_t count) { - cpumask_var_t offline_mask; int rc; if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (!alloc_cpumask_var(&offline_mask, GFP_KERNEL)) - return -ENOMEM; - stream_id = simple_strtoul(buf, NULL, 16); do { @@ -150,32 +143,16 @@ } while (rc == -EAGAIN); if (!rc) { - /* All present CPUs must be online */ - cpumask_andnot(offline_mask, cpu_present_mask, - cpu_online_mask); - rc = rtas_online_cpus_mask(offline_mask); - if (rc) { - pr_err("%s: Could not bring present CPUs online.\n", - __func__); - goto out; - } - stop_topology_update(); rc = pm_suspend(PM_SUSPEND_MEM); start_topology_update(); - - /* Take down CPUs not online prior to suspend */ - if (!rtas_offline_cpus_mask(offline_mask)) - pr_warn("%s: Could not restore CPUs to offline " - "state.\n", __func__); } stream_id = 0; if (!rc) rc = count; -out: - free_cpumask_var(offline_mask); + return rc; } @@ -210,7 +187,6 @@ static const struct platform_suspend_ops pseries_suspend_ops = { .valid = suspend_valid_only_mem, - .begin = pseries_suspend_begin, .prepare_late = pseries_prepare_late, .enter = pseries_suspend_enter, }; --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/svm.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/svm.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -34,6 +35,31 @@ } machine_early_initcall(pseries, init_svm); +/* + * Initialize SWIOTLB. Essentially the same as swiotlb_init(), except that it + * can allocate the buffer anywhere in memory. Since the hypervisor doesn't have + * any addressing limitation, we don't need to allocate it in low addresses. + */ +void __init svm_swiotlb_init(void) +{ + unsigned char *vstart; + unsigned long bytes, io_tlb_nslabs; + + io_tlb_nslabs = (swiotlb_size_or_default() >> IO_TLB_SHIFT); + io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); + + bytes = io_tlb_nslabs << IO_TLB_SHIFT; + + vstart = memblock_alloc(PAGE_ALIGN(bytes), PAGE_SIZE); + if (vstart && !swiotlb_init_with_tbl(vstart, io_tlb_nslabs, false)) + return; + + if (io_tlb_start) + memblock_free_early(io_tlb_start, + PAGE_ALIGN(io_tlb_nslabs << IO_TLB_SHIFT)); + panic("SVM: Cannot allocate SWIOTLB buffer"); +} + int set_memory_encrypted(unsigned long addr, int numpages) { if (!PAGE_ALIGNED(addr)) --- linux-5.8.0.orig/arch/powerpc/platforms/pseries/vio.c +++ linux-5.8.0/arch/powerpc/platforms/pseries/vio.c @@ -37,7 +37,6 @@ .name = "vio", .type = "", .dev.init_name = "vio", - .dev.bus = &vio_bus_type, }; #ifdef CONFIG_PPC_SMLPAR --- linux-5.8.0.orig/arch/powerpc/sysdev/mpic_msgr.c +++ linux-5.8.0/arch/powerpc/sysdev/mpic_msgr.c @@ -191,7 +191,7 @@ /* IO map the message register block. */ of_address_to_resource(np, 0, &rsrc); - msgr_block_addr = ioremap(rsrc.start, resource_size(&rsrc)); + msgr_block_addr = devm_ioremap(&dev->dev, rsrc.start, resource_size(&rsrc)); if (!msgr_block_addr) { dev_err(&dev->dev, "Failed to iomap MPIC message registers"); return -EFAULT; --- linux-5.8.0.orig/arch/powerpc/sysdev/xics/icp-hv.c +++ linux-5.8.0/arch/powerpc/sysdev/xics/icp-hv.c @@ -174,6 +174,7 @@ icp_ops = &icp_hv_ops; + of_node_put(np); return 0; } --- linux-5.8.0.orig/arch/powerpc/sysdev/xive/native.c +++ linux-5.8.0/arch/powerpc/sysdev/xive/native.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -647,6 +648,7 @@ pr_err("Failed to allocate provisioning page\n"); return false; } + kmemleak_ignore(p); opal_xive_donate_page(chip, __pa(p)); } return true; --- linux-5.8.0.orig/arch/powerpc/xmon/nonstdio.c +++ linux-5.8.0/arch/powerpc/xmon/nonstdio.c @@ -178,7 +178,7 @@ if (n && rc == 0) { /* No udbg hooks, fallback to printk() - dangerous */ - printk("%s", xmon_outbuf); + pr_cont("%s", xmon_outbuf); } } --- linux-5.8.0.orig/arch/powerpc/xmon/xmon.c +++ linux-5.8.0/arch/powerpc/xmon/xmon.c @@ -962,6 +962,7 @@ brk.address = dabr[i].address; brk.type = (dabr[i].enabled & HW_BRK_TYPE_DABR) | HW_BRK_TYPE_PRIV_ALL; brk.len = 8; + brk.hw_len = 8; __set_breakpoint(i, &brk); } } @@ -1375,6 +1376,7 @@ return 1; } +#ifndef CONFIG_PPC_8xx static int find_free_data_bpt(void) { int i; @@ -1386,6 +1388,7 @@ printf("Couldn't find free breakpoint register\n"); return -1; } +#endif static void print_data_bpts(void) { --- linux-5.8.0.orig/arch/riscv/Kconfig +++ linux-5.8.0/arch/riscv/Kconfig @@ -74,7 +74,6 @@ select PCI_MSI if PCI select RISCV_INTC select RISCV_TIMER - select SPARSEMEM_STATIC if 32BIT select SPARSE_IRQ select SYSCTL_EXCEPTION_TRACE select THREAD_INFO_IN_TASK @@ -123,7 +122,7 @@ config PAGE_OFFSET hex - default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB + default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB default 0x80000000 if 64BIT && !MMU default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB @@ -134,7 +133,8 @@ config ARCH_SPARSEMEM_ENABLE def_bool y depends on MMU - select SPARSEMEM_VMEMMAP_ENABLE + select SPARSEMEM_STATIC if 32BIT && SPARSMEM + select SPARSEMEM_VMEMMAP_ENABLE if 64BIT config ARCH_SELECT_MEMORY_MODEL def_bool ARCH_SPARSEMEM_ENABLE @@ -233,11 +233,15 @@ choice prompt "Maximum Physical Memory" - default MAXPHYSMEM_2GB if 32BIT + default MAXPHYSMEM_1GB if 32BIT default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY + config MAXPHYSMEM_1GB + depends on 32BIT + bool "1GiB" config MAXPHYSMEM_2GB + depends on 64BIT && CMODEL_MEDLOW bool "2GiB" config MAXPHYSMEM_128GB depends on 64BIT && CMODEL_MEDANY --- linux-5.8.0.orig/arch/riscv/boot/dts/kendryte/k210.dtsi +++ linux-5.8.0/arch/riscv/boot/dts/kendryte/k210.dtsi @@ -95,10 +95,12 @@ #clock-cells = <1>; }; - clint0: interrupt-controller@2000000 { + clint0: clint@2000000 { + #interrupt-cells = <1>; compatible = "riscv,clint0"; reg = <0x2000000 0xC000>; - interrupts-extended = <&cpu0_intc 3>, <&cpu1_intc 3>; + interrupts-extended = <&cpu0_intc 3 &cpu0_intc 7 + &cpu1_intc 3 &cpu1_intc 7>; clocks = <&sysctl K210_CLK_ACLK>; }; --- linux-5.8.0.orig/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +++ linux-5.8.0/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts @@ -88,6 +88,7 @@ phy-mode = "gmii"; phy-handle = <&phy0>; phy0: ethernet-phy@0 { + compatible = "ethernet-phy-id0007.0771"; reg = <0>; }; }; --- linux-5.8.0.orig/arch/riscv/configs/defconfig +++ linux-5.8.0/arch/riscv/configs/defconfig @@ -63,6 +63,8 @@ CONFIG_HW_RANDOM_VIRTIO=y CONFIG_SPI=y CONFIG_SPI_SIFIVE=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SIFIVE=y # CONFIG_PTP_1588_CLOCK is not set CONFIG_POWER_RESET=y CONFIG_DRM=y --- linux-5.8.0.orig/arch/riscv/include/asm/Kbuild +++ linux-5.8.0/arch/riscv/include/asm/Kbuild @@ -2,6 +2,5 @@ generic-y += extable.h generic-y += flat.h generic-y += kvm_para.h -generic-y += local64.h generic-y += user.h generic-y += vmlinux.lds.h --- linux-5.8.0.orig/arch/riscv/include/asm/ftrace.h +++ linux-5.8.0/arch/riscv/include/asm/ftrace.h @@ -66,6 +66,13 @@ * Let auipc+jalr be the basic *mcount unit*, so we make it 8 bytes here. */ #define MCOUNT_INSN_SIZE 8 + +#ifndef __ASSEMBLY__ +struct dyn_ftrace; +int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec); +#define ftrace_init_nop ftrace_init_nop +#endif + #endif #endif /* _ASM_RISCV_FTRACE_H */ --- linux-5.8.0.orig/arch/riscv/include/asm/page.h +++ linux-5.8.0/arch/riscv/include/asm/page.h @@ -135,7 +135,10 @@ #endif /* __ASSEMBLY__ */ -#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr))) +#define virt_addr_valid(vaddr) ({ \ + unsigned long _addr = (unsigned long)vaddr; \ + (unsigned long)(_addr) >= PAGE_OFFSET && pfn_valid(virt_to_pfn(_addr)); \ +}) #define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_NON_EXEC --- linux-5.8.0.orig/arch/riscv/include/asm/pgtable-32.h +++ linux-5.8.0/arch/riscv/include/asm/pgtable-32.h @@ -14,4 +14,6 @@ #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) #define PGDIR_MASK (~(PGDIR_SIZE - 1)) +#define MAX_POSSIBLE_PHYSMEM_BITS 34 + #endif /* _ASM_RISCV_PGTABLE_32_H */ --- linux-5.8.0.orig/arch/riscv/include/asm/sbi.h +++ linux-5.8.0/arch/riscv/include/asm/sbi.h @@ -51,10 +51,10 @@ SBI_EXT_RFENCE_REMOTE_FENCE_I = 0, SBI_EXT_RFENCE_REMOTE_SFENCE_VMA, SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID, - SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA, SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA_VMID, - SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA, + SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA, SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID, + SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA, }; enum sbi_ext_hsm_fid { --- linux-5.8.0.orig/arch/riscv/include/asm/vdso.h +++ linux-5.8.0/arch/riscv/include/asm/vdso.h @@ -10,7 +10,7 @@ #include -#ifndef GENERIC_TIME_VSYSCALL +#ifndef CONFIG_GENERIC_TIME_VSYSCALL struct vdso_data { }; #endif --- linux-5.8.0.orig/arch/riscv/include/asm/vdso/processor.h +++ linux-5.8.0/arch/riscv/include/asm/vdso/processor.h @@ -4,6 +4,8 @@ #ifndef __ASSEMBLY__ +#include + static inline void cpu_relax(void) { #ifdef __riscv_muldiv --- linux-5.8.0.orig/arch/riscv/include/uapi/asm/auxvec.h +++ linux-5.8.0/arch/riscv/include/uapi/asm/auxvec.h @@ -10,4 +10,7 @@ /* vDSO location */ #define AT_SYSINFO_EHDR 33 +/* entries in ARCH_DLINFO */ +#define AT_VECTOR_SIZE_ARCH 1 + #endif /* _UAPI_ASM_RISCV_AUXVEC_H */ --- linux-5.8.0.orig/arch/riscv/kernel/entry.S +++ linux-5.8.0/arch/riscv/kernel/entry.S @@ -137,6 +137,15 @@ tail do_trap_unknown handle_syscall: +#ifdef CONFIG_RISCV_M_MODE + /* + * When running is M-Mode (no MMU config), MPIE does not get set. + * As a result, we need to force enable interrupts here because + * handle_exception did not do set SR_IE as it always sees SR_PIE + * being cleared. + */ + csrs CSR_STATUS, SR_IE +#endif /* save the initial A0 value (needed in signal handlers) */ REG_S a0, PT_ORIG_A0(sp) /* @@ -157,14 +166,7 @@ * Syscall number held in a7. * If syscall number is above allowed value, redirect to ni_syscall. */ - bge a7, t0, 1f - /* - * Check if syscall is rejected by tracer, i.e., a7 == -1. - * If yes, we pretend it was executed. - */ - li t1, -1 - beq a7, t1, ret_from_syscall_rejected - blt a7, t1, 1f + bgeu a7, t0, 1f /* Call syscall */ la s0, sys_call_table slli t0, a7, RISCV_LGPTR --- linux-5.8.0.orig/arch/riscv/kernel/ftrace.c +++ linux-5.8.0/arch/riscv/kernel/ftrace.c @@ -97,6 +97,25 @@ return __ftrace_modify_call(rec->ip, addr, false); } + +/* + * This is called early on, and isn't wrapped by + * ftrace_arch_code_modify_{prepare,post_process}() and therefor doesn't hold + * text_mutex, which triggers a lockdep failure. SMP isn't running so we could + * just directly poke the text, but it's simpler to just take the lock + * ourselves. + */ +int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec) +{ + int out; + + ftrace_arch_code_modify_prepare(); + out = ftrace_make_nop(mod, rec, MCOUNT_ADDR); + ftrace_arch_code_modify_post_process(); + + return out; +} + int ftrace_update_ftrace_func(ftrace_func_t func) { int ret = __ftrace_modify_call((unsigned long)&ftrace_call, --- linux-5.8.0.orig/arch/riscv/kernel/head.S +++ linux-5.8.0/arch/riscv/kernel/head.S @@ -27,6 +27,10 @@ /* reserved */ .word 0 .balign 8 +#ifdef CONFIG_RISCV_M_MODE + /* Image load offset (0MB) from start of RAM for M-mode */ + .dword 0 +#else #if __riscv_xlen == 64 /* Image load offset(2MB) from start of RAM */ .dword 0x200000 @@ -34,6 +38,7 @@ /* Image load offset(4MB) from start of RAM */ .dword 0x400000 #endif +#endif /* Effective size of kernel image */ .dword _end - _start .dword __HEAD_FLAGS --- linux-5.8.0.orig/arch/riscv/kernel/setup.c +++ linux-5.8.0/arch/riscv/kernel/setup.c @@ -70,6 +70,7 @@ *cmdline_p = boot_command_line; + jump_label_init(); parse_early_param(); setup_bootmem(); --- linux-5.8.0.orig/arch/riscv/kernel/time.c +++ linux-5.8.0/arch/riscv/kernel/time.c @@ -4,6 +4,7 @@ * Copyright (C) 2017 SiFive */ +#include #include #include #include @@ -24,6 +25,8 @@ riscv_timebase = prop; lpj_fine = riscv_timebase / HZ; + + of_clk_init(NULL); timer_probe(); } --- linux-5.8.0.orig/arch/riscv/kernel/vdso.c +++ linux-5.8.0/arch/riscv/kernel/vdso.c @@ -12,7 +12,7 @@ #include #include #include -#ifdef GENERIC_TIME_VSYSCALL +#ifdef CONFIG_GENERIC_TIME_VSYSCALL #include #else #include --- linux-5.8.0.orig/arch/riscv/kernel/vdso/Makefile +++ linux-5.8.0/arch/riscv/kernel/vdso/Makefile @@ -30,8 +30,9 @@ # Disable -pg to prevent insert call site CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os -# Disable gcov profiling for VDSO code +# Disable profiling and instrumentation for VDSO code GCOV_PROFILE := n +KASAN_SANITIZE := n # Force dependency $(obj)/vdso.o: $(obj)/vdso.so @@ -40,19 +41,14 @@ SYSCFLAGS_vdso.so.dbg = $(c_flags) $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE $(call if_changed,vdsold) +SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ + -Wl,--build-id=sha1 -Wl,--hash-style=both # We also create a special relocatable object that should mirror the symbol # table and layout of the linked DSO. With ld --just-symbols we can then # refer to these symbols in the kernel code rather than hand-coded addresses. - -SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ - -Wl,--build-id -Wl,--hash-style=both -$(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE - $(call if_changed,vdsold) - -LDFLAGS_vdso-syms.o := -r --just-symbols -$(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE - $(call if_changed,ld) +$(obj)/vdso-syms.S: $(obj)/vdso.so FORCE + $(call if_changed,so2s) # strip rule for the .so file $(obj)/%.so: OBJCOPYFLAGS := -S @@ -70,6 +66,11 @@ $(patsubst %, -G __vdso_%, $(vdso-syms)) $@.tmp $@ && \ rm $@.tmp +# Extracts symbol offsets from the VDSO, converting them into an assembly file +# that contains the same symbols at the same offsets. +quiet_cmd_so2s = SO2S $@ + cmd_so2s = $(NM) -D $< | $(srctree)/$(src)/so2s.sh > $@ + # install commands for the unstripped file quiet_cmd_vdso_install = INSTALL $@ cmd_vdso_install = cp $(obj)/$@.dbg $(MODLIB)/vdso/$@ --- linux-5.8.0.orig/arch/riscv/kernel/vdso/so2s.sh +++ linux-5.8.0/arch/riscv/kernel/vdso/so2s.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2020 Palmer Dabbelt + +sed 's!\([0-9a-f]*\) T \([a-z0-9_]*\)\(@@LINUX_4.15\)*!.global \2\n.set \2,0x\1!' \ +| grep '^\.' --- linux-5.8.0.orig/arch/riscv/kernel/vmlinux.lds.S +++ linux-5.8.0/arch/riscv/kernel/vmlinux.lds.S @@ -27,7 +27,6 @@ __init_begin = .; INIT_TEXT_SECTION(PAGE_SIZE) - INIT_DATA_SECTION(16) . = ALIGN(8); __soc_early_init_table : { __soc_early_init_table_start = .; @@ -67,6 +66,8 @@ _etext = .; } + INIT_DATA_SECTION(16) + /* Start of data section */ _sdata = .; RO_DATA(SECTION_ALIGN) --- linux-5.8.0.orig/arch/riscv/mm/init.c +++ linux-5.8.0/arch/riscv/mm/init.c @@ -148,9 +148,10 @@ struct memblock_region *reg; phys_addr_t mem_size = 0; phys_addr_t total_mem = 0; - phys_addr_t mem_start, end = 0; + phys_addr_t mem_start, dram_end, end = 0; phys_addr_t vmlinux_end = __pa_symbol(&_end); phys_addr_t vmlinux_start = __pa_symbol(&_start); + phys_addr_t max_mapped_addr = __pa(~(ulong)0); /* Find the memory region containing the kernel */ for_each_memblock(memory, reg) { @@ -174,7 +175,18 @@ /* Reserve from the start of the kernel to the end of the kernel */ memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start); - max_pfn = PFN_DOWN(memblock_end_of_DRAM()); + dram_end = memblock_end_of_DRAM(); + + /* + * memblock allocator is not aware of the fact that last 4K bytes of + * the addressable memory can not be mapped because of IS_ERR_VALUE + * macro. Make sure that last 4k bytes are not usable by memblock + * if end of dram is equal to maximum addressable memory. + */ + if (max_mapped_addr == (dram_end - 1)) + memblock_set_current_limit(max_mapped_addr - 4096); + + max_pfn = PFN_DOWN(dram_end); max_low_pfn = max_pfn; set_max_mapnr(max_low_pfn); @@ -226,12 +238,11 @@ ptep = &fixmap_pte[pte_index(addr)]; - if (pgprot_val(prot)) { + if (pgprot_val(prot)) set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot)); - } else { + else pte_clear(&init_mm, addr, ptep); - local_flush_tlb_page(addr); - } + local_flush_tlb_page(addr); } static pte_t *__init get_pte_virt(phys_addr_t pa) @@ -516,6 +527,7 @@ #else dtb_early_va = (void *)dtb_pa; #endif + dtb_early_pa = dtb_pa; } static inline void setup_vm_final(void) --- linux-5.8.0.orig/arch/s390/Kconfig +++ linux-5.8.0/arch/s390/Kconfig @@ -30,7 +30,7 @@ def_bool y config GENERIC_LOCKBREAK - def_bool y if PREEMPTTION + def_bool y if PREEMPTION config PGSTE def_bool y if KVM @@ -769,6 +769,7 @@ def_tristate n prompt "VFIO support for AP devices" depends on S390_AP_IOMMU && VFIO_MDEV_DEVICE && KVM + depends on ZCRYPT help This driver grants access to Adjunct Processor (AP) devices via the VFIO mediated device interface. @@ -954,6 +955,14 @@ endmenu +config KMSG_IDS + def_bool y + prompt "Kernel message numbers" + help + Select this option if you want to include a message number to the + prefix for kernel messages issued by the s390 architecture and + driver code. See "Documentation/s390/kmsg.txt" for more details. + menu "Selftests" config S390_UNWIND_SELFTEST --- linux-5.8.0.orig/arch/s390/boot/head.S +++ linux-5.8.0/arch/s390/boot/head.S @@ -360,22 +360,23 @@ # the save area and does disabled wait with a faulty address. # ENTRY(startup_pgm_check_handler) - stmg %r0,%r15,__LC_SAVE_AREA_SYNC - la %r1,4095 - stctg %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r1) - mvc __LC_GPREGS_SAVE_AREA-4095(128,%r1),__LC_SAVE_AREA_SYNC - mvc __LC_PSW_SAVE_AREA-4095(16,%r1),__LC_PGM_OLD_PSW + stmg %r8,%r15,__LC_SAVE_AREA_SYNC + la %r8,4095 + stctg %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r8) + stmg %r0,%r7,__LC_GPREGS_SAVE_AREA-4095(%r8) + mvc __LC_GPREGS_SAVE_AREA-4095+64(64,%r8),__LC_SAVE_AREA_SYNC + mvc __LC_PSW_SAVE_AREA-4095(16,%r8),__LC_PGM_OLD_PSW mvc __LC_RETURN_PSW(16),__LC_PGM_OLD_PSW ni __LC_RETURN_PSW,0xfc # remove IO and EX bits ni __LC_RETURN_PSW+1,0xfb # remove MCHK bit oi __LC_RETURN_PSW+1,0x2 # set wait state bit - larl %r2,.Lold_psw_disabled_wait - stg %r2,__LC_PGM_NEW_PSW+8 - l %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r2) + larl %r9,.Lold_psw_disabled_wait + stg %r9,__LC_PGM_NEW_PSW+8 + l %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r9) brasl %r14,print_pgm_check_info .Lold_psw_disabled_wait: - la %r1,4095 - lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1) + la %r8,4095 + lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r8) lpswe __LC_RETURN_PSW # disabled wait .Ldump_info_stack: .long 0x5000 + PAGE_SIZE - STACK_FRAME_OVERHEAD --- linux-5.8.0.orig/arch/s390/boot/ipl_parm.c +++ linux-5.8.0/arch/s390/boot/ipl_parm.c @@ -70,30 +70,44 @@ static size_t ipl_block_get_ascii_scpdata(char *dest, size_t size, const struct ipl_parameter_block *ipb) { - size_t count; - size_t i; + const __u8 *scp_data; + __u32 scp_data_len; int has_lowercase; + size_t count = 0; + size_t i; + + switch (ipb->pb0_hdr.pbt) { + case IPL_PBT_FCP: + scp_data_len = ipb->fcp.scp_data_len; + scp_data = ipb->fcp.scp_data; + break; + case IPL_PBT_NVME: + scp_data_len = ipb->nvme.scp_data_len; + scp_data = ipb->nvme.scp_data; + break; + default: + goto out; + } - count = min(size - 1, scpdata_length(ipb->fcp.scp_data, - ipb->fcp.scp_data_len)); + count = min(size - 1, scpdata_length(scp_data, scp_data_len)); if (!count) goto out; has_lowercase = 0; for (i = 0; i < count; i++) { - if (!isascii(ipb->fcp.scp_data[i])) { + if (!isascii(scp_data[i])) { count = 0; goto out; } - if (!has_lowercase && islower(ipb->fcp.scp_data[i])) + if (!has_lowercase && islower(scp_data[i])) has_lowercase = 1; } if (has_lowercase) - memcpy(dest, ipb->fcp.scp_data, count); + memcpy(dest, scp_data, count); else for (i = 0; i < count; i++) - dest[i] = tolower(ipb->fcp.scp_data[i]); + dest[i] = tolower(scp_data[i]); out: dest[count] = '\0'; return count; @@ -115,6 +129,7 @@ parm, COMMAND_LINE_SIZE - len - 1, &ipl_block); break; case IPL_PBT_FCP: + case IPL_PBT_NVME: rc = ipl_block_get_ascii_scpdata( parm, COMMAND_LINE_SIZE - len - 1, &ipl_block); break; --- linux-5.8.0.orig/arch/s390/boot/uv.c +++ linux-5.8.0/arch/s390/boot/uv.c @@ -32,7 +32,7 @@ uv_info.guest_cpu_stor_len = uvcb.cpu_stor_len; uv_info.max_sec_stor_addr = ALIGN(uvcb.max_guest_stor_addr, PAGE_SIZE); uv_info.max_num_sec_conf = uvcb.max_num_sec_conf; - uv_info.max_guest_cpus = uvcb.max_guest_cpus; + uv_info.max_guest_cpu_id = uvcb.max_guest_cpu_id; } #ifdef CONFIG_PROTECTED_VIRTUALIZATION_GUEST --- linux-5.8.0.orig/arch/s390/include/asm/Kbuild +++ linux-5.8.0/arch/s390/include/asm/Kbuild @@ -6,5 +6,4 @@ generic-y += asm-offsets.h generic-y += export.h -generic-y += local64.h generic-y += mcs_spinlock.h --- linux-5.8.0.orig/arch/s390/include/asm/ipl.h +++ linux-5.8.0/arch/s390/include/asm/ipl.h @@ -120,6 +120,7 @@ unsigned char flags, unsigned short cert); int ipl_report_add_certificate(struct ipl_report *report, void *key, unsigned long addr, unsigned long len); +bool ipl_get_secureboot(void); /* * DIAG 308 support --- linux-5.8.0.orig/arch/s390/include/asm/pci.h +++ linux-5.8.0/arch/s390/include/asm/pci.h @@ -199,8 +199,8 @@ Prototypes ----------------------------------------------------------------------------- */ /* Base stuff */ -int zpci_create_device(struct zpci_dev *); -void zpci_remove_device(struct zpci_dev *zdev); +int zpci_create_device(u32 fid, u32 fh, enum zpci_state state); +void zpci_remove_device(struct zpci_dev *zdev, bool set_error); int zpci_enable_device(struct zpci_dev *); int zpci_disable_device(struct zpci_dev *); int zpci_register_ioat(struct zpci_dev *, u8, u64, u64, u64); @@ -211,7 +211,7 @@ int clp_scan_pci_devices(void); int clp_rescan_pci_devices(void); int clp_rescan_pci_devices_simple(u32 *fid); -int clp_add_pci_device(u32, u32, int); +int clp_query_pci_fn(struct zpci_dev *zdev); int clp_enable_fh(struct zpci_dev *, u8); int clp_disable_fh(struct zpci_dev *); int clp_get_state(u32 fid, enum zpci_state *state); --- linux-5.8.0.orig/arch/s390/include/asm/percpu.h +++ linux-5.8.0/arch/s390/include/asm/percpu.h @@ -29,7 +29,7 @@ typedef typeof(pcp) pcp_op_T__; \ pcp_op_T__ old__, new__, prev__; \ pcp_op_T__ *ptr__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ prev__ = *ptr__; \ do { \ @@ -37,7 +37,7 @@ new__ = old__ op (val); \ prev__ = cmpxchg(ptr__, old__, new__); \ } while (prev__ != old__); \ - preempt_enable(); \ + preempt_enable_notrace(); \ new__; \ }) @@ -68,7 +68,7 @@ typedef typeof(pcp) pcp_op_T__; \ pcp_op_T__ val__ = (val); \ pcp_op_T__ old__, *ptr__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ if (__builtin_constant_p(val__) && \ ((szcast)val__ > -129) && ((szcast)val__ < 128)) { \ @@ -84,7 +84,7 @@ : [val__] "d" (val__) \ : "cc"); \ } \ - preempt_enable(); \ + preempt_enable_notrace(); \ } #define this_cpu_add_4(pcp, val) arch_this_cpu_add(pcp, val, "laa", "asi", int) @@ -95,14 +95,14 @@ typedef typeof(pcp) pcp_op_T__; \ pcp_op_T__ val__ = (val); \ pcp_op_T__ old__, *ptr__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ asm volatile( \ op " %[old__],%[val__],%[ptr__]\n" \ : [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \ : [val__] "d" (val__) \ : "cc"); \ - preempt_enable(); \ + preempt_enable_notrace(); \ old__ + val__; \ }) @@ -114,14 +114,14 @@ typedef typeof(pcp) pcp_op_T__; \ pcp_op_T__ val__ = (val); \ pcp_op_T__ old__, *ptr__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ asm volatile( \ op " %[old__],%[val__],%[ptr__]\n" \ : [old__] "=d" (old__), [ptr__] "+Q" (*ptr__) \ : [val__] "d" (val__) \ : "cc"); \ - preempt_enable(); \ + preempt_enable_notrace(); \ } #define this_cpu_and_4(pcp, val) arch_this_cpu_to_op(pcp, val, "lan") @@ -136,10 +136,10 @@ typedef typeof(pcp) pcp_op_T__; \ pcp_op_T__ ret__; \ pcp_op_T__ *ptr__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ ret__ = cmpxchg(ptr__, oval, nval); \ - preempt_enable(); \ + preempt_enable_notrace(); \ ret__; \ }) @@ -152,10 +152,10 @@ ({ \ typeof(pcp) *ptr__; \ typeof(pcp) ret__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ ptr__ = raw_cpu_ptr(&(pcp)); \ ret__ = xchg(ptr__, nval); \ - preempt_enable(); \ + preempt_enable_notrace(); \ ret__; \ }) @@ -171,11 +171,11 @@ typeof(pcp1) *p1__; \ typeof(pcp2) *p2__; \ int ret__; \ - preempt_disable(); \ + preempt_disable_notrace(); \ p1__ = raw_cpu_ptr(&(pcp1)); \ p2__ = raw_cpu_ptr(&(pcp2)); \ ret__ = __cmpxchg_double(p1__, p2__, o1__, o2__, n1__, n2__); \ - preempt_enable(); \ + preempt_enable_notrace(); \ ret__; \ }) --- linux-5.8.0.orig/arch/s390/include/asm/pgtable.h +++ linux-5.8.0/arch/s390/include/asm/pgtable.h @@ -691,16 +691,6 @@ return !!(pud_val(pud) & _REGION3_ENTRY_LARGE); } -static inline unsigned long pud_pfn(pud_t pud) -{ - unsigned long origin_mask; - - origin_mask = _REGION_ENTRY_ORIGIN; - if (pud_large(pud)) - origin_mask = _REGION3_ENTRY_ORIGIN_LARGE; - return (pud_val(pud) & origin_mask) >> PAGE_SHIFT; -} - #define pmd_leaf pmd_large static inline int pmd_large(pmd_t pmd) { @@ -746,16 +736,6 @@ return pmd_val(pmd) == _SEGMENT_ENTRY_EMPTY; } -static inline unsigned long pmd_pfn(pmd_t pmd) -{ - unsigned long origin_mask; - - origin_mask = _SEGMENT_ENTRY_ORIGIN; - if (pmd_large(pmd)) - origin_mask = _SEGMENT_ENTRY_ORIGIN_LARGE; - return (pmd_val(pmd) & origin_mask) >> PAGE_SHIFT; -} - #define pmd_write pmd_write static inline int pmd_write(pmd_t pmd) { @@ -1230,11 +1210,39 @@ #define pud_index(address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD-1)) #define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1)) -#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN) -#define pud_deref(pud) (pud_val(pud) & _REGION_ENTRY_ORIGIN) #define p4d_deref(pud) (p4d_val(pud) & _REGION_ENTRY_ORIGIN) #define pgd_deref(pgd) (pgd_val(pgd) & _REGION_ENTRY_ORIGIN) +static inline unsigned long pmd_deref(pmd_t pmd) +{ + unsigned long origin_mask; + + origin_mask = _SEGMENT_ENTRY_ORIGIN; + if (pmd_large(pmd)) + origin_mask = _SEGMENT_ENTRY_ORIGIN_LARGE; + return pmd_val(pmd) & origin_mask; +} + +static inline unsigned long pmd_pfn(pmd_t pmd) +{ + return pmd_deref(pmd) >> PAGE_SHIFT; +} + +static inline unsigned long pud_deref(pud_t pud) +{ + unsigned long origin_mask; + + origin_mask = _REGION_ENTRY_ORIGIN; + if (pud_large(pud)) + origin_mask = _REGION3_ENTRY_ORIGIN_LARGE; + return pud_val(pud) & origin_mask; +} + +static inline unsigned long pud_pfn(pud_t pud) +{ + return pud_deref(pud) >> PAGE_SHIFT; +} + /* * The pgd_offset function *always* adds the index for the top-level * region/segment table. This is done to get a sequence like the @@ -1260,26 +1268,44 @@ #define pgd_offset(mm, address) pgd_offset_raw(READ_ONCE((mm)->pgd), address) -static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) +static inline p4d_t *p4d_offset_lockless(pgd_t *pgdp, pgd_t pgd, unsigned long address) +{ + if ((pgd_val(pgd) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R1) + return (p4d_t *) pgd_deref(pgd) + p4d_index(address); + return (p4d_t *) pgdp; +} +#define p4d_offset_lockless p4d_offset_lockless + +static inline p4d_t *p4d_offset(pgd_t *pgdp, unsigned long address) { - if ((pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R1) - return (p4d_t *) pgd_deref(*pgd) + p4d_index(address); - return (p4d_t *) pgd; + return p4d_offset_lockless(pgdp, *pgdp, address); } -static inline pud_t *pud_offset(p4d_t *p4d, unsigned long address) +static inline pud_t *pud_offset_lockless(p4d_t *p4dp, p4d_t p4d, unsigned long address) { - if ((p4d_val(*p4d) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R2) - return (pud_t *) p4d_deref(*p4d) + pud_index(address); - return (pud_t *) p4d; + if ((p4d_val(p4d) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R2) + return (pud_t *) p4d_deref(p4d) + pud_index(address); + return (pud_t *) p4dp; +} +#define pud_offset_lockless pud_offset_lockless + +static inline pud_t *pud_offset(p4d_t *p4dp, unsigned long address) +{ + return pud_offset_lockless(p4dp, *p4dp, address); } #define pud_offset pud_offset -static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address) +static inline pmd_t *pmd_offset_lockless(pud_t *pudp, pud_t pud, unsigned long address) +{ + if ((pud_val(pud) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R3) + return (pmd_t *) pud_deref(pud) + pmd_index(address); + return (pmd_t *) pudp; +} +#define pmd_offset_lockless pmd_offset_lockless + +static inline pmd_t *pmd_offset(pud_t *pudp, unsigned long address) { - if ((pud_val(*pud) & _REGION_ENTRY_TYPE_MASK) >= _REGION_ENTRY_TYPE_R3) - return (pmd_t *) pud_deref(*pud) + pmd_index(address); - return (pmd_t *) pud; + return pmd_offset_lockless(pudp, *pudp, address); } #define pmd_offset pmd_offset --- linux-5.8.0.orig/arch/s390/include/asm/topology.h +++ linux-5.8.0/arch/s390/include/asm/topology.h @@ -86,12 +86,6 @@ #define pcibus_to_node(bus) __pcibus_to_node(bus) -#define node_distance(a, b) __node_distance(a, b) -static inline int __node_distance(int a, int b) -{ - return 0; -} - #else /* !CONFIG_NUMA */ #define numa_node_id numa_node_id --- linux-5.8.0.orig/arch/s390/include/asm/uv.h +++ linux-5.8.0/arch/s390/include/asm/uv.h @@ -95,7 +95,7 @@ u32 max_num_sec_conf; u64 max_guest_stor_addr; u8 reserved88[158 - 136]; - u16 max_guest_cpus; + u16 max_guest_cpu_id; u8 reserveda0[200 - 160]; } __packed __aligned(8); @@ -272,7 +272,7 @@ unsigned long guest_cpu_stor_len; unsigned long max_sec_stor_addr; unsigned int max_num_sec_conf; - unsigned short max_guest_cpus; + unsigned short max_guest_cpu_id; }; extern struct uv_info uv_info; --- linux-5.8.0.orig/arch/s390/kernel/Makefile +++ linux-5.8.0/arch/s390/kernel/Makefile @@ -76,3 +76,6 @@ # vdso obj-y += vdso64/ + +# kernel message catalog +obj-$(CONFIG_KMSG_IDS) += kmsg.o --- linux-5.8.0.orig/arch/s390/kernel/asm-offsets.c +++ linux-5.8.0/arch/s390/kernel/asm-offsets.c @@ -53,11 +53,11 @@ /* stack_frame offsets */ OFFSET(__SF_BACKCHAIN, stack_frame, back_chain); OFFSET(__SF_GPRS, stack_frame, gprs); - OFFSET(__SF_EMPTY, stack_frame, empty1); - OFFSET(__SF_SIE_CONTROL, stack_frame, empty1[0]); - OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty1[1]); - OFFSET(__SF_SIE_REASON, stack_frame, empty1[2]); - OFFSET(__SF_SIE_FLAGS, stack_frame, empty1[3]); + OFFSET(__SF_EMPTY, stack_frame, empty1[0]); + OFFSET(__SF_SIE_CONTROL, stack_frame, empty1[1]); + OFFSET(__SF_SIE_SAVEAREA, stack_frame, empty1[2]); + OFFSET(__SF_SIE_REASON, stack_frame, empty1[3]); + OFFSET(__SF_SIE_FLAGS, stack_frame, empty1[4]); BLANK(); /* timeval/timezone offsets for use by vdso */ OFFSET(__VDSO_UPD_COUNT, vdso_data, tb_update_count); --- linux-5.8.0.orig/arch/s390/kernel/entry.S +++ linux-5.8.0/arch/s390/kernel/entry.S @@ -110,9 +110,9 @@ #endif .endm - .macro SWITCH_ASYNC savearea,timer + .macro SWITCH_ASYNC savearea,timer,clock tmhh %r8,0x0001 # interrupting from user ? - jnz 2f + jnz 4f #if IS_ENABLED(CONFIG_KVM) lgr %r14,%r9 larl %r13,.Lsie_gmap @@ -125,10 +125,26 @@ #endif 0: larl %r13,.Lpsw_idle_exit cgr %r13,%r9 - jne 1f + jne 3f + + larl %r1,smp_cpu_mtid + llgf %r1,0(%r1) + ltgr %r1,%r1 + jz 2f # no SMT, skip mt_cycles calculation + .insn rsy,0xeb0000000017,%r1,5,__SF_EMPTY+80(%r15) + larl %r3,mt_cycles + ag %r3,__LC_PERCPU_OFFSET + la %r4,__SF_EMPTY+16(%r15) +1: lg %r0,0(%r3) + slg %r0,0(%r4) + alg %r0,64(%r4) + stg %r0,0(%r3) + la %r3,8(%r3) + la %r4,8(%r4) + brct %r1,1b - mvc __CLOCK_IDLE_EXIT(8,%r2), __LC_INT_CLOCK - mvc __TIMER_IDLE_EXIT(8,%r2), __LC_ASYNC_ENTER_TIMER +2: mvc __CLOCK_IDLE_EXIT(8,%r2), \clock + mvc __TIMER_IDLE_EXIT(8,%r2), \timer # account system time going idle ni __LC_CPU_FLAGS+7,255-_CIF_ENABLED_WAIT @@ -146,17 +162,17 @@ mvc __LC_LAST_UPDATE_TIMER(8),__TIMER_IDLE_EXIT(%r2) nihh %r8,0xfcfd # clear wait state and irq bits -1: lg %r14,__LC_ASYNC_STACK # are we already on the target stack? +3: lg %r14,__LC_ASYNC_STACK # are we already on the target stack? slgr %r14,%r15 srag %r14,%r14,STACK_SHIFT - jnz 3f + jnz 5f CHECK_STACK \savearea aghi %r15,-(STACK_FRAME_OVERHEAD + __PT_SIZE) - j 4f -2: UPDATE_VTIME %r14,%r15,\timer + j 6f +4: UPDATE_VTIME %r14,%r15,\timer BPENTER __TI_flags(%r12),_TIF_ISOLATE_BP -3: lg %r15,__LC_ASYNC_STACK # load async stack -4: la %r11,STACK_FRAME_OVERHEAD(%r15) +5: lg %r15,__LC_ASYNC_STACK # load async stack +6: la %r11,STACK_FRAME_OVERHEAD(%r15) .endm .macro UPDATE_VTIME w1,w2,enter_timer @@ -390,6 +406,7 @@ mvc __PT_PSW(16,%r11),__LC_SVC_OLD_PSW mvc __PT_INT_CODE(4,%r11),__LC_SVC_ILC stg %r14,__PT_FLAGS(%r11) + xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) ENABLE_INTS .Lsysc_do_svc: # clear user controlled register to prevent speculative use @@ -406,7 +423,6 @@ jnl .Lsysc_nr_ok slag %r8,%r1,3 .Lsysc_nr_ok: - xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) stg %r2,__PT_ORIG_GPR2(%r11) stg %r7,STACK_FRAME_OVERHEAD(%r15) lg %r9,0(%r8,%r10) # get system call add. @@ -422,6 +438,7 @@ #endif LOCKDEP_SYS_EXIT .Lsysc_tif: + DISABLE_INTS TSTMSK __PT_FLAGS(%r11),_PIF_WORK jnz .Lsysc_work TSTMSK __TI_flags(%r12),_TIF_WORK @@ -446,6 +463,7 @@ # One of the work bits is on. Find out which one. # .Lsysc_work: + ENABLE_INTS TSTMSK __TI_flags(%r12),_TIF_NEED_RESCHED jo .Lsysc_reschedule TSTMSK __PT_FLAGS(%r11),_PIF_SYSCALL_RESTART @@ -696,8 +714,8 @@ mvc __THREAD_per_address(8,%r14),__LC_PER_ADDRESS mvc __THREAD_per_cause(2,%r14),__LC_PER_CODE mvc __THREAD_per_paid(1,%r14),__LC_PER_ACCESS_ID -6: RESTORE_SM_CLEAR_PER - xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) +6: xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) + RESTORE_SM_CLEAR_PER larl %r1,pgm_check_table llgh %r10,__PT_INT_CODE+2(%r11) nill %r10,0x007f @@ -718,8 +736,8 @@ # PER event in supervisor state, must be kprobes # .Lpgm_kprobe: - RESTORE_SM_CLEAR_PER xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) + RESTORE_SM_CLEAR_PER lgr %r2,%r11 # pass pointer to pt_regs brasl %r14,do_per_trap j .Lpgm_return @@ -745,7 +763,7 @@ stmg %r8,%r15,__LC_SAVE_AREA_ASYNC lg %r12,__LC_CURRENT lmg %r8,%r9,__LC_IO_OLD_PSW - SWITCH_ASYNC __LC_SAVE_AREA_ASYNC,__LC_ASYNC_ENTER_TIMER + SWITCH_ASYNC __LC_SAVE_AREA_ASYNC,__LC_ASYNC_ENTER_TIMER,__LC_INT_CLOCK stmg %r0,%r7,__PT_R0(%r11) # clear user controlled registers to prevent speculative use xgr %r0,%r0 @@ -761,15 +779,10 @@ stmg %r8,%r9,__PT_PSW(%r11) mvc __PT_INT_CODE(12,%r11),__LC_SUBCHANNEL_ID xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) + xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ jo .Lio_restore -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tmhh %r8,0x300 - jz 1f TRACE_IRQS_OFF -1: -#endif - xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) .Lio_loop: lgr %r2,%r11 # pass pointer to pt_regs lghi %r3,IO_INTERRUPT @@ -791,12 +804,7 @@ TSTMSK __LC_CPU_FLAGS,_CIF_WORK jnz .Lio_work .Lio_restore: -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tm __PT_PSW(%r11),3 - jno 0f TRACE_IRQS_ON -0: -#endif lg %r14,__LC_VDSO_PER_CPU mvc __LC_RETURN_PSW(16),__PT_PSW(%r11) tm __PT_PSW+1(%r11),0x01 # returning to user ? @@ -957,7 +965,7 @@ stmg %r8,%r15,__LC_SAVE_AREA_ASYNC lg %r12,__LC_CURRENT lmg %r8,%r9,__LC_EXT_OLD_PSW - SWITCH_ASYNC __LC_SAVE_AREA_ASYNC,__LC_ASYNC_ENTER_TIMER + SWITCH_ASYNC __LC_SAVE_AREA_ASYNC,__LC_ASYNC_ENTER_TIMER,__LC_INT_CLOCK stmg %r0,%r7,__PT_R0(%r11) # clear user controlled registers to prevent speculative use xgr %r0,%r0 @@ -976,15 +984,10 @@ mvc __PT_INT_PARM(4,%r11),__LC_EXT_PARAMS mvc __PT_INT_PARM_LONG(8,%r11),0(%r1) xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) + xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ jo .Lio_restore -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tmhh %r8,0x300 - jz 1f TRACE_IRQS_OFF -1: -#endif - xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) lgr %r2,%r11 # pass pointer to pt_regs lghi %r3,EXT_INTERRUPT brasl %r14,do_IRQ @@ -1070,6 +1073,7 @@ * %r4 */ load_fpu_regs: + stnsm __SF_EMPTY(%r15),0xfc lg %r4,__LC_CURRENT aghi %r4,__TASK_thread TSTMSK __LC_CPU_FLAGS,_CIF_FPU @@ -1101,6 +1105,7 @@ .Lload_fpu_regs_done: ni __LC_CPU_FLAGS+7,255-_CIF_FPU .Lload_fpu_regs_exit: + ssm __SF_EMPTY(%r15) BR_EX %r14 .Lload_fpu_regs_end: ENDPROC(load_fpu_regs) @@ -1182,7 +1187,7 @@ TSTMSK __LC_MCCK_CODE,MCCK_CODE_PSW_IA_VALID jno .Lmcck_panic 4: ssm __LC_PGM_NEW_PSW # turn dat on, keep irqs off - SWITCH_ASYNC __LC_GPREGS_SAVE_AREA+64,__LC_MCCK_ENTER_TIMER + SWITCH_ASYNC __LC_GPREGS_SAVE_AREA+64,__LC_MCCK_ENTER_TIMER,__LC_MCCK_CLOCK .Lmcck_skip: lghi %r14,__LC_GPREGS_SAVE_AREA+64 stmg %r0,%r7,__PT_R0(%r11) --- linux-5.8.0.orig/arch/s390/kernel/entry.h +++ linux-5.8.0/arch/s390/kernel/entry.h @@ -26,6 +26,7 @@ void do_dat_exception(struct pt_regs *regs); void do_secure_storage_access(struct pt_regs *regs); void do_non_secure_storage_access(struct pt_regs *regs); +void do_secure_storage_violation(struct pt_regs *regs); void addressing_exception(struct pt_regs *regs); void data_exception(struct pt_regs *regs); --- linux-5.8.0.orig/arch/s390/kernel/ipl.c +++ linux-5.8.0/arch/s390/kernel/ipl.c @@ -2110,3 +2110,8 @@ } #endif + +bool ipl_get_secureboot(void) +{ + return !!ipl_secure_flag; +} --- linux-5.8.0.orig/arch/s390/kernel/kmsg.c +++ linux-5.8.0/arch/s390/kernel/kmsg.c @@ -0,0 +1,114 @@ +/* + * Message printing with message catalog prefixes. + * + * Copyright IBM Corp. 2012 + */ + +#include +#include +#include +#include +#include + +static inline u32 __printk_jhash(const void *key, u32 length) +{ + u32 a, b, c, len; + const u8 *k; + u8 zk[12]; + + a = b = 0x9e3779b9; + c = 0; + for (len = length + 12, k = key; len >= 12; len -= 12, k += 12) { + if (len >= 24) { + a += k[0] | k[1] << 8 | k[2] << 16 | k[3] << 24; + b += k[4] | k[5] << 8 | k[6] << 16 | k[7] << 24; + c += k[8] | k[9] << 8 | k[10] << 16 | k[11] << 24; + } else { + memset(zk, 0, 12); + memcpy(zk, k, len - 12); + a += zk[0] | zk[1] << 8 | zk[2] << 16 | zk[3] << 24; + b += zk[4] | zk[5] << 8 | zk[6] << 16 | zk[7] << 24; + c += (u32) zk[8] << 8; + c += (u32) zk[9] << 16; + c += (u32) zk[10] << 24; + c += length; + } + a -= b + c; a ^= (c>>13); + b -= a + c; b ^= (a<<8); + c -= a + b; c ^= (b>>13); + a -= b + c; a ^= (c>>12); + b -= a + c; b ^= (a<<16); + c -= a + b; c ^= (b>>5); + a -= b + c; a ^= (c>>3); + b -= a + c; b ^= (a<<10); + c -= a + b; c ^= (b>>15); + } + return c; +} + +/** + * __jhash_string - calculate the six digit jhash of a string + * @str: string to calculate the jhash + */ +unsigned long long __jhash_string(const char *str) +{ + return __printk_jhash(str, strlen(str)) & 0xffffff; +} +EXPORT_SYMBOL(__jhash_string); + +static int __dev_printk_hash(const char *level, const struct device *dev, + struct va_format *vaf) +{ + if (!dev) + return printk("%s(NULL device *): %pV", level, vaf); + + return printk("%s%s.%06x: %pV", level, dev_driver_string(dev), + __printk_jhash(vaf->fmt, strlen(vaf->fmt)) & 0xffffff, + vaf); +} + +int dev_printk_hash(const char *level, const struct device *dev, + const char *fmt, ...) +{ + struct va_format vaf; + va_list args; + int r; + + va_start(args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + + r = __dev_printk_hash(level, dev, &vaf); + va_end(args); + + return r; +} +EXPORT_SYMBOL(dev_printk_hash); + +#define define_dev_printk_hash_level(func, kern_level) \ +int func(const struct device *dev, const char *fmt, ...) \ +{ \ + struct va_format vaf; \ + va_list args; \ + int r; \ + \ + va_start(args, fmt); \ + \ + vaf.fmt = fmt; \ + vaf.va = &args; \ + \ + r = __dev_printk_hash(kern_level, dev, &vaf); \ + va_end(args); \ + \ + return r; \ +} \ +EXPORT_SYMBOL(func); + +define_dev_printk_hash_level(dev_emerg_hash, KERN_EMERG); +define_dev_printk_hash_level(dev_alert_hash, KERN_ALERT); +define_dev_printk_hash_level(dev_crit_hash, KERN_CRIT); +define_dev_printk_hash_level(dev_err_hash, KERN_ERR); +define_dev_printk_hash_level(dev_warn_hash, KERN_WARNING); +define_dev_printk_hash_level(dev_notice_hash, KERN_NOTICE); +define_dev_printk_hash_level(_dev_info_hash, KERN_INFO); --- linux-5.8.0.orig/arch/s390/kernel/perf_cpum_sf.c +++ linux-5.8.0/arch/s390/kernel/perf_cpum_sf.c @@ -2228,4 +2228,4 @@ } arch_initcall(init_cpum_sampling_pmu); -core_param(cpum_sfb_size, CPUM_SF_MAX_SDB, sfb_size, 0640); +core_param(cpum_sfb_size, CPUM_SF_MAX_SDB, sfb_size, 0644); --- linux-5.8.0.orig/arch/s390/kernel/pgm_check.S +++ linux-5.8.0/arch/s390/kernel/pgm_check.S @@ -80,7 +80,7 @@ PGM_CHECK_DEFAULT /* 3c */ PGM_CHECK(do_secure_storage_access) /* 3d */ PGM_CHECK(do_non_secure_storage_access) /* 3e */ -PGM_CHECK_DEFAULT /* 3f */ +PGM_CHECK(do_secure_storage_violation) /* 3f */ PGM_CHECK(monitor_event_exception) /* 40 */ PGM_CHECK_DEFAULT /* 41 */ PGM_CHECK_DEFAULT /* 42 */ --- linux-5.8.0.orig/arch/s390/kernel/ptrace.c +++ linux-5.8.0/arch/s390/kernel/ptrace.c @@ -1310,7 +1310,6 @@ cb->pc == 1 && cb->qc == 0 && cb->reserved2 == 0 && - cb->key == PAGE_DEFAULT_KEY && cb->reserved3 == 0 && cb->reserved4 == 0 && cb->reserved5 == 0 && @@ -1374,7 +1373,11 @@ kfree(data); return -EINVAL; } - + /* + * Override access key in any case, since user space should + * not be able to set it, nor should it care about it. + */ + ri_cb.key = PAGE_DEFAULT_KEY >> 4; preempt_disable(); if (!target->thread.ri_cb) target->thread.ri_cb = data; --- linux-5.8.0.orig/arch/s390/kernel/runtime_instr.c +++ linux-5.8.0/arch/s390/kernel/runtime_instr.c @@ -57,7 +57,7 @@ cb->k = 1; cb->ps = 1; cb->pc = 1; - cb->key = PAGE_DEFAULT_KEY; + cb->key = PAGE_DEFAULT_KEY >> 4; cb->v = 1; } --- linux-5.8.0.orig/arch/s390/kernel/setup.c +++ linux-5.8.0/arch/s390/kernel/setup.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -619,7 +620,7 @@ /* * Make sure that the area behind memory_end is protected */ -static void reserve_memory_end(void) +static void __init reserve_memory_end(void) { if (memory_end_set) memblock_reserve(memory_end, ULONG_MAX); @@ -628,7 +629,7 @@ /* * Make sure that oldmem, where the dump is stored, is protected */ -static void reserve_oldmem(void) +static void __init reserve_oldmem(void) { #ifdef CONFIG_CRASH_DUMP if (OLDMEM_BASE) @@ -640,7 +641,7 @@ /* * Make sure that oldmem, where the dump is stored, is protected */ -static void remove_oldmem(void) +static void __init remove_oldmem(void) { #ifdef CONFIG_CRASH_DUMP if (OLDMEM_BASE) @@ -1086,6 +1087,9 @@ log_component_list(); + if (ipl_get_secureboot()) + security_lock_kernel_down("Secure IPL mode", LOCKDOWN_INTEGRITY_MAX); + /* Have one command line that is parsed and saved in /proc/cmdline */ /* boot_command_line has been already set up in early.c */ *cmdline_p = boot_command_line; --- linux-5.8.0.orig/arch/s390/kernel/smp.c +++ linux-5.8.0/arch/s390/kernel/smp.c @@ -775,7 +775,7 @@ static int __smp_rescan_cpus(struct sclp_core_info *info, bool early) { struct sclp_core_entry *core; - cpumask_t avail; + static cpumask_t avail; bool configured; u16 core_id; int nr, i; @@ -855,13 +855,14 @@ static void smp_init_secondary(void) { - int cpu = smp_processor_id(); + int cpu = raw_smp_processor_id(); S390_lowcore.last_update_clock = get_tod_clock(); restore_access_regs(S390_lowcore.access_regs_save_area); set_cpu_flag(CIF_ASCE_PRIMARY); set_cpu_flag(CIF_ASCE_SECONDARY); cpu_init(); + rcu_cpu_starting(cpu); preempt_disable(); init_cpu_timer(); vtime_init(); @@ -895,24 +896,12 @@ /* Upping and downing of CPUs */ int __cpu_up(unsigned int cpu, struct task_struct *tidle) { - struct pcpu *pcpu; - int base, i, rc; + struct pcpu *pcpu = pcpu_devices + cpu; + int rc; - pcpu = pcpu_devices + cpu; if (pcpu->state != CPU_STATE_CONFIGURED) return -EIO; - base = smp_get_base_cpu(cpu); - for (i = 0; i <= smp_cpu_mtid; i++) { - if (base + i < nr_cpu_ids) - if (cpu_online(base + i)) - break; - } - /* - * If this is the first CPU of the core to get online - * do an initial CPU reset. - */ - if (i > smp_cpu_mtid && - pcpu_sigp_retry(pcpu_devices + base, SIGP_INITIAL_CPU_RESET, 0) != + if (pcpu_sigp_retry(pcpu, SIGP_INITIAL_CPU_RESET, 0) != SIGP_CC_ORDER_CODE_ACCEPTED) return -EIO; --- linux-5.8.0.orig/arch/s390/kernel/time.c +++ linux-5.8.0/arch/s390/kernel/time.c @@ -345,8 +345,9 @@ static DEFINE_MUTEX(clock_sync_mutex); static unsigned long clock_sync_flags; -#define CLOCK_SYNC_HAS_STP 0 -#define CLOCK_SYNC_STP 1 +#define CLOCK_SYNC_HAS_STP 0 +#define CLOCK_SYNC_STP 1 +#define CLOCK_SYNC_STPINFO_VALID 2 /* * The get_clock function for the physical clock. It will get the current @@ -583,6 +584,22 @@ queue_work(time_sync_wq, &stp_work); } +static int __store_stpinfo(void) +{ + int rc = chsc_sstpi(stp_page, &stp_info, sizeof(struct stp_sstpi)); + + if (rc) + clear_bit(CLOCK_SYNC_STPINFO_VALID, &clock_sync_flags); + else + set_bit(CLOCK_SYNC_STPINFO_VALID, &clock_sync_flags); + return rc; +} + +static int stpinfo_valid(void) +{ + return stp_online && test_bit(CLOCK_SYNC_STPINFO_VALID, &clock_sync_flags); +} + static int stp_sync_clock(void *data) { struct clock_sync_data *sync = data; @@ -604,8 +621,7 @@ if (rc == 0) { sync->clock_delta = clock_delta; clock_sync_global(clock_delta); - rc = chsc_sstpi(stp_page, &stp_info, - sizeof(struct stp_sstpi)); + rc = __store_stpinfo(); if (rc == 0 && stp_info.tmd != 2) rc = -EAGAIN; } @@ -650,7 +666,7 @@ if (rc) goto out_unlock; - rc = chsc_sstpi(stp_page, &stp_info, sizeof(struct stp_sstpi)); + rc = __store_stpinfo(); if (rc || stp_info.c == 0) goto out_unlock; @@ -687,10 +703,14 @@ struct device_attribute *attr, char *buf) { - if (!stp_online) - return -ENODATA; - return sprintf(buf, "%016llx\n", - *(unsigned long long *) stp_info.ctnid); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid()) + ret = sprintf(buf, "%016llx\n", + *(unsigned long long *) stp_info.ctnid); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(ctn_id, 0400, stp_ctn_id_show, NULL); @@ -699,9 +719,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online) - return -ENODATA; - return sprintf(buf, "%i\n", stp_info.ctn); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid()) + ret = sprintf(buf, "%i\n", stp_info.ctn); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(ctn_type, 0400, stp_ctn_type_show, NULL); @@ -710,9 +734,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online || !(stp_info.vbits & 0x2000)) - return -ENODATA; - return sprintf(buf, "%i\n", (int)(s16) stp_info.dsto); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid() && (stp_info.vbits & 0x2000)) + ret = sprintf(buf, "%i\n", (int)(s16) stp_info.dsto); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(dst_offset, 0400, stp_dst_offset_show, NULL); @@ -721,9 +749,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online || !(stp_info.vbits & 0x8000)) - return -ENODATA; - return sprintf(buf, "%i\n", (int)(s16) stp_info.leaps); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid() && (stp_info.vbits & 0x8000)) + ret = sprintf(buf, "%i\n", (int)(s16) stp_info.leaps); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(leap_seconds, 0400, stp_leap_seconds_show, NULL); @@ -732,9 +764,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online) - return -ENODATA; - return sprintf(buf, "%i\n", (int)(s16) stp_info.stratum); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid()) + ret = sprintf(buf, "%i\n", (int)(s16) stp_info.stratum); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(stratum, 0400, stp_stratum_show, NULL); @@ -743,9 +779,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online || !(stp_info.vbits & 0x0800)) - return -ENODATA; - return sprintf(buf, "%i\n", (int) stp_info.tto); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid() && (stp_info.vbits & 0x0800)) + ret = sprintf(buf, "%i\n", (int) stp_info.tto); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(time_offset, 0400, stp_time_offset_show, NULL); @@ -754,9 +794,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online || !(stp_info.vbits & 0x4000)) - return -ENODATA; - return sprintf(buf, "%i\n", (int)(s16) stp_info.tzo); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid() && (stp_info.vbits & 0x4000)) + ret = sprintf(buf, "%i\n", (int)(s16) stp_info.tzo); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(time_zone_offset, 0400, @@ -766,9 +810,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online) - return -ENODATA; - return sprintf(buf, "%i\n", stp_info.tmd); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid()) + ret = sprintf(buf, "%i\n", stp_info.tmd); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(timing_mode, 0400, stp_timing_mode_show, NULL); @@ -777,9 +825,13 @@ struct device_attribute *attr, char *buf) { - if (!stp_online) - return -ENODATA; - return sprintf(buf, "%i\n", stp_info.tst); + ssize_t ret = -ENODATA; + + mutex_lock(&stp_work_mutex); + if (stpinfo_valid()) + ret = sprintf(buf, "%i\n", stp_info.tst); + mutex_unlock(&stp_work_mutex); + return ret; } static DEVICE_ATTR(timing_state, 0400, stp_timing_state_show, NULL); --- linux-5.8.0.orig/arch/s390/kernel/uv.c +++ linux-5.8.0/arch/s390/kernel/uv.c @@ -345,7 +345,7 @@ struct kobj_attribute *attr, char *page) { return scnprintf(page, PAGE_SIZE, "%d\n", - uv_info.max_guest_cpus); + uv_info.max_guest_cpu_id + 1); } static struct kobj_attribute uv_query_max_guest_cpus_attr = --- linux-5.8.0.orig/arch/s390/kernel/vdso64/Makefile +++ linux-5.8.0/arch/s390/kernel/vdso64/Makefile @@ -19,7 +19,7 @@ KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \ - --hash-style=both --build-id -T + --hash-style=both --build-id=sha1 -T $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) --- linux-5.8.0.orig/arch/s390/kernel/vtime.c +++ linux-5.8.0/arch/s390/kernel/vtime.c @@ -136,7 +136,8 @@ " stck %1" /* Store current tod clock value */ #endif : "=Q" (S390_lowcore.last_update_timer), - "=Q" (S390_lowcore.last_update_clock)); + "=Q" (S390_lowcore.last_update_clock) + : : "cc"); clock = S390_lowcore.last_update_clock - clock; timer -= S390_lowcore.last_update_timer; @@ -216,7 +217,7 @@ avg_steal = S390_lowcore.avg_steal_timer / 2; if ((s64) steal > 0) { S390_lowcore.steal_timer = 0; - account_steal_time(steal); + account_steal_time(cputime_to_nsecs(steal)); avg_steal += steal; } S390_lowcore.avg_steal_timer = avg_steal; --- linux-5.8.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-5.8.0/arch/s390/kvm/kvm-s390.c @@ -2311,7 +2311,7 @@ struct kvm_s390_pv_unp unp = {}; r = -EINVAL; - if (!kvm_s390_pv_is_protected(kvm)) + if (!kvm_s390_pv_is_protected(kvm) || !mm_is_protected(kvm->mm)) break; r = -EFAULT; --- linux-5.8.0.orig/arch/s390/kvm/pv.c +++ linux-5.8.0/arch/s390/kvm/pv.c @@ -209,7 +209,6 @@ return -EIO; } kvm->arch.gmap->guest_handle = uvcb.guest_handle; - atomic_set(&kvm->mm->context.is_protected, 1); return 0; } @@ -229,6 +228,8 @@ *rrc = uvcb.header.rrc; KVM_UV_EVENT(kvm, 3, "PROTVIRT VM SET PARMS: rc %x rrc %x", *rc, *rrc); + if (!cc) + atomic_set(&kvm->mm->context.is_protected, 1); return cc ? -EINVAL : 0; } --- linux-5.8.0.orig/arch/s390/lib/delay.c +++ linux-5.8.0/arch/s390/lib/delay.c @@ -33,7 +33,7 @@ static void __udelay_disabled(unsigned long long usecs) { - unsigned long cr0, cr0_new, psw_mask, flags; + unsigned long cr0, cr0_new, psw_mask; struct s390_idle_data idle; u64 end; @@ -45,9 +45,8 @@ psw_mask = __extract_psw() | PSW_MASK_EXT | PSW_MASK_WAIT; set_clock_comparator(end); set_cpu_flag(CIF_IGNORE_IRQ); - local_irq_save(flags); psw_idle(&idle, psw_mask); - local_irq_restore(flags); + trace_hardirqs_off(); clear_cpu_flag(CIF_IGNORE_IRQ); set_clock_comparator(S390_lowcore.clock_comparator); __ctl_load(cr0, 0, 0); --- linux-5.8.0.orig/arch/s390/lib/test_unwind.c +++ linux-5.8.0/arch/s390/lib/test_unwind.c @@ -63,6 +63,7 @@ break; if (state.reliable && !addr) { pr_err("unwind state reliable but addr is 0\n"); + kfree(bt); return -EINVAL; } sprint_symbol(sym, addr); @@ -203,12 +204,15 @@ /* This function must appear in the backtrace. */ static noinline int unwindme_func2(struct unwindme *u) { + unsigned long flags; int rc; if (u->flags & UWM_SWITCH_STACK) { - preempt_disable(); + local_irq_save(flags); + local_mcck_disable(); rc = CALL_ON_STACK(unwindme_func3, S390_lowcore.nodat_stack, 1, u); - preempt_enable(); + local_mcck_enable(); + local_irq_restore(flags); return rc; } else { return unwindme_func3(u); --- linux-5.8.0.orig/arch/s390/mm/fault.c +++ linux-5.8.0/arch/s390/mm/fault.c @@ -875,6 +875,21 @@ } NOKPROBE_SYMBOL(do_non_secure_storage_access); +void do_secure_storage_violation(struct pt_regs *regs) +{ + /* + * Either KVM messed up the secure guest mapping or the same + * page is mapped into multiple secure guests. + * + * This exception is only triggered when a guest 2 is running + * and can therefore never occur in kernel context. + */ + printk_ratelimited(KERN_WARNING + "Secure storage violation in task: %s, pid %d\n", + current->comm, current->pid); + send_sig(SIGSEGV, current, 0); +} + #else void do_secure_storage_access(struct pt_regs *regs) { @@ -885,4 +900,9 @@ { default_trap_handler(regs); } + +void do_secure_storage_violation(struct pt_regs *regs) +{ + default_trap_handler(regs); +} #endif --- linux-5.8.0.orig/arch/s390/mm/gmap.c +++ linux-5.8.0/arch/s390/mm/gmap.c @@ -2485,23 +2485,36 @@ } EXPORT_SYMBOL_GPL(gmap_sync_dirty_log_pmd); +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +static int thp_split_walk_pmd_entry(pmd_t *pmd, unsigned long addr, + unsigned long end, struct mm_walk *walk) +{ + struct vm_area_struct *vma = walk->vma; + + split_huge_pmd(vma, pmd, addr); + return 0; +} + +static const struct mm_walk_ops thp_split_walk_ops = { + .pmd_entry = thp_split_walk_pmd_entry, +}; + static inline void thp_split_mm(struct mm_struct *mm) { -#ifdef CONFIG_TRANSPARENT_HUGEPAGE struct vm_area_struct *vma; - unsigned long addr; for (vma = mm->mmap; vma != NULL; vma = vma->vm_next) { - for (addr = vma->vm_start; - addr < vma->vm_end; - addr += PAGE_SIZE) - follow_page(vma, addr, FOLL_SPLIT); vma->vm_flags &= ~VM_HUGEPAGE; vma->vm_flags |= VM_NOHUGEPAGE; + walk_page_vma(vma, &thp_split_walk_ops, NULL); } mm->def_flags |= VM_NOHUGEPAGE; -#endif } +#else +static inline void thp_split_mm(struct mm_struct *mm) +{ +} +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ /* * Remove all empty zero pages from the mapping for lazy refaulting @@ -2677,6 +2690,8 @@ #include void s390_reset_acc(struct mm_struct *mm) { + if (!mm_is_protected(mm)) + return; /* * we might be called during * reset: we walk the pages and clear --- linux-5.8.0.orig/arch/s390/net/bpf_jit_comp.c +++ linux-5.8.0/arch/s390/net/bpf_jit_comp.c @@ -489,6 +489,24 @@ } while (re <= last); } +static void bpf_skip(struct bpf_jit *jit, int size) +{ + if (size >= 6 && !is_valid_rel(size)) { + /* brcl 0xf,size */ + EMIT6_PCREL_RIL(0xc0f4000000, size); + size -= 6; + } else if (size >= 4 && is_valid_rel(size)) { + /* brc 0xf,size */ + EMIT4_PCREL(0xa7f40000, size); + size -= 4; + } + while (size >= 2) { + /* bcr 0,%0 */ + _EMIT2(0x0700); + size -= 2; + } +} + /* * Emit function prologue * @@ -1268,8 +1286,12 @@ last = (i == fp->len - 1) ? 1 : 0; if (last) break; - /* j */ - EMIT4_PCREL(0xa7f40000, jit->exit_ip - jit->prg); + if (!is_first_pass(jit) && can_use_rel(jit, jit->exit_ip)) + /* brc 0xf, */ + EMIT4_PCREL_RIC(0xa7040000, 0xf, jit->exit_ip); + else + /* brcl 0xf, */ + EMIT6_PCREL_RILC(0xc0040000, 0xf, jit->exit_ip); break; /* * Branch relative (number of skipped instructions) to offset on @@ -1417,21 +1439,10 @@ } break; branch_ku: - is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32; - /* clfi or clgfi %dst,imm */ - EMIT6_IMM(is_jmp32 ? 0xc20f0000 : 0xc20e0000, - dst_reg, imm); - if (!is_first_pass(jit) && - can_use_rel(jit, addrs[i + off + 1])) { - /* brc mask,off */ - EMIT4_PCREL_RIC(0xa7040000, - mask >> 12, addrs[i + off + 1]); - } else { - /* brcl mask,off */ - EMIT6_PCREL_RILC(0xc0040000, - mask >> 12, addrs[i + off + 1]); - } - break; + /* lgfi %w1,imm (load sign extend imm) */ + src_reg = REG_1; + EMIT6_IMM(0xc0010000, src_reg, imm); + goto branch_xu; branch_xs: is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32; if (!is_first_pass(jit) && @@ -1510,7 +1521,14 @@ */ static int bpf_set_addr(struct bpf_jit *jit, int i) { - if (!bpf_is_new_addr_sane(jit, i)) + int delta; + + if (is_codegen_pass(jit)) { + delta = jit->prg - jit->addrs[i]; + if (delta < 0) + bpf_skip(jit, -delta); + } + if (WARN_ON_ONCE(!bpf_is_new_addr_sane(jit, i))) return -1; jit->addrs[i] = jit->prg; return 0; --- linux-5.8.0.orig/arch/s390/pci/pci.c +++ linux-5.8.0/arch/s390/pci/pci.c @@ -668,47 +668,109 @@ int zpci_disable_device(struct zpci_dev *zdev) { zpci_dma_exit_device(zdev); + /* + * The zPCI function may already be disabled by the platform, this is + * detected in clp_disable_fh() which becomes a no-op. + */ return clp_disable_fh(zdev); } EXPORT_SYMBOL_GPL(zpci_disable_device); -int zpci_create_device(struct zpci_dev *zdev) +/* zpci_remove_device - Removes the given zdev from the PCI core + * @zdev: the zdev to be removed from the PCI core + * @set_error: if true the device's error state is set to permanent failure + * + * Sets a zPCI device to a configured but offline state; the zPCI + * device is still accessible through its hotplug slot and the zPCI + * API but is removed from the common code PCI bus, making it + * no longer available to drivers. + */ +void zpci_remove_device(struct zpci_dev *zdev, bool set_error) { + struct zpci_bus *zbus = zdev->zbus; + struct pci_dev *pdev; + + if (!zdev->zbus->bus) + return; + + pdev = pci_get_slot(zbus->bus, zdev->devfn); + if (pdev) { + if (set_error) + pdev->error_state = pci_channel_io_perm_failure; + if (pdev->is_virtfn) { + zpci_remove_virtfn(pdev, zdev->vfn); + /* balance pci_get_slot */ + pci_dev_put(pdev); + return; + } + pci_stop_and_remove_bus_device_locked(pdev); + /* balance pci_get_slot */ + pci_dev_put(pdev); + } +} + +/** + * zpci_create_device() - Create a new zpci_dev and add it to the zbus + * @fid: Function ID of the device to be created + * @fh: Current Function Handle of the device to be created + * @state: Initial state after creation either Standby or Configured + * + * Creates a new zpci device and adds it to its, possibly newly created, zbus + * as well as zpci_list. + * + * Returns: 0 on success, an error value otherwise + */ +int zpci_create_device(u32 fid, u32 fh, enum zpci_state state) +{ + struct zpci_dev *zdev; int rc; - kref_init(&zdev->kref); + zpci_dbg(3, "add fid:%x, fh:%x, c:%d\n", fid, fh, state); + zdev = kzalloc(sizeof(*zdev), GFP_KERNEL); + if (!zdev) + return -ENOMEM; + + /* FID and Function Handle are the static/dynamic identifiers */ + zdev->fid = fid; + zdev->fh = fh; - spin_lock(&zpci_list_lock); - list_add_tail(&zdev->entry, &zpci_list); - spin_unlock(&zpci_list_lock); + /* Query function properties and update zdev */ + rc = clp_query_pci_fn(zdev); + if (rc) + goto error; + zdev->state = state; + + kref_init(&zdev->kref); + mutex_init(&zdev->lock); rc = zpci_init_iommu(zdev); if (rc) - goto out; + goto error; - mutex_init(&zdev->lock); if (zdev->state == ZPCI_FN_STATE_CONFIGURED) { rc = zpci_enable_device(zdev); if (rc) - goto out_destroy_iommu; + goto error_destroy_iommu; } rc = zpci_bus_device_register(zdev, &pci_root_ops); if (rc) - goto out_disable; + goto error_disable; + + spin_lock(&zpci_list_lock); + list_add_tail(&zdev->entry, &zpci_list); + spin_unlock(&zpci_list_lock); return 0; -out_disable: +error_disable: if (zdev->state == ZPCI_FN_STATE_ONLINE) zpci_disable_device(zdev); - -out_destroy_iommu: +error_destroy_iommu: zpci_destroy_iommu(zdev); -out: - spin_lock(&zpci_list_lock); - list_del(&zdev->entry); - spin_unlock(&zpci_list_lock); +error: + zpci_dbg(0, "add fid:%x, rc:%d\n", fid, rc); + kfree(zdev); return rc; } @@ -716,13 +778,8 @@ { struct zpci_dev *zdev = container_of(kref, struct zpci_dev, kref); - if (zdev->zbus->bus) { - struct pci_dev *pdev; - - pdev = pci_get_slot(zdev->zbus->bus, zdev->devfn); - if (pdev) - pci_stop_and_remove_bus_device_locked(pdev); - } + if (zdev->zbus->bus) + zpci_remove_device(zdev, false); switch (zdev->state) { case ZPCI_FN_STATE_ONLINE: --- linux-5.8.0.orig/arch/s390/pci/pci_bus.c +++ linux-5.8.0/arch/s390/pci/pci_bus.c @@ -132,13 +132,14 @@ { int rc; - virtfn->physfn = pci_dev_get(pdev); rc = pci_iov_sysfs_link(pdev, virtfn, vfid); - if (rc) { - pci_dev_put(pdev); - virtfn->physfn = NULL; + if (rc) return rc; - } + + virtfn->is_virtfn = 1; + virtfn->multifunction = 0; + virtfn->physfn = pci_dev_get(pdev); + return 0; } @@ -151,9 +152,9 @@ int vfid = vfn - 1; /* Linux' vfid's start at 0 vfn at 1*/ int rc = 0; - virtfn->is_virtfn = 1; - virtfn->multifunction = 0; - WARN_ON(vfid < 0); + if (!zbus->multifunction) + return 0; + /* If the parent PF for the given VF is also configured in the * instance, it must be on the same zbus. * We can then identify the parent PF by checking what @@ -165,11 +166,17 @@ zdev = zbus->function[i]; if (zdev && zdev->is_physfn) { pdev = pci_get_slot(zbus->bus, zdev->devfn); + if (!pdev) + continue; cand_devfn = pci_iov_virtfn_devfn(pdev, vfid); if (cand_devfn == virtfn->devfn) { rc = zpci_bus_link_virtfn(pdev, virtfn, vfid); + /* balance pci_get_slot() */ + pci_dev_put(pdev); break; } + /* balance pci_get_slot() */ + pci_dev_put(pdev); } } return rc; @@ -178,12 +185,24 @@ static inline int zpci_bus_setup_virtfn(struct zpci_bus *zbus, struct pci_dev *virtfn, int vfn) { - virtfn->is_virtfn = 1; - virtfn->multifunction = 0; return 0; } #endif +void pcibios_bus_add_device(struct pci_dev *pdev) +{ + struct zpci_dev *zdev = to_zpci(pdev); + + /* + * With pdev->no_vf_scan the common PCI probing code does not + * perform PF/VF linking. + */ + if (zdev->vfn) { + zpci_bus_setup_virtfn(zdev->zbus, pdev, zdev->vfn); + pdev->no_command_memory = 1; + } +} + static int zpci_bus_add_device(struct zpci_bus *zbus, struct zpci_dev *zdev) { struct pci_bus *bus; @@ -214,20 +233,10 @@ } pdev = pci_scan_single_device(bus, zdev->devfn); - if (pdev) { - if (!zdev->is_physfn) { - rc = zpci_bus_setup_virtfn(zbus, pdev, zdev->vfn); - if (rc) - goto failed_with_pdev; - } + if (pdev) pci_bus_add_device(pdev); - } - return 0; -failed_with_pdev: - pci_stop_and_remove_bus_device(pdev); - pci_dev_put(pdev); - return rc; + return 0; } static void zpci_bus_add_devices(struct zpci_bus *zbus) --- linux-5.8.0.orig/arch/s390/pci/pci_bus.h +++ linux-5.8.0/arch/s390/pci/pci_bus.h @@ -29,3 +29,16 @@ return (devfn >= ZPCI_FUNCTIONS_PER_BUS) ? NULL : zbus->function[devfn]; } + +#ifdef CONFIG_PCI_IOV +static inline void zpci_remove_virtfn(struct pci_dev *pdev, int vfn) +{ + + pci_lock_rescan_remove(); + /* Linux' vfid's start at 0 vfn at 1 */ + pci_iov_remove_virtfn(pdev->physfn, vfn - 1); + pci_unlock_rescan_remove(); +} +#else /* CONFIG_PCI_IOV */ +static inline void zpci_remove_virtfn(struct pci_dev *pdev, int vfn) {} +#endif /* CONFIG_PCI_IOV */ --- linux-5.8.0.orig/arch/s390/pci/pci_clp.c +++ linux-5.8.0/arch/s390/pci/pci_clp.c @@ -179,7 +179,7 @@ return 0; } -static int clp_query_pci_fn(struct zpci_dev *zdev, u32 fh) +int clp_query_pci_fn(struct zpci_dev *zdev) { struct clp_req_rsp_query_pci *rrb; int rc; @@ -192,7 +192,7 @@ rrb->request.hdr.len = sizeof(rrb->request); rrb->request.hdr.cmd = CLP_QUERY_PCI_FN; rrb->response.hdr.len = sizeof(rrb->response); - rrb->request.fh = fh; + rrb->request.fh = zdev->fh; rc = clp_req(rrb, CLP_LPS_PCI); if (!rc && rrb->response.hdr.rsp == CLP_RC_OK) { @@ -210,40 +210,6 @@ return rc; } -int clp_add_pci_device(u32 fid, u32 fh, int configured) -{ - struct zpci_dev *zdev; - int rc = -ENOMEM; - - zpci_dbg(3, "add fid:%x, fh:%x, c:%d\n", fid, fh, configured); - zdev = kzalloc(sizeof(*zdev), GFP_KERNEL); - if (!zdev) - goto error; - - zdev->fh = fh; - zdev->fid = fid; - - /* Query function properties and update zdev */ - rc = clp_query_pci_fn(zdev, fh); - if (rc) - goto error; - - if (configured) - zdev->state = ZPCI_FN_STATE_CONFIGURED; - else - zdev->state = ZPCI_FN_STATE_STANDBY; - - rc = zpci_create_device(zdev); - if (rc) - goto error; - return 0; - -error: - zpci_dbg(0, "add fid:%x, rc:%d\n", fid, rc); - kfree(zdev); - return rc; -} - /* * Enable/Disable a given PCI function and update its function handle if * necessary @@ -371,7 +337,7 @@ zdev = get_zdev_by_fid(entry->fid); if (!zdev) - clp_add_pci_device(entry->fid, entry->fh, entry->config_state); + zpci_create_device(entry->fid, entry->fh, entry->config_state); } static void __clp_update(struct clp_fh_list_entry *entry, void *data) --- linux-5.8.0.orig/arch/s390/pci/pci_event.c +++ linux-5.8.0/arch/s390/pci/pci_event.c @@ -76,28 +76,32 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf) { struct zpci_dev *zdev = get_zdev_by_fid(ccdf->fid); - struct pci_dev *pdev = NULL; enum zpci_state state; + struct pci_dev *pdev; int ret; - if (zdev && zdev->zbus && zdev->zbus->bus) - pdev = pci_get_slot(zdev->zbus->bus, zdev->devfn); - zpci_err("avail CCDF:\n"); zpci_err_hex(ccdf, sizeof(*ccdf)); switch (ccdf->pec) { case 0x0301: /* Reserved|Standby -> Configured */ if (!zdev) { - ret = clp_add_pci_device(ccdf->fid, ccdf->fh, 1); + zpci_create_device(ccdf->fid, ccdf->fh, ZPCI_FN_STATE_CONFIGURED); break; } + /* the configuration request may be stale */ + if (zdev->state != ZPCI_FN_STATE_STANDBY) + break; zdev->fh = ccdf->fh; zdev->state = ZPCI_FN_STATE_CONFIGURED; ret = zpci_enable_device(zdev); if (ret) break; + /* the PCI function will be scanned once function 0 appears */ + if (!zdev->zbus->bus) + break; + pdev = pci_scan_single_device(zdev->zbus->bus, zdev->devfn); if (!pdev) break; @@ -109,7 +113,7 @@ break; case 0x0302: /* Reserved -> Standby */ if (!zdev) { - clp_add_pci_device(ccdf->fid, ccdf->fh, 0); + zpci_create_device(ccdf->fid, ccdf->fh, ZPCI_FN_STATE_STANDBY); break; } zdev->fh = ccdf->fh; @@ -117,8 +121,7 @@ case 0x0303: /* Deconfiguration requested */ if (!zdev) break; - if (pdev) - pci_stop_and_remove_bus_device_locked(pdev); + zpci_remove_device(zdev, false); ret = zpci_disable_device(zdev); if (ret) @@ -133,13 +136,13 @@ case 0x0304: /* Configured -> Standby|Reserved */ if (!zdev) break; - if (pdev) { - /* Give the driver a hint that the function is - * already unusable. */ - pdev->error_state = pci_channel_io_perm_failure; - pci_stop_and_remove_bus_device_locked(pdev); - } + /* Give the driver a hint that the function is + * already unusable. + */ + zpci_remove_device(zdev, true); + zdev->fh = ccdf->fh; + zpci_disable_device(zdev); zdev->state = ZPCI_FN_STATE_STANDBY; if (!clp_get_state(ccdf->fid, &state) && state == ZPCI_FN_STATE_RESERVED) { --- linux-5.8.0.orig/arch/s390/pci/pci_irq.c +++ linux-5.8.0/arch/s390/pci/pci_irq.c @@ -103,9 +103,10 @@ { struct msi_desc *entry = irq_get_msi_desc(data->irq); struct msi_msg msg = entry->msg; + int cpu_addr = smp_cpu_get_cpu_address(cpumask_first(dest)); msg.address_lo &= 0xff0000ff; - msg.address_lo |= (cpumask_first(dest) << 8); + msg.address_lo |= (cpu_addr << 8); pci_write_msi_msg(data->irq, &msg); return IRQ_SET_MASK_OK; @@ -238,6 +239,7 @@ unsigned long bit; struct msi_desc *msi; struct msi_msg msg; + int cpu_addr; int rc, irq; zdev->aisb = -1UL; @@ -287,9 +289,15 @@ handle_percpu_irq); msg.data = hwirq - bit; if (irq_delivery == DIRECTED) { + if (msi->affinity) + cpu = cpumask_first(&msi->affinity->mask); + else + cpu = 0; + cpu_addr = smp_cpu_get_cpu_address(cpu); + msg.address_lo = zdev->msi_addr & 0xff0000ff; - msg.address_lo |= msi->affinity ? - (cpumask_first(&msi->affinity->mask) << 8) : 0; + msg.address_lo |= (cpu_addr << 8); + for_each_possible_cpu(cpu) { airq_iv_set_data(zpci_ibv[cpu], hwirq, irq); } --- linux-5.8.0.orig/arch/s390/purgatory/head.S +++ linux-5.8.0/arch/s390/purgatory/head.S @@ -62,14 +62,15 @@ jh 10b .endm -.macro START_NEXT_KERNEL base +.macro START_NEXT_KERNEL base subcode lg %r4,kernel_entry-\base(%r13) lg %r5,load_psw_mask-\base(%r13) ogr %r4,%r5 stg %r4,0(%r0) xgr %r0,%r0 - diag %r0,%r0,0x308 + lghi %r1,\subcode + diag %r0,%r1,0x308 .endm .text @@ -123,7 +124,7 @@ je .start_crash_kernel /* start normal kernel */ - START_NEXT_KERNEL .base_crash + START_NEXT_KERNEL .base_crash 0 .return_old_kernel: lmg %r6,%r15,gprregs-.base_crash(%r13) @@ -227,7 +228,7 @@ MEMCPY %r9,%r10,%r11 /* start crash kernel */ - START_NEXT_KERNEL .base_dst + START_NEXT_KERNEL .base_dst 1 load_psw_mask: --- linux-5.8.0.orig/arch/sh/boards/mach-landisk/setup.c +++ linux-5.8.0/arch/sh/boards/mach-landisk/setup.c @@ -82,6 +82,9 @@ static void __init landisk_setup(char **cmdline_p) { + /* I/O port identity mapping */ + __set_io_port_base(0); + /* LED ON */ __raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED); --- linux-5.8.0.orig/arch/sh/drivers/dma/Kconfig +++ linux-5.8.0/arch/sh/drivers/dma/Kconfig @@ -63,8 +63,7 @@ config G2_DMA tristate "G2 Bus DMA support" - depends on SH_DREAMCAST - select SH_DMA_API + depends on SH_DREAMCAST && SH_DMA_API help This enables support for the DMA controller for the Dreamcast's G2 bus. Drivers that want this will generally enable this on --- linux-5.8.0.orig/arch/sh/include/asm/Kbuild +++ linux-5.8.0/arch/sh/include/asm/Kbuild @@ -1,6 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 generated-y += syscall_table.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += parport.h --- linux-5.8.0.orig/arch/sh/mm/fault.c +++ linux-5.8.0/arch/sh/mm/fault.c @@ -208,7 +208,6 @@ if (!oops_may_print()) return; - printk(KERN_ALERT "PC:"); pr_alert("BUG: unable to handle kernel %s at %08lx\n", address < PAGE_SIZE ? "NULL pointer dereference" : "paging request", --- linux-5.8.0.orig/arch/sparc/Kconfig +++ linux-5.8.0/arch/sparc/Kconfig @@ -510,7 +510,7 @@ bool depends on SPARC64 default y - select COMPAT_BINFMT_ELF + select COMPAT_BINFMT_ELF if BINFMT_ELF select HAVE_UID16 select ARCH_WANT_OLD_COMPAT_IPC select COMPAT_OLD_SIGACTION --- linux-5.8.0.orig/arch/sparc/include/asm/Kbuild +++ linux-5.8.0/arch/sparc/include/asm/Kbuild @@ -6,5 +6,4 @@ generated-y += syscall_table_c32.h generic-y += export.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h --- linux-5.8.0.orig/arch/sparc/include/asm/mman.h +++ linux-5.8.0/arch/sparc/include/asm/mman.h @@ -57,35 +57,39 @@ { if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM | PROT_ADI)) return 0; - if (prot & PROT_ADI) { - if (!adi_capable()) - return 0; + return 1; +} - if (addr) { - struct vm_area_struct *vma; +#define arch_validate_flags(vm_flags) arch_validate_flags(vm_flags) +/* arch_validate_flags() - Ensure combination of flags is valid for a + * VMA. + */ +static inline bool arch_validate_flags(unsigned long vm_flags) +{ + /* If ADI is being enabled on this VMA, check for ADI + * capability on the platform and ensure VMA is suitable + * for ADI + */ + if (vm_flags & VM_SPARC_ADI) { + if (!adi_capable()) + return false; - vma = find_vma(current->mm, addr); - if (vma) { - /* ADI can not be enabled on PFN - * mapped pages - */ - if (vma->vm_flags & (VM_PFNMAP | VM_MIXEDMAP)) - return 0; + /* ADI can not be enabled on PFN mapped pages */ + if (vm_flags & (VM_PFNMAP | VM_MIXEDMAP)) + return false; - /* Mergeable pages can become unmergeable - * if ADI is enabled on them even if they - * have identical data on them. This can be - * because ADI enabled pages with identical - * data may still not have identical ADI - * tags on them. Disallow ADI on mergeable - * pages. - */ - if (vma->vm_flags & VM_MERGEABLE) - return 0; - } - } + /* Mergeable pages can become unmergeable + * if ADI is enabled on them even if they + * have identical data on them. This can be + * because ADI enabled pages with identical + * data may still not have identical ADI + * tags on them. Disallow ADI on mergeable + * pages. + */ + if (vm_flags & VM_MERGEABLE) + return false; } - return 1; + return true; } #endif /* CONFIG_SPARC64 */ --- linux-5.8.0.orig/arch/sparc/kernel/led.c +++ linux-5.8.0/arch/sparc/kernel/led.c @@ -50,6 +50,7 @@ add_timer(&led_blink_timer); } +#ifdef CONFIG_PROC_FS static int led_proc_show(struct seq_file *m, void *v) { if (get_auxio() & AUXIO_LED) @@ -111,6 +112,7 @@ .proc_release = single_release, .proc_write = led_proc_write, }; +#endif static struct proc_dir_entry *led; --- linux-5.8.0.orig/arch/sparc/kernel/smp_64.c +++ linux-5.8.0/arch/sparc/kernel/smp_64.c @@ -1038,38 +1038,9 @@ * are flush_tlb_*() routines, and these run after flush_cache_*() * which performs the flushw. * - * The SMP TLB coherency scheme we use works as follows: - * - * 1) mm->cpu_vm_mask is a bit mask of which cpus an address - * space has (potentially) executed on, this is the heuristic - * we use to avoid doing cross calls. - * - * Also, for flushing from kswapd and also for clones, we - * use cpu_vm_mask as the list of cpus to make run the TLB. - * - * 2) TLB context numbers are shared globally across all processors - * in the system, this allows us to play several games to avoid - * cross calls. - * - * One invariant is that when a cpu switches to a process, and - * that processes tsk->active_mm->cpu_vm_mask does not have the - * current cpu's bit set, that tlb context is flushed locally. - * - * If the address space is non-shared (ie. mm->count == 1) we avoid - * cross calls when we want to flush the currently running process's - * tlb state. This is done by clearing all cpu bits except the current - * processor's in current->mm->cpu_vm_mask and performing the - * flush locally only. This will force any subsequent cpus which run - * this task to flush the context from the local tlb if the process - * migrates to another cpu (again). - * - * 3) For shared address spaces (threads) and swapping we bite the - * bullet for most cases and perform the cross call (but only to - * the cpus listed in cpu_vm_mask). - * - * The performance gain from "optimizing" away the cross call for threads is - * questionable (in theory the big win for threads is the massive sharing of - * address space state across processors). + * mm->cpu_vm_mask is a bit mask of which cpus an address + * space has (potentially) executed on, this is the heuristic + * we use to limit cross calls. */ /* This currently is only used by the hugetlb arch pre-fault @@ -1079,18 +1050,13 @@ void smp_flush_tlb_mm(struct mm_struct *mm) { u32 ctx = CTX_HWBITS(mm->context); - int cpu = get_cpu(); - if (atomic_read(&mm->mm_users) == 1) { - cpumask_copy(mm_cpumask(mm), cpumask_of(cpu)); - goto local_flush_and_out; - } + get_cpu(); smp_cross_call_masked(&xcall_flush_tlb_mm, ctx, 0, 0, mm_cpumask(mm)); -local_flush_and_out: __flush_tlb_mm(ctx, SECONDARY_CONTEXT); put_cpu(); @@ -1113,17 +1079,15 @@ { u32 ctx = CTX_HWBITS(mm->context); struct tlb_pending_info info; - int cpu = get_cpu(); + + get_cpu(); info.ctx = ctx; info.nr = nr; info.vaddrs = vaddrs; - if (mm == current->mm && atomic_read(&mm->mm_users) == 1) - cpumask_copy(mm_cpumask(mm), cpumask_of(cpu)); - else - smp_call_function_many(mm_cpumask(mm), tlb_pending_func, - &info, 1); + smp_call_function_many(mm_cpumask(mm), tlb_pending_func, + &info, 1); __flush_tlb_pending(ctx, nr, vaddrs); @@ -1133,14 +1097,13 @@ void smp_flush_tlb_page(struct mm_struct *mm, unsigned long vaddr) { unsigned long context = CTX_HWBITS(mm->context); - int cpu = get_cpu(); - if (mm == current->mm && atomic_read(&mm->mm_users) == 1) - cpumask_copy(mm_cpumask(mm), cpumask_of(cpu)); - else - smp_cross_call_masked(&xcall_flush_tlb_page, - context, vaddr, 0, - mm_cpumask(mm)); + get_cpu(); + + smp_cross_call_masked(&xcall_flush_tlb_page, + context, vaddr, 0, + mm_cpumask(mm)); + __flush_tlb_page(context, vaddr); put_cpu(); --- linux-5.8.0.orig/arch/sparc/kernel/traps_64.c +++ linux-5.8.0/arch/sparc/kernel/traps_64.c @@ -275,14 +275,13 @@ asi = (regs->tstate >> 24); /* saved %asi */ else asi = (insn >> 5); /* immediate asi */ - if ((asi & 0xf2) == ASI_PNF) { - if (insn & 0x1000000) { /* op3[5:4]=3 */ - handle_ldf_stq(insn, regs); - return true; - } else if (insn & 0x200000) { /* op3[2], stores */ + if ((asi & 0xf6) == ASI_PNF) { + if (insn & 0x200000) /* op3[2], stores */ return false; - } - handle_ld_nf(insn, regs); + if (insn & 0x1000000) /* op3[5:4]=3 (fp) */ + handle_ldf_stq(insn, regs); + else + handle_ld_nf(insn, regs); return true; } } --- linux-5.8.0.orig/arch/sparc/lib/memset.S +++ linux-5.8.0/arch/sparc/lib/memset.S @@ -142,6 +142,7 @@ ZERO_LAST_BLOCKS(%o0, 0x48, %g2) ZERO_LAST_BLOCKS(%o0, 0x08, %g2) 13: + EXT(12b, 13b, 21f) be 8f andcc %o1, 4, %g0 --- linux-5.8.0.orig/arch/sparc/mm/init_32.c +++ linux-5.8.0/arch/sparc/mm/init_32.c @@ -197,6 +197,9 @@ size = memblock_phys_mem_size() - memblock_reserved_size(); *pages_avail = (size >> PAGE_SHIFT) - high_pages; + /* Only allow low memory to be allocated via memblock allocation */ + memblock_set_current_limit(max_low_pfn << PAGE_SHIFT); + return max_pfn; } --- linux-5.8.0.orig/arch/sparc/mm/init_64.c +++ linux-5.8.0/arch/sparc/mm/init_64.c @@ -2899,7 +2899,7 @@ if (!page) return NULL; if (!pgtable_pte_page_ctor(page)) { - free_unref_page(page); + __free_page(page); return NULL; } return (pte_t *) page_address(page); --- linux-5.8.0.orig/arch/sparc/vdso/Makefile +++ linux-5.8.0/arch/sparc/vdso/Makefile @@ -115,7 +115,7 @@ -T $(filter %.lds,$^) $(filter %.o,$^) && \ sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@' -VDSO_LDFLAGS = -shared --hash-style=both --build-id -Bsymbolic +VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic GCOV_PROFILE := n # --- linux-5.8.0.orig/arch/um/drivers/chan_user.c +++ linux-5.8.0/arch/um/drivers/chan_user.c @@ -26,10 +26,10 @@ n = read(fd, c_out, sizeof(*c_out)); if (n > 0) return n; - else if (errno == EAGAIN) - return 0; else if (n == 0) return -EIO; + else if (errno == EAGAIN) + return 0; return -errno; } --- linux-5.8.0.orig/arch/um/drivers/random.c +++ linux-5.8.0/arch/um/drivers/random.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -18,9 +19,8 @@ #include /* - * core module and version information + * core module information */ -#define RNG_VERSION "1.0.0" #define RNG_MODULE_NAME "hw_random" /* Changed at init time, in the non-modular case, and at module load @@ -28,88 +28,36 @@ * protects against a module being loaded twice at the same time. */ static int random_fd = -1; -static DECLARE_WAIT_QUEUE_HEAD(host_read_wait); +static struct hwrng hwrng = { 0, }; +static DECLARE_COMPLETION(have_data); -static int rng_dev_open (struct inode *inode, struct file *filp) +static int rng_dev_read(struct hwrng *rng, void *buf, size_t max, bool block) { - /* enforce read-only access to this chrdev */ - if ((filp->f_mode & FMODE_READ) == 0) - return -EINVAL; - if ((filp->f_mode & FMODE_WRITE) != 0) - return -EINVAL; + int ret; - return 0; -} - -static atomic_t host_sleep_count = ATOMIC_INIT(0); - -static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size, - loff_t *offp) -{ - u32 data; - int n, ret = 0, have_data; - - while (size) { - n = os_read_file(random_fd, &data, sizeof(data)); - if (n > 0) { - have_data = n; - while (have_data && size) { - if (put_user((u8) data, buf++)) { - ret = ret ? : -EFAULT; - break; - } - size--; - ret++; - have_data--; - data >>= 8; - } - } - else if (n == -EAGAIN) { - DECLARE_WAITQUEUE(wait, current); - - if (filp->f_flags & O_NONBLOCK) - return ret ? : -EAGAIN; - - atomic_inc(&host_sleep_count); + for (;;) { + ret = os_read_file(random_fd, buf, max); + if (block && ret == -EAGAIN) { add_sigio_fd(random_fd); - add_wait_queue(&host_read_wait, &wait); - set_current_state(TASK_INTERRUPTIBLE); + ret = wait_for_completion_killable(&have_data); - schedule(); - remove_wait_queue(&host_read_wait, &wait); + ignore_sigio_fd(random_fd); + deactivate_fd(random_fd, RANDOM_IRQ); - if (atomic_dec_and_test(&host_sleep_count)) { - ignore_sigio_fd(random_fd); - deactivate_fd(random_fd, RANDOM_IRQ); - } + if (ret < 0) + break; + } else { + break; } - else - return n; - - if (signal_pending (current)) - return ret ? : -ERESTARTSYS; } - return ret; -} -static const struct file_operations rng_chrdev_ops = { - .owner = THIS_MODULE, - .open = rng_dev_open, - .read = rng_dev_read, - .llseek = noop_llseek, -}; - -/* rng_init shouldn't be called more than once at boot time */ -static struct miscdevice rng_miscdev = { - HWRNG_MINOR, - RNG_MODULE_NAME, - &rng_chrdev_ops, -}; + return ret != -EAGAIN ? ret : 0; +} static irqreturn_t random_interrupt(int irq, void *data) { - wake_up(&host_read_wait); + complete(&have_data); return IRQ_HANDLED; } @@ -126,18 +74,19 @@ goto out; random_fd = err; - err = um_request_irq(RANDOM_IRQ, random_fd, IRQ_READ, random_interrupt, 0, "random", NULL); if (err) goto err_out_cleanup_hw; sigio_broken(random_fd, 1); + hwrng.name = RNG_MODULE_NAME; + hwrng.read = rng_dev_read; + hwrng.quality = 1024; - err = misc_register (&rng_miscdev); + err = hwrng_register(&hwrng); if (err) { - printk (KERN_ERR RNG_MODULE_NAME ": misc device register " - "failed\n"); + pr_err(RNG_MODULE_NAME " registering failed (%d)\n", err); goto err_out_cleanup_hw; } out: @@ -161,8 +110,8 @@ static void __exit rng_cleanup(void) { + hwrng_unregister(&hwrng); os_close_file(random_fd); - misc_deregister (&rng_miscdev); } module_init (rng_init); --- linux-5.8.0.orig/arch/um/drivers/ubd_kern.c +++ linux-5.8.0/arch/um/drivers/ubd_kern.c @@ -47,18 +47,25 @@ /* Max request size is determined by sector mask - 32K */ #define UBD_MAX_REQUEST (8 * sizeof(long)) +struct io_desc { + char *buffer; + unsigned long length; + unsigned long sector_mask; + unsigned long long cow_offset; + unsigned long bitmap_words[2]; +}; + struct io_thread_req { struct request *req; int fds[2]; unsigned long offsets[2]; unsigned long long offset; - unsigned long length; - char *buffer; int sectorsize; - unsigned long sector_mask; - unsigned long long cow_offset; - unsigned long bitmap_words[2]; int error; + + int desc_cnt; + /* io_desc has to be the last element of the struct */ + struct io_desc io_desc[]; }; @@ -525,12 +532,7 @@ blk_queue_max_write_zeroes_sectors(io_req->req->q, 0); blk_queue_flag_clear(QUEUE_FLAG_DISCARD, io_req->req->q); } - if ((io_req->error) || (io_req->buffer == NULL)) - blk_mq_end_request(io_req->req, io_req->error); - else { - if (!blk_update_request(io_req->req, io_req->error, io_req->length)) - __blk_mq_end_request(io_req->req, io_req->error); - } + blk_mq_end_request(io_req->req, io_req->error); kfree(io_req); } } @@ -946,6 +948,7 @@ blk_queue_write_cache(ubd_dev->queue, true, false); blk_queue_max_segments(ubd_dev->queue, MAX_SG); + blk_queue_segment_boundary(ubd_dev->queue, PAGE_SIZE - 1); err = ubd_disk_register(UBD_MAJOR, ubd_dev->size, n, &ubd_gendisk[n]); if(err){ *error_out = "Failed to register device"; @@ -1289,37 +1292,74 @@ *cow_offset += bitmap_offset; } -static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, +static void cowify_req(struct io_thread_req *req, struct io_desc *segment, + unsigned long offset, unsigned long *bitmap, __u64 bitmap_offset, __u64 bitmap_len) { - __u64 sector = req->offset >> SECTOR_SHIFT; + __u64 sector = offset >> SECTOR_SHIFT; int i; - if (req->length > (sizeof(req->sector_mask) * 8) << SECTOR_SHIFT) + if (segment->length > (sizeof(segment->sector_mask) * 8) << SECTOR_SHIFT) panic("Operation too long"); if (req_op(req->req) == REQ_OP_READ) { - for (i = 0; i < req->length >> SECTOR_SHIFT; i++) { + for (i = 0; i < segment->length >> SECTOR_SHIFT; i++) { if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) ubd_set_bit(i, (unsigned char *) - &req->sector_mask); + &segment->sector_mask); } + } else { + cowify_bitmap(offset, segment->length, &segment->sector_mask, + &segment->cow_offset, bitmap, bitmap_offset, + segment->bitmap_words, bitmap_len); } - else cowify_bitmap(req->offset, req->length, &req->sector_mask, - &req->cow_offset, bitmap, bitmap_offset, - req->bitmap_words, bitmap_len); } -static int ubd_queue_one_vec(struct blk_mq_hw_ctx *hctx, struct request *req, - u64 off, struct bio_vec *bvec) +static void ubd_map_req(struct ubd *dev, struct io_thread_req *io_req, + struct request *req) +{ + struct bio_vec bvec; + struct req_iterator iter; + int i = 0; + unsigned long byte_offset = io_req->offset; + int op = req_op(req); + + if (op == REQ_OP_WRITE_ZEROES || op == REQ_OP_DISCARD) { + io_req->io_desc[0].buffer = NULL; + io_req->io_desc[0].length = blk_rq_bytes(req); + } else { + rq_for_each_segment(bvec, req, iter) { + BUG_ON(i >= io_req->desc_cnt); + + io_req->io_desc[i].buffer = + page_address(bvec.bv_page) + bvec.bv_offset; + io_req->io_desc[i].length = bvec.bv_len; + i++; + } + } + + if (dev->cow.file) { + for (i = 0; i < io_req->desc_cnt; i++) { + cowify_req(io_req, &io_req->io_desc[i], byte_offset, + dev->cow.bitmap, dev->cow.bitmap_offset, + dev->cow.bitmap_len); + byte_offset += io_req->io_desc[i].length; + } + + } +} + +static struct io_thread_req *ubd_alloc_req(struct ubd *dev, struct request *req, + int desc_cnt) { - struct ubd *dev = hctx->queue->queuedata; struct io_thread_req *io_req; - int ret; + int i; - io_req = kmalloc(sizeof(struct io_thread_req), GFP_ATOMIC); + io_req = kmalloc(sizeof(*io_req) + + (desc_cnt * sizeof(struct io_desc)), + GFP_ATOMIC); if (!io_req) - return -ENOMEM; + return NULL; io_req->req = req; if (dev->cow.file) @@ -1327,26 +1367,41 @@ else io_req->fds[0] = dev->fd; io_req->error = 0; - - if (bvec != NULL) { - io_req->buffer = page_address(bvec->bv_page) + bvec->bv_offset; - io_req->length = bvec->bv_len; - } else { - io_req->buffer = NULL; - io_req->length = blk_rq_bytes(req); - } - io_req->sectorsize = SECTOR_SIZE; io_req->fds[1] = dev->fd; - io_req->cow_offset = -1; - io_req->offset = off; - io_req->sector_mask = 0; + io_req->offset = (u64) blk_rq_pos(req) << SECTOR_SHIFT; io_req->offsets[0] = 0; io_req->offsets[1] = dev->cow.data_offset; - if (dev->cow.file) - cowify_req(io_req, dev->cow.bitmap, - dev->cow.bitmap_offset, dev->cow.bitmap_len); + for (i = 0 ; i < desc_cnt; i++) { + io_req->io_desc[i].sector_mask = 0; + io_req->io_desc[i].cow_offset = -1; + } + + return io_req; +} + +static int ubd_submit_request(struct ubd *dev, struct request *req) +{ + int segs = 0; + struct io_thread_req *io_req; + int ret; + int op = req_op(req); + + if (op == REQ_OP_FLUSH) + segs = 0; + else if (op == REQ_OP_WRITE_ZEROES || op == REQ_OP_DISCARD) + segs = 1; + else + segs = blk_rq_nr_phys_segments(req); + + io_req = ubd_alloc_req(dev, req, segs); + if (!io_req) + return -ENOMEM; + + io_req->desc_cnt = segs; + if (segs) + ubd_map_req(dev, io_req, req); ret = os_write_file(thread_fd, &io_req, sizeof(io_req)); if (ret != sizeof(io_req)) { @@ -1357,22 +1412,6 @@ return ret; } -static int queue_rw_req(struct blk_mq_hw_ctx *hctx, struct request *req) -{ - struct req_iterator iter; - struct bio_vec bvec; - int ret; - u64 off = (u64)blk_rq_pos(req) << SECTOR_SHIFT; - - rq_for_each_segment(bvec, req, iter) { - ret = ubd_queue_one_vec(hctx, req, off, &bvec); - if (ret < 0) - return ret; - off += bvec.bv_len; - } - return 0; -} - static blk_status_t ubd_queue_rq(struct blk_mq_hw_ctx *hctx, const struct blk_mq_queue_data *bd) { @@ -1385,17 +1424,12 @@ spin_lock_irq(&ubd_dev->lock); switch (req_op(req)) { - /* operations with no lentgth/offset arguments */ case REQ_OP_FLUSH: - ret = ubd_queue_one_vec(hctx, req, 0, NULL); - break; case REQ_OP_READ: case REQ_OP_WRITE: - ret = queue_rw_req(hctx, req); - break; case REQ_OP_DISCARD: case REQ_OP_WRITE_ZEROES: - ret = ubd_queue_one_vec(hctx, req, (u64)blk_rq_pos(req) << 9, NULL); + ret = ubd_submit_request(ubd_dev, req); break; default: WARN_ON_ONCE(1); @@ -1483,22 +1517,22 @@ * will result in unpredictable behaviour and/or crashes. */ -static int update_bitmap(struct io_thread_req *req) +static int update_bitmap(struct io_thread_req *req, struct io_desc *segment) { int n; - if(req->cow_offset == -1) + if (segment->cow_offset == -1) return map_error(0); - n = os_pwrite_file(req->fds[1], &req->bitmap_words, - sizeof(req->bitmap_words), req->cow_offset); - if (n != sizeof(req->bitmap_words)) + n = os_pwrite_file(req->fds[1], &segment->bitmap_words, + sizeof(segment->bitmap_words), segment->cow_offset); + if (n != sizeof(segment->bitmap_words)) return map_error(-n); return map_error(0); } -static void do_io(struct io_thread_req *req) +static void do_io(struct io_thread_req *req, struct io_desc *desc) { char *buf = NULL; unsigned long len; @@ -1513,21 +1547,20 @@ return; } - nsectors = req->length / req->sectorsize; + nsectors = desc->length / req->sectorsize; start = 0; do { - bit = ubd_test_bit(start, (unsigned char *) &req->sector_mask); + bit = ubd_test_bit(start, (unsigned char *) &desc->sector_mask); end = start; while((end < nsectors) && - (ubd_test_bit(end, (unsigned char *) - &req->sector_mask) == bit)) + (ubd_test_bit(end, (unsigned char *) &desc->sector_mask) == bit)) end++; off = req->offset + req->offsets[bit] + start * req->sectorsize; len = (end - start) * req->sectorsize; - if (req->buffer != NULL) - buf = &req->buffer[start * req->sectorsize]; + if (desc->buffer != NULL) + buf = &desc->buffer[start * req->sectorsize]; switch (req_op(req->req)) { case REQ_OP_READ: @@ -1567,7 +1600,8 @@ start = end; } while(start < nsectors); - req->error = update_bitmap(req); + req->offset += len; + req->error = update_bitmap(req, desc); } /* Changed in start_io_thread, which is serialized by being called only @@ -1600,8 +1634,13 @@ } for (count = 0; count < n/sizeof(struct io_thread_req *); count++) { + struct io_thread_req *req = (*io_req_buffer)[count]; + int i; + io_count++; - do_io((*io_req_buffer)[count]); + for (i = 0; !req->error && i < req->desc_cnt; i++) + do_io(req, &(req->io_desc[i])); + } written = 0; --- linux-5.8.0.orig/arch/um/drivers/vector_kern.c +++ linux-5.8.0/arch/um/drivers/vector_kern.c @@ -1403,7 +1403,7 @@ kfree(vp->bpf->filter); vp->bpf->filter = NULL; } else { - vp->bpf = kmalloc(sizeof(struct sock_fprog), GFP_KERNEL); + vp->bpf = kmalloc(sizeof(struct sock_fprog), GFP_ATOMIC); if (vp->bpf == NULL) { netdev_err(dev, "failed to allocate memory for firmware\n"); goto flash_fail; @@ -1415,7 +1415,7 @@ if (request_firmware(&fw, efl->data, &vdevice->pdev.dev)) goto flash_fail; - vp->bpf->filter = kmemdup(fw->data, fw->size, GFP_KERNEL); + vp->bpf->filter = kmemdup(fw->data, fw->size, GFP_ATOMIC); if (!vp->bpf->filter) goto free_buffer; --- linux-5.8.0.orig/arch/um/drivers/virtio_uml.c +++ linux-5.8.0/arch/um/drivers/virtio_uml.c @@ -1083,6 +1083,7 @@ } os_close_file(vu_dev->sock); + kfree(vu_dev); } /* Platform device */ @@ -1096,7 +1097,7 @@ if (!pdata) return -EINVAL; - vu_dev = devm_kzalloc(&pdev->dev, sizeof(*vu_dev), GFP_KERNEL); + vu_dev = kzalloc(sizeof(*vu_dev), GFP_KERNEL); if (!vu_dev) return -ENOMEM; --- linux-5.8.0.orig/arch/um/drivers/xterm.c +++ linux-5.8.0/arch/um/drivers/xterm.c @@ -18,6 +18,7 @@ struct xterm_chan { int pid; int helper_pid; + int chan_fd; char *title; int device; int raw; @@ -33,6 +34,7 @@ return NULL; *data = ((struct xterm_chan) { .pid = -1, .helper_pid = -1, + .chan_fd = -1, .device = device, .title = opts->xterm_title, .raw = opts->raw } ); @@ -149,6 +151,7 @@ goto out_kill; } + data->chan_fd = fd; new = xterm_fd(fd, &data->helper_pid); if (new < 0) { err = new; @@ -206,6 +209,8 @@ os_kill_process(data->helper_pid, 0); data->helper_pid = -1; + if (data->chan_fd != -1) + os_close_file(data->chan_fd); os_close_file(fd); } --- linux-5.8.0.orig/arch/um/include/shared/skas/mm_id.h +++ linux-5.8.0/arch/um/include/shared/skas/mm_id.h @@ -12,6 +12,7 @@ int pid; } u; unsigned long stack; + int kill; }; #endif --- linux-5.8.0.orig/arch/um/kernel/sigio.c +++ linux-5.8.0/arch/um/kernel/sigio.c @@ -35,14 +35,14 @@ } /* These are called from os-Linux/sigio.c to protect its pollfds arrays. */ -static DEFINE_SPINLOCK(sigio_spinlock); +static DEFINE_MUTEX(sigio_mutex); void sigio_lock(void) { - spin_lock(&sigio_spinlock); + mutex_lock(&sigio_mutex); } void sigio_unlock(void) { - spin_unlock(&sigio_spinlock); + mutex_unlock(&sigio_mutex); } --- linux-5.8.0.orig/arch/um/kernel/time.c +++ linux-5.8.0/arch/um/kernel/time.c @@ -70,13 +70,17 @@ * read of the message and write of the ACK. */ if (mode != TTMH_READ) { + bool disabled = irqs_disabled(); + + BUG_ON(mode == TTMH_IDLE && !disabled); + + if (disabled) + local_irq_enable(); while (os_poll(1, &time_travel_ext_fd) != 0) { - if (mode == TTMH_IDLE) { - BUG_ON(!irqs_disabled()); - local_irq_enable(); - local_irq_disable(); - } + /* nothing */ } + if (disabled) + local_irq_disable(); } ret = os_read_file(time_travel_ext_fd, msg, sizeof(*msg)); @@ -255,11 +259,6 @@ struct time_travel_event *tmp; bool inserted = false; - if (WARN(time_travel_mode == TT_MODE_BASIC && - e != &time_travel_timer_event, - "only timer events can be handled in basic mode")) - return; - if (e->pending) return; --- linux-5.8.0.orig/arch/um/kernel/tlb.c +++ linux-5.8.0/arch/um/kernel/tlb.c @@ -125,6 +125,9 @@ struct host_vm_op *last; int fd = -1, ret = 0; + if (virt + len > STUB_START && virt < STUB_END) + return -EINVAL; + if (hvc->userspace) fd = phys_mapping(phys, &offset); else @@ -162,7 +165,7 @@ struct host_vm_op *last; int ret = 0; - if ((addr >= STUB_START) && (addr < STUB_END)) + if (addr + len > STUB_START && addr < STUB_END) return -EINVAL; if (hvc->index != 0) { @@ -192,6 +195,9 @@ struct host_vm_op *last; int ret = 0; + if (addr + len > STUB_START && addr < STUB_END) + return -EINVAL; + if (hvc->index != 0) { last = &hvc->ops[hvc->index - 1]; if ((last->type == MPROTECT) && @@ -346,12 +352,11 @@ /* This is not an else because ret is modified above */ if (ret) { + struct mm_id *mm_idp = ¤t->mm->context.id; + printk(KERN_ERR "fix_range_common: failed, killing current " "process: %d\n", task_tgid_vnr(current)); - /* We are under mmap_lock, release it such that current can terminate */ - mmap_write_unlock(current->mm); - force_sig(SIGKILL); - do_signal(¤t->thread.regs); + mm_idp->kill = 1; } } @@ -472,6 +477,10 @@ struct mm_id *mm_id; address &= PAGE_MASK; + + if (address >= STUB_START && address < STUB_END) + goto kill; + pgd = pgd_offset(mm, address); if (!pgd_present(*pgd)) goto kill; --- linux-5.8.0.orig/arch/um/os-Linux/irq.c +++ linux-5.8.0/arch/um/os-Linux/irq.c @@ -48,7 +48,7 @@ int os_event_mask(int irq_type) { if (irq_type == IRQ_READ) - return EPOLLIN | EPOLLPRI; + return EPOLLIN | EPOLLPRI | EPOLLERR | EPOLLHUP | EPOLLRDHUP; if (irq_type == IRQ_WRITE) return EPOLLOUT; return 0; --- linux-5.8.0.orig/arch/um/os-Linux/skas/process.c +++ linux-5.8.0/arch/um/os-Linux/skas/process.c @@ -249,6 +249,7 @@ } int userspace_pid[NR_CPUS]; +int kill_userspace_mm[NR_CPUS]; /** * start_userspace() - prepare a new userspace process @@ -342,6 +343,8 @@ interrupt_end(); while (1) { + if (kill_userspace_mm[0]) + fatal_sigsegv(); /* * This can legitimately fail if the process loads a @@ -650,4 +653,5 @@ void __switch_mm(struct mm_id *mm_idp) { userspace_pid[0] = mm_idp->u.pid; + kill_userspace_mm[0] = mm_idp->kill; } --- linux-5.8.0.orig/arch/um/os-Linux/umid.c +++ linux-5.8.0/arch/um/os-Linux/umid.c @@ -137,20 +137,13 @@ { char pid[sizeof("nnnnn\0")], *end, *file; int dead, fd, p, n, err; - size_t filelen; + size_t filelen = strlen(dir) + sizeof("/pid") + 1; - err = asprintf(&file, "%s/pid", dir); - if (err < 0) - return 0; + file = malloc(filelen); + if (!file) + return -ENOMEM; - filelen = strlen(file); - - n = snprintf(file, filelen, "%s/pid", dir); - if (n >= filelen) { - printk(UM_KERN_ERR "is_umdir_used - pid filename too long\n"); - err = -E2BIG; - goto out; - } + snprintf(file, filelen, "%s/pid", dir); dead = 0; fd = open(file, O_RDONLY); --- linux-5.8.0.orig/arch/x86/Kconfig +++ linux-5.8.0/arch/x86/Kconfig @@ -18,6 +18,7 @@ select MODULES_USE_ELF_REL select OLD_SIGACTION select GENERIC_VDSO_32 + select ARCH_SPLIT_ARG64 config X86_64 def_bool y @@ -75,7 +76,7 @@ select ARCH_HAS_PTE_DEVMAP if X86_64 select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64 - select ARCH_HAS_UACCESS_MCSAFE if X86_64 && X86_MCE + select ARCH_HAS_COPY_MC if X86_64 select ARCH_HAS_SET_MEMORY select ARCH_HAS_SET_DIRECT_MAP select ARCH_HAS_STRICT_KERNEL_RWX --- linux-5.8.0.orig/arch/x86/Kconfig.debug +++ linux-5.8.0/arch/x86/Kconfig.debug @@ -59,7 +59,7 @@ You should normally say N here, unless you want to debug early crashes or need a very simple printk logging facility. -config MCSAFE_TEST +config COPY_MC_TEST def_bool n config EFI_PGT_DUMP --- linux-5.8.0.orig/arch/x86/Makefile +++ linux-5.8.0/arch/x86/Makefile @@ -34,7 +34,7 @@ REALMODE_CFLAGS := $(M16_CFLAGS) -g -Os -DDISABLE_BRANCH_PROFILING \ -Wall -Wstrict-prototypes -march=i386 -mregparm=3 \ -fno-strict-aliasing -fomit-frame-pointer -fno-pic \ - -mno-mmx -mno-sse + -mno-mmx -mno-sse $(call cc-option,-fcf-protection=none) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -ffreestanding) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -fno-stack-protector) @@ -61,6 +61,9 @@ KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow KBUILD_CFLAGS += $(call cc-option,-mno-avx,) +# Intel CET isn't enabled in the kernel +KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none) + ifeq ($(CONFIG_X86_32),y) BITS := 32 UTS_MACHINE := i386 --- linux-5.8.0.orig/arch/x86/boot/compressed/Makefile +++ linux-5.8.0/arch/x86/boot/compressed/Makefile @@ -42,6 +42,8 @@ KBUILD_CFLAGS += -Wno-pointer-sign KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables +# Disable relocation relaxation in case the link is not PIE. +KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no) KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ GCOV_PROFILE := n --- linux-5.8.0.orig/arch/x86/boot/compressed/kaslr.c +++ linux-5.8.0/arch/x86/boot/compressed/kaslr.c @@ -94,8 +94,11 @@ static bool memmap_too_large; -/* Store memory limit specified by "mem=nn[KMG]" or "memmap=nn[KMG]" */ -static unsigned long long mem_limit = ULLONG_MAX; +/* + * Store memory limit: MAXMEM on 64-bit and KERNEL_IMAGE_SIZE on 32-bit. + * It may be reduced by "mem=nn[KMG]" or "memmap=nn[KMG]" command line options. + */ +static unsigned long long mem_limit; /* Number of immovable memory regions */ static int num_immovable_mem; @@ -221,7 +224,7 @@ if (start == 0) { /* Store the specified memory limit if size > 0 */ - if (size > 0) + if (size > 0 && size < mem_limit) mem_limit = size; continue; @@ -309,7 +312,8 @@ if (mem_size == 0) goto out; - mem_limit = mem_size; + if (mem_size < mem_limit) + mem_limit = mem_size; } else if (!strcmp(param, "efi_fake_mem")) { mem_avoid_memmap(PARSE_EFI, val); } @@ -321,7 +325,9 @@ } /* - * In theory, KASLR can put the kernel anywhere in the range of [16M, 64T). + * In theory, KASLR can put the kernel anywhere in the range of [16M, MAXMEM) + * on 64-bit, and [16M, KERNEL_IMAGE_SIZE) on 32-bit. + * * The mem_avoid array is used to store the ranges that need to be avoided * when KASLR searches for an appropriate random address. We must avoid any * regions that are unsafe to overlap with during decompression, and other @@ -621,10 +627,6 @@ unsigned long start_orig, end; struct mem_vector cur_entry; - /* On 32-bit, ignore entries entirely above our maximum. */ - if (IS_ENABLED(CONFIG_X86_32) && entry->start >= KERNEL_IMAGE_SIZE) - return; - /* Ignore entries entirely below our minimum. */ if (entry->start + entry->size < minimum) return; @@ -657,11 +659,6 @@ /* Reduce size by any delta from the original address. */ region.size -= region.start - start_orig; - /* On 32-bit, reduce region size to fit within max size. */ - if (IS_ENABLED(CONFIG_X86_32) && - region.start + region.size > KERNEL_IMAGE_SIZE) - region.size = KERNEL_IMAGE_SIZE - region.start; - /* Return if region can't contain decompressed kernel */ if (region.size < image_size) return; @@ -846,15 +843,16 @@ static unsigned long find_random_phys_addr(unsigned long minimum, unsigned long image_size) { + /* Bail out early if it's impossible to succeed. */ + if (minimum + image_size > mem_limit) + return 0; + /* Check if we had too many memmaps. */ if (memmap_too_large) { debug_putstr("Aborted memory entries scan (more than 4 memmap= args)!\n"); return 0; } - /* Make sure minimum is aligned. */ - minimum = ALIGN(minimum, CONFIG_PHYSICAL_ALIGN); - if (process_efi_entries(minimum, image_size)) return slots_fetch_random(); @@ -867,8 +865,6 @@ { unsigned long slots, random_addr; - /* Make sure minimum is aligned. */ - minimum = ALIGN(minimum, CONFIG_PHYSICAL_ALIGN); /* Align image_size for easy slot calculations. */ image_size = ALIGN(image_size, CONFIG_PHYSICAL_ALIGN); @@ -915,6 +911,11 @@ /* Prepare to add new identity pagetables on demand. */ initialize_identity_maps(); + if (IS_ENABLED(CONFIG_X86_32)) + mem_limit = KERNEL_IMAGE_SIZE; + else + mem_limit = MAXMEM; + /* Record the various known unsafe memory ranges. */ mem_avoid_init(input, input_size, *output); @@ -924,6 +925,8 @@ * location: */ min_addr = min(*output, 512UL << 20); + /* Make sure minimum is aligned. */ + min_addr = ALIGN(min_addr, CONFIG_PHYSICAL_ALIGN); /* Walk available memory entries to find a random address. */ random_addr = find_random_phys_addr(min_addr, output_size); --- linux-5.8.0.orig/arch/x86/boot/compressed/mem_encrypt.S +++ linux-5.8.0/arch/x86/boot/compressed/mem_encrypt.S @@ -81,6 +81,19 @@ bts %rax, sme_me_mask(%rip) /* Create the encryption mask */ + /* + * Read MSR_AMD64_SEV again and store it to sev_status. Can't do this in + * get_sev_encryption_bit() because this function is 32-bit code and + * shared between 64-bit and 32-bit boot path. + */ + movl $MSR_AMD64_SEV, %ecx /* Read the SEV MSR */ + rdmsr + + /* Store MSR value in sev_status */ + shlq $32, %rdx + orq %rdx, %rax + movq %rax, sev_status(%rip) + .Lno_sev_mask: movq %rbp, %rsp /* Restore original stack pointer */ @@ -96,5 +109,6 @@ #ifdef CONFIG_AMD_MEM_ENCRYPT .balign 8 -SYM_DATA(sme_me_mask, .quad 0) +SYM_DATA(sme_me_mask, .quad 0) +SYM_DATA(sev_status, .quad 0) #endif --- linux-5.8.0.orig/arch/x86/boot/compressed/pgtable_64.c +++ linux-5.8.0/arch/x86/boot/compressed/pgtable_64.c @@ -5,15 +5,6 @@ #include "pgtable.h" #include "../string.h" -/* - * __force_order is used by special_insns.h asm code to force instruction - * serialization. - * - * It is not referenced from the code, but GCC < 5 with -fPIE would fail - * due to an undefined symbol. Define it to make these ancient GCCs work. - */ -unsigned long __force_order; - #define BIOS_START_MIN 0x20000U /* 128K, less than this is insane */ #define BIOS_START_MAX 0x9f000U /* 640K, absolute maximum */ --- linux-5.8.0.orig/arch/x86/boot/video-vga.c +++ linux-5.8.0/arch/x86/boot/video-vga.c @@ -188,7 +188,7 @@ vga_set_vertical_end(60*8); } -static int vga_set_mode(struct mode_info *mode) +static int __attribute__((optimize("no-jump-tables"))) vga_set_mode(struct mode_info *mode) { /* Set the basic mode */ vga_set_basic_mode(); --- linux-5.8.0.orig/arch/x86/configs/i386_defconfig +++ linux-5.8.0/arch/x86/configs/i386_defconfig @@ -202,7 +202,6 @@ CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set --- linux-5.8.0.orig/arch/x86/configs/x86_64_defconfig +++ linux-5.8.0/arch/x86/configs/x86_64_defconfig @@ -197,7 +197,6 @@ CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set --- linux-5.8.0.orig/arch/x86/crypto/aes_ctrby8_avx-x86_64.S +++ linux-5.8.0/arch/x86/crypto/aes_ctrby8_avx-x86_64.S @@ -127,10 +127,6 @@ /* generate a unique variable for ddq_add_x */ -.macro setddq n - var_ddq_add = ddq_add_\n -.endm - /* generate a unique variable for xmm register */ .macro setxdata n var_xdata = %xmm\n @@ -140,9 +136,7 @@ .macro club name, id .altmacro - .if \name == DDQ_DATA - setddq %\id - .elseif \name == XDATA + .if \name == XDATA setxdata %\id .endif .noaltmacro @@ -165,9 +159,8 @@ .set i, 1 .rept (by - 1) - club DDQ_DATA, i club XDATA, i - vpaddq var_ddq_add(%rip), xcounter, var_xdata + vpaddq (ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata vptest ddq_low_msk(%rip), var_xdata jnz 1f vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata @@ -180,8 +173,7 @@ vmovdqa 1*16(p_keys), xkeyA vpxor xkey0, xdata0, xdata0 - club DDQ_DATA, by - vpaddq var_ddq_add(%rip), xcounter, xcounter + vpaddq (ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter vptest ddq_low_msk(%rip), xcounter jnz 1f vpaddq ddq_high_add_1(%rip), xcounter, xcounter --- linux-5.8.0.orig/arch/x86/crypto/aesni-intel_asm.S +++ linux-5.8.0/arch/x86/crypto/aesni-intel_asm.S @@ -266,7 +266,7 @@ PSHUFB_XMM %xmm2, %xmm0 movdqu %xmm0, CurCount(%arg2) # ctx_data.current_counter = iv - PRECOMPUTE \SUBKEY, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7, + PRECOMPUTE \SUBKEY, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7 movdqu HashKey(%arg2), %xmm13 CALC_AAD_HASH %xmm13, \AAD, \AADLEN, %xmm0, %xmm1, %xmm2, %xmm3, \ @@ -319,7 +319,7 @@ # Main loop - Encrypt/Decrypt remaining blocks - cmp $0, %r13 + test %r13, %r13 je _zero_cipher_left_\@ sub $64, %r13 je _four_cipher_left_\@ @@ -438,7 +438,7 @@ mov PBlockLen(%arg2), %r12 - cmp $0, %r12 + test %r12, %r12 je _partial_done\@ GHASH_MUL %xmm8, %xmm13, %xmm9, %xmm10, %xmm11, %xmm5, %xmm6 @@ -475,7 +475,7 @@ add $8, %r10 sub $8, %r11 psrldq $8, %xmm0 - cmp $0, %r11 + test %r11, %r11 je _return_T_done_\@ _T_4_\@: movd %xmm0, %eax @@ -483,7 +483,7 @@ add $4, %r10 sub $4, %r11 psrldq $4, %xmm0 - cmp $0, %r11 + test %r11, %r11 je _return_T_done_\@ _T_123_\@: movd %xmm0, %eax @@ -620,7 +620,7 @@ /* read the last <16B of AAD */ _get_AAD_rest\@: - cmp $0, %r11 + test %r11, %r11 je _get_AAD_done\@ READ_PARTIAL_BLOCK %r10, %r11, \TMP1, \TMP7 @@ -641,7 +641,7 @@ .macro PARTIAL_BLOCK CYPH_PLAIN_OUT PLAIN_CYPH_IN PLAIN_CYPH_LEN DATA_OFFSET \ AAD_HASH operation mov PBlockLen(%arg2), %r13 - cmp $0, %r13 + test %r13, %r13 je _partial_block_done_\@ # Leave Macro if no partial blocks # Read in input data without over reading cmp $16, \PLAIN_CYPH_LEN @@ -693,7 +693,7 @@ PSHUFB_XMM %xmm2, %xmm3 pxor %xmm3, \AAD_HASH - cmp $0, %r10 + test %r10, %r10 jl _partial_incomplete_1_\@ # GHASH computation for the last <16 Byte block @@ -728,7 +728,7 @@ PSHUFB_XMM %xmm2, %xmm9 pxor %xmm9, \AAD_HASH - cmp $0, %r10 + test %r10, %r10 jl _partial_incomplete_2_\@ # GHASH computation for the last <16 Byte block @@ -748,7 +748,7 @@ PSHUFB_XMM %xmm2, %xmm9 .endif # output encrypted Bytes - cmp $0, %r10 + test %r10, %r10 jl _partial_fill_\@ mov %r13, %r12 mov $16, %r13 @@ -978,7 +978,7 @@ * arg1, %arg3, %arg4 are used as pointers only, not modified * %r11 is the data offset value */ -.macro GHASH_4_ENCRYPT_4_PARALLEL_ENC TMP1 TMP2 TMP3 TMP4 TMP5 \ +.macro GHASH_4_ENCRYPT_4_PARALLEL_enc TMP1 TMP2 TMP3 TMP4 TMP5 \ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation movdqa \XMM1, \XMM5 @@ -1186,7 +1186,7 @@ * arg1, %arg3, %arg4 are used as pointers only, not modified * %r11 is the data offset value */ -.macro GHASH_4_ENCRYPT_4_PARALLEL_DEC TMP1 TMP2 TMP3 TMP4 TMP5 \ +.macro GHASH_4_ENCRYPT_4_PARALLEL_dec TMP1 TMP2 TMP3 TMP4 TMP5 \ TMP6 XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 XMM8 operation movdqa \XMM1, \XMM5 @@ -2716,25 +2716,18 @@ pxor CTR, IV; /* - * void aesni_xts_crypt8(const struct crypto_aes_ctx *ctx, u8 *dst, - * const u8 *src, bool enc, le128 *iv) + * void aesni_xts_encrypt(const struct crypto_aes_ctx *ctx, u8 *dst, + * const u8 *src, unsigned int len, le128 *iv) */ -SYM_FUNC_START(aesni_xts_crypt8) +SYM_FUNC_START(aesni_xts_encrypt) FRAME_BEGIN - cmpb $0, %cl - movl $0, %ecx - movl $240, %r10d - leaq _aesni_enc4, %r11 - leaq _aesni_dec4, %rax - cmovel %r10d, %ecx - cmoveq %rax, %r11 movdqa .Lgf128mul_x_ble_mask, GF128MUL_MASK movups (IVP), IV mov 480(KEYP), KLEN - addq %rcx, KEYP +.Lxts_enc_loop4: movdqa IV, STATE1 movdqu 0x00(INP), INC pxor INC, STATE1 @@ -2758,71 +2751,103 @@ pxor INC, STATE4 movdqu IV, 0x30(OUTP) - CALL_NOSPEC r11 + call _aesni_enc4 movdqu 0x00(OUTP), INC pxor INC, STATE1 movdqu STATE1, 0x00(OUTP) - _aesni_gf128mul_x_ble() - movdqa IV, STATE1 - movdqu 0x40(INP), INC - pxor INC, STATE1 - movdqu IV, 0x40(OUTP) - movdqu 0x10(OUTP), INC pxor INC, STATE2 movdqu STATE2, 0x10(OUTP) - _aesni_gf128mul_x_ble() - movdqa IV, STATE2 - movdqu 0x50(INP), INC - pxor INC, STATE2 - movdqu IV, 0x50(OUTP) - movdqu 0x20(OUTP), INC pxor INC, STATE3 movdqu STATE3, 0x20(OUTP) - _aesni_gf128mul_x_ble() - movdqa IV, STATE3 - movdqu 0x60(INP), INC - pxor INC, STATE3 - movdqu IV, 0x60(OUTP) - movdqu 0x30(OUTP), INC pxor INC, STATE4 movdqu STATE4, 0x30(OUTP) _aesni_gf128mul_x_ble() - movdqa IV, STATE4 - movdqu 0x70(INP), INC - pxor INC, STATE4 - movdqu IV, 0x70(OUTP) - _aesni_gf128mul_x_ble() + add $64, INP + add $64, OUTP + sub $64, LEN + ja .Lxts_enc_loop4 + movups IV, (IVP) - CALL_NOSPEC r11 + FRAME_END + ret +SYM_FUNC_END(aesni_xts_encrypt) + +/* + * void aesni_xts_decrypt(const struct crypto_aes_ctx *ctx, u8 *dst, + * const u8 *src, unsigned int len, le128 *iv) + */ +SYM_FUNC_START(aesni_xts_decrypt) + FRAME_BEGIN + + movdqa .Lgf128mul_x_ble_mask, GF128MUL_MASK + movups (IVP), IV + + mov 480(KEYP), KLEN + add $240, KEYP - movdqu 0x40(OUTP), INC +.Lxts_dec_loop4: + movdqa IV, STATE1 + movdqu 0x00(INP), INC pxor INC, STATE1 - movdqu STATE1, 0x40(OUTP) + movdqu IV, 0x00(OUTP) - movdqu 0x50(OUTP), INC + _aesni_gf128mul_x_ble() + movdqa IV, STATE2 + movdqu 0x10(INP), INC + pxor INC, STATE2 + movdqu IV, 0x10(OUTP) + + _aesni_gf128mul_x_ble() + movdqa IV, STATE3 + movdqu 0x20(INP), INC + pxor INC, STATE3 + movdqu IV, 0x20(OUTP) + + _aesni_gf128mul_x_ble() + movdqa IV, STATE4 + movdqu 0x30(INP), INC + pxor INC, STATE4 + movdqu IV, 0x30(OUTP) + + call _aesni_dec4 + + movdqu 0x00(OUTP), INC + pxor INC, STATE1 + movdqu STATE1, 0x00(OUTP) + + movdqu 0x10(OUTP), INC pxor INC, STATE2 - movdqu STATE2, 0x50(OUTP) + movdqu STATE2, 0x10(OUTP) - movdqu 0x60(OUTP), INC + movdqu 0x20(OUTP), INC pxor INC, STATE3 - movdqu STATE3, 0x60(OUTP) + movdqu STATE3, 0x20(OUTP) - movdqu 0x70(OUTP), INC + movdqu 0x30(OUTP), INC pxor INC, STATE4 - movdqu STATE4, 0x70(OUTP) + movdqu STATE4, 0x30(OUTP) + + _aesni_gf128mul_x_ble() + + add $64, INP + add $64, OUTP + sub $64, LEN + ja .Lxts_dec_loop4 + + movups IV, (IVP) FRAME_END ret -SYM_FUNC_END(aesni_xts_crypt8) +SYM_FUNC_END(aesni_xts_decrypt) #endif --- linux-5.8.0.orig/arch/x86/crypto/aesni-intel_avx-x86_64.S +++ linux-5.8.0/arch/x86/crypto/aesni-intel_avx-x86_64.S @@ -370,7 +370,7 @@ _initial_blocks_encrypted\@: - cmp $0, %r13 + test %r13, %r13 je _zero_cipher_left\@ sub $128, %r13 @@ -529,7 +529,7 @@ vmovdqu HashKey(arg2), %xmm13 mov PBlockLen(arg2), %r12 - cmp $0, %r12 + test %r12, %r12 je _partial_done\@ #GHASH computation for the last <16 Byte block @@ -574,7 +574,7 @@ add $8, %r10 sub $8, %r11 vpsrldq $8, %xmm9, %xmm9 - cmp $0, %r11 + test %r11, %r11 je _return_T_done\@ _T_4\@: vmovd %xmm9, %eax @@ -582,7 +582,7 @@ add $4, %r10 sub $4, %r11 vpsrldq $4, %xmm9, %xmm9 - cmp $0, %r11 + test %r11, %r11 je _return_T_done\@ _T_123\@: vmovd %xmm9, %eax @@ -626,7 +626,7 @@ cmp $16, %r11 jge _get_AAD_blocks\@ vmovdqu \T8, \T7 - cmp $0, %r11 + test %r11, %r11 je _get_AAD_done\@ vpxor \T7, \T7, \T7 @@ -645,7 +645,7 @@ vpxor \T1, \T7, \T7 jmp _get_AAD_rest8\@ _get_AAD_rest4\@: - cmp $0, %r11 + test %r11, %r11 jle _get_AAD_rest0\@ mov (%r10), %eax movq %rax, \T1 @@ -750,7 +750,7 @@ .macro PARTIAL_BLOCK GHASH_MUL CYPH_PLAIN_OUT PLAIN_CYPH_IN PLAIN_CYPH_LEN DATA_OFFSET \ AAD_HASH ENC_DEC mov PBlockLen(arg2), %r13 - cmp $0, %r13 + test %r13, %r13 je _partial_block_done_\@ # Leave Macro if no partial blocks # Read in input data without over reading cmp $16, \PLAIN_CYPH_LEN @@ -802,7 +802,7 @@ vpshufb %xmm2, %xmm3, %xmm3 vpxor %xmm3, \AAD_HASH, \AAD_HASH - cmp $0, %r10 + test %r10, %r10 jl _partial_incomplete_1_\@ # GHASH computation for the last <16 Byte block @@ -837,7 +837,7 @@ vpshufb %xmm2, %xmm9, %xmm9 vpxor %xmm9, \AAD_HASH, \AAD_HASH - cmp $0, %r10 + test %r10, %r10 jl _partial_incomplete_2_\@ # GHASH computation for the last <16 Byte block @@ -857,7 +857,7 @@ vpshufb %xmm2, %xmm9, %xmm9 .endif # output encrypted Bytes - cmp $0, %r10 + test %r10, %r10 jl _partial_fill_\@ mov %r13, %r12 mov $16, %r13 --- linux-5.8.0.orig/arch/x86/crypto/aesni-intel_glue.c +++ linux-5.8.0/arch/x86/crypto/aesni-intel_glue.c @@ -97,6 +97,12 @@ #define AVX_GEN2_OPTSIZE 640 #define AVX_GEN4_OPTSIZE 4096 +asmlinkage void aesni_xts_encrypt(const struct crypto_aes_ctx *ctx, u8 *out, + const u8 *in, unsigned int len, u8 *iv); + +asmlinkage void aesni_xts_decrypt(const struct crypto_aes_ctx *ctx, u8 *out, + const u8 *in, unsigned int len, u8 *iv); + #ifdef CONFIG_X86_64 static void (*aesni_ctr_enc_tfm)(struct crypto_aes_ctx *ctx, u8 *out, @@ -104,9 +110,6 @@ asmlinkage void aesni_ctr_enc(struct crypto_aes_ctx *ctx, u8 *out, const u8 *in, unsigned int len, u8 *iv); -asmlinkage void aesni_xts_crypt8(const struct crypto_aes_ctx *ctx, u8 *out, - const u8 *in, bool enc, le128 *iv); - /* asmlinkage void aesni_gcm_enc() * void *ctx, AES Key schedule. Starts on a 16 byte boundary. * struct gcm_context_data. May be uninitialized. @@ -547,14 +550,14 @@ glue_xts_crypt_128bit_one(ctx, dst, src, iv, aesni_dec); } -static void aesni_xts_enc8(const void *ctx, u8 *dst, const u8 *src, le128 *iv) +static void aesni_xts_enc32(const void *ctx, u8 *dst, const u8 *src, le128 *iv) { - aesni_xts_crypt8(ctx, dst, src, true, iv); + aesni_xts_encrypt(ctx, dst, src, 32 * AES_BLOCK_SIZE, (u8 *)iv); } -static void aesni_xts_dec8(const void *ctx, u8 *dst, const u8 *src, le128 *iv) +static void aesni_xts_dec32(const void *ctx, u8 *dst, const u8 *src, le128 *iv) { - aesni_xts_crypt8(ctx, dst, src, false, iv); + aesni_xts_decrypt(ctx, dst, src, 32 * AES_BLOCK_SIZE, (u8 *)iv); } static const struct common_glue_ctx aesni_enc_xts = { @@ -562,8 +565,8 @@ .fpu_blocks_limit = 1, .funcs = { { - .num_blocks = 8, - .fn_u = { .xts = aesni_xts_enc8 } + .num_blocks = 32, + .fn_u = { .xts = aesni_xts_enc32 } }, { .num_blocks = 1, .fn_u = { .xts = aesni_xts_enc } @@ -575,8 +578,8 @@ .fpu_blocks_limit = 1, .funcs = { { - .num_blocks = 8, - .fn_u = { .xts = aesni_xts_dec8 } + .num_blocks = 32, + .fn_u = { .xts = aesni_xts_dec32 } }, { .num_blocks = 1, .fn_u = { .xts = aesni_xts_dec } @@ -686,7 +689,8 @@ struct crypto_aead *tfm = crypto_aead_reqtfm(req); unsigned long auth_tag_len = crypto_aead_authsize(tfm); const struct aesni_gcm_tfm_s *gcm_tfm = aesni_gcm_tfm; - struct gcm_context_data data AESNI_ALIGN_ATTR; + u8 databuf[sizeof(struct gcm_context_data) + (AESNI_ALIGN - 8)] __aligned(8); + struct gcm_context_data *data = PTR_ALIGN((void *)databuf, AESNI_ALIGN); struct scatter_walk dst_sg_walk = {}; unsigned long left = req->cryptlen; unsigned long len, srclen, dstlen; @@ -735,8 +739,7 @@ } kernel_fpu_begin(); - gcm_tfm->init(aes_ctx, &data, iv, - hash_subkey, assoc, assoclen); + gcm_tfm->init(aes_ctx, data, iv, hash_subkey, assoc, assoclen); if (req->src != req->dst) { while (left) { src = scatterwalk_map(&src_sg_walk); @@ -746,10 +749,10 @@ len = min(srclen, dstlen); if (len) { if (enc) - gcm_tfm->enc_update(aes_ctx, &data, + gcm_tfm->enc_update(aes_ctx, data, dst, src, len); else - gcm_tfm->dec_update(aes_ctx, &data, + gcm_tfm->dec_update(aes_ctx, data, dst, src, len); } left -= len; @@ -767,10 +770,10 @@ len = scatterwalk_clamp(&src_sg_walk, left); if (len) { if (enc) - gcm_tfm->enc_update(aes_ctx, &data, + gcm_tfm->enc_update(aes_ctx, data, src, src, len); else - gcm_tfm->dec_update(aes_ctx, &data, + gcm_tfm->dec_update(aes_ctx, data, src, src, len); } left -= len; @@ -779,7 +782,7 @@ scatterwalk_done(&src_sg_walk, 1, left); } } - gcm_tfm->finalize(aes_ctx, &data, authTag, auth_tag_len); + gcm_tfm->finalize(aes_ctx, data, authTag, auth_tag_len); kernel_fpu_end(); if (!assocmem) @@ -828,7 +831,8 @@ struct crypto_aead *tfm = crypto_aead_reqtfm(req); struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm); void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); + u8 ivbuf[16 + (AESNI_ALIGN - 8)] __aligned(8); + u8 *iv = PTR_ALIGN(&ivbuf[0], AESNI_ALIGN); unsigned int i; __be32 counter = cpu_to_be32(1); @@ -855,7 +859,8 @@ struct crypto_aead *tfm = crypto_aead_reqtfm(req); struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(tfm); void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); + u8 ivbuf[16 + (AESNI_ALIGN - 8)] __aligned(8); + u8 *iv = PTR_ALIGN(&ivbuf[0], AESNI_ALIGN); unsigned int i; if (unlikely(req->assoclen != 16 && req->assoclen != 20)) @@ -985,7 +990,8 @@ struct crypto_aead *tfm = crypto_aead_reqtfm(req); struct generic_gcmaes_ctx *ctx = generic_gcmaes_ctx_get(tfm); void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); + u8 ivbuf[16 + (AESNI_ALIGN - 8)] __aligned(8); + u8 *iv = PTR_ALIGN(&ivbuf[0], AESNI_ALIGN); __be32 counter = cpu_to_be32(1); memcpy(iv, req->iv, 12); @@ -1001,7 +1007,8 @@ struct crypto_aead *tfm = crypto_aead_reqtfm(req); struct generic_gcmaes_ctx *ctx = generic_gcmaes_ctx_get(tfm); void *aes_ctx = &(ctx->aes_key_expanded); - u8 iv[16] __attribute__ ((__aligned__(AESNI_ALIGN))); + u8 ivbuf[16 + (AESNI_ALIGN - 8)] __aligned(8); + u8 *iv = PTR_ALIGN(&ivbuf[0], AESNI_ALIGN); memcpy(iv, req->iv, 12); *((__be32 *)(iv+12)) = counter; --- linux-5.8.0.orig/arch/x86/crypto/crc32c-pcl-intel-asm_64.S +++ linux-5.8.0/arch/x86/crypto/crc32c-pcl-intel-asm_64.S @@ -170,7 +170,7 @@ ## branch into array lea jump_table(%rip), %bufp - movzxw (%bufp, %rax, 2), len + movzwq (%bufp, %rax, 2), len lea crc_array(%rip), %bufp lea (%bufp, len, 1), %bufp JMP_NOSPEC bufp --- linux-5.8.0.orig/arch/x86/entry/common.c +++ linux-5.8.0/arch/x86/entry/common.c @@ -55,8 +55,16 @@ * state, not the interrupt state as imagined by Xen. */ unsigned long flags = native_save_fl(); - WARN_ON_ONCE(flags & (X86_EFLAGS_AC | X86_EFLAGS_DF | - X86_EFLAGS_NT)); + unsigned long mask = X86_EFLAGS_DF | X86_EFLAGS_NT; + + /* + * For !SMAP hardware we patch out CLAC on entry. + */ + if (boot_cpu_has(X86_FEATURE_SMAP) || + (IS_ENABLED(CONFIG_64_BIT) && boot_cpu_has(X86_FEATURE_XENPV))) + mask |= X86_EFLAGS_AC; + + WARN_ON_ONCE(flags & mask); /* We think we came from user mode. Make sure pt_regs agrees. */ WARN_ON_ONCE(!user_mode(regs)); @@ -806,8 +814,8 @@ old_regs = set_irq_regs(regs); instrumentation_begin(); - run_on_irqstack_cond(__xen_pv_evtchn_do_upcall, NULL, regs); - instrumentation_begin(); + run_on_irqstack_cond(__xen_pv_evtchn_do_upcall, regs); + instrumentation_end(); set_irq_regs(old_regs); --- linux-5.8.0.orig/arch/x86/entry/entry_64.S +++ linux-5.8.0/arch/x86/entry/entry_64.S @@ -687,6 +687,8 @@ * rdx: Function argument (can be NULL if none) */ SYM_FUNC_START(asm_call_on_stack) +SYM_INNER_LABEL(asm_call_sysvec_on_stack, SYM_L_GLOBAL) +SYM_INNER_LABEL(asm_call_irq_on_stack, SYM_L_GLOBAL) /* * Save the frame pointer unconditionally. This allows the ORC * unwinder to handle the stack switch. --- linux-5.8.0.orig/arch/x86/entry/thunk_64.S +++ linux-5.8.0/arch/x86/entry/thunk_64.S @@ -31,7 +31,7 @@ .endif call \func - jmp .L_restore + jmp __thunk_restore SYM_FUNC_END(\name) _ASM_NOKPROBE(\name) .endm @@ -44,7 +44,7 @@ #endif #ifdef CONFIG_PREEMPTION -SYM_CODE_START_LOCAL_NOALIGN(.L_restore) +SYM_CODE_START_LOCAL_NOALIGN(__thunk_restore) popq %r11 popq %r10 popq %r9 @@ -56,6 +56,6 @@ popq %rdi popq %rbp ret - _ASM_NOKPROBE(.L_restore) -SYM_CODE_END(.L_restore) + _ASM_NOKPROBE(__thunk_restore) +SYM_CODE_END(__thunk_restore) #endif --- linux-5.8.0.orig/arch/x86/entry/vdso/Makefile +++ linux-5.8.0/arch/x86/entry/vdso/Makefile @@ -176,7 +176,7 @@ -T $(filter %.lds,$^) $(filter %.o,$^) && \ sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' -VDSO_LDFLAGS = -shared --hash-style=both --build-id \ +VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 \ $(call ld-option, --eh-frame-hdr) -Bsymbolic GCOV_PROFILE := n --- linux-5.8.0.orig/arch/x86/events/amd/ibs.c +++ linux-5.8.0/arch/x86/events/amd/ibs.c @@ -89,6 +89,7 @@ u64 max_period; unsigned long offset_mask[1]; int offset_max; + unsigned int fetch_count_reset_broken : 1; struct cpu_perf_ibs __percpu *pcpu; struct attribute **format_attrs; @@ -334,11 +335,15 @@ { u64 count = 0; + /* + * If the internal 27-bit counter rolled over, the count is MaxCnt + * and the lower 7 bits of CurCnt are randomized. + * Otherwise CurCnt has the full 27-bit current counter value. + */ if (config & IBS_OP_VAL) - count += (config & IBS_OP_MAX_CNT) << 4; /* cnt rolled over */ - - if (ibs_caps & IBS_CAPS_RDWROPCNT) - count += (config & IBS_OP_CUR_CNT) >> 32; + count = (config & IBS_OP_MAX_CNT) << 4; + else if (ibs_caps & IBS_CAPS_RDWROPCNT) + count = (config & IBS_OP_CUR_CNT) >> 32; return count; } @@ -363,7 +368,12 @@ static inline void perf_ibs_enable_event(struct perf_ibs *perf_ibs, struct hw_perf_event *hwc, u64 config) { - wrmsrl(hwc->config_base, hwc->config | config | perf_ibs->enable_mask); + u64 tmp = hwc->config | config; + + if (perf_ibs->fetch_count_reset_broken) + wrmsrl(hwc->config_base, tmp & ~perf_ibs->enable_mask); + + wrmsrl(hwc->config_base, tmp | perf_ibs->enable_mask); } /* @@ -626,18 +636,24 @@ perf_ibs->offset_max, offset + 1); } while (offset < offset_max); + /* + * Read IbsBrTarget, IbsOpData4, and IbsExtdCtl separately + * depending on their availability. + * Can't add to offset_max as they are staggered + */ if (event->attr.sample_type & PERF_SAMPLE_RAW) { - /* - * Read IbsBrTarget and IbsOpData4 separately - * depending on their availability. - * Can't add to offset_max as they are staggered - */ - if (ibs_caps & IBS_CAPS_BRNTRGT) { - rdmsrl(MSR_AMD64_IBSBRTARGET, *buf++); - size++; + if (perf_ibs == &perf_ibs_op) { + if (ibs_caps & IBS_CAPS_BRNTRGT) { + rdmsrl(MSR_AMD64_IBSBRTARGET, *buf++); + size++; + } + if (ibs_caps & IBS_CAPS_OPDATA4) { + rdmsrl(MSR_AMD64_IBSOPDATA4, *buf++); + size++; + } } - if (ibs_caps & IBS_CAPS_OPDATA4) { - rdmsrl(MSR_AMD64_IBSOPDATA4, *buf++); + if (perf_ibs == &perf_ibs_fetch && (ibs_caps & IBS_CAPS_FETCHCTLEXTD)) { + rdmsrl(MSR_AMD64_ICIBSEXTDCTL, *buf++); size++; } } @@ -733,6 +749,13 @@ { struct attribute **attr = ibs_op_format_attrs; + /* + * Some chips fail to reset the fetch count when it is written; instead + * they need a 0-1 transition of IbsFetchEn. + */ + if (boot_cpu_data.x86 >= 0x16 && boot_cpu_data.x86 <= 0x18) + perf_ibs_fetch.fetch_count_reset_broken = 1; + perf_ibs_pmu_init(&perf_ibs_fetch, "ibs_fetch"); if (ibs_caps & IBS_CAPS_OPCNT) { --- linux-5.8.0.orig/arch/x86/events/amd/iommu.c +++ linux-5.8.0/arch/x86/events/amd/iommu.c @@ -379,7 +379,7 @@ while (amd_iommu_v2_event_descs[i].attr.attr.name) i++; - attrs = kcalloc(i + 1, sizeof(struct attribute **), GFP_KERNEL); + attrs = kcalloc(i + 1, sizeof(*attrs), GFP_KERNEL); if (!attrs) return -ENOMEM; --- linux-5.8.0.orig/arch/x86/events/amd/uncore.c +++ linux-5.8.0/arch/x86/events/amd/uncore.c @@ -181,28 +181,16 @@ } /* - * Convert logical CPU number to L3 PMC Config ThreadMask format + * Return a full thread and slice mask until per-CPU is + * properly supported. */ -static u64 l3_thread_slice_mask(int cpu) +static u64 l3_thread_slice_mask(void) { - u64 thread_mask, core = topology_core_id(cpu); - unsigned int shift, thread = 0; + if (boot_cpu_data.x86 <= 0x18) + return AMD64_L3_SLICE_MASK | AMD64_L3_THREAD_MASK; - if (topology_smt_supported() && !topology_is_primary_thread(cpu)) - thread = 1; - - if (boot_cpu_data.x86 <= 0x18) { - shift = AMD64_L3_THREAD_SHIFT + 2 * (core % 4) + thread; - thread_mask = BIT_ULL(shift); - - return AMD64_L3_SLICE_MASK | thread_mask; - } - - core = (core << AMD64_L3_COREID_SHIFT) & AMD64_L3_COREID_MASK; - shift = AMD64_L3_THREAD_SHIFT + thread; - thread_mask = BIT_ULL(shift); - - return AMD64_L3_EN_ALL_SLICES | core | thread_mask; + return AMD64_L3_EN_ALL_SLICES | AMD64_L3_EN_ALL_CORES | + AMD64_L3_F19H_THREAD_MASK; } static int amd_uncore_event_init(struct perf_event *event) @@ -232,7 +220,7 @@ * For other events, the two fields do not affect the count. */ if (l3_mask && is_llc_event(event)) - hwc->config |= l3_thread_slice_mask(event->cpu); + hwc->config |= l3_thread_slice_mask(); uncore = event_to_amd_uncore(event); if (!uncore) --- linux-5.8.0.orig/arch/x86/events/core.c +++ linux-5.8.0/arch/x86/events/core.c @@ -1087,8 +1087,10 @@ cpuc->event_list[n] = event; n++; - if (is_counter_pair(&event->hw)) + if (is_counter_pair(&event->hw)) { cpuc->n_pair++; + cpuc->n_txn_pair++; + } } return n; } @@ -1275,11 +1277,11 @@ wrmsrl(hwc->event_base, (u64)(-left) & x86_pmu.cntval_mask); /* - * Clear the Merge event counter's upper 16 bits since + * Sign extend the Merge event counter's upper 16 bits since * we currently declare a 48-bit counter width */ if (is_counter_pair(hwc)) - wrmsrl(x86_pmu_event_addr(idx + 1), 0); + wrmsrl(x86_pmu_event_addr(idx + 1), 0xffff); /* * Due to erratum on certan cpu we need @@ -1953,6 +1955,7 @@ perf_pmu_disable(pmu); __this_cpu_write(cpu_hw_events.n_txn, 0); + __this_cpu_write(cpu_hw_events.n_txn_pair, 0); } /* @@ -1978,6 +1981,7 @@ */ __this_cpu_sub(cpu_hw_events.n_added, __this_cpu_read(cpu_hw_events.n_txn)); __this_cpu_sub(cpu_hw_events.n_events, __this_cpu_read(cpu_hw_events.n_txn)); + __this_cpu_sub(cpu_hw_events.n_pair, __this_cpu_read(cpu_hw_events.n_txn_pair)); perf_pmu_enable(pmu); } --- linux-5.8.0.orig/arch/x86/events/intel/core.c +++ linux-5.8.0/arch/x86/events/intel/core.c @@ -243,7 +243,7 @@ static struct event_constraint intel_icl_event_constraints[] = { FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */ - INTEL_UEVENT_CONSTRAINT(0x1c0, 0), /* INST_RETIRED.PREC_DIST */ + FIXED_EVENT_CONSTRAINT(0x01c0, 0), /* INST_RETIRED.PREC_DIST */ FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */ FIXED_EVENT_CONSTRAINT(0x0300, 2), /* CPU_CLK_UNHALTED.REF */ FIXED_EVENT_CONSTRAINT(0x0400, 3), /* SLOTS */ @@ -253,7 +253,8 @@ INTEL_EVENT_CONSTRAINT_RANGE(0x48, 0x54, 0xf), INTEL_EVENT_CONSTRAINT_RANGE(0x60, 0x8b, 0xf), INTEL_UEVENT_CONSTRAINT(0x04a3, 0xff), /* CYCLE_ACTIVITY.STALLS_TOTAL */ - INTEL_UEVENT_CONSTRAINT(0x10a3, 0xff), /* CYCLE_ACTIVITY.STALLS_MEM_ANY */ + INTEL_UEVENT_CONSTRAINT(0x10a3, 0xff), /* CYCLE_ACTIVITY.CYCLES_MEM_ANY */ + INTEL_UEVENT_CONSTRAINT(0x14a3, 0xff), /* CYCLE_ACTIVITY.STALLS_MEM_ANY */ INTEL_EVENT_CONSTRAINT(0xa3, 0xf), /* CYCLE_ACTIVITY.* */ INTEL_EVENT_CONSTRAINT_RANGE(0xa8, 0xb0, 0xf), INTEL_EVENT_CONSTRAINT_RANGE(0xb7, 0xbd, 0xf), @@ -4039,6 +4040,9 @@ INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X, 2, 0x0b000014), INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 3, 0x00000021), INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 4, 0x00000000), + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 5, 0x00000000), + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 6, 0x00000000), + INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X, 7, 0x00000000), INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_L, 3, 0x0000007c), INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE, 3, 0x0000007c), INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE, 9, 0x0000004e), @@ -5095,7 +5099,7 @@ extra_skl_attr = skl_format_attr; mem_attr = icl_events_attrs; tsx_attr = icl_tsx_events_attrs; - x86_pmu.rtm_abort_event = X86_CONFIG(.event=0xca, .umask=0x02); + x86_pmu.rtm_abort_event = X86_CONFIG(.event=0xc9, .umask=0x04); x86_pmu.lbr_pt_coexist = true; intel_pmu_pebs_data_source_skl(pmem); pr_cont("Icelake events, "); --- linux-5.8.0.orig/arch/x86/events/intel/cstate.c +++ linux-5.8.0/arch/x86/events/intel/cstate.c @@ -107,14 +107,14 @@ MODULE_LICENSE("GPL"); #define DEFINE_CSTATE_FORMAT_ATTR(_var, _name, _format) \ -static ssize_t __cstate_##_var##_show(struct kobject *kobj, \ - struct kobj_attribute *attr, \ +static ssize_t __cstate_##_var##_show(struct device *dev, \ + struct device_attribute *attr, \ char *page) \ { \ BUILD_BUG_ON(sizeof(_format) >= PAGE_SIZE); \ return sprintf(page, _format "\n"); \ } \ -static struct kobj_attribute format_attr_##_var = \ +static struct device_attribute format_attr_##_var = \ __ATTR(_name, 0444, __cstate_##_var##_show, NULL) static ssize_t cstate_get_attr_cpumask(struct device *dev, --- linux-5.8.0.orig/arch/x86/events/intel/ds.c +++ linux-5.8.0/arch/x86/events/intel/ds.c @@ -670,9 +670,7 @@ static inline void intel_pmu_drain_pebs_buffer(void) { - struct pt_regs regs; - - x86_pmu.drain_pebs(®s); + x86_pmu.drain_pebs(NULL); } /* @@ -1737,6 +1735,7 @@ struct x86_perf_regs perf_regs; struct pt_regs *regs = &perf_regs.regs; void *at = get_next_pebs_record_by_bit(base, top, bit); + struct pt_regs dummy_iregs; if (hwc->flags & PERF_X86_EVENT_AUTO_RELOAD) { /* @@ -1749,6 +1748,9 @@ } else if (!intel_pmu_save_and_restart(event)) return; + if (!iregs) + iregs = &dummy_iregs; + while (count > 1) { setup_sample(event, iregs, at, &data, regs); perf_event_output(event, &data, regs); @@ -1758,16 +1760,22 @@ } setup_sample(event, iregs, at, &data, regs); - - /* - * All but the last records are processed. - * The last one is left to be able to call the overflow handler. - */ - if (perf_event_overflow(event, &data, regs)) { - x86_pmu_stop(event, 0); - return; + if (iregs == &dummy_iregs) { + /* + * The PEBS records may be drained in the non-overflow context, + * e.g., large PEBS + context switch. Perf should treat the + * last record the same as other PEBS records, and doesn't + * invoke the generic overflow handler. + */ + perf_event_output(event, &data, regs); + } else { + /* + * All but the last records are processed. + * The last one is left to be able to call the overflow handler. + */ + if (perf_event_overflow(event, &data, regs)) + x86_pmu_stop(event, 0); } - } static void intel_pmu_drain_pebs_core(struct pt_regs *iregs) @@ -1883,7 +1891,7 @@ */ if (!pebs_status && cpuc->pebs_enabled && !(cpuc->pebs_enabled & (cpuc->pebs_enabled-1))) - pebs_status = cpuc->pebs_enabled; + pebs_status = p->status = cpuc->pebs_enabled; bit = find_first_bit((unsigned long *)&pebs_status, x86_pmu.max_pebs_events); @@ -1905,7 +1913,7 @@ * that caused the PEBS record. It's called collision. * If collision happened, the record will be dropped. */ - if (p->status != (1ULL << bit)) { + if (pebs_status != (1ULL << bit)) { for_each_set_bit(i, (unsigned long *)&pebs_status, size) error[i]++; continue; @@ -1929,7 +1937,7 @@ if (error[bit]) { perf_log_lost_samples(event, error[bit]); - if (perf_event_account_interrupt(event)) + if (iregs && perf_event_account_interrupt(event)) x86_pmu_stop(event, 0); } --- linux-5.8.0.orig/arch/x86/events/intel/uncore.c +++ linux-5.8.0/arch/x86/events/intel/uncore.c @@ -92,8 +92,8 @@ return map; } -ssize_t uncore_event_show(struct kobject *kobj, - struct kobj_attribute *attr, char *buf) +ssize_t uncore_event_show(struct device *dev, + struct device_attribute *attr, char *buf) { struct uncore_event_desc *event = container_of(attr, struct uncore_event_desc, attr); --- linux-5.8.0.orig/arch/x86/events/intel/uncore.h +++ linux-5.8.0/arch/x86/events/intel/uncore.h @@ -144,7 +144,7 @@ #define UNCORE_BOX_FLAG_CFL8_CBOX_MSR_OFFS 2 struct uncore_event_desc { - struct kobj_attribute attr; + struct device_attribute attr; const char *config; }; @@ -166,8 +166,8 @@ struct pci2phy_map *__find_pci2phy_map(int segment); int uncore_pcibus_to_physid(struct pci_bus *bus); -ssize_t uncore_event_show(struct kobject *kobj, - struct kobj_attribute *attr, char *buf); +ssize_t uncore_event_show(struct device *dev, + struct device_attribute *attr, char *buf); #define INTEL_UNCORE_EVENT_DESC(_name, _config) \ { \ @@ -176,14 +176,14 @@ } #define DEFINE_UNCORE_FORMAT_ATTR(_var, _name, _format) \ -static ssize_t __uncore_##_var##_show(struct kobject *kobj, \ - struct kobj_attribute *attr, \ +static ssize_t __uncore_##_var##_show(struct device *dev, \ + struct device_attribute *attr, \ char *page) \ { \ BUILD_BUG_ON(sizeof(_format) >= PAGE_SIZE); \ return sprintf(page, _format "\n"); \ } \ -static struct kobj_attribute format_attr_##_var = \ +static struct device_attribute format_attr_##_var = \ __ATTR(_name, 0444, __uncore_##_var##_show, NULL) static inline bool uncore_pmc_fixed(int idx) --- linux-5.8.0.orig/arch/x86/events/intel/uncore_snb.c +++ linux-5.8.0/arch/x86/events/intel/uncore_snb.c @@ -115,6 +115,10 @@ #define ICL_UNC_CBO_0_PER_CTR0 0x702 #define ICL_UNC_CBO_MSR_OFFSET 0x8 +/* ICL ARB register */ +#define ICL_UNC_ARB_PER_CTR 0x3b1 +#define ICL_UNC_ARB_PERFEVTSEL 0x3b3 + DEFINE_UNCORE_FORMAT_ATTR(event, event, "config:0-7"); DEFINE_UNCORE_FORMAT_ATTR(umask, umask, "config:8-15"); DEFINE_UNCORE_FORMAT_ATTR(edge, edge, "config:18"); @@ -302,15 +306,21 @@ snb_uncore_arb.ops = &skl_uncore_msr_ops; } +static struct intel_uncore_ops icl_uncore_msr_ops = { + .disable_event = snb_uncore_msr_disable_event, + .enable_event = snb_uncore_msr_enable_event, + .read_counter = uncore_msr_read_counter, +}; + static struct intel_uncore_type icl_uncore_cbox = { .name = "cbox", - .num_counters = 4, + .num_counters = 2, .perf_ctr_bits = 44, .perf_ctr = ICL_UNC_CBO_0_PER_CTR0, .event_ctl = SNB_UNC_CBO_0_PERFEVTSEL0, .event_mask = SNB_UNC_RAW_EVENT_MASK, .msr_offset = ICL_UNC_CBO_MSR_OFFSET, - .ops = &skl_uncore_msr_ops, + .ops = &icl_uncore_msr_ops, .format_group = &snb_uncore_format_group, }; @@ -339,13 +349,25 @@ .single_fixed = 1, .event_mask = SNB_UNC_CTL_EV_SEL_MASK, .format_group = &icl_uncore_clock_format_group, - .ops = &skl_uncore_msr_ops, + .ops = &icl_uncore_msr_ops, .event_descs = icl_uncore_events, }; +static struct intel_uncore_type icl_uncore_arb = { + .name = "arb", + .num_counters = 1, + .num_boxes = 1, + .perf_ctr_bits = 44, + .perf_ctr = ICL_UNC_ARB_PER_CTR, + .event_ctl = ICL_UNC_ARB_PERFEVTSEL, + .event_mask = SNB_UNC_RAW_EVENT_MASK, + .ops = &icl_uncore_msr_ops, + .format_group = &snb_uncore_format_group, +}; + static struct intel_uncore_type *icl_msr_uncores[] = { &icl_uncore_cbox, - &snb_uncore_arb, + &icl_uncore_arb, &icl_uncore_clockbox, NULL, }; @@ -363,7 +385,6 @@ { uncore_msr_uncores = icl_msr_uncores; icl_uncore_cbox.num_boxes = icl_get_cbox_num(); - snb_uncore_arb.ops = &skl_uncore_msr_ops; } enum { @@ -1085,6 +1106,7 @@ } #define TGL_UNCORE_MMIO_IMC_MEM_OFFSET 0x10000 +#define TGL_UNCORE_PCI_IMC_MAP_SIZE 0xe000 static void tgl_uncore_imc_freerunning_init_box(struct intel_uncore_box *box) { @@ -1112,7 +1134,7 @@ addr |= ((resource_size_t)mch_bar << 32); #endif - box->io_addr = ioremap(addr, SNB_UNCORE_PCI_IMC_MAP_SIZE); + box->io_addr = ioremap(addr, TGL_UNCORE_PCI_IMC_MAP_SIZE); } static struct intel_uncore_ops tgl_uncore_imc_freerunning_ops = { --- linux-5.8.0.orig/arch/x86/events/intel/uncore_snbep.c +++ linux-5.8.0/arch/x86/events/intel/uncore_snbep.c @@ -4550,10 +4550,10 @@ INTEL_UNCORE_EVENT_DESC(dclk, "event=0xff,umask=0x10"), INTEL_UNCORE_EVENT_DESC(read, "event=0xff,umask=0x20"), - INTEL_UNCORE_EVENT_DESC(read.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(read.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(read.unit, "MiB"), INTEL_UNCORE_EVENT_DESC(write, "event=0xff,umask=0x21"), - INTEL_UNCORE_EVENT_DESC(write.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(write.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(write.unit, "MiB"), { /* end: all zeroes */ }, }; @@ -5009,17 +5009,17 @@ INTEL_UNCORE_EVENT_DESC(dclk, "event=0xff,umask=0x10"), INTEL_UNCORE_EVENT_DESC(read, "event=0xff,umask=0x20"), - INTEL_UNCORE_EVENT_DESC(read.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(read.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(read.unit, "MiB"), INTEL_UNCORE_EVENT_DESC(write, "event=0xff,umask=0x21"), - INTEL_UNCORE_EVENT_DESC(write.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(write.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(write.unit, "MiB"), INTEL_UNCORE_EVENT_DESC(ddrt_read, "event=0xff,umask=0x30"), - INTEL_UNCORE_EVENT_DESC(ddrt_read.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(ddrt_read.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(ddrt_read.unit, "MiB"), INTEL_UNCORE_EVENT_DESC(ddrt_write, "event=0xff,umask=0x31"), - INTEL_UNCORE_EVENT_DESC(ddrt_write.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(ddrt_write.scale, "6.103515625e-5"), INTEL_UNCORE_EVENT_DESC(ddrt_write.unit, "MiB"), { /* end: all zeroes */ }, }; --- linux-5.8.0.orig/arch/x86/events/perf_event.h +++ linux-5.8.0/arch/x86/events/perf_event.h @@ -198,6 +198,7 @@ they've never been enabled yet */ int n_txn; /* the # last events in the below arrays; added in the current transaction */ + int n_txn_pair; int assign[X86_PMC_IDX_MAX]; /* event to counter assignment */ u64 tags[X86_PMC_IDX_MAX]; --- linux-5.8.0.orig/arch/x86/events/rapl.c +++ linux-5.8.0/arch/x86/events/rapl.c @@ -93,18 +93,6 @@ * any other bit is reserved */ #define RAPL_EVENT_MASK 0xFFULL - -#define DEFINE_RAPL_FORMAT_ATTR(_var, _name, _format) \ -static ssize_t __rapl_##_var##_show(struct kobject *kobj, \ - struct kobj_attribute *attr, \ - char *page) \ -{ \ - BUILD_BUG_ON(sizeof(_format) >= PAGE_SIZE); \ - return sprintf(page, _format "\n"); \ -} \ -static struct kobj_attribute format_attr_##_var = \ - __ATTR(_name, 0444, __rapl_##_var##_show, NULL) - #define RAPL_CNTR_WIDTH 32 #define RAPL_EVENT_ATTR_STR(_name, v, str) \ @@ -435,7 +423,7 @@ .attrs = attrs_empty, }; -DEFINE_RAPL_FORMAT_ATTR(event, event, "config:0-7"); +PMU_FORMAT_ATTR(event, "config:0-7"); static struct attribute *rapl_formats_attr[] = { &format_attr_event.attr, NULL, @@ -665,7 +653,7 @@ &rapl_events_pkg_group, &rapl_events_ram_group, &rapl_events_gpu_group, - &rapl_events_gpu_group, + &rapl_events_psys_group, NULL, }; --- linux-5.8.0.orig/arch/x86/hyperv/hv_init.c +++ linux-5.8.0/arch/x86/hyperv/hv_init.c @@ -26,6 +26,14 @@ #include #include +#ifndef PKG_ABI +/* + * Preserve the ability to 'make deb-pkg' since PKG_ABI is provided + * by the Ubuntu build rules. + */ +#define PKG_ABI 0 +#endif + void *hv_hypercall_pg; EXPORT_SYMBOL_GPL(hv_hypercall_pg); @@ -312,6 +320,25 @@ .resume = hv_resume, }; +static void (* __initdata old_setup_percpu_clockev)(void); + +static void __init hv_stimer_setup_percpu_clockev(void) +{ + /* + * Ignore any errors in setting up stimer clockevents + * as we can run with the LAPIC timer as a fallback. + */ + (void)hv_stimer_alloc(); + + /* + * Still register the LAPIC timer, because the direct-mode STIMER is + * not supported by old versions of Hyper-V. This also allows users + * to switch to LAPIC timer via /sys, if they want to. + */ + if (old_setup_percpu_clockev) + old_setup_percpu_clockev(); +} + /* * This function is to be invoked early in the boot sequence after the * hypervisor has been detected. @@ -372,7 +399,7 @@ * 1. Register the guest ID * 2. Enable the hypercall and register the hypercall page */ - guest_id = generate_guest_id(0, LINUX_VERSION_CODE, 0); + guest_id = generate_guest_id(0x80 /*Canonical*/, LINUX_VERSION_CODE, PKG_ABI); wrmsrl(HV_X64_MSR_GUEST_OS_ID, guest_id); hv_hypercall_pg = __vmalloc_node_range(PAGE_SIZE, 1, VMALLOC_START, @@ -390,10 +417,14 @@ wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); /* - * Ignore any errors in setting up stimer clockevents - * as we can run with the LAPIC timer as a fallback. + * hyperv_init() is called before LAPIC is initialized: see + * apic_intr_mode_init() -> x86_platform.apic_post_init() and + * apic_bsp_setup() -> setup_local_APIC(). The direct-mode STIMER + * depends on LAPIC, so hv_stimer_alloc() should be called from + * x86_init.timers.setup_percpu_clockev. */ - (void)hv_stimer_alloc(); + old_setup_percpu_clockev = x86_init.timers.setup_percpu_clockev; + x86_init.timers.setup_percpu_clockev = hv_stimer_setup_percpu_clockev; hv_apic_init(); --- linux-5.8.0.orig/arch/x86/hyperv/mmu.c +++ linux-5.8.0/arch/x86/hyperv/mmu.c @@ -66,11 +66,17 @@ if (!hv_hypercall_pg) goto do_native; - if (cpumask_empty(cpus)) - return; - local_irq_save(flags); + /* + * Only check the mask _after_ interrupt has been disabled to avoid the + * mask changing under our feet. + */ + if (cpumask_empty(cpus)) { + local_irq_restore(flags); + return; + } + flush_pcpu = (struct hv_tlb_flush **) this_cpu_ptr(hyperv_pcpu_input_arg); --- linux-5.8.0.orig/arch/x86/include/asm/apic.h +++ linux-5.8.0/arch/x86/include/asm/apic.h @@ -197,16 +197,6 @@ #endif /* !CONFIG_X86_LOCAL_APIC */ #ifdef CONFIG_X86_X2APIC -/* - * Make previous memory operations globally visible before - * sending the IPI through x2apic wrmsr. We need a serializing instruction or - * mfence for this. - */ -static inline void x2apic_wrmsr_fence(void) -{ - asm volatile("mfence" : : : "memory"); -} - static inline void native_apic_msr_write(u32 reg, u32 v) { if (reg == APIC_DFR || reg == APIC_ID || reg == APIC_LDR || @@ -259,6 +249,7 @@ extern int x2apic_mode; extern int x2apic_phys; +extern void __init x2apic_set_max_apicid(u32 apicid); extern void __init check_x2apic(void); extern void x2apic_setup(void); static inline int x2apic_enabled(void) --- linux-5.8.0.orig/arch/x86/include/asm/apm.h +++ linux-5.8.0/arch/x86/include/asm/apm.h @@ -35,6 +35,7 @@ __asm__ __volatile__(APM_DO_ZERO_SEGS "pushl %%edi\n\t" "pushl %%ebp\n\t" + ANNOTATE_RETPOLINE_SAFE /* FRBS */ "lcall *%%cs:apm_bios_entry\n\t" "setc %%al\n\t" "popl %%ebp\n\t" @@ -59,6 +60,7 @@ __asm__ __volatile__(APM_DO_ZERO_SEGS "pushl %%edi\n\t" "pushl %%ebp\n\t" + ANNOTATE_RETPOLINE_SAFE /* FRBS */ "lcall *%%cs:apm_bios_entry\n\t" "setc %%bl\n\t" "popl %%ebp\n\t" --- linux-5.8.0.orig/arch/x86/include/asm/asm-prototypes.h +++ linux-5.8.0/arch/x86/include/asm/asm-prototypes.h @@ -5,6 +5,7 @@ #include #include #include +#include #include --- linux-5.8.0.orig/arch/x86/include/asm/barrier.h +++ linux-5.8.0/arch/x86/include/asm/barrier.h @@ -84,4 +84,22 @@ #include +/* + * Make previous memory operations globally visible before + * a WRMSR. + * + * MFENCE makes writes visible, but only affects load/store + * instructions. WRMSR is unfortunately not a load/store + * instruction and is unaffected by MFENCE. The LFENCE ensures + * that the WRMSR is not reordered. + * + * Most WRMSRs are full serializing instructions themselves and + * do not require this barrier. This is only required for the + * IA32_TSC_DEADLINE and X2APIC MSRs. + */ +static inline void weak_wrmsr_fence(void) +{ + asm volatile("mfence; lfence" : : : "memory"); +} + #endif /* _ASM_X86_BARRIER_H */ --- linux-5.8.0.orig/arch/x86/include/asm/cacheinfo.h +++ linux-5.8.0/arch/x86/include/asm/cacheinfo.h @@ -2,7 +2,7 @@ #ifndef _ASM_X86_CACHEINFO_H #define _ASM_X86_CACHEINFO_H -void cacheinfo_amd_init_llc_id(struct cpuinfo_x86 *c, int cpu, u8 node_id); -void cacheinfo_hygon_init_llc_id(struct cpuinfo_x86 *c, int cpu, u8 node_id); +void cacheinfo_amd_init_llc_id(struct cpuinfo_x86 *c, int cpu); +void cacheinfo_hygon_init_llc_id(struct cpuinfo_x86 *c, int cpu); #endif /* _ASM_X86_CACHEINFO_H */ --- linux-5.8.0.orig/arch/x86/include/asm/copy_mc_test.h +++ linux-5.8.0/arch/x86/include/asm/copy_mc_test.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _COPY_MC_TEST_H_ +#define _COPY_MC_TEST_H_ + +#ifndef __ASSEMBLY__ +#ifdef CONFIG_COPY_MC_TEST +extern unsigned long copy_mc_test_src; +extern unsigned long copy_mc_test_dst; + +static inline void copy_mc_inject_src(void *addr) +{ + if (addr) + copy_mc_test_src = (unsigned long) addr; + else + copy_mc_test_src = ~0UL; +} + +static inline void copy_mc_inject_dst(void *addr) +{ + if (addr) + copy_mc_test_dst = (unsigned long) addr; + else + copy_mc_test_dst = ~0UL; +} +#else /* CONFIG_COPY_MC_TEST */ +static inline void copy_mc_inject_src(void *addr) +{ +} + +static inline void copy_mc_inject_dst(void *addr) +{ +} +#endif /* CONFIG_COPY_MC_TEST */ + +#else /* __ASSEMBLY__ */ +#include + +#ifdef CONFIG_COPY_MC_TEST +.macro COPY_MC_TEST_CTL + .pushsection .data + .align 8 + .globl copy_mc_test_src + copy_mc_test_src: + .quad 0 + EXPORT_SYMBOL_GPL(copy_mc_test_src) + .globl copy_mc_test_dst + copy_mc_test_dst: + .quad 0 + EXPORT_SYMBOL_GPL(copy_mc_test_dst) + .popsection +.endm + +.macro COPY_MC_TEST_SRC reg count target + leaq \count(\reg), %r9 + cmp copy_mc_test_src, %r9 + ja \target +.endm + +.macro COPY_MC_TEST_DST reg count target + leaq \count(\reg), %r9 + cmp copy_mc_test_dst, %r9 + ja \target +.endm +#else +.macro COPY_MC_TEST_CTL +.endm + +.macro COPY_MC_TEST_SRC reg count target +.endm + +.macro COPY_MC_TEST_DST reg count target +.endm +#endif /* CONFIG_COPY_MC_TEST */ +#endif /* __ASSEMBLY__ */ +#endif /* _COPY_MC_TEST_H_ */ --- linux-5.8.0.orig/arch/x86/include/asm/fpu/api.h +++ linux-5.8.0/arch/x86/include/asm/fpu/api.h @@ -16,14 +16,25 @@ * Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It * disables preemption so be careful if you intend to use it for long periods * of time. - * If you intend to use the FPU in softirq you need to check first with + * If you intend to use the FPU in irq/softirq you need to check first with * irq_fpu_usable() if it is possible. */ -extern void kernel_fpu_begin(void); + +/* Kernel FPU states to initialize in kernel_fpu_begin_mask() */ +#define KFPU_387 _BITUL(0) /* 387 state will be initialized */ +#define KFPU_MXCSR _BITUL(1) /* MXCSR will be initialized */ + +extern void kernel_fpu_begin_mask(unsigned int kfpu_mask); extern void kernel_fpu_end(void); extern bool irq_fpu_usable(void); extern void fpregs_mark_activate(void); +/* Code that is unaware of kernel_fpu_begin_mask() can use this */ +static inline void kernel_fpu_begin(void) +{ + kernel_fpu_begin_mask(KFPU_387 | KFPU_MXCSR); +} + /* * Use fpregs_lock() while editing CPU's FPU registers or fpu->state. * A context switch will (and softirq might) save CPU's FPU registers to --- linux-5.8.0.orig/arch/x86/include/asm/frame.h +++ linux-5.8.0/arch/x86/include/asm/frame.h @@ -60,12 +60,26 @@ #define FRAME_END "pop %" _ASM_BP "\n" #ifdef CONFIG_X86_64 + #define ENCODE_FRAME_POINTER \ "lea 1(%rsp), %rbp\n\t" + +static inline unsigned long encode_frame_pointer(struct pt_regs *regs) +{ + return (unsigned long)regs + 1; +} + #else /* !CONFIG_X86_64 */ + #define ENCODE_FRAME_POINTER \ "movl %esp, %ebp\n\t" \ "andl $0x7fffffff, %ebp\n\t" + +static inline unsigned long encode_frame_pointer(struct pt_regs *regs) +{ + return (unsigned long)regs & 0x7fffffff; +} + #endif /* CONFIG_X86_64 */ #endif /* __ASSEMBLY__ */ @@ -83,6 +97,11 @@ #define ENCODE_FRAME_POINTER +static inline unsigned long encode_frame_pointer(struct pt_regs *regs) +{ + return 0; +} + #endif #define FRAME_BEGIN --- linux-5.8.0.orig/arch/x86/include/asm/idtentry.h +++ linux-5.8.0/arch/x86/include/asm/idtentry.h @@ -246,7 +246,7 @@ instrumentation_begin(); \ irq_enter_rcu(); \ kvm_set_cpu_l1tf_flush_l1d(); \ - run_on_irqstack_cond(__##func, regs, regs); \ + run_sysvec_on_irqstack_cond(__##func, regs); \ irq_exit_rcu(); \ instrumentation_end(); \ idtentry_exit_cond_rcu(regs, rcu_exit); \ --- linux-5.8.0.orig/arch/x86/include/asm/insn.h +++ linux-5.8.0/arch/x86/include/asm/insn.h @@ -201,6 +201,21 @@ return insn_offset_displacement(insn) + insn->displacement.nbytes; } +/** + * for_each_insn_prefix() -- Iterate prefixes in the instruction + * @insn: Pointer to struct insn. + * @idx: Index storage. + * @prefix: Prefix byte. + * + * Iterate prefix bytes of given @insn. Each prefix byte is stored in @prefix + * and the index is stored in @idx (note that this @idx is just for a cursor, + * do not change it.) + * Since prefixes.nbytes can be bigger than 4 if some prefixes + * are repeated, it cannot be used for looping over the prefixes. + */ +#define for_each_insn_prefix(insn, idx, prefix) \ + for (idx = 0; idx < ARRAY_SIZE(insn->prefixes.bytes) && (prefix = insn->prefixes.bytes[idx]) != 0; idx++) + #define POP_SS_OPCODE 0x1f #define MOV_SREG_OPCODE 0x8e --- linux-5.8.0.orig/arch/x86/include/asm/intel-family.h +++ linux-5.8.0/arch/x86/include/asm/intel-family.h @@ -89,8 +89,16 @@ #define INTEL_FAM6_COMETLAKE 0xA5 #define INTEL_FAM6_COMETLAKE_L 0xA6 +#define INTEL_FAM6_ROCKETLAKE 0xA7 + #define INTEL_FAM6_SAPPHIRERAPIDS_X 0x8F +/* Hybrid Core/Atom Processors */ + +#define INTEL_FAM6_LAKEFIELD 0x8A +#define INTEL_FAM6_ALDERLAKE 0x97 +#define INTEL_FAM6_ALDERLAKE_L 0x9A + /* "Small Core" Processors (Atom) */ #define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */ --- linux-5.8.0.orig/arch/x86/include/asm/irq_stack.h +++ linux-5.8.0/arch/x86/include/asm/irq_stack.h @@ -3,6 +3,7 @@ #define _ASM_X86_IRQ_STACK_H #include +#include #include @@ -12,20 +13,50 @@ return __this_cpu_read(irq_count) != -1; } -void asm_call_on_stack(void *sp, void *func, void *arg); +void asm_call_on_stack(void *sp, void (*func)(void), void *arg); +void asm_call_sysvec_on_stack(void *sp, void (*func)(struct pt_regs *regs), + struct pt_regs *regs); +void asm_call_irq_on_stack(void *sp, void (*func)(struct irq_desc *desc), + struct irq_desc *desc); -static __always_inline void __run_on_irqstack(void *func, void *arg) +static __always_inline void __run_on_irqstack(void (*func)(void)) { void *tos = __this_cpu_read(hardirq_stack_ptr); __this_cpu_add(irq_count, 1); - asm_call_on_stack(tos - 8, func, arg); + asm_call_on_stack(tos - 8, func, NULL); + __this_cpu_sub(irq_count, 1); +} + +static __always_inline void +__run_sysvec_on_irqstack(void (*func)(struct pt_regs *regs), + struct pt_regs *regs) +{ + void *tos = __this_cpu_read(hardirq_stack_ptr); + + __this_cpu_add(irq_count, 1); + asm_call_sysvec_on_stack(tos - 8, func, regs); + __this_cpu_sub(irq_count, 1); +} + +static __always_inline void +__run_irq_on_irqstack(void (*func)(struct irq_desc *desc), + struct irq_desc *desc) +{ + void *tos = __this_cpu_read(hardirq_stack_ptr); + + __this_cpu_add(irq_count, 1); + asm_call_irq_on_stack(tos - 8, func, desc); __this_cpu_sub(irq_count, 1); } #else /* CONFIG_X86_64 */ static inline bool irqstack_active(void) { return false; } -static inline void __run_on_irqstack(void *func, void *arg) { } +static inline void __run_on_irqstack(void (*func)(void)) { } +static inline void __run_sysvec_on_irqstack(void (*func)(struct pt_regs *regs), + struct pt_regs *regs) { } +static inline void __run_irq_on_irqstack(void (*func)(struct irq_desc *desc), + struct irq_desc *desc) { } #endif /* !CONFIG_X86_64 */ static __always_inline bool irq_needs_irq_stack(struct pt_regs *regs) @@ -37,17 +68,40 @@ return !user_mode(regs) && !irqstack_active(); } -static __always_inline void run_on_irqstack_cond(void *func, void *arg, + +static __always_inline void run_on_irqstack_cond(void (*func)(void), struct pt_regs *regs) { - void (*__func)(void *arg) = func; + lockdep_assert_irqs_disabled(); + + if (irq_needs_irq_stack(regs)) + __run_on_irqstack(func); + else + func(); +} + +static __always_inline void +run_sysvec_on_irqstack_cond(void (*func)(struct pt_regs *regs), + struct pt_regs *regs) +{ + lockdep_assert_irqs_disabled(); + if (irq_needs_irq_stack(regs)) + __run_sysvec_on_irqstack(func, regs); + else + func(regs); +} + +static __always_inline void +run_irq_on_irqstack_cond(void (*func)(struct irq_desc *desc), struct irq_desc *desc, + struct pt_regs *regs) +{ lockdep_assert_irqs_disabled(); if (irq_needs_irq_stack(regs)) - __run_on_irqstack(__func, arg); + __run_irq_on_irqstack(func, desc); else - __func(arg); + func(desc); } #endif --- linux-5.8.0.orig/arch/x86/include/asm/kvm_host.h +++ linux-5.8.0/arch/x86/include/asm/kvm_host.h @@ -1641,12 +1641,14 @@ _ASM_EXTABLE(666b, 667b) #define KVM_ARCH_WANT_MMU_NOTIFIER -int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end); +int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, + unsigned flags); int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end); int kvm_test_age_hva(struct kvm *kvm, unsigned long hva); int kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); int kvm_cpu_has_injectable_intr(struct kvm_vcpu *v); int kvm_cpu_has_interrupt(struct kvm_vcpu *vcpu); +int kvm_cpu_has_extint(struct kvm_vcpu *v); int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu); int kvm_cpu_get_interrupt(struct kvm_vcpu *v); void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event); --- linux-5.8.0.orig/arch/x86/include/asm/mce.h +++ linux-5.8.0/arch/x86/include/asm/mce.h @@ -162,7 +162,8 @@ MCE_PRIO_EXTLOG, MCE_PRIO_UC, MCE_PRIO_EARLY, - MCE_PRIO_CEC + MCE_PRIO_CEC, + MCE_PRIO_HIGHEST = MCE_PRIO_CEC }; struct notifier_block; @@ -174,6 +175,15 @@ extern int mce_p5_enabled; +#ifdef CONFIG_ARCH_HAS_COPY_MC +extern void enable_copy_mc_fragile(void); +unsigned long __must_check copy_mc_fragile(void *dst, const void *src, unsigned cnt); +#else +static inline void enable_copy_mc_fragile(void) +{ +} +#endif + #ifdef CONFIG_X86_MCE int mcheck_init(void); void mcheck_cpu_init(struct cpuinfo_x86 *c); --- linux-5.8.0.orig/arch/x86/include/asm/msr-index.h +++ linux-5.8.0/arch/x86/include/asm/msr-index.h @@ -446,6 +446,7 @@ #define MSR_AMD64_IBSOP_REG_MASK ((1UL< /* - * Volatile isn't enough to prevent the compiler from reordering the - * read/write functions for the control registers and messing everything up. - * A memory clobber would solve the problem, but would prevent reordering of - * all loads stores around it, which can hurt performance. Solution is to - * use a variable and mimic reads and writes to it to enforce serialization + * The compiler should not reorder volatile asm statements with respect to each + * other: they should execute in program order. However GCC 4.9.x and 5.x have + * a bug (which was fixed in 8.1, 7.3 and 6.5) where they might reorder + * volatile asm. The write functions are not affected since they have memory + * clobbers preventing reordering. To prevent reads from being reordered with + * respect to writes, use a dummy memory operand. */ -extern unsigned long __force_order; + +#define __FORCE_ORDER "m"(*(unsigned int *)0x1000UL) void native_write_cr0(unsigned long val); static inline unsigned long native_read_cr0(void) { unsigned long val; - asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); + asm volatile("mov %%cr0,%0\n\t" : "=r" (val) : __FORCE_ORDER); return val; } static __always_inline unsigned long native_read_cr2(void) { unsigned long val; - asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); + asm volatile("mov %%cr2,%0\n\t" : "=r" (val) : __FORCE_ORDER); return val; } static __always_inline void native_write_cr2(unsigned long val) { - asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); + asm volatile("mov %0,%%cr2": : "r" (val) : "memory"); } static inline unsigned long __native_read_cr3(void) { unsigned long val; - asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); + asm volatile("mov %%cr3,%0\n\t" : "=r" (val) : __FORCE_ORDER); return val; } static inline void native_write_cr3(unsigned long val) { - asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); + asm volatile("mov %0,%%cr3": : "r" (val) : "memory"); } static inline unsigned long native_read_cr4(void) @@ -64,10 +66,10 @@ asm volatile("1: mov %%cr4, %0\n" "2:\n" _ASM_EXTABLE(1b, 2b) - : "=r" (val), "=m" (__force_order) : "0" (0)); + : "=r" (val) : "0" (0), __FORCE_ORDER); #else /* CR4 always exists on x86_64. */ - asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); + asm volatile("mov %%cr4,%0\n\t" : "=r" (val) : __FORCE_ORDER); #endif return val; } --- linux-5.8.0.orig/arch/x86/include/asm/string_64.h +++ linux-5.8.0/arch/x86/include/asm/string_64.h @@ -82,38 +82,6 @@ #endif -#define __HAVE_ARCH_MEMCPY_MCSAFE 1 -__must_check unsigned long __memcpy_mcsafe(void *dst, const void *src, - size_t cnt); -DECLARE_STATIC_KEY_FALSE(mcsafe_key); - -/** - * memcpy_mcsafe - copy memory with indication if a machine check happened - * - * @dst: destination address - * @src: source address - * @cnt: number of bytes to copy - * - * Low level memory copy function that catches machine checks - * We only call into the "safe" function on systems that can - * actually do machine check recovery. Everyone else can just - * use memcpy(). - * - * Return 0 for success, or number of bytes not copied if there was an - * exception. - */ -static __always_inline __must_check unsigned long -memcpy_mcsafe(void *dst, const void *src, size_t cnt) -{ -#ifdef CONFIG_X86_MCE - if (static_branch_unlikely(&mcsafe_key)) - return __memcpy_mcsafe(dst, src, cnt); - else -#endif - memcpy(dst, src, cnt); - return 0; -} - #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE #define __HAVE_ARCH_MEMCPY_FLUSHCACHE 1 void __memcpy_flushcache(void *dst, const void *src, size_t cnt); --- linux-5.8.0.orig/arch/x86/include/asm/switch_to.h +++ linux-5.8.0/arch/x86/include/asm/switch_to.h @@ -12,6 +12,27 @@ __visible struct task_struct *__switch_to(struct task_struct *prev, struct task_struct *next); +/* This runs runs on the previous thread's stack. */ +static inline void prepare_switch_to(struct task_struct *next) +{ +#ifdef CONFIG_VMAP_STACK + /* + * If we switch to a stack that has a top-level paging entry + * that is not present in the current mm, the resulting #PF will + * will be promoted to a double-fault and we'll panic. Probe + * the new stack now so that vmalloc_fault can fix up the page + * tables if needed. This can only happen if we use a stack + * in vmap space. + * + * We assume that the stack is aligned so that it never spans + * more than one top-level paging entry. + * + * To minimize cache pollution, just follow the stack pointer. + */ + READ_ONCE(*(unsigned char *)next->thread.sp); +#endif +} + asmlinkage void ret_from_fork(void); /* @@ -46,6 +67,8 @@ #define switch_to(prev, next, last) \ do { \ + prepare_switch_to(next); \ + \ ((last) = __switch_to_asm((prev), (next))); \ } while (0) --- linux-5.8.0.orig/arch/x86/include/asm/sync_core.h +++ linux-5.8.0/arch/x86/include/asm/sync_core.h @@ -16,12 +16,13 @@ /* With PTI, we unconditionally serialize before running user code. */ if (static_cpu_has(X86_FEATURE_PTI)) return; + /* - * Return from interrupt and NMI is done through iret, which is core - * serializing. + * Even if we're in an interrupt, we might reschedule before returning, + * in which case we could switch to a different thread in the same mm + * and return using SYSRET or SYSEXIT. Instead of trying to keep + * track of our need to sync the core, just sync right away. */ - if (in_irq() || in_nmi()) - return; sync_core(); } --- linux-5.8.0.orig/arch/x86/include/asm/thread_info.h +++ linux-5.8.0/arch/x86/include/asm/thread_info.h @@ -223,10 +223,31 @@ #endif +/* + * Thread-synchronous status. + * + * This is different from the flags in that nobody else + * ever touches our thread-synchronous status, so we don't + * have to worry about atomic accesses. + */ +#define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/ + +#ifndef __ASSEMBLY__ #ifdef CONFIG_COMPAT #define TS_I386_REGS_POKED 0x0004 /* regs poked by 32-bit ptracer */ +#define TS_COMPAT_RESTART 0x0008 + +#define arch_set_restart_data arch_set_restart_data + +static inline void arch_set_restart_data(struct restart_block *restart) +{ + struct thread_info *ti = current_thread_info(); + if (ti->status & TS_COMPAT) + ti->status |= TS_COMPAT_RESTART; + else + ti->status &= ~TS_COMPAT_RESTART; +} #endif -#ifndef __ASSEMBLY__ #ifdef CONFIG_X86_32 #define in_ia32_syscall() true --- linux-5.8.0.orig/arch/x86/include/asm/topology.h +++ linux-5.8.0/arch/x86/include/asm/topology.h @@ -110,6 +110,8 @@ #define topology_die_id(cpu) (cpu_data(cpu).cpu_die_id) #define topology_core_id(cpu) (cpu_data(cpu).cpu_core_id) +extern unsigned int __max_die_per_package; + #ifdef CONFIG_SMP #define topology_die_cpumask(cpu) (per_cpu(cpu_die_map, cpu)) #define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu)) @@ -118,8 +120,6 @@ extern unsigned int __max_logical_packages; #define topology_max_packages() (__max_logical_packages) -extern unsigned int __max_die_per_package; - static inline int topology_max_die_per_package(void) { return __max_die_per_package; @@ -193,7 +193,7 @@ } #endif /* CONFIG_SCHED_MC_PRIO */ -#ifdef CONFIG_SMP +#if defined(CONFIG_SMP) && defined(CONFIG_X86_64) #include DECLARE_STATIC_KEY_FALSE(arch_scale_freq_key); --- linux-5.8.0.orig/arch/x86/include/asm/uaccess.h +++ linux-5.8.0/arch/x86/include/asm/uaccess.h @@ -314,11 +314,14 @@ #define __get_user_size(x, ptr, size, retval) \ do { \ + unsigned char x_u8__; \ + \ retval = 0; \ __chk_user_ptr(ptr); \ switch (size) { \ case 1: \ - __get_user_asm(x, ptr, retval, "b", "=q"); \ + __get_user_asm(x_u8__, ptr, retval, "b", "=q"); \ + (x) = x_u8__; \ break; \ case 2: \ __get_user_asm(x, ptr, retval, "w", "=r"); \ @@ -452,6 +455,15 @@ unsigned long __must_check clear_user(void __user *mem, unsigned long len); unsigned long __must_check __clear_user(void __user *mem, unsigned long len); +#ifdef CONFIG_ARCH_HAS_COPY_MC +unsigned long __must_check +copy_mc_to_kernel(void *to, const void *from, unsigned len); +#define copy_mc_to_kernel copy_mc_to_kernel + +unsigned long __must_check +copy_mc_to_user(void *to, const void *from, unsigned len); +#endif + /* * movsl can be slow when source and dest are not both 8-byte aligned */ --- linux-5.8.0.orig/arch/x86/include/asm/uaccess_64.h +++ linux-5.8.0/arch/x86/include/asm/uaccess_64.h @@ -47,22 +47,6 @@ } static __always_inline __must_check unsigned long -copy_to_user_mcsafe(void *to, const void *from, unsigned len) -{ - unsigned long ret; - - __uaccess_begin(); - /* - * Note, __memcpy_mcsafe() is explicitly used since it can - * handle exceptions / faults. memcpy_mcsafe() may fall back to - * memcpy() which lacks this handling. - */ - ret = __memcpy_mcsafe(to, from, len); - __uaccess_end(); - return ret; -} - -static __always_inline __must_check unsigned long raw_copy_from_user(void *dst, const void __user *src, unsigned long size) { return copy_user_generic(dst, (__force void *)src, size); @@ -102,8 +86,4 @@ kasan_check_write(dst, size); return __copy_user_flushcache(dst, src, size); } - -unsigned long -mcsafe_handle_tail(char *to, char *from, unsigned len); - #endif /* _ASM_X86_UACCESS_64_H */ --- linux-5.8.0.orig/arch/x86/include/asm/virtext.h +++ linux-5.8.0/arch/x86/include/asm/virtext.h @@ -30,15 +30,22 @@ } -/** Disable VMX on the current CPU +/** + * cpu_vmxoff() - Disable VMX on the current CPU * - * vmxoff causes a undefined-opcode exception if vmxon was not run - * on the CPU previously. Only call this function if you know VMX - * is enabled. + * Disable VMX and clear CR4.VMXE (even if VMXOFF faults) + * + * Note, VMXOFF causes a #UD if the CPU is !post-VMXON, but it's impossible to + * atomically track post-VMXON state, e.g. this may be called in NMI context. + * Eat all faults as all other faults on VMXOFF faults are mode related, i.e. + * faults are guaranteed to be due to the !post-VMXON check unless the CPU is + * magically in RM, VM86, compat mode, or at CPL>0. */ static inline void cpu_vmxoff(void) { - asm volatile ("vmxoff"); + asm_volatile_goto("1: vmxoff\n\t" + _ASM_EXTABLE(1b, %l[fault]) :::: fault); +fault: cr4_clear_bits(X86_CR4_VMXE); } --- linux-5.8.0.orig/arch/x86/kernel/acpi/boot.c +++ linux-5.8.0/arch/x86/kernel/acpi/boot.c @@ -1554,10 +1554,18 @@ /* * Initialize the ACPI boot-time table parser. */ - if (acpi_table_init()) { + if (acpi_locate_initial_tables()) disable_acpi(); - return; - } + else + acpi_reserve_initial_tables(); +} + +int __init early_acpi_boot_init(void) +{ + if (acpi_disabled) + return 1; + + acpi_table_init_complete(); acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); @@ -1570,18 +1578,9 @@ } else { printk(KERN_WARNING PREFIX "Disabling ACPI support\n"); disable_acpi(); - return; + return 1; } } -} - -int __init early_acpi_boot_init(void) -{ - /* - * If acpi_disabled, bail out - */ - if (acpi_disabled) - return 1; /* * Process the Multiple APIC Description Table (MADT), if present --- linux-5.8.0.orig/arch/x86/kernel/acpi/wakeup_32.S +++ linux-5.8.0/arch/x86/kernel/acpi/wakeup_32.S @@ -3,6 +3,7 @@ #include #include #include +#include # Copyright 2003, 2008 Pavel Machek #include #include +#include # Copyright 2003 Pavel Machek = 0x40; bytes++) { - u8 id; - - pos &= ~3; - id = read_pci_config_byte(bus, slot, func, pos+PCI_CAP_LIST_ID); - if (id == 0xff) - break; - if (id == cap) - return pos; - pos = read_pci_config_byte(bus, slot, func, - pos+PCI_CAP_LIST_NEXT); - } - return 0; -} - /* Read a standard AGPv3 bridge header */ static u32 __init read_agp(int bus, int slot, int func, int cap, u32 *order) { @@ -240,8 +214,8 @@ case PCI_CLASS_BRIDGE_HOST: case PCI_CLASS_BRIDGE_OTHER: /* needed? */ /* AGP bridge? */ - cap = find_cap(bus, slot, func, - PCI_CAP_ID_AGP); + cap = pci_early_find_cap(bus, slot, + func, PCI_CAP_ID_AGP); if (!cap) break; *valid_agp = 1; --- linux-5.8.0.orig/arch/x86/kernel/apic/apic.c +++ linux-5.8.0/arch/x86/kernel/apic/apic.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -472,6 +473,9 @@ { u64 tsc; + /* This MSR is special and need a special fence: */ + weak_wrmsr_fence(); + tsc = rdtsc(); wrmsrl(MSR_IA32_TSC_DEADLINE, tsc + (((u64) delta) * TSC_DIVISOR)); return 0; @@ -1838,20 +1842,22 @@ return; if (remap_mode != IRQ_REMAP_X2APIC_MODE) { - /* IR is required if there is APIC ID > 255 even when running - * under KVM + /* + * Using X2APIC without IR is not architecturally supported + * on bare metal but may be supported in guests. */ - if (max_physical_apicid > 255 || - !x86_init.hyper.x2apic_available()) { + if (!x86_init.hyper.x2apic_available()) { pr_info("x2apic: IRQ remapping doesn't support X2APIC mode\n"); x2apic_disable(); return; } /* - * without IR all CPUs can be addressed by IOAPIC/MSI - * only in physical mode + * Without IR, all CPUs can be addressed by IOAPIC/MSI only + * in physical mode, and CPUs with an APIC ID that cannnot + * be addressed must not be brought online. */ + x2apic_set_max_apicid(255); x2apic_phys = 1; } x2apic_enable(); @@ -2308,6 +2314,11 @@ [0 ... NR_CPUS - 1] = -1, }; +bool arch_match_cpu_phys_id(int cpu, u64 phys_id) +{ + return phys_id == cpuid_to_apicid[cpu]; +} + #ifdef CONFIG_SMP /** * apic_id_is_primary_thread - Check whether APIC ID belongs to a primary thread --- linux-5.8.0.orig/arch/x86/kernel/apic/io_apic.c +++ linux-5.8.0/arch/x86/kernel/apic/io_apic.c @@ -1033,6 +1033,16 @@ if (idx >= 0 && test_bit(mp_irqs[idx].srcbus, mp_bus_not_pci)) { irq = mp_irqs[idx].srcbusirq; legacy = mp_is_legacy_irq(irq); + /* + * IRQ2 is unusable for historical reasons on systems which + * have a legacy PIC. See the comment vs. IRQ2 further down. + * + * If this gets removed at some point then the related code + * in lapic_assign_system_vectors() needs to be adjusted as + * well. + */ + if (legacy && irq == PIC_CASCADE_IR) + return -EINVAL; } mutex_lock(&ioapic_mutex); @@ -2243,6 +2253,7 @@ legacy_pic->init(0); legacy_pic->make_irq(0); apic_write(APIC_LVT0, APIC_DM_EXTINT); + legacy_pic->unmask(0); unlock_ExtINT_logic(); @@ -2335,8 +2346,13 @@ static void ioapic_destroy_irqdomain(int idx) { + struct ioapic_domain_cfg *cfg = &ioapics[idx].irqdomain_cfg; + struct fwnode_handle *fn = ioapics[idx].irqdomain->fwnode; + if (ioapics[idx].irqdomain) { irq_domain_remove(ioapics[idx].irqdomain); + if (!cfg->dev) + irq_domain_free_fwnode(fn); ioapics[idx].irqdomain = NULL; } } --- linux-5.8.0.orig/arch/x86/kernel/apic/vector.c +++ linux-5.8.0/arch/x86/kernel/apic/vector.c @@ -161,6 +161,7 @@ apicd->move_in_progress = true; apicd->prev_vector = apicd->vector; apicd->prev_cpu = apicd->cpu; + WARN_ON_ONCE(apicd->cpu == newcpu); } else { irq_matrix_free(vector_matrix, apicd->cpu, apicd->vector, managed); @@ -272,20 +273,24 @@ const struct cpumask *affmsk = irq_data_get_affinity_mask(irqd); int node = irq_data_get_node(irqd); - if (node == NUMA_NO_NODE) - goto all; - /* Try the intersection of @affmsk and node mask */ - cpumask_and(vector_searchmask, cpumask_of_node(node), affmsk); - if (!assign_vector_locked(irqd, vector_searchmask)) - return 0; - /* Try the node mask */ - if (!assign_vector_locked(irqd, cpumask_of_node(node))) - return 0; -all: + if (node != NUMA_NO_NODE) { + /* Try the intersection of @affmsk and node mask */ + cpumask_and(vector_searchmask, cpumask_of_node(node), affmsk); + if (!assign_vector_locked(irqd, vector_searchmask)) + return 0; + } + /* Try the full affinity mask */ cpumask_and(vector_searchmask, affmsk, cpu_online_mask); if (!assign_vector_locked(irqd, vector_searchmask)) return 0; + + if (node != NUMA_NO_NODE) { + /* Try the node mask */ + if (!assign_vector_locked(irqd, cpumask_of_node(node))) + return 0; + } + /* Try the full online mask */ return assign_vector_locked(irqd, cpu_online_mask); } @@ -560,6 +565,10 @@ * as that can corrupt the affinity move state. */ irqd_set_handle_enforce_irqctx(irqd); + + /* Don't invoke affinity setter on deactivated interrupts */ + irqd_set_affinity_on_activate(irqd); + /* * Legacy vectors are already assigned when the IOAPIC * takes them over. They stay on the same vector. This is @@ -906,7 +915,7 @@ __send_cleanup_vector(apicd); } -static void __irq_complete_move(struct irq_cfg *cfg, unsigned vector) +void irq_complete_move(struct irq_cfg *cfg) { struct apic_chip_data *apicd; @@ -914,15 +923,16 @@ if (likely(!apicd->move_in_progress)) return; - if (vector == apicd->vector && apicd->cpu == smp_processor_id()) + /* + * If the interrupt arrived on the new target CPU, cleanup the + * vector on the old target CPU. A vector check is not required + * because an interrupt can never move from one vector to another + * on the same CPU. + */ + if (apicd->cpu == smp_processor_id()) __send_cleanup_vector(apicd); } -void irq_complete_move(struct irq_cfg *cfg) -{ - __irq_complete_move(cfg, ~get_irq_regs()->orig_ax); -} - /* * Called from fixup_irqs() with @desc->lock held and interrupts disabled. */ --- linux-5.8.0.orig/arch/x86/kernel/apic/x2apic_cluster.c +++ linux-5.8.0/arch/x86/kernel/apic/x2apic_cluster.c @@ -29,7 +29,8 @@ { u32 dest = per_cpu(x86_cpu_to_logical_apicid, cpu); - x2apic_wrmsr_fence(); + /* x2apic MSRs are special and need a special fence: */ + weak_wrmsr_fence(); __x2apic_send_IPI_dest(dest, vector, APIC_DEST_LOGICAL); } @@ -41,7 +42,8 @@ unsigned long flags; u32 dest; - x2apic_wrmsr_fence(); + /* x2apic MSRs are special and need a special fence: */ + weak_wrmsr_fence(); local_irq_save(flags); tmpmsk = this_cpu_cpumask_var_ptr(ipi_mask); --- linux-5.8.0.orig/arch/x86/kernel/apic/x2apic_phys.c +++ linux-5.8.0/arch/x86/kernel/apic/x2apic_phys.c @@ -8,6 +8,12 @@ int x2apic_phys; static struct apic apic_x2apic_phys; +static u32 x2apic_max_apicid __ro_after_init; + +void __init x2apic_set_max_apicid(u32 apicid) +{ + x2apic_max_apicid = apicid; +} static int __init set_x2apic_phys_mode(char *arg) { @@ -37,7 +43,8 @@ { u32 dest = per_cpu(x86_cpu_to_apicid, cpu); - x2apic_wrmsr_fence(); + /* x2apic MSRs are special and need a special fence: */ + weak_wrmsr_fence(); __x2apic_send_IPI_dest(dest, vector, APIC_DEST_PHYSICAL); } @@ -48,7 +55,8 @@ unsigned long this_cpu; unsigned long flags; - x2apic_wrmsr_fence(); + /* x2apic MSRs are special and need a special fence: */ + weak_wrmsr_fence(); local_irq_save(flags); @@ -98,6 +106,9 @@ /* Common x2apic functions, also used by x2apic_cluster */ int x2apic_apic_id_valid(u32 apicid) { + if (x2apic_max_apicid && apicid > x2apic_max_apicid) + return 0; + return 1; } @@ -116,7 +127,8 @@ { unsigned long cfg = __prepare_ICR(which, vector, 0); - x2apic_wrmsr_fence(); + /* x2apic MSRs are special and need a special fence: */ + weak_wrmsr_fence(); native_x2apic_icr_write(cfg, 0); } --- linux-5.8.0.orig/arch/x86/kernel/cpu/amd.c +++ linux-5.8.0/arch/x86/kernel/cpu/amd.c @@ -329,7 +329,6 @@ */ static void amd_get_topology(struct cpuinfo_x86 *c) { - u8 node_id; int cpu = smp_processor_id(); /* get information required for multi-node processors */ @@ -339,7 +338,7 @@ cpuid(0x8000001e, &eax, &ebx, &ecx, &edx); - node_id = ecx & 0xff; + c->cpu_die_id = ecx & 0xff; if (c->x86 == 0x15) c->cu_id = ebx & 0xff; @@ -359,15 +358,15 @@ if (!err) c->x86_coreid_bits = get_count_order(c->x86_max_cores); - cacheinfo_amd_init_llc_id(c, cpu, node_id); + cacheinfo_amd_init_llc_id(c, cpu); } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { u64 value; rdmsrl(MSR_FAM10H_NODE_ID, value); - node_id = value & 7; + c->cpu_die_id = value & 7; - per_cpu(cpu_llc_id, cpu) = node_id; + per_cpu(cpu_llc_id, cpu) = c->cpu_die_id; } else return; @@ -392,7 +391,7 @@ /* Convert the initial APIC ID into the socket ID */ c->phys_proc_id = c->initial_apicid >> bits; /* use socket ID also for last level cache */ - per_cpu(cpu_llc_id, cpu) = c->phys_proc_id; + per_cpu(cpu_llc_id, cpu) = c->cpu_die_id = c->phys_proc_id; } static void amd_detect_ppin(struct cpuinfo_x86 *c) @@ -569,12 +568,12 @@ u32 ecx; ecx = cpuid_ecx(0x8000001e); - nodes_per_socket = ((ecx >> 8) & 7) + 1; + __max_die_per_package = nodes_per_socket = ((ecx >> 8) & 7) + 1; } else if (boot_cpu_has(X86_FEATURE_NODEID_MSR)) { u64 value; rdmsrl(MSR_FAM10H_NODE_ID, value); - nodes_per_socket = ((value >> 3) & 7) + 1; + __max_die_per_package = nodes_per_socket = ((value >> 3) & 7) + 1; } if (!boot_cpu_has(X86_FEATURE_AMD_SSBD) && --- linux-5.8.0.orig/arch/x86/kernel/cpu/bugs.c +++ linux-5.8.0/arch/x86/kernel/cpu/bugs.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "cpu.h" @@ -740,11 +741,13 @@ if (boot_cpu_has(X86_FEATURE_IBPB)) { setup_force_cpu_cap(X86_FEATURE_USE_IBPB); + spectre_v2_user_ibpb = mode; switch (cmd) { case SPECTRE_V2_USER_CMD_FORCE: case SPECTRE_V2_USER_CMD_PRCTL_IBPB: case SPECTRE_V2_USER_CMD_SECCOMP_IBPB: static_branch_enable(&switch_mm_always_ibpb); + spectre_v2_user_ibpb = SPECTRE_V2_USER_STRICT; break; case SPECTRE_V2_USER_CMD_PRCTL: case SPECTRE_V2_USER_CMD_AUTO: @@ -758,8 +761,6 @@ pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n", static_key_enabled(&switch_mm_always_ibpb) ? "always-on" : "conditional"); - - spectre_v2_user_ibpb = mode; } /* @@ -1259,6 +1260,14 @@ return 0; } +static bool is_spec_ib_user_controlled(void) +{ + return spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL || + spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP || + spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL || + spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP; +} + static int ib_prctl_set(struct task_struct *task, unsigned long ctrl) { switch (ctrl) { @@ -1266,17 +1275,26 @@ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE && spectre_v2_user_stibp == SPECTRE_V2_USER_NONE) return 0; - /* - * Indirect branch speculation is always disabled in strict - * mode. It can neither be enabled if it was force-disabled - * by a previous prctl call. + /* + * With strict mode for both IBPB and STIBP, the instruction + * code paths avoid checking this task flag and instead, + * unconditionally run the instruction. However, STIBP and IBPB + * are independent and either can be set to conditionally + * enabled regardless of the mode of the other. + * + * If either is set to conditional, allow the task flag to be + * updated, unless it was force-disabled by a previous prctl + * call. Currently, this is possible on an AMD CPU which has the + * feature X86_FEATURE_AMD_STIBP_ALWAYS_ON. In this case, if the + * kernel is booted with 'spectre_v2_user=seccomp', then + * spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP and + * spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED. */ - if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED || + if (!is_spec_ib_user_controlled() || task_spec_ib_force_disable(task)) return -EPERM; + task_clear_spec_ib_disable(task); task_update_spec_tif(task); break; @@ -1289,10 +1307,10 @@ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE && spectre_v2_user_stibp == SPECTRE_V2_USER_NONE) return -EPERM; - if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED) + + if (!is_spec_ib_user_controlled()) return 0; + task_set_spec_ib_disable(task); if (ctrl == PR_SPEC_FORCE_DISABLE) task_set_spec_ib_force_disable(task); @@ -1357,20 +1375,17 @@ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE && spectre_v2_user_stibp == SPECTRE_V2_USER_NONE) return PR_SPEC_ENABLE; - else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT || - spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED) - return PR_SPEC_DISABLE; - else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL || - spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP || - spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL || - spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) { + else if (is_spec_ib_user_controlled()) { if (task_spec_ib_force_disable(task)) return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE; if (task_spec_ib_disable(task)) return PR_SPEC_PRCTL | PR_SPEC_DISABLE; return PR_SPEC_PRCTL | PR_SPEC_ENABLE; - } else + } else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT || + spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT || + spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED) + return PR_SPEC_DISABLE; + else return PR_SPEC_NOT_AFFECTED; } @@ -1556,7 +1571,12 @@ static ssize_t itlb_multihit_show_state(char *buf) { - if (itlb_multihit_kvm_mitigation) + if (!boot_cpu_has(X86_FEATURE_MSR_IA32_FEAT_CTL) || + !boot_cpu_has(X86_FEATURE_VMX)) + return sprintf(buf, "KVM: Mitigation: VMX unsupported\n"); + else if (!(cr4_read_shadow() & X86_CR4_VMXE)) + return sprintf(buf, "KVM: Mitigation: VMX disabled\n"); + else if (itlb_multihit_kvm_mitigation) return sprintf(buf, "KVM: Mitigation: Split huge pages\n"); else return sprintf(buf, "KVM: Vulnerable\n"); --- linux-5.8.0.orig/arch/x86/kernel/cpu/cacheinfo.c +++ linux-5.8.0/arch/x86/kernel/cpu/cacheinfo.c @@ -646,7 +646,7 @@ return i; } -void cacheinfo_amd_init_llc_id(struct cpuinfo_x86 *c, int cpu, u8 node_id) +void cacheinfo_amd_init_llc_id(struct cpuinfo_x86 *c, int cpu) { /* * We may have multiple LLCs if L3 caches exist, so check if we @@ -657,7 +657,7 @@ if (c->x86 < 0x17) { /* LLC is at the node level. */ - per_cpu(cpu_llc_id, cpu) = node_id; + per_cpu(cpu_llc_id, cpu) = c->cpu_die_id; } else if (c->x86 == 0x17 && c->x86_model <= 0x1F) { /* * LLC is at the core complex level. @@ -684,7 +684,7 @@ } } -void cacheinfo_hygon_init_llc_id(struct cpuinfo_x86 *c, int cpu, u8 node_id) +void cacheinfo_hygon_init_llc_id(struct cpuinfo_x86 *c, int cpu) { /* * We may have multiple LLCs if L3 caches exist, so check if we --- linux-5.8.0.orig/arch/x86/kernel/cpu/common.c +++ linux-5.8.0/arch/x86/kernel/cpu/common.c @@ -358,7 +358,7 @@ unsigned long bits_missing = 0; set_register: - asm volatile("mov %0,%%cr0": "+r" (val), "+m" (__force_order)); + asm volatile("mov %0,%%cr0": "+r" (val) : : "memory"); if (static_branch_likely(&cr_pinning)) { if (unlikely((val & X86_CR0_WP) != X86_CR0_WP)) { @@ -377,7 +377,7 @@ unsigned long bits_changed = 0; set_register: - asm volatile("mov %0,%%cr4": "+r" (val), "+m" (cr4_pinned_bits)); + asm volatile("mov %0,%%cr4": "+r" (val) : : "memory"); if (static_branch_likely(&cr_pinning)) { if (unlikely((val & cr4_pinned_mask) != cr4_pinned_bits)) { --- linux-5.8.0.orig/arch/x86/kernel/cpu/hygon.c +++ linux-5.8.0/arch/x86/kernel/cpu/hygon.c @@ -64,7 +64,6 @@ */ static void hygon_get_topology(struct cpuinfo_x86 *c) { - u8 node_id; int cpu = smp_processor_id(); /* get information required for multi-node processors */ @@ -74,7 +73,7 @@ cpuid(0x8000001e, &eax, &ebx, &ecx, &edx); - node_id = ecx & 0xff; + c->cpu_die_id = ecx & 0xff; c->cpu_core_id = ebx & 0xff; @@ -92,14 +91,14 @@ /* Socket ID is ApicId[6] for these processors. */ c->phys_proc_id = c->apicid >> APICID_SOCKET_ID_BIT; - cacheinfo_hygon_init_llc_id(c, cpu, node_id); + cacheinfo_hygon_init_llc_id(c, cpu); } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { u64 value; rdmsrl(MSR_FAM10H_NODE_ID, value); - node_id = value & 7; + c->cpu_die_id = value & 7; - per_cpu(cpu_llc_id, cpu) = node_id; + per_cpu(cpu_llc_id, cpu) = c->cpu_die_id; } else return; @@ -122,7 +121,7 @@ /* Convert the initial APIC ID into the socket ID */ c->phys_proc_id = c->initial_apicid >> bits; /* use socket ID also for last level cache */ - per_cpu(cpu_llc_id, cpu) = c->phys_proc_id; + per_cpu(cpu_llc_id, cpu) = c->cpu_die_id = c->phys_proc_id; } static void srat_detect_node(struct cpuinfo_x86 *c) --- linux-5.8.0.orig/arch/x86/kernel/cpu/intel.c +++ linux-5.8.0/arch/x86/kernel/cpu/intel.c @@ -1156,6 +1156,9 @@ X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_L, 1), X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, 1), X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, 1), + X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, 1), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, 1), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, 1), {} }; --- linux-5.8.0.orig/arch/x86/kernel/cpu/mce/core.c +++ linux-5.8.0/arch/x86/kernel/cpu/mce/core.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -162,7 +161,8 @@ void mce_register_decode_chain(struct notifier_block *nb) { - if (WARN_ON(nb->priority > MCE_PRIO_MCELOG && nb->priority < MCE_PRIO_EDAC)) + if (WARN_ON(nb->priority < MCE_PRIO_LOWEST || + nb->priority > MCE_PRIO_HIGHEST)) return; blocking_notifier_chain_register(&x86_mce_decoder_chain, nb); @@ -370,42 +370,105 @@ return -1; } +__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup, + struct pt_regs *regs, int trapnr, + unsigned long error_code, + unsigned long fault_addr) +{ + pr_emerg("MSR access error: RDMSR from 0x%x at rIP: 0x%lx (%pS)\n", + (unsigned int)regs->cx, regs->ip, (void *)regs->ip); + + show_stack_regs(regs); + + panic("MCA architectural violation!\n"); + + while (true) + cpu_relax(); + + return true; +} + /* MSR access wrappers used for error injection */ -static u64 mce_rdmsrl(u32 msr) +static noinstr u64 mce_rdmsrl(u32 msr) { - u64 v; + DECLARE_ARGS(val, low, high); if (__this_cpu_read(injectm.finished)) { - int offset = msr_to_offset(msr); + int offset; + u64 ret; + + instrumentation_begin(); + offset = msr_to_offset(msr); if (offset < 0) - return 0; - return *(u64 *)((char *)this_cpu_ptr(&injectm) + offset); - } + ret = 0; + else + ret = *(u64 *)((char *)this_cpu_ptr(&injectm) + offset); - if (rdmsrl_safe(msr, &v)) { - WARN_ONCE(1, "mce: Unable to read MSR 0x%x!\n", msr); - /* - * Return zero in case the access faulted. This should - * not happen normally but can happen if the CPU does - * something weird, or if the code is buggy. - */ - v = 0; + instrumentation_end(); + + return ret; } - return v; + /* + * RDMSR on MCA MSRs should not fault. If they do, this is very much an + * architectural violation and needs to be reported to hw vendor. Panic + * the box to not allow any further progress. + */ + asm volatile("1: rdmsr\n" + "2:\n" + _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_rdmsr_fault) + : EAX_EDX_RET(val, low, high) : "c" (msr)); + + + return EAX_EDX_VAL(val, low, high); +} + +__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup, + struct pt_regs *regs, int trapnr, + unsigned long error_code, + unsigned long fault_addr) +{ + pr_emerg("MSR access error: WRMSR to 0x%x (tried to write 0x%08x%08x) at rIP: 0x%lx (%pS)\n", + (unsigned int)regs->cx, (unsigned int)regs->dx, (unsigned int)regs->ax, + regs->ip, (void *)regs->ip); + + show_stack_regs(regs); + + panic("MCA architectural violation!\n"); + + while (true) + cpu_relax(); + + return true; } -static void mce_wrmsrl(u32 msr, u64 v) +static noinstr void mce_wrmsrl(u32 msr, u64 v) { + u32 low, high; + if (__this_cpu_read(injectm.finished)) { - int offset = msr_to_offset(msr); + int offset; + + instrumentation_begin(); + offset = msr_to_offset(msr); if (offset >= 0) *(u64 *)((char *)this_cpu_ptr(&injectm) + offset) = v; + + instrumentation_end(); + return; } - wrmsrl(msr, v); + + low = (u32)v; + high = (u32)(v >> 32); + + /* See comment in mce_rdmsrl() */ + asm volatile("1: wrmsr\n" + "2:\n" + _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_fault) + : : "c" (msr), "a"(low), "d" (high) : "memory"); } /* @@ -1298,8 +1361,10 @@ * When there's any problem use only local no_way_out state. */ if (!lmce) { - if (mce_end(order) < 0) - no_way_out = worst >= MCE_PANIC_SEVERITY; + if (mce_end(order) < 0) { + if (!no_way_out) + no_way_out = worst >= MCE_PANIC_SEVERITY; + } } else { /* * If there was a fatal machine check we should have @@ -1345,7 +1410,7 @@ current->mce_kill_me.func = kill_me_maybe; if (kill_it) current->mce_kill_me.func = kill_me_now; - task_work_add(current, ¤t->mce_kill_me, true); + task_work_add(current, ¤t->mce_kill_me, TWA_RESUME); } else { /* * Handle an MCE which has happened in kernel space but from @@ -2059,7 +2124,7 @@ and older. * mce=nobootlog Don't log MCEs from before booting. * mce=bios_cmci_threshold Don't program the CMCI threshold - * mce=recovery force enable memcpy_mcsafe() + * mce=recovery force enable copy_mc_fragile() */ static int __init mcheck_enable(char *str) { @@ -2667,13 +2732,10 @@ static void __init mcheck_debugfs_init(void) { } #endif -DEFINE_STATIC_KEY_FALSE(mcsafe_key); -EXPORT_SYMBOL_GPL(mcsafe_key); - static int __init mcheck_late_init(void) { if (mca_cfg.recovery) - static_branch_inc(&mcsafe_key); + enable_copy_mc_fragile(); mcheck_debugfs_init(); --- linux-5.8.0.orig/arch/x86/kernel/cpu/mce/inject.c +++ linux-5.8.0/arch/x86/kernel/cpu/mce/inject.c @@ -511,7 +511,7 @@ */ if (inj_type == DFR_INT_INJ) { i_mce.status |= MCI_STATUS_DEFERRED; - i_mce.status |= (i_mce.status & ~MCI_STATUS_UC); + i_mce.status &= ~MCI_STATUS_UC; } /* --- linux-5.8.0.orig/arch/x86/kernel/cpu/mce/internal.h +++ linux-5.8.0/arch/x86/kernel/cpu/mce/internal.h @@ -185,4 +185,14 @@ static inline bool amd_filter_mce(struct mce *m) { return false; }; #endif +__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup, + struct pt_regs *regs, int trapnr, + unsigned long error_code, + unsigned long fault_addr); + +__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup, + struct pt_regs *regs, int trapnr, + unsigned long error_code, + unsigned long fault_addr); + #endif /* __X86_MCE_INTERNAL_H__ */ --- linux-5.8.0.orig/arch/x86/kernel/cpu/mce/severity.c +++ linux-5.8.0/arch/x86/kernel/cpu/mce/severity.c @@ -9,9 +9,11 @@ #include #include #include -#include #include +#include +#include + #include "internal.h" /* @@ -40,9 +42,14 @@ unsigned char context; unsigned char excp; unsigned char covered; + unsigned char cpu_model; + unsigned char cpu_minstepping; + unsigned char bank_lo, bank_hi; char *msg; } severities[] = { #define MCESEV(s, m, c...) { .sev = MCE_ ## s ## _SEVERITY, .msg = m, ## c } +#define BANK_RANGE(l, h) .bank_lo = l, .bank_hi = h +#define MODEL_STEPPING(m, s) .cpu_model = m, .cpu_minstepping = s #define KERNEL .context = IN_KERNEL #define USER .context = IN_USER #define KERNEL_RECOV .context = IN_KERNEL_RECOV @@ -97,7 +104,6 @@ KEEP, "Corrected error", NOSER, BITCLR(MCI_STATUS_UC) ), - /* * known AO MCACODs reported via MCE or CMC: * @@ -113,6 +119,18 @@ AO, "Action optional: last level cache writeback error", SER, MASK(MCI_UC_AR|MCACOD, MCI_STATUS_UC|MCACOD_L3WB) ), + /* + * Quirk for Skylake/Cascade Lake. Patrol scrubber may be configured + * to report uncorrected errors using CMCI with a special signature. + * UC=0, MSCOD=0x0010, MCACOD=binary(000X 0000 1100 XXXX) reported + * in one of the memory controller banks. + * Set severity to "AO" for same action as normal patrol scrub error. + */ + MCESEV( + AO, "Uncorrected Patrol Scrub Error", + SER, MASK(MCI_STATUS_UC|MCI_ADDR|0xffffeff0, MCI_ADDR|0x001000c0), + MODEL_STEPPING(INTEL_FAM6_SKYLAKE_X, 4), BANK_RANGE(13, 18) + ), /* ignore OVER for UCNA */ MCESEV( @@ -324,6 +342,12 @@ continue; if (s->excp && excp != s->excp) continue; + if (s->cpu_model && boot_cpu_data.x86_model != s->cpu_model) + continue; + if (s->cpu_minstepping && boot_cpu_data.x86_stepping < s->cpu_minstepping) + continue; + if (s->bank_lo && (m->bank < s->bank_lo || m->bank > s->bank_hi)) + continue; if (msg) *msg = s->msg; s->covered = 1; --- linux-5.8.0.orig/arch/x86/kernel/cpu/microcode/intel.c +++ linux-5.8.0/arch/x86/kernel/cpu/microcode/intel.c @@ -100,53 +100,6 @@ return find_matching_signature(mc, csig, cpf); } -/* - * Given CPU signature and a microcode patch, this function finds if the - * microcode patch has matching family and model with the CPU. - * - * %true - if there's a match - * %false - otherwise - */ -static bool microcode_matches(struct microcode_header_intel *mc_header, - unsigned long sig) -{ - unsigned long total_size = get_totalsize(mc_header); - unsigned long data_size = get_datasize(mc_header); - struct extended_sigtable *ext_header; - unsigned int fam_ucode, model_ucode; - struct extended_signature *ext_sig; - unsigned int fam, model; - int ext_sigcount, i; - - fam = x86_family(sig); - model = x86_model(sig); - - fam_ucode = x86_family(mc_header->sig); - model_ucode = x86_model(mc_header->sig); - - if (fam == fam_ucode && model == model_ucode) - return true; - - /* Look for ext. headers: */ - if (total_size <= data_size + MC_HEADER_SIZE) - return false; - - ext_header = (void *) mc_header + data_size + MC_HEADER_SIZE; - ext_sig = (void *)ext_header + EXT_HEADER_SIZE; - ext_sigcount = ext_header->count; - - for (i = 0; i < ext_sigcount; i++) { - fam_ucode = x86_family(ext_sig->sig); - model_ucode = x86_model(ext_sig->sig); - - if (fam == fam_ucode && model == model_ucode) - return true; - - ext_sig++; - } - return false; -} - static struct ucode_patch *memdup_patch(void *data, unsigned int size) { struct ucode_patch *p; @@ -164,7 +117,7 @@ return p; } -static void save_microcode_patch(void *data, unsigned int size) +static void save_microcode_patch(struct ucode_cpu_info *uci, void *data, unsigned int size) { struct microcode_header_intel *mc_hdr, *mc_saved_hdr; struct ucode_patch *iter, *tmp, *p = NULL; @@ -210,6 +163,9 @@ if (!p) return; + if (!find_matching_signature(p->data, uci->cpu_sig.sig, uci->cpu_sig.pf)) + return; + /* * Save for early loading. On 32-bit, that needs to be a physical * address as the APs are running from physical addresses, before @@ -344,13 +300,14 @@ size -= mc_size; - if (!microcode_matches(mc_header, uci->cpu_sig.sig)) { + if (!find_matching_signature(data, uci->cpu_sig.sig, + uci->cpu_sig.pf)) { data += mc_size; continue; } if (save) { - save_microcode_patch(data, mc_size); + save_microcode_patch(uci, data, mc_size); goto next; } @@ -483,14 +440,14 @@ * Save this microcode patch. It will be loaded early when a CPU is * hot-added or resumes. */ -static void save_mc_for_early(u8 *mc, unsigned int size) +static void save_mc_for_early(struct ucode_cpu_info *uci, u8 *mc, unsigned int size) { /* Synchronization during CPU hotplug. */ static DEFINE_MUTEX(x86_cpu_microcode_mutex); mutex_lock(&x86_cpu_microcode_mutex); - save_microcode_patch(mc, size); + save_microcode_patch(uci, mc, size); show_saved_mc(); mutex_unlock(&x86_cpu_microcode_mutex); @@ -935,7 +892,7 @@ * permanent memory. So it will be loaded early when a CPU is hot added * or resumes. */ - save_mc_for_early(new_mc, new_mc_size); + save_mc_for_early(uci, new_mc, new_mc_size); pr_debug("CPU%d found a matching microcode update with version 0x%x (current=0x%x)\n", cpu, new_rev, uci->cpu_sig.rev); --- linux-5.8.0.orig/arch/x86/kernel/cpu/mtrr/generic.c +++ linux-5.8.0/arch/x86/kernel/cpu/mtrr/generic.c @@ -167,9 +167,6 @@ *repeat = 0; *uniform = 1; - /* Make end inclusive instead of exclusive */ - end--; - prev_match = MTRR_TYPE_INVALID; for (i = 0; i < num_var_ranges; ++i) { unsigned short start_state, end_state, inclusive; @@ -261,6 +258,9 @@ int repeat; u64 partial_end; + /* Make end inclusive instead of exclusive */ + end--; + if (!mtrr_state_set) return MTRR_TYPE_INVALID; --- linux-5.8.0.orig/arch/x86/kernel/cpu/resctrl/internal.h +++ linux-5.8.0/arch/x86/kernel/cpu/resctrl/internal.h @@ -283,7 +283,6 @@ * struct mbm_state - status for each MBM counter in each domain * @chunks: Total data moved (multiply by rdt_group.mon_scale to get bytes) * @prev_msr Value of IA32_QM_CTR for this RMID last time we read it - * @chunks_bw Total local data moved. Used for bandwidth calculation * @prev_bw_msr:Value of previous IA32_QM_CTR for bandwidth counting * @prev_bw The most recent bandwidth in MBps * @delta_bw Difference between the current and previous bandwidth @@ -292,7 +291,6 @@ struct mbm_state { u64 chunks; u64 prev_msr; - u64 chunks_bw; u64 prev_bw_msr; u32 prev_bw; u32 delta_bw; --- linux-5.8.0.orig/arch/x86/kernel/cpu/resctrl/monitor.c +++ linux-5.8.0/arch/x86/kernel/cpu/resctrl/monitor.c @@ -279,8 +279,6 @@ return; chunks = mbm_overflow_count(m->prev_bw_msr, tval, rr->r->mbm_width); - m->chunks_bw += chunks; - m->chunks = m->chunks_bw; cur_bw = (chunks * r->mon_scale) >> 20; if (m->delta_comp) @@ -451,15 +449,14 @@ } if (is_mbm_local_enabled()) { rr.evtid = QOS_L3_MBM_LOCAL_EVENT_ID; + __mon_event_count(rmid, &rr); /* * Call the MBA software controller only for the * control groups and when user has enabled * the software controller explicitly. */ - if (!is_mba_sc(NULL)) - __mon_event_count(rmid, &rr); - else + if (is_mba_sc(NULL)) mbm_bw_count(rmid, &rr); } } --- linux-5.8.0.orig/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ linux-5.8.0/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -507,89 +507,88 @@ return ret ?: nbytes; } -struct task_move_callback { - struct callback_head work; - struct rdtgroup *rdtgrp; -}; - -static void move_myself(struct callback_head *head) +/** + * rdtgroup_remove - the helper to remove resource group safely + * @rdtgrp: resource group to remove + * + * On resource group creation via a mkdir, an extra kernfs_node reference is + * taken to ensure that the rdtgroup structure remains accessible for the + * rdtgroup_kn_unlock() calls where it is removed. + * + * Drop the extra reference here, then free the rdtgroup structure. + * + * Return: void + */ +static void rdtgroup_remove(struct rdtgroup *rdtgrp) { - struct task_move_callback *callback; - struct rdtgroup *rdtgrp; - - callback = container_of(head, struct task_move_callback, work); - rdtgrp = callback->rdtgrp; + kernfs_put(rdtgrp->kn); + kfree(rdtgrp); +} +static void _update_task_closid_rmid(void *task) +{ /* - * If resource group was deleted before this task work callback - * was invoked, then assign the task to root group and free the - * resource group. + * If the task is still current on this CPU, update PQR_ASSOC MSR. + * Otherwise, the MSR is updated when the task is scheduled in. */ - if (atomic_dec_and_test(&rdtgrp->waitcount) && - (rdtgrp->flags & RDT_DELETED)) { - current->closid = 0; - current->rmid = 0; - kfree(rdtgrp); - } - - if (unlikely(current->flags & PF_EXITING)) - goto out; - - preempt_disable(); - /* update PQR_ASSOC MSR to make resource group go into effect */ - resctrl_sched_in(); - preempt_enable(); + if (task == current) + resctrl_sched_in(); +} -out: - kfree(callback); +static void update_task_closid_rmid(struct task_struct *t) +{ + if (IS_ENABLED(CONFIG_SMP) && task_curr(t)) + smp_call_function_single(task_cpu(t), _update_task_closid_rmid, t, 1); + else + _update_task_closid_rmid(t); } static int __rdtgroup_move_task(struct task_struct *tsk, struct rdtgroup *rdtgrp) { - struct task_move_callback *callback; - int ret; - - callback = kzalloc(sizeof(*callback), GFP_KERNEL); - if (!callback) - return -ENOMEM; - callback->work.func = move_myself; - callback->rdtgrp = rdtgrp; + /* If the task is already in rdtgrp, no need to move the task. */ + if ((rdtgrp->type == RDTCTRL_GROUP && tsk->closid == rdtgrp->closid && + tsk->rmid == rdtgrp->mon.rmid) || + (rdtgrp->type == RDTMON_GROUP && tsk->rmid == rdtgrp->mon.rmid && + tsk->closid == rdtgrp->mon.parent->closid)) + return 0; /* - * Take a refcount, so rdtgrp cannot be freed before the - * callback has been invoked. + * Set the task's closid/rmid before the PQR_ASSOC MSR can be + * updated by them. + * + * For ctrl_mon groups, move both closid and rmid. + * For monitor groups, can move the tasks only from + * their parent CTRL group. */ - atomic_inc(&rdtgrp->waitcount); - ret = task_work_add(tsk, &callback->work, true); - if (ret) { - /* - * Task is exiting. Drop the refcount and free the callback. - * No need to check the refcount as the group cannot be - * deleted before the write function unlocks rdtgroup_mutex. - */ - atomic_dec(&rdtgrp->waitcount); - kfree(callback); - rdt_last_cmd_puts("Task exited\n"); - } else { - /* - * For ctrl_mon groups move both closid and rmid. - * For monitor groups, can move the tasks only from - * their parent CTRL group. - */ - if (rdtgrp->type == RDTCTRL_GROUP) { - tsk->closid = rdtgrp->closid; + + if (rdtgrp->type == RDTCTRL_GROUP) { + tsk->closid = rdtgrp->closid; + tsk->rmid = rdtgrp->mon.rmid; + } else if (rdtgrp->type == RDTMON_GROUP) { + if (rdtgrp->mon.parent->closid == tsk->closid) { tsk->rmid = rdtgrp->mon.rmid; - } else if (rdtgrp->type == RDTMON_GROUP) { - if (rdtgrp->mon.parent->closid == tsk->closid) { - tsk->rmid = rdtgrp->mon.rmid; - } else { - rdt_last_cmd_puts("Can't move task to different control group\n"); - ret = -EINVAL; - } + } else { + rdt_last_cmd_puts("Can't move task to different control group\n"); + return -EINVAL; } } - return ret; + + /* + * Ensure the task's closid and rmid are written before determining if + * the task is current that will decide if it will be interrupted. + */ + barrier(); + + /* + * By now, the task's closid and rmid are set. If the task is current + * on a CPU, the PQR_ASSOC MSR needs to be updated to make the resource + * group go into effect. If the task is not current, the MSR will be + * updated when the task is scheduled in. + */ + update_task_closid_rmid(tsk); + + return 0; } /** @@ -1708,7 +1707,6 @@ if (IS_ERR(kn_subdir)) return PTR_ERR(kn_subdir); - kernfs_get(kn_subdir); ret = rdtgroup_kn_set_ugid(kn_subdir); if (ret) return ret; @@ -1731,7 +1729,6 @@ kn_info = kernfs_create_dir(parent_kn, "info", parent_kn->mode, NULL); if (IS_ERR(kn_info)) return PTR_ERR(kn_info); - kernfs_get(kn_info); ret = rdtgroup_add_files(kn_info, RF_TOP_INFO); if (ret) @@ -1752,12 +1749,6 @@ goto out_destroy; } - /* - * This extra ref will be put in kernfs_remove() and guarantees - * that @rdtgrp->kn is always accessible. - */ - kernfs_get(kn_info); - ret = rdtgroup_kn_set_ugid(kn_info); if (ret) goto out_destroy; @@ -1786,12 +1777,6 @@ if (dest_kn) *dest_kn = kn; - /* - * This extra ref will be put in kernfs_remove() and guarantees - * that @rdtgrp->kn is always accessible. - */ - kernfs_get(kn); - ret = rdtgroup_kn_set_ugid(kn); if (ret) goto out_destroy; @@ -2018,8 +2003,7 @@ rdtgrp->mode == RDT_MODE_PSEUDO_LOCKED) rdtgroup_pseudo_lock_remove(rdtgrp); kernfs_unbreak_active_protection(kn); - kernfs_put(rdtgrp->kn); - kfree(rdtgrp); + rdtgroup_remove(rdtgrp); } else { kernfs_unbreak_active_protection(kn); } @@ -2078,13 +2062,11 @@ &kn_mongrp); if (ret < 0) goto out_info; - kernfs_get(kn_mongrp); ret = mkdir_mondata_all(rdtgroup_default.kn, &rdtgroup_default, &kn_mondata); if (ret < 0) goto out_mongrp; - kernfs_get(kn_mondata); rdtgroup_default.mon.mon_data_kn = kn_mondata; } @@ -2308,7 +2290,7 @@ if (atomic_read(&sentry->waitcount) != 0) sentry->flags = RDT_DELETED; else - kfree(sentry); + rdtgroup_remove(sentry); } } @@ -2350,7 +2332,7 @@ if (atomic_read(&rdtgrp->waitcount) != 0) rdtgrp->flags = RDT_DELETED; else - kfree(rdtgrp); + rdtgroup_remove(rdtgrp); } /* Notify online CPUs to update per cpu storage and PQR_ASSOC MSR */ update_closid_rmid(cpu_online_mask, &rdtgroup_default); @@ -2450,11 +2432,6 @@ if (IS_ERR(kn)) return PTR_ERR(kn); - /* - * This extra ref will be put in kernfs_remove() and guarantees - * that kn is always accessible. - */ - kernfs_get(kn); ret = rdtgroup_kn_set_ugid(kn); if (ret) goto out_destroy; @@ -2789,8 +2766,8 @@ /* * kernfs_remove() will drop the reference count on "kn" which * will free it. But we still need it to stick around for the - * rdtgroup_kn_unlock(kn} call below. Take one extra reference - * here, which will be dropped inside rdtgroup_kn_unlock(). + * rdtgroup_kn_unlock(kn) call. Take one extra reference here, + * which will be dropped by kernfs_put() in rdtgroup_remove(). */ kernfs_get(kn); @@ -2831,6 +2808,7 @@ out_idfree: free_rmid(rdtgrp->mon.rmid); out_destroy: + kernfs_put(rdtgrp->kn); kernfs_remove(rdtgrp->kn); out_free_rgrp: kfree(rdtgrp); @@ -2843,7 +2821,7 @@ { kernfs_remove(rgrp->kn); free_rmid(rgrp->mon.rmid); - kfree(rgrp); + rdtgroup_remove(rgrp); } /* @@ -3000,11 +2978,6 @@ WARN_ON(list_empty(&prdtgrp->mon.crdtgrp_list)); list_del(&rdtgrp->mon.crdtgrp_list); - /* - * one extra hold on this, will drop when we kfree(rdtgrp) - * in rdtgroup_kn_unlock() - */ - kernfs_get(kn); kernfs_remove(rdtgrp->kn); return 0; @@ -3016,11 +2989,6 @@ rdtgrp->flags = RDT_DELETED; list_del(&rdtgrp->rdtgroup_list); - /* - * one extra hold on this, will drop when we kfree(rdtgrp) - * in rdtgroup_kn_unlock() - */ - kernfs_get(kn); kernfs_remove(rdtgrp->kn); return 0; } --- linux-5.8.0.orig/arch/x86/kernel/cpu/topology.c +++ linux-5.8.0/arch/x86/kernel/cpu/topology.c @@ -25,10 +25,10 @@ #define BITS_SHIFT_NEXT_LEVEL(eax) ((eax) & 0x1f) #define LEVEL_MAX_SIBLINGS(ebx) ((ebx) & 0xffff) -#ifdef CONFIG_SMP unsigned int __max_die_per_package __read_mostly = 1; EXPORT_SYMBOL(__max_die_per_package); +#ifdef CONFIG_SMP /* * Check if given CPUID extended toplogy "leaf" is implemented */ --- linux-5.8.0.orig/arch/x86/kernel/dumpstack.c +++ linux-5.8.0/arch/x86/kernel/dumpstack.c @@ -77,6 +77,9 @@ if (!user_mode(regs)) return copy_from_kernel_nofault(buf, (u8 *)src, nbytes); + /* The user space code from other tasks cannot be accessed. */ + if (regs != task_pt_regs(current)) + return -EPERM; /* * Make sure userspace isn't trying to trick us into dumping kernel * memory by pointing the userspace instruction pointer at it. @@ -84,6 +87,12 @@ if (__chk_range_not_ok(src, nbytes, TASK_SIZE_MAX)) return -EINVAL; + /* + * Even if named copy_from_user_nmi() this can be invoked from + * other contexts and will not try to resolve a pagefault, which is + * the correct thing to do here as this code can be called from any + * context. + */ return copy_from_user_nmi(buf, (void __user *)src, nbytes); } @@ -114,12 +123,19 @@ u8 opcodes[OPCODE_BUFSIZE]; unsigned long prologue = regs->ip - PROLOGUE_SIZE; - if (copy_code(regs, opcodes, prologue, sizeof(opcodes))) { - printk("%sCode: Bad RIP value.\n", loglvl); - } else { + switch (copy_code(regs, opcodes, prologue, sizeof(opcodes))) { + case 0: printk("%sCode: %" __stringify(PROLOGUE_SIZE) "ph <%02x> %" __stringify(EPILOGUE_SIZE) "ph\n", loglvl, opcodes, opcodes[PROLOGUE_SIZE], opcodes + PROLOGUE_SIZE + 1); + break; + case -EPERM: + /* No access to the user space stack of other tasks. Ignore. */ + break; + default: + printk("%sCode: Unable to access opcode bytes at RIP 0x%lx.\n", + loglvl, prologue); + break; } } --- linux-5.8.0.orig/arch/x86/kernel/early-quirks.c +++ linux-5.8.0/arch/x86/kernel/early-quirks.c @@ -28,6 +28,37 @@ #include #include +static void __init early_pci_clear_msi(int bus, int slot, int func) +{ + int pos; + u16 ctrl; + + if (likely(!pci_early_clear_msi)) + return; + + pr_info_once("Clearing MSI/MSI-X enable bits early in boot (quirk)\n"); + + pos = pci_early_find_cap(bus, slot, func, PCI_CAP_ID_MSI); + if (pos) { + ctrl = read_pci_config_16(bus, slot, func, pos + PCI_MSI_FLAGS); + ctrl &= ~PCI_MSI_FLAGS_ENABLE; + write_pci_config_16(bus, slot, func, pos + PCI_MSI_FLAGS, ctrl); + + /* Read again to flush previous write */ + ctrl = read_pci_config_16(bus, slot, func, pos + PCI_MSI_FLAGS); + } + + pos = pci_early_find_cap(bus, slot, func, PCI_CAP_ID_MSIX); + if (pos) { + ctrl = read_pci_config_16(bus, slot, func, pos + PCI_MSIX_FLAGS); + ctrl &= ~PCI_MSIX_FLAGS_ENABLE; + write_pci_config_16(bus, slot, func, pos + PCI_MSIX_FLAGS, ctrl); + + /* Read again to flush previous write */ + ctrl = read_pci_config_16(bus, slot, func, pos + PCI_MSIX_FLAGS); + } +} + static void __init fix_hypertransport_config(int num, int slot, int func) { u32 htcfg; @@ -718,6 +749,7 @@ PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, { PCI_VENDOR_ID_BROADCOM, 0x4331, PCI_CLASS_NETWORK_OTHER, PCI_ANY_ID, 0, apple_airport_reset}, + { PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, early_pci_clear_msi}, {} }; @@ -770,6 +802,10 @@ PCI_HEADER_TYPE); if ((type & 0x7f) == PCI_HEADER_TYPE_BRIDGE) { + /* pci_early_clear_msi scans the buses differently. */ + if (pci_early_clear_msi) + return -1; + sec = read_pci_config_byte(num, slot, func, PCI_SECONDARY_BUS); if (sec > num) early_pci_scan_bus(sec); @@ -796,8 +832,13 @@ void __init early_quirks(void) { + int bus; + if (!early_pci_allowed()) return; early_pci_scan_bus(0); + /* pci_early_clear_msi scans more buses. */ + for (bus = 1; pci_early_clear_msi && bus < 256; bus++) + early_pci_scan_bus(bus); } --- linux-5.8.0.orig/arch/x86/kernel/fpu/core.c +++ linux-5.8.0/arch/x86/kernel/fpu/core.c @@ -82,7 +82,7 @@ } EXPORT_SYMBOL(irq_fpu_usable); -void kernel_fpu_begin(void) +void kernel_fpu_begin_mask(unsigned int kfpu_mask) { preempt_disable(); @@ -102,13 +102,14 @@ } __cpu_invalidate_fpregs_state(); - if (boot_cpu_has(X86_FEATURE_XMM)) + /* Put sane initial values into the control registers. */ + if (likely(kfpu_mask & KFPU_MXCSR) && boot_cpu_has(X86_FEATURE_XMM)) ldmxcsr(MXCSR_DEFAULT); - if (boot_cpu_has(X86_FEATURE_FPU)) + if (unlikely(kfpu_mask & KFPU_387) && boot_cpu_has(X86_FEATURE_FPU)) asm volatile ("fninit"); } -EXPORT_SYMBOL_GPL(kernel_fpu_begin); +EXPORT_SYMBOL_GPL(kernel_fpu_begin_mask); void kernel_fpu_end(void) { --- linux-5.8.0.orig/arch/x86/kernel/fpu/init.c +++ linux-5.8.0/arch/x86/kernel/fpu/init.c @@ -243,9 +243,9 @@ */ static void __init fpu__init_parse_early_param(void) { - char arg[32]; + char arg[128]; char *argptr = arg; - int bit; + int arglen, res, bit; #ifdef CONFIG_X86_32 if (cmdline_find_option_bool(boot_command_line, "no387")) @@ -268,12 +268,26 @@ if (cmdline_find_option_bool(boot_command_line, "noxsaves")) setup_clear_cpu_cap(X86_FEATURE_XSAVES); - if (cmdline_find_option(boot_command_line, "clearcpuid", arg, - sizeof(arg)) && - get_option(&argptr, &bit) && - bit >= 0 && - bit < NCAPINTS * 32) - setup_clear_cpu_cap(bit); + arglen = cmdline_find_option(boot_command_line, "clearcpuid", arg, sizeof(arg)); + if (arglen <= 0) + return; + + pr_info("Clearing CPUID bits:"); + do { + res = get_option(&argptr, &bit); + if (res == 0 || res == 3) + break; + + /* If the argument was too long, the last bit may be cut off */ + if (res == 1 && arglen >= sizeof(arg)) + break; + + if (bit >= 0 && bit < NCAPINTS * 32) { + pr_cont(" " X86_CAP_FMT, x86_cap_flag(bit)); + setup_clear_cpu_cap(bit); + } + } while (res == 2); + pr_cont("\n"); } /* --- linux-5.8.0.orig/arch/x86/kernel/head_32.S +++ linux-5.8.0/arch/x86/kernel/head_32.S @@ -26,6 +26,7 @@ #include #include #include +#include /* Physical address */ #define pa(X) ((X) - __PAGE_OFFSET) @@ -147,6 +148,7 @@ movl pa(subarch_entries)(,%eax,4), %eax subl $__PAGE_OFFSET, %eax + ANNOTATE_RETPOLINE_SAFE jmp *%eax .Lbad_subarch: @@ -297,6 +299,7 @@ movl setup_once_ref,%eax andl %eax,%eax jz 1f # Did we do this already? + ANNOTATE_RETPOLINE_SAFE call *%eax 1: --- linux-5.8.0.orig/arch/x86/kernel/hw_breakpoint.c +++ linux-5.8.0/arch/x86/kernel/hw_breakpoint.c @@ -269,6 +269,20 @@ CPU_ENTRY_AREA_TOTAL_SIZE)) return true; + /* + * When FSGSBASE is enabled, paranoid_entry() fetches the per-CPU + * GSBASE value via __per_cpu_offset or pcpu_unit_offsets. + */ +#ifdef CONFIG_SMP + if (within_area(addr, end, (unsigned long)__per_cpu_offset, + sizeof(unsigned long) * nr_cpu_ids)) + return true; +#else + if (within_area(addr, end, (unsigned long)&pcpu_unit_offsets, + sizeof(pcpu_unit_offsets))) + return true; +#endif + for_each_possible_cpu(cpu) { /* The original rw GDT is being used after load_direct_gdt() */ if (within_area(addr, end, (unsigned long)get_cpu_gdt_rw(cpu), @@ -293,6 +307,14 @@ (unsigned long)&per_cpu(cpu_tlbstate, cpu), sizeof(struct tlb_state))) return true; + + /* + * When in guest (X86_FEATURE_HYPERVISOR), local_db_save() + * will read per-cpu cpu_dr7 before clear dr7 register. + */ + if (within_area(addr, end, (unsigned long)&per_cpu(cpu_dr7, cpu), + sizeof(cpu_dr7))) + return true; } return false; @@ -527,15 +549,12 @@ struct perf_event *bp; unsigned long dr6; unsigned long *dr6_p; + bool bpx; /* The DR6 value is pointed by args->err */ dr6_p = (unsigned long *)ERR_PTR(args->err); dr6 = *dr6_p; - /* If it's a single step, TRAP bits are random */ - if (dr6 & DR_STEP) - return NOTIFY_DONE; - /* Do an early return if no trap bits are set in DR6 */ if ((dr6 & DR_TRAP_BITS) == 0) return NOTIFY_DONE; @@ -553,28 +572,29 @@ if (likely(!(dr6 & (DR_TRAP0 << i)))) continue; + bp = this_cpu_read(bp_per_reg[i]); + if (!bp) + continue; + + bpx = bp->hw.info.type == X86_BREAKPOINT_EXECUTE; + /* - * The counter may be concurrently released but that can only - * occur from a call_rcu() path. We can then safely fetch - * the breakpoint, use its callback, touch its counter - * while we are in an rcu_read_lock() path. + * TF and data breakpoints are traps and can be merged, however + * instruction breakpoints are faults and will be raised + * separately. + * + * However DR6 can indicate both TF and instruction + * breakpoints. In that case take TF as that has precedence and + * delay the instruction breakpoint for the next exception. */ - rcu_read_lock(); + if (bpx && (dr6 & DR_STEP)) + continue; - bp = per_cpu(bp_per_reg[i], cpu); /* * Reset the 'i'th TRAP bit in dr6 to denote completion of * exception handling */ (*dr6_p) &= ~(DR_TRAP0 << i); - /* - * bp can be NULL due to lazy debug register switching - * or due to concurrent perf counter removing. - */ - if (!bp) { - rcu_read_unlock(); - break; - } perf_bp_event(bp, args->regs); @@ -582,11 +602,10 @@ * Set up resume flag to avoid breakpoint recursion when * returning back to origin. */ - if (bp->hw.info.type == X86_BREAKPOINT_EXECUTE) + if (bpx) args->regs->flags |= X86_EFLAGS_RF; - - rcu_read_unlock(); } + /* * Further processing in do_debug() is needed for a) user-space * breakpoints (to generate signals) and b) when the system has --- linux-5.8.0.orig/arch/x86/kernel/irq.c +++ linux-5.8.0/arch/x86/kernel/irq.c @@ -227,7 +227,7 @@ struct pt_regs *regs) { if (IS_ENABLED(CONFIG_X86_64)) - run_on_irqstack_cond(desc->handle_irq, desc, regs); + run_irq_on_irqstack_cond(desc->handle_irq, desc, regs); else __handle_irq(desc, regs); } --- linux-5.8.0.orig/arch/x86/kernel/irq_64.c +++ linux-5.8.0/arch/x86/kernel/irq_64.c @@ -74,5 +74,5 @@ void do_softirq_own_stack(void) { - run_on_irqstack_cond(__do_softirq, NULL, NULL); + run_on_irqstack_cond(__do_softirq, NULL); } --- linux-5.8.0.orig/arch/x86/kernel/kexec-bzimage64.c +++ linux-5.8.0/arch/x86/kernel/kexec-bzimage64.c @@ -209,8 +209,7 @@ params->hdr.hardware_subarch = boot_params.hdr.hardware_subarch; /* Copying screen_info will do? */ - memcpy(¶ms->screen_info, &boot_params.screen_info, - sizeof(struct screen_info)); + memcpy(¶ms->screen_info, &screen_info, sizeof(struct screen_info)); /* Fill in memsize later */ params->screen_info.ext_mem_k = 0; --- linux-5.8.0.orig/arch/x86/kernel/kprobes/core.c +++ linux-5.8.0/arch/x86/kernel/kprobes/core.c @@ -1027,6 +1027,11 @@ * So clear it by resetting the current kprobe: */ regs->flags &= ~X86_EFLAGS_TF; + /* + * Since the single step (trap) has been cancelled, + * we need to restore BTF here. + */ + restore_btf(); /* * If the TF flag was set before the kprobe hit, --- linux-5.8.0.orig/arch/x86/kernel/kprobes/opt.c +++ linux-5.8.0/arch/x86/kernel/kprobes/opt.c @@ -270,6 +270,19 @@ return ret; } +static bool is_padding_int3(unsigned long addr, unsigned long eaddr) +{ + unsigned char ops; + + for (; addr < eaddr; addr++) { + if (get_kernel_nofault(ops, (void *)addr) < 0 || + ops != INT3_INSN_OPCODE) + return false; + } + + return true; +} + /* Decode whole function to ensure any instructions don't jump into target */ static int can_optimize(unsigned long paddr) { @@ -308,9 +321,14 @@ return 0; kernel_insn_init(&insn, (void *)recovered_insn, MAX_INSN_SIZE); insn_get_length(&insn); - /* Another subsystem puts a breakpoint */ + /* + * In the case of detecting unknown breakpoint, this could be + * a padding INT3 between functions. Let's check that all the + * rest of the bytes are also INT3. + */ if (insn.opcode.bytes[0] == INT3_INSN_OPCODE) - return 0; + return is_padding_int3(addr, paddr - offset + size) ? 1 : 0; + /* Recover address */ insn.kaddr = (void *)addr; insn.next_byte = (void *)(addr + insn.length); --- linux-5.8.0.orig/arch/x86/kernel/kvmclock.c +++ linux-5.8.0/arch/x86/kernel/kvmclock.c @@ -269,21 +269,20 @@ static int __init kvm_setup_vsyscall_timeinfo(void) { -#ifdef CONFIG_X86_64 - u8 flags; + kvmclock_init_mem(); - if (!per_cpu(hv_clock_per_cpu, 0) || !kvmclock_vsyscall) - return 0; +#ifdef CONFIG_X86_64 + if (per_cpu(hv_clock_per_cpu, 0) && kvmclock_vsyscall) { + u8 flags; - flags = pvclock_read_flags(&hv_clock_boot[0].pvti); - if (!(flags & PVCLOCK_TSC_STABLE_BIT)) - return 0; + flags = pvclock_read_flags(&hv_clock_boot[0].pvti); + if (!(flags & PVCLOCK_TSC_STABLE_BIT)) + return 0; - kvm_clock.vdso_clock_mode = VDSO_CLOCKMODE_PVCLOCK; + kvm_clock.vdso_clock_mode = VDSO_CLOCKMODE_PVCLOCK; + } #endif - kvmclock_init_mem(); - return 0; } early_initcall(kvm_setup_vsyscall_timeinfo); --- linux-5.8.0.orig/arch/x86/kernel/module.c +++ linux-5.8.0/arch/x86/kernel/module.c @@ -114,6 +114,7 @@ *location += sym->st_value; break; case R_386_PC32: + case R_386_PLT32: /* Add the value, subtract its position */ *location += sym->st_value - (uint32_t)location; break; --- linux-5.8.0.orig/arch/x86/kernel/nmi.c +++ linux-5.8.0/arch/x86/kernel/nmi.c @@ -102,7 +102,6 @@ static void nmi_check_duration(struct nmiaction *action, u64 duration) { - u64 whole_msecs = READ_ONCE(action->max_duration); int remainder_ns, decimal_msecs; if (duration < nmi_longest_ns || duration < action->max_duration) @@ -110,12 +109,12 @@ action->max_duration = duration; - remainder_ns = do_div(whole_msecs, (1000 * 1000)); + remainder_ns = do_div(duration, (1000 * 1000)); decimal_msecs = remainder_ns / 1000; printk_ratelimited(KERN_INFO "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n", - action->handler, whole_msecs, decimal_msecs); + action->handler, duration, decimal_msecs); } static int nmi_handle(unsigned int type, struct pt_regs *regs) --- linux-5.8.0.orig/arch/x86/kernel/process.c +++ linux-5.8.0/arch/x86/kernel/process.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "process.h" @@ -133,7 +134,7 @@ fork_frame = container_of(childregs, struct fork_frame, regs); frame = &fork_frame->frame; - frame->bp = 0; + frame->bp = encode_frame_pointer(childregs); frame->ret_addr = (unsigned long) ret_from_fork; p->thread.sp = (unsigned long) fork_frame; p->thread.io_bitmap = NULL; --- linux-5.8.0.orig/arch/x86/kernel/process_64.c +++ linux-5.8.0/arch/x86/kernel/process_64.c @@ -314,7 +314,7 @@ */ mutex_lock(&task->mm->context.lock); ldt = task->mm->context.ldt; - if (unlikely(idx >= ldt->nr_entries)) + if (unlikely(!ldt || idx >= ldt->nr_entries)) base = 0; else base = get_desc_base(ldt->entries + idx); --- linux-5.8.0.orig/arch/x86/kernel/quirks.c +++ linux-5.8.0/arch/x86/kernel/quirks.c @@ -8,6 +8,7 @@ #include #include +#include #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) @@ -624,10 +625,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F3, amd_disable_seq_and_redirect_scrub); -#if defined(CONFIG_X86_64) && defined(CONFIG_X86_MCE) -#include -#include - /* Ivy Bridge, Haswell, Broadwell */ static void quirk_intel_brickland_xeon_ras_cap(struct pci_dev *pdev) { @@ -636,7 +633,7 @@ pci_read_config_dword(pdev, 0x84, &capid0); if (capid0 & 0x10) - static_branch_inc(&mcsafe_key); + enable_copy_mc_fragile(); } /* Skylake */ @@ -653,7 +650,7 @@ * enabled, so memory machine check recovery is also enabled. */ if ((capid0 & 0xc0) == 0xc0 || (capid5 & 0x1e0)) - static_branch_inc(&mcsafe_key); + enable_copy_mc_fragile(); } DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x0ec3, quirk_intel_brickland_xeon_ras_cap); @@ -661,7 +658,6 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, quirk_intel_brickland_xeon_ras_cap); DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2083, quirk_intel_purley_xeon_ras_cap); #endif -#endif bool x86_apple_machine; EXPORT_SYMBOL(x86_apple_machine); --- linux-5.8.0.orig/arch/x86/kernel/reboot.c +++ linux-5.8.0/arch/x86/kernel/reboot.c @@ -32,6 +32,7 @@ #include #include #include +#include /* * Power off function, if any @@ -477,6 +478,15 @@ }, }, + { /* PCIe Wifi card isn't detected after reboot otherwise */ + .callback = set_pci_reboot, + .ident = "Zotac ZBOX CI327 nano", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "NA"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZBOX-CI327NANO-GS-01"), + }, + }, + /* Sony */ { /* Handle problems with rebooting on Sony VGN-Z540N */ .callback = set_bios_reboot, @@ -486,7 +496,46 @@ DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"), }, }, - + { /* Handle problems with rebooting on the Latitude E6520. */ + .callback = set_pci_reboot, + .ident = "Dell Latitude E6520", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 790. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 790", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 790"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 990. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 990", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"), + }, + }, + { /* Handle problems with rebooting on the Latitude E6220. */ + .callback = set_pci_reboot, + .ident = "Dell Latitude E6220", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6220"), + }, + }, + { /* Handle problems with rebooting on the OptiPlex 390. */ + .callback = set_pci_reboot, + .ident = "Dell OptiPlex 390", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390"), + }, + }, { } }; @@ -538,31 +587,21 @@ local_irq_disable(); /* - * We need to disable VMX on all CPUs before rebooting, otherwise - * we risk hanging up the machine, because the CPU ignores INIT - * signals when VMX is enabled. + * Disable VMX on all CPUs before rebooting, otherwise we risk hanging + * the machine, because the CPU blocks INIT when it's in VMX root. * - * We can't take any locks and we may be on an inconsistent - * state, so we use NMIs as IPIs to tell the other CPUs to disable - * VMX and halt. + * We can't take any locks and we may be on an inconsistent state, so + * use NMIs as IPIs to tell the other CPUs to exit VMX root and halt. * - * For safety, we will avoid running the nmi_shootdown_cpus() - * stuff unnecessarily, but we don't have a way to check - * if other CPUs have VMX enabled. So we will call it only if the - * CPU we are running on has VMX enabled. - * - * We will miss cases where VMX is not enabled on all CPUs. This - * shouldn't do much harm because KVM always enable VMX on all - * CPUs anyway. But we can miss it on the small window where KVM - * is still enabling VMX. + * Do the NMI shootdown even if VMX if off on _this_ CPU, as that + * doesn't prevent a different CPU from being in VMX root operation. */ - if (cpu_has_vmx() && cpu_vmx_enabled()) { - /* Disable VMX on this CPU. */ - cpu_vmxoff(); + if (cpu_has_vmx()) { + /* Safely force _this_ CPU out of VMX root operation. */ + __cpu_emergency_vmxoff(); - /* Halt and disable VMX on the other CPUs */ + /* Halt and exit VMX root operation on the other CPUs. */ nmi_shootdown_cpus(vmxoff_nmi); - } } --- linux-5.8.0.orig/arch/x86/kernel/relocate_kernel_32.S +++ linux-5.8.0/arch/x86/kernel/relocate_kernel_32.S @@ -8,6 +8,7 @@ #include #include #include +#include /* * Must be relocatable PIC code callable as a C function @@ -165,6 +166,7 @@ movl CP_PA_SWAP_PAGE(%edi), %esp addl $PAGE_SIZE, %esp 2: + ANNOTATE_RETPOLINE_SAFE call *%edx /* get the re-entry point of the peer system */ --- linux-5.8.0.orig/arch/x86/kernel/setup.c +++ linux-5.8.0/arch/x86/kernel/setup.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -979,6 +980,13 @@ if (efi_enabled(EFI_BOOT)) efi_init(); + efi_set_secure_boot(boot_params.secure_boot); + +#ifdef CONFIG_LOCK_DOWN_IN_SECURE_BOOT + if (efi_enabled(EFI_SECURE_BOOT)) + security_lock_kernel_down("EFI Secure Boot mode", LOCKDOWN_INTEGRITY_MAX); +#endif + dmi_setup(); /* @@ -1070,6 +1078,9 @@ cleanup_highmap(); + /* Look for ACPI tables and reserve memory occupied by them. */ + acpi_boot_table_init(); + memblock_set_current_limit(ISA_END_ADDRESS); e820__memblock_setup(); @@ -1130,19 +1141,7 @@ /* Allocate bigger log buffer */ setup_log_buf(1); - if (efi_enabled(EFI_BOOT)) { - switch (boot_params.secure_boot) { - case efi_secureboot_mode_disabled: - pr_info("Secure boot disabled\n"); - break; - case efi_secureboot_mode_enabled: - pr_info("Secure boot enabled\n"); - break; - default: - pr_info("Secure boot could not be determined\n"); - break; - } - } + efi_set_secure_boot(boot_params.secure_boot); reserve_initrd(); @@ -1154,11 +1153,6 @@ early_platform_quirks(); - /* - * Parse the ACPI tables for possible boot-time SMP configuration. - */ - acpi_boot_table_init(); - early_acpi_boot_init(); initmem_init(); --- linux-5.8.0.orig/arch/x86/kernel/setup_percpu.c +++ linux-5.8.0/arch/x86/kernel/setup_percpu.c @@ -287,9 +287,9 @@ /* * Sync back kernel address range again. We already did this in * setup_arch(), but percpu data also needs to be available in - * the smpboot asm and arch_sync_kernel_mappings() doesn't sync to - * swapper_pg_dir on 32-bit. The per-cpu mappings need to be available - * there too. + * the smpboot asm. We can't reliably pick up percpu mappings + * using vmalloc_fault(), because exception dispatch needs + * percpu data. * * FIXME: Can the later sync in setup_cpu_entry_areas() replace * this call? --- linux-5.8.0.orig/arch/x86/kernel/signal.c +++ linux-5.8.0/arch/x86/kernel/signal.c @@ -765,30 +765,8 @@ static inline unsigned long get_nr_restart_syscall(const struct pt_regs *regs) { - /* - * This function is fundamentally broken as currently - * implemented. - * - * The idea is that we want to trigger a call to the - * restart_block() syscall and that we want in_ia32_syscall(), - * in_x32_syscall(), etc. to match whatever they were in the - * syscall being restarted. We assume that the syscall - * instruction at (regs->ip - 2) matches whatever syscall - * instruction we used to enter in the first place. - * - * The problem is that we can get here when ptrace pokes - * syscall-like values into regs even if we're not in a syscall - * at all. - * - * For now, we maintain historical behavior and guess based on - * stored state. We could do better by saving the actual - * syscall arch in restart_block or (with caveats on x32) by - * checking if regs->ip points to 'int $0x80'. The current - * behavior is incorrect if a tracer has a different bitness - * than the tracee. - */ #ifdef CONFIG_IA32_EMULATION - if (current_thread_info()->status & (TS_COMPAT|TS_I386_REGS_POKED)) + if (current_thread_info()->status & TS_COMPAT_RESTART) return __NR_ia32_restart_syscall; #endif #ifdef CONFIG_X86_X32_ABI --- linux-5.8.0.orig/arch/x86/kernel/smpboot.c +++ linux-5.8.0/arch/x86/kernel/smpboot.c @@ -56,6 +56,7 @@ #include #include #include +#include #include #include @@ -1603,14 +1604,28 @@ if (ret) return ret; - /* - * Disable the local APIC. Otherwise IPI broadcasts will reach - * it. It still responds normally to INIT, NMI, SMI, and SIPI - * messages. - */ - apic_soft_disable(); cpu_disable_common(); + /* + * Disable the local APIC. Otherwise IPI broadcasts will reach + * it. It still responds normally to INIT, NMI, SMI, and SIPI + * messages. + * + * Disabling the APIC must happen after cpu_disable_common() + * which invokes fixup_irqs(). + * + * Disabling the APIC preserves already set bits in IRR, but + * an interrupt arriving after disabling the local APIC does not + * set the corresponding IRR bit. + * + * fixup_irqs() scans IRR for set bits so it can raise a not + * yet handled interrupt on the new destination CPU via an IPI + * but obviously it can't do so for IRR bits which are not set. + * IOW, interrupts arriving after disabling the local APIC will + * be lost. + */ + apic_soft_disable(); + return 0; } @@ -1650,7 +1665,7 @@ local_irq_disable(); } -static bool wakeup_cpu0(void) +bool wakeup_cpu0(void) { if (smp_processor_id() == 0 && enable_start_cpu0) return true; @@ -1777,6 +1792,7 @@ #endif +#ifdef CONFIG_X86_64 /* * APERF/MPERF frequency ratio computation. * @@ -1823,6 +1839,7 @@ arch_max_freq_ratio = turbo_disabled ? SCHED_CAPACITY_SCALE : arch_turbo_freq_ratio; } +EXPORT_SYMBOL_GPL(arch_set_max_freq_ratio); static bool turbo_disabled(void) { @@ -1975,6 +1992,7 @@ static bool intel_set_max_freq_ratio(void) { u64 base_freq, turbo_freq; + u64 turbo_ratio; if (slv_set_max_freq_ratio(&base_freq, &turbo_freq)) goto out; @@ -2000,15 +2018,23 @@ /* * Some hypervisors advertise X86_FEATURE_APERFMPERF * but then fill all MSR's with zeroes. + * Some CPUs have turbo boost but don't declare any turbo ratio + * in MSR_TURBO_RATIO_LIMIT. */ - if (!base_freq) { - pr_debug("Couldn't determine cpu base frequency, necessary for scale-invariant accounting.\n"); + if (!base_freq || !turbo_freq) { + pr_debug("Couldn't determine cpu base or turbo frequency, necessary for scale-invariant accounting.\n"); return false; } - arch_turbo_freq_ratio = div_u64(turbo_freq * SCHED_CAPACITY_SCALE, - base_freq); + turbo_ratio = div_u64(turbo_freq * SCHED_CAPACITY_SCALE, base_freq); + if (!turbo_ratio) { + pr_debug("Non-zero turbo and base frequencies led to a 0 ratio.\n"); + return false; + } + + arch_turbo_freq_ratio = turbo_ratio; arch_set_max_freq_ratio(turbo_disabled()); + return true; } @@ -2048,11 +2074,19 @@ } } +static void disable_freq_invariance_workfn(struct work_struct *work) +{ + static_branch_disable(&arch_scale_freq_key); +} + +static DECLARE_WORK(disable_freq_invariance_work, + disable_freq_invariance_workfn); + DEFINE_PER_CPU(unsigned long, arch_freq_scale) = SCHED_CAPACITY_SCALE; void arch_scale_freq_tick(void) { - u64 freq_scale; + u64 freq_scale = SCHED_CAPACITY_SCALE; u64 aperf, mperf; u64 acnt, mcnt; @@ -2064,19 +2098,32 @@ acnt = aperf - this_cpu_read(arch_prev_aperf); mcnt = mperf - this_cpu_read(arch_prev_mperf); - if (!mcnt) - return; this_cpu_write(arch_prev_aperf, aperf); this_cpu_write(arch_prev_mperf, mperf); - acnt <<= 2*SCHED_CAPACITY_SHIFT; - mcnt *= arch_max_freq_ratio; + if (check_shl_overflow(acnt, 2*SCHED_CAPACITY_SHIFT, &acnt)) + goto error; + + if (check_mul_overflow(mcnt, arch_max_freq_ratio, &mcnt) || !mcnt) + goto error; freq_scale = div64_u64(acnt, mcnt); + if (!freq_scale) + goto error; if (freq_scale > SCHED_CAPACITY_SCALE) freq_scale = SCHED_CAPACITY_SCALE; this_cpu_write(arch_freq_scale, freq_scale); + return; + +error: + pr_warn("Scheduler frequency invariance went wobbly, disabling!\n"); + schedule_work(&disable_freq_invariance_work); +} +#else +static inline void init_freq_invariance(bool secondary) +{ } +#endif /* CONFIG_X86_64 */ --- linux-5.8.0.orig/arch/x86/kernel/tboot.c +++ linux-5.8.0/arch/x86/kernel/tboot.c @@ -514,16 +514,10 @@ if (!tboot_enabled()) return 0; - if (intel_iommu_tboot_noforce) - return 1; - - if (no_iommu || swiotlb || dmar_disabled) + if (no_iommu || dmar_disabled) pr_warn("Forcing Intel-IOMMU to enabled\n"); dmar_disabled = 0; -#ifdef CONFIG_SWIOTLB - swiotlb = 0; -#endif no_iommu = 0; return 1; --- linux-5.8.0.orig/arch/x86/kernel/traps.c +++ linux-5.8.0/arch/x86/kernel/traps.c @@ -196,7 +196,7 @@ DEFINE_IDTENTRY(exc_divide_error) { - do_error_trap(regs, 0, "divide_error", X86_TRAP_DE, SIGFPE, + do_error_trap(regs, 0, "divide error", X86_TRAP_DE, SIGFPE, FPE_INTDIV, error_get_trap_addr(regs)); } @@ -299,11 +299,12 @@ local_irq_enable(); if (handle_user_split_lock(regs, error_code)) - return; + goto out; do_trap(X86_TRAP_AC, SIGBUS, "alignment check", regs, error_code, BUS_ADRALN, NULL); +out: local_irq_disable(); } @@ -733,20 +734,9 @@ #endif } -static __always_inline void debug_enter(unsigned long *dr6, unsigned long *dr7) +static __always_inline unsigned long debug_read_clear_dr6(void) { - /* - * Disable breakpoints during exception handling; recursive exceptions - * are exceedingly 'fun'. - * - * Since this function is NOKPROBE, and that also applies to - * HW_BREAKPOINT_X, we can't hit a breakpoint before this (XXX except a - * HW_BREAKPOINT_W on our stack) - * - * Entry text is excluded for HW_BP_X and cpu_entry_area, which - * includes the entry stack is excluded for everything. - */ - *dr7 = local_db_save(); + unsigned long dr6; /* * The Intel SDM says: @@ -759,15 +749,12 @@ * * Keep it simple: clear DR6 immediately. */ - get_debugreg(*dr6, 6); + get_debugreg(dr6, 6); set_debugreg(0, 6); /* Filter out all the reserved bits which are preset to 1 */ - *dr6 &= ~DR6_RESERVED; -} + dr6 &= ~DR6_RESERVED; -static __always_inline void debug_exit(unsigned long dr7) -{ - local_db_restore(dr7); + return dr6; } /* @@ -867,6 +854,19 @@ static __always_inline void exc_debug_kernel(struct pt_regs *regs, unsigned long dr6) { + /* + * Disable breakpoints during exception handling; recursive exceptions + * are exceedingly 'fun'. + * + * Since this function is NOKPROBE, and that also applies to + * HW_BREAKPOINT_X, we can't hit a breakpoint before this (XXX except a + * HW_BREAKPOINT_W on our stack) + * + * Entry text is excluded for HW_BP_X and cpu_entry_area, which + * includes the entry stack is excluded for everything. + */ + unsigned long dr7 = local_db_save(); + nmi_enter(); instrumentation_begin(); trace_hardirqs_off_finish(); @@ -890,6 +890,8 @@ trace_hardirqs_on_prepare(); instrumentation_end(); nmi_exit(); + + local_db_restore(dr7); } static __always_inline void exc_debug_user(struct pt_regs *regs, @@ -901,6 +903,15 @@ */ WARN_ON_ONCE(!user_mode(regs)); + /* + * NB: We can't easily clear DR7 here because + * idtentry_exit_to_usermode() can invoke ptrace, schedule, access + * user memory, etc. This means that a recursive #DB is possible. If + * this happens, that #DB will hit exc_debug_kernel() and clear DR7. + * Since we're not on the IST stack right now, everything will be + * fine. + */ + idtentry_enter_user(regs); instrumentation_begin(); @@ -913,36 +924,24 @@ /* IST stack entry */ DEFINE_IDTENTRY_DEBUG(exc_debug) { - unsigned long dr6, dr7; - - debug_enter(&dr6, &dr7); - exc_debug_kernel(regs, dr6); - debug_exit(dr7); + exc_debug_kernel(regs, debug_read_clear_dr6()); } /* User entry, runs on regular task stack */ DEFINE_IDTENTRY_DEBUG_USER(exc_debug) { - unsigned long dr6, dr7; - - debug_enter(&dr6, &dr7); - exc_debug_user(regs, dr6); - debug_exit(dr7); + exc_debug_user(regs, debug_read_clear_dr6()); } #else /* 32 bit does not have separate entry points. */ DEFINE_IDTENTRY_RAW(exc_debug) { - unsigned long dr6, dr7; - - debug_enter(&dr6, &dr7); + unsigned long dr6 = debug_read_clear_dr6(); if (user_mode(regs)) exc_debug_user(regs, dr6); else exc_debug_kernel(regs, dr6); - - debug_exit(dr7); } #endif --- linux-5.8.0.orig/arch/x86/kernel/tsc_msr.c +++ linux-5.8.0/arch/x86/kernel/tsc_msr.c @@ -133,10 +133,15 @@ .mask = 0x0f, }; -/* 24 MHz crystal? : 24 * 13 / 4 = 78 MHz */ +/* + * 24 MHz crystal? : 24 * 13 / 4 = 78 MHz + * Frequency step for Lightning Mountain SoC is fixed to 78 MHz, + * so all the frequency entries are 78000. + */ static const struct freq_desc freq_desc_lgm = { .use_msr_plat = true, - .freqs = { 78000, 78000, 78000, 78000, 78000, 78000, 78000, 78000 }, + .freqs = { 78000, 78000, 78000, 78000, 78000, 78000, 78000, 78000, + 78000, 78000, 78000, 78000, 78000, 78000, 78000, 78000 }, .mask = 0x0f, }; --- linux-5.8.0.orig/arch/x86/kernel/unwind_orc.c +++ linux-5.8.0/arch/x86/kernel/unwind_orc.c @@ -320,19 +320,12 @@ unsigned long *unwind_get_return_address_ptr(struct unwind_state *state) { - struct task_struct *task = state->task; - if (unwind_done(state)) return NULL; if (state->regs) return &state->regs->ip; - if (task != current && state->sp == task->thread.sp) { - struct inactive_task_frame *frame = (void *)task->thread.sp; - return &frame->ret_addr; - } - if (state->sp) return (unsigned long *)state->sp - 1; @@ -373,8 +366,8 @@ if (!stack_access_ok(state, addr, sizeof(struct pt_regs))) return false; - *ip = regs->ip; - *sp = regs->sp; + *ip = READ_ONCE_NOCHECK(regs->ip); + *sp = READ_ONCE_NOCHECK(regs->sp); return true; } @@ -386,8 +379,8 @@ if (!stack_access_ok(state, addr, IRET_FRAME_SIZE)) return false; - *ip = regs->ip; - *sp = regs->sp; + *ip = READ_ONCE_NOCHECK(regs->ip); + *sp = READ_ONCE_NOCHECK(regs->sp); return true; } @@ -408,12 +401,12 @@ return false; if (state->full_regs) { - *val = ((unsigned long *)state->regs)[reg]; + *val = READ_ONCE_NOCHECK(((unsigned long *)state->regs)[reg]); return true; } if (state->prev_regs) { - *val = ((unsigned long *)state->prev_regs)[reg]; + *val = READ_ONCE_NOCHECK(((unsigned long *)state->prev_regs)[reg]); return true; } @@ -662,7 +655,7 @@ } else { struct inactive_task_frame *frame = (void *)task->thread.sp; - state->sp = task->thread.sp; + state->sp = task->thread.sp + sizeof(*frame); state->bp = READ_ONCE_NOCHECK(frame->bp); state->ip = READ_ONCE_NOCHECK(frame->ret_addr); state->signal = (void *)state->ip == ret_from_fork; --- linux-5.8.0.orig/arch/x86/kernel/uprobes.c +++ linux-5.8.0/arch/x86/kernel/uprobes.c @@ -255,12 +255,13 @@ static bool is_prefix_bad(struct insn *insn) { + insn_byte_t p; int i; - for (i = 0; i < insn->prefixes.nbytes; i++) { + for_each_insn_prefix(insn, i, p) { insn_attr_t attr; - attr = inat_get_opcode_attribute(insn->prefixes.bytes[i]); + attr = inat_get_opcode_attribute(p); switch (attr) { case INAT_MAKE_PREFIX(INAT_PFX_ES): case INAT_MAKE_PREFIX(INAT_PFX_CS): @@ -715,6 +716,7 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn) { u8 opc1 = OPCODE1(insn); + insn_byte_t p; int i; switch (opc1) { @@ -746,8 +748,8 @@ * Intel and AMD behavior differ in 64-bit mode: Intel ignores 66 prefix. * No one uses these insns, reject any branch insns with such prefix. */ - for (i = 0; i < insn->prefixes.nbytes; i++) { - if (insn->prefixes.bytes[i] == 0x66) + for_each_insn_prefix(insn, i, p) { + if (p == 0x66) return -ENOTSUPP; } --- linux-5.8.0.orig/arch/x86/kvm/cpuid.c +++ linux-5.8.0/arch/x86/kvm/cpuid.c @@ -244,7 +244,7 @@ if (cpuid->nent < vcpu->arch.cpuid_nent) goto out; r = -EFAULT; - if (copy_to_user(entries, &vcpu->arch.cpuid_entries, + if (copy_to_user(entries, vcpu->arch.cpuid_entries, vcpu->arch.cpuid_nent * sizeof(struct kvm_cpuid_entry2))) goto out; return 0; --- linux-5.8.0.orig/arch/x86/kvm/cpuid.h +++ linux-5.8.0/arch/x86/kvm/cpuid.h @@ -257,6 +257,20 @@ return x86_stepping(best->eax); } +static inline bool guest_has_spec_ctrl_msr(struct kvm_vcpu *vcpu) +{ + return (guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL) || + guest_cpuid_has(vcpu, X86_FEATURE_AMD_STIBP) || + guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS) || + guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD)); +} + +static inline bool guest_has_pred_cmd_msr(struct kvm_vcpu *vcpu) +{ + return (guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL) || + guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBPB)); +} + static inline bool supports_cpuid_fault(struct kvm_vcpu *vcpu) { return vcpu->arch.msr_platform_info & MSR_PLATFORM_INFO_CPUID_FAULT; --- linux-5.8.0.orig/arch/x86/kvm/emulate.c +++ linux-5.8.0/arch/x86/kvm/emulate.c @@ -2559,9 +2559,9 @@ ctxt->_eip = GET_SMSTATE(u64, smstate, 0x7f78); ctxt->eflags = GET_SMSTATE(u32, smstate, 0x7f70) | X86_EFLAGS_FIXED; - val = GET_SMSTATE(u32, smstate, 0x7f68); + val = GET_SMSTATE(u64, smstate, 0x7f68); ctxt->ops->set_dr(ctxt, 6, (val & DR6_VOLATILE) | DR6_FIXED_1); - val = GET_SMSTATE(u32, smstate, 0x7f60); + val = GET_SMSTATE(u64, smstate, 0x7f60); ctxt->ops->set_dr(ctxt, 7, (val & DR7_VOLATILE) | DR7_FIXED_1); cr0 = GET_SMSTATE(u64, smstate, 0x7f58); @@ -2867,6 +2867,8 @@ ops->get_msr(ctxt, MSR_IA32_SYSENTER_ESP, &msr_data); *reg_write(ctxt, VCPU_REGS_RSP) = (efer & EFER_LMA) ? msr_data : (u32)msr_data; + if (efer & EFER_LMA) + ctxt->mode = X86EMUL_MODE_PROT64; return X86EMUL_CONTINUE; } @@ -3594,7 +3596,7 @@ u64 tsc_aux = 0; if (ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux)) - return emulate_gp(ctxt, 0); + return emulate_ud(ctxt); ctxt->dst.val = tsc_aux; return X86EMUL_CONTINUE; } @@ -4020,6 +4022,12 @@ return X86EMUL_CONTINUE; } +static int em_clflushopt(struct x86_emulate_ctxt *ctxt) +{ + /* emulating clflushopt regardless of cpuid */ + return X86EMUL_CONTINUE; +} + static int em_movsxd(struct x86_emulate_ctxt *ctxt) { ctxt->dst.val = (s32) ctxt->src.val; @@ -4559,7 +4567,7 @@ }; static const struct gprefix pfx_0f_ae_7 = { - I(SrcMem | ByteOp, em_clflush), N, N, N, + I(SrcMem | ByteOp, em_clflush), I(SrcMem | ByteOp, em_clflushopt), N, N, }; static const struct group_dual group15 = { { --- linux-5.8.0.orig/arch/x86/kvm/ioapic.c +++ linux-5.8.0/arch/x86/kvm/ioapic.c @@ -197,12 +197,9 @@ /* * If no longer has pending EOI in LAPICs, update - * EOI for this vetor. + * EOI for this vector. */ rtc_irq_eoi(ioapic, vcpu, entry->fields.vector); - kvm_ioapic_update_eoi_one(vcpu, ioapic, - entry->fields.trig_mode, - irq); break; } } --- linux-5.8.0.orig/arch/x86/kvm/irq.c +++ linux-5.8.0/arch/x86/kvm/irq.c @@ -40,29 +40,10 @@ * check if there is pending interrupt from * non-APIC source without intack. */ -static int kvm_cpu_has_extint(struct kvm_vcpu *v) -{ - u8 accept = kvm_apic_accept_pic_intr(v); - - if (accept) { - if (irqchip_split(v->kvm)) - return pending_userspace_extint(v); - else - return v->kvm->arch.vpic->output; - } else - return 0; -} - -/* - * check if there is injectable interrupt: - * when virtual interrupt delivery enabled, - * interrupt from apic will handled by hardware, - * we don't need to check it here. - */ -int kvm_cpu_has_injectable_intr(struct kvm_vcpu *v) +int kvm_cpu_has_extint(struct kvm_vcpu *v) { /* - * FIXME: interrupt.injected represents an interrupt that it's + * FIXME: interrupt.injected represents an interrupt whose * side-effects have already been applied (e.g. bit from IRR * already moved to ISR). Therefore, it is incorrect to rely * on interrupt.injected to know if there is a pending @@ -75,6 +56,23 @@ if (!lapic_in_kernel(v)) return v->arch.interrupt.injected; + if (!kvm_apic_accept_pic_intr(v)) + return 0; + + if (irqchip_split(v->kvm)) + return pending_userspace_extint(v); + else + return v->kvm->arch.vpic->output; +} + +/* + * check if there is injectable interrupt: + * when virtual interrupt delivery enabled, + * interrupt from apic will handled by hardware, + * we don't need to check it here. + */ +int kvm_cpu_has_injectable_intr(struct kvm_vcpu *v) +{ if (kvm_cpu_has_extint(v)) return 1; @@ -91,20 +89,6 @@ */ int kvm_cpu_has_interrupt(struct kvm_vcpu *v) { - /* - * FIXME: interrupt.injected represents an interrupt that it's - * side-effects have already been applied (e.g. bit from IRR - * already moved to ISR). Therefore, it is incorrect to rely - * on interrupt.injected to know if there is a pending - * interrupt in the user-mode LAPIC. - * This leads to nVMX/nSVM not be able to distinguish - * if it should exit from L2 to L1 on EXTERNAL_INTERRUPT on - * pending interrupt or should re-inject an injected - * interrupt. - */ - if (!lapic_in_kernel(v)) - return v->arch.interrupt.injected; - if (kvm_cpu_has_extint(v)) return 1; @@ -118,16 +102,21 @@ */ static int kvm_cpu_get_extint(struct kvm_vcpu *v) { - if (kvm_cpu_has_extint(v)) { - if (irqchip_split(v->kvm)) { - int vector = v->arch.pending_external_vector; - - v->arch.pending_external_vector = -1; - return vector; - } else - return kvm_pic_read_irq(v->kvm); /* PIC */ - } else + if (!kvm_cpu_has_extint(v)) { + WARN_ON(!lapic_in_kernel(v)); return -1; + } + + if (!lapic_in_kernel(v)) + return v->arch.interrupt.nr; + + if (irqchip_split(v->kvm)) { + int vector = v->arch.pending_external_vector; + + v->arch.pending_external_vector = -1; + return vector; + } else + return kvm_pic_read_irq(v->kvm); /* PIC */ } /* @@ -135,13 +124,7 @@ */ int kvm_cpu_get_interrupt(struct kvm_vcpu *v) { - int vector; - - if (!lapic_in_kernel(v)) - return v->arch.interrupt.nr; - - vector = kvm_cpu_get_extint(v); - + int vector = kvm_cpu_get_extint(v); if (vector != -1) return vector; /* PIC */ --- linux-5.8.0.orig/arch/x86/kvm/kvm_cache_regs.h +++ linux-5.8.0/arch/x86/kvm/kvm_cache_regs.h @@ -7,7 +7,7 @@ #define KVM_POSSIBLE_CR0_GUEST_BITS X86_CR0_TS #define KVM_POSSIBLE_CR4_GUEST_BITS \ (X86_CR4_PVI | X86_CR4_DE | X86_CR4_PCE | X86_CR4_OSFXSR \ - | X86_CR4_OSXMMEXCPT | X86_CR4_LA57 | X86_CR4_PGE | X86_CR4_TSD) + | X86_CR4_OSXMMEXCPT | X86_CR4_PGE | X86_CR4_TSD) #define BUILD_KVM_GPR_ACCESSORS(lname, uname) \ static __always_inline unsigned long kvm_##lname##_read(struct kvm_vcpu *vcpu)\ --- linux-5.8.0.orig/arch/x86/kvm/lapic.c +++ linux-5.8.0/arch/x86/kvm/lapic.c @@ -490,6 +490,12 @@ } } +void kvm_apic_clear_irr(struct kvm_vcpu *vcpu, int vec) +{ + apic_clear_irr(vec, vcpu->arch.apic); +} +EXPORT_SYMBOL_GPL(kvm_apic_clear_irr); + static inline void apic_set_isr(int vec, struct kvm_lapic *apic) { struct kvm_vcpu *vcpu; @@ -2456,12 +2462,13 @@ struct kvm_lapic *apic = vcpu->arch.apic; u32 ppr; - if (!kvm_apic_hw_enabled(apic)) + if (!kvm_apic_present(vcpu)) return -1; __apic_update_ppr(apic, &ppr); return apic_has_interrupt_for_ppr(apic, ppr); } +EXPORT_SYMBOL_GPL(kvm_apic_has_interrupt); int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu) { --- linux-5.8.0.orig/arch/x86/kvm/lapic.h +++ linux-5.8.0/arch/x86/kvm/lapic.h @@ -89,6 +89,7 @@ bool kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source, int shorthand, unsigned int dest, int dest_mode); int kvm_apic_compare_prio(struct kvm_vcpu *vcpu1, struct kvm_vcpu *vcpu2); +void kvm_apic_clear_irr(struct kvm_vcpu *vcpu, int vec); bool __kvm_apic_update_irr(u32 *pir, void *regs, int *max_irr); bool kvm_apic_update_irr(struct kvm_vcpu *vcpu, u32 *pir, int *max_irr); void kvm_apic_update_ppr(struct kvm_vcpu *vcpu); --- linux-5.8.0.orig/arch/x86/kvm/mmu.h +++ linux-5.8.0/arch/x86/kvm/mmu.h @@ -48,7 +48,7 @@ if (e < s) return 0; - return ((1ULL << (e - s + 1)) - 1) << s; + return ((2ULL << (e - s)) - 1) << s; } void kvm_mmu_set_mmio_spte_mask(u64 mmio_value, u64 access_mask); --- linux-5.8.0.orig/arch/x86/kvm/mmu/mmu.c +++ linux-5.8.0/arch/x86/kvm/mmu/mmu.c @@ -400,11 +400,11 @@ } /* - * Due to limited space in PTEs, the MMIO generation is a 19 bit subset of + * Due to limited space in PTEs, the MMIO generation is a 18 bit subset of * the memslots generation and is derived as follows: * * Bits 0-8 of the MMIO generation are propagated to spte bits 3-11 - * Bits 9-18 of the MMIO generation are propagated to spte bits 52-61 + * Bits 9-17 of the MMIO generation are propagated to spte bits 54-62 * * The KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS flag is intentionally not included in * the MMIO generation number, as doing so would require stealing a bit from @@ -413,18 +413,29 @@ * requires a full MMU zap). The flag is instead explicitly queried when * checking for MMIO spte cache hits. */ -#define MMIO_SPTE_GEN_MASK GENMASK_ULL(17, 0) #define MMIO_SPTE_GEN_LOW_START 3 #define MMIO_SPTE_GEN_LOW_END 11 -#define MMIO_SPTE_GEN_LOW_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_END, \ - MMIO_SPTE_GEN_LOW_START) #define MMIO_SPTE_GEN_HIGH_START PT64_SECOND_AVAIL_BITS_SHIFT #define MMIO_SPTE_GEN_HIGH_END 62 + +#define MMIO_SPTE_GEN_LOW_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_END, \ + MMIO_SPTE_GEN_LOW_START) #define MMIO_SPTE_GEN_HIGH_MASK GENMASK_ULL(MMIO_SPTE_GEN_HIGH_END, \ MMIO_SPTE_GEN_HIGH_START) +#define MMIO_SPTE_GEN_LOW_BITS (MMIO_SPTE_GEN_LOW_END - MMIO_SPTE_GEN_LOW_START + 1) +#define MMIO_SPTE_GEN_HIGH_BITS (MMIO_SPTE_GEN_HIGH_END - MMIO_SPTE_GEN_HIGH_START + 1) + +/* remember to adjust the comment above as well if you change these */ +static_assert(MMIO_SPTE_GEN_LOW_BITS == 9 && MMIO_SPTE_GEN_HIGH_BITS == 9); + +#define MMIO_SPTE_GEN_LOW_SHIFT (MMIO_SPTE_GEN_LOW_START - 0) +#define MMIO_SPTE_GEN_HIGH_SHIFT (MMIO_SPTE_GEN_HIGH_START - MMIO_SPTE_GEN_LOW_BITS) + +#define MMIO_SPTE_GEN_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_BITS + MMIO_SPTE_GEN_HIGH_BITS - 1, 0) + static u64 generation_mmio_spte_mask(u64 gen) { u64 mask; @@ -432,8 +443,8 @@ WARN_ON(gen & ~MMIO_SPTE_GEN_MASK); BUILD_BUG_ON((MMIO_SPTE_GEN_HIGH_MASK | MMIO_SPTE_GEN_LOW_MASK) & SPTE_SPECIAL_MASK); - mask = (gen << MMIO_SPTE_GEN_LOW_START) & MMIO_SPTE_GEN_LOW_MASK; - mask |= (gen << MMIO_SPTE_GEN_HIGH_START) & MMIO_SPTE_GEN_HIGH_MASK; + mask = (gen << MMIO_SPTE_GEN_LOW_SHIFT) & MMIO_SPTE_GEN_LOW_MASK; + mask |= (gen << MMIO_SPTE_GEN_HIGH_SHIFT) & MMIO_SPTE_GEN_HIGH_MASK; return mask; } @@ -441,8 +452,8 @@ { u64 gen; - gen = (spte & MMIO_SPTE_GEN_LOW_MASK) >> MMIO_SPTE_GEN_LOW_START; - gen |= (spte & MMIO_SPTE_GEN_HIGH_MASK) >> MMIO_SPTE_GEN_HIGH_START; + gen = (spte & MMIO_SPTE_GEN_LOW_MASK) >> MMIO_SPTE_GEN_LOW_SHIFT; + gen |= (spte & MMIO_SPTE_GEN_HIGH_MASK) >> MMIO_SPTE_GEN_HIGH_SHIFT; return gen; } @@ -1971,7 +1982,8 @@ return kvm_handle_hva_range(kvm, hva, hva + 1, data, handler); } -int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end) +int kvm_unmap_hva_range(struct kvm *kvm, unsigned long start, unsigned long end, + unsigned flags) { return kvm_handle_hva_range(kvm, start, end, 0, kvm_unmap_rmapp); } @@ -2520,7 +2532,7 @@ } if (sp->unsync_children) - kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu); + kvm_make_request(KVM_REQ_MMU_SYNC, vcpu); __clear_sp_write_flooding_count(sp); trace_kvm_mmu_get_page(sp, false); @@ -6340,6 +6352,7 @@ cond_resched_lock(&kvm->mmu_lock); } } + kvm_mmu_commit_zap_page(kvm, &invalid_list); spin_unlock(&kvm->mmu_lock); srcu_read_unlock(&kvm->srcu, rcu_idx); --- linux-5.8.0.orig/arch/x86/kvm/svm/avic.c +++ linux-5.8.0/arch/x86/kvm/svm/avic.c @@ -868,6 +868,7 @@ * - Tell IOMMU to use legacy mode for this interrupt. * - Retrieve ga_tag of prior interrupt remapping data. */ + pi.prev_ga_tag = 0; pi.is_guest_mode = false; ret = irq_set_vcpu_affinity(host_irq, &pi); --- linux-5.8.0.orig/arch/x86/kvm/svm/nested.c +++ linux-5.8.0/arch/x86/kvm/svm/nested.c @@ -65,7 +65,7 @@ u64 pdpte; int ret; - ret = kvm_vcpu_read_guest_page(vcpu, gpa_to_gfn(__sme_clr(cr3)), &pdpte, + ret = kvm_vcpu_read_guest_page(vcpu, gpa_to_gfn(cr3), &pdpte, offset_in_page(cr3) + index * 8, 8); if (ret) return 0; --- linux-5.8.0.orig/arch/x86/kvm/svm/sev.c +++ linux-5.8.0/arch/x86/kvm/svm/sev.c @@ -318,6 +318,8 @@ struct page **pages; unsigned long first, last; + lockdep_assert_held(&kvm->lock); + if (ulen == 0 || uaddr + ulen < uaddr) return NULL; @@ -986,12 +988,20 @@ if (!region) return -ENOMEM; + mutex_lock(&kvm->lock); region->pages = sev_pin_memory(kvm, range->addr, range->size, ®ion->npages, 1); if (!region->pages) { ret = -ENOMEM; + mutex_unlock(&kvm->lock); goto e_free; } + region->uaddr = range->addr; + region->size = range->size; + + list_add_tail(®ion->list, &sev->regions_list); + mutex_unlock(&kvm->lock); + /* * The guest may change the memory encryption attribute from C=0 -> C=1 * or vice versa for this memory range. Lets make sure caches are @@ -1000,13 +1010,6 @@ */ sev_clflush_pages(region->pages, region->npages); - region->uaddr = range->addr; - region->size = range->size; - - mutex_lock(&kvm->lock); - list_add_tail(®ion->list, &sev->regions_list); - mutex_unlock(&kvm->lock); - return ret; e_free: @@ -1111,9 +1114,6 @@ int __init sev_hardware_setup(void) { - struct sev_user_data_status *status; - int rc; - /* Maximum number of encrypted guests supported simultaneously */ max_sev_asid = cpuid_ecx(0x8000001F); @@ -1132,26 +1132,9 @@ if (!sev_reclaim_asid_bitmap) return 1; - status = kmalloc(sizeof(*status), GFP_KERNEL); - if (!status) - return 1; - - /* - * Check SEV platform status. - * - * PLATFORM_STATUS can be called in any state, if we failed to query - * the PLATFORM status then either PSP firmware does not support SEV - * feature or SEV firmware is dead. - */ - rc = sev_platform_status(status, NULL); - if (rc) - goto err; - pr_info("SEV supported\n"); -err: - kfree(status); - return rc; + return 0; } void sev_hardware_teardown(void) --- linux-5.8.0.orig/arch/x86/kvm/svm/svm.c +++ linux-5.8.0/arch/x86/kvm/svm/svm.c @@ -418,6 +418,11 @@ return 0; } + if (sev_active()) { + pr_info("KVM is unsupported when running as an SEV guest\n"); + return 0; + } + return 1; } @@ -1058,6 +1063,7 @@ init_sys_seg(&save->ldtr, SEG_TYPE_LDT); init_sys_seg(&save->tr, SEG_TYPE_BUSY_TSS16); + svm_set_cr4(&svm->vcpu, 0); svm_set_efer(&svm->vcpu, 0); save->dr6 = 0xffff0ff0; kvm_set_rflags(&svm->vcpu, 2); @@ -2169,6 +2175,12 @@ return 1; } +static int invd_interception(struct vcpu_svm *svm) +{ + /* Treat an INVD instruction as a NOP and just skip it. */ + return kvm_skip_emulated_instruction(&svm->vcpu); +} + static int invlpg_interception(struct vcpu_svm *svm) { if (!static_cpu_has(X86_FEATURE_DECODEASSISTS)) @@ -2429,10 +2441,7 @@ break; case MSR_IA32_SPEC_CTRL: if (!msr_info->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_STIBP) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD)) + !guest_has_spec_ctrl_msr(vcpu)) return 1; msr_info->data = svm->spec_ctrl; @@ -2516,13 +2525,10 @@ break; case MSR_IA32_SPEC_CTRL: if (!msr->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_STIBP) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD)) + !guest_has_spec_ctrl_msr(vcpu)) return 1; - if (data & ~kvm_spec_ctrl_valid_bits(vcpu)) + if (kvm_spec_ctrl_test_value(data)) return 1; svm->spec_ctrl = data; @@ -2544,12 +2550,12 @@ break; case MSR_IA32_PRED_CMD: if (!msr->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBPB)) + !guest_has_pred_cmd_msr(vcpu)) return 1; if (data & ~PRED_CMD_IBPB) return 1; - if (!boot_cpu_has(X86_FEATURE_AMD_IBPB)) + if (!boot_cpu_has(X86_FEATURE_IBPB)) return 1; if (!data) break; @@ -2758,7 +2764,7 @@ [SVM_EXIT_RDPMC] = rdpmc_interception, [SVM_EXIT_CPUID] = cpuid_interception, [SVM_EXIT_IRET] = iret_interception, - [SVM_EXIT_INVD] = emulate_on_interception, + [SVM_EXIT_INVD] = invd_interception, [SVM_EXIT_PAUSE] = pause_interception, [SVM_EXIT_HLT] = halt_interception, [SVM_EXIT_INVLPG] = invlpg_interception, --- linux-5.8.0.orig/arch/x86/kvm/vmx/nested.c +++ linux-5.8.0/arch/x86/kvm/vmx/nested.c @@ -2402,6 +2402,8 @@ vmcs_writel(GUEST_TR_BASE, vmcs12->guest_tr_base); vmcs_writel(GUEST_GDTR_BASE, vmcs12->guest_gdtr_base); vmcs_writel(GUEST_IDTR_BASE, vmcs12->guest_idtr_base); + + vmx->segment_cache.bitmask = 0; } if (!hv_evmcs || !(hv_evmcs->hv_clean_fields & @@ -3295,8 +3297,10 @@ prepare_vmcs02_early(vmx, vmcs12); if (from_vmentry) { - if (unlikely(!nested_get_vmcs12_pages(vcpu))) + if (unlikely(!nested_get_vmcs12_pages(vcpu))) { + vmx_switch_vmcs(vcpu, &vmx->vmcs01); return NVMX_VMENTRY_KVM_INTERNAL_ERROR; + } if (nested_vmx_check_vmentry_hw(vcpu)) { vmx_switch_vmcs(vcpu, &vmx->vmcs01); @@ -3480,6 +3484,14 @@ if (unlikely(status != NVMX_VMENTRY_SUCCESS)) goto vmentry_failed; + /* Emulate processing of posted interrupts on VM-Enter. */ + if (nested_cpu_has_posted_intr(vmcs12) && + kvm_apic_has_interrupt(vcpu) == vmx->nested.posted_intr_nv) { + vmx->nested.pi_pending = true; + kvm_make_request(KVM_REQ_EVENT, vcpu); + kvm_apic_clear_irr(vcpu, vmx->nested.posted_intr_nv); + } + /* Hide L1D cache contents from the nested guest. */ vmx->vcpu.arch.l1tf_flush_l1d = true; @@ -4620,7 +4632,7 @@ vmx->nested.msrs.entry_ctls_high &= ~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL; vmx->nested.msrs.exit_ctls_high &= - ~VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL; + ~VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL; } } @@ -5992,11 +6004,14 @@ if (is_guest_mode(vcpu)) { sync_vmcs02_to_vmcs12(vcpu, vmcs12); sync_vmcs02_to_vmcs12_rare(vcpu, vmcs12); - } else if (!vmx->nested.need_vmcs12_to_shadow_sync) { - if (vmx->nested.hv_evmcs) - copy_enlightened_to_vmcs12(vmx); - else if (enable_shadow_vmcs) - copy_shadow_to_vmcs12(vmx); + } else { + copy_vmcs02_to_vmcs12_rare(vcpu, get_vmcs12(vcpu)); + if (!vmx->nested.need_vmcs12_to_shadow_sync) { + if (vmx->nested.hv_evmcs) + copy_enlightened_to_vmcs12(vmx); + else if (enable_shadow_vmcs) + copy_shadow_to_vmcs12(vmx); + } } BUILD_BUG_ON(sizeof(user_vmx_nested_state->vmcs12) < VMCS12_SIZE); --- linux-5.8.0.orig/arch/x86/kvm/vmx/pmu_intel.c +++ linux-5.8.0/arch/x86/kvm/vmx/pmu_intel.c @@ -29,7 +29,7 @@ [4] = { 0x2e, 0x41, PERF_COUNT_HW_CACHE_MISSES }, [5] = { 0xc4, 0x00, PERF_COUNT_HW_BRANCH_INSTRUCTIONS }, [6] = { 0xc5, 0x00, PERF_COUNT_HW_BRANCH_MISSES }, - [7] = { 0x00, 0x30, PERF_COUNT_HW_REF_CPU_CYCLES }, + [7] = { 0x00, 0x03, PERF_COUNT_HW_REF_CPU_CYCLES }, }; /* mapping between fixed pmc index and intel_arch_events array */ @@ -362,7 +362,9 @@ pmu->nr_arch_gp_counters = min_t(int, eax.split.num_counters, x86_pmu.num_counters_gp); + eax.split.bit_width = min_t(int, eax.split.bit_width, x86_pmu.bit_width_gp); pmu->counter_bitmask[KVM_PMC_GP] = ((u64)1 << eax.split.bit_width) - 1; + eax.split.mask_length = min_t(int, eax.split.mask_length, x86_pmu.events_mask_len); pmu->available_event_types = ~entry->ebx & ((1ull << eax.split.mask_length) - 1); @@ -372,6 +374,8 @@ pmu->nr_arch_fixed_counters = min_t(int, edx.split.num_counters_fixed, x86_pmu.num_counters_fixed); + edx.split.bit_width_fixed = min_t(int, + edx.split.bit_width_fixed, x86_pmu.bit_width_fixed); pmu->counter_bitmask[KVM_PMC_FIXED] = ((u64)1 << edx.split.bit_width_fixed) - 1; } --- linux-5.8.0.orig/arch/x86/kvm/vmx/vmx.c +++ linux-5.8.0/arch/x86/kvm/vmx/vmx.c @@ -1857,7 +1857,7 @@ break; case MSR_IA32_SPEC_CTRL: if (!msr_info->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL)) + !guest_has_spec_ctrl_msr(vcpu)) return 1; msr_info->data = to_vmx(vcpu)->spec_ctrl; @@ -2059,10 +2059,10 @@ break; case MSR_IA32_SPEC_CTRL: if (!msr_info->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL)) + !guest_has_spec_ctrl_msr(vcpu)) return 1; - if (data & ~kvm_spec_ctrl_valid_bits(vcpu)) + if (kvm_spec_ctrl_test_value(data)) return 1; vmx->spec_ctrl = data; @@ -2094,12 +2094,12 @@ goto find_shared_msr; case MSR_IA32_PRED_CMD: if (!msr_info->host_initiated && - !guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL)) + !guest_has_pred_cmd_msr(vcpu)) return 1; if (data & ~PRED_CMD_IBPB) return 1; - if (!boot_cpu_has(X86_FEATURE_SPEC_CTRL)) + if (!boot_cpu_has(X86_FEATURE_IBPB)) return 1; if (!data) break; @@ -6028,6 +6028,7 @@ (exit_reason != EXIT_REASON_EXCEPTION_NMI && exit_reason != EXIT_REASON_EPT_VIOLATION && exit_reason != EXIT_REASON_PML_FULL && + exit_reason != EXIT_REASON_APIC_ACCESS && exit_reason != EXIT_REASON_TASK_SWITCH)) { vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV; @@ -6887,11 +6888,21 @@ switch (index) { case MSR_IA32_TSX_CTRL: /* - * No need to pass TSX_CTRL_CPUID_CLEAR through, so - * let's avoid changing CPUID bits under the host - * kernel's feet. + * TSX_CTRL_CPUID_CLEAR is handled in the CPUID + * interception. Keep the host value unchanged to avoid + * changing CPUID bits under the host kernel's feet. + * + * hle=0, rtm=0, tsx_ctrl=1 can be found with some + * combinations of new kernel and old userspace. If + * those guests run on a tsx=off host, do allow guests + * to use TSX_CTRL, but do not change the value on the + * host so that TSX remains always disabled. */ vmx->guest_msrs[j].mask = ~(u64)TSX_CTRL_CPUID_CLEAR; + if (boot_cpu_has(X86_FEATURE_RTM)) + vmx->guest_msrs[j].mask = ~(u64)TSX_CTRL_CPUID_CLEAR; + else + vmx->guest_msrs[j].mask = 0; break; default: vmx->guest_msrs[j].mask = -1ull; --- linux-5.8.0.orig/arch/x86/kvm/x86.c +++ linux-5.8.0/arch/x86/kvm/x86.c @@ -103,6 +103,7 @@ static void update_cr8_intercept(struct kvm_vcpu *vcpu); static void process_nmi(struct kvm_vcpu *vcpu); +static void process_smi(struct kvm_vcpu *vcpu); static void enter_smm(struct kvm_vcpu *vcpu); static void __kvm_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags); static void store_regs(struct kvm_vcpu *vcpu); @@ -967,7 +968,8 @@ { unsigned long old_cr4 = kvm_read_cr4(vcpu); unsigned long pdptr_bits = X86_CR4_PGE | X86_CR4_PSE | X86_CR4_PAE | - X86_CR4_SMEP | X86_CR4_SMAP | X86_CR4_PKE; + X86_CR4_SMEP; + unsigned long mmu_role_bits = pdptr_bits | X86_CR4_SMAP | X86_CR4_PKE; if (kvm_valid_cr4(vcpu, cr4)) return 1; @@ -995,7 +997,7 @@ if (kvm_x86_ops.set_cr4(vcpu, cr4)) return 1; - if (((cr4 ^ old_cr4) & pdptr_bits) || + if (((cr4 ^ old_cr4) & mmu_role_bits) || (!(cr4 & X86_CR4_PCIDE) && (old_cr4 & X86_CR4_PCIDE))) kvm_mmu_reset_context(vcpu); @@ -1365,16 +1367,24 @@ if (!boot_cpu_has_bug(X86_BUG_MDS)) data |= ARCH_CAP_MDS_NO; - /* - * On TAA affected systems: - * - nothing to do if TSX is disabled on the host. - * - we emulate TSX_CTRL if present on the host. - * This lets the guest use VERW to clear CPU buffers. - */ - if (!boot_cpu_has(X86_FEATURE_RTM)) - data &= ~(ARCH_CAP_TAA_NO | ARCH_CAP_TSX_CTRL_MSR); - else if (!boot_cpu_has_bug(X86_BUG_TAA)) + if (!boot_cpu_has(X86_FEATURE_RTM)) { + /* + * If RTM=0 because the kernel has disabled TSX, the host might + * have TAA_NO or TSX_CTRL. Clear TAA_NO (the guest sees RTM=0 + * and therefore knows that there cannot be TAA) but keep + * TSX_CTRL: some buggy userspaces leave it set on tsx=on hosts, + * and we want to allow migrating those guests to tsx=off hosts. + */ + data &= ~ARCH_CAP_TAA_NO; + } else if (!boot_cpu_has_bug(X86_BUG_TAA)) { data |= ARCH_CAP_TAA_NO; + } else { + /* + * Nothing to do here; we emulate TSX_CTRL if present on the + * host so the guest can choose between disabling TSX or + * using VERW to clear CPU buffers. + */ + } return data; } @@ -2696,7 +2706,7 @@ return 1; if (!lapic_in_kernel(vcpu)) - return 1; + return data ? 1 : 0; vcpu->arch.apf.msr_en_val = data; @@ -3782,21 +3792,23 @@ static int kvm_cpu_accept_dm_intr(struct kvm_vcpu *vcpu) { + /* + * We can accept userspace's request for interrupt injection + * as long as we have a place to store the interrupt number. + * The actual injection will happen when the CPU is able to + * deliver the interrupt. + */ + if (kvm_cpu_has_extint(vcpu)) + return false; + + /* Acknowledging ExtINT does not happen if LINT0 is masked. */ return (!lapic_in_kernel(vcpu) || kvm_apic_accept_pic_intr(vcpu)); } -/* - * if userspace requested an interrupt window, check that the - * interrupt window is open. - * - * No need to exit to userspace if we already have an interrupt queued. - */ static int kvm_vcpu_ready_for_interrupt_injection(struct kvm_vcpu *vcpu) { return kvm_arch_interrupt_allowed(vcpu) && - !kvm_cpu_has_interrupt(vcpu) && - !kvm_event_needs_reinjection(vcpu) && kvm_cpu_accept_dm_intr(vcpu); } @@ -3928,6 +3940,9 @@ { process_nmi(vcpu); + if (kvm_check_request(KVM_REQ_SMI, vcpu)) + process_smi(vcpu); + /* * In guest mode, payload delivery should be deferred, * so that the L1 hypervisor can intercept #PF before @@ -7440,7 +7455,7 @@ goto out; } if (ops->disabled_by_bios()) { - pr_err_ratelimited("kvm: disabled by bios\n"); + pr_warn_ratelimited("kvm: disabled by bios\n"); r = -EOPNOTSUPP; goto out; } @@ -10676,28 +10691,32 @@ } EXPORT_SYMBOL_GPL(kvm_arch_no_poll); -u64 kvm_spec_ctrl_valid_bits(struct kvm_vcpu *vcpu) + +int kvm_spec_ctrl_test_value(u64 value) { - uint64_t bits = SPEC_CTRL_IBRS | SPEC_CTRL_STIBP | SPEC_CTRL_SSBD; + /* + * test that setting IA32_SPEC_CTRL to given value + * is allowed by the host processor + */ - /* The STIBP bit doesn't fault even if it's not advertised */ - if (!guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_IBRS)) - bits &= ~(SPEC_CTRL_IBRS | SPEC_CTRL_STIBP); - if (!boot_cpu_has(X86_FEATURE_SPEC_CTRL) && - !boot_cpu_has(X86_FEATURE_AMD_IBRS)) - bits &= ~(SPEC_CTRL_IBRS | SPEC_CTRL_STIBP); - - if (!guest_cpuid_has(vcpu, X86_FEATURE_SPEC_CTRL_SSBD) && - !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD)) - bits &= ~SPEC_CTRL_SSBD; - if (!boot_cpu_has(X86_FEATURE_SPEC_CTRL_SSBD) && - !boot_cpu_has(X86_FEATURE_AMD_SSBD)) - bits &= ~SPEC_CTRL_SSBD; + u64 saved_value; + unsigned long flags; + int ret = 0; - return bits; + local_irq_save(flags); + + if (rdmsrl_safe(MSR_IA32_SPEC_CTRL, &saved_value)) + ret = 1; + else if (wrmsrl_safe(MSR_IA32_SPEC_CTRL, value)) + ret = 1; + else + wrmsrl(MSR_IA32_SPEC_CTRL, saved_value); + + local_irq_restore(flags); + + return ret; } -EXPORT_SYMBOL_GPL(kvm_spec_ctrl_valid_bits); +EXPORT_SYMBOL_GPL(kvm_spec_ctrl_test_value); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_fast_mmio); --- linux-5.8.0.orig/arch/x86/kvm/x86.h +++ linux-5.8.0/arch/x86/kvm/x86.h @@ -363,7 +363,7 @@ void kvm_load_guest_xsave_state(struct kvm_vcpu *vcpu); void kvm_load_host_xsave_state(struct kvm_vcpu *vcpu); -u64 kvm_spec_ctrl_valid_bits(struct kvm_vcpu *vcpu); +int kvm_spec_ctrl_test_value(u64 value); bool kvm_vcpu_exit_request(struct kvm_vcpu *vcpu); #endif --- linux-5.8.0.orig/arch/x86/lib/Makefile +++ linux-5.8.0/arch/x86/lib/Makefile @@ -44,6 +44,7 @@ lib-y := delay.o misc.o cmdline.o cpu.o lib-y += usercopy_$(BITS).o usercopy.o getuser.o putuser.o lib-y += memcpy_$(BITS).o +lib-$(CONFIG_ARCH_HAS_COPY_MC) += copy_mc.o copy_mc_64.o lib-$(CONFIG_INSTRUCTION_DECODER) += insn.o inat.o insn-eval.o lib-$(CONFIG_RANDOMIZE_BASE) += kaslr.o lib-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o --- linux-5.8.0.orig/arch/x86/lib/copy_mc.c +++ linux-5.8.0/arch/x86/lib/copy_mc.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright(c) 2016-2020 Intel Corporation. All rights reserved. */ + +#include +#include +#include +#include +#include + +#include + +#ifdef CONFIG_X86_MCE +/* + * See COPY_MC_TEST for self-test of the copy_mc_fragile() + * implementation. + */ +static DEFINE_STATIC_KEY_FALSE(copy_mc_fragile_key); + +void enable_copy_mc_fragile(void) +{ + static_branch_inc(©_mc_fragile_key); +} +#define copy_mc_fragile_enabled (static_branch_unlikely(©_mc_fragile_key)) + +/* + * Similar to copy_user_handle_tail, probe for the write fault point, or + * source exception point. + */ +__visible notrace unsigned long +copy_mc_fragile_handle_tail(char *to, char *from, unsigned len) +{ + for (; len; --len, to++, from++) + if (copy_mc_fragile(to, from, 1)) + break; + return len; +} +#else +/* + * No point in doing careful copying, or consulting a static key when + * there is no #MC handler in the CONFIG_X86_MCE=n case. + */ +void enable_copy_mc_fragile(void) +{ +} +#define copy_mc_fragile_enabled (0) +#endif + +unsigned long copy_mc_enhanced_fast_string(void *dst, const void *src, unsigned len); + +/** + * copy_mc_to_kernel - memory copy that handles source exceptions + * + * @dst: destination address + * @src: source address + * @len: number of bytes to copy + * + * Call into the 'fragile' version on systems that benefit from avoiding + * corner case poison consumption scenarios, For example, accessing + * poison across 2 cachelines with a single instruction. Almost all + * other uses case can use copy_mc_enhanced_fast_string() for a fast + * recoverable copy, or fallback to plain memcpy. + * + * Return 0 for success, or number of bytes not copied if there was an + * exception. + */ +unsigned long __must_check copy_mc_to_kernel(void *dst, const void *src, unsigned len) +{ + if (copy_mc_fragile_enabled) + return copy_mc_fragile(dst, src, len); + if (static_cpu_has(X86_FEATURE_ERMS)) + return copy_mc_enhanced_fast_string(dst, src, len); + memcpy(dst, src, len); + return 0; +} +EXPORT_SYMBOL_GPL(copy_mc_to_kernel); + +unsigned long __must_check copy_mc_to_user(void *dst, const void *src, unsigned len) +{ + unsigned long ret; + + if (copy_mc_fragile_enabled) { + __uaccess_begin(); + ret = copy_mc_fragile(dst, src, len); + __uaccess_end(); + return ret; + } + + if (static_cpu_has(X86_FEATURE_ERMS)) { + __uaccess_begin(); + ret = copy_mc_enhanced_fast_string(dst, src, len); + __uaccess_end(); + return ret; + } + + return copy_user_generic(dst, src, len); +} --- linux-5.8.0.orig/arch/x86/lib/copy_mc_64.S +++ linux-5.8.0/arch/x86/lib/copy_mc_64.S @@ -0,0 +1,163 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright(c) 2016-2020 Intel Corporation. All rights reserved. */ + +#include +#include +#include +#include + +#ifndef CONFIG_UML + +#ifdef CONFIG_X86_MCE +COPY_MC_TEST_CTL + +/* + * copy_mc_fragile - copy memory with indication if an exception / fault happened + * + * The 'fragile' version is opted into by platform quirks and takes + * pains to avoid unrecoverable corner cases like 'fast-string' + * instruction sequences, and consuming poison across a cacheline + * boundary. The non-fragile version is equivalent to memcpy() + * regardless of CPU machine-check-recovery capability. + */ +SYM_FUNC_START(copy_mc_fragile) + cmpl $8, %edx + /* Less than 8 bytes? Go to byte copy loop */ + jb .L_no_whole_words + + /* Check for bad alignment of source */ + testl $7, %esi + /* Already aligned */ + jz .L_8byte_aligned + + /* Copy one byte at a time until source is 8-byte aligned */ + movl %esi, %ecx + andl $7, %ecx + subl $8, %ecx + negl %ecx + subl %ecx, %edx +.L_read_leading_bytes: + movb (%rsi), %al + COPY_MC_TEST_SRC %rsi 1 .E_leading_bytes + COPY_MC_TEST_DST %rdi 1 .E_leading_bytes +.L_write_leading_bytes: + movb %al, (%rdi) + incq %rsi + incq %rdi + decl %ecx + jnz .L_read_leading_bytes + +.L_8byte_aligned: + movl %edx, %ecx + andl $7, %edx + shrl $3, %ecx + jz .L_no_whole_words + +.L_read_words: + movq (%rsi), %r8 + COPY_MC_TEST_SRC %rsi 8 .E_read_words + COPY_MC_TEST_DST %rdi 8 .E_write_words +.L_write_words: + movq %r8, (%rdi) + addq $8, %rsi + addq $8, %rdi + decl %ecx + jnz .L_read_words + + /* Any trailing bytes? */ +.L_no_whole_words: + andl %edx, %edx + jz .L_done_memcpy_trap + + /* Copy trailing bytes */ + movl %edx, %ecx +.L_read_trailing_bytes: + movb (%rsi), %al + COPY_MC_TEST_SRC %rsi 1 .E_trailing_bytes + COPY_MC_TEST_DST %rdi 1 .E_trailing_bytes +.L_write_trailing_bytes: + movb %al, (%rdi) + incq %rsi + incq %rdi + decl %ecx + jnz .L_read_trailing_bytes + + /* Copy successful. Return zero */ +.L_done_memcpy_trap: + xorl %eax, %eax +.L_done: + ret +SYM_FUNC_END(copy_mc_fragile) +EXPORT_SYMBOL_GPL(copy_mc_fragile) + + .section .fixup, "ax" + /* + * Return number of bytes not copied for any failure. Note that + * there is no "tail" handling since the source buffer is 8-byte + * aligned and poison is cacheline aligned. + */ +.E_read_words: + shll $3, %ecx +.E_leading_bytes: + addl %edx, %ecx +.E_trailing_bytes: + mov %ecx, %eax + jmp .L_done + + /* + * For write fault handling, given the destination is unaligned, + * we handle faults on multi-byte writes with a byte-by-byte + * copy up to the write-protected page. + */ +.E_write_words: + shll $3, %ecx + addl %edx, %ecx + movl %ecx, %edx + jmp copy_mc_fragile_handle_tail + + .previous + + _ASM_EXTABLE_FAULT(.L_read_leading_bytes, .E_leading_bytes) + _ASM_EXTABLE_FAULT(.L_read_words, .E_read_words) + _ASM_EXTABLE_FAULT(.L_read_trailing_bytes, .E_trailing_bytes) + _ASM_EXTABLE(.L_write_leading_bytes, .E_leading_bytes) + _ASM_EXTABLE(.L_write_words, .E_write_words) + _ASM_EXTABLE(.L_write_trailing_bytes, .E_trailing_bytes) +#endif /* CONFIG_X86_MCE */ + +/* + * copy_mc_enhanced_fast_string - memory copy with exception handling + * + * Fast string copy + fault / exception handling. If the CPU does + * support machine check exception recovery, but does not support + * recovering from fast-string exceptions then this CPU needs to be + * added to the copy_mc_fragile_key set of quirks. Otherwise, absent any + * machine check recovery support this version should be no slower than + * standard memcpy. + */ +SYM_FUNC_START(copy_mc_enhanced_fast_string) + movq %rdi, %rax + movq %rdx, %rcx +.L_copy: + rep movsb + /* Copy successful. Return zero */ + xorl %eax, %eax + ret +SYM_FUNC_END(copy_mc_enhanced_fast_string) + + .section .fixup, "ax" +.E_copy: + /* + * On fault %rcx is updated such that the copy instruction could + * optionally be restarted at the fault position, i.e. it + * contains 'bytes remaining'. A non-zero return indicates error + * to copy_mc_generic() users, or indicate short transfers to + * user-copy routines. + */ + movq %rcx, %rax + ret + + .previous + + _ASM_EXTABLE_FAULT(.L_copy, .E_copy) +#endif /* !CONFIG_UML */ --- linux-5.8.0.orig/arch/x86/lib/insn-eval.c +++ linux-5.8.0/arch/x86/lib/insn-eval.c @@ -70,14 +70,15 @@ { int idx = INAT_SEG_REG_DEFAULT; int num_overrides = 0, i; + insn_byte_t p; insn_get_prefixes(insn); /* Look for any segment override prefixes. */ - for (i = 0; i < insn->prefixes.nbytes; i++) { + for_each_insn_prefix(insn, i, p) { insn_attr_t attr; - attr = inat_get_opcode_attribute(insn->prefixes.bytes[i]); + attr = inat_get_opcode_attribute(p); switch (attr) { case INAT_MAKE_PREFIX(INAT_PFX_CS): idx = INAT_SEG_REG_CS; --- linux-5.8.0.orig/arch/x86/lib/memcpy_64.S +++ linux-5.8.0/arch/x86/lib/memcpy_64.S @@ -4,7 +4,6 @@ #include #include #include -#include #include #include @@ -17,8 +16,6 @@ * to a jmp to memcpy_erms which does the REP; MOVSB mem copy. */ -.weak memcpy - /* * memcpy - Copy a memory block. * @@ -31,7 +28,7 @@ * rax original destination */ SYM_FUNC_START_ALIAS(__memcpy) -SYM_FUNC_START_LOCAL(memcpy) +SYM_FUNC_START_WEAK(memcpy) ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \ "jmp memcpy_erms", X86_FEATURE_ERMS @@ -187,117 +184,3 @@ SYM_FUNC_END(memcpy_orig) .popsection - -#ifndef CONFIG_UML - -MCSAFE_TEST_CTL - -/* - * __memcpy_mcsafe - memory copy with machine check exception handling - * Note that we only catch machine checks when reading the source addresses. - * Writes to target are posted and don't generate machine checks. - */ -SYM_FUNC_START(__memcpy_mcsafe) - cmpl $8, %edx - /* Less than 8 bytes? Go to byte copy loop */ - jb .L_no_whole_words - - /* Check for bad alignment of source */ - testl $7, %esi - /* Already aligned */ - jz .L_8byte_aligned - - /* Copy one byte at a time until source is 8-byte aligned */ - movl %esi, %ecx - andl $7, %ecx - subl $8, %ecx - negl %ecx - subl %ecx, %edx -.L_read_leading_bytes: - movb (%rsi), %al - MCSAFE_TEST_SRC %rsi 1 .E_leading_bytes - MCSAFE_TEST_DST %rdi 1 .E_leading_bytes -.L_write_leading_bytes: - movb %al, (%rdi) - incq %rsi - incq %rdi - decl %ecx - jnz .L_read_leading_bytes - -.L_8byte_aligned: - movl %edx, %ecx - andl $7, %edx - shrl $3, %ecx - jz .L_no_whole_words - -.L_read_words: - movq (%rsi), %r8 - MCSAFE_TEST_SRC %rsi 8 .E_read_words - MCSAFE_TEST_DST %rdi 8 .E_write_words -.L_write_words: - movq %r8, (%rdi) - addq $8, %rsi - addq $8, %rdi - decl %ecx - jnz .L_read_words - - /* Any trailing bytes? */ -.L_no_whole_words: - andl %edx, %edx - jz .L_done_memcpy_trap - - /* Copy trailing bytes */ - movl %edx, %ecx -.L_read_trailing_bytes: - movb (%rsi), %al - MCSAFE_TEST_SRC %rsi 1 .E_trailing_bytes - MCSAFE_TEST_DST %rdi 1 .E_trailing_bytes -.L_write_trailing_bytes: - movb %al, (%rdi) - incq %rsi - incq %rdi - decl %ecx - jnz .L_read_trailing_bytes - - /* Copy successful. Return zero */ -.L_done_memcpy_trap: - xorl %eax, %eax -.L_done: - ret -SYM_FUNC_END(__memcpy_mcsafe) -EXPORT_SYMBOL_GPL(__memcpy_mcsafe) - - .section .fixup, "ax" - /* - * Return number of bytes not copied for any failure. Note that - * there is no "tail" handling since the source buffer is 8-byte - * aligned and poison is cacheline aligned. - */ -.E_read_words: - shll $3, %ecx -.E_leading_bytes: - addl %edx, %ecx -.E_trailing_bytes: - mov %ecx, %eax - jmp .L_done - - /* - * For write fault handling, given the destination is unaligned, - * we handle faults on multi-byte writes with a byte-by-byte - * copy up to the write-protected page. - */ -.E_write_words: - shll $3, %ecx - addl %edx, %ecx - movl %ecx, %edx - jmp mcsafe_handle_tail - - .previous - - _ASM_EXTABLE_FAULT(.L_read_leading_bytes, .E_leading_bytes) - _ASM_EXTABLE_FAULT(.L_read_words, .E_read_words) - _ASM_EXTABLE_FAULT(.L_read_trailing_bytes, .E_trailing_bytes) - _ASM_EXTABLE(.L_write_leading_bytes, .E_leading_bytes) - _ASM_EXTABLE(.L_write_words, .E_write_words) - _ASM_EXTABLE(.L_write_trailing_bytes, .E_trailing_bytes) -#endif --- linux-5.8.0.orig/arch/x86/lib/memmove_64.S +++ linux-5.8.0/arch/x86/lib/memmove_64.S @@ -24,9 +24,7 @@ * Output: * rax: dest */ -.weak memmove - -SYM_FUNC_START_ALIAS(memmove) +SYM_FUNC_START_WEAK(memmove) SYM_FUNC_START(__memmove) mov %rdi, %rax --- linux-5.8.0.orig/arch/x86/lib/memset_64.S +++ linux-5.8.0/arch/x86/lib/memset_64.S @@ -6,8 +6,6 @@ #include #include -.weak memset - /* * ISO C memset - set a memory block to a byte value. This function uses fast * string to get better performance than the original function. The code is @@ -19,7 +17,7 @@ * * rax original destination */ -SYM_FUNC_START_ALIAS(memset) +SYM_FUNC_START_WEAK(memset) SYM_FUNC_START(__memset) /* * Some CPUs support enhanced REP MOVSB/STOSB feature. It is recommended --- linux-5.8.0.orig/arch/x86/lib/mmx_32.c +++ linux-5.8.0/arch/x86/lib/mmx_32.c @@ -26,6 +26,16 @@ #include #include +/* + * Use KFPU_387. MMX instructions are not affected by MXCSR, + * but both AMD and Intel documentation states that even integer MMX + * operations will result in #MF if an exception is pending in FCW. + * + * EMMS is not needed afterwards because, after calling kernel_fpu_end(), + * any subsequent user of the 387 stack will reinitialize it using + * KFPU_387. + */ + void *_mmx_memcpy(void *to, const void *from, size_t len) { void *p; @@ -37,7 +47,7 @@ p = to; i = len >> 6; /* len/64 */ - kernel_fpu_begin(); + kernel_fpu_begin_mask(KFPU_387); __asm__ __volatile__ ( "1: prefetch (%0)\n" /* This set is 28 bytes */ @@ -127,7 +137,7 @@ { int i; - kernel_fpu_begin(); + kernel_fpu_begin_mask(KFPU_387); __asm__ __volatile__ ( " pxor %%mm0, %%mm0\n" : : @@ -160,7 +170,7 @@ { int i; - kernel_fpu_begin(); + kernel_fpu_begin_mask(KFPU_387); /* * maybe the prefetch stuff can go before the expensive fnsave... @@ -247,7 +257,7 @@ { int i; - kernel_fpu_begin(); + kernel_fpu_begin_mask(KFPU_387); __asm__ __volatile__ ( " pxor %%mm0, %%mm0\n" : : @@ -282,7 +292,7 @@ { int i; - kernel_fpu_begin(); + kernel_fpu_begin_mask(KFPU_387); __asm__ __volatile__ ( "1: prefetch (%0)\n" --- linux-5.8.0.orig/arch/x86/lib/usercopy_64.c +++ linux-5.8.0/arch/x86/lib/usercopy_64.c @@ -56,27 +56,6 @@ } EXPORT_SYMBOL(clear_user); -/* - * Similar to copy_user_handle_tail, probe for the write fault point, - * but reuse __memcpy_mcsafe in case a new read error is encountered. - * clac() is handled in _copy_to_iter_mcsafe(). - */ -__visible notrace unsigned long -mcsafe_handle_tail(char *to, char *from, unsigned len) -{ - for (; len; --len, to++, from++) { - /* - * Call the assembly routine back directly since - * memcpy_mcsafe() may silently fallback to memcpy. - */ - unsigned long rem = __memcpy_mcsafe(to, from, 1); - - if (rem) - break; - } - return len; -} - #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE /** * clean_cache_range - write back a cache range with CLWB @@ -120,7 +99,7 @@ */ if (size < 8) { if (!IS_ALIGNED(dest, 4) || size != 4) - clean_cache_range(dst, 1); + clean_cache_range(dst, size); } else { if (!IS_ALIGNED(dest, 8)) { dest = ALIGN(dest, boot_cpu_data.x86_clflush_size); --- linux-5.8.0.orig/arch/x86/mm/fault.c +++ linux-5.8.0/arch/x86/mm/fault.c @@ -54,7 +54,7 @@ * 32-bit mode: * * Sometimes AMD Athlon/Opteron CPUs report invalid exceptions on prefetch. - * Check that here and ignore it. + * Check that here and ignore it. This is AMD erratum #91. * * 64-bit mode: * @@ -83,11 +83,7 @@ #ifdef CONFIG_X86_64 case 0x40: /* - * In AMD64 long mode 0x40..0x4F are valid REX prefixes - * Need to figure out under what instruction mode the - * instruction was issued. Could check the LDT for lm, - * but for now it's good enough to assume that long - * mode only uses well known segments or kernel. + * In 64-bit mode 0x40..0x4F are valid REX prefixes */ return (!user_mode(regs) || user_64bit_mode(regs)); #endif @@ -127,20 +123,31 @@ instr = (void *)convert_ip_to_linear(current, regs); max_instr = instr + 15; - if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE_MAX) - return 0; + /* + * This code has historically always bailed out if IP points to a + * not-present page (e.g. due to a race). No one has ever + * complained about this. + */ + pagefault_disable(); while (instr < max_instr) { unsigned char opcode; - if (get_kernel_nofault(opcode, instr)) - break; + if (user_mode(regs)) { + if (get_user(opcode, instr)) + break; + } else { + if (get_kernel_nofault(opcode, instr)) + break; + } instr++; if (!check_prefetch_opcode(regs, instr, opcode, &prefetch)) break; } + + pagefault_enable(); return prefetch; } @@ -216,6 +223,44 @@ } /* + * 32-bit: + * + * Handle a fault on the vmalloc or module mapping area + */ +static noinline int vmalloc_fault(unsigned long address) +{ + unsigned long pgd_paddr; + pmd_t *pmd_k; + pte_t *pte_k; + + /* Make sure we are in vmalloc area: */ + if (!(address >= VMALLOC_START && address < VMALLOC_END)) + return -1; + + /* + * Synchronize this task's top level page-table + * with the 'reference' page table. + * + * Do _not_ use "current" here. We might be inside + * an interrupt in the middle of a task switch.. + */ + pgd_paddr = read_cr3_pa(); + pmd_k = vmalloc_sync_one(__va(pgd_paddr), address); + if (!pmd_k) + return -1; + + if (pmd_large(*pmd_k)) + return 0; + + pte_k = pte_offset_kernel(pmd_k, address); + if (!pte_present(*pte_k)) + return -1; + + return 0; +} +NOKPROBE_SYMBOL(vmalloc_fault); + +/* * Did it hit the DOS screen memory VA from vm86 mode? */ static inline void @@ -279,6 +324,79 @@ #else /* CONFIG_X86_64: */ +/* + * 64-bit: + * + * Handle a fault on the vmalloc area + */ +static noinline int vmalloc_fault(unsigned long address) +{ + pgd_t *pgd, *pgd_k; + p4d_t *p4d, *p4d_k; + pud_t *pud; + pmd_t *pmd; + pte_t *pte; + + /* Make sure we are in vmalloc area: */ + if (!(address >= VMALLOC_START && address < VMALLOC_END)) + return -1; + + /* + * Copy kernel mappings over when needed. This can also + * happen within a race in page table update. In the later + * case just flush: + */ + pgd = (pgd_t *)__va(read_cr3_pa()) + pgd_index(address); + pgd_k = pgd_offset_k(address); + if (pgd_none(*pgd_k)) + return -1; + + if (pgtable_l5_enabled()) { + if (pgd_none(*pgd)) { + set_pgd(pgd, *pgd_k); + arch_flush_lazy_mmu_mode(); + } else { + BUG_ON(pgd_page_vaddr(*pgd) != pgd_page_vaddr(*pgd_k)); + } + } + + /* With 4-level paging, copying happens on the p4d level. */ + p4d = p4d_offset(pgd, address); + p4d_k = p4d_offset(pgd_k, address); + if (p4d_none(*p4d_k)) + return -1; + + if (p4d_none(*p4d) && !pgtable_l5_enabled()) { + set_p4d(p4d, *p4d_k); + arch_flush_lazy_mmu_mode(); + } else { + BUG_ON(p4d_pfn(*p4d) != p4d_pfn(*p4d_k)); + } + + BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS < 4); + + pud = pud_offset(p4d, address); + if (pud_none(*pud)) + return -1; + + if (pud_large(*pud)) + return 0; + + pmd = pmd_offset(pud, address); + if (pmd_none(*pmd)) + return -1; + + if (pmd_large(*pmd)) + return 0; + + pte = pte_offset_kernel(pmd, address); + if (!pte_present(*pte)) + return -1; + + return 0; +} +NOKPROBE_SYMBOL(vmalloc_fault); + #ifdef CONFIG_CPU_SUP_AMD static const char errata93_warning[] = KERN_ERR @@ -1111,6 +1229,29 @@ */ WARN_ON_ONCE(hw_error_code & X86_PF_PK); + /* + * We can fault-in kernel-space virtual memory on-demand. The + * 'reference' page table is init_mm.pgd. + * + * NOTE! We MUST NOT take any locks for this case. We may + * be in an interrupt or a critical region, and should + * only copy the information from the master page table, + * nothing more. + * + * Before doing this on-demand faulting, ensure that the + * fault is not any of the following: + * 1. A fault on a PTE with a reserved bit set. + * 2. A fault caused by a user-mode access. (Do not demand- + * fault kernel memory due to user-mode accesses). + * 3. A fault caused by a page-level protection violation. + * (A demand fault would be on a non-present page which + * would have X86_PF_PROT==0). + */ + if (!(hw_error_code & (X86_PF_RSVD | X86_PF_USER | X86_PF_PROT))) { + if (vmalloc_fault(address) >= 0) + return; + } + /* Was the fault spurious, caused by lazy TLB invalidation? */ if (spurious_kernel_fault(hw_error_code, address)) return; --- linux-5.8.0.orig/arch/x86/mm/ident_map.c +++ linux-5.8.0/arch/x86/mm/ident_map.c @@ -62,6 +62,7 @@ unsigned long addr, unsigned long end) { unsigned long next; + int result; for (; addr < end; addr = next) { p4d_t *p4d = p4d_page + p4d_index(addr); @@ -73,13 +74,20 @@ if (p4d_present(*p4d)) { pud = pud_offset(p4d, 0); - ident_pud_init(info, pud, addr, next); + result = ident_pud_init(info, pud, addr, next); + if (result) + return result; + continue; } pud = (pud_t *)info->alloc_pgt_page(info->context); if (!pud) return -ENOMEM; - ident_pud_init(info, pud, addr, next); + + result = ident_pud_init(info, pud, addr, next); + if (result) + return result; + set_p4d(p4d, __p4d(__pa(pud) | info->kernpg_flag)); } --- linux-5.8.0.orig/arch/x86/mm/init_32.c +++ linux-5.8.0/arch/x86/mm/init_32.c @@ -764,6 +764,9 @@ * important here. */ set_highmem_pages_init(); +#ifdef CONFIG_HIGHMEM + set_default_mem_hotplug_zone(ZONE_HIGHMEM); +#endif /* this will put all low memory onto the freelists */ memblock_free_all(); --- linux-5.8.0.orig/arch/x86/mm/mem_encrypt.c +++ linux-5.8.0/arch/x86/mm/mem_encrypt.c @@ -229,7 +229,7 @@ if (pgprot_val(old_prot) == pgprot_val(new_prot)) return; - pa = pfn << page_level_shift(level); + pa = pfn << PAGE_SHIFT; size = page_level_size(level); /* @@ -349,6 +349,7 @@ { return sme_me_mask && sev_enabled; } +EXPORT_SYMBOL_GPL(sev_active); /* Override for DMA direct allocation check - ARCH_HAS_FORCE_DMA_UNENCRYPTED */ bool force_dma_unencrypted(struct device *dev) --- linux-5.8.0.orig/arch/x86/mm/mem_encrypt_identity.c +++ linux-5.8.0/arch/x86/mm/mem_encrypt_identity.c @@ -45,8 +45,8 @@ #define PMD_FLAGS_LARGE (__PAGE_KERNEL_LARGE_EXEC & ~_PAGE_GLOBAL) #define PMD_FLAGS_DEC PMD_FLAGS_LARGE -#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_CACHE_MASK) | \ - (_PAGE_PAT | _PAGE_PWT)) +#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_LARGE_CACHE_MASK) | \ + (_PAGE_PAT_LARGE | _PAGE_PWT)) #define PMD_FLAGS_ENC (PMD_FLAGS_LARGE | _PAGE_ENC) --- linux-5.8.0.orig/arch/x86/mm/numa_emulation.c +++ linux-5.8.0/arch/x86/mm/numa_emulation.c @@ -321,7 +321,7 @@ u64 addr, u64 max_addr, u64 size) { return split_nodes_size_interleave_uniform(ei, pi, addr, max_addr, size, - 0, NULL, NUMA_NO_NODE); + 0, NULL, 0); } static int __init setup_emu2phys_nid(int *dfl_phys_nid) --- linux-5.8.0.orig/arch/x86/mm/pat/memtype.c +++ linux-5.8.0/arch/x86/mm/pat/memtype.c @@ -1164,12 +1164,14 @@ static void *memtype_seq_next(struct seq_file *seq, void *v, loff_t *pos) { + kfree(v); ++*pos; return memtype_get_idx(*pos); } static void memtype_seq_stop(struct seq_file *seq, void *v) { + kfree(v); } static int memtype_seq_show(struct seq_file *seq, void *v) @@ -1181,8 +1183,6 @@ entry_print->end, cattr_name(entry_print->type)); - kfree(entry_print); - return 0; } --- linux-5.8.0.orig/arch/x86/mm/pgtable.c +++ linux-5.8.0/arch/x86/mm/pgtable.c @@ -829,6 +829,8 @@ } free_page((unsigned long)pmd_sv); + + pgtable_pmd_page_dtor(virt_to_page(pmd)); free_page((unsigned long)pmd); return 1; --- linux-5.8.0.orig/arch/x86/mm/pti.c +++ linux-5.8.0/arch/x86/mm/pti.c @@ -447,7 +447,13 @@ * the sp1 and sp2 slots. * * This is done for all possible CPUs during boot to ensure - * that it's propagated to all mms. + * that it's propagated to all mms. If we were to add one of + * these mappings during CPU hotplug, we would need to take + * some measure to make sure that every mm that subsequently + * ran on that CPU would have the relevant PGD entry in its + * pagetables. The usual vmalloc_fault() mechanism would not + * work for page faults taken in entry_SYSCALL_64 before RSP + * is set up. */ unsigned long va = (unsigned long)&per_cpu(cpu_tss_rw, cpu); --- linux-5.8.0.orig/arch/x86/mm/tlb.c +++ linux-5.8.0/arch/x86/mm/tlb.c @@ -317,6 +317,34 @@ local_irq_restore(flags); } +static void sync_current_stack_to_mm(struct mm_struct *mm) +{ + unsigned long sp = current_stack_pointer; + pgd_t *pgd = pgd_offset(mm, sp); + + if (pgtable_l5_enabled()) { + if (unlikely(pgd_none(*pgd))) { + pgd_t *pgd_ref = pgd_offset_k(sp); + + set_pgd(pgd, *pgd_ref); + } + } else { + /* + * "pgd" is faked. The top level entries are "p4d"s, so sync + * the p4d. This compiles to approximately the same code as + * the 5-level case. + */ + p4d_t *p4d = p4d_offset(pgd, sp); + + if (unlikely(p4d_none(*p4d))) { + pgd_t *pgd_ref = pgd_offset_k(sp); + p4d_t *p4d_ref = p4d_offset(pgd_ref, sp); + + set_p4d(p4d, *p4d_ref); + } + } +} + static inline unsigned long mm_mangle_tif_spec_ib(struct task_struct *next) { unsigned long next_tif = task_thread_info(next)->flags; @@ -475,8 +503,14 @@ /* * The membarrier system call requires a full memory barrier and * core serialization before returning to user-space, after - * storing to rq->curr. Writing to CR3 provides that full - * memory barrier and core serializing instruction. + * storing to rq->curr, when changing mm. This is because + * membarrier() sends IPIs to all CPUs that are in the target mm + * to make them issue memory barriers. However, if another CPU + * switches to/from the target mm concurrently with + * membarrier(), it can cause that CPU not to receive an IPI + * when it really should issue a memory barrier. Writing to CR3 + * provides that full memory barrier and core serializing + * instruction. */ if (real_prev == next) { VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) != @@ -525,6 +559,15 @@ */ cond_ibpb(tsk); + if (IS_ENABLED(CONFIG_VMAP_STACK)) { + /* + * If our current stack is in vmalloc space and isn't + * mapped in the new pgd, we'll double-fault. Forcibly + * map it. + */ + sync_current_stack_to_mm(next); + } + /* * Stop remote flushes for the previous mm. * Skip kernel threads; we never send init_mm TLB flushing IPIs, --- linux-5.8.0.orig/arch/x86/net/bpf_jit_comp.c +++ linux-5.8.0/arch/x86/net/bpf_jit_comp.c @@ -1322,7 +1322,16 @@ } if (image) { - if (unlikely(proglen + ilen > oldproglen)) { + /* + * When populating the image, assert that: + * + * i) We do not write beyond the allocated space, and + * ii) addrs[i] did not change from the prior run, in order + * to validate assumptions made for computing branch + * displacements. + */ + if (unlikely(proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) { pr_err("bpf_jit: fatal error\n"); return -EFAULT; } @@ -1855,7 +1864,7 @@ extra_pass = true; goto skip_init_addrs; } - addrs = kmalloc_array(prog->len + 1, sizeof(*addrs), GFP_KERNEL); + addrs = kvmalloc_array(prog->len + 1, sizeof(*addrs), GFP_KERNEL); if (!addrs) { prog = orig_prog; goto out_addrs; @@ -1945,7 +1954,7 @@ if (image) bpf_prog_fill_jited_linfo(prog, addrs + 1); out_addrs: - kfree(addrs); + kvfree(addrs); kfree(jit_data); prog->aux->jit_data = NULL; } --- linux-5.8.0.orig/arch/x86/net/bpf_jit_comp32.c +++ linux-5.8.0/arch/x86/net/bpf_jit_comp32.c @@ -2278,7 +2278,16 @@ } if (image) { - if (unlikely(proglen + ilen > oldproglen)) { + /* + * When populating the image, assert that: + * + * i) We do not write beyond the allocated space, and + * ii) addrs[i] did not change from the prior run, in order + * to validate assumptions made for computing branch + * displacements. + */ + if (unlikely(proglen + ilen > oldproglen || + proglen + ilen != addrs[i])) { pr_err("bpf_jit: fatal error\n"); return -EFAULT; } --- linux-5.8.0.orig/arch/x86/pci/common.c +++ linux-5.8.0/arch/x86/pci/common.c @@ -33,6 +33,7 @@ #endif int pcibios_last_bus = -1; unsigned long pirq_table_addr; +unsigned int pci_early_clear_msi; const struct pci_raw_ops *__read_mostly raw_pci_ops; const struct pci_raw_ops *__read_mostly raw_pci_ext_ops; @@ -605,6 +606,9 @@ } else if (!strcmp(str, "skip_isa_align")) { pci_probe |= PCI_CAN_SKIP_ISA_ALIGN; return NULL; + } else if (!strcmp(str, "clearmsi")) { + pci_early_clear_msi = 1; + return NULL; } else if (!strcmp(str, "noioapicquirk")) { noioapicquirk = 1; return NULL; --- linux-5.8.0.orig/arch/x86/pci/early.c +++ linux-5.8.0/arch/x86/pci/early.c @@ -51,6 +51,31 @@ outw(val, 0xcfc + (offset&2)); } +u32 pci_early_find_cap(int bus, int slot, int func, int cap) +{ + int bytes; + u8 pos; + + if (!(read_pci_config_16(bus, slot, func, PCI_STATUS) & + PCI_STATUS_CAP_LIST)) + return 0; + + pos = read_pci_config_byte(bus, slot, func, PCI_CAPABILITY_LIST); + for (bytes = 0; bytes < 48 && pos >= 0x40; bytes++) { + u8 id; + + pos &= ~3; + id = read_pci_config_byte(bus, slot, func, pos+PCI_CAP_LIST_ID); + if (id == 0xff) + break; + if (id == cap) + return pos; + pos = read_pci_config_byte(bus, slot, func, + pos+PCI_CAP_LIST_NEXT); + } + return 0; +} + int early_pci_allowed(void) { return (pci_probe & (PCI_PROBE_CONF1|PCI_PROBE_NOEARLY)) == --- linux-5.8.0.orig/arch/x86/pci/intel_mid_pci.c +++ linux-5.8.0/arch/x86/pci/intel_mid_pci.c @@ -33,6 +33,7 @@ #include #include #include +#include #define PCIE_CAP_OFFSET 0x100 --- linux-5.8.0.orig/arch/x86/pci/xen.c +++ linux-5.8.0/arch/x86/pci/xen.c @@ -26,6 +26,7 @@ #include #include #include +#include #include static int xen_pcifront_enable_irq(struct pci_dev *dev) --- linux-5.8.0.orig/arch/x86/platform/efi/efi_64.c +++ linux-5.8.0/arch/x86/platform/efi/efi_64.c @@ -80,28 +80,30 @@ gfp_mask = GFP_KERNEL | __GFP_ZERO; efi_pgd = (pgd_t *)__get_free_pages(gfp_mask, PGD_ALLOCATION_ORDER); if (!efi_pgd) - return -ENOMEM; + goto fail; pgd = efi_pgd + pgd_index(EFI_VA_END); p4d = p4d_alloc(&init_mm, pgd, EFI_VA_END); - if (!p4d) { - free_page((unsigned long)efi_pgd); - return -ENOMEM; - } + if (!p4d) + goto free_pgd; pud = pud_alloc(&init_mm, p4d, EFI_VA_END); - if (!pud) { - if (pgtable_l5_enabled()) - free_page((unsigned long) pgd_page_vaddr(*pgd)); - free_pages((unsigned long)efi_pgd, PGD_ALLOCATION_ORDER); - return -ENOMEM; - } + if (!pud) + goto free_p4d; efi_mm.pgd = efi_pgd; mm_init_cpumask(&efi_mm); init_new_context(NULL, &efi_mm); return 0; + +free_p4d: + if (pgtable_l5_enabled()) + free_page((unsigned long)pgd_page_vaddr(*pgd)); +free_pgd: + free_pages((unsigned long)efi_pgd, PGD_ALLOCATION_ORDER); +fail: + return -ENOMEM; } /* @@ -118,31 +120,12 @@ if (efi_have_uv1_memmap()) return; - /* - * We can share all PGD entries apart from the one entry that - * covers the EFI runtime mapping space. - * - * Make sure the EFI runtime region mappings are guaranteed to - * only span a single PGD entry and that the entry also maps - * other important kernel regions. - */ - MAYBE_BUILD_BUG_ON(pgd_index(EFI_VA_END) != pgd_index(MODULES_END)); - MAYBE_BUILD_BUG_ON((EFI_VA_START & PGDIR_MASK) != - (EFI_VA_END & PGDIR_MASK)); - pgd_efi = efi_pgd + pgd_index(PAGE_OFFSET); pgd_k = pgd_offset_k(PAGE_OFFSET); num_entries = pgd_index(EFI_VA_END) - pgd_index(PAGE_OFFSET); memcpy(pgd_efi, pgd_k, sizeof(pgd_t) * num_entries); - /* - * As with PGDs, we share all P4D entries apart from the one entry - * that covers the EFI runtime mapping space. - */ - BUILD_BUG_ON(p4d_index(EFI_VA_END) != p4d_index(MODULES_END)); - BUILD_BUG_ON((EFI_VA_START & P4D_MASK) != (EFI_VA_END & P4D_MASK)); - pgd_efi = efi_pgd + pgd_index(EFI_VA_END); pgd_k = pgd_offset_k(EFI_VA_END); p4d_efi = p4d_offset(pgd_efi, 0); @@ -268,6 +251,8 @@ npages = (__end_rodata - __start_rodata) >> PAGE_SHIFT; rodata = __pa(__start_rodata); pfn = rodata >> PAGE_SHIFT; + + pf = _PAGE_NX | _PAGE_ENC; if (kernel_map_pages_in_pgd(pgd, pfn, rodata, npages, pf)) { pr_err("Failed to map kernel rodata 1:1\n"); return 1; --- linux-5.8.0.orig/arch/x86/platform/pvh/head.S +++ linux-5.8.0/arch/x86/platform/pvh/head.S @@ -16,6 +16,7 @@ #include #include #include +#include #include __HEAD @@ -105,6 +106,7 @@ /* startup_64 expects boot_params in %rsi. */ mov $_pa(pvh_bootparams), %rsi mov $_pa(startup_64), %rax + ANNOTATE_RETPOLINE_SAFE jmp *%rax #else /* CONFIG_X86_64 */ --- linux-5.8.0.orig/arch/x86/power/hibernate_asm_64.S +++ linux-5.8.0/arch/x86/power/hibernate_asm_64.S @@ -21,6 +21,7 @@ #include #include #include +#include SYM_FUNC_START(swsusp_arch_suspend) movq $saved_context, %rax @@ -66,6 +67,7 @@ /* jump to relocated restore code */ movq relocated_restore_code(%rip), %rcx + ANNOTATE_RETPOLINE_SAFE jmpq *%rcx SYM_CODE_END(restore_image) @@ -97,6 +99,7 @@ .Ldone: /* jump to the restore_registers address from the image header */ + ANNOTATE_RETPOLINE_SAFE jmpq *%r8 SYM_CODE_END(core_restore_code) --- linux-5.8.0.orig/arch/x86/realmode/rm/trampoline_32.S +++ linux-5.8.0/arch/x86/realmode/rm/trampoline_32.S @@ -23,6 +23,7 @@ #include #include #include +#include #include "realmode.h" .text @@ -59,6 +60,7 @@ .section ".text32","ax" .code32 SYM_CODE_START(startup_32) # note: also used from wakeup_asm.S + ANNOTATE_RETPOLINE_SAFE jmp *%eax SYM_CODE_END(startup_32) --- linux-5.8.0.orig/arch/x86/tools/relocs.c +++ linux-5.8.0/arch/x86/tools/relocs.c @@ -867,9 +867,11 @@ case R_386_PC32: case R_386_PC16: case R_386_PC8: + case R_386_PLT32: /* - * NONE can be ignored and PC relative relocations don't - * need to be adjusted. + * NONE can be ignored and PC relative relocations don't need + * to be adjusted. Because sym must be defined, R_386_PLT32 can + * be treated the same way as R_386_PC32. */ break; @@ -910,9 +912,11 @@ case R_386_PC32: case R_386_PC16: case R_386_PC8: + case R_386_PLT32: /* - * NONE can be ignored and PC relative relocations don't - * need to be adjusted. + * NONE can be ignored and PC relative relocations don't need + * to be adjusted. Because sym must be defined, R_386_PLT32 can + * be treated the same way as R_386_PC32. */ break; --- linux-5.8.0.orig/arch/x86/xen/enlighten_hvm.c +++ linux-5.8.0/arch/x86/xen/enlighten_hvm.c @@ -187,6 +187,8 @@ return 0; } +static bool no_vector_callback __initdata; + static void __init xen_hvm_guest_init(void) { if (xen_pv_domain()) @@ -206,7 +208,7 @@ xen_panic_handler_init(); - if (xen_feature(XENFEAT_hvm_callback_vector)) + if (!no_vector_callback && xen_feature(XENFEAT_hvm_callback_vector)) xen_have_vector_callback = 1; xen_hvm_smp_init(); @@ -232,6 +234,13 @@ } early_param("xen_nopv", xen_parse_nopv); +static __init int xen_parse_no_vector_callback(char *arg) +{ + no_vector_callback = true; + return 0; +} +early_param("xen_no_vector_callback", xen_parse_no_vector_callback); + bool __init xen_hvm_need_lapic(void) { if (xen_pv_domain()) --- linux-5.8.0.orig/arch/x86/xen/enlighten_pv.c +++ linux-5.8.0/arch/x86/xen/enlighten_pv.c @@ -1438,6 +1438,15 @@ x86_init.mpparse.get_smp_config = x86_init_uint_noop; xen_boot_params_init_edd(); + +#ifdef CONFIG_ACPI + /* + * Disable selecting "Firmware First mode" for correctable + * memory errors, as this is the duty of the hypervisor to + * decide. + */ + acpi_disable_cmcff = 1; +#endif } if (!boot_params.screen_info.orig_video_isVGA) --- linux-5.8.0.orig/arch/x86/xen/p2m.c +++ linux-5.8.0/arch/x86/xen/p2m.c @@ -714,9 +714,12 @@ for (i = 0; i < count; i++) { unsigned long mfn, pfn; + struct gnttab_unmap_grant_ref unmap[2]; + int rc; /* Do not add to override if the map failed. */ - if (map_ops[i].status) + if (map_ops[i].status != GNTST_okay || + (kmap_ops && kmap_ops[i].status != GNTST_okay)) continue; if (map_ops[i].flags & GNTMAP_contains_pte) { @@ -730,10 +733,46 @@ WARN(pfn_to_mfn(pfn) != INVALID_P2M_ENTRY, "page must be ballooned"); - if (unlikely(!set_phys_to_machine(pfn, FOREIGN_FRAME(mfn)))) { - ret = -ENOMEM; - goto out; + if (likely(set_phys_to_machine(pfn, FOREIGN_FRAME(mfn)))) + continue; + + /* + * Signal an error for this slot. This in turn requires + * immediate unmapping. + */ + map_ops[i].status = GNTST_general_error; + unmap[0].host_addr = map_ops[i].host_addr, + unmap[0].handle = map_ops[i].handle; + map_ops[i].handle = ~0; + if (map_ops[i].flags & GNTMAP_device_map) + unmap[0].dev_bus_addr = map_ops[i].dev_bus_addr; + else + unmap[0].dev_bus_addr = 0; + + if (kmap_ops) { + kmap_ops[i].status = GNTST_general_error; + unmap[1].host_addr = kmap_ops[i].host_addr, + unmap[1].handle = kmap_ops[i].handle; + kmap_ops[i].handle = ~0; + if (kmap_ops[i].flags & GNTMAP_device_map) + unmap[1].dev_bus_addr = kmap_ops[i].dev_bus_addr; + else + unmap[1].dev_bus_addr = 0; } + + /* + * Pre-populate both status fields, to be recognizable in + * the log message below. + */ + unmap[0].status = 1; + unmap[1].status = 1; + + rc = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, + unmap, 1 + !!kmap_ops); + if (rc || unmap[0].status != GNTST_okay || + unmap[1].status != GNTST_okay) + pr_err_once("gnttab unmap failed: rc=%d st0=%d st1=%d\n", + rc, unmap[0].status, unmap[1].status); } out: @@ -754,17 +793,15 @@ unsigned long mfn = __pfn_to_mfn(page_to_pfn(pages[i])); unsigned long pfn = page_to_pfn(pages[i]); - if (mfn == INVALID_P2M_ENTRY || !(mfn & FOREIGN_FRAME_BIT)) { + if (mfn != INVALID_P2M_ENTRY && (mfn & FOREIGN_FRAME_BIT)) + set_phys_to_machine(pfn, INVALID_P2M_ENTRY); + else ret = -EINVAL; - goto out; - } - - set_phys_to_machine(pfn, INVALID_P2M_ENTRY); } if (kunmap_ops) ret = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, - kunmap_ops, count); -out: + kunmap_ops, count) ?: ret; + return ret; } EXPORT_SYMBOL_GPL(clear_foreign_p2m_mapping); --- linux-5.8.0.orig/arch/x86/xen/spinlock.c +++ linux-5.8.0/arch/x86/xen/spinlock.c @@ -93,10 +93,20 @@ void xen_uninit_lock_cpu(int cpu) { + int irq; + if (!xen_pvspin) return; - unbind_from_irqhandler(per_cpu(lock_kicker_irq, cpu), NULL); + /* + * When booting the kernel with 'mitigations=auto,nosmt', the secondary + * CPUs are not activated, and lock_kicker_irq is not initialized. + */ + irq = per_cpu(lock_kicker_irq, cpu); + if (irq == -1) + return; + + unbind_from_irqhandler(irq, NULL); per_cpu(lock_kicker_irq, cpu) = -1; kfree(per_cpu(irq_name, cpu)); per_cpu(irq_name, cpu) = NULL; --- linux-5.8.0.orig/arch/xtensa/include/asm/Kbuild +++ linux-5.8.0/arch/xtensa/include/asm/Kbuild @@ -2,7 +2,6 @@ generated-y += syscall_table.h generic-y += extable.h generic-y += kvm_para.h -generic-y += local64.h generic-y += mcs_spinlock.h generic-y += param.h generic-y += qrwlock.h --- linux-5.8.0.orig/arch/xtensa/include/asm/pgtable.h +++ linux-5.8.0/arch/xtensa/include/asm/pgtable.h @@ -69,7 +69,7 @@ */ #define VMALLOC_START (XCHAL_KSEG_CACHED_VADDR - 0x10000000) #define VMALLOC_END (VMALLOC_START + 0x07FEFFFF) -#define TLBTEMP_BASE_1 (VMALLOC_END + 1) +#define TLBTEMP_BASE_1 (VMALLOC_START + 0x08000000) #define TLBTEMP_BASE_2 (TLBTEMP_BASE_1 + DCACHE_WAY_SIZE) #if 2 * DCACHE_WAY_SIZE > ICACHE_WAY_SIZE #define TLBTEMP_SIZE (2 * DCACHE_WAY_SIZE) --- linux-5.8.0.orig/arch/xtensa/include/asm/thread_info.h +++ linux-5.8.0/arch/xtensa/include/asm/thread_info.h @@ -55,6 +55,10 @@ mm_segment_t addr_limit; /* thread address space */ unsigned long cpenable; +#if XCHAL_HAVE_EXCLUSIVE + /* result of the most recent exclusive store */ + unsigned long atomctl8; +#endif /* Allocate storage for extra user states and coprocessor states. */ #if XTENSA_HAVE_COPROCESSORS --- linux-5.8.0.orig/arch/xtensa/include/asm/uaccess.h +++ linux-5.8.0/arch/xtensa/include/asm/uaccess.h @@ -302,7 +302,7 @@ return -EFAULT; } #else -long strncpy_from_user(char *dst, const char *src, long count); +long strncpy_from_user(char *dst, const char __user *src, long count); #endif /* --- linux-5.8.0.orig/arch/xtensa/kernel/asm-offsets.c +++ linux-5.8.0/arch/xtensa/kernel/asm-offsets.c @@ -93,6 +93,9 @@ DEFINE(THREAD_RA, offsetof (struct task_struct, thread.ra)); DEFINE(THREAD_SP, offsetof (struct task_struct, thread.sp)); DEFINE(THREAD_CPENABLE, offsetof (struct thread_info, cpenable)); +#if XCHAL_HAVE_EXCLUSIVE + DEFINE(THREAD_ATOMCTL8, offsetof (struct thread_info, atomctl8)); +#endif #if XTENSA_HAVE_COPROCESSORS DEFINE(THREAD_XTREGS_CP0, offsetof(struct thread_info, xtregs_cp.cp0)); DEFINE(THREAD_XTREGS_CP1, offsetof(struct thread_info, xtregs_cp.cp1)); --- linux-5.8.0.orig/arch/xtensa/kernel/coprocessor.S +++ linux-5.8.0/arch/xtensa/kernel/coprocessor.S @@ -100,37 +100,6 @@ LOAD_CP_REGS_TAB(7) /* - * coprocessor_flush(struct thread_info*, index) - * a2 a3 - * - * Save coprocessor registers for coprocessor 'index'. - * The register values are saved to or loaded from the coprocessor area - * inside the task_info structure. - * - * Note that this function doesn't update the coprocessor_owner information! - * - */ - -ENTRY(coprocessor_flush) - - /* reserve 4 bytes on stack to save a0 */ - abi_entry(4) - - s32i a0, a1, 0 - movi a0, .Lsave_cp_regs_jump_table - addx8 a3, a3, a0 - l32i a4, a3, 4 - l32i a3, a3, 0 - add a2, a2, a4 - beqz a3, 1f - callx0 a3 -1: l32i a0, a1, 0 - - abi_ret(4) - -ENDPROC(coprocessor_flush) - -/* * Entry condition: * * a0: trashed, original value saved on stack (PT_AREG0) @@ -245,6 +214,39 @@ ENDPROC(fast_coprocessor) + .text + +/* + * coprocessor_flush(struct thread_info*, index) + * a2 a3 + * + * Save coprocessor registers for coprocessor 'index'. + * The register values are saved to or loaded from the coprocessor area + * inside the task_info structure. + * + * Note that this function doesn't update the coprocessor_owner information! + * + */ + +ENTRY(coprocessor_flush) + + /* reserve 4 bytes on stack to save a0 */ + abi_entry(4) + + s32i a0, a1, 0 + movi a0, .Lsave_cp_regs_jump_table + addx8 a3, a3, a0 + l32i a4, a3, 4 + l32i a3, a3, 0 + add a2, a2, a4 + beqz a3, 1f + callx0 a3 +1: l32i a0, a1, 0 + + abi_ret(4) + +ENDPROC(coprocessor_flush) + .data ENTRY(coprocessor_owner) --- linux-5.8.0.orig/arch/xtensa/kernel/entry.S +++ linux-5.8.0/arch/xtensa/kernel/entry.S @@ -374,6 +374,11 @@ s32i a2, a1, PT_LCOUNT #endif +#if XCHAL_HAVE_EXCLUSIVE + /* Clear exclusive access monitor set by interrupted code */ + clrex +#endif + /* It is now save to restore the EXC_TABLE_FIXUP variable. */ rsr a2, exccause @@ -2020,6 +2025,12 @@ s32i a3, a4, THREAD_CPENABLE #endif +#if XCHAL_HAVE_EXCLUSIVE + l32i a3, a5, THREAD_ATOMCTL8 + getex a3 + s32i a3, a4, THREAD_ATOMCTL8 +#endif + /* Flush register file. */ spill_registers_kernel --- linux-5.8.0.orig/arch/xtensa/kernel/perf_event.c +++ linux-5.8.0/arch/xtensa/kernel/perf_event.c @@ -399,7 +399,7 @@ .read = xtensa_pmu_read, }; -static int xtensa_pmu_setup(int cpu) +static int xtensa_pmu_setup(unsigned int cpu) { unsigned i; --- linux-5.8.0.orig/arch/xtensa/mm/cache.c +++ linux-5.8.0/arch/xtensa/mm/cache.c @@ -71,8 +71,10 @@ kvaddr = TLBTEMP_BASE_1 + (page_to_phys(page) & DCACHE_ALIAS_MASK); + preempt_disable(); __invalidate_dcache_page_alias(kvaddr, page_to_phys(page)); + preempt_enable(); } } } @@ -157,6 +159,7 @@ if (!alias && !mapping) return; + preempt_disable(); virt = TLBTEMP_BASE_1 + (phys & DCACHE_ALIAS_MASK); __flush_invalidate_dcache_page_alias(virt, phys); @@ -167,6 +170,7 @@ if (mapping) __invalidate_icache_page_alias(virt, phys); + preempt_enable(); } /* There shouldn't be an entry in the cache for this page anymore. */ @@ -200,8 +204,10 @@ unsigned long phys = page_to_phys(pfn_to_page(pfn)); unsigned long virt = TLBTEMP_BASE_1 + (address & DCACHE_ALIAS_MASK); + preempt_disable(); __flush_invalidate_dcache_page_alias(virt, phys); __invalidate_icache_page_alias(virt, phys); + preempt_enable(); } EXPORT_SYMBOL(local_flush_cache_page); @@ -228,11 +234,13 @@ unsigned long phys = page_to_phys(page); unsigned long tmp; + preempt_disable(); tmp = TLBTEMP_BASE_1 + (phys & DCACHE_ALIAS_MASK); __flush_invalidate_dcache_page_alias(tmp, phys); tmp = TLBTEMP_BASE_1 + (addr & DCACHE_ALIAS_MASK); __flush_invalidate_dcache_page_alias(tmp, phys); __invalidate_icache_page_alias(tmp, phys); + preempt_enable(); clear_bit(PG_arch_1, &page->flags); } @@ -266,7 +274,9 @@ if (alias) { unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK); + preempt_disable(); __flush_invalidate_dcache_page_alias(t, phys); + preempt_enable(); } /* Copy data */ @@ -281,9 +291,11 @@ if (alias) { unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK); + preempt_disable(); __flush_invalidate_dcache_range((unsigned long) dst, len); if ((vma->vm_flags & VM_EXEC) != 0) __invalidate_icache_page_alias(t, phys); + preempt_enable(); } else if ((vma->vm_flags & VM_EXEC) != 0) { __flush_dcache_range((unsigned long)dst,len); @@ -305,7 +317,9 @@ if (alias) { unsigned long t = TLBTEMP_BASE_1 + (vaddr & DCACHE_ALIAS_MASK); + preempt_disable(); __flush_invalidate_dcache_page_alias(t, phys); + preempt_enable(); } memcpy(dst, src, len); --- linux-5.8.0.orig/arch/xtensa/mm/fault.c +++ linux-5.8.0/arch/xtensa/mm/fault.c @@ -110,8 +110,11 @@ */ fault = handle_mm_fault(vma, address, flags); - if (fault_signal_pending(fault, regs)) + if (fault_signal_pending(fault, regs)) { + if (!user_mode(regs)) + goto bad_page_fault; return; + } if (unlikely(fault & VM_FAULT_ERROR)) { if (fault & VM_FAULT_OOM) --- linux-5.8.0.orig/block/bfq-cgroup.c +++ linux-5.8.0/block/bfq-cgroup.c @@ -332,7 +332,7 @@ kfree(bfqg); } -void bfqg_and_blkg_get(struct bfq_group *bfqg) +static void bfqg_and_blkg_get(struct bfq_group *bfqg) { /* see comments in bfq_bic_update_cgroup for why refcounting bfqg */ bfqg_get(bfqg); --- linux-5.8.0.orig/block/bfq-iosched.c +++ linux-5.8.0/block/bfq-iosched.c @@ -2937,6 +2937,7 @@ } bfqd->in_service_queue = bfqq; + bfqd->in_serv_last_pos = 0; } /* @@ -5896,18 +5897,6 @@ struct bfq_data *bfqd; /* - * Requeue and finish hooks are invoked in blk-mq without - * checking whether the involved request is actually still - * referenced in the scheduler. To handle this fact, the - * following two checks make this function exit in case of - * spurious invocations, for which there is nothing to do. - * - * First, check whether rq has nothing to do with an elevator. - */ - if (unlikely(!(rq->rq_flags & RQF_ELVPRIV))) - return; - - /* * rq either is not associated with any icq, or is an already * requeued request that has not (yet) been re-inserted into * a bfq_queue. --- linux-5.8.0.orig/block/bfq-iosched.h +++ linux-5.8.0/block/bfq-iosched.h @@ -986,7 +986,6 @@ struct blkcg_gq *bfqg_to_blkg(struct bfq_group *bfqg); struct bfq_group *bfqq_group(struct bfq_queue *bfqq); struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node); -void bfqg_and_blkg_get(struct bfq_group *bfqg); void bfqg_and_blkg_put(struct bfq_group *bfqg); #ifdef CONFIG_BFQ_GROUP_IOSCHED --- linux-5.8.0.orig/block/bfq-wf2q.c +++ linux-5.8.0/block/bfq-wf2q.c @@ -533,9 +533,7 @@ bfqq->ref++; bfq_log_bfqq(bfqq->bfqd, bfqq, "get_entity: %p %d", bfqq, bfqq->ref); - } else - bfqg_and_blkg_get(container_of(entity, struct bfq_group, - entity)); + } } /** @@ -649,14 +647,8 @@ entity->on_st_or_in_serv = false; st->wsum -= entity->weight; - if (is_in_service) - return; - - if (bfqq) + if (bfqq && !is_in_service) bfq_put_queue(bfqq); - else - bfqg_and_blkg_put(container_of(entity, struct bfq_group, - entity)); } /** --- linux-5.8.0.orig/block/bio.c +++ linux-5.8.0/block/bio.c @@ -738,8 +738,8 @@ struct page *page, unsigned int len, unsigned int off, bool *same_page) { - phys_addr_t vec_end_addr = page_to_phys(bv->bv_page) + - bv->bv_offset + bv->bv_len - 1; + size_t bv_end = bv->bv_offset + bv->bv_len; + phys_addr_t vec_end_addr = page_to_phys(bv->bv_page) + bv_end - 1; phys_addr_t page_addr = page_to_phys(page); if (vec_end_addr + 1 != page_addr + off) @@ -748,9 +748,9 @@ return false; *same_page = ((vec_end_addr & PAGE_MASK) == page_addr); - if (!*same_page && pfn_to_page(PFN_DOWN(vec_end_addr)) + 1 != page) - return false; - return true; + if (*same_page) + return true; + return (bv->bv_page + bv_end / PAGE_SIZE) == (page + off / PAGE_SIZE); } /* @@ -877,8 +877,10 @@ struct bio_vec *bv = &bio->bi_io_vec[bio->bi_vcnt - 1]; if (page_is_mergeable(bv, page, len, off, same_page)) { - if (bio->bi_iter.bi_size > UINT_MAX - len) + if (bio->bi_iter.bi_size > UINT_MAX - len) { + *same_page = false; return false; + } bv->bv_len += len; bio->bi_iter.bi_size += len; return true; @@ -1042,6 +1044,7 @@ ssize_t size, left; unsigned len, i; size_t offset; + int ret = 0; if (WARN_ON_ONCE(!max_append_sectors)) return 0; @@ -1064,15 +1067,17 @@ len = min_t(size_t, PAGE_SIZE - offset, left); if (bio_add_hw_page(q, bio, page, len, offset, - max_append_sectors, &same_page) != len) - return -EINVAL; + max_append_sectors, &same_page) != len) { + ret = -EINVAL; + break; + } if (same_page) put_page(page); offset = 0; } - iov_iter_advance(iter, size); - return 0; + iov_iter_advance(iter, size - left); + return ret; } /** --- linux-5.8.0.orig/block/blk-cgroup-rwstat.c +++ linux-5.8.0/block/blk-cgroup-rwstat.c @@ -109,6 +109,7 @@ lockdep_assert_held(&blkg->q->queue_lock); + memset(sum, 0, sizeof(*sum)); rcu_read_lock(); blkg_for_each_descendant_pre(pos_blkg, pos_css, blkg) { struct blkg_rwstat *rwstat; @@ -122,7 +123,7 @@ rwstat = (void *)pos_blkg + off; for (i = 0; i < BLKG_RWSTAT_NR; i++) - sum->cnt[i] = blkg_rwstat_read_counter(rwstat, i); + sum->cnt[i] += blkg_rwstat_read_counter(rwstat, i); } rcu_read_unlock(); } --- linux-5.8.0.orig/block/blk-cgroup.c +++ linux-5.8.0/block/blk-cgroup.c @@ -676,13 +676,20 @@ goto fail; } + if (radix_tree_preload(GFP_KERNEL)) { + blkg_free(new_blkg); + ret = -ENOMEM; + goto fail; + } + rcu_read_lock(); spin_lock_irq(&q->queue_lock); blkg = blkg_lookup_check(pos, pol, q); if (IS_ERR(blkg)) { ret = PTR_ERR(blkg); - goto fail_unlock; + blkg_free(new_blkg); + goto fail_preloaded; } if (blkg) { @@ -691,10 +698,12 @@ blkg = blkg_create(pos, q, new_blkg); if (IS_ERR(blkg)) { ret = PTR_ERR(blkg); - goto fail_unlock; + goto fail_preloaded; } } + radix_tree_preload_end(); + if (pos == blkcg) goto success; } @@ -704,6 +713,8 @@ ctx->body = input; return 0; +fail_preloaded: + radix_tree_preload_end(); fail_unlock: spin_unlock_irq(&q->queue_lock); rcu_read_unlock(); @@ -900,6 +911,8 @@ */ void blkcg_destroy_blkgs(struct blkcg *blkcg) { + might_sleep(); + spin_lock_irq(&blkcg->lock); while (!hlist_empty(&blkcg->blkg_list)) { @@ -907,14 +920,20 @@ struct blkcg_gq, blkcg_node); struct request_queue *q = blkg->q; - if (spin_trylock(&q->queue_lock)) { - blkg_destroy(blkg); - spin_unlock(&q->queue_lock); - } else { + if (need_resched() || !spin_trylock(&q->queue_lock)) { + /* + * Given that the system can accumulate a huge number + * of blkgs in pathological cases, check to see if we + * need to rescheduling to avoid softlockup. + */ spin_unlock_irq(&blkcg->lock); - cpu_relax(); + cond_resched(); spin_lock_irq(&blkcg->lock); + continue; } + + blkg_destroy(blkg); + spin_unlock(&q->queue_lock); } spin_unlock_irq(&blkcg->lock); @@ -1056,13 +1075,15 @@ if (preloaded) radix_tree_preload_end(); - ret = blk_iolatency_init(q); + ret = blk_throtl_init(q); if (ret) goto err_destroy_all; - ret = blk_throtl_init(q); - if (ret) + ret = blk_iolatency_init(q); + if (ret) { + blk_throtl_exit(q); goto err_destroy_all; + } return 0; err_destroy_all: --- linux-5.8.0.orig/block/blk-core.c +++ linux-5.8.0/block/blk-core.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -407,11 +408,11 @@ /** * blk_queue_enter() - try to increase q->q_usage_counter * @q: request queue pointer - * @flags: BLK_MQ_REQ_NOWAIT and/or BLK_MQ_REQ_PREEMPT + * @flags: BLK_MQ_REQ_NOWAIT and/or BLK_MQ_REQ_PM */ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags) { - const bool pm = flags & BLK_MQ_REQ_PREEMPT; + const bool pm = flags & BLK_MQ_REQ_PM; while (true) { bool success = false; @@ -423,7 +424,8 @@ * responsible for ensuring that that counter is * globally visible before the queue is unfrozen. */ - if (pm || !blk_queue_pm_only(q)) { + if ((pm && queue_rpm_status(q) != RPM_SUSPENDED) || + !blk_queue_pm_only(q)) { success = true; } else { percpu_ref_put(&q->q_usage_counter); @@ -448,8 +450,7 @@ wait_event(q->mq_freeze_wq, (!q->mq_freeze_depth && - (pm || (blk_pm_request_resume(q), - !blk_queue_pm_only(q)))) || + blk_pm_resume_queue(pm, q)) || blk_queue_dying(q)); if (blk_queue_dying(q)) return -ENODEV; @@ -526,6 +527,7 @@ goto fail_stats; q->backing_dev_info->ra_pages = VM_READAHEAD_PAGES; + q->backing_dev_info->io_pages = VM_READAHEAD_PAGES; q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK; q->node = node_id; @@ -621,7 +623,7 @@ struct request *req; WARN_ON_ONCE(op & REQ_NOWAIT); - WARN_ON_ONCE(flags & ~(BLK_MQ_REQ_NOWAIT | BLK_MQ_REQ_PREEMPT)); + WARN_ON_ONCE(flags & ~(BLK_MQ_REQ_NOWAIT | BLK_MQ_REQ_PM)); req = blk_mq_alloc_request(q, op, flags); if (!IS_ERR(req) && q->mq_ops->initialize_rq_fn) @@ -797,11 +799,10 @@ { char b[BDEVNAME_SIZE]; - printk(KERN_INFO "attempt to access beyond end of device\n"); - printk(KERN_INFO "%s: rw=%d, want=%Lu, limit=%Lu\n", - bio_devname(bio, b), bio->bi_opf, - (unsigned long long)bio_end_sector(bio), - (long long)maxsector); + pr_info_ratelimited("attempt to access beyond end of device\n" + "%s: rw=%d, want=%llu, limit=%llu\n", + bio_devname(bio, b), bio->bi_opf, + bio_end_sector(bio), maxsector); } #ifdef CONFIG_FAIL_MAKE_REQUEST @@ -972,11 +973,14 @@ } /* - * For a REQ_NOWAIT based request, return -EOPNOTSUPP - * if queue is not a request based queue. + * Non-mq queues do not honor REQ_NOWAIT, so complete a bio + * with BLK_STS_AGAIN status in order to catch -EAGAIN and + * to give a chance to the caller to repeat request gracefully. */ - if ((bio->bi_opf & REQ_NOWAIT) && !queue_is_mq(q)) - goto not_supported; + if ((bio->bi_opf & REQ_NOWAIT) && !queue_is_mq(q)) { + status = BLK_STS_AGAIN; + goto end_io; + } if (should_fail_bio(bio)) goto end_io; --- linux-5.8.0.orig/block/blk-iocost.c +++ linux-5.8.0/block/blk-iocost.c @@ -1370,7 +1370,7 @@ * should have woken up in the last period and expire idle iocgs. */ list_for_each_entry_safe(iocg, tiocg, &ioc->active_iocgs, active_list) { - if (!waitqueue_active(&iocg->waitq) && iocg->abs_vdebt && + if (!waitqueue_active(&iocg->waitq) && !iocg->abs_vdebt && !iocg_is_idle(iocg)) continue; @@ -1729,8 +1729,8 @@ u32 hw_active, hw_inuse; u64 abs_cost, cost, vtime; - /* bypass IOs if disabled or for root cgroup */ - if (!ioc->enabled || !iocg->level) + /* bypass IOs if disabled, still initializing, or for root cgroup */ + if (!ioc->enabled || !iocg || !iocg->level) return; /* always activate so that even 0 cost IOs get protected to some level */ @@ -1849,15 +1849,15 @@ struct bio *bio) { struct ioc_gq *iocg = blkg_to_iocg(bio->bi_blkg); - struct ioc *ioc = iocg->ioc; + struct ioc *ioc = rqos_to_ioc(rqos); sector_t bio_end = bio_end_sector(bio); struct ioc_now now; u32 hw_inuse; u64 abs_cost, cost; unsigned long flags; - /* bypass if disabled or for root cgroup */ - if (!ioc->enabled || !iocg->level) + /* bypass if disabled, still initializing, or for root cgroup */ + if (!ioc->enabled || !iocg || !iocg->level) return; abs_cost = calc_vtime_cost(bio, iocg, true); @@ -2011,6 +2011,12 @@ ioc_refresh_params(ioc, true); spin_unlock_irq(&ioc->lock); + /* + * rqos must be added before activation to allow iocg_pd_init() to + * lookup the ioc from q. This means that the rqos methods may get + * called before policy activation completion, can't assume that the + * target bio has an iocg associated and need to test for NULL iocg. + */ rq_qos_add(q, rqos); ret = blkcg_activate_policy(q, &blkcg_policy_iocost); if (ret) { @@ -2094,14 +2100,15 @@ { struct ioc_gq *iocg = pd_to_iocg(pd); struct ioc *ioc = iocg->ioc; + unsigned long flags; if (ioc) { - spin_lock(&ioc->lock); + spin_lock_irqsave(&ioc->lock, flags); if (!list_empty(&iocg->active_list)) { propagate_active_weight(iocg, 0, 0); list_del_init(&iocg->active_list); } - spin_unlock(&ioc->lock); + spin_unlock_irqrestore(&ioc->lock, flags); hrtimer_cancel(&iocg->waitq_timer); hrtimer_cancel(&iocg->delay_timer); --- linux-5.8.0.orig/block/blk-merge.c +++ linux-5.8.0/block/blk-merge.c @@ -154,7 +154,7 @@ if (max_sectors > start_offset) return max_sectors - start_offset; - return sectors & (lbs - 1); + return sectors & ~(lbs - 1); } static inline unsigned get_max_segment_size(const struct request_queue *q, @@ -375,6 +375,14 @@ switch (bio_op(rq->bio)) { case REQ_OP_DISCARD: case REQ_OP_SECURE_ERASE: + if (queue_max_discard_segments(rq->q) > 1) { + struct bio *bio = rq->bio; + + for_each_bio(bio) + nr_phys_segs++; + return nr_phys_segs; + } + return 1; case REQ_OP_WRITE_ZEROES: return 0; case REQ_OP_WRITE_SAME: @@ -534,10 +542,17 @@ } EXPORT_SYMBOL(__blk_rq_map_sg); +static inline unsigned int blk_rq_get_max_segments(struct request *rq) +{ + if (req_op(rq) == REQ_OP_DISCARD) + return queue_max_discard_segments(rq->q); + return queue_max_segments(rq->q); +} + static inline int ll_new_hw_segment(struct request *req, struct bio *bio, unsigned int nr_phys_segs) { - if (req->nr_phys_segments + nr_phys_segs > queue_max_segments(req->q)) + if (req->nr_phys_segments + nr_phys_segs > blk_rq_get_max_segments(req)) goto no_merge; if (blk_integrity_merge_bio(req->q, req, bio) == false) @@ -625,7 +640,7 @@ return 0; total_phys_segments = req->nr_phys_segments + next->nr_phys_segments; - if (total_phys_segments > queue_max_segments(q)) + if (total_phys_segments > blk_rq_get_max_segments(req)) return 0; if (blk_integrity_merge_rq(q, req, next) == false) --- linux-5.8.0.orig/block/blk-mq-debugfs.c +++ linux-5.8.0/block/blk-mq-debugfs.c @@ -296,7 +296,6 @@ RQF_NAME(MIXED_MERGE), RQF_NAME(MQ_INFLIGHT), RQF_NAME(DONTPREP), - RQF_NAME(PREEMPT), RQF_NAME(FAILED), RQF_NAME(QUIET), RQF_NAME(ELVPRIV), --- linux-5.8.0.orig/block/blk-mq-sched.c +++ linux-5.8.0/block/blk-mq-sched.c @@ -77,6 +77,15 @@ return; clear_bit(BLK_MQ_S_SCHED_RESTART, &hctx->state); + /* + * Order clearing SCHED_RESTART and list_empty_careful(&hctx->dispatch) + * in blk_mq_run_hw_queue(). Its pair is the barrier in + * blk_mq_dispatch_rq_list(). So dispatch code won't see SCHED_RESTART, + * meantime new request added to hctx->dispatch is missed to check in + * blk_mq_run_hw_queue(). + */ + smp_mb(); + blk_mq_run_hw_queue(hctx, true); } --- linux-5.8.0.orig/block/blk-mq-sched.h +++ linux-5.8.0/block/blk-mq-sched.h @@ -66,7 +66,7 @@ struct request_queue *q = rq->q; struct elevator_queue *e = q->elevator; - if (e && e->type->ops.requeue_request) + if ((rq->rq_flags & RQF_ELVPRIV) && e && e->type->ops.requeue_request) e->type->ops.requeue_request(rq); } --- linux-5.8.0.orig/block/blk-mq-sysfs.c +++ linux-5.8.0/block/blk-mq-sysfs.c @@ -36,8 +36,6 @@ struct blk_mq_hw_ctx *hctx = container_of(kobj, struct blk_mq_hw_ctx, kobj); - cancel_delayed_work_sync(&hctx->run_work); - if (hctx->flags & BLK_MQ_F_BLOCKING) cleanup_srcu_struct(hctx->srcu); blk_free_flush_queue(hctx->fq); --- linux-5.8.0.orig/block/blk-mq-tag.c +++ linux-5.8.0/block/blk-mq-tag.c @@ -90,9 +90,9 @@ static int __blk_mq_get_tag(struct blk_mq_alloc_data *data, struct sbitmap_queue *bt) { - if (!(data->flags & BLK_MQ_REQ_INTERNAL) && - !hctx_may_queue(data->hctx, bt)) + if (!data->q->elevator && !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 --- linux-5.8.0.orig/block/blk-mq.c +++ linux-5.8.0/block/blk-mq.c @@ -103,7 +103,7 @@ { struct mq_inflight *mi = priv; - if (rq->part == mi->part) + if (rq->part == mi->part && blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT) mi->inflight[rq_data_dir(rq)]++; return true; @@ -277,7 +277,7 @@ struct request *rq = tags->static_rqs[tag]; req_flags_t rq_flags = 0; - if (data->flags & BLK_MQ_REQ_INTERNAL) { + if (data->q->elevator) { rq->tag = BLK_MQ_NO_TAG; rq->internal_tag = tag; } else { @@ -296,8 +296,8 @@ rq->mq_hctx = data->hctx; rq->rq_flags = rq_flags; rq->cmd_flags = data->cmd_flags; - if (data->flags & BLK_MQ_REQ_PREEMPT) - rq->rq_flags |= RQF_PREEMPT; + if (data->flags & BLK_MQ_REQ_PM) + rq->rq_flags |= RQF_PM; if (blk_queue_io_stat(data->q)) rq->rq_flags |= RQF_IO_STAT; INIT_LIST_HEAD(&rq->queuelist); @@ -362,8 +362,6 @@ data->flags |= BLK_MQ_REQ_NOWAIT; if (e) { - data->flags |= BLK_MQ_REQ_INTERNAL; - /* * Flush requests are special and go directly to the * dispatch list. Don't include reserved tags in the @@ -378,7 +376,7 @@ retry: data->ctx = blk_mq_get_ctx(q); data->hctx = blk_mq_map_queue(q, data->cmd_flags, data->ctx); - if (!(data->flags & BLK_MQ_REQ_INTERNAL)) + if (!e) blk_mq_tag_busy(data->hctx); /* @@ -474,9 +472,7 @@ cpu = cpumask_first_and(data.hctx->cpumask, cpu_online_mask); data.ctx = __blk_mq_get_ctx(q, cpu); - if (q->elevator) - data.flags |= BLK_MQ_REQ_INTERNAL; - else + if (!q->elevator) blk_mq_tag_busy(data.hctx); ret = -EWOULDBLOCK; @@ -1304,6 +1300,11 @@ hctx->dispatched[queued_to_index(queued)]++; + /* If we didn't flush the entire list, we could have told the driver + * there was more coming, but that turned out to be a lie. + */ + if ((!list_empty(list) || errors) && q->mq_ops->commit_rqs && queued) + q->mq_ops->commit_rqs(hctx); /* * Any items that need requeuing? Stuff them into hctx->dispatch, * that is where we will continue on next queue run. @@ -1311,19 +1312,20 @@ if (!list_empty(list)) { bool needs_restart; - /* - * If we didn't flush the entire list, we could have told - * the driver there was more coming, but that turned out to - * be a lie. - */ - if (q->mq_ops->commit_rqs && queued) - q->mq_ops->commit_rqs(hctx); - spin_lock(&hctx->lock); list_splice_tail_init(list, &hctx->dispatch); spin_unlock(&hctx->lock); /* + * Order adding requests to hctx->dispatch and checking + * SCHED_RESTART flag. The pair of this smp_mb() is the one + * in blk_mq_sched_restart(). Avoid restart code path to + * miss the new added requests to hctx->dispatch, meantime + * SCHED_RESTART is observed here. + */ + smp_mb(); + + /* * If SCHED_RESTART was set by the caller of this function and * it is no longer set that means that it was cleared by another * thread and hence that a queue rerun is needed. @@ -1909,7 +1911,8 @@ if (bypass_insert) return BLK_STS_RESOURCE; - blk_mq_request_bypass_insert(rq, false, run_queue); + blk_mq_sched_insert_request(rq, false, run_queue, false); + return BLK_STS_OK; } @@ -1961,6 +1964,7 @@ struct list_head *list) { int queued = 0; + int errors = 0; while (!list_empty(list)) { blk_status_t ret; @@ -1977,6 +1981,7 @@ break; } blk_mq_end_request(rq, ret); + errors++; } else queued++; } @@ -1986,7 +1991,8 @@ * the driver there was more coming, but that turned out to * be a lie. */ - if (!list_empty(list) && hctx->queue->mq_ops->commit_rqs && queued) + if ((!list_empty(list) || errors) && + hctx->queue->mq_ops->commit_rqs && queued) hctx->queue->mq_ops->commit_rqs(hctx); } --- linux-5.8.0.orig/block/blk-mq.h +++ linux-5.8.0/block/blk-mq.h @@ -159,7 +159,7 @@ static inline struct blk_mq_tags *blk_mq_tags_from_data(struct blk_mq_alloc_data *data) { - if (data->flags & BLK_MQ_REQ_INTERNAL) + if (data->q->elevator) return data->hctx->sched_tags; return data->hctx->tags; --- linux-5.8.0.orig/block/blk-pm.c +++ linux-5.8.0/block/blk-pm.c @@ -67,6 +67,10 @@ WARN_ON_ONCE(q->rpm_status != RPM_ACTIVE); + spin_lock_irq(&q->queue_lock); + q->rpm_status = RPM_SUSPENDING; + spin_unlock_irq(&q->queue_lock); + /* * Increase the pm_only counter before checking whether any * non-PM blk_queue_enter() calls are in progress to avoid that any @@ -89,15 +93,14 @@ /* Switch q_usage_counter back to per-cpu mode. */ blk_mq_unfreeze_queue(q); - spin_lock_irq(&q->queue_lock); - if (ret < 0) + if (ret < 0) { + spin_lock_irq(&q->queue_lock); + q->rpm_status = RPM_ACTIVE; pm_runtime_mark_last_busy(q->dev); - else - q->rpm_status = RPM_SUSPENDING; - spin_unlock_irq(&q->queue_lock); + spin_unlock_irq(&q->queue_lock); - if (ret) blk_clear_pm_only(q); + } return ret; } --- linux-5.8.0.orig/block/blk-pm.h +++ linux-5.8.0/block/blk-pm.h @@ -6,11 +6,14 @@ #include #ifdef CONFIG_PM -static inline void blk_pm_request_resume(struct request_queue *q) +static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) { - if (q->dev && (q->rpm_status == RPM_SUSPENDED || - q->rpm_status == RPM_SUSPENDING)) - pm_request_resume(q->dev); + if (!q->dev || !blk_queue_pm_only(q)) + return 1; /* Nothing to do */ + if (pm && q->rpm_status != RPM_SUSPENDED) + return 1; /* Request allowed */ + pm_request_resume(q->dev); + return 0; } static inline void blk_pm_mark_last_busy(struct request *rq) @@ -44,8 +47,9 @@ --rq->q->nr_pending; } #else -static inline void blk_pm_request_resume(struct request_queue *q) +static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) { + return 1; } static inline void blk_pm_mark_last_busy(struct request *rq) --- linux-5.8.0.orig/block/blk-settings.c +++ linux-5.8.0/block/blk-settings.c @@ -466,6 +466,14 @@ } EXPORT_SYMBOL(blk_queue_stack_limits); +static unsigned int blk_round_down_sectors(unsigned int sectors, unsigned int lbs) +{ + sectors = round_down(sectors, lbs >> SECTOR_SHIFT); + if (sectors < PAGE_SIZE >> SECTOR_SHIFT) + sectors = PAGE_SIZE >> SECTOR_SHIFT; + return sectors; +} + /** * blk_stack_limits - adjust queue_limits for stacked devices * @t: the stacking driver limits (top device) @@ -581,6 +589,10 @@ ret = -1; } + t->max_sectors = blk_round_down_sectors(t->max_sectors, t->logical_block_size); + t->max_hw_sectors = blk_round_down_sectors(t->max_hw_sectors, t->logical_block_size); + t->max_dev_sectors = blk_round_down_sectors(t->max_dev_sectors, t->logical_block_size); + /* Discard alignment and granularity */ if (b->discard_granularity) { alignment = queue_limit_discard_alignment(b, start); @@ -832,6 +844,52 @@ } EXPORT_SYMBOL_GPL(blk_queue_can_use_dma_map_merging); +/** + * blk_queue_set_zoned - configure a disk queue zoned model. + * @disk: the gendisk of the queue to configure + * @model: the zoned model to set + * + * Set the zoned model of the request queue of @disk according to @model. + * When @model is BLK_ZONED_HM (host managed), this should be called only + * if zoned block device support is enabled (CONFIG_BLK_DEV_ZONED option). + * If @model specifies BLK_ZONED_HA (host aware), the effective model used + * depends on CONFIG_BLK_DEV_ZONED settings and on the existence of partitions + * on the disk. + */ +void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model) +{ + switch (model) { + case BLK_ZONED_HM: + /* + * Host managed devices are supported only if + * CONFIG_BLK_DEV_ZONED is enabled. + */ + WARN_ON_ONCE(!IS_ENABLED(CONFIG_BLK_DEV_ZONED)); + break; + case BLK_ZONED_HA: + /* + * Host aware devices can be treated either as regular block + * devices (similar to drive managed devices) or as zoned block + * devices to take advantage of the zone command set, similarly + * to host managed devices. We try the latter if there are no + * partitions and zoned block device support is enabled, else + * we do nothing special as far as the block layer is concerned. + */ + if (!IS_ENABLED(CONFIG_BLK_DEV_ZONED) || + disk_has_partitions(disk)) + model = BLK_ZONED_NONE; + break; + case BLK_ZONED_NONE: + default: + if (WARN_ON_ONCE(model != BLK_ZONED_NONE)) + model = BLK_ZONED_NONE; + break; + } + + disk->queue->limits.zoned = model; +} +EXPORT_SYMBOL_GPL(blk_queue_set_zoned); + static int __init blk_settings_init(void) { blk_max_low_pfn = max_low_pfn - 1; --- linux-5.8.0.orig/block/blk-stat.c +++ linux-5.8.0/block/blk-stat.c @@ -137,6 +137,7 @@ struct blk_stat_callback *cb) { unsigned int bucket; + unsigned long flags; int cpu; for_each_possible_cpu(cpu) { @@ -147,20 +148,22 @@ blk_rq_stat_init(&cpu_stat[bucket]); } - spin_lock(&q->stats->lock); + spin_lock_irqsave(&q->stats->lock, flags); list_add_tail_rcu(&cb->list, &q->stats->callbacks); blk_queue_flag_set(QUEUE_FLAG_STATS, q); - spin_unlock(&q->stats->lock); + spin_unlock_irqrestore(&q->stats->lock, flags); } void blk_stat_remove_callback(struct request_queue *q, struct blk_stat_callback *cb) { - spin_lock(&q->stats->lock); + unsigned long flags; + + spin_lock_irqsave(&q->stats->lock, flags); list_del_rcu(&cb->list); if (list_empty(&q->stats->callbacks) && !q->stats->enable_accounting) blk_queue_flag_clear(QUEUE_FLAG_STATS, q); - spin_unlock(&q->stats->lock); + spin_unlock_irqrestore(&q->stats->lock, flags); del_timer_sync(&cb->timer); } @@ -183,10 +186,12 @@ void blk_stat_enable_accounting(struct request_queue *q) { - spin_lock(&q->stats->lock); + unsigned long flags; + + spin_lock_irqsave(&q->stats->lock, flags); q->stats->enable_accounting = true; blk_queue_flag_set(QUEUE_FLAG_STATS, q); - spin_unlock(&q->stats->lock); + spin_unlock_irqrestore(&q->stats->lock, flags); } EXPORT_SYMBOL_GPL(blk_stat_enable_accounting); --- linux-5.8.0.orig/block/blk-sysfs.c +++ linux-5.8.0/block/blk-sysfs.c @@ -896,9 +896,16 @@ blk_free_queue_stats(q->stats); - if (queue_is_mq(q)) + if (queue_is_mq(q)) { + struct blk_mq_hw_ctx *hctx; + int i; + cancel_delayed_work_sync(&q->requeue_work); + queue_for_each_hw_ctx(q, hctx, i) + cancel_delayed_work_sync(&hctx->run_work); + } + blk_exit_queue(q); blk_queue_free_zone_bitmaps(q); --- linux-5.8.0.orig/block/blk-zoned.c +++ linux-5.8.0/block/blk-zoned.c @@ -240,7 +240,7 @@ */ if (op == REQ_OP_ZONE_RESET && blkdev_allow_reset_all_zones(bdev, sector, nr_sectors)) { - bio->bi_opf = REQ_OP_ZONE_RESET_ALL; + bio->bi_opf = REQ_OP_ZONE_RESET_ALL | REQ_SYNC; break; } @@ -312,6 +312,7 @@ return ret; rep.nr_zones = ret; + rep.flags = BLK_ZONE_REP_CAPACITY; if (copy_to_user(argp, &rep, sizeof(struct blk_zone_report))) return -EFAULT; return 0; @@ -497,6 +498,9 @@ if (WARN_ON_ONCE(!queue_is_mq(q))) return -EIO; + if (!get_capacity(disk)) + return -EIO; + /* * Ensure that all memory allocations in this context are done as if * GFP_NOIO was specified. --- linux-5.8.0.orig/block/bsg.c +++ linux-5.8.0/block/bsg.c @@ -157,8 +157,10 @@ return PTR_ERR(rq); ret = q->bsg_dev.ops->fill_hdr(rq, &hdr, mode); - if (ret) + if (ret) { + blk_put_request(rq); return ret; + } rq->timeout = msecs_to_jiffies(hdr.timeout); if (!rq->timeout) --- linux-5.8.0.orig/block/genhd.c +++ linux-5.8.0/block/genhd.c @@ -51,7 +51,7 @@ * Set disk capacity and notify if the size is not currently * zero and will not be set to zero */ -void set_capacity_revalidate_and_notify(struct gendisk *disk, sector_t size, +bool set_capacity_revalidate_and_notify(struct gendisk *disk, sector_t size, bool revalidate) { sector_t capacity = get_capacity(disk); @@ -65,7 +65,10 @@ char *envp[] = { "RESIZE=1", NULL }; kobject_uevent_env(&disk_to_dev(disk)->kobj, KOBJ_CHANGE, envp); + return true; } + + return false; } EXPORT_SYMBOL_GPL(set_capacity_revalidate_and_notify); @@ -258,14 +261,17 @@ part = rcu_dereference(ptbl->part[piter->idx]); if (!part) continue; + get_device(part_to_dev(part)); + piter->part = part; if (!part_nr_sects_read(part) && !(piter->flags & DISK_PITER_INCL_EMPTY) && !(piter->flags & DISK_PITER_INCL_EMPTY_PART0 && - piter->idx == 0)) + piter->idx == 0)) { + put_device(part_to_dev(part)); + piter->part = NULL; continue; + } - get_device(part_to_dev(part)); - piter->part = part; piter->idx += inc; break; } @@ -349,6 +355,7 @@ rcu_read_unlock(); return part; } +EXPORT_SYMBOL_GPL(disk_map_sector_rcu); /** * disk_has_partitions @@ -719,10 +726,8 @@ disk->part0.holder_dir = kobject_create_and_add("holders", &ddev->kobj); disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); - if (disk->flags & GENHD_FL_HIDDEN) { - dev_set_uevent_suppress(ddev, 0); + if (disk->flags & GENHD_FL_HIDDEN) return; - } /* No minors to use for partitions */ if (!disk_part_scan_enabled(disk)) --- linux-5.8.0.orig/block/keyslot-manager.c +++ linux-5.8.0/block/keyslot-manager.c @@ -103,6 +103,13 @@ spin_lock_init(&ksm->idle_slots_lock); slot_hashtable_size = roundup_pow_of_two(num_slots); + /* + * hash_ptr() assumes bits != 0, so ensure the hash table has at least 2 + * buckets. This only makes a difference when there is only 1 keyslot. + */ + if (slot_hashtable_size < 2) + slot_hashtable_size = 2; + ksm->log_slot_ht_size = ilog2(slot_hashtable_size); ksm->slot_hashtable = kvmalloc_array(slot_hashtable_size, sizeof(ksm->slot_hashtable[0]), --- linux-5.8.0.orig/block/partitions/core.c +++ linux-5.8.0/block/partitions/core.c @@ -524,19 +524,20 @@ int bdev_del_partition(struct block_device *bdev, int partno) { struct block_device *bdevp; - struct hd_struct *part; - int ret = 0; + struct hd_struct *part = NULL; + int ret; - part = disk_get_part(bdev->bd_disk, partno); - if (!part) - return -ENXIO; - - ret = -ENOMEM; - bdevp = bdget(part_devt(part)); + bdevp = bdget_disk(bdev->bd_disk, partno); if (!bdevp) - goto out_put_part; + return -ENXIO; mutex_lock(&bdevp->bd_mutex); + mutex_lock_nested(&bdev->bd_mutex, 1); + + ret = -ENXIO; + part = disk_get_part(bdev->bd_disk, partno); + if (!part) + goto out_unlock; ret = -EBUSY; if (bdevp->bd_openers) @@ -545,16 +546,14 @@ sync_blockdev(bdevp); invalidate_bdev(bdevp); - mutex_lock_nested(&bdev->bd_mutex, 1); delete_partition(bdev->bd_disk, part); - mutex_unlock(&bdev->bd_mutex); - ret = 0; out_unlock: + mutex_unlock(&bdev->bd_mutex); mutex_unlock(&bdevp->bd_mutex); bdput(bdevp); -out_put_part: - disk_put_part(part); + if (part) + disk_put_part(part); return ret; } --- linux-5.8.0.orig/block/partitions/ibm.c +++ linux-5.8.0/block/partitions/ibm.c @@ -305,8 +305,6 @@ if (!disk->fops->getgeo) goto out_exit; fn = symbol_get(dasd_biodasdinfo); - if (!fn) - goto out_exit; blocksize = bdev_logical_block_size(bdev); if (blocksize <= 0) goto out_symbol; @@ -326,7 +324,7 @@ geo->start = get_start_sect(bdev); if (disk->fops->getgeo(bdev, geo)) goto out_freeall; - if (fn(disk, info)) { + if (!fn || fn(disk, info)) { kfree(info); info = NULL; } @@ -370,7 +368,8 @@ out_nogeo: kfree(info); out_symbol: - symbol_put(dasd_biodasdinfo); + if (fn) + symbol_put(dasd_biodasdinfo); out_exit: return res; } --- linux-5.8.0.orig/block/scsi_ioctl.c +++ linux-5.8.0/block/scsi_ioctl.c @@ -651,6 +651,7 @@ compat_int_t stat; compat_caddr_t sense; unsigned char data_direction; + unsigned char pad[3]; compat_int_t quiet; compat_int_t timeout; compat_caddr_t reserved[1]; --- linux-5.8.0.orig/certs/blacklist.c +++ linux-5.8.0/certs/blacklist.c @@ -162,7 +162,7 @@ KEY_USR_VIEW | KEY_USR_READ | KEY_USR_SEARCH, KEY_ALLOC_NOT_IN_QUOTA | - KEY_FLAG_KEEP, + KEY_ALLOC_SET_KEEP, NULL, NULL); if (IS_ERR(blacklist_keyring)) panic("Can't allocate system blacklist keyring\n"); --- linux-5.8.0.orig/certs/system_keyring.c +++ linux-5.8.0/certs/system_keyring.c @@ -171,6 +171,7 @@ if (IS_ERR(key)) { pr_err("Problem loading in-kernel X.509 certificate (%ld)\n", PTR_ERR(key)); + WARN_ON_ONCE(1); } else { pr_notice("Loaded X.509 cert '%s'\n", key_ref_to_ptr(key)->description); --- linux-5.8.0.orig/crypto/Kconfig +++ linux-5.8.0/crypto/Kconfig @@ -145,7 +145,7 @@ config CRYPTO_MANAGER_EXTRA_TESTS bool "Enable extra run-time crypto self tests" - depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS + depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER help Enable extra run-time self tests of registered crypto algorithms, including randomized fuzz tests. @@ -755,7 +755,7 @@ config CRYPTO_POLY1305_MIPS tristate "Poly1305 authenticator algorithm (MIPS optimized)" - depends on CPU_MIPS32 || (CPU_MIPS64 && 64BIT) + depends on MIPS select CRYPTO_ARCH_HAVE_LIB_POLY1305 config CRYPTO_MD4 --- linux-5.8.0.orig/crypto/aegis128-neon-inner.c +++ linux-5.8.0/crypto/aegis128-neon-inner.c @@ -148,8 +148,8 @@ kiv, vld1q_u8(const1), vld1q_u8(const0), - k ^ vld1q_u8(const0), - k ^ vld1q_u8(const1), + (uint8x16_t) (k ^ vld1q_u8(const0)), + (uint8x16_t) (k ^ vld1q_u8(const1)), }}; int i; --- linux-5.8.0.orig/crypto/af_alg.c +++ linux-5.8.0/crypto/af_alg.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -146,7 +147,7 @@ const u32 allowed = CRYPTO_ALG_KERN_DRIVER_ONLY; struct sock *sk = sock->sk; struct alg_sock *ask = alg_sk(sk); - struct sockaddr_alg *sa = (void *)uaddr; + struct sockaddr_alg_new *sa = (void *)uaddr; const struct af_alg_type *type; void *private; int err; @@ -154,7 +155,11 @@ if (sock->state == SS_CONNECTED) return -EINVAL; - if (addr_len < sizeof(*sa)) + BUILD_BUG_ON(offsetof(struct sockaddr_alg_new, salg_name) != + offsetof(struct sockaddr_alg, salg_name)); + BUILD_BUG_ON(offsetof(struct sockaddr_alg, salg_name) != sizeof(*sa)); + + if (addr_len < sizeof(*sa) + 1) return -EINVAL; /* If caller uses non-allowed flag, return error. */ @@ -162,7 +167,7 @@ return -EINVAL; sa->salg_type[sizeof(sa->salg_type) - 1] = 0; - sa->salg_name[sizeof(sa->salg_name) + addr_len - sizeof(*sa) - 1] = 0; + sa->salg_name[addr_len - sizeof(*sa) - 1] = 0; type = alg_get_type(sa->salg_type); if (PTR_ERR(type) == -ENOENT) { @@ -635,6 +640,7 @@ if (!ctx->used) ctx->merge = 0; + ctx->init = ctx->more; } EXPORT_SYMBOL_GPL(af_alg_pull_tsgl); @@ -734,9 +740,10 @@ * * @sk socket of connection to user space * @flags If MSG_DONTWAIT is set, then only report if function would sleep + * @min Set to minimum request size if partial requests are allowed. * @return 0 when writable memory is available, < 0 upon error */ -int af_alg_wait_for_data(struct sock *sk, unsigned flags) +int af_alg_wait_for_data(struct sock *sk, unsigned flags, unsigned min) { DEFINE_WAIT_FUNC(wait, woken_wake_function); struct alg_sock *ask = alg_sk(sk); @@ -754,7 +761,9 @@ if (signal_pending(current)) break; timeout = MAX_SCHEDULE_TIMEOUT; - if (sk_wait_event(sk, &timeout, (ctx->used || !ctx->more), + if (sk_wait_event(sk, &timeout, + ctx->init && (!ctx->more || + (min && ctx->used >= min)), &wait)) { err = 0; break; @@ -843,10 +852,17 @@ } lock_sock(sk); - if (!ctx->more && ctx->used) { - err = -EINVAL; - goto unlock; + if (ctx->init && !ctx->more) { + if (ctx->used) { + err = -EINVAL; + goto unlock; + } + + pr_info_once( + "%s sent an empty control message without MSG_MORE.\n", + current->comm); } + ctx->init = true; if (init) { ctx->enc = enc; --- linux-5.8.0.orig/crypto/algif_aead.c +++ linux-5.8.0/crypto/algif_aead.c @@ -78,7 +78,7 @@ SYNC_SKCIPHER_REQUEST_ON_STACK(skreq, null_tfm); skcipher_request_set_sync_tfm(skreq, null_tfm); - skcipher_request_set_callback(skreq, CRYPTO_TFM_REQ_MAY_BACKLOG, + skcipher_request_set_callback(skreq, CRYPTO_TFM_REQ_MAY_SLEEP, NULL, NULL); skcipher_request_set_crypt(skreq, src, dst, len, NULL); @@ -106,8 +106,8 @@ size_t usedpages = 0; /* [in] RX bufs to be used from user */ size_t processed = 0; /* [in] TX bufs to be consumed */ - if (!ctx->used) { - err = af_alg_wait_for_data(sk, flags); + if (!ctx->init || ctx->more) { + err = af_alg_wait_for_data(sk, flags, 0); if (err) return err; } @@ -291,19 +291,20 @@ areq->outlen = outlen; aead_request_set_callback(&areq->cra_u.aead_req, - CRYPTO_TFM_REQ_MAY_BACKLOG, + CRYPTO_TFM_REQ_MAY_SLEEP, af_alg_async_cb, areq); err = ctx->enc ? crypto_aead_encrypt(&areq->cra_u.aead_req) : crypto_aead_decrypt(&areq->cra_u.aead_req); /* AIO operation in progress */ - if (err == -EINPROGRESS || err == -EBUSY) + if (err == -EINPROGRESS) return -EIOCBQUEUED; sock_put(sk); } else { /* Synchronous operation */ aead_request_set_callback(&areq->cra_u.aead_req, + CRYPTO_TFM_REQ_MAY_SLEEP | CRYPTO_TFM_REQ_MAY_BACKLOG, crypto_req_done, &ctx->wait); err = crypto_wait_req(ctx->enc ? @@ -558,12 +559,6 @@ INIT_LIST_HEAD(&ctx->tsgl_list); ctx->len = len; - ctx->used = 0; - atomic_set(&ctx->rcvused, 0); - ctx->more = 0; - ctx->merge = 0; - ctx->enc = 0; - ctx->aead_assoclen = 0; crypto_init_wait(&ctx->wait); ask->private = ctx; --- linux-5.8.0.orig/crypto/algif_skcipher.c +++ linux-5.8.0/crypto/algif_skcipher.c @@ -61,8 +61,8 @@ int err = 0; size_t len = 0; - if (!ctx->used) { - err = af_alg_wait_for_data(sk, flags); + if (!ctx->init || (ctx->more && ctx->used < bs)) { + err = af_alg_wait_for_data(sk, flags, bs); if (err) return err; } @@ -123,7 +123,7 @@ crypto_skcipher_decrypt(&areq->cra_u.skcipher_req); /* AIO operation in progress */ - if (err == -EINPROGRESS || err == -EBUSY) + if (err == -EINPROGRESS) return -EIOCBQUEUED; sock_put(sk); @@ -333,6 +333,7 @@ ctx = sock_kmalloc(sk, len, GFP_KERNEL); if (!ctx) return -ENOMEM; + memset(ctx, 0, len); ctx->iv = sock_kmalloc(sk, crypto_skcipher_ivsize(tfm), GFP_KERNEL); @@ -340,16 +341,10 @@ sock_kfree_s(sk, ctx, len); return -ENOMEM; } - memset(ctx->iv, 0, crypto_skcipher_ivsize(tfm)); INIT_LIST_HEAD(&ctx->tsgl_list); ctx->len = len; - ctx->used = 0; - atomic_set(&ctx->rcvused, 0); - ctx->more = 0; - ctx->merge = 0; - ctx->enc = 0; crypto_init_wait(&ctx->wait); ask->private = ctx; --- linux-5.8.0.orig/crypto/asymmetric_keys/asym_tpm.c +++ linux-5.8.0/crypto/asymmetric_keys/asym_tpm.c @@ -354,7 +354,7 @@ memcpy(cur, e, sizeof(e)); cur += sizeof(e); /* Zero parameters to satisfy set_pub_key ABI. */ - memset(cur, 0, SETKEY_PARAMS_SIZE); + memzero_explicit(cur, SETKEY_PARAMS_SIZE); return cur - buf; } --- linux-5.8.0.orig/crypto/ecdh.c +++ linux-5.8.0/crypto/ecdh.c @@ -39,7 +39,8 @@ struct ecdh params; unsigned int ndigits; - if (crypto_ecdh_decode_key(buf, len, ¶ms) < 0) + if (crypto_ecdh_decode_key(buf, len, ¶ms) < 0 || + params.key_size > sizeof(ctx->private_key)) return -EINVAL; ndigits = ecdh_supported_curve(params.curve_id); @@ -53,12 +54,13 @@ return ecc_gen_privkey(ctx->curve_id, ctx->ndigits, ctx->private_key); - if (ecc_is_key_valid(ctx->curve_id, ctx->ndigits, - (const u64 *)params.key, params.key_size) < 0) - return -EINVAL; - memcpy(ctx->private_key, params.key, params.key_size); + if (ecc_is_key_valid(ctx->curve_id, ctx->ndigits, + ctx->private_key, params.key_size) < 0) { + memzero_explicit(ctx->private_key, params.key_size); + return -EINVAL; + } return 0; } --- linux-5.8.0.orig/crypto/ecdh_helper.c +++ linux-5.8.0/crypto/ecdh_helper.c @@ -67,6 +67,9 @@ if (secret.type != CRYPTO_KPP_SECRET_TYPE_ECDH) return -EINVAL; + if (unlikely(len < secret.len)) + return -EINVAL; + ptr = ecdh_unpack_data(¶ms->curve_id, ptr, sizeof(params->curve_id)); ptr = ecdh_unpack_data(¶ms->key_size, ptr, sizeof(params->key_size)); if (secret.len != crypto_ecdh_key_len(params)) --- linux-5.8.0.orig/crypto/michael_mic.c +++ linux-5.8.0/crypto/michael_mic.c @@ -7,7 +7,7 @@ * Copyright (c) 2004 Jouni Malinen */ #include -#include +#include #include #include #include @@ -19,7 +19,7 @@ }; struct michael_mic_desc_ctx { - u8 pending[4]; + __le32 pending; size_t pending_len; u32 l, r; @@ -60,13 +60,12 @@ unsigned int len) { struct michael_mic_desc_ctx *mctx = shash_desc_ctx(desc); - const __le32 *src; if (mctx->pending_len) { int flen = 4 - mctx->pending_len; if (flen > len) flen = len; - memcpy(&mctx->pending[mctx->pending_len], data, flen); + memcpy((u8 *)&mctx->pending + mctx->pending_len, data, flen); mctx->pending_len += flen; data += flen; len -= flen; @@ -74,23 +73,21 @@ if (mctx->pending_len < 4) return 0; - src = (const __le32 *)mctx->pending; - mctx->l ^= le32_to_cpup(src); + mctx->l ^= le32_to_cpu(mctx->pending); michael_block(mctx->l, mctx->r); mctx->pending_len = 0; } - src = (const __le32 *)data; - while (len >= 4) { - mctx->l ^= le32_to_cpup(src++); + mctx->l ^= get_unaligned_le32(data); michael_block(mctx->l, mctx->r); + data += 4; len -= 4; } if (len > 0) { mctx->pending_len = len; - memcpy(mctx->pending, src, len); + memcpy(&mctx->pending, data, len); } return 0; @@ -100,8 +97,7 @@ static int michael_final(struct shash_desc *desc, u8 *out) { struct michael_mic_desc_ctx *mctx = shash_desc_ctx(desc); - u8 *data = mctx->pending; - __le32 *dst = (__le32 *)out; + u8 *data = (u8 *)&mctx->pending; /* Last block and padding (0x5a, 4..7 x 0) */ switch (mctx->pending_len) { @@ -123,8 +119,8 @@ /* l ^= 0; */ michael_block(mctx->l, mctx->r); - dst[0] = cpu_to_le32(mctx->l); - dst[1] = cpu_to_le32(mctx->r); + put_unaligned_le32(mctx->l, out); + put_unaligned_le32(mctx->r, out + 4); return 0; } @@ -135,13 +131,11 @@ { struct michael_mic_ctx *mctx = crypto_shash_ctx(tfm); - const __le32 *data = (const __le32 *)key; - if (keylen != 8) return -EINVAL; - mctx->l = le32_to_cpu(data[0]); - mctx->r = le32_to_cpu(data[1]); + mctx->l = get_unaligned_le32(key); + mctx->r = get_unaligned_le32(key + 4); return 0; } @@ -156,7 +150,6 @@ .cra_name = "michael_mic", .cra_driver_name = "michael_mic-generic", .cra_blocksize = 8, - .cra_alignmask = 3, .cra_ctxsize = sizeof(struct michael_mic_ctx), .cra_module = THIS_MODULE, } --- linux-5.8.0.orig/crypto/tcrypt.c +++ linux-5.8.0/crypto/tcrypt.c @@ -198,8 +198,8 @@ goto out; } - pr_cont("%d operations in %d seconds (%ld bytes)\n", - bcount * num_mb, secs, (long)bcount * blen * num_mb); + pr_cont("%d operations in %d seconds (%llu bytes)\n", + bcount * num_mb, secs, (u64)bcount * blen * num_mb); out: kfree(rc); @@ -468,8 +468,8 @@ return ret; } - printk("%d operations in %d seconds (%ld bytes)\n", - bcount, secs, (long)bcount * blen); + pr_cont("%d operations in %d seconds (%llu bytes)\n", + bcount, secs, (u64)bcount * blen); return 0; } @@ -759,8 +759,8 @@ goto out; } - pr_cont("%d operations in %d seconds (%ld bytes)\n", - bcount * num_mb, secs, (long)bcount * blen * num_mb); + pr_cont("%d operations in %d seconds (%llu bytes)\n", + bcount * num_mb, secs, (u64)bcount * blen * num_mb); out: kfree(rc); @@ -1196,8 +1196,8 @@ goto out; } - pr_cont("%d operations in %d seconds (%ld bytes)\n", - bcount * num_mb, secs, (long)bcount * blen * num_mb); + pr_cont("%d operations in %d seconds (%llu bytes)\n", + bcount * num_mb, secs, (u64)bcount * blen * num_mb); out: kfree(rc); @@ -1434,8 +1434,8 @@ return ret; } - pr_cont("%d operations in %d seconds (%ld bytes)\n", - bcount, secs, (long)bcount * blen); + pr_cont("%d operations in %d seconds (%llu bytes)\n", + bcount, secs, (u64)bcount * blen); return 0; } --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/abiname +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/abiname @@ -0,0 +1 @@ +54 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/generic +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/generic @@ -0,0 +1,24509 @@ +EXPORT_SYMBOL arch/x86/crypto/blake2s-x86_64 0x23aa18fe blake2s_compress_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/x86/crypto/curve25519-x86_64 0x3c74a43e curve25519_base_arch +EXPORT_SYMBOL arch/x86/crypto/curve25519-x86_64 0xc832c670 curve25519_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0x7c904efe poly1305_init_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xd9ec23eb poly1305_update_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xfaeb41b2 poly1305_final_arch +EXPORT_SYMBOL arch/x86/kvm/kvm 0x48649d10 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x52ac1fc0 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0x92c8d8dc crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xad885ab4 crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0xbc311978 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xd427b31b crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0xeffd1d99 crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/sha3_generic 0x2dce519b crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0x75df2d28 crypto_sha3_final +EXPORT_SYMBOL crypto/sha3_generic 0x79819f28 crypto_sha3_init +EXPORT_SYMBOL crypto/sm3_generic 0x271d72f9 crypto_sm3_finup +EXPORT_SYMBOL crypto/sm3_generic 0xfaff366a crypto_sm3_update +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit/nfit 0xceec93be to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x199620c4 acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x2fcfb275 acpi_video_get_levels +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x7cc484a5 acpi_video_handles_brightness_key_presses +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x5aafc7e5 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xd9a5b20c uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x3e212792 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x75def893 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x13120d67 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x278e99f9 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4de0f006 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x56b3f78d pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x5c30f359 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x7b762948 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x9a00edcb pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xa37bb9e8 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xab4ed06e pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbda495a7 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xcfb38a0c pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xf32e64ea pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xffbbc7c0 btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xfbe01ace rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x1731e47d mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2dd8b10d ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6faeab02 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x917f8fb8 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe9729703 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/nvram 0x3ef38dc9 arch_nvram_ops +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x28351d3e st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x38bbb800 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x8c1f08fe st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xe6309953 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x64a1ba4b xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xa6b1a176 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd08bc3b8 xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x09577f7a atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x59adad7e atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xa567f89f atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/ccp/ccp 0x47d3c97f psp_check_tee_status +EXPORT_SYMBOL drivers/crypto/ccp/ccp 0xaa04056c psp_tee_process_cmd +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bc6094c fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ce7932d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16c84067 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x171d14d8 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x27f722aa fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2a2bcf0a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3044ab50 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a771e39 fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x44164435 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b31a605 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5200973a fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5a7d88ed fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6dc50487 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6e5a5b3f fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x727c72cc fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x758c6698 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e819957 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x874a02ce fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8bd5d270 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa144d95f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xae747387 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc2e9d09c fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc3037306 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc3d5be4 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe48db39e fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee8c62fb fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf375eb9f fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf73577fd fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7a9f7fe fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0088b1b5 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e350f2 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x010d48cb drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x013f2275 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0147783b drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x014c1427 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x029eb67d drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c63897 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0410f9a8 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0414665f drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x043ccd29 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a65bc4 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x057630d7 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0661fc03 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06a9600b drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06aaa7a3 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07eb0877 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb449a drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e57ecb drm_agp_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09804f2a drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ab9f2eb drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd000a0 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cd012da drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d8e424e drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e3200e4 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ed25ae3 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0edda541 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f01d95e drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f7980 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0faf1328 drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0feeec9e drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10cac678 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10db9e13 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10e461e0 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10f11efa drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x110f69ab drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b9567a drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127a8c6b drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f10f48 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14fb818a drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15899c92 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ef3402 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19256260 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19ab4f03 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a96ca57 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af3d6c6 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c34302c drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e1e232e drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e788f2d drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f920445 drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20163fd2 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x202c6b41 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x205fdf49 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2197d15f drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21d541eb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x231635ab drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x238f9908 drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2396d2f5 devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x239ff4f3 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23d38f58 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x246181ef drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x255cda24 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x262a19ba drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2631f075 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29768891 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a566db2 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ae0bfea drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bd55fdf drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c013679 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e1050ba drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e43417e drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e613988 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30cad434 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3129c466 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b5269e drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32be26ad drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3345d80f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x360ade11 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36144129 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36efb85d drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0x371caf59 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3765a0d0 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x384ce69a drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a59417 drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398e90ea drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39e2f623 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a0d59d7 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a204511 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a331488 drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a451e9c drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ae87fb4 drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aec1bec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c22a4d8 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c4ebbfb drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c967c98 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d6f7290 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e3f305a drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e50b109 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e975264 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ec32401 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fad73c8 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42f1547a drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4394f815 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a2e45a __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44bcd546 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44bf9874 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x456935d0 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4938b3bc __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49442b2b drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49a2a386 drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49e045e4 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f6fb6c drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bdb0958 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bf61717 drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c68036f drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ce2e2e6 drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d993071 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dd63259 drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e0e3188 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ecd2d4f drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f4c3b2a drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fcddeb2 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ff32222 drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50d41876 drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50eec933 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5149d1e5 drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5150a57d drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51516ef0 drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51c1f2c2 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51f5dc9a drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51f866cd drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5276c266 drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53472315 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5486c416 drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54c7d629 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54d968a6 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5542443b drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5663ef28 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566c7016 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56d336c1 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x579572fe drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x579f5a79 drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58237802 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58fe19b3 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5927e9e7 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5948ed9b drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e0e850 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e8584f drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b8a336f drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c321d70 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cabaad6 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5df30c9c drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f096225 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f1a55a8 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60786275 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64b08c52 drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64cdaef2 drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x667bb511 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x672a1b61 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67d466ca drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68552c3f drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x688f28d0 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b25d4f1 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b5f2790 drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c11b408 drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ff8434f drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e01694 drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70eb6dc4 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7128ec43 drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x713cead7 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x715504c7 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71953e84 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71b2d07c drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x722e3577 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x741267fb drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x742e664a drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7472b23e drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b14b4c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x759c39f7 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76000b1f drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77255840 drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77660a64 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7811a7a6 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78658c56 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7923f9a8 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7952a9bb drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x798578b2 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a1f7ee5 drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8843ac drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ade1623 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ae81134 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4860c9 drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c11e146 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d0110ad drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d5fdadc drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e2c0b71 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e8598d3 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e9ad059 drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ea3084b drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83eb5a70 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83f562a2 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842dd90c drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84c2e5ff drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x866cb73f drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87024e4c drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87137677 drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8725d839 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x872cbb9d drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x875005af drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8779f48f drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8786db52 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88d077df drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x893763a8 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c3e9ca drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89cebad6 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6696a5 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a92c53d drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8af3057d drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b023f5f drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bd84694 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c467635 drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d8c40fc drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f0d4a9a drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f399a59 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc07ff8 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ffb7754 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x903ce055 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x915eb8db drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91716244 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92587ffd drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92b63293 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x946e720d drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9496165b drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95f21c0c drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x979de6cb drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98796081 drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a74161 drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x994178a0 drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c46c52b drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d353935 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da419a4 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9daee935 drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9de62d7a drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ee4dee9 drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa009e0ba drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11bdff9 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1ab2afd drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1cf31af drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2ef9061 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa323422c drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa39050a4 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3e65650 drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4427a14 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5266ee7 drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5945b5a drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5acb1fa drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa631c29c drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa650042a drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6bc86a9 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa793cfe8 drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa91b0431 drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9fc5d3b drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa27408a drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa90a123 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaaa4e14c drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad654aa8 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad84e701 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadc87701 drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafcff058 drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb03593bd drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0602937 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb101411a drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb12794a9 drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1f21473 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2535536 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb37a5297 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43e3dc2 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5891722 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6c02659 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb765ce3b drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb881252f drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba130fba drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba1a05cb drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb39b224 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb5ad7b6 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbd3a760 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd95b82f drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0f2408 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe1b2378 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbea3c77b drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf2bb6ff drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf31727d drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf510c8a drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0161dec drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc01f1aed drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc07a2726 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1107b4a drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1df2650 drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc28c4e57 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc313abda drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc43b4c86 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc527abdd drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc58b8bf3 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6323239 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc829df08 drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc89cf5ba drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8faed3b drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a2b282 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaea7755 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccbc2590 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccd4ab83 drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcceeaba7 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd521ff5 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0cf9383 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0d9a2a0 drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0f6595b drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1434302 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1b62bf1 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd20a658d drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd23a836b drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd25ade1a drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30345a2 drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42eaf05 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a61e39 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4bfbad5 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4e3bc7e drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d2e47a drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5f5c00b drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd652b179 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6737bbe drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7c5413b drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd852aa11 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9b48c14 drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb2c82b8 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb390990 drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd3339c0 drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddae035a drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdebdb4a7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe116d3a4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2e8a92c drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe330d47a drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe39e939d drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5c01720 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe668721c drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6847341 drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe72c1970 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7599f85 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7e7f342 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8758868 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8da7ff2 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb911c04 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeba40af7 __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebcf6fb1 drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec4357b2 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb22a81 drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee670bfc drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeebf4e13 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeed51a81 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef1b8e7 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeefe2525 drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef08354d drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef5e6e0f drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef8f3343 drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf02b17c1 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf11b122c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf133357b drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf135a933 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf312f3c6 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf31894d9 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4341935 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4a6a212 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5527d4b drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6646e56 drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6c2c04e drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7a7b58e drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf85ab0b2 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd25a97 drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc39877c drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfca5dcfe drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd6a12b8 drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdd1348e drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe216463 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea832ba __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x008bb349 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x010e9fa5 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x015beaa1 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x025eb6c5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x059d5aba drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09ca7785 drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b18b01e drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b43557e drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c1e0ed5 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cdc15e2 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d802810 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ed9451e drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f0e83ee drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13cba946 drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x149297e5 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14ad948e drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x151bcdab drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15e1c09a drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18b752ba drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ae5dfa9 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b0091b7 drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d570a66 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d835949 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1dbc7b32 drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ece62bc __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1edae0d6 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f80be8a drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1faa63ff drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2085c0a8 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x208647b6 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x217cf99a drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a252d1 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a9dd52 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21ec864a drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21fde068 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x222d518a drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23cd6e21 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x261111cf drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26bd4769 drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27204349 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28463439 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28c0f55b drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29b72e8f drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30a244fc drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30d3fa4e __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33f91288 drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34db7b72 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x363ecad2 __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37e71bb3 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x387e9e94 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3979afa9 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3991d79e __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a3a3634 drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e12cd7b drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fe68bbc drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4225bc73 drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42b417f1 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x430aaf58 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43232e8b drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x467e3b20 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x479150ca drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49af4903 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49b47cae drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a8bef26 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b680993 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d759919 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4da08281 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e5829f5 drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e8a98b0 drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f0bd8c2 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f59be89 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f7c0982 devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5182ea5d __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x550c4021 drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57d0f52b drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ad41d7a drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c1ce299 __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e96cf0e drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fe22555 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60c44d45 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61664962 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x627d8942 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62bd03ae drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62fe5c17 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63787415 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63999598 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6544b269 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6741a98d drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68a6308e drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69e422c0 __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ad38b5a drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b68769c drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bc0f47b drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c272fca drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d8b2436 drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fb0ce56 drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72d863d8 drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x784c54b9 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x788932e3 drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a9d259e drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ba360b5 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cb04ead __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dcff517 drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f511d02 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f59c720 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x809b12d1 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8202d7e6 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x820e2b92 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8249f442 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x839317bc drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83b5749b drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87633b98 drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87fd9e03 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x888ccc20 drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x890d3e1c drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89361f08 drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a68cf2f __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8eec7a46 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f4171ed __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9213db42 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9360eb10 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x941eb74d drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94c30f9f drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95c636ea drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9704a6df drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x987ed49c drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99e3ec5d drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e9073e5 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f97c7e6 __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fc623fa drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ffaaa2d drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0e31aaf drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2b7e8ea drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3be3241 drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5dc1dac drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6b55544 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaaf97594 drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac7b9c50 drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae1e8505 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae3ed020 drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae41d3d4 __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf18e732 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaff920de drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb16c08b0 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb17905ba drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb569797c drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb70d6e3a drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7be2103 drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb80153ed drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8738178 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb94ffd20 devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb5504ea drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb93f413 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbfd040c drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf9b1aa7 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0d8275d drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0fd972a drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc363134d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5874f84 drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5e53c02 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8bdf1db __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca343257 drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcadeff3f drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd6655be drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce477f28 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfef09fe drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0fedfe5 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2c241e4 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd449c0b7 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4ceccc5 drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5186ffb drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5b2db0b drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6efa30f drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6efe32d drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd843319f drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd944b033 drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc0f7407 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc4a623e drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde2abbe4 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdeeb6d90 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe083d943 drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe17dee1c drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe34948ab drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3b2d4b7 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3eb5781 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe95f2fce drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9667eae drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9a830ec drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef305858 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefafa942 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1354e0e drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf17040e1 drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2178c9b drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf28138c9 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2c07eb5 drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf389db7a drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4ab0750 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6c1e33d drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf70a760a drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9c4522b drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9f9b005 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd2790aa drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd2f6bd0 drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd316d97 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe0978b3 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfef2b0d4 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x23379b31 mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x2c083594 mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x4d720e1c mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x523f8324 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x52debc0e mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x62f11c8d mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x6a0cae9f mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x745e44b2 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x79176e2c mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8345f6b0 mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8e8140bc mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xa18c3d05 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xca3395f0 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe615fed9 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe7158ace mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf5a8f889 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf8c0042a mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x400231b2 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0xa27dea46 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x011984ff drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1b2685f4 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1c5bb5f9 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1e38a150 drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1e55912a drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2086d651 drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x287bddc1 drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2f6e4e95 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x46047c98 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x56bea259 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x57d144c2 drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x5cc8abd3 drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x747fb0f4 drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x82d9f981 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9c54be40 drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xa62305db drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xa7abdde6 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xab9ec5fc drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd5092024 drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd8f115fc drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xdc0c267b drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x02f4b424 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x049413a5 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x2bee5a46 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x459de5df drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x5e0e9cbc to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x63682c97 drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x67e95142 drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x6d8f7555 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x87397a2a drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x9438c5c9 drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x950c4d49 drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x9b94d6cc drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xabe648f0 drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xc12e7f53 drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xcb7d92e9 drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xd7e43be5 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xdb707803 drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xe26c8beb drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf0faa946 drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf845aedf drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xfee8e7c9 drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0709a7fc ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11ab117a ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x163b89be ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17d67d5b ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c1b0585 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ffca310 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2313dc2f ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x281229f0 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b6ae8b8 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30a47782 ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x334ef895 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33a665eb ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a05875a ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3eb0218c ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x423d026e ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c5db1e6 ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d158469 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x507be2f6 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54dfe880 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x599a20db ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5dfd34e6 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e538dc3 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6031900a ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x618668e3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x675755a6 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69982125 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c61a5a1 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6cdc05e4 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fe5f918 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71398e65 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x761cd36c ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7f20aaeb ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83a39d03 ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88170520 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88f688cf ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d28c79a ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9410e145 ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1ba2c54 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8dd0ebf ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa50db72 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xacb60c5c ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad14899d ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf45c9e1 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb59459cb ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb77ce429 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7c4a992 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba15d0b2 ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba628b6e ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc05b17fc ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0f3f08e ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc35b73cf ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc780d198 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc80cb161 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccc9cbd3 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd13f3e17 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd69608b6 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7b53a1e ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb7ab373 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc904c07 ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2078b3c ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9334536 ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec2a1039 ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfae61cf9 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/vmwgfx/vmwgfx 0x446c961c ttm_base_object_noref_lookup +EXPORT_SYMBOL drivers/hid/hid 0xb365749f hid_bus_type +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x0ab3b24c ishtp_get_pci_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x0e2a072e ishtp_fw_cl_by_uuid +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x10468140 ish_hw_reset +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x124469f6 ishtp_cl_io_rb_recycle +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x21e64069 ishtp_get_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x2321f188 ishtp_get_client_data +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x260b2074 ishtp_register_event_cb +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x2ad4b508 ishtp_cl_disconnect +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x3425bde7 ishtp_cl_set_fw_client_id +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x3b46f2a1 ishtp_get_ishtp_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x3e8428c5 ishtp_cl_get_tx_free_rings +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x47da5794 ishtp_device_init +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x5a9f95b3 ishtp_fw_cl_get_client +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x5b6ad4bf ishtp_cl_tx_empty +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x5cbce25b ishtp_send_resume +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x5f9b0501 ishtp_get_fw_client_id +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x68e4dfd7 ishtp_cl_unlink +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x6a52f1e2 ishtp_start +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x6e996c5d ishtp_set_client_data +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x7312193a ishtp_get_drvdata +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x7f46f8f3 ishtp_cl_free +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x800c27c4 ishtp_reset_compl_handler +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x8901e681 ishtp_cl_driver_unregister +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x89cd73d3 ishtp_cl_send +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x952729e1 ishtp_cl_connect +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x96d97298 ishtp_cl_get_tx_free_buffer_size +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x9e054e37 ishtp_cl_allocate +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xace5d080 ishtp_put_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xadfbf963 ishtp_cl_link +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xb6212d0f ishtp_send_suspend +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xbcc26eb7 ishtp_trace_callback +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xc41b29ac ishtp_cl_rx_get_rb +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xcaa2fc8f ishtp_bus_remove_all_clients +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xd2a201b0 ishtp_reset_handler +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xd6fc3de2 ishtp_dev_to_cl_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xdcb0af9f ishtp_cl_flush_queues +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xe28244c8 ishtp_set_tx_ring_size +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xe4e0593a ishtp_set_drvdata +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xe81ab38e ishtp_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xf06ab01f ishtp_cl_driver_register +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xf4bc538d ishtp_recv +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xfadc1a24 ishtp_set_connection_state +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xfb01896b ishtp_set_rx_ring_size +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x54126264 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x6d4d76bf vmbus_recvpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xd271ffbe sch56xx_watchdog_register +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x06a13d1f i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x961567e0 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd21a7d91 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0f1f542f i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x64ca63e6 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xbb9debf9 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x4dc501ac bma400_remove +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x4f21022d bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xb252307d bma400_probe +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x46edf2a7 kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0xcbb09e6e kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0xef54eb08 kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x09c4206c mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1ed0cf16 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x32f56435 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x39e587b9 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x51b4664c mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x522cb445 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x75f03f09 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8132a006 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x952cd0ef mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa0b139dc mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbe609f7b mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc18e4f02 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc8e91258 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd7f74875 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe00a43ce mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe0cf803c mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x80371383 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x8e4c69ff st_accel_get_settings +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xf15400ab st_accel_common_remove +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xbd8d2d48 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xfe44525b iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x118e55ed iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x7b1c29b3 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xdde74f72 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0xf5f88dd2 bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1dddf2af hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2bc63427 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x40e8a5d1 hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x746ac2b8 hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8ded01c2 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x904f91e3 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x93e26a99 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb85e32c7 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xba743de2 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfa9bdd4e hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x50f7b29e hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa4899fe9 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe4325989 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xeb661a93 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x13e288a1 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1e1bda1a ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x23d13631 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x4a7748db ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x5f2556af ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x720b9a4e ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc92be48a ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd7eb08b1 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xdb3065a1 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x243e6833 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x571de9d9 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x68569601 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xcf315833 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe0307adc ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x220c4f94 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe7c24c7b ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf15ccc29 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x12106896 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1225c3d7 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x226a64ee st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2830fc9d st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3f8e90aa st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4b787b9f st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5463928c st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5a353f58 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7e1f4bb1 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7f042876 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8a26e019 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8eead08a st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9f82b336 st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa17a83b3 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xba76cfe9 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc542a713 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdb4d6973 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe95faeec st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x768be167 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x3bd31091 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x177c63ce mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x8fda7981 mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xc06399f5 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x37538433 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x7a210056 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xffaf4e26 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xc7046334 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xe78a84f7 hts221_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1246fe73 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6384bd7d adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xbc506ebf bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0x7cad686e fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x0b3fa65f st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x2069e353 st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/industrialio 0x07dedcdf iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x0b84a272 __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x13013ba0 iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x1d8d5230 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x237f6051 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0x274986ea iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x2c835083 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x52057295 iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0x5db0388e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x6152881a iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x76768e55 iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x7b10e6be iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0x8e0a369c iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x9432a332 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0xb0ca9b3c iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xb43087aa __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xba23d82d iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdbce2c52 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xded40e46 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xdf64ed2d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8dfe1a7 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xe992819b iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xf1744700 iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0xf2024aa4 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0x9259ab3c iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x295caec4 iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x79dae209 iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x7af1255c iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x8f0b3462 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x4c06cc32 iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x676b853b iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x97f787f0 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xc3e4779c iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x2b73c29e iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x684297ab iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xd6418904 st_uvis25_probe +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xf1ad75e4 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x442c2a41 bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x4c74d50d bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x8b83695d bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xba2186e5 bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x5da02e09 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x888d5624 hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xca1a7d03 hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xe6a930ba hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3e276813 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xa6a74f92 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xf95dfd51 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x0f6f4e55 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x7aee13bd bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x81894ff3 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xe5e99337 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x0f1f2d6a ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x22588a67 ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x882843b1 st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xadd92144 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xbe7cf838 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x28c7cb37 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x339c5f0f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3b2f2a40 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3d268cff cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x46f0bc0e ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x666950b6 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x708e683b ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7141dbc8 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x986a2560 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa9ec5a45 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcb5b231a ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xce8be4ab ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe5dcdf54 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf4c69392 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfbd8a7b0 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfd89eb2c ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03a588f8 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05879dcd ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05c59a42 rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05d87aa8 rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x066c2dff ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08341083 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c86f5cb ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fc03ec5 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1627dd87 rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1686110a ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171e72d7 ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bb34109 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d5b9c57 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d946440 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1db00cac ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20c89b64 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22da00a0 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23d6eee8 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x273ad680 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x282f87bc rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x290ae15c rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29f94481 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b2b63df ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c3b5876 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2deefb15 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ec87f48 ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f7b62cd rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x301452b0 ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30f2a5f4 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31cda552 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3303ddb3 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x389180a7 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d4e230d ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d5b5e8e ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e505b08 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc1658b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x416cd5e7 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x425fdfa7 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42a928b5 rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42f5918a ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439ce33c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45509bc1 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4597e10b rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4654a5bc ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4713a5f2 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4836e253 ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4950d7c5 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a22dbc1 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50095c87 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50f60b4a ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5134563f ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x514db22e ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x518deec0 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51ea3243 rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52adceaf ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x542c4caf rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x548cba5f ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5514a8f6 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55b3e22d rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x563c6b73 ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5648f43b __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x564f80e7 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59545b9d ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b86cd02 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c044fb3 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ed607c3 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f46b18b rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60018b70 rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60e6edad ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61079928 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61e7c714 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x649b1d17 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64b212a2 ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6662202d ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x682dea58 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69ea1f58 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ac24798 ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b2dc43b rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c481419 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c4fe725 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6da4b139 rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e12bc85 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ee0407a ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6fe00f75 rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x705879e1 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73d2aef9 rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74812ff5 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x748503bb ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74ea24fa ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7527b7f3 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76454741 ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77465125 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7894d304 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79473bc4 rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cf5e528 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d4baccc ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7decbe87 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f3f032b rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x834653df rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8416d9b9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84320917 rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x852abcba ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x855b20cf ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86ba720d ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87a3b77a ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b368e32 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d2e829f ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d35f058 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ecf0789 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fe02214 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9197c83c ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93772fde ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94fa1e8a ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95cafd37 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x988388bf rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x996e122d rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ab27708 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b76cf4b ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c205dcb rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ca31a69 ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f56b9d9 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f7ef9f9 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1e32c55 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa56c4da6 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5a10bda rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6e656fc ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae661ac7 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb05aeadb ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1316d40 rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb14ad2f8 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb281e4a6 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb28e3753 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2a20c36 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2c9c9b5 rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8013429 __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb90133cc ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba191847 rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba7e918b rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb1eb34a ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcb3f3f9 rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd8f6b5b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe2ab29e ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf6a6177 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc09b657b rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0f0fdf8 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2e7e302 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc49d8d7e ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7170c51 ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8cc97d3 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc4ab64d ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce6e18be ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0284531 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0703447 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0b05300 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd222c07a ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2d9c8dd ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3d7c626 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd48d0733 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd74c0e03 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd80de2fc _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd913d10b __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9f84cbc rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb815034 roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc6df350 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdeeb18c1 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1fee95b rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4f703a8 ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5c6278b ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe82dcd27 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8e75245 ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea4685e5 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb33f4f5 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebf7d9d3 ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec73f797 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed030b3a ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedebfd76 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeefbbc50 ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf664c730 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf687284b rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf689525a ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8e6cc95 rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfaa999fb __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcb3e374 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcfcd549 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff3afd38 rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffa15ff7 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x17ff95c2 _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x263aaef2 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3167ab67 flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3a64f03b ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3d72c90c ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x43b3a8cc ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x466758b8 uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x46b8fd43 uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x49a14268 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5790a2d6 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x79d79adf ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8baff1b2 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9ad5a273 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9df1b51b uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa5bf48cc flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa67026b5 ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb26b9768 uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xba730ac9 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbd465107 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc459333e ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xcbe33b0b ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd9851ba6 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe67ecb98 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xed337466 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf1f95657 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfb4f0846 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfe877373 _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfebda599 ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1aa88cad iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b14fda3 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2196bf8d iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x247eefbd iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x78e6e539 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8babebf5 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeb59fdb3 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xee029310 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0cccd52e __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18f4a242 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2041ec06 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x24d198ef rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28335ba4 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3e79bc4a rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x45c0774e rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x470ef4e7 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4c559acd rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e00ff48 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x56d95eb3 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x611e2422 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6141327b rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8bad5e67 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9e9cc2cb rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa845647f rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaae8c4f7 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaaf88138 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb13060b7 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb6afb048 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb828a431 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd24b44ea __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd56fcb56 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe07369cf rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeca8460d rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf069e443 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf08c9adb rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf7fc1276 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe0bb798 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x026285f5 rvt_add_retry_timer_ext +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x0e385842 ib_rvt_state_ops +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x20632090 rvt_error_qp +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x302895b0 rvt_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x317a9e86 rvt_dealloc_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x39079a0c rvt_copy_sge +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x3aeb6c96 rvt_check_ah +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x436145f3 rvt_stop_rc_timers +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x4824297c rvt_rc_rnr_retry +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x4bab6141 rvt_del_timers_sync +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x4c302644 rvt_comm_est +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7b1d332b rvt_ruc_loopback +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7d545703 rvt_cq_enter +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7f9364dd rvt_get_credit +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x8d51f578 rvt_qp_iter_init +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x98761c35 rvt_rc_error +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x98ea1b4c rvt_add_rnr_timer +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xa1cb39e3 rvt_lkey_ok +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xa4984d77 rvt_register_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xa6f6780f rvt_rkey_ok +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xaacbbe3e rvt_init_port +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xbab4af18 rvt_invalidate_rkey +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xbfe85258 rvt_compute_aeth +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xc8a00995 rvt_qp_iter_next +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xc9ce0b48 rvt_send_complete +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xcf2cb391 rvt_get_rwqe +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xd020696a rvt_alloc_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xd32c3984 rvt_restart_sge +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xe875fe87 rvt_qp_iter +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xe9cf3e43 rvt_rnr_tbl_to_usec +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xeca94e88 rvt_unregister_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xf41b7c53 rvt_mcast_find +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x44f8dc2e rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x699ecbc6 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x7c1994f2 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xaf67d972 rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xe438dd77 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xf840f75a rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x161bcd91 rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x180b0a2c rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x72ebf308 rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xb970ac0a rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x0b70fd7f rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x102ce359 rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x27384eb5 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x61513dfb rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x6479d637 rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x73eb5815 rtrs_srv_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x201c2e58 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2292afbe gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5cbc5851 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7daf3ce1 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x88821d4d gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8dec2985 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9fca95e8 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb269cc1f gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf8664db1 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x30b19d18 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8b81f9b5 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9c7eb33a input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc079312b devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd01ec496 input_free_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x2e968bcf iforce_init_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x3090775e iforce_process_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x7c5919d8 iforce_send_packet +EXPORT_SYMBOL drivers/input/matrix-keymap 0xef434878 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9ecca4a8 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xa7fcbfd2 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xda84c385 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x92d774c0 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xba993fd9 rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2e77c661 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3cbc72fd sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5a6763f1 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x665b904b sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdb68176b sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x1269082e ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe2d5a6b4 ad7879_probe +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x18333455 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x6d3c9056 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x81ed55ff amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x89a97c01 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0xfb754f4f amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0xfc44692c amd_iommu_free_device +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x33b65980 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x79b2c053 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8ef26387 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xae201759 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc90f8061 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x5c6d8c5e mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8473ac3b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb907c413 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb9c9ad0a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc9bd502d mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xd51f9cbc mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x087fc24a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x136c9eab recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2b77063c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2f645084 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3019dfe0 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3bde0f67 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4714bf7d recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4b23d154 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5844a09f create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5d314e56 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x69e5d37a mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x737babb0 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96126eac dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa54df659 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa728361e recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb297cceb get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc24ba06e mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc990cac5 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda0a9f4a mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde8489b9 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe3acc0da bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe88a3627 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf47ee549 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x58f40219 ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xdfe3ebdd ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/md/dm-log 0xafec0164 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xb9bb7c47 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe7384119 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf33b0663 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x21abae9e dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x23bb12a2 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6b348625 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd6613c65 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd8d57a9c dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe2712c51 dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0x2f75ea9f raid5_set_cache_size +EXPORT_SYMBOL drivers/md/raid456 0x810e637f r5c_journal_mode_set +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0121a751 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1d892725 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x32b3f243 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3f074d25 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6105e2a5 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6594b17d flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb299c00a flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbea7e4fd flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc1568321 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc76d1d9c flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xca5aaede flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd8963880 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe68a9faa flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/cx2341x 0x174443cd cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x4913c4af cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x51627931 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb5c909ec cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x26f66482 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x552378fc tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x23225459 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x35ee3176 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x17b26230 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x3facb72f vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x6d88db58 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xa94c1d59 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xc4f86f85 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xe4f8ff6a vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0x6f351759 vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x03ef06e7 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09aca03d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x11aa0267 dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17019653 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2dd9f7a6 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2e47cb60 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f5cdf80 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3feecaf6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c07e5f9 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6181aec0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x626b72b6 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67480317 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7751ad77 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b0d51ce dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7d8b77df dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e756d45 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80985cc4 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80f20497 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8cc10b36 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e428bf4 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91a6794b dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9591d29e dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9dfa391c dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa0bad0dd dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa29eadfb dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa4cdd04f dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3352dd2 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3f679f9 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6fbdc39 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9ffdef7 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdcf60586 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0c05e5d dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe138ce6b dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe379da6d dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe6b7f8b0 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebbc2d9b dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf8190ab1 dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb09f39a dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb9a826f dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc6380e5 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xb0e2d4d9 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x715405b2 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x08471823 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3295a61c au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x56fff1a1 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x64c2c3b4 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9579ae53 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe3511ca0 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xeaafd6b1 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf7a327ce au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf9afc6c6 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xfc3b015a au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x8f02527b bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x5156bc41 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xa7fe9890 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x681bbdb4 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x381fb284 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xa23ea555 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x9fdc4ad1 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xba39d0e6 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdb736cbe cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe765f046 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x0e0a5ea0 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x1cf145d7 cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x796081be cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0xc6fa741f cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2108b309 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6b96f0c4 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7b8cd7b7 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa9752ac5 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd3e3832c dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4cd99fb5 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4f887a5e dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x611621f8 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6ea2bf15 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6eec11e0 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6f4f5190 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7846c843 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8e1c39c0 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x94695fe3 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa7436ccd dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xad0ccc4a dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc69b158f dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd1677d42 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xed792312 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xee0b3789 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xd59e5fda dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0a2bce45 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x215c0591 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x80eec425 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa8dbe06a dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd1367e22 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xefcc8e7b dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x3b878fa2 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x48777f88 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x8df044dd dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe105c9d8 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xb9cdba6b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf61097be dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x03d59410 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x10b3643d dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x25928e0c dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x30e9cf7c dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x43254739 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x54acad48 dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x5541cd76 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x691751c6 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x80869c79 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x92d9a420 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xa930a295 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xbe15b114 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xbf21718a dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x312d4d95 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb326a60e dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb3effe74 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xca02393c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xdf05e470 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x4b8e6243 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x5d39e0be drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x4eb223cb drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x4b729d1c ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x7f4230f7 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x0cec2665 dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x10fc815c dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xa722020d dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xcffae13b ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x87816a52 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xb648cceb helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x8e4d4be2 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x93c7848e isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xd34e06af isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x128527fd isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xd8277124 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x34b30f85 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xd251f60f l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x68d1c266 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x01cd5c07 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x2b45d8dc lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x210834ac lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0xcc3d30fd lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xd15bda38 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x44de2d7d lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0xd339f44d lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x1c4e4e97 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x8a17c6bd lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x29b9616d lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x57f687bc m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xadbc90d9 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xcb75d697 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x17e3e041 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xffe27f5b mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xac4540fb mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xc0ae751f mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xccb9b36b nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x374ca89f nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x409e512c or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xdb93bcf9 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x583bd2d7 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xb9eac23c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x020d0039 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x87771cd5 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0x2352c078 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe35b726a s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x40802230 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xf178608e sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x6e99cbb7 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x9b93fcd8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x08c2c53f stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xcc74d5ea stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xded77436 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x0c2d2f43 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x7a65ec04 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x1ba80285 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x6b367d64 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xde957b8c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x0047c2d1 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x78388903 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xf1c847ce stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xad5af7b2 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x8107cd4c tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x9261fb6b tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x928ec4c3 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xd1cf580e tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xeece108c tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x31842123 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xfda49357 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x26b10d21 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x3ccf5656 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xbd6c3e8c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xd6ee8811 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x60d86a76 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xe61a4186 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x031d5e92 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x839d1041 zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0xb4aa5126 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x3860386c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x7b8a435e zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xaa419d78 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x06981436 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3ab3093a flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5315a0a5 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5be6f7d3 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7f07b8f1 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x884fa780 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa876a719 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2e083b6a bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5261e31e bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7b4572b8 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa3c8a9a0 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x488a383b bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x7a156909 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf28a060c bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0360f543 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x29702133 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2eb3f0c1 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x40f0a20b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x83cd2d00 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xae5a2f0b dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xca2aa620 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xeef2b512 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf04b0920 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x3e24fcc5 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2a7f73f8 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb3b8d139 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb5b4fc7b cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc68742bc cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdc2b3bf7 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x55e9d0ec altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x17b8e405 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1f9f7387 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa41a15b2 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb30e933d cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc968eff6 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdda5f2cb cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xef43dcec cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x69f64b06 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xedfa8327 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7e4e34f1 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xeda37846 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf12443b5 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf7095bf9 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x051b00e9 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x22a70dc6 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x699adcb0 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9c245091 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa502dafc cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa933a645 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf007e767 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x082309e7 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0f6b0d6c cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1a0dcb84 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1cb7b3c6 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2070dbab cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3c25abd1 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4390eee8 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4ba95ba0 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x830a8d36 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x877b6e58 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8968deab cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x90bc6b56 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9604089e cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c3d897f cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2f1b5e6 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xde3964b0 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe2318037 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf4270eb1 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf98b2be5 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfa8cf5c0 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0x49c6eb14 ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x051017f1 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x054b658a ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2533c05f ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3d828cd8 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x42efb7dc ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x559f7bfc ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ad6c9e9 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6e484e25 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9bd0e56b ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa9a31ac3 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad7319c6 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb69ce1c3 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbe1e3d43 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd7dd7e82 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe03fe014 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfa78cd09 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd61d908 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x104d7aea saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x55ff87cf saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x581824fa saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x76604b2d saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9d7138ec saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa420ac99 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa8b5d332 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbb852e38 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc2b3b503 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdb3cf911 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xef72187d saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xff9dc864 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x6c3644a7 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/radio/tea575x 0x165b643c snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1db3ac14 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4200f0c5 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5c692fc4 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa0b54758 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd59d6b6b snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe7cbbf0d snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/rc-core 0x03ca17f3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc3e49376 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xb7b87116 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x8d2f1b1f fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x2af64076 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x74b6902f fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x98ca802f fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x7083fc59 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x7c6b422e mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x9bafc8fa mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xd054d806 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x4b0ef3a2 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x435a09f3 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x6cff1570 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xcfa2d01d tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x0e87e350 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xa84b24db xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x1bb3089f xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa9c75457 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xcb835f92 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x19a58561 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x84f5deb0 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x94975870 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x96596b99 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa846495f dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb86426b6 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xde31ca58 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe10bc94d dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe90cf297 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x38dee6ae usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4874b7d9 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7d172f33 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8b6f5395 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xaa8dc400 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe0f60056 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe4617a60 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd5c1a776 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x54634295 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5d968369 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x64cb9fb9 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6bfd454d dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6cbcad6d dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6fe2d0a7 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7d41148d dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9d1dfb47 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfc92e6db dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0x9bcdabd5 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xf12cdf3d dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x23082990 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x61d20687 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x217a1557 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2b81c241 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x32824ef2 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x33ee6f53 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x72a9ffc0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa1255d75 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa477bba9 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xacc9f9e3 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf81d3e24 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3615cb98 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5729e3d3 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7528a1c6 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7b225152 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7b6f8371 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8f9c9610 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9737adbe gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc6054e71 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2e2f8035 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3b723b55 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x41eebc22 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc4f9a706 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xef3ea6cc ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x21b4c875 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8fc9a586 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb25290b5 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xbe442d0f v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02b00980 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0469dbf7 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x048b3f28 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06294393 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e177ccc v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b561534 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c0fec1d v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3420452e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b18717e v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b8b1f25 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdece06 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d63d7af v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e9435ff __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f9f83a4 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x425ad3c0 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x427a9f8f v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46636b85 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x484d2b63 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4dac123b v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x514453a9 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x600a27f4 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71bddc16 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73a1b7d2 v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x741301d6 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x768d6f89 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b2942bb __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ff72ec2 __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84aa4537 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86be4b61 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86e84791 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a08354c video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x905311f6 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x944e9f27 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x97df0705 v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b0176b3 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e376fe0 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4535e75 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa534a6b7 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa57ed57f v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6b82ce5 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9eef3a1 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa39624c v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xacb5853c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xacd3c3b5 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0b0cecf v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1241ee7 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb860c62a v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbbc10a22 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd987b29 v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc135ea33 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc739d927 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8d37255 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccaf55a5 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcce69e6e v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd28da8be v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd664186d v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9b7c753 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe06a2266 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3c521ff v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7f927f3 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe7ffea0b v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb1005c3 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeed7f723 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf23ab45b v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf379d42c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf4f39ed0 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7acf382 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/memstick/core/memstick 0x18311c8c memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x198e5cb5 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1ea9ffb6 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x32c6abbe memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3599c5ed memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x376f5b17 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5804d73a memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b9b6144 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x978a0105 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xacbfbce1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xacfbc05e memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xae50437c memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcf6a7446 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x02bd166d mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0918d18a mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x092b8719 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0e2990f0 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14a1b5e5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1df56f93 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4647b3f9 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x50ec6954 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x536e95bd mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x659b607c mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67b8e5f7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x754687fa mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7720b0db mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x84b15ba4 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x859dbada mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8b1f0af1 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8c7a1820 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8cbccb08 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x93134a8d mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c017159 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa31fe5f6 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xacefcf9c mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb50bfe71 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc63fb6f9 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc6944bcb mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd6624778 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd7643e45 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe1bdcee9 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa28fccb mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0aafbeee mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1896e91a mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1d79bce2 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x20e388ac mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x22f4c0d1 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27348fb1 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x291aef8d mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2eee03d8 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x46a9db17 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4caa5932 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x597aea4c mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x606b83b9 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x80b35ee4 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9166c572 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9592cbb9 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x999831dd mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbee179b5 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1184f7c mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc7996c5c mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc876234b mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcd4584d0 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd3a831c3 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd6ed2d2f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xda04d21a mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeb5e5181 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef96c73e mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf5a0c357 mptscsih_bios_param +EXPORT_SYMBOL drivers/mfd/axp20x 0x2a7f9a0c axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/axp20x 0x365e3136 axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0xa58bcb8c axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/dln2 0xbf47def2 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xebb15396 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xebe82575 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x77070ab5 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xeb5b2b58 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0960da15 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0a73f6f1 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1722918a mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x40a2b930 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x573a400d mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5f9662df mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbc3135aa mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc9216eed mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xda5b98ee mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf309fcb0 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfe30c340 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x0992994a wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x152ce87d wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0x4738fe44 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0x5d1ba407 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x6f211f9e wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xf0431db3 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x600fcc3a ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xdd15db59 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5bafa76e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x0a959e04 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x0d1a2e17 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/mei/mei 0x1545cfd0 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xa5bff49d __tracepoint_mei_pci_cfg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xb93bb2a0 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ffb277f tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x1490d2c5 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x198a0cd9 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x592c784f tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x8da8412a tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa0cee9e2 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa767f157 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xae17067f tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xb5d799af tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xc609ea39 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xcb0081bd tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xf48bec29 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xf95d0c9d tifm_map_sg +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x0a9cccac cqhci_deactivate +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x1788074a cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x6be2ad2d cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xa7a93106 cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xb8621f7c cqhci_resume +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x367c43d8 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5d8f05d3 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x697c7c8d cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x97a2635e cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc197e5d8 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf456382a cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xffb2217f cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x064bbc0d map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9aaa7846 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xae71eb24 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xf268f2d9 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x93f92b25 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xbf73c0e4 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x4174d874 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x4368680a mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x8fad6a7b mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0x3e1717de onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xdf73a571 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x95283b9a denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xb5ba6c0b denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x110ee948 nand_write_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x1d2daf62 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x1e19e7e4 nand_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x40ab9005 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x4792ea0a nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x4b05cef5 nand_scan_with_ids +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x66c7f5e7 nand_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x87fc0542 nand_monolithic_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x909d938e nand_create_bbt +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xa62aadfe nand_monolithic_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xd0d95472 nand_read_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xe48fb8e3 nand_get_set_features_notsupp +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0x07c8a160 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0x396ef158 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2d5aaa56 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3c7201b8 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x64d94b2e alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6c3f0761 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x79d85a3b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9b79c3d9 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb758e848 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd2aef1a9 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd2c2da28 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe59d2c0a arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1b6ff1c9 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x47577eef com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa5c51c0d com20020_netdev_ops +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x020ae96c b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x07cce514 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x140531fe b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x14503562 b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x14b4b9bc b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x163858f4 b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2213e434 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x231f2886 b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x241ea6a2 b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x25a172aa b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x28be2752 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2cb163be b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3f3cb30c b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4627af15 b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x48480616 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4a0c4147 b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5285f989 b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x67f58ae2 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x71780293 b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x71baa82f b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x741e8d17 b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7617a92e b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7d385daa b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8070b6ea b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x80f615f8 b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8d839978 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x998eea64 b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa46c2917 b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa52780ea b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb7c7b205 b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb88e5999 b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xbb39b414 b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc0c2e69a b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc76424f6 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc7c32005 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc93ea317 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcb16be48 b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd1f86ecc b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdebba39b b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe11d9ca3 b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfe7acef4 b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x14b985f3 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x2c853d56 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x2d226f86 b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x7cca27f5 b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x8cafb6f8 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xaf734bea b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x27ba785e lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xfd4f7d38 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0xc84ad734 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0xc49af506 ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x00dd6c7d ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x3f55283f ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x7d496cf0 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x52315e1c vsc73xx_probe +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xda73e831 vsc73xx_remove +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x04672930 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x16ea306d ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x19e4d3ba ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2e1750a0 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3ca1f5fa __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5a7239a0 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x61e8c168 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb64e4959 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc6507bc4 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xeba93ddb ei_close +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x02a3a848 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0xc9bfb158 cavium_ptp_put +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0xf60dabad cavium_ptp_get +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x34eeb48a bgx_set_dmac_cam_filter +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x46cdf933 bgx_config_timestamping +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x539ca253 bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x60cd1f2f bgx_lmac_get_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6ca2152d bgx_lmac_set_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x716fd7f0 bgx_reset_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x72b238e4 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xbe654297 bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xd8ed0bcc bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xff987a02 bgx_set_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x13912e4b xcv_init_hw +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x4f739dc0 xcv_setup_link +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x05f342b3 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x15fb91d9 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x234ab2b7 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x25c39ba0 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x325d5b66 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3d69b242 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4600191c cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4909f34a cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x573a7a95 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5e4630b9 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x88b21cdb cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8ac5daa2 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8d30d576 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8eb95d32 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x96ba8038 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb33471a9 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x050230b3 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0548ec67 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f1123f2 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x13599ef8 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1a4a7621 cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x24be304f t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x27fdeb52 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x35baef77 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x370efb51 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48d6822c cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4cc154aa cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4fe4acf8 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x506e8025 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x57862b83 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ede6188 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x703a5ff6 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7881b523 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f8295e8 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x800502c2 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8154b500 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x866d28e8 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x881e78d9 cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x89bc34d3 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8adfde85 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b6823cd cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b96ce77 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f9a0d62 cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x91cbc90f cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x940085df cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96854ede cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9d58e428 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0e7925e cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa4e9920f cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa554811d cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa657cd1e cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa70fd966 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8db193f cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb25a8c13 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb7006565 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbcee4b49 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc7ae545d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcb557cfb cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd078a163 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd3906faa cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe364459d cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe60be37 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x0f1db3e7 cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x68e288fe cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x7c2d134f cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x8754f85f cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x9af60172 cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xb421d92b cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xc194498b cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1cc7f94c vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x59ea69a2 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x7d7c5c9f enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x808a5f8a vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9c21f98f vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb9c302a6 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x3d33c95b be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xdbce9928 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x5ff9a4a1 i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xfbd45e8d i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x1be88178 iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x7164d3b1 iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0553ceaf mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08f45764 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d385ce6 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10313ff5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dd6ac9a mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fc6fe7c mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b7fcae9 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c36c5a3 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c50a77d mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c8c1831 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d73fc78 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42112174 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43090dfe mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47776c1a mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ebb0e2f mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x556e66fc set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a53b2a6 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c871da6 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x659f5a62 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x674c739f mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x686d2329 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x757adce7 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a9bab64 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8284349a mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b746eca mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9069a6d1 mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3017d83 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa49e60c9 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa7e5d9b mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb59b7448 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb82b88dc mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0c6aec8 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8f965bd mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc33cbf2 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf137163 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1979ed2 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd28e2a19 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2dceacc mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9f87d7c mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc6edf2d mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe21b3562 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5d92fe9 mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef6d7821 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf53704ab mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00327d91 mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x075278c0 mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0adc988e mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b26a6f6 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e54e01f mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1358e7a0 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14b176af mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x197087df mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ae6c342 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c940312 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fe766be mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23af5460 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2411911d mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24a9008c mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27fa4d63 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2881ffc9 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bb3c8e6 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c30827a mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d106e28 mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d3ee9b4 mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e2fbfc5 mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f042ec7 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f9c647d mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30e2e644 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32705594 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32d114cc mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37651b47 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38143593 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x388abff1 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c8b84bc mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e960390 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9179e mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4304bb54 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43196a26 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46150cf1 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x496df843 mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b72abe6 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4cf930dd mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e5387d4 mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ecc43ae mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x557e9902 mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x563ac8b1 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57c477cb mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a7924ff mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5afe10a5 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b545032 mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c4a7d18 mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c58a15d mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c5ae013 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e5671b1 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fb11cfc mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fc48f73 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62e71fd6 mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62f004d3 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6332b637 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x637167fe mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x660e9d9a mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66e3d4b1 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f706ce9 mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x713cd36a mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77c684a4 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79ba32a1 mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a8dbd60 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f2ee36d mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80b0f686 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8796d7e5 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a25e22 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x880029b9 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bdbbcda mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bf5d29f mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8db14284 mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eac71be mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eeefaa0 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x954fe2a6 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9884865a mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98ab7cc6 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x991b1ae3 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9af53795 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa16a21be mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa236abed mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa35477b9 mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3c71ab3 mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6745c70 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7c13f12 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8d832b9 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9c37ea7 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab268c83 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac538636 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xacbea31e mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae9ea383 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaff7983b mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb518361e mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb72922a0 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb2e2c3f mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc02f5b9b mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2b6b22a mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3a66df6 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc63fae37 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc93e9d79 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xccfb73ef mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf0c551e mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf1ad550 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd26fd0f8 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4aba631 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd62b8c35 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd71368a9 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd81b5d6c mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf7aae92 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2b7978b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7c6dc8f mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea5ee3a2 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea6e960a mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeee4fc14 mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef01bb32 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0a7d0e5 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf118e0e9 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf120e368 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2b24058 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5c52aa1 mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa098e37 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb10c409 mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb541d61 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc2295a4 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x51f7234f mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3e8c3d2d mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x44e82100 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x453c6ab6 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47bbe055 mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x655947fe mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6aaccc07 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6ac36dcf mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7f4f596c mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8314cd24 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa78f88ab mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc550a905 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc8c51b41 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcac26193 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe7d2bd98 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4396187 mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7daa492 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x3588d032 mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xe052c9de mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x0bc0d652 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xba62f9f6 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x054bf64c ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0817979a ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0fb4a5da ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x124cf954 __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x18c462d6 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x194d7b4c ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x260de504 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2e89ad02 ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x36a9bb3f ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3ec492e1 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x46b970d5 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x47a07c42 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4da694ff ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x54c988cb ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x54eaa444 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5e7c0e88 ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6158f33c ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x65d07394 ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x697c3a21 ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6db157ea ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6f94c0f7 ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x71285ffd ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x788c10a3 ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x82c044b1 ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x83387faf ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x847f9dbd ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9d6fab77 ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa1684d9b ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa198c5c3 ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa2be71de __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa8b589b8 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaa11eadf ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xba45882c ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xba4d4832 ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcd205468 ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcf7498df ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd2405f00 ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd96a895e __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xdb78a829 ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe0ad651e ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xea262f33 ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf091f3d6 ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf39a475b ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfb679571 ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfc53fac6 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xff2ac067 ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x0f173478 qed_get_rdma_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x86d00746 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xcd125ebb qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xfadf610c qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x218db7f0 qede_rdma_register_driver +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x2fbdc898 qede_rdma_unregister_driver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5f1ba08c hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8731d8e1 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xcad4d10b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf82f2916 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfde14592 hdlcdrv_register +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x6a6e734f mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x75f1a5d1 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x7e33ef68 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x946161c7 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x9598b482 mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x994cb57f mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x99f75b35 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xac56c285 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0xd250a107 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xecbb9dde mii_nway_restart +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0xca70d1a8 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x03dd285f alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xe5c2de7a free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x30e6c81a cavium_mdiobus_write +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x4c86b6dd cavium_mdiobus_read +EXPORT_SYMBOL drivers/net/ppp/pppox 0x10c4ca35 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x12a90317 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1fb1a74b pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xfd5c14ba register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xacd91f01 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0b409186 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x3fb972a3 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x413e1521 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x45e19ae8 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x89edb804 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xce301a7a team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xe98705c5 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xf5dbeb2a team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x0fb84e9f usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4d7fdea1 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xaaa40741 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x25054767 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x415cdc09 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4a64f8f2 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5b52d5b4 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7ac08ccc register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xad8adf31 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbf1010f0 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xca5c2f86 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe749b53b unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xeb111982 hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xe41851ae i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x08efd39a ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x09388717 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1ebad739 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x39c771f0 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4ab08dc7 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7eec9ea8 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8b6175ff ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x911de9e6 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xad90664b ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc91870b4 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe2d05486 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfd3b318f ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x00548081 ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x01d7d82f ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x09aebae9 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f5eaa3a ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x11d6e88c ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x154f703b ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x16cabe9f ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2655284f ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2d92443e ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x37a4488a ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3a500bbc ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3afb7227 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3d882739 ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x480690b5 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4af071bb ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4c370e05 ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x50dd77c4 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x584fc1f8 ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x62d4da47 ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6dc1bb3a ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x72806be8 ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x752772a9 ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x78d35d9f ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7cc6e703 ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7f2fca99 ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x84b9220a ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86eaf7a9 ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8ce721cc ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x93ceec29 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x93f68327 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x95275b7e ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9ccba5e1 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5d2f864 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbf11d5a8 ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xca92235c ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcb5ce7ce ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcbdf73b7 ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xccfc3ed2 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xce8f75fc ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd1eb6311 ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd5f1b2ce ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd6388c3c ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdab3a6c2 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe632352d ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe72c3ae0 __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xeb121839 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf3637470 ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf949b09e ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfcba31a6 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0876501c ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x08fe9cd5 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x46cf1058 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5e67080d ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x692e2636 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7d3ffb61 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa282027b ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa74033ee ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe1d86e85 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf5bad35a ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xff7d6654 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x109f3d9b ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x127bcf8b ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x17e3a88f ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x23453b74 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2cedc152 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f6d4e04 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x35bc5893 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x545afdd5 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x590378f7 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x594fa5b7 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x628b30ee ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x65fdc15d ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x824732d2 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x899c4db5 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8f479ceb ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9fa83f2b ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaf44e3a6 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe3761746 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe5d1a3ce ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe6ecc391 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf1c173cf ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf41df563 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfe0abfaf ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x009429c2 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02810341 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03016444 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04d078a8 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06941f22 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07c76587 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08c2c7c8 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cee9fbb ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d2dba28 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ebbe9c3 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fc060e5 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12de9b1a ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x136f1046 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1626eb33 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x223dfdc4 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23680095 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x252435c4 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cfeae34 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d32e526 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dd5a8b6 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x314a89f2 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31e7f8f6 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x329222da ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34960e44 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3532698e ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3594e386 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37100ea3 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ccceed4 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fdc2164 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4cdaafbb ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ec20b73 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f29555a ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x505943af ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51d3a07f ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53c0073e ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x586c7590 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x608dd275 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6292a6a5 ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66735aea ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68da5a56 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ef06b04 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f22c11d ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f68ecef ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7096ae8f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x714bbf11 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x733878e1 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b82b789 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ba216b2 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bbaf4b3 ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d7118e0 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ea9b460 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84a451af ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8535a6b0 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x865a431f ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89254f8a ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x899464dd ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a2281e1 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8aef8afd ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c2d688e ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ce8d5a7 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9113917c ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x971c4254 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x980409ac ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99c6c5ed ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d0d2506 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa182e2fd ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa558418e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa74967d2 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa75b0dc3 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaabf0cec ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb06ce817 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1256e14 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb354f55c ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb81d09ff ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb942de25 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb96fe173 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb98abb6e ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb09f93d ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf11ad97 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3ebe236 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc55aa365 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc59870d9 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5f50912 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd46e76a ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce0a7ef0 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce4f1cbf ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce663c55 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf4a259d ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd420fed5 ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4cc1ff5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd703259f ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdcab8762 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe033cf54 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0751acf ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe390dc74 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4e8de22 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8fc0b79 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9bd2b66 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xead2ffb0 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecca676b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf05a4de0 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3ad2ea1 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf470a2ed ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf602c865 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf68ced97 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf96f09a1 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc37c42d ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x7e2d98fb init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xc71f0894 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xcca429a0 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1349b0a1 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x2992c56f brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x3a494254 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x44260d29 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x4a8ef5cf brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x6eb3df8e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x7e154ce9 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x90ac0367 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x9437f3d1 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xabf7948a brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb74a94c9 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd3d8bca6 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xf6713bf6 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0x206293f4 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0xda3f0087 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0xdec459d7 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2a66aa0a libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2a906538 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2ed12657 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4b5a651e libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4ea63a25 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4fa7b8d6 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x568a52e2 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5a7ae6c7 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x743fef02 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x843bface alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x8bb0c775 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x8e23f0c0 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x953f1d5f libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xbd6990bb libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xbf173e4a libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xc021a34b libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xc3889e2c free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xda923989 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xec6cb5a0 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf318eea9 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x034474c6 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x035a537c il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x046833ba il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0944ff6d il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1275ff4e il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x17861e2a il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1b15684f _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x24b3c33a il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x24d56469 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2597393d il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2641f5bb il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x283cf368 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2cbc8ac3 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2d355c63 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x35cdc68d il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x36437b81 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x370157cd il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x370e30bd il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3ba867d5 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3c692390 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3dd89c08 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x451013e1 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x45371ecb il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x46c7f853 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x47dad159 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4c685991 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4e9babe4 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4f86c8df il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x514cf855 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x518587fd il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x51cf7995 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x537a24a9 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x58cc60c4 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x592c6379 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5a2eedee il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5d03b9a0 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5e42c1e1 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5ff0c902 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x60b71a0e il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x64f576f6 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x65fd1042 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6952f613 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6a0bf7f4 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x70f4addc il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x764cd532 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7673b433 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x77697583 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x794c7652 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7a0834b1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7a9e732b il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7cc9e7fc il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7e627020 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7f3e7aa8 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8526fcd3 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x85a9ed87 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x889dccee il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8a3301e4 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8a88c8a9 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9185962c il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x945d5aec il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9ae53dda il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9d3cbc27 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa4d8db53 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa55686a3 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa8da5eac il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa91707b7 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa994df45 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xafe20c08 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb0eb74f3 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb0f4d5c5 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb9695811 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbd734b64 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbe9cef37 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc269beed il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc2e7dd7d il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc726ce1a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc7651919 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc92b6e9b il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcee32c2b il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcf4cb513 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd41a7dcf il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd6e433b0 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd8276e6c il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd9a3f917 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe444c4d7 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe4730cad il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe60b8e83 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe6533321 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe70dfd20 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xec9dd863 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xedce3ccd il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf12ff7de il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf188acbc il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf4116d1f il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf4d9d825 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf9e638d3 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfac2ced3 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xff518d9e il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1ee9c199 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x20a6a247 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb72ade7d __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x06ddb57e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0d381e45 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x17913a45 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x203f3bcd hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2e5d3138 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x33818254 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x376472b9 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x580e13a8 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5919b31a hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5ac7260e hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5de411a1 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x67e76273 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7196793a hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x75934c58 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7aa51e1d hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8a0b7ed6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xaeafc860 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc93a8366 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xcdf7a36e hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xcf5d2ec7 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xd3e89974 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe20c555f hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe3abba5e hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe9dee539 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xef85c7e1 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xfb914443 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x20b542b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x2b644465 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x3afe62b3 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x44ffcba1 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x849b7d18 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x939a13f3 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x99f81381 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa0e0afce orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa46afa45 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa9f86aa5 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb4bd7699 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xbf0d51d0 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xc8776e76 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xcfa9d653 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd709f2dd free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xef87af22 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0xd48757a8 mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x482c9618 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x01ca20c3 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x03750b6e rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0f591f67 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0fc176f2 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x14058282 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1830bc5b _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x26f4e08a _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x274b3601 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ec80c38 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3134cb39 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x340ef05b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x42023db2 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4321e677 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4454d432 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x48e24e84 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x503cf163 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x54f98ac2 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5e25324a _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7376c484 _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x76d1ff95 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x794b6862 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8ad47cbc _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8ecd4840 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8fcec3d5 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x943c4cdb rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9531a6c7 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x963153b9 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9c34a689 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa41cf2b8 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaa4337e3 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xadec79b0 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb3bf70a3 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc6aca142 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd3ddc812 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd5ec0e2a rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdee73331 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe659b87e rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe831b7a6 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xea71d066 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeec89304 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfcc7f507 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x42d66ddd rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x57374685 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x67e77efc rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x8564b5a7 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x1af8bb0f rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x22124ad9 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x4d926d1f rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xdffa4b5a rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d19eafc rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0f6de86d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x11c23edd rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1edb1669 rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2c9009f1 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e23d148 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x42ef44c0 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4bfbd93b efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4eaf7b28 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5fbb2183 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6e276dd5 efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x713462f0 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x744fb7a6 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x79f9a413 rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x873a377d rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8a14d43c rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ea60059 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8fcb0415 rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8fdfc57d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x99e3b4eb rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9de322c5 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbcfddf6f rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd3ae60f9 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd8606415 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd9510c50 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdf1d91af rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe3fce773 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe727d8c0 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebedfe5f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf0cf3e2d rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfde59098 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xffea5f32 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0x910d8982 rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0x7aedf330 rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0x952f980e rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x00859f70 rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0a1e7c11 rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0b7b44a7 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x14348000 rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x165dac08 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x17650eee rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1b560ef2 rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1fd5d049 rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x207dc81b rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2c5ac0f2 rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2eba44f9 rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x336e2cb5 rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x3a28959e rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x40c41506 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x455baa21 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x464dc945 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x48784d64 rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4aa84c43 rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4cbbd643 __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x572a7934 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5d910bf7 check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x68eb50d2 rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6ca28250 rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x73489a1e rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7fdaf7f0 rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x81f07f63 rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8a459ac7 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9212baac rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x945855f0 rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9d3e5a90 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xae487c64 rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb006ba4a rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb5b7fb05 rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb810f37b rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xba1a78f4 rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbbc8d397 rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc2e6bb8d rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc36b253a rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc84f5aa2 rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc9121d42 rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc9f11a27 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd8a1b306 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdbe1298f rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdccfe7e4 rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xec7643f7 rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf5812bee rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf816f4b2 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfa2c3df2 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfb0e17f2 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xff3e5686 rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xffaa1f46 rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x2af58fa4 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x5596cd9e rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x904b6e8d rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xd8ef36fe rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0x619f322b rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x86ee76bd wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x96d6dd28 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc9bd03e2 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfb6f4d0d wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x2515d06f fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x4ad7eb1a fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xd7e3687d fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0x24bbc633 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xff34dfb9 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x5f1c02fc nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x6b79a745 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xac0105a7 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0xc4a74cf4 pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x2dbec342 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x5dcf1331 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x4a0f5a3d s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x5795f551 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xf02756cb s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0f1abae5 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1ef35298 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2514a962 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4b5653db ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x61f61c6f ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x66d5e83a ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7dd639c6 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9fb71495 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xef86ff5f st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf49fa84a ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2cf4a521 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x36883bb5 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3d3677cb st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x52ffaf0e st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x57065647 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6d10c969 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7d9f232a st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x88353fe7 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9d918ba0 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa026c6f6 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa23d2720 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaa07aefb st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xac3ebadc st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd5528537 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd7ea4bb7 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdb917b39 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xea38737e st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfcf0759b st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/ntb/ntb 0x07c9bb71 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x1ce9afee ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0x228864cf ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x29a18e77 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3546651e ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0x40def721 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x498ad347 ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0x714c23a1 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x715c0cd5 ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0x8b7b4a50 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x91c3dbb8 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0xa21c7975 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xa40dbdaa ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xafa99fe1 ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0xb52a2831 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xc2383a70 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xd14cd87a ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xe185a3d0 ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0xe3c678d4 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0xf6096fd9 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x2e719b04 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xd899e780 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x04aa1921 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x05f22fc6 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x21c6b2bf __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x271ca016 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2bf1ebfc parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x2c7623fc parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x31d14498 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x36261a81 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x3fae1a47 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x4b07bf59 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4de72d7e parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x50ed3707 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x54215914 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x653b17a3 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x663bd6ee parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x72aa5604 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x730c89e6 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x7bcf11f4 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xb722daa8 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xb7a68ab7 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xc0c96a5f parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xc249decb parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc986b4ce parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xcbd3def7 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd9a1f9a1 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xdf1f7530 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xe79a3915 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe9296e3c parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xebe3c8f7 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xefcc78d0 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xf608de42 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport_pc 0x2e128775 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xcdead602 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x038d5478 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2a816df5 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x300f7263 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x326ca6fa pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36a75076 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3a8b1423 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3ceda3b4 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5105284f pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6b749c9b pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x82fd7025 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x97abba86 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9f466e89 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbb312663 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbe1a0482 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc1200b32 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcd5eb9af pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcfe41101 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeced9831 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfc693aa5 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x066a89d3 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x265b2a69 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4e2a8fe4 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x58520946 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5d58b529 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x62aa5045 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7c640d82 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb1ae132b pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb2bd6f7a pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe1a6b592 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf942709b pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xb96b2aba pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xfa9fbfd2 pccard_static_ops +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x17c9d2d1 cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x187ba708 cros_ec_suspend +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x7015a965 cros_ec_resume +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x97d96bac cros_ec_handle_event +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xb60ea7b5 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xaa1c36de cros_ec_lpc_io_bytes_mec +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xc4ebc6b3 cros_ec_lpc_mec_init +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xf5c87c59 cros_ec_lpc_mec_destroy +EXPORT_SYMBOL drivers/platform/x86/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0xd857cac7 sony_pic_camera_command +EXPORT_SYMBOL drivers/platform/x86/wmi 0x607e10ee wmi_driver_unregister +EXPORT_SYMBOL drivers/platform/x86/wmi 0x68c42e94 __wmi_driver_register +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x18022364 rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1dbdc172 rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x318f8c96 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x31c56161 rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x3d7f7fe4 rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x46ef3c7d rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x4fd46f5d __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x58a2f7d2 rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5e067198 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x6b66e074 rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xeb64e190 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf14f1fa9 rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf154c242 rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf1aed14d rpmsg_register_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x26b9393f ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x25bd2169 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x5629a2a7 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x6eadbcef scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7608b3af scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc5c61060 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xdf0b443b scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x081caf40 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1453eff1 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x26a6ec99 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2ca328a7 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x308e402b fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3dc8f733 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x51cc6ec7 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ca49418 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x62ff1cb7 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x87969b9b fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcdce7e37 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13daf3c5 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18500120 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e7f0d28 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x24f7c28f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c0b681d fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ca74c62 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30a991cc fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31451c0e fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a9a083f fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ef94209 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4021a2a6 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44fe65c7 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45834437 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b4c8f1f fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c8ceb54 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x50a48b98 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53ce2920 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x557f9f3b fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5959d83b fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x59f6d828 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66d090ba fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69dd97f1 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d81ac1 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7897d953 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7e4b4446 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80c39b68 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80c6ae33 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x857fb416 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85e01831 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8774c9ac fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8d1cbeec fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8fe738c0 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x930177a2 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aca1e73 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ca2b00d fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d79045d libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0bb68e8 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa61436af fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7e2d533 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa99b2bfd fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab01e5cf fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb870030b fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf88e521 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc0355689 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9619924 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd11072ce fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2a8c739 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9c069a4 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdcc311c2 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1e34d2d fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3fdcc2c fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5cf06b5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffc036fc fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa20fe978 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xbbf20193 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe91c0e30 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x12c37f88 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1f936bf2 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x42f9f179 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4977c2a0 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x945045eb qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbb9c4ed8 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbe551027 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc29d56d7 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcd287e23 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcd29a1e7 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdda5c1db qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf086a9e2 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf9ea4913 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0e48bf54 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x25b5349c qlogicfas408_host_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb1c5d62e qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdaa41911 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdec5aa21 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf42484e0 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/raid_class 0x35a79e82 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3d80db43 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xc1f76224 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x09c9c134 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1fbabb5f fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2129d7d8 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x23dec484 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f953885 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6cd054be fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x77080179 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc104d6a6 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc5fb854e fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd7fe90fe fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdb57f35f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdfdeaafe fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe10e590e fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf3ddc659 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf6839c7f fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfe7696e2 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0168620d sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x017b5065 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x037802a1 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0b90208d sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c0212cf sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1e1115ba scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x272069eb sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2c75d09e sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x402df783 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ef32799 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x59fe240d sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d0a1cf4 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6648b867 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6bebb04e sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6dae78d8 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81b71466 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x83c71027 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9491045f sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96825180 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa6c76528 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb1f3b289 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbaf60b60 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbc1950d0 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbe8d0aad sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcd135099 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcfea1b2e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3eeeab0 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb4ad953 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6483f6f sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2ffc19d1 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x558925ac spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7ea55007 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x90b8e8bd spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb88d69b1 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x158bbf52 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x2c4d54d1 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x4851a015 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5560bb0d srp_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x85ae8051 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x9f37ac2c tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0xdd5fcb6f tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x013af52b ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x2e5eea36 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x4c1f655c ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x5c715c8a ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x65225a62 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x93b43064 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xa54838d9 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xf118eed8 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xfff9d939 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x037c6fd1 ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x7f22ab5e ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0d7b04aa sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1148b7d3 sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1a7f23b0 sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x20b2f71a sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x40b93420 sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x89745491 sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x89c43297 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9d7e66b1 sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xb72a53c6 sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xc754c748 sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xcd192855 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd3e71e0c sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd4b4c2a3 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd662c5bf sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xde26e9cf sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xe82073b9 sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xfaf2ad13 sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xfc1f7975 sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xfd2ddcf2 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x1009fcdc cdns_xfer_msg +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x18320dd4 cdns_bus_conf +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x34712074 sdw_cdns_irq +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x683b0b18 sdw_cdns_exit_reset +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x6dd043ea sdw_cdns_config_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x72f6b032 sdw_cdns_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x79c1217e sdw_cdns_clock_restart +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x7de72453 cdns_set_sdw_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x84d66b1f cdns_xfer_msg_defer +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x98090f23 sdw_cdns_probe +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa76a6fcb sdw_cdns_thread +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa8495537 sdw_cdns_pdi_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xbdf13f96 sdw_cdns_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xce3cffd5 sdw_cdns_alloc_pdi +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xd656a60e cdns_reset_page_addr +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xdd00b106 sdw_cdns_enable_interrupt +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xfe1d3625 sdw_cdns_is_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-intel 0x4beb90f4 sdw_intel_exit +EXPORT_SYMBOL drivers/ssb/ssb 0x15bda8c5 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x1cf8e622 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x25d3a2e5 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x349b041b ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x36167c4f ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x430e1eba ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x49838eda ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x55982c46 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x64fc4356 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x66117e1d ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x7a3b9fa3 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x85e3ef17 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x898eced1 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x8b04fd56 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xadee8258 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xb2e8410d ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb5c8a954 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xb69bd512 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcdf4a476 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd6d69f0a ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0069f97d fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x07d51625 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0d8ff9ad fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x203d1f87 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x23ef2a78 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x28357f0a fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2836e2d7 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ff7da31 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6053dc22 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x676de4e9 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x682a7607 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f51d232 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x810a96a7 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x87b200a5 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9bf261ae fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa77ab896 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xac173a5b fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3fb22e3 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb7845fa8 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc955fe01 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd0cbbdae fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd3efe65a fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdee74f65 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xefe23d93 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf23c0fe6 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x065f9c9d gasket_page_table_max_size +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x192e5deb gasket_sysfs_create_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x1f8a80b2 gasket_reset +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x28b2f290 gasket_enable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x339c2b95 gasket_page_table_map +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x3563b69d gasket_get_ioctl_permissions_cb +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x372973e0 gasket_page_table_are_addrs_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x38c3d415 gasket_page_table_num_active_pages +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4109757c gasket_page_table_partition +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4292ff96 gasket_page_table_is_dev_addr_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x65477d6b gasket_pci_add_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x6c562069 gasket_sysfs_get_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x77311f6a gasket_page_table_unmap_all +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x7b214a2f gasket_sysfs_put_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8c92da47 gasket_page_table_num_simple_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x920332ef gasket_unregister_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x94cb3449 gasket_mm_unmap_region +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xa7b5067b gasket_pci_remove_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xaace6b96 gasket_register_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xb0a3a5da gasket_sysfs_get_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xb5d65654 gasket_reset_nolock +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaa2668a gasket_num_name_lookup +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaf2f8cd gasket_page_table_unmap +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc077abeb gasket_wait_with_reschedule +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc225208c gasket_page_table_num_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc489c9bf gasket_disable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xceee1170 gasket_sysfs_put_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xd0eb7216 gasket_sysfs_register_store +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x43918112 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x2fc214d0 ade7854_probe +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x021b22bb free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x05785974 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0628e948 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06fe17bf notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0da6dc1b rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21291a73 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24b3e60f rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25b4b609 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c0425a7 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x326ee018 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39cbd47b rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ebec539 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x400081fd rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x449227e1 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45db5f63 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x48f9b72c rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x620b9684 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6546fc1e rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6938ad0f rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6edd1b60 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76817db0 dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7eb35f40 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d0a2f70 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d6232b8 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x902eda6c HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91d1ddad rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97b03ce0 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9aba5e27 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9bb9aa96 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa10b55e0 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa93a1968 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb7772c9d rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbce6a270 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc08bc128 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5504382 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9aab7e1 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd316fbb0 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdd01da1d rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf443e8c RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe096bcff rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xecd4470d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedd4a7d6 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3887115 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5a2eafd rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf74ed060 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8152cda rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfadea5ad rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfcb67bb5 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff308e16 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06621972 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c743af8 dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d66a0ff ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d77156e dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3650a3c8 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38059fdd ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fbb16b5 dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a45951e ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5401f189 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5967d597 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ae69752 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x64e8e2d1 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67ea5b7a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b656c66 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6dc3a5f0 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e82750f ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71c10745 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73fc7c36 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78b63bfc HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d1b1aed ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x861a2999 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x872587b4 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c94b8a0 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92447931 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92ddfeea notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9af554c9 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b24f7a0 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa129e552 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xadea3076 is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae29289a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb589806f ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd08d976 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe9f422a ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc11160da ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc5e90c5f ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc6d50996 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9bd2aa1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcc4f2f8d ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2956acc ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3e1d441 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6b7273f ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9366a0d to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdaed095d ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe03d8592 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1288429 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7853f10 dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe940b8bf SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe97a790c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb95f05a rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecc5fb1b ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3bd22d5 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5d07b0a ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6367365 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfbeac19a ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfee7c551 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0b65b703 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0fb260ea iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x16152a09 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fd368e7 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x293a43f6 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ab6b9e2 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c0c101c iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x345d32ee iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x359c404f iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x38adf210 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4031604f iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x492bed53 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4cde130c iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4d599ed9 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x504e5b5d iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50ef2928 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x57c93f52 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d168d71 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5d286717 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5fb5c068 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x643c2bea iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x694c3806 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7039201b iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70bfc27c iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7c0f4e0e iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7e94ce28 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x83cb4632 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c4a0e3a iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e8e9d50 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9310eff8 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95827610 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x99dbb986 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9d582453 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9dc827ad iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa05f12a8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa4f9cfd2 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa650acfe iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xafc89cf0 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb38dde26 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbea3dfca iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf35ade2 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe80bbb0f iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef413fec iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfd4d757f iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a8e4879 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d85ff2f transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x137772d9 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x18da7dd9 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x197afa0e core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x20db521a target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x21b99188 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x26b666a4 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x28bd370d target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x28fca9ba target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2968576b target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a890ae5 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x30ddc9e7 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x32b9dca9 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x32c7d142 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x33d1de29 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x33d3d50d transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x34cef2ab transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x38ef5df4 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x4060a93d target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bcfee6d target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e86bcc3 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x51aa70ac spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f7bd8d8 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x60eb1c9e transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6133e1c4 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x66684103 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x67ccf0ff target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ebf6ffc passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c060704 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ec53063 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x801d5138 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x8066e93d spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x8077230b target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x83c346ef transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x84e118ce target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x886ec943 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x89d9b2a6 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e280c25 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9903a401 target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x9eadf062 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fe5e9f5 target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xa1d3b298 target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa412a0a0 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4c6b2b3 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8b4e9a0 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa92b0e3c sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf89daa4 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xb08ae6d4 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb170e7df sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xb31c9457 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5d139b5 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6756488 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xb7a2bc2f target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8e367e1 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xc18730e6 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1bb74e0 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2790c67 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc2f50da6 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5ab9a1f target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7c43c2a target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xc909cd1c transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc272e9a target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdb7fc35 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xd00b3cf9 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdea15da9 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3afb454 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe659d445 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe68eb967 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xe88cc639 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8da665e target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf46e9d58 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7360859 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x111eefed acpi_parse_art +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0xf0f9fe0d acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x2890258e usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xcf8e54e9 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x01344965 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x27d39d84 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x333b1410 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3e7dea3c usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4311753d usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x88912355 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9a4fba56 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9c387a30 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb309711e usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb38a1801 usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbbc72646 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdb090cbe usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe3dc7321 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe696021f usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x6fdfb4e0 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xaf06144a usb_serial_resume +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x172a603c mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x2172e7d3 mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x38b8c249 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x4090bfe0 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x49624667 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x62173e25 mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x86a48d2e mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x8a3cd624 mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x9f0b400c mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xb0d7def7 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xb4b07ba1 mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xd57a5d48 mdev_set_drvdata +EXPORT_SYMBOL drivers/vhost/vhost 0x6c92c6fd vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vhost 0xeb486fe0 vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3ecc1eea vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b6a6e23 vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6d95262b vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8d40c6f4 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xf6784994 vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x3dbdde00 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x50d90285 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc78b7177 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf6c40e42 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x08ee8bdf svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x11b09e20 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x34381954 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x3a44c45b svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x983e434d svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xebf05f55 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfac0119b svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xc05e853a sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xc468f786 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x907c496a sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x56713c5c cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x9976c399 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5305b545 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6360d727 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6cab8f9b matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2a98aa78 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x56ea0cac matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcc0509c8 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xce94beb5 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x58d8c765 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xe8f5c302 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x22ad19f0 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x36c46b60 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x54962760 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xaadb8ffc matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x74080da2 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xfec9730b matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4beda39b matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xa1d8ed43 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb8c11ed3 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc10fd7fa matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xff9a5b70 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x1428306e vbg_hgcm_connect +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x260590c0 vbg_err +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x4573d924 vbg_get_gdev +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x50398ea5 vbg_put_gdev +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x569b312f vbg_info +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x70cdcbfd vbg_warn +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x9c072aa8 vbg_status_code_to_errno +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0xdcbc4616 vbg_hgcm_call +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0xe6a67a08 vbg_hgcm_disconnect +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x12784236 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xcb8100d6 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x62289b95 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x71ab3cef w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x444b16df w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x72ebd469 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x83a13f2c w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xc259ac3d w1_remove_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x75bec08d iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc8930f32 iTCO_vendor_pre_start +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xed2a3373 iTCO_vendorsupport +EXPORT_SYMBOL fs/fscache/fscache 0x025c7f33 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0a91dcf1 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x0b1ef4c8 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1e6d950e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x1f4665ed __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x20f65d56 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x2db5d29e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x35d0b7cb fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x41e478f9 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x43aff1ad __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x4b05e5a2 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5b37f639 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6042e525 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x69883921 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6acefa42 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x73f4d21e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7ad0133b fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8a4bb3e1 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8d1b4e98 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa5482065 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xa6a84b91 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xae298d83 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb135793e fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xc37f73aa __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xc3c6acec __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xc83d49da fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xd0094d52 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd042efb6 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xd56fad52 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xd6d39a56 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xd733c316 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xdc747315 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xdfc9a587 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xec3b3bb6 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xef2268f9 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xf18c72d8 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xf330493d fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xfc3ddc4b __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfc5d52e2 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xfdcd663c fscache_enqueue_operation +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x19250cce qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x54a9b3cd qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0x6b554b08 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x80c3ee90 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x841a6383 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfbd82927 qtree_write_dquot +EXPORT_SYMBOL lib/crc-itu-t 0x09a34a2b crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba55d23e crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xe2aae5cc crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x7bcc24fd blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xa3cefaa0 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x755f4ba3 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x147c3f2e chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x1c679fe2 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x37b34b92 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5b19e187 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbaf4d923 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xce15a526 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x1b11832a lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x8b8fe44a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x38f7b6e0 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x93ff008c LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x9cef495b LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0x679e8cc2 objagg_create +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x3605035c lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x851ad098 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x91e217e1 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xaf1009ab lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xc1aab901 lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0xcedc7274 lowpan_register_netdev +EXPORT_SYMBOL net/802/p8022 0x1b95b646 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x58392423 register_8022_client +EXPORT_SYMBOL net/802/psnap 0x9cf43764 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xa563f7bc register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00a749aa p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x010f940a p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x08fdb857 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x1430723c p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x1a689687 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x1e2cae92 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x211fd70b p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x26047138 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2a294b0b p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x3ce69cf2 p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f688c36 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x41ce9823 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4371639d p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4bb67742 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x53e4fd69 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x60c698b3 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x61a8cdf8 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x62964144 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x697e6dfb p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x6ca4c5b7 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x760616c8 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x790bd6ed p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7d083451 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x812a970d v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x95bd8f96 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x984c5e73 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0x9d14c0a1 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9d37a525 p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0x9e4fbe09 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xa3d542bf p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xa9470b97 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xaaf04e27 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xb79f25fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0xb7aea567 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xb7fbb479 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xbe690854 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xc4024d8f p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xc44722f7 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xc5ee1b1b p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd244c272 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xd65b08cb p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdf250eb7 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xdf3384b8 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe2fd963e p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe4d051f1 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xef1bd833 p9_client_unlinkat +EXPORT_SYMBOL net/appletalk/appletalk 0x3dca8c44 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x414bf4ad atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xd11339d5 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xd1b626b7 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x0473d6ff atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x07d80dbb atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x0acaf95e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x439e7bdf atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x44c6e633 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x6a69c073 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x7a27b823 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x90cd1e3a vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x98ebc991 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa2e4b12d atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xabff7175 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xb2fff00e atm_charge +EXPORT_SYMBOL net/atm/atm 0xdd2a6811 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf08a90c1 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3b0dc0e3 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x3eaa6f74 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x57f864a7 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x65e4fc30 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x94dc3097 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x99f96344 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xaf9441e7 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0xff1cce6c ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x046473c1 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x167aa6bc bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19d4b16e bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f705fb8 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2058a34b hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25c8bb0b hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27410a63 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x281359f0 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c940673 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2df1b5f1 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3387028d hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3397aa7d hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38fb382e hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47e37c89 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a4a37a7 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e2afa04 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x64549379 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6c5cf8ae __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72fa56dd __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ce82538 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8172deaa bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b30e99c hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8ecbaeb9 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fabe362 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9d03167 hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb07150e8 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3b16340 __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6294c22 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xba59a53c l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xba690a73 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2c44c3b hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc6f935cd hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc7a183a0 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf01f2b0 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2ae1e3f hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd758fccf hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdec2c1b3 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdf476542 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe14b9f89 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeaa81127 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xedfc59b2 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf4cbdb67 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf7041117 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf99c2758 l2cap_unregister_user +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x555941e1 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x6fc3f62e ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xdc26049c ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4c302d31 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x58f8d661 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x770cdaf1 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x84343d7f cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa4aa0c71 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x173e3a3d can_proto_unregister +EXPORT_SYMBOL net/can/can 0x40bd06c2 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x6ecd105a can_proto_register +EXPORT_SYMBOL net/can/can 0x7290e13b can_rx_register +EXPORT_SYMBOL net/can/can 0xfdd3e185 can_sock_destruct +EXPORT_SYMBOL net/can/can 0xffb684ef can_send +EXPORT_SYMBOL net/ceph/libceph 0x04326507 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x061baf5d __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x086f2d1a ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0x0bfff7a9 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x11dbdfa5 ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x1258aee6 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x13eb2188 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x18d623c2 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x1919f97b ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x19c97ee9 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0x1bb9e4f3 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x20c8c19f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x2494626d ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x26be0e7f osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x27140bfd ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x28ed2b96 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x29175105 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2f1e5ae3 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x30e7b833 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x382adde1 ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0x38666b5c ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x389bc2d9 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x39f5dd99 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3ce4b76d ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x439924ec ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0x46555f2e ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46b4d6a7 ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0x47e94568 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4b32f726 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x4ee3aeea ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x4ff30c94 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0x50446256 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x57ec63bc osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x58bca734 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x59a89b39 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5b0ce8df ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5e0ec6a3 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5fad39d1 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x61eec02e ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x62e7976a ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x653cd8fa osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x6603935a ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6c6e0d3f osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x6ddb2e15 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x72ae665b ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x79775fcf ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x7b485f16 ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x7ca2cd54 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x7e8d3a61 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x82cc53bc osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x86526b00 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x882ec72c ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x9177c1cf ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x9236b767 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x993e188b ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x9b2f3478 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9c408d64 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9ec01b3e ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa826c53c ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0xa9626204 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0xa9637a20 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xaa66261f ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xab0845e8 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xab5fc625 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaf66fe8d osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb004baa7 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0xb3f29ad3 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb7c7acdb ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0xb97a2562 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbdd3559a ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xbecf87fe ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xbf563fcb ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0xc0780858 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc1fe153d ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0xc29d1f8c ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xc542fd44 ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0xc76dda54 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xc954dc4b ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc95b3515 ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcb20dabf ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xcc8f6d62 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xd2507141 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd27c606f ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xd2f1eb7c ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd5b8bde1 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0xd7aa1742 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd8821d6b ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0xd8e3caa9 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xde8f8c0b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xdf09d3dc ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe0b57f4b ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xe30c903f osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe414ba67 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xe97ced59 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xebfb9142 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xef65f2f5 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xf3d400eb osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xf3f57ac7 ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0xf43accac ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xf647c56b ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xf6ae945a ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xf8950cc2 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xf8bb8016 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xf8de71e7 ceph_monc_renew_subs +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa0794759 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa45a818b dccp_req_err +EXPORT_SYMBOL net/dsa/dsa_core 0xc2542859 dsa_port_vid_add +EXPORT_SYMBOL net/dsa/dsa_core 0xcd094974 dsa_port_vid_del +EXPORT_SYMBOL net/ieee802154/ieee802154 0x02be1552 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3c2676ae wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x476ead74 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x519b2588 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9ca2dbbd wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb92aa168 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x308bc02b __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x8afd1791 __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xc4bca18d gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x233ffa46 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x73d921f3 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb83f37a5 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf536ff4d ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x795b25ed arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x82674b45 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xea32d11e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x09f1f81c ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x673c5ced ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb3ab8d66 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xba949869 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf66d8fd4 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x30dd9032 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xb64cfb34 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x4b841b51 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0e38c780 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x53f59a8d ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x61cd71fa ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x61d7b925 ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6b08b5c3 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa85c5f1f ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa9d2431b ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd1b4e843 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd43834cd ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x08b9f303 ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x605f15f5 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9029fe86 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xce71b194 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd0ddf686 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x427ae6f4 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xefcd49bb xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x88a1f5e6 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9151dcc8 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/l2tp/l2tp_core 0x1e9a50bf l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0xe61ca202 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x2ad351dc l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x12848674 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x181f174f lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x1da42092 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x31847cd9 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x8f80df02 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xd4186649 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe45b7b07 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xe802b770 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x0534621c llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x401269e2 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x48efa2d2 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6157725c llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x94f560ae llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x9971dd38 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xcd6812d6 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0a65f034 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x0be1d9b9 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x0dbbfd71 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x1456e80a ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x14aef00b ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x173f74a4 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x179cb948 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a4ee77b ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1c1e7de1 ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0x1e8beb93 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0x1ef5a148 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x2081bf6d ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x2613c709 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x263afd35 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x268b8530 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x27189d8f ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x2bc625aa ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2d945e86 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x2dec4e4a ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x2e418b93 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x33600cff ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0x36e1e2b0 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x3c769b17 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x3f65195b ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x45167a58 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x45226aeb ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x4538caad ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x46b58e1f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x48f6cb3b ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x4fc663a6 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x53304ea4 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x5909ebd9 ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x591ef239 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x6002ce4b ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0x6252c87f ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x63dc8d76 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x63f83733 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x658b8423 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x6b6cd81c ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x6d2f141c ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x71145e77 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x72a1a089 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x735da270 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x73608a28 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x745ed22b ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x79111dba wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7d442b73 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7f209e69 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0x8103a4f0 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x85671b1d ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x8662cf2c ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x8d51b92c ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x8e068fad __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x8fddca1e ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x922ce72e ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9300588e ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x954df480 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9aacbd69 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xa403f1b1 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0xa69e68a4 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa6fd2006 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xaa2d584e ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xabb7e6c2 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xabd088a0 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xac3ea49f ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xac99204f ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0xadddabb1 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xafd502be ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb37ff1b5 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xb5b4a698 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xb7f5471b ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xba9c0ea4 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xbaab5c4d ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0xbbd46ffb __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbe1a104f ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xbe6c1a6e ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbe7fa4f9 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xc07de948 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc280c67a ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xc30e5f5e ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc7243cb6 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcb6ccd38 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0xce4438c6 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xce9185f1 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xd4869216 ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0xd716300d __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdbdbbec2 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xdd0d5fd2 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xde5a0184 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xde748f50 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xdeb3fd2b ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xe6c3d88f ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xeedd0966 ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xf7e2a92b ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xfa968ab5 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac802154/mac802154 0x045f801e ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x3aa6400c ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x3b9a0bfd ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x3c57cfe9 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x513535e8 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xaf42ab8b ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xba4e03fd ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xcd96461f ieee802154_stop_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0b9c843c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1b6e8d03 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3b5cbab3 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x40050a6a unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4b9f2f07 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4e3bd907 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5383b379 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x81e735c5 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa47296de ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb45df430 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb76c1f53 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd31964c8 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe0e6df86 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe246b857 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfa7fe17f ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xc4d8efbc nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x773342b6 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xbfac220b __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xc10bbc96 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xce68472f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xeb873c92 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x3dab35ae xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x65e3d63f xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x748afbf2 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8cbd0ba5 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xc7c7a232 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xce09e5f7 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xda108d09 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xe1c2ae07 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfe7012cd xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x03b7557b nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x2eaa1ec0 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x329e16fd nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x3c711e45 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x3f16d837 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5163f398 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x5477f4b3 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x57b69fc3 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x7b86d635 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x9528319c nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xa11218a4 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xa5c86f3e nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xa6900a72 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb23e066e nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xb91db8ee nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xc2273f9e nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xc3579c13 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xcac50b7c nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xd8689c6d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xe211b835 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xfe243eed nfc_hci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x05bdd1a4 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x161a0d6e nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0x1c39d0be nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x20313d0d nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x215c9c64 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0x3853981f nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x3eb62154 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x4592d719 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x4821ff7f nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x4b31bce8 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x56556d02 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6f8c4349 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x8a203f24 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x8f11b708 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x91052ad9 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x9f143fb3 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa9e68ecd nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0xb026d82d nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xb887d339 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbd9245b5 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xbdafe13f nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xc5e75f65 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xc68c0ebb nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xc8636f62 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xce41a72c nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe230d99d nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xef814d6a nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0xefe6420d nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf490011d nci_recv_frame +EXPORT_SYMBOL net/nfc/nfc 0x06e7fb0b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x196cb509 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x220e26b6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2a271949 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x2e1dd0e4 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x305ce839 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x37130108 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x3a626003 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x4497d4d9 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x5d190506 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x60c2ef81 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x61d21b49 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6210f256 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x6f5f2e6b nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x783d706f nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x7ae2d1d6 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7c47cf4d nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x81c464ca nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xa96b3829 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xba0e651e nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xc1a48871 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xc9c82b58 nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0xe529775e nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xf3ec8c97 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xf935e17a nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x6c4075b8 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x92c5a8d8 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x95001c53 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xb8fffdb3 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x04315872 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x40e5eb75 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x8fca45f5 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xcb4c6724 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xd947db04 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xe73cb049 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xec170612 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xeff1e6e9 pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/rxrpc 0x0180c76e rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x0843670b rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1abf906c rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0x24c4aaf4 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x334cef65 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3e187d7f rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x517dc9ae rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5840b583 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5faf91ef rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6196754a rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x659956d4 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x65a3eedf rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0x761c9feb rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0x9c19b382 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa7d26726 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb23fbc58 rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd3773f0d rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xf7127fe2 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x4228940a sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x444dbc6d gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x931aa361 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xce764413 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x06cf77e5 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x35463112 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xec43fb09 svc_pool_stats_open +EXPORT_SYMBOL net/tipc/tipc 0x3cdac781 tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0x664661d6 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0x7ebb4681 tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0xb0fc0fd2 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tls/tls 0xc1ded5fe tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x2bc89034 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xd273dd6e wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x09546250 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x0bb52179 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x0ccbeedd cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x1012bd5b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x10a68450 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x13787f7c ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x140f3634 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x14ccfd94 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x17997f93 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x18c3be0a cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x1cf3026b cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1e9866a9 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x21627ab9 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x2175b3c8 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x264ead5a cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x28738e42 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x299c334a cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x29be902f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x29f1859e cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2a339144 cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x2d4468cc cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x2f57b5d4 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x2fd65ba6 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x35a3672f cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x36532d7f cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x38d4f4d1 cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x3951e36f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x43f5efcf cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0x44882a2d cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x49fd5b97 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x4baf0001 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0x4f0c06cf cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x58a77c8b ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x591321c9 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5b77ac32 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x61fe5cfc cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x67842bbd cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x69399c5d cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6aef7179 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x70d5df19 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x71c98c7f cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x78e34303 cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7bb69ba6 cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7c7bfaaa cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7e9beb13 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x8233c1cb cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x826bef8d wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x83d5c6c7 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x87d4e766 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x87e09b06 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x8a641294 cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x8f4037f9 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x96747270 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0xa1b542f2 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa264bafd cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xa37c20ee cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa85d350b cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa88b5c84 cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa8b9e10b cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xaa006fbe cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xad408245 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb1aeed29 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb5345732 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xb9bcfa04 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xc49fc3ed cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xc4df03fd cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xc79f1bed cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xcb134fcd cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xd17d89cd cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xd4f6da1b ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd61584cf wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xd6333060 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd7062b1e cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0xd83aa9c9 regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xd9d14206 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xdaf0e540 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xdb13f9fc __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd0ec52f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xe1101d03 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xe17097a9 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe89da6f0 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xee73fab5 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeea34391 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xf247f060 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xf36fd888 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf5f6b2a6 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf852b320 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf977c404 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf9ae25d1 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf9bffdd1 cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xfaabc2fa cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xfd138975 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfe38d2e1 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/cfg80211 0xff441db2 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/lib80211 0x5fc1e1b1 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x69f2d96b lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x795020cd lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xacd4eb1a lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb8c18c40 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc086e549 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x7267b5f2 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x0a5ebed1 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa23866ef snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa4b45782 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xbd502dc0 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe311d13a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x734e4fba snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7a3e0db5 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8150b379 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb8620ad8 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd70dbf6 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd935c83 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe9e6c50c snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xaaf22f4b snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x021db29c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x0e5e81cf snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x0f6b0919 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x13a046d5 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2ab4fbe0 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x31291fce snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x31ec4849 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x35c53af0 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a207617 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x3b9876b1 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x3e0b742c snd_device_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x570b9281 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x57fb0d47 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x5a3dec74 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x5b104912 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x6118ab18 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x61300851 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x62ac111a snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x6917b246 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x71fe1c96 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0x74f9b7f4 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x7d9dcca0 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x8a8a93a6 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x94a994fc snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9a6730ca snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x9d49ae9c snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa87d791f snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xb20e3396 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb56d841b snd_device_new +EXPORT_SYMBOL sound/core/snd 0xba65dd7c snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xbc205361 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xbecc7d0e snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xbf387107 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xc889e9d6 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0xcf412538 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xd1c600bd snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xddf2a230 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xdfb75f10 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0xdfec2c4a snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xe21e3b85 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xe472901b snd_device_register +EXPORT_SYMBOL sound/core/snd 0xeaec1467 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xed1ff5e8 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xede98ba9 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xef38aa30 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xef44a22c snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xfaacff88 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-compress 0xafe71e3b snd_compr_free_pages +EXPORT_SYMBOL sound/core/snd-compress 0xe12a53fa snd_compr_malloc_pages +EXPORT_SYMBOL sound/core/snd-hwdep 0x85649636 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x015e10ac snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0ab1a89b snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x0f347b49 __snd_pcm_lib_xfer +EXPORT_SYMBOL sound/core/snd-pcm 0x11eba48e snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL sound/core/snd-pcm 0x14bb45d9 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x17eaea8f snd_pcm_set_managed_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1961fb2e snd_pcm_create_iec958_consumer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x24e8ac1d snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x29251736 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x331bf473 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x33fc948c snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x354cc08e snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x383b64d9 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x424e914d _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x43302b24 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x43cb7f73 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x47851bcc snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5c926896 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x5e5424c4 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6179a17c snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x64831c81 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6771ef84 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69255f54 snd_pcm_hw_limit_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6a5c79c2 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x71054362 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x75870b9a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x76fc0553 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x7f34c625 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x89dc7bd5 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x8c03dd40 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x902dac5c snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x944ee81b snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL sound/core/snd-pcm 0x9cb40d36 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa37070e4 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa7c4080f snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc0a09dd0 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xc11f472a snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xc607d22c snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xc939170b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xcb36e532 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xcb72a695 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xdf431e34 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xe549fa97 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe9301ed2 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xefb08d91 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xfc229909 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xfd95b893 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x472acca3 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5a858805 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5dbb9516 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x69b9bbe2 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x883d729c snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9740da35 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x997a886f snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa31c9753 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xab57e86d snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xabbf0e2b snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbd341924 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xca53b4f3 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcdb2107d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe17d3377 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe9c8ffe7 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea29a104 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf30a5ee3 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf8f11155 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb33bd18 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb92d31d snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0xbdb5523f snd_seq_device_new +EXPORT_SYMBOL sound/core/snd-timer 0x305865b7 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x45cbde8e snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x5502639c snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x686be283 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x6dab1d10 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x71a8e44d snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x71c9a404 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xc18119eb snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xc44ec7ed snd_timer_instance_free +EXPORT_SYMBOL sound/core/snd-timer 0xc4f306b6 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xd918e536 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xdf7704f0 snd_timer_instance_new +EXPORT_SYMBOL sound/core/snd-timer 0xebea1d9f snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xf23aaa0e snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xf81488cb snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6a28c9e2 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x31aa8777 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3f39d2db snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x696bdf63 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8d94a61f snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac77bc09 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb0a8905f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb2004c57 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdb1ec429 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe02672ce snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3aeb3cc9 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3e8d7107 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x440728df snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x46b01e02 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4c38bea0 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7eb81e21 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9610cd6d snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xccaa7a08 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd907b027 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x00099b45 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x089771f8 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0fa14a75 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1679d472 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e0752f8 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x223f78b9 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27a2f149 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2ca821e2 cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2ed9374b avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x36481ddc amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3b9880a1 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c667d79 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4536cccb cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4553201b cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x45b40aab snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x513b757d fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54776695 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x58d9e824 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x67dfb232 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8afeba16 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8bc5d82c cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xae89c875 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbcc1c9e0 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc59fb769 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd51b2e63 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe907903f amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe9a12072 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xebe26170 cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf065b226 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0deca05 amdtp_stream_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x26b9da92 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x342bc502 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2ab1cb16 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3d3bdbde snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x457ffccb snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x495867cd snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x592d9969 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5ea5b07e snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x61fe1566 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6553cee8 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x29c84353 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x7b7ba941 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8cf157f9 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9bf080c9 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe10ec0a2 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf13abb47 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x7b0c34bc snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9009cdfc snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd94567e0 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf0992fd6 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x23aa08c4 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x5cb07532 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x41821c9b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4cef8008 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5b98bbed snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8cbe2339 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xae737d61 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc47497fc snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x089675dc snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1af4d578 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2ddae798 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x37e46940 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8fc66096 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9fc40c53 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1492a532 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x250149bd snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2f894214 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x36dbeb70 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x392ece2d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xad4652c5 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb15dc9a3 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc29b8a26 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd3ca11b1 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfe6d95aa snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13f4d409 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x21406cc3 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2835394b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x28f78a4f snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5a98132b snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7fd8339d snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8b60eb71 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9077082a snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9cde9c4e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9ea0fca8 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaa8120e6 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xac65a69d snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc015ff1a snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc407d925 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9b0b46c snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe9749f43 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xee8b80d5 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xbed1d3ab hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x051bf2a7 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x368acf3a snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6195722d snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x87c5a9ad snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8b3631db snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa4bab80b snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xadf62232 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb68df2fa snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfe96eb49 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1ed96dab snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x92465e5e snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb4f5a768 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1f0cec71 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2dc723d4 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3198f1d6 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x474e8595 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4ebddabb oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x50e1499b oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x58dfd931 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5a40be79 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x635afe9d oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6e87e771 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x70e2efc9 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x76652a51 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x784f541b oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7d99c1d6 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa16bf86a oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc70166bd oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9adc74b oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd2dc08f1 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd35d8428 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd931a573 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdd469543 oxygen_read8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8f078ebe snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x97f49e87 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb2bca4a2 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe2c303a5 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xed26bd3f snd_trident_start_voice +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x8e443c33 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0xd8e4f1be pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x152e97ce tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xe2bf3f2d tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x0f4821c4 aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x2c2ec78a aic32x4_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xc20c5ce8 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/snd-soc-core 0xaf23b787 snd_soc_alloc_ac97_component +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0d0d86ef snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0f3770cb sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x12e143d2 snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x160a603b snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x18eede7e snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x19995a33 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1b325f87 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1ca2e2d0 sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1d22a5ea sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x21b4db9a snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x25ac14a5 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x27ca601a snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x345aa53f snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x34752efd sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x34ddbae4 sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3cbb3114 sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3ec74ef4 sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x433fc0dd snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x46d46e9e snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x48c265bd snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5249ed0f sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x52d8f99f sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6037f05e snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x62bd479b snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6771f0a6 snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x731993e5 sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x733f0799 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8222fa09 snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x83b37e6a snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x88108b83 snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x99996bf8 snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9abe5773 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9ce9e15d snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa0e20211 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa9224f2b snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xab281a5f snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb17de5a6 snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb34467f0 snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc24b23ed snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc2a6896c snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcda14a56 snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfbdf545 snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfdc5f98 sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd65b88c6 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd8014aa9 snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xda65ac57 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xda701c96 snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdb309eb2 snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdbc29e06 snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xee0cb738 snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf2548ad9 snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf5e56930 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfa5b83e7 snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfe1b8b25 snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfe27c597 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soundcore 0x01891a0e sound_class +EXPORT_SYMBOL sound/soundcore 0x173356c2 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x4379d4e1 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8de9dfe7 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xbdd0ab41 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0102d872 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3353c529 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x39b0474c snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x89d7a066 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe622f6b4 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xed11d8cd snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x293ac667 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x34ac95ae snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x48f920c4 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7d95566f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x85659341 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97bb24f2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9db98086 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe2935f8c snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xdb7407ae __snd_usbmidi_create +EXPORT_SYMBOL ubuntu/hio/hio 0x0634485f ssd_set_otprotect +EXPORT_SYMBOL ubuntu/hio/hio 0x065109a3 ssd_register_event_notifier +EXPORT_SYMBOL ubuntu/hio/hio 0x15e0c6ec ssd_get_label +EXPORT_SYMBOL ubuntu/hio/hio 0x24c58393 ssd_get_pciaddr +EXPORT_SYMBOL ubuntu/hio/hio 0x28c47449 ssd_bm_status +EXPORT_SYMBOL ubuntu/hio/hio 0x56813db9 ssd_get_temperature +EXPORT_SYMBOL ubuntu/hio/hio 0x81bb5f81 ssd_unregister_event_notifier +EXPORT_SYMBOL ubuntu/hio/hio 0x8a684252 ssd_reset +EXPORT_SYMBOL ubuntu/hio/hio 0xf2c26db2 ssd_get_version +EXPORT_SYMBOL ubuntu/hio/hio 0xfe8097fb ssd_set_wmode +EXPORT_SYMBOL ubuntu/hio/hio 0xfe901c7e ssd_submit_pbio +EXPORT_SYMBOL vmlinux 0x0000453b no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0x001eece4 pci_get_slot +EXPORT_SYMBOL vmlinux 0x0025c29d flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x0053e2ca touch_buffer +EXPORT_SYMBOL vmlinux 0x006d2842 netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x006d9c0a get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x0076cf09 stream_open +EXPORT_SYMBOL vmlinux 0x009801cf d_instantiate_new +EXPORT_SYMBOL vmlinux 0x00a2ede0 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x00a4b044 amd_iommu_deactivate_guest_mode +EXPORT_SYMBOL vmlinux 0x00a5db75 mpage_writepage +EXPORT_SYMBOL vmlinux 0x00ae6aa1 param_ops_byte +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00cbd9b7 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x00ce8411 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x00d31162 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dbfa03 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x00e07efc mmc_can_erase +EXPORT_SYMBOL vmlinux 0x00e7ff6f register_netdev +EXPORT_SYMBOL vmlinux 0x00ee15d4 sock_edemux +EXPORT_SYMBOL vmlinux 0x00fcdd89 mpage_writepages +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x011b8da7 dquot_transfer +EXPORT_SYMBOL vmlinux 0x011ca083 convert_art_to_tsc +EXPORT_SYMBOL vmlinux 0x013f26ae dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0150cb3d blk_execute_rq +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015aa178 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x017b330d tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x017ed0aa md_finish_reshape +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x01b6865c xa_get_mark +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01c2a89d tcp_release_cb +EXPORT_SYMBOL vmlinux 0x01db9029 setattr_copy +EXPORT_SYMBOL vmlinux 0x01df3d5e tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x01e84445 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x0201e0d6 prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0215a233 __breadahead +EXPORT_SYMBOL vmlinux 0x0215ef48 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x0228925f iowrite64_hi_lo +EXPORT_SYMBOL vmlinux 0x02293ac3 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023cb756 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x023d1b90 wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0x02522ee9 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x0254e3e9 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x026b1cfe simple_get_link +EXPORT_SYMBOL vmlinux 0x02739d79 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027b4ede configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x02819236 kern_path +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x02c656b6 acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x0306e02c __alloc_disk_node +EXPORT_SYMBOL vmlinux 0x030a8dc2 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x030c4859 mmc_command_done +EXPORT_SYMBOL vmlinux 0x03144975 blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x032c2c4e inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033e8c1b pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x035c1a05 param_set_byte +EXPORT_SYMBOL vmlinux 0x03659d11 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037dc67f __invalidate_device +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x039d8e26 pin_user_pages +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040f87c9 qdisc_put +EXPORT_SYMBOL vmlinux 0x0416da24 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x0420b07f kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x04401cd0 mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x04474af1 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0454e17e genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x047b41a2 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x0484c6c4 acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x049d6b7c pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x049ed353 generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x04af47cd pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04d61ca5 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04dab7f8 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04ec1cc7 tcf_classify +EXPORT_SYMBOL vmlinux 0x04f99395 uart_register_driver +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05192e03 pci_find_bus +EXPORT_SYMBOL vmlinux 0x051d58e8 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x053345ee devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x05372332 netdev_err +EXPORT_SYMBOL vmlinux 0x05380a85 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x053c7e32 padata_stop +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x0558f037 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x055e77e8 jiffies_64 +EXPORT_SYMBOL vmlinux 0x0586d625 netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x05875fe3 pci_get_class +EXPORT_SYMBOL vmlinux 0x058fbe54 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x059a1c69 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x05b44dfa xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0x05c55af3 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x05cfbd21 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x05d9c744 tcf_block_put +EXPORT_SYMBOL vmlinux 0x05fcbc1f __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x060ba97c gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x060c5eed netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x0615359b tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0619503c __skb_ext_del +EXPORT_SYMBOL vmlinux 0x062784af pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x062f7bcd ip6_frag_init +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x06a86bc1 iowrite16 +EXPORT_SYMBOL vmlinux 0x06b6c604 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x06bd88b5 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x06c5f66f cdev_set_parent +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06d95ad7 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x06e16786 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x06efa04c misc_deregister +EXPORT_SYMBOL vmlinux 0x06fd8548 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x07002b6f icmp6_send +EXPORT_SYMBOL vmlinux 0x070424bc agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x07096892 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x0717f017 vc_resize +EXPORT_SYMBOL vmlinux 0x071eae17 d_alloc_name +EXPORT_SYMBOL vmlinux 0x072aa35c sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07381990 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0x0745a981 xa_erase +EXPORT_SYMBOL vmlinux 0x0749b55e vc_cons +EXPORT_SYMBOL vmlinux 0x0752efa7 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x07a454c7 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ceeac9 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x07dd74b2 input_inject_event +EXPORT_SYMBOL vmlinux 0x07e5b748 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x07e89622 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x080b1573 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x08158dc8 genphy_resume +EXPORT_SYMBOL vmlinux 0x08162c74 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x081e45fe make_bad_inode +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082da3ff dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x08366340 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x083e2cad nf_log_trace +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08423f3c mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0x085135df mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x088f08bb nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x089fbc5f crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x08be823d ptp_clock_index +EXPORT_SYMBOL vmlinux 0x08c70b7e kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x08e502cf phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x091f0933 security_path_unlink +EXPORT_SYMBOL vmlinux 0x092e26bf acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x092f5e22 flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0x093712e5 acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x093b2a66 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x094038d4 get_tz_trend +EXPORT_SYMBOL vmlinux 0x0942721c security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0944c43f node_states +EXPORT_SYMBOL vmlinux 0x09460b11 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x0961fc08 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x09682235 down_timeout +EXPORT_SYMBOL vmlinux 0x09713112 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097af021 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x097cbbab mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x097f6ea9 ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x09877c98 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09919f97 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x09a3fd49 __find_get_block +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cbdca5 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09da0ba4 xa_set_mark +EXPORT_SYMBOL vmlinux 0x09e3c2f6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x09e42164 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x0a064745 generic_listxattr +EXPORT_SYMBOL vmlinux 0x0a0ebc08 __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x0a156bf9 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a1e5c74 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x0a291a83 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a320c6c pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x0a42932f tty_set_operations +EXPORT_SYMBOL vmlinux 0x0a4d0eee flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x0a502767 simple_fill_super +EXPORT_SYMBOL vmlinux 0x0a5c5d1f register_netdevice +EXPORT_SYMBOL vmlinux 0x0a5d7114 import_iovec +EXPORT_SYMBOL vmlinux 0x0a68c0a4 devfreq_update_status +EXPORT_SYMBOL vmlinux 0x0a6d326d alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x0a7295da netdev_change_features +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a8fdfe8 try_module_get +EXPORT_SYMBOL vmlinux 0x0a98ecdd inode_set_bytes +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0ab2255b mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x0ab634cf __skb_recv_udp +EXPORT_SYMBOL vmlinux 0x0aceac46 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad10eb8 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x0adbd3e9 bd_set_size +EXPORT_SYMBOL vmlinux 0x0af20eae down_read_interruptible +EXPORT_SYMBOL vmlinux 0x0afc7d40 skb_push +EXPORT_SYMBOL vmlinux 0x0b000546 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x0b19c0e3 kernel_write +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b26b8c8 acpi_run_osc +EXPORT_SYMBOL vmlinux 0x0b290ada dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b30f0be set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0b3ac53e clk_add_alias +EXPORT_SYMBOL vmlinux 0x0b3f5950 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x0b532ac2 pipe_lock +EXPORT_SYMBOL vmlinux 0x0b57389d udplite_prot +EXPORT_SYMBOL vmlinux 0x0b637410 cr4_update_irqsoff +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0ba41b82 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be4b4ba security_sk_clone +EXPORT_SYMBOL vmlinux 0x0bf3b907 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0x0c105f9c scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c33f396 get_phy_device +EXPORT_SYMBOL vmlinux 0x0c38a2aa __check_sticky +EXPORT_SYMBOL vmlinux 0x0c38f935 pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x0c4ec478 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x0c5f179a agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x0c671f49 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c87aa92 blk_queue_split +EXPORT_SYMBOL vmlinux 0x0c9a8bb1 ipmr_rule_default +EXPORT_SYMBOL vmlinux 0x0c9f77d9 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x0ca63cb2 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0x0ccc9811 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x0cda564d dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x0ce13244 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0cf15511 skb_store_bits +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d3bf602 udp_skb_destructor +EXPORT_SYMBOL vmlinux 0x0d48cffb vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x0d4d403c end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d7fa8bb generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x0d90d573 dev_mc_del +EXPORT_SYMBOL vmlinux 0x0d9d0c14 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x0d9dcbc8 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x0daf9fee get_tree_bdev +EXPORT_SYMBOL vmlinux 0x0db694d5 genphy_suspend +EXPORT_SYMBOL vmlinux 0x0dcbe840 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x0df9154b __netif_schedule +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e1de831 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x0e1e52bb flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x0e23b37f alloc_cpumask_var_node +EXPORT_SYMBOL vmlinux 0x0e27a2dd ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0x0e3c1b0a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x0e41d2c7 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x0e726576 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor +EXPORT_SYMBOL vmlinux 0x0e780017 iommu_put_dma_cookie +EXPORT_SYMBOL vmlinux 0x0e9208f2 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x0e924440 fget +EXPORT_SYMBOL vmlinux 0x0ebd6aa2 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0f05c7b8 __x86_indirect_thunk_r15 +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f37ca89 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x0f433645 tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0x0f4a5bed dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x0f5546b3 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x0f5d4167 watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x0f61e0ab skb_tx_error +EXPORT_SYMBOL vmlinux 0x0f63957a elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x0f6c5f2e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x0f6d07d4 input_register_device +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f8caa70 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x0f97dd0d blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb36fdf rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0x0fb8a4c4 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x0fb9271c sock_recvmsg +EXPORT_SYMBOL vmlinux 0x0fc07eb3 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x0fc794f3 mmc_free_host +EXPORT_SYMBOL vmlinux 0x0fcb0363 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x0fd28dca ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0ff80f59 zalloc_cpumask_var +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x1002f966 rtc_add_group +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x102bed66 cpu_info +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x104c456e set_wb_congested +EXPORT_SYMBOL vmlinux 0x1057a279 bsearch +EXPORT_SYMBOL vmlinux 0x10593de0 napi_complete_done +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x1078c5a5 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10817ddc init_special_inode +EXPORT_SYMBOL vmlinux 0x10b3cfe2 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x10bf91bb blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x10c064d0 finish_no_open +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10cdceda netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10de5848 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x10fcaa2f ppp_channel_index +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110ccdd5 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x115c2b89 d_path +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1166eff1 vme_init_bridge +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11aade78 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0x11b054fa phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x11b37121 reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0x11b8601d netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x11b86f2d __x86_retpoline_rbp +EXPORT_SYMBOL vmlinux 0x11d64668 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x1218b9d9 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x121c0291 sync_inode +EXPORT_SYMBOL vmlinux 0x1251d8d6 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x12586cd5 pci_save_state +EXPORT_SYMBOL vmlinux 0x125b93ce security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x12600d6a md_write_end +EXPORT_SYMBOL vmlinux 0x126f7b00 netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0x1278221d ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x1289b5dd dquot_quota_on +EXPORT_SYMBOL vmlinux 0x129ace2d i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x12a07158 md_write_inc +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a84243 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x12c7915f udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12dea5ca compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x12df3888 param_ops_bint +EXPORT_SYMBOL vmlinux 0x12e26376 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12f85137 fc_mount +EXPORT_SYMBOL vmlinux 0x12ffd3e8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x1305be47 freeze_super +EXPORT_SYMBOL vmlinux 0x130a2a85 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x130afd75 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x13162eb9 dst_destroy +EXPORT_SYMBOL vmlinux 0x131a6146 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13256741 phy_init_eee +EXPORT_SYMBOL vmlinux 0x132d9b16 scsi_device_get +EXPORT_SYMBOL vmlinux 0x1344d7e6 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x1346ccd6 lookup_one_len +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x134ce9ff ex_handler_clear_fs +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x1389619c __max_die_per_package +EXPORT_SYMBOL vmlinux 0x139643b3 mmc_release_host +EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x13a4f52d t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x13ab4586 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x13b9a98b of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0x13bb3e08 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x13c33007 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x14022b57 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x140707bd inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x141271bf acpi_dev_found +EXPORT_SYMBOL vmlinux 0x1428e4f0 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x145e38d6 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x14612408 cdrom_open +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x1478aeee generic_write_end +EXPORT_SYMBOL vmlinux 0x147d8c4d napi_gro_receive +EXPORT_SYMBOL vmlinux 0x14915a1e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x14964ce0 md_error +EXPORT_SYMBOL vmlinux 0x14aa757a csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x14c4ca7e qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14d61cce dec_node_page_state +EXPORT_SYMBOL vmlinux 0x14e6dbd4 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x14faf9c9 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x14fe4649 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x14ffa9e1 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1508935d bh_submit_read +EXPORT_SYMBOL vmlinux 0x150e3657 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x15174fde nd_integrity_init +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x1546dd22 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15522a3e __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x155d3eb2 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x155e9a68 flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0x15613649 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x15766e1f kernel_getpeername +EXPORT_SYMBOL vmlinux 0x1582139d registered_fb +EXPORT_SYMBOL vmlinux 0x1585291a generic_delete_inode +EXPORT_SYMBOL vmlinux 0x159a6b05 sock_create_lite +EXPORT_SYMBOL vmlinux 0x15a03ea1 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x15ba50a6 jiffies +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c65716 sock_init_data +EXPORT_SYMBOL vmlinux 0x15c85de3 mempool_init +EXPORT_SYMBOL vmlinux 0x15e919de netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x15e9d069 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x15eb597b phy_start +EXPORT_SYMBOL vmlinux 0x15f20a10 __ps2_command +EXPORT_SYMBOL vmlinux 0x15f7983f __x86_retpoline_r13 +EXPORT_SYMBOL vmlinux 0x160cb45e __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x16126b85 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x1612a5d5 is_acpi_data_node +EXPORT_SYMBOL vmlinux 0x161f1482 set_cached_acl +EXPORT_SYMBOL vmlinux 0x16286538 iowrite64be_lo_hi +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x162a1445 blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0x16301b34 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x165aad23 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x166ac531 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x1673973a default_llseek +EXPORT_SYMBOL vmlinux 0x16778d54 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x16a7bf6d proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x16ac7e68 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x16c94c7e netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x16cdc340 acpi_get_table +EXPORT_SYMBOL vmlinux 0x16d07746 fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x16dee44d dma_fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e2edf9 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x16f31dce ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x17068f4a fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x170ddf79 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0x171e89ad genphy_update_link +EXPORT_SYMBOL vmlinux 0x1727dc44 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x173ef88a sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x17557978 genl_register_family +EXPORT_SYMBOL vmlinux 0x175e33fb dma_spin_lock +EXPORT_SYMBOL vmlinux 0x175ee3b7 pci_restore_state +EXPORT_SYMBOL vmlinux 0x1765ea1f __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x1769fc76 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x1773fc60 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x1781326a pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x178539c6 register_gifconf +EXPORT_SYMBOL vmlinux 0x1792baec dst_alloc +EXPORT_SYMBOL vmlinux 0x17be68ca acpi_clear_event +EXPORT_SYMBOL vmlinux 0x17c7fd11 ilookup5 +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f38e68 sk_free +EXPORT_SYMBOL vmlinux 0x17fdb10d lru_cache_add +EXPORT_SYMBOL vmlinux 0x18089986 eth_header_cache +EXPORT_SYMBOL vmlinux 0x180b83d7 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x1836de90 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x18372c7d kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x18579948 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x185bf1c1 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x1865a496 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x1867ebec fd_install +EXPORT_SYMBOL vmlinux 0x187a4ecd __tracepoint_read_msr +EXPORT_SYMBOL vmlinux 0x187de5de dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x18888d00 downgrade_write +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x18910229 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0x189531d1 tty_vhangup +EXPORT_SYMBOL vmlinux 0x18a822d0 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x18a829df dquot_operations +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18da9c53 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x18e195a0 blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0x18e1f0c4 tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0x18e554ed netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18efd028 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x18f0dc72 cdev_init +EXPORT_SYMBOL vmlinux 0x18f77854 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x18f81146 tcp_seq_next +EXPORT_SYMBOL vmlinux 0x192fe8ae reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x193580c6 agp_free_memory +EXPORT_SYMBOL vmlinux 0x1948d8c4 empty_aops +EXPORT_SYMBOL vmlinux 0x194ba2a0 rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x1953c958 mempool_create +EXPORT_SYMBOL vmlinux 0x19567d06 vfio_info_cap_shift +EXPORT_SYMBOL vmlinux 0x1960720b path_nosuid +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x19864441 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a57b8d i2c_transfer +EXPORT_SYMBOL vmlinux 0x19ad84f8 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x19afb901 proc_set_user +EXPORT_SYMBOL vmlinux 0x19b1b692 tcf_em_register +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c48f0b cdev_add +EXPORT_SYMBOL vmlinux 0x19d6ce26 proc_create_data +EXPORT_SYMBOL vmlinux 0x19df99b9 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x19e650dd tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0x19ee9edc sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x1a107de2 ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0x1a13e3e1 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a2d49c9 register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x1a3c33e1 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x1a3f9400 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1a4254b0 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x1a436abe __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a6127f4 alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a67da7b keyring_search +EXPORT_SYMBOL vmlinux 0x1a74d0ca param_ops_charp +EXPORT_SYMBOL vmlinux 0x1a7cb0ff eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0x1a872770 eth_header +EXPORT_SYMBOL vmlinux 0x1a887aca submit_bio_wait +EXPORT_SYMBOL vmlinux 0x1a89aa2e mount_subtree +EXPORT_SYMBOL vmlinux 0x1a8fb217 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0x1a928195 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL vmlinux 0x1abd9204 scsi_print_result +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ae13e3e dst_release +EXPORT_SYMBOL vmlinux 0x1afd727d skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b16b01b dm_get_device +EXPORT_SYMBOL vmlinux 0x1b16d59a phy_attached_print +EXPORT_SYMBOL vmlinux 0x1b1d4deb tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x1b1f38bf update_devfreq +EXPORT_SYMBOL vmlinux 0x1b215347 get_tree_nodev +EXPORT_SYMBOL vmlinux 0x1b295461 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x1b2d2217 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x1b2f844c kset_unregister +EXPORT_SYMBOL vmlinux 0x1b48012d import_single_range +EXPORT_SYMBOL vmlinux 0x1b50f4b3 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x1b597b7a swake_up_all +EXPORT_SYMBOL vmlinux 0x1b5d5e00 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b63d6e4 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0x1b6ff7cf qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9404e7 generic_fadvise +EXPORT_SYMBOL vmlinux 0x1b95e849 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1b9671f8 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x1ba2a831 serio_interrupt +EXPORT_SYMBOL vmlinux 0x1ba42f03 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x1bb45fe2 __frontswap_load +EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc +EXPORT_SYMBOL vmlinux 0x1bb865be input_set_abs_params +EXPORT_SYMBOL vmlinux 0x1bd09d46 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x1bd55070 netdev_state_change +EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent +EXPORT_SYMBOL vmlinux 0x1be57c14 nobh_write_end +EXPORT_SYMBOL vmlinux 0x1bfd8bc6 fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x1c1220c9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x1c1b9f8e _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1c2784f6 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c58427f acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x1c6f9501 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x1c74ce24 dst_dev_put +EXPORT_SYMBOL vmlinux 0x1c8615b5 generic_file_open +EXPORT_SYMBOL vmlinux 0x1ca5783d cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x1ca62b1f __inc_node_page_state +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cc319a0 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x1cc8e120 input_free_device +EXPORT_SYMBOL vmlinux 0x1cd8438b pxm_to_node +EXPORT_SYMBOL vmlinux 0x1cdbfd4d vfs_llseek +EXPORT_SYMBOL vmlinux 0x1cf1823a pci_pme_active +EXPORT_SYMBOL vmlinux 0x1cfc18d2 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d0958ad try_to_release_page +EXPORT_SYMBOL vmlinux 0x1d154b47 vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0x1d19f77b physical_mask +EXPORT_SYMBOL vmlinux 0x1d1abdf0 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x1d24c881 ___ratelimit +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d314b95 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x1d40b6f3 idr_for_each +EXPORT_SYMBOL vmlinux 0x1d41af77 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x1d424bca blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x1d5f4b44 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d7ac45d map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x1d982d73 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc2e24e zap_page_range +EXPORT_SYMBOL vmlinux 0x1dc2e990 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1de7987f iget5_locked +EXPORT_SYMBOL vmlinux 0x1debfada __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x1df63e88 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e0cd7fe acpi_detach_data +EXPORT_SYMBOL vmlinux 0x1e107fd3 skb_append +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e320373 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x1e5c4f3c set_posix_acl +EXPORT_SYMBOL vmlinux 0x1e62643b skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e925c37 inet6_release +EXPORT_SYMBOL vmlinux 0x1e9afd64 bio_endio +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1e9fc964 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x1eb04443 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ed62c89 logfc +EXPORT_SYMBOL vmlinux 0x1ed8b599 __x86_indirect_thunk_r8 +EXPORT_SYMBOL vmlinux 0x1ed94bf4 fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1edcfbee netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x1ede214c jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x1f03912b ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0x1f08b959 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x1f11396f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x1f439498 rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x1f44a624 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x1f557414 gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x1f601a73 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x1f688259 param_get_ushort +EXPORT_SYMBOL vmlinux 0x1f6a851b devm_memremap +EXPORT_SYMBOL vmlinux 0x1f780667 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1f7f320c free_buffer_head +EXPORT_SYMBOL vmlinux 0x1faaead9 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x1facdfa4 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1fb3250e jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc0cc7c intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0x1fd0317d security_sock_graft +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ff707d7 rproc_alloc +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20091609 mmc_erase +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200ccf95 sock_i_ino +EXPORT_SYMBOL vmlinux 0x2021d527 release_pages +EXPORT_SYMBOL vmlinux 0x202246d0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x204128da skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x20463df4 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204bd979 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x204caf88 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x20513ff7 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x20600430 seg6_push_hmac +EXPORT_SYMBOL vmlinux 0x2060bb78 del_gendisk +EXPORT_SYMBOL vmlinux 0x2065b6e5 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075cc07 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x207a7312 dcb_setapp +EXPORT_SYMBOL vmlinux 0x2096d0cc skb_free_datagram +EXPORT_SYMBOL vmlinux 0x209714b4 follow_down +EXPORT_SYMBOL vmlinux 0x209e0581 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x20a1b519 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x20a1c8d5 get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ba4f3e rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0x20c423e4 dev_addr_add +EXPORT_SYMBOL vmlinux 0x20cbb30a __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20da61bc xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0x20dd454a inode_io_list_del +EXPORT_SYMBOL vmlinux 0x20e32c75 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x20ea8abe inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ffd920 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x2102160d soft_cursor +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x211130c1 alloc_cpumask_var +EXPORT_SYMBOL vmlinux 0x212ced48 key_invalidate +EXPORT_SYMBOL vmlinux 0x2132e38e page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213c3bce key_reject_and_link +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x2142178f cdev_del +EXPORT_SYMBOL vmlinux 0x21541248 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x2155d96d follow_pfn +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x215b6b96 agp_copy_info +EXPORT_SYMBOL vmlinux 0x215c156e eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x215f07a7 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x216a6b0f watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x21718d7e mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x2177bd71 acpi_disable_event +EXPORT_SYMBOL vmlinux 0x2177f9b1 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x217bff2b tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x21859efd inet_listen +EXPORT_SYMBOL vmlinux 0x218c06bd dmam_pool_create +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x218ee1d0 pid_task +EXPORT_SYMBOL vmlinux 0x21901afc fiemap_prep +EXPORT_SYMBOL vmlinux 0x21ae9763 nf_log_set +EXPORT_SYMBOL vmlinux 0x21b7fe61 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21d6de25 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21ec1e9a scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x21ee8a35 skb_ext_add +EXPORT_SYMBOL vmlinux 0x21ef374c try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x2206af2c padata_do_parallel +EXPORT_SYMBOL vmlinux 0x221ae466 vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0x222ca8b2 phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x222db02d devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2234ca51 acpi_match_platform_list +EXPORT_SYMBOL vmlinux 0x2274b0ed page_pool_put_page +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22787d6c current_in_userns +EXPORT_SYMBOL vmlinux 0x227de6b4 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x22974b96 finalize_exec +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c4f75f tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x22ce65b7 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x22d345db unlock_rename +EXPORT_SYMBOL vmlinux 0x22de2d88 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0x22de4931 amd_iommu_register_ga_log_notifier +EXPORT_SYMBOL vmlinux 0x22e83e8c config_item_set_name +EXPORT_SYMBOL vmlinux 0x22f206df lock_rename +EXPORT_SYMBOL vmlinux 0x22ffcd6e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x2306b8df unlock_buffer +EXPORT_SYMBOL vmlinux 0x230953ad pipe_unlock +EXPORT_SYMBOL vmlinux 0x2309ed84 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0x23232484 mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x23428105 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x23610424 __block_write_begin +EXPORT_SYMBOL vmlinux 0x2371e1a9 d_alloc +EXPORT_SYMBOL vmlinux 0x23815ab2 inet_shutdown +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x23a00da5 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cabbb1 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x23ea26b1 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23f09bc9 napi_get_frags +EXPORT_SYMBOL vmlinux 0x23f214f7 amd_iommu_pc_get_reg +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x245110d4 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x24755866 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x24776aad xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2496817e d_find_any_alias +EXPORT_SYMBOL vmlinux 0x24a8a4d3 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x24acd979 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x24b42fda dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x24c6d161 task_work_add +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24d2d700 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x24d94363 set_page_dirty +EXPORT_SYMBOL vmlinux 0x24e8a635 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x24f20d5e genphy_read_status +EXPORT_SYMBOL vmlinux 0x24fa0c54 sock_from_file +EXPORT_SYMBOL vmlinux 0x2503c6da vfs_create +EXPORT_SYMBOL vmlinux 0x2524ba17 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252cfa4a scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x254663cf tcp_close +EXPORT_SYMBOL vmlinux 0x2569c63f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25869b8b vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x258ff05e netif_carrier_on +EXPORT_SYMBOL vmlinux 0x25974000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x259a03b6 dev_mc_init +EXPORT_SYMBOL vmlinux 0x259d1d27 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x25b04e35 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x25b50e43 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0x25b5ff14 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x25c1551d sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x25d22a47 xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x25d2650f __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x25d2dbde i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x25db1577 do_trace_write_msr +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f622c6 set_binfmt +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x260a31c5 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x260caef7 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x260e438d flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x26132085 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x262153c2 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c3152 bcmp +EXPORT_SYMBOL vmlinux 0x263c4b30 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x263ed23b __x86_indirect_thunk_r12 +EXPORT_SYMBOL vmlinux 0x26598d57 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x265ecb20 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x266659e8 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x26698702 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x26728d1d tcp_filter +EXPORT_SYMBOL vmlinux 0x26787f34 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x2679169d read_cache_pages +EXPORT_SYMBOL vmlinux 0x26843233 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26cc73c3 complete_and_exit +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26f8f0b8 iowrite16be +EXPORT_SYMBOL vmlinux 0x26ffbaf8 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x270e782b skb_clone +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27237524 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x2739b602 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x2745130a __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x275454d3 dquot_drop +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x27810361 acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27834b83 inet_select_addr +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279be432 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27e61722 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x27ebd419 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x27f226ca mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x27ff4a4f flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x2804d8e2 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2833f577 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x2848564e flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x28536e36 __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x2854b72a n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x2862d416 vfs_setpos +EXPORT_SYMBOL vmlinux 0x286e48e9 __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x287636e7 phy_loopback +EXPORT_SYMBOL vmlinux 0x287d493d alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x28819259 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x2884e57b blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x28ab757c blk_integrity_register +EXPORT_SYMBOL vmlinux 0x28af1ebe is_nd_pfn +EXPORT_SYMBOL vmlinux 0x28b1cffd neigh_parms_release +EXPORT_SYMBOL vmlinux 0x28d92764 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x29029257 unpin_user_pages +EXPORT_SYMBOL vmlinux 0x2914ea2d ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x293c487d __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x293f9741 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x295af3c6 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x29622e2c tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0x296cb509 __xa_insert +EXPORT_SYMBOL vmlinux 0x296e81ee devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x29796c1f vme_master_mmap +EXPORT_SYMBOL vmlinux 0x297d2ea3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x298e3f3b __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x29989a79 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x299a50b0 generic_copy_file_range +EXPORT_SYMBOL vmlinux 0x29a8a331 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x29ad8e33 x86_hyper_type +EXPORT_SYMBOL vmlinux 0x29c37ac8 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x29c9ab52 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x29ccaa8a pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x2a077c4e put_cmsg +EXPORT_SYMBOL vmlinux 0x2a0d1320 vm_insert_page +EXPORT_SYMBOL vmlinux 0x2a20857e tcp_sendpage +EXPORT_SYMBOL vmlinux 0x2a20c308 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a39eb99 open_exec +EXPORT_SYMBOL vmlinux 0x2a3ae2d5 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x2a3dd257 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x2a449f46 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x2a4a5dab tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x2a519ef6 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x2a78c896 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x2a7b7f04 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x2a7f2e10 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x2a96a9e9 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2a9e875b clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0x2a9f3798 __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x2aa00e26 intel_scu_ipc_dev_update +EXPORT_SYMBOL vmlinux 0x2aa0843e mempool_resize +EXPORT_SYMBOL vmlinux 0x2aaae620 fsync_bdev +EXPORT_SYMBOL vmlinux 0x2ab7989d mutex_lock +EXPORT_SYMBOL vmlinux 0x2abc7f32 vfs_ioctl +EXPORT_SYMBOL vmlinux 0x2ac6e877 sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0x2ad656f5 fqdir_init +EXPORT_SYMBOL vmlinux 0x2af03f7c ip6_xmit +EXPORT_SYMBOL vmlinux 0x2b0993c7 __put_page +EXPORT_SYMBOL vmlinux 0x2b1e49b7 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x2b2c28df pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x2b38221c scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2b39bdf2 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x2b3e3083 __x86_retpoline_rdi +EXPORT_SYMBOL vmlinux 0x2b459703 eth_type_trans +EXPORT_SYMBOL vmlinux 0x2b56f056 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x2b59047d from_kgid_munged +EXPORT_SYMBOL vmlinux 0x2b593aa8 gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2b63068b kill_litter_super +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b6afa7a kill_anon_super +EXPORT_SYMBOL vmlinux 0x2b970767 get_amd_iommu +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba6290a del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x2bb6099e dq_data_lock +EXPORT_SYMBOL vmlinux 0x2bbf6ce1 unregister_console +EXPORT_SYMBOL vmlinux 0x2bc29e98 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x2bc77b57 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x2bd285d9 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0x2bd60ab9 acpi_reset +EXPORT_SYMBOL vmlinux 0x2be63086 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x2bf28be3 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x2c22ebd9 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c389518 nvm_end_io +EXPORT_SYMBOL vmlinux 0x2c3d197f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x2c42b2e6 finish_open +EXPORT_SYMBOL vmlinux 0x2c541e7b radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x2c59201a genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x2c9bb907 netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x2ca3039d param_set_copystring +EXPORT_SYMBOL vmlinux 0x2caf63d1 topology_phys_to_logical_die +EXPORT_SYMBOL vmlinux 0x2cbbec45 nd_device_notify +EXPORT_SYMBOL vmlinux 0x2cc80801 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2cdf87a1 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x2cef9f3a noop_llseek +EXPORT_SYMBOL vmlinux 0x2cf6d199 ll_rw_block +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d45b3b8 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d588db7 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x2d6e4799 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x2d73abd2 vfs_link +EXPORT_SYMBOL vmlinux 0x2d834411 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x2d8bac2e try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d9409f9 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2da2c5ba pci_iomap +EXPORT_SYMBOL vmlinux 0x2db3bc61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x2db3d320 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2db597e3 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x2dc3956f security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd81562 __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2df84450 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x2e02e027 pci_request_region +EXPORT_SYMBOL vmlinux 0x2e0b1deb dma_fence_get_status +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e312675 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x2e386c15 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x2e3bcce2 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e6964a9 inet_del_offload +EXPORT_SYMBOL vmlinux 0x2e73f138 __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0x2e8c70b7 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x2ea2c95c __x86_indirect_thunk_rax +EXPORT_SYMBOL vmlinux 0x2eacc65b pneigh_lookup +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2ecc756c mr_fill_mroute +EXPORT_SYMBOL vmlinux 0x2ed5a154 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x2edbeaf7 hex2bin +EXPORT_SYMBOL vmlinux 0x2ee27185 skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2ee66801 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x2eebb7e4 done_path_create +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f1cc46e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f495e48 seq_open +EXPORT_SYMBOL vmlinux 0x2f67c71e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2f9e45ea xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x2fb0f814 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd4e7f4 vme_slave_request +EXPORT_SYMBOL vmlinux 0x2fddea4b clear_inode +EXPORT_SYMBOL vmlinux 0x2fe15f17 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2feaa92f param_get_short +EXPORT_SYMBOL vmlinux 0x2feece1a pnp_possible_config +EXPORT_SYMBOL vmlinux 0x2ff76fbf tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x2ffc73b1 simple_statfs +EXPORT_SYMBOL vmlinux 0x30172f42 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x3022c8fc serio_close +EXPORT_SYMBOL vmlinux 0x303ca5a6 __put_cred +EXPORT_SYMBOL vmlinux 0x303ceee8 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x303d7fa8 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x305faa67 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3090f378 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a976c6 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30af45a1 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x30b67789 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x30babf7d simple_transaction_read +EXPORT_SYMBOL vmlinux 0x30bb0569 netlink_capable +EXPORT_SYMBOL vmlinux 0x30db2e3c dev_lstats_read +EXPORT_SYMBOL vmlinux 0x30dd1402 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x30de060a md_reload_sb +EXPORT_SYMBOL vmlinux 0x30dec207 __x86_retpoline_rcx +EXPORT_SYMBOL vmlinux 0x30e3c66b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e9168f blk_put_queue +EXPORT_SYMBOL vmlinux 0x3100cff9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310500af dm_register_target +EXPORT_SYMBOL vmlinux 0x3108e324 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0x31201c95 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x3125fa45 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x312d54b7 dev_set_alias +EXPORT_SYMBOL vmlinux 0x31303ef0 sock_efree +EXPORT_SYMBOL vmlinux 0x31364d4e amd_iommu_rlookup_table +EXPORT_SYMBOL vmlinux 0x3137e5f1 iov_iter_discard +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x315c1c05 register_console +EXPORT_SYMBOL vmlinux 0x317129db dma_dummy_ops +EXPORT_SYMBOL vmlinux 0x3171acd7 seq_puts +EXPORT_SYMBOL vmlinux 0x31727422 to_ndd +EXPORT_SYMBOL vmlinux 0x318d6fec mutex_is_locked +EXPORT_SYMBOL vmlinux 0x319d493d proc_dostring +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b566b3 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x31bd7c72 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x31c2349e set_trace_device +EXPORT_SYMBOL vmlinux 0x31c40e89 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x31c591ad dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0x31ccb0da rt6_lookup +EXPORT_SYMBOL vmlinux 0x31e530dc request_firmware +EXPORT_SYMBOL vmlinux 0x31edb1fe fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x31edf625 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x3213e80e nf_log_unset +EXPORT_SYMBOL vmlinux 0x3222296f free_task +EXPORT_SYMBOL vmlinux 0x32390894 dump_page +EXPORT_SYMBOL vmlinux 0x32510757 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x325366db __sk_dst_check +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3275ab30 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x3275b52f get_super +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x32970674 devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0x32a06265 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x32a69dda __close_fd_get_file +EXPORT_SYMBOL vmlinux 0x32ae5741 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x32b03354 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x32b32d7c i2c_register_driver +EXPORT_SYMBOL vmlinux 0x32bdbd59 xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0x32be40ba phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x33010f6a kernel_read +EXPORT_SYMBOL vmlinux 0x33053f24 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0x33089f0c pci_set_mwi +EXPORT_SYMBOL vmlinux 0x331138ce mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x331910b0 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x33199e8d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x3324ef3b acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x3377af91 has_capability +EXPORT_SYMBOL vmlinux 0x3392c829 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x339a1bf3 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x33b67c80 __SetPageMovable +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33dae01e mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x33dfb385 udp_pre_connect +EXPORT_SYMBOL vmlinux 0x33e06ee2 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x33fd9da4 acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x341047db register_cdrom +EXPORT_SYMBOL vmlinux 0x34281fe2 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x342f9934 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x343edca0 dev_printk +EXPORT_SYMBOL vmlinux 0x3441445f msrs_free +EXPORT_SYMBOL vmlinux 0x34578d8c vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x3457b7f5 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x345b2a60 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x3462b8bd rproc_get_by_child +EXPORT_SYMBOL vmlinux 0x3478ec9d scsi_register_interface +EXPORT_SYMBOL vmlinux 0x347e5151 tcp_poll +EXPORT_SYMBOL vmlinux 0x3489859f acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x348b1d23 file_open_root +EXPORT_SYMBOL vmlinux 0x348dbfec generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x349033fd devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x349ac524 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a1f7e3 acpi_processor_get_psd +EXPORT_SYMBOL vmlinux 0x34b9ee09 inet_add_offload +EXPORT_SYMBOL vmlinux 0x34c4c5c7 cred_fscmp +EXPORT_SYMBOL vmlinux 0x34dedc63 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f89363 acpi_terminate_debugger +EXPORT_SYMBOL vmlinux 0x350ea558 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x350f1dcb sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351a959b module_refcount +EXPORT_SYMBOL vmlinux 0x35248e42 bio_init +EXPORT_SYMBOL vmlinux 0x352af728 address_space_init_once +EXPORT_SYMBOL vmlinux 0x35303d05 blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3541950b sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x354b4a1e acpi_ut_trace +EXPORT_SYMBOL vmlinux 0x355f8a8b tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3583d607 mmc_retune_pause +EXPORT_SYMBOL vmlinux 0x358471ff __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x359c1a38 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x359ec42f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x35a242e3 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x35a446ba tcp_disconnect +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35be0be6 d_splice_alias +EXPORT_SYMBOL vmlinux 0x35f60872 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x36060f35 mdiobus_free +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360b9210 get_acl +EXPORT_SYMBOL vmlinux 0x36153bf6 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x3620ea5d vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x36250f8d mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x362ef408 _copy_from_user +EXPORT_SYMBOL vmlinux 0x36519017 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x365a926a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x36828ae8 vfio_register_notifier +EXPORT_SYMBOL vmlinux 0x3687c30d pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x368cd25d dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0x368e8f99 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x36924b8e phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x36927b10 sock_no_getname +EXPORT_SYMBOL vmlinux 0x36945208 ata_port_printk +EXPORT_SYMBOL vmlinux 0x3697aba3 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x36b0d447 vga_client_register +EXPORT_SYMBOL vmlinux 0x36b2f1c9 setattr_prepare +EXPORT_SYMBOL vmlinux 0x36b74cc5 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x36c4bc8b devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x36c953b2 pci_request_regions +EXPORT_SYMBOL vmlinux 0x36caf489 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x36d61bd2 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x36ef0e8e devm_rproc_add +EXPORT_SYMBOL vmlinux 0x36f17ca4 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x37110088 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x371e7f3a ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x3728df80 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x372f5611 rproc_add_carveout +EXPORT_SYMBOL vmlinux 0x3735101e phy_device_register +EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x37446b11 uart_match_port +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374fc3a9 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x37551588 softnet_data +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x3756d917 find_vma +EXPORT_SYMBOL vmlinux 0x3759606d sk_wait_data +EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x377d8004 acpi_error +EXPORT_SYMBOL vmlinux 0x378a81c2 input_unregister_device +EXPORT_SYMBOL vmlinux 0x3791aa5e agp_bind_memory +EXPORT_SYMBOL vmlinux 0x37971b98 d_obtain_root +EXPORT_SYMBOL vmlinux 0x3797555e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x37992900 filemap_flush +EXPORT_SYMBOL vmlinux 0x37a6f67a mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c0563f dev_uc_add +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x38036f9c mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x3812050a _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38339657 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x38376683 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x383a91de blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x3840e35b dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x384e3bce reuseport_select_sock +EXPORT_SYMBOL vmlinux 0x386ee263 phy_disconnect +EXPORT_SYMBOL vmlinux 0x388140e8 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388aa3c9 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x388dacfd i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38d02ed1 config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x38d337ac pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x38e2e574 kobject_del +EXPORT_SYMBOL vmlinux 0x38e46431 mempool_exit +EXPORT_SYMBOL vmlinux 0x38f08cd2 tcp_seq_stop +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x390535ef __f_setown +EXPORT_SYMBOL vmlinux 0x39081193 __max_logical_packages +EXPORT_SYMBOL vmlinux 0x3917366d fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0x39237af4 nf_reinject +EXPORT_SYMBOL vmlinux 0x392b1fea wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x3936a937 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x39523bfd simple_dir_operations +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3962c3cf dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3968d14d sock_set_keepalive +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39ce9a30 seq_open_private +EXPORT_SYMBOL vmlinux 0x39e1e4a1 phy_device_create +EXPORT_SYMBOL vmlinux 0x39e366af neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x39e3c030 do_trace_read_msr +EXPORT_SYMBOL vmlinux 0x39e4bba6 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x39e94331 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a27d6a5 ps2_end_command +EXPORT_SYMBOL vmlinux 0x3a2d1dfa rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a637eb5 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x3a719a74 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3a75396b pnp_register_driver +EXPORT_SYMBOL vmlinux 0x3a8dc858 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x3aa8a01a pnp_start_dev +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3ad3b672 wireless_send_event +EXPORT_SYMBOL vmlinux 0x3ad5cda3 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x3ad7a5d5 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0x3ada9e06 acpi_check_region +EXPORT_SYMBOL vmlinux 0x3aed78b9 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x3afb11a7 kobject_set_name +EXPORT_SYMBOL vmlinux 0x3aff3200 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x3b029f48 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x3b0faa12 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x3b20fb95 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x3b3f0d88 tty_write_room +EXPORT_SYMBOL vmlinux 0x3b4d3fca __x86_retpoline_r8 +EXPORT_SYMBOL vmlinux 0x3b5480e4 fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0x3b566861 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x3b5bc0db bd_start_claiming +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b717c5f call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x3b83610f cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x3b9144c9 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x3b97cb3d simple_unlink +EXPORT_SYMBOL vmlinux 0x3ba7d353 inet_frags_init +EXPORT_SYMBOL vmlinux 0x3baa0148 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x3bba135f flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x3bbd4bef bdget +EXPORT_SYMBOL vmlinux 0x3bbe52d0 xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x3bbff6ac security_path_rename +EXPORT_SYMBOL vmlinux 0x3bc3776d mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x3bd60655 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3beaa602 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x3bec8359 ps2_command +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c2dfd14 inet_accept +EXPORT_SYMBOL vmlinux 0x3c38b513 convert_art_ns_to_tsc +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c427f67 cpu_die_map +EXPORT_SYMBOL vmlinux 0x3c457453 ioread64_lo_hi +EXPORT_SYMBOL vmlinux 0x3c45a4eb adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x3c568f1d page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0x3c6c3a31 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x3c754126 fb_class +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cc18866 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x3ccc8dbc __x86_retpoline_r14 +EXPORT_SYMBOL vmlinux 0x3cd93882 neigh_table_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfed9b0 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3d02cd70 dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0x3d0d08e5 pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x3d210724 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x3d29d4f2 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x3d3f7f0a __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5bb3fd refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x3d5bd257 write_inode_now +EXPORT_SYMBOL vmlinux 0x3d7b7312 sget_fc +EXPORT_SYMBOL vmlinux 0x3d9d9603 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x3dad8c03 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3dbebf60 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x3dc2461e inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x3dc619d3 swake_up_locked +EXPORT_SYMBOL vmlinux 0x3dcb7206 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dce2713 __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x3dd9b230 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3ddc6c04 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x3de3a353 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x3dfb86b9 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e01bec3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x3e084bad cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0x3e1fdbb5 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e44c9c0 nf_log_register +EXPORT_SYMBOL vmlinux 0x3e5401fc sock_sendmsg +EXPORT_SYMBOL vmlinux 0x3e6d11c8 release_sock +EXPORT_SYMBOL vmlinux 0x3e714c83 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3e728082 pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0x3e803a6d tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea36c16 fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x3eb291c7 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3eb8d49f ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x3eeb2322 __wake_up +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f02a280 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f2b138f netdev_update_features +EXPORT_SYMBOL vmlinux 0x3f2dab06 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x3f351a63 mntget +EXPORT_SYMBOL vmlinux 0x3f40042d ata_print_version +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4bd846 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f588fae dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x3f7b4fed serio_rescan +EXPORT_SYMBOL vmlinux 0x3f87edd5 devm_register_netdev +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3f8d27b2 kthread_create_worker +EXPORT_SYMBOL vmlinux 0x3fa15501 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0x3fada9c2 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fc332fe dev_remove_offload +EXPORT_SYMBOL vmlinux 0x3fd0eefd put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0x3fd4c944 get_cpu_entry_area +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fe24109 inet_sendpage +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe46f29 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x3feb963d sock_wfree +EXPORT_SYMBOL vmlinux 0x3fef364a kill_pgrp +EXPORT_SYMBOL vmlinux 0x3ff1a63b pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0x3ff8ed8f jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x400b8e2b __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x4022afa8 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0x4022f651 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x402880ec ps2_sliced_command +EXPORT_SYMBOL vmlinux 0x40309161 da903x_query_status +EXPORT_SYMBOL vmlinux 0x4055a920 acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x4058ddb0 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x407711f9 eth_header_parse +EXPORT_SYMBOL vmlinux 0x40885d2f vme_bus_type +EXPORT_SYMBOL vmlinux 0x408a4c2e mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409bcb62 mutex_unlock +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ae376c sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x40c26afb ppp_input_error +EXPORT_SYMBOL vmlinux 0x40c716d0 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x40f9885a i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x41012362 cdev_alloc +EXPORT_SYMBOL vmlinux 0x410c3b63 pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x4113313e pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x41138369 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x411f347c blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415b4ef6 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x41621c3b writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4198ca95 __do_once_done +EXPORT_SYMBOL vmlinux 0x41b31141 ether_setup +EXPORT_SYMBOL vmlinux 0x41c15d16 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x41d465d5 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x41da03b8 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x41efdeaf radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x41f6dcb1 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x42105c49 clk_bulk_get +EXPORT_SYMBOL vmlinux 0x4212dc8f input_unregister_handler +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4221acca blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x42497d27 _dev_notice +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42578e80 acpi_get_type +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42a5a1b7 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0x42bed8d4 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x42c74229 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x42d1d80d elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x42f3f3a6 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x4302111a kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430b7815 dev_addr_del +EXPORT_SYMBOL vmlinux 0x430ecc96 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0x43188b1f tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x432222ca xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4329ce09 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x433cabfb acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x4340ddb5 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435775d2 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x43769cec skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x437c568a ilookup +EXPORT_SYMBOL vmlinux 0x4383c030 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439caeee bprm_change_interp +EXPORT_SYMBOL vmlinux 0x43a654bf blk_get_request +EXPORT_SYMBOL vmlinux 0x43b0463e iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x43c9ca6c __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x43ce49d0 generic_write_checks +EXPORT_SYMBOL vmlinux 0x4414264b __dquot_transfer +EXPORT_SYMBOL vmlinux 0x4417f017 get_user_pages +EXPORT_SYMBOL vmlinux 0x443013ec load_nls +EXPORT_SYMBOL vmlinux 0x4438b184 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0x44414ff2 iosf_mbi_unblock_punit_i2c_access +EXPORT_SYMBOL vmlinux 0x44462b88 __x86_retpoline_rdx +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x44520ea0 tso_count_descs +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x44902cff acpi_enable_event +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449daa06 get_super_thawed +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44a7b2b1 __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x44a9fb2f dev_addr_init +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b0d5c6 dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0x44d69ce4 tty_register_driver +EXPORT_SYMBOL vmlinux 0x44d6c210 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x44db94b3 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x44e4cd51 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x44e5ec8a sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f3130b i2c_verify_client +EXPORT_SYMBOL vmlinux 0x44f732ac generic_update_time +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450df1fc __quota_error +EXPORT_SYMBOL vmlinux 0x4527313f get_task_cred +EXPORT_SYMBOL vmlinux 0x45293e68 thaw_bdev +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453d92ce netlink_net_capable +EXPORT_SYMBOL vmlinux 0x45462b9e blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x454c96f7 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update +EXPORT_SYMBOL vmlinux 0x455bb372 fs_param_is_string +EXPORT_SYMBOL vmlinux 0x4565f5bd mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x456fd764 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45817a19 dquot_initialize +EXPORT_SYMBOL vmlinux 0x45b630f6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x45b67ba9 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x45b851a9 netif_napi_del +EXPORT_SYMBOL vmlinux 0x45c1e309 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x45d246da node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x45dacabd file_ns_capable +EXPORT_SYMBOL vmlinux 0x45e69e01 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x45e8d7b5 native_write_cr0 +EXPORT_SYMBOL vmlinux 0x45e8e812 console_stop +EXPORT_SYMBOL vmlinux 0x45ee67da __scm_destroy +EXPORT_SYMBOL vmlinux 0x45f4e898 d_instantiate +EXPORT_SYMBOL vmlinux 0x45fe60a4 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x460090ae qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x46154121 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x463219fb tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4635e919 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x463a45ba invalidate_bdev +EXPORT_SYMBOL vmlinux 0x463d2084 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x464cee66 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x4650ef4c security_binder_transaction +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x4662161a serio_open +EXPORT_SYMBOL vmlinux 0x4669aa70 __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467964da sock_bind_add +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468d0171 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x469f6e86 key_link +EXPORT_SYMBOL vmlinux 0x46aa6ea4 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x46c07941 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46cf10eb cachemode2protval +EXPORT_SYMBOL vmlinux 0x46cf9958 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0x46d14f3e vme_irq_generate +EXPORT_SYMBOL vmlinux 0x46d441bf vga_switcheroo_lock_ddc +EXPORT_SYMBOL vmlinux 0x46f299a5 ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0x46f6399c kthread_bind +EXPORT_SYMBOL vmlinux 0x46f7de14 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x46ffb972 bio_free_pages +EXPORT_SYMBOL vmlinux 0x470339d0 page_symlink +EXPORT_SYMBOL vmlinux 0x4715a909 acpi_load_table +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47690cf6 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47941711 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x47960bc4 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47d6334b ip_setsockopt +EXPORT_SYMBOL vmlinux 0x47df2433 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x47f1a8d9 dev_uc_init +EXPORT_SYMBOL vmlinux 0x48091008 neigh_destroy +EXPORT_SYMBOL vmlinux 0x4810841d uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x482a3825 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x482ec3ac xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x48356a18 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x483c8f7b sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x483f81be mdio_device_free +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48476bcb intel_gtt_insert_page +EXPORT_SYMBOL vmlinux 0x484a1c87 tty_unlock +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486075c8 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4860dd31 skb_checksum +EXPORT_SYMBOL vmlinux 0x486198b2 pci_find_resource +EXPORT_SYMBOL vmlinux 0x486af8a0 seq_path +EXPORT_SYMBOL vmlinux 0x486f6dad d_mark_dontcache +EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x4885e23b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x489c334a dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x48a5efba page_get_link +EXPORT_SYMBOL vmlinux 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b8f6b9 __sb_start_write +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bcc527 configfs_depend_item +EXPORT_SYMBOL vmlinux 0x48c093fb _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48db577d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x48de4232 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x48e02c8c dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0x48fef835 skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490ce7cc get_tree_keyed +EXPORT_SYMBOL vmlinux 0x490d0d3a wake_up_process +EXPORT_SYMBOL vmlinux 0x492c20cc pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x493230e0 tcp_child_process +EXPORT_SYMBOL vmlinux 0x49331c4a current_time +EXPORT_SYMBOL vmlinux 0x49358325 dcache_readdir +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x49570e40 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x4958ae81 ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0x495e378d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0x49817ff5 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x498493df d_set_d_op +EXPORT_SYMBOL vmlinux 0x498ceddc disk_stack_limits +EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49a8b07c tty_unregister_device +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49be3ffb gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x49c41a57 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x49de0597 dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0x49e0f671 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x49ed86a0 ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x4a00974d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x4a08af68 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x4a0dec64 fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x4a3ad70e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x4a453f53 iowrite32 +EXPORT_SYMBOL vmlinux 0x4a61cb3a inet_gro_receive +EXPORT_SYMBOL vmlinux 0x4a6e75d2 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x4a6fcea3 kern_unmount +EXPORT_SYMBOL vmlinux 0x4a9351a3 dcb_getapp +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4aa34a6d __ip_options_compile +EXPORT_SYMBOL vmlinux 0x4ab208ba acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x4aba4bc5 proc_create +EXPORT_SYMBOL vmlinux 0x4abb7d10 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x4ac7c97e dump_align +EXPORT_SYMBOL vmlinux 0x4ac831a2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x4ae2769b phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift +EXPORT_SYMBOL vmlinux 0x4afb2238 add_wait_queue +EXPORT_SYMBOL vmlinux 0x4b041798 seq_write +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b188514 __mdiobus_read +EXPORT_SYMBOL vmlinux 0x4b2576e8 phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x4b2f2f28 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x4b353dd1 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6187a0 uart_resume_port +EXPORT_SYMBOL vmlinux 0x4b6df007 acpi_evaluate_reg +EXPORT_SYMBOL vmlinux 0x4b6f62e6 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x4bbd34ed alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x4bc81e09 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x4bc95c7c tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x4bcb539f phy_device_remove +EXPORT_SYMBOL vmlinux 0x4bcc2662 mempool_init_node +EXPORT_SYMBOL vmlinux 0x4bccecbf vfs_iter_read +EXPORT_SYMBOL vmlinux 0x4bce17f6 genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x4bdf2390 account_page_redirty +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4c05085e xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c185005 netif_napi_add +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c5c5460 inode_init_always +EXPORT_SYMBOL vmlinux 0x4c9ce9d7 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cbb0785 dput +EXPORT_SYMBOL vmlinux 0x4cbb80ca blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x4cbea410 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x4cd5b5e1 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x4cd5bc5e rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x4cff6381 mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0x4d02f2a8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x4d2577df dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x4d2c7133 acpi_info +EXPORT_SYMBOL vmlinux 0x4d3ac392 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4d3d92c2 iommu_dma_get_resv_regions +EXPORT_SYMBOL vmlinux 0x4d640a04 __serio_register_port +EXPORT_SYMBOL vmlinux 0x4d804907 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x4d924f20 memremap +EXPORT_SYMBOL vmlinux 0x4d9b21fe __x86_retpoline_r11 +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da77f49 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x4dae7804 phy_read_mmd +EXPORT_SYMBOL vmlinux 0x4dca08ee sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x4de995ec gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e20bcf8 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4f0f16 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0x4e56e312 devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x4e5eb20a default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e4b41 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e6f4839 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x4e762135 netdev_alert +EXPORT_SYMBOL vmlinux 0x4e7f18a5 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x4e87b0a0 amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea92b5c dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x4eaa410c to_nd_dax +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4eaeba55 fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0x4eb46cc6 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ebf40d7 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4ee79e32 seq_read +EXPORT_SYMBOL vmlinux 0x4ef5ede0 single_release +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4efe30b6 km_policy_notify +EXPORT_SYMBOL vmlinux 0x4f08f119 misc_register +EXPORT_SYMBOL vmlinux 0x4f1c03f4 simple_lookup +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f24cd13 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x4f4c5c16 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x4f4c9511 elv_rb_del +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f51b82b user_revoke +EXPORT_SYMBOL vmlinux 0x4f520c62 _dev_warn +EXPORT_SYMBOL vmlinux 0x4f55166f acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x4f711f84 intel_scu_ipc_dev_iowrite8 +EXPORT_SYMBOL vmlinux 0x4f754508 mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x4f9474a7 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x4f95867b dma_cache_sync +EXPORT_SYMBOL vmlinux 0x4fb4640c ping_prot +EXPORT_SYMBOL vmlinux 0x4fcc8ad2 ex_handler_uaccess +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe84034 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x500d36be pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x5016f711 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x501b7f69 xfrm_state_free +EXPORT_SYMBOL vmlinux 0x5027bde2 acpi_acquire_mutex +EXPORT_SYMBOL vmlinux 0x502c838a compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x503aee0b tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x503ddb9b touch_atime +EXPORT_SYMBOL vmlinux 0x503eda62 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x5051dd8e build_skb_around +EXPORT_SYMBOL vmlinux 0x5058b3f8 simple_write_end +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x5067c97f mdiobus_read +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x507856fd blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x50793944 request_key_tag +EXPORT_SYMBOL vmlinux 0x508099b6 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50ceadb7 devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50d8856b tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x50f3bff4 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x50faa977 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x50fdc17a __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x5102a30b do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0x510c9950 blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x511f3ea1 compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x5125e2bf skb_unlink +EXPORT_SYMBOL vmlinux 0x515083bf acpi_release_mutex +EXPORT_SYMBOL vmlinux 0x515f1008 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x51760917 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5182c8ea mmput_async +EXPORT_SYMBOL vmlinux 0x518d9af4 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x518e153b cdrom_release +EXPORT_SYMBOL vmlinux 0x51a898e2 pps_register_source +EXPORT_SYMBOL vmlinux 0x51c54dea devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x51ca1736 skb_split +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d8ad47 copy_string_kernel +EXPORT_SYMBOL vmlinux 0x51f298e0 intel_scu_ipc_dev_ioread8 +EXPORT_SYMBOL vmlinux 0x51f8df6f blkdev_get +EXPORT_SYMBOL vmlinux 0x521771cc in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x521b9c9f sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x522100fa open_with_fake_path +EXPORT_SYMBOL vmlinux 0x5228cc27 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x523bb715 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x5249357d security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x52542323 __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x5254a42c locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x525a6405 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x526da448 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x52775797 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x52822f8f crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x5286a7b5 blk_put_request +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x529dfbfb bdev_read_only +EXPORT_SYMBOL vmlinux 0x52a8842b netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x52bf1409 dquot_acquire +EXPORT_SYMBOL vmlinux 0x52c126f1 security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x52d31ef1 vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52ecbc75 crc_ccitt +EXPORT_SYMBOL vmlinux 0x53098447 devm_ioremap +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530b7a90 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x53126ecc __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x5312902f blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x531be616 km_query +EXPORT_SYMBOL vmlinux 0x533206b5 sort_r +EXPORT_SYMBOL vmlinux 0x534e03bd generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x5354ee1a generic_writepages +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x5367b4b4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x5380a40c qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0x53957b8d __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x53971205 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x53b8578a scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x53b954a2 up_read +EXPORT_SYMBOL vmlinux 0x53be34f0 __x86_retpoline_rsi +EXPORT_SYMBOL vmlinux 0x53c09d2f fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x53e10c60 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x53e29e21 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x53e8f0d6 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x540e37ea inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x54175c5f acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5424d57d sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x543659f4 __kfree_skb +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x547e3344 acpi_disable +EXPORT_SYMBOL vmlinux 0x54a1a331 devm_clk_get +EXPORT_SYMBOL vmlinux 0x54a2b497 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54cbaca9 rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ea6dfe xen_start_flags +EXPORT_SYMBOL vmlinux 0x54ee5e45 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x5503ec68 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x551368e1 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551d6bb0 param_get_invbool +EXPORT_SYMBOL vmlinux 0x55217d2b pci_request_irq +EXPORT_SYMBOL vmlinux 0x5548f8c5 netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x555bef70 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x555fa902 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x556422b3 ioremap_cache +EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x556cca46 x86_apple_machine +EXPORT_SYMBOL vmlinux 0x5570c5fd reuseport_alloc +EXPORT_SYMBOL vmlinux 0x558a2799 commit_creds +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x558e837d dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x55a466a3 iget_locked +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55e6a907 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0x55f739ee dcache_dir_open +EXPORT_SYMBOL vmlinux 0x55f95e07 ioremap_prot +EXPORT_SYMBOL vmlinux 0x56180276 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56466e42 ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x564f7608 acpi_reconfig_notifier_register +EXPORT_SYMBOL vmlinux 0x5674988e fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x5678a460 __udp_disconnect +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x568b3075 iunique +EXPORT_SYMBOL vmlinux 0x569abcca acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x56a8b919 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x56ad5eae pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dccdf0 scmd_printk +EXPORT_SYMBOL vmlinux 0x56ee18b2 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0x56f8c371 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x56fce34e inet_release +EXPORT_SYMBOL vmlinux 0x570802e8 register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x57125dba seq_hex_dump +EXPORT_SYMBOL vmlinux 0x5734829a file_fdatawait_range +EXPORT_SYMBOL vmlinux 0x573c66d9 mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0x5743d381 key_put +EXPORT_SYMBOL vmlinux 0x57467282 ps2_drain +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576aed2f tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x576d126f netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x577e4e80 mr_table_alloc +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x57900416 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57bc19d2 down_write +EXPORT_SYMBOL vmlinux 0x57cdeecb add_to_pipe +EXPORT_SYMBOL vmlinux 0x57e33915 __bforget +EXPORT_SYMBOL vmlinux 0x57f44a88 elv_rb_find +EXPORT_SYMBOL vmlinux 0x58129e5a flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5834d106 from_kprojid +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583ea496 file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x5849c48b tty_do_resize +EXPORT_SYMBOL vmlinux 0x584adcd2 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x58614c12 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x58697166 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x586ab17d __pagevec_release +EXPORT_SYMBOL vmlinux 0x587f22d7 devmap_managed_key +EXPORT_SYMBOL vmlinux 0x58832761 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x589342d2 generic_read_dir +EXPORT_SYMBOL vmlinux 0x58949247 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x58a2d13d netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b24d90 phy_get_pause +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bd8c27 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x58c288d1 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x58c2a3bf fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0x58cb0815 timestamp_truncate +EXPORT_SYMBOL vmlinux 0x58d1d951 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x58d2cf51 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x58defa7f dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e367a0 thaw_super +EXPORT_SYMBOL vmlinux 0x58e4b0a7 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0x58e5bccd fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x58f088d1 bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x590035ac filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x590357ef tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x59071988 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x591506fc i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x593235da edac_mc_find +EXPORT_SYMBOL vmlinux 0x593c1bac __x86_indirect_thunk_rbx +EXPORT_SYMBOL vmlinux 0x594a636a mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x595e8098 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x596d8afb con_copy_unimap +EXPORT_SYMBOL vmlinux 0x59715de8 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x597f54c0 native_restore_fl +EXPORT_SYMBOL vmlinux 0x59807ef8 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x598df489 xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0x599b5a34 seq_dentry +EXPORT_SYMBOL vmlinux 0x599ba5ac inet_del_protocol +EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node +EXPORT_SYMBOL vmlinux 0x59a2f0ee packing +EXPORT_SYMBOL vmlinux 0x59aadddd kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59c4b8de configfs_register_default_group +EXPORT_SYMBOL vmlinux 0x59c92414 __lock_buffer +EXPORT_SYMBOL vmlinux 0x59d2c43c get_task_exe_file +EXPORT_SYMBOL vmlinux 0x59e34404 input_register_handle +EXPORT_SYMBOL vmlinux 0x59f1fe2a proto_unregister +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a10d56f dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x5a245f6d _raw_write_lock +EXPORT_SYMBOL vmlinux 0x5a27dcd5 __devm_release_region +EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a5a2271 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x5a5f84d7 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x5a79fe6a tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa35594 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x5ab1c594 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x5ab803a7 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x5abc3280 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x5ac325eb bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0x5ac6d049 legacy_pic +EXPORT_SYMBOL vmlinux 0x5ade48c1 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x5b08bfb8 mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x5b114e7c read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x5b2888d8 sock_no_connect +EXPORT_SYMBOL vmlinux 0x5b2a62dd inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x5b2f27fb do_wait_intr +EXPORT_SYMBOL vmlinux 0x5b319ebd mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b3e282f xa_store +EXPORT_SYMBOL vmlinux 0x5b4f0513 sock_rfree +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b73691b blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x5b7acf65 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x5b899938 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x5b974bf7 proc_set_size +EXPORT_SYMBOL vmlinux 0x5b99c441 filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x5baefb13 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5bc25d61 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5bf53144 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x5c00d810 ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5c26a53b wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x5c30bc72 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c463c57 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x5c606423 scsi_host_busy +EXPORT_SYMBOL vmlinux 0x5c6731ce blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x5c86342a dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x5c87b208 of_find_backlight +EXPORT_SYMBOL vmlinux 0x5c91a4dc nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x5cc19a94 agp_enable +EXPORT_SYMBOL vmlinux 0x5cda2857 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x5ce50756 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x5cf15d75 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x5cf43a6a bio_uninit +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb26a0 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x5cfe923d kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x5d0b7e9f mdio_driver_register +EXPORT_SYMBOL vmlinux 0x5d2a7f44 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x5d2ce929 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d51a7d1 get_watch_queue +EXPORT_SYMBOL vmlinux 0x5d6a51be security_sb_remount +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d790f10 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5d861475 sg_miter_next +EXPORT_SYMBOL vmlinux 0x5d90d8b3 scsi_add_device +EXPORT_SYMBOL vmlinux 0x5d9b22f3 tty_register_device +EXPORT_SYMBOL vmlinux 0x5db296a1 vfs_unlink +EXPORT_SYMBOL vmlinux 0x5db397fd genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0x5dbd07a5 __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0x5dca4584 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x5dcac120 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x5debb223 mmc_retune_release +EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e27adc9 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x5e2b008b pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x5e332b52 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e517316 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x5e5b76f8 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x5e6723b7 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x5e6bce5f __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x5e6c5426 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x5e7b3fd4 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x5e855e56 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x5e9250ea pci_read_config_dword +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec373e6 vfs_readlink +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ec55be7 md_integrity_register +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ee10617 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x5ee14df3 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5ef6a672 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x5efde8e6 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5f08259c __post_watch_notification +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f25f0b8 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x5f32cd78 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0x5f48b34c twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5f521275 scsi_host_put +EXPORT_SYMBOL vmlinux 0x5f56663b rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x5f5d0d32 dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f6fbf3d pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0x5f93525c acpi_extract_package +EXPORT_SYMBOL vmlinux 0x5fbdd176 vfio_pin_pages +EXPORT_SYMBOL vmlinux 0x5fc3e55c max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fca9f4f unregister_nls +EXPORT_SYMBOL vmlinux 0x5fd2864f param_get_string +EXPORT_SYMBOL vmlinux 0x5fe39f85 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x5ff9eb0e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x600568ad dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601496f4 revert_creds +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x6019676b tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602a167a param_get_bool +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60392a75 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6055985e ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0x60569df7 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x60830390 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x608741b5 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x608f3cda ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x608f8768 kset_register +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x60940322 do_SAK +EXPORT_SYMBOL vmlinux 0x609b2853 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60afd37b blk_sync_queue +EXPORT_SYMBOL vmlinux 0x60b3071f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x60b74374 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x60cf525c setup_new_exec +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60d9d214 iov_iter_init +EXPORT_SYMBOL vmlinux 0x60e9d9c0 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x60f31978 jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0x6100af37 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x61016d66 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x61050291 unload_nls +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61577694 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x6164352f skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x616a0ed4 kill_pid +EXPORT_SYMBOL vmlinux 0x617c452b queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0x617d2b42 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6184af82 __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x6185b747 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x618a7874 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x618b63fb inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619dfcdc intel_scu_ipc_dev_readv +EXPORT_SYMBOL vmlinux 0x619fd9e5 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x61b2c4d5 pci_set_master +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c49f4c sget +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x61f827a8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x6203d5b2 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x620aac2b ip_check_defrag +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621742e2 tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x6220bbb7 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6245fbca should_remove_suid +EXPORT_SYMBOL vmlinux 0x624ba823 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x6258e531 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62890955 __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x62976189 neigh_for_each +EXPORT_SYMBOL vmlinux 0x62ab48f6 kfree_skb +EXPORT_SYMBOL vmlinux 0x62bc698a __lock_page +EXPORT_SYMBOL vmlinux 0x62bf4678 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62cae60e acpi_register_debugger +EXPORT_SYMBOL vmlinux 0x62e62643 sock_no_bind +EXPORT_SYMBOL vmlinux 0x62fecf0a __sock_create +EXPORT_SYMBOL vmlinux 0x6309e503 md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x636257f7 get_ibs_caps +EXPORT_SYMBOL vmlinux 0x637f11be netif_carrier_off +EXPORT_SYMBOL vmlinux 0x63a09c54 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63acd3d4 __phy_resume +EXPORT_SYMBOL vmlinux 0x63b7981a jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63cb2cb6 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x63d6dbd9 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f835ba on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x641200c9 netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6413c3bd pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x642c098f bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x642eb5c6 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x643f56a5 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x64444e54 config_item_put +EXPORT_SYMBOL vmlinux 0x644d5355 key_move +EXPORT_SYMBOL vmlinux 0x646486ab tcp_prot +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x64865f72 neigh_update +EXPORT_SYMBOL vmlinux 0x648684a5 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64f3d2fa consume_skb +EXPORT_SYMBOL vmlinux 0x6504b7c0 block_read_full_page +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x655526dd fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf +EXPORT_SYMBOL vmlinux 0x6570f761 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6579941a blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x65892099 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65a3b6a1 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x65a4afcf xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x65b244e7 unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65bdd73b dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0x65d1bab2 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dbf0d6 fget_raw +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65fe3e63 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x660f892e pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x6626afca down +EXPORT_SYMBOL vmlinux 0x6628d02c key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x662d3c10 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x663182c9 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x6639e2d9 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x66441a56 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x6658a4ff sock_pfree +EXPORT_SYMBOL vmlinux 0x665ca248 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x666c39cc config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x667f8148 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x668b19a1 down_read +EXPORT_SYMBOL vmlinux 0x66934d6d vfs_fsync +EXPORT_SYMBOL vmlinux 0x669d0dec blk_register_region +EXPORT_SYMBOL vmlinux 0x66a80e63 inet_gro_complete +EXPORT_SYMBOL vmlinux 0x66acd03b pci_dev_put +EXPORT_SYMBOL vmlinux 0x66af1fd1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x66b2e852 mmc_add_host +EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup +EXPORT_SYMBOL vmlinux 0x66cc97ca __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x66cdbaf5 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66e39e37 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x66e4cb2e audit_log_start +EXPORT_SYMBOL vmlinux 0x66f26738 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67461051 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x67495095 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x67646b53 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x67673b2a tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x6787a39b param_array_ops +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x678d6412 input_get_keycode +EXPORT_SYMBOL vmlinux 0x679ffa92 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x67afa3c0 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x67b2720f phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bfb2ca __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x67c0c54c pv_ops +EXPORT_SYMBOL vmlinux 0x67c13ea0 acpi_read +EXPORT_SYMBOL vmlinux 0x67c9dfee page_pool_release_page +EXPORT_SYMBOL vmlinux 0x67d54299 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x67de53ff make_kuid +EXPORT_SYMBOL vmlinux 0x67e9b855 ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x67eb802d amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x67f1247f bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x67f76cec __put_user_ns +EXPORT_SYMBOL vmlinux 0x67fa361d arp_send +EXPORT_SYMBOL vmlinux 0x6802d4ed md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x681441ea netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0x6815130b rtnl_unicast +EXPORT_SYMBOL vmlinux 0x6818ef3d scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x681bf1e6 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0x68370a5f dma_direct_map_page +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x6843c402 inet_bind +EXPORT_SYMBOL vmlinux 0x68467f75 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x6851664e wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x685d8dff sync_filesystem +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x686c4b81 netpoll_setup +EXPORT_SYMBOL vmlinux 0x68797994 unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68993b52 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x68a61624 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68c29592 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x68f4920f hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x68f66e1e fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0x69029abc find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x69049cd2 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0x690d2b16 poll_initwait +EXPORT_SYMBOL vmlinux 0x690d8c93 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x69103208 blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x6913d433 phy_init_hw +EXPORT_SYMBOL vmlinux 0x69177258 param_set_ushort +EXPORT_SYMBOL vmlinux 0x691a5620 __d_drop +EXPORT_SYMBOL vmlinux 0x69282366 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x69287fea dup_iter +EXPORT_SYMBOL vmlinux 0x69309631 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x693be7dd locks_remove_posix +EXPORT_SYMBOL vmlinux 0x693cbb5c mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0x69429e76 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x69469930 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x69585523 __ksize +EXPORT_SYMBOL vmlinux 0x69611fcf mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x696a2f21 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6973116b nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x6979c747 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x6999233f mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0x69a76e55 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b5f4d6 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x69bab2f6 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x69c45d96 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x69d904b2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le +EXPORT_SYMBOL vmlinux 0x69de56ed param_ops_int +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69ee8a3b phy_detach +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0842fe ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x6a21cb56 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x6a261b78 irq_stat +EXPORT_SYMBOL vmlinux 0x6a418693 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x6a424f9f request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x6a449c4f register_sysctl_table +EXPORT_SYMBOL vmlinux 0x6a4cd26c end_page_writeback +EXPORT_SYMBOL vmlinux 0x6a4e82ba reuseport_add_sock +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a852410 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6a90974b xfrm_register_type +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6aa49823 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6ab7078c md_flush_request +EXPORT_SYMBOL vmlinux 0x6ac0b178 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x6ac3e9c9 cont_write_begin +EXPORT_SYMBOL vmlinux 0x6ac7bf64 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aed7a84 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b182cd7 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x6b244ed3 mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x6b25eb73 param_set_bint +EXPORT_SYMBOL vmlinux 0x6b27729b radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b400a9c fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x6b4d9547 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b6b3394 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x6b781cc3 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6ba34b03 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x6bb8e48d iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x6bc2cdf0 qdisc_reset +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc4a1a7 keyring_clear +EXPORT_SYMBOL vmlinux 0x6bc5e589 fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x6bd14e29 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x6bdc0448 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x6be08ece proc_create_single_data +EXPORT_SYMBOL vmlinux 0x6be1c1f8 acpi_install_method +EXPORT_SYMBOL vmlinux 0x6c01f537 iommu_get_dma_cookie +EXPORT_SYMBOL vmlinux 0x6c151ab3 netdev_warn +EXPORT_SYMBOL vmlinux 0x6c17989b ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x6c1a41e6 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x6c1acb7f dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0x6c224cda gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c27d406 bio_chain +EXPORT_SYMBOL vmlinux 0x6c28be5a vfio_info_add_capability +EXPORT_SYMBOL vmlinux 0x6c2f49a7 input_grab_device +EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c5e3d98 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c7a783d i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6ca7b4c4 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cb522d9 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6cd8a27b dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x6ced07e5 __module_get +EXPORT_SYMBOL vmlinux 0x6cf3c3cf vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0x6cf62166 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6d0b0586 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x6d0c1f2e phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x6d1e9c4a dma_set_mask +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d369180 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x6d48bdd5 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x6d4e7984 dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0x6d56af4a pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x6d58f69e agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0x6d5f5b91 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x6d63e428 mdio_device_remove +EXPORT_SYMBOL vmlinux 0x6d7abe02 first_ec +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d8a58ad put_watch_queue +EXPORT_SYMBOL vmlinux 0x6d987bd4 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x6da3a5f1 irq_set_chip +EXPORT_SYMBOL vmlinux 0x6db28f81 d_drop +EXPORT_SYMBOL vmlinux 0x6db3af00 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x6dc35b25 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0x6dc48dfc amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dd17e7b acpi_get_table_header +EXPORT_SYMBOL vmlinux 0x6ddb2f01 dquot_file_open +EXPORT_SYMBOL vmlinux 0x6dea9db8 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df301f7 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x6e019034 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x6e0360cb neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x6e286604 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x6e54a3f9 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x6e54e47a dump_skip +EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7ff17d fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x6e832206 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x6e90b3ec vfs_get_super +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6e9e5df0 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x6ea7575d acpi_dispatch_gpe +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6eafdf70 set_device_ro +EXPORT_SYMBOL vmlinux 0x6ebf39c2 vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ed7f9b7 ip6_frag_next +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6f05cd8b jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x6f0f3677 input_release_device +EXPORT_SYMBOL vmlinux 0x6f207706 make_kgid +EXPORT_SYMBOL vmlinux 0x6f256b77 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x6f2b53ef ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x6f2f3799 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x6f3c8913 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x6f41a428 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x6f4258ef sock_no_mmap +EXPORT_SYMBOL vmlinux 0x6f514684 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x6f5eb97e d_exact_alias +EXPORT_SYMBOL vmlinux 0x6f71c0ad d_find_alias +EXPORT_SYMBOL vmlinux 0x6f744ef4 mmc_get_card +EXPORT_SYMBOL vmlinux 0x6f7c9165 submit_bio +EXPORT_SYMBOL vmlinux 0x6f81f231 xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f915a45 dqstats +EXPORT_SYMBOL vmlinux 0x6f96a2b3 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0x6fa6d2e0 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fbc6a00 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6ff575a5 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0x6ff58f58 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x70000813 migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x701c4c2d put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x702b3bbb tcp_peek_len +EXPORT_SYMBOL vmlinux 0x702dc9a9 eisa_bus_type +EXPORT_SYMBOL vmlinux 0x7035bc55 iterate_fd +EXPORT_SYMBOL vmlinux 0x703cd080 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x7040fff9 rtc_lock +EXPORT_SYMBOL vmlinux 0x70493f68 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70562f4e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x706ac692 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x708ab3b8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x70ad75fb radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x70d9c689 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x70df2d13 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x70f0e7d2 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x71082fb0 bdi_register +EXPORT_SYMBOL vmlinux 0x711116f9 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x7119de33 dqget +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x715855c4 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x715affb9 netlink_set_err +EXPORT_SYMBOL vmlinux 0x71665a2d __register_nls +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717395f9 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x71947ece d_lookup +EXPORT_SYMBOL vmlinux 0x719c7697 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71cf96ff phy_start_cable_test +EXPORT_SYMBOL vmlinux 0x71d3e8cd mmc_detect_change +EXPORT_SYMBOL vmlinux 0x71e05b74 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x71eafb8d inet_gso_segment +EXPORT_SYMBOL vmlinux 0x71f05e86 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x71f5fbcd __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x720163bb mount_single +EXPORT_SYMBOL vmlinux 0x72017316 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x72528f76 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x7260f26b put_disk +EXPORT_SYMBOL vmlinux 0x726bc3c7 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x7276c354 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x72955d03 alloc_pages_vma +EXPORT_SYMBOL vmlinux 0x72a49a8c ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72d79d83 pgdir_shift +EXPORT_SYMBOL vmlinux 0x72daa754 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x72e271a3 md_register_thread +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eef51a dev_get_stats +EXPORT_SYMBOL vmlinux 0x72f3de8b __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731788d3 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x73190b5e ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x731c4a9c dma_fence_signal +EXPORT_SYMBOL vmlinux 0x73204026 skb_find_text +EXPORT_SYMBOL vmlinux 0x7324d7e5 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x732eeabd iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x733d6664 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x735e6a81 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x7365cd7a agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x736b5662 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x73860506 pci_bus_type +EXPORT_SYMBOL vmlinux 0x73a07513 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73af6811 param_get_charp +EXPORT_SYMBOL vmlinux 0x73b8274f sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x73bf2a11 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x73c16197 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e67627 notify_change +EXPORT_SYMBOL vmlinux 0x73e84d81 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x73ec166e blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x74262a2b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x743a6325 tcp_mmap +EXPORT_SYMBOL vmlinux 0x7440f270 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x74725e69 ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x74754435 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x749d51a8 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0x74ab937c rfkill_alloc +EXPORT_SYMBOL vmlinux 0x74bc5e87 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x74bd1f41 d_invalidate +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c6721e fb_pan_display +EXPORT_SYMBOL vmlinux 0x74db2114 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eed105 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x74fc7335 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x75165c15 prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0x751e6fc7 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x752499b5 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x7528dc13 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x7534789e ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753b0f2d dma_resv_init +EXPORT_SYMBOL vmlinux 0x7545a9b4 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x757deb4d dev_mc_flush +EXPORT_SYMBOL vmlinux 0x75871f5e acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x75943e25 i8253_lock +EXPORT_SYMBOL vmlinux 0x759a58ce invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x759fadce nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75e04a11 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x75e801d8 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x75e86659 devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0x75f31251 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x76264639 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x7639c8cc bio_add_page +EXPORT_SYMBOL vmlinux 0x763ba3ad ioread64be_hi_lo +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x765d01d3 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x766a3fd7 kern_path_create +EXPORT_SYMBOL vmlinux 0x767627bc scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x767dce4b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76814c9c igrab +EXPORT_SYMBOL vmlinux 0x7690e8df pcim_set_mwi +EXPORT_SYMBOL vmlinux 0x7699e44b bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x769a6d85 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76aa0cac udp6_csum_init +EXPORT_SYMBOL vmlinux 0x76b5ca27 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x76bc90c1 dev_driver_string +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e220fb param_set_bool +EXPORT_SYMBOL vmlinux 0x76eadd4f tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x76f83a1b pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x7702c6da flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x77092e8b dma_supported +EXPORT_SYMBOL vmlinux 0x77122cee secpath_set +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x77364b9d dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x774489fa set_disk_ro +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x776020e4 sock_create +EXPORT_SYMBOL vmlinux 0x7782bb04 tcf_block_get +EXPORT_SYMBOL vmlinux 0x77879f19 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x778d29c3 block_write_begin +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b0fed9 __next_node_in +EXPORT_SYMBOL vmlinux 0x77b648b6 security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0x77b64a9b get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c3c5b5 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77f7f1af dev_get_iflink +EXPORT_SYMBOL vmlinux 0x78017904 dqput +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x780b18da dm_put_device +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782667e8 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x7833cc6c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL vmlinux 0x78350b7d __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x783887db dev_mc_sync +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785061ac jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x785151ac seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0x7873b640 padata_do_serial +EXPORT_SYMBOL vmlinux 0x7873eecc elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78af7831 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x78b84b85 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x78df5bfd blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e197a4 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0x78ee81d1 eth_get_headlen +EXPORT_SYMBOL vmlinux 0x78fb27b6 put_fs_context +EXPORT_SYMBOL vmlinux 0x795cc4c8 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin +EXPORT_SYMBOL vmlinux 0x7977f68e sk_dst_check +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x799cede0 udp_disconnect +EXPORT_SYMBOL vmlinux 0x799f35dc send_sig +EXPORT_SYMBOL vmlinux 0x799fa008 padata_free_shell +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a79fe4 new_inode +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c92d5e set_groups +EXPORT_SYMBOL vmlinux 0x79df9633 ioremap_encrypted +EXPORT_SYMBOL vmlinux 0x79e60fee kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x7a00313d phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0x7a06bc65 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a0bb9c9 vme_slot_num +EXPORT_SYMBOL vmlinux 0x7a0febed inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x7a0fec32 ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a2406ce tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a2ce737 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x7a3edf7e remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4cbead _copy_to_iter +EXPORT_SYMBOL vmlinux 0x7a5d7073 __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x7a748982 block_truncate_page +EXPORT_SYMBOL vmlinux 0x7a84049d nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x7a88da87 iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x7a935dd2 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa1f24e pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x7aab0a10 phy_print_status +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad4c0f6 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7add51f0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x7ae0af7a super_setup_bdi +EXPORT_SYMBOL vmlinux 0x7ae2854c load_nls_default +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7aee1fff __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7aef0034 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x7aef1d2e ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x7aff52a7 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x7aff77a3 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b19f5c4 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x7b1ba1c4 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x7b45c7be vfs_get_tree +EXPORT_SYMBOL vmlinux 0x7b4da6ff __init_rwsem +EXPORT_SYMBOL vmlinux 0x7b546a91 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b82b9a1 idr_replace +EXPORT_SYMBOL vmlinux 0x7bb0fd54 d_rehash +EXPORT_SYMBOL vmlinux 0x7bb50b88 acpi_write +EXPORT_SYMBOL vmlinux 0x7bb8a7ce posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7bba6d7d ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x7bbb9e93 __mod_node_page_state +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bd48479 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x7bdcb6b3 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x7bdeba64 locks_init_lock +EXPORT_SYMBOL vmlinux 0x7be5f786 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x7bed23d7 ns_capable +EXPORT_SYMBOL vmlinux 0x7bf6b820 register_framebuffer +EXPORT_SYMBOL vmlinux 0x7c0035e7 skb_queue_head +EXPORT_SYMBOL vmlinux 0x7c026cad inet_put_port +EXPORT_SYMBOL vmlinux 0x7c0b89ad nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x7c0bf356 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x7c152880 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c390ef9 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x7c3f208a dma_virt_ops +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c59c4e1 build_skb +EXPORT_SYMBOL vmlinux 0x7c622331 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x7c72e5ab input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x7c8885d2 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7ca50dfd configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cc26add d_tmpfile +EXPORT_SYMBOL vmlinux 0x7cd8d75e page_offset_base +EXPORT_SYMBOL vmlinux 0x7ce1603d scsi_partsize +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7cff72c3 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x7d0ba682 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d12d76d acpi_get_parent +EXPORT_SYMBOL vmlinux 0x7d19e203 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7d216ecf is_acpi_device_node +EXPORT_SYMBOL vmlinux 0x7d26c366 set_blocksize +EXPORT_SYMBOL vmlinux 0x7d29b8e4 phy_driver_register +EXPORT_SYMBOL vmlinux 0x7d2f8d15 sock_wake_async +EXPORT_SYMBOL vmlinux 0x7d4751d4 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d58e018 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x7d59be82 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x7d5d8eff scsi_remove_device +EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x7d628444 memcpy_fromio +EXPORT_SYMBOL vmlinux 0x7d781609 check_disk_change +EXPORT_SYMBOL vmlinux 0x7dad3299 init_task +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7daefb4e call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7de4eaaf pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x7deb5928 netdev_info +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df0d835 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x7df2f557 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x7df97167 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x7dfb758d dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x7e0826e2 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7e09cb02 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x7e145e38 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x7e1b754e abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x7e2ee55d pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e3252ff dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x7e3f8771 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x7e526bfa __x86_indirect_thunk_r10 +EXPORT_SYMBOL vmlinux 0x7e6f1353 fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x7e709f64 rproc_report_crash +EXPORT_SYMBOL vmlinux 0x7e7bcf26 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x7e896314 __fs_parse +EXPORT_SYMBOL vmlinux 0x7e989edd xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x7eb30c56 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x7ec36bd9 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x7ec78bdd rename_lock +EXPORT_SYMBOL vmlinux 0x7ed29774 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x7eea2ff1 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f07b60d ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x7f1b46fe submit_bh +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f48e4af skb_copy_header +EXPORT_SYMBOL vmlinux 0x7f4ca106 proc_remove +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f6ab332 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7fb45d7d udp_poll +EXPORT_SYMBOL vmlinux 0x7fb4da5a vm_map_pages +EXPORT_SYMBOL vmlinux 0x7fb5472c generic_ro_fops +EXPORT_SYMBOL vmlinux 0x7fb92ccd can_nice +EXPORT_SYMBOL vmlinux 0x7fc2ce8c pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x802c026f mpage_readahead +EXPORT_SYMBOL vmlinux 0x8031343b file_update_time +EXPORT_SYMBOL vmlinux 0x80322eeb mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x8037d89d xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x804af87c wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x804c6de3 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x805a0fe3 console_start +EXPORT_SYMBOL vmlinux 0x80667fec tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8066b867 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x80670242 show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x8089fbba dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x80a717a8 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cb03d4 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dc6a27 __d_lookup_done +EXPORT_SYMBOL vmlinux 0x80e8e8e1 vme_irq_request +EXPORT_SYMBOL vmlinux 0x8106d617 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x81188c30 match_string +EXPORT_SYMBOL vmlinux 0x8125555d skb_copy_expand +EXPORT_SYMBOL vmlinux 0x813e3b30 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x813e9f89 proc_mkdir +EXPORT_SYMBOL vmlinux 0x8143e6c4 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x81564b29 is_nd_btt +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816347c6 agp_device_command +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x81a2c842 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x81ac5e33 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x81b395b3 down_interruptible +EXPORT_SYMBOL vmlinux 0x81b93d32 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x81ba7621 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x81ce9941 intel_scu_ipc_dev_writev +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e01a45 skb_pull +EXPORT_SYMBOL vmlinux 0x81e079b5 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f633c8 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x82028903 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820abbc0 pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x822a0490 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x823c19ea iosf_mbi_unregister_pmic_bus_access_notifier_unlocked +EXPORT_SYMBOL vmlinux 0x82424b64 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x82638cd9 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x8263a6d9 proc_douintvec +EXPORT_SYMBOL vmlinux 0x8273cb1d __seq_open_private +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x829c68c0 xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x82a855b5 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x82b3e0b9 __sb_end_write +EXPORT_SYMBOL vmlinux 0x82b6783d dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x82c23234 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82cc135e touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0x82cc24bd blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x82cc7413 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x82e68a48 skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x835a724a __serio_register_driver +EXPORT_SYMBOL vmlinux 0x836bc1c1 __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x836c08a9 pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0x836d53ba con_is_visible +EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x8388b609 _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x838e47ee ppp_input +EXPORT_SYMBOL vmlinux 0x83977969 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x83b3ba21 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x83be5bf1 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d40523 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x83d831f9 fasync_helper +EXPORT_SYMBOL vmlinux 0x83d8475c security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0x83ecce48 pci_write_config_word +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x84036548 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x840c1c0a set_pages_uc +EXPORT_SYMBOL vmlinux 0x841cd92a tty_port_hangup +EXPORT_SYMBOL vmlinux 0x844fa4b4 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x84501716 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x84559b2f pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x845923e5 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x8464c3b0 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x8488bab2 inc_nlink +EXPORT_SYMBOL vmlinux 0x848d372e iowrite8 +EXPORT_SYMBOL vmlinux 0x849d1f25 pci_release_resource +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84c001f1 __scsi_execute +EXPORT_SYMBOL vmlinux 0x84c1c552 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x84c89fb5 __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x84d172d8 rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0x84d5bfbb clear_nlink +EXPORT_SYMBOL vmlinux 0x84e08b2b netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x84f9774c xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x84feeb3f generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x8502806b phy_attach +EXPORT_SYMBOL vmlinux 0x850ab8e9 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x85144200 dquot_commit +EXPORT_SYMBOL vmlinux 0x85329a81 file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x85351250 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x85532eb1 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856868b2 request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x8586ef58 param_set_ullong +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x85a47ff6 fb_show_logo +EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85cc0c77 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x85d674e0 file_remove_privs +EXPORT_SYMBOL vmlinux 0x85df3312 tso_build_data +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f44a47 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x85fe54eb skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x8602a4d8 _dev_alert +EXPORT_SYMBOL vmlinux 0x860c930d iptun_encaps +EXPORT_SYMBOL vmlinux 0x8633d306 single_open +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8660550c mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0x8667bec0 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x86749581 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x86820552 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x868a980c generic_block_bmap +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86b1e0f2 __free_pages +EXPORT_SYMBOL vmlinux 0x86c20b66 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x86c6de81 proc_symlink +EXPORT_SYMBOL vmlinux 0x86c7272b iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x86cd9400 mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86e7c540 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x86e96c0f blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x86ef3286 netdev_features_change +EXPORT_SYMBOL vmlinux 0x86f27420 iosf_mbi_block_punit_i2c_access +EXPORT_SYMBOL vmlinux 0x86fb4536 cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8702bb1f seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8727c3ae path_has_submounts +EXPORT_SYMBOL vmlinux 0x873bb6fe set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x874db5d1 do_splice_direct +EXPORT_SYMBOL vmlinux 0x87525651 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed +EXPORT_SYMBOL vmlinux 0x87638338 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x876a265a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x8774cc40 netdev_crit +EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x878b6d39 unlock_page +EXPORT_SYMBOL vmlinux 0x87984370 seq_escape +EXPORT_SYMBOL vmlinux 0x87b6443e __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87cbc114 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x87cca78f scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x87d01b88 prepare_creds +EXPORT_SYMBOL vmlinux 0x87d3b95a register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x87e444a8 skb_seq_read +EXPORT_SYMBOL vmlinux 0x87ec52be page_mapped +EXPORT_SYMBOL vmlinux 0x87ed9f63 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x87ef0f77 input_setup_polling +EXPORT_SYMBOL vmlinux 0x87f5da98 node_data +EXPORT_SYMBOL vmlinux 0x88053bc5 rtnl_notify +EXPORT_SYMBOL vmlinux 0x881c4413 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x88245fac vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x8828b217 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x88322454 vfs_getattr +EXPORT_SYMBOL vmlinux 0x88341be2 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x884394bb ip_frag_next +EXPORT_SYMBOL vmlinux 0x887888b5 sync_file_create +EXPORT_SYMBOL vmlinux 0x887fde41 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x8885ddc4 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 +EXPORT_SYMBOL vmlinux 0x88a867dd vme_master_request +EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88b80c98 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x88d5a461 param_ops_string +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88f9e977 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8918c0ca bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x8932857b kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x89384a02 device_add_disk +EXPORT_SYMBOL vmlinux 0x89434b4b radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x8954b844 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0x895627a6 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x896680c4 from_kuid +EXPORT_SYMBOL vmlinux 0x896a9c4a dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x89782b51 rproc_put +EXPORT_SYMBOL vmlinux 0x89a1c897 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x89b4b81f mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x89d1344b fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x89d7c489 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x8a180a33 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x8a32ebe4 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x8a35b432 sme_me_mask +EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a5b16ab netdev_emerg +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a6c7139 acpi_mask_gpe +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7d33c3 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x8a87e330 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x8a8ce6c7 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a995394 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x8ad29bab _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8aea353a nvm_unregister +EXPORT_SYMBOL vmlinux 0x8aee6bb6 skb_put +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b0ccf83 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0x8b30f624 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x8b4fb452 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x8b592f05 lookup_bdev +EXPORT_SYMBOL vmlinux 0x8b59ad48 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0x8b5a8b2c __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x8b5fb52f vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8cda8d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8b8fd954 begin_new_exec +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b966b63 sn_rtc_cycles_per_second +EXPORT_SYMBOL vmlinux 0x8b9807ae bdi_put +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8ba2fb08 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x8ba9e2c6 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x8bbaa283 tcf_register_action +EXPORT_SYMBOL vmlinux 0x8bc3f8d3 rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0x8bd577d0 acpi_ut_exit +EXPORT_SYMBOL vmlinux 0x8be6f4b1 seq_release +EXPORT_SYMBOL vmlinux 0x8c0d459c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x8c15fe3e __x86_retpoline_r10 +EXPORT_SYMBOL vmlinux 0x8c2277e1 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x8c229097 rproc_free +EXPORT_SYMBOL vmlinux 0x8c26d495 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x8c29e925 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x8c31970f inet_frag_find +EXPORT_SYMBOL vmlinux 0x8c3253ec _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x8c35e1e2 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x8c57b2a7 revalidate_disk +EXPORT_SYMBOL vmlinux 0x8c63dc57 dev_activate +EXPORT_SYMBOL vmlinux 0x8c6accad fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x8c6b2bcd security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c813067 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x8c83499f redraw_screen +EXPORT_SYMBOL vmlinux 0x8c872f58 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x8c9e338f acpi_bios_error +EXPORT_SYMBOL vmlinux 0x8cb1afd7 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0x8cb544df __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8cc4ae5f ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccff663 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cea59b5 tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x8cf6d169 simple_open +EXPORT_SYMBOL vmlinux 0x8d03f133 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x8d06bb83 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x8d174b85 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8d4cc75b fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7c56ef bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x8d8cf3fb dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0x8d91c9a0 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x8d96c6ed fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x8d9ca0e6 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x8d9e5578 inet_addr_type +EXPORT_SYMBOL vmlinux 0x8db22efe acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x8dc1b7fd tty_throttle +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8de86a9a param_ops_ushort +EXPORT_SYMBOL vmlinux 0x8df2cd79 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8df7e8d6 cpumask_any_but +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8dfd0604 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x8e16873d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x8e17b3ae idr_destroy +EXPORT_SYMBOL vmlinux 0x8e21c9a1 dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x8e24998f input_match_device_id +EXPORT_SYMBOL vmlinux 0x8e2d1236 ex_handler_wrmsr_unsafe +EXPORT_SYMBOL vmlinux 0x8e55d65c dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0x8e5ff190 __brelse +EXPORT_SYMBOL vmlinux 0x8e663d0f zalloc_cpumask_var_node +EXPORT_SYMBOL vmlinux 0x8e68f58e d_add_ci +EXPORT_SYMBOL vmlinux 0x8e784c5f rtnl_create_link +EXPORT_SYMBOL vmlinux 0x8e881de3 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0x8e8b54e3 mpage_readpage +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ebf355c keyring_alloc +EXPORT_SYMBOL vmlinux 0x8ec96f04 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x8ed521c0 blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0x8ed8297d netlink_unicast +EXPORT_SYMBOL vmlinux 0x8eea4ebe skb_checksum_help +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f18bff7 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f38d383 ex_handler_default +EXPORT_SYMBOL vmlinux 0x8f3e6adb mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8f5635f9 md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x8f573677 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x8f80bf11 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0x8f8d4a87 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8f92ed9a qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x8f93bd1f udp6_seq_ops +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa25c24 xa_find +EXPORT_SYMBOL vmlinux 0x8fb5f029 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8fc4b5b7 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x8fc66e6f dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x8fd4b00f bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0x8fd7ea76 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x8fe00dac devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x8fe94f01 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x9001275f phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x90055c2f jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x901f1447 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x902a9e38 md_update_sb +EXPORT_SYMBOL vmlinux 0x902d2f30 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x90300796 xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0x9030d43b mmc_sw_reset +EXPORT_SYMBOL vmlinux 0x9034a696 mempool_destroy +EXPORT_SYMBOL vmlinux 0x904da415 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user +EXPORT_SYMBOL vmlinux 0x90602ed7 param_get_byte +EXPORT_SYMBOL vmlinux 0x9066fc5e rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0x907ba52c posix_acl_valid +EXPORT_SYMBOL vmlinux 0x90917f0d skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x909d2cdf vm_event_states +EXPORT_SYMBOL vmlinux 0x90cbf669 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0x90cd7618 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x90f13d1a get_cached_acl +EXPORT_SYMBOL vmlinux 0x90f7423a crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x90f8d83a xfrm_state_update +EXPORT_SYMBOL vmlinux 0x910da0c7 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x9114dd5f vmap +EXPORT_SYMBOL vmlinux 0x91180e26 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x91206e8c seq_read_iter +EXPORT_SYMBOL vmlinux 0x912c5ff2 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x91463aa2 phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166f064 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9176145b acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x917a3a67 put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a10c61 intel_scu_ipc_dev_simple_command +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91ac4648 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x91e0d93a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x91e613ae scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x91e9219c dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x91eaefca set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x91f44510 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x91f7f051 netif_device_attach +EXPORT_SYMBOL vmlinux 0x92100df9 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0x9224326c amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92515b7f tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x92540fbf finish_wait +EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x925df35f tcp_splice_read +EXPORT_SYMBOL vmlinux 0x9263ca57 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x927438e3 iommu_get_msi_cookie +EXPORT_SYMBOL vmlinux 0x9274c615 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x927f987b agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x929de7d4 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x92a51e56 acpi_debug_print_raw +EXPORT_SYMBOL vmlinux 0x92a96425 from_kgid +EXPORT_SYMBOL vmlinux 0x92b99a33 acpi_put_table +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92c827fb sock_no_listen +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92ff166a pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x930035f3 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x931782bb prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x931c10f6 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x932889f0 single_open_size +EXPORT_SYMBOL vmlinux 0x93541402 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x93742389 dma_pool_create +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937f3ec5 simple_rmdir +EXPORT_SYMBOL vmlinux 0x9384f143 simple_release_fs +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b7ab9f tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93d6dd8c complete_all +EXPORT_SYMBOL vmlinux 0x9417804a drop_super +EXPORT_SYMBOL vmlinux 0x942025d6 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x94294163 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x945b7f73 netif_skb_features +EXPORT_SYMBOL vmlinux 0x948e89b2 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94ae591b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x94bb1d9b mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0x94bb7ec3 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94c41282 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x94cda12f phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0x94e481cf ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x94f5466d mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x94f82cac udp_sendmsg +EXPORT_SYMBOL vmlinux 0x9509c97a md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9510e21c kthread_blkcg +EXPORT_SYMBOL vmlinux 0x9517620d agp_put_bridge +EXPORT_SYMBOL vmlinux 0x953fc8ed dev_change_flags +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x9567a773 dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0x956b8ac9 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x95729533 tcp_connect +EXPORT_SYMBOL vmlinux 0x958a0f0a neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x958ad954 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x95a0c7a8 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x95a17522 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x95a67b07 udp_table +EXPORT_SYMBOL vmlinux 0x95b0b646 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0x95c6b115 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x95f83661 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x95f94e82 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x960b7f48 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x96255800 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x9625695d acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x962c4977 clkdev_add +EXPORT_SYMBOL vmlinux 0x963dcba1 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x96498ed9 dev_load +EXPORT_SYMBOL vmlinux 0x964d3c24 vfio_unregister_notifier +EXPORT_SYMBOL vmlinux 0x96848186 scnprintf +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d45a92 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x96e18208 __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x96e55a40 generic_permission +EXPORT_SYMBOL vmlinux 0x96e5d30f gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x96eab78b iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x97314a64 skb_trim +EXPORT_SYMBOL vmlinux 0x973f4ca8 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x97651e6c vmemmap_base +EXPORT_SYMBOL vmlinux 0x977f11a1 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x977f511b __mutex_init +EXPORT_SYMBOL vmlinux 0x978cff1a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97a57ac3 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c0cf49 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x97ca580a cfb_imageblit +EXPORT_SYMBOL vmlinux 0x97dca56f mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x97eaffa7 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x97ef033d ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x97ef300b kill_fasync +EXPORT_SYMBOL vmlinux 0x97f7155b __frontswap_store +EXPORT_SYMBOL vmlinux 0x97fdd532 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9806f1e1 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x98304d02 fs_param_is_path +EXPORT_SYMBOL vmlinux 0x983115c5 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x98740fc3 _dev_crit +EXPORT_SYMBOL vmlinux 0x98839378 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x98880c73 ihold +EXPORT_SYMBOL vmlinux 0x988a45b3 sock_no_accept +EXPORT_SYMBOL vmlinux 0x98900519 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x98a9e71c serio_reconnect +EXPORT_SYMBOL vmlinux 0x98b8b7a3 pci_release_regions +EXPORT_SYMBOL vmlinux 0x98c039dc dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x98c04516 simple_link +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98e93be8 d_genocide +EXPORT_SYMBOL vmlinux 0x9904bf3b kernel_accept +EXPORT_SYMBOL vmlinux 0x99066626 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x99078b39 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x992493c0 __page_symlink +EXPORT_SYMBOL vmlinux 0x992e8372 devm_request_resource +EXPORT_SYMBOL vmlinux 0x9931d194 input_get_timestamp +EXPORT_SYMBOL vmlinux 0x993274f6 __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x994a724d netpoll_print_options +EXPORT_SYMBOL vmlinux 0x994c776a __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x995dcc1a jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x996182ad skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0x9975dc22 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x99865e5c vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a49346 tty_devnum +EXPORT_SYMBOL vmlinux 0x99ab0819 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99d65df1 efi +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99eb6a7e neigh_ifdown +EXPORT_SYMBOL vmlinux 0x99ed63da phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x99ee741a dev_deactivate +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x99f212b0 rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a0f8f52 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x9a184390 ata_link_printk +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a22391e radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x9a23e4c2 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9a7e51b3 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x9a98def3 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x9a991e0b _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x9aa284bb super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0x9aa9106d bdgrab +EXPORT_SYMBOL vmlinux 0x9aab0ad0 devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9aaf9f10 rproc_da_to_va +EXPORT_SYMBOL vmlinux 0x9ac0012e inode_get_bytes +EXPORT_SYMBOL vmlinux 0x9ad227ce __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x9ad7a582 iosf_mbi_assert_punit_acquired +EXPORT_SYMBOL vmlinux 0x9ae6f526 fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x9ae84c07 agp_create_memory +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b4c2ff6 rt_dst_clone +EXPORT_SYMBOL vmlinux 0x9b504f2b register_shrinker +EXPORT_SYMBOL vmlinux 0x9b67ea28 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x9b72478f acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x9b858114 module_put +EXPORT_SYMBOL vmlinux 0x9b8bcc69 elevator_alloc +EXPORT_SYMBOL vmlinux 0x9b96e223 locks_free_lock +EXPORT_SYMBOL vmlinux 0x9b9d4676 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x9bb73c37 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x9bc0541f inet_protos +EXPORT_SYMBOL vmlinux 0x9bdad506 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x9be865ec pnp_device_attach +EXPORT_SYMBOL vmlinux 0x9bee5290 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x9bf0516d fput +EXPORT_SYMBOL vmlinux 0x9c092549 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x9c1105e5 nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0x9c122bcf mempool_create_node +EXPORT_SYMBOL vmlinux 0x9c7ffe65 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x9c8964e2 xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0x9c942adc vprintk_emit +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb986f2 vmalloc_base +EXPORT_SYMBOL vmlinux 0x9cc9de06 input_set_keycode +EXPORT_SYMBOL vmlinux 0x9ccc0bea mdio_device_register +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9ccf71dd poll_freewait +EXPORT_SYMBOL vmlinux 0x9cd1f58f path_put +EXPORT_SYMBOL vmlinux 0x9cd91791 register_sysctl +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9d05af3e __tcf_idr_release +EXPORT_SYMBOL vmlinux 0x9d099a39 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x9d0a9808 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x9d0d60b7 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d116066 param_ops_short +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d515578 __napi_schedule +EXPORT_SYMBOL vmlinux 0x9d51fa70 migrate_vma_setup +EXPORT_SYMBOL vmlinux 0x9d5b3c08 md_bitmap_free +EXPORT_SYMBOL vmlinux 0x9d5f2a88 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x9d61e994 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x9d70541a native_save_fl +EXPORT_SYMBOL vmlinux 0x9d7b3f4b vme_dma_request +EXPORT_SYMBOL vmlinux 0x9d855703 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9d92f3ad __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9da6b641 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x9db9ae23 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x9dc3cb2c rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0x9de6d09a tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0x9de7765d module_layout +EXPORT_SYMBOL vmlinux 0x9defcc91 md_write_start +EXPORT_SYMBOL vmlinux 0x9e04346e follow_down_one +EXPORT_SYMBOL vmlinux 0x9e054b89 mntput +EXPORT_SYMBOL vmlinux 0x9e07a4ff passthru_features_check +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e2737f0 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0x9e3afd8a mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e631c96 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e683f75 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x9e755462 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e825189 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0x9e87fc49 blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0x9e978ccc pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf +EXPORT_SYMBOL vmlinux 0x9ea54c32 kill_block_super +EXPORT_SYMBOL vmlinux 0x9ea7500f PDE_DATA +EXPORT_SYMBOL vmlinux 0x9ea85991 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x9eab8d85 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec37525 get_tree_single +EXPORT_SYMBOL vmlinux 0x9ec6ca29 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9edf6b07 vfs_get_fsid +EXPORT_SYMBOL vmlinux 0x9eee3a4e is_nd_dax +EXPORT_SYMBOL vmlinux 0x9f143d14 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0x9f22a633 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x9f25f45a init_pseudo +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4f2aa3 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f52bf91 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x9f54e77b blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f65c857 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x9f919667 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x9f929ffb filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9ac975 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fd2e44b phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0x9fdc2778 sk_net_capable +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00e3bd9 phy_connect +EXPORT_SYMBOL vmlinux 0xa011d4b3 phy_write_mmd +EXPORT_SYMBOL vmlinux 0xa01214d0 migrate_vma_pages +EXPORT_SYMBOL vmlinux 0xa02aa74a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xa02f31e8 kernel_connect +EXPORT_SYMBOL vmlinux 0xa03c59ec ptp_find_pin +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04e9e7b freezing_slow_path +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa06cc28a bio_reset +EXPORT_SYMBOL vmlinux 0xa06f8f02 sock_bindtoindex +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa084f79f cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0xa08ab53e acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xa08cecc1 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0a3d93b tso_start +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ef1b8c netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xa0f29cd4 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xa0f587a7 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1122145 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa134506b pnp_device_detach +EXPORT_SYMBOL vmlinux 0xa13e780a gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xa147d712 put_ipc_ns +EXPORT_SYMBOL vmlinux 0xa155c071 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0xa1645177 dm_io +EXPORT_SYMBOL vmlinux 0xa16c8613 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xa1899c95 bdi_alloc +EXPORT_SYMBOL vmlinux 0xa18b80f9 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xa1ab0cb2 block_commit_write +EXPORT_SYMBOL vmlinux 0xa1bedd72 amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d62c54 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xa1f326b9 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xa1f365f1 neigh_xmit +EXPORT_SYMBOL vmlinux 0xa1f61432 set_security_override +EXPORT_SYMBOL vmlinux 0xa1f9a134 __x86_indirect_thunk_rsi +EXPORT_SYMBOL vmlinux 0xa1fbbc28 pci_read_config_byte +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa22fc689 vga_switcheroo_client_probe_defer +EXPORT_SYMBOL vmlinux 0xa2326c49 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa25b4105 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa2622701 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa2869c41 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa28d81bd pci_read_vpd +EXPORT_SYMBOL vmlinux 0xa29cf00c km_report +EXPORT_SYMBOL vmlinux 0xa2e06dac md_handle_request +EXPORT_SYMBOL vmlinux 0xa30290ee pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xa30bcd6b config_group_init +EXPORT_SYMBOL vmlinux 0xa32b2032 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0xa32cbeba ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xa342b0cf block_write_end +EXPORT_SYMBOL vmlinux 0xa3479941 padata_start +EXPORT_SYMBOL vmlinux 0xa38e40ca md_done_sync +EXPORT_SYMBOL vmlinux 0xa38e5d1d mdiobus_scan +EXPORT_SYMBOL vmlinux 0xa38f21b9 amd_iommu_update_ga +EXPORT_SYMBOL vmlinux 0xa3a47ab1 file_path +EXPORT_SYMBOL vmlinux 0xa3a9f24c register_key_type +EXPORT_SYMBOL vmlinux 0xa3aa2da0 dev_add_pack +EXPORT_SYMBOL vmlinux 0xa3afe162 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa3e4f871 acpi_initialize_debugger +EXPORT_SYMBOL vmlinux 0xa3e6ab9e get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0xa3ec978e seq_vprintf +EXPORT_SYMBOL vmlinux 0xa3f1a3a3 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa40ff01b acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xa4191c0b memset_io +EXPORT_SYMBOL vmlinux 0xa4332d1d key_task_permission +EXPORT_SYMBOL vmlinux 0xa43a0e42 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xa4422a1e tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xa48278f2 send_sig_mceerr +EXPORT_SYMBOL vmlinux 0xa4871a51 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xa48f1db2 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xa4afca76 skb_copy +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4be40d2 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xa4c63de0 ip_defrag +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4cc97df do_clone_file_range +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f970ed blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xa4faf62a acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xa507125e acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xa50bcff0 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0xa52b8931 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xa52bedf6 xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0xa53e6a4a agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56105ec bdput +EXPORT_SYMBOL vmlinux 0xa57271e9 phy_sfp_probe +EXPORT_SYMBOL vmlinux 0xa572c9a3 noop_fsync +EXPORT_SYMBOL vmlinux 0xa58a2391 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0xa5956abe ioread64_hi_lo +EXPORT_SYMBOL vmlinux 0xa5976e4f dev_base_lock +EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa5bfb9f3 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0xa5d91be5 translation_pre_enabled +EXPORT_SYMBOL vmlinux 0xa5e07469 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xa5e55057 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0xa5e7183a drop_super_exclusive +EXPORT_SYMBOL vmlinux 0xa60236e0 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xa6073579 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa6257a2f complete +EXPORT_SYMBOL vmlinux 0xa673931d blackhole_netdev +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa69b1e96 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xa6c25600 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa6c45ae6 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa6fdccc1 kernel_listen +EXPORT_SYMBOL vmlinux 0xa6feaa62 nvm_submit_io +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa72a491f I_BDEV +EXPORT_SYMBOL vmlinux 0xa72cfb7d ioremap_wt +EXPORT_SYMBOL vmlinux 0xa748dba3 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa74c7a97 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa75ae24b rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0xa778a5ca devm_memunmap +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa780bce0 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0xa7813502 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xa787b867 serio_bus +EXPORT_SYMBOL vmlinux 0xa7930fe5 sk_stream_error +EXPORT_SYMBOL vmlinux 0xa7c01546 no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0xa7d5f92e ida_destroy +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa7fa8078 xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0xa805ecfc acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0xa812fc2f dev_uc_flush +EXPORT_SYMBOL vmlinux 0xa8178f13 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xa8181adf proc_dointvec +EXPORT_SYMBOL vmlinux 0xa81d96cf pci_write_config_dword +EXPORT_SYMBOL vmlinux 0xa824b524 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa836ba02 wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xa83dfd5f blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8467c94 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa8519a6a seq_pad +EXPORT_SYMBOL vmlinux 0xa853396b xa_extract +EXPORT_SYMBOL vmlinux 0xa85a3e6d xa_load +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa872db9c alloc_fcdev +EXPORT_SYMBOL vmlinux 0xa886f577 flow_rule_match_control +EXPORT_SYMBOL vmlinux 0xa897e3e7 mempool_free +EXPORT_SYMBOL vmlinux 0xa8c0ead5 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xa8c2bd91 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8cad4a3 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xa8db0213 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xa8e583ca pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xa8e6933a qdf2400_e44_present +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa90d9685 thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa917d2ea vga_put +EXPORT_SYMBOL vmlinux 0xa91ad831 dev_set_group +EXPORT_SYMBOL vmlinux 0xa91e3a9e pci_iomap_range +EXPORT_SYMBOL vmlinux 0xa9293531 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa92b97e5 discard_new_inode +EXPORT_SYMBOL vmlinux 0xa931af8a asm_load_gs_index +EXPORT_SYMBOL vmlinux 0xa931feea iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa93505ed d_delete +EXPORT_SYMBOL vmlinux 0xa94a09bb mem_section +EXPORT_SYMBOL vmlinux 0xa953f3b4 pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0xa9562b92 dma_free_attrs +EXPORT_SYMBOL vmlinux 0xa963a066 block_write_full_page +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa9785b49 cpu_core_map +EXPORT_SYMBOL vmlinux 0xa979656d mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xa98a26c9 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0xa99a349d bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa99f6c8f simple_setattr +EXPORT_SYMBOL vmlinux 0xa9a667c9 fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9a90004 udp_prot +EXPORT_SYMBOL vmlinux 0xa9ad8cd7 flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0xa9beb05c dst_release_immediate +EXPORT_SYMBOL vmlinux 0xa9c72303 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0xa9df745b pci_assign_resource +EXPORT_SYMBOL vmlinux 0xa9f7e8e1 __break_lease +EXPORT_SYMBOL vmlinux 0xa9fd6257 __neigh_create +EXPORT_SYMBOL vmlinux 0xa9ff30f0 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xaa008425 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xaa00fdc0 ec_transaction +EXPORT_SYMBOL vmlinux 0xaa1713dd ps2_begin_command +EXPORT_SYMBOL vmlinux 0xaa1df6ec __devm_request_region +EXPORT_SYMBOL vmlinux 0xaa341905 acpi_bios_exception +EXPORT_SYMBOL vmlinux 0xaa3c5fd9 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xaa551855 fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7ce029 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xaa7f799a skb_queue_purge +EXPORT_SYMBOL vmlinux 0xaa84c6ea mr_table_dump +EXPORT_SYMBOL vmlinux 0xaa865ffd pcie_print_link_status +EXPORT_SYMBOL vmlinux 0xaa89d8d9 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0xaa8bf34a path_is_mountpoint +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaab3ece7 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaae4cfdf md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0fe901 devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0xab14ecd3 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xab1e8940 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab426564 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xab472982 fb_set_var +EXPORT_SYMBOL vmlinux 0xab4e76fb mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0xab5e130b uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab67a0ac dql_init +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7b32bd pci_resize_resource +EXPORT_SYMBOL vmlinux 0xab7b8e68 __x86_retpoline_rbx +EXPORT_SYMBOL vmlinux 0xab936740 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xab9c3c30 udp_seq_start +EXPORT_SYMBOL vmlinux 0xaba81805 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0xaba842c0 _dev_err +EXPORT_SYMBOL vmlinux 0xabac8b0c eisa_driver_register +EXPORT_SYMBOL vmlinux 0xabf224b6 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xac0a2a17 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac209201 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xac22477d __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac424731 tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0xac49783a xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xac4f34dc __getblk_gfp +EXPORT_SYMBOL vmlinux 0xac537ac2 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac615450 mroute6_is_socket +EXPORT_SYMBOL vmlinux 0xac6446ea phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0xac7a3e1b nd_device_unregister +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xac9b74af xp_free +EXPORT_SYMBOL vmlinux 0xacaa4c72 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacea5207 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xacea8173 acpi_debug_print +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1036a2 amd_iommu_activate_guest_mode +EXPORT_SYMBOL vmlinux 0xad2725e0 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0xad2951a9 ex_handler_rdmsr_unsafe +EXPORT_SYMBOL vmlinux 0xad32302b acpi_dev_hid_uid_match +EXPORT_SYMBOL vmlinux 0xad4300af rtc_add_groups +EXPORT_SYMBOL vmlinux 0xad536c91 x86_cpu_to_acpiid +EXPORT_SYMBOL vmlinux 0xad6ba40e radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad757152 pmem_sector_size +EXPORT_SYMBOL vmlinux 0xad76b9e2 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xad7cd475 __close_fd +EXPORT_SYMBOL vmlinux 0xad83fc4b neigh_carrier_down +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9901ae bit_waitqueue +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xada15b06 file_modified +EXPORT_SYMBOL vmlinux 0xada31e57 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xada543ba agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadc044b7 vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0xadcd3198 seq_release_private +EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xadd7c06f __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xaddd2a43 vm_mmap +EXPORT_SYMBOL vmlinux 0xadec53f8 __block_write_full_page +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae1860b4 phy_aneg_done +EXPORT_SYMBOL vmlinux 0xae247fe9 inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae37a70d page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0xae5a04bb acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0xae7e3a35 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xae978de5 tty_lock +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeba72a5 kobject_get +EXPORT_SYMBOL vmlinux 0xaebd12f0 acpi_get_name +EXPORT_SYMBOL vmlinux 0xaec60722 abort_creds +EXPORT_SYMBOL vmlinux 0xaee79078 d_add +EXPORT_SYMBOL vmlinux 0xaf0d06d8 nd_dax_probe +EXPORT_SYMBOL vmlinux 0xaf2b8325 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xaf354bbe cpu_tss_rw +EXPORT_SYMBOL vmlinux 0xaf3ac891 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf65e82e tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xaf9750c6 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xaf9c744a pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafc6a80f xfrm_input +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafe670c1 tcp_req_err +EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0xaff53808 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xaff93a02 cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0xaff9d237 bdget_disk +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb0207886 dentry_open +EXPORT_SYMBOL vmlinux 0xb0300754 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb059e192 generic_fillattr +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06010e3 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xb061a98a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xb069f3c1 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0ad2afe rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xb0aed408 ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0xb0c5e247 lockref_put_return +EXPORT_SYMBOL vmlinux 0xb0d989f3 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xb0d9a8a7 input_event +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0ecc5b7 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize +EXPORT_SYMBOL vmlinux 0xb0fa92c3 start_tty +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb14a8462 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb1533b78 tty_port_init +EXPORT_SYMBOL vmlinux 0xb15a7591 devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb173564f xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0xb17ebcd6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xb1944fff input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb19727ad dquot_destroy +EXPORT_SYMBOL vmlinux 0xb19a5453 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1d49dd1 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1e12d81 krealloc +EXPORT_SYMBOL vmlinux 0xb1e4835b netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0xb1e51402 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xb1f1fca2 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xb203b67a update_region +EXPORT_SYMBOL vmlinux 0xb206ed6b proc_create_seq_private +EXPORT_SYMBOL vmlinux 0xb213738b tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb233dccd send_sig_info +EXPORT_SYMBOL vmlinux 0xb252be1c __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xb27e3415 pci_read_config_word +EXPORT_SYMBOL vmlinux 0xb2bcb088 acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0xb2ca79b1 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb3131aba cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xb31404c3 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb32a5973 acpi_ut_status_exit +EXPORT_SYMBOL vmlinux 0xb32fba50 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb3635b01 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb3720ede skb_dequeue +EXPORT_SYMBOL vmlinux 0xb376e6b1 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xb37e437d mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0xb37edb4e param_set_uint +EXPORT_SYMBOL vmlinux 0xb3863a67 acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xb38dbd93 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0xb3923a56 vfs_mkobj +EXPORT_SYMBOL vmlinux 0xb392b113 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0xb3952b77 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xb3a2dfdf nmi_panic +EXPORT_SYMBOL vmlinux 0xb3bb4ee1 finish_swait +EXPORT_SYMBOL vmlinux 0xb3bcff33 mmc_start_request +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3c4681f nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d8759b dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0xb3e3b5ba get_vm_area +EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4043948 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0xb417f082 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb43ccc86 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb43f8ab8 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xb44ad4b3 _copy_to_user +EXPORT_SYMBOL vmlinux 0xb44d23af blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0xb4577003 acpi_dev_present +EXPORT_SYMBOL vmlinux 0xb460ca48 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xb466aa2f netpoll_send_skb +EXPORT_SYMBOL vmlinux 0xb4685b22 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb46a9e62 register_md_personality +EXPORT_SYMBOL vmlinux 0xb46d953a param_ops_bool +EXPORT_SYMBOL vmlinux 0xb47cca30 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4985beb ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0xb49a0bd2 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xb49c2af4 inode_insert5 +EXPORT_SYMBOL vmlinux 0xb4af9238 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xb4b8f027 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xb4ba5ff6 devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0xb4c6b329 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0xb4edb927 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb50b55bc blk_get_queue +EXPORT_SYMBOL vmlinux 0xb51862f5 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0xb51c0727 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0xb51dbe4e jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53f2810 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xb544c5a4 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0xb54a7a09 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a76aa5 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ab892d uv_undefined +EXPORT_SYMBOL vmlinux 0xb5b837d7 vfs_tmpfile +EXPORT_SYMBOL vmlinux 0xb5e1a53b configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb5f008a6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xb5f17439 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb601be4c __x86_indirect_thunk_rdx +EXPORT_SYMBOL vmlinux 0xb6084309 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb6147d10 iov_iter_pipe +EXPORT_SYMBOL vmlinux 0xb62056b4 sock_i_uid +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb654ef65 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb687d271 netif_device_detach +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69dafbe qdisc_hash_add +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6aa6737 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0xb6ab0abb pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6e08372 inet6_getname +EXPORT_SYMBOL vmlinux 0xb6e46901 write_one_page +EXPORT_SYMBOL vmlinux 0xb6ef23d2 phy_write_paged +EXPORT_SYMBOL vmlinux 0xb703acd7 pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0xb7145688 arp_create +EXPORT_SYMBOL vmlinux 0xb729b528 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xb72f3b2a km_policy_expired +EXPORT_SYMBOL vmlinux 0xb737b185 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xb73c87c1 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb7480cdc tcp_init_sock +EXPORT_SYMBOL vmlinux 0xb7593ddc iosf_mbi_unregister_pmic_bus_access_notifier +EXPORT_SYMBOL vmlinux 0xb76c4afb skb_vlan_push +EXPORT_SYMBOL vmlinux 0xb77d3aa3 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb781b76d device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb78f5a32 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0xb7aa65ca sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xb7aa8db3 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xb7c0f443 sort +EXPORT_SYMBOL vmlinux 0xb7c24ca0 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7da6fe3 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xb7ed5699 __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xb7f30859 napi_disable +EXPORT_SYMBOL vmlinux 0xb7ff980e xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0xb800950a vme_bus_num +EXPORT_SYMBOL vmlinux 0xb80b7ee9 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xb814e18a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xb8212e6e blk_rq_init +EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xb83d0370 pci_irq_vector +EXPORT_SYMBOL vmlinux 0xb855d051 pci_free_irq +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb86f74c5 free_cpumask_var +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb8a6f3cc amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8b68e03 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xb8b88e1c __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xb8cf80ce amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0xb8d2d447 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xb8e01b7e refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8fe5468 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xb901e25f generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xb904ccd5 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb905d126 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9113962 km_state_notify +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb914a303 padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xb9251fb3 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xb930861e eth_mac_addr +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb94d13d0 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb96429d9 nf_log_packet +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb97f7045 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xb999d147 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xb9ad6464 kobject_add +EXPORT_SYMBOL vmlinux 0xb9af1d0d __xa_clear_mark +EXPORT_SYMBOL vmlinux 0xb9bd1309 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xb9bdb4fd rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0xb9c2350f fs_bio_set +EXPORT_SYMBOL vmlinux 0xb9c57d97 generic_setlease +EXPORT_SYMBOL vmlinux 0xb9c91f5a tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0xb9e276cf wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xb9e7429c memcpy_toio +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9fdaaa4 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0xba019f8f simple_readpage +EXPORT_SYMBOL vmlinux 0xba0af0f5 devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le +EXPORT_SYMBOL vmlinux 0xba206016 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0xba29b639 compat_import_iovec +EXPORT_SYMBOL vmlinux 0xba2ad5a8 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xba344277 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xba3c2f41 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xba43d6cb agp_backend_release +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5d5b1d fb_blank +EXPORT_SYMBOL vmlinux 0xba6d1146 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xba786d67 arp_xmit +EXPORT_SYMBOL vmlinux 0xba7abff5 input_close_device +EXPORT_SYMBOL vmlinux 0xba7e21e4 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xba85c8fd pci_enable_device +EXPORT_SYMBOL vmlinux 0xba8830f2 try_lookup_one_len +EXPORT_SYMBOL vmlinux 0xbaa179e4 user_path_create +EXPORT_SYMBOL vmlinux 0xbaa7bf89 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xbacb1a6a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xbad19ac3 rio_query_mport +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbaeaaa6f phy_do_ioctl +EXPORT_SYMBOL vmlinux 0xbaffff96 ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xbb026480 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0d6849 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xbb13595e smp_call_function_many +EXPORT_SYMBOL vmlinux 0xbb1a8f07 input_flush_device +EXPORT_SYMBOL vmlinux 0xbb1bac24 acpi_unregister_debugger +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb278e86 devm_iounmap +EXPORT_SYMBOL vmlinux 0xbb2e4eaf noop_qdisc +EXPORT_SYMBOL vmlinux 0xbb2e614c dma_resv_fini +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb62a0b2 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xbb7b6718 km_state_expired +EXPORT_SYMBOL vmlinux 0xbb8e169a vga_switcheroo_handler_flags +EXPORT_SYMBOL vmlinux 0xbba4c552 sk_capable +EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order +EXPORT_SYMBOL vmlinux 0xbc00f6e6 __icmp_send +EXPORT_SYMBOL vmlinux 0xbc099354 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc2d9164 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcae80c3 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc63e21 backlight_force_update +EXPORT_SYMBOL vmlinux 0xbcd19c61 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xbcdb8c33 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xbceec336 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0xbd01ec4d mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xbd080425 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xbd088c8e cdev_device_del +EXPORT_SYMBOL vmlinux 0xbd1152b2 freeze_bdev +EXPORT_SYMBOL vmlinux 0xbd1f57a8 rproc_del +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd544144 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0xbd5e38fe dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 +EXPORT_SYMBOL vmlinux 0xbd78d62e ns_capable_setid +EXPORT_SYMBOL vmlinux 0xbd9ba8d4 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xbd9d4820 unpin_user_page +EXPORT_SYMBOL vmlinux 0xbdb81daf wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0xbdc14889 phy_read_paged +EXPORT_SYMBOL vmlinux 0xbdc28c27 devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe0110e7 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0xbe0c0d19 phy_attached_info +EXPORT_SYMBOL vmlinux 0xbe0f035f acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xbe12dd4e inet_stream_ops +EXPORT_SYMBOL vmlinux 0xbe18aa52 vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0xbe2aa477 _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0xbe2b5784 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xbe49252c acpi_os_write_port +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe58e12e vme_lm_request +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe63246e brioctl_set +EXPORT_SYMBOL vmlinux 0xbe6a866f __wait_on_bit +EXPORT_SYMBOL vmlinux 0xbe6dda67 tty_name +EXPORT_SYMBOL vmlinux 0xbe7e05a8 acpi_tb_install_and_load_table +EXPORT_SYMBOL vmlinux 0xbea0da5f pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xbeaaeccc mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0xbec5f4b9 pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0xbec9496b vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef94376 netdev_notice +EXPORT_SYMBOL vmlinux 0xbefa51a3 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xbefbc9a1 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xbf047b11 dma_ops +EXPORT_SYMBOL vmlinux 0xbf191f68 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xbf2545ca input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xbf2e011c __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0xbf3193ec acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xbf4281f4 set_anon_super +EXPORT_SYMBOL vmlinux 0xbf516e38 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xbf530903 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xbf5736c4 seq_file_path +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf73a912 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xbf8f44a0 param_set_ulong +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfba5333 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfcaba24 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xbfcefee7 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xbfd0f27c kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xbfdcb43a __x86_indirect_thunk_r11 +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc003a3d6 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xc01ae134 phy_validate_pause +EXPORT_SYMBOL vmlinux 0xc01f731a param_ops_uint +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc03f2de5 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xc0487404 cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc07442c9 bio_advance +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0782da1 _copy_from_iter +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc08698a1 ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xc095e266 udp_seq_ops +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xc0be1ed8 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0xc0d2ed17 sock_create_kern +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0d6762e generic_make_request +EXPORT_SYMBOL vmlinux 0xc0dbcfeb sock_alloc +EXPORT_SYMBOL vmlinux 0xc0ddfb95 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc0f30a0e drop_nlink +EXPORT_SYMBOL vmlinux 0xc0f4e5b4 udp_ioctl +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc111ae64 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xc1179daa kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0xc11ff38f eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc12796e8 bio_put +EXPORT_SYMBOL vmlinux 0xc1365323 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0xc13edc37 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc141655c phy_device_free +EXPORT_SYMBOL vmlinux 0xc14c3654 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xc14dc168 acpi_get_data +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc156c981 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc15906df param_get_long +EXPORT_SYMBOL vmlinux 0xc162dd53 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc197d319 __skb_pad +EXPORT_SYMBOL vmlinux 0xc199b3df __skb_checksum +EXPORT_SYMBOL vmlinux 0xc1aae5bf devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0xc1b50182 dev_trans_start +EXPORT_SYMBOL vmlinux 0xc1b714b3 pnp_is_active +EXPORT_SYMBOL vmlinux 0xc1b7ebbc posix_test_lock +EXPORT_SYMBOL vmlinux 0xc1b90970 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e5e7e5 sync_blockdev +EXPORT_SYMBOL vmlinux 0xc20004ae filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xc20c5c91 iterate_dir +EXPORT_SYMBOL vmlinux 0xc20e41e3 mr_dump +EXPORT_SYMBOL vmlinux 0xc21e2b46 clk_get +EXPORT_SYMBOL vmlinux 0xc22c4857 i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc245e0c0 param_get_uint +EXPORT_SYMBOL vmlinux 0xc255c01c ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc278c965 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc29957c3 __x86_indirect_thunk_rcx +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a17ebe seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc2a50294 mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0xc2af7850 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xc2b0b4d4 xp_dma_map +EXPORT_SYMBOL vmlinux 0xc2c4ac94 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0xc2e01cc5 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e89146 component_match_add_release +EXPORT_SYMBOL vmlinux 0xc2f74188 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc30b20fd dev_add_offload +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc3154391 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc329439b jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc32fcd73 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xc345713f framebuffer_release +EXPORT_SYMBOL vmlinux 0xc3661744 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xc36a3bd4 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0xc3762aec mempool_alloc +EXPORT_SYMBOL vmlinux 0xc37a61ee rproc_shutdown +EXPORT_SYMBOL vmlinux 0xc37e49d3 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc3942966 override_creds +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b28a28 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xc3bc72ad trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xc3bddc3d inet_register_protosw +EXPORT_SYMBOL vmlinux 0xc3c88057 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xc3d0c724 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xc3da16ef free_netdev +EXPORT_SYMBOL vmlinux 0xc3f158df blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xc3fe4d15 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xc3ff38c2 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc40b6e8e _dev_info +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc421f293 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xc42d01c6 sk_alloc +EXPORT_SYMBOL vmlinux 0xc42dcb99 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0xc4373e5f mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0xc444662e unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0xc44b2f66 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xc4583d7a pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc4794184 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xc4923652 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xc4ae915e arch_touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xc4e558f3 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xc4e7f944 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xc50e2cc9 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xc50e786e skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xc528a49a queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0xc5414b94 xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc55a16c7 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xc5724414 rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0xc5737ed8 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xc57c48a3 idr_get_next +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b3107b input_set_timestamp +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5d083fa ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e4a5d1 cpumask_next +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc6095330 tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0xc60b0975 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc610d4d2 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xc61118a5 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xc61ca65e iowrite64be_hi_lo +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc634c912 disk_end_io_acct +EXPORT_SYMBOL vmlinux 0xc6499e15 put_tty_driver +EXPORT_SYMBOL vmlinux 0xc6514077 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xc657bf8f mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc65e11d9 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66b68ec blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc66bc4bf pci_match_id +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc6753376 no_llseek +EXPORT_SYMBOL vmlinux 0xc6910aa0 do_trace_rdpmc +EXPORT_SYMBOL vmlinux 0xc69617c6 inode_permission +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6de1216 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xc6e8f42f hmm_range_fault +EXPORT_SYMBOL vmlinux 0xc6eb2050 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc6edff00 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc6fcb980 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xc7034e07 dquot_release +EXPORT_SYMBOL vmlinux 0xc708f1fe ec_write +EXPORT_SYMBOL vmlinux 0xc715115e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc724220d input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0xc732769d rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0xc743411b bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc764a659 tcp_time_wait +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b17392 key_type_keyring +EXPORT_SYMBOL vmlinux 0xc7b91ab0 flow_rule_alloc +EXPORT_SYMBOL vmlinux 0xc7be9741 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0xc7bfacba scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7c89b1f flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d8af53 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xc7e6a36a pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xc80ab559 swake_up_one +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc8461642 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xc847bcd4 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8792ecd proc_create_mount_point +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc8878d6d param_set_short +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b85899 amd_iommu_pc_set_reg +EXPORT_SYMBOL vmlinux 0xc8e2e1f4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xc8e7622c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xc9048440 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xc9216a82 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0xc92883c5 phy_suspend +EXPORT_SYMBOL vmlinux 0xc92c3e48 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xc93e8461 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0xc94e38f3 kthread_stop +EXPORT_SYMBOL vmlinux 0xc959d152 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xc95d4cf2 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96e4968 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc9784a36 vfs_rename +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc996d486 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8b022 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9ef57c0 pci_disable_device +EXPORT_SYMBOL vmlinux 0xc9f34c1d acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0xc9f615bc pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0xca145ca4 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xca1aa2cb netlink_ack +EXPORT_SYMBOL vmlinux 0xca1b3e3d param_ops_ulong +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca2226db udp_seq_stop +EXPORT_SYMBOL vmlinux 0xca3817ee pci_find_capability +EXPORT_SYMBOL vmlinux 0xca3d9630 audit_log +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9beaa4 __xa_store +EXPORT_SYMBOL vmlinux 0xcaa070b7 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0xcaa4a4e2 textsearch_register +EXPORT_SYMBOL vmlinux 0xcad1aca8 acpi_exception +EXPORT_SYMBOL vmlinux 0xcadda903 configfs_undepend_item +EXPORT_SYMBOL vmlinux 0xcae74629 pci_select_bars +EXPORT_SYMBOL vmlinux 0xcaf0064f devfreq_add_device +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf93662 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xcb001837 inode_init_once +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0704cf dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0xcb172a39 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xcb25bb65 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xcb2be807 is_subdir +EXPORT_SYMBOL vmlinux 0xcb39cc37 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb582e87 tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb7708f8 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xcb9e1a22 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbaa92a1 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xcbad05b7 vif_device_init +EXPORT_SYMBOL vmlinux 0xcbb791a1 irq_to_desc +EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbf895e0 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcc1b882a idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2b37e2 config_group_find_item +EXPORT_SYMBOL vmlinux 0xcc2b5c69 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc3c196f inode_add_bytes +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc46ae26 devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5c2df4 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc6b05b1 __destroy_inode +EXPORT_SYMBOL vmlinux 0xcc907e23 mdio_device_reset +EXPORT_SYMBOL vmlinux 0xcca5839d xen_vcpu_id +EXPORT_SYMBOL vmlinux 0xccab3060 udp_gro_complete +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccc8e490 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0xcccbaf79 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd01b8e6 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xcd1970d2 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xcd20a8e6 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2b82b8 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xcd49a359 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xcd4d9ca4 genphy_loopback +EXPORT_SYMBOL vmlinux 0xcd5d397b ethtool_notify +EXPORT_SYMBOL vmlinux 0xcd6dd8b6 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xcd77aef5 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xcd7a5de9 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xcd7fffa0 vfs_symlink +EXPORT_SYMBOL vmlinux 0xcd8b61dc nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xcd8ce890 acpi_format_exception +EXPORT_SYMBOL vmlinux 0xcdaa2810 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0xcdb1241e twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xcdb3e0c1 sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd94a7c iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0xcde4628c unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xcdecf4b8 processors +EXPORT_SYMBOL vmlinux 0xcdf60d80 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xce087410 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3864eb ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0xce44e373 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce50e5de ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6477b2 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xce681d0e page_mapping +EXPORT_SYMBOL vmlinux 0xce76c257 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xce7a5d85 scsi_print_command +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce807a25 up_write +EXPORT_SYMBOL vmlinux 0xce8b1878 __x86_indirect_thunk_r14 +EXPORT_SYMBOL vmlinux 0xcea0c0c7 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xcea1ace1 lock_page_memcg +EXPORT_SYMBOL vmlinux 0xcea381dd x86_match_cpu +EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceade1ec devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xceb5b025 lease_modify +EXPORT_SYMBOL vmlinux 0xced0f4d4 gen_pool_create +EXPORT_SYMBOL vmlinux 0xcee1ff2b param_get_int +EXPORT_SYMBOL vmlinux 0xcee25867 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf00cbf9 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xcf13c9d9 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf2537ec filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xcf2a6966 up +EXPORT_SYMBOL vmlinux 0xcf350d58 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xcf36506b md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xcf379fb1 seq_lseek +EXPORT_SYMBOL vmlinux 0xcf45080f devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xcf48179d dm_table_get_md +EXPORT_SYMBOL vmlinux 0xcf4fdd4d _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xcf535078 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xcf64d52b netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xcf67713d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xcf7ad6cf free_cgroup_ns +EXPORT_SYMBOL vmlinux 0xcf837760 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xcf83d83a __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xcf917998 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcf9f5bbe dns_query +EXPORT_SYMBOL vmlinux 0xcfd7fe9f blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xcff2fa5e phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd02e9c89 tty_port_put +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd042da4a sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd05edfaf jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0675111 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xd0749b64 __inet_hash +EXPORT_SYMBOL vmlinux 0xd07655a9 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd080e8d3 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xd08adb2b trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0xd0a38a55 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b74705 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xd0bd487b hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd0cfcd49 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xd0e21c83 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xd0e40bb7 filp_close +EXPORT_SYMBOL vmlinux 0xd0eb5ffc d_prune_aliases +EXPORT_SYMBOL vmlinux 0xd0f03332 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xd0f284b8 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0xd0fdbd76 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1059e46 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd1115c2d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xd1297374 vme_register_driver +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd1368a23 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xd1412f9b kobject_init +EXPORT_SYMBOL vmlinux 0xd149a058 generic_perform_write +EXPORT_SYMBOL vmlinux 0xd157e838 pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0xd1753ede md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xd177cbf4 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1869aa2 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd194ddf9 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xd19bd2e1 __tracepoint_write_msr +EXPORT_SYMBOL vmlinux 0xd1a4053d config_item_get +EXPORT_SYMBOL vmlinux 0xd1d780e7 input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0xd1d82d1c mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1dcde64 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0xd1ecb3ea elv_rb_add +EXPORT_SYMBOL vmlinux 0xd1f60a89 arch_io_free_memtype_wc +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1f85b73 seq_printf +EXPORT_SYMBOL vmlinux 0xd1f9f227 dst_init +EXPORT_SYMBOL vmlinux 0xd2021797 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0xd20292a7 bio_split +EXPORT_SYMBOL vmlinux 0xd205a454 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0xd21ad999 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xd21c5139 iowrite64_lo_hi +EXPORT_SYMBOL vmlinux 0xd2237016 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0xd23922d2 pci_get_device +EXPORT_SYMBOL vmlinux 0xd25350cf unix_get_socket +EXPORT_SYMBOL vmlinux 0xd259a9f6 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf +EXPORT_SYMBOL vmlinux 0xd2699332 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28d1a82 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xd2a5c1e9 pci_dev_get +EXPORT_SYMBOL vmlinux 0xd2b236b5 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xd2cc1f4f blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xd2d2c3f6 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2de3bd6 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2ea49b8 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0xd312afdd agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xd316b315 seq_putc +EXPORT_SYMBOL vmlinux 0xd3325f1b nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd33b825c udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xd34840f3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd35dfde1 PageMovable +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd37bddc9 dquot_disable +EXPORT_SYMBOL vmlinux 0xd37c6d9c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd37e3fe5 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd38cd261 __default_kernel_pte_mask +EXPORT_SYMBOL vmlinux 0xd3b89a6f param_set_invbool +EXPORT_SYMBOL vmlinux 0xd3ba62b0 security_inet_conn_established +EXPORT_SYMBOL vmlinux 0xd3bd0667 secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0xd3c6956c compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xd3e277f8 __bread_gfp +EXPORT_SYMBOL vmlinux 0xd3e54a33 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3fdb597 vfs_get_link +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd4128aaf mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd4219929 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xd42a3700 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0xd430156a simple_write_begin +EXPORT_SYMBOL vmlinux 0xd457cf2c input_open_device +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd47947ff __x86_retpoline_r12 +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4a52f21 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xd4a62b06 tty_check_change +EXPORT_SYMBOL vmlinux 0xd4b152b6 add_watch_to_object +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4c615cd ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0xd4c9579b devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xd4d1983c udplite_table +EXPORT_SYMBOL vmlinux 0xd4df5aba configfs_register_group +EXPORT_SYMBOL vmlinux 0xd4f4e9c0 may_umount +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd4fdb582 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xd5033c6b i2c_del_driver +EXPORT_SYMBOL vmlinux 0xd50476a2 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd53462fb con_is_bound +EXPORT_SYMBOL vmlinux 0xd5346bfc acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xd573bcf1 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xd59ede75 to_nd_btt +EXPORT_SYMBOL vmlinux 0xd5a145ad devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0xd5aa3db5 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5b4a9dd tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0xd5b5ec73 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xd5beb778 migrate_page_copy +EXPORT_SYMBOL vmlinux 0xd5e8c7f4 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xd5e996d5 put_disk_and_module +EXPORT_SYMBOL vmlinux 0xd5f04d4b input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xd5fd90f1 prepare_to_wait +EXPORT_SYMBOL vmlinux 0xd6042e37 complete_request_key +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd6267844 locks_delete_block +EXPORT_SYMBOL vmlinux 0xd62ecd49 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xd63676b9 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xd636d7be ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax +EXPORT_SYMBOL vmlinux 0xd643239a acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xd645891b pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xd64b54bb find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0xd65bc062 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd689de85 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd691c6a9 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd698d4d4 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c897e1 phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0xd6d10f6f jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ebe9e5 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xd6ed62ac pps_event +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd70ae3fc nf_log_unregister +EXPORT_SYMBOL vmlinux 0xd70b7b56 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd70f62b6 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd744708c ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0xd74d2279 sock_set_priority +EXPORT_SYMBOL vmlinux 0xd7770472 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xd7783f46 tty_kref_put +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e123ae pci_enable_msi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7eebdf8 mdiobus_write +EXPORT_SYMBOL vmlinux 0xd80ddb73 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xd846c315 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd861041c cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd861b5bf xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xd87d6540 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xd8822aca posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0xd8822e90 path_is_under +EXPORT_SYMBOL vmlinux 0xd8850d89 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a96370 genlmsg_put +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b6d9cd netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xd8bdad99 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xd8df08ac acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xd8f16b28 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xd8f3b41d sock_gettstamp +EXPORT_SYMBOL vmlinux 0xd8f79fda udp_seq_next +EXPORT_SYMBOL vmlinux 0xd90a717f inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xd90cb249 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0xd9256710 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xd92deb6b acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xd9491c14 xa_destroy +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd979a547 __x86_indirect_thunk_rdi +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd990e4cf ip_options_compile +EXPORT_SYMBOL vmlinux 0xd99d9876 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xd9a5ea54 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xd9a9a57e dev_mc_add +EXPORT_SYMBOL vmlinux 0xd9b85ef6 lockref_get +EXPORT_SYMBOL vmlinux 0xd9bcd9f4 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xd9d1990e d_move +EXPORT_SYMBOL vmlinux 0xd9d83bfc xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9e8aee7 refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xd9e9bcd1 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xd9fbd57f security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0xda03b371 page_pool_create +EXPORT_SYMBOL vmlinux 0xda086dfa skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xda15d1aa security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0xda1ddef1 acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0xda26b8ea __irq_regs +EXPORT_SYMBOL vmlinux 0xda277b5e scsi_device_put +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4dcbff vm_insert_pages +EXPORT_SYMBOL vmlinux 0xda5b742c pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xda5fc870 __mdiobus_write +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda80f81d qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda8e3c4c flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0xda9fc7ae kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xdaa3b629 fqdir_exit +EXPORT_SYMBOL vmlinux 0xdab3d398 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0xdabe1ab6 inet6_protos +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdacd89f9 peernet2id +EXPORT_SYMBOL vmlinux 0xdad13544 ptrs_per_p4d +EXPORT_SYMBOL vmlinux 0xdb16b170 topology_phys_to_logical_pkg +EXPORT_SYMBOL vmlinux 0xdb1be93f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xdb4f1ae5 param_set_int +EXPORT_SYMBOL vmlinux 0xdb55c076 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0xdb5d97b1 filemap_fault +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb716725 truncate_setsize +EXPORT_SYMBOL vmlinux 0xdb740fdf neigh_lookup +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb95e185 intel_scu_ipc_dev_command_with_size +EXPORT_SYMBOL vmlinux 0xdba49cb8 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xdbac4f03 set_user_nice +EXPORT_SYMBOL vmlinux 0xdbb699f7 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xdbccf8ad clocksource_unregister +EXPORT_SYMBOL vmlinux 0xdbcf041a acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xdbd3c204 __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbf17652 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xdc01a455 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xdc0623d9 mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0xdc095103 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xdc10f1f6 mdio_find_bus +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc256979 devm_of_iomap +EXPORT_SYMBOL vmlinux 0xdc2603f6 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc55d6de read_cache_page +EXPORT_SYMBOL vmlinux 0xdc5736d5 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0xdc5d1b1f __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xdc5d9792 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xdc68db47 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xdc6e6f68 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xdc7b1af3 fs_lookup_param +EXPORT_SYMBOL vmlinux 0xdc847052 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xdc856911 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xdc89b802 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xdc942253 dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0xdc9b9866 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xdcb1ffeb dget_parent +EXPORT_SYMBOL vmlinux 0xdcb95b46 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xdcd9aef5 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0xdce55c98 __x86_retpoline_rax +EXPORT_SYMBOL vmlinux 0xdd01c1f4 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xdd08673d __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xdd131ab8 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xdd153ff5 xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xdd18a993 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdd1c31e3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xdd2938b1 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd33b3b1 simple_empty +EXPORT_SYMBOL vmlinux 0xdd4d30d1 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd65f5cc vfs_fadvise +EXPORT_SYMBOL vmlinux 0xdd6ff3d8 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd79d38f set_pages_wb +EXPORT_SYMBOL vmlinux 0xdd7d4933 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xdd8166a1 dma_fence_free +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd8be13a dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xdd8f3cba seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0xdd9a8703 init_net +EXPORT_SYMBOL vmlinux 0xddad7952 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xddb17201 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xddb84cc7 vm_map_ram +EXPORT_SYMBOL vmlinux 0xddbb7960 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xddcbe1f3 acpi_ut_value_exit +EXPORT_SYMBOL vmlinux 0xddd2d7ac abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xddf48820 migrate_page +EXPORT_SYMBOL vmlinux 0xddf6ad7a completion_done +EXPORT_SYMBOL vmlinux 0xde1e9082 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xde280c52 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xde293f9e add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xde3ce548 scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0xde489aa4 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde4eeab5 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xde74be45 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xde7c18ea truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xde80cd09 ioremap +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9ef868 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xdeafc47a phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0xdeb22d94 input_register_handler +EXPORT_SYMBOL vmlinux 0xdeb35ba2 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xdebca193 bioset_exit +EXPORT_SYMBOL vmlinux 0xdebda4f0 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0xdebf56c3 vlan_for_each +EXPORT_SYMBOL vmlinux 0xdec798e9 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0xded1342d tty_port_open +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xded6a415 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xdee365b0 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xdef24a11 vga_tryget +EXPORT_SYMBOL vmlinux 0xdef31f6f f_setown +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf327b5f security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xdf362cf8 km_new_mapping +EXPORT_SYMBOL vmlinux 0xdf36914b xa_find_after +EXPORT_SYMBOL vmlinux 0xdf479150 xp_alloc +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf566a59 __x86_indirect_thunk_r9 +EXPORT_SYMBOL vmlinux 0xdf59a17e inode_set_flags +EXPORT_SYMBOL vmlinux 0xdf5cbb06 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xdf699dc4 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xdf6b082f proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xdf6fb5a4 pcim_iomap +EXPORT_SYMBOL vmlinux 0xdf73be03 skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0xdf80df7f tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xdf88d45b mmc_can_discard +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8d781f acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfb14029 down_read_killable +EXPORT_SYMBOL vmlinux 0xdfc850d7 __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfd22e6e xp_can_alloc +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdfe0c84b phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0xdff01179 page_pool_destroy +EXPORT_SYMBOL vmlinux 0xdff4c378 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe001bf81 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xe005ad90 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xe02ba436 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xe02c9c92 __xa_erase +EXPORT_SYMBOL vmlinux 0xe033cb29 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe03a689d dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xe03bec7e pci_scan_slot +EXPORT_SYMBOL vmlinux 0xe067d863 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe0732384 find_lock_entry +EXPORT_SYMBOL vmlinux 0xe07e5f44 acpi_reconfig_notifier_unregister +EXPORT_SYMBOL vmlinux 0xe0814095 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe082e88d acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe0857dff lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold +EXPORT_SYMBOL vmlinux 0xe09c34e4 udp_set_csum +EXPORT_SYMBOL vmlinux 0xe0a19549 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b9eed4 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xe0bff514 unregister_netdev +EXPORT_SYMBOL vmlinux 0xe0dd827d pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xe0e33c85 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xe0f5c3d2 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xe0f8d687 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xe1068aed ipv4_specific +EXPORT_SYMBOL vmlinux 0xe10fa791 set_nlink +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0xe11f7a2a compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe11f866e mmc_request_done +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe138fb8c percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13d5d07 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xe1418134 path_get +EXPORT_SYMBOL vmlinux 0xe144cd59 dump_emit +EXPORT_SYMBOL vmlinux 0xe15014c3 mod_node_page_state +EXPORT_SYMBOL vmlinux 0xe15c5ce3 devm_release_resource +EXPORT_SYMBOL vmlinux 0xe17092e7 tcf_idr_create +EXPORT_SYMBOL vmlinux 0xe178471c scsi_scan_target +EXPORT_SYMBOL vmlinux 0xe1923d50 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1ac75bc wireless_spy_update +EXPORT_SYMBOL vmlinux 0xe1c21439 flush_signals +EXPORT_SYMBOL vmlinux 0xe1d38528 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0xe1daef0a pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e6fac1 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1ed698d _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xe1ed8b1d serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xe21c7806 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xe25ee9d3 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe276c9c8 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xe2979ea3 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0xe2b0c2fb skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xe2b2e779 key_revoke +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe34a3717 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xe3623887 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xe3adf6f7 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xe3bd6f38 backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0xe3c41342 arp_tbl +EXPORT_SYMBOL vmlinux 0xe3d857ea __cpu_active_mask +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3f92632 dev_uc_del +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe3fffae9 __x86_indirect_thunk_rbp +EXPORT_SYMBOL vmlinux 0xe40976c0 pnp_range_reserved +EXPORT_SYMBOL vmlinux 0xe40c37ea down_write_trylock +EXPORT_SYMBOL vmlinux 0xe411a48e vme_irq_free +EXPORT_SYMBOL vmlinux 0xe41476d9 ZSTD_getParams +EXPORT_SYMBOL vmlinux 0xe419bc99 iowrite32be +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe43908d2 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xe43a24b9 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe44bce80 unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xe455c9e6 sock_no_linger +EXPORT_SYMBOL vmlinux 0xe4600d12 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xe46423e0 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xe471291a sock_wmalloc +EXPORT_SYMBOL vmlinux 0xe47f6b6e vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe490eee5 sock_register +EXPORT_SYMBOL vmlinux 0xe4d80bf4 acpi_enable +EXPORT_SYMBOL vmlinux 0xe4e7e284 pci_enable_wake +EXPORT_SYMBOL vmlinux 0xe4f180a3 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xe4f1b2ef vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xe4fc6023 netdev_printk +EXPORT_SYMBOL vmlinux 0xe50ecf58 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0xe5120130 skb_dump +EXPORT_SYMBOL vmlinux 0xe51d697b tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe52294c7 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52ac650 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xe540f38e fb_get_mode +EXPORT_SYMBOL vmlinux 0xe566c76c fb_find_mode +EXPORT_SYMBOL vmlinux 0xe57e59e8 nd_btt_version +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5876636 bmap +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe5a9f3f7 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5c60bd2 percpu_counter_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed4b51 nobh_writepage +EXPORT_SYMBOL vmlinux 0xe60e841d security_inode_copy_up +EXPORT_SYMBOL vmlinux 0xe611511f tcp_check_req +EXPORT_SYMBOL vmlinux 0xe612bba0 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe62bc1e6 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xe639c0fe simple_getattr +EXPORT_SYMBOL vmlinux 0xe643908a devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0xe64951ea dump_truncate +EXPORT_SYMBOL vmlinux 0xe6497d53 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0xe651c30c iov_iter_revert +EXPORT_SYMBOL vmlinux 0xe6526183 padata_free +EXPORT_SYMBOL vmlinux 0xe66edd0e migrate_page_states +EXPORT_SYMBOL vmlinux 0xe6786db0 set_create_files_as +EXPORT_SYMBOL vmlinux 0xe68c44d5 xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0xe68d8cad flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0xe691690b __frontswap_test +EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0xe6a62b71 pci_iounmap +EXPORT_SYMBOL vmlinux 0xe6b42a39 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0xe6c85165 ps2_init +EXPORT_SYMBOL vmlinux 0xe6f4eef3 xattr_full_name +EXPORT_SYMBOL vmlinux 0xe6fba9b0 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xe70877d4 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0xe7257ab8 xa_store_range +EXPORT_SYMBOL vmlinux 0xe72a3586 to_nd_pfn +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe74c28b1 mount_bdev +EXPORT_SYMBOL vmlinux 0xe75a713d phy_register_fixup +EXPORT_SYMBOL vmlinux 0xe75b6ebe qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0xe77a5d72 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xe787698f acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xe79dbfcc inode_init_owner +EXPORT_SYMBOL vmlinux 0xe79e2c88 inet6_offloads +EXPORT_SYMBOL vmlinux 0xe7a02573 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xe7a5be70 rproc_add +EXPORT_SYMBOL vmlinux 0xe7b00dfb __x86_indirect_thunk_r13 +EXPORT_SYMBOL vmlinux 0xe7d3c4c1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7efa52a input_set_capability +EXPORT_SYMBOL vmlinux 0xe7f134d2 request_key_rcu +EXPORT_SYMBOL vmlinux 0xe7f94c3a page_pool_update_nid +EXPORT_SYMBOL vmlinux 0xe81a5d8c xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0xe81ace0f scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0xe82b68fc dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe83eb099 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0xe85aeca4 filemap_check_errors +EXPORT_SYMBOL vmlinux 0xe85f2123 acpi_tb_unload_table +EXPORT_SYMBOL vmlinux 0xe8661657 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xe86aaa53 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xe87171c6 netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0xe8764aad vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xe88d86c8 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xe893c11e jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe897f27f serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xe8b69e59 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xe8e74f62 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe8fbf4fa __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92fcb6d xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xe938a6dc get_fs_type +EXPORT_SYMBOL vmlinux 0xe950f91a msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95cdd1c give_up_console +EXPORT_SYMBOL vmlinux 0xe9616cd7 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xe96b98a7 param_ops_long +EXPORT_SYMBOL vmlinux 0xe97ac8fb xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xe98701c9 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0xe9a472df inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xe9a5e67f intel_graphics_stolen_res +EXPORT_SYMBOL vmlinux 0xe9a72d4c compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xe9af7397 __xa_set_mark +EXPORT_SYMBOL vmlinux 0xe9bb6074 devm_free_irq +EXPORT_SYMBOL vmlinux 0xe9ccc3c0 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xe9d40a32 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xe9e1f04e tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0xe9e59d77 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xe9e796c1 would_dump +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea11d76a tty_port_close +EXPORT_SYMBOL vmlinux 0xea1eebf4 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xea231bdc down_write_killable +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea4ec7a1 nvm_register +EXPORT_SYMBOL vmlinux 0xea62037b dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea850e1a kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xea8ae5e7 mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0xeab339ab gro_cells_init +EXPORT_SYMBOL vmlinux 0xeab6f4c4 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xeadf64e0 devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeafa2c23 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb130a07 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xeb1b16ae bdevname +EXPORT_SYMBOL vmlinux 0xeb1bd1d9 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xeb20a9be dm_kobject_release +EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc +EXPORT_SYMBOL vmlinux 0xeb2391c9 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xeb31aee8 acpi_trace_point +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3b54c4 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb601f4d tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0xeb69ab19 dquot_get_state +EXPORT_SYMBOL vmlinux 0xeb7018ec unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xeb7825dc blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xeb7b32f4 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xeb7c8892 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xeb7f6046 acpi_get_devices +EXPORT_SYMBOL vmlinux 0xeb9117ae page_readlink +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xebb22228 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xebb3671b ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0xebbe12f0 current_task +EXPORT_SYMBOL vmlinux 0xebc73100 stop_tty +EXPORT_SYMBOL vmlinux 0xebdf10f6 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xebee5500 param_set_charp +EXPORT_SYMBOL vmlinux 0xec13c649 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xec237e4f xps_needed +EXPORT_SYMBOL vmlinux 0xec2b8a42 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xec2e1c8f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xec315124 netif_rx +EXPORT_SYMBOL vmlinux 0xec373695 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xec4a6a22 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec62013f pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xec744a92 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0xec807575 rproc_boot +EXPORT_SYMBOL vmlinux 0xec96c5b7 datagram_poll +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecb84e7c unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0xecbe7a42 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xecd4d2ef iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed00c4fb acpi_os_printf +EXPORT_SYMBOL vmlinux 0xed06652b d_alloc_anon +EXPORT_SYMBOL vmlinux 0xed103297 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xed222060 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xed29e7e4 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xed34ebbc acpi_any_gpe_status_set +EXPORT_SYMBOL vmlinux 0xed40f64c pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xed55f929 acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0xed6cd224 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xed6e6fc6 pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xed7a8b11 dev_close +EXPORT_SYMBOL vmlinux 0xed7d587e ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0xed883d1d unregister_key_type +EXPORT_SYMBOL vmlinux 0xed8914d6 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0xed9e43ea tty_hangup +EXPORT_SYMBOL vmlinux 0xeda0aaf7 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xedb74235 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc1f2d9 genl_notify +EXPORT_SYMBOL vmlinux 0xedd75569 __register_binfmt +EXPORT_SYMBOL vmlinux 0xeddb5773 dev_open +EXPORT_SYMBOL vmlinux 0xee08e4ba tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xee15aa5e gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xee169e4c netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xee25c371 fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0xee2674ca pci_map_rom +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3ff956 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xee46aa61 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xee48ff84 iput +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee7d7deb gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee87b31e insert_inode_locked +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeec0868e ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xeecca282 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xeedc70af agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xeeea75ed sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0xeeee8d2d devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xeef4d8d1 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xef04cffe mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xef064071 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xef35ccaa tcp_shutdown +EXPORT_SYMBOL vmlinux 0xef38e137 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xef3abf26 configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0xef419db4 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xef48663d vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0xef6ffa22 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa3470d mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0xefac13bb gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefb3478f seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xefc816e6 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xefcea2e7 acpi_warning +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefdcc4cd inode_nohighmem +EXPORT_SYMBOL vmlinux 0xefe4b5cd mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xefe4f679 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xefe84d47 get_disk_and_module +EXPORT_SYMBOL vmlinux 0xefebbd40 ioread64be_lo_hi +EXPORT_SYMBOL vmlinux 0xefee932c acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xeff608e0 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0013443 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf00cd376 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xf01af9ab fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xf02aa937 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xf04bc276 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0xf056428b fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xf05c32ad rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf07cf6c8 jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0xf080adc1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf091419d xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xf0915a7b pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xf09247f1 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xf0950fcc remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0xf0961b22 key_validate +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0aa9e7c rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xf0b2396e tcf_idr_search +EXPORT_SYMBOL vmlinux 0xf0d4c899 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xf0f016c3 pci_release_region +EXPORT_SYMBOL vmlinux 0xf101da24 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf108d11a may_umount_tree +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf11d379a napi_consume_skb +EXPORT_SYMBOL vmlinux 0xf13298ae alloc_fddidev +EXPORT_SYMBOL vmlinux 0xf136a7ea mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xf13c1e3d pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xf155329e phy_stop +EXPORT_SYMBOL vmlinux 0xf1573511 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf1697a0a get_agp_version +EXPORT_SYMBOL vmlinux 0xf17f78b3 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0xf1848ee2 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0xf18749b2 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19d8538 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xf1a4b6ac inet6_bind +EXPORT_SYMBOL vmlinux 0xf1a68107 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xf1bceaf9 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xf1c41d07 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e46d15 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xf1e5594d inet_getname +EXPORT_SYMBOL vmlinux 0xf1e6bc7f __scm_send +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2010097 vga_con +EXPORT_SYMBOL vmlinux 0xf21017d9 mutex_trylock +EXPORT_SYMBOL vmlinux 0xf216d53a fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0xf21c1d2a is_bad_inode +EXPORT_SYMBOL vmlinux 0xf21da62c ptp_clock_register +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf2289939 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0xf2310278 dquot_alloc +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24b76e2 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xf264c2d9 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0xf266c5b4 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xf27a880a register_filesystem +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf29403e5 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xf29497f5 register_quota_format +EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xf2acfd96 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xf2b81b64 arch_io_reserve_memtype_wc +EXPORT_SYMBOL vmlinux 0xf2c1531b rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c603a9 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xf2da9db7 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf30965ac iosf_mbi_register_pmic_bus_access_notifier +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf3269315 phy_modify_paged +EXPORT_SYMBOL vmlinux 0xf329bf8b flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0xf333857a csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf34504d3 __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34ea785 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35fd8a3 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf39042a8 filp_open +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3a2e88d inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3b62b6b xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xf3b8a614 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f42bcd fwnode_irq_get +EXPORT_SYMBOL vmlinux 0xf3fb2231 bio_devname +EXPORT_SYMBOL vmlinux 0xf40e7a73 __xa_alloc +EXPORT_SYMBOL vmlinux 0xf4152e5f devm_clk_put +EXPORT_SYMBOL vmlinux 0xf4170b67 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xf4192713 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf43d2caa acpi_remove_interface +EXPORT_SYMBOL vmlinux 0xf4415605 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4883d6c ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf4a565fd wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b2b86e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6a598 kobject_put +EXPORT_SYMBOL vmlinux 0xf4c779f1 dma_find_channel +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4e2baf0 key_alloc +EXPORT_SYMBOL vmlinux 0xf4ebf6ce sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f6e520 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0xf4f7b623 key_unlink +EXPORT_SYMBOL vmlinux 0xf508148b devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xf529d994 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0xf52ccc2e dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf552eea2 dst_discard_out +EXPORT_SYMBOL vmlinux 0xf56d246a devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xf585ee14 inet_ioctl +EXPORT_SYMBOL vmlinux 0xf591753d nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0xf5a5c4bd mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0xf5a5c84c msrs_alloc +EXPORT_SYMBOL vmlinux 0xf5b0ea29 phy_find_first +EXPORT_SYMBOL vmlinux 0xf5c3b2ee agp_bridge +EXPORT_SYMBOL vmlinux 0xf5c53c2b unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xf5d36b1a devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0xf5e5a87b hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf604c1b5 backlight_device_register +EXPORT_SYMBOL vmlinux 0xf60ab926 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xf610475f locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xf6181210 security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0xf62376cc __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf644b363 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xf64ca846 inet_offloads +EXPORT_SYMBOL vmlinux 0xf660ba34 _dev_emerg +EXPORT_SYMBOL vmlinux 0xf663b4d3 mount_nodev +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf681acfc hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68d9930 param_get_ulong +EXPORT_SYMBOL vmlinux 0xf68e19a0 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0xf68ea9ce kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xf6a0d396 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0xf6b27188 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xf6ba0674 __register_chrdev +EXPORT_SYMBOL vmlinux 0xf6bdf445 input_allocate_device +EXPORT_SYMBOL vmlinux 0xf6ce8fde inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf6d75045 vfio_unpin_pages +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6efed9c sk_common_release +EXPORT_SYMBOL vmlinux 0xf6f79555 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fc93f5 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xf709f227 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf7285d2e __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf7482531 phy_resume +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7629bbd kern_unmount_array +EXPORT_SYMBOL vmlinux 0xf7709a6f mdio_device_create +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf79ca3bb acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0xf79f8f03 set_bh_page +EXPORT_SYMBOL vmlinux 0xf7a3c18f iget_failed +EXPORT_SYMBOL vmlinux 0xf7b39179 acpi_dev_get_first_match_dev +EXPORT_SYMBOL vmlinux 0xf7b93464 sock_release +EXPORT_SYMBOL vmlinux 0xf7da6e6f acpi_unload_table +EXPORT_SYMBOL vmlinux 0xf7e07ed7 sg_miter_start +EXPORT_SYMBOL vmlinux 0xf7e56fb4 kernel_bind +EXPORT_SYMBOL vmlinux 0xf7ed7133 deactivate_super +EXPORT_SYMBOL vmlinux 0xf7ef9a79 iosf_mbi_punit_release +EXPORT_SYMBOL vmlinux 0xf7ffd6cc netif_receive_skb +EXPORT_SYMBOL vmlinux 0xf80be44e rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8386d97 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xf8457bd0 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xf846e0db i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf857229a netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xf8595510 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xf8753329 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf8a9953b pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xf8b5661f __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf8c5b30b __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8ddb312 vga_switcheroo_unlock_ddc +EXPORT_SYMBOL vmlinux 0xf8de9d98 mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0xf8e9637c sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xf8f34b8a devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0xf8f5ea59 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf8f66237 inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0xf9019506 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf91ccc99 cdev_device_add +EXPORT_SYMBOL vmlinux 0xf9296311 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf9527efe vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf9644cce pskb_extract +EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf991fb3c proto_register +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ba9314 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xf9bca4ec mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9ec0476 register_qdisc +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xf9fd81eb nonseekable_open +EXPORT_SYMBOL vmlinux 0xfa08f4b8 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xfa20879f i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xfa297415 acpi_map_pxm_to_node +EXPORT_SYMBOL vmlinux 0xfa34fdf0 generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0xfa462b4a input_set_poll_interval +EXPORT_SYMBOL vmlinux 0xfa56318e vga_get +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa607032 dev_get_flags +EXPORT_SYMBOL vmlinux 0xfa615184 follow_up +EXPORT_SYMBOL vmlinux 0xfa71c53d input_get_poll_interval +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfaa1fdf7 __tracepoint_rdpmc +EXPORT_SYMBOL vmlinux 0xfab1c084 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0xfab1ea50 dquot_resume +EXPORT_SYMBOL vmlinux 0xfab7d114 cad_pid +EXPORT_SYMBOL vmlinux 0xfab8c19a devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xfab95b2d udp_gro_receive +EXPORT_SYMBOL vmlinux 0xfac3e00a __x86_retpoline_r9 +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaf0d073 simple_rename +EXPORT_SYMBOL vmlinux 0xfb09522d xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xfb0eda5c dquot_free_inode +EXPORT_SYMBOL vmlinux 0xfb36f3ac io_uring_get_socket +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb48f0ff tcp_seq_start +EXPORT_SYMBOL vmlinux 0xfb564128 tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb703768 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xfb746cc9 down_killable +EXPORT_SYMBOL vmlinux 0xfba6e09f param_ops_invbool +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc93ae4 input_reset_device +EXPORT_SYMBOL vmlinux 0xfbcd3bc6 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xfbd6b42b component_match_add_typed +EXPORT_SYMBOL vmlinux 0xfbda83f0 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xfbe4ad33 pci_clear_master +EXPORT_SYMBOL vmlinux 0xfbe4d37a filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xfbe51518 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xfbe8ee28 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0xfbf211ff __alloc_skb +EXPORT_SYMBOL vmlinux 0xfc15e547 blkdev_put +EXPORT_SYMBOL vmlinux 0xfc1e5223 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xfc2dc280 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0xfc2f6be0 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0xfc336d2e __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc340af0 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4152fc ec_read +EXPORT_SYMBOL vmlinux 0xfc5c46e2 acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0xfc6957c8 genphy_read_abilities +EXPORT_SYMBOL vmlinux 0xfc7e2596 down_trylock +EXPORT_SYMBOL vmlinux 0xfc7f42e9 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xfc9c320a blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xfc9f4f6f simple_pin_fs +EXPORT_SYMBOL vmlinux 0xfca67699 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xfca9acf3 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xfcb2537d unix_detach_fds +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfd068523 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xfd11b647 __sk_receive_skb +EXPORT_SYMBOL vmlinux 0xfd259d05 nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0xfd2d5b8d nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0xfd38389a scsi_host_get +EXPORT_SYMBOL vmlinux 0xfd42527c __x86_retpoline_r15 +EXPORT_SYMBOL vmlinux 0xfd4a0679 scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0xfd64ae59 bioset_init +EXPORT_SYMBOL vmlinux 0xfd65a72e inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xfd6def27 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xfd7f5c68 flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0xfd89e4e5 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xfd93ee35 ioremap_wc +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdaa2aae pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xfdb5a7c3 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xfdb6576f acpi_set_debugger_thread_id +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc68794 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xfdcb4ed3 acpi_os_get_line +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdd4216d pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xfdf70093 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0ac1ce unregister_binfmt +EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update +EXPORT_SYMBOL vmlinux 0xfe263d39 make_kprojid +EXPORT_SYMBOL vmlinux 0xfe3628d8 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xfe362b3b security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xfe3b6792 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5e72dc ip_frag_init +EXPORT_SYMBOL vmlinux 0xfe6d7381 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xfe7a71af twl6040_power +EXPORT_SYMBOL vmlinux 0xfe7f4373 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfea9f147 write_cache_pages +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfec415ac block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xfed0e447 inc_node_page_state +EXPORT_SYMBOL vmlinux 0xfed278f2 nd_device_register +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee30f01 param_set_long +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef4f5f4 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xfefae1fa ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff089d06 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xff0fdf42 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff26b3cf inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xff4b7f12 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff87cd18 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xff8ef382 md_check_recovery +EXPORT_SYMBOL vmlinux 0xff97007c amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0xff9c4b56 ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0xffa68c26 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xffb7c514 ida_free +EXPORT_SYMBOL vmlinux 0xffbc6629 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xffc30c3a acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0xffcd7f49 iosf_mbi_punit_acquire +EXPORT_SYMBOL vmlinux 0xffe9fce8 d_make_root +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x19711697 camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x2c8b5dbf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x339c33c5 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x6f3a8de5 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8b44ee75 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9056f10d camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9e600be1 xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0xc00f725a camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0xfea2b457 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x0b901549 camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x315d28f7 camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x69f4ff25 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x8d725052 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x8d9b761c camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xee61eb71 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xfe729ed6 __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xff09bd65 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x1e1dc832 glue_cbc_decrypt_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x30dafa64 glue_ecb_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x47c4e08f glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x63f67411 glue_xts_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xac4570af glue_ctr_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xb80e5d04 glue_cbc_encrypt_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x09c17e6f xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x194b2841 serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x38800636 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x4140192a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x5cea0c9c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x99341b41 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa0100109 serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xb75988d7 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xbdfa6cc0 serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xcee44453 serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x1f491d36 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x7c7bf6e0 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x2c7b3458 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x31ddef7a twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x92a51c43 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xb4e98a46 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xe4ae7508 __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01977119 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0229505a kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03a764e1 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x041c6f79 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a6fc860 kvm_handle_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a81dcc4 kvm_hv_get_assist_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0bf8a7ed kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d8f4740 kvm_mce_cap_supported +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d98d956 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0e988de2 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0eaf8a0b vcpu_put +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10204fda kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x10324bec kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11ac9c44 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11bedb29 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1235000a kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x130fd155 supported_xss +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x159b8d5e host_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15c0e555 kvm_vcpu_exit_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15f5cf6a __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x170b49ca kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18985a37 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19e29fe4 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1b0056e9 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1b0e8a66 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c49cf4b gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cf65ffc kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d013832 kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d780b8c kvm_queue_exception_p +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1da883e7 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1db1c372 enable_vmware_backdoor +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1de646da __tracepoint_kvm_avic_ga_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7b9f98 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20c02982 kvm_emulate_wrmsr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20f7ffb3 pdptrs_changed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2187720b kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x234cc011 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x237a69c3 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25a5a057 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x26a4bd7e kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x282af96c kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28411ed7 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28647eef kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28a9b00a kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28dc5b7c kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x294d4208 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a500bc5 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2af2e19d kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d0c8745 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d82cc24 kvm_spec_ctrl_test_value +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f0c7961 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f98faf4 vcpu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2fb4fe19 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32f13428 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33389f31 kvm_init_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x341dc606 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34829410 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35c82a62 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x36c162aa kvm_update_dr7 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3846696c kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39373bd9 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ac97409 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cc82f45 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d5d5cd2 kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e9f34f4 kvm_page_track_register_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40313af7 kvm_lapic_reg_read +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40793abf kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42546196 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x447a02cb kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47144e3f kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4850da0b kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a65bead kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a82d1b9 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b1312de kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b311f73 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c0b5687 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e96e334 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4eaae274 kvm_deliver_exception_payload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ee37e36 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50077677 kvm_vcpu_map +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5209b0ef kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x537c0b64 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x538fa2d3 kvm_mmu_new_pgd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53e5aee2 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5498aa2a kvm_slot_page_track_add_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5552bd49 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x55abd028 kvm_vcpu_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x58611c14 kvm_lapic_reg_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59591d9a reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x598e8a17 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d996b31 kvm_set_cpu_caps +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ee67d34 kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f7f2f05 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x602ef504 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x607a5449 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6243ac82 __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62590e72 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63270977 kvm_default_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6449e71b kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65660784 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65671d24 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65ece2a2 __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66c4423a kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67319175 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6802d9b9 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x684c8818 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68643808 kvm_wait_lapic_expire +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68f54e0f __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a0b8b20 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6cc42567 kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6cf8a84a kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6e83c14c kvm_unmap_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f325d61 kvm_apicv_activated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7038def9 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7177fb37 kvm_lapic_switch_to_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71a24d17 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72350c2d kvm_lapic_switch_to_sw_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7285deb0 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72eec17a kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x740352f4 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x740a9515 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x744cde8f kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7499aa27 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76137a35 kvm_arch_no_poll +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76fb9a68 current_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7763a671 __tracepoint_kvm_nested_vmenter_failed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78c739ae kvm_skip_emulated_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x799625b4 kvm_cpu_has_injectable_intr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7a17111d kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ad76a70 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c09d89e kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e931915 __kvm_request_immediate_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7fe441e3 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80270bad kvm_mmu_invalidate_gva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x83450c31 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84831f0b kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x849344cc __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x867690a7 __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86931b5d __tracepoint_kvm_avic_incomplete_ipi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x872dfc9f kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x888d979f __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x889b3b0d kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88f7e6e0 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89b18001 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f4e859e kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91d4d992 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x93b0e5c1 kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94a3666d kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94abbd88 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x986f7f34 kvm_fast_pio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9958345a kvm_get_running_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa28b42d6 kvm_hv_assist_page_enabled +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4c6fdbd kvm_map_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa53d93ef kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa5750f0b kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa5862814 kvm_load_host_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa6152d16 kvm_configure_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa6606dc2 kvm_lapic_expired_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa74043c4 kvm_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa7c100da kvm_apicv_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa90e44f5 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa975020d kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaadcf4eb kvm_apic_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab31e82f gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac9bc464 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae6143cf kvm_vcpu_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae76b7cc kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaea85115 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaed1801a kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf3606ba kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb097e540 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb149eab2 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb28c8267 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb446ca54 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb45f8199 kvm_page_track_unregister_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb83ad5c5 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9f274ea kvm_emulate_rdmsr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc648bb5 kvm_request_apicv_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd11b0ed kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe368e64 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe77a920 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbfc61ecf __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc061ff7d kvm_mmu_free_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1d769b7 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2773de2 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc503849a kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5b1070f kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6f90987 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8159c13 kvm_load_guest_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc888a1c2 kvm_cpu_caps +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca3ab5ad __tracepoint_kvm_ple_window_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca9e2cb7 kvm_slot_page_track_remove_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcab0c0a4 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb49a76c kvm_lapic_find_highest_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce9fc4d8 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf434d4b kvm_mmu_invpcid_gva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf9eee4e kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd00db2f0 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd2a99efb gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd318ac20 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd49b3679 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7657c42 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7dbe992 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8ae2ac3 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd91d4323 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdadbb7bd kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd9e7aeb kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf93e2b9 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0a2db7f kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1918f42 kvm_vcpu_unmap +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe225e753 kvm_emulate_instruction_from_buffer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe2ce91ee kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3008eb3 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe385940d kvm_lapic_hv_timer_in_use +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe55ce29b kvm_get_apic_mode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe64af211 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9674a16 supported_xcr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebcb254e kvm_can_use_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebdc7006 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec06defc __tracepoint_kvm_avic_unaccelerated_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec2215de kvm_apic_match_dest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec733fb8 kvm_apic_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xecf59b6a kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeebb0472 kvm_apic_update_ppr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeecf997d __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef01af45 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef32c182 handle_fastpath_set_msr_irqoff +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef4a4c88 kvm_apic_clear_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf47e3dba kvm_no_apic_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf55eefe2 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5ef456c kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5f65110 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf6a2b8db __tracepoint_kvm_apicv_update_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa541ffc __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfaa4b586 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfaa8f73f kvm_inject_emulated_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbf6d809 handle_ud +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff5dd848 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff833622 kvm_debugfs_dir +EXPORT_SYMBOL_GPL crypto/af_alg 0x01542a58 af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0x0cea9f27 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0x10b62b44 af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0x64a6aa3e af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6a930261 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x7dcb412e af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x839d4d62 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x851d4e33 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x8a5b13cc af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xb3640c8d af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xb5cdbd87 af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0xc0c1e3fd af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc0d746c6 af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xc68fb173 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0xc8c2c82b af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0xd2ccd702 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd706fab8 af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xf2650251 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x828e9289 asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x2b97858d async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x9fd237c0 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xee7f879f async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8365f6f1 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xb8363bb4 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x094cd71f __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3eaa2db9 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5f2eede1 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcc1dacdf async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3b2126d8 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x97e3aea2 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xc10db9f0 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xbdfc8dc8 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x44e7f0c6 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x14a3cdbf cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x2c179847 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x2d3d5660 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x350a72ca cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3553ca07 cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x396726c6 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x64bef909 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x8e8e96ea cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x940b7c0c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xabb4d525 cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xbb810290 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xbd87bb91 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf8a15910 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x17241a1b crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x37f1165b crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x6d168c3e crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x7cca0a37 crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x8bb91238 crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xb5e841c6 crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xcfb40e16 crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xd7082c3a crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xdee40376 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xe5e75335 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf597e597 crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf953c867 crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xff29ff72 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x219acd3b simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x56bccd93 simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x7c76b1ac simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xea2bb4bd simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbb960c12 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x9b71d64d crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xa8eacd1b crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xb9120281 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa28bfaf8 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x02766153 __acpi_nfit_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x032e2673 __acpi_nvdimm_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x4639bcda acpi_nfit_shutdown +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x499bbf57 nfit_get_smbios_id +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x827bd4d7 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xdacfe653 acpi_nfit_ctl +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xee368816 acpi_nfit_desc_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x4f6c2360 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x96eb492d acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x040726b6 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x06bbae25 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0c3d6e46 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x146dc950 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1663f8af ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x184f8354 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x48759c69 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x59a6abb5 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6255bbaa ahci_do_hardreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x66ae71b0 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x69fca82c ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6cc112f2 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6fc50966 ahci_handle_port_intr +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x704f7d45 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x71e939f2 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa5e5f4ec ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa98dacb5 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3ba1455 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc32627ed ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcae208b5 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc903ea9 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd24315f ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfd2d4179 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfd96fffa ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x027fe784 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0b90a9f5 ahci_platform_disable_phys +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3a3fd21b ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x41a32779 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x63fb5886 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x79fa5329 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8f1ace46 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9083f5e1 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa1a4bd6b ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xaa15294f ahci_platform_shutdown +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbf5c4cbb ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd1ebc801 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd2588b86 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xecd01fc0 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf55ef180 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfd70349a ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x007e5674 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0x4b3566c8 __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x4d620fac __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x845e9e9f __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0xc0887847 __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0xcc199599 __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x00db4bd0 __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0xa6e6d493 __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x0e95b382 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x38a894b0 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x624a41ec __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe1cf17e4 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x2a0dc9ba __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x72251a2f __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x01e9363c bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1d1a5340 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2cf85c3d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3b42f1e4 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3d24b1a5 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3d46a930 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x49642712 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4ce26f63 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5a95223f bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x624f4a35 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x68a41d47 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7704c738 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88dc9b00 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x89fb850c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x91f2789d bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9a0e0c0c bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2bd6965 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa4487d0d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa936d061 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xba1ff38b bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc2bd8e72 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc5733b72 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdb1d3ec9 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xee2645f6 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0daa9de1 btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2e4790d4 btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x38d716b4 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x3b7ba51f btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7263be43 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9178d796 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa7317a45 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf82c8b2e btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x041fd597 btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0d1b00bd btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x229b8de4 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4e2151eb btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5b80e01d btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6ea55c89 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x728d71a9 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x7c61609b btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9336754a btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x93acece4 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x98117bb0 btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb32e1f23 btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb4d908f3 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xc51aec23 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd1c9257d btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe17b26ec btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe882940e btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe95b78a9 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x038b3f21 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x08ed1779 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2e4bae76 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x37041365 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5dbc509b btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5dec50ef btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6084e37c btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x891fc850 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa6a2d524 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd6a55bd9 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe2a6a2a9 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x23df0d7e qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x2b2ddb43 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x30e9564b qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x5f6c24d7 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x95e7c381 qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x3adbf5fc btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x65960b73 btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x84c69afc btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xbd14a7cd btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xdff2ab1f btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xc68e02b4 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xcd74875d h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xd566fd3b hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xe482a366 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x10d5d3ed __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x1e68c305 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x39dd2b33 mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x39f15de6 mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3f2b2f64 mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x47b45619 mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x54a48c4c mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5c3dd388 mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x620ef13b mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x841ad19a mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9cb07f6e mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9ef97c69 mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xaa8b9731 mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xae08ce76 mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xae59cc49 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xb373938f mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbd68658b mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc0ff9a58 mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc34ba1c1 mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xd053d028 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xdf61d63f mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfdf711a8 mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x03009b5d counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x06ebcdcc counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x0a1a9721 counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x446927fe counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x462afffd counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x546fe59a counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5dff567d devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5e7b192a counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x76c0ce8b counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x8e054287 devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x949d7363 counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xe213f6c3 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xe722aa23 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x2e6a6147 psp_copy_user_blob +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3a1a3979 ccp_version +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3e059f28 sev_guest_activate +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x4073e924 sev_guest_deactivate +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x61f0e0a2 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x843d6541 sev_guest_decommission +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x8fac14a2 sev_guest_df_flush +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x91722dce sev_platform_status +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xcb0e8c98 sev_issue_cmd_external_user +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xd02e197f sev_platform_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x066b28d1 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x09088192 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x115057c3 adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2d5f49c6 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3964535e adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3a434d3b adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3a52850a adf_vf_isr_resource_alloc +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x40eee804 adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x44bf033e adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x45ca86cc adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4ab9d838 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x52bf19fe adf_vf2pf_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x57eb4d61 adf_vf2pf_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x677140cd adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6ce78966 adf_reset_flr +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x79e356c1 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7bd345a4 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7d0004b9 adf_vf_isr_resource_free +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7d1fa9b2 adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x891411d7 adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8af82cbe adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x95f6d070 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x97fb82b0 adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x9cc67736 adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x9faacc71 adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa26dff6d adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa330403c adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa94c48a2 adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb6e8d8dc adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbe04e764 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc5bbf612 adf_reset_sbr +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc9528428 adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xca49dfdc adf_isr_resource_free +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcbde6f1a adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcf2bed4d adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd0d2f859 adf_isr_resource_alloc +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xdf3b82a3 qat_crypto_dev_config +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf995e6c4 adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xff1981e3 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0xe3d1dcdb dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dax/pmem/dax_pmem_core 0x3f41cb5a __dax_pmem_probe +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x0547919f dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x057476b0 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2c3b7821 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x45abbcd5 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x4f19f255 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x912bcbb6 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xaa634427 dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xf11b162e dca_add_requester +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xa58aec77 dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xe9442d07 dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3387c6df do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x41882230 idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb99abc26 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbe83c8bd idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcdac714b do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf02684c3 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf67bdb47 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x5306cb77 hsu_dma_get_status +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x5a30bc02 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x6b81a6fb hsu_dma_do_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xaee27d9f hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x0abc3e10 hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x10f21140 hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x069764b4 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x0a599925 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x280fac5d vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x94ab1587 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa388fba7 vchan_tx_desc_free +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x745b144f amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0be1a4d8 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x8592d892 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x82dc14c0 alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x91b9a8cf alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x005667df dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x04022a1c dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x18216eee dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x1ddc01ed dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x2815e16c dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xb3da5a12 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xbb0cc9dc dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xbeb8b8cb dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc02c9c22 dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc29b668a dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc9914fc1 dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd0416417 dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd617fdda dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd67ca3c5 dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd8bdee57 dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xdf58ec97 dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xeb486461 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf2b6a19c dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf8dca8fe dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x03038f37 fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x183c6610 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2fe95837 fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x5735129b fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x6588c484 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x9362d4ab of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xa7a3c78b of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb679381f fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xd37dc316 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xde82dc39 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xe206a132 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xf5ae6318 devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0d63d97f fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x269f2ce4 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x3dcfe703 fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x69edd714 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x767c5e5a fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x9151a1c6 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x925ad7e6 fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xadf96686 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb3e795b8 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc723d2e1 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xea698dd7 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xee945077 fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf337a873 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x11ebacbb fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x1fbd9170 devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x20a48c17 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x26885844 fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x7fdd3446 fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xe74b999f fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xfb6946e0 fpga_region_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x5f3ccb98 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x8c5696aa gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x91c89948 gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xdffa81ff gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xeddc2d68 gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x511fc2ca gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x9425c3a8 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xa5b25742 gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xdc911aca gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xef7acbcb gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xbb52e0a7 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0f2ae158 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x9243dbd6 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x19b75f22 analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x3ee0dd60 anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x67bab745 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xad196329 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xbfd83156 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe26cb1fe analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xf1743a6c analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xfbefef11 analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xfe4bf871 analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x09361c9a drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x09bba9b6 drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0f80e615 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0feb7b40 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x123200cd drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x19cb61f2 drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1e97f5b8 drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2f3223b1 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x39c8af2f drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3a877b99 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x430378d5 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x48619713 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x50b16480 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x558ea511 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5ab8208d drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5de5eaec drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x613422df drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x613dca1b drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x634e66b6 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6d60e2e6 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x72232fbe drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x75c66f3d drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x774e13f9 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x847b0d2b drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x87fd94ec drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa1dcca1a drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb502b63b drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc7baee51 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc9ddfa1d drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd3da86ef drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf21bf343 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf9af349e drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x01a5a8a9 drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x0e4c35c2 drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x17536e42 drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x39c924d8 drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x40913fe8 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x46c7b260 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4c31a571 drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4cdc2743 drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x6c833f68 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe413d2ff drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe7d5f96b drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xeb606fbd drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x551246dc intel_gvt_register_hypervisor +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x6fbc5503 intel_gvt_unregister_hypervisor +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1f28c178 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe72c7ff4 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xec45cf21 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x00639cd8 __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0442541b __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x098da529 gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0e416a68 gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0fb791b3 gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2086e876 gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2c3c53e7 gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3357cc19 gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x398ce6d4 gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3d52d107 __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ef75a08 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x41b68ee8 gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x49c0059f greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4bc3a3c7 gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5878d453 greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5aa1c096 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5da8a778 gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6087b5ca gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x62a5f9a9 gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x87a1b675 gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8e21a3b1 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8e7803c6 gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8f2dd8f2 gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9086d856 gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9ceda285 gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa833b3e0 gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb4062b63 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb9478582 gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb95081da gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbcb1d53f gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbec5ba91 greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbf1b9ca0 gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc09fd30d gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc397c10a __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcb8c92cd __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd7e41113 gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd8e8039b gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd91ca32f gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xdf7eafa1 greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf3aa3aa5 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf3f56d3e gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf7d7d9ee gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xfbb62261 gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0831f3c8 hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0df1e5cd hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ff6e83c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x10fc495c hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x111790e7 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2121bcd9 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x236a2972 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x26151129 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2bb8c87d hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30efb587 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33cd19bb hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x382e19d4 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x434e2c9e hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0x446a0933 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0x472f8d57 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0x475bfa59 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59d9c42f hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5cc88f3d hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x601bdf0d hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x61206ab1 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x68a4b15c __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d64c6c4 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7021030b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x71c297ab hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7d182565 hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8466a26d hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89ffdafa hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8c07346b hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9303ae44 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa555f536 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaca3bd5e hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaebc76f2 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf7e4aef hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb959b31e hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb9dc23e4 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc250e782 hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc88aaa52 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb9a53b5 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcfa2db4d hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec30bf13 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeda6b6e4 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf6743c5a hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa142952 hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdb9c5f9 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xf319381f roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x076a4cdb roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x499436b4 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6b317edb roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7463775b roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xad95e945 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe8964f0d roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x20c8e883 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2c0b3695 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x42edc6ed sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4caf4559 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x63be457c hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x90ebeba2 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xccda8475 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xcde95685 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xedcaef43 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0xdf19150f i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x12241eaf uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0b07744e hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x535f2dba usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b858e46 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0fd41f76 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1b34ab58 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2173a1b3 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x413555e8 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4694482a hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x509a3bd5 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x56d7a1dc hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57925c9f hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5ac88a2c hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6295d0e3 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7f824438 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x836d01f6 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4672512 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa7a33c96 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb86e5312 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd89b2861 hsi_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x04adf16c vmbus_connection +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x0ed2f9cf vmbus_setevent +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x12696d92 vmbus_hvsock_device_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1c938ae2 vmbus_connect_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2007a2c4 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x31e2e77f vmbus_free_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x42b854c0 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4957de7f __hv_pkt_iter_next +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4b2210b8 vmbus_send_tl_connect_request +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4eb8147c vmbus_disconnect_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x53589d9e vmbus_send_modifychannel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x59d5c131 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5cd86391 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x69015754 hv_pkt_iter_first +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x746869b4 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7dcb5ac6 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x859cd80e vmbus_free_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x897a0091 vmbus_alloc_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8fc8ce2b vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x90a5dd8b vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x943255ff hv_ringbuffer_get_debuginfo +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa36efcbb vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb47aebdd vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc1dbd648 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc6716b8f vmbus_set_chn_rescind_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcebf521d vmbus_set_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xdff7d729 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe5892d53 hv_pkt_iter_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xedd537c8 vmbus_open +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x1b64da38 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x82949ebd adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x8c3462ef adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x81b1f745 ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x147165c9 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1d1cdb26 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1e1b5909 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x23d74d16 pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2465f554 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x24f3beb2 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2852b64d pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x50d6c1f7 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9b96ab79 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa45ce785 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb24b732b pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb3047e22 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb9b06091 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc75c1605 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcd2d42a2 pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdaad6220 pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xee7b28c4 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf2c4d6bb pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf9046423 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x10d26f18 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x2b7ba31c intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x482f7d0a intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x484799ef intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x5bb8b492 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x69448e6e intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xbe2defb3 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xc32c68a7 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xee4a3b86 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x09dac9cd intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x3f1621d8 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x47633b9a intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x09b57d1c stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2fb9f93d stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8e85fac6 stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x93ed5c2e stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x9a57d451 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xb368704c stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xe1ac2889 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xe559781e stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xedd6f957 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x128d91f6 amd_mp2_unregister_cb +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x46a7b5fc amd_mp2_rw_timeout +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x6971cee4 amd_mp2_find_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x828ca806 amd_mp2_bus_enable_set +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0xa0271121 amd_mp2_rw +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0xabbf9fb7 amd_mp2_register_cb +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0xe2ff676b amd_mp2_process_event +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x3fb3eaca nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x888a5067 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe408d128 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf870a612 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xfe83329a i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x5319a6ba i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xa8051a27 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x0a96b280 i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x10e132ad i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x1252e663 i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x4c38d2ca dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x4fa8fb75 i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x5176ca39 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x5f301783 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6578f251 i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7fa936e4 i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x90c3fc2f i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x977103a5 i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9996a075 i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9b1a902e i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9eea5bce i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa186f2f1 i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa67a21fc i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xaef38b41 i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xbeeb5d71 i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd27d6c98 i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd8cf4373 i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xdfc48035 i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf0297a11 i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf0324a2e i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xfb88f2b7 i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xfc935edb i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x6f06b74a adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x71c4fa18 adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x372e853d bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x45d4cfe1 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x54d4edc9 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xa75d49b6 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xa3088553 mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xe60aca10 mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xfc758e62 mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xd0916bb4 ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xe4006da4 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x54772bff ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x7476fffe ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2dfc2b94 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x37bcebcb ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5955419c ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x618be5e1 ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x96c11f37 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa0903e2f ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa4d3a85e ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb6edd399 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd2b921fc ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf8987129 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xffb62bd2 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x3295b85d adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x457cbe1f devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x82f6e561 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x86f9ec38 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9acf62ab iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xac82e1b9 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x7980da8d iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xfad270b1 devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x9670b269 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x645a8d7a bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x0c993dd1 cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x6ce82ea0 cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x708838db cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x950d109c cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xaf2e0db9 cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xb7e9d920 cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xba21cf1f cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xd5b9958e cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xf6ca37e5 cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x1de251aa ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0xab130b4b ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0xd8406377 ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0xe8d942f4 ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x04f6ee7b bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x5a5fa96f bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xd39778d6 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x84e8fcae fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x870d0e86 fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0xfaec74fa fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x01601207 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x27e474ad __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2b40b0d5 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x361452ee __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x470c39cd __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x52092ab6 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x754aa4dd adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7e4d50bc adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa62b77e7 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xab2783b7 __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb7528a35 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbb9d7863 devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd41c2664 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf08e610d adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf21204dd devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0x596b4f4f bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0xa0bd3b94 fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x1ef680a8 inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x46c6eba9 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0402fcf5 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x049b15cb iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08dd96ba iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x09df3a50 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0b7301c2 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0e9b9beb iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1587bfdf iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23caf553 __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x28cf518a iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x29e9d147 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d4ea199 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a1d40fb iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3b651a54 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4083847a iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48b94396 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4bf52343 iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dce7dd4 iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x579203bd devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5c3bc274 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x605bc666 iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60c9da46 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x64fa2dfd iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x668338a5 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b4bc7fb iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6db51876 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x724a3bca iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72c73b59 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x754c4fe3 iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7e30996e iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa092a5d5 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa0e16b3c iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa10f7979 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa2569091 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaccdf831 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xafe94c8c iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc973e1c3 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9ac695b iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcbcb2f74 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcdb20318 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd01916c4 iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd08f453d iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd7497f2e iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd97d30db iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf3f5c209 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0c6447ee rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x7430a734 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x0d4f2166 zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x5515cbbd zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x9555ad3f zpa2326_remove +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc953aae3 zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xe0eff544 zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xf58e0df0 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x39c85c3a rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x46f87f9d rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5287ce4a rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5dcceed3 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x6a6997fd rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x88b4b364 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x8b0faa18 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x95a40353 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x9bc3d85a rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xbe865650 rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xe4933670 rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf1d39b8c rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xfc8ef5e7 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x4ca86e79 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x1589eaf5 matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x4bd4c870 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x1e7a86be rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x2250bed2 rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x376f38e8 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x4bbfa897 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x5c5ff789 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x6a9868f6 rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x741d69a2 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x7a069d72 rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x9a1a75c8 rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xc6105f7f rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xcdde48c0 rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xeaadebe7 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xff8273dd __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7559ce86 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xbbc9c01e cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xf6266c9d cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7ee3f689 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xb7336b40 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xa7cfa58d cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb3f77ab0 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x20508ece tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x320d43ee tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xcbcf3678 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xd5ceb8c7 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0f8e85cc wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3659e01a wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x546a7c47 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x98b6cdbb wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa2ef900c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa5f1c970 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb661d08d wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbe669ff8 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc83092f7 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe74dfdde wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xee2d9edb wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfaf3e084 wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x090e1143 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x34fb88eb ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4d569bd9 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x53d47ab9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7a00fa16 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb7f5e794 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc144f9ed ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf3277d33 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfde2cca2 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0bd0f180 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1c3748ae led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x31850a5e led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5e265a7a led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x6dfac86f devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x77346385 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa20a1629 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xed0310a5 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x18786f47 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2452a0ec lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x333e8616 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x39e3c4d5 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4fbe9ed2 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x59b0f2ca lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7b5ae4e6 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9527ab69 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd2340469 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfc273c12 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfd923174 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15b97715 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19b88bec __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2307b422 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b46c4b6 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b793afb __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fbf8560 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33554606 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x414c7765 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5f6a4a3e __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65fb81f0 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6b1045c7 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7260fb66 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x748968f6 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7574c715 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c8a33fe __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x96bf5dba __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa353964f __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa4682eff __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xab4c5652 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb22f8879 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbf53dc9d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc00185bc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc13b483f __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc36e201d __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8feefc9 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd8da0f0e __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9f20dee __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe9c4d700 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee603d81 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5d8bf62 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf8502c64 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x03853b8b dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x11ce57e8 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x14ddd1d4 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x15503511 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x252d8eda dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4c2bb602 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x51e4a77d dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6f738ce2 dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x729d38b0 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7c1b5db2 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x872adbf9 dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb7dd93dc dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc79b02ca dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe2f75782 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe5e0cbf0 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf7d3d50e dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfa604aaf dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xac35e284 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x71415f39 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7890d535 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x890723f7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xadbefda4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf8c2590 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd14632f6 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bdae47 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd790e7c5 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf34b19f7 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0200bdc1 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x47ffc56b dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5dfd377a dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7b860aab dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8e735218 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf4e72b1c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24621ca3 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x30c37cc0 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4f477261 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5375ca71 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5cf0d0bb dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7551b46e dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b6b3af5 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9290e07a dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x932a6ffc dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd51c29f1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe18c00ec dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x078a44e7 cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x081dae01 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x3bca1fd9 cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x3c0fa55a cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4d6c9bd1 cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x52588f35 cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x6358cca8 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7144d8ad cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7303e387 cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x85eaf962 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8ad4c312 cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xab2392f0 cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc13c8e5d cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc2f25ba7 cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc4cc9112 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xdfc52a70 cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe52a7343 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe7119813 cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe82353e1 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf6e54c54 cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0561230b saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4d489c41 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x77b0c6e0 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9780f47b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xacf05dfb saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb122549a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb402558b saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd2ae94ea saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe2f62e09 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xefd4f1a7 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x27420269 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2822cdc5 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x43c84a8a saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6d45b63d saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xac9e542c saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xba2404d7 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd1c37a4e saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x05545c11 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0a5322f4 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1b7d478f smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x47d5495a smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4f9717de smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5b035534 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5df9aaa9 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ea80e81 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x96a58d86 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x96fb7ca9 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xac68cb2f smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb3d07dfb sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcad8403b smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd296ded5 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xddbee2d2 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xefb8d614 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfdf0867d sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x15f5fdac vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x1b645efe vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x1e8902e7 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3a7d5d7b vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3edd6bc8 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3f623848 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4a09a12a vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4f27c20c vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7c882f13 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7ddc0448 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x817e66b3 vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x869fbc04 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8d2d78b5 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8ddae992 __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x90828029 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x92c5563e vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa1aafaea vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa674f48e vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa6cec1a2 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa8533241 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa922cb27 vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb3ae6c15 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb56edfda vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xbb7c1955 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc6294b7d vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc88264fe __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd80e6097 vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe55137a2 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xf1c760bd vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x9a31fd5d vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x9b6aedeb vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0x8d32445a vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0xefbceece vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0180bb6b vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x062456cc vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0ccf2bf4 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x100b5c56 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x141d2f81 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x191da483 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1a441480 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x319945ac vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x33721327 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x367637f9 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x376be9de vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3851b541 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3996f243 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3b629d9e vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3f783928 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4b0f7b43 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x596cdb97 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6272786b vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x671c6e60 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6a1daaa5 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x79104e18 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x83ea12ee vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9d68b04c vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9dc65c5b vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xbd1d9119 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc5e620b5 vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xcdc5e60d vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xde35f83b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xeaae1b1a vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfcd38a84 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfcf3ca60 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0xf2eef093 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x0181ce88 dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x056b1eef dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x5d943341 dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x15b46fec as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xbda032f0 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0xfbabaee9 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0xcf534598 mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0xdef7313b stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0x68e9945b stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x5e716c77 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0xb9994349 aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x97114707 smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x00dab07a media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0dce85e6 media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0f82e2c8 media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x12bec3cb media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1703193f __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1b5a9e03 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1ce260d1 __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2a5a891d media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3133b8ec __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3184822f media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x32590134 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x33785d84 media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x38f6a087 media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3ab9a081 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3d5b028b media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3da942fc media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3dd62b3c media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x43282ca4 media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x53f32d65 media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x65583af3 media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x72c4d014 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7af2a9e8 media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7c102181 media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7cf65470 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x831b57ef media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x877fdd53 media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8ee6f95e __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x90bac374 media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9122851a __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x96f7b691 media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9df3e004 media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa7151fd7 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa76a5735 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa9997fcf media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xae5d7383 media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb6c12368 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xce3d3d92 media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcebe89f8 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd51c3257 __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd5e3f334 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd64c8978 media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe643a92b media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe6992b84 media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe82e371f media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf7633982 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xfa3b9e9f media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xb5c7feec cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x00abdce8 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x198d71f7 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6362ab98 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77377768 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7922217d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ea69db0 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x870ba9f4 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9b3ba890 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb89772a0 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbf14b49c mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca3d757b mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcc303b19 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd865e7e9 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe12a93a0 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe19f4e5c mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe7c6fc9d mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe89ad8b2 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf5ca92ac mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf666d177 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0b814413 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x11e7d821 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1c03a99e saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26e3811f saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x56916fd5 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5e7b2e01 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x669a0971 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8bb72d27 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8c250904 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9f35c2a7 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa4756bcd saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaabc3e2b saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaf6dd1fa saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb6744c3d saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc989131e saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xebd602eb saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xee7ad890 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf08e76a2 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfac9a090 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0f226b68 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1de8e673 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3881525a ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4f9d9fea ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x96072c00 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc01ac769 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfced737c ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x5f8320d4 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x76dfb872 mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x7eabc0b2 mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xcb3ac00f mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xd6eb3d67 mccic_irq +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x5b18b83a radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xe5c626d4 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x25ac75f3 si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x4849bf3a si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x4dd8796e si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x593ce49f si470x_stop +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xe11ba00a si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x03511bf2 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x087ba771 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ac62c77 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1de12dab ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2345af97 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x29389791 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3351129d ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x336d18f8 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x469ee16e rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5f62ba0c devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6733563b rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ec3c73b ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x746f5812 ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bc8ac67 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbd57434d rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc281b0b2 ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcae7a88c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc813a97 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd09ddad0 devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb854a8a rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfa31e269 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x80c90790 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xa2f203b2 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xb7d216f3 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xd9ae0761 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x3476433e tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xb285cb90 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5e1a1bd1 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x6e7a7c34 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xc422fb9c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x3f6f4576 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x61c45979 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x801045a4 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe7581fd6 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x7f7427e7 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0763790b cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2a88c2cd cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2ab0a37a cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4bfcf2a2 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4f311057 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x617f38bb cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x78e7da91 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x796ec7b6 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8577efea cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x86bf7ff2 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x91f2b273 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x92296bbd cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9442050e cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9fc7da85 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa8a5f344 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd829928a cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdfaf62aa cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf44bcb61 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfba3c77d cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff887ea2 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x772ddb6b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x099a8a7b mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x037b2974 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0bdad527 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x11f11787 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x22bde8de em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x230d12de em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x35830d42 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4bcafeb2 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x54cbd03e em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5a618eff em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5e7179c6 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x677dbbad em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x86840160 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x892a52d3 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8b7dbf88 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2988b6b em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa87807f5 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb03cd7fb em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc9eb756d em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x38751a3d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8a866af9 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa1627173 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd7f49a07 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x1fdc5ba0 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x2c2bb38a v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x69d29bbc v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x13120883 v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x26ad7bd5 v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x34474a0d v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x4abb66fd v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x6f39b437 v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x75fa7050 v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x78c03229 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xa31444c2 v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xb3b1d9be v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xca4c1b21 v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xd75f1618 v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xfc3a3728 v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x001e5951 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1fbae840 v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x215be878 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2c6ba6d4 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x32822e3c v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x420acf3d v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x42967ee0 v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x439628ef v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4845f26d v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x513e4bb6 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x51c7817a v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57c7a15c v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x587ecec0 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58a564bf v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5bf5a3d2 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61859877 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6e7e85bf v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f65a24d v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7477dfac v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b8ae728 v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x805cef97 v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8286724f v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8683c762 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8baf52f7 v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x905e7f9e v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9401484b v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9998d120 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xafa77f09 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb05c8971 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb06b29cc v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4801d8e v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb57d7772 v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb957b21b v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbde6a95d v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc9584340 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xca7c8b09 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcdcd0667 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdec431c6 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe41eb99f v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe56b7bf9 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe616548b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef403d48 v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf794e00f v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd6163cb v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x049a05d3 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d57f743 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x107992c7 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x112a7649 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x22fd527a videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2486dd44 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x29f4dc1d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2d0a17be videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3fbc9047 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x436fc664 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x45d590c3 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5438bcc1 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5cfaa4fd videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x696dcb41 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6fa0be23 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9ad467c3 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9e1f2c49 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2351837 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xddc69df2 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdfac5049 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe8379881 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed27c443 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xefdc3641 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfc230cd8 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x2826c906 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x84419963 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8c448fe7 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x983506db videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x0794aedc videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x326e8fe0 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd6442fb9 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x020b9c4b v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x039f0170 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0549da46 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0968fcf0 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x130f5e73 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x172791c4 v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a6a99ce __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1e79aecc v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x21355b50 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x23416b9c v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a53ca39 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2c87f26b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2fa87231 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32431a1e __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x327873b6 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35497d8f v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35ca15ce v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x36f921a5 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x39a81266 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d2a3023 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3d6cad16 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f956e6f v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43996a8c __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4412265d v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44bb0403 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5470532e v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58a8db01 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5afd3229 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x636b9b9c v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d4437bc v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x70c27def v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7c861e19 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8146f8e4 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x831d69db v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x84eef42d v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x86848ffe v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x960116f7 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x96f863fd v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9946e1ff v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x99df3114 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaf24fe7d v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb272c3a6 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb795f071 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc5ff41dc v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc70d58e0 v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xca652d54 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcbb4ee98 v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcdd57474 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5d4d1ff v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7ae4697 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc1139b6 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc57987d v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdcdd6c05 v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdd3783e6 v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe1ba8bab v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe1f985dd v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2822320 __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe3c1c327 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7f43f71 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf16990af v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9933c5f v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfb153ea2 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc30e2a7 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x44db03cb pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6a0ece83 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe4b544b7 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1243ba91 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2deaa02a da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x39316a03 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8344b937 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd73e53c5 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd9e3004e da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe01826d6 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x144891bf intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x5dc0c154 intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x88981454 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa1dd1786 intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xe9f3bdc6 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0x4abcbeb6 intel_pmc_gcr_read64 +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0xc0e92bb7 intel_pmc_s0ix_counter_read +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0xe68f3782 intel_pmc_gcr_update +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3e563658 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x649e2826 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6d0d2ffe kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6dbf9d7d kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6f5b58da kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x90c4bd7b kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa69b4b2c kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe7405ab5 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x01986d01 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x632e2908 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x90521d60 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4782ddc8 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x956e2000 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa86909e0 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbd5bd379 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf21737cd lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf7546c95 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfba8a897 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x15be772b lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x28925f05 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6c14b1c6 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0c2466cc cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0c29ba8c cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x14f1117c cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x14fccd3c cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x26838a04 cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x268e5644 cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2795e13d madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x3ba57d31 cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x3ba8a171 cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4f117bc0 cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4f1ca780 cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x5223d6d8 cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x57c40c70 cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x57c9d030 cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x65b69708 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x65bb4b48 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x668aae4c cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x7890603d cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x789dbc7d cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x78b919a4 madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa30a3541 cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xaea36e0c cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xaf753dc4 cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xaf78e184 cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd643227e madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe7c83839 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xec4020c8 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xec4dfc88 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2734d061 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x353b2509 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x75816e29 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8ba5c12b mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc517bcd6 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf0291624 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00bfca7c pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0eb01f91 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x16aabc8d pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2532d77e pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2c227690 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x404a14fe pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6aff148f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7e7d0dc6 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8974a710 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdcb9250f pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe0d2fd8d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xa0f0aabe pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xada02a10 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x035ed701 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x42627059 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x476ec6b7 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x530cfa34 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xad09f23d pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x3328cb5e devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x43e53ef9 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x038fc361 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x08311f69 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0d9d7eab si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f63acf6 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1389969c si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c43f07e si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2969c032 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x373c8d7b si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ce410b6 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4643b1d9 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x489ee1db si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4b5c1677 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54b58827 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e8a7fbb si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6126c209 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x79c94b1d si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7cbf42bb si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8d69462e si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8deca8dc si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x929f97bf si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a842eeb si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa04b251a si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa142d518 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa3f617f2 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7698bdc si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa812cd17 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb150788b si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbca449f0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbcdf251d si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd24964d8 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd82cb7c1 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe13d96c3 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7fda98c si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfcd84e5c si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x037f015b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1e498817 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x27dd6c12 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4da23d67 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x64156bbf sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x626b5450 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x95804933 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x99fb8a20 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa3e91626 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x3cb43973 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x09db2542 alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x0e428f23 alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x26ac124f alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x2c774577 alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x5864ee3e alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x8a089fba alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x96cef9a7 alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x11150584 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x11e5ca8f rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1275d772 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x15bc686c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1cc414dc rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x33a9761d rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x35ba7c26 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x37ad12dc rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x539728e5 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x63fb8f09 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6aa16045 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x73c119be rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x7cf9016d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x90bd9020 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x911c9697 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x961c229b rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xa2c224d6 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xab778847 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xbdd184b1 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xbe3b81d2 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe7b72944 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe9f5d3ac rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfb9f20f8 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfc549d85 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x03ba84a0 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x41415229 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x5972a647 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x6401d1b6 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x6823674a rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x689fc38c rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x999959a4 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xa17da00d rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xb1be32a3 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd2bc878e rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd56608ae rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xe70a78c1 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xf1bb00ca rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x03e35ef9 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1cb9475b cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x39a9b3f9 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x5d834cd1 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3150a903 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3a83dd54 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7f8bdbc6 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8a287ea1 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x92d26c5a enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xccd6ffa3 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd73826be enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd8a84a08 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0585fb6a lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x47adf7c5 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5ddc425a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x81f32517 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x89f86dbf lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9680f022 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa0ddbedf lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc6d99a97 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x007eed39 mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x05fc4560 mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x093c1c8b mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0abfae53 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x132e594e mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x22d71499 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x28aebdae mei_cldev_recv_nonblock +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2d1cf88e mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2f6359bd mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3867f28f mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3d485a1f mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3eedef9d mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x48f1c2cd mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4ccf6684 mei_cldev_register_rx_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x609f9660 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x670e5863 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x68d3c1c1 mei_cldev_register_notif_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6e7550b0 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x850f3f9d mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x87227dd8 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x897b2b6e mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8a7ec99b mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x90a24af4 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x90c98954 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x93273c33 mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb6ccbdc2 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb81659b2 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc1d2288c mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe2e350a3 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x407a4412 cosm_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x4197c767 cosm_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x57ee2433 cosm_find_cdev_by_id +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xb5f2ea9e cosm_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xd6251a42 cosm_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x2595ffc1 mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x42b0f602 mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x638087c0 mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xc574774a mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x09ce088c scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x7cd4c787 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xdc83410d scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xde21c751 scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0x05163f5c vop_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0x6261d1e8 vop_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0x7fb764bc vop_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0xb1451698 vop_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x034eef3b scif_client_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x06f696a5 scif_get_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0800e92a scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0a6f4b32 scif_readfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0b08931e scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0bed91a7 scif_fence_mark +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0d8f8e99 scif_register_pinned_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x13c0f1c3 scif_unpin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x1591d02a scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x22440d16 scif_vwriteto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x23537f56 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3484e59d scif_pin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x37b93372 scif_writeto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3c8ca00b scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3f9d5615 scif_put_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x7f1e240d scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x8f2fed3f scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x914175bf scif_client_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x99699e27 scif_vreadfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xa15f5664 scif_listen +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc49bc450 scif_fence_signal +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc68bc880 scif_fence_wait +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc6b28127 scif_poll +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc8a7bb77 scif_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xdaa1efe2 scif_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xe1d9ca18 scif_recv +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x5b8bb699 gru_get_next_message +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x8dc51bdd gru_create_message_queue +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x9c7283a1 gru_copy_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xd3d2bf04 gru_free_message +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xde08c325 gru_read_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xeed7d505 gru_send_message_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x1018eee0 xp_restrict_memprotect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x12333991 xpc_set_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x345c9217 xpc_disconnect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x39046c7a xpc_clear_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x48e62c9f xp_region_size +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x6285dfe8 xp_cpu_to_nasid +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x64ba5017 xp_pa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x68d27065 xp_expand_memprotect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x68fa7d28 xp_remote_memcpy +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x7d5ba9a9 xpc_registrations +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xc04c7267 xpc_connect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xe68acd6c xpc_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xead4f7fe xp_max_npartitions +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xed1d3813 xp_socket_pa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xf3b47f67 xp_partition_id +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x3c0fac14 uacce_remove +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xb17090ad uacce_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xea75e1a7 uacce_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x024d14bc vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x046dd187 vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x056837fb vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1fd4782d vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2449459d vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3a22fa8a vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x5591b58e vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x58a3cc46 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x5e949e0a vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x676bd843 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x75fe065a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x787f0fe8 vmci_register_vsock_callback +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7c74d7a6 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xb572e830 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xbcb85f62 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xc04c7e84 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xc403cafe vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xde3abc2e vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe0cc9c92 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe11895c1 vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xea143610 vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xea61eefe vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xf8fd7ba0 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xffc5797d vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x003befc8 __sdhci_read_caps +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x05b322b5 sdhci_start_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0f7b093d sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x166b61c3 sdhci_send_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1789c4da sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1971e435 sdhci_end_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x19a5bcb9 sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1bc38856 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1f93c65f sdhci_cleanup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2552decd sdhci_setup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x25575ab2 sdhci_set_ios +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2793ec9d sdhci_abort_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x35ed5496 sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3e56ec68 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f4c6708 sdhci_adma_write_desc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x45c7f402 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x553c78b7 sdhci_set_power_noreg +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x55bccb48 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6008c000 sdhci_set_power +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x616094c2 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x67aec6d1 sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x770c0139 sdhci_calc_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f9720db sdhci_enable_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x872389ea sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x89b9d5de sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x94804e88 sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9769086d sdhci_execute_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9ad972ce sdhci_reset_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa2ee41b3 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa378da5e sdhci_request +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa7001c06 sdhci_request_atomic +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaa011fc5 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc15a2ef9 __sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc6a0f5c1 sdhci_cqe_disable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xce855ac8 sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd9f07154 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe312afcb sdhci_dumpregs +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xebf2b5ed sdhci_switch_external_dma +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xedd8cda3 sdhci_cqe_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf6461219 __sdhci_set_timeout +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf8fb7a39 sdhci_cqe_enable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x35b791b1 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3cfd8f0a sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x60555f99 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6ea0c4af sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x76023fe0 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x978f6741 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa0f79e43 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xac9471d9 sdhci_get_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbabbc853 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/most/most_core 0x052ecfda most_stop_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x15440843 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x16560e7d most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x1f7300d3 most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x32ca1d7f most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x5940ac78 most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x5ef87e5e most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x8f683c64 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x94cf82f6 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xb9a30c18 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xced3d672 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe083adac most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xec2f9a40 most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xf2fa1381 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7ae91aac cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x87f73f3a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb8de1ad2 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6b9a6248 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9863adce cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe631e61e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x09a4cb49 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2beeb6ad cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4578b3ed cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xba17f371 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x09eb49b5 hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x21572542 hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x02143cf9 mtd_write_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04b012a4 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04e8f715 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x05eaa6ae mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10f168ab mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x11627fb9 mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x152462f1 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2190f305 mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x262fbfd3 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30fc3ff1 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x378b10e5 get_tree_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x42905023 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a2cdb29 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4df768e3 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x54825813 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x54e4aac0 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5f6b6172 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61e46518 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65d8dcf2 mtd_pairing_groups +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x662bb840 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x72b9e49f mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x72e4908a mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7353ad1b mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7812781d mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d9cd121 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80f445af mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x858f3e1a mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x886e7ee4 mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8ab5955d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8bdc0377 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e9f9348 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a11f778 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa0a48e2e __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab2297d4 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb111d9e4 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb211e7fe mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb21bb1c3 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb26917ad mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb42a9892 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb72e6abb mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc72673de mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9380ee1 mtd_ooblayout_free +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xccb2bd02 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd709605f mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9fd3779 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdb42e349 __register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc93df6c mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe62c1ea0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed16215c mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1d55bf6 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3d86eaf mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfde62358 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe54e398 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x625f2eb7 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8d88b44e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd2765208 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xdb6e822f add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xee10437c del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x115490fb nanddev_markbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1bfa45ce nanddev_bbt_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x30fa4d34 nanddev_bbt_update +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x32e394d3 nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x4e05d589 nanddev_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x5528faec nanddev_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x5e228db3 nanddev_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x71acb2c6 nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x8bca67bf nanddev_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xb860ec1e nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xd5671652 nanddev_mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xda1dede7 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xe4429d0c nanddev_isbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x4acb835c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x9699e32a onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x4c928cb4 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x07a485f8 nand_soft_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x0b7496e3 nand_select_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x0bfdff31 nand_change_write_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2148ace5 nand_write_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x25122e23 nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x471c7f4f nand_prog_page_end_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x4a27cc0c nand_prog_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x578b751c nand_read_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5e663b6c nand_op_parser_exec_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x6556ec6d nand_reset_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x693ec3ed nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x7a89dd2c nand_deselect_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x9ff96d7a nand_read_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa0d64a00 nand_read_oob_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa646c834 nand_gpio_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xb003d6dc nand_decode_ext_id +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xb484c204 nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xb61ec70f nand_erase_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xbafa4dd6 nand_ecc_choose_conf +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xbec8fb90 nand_change_read_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xc3266365 nand_readid_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xeb537251 nand_reset +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xf1420d2e nand_status_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xf4ef34ec nand_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xfa5199e5 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x8c732882 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xb361493e spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xe193c074 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0d98d210 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x29202c9a ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4cf3cd46 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x54c05384 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6057e8ff ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x69b0c9e5 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x70486b7d ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7c5bebc8 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8dc2802f ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa262ea7f ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb7b9ba7b ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd123bb8b ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe19d4de5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf1afdd23 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x08535527 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0944f2bb mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x36e811be devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x3b582613 mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x3bf47a4b mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x45daa2be devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x550ee0e6 mux_control_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x61fa5788 mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x94186d91 mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xb7488420 mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xd435a277 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xea21c63b mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf626ae39 devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x64ec0b1e devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x7cad4ad8 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/bareudp 0x70307226 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x493a84a3 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x61e3c762 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7451c259 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7eb29399 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x858743f4 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb8ffbecc register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x530afb09 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x62727c32 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa2e8842d register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc21073e3 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0d600f06 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1265c7b9 can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1b63b57c can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2241178f can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2319a269 can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x253b1059 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2be67b65 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2ed9cb70 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x37a34fc6 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x45a41e91 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x5a4143b9 can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x64fad090 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x68dd1a67 alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7cf2ec1a free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8d7ffabd can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8ec74b21 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb6847e0f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbdbbc57b can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd14d9313 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xdf16c5bd can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe1173ac8 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe58506da can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe6c7a6eb alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf01831a8 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf55b7aef can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x07c49864 m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x14e2f6ef m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x5168ce6f m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x528e9357 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x69373bfb m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xa8d74975 m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xc3f70cad m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xd25b42cc m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa8ba249f register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xcaa3331d alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd68690b5 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xde1ad918 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0x2e9a5997 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1346b9d2 ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x2a154ecb ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x43db1c60 ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x48552c4a ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x4e39ae04 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x67225fc3 ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xa770aaa0 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xab00a11a ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xaf490f27 ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xb6443a94 ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xbaefaf7c ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcd7f4e4a ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xceddb41d ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdb156491 ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdfd94467 ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe1bd3e56 ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xed99bb2a ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2267f3ec rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x24a3becf rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2823dd4d rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x38aa3f4b rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x3bb02964 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x4fae90d4 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x5201671d rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x5c37cedd rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x9e1c3156 rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xa56a3cc5 rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xaa605ef3 rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xbb06603c rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xdc4210af rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xe92e803a rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xfcafefd7 rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xfd5967eb realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x028d8eb2 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0318ece3 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x038918bd mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0522bef9 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06947bb4 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0955768a mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b2ff075 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c59b4d6 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0da51cd7 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13f217e4 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14a3e1b9 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15dfe369 mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17483bea mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x191ceaf0 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b86fbf8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20af6b4d mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2178b085 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x225ede33 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23c264c6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23f8d37f mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25da96b0 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x265a3995 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a57bedf mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b144d2d mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c6bba9f mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ce9a9e4 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d7dba76 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x327c8f52 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34ae77b2 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a679c6e mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3db70ce2 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f774f95 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42422119 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44e616a0 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45d09d02 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x484e954f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48634c67 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x495a82fd mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a0f6dc6 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ae6e4b8 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4cfbcc38 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5046ba30 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52ad3a11 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5376faa3 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53c88bad mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5710b2d7 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57abd1ab mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58a1e365 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5efcf2ed mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x614eedc2 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63f17564 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63f286f1 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63f4c1e6 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69fd88c5 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6aa92d22 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ba481b6 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d88565f mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eb335fe mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6efc31f5 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f908b5e mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a7443b0 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cddc04b mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8089db21 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80f2fb26 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81150bd2 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81990df6 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8389caa3 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x882b9dcf mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88638e4f mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b6e5ee0 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cb34839 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x910b2f14 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95d3d8cc mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96ab01bd mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x979a6bf5 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x998ff638 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a74ace1 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ace6584 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b26c0c4 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b4c13f2 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c403bbf __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cc4cd7e mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d05a943 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1c10111 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa30a6b26 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5614dee mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8d2c4bb mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa954096a __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa97899bc mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafcbd4fc mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb25e64da mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb50600b0 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb50b246a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6de6eb7 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6ffc535 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb834c950 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8c5d586 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8fa9128 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbad7759f mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbaf5b174 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc96d6bc mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd1a2863 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf9a617f mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc85ef773 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd1a91f2 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf07b1f5 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf13dab6 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd963063f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdbcbb3bb mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc999fbc mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde135c37 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe767a4a5 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe77f32f0 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7ee6335 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeadc84f3 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebfed6ab mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedf0cd3c mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3c2273e mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf834f400 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaee88f6 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe756f70 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0939096f mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b381786 mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ef1bbc5 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f0302d5 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x138c94ba mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1586ed5c mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1852c17f mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b37940a mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e78f4c0 mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20833990 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x220fcaad mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23154d19 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26a9eb8a mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27d944c0 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x282c6637 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d903951 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2de81494 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x316b98ea mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32fa35e8 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3478d2a9 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35c7a02a mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3757af69 mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37854177 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x430bcb9a mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48a0c76f mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49d692c2 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54c26f5e mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5668c5fd mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ee469c2 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x613a37c1 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x630d13e4 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6648bfea mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6de15ced mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6de6550a mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x714411b9 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x721ec180 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75359444 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76669be1 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d8bdc25 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x852631fa mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x899c9724 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9065355a mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90b608c8 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94e25476 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x988bf359 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c87ad6a mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa58ef21c mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7afd4e9 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac529f54 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xacfb6aa8 mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaef50d22 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb59cd334 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5be7dbf mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbc8d974 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdc8ad5c mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2725e1a mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc27b1d09 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbecf925 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4fc9757 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf044394 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe086e434 mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe3a307c9 mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe529c574 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe56d1c89 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6b2118c mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeaa689b0 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xecf31346 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8f539fe mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd42c1ca mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe7b06f1 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe861c4e mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xcc4fa41a regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd82bc27a devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8c8c6c2 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8d36663d ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd2e526cf ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf06ba12f ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0c12a78e stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa8b41f73 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xcfb88d32 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xeab53386 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x251ecec3 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x40786b62 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x615176a6 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xdd1cd1d2 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf187382d stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x01fa22b2 w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x52915d27 w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xaeb6ceca w5100_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xbc7a467b w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/geneve 0xfb11723b geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x3a563dfb ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xb161b803 ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xd52db646 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xd82dca9c ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xf6fffcad ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macsec 0xb040bb47 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2c3c29d3 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x588485d0 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6c75550a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa7dc61cd macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xbbc72045 net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xdf31eb4d net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x04af20c0 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0ec99f39 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x15e3b338 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x178335bf bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1ad9ca33 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x35e11f02 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3b059a6e bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3dad910d __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5f0292b8 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x61ec3711 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x638148b1 bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x682318de bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x791ed6e8 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7976118a bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7ac7241b bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7f42432d bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x800210d9 __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x85ab581d bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8e891cb7 bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9948ba5f bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9963ca13 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb00eca47 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbf99d7ce bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd35805a8 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd78a7765 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xdc361969 bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xdd36d47b __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe2a41f18 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe2ccd87a __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xebeb5fc7 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf1b2a200 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf556f47f bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xff8c9b47 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x30cd6b5a mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0x1ed7a547 mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x02b61930 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1ea87898 phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x21874759 phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x3e227767 phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x930549b7 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xabed5e3a phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xae186927 phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xee9c41ad phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x0427e699 tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0x4fdd3904 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x654c6058 tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/tap 0x6b80afc5 tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x70ec3036 tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0x722c6a23 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x93634cd8 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xa2d0a795 tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xf6bb68e5 tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5660714d usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x798cf49c usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8ca214ae usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8cbde98a usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x963c8d79 usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1896794a cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1915b53a cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x653e55ba cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7cf96c63 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x94e82e67 cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa69a04aa cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb1b8fd82 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcbbdba63 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd491659a cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf71bfa74 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf7f7a110 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2ab1285c rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x40f207fc rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x77cf64d2 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x88a7daba generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x905fc0ae rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbe3aeaed rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x06d71028 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0e23fb4a usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1925ee8f usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x19a01627 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2334204b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x25cf0262 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x281c0ba9 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2b4f57d4 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b60e79a usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x410e60c6 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45918705 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x52f6d2ef usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60d371f0 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6893154d usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x72d92d54 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x783aa297 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8307fbc3 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8403ce8f usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87404744 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x93a0c608 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x96da576c usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x97dac0ad usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x98ff298c usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xac5bc140 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xadc14a31 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb250ed99 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc101f0aa usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcf288d59 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd121ced5 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb203a51 usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf06bd4b usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe9433438 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf9e4c822 usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3552dc4e vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x9b5b2d4c vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc17aa389 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xea9883bc vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x060e2ab6 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0bf87ab9 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0d4154ee i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x252da7db i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a9b6214 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2b1fc586 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x33df094f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x48926a37 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x550a39a2 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x67a4a9d2 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x791413f0 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa8d2097e i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb7a12704 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc7b37ad8 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf86d4d0a i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfc4a532a i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0x38da7a20 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5a8b0a07 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7cdbe5ed il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x85f633cd _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa40dea7d il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc16665fd il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0b855f79 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0d1dd4bf iwl_acpi_get_pwr_limit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1332e4de iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x149cbfaa iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x17f3c89a iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x22453c63 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x23db83f4 iwl_sar_geo_support +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2710c362 iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x28cf24e3 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2c6d9970 iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2edbf71c __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x30e16d6b iwl_sar_get_wrds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x31012301 iwl_acpi_get_object +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x32689338 iwl_acpi_get_tas +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x34769c5a iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35a55b9d iwl_sar_get_ewrd_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3859dab2 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x396aa3b7 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x40841b94 iwl_acpi_get_dsm_u8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x445951a1 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x454b1873 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5514b994 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x552194fd iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x56ff2b6e iwl_acpi_get_wifi_pkg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x578e6074 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5988395c iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x59bafc40 iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5a9418f3 iwl_sar_select_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5d0ef5ec iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x67e4b54d iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6c728ea9 iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6db94fde iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6ef4d9f4 iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x74d2c89d iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x79814051 iwl_sar_get_wgds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7be6b11a iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x83f42c18 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x853bf464 iwl_sar_geo_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x85d61b97 iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8ded25e8 iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8df1372a iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x91c76add __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x92120dfc iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x92fd1628 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9836a27d iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9c73ffff iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9ddce369 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9f743224 iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa31339ae iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa42a8f78 iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa647ffea iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa7aa7da7 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa98a2096 iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xacbc5278 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb1020b0a iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb3030d03 iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb9768639 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xba509ecd __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbfda9732 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc3cc26b1 iwl_sar_set_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd914e00 iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd8c53a8e iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd9ca379b iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe0eb5838 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe75b7e77 iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe76dcb89 iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe8622bd2 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe8c2f822 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe8ff3e25 iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe9a801b4 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xee514df8 iwl_acpi_get_eckv +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xefe1bc70 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf1bf8c91 iwl_validate_sar_geo_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf7af8414 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf88964e4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf90ecbbf iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf93dfc9b iwl_acpi_get_mcc +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x10d4139f p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x273b8ed1 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x631dde4a p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x7aea2aa8 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x7f358852 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x81eeeb71 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x86fb3646 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xabbf0f2f p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xc245cf9f p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x089136de lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x39080176 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x3ff45622 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5d4ef8ac lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x6b11f655 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x71220212 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x833d1660 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa41bc008 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xbdef232d lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xc4830709 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd7e13ef1 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xde10097f lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xe8d5b256 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xec428afe lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf9b2f8a9 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xfc0dea0a lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x2a190c21 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x39e694e4 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x3b6160af lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x3cef944f lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x4e6e5a06 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x5b9fbad4 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x6da0ed10 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa36160f1 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x0696467a mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x08acfe03 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x234b6c85 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x24ca5420 mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x3418cdce mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x3886dd40 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x40ad1767 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4520841c mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4704c11b mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x49a2c111 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x6d3fb1d7 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x6df0d916 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7bb8d66e mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x98165cc2 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa2f4caf5 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa539f1a2 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb302cd7c mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb3404703 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb34bf35d mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe04d40f7 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xed36b53c mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf7060d8f mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xfbbe61cb mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xfe1ee320 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0fb396e1 mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x112f820c mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1325d5c2 mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1c4137af mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1cb2e98e mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x25037d02 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x28e47caa mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x353fe392 mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x38777afe mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x415f3231 __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x43b6cce0 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x44624857 mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x44873a83 mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x449e8a4e mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x46cc7e88 mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5bc669ba mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5fb00ca8 mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x721ee5f7 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x74f574b4 mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x76f78ca5 mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x78edd3f4 mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x799b1233 mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7b02d323 __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7bb860a8 mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7e25ffe5 mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x83dcec5a mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8ee1f508 mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x92141ab3 mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9854c988 mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x98c84c78 mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9a58e56c mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9bc3b0b6 mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9d14dc67 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa41b8427 mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa6ffd180 mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xaabbd020 mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xab7c30ee mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb4e98e1a mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb7070c98 mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb92cb8c2 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb9d1a35b mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xba2af831 mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc0eb23dc mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc29f70fd mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc2c571b7 mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc5fc58a3 __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc9ff27dd mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcec681fb mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd147c49d mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd34f36fa mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd5c56776 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd9c600b3 mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdb491344 mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdbaf1db5 __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xeb87d200 mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xedfc6ef8 mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf26a054c __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf46b0212 mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf733ded4 mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf8661ae0 mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfbce422c mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfd020bcf mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x28283468 mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x40aa4288 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x55608fe4 mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x5f989262 mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x87e63929 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x97118419 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xa62da60b mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xc068dc0c mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xc28fab8f mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xf51bf636 mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xf9011a80 mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x01b65c81 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x045619d0 mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x06586ce3 mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x14b31ca2 mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x14d4d1e6 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x181c94fd mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x19040a86 mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x218baa84 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2399ce86 mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2fd3a258 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x35b17b9a mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x36bc9912 mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x390e7282 mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4369697f mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x47c8f9fe mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4c9f92e9 mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4e936144 mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x58a91446 __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5c01f69b mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5f86b6c7 mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x64de5b29 mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x65068097 mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x68d8328b mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6e6e7a5a mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x73767d99 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8b99f9bb mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x9574f489 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa06a90ab mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xad391385 mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xadd64dde mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xcbea970c mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xce15ca3a mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xcf427f49 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd5eb6525 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdd0ecdd6 mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe6343d5a mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xeef3e9a0 mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x37b995c5 mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x38b344ec mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x4ba255fe mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x66dce81e mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x89bf0548 mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xa5af48c3 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x02898841 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0b53a572 mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0ca0becf mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0f20f092 mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1d4f26f2 mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1de744a5 mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x21fe28b5 mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x24811bba mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2516ae51 mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x25f7457e mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x27e7d0db mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x28d7a8f7 mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x29850ca8 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2bac7058 mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2cddb8dd mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2e94d31a mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3445c2cf mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x34ba5773 mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x34efcf4c mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d00e23 mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x384686e6 mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x40a82c7c mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x44d344b7 mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x456d7bc2 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4d9c934b mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5e064be0 mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5ef82cf1 mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x61351b85 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x66fe92e9 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6bd7e0c7 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6fa78b5c mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x73f5c83e mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x74d20962 mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x768192ad mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x78bbfb17 mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7f4be022 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8e37f58b mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8f9b6f4d mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x909877b5 mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x99fe1de8 mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9a95439a mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa1257914 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa22526c1 mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa389a411 mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa9794275 mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa9ac3e56 mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xaa410dc9 mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xabbdb652 mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb4f5f592 mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb5d091bd mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbbbd55db mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcaca5c86 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcb307867 mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd1f9827f mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd267857e mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd2fe6adb mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd3853284 mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd793787b mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd83dd752 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd8a7efc7 mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xdecd7dab mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe0acbaf8 mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe351efe1 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xea17c522 mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf33b8c69 mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf5ea4421 mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x01604963 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x1d26f0a1 mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x36a1c371 mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x41db1a12 mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x8ce4d61c mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xb83c6726 mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xeb56c894 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xf49fc336 mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0b9df09e mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0defc4b1 mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x1411d5b0 mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x15ded6a9 mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x57ebdda3 mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x5f100f5c mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x60fc3f65 mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x6dee8bc4 mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x8e434864 mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x923bdb4a mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x9df5e699 mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xa381b9e1 mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb453d6c5 mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xcd4416d1 mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xcde6c867 mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xce596b7e mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd662fcf3 mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xde52feb9 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xf4fa2426 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x002935fd qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x19efe53f qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x3e4041a2 qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x4008b9a7 qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x421af42b qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x526e11df qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xcd3bf69f qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xeb145241 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x073f428b rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0a74ab2a rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x149b6583 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1932d103 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x198ebb6a rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x19a51457 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1b51e026 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2848abf2 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x287ade02 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x302ef39c rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x380d94ff rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x390eb836 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x431ed040 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x44c7b6af rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x45583b78 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x613ec0fc rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6a0fcf2d rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6e626fb8 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6ff1ea90 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7ed14b59 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x81860b87 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8253f84c rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x829015e7 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x839bab9b rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x83c57da1 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x90bdac28 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x925a6ccd rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x93b4899f rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa1752886 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa19aa25d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xaadcb546 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xadc55eb3 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb0e2a178 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb20b093a rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb264d28d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb2f2f9a3 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb54c15ba rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb5b1e0c2 rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc6b44eae rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd85acce5 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe516f731 rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xea1285d9 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf1858642 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xfe4fa4d2 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x254ed228 rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x27f4ac72 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2cc7b3f1 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x30a22b8a rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x3203d493 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x411a6c26 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x562d549e rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5830395e rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x695df242 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92f2b7b8 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x9b5ce60f rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x9d229dac rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xa7823dca rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc96d4b2b rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xca9ea4bb rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xfd2bb447 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x051ec268 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0dd9271f rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x11054ef8 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x1b63347c rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x1e65fa1d rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x22871569 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x23973fb6 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x27419205 rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x2f03ace7 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3a0dc26a rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4056fcac rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4069d884 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4508e47e rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4f852c69 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x59574de9 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x63d89899 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x669f5779 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x74dd8960 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7e2bb491 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8708bf6a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x89a54184 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8caff3d0 rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9203eeaa rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x939fdb95 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9b0423e6 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9bbb4728 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9e67e76c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9fb5d622 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa09b91f9 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa196bddc rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa8bdcb44 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb030378c rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb7854f21 rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb951d344 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc425fdab rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc606004c rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd0208b2d rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd9fb9d77 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xda2f70d0 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xdf788b83 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe32f6563 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe4e9637a rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xebac2049 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xecca140c rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf3b62670 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfe6ab02e rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfe88ec2b rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x41a2a4ce rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x8ab87755 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x8e8de236 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xb19d3075 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xb73b8cad rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x12d6ac64 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x2c85bf91 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x6c30066f rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x92dea799 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0560aad8 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0e521b71 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x1e8a936e rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2654aa08 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x280bd14f rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x322566cc rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x3b70426c rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x43c84c23 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x46a40246 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x629b646e rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x7dcd4f76 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa39287c0 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xc4ca46d8 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe27a285c rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xec1809fb rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xff5678a2 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6f9d402c dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6fe8b69c dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9dc1efdc dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdc161b14 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x25be9178 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x305af171 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x310932fa rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x37834ca3 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3d40f91d rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x428280af rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x444a0e66 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x56798da5 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x59f7a47d rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5d8dd528 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6a240760 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8602fa84 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x86dac214 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8dea3f99 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x962d7ec2 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9b2168c8 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa744c066 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb30386d8 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb8ca9440 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc269fe9a rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc66d1a3a rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc94bbcf8 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe032eef9 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xedd07e96 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf38b990f rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x049a115c rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x223447b5 rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d32cdfc rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3b4eeb53 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3f359f29 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e94cd48 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x53cd4157 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5a771a09 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5d798ebf rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x61735463 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62d4db5a rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6af05c8b rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7b768af1 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7bea9b38 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x804b5798 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8b907ad0 rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8cececf7 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x985130f9 rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9fdcd41b rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc20211c8 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd7b0e527 rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xda330c2f rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdce3a802 rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe3b423a9 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeb6ed79c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xef077e79 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfc0f1972 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0dfaa68b rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x1acf39df rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x26e46e4e rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x28981eeb rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x360e2cd0 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x528b9c96 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x61d80af6 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x8ad076a2 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xc5afdfdf cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x5f1d4dc1 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x715f4daa wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd8f8befc wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x019e2497 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x02a62a8b wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x191b2509 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1ae5f6e8 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1c9be125 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x288ad8f7 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bb291ff wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d79f1f0 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fe615da wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x304547b4 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31d5b3e7 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3357e9ff wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x34d8986a wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x35453df5 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x357d6fe2 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b2372ac wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x42a24017 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4344ad36 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46fe3fdd wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4f26d1f5 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x59506c3b wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a25bb8a wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5eab1db5 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x625d00e3 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6716a7c8 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a4625e6 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c8412c9 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d18f350 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70475c7d wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78e2932c wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ba77996 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85204d9a wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85498cd1 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x927d4ada wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96450a08 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabd1a0b5 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb21ff331 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc0bc1cb1 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8287d30 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcb5f4cf2 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0ea730c wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5af28de wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf70b00be wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfccc7ea9 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x182637d0 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x28a71bb1 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xd81b317e mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0e337675 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3b0fe2b1 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x58678576 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe8f94d5d nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x1e96edf8 pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x5917ff05 pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x5a2e2139 pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x7f9d00d4 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xabba5425 pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xcc91e1c5 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xefbfb66e pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3923364c st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x445b1504 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x79e9bc54 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9f82dd79 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa1082b60 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa22b8931 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc802e580 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe68b492b st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x27c0717b st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x561b915e st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x94e08435 st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0ab21a89 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xb9703c32 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc8888b85 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x35978b07 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0xfffd6cb1 async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x020d8a3e nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x04c6cea7 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x04e0a5ab nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0cac12f9 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0eab6324 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1d7fc335 nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x23f78630 nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x24e932dd nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x29f3c7aa nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x3e779505 nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x44ce21da nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4cf751d5 nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x54085d0d __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5a1ef1b2 nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5bf53607 nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x61712c53 nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x63d1ecfd nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x71a4a6fe nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x75ef1b4a nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x769149aa nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7afc116d __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7e91b530 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8a9c70ed nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9770f586 nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9860d81e nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9a05e302 nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9f57d315 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa4b1ac95 nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xab3b2caa nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc4ebe41b nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc86c2bde nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcaf7df66 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd4897002 nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd4ac9f42 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd972822b nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xdd0924cb nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xdf86eafa nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe0e58641 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe51d6c13 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xfb845cf8 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x230839e7 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x24f210d1 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x257994be nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x27bcf1f7 nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x2b1559b1 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x5f4af166 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x64ca05ff nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x6638bac5 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x79df4564 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x7a4a208f nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xd266fb05 nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xfa3873fd nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xfa6d267d __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xed747061 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0332da12 nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x28b5041c nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x2d84c34c nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x44ad67e1 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x93a8a5f1 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x9495e56f nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xa42a1510 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xad919b83 nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xbef6baef nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xc6cbf57d nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf56d39d2 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0d959435 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0x1591b2c6 hyperv_read_cfg_blk +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0x221394ae hyperv_reg_block_invalidate +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0xe5f73406 hyperv_write_cfg_blk +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0xfb921e00 hvpci_block_ops +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0x4ea06bca switchtec_class +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x79a0799b intel_pinctrl_probe_by_uid +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x96a43f93 intel_pinctrl_resume_noirq +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xa71893e4 intel_pinctrl_suspend_noirq +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xb9a1acd0 intel_pinctrl_probe_by_hid +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x1f5aa692 mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x2f21027d mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x7a6a5583 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x60633775 cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x9482472e cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x579be2cb wilco_ec_set_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x6a550aa7 wilco_ec_get_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x9c7ebccc wilco_ec_mailbox +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0xccf199bd wilco_ec_set_byte_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0xff9130c6 wilco_ec_get_byte_property +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x57c46ceb asus_wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xba31a9e6 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xd8562dd9 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x1b0b3141 dell_laptop_register_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x2ce78b9a dell_smbios_unregister_device +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x45170471 dell_smbios_call +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x7fd2ce06 dell_smbios_find_token +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x806c13e8 dell_smbios_call_filter +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xa0e24e20 dell_smbios_register_device +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xb9400dbf dell_laptop_call_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xc2871e79 dell_smbios_error +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xd6c6b12d dell_laptop_unregister_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0x8eef8246 dell_wmi_get_hotfix +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0x9559234e dell_wmi_get_interface_version +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0xa167d064 dell_wmi_get_size +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0xa3dcfa65 dell_wmi_get_descriptor_valid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0x8ee9455e intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x06f7821f isst_if_mbox_cmd_set_req +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x58a8261f isst_if_mbox_cmd_invalid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x861369f8 isst_resume_common +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x9a5c38f2 isst_store_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0xa8330689 isst_if_get_pci_dev +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0xe18f42a5 isst_if_cdev_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0xe3f0faad isst_if_cdev_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x112d0332 telemetry_get_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x17d36efd telemetry_set_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1c7565c2 telemetry_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x35db93a6 telemetry_get_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5847f501 telemetry_clear_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5bb8e91a telemetry_raw_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x665cd407 telemetry_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x6b892524 telemetry_set_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x82bb2dbe telemetry_get_evtname +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x90551504 telemetry_add_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xb75bd1e6 telemetry_raw_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbb9a2726 telemetry_reset_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xd14ffffc telemetry_update_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe1eb4be1 telemetry_set_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe8847f53 telemetry_get_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xf00771b0 telemetry_get_eventconfig +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x065b4695 wmi_get_acpi_device_uid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x17b0f8ca wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3c69b740 set_required_buffer_size +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x6068bedf wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x76ae31fd wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x792c8d81 wmidev_block_query +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xaba842fe wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xd7752b86 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xd7d25434 wmidev_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xf18bdd75 wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x5a4f6b52 bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xe0fcf5b4 bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xe875bff8 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x42f6fcad pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x6890cfb6 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x9f94580a pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x0d4fef4b rapl_remove_platform_domain +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x2a781311 rapl_remove_package +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x4d6154e4 rapl_add_package +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x9b8e7362 rapl_add_platform_domain +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0xfe2b4e0e rapl_find_package_domain +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x224a6a9d mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x86f32d04 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbef0af16 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x083379b5 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4b17f268 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x812b5294 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99df58a0 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa07185ef wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc1b25f3e wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x78994254 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xb78e230a qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x077fb188 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0fec8b95 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x163234b9 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x188547f4 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1be00f69 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1fd178fb cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x249c673c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2747e74f cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2ba93907 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f2dd1c9 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x472fa09f cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48ca9b97 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4eac7b15 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5158df09 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5339c606 cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b4de2e9 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6001481d cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65286bd6 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7270eb1d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x812c444b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89b877c2 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8fa9cc18 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9be1876d cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9da7e25b cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa31f4b18 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa4ecb852 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6c0348a cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xac51ec49 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb7d2173 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbcbdd6fa cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc38cd882 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc7fe696d cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc87face6 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbb26792 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbca0d59 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xce88440a cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd493b054 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8782f51 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed91adde cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xee086f5a cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef6d5ba9 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefdeb13c cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf32487ae cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5cce673 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0038e225 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3dc698da fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x401f5ccd fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42c281c1 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42d66699 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x562e200d fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5bb44334 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x66f4e4b3 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6dc6c5da fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x72e87be0 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x912bd088 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x938f621a __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xac53a945 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xce52cb60 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf44ebdb5 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf7b5a36a fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x45789194 fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x5ae99d40 fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a4d271f iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2e22d5c9 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x802e5a9f iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x99855bfa iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb5e8e0b5 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd5cb4487 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf89a02bd iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0b6625f3 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x137d71e9 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x141068b8 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17ab411b iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a073398 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a1592ae iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1e86c3ab iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23e5e0f0 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36604d49 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a0c11c3 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42d16903 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43ad1292 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x474ede6f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a5ba3ae __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f6af6ea iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x587f383f iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x623f05d0 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b2655e3 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f0cb827 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b7ed1e1 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8068b002 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8731b6cb iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f57c34f iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa204be86 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa60ce768 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa84d3b5a iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8e7727d iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae025edc iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb365d847 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb380bce0 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7fa8322 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd2a1c53 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9c350f1 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca1ab1d6 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd379cb98 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4cb8894 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5353791 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd8aa6850 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe09244ea iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb09bb84 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef79c25e iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf3766d8f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0969f583 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1fb7d373 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x35f95841 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3be7dc00 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5e71b29d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6535a690 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6d02b85d iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7b76f2c9 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x88307df7 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8dc379ac iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa2ab8c1d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb0b0a95f iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb371d747 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb82575ec iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd8059991 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe397e51d iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf34c403e iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12d64157 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2c7142a9 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x348ecfdd sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3e4c9bb9 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4e8426b1 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f40b3af sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x609116ec sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x66ca994f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67d824a3 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6aa13fba sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6def2d5d dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x84b8c2db sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x873993ef sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8baa7936 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8be62f45 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa260b250 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb5d0180f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc0a1489e sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc514407a sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca18cf9c sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd6b0e2bd sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdaa06ca8 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe1163bf2 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe919aa6e sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x021352f9 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x081231d0 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x094b7659 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x112b9a09 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18010e44 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29bdd01d iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3133dc5c __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x313daa6a iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ad7a813 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ef4eaca iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3fed2753 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47867762 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a43638c iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d5b9e79 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x535a75f5 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5bec6475 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5cab4bed iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5f4059b5 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x605e3ca2 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76c9a8c1 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x773aa765 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78ad78df iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85eb8e29 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x870ff5f2 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x89034b33 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8993371e iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9261a303 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9d057e82 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9fb7d468 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8a93bc8 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9adbc8d iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaac3519d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea92c90 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbacf595d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe6e44ca iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbedd7b5a iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5075d50 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc56be833 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8e32d38 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd974aeb iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd46318fc iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4697d5b __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9ae2c91 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf3a16a4c iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0bea0dd3 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb6af7660 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe0187016 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe3579578 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x303a56fb spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0ffa90b1 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x18d68627 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x45995930 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x96e2f4a1 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xac720210 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbaa2cf52 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x105c02e0 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1433f824 ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1a159687 ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x30edd25b ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x32554ea4 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x45c1c869 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x8531b6ac ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x96fc93f0 ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x9a035b4b ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xbd7cf424 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc53e80e4 ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xd253b384 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xef0da822 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xf271a515 ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xfa6472de ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x32671f55 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x683ee084 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x69c159ce ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x75495399 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa96220de ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xb23de962 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf582dc70 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x0ee36715 siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x4685abd2 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x7d253a06 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb158f6f9 siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb5575e66 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xe361b16f siox_master_alloc +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x04b0d234 slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x0bfef15a slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1409686b slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x24dcb0c4 slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x31bb62e2 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3c4acaf8 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x503d60d4 slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x5306e61a __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x66ff351b slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7d695581 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7d6ed13c slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7e8c36af slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x8254fa2a slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x847af3d6 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x992b3109 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9ff45f77 slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb1ba11bc slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb3c314a0 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc311e5e0 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xca5dd528 slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xca86592f slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd51e8a88 slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xe0d3745e slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xec72e139 slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf2e2d3fa slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xfeb19b31 slim_report_absent +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x195b7d96 __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x348b0d1f sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x9fe034a9 sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-cadence 0x73258f2b sdw_cdns_debugfs_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x262ac8e7 spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2646b7e2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2b3b567d spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x72cd6d98 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbd32d380 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdf54583c spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x06f21ae5 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x17360d7f dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x181c6e86 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x187e68fa dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x38c04ce4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x897ccbad dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc9558e82 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe24ab203 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xee49d348 dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xd640a8c8 spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xdac4966a spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xfe6a1019 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x12e8a488 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x27f38572 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2cd6bd88 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x34fb4061 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3afa366f spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4e907f76 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x50e23206 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x59c27c7b spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5bdc255e spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6e97ad86 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7412456c spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x78a3eaa3 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x795da2eb spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7dcc823b spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa3a1958d spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xab258b2b spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbc9c94eb spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd935d0d1 spmi_register_read +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x127b942c ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x088c1b5d comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e4dca87 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x202143bc comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2794e136 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e8dff28 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3763e2af comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x39defdcf comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bc1192c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3ceb4e2c __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3f94bbed comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50dfbbc5 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5aefcbbe comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e9ed41e comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f0c7e7e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x664bb7e9 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68acf463 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x70acdd05 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x722b4cae comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7c36732f comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7d836cdb comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8445f9cf comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8560b502 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ba96769 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8e075dad comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x91df7a8b comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x922b9621 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95a0ccae comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa4841850 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xadfd87fb comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcc3b8709 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd2f9ac23 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd6706041 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdf56e78c comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec47f123 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf1fb4732 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfaf59a09 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x270a1ca0 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4141e9b9 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x67747ef9 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x82bdbe43 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8db9080d comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xaac8a2da comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xab259eda comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfd17b13d comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0600a8fc comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3338afac comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x60eeb785 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x6a154d5b comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x864334e4 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcab05f5e comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd54e80c0 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x0c312ea0 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x46cfadf5 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x57d3270c comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x89b637e9 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9805531f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcce0dab8 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x3a114d9f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x85956de3 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xe66f64c3 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xa5a1f2f7 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0d7dc58b comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x106b6cbe comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x20d593c7 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2a1f6cb4 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x446146f4 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5281984f comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x78c87950 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7cfeb601 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x827072a9 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8c4838a9 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9544a923 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcce475ba comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd3e39519 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xb429fbd0 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xdda26a81 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe86cc7d8 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x65987505 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x9e5673bd comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xca784d4b comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xea878430 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xf16c9c0f comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xef6c493f das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x04a8cdf2 mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x078c2885 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x08fb8314 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x09bb475b mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0cf4b037 mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x136c0343 mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x423fc77f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x70b3eb5b mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8e6a9a8d mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9b7093ed mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa2c623ce mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa82cb48c mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc23905ec mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2d7bdd8 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeb29793e mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf6d497f4 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x2f2be4b5 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x36f45185 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x03764f08 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x051db79c labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x14ec35ac labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb1e15057 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf034d8c5 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2b836e71 ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x35d96b5f ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x461dbca1 ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x519afbff ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5500d4e0 ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7231c0fd ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7852d015 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x85ea39e1 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x874db584 ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa3b22c79 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa676e96f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcfac25e2 ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd22f0512 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd9c50813 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdd6a5957 ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xfa99449d ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3751856b ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x820dbcab ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x821df02e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbe0591bd ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe6c9ce2c ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf2d7f39a ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4d499c0a comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x609bffec comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6d4d8172 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x720196ab comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcd84b91d comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdbec87f0 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf77144a5 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x2df8b264 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x90339652 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xc9e8d216 fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xd41f24ec fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x1cbe0c5e gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x20b57595 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x2700ac8a gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x2a32f0d2 gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x4072f58d gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x51411f08 gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x7735db3d gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x79b36802 gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x7f1f2baf gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xa04fb3e8 gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xdda059ee gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xf949ae7f gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xfefc7760 gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x046a84d6 gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x1aa2eaae gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x28d27bcf gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x2b3d7fba gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x3e1bca4e gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x4b519b44 gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xa24fe6e8 gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xae54006b gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xb23a1d60 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xbb0d5a2b gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xc6cf0634 gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd006b7b5 gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd6da0759 gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x68e623d4 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x9ae7c9e3 gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x9f350b96 gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xd613458b gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xee31e4f5 gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xf7fb3dc0 gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xe137b584 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0x67026c8d apply_msr_data +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0xb0175a2f load_msr_list +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0xcdb84ead release_msr_list +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x0e30a6d4 gmin_camera_platform_data +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x1af009f6 camera_sensor_csi +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x21937a13 atomisp_get_platform_data +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x2349bc87 gmin_get_var_int +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x3801e45e atomisp_gmin_remove_subdev +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xa4565267 atomisp_gmin_find_subdev +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xbae0e12f atomisp_get_default_camera_caps +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xc67d30dc atomisp_gmin_register_vcm_control +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xe5a6d5ba atomisp_register_i2c_module +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0123570f spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x03a53342 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x10dbab8d spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x291c8aae spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x77ae5be8 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x87cce5b9 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x91cb2e21 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x95cdb175 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb3bb5f33 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb63fe456 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb734cb9d speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xba65603c synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc176180f spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc1cef897 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcc31713d spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xceea0d3a spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd305ce9a spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd93829dd speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe48b4f3d synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x03a29602 wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x25b99bb2 wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x34833b9b host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x480cf9ab chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x8b20a7e6 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xacc179b0 host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xd9c0364c chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/tee/tee 0x03c7ada1 tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x089eeca0 tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x13d1d8a4 tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1424d833 tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1749bfdb tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0x217557b9 tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2d12a754 tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x3b25526e tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x4848fdec tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0x4de79d68 tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0x53681c1f tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x55da5800 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0x57a2ecb2 tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0x5f761a8d tee_client_close_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x63fef5a8 tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x7c092a34 tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0x91a7fc52 tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x9e6f09e3 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x9fa0a931 tee_shm_put +EXPORT_SYMBOL_GPL drivers/tee/tee 0xac0cc212 tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0xbe9aabcc tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xc34d36e3 tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0xda76d95b tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xee54bb12 tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0x679025d1 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0xae8760e2 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0xdb37bf41 int340x_thermal_read_trips +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0x32b768d8 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0x8105ad1f intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0x9c9a6d36 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0xfee81b5a intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x04e19327 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x29105608 tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x490ef5f2 tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e5064a7 tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e64bdfd tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x6c04b26c __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x73ad2acb tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x785eb82c tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7b1e4258 tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7bbe941b tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7dd9f78f tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x873d4b1b tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x91a9ac7f tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x93861dba tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa3d2b403 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa75ad1d2 tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xbbbd0c75 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xbfcad997 tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xcb095b56 tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xd46dcd01 tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xdc452eb6 tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf76028c7 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xfbcb3a29 tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xfc7f477e tb_ring_free +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4e5ccc90 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb56d0be3 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc2f91b60 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe18591a7 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x75819ce3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb52e041f usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3c4843cf ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3dd30d1a hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x73366d15 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0a6420cd ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1dae144c ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x291e0f87 __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x292151e3 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x7eccfea1 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf24d68cd ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x1c14e8c5 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x435d6aee g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x7d8a9c25 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xb80235c2 u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xc07826ad g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xe34a1f5b u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x16fcf9e6 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3207ac0c gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3a3f2a27 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4e3473cb gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x501f8239 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x539172b4 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x57074646 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x64b6b9ef gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6e1784f0 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x748f3bb8 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9213c12d gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbce2eaf6 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc4c2a2e2 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd8c82259 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfbb597d1 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x3022e3ab gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60db48f5 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xab28e552 gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc0a01527 gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xef894cb5 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xef92cad1 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x57f469c5 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb2256738 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xdf0ba9a5 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x025acfc4 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x129d8137 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1aed426b fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1d5ebc23 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x330a49f6 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4b61d59d fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4c1bfe3e fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x57adba76 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x67733366 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7173df64 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x895e68bf fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x89e2d038 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x92f75401 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x930ee28e fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa6e8b9c1 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb2080545 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc8e7cec4 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0589032c rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1f31f9d2 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x280c285b rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2dfc5d4f rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x55d998a9 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6130d901 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x79351c29 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7a301261 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8af31734 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8b4c2464 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8be17476 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x93852f17 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb19133af rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdc12605c rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe5b73045 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x11a2d98a usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x130cadd5 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x317a4860 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x32376ffc usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a8ee90e usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d7819f7 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x43fce25d config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x44794ed9 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x46f7dc6d usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d04b9d0 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4ec08bfd usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x547a6e02 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x59fdb57f config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a03f5d9 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67dacbc0 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ce539a8 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x749e12d6 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7809b22b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8f3de421 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x90ba750b usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9752e1ca usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xacff1049 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaf600777 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb775db55 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc22046db unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf085440 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd9efe690 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdd05d2ab usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe32d41df usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee6662f4 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe676493 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfe9c0b26 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x449072f2 empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x4f6bb8f0 gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x619203d0 udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x6a5aa6ff udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x7b3f6ba7 init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x7d53d29d udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xad932e69 udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xb8a42e01 udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xe7f22f55 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x013bde2a usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01e93902 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x09de4a80 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x140e2bfb usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x37a96b1d usb_gadget_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3a03cf96 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3d977c09 usb_gadget_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x45c8eb94 usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49edd634 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x54df293c usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x790d30a2 usb_gadget_wakeup +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7e5c8ce3 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7fd1d5a5 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x825414c5 usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8a1b718c usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x90f4d238 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x92f30d24 usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9e0931bc usb_gadget_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc54bf23e usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc8a7efd1 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc9356e90 usb_gadget_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcd3c51e6 usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd26ed70d usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd5cf5d84 usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf82f3e3e usb_gadget_frame_number +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x87be9f84 renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xf7e57e5b renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x0d4d475b ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x47a1f390 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x062e6491 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x16ebf823 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2c520ea3 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x36126a5e usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7a15b5e7 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8710fe8f usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcab9ba09 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe04c3a06 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf1e5b435 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2734197f musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x500e5e69 musb_get_mode +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x70ad650c musb_queue_resume_work +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x93a9b249 musb_root_disconnect +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xc7eeb988 musb_set_peripheral +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xd10f6c77 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfbdf6e96 musb_set_host +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x0ed4cdeb usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x1564217b usb_phy_generic_register +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xd2037fb2 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xecea546b usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xf347f495 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xe0f80544 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x08ced1a7 usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x4b468e22 usb_role_switch_register +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xddb29a0f usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xdf92739f fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x64e16dde usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x06b30a28 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1e01fb55 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x288ed3eb usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x349a75bc usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x45cc7387 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b2c13bd usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6dcbbcbf usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x72e6ab01 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91520395 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9a5f855a usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b3d51fb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa5983b00 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaf39ef5e usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb80bf0ba usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbbcd497b usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbcc7534e usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbcf91622 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc695c38c usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd48e7ce4 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe39f8ff1 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe81b48cf usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x1e23d8cf dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x3d76250c dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x1811cea2 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x1195bc4a tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x00a44b38 typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1075ae52 typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1d615c7f fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x23d11cb5 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2f1a5983 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x31c0fd7c typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x34ecae2d typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3c7f983d typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3ee814fd typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4ac48924 __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4c4c1fc3 fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x57b3c363 typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x62878d7d typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x662a8f78 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6654109d typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6e6bf7d4 typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6fb7a669 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e1f9a0a typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x834e3fb6 typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x968054a5 typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x97d7f55d typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa48ed56f typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb0fb586d typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbad23d52 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbf5ee804 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc7a907e3 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc7fb3b03 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd1889e56 typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe76fa5f2 typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xedf98318 typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeef0a948 typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xfe41a381 typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x0a86b2b9 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x162ecb1f ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x1b084d4c ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x1c2db12f ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x2c602cf7 ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x66bb9864 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x8f78bb2b ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x9ff3bfb5 ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xdb5136d1 ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf5589552 ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x02d08336 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4207c4b8 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x50d6424e usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6105ef8e usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x83329abf usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa209374e usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb6f6b74f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbd6b4088 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xda591a68 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdbb2f1dc usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe55e4db5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xeb381d1b usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf357dffc usbip_in_eh +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x27070cbe __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x360f580b vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x7bfc1463 __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xd00c6e28 vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xf7984ad9 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0x57a79704 mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x01836e4f vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0fb0832c vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0fd523ae vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1619d9d9 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19895c11 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1a2f975a vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x230e8a21 vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23e04465 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x277817ee vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x27c005d7 vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2c323df0 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3e982dbc vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x493fb767 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x51f1f277 vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d5b223e vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63de21e4 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6556e21f vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x69c2c828 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ddf0618 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6e3d4ff7 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ec348d8 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x75ae1224 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x768ccb41 vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x77624b0c vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x77e9385b vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x833b6d8e vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x89b709cd vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8f4277ea vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0d37a7d vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa221ffb1 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa8ec1703 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xadf7631c vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf3d8fd7 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd35a4c4d vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdc19309d vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeafc673c vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf7f82575 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8c656eb vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd660f25 vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x17e37975 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1e6ef9d2 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x43735a4e ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc34eefe7 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe749820d ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf4620b27 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfa2e2bc4 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x5e6a412c fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x03ee4e79 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x453b73d2 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x256ebd68 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x4c76efbd sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x0e1cee08 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x840ec0e8 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4606f8d viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcd538333 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x0e338292 visorchannel_signalempty +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x32dc0c67 visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x4aa110a7 visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x4de03230 visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x56401853 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x70c73975 visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xc455c651 visorchannel_get_guid +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xc7bd40f7 visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xd98cb067 visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xe19a743f visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/w1/wire 0x15bb5d36 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2208ff28 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2dcb69bc w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x42cf7832 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4f7ea0d0 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7993c671 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8752ec60 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9b04b034 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9c3972c9 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc9b6123f w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd2bb240a w1_touch_bit +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x12a5bd78 xen_front_pgdir_shbuf_unmap +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x1d831151 xen_front_pgdir_shbuf_alloc +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x4258d8c7 xen_front_pgdir_shbuf_get_dir_start +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x63937dcd xen_front_pgdir_shbuf_free +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x7e854358 xen_front_pgdir_shbuf_map +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xaa8cdbcc xen_privcmdbuf_fops +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xced2c159 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x1f3b1840 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2e98979a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xfffb051d dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x09f66db1 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x12885bf1 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8db434bb nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x989e8a05 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa8e979a2 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbf7b0e36 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xea3896a0 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x022d50f2 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0257aff1 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02ea2a02 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x054b0c39 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0566e250 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x080eb1e5 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a8dd4c6 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b7228cc nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c713499 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cf487df nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1169ed9f nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13e14401 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1595de37 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1639ccc1 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18cf2046 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1acc4e20 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cee1a62 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d797eb1 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20bbde0e nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x216141b7 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b98b02 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x261ccc92 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27f64361 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ad3f083 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c05ca99 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c4554bc nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cbc1c8b nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3158b9e2 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x326f6e76 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33aa172a nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33ac2809 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34288cfd alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3629ee77 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x367f0524 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36d8f598 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37496acf nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x396fb88f nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e54f70c nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3fc7d8ed nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x402d61f5 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40d8a4ec nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4310f42e nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43edd022 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45a97cb4 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48baf92b nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48d65ab6 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4da0348e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50c8d0c0 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51a84a70 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x570eb6a9 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5866a708 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x587123ad nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c7b7159 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d6170a9 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e2ca21c nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x619e626d nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6278774b nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62f6cb08 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63c00d36 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6493c461 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65111139 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69c704cd nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a72426d nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6af9c41e nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d4e11ad nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70df6dd6 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70ed6dd6 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71eff657 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72e826b2 nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7483d282 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74d45e79 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x777b5652 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x778e687d nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7922c257 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79b561a0 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7af4eada nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c4dbd72 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e58b7c3 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x866adb40 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88a9083b nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b43704b nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e9f4a8b nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9061bd4a nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x924a1520 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93c02183 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x954060ab nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c1b829c register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c940906 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f4f79b1 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa039f9f8 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0b31c03 nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4004baa nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7716b94 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8abcded __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9fde04 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad971dd0 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae5433f3 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf87f02a nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2dc571f nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb46b48c8 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f5c91f __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6b58ab4 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb71525e4 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb878b559 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbaedb301 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6b2c88 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbce77cd0 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdfdca77 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe9fd7ea nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0dd5668 nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3d892a4 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7e4a5fd unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc92c8c94 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd01b3b1e nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd29279a8 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6482dcc nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd753e2e5 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd82a9425 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd848180b nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb804c53 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe075d2c0 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe16ad4ab nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7922623 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe99fa497 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef1b0e45 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3160efb nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4ea8deb nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf854d15c nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbb32d39 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe965ffe nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff87238a nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xe2a8bd21 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x004fdcfa pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x053dff22 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ade27ae __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0aef5e16 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ca17eca pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11f72b99 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x12478358 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x145134b8 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163831c3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x17df2008 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18508acd pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c5270e8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cdde079 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x208f5c30 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2585151b pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25ddb221 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31621645 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33ca8aff nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36806bac pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x398e642e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39ac52fe __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3bd55af2 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7d84cc __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e79aa70 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40bc3c6d __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4334034f nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4490163f nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x459bb2ca pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5eccdb86 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6020291d nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6308a0e5 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x635a8454 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x662f7697 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6de9a6ad pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e8d8612 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76556892 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78ecf37b __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x836b98dd pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x88b3c4d7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e5a3580 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x92a1de13 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x953b0b5b pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c290329 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cb6119e pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d47d52a nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa319bfee __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8fc90bc nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaaf403e8 pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab8d4b29 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae4da7b5 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb54b6333 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb65562c6 pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbaa3f4ca nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbbc5a7f7 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbd32aa2a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe14d5f2 nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbeba79ad pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc528cb48 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc59641eb pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc708b3dd nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd2881cf pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdeaf7c3 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3e27436 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4cf1ae8 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6ed7dda __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc29230a __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf05942f __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf52fcbf nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf56cbff pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2940d4d pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe65e7751 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7724d37 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xea0b1ee4 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xecbdbfcd nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xedf5a413 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee960d9f __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf02a568e pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4ef24aa nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5ff7d29 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfade716a nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe06d118 pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x19530797 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x97d9ab87 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb4352803 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x2f873c65 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xbec0f8f0 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00c3e955 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0d0b54fd o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x186e3a8c o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3eaafe70 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9cc62276 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xab1b2121 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd01f9bdb o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x235569e1 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x440e89b4 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x84218617 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xab8175b9 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc2286cd1 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf5a2dc86 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3c921ee6 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x6b2c86f6 ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x87cef0e2 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x93f51b15 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x96d760c6 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xc3d2aed6 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x0820baf7 unregister_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0xc6c3e364 register_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x046ef208 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x51098e7e _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xecfe1d8f torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL lib/bch 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL lib/bch 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL lib/bch 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0xeaf3cb23 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x7f376d08 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xaeadcbe8 poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xfa617389 poly1305_update_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x249f2c13 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x7488e97a notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x25e3f4cb lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x88793503 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x452efc80 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x54430680 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x54bcb209 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x78921d9e garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb3a2f5c0 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xd00cddcb garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x2d42108b mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x759c8a2e mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x89c65c7c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xbf9d78a1 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xc822d9a6 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xe82c55a1 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x10c84812 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x3c3108d4 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x03a22ae5 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x66160f70 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x18d1576e ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0d31cc23 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x10dbcac0 l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1192d368 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2a734d1e bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x382f94a4 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x39c5c276 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x76b3607d l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc8fbb7db l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf260f0a8 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0x297bf4b2 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0b706ceb nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0fd9944c br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x45e4b3d5 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4c45ed47 br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4c6b90ab br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5f62a76a br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0x61780d18 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8acdd4cf br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9127af86 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x924a210c br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9ef2cc90 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb2a2b6a9 br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb2b805ed br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcf9b251b br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd6e26514 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe1e5aa6c br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe4b84320 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf0bc22d2 br_vlan_get_info +EXPORT_SYMBOL_GPL net/core/failover 0x20e3eadb failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x304045f0 failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xa1e9706c failover_register +EXPORT_SYMBOL_GPL net/dccp/dccp 0x014a4c02 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03f5d78a dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0707a9fb dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x08646a62 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0a400fad dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b71b2ba dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14141a78 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15b4457c dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1884b664 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c2abfb5 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2dc0f172 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x41761ac4 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50a8dc16 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x52175d88 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f8469b7 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6bc87442 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x71c17875 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x722630de dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72a2cf47 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7edd5d25 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80b4b437 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x834a03d2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x84d7c2aa dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8aaa0af3 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c099b17 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9741ab13 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e58dd68 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2624a42 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa628ba7f dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3b6a26c dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd3a08f15 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdeefaaf2 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe602ae3a dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe97aa3db dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed268715 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf7479247 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x01975fe6 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1e145f00 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2cc18bc0 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4edfe3dd dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x55963e28 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcf100600 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x024c9ee5 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1e92e5e5 call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x31ffb446 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x409da56e dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x49123266 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x49802f76 dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4fd7dbb2 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x642da0cf dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x64954d49 dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7f406be0 dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x84911b0c dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9564f508 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xace7706a dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb994635f dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc3375c69 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc35ee7b7 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xce18cf44 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xde8f8dc2 dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdf756dab dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe448452b dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xed722c5b dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf0ebceac dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf3493439 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x3e4b71c6 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x60ed9ace dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x655318d0 dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x746d6cef dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x879fc468 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x991c268a dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xc262cc7e dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x22b43cc1 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6a5f0f05 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa5d2dc04 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xb6c175d2 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ife/ife 0x5b4a0dce ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x76211a29 ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x5684e2c8 esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x7444657b esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xe2e73fe4 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0x05d4aa0a gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xac9705a4 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0f39eaad inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2d6bd1df inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x39d0f690 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4cb8610d inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7739fe27 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x79c31aca inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8cfd4e58 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcc65442b inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xef72844c inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xa3303331 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x01a52797 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x11514517 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x24c37ee7 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x43507d84 ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x514d038d __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x578fa708 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6522f21f ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x67319777 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8be6fcae ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xba82f1f7 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbda0fd07 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc8366122 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc88c71f4 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf2686b5 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd4bf619e ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe9c70d23 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf4d2545f ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xa94fd09e arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x67ff4582 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xfc49ea3a nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xadf5a30c nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4c5eb1ea nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x74ca2747 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x996b5e82 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc8db661e nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xee37452d nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0xdcee6379 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xa81a19ad nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xb03ceb18 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xd1a48099 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xe350287c nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xfc74f012 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0b4bf059 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0e2b1d25 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x851c4452 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc6303ec8 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd7db8d6a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x142e2709 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x35c6245a udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4619a19a udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7f1b4e3f setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa8f15181 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xc9f9c1ec udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd4cf0715 udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xee424a84 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x255c8e6e esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xad017569 esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xe48c73ac esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x1441a8a5 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x44c0fc5b ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7db2b91b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xa57a3b5b udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xcc8e1a66 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x9a737e35 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x21a26604 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x5e93d17e nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xee1c510a nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x25bf8223 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2eed9530 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x48798738 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x60258604 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x6e0f5c66 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x5b89c210 nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x84eb6205 nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x8cf6c0fe nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xbb3a766c nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x0b2e98d1 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xc7624d7e nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x14140289 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1cd6b1ba l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2bf95390 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x42b116c3 l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x455e3bba l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4c1ba28a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x65265736 l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6d725ded l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x728e05b4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8478e690 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8bdc17a4 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x99fbc2de __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9b73e219 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd87b723b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeabf0b63 l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf016ada6 l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfef37391 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x771a0210 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f38e0f0 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2b1a3f8f ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3666185b ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3a33773c ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x44b01948 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5acad9d5 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72dd384a ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x738a65d2 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7559ae3c ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x771f5443 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x93f8894b wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa7eb6d50 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa9a3ef3b ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc3fd93dd ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd977566f ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe40a314a ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed7838d4 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf0c431b7 ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x4ddd618d mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x67c6beac mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7da60b16 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x96a4a198 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x9c8b7a0e nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0566d148 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1599830a ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5c2eb07d ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6f15d0ea ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x74ab2000 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x78251fa3 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7fdd9584 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9b8d16bc ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca4aa7db ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcdb604b6 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcdee8fd8 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcfd4e82a ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd3640713 ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb572280 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe4472614 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe9795c72 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xec583223 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf064ae3f ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfeb904af ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x44dfa648 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5c82e730 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x853d5f59 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb2d711d8 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x247ad2a6 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3ff55ad3 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x640d8568 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x869ced9d nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8c4cb9c3 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xde137376 nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xde7fc6e5 nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x028e15e9 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x033ae4b5 nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x033d7fa5 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03a66de0 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0816853d nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x084d9678 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bcc387b nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f015fa2 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f5fce6b nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1512a9eb nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16efb7cf nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16f1e263 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d2ed3e8 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e9628c3 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x211916ee nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26b41646 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27aa9e7d nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f9f00a6 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fde95fe nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fec6518 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3031363f nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40d5bea5 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45943847 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45a095ab nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47f87339 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4904b0dd nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b726baa nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b752d81 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cbf78fb nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51aba72a nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x598638fb nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b26d098 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d8d616f nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f328830 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60659f2f nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x607708e5 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61a90805 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65b9cfbf nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f2fd0c2 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7189baae nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72076c1a nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x720c03a8 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x720cd014 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x750fadd4 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d784585 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e9f16b5 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x81a71d56 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82a23bfc nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85bc575e nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86955b50 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87c25d45 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88ec4a8e nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x892fcd28 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a704414 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c598591 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8eef73ba nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9395cbe8 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98de8242 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb7399 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa109b831 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4bb31b1 nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6a9a377 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7438153 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae54a1e4 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae774395 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf0847f0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb12eb98a nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1ad427f nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1f5d975 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbfb3fb14 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4223f26 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc85112fd nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9d1852a nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca694afe nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xccbb3fb3 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0726fd6 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6af2119 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9021492 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdac637d5 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba7326b nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4069a09 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7dac381 nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe97359d0 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf56175a7 nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x7e9b2a7b nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1d366745 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xe5ab890d nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x424c4e7d nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x435e296d set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x59a7d661 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5c5d80e0 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x60215eab nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa4cbff2a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa85199bc get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf3b699f set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb0303542 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb7feb23d set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x98c62dd6 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4ce27aa4 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x76ca6d05 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7cbd6ba4 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7cd0bff1 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4435a18e ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4912bf9d ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4f340e25 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x527eaf48 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x603dbb5b nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xca610676 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd491695b ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x9b9b05a3 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x2139533b nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x2da4c9b1 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x726841b5 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x8c0d5f84 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x14a030ca flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x201e8caa nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x2ed65b4a nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x3cf7fd10 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x492aca1f flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x4a31d1de flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x4b58ff9a nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x4d706df2 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x63548241 flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7d3b98c0 nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x84cac262 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x910ab416 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xafbf75db nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb550e2c8 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb60b5321 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xbf6bcd0f flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe020b206 nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x007b3ce8 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x017a97c3 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9893ab64 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9bd97205 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb0d4cb80 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xfe228c8b nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0907529f nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0f2fa551 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x204ad8ed nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x29fc4af4 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4ff53cdf nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x652000db nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6742b905 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x99e86687 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb276dc46 nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbaba2bf2 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc8315bb1 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd98c5d8c nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9b8b96c nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe18af78c nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf124689a nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfba7fb91 nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x057d3070 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x28a87efc nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3d4c5ed9 synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5881ba81 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5ea6c8bb synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6bc3e4c4 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x7554f40d nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x828fb218 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8dfef24b ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xad72ec2d synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xf3c1abad synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0339da5a nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04c26b4c nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0c319461 nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0d7edf3c nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0f8948ad nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x11d089ef nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1bf40d41 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c0c9986 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x25cce472 __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x385eb3a3 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3b3592ba nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x533f9bac nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5dbbd26f nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6227e082 nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x67ccd426 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x684b68b5 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6943e173 nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71e05fe3 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x743029a5 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x74be9b5c nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7692821f nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x81623fec nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85c8e036 nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x873b478f nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9cb6f079 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa053f5b7 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe811175 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc3ab09d1 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd1e09b57 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd4185b46 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf3e81bd3 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf4c40e28 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf769b192 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf9097578 nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfed2fd70 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x05b14741 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x22ec0e88 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x508578ff nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x510e8a4a nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x51d9d729 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x63307b54 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x529bb40a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x5e4d3c44 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xf55d4e27 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x81911182 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xae7d3038 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x3e6fa02e nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x5dd534ee nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x8d645754 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xb68a612d nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x444af1e5 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8d7178a3 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xce43ea18 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x003638e4 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0633952e xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x17f701ce xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x193b2d7b xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1a632c22 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b991761 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1c2f4fea xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x228c8252 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x730a8500 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7f8d75e5 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x893865c1 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x96e85f95 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xace0c279 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xad66c937 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xada5c114 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1ee6ee8 xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb1f46b7 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd6b740b5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xda10612b xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe13233d3 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe30a8303 xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x6c7a62ac xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xe07d1594 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x06a9c8d0 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x0e54ff74 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x2ceb8236 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x4f9bd037 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x6146e471 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x737e79d1 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nsh/nsh 0x72d7071a nsh_pop +EXPORT_SYMBOL_GPL net/nsh/nsh 0x90842053 nsh_push +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0e8b99f1 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3a9a8f11 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5c92c3cf __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa01a00f7 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa5eb8773 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb2f2126e ovs_vport_free +EXPORT_SYMBOL_GPL net/psample/psample 0x2186ec8d psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0x2d136e99 psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0xa7ab0c50 psample_group_put +EXPORT_SYMBOL_GPL net/psample/psample 0xf3d4cd77 psample_group_take +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x54c07a8a qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x840998f0 qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x8a1d7f3d qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0679fce6 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x08530dff rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x0fee652a rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x16ad7949 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x16f35395 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x1e4d501e rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x266f2ef5 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2c866942 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x48d36ad4 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x5c9e4266 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x62685e38 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x6382c0c2 rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x7989c4b2 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x7dfe2a8d rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x8083ee59 rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9a138326 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xa3b91d35 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa84825f5 rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0xb50aecd7 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xbee66021 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xce32c0a1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xd00240d5 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd77e755d rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xddc45f16 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xe3c81fbc rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xe4c2a022 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xf7622eac rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xfaec0967 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfd22dd56 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xbef815ab pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xf4b3cf23 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x4aebc41a sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x7f492ae1 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/sctp/sctp 0x888cbb40 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0xe4b082ce sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/smc/smc 0x0b17de56 smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0x1b2a09a0 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x26d13c8e smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x8ca0fd07 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x92aff8f4 smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x9a476df8 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0xc105989f smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xc5fcb365 smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0xc8e913f6 smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0xd381206a smcd_unregister_dev +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0cdce287 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7a5bce24 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8e91397e gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd0654c6b svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03ee2963 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x057bd030 rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086da78d rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0944b23b svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a658591 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a709504 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d1f3109 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dcd4c1b rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e1e7010 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e9948d0 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11f14700 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x145123db rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14d67d8a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14ef836f rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15bfac59 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1723eeac xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b08d047 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b917800 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cee844c svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1df1efde rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e28f323 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2107a178 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x212b0512 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22abc12c sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22e15141 sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25314ed9 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2584ec84 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264a27e7 xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c2f46e xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x294acca5 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a642969 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b290193 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b785697 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ca57105 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dfbc5e3 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e4c3325 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e76a5a2 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2edd28af rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fa7004f xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30a59cdc xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34a3d20b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34d184de rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3686480d rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36f62d7a xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x379698f1 rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x379d9e68 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e89575 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3819a014 svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d8db610 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e43663d svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eee5166 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f0c7aeb sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f264137 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x403126c3 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4080cdc4 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41f781d8 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42cb8a1a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43e988dd rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44d61c99 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4503bebf xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x459e6b57 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x470e8d1e rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4881b94a xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49bb4b4f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4f42c9 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bd0e9b1 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d18fd00 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d5b6bf2 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ec6b39d svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f605c33 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x504cbfdd auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x506a7db7 rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x516697c1 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51ac72b2 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51e46678 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56bb18ac rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59723631 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59cc71c1 rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c8aa53f cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e8ff511 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f00f0b9 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5facd9d2 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6007f650 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6023fc91 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x615af6dc rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x617bbde4 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61d572cb xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62cd8777 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62dbb891 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6343a4fd svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x661de913 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66880c44 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ed2439 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x679882fe svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x692f6666 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69bab9dd rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a5948d6 xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bd940a1 rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c3a8562 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c991a00 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d010f07 rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f2e0420 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71668be5 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bc40e3 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c3357c rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72f53580 rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7351c018 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74e060e7 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x757e6295 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x767e1aaf svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x780eb70f rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x782004a6 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x795b02c7 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79b8a4a2 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d8831a3 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dfc53d1 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f784e51 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7feb0152 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x807541b6 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x820c0015 sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x821d7210 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85aff12f xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85da8d25 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x870954e7 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88263c84 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88ef8a7e cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8995d107 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a72b9d6 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b1ef5d7 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b4e3fa8 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea546ea rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ec995de xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f110194 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9014463a svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9149214e rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93b020c0 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93b17ed0 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x940f228c rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95683051 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x959abb66 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96436e87 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9670b5a1 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96e852e2 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971edf77 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97faaea4 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x981181f7 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99aee353 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aaa3641 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2d5a45 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c480c67 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dbfc3c2 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fcb6f6e xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa03dc0b9 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2342393 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa41540fc xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5f4c0fd xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa635fda8 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa78059f9 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7a9e384 svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa876fe54 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9004f01 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa90e7b06 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb06faf49 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb11db990 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2ed691c svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb35d55ed rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4321e1a xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb55303a4 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7d60aa2 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb4cbe38 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc60973 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfdbf7d3 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbff19d00 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc441824b rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc446b648 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5eab03d rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc63a12ea xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6bce26d rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7012fe4 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7d967b1 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8d58a39 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb3b1d15 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc662b53 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0691a68 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2013dc2 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4b88b86 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4cc909a svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5dba36b xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6356c39 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd68308f7 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6ea6b2b svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7e0cfe4 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7eae7dc svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd955b5cc xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9f2e486 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbce4501 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd81c9c1 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe034f62f rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0be4dfa xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe17ca958 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34e4796 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5f899c6 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7bc7a65 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe933bb78 xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaa02a42 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xead072a6 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb063497 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xecdcc94a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeed320c2 xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef7fcb0b rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0870086 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b7775d rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf392182b rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf59dfcd2 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf72439db unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf73ecb30 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7693e99 rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7fe4075 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9c31f26 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa2ca742 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa7ba2f0 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa70bc0 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb0670e1 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb8f3823 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbcdb3f4 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc912aa5 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdcadde5 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff720e70 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/tls/tls 0x0d12906e tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x4bf66247 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xb216c120 tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0xb23ab341 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x031a2e4c virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x06725799 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x14efe404 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x205bfa49 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x24b7bb11 virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x24b9b2ef virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x284e9ac3 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2b99a6b1 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5081cce5 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x517bc308 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x555b56a7 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5e131333 virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7629f960 virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7b0dc578 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x953e0c79 virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x997d02e8 virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9ac50011 virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9f46dd33 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa17f3f79 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xaf04c042 virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd052c1d6 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd58da2c3 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe4ca0534 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xea783065 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xee00d1d8 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xee342d2e virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xeeda348c virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xef9645fd virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf91353b7 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf954a487 virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfbabdd6c virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c667192 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0f0c42ad vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1dfa88a0 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1e4ef0d6 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x32cf1780 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3312615a vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x394816b2 vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4aecfb29 vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x51175552 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5b8ee73b vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6651afb1 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7d35d5cf vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x84079677 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa85b4fa8 vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc5ac9edf vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc74e7766 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc92f7f50 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xca1d4347 vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe32a37ec vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf24dca76 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf615d717 vsock_deliver_tap +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1b84d281 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x21f480f2 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x23ec87b3 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2956b782 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3a388302 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4d04cae0 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9f1513ce wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc0e84c24 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc635d7d4 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc9c102ba wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb8ef960 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfae1853e wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfe6fcfcb wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0ce41089 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1070d523 cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3df2100c cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x525ff67d cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8187dc60 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a346fdf cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8cd52afa cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8da6bf89 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x95e69794 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb3213f4e cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbc781ad6 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc9d9b95f cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcc6334c6 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd6265353 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe3255621 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf9be9207 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x139b8738 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x28201707 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6731cf65 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf62d7283 ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x2b8d99b6 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd 0x38fed22e snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x3c0c6b58 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x3dbbe762 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x5162035e snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x5b65606c snd_card_ref +EXPORT_SYMBOL_GPL sound/core/snd 0x663342a9 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x83146b0b snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL sound/core/snd 0xacdd6260 snd_device_get_state +EXPORT_SYMBOL_GPL sound/core/snd 0xb4a57629 snd_card_disconnect_sync +EXPORT_SYMBOL_GPL sound/core/snd 0xd773b6f0 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xdac8df32 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xdde7b6a9 snd_card_rw_proc_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x848a13c6 snd_compr_stop_error +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x98d7faab snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb1cc2a8d snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xdfa41133 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1d4fb333 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3abbfc82 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x45bc4c71 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x66f82ccf snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6b3037bc snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x998ebc58 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9b09ae6a snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xad7c7f11 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdb491859 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xfe2a14cc snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x09c067be snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x35f4badc snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x594a5635 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6358e63b snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8db58879 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8ea5eec5 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa47bfe33 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xacae9614 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb919fa6f snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xccd3fb37 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xda662c29 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xff7ff090 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0xd2712875 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0xe5e37639 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1a9166c3 amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3342ffe4 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5b6907d8 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6fbf04b9 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa1389143 amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa9e810c2 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb598a41d amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb7e7b875 amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc2e2ed34 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc3033bdb amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc9e57366 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe3874ebe amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xff9a493a amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x021e86c0 snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x14d4e850 snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x16ced258 snd_hdac_ext_bus_link_put +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1cccb4a8 snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x28526189 snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x30bb2a42 snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3f94e66e snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4377e4ab snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x470756b7 snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4b31195d snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x515fb41f snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x6a6deabf snd_hdac_ext_bus_link_power_up_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x6a6e4c5f snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x6d709ed4 snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x71eb4e61 snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x74a95780 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x7fdf9a79 snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x847a14c9 snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8a7d8f2a snd_hdac_ext_stream_set_dpibr +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x8afacc8f snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x90b8b7a1 snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x9c471da2 snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa261b31c snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa470e74a snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xaa03f2dc snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xaa30d74f snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb754e8df snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xbe745bdf snd_hdac_ext_stream_drsm_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcacd916a snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xcdff462c snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd009e41a snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd610778a snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xd974b210 snd_hdac_ext_stream_set_lpib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xe59ca1e5 snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf318aec7 snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf7f267f4 snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf82c2959 snd_hdac_ext_bus_link_get +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0051816a snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x00add28f snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0107ca7a snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x01276a4c snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0539244d snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13475378 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a03d70d snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1eb11e46 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2224e0f4 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26112abe snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26292f61 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2648c3fa snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26d75c57 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f66ecfc snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3597ea4b snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x390ac9f9 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3d7aa18f snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f22c0f7 snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f818365 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ff0afd0 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4252a397 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x430fe5c3 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x454c193e snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49e9f6cc snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b4d7142 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c95c1eb snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4fec34b0 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x577b86da snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c8ecbec snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f3cf0de snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60931343 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x630b6d00 snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x643356d8 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x66557be4 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x66b9a4d2 snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6898c13e snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x68f826b6 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ab1e54a snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f3d1edd snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7105b69d snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74fa247d snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7698293c snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7aded0ac snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7e68865d snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8124b1a9 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x83efff90 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85b8ffa6 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8965577c snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91dc89a8 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91e04066 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9405bc92 snd_hdac_i915_set_bclk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9851e53e snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c6518f8 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa19583bf snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa29a5b64 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa318f0a3 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaceffbff snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7ea55dd snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb85139e6 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb87023ce snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb74c3fa hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2557c54 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc53d9e3f snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc653d747 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc6f84e60 snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc5e81e7 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd392f758 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3c1fd5a snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd562cc73 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda9472b1 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb2f9a57 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdbd3e9e9 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdc94871b snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe03bcb13 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe28a2e21 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe46afe24 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe61adb5d snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe9b48d63 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea58cba0 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf0b4e1c0 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf40efa73 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf82fef57 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x05ccee2a intel_nhlt_init +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x4ccdbb21 intel_nhlt_get_dmic_geo +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x4e859456 intel_nhlt_free +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x5f89aae7 snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x362ae259 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x422b9caf snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6e480974 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8156ca7d snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbff6f3d2 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xee7bb135 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x045252cc snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08e97428 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09134d2b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b1ce36c snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16d28a14 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1727f3eb snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x174df486 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x181d2c50 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1891399a snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1aa5195d hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b8538e2 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20ea7cc7 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21dec1e6 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22d3ca6a snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24c4f17d __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x256f6b25 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26cfe767 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28cef0d5 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c356558 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cb587e5 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cdf7ece __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31e2163a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x354a3318 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3725bc2b snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x374a52d0 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39b0eea2 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b7d67b9 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e9cc42c snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f00f0ff snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44451c6d snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44e85fc1 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4745fe90 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x480c56ef snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c641554 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f727225 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fb50728 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x508cafa8 snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52a7f453 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5302c3d9 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56ef0cdd query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5876080a snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c12ab81 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c60f840 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dd3ed9f snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5ea6af8f snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f4281e8 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f9d695c snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61cb310c snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x646ed013 snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67ef5eb5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x686855d0 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b26b1fb snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7bc067a8 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d435ca1 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7dd3ac24 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ecf1e89 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7efe895d snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fb5d3df snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81b10499 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x823a60ac snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82be63ea snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86a00049 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86ae5512 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87dec5b5 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bf6fbf2 snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e8ba878 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9024fc7e snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x908c50a5 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91f69df3 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94501537 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x945d0316 snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97725257 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97eadf9b snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b1b6deb snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c415ae2 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ddc4d06 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ea88342 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f000a61 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f11a744 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa4880f8 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaaa57c4d snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab93efae snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac9c08c8 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacd4b566 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaddab236 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae22fbdb azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf6abbb8 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb38dca3b snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3c260d8 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb46d247f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb71e0e89 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7b6d9d9 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc45b28c snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2d6261f azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc94d655d snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc95aea8d snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9f6641d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca057db9 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd8f59cd snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1bf131a snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd35f7862 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd620eb77 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd75feb39 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9e13f4b snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb9197ee snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe364acba snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3d6aeda snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe56f892c snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec13979b snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1292555 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1eedacc snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf20dc54d snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf267bf20 snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2d21b25 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf586ef31 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6e71554 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf728fdbd snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8964c88 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9cd82d4 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe27d70b snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff49f249 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x09ce924b snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0bb5c7cf snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0d53ef2a snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28dcb0e4 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x313b769e snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x48c80da3 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4e4bb591 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x576ae402 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7b3e22dd snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9cf301d9 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb20b5d3d snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb6e66715 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc7374442 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcb6d4940 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xced15aa5 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd00a308b snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd53e7b26 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdb1c6776 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdc366791 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdcfaeaf2 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe7780188 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfe720451 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x6b352f6c adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x9992ee64 adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x0643c1c3 adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x1a25145b adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x33ac8f80 adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x68623f23 adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x70c89285 adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb8d9e2ff adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xc8f3185f adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xdbea5934 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xeeafc4ff adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xf830dae6 adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x90720aeb adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x232fdf22 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd0c35ee0 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x060e0591 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x14751b7b cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x26bb643c cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x3b736c4b cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x3f12114b cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x1b20e87a cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x6c1bf3ea cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xad5e1fe7 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x26828a13 da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x46722c47 da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xc9114e7b da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xb28dcb7f es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xd29cca62 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hda 0x6f7f28dc snd_soc_hdac_hda_get_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hdmi 0x91ea38e1 hdac_hdmi_jack_port_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hdmi 0xc59b9657 hdac_hdmi_jack_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0xbcccbbf4 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x44a77289 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0x85b2c8ce nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8825 0xa50395f1 nau8825_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x0eba7072 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x79dd1c8a pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x86784604 pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x190b4af6 pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x81c8ea2c pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x78187d83 pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0xbdf6e2f6 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x1e5d0b92 pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x4f20b65d pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x75dc5fc2 pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xacffe4e3 pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x80f09201 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb1a6b1f1 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xbadd2f8b pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xcc564776 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0xf57dd148 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt298 0x3acd6a1f rt298_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x61ff58e3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xff87892f rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x07691709 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x88646624 rt5640_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xe9f7f09c rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xfa55d446 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0x2a895fbf rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x2b5f629d rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x4c51dc54 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x5973b51b rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xf251e09d rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x0a247603 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x5fc320ad rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x67956035 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xc6695825 rt5677_spi_hotword_detected +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xe8ece129 rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x207a493a rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x59d3d967 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x6fde950d rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x836e7116 rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x839f7df0 rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x84e92e0e rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x955f94e9 rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xa7dfc179 rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb343910d rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xe21dc3f9 rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xe5eacd0c rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xff8e38e8 rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3fdd5fe5 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x509b3d8d sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x5a8fab4f sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x83ba4377 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe00a813f sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xca44d5ef devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0xe5f2d031 devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x042badc3 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x9b05cdbb ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x3e9e12c7 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x5b5a7be4 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x0a4b09d0 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x2c2a6386 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x809b421d wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x938c8103 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x2879dfa9 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x91594030 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x764a635d fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0xbcdbf459 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x03c5fd2d asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x0f862fcb asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x18aa8d0d asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x1f7cda09 asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x2b166105 asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x33653cd0 asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6373977b asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6eaf4734 asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x7a64b72f asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x7dc50204 asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8d433ee7 asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8f6bc491 asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xa9c2fa0d asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xbff9d319 asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd1e457a8 asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd44eae07 asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd56c2416 asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xfa42e04e asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform 0x1655330f sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform 0xc87fadee sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x47411fa7 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x692b4412 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x709cd25f relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x8774ec73 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x8d617e10 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xdfb4f160 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x019b3122 snd_soc_acpi_intel_cfl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x1d21a3db snd_soc_acpi_intel_glk_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x1f80ea06 snd_soc_acpi_intel_skl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x2b5d28ad snd_soc_acpi_intel_baytrail_legacy_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x2c947a0c snd_soc_acpi_intel_icl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x33ba323b snd_soc_acpi_intel_kbl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x3719c4bd snd_soc_acpi_intel_broadwell_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x3aaabc6d snd_soc_acpi_intel_haswell_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x49ee336d snd_soc_acpi_intel_icl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x5b401a9f snd_soc_acpi_intel_cml_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x5bf374aa snd_soc_acpi_intel_cnl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x70f4b115 snd_soc_acpi_intel_baytrail_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x7288ae6d snd_soc_acpi_intel_cnl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x7beb3f35 snd_soc_acpi_intel_cherrytrail_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x814c0dea snd_soc_acpi_intel_tgl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x862d7081 snd_soc_acpi_intel_ehl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x98304585 snd_soc_acpi_intel_tgl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xc628a218 snd_soc_acpi_intel_cfl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xcb73619c snd_soc_acpi_intel_bxt_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xcfbf7257 snd_soc_acpi_intel_hda_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xf45a3960 snd_soc_acpi_intel_cml_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xfc535677 snd_soc_acpi_intel_jsl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0049ebd1 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x00f75ecd sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x10b4ef36 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x12674b3c sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x12c30eec sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x145f6477 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16299450 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16e86983 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x177a8ac1 sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x259f0739 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2e57daf6 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5171bf7d sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x63da4c53 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6a66f41e sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x717ec6ea sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7b1bf283 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7e7b21bd sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7f540dae sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x87cdf7d2 sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x904cc333 sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9a242278 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa9a09cd5 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xafa55980 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb4e942e5 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbd5c3d7a sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc6cf527f sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd72a34c2 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xde46e667 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe9c6de99 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf5022eab sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf671e3cc sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf8d5f084 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf96713c8 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfec4631f sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x022f4975 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x0a936f32 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x0d1dd2fe sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x0e120090 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x1a88722c sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x34905d4e sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x351964ce sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x40102c2c sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x429af19a sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x49a0c579 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x4f0efc00 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x53dd1497 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x609b2fb7 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x646feeca sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x72f115c2 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x732952c1 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x84f6a87b sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x93eef02b sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x9a1f1d1b sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xa4c4021c sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xb5c1cbef sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xb5e52a6c sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xb9d6091c sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xbd4c33d4 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xbf2ab662 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xc34cacd5 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xc6724680 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xc6b1fd61 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xcfc06531 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xd012612e sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x48d45abf sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5f1de512 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x7563af0b sst_ipc_tx_message_nopm +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x86bfda1c sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x9961654c sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x9e376ed4 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xa15ce74d sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xbaea54cd sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x9f26a372 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xb40ff91f sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xf853c0f4 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x6c5d2bcd snd_soc_acpi_find_package_from_hid +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x8795d901 snd_soc_acpi_find_machine +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0xa2585abc snd_soc_acpi_codec_list +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x026032db snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03e5e50d snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x044404ae snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x050b4ef3 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0573a6dd snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06083f24 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06151602 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x063d1109 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x069904a1 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x093f3d6d snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a5dcf35 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bd09006 snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bd526e8 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bfe2e75 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c13d5a3 snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f89dd62 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f8b59ee snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fdc3e41 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x134abc77 snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13b62d66 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1409120b snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14236eb6 snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15a1a207 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17247f0f snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a0995fe snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ab61070 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aee4921 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b68a238 snd_soc_add_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d6c73ca snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dd7c119 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e6fbc4d snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e98a5eb snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x224536d1 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22c4fc76 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x230f7b2e snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23bf2738 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2402079a devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x298a0696 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29f5df2c snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a4d9a7d snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c6d4a12 snd_soc_find_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3041fd1b snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33b38889 snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3564558c snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35dad3b3 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36e9a427 snd_soc_lookup_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37040a68 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3863a6f3 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39e4a23f snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b2cb888 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c7a32af snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3def4b09 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e0ea3fb snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e875d1e snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f18df69 snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40912566 dapm_pinctrl_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40b352e8 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40dad75e snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43a08b82 snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47734e26 snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49b15e80 snd_soc_component_set_jack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a438003 snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4aea72fc snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bb52090 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e7e4a49 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e7e8652 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50dd011a snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51606b9b snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52f635b2 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5410a30c snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57b72cfe snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5caa117e snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5da5e01d snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e71de38 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f113427 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62f93416 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6416deda snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65595745 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65c9398e snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x683b3671 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x692e4b24 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a3886ea snd_soc_get_dai_id +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70c1c6b2 snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x723d0eac snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x723fda1b snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72a196fc snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76ded67e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77899a45 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77c50385 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78fe32ea snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79588306 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796fafa5 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79af225a snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d867f6b snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e0bd87f snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80589627 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8244ada4 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8289c6c2 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84e85fd0 snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88414029 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88485006 snd_soc_runtime_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88d7088f snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a5af575 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b600855 snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e204d88 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0dc25e snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x902d6b68 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x919d0646 snd_soc_dapm_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92936d73 snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x955abb55 snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96f3c13b snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x971dcaf9 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97e59e2a snd_soc_dai_active +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x988584d4 snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x998a5436 snd_soc_component_read32 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x999c0110 snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a05bd7d snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b775d37 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9dca7ece snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e27eeeb snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f070519 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0d646cf snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa301f9c7 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa376d612 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa459d7c6 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ace950 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa79cbee9 snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7bc175c snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaad6bfb0 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab0c5ea5 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac32324f snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae115b2a snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae2b0f6b snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafdccd60 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb253378c snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2a81f9d snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb468fde9 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb47bbe66 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4c035a9 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5ebf400 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb70c76c1 snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8286060 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbca8cc9e snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbce2e381 snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd88c132 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf3d596d snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc06d0b00 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc11315c6 snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2ac75c4 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc35b1f2a snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b856e9 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc554ad24 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc59e5562 snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc83eb73d snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb853f1c snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdd91a74 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf9ed816 snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfccbc07 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2e8a2f1 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3939009 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5c13151 snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd854b9e9 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9653a67 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda745924 snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc9fdc38 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdcc007a7 snd_soc_dai_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfa550cd snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfc16538 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe03d19c0 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe69a648f snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe762c9d6 snd_soc_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec6a5d64 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed4db763 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee1d3a8c snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeed737d5 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef1af057 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf083b690 snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf37c1f61 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5459388 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf579ccaa snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6328b7a snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8ac4311 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8b5f384 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa720bbb snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb72098e snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd8a743b null_dailink_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfeb66e15 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffdb44fb snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfff88b10 snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x17bda62e snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x3dbad8a2 snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xd23a08a6 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xd82af96b snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x01e6087d line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x14a9d0a0 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1d87797d line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x29bcea32 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x35409c5f line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x58fd1ac5 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x603cec29 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x60e1a108 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6136caef line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x65636d16 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6c377b5b line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x84b38caf line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa30f025a line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd1d0a990 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf85e0c08 line6_init_pcm +EXPORT_SYMBOL_GPL vmlinux 0x00119218 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x00152e75 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0x001b074f mce_is_correctable +EXPORT_SYMBOL_GPL vmlinux 0x00324466 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x004a9b5c wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x00531a17 xen_xlate_map_ballooned_pages +EXPORT_SYMBOL_GPL vmlinux 0x00565f18 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x007b15e7 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x008539f0 klp_shadow_alloc +EXPORT_SYMBOL_GPL vmlinux 0x008ebfd4 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0x00995390 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x009fe535 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x00a3eff1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00add99b regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00b41a81 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x00c17a97 bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x00c2ad6f serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x00df9837 ioasid_register_allocator +EXPORT_SYMBOL_GPL vmlinux 0x00e46316 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0x00ed0998 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x0103b964 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x0103eea8 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x01048342 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0117bbce rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x0127c651 ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x012e730e apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0x013aea3e ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x0145d82e perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x015fd5f0 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x01648d9d crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x0180a5b7 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x018b3d1e intel_pt_validate_cap +EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x01b10fca ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x01b9c245 iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x01c12c32 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x01d8321c sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ee5532 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x02015fdd unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x0202d02c devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0202f34d devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x021a6319 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x021bffcc wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0233aedf crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x023909a7 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x023925a5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x02523c23 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0x025e7dd5 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x02676fb3 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x02717595 rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x029342a8 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x02952427 ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x02953e9b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x029c2cbf acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x02c1d959 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x02c7687b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x02c8005b devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x02d12a0c max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x02d16d98 regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0x02e11564 edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0x02e42047 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x02ec420f kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x02f35f78 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x02f589c4 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x02f6d252 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x034376b1 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03492c54 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x035d6a65 call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x036013a9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0360c735 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x037241c3 irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x037e6f35 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x039bbb8e class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03ccbb4a ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x03d7d65b reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03fa01ca devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x04278878 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x042fa394 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x0433b607 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x04365f1c serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0x04420eaf srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x044f5388 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046a0eb8 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x047e6bd9 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0491f1ee posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x049929c0 hv_stimer_free +EXPORT_SYMBOL_GPL vmlinux 0x04ab1c7a dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0x04ab91ca scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x04abe6b4 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x04b91278 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04bc2880 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cb1089 rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0x04cfc066 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x050d797d pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x05154871 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x05222220 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x052d203b clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x05452994 pwm_lpss_remove +EXPORT_SYMBOL_GPL vmlinux 0x054a2382 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0x054c43cc percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054e8e18 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x054ed5da regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0565d52b lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0x05664ebb evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x056ed5cc shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0x056efa00 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x056f3740 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058f9366 apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x05a39f15 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0x05a456f6 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x05a5856b __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x05c75bc9 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x05cd66bb __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x05e2566b rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x05e936f0 bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x061449db extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x061d5a66 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06272f88 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x06339bf7 sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x064807b0 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0653fe11 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x0657d8ee cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x06688764 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x066bc2d3 direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0x06767add iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0690b573 report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0x06bb3382 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06f403ff devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x06f647f8 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x070a41a9 strp_process +EXPORT_SYMBOL_GPL vmlinux 0x07171a52 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x0721e1da get_dev_pagemap +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x072a5e30 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x074cf916 led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x074e39c4 pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x074f4ed9 devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x076b1ef2 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x078e2c0f usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x07a9d6f3 inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x07b0433b __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x07b21112 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b64d81 hyperv_stop_tsc_emulation +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07c23703 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07c24e19 virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x07cf2f3e usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x07dc6b9a xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x07edeba7 hv_free_hyperv_page +EXPORT_SYMBOL_GPL vmlinux 0x07f672aa tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x07f8ce1a __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x07fd1b75 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x0818ec79 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x081a65e2 fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time +EXPORT_SYMBOL_GPL vmlinux 0x0833d729 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x084f6798 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x0872fdf3 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x087a4fc8 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x088db56b debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x089672a9 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x08b38384 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08bb3c9c genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x08be9be2 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x08c6b4dd ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x08cd1540 usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0x08d3a191 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08e28c63 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0x08ee514e ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0x08fabe43 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0907d14d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x090fcc65 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x091f6591 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x0925493f clear_page_orig +EXPORT_SYMBOL_GPL vmlinux 0x0928b0c5 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x09337cd0 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x093786cf synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x094630cf fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0954ca80 dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x095a8401 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x0969a424 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x096a7e6f x86_spec_ctrl_base +EXPORT_SYMBOL_GPL vmlinux 0x096b2418 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x09796f47 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0x097af077 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x09984ade acpi_data_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x099c73f5 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x09a54f4d spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09d3d26f serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x09d63265 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x09e55033 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x0a030100 pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x0a03ab88 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x0a0c9d45 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x0a11cdb5 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0x0a15f0bd devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0a1e71ff extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a21430e dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0a31391d task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0a502c98 dmar_platform_optin +EXPORT_SYMBOL_GPL vmlinux 0x0a5728ef disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a7f288a sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a8067fa inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x0aa5aca0 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x0ab4a386 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x0ab710a3 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x0abd9d82 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0x0ac0c5d3 serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0ac30c16 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x0ac7211f spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x0ad137d3 lpit_read_residency_count_address +EXPORT_SYMBOL_GPL vmlinux 0x0ad819ce syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0ad8e2f3 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x0ae35995 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x0affbc43 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b00fba4 __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x0b05525a __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b272637 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b3415ab led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0x0b36fa8f acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0b3e1ae7 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x0b3e1e93 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x0b4a6766 unwind_next_frame +EXPORT_SYMBOL_GPL vmlinux 0x0b4d5c80 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b50334e mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b5344dc cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x0b53e85f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0b610985 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x0b635874 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x0b69056d ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x0b6a8bc1 vfio_add_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b80faf4 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0b84c697 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b86c199 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x0b8bd35b sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x0b8f072e bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0x0bc0bd87 input_class +EXPORT_SYMBOL_GPL vmlinux 0x0bd89fb0 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0be3a663 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x0bf71b13 sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1b8f4c irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x0c2865fd power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c326c89 crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c3f7dc3 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x0c50478c crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x0c637f9c tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x0c63ffeb crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x0c71474f br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c86b7c3 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x0caebe2c msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x0cb579c0 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cc3b29e acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x0cd9e401 noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0cdc9e8a dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0cde7a40 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x0ce5489b devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x0cefdd3b regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x0d07b90e regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0d08424a kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x0d116ad0 __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x0d24c6fc kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x0d276cc2 bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4f9a22 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x0d547a94 __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x0d55cc38 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x0d562c4c balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x0d855a9b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d95303a sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0dae71e3 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0db17d5f sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0db98a89 gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dcb3ee8 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0dcebc37 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0dffe0d5 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e04f36a fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e179ca1 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x0e1b0dd1 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0x0e2edc89 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x0e330720 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0e5557a4 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x0e86763a bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x0e9bcc40 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x0ea26817 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0ea43419 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x0ea5cbce xen_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x0eadc826 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0x0eb0bbf9 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0eb1af78 __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0ec096b0 hv_read_reference_counter +EXPORT_SYMBOL_GPL vmlinux 0x0ec3a778 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0x0eca4117 blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0ed34cc9 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x0ef6202c blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x0ef8c75b dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0f0b21fe pm_trace_rtc_abused +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f395585 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x0f494d4e handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0f521ea0 amd_iommu_is_attach_deferred +EXPORT_SYMBOL_GPL vmlinux 0x0f6266db ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0f85000c extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0x0fb6fd7a sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align +EXPORT_SYMBOL_GPL vmlinux 0x0fbe9c49 usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x0fc09b43 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0fc37562 amd_smn_read +EXPORT_SYMBOL_GPL vmlinux 0x0fc546c1 device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe0a1bb regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x0fe7617c __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ff80f63 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0x0ffce863 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102334c9 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x102f163d thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x1038b96f adxl_get_component_names +EXPORT_SYMBOL_GPL vmlinux 0x104793d0 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x104d138a metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x105664c1 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x105e53d6 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0x105fee22 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x10611c2b regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x1062dc8f crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0x10657933 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x106b18a6 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x10b93060 iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10da204d blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x10e63911 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x10e9a63c crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fd8fbf device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x10fdad6f fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x111bef39 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1122019c uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x113561cb ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x114bce9d balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x115d4056 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x11706906 phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0x1172d487 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x117f4667 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x1182ccb1 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x1185c249 arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x118879d4 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x118970d9 gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11bc4355 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x11bc6ba9 input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x11c189f6 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c4b6da cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x11c6c704 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x11d5f470 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x11dd63da hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11e06ee9 badrange_init +EXPORT_SYMBOL_GPL vmlinux 0x11e08f96 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x11e76edd dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x121a47ee devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12296a39 serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0x122cad03 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x1234ffa1 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x1242fe3d iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1244b082 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x12661d9d crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1281304e iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0x12835806 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x1293c837 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x12950a59 fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0x12ab31f1 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x12bcae56 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12e285ec is_uv_system +EXPORT_SYMBOL_GPL vmlinux 0x12f64632 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1326c67e usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x133b776c device_del +EXPORT_SYMBOL_GPL vmlinux 0x133bb3f8 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x1348ff1e dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0x1353f253 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1360138b __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x137fcd4c tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138dbcd4 acpi_pm_set_device_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x139090cd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x1398091e device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x139b2edd bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0x13a05707 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0x13a38f5d ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x13c19ee7 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x13c6cf88 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e3aa9a smca_banks +EXPORT_SYMBOL_GPL vmlinux 0x13e45f31 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x13eec627 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0x13f1b5f0 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0x13f42819 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x1418238a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x141f8448 vfio_external_group_match_file +EXPORT_SYMBOL_GPL vmlinux 0x1425803d fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x14330884 devm_intel_scu_ipc_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x1444684d ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1444fb24 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x14603e0a debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x1475f3c7 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x147747a1 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x14a07bf6 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x14ab4784 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14ec4fdb evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x15042fb4 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x151ef1da vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x156c62c6 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x156cdac8 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x1572c428 skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x157d03cb sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0x1599aa1f usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x159b974a scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0x15cde77a devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x15db0aaa efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x15ea0e47 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x15ea1f1b sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15ef1a0c mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x16036e5c rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x160d072d da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x16276a48 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x16516798 osc_pc_lpi_support_confirmed +EXPORT_SYMBOL_GPL vmlinux 0x16572b10 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0x1658d159 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x165a2dc2 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0x166d6443 __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x166db1b5 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x167d5884 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x167d7113 acpi_bus_register_early_device +EXPORT_SYMBOL_GPL vmlinux 0x16868770 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x168d2fa0 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x169448ac device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x169a0d43 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x169edb5d debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x16afeacc __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x16c36495 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0x16d84535 iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16e3ede8 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x16f15139 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x16f6e137 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x16f952c0 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x1715f29e __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x1741ddee trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x175e5c9c sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x175f4c5b vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17657c92 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x176adf76 xenmem_reservation_decrease +EXPORT_SYMBOL_GPL vmlinux 0x1771932f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1789d17b pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x179b3d99 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x17a19f17 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0x17a3993f __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x17add64b gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x17ae678b dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x17b7c73e xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x17bb2f15 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x17db9af8 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x17e01f11 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0x17e5b034 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x17e5e18a nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x17eb09af __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x1804bbce __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x1822e0d5 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185ea575 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x18728552 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x1881aec5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x188450d6 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x1891b03f __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x189ff193 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x18c2d958 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x18d0a2e5 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1906bf54 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x1918bba7 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x191f1df1 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x191f32e9 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x192b1b4c regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x193dfdf6 klp_get_prev_state +EXPORT_SYMBOL_GPL vmlinux 0x19497e5f lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19661ecf devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x19829ecf inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x19939169 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x199e6640 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ae009c nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x19d39fca l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x19d5bf19 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19edd064 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0x19f385a7 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a04951e pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x1a05f268 iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a15acaf usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1a2444c8 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x1a2c64cd regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x1a2cd971 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x1a2eb89b user_update +EXPORT_SYMBOL_GPL vmlinux 0x1a2efe03 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x1a3cd6e7 iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x1a6153ee to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x1a615e63 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x1a62a191 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a78d9ca crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1a7ad477 gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x1ab19cca pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1aca0345 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x1ae5c283 clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0x1ae6473b scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1aff3d55 mce_register_injector_chain +EXPORT_SYMBOL_GPL vmlinux 0x1b082ee7 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x1b0b3ffd extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1b1471f3 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x1b260bcb regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1b30d45c fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b5f4377 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1b6131b9 alloc_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b695f07 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x1b7b0538 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8a7ccb pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x1b8d0733 screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0x1b8f230f phy_put +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1ba20556 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x1ba237b0 default_cpu_present_to_apicid +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc8eb77 acpi_subsys_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x1bd60af7 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x1bdc5d50 serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0x1bdd4152 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1bee2f97 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1bfceaaa subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c0e2952 i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x1c3efe24 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1c44b902 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1c4b1963 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c78c47d pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c80e60c edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8e9aec account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x1c907ccb wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x1c944bbd gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x1cb7c983 apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x1cb9a1c8 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cc8109c sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x1cd1bff4 pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1cd35874 dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0x1d1ca884 scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d2c5716 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x1d50d2d9 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1d65b63a nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1dc38b0f crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0x1dcde0cc __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x1de37db0 __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x1dfd3d87 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0b9bd2 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x1e29ef71 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x1e3106ac firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0x1e4ca9f9 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x1e51dabb __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e5a5f22 sn_partition_id +EXPORT_SYMBOL_GPL vmlinux 0x1e6aa8f8 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7bc3d7 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0x1e8012fd mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e9bc719 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1ea7f9e1 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x1eaec09e sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x1eaf63e5 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecf28f7 acpi_device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x1edc5af5 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x1ee443f0 tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x1ee7d3cd hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1ef3d47d usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x1ef7e06c gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x1efc4013 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0x1f05de5b iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f1ddd8d copy_mc_fragile +EXPORT_SYMBOL_GPL vmlinux 0x1f226334 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f58ca25 spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0x1f5b87bb edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x1f69124d gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x1f75d0d8 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f7f40cc mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f86b82f dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x1f8d9a3a isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1f8e18e7 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fb70eb9 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x1fc9e53c shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1fece26b devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1fef6c03 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x2001b0d6 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x20261551 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x2036377d blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2039ea11 pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0x204f2c5c gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x2051f294 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x207b26c5 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x20899467 hv_stimer0_isr +EXPORT_SYMBOL_GPL vmlinux 0x20926805 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x2093f4dd clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x20978fb9 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x20a0e89b ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x20af6f3b mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0x20b0cbff sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x20b1939a md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x20ca1383 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20cc032c virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x20f515e9 pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x20fa6e67 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x210a33fe fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x212cfe9c crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x213cdc17 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x214a2809 __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x2160fdb1 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0x2168a2fb iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x216ed488 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x2172bd75 icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0x2175f278 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x2190978c __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x219cb1ce pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a8b067 perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c34c8f gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d01715 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x21d736b2 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x21dfaf9a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x21fb1ef5 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x21fb6cf9 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x22057f0f blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x22073870 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x223d0b25 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2242af5a crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2246b4dd __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x22470a31 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x224ea8ce platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x226566da inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x22b654b8 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x22c41db2 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x22d2b9fc __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x22d87510 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22dd6c83 regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0x22ec5205 cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x22fc59aa irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x2303e19a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x2312c6ce fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x231e9a0b register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x23448ac6 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23b4e0d7 clear_page_rep +EXPORT_SYMBOL_GPL vmlinux 0x23b54741 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x23d1ffb6 ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0x23dfaeb7 phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x23ea0eb8 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x23ee3c32 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x23f4307a __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x23fe59fd fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x240f0957 cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0x2410c338 x86_virt_spec_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x2411eda9 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x2413696d net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x241a0d8c pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x241b641f da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x242354b8 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x24476315 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2462e670 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24647383 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2464da17 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x246df185 hyperv_fill_flush_guest_mapping_list +EXPORT_SYMBOL_GPL vmlinux 0x24709b2f trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x247fc468 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x248de905 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x2495082d extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x24981762 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x24acb579 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24b1ac45 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x24d8e51e put_pid +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24e0adb5 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ef9ee2 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x2502f8fd dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2505d210 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem +EXPORT_SYMBOL_GPL vmlinux 0x25339326 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25408f41 __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x25595e25 iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x256b87f9 scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0x25709d7c clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0x2575ed71 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x258e2204 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25950039 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x25a1cfeb regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x25c894f7 blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0x25dd3e67 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f6cf7f debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x25ffada7 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x26111893 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x2617b6d3 icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0x26299ca7 usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x262a7063 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x26370eab klp_get_state +EXPORT_SYMBOL_GPL vmlinux 0x263d0833 badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x263f039e xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x26485fac cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2655d498 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2680fb41 blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x268c6507 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x268de333 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x269999a6 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x26a0f0f1 irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26b6697f dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x26b9c91a tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cda94f e820__mapped_raw_any +EXPORT_SYMBOL_GPL vmlinux 0x26d7ee9b serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x26d8569d nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x26e11c28 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x26e484b2 iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x271c799b fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x27207ee4 apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x274886a5 regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x275ead23 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0x27634a92 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x276e3bfc power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x2773c485 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x278645f5 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x27900833 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0x279a7797 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x27b7e5c8 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x27c235b5 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x27c91482 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x27ce6a07 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x27df3105 hv_alloc_hyperv_zeroed_page +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x280d2929 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x28132f18 dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x2816bea0 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x2817ceca powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x2817f7fd cppc_get_desired_perf +EXPORT_SYMBOL_GPL vmlinux 0x281e0619 bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283d3581 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x283e8e94 iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x284b6dcf pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x285d4add dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286af6a9 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x2873a112 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28ac59b4 synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0x28afbb08 cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x28bedb78 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x290a5de8 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2911723e clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x29219f6e regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x29252e74 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x29266f31 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x2934ebc2 fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0x29366b61 register_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x2943b265 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x2951a872 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x29533795 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0x29649545 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0x2964ccf2 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x296aaca8 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x2976bf86 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x297bfc99 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x298b9453 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x29a2078c __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x29cde26c ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x29d56002 serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x29f8a03a klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0x2a08ca51 kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x2a1f6370 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x2a24e80e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x2a27f76a devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a2aea17 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a3d76cc usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2a412499 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x2a58ae55 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2a5c9571 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2a5e6589 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a678372 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6974c4 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x2a6fa420 regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x2a7db6e5 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0x2a8c29bf __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2a96cd04 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x2ac0c16c kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x2af76d8c pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0x2aff68f9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x2b00c238 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b0765ca xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2b0fe000 gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x2b260a74 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x2b3a5346 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x2b4114a7 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2b41329b udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b507830 vmf_insert_pfn_pud_prot +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b63fb58 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x2b67b6b7 mds_idle_clear +EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x2b7fc385 hv_init_clocksource +EXPORT_SYMBOL_GPL vmlinux 0x2b86ae9c thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9997fb atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2ba803e9 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0x2bd6bd7c ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x2bdee6bf pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0x2be224c1 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x2be2ae18 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0x2bfa0475 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x2c015995 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x2c0fe620 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2f5a09 x86_family +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c32eef5 icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x2c36d416 spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0x2c5c8b73 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c6e31de led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x2c79bcb1 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c91198a __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2c9792ce of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x2cbbfe66 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x2cc99653 extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x2ce350ec debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf233b0 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x2cf4417a inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x2d03d9b8 __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2d19660c scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1b8c7f iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0x2d2a484b dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d38953d devres_release +EXPORT_SYMBOL_GPL vmlinux 0x2d393f48 intel_soc_pmic_exec_mipi_pmic_seq_element +EXPORT_SYMBOL_GPL vmlinux 0x2d3f2831 edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4d6633 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x2d4e0e1d nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2d5b87e3 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x2d6aa0f0 arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x2d713f88 dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0x2d7e7f12 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2dce4990 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x2dd5b8da dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x2dd94ec4 fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0x2de04edb led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x2de5fdfc crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2ded9e45 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e08226d badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x2e08f854 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2d1825 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e355c99 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2e5baf03 pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x2e678211 xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2e7a6b69 ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x2e98b5d5 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x2eaeeec4 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x2eba17f1 ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2eca0859 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x2ed9126d rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x2eda4807 is_uv_hubbed +EXPORT_SYMBOL_GPL vmlinux 0x2ee7c52b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x2ee824e1 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x2eef70b3 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2ef08759 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2ef4b67d led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2ef7d43e virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f0def4b rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x2f1d2279 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f30bd4e devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x2f499765 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x2f572a4f pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f6d7e08 is_software_node +EXPORT_SYMBOL_GPL vmlinux 0x2f759742 irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2fa3ef42 devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x2fa809a0 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0x2fb72e9b sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x2fbc0f1d screen_pos +EXPORT_SYMBOL_GPL vmlinux 0x2fdcfd28 smca_get_long_name +EXPORT_SYMBOL_GPL vmlinux 0x30015aaf perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x3002ecf3 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0x30172c63 devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0x3018e973 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x301ad5d1 dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x301db480 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x30299377 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x304fbf13 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x30678f89 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x306bd192 iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0x306f5576 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x3090cb05 bind_interdomain_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x30935ede xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x309e6c67 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x30aeb180 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x30b672f3 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0x30bc2b26 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30cf804f slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x30d5d848 irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0x30e1ec25 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0x30e8bd04 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x30f755ec netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x30fc232c devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x30fe5348 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x3103f953 fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312c2f40 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x312d49c1 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x3134dd9c anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3139dc55 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x313dd5d1 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x3165daa3 arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x3174c453 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0x31785f08 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x31877bc7 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31dca4d8 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x31e4ffa1 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0x31eec36a ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x31ef4a0f skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x31fc0b56 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x32160d3c gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x322dfcd8 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x322dfde0 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x324afade pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x32628773 __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0x3273b07c pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x327a2687 bind_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x327c77c1 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x328e3354 __memcpy_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x32947457 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x3294cc56 fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x329e88e3 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x329feb7c __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32ad38ca pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c2bb04 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c6c604 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x32c75a48 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x32d663ef rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x32e3b076 mxcsr_feature_mask +EXPORT_SYMBOL_GPL vmlinux 0x32ed9110 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x32f2fe60 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x32f47f03 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x33083cd6 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x33091e27 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x33373b7c usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x333a839b __devm_intel_scu_ipc_register +EXPORT_SYMBOL_GPL vmlinux 0x33412151 device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x336e09a1 pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x3380f2ee spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x338b6548 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x338da41c hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3392ee08 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x339bf2b5 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x33a34de4 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x33b8a0c3 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x33ba5c76 skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x33beedcd class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x33c5769d usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x33d5138e blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x33e2eaf4 spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x33f1ac52 fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0x33fb4bc3 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x33fbf318 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x340c09ff regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x341dccad l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x34202e4e fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x3421ca7c __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x342a0b21 hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x34331f04 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x343a2c59 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3446a5a2 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x344d12b0 fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x346de6ae devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x346f88d8 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x3479b0c9 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x34892788 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0x34915738 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x34bab869 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x34d9f964 rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x34dbf21a __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x34e01cb8 tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0x34eab46d bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x35066e98 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x350bbf61 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x350defc2 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x35128e22 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x35153b0a iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x351a8904 strp_done +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352cd173 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x353a6022 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3543d83c security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x35586953 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x355bc89a klist_next +EXPORT_SYMBOL_GPL vmlinux 0x35631094 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL vmlinux 0x3571dd4e pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x3580bf3a cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x359c1e21 gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0x359c5bf6 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0x35cc7841 ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x35d3dc46 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x35d47f6c __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x35f9538e phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360f2cd7 serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x36162f7c register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x36173c1d phys_to_target_node +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x362557bb pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x363fa02d xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x36562483 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x368e9051 thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a8cd23 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x36b2166a __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x36b50996 acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36b6c65a bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36b74d2f gnttab_pages_clear_private +EXPORT_SYMBOL_GPL vmlinux 0x36ce8cb9 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0x36cf39e1 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x36df170f ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x36e065b9 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x36f832b7 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3703ae3f device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x37159a7b dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x37169f79 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3721710d regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3727453f ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x372cfd6e gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x3742b8b0 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x3750d770 erst_read +EXPORT_SYMBOL_GPL vmlinux 0x3756baf3 led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x3759d387 serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0x37646659 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x37787963 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x3784cee7 crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x3784d572 dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x37914025 xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x379235f3 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x37bc3020 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0x37bf56a2 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x37d150d2 blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x37d1c139 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x37d947ff driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x37f1375c usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x37f292c4 pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x3804b9dc ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x38171b31 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x38172df1 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x3822b4e6 md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x383d68f3 validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0x3861b80c do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x38900d7f devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count +EXPORT_SYMBOL_GPL vmlinux 0x38a2768c devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38c33008 mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0x38c3ff30 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38d76ad5 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x38d94df9 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38e9d06c udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0x38f756bc wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x38f9b9f8 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x390323fe ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x39049f08 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x39093502 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3915f523 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x393e17c0 devm_memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x393f7ba6 bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0x3955a986 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x395f5e1c srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x396e2fd7 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x396e7a0e serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0x397fe146 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0x39871d5e genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x398b5de5 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x398c7673 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0x3994a311 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x3996f956 wp_shared_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39b10c3e sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x39bd2309 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x39ceae85 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x39d00a21 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x39d1466d ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x39d46e9c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x39ded098 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x39e192e7 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ed7a42 fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x39f231df ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x3a0725ec devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x3a25b3c2 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2987b3 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a2f2b1c nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0x3a4142bc node_to_amd_nb +EXPORT_SYMBOL_GPL vmlinux 0x3a4a7fd8 vfio_del_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a534229 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3a609e90 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a81bb0a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x3a8bbb8e trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x3a9281e2 mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x3a93dd12 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab67c95 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x3acce024 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad06d42 devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x3add0f61 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x3af578f5 hyperv_report_panic +EXPORT_SYMBOL_GPL vmlinux 0x3b170187 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3b1fad60 cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0x3b205b73 vfio_virqfd_enable +EXPORT_SYMBOL_GPL vmlinux 0x3b21330a wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x3b2c1467 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x3b34b148 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3b3aa69d phy_configure +EXPORT_SYMBOL_GPL vmlinux 0x3b46127d fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b6a6f54 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0x3b7d9a0e __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x3b82432f driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3b86a1e0 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x3b8979ea gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3b91db5b intel_pt_handle_vmx +EXPORT_SYMBOL_GPL vmlinux 0x3b95f543 klp_shadow_free +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3bb7282e __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x3bc05fd1 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3bc3d60b ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x3bd5c9b1 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x3bd6aef8 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x3bd7bfb9 devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0x3bd9a4fe __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3beb8f3a __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x3bef2716 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3beff3bb crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c053c00 inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x3c0e8050 hyperv_pcpu_input_arg +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c20bbed shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3c20de4a dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x3c212744 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c579474 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x3c5c4d66 devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x3c6660b0 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c71c6a3 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x3c71eb15 sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0x3c7c95c1 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x3ca494b8 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0x3cb65afc spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3cbb8067 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x3cc0330b virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce35a73 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3ce7706e usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x3d163143 __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x3d18f426 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d5c1a25 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x3d6edea1 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x3d8d52db iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x3d95d16e da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3db40f2b ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x3db71565 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3dbc1995 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3dbeec3b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x3dc2395e class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3dc97b9f ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x3dca63fa generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0x3dd347b9 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x3dd53813 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x3de3d94a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3decbc8c pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0x3df82d00 mce_log +EXPORT_SYMBOL_GPL vmlinux 0x3e182cbb perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x3e22917a devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x3e22b8f3 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3e2538e3 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3e5e7fe8 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x3e636e7e crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e74f1b9 bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x3e758fbe nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0x3e85c3b3 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3e91aeeb device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ea84b56 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x3ebc8e83 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x3ec0419d get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x3ec69404 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3ec97e1c sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x3ed96173 kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x3eed1c38 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3eee59d6 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3eef1fda pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efbcf77 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3f0151a3 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x3f0bb26f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x3f0f20e9 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x3f179b02 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x3f2196f8 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x3f267a3a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f4b8936 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x3f4ed109 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3f60965a pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f868fba blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f945e2c ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3f954796 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x3fa1f845 icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0x3fae6ab0 hv_vp_index +EXPORT_SYMBOL_GPL vmlinux 0x3fb218f4 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3fbf2622 clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3fc33112 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fc6fcd6 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x3fc86722 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x3fd8f767 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3fda2b36 dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3febd4db key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x3fefc8af regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3ffb1a83 cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x3ffed12c mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x4004b8f4 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x40267068 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x402b1dde ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x40368bcb tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40520fba dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x405ee08f netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x40792858 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x407af304 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a0aafc __flush_tlb_all +EXPORT_SYMBOL_GPL vmlinux 0x40b00b70 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x40b43bd0 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x40b47b16 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x40b90433 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x40e605b1 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x40e801cf phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x40edba58 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x40ef4faf __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x411dae3c devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x412174c1 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x41223530 platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x4129f5ee kernel_fpu_begin_mask +EXPORT_SYMBOL_GPL vmlinux 0x412b99b4 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x417b5148 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x417b929a regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41837532 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL vmlinux 0x418a4b5f securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x418a6770 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x418d9dab __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x419f15aa blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41dc03d1 mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0x41e1885b intel_pmic_install_opregion_handler +EXPORT_SYMBOL_GPL vmlinux 0x41e5c920 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41e7ffab security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0x41e95c5c extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41edf89f security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4218b07a get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42230915 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x42281fed hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x4230657d crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x423541a3 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x423e9484 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4258e977 noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x427306f4 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428321a7 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x428b2dcc tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x42bd0ca7 spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x42d000fa xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0x42d98afa __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x42de241d ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x42e445f6 clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42e6ff16 sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fba1c7 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x433ae21c user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x4345c14e gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x4367d8ae __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x43779a1e fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0x437d15f1 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x437d5ead spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4381416f anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43ac569e transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x43c08f68 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x43d61301 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0x43d65dee xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43ded081 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x43ee7486 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x43f16bbe regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f63e88 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43f8717d fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0x43fc62dc crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x44432277 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x44558f9d ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x44738992 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4479aa11 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44972050 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x44a24cba seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x44a43494 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x44ae2abe cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44ce812d ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44dcfa5c debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x450110e8 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x45048580 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x45130413 icc_get +EXPORT_SYMBOL_GPL vmlinux 0x4516aa57 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x451ca4d8 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x451f4d99 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x4521e51c pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x45225564 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x4532fcb6 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0x4535bf88 devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457790a5 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x457d5f80 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x45836259 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x4596a06c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x459748d2 strp_init +EXPORT_SYMBOL_GPL vmlinux 0x459b90a0 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0x45a5d552 devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45ad2f7a md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x45b2b33f irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d7522d usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x45f624d3 irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0x46002d43 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460dd521 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x4634f4c6 skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x463d8290 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x4642a73d gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x46538716 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x466093fb init_iova_flush_queue +EXPORT_SYMBOL_GPL vmlinux 0x466ee0a8 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x466f4fd8 dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x46753a3a __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46950654 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x4696d2e8 mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0x46a0a60a serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x46a6c120 acpi_cppc_processor_exit +EXPORT_SYMBOL_GPL vmlinux 0x46a6c9ef hv_get_tsc_page +EXPORT_SYMBOL_GPL vmlinux 0x46a77257 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x46a91b21 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x46b34168 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46e47ad3 cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0x46ecd12c cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x46ee7102 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x46f15b19 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472d8896 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x473797a0 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x473b6285 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x475d7407 gnttab_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x475d7944 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478de3c9 genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47a89953 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x47a9b4a2 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47cf9ff7 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x47cfa703 uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47ea32f9 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x48013925 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x4818afa5 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x48277eb8 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4830249c dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x4839c4c0 dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x485501d1 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4892443b pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48af8530 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x48b5a9a3 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x48d95fbf sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0x48f09f94 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x48f250eb rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x48f49400 apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0x48ff3432 gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0x490980b2 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x490e74ab bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x491de634 __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x492b48f0 __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0x49324074 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x4934f2ad blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x493b86ee i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x498200b2 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49928592 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x49951708 sev_enable_key +EXPORT_SYMBOL_GPL vmlinux 0x49b7076e rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x49bfca23 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x49c14a61 ex_handler_fault +EXPORT_SYMBOL_GPL vmlinux 0x49c1d35a serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x49c5400d kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x49c5b493 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x49d89893 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x49da8988 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x49db5c64 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f6f375 store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0x49fc3e20 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a3a8fab blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a60e175 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x4a864f0b rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x4aa349cb kvm_clock +EXPORT_SYMBOL_GPL vmlinux 0x4aa58bea inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4aa72a31 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x4abfd687 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x4ac5ceed inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4ac61f20 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x4af25da5 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x4af64f5a sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x4af67f00 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x4b084aac usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x4b0de2b9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4b141619 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x4b248540 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4b270171 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4b4840c6 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4b508e79 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b529d3d acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x4b56ce05 xenmem_reservation_increase +EXPORT_SYMBOL_GPL vmlinux 0x4b5a8ec8 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4b762828 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x4b931968 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x4b95918b netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0x4bbbdcac xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0x4bc8727f xen_balloon_init +EXPORT_SYMBOL_GPL vmlinux 0x4bdd1a86 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x4be08926 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x4bf12e24 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x4bf287f0 spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0x4bf2a502 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x4bf7c79f phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x4c2c0ea7 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0x4c353aeb regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4c38607a pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c3de7e6 acpi_pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4c525ecb fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0x4c56e647 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x4c6a6fff powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x4c762b5c x86_stepping +EXPORT_SYMBOL_GPL vmlinux 0x4c7931a2 pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0x4c93bdeb blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x4c962c7f device_register +EXPORT_SYMBOL_GPL vmlinux 0x4c97dcff devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x4cb262b6 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0x4cc2dda3 icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0x4cd8fe02 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d16d490 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x4d1eb58c pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0x4d202b8c __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4d272860 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0x4d3b33be regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d524206 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4d593927 skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x4d64ca58 spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d896846 devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x4d8a96ab xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x4d9d267a phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4da1f4a7 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4db7d44f nl_table +EXPORT_SYMBOL_GPL vmlinux 0x4dbb22fa usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4dcef0b2 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df40d18 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x4e0adf0c edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x4e11708b update_time +EXPORT_SYMBOL_GPL vmlinux 0x4e17c613 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4e1c065c perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0x4e4c37e2 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e620e2d bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x4e83d079 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x4e86cc97 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0x4e8c6381 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4e97a903 rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0x4e9d0b8d dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4ec39213 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ece3615 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ed3dbf7 iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0x4ee75095 bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0x4eee5ca0 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef74a42 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4f1e6570 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4f2593f0 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4f299607 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f412c20 crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x4f553b96 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x4f57fbc6 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x4f69cb0f devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f723860 pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f7c1aaa pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4f7e14bd cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x4f8318d9 __xenmem_reservation_va_mapping_reset +EXPORT_SYMBOL_GPL vmlinux 0x4f89fc82 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x4fa025c8 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x4fa33644 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x4fa4504e iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0x4fac3996 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0x4fac98a7 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x4fbc6f53 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x4fc02643 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x4fc8206e sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0x4fd74581 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x4fda150f crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe877e2 get_device +EXPORT_SYMBOL_GPL vmlinux 0x4ffa1917 phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0x500c768c apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x5015e0dd exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x503f0ec8 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x5053f9e8 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x505c56c3 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x505d922d input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x506b0930 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x5071ab8f acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x509178f0 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5096e7e4 dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x50997b74 nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x509d5f55 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x50a63f93 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x50a9803d fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x50b03f5d l1tf_vmx_mitigation +EXPORT_SYMBOL_GPL vmlinux 0x50b71b13 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x50b8161e pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x50bd7a0a serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x50bf4332 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x50ca3ccc device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x50cceaac serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50d598bf pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x50dce4b0 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f38010 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50fe6be3 pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x511530c7 devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x5126877f xen_remap_pfn +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x514ed35c ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x51846891 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x518e61a9 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x518f9606 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x51989b2e pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0x5199ee9d clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x51a1b077 dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x51ae7720 trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x51b80a77 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x51bff7e6 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x51c47a7e serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x51d60e59 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x51eedf1f bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51fd6d5c devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x52048ba4 dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x520ef5f5 is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x52114d60 clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x52121118 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x52138055 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x521ba77c spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x522a8060 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x522aa710 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x523166c2 fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x523abc21 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x524154e9 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0x5241a185 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x52431348 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x52432737 extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0x524514ff devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x525d0aa3 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x527db9c5 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x52a22de3 component_del +EXPORT_SYMBOL_GPL vmlinux 0x52a2b252 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x52b19e55 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52e5f40b fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x52efbab8 vfio_group_get_external_user +EXPORT_SYMBOL_GPL vmlinux 0x52fa65b0 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x532ad8bd devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x53594e88 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x535b9645 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x535bef24 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x536cf7f4 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53873763 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x53877902 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x5391f2c7 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b3332f platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x53c47c53 apic +EXPORT_SYMBOL_GPL vmlinux 0x53c922aa bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0x53cb0efe security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x541782aa pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x543526d9 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x5435454c divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x543aa645 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x543bc755 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x543c6d5c policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x545025e5 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x5452d036 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x545aadf7 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5464b02f fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x5469120d trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x5481aea5 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54955855 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x54aa3a91 uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0x54c35e36 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x54d57ab2 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x54e79c72 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x54eec95c rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0x54f84d2c rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x54f8fc3e em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x550831a9 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0x550a169e sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x5514b45b genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x552c5b28 mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x5531788f nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5553fce3 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5554a176 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x555f9eca rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0x556d2606 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5578f468 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x557c39e5 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x558149ce dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x558a4546 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x55927838 sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0x55955a70 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0x559690be ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x55a6453e power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55eb74c0 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f19edc subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x55ff5e76 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561d1592 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562de765 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56466a9f devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0x56508141 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x5674b3cb rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x567bb5e6 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x568f9c3e platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x56ace845 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x56b18a56 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x56c80db4 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x56df025a spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0x56df4eba regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x56e8193e net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x56e9201f skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x56efcbf6 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x56f820ce regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x570508da posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x571b3a6f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x57234e45 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5725c35b iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x573dbe51 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x573fbe34 bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0x574609c5 apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0x57545423 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x575e7c45 wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x57719632 gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x57732438 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x57874e57 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579732f6 spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b3d687 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c81e43 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x57c8b6ff set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x57d21c2c icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0x57d5ad68 regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0x57dd67d5 perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0x57e48ae5 devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57f2ef61 pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x58276f93 cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0x5830c20d __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x58339ee7 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x5833b6b8 phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x58370eb5 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x5846cf25 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x585147a0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x58797b01 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x587fcdc9 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x588a3cc2 pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0x588d0289 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x58a09f17 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x58bfe1b9 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x58cc66b4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x58d6311d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58e5f370 crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x58f03b99 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x58f679e3 gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x58f802a3 iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x5909d9d3 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x5917cb81 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x59234055 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x59286886 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x593418aa synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0x594cfcd4 split_page +EXPORT_SYMBOL_GPL vmlinux 0x59645780 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x59977345 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x59a1c8c4 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0x59ac2989 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x59aefd41 kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b816a4 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x59c6aff4 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x59d26667 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x59d2a1b4 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x59e69201 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0x59f08f02 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x59fe1000 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x5a17942d pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5a1acc19 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a278a6f __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x5a2cbfdd regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x5a384b2d device_create +EXPORT_SYMBOL_GPL vmlinux 0x5a39f5ee devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x5a44fa9c sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a55ea2a ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x5a6920ef gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a830c36 governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x5aab917c acpi_device_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x5aaf1990 rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ab5e661 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x5ab9af2f tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x5abcb771 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5abfd32b rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x5ac6b587 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5ad3cfad ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5adc771c irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x5adf8c3b mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x5ae00216 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5af5600a spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5afc7e37 bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b3191e4 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL vmlinux 0x5b5cc9c1 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x5b67b103 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b884364 hyperv_report_panic_msg +EXPORT_SYMBOL_GPL vmlinux 0x5b9015f2 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b98c7b2 fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x5b9df7df dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x5babe9d5 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5bb289ac __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd6aadd scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bea9b74 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x5bf33938 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5bf432ef icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0x5c1bead6 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c1e8a60 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5c1eae9b acpi_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x5c22b2b1 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c82e0e3 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x5cab9945 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cb0ddd5 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x5cb64e77 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x5cb95e44 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x5cbacd78 fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0x5cca6c44 wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0x5cd01ee6 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5cd2fb11 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5cd53559 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0x5ce2529a regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x5cea540c adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cec5474 devm_acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x5d17148b apei_write +EXPORT_SYMBOL_GPL vmlinux 0x5d19fa9e i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x5d26070e set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5d27eb4c icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0x5d3ccc77 of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x5d6e534f fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x5d72d304 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x5d79223c device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x5d79ebc9 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d9317d7 uv_teardown_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d9e7609 fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db4ded5 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc715eb list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x5dd66711 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x5de7447d __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5e1532a6 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e1c5c6f sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5e2d3572 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e532ab3 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e7c5607 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x5e7fe57a blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x5e85094e efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e898b11 iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e8a1a36 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ed23b26 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x5eda08fc regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x5edf4f41 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x5ef30521 fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0x5f0d7cc5 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0x5f1413f4 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x5f22bb45 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f2fcc83 ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x5f43f15a ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0x5f45a866 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0x5f4d6984 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f5474bc device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x5f57641c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5f61394e pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f76051c shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x5f950041 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x5fbc2503 crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x5fd04f0b pwm_lpss_resume +EXPORT_SYMBOL_GPL vmlinux 0x5fd43994 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x5fff4500 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x60069ee1 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6006e42a ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601ba3eb __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x603b042f __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x603d0d51 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x603ffb64 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x604ba787 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x6050f961 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60529841 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0x6052f950 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x60578e4f kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x605a2085 led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x605e1edb iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0x6067fed8 i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x60806523 i2c_acpi_get_i2c_resource +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x609ad6af ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x609ec285 lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0x609f2c0c skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x60a1388d devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a634c4 vfio_info_cap_add +EXPORT_SYMBOL_GPL vmlinux 0x60cebc72 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x60d93c41 usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0x60db6249 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0x60dbf44f edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x60df92d8 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60f6e90c device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x60f99e1b cppc_set_perf +EXPORT_SYMBOL_GPL vmlinux 0x610398e9 acpi_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x610f5278 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x611c4bbc mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x611cfa85 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x613f3983 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x614ddd19 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x614e8268 blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x614f2f5a gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0x61631857 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x6168b034 tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x616c7a6d pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x617b026c hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6180fa3d regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6181ffec ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x61914663 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x619b14da fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x61ae1d2d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x61b6627d dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61bbb42c dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x61c1ce90 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x61c22666 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x6202476c dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6207dada alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x624ccb2a espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x625754a8 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x626297fb pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x62854d82 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x62933e87 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x62b31cbb wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62c2e989 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x62d7aa1e genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x62e14243 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62e2aa05 serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x62edb43d ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x630daa71 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x632a4929 phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x6340434e x86_model +EXPORT_SYMBOL_GPL vmlinux 0x63431e59 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6358f72b usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x63790846 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x638a9653 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x638aff11 proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x63a299f7 fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x63b12f6c efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x63bc8be0 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c7f270 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x63c8fd2b hv_setup_stimer0_irq +EXPORT_SYMBOL_GPL vmlinux 0x63d17ad8 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x64005c69 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x640ab48f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x640acb79 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x64192d07 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x641eedad __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x64225bb9 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6441a99e crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x644691e2 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x6458193a sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x645d8631 thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x64891240 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x6499b529 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x64a62e11 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x64cf5c2f pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x64d3cc4e xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x64fdaa24 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6502d9c2 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x6504cda6 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x65061690 nf_route +EXPORT_SYMBOL_GPL vmlinux 0x65092552 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x651b31fe crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x651e624a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x65529064 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x656bfe47 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x656c3d81 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x65704d22 hv_stimer_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6578e1d2 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x65824d94 mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0x659a5dc2 nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x659e63f8 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x65b5c15e tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x65be6c71 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x665b0ad3 dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0x665cf489 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x666b755a __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x666d4944 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x66775c39 sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x6679ada7 devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x667fadec ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6687a146 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x668de81f iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x669218db iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x66a6c061 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x66ad3634 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x66ae4727 mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x66b26b2b clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66bd3a45 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x66d2e4ad dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x66d53da6 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x66d63d78 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66ee7ec7 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x670d7eef gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x67212fe3 pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x6725893c usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x67351af6 gnttab_dma_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x6735c519 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x6747dbd7 dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0x674a4af6 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x676849ff page_endio +EXPORT_SYMBOL_GPL vmlinux 0x6775ceed raw_abort +EXPORT_SYMBOL_GPL vmlinux 0x677fc11c devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x6790a322 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x6790ebd3 mce_is_memory_error +EXPORT_SYMBOL_GPL vmlinux 0x6792e25a __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679f3d95 _copy_mc_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x67b21f14 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x67c732a1 i2c_acpi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67dcd76b uv_setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x67e06005 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x67e971c7 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x67fd2c0e device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x67ff61c2 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0x67ff86a3 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x680f86c8 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x68280632 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x68491940 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x684f2433 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6870bca2 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x6875c4cb iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x687c88a3 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x687f5707 thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x688e71b7 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x689b69ba gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x68b016c6 __xenmem_reservation_va_mapping_update +EXPORT_SYMBOL_GPL vmlinux 0x68b8a7d0 switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x68c469c9 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x68d28fd2 usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x68d7f3f5 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x68d8cf93 perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0x690084d9 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x691cc390 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x69278911 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x693c5422 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x693caa52 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x6954dcaa blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x695e285b sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x696340a5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x69645862 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x696ac90b devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0x696cda2b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x696d7e0b l1tf_mitigation +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69b24b27 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69eb2574 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69fa7f48 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a1c5c7b fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x6a29b816 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x6a33866d bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x6a3fef57 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4c8bdc kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a695e48 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x6a6cb9d5 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6a7213b3 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x6a72f299 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x6a785608 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9efa4f device_add +EXPORT_SYMBOL_GPL vmlinux 0x6aa2a877 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x6aad9152 xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x6aadb1a9 mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0x6acc6445 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0x6acd408c __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x6ae5db7e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x6af3cf8b tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x6af914a9 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x6b0d3f55 pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b122578 devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b26cbe7 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x6b2ab4f6 crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b35a16b intel_scu_ipc_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x6b3ae022 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b66a6ae da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6b68f0d5 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x6b7a4335 hyperv_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6b7cda4c device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b884a55 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x6b899ae8 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x6bc4aa3e spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bd570c6 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x6bdef35c acpi_ec_mark_gpe_for_wake +EXPORT_SYMBOL_GPL vmlinux 0x6be21c2f tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x6be69ba4 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6be97b29 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x6bec6891 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x6bed5237 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x6c0b548a dm_put +EXPORT_SYMBOL_GPL vmlinux 0x6c20c1b3 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x6c23cc0f of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6c23ddfd xen_set_affinity_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x6c27970b devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3b612b acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4ea13e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x6c53949c ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6c5a6c08 blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c6eee75 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6c808062 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c9a34fc bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6caa557d devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0x6cad5930 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6cb0708c virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x6cf02883 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x6cf5c443 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d0d9dd5 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6d13f894 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d27617c regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d2c1c8e blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x6d2e14fa inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x6d2e899d mce_usable_address +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3baf54 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x6d593521 udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x6d5e2292 __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x6d5fa846 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x6d602e43 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d68147c sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d74e390 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0x6d7bea6d phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x6d7cc885 generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6db27f64 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x6db49b3f dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dd011e9 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x6dfa85da rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x6dfddbca switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x6e00fcfb modify_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x6e0fc192 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x6e1cf471 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e5300ce acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x6e63c2dc extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x6e6654a7 ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x6e6f4087 genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7b76a9 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8d006b i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0x6e8dfb19 device_match_name +EXPORT_SYMBOL_GPL vmlinux 0x6ea6147a sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x6ea96ea4 tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x6eb2b84a unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x6eb7c0bd __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ec0e6ec spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6ecb09cd uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0x6ed03a2d tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ee92e4b wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x6eeb3c10 bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b29e acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ef75438 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0x6f0e82f3 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x6f0ec14a devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f3eae58 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x6f530794 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6f582541 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x6f5fa916 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x6f743bba ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x6f750315 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6f87faa2 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0x6f8bd6f4 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x6f922dd2 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x6f947b3e efi_mm +EXPORT_SYMBOL_GPL vmlinux 0x6f95b970 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x6f9d840d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fa5398b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x6fc084d5 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x6fcbf931 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x6fcdf318 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fd1accc bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0x6fd3ca81 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x6fd78e87 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0x6fe96c42 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff617ce ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6ffce680 x86_cpu_has_min_microcode_rev +EXPORT_SYMBOL_GPL vmlinux 0x6ffffd38 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x7000e061 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x700bf612 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x70171f27 gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x703e9cee __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x70576fee acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x70603c82 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x7061a188 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x706db53e device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x7071f827 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x70aff899 devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x70b79945 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x70b7c07a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x70c02044 crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c6d827 mc146818_set_time +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d6efd7 xen_remap_vma_range +EXPORT_SYMBOL_GPL vmlinux 0x70e0d75e crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x70e52835 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x70f5332f sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0x7102d6fe task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71257e9a crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x71316503 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7133d99e iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x714492f0 validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x714833dd ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x714cfbe3 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x716777b6 pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0x7167f2f5 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0x71751480 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7177a1fe ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x7181db30 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b5a388 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x71d3c755 xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0x71eae240 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0x71eb2925 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71f7637f subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x720225b4 ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x7214dcfc sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x724d342c perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x725d822c debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x72613590 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x7262ff2b dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728203a2 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x72942126 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x72970c83 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x729cb6b3 gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x72bb51e4 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x72c1aeeb __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x73119e0a regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x73149634 sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0x7317fae8 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x73224431 scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x732852fe xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0x7337d7ed battery_hook_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73439853 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x7349d215 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x73560fed __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0x7359c2bc nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x7380da94 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7381287f trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x73869c87 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x738fe32b amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x7391776c console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c7742e alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73d05853 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x73f33229 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x73f6c7f3 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0x7427eb78 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x7432efc7 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x7434db61 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x744ffb36 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x746e6874 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x74859eb6 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x7492942d kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x74991d27 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x74b1dabd crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bd26c8 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x74da17c9 vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x74f26c2e regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x74ff7aac dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0x750f85c3 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751766b1 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x75180af4 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753d843d nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0x7560e9b8 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7561a401 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x7578a177 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x75792186 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x758670c9 gnttab_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x75898ed3 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x759be929 dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0x759bfe36 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75bb9371 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d25e7e __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x75daec05 dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x75e24e20 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f0e875 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x75f58fea perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x75f9a396 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x75ff075a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x760e756b pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x7618a762 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x761eb051 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x764e8bf3 put_device +EXPORT_SYMBOL_GPL vmlinux 0x7658948e iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x7665a95b idr_remove +EXPORT_SYMBOL_GPL vmlinux 0x7665c9dc rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x766ae35f dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768cffb2 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0x76d8e7c4 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e85b92 gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76fa8ca7 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7710f9c4 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77128066 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x771cc660 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773736da crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x773f2713 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x7744478e usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x776fd80f fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0x77757498 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x77864e4e fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x778bd9f3 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x7797bba2 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x77989574 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77bda8fa __unwind_start +EXPORT_SYMBOL_GPL vmlinux 0x77bdb9b6 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x77c5f1d0 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x77dcf23a devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77eb2fe7 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x77f51f53 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x78041b8f byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x780869b7 __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0x780d5d28 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x78322a2f hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x7837dcc7 debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x7847249a ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x7849506f genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0x78570ce4 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x7864cfeb cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x786e6627 genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x787c5f10 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7882f501 hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x788d679b iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78a28a29 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78a77449 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0x78aa602e hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x78da2993 fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x790be0b9 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x7915cee5 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x791748c8 adxl_decode +EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x791ecee6 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x79218e09 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x793553db register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x793686ff nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x798b7682 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x799754d8 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x799aebb1 sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x79a9cc71 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x79b54cb4 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x79b716c7 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x79bc842c usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x79c05ea1 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x79cf1043 fpu_kernel_xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x79d9f0ee crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x79dd8d9a regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x79f9e119 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x7a2395db wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x7a253fcd regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7a2ce1a4 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7a31fc26 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x7a338d98 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x7a41b057 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x7a42db56 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x7a45faf9 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x7a510eda kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x7a523597 of_css +EXPORT_SYMBOL_GPL vmlinux 0x7a615c78 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7a655f68 acpi_processor_claim_cst_control +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a780f8c ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a825e98 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x7a98f4b4 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x7a9e4c23 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x7abfca43 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7ace840b fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ad3ba63 skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x7adde49a virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7adeb47f icc_put +EXPORT_SYMBOL_GPL vmlinux 0x7af01f32 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0x7af1fdfe __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x7b00d5ab dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x7b15d084 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b4c9ba9 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x7b4ef438 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7b5452b8 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x7b567cd7 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7b573c08 iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b6d2469 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x7b6f9536 acpi_register_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x7b700fd5 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x7b70363b cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0x7b856860 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b91fd85 devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7bbee357 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7bc1331c devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x7bcfd6c1 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c07432e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7c20b6a0 load_direct_gdt +EXPORT_SYMBOL_GPL vmlinux 0x7c352af8 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c57421b x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7c5b95c0 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x7c5c440d scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0x7c5f3711 ioasid_unregister_allocator +EXPORT_SYMBOL_GPL vmlinux 0x7c626556 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c681aba efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x7c69ebac fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x7c746242 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c832190 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x7c90c2aa kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x7c930f93 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7caf67e7 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x7cb7efd6 tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x7cb803de btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x7cb8b8c6 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7cc0a470 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x7cc4fe4c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd90d1e regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ce20d1d rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ce3b714 nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x7ce6cc69 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf030f0 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d059ee5 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0x7d07034b kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x7d0e1d95 hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d0f33f1 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7d177720 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x7d1cdf57 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x7d1f01e7 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x7d2ca554 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x7d3a897d pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7d50c917 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5e737d inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0x7d688d70 iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x7d6bc8b3 tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x7d7538b8 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7d7892a3 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x7d7e530f pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x7d8baa5e virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddb2718 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7de6cc23 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7df257b0 bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x7e16ec18 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0x7e390001 intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7e51ea16 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e6063b2 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e66c120 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x7e6c4c55 tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x7e76c888 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e819d87 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7e8d8619 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x7e990d6d fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x7ea75c24 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ec814de inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x7eced694 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7f039769 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x7f27193d devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7f2950f7 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7f2a9f18 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x7f2c299e pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x7f354946 i2c_acpi_find_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x7f474dc6 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x7f6ada4a kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x7f76e437 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f93e4a4 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x7fa96509 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x7fafdec9 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fb751e9 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x7fb799fd udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x7fba729d sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7fc018db xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x7feaf80f iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7ffaaf95 iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x8016ac98 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x802bdb8b usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8035e8a2 fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x8049a099 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x807766ea usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808a8088 handle_guest_split_lock +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x808f001e dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0x808f6294 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x809e7d2c is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0x80a16a64 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x80abbd61 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0x80b109d4 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x80b5fa9a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x80c11314 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d97811 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0x80e31fe1 fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x80e793ec dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x80f21eba pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0x80f79c3e acpi_device_fix_up_power +EXPORT_SYMBOL_GPL vmlinux 0x80f9217b sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81221cad amd_nb_num +EXPORT_SYMBOL_GPL vmlinux 0x8122fce1 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8134204d key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x8140d03d rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x81620824 __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x8162faef serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x81742cd1 fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x818350a4 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x819d221b devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x819d72cb klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x81a69eac phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0x81ac1f1c wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81b175af regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x81c60b54 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x81c80dc3 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x81d10485 ioasid_free +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81ed68c1 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x81fe5f1a gnttab_pages_set_private +EXPORT_SYMBOL_GPL vmlinux 0x82018957 irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x8201b844 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x82092899 badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0x821ec7f1 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x82225e45 scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x823eae06 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x82441b46 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x826459d5 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x8266acd2 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x8267a541 irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0x82711943 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x827cafbd ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x827e61f8 acpi_has_watchdog +EXPORT_SYMBOL_GPL vmlinux 0x8289c909 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x829d083f _copy_from_iter_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x82a2cfb7 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x82b216ca disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x82bc9bd5 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbaec3 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x82e1d91a bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x82ed11ad cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x82f1cb5e each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x82f6a628 extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x82faac22 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x83000114 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x8318cef0 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x8319b29e __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x833ff369 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x83447e61 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x8348e4f0 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8353dfff acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0x83548f68 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x8358468a dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x836bda7e rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x8373a68c regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x838b427b devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x838fc3c4 gnttab_dma_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x83a064b6 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x83a16452 tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x83a32d50 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x83a899b3 ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x83c5d011 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x83dbc6db da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x83dc494c pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x83dc66e5 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x83f8d4ea irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x8407b29c dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x841ca4b6 dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0x841e9b0d bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x8421db93 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8423b2b3 ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842f046d usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x845e6dd5 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0x84622862 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x847b5f64 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x847e91a8 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x84b1e1bf fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x84bb0778 blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x84cfb882 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x84fc6723 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85092bdd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8510b467 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x8521bbf5 fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0x853506a5 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0x854688cc irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x85720e12 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x85862277 ioasid_find +EXPORT_SYMBOL_GPL vmlinux 0x858c0ab9 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0x85935a61 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x85a479a7 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85b15444 arch_set_max_freq_ratio +EXPORT_SYMBOL_GPL vmlinux 0x85b1c626 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85b43d69 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x85b9b095 pwm_lpss_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85c30a71 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85e120f8 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x85e214b2 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x85e5d047 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x85ea2d73 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x85f31b04 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x85f47631 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x861174b2 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x86130dbc pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x86169f3e amd_smn_write +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x86289fb5 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x863b6684 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x863d367c device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x863fc77d skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x8641b25b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x86472025 blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866ca6a3 gnttab_page_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x86700220 acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8677f369 pvclock_get_pvti_cpu0_va +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8694cb72 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x86b13d2a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x86b427ce clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0x86bde73e regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x86c43a8c cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x86c5ac29 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86cd3824 devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0x86d31cac fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x86e346f9 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x86f96147 led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x86fefb78 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x87015f2e nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0x870c7a46 wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x870f78ca irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0x8735ed3d irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x873aa0ef wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x8754ae0a skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x8756d7be crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0x875b0098 sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x875bb94a sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x875ff20b sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8768911a irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x8768f3e8 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8773e87c __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x879ac741 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x87c5141d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x87d39258 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0x87d42592 pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x87e64181 amd_nb_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x87ed229b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x87f0b893 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x88066be2 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8809b53c devm_acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x88125ad3 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x88293776 debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x882fd51e dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0x883d22b5 phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x88443432 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x884b11c1 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0x8851da3e __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x885cf73b synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0x887f875b usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x88998911 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0x8899a9ab irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x889df3a9 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88acd307 edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88bfae9d event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x88cded2e pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x88d13c81 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88e8aad2 irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x890b2231 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x890fa0fa btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x8911090e gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x8915122d device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892d12a3 skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x893af0b5 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89696218 reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x89707d8b __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8970ab56 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x8994571d tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x899b2564 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x899ca3e9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x89a61ef0 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x89ae8b28 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cb8a33 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x89cc0ab2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x89d433a4 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x89d8410e rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x89e340cf acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x89f3ef46 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x8a0083d4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a0e3bca ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8a14f611 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x8a15f30c scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8a18c9ca blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x8a240bff __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x8a3240de encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x8a32843a pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0x8a36ffc7 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a45a555 acpi_unregister_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a4ca7be hyperv_flush_guest_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a6d51eb tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a838ef6 intel_scu_ipc_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x8a972091 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0x8a9fbfc7 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x8aa309b9 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0x8aab8db3 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac19a05 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x8ad5ceb1 __uv_hub_info_list +EXPORT_SYMBOL_GPL vmlinux 0x8ad86f38 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8adb5a1c __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8ae217b5 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x8ae5dca7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b1cb9fb spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0x8b2638d9 of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x8b368d21 xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x8b4b76e0 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x8b50e09a device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x8b7290f8 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x8b7b4d8e hv_stimer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b8a81ca n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8ba92924 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x8baf5355 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x8bcff920 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x8be2409a iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8be55e58 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x8be7535c fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x8bf1a55a clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0ae17c fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x8c1abe25 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x8c35c2be is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c47c0eb do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8c484409 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x8c4e89ef perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x8c64944b unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c8e793d __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8c8f49c2 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x8c92dc28 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cbd6bd2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x8cd54602 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8cd7285e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x8ce0befe devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x8ce457b8 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x8cf57950 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x8d165a34 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8d2060bc pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d5c2eb0 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d628df4 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0x8d655b19 pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x8d7901d5 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x8d877d15 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x8d90e15b memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x8d9ad697 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x8d9da5be pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x8db4ee3c dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0x8dc47b33 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x8dc6790f __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x8dd2a400 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x8dd9361d component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x8de7d893 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x8e093730 set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8e14c6f4 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e25bf89 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x8e2a8130 fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0x8e2f7bb2 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8e39641f acpi_dev_gpio_irq_get_by +EXPORT_SYMBOL_GPL vmlinux 0x8e436d73 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e4fac24 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x8e611872 __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x8e684f3a bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0x8e6fa8b5 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x8e8ecd5d devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x8e932fa9 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x8e9bd4a3 hv_alloc_hyperv_page +EXPORT_SYMBOL_GPL vmlinux 0x8ea91583 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x8eac14bf pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8eb2a3c2 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x8eb3ae40 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8edb1aef virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x8ee53e31 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f0463b1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f18d375 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x8f2eb429 kvm_arch_para_hints +EXPORT_SYMBOL_GPL vmlinux 0x8f45eb90 blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8f4b3a0a regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8f6a5a58 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f70a2a9 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f7a29ee of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0a6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8f801d8d rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8f80cacf crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0x8f866331 clean_record_shared_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x8f90090c __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8f90e228 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x8f930910 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x8fbe079e devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x8fc222a7 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x8fd65313 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x8fe35f18 d_walk +EXPORT_SYMBOL_GPL vmlinux 0x8febb5a1 sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0x8ffa8510 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x9007d972 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x900f1f4e gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x9024f443 mds_user_clear +EXPORT_SYMBOL_GPL vmlinux 0x9033b557 device_match_any +EXPORT_SYMBOL_GPL vmlinux 0x90370ff3 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x903a2e8f virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90471079 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9052d90f spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x905e415f ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x905ec9e8 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x9068f9c2 tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0x906edcc3 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9081b5db btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x9084b044 clear_page_erms +EXPORT_SYMBOL_GPL vmlinux 0x909eee85 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x90a55f39 devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x90a87dc9 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x90a9d8cc hv_is_hyperv_initialized +EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x90bb6e4e regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x90c8498c apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90e69b10 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x90e84e66 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x90ed073c xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x90eed59c regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x90fa77fc devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x90ff571b tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x9109a4f0 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x91164abf battery_hook_register +EXPORT_SYMBOL_GPL vmlinux 0x9117253c gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x913d4396 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x9141ec88 pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x91464a5a tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x91467ee1 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9167527c sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x916ea647 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x9171f3d5 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9194e18f xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x9199504e ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x91a0bc03 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91a6fe9b cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x91b9a4ba e820__mapped_any +EXPORT_SYMBOL_GPL vmlinux 0x91bb0dd3 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c86759 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x91c8b5b5 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x91f0a711 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0x92039ecc attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92141343 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x921b2b2d ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9220bab7 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0x92295424 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x922aa207 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x923d9dba pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x923f60fc bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9259d812 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x92661574 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x926a6808 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x92708e0c blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0x927f1dfe akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x929f50af inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x92bd6ec6 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x92cfeffb serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d644b9 dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x92d8e56f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x9306475c ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x93266b94 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x9326880f vfio_virqfd_disable +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x932d19cf i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0x933f75e0 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x93475eaa vfio_iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x934eccae gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x93527067 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x935a33d4 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x93611e04 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x936268ad devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0x93725986 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x937b3222 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x939cf428 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x93a11f65 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x93b5430b l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0x93b7a7ad sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x93d1d424 gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x93d66659 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x93e54613 clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x93f8202d fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x9401719b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x94067bbf serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0x940e2efb spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x941a3d4f clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9420eb87 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x9424058f arch_haltpoll_disable +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9444a9e8 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x945f982c set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x9475eac1 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x947b40c6 cpu_smt_possible +EXPORT_SYMBOL_GPL vmlinux 0x9483bfbf device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x94969d87 perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a2be38 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x94a7e53c raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x94b4c123 find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x94b5b1e2 devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94d1e21d devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x94db8fdd transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f72b76 debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x95015392 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x95178a97 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952a2adb clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x952e892c wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954cc1c4 device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9557d0c6 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956716d2 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9571032e skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e79df unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc95cb crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x95c4aeaa dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x95cf7332 nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95efa1db pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x95f842df regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x95fb8541 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x96044803 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x9605f9ea skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9620c792 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x96262789 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x962c8ae1 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x963ce7e6 bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96460ee4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x964dcb5c spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9659047e alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x965a3cda ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x966d5f41 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x9675e7ae i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0x9688b217 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x968db22a aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x96965bae hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x969817f6 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL vmlinux 0x969fae19 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x96be3688 spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x96d73141 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x96e0d5c2 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x96e6bc1f dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x96eb830d devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x96eee392 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x96f64146 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x96f70452 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x96f87ed4 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x96fbec0c pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9719bcfd pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x972635b0 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x97394f6a sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0x9740cd68 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x97478522 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975722f7 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x97623558 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x97624063 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x9775a203 trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x977be5c7 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x977e8ad2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x979930fc da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x979a2e5d iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x979f37d1 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x97a4e97d cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x97b55923 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x97c7b18a blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x97d12355 hv_remove_stimer0_irq +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x98100309 firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x9820f556 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9827214b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9848aa19 mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0x984a82b3 set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98740bd9 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987ab0a5 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x987d6350 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x98819796 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x988a1a00 sn_region_size +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x9891b6d1 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x98aa4ebd param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x98cc450d crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x98cf79e3 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98f4d306 hyperv_flush_guest_mapping +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x990ed63e acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x99184c2f dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x9930f8a3 uv_bios_change_memprotect +EXPORT_SYMBOL_GPL vmlinux 0x99364260 dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x993c5197 iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x993dde12 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x9942a05d crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x99430ba2 acpi_get_phys_id +EXPORT_SYMBOL_GPL vmlinux 0x994d8bfe bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9978433b nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9980f524 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x99982e53 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x99ac3e03 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x99b4d8fd pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x99c26680 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x99ce461f irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x99e5fab5 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x99e85b21 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x9a0324f7 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1f2742 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x9a249ca7 cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0x9a4fc9e8 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9a58dd2d trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x9a6df260 sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0x9a772393 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x9a7c445e do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0x9aa71c2a efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x9aaac699 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x9aaf42a1 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x9abfa16b wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad4e02e rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x9ad87e7e devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x9ae4191f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aee29ee usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x9b050f01 devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x9b0e928f xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x9b13e9c0 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x9b1f48cc crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x9b2a66d1 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x9b2c72c4 pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x9b3e300b xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9b4b5785 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b698c42 ioasid_set_data +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b98fc24 pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9baa9a32 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x9bad141d hv_hypercall_pg +EXPORT_SYMBOL_GPL vmlinux 0x9bc77923 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x9bc9a8e2 bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x9bcd7122 lookup_address_in_mm +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bfd0218 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x9c051f52 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x9c05b131 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x9c14f5af fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x9c1a4442 sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x9c25185d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x9c2ef854 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9c39e075 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c3fa532 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x9c444ce4 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0x9c469e74 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0x9c4c5033 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x9c681126 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c719475 devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0x9c7c2f68 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c8f0476 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x9c90100b cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x9ca480cc clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9ca7b47e nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x9caab9ef acpi_gpio_get_irq_resource +EXPORT_SYMBOL_GPL vmlinux 0x9cb1e84e do_truncate +EXPORT_SYMBOL_GPL vmlinux 0x9cc2093c dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc9e3e8 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x9cdc236e pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0x9cdd280d devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x9cde313c __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x9ce57e47 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ce68b6b spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x9cf148ba crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9cf37c44 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x9cff95bb usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x9d055902 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d14205c cr4_read_shadow +EXPORT_SYMBOL_GPL vmlinux 0x9d2c5595 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9d30a52e ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0x9d34f2b4 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x9d3d6774 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9d42398d fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x9d5edcf5 xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x9d641001 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x9d664f1d power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9d7c7e09 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x9d7e27e3 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0x9dd255eb tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0x9dd2b2a2 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x9dd6ea43 vfio_iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x9dda0bbb i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0x9ddcf94e spi_async +EXPORT_SYMBOL_GPL vmlinux 0x9de1dd90 blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x9df918f2 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x9e005e6f cppc_get_perf_caps +EXPORT_SYMBOL_GPL vmlinux 0x9e08d700 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e26a7a3 pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0x9e32ad63 __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x9e388cb1 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x9e423bbc unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5fca7b xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x9e68fad7 blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9e73a18f usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x9e898627 regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0x9e9ac1e9 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x9eb7e40e iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x9ed2502f shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eea12c0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x9f0a1092 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x9f168804 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x9f230cec crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9f2be8c8 devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0x9f32da28 vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x9f36457e __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f5a5b37 devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f638156 setfl +EXPORT_SYMBOL_GPL vmlinux 0x9f6d59b2 __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x9f9683cc mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x9fab32df arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x9fbf58ff rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9fbfebab erst_write +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe89fbb ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fef39e3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa01465cf ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xa015c229 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa02343b5 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0xa049ce02 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa05b719b ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xa0689eaf pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xa0c6befa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa0cbce0b da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xa0d0a99c irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0f17641 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xa0fbb9fc get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa1017368 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xa10be10e serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0xa10c6e2a gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa14183f9 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0xa146c493 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa153a622 extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15d9e00 nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0xa15f9792 pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0xa1600337 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa164303c usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xa16478d2 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xa1691b63 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xa16ca1ae ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0xa16d59d6 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xa18ee545 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0xa1a02e0e dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xa1a2efe3 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xa1c577f9 fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xa1c9514b vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1e35803 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa207659e do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa21e8d9c phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xa2321ab6 pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0xa2450ca2 iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xa24c863a fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xa24d779a pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0xa25f78b8 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa274fc17 seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xa27c9c43 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa2967cda skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xa29a5d2b __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa2af54b3 irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xa2cbdaa2 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xa2ce3247 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0xa2d3828c efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2f48ea0 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0xa2f7487f hv_is_hibernation_supported +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa30ba236 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xa30be12a fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa31cb0b9 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa353eb5d badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0xa35f4982 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0xa3659b5f __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xa36fd560 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xa3726583 phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0xa377dd19 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xa37cf3b0 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa3948d5e clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c02275 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0xa3c49c54 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3c4cea8 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3caf3ec netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3cb9d6e scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xa3cc1c6a devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0xa3e11ad8 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xa3e19216 led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa3f30d30 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa4050b9f devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa4137f43 iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0xa419798f sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa41e2e73 cpuidle_poll_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa4232fc8 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa43b88cb pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa43b9ebd sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa4437eae thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45a0612 __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa4729e04 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa482bd41 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xa48ee215 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4b89f91 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xa4c8c661 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0xa4cdce7e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa50335f4 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0xa51c9681 led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa542171f ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa554b18f gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa5874320 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xa59c260e fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0xa59eb317 pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5a0d9a4 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xa5b00791 cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0xa5bda8a1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0xa5be5745 of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0xa5cb3a97 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0xa5d3b7b4 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5e2a20a rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5fbd92d show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xa6094172 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa61c34f8 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xa6216a29 pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa634ff39 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xa666ef4b init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa6824f3f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xa68c4f71 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa695b8eb usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xa695cb71 regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6debd5b regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f4464a blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xa7020cb7 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa7127da7 mce_unregister_injector_chain +EXPORT_SYMBOL_GPL vmlinux 0xa712e298 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xa725e3e9 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa72ac77e wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa731f387 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa74398b9 icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa74df505 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa75d4193 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xa7688f2f devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa7727ab4 mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0xa77d6968 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xa7820fee pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xa7b2be23 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0xa7ba0be8 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0xa7c32ae3 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa7e5c4d3 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xa7ec81ec pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa7f7e064 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xa8048be5 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xa826f3da i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0xa8278497 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xa834b18e devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xa836f0d6 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85769f9 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xa857ee3c wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xa8759dd4 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xa881a8a5 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xa88ce3b5 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xa89172ae devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0xa89d2ca9 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa8a24363 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0xa8a94119 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa8ba2289 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8d48a0d screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xa8f00f6c user_describe +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa91a670d dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xa92390ec nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa959979a devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xa9772261 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0xa9833b79 pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xa9854364 umc_normaddr_to_sysaddr +EXPORT_SYMBOL_GPL vmlinux 0xa993f538 of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9ad3b10 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xa9bc8b74 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa9cd30d7 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa9d5632c bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f1721c fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0xaa0050f3 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xaa084a5e xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0xaa12c51b extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0xaa15b081 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa367917 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xaa53d80f edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0xaa54944b fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xaa5aee1c uv_bios_mq_watchlist_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaa5f6454 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xaa62f820 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa6eb1e4 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xaa86cfb5 uv_possible_blades +EXPORT_SYMBOL_GPL vmlinux 0xaa8b8376 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaa9203fb debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0xaa947d00 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xaa971095 relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaa9d2c9 ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xaab86edc ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaac45a3e extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xaae114db tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaaed4682 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xaaf1e1b9 ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0xaaf1f125 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab00d0e4 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xab055378 __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab24cd12 __acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xab26801f iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0xab2bd9c7 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xab4839cf nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0xab586b25 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xab634d09 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xab7a0f5e lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0xab7db980 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0xab817242 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0xab87caa7 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xab8bdf9a tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0xab8f71df led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xab9805a9 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xab9dbec5 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xabb009e3 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xabb3e0bf ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xabc03b64 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xabc298d0 intel_scu_ipc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcd23d6 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xabd52ecc tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xabdd13a9 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xac16ff7d irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xac28ce11 fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0xac3bc832 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xac52fc53 dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0xac5ad4f8 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xac61c267 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0xac65c7b6 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xac6661ee dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0xac78131a tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0xac7b7f44 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0xac86569f pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xac8ab10c dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xac94c549 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacb4ecf6 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xacba16bf usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xacba8f11 devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xaccbbd9a serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0xaccdfee5 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xacdf73cf dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xace1c02b iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xad0f2b6c unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xad31c8ad user_read +EXPORT_SYMBOL_GPL vmlinux 0xad375f7a tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad505a1a wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad5f0017 perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xad624d41 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0xad62f5ee is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad74aa7b espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0xad7924b1 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xad7fa45d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xad7ff382 __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0xad8091d6 irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0xad84f30d rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadb50b1c dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xadb574bd xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xadc67dfb nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0xadc77afa nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xadcbfd59 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xadfc6ec5 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xae0f531b _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xae22ffc8 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae498500 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xae67dabb gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6f36c7 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae9f32cc irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xaea0f1d7 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xaead319b pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xaeb12315 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xaeb56138 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaeb771ce pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xaec27f8b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xaecb6982 sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0xaecbb9a2 crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xaece0aad skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0xaf0b6ba7 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0xaf21687d pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xaf21bbf4 virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xaf3415af register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf478e20 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xaf643d42 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xaf6b79e9 sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0xaf6fff50 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaf7b0b53 of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xaf7b82f1 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xaf829382 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0xaf899a61 tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0xaf95b92b xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0xafa91086 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xafc685b6 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xafc88cd2 peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0xafdbcd95 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xafec237c dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0xaff41751 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xaff60860 dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0xaffa5dfc ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb0209c4f pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0xb0230632 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb039fe1e pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0xb05a9eed gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xb061564f compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb061bc75 extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08041b8 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xb09452cc mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0xb095cbbc power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb0b47beb dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xb0b65f15 kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bd33db fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0xb0c6febc __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xb0c74e61 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xb0ca3ef3 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xb0d0bcf0 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d8a6dd vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xb0de70b3 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xb0e8e671 xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xb0fbb722 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb11437cf iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb1225eb7 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb12916ba dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14774ba pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xb1506d27 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb15d6107 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb1779758 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb184ef97 sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xb19916a5 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb19e12c1 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0xb1a12007 xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0xb1a1e949 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0xb1a2bc01 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xb1b77127 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e03510 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb1e250f0 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e50877 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0xb1ef0548 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xb2048ccf phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xb2092aac usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb20b81d1 nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0xb212e3f2 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xb21bec42 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2341ba8 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb25b37df devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0xb2677480 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27a3fda regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xb27af823 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xb29a1fbe devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xb2a53075 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xb2b0408d shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb2b04d5e alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0xb2b1eb77 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2cd5363 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xb2d091ba serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xb2d8f70f pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2de4cf2 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xb2e68a45 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ee8d59 path_noexec +EXPORT_SYMBOL_GPL vmlinux 0xb2f37794 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb305f450 bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb326917c rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0xb3351c6c rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb33c0cf9 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb34d0fd9 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xb34e9622 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xb36100aa virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0xb3697565 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xb388b2d8 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb389b100 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0xb39c9c31 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0xb3a617b3 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb3b3d484 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xb3be8e6c dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0xb3c5ecd9 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xb3e7b6a4 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb3f6e8f4 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xb4016070 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb41ad43a sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb41cac4e pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0xb4208b88 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xb420d1f4 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xb42e96f5 dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb450836f strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xb4511357 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xb479c6aa crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb47a6233 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xb480c848 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb487e5ec unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb4885172 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xb49f917b thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xb4a0a912 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xb4a1eb7d ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb4a544c0 bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0xb4a61c88 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb4a9b85e clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0xb4afefd3 dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c92563 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb4d7d090 blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0xb4e47b96 device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4fd1a6c fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0xb4ff6bb6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb50e1f27 __uv_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xb510c250 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xb512823f regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb520eb79 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb523cc40 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb5297113 __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xb5443f33 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb558c1f9 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb5746ed1 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xb57684f2 md_run +EXPORT_SYMBOL_GPL vmlinux 0xb580f122 regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0xb5a822a3 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xb5a83e35 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xb5a8c226 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5b8b08c bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xb5c112a1 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5d13003 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xb5d8044d sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xb5ed48c8 bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5efbf00 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb6015d60 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb6134261 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xb61c453d dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb64f7824 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xb6526701 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb6551e94 crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xb66d8be9 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xb66ed36a devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb680bc60 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xb683d776 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb6888188 klp_shadow_get_or_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6a77c3f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xb6a7d9c2 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xb6aa1525 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xb6bdb776 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xb6c5e614 acpi_processor_evaluate_cst +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb702838b alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0xb713e5eb sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0xb745bfc6 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb75041d1 hv_stimer_legacy_init +EXPORT_SYMBOL_GPL vmlinux 0xb750d1b2 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0xb761318b sev_active +EXPORT_SYMBOL_GPL vmlinux 0xb7669734 crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb76c70e6 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb7853989 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xb785fcfc pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb7948944 d_exchange +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7add6da platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb7afa39a __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xb7b54b74 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7cb58ee ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7d88436 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb7f3be68 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xb7f73ef8 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0xb7f990e9 rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xb801127a phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb80e5d54 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb8273d0b __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xb83b90e7 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xb84c3fe5 devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xb84d0be5 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb85937b4 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xb85eae2f usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xb880c04f ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8ab6856 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8bc982e da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8edbd4d sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0xb8f11603 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb8fde6b0 __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb91cd488 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb9296985 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb94aa964 __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xb95554e8 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb9731083 __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xb97a46ca led_put +EXPORT_SYMBOL_GPL vmlinux 0xb97fbdb9 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xb9a0d59a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xb9ac8a36 fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0xb9acde9e pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0xb9ae1bf9 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xb9b48601 tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c16f51 hv_max_vp_index +EXPORT_SYMBOL_GPL vmlinux 0xb9c1c8f8 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d5efc5 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xb9e1f23a gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0xb9e56d4f lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xb9f0303f blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0xb9f89246 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xba01ec83 hv_stimer_global_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xba16d586 cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0xba220db7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba894d6a scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xba8d2eb7 crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0xba91651b ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xba984d9b acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xbaa80379 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbab39441 devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabbe04d led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0xbabe9344 acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbaf9d785 __tss_limit_invalid +EXPORT_SYMBOL_GPL vmlinux 0xbb015532 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0b25d2 register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0xbb1de45c inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbb323ffc acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0xbb3dd3ba ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xbb3e4691 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbb41beeb paste_selection +EXPORT_SYMBOL_GPL vmlinux 0xbb6104b1 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xbb67ee62 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xbb69f77c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb7672dd do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbb78267d blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbb93eec5 ioasid_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb96e254 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0xbb9f477e kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xbba099ff driver_register +EXPORT_SYMBOL_GPL vmlinux 0xbba23e8e cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc80724 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xbbd4806d blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xbbdb30da driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbdd1745 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xbc04bd46 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0xbc09808c rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xbc167f76 component_add +EXPORT_SYMBOL_GPL vmlinux 0xbc1e713f serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xbc277db7 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xbc346400 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xbc3dde42 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc4140ee devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0xbc47d386 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xbc60516c rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xbc60dc37 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc9b8588 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc0507a xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd999f8 fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce29c95 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0xbcecf672 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd0b6141 regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0xbd0bee33 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xbd375827 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xbd38bddd inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xbd3aa1b8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4363b2 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xbd4b28ca sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0xbd4f20e1 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbd54fe17 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xbd60dd3a pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbd7cc9ae dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xbd7da235 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd830a64 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xbd949448 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xbd9ae66e usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xbd9ee3b5 gnttab_page_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xbdb2ae03 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xbdb2dfd5 uv_bios_reserved_page_pa +EXPORT_SYMBOL_GPL vmlinux 0xbdd06e4e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xbe07924c dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xbe0da9e3 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xbe10210a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xbe5c888b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe5c9f92 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xbe60c584 tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0xbe64e70e pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe744257 efi_get_embedded_fw +EXPORT_SYMBOL_GPL vmlinux 0xbe7aa1a3 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xbe7d7218 dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0xbe81ba4f sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xbe95bbcb __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbe9f439a devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xbea07179 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xbea10a98 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb959fd crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xbec66c3a __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xbed0c05c phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xbee82b3c dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbeea5688 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0xbefdfcbe __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf07c815 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0xbf122db3 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbf18a2f3 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xbf20939f acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbf21f087 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xbf4fdbec inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbf5439c0 tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0xbf68ce6e devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf7d6eb8 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf9c02fd regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xbf9fa111 i2c_dw_acpi_configure +EXPORT_SYMBOL_GPL vmlinux 0xbfa5f89a led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xbfac96bf ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xbfae8670 netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfb36c47 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc4659f regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbfc971e4 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xbfd74271 fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0xbfdedd5f tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfed2cd9 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0xbff3700f kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xbff7f136 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc00f2345 blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0xc0150be6 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xc0380711 blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xc0432631 metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0xc04d994f iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0xc055ecf1 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xc05ed824 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc08bbce6 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0xc0a59f52 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b8d763 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0xc0bd86a8 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc0d8f0cc wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e16859 skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0fc86af kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xc0fd6381 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc11a02e3 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc11f6f18 perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xc1292b04 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xc1337d57 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc135704d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xc15081e3 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc152c9ab __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc1535160 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17798d2 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc1791d36 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xc17e9946 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xc18a16ce watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0xc18cdf36 amd_df_indirect_read +EXPORT_SYMBOL_GPL vmlinux 0xc1b9d86e get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xc1bb7a43 crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc1c6d785 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL vmlinux 0xc1f02aa4 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2173139 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc227b920 spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc234a580 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xc259d0ff bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc25a5fdb iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc27d81e0 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc28d1494 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a3e570 errata +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2ac96b6 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc2afc6da spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc2de27ca hest_disable +EXPORT_SYMBOL_GPL vmlinux 0xc2e26f12 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0xc2ef182d raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc32e5c21 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xc331798f css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc36bb0f6 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc382e30c irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0xc38ffc9b scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc3afdc8d of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0xc3bdb6b4 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xc3c22c14 decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3d0d44f ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc3dd9c73 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e2a93d usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xc3e33e61 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xc3e80bfd cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3edf6aa save_fsgs_for_kvm +EXPORT_SYMBOL_GPL vmlinux 0xc3f77298 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc400ebff bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc402fb94 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc40f4e07 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xc4166ad1 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xc41cbb71 cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0xc426c51f klp_shadow_free_all +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42d4ad4 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc43e92b9 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xc441a560 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc4521ec5 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4555318 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xc45c8cf8 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc45d0d13 injectm +EXPORT_SYMBOL_GPL vmlinux 0xc46324f6 dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL vmlinux 0xc494cfe9 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc4a6e698 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc4a72936 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc4ac8eef __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xc4bf0808 phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0xc4e46079 serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4fc15a5 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0xc4fdeae5 fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0xc504d20c ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc50ed686 tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc5156bf3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc52752cb crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc52cc281 devlink_free +EXPORT_SYMBOL_GPL vmlinux 0xc52f0388 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0xc5476b84 trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0xc54e3fa7 kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0xc5535bde irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc57190bb fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xc5743e2c watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc58d86ba platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xc594d840 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc5996c8c pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0xc5a2028b dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5b06084 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5b0d6c2 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xc5b6f2fe xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xc5d391ce devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0xc5d789df alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc60315f8 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xc6079f01 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc62ad6c2 synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0xc632eb56 serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0xc64717ac perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc652ee3b fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc6572a90 xenbus_read_unsigned +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66239f6 dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0xc668c13e mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc671c909 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc6818e1b acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xc683da81 set_memory_decrypted +EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69cc603 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc6a29c23 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc6a2ae82 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a4d3c7 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xc6b10427 ex_handler_fprestore +EXPORT_SYMBOL_GPL vmlinux 0xc6b464bb crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xc6bb34f8 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xc6c7d547 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xc6ca1604 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6d6bed8 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc6d9cddb nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xc6def34b gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xc6eec8f5 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6ef48f0 devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc720f466 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0xc72b8733 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xc73438f7 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0xc7362027 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xc73fc43d serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0xc74ad623 pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0xc75c548f devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xc75e98e9 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xc77d622e bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0xc7824a3d regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xc7856e74 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xc788e2b2 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xc78bb93c arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b00252 fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0xc7c23ff0 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0xc7c70d83 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xc7e23da2 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc8060e4b __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc80d4052 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc82071cc regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xc82742de usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc82b76e5 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc839c1ce trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc84b4cd5 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xc8563822 find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc85b066d enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc87fb025 xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc8c45fde acpi_get_psd_map +EXPORT_SYMBOL_GPL vmlinux 0xc8c94871 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xc8d2218f intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc8d68ec1 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e90f3e ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xc8ec8652 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0xc8f162c9 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xc8fe6573 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xc8feafb3 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc913c188 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xc9163772 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xc92af918 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xc9345c0f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9582900 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc9739101 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xc97a00c9 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97bd293 xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc9836d78 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xc98fd892 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc998375a device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc99ee506 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9a2102f __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0xc9a4b416 copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xc9bb5c9c addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ca8b43 nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xc9de3c71 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xc9ebd2b2 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f39af2 open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xca05b651 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xca08b38b crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xca240c19 pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0xca27b354 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0xca3e8f3f dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0xca467318 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xca4a0082 xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xca650c59 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xca7aeadc serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xca9af201 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xcaa68533 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0xcabdb64c switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac437d6 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcacd88a0 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xcaf1d958 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xcaf4c9b1 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xcb007983 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xcb044b09 mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0xcb0aa790 blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb17de84 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xcb1804a0 kill_device +EXPORT_SYMBOL_GPL vmlinux 0xcb1a11b9 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb439f81 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xcb51f79e regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb6a6b6d pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xcb77394c regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0xcb802dbf get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xcb82ffa3 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcb8a461c hv_stimer_legacy_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xcb970751 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xcb989d58 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xcba9b10e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xcbb9cfa0 sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xcbba698f nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0xcbbbc1da file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcbc737d7 nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xcbda4fb2 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbe57375 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xcbf60a87 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcbfec966 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc312197 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc3a61a9 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xcc498b46 irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc4a0aae pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xcc4dc908 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcc5104d0 copy_mc_to_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcc57bd74 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcc66f246 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xcc7421ca ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcc9e8c2b perf_msr_probe +EXPORT_SYMBOL_GPL vmlinux 0xcca4fec4 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xcca506b7 dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0xccb34258 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xccb63ff0 mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0xccc32251 nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd2e958 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcceb227d irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xccf2b0d9 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xcd0b1a43 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd2ad28e dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xcd3dccb0 check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0xcd3e5c7c acpi_release_memory +EXPORT_SYMBOL_GPL vmlinux 0xcd464db2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xcd5f55c6 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd6dcf4e devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd77225a led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xcd805644 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0xcd81a945 switch_fpu_return +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9a3b15 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xcd9a82a2 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xcd9ccbb9 cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcda0aa4c rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xcdae07d5 phy_create +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc37208 bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde26600 cppc_get_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xcdef804d acpi_subsys_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xce026961 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xce0a4020 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0xce0f6bf1 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xce28f24a pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0xce2aee4b dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0xce3258c3 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xce3aa2ff usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xce449f75 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0xce450215 sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0xce450bd4 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xce5ad208 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xce62727f devlink_register +EXPORT_SYMBOL_GPL vmlinux 0xce64ce1d xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xce6856ab tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce837c71 __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0xce94d9eb bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xce94fb06 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xcea0e8d0 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xcea817f6 serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0xceaeb8a1 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb66bec sched_clock_cpu +EXPORT_SYMBOL_GPL vmlinux 0xcebfc927 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcecbb54f spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0xced0eb07 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xced42924 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee5f966 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xcee6df71 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xceed8318 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xcf38b060 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xcf48080e rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xcf4c4311 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf661bec usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcf67c9e9 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xcf77cf12 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xcf791da8 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xcf7b4c4f blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0xcf7cd444 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xcf819173 hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0xcf824197 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0xcf84138b devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0xcf881eee devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xcf92f322 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xcf9fe997 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0xcfa0a6c9 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xcfb762b7 __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0xcfc15f4b rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfd30d71 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xcfde2d9c fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xcfe7aa69 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xcfe7fb40 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0xd01519d3 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xd021599a gnttab_page_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd05377f6 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07113c7 nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0xd0841312 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xd096bf0d regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xd09911a6 acpi_dev_get_irq_type +EXPORT_SYMBOL_GPL vmlinux 0xd0aa507d devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xd0b4d7d2 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c90b8f virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0xd0c922b4 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xd0d156e9 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xd0d3f0a4 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0f2ded5 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xd0fb5519 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xd102a3ef led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0xd10f0b9c fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xd123e3a3 sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0xd136cb7c __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xd13dbf59 i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0xd1476486 gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd1571417 irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd173f5d2 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd18a9006 scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0xd19fd453 dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0xd1a80dab ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xd1afc85c regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd1bad3b0 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0xd1c1f554 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xd1cac7bf unregister_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1d06648 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd1d52021 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xd1e11682 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1fbc889 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd200e7af __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd2043762 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20f3fce pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xd21422a8 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd22ded35 pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0xd23094c6 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd2496cf4 icc_enable +EXPORT_SYMBOL_GPL vmlinux 0xd24e9e8c klist_init +EXPORT_SYMBOL_GPL vmlinux 0xd24ea858 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xd2587618 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27f215d gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xd2828613 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0xd28d2416 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd29fd994 badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2c56bec irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xd2c8ae77 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2d67ff9 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2ddd8b4 dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd2f39386 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd30d9f2e dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0xd3130fbc clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd31d136b ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xd32694be sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xd32bb785 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xd3308ec8 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xd33469b5 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xd33a9177 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd3472b46 phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0xd34f27af sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0xd35c6fac __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd36608a4 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xd3752c27 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd380a29e tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd3907d0a devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0xd3949498 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3a8a0fe irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd3ad5982 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3b99f7f dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xd3bd4d25 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xd3bfa753 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3eb3aeb devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xd3ecf47f xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd409f083 __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0xd40efaad gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xd40fa2db dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xd40fd2b9 devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46af5ef cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xd47b449f blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xd48f2c3c iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0xd49007d0 proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0xd49d2ed6 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c33c6d fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xd4d7a223 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xd4e0c50c alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd4f0ee8c smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xd4fb44c5 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xd4fe019f devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xd5058687 iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xd52f4324 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd53c67b3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd54afc98 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd572b65b acpi_dev_get_dma_resources +EXPORT_SYMBOL_GPL vmlinux 0xd576afe7 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0xd57ac1e6 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd57d191c __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xd57fbd31 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5822803 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xd5830239 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5ad357f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xd5ae3845 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xd5b57ab3 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5d34403 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xd5e5cd38 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xd5f17186 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd5f3bb7b set_memory_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xd6044324 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xd60c3b0d set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0xd6201576 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd62697f6 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd65ae5f1 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd668efc9 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xd669c9ce dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6c0a1a8 genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0xd6c37a42 find_module +EXPORT_SYMBOL_GPL vmlinux 0xd6d98317 fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0xd6dcf553 devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6deb1f0 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd6e549be __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd6f14378 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd6f23a18 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd700c605 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xd7102fd0 component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0xd720c43b perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0xd7299f4a ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xd72b772d sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xd72c322e ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7397382 reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd74d07de __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76f244f devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd78bbece devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xd791ffb3 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd79eb549 pwm_lpss_probe +EXPORT_SYMBOL_GPL vmlinux 0xd7a57b9b dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xd7af8125 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xd7bcf727 __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd7c068cc skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xd7c39fff free_iova +EXPORT_SYMBOL_GPL vmlinux 0xd7c9b546 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7ec9839 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd8009e28 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xd80d77bb pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xd83c4e36 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd84379ec gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd85f9069 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0xd870e5e5 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8838520 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0xd8bd6712 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0xd8cdee2a device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8e99d2c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd8ec7967 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd8efd21a sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xd8f547c2 blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8f7311a security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd91838c5 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91b14bf crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xd9272f5b badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0xd927a68e od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xd92f0791 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd93a38a3 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd93a5cb1 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd98a480c fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0xd98adeb3 pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0xd99db4ef blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd9bd2a03 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d879 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9e29c6a da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd9f016b6 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda037a1a blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0xda15a15d alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xda1f78ee clear_hv_tscchange_cb +EXPORT_SYMBOL_GPL vmlinux 0xda2491cd pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0xda2576a6 pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0xda2fe5fc rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda3ae1d6 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xda4a8fa4 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xda5297ef devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xda5353de fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0xda7912d4 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xda837931 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdae26a8d usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdaf7c989 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb5fccb2 sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb66308f blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xdb735885 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8f41f7 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xdb91875e sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xdb95be55 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xdb9f6290 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xdb9fa712 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xdbba8877 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xdbcfa0a4 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xdbd3b003 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xdbde27f3 page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0xdbe1b24d crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0xdbe529d1 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xdbf29726 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbf9cc1f __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xdc099c69 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc18daae uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xdc21b41f sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xdc21e866 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xdc4926f0 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xdc62b4e8 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xdc64b563 devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc6d1e35 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xdc6d6e48 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xdc768b15 bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0xdc7df67f apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc851b9d xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xdc87eabd regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xdc91b881 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9836d3 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca88425 rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0xdca8fc96 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdcb3d683 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xdccc695d skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0xdcd18d2f queue_iova +EXPORT_SYMBOL_GPL vmlinux 0xdcd8ba64 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xdce20b06 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xdce23a83 sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xdce90470 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0xdcf075f0 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd102a49 spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3c1914 regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0xdd4e00fc acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xdd5fa76d regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0765 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0xdd945748 add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0xdda8471e dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0xddbbdc52 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc75fee intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xddeab273 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xddf87495 pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xde09a94d xas_find +EXPORT_SYMBOL_GPL vmlinux 0xde0bd899 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0xde19af2d led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xde1a3fdb usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xde2d3af0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xde522d0a percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xde67d6ee gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xde6e3469 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde7f397c usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0xde9ab8c7 xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeae77ad debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xdeb2f623 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xdeb695de max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xdecae879 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xdedff784 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdee851d1 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdee856df devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0xdeebcbc4 devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0xdeecf500 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca3f4 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf18afc6 hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0xdf1eca19 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf223247 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xdf24e6cf gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf42f3d3 kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0xdf46a5c9 init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xdf68c2f1 nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xdf6bc741 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xdf7bb7a1 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xdf81924d uv_bios_mq_watchlist_free +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdf9af307 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xdfa2458f scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xdfa46fd8 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xdfb58884 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xdfb62e16 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfe88102 fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdff24701 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xdffa527e fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0xe02614ea devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe02dd56f ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xe02f127d pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe049bfe5 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xe04e0ace pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08e7567 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe0955365 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xe097d004 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xe0a4605e usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b5896a sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xe0b6ceb4 nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xe0c47b90 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0e299f7 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe0e7146f ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe0f1d817 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xe0f88fdf class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe1250b09 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xe1336829 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0xe13b7279 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17a4f3f skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xe195dc6d device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xe1a0ff53 bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0xe1a8d7c9 net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe1aa2d62 set_hv_tscchange_cb +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1e1cf53 edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0xe1e4df72 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0xe1fb7886 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xe20a0954 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0xe212ca8d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xe21e70bc rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xe2205619 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe22079bb virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xe2216d74 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xe22555d3 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe2582a12 btree_init +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe298ef38 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2b3b6a8 devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe2dee084 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe329ba24 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe338c5ac inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0xe34fe2be dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0xe353ee00 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe357ed53 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xe360a91e __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xe36dea81 platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0xe374a770 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xe386eec7 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe39647e6 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3a5228a smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3b22ed7 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0xe3b734c9 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3c19047 bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0xe3cbc4d2 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe3cd5fae klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe3cf68d4 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xe3d52d3d dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0xe3e88acb __get_current_cr3_fast +EXPORT_SYMBOL_GPL vmlinux 0xe3f42dd0 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe3f94165 tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe41224ad sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0xe414e2b8 i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe4248980 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xe42a72ef pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43e20f9 proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0xe45ce176 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xe46106c3 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe46805e3 nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0xe48611ac trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xe4874aef __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe495926a alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a62d88 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0xe4aa1f84 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0xe4ad5ed7 tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0xe4aee106 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4bfc7d1 crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4f82979 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0xe528e270 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0xe52a4ac9 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0xe52e29fc dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0xe5379260 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe54c6d58 put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xe552cbca i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0xe5553504 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xe5720c74 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0xe578dae6 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xe5853ffe usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe59da22f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xe5a63a86 usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe5ba9ed2 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xe5bcf6ce kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xe5bdbace usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xe5c02b64 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe5cb8d47 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe5db6744 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe5e38632 dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe5e68b3e rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe5e88026 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe5fa56d6 iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe609cc91 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe61b6d0b ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe6358be5 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xe63b20fa phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe667a1e7 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0xe67463f4 devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0xe6778d80 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xe67a8c1a vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0xe681f965 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xe68e1847 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe693b91c tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe6a257f1 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6a318df devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xe6b4a2af page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe6b8ac33 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xe6deea85 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6eb72f4 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xe6f52443 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe6f5e6f5 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe70de602 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xe7119cb2 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xe71bc5c6 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe71c169d tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0xe71d4666 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe72f4720 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xe7385d75 devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0xe73db3d2 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xe740b58a hv_vp_assist_page +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75ee385 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0xe763c418 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7663890 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe79bf0c4 klp_shadow_get +EXPORT_SYMBOL_GPL vmlinux 0xe79ed25c device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xe79fc45d io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe7ad7c8d pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0xe7c7e3dc xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xe7c907dd balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7ea142e crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe8127fd1 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe812acac __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81dcd6e device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe83bd9e9 mmput +EXPORT_SYMBOL_GPL vmlinux 0xe83eba32 itlb_multihit_kvm_mitigation +EXPORT_SYMBOL_GPL vmlinux 0xe8489191 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe84e5083 iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe870ceab dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0xe87119af security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0xe87579ec wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe879724f sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xe87adc1d intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe87ef900 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xe89a7f51 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe8af03fb wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xe8b40f33 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe8b492ff gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0xe8bbeea2 to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0xe8c5e51f fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0xe8d2f58c acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xe8ed7376 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe8f8518e relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xe9087bbd regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xe913f4c5 skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xe9347fc6 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xe9389064 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe940a574 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xe97f25d2 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xe98fa447 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xe9a60e30 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xe9c50b81 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xe9c7559c devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xe9cd890c mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e18eb7 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0xe9e9992c gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xe9ebeae7 ptdump_walk_pgd_level_debugfs +EXPORT_SYMBOL_GPL vmlinux 0xe9f202e6 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xe9f40b47 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xe9f65d29 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe9fb11e4 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xea0860e3 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea2274bf platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea4003d5 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xea4440b2 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xea5508dc devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xea63fb42 pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0xea835a49 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xea835be3 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xeaad96f9 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeaf7fe0f sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb3d2960 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xeb4b0072 acpi_set_modalias +EXPORT_SYMBOL_GPL vmlinux 0xeb5c6999 dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb71d48f phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xeb73f5fd call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xeb7e5409 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb847bdc sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xebb52419 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xebbdb2ea usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xebc9679b nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebdd7240 dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0xebde3b17 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0xebf01050 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xec098b48 iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0xec1628e6 pv_info +EXPORT_SYMBOL_GPL vmlinux 0xec2cc992 cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0xec335675 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xec341468 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xec37eb0b sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0xec471abf pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xec52b049 blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec5ad73b trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xec660cd3 __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec788566 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0xecaa62a5 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0xecb1db83 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xecba68e3 gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0xecca12c6 devm_request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0xecd124a0 devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0xecd1b44a usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0xecd8f23d xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xed0122c9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xed05e0f6 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xed073b40 tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xed0f16a0 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xed14b37e blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xed18adab l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xed1bcb5d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xed28003c dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xed2854a9 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xed2a54b1 acpi_cppc_processor_probe +EXPORT_SYMBOL_GPL vmlinux 0xed45180a blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xed454dcc cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0xed483838 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0xed538731 synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0xed6582f1 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xed767696 ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xed76b403 cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xed7c7b91 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xed9aaee4 __intel_scu_ipc_register +EXPORT_SYMBOL_GPL vmlinux 0xedb33cf8 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xedb3c891 vfs_write +EXPORT_SYMBOL_GPL vmlinux 0xedd092d5 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xede98ec5 intel_pt_validate_hw_cap +EXPORT_SYMBOL_GPL vmlinux 0xede9a09a btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xedfa4020 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0xee0c2e01 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee15b1e1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee56bb99 fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xee59749b virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xee674c1a usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xee706fc1 devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0xee828168 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xee8a75cf iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0xee94072f extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee9f526b pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xee9fcda6 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xeea5fc39 devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0xeeb2765c __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xeeb53ea9 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0xeec31f29 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xeed0e944 of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeee667d3 fpregs_assert_state_consistent +EXPORT_SYMBOL_GPL vmlinux 0xeee92744 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xeeeb6d83 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xef015ad5 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xef11fa21 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xef17d3b2 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef238b88 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xef24e17c pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef31ab4e security_path_link +EXPORT_SYMBOL_GPL vmlinux 0xef3d392f sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xef3ff3ce __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef498dcd device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xef4cc823 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef82bf7d phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0xef882ee8 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xef8b5d16 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xef8fc95f kvm_async_pf_task_wait_schedule +EXPORT_SYMBOL_GPL vmlinux 0xef92e505 led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0xef92ef33 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xef9699e7 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa95f64 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xefb2f065 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xefb8d884 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xefbe9c4d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xefe812f2 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xeff848e3 linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0xf005c8d1 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xf014d0f2 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf01e3275 lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xf0397046 tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0xf04429b4 acpi_bus_get_status_handle +EXPORT_SYMBOL_GPL vmlinux 0xf04873d3 regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf0504ce5 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf0560546 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xf0594efc dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf07ac2df debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xf08050c4 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xf08c4d5b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0b48162 devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0be83c8 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xf0c022ef kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xf0c2d05a devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xf0ce7fd6 blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xf0d3555b blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0xf0d478c7 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xf0e7af99 pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0xf0ee2cb5 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf0f8c432 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xf0fd2ff7 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf0feb7ac icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0xf0fef61b __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xf107a138 nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0xf10d5b40 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf114a923 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xf120a7e1 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1249616 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xf12dbaba relay_close +EXPORT_SYMBOL_GPL vmlinux 0xf12e6903 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xf1316075 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf13ff983 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf1447847 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf14b5cf7 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf153e5ec devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0xf15d07c6 __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xf16ea7d8 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf17f3a48 regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1875584 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xf19f9b39 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c126bf tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0xf1c90139 tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0xf1cd8929 kvm_read_and_reset_apf_flags +EXPORT_SYMBOL_GPL vmlinux 0xf1dee9d7 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf1f98960 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0xf1feb7b8 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xf2010e0e devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0xf204ad5e pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf2073a42 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf2147703 bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xf217d498 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf25049af of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xf27d0a7b gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xf27f2aab pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xf28d88e8 pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xf28df6f0 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2985e92 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf2c2b496 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf2d5304d phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf333e3e6 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf36aeaa6 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xf37dca32 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3891516 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xf3a5d50c handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b95d79 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3daf3fc ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf3df471f md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xf3ebe539 acpi_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf3ec6cbb ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf3f48d50 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xf3fb4d27 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf4055bb3 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xf415941d sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf41dd15e power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0xf42bd513 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xf43ed27a ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf443e131 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xf456250d public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xf4590903 led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf46fa463 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf4846279 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf486c921 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0xf499e86f phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b6a510 devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0xf4d24a4a to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xf4d89a38 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4f69d1f clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0xf4fc0d2f __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0xf4fea0e6 md_start +EXPORT_SYMBOL_GPL vmlinux 0xf50e911e copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54dde99 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55461fd debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0xf55c60e4 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xf56e93d3 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf5752b7d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf58004ec tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf58b513c uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xf58f8c2d serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a9ea18 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xf5aa6cc4 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5ad90b9 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf5b594f0 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xf5b87cfd netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0xf5bf00f4 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0xf5cf88ce regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf60cb2c1 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf61efd92 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xf6230e49 fpregs_mark_activate +EXPORT_SYMBOL_GPL vmlinux 0xf64ab968 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf655a6bb sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0xf658b601 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf66d31c2 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xf675b46b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf6933907 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xf69cf133 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xf6a904c3 gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6c9228c sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xf6cd9ff2 device_move +EXPORT_SYMBOL_GPL vmlinux 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6e8cc3f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf6fb614a ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xf713974d phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf74bff70 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xf767ca35 fixed_percpu_data +EXPORT_SYMBOL_GPL vmlinux 0xf768cc22 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xf7709489 perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0xf7866b4f bind_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf7918d55 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf7a2687e user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xf7ac2706 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf7ba0369 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d49bf0 pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf81a770e tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf831a160 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8485685 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xf84e28a2 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf86c2a33 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xf872dffa bind_interdomain_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf878ecde devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf881cecd load_fixmap_gdt +EXPORT_SYMBOL_GPL vmlinux 0xf88de83c __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xf89f4ef5 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8ad028a dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0xf8b46fda pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xf8bc7508 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf8bfaa69 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xf8c3eadb ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xf8c54c34 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0xf8c5ab7e rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf8c82748 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf8d551d9 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xf8e6788e ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fd5e46 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3986 pat_pfn_immune_to_uc_mtrr +EXPORT_SYMBOL_GPL vmlinux 0xf91ab2ed __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xf9286ce3 i2c_acpi_find_adapter_by_handle +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93597da dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xf945e356 gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0xf9501fcf usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xf9510371 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf97f25a4 i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0xf9849491 devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0xf991bf7c iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bb3b4f iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0xf9d861c2 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xf9db7b30 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xf9dfcca9 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf9e550cd perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0xf9f77792 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfa03a629 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfa0a8896 acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0xfa1899eb register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa21f7aa __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xfa349688 aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3a17ea phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xfa46d7d4 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa5e84dc events_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xfa65be0a memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa681a30 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfab862b4 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0xfac237b7 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xfad57818 pci_pr3_present +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfadeba4d class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xfae6fa09 security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfb0283b7 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xfb0b6585 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0xfb1947d7 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb44984f gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7cd1b8 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc3fc88 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xfbc478d7 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xfbc54940 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0xfbc672b8 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xfbd1c8bd unwind_get_return_address +EXPORT_SYMBOL_GPL vmlinux 0xfbdfc558 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xfbe9da81 ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0xfbee5645 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0xfbf8de04 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0xfbffd601 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0797e4 free_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc0d6c56 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc192749 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc421a98 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xfc56e952 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xfc60d4f1 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc746b3c gnttab_page_cache_shrink +EXPORT_SYMBOL_GPL vmlinux 0xfc7b57be dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0xfc8ccca5 crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0xfc9666d7 fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xfc9ea67b thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfcaa1642 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfcab6a19 sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcce275f acpi_subsys_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xfce7bd44 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfd17ef27 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xfd1bd4d9 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xfd41acff unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd68a712 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xfd6e7fdb crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7c1323 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xfd7d6fbc md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xfd8fb329 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0xfd98ed9e i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xfd9e2e65 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xfdb7ef51 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdbde96c phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfdc08f15 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0xfdd5614f sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfdebdc17 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0xfdefb1e1 iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfe0e7cd3 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0xfe31c6a4 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xfe3589ac usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0xfe35c18d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xfe419433 dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe52992a devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe66205b pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe7384c6 ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0xfe758958 regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea4b943 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfeb9c63d devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xfebc218f lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeeecd05 apei_read +EXPORT_SYMBOL_GPL vmlinux 0xff03d761 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xff04cc4e skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1d3a58 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xff1e67b9 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0xff21625e ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xff219258 strp_stop +EXPORT_SYMBOL_GPL vmlinux 0xff29131f acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff45516a wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xff4a632b ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xff4e6e5c fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xff5317ef pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff65c3d1 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xff79529d pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff8e74e2 arch_haltpoll_enable +EXPORT_SYMBOL_GPL vmlinux 0xff8f9949 elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xffa5cf2d ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0xffa8b11e inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xffab2d7d perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffcca650 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xffcde0d0 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xfff90746 gpiod_is_active_low +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x22d3b6ba ltc2497core_remove drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0x56fe9fbf ltc2497core_probe drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x01f06964 mcb_release_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x05890ce1 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x1ea8ca5a chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x2a899e3d mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x4ab4e4d1 mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x5aa94fa2 mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x6403fd9b mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x69f166ca mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x81059c39 mcb_get_irq drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x858a6982 mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x8deb10bc mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xb140321d mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xe4e9419b __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xfefe581a mcb_bus_add_devices drivers/mcb/mcb +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0x1e8c7c2c hda_codec_probe_bus sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0x40c38c30 hda_codec_jack_wake_enable sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0xb896c332 hda_codec_jack_check sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x0d90be81 hda_codec_i915_exit sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x1ac4dc55 hda_codec_i915_display_power sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x9a7fa010 hda_codec_i915_init sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x3138ac44 sof_apl_ops sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x44fc4caa sof_cnl_ops sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x5b5be595 apl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x61cf31b7 icl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x703e1716 tgl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xa9a9b2b6 jsl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xacf31f39 ehl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xf4d48b52 cnl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0x05a9954d intel_pcm_open sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0x22346f67 intel_ipc_pcm_params sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0xb81bb6c4 intel_ipc_msg_data sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0xd9550eea intel_pcm_close sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_MERRIFIELD EXPORT_SYMBOL 0x5845845b sof_tng_ops sound/soc/sof/intel/snd-sof-intel-byt +SND_SOC_SOF_MERRIFIELD EXPORT_SYMBOL 0x8639b9f0 tng_chip_info sound/soc/sof/intel/snd-sof-intel-byt +SND_SOC_SOF_XTENSA EXPORT_SYMBOL 0x9d803e39 sof_xtensa_arch_ops sound/soc/sof/xtensa/snd-sof-xtensa-dsp +TEST_FIRMWARE EXPORT_SYMBOL_GPL 0x9d8a8803 efi_embedded_fw_list vmlinux +TEST_FIRMWARE EXPORT_SYMBOL_GPL 0x9dd8d0e2 efi_embedded_fw_checked vmlinux +USB_STORAGE EXPORT_SYMBOL_GPL 0x01524a79 usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x0cccc779 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x159c1974 usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1c8db2fd usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1d6164aa usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x20fd3e6d fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x22895488 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x2bc95b5f usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x2d774db8 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x30ecb025 usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3f95e0aa usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x595ee2ed usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5bcc30a7 usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6d1b80e6 usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x895218ad usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x8fd30086 usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x94f869c3 usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x98393591 usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9c853ae7 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9e7d4533 usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa6cea1d4 usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xcb4abc20 usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xcf71a947 usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe70fbc2f usb_stor_clear_halt drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/generic.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/generic.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/generic.modules @@ -0,0 +1,5726 @@ +104-quad-8 +3c509 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_exar +8250_lpss +8250_men_mcb +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +9pnet_xen +BusLogic +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +abp060mg +ac97_bus +acard-ahci +acecad +acenic +acer-wireless +acer-wmi +acerhdf +acp_audio_dma +acpi-als +acpi_configfs +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpi_tad +acpi_thermal_rel +acpiphp_ibm +acquirewdt +act8865-regulator +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv7511-v4l2 +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aegis128-aesni +aes_ti +aesni-intel +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +ah4 +ah6 +aha152x_cs +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak7375 +ak881x +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +alim1535_wdt +alim7101_wdt +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am53c974 +ambassador +amc6821 +amd +amd-rng +amd-xgbe +amd5536udc_pci +amd64_edac_mod +amd76xrom +amd8111e +amd_energy +amd_freq_sensitivity +amdgpu +amdtee +amilo-rfkill +amlogic-gxl-crypto +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx78xx +analogix_dp +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apex +apple-gmux +apple-mfi-fastcharge +apple_bl +appledisplay +applesmc +applespi +appletalk +appletouch +applicom +aptina-pll +aqc111 +aquantia +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3935 +as5011 +asb100 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-pwm-tacho +aspeed-video +ast +asus-laptop +asus-nb-wmi +asus-wireless +asus-wmi +asus_atk0110 +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_usb +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlantic +atlas-ezo-sensor +atlas-sensor +atlas_btns +atm +atmel +atmel-ecc +atmel-i2c +atmel-sha204a +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atomisp +atomisp-gc0310 +atomisp-gc2235 +atomisp-libmsrlisthelper +atomisp-lm3554 +atomisp-mt9m114 +atomisp-ov2680 +atomisp-ov2722 +atomisp-ov5693 +atomisp_gmin_platform +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796b +axi-fan-control +axnet_cs +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bareudp +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm-phy-lib +bcm-sf2 +bcm203x +bcm3510 +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s-x86_64 +blake2s_generic +block2mtd +blocklayoutdriver +blowfish-x86_64 +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bnxt_re +bochs-drm +bonding +bpa10x +bpck +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmsmac +brcmutil +brd +bridge +broadcom +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c2port-duramar2150 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx-x86_64 +camellia-aesni-avx2 +camellia-x86_64 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cavium_ptp +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccp +ccp-crypto +ccs811 +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-pltfrm +cdns3 +cdns3-pci-wrap +cec +ceph +cfag12864b +cfag12864bfb +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-x86_64 +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8505 +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +chromeos_tbmc +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +cicada +cifs +cio-dac +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-cs2000-cp +clk-max9485 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5341 +clk-si5351 +clk-si544 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +contec_pci_dio +cops +cordic +core +coretemp +cortina +cosm_bus +cosm_client +counter +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpu5wdt +cpuid +cpuidle-haltpoll +cqhci +cr_bllcd +cramfs +crc-itu-t +crc32-pclmul +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-pclmul +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_ishtp +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_lpcs +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_kbd_led_backlight +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +crvml +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +cs89x0 +csiostor +ct82c710 +curve25519-generic +curve25519-x86_64 +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +dax_hmem +dax_pmem +dax_pmem_compat +dax_pmem_core +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dcdbas +ddbridge +ddbridge-dummy-fe +de2104x +de4x5 +decnet +defxx +dell-laptop +dell-rbtn +dell-smbios +dell-smm-hwmon +dell-smo8800 +dell-uart-backlight +dell-wmi +dell-wmi-aio +dell-wmi-descriptor +dell-wmi-led +dell_rbu +denali +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9601 +dmard09 +dmard10 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dps310 +dpt_i2o +dptf_power +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drm_xen_front +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-edma +dw-edma-pcie +dw-i3c-master +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_wdt +dwc-xlgmac +dwc2_pci +dwc3 +dwc3-haps +dwc3-pci +dwmac-generic +dwmac-intel +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +ebc-c384_wdt +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_bhf +ec_sys +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edac_mce_amd +edt-ft5x06 +ee1004 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efa +efi-pstore +efi_test +efibc +efs +egalax_ts_serial +ehci-fsl +ehset +einj +ektf2127 +elan_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +erofs +esas2r +esb2rom +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +eurotechwdt +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-fsa9480 +extcon-gpio +extcon-intel-cht-wc +extcon-intel-int3496 +extcon-intel-mrfld +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +floppy +fm10k +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +friq +frpw +fscache +fschmd +fsia6b +fsl-mph-dr-of +fsl_linflexuart +fsl_lpuart +ftdi-elan +ftdi_sio +ftl +ftrace-direct +ftrace-direct-modify +ftrace-direct-too +ftsteutates +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gasket +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gdmtty +gdmulte +gdth +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +genwqe_card +gf2k +gfs2 +ghash-clmulni-intel +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gm12u320 +gma500_gfx +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpd-pocket-fan +gpio +gpio-104-dio-48e +gpio-104-idi-48 +gpio-104-idio-16 +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-amd-fch +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio-bd9571mwv +gpio-beeper +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-exar +gpio-f7188x +gpio-generic +gpio-gpio-mm +gpio-ich +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio-lp3943 +gpio-lp873x +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio-siox +gpio-tpic2810 +gpio-tps65086 +gpio-tps65912 +gpio-tqmx86 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-vibra +gpio-viperboard +gpio-vx855 +gpio-wcove +gpio-winbond +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-ws16c48 +gpio-xra1403 +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpu-sched +gr_udc +grace +gre +greybus +grip +grip_mp +gru +gs1662 +gs_fpga +gs_usb +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_nokia +hci_uart +hci_vhci +hd3ss3220 +hd44780 +hdaps +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +hecubafb +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfi1 +hfs +hfsplus +hgafb +hi311x +hi556 +hi6210-i2s +hi8435 +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-hyperv +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hih6130 +hinic +hio +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp-wireless +hp-wmi +hp03 +hp206c +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei-wmi +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_sock +hv_storvsc +hv_utils +hv_vmbus +hwmon-vid +hwpoison-inject +hx711 +hx8357 +hx8357d +hyperbus-core +hyperv-keyboard +hyperv_fb +i10nm_edac +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd-mp2-pci +i2c-amd-mp2-plat +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cht-wc +i2c-cros-ec-tunnel +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mlxcpld +i2c-multi-instantiate +i2c-mux +i2c-mux-gpio +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-nvidia-gpu +i2c-ocores +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i3c +i3c-master-cdns +i40e +i40iw +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i82092 +i82975x_edac +i915 +iTCO_vendor_support +iTCO_wdt +iavf +ib700wdt +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_qib +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ice +ichxrom +icp +icp10100 +icp_multi +icplus +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +idxd +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imm +imon +imon_raw +ims-pcu +imx214 +imx219 +imx258 +imx274 +imx290 +imx319 +imx355 +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int3400_thermal +int3402_thermal +int3403_thermal +int3406_thermal +int340x_thermal_zone +int51x1 +intel-cstate +intel-hid +intel-ish-ipc +intel-ishtp +intel-ishtp-hid +intel-ishtp-loader +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel-rng +intel-rst +intel-smartconnect +intel-uncore-frequency +intel-vbtn +intel-wmi-sbl-fw-update +intel-wmi-thunderbolt +intel-xhci-usb-role-switch +intel-xway +intel_bxt_pmic_thermal +intel_bxtwc_tmu +intel_cht_int33fe +intel_chtdc_ti_pwrbtn +intel_int0002_vgpio +intel_ips +intel_menlow +intel_mid_powerbtn +intel_mid_thermal +intel_mrfld_adc +intel_mrfld_pwrbtn +intel_oaktrail +intel_pch_thermal +intel_pmc_bxt +intel_pmc_mux +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl_common +intel_rapl_msr +intel_scu_ipcutil +intel_scu_pltdrv +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_soc_pmic_bxtwc +intel_soc_pmic_chtdc_ti +intel_soc_pmic_mrfld +intel_telemetry_core +intel_telemetry_debugfs +intel_telemetry_pltdrv +intel_th +intel_th_acpi +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +intelfb +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +ioatdma +iommu_v2 +ionic +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipu3-cio2 +ipu3-imgu +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +ipwireless +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +isst_if_common +isst_if_mbox_msr +isst_if_mbox_pci +isst_if_mmio +it87 +it8712f_wdt +it87_wdt +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcm +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kl5kusb105 +kmem +kmx61 +kobil_sct +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +ks0108 +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +ktti +kvaser_pci +kvaser_pciefd +kvaser_usb +kvm +kvm-amd +kvm-intel +kvmgt +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +lcd +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-apu +leds-as3645a +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxcpld +leds-mlxreg +leds-mt6323 +leds-nic78bx +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-sgm3140 +leds-ss4200 +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +legousbtower +lg-laptop +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lineage-pem +linear +liquidio +liquidio_vf +lis3lv02d +lis3lv02d_i2c +lkkbd +ll_temac +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp8755 +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +mac_hid +macb +macb_pci +machxo2-spi +machzwd +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +marvell10g +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693-haptic +max77693-regulator +max77693_charger +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mce-inject +mceusb +mchp23k256 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-cavium +mdio-gpio +mdio-i2c +mdio-mscc-miim +mdio-mvusb +mdio-thunder +mdio-xpcs +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei-txe +mei_hdcp +mei_phy +mei_wdt +melfas_mip4 +memory-notifier-error-inject +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +metro-usb +metronomefb +meye +mf6x4 +mgag200 +mhi +mi0283qt +mic_bus +mic_card +mic_cosm +mic_host +mic_x100_dma +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx-platform +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_i2c +most_net +most_sound +most_usb +most_video +moxa +mp2629 +mp2629_adc +mp2629_charger +mp8859 +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_ocelot_common +msdos +msi-laptop +msi-wmi +msi001 +msi2500 +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6397 +mt6397-regulator +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-pmic-keys +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxm-wmi +mxser +mxuport +myrb +myri10ge +myrs +n411 +n5pf +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nand +nand_ecc +nandcore +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfit +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-avx2 +nhpoly1305-sse2 +ni903x_wdt +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nic7018_wdt +nicpf +nicstar +nicvf +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm750-pwm-fan +ns +ns558 +ns83820 +nsh +ntb +ntb_hw_idt +ntb_hw_intel +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-rave-sp-eeprom +nvmem_qcom-spmi-sdam +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nvram +nxp-nci +nxp-nci_i2c +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_xilinx_wdt +ofb +omfs +omninet +on20 +on26 +onenand +opa_vnic +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +palmas_gpadc +panasonic-laptop +pandora_bl +panel +panel-raspberrypi-touchscreen +paride +parkbd +parman +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pblk +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcengines-apuv2 +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-hyperv +pci-hyperv-intf +pci-pf-stub +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pciefd +peak_pcmcia +peak_usb +peaq-wmi +pegasus +pegasus_notetaker +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-cpcap-usb +phy-exynos-usb2 +phy-generic +phy-gpio-vbus-usb +phy-intel-emmc +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-usb-hs +phy-qcom-usb-hsic +phy-tahvo +phy-tusb1210 +phylink +physmap +pi3usb30532 +pi433 +pinctrl-broxton +pinctrl-cannonlake +pinctrl-cedarfork +pinctrl-da9062 +pinctrl-denverton +pinctrl-geminilake +pinctrl-icelake +pinctrl-intel +pinctrl-jasperlake +pinctrl-lewisburg +pinctrl-lynxpoint +pinctrl-madera +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-sunrisepoint +pinctrl-tigerlake +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn544_mei +pn_pep +pnd2_edac +poly1305-x86_64 +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +processor_thermal_device +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +pt +ptp_clockmatrix +ptp_idt82p33 +ptp_ines +ptp_kvm +ptp_vmw +pulse8-cec +pulsedlight-lidar-lite-v2 +punit_atom_debug +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvcalls-front +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm-cros-ec +pwm-iqs620a +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pxa27x_udc +pxe1610 +pxrc +qat_c3xxx +qat_c3xxxvf +qat_c62x +qat_c62xvf +qat_dh895xcc +qat_dh895xccvf +qca8k +qcaux +qcom-cpr +qcom-emac +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-vadc +qcom-vadc-common +qcom-wled +qcom_glink +qcom_glink_rpm +qcom_spmi-regulator +qcserial +qed +qede +qedf +qedi +qedr +qemu_fw_cfg +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1b0004 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ramoops +rapl +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +ray_cs +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcuperf +rdc321x-southbridge +rdma_cm +rdma_rxe +rdma_ucm +rdmavt +rds +rds_rdma +rds_tcp +realtek +realtek-smi +redboot +redrat3 +reed_solomon +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +repaper +reset-ti-syscon +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rocker +rocket +rohm_bu21023 +roles +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sd3078 +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wilco-ec +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +sample-trace-array +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sb1000 +sb_edac +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbs-charger +sbs-manager +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +scif +scif_bus +scr24x_cs +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-xenon-driver +sdhci_f_sdh30 +sdio_uart +sdricoh_cs +seco-cec +seed +sensorhub +serial_cs +serial_ir +serio_raw +sermouse +serpent-avx-x86_64 +serpent-avx2 +serpent-sse2-x86_64 +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sha1-ssse3 +sha256-ssse3 +sha3_generic +sha512-ssse3 +shark2 +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +silead +sim710 +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis-agp +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +siw +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skd +skfp +skge +skx_edac +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +sl811_cs +slcan +slg51000-regulator +slicoss +slim-qcom-ctrl +slimbus +slip +slram +sm3_generic +sm4_generic +sm501 +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc91c92_cs +smc_diag +smiapp +smiapp-pll +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-acp3x-i2s +snd-acp3x-pcm-dma +snd-acp3x-pdm-dma +snd-acp3x-rn +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdmi-lpe-audio +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pci-acp3x +snd-pcm +snd-pcm-dmaengine +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rn-pci-acp3x +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-skl_nau88l25_max98357a +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-acp-rt5682-mach +snd-soc-acpi +snd-soc-acpi-intel-match +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-cml_rt1011_rt5682 +snd-soc-core +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-dmic +snd-soc-ehl-rt5660 +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdac-hda +snd-soc-hdac-hdmi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-inno-rk3036 +snd-soc-kbl_da7219_max98357a +snd-soc-kbl_da7219_max98927 +snd-soc-kbl_rt5660 +snd-soc-kbl_rt5663_max98927 +snd-soc-kbl_rt5663_rt5514_max98927 +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-nau8825 +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rk3328 +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt1011 +snd-soc-rt1015 +snd-soc-rt1308-sdw +snd-soc-rt286 +snd-soc-rt298 +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5651 +snd-soc-rt5660 +snd-soc-rt5663 +snd-soc-rt5670 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rt5682 +snd-soc-rt5682-i2c +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-skl_hda_dsp +snd-soc-skl_nau88l25_ssm4567 +snd-soc-skl_rt286 +snd-soc-sof_da7219_max98373 +snd-soc-sof_rt5682 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-atom-hifi2-platform +snd-soc-sst-bdw-rt5650-mach +snd-soc-sst-bdw-rt5677-mach +snd-soc-sst-broadwell +snd-soc-sst-bxt-da7219_max98357a +snd-soc-sst-bxt-rt298 +snd-soc-sst-byt-cht-cx2072x +snd-soc-sst-byt-cht-da7213 +snd-soc-sst-byt-cht-es8316 +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-bytcr-rt5651 +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-nau8824 +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-firmware +snd-soc-sst-glk-rt5682_max98357a +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-sof-pcm512x +snd-soc-sst-sof-wm8804 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-acpi +snd-sof-intel-byt +snd-sof-intel-hda +snd-sof-intel-hda-common +snd-sof-intel-ipc +snd-sof-pci +snd-sof-xtensa-dsp +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +snd_xen_front +snic +snps_udc_core +soc_button_array +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +soundwire-bus +soundwire-cadence +soundwire-intel +soundwire-qcom +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedstep-lib +speedtch +spi-altera +spi-amd +spi-axi-spi-engine +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-gpio +spi-lm70llp +spi-loopback-test +spi-mux +spi-mxic +spi-nor +spi-nxp-fspi +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-sifive +spi-slave-system-control +spi-slave-time +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spl +spmi +sprd_serial +sps30 +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmmac +stmmac-pci +stmmac-platform +stowaway +stp +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +stx104 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surface3-wmi +surface3_button +surface3_power +surface3_spi +surfacepro3_button +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +system76_acpi +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tef6862 +tehuti +teranetics +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thermal-generic-adc +thinkpad_acpi +thmc50 +ths7303 +ths8200 +thunder_bgx +thunder_xcv +thunderbolt +thunderbolt-net +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads7950 +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-lmu +ti-tlc4541 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +tlan +tlclk +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_key_parser +tpm_nsc +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +tqmx86_wdt +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish-avx-x86_64 +twofish-x86_64 +twofish-x86_64-3way +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +uPD98402 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +ucsi_acpi +ucsi_ccg +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_hv_generic +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uv_mmtimer +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-mem2mem +v4l2-tpg +vboxguest +vboxsf +vboxvideo +vcan +vcnl3020 +vcnl4000 +vcnl4035 +vdpa +vdpa_sim +veml6030 +veml6070 +ves1820 +ves1x93 +veth +vfio_mdev +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-camera +via-cputemp +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +vicodec +video +video-i2c +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videodev +vim2m +vimc +viperboard +viperboard_adc +virt-dma +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_mem +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +visorbus +visorhba +visorinput +visornic +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vmd +vme_ca91cx42 +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvrdma +vmw_pvscsi +vmw_vmci +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vop +vop_bus +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcd934x +wcn36xx +wd719x +wdat_wdt +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wilco-charger +wilco_ec +wilco_ec_debugfs +wilco_ec_events +wilco_ec_telem +wimax +winbond-840 +winbond-cir +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wmi +wmi-bmof +wp512 +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xen-blkback +xen-evtchn +xen-fbfront +xen-front-pgdir-shbuf +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xenfs +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgene-hwmon +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xiaomi-wmi +xilinx-pr-decoupler +xilinx-spi +xilinx-xadc +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xlnx_vcu +xor +xp +xpad +xpc +xpnet +xr_usb_serial_common +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z3fold +zatm +zaurus +zavl +zcommon +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zfs +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zlua +znvpair +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zunicode +zx-tdm --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/generic.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/generic.retpoline @@ -0,0 +1 @@ +# retpoline v1.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/lowlatency +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/lowlatency @@ -0,0 +1,24520 @@ +EXPORT_SYMBOL arch/x86/crypto/blake2s-x86_64 0x23aa18fe blake2s_compress_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/x86/crypto/chacha-x86_64 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/x86/crypto/curve25519-x86_64 0x3c74a43e curve25519_base_arch +EXPORT_SYMBOL arch/x86/crypto/curve25519-x86_64 0xc832c670 curve25519_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0x7c904efe poly1305_init_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xd9ec23eb poly1305_update_arch +EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xfaeb41b2 poly1305_final_arch +EXPORT_SYMBOL arch/x86/kvm/kvm 0x4ff7c522 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x36a0eea5 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0x585f61fc crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0x8964105b crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0x8c26d2ab crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0x8f2bfcfb crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0xdb8bb32b crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/sha3_generic 0x3b6eb417 crypto_sha3_final +EXPORT_SYMBOL crypto/sha3_generic 0xbf888019 crypto_sha3_init +EXPORT_SYMBOL crypto/sha3_generic 0xed263b42 crypto_sha3_update +EXPORT_SYMBOL crypto/sm3_generic 0x7e1a88bb crypto_sm3_update +EXPORT_SYMBOL crypto/sm3_generic 0x9df26755 crypto_sm3_finup +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit/nfit 0xceec93be to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x349abe00 acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0x3619cd1a acpi_video_get_levels +EXPORT_SYMBOL drivers/acpi/video 0x6de7f7ff acpi_video_get_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0x7a45377b acpi_video_unregister +EXPORT_SYMBOL drivers/acpi/video 0x7cc484a5 acpi_video_handles_brightness_key_presses +EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x1ae31510 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x7b780b87 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xf94c17da bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xfa7faa1d bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x071afa95 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5ee3df1c pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x856a21a8 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x8bd067a4 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9195307d pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x91a9260b pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x9a95826c paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xb0bf75cd pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc2cde180 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd21640e9 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd725b335 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xecee588f pi_init +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xa1535df3 btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xffb1fa51 rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x1e6b4328 mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa678b53a ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xcf7fd9e6 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe45fe39d ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfc2fa39b ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/nvram 0x3ef38dc9 arch_nvram_ops +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2b1fbdd7 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x55e9a1ea st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa77a5a88 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xae4a5056 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x4b1baaee xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x5a1b2e60 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x9f7d6abb xillybus_endpoint_remove +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x52111ae7 atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x5d63c8ba atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xcb32f76a atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/ccp/ccp 0x47d3c97f psp_check_tee_status +EXPORT_SYMBOL drivers/crypto/ccp/ccp 0xaa04056c psp_tee_process_cmd +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bc6094c fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1b8f3b47 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1d511c30 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x24fbf1ff fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3660d3e1 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a771e39 fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x42b436bf fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x468c4636 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6dc50487 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x78220b55 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a0ddb2d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7d4a57cf fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x80e55755 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x910cba41 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x91a1d66c fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x91e7a8c7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e81bbf5 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa035f1e0 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa52a2b02 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa724788a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf3e9b46 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7068490 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7b89d62 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xccf29d53 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xda38d775 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdff81dd9 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe4e4d1ca fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf90c1849 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfe658472 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00473aec drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00cf87ea drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x030c0dbc drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c63897 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03cb73cc drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0406cbb4 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04b43165 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x053cfeb2 drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0579aa45 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x059e8318 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05a3cd13 drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0x060ca982 drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07a37b15 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb449a drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x089f55d5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08c36efa drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a13fbaf drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b8b250b drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1018c0fe drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10622ab2 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10ac58ec drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x115a35ed drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x117a83d1 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x119cd174 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11abc075 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b9567a drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127a8c6b drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c0f182 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13c894f1 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f4bd62 drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1586d8ae drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x159cdf2f drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1616dfc5 drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16e3ae8b drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16eb0191 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17e0cfcf drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18632f2d drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19137f33 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a9093b0 drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1afaf015 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b286ab6 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ccd2b18 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d02f7c7 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d9dabff drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7f2831 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fc4b7c9 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20cf6f93 drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e9b253 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21d541eb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x226eb8c6 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x230b70e7 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a60ae2 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23cd1a0a drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23e51cde drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x242d6577 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25147f48 drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2598e32a drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25f8e451 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26561789 drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27640057 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2930c67b drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29567b67 devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2addbf58 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ae0bfea drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b0f6618 drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bb7ada0 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c17b750 drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c5653c7 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dd70103 drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e924e35 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0d2097 drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f12b574 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f61b0ef drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f6d8f3a drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30405699 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3254af5d drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3286f0e0 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x336805a1 drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x340c4d48 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3451356e drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x348b1e01 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34b7f303 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x355519ec drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3619e9ac drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389b02a1 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a5cbbae drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aec1bec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b3dccac drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3baf9f1d drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c1586ee drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c22a4d8 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c7b869b drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cb117bb drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d001ecc drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d572523 drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d63c938 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e50b109 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40194b9e drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42ad7d9e drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42f27b12 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x462781d8 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x475d534f drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48518325 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4870f929 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48b1d37e drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48e81398 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x495e52f7 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49e4d35e drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a748f49 drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c31d04f drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cdb58bc drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ce505a7 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cfb8166 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e7c4469 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ec58b9f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4efb2c87 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e9c9ae drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x517b50fc drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51fc4483 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53fd5f63 drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x551b3350 drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5542443b drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x575a8531 drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5857baab drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58c38f02 drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ee70b2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a199381 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ab64180 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b9b5740 drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c093daf drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c48bfad drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e3df7bf drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f096225 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f4b4e14 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f8ead4a drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60f47ad3 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6257a022 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x632b539a drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637fcf45 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6458ee44 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64604b93 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e5b687 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65275597 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6615be00 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6649650f drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66fe78d6 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6725169d __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c5766f drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6973526a drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x698a4b76 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69a4cd87 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aeae4a6 drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c01a2e9 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d938c0c drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6effea6b drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f55928d drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fa8f535 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fcfd53d drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701959e0 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70234dfb drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e5328b drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x712ef8c3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72936e28 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72a256c4 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x742b2030 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74532a9f drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7496626d drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b14b4c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74c8d102 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75773d7f drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77af6a85 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785a7bdc drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78da642f drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a2eb5cf drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a9cfedf drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4fd6eb drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7badf3ea drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7be303f1 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c541c83 drm_agp_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c6ba265 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d727ef5 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7da30a2c drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e7e855d drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ef0fe5d drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff89172 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff93d90 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80049c32 drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81954433 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x820b1541 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x821cba4e drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x831a1815 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83432d1a drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842dd90c drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x849c37eb drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8523f21d drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85b03130 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87a71113 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x881f48c2 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x888da670 drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88dcb742 drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c94ae2 drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89cb1da5 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b4c6f32 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b5a2f2b drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bc2eb4d drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f0b6d33 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc50cb7 __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9094a8bf drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90c3969f drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9112efb2 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x911d8bcb drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9132f1f8 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x928f15f7 drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94179e2b drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9431f2b3 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94c81c80 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9581a9ed drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9623a1f4 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96d725a0 drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97f1f8d4 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a05e3c5 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a6f6fd6 drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b221da3 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bd65830 drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9c0b06 drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d5d95c0 drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d7819bb drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da5fba5 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f11f741 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fcd6579 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fed7708 drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0f1a0ae drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1a5753e drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1d8f11f drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa25faefb drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa42568d5 drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4e7dc51 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4fb7874 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa51bce6b drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa61febec drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa662266f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa715550f drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa744fdcf drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa74cfbf7 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa783fc23 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7da6529 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa011072 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa481173 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa7a896c drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa8e5056 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaabe6cca drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab9ed2e3 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac3f189e drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad306b1d drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad35fd48 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad542d39 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadd27c0d drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadd97c76 drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf400dfc drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4dc6a8 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb01d1381 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1659391 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb290cacd drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb299cb5a drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3345461 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3780f16 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb447c645 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4657156 drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4698010 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb49e09dc drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4c88cfa drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb671e99e drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb68ef3aa drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb750fb22 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7a5cebe drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7d5b5cc drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9b9c1a8 __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9df9516 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9e8c9dd drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba641a39 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaa5aa90 drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaf2aedf drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb4831f3 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc2ff69e drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0f2408 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf487a9d drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf9cb9ae drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0bd2bf5 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0fc4281 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc12194c9 drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2025f8b drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc26ed9d0 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc37fa12a drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3896bfd drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3fefd61 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc447051b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6323239 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc684fa42 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc737835b drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc747391a drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8b78c8c drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8d583a7 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9e6a267 drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f14ecb __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca9dbae5 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcad12b3d drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd18fcbe drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdca2ad0 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce593e56 drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xceca829c drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcee6beb2 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf30c911 drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf4b335f drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd17b4665 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2fa01a4 drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd33e2f0e drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3d3de57 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42ae03a drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5a737a3 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d2e6f8 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5dc25c1 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd68e7aa5 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd69cf8b8 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd82e42c4 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd93533f5 drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda20f178 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda55c76a drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda82c181 drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbfdee81 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc3ce598 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd66fd36 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeb7ae37 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded52f76 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf045ed2 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf41bddc drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf5a1c0c drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe033300d drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe051e20f drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0bc28cb drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe108fdb9 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe116d3a4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe25fc05c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe37e2a78 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a8835c drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe461fad9 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e89407 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe69b508b drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f8826e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeabd9360 drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeadc6745 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb6f2f04 drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebb1bfe3 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec5afcea drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeca777b5 drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed336bdc drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeddb1d41 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef6bc781 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefaab192 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0555dbe drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf24cd886 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2962f35 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f94871 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4cab7b3 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5763739 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf618cb81 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf72e805a drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7b04cbf drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87ce956 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8933bd3 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf92501b6 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf97ac0bb drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9af0cf0 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9cdfd4b drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb0f13fa drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb8dd88d drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb968972 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbdba489 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc39877c drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd813619 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdb6f0ee drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe462195 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe55950e drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe26daa drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x001b2e95 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0071ba67 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00f88afc drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0426809f drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07e60637 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x089ccd13 drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dd3b29a drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0eb6999a drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f6246bd drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f7c29bc drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10728835 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10990fa8 drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x115c4e86 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11938cee drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12c0428c drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x137a0269 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163b3b9c drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19ca8fce drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a4b5cda drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1abc19f5 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1aee25ad drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d494673 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x205b0e68 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20c318d3 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21333e78 drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21483bbf drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x245dc7f5 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24b21f38 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25451f02 drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x254ed159 drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x255eedfd drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25abfbad drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2866608f drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28d84399 __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29617aad drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29e4cfde drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2adf968b drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b2dfc73 drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d14c647 drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d3a8ff8 drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2df54116 drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e2416cd drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31a22cc9 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32c47ef0 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37bed392 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38946409 drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c2d471d drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ebd44b0 drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f08596f drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41268ed5 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41c1d907 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x427a683a drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44b5d29e drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45bbbfc9 __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47824e36 drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x484e104f drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x492da9f2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cea1bd9 drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cf4338d drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d26336c drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50b43934 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5375ed27 __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5536e4a3 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x558973d3 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55f115c0 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x566ee41f drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5754a2b3 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x579bf384 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59e398a2 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59f49b54 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59f5ca71 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b01e5b1 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5bc5a0c5 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cdb2b95 devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5da04d9e drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6114664c drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63a1da84 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64f3ad32 drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x65da3148 drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x666051b1 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x673efda0 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6762514b drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x692db173 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6980c728 drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69d6338b drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ba97171 drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e5ed46b drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ee7ce08 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ffe3b1c __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72031ade drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79eeae23 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7bbfe0a2 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cc443ca drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7df5756f drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eaaf1ec drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f39482e drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x818de753 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x819f6e0d drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81a676c1 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8288d967 drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82d20dc1 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8360192c __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x848f8eb8 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85cbb87c drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x862b87b5 drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b2c0738 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bde8cc9 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d43a38b drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d7ce6d1 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e8570e9 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ea1b4c1 drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ec8211b drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f3ba334 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91a47c31 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9217f4d9 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92dfc066 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9510817c drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x980eda36 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c05ee28 drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c80630d drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dd1ae7d drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ffe1923 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1022be7 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa20a11a6 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2548e2e drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa273c7a6 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa453d6e1 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4f01b04 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5b4afd2 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa67e1e14 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa890fb61 drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa917ddfb drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa926428c drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa83badd __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac30a607 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad634965 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad78fb84 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae171be2 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf90f639 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1c466f7 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5dc051b drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb660a996 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7aa0522 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8370eeb drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb84a4c79 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9303e25 __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba17f7dc drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbac7bcef drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb7583f5 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc7c06ae drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdd7f4be drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc03ef876 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1ae1750 drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1f6a059 devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2bb55f5 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2dac729 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3282d48 drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7329f44 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8ef0721 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc91c6c6a drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca694da2 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb0b3e6b drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcceedf12 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce3377da drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce57ad50 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfa5c642 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0fcfe80 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd18e38e5 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2c453e7 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd45674a2 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd48c4159 drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5476d72 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd646fd4f drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd814f136 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdaa7f56a drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcf7b235 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde41df3b drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0ef9c05 drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3ab690f drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe43928d2 drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe46db4a7 drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe529af96 drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe65e8c71 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6f85a12 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7f9af0a drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8ba59e2 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe92cabb4 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb7b4090 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed800e7d drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeeb3525b drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf229b826 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf44d31b9 drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf49ef67e drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf72358cc __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf844fd23 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8d3c545 drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8e2d71d drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9456b03 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9fb66d5 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb69a19f drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcca76de drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcf4a8b6 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdee341d __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdfd6426 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe7d3ee6 __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfedaa3f5 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x0911954f mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x0ee4c265 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x1456ba93 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x1ffb9c10 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x502979b3 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x508a9974 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x62e63ebc mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x754565fc mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7b9a7f5d mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x97215552 mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xa05c6936 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xa670e97e mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xb433cf93 mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbcf37729 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe5682d7a mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe774796b mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf4862ec0 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x812a7310 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x8c822618 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1126b657 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1bc144ad drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x299f73fb drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x35158b7d drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x37640f39 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x38aecc3c drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x471aeabc drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x48d2ed30 drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x4f22da89 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x53240681 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x57e872e0 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x7019d08a drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xa0529cd8 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xacbc944d drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb4fc8afb drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb77692b0 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc80467e1 drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc9644fb6 drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd7d228d8 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xef24db90 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf43fd68b drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x17f0a4e9 drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x225dca84 drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x28404d51 drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x4edd8c6a drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x501c589a drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x5eb10299 drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x604b8442 drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x61580fbd drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x63f010ff to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x6a198009 drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x770f5487 drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x801dcc20 drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x8418ae49 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x956cafd5 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb1661ddf drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb1dc450a drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb2bc8418 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xbaac09bb drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xe23cb51a drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf17bbca7 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf5e6c4aa drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0175446f ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x095c3266 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f2917b8 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14decf39 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c1b0585 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ef20229 ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1fba7f07 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21f55077 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2212817b ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22247367 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2981aa5b ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2993de9a ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a2aaf7b ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f9f62f4 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30a6f86e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x324cc893 ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x392a6b28 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ffcd26f ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x472d5ecc ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4be18d62 ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d488982 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d6f6a95 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4efb7e44 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50710e80 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x539fd551 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x546e5713 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x562673d1 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e96a2f5 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6038534e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71ba71e8 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71eaf90b ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72e18c45 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72f46450 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x74050f44 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7782d894 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cdc3121 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d55b768 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8fcbf361 ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91795bab ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9884e94b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ba4e79e ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bde3810 ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1b3723d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa39dc643 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa26fc02 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb00e066e ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb05738e2 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb476d989 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb53a29df ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb7dbd0a7 ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc55419bd ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd06cb4f9 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd0d244f1 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd28e82bd ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9897478 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdfe8a3c1 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe08c3a2f ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe158a217 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9a5d33c ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefd7e97a ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0ccfc47 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf610db75 ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbf24c08 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/vmwgfx/vmwgfx 0x446c961c ttm_base_object_noref_lookup +EXPORT_SYMBOL drivers/hid/hid 0x0e8b6345 hid_bus_type +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x034bcfa1 ishtp_cl_get_tx_free_rings +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x07bdce74 ishtp_put_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x0a38161f ishtp_send_suspend +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x1272113d ishtp_get_client_data +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x187348b2 ishtp_cl_disconnect +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x3e22e78d ishtp_reset_handler +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x40f651bc ishtp_trace_callback +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x448da610 ishtp_cl_rx_get_rb +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x4d523fa7 ishtp_get_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x59b622ad ishtp_cl_driver_register +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x5f9b0501 ishtp_get_fw_client_id +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x6734fd1c ishtp_cl_driver_unregister +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x7e228ab6 ishtp_set_connection_state +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x87fd2555 ishtp_cl_unlink +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x8a0d534f ishtp_get_drvdata +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x8a5ea511 ishtp_recv +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x8db61ee1 ishtp_cl_flush_queues +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x90453ba7 ishtp_set_tx_ring_size +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x91e7aba6 ishtp_cl_send +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x963fb73e ishtp_cl_io_rb_recycle +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x96ef84dd ishtp_dev_to_cl_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0x9f3fe26f ishtp_start +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa3652aad ishtp_cl_link +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa5ac3096 ishtp_send_resume +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa6b6f023 ishtp_set_drvdata +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa984cd8a ishtp_device_init +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa9999f5d ishtp_get_pci_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xa9ca67b2 ishtp_reset_compl_handler +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xafd7ff51 ishtp_cl_get_tx_free_buffer_size +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xb4b1f368 ishtp_cl_connect +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xbee536a6 ishtp_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xc16b6250 ishtp_register_event_cb +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xc264b0b3 ishtp_cl_set_fw_client_id +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xc54868c9 ish_hw_reset +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xd2171e69 ishtp_cl_free +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xd51e2147 ishtp_cl_allocate +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xd765f1ea ishtp_set_client_data +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xdb03c555 ishtp_get_ishtp_device +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xe56d2166 ishtp_fw_cl_get_client +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xf0896cfb ishtp_fw_cl_by_uuid +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xf7d90613 ishtp_cl_tx_empty +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xfd6a314d ishtp_bus_remove_all_clients +EXPORT_SYMBOL drivers/hid/intel-ish-hid/intel-ishtp 0xff2c4b24 ishtp_set_rx_ring_size +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xcd1a89fd vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xcdc8d373 vmbus_sendpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xf483e076 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x1d23035d i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7cc9491a i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xa89c3d79 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x4f6a2cd4 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb436738a i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x497a39ec amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x8949b49b bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xcf7466dc bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xd679e030 bma400_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x3230a319 kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x7e365a1a kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x7fd42e33 kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x07260033 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1d5f3878 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4ba6109a mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5247daf2 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x54ee0c39 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5d4c4aa2 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x634aecd7 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x80a9e7ed mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x86dafda1 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x919c684c mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9f91dab4 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc00600ab mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcb743dd3 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcc4b8ed4 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcf954861 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xde2c0f24 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x5bc0d214 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xc23a4000 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xcfd619f3 st_accel_get_settings +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x482f81c9 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xe4cf3ada iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x2635ccd9 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xe2fa1eb5 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xf3b6fea6 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0x142ca306 bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x02f83f61 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x10ad0d5b hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x26b20ada hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2f5f5362 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x85a954ad hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x992e9a4e hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9bc939be hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xba22e8f4 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc631964c hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf0744cde hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x1e44022d hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5b531919 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6ce0078e hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xeec37424 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x10beedf9 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1ebd7bc7 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x3acf24a9 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x7e11e5f2 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x7fe14a86 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa5f7b2c2 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xa744b256 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbe6cc304 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd2a58b25 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5739c846 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8f9d927f ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xab67205c ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb096b21b ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd10a45d0 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x07d1f739 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x36d0f623 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb109e664 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1016d6d7 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1a3665e5 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x314095de st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3383177f st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x33eb7c2d st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4c8fdc72 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x516f6fb9 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5fa6437c st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x77868333 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x847a145f st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x93f8b221 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa1c15ac4 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xad26866b st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcd13ea50 st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd05f50d9 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdaa21639 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdf59b56f st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf0a82709 st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x2ee2113e st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xd9bb9060 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x6c0266b5 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x6c618fce mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x8c67539b mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xa959e898 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xb0fa4947 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xcee4015f st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xa7407d9d hts221_pm_ops +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xf7a2fe08 hts221_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xadc70c57 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xffffbf5a adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0x301e4d09 bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0x452f846e fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x28b6b7d1 st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0xeef187f1 st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/industrialio 0x0ab4d001 iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0x13a64955 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x16e6b966 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2165b104 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x25179f31 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x31d9f6aa iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x42a1f1a9 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0x5e55beee iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x6649fd9c __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x6d964f2c iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x72b676fa iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x7d18e81f iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x8426b53f iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x902ba723 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x9bd9ac0c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xa68b9a6a iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0xaf2fcdea iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb3f07d16 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb7876b92 iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0xc9250a7d iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xd336a8c8 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe2b470e9 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xef2e4328 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0xf02e8be0 __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0x3d820555 iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x44ade4b2 iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xa00d3752 iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xa84d11ab iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xcf045620 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x46b85db4 iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x7adedbc2 iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x8be7ea36 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xbfe8c545 iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xa33f052e iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xc6295498 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x082d4893 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xf8175a9c st_uvis25_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x213ab6b0 bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x418b7082 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x432a8536 bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x841ea0a8 bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x2647e29e hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x62307806 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x864f0788 hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xac91ede8 hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x28dd94b1 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x38ad2339 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xf7aebfad st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x2bc2cbd2 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x2d341f83 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xb476771f bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xc7b2c2e1 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x2b5eb671 ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xf93e28b7 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x7341e6ae st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc9b233bd st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xe9a69ba6 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x07f2624c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x151a6dc4 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x21c94151 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x353c712b ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3a3801d7 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41bf0656 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x44cb729a ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x57c8019b ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5c95f71a ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x68b061b9 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7ce1ddbc ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x80d049e2 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb09c52ef cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xba1ad469 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfc23317c ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xff2e47c7 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x005b204d ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00f42d97 ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0114ae02 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01bfaa45 rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0265daf8 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x031db11a rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05717d47 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0606a439 ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x071f247b ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07995b83 ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08636a9d rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08add97b ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a96b9f9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a9f92e5 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b3ff95a ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c86f5cb ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cc576d1 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d0d9dab ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1113df6a rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x137d5eda rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13ae3ecc rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x145c28b8 rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1496f2c1 ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14ded219 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17c4d7ec ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19c120f8 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a38d4fc __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1abe1545 ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1aee01cf ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b878b7c ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d1cd2a4 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x200121fe rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22921d79 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23002cbf ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x242a14e3 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x243a9ce0 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x285ffcb6 rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28ca0c56 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a48b6c2 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b908d4f rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2bfc66f4 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c8bbe07 rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2dd8adfe ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ebcab3d ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f7843c3 ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3495bc45 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34aecd46 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35d86fbe rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37ac0919 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37c394c5 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c9f579a ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d3082b5 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d3f7d50 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d4e6c2d rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e3155e0 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x415bba2a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x430ebc3b ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439ce33c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x443fe31c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44a6a678 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44c4e1ae rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46435893 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49385b86 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x499ee457 ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a071035 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a62cd5f ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c308248 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d484c6a ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d8a577f ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x505fd896 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x522da4e0 ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5272fbec ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x546ab6dc ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5555c0fb rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55abd745 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x574b8936 rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57c56e06 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x598165f5 ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a2827a2 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bf5c29f rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dd0d25a rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e08f8b7 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e63e3a5 ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ee5498f ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6013a81e rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64d31cde ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65f26d6e ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x662b7503 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b653853 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c5f0fe8 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d3e424d __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e14f275 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ed113b4 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71db137a ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7368cc01 rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a3fde4d rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b8ec393 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cbeb92f ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d947626 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f707d8b rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8018c027 ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80746bd2 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x811d2841 ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8418ef41 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x841ea921 __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x868e21ef ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x890019cc rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b7a5a54 ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8bb74e32 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91f2f069 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95c885d0 ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x965dc221 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9714bf1b rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ada311f ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b75a9d9 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c5fc154 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cf080ee rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa08ab8a8 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1a28a76 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1d38f50 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa31b0eda roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3e6d084 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3fe6d53 rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa416836f ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa49a78df rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa595bc7b ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6e51263 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6f6735a rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa89f89d9 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9c95714 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa333a77 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab62c38f ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac65e61f rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadbd8f13 rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaef4c0b5 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0425af0 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5590378 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb568600e ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb698dd06 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7d27f29 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba6fd77a rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb2911b7 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc4be73f rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdb35bc0 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdc5be49 rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbeb19699 ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2c6c15d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc36db704 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc526c6a0 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcca17c31 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd24cd00 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd09e993c ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd13ed925 __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd19ba892 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1df8409 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd353c728 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3c51358 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd42d48d4 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd45ab98e ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5dfd550 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5fc5618 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd920d808 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddcd89f2 ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdde60177 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe085078f ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0e236be rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe123b330 ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe51141e1 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8ff4f4c ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe982a21d rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec6a7cce rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecae9c2c ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed573daa ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee982706 __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0f0234a rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1b8710a ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3d91759 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf522bb4d ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf59eedce ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf688f7e5 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7f0fda5 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf875e4e2 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8ca97c1 ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb0ebf74 rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff8fa96e ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffa85acf ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0397a699 ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07ffcbec uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0d85c9f0 uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2e2d9ff3 ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x32415808 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x37e56212 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3a991883 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4337c4e9 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x449502b9 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x47b180be uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x51b24c9b _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5ce0aa55 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x67743f0e uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7858d68b uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7ce26358 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8468451c ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8a225765 ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x99439102 _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xaa859024 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc9e2781a flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd5212ea2 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd8b3eb88 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdac7735b flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xddaa6326 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe1a0ba02 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe21e887b ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe28d12a5 uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf8bf2f2d ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2b28dd18 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2b3c1241 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7cba6c02 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x92f1e2af iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa73a9b82 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb080e999 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc5d7cc94 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdde1c132 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x022e46c3 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13fb777a rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x14678141 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a5c2501 __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3c7fb3b4 __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x40c26bf6 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x441ca902 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4f219237 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50de2bc8 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x676e784c rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6900ee7e rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6acdde14 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6f066780 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79f0377a rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7c22fb63 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7c6666de rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7dc3492e rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85cafd07 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x974207ae rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb607921b rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb810e839 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb933c5a8 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbecb21c0 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcc9e218a rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdd63aab8 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2c50320 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf4893ad7 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf49c491c rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe20ba47 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x0e38277d rvt_unregister_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x0e385842 ib_rvt_state_ops +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x2c97c8e1 rvt_rkey_ok +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x2d3924ac rvt_send_complete +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x3072ce62 rvt_error_qp +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x31dfd3ee rvt_copy_sge +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x33ff9b8c rvt_del_timers_sync +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x437fdee3 rvt_qp_iter +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x4824297c rvt_rc_rnr_retry +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x61c49863 rvt_ruc_loopback +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x630f4df8 rvt_rc_error +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x70b55cb9 rvt_qp_iter_init +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x71719ffd rvt_add_rnr_timer +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7316f2db rvt_register_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x76e34627 rvt_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x79457602 rvt_qp_iter_next +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7cb4992e rvt_alloc_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x7cc1a0b9 rvt_comm_est +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x8561bea0 rvt_get_credit +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x9169d678 rvt_cq_enter +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x9530820c rvt_lkey_ok +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x980e85cc rvt_init_port +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x9a016569 rvt_check_ah +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x9adba8c3 rvt_invalidate_rkey +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0x9d8643b3 rvt_dealloc_device +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xab9da784 rvt_stop_rc_timers +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xc8bd2694 rvt_restart_sge +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xd2212f27 rvt_add_retry_timer_ext +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xe8955348 rvt_compute_aeth +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xe9cf3e43 rvt_rnr_tbl_to_usec +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xef6f8160 rvt_get_rwqe +EXPORT_SYMBOL drivers/infiniband/sw/rdmavt/rdmavt 0xf6c9d78c rvt_mcast_find +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x59abe6ba rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x5bcdc1b2 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xa3da5c24 rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xac33f068 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xae900050 rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xef0e5ace rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x15bb282f rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x1f5abad0 rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x97e56fcb rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xeb8b5379 rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x0b10ad2e rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x604307aa rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x632e0344 rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x92637729 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xbeb96dd8 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xc1372f75 rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/input/gameport/gameport 0x41010182 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x89d1d8c7 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd27f96f6 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd4680297 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd46df9c5 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe1eee3c2 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe52b9b42 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe56ac895 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe77718ae gameport_close +EXPORT_SYMBOL drivers/input/input-polldev 0x0adad88e input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x21ff06b1 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x27aa8057 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x5253a67b input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x89bbbe51 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x142a26ef iforce_init_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x8685782d iforce_process_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xf348d3e4 iforce_send_packet +EXPORT_SYMBOL drivers/input/matrix-keymap 0x46e64d25 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x07a6ce7e ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x76f553c5 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf6cf0084 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xf3cc7496 cma3000_init +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xd195054e rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x026731f3 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2ed399ba sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x327ddb37 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5e17b812 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb4821c14 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x656565f6 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd17be058 ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x409c11e7 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x56f9590f amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x5828b811 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x7157475f amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0x7ce87f5a amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd/iommu_v2 0xb89b8a68 amd_iommu_free_device +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x15c33f04 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2f184e56 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x30d0e1c0 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8adadcea attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d2c2a capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x066adabb mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x25795479 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc2b971cd mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd9f312a9 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x51ec5569 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe3eb2916 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x07109fb4 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12510d40 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x166530c3 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1dc1527e bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x25768087 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x276f8611 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fe402f dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x524b4d64 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x57a98093 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5a694abf mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5c8b030a recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x659bee8c mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x81652b7a get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x82a81a07 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8c16e763 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d99ba9b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x919ace18 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9de25753 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc8a6d16b mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc9a0ff9d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd892ac97 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdcb830cb mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf67e1162 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x0aff0bf6 ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xa67423df ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/md/dm-log 0x2355e171 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x2b703004 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x2df3cbc2 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xcbda9d3f dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07ef12dc dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1f1aef18 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6747e06c dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6fe7e108 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x76192eaf dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9598bc74 dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0x5000d699 r5c_journal_mode_set +EXPORT_SYMBOL drivers/md/raid456 0xb2500e04 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x03f010a5 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1e9fd0fb flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x333a5dcb flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4f9b0fff flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x61c7eba1 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8edf0a25 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8ff269cb flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x956c592a flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9cbf5349 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb0a85e1f flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb5b446de flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf1ba6b3d flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6ab5c00 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/cx2341x 0x256be3bc cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x48434fad cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x73b84449 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7531f864 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x46216a8c cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xdcad4665 tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x71fc3bba vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0xe8d2b4de vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x2be0894f vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x44f6b934 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x460b2e9d vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x6a238b2c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x9479d307 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xddaee448 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0x9356952b vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09403c7a dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10aebad7 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1891700d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19c719a8 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b8b9608 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x27cd0825 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2dc07ba8 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f5cdf80 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3feecaf6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3a00b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5b6235b3 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6181aec0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67480317 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7170ddcf dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x754c4921 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7751ad77 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b0d51ce dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7c8bdf69 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f6214e1 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80985cc4 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x81cd75ec dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8da6fb50 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91a6794b dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3352dd2 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc1a3dc0a dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3f679f9 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcbdc434a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd71ec97e dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd79b9d0a dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdcf60586 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe138ce6b dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe379bf8c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebbc2d9b dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf07bf519 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf1f9259f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf9586f53 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb09f39a dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb9a826f dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc6380e5 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfebb57d3 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x6233eb3f ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x26443c21 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x026f0794 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x063c55bf au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x151b7267 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x160e71ee au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2db5a45d au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3dd4e168 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x769700e7 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf2cd4d20 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf9208ab6 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x85605118 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x527c4042 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xc952702f cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x1c7a5715 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xf01f71da cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2932ecb7 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf44f95b1 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xed0e280b cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xd1490f88 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6a2b4ff0 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdbbd4bad cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xa9e1cf02 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x3e9fc7f0 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xedb48406 cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0x94090e0f cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0f19fe36 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2e729ebd dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6a24573b dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x792785f7 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9cad986e dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1795255a dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x322ecc25 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3ac38cfa dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4cc7cb1a dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x70667a18 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9364d2dc dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbf136a00 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc65e7863 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd2c75420 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe2dc020c dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe6fa6609 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe7959e8a dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe84991c4 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xed3187dd dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xee2b3b30 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x38a8dc80 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x19fdd1d8 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x208caeba dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x553e7862 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5937d131 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x71048628 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf3a58794 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x1bd15fba dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2147797a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb393dc45 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc0580af5 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x76d10774 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xcd419bee dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x0fb49b1e dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x2c5740d4 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x3242336a dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x346f429e dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x62de6399 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x8037d54d dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x89eb7e7e dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x92e78f09 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x9d7a8e50 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xb5cf8914 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xd0c9a967 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xe710827f dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xf3894fd7 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8385d90f dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8ba4443c dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb0cceffc dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb14149f9 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc43d3f28 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x0fa57131 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9ab8a407 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x1405266d drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x0c3da682 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xf91a485d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x182434f0 dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xb3ea1098 dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xd9b25b40 dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x55de38c2 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x9739ff4f helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xf23a53d8 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x5c9c7404 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xb4b582b1 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xe5cb1421 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xe5a148ad isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x57aff791 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xcadb0ffd ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xe8205caf l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x47f8c73b lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xb886dc3e lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x77c882d7 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x7f14a9eb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0x5439fc93 lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xb748b65b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xc82f7dc3 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0xf115b913 lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x3783e065 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xfa5053cc lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x50dbe91e lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x1fc61ab5 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xce2a41d3 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x3a507114 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x4262a430 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xd1b998ed mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x20b41045 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x38718ef8 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x52bae755 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xf4f4a388 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xde9d0512 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x24ba9962 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x01916410 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x519603cc s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xb3552377 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xce464794 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0xcb2e0188 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xedd643aa s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xfb04edb5 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x439e8c09 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xdc7f2730 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xf88172d0 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xd2645207 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x626b998e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x2f92b5e7 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x6becb244 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xc45a199e stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x3eb73915 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4e2946f4 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x8b143ffd stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x7b69a689 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x2ba278cf stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xed1f8c55 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x7488dfa9 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xcc28c5e7 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x63445ce8 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x1ab97194 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x85aaf7aa tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xbaabbf28 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xcfec215b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x874a7a94 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xbeb5c14f tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x0b2bb51d tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xde7db673 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x8c598db7 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xba7efd4e tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x0c876173 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x2d46b924 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x6262d84d zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0xb78251a7 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xed9af7cb zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xbda5ab35 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x9ad8bf6a zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x049e6f77 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5e511b5c flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x732713aa flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb381b2b0 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbf18c1bc flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe1ef0b60 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe6af2897 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x03af635f bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x42913fc7 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xba966787 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfcf7cf00 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4bd4006a bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x52662a24 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x9650decf bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0164937f dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2813189f dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3e892a74 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2a28154 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb99d5888 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd326e8c0 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xde216dc1 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdea600f8 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfcbed321 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x114b8591 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x34abcb4e cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6c3b1971 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7eb354b3 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9d43f09e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe42c5454 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x55e9d0ec altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x288e4545 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x2c8dbb9c cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4e319ec6 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5cc1dd02 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x69226a19 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa204f401 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbe09ab49 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x08c9de4b vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x63f25a46 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x195956b6 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9778e818 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xbffef542 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xd8c9cd35 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0730ba84 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1388e9f0 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x67d8f3b2 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x990e3bd6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xae922215 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdb4c72f0 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf0164009 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x01a758ed cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x055786aa cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x08bb28c4 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x138e141a cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x17728330 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1c517604 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x26ac7759 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2fcf828e cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x558693df cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5e5a5184 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7ded4e8e cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8b3220a4 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9db140f2 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa8a5d23c cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb7a646c2 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc62f1401 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd56ce9f1 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd87e2732 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc31ba21 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf5f7d067 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0xc50304a7 ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x11bf0376 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1d4b2a9e ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x269201d4 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x60436bc4 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6e9cd4e7 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7a9e2fcf ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7be7f21e ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x82790e07 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8eb3e5d0 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x991bb671 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9d586c91 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xae277692 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb76adfd6 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbc849498 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc4b8341b ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc6a5ef1a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe171a76c ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x019bdc9e saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x07e0cc74 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2912b1b4 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x34905442 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x581824fa saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x876b7e9c saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x97f60a46 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc6adbd08 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc8dfb085 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdc8757c2 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe5f6bbd2 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf24fa131 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x88d42720 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/radio/tea575x 0x35622c19 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x526cd957 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5ec6d5d8 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa8fbf0bf snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc8cbe93d snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd66337e8 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xfa71bd09 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/rc-core 0x25af7208 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/rc/rc-core 0xace48f22 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xf6f1247e fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x7f769917 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x2fc142b7 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x6a33035b fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb50990bc fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x9f69cb24 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x5e470f70 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x246e84b2 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x6f95944e mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xebc70f22 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x19ed0c55 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xcc36e9f0 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xd3751b86 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xc6a4ffd9 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x4037e52b xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x528253de xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x6e39e5f8 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe67bc521 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x23dc8a54 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x89715665 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8eca2c6d dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9c922e4b dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa31aa2cf dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa710c046 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb8b58fd9 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb72c7b4 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfbde0068 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0957d375 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5b6990bf dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x898fa632 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8b6f5395 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa56a0012 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd0ae85eb dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe9495820 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x30b4fe78 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0093316f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1599d9a0 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x370eae11 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3ea3169a dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6e160379 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9373f606 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcfbcf0d2 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdaecd82a dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf786368c dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0x29796c28 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xf3d32525 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x4deb4432 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x544ec368 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x07cfe0e7 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0d84c17c go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x25bbab54 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2c1994f4 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4af3febb go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5cbc9c75 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7d5b7607 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x96ad566e go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xde228044 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0e5018bd gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x450f730c gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6adcf4df gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x731100af gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7dd84b54 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8349c8de gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcc155035 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd3941d19 gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x49487a59 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc4ad85bf tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xed55ea6b tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x101b332a ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x3bdc32e0 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3f169213 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x42ab2108 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x833ea81a v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb3919203 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00220390 v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x014ea370 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02f829ed v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x074bebb9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1d518ce9 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x24788d78 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2609bb23 v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cbd9c6e v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x322685c2 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x353a7f7c v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3811d738 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ad7a4f3 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c80b99c v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3e69a18a v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x458eb32b v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50eb1207 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ab1b494 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5aef6ae5 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d0ef20d v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x646795d2 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x667a5bc0 __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75025223 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76ccb99e video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79e8cf38 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e726486 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ea9b755 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80709c95 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82ac9813 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x830d5c58 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x85aacc38 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87b52183 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8cfc0154 v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f5b354c v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9190e0e5 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92996699 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x939e568d video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x94505f0c v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95698fc9 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9597fffd v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96bb9eb4 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x975dbc56 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9834af28 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d68b94c v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e4a0092 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f74e130 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac184b8a video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xafad964e __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb4a99466 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9f589ae v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc14ee487 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8b65ac8 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc99e73b3 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9f4304c video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb47f46f __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce385836 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xceb5c641 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf10a390 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfcb244f v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd003ed2c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3c7b03d v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd700a421 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd91b7e99 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe10920cc v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xedd8d538 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf005c0b3 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf00f715c v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf21f3e81 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/memstick/core/memstick 0x166d8393 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x17ca1310 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2405ad92 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2fd39006 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x40e3d6dc memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6435757d memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x971df92e memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaad8f807 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xae50437c memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xba71ac31 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd335f968 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdb0f2521 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf304a619 memstick_next_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x060b33b1 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x167b63b8 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a34ba5f mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1be870fd mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2a7a3d4a mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3108f6ca mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x408c84f2 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4c325764 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53d51af9 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x581f0e2e mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65546b81 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6565d1ed mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6cb3f63d mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74b668eb mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75c56884 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7fd4892b mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81681bff mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x98629dde mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d009952 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2a07833 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadbccb33 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb83233b7 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb884c8e6 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb8f0523e mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc395c340 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xca4d1d41 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xce2e376c mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd13ccb46 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf96da5e2 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x320821e0 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x395f93f3 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3d3f59e5 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42051a3f mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x43abdf33 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x489c392e mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b02f94f mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4e379ef4 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x55996f49 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5670c92b mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5d43004f mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x61d986e9 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x63b35f7c mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a96f795 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x73d3b6c6 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x74769201 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f183bb6 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x84240ddc mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4ad0f77 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xafd27984 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcbb1c622 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc22cc7b mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd77fe9b1 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe8bd87e1 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec64922e mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xece18149 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7f3144f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/mfd/axp20x 0x11881961 axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/axp20x 0x11bf83b8 axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0x8de9920d axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x5b765686 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xa4264cfe dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xc88dfa97 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x2a89c1eb pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfac3ad38 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x003029f1 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1289be92 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x42c7856f mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7921001c mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7bb4d59f mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7fceb946 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb19b0195 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb37e9cbd mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd9838786 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe037855b mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe18fb345 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x6529352b wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xc41442e3 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xc8718c9f wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xdd1d0f03 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0xfa4b3706 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xfffb1c67 wm8994_irq_exit +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x0aeac19f ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xcbdb1d61 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5bafa76e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x8809c32c c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xfb142608 c2port_device_register +EXPORT_SYMBOL drivers/misc/mei/mei 0x1545cfd0 __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xa5bff49d __tracepoint_mei_pci_cfg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xb93bb2a0 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ffb277f tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x1ee5b4f1 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x33fbe1f9 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x36bb8525 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x5e1de350 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x6fe78cac tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7c037026 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x809538de tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x9451fe62 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9913c482 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xbb4aea5b tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xde735e85 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf1480661 tifm_free_adapter +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x40312e4a cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xa75aa954 cqhci_resume +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xba90da0f cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xe7b7b7e8 cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xfa91500c cqhci_deactivate +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x23dcac0b cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x48b56684 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5136301b cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x51b0cea6 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5b3c0ea8 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x928687b4 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcb80defe cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3bfd5425 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x585eab3f do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xef98c40c map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xfc60dbdf register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x5b61a15e mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x8331957c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x4174d874 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xacc3f5e8 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xe9d45e23 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xbedead63 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xdeda178a onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x71a8367d denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xfa9ae6be denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x00e471fa nand_monolithic_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x06bb3bc5 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x082e192c nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x225214a9 nand_write_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x5070c0fe nand_monolithic_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x53557e76 nand_scan_with_ids +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x5c265853 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x6e1a1512 nand_create_bbt +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x7541d700 nand_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xbb1d17d2 nand_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xbfcabc20 nand_get_set_features_notsupp +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xe59d2a92 nand_read_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb0cde2e2 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xdb05864f nand_calculate_ecc +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1f02ab97 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3b011d65 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x588a8f4b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7c4e458e alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x82007863 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x87dc48dd arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb27bf357 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcbca34b3 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe8e58c25 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xedd1dbfc arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x09b521c1 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x28cd0f9d com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5b4444c7 com20020_found +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x05a2a953 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0702d6f7 b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x08ccfdc0 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x102e37f7 b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x125aec3b b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1634bad1 b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1c408f17 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1f21244a b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x242d8e91 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2b501fc6 b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2c18d82e b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2d81ac82 b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2ef1f17c b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2ffc0c91 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x397cc381 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x46a31450 b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x49106a0e b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5a70941a b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6022e9f5 b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x659d64b7 b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x66edef34 b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6972d8c9 b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6aee2ff7 b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7060e288 b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7e34a16b b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x81ceca45 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8351528c b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x85d9a484 b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x93d09f9a b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9516c58d b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9649e14e b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa01ec0a5 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa58cf8b6 b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa7210289 b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb524a70e b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc0d30179 b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc4222b97 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe3eb3478 b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe6e7d6cc b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe88fec58 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfca81aa6 b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x010f4440 b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x18ea83d6 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x5075aea6 b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x530cf6c2 b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xd2eee328 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xe0d26fbc b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x3cea30c6 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xc8d11b26 lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0x01b483a5 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0xd1cde291 ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x359f028d ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x60fb4c97 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x8b0a9eed ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x6712da40 vsc73xx_probe +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xe5920e84 vsc73xx_remove +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2329bed0 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x588bab9f ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x590cc981 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5a0435fd ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x695b9ee7 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9f3d3cfb __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa47e7384 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd360f843 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe04b38d0 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe38fe24f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x1c1c495c cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x29a17785 cavium_ptp_get +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0xb385b4fc cavium_ptp_put +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x34eeb48a bgx_set_dmac_cam_filter +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x46cdf933 bgx_config_timestamping +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x539ca253 bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x60cd1f2f bgx_lmac_get_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6ca2152d bgx_lmac_set_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x716fd7f0 bgx_reset_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x72b238e4 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xbe654297 bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xd8ed0bcc bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xff987a02 bgx_set_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x13912e4b xcv_init_hw +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x4f739dc0 xcv_setup_link +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x22d381ba cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2a0a68d2 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2bf9dadb cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x422f2f77 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x53371ad7 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x583b1816 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x706c8b57 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7c88b8f4 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x802ebdd2 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8d587798 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9aa21451 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa29383ca t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc8c18067 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd435331a cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd9a8bd9c cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfa6bcc74 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0194abe2 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16776dea cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2456d9a3 cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3884343c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b494b3f cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40a8ee2f cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b5bfaed cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4bbf40f3 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4bc55ac2 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c99ba11 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4e99af34 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x558feb90 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5fd0ee06 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x69467922 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x72b04c22 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x751137ff cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x78a962f1 cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86883247 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8a415843 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x91e4f31f cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x945bc4ec cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9a6e7511 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9bb52218 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9c411ba0 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9dcbf32d cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3334d6b cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa4116fed cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8db193f cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xafe1c8de cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb34a25af cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8a10a4b cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbfbf041e cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc1c4ac37 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc543dfd0 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcce911b4 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4752221 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xded7d498 cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe0b46fa9 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe140e5a0 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe3d403a7 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe8c250b4 cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe8d35274 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1d3167a cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfce83f58 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfdc6a808 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe6a1b9b cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x0f8045d0 cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x2dec342f cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x4f07568f cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x8a91c9d5 cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x9e7491fb cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xd8dfcf33 cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xddf62c4f cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x135e9197 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x34766154 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd1ba33c4 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd7fdeacb vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd8de88b2 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf16e46f9 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x16c28246 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x97bf3a0c be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x3c0d2f02 i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x4e1abf6c i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x285a0bfd iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0xd1acf22c iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b71522 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17306b10 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b8234ae mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2326e2c5 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x233415ce mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2520a278 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27a48bef mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c35274c mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f7fad4e mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35ff3bbd mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d5bb2cd mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fd6043a mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50e62f34 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x586c5563 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5acdb106 mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f428e8d mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x631a0974 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c60ef4b mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ea91839 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79ff3620 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d3c1f15 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82eb589f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a9ec8da mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91289fea mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x943fc716 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96a73d1b mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b6a12aa get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f389b34 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ff65ccd mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1b73779 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa57ffddc mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa46ddf7 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc14cd19b mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc6656ee7 mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf45705e mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1c6786f mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd53678c5 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcd71d0b mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4b3ae6f mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe59028e0 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeaf34dfe mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedb4d855 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9bdcd04 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc68922a mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x048e2e16 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x055ca1d8 mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x083ccac4 mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ad1bd33 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ca40830 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10aa6f63 mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11af9f19 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x167544b5 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18752ff9 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a468ab8 mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c5b3ee4 mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cb86880 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x22929812 mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26d42e26 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27fa4d63 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x285ef5cd mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a8a16f6 mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2dca54e8 mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e59ab3a mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30c81a0d mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32705594 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x339048a8 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36f77ff4 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37651b47 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x378cf25a mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ab03645 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3acaac91 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b1db486 mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c00b167 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c666ca6 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e960390 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f0197e2 mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f4392c8 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9179e mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40160019 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x403c7cbe mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40aa7216 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x416538d9 mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41799a56 mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46150cf1 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49647a83 mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b45d67b mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4bc64b03 mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e43e1d7 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e4b92b9 mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54f3a909 mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5567496d mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5595ca4b mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5969d27e mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5bd1db5d mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62c66227 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65909fe0 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x675eb919 mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x695f013c mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a87bd31 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b8a4fca mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e6d030a mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7341e3da mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74d0d0c6 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab3c88b mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dc126f6 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8540ff4f mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86367438 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86671a1f mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x870f0516 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a25e22 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x881b8821 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bc43d9b mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d68a4df mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eeefaa0 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8fb8c4dd mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9109f552 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92ba40f7 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x946d7e1d mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9884865a mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98ab7cc6 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x991416a8 mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e5c168f mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa45dcdd5 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8e0525f mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab65263b mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaba31fdf mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xade29ccd mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae9ea383 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaeed8449 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafe7ff5d mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2ddcd32 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7147122 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbcfa0653 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfa2823e mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfcd1f9a mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0b8e60e mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc12a9dc5 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc653cb3f mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc83ab7c6 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc88e1109 mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc93222da mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc9455244 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc98be7e5 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcaea7d65 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcba904fa mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd270a882 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd41732f3 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5290fc8 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7d595c7 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe16ab06d mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe23350e3 mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe58c5a1e mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7f04859 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe86b7c7e mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9519338 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec627c6e mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec9fa274 mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed10037f mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef01bb32 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf120e368 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2da9925 mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf44d760f mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5d24ff7 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8eb4c68 mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa87f61d mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff49ab8f mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xffa80992 mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x95813b79 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x06b1b144 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e07f7f4 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1de06f11 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x50fec0f4 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x74076ae3 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7492e14f mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8fcadc1a mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa427fcf7 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb371f75a mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb434ec80 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb8ceb96e mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xca87965f mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdd1be033 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdfec4ba4 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe33b3873 mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4ca2656 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x5337cc12 mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x8bb55ef7 mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x7023313b mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xb637a988 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x00ed426e ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x021beda7 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x05d67335 ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x09b07a19 ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0d5ddb50 ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x11775d32 ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x129d35a5 ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1748bc86 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1cbac2b7 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1d8a2052 ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3376c691 ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x342c671d ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x370db52b ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3fd94d71 ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x400e69b1 ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x47bc4dab ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x520e4192 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5dfaa2df ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x606da55d ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x60edce68 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x63403e75 __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x641318eb __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7014e157 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x706d33dd ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7d2effe7 ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x82d31b44 ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8e2f8efc ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x96af0d21 ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x98fb4844 ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9e4977e0 ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9ec0c149 ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa2b981d4 ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa4eac0ca __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa6682589 ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xac38c527 ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaded35a0 ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb3ad2121 ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc3e1958a ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc5bf5c40 ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc6a4de52 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcc7c7809 ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcda20fe7 ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe4aeb837 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf661ebcc ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf7bd787c ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfa82539b ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x2397db90 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x797ca9f5 qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x82ace668 qed_get_rdma_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xf2f45f6e qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x29ecb6e0 qede_rdma_register_driver +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0xa8475bc3 qede_rdma_unregister_driver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1e5a6495 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5c4ed101 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x68762f5e hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd44a7fdb hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xed69f422 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x1f90920b mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x25d6351c mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x362a0697 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x458a456a generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x49d573ba mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x549fd00f mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x5a91c638 mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x77fc0d4d mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xd6685042 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xf9610c85 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x0ad92808 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x8946ce9d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa671ea57 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x11e4111d cavium_mdiobus_read +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x265a084a cavium_mdiobus_write +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1ee585b7 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x8ee94338 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9c1cd5e2 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xef67745e pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x8acb2dd2 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0e6ad031 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x0f357566 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x49d5e629 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x5eedd525 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x7e764fe0 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x8af7e8e4 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xd16fb083 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xd5786b3b team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x087ae5c8 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x139c7660 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x3ea14084 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x06258082 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x18615c0c alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x324d3703 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3cedfbbe hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x60677128 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6ac17fbf register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc31219a7 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd5c5345a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe3504319 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf76a20c1 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x4a9fd208 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4b6de648 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x52faef28 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53768e23 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x636be4c0 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x93fad920 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x96d814ab ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb03062fd ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc2b817ff ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd808ac71 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe98c5dbd ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf035f8c7 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf437691d dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x07e00685 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0d535488 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1a4770e7 ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2199276a ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x241c5713 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2550ee14 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x397193e2 ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3e5055ad ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3f71ae40 ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x46e267b5 ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x47258cc7 ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4de43e0b ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4e7b2c35 ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x50dd77c4 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x513f25f4 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x540a06a0 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x54af42d4 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x54e1e03a ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5e515a5f ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6172ee29 __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7490a0b3 ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x75d7d3b9 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7a57fe46 ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8393b09c ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8a047c26 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8a964a94 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8aafc4c9 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9395d735 ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x97eae262 ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x99516cbe ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9ace7785 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5c4507e ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5d07275 ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xad86c840 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb451d512 ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb7158343 ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb7f842af ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xce057694 ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd23b5ee8 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe18aad1e ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe3146f60 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xede79612 ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xee67fc7e ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xef1e67ac ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf1e58475 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf40fe055 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf58d2298 ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf59b659d ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfc6bba14 ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x10e977f4 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6cba3c01 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6e666126 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6fcd5895 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x98a1ad2f ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa78a0f80 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbd124741 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd655578e ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd75977ed ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdfa967d7 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf8d33b25 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1421e3a6 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f6b41b7 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x40ea4c7e ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4264c812 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4c8f948e ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x50dcaf88 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5f5baefa ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x66546a9b ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x783ffa0c ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x826b7a78 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x90007604 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa53176e3 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaabb488a ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xae241055 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb3b5cead ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbc0c9715 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc1dc91cb ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc34cd757 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe438b055 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf4b1ee21 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf6d6eb9b ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf7408925 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfba8cf4c ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06515156 ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06b23340 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0970730d ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bca8b3c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1214df5d ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1309d9e6 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x133b736a ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1411ebc9 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15ab6232 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1cc0eb3d ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ce75e66 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d537e77 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ee31708 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2253d13e ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2419e633 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a599920 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c498c77 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dbfda5a ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x30925c69 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d69cefe ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40939701 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43f8827e ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44ea12bf ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a876ff7 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4aae01fa ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c44eeb1 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5024518f ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51239cbb ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52d5927f ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d89dbe5 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64407db9 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64f235be ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67b913a8 ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69dc0d1b ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69f6dd3d ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ff2e8ee ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7200c969 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x747e917e ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x756c95d7 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78a4472d ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79e33857 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7afb8592 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b98d7dd ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ba4527b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7dfa78d9 ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81950883 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x824f3f0f ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83e87b3f ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8484f3e3 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x853f058e ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x856cb36e ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8893e9b1 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a2eda57 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e18e491 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f3bd003 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93f6863c ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94af5f14 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a0097aa ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a97abcb ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa06b941a ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa330cda4 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3544abe ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6b173bc ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7765d70 ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa69a665 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacb289a5 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafcfc5a3 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1b321d0 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1e019cb ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb22ae57c ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb31d15d5 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4418658 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb51d3c7f ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5281ae1 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6e25394 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7033963 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb71cb336 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb86ee6e1 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb442837 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbb34234 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf253ce5 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4308cca ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc822a196 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce8026a1 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcffdda74 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0532519 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd39fb438 ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdae195d9 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdcc21c39 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd529a2f ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdefb29fe ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0338f0b ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0c943a2 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe669924f ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe71d442c ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea579b86 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed8bfab0 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c84f8f ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4f9fcad ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf55c0186 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5de698a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8b656ba ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8bbf336 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa02def5 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbd2379c ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd6bed70 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff4d7dbc ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x4212cb77 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x71e44762 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xaed1cdbe stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x050aa0a2 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x126932bc brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x48369390 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x48f12134 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x569157b3 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x8037572d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x9fbd6df8 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa87753e8 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb8bebb6e brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xbd3e9f1d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xbd7af395 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xce919e3a brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xe979e971 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0x673d9bb2 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0x990f645d init_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0xbe88b6d6 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x20ebfa92 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x26ed0c01 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2cad09cd libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x566b859b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x60a4055e free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x62b189ba libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x64fa7c28 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x6e55eaf4 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x72218212 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x73cc0e56 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x758d5f57 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x7f931222 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x90619c66 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xb5fd9254 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xbe65244e libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xcb0f4d66 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xe3f64c68 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xe4c7e2d7 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xea433e63 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf9f87ca0 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x007dce56 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x02f88ee4 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x03c57ae8 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x04b85b24 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x08f61ead il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0a056f81 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0b20533a il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0c5536d3 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x11689b81 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x142071bb il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x199abf29 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x20ae9a40 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2247dcd6 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x24acba82 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x275bf1da il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2d1d8de1 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3217c467 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3450d108 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x37da6bd8 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3acbc222 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3d50bf80 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x40342cce il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x42663c6a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x448aa1bf il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4992af79 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4a601d48 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x52d615ca il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x53c81b8f il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x54240f49 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5589a4f8 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5769de2b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5a858c4f il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x614bc271 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x62283bdb il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x645a5069 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x672b510b il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6c42eb3c il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x709619a3 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x717b2f79 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x73719825 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x762d7292 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7790ca3b il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7b8328af il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7c360b19 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7fcd99d4 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x80226f19 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x87407aa8 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x893ff472 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8e87f605 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8f49494d il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x95b19dec il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x96b3df58 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x99aefdd4 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9aa70c32 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cd08181 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa0582a51 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa2524e64 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaa56d1ab il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaed2a7bb il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb1282289 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb249d4a4 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb498c756 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb67dae9d il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc0e561c6 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc268ae7b il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc2a8be5f il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc41f243b il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc41f95d9 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc49e5880 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc5855121 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc64abbd1 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc7eda94e il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcd4d5652 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcf0606e4 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd1269856 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd3588254 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd3856dd5 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd44f1758 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd56f6cc8 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd5b0aada il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdcb2083f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdcdc4ad3 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xde3676ef il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe1c68c93 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe33f4b4f il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe648b27f il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe9f80f9a il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xebfcb4db il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xed974a70 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xee5589b8 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf261ea32 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf2d93593 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfa1debfa il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfa90ce71 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfaa7d005 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfbb9467d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfc175a83 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xff70231f il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1ee9c199 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x20a6a247 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb72ade7d __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x047ea3ad hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x06144e02 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0ba8a1d8 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0e796898 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x180ae796 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2eb4c5fa hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3c3a54ce hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x41a138c4 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x4c299763 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x53e76525 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5475d27e hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x64bea810 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x69e04b37 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x6ed31921 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x75934c58 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8541b0a3 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x89fc6bfd hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8cfb6f19 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8f9fbbcd hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8fda38dc hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x9edd71fe hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa064fff6 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa13a83d7 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa85fad68 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc935bbc0 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xd85f216b hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x1e87783c orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x20b542b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x26ad8b83 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x43472fe2 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x4878b385 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5a5bf7f3 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x6fde8748 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x7a07b000 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x918a6b3e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x92c4c4d3 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x9eff95e0 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd2775044 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd6b0bd93 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd720edf6 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xfa0997ca orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xff4fb7ec __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0xbe469b27 mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x3c1852bb rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x00ba2c61 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x05267462 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x06473402 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1464b45b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x21a8f676 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2739809a rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x397795d3 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3d05f9a1 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3d59c819 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4019c5e6 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x425b0432 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x43241b74 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x44bcc735 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x45bff955 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x539fa36c rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x546913b5 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x573a49d8 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6b1e2116 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6ea7aa20 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7045a1ac rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7c49c52e rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7ea398ce rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa09d1b81 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa4dbf7af rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa62b0a60 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa8b5579d rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xab09bc74 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xad46a226 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb6c244a5 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xba93260e _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd8b230a0 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdd8bc664 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe123df01 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe199b41b rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe9b879db rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xec8171d9 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeca3e689 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf051d678 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf072ad94 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf9cbfb1f rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfcbdac25 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x05248cbc rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x377fa1b7 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xc276a6a9 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xe4e8788d rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x208d6f4b rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x8f23eca4 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xd7fbf9de rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xff1ddce7 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x03c17fad efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d17c8d4 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1366421e rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x29a5bc57 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2b8d9e44 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4937b376 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5198c57a rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6a581b26 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6b4d702f efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6d2064ec rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x707e85e7 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74a43723 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7ddac141 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7ea60ee3 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8a70c543 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8c5d229c rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ea60059 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x95f42f6a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa0c0b7ab rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaa1dedf1 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaadf9912 rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb03709a3 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb0a9d28e rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb6934a2f efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbcb3e38d rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc13afbcd rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdbe193b4 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe0687020 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe13fd869 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebedfe5f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7ca889 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xee29f880 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0x0740e454 rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0xeca09ee6 rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0x0362f5d8 rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0093685d rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x118977fc rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x13708c76 rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1851869c rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1b146eda rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1e292efb rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1f6c5cfe rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x232d1451 rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x263c082f rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x37e5ecd3 rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x393d49fc rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4bd2f7ee rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x51d27430 __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x522666bf rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58f28bda rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5bb67cac rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5e7aa416 rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6054e470 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x63cf868e rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6fe17f41 rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x775d0bcf rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7ded8b33 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x83de8651 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x86a217d4 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8a39acc2 rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9695fdf5 rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9a980629 rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9ca08107 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa1639c60 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa645a062 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb9c5c8a1 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbc2fe2a3 rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbeb88879 rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbfd814e4 rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc5913731 rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc8625bcb rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xcb2f2125 rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd1e61279 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdb6edc13 rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdb83505a rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe2ed7e4b rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe53dab92 rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe5808e82 rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe67d50c4 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe8be7278 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe931aaa0 rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xebc21518 check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xee1dc3a1 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xeefaed6f rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf79ad817 rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfc221f18 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x2dbbaac7 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x4f6c00a5 rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xc57c3517 rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xe407621e rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0xf21c410d rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x019ba95f wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x26c3f0e4 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa57eca5f wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc7b291b0 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x11e64028 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x150fe873 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x5ff2c8af fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x35c4c548 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf6a1f9bd microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0c5fe188 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0f10c1c6 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x74d00408 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0x78b8ed44 pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x22273e85 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x7b851e0a pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x655753b3 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xb509a40c s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xda087c6e s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0366848b ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x08479892 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x538cac64 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5895a4b9 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x63c8ddcb ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7aa43c71 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x88d4aefe st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe461b3bf ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xef532d05 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf7c9dbc3 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x236a1e22 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x48d0de71 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x577938c6 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5b81f60e st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x66ed4077 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x858cb2f6 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8f5b95fa st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9210c9ea st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xafece502 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb1d5df56 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb3035931 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd4751720 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdd421956 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe626b1f2 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe7e9d9f2 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe8ce87cb st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xee135734 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfbfe4448 st21nfca_hci_probe +EXPORT_SYMBOL drivers/ntb/ntb 0x11344836 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0x4642a0f0 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x490818c2 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x4b0eb446 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0x533a9471 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x63bcbb81 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x66122a73 ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x84db0045 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8988337c ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x8ed7df76 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x9264b9ae ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0x958f90b2 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0xa37c412a ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0xae0c71aa ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc2badbcf ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xc7e0dc02 ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0xd32c29ae ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xe1bfeadf ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0xe87f12ca ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xe9ffe82f __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x32885832 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xea7838c2 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0813976b parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x0899e507 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x0ce320e4 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x13b8dd9c parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x16fa7e68 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x1e38202a parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x1f0c0cb5 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x24f3212f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x26673483 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x26733243 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x375a3d2f parport_read +EXPORT_SYMBOL drivers/parport/parport 0x3800a8f3 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x3a103eec parport_write +EXPORT_SYMBOL drivers/parport/parport 0x45814cdd parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x498e432d parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x57aa6e1c parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x77490578 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x7e019a20 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x82b63657 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8858a19f parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x909d1496 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x94aa99b6 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x95ee728f parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x9c71d546 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xb7dab625 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xbc24e682 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc2d064fd parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd18f589b parport_release +EXPORT_SYMBOL drivers/parport/parport 0xe151612d parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xe252aba0 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xf70f2281 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x088355f1 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x474efe07 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x029c1896 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bdfbc76 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5a890095 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x76a4591c pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x78a1847a pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7afd5e51 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x893a9058 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9b504c74 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9e841238 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa273ed0a pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xab8ab7d4 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbb312663 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc5205d1e pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd1e7ca0a pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdc58ba92 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe399dab9 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe55d1cd0 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe7ec8d69 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xed1aae43 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x13fb267d pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x284737aa pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3069ada1 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3329a051 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaf983444 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbf5cc57d pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc0d3852a pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc26ed8f2 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xed53664c pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf942709b pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xfbb81dcd pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x0e4f2fff pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd02a80a2 pccard_static_ops +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x3b9ed3cc cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x73985193 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x8adb9f44 cros_ec_suspend +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xf069e855 cros_ec_handle_event +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xf0de5907 cros_ec_resume +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xaa1c36de cros_ec_lpc_io_bytes_mec +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xc4ebc6b3 cros_ec_lpc_mec_init +EXPORT_SYMBOL drivers/platform/chrome/cros_ec_lpcs 0xf5c87c59 cros_ec_lpc_mec_destroy +EXPORT_SYMBOL drivers/platform/x86/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/platform/x86/intel_punit_ipc 0x3a0b563a intel_punit_ipc_simple_command +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0xd857cac7 sony_pic_camera_command +EXPORT_SYMBOL drivers/platform/x86/wmi 0x5467e3bd __wmi_driver_register +EXPORT_SYMBOL drivers/platform/x86/wmi 0x91c75bb7 wmi_driver_unregister +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1b6558ae rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1b9e33c8 __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1c49f086 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x361ac2d7 rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x400f4d77 rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5ef916e0 rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x657be188 rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x8bfd5b17 rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x8fa5b230 rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x97b24c32 rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb3593167 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xbcce8363 rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xd824a69d rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf6dc0d8b rpmsg_register_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x7c68c57e ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x22068f6b NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0x50263922 NCR_700_release +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x16ef9564 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x729b5c34 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x88aee858 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe56ff388 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0400bf59 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x05768115 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3629f74e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x38493782 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x45033a2b fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6e6d1df1 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a2d216b fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xadcc91e3 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd6b47263 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdf6ea812 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe7bea231 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x005201c9 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07630c83 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07870793 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09ec3a18 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11b12e2d fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13d4da11 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18353e5a fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1cd90c88 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22aa6cf5 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x258a84da fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b3de2c1 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ef6fdf5 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31a7a014 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x328e101b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36a258c2 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x385a9e61 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d0bd5f8 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ec00137 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4d8bb246 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x590149da fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d32fb4f fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d8adffb fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5dfdba49 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x60c87771 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6679689f fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70c695f4 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d81ac1 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72e87c27 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75767368 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a4120a0 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7b2faea7 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85e01831 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86cbc3d5 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8822b496 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x885e2e1a fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x890bc1cd fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1519214 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa45e51f4 fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa71c2fe5 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7205cb2 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8d868bd fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb037c38 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc43d477 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf8bb028 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3b2facc fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca54d0bc fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9501573 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda895fbf fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde8ab052 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe530d905 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5cf06b5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea2e6c82 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeae03678 fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x1b79490f sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x63afa7e4 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xaa1f2009 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x81715eda mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x18ac27c7 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x32722a96 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5e33ecc9 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x75c1f953 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa07b97ce qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa1d1ad2e qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb91dc2e5 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbcbc2bd5 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbeb3d970 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd24cf718 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdc5a157f qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfffb3f5b qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2f15730d qlogicfas408_host_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4a1f7ac6 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4dc509da qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x67af2b2d qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x67e10d89 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8b47987a qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x591d2c1f raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x5cda8eb1 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xab717a9f raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x008ccadc fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00b1c6bc fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x01819c7a fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0638ab76 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x12c40bbc fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x17bcc052 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x456482f8 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5048d84d fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x570f85d0 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x68b3dfd1 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6d4cfc66 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a79f36c fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9d666cd9 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9f1f432f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf601d98d fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf6ec3bb3 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09e3d5a3 sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x101a0793 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17435c98 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x23f47cf8 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2b6721b2 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3befd7b8 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44332dea scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x533a2680 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5fd0f530 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60fb9db6 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64b6ddc1 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x664df9fc sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x84549b92 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8c399fd6 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8d026763 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x98b1cb6a sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d1ea567 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa174ea55 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab12ca94 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab19dbc8 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xabf9b845 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb4688b70 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd20bf5d7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xde0f5ebe sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeb65be38 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf061866e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf13f07ec scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf63a60d6 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf6fb8e12 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0de02fa8 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x12cde08b spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6aef8eee spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7668e1c5 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc72e234b spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x30a68cae srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x332273ea srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x476056ef srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x94bf6ba1 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xed4fc672 srp_timed_out +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0xabad5089 tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0xe1595499 tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x07c6b7f8 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x0a65edfe ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x12879a9d ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x1678c50d ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x35cba2bb ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x4326a0cd ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x4adfeea2 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x7bb0a32a ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xa538f39d ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x0c422009 ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0xe0d4f839 ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0bc4a694 sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x25ec7c27 sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2c7ff74e sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2ef5be02 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x39b00227 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x41d87076 sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4732b29d sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x546c6a4d sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x720c1803 sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x76d0c7f1 sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x862ec319 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9a779414 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xaaa90dd1 sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xae19c291 sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbdcedd2a sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xdabbb251 sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf655864c sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xfbd782fa sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xff7150fb sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x091a3147 sdw_cdns_exit_reset +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x150215b7 sdw_cdns_alloc_pdi +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x30e669a6 cdns_xfer_msg_defer +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x34712074 sdw_cdns_irq +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x3791b6d7 sdw_cdns_enable_interrupt +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x3f78bba4 cdns_bus_conf +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x4098cf5c cdns_xfer_msg +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x454c6f21 sdw_cdns_clock_restart +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x7bc287d0 sdw_cdns_is_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x8091e2ea sdw_cdns_pdi_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x8bfd13ec sdw_cdns_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa18ce7ee sdw_cdns_config_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa76a6fcb sdw_cdns_thread +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa8ba5091 cdns_set_sdw_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xaf5be798 cdns_reset_page_addr +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xcc608da0 sdw_cdns_probe +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xf1e5ca4e sdw_cdns_init +EXPORT_SYMBOL drivers/soundwire/soundwire-intel 0x83f8b2b2 sdw_intel_exit +EXPORT_SYMBOL drivers/ssb/ssb 0x0874e86d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x0fcab2f2 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x1566cf13 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x169a87b9 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x17b7ccc3 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x466d08ad ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x46a20ed2 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x6668625f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x90d9a840 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xad7cc7bf ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf676e80 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xb593504b ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd4d132b7 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xd5b45d07 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe0640524 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xe2e1abd0 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xe8839fa5 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xf017a361 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf20ad4e0 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xfd237cf9 ssb_device_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x225c0fb7 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x25f5f6f9 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x29202274 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x38de6edc fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3bf29412 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3cf6e95c fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5c13f104 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5dfd37e3 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5fa2f58a fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x72e75fde fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x79bdc2f8 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7ae76c57 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x997c66d5 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa5c301b2 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb961c454 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbc890933 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc0ac6b55 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe6775ea8 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe6a8d5fa fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeea904bf fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf10b77b7 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf314b2d9 fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf4415e6e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf93337cd fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfa660101 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x028d1fac gasket_sysfs_get_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x065f9c9d gasket_page_table_max_size +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x277cf906 gasket_disable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x339c2b95 gasket_page_table_map +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x3721d94d gasket_sysfs_put_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x372973e0 gasket_page_table_are_addrs_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x38c3d415 gasket_page_table_num_active_pages +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4109757c gasket_page_table_partition +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4292ff96 gasket_page_table_is_dev_addr_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4b1188de gasket_get_ioctl_permissions_cb +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x540c89fe gasket_wait_with_reschedule +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x5af5773c gasket_sysfs_get_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x5b9c1bfd gasket_pci_remove_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x65c68a49 gasket_pci_add_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x6da6e0ce gasket_enable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x6f95bb59 gasket_sysfs_create_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x77311f6a gasket_page_table_unmap_all +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x7de12522 gasket_sysfs_put_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8c92da47 gasket_page_table_num_simple_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x99df788c gasket_register_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xaf11e61d gasket_reset_nolock +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaa2668a gasket_num_name_lookup +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaf2f8cd gasket_page_table_unmap +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc225208c gasket_page_table_num_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc55e55ab gasket_sysfs_register_store +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xcf0e0579 gasket_unregister_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xd2901633 gasket_reset +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xead1e5df gasket_mm_unmap_region +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x850d7483 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x5d0be9a0 ade7854_probe +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x049b2779 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x099ae413 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0fb02118 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x129b178d rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16306c9f rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x216bfd40 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24711e41 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28341ebe rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28ef1ad9 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b9d0967 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d2b7be9 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d5f1739 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f4b6c52 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37fe7ceb rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4302a747 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47123894 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x483c8a6f dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4c11732c rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5472e943 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5800d20d rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x58371ede rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x72a36102 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73a3f989 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7502ce6a rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76a1ce73 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80f6542e rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x893b19a0 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c610cff rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97c93151 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98488181 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa08af819 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xabc5586a rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xadf88174 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb9dc5cf8 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc3a889d9 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5436f8f rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5e3bec1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7046a6e rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc961d3e2 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc0721d6 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd1af39a rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4d314f0 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe172d808 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf37e3878 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf3f400ea rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf62d553a rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf76746a0 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa1f5319 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd4ad0c0 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01efbaf5 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13abcb44 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13f7adb6 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d66a0ff ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21c5b70c ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2437f442 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x249a4212 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29995c53 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ecc8675 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2fc57c91 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36a470e2 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x392b1415 dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39ad4d42 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a5ca6ba ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x408bf6f9 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a68f46a ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c3d4a28 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5fb178f6 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x621ad97e ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62a9f981 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ab0678f ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d9f5bb7 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7249d745 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73066fb9 rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73f5a3ad is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78724b61 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78e5ddbb ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ce81005 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e13ce4e dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8100bf6f ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8734008b ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x876beab1 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x96bf7954 to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97e2f8c0 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa46d6878 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6348a8d ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa77d3ef9 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0588659 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb246b49d ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb43aa1b0 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb79fee7f ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7b808a9 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba1a5fc2 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc664aef ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc78f883 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9c50f3c dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd44b313a ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe1181d10 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe59d4377 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6e37a37 dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecc5fb1b ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf3a66c76 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6738b48 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8298ad2 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe2f6017 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0647837b iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x11576d68 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b37a4ae iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2390efe3 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25b45d14 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x26960abf iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2d2e8fdf iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x32962b37 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x32e2ad99 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x367cf0fd iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x45d7cab3 iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4934e609 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x518c1d2d iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55fc9817 iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5b49ba6c iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x67b1f681 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6b051876 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6d01f98d iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6d4bdde5 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77c88093 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7d10c769 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x836b88e3 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x84f98b41 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85ae96cb iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88a614a5 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8eb681b8 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x942109f4 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x942f18ee iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa068edf0 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa312e4f6 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xab69c128 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xabddecd3 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad40d647 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbb96cab7 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc92b8d23 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcc96bd54 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf5b5f56 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2c6c3f3 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd697ff2a iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdfc64f5b iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe641198b iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe89a21b0 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe95b76d2 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xead28adc iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/target_core_mod 0x019b0cd5 target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x01b50bf8 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x025d29e4 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x056445e5 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x08200cef core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a289c90 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x0edb124b sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x102a5077 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x144b46b0 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x19449285 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c49db32 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x21fa53e0 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x231371dd target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x26c5f6c9 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x26fffb00 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x35b5ede8 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x374d3dcf transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b5f4f32 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d46338d sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e422fee target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x45264287 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x461f22d9 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x4aeaafd7 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4dd37671 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x53f28c88 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x548dc53d spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a3c4428 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a9084cb transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x609ed53d target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x62795b1e target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x6344dd61 target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x636cb94d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x63f1b8f9 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x66b6e53f target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x6935fe66 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cfb2c80 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e3a9da6 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e90911d target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f2d626b target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x877b7a81 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9118a031 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x92012137 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x95074c4d target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a61c204 transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e4073dc core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e8ccd41 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa90d161c sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xab5b1d65 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb08ae6d4 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6c4c5b6 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8286c4b transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xbad5e8cf transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbecf2ca7 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc14dbb93 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xca1e650a transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xca423292 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc812564 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xccebab01 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd40df4dd target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4801878 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xdab78c6a transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf90f380 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfd40318 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe23ea036 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe27f3ae2 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xe54eca14 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xee640ad4 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0f7c0fb target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3fbc584 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf76d2cb6 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xf96a84d0 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xf98d6758 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb75eb27 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x111eefed acpi_parse_art +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/intel/int340x_thermal/acpi_thermal_rel 0xf0f9fe0d acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x6f75a64d usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x0d2a8184 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xec2b55d3 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0d82e8a2 usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1dc86eb4 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x450789fd usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4ae9b5c9 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4bf0efb3 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5605feaa usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x601953a0 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa5042c18 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa96182f2 usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc20da6b1 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd6963e82 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdaca99d2 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xecb73837 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x30689187 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xff23d5ee usb_serial_suspend +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x52c28387 mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x632438bd mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x6d021474 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x6f0deec5 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x90fc0ba2 mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x9b2c5c21 mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc8352c47 mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xd3d8fe75 mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xeb388994 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf0795ee2 mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf129bf51 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xfbcd097a mdev_parent_dev +EXPORT_SYMBOL drivers/vhost/vhost 0x4cdfc6fc vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vhost 0xf786863f vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3ecc1eea vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b6a6e23 vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6d95262b vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8d40c6f4 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xf6784994 vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x37b752c7 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x5357bd2c lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa9fabba9 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb4ef89da lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x076f5e25 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4a6ee09f svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x70f61e49 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x868c90af svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc6d9b21d svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd335e929 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdbdd23b7 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xa3f1518c sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x6783ea9d sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xa019e2d2 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xa483f67d cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x94859bb3 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x17d6244d matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xdb2d1fcc g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfe6aca11 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x36829f2c DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xdd15944d DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe1fac2ce matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe790c175 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xedf7b644 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xce6be3be matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0aeb93c6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x27fc685f matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x2db01583 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x4fdeabff matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x2ec954ab matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xf83e62a4 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x01c88536 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x1d2917ab matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7b2ddb92 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9a41787f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbc765f43 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x260590c0 vbg_err +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x2db3e7ca vbg_hgcm_call +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x569b312f vbg_info +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x668ac2bb vbg_get_gdev +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x70cdcbfd vbg_warn +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x83885052 vbg_put_gdev +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0x9c072aa8 vbg_status_code_to_errno +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0xae93adf4 vbg_hgcm_disconnect +EXPORT_SYMBOL drivers/virt/vboxguest/vboxguest 0xbcc92f31 vbg_hgcm_connect +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xef03de24 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf65f5fa3 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x72f10fc9 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x818eb44c w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x1f431397 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x995882be w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xb06602e2 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xd2b948ec w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x75bec08d iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc8930f32 iTCO_vendor_pre_start +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xed2a3373 iTCO_vendorsupport +EXPORT_SYMBOL fs/fscache/fscache 0x02667129 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x0b793b7d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0f9c346c fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x148f2263 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x21102ad0 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2ed6cfda __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2ed83eb0 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x32b0a3ea __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x3ea15162 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x3f3cf88c __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x4463fea9 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x45127a09 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x4f0d82c4 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x5bc4018e fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x60431a81 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x6996a9f8 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x6acefa42 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x6b9d4c8d __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x714b18e6 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x721f8de4 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x764512a3 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x7793f347 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x77e09458 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x840ab70f fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8eb42d45 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x942cea0b __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9ce74310 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xab9786db fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xbb343df7 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc3181ddb fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xc3f74240 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xc69b2180 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc886fe6a __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xce339c9e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xda6c40cb fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdfd44474 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xe4ed7167 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xe78cc75d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe9f3a417 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf7a86eb8 fscache_object_destroy +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x54ca5ccc qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x677c510d qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc2b70a50 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc5f4fab2 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfbf0348e qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xff8c9a3e qtree_get_next_id +EXPORT_SYMBOL lib/crc-itu-t 0x09a34a2b crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba55d23e crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xe2aae5cc crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x7bcc24fd blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xa3cefaa0 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x755f4ba3 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x147c3f2e chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x1c679fe2 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x37b34b92 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5b19e187 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbaf4d923 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xce15a526 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x393f7002 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xcf1805a5 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x38f7b6e0 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x93ff008c LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x9cef495b LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0x679e8cc2 objagg_create +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x141b9b96 lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x2516a080 lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x6b7b9748 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xab99f9e2 lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xad9e845b lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0xe46e70fa lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x0ef330d5 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x37c0bc03 register_8022_client +EXPORT_SYMBOL net/802/psnap 0xa9cd05fc register_snap_client +EXPORT_SYMBOL net/802/psnap 0xc1e7e390 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x006cea95 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x02374e46 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x1430723c p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x1beb59c6 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x1c55a745 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x1fb7a11a p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x24849a57 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x301c29c0 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x32ced634 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x3539eb45 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x36b86368 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x38ece730 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41ce9823 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x426586c5 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x5a58a2b5 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x752716b8 p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0x7c67399c p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x8675cbe9 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x95bd8f96 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x96857498 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x984c5e73 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0xa2079862 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa25de9cf p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa7199a24 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xb79f25fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0xb7c20311 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb7fc3337 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb8b9fb5a p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb8d7a026 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xbac0fde6 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xbb0d8d66 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xbe64432e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc09a1409 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xcd6dcb4d p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xcfbe5c3a p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0xcfc60188 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xd23bcd7f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xda69ee9b p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xda78bdc9 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xdf0e8b7e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xe32c5c0a p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe4021ba1 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7d4cf81 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf27e9a22 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xfd086fe7 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xfe593531 p9_client_unlinkat +EXPORT_SYMBOL net/appletalk/appletalk 0x12d24a1f atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x4d8cf248 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x9d303412 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xe4fce8e7 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x0575b660 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x0889bb0d atm_charge +EXPORT_SYMBOL net/atm/atm 0x0b89f30c atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3caaf134 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x44c6e633 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x91d2a1f5 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa5475a15 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xaf32b996 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xb024b193 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xc3ecb3e0 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xd96b2d03 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xe36d41c7 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xe6b539bb atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf6ce4c28 atm_alloc_charge +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x27f270ca ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x30531f21 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x36157dea ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x3a112673 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4edfe43c ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x576fa67e ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xba70f9a3 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc9314e6c ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0547b7a3 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15e1f54a hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1673e22d hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1df9151e bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ac5d5f4 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b7e3ddf hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e39e4b3 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f0f3b88 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3921f14d bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f9b47fc hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x414e5f37 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4422f011 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44b5c652 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x466fa309 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46a12dca hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57a5b367 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58dd6e04 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5a6dad25 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5e7f6aeb hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x604cbc27 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x75a96845 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7cfd9a7d l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8aeb191d __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa70f6669 hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa31a524 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf73171e __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb1df6050 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3f71a74 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb564a9ad hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7dee442 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9eb7d68 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe482d95 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc051cec6 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc748afcd hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb770036 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf7e2c1b bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc6a4020 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc85c473 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf046e34d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf06bbaed hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf13656c3 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf1f75ca7 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf831f32c hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd21a8a3 bt_accept_dequeue +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x1d76abf0 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x4515f45f ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x980109a3 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5c534684 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xb84a3ffb cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xcd781d93 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xd3368930 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xe800b917 caif_connect_client +EXPORT_SYMBOL net/can/can 0x74017ad9 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x8fa6fbf0 can_send +EXPORT_SYMBOL net/can/can 0x99e15057 can_rx_register +EXPORT_SYMBOL net/can/can 0x9e915df4 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xd86f9475 can_sock_destruct +EXPORT_SYMBOL net/can/can 0xfb66fc0a can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x01bd5d0d ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0x04f4a3dc ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x05839ed6 ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0x07bbf62d osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x09c3c099 ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0x0bf6b896 ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0x0ea2e8b7 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x0ede3dca osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x135ca86d osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x1360659e ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0x145bef2d osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x17646631 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x2040b02d ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x22ea6ef0 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0x2494626d ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2c51409b ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x2cbfd701 ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0x30e4f1ae ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x33e72719 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x37c31e58 ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x39891588 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x3c31215b ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3d49616c ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x3d8f3a34 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x3f33181e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x437d743b ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x46555f2e ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x49790332 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x4a576ba0 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4dffd9b5 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x508c628e osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x52a6a26f osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x54332c12 ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0x55765aa2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x56528e32 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58bd2de0 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5ddcdf0f ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5e0ec6a3 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x60580ce2 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x61244ac8 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x62571062 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63fd183d ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x640b6bd5 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0x64cc8d16 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x64f18f11 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x67a41ca9 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0x69926a3c osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x6a764007 ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6c547e12 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x744fb701 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x774fefe1 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x785e13dd ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x83e112da ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x8f98de65 ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x90fc55d1 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0x917c5b1d osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9682a1d9 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0x9a0393bb ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x9b2f3478 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9c4e1d53 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa2c5917f ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xa47fa18d ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xa551be6d ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa8766439 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0xab6a6152 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xac9d125c ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xace4b94d ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaf1e061c ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xafedb3e4 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xb19b36b7 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0xb25ac1c3 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb3390a52 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb642e4c6 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb7b66494 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xb9a8844c ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbd0f210e ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbdc5426a ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xc1478442 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xc98a936f ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0xca6f75ea ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcb033af8 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xcb56cefa ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcce1dc1d ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xce5ffe02 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xd117979e ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0xd356b0a2 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd97225ae ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xdb7fa8a3 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xdee2c184 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xdf266fc2 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe1ba8997 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0xe3c59245 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xe7a87fd0 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe995e10c ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xeac5e44d ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeedd7f2a ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xef021f0d ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xef65f2f5 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xeff40d72 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xf1583803 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xf53a918d ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xf60ca6b4 ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0xf665ff8b ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xfdb76fa3 __ceph_open_session +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xa5a60524 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe3ed8628 dccp_req_err +EXPORT_SYMBOL net/dsa/dsa_core 0x364f03b9 dsa_port_vid_add +EXPORT_SYMBOL net/dsa/dsa_core 0x4df1df31 dsa_port_vid_del +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0f7bcd75 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x24ecf3ab wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x43695627 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x45a0047b wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ef6c481 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x96c7694f wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x29a3a612 __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x549bc8b1 __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xbea36476 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5915df97 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8d5cff51 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa394aa43 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xbf6ecea8 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x32b0b926 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x950dc272 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xac5e9a9b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x73e9eb96 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x78ea126a ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb28afcea ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbb8e103a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xfb8b780d ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/tunnel4 0x224b1582 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xe53cb045 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x2ee13798 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2bb39f19 ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3aa736b0 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3e24659a ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xaace5159 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcbffde19 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd5f6ff5f ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd866cf0e ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xeff4f6a7 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfb56e99a ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x8dee9538 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9dc80705 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa7125bf9 ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbb667409 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe18eb938 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/tunnel6 0x379a32fd xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x46a7043d xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x4e276787 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x688de17a xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/l2tp/l2tp_core 0xb18dd73a l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0xfb633790 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x9f6975af l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x09a47bdc lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x37fcbe67 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x57779198 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x66dee6da lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x6d6d76a1 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x731042c7 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x8b620ee4 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xe8736454 lapb_connect_request +EXPORT_SYMBOL net/llc/llc 0x16d0f7b4 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x43898db3 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6ca6d595 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x7cd410e5 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xb8a2c374 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xcf57253a llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xf8304c0d llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x0404356a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x04acc0c8 __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x0555a816 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x080312b0 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x088a4ff1 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x08bd048d ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x08dfb6bc __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0aad61b4 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x0eb44a82 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x106b9731 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x17bb4f8b ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1bb5e7b5 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x1bf17372 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x1cbdb580 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1cfd64fd __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1d2fce1f ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x1d75f822 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x22402c0c ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0x28d331c0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2abc7a75 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2b7f8046 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x2f025627 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2f7f9352 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x30575d8f ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x306ad198 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x34af06e6 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3a73f557 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x3c6bad06 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3cdd8947 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x4074edd8 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x46cbd18a ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4fe4a1a3 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x5205a552 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x547e9a16 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x5708e3a1 ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x5d238bde ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x5dbbfd54 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x6344f285 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x63c069ca ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x68339415 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x698b9e89 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x6d473034 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x71f9ddbf ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0x743fb4a9 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x76c3c607 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0x7816261c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x81549feb ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x829f7152 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x83fcf0af ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x84d5a6a6 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x8729c52f ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x880b985c ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8884596c ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x88c31516 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x8d9a6e8b ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8e2f9329 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x8e9e36c4 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x91250d5c ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9215fa53 ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0x92668248 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x93db8a66 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x97427c58 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9c26ccb6 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xa4831b52 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa5251361 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e7a5b6 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa7758d6e ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xa865c494 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xb1140769 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xb66146a1 ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0xba9dbc20 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0xbab517bf ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xbd73046b ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xbf104309 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xbffc6dd5 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xc597e88a ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xc97af6af ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xcdff7e82 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcf57242a ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xd130d0db ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xda75e42b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdad3a8dd wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdd78dd28 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe1efe288 ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0xe6e039ad ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe9a3d9bd rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xef5db2e7 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf1744ef4 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0xf6b98a55 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xf8ab7ef2 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0xf90e8408 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xf9aedbba ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf9ea3020 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xfe6dbc74 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xfe9101f7 ieee80211_radar_detected +EXPORT_SYMBOL net/mac802154/mac802154 0x10fa259b ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x1698f6a3 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x41d05ce1 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x7fbbb3b1 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa4fb8dd1 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc05d766c ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xda21ec1e ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xf9e0f293 ieee802154_stop_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x07b99f8e ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x07c0a828 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x152ac24f ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x28b561c1 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3d5691f9 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x44fd7d91 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x474d5710 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x681e30c2 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9a3dca55 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb6789fdc register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbfef2753 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcf06a172 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd878d4b5 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe0c9081a ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xea1d15a9 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x39864e23 nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x5f2221ec nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x61093712 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x8701dea0 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x9edd5eae nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd2364741 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x19e0efe8 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x20bd1bd1 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x2f5a2bfb xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x537fee27 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7550b6b5 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb309ba4d xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb71c697f xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf414ff37 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xfb8f96ff xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x0e7cb481 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x14eec60f nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x18102f7d nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1dd2e78d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x28412f89 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2c92c874 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x2eb27aeb nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x300772d0 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5a6eac59 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x6190bac5 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x648474e7 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x6fa8132d nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x6faded7f nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x7f77bd02 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x9e677837 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa49893db nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xaa8a127d nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xaee200a9 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xafed8e3b nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xbe9b578f nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xff53f4aa nfc_llc_start +EXPORT_SYMBOL net/nfc/nci/nci 0x05c7177d nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x3be48a30 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x42534ae7 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x45edfd70 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x4fc74395 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x503f08e2 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x58624c39 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0x60186c1c nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x60caf325 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x66d82558 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x68cec3dc nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x7019fe97 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x7ac9b534 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7aefa745 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x85d92408 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x87c3905f nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x8932770a nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x8e2f6682 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x95d1c683 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x96e5eae7 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x98c402f3 nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0xab18f5b1 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc0f51b45 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xc55bae38 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xd2ca47c9 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd8ced160 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xdf7ec211 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xe80e2128 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xeaa4517f nci_core_init +EXPORT_SYMBOL net/nfc/nfc 0x0a3b8c9f __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x1fe390c3 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x238745d7 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x266d5be8 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2a3f8eb9 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x38937472 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x3cfd5298 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x47bc8aee nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5aea602a nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x5daf346c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x644b7f25 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x6a3e9e4e nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x780b134d nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x8aaa79e7 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x96e646c0 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x9ecfa78e nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0xac7ac348 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xb94afce0 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xc9da34b9 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xcb50e709 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xd32a8a8f nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd7238156 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xdfd32a34 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xe72586a0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf4af9872 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc_digital 0x116b57ba nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x187d2ebe nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7045b532 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa1bdc200 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x0674d83c phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x172df3d5 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x9c05f3f5 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9f422883 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xa4cdb0a5 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xc6320986 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xfaee9bf5 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xfbd2088c phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/rxrpc 0x0563640e rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x10bd8b93 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1bf547d1 rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x33566968 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x495b76ea rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5495bd6e rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6b000405 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x705f2ae3 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0x7dab92db rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x7e2965a8 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x96bef15f rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x96cc9d4d rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x99ffbc66 rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x9b5afc62 rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb9f91d83 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe68063f6 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xef647008 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xf32ab6fe rxrpc_kernel_end_call +EXPORT_SYMBOL net/sctp/sctp 0x742f9be5 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x359f07b2 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x6f8d34b4 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe08216e9 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3d1ac4bb xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x75a73b5b svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7d53ea53 xdr_truncate_encode +EXPORT_SYMBOL net/tipc/tipc 0x1006279c tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0x1aaf5c83 tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0x9d3373a8 tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0xfc12f031 tipc_dump_start +EXPORT_SYMBOL net/tls/tls 0x46df0cc0 tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x979ceb50 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xcc177989 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00a06083 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x06776ec4 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x0e31c0bd cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x0f60bc7e ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x1044454d __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x1239977a cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x12699e98 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x144eb524 cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x16d3a2c0 cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x1c0408cb __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x1c0b4858 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x1ed1860d cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x21c4738e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x2400e132 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x24281f27 cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x242a3d71 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2472a108 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x264cbe3a cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x2b925869 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x2d9d568b cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2debb05a ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x32a43b14 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x331eb686 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x38244c8f ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x40f81f2b regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x41a1f932 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x43304d82 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x43f5efcf cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0x440b64d1 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x4895ca9f cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x49416fc4 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x4e138640 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x4fba9196 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x50d9a6d8 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x52d910bc cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x52e40f0c cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x5562293e cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x571b3eb5 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x575302a8 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x58f88eea cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x5b0e9aae cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x655bc25a regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x68f233c1 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x696dabd8 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b978d62 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6da360af cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x6e24fac0 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x72eec99f wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x7399d6a5 cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x77b4d408 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7faab8fc cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x84794616 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x859bd1d5 ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x873da902 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8a5a7b11 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8aff0901 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x901add06 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x92797390 cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x9335579a cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0x93c689bf cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x947bad4b cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x965917d0 cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x96e1f486 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9725a80e cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x9761d3c3 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0x9e723123 regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xa04667eb cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa25f7be2 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa4658e06 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xa4adbe08 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xa7c939f8 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb03d4d22 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xb4fefa67 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xb511496b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xb6d5e23b cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xbc4aba26 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbda9b6fa cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xc235af4c cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xc79f7aa2 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xcc28066b cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xcdb5eeb0 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd89c4341 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xde9e41bb cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe8da8219 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe9ade69c cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xeb1b5451 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf0beac74 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xf25169fd cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0xf31a844c wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xf416b614 cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0xf4b7137f cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xfb64b223 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfc1aaa73 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xfe082ff5 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/lib80211 0x021d01b3 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x1197a2b7 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x190e5ff3 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x3b3d03f3 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf51d2a4c lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xf7a59133 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xd7b4c8ca ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x9735d3d8 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2401f4c9 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x4237261e snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc4cc890f snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe213d62f snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x734e4fba snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7a3e0db5 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8150b379 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb8620ad8 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd70dbf6 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd935c83 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe9e6c50c snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x20b2d1b1 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0064a1cf snd_card_register +EXPORT_SYMBOL sound/core/snd 0x084b9682 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x0a60db0a snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x0ef97afa snd_device_new +EXPORT_SYMBOL sound/core/snd 0x0f38283b snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x1816d863 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x19b3fcab snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x1af1f2cb snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x1bf12fa4 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x20e7c8af snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x275386a3 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x2ccb13d6 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3cb5296f snd_component_add +EXPORT_SYMBOL sound/core/snd 0x44b8eb88 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4619c417 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x4626435a snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x543971b3 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x58198f2c snd_device_free +EXPORT_SYMBOL sound/core/snd 0x5a6c115f snd_info_register +EXPORT_SYMBOL sound/core/snd 0x5a6ce0ba snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x5ca9959c snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x5d0ee9dc snd_card_new +EXPORT_SYMBOL sound/core/snd 0x60a44906 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x658ff608 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x6958ce52 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x71c880eb snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0x75f39201 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x86fd3083 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f24f722 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x91d89a2b snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x93cc5380 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9fa04d17 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xaa702319 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xac732654 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xad1ff7d8 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbe75d826 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xbf170e1e snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xc11024c5 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xc78808b0 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xca184733 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0xd3cd9a9c snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xd7c412c7 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xd827e6f0 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xe2054bd7 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xe59f9156 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xedc64ab9 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xfaf8e5e4 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-compress 0x41739be7 snd_compr_free_pages +EXPORT_SYMBOL sound/core/snd-compress 0xcc73fe63 snd_compr_malloc_pages +EXPORT_SYMBOL sound/core/snd-hwdep 0x9a873cba snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00f9393f snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x059f42fb snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL sound/core/snd-pcm 0x09f2b969 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x11eba48e snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL sound/core/snd-pcm 0x1bbd5551 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x22e7e61d snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x3354c5ae snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x374d953b __snd_pcm_lib_xfer +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x4638bad8 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x4a280c7d snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x4df0f92f snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x51d672f4 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5dea1f4a snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x644920ea snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x66d111c5 snd_pcm_create_iec958_consumer +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69255f54 snd_pcm_hw_limit_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6942fa67 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x75196fb5 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x75870b9a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x7c57555d snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x7df325ad snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x80b49283 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x80d5bb06 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x87f45987 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x93e48d8b snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x97654a0c snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x9ccbf487 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa4f4bdba _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xae08957b snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xae7ebf9c snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xb6504869 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xb67fdca5 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xb7e16dec snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc2f718c8 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xc4fc4415 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xc5ed1546 snd_pcm_set_managed_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc8a013eb snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xcdad38e4 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd13a42a9 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xd205ad1a snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xdea9b0bf snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xdef59b5a snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xe1584d14 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe6460f08 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xf1fba2c4 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xfb932f65 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xfdbff66f snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0fa05d63 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x19f86733 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e2de27e __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x233d6030 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x386b2e65 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x39f5ff51 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x58d73b58 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x69d0cee1 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x71a2cedc snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7a17960c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x82aa2375 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92436cb3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x935840c7 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7b5b1b3 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaa69b3fc snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbaf2c954 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xde191d0f snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xec439250 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xed878dac snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd4a6bfe snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0xf8b59678 snd_seq_device_new +EXPORT_SYMBOL sound/core/snd-timer 0x09daf47b snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x1f1d1950 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x2e994da2 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x48cc46d2 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x561bce2f snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x56d2980d snd_timer_instance_free +EXPORT_SYMBOL sound/core/snd-timer 0x6ce9c94a snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x80583ebd snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x8f47ad9a snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xb64211e1 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xdb6d6d76 snd_timer_instance_new +EXPORT_SYMBOL sound/core/snd-timer 0xdf04740d snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xee979a7a snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xfec12feb snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xffbee3fa snd_timer_notify +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xfabb5b20 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05b86544 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0fa76d76 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x144416b7 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x544fd65b snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7bed2d13 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7fc57517 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb5d04c6b snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc2aabd9b snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xef2d3728 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x097f1882 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1a566e81 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x29a34a3b snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3e1f722e snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x50df7fc5 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa642ffeb snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc892eed5 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xca1a3bd0 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcbbd61ec snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x00fa0ca2 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04c850eb avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1b153dc6 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x320cd88e fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3f3e7a3c amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48de2cbe snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ac19f6a cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59b883eb cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5b27a226 cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63825173 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x69394c4d cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a8f62f5 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6b016d0b fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7db6af88 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7e8506a6 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x809aff1e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96375404 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3e2b753 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xafa229a3 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc196525a amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc27632e5 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcafbf0b5 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xccdc2564 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4c3ea8f cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9f38b30 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xddaa45f8 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdfa88633 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xed2f2c01 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee32c051 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xff2394b2 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x59b0a881 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x5e152a68 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x601c7b63 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x644a1d55 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x64e07725 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7c843db8 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa1020492 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa53ced34 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcea82dc7 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe98263f0 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1d5badbe snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6f70f58b snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd8ac5687 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xdb0d9dcf snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xeaa418d6 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf1582c7d snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3821be3d snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3cb98beb snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6bf08f7a snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x76dbde72 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x7ee385b5 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xaff2fe0f snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1c2bc373 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x44314de8 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x57e0cf77 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x96082c41 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc9e7feeb snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xcced4ec9 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4ca009fb snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x70432fa3 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x75a1f82c snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe1bdda78 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe74a3691 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf4ea3a4e snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0a1c2fbd snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x29303c53 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x38e705a6 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3a664933 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x45425bc6 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x506982ac snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbed55ea6 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xde572442 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xebed56e9 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf26c3ef9 snd_sbdsp_reset +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x01c35d00 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1e3eb124 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x287b7d63 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x290550a3 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5b320fdf snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x627a8296 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x64ced869 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7428a9d0 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8a39fd94 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x919b27a6 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x91a8e94a snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa364457c snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3eeaf54 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb26c41bd snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc81bd01b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe288e5e1 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf3db091a snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x8743ec1f hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x21080768 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4f4ef18f snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x61831b0b snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7e9e6f78 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa89e5a4c snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcf8fda95 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcfe3f80c snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xde56f107 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe843b330 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x338ac059 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x4ae27828 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd127597f snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x092f315a oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0c3da176 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x10449365 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1c6d880d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x205861a6 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x275c085c oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x34e2872c oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x40c6a397 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x46d2aee3 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5b9c8b70 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6e112812 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81e4ab1e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84599585 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x85958d2b oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c7c365c oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa00b7004 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb007c175 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb04ad0b1 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc82c40f3 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd67a2917 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xefe9be02 oxygen_write8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x87696ad6 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc26c8004 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc8aedfa2 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe18c3ed1 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xed34c0a3 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x0de78b33 pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x81ba0ed8 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x293fb1ab tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x5771cc75 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x42c7690a aic32x4_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x77aeaa93 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xd2b76a62 aic32x4_remove +EXPORT_SYMBOL sound/soc/snd-soc-core 0xfc2adef7 snd_soc_alloc_ac97_component +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x060d0bae snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x08749332 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x088a8451 snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x08cab950 sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x09664817 snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x12a52946 sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x19e2622d sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1d22a5ea sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x27e0a80e sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2e6cc79a snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2f116e09 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3430d206 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x37ff648d snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3be6ad81 snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x43eca2cd snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x44a14959 snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x45079f43 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x51769d46 snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x54e66a1f snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x56d11c3a snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5b15cf25 snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x67386fd5 snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x71979c7a sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x71fbc74a snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x79710cab sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7df01a48 snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x81699932 snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x91c5020d snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9b242a10 sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa18aeb8e snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa309e8c3 snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa9d1ccf2 snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xabaeeaa5 snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb2bc03ee snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb7d7c7d7 snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbc25bf15 snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbdd135c3 snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbeffde77 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbf92db89 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc3d70e38 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc3e55cc1 sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc563b625 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc65a3c40 sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcce54541 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfdc5f98 sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd1f4f457 snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdde06c72 snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe5d40906 snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xec0fdae6 snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf1510b2e sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf880b67a snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfac69f17 snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfb6879d4 snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfd0d2baf snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfe1fbd4a snd_sof_ipc_valid +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x892b1380 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x95e4dc20 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xd40f15ad register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xdd8cf99e register_sound_special +EXPORT_SYMBOL sound/soundcore 0xf13ddfb2 sound_class +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x07c55290 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2cf20b9e snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4c2ac028 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x62d1acd1 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8b436f05 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe7f398ad snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x293ac667 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x34ac95ae snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x48f920c4 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7d95566f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x85659341 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97bb24f2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9db98086 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe2935f8c snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x8283c142 __snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/hio/hio 0x134a64d4 ssd_set_wmode +EXPORT_SYMBOL ubuntu/hio/hio 0x18d09cbf ssd_submit_pbio +EXPORT_SYMBOL ubuntu/hio/hio 0x24cd2441 ssd_unregister_event_notifier +EXPORT_SYMBOL ubuntu/hio/hio 0x2fdcf409 ssd_get_version +EXPORT_SYMBOL ubuntu/hio/hio 0x4c241286 ssd_get_pciaddr +EXPORT_SYMBOL ubuntu/hio/hio 0x4d7f26b3 ssd_set_otprotect +EXPORT_SYMBOL ubuntu/hio/hio 0x51bab4e2 ssd_get_temperature +EXPORT_SYMBOL ubuntu/hio/hio 0x81b856e8 ssd_get_label +EXPORT_SYMBOL ubuntu/hio/hio 0x8ecca4d0 ssd_bm_status +EXPORT_SYMBOL ubuntu/hio/hio 0xca33105a ssd_register_event_notifier +EXPORT_SYMBOL ubuntu/hio/hio 0xdaaf6cec ssd_reset +EXPORT_SYMBOL vmlinux 0x00094768 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x000adffc pci_iomap_range +EXPORT_SYMBOL vmlinux 0x000bb5e8 bdev_read_only +EXPORT_SYMBOL vmlinux 0x0031dcbf ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x006cc913 tcp_req_err +EXPORT_SYMBOL vmlinux 0x0080923b netdev_err +EXPORT_SYMBOL vmlinux 0x00853248 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x008870a7 proc_mkdir +EXPORT_SYMBOL vmlinux 0x00962201 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x00a4b044 amd_iommu_deactivate_guest_mode +EXPORT_SYMBOL vmlinux 0x00a776df watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00baaf87 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x00baead5 __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x00c2aa02 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x00c77fba t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x00c8eaf1 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dc93a4 nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0x00dcec9d xfrm_state_add +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01109786 netdev_state_change +EXPORT_SYMBOL vmlinux 0x01165bc8 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x011ca083 convert_art_to_tsc +EXPORT_SYMBOL vmlinux 0x011d0e53 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x0131118f ip_ct_attach +EXPORT_SYMBOL vmlinux 0x013f26ae dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x0142167b sk_net_capable +EXPORT_SYMBOL vmlinux 0x01438d4a tty_devnum +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x014e9a7a genphy_loopback +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x01617699 no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0x017294c8 dquot_alloc +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x018f65ce misc_deregister +EXPORT_SYMBOL vmlinux 0x01b05990 pci_find_resource +EXPORT_SYMBOL vmlinux 0x01b6865c xa_get_mark +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01cec2c5 unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x01f91db4 __devm_request_region +EXPORT_SYMBOL vmlinux 0x0204ac25 param_ops_short +EXPORT_SYMBOL vmlinux 0x02088219 md_handle_request +EXPORT_SYMBOL vmlinux 0x020982be alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02171d33 fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0x021f10d4 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x0228925f iowrite64_hi_lo +EXPORT_SYMBOL vmlinux 0x02293ac3 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023d1b90 wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0x023dcac6 dev_deactivate +EXPORT_SYMBOL vmlinux 0x023eb5a2 sync_blockdev +EXPORT_SYMBOL vmlinux 0x02438bad mdiobus_read +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x0296fd1e skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0x02a04810 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a3793b bdgrab +EXPORT_SYMBOL vmlinux 0x02aa8853 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x02c656b6 acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02eed3f1 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0300ce35 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x03098c20 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x030d5b4c xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x031b28d5 may_umount_tree +EXPORT_SYMBOL vmlinux 0x032f8ce5 pci_resize_resource +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x03857bd4 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x038bb422 rproc_add +EXPORT_SYMBOL vmlinux 0x03920779 mmc_start_request +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03a3f3b1 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x03be2ddd setattr_copy +EXPORT_SYMBOL vmlinux 0x03cbf1f3 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x03fcfd75 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040cc9d3 kfree_skb +EXPORT_SYMBOL vmlinux 0x0423bf4a gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x04333d02 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x0434048e rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0x0439255e xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045457ca add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x04639fec inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x0466f4ba dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x0484c6c4 acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x04add6cf thaw_super +EXPORT_SYMBOL vmlinux 0x04af8417 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x04bd858e agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04ef0111 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x04f32139 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051d58e8 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x054b8d97 genphy_read_abilities +EXPORT_SYMBOL vmlinux 0x055e77e8 jiffies_64 +EXPORT_SYMBOL vmlinux 0x0573d573 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x05831eeb kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x05e3296b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x05e3976f rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0x05e43bde dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x05f820ba nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x05fc0153 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x060ba97c gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062a39c9 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x0630daf9 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063df46b nobh_write_end +EXPORT_SYMBOL vmlinux 0x064ceee5 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x066aa64d __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x0688e5ad pnp_is_active +EXPORT_SYMBOL vmlinux 0x069ed3a5 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x06a86bc1 iowrite16 +EXPORT_SYMBOL vmlinux 0x06bd88b5 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06cebac0 rproc_free +EXPORT_SYMBOL vmlinux 0x06ee88c4 param_set_ullong +EXPORT_SYMBOL vmlinux 0x07150783 pps_event +EXPORT_SYMBOL vmlinux 0x071dd8d7 phy_write_mmd +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073c85c2 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x0745a981 xa_erase +EXPORT_SYMBOL vmlinux 0x0760ff06 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x0767c958 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x076cac79 __breadahead +EXPORT_SYMBOL vmlinux 0x0772974f pci_disable_device +EXPORT_SYMBOL vmlinux 0x078f752c pcim_enable_device +EXPORT_SYMBOL vmlinux 0x07904b77 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x07937280 pci_pme_active +EXPORT_SYMBOL vmlinux 0x07956492 ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x07a60fbc input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07be5a2d input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ceeac9 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x07d675c2 d_splice_alias +EXPORT_SYMBOL vmlinux 0x07f4a447 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x080530aa param_set_byte +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x08141de9 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x08162c74 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x081861ad tty_kref_put +EXPORT_SYMBOL vmlinux 0x081b145f flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0x081d3447 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x08298bc6 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0854ee04 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x085cda85 flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x085f4d95 input_register_device +EXPORT_SYMBOL vmlinux 0x087b7bd1 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x087c916f __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x088bc878 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x089a0ee7 read_cache_pages +EXPORT_SYMBOL vmlinux 0x089c21b4 set_anon_super +EXPORT_SYMBOL vmlinux 0x08b0d0f3 neigh_for_each +EXPORT_SYMBOL vmlinux 0x08be8e05 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x08c3a506 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x08ccc0f2 __mod_node_page_state +EXPORT_SYMBOL vmlinux 0x08ec2901 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x08ee75e1 mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x08f433c2 is_nd_dax +EXPORT_SYMBOL vmlinux 0x08f81005 request_key_rcu +EXPORT_SYMBOL vmlinux 0x090278a6 dm_put_device +EXPORT_SYMBOL vmlinux 0x091b613f seq_read +EXPORT_SYMBOL vmlinux 0x092e26bf acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x093712e5 acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x0944c43f node_states +EXPORT_SYMBOL vmlinux 0x09541b18 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x0957423a __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0x09682235 down_timeout +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097a6232 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x097af021 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0991e308 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x09b3a080 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ced4e6 simple_release_fs +EXPORT_SYMBOL vmlinux 0x09cff069 vga_switcheroo_unlock_ddc +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d73df8 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x09da0ba4 xa_set_mark +EXPORT_SYMBOL vmlinux 0x0a0ebc08 __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x0a1da801 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0ab2c36c max8925_set_bits +EXPORT_SYMBOL vmlinux 0x0ab85d3e ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x0ac323c0 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad10eb8 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x0ad131b7 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x0ae2b753 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x0af20eae down_read_interruptible +EXPORT_SYMBOL vmlinux 0x0b125290 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x0b15c823 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b22a847 mount_bdev +EXPORT_SYMBOL vmlinux 0x0b26b8c8 acpi_run_osc +EXPORT_SYMBOL vmlinux 0x0b290ada dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b30f0be set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0b3e49c9 flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x0b637410 cr4_update_irqsoff +EXPORT_SYMBOL vmlinux 0x0b67be53 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0b6acc87 sock_no_getname +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b744416 scsi_host_busy +EXPORT_SYMBOL vmlinux 0x0b8fe29a sock_no_mmap +EXPORT_SYMBOL vmlinux 0x0ba44515 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x0ba742e1 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x0baa8943 mmc_get_card +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c06709c md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c2b5a56 phy_suspend +EXPORT_SYMBOL vmlinux 0x0c4beaff __skb_checksum +EXPORT_SYMBOL vmlinux 0x0c626460 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x0c65b95b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x0c664b2b get_tree_bdev +EXPORT_SYMBOL vmlinux 0x0c68df3e fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x0c699683 update_devfreq +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6d48c4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x0c7384a8 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x0c77ec81 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x0c7f8e24 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x0c83bb60 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0x0cd20dc3 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0ce3cfe3 ll_rw_block +EXPORT_SYMBOL vmlinux 0x0ce9df38 key_validate +EXPORT_SYMBOL vmlinux 0x0cf8fdfe framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x0cfdd5e1 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d1a3781 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x0d21bde2 vfio_pin_pages +EXPORT_SYMBOL vmlinux 0x0d22ae43 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x0d32d139 free_buffer_head +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d627b30 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x0d6f786d create_empty_buffers +EXPORT_SYMBOL vmlinux 0x0d9739a8 _dev_err +EXPORT_SYMBOL vmlinux 0x0da29e2e rfkill_alloc +EXPORT_SYMBOL vmlinux 0x0dc6b043 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x0ddad1a1 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x0dec5ef7 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x0df0fc70 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0df7f381 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x0e091489 __ip_options_compile +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e23b37f alloc_cpumask_var_node +EXPORT_SYMBOL vmlinux 0x0e27a2dd ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0x0e391374 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x0e464ade __inc_node_page_state +EXPORT_SYMBOL vmlinux 0x0e5b031e dma_async_device_register +EXPORT_SYMBOL vmlinux 0x0e5e73ac fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor +EXPORT_SYMBOL vmlinux 0x0e79493d tty_port_close_end +EXPORT_SYMBOL vmlinux 0x0e8189be dev_addr_del +EXPORT_SYMBOL vmlinux 0x0e8709f9 genphy_read_status +EXPORT_SYMBOL vmlinux 0x0e973019 flush_signals +EXPORT_SYMBOL vmlinux 0x0ea375e2 sock_i_uid +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed8bf3d locks_init_lock +EXPORT_SYMBOL vmlinux 0x0ed9ac76 sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0x0f05c7b8 __x86_indirect_thunk_r15 +EXPORT_SYMBOL vmlinux 0x0f066bd4 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f1503d0 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0x0f2d23c9 ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x0f37ca89 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fafe77d genlmsg_put +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0fe61506 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x0ff4178f __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x0ff80f59 zalloc_cpumask_var +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x0fffc164 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x10003fed single_open +EXPORT_SYMBOL vmlinux 0x10037f34 dec_node_page_state +EXPORT_SYMBOL vmlinux 0x10045705 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x1014a72e __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x102a02f7 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x102bed66 cpu_info +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x1039fa61 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x10443a35 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x10544230 bdi_put +EXPORT_SYMBOL vmlinux 0x1057a279 bsearch +EXPORT_SYMBOL vmlinux 0x1063bfd7 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x10737650 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1081d492 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x10a5d46e sock_edemux +EXPORT_SYMBOL vmlinux 0x10b6092b md_register_thread +EXPORT_SYMBOL vmlinux 0x10bb4eb9 netlink_set_err +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10e4bda5 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x10efa86a dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a2084 disk_end_io_acct +EXPORT_SYMBOL vmlinux 0x11128447 eisa_bus_type +EXPORT_SYMBOL vmlinux 0x1117ea92 file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x111e7233 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x1133a93e inet_gro_complete +EXPORT_SYMBOL vmlinux 0x11585831 seg6_push_hmac +EXPORT_SYMBOL vmlinux 0x11588322 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x115abe25 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116fc5a8 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11716274 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x1172c645 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0x1177911d set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x1187d567 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x11999e2c __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x11b2a704 sock_release +EXPORT_SYMBOL vmlinux 0x11b86f2d __x86_retpoline_rbp +EXPORT_SYMBOL vmlinux 0x11c509d1 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x11c53ad1 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x11c8164a pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x11cbb053 dump_truncate +EXPORT_SYMBOL vmlinux 0x11dc98e6 netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11e4b6c7 flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0x11f0e120 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x12133ec9 kthread_stop +EXPORT_SYMBOL vmlinux 0x1215fffd tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x12254ac9 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1232c6c6 inc_nlink +EXPORT_SYMBOL vmlinux 0x1245d2ab ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x12477385 i2c_transfer +EXPORT_SYMBOL vmlinux 0x125b04a5 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x126229e9 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x1278221d ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x129d78da sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a436da param_set_ulong +EXPORT_SYMBOL vmlinux 0x12a89e1c vmap +EXPORT_SYMBOL vmlinux 0x12ac5e3e key_alloc +EXPORT_SYMBOL vmlinux 0x12b2f5f8 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x12b5dbf4 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x12c18988 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12e8abab devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x12f1f78e __serio_register_port +EXPORT_SYMBOL vmlinux 0x12f6a961 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12f94955 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x130485c8 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x130afd75 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x1310358c put_cmsg +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x131a6146 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x13212e3e devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132778bd pci_enable_device +EXPORT_SYMBOL vmlinux 0x13372565 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x133d9e47 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x1344d7e6 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x134ce9ff ex_handler_clear_fs +EXPORT_SYMBOL vmlinux 0x1352ca46 backlight_force_update +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x1389619c __max_die_per_package +EXPORT_SYMBOL vmlinux 0x13971e31 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x13a3f79d neigh_ifdown +EXPORT_SYMBOL vmlinux 0x13a59087 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x13b85be4 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x13b8a7db blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x13b9c91d netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x13c33007 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dca2db gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x13e07c05 phy_print_status +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x140439b3 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x140d2a6c tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x14112beb ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x141271bf acpi_dev_found +EXPORT_SYMBOL vmlinux 0x141369d3 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x1435386b simple_rmdir +EXPORT_SYMBOL vmlinux 0x1442b56e filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x14510720 vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x14709f5f dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x1481799e file_open_root +EXPORT_SYMBOL vmlinux 0x149fb82f alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x14a2c270 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14c6c488 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x14c881e6 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x14c940d3 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x14d23636 param_set_uint +EXPORT_SYMBOL vmlinux 0x14da508b peernet2id +EXPORT_SYMBOL vmlinux 0x14da6a04 zap_page_range +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x14fe6bd1 fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x150422e7 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x150e3657 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x151c8de8 path_is_mountpoint +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155892a6 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x155bd08a mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0x15702ad6 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x1573f169 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x1583dc75 try_to_release_page +EXPORT_SYMBOL vmlinux 0x158fc6f7 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x159063e4 kill_litter_super +EXPORT_SYMBOL vmlinux 0x15ba50a6 jiffies +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c035d5 __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x15c18b7f mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x15c85de3 mempool_init +EXPORT_SYMBOL vmlinux 0x15d6b51d scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x15f36268 stream_open +EXPORT_SYMBOL vmlinux 0x15f7983f __x86_retpoline_r13 +EXPORT_SYMBOL vmlinux 0x15fc61ab xfrm_init_state +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160f1f46 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x161afcde xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x16286538 iowrite64be_lo_hi +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x16301b34 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x1636b03e configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x16390fc3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x1662d709 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x16663587 I_BDEV +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167c9bcf filp_close +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x167f29fb vfs_getattr +EXPORT_SYMBOL vmlinux 0x16805ec5 phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0x16930184 blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0x16970309 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x169874e7 posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x169cb4db ip6_frag_next +EXPORT_SYMBOL vmlinux 0x16b0426d sg_miter_start +EXPORT_SYMBOL vmlinux 0x16bf7f3b pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x16ca5350 component_match_add_release +EXPORT_SYMBOL vmlinux 0x16cdc340 acpi_get_table +EXPORT_SYMBOL vmlinux 0x16d8ad29 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x16dee44d dma_fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f000ff sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x16f7bd00 blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0x170ddf79 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0x1716a3a1 open_exec +EXPORT_SYMBOL vmlinux 0x1727dc44 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x17424e5f input_register_handle +EXPORT_SYMBOL vmlinux 0x17477ce8 thaw_bdev +EXPORT_SYMBOL vmlinux 0x175e33fb dma_spin_lock +EXPORT_SYMBOL vmlinux 0x1765ea1f __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x1771c9fe migrate_page +EXPORT_SYMBOL vmlinux 0x179515ca md_unregister_thread +EXPORT_SYMBOL vmlinux 0x17954c74 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x179b425d vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0x17b8566c skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0x17be68ca acpi_clear_event +EXPORT_SYMBOL vmlinux 0x17be81be cdev_init +EXPORT_SYMBOL vmlinux 0x17c1d298 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0x17cbed06 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x17d48cdc tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x17e3d0d1 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x17e472f0 audit_log_start +EXPORT_SYMBOL vmlinux 0x17e802df dquot_free_inode +EXPORT_SYMBOL vmlinux 0x17eca8b9 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f79ddf ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x18051173 d_find_alias +EXPORT_SYMBOL vmlinux 0x180664bf mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x1826d66f put_fs_context +EXPORT_SYMBOL vmlinux 0x182aa4c2 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x183924dd tcp_seq_start +EXPORT_SYMBOL vmlinux 0x183b1522 passthru_features_check +EXPORT_SYMBOL vmlinux 0x18486dc7 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x185f2999 done_path_create +EXPORT_SYMBOL vmlinux 0x1879f85d xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x187a4ecd __tracepoint_read_msr +EXPORT_SYMBOL vmlinux 0x18888d00 downgrade_write +EXPORT_SYMBOL vmlinux 0x188a10f5 freeze_bdev +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x18941211 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x189ce8f9 proc_set_user +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18bbaf89 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x18c6c04d nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x18cf7ba9 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18efd028 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x191ca2d2 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x1953c958 mempool_create +EXPORT_SYMBOL vmlinux 0x19567d06 vfio_info_cap_shift +EXPORT_SYMBOL vmlinux 0x195c5e91 iterate_fd +EXPORT_SYMBOL vmlinux 0x197935ce xp_alloc +EXPORT_SYMBOL vmlinux 0x197dfa1f iget_locked +EXPORT_SYMBOL vmlinux 0x1980e29a ata_link_printk +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x1993f4bd fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x199e9bc6 path_put +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a0bec8 neigh_lookup +EXPORT_SYMBOL vmlinux 0x19b2cd7d tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x19b96723 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c20e78 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x19dc6678 file_update_time +EXPORT_SYMBOL vmlinux 0x19df99b9 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x19efb352 udp6_seq_ops +EXPORT_SYMBOL vmlinux 0x19f134dc xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x19f7357c genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x1a0414cf register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x1a107de2 ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0x1a13253b acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a276a9b block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1a355704 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x1a3f8684 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a47b0db devm_memunmap +EXPORT_SYMBOL vmlinux 0x1a4c58e8 pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a713c09 kthread_bind +EXPORT_SYMBOL vmlinux 0x1a7530e8 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x1a88e8fb tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x1a9866a9 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9e96fa acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ad1cd90 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b247983 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x1b2f844c kset_unregister +EXPORT_SYMBOL vmlinux 0x1b45b5cc param_set_bint +EXPORT_SYMBOL vmlinux 0x1b4f2bf5 bio_advance +EXPORT_SYMBOL vmlinux 0x1b597b7a swake_up_all +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b7529a4 udp_disconnect +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b7c2365 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x1b81a1c8 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x1b887baa tcp_splice_read +EXPORT_SYMBOL vmlinux 0x1b8a0add mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0x1b8b8f9a register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc +EXPORT_SYMBOL vmlinux 0x1bb8942d flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x1bbc5c71 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x1bcd4595 md_write_start +EXPORT_SYMBOL vmlinux 0x1bd4285c dev_add_pack +EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent +EXPORT_SYMBOL vmlinux 0x1bda6964 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x1bde7c12 amd_iommu_rlookup_table +EXPORT_SYMBOL vmlinux 0x1be345b1 get_phy_device +EXPORT_SYMBOL vmlinux 0x1bedd677 dev_mc_init +EXPORT_SYMBOL vmlinux 0x1bf1a377 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x1c1b9f8e _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1c2784f6 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x1c2bfa37 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c537373 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0x1c58427f acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x1c5922b7 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x1c6162c9 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x1c6fd26b inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1c7b28e6 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x1c815d69 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x1c8f0bef mroute6_is_socket +EXPORT_SYMBOL vmlinux 0x1cab9ee7 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0x1cadaa77 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cc59155 pci_get_class +EXPORT_SYMBOL vmlinux 0x1ccb7f41 fd_install +EXPORT_SYMBOL vmlinux 0x1cd8438b pxm_to_node +EXPORT_SYMBOL vmlinux 0x1cdd10ac xfrm_lookup +EXPORT_SYMBOL vmlinux 0x1ce02979 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x1cf248a7 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0x1cf8c279 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d134145 init_pseudo +EXPORT_SYMBOL vmlinux 0x1d19f77b physical_mask +EXPORT_SYMBOL vmlinux 0x1d1abdf0 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x1d24c881 ___ratelimit +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d40b6f3 idr_for_each +EXPORT_SYMBOL vmlinux 0x1d4c4dcc __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x1d58d863 nf_log_register +EXPORT_SYMBOL vmlinux 0x1d5d82d0 page_mapped +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d7d3a03 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1d87fd22 dup_iter +EXPORT_SYMBOL vmlinux 0x1d8e7db8 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x1d925103 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x1da1cbe7 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1deb96db sock_bindtoindex +EXPORT_SYMBOL vmlinux 0x1df1dea3 key_link +EXPORT_SYMBOL vmlinux 0x1df63e88 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e0cd7fe acpi_detach_data +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e45737c param_ops_bool +EXPORT_SYMBOL vmlinux 0x1e47493c __alloc_skb +EXPORT_SYMBOL vmlinux 0x1e62643b skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x1e6cbf05 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7175fb sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x1e7ac89d tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0x1e879e71 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x1e95047a inet_del_offload +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea2510f rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x1eae8f47 ip_frag_next +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebdc439 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x1ed8b599 __x86_indirect_thunk_r8 +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1ee1de77 block_write_end +EXPORT_SYMBOL vmlinux 0x1ef15d47 irq_set_chip +EXPORT_SYMBOL vmlinux 0x1f03912b ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0x1f152dcf iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1f1923ae serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x1f30dc89 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x1f31d073 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x1f3de356 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x1f4b32b0 eth_header_parse +EXPORT_SYMBOL vmlinux 0x1f54b77e skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x1f557414 gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x1f657fbc flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x1f699499 sock_no_listen +EXPORT_SYMBOL vmlinux 0x1f6be3af sock_no_connect +EXPORT_SYMBOL vmlinux 0x1f9b19a9 dquot_file_open +EXPORT_SYMBOL vmlinux 0x1fa802ec scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc0cc7c intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0x1fcda0f3 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201577cb reuseport_alloc +EXPORT_SYMBOL vmlinux 0x202246d0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x2024368e qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x20463df4 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204bf1e4 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x2059ddb1 bio_chain +EXPORT_SYMBOL vmlinux 0x2071d06c clk_add_alias +EXPORT_SYMBOL vmlinux 0x20723bab jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2084e70c proto_unregister +EXPORT_SYMBOL vmlinux 0x2085aada nd_device_unregister +EXPORT_SYMBOL vmlinux 0x20868aed cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x20a1b519 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20af35ca compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x20ba4f3e rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0x20cbb30a __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x20cbd6e9 touch_atime +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ee76d5 ppp_input +EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x210dfe32 pin_user_pages +EXPORT_SYMBOL vmlinux 0x211130c1 alloc_cpumask_var +EXPORT_SYMBOL vmlinux 0x2111c4b1 lru_cache_add +EXPORT_SYMBOL vmlinux 0x2114f32c simple_setattr +EXPORT_SYMBOL vmlinux 0x2128a102 bioset_init +EXPORT_SYMBOL vmlinux 0x2128c783 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x21335cec mmc_retune_release +EXPORT_SYMBOL vmlinux 0x2137c570 dst_release_immediate +EXPORT_SYMBOL vmlinux 0x213868cb blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x214529b4 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x214af502 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x215ad28b pci_irq_vector +EXPORT_SYMBOL vmlinux 0x2162ca28 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x21672ba1 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x216af8f9 simple_write_end +EXPORT_SYMBOL vmlinux 0x2177bd71 acpi_disable_event +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x219e67a8 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x21a22aca ___pskb_trim +EXPORT_SYMBOL vmlinux 0x21a7a934 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21db7bdf configfs_register_default_group +EXPORT_SYMBOL vmlinux 0x21dd6568 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21e94ecf __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x21ef374c try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x220a0950 devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0x22131d58 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x22163f8f cdev_add +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222f1b35 mdio_device_remove +EXPORT_SYMBOL vmlinux 0x2234ca51 acpi_match_platform_list +EXPORT_SYMBOL vmlinux 0x22533553 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x225cb92e block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2261626e module_put +EXPORT_SYMBOL vmlinux 0x2265d7fb netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22839944 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x2285672d bh_submit_read +EXPORT_SYMBOL vmlinux 0x22ab0a77 generic_listxattr +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dc4bbf blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x22de4931 amd_iommu_register_ga_log_notifier +EXPORT_SYMBOL vmlinux 0x22e83e8c config_item_set_name +EXPORT_SYMBOL vmlinux 0x22f1996c pneigh_lookup +EXPORT_SYMBOL vmlinux 0x230449e2 ata_print_version +EXPORT_SYMBOL vmlinux 0x2308307f __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2316f65d ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x231ef38e adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x233fef59 sget +EXPORT_SYMBOL vmlinux 0x2356c138 devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0x2373525b devm_request_resource +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x23943a84 page_pool_destroy +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cabbb1 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x23d476fb pci_claim_resource +EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23f48a65 devm_free_irq +EXPORT_SYMBOL vmlinux 0x23f71fb8 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240dcd9b acpi_device_hid +EXPORT_SYMBOL vmlinux 0x24210299 elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242aab52 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x243197d0 xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x2437f267 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x24395034 inet_release +EXPORT_SYMBOL vmlinux 0x243c5f36 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24516b99 __close_fd +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a89b2 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x24808644 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2498fdc8 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x24a0c44f i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x24aa50d6 tcp_child_process +EXPORT_SYMBOL vmlinux 0x24b28e98 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x24b48b51 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24e03931 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x24eea456 devm_clk_get +EXPORT_SYMBOL vmlinux 0x2521b3b1 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x2524ba17 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252f3155 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2535b646 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x256c140f set_posix_acl +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25772b86 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25842f17 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x258af398 inet_offloads +EXPORT_SYMBOL vmlinux 0x258c709a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x258d2bc2 serio_bus +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x25974000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x25a547aa skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x25c98488 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x25d43379 sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0x25db1577 do_trace_write_msr +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f16894 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x26029170 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x2604ef3a d_tmpfile +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26128d52 seq_printf +EXPORT_SYMBOL vmlinux 0x2616855a put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0x26226bf9 ilookup +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c3152 bcmp +EXPORT_SYMBOL vmlinux 0x263ed23b __x86_indirect_thunk_r12 +EXPORT_SYMBOL vmlinux 0x26447400 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x264a8a37 registered_fb +EXPORT_SYMBOL vmlinux 0x26511e33 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x26519d72 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x266c223e bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x269a0bbb max8925_reg_read +EXPORT_SYMBOL vmlinux 0x26be8af8 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x26c5cc9c security_sk_clone +EXPORT_SYMBOL vmlinux 0x26cc73c3 complete_and_exit +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26f8f0b8 iowrite16be +EXPORT_SYMBOL vmlinux 0x27043d9b soft_cursor +EXPORT_SYMBOL vmlinux 0x2712e603 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x272c0891 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x272c5451 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x273d9edd add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x277081e6 drop_nlink +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x27810361 acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x279266f2 genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x2798b246 generic_write_checks +EXPORT_SYMBOL vmlinux 0x279be432 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0x27a2c5b2 tty_hangup +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27cfd2cb phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x27db34d4 agp_bridge +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281b4a54 inet_sendpage +EXPORT_SYMBOL vmlinux 0x28225eef mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x2833afa0 end_page_writeback +EXPORT_SYMBOL vmlinux 0x2833f577 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x286a4bc2 xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0x28738c4f proc_create_mount_point +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x287c59fb __sb_end_write +EXPORT_SYMBOL vmlinux 0x287e5f4f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x28807c3f agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x28bbf818 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x28c0cc84 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x28cc4798 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28e6468a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x28f20b66 lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0x28fc4e7a configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x2914ea2d ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x29151624 block_truncate_page +EXPORT_SYMBOL vmlinux 0x2920a00d agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x29236c30 unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x293b6c7a xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0x2945baf5 generic_update_time +EXPORT_SYMBOL vmlinux 0x294b1773 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x295abb09 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0x2964dc95 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x296cb509 __xa_insert +EXPORT_SYMBOL vmlinux 0x297220ef softnet_data +EXPORT_SYMBOL vmlinux 0x29875985 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x2988dedf pci_iomap +EXPORT_SYMBOL vmlinux 0x29969fd4 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x299fa886 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x29ad8e33 x86_hyper_type +EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x2a00fc21 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x2a0a8fa7 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x2a0d2a49 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x2a15e264 notify_change +EXPORT_SYMBOL vmlinux 0x2a165070 path_is_under +EXPORT_SYMBOL vmlinux 0x2a1ca546 mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x2a1f0403 mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a45a6de mpage_readpage +EXPORT_SYMBOL vmlinux 0x2a5ac46e __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2a6ab287 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x2a738fbc scm_fp_dup +EXPORT_SYMBOL vmlinux 0x2a7795ad sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2a959764 amd_iommu_pc_set_reg +EXPORT_SYMBOL vmlinux 0x2a99e7bd end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x2a9a131c pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2a9db4ee rproc_get_by_child +EXPORT_SYMBOL vmlinux 0x2aa00e26 intel_scu_ipc_dev_update +EXPORT_SYMBOL vmlinux 0x2aa0843e mempool_resize +EXPORT_SYMBOL vmlinux 0x2aa75bc0 cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0x2aaa9c6b task_work_add +EXPORT_SYMBOL vmlinux 0x2ab7989d mutex_lock +EXPORT_SYMBOL vmlinux 0x2abba8ea redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x2abec328 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2abf854c clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0x2ac4768d blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x2ac6d4e2 pci_restore_state +EXPORT_SYMBOL vmlinux 0x2aca9762 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x2ad50990 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x2ad54d10 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x2ae7fbdb xp_can_alloc +EXPORT_SYMBOL vmlinux 0x2ae87f6f mount_nodev +EXPORT_SYMBOL vmlinux 0x2b1c21b7 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x2b29e847 __put_user_ns +EXPORT_SYMBOL vmlinux 0x2b2aaadb unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x2b2bbfec balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x2b37dd2a netif_rx_ni +EXPORT_SYMBOL vmlinux 0x2b3e3083 __x86_retpoline_rdi +EXPORT_SYMBOL vmlinux 0x2b4a1798 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x2b58a581 elv_rb_del +EXPORT_SYMBOL vmlinux 0x2b593aa8 gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2b6613ce ip6_xmit +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b799cc6 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2bb6099e dq_data_lock +EXPORT_SYMBOL vmlinux 0x2bd60ab9 acpi_reset +EXPORT_SYMBOL vmlinux 0x2bf1298a pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x2c0cf44b inet_add_protocol +EXPORT_SYMBOL vmlinux 0x2c14a243 dev_uc_del +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3349f3 iommu_dma_get_resv_regions +EXPORT_SYMBOL vmlinux 0x2c541e7b radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x2c60829c __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x2c66da20 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x2c9a924d vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x2caf63d1 topology_phys_to_logical_die +EXPORT_SYMBOL vmlinux 0x2cb4c701 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x2cb64fa6 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x2cc18ade sock_alloc +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2cdf87a1 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x2ce6878a compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x2cec4b69 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x2cf07f3d vfs_rmdir +EXPORT_SYMBOL vmlinux 0x2cf08ffb generic_permission +EXPORT_SYMBOL vmlinux 0x2cf2123d inode_init_once +EXPORT_SYMBOL vmlinux 0x2cf61b3e flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfac02f mdio_bus_type +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d3a9af5 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0x2d4747dc __napi_schedule +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d5d0588 mdio_device_reset +EXPORT_SYMBOL vmlinux 0x2d621196 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x2d62fb03 release_sock +EXPORT_SYMBOL vmlinux 0x2d8f48f8 security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2da0e056 generic_file_open +EXPORT_SYMBOL vmlinux 0x2db3bc61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x2db3d320 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2db4e93d netdev_change_features +EXPORT_SYMBOL vmlinux 0x2dbd1dfa dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2de58aad scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2df2e0ce d_delete +EXPORT_SYMBOL vmlinux 0x2e008148 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x2e0b1deb dma_fence_get_status +EXPORT_SYMBOL vmlinux 0x2e13ea07 dma_pool_create +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e3556c9 set_device_ro +EXPORT_SYMBOL vmlinux 0x2e3bcce2 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e446195 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x2e5b9950 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e5fe09b xattr_full_name +EXPORT_SYMBOL vmlinux 0x2e63df66 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x2e71ab42 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x2e735c94 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x2e83c1e7 vfs_get_tree +EXPORT_SYMBOL vmlinux 0x2e971df8 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x2ea2c95c __x86_indirect_thunk_rax +EXPORT_SYMBOL vmlinux 0x2ec4bef1 mntput +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2ecc8406 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0x2edbeaf7 hex2bin +EXPORT_SYMBOL vmlinux 0x2ee23fe4 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2ee62b72 pci_get_slot +EXPORT_SYMBOL vmlinux 0x2f00478c netif_rx +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0b8e3d dm_table_get_md +EXPORT_SYMBOL vmlinux 0x2f261380 input_set_capability +EXPORT_SYMBOL vmlinux 0x2f28e14e mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2f77c30e logfc +EXPORT_SYMBOL vmlinux 0x2f817467 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x2f9397e8 inet6_getname +EXPORT_SYMBOL vmlinux 0x2fa94f67 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff484f2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x2ffc6895 phy_modify_paged +EXPORT_SYMBOL vmlinux 0x301ea32d sk_stream_error +EXPORT_SYMBOL vmlinux 0x301fa007 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0x302f3750 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x303bf7ef sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x303ca5a6 __put_cred +EXPORT_SYMBOL vmlinux 0x304b49c8 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x3051e30f pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3059bc4f tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x3082ba6a mmc_register_driver +EXPORT_SYMBOL vmlinux 0x30874337 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x3090148c ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30af45a1 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x30bf21c0 tcp_seq_stop +EXPORT_SYMBOL vmlinux 0x30dec207 __x86_retpoline_rcx +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f00d61 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0x3100cff9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3113ab68 skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x31746858 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x317a92e3 fb_blank +EXPORT_SYMBOL vmlinux 0x318d6fec mutex_is_locked +EXPORT_SYMBOL vmlinux 0x319d493d proc_dostring +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c62522 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x31ca3ffd gro_cells_init +EXPORT_SYMBOL vmlinux 0x31ee08df nvm_unregister +EXPORT_SYMBOL vmlinux 0x31fd9ece clk_get +EXPORT_SYMBOL vmlinux 0x32093ac1 bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x321cd315 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x3222d705 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x324f8af9 setattr_prepare +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32647dc5 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0x3265faed tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x3268b4a9 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x327a2a87 kill_pgrp +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x328ab4ef pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x329ada5d audit_log +EXPORT_SYMBOL vmlinux 0x32a815ce netdev_info +EXPORT_SYMBOL vmlinux 0x32ae5741 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x32b1bb8d fqdir_init +EXPORT_SYMBOL vmlinux 0x32bac116 to_nd_pfn +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32d6e0be fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x3324ef3b acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x332cdf00 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x33469b7e netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x3347ab04 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x3380d0a1 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x338d1373 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x33987118 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c2e6bf generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x33c5c3bb vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0x33dce09c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x33e02cc7 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x33fd9da4 acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x34024025 xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x3403df8a mark_page_accessed +EXPORT_SYMBOL vmlinux 0x340760a9 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x341f7e7a configfs_depend_item +EXPORT_SYMBOL vmlinux 0x3422bdc7 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x3431c80c is_acpi_data_node +EXPORT_SYMBOL vmlinux 0x3441445f msrs_free +EXPORT_SYMBOL vmlinux 0x34479b6e nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x344b03fa jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0x346bf617 dev_get_stats +EXPORT_SYMBOL vmlinux 0x3489859f acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x348aa406 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x348e8259 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x349ac524 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a1f7e3 acpi_processor_get_psd +EXPORT_SYMBOL vmlinux 0x34b20df8 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x34b3609e file_modified +EXPORT_SYMBOL vmlinux 0x34c302d8 pci_iounmap +EXPORT_SYMBOL vmlinux 0x34c4c5c7 cred_fscmp +EXPORT_SYMBOL vmlinux 0x34d3e587 ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x34df0e50 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x34f20450 del_gendisk +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f89363 acpi_terminate_debugger +EXPORT_SYMBOL vmlinux 0x35042f60 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x350ea558 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351c3dfa build_skb_around +EXPORT_SYMBOL vmlinux 0x352e2865 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x354b4a1e acpi_ut_trace +EXPORT_SYMBOL vmlinux 0x355f6e45 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35699cab i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x358c660f inet_recvmsg +EXPORT_SYMBOL vmlinux 0x359a2b42 register_md_personality +EXPORT_SYMBOL vmlinux 0x359ec42f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35d2aa0c ps2_begin_command +EXPORT_SYMBOL vmlinux 0x35dfa06f vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x36049dca pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x360a34e3 migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x361e9841 __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x362ef408 _copy_from_user +EXPORT_SYMBOL vmlinux 0x36399549 md_error +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x36694147 dev_set_alias +EXPORT_SYMBOL vmlinux 0x367af9be devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x3683c3f7 scsi_device_put +EXPORT_SYMBOL vmlinux 0x36b00b43 account_page_redirty +EXPORT_SYMBOL vmlinux 0x36c1dac2 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x36c25488 phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x37110088 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x3718f428 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x371e7f3a ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x372772ca xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3754bacb scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x37767b81 ipv4_specific +EXPORT_SYMBOL vmlinux 0x377d8004 acpi_error +EXPORT_SYMBOL vmlinux 0x3781d401 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x37a4c329 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b236f3 kernel_read +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c97836 vm_mmap +EXPORT_SYMBOL vmlinux 0x37d0992e dst_init +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x380ea855 filemap_flush +EXPORT_SYMBOL vmlinux 0x3812050a _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38211ba0 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x3825a7f4 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x38377964 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x38589d71 touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0x3860f294 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x386ddd39 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x387ddb6f t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x388587a6 sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388aa3c9 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x388b4457 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x389b872c param_get_invbool +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9e981 register_netdev +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38d02ed1 config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x38e2e574 kobject_del +EXPORT_SYMBOL vmlinux 0x38e46431 mempool_exit +EXPORT_SYMBOL vmlinux 0x38f0d08e dev_remove_pack +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x38f4f90c pcie_set_mps +EXPORT_SYMBOL vmlinux 0x39081193 __max_logical_packages +EXPORT_SYMBOL vmlinux 0x391be079 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x392b1fea wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3955fa4c send_sig_info +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395eda04 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x39637e37 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0x39669623 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x39917899 dm_register_target +EXPORT_SYMBOL vmlinux 0x39932b68 bdget_disk +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39ac5a61 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bfb412 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x39c2d352 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0x39e3c030 do_trace_read_msr +EXPORT_SYMBOL vmlinux 0x39e6d669 generic_make_request +EXPORT_SYMBOL vmlinux 0x39ea2f50 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a19557b tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x3a2d1dfa rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3b93e9 pci_request_irq +EXPORT_SYMBOL vmlinux 0x3a3c78de input_allocate_device +EXPORT_SYMBOL vmlinux 0x3a4f7dd3 pci_map_rom +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a5325d7 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x3a56bcdb xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x3a8a2aa4 would_dump +EXPORT_SYMBOL vmlinux 0x3a908143 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x3aadd613 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3ad01bab __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x3ad5cda3 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x3ad7a5d5 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0x3ada9e06 acpi_check_region +EXPORT_SYMBOL vmlinux 0x3af9f487 skb_append +EXPORT_SYMBOL vmlinux 0x3afa25a9 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x3afb11a7 kobject_set_name +EXPORT_SYMBOL vmlinux 0x3aff3200 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x3b029f48 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x3b1ad75a pipe_lock +EXPORT_SYMBOL vmlinux 0x3b20fb95 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x3b321e6c inc_node_page_state +EXPORT_SYMBOL vmlinux 0x3b377ec3 __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x3b4411d3 fsync_bdev +EXPORT_SYMBOL vmlinux 0x3b4bca61 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x3b4d3fca __x86_retpoline_r8 +EXPORT_SYMBOL vmlinux 0x3b543a93 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x3b5e0cd5 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b65ef91 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x3b6d32d4 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x3b72f08d preempt_schedule_notrace_thunk +EXPORT_SYMBOL vmlinux 0x3b83610f cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x3b9144c9 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x3b982b49 finalize_exec +EXPORT_SYMBOL vmlinux 0x3bab0d4c vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x3bb21519 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x3bb88a3b security_inode_init_security +EXPORT_SYMBOL vmlinux 0x3bd37937 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x3bd431a3 rtc_add_group +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3be955ed skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3bf9b2a4 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x3c06ed5d pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x3c0c505b fs_bio_set +EXPORT_SYMBOL vmlinux 0x3c12ea14 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c1943f7 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x3c3341a5 node_data +EXPORT_SYMBOL vmlinux 0x3c38b513 convert_art_ns_to_tsc +EXPORT_SYMBOL vmlinux 0x3c3fc2bd get_agp_version +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c40e96d __frontswap_test +EXPORT_SYMBOL vmlinux 0x3c427f67 cpu_die_map +EXPORT_SYMBOL vmlinux 0x3c457453 ioread64_lo_hi +EXPORT_SYMBOL vmlinux 0x3c462b61 proc_create_single_data +EXPORT_SYMBOL vmlinux 0x3c6cb817 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c935bb6 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x3ca63c5d __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x3ccc8dbc __x86_retpoline_r14 +EXPORT_SYMBOL vmlinux 0x3cdafebf rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x3ce35a02 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf0fa4a blk_rq_init +EXPORT_SYMBOL vmlinux 0x3cf22377 dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x3cfdb2c5 xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0x3d02cd70 dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0x3d0c93c9 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x3d1e2e63 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x3d210724 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x3d293a73 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x3d2f6042 __free_pages +EXPORT_SYMBOL vmlinux 0x3d453c8a iommu_get_msi_cookie +EXPORT_SYMBOL vmlinux 0x3d4c090b __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x3d4dce03 tcp_filter +EXPORT_SYMBOL vmlinux 0x3d507742 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5bb3fd refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x3d62f035 cdev_set_parent +EXPORT_SYMBOL vmlinux 0x3d7413b8 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x3d80d693 poll_freewait +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3dbb85dc fifo_set_limit +EXPORT_SYMBOL vmlinux 0x3dbfa439 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x3dc619d3 swake_up_locked +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcbc510 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x3dcbc6e8 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x3dcc19c5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x3dd9b230 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3ddc6c04 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x3df9d628 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x3dfb03c3 seq_pad +EXPORT_SYMBOL vmlinux 0x3dfb86b9 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e107819 serio_open +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e353553 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x3e394901 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x3e702eea dquot_resume +EXPORT_SYMBOL vmlinux 0x3e7c92f8 md_write_end +EXPORT_SYMBOL vmlinux 0x3e8a0b09 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x3e8b5657 vme_lm_request +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea4d88b xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0x3eb743e4 keyring_alloc +EXPORT_SYMBOL vmlinux 0x3ec0e54a skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x3ed74556 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x3edc0c88 devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x3ee728ec inode_add_bytes +EXPORT_SYMBOL vmlinux 0x3eeb2322 __wake_up +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4bd846 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f5ee436 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3f9e6689 _dev_alert +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fd4c944 get_cpu_entry_area +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fea8d75 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x3fff71be devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x404322b3 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4052f49f page_readlink +EXPORT_SYMBOL vmlinux 0x4055a920 acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x407d7ee4 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x408f9502 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x409517ac mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409bcb62 mutex_unlock +EXPORT_SYMBOL vmlinux 0x409f8dbb migrate_page_copy +EXPORT_SYMBOL vmlinux 0x40a5c0c2 udp_gro_receive +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ab855a __alloc_disk_node +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x410ba80d netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x412b29f1 unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x412b786f debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x4146584e page_pool_update_nid +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414cf791 set_binfmt +EXPORT_SYMBOL vmlinux 0x415cc2ab __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x41685fec inet_gro_receive +EXPORT_SYMBOL vmlinux 0x4181b96e gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418c8d01 set_bh_page +EXPORT_SYMBOL vmlinux 0x419247d2 con_is_bound +EXPORT_SYMBOL vmlinux 0x4198ca95 __do_once_done +EXPORT_SYMBOL vmlinux 0x419bb7e3 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x41ad346e netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0x41c230bf tcp_close +EXPORT_SYMBOL vmlinux 0x41cfd470 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0x41d34e03 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x41efdeaf radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x41f557cb blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0x41fb7ed5 udp_seq_ops +EXPORT_SYMBOL vmlinux 0x42003cd8 fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42309d3d kfree_skb_list +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x4238825d module_layout +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42555a39 blkdev_put +EXPORT_SYMBOL vmlinux 0x42578e80 acpi_get_type +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426478ab phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x42986f29 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x42a9d6f9 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x42bed8d4 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x42c5e31d devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x42d5d90f ptp_clock_register +EXPORT_SYMBOL vmlinux 0x42da742e rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ecc96 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0x431e7ff9 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x432d509a end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x433cabfb acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x43437ee1 param_ops_long +EXPORT_SYMBOL vmlinux 0x43514675 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435300a1 reuseport_add_sock +EXPORT_SYMBOL vmlinux 0x4355df2c dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0x4366dea0 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x437306b0 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x438170b5 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4392f7bb invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x4396e4a9 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x439d31b0 generic_perform_write +EXPORT_SYMBOL vmlinux 0x43b0c9c3 preempt_schedule +EXPORT_SYMBOL vmlinux 0x43b3c207 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x43c4f2ab twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x43cd1cda dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x43e990a1 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x43ec245b netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x4419f6b4 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x441e1877 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x442476bd pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x44277fc1 import_iovec +EXPORT_SYMBOL vmlinux 0x443013ec load_nls +EXPORT_SYMBOL vmlinux 0x44397b9b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x443da178 mpage_readahead +EXPORT_SYMBOL vmlinux 0x44414ff2 iosf_mbi_unblock_punit_i2c_access +EXPORT_SYMBOL vmlinux 0x44462b88 __x86_retpoline_rdx +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x4448592c dev_uc_flush +EXPORT_SYMBOL vmlinux 0x44528473 pci_bus_type +EXPORT_SYMBOL vmlinux 0x445520a7 serio_reconnect +EXPORT_SYMBOL vmlinux 0x445f2922 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x4472ceac jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x44902cff acpi_enable_event +EXPORT_SYMBOL vmlinux 0x44928d5d blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a56815 vlan_for_each +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44c73fea nd_device_register +EXPORT_SYMBOL vmlinux 0x44c773de pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x44d18f24 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f98c24 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x4502d4b1 bio_endio +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450d5228 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x4534aecf dev_printk +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45460598 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x454e7156 dev_addr_init +EXPORT_SYMBOL vmlinux 0x4550690f inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update +EXPORT_SYMBOL vmlinux 0x45637873 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x4570e0b3 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x45763936 simple_open +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457cd7a9 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x458989c4 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x458b021d kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x45d246da node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x45d845ad phy_aneg_done +EXPORT_SYMBOL vmlinux 0x45e69e01 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x45e8d7b5 native_write_cr0 +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x46189630 __scm_destroy +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x461df035 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x463219fb tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x463a1831 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x463e1cb6 sock_no_accept +EXPORT_SYMBOL vmlinux 0x46406f25 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x46668035 security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468fd819 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x46971ecc __ip_select_ident +EXPORT_SYMBOL vmlinux 0x469855fd pps_register_source +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x469e6755 udp_gro_complete +EXPORT_SYMBOL vmlinux 0x469ed6e9 simple_readpage +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46cf10eb cachemode2protval +EXPORT_SYMBOL vmlinux 0x46df227d ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x46fd9f3c follow_down +EXPORT_SYMBOL vmlinux 0x470f6d8d super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0x471471dc noop_llseek +EXPORT_SYMBOL vmlinux 0x4715a909 acpi_load_table +EXPORT_SYMBOL vmlinux 0x4735b8d0 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x4740b3bc xen_arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x47474744 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x4758f70f tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x477131ae phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47941711 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x47960bc4 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a04f10 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47c84459 set_blocksize +EXPORT_SYMBOL vmlinux 0x47d5751d md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x47dab76a uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x47eb39c3 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4812bc65 cdev_alloc +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481d1ce7 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0x481f51c2 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48476bcb intel_gtt_insert_page +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486075c8 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x4894607d blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x48a59dbe bd_set_size +EXPORT_SYMBOL vmlinux 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b48b87 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c093fb _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48da5ac6 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x48dd4c8e netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x48de4232 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x48e26308 tty_do_resize +EXPORT_SYMBOL vmlinux 0x48f2f973 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x4901587c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491f04c9 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x49334fc9 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x4954d1eb vm_insert_page +EXPORT_SYMBOL vmlinux 0x495e378d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0x49689c4a xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0x49748138 fb_get_mode +EXPORT_SYMBOL vmlinux 0x49775e8f nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x497ff445 arp_xmit +EXPORT_SYMBOL vmlinux 0x49885233 __lock_buffer +EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x499b9d58 tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0x499e3499 pci_free_irq +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c14048 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x49c41a57 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x49d46027 sk_dst_check +EXPORT_SYMBOL vmlinux 0x49d6e383 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x49eb11ef vga_switcheroo_lock_ddc +EXPORT_SYMBOL vmlinux 0x49ed86a0 ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x4a0297fc max8998_read_reg +EXPORT_SYMBOL vmlinux 0x4a0be3ac nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x4a38a771 fget +EXPORT_SYMBOL vmlinux 0x4a3ad70e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x4a3f3ae6 blk_put_request +EXPORT_SYMBOL vmlinux 0x4a453f53 iowrite32 +EXPORT_SYMBOL vmlinux 0x4a4945c6 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x4a49bf34 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x4a6c6c88 input_match_device_id +EXPORT_SYMBOL vmlinux 0x4a77b1af page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x4a84974c pcim_iomap +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4a96e424 get_fs_type +EXPORT_SYMBOL vmlinux 0x4a9be6c8 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x4a9f4b24 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4aabbf9c __frontswap_store +EXPORT_SYMBOL vmlinux 0x4aac4f33 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x4ab208ba acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x4abb7d10 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x4acc5a52 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x4ada8056 kernel_accept +EXPORT_SYMBOL vmlinux 0x4adf5d5c make_kgid +EXPORT_SYMBOL vmlinux 0x4ae56e41 seq_path +EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift +EXPORT_SYMBOL vmlinux 0x4afb2238 add_wait_queue +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0c6dfa dcb_getapp +EXPORT_SYMBOL vmlinux 0x4b203a8e param_get_ulong +EXPORT_SYMBOL vmlinux 0x4b20bf20 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x4b2231e4 pci_read_config_dword +EXPORT_SYMBOL vmlinux 0x4b293f94 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x4b2f5299 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x4b537362 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x4b57d9dc amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0x4b5f1b12 phy_stop +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b606d22 d_move +EXPORT_SYMBOL vmlinux 0x4b6c19dd devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x4b6df007 acpi_evaluate_reg +EXPORT_SYMBOL vmlinux 0x4b744f83 param_ops_int +EXPORT_SYMBOL vmlinux 0x4b7bfa56 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0x4b7c6c30 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0x4b814d0e sock_setsockopt +EXPORT_SYMBOL vmlinux 0x4b8a0423 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x4b9c21df simple_rename +EXPORT_SYMBOL vmlinux 0x4ba4ecc4 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x4bb8aa39 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x4bc21a2f tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x4bcc2662 mempool_init_node +EXPORT_SYMBOL vmlinux 0x4bd74c7e seq_file_path +EXPORT_SYMBOL vmlinux 0x4bdf9a1d try_module_get +EXPORT_SYMBOL vmlinux 0x4be99597 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x4becccd2 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x4bee8287 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4bfdbb3b get_super +EXPORT_SYMBOL vmlinux 0x4bffb580 current_in_userns +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c0c8c8a agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x4c0dea64 pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x4c324177 vme_slot_num +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c4343c4 __pagevec_release +EXPORT_SYMBOL vmlinux 0x4c5750b5 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x4c5df59b free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x4c978dc0 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x4c9992df input_free_device +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca2d43a phy_attach_direct +EXPORT_SYMBOL vmlinux 0x4cb89070 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cbfa7b6 phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x4cc0c1c8 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x4ccd378a _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x4cd5bc5e rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x4ce2c4dd module_refcount +EXPORT_SYMBOL vmlinux 0x4ce438f9 security_path_unlink +EXPORT_SYMBOL vmlinux 0x4cea199d tty_port_destroy +EXPORT_SYMBOL vmlinux 0x4cebdba3 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x4d07239d __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x4d1ef4cd inode_needs_sync +EXPORT_SYMBOL vmlinux 0x4d2117a9 secpath_set +EXPORT_SYMBOL vmlinux 0x4d26a4b1 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x4d2c7133 acpi_info +EXPORT_SYMBOL vmlinux 0x4d7c9e7f dcache_readdir +EXPORT_SYMBOL vmlinux 0x4d84f145 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4d924f20 memremap +EXPORT_SYMBOL vmlinux 0x4d951da9 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x4d9b21fe __x86_retpoline_r11 +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dc05a8b pci_match_id +EXPORT_SYMBOL vmlinux 0x4dca08ee sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x4de995ec gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e20bcf8 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e357f3a inode_set_flags +EXPORT_SYMBOL vmlinux 0x4e4f0f16 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e4b41 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ec3a2fb md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4ee2f9f4 vga_con +EXPORT_SYMBOL vmlinux 0x4ee4a81b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4efc49e9 csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x4f09d3ec thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0x4f0e85be generic_ro_fops +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2545f0 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x4f3675f3 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f55166f acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x4f621d57 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x4f68d309 phy_init_eee +EXPORT_SYMBOL vmlinux 0x4f6dc71a fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x4f711f84 intel_scu_ipc_dev_iowrite8 +EXPORT_SYMBOL vmlinux 0x4f81e6ed pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x4f8af81b scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4f8c8ba5 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4f946d31 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x4fcc8ad2 ex_handler_uaccess +EXPORT_SYMBOL vmlinux 0x4fd18a79 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x4fd3343a set_cached_acl +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x5027bde2 acpi_acquire_mutex +EXPORT_SYMBOL vmlinux 0x50352d89 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x506e6400 agp_create_memory +EXPORT_SYMBOL vmlinux 0x5089bbe9 sock_from_file +EXPORT_SYMBOL vmlinux 0x508eee7b ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x50964000 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50b97874 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50c5e0a3 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0x50d4bc88 __put_page +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50dfaa8e dm_unregister_target +EXPORT_SYMBOL vmlinux 0x50ed3dee netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x50f89cca qdisc_reset +EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x5102a30b do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0x5114efb6 inode_permission +EXPORT_SYMBOL vmlinux 0x512855a0 __SetPageMovable +EXPORT_SYMBOL vmlinux 0x51367bc0 redraw_screen +EXPORT_SYMBOL vmlinux 0x51374a80 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x51484050 vm_insert_pages +EXPORT_SYMBOL vmlinux 0x515083bf acpi_release_mutex +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x51760917 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x51774601 device_add_disk +EXPORT_SYMBOL vmlinux 0x51790c06 napi_complete_done +EXPORT_SYMBOL vmlinux 0x517a9a71 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x51bf69ce cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51eb3075 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x51f298e0 intel_scu_ipc_dev_ioread8 +EXPORT_SYMBOL vmlinux 0x51f683ae pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x51ff6f06 input_open_device +EXPORT_SYMBOL vmlinux 0x520df456 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x521664ef vga_client_register +EXPORT_SYMBOL vmlinux 0x5219f89a mmc_can_discard +EXPORT_SYMBOL vmlinux 0x521f4dad tcf_classify +EXPORT_SYMBOL vmlinux 0x52231151 __frontswap_load +EXPORT_SYMBOL vmlinux 0x52315587 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5286785e fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x5287f2d4 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x528eed16 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x528f28de fc_mount +EXPORT_SYMBOL vmlinux 0x52901a65 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52ab6814 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x52bcd4f5 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x52be910f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52d811b4 bioset_exit +EXPORT_SYMBOL vmlinux 0x52dcc726 param_set_copystring +EXPORT_SYMBOL vmlinux 0x52e3f1a7 seq_vprintf +EXPORT_SYMBOL vmlinux 0x52ecbc75 crc_ccitt +EXPORT_SYMBOL vmlinux 0x52f81cf5 default_llseek +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530d2242 stop_tty +EXPORT_SYMBOL vmlinux 0x53126ecc __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53306b05 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x533206b5 sort_r +EXPORT_SYMBOL vmlinux 0x5334461d dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x534ac334 netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x5367b4b4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x538b42a4 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x539a68b4 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x53b954a2 up_read +EXPORT_SYMBOL vmlinux 0x53bc9234 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x53be34f0 __x86_retpoline_rsi +EXPORT_SYMBOL vmlinux 0x53c532ee kern_path_create +EXPORT_SYMBOL vmlinux 0x53cdad06 mdiobus_write +EXPORT_SYMBOL vmlinux 0x53d8a592 phy_attached_print +EXPORT_SYMBOL vmlinux 0x53df8f81 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x53f4f21c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x53f9a36d inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x53fab617 file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x53fe978a tty_register_driver +EXPORT_SYMBOL vmlinux 0x54015f0b vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x54175c5f acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542e4e90 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5434cdbd blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545f1aca netif_carrier_off +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x547e3344 acpi_disable +EXPORT_SYMBOL vmlinux 0x549d039b sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b99e6f tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x54d7de90 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0x54e25d4c scsi_device_get +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ea6dfe xen_start_flags +EXPORT_SYMBOL vmlinux 0x54ede6d5 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x54f1bcb4 phy_device_remove +EXPORT_SYMBOL vmlinux 0x54fa67a9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x5500178a bio_devname +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x550e5aa6 amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x550ef27e param_ops_ulong +EXPORT_SYMBOL vmlinux 0x5513beef scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5518aa17 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55479560 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x5561ced3 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0x556422b3 ioremap_cache +EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x556cca46 x86_apple_machine +EXPORT_SYMBOL vmlinux 0x5580d76d pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x558a2799 commit_creds +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x558fe2e0 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0x55bd2b8f max8925_reg_write +EXPORT_SYMBOL vmlinux 0x55d5e9b4 ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55edcf88 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0x55f95e07 ioremap_prot +EXPORT_SYMBOL vmlinux 0x55fd86c3 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x5606bdb3 find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0x560b9957 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x5628e067 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x562c4936 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56383be6 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x56466e42 ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x564f7608 acpi_reconfig_notifier_register +EXPORT_SYMBOL vmlinux 0x566b2398 inet_select_addr +EXPORT_SYMBOL vmlinux 0x56719343 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0x5679f759 get_amd_iommu +EXPORT_SYMBOL vmlinux 0x567a7b12 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x567c76d6 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x568b909a d_obtain_root +EXPORT_SYMBOL vmlinux 0x569abcca acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x56b1294b unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0x56c1d665 vfs_link +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d49d1c fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x56d8554f security_path_mkdir +EXPORT_SYMBOL vmlinux 0x56f318cb blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x56f41965 kill_block_super +EXPORT_SYMBOL vmlinux 0x56f8c371 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x570cb0ff flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x57298488 unpin_user_page +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574ccde0 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575f9657 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x576ba438 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x578e06f1 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x57900416 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57b7cb98 kern_unmount +EXPORT_SYMBOL vmlinux 0x57bc19d2 down_write +EXPORT_SYMBOL vmlinux 0x57d83477 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x5805a284 phy_write_paged +EXPORT_SYMBOL vmlinux 0x580a4282 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5837b6ed simple_nosetlease +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586a2b13 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x586c391b amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x587daf51 key_revoke +EXPORT_SYMBOL vmlinux 0x587f22d7 devmap_managed_key +EXPORT_SYMBOL vmlinux 0x58853ece alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x589ed18b nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0x58a6119b devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d31af9 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x58d89003 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x59070edd tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x59194cbf km_policy_expired +EXPORT_SYMBOL vmlinux 0x59234508 kern_path +EXPORT_SYMBOL vmlinux 0x593c1bac __x86_indirect_thunk_rbx +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594cb9f3 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x5971fd1f netif_napi_del +EXPORT_SYMBOL vmlinux 0x597f54c0 native_restore_fl +EXPORT_SYMBOL vmlinux 0x5983cb24 blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x5991b589 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node +EXPORT_SYMBOL vmlinux 0x59a2f0ee packing +EXPORT_SYMBOL vmlinux 0x59a3dc3b ps2_end_command +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59d9125d nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x59da8a38 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x59e1e0d5 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x5a091151 param_get_charp +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a12f233 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x5a245f6d _raw_write_lock +EXPORT_SYMBOL vmlinux 0x5a2b9a7b page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x5a3395e2 vfs_tmpfile +EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5a45a800 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a5a2271 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x5a6ce888 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x5a743d1e padata_stop +EXPORT_SYMBOL vmlinux 0x5a758fc1 pcim_set_mwi +EXPORT_SYMBOL vmlinux 0x5a789dc0 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x5a803064 from_kgid +EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9c7cc8 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x5ab7ece9 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x5ac6c9ab inet_stream_ops +EXPORT_SYMBOL vmlinux 0x5acfed63 _dev_warn +EXPORT_SYMBOL vmlinux 0x5ae20040 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x5b086940 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x5b1ef8c2 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0x5b2cd634 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x5b2f27fb do_wait_intr +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b3ac47d skb_find_text +EXPORT_SYMBOL vmlinux 0x5b3e282f xa_store +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b67b93c fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x5b6b0bd0 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x5b7d87cb phy_device_register +EXPORT_SYMBOL vmlinux 0x5b829f1f sg_miter_skip +EXPORT_SYMBOL vmlinux 0x5b9516f6 sock_init_data +EXPORT_SYMBOL vmlinux 0x5ba4213c vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x5bb6fbf3 proc_create +EXPORT_SYMBOL vmlinux 0x5bbd41ce dev_uc_add +EXPORT_SYMBOL vmlinux 0x5bbef29d mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5becc809 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5bf21712 init_task +EXPORT_SYMBOL vmlinux 0x5c00d810 ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5c039379 pci_save_state +EXPORT_SYMBOL vmlinux 0x5c14fbd6 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x5c26a53b wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x5c2c3474 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x5c3dacd9 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x5c3ee6c1 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c554d0c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x5c594504 inet_protos +EXPORT_SYMBOL vmlinux 0x5c5e63fa get_watch_queue +EXPORT_SYMBOL vmlinux 0x5c60a9d4 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x5c8250ec simple_get_link +EXPORT_SYMBOL vmlinux 0x5cb6790f __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5cbaf2f2 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x5cbd962d twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x5cc08c5b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x5cdc9d96 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0x5cebef10 rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb26a0 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x5d0874dc netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x5d0ed7ca kernel_sendpage +EXPORT_SYMBOL vmlinux 0x5d26f961 flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0x5d2f50a9 dump_emit +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d529c9e compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5d5f5511 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x5d62fddf __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5d6aee6e kern_unmount_array +EXPORT_SYMBOL vmlinux 0x5d75a974 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d7bf443 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x5d7cf6c7 unpin_user_pages +EXPORT_SYMBOL vmlinux 0x5d8279b2 dst_dev_put +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5da114ac jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x5de98040 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x5df108ad __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x5df227ea blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x5e074747 sock_pfree +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e332b52 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e3b6134 mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0x5e4ed8e8 genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0x5e5b76f8 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x5e7ee58b alloc_fddidev +EXPORT_SYMBOL vmlinux 0x5e855e56 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb137f4 is_nd_pfn +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb33ae7 param_set_ushort +EXPORT_SYMBOL vmlinux 0x5eb9a865 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5ebc26ec ppp_input_error +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ec93c2c clear_nlink +EXPORT_SYMBOL vmlinux 0x5ecfa6c2 tcp_poll +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5eec1148 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x5eefeb76 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x5ef5ff2e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x5ef6a672 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x5efde8e6 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5f01d279 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f281929 devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x5f56663b rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x5f5c1135 dentry_open +EXPORT_SYMBOL vmlinux 0x5f68b775 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f835445 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x5f93525c acpi_extract_package +EXPORT_SYMBOL vmlinux 0x5f953bb3 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0x5f981bb1 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x5f9ba6d7 mmc_free_host +EXPORT_SYMBOL vmlinux 0x5fa78f75 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x5fc2eea3 dput +EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fca9f4f unregister_nls +EXPORT_SYMBOL vmlinux 0x5ff05526 inet_frags_init +EXPORT_SYMBOL vmlinux 0x5ff38820 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x5ff9eb0e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600d6867 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x600e1603 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x600ecd95 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x601496f4 revert_creds +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x601b163b mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x607ac5ab key_move +EXPORT_SYMBOL vmlinux 0x608741b5 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x6088734c pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0x608f8768 kset_register +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x609b2853 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b3071f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x60b31bf3 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x60c0d46e filemap_check_errors +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60e3fc31 deactivate_super +EXPORT_SYMBOL vmlinux 0x61050291 unload_nls +EXPORT_SYMBOL vmlinux 0x610ba993 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612e772e key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x6134eb94 dev_addr_add +EXPORT_SYMBOL vmlinux 0x6147ea73 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x614fa182 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x61577694 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x617c452b queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0x6180df63 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x6185b747 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619dfcdc intel_scu_ipc_dev_readv +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61cbba1c skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61e478f1 setup_new_exec +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x62076518 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621b4fde genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x621eda9c nd_btt_probe +EXPORT_SYMBOL vmlinux 0x6225823b ps2_handle_response +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623a4365 request_key_tag +EXPORT_SYMBOL vmlinux 0x626ad9c2 tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627dfc6a drop_super +EXPORT_SYMBOL vmlinux 0x627f62ea pci_disable_msix +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62890955 __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x628bf4ee vme_register_driver +EXPORT_SYMBOL vmlinux 0x62a26f7c param_ops_ushort +EXPORT_SYMBOL vmlinux 0x62a35a72 dma_set_mask +EXPORT_SYMBOL vmlinux 0x62aa7da9 proto_register +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62ccd283 skb_clone +EXPORT_SYMBOL vmlinux 0x62d0cf53 map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x62edc07f pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x62f1f55c pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x62f48063 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x62f86905 kthread_create_worker +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x6335298a __block_write_begin +EXPORT_SYMBOL vmlinux 0x6343378b __icmp_send +EXPORT_SYMBOL vmlinux 0x634d29a4 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x636257f7 get_ibs_caps +EXPORT_SYMBOL vmlinux 0x637d15c3 vc_cons +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d3a3db jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x63d6dbd9 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ed1f90 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x63f835ba on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64160195 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x6421e772 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x64238834 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x642eb5c6 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x64444e54 config_item_put +EXPORT_SYMBOL vmlinux 0x6454ac83 set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x645b8ebe tcp_ioctl +EXPORT_SYMBOL vmlinux 0x64723975 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6479cea3 try_lookup_one_len +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x6499b642 ihold +EXPORT_SYMBOL vmlinux 0x649f6117 netif_napi_add +EXPORT_SYMBOL vmlinux 0x64a25de0 mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64b4d4c4 pci_request_regions +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64f5e2c3 devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x652b4b14 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65308a67 __destroy_inode +EXPORT_SYMBOL vmlinux 0x653c7f0c mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x653fc0fc pci_disable_msi +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x65540663 f_setown +EXPORT_SYMBOL vmlinux 0x6556f897 should_remove_suid +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf +EXPORT_SYMBOL vmlinux 0x65805344 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x6581ee4c d_lookup +EXPORT_SYMBOL vmlinux 0x658b9965 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65a75e81 udp_poll +EXPORT_SYMBOL vmlinux 0x65b1fb0e __brelse +EXPORT_SYMBOL vmlinux 0x65b992ac xen_alloc_p2m_entry +EXPORT_SYMBOL vmlinux 0x65c03224 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x65c78398 dev_load +EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0x65d1bab2 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x65d2b3da pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x65d414e9 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0x65d94cc4 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65e8ae10 xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x65ea2eef set_wb_congested +EXPORT_SYMBOL vmlinux 0x65f187dd mr_table_dump +EXPORT_SYMBOL vmlinux 0x65fcdf0a mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0x661097bf freezing_slow_path +EXPORT_SYMBOL vmlinux 0x66168ea9 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x662220d9 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x6626afca down +EXPORT_SYMBOL vmlinux 0x663182c9 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x66339233 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x663883e3 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x6638a40a netdev_alert +EXPORT_SYMBOL vmlinux 0x6642798b cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x664f39d3 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x66504bc5 dev_close +EXPORT_SYMBOL vmlinux 0x665c55ef pci_clear_master +EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x666c39cc config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x668b19a1 down_read +EXPORT_SYMBOL vmlinux 0x66916a8a dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x669b2f6b pci_dev_get +EXPORT_SYMBOL vmlinux 0x66af1fd1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup +EXPORT_SYMBOL vmlinux 0x66b9f4a2 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0x66c5decc __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0x66c62e31 pid_task +EXPORT_SYMBOL vmlinux 0x66c8a8a4 finish_open +EXPORT_SYMBOL vmlinux 0x66d1a7c1 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66eca260 ping_prot +EXPORT_SYMBOL vmlinux 0x66ff345f tcp_make_synack +EXPORT_SYMBOL vmlinux 0x672576e2 phy_resume +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x67368bcc blkdev_fsync +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x673f8917 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x67626cb0 set_pages_wb +EXPORT_SYMBOL vmlinux 0x677e051a sock_no_bind +EXPORT_SYMBOL vmlinux 0x677ee198 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x677f1708 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x6799a29e genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x679fa187 param_ops_string +EXPORT_SYMBOL vmlinux 0x67a6ba05 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c13ea0 acpi_read +EXPORT_SYMBOL vmlinux 0x67cdef5b truncate_pagecache +EXPORT_SYMBOL vmlinux 0x67ce2eb0 iptun_encaps +EXPORT_SYMBOL vmlinux 0x67d0cd7b neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x67d42008 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x67f02bb7 agp_copy_info +EXPORT_SYMBOL vmlinux 0x67f344d3 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x67fd0398 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x67ff856a cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x683238eb bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x683ef898 nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x68445fff __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x684f44d4 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x6851664e wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x686983e9 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x686e678c param_set_invbool +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688670e5 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x689f0897 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68b41eff rt_dst_clone +EXPORT_SYMBOL vmlinux 0x68d89698 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0x69049cd2 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0x694280ed netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x6943a4da arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x694f9b9f fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x69522998 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x69558289 phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0x6957b001 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x69585523 __ksize +EXPORT_SYMBOL vmlinux 0x69629860 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6981ffcc __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x69826202 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c17301 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0x69d904b2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0de980 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x6a15b389 rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0x6a22953e zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x6a22a4ec lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6a261b78 irq_stat +EXPORT_SYMBOL vmlinux 0x6a365e42 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x6a37955c param_ops_uint +EXPORT_SYMBOL vmlinux 0x6a449c4f register_sysctl_table +EXPORT_SYMBOL vmlinux 0x6a4cb6ff nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a942310 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x6a9c0fa9 input_release_device +EXPORT_SYMBOL vmlinux 0x6aa075a6 param_get_ushort +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6ab6c082 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0x6ab8dca6 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x6aca2f98 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x6accce9b mpage_writepage +EXPORT_SYMBOL vmlinux 0x6ace6ca5 ip_defrag +EXPORT_SYMBOL vmlinux 0x6acfd30b __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae6ceb4 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x6aee0f52 skb_seq_read +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b27729b radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b556374 twl6040_power +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b664ad4 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x6b69b4b0 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x6b6d0a92 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x6b82de00 key_type_keyring +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8ab662 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6b951a1a pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x6b99de25 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x6bb3db02 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x6bbc1fcb configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdfaf61 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x6be1c1f8 acpi_install_method +EXPORT_SYMBOL vmlinux 0x6bfe62e1 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x6c08627f udp_sendmsg +EXPORT_SYMBOL vmlinux 0x6c224cda gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c28be5a vfio_info_add_capability +EXPORT_SYMBOL vmlinux 0x6c56cbea blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c649323 dev_change_flags +EXPORT_SYMBOL vmlinux 0x6c6b0936 dma_find_channel +EXPORT_SYMBOL vmlinux 0x6c6ccafe mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0x6c77ad70 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6c95843d d_rehash +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cbc54e7 user_revoke +EXPORT_SYMBOL vmlinux 0x6cd89a4a agp_enable +EXPORT_SYMBOL vmlinux 0x6ce4d385 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0x6cf62166 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6d12c616 genphy_update_link +EXPORT_SYMBOL vmlinux 0x6d210f74 unregister_console +EXPORT_SYMBOL vmlinux 0x6d2631f0 input_grab_device +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d51f3e7 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0x6d570a8b nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x6d58f69e agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0x6d5dfa29 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x6d5f5b91 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x6d7abe02 first_ec +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d9c60d5 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x6dc35b25 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dd17e7b acpi_get_table_header +EXPORT_SYMBOL vmlinux 0x6de63358 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x6dee2afb netif_skb_features +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfd13e4 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x6e00b744 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x6e019034 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x6e096479 mmc_add_host +EXPORT_SYMBOL vmlinux 0x6e15eb23 inet6_release +EXPORT_SYMBOL vmlinux 0x6e211788 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x6e257ca0 amd_iommu_pc_get_reg +EXPORT_SYMBOL vmlinux 0x6e286604 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x6e30b75e mdio_find_bus +EXPORT_SYMBOL vmlinux 0x6e38535f xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x6e3bf924 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x6e40b570 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run +EXPORT_SYMBOL vmlinux 0x6e65cc63 __netif_schedule +EXPORT_SYMBOL vmlinux 0x6e6c50d4 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6e6ea45c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e972509 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea7575d acpi_dispatch_gpe +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6f136564 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x6f15bdf4 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x6f2fbb3b pci_scan_slot +EXPORT_SYMBOL vmlinux 0x6f33203a __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x6f41a428 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x6f51d493 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x6f5f7deb inet_shutdown +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f915a45 dqstats +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fbc6a00 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcdc92f rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x6fd8ced1 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6fe9b0bc __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x6ff5968f agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x700042e4 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x7022085b eth_gro_receive +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x7030a625 __devm_release_region +EXPORT_SYMBOL vmlinux 0x70319d05 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x7040fff9 rtc_lock +EXPORT_SYMBOL vmlinux 0x704e4b5a pipe_unlock +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7070785e ps2_sliced_command +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x70740d9c phy_validate_pause +EXPORT_SYMBOL vmlinux 0x708286b6 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x70a0eb5f pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x70a3e23f iommu_put_dma_cookie +EXPORT_SYMBOL vmlinux 0x70a6b892 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x70ad75fb radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x711f0f6c acpi_dev_get_first_match_dev +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713e518f crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x7149fe98 mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x715a460e __module_get +EXPORT_SYMBOL vmlinux 0x71646f8a vm_map_pages +EXPORT_SYMBOL vmlinux 0x71665a2d __register_nls +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71726eec translation_pre_enabled +EXPORT_SYMBOL vmlinux 0x718871e0 vfs_mkobj +EXPORT_SYMBOL vmlinux 0x7194c39d nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0x7194e1a3 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x7195849d scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x71a44553 dquot_acquire +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a90315 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0x71be7bbf tcf_block_get +EXPORT_SYMBOL vmlinux 0x71bfad02 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x720bfd95 padata_start +EXPORT_SYMBOL vmlinux 0x721903f6 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x723b1fd1 inet_accept +EXPORT_SYMBOL vmlinux 0x72439c98 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x725a6cbd ata_port_printk +EXPORT_SYMBOL vmlinux 0x72615ab2 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x726bc3c7 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x72895858 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x72a38975 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72d79d83 pgdir_shift +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72fe3595 phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x7301b77e cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x7305e274 hmm_range_fault +EXPORT_SYMBOL vmlinux 0x73085682 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c4a9c dma_fence_signal +EXPORT_SYMBOL vmlinux 0x7324ab15 rtc_add_groups +EXPORT_SYMBOL vmlinux 0x735517d1 nd_device_notify +EXPORT_SYMBOL vmlinux 0x73569c5f always_delete_dentry +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x735e6a81 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x736b5662 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x736ce6b4 devfreq_update_status +EXPORT_SYMBOL vmlinux 0x736f33ac __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x7382346d neigh_destroy +EXPORT_SYMBOL vmlinux 0x7388abef netif_carrier_on +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73b26b51 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x73b94700 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x73c565db pci_set_master +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e81e22 seq_write +EXPORT_SYMBOL vmlinux 0x73ea4065 _dev_emerg +EXPORT_SYMBOL vmlinux 0x73f9ce5d padata_do_parallel +EXPORT_SYMBOL vmlinux 0x74037793 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x740da8d6 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x745af49c mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x7464abc1 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x74668dcc phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x746f15bb ps2_init +EXPORT_SYMBOL vmlinux 0x74725e69 ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x7474d81f write_inode_now +EXPORT_SYMBOL vmlinux 0x74754435 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x7496562a agp_find_bridge +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x74a092ea tcf_register_action +EXPORT_SYMBOL vmlinux 0x74a800af input_close_device +EXPORT_SYMBOL vmlinux 0x74b99553 phy_device_create +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cfb77a dm_kobject_release +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ee67fb vlan_vid_add +EXPORT_SYMBOL vmlinux 0x74f4bba2 noop_qdisc +EXPORT_SYMBOL vmlinux 0x74fb586d is_subdir +EXPORT_SYMBOL vmlinux 0x7511f665 bio_add_page +EXPORT_SYMBOL vmlinux 0x7533ece2 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x756e204d pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x75871f5e acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x75943e25 i8253_lock +EXPORT_SYMBOL vmlinux 0x759e86e8 get_tree_keyed +EXPORT_SYMBOL vmlinux 0x75aeb901 to_nd_btt +EXPORT_SYMBOL vmlinux 0x75b1f8c9 vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0x75b27ddb ip_setsockopt +EXPORT_SYMBOL vmlinux 0x75b3fa7d flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x75b45998 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x75b57a64 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x75b98c32 ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75d70ae8 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x75eef5cf param_set_int +EXPORT_SYMBOL vmlinux 0x75efa48b proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x76003f12 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x76083321 udp_set_csum +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x76335bcc skb_checksum +EXPORT_SYMBOL vmlinux 0x7637fa1d _dev_info +EXPORT_SYMBOL vmlinux 0x763ba3ad ioread64be_hi_lo +EXPORT_SYMBOL vmlinux 0x7645af3b mod_node_page_state +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76579fb9 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x76798998 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x767dce4b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76876725 icmp6_send +EXPORT_SYMBOL vmlinux 0x768f84d1 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x7692ee8d jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x769a9508 brioctl_set +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76b8ef94 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x76b93453 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ee31cc iunique +EXPORT_SYMBOL vmlinux 0x76f22b70 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x770566c8 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x771730a2 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x774ff647 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779c62f2 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x77b0fed9 __next_node_in +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c0a929 tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0x77e9ccae seq_puts +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77ed2782 fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782026a4 mdio_device_register +EXPORT_SYMBOL vmlinux 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78ac033f __neigh_create +EXPORT_SYMBOL vmlinux 0x78bdd23f d_set_fallthru +EXPORT_SYMBOL vmlinux 0x78c1c266 start_tty +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e2681e devfreq_add_device +EXPORT_SYMBOL vmlinux 0x78f1e4aa mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x78f62e1b fasync_helper +EXPORT_SYMBOL vmlinux 0x78f8b56c phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x7901b5d3 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x792c9364 elv_rb_find +EXPORT_SYMBOL vmlinux 0x794e81dd unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x795861de sk_alloc +EXPORT_SYMBOL vmlinux 0x7964cd69 tty_unlock +EXPORT_SYMBOL vmlinux 0x796bf546 __bforget +EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin +EXPORT_SYMBOL vmlinux 0x797cd123 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79896c41 kthread_blkcg +EXPORT_SYMBOL vmlinux 0x799d446d pci_choose_state +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79aacd4d dev_uc_init +EXPORT_SYMBOL vmlinux 0x79c92d5e set_groups +EXPORT_SYMBOL vmlinux 0x79d227e5 sk_common_release +EXPORT_SYMBOL vmlinux 0x79df9633 ioremap_encrypted +EXPORT_SYMBOL vmlinux 0x79e3142c phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x79e335cb set_page_dirty +EXPORT_SYMBOL vmlinux 0x79fbe7a7 dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0x7a04f435 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x7a072cda t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a11b80f fb_find_mode +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a356b3f __seq_open_private +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a55c921 from_kprojid +EXPORT_SYMBOL vmlinux 0x7a5f115f generic_writepages +EXPORT_SYMBOL vmlinux 0x7a6c496a page_get_link +EXPORT_SYMBOL vmlinux 0x7a88da87 iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa60c82 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x7aa767ee get_super_thawed +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abc6086 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7acb4c40 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad6636a bio_clone_fast +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7ae2854c load_nls_default +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af8c03e sync_inode +EXPORT_SYMBOL vmlinux 0x7aff77a3 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b1c7d6e free_netdev +EXPORT_SYMBOL vmlinux 0x7b2f689d irq_to_desc +EXPORT_SYMBOL vmlinux 0x7b3376f0 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x7b38cbc3 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x7b3b3f70 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x7b4da6ff __init_rwsem +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b655660 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x7b754cc7 dquot_transfer +EXPORT_SYMBOL vmlinux 0x7b7c530c remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x7b7df270 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x7b82b9a1 idr_replace +EXPORT_SYMBOL vmlinux 0x7b9958a1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x7bb3900a dma_resv_fini +EXPORT_SYMBOL vmlinux 0x7bb50b88 acpi_write +EXPORT_SYMBOL vmlinux 0x7bb8a7ce posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bc4c914 scsi_host_put +EXPORT_SYMBOL vmlinux 0x7bc528a8 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x7bed23d7 ns_capable +EXPORT_SYMBOL vmlinux 0x7bef2547 get_acl +EXPORT_SYMBOL vmlinux 0x7bf13e57 phy_read_paged +EXPORT_SYMBOL vmlinux 0x7c11738e kernel_bind +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1a4a80 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x7c1b6b23 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x7c1cb64a xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x7c286c4a jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x7c2ae696 has_capability +EXPORT_SYMBOL vmlinux 0x7c3ff8f8 rio_query_mport +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5a703d eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x7c5fe222 register_filesystem +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7cab00dc mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cd4c4d3 skb_dump +EXPORT_SYMBOL vmlinux 0x7cd8d75e page_offset_base +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ceafd60 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d05579f xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7d0ba682 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d12d76d acpi_get_parent +EXPORT_SYMBOL vmlinux 0x7d172dc1 __scsi_execute +EXPORT_SYMBOL vmlinux 0x7d24c3d0 path_get +EXPORT_SYMBOL vmlinux 0x7d261824 cont_write_begin +EXPORT_SYMBOL vmlinux 0x7d376fa2 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7d380e3f skb_tx_error +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x7d628444 memcpy_fromio +EXPORT_SYMBOL vmlinux 0x7d8820f0 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7db45a3d blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x7dc85feb skb_unlink +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df57830 single_release +EXPORT_SYMBOL vmlinux 0x7e0826e2 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7e124b89 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e526bfa __x86_indirect_thunk_r10 +EXPORT_SYMBOL vmlinux 0x7e6e8e16 dquot_commit +EXPORT_SYMBOL vmlinux 0x7e7bcf26 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x7e830b6c sock_alloc_file +EXPORT_SYMBOL vmlinux 0x7e846468 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x7e8f3176 vme_slave_request +EXPORT_SYMBOL vmlinux 0x7ea9c0ec pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0x7eb5f448 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x7ec15231 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x7ec26edc bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x7ec78bdd rename_lock +EXPORT_SYMBOL vmlinux 0x7ed1ebd1 simple_statfs +EXPORT_SYMBOL vmlinux 0x7ee31dcb kill_fasync +EXPORT_SYMBOL vmlinux 0x7ee32a24 open_with_fake_path +EXPORT_SYMBOL vmlinux 0x7eef3371 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x7f013a18 bmap +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f11a095 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x7f171777 scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0x7f20d032 inet_add_offload +EXPORT_SYMBOL vmlinux 0x7f21102f complete_request_key +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f287c4a tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x7f429b16 dma_supported +EXPORT_SYMBOL vmlinux 0x7f47c9a2 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f525129 add_watch_to_object +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f5caaad input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x7f73d77e vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x7f7678ac __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f8ca212 input_unregister_device +EXPORT_SYMBOL vmlinux 0x7fb9be81 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x7fde5805 dev_add_offload +EXPORT_SYMBOL vmlinux 0x7fdf8288 phy_start +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe3cfc4 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x7fed909b _dev_notice +EXPORT_SYMBOL vmlinux 0x8010caa8 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x80354108 blackhole_netdev +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x803fcbed tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x804af87c wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x80504073 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x805c0b66 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x8079cc7e netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0x808821d7 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x8089fbba dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x80a717a8 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x80ab37ea dm_get_device +EXPORT_SYMBOL vmlinux 0x80b84419 agp_backend_release +EXPORT_SYMBOL vmlinux 0x80be49e8 fs_param_is_path +EXPORT_SYMBOL vmlinux 0x80c25d8f uart_match_port +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d676e1 block_write_begin +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e524c9 unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x810d9b6d netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x8110d081 km_query +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x81188c30 match_string +EXPORT_SYMBOL vmlinux 0x811e8aa8 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816347c6 agp_device_command +EXPORT_SYMBOL vmlinux 0x816427d7 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x81ac5e33 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x81b395b3 down_interruptible +EXPORT_SYMBOL vmlinux 0x81bc20d3 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x81c3cd0e neigh_table_init +EXPORT_SYMBOL vmlinux 0x81c661ec copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x81c761fc km_state_notify +EXPORT_SYMBOL vmlinux 0x81ce9941 intel_scu_ipc_dev_writev +EXPORT_SYMBOL vmlinux 0x81d36e4e __d_lookup_done +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dded7c inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821bc089 __post_watch_notification +EXPORT_SYMBOL vmlinux 0x821f8df9 inode_init_always +EXPORT_SYMBOL vmlinux 0x8226c785 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x82303336 scsi_print_command +EXPORT_SYMBOL vmlinux 0x823c19ea iosf_mbi_unregister_pmic_bus_access_notifier_unlocked +EXPORT_SYMBOL vmlinux 0x823e507d locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x82630124 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x8263a6d9 proc_douintvec +EXPORT_SYMBOL vmlinux 0x8268f1cc fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x826cb2d0 netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x827596e4 dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0x827d0ef9 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0x827de522 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828da22d scsi_partsize +EXPORT_SYMBOL vmlinux 0x829a49cb of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x82a0416e seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82cc6eb0 d_add +EXPORT_SYMBOL vmlinux 0x82f5fda2 flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0x8307b2bb netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x83296419 nvm_end_io +EXPORT_SYMBOL vmlinux 0x83435817 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x835bf28b __scm_send +EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x837e3ca2 skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x837f3099 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x83b495d7 sock_no_linger +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c99f91 vme_irq_request +EXPORT_SYMBOL vmlinux 0x83d0c903 put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0x83e64e0b put_watch_queue +EXPORT_SYMBOL vmlinux 0x83e7afae skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x840270ea mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x840b9468 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x841e2e59 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x84751daa __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x848d372e iowrite8 +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84a3dd2f __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x84b0001b write_cache_pages +EXPORT_SYMBOL vmlinux 0x84b33035 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x84b9fdbd lookup_bdev +EXPORT_SYMBOL vmlinux 0x84bf2635 fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0x84c1c552 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x84e04f6c tcp_read_sock +EXPORT_SYMBOL vmlinux 0x84e183bc invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x85204d41 inet_listen +EXPORT_SYMBOL vmlinux 0x852aad1a iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x8530641c scsi_host_get +EXPORT_SYMBOL vmlinux 0x8549ce0f devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x854aefa7 udp_seq_stop +EXPORT_SYMBOL vmlinux 0x85532eb1 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x85611c89 param_ops_charp +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8568f589 input_register_handler +EXPORT_SYMBOL vmlinux 0x85787781 tty_port_close +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x859a0967 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x85a82bca fwnode_irq_get +EXPORT_SYMBOL vmlinux 0x85aac538 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85bf6c22 dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0x85cc9ebb unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0x85d4b841 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x85da77ae tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x85de36e7 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f1d2ae blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x860a2080 release_pages +EXPORT_SYMBOL vmlinux 0x86261500 inet6_offloads +EXPORT_SYMBOL vmlinux 0x8639bb6b eth_header +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8655021d sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x86689a31 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x86767d9e locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x867fde17 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x8683962a agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86957acf jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x869c841c uart_update_timeout +EXPORT_SYMBOL vmlinux 0x86c18958 bd_start_claiming +EXPORT_SYMBOL vmlinux 0x86c7272b iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86e1456e netlink_unicast +EXPORT_SYMBOL vmlinux 0x86f27420 iosf_mbi_block_punit_i2c_access +EXPORT_SYMBOL vmlinux 0x86fb4536 cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870299f3 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0x8703afc6 param_set_charp +EXPORT_SYMBOL vmlinux 0x87102316 inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0x871a23d5 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x87280c19 genphy_suspend +EXPORT_SYMBOL vmlinux 0x872f45c1 dma_virt_ops +EXPORT_SYMBOL vmlinux 0x873c076e security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x87471698 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x8752ea29 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x8759a817 inet6_bind +EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed +EXPORT_SYMBOL vmlinux 0x877ba6b5 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x87a35f96 proc_create_data +EXPORT_SYMBOL vmlinux 0x87b72376 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87d01b88 prepare_creds +EXPORT_SYMBOL vmlinux 0x87d6cdf1 ether_setup +EXPORT_SYMBOL vmlinux 0x87dbf04c tcp_sendpage +EXPORT_SYMBOL vmlinux 0x87f642e4 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0x8806f914 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x8819ca49 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x881c4413 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x882c820f pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x8831b2d9 free_cgroup_ns +EXPORT_SYMBOL vmlinux 0x88401754 rproc_shutdown +EXPORT_SYMBOL vmlinux 0x885e0b0d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x887028a8 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x887a2371 inet6_protos +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x88833b06 consume_skb +EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 +EXPORT_SYMBOL vmlinux 0x888dd270 mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88ac932c vga_get +EXPORT_SYMBOL vmlinux 0x88b11f07 security_path_rename +EXPORT_SYMBOL vmlinux 0x88c41c7a locks_remove_posix +EXPORT_SYMBOL vmlinux 0x88ca2b36 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x88db9e39 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88dffab7 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88fca6af set_create_files_as +EXPORT_SYMBOL vmlinux 0x890d0c88 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0x8912b105 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x891f7529 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x892a856d of_find_backlight +EXPORT_SYMBOL vmlinux 0x893ab70a d_instantiate_new +EXPORT_SYMBOL vmlinux 0x89434b4b radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x89603253 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x896a9c4a dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x897270fb _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x8972eed6 of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0x89777ed6 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x899e906c phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x89c53c3f generic_copy_file_range +EXPORT_SYMBOL vmlinux 0x89fd1fa0 mdio_device_create +EXPORT_SYMBOL vmlinux 0x8a03c185 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x8a0c2591 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x8a1c7108 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x8a32fd66 d_instantiate +EXPORT_SYMBOL vmlinux 0x8a35b432 sme_me_mask +EXPORT_SYMBOL vmlinux 0x8a451d1a i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x8a454d9a netif_device_attach +EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0x8a4882bf fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a513160 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x8a668c37 init_special_inode +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a6c7139 acpi_mask_gpe +EXPORT_SYMBOL vmlinux 0x8a6fd815 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x8a76de5e pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a866a0c vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c36ae finish_swait +EXPORT_SYMBOL vmlinux 0x8aba9330 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x8ac12273 blk_put_queue +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x8acb5162 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0x8ad29bab _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8ad3ed76 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x8af0b554 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b344547 __register_binfmt +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6697ff xp_free +EXPORT_SYMBOL vmlinux 0x8b6b2473 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0x8b6dd461 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x8b7e42ec check_disk_change +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8cda8d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b91f1fe dma_free_attrs +EXPORT_SYMBOL vmlinux 0x8b966b63 sn_rtc_cycles_per_second +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8ba96d27 genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x8bab4044 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x8bb615f4 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x8bbd23f1 import_single_range +EXPORT_SYMBOL vmlinux 0x8bcf4ec8 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x8bd3b856 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x8bd577d0 acpi_ut_exit +EXPORT_SYMBOL vmlinux 0x8bdc0de7 follow_down_one +EXPORT_SYMBOL vmlinux 0x8c08b4e9 d_make_root +EXPORT_SYMBOL vmlinux 0x8c15fe3e __x86_retpoline_r10 +EXPORT_SYMBOL vmlinux 0x8c26d495 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x8c3253ec _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x8c51f00f inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x8c53f7ca netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c6dec24 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x8c9882cf blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8c9e338f acpi_bios_error +EXPORT_SYMBOL vmlinux 0x8ca32db4 skb_ext_add +EXPORT_SYMBOL vmlinux 0x8ca6eb2c PDE_DATA +EXPORT_SYMBOL vmlinux 0x8cb0b5b9 dqget +EXPORT_SYMBOL vmlinux 0x8cb544df __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8cbcdfc9 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce46ff0 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x8ce85b8c jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x8cfeed6e pci_read_config_byte +EXPORT_SYMBOL vmlinux 0x8d10652a tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x8d1e26f6 page_pool_put_page +EXPORT_SYMBOL vmlinux 0x8d25c2ad dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0x8d380581 vfio_register_notifier +EXPORT_SYMBOL vmlinux 0x8d513f9f filemap_fault +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d994498 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x8d9ca0e6 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x8db22efe acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x8db5960f input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x8db77abf proc_set_size +EXPORT_SYMBOL vmlinux 0x8dbba4b5 phy_init_hw +EXPORT_SYMBOL vmlinux 0x8dd0531d inet_ioctl +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8df7e8d6 cpumask_any_but +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8e0be234 vga_switcheroo_client_probe_defer +EXPORT_SYMBOL vmlinux 0x8e17b3ae idr_destroy +EXPORT_SYMBOL vmlinux 0x8e21c9a1 dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x8e2b7d94 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x8e2d1236 ex_handler_wrmsr_unsafe +EXPORT_SYMBOL vmlinux 0x8e2de181 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x8e4532a6 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x8e45a0f3 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8e463ea6 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x8e482cad d_mark_dontcache +EXPORT_SYMBOL vmlinux 0x8e56263f d_prune_aliases +EXPORT_SYMBOL vmlinux 0x8e600fe3 security_sb_remount +EXPORT_SYMBOL vmlinux 0x8e663d0f zalloc_cpumask_var_node +EXPORT_SYMBOL vmlinux 0x8e71e4bf neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x8e8fe270 netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8e97858a tty_set_operations +EXPORT_SYMBOL vmlinux 0x8e97def6 do_SAK +EXPORT_SYMBOL vmlinux 0x8ea46ae0 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb8c3dc pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x8ec6c6ad blk_sync_queue +EXPORT_SYMBOL vmlinux 0x8ee4d248 get_disk_and_module +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f020937 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x8f251ce9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f3835c6 fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x8f38d383 ex_handler_default +EXPORT_SYMBOL vmlinux 0x8f559f46 nf_log_unset +EXPORT_SYMBOL vmlinux 0x8f685e76 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x8f6d4125 _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x8f7bf8fd tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0x8f80bf11 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa25c24 xa_find +EXPORT_SYMBOL vmlinux 0x8fa40725 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8fa95de0 md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x8fb90f69 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x8fd6c694 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x8fe03498 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x8fe43365 pci_write_config_dword +EXPORT_SYMBOL vmlinux 0x8feeeb4c vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ff8f76d neigh_direct_output +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x90195262 __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x9034a696 mempool_destroy +EXPORT_SYMBOL vmlinux 0x904f4a03 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user +EXPORT_SYMBOL vmlinux 0x905eb74c napi_consume_skb +EXPORT_SYMBOL vmlinux 0x907ba52c posix_acl_valid +EXPORT_SYMBOL vmlinux 0x90832e53 devm_clk_put +EXPORT_SYMBOL vmlinux 0x90868007 block_commit_write +EXPORT_SYMBOL vmlinux 0x90897449 __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x909d2cdf vm_event_states +EXPORT_SYMBOL vmlinux 0x90b64c0c pci_enable_wake +EXPORT_SYMBOL vmlinux 0x90caafbc netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x90e24fd8 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x90e7bf2d fb_show_logo +EXPORT_SYMBOL vmlinux 0x90ef2652 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x90f3d1fd dquot_destroy +EXPORT_SYMBOL vmlinux 0x90f70379 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x90fe03f6 tty_name +EXPORT_SYMBOL vmlinux 0x91007682 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x912c3b98 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x9130f444 security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0x9144f207 bio_split +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x916ebbb3 __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x916fe601 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x91701723 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x9176145b acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a10c61 intel_scu_ipc_dev_simple_command +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91b2e67c __skb_get_hash +EXPORT_SYMBOL vmlinux 0x91b2ff27 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x91c8801b migrate_page_states +EXPORT_SYMBOL vmlinux 0x91cfad31 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x91d83759 submit_bio +EXPORT_SYMBOL vmlinux 0x91f316d8 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x91f44510 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9200bb7f bdevname +EXPORT_SYMBOL vmlinux 0x9208c003 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x920e9e1a amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x9229df48 km_report +EXPORT_SYMBOL vmlinux 0x922dc054 cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x9234cef6 cdrom_release +EXPORT_SYMBOL vmlinux 0x9238be7c rtnl_notify +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92462b91 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x92540fbf finish_wait +EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x92690bfb i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x926cb58c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x926eb825 hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92963089 input_get_keycode +EXPORT_SYMBOL vmlinux 0x92a506a8 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x92a51e56 acpi_debug_print_raw +EXPORT_SYMBOL vmlinux 0x92a87f02 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x92b8d104 __d_drop +EXPORT_SYMBOL vmlinux 0x92b99a33 acpi_put_table +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92c5b6ac pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0x92d1de63 netdev_notice +EXPORT_SYMBOL vmlinux 0x92d2cadc xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x92dbedc4 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92f521bc skb_pull +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9319be29 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x931ce096 iget5_locked +EXPORT_SYMBOL vmlinux 0x931f35da dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x934e09f9 vfs_unlink +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937dfd96 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x93838972 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x9392170e rproc_da_to_va +EXPORT_SYMBOL vmlinux 0x93967fc7 request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93ac3461 dev_mc_del +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93d6dd8c complete_all +EXPORT_SYMBOL vmlinux 0x93f017a6 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x9402384e phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x9402a883 udp_ioctl +EXPORT_SYMBOL vmlinux 0x940b33f1 uart_register_driver +EXPORT_SYMBOL vmlinux 0x9411c7ac free_task +EXPORT_SYMBOL vmlinux 0x9421693b skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x9430760f vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x946abce0 vga_tryget +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94ab965a arp_create +EXPORT_SYMBOL vmlinux 0x94b0900c pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x94bb7ec3 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94c29193 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x94d75ed9 km_policy_notify +EXPORT_SYMBOL vmlinux 0x94de27d3 dev_activate +EXPORT_SYMBOL vmlinux 0x94e481cf ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x94fd5532 neigh_xmit +EXPORT_SYMBOL vmlinux 0x9511c6ef jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x952b5422 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x95450f9c dst_discard_out +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x95838584 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x9585a89c __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x95a67b07 udp_table +EXPORT_SYMBOL vmlinux 0x95b463a3 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x95c4cd37 tso_count_descs +EXPORT_SYMBOL vmlinux 0x95e1a2ff page_pool_release_page +EXPORT_SYMBOL vmlinux 0x95e2b0ae fqdir_exit +EXPORT_SYMBOL vmlinux 0x95e5acbd eth_get_headlen +EXPORT_SYMBOL vmlinux 0x95f4b92c sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x960b2308 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x960f7b38 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x9625695d acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x962afadb ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x962c4977 clkdev_add +EXPORT_SYMBOL vmlinux 0x963dcba1 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x9653a317 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x966f06bf fddi_type_trans +EXPORT_SYMBOL vmlinux 0x9673a074 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x96848186 scnprintf +EXPORT_SYMBOL vmlinux 0x968a0762 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x96940394 flow_rule_alloc +EXPORT_SYMBOL vmlinux 0x969762c8 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x96b14e1a md_done_sync +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d44a89 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x96e5d30f gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x96eab78b iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x96f4f839 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x97004c0e skb_put +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x9763ba2e sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x97651e6c vmemmap_base +EXPORT_SYMBOL vmlinux 0x977f511b __mutex_init +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97acdfa5 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97b87aab fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97e6ab6c vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x984c9135 dcb_setapp +EXPORT_SYMBOL vmlinux 0x985785e7 __sb_start_write +EXPORT_SYMBOL vmlinux 0x9858d509 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x986fb4e4 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x987441cb wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x987d198d skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x98ad5627 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x98b87876 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x98c039dc dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98dc9b49 current_task +EXPORT_SYMBOL vmlinux 0x98deaa9c mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x99078b39 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x9910e084 set_user_nice +EXPORT_SYMBOL vmlinux 0x991d7d1f uart_resume_port +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9959aaca fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0x9969d45d genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x996d6740 tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x996f08e8 seq_open_private +EXPORT_SYMBOL vmlinux 0x9975dc22 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x9975f00f nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x9976927f sock_rfree +EXPORT_SYMBOL vmlinux 0x9991fb6b vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a09225 param_set_short +EXPORT_SYMBOL vmlinux 0x99aa83c5 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x99c9a17b scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99d65df1 efi +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a0a8373 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a17e1a9 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a22391e radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x9a2278f9 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x9a232fe9 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x9a3463a1 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x9a46e670 mr_dump +EXPORT_SYMBOL vmlinux 0x9a573a01 dev_driver_string +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a594b34 input_inject_event +EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9a7beaa0 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x9a7fb39b fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x9a9936b9 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x9a9caf32 mmc_put_card +EXPORT_SYMBOL vmlinux 0x9aab2d0d mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9abdba38 single_open_size +EXPORT_SYMBOL vmlinux 0x9ad08780 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x9ad7a582 iosf_mbi_assert_punit_acquired +EXPORT_SYMBOL vmlinux 0x9adb6ec8 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9adde6ed tcp_shutdown +EXPORT_SYMBOL vmlinux 0x9b0bf98f page_mapping +EXPORT_SYMBOL vmlinux 0x9b1140e4 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b37da04 seq_escape +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b466193 scsi_print_result +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b72478f acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x9b7f9ca8 devm_of_iomap +EXPORT_SYMBOL vmlinux 0x9b8dd1d3 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0x9b91c392 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x9b92395e security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x9b96183c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x9bb30189 mount_subtree +EXPORT_SYMBOL vmlinux 0x9bf0e1ad flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x9bf4f654 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x9c122bcf mempool_create_node +EXPORT_SYMBOL vmlinux 0x9c27b5f7 devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x9c29ea99 udp_seq_start +EXPORT_SYMBOL vmlinux 0x9c517847 bdi_register +EXPORT_SYMBOL vmlinux 0x9c587f3a pci_remove_bus +EXPORT_SYMBOL vmlinux 0x9c658bf7 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x9c65bea7 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x9c7b8242 d_drop +EXPORT_SYMBOL vmlinux 0x9c942adc vprintk_emit +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb84544 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x9cb986f2 vmalloc_base +EXPORT_SYMBOL vmlinux 0x9ccc9d43 unix_get_socket +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cd91791 register_sysctl +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9d099a39 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x9d0bcc98 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d55d6a0 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x9d5facc3 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x9d61e994 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x9d6afc7c xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x9d70541a native_save_fl +EXPORT_SYMBOL vmlinux 0x9d71b010 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9d8a497d da903x_query_status +EXPORT_SYMBOL vmlinux 0x9d8fcd6d vif_device_init +EXPORT_SYMBOL vmlinux 0x9d92f3ad __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9dd10c05 padata_do_serial +EXPORT_SYMBOL vmlinux 0x9dda162b acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x9ddf496e mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x9df0dd90 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x9e021e9e __nd_driver_register +EXPORT_SYMBOL vmlinux 0x9e04d9d6 finish_no_open +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e115472 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e1f556f param_get_long +EXPORT_SYMBOL vmlinux 0x9e2737f0 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0x9e2b42f1 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x9e4cfca3 make_kuid +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e509d66 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x9e57e3c5 md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e683f75 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9bf3f9 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf +EXPORT_SYMBOL vmlinux 0x9eab8d85 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x9eaca814 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ed28bdd xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9eea02ee sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x9efbbf15 vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x9f03b338 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x9f0e74dd user_path_create +EXPORT_SYMBOL vmlinux 0x9f0f950a dma_sync_wait +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4f2aa3 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x9f50a4e2 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f5adb14 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x9f63e1c0 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9f65c857 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x9f808b33 netdev_warn +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fc462f9 mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffead8d touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x9fff0c80 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa01e6a92 simple_lookup +EXPORT_SYMBOL vmlinux 0xa02aa74a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xa02c0783 kill_pid +EXPORT_SYMBOL vmlinux 0xa0341a07 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0xa037aca3 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xa0428439 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa0572e22 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa06ee985 unlock_buffer +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa080905d __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa084f79f cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0xa087f8cf fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b26e65 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xa0c96a1b skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0edab2b no_llseek +EXPORT_SYMBOL vmlinux 0xa0f152ce dump_skip +EXPORT_SYMBOL vmlinux 0xa0f6bdd3 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd5a89 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0xa102907d __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10ef161 __invalidate_device +EXPORT_SYMBOL vmlinux 0xa10ef90d mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa13e780a gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xa13e7fc5 tso_build_data +EXPORT_SYMBOL vmlinux 0xa155c071 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0xa1587158 devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0xa15a3950 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xa1624364 devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0xa16702e2 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa16c8613 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xa181067b get_tz_trend +EXPORT_SYMBOL vmlinux 0xa1823f36 kernel_listen +EXPORT_SYMBOL vmlinux 0xa1b1e943 simple_unlink +EXPORT_SYMBOL vmlinux 0xa1bedd72 amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0xa1d1e4a9 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa1d8d1bf devm_rproc_add +EXPORT_SYMBOL vmlinux 0xa1e68c50 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0xa1f61432 set_security_override +EXPORT_SYMBOL vmlinux 0xa1f9a134 __x86_indirect_thunk_rsi +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa20e906e security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xa2202343 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xa221d5dd udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xa2326c49 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0xa23a8176 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa276c6cf from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xa283c622 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xa289a3db xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa28d7743 genl_notify +EXPORT_SYMBOL vmlinux 0xa297c785 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xa29b5e49 netdev_crit +EXPORT_SYMBOL vmlinux 0xa2a812a2 __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xa2b36f49 devm_iounmap +EXPORT_SYMBOL vmlinux 0xa2b70b49 dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xa2c0163e dev_addr_flush +EXPORT_SYMBOL vmlinux 0xa2e9d83b fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0xa2efe19a netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xa2f04092 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xa30bcd6b config_group_init +EXPORT_SYMBOL vmlinux 0xa31e73fa vfs_get_link +EXPORT_SYMBOL vmlinux 0xa3284bd6 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xa34ccbad generic_block_bmap +EXPORT_SYMBOL vmlinux 0xa3654308 serio_interrupt +EXPORT_SYMBOL vmlinux 0xa376e725 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa378aa96 vme_bus_num +EXPORT_SYMBOL vmlinux 0xa38f21b9 amd_iommu_update_ga +EXPORT_SYMBOL vmlinux 0xa3959915 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xa3a10c42 inet_gso_segment +EXPORT_SYMBOL vmlinux 0xa3b1d001 fget_raw +EXPORT_SYMBOL vmlinux 0xa3b23aa4 __skb_ext_del +EXPORT_SYMBOL vmlinux 0xa3d2e4c3 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0xa3e11ee7 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xa3e4f871 acpi_initialize_debugger +EXPORT_SYMBOL vmlinux 0xa3f1f843 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa403ffb6 ip_frag_init +EXPORT_SYMBOL vmlinux 0xa40e1740 posix_lock_file +EXPORT_SYMBOL vmlinux 0xa40ff01b acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xa4136b28 path_nosuid +EXPORT_SYMBOL vmlinux 0xa415698d acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xa4191c0b memset_io +EXPORT_SYMBOL vmlinux 0xa41d6e42 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xa43281d5 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xa43a4a9e scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xa43e6dbc get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xa447fe8c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xa460e837 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xa4797698 __find_get_block +EXPORT_SYMBOL vmlinux 0xa49c2ef6 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xa4a02d09 __phy_resume +EXPORT_SYMBOL vmlinux 0xa4a4b595 tty_port_put +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e23e59 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xa4f4b336 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa4f95641 nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0xa4fa7b0a cdrom_open +EXPORT_SYMBOL vmlinux 0xa4faf62a acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xa507125e acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xa509dbd2 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0xa50bcff0 x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0xa527b7c4 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xa52bedf6 xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5956abe ioread64_hi_lo +EXPORT_SYMBOL vmlinux 0xa5976e4f dev_base_lock +EXPORT_SYMBOL vmlinux 0xa598d185 sock_set_priority +EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa5e243f6 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0xa5e55057 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0xa5f0daa5 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xa5fdad10 kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0xa602ab74 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xa615fa22 skb_copy_header +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa6257a2f complete +EXPORT_SYMBOL vmlinux 0xa6467f2b netif_receive_skb +EXPORT_SYMBOL vmlinux 0xa64d3742 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0xa65dd105 tcf_block_put +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa68dd847 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa69717a3 rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0xa6afdf86 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0xa6c33df8 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xa6c86a15 inet_frag_find +EXPORT_SYMBOL vmlinux 0xa6d15940 mmc_command_done +EXPORT_SYMBOL vmlinux 0xa6f35872 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xa6f4024d twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa7111d9a phy_start_cable_test +EXPORT_SYMBOL vmlinux 0xa72cfb7d ioremap_wt +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa764d960 rproc_add_subdev +EXPORT_SYMBOL vmlinux 0xa76fc198 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa77e84b1 dev_open +EXPORT_SYMBOL vmlinux 0xa77fe742 current_time +EXPORT_SYMBOL vmlinux 0xa7ad3d2e register_shrinker +EXPORT_SYMBOL vmlinux 0xa7b3afd1 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xa7d5f92e ida_destroy +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa805ecfc acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0xa812ba15 rproc_put +EXPORT_SYMBOL vmlinux 0xa8181adf proc_dointvec +EXPORT_SYMBOL vmlinux 0xa8216d8f freeze_super +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa83481ea remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xa836ba02 wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xa839e283 make_kprojid +EXPORT_SYMBOL vmlinux 0xa83d43a4 empty_aops +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa843aedc configfs_register_group +EXPORT_SYMBOL vmlinux 0xa843e8df migrate_vma_pages +EXPORT_SYMBOL vmlinux 0xa84788d3 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa853396b xa_extract +EXPORT_SYMBOL vmlinux 0xa8574584 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xa85a3e6d xa_load +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa8770c07 md_integrity_register +EXPORT_SYMBOL vmlinux 0xa87d3340 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xa8888358 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa8969879 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xa897e3e7 mempool_free +EXPORT_SYMBOL vmlinux 0xa8a21b61 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0xa8a3b1f7 mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0xa8a5797a twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xa8afdc85 input_reset_device +EXPORT_SYMBOL vmlinux 0xa8c7037c page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8e6933a qdf2400_e44_present +EXPORT_SYMBOL vmlinux 0xa8e94c63 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa92eaeda xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0xa931af8a asm_load_gs_index +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa93b7bcd xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xa94a09bb mem_section +EXPORT_SYMBOL vmlinux 0xa951d166 arp_send +EXPORT_SYMBOL vmlinux 0xa956f44c reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa9785b49 cpu_core_map +EXPORT_SYMBOL vmlinux 0xa97a7362 eth_header_cache +EXPORT_SYMBOL vmlinux 0xa987c383 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xa9976b43 vga_put +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b16237 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xa9b52eb8 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xa9c581e9 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa9c5c275 bio_free_pages +EXPORT_SYMBOL vmlinux 0xa9c72303 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0xa9e0f4f3 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xa9e3a390 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa9fedc5e pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xa9fff3ea security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xaa00fdc0 ec_transaction +EXPORT_SYMBOL vmlinux 0xaa1a6131 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xaa1fa044 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xaa263306 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xaa295b8b jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xaa302a26 mdio_device_free +EXPORT_SYMBOL vmlinux 0xaa341905 acpi_bios_exception +EXPORT_SYMBOL vmlinux 0xaa36509c flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0xaa379cc7 xp_dma_map +EXPORT_SYMBOL vmlinux 0xaa38377d serio_rescan +EXPORT_SYMBOL vmlinux 0xaa42c692 tcf_em_register +EXPORT_SYMBOL vmlinux 0xaa4cade3 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0xaa61f1f4 filp_open +EXPORT_SYMBOL vmlinux 0xaa6bade1 alloc_pages_vma +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa749a8e ppp_register_channel +EXPORT_SYMBOL vmlinux 0xaa868ce7 param_ops_byte +EXPORT_SYMBOL vmlinux 0xaa89d13f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaaa67c20 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xaab650ca fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0xaac3d680 netpoll_setup +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad54767 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaadc1fe4 xfrm_state_free +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafbe69a put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0aaa3e __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xab1b586c mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xab1de458 ps2_command +EXPORT_SYMBOL vmlinux 0xab2c3ba0 make_bad_inode +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab3f995d input_flush_device +EXPORT_SYMBOL vmlinux 0xab447203 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xab4841b7 new_inode +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab678ca3 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0xab67a0ac dql_init +EXPORT_SYMBOL vmlinux 0xab6fd704 tty_throttle +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab74bfef amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0xab753625 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7b8e68 __x86_retpoline_rbx +EXPORT_SYMBOL vmlinux 0xab898a04 bio_copy_data +EXPORT_SYMBOL vmlinux 0xaba21422 simple_write_begin +EXPORT_SYMBOL vmlinux 0xaba61279 mr_fill_mroute +EXPORT_SYMBOL vmlinux 0xaba81805 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0xabab1c6d mmc_of_parse +EXPORT_SYMBOL vmlinux 0xabacad3c do_splice_direct +EXPORT_SYMBOL vmlinux 0xabb99952 param_get_byte +EXPORT_SYMBOL vmlinux 0xabc17bcb get_user_pages_remote +EXPORT_SYMBOL vmlinux 0xabc52e35 dget_parent +EXPORT_SYMBOL vmlinux 0xabc91e54 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xabe7f849 tty_port_open +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xac06c2a6 kill_anon_super +EXPORT_SYMBOL vmlinux 0xac0a86f6 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac537ac2 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xac5811c1 bio_uninit +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac7479f9 phy_connect +EXPORT_SYMBOL vmlinux 0xac7c7f50 key_task_permission +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac926714 security_inet_conn_established +EXPORT_SYMBOL vmlinux 0xac93c0f0 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xaca6bf21 find_lock_entry +EXPORT_SYMBOL vmlinux 0xaca86682 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xacaa4c72 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacac47d7 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xacbcc2b0 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xacd23858 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdd0347 nf_log_set +EXPORT_SYMBOL vmlinux 0xacea8173 acpi_debug_print +EXPORT_SYMBOL vmlinux 0xacf2c654 dqput +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xacf76bec nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xacf84200 fb_pan_display +EXPORT_SYMBOL vmlinux 0xacfbe245 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad071d60 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xad1036a2 amd_iommu_activate_guest_mode +EXPORT_SYMBOL vmlinux 0xad1a7fd0 inet_getname +EXPORT_SYMBOL vmlinux 0xad251b79 mdiobus_free +EXPORT_SYMBOL vmlinux 0xad2951a9 ex_handler_rdmsr_unsafe +EXPORT_SYMBOL vmlinux 0xad32bae2 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xad436514 __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xad48cfaf jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xad4ed252 register_key_type +EXPORT_SYMBOL vmlinux 0xad536c91 x86_cpu_to_acpiid +EXPORT_SYMBOL vmlinux 0xad63391d pci_find_capability +EXPORT_SYMBOL vmlinux 0xad6ba40e radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xad6dae7d seq_dentry +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad750486 rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9901ae bit_waitqueue +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xada31e57 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xadaaaa11 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xadb0ced9 vfs_get_super +EXPORT_SYMBOL vmlinux 0xadb4f345 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadc044b7 vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xade1020b max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xadf3bed1 register_netdevice +EXPORT_SYMBOL vmlinux 0xadf9d179 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae09dee1 register_framebuffer +EXPORT_SYMBOL vmlinux 0xae189a67 md_check_recovery +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae46bb63 nvm_register +EXPORT_SYMBOL vmlinux 0xae4cc80e __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xae535460 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xae5a04bb acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0xae7e3a35 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xae84d3f3 skb_dequeue +EXPORT_SYMBOL vmlinux 0xae92928b page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0xaea5f6d8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeba72a5 kobject_get +EXPORT_SYMBOL vmlinux 0xaebd12f0 acpi_get_name +EXPORT_SYMBOL vmlinux 0xaec60722 abort_creds +EXPORT_SYMBOL vmlinux 0xaec7b59f mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0xaecb89ee copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xaed2565f irq_domain_set_info +EXPORT_SYMBOL vmlinux 0xaee5e14d block_write_full_page +EXPORT_SYMBOL vmlinux 0xaeee3b4e page_pool_create +EXPORT_SYMBOL vmlinux 0xaef8c8be phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0xaef9ff6c vfs_statfs +EXPORT_SYMBOL vmlinux 0xaefc4eab fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xaf14b099 sync_file_create +EXPORT_SYMBOL vmlinux 0xaf2301ce skb_clone_sk +EXPORT_SYMBOL vmlinux 0xaf2f643f dst_release +EXPORT_SYMBOL vmlinux 0xaf354bbe cpu_tss_rw +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4d952c clocksource_unregister +EXPORT_SYMBOL vmlinux 0xaf4fe1a2 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xaf529f17 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0xaf5cd4d2 sock_wfree +EXPORT_SYMBOL vmlinux 0xaf5fe744 register_gifconf +EXPORT_SYMBOL vmlinux 0xaf7c5922 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xaf7f332d security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xaf9958bd tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0xafa0fa34 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xafa46783 rproc_report_crash +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafbb4b37 to_ndd +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafdd86c2 bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0xb00a17d7 mount_single +EXPORT_SYMBOL vmlinux 0xb0132614 block_read_full_page +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb01ebac2 scsi_add_device +EXPORT_SYMBOL vmlinux 0xb03e5d41 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0xb04bc7bc ppp_dev_name +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb061a98a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xb07fcefa locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xb0860a1c seq_read_iter +EXPORT_SYMBOL vmlinux 0xb0895b74 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb095d8a8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xb0966b3a scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0aed408 ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0xb0bcd4c3 sg_miter_next +EXPORT_SYMBOL vmlinux 0xb0c5e247 lockref_put_return +EXPORT_SYMBOL vmlinux 0xb0dfc005 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0ed560a devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize +EXPORT_SYMBOL vmlinux 0xb0f46d6c tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xb0f4b887 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xb1061456 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0xb10708f5 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb1113f5b fs_lookup_param +EXPORT_SYMBOL vmlinux 0xb11de022 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12c8782 rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb135d998 igrab +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb165062d tty_port_init +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb18b1f56 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xb19a5453 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1b3e40f mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cc449f ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xb1dbcb2f devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1df5bdf netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0xb1e12d81 krealloc +EXPORT_SYMBOL vmlinux 0xb1eda160 vfs_setpos +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb220edd7 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xb224bdbc simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xb225d3a3 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb26051f8 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xb262418b devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0xb2644ce7 console_start +EXPORT_SYMBOL vmlinux 0xb29b4ad7 mmc_sw_reset +EXPORT_SYMBOL vmlinux 0xb2b810eb eisa_driver_register +EXPORT_SYMBOL vmlinux 0xb2bcb088 acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0xb2be9946 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xb2c94fb4 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3046f72 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb32a5973 acpi_ut_status_exit +EXPORT_SYMBOL vmlinux 0xb32ea4bf netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0xb33bdbba skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb33c219f posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xb348c1ea mdio_driver_register +EXPORT_SYMBOL vmlinux 0xb34dbb2e inet6_del_offload +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb359cf97 seq_release_private +EXPORT_SYMBOL vmlinux 0xb35ba97f qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb3635b01 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb3863a67 acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xb38bda17 seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0xb3a2dfdf nmi_panic +EXPORT_SYMBOL vmlinux 0xb3ae2850 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3c07792 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d3a6af i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4043948 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0xb40b1238 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xb417f082 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xb421b404 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42ba998 dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xb4323bd9 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xb43c5e98 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xb44ad4b3 _copy_to_user +EXPORT_SYMBOL vmlinux 0xb456fb93 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb4577003 acpi_dev_present +EXPORT_SYMBOL vmlinux 0xb45a80f5 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xb45b3f76 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xb45be943 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xb46444bb inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xb47602a3 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0xb47cca30 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4985beb ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0xb4aa1660 vfs_llseek +EXPORT_SYMBOL vmlinux 0xb4c618c6 genl_register_family +EXPORT_SYMBOL vmlinux 0xb4c935e7 to_nd_dax +EXPORT_SYMBOL vmlinux 0xb4d01d85 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb4d3c47b pci_write_vpd +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb4f622b9 bio_reset +EXPORT_SYMBOL vmlinux 0xb4ffe1ec devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xb50663cf dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xb50b5c30 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xb50e9569 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xb511f5ee tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0xb528dac9 phy_attached_info +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53f2810 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xb545cbe2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xb5616a39 iov_iter_init +EXPORT_SYMBOL vmlinux 0xb561e6d3 vme_dma_request +EXPORT_SYMBOL vmlinux 0xb56ab44a build_skb +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb574c04c pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xb582337d pci_dev_put +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb58ed8fd acpi_register_debugger +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ab892d uv_undefined +EXPORT_SYMBOL vmlinux 0xb5b6a869 xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0xb5e3bcfb agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb5f08c5d vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0xb601be4c __x86_indirect_thunk_rdx +EXPORT_SYMBOL vmlinux 0xb608fbed param_get_int +EXPORT_SYMBOL vmlinux 0xb61f559b __udp_disconnect +EXPORT_SYMBOL vmlinux 0xb62f203e qdisc_put +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb641b65b blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xb654ef65 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xb6667e0a pci_find_bus +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb693ce6e get_task_exe_file +EXPORT_SYMBOL vmlinux 0xb6a3da09 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6af54fe console_stop +EXPORT_SYMBOL vmlinux 0xb6b13ada vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xb6d6d99a tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb6eb8513 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xb6fb841c blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xb70fb987 security_binder_transaction +EXPORT_SYMBOL vmlinux 0xb714fef0 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb71b031e md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0xb71c1481 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xb7272841 address_space_init_once +EXPORT_SYMBOL vmlinux 0xb72bae5d jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0xb7371ac7 ptp_find_pin +EXPORT_SYMBOL vmlinux 0xb737b185 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xb73a8c1c agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xb7593ddc iosf_mbi_unregister_pmic_bus_access_notifier +EXPORT_SYMBOL vmlinux 0xb75eca8f skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0xb7653c49 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xb77a46d8 fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xb77a50c9 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xb77e14c2 dma_cache_sync +EXPORT_SYMBOL vmlinux 0xb7853c4b __ClearPageMovable +EXPORT_SYMBOL vmlinux 0xb7864a05 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb79f18df fput +EXPORT_SYMBOL vmlinux 0xb7a35e13 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xb7a579d1 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xb7b5f96c flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xb7bf6442 blk_get_request +EXPORT_SYMBOL vmlinux 0xb7c0f443 sort +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7dbd3c9 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xb7e9f200 is_acpi_device_node +EXPORT_SYMBOL vmlinux 0xb7f4f90d napi_gro_flush +EXPORT_SYMBOL vmlinux 0xb7fe3fe1 inode_init_owner +EXPORT_SYMBOL vmlinux 0xb814e18a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xb81bb399 input_set_timestamp +EXPORT_SYMBOL vmlinux 0xb81be926 lock_rename +EXPORT_SYMBOL vmlinux 0xb81c509a ptp_clock_index +EXPORT_SYMBOL vmlinux 0xb82499a7 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0xb8286f67 iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0xb82e7e85 sget_fc +EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xb85f4c1a __tcf_idr_release +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb8693a99 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xb86a3b57 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xb86f74c5 free_cpumask_var +EXPORT_SYMBOL vmlinux 0xb8757c58 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb8831b5f tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0xb89a9593 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb89c0261 iput +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xb8dbde08 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e9de7b generic_fillattr +EXPORT_SYMBOL vmlinux 0xb8e9f19e _copy_to_iter +EXPORT_SYMBOL vmlinux 0xb8ed0396 unlock_page +EXPORT_SYMBOL vmlinux 0xb8f7dece param_ops_bint +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb92dd4a3 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb97f7045 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xb9830868 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xb98d9647 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0xb9974500 mdiobus_register_device +EXPORT_SYMBOL vmlinux 0xb9a2b062 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xb9ad6464 kobject_add +EXPORT_SYMBOL vmlinux 0xb9af1d0d __xa_clear_mark +EXPORT_SYMBOL vmlinux 0xb9b222ec __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xb9bada25 dev_trans_start +EXPORT_SYMBOL vmlinux 0xb9c86c51 mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0xb9d699d9 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xb9dee26e unregister_filesystem +EXPORT_SYMBOL vmlinux 0xb9e16a80 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0xb9e276cf wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xb9e7429c memcpy_toio +EXPORT_SYMBOL vmlinux 0xb9e8d59f register_qdisc +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ea99e3 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb9efa00b security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb9f4c2da pskb_extract +EXPORT_SYMBOL vmlinux 0xb9fe6786 devm_memremap +EXPORT_SYMBOL vmlinux 0xba043c51 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le +EXPORT_SYMBOL vmlinux 0xba1b265c scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xba35f898 mmput_async +EXPORT_SYMBOL vmlinux 0xba3bd25d fb_class +EXPORT_SYMBOL vmlinux 0xba3ec99b skb_push +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba49a424 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xba53b354 nd_dax_probe +EXPORT_SYMBOL vmlinux 0xba5705cc pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xba7fd9a1 read_cache_page +EXPORT_SYMBOL vmlinux 0xba8b5de0 napi_get_frags +EXPORT_SYMBOL vmlinux 0xbaa67137 _dev_crit +EXPORT_SYMBOL vmlinux 0xbab65a45 key_invalidate +EXPORT_SYMBOL vmlinux 0xbac14123 sock_create +EXPORT_SYMBOL vmlinux 0xbad67efe dquot_operations +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbadfc457 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0xbae91047 dump_align +EXPORT_SYMBOL vmlinux 0xbaffff96 ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb13595e smp_call_function_many +EXPORT_SYMBOL vmlinux 0xbb1bac24 acpi_unregister_debugger +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb250cfd tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3c9c8f agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xbb4888bc ppp_unit_number +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb644fcd iov_iter_advance +EXPORT_SYMBOL vmlinux 0xbb77f778 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xbb8e169a vga_switcheroo_handler_flags +EXPORT_SYMBOL vmlinux 0xbba02041 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xbba05ea4 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0xbba2afa4 __f_setown +EXPORT_SYMBOL vmlinux 0xbba475ee rproc_del +EXPORT_SYMBOL vmlinux 0xbbae199e unregister_netdev +EXPORT_SYMBOL vmlinux 0xbbbbd3d9 vfs_rename +EXPORT_SYMBOL vmlinux 0xbbbf2335 rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0xbbdd65be tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xbbe4fa55 vfio_unpin_pages +EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order +EXPORT_SYMBOL vmlinux 0xbbe93ee1 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xbbe95b88 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xbc07c9c0 qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0xbc09efa6 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc23b49e blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc4994a0 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xbc4cd8d0 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xbc508c5e ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xbc54d86d __register_chrdev +EXPORT_SYMBOL vmlinux 0xbc59805d sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xbc9277b4 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcb198a8 proc_symlink +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc23d1c ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccf213a keyring_search +EXPORT_SYMBOL vmlinux 0xbcd6d203 kernel_connect +EXPORT_SYMBOL vmlinux 0xbcd93954 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xbcf4bfc5 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xbcff312b copy_string_kernel +EXPORT_SYMBOL vmlinux 0xbd1dcf7d iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xbd223756 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xbd298860 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0xbd32f889 pci_release_regions +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd491940 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xbd512005 proc_remove +EXPORT_SYMBOL vmlinux 0xbd56e8a5 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xbd650728 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 +EXPORT_SYMBOL vmlinux 0xbd693a3f phy_device_free +EXPORT_SYMBOL vmlinux 0xbd789827 param_get_short +EXPORT_SYMBOL vmlinux 0xbd78d62e ns_capable_setid +EXPORT_SYMBOL vmlinux 0xbd8b2453 file_remove_privs +EXPORT_SYMBOL vmlinux 0xbddaacc6 con_is_visible +EXPORT_SYMBOL vmlinux 0xbddc4ae8 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xbde1d9d7 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe0110e7 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0xbe13e91c md_write_inc +EXPORT_SYMBOL vmlinux 0xbe1eb575 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbe459c71 dump_page +EXPORT_SYMBOL vmlinux 0xbe49252c acpi_os_write_port +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe536453 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe60f3c6 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xbe686d62 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0xbe6a866f __wait_on_bit +EXPORT_SYMBOL vmlinux 0xbe7e05a8 acpi_tb_install_and_load_table +EXPORT_SYMBOL vmlinux 0xbe805f0d pci_request_region +EXPORT_SYMBOL vmlinux 0xbe8803b4 elevator_alloc +EXPORT_SYMBOL vmlinux 0xbe8a8f53 skb_store_bits +EXPORT_SYMBOL vmlinux 0xbe8cfa2b blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0xbeaec995 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xbebe5d90 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0xbec80ebc param_get_ullong +EXPORT_SYMBOL vmlinux 0xbedc2ae5 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xbeddfcf1 md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xbee0a16f __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xbee2277d key_put +EXPORT_SYMBOL vmlinux 0xbeea0a48 md_bitmap_free +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefa51a3 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xbf17ed3f __mdiobus_read +EXPORT_SYMBOL vmlinux 0xbf186204 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xbf290448 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0xbf3193ec acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xbf41d01c register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf70326e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xbf750eec ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0xbf82ad60 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xbf8a3c9c netif_device_detach +EXPORT_SYMBOL vmlinux 0xbf8baffe xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xbf8bc879 devm_release_resource +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa5ef45 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xbfb49f20 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfd3b377 nf_log_trace +EXPORT_SYMBOL vmlinux 0xbfdcb43a __x86_indirect_thunk_r11 +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff3a0c1 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xc012a969 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc02cc947 udp_skb_destructor +EXPORT_SYMBOL vmlinux 0xc050c5f0 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xc0588485 eth_type_trans +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc07deb55 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xc0be1167 input_get_timestamp +EXPORT_SYMBOL vmlinux 0xc0be1ed8 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0xc0bfa096 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc111ae64 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xc1179daa kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0xc131eb21 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0xc1354f8e ps2_drain +EXPORT_SYMBOL vmlinux 0xc1365323 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0xc139c5fe fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xc1449925 pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xc14dc168 acpi_get_data +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc156c981 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc1607389 tty_lock +EXPORT_SYMBOL vmlinux 0xc162aad8 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc189316d uart_get_divisor +EXPORT_SYMBOL vmlinux 0xc18f6769 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xc1bc0890 simple_link +EXPORT_SYMBOL vmlinux 0xc1bca180 rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1f6c62a dev_set_mtu +EXPORT_SYMBOL vmlinux 0xc2007efd netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc273b6b4 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc278c965 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc28c85a8 sock_register +EXPORT_SYMBOL vmlinux 0xc29957c3 __x86_indirect_thunk_rcx +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc29e21fe pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xc2a17ebe seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc2a2544b md_flush_request +EXPORT_SYMBOL vmlinux 0xc2a464bc nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xc2bfa434 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xc2c05617 netlink_capable +EXPORT_SYMBOL vmlinux 0xc2c12787 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xc2c38333 bdi_alloc +EXPORT_SYMBOL vmlinux 0xc2cde75a vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31a87f9 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0xc31b988b tcp_peek_len +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc3360027 get_tree_single +EXPORT_SYMBOL vmlinux 0xc336e37a input_set_keycode +EXPORT_SYMBOL vmlinux 0xc3416ba1 acpi_dev_hid_uid_match +EXPORT_SYMBOL vmlinux 0xc36a3bd4 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0xc36b81fc vme_master_request +EXPORT_SYMBOL vmlinux 0xc3762aec mempool_alloc +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc3942966 override_creds +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3bc72ad trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xc3e39b09 nobh_writepage +EXPORT_SYMBOL vmlinux 0xc3ff38c2 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc40931fc netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc42dcb99 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0xc4440783 d_alloc_anon +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc48a36bf vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xc490a165 blk_get_queue +EXPORT_SYMBOL vmlinux 0xc4a1651b pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc4ae915e arch_touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xc4ba8f18 tcp_time_wait +EXPORT_SYMBOL vmlinux 0xc4c48519 configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0xc4d3640c xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xc4e2a2f5 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xc4e3ee50 add_to_pipe +EXPORT_SYMBOL vmlinux 0xc4f0bee6 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc4fd2f7d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xc510251b tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc528a49a queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0xc53b4a80 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0xc5425750 generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc558762c phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xc5664491 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xc578f1dd dev_printk_emit +EXPORT_SYMBOL vmlinux 0xc57c48a3 idr_get_next +EXPORT_SYMBOL vmlinux 0xc5800743 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5cf8a30 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dba288 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xc5e1c694 __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc5e4a5d1 cpumask_next +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5ee4f1a __close_fd_get_file +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc5faeb89 mr_table_alloc +EXPORT_SYMBOL vmlinux 0xc5fd267f vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xc5fe73a3 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc60c0ba6 component_match_add_typed +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc61bc28d tcp_prot +EXPORT_SYMBOL vmlinux 0xc61ca65e iowrite64be_hi_lo +EXPORT_SYMBOL vmlinux 0xc625e00e bioset_init_from_src +EXPORT_SYMBOL vmlinux 0xc630a7ed xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc63e7874 dst_alloc +EXPORT_SYMBOL vmlinux 0xc6553b9f pci_write_config_word +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc664d015 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc671be56 md_reload_sb +EXPORT_SYMBOL vmlinux 0xc6763b95 path_has_submounts +EXPORT_SYMBOL vmlinux 0xc67b2b11 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xc6910aa0 do_trace_rdpmc +EXPORT_SYMBOL vmlinux 0xc6b95965 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6d6e84b fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0xc6e0da5f neigh_update +EXPORT_SYMBOL vmlinux 0xc6ecb4a9 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc6f2df48 pci_release_region +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc6ff4dba set_trace_device +EXPORT_SYMBOL vmlinux 0xc708f1fe ec_write +EXPORT_SYMBOL vmlinux 0xc718d62c unregister_qdisc +EXPORT_SYMBOL vmlinux 0xc71c713e tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc741d8d3 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc774533a mmc_can_trim +EXPORT_SYMBOL vmlinux 0xc775bb16 rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0xc77cea42 blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7866405 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xc794a6e1 inet_put_port +EXPORT_SYMBOL vmlinux 0xc7972dd9 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7be6f9a dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0xc7bf16ae mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d8f69d reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0xc7e5b4bc can_nice +EXPORT_SYMBOL vmlinux 0xc7e62f9d dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xc7f416fd ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xc7f636a9 clear_inode +EXPORT_SYMBOL vmlinux 0xc809bde8 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xc80ab559 swake_up_one +EXPORT_SYMBOL vmlinux 0xc80e4e69 register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xc80ec697 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc818ab78 mntget +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc8249bd4 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xc838c598 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xc83a779d seq_putc +EXPORT_SYMBOL vmlinux 0xc840f6d2 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8526e04 __skb_pad +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc86618d9 nf_log_packet +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8757add __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89392a0 dma_direct_map_page +EXPORT_SYMBOL vmlinux 0xc893c17e mmc_retune_pause +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8cd3dd2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xc8e7622c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xc8f0eca1 blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0xc8f375c1 _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0xc8f5a6d1 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc9036e54 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0xc91defe2 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc91dfeeb dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xc9216a82 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0xc93e8461 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0xc955e607 __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xc959d152 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc97bd5b3 mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc993cf3d xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xc993f52e blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xc99a76e3 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9aa1258 blk_queue_split +EXPORT_SYMBOL vmlinux 0xc9ab011d __check_sticky +EXPORT_SYMBOL vmlinux 0xc9ba6ee6 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xc9cc8513 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9e0df60 iterate_dir +EXPORT_SYMBOL vmlinux 0xc9e3957a inode_insert5 +EXPORT_SYMBOL vmlinux 0xc9e6d86e udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xc9f34c1d acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0xc9ffc16d eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0xca066488 pci_release_resource +EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xca1d5d99 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca308e40 cad_pid +EXPORT_SYMBOL vmlinux 0xca36c6a1 wake_up_process +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca50c326 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xca5c48cc tcf_exts_change +EXPORT_SYMBOL vmlinux 0xca5ca8fe lock_page_memcg +EXPORT_SYMBOL vmlinux 0xca644d78 kernel_write +EXPORT_SYMBOL vmlinux 0xca682109 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xca8ef9f3 rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9beaa4 __xa_store +EXPORT_SYMBOL vmlinux 0xcaa4a4e2 textsearch_register +EXPORT_SYMBOL vmlinux 0xcaa97a77 input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0xcac672cd cdev_device_del +EXPORT_SYMBOL vmlinux 0xcad1aca8 acpi_exception +EXPORT_SYMBOL vmlinux 0xcae08550 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb18f6b2 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb3de18c generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xcb3e35a7 find_vma +EXPORT_SYMBOL vmlinux 0xcb3e8913 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xcb53ecc3 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xcb695c46 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xcb696d0e md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb85d44f inet_register_protosw +EXPORT_SYMBOL vmlinux 0xcb935869 file_fdatawait_range +EXPORT_SYMBOL vmlinux 0xcb9e1a22 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xcba3a751 backlight_device_register +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbaa36a4 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcbfe9598 mmc_erase +EXPORT_SYMBOL vmlinux 0xcc011645 pci_select_bars +EXPORT_SYMBOL vmlinux 0xcc18fd66 netlink_ack +EXPORT_SYMBOL vmlinux 0xcc1acaf0 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xcc1b882a idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xcc1c72ab pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2b37e2 config_group_find_item +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc4d4116 d_add_ci +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5c2df4 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc72ad58 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0xcc73613c tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0xcc7c913e mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xcc7cb055 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0xcc7d7c2d netdev_update_features +EXPORT_SYMBOL vmlinux 0xcc8261bd devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xcc999bbe filemap_range_has_page +EXPORT_SYMBOL vmlinux 0xcca5839d xen_vcpu_id +EXPORT_SYMBOL vmlinux 0xcca5efc8 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xccb6a480 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xccb9b2cf shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xccbd6124 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccd1d7f3 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccd7d2b0 netdev_features_change +EXPORT_SYMBOL vmlinux 0xcce9b42b netdev_printk +EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd01b8e6 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xcd2414ec generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd3a176d get_user_pages +EXPORT_SYMBOL vmlinux 0xcd4cd643 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xcd4ddb89 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xcd533df2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xcd5756ce buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xcd7e2344 __ps2_command +EXPORT_SYMBOL vmlinux 0xcd871170 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xcd8ce890 acpi_format_exception +EXPORT_SYMBOL vmlinux 0xcd915eec misc_register +EXPORT_SYMBOL vmlinux 0xcd935b31 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xcd976e32 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0xcda1f0b5 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xcdacc87b __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0xcdba1b12 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xcdf3d8cf i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2dd602 vfio_unregister_notifier +EXPORT_SYMBOL vmlinux 0xce3864eb ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0xce424566 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce50e5de ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6477b2 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xce76c257 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce807a25 up_write +EXPORT_SYMBOL vmlinux 0xce8b1878 __x86_indirect_thunk_r14 +EXPORT_SYMBOL vmlinux 0xce8e2fd9 vme_irq_free +EXPORT_SYMBOL vmlinux 0xce9f1318 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xcea381dd x86_match_cpu +EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc +EXPORT_SYMBOL vmlinux 0xcea83fe4 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xcea85d17 remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb41c7b __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xced0f4d4 gen_pool_create +EXPORT_SYMBOL vmlinux 0xced3091b tty_port_hangup +EXPORT_SYMBOL vmlinux 0xcee6cc2c devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0xcee900b2 generic_read_dir +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xcefa518b tty_vhangup +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xceff1c78 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf05b6cc dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0xcf10eb88 unlock_rename +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf24596a get_task_cred +EXPORT_SYMBOL vmlinux 0xcf2a6966 up +EXPORT_SYMBOL vmlinux 0xcf38ebf1 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xcf4fdd4d _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xcf5f88af request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xcf69411a dquot_get_state +EXPORT_SYMBOL vmlinux 0xcf83d83a __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xcf86f8b4 fiemap_prep +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcf9f5bbe dns_query +EXPORT_SYMBOL vmlinux 0xcfceb268 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xcfd3e904 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xcfde0419 kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0xcfee3c23 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd00961ca mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xd00f916f vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0xd01c1582 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xd02af3f1 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xd030889f input_get_poll_interval +EXPORT_SYMBOL vmlinux 0xd03f0ff7 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd043c431 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd055039f ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd0562fd9 configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0xd05ca162 xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0689446 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xd0796ffc fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0xd07ad412 seq_open +EXPORT_SYMBOL vmlinux 0xd07c58b9 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xd084a1a6 dma_dummy_ops +EXPORT_SYMBOL vmlinux 0xd0871784 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd08adb2b trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0xd090578e vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ace79d lookup_one_len +EXPORT_SYMBOL vmlinux 0xd0ad2f0f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xd0b74705 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xd0bd487b hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd0bfa5b3 __inet_hash +EXPORT_SYMBOL vmlinux 0xd0c18ae8 keyring_clear +EXPORT_SYMBOL vmlinux 0xd0d1f468 tcp_mmap +EXPORT_SYMBOL vmlinux 0xd0f284b8 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10d7795 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xd10f3292 phy_attach +EXPORT_SYMBOL vmlinux 0xd121ef34 get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd13aa937 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xd1412f9b kobject_init +EXPORT_SYMBOL vmlinux 0xd147395e ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xd14c3a71 compat_import_iovec +EXPORT_SYMBOL vmlinux 0xd151eb62 noop_fsync +EXPORT_SYMBOL vmlinux 0xd1554f35 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xd15b8459 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xd16c8fb0 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xd17d7b2e pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18befa1 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xd194ddf9 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xd19bd2e1 __tracepoint_write_msr +EXPORT_SYMBOL vmlinux 0xd19d3210 iov_iter_revert +EXPORT_SYMBOL vmlinux 0xd1a1b9e5 dst_destroy +EXPORT_SYMBOL vmlinux 0xd1a3f69b rproc_boot +EXPORT_SYMBOL vmlinux 0xd1a4053d config_item_get +EXPORT_SYMBOL vmlinux 0xd1bf92e4 phy_detach +EXPORT_SYMBOL vmlinux 0xd1c9d6c7 dev_set_group +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d970ef d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xd1ecd81f nd_btt_version +EXPORT_SYMBOL vmlinux 0xd1f57180 d_set_d_op +EXPORT_SYMBOL vmlinux 0xd1f60a89 arch_io_free_memtype_wc +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1fa763c tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0xd216553d md_finish_reshape +EXPORT_SYMBOL vmlinux 0xd21c5139 iowrite64_lo_hi +EXPORT_SYMBOL vmlinux 0xd2237016 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0xd24e5ed0 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf +EXPORT_SYMBOL vmlinux 0xd276d765 dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0xd27aa0e7 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2bdf79f fb_set_var +EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2ea49b8 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0xd2f86f66 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xd2fb63bc tcp_connect +EXPORT_SYMBOL vmlinux 0xd2fef766 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xd30e6e20 padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xd30f984f fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xd3498963 reuseport_select_sock +EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3712ed0 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xd371494d begin_new_exec +EXPORT_SYMBOL vmlinux 0xd382f6da pci_enable_msi +EXPORT_SYMBOL vmlinux 0xd3860d0b rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xd389a3ec tso_start +EXPORT_SYMBOL vmlinux 0xd38cd261 __default_kernel_pte_mask +EXPORT_SYMBOL vmlinux 0xd3974d49 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xd3b9ca60 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xd3e6aa54 pmem_sector_size +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3fa73bf get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd47947ff __x86_retpoline_r12 +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd493b132 inet_bind +EXPORT_SYMBOL vmlinux 0xd49bbfde input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0xd49d89db bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xd4a0c99b touch_buffer +EXPORT_SYMBOL vmlinux 0xd4a794e3 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd4b1107f unix_detach_fds +EXPORT_SYMBOL vmlinux 0xd4b9cf99 bdget +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4d1983c udplite_table +EXPORT_SYMBOL vmlinux 0xd4ea9cd6 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xd4f0ce9c __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd506ff31 set_disk_ro +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd529435d __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0xd5346bfc acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xd5476390 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xd55476d1 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xd57061bf skb_trim +EXPORT_SYMBOL vmlinux 0xd59d09b0 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xd59ff72c dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xd5af7b65 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5cd51fe alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0xd5d5c521 watchdog_register_governor +EXPORT_SYMBOL vmlinux 0xd5d7a3ae pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0xd5eb0196 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0xd5edfcb4 get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0xd5f63cf5 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0xd5fd90f1 prepare_to_wait +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd607effc pci_get_device +EXPORT_SYMBOL vmlinux 0xd619faab dquot_release +EXPORT_SYMBOL vmlinux 0xd62068e6 sock_create_kern +EXPORT_SYMBOL vmlinux 0xd628ad98 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xd62ecd49 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax +EXPORT_SYMBOL vmlinux 0xd643239a acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xd64eadbd jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd64f00d3 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0xd6646594 security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0xd6742002 preempt_schedule_thunk +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd691c6a9 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd697435f inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0xd69ecf66 mpage_writepages +EXPORT_SYMBOL vmlinux 0xd6a440a1 param_set_long +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6af0b00 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b8f788 md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xd6bf79d1 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xd6d0ddae phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd6ddd4fb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd70833de iget_failed +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd70ef945 phy_driver_register +EXPORT_SYMBOL vmlinux 0xd70f62b6 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xd71d881d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xd7225965 param_get_string +EXPORT_SYMBOL vmlinux 0xd726b9b3 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd7411f01 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0xd759f6c0 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xd76791dc unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd775c90e do_clone_file_range +EXPORT_SYMBOL vmlinux 0xd77a2f2a neigh_app_ns +EXPORT_SYMBOL vmlinux 0xd78e8a68 send_sig +EXPORT_SYMBOL vmlinux 0xd78ed1c2 devm_ioremap +EXPORT_SYMBOL vmlinux 0xd78fa262 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0xd790d237 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xd79172d6 refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0xd7a838ee amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0xd7bcd918 __mdiobus_write +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7f7fe1a request_firmware +EXPORT_SYMBOL vmlinux 0xd7f87edd phy_disconnect +EXPORT_SYMBOL vmlinux 0xd8032486 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xd8074090 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xd810dc1b tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xd8294580 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xd82b7b8c xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xd846c315 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0xd84f637a __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd864e45a blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xd86cfb6c ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aad6e6 devm_register_netdev +EXPORT_SYMBOL vmlinux 0xd8b1523f generic_setlease +EXPORT_SYMBOL vmlinux 0xd8c06418 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xd8c318e2 _raw_write_unlock +EXPORT_SYMBOL vmlinux 0xd8cd3400 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd8df08ac acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xd8fc40c2 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xd90802d9 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xd90b1e2e skb_copy +EXPORT_SYMBOL vmlinux 0xd90cb249 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0xd9149dbc udp_pre_connect +EXPORT_SYMBOL vmlinux 0xd91c25f3 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0xd92deb6b acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xd9491c14 xa_destroy +EXPORT_SYMBOL vmlinux 0xd959df59 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xd96edbc5 give_up_console +EXPORT_SYMBOL vmlinux 0xd971c6c4 xen_arch_register_cpu +EXPORT_SYMBOL vmlinux 0xd978b09f dm_put_table_device +EXPORT_SYMBOL vmlinux 0xd979a547 __x86_indirect_thunk_rdi +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9903858 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xd998b660 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd9a5ea54 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xd9b85ef6 lockref_get +EXPORT_SYMBOL vmlinux 0xd9bfddfc blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xd9d2a061 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0xd9d472cb prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9e8aee7 refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xd9eb2d23 framebuffer_release +EXPORT_SYMBOL vmlinux 0xd9f212c9 mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0xd9f887e9 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xd9f9a30e mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xda06fc23 tcf_idr_create +EXPORT_SYMBOL vmlinux 0xda1ddef1 acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0xda26b8ea __irq_regs +EXPORT_SYMBOL vmlinux 0xda2b0db0 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4053b7 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda74ca3b phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0xda7d83b0 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xda7e8021 put_tty_driver +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda9fa3be cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0xda9fc7ae kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xdabd1776 key_unlink +EXPORT_SYMBOL vmlinux 0xdac0502d netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdacbd3b8 genphy_resume +EXPORT_SYMBOL vmlinux 0xdad13544 ptrs_per_p4d +EXPORT_SYMBOL vmlinux 0xdb0d25d1 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xdb16b170 topology_phys_to_logical_pkg +EXPORT_SYMBOL vmlinux 0xdb1d6e35 devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0xdb283b1f scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xdb55c076 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0xdb65c767 eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6b73d1 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb81ced2 mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0xdb85a9a6 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xdb95e185 intel_scu_ipc_dev_command_with_size +EXPORT_SYMBOL vmlinux 0xdba4f8bb dquot_commit_info +EXPORT_SYMBOL vmlinux 0xdbb3ad57 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xdbce9358 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0xdbcf041a acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xdbd944c1 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbe1d114 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xdbee137e tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0xdbf17652 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xdc117ee2 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1c3dd4 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5736d5 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0xdc777f39 scmd_printk +EXPORT_SYMBOL vmlinux 0xdc77e2a8 init_net +EXPORT_SYMBOL vmlinux 0xdc7b4d87 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0xdc7ba471 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xdc7e6771 xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0xdc808e71 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xdc8fc490 _copy_from_iter +EXPORT_SYMBOL vmlinux 0xdca2cc1f devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0xdca736b5 dquot_initialize +EXPORT_SYMBOL vmlinux 0xdcaebe74 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xdccc2472 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xdce55c98 __x86_retpoline_rax +EXPORT_SYMBOL vmlinux 0xdcf9c912 clk_bulk_get +EXPORT_SYMBOL vmlinux 0xdd18a993 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd66bb1c scsi_remove_device +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd7475af kernel_getsockname +EXPORT_SYMBOL vmlinux 0xdd7978ec iov_iter_pipe +EXPORT_SYMBOL vmlinux 0xdd7c0f10 vfs_ioctl +EXPORT_SYMBOL vmlinux 0xdd8166a1 dma_fence_free +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd9075ce vfs_readlink +EXPORT_SYMBOL vmlinux 0xddad7952 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xddcbe1f3 acpi_ut_value_exit +EXPORT_SYMBOL vmlinux 0xddf6ad7a completion_done +EXPORT_SYMBOL vmlinux 0xde01b403 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xde05a763 vc_resize +EXPORT_SYMBOL vmlinux 0xde08a7c2 xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xde162267 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xde16bb88 d_invalidate +EXPORT_SYMBOL vmlinux 0xde293f9e add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xde34aed6 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde4eeab5 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xde684514 serio_close +EXPORT_SYMBOL vmlinux 0xde7a5bb0 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0xde80cd09 ioremap +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea5a145 vfs_create_mount +EXPORT_SYMBOL vmlinux 0xdeb24f53 skb_split +EXPORT_SYMBOL vmlinux 0xdec754a2 phy_read_mmd +EXPORT_SYMBOL vmlinux 0xdecbf93d pv_ops +EXPORT_SYMBOL vmlinux 0xded1ddc8 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xded4ac16 register_quota_format +EXPORT_SYMBOL vmlinux 0xded4f756 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xded6a415 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xdee365b0 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xdee5485c vlan_vid_del +EXPORT_SYMBOL vmlinux 0xdeecba0f wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf0e81b6 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xdf176b14 update_region +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2f84ed clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xdf327b5f security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xdf368705 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0xdf36914b xa_find_after +EXPORT_SYMBOL vmlinux 0xdf3cc456 get_vm_area +EXPORT_SYMBOL vmlinux 0xdf49fdc8 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xdf4c7e52 d_exact_alias +EXPORT_SYMBOL vmlinux 0xdf4ec17d ipmr_rule_default +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf566a59 __x86_indirect_thunk_r9 +EXPORT_SYMBOL vmlinux 0xdf56e552 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0xdf6b082f proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xdf81d8da inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf8d781f acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfa05e5d follow_pfn +EXPORT_SYMBOL vmlinux 0xdfb14029 down_read_killable +EXPORT_SYMBOL vmlinux 0xdfb33f9c sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xdfbafe9e writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xdfbc74fa vme_bus_type +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe0248727 __fs_parse +EXPORT_SYMBOL vmlinux 0xe02ba436 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xe02c9c92 __xa_erase +EXPORT_SYMBOL vmlinux 0xe033cb29 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe03a689d dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xe05516dc __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe0699ee5 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe07e5f44 acpi_reconfig_notifier_unregister +EXPORT_SYMBOL vmlinux 0xe082e88d acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe0859bde sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold +EXPORT_SYMBOL vmlinux 0xe0a6ae26 __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c61689 param_set_bool +EXPORT_SYMBOL vmlinux 0xe0e5697f __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xe0f53a99 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xe0fd4610 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe113c688 phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0xe116b7d9 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xe11ae96b pci_set_power_state +EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0xe121f6d6 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe12eefd3 d_alloc +EXPORT_SYMBOL vmlinux 0xe132a5a8 cdev_del +EXPORT_SYMBOL vmlinux 0xe138fb8c percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0xe13c31a5 __page_symlink +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13d5d07 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xe144c391 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe14b09fc neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xe1709c24 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xe172651c blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1bdefbc pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe1cbb144 sock_gettstamp +EXPORT_SYMBOL vmlinux 0xe1d85218 __bread_gfp +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1ed698d _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xe1fb3cbe tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0xe2150cc8 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xe2397d27 kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xe247cff4 padata_free_shell +EXPORT_SYMBOL vmlinux 0xe24a1419 rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0xe25ee9d3 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe2638fb2 input_setup_polling +EXPORT_SYMBOL vmlinux 0xe26a1ce2 __skb_recv_udp +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe2740b90 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xe28d02b5 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe28d2364 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xe28e100e simple_transaction_read +EXPORT_SYMBOL vmlinux 0xe2aa2cab d_genocide +EXPORT_SYMBOL vmlinux 0xe2abfb54 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xe2c42f05 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xe2c8624c tcp_seq_next +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dacf7e devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xe2e79621 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xe2fdc6d5 arp_tbl +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe30593a1 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xe320b350 __quota_error +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe3388b47 blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0xe348a6bf mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xe3616fb4 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xe36fad1a clear_wb_congested +EXPORT_SYMBOL vmlinux 0xe390d2c7 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xe395abd6 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0xe39a4dec rproc_add_carveout +EXPORT_SYMBOL vmlinux 0xe3a0007a mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0xe3c8b11e kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0xe3cf6ffb xfrm_input +EXPORT_SYMBOL vmlinux 0xe3d857ea __cpu_active_mask +EXPORT_SYMBOL vmlinux 0xe3dbe429 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3f52772 security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0xe3f8c9b3 sock_set_keepalive +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe3fffae9 __x86_indirect_thunk_rbp +EXPORT_SYMBOL vmlinux 0xe405d7ec dev_mc_add +EXPORT_SYMBOL vmlinux 0xe40976c0 pnp_range_reserved +EXPORT_SYMBOL vmlinux 0xe40c37ea down_write_trylock +EXPORT_SYMBOL vmlinux 0xe41476d9 ZSTD_getParams +EXPORT_SYMBOL vmlinux 0xe419bc99 iowrite32be +EXPORT_SYMBOL vmlinux 0xe42c55d7 fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xe42df6c0 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe4353a4a set_nlink +EXPORT_SYMBOL vmlinux 0xe4387de5 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xe4389a8f write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe43baac5 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe4546ad6 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe467fb12 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xe4691d07 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xe470e5f3 md_update_sb +EXPORT_SYMBOL vmlinux 0xe4785a94 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe484077e kmem_cache_create +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48af111 sock_wake_async +EXPORT_SYMBOL vmlinux 0xe4a17223 revalidate_disk +EXPORT_SYMBOL vmlinux 0xe4a544a2 dquot_drop +EXPORT_SYMBOL vmlinux 0xe4ad2026 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xe4b177fd alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xe4b2589c sk_capable +EXPORT_SYMBOL vmlinux 0xe4b7f862 security_path_mknod +EXPORT_SYMBOL vmlinux 0xe4c9ccfa iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xe4d80bf4 acpi_enable +EXPORT_SYMBOL vmlinux 0xe4dff043 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xe4e2bcce d_path +EXPORT_SYMBOL vmlinux 0xe4f33235 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0xe504338f padata_free +EXPORT_SYMBOL vmlinux 0xe5044102 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xe516b76f sock_efree +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5462a40 edac_mc_find +EXPORT_SYMBOL vmlinux 0xe572e6e6 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe59d55fa simple_fill_super +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5c60bd2 percpu_counter_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe6233c78 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe6348672 send_sig_mceerr +EXPORT_SYMBOL vmlinux 0xe640983c device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0xe657be41 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xe66de96e vfs_fsync +EXPORT_SYMBOL vmlinux 0xe66f1d73 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe67b7c80 vfs_fadvise +EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0xe6a77483 fs_param_is_string +EXPORT_SYMBOL vmlinux 0xe6aa5901 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe6d5b6ce ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xe6f32a2d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xe6fac617 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xe703ac3d input_unregister_handler +EXPORT_SYMBOL vmlinux 0xe70877d4 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0xe7257ab8 xa_store_range +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe7342a34 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xe748006f register_console +EXPORT_SYMBOL vmlinux 0xe7529d5e tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0xe75760a4 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xe7626b8f kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xe7714aeb vfs_create +EXPORT_SYMBOL vmlinux 0xe787698f acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xe7a02573 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xe7ac5d15 lease_modify +EXPORT_SYMBOL vmlinux 0xe7b00dfb __x86_indirect_thunk_r13 +EXPORT_SYMBOL vmlinux 0xe7b4d3d0 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0xe7c5c8c1 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0xe7c874a1 nonseekable_open +EXPORT_SYMBOL vmlinux 0xe7c957fe netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe7d3c4c1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e4d5b0 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0xe7f68a7b devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe7f6c4ce ip_options_compile +EXPORT_SYMBOL vmlinux 0xe7f8aab1 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe7ffdca3 sk_free +EXPORT_SYMBOL vmlinux 0xe8107613 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe81e9f96 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xe82c1115 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe82e92e9 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xe83d37c6 ethtool_notify +EXPORT_SYMBOL vmlinux 0xe8506ac4 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xe85f2123 acpi_tb_unload_table +EXPORT_SYMBOL vmlinux 0xe86f9dc3 dquot_disable +EXPORT_SYMBOL vmlinux 0xe88bf7df inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xe8b5dfc1 km_state_expired +EXPORT_SYMBOL vmlinux 0xe8dc7b38 phy_get_pause +EXPORT_SYMBOL vmlinux 0xe8dc8387 tty_check_change +EXPORT_SYMBOL vmlinux 0xe8fbf4fa __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91f03f2 iommu_get_dma_cookie +EXPORT_SYMBOL vmlinux 0xe926fecf param_get_uint +EXPORT_SYMBOL vmlinux 0xe93fbf91 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9a5e67f intel_graphics_stolen_res +EXPORT_SYMBOL vmlinux 0xe9adc65d netdev_reset_tc +EXPORT_SYMBOL vmlinux 0xe9af7397 __xa_set_mark +EXPORT_SYMBOL vmlinux 0xe9c0d0af is_bad_inode +EXPORT_SYMBOL vmlinux 0xe9d75af9 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9e9332b __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xe9f518e4 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea0198aa bio_list_copy_data +EXPORT_SYMBOL vmlinux 0xea098537 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xea231bdc down_write_killable +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea47400a inode_io_list_del +EXPORT_SYMBOL vmlinux 0xea5bdbd2 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xea6a8da0 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea75d47e scsi_remove_target +EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0xea797af6 tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea849cf0 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xea8dad14 inet_addr_type +EXPORT_SYMBOL vmlinux 0xea9adde3 generic_write_end +EXPORT_SYMBOL vmlinux 0xea9c709f vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0xeaab9c01 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xeab6f4c4 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xeae1b614 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb096133 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc +EXPORT_SYMBOL vmlinux 0xeb2391c9 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xeb31aee8 acpi_trace_point +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb539214 __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xeb547de2 mmc_request_done +EXPORT_SYMBOL vmlinux 0xeb5eb056 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xeb6448be d_find_any_alias +EXPORT_SYMBOL vmlinux 0xeb6e11ca vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0xeb75f13b __breadahead_gfp +EXPORT_SYMBOL vmlinux 0xeb7f6046 acpi_get_devices +EXPORT_SYMBOL vmlinux 0xeb801a20 is_nd_btt +EXPORT_SYMBOL vmlinux 0xeb849f06 mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0xeb93e789 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xeb94733e vfs_get_fsid +EXPORT_SYMBOL vmlinux 0xeb959584 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xebca83e5 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xebd032be dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xebd110be __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xec237e4f xps_needed +EXPORT_SYMBOL vmlinux 0xec2b8a42 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xec2e1c8f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xec3c7f50 iov_iter_discard +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec63ab0c twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xec8075e0 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xec9164d4 devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xec9e3e0c neigh_carrier_down +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecc836e6 simple_getattr +EXPORT_SYMBOL vmlinux 0xecdce57d ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece90696 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xecf73d42 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xecfb6a89 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed00c4fb acpi_os_printf +EXPORT_SYMBOL vmlinux 0xed051028 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xed14deda netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xed20d666 bio_put +EXPORT_SYMBOL vmlinux 0xed25ac4e cdev_device_add +EXPORT_SYMBOL vmlinux 0xed34ebbc acpi_any_gpe_status_set +EXPORT_SYMBOL vmlinux 0xed3e5bcc filemap_map_pages +EXPORT_SYMBOL vmlinux 0xed55f929 acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0xed811c74 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xed8acda0 dma_ops +EXPORT_SYMBOL vmlinux 0xed9df8e8 udp_seq_next +EXPORT_SYMBOL vmlinux 0xeda39b90 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xedb8d0e9 pci_read_config_word +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedca4638 ilookup5 +EXPORT_SYMBOL vmlinux 0xedda0a5b i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xede24a04 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xedf0d906 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xee2366ff call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xee277600 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xee2c25b9 sock_i_ino +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee519d7f udplite_prot +EXPORT_SYMBOL vmlinux 0xee54f1bf bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee65bf37 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xee7af982 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xee7d7deb gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee7f275e devm_ioport_map +EXPORT_SYMBOL vmlinux 0xee8079f5 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea72a6c __lock_page +EXPORT_SYMBOL vmlinux 0xeea777c0 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0xeed128c2 sock_bind_add +EXPORT_SYMBOL vmlinux 0xeed444a0 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xeee7b8cb rtnl_create_link +EXPORT_SYMBOL vmlinux 0xeef08814 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0xeef410f4 put_ipc_ns +EXPORT_SYMBOL vmlinux 0xeef84e9c vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xef24f3fe filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0xef25c717 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xef2993f4 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0xef32903e inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xef457fb8 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xef516373 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0xef6d5ef7 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xef8f1eac fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0xef920306 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefcea2e7 acpi_warning +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefd869e0 netdev_emerg +EXPORT_SYMBOL vmlinux 0xefdd3e9a mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xefdd7699 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xefdfc588 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0xefe4f679 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xefebbd40 ioread64be_lo_hi +EXPORT_SYMBOL vmlinux 0xefee932c acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xeff53206 put_disk_and_module +EXPORT_SYMBOL vmlinux 0xeff608e0 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0058da0 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf01ef140 drop_super_exclusive +EXPORT_SYMBOL vmlinux 0xf0227cef __sk_receive_skb +EXPORT_SYMBOL vmlinux 0xf02aa937 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xf03610f1 __kfree_skb +EXPORT_SYMBOL vmlinux 0xf04931c6 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xf05a1365 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xf05c32ad rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xf05c7af0 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xf063660a i2c_verify_client +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf0916bc1 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0a4509b nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xf0aaca3b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xf0b21808 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xf0b8953f dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xf0c899ff __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf1057183 mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf129ead4 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf13d8955 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xf144778a dev_remove_offload +EXPORT_SYMBOL vmlinux 0xf1448811 rproc_alloc +EXPORT_SYMBOL vmlinux 0xf14d5445 inode_nohighmem +EXPORT_SYMBOL vmlinux 0xf154659b phy_loopback +EXPORT_SYMBOL vmlinux 0xf15b64ab tcp_check_req +EXPORT_SYMBOL vmlinux 0xf16d54fb discard_new_inode +EXPORT_SYMBOL vmlinux 0xf17830c9 prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0xf1848ee2 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a68107 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xf1c49051 truncate_setsize +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea9064 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xf1edd5f0 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xf1fd920c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xf21017d9 mutex_trylock +EXPORT_SYMBOL vmlinux 0xf21b74f1 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf2282233 register_cdrom +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2805f8f processors +EXPORT_SYMBOL vmlinux 0xf28277fe seq_release +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf29403e5 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xf29a9617 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xf2a17037 page_symlink +EXPORT_SYMBOL vmlinux 0xf2b81b64 arch_io_reserve_memtype_wc +EXPORT_SYMBOL vmlinux 0xf2bc694b nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e0d59a dev_uc_sync +EXPORT_SYMBOL vmlinux 0xf2e2a58e datagram_poll +EXPORT_SYMBOL vmlinux 0xf2e5a822 backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f4e011 file_ns_capable +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf2f87a3b devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0xf303b7ed posix_test_lock +EXPORT_SYMBOL vmlinux 0xf30965ac iosf_mbi_register_pmic_bus_access_notifier +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf3126c94 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0xf318af00 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3496323 follow_up +EXPORT_SYMBOL vmlinux 0xf3538b0e dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3598f6d tty_register_device +EXPORT_SYMBOL vmlinux 0xf3599f60 napi_disable +EXPORT_SYMBOL vmlinux 0xf36f874b pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0xf37b48d1 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3904e5c skb_vlan_push +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396f02e tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3b6a69b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xf3d22021 get_cached_acl +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3e7e526 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf3fb86b0 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xf40e7a73 __xa_alloc +EXPORT_SYMBOL vmlinux 0xf414dea7 ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0xf41ea1a7 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf41f6e47 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf43d2caa acpi_remove_interface +EXPORT_SYMBOL vmlinux 0xf44008fa dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xf440567c inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xf4411331 devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf44e5cb4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xf450d2d2 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xf4525f0f tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0xf458c53e bdput +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf483fe39 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xf49d26c3 poll_initwait +EXPORT_SYMBOL vmlinux 0xf4a2e671 elv_rb_add +EXPORT_SYMBOL vmlinux 0xf4a565fd wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b2b86e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xf4b6ff66 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6a598 kobject_put +EXPORT_SYMBOL vmlinux 0xf4db17c4 blk_register_region +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4dbdfa2 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf4de5499 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xf4e6b9be reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f90d0a md_cluster_ops +EXPORT_SYMBOL vmlinux 0xf506b224 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xf5133062 wireless_send_event +EXPORT_SYMBOL vmlinux 0xf528383e generic_fadvise +EXPORT_SYMBOL vmlinux 0xf52fbb7f mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf56f1225 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xf56f54c9 ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0xf58ab50e phy_sfp_probe +EXPORT_SYMBOL vmlinux 0xf591753d nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0xf5a5c84c msrs_alloc +EXPORT_SYMBOL vmlinux 0xf5aa7b1c phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xf5ab26c2 vfs_mknod +EXPORT_SYMBOL vmlinux 0xf5c3a761 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xf5e5a87b hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf601fe72 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xf60ab926 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xf6184032 dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0xf632e829 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xf6359c9a submit_bh +EXPORT_SYMBOL vmlinux 0xf635f3a1 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xf63a7305 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf650fe76 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf65a72bb get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf66617dc mmc_release_host +EXPORT_SYMBOL vmlinux 0xf6682727 PageMovable +EXPORT_SYMBOL vmlinux 0xf6712edd xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0xf6715489 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf679df36 scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0xf681acfc hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6c5a2ef tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xf6e68d46 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f6bac8 blkdev_get +EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70f9291 phy_find_first +EXPORT_SYMBOL vmlinux 0xf710297c jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf747e1b9 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0xf75101e0 blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7640cf9 dev_get_flags +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf78db70f devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xf792e0d7 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xf79ca3bb acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0xf7c42575 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xf7da6e6f acpi_unload_table +EXPORT_SYMBOL vmlinux 0xf7dd6a6e udp_prot +EXPORT_SYMBOL vmlinux 0xf7ef9a79 iosf_mbi_punit_release +EXPORT_SYMBOL vmlinux 0xf7efad01 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xf7f1f42e seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xf80be44e rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8386d97 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf8595510 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xf86f3019 put_disk +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf8926fd8 param_array_ops +EXPORT_SYMBOL vmlinux 0xf8951f96 qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xf897245f xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xf89c8c05 migrate_vma_setup +EXPORT_SYMBOL vmlinux 0xf89cf33e seq_lseek +EXPORT_SYMBOL vmlinux 0xf89d2283 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xf8a97b17 xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0xf8ade192 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xf8b46762 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xf8b9531b dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf8c414d8 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xf8c4a020 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf90ce20f nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xf90ef470 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf916ee14 param_get_bool +EXPORT_SYMBOL vmlinux 0xf919dfce vm_map_ram +EXPORT_SYMBOL vmlinux 0xf9242b58 agp_free_memory +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf94f9784 bio_init +EXPORT_SYMBOL vmlinux 0xf9628419 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xf96ade13 rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c76ed6 tty_write_room +EXPORT_SYMBOL vmlinux 0xf9d3bf47 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xfa08f4b8 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xfa297415 acpi_map_pxm_to_node +EXPORT_SYMBOL vmlinux 0xfa316432 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xfa38d8ba netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xfa462b68 get_tree_nodev +EXPORT_SYMBOL vmlinux 0xfa4836ab timestamp_truncate +EXPORT_SYMBOL vmlinux 0xfa4d28e4 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa66d487 dma_resv_init +EXPORT_SYMBOL vmlinux 0xfa755ead scsi_ioctl +EXPORT_SYMBOL vmlinux 0xfa7bdfc7 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa9e43c2 sock_create_lite +EXPORT_SYMBOL vmlinux 0xfaa1fdf7 __tracepoint_rdpmc +EXPORT_SYMBOL vmlinux 0xfaabc0e9 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xfab20ad3 dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0xfac3e00a __x86_retpoline_r9 +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaf1b607 from_kuid +EXPORT_SYMBOL vmlinux 0xfb1208cb mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xfb2bea76 super_setup_bdi +EXPORT_SYMBOL vmlinux 0xfb3339ff rtnl_unicast +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb471f2a __sock_create +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb4c5ef3 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb746cc9 down_killable +EXPORT_SYMBOL vmlinux 0xfb7bca27 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xfb7ec433 show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0xfb816d9d sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xfb81b583 file_path +EXPORT_SYMBOL vmlinux 0xfb9044a0 set_pages_uc +EXPORT_SYMBOL vmlinux 0xfb9bd43d pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaa0533 unregister_key_type +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbbc20ea simple_empty +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcd4066 sk_wait_data +EXPORT_SYMBOL vmlinux 0xfbde7bc8 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xfbe7071c udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xfbe8ee28 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0xfbf71d16 vfs_symlink +EXPORT_SYMBOL vmlinux 0xfbfc34d7 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xfc1239cc vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xfc14d999 no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0xfc274327 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xfc299d2d pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xfc336d2e __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc4152fc ec_read +EXPORT_SYMBOL vmlinux 0xfc552452 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xfc5567e9 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0xfc5c46e2 acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0xfc7e2596 down_trylock +EXPORT_SYMBOL vmlinux 0xfc9282f7 skb_queue_head +EXPORT_SYMBOL vmlinux 0xfca0a432 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbecc79 blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0xfcc2cca2 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xfcc70794 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcd77fe1 __break_lease +EXPORT_SYMBOL vmlinux 0xfcd987fc agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf69b40 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0xfd24bbe9 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xfd24eb83 vme_init_bridge +EXPORT_SYMBOL vmlinux 0xfd42527c __x86_retpoline_r15 +EXPORT_SYMBOL vmlinux 0xfd44d68d scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xfd4dcbc0 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xfd642a7e nf_reinject +EXPORT_SYMBOL vmlinux 0xfd93ee35 ioremap_wc +EXPORT_SYMBOL vmlinux 0xfda280a9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb36f52 dev_lstats_read +EXPORT_SYMBOL vmlinux 0xfdb6576f acpi_set_debugger_thread_id +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc11e2e tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0xfdc7028a vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0xfdcaa7d5 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfdcb4ed3 acpi_os_get_line +EXPORT_SYMBOL vmlinux 0xfdcc4d56 km_new_mapping +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdce415f neigh_seq_next +EXPORT_SYMBOL vmlinux 0xfdcf8181 dm_io +EXPORT_SYMBOL vmlinux 0xfdd4216d pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xfdd78924 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xfddae966 scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0xfdf70093 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update +EXPORT_SYMBOL vmlinux 0xfe3ce5b9 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe581ec6 sync_filesystem +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6ef139 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xfe79e740 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xfe7d4d85 input_event +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe99f4cf d_alloc_name +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeb32a5a rt6_lookup +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfed38c69 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xfedaac52 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff0a42f1 write_one_page +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2af6ab pcie_print_link_status +EXPORT_SYMBOL vmlinux 0xff639f6b jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xff63e930 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff86032e secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0xff87cd18 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xff8c62d5 may_umount +EXPORT_SYMBOL vmlinux 0xff9c4b56 ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0xffa36c07 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xffb7c514 ida_free +EXPORT_SYMBOL vmlinux 0xffc30c3a acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0xffcd7f49 iosf_mbi_punit_acquire +EXPORT_SYMBOL vmlinux 0xffd03e71 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xffd46661 legacy_pic +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0xfff59663 phy_remove_link_mode +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x19711697 camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x2c8b5dbf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x2e46ede4 xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x339c33c5 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x6f3a8de5 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8b44ee75 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9056f10d camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0xc00f725a camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0xfea2b457 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x0b901549 camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x315d28f7 camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x69f4ff25 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x8d725052 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x8d9b761c camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xee61eb71 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xfe729ed6 __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xff09bd65 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x336dcee0 glue_ecb_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x47c4e08f glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x9adcd8f3 glue_xts_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xba5113a3 glue_ctr_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd7f9a410 glue_cbc_decrypt_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xeec1f25f glue_cbc_encrypt_req_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x194b2841 serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x38800636 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x4140192a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x5cea0c9c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x99341b41 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa0100109 serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xb75988d7 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xbdfa6cc0 serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xc75fe764 xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xcee44453 serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x1f491d36 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x7c7bf6e0 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x2c7b3458 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x31ddef7a twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x92a51c43 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xb4e98a46 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xe4ae7508 __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x007b5789 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x039f29e7 kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0522797c kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05f69861 vcpu_put +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x081b489c gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0852516e kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x087530c9 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x088b4f74 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08f5ed82 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0954a50a kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x096ef263 kvm_map_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a803d16 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d8f4740 kvm_mce_cap_supported +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ea69ea8 kvm_apic_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0fed0c14 kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1038236d kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11470766 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x117ae60f kvm_can_use_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1235000a kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12765c9d kvm_skip_emulated_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1288bc55 __kvm_request_immediate_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1293b084 kvm_slot_page_track_add_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x130fd155 supported_xss +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x159b8d5e host_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15f5cf6a __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16c0fc80 kvm_handle_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1738f34f kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18c1948a kvm_emulate_instruction_from_buffer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18fc168f kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19392885 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1b01f612 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1b1baf7e kvm_inject_emulated_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c8035cf kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cf65ffc kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d013832 kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d2e010d kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1db1c372 enable_vmware_backdoor +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1dd3a846 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1de646da __tracepoint_kvm_avic_ga_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1df3cee8 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1ec62a4c kvm_lapic_reg_read +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f3d429b kvm_emulate_rdmsr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1fd9ae82 kvm_apic_match_dest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21292a1a kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21aadac5 kvm_load_host_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23f2e273 kvm_apicv_activated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27a2e073 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28411ed7 kvm_max_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2aaa75bc kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c5274e0 reset_shadow_zero_bits_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d407386 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d82cc24 kvm_spec_ctrl_test_value +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e0e2a3a kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e6670cd kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3047e200 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x30d7da4a kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31ce0491 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32f13428 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3435d9ff cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x348ba0c6 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x388e8bc5 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a2d8cee kvm_lapic_expired_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a8c17fa kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cc82f45 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ed5e388 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f7a370b kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3fc0fcd9 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4089da22 kvm_request_apicv_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40cdbd46 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x428d0870 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x456121d2 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b0e5de6 kvm_apic_clear_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b9c7449 kvm_mmu_new_pgd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d25e54e kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d6af40b kvm_init_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e08451a kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4fd540b6 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51acb504 kvm_mmu_invpcid_gva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x56dea5e6 kvm_lapic_switch_to_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x573cc6ba kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x574f5239 kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5929f696 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x598e8a17 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5af78d3e kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b2495ca kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d996b31 kvm_set_cpu_caps +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ea9ca3b kvm_lapic_find_highest_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ec7540b kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f0a182d kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f390f32 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61876a19 kvm_apicv_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6243ac82 __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62b2d03c kvm_apic_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63270977 kvm_default_tsc_scaling_ratio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x644ce1e7 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65159aff kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x65ece2a2 __tracepoint_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66c4423a kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6794cb3e kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68f54e0f __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b7767fe kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70460d54 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7183186b pdptrs_changed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72629bc2 kvm_fast_pio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7274bd2e kvm_hv_get_assist_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73ec8859 kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75c62f4a handle_ud +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7672e9db kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7763a671 __tracepoint_kvm_nested_vmenter_failed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x77776e34 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7788d3ab kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x796d466b kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x796fdbfb kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7a5302c8 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b7d497d kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7dce2122 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80feed6f kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8235cca0 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x849344cc __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x867690a7 __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86931b5d __tracepoint_kvm_avic_incomplete_ipi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x888d979f __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89f038ab kvm_cpu_has_injectable_intr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a893ce7 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8abe557c kvm_vcpu_map +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ad3d0b0 kvm_lapic_reg_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8afe4b6f kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8fe3befd reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x90962403 kvm_vcpu_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91d4d992 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94615018 kvm_deliver_exception_payload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x94abbd88 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x983118e1 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99c70148 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b5b35d5 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bf21e5e kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9d0101a5 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e07ef88 kvm_unmap_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e4bb4e4 kvm_emulate_wrmsr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ed68fba kvm_update_dr7 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa04b44b6 kvm_vcpu_exit_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa095a6df kvm_vcpu_unmap +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0cb0079 kvm_page_track_unregister_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa17b4a50 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa6152d16 kvm_configure_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa67166ee kvm_mmu_invalidate_gva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa716534e kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa90e44f5 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa975020d kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab31e82f gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xadd880bd kvm_arch_no_poll +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae9aed1e kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb09069b1 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb097e540 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb209ccea kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb305f44d kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb3d98bf1 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb5960a4c gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb770d8cf kvm_load_guest_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb962bbbf kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbafc8fd8 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb6f0952 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbbde13ef current_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc07b7a7 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc16d221 kvm_lapic_switch_to_sw_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2431ef kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd4e32c9 kvm_queue_exception_p +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe694474 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbfc61ecf __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc091656c kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc16ec922 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1bffa28 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1d769b7 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4f8a0c9 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5ece98d kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6249c72 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc64e9840 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6a43f2f vcpu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7c74c47 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc83ac009 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc888a1c2 kvm_cpu_caps +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc950c248 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca2d88d0 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca3ab5ad __tracepoint_kvm_ple_window_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcab0c0a4 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcae76009 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb0a5d60 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcd069067 kvm_vcpu_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf79f1d3 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcfa077ce kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcfcb6ab0 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcfe70304 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd06466ad kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd174075d kvm_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd294143f kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7fc11f5 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8ae2ac3 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9485a2d reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd9e7aeb kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf894f9b kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe13c1dc3 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1ef94ef kvm_mmu_free_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe423b7d7 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4b06309 kvm_get_apic_mode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5bf162e kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe63bc2de kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe80d518c kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe83246ca kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8709efa kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8cdc905 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9674a16 supported_xcr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb14f48f kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec06defc __tracepoint_kvm_avic_unaccelerated_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xecc4d49e kvm_apic_update_ppr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee4b54d5 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeecf997d __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef4fc176 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef9eea39 kvm_slot_page_track_remove_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf01260c8 handle_fastpath_set_msr_irqoff +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1ae0a47 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2452ef4 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf47e3dba kvm_no_apic_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4f1ec42 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5ec487d kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5f65110 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf63403a4 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf667ac36 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf6a2b8db __tracepoint_kvm_apicv_update_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf7404f48 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf7f57f6a kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf86bb4d2 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf90d25bc kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa111626 kvm_page_track_register_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa541ffc __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfabe0dac kvm_lapic_hv_timer_in_use +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfac8b1b0 kvm_get_running_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfb2cb51f kvm_wait_lapic_expire +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc578d86 kvm_hv_assist_page_enabled +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd48d9b0 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL crypto/af_alg 0x06b69ab4 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x0e5cea58 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x1a887866 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x34c64ca1 af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0x3bc32cab af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x60ef6c98 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x72921c11 af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x758af82b af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x76988a80 af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0x8892ac0a af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xb9560519 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xbd3fe781 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xce2b8237 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0xd14955a1 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe321260b af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0xf041fa65 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xf3bd49f6 af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xf8cc95d4 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x1dc7786e asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x230af580 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x63cfa506 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd2ea58ca async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x52c5ac30 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xaa2a46a2 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6dbd03f2 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7115bd84 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd60bca4a async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xec017e9e __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x09124c67 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc0caf929 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xd76b181a blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xd6c3ac31 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xa33528ed cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0c646651 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x2c6992a1 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x4252577b cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x4362967f cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4df8a0b0 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x510992a1 cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x5d19b8f9 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x758464aa cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9fd2c0d cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xdccbea50 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xf30706bc cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xf7bb7f89 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf8bad744 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x03aefe93 crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x06904a13 crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x0bd3ebb4 crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x1a8b5053 crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2a15f89d crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x485564bf crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x5b7d0d4e crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x7cfc275b crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xbbea3dba crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc37450ad crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xd1737035 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf36cbcbe crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xffc00ac7 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x29c87e5f simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x3b5ef767 simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xc95e1db8 simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xd1afda81 simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xc11b51a7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x74d04826 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xb098a21b crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xb81bd553 crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x78e17fdc twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x4639bcda acpi_nfit_shutdown +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x499bbf57 nfit_get_smbios_id +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x541d7fd8 acpi_nfit_desc_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xaf2c9672 __acpi_nfit_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xc5a52377 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xdadc210f __acpi_nvdimm_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xf7506f33 acpi_nfit_ctl +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x4f6c2360 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x96eb492d acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x109c2d88 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1703e36a ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x22506290 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x29622d46 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43781aeb ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x507f27cb ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x56906ce1 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c32d274 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5fd641aa ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6456c227 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7146b113 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7984ed66 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x79ea47fb ahci_handle_port_intr +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8f9eaa6e ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x98a46b12 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9dbd4fcb ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa0889492 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa25ef32a ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb40a9f5f ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xba2afc5d ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc5704c1 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe899f593 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeff79f95 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfe69b5ab ahci_do_hardreset +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2125e447 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x23b86d37 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x48d52412 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4b11c94b ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x59226a5a ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x682b6ff2 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x70915ce3 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x84300caa ahci_platform_shutdown +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x98311531 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa719988f ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcd4b91b3 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe0deb3ff ahci_platform_disable_phys +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf129fdb7 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf3af2db0 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf66fbfa6 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfa319c2d ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x76dd6f17 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x02ff9464 cfag12864b_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x0ecb2e5d cfag12864b_disable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x305dc3c6 cfag12864b_isenabled +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x3389f926 cfag12864b_enable +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0x9522a342 cfag12864b_getrate +EXPORT_SYMBOL_GPL drivers/auxdisplay/cfag12864b 0xc48e9d95 cfag12864b_buffer +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0xf45dd09c __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x1dab8dfc __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0xf0217e99 __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x3fc6f376 __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x8320682d __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x1f70ed8f __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x6cd2764f __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x0121bf00 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x040e0179 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x91cce891 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbe258256 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x508ed908 __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x7e982261 __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x02d58c6f __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x099abc61 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0f89ff61 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x18972b43 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f2252d2 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x353d1f92 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3997d4d7 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3c6ed21b bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3fc7eab3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x44dd7225 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x48acc0ca bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5562ba14 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x67493901 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d291785 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x978906e1 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2f99fc6 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8e1801d bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb5862f59 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb725d7f7 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc59d7f97 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcf1c4904 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd421bfac bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeaa66b5e bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf72bf843 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x03ba8c16 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1a559782 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x26f5fdd6 btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x44d847ee btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5d028201 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x75705a78 btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7bed4eab btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xae5e58e4 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x04803e2f btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x09e136eb btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1296b9b2 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x450c5f33 btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x55905293 btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x56be1327 btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x58bc3fab btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x625a5350 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x652eb61a btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6a37bebd btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8e5021e6 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa03b5683 btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xad1dae44 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb60856cd btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xbffef94c btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe2579a48 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe52a7b66 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xef4b293a btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0220df49 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x045dca40 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x09addd61 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x73808d17 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x889c35f6 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8ff3c2f3 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9659452e btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbbb28a7d btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc5f14b07 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xce5b8f2a btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdfb993ce btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x05960aa9 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x0b3220fc qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x40fcb2e2 qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x832f4f84 qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xa8799c81 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x34ae878f btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x3c01fc1e btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x92154aa9 btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xbe9f7238 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xe178ff0b btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x18a800fd h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x2c0bdb4f hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xb17d3e31 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xd9e9e72c hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x040abe32 mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x04e8e3c7 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x11f7ef4d mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x28de11f0 mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x29e6a7c3 mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x2d804dc1 mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3d7f5c50 mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3f7d425e mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x435cb111 mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x4bbe81c2 mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x519ab08d mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6ab36c52 mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6c4491a0 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9cd06099 mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa2a48405 mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa7eef128 mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbf356402 mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc2321059 mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc654a8b8 mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xca2c7309 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf564da89 __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf9519a6f mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x053fab01 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x0a8c434f counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x0fb3e0d3 counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x27d3e9ab counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x8fcd606f counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x965ef11b devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x9a4cf7e5 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x9e811ab5 counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xc535995c counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xcb25a8b0 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xcc05cbf9 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee2292a9 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0xfe3e5488 devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL drivers/cpufreq/speedstep-lib 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x2e6a6147 psp_copy_user_blob +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x303c13ad sev_issue_cmd_external_user +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3a1a3979 ccp_version +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3e059f28 sev_guest_activate +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x4073e924 sev_guest_deactivate +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x501325b6 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x843d6541 sev_guest_decommission +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x8fac14a2 sev_guest_df_flush +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x91722dce sev_platform_status +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xd02e197f sev_platform_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0aee7d2a adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x21b34fb6 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2417c047 adf_exit_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2b8b4f6b adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2d403346 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x32b7be9c adf_dev_put +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3897b402 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3aa31bae adf_dev_get +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4147c10a adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x50d60468 qat_crypto_dev_config +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x516a6c07 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x5ee7fdfa adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6005a57b adf_isr_resource_free +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x66af04cc adf_init_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6e27c0c5 adf_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x6e9fba91 adf_vf2pf_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x75049d9c adf_disable_sriov +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7907417d adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7b43ba32 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x86d2b848 adf_reset_sbr +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x870aabdd adf_exit_arb +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8bcc5dda adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x92bb2f74 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa00e2fda adf_devmgr_in_reset +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbe22506e adf_vf_isr_resource_free +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc030db00 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc6943a07 adf_devmgr_update_class_index +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc7bc924a adf_send_admin_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc8925dd5 adf_init_admin_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcc3b167a adf_clean_vf_map +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcd707ae7 adf_isr_resource_alloc +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xcdf02dc4 adf_vf_isr_resource_alloc +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd1111cdb adf_enable_vf2pf_comms +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd6c7f86d adf_dev_in_use +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe2b20554 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe54727a6 adf_iov_putmsg +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe5d6c0fd adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xeefceb1c adf_reset_flr +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf245d525 adf_dev_started +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf510246d adf_vf2pf_shutdown +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0xbbf67876 dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dax/pmem/dax_pmem_core 0x402480ea __dax_pmem_probe +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x0a80dcad free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x1d83eb6b dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x46c34a30 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x4e72796a unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x560c074e dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x61f01a1f dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x9990c30f register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xaa634427 dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x5386c873 dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x92c13eaa dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x13495e87 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x332384b3 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3fe37bae idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xafc389b6 do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbb92df89 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd70ca892 do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdcaca794 idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x70018391 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x7fe70a2b hsu_dma_get_status +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8218284d hsu_dma_do_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xf73e9950 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x4037700e hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x7a62ccdb hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x42e48823 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x57de5d36 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x5c04a3ee vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc1d54ff8 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc9bbeb40 vchan_tx_desc_free +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xada6a396 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0be1a4d8 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x8592d892 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x11bcee8e alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x3ca71101 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0247de9b dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x100d5b9b dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x1c041e0a dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x331c2756 dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x39353590 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x52178d3f dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x58af9a9e dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x640dd929 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x6eb32f8d dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x785a0f93 dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x7e8d4a40 dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x81ccd61a dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x9fa135ea dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc427382d dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd38626a9 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd68a18eb __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf45b730e dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf72c3aea dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf9bf28e5 dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x12c93e8c of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x3ad092ac fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x457d5726 fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4f7fb264 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x697d4abb fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x78bb33a7 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x86bedbcb devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb42247e4 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc3a20163 of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xe21c7606 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xe3c9db82 fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xee38d7b4 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x03352ef4 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x16787c88 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x26c4057e fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x4bba206a fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x558ac1ce fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6fad501a fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x728b658e fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8f3a5feb fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa10b4551 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xae5fa7f7 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc18af420 fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd1ef5ca2 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd6fee071 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x28983e03 fpga_region_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x6a26a48b fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x83dd83ba fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xc23fd483 devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xcc69e948 fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xdd74dbf4 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xf2119e24 fpga_region_create +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x220a882e gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x440b5519 gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x4a284d96 gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x7be8c3c6 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x7ee1373f gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x42f2623e gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xaa109f1c gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xbb163bd8 gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xe863f02e gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xf2ea6406 gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x53c2eba5 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x132f3d2f __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x81b0b8bb __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x09491261 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x14ff3822 analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x1f14ab72 analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x3ee0dd60 anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x9b76b071 analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x9cb6db25 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xd2745cac analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xd4c24e92 analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xddf92907 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0812192a drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0c8052c5 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0c9cbcef drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x10252c47 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x108bbcb4 drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x168e137d drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1de317e5 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x248818c1 drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x28c65ea0 drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x34dac653 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x49e084c6 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x50b8e1ff drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6595c551 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6ac07598 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7546e74b drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x786f9ee5 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7a18668b drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x80624f1e drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x87b020fc drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8a68079d drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb55495a5 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb9a1a84e drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xba9ff3b3 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd1556167 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd90f9d48 drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe7ff4ab4 drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8e2e843 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xef2546c6 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf1269d12 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf2769954 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf56faa52 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfa6fac12 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x11ba2bba drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x24dbe4eb drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x25979e65 drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x26aba7c0 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x3aa8bff8 drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x632b6d35 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x67ed050c drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xba7f6cea drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc0610304 drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc3075acf drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc9e2e99d drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xd2679bff drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x5c38bdd2 intel_gvt_register_hypervisor +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x6fbc5503 intel_gvt_unregister_hypervisor +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x009bdd5b ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x999486d1 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xcd4da86b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x00639cd8 __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0442541b __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x11d50b69 gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x12ec7c15 gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1b234ebc gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1f04601b gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2a198045 gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2daa88b3 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2e030149 gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x34e0ba33 gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3777fce7 gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3d52d107 __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ebc5ef8 gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ef75a08 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x47ada2dc gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4884741a gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5c09790f greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x76140323 gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x775814a4 gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8057d903 gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x871c75e6 gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8e7c33ab gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x93a1995d gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9480a818 greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9cf0aec5 gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa04d02ff gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa47dbc2d gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa73b07cb gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa7a3f7fb gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xae723e88 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb819f3f1 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb92ee71c gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb933909b gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc397c10a __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcb8c92cd __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcbc44491 gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcfcc9b58 greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd09cc27f gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd404beff gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd460fa92 gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xde1a6d49 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe51caf2f gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf6c617ac greybus_message_sent +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0035bc1a hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x012d1917 hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x078df73f hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09b67242 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ca349d4 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x14a1a04d hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x171ad184 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2ebd3f08 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x307685b4 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x397702ac hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3a5c915f hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3dc243b2 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4126d1ee hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47b431db hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d3663cf hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4dd0cc49 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e62f73e hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5414bae2 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c7e7157 hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5e8e409b hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x66d30120 hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6dde481c hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6ecbe7e9 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6efb9324 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x75a4454b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x846c1ed2 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9136dd7f __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x91637715 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x91ac5b0b hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9288c84e hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9f74f629 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac7abb9a hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbea2d954 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc44795a5 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc286dbf hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0480823 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6301ec1 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb63cd79 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec366cf3 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xece81b6d hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf84bc259 hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf9602361 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc0bfa8f hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc112876 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xc583be90 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5b3e0bc0 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x65783479 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x80375607 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x83609da8 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xac9c601c roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdfb2952e roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0876cf58 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2add0092 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2c637219 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x36cca7a7 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6c00631d sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7efcd52d sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbaa0310b sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc5762afd sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf43d20f4 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0xae3bc1ad i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x1f6b9ff4 uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4c9f45ad usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xfd799cd2 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0a4f79f8 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0ff65a4d hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1bd75852 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1d18452e hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x25965222 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2b9bb90d hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2df2232b hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3a0b5d24 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3cec341f hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x42d15b3e hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4acb696e hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4e5eaddc hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x50651ebc hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x59c985b8 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbeb15438 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe3c59510 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfd16b1b0 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x18a7c6f7 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x19a44247 vmbus_connect_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1d589a05 vmbus_set_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2ca32100 hv_pkt_iter_first +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x31e2e77f vmbus_free_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x32819569 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x334da57f vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4b2210b8 vmbus_send_tl_connect_request +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x502db580 vmbus_connection +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x512aed0d vmbus_alloc_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5178e80e vmbus_hvsock_device_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x53589d9e vmbus_send_modifychannel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x573a5073 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x58050a5b vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5deea627 __hv_pkt_iter_next +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6c8c6c5d vmbus_set_chn_rescind_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x78042249 hv_pkt_iter_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8ac2cd59 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8fc8ce2b vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x943255ff hv_ringbuffer_get_debuginfo +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x98b9915c vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa02f6484 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xb3237076 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xbbc622e4 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd897043f vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xdfe77c7f vmbus_setevent +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe33c9a64 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf41503cd vmbus_disconnect_ring +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf50fab51 vmbus_free_ring +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x046d6b2f adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x561bcc3c adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x784155fd adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x2edba817 ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x00018eeb pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0a70d2bd pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x255a3153 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x32954bf7 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x463d9ee3 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4c56d54c pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4f998895 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5fc3df17 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x60bb8ef8 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x67f6e27f pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x712a37da pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x747d77a5 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7dbe88ae pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8490022c pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x884d9b21 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9c68387d pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9e5b682e pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcf64c809 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcf77404a pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x0ec9d234 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x15734c9a intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x38822171 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x51052a23 intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x5e3ca433 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x93b547b7 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x962b994d intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x9a84c05d intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdb948f9f intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x30a3f187 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x8d785ce7 intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x97fe3bb6 intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x1ddf7288 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x2d335a15 stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x4573e9f7 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x866439b1 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x907ed423 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x9b95db88 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc97d6127 stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd07244ee stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xe4c6b4d7 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x1367163f amd_mp2_bus_enable_set +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x4ce2fa86 amd_mp2_unregister_cb +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x53c5271f amd_mp2_rw_timeout +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x7f6f1d36 amd_mp2_find_device +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0x979762fb amd_mp2_process_event +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0xb84329ce amd_mp2_rw +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-amd-mp2-pci 0xf2b772a0 amd_mp2_register_cb +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0xa83e5be5 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x15b91264 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x1feb46a2 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x27193d9b i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x33facf00 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb5b65e8f i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xeac25f6f i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x0ba537d0 i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x1e0a09bb i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x1f07d50f i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x28fd86aa i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x30d9ebb8 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x324c9d17 i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x34c50dc6 i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x37112998 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x4e0e738e i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x58375a13 i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x5ba05dee i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x630cef12 i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x64a7c258 i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x671a5006 dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6db6f658 i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6f265040 i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7b530089 i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7ca5fc51 i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7e5cc8df i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7ff9c3dd i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8f3507fa i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xcbe13d4a i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xce6a77ed i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xcf4f487d i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf0aa14b5 i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x0ed90c5d adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x79d21972 adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x2a6fb833 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x4a1b895c bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5e4e71aa bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x8cfb8116 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x718d0dd2 mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xa4ffceaf mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xce0d0ab0 mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0x18cc18fc ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xbfc0f20a ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x8aeb8cba ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0xd1b004b5 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x230a53cb ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x236f8e3d ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2433df93 ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x34314444 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3b2f7222 ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x40080852 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4363c853 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x440c8e35 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5d941a07 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x69b1ccbc ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6b74de1e ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x058e81e3 devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x1aa263b0 adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x8ea8f02f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9acf62ab iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xade2c6a7 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe21d2509 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x19add461 devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x45b0b672 iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0xc2725f8e devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x71fb5b2a bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x132742bb cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x25a22228 cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x4ae1e666 cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x7e26c14c cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x82066006 cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xc27aa420 cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xdcf3c3c7 cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xea7e481e cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xfc49339a cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x1658f59f ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0xc21df4b9 ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0xcd5f0df7 ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0xd4c5afd1 ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x7495cc0c bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x7c7a35d4 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xe782e41f bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x3460cf73 fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x4103945f fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0xf8ffeb46 fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x005c860f devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0c342727 __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1db25b8d adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3c2a2855 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4f2e860b __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x93da857c __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x93dc9dd8 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd00963d4 devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd0439cdc adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd42757e4 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe6efba9b __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe81ff356 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xec6d1f74 __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xecb7035a adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf7c2266b adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0xef6bdca2 bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0x8fb3936b fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x4f4c60b8 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0xb11bcdaa inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x05b37638 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ba91b71 __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0bbca896 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0dcaa484 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f29c8cc iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f2fc834 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b22c503 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1ee17484 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2599c086 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x29174354 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2c2c3cbe iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2f2bdbde iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x32827979 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3820ae57 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x38a7374e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x395dabc6 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3b4b053a iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x443812aa iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dce7dd4 iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x51ae74b7 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x54a27b30 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x55ceab2d iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x56e31787 iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6114da74 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ab31f45 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7284bfbd iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7902f94f iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7d85fbfc iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8752bda9 iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88c1ff90 iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabe2298f iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbdd6e6d5 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbfa9d664 iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbfb37c05 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcb5abf96 iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccfd1722 iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3cc3bad iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xda1dbc07 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdf59099d iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeacbdc49 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef235081 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf1fccfae iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf5a1404f iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf9c69e0f iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xd826a9a5 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x3d8673c9 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x28f8f400 zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x34c0eb18 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xb5e06790 zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc3a1e91d zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xf81574f8 zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xfce2c2ee zpa2326_remove +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x176fa37c rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x1fe778c7 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x406f0d72 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x49565194 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5325a172 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x56f70c23 rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x68c1c071 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x8084d619 rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x819527aa rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb2978b89 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb6e39cb1 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xc28cee1e rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xe5cec102 rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x3f2c5037 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xce641c5c matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x28694b80 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x096f2d46 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x1185c4ef rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x53679659 rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x689083b0 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x6d0397e5 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x9c55798d rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x9e49f832 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xa5a2245f __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xa765ffa1 rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xbbdfa9d8 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xbdb02bd5 rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xce720341 rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xe7d83a6f rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x4f83aa7c cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x6d25aa98 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xe5cdc1f3 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x02a71cd9 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xbdf11eff cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x8f4f5780 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf77e4627 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x01dd5987 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x12c4828a tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x6baccff9 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xd83b55be tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x026438d9 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0b978de5 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x20c8909a wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4fb9e5b1 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8313e52f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x99e94b5d wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9eadf875 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xadcaa5d7 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5d0db22 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf703a3c5 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf7dcadcc wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf8d4a498 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x04cf004f ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b888a0c ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0e73855c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2cd05930 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x344999da ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5807da38 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6adab2f6 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc710ae0a ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe4570091 ipack_get_device +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x116f8c18 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2471f1c5 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2ffd1d7b led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x6c6cac6c led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7d00e778 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7f470451 devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8b83dc1 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdd85b3af led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x22145dc4 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x33c3ea32 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x37c80250 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3ecdf865 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x45265bbf lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x64d71009 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x83246baa lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x85fb17b2 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xce32430c lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf8fc3bc0 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfa8c3884 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15b97715 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19b88bec __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2307b422 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b46c4b6 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b793afb __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fbf8560 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33554606 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x414c7765 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5f6a4a3e __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65fb81f0 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6b1045c7 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7260fb66 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x748968f6 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7574c715 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c8a33fe __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x96bf5dba __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa353964f __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa4682eff __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xab4c5652 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb22f8879 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbf53dc9d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc00185bc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc13b483f __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc36e201d __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8feefc9 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd8da0f0e __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9f20dee __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe9c4d700 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee603d81 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5d8bf62 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf8502c64 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x060ce4f8 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0e9e3c0c dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1ea21739 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2e95bc5d dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3b6a8213 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x60867063 dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6263150a dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x661edc5d dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x843914f0 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8bc2f9ec dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9488e7f5 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9d930fe4 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa00b987a dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa3c949ee dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd0f112bc dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd7595d77 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdfe9e50b dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9556fee1 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x33bd38a4 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7890d535 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x890723f7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xadbefda4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf8c2590 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bdae47 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfff764ae dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x9be7bc0d dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xedda118f dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x17ba5c88 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x92a34cd3 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb1959e48 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc8bb928b dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd08c863f dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe1f7c8f7 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24621ca3 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x30c37cc0 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4f477261 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5375ca71 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5cf0d0bb dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7551b46e dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b6b3af5 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9290e07a dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x932a6ffc dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd51c29f1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xefece2ac dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x00ee7621 cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x024c91fe cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x039e9a48 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x050b2eea cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x06babff4 cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x07c9c5f9 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x13ff0cfa cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x31393388 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x3ad097ed cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x456c4af4 cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5aa93d37 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x67d03ad6 cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8af5fe08 cec_pin_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x916837df cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa423fe05 cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa97f8712 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb57205c8 cec_pin_changed +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc1b45470 cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc5b0517a cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc9a22127 cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xccb3d193 cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xfe8e0c0e cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x18acc19f saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1ab0b18f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1f11edff saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4277c026 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x60971c26 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x611613e0 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x998b6819 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x99d9e7e0 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xaf688543 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc0874c40 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x15c36f6a saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2aa81233 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa07fabbf saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb2016723 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc570d9d2 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdba294bb saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdf339a1c saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x083d32bd smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x123ddad6 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13ec7af9 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x15e72603 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1afcc752 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x29675163 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x359ccee0 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x39724d6b smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x656f701c smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8740ca50 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x92eb5929 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9628f08e smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb3ff8284 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbeec0c07 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc975a50b sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd0dfacba smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe7f472c3 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0270233a vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x095cfb47 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x15c42e67 vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x31778653 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3f623848 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3fcc6063 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x42c2cbb6 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x43bb5a78 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x63c32a18 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6669b2fd vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x672d1760 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7249398b vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x770b6bb5 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x83101a50 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8787e00d vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8ddae992 __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x90828029 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9bfd6f72 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb04ac8d0 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xbea56b4f vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc6b02d60 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc88264fe __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xcc775770 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xdc7356f4 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xde1312e5 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe6a406d3 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe8606964 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xfa33ec62 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xff9424a5 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x944c2ff3 vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xe88b7b23 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0xf76b4465 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0x0e98b8b7 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x07b9b5bf vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0dad12b6 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x24e68165 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x2c6cbd8a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3441a26d vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3519e050 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x36bd18b9 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x427411cc vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x49bb1ec0 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4f9c9c30 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x558ba311 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x586f3bf9 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x5accf7bd vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x627a7d5e vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x771670d9 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x8fbd1235 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x909d77da vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x97a10d7c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xa03b86dc vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xa0aef2f6 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xa6dd2d9a vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xbabfdc07 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xcc6c4662 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xda0fd101 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe05078bf vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe19eed2f vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe27c49c3 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe3625f98 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xf2d30bae vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xf5ddf291 vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfcee6fd2 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0x44f284ae vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x88243192 dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xbfad0765 dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xc18396ba dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x1174a3db as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x25a4fe9e cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0xa8d94732 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0xca3a4359 mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0x13caaa88 stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0xaec67c30 stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x0de932e9 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0xae50c5f8 aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x16d8c3fb smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x062d39b6 media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x079ae7d6 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0b6bcaa8 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1001db25 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x128931ad media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x12916e15 media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x17bccfcf __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1dc94696 media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x206a704d media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2c13a822 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2d17b412 __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2e6e5642 media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x30204091 media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x38591a54 media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x38bf09f9 media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3a57206a __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x413b1314 media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x420492b4 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x54638877 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5545078c media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x58486ae3 media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5c5141cd media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5c7ee216 __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x604cdce1 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x606326c4 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x65896201 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6d9ac5ec media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6f592c92 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7b375b3c media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa40737f8 media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb6b1035b media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb8af0042 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc0fc14ac media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc3315b5c media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc377bd5f media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcd353789 __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe2204cb9 media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe31a1297 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe3a466f8 media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe4103ba8 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe41face5 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe46e64bb media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xecebd6ae __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf3c43fca media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf46987cf media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xfb30da66 media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x7a69bf2a cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x090bf2d5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0de1d4e8 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1d25c498 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3640367e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4377f4bd mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x65cc9512 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6712c816 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b594cfe mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8e2bc02c mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9f0db629 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbf4d688b mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc0794916 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc990b74a mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc9d2c8f8 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdae336b7 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe032faef mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe4d8dcd2 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf174afac mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf2c133c5 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5336052c saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x57c3200a saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x631d4e12 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x66a6b432 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x679c0819 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x69a3c8a4 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7da29bd8 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x82128922 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8eb6fe7c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa281e131 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa5f76f4b saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa724b892 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaa7f5cd7 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xba345483 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc56dd7a5 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xde594bee saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xde9eba25 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe53e9cda saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf1791e42 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x220a1b49 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x40214385 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa0b94fdf ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcb7dcbbc ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd19e0fbc ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfa446da4 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfa8a8a5b ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x22eb1a28 mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x456320e9 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x4c2b98e3 mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x73ea9252 mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xf1136cd4 mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x313badf8 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x33e3f0ab radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x6ded9fdf si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x6e35baef si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x8898ac46 si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x97dd9ea8 si470x_stop +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xd56289d0 si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x015f9754 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x087ba771 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d126840 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0e5b3cb6 ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x16da41fd rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ac62c77 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e128531 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x24a528aa devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x326566c3 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x34732318 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5c18600f rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6b6fa555 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6bc3e81f rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bc8ac67 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84d3c46d ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb01e164b rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7798eaa ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbdce9876 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc1090ade rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdc0d01a8 devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe4baecf6 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xa2e54ace mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x8a2a1dbb microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x53a8f3c9 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x46b2640d r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xa0679e2e tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x37a74c2f tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x06290024 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x58d160b9 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xf8a03dd6 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x171c5db0 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5d469f33 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x463fadcf tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xabaf7e57 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x50095670 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0854fbb7 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11c6f2a3 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b0a638e cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x22504a54 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x22806e44 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x44dbf870 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x49e20c8a cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6c823877 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e1ee255 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x90fc0e0f cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x96f5d608 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb1d21565 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc5fcc05b cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc9d33339 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe250bb36 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe890693a cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeac0ea0f cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xec4631f1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf8457e5e cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfc8ae7d2 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x144f8713 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x5b5a37c4 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0d5701c1 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x137c723b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x24f3d34b em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x29828283 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2ed5a456 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x34503682 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3efcfbec em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5aace7ee em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x67f0c561 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6a99a3be em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6f460e4b em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x77b29601 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbbe8345f em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc1cb9841 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd442783f em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd8060598 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdf7033af em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe040f4a0 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x21d01962 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x591c194f tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x83d76cd6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdf91d4aa tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x40f64286 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xbd1513e4 v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xc396b0e4 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3daee429 v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x5182a96b v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x6650a826 v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x6bb3d919 v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x75e06dab v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x8bda9c19 v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xa9c38cc7 v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xae1786c6 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xb1645b69 v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xefe91af7 v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xf017fa20 v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xf4aab38b v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01e32b8b v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x03cacba8 v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x066615d8 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x07091b88 v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x082f30f4 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12194e7a v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12bbcb2d v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x144affea v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1692e9d1 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x191b6297 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x21426469 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x239a5608 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x253f6ba1 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x37076fe4 v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x37413adb v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3aab9607 v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f044929 v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4bd1a4c6 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4dcd248c v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5154cb33 v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61863823 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6af9d8c9 v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f91baaa v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x709c06b7 v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7292d6c9 v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73fd6951 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x796a1f60 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7dab5605 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a95f421 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9b3026a7 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9f95eff7 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa0fc563e v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaef1f776 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb96fbad9 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc37599bb v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc63d8524 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcf234a8e v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd495c3e7 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdc337ce6 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfb1fb44c v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd28a405 v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe12d837 v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfeaf7aa2 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xff3d3425 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x10def719 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x10f50554 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1193b35c videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1253364b videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1c9fb419 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x28fbb2f5 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x390a4d3f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3a1546a9 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3e601f6d videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x53006f7a videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x632ad52c videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x633b00a4 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x68978c43 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x71c37922 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7aec6e53 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9adecf25 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa86cd74a videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb924e3d6 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xce4e39ca videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd05004dd videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xddfcd9ba videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xde24dcb3 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe3e2ca02 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe9642da4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x263c9223 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3a8630a4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa072393a videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdddc61f4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x22b0775c videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x25b79ce4 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xa7aba3eb videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x14af5183 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1eacca30 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a53ca39 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32431a1e __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3672a99b v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x37e82954 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f463ed6 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x42a8ca3c v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43996a8c __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x503a6825 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x53df226c v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58dfb8d1 v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5de41093 v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6228aa8a v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x672ca532 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x67b27351 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x687b97a3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x726c7a0f v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x72cf0091 v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x793fd618 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a93de01 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7d2289b7 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x82209823 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x85cd652a v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x879bb90e v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ad7df08 v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x91514e25 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x930f5597 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94db0e49 v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x960505a5 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x966b5c0e v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x96c654a7 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x99cf211d v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9d963af4 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa1f5830f v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa4ccc415 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa65d4618 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xab9a99e1 __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaea772c1 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb66cc348 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb795f071 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbf3954d8 v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc0642015 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc0bf3528 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc247de04 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc2c26fd1 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc8aa2df5 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc990712c v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd2a65ce9 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd6eb5a6e v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb26df67 v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe14c670a v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2822320 __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe32806a2 v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe4e4e1b8 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe6280968 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeaaf7ce0 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedc9aaf5 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf0885635 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3328cc1 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9f664ee v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfb676ddf v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xffff11b7 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1269b57b pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x79228955 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xc6a49b90 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x1bc9d680 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2ae3d6ba da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x63636470 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa0791f24 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc86959bf da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd18a7dcc da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf58c41c8 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x00c63b0f intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x3fd27547 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x53d8e83a intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x68b52dd1 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xee0857b4 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0x03e05dcc intel_pmc_s0ix_counter_read +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0x524dfbb6 intel_pmc_gcr_update +EXPORT_SYMBOL_GPL drivers/mfd/intel_pmc_bxt 0x848561e8 intel_pmc_gcr_read64 +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x26ba3e02 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3f0a27cc kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x71680ea1 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb77cb034 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xce645f10 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd8989f61 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xda2cfef9 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfcb5afa3 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x57859abc lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6ca74852 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xa7782b4f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0b4a5510 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x37b186a3 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x3a822090 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x981cd49d lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xae568428 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb226f637 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc1e627ee lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3714a2da lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3f3eaf43 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3ffa9492 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0ab111ba cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0abccdfa cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f08ad56 cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1797e68f cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x179a3acf cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2016fd72 cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x201b2132 cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2fd72585 cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x38c38ac2 cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x38ce5682 cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x49840cb6 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4989d0f6 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x54a2fb83 cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x54af27c3 cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x58839164 madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x6323e07e cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x632e3c3e cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x7bf697ce cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x7bfb4b8e cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x806e9a9f madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8347a67a cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x834a7a3a cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x87c1a1e2 madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x9713f8cb cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa343d80f cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc072bb76 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc07f6736 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe6a204c7 cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x005929f3 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x06f65537 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1256dc9b mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4bff2761 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x52ec97bb mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x64b91fdb mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x133110fa pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4492cafd pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4bbe2d71 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7b5093b0 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x82257a10 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9a9d6dbc pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xac006478 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb7ff60d3 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc1e66715 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc8a516d2 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdca7f8c8 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x02ce280c pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xff03d345 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0061256e pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x036ef914 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0d82e8b5 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8030f011 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x94621ab4 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x0e064bf6 devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x43e53ef9 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0adecd31 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1a58e13e si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x285f65f4 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d614778 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x33cf2155 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3408f315 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ac9d746 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4bebc260 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58c68a7d devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e4dabdc si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x64aacc55 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x699278a5 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6d6dcc50 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x731fdf1a si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x865b4129 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8bd1b030 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8db1bd53 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xada5fd6a si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb1a55844 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb3351d30 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb5c7e3b0 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6ce4e8e si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8764f22 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba960b30 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbb1517e0 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc96ede47 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd6edb88a si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd87b125f si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdfe3e945 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe40c2743 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe9a56b5f si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xecc45b68 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf58ab358 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfc459b66 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x003791cb sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0f29e4cd sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6e660842 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7da12ab8 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x969eaf39 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x06ef76fe am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x0daa287b am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x196011c5 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x270600e1 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xccfb606c ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x3f93235c alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x708574e2 alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x84693688 alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xc04d1d93 alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xc9cb5e56 alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xcc7b86a6 alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xea0c42cf alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x02583687 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x14e28a42 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x161a30ad rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x27069941 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x2bbef56d rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x2d2d3fbc rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x3110d472 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x57d151bd rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6c61fcaa rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6f463b3a rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x86efea06 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x8a8b58ec rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x92224b38 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x93476ae5 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x96679952 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x99cc28a1 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9f7d1d26 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xc9ec7fe8 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xda7d921f rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xeb3976b6 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xee8966d7 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xf3f5d142 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfa530016 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfb44cfda rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x01de510d rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x02d02db3 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x16e5935c rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x19ff944c rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x5afc6d60 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x69080f91 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x735042b5 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x7de87df4 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x87e44f68 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xb51766dc rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd5575ada rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xda7a54f6 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xdbfed171 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x10203de0 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x33ee8712 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7e17e8ad cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf052c720 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2da4467f enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x41153360 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5b192d08 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x63680097 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x944408e7 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc58ab7cb enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd8a290e7 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd92121d0 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x39c9e177 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3c3af992 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x48139089 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4f0441b1 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x97051cd9 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcc4b0490 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd513bce5 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xeb42dcd8 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0872623b mei_cldev_uuid +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0e2cfab2 mei_cldev_register_notif_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x23eb3e34 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2924fa72 mei_cldev_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x35af88b3 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x373ead03 mei_cldev_enabled +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x37fe239c mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4146ec36 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x47610226 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5113c06a mei_cldev_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5ca3d169 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x60e9a599 mei_cldev_ver +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x676dc70d mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6ee982a0 mei_cldev_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x85c8e19f mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x90a24af4 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa5ddefe0 mei_cldev_recv_nonblock +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb3301220 mei_cldev_disable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb56b5f7e mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc332cced mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xccf29253 __mei_cldev_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd48e8aa8 mei_cldev_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe3437b6a mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe49e8ded mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe7b55942 mei_cldev_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xeb20446c mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf4e028db mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf5068224 mei_cldev_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfc656f55 mei_cldev_register_rx_cb +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x0c57cb41 cosm_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x6cb4f77b cosm_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0x76a07e30 cosm_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xe8f1e349 cosm_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/cosm_bus 0xff754fb2 cosm_find_cdev_by_id +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x2671a52d mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x4a5cf639 mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x9fa6c7d9 mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xaf0157d5 mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x37df6e24 scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xac6d8a50 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xe9c5d7ba scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xf2cda1c8 scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0x6ff9be0c vop_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0xabe385c9 vop_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0xc3bb1774 vop_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/vop_bus 0xe28b350f vop_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0174fa64 scif_client_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x027e0517 scif_unpin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x077905d7 scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0d5eef9c scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x0fc6bcd1 scif_writeto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x2790d406 scif_register_pinned_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x2f7efc18 scif_pin_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x312ded4b scif_vwriteto +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3531751c scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3d16f5a1 scif_fence_mark +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3f6a5576 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3f735506 scif_fence_signal +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3f9d5615 scif_put_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x512bf0cb scif_unregister +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x67f767f3 scif_readfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x71ab880e scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x7b6cd4c8 scif_get_pages +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x8f2fed3f scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x92af3511 scif_poll +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x9883f960 scif_vreadfrom +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x9bff7247 scif_register +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xab84d240 scif_listen +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc9354f47 scif_fence_wait +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xeaa03c96 scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xf4130a45 scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xf9fd2b26 scif_client_unregister +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x5b8bb699 gru_get_next_message +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x8dc51bdd gru_create_message_queue +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0x9c7283a1 gru_copy_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xd3d2bf04 gru_free_message +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xde08c325 gru_read_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-gru/gru 0xeed7d505 gru_send_message_gpa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x1018eee0 xp_restrict_memprotect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x12333991 xpc_set_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x345c9217 xpc_disconnect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x39046c7a xpc_clear_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x48e62c9f xp_region_size +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x6285dfe8 xp_cpu_to_nasid +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x64ba5017 xp_pa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x68d27065 xp_expand_memprotect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x68fa7d28 xp_remote_memcpy +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0x7d5ba9a9 xpc_registrations +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xc04c7267 xpc_connect +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xe68acd6c xpc_interface +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xead4f7fe xp_max_npartitions +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xed1d3813 xp_socket_pa +EXPORT_SYMBOL_GPL drivers/misc/sgi-xp/xp 0xf3b47f67 xp_partition_id +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x28ea9180 uacce_alloc +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x330aa02c uacce_remove +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x7962a366 uacce_register +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x024d14bc vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x046dd187 vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x056837fb vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1fd4782d vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2449459d vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3a22fa8a vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x513f6c56 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x5591b58e vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x58e273e1 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x5e949e0a vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x676bd843 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6de2570f vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x75fe065a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x787f0fe8 vmci_register_vsock_callback +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7c74d7a6 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xb572e830 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xbcb85f62 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xc04c7e84 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xc403cafe vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xde3abc2e vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe0cc9c92 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe11895c1 vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xea143610 vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xea61eefe vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x00a1b691 sdhci_send_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x06aa5d07 __sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0e8889b9 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1554200e __sdhci_set_timeout +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x174eabb2 sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x206e4566 sdhci_switch_external_dma +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2608003d sdhci_abort_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x354de262 sdhci_request_atomic +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3bbb391e sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x413b404e sdhci_adma_write_desc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x425ff216 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x42c4c57d sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x481033bb sdhci_cqe_enable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x51653755 sdhci_dumpregs +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x555d8d58 sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x56e222b1 sdhci_set_power_noreg +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5ce2cb0b sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5f71db0d sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5fe13f58 sdhci_calc_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6c2aa92e sdhci_execute_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7041198e sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x853edee0 sdhci_end_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8a567242 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x903b31e0 __sdhci_read_caps +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9f194988 sdhci_cleanup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa2898ec6 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa4698df7 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb1f6ac9e sdhci_setup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd24c5a48 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd4a2522e sdhci_start_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd541231f sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd6e9092b sdhci_request +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdb62a455 sdhci_set_power +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xde906d36 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe1961ceb sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe44278b4 sdhci_set_ios +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xea1c9a75 sdhci_cqe_disable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xec5bdbc9 sdhci_cqe_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf0343eb8 sdhci_enable_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfa56b3d2 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfb622174 sdhci_reset_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0814b9f6 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2ff977f7 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c5ef751 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x665a8256 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7dd00dc6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7e557aef sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc5be308a sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcaba846b sdhci_get_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xff563176 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/most/most_core 0x0678ad6c most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0x41bcf290 most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x56238d5d most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x61fbb47a most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0x65cd298e most_stop_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x6e24a955 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x7e0bf288 most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x8f0b109d most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xa2609698 most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xbb140c6d most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xcee59ad7 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xddb53c3a most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xf8975db9 most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xfb499b32 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4b508138 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7479a4d0 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb64ea4ae cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2a96581c cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x54c413cc cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa73ddc4a cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc503754b cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x37c8251f cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x3b3d0440 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf160d9aa cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xa58c3cf4 hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xce8fa85c hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00b3b771 mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00cd209c mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x013b29b5 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x08b004c6 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0c483525 get_tree_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0c6f6b49 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x112a5291 mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x12a9ad18 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13779d5b mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1b69f20e mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1fdb8c24 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x236d93c6 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x253fa6ed mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26dea3cc mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x31e3a308 mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35eb7b0c mtd_write_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x38b22330 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3fce72ad put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47c06960 mtd_ooblayout_free +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x48e712ff register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4dab3453 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4ef28663 mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5140b1e0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5480b48e __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x570c4418 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5cd430cd mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61e21c31 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x64bead88 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70abaef4 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7306e8cb mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77ecba76 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d1ae4d0 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d731f66 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e3829ab mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9342b0a4 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x949caadf __register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa4aa8971 mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa69b695a deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa9077497 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa965ccf6 mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4aead73 mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb7b37ded __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbb27667f get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd91c15b mtd_pairing_groups +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1db8911 mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd134896b mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd75c3767 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe076b0f5 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe62c1ea0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xecdba0ab kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeece0077 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2157313 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf59038d8 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x44658d1e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x84f47685 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xbb3db688 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe90613cd del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xed509f9b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1ad71354 nanddev_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x244befc7 nanddev_isbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x39fb9f32 nanddev_bbt_update +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x4cbf3558 nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x605cfbbc nanddev_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x84591507 nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xa15dc122 nanddev_markbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xa6eeead3 nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xa9c61921 nanddev_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xb091c35a nanddev_bbt_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xcc24c2b4 nanddev_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xd370cb86 nanddev_mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xe7e29063 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x0b44e26a onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0xc0cbc7d9 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x325d1946 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x022ff266 nand_decode_ext_id +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x08c15bff nand_read_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2040136f nand_select_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x342f11b8 nand_status_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x427b06c0 nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x46131c1c nand_prog_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x4abde47b nand_reset_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x4c84d499 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x66b7fd61 nand_prog_page_end_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x775b6a4f nand_ecc_choose_conf +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x84b37163 nand_readid_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x8616a889 nand_reset +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x8b1acf97 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x927f8666 nand_read_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x94718acf nand_gpio_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x9dcac65c nand_write_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa3532445 nand_change_write_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa782260c nand_read_oob_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xadf23a84 nand_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xcd20fc3c nand_change_read_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3edeae7 nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd8c5309c nand_deselect_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xe1e92881 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xe751da0e nand_soft_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xed88b9cf nand_erase_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x7d5def9e sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xa9ea45b7 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xacd9f14c spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x030b0e59 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x06df128d ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2407d7ca ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2793f931 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x288b212b ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x357d1471 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3e965c72 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x60b2ae9e ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x689c0747 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae6972b3 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd0ac811 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd8e301e5 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe9cf75d4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf2322153 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x089d42d5 devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x20e10be0 mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x257ff9a0 mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x2cde9bc6 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x361be0e7 mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x43ecbe0e mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x50cf4e7b devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x520ad8ca mux_control_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa2c11203 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa9c20090 mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xdaab439d mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xdc13861b devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xe1f3fc71 mux_chip_register +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x329fba6e arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xb9993f6b devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/bareudp 0x3e533e31 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x10044f59 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3986f2f6 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa7942038 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xaa6a25db register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xba9e49c6 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf0e6e617 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x068b8ce6 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0bba6745 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x53039140 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe83b6095 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x158de85e close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x18c2e297 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x20628539 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4209fd0a can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4ed1dff0 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x536c69d2 can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x57f85e17 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7014f341 can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7bc794ef can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7ec1b39b alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x841cb71f can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x86c6d262 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8bfefc6c alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x962b7968 can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x984c5594 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x9cb23951 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xaa3ebcf2 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcdb7db60 can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd0e0d963 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd71f7321 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe2e95452 alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe3646be7 can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xefcc8117 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf241d903 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xfafc1382 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x2445e4fa m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x31e950fe m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x37c8484e m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x55c54120 m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x76a5e0da m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x837d8c29 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x84daea05 m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x99c41afd m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6fd6b4cb alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7370a036 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xdedecae0 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe82b8208 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0x810df2fb lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1406d672 ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x17f23b2c ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1ad9d410 ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1b8d690d ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1f416259 ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x30184f81 ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x444d86ae ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x50940669 ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x552fd418 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x55c96a63 ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x6b47a867 ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xb1762c7b ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xd99b2fd0 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdee1ecb5 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdfc54e36 ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xec2d006c ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xff1dc10e ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x267eb773 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x34a28ef7 rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x3b49eb81 rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x465234eb rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x469ee9e1 rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x4a4a8701 rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x4ca18447 rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x52ef3948 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x57db92e6 rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x600cef99 realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x7e062351 rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x9cc24b2b rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xbbad5679 rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xd3d6a2eb rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xdbd4797c rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xe9fc2deb rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x000f4ee4 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01698133 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04f9ec8d mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04fb976d mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ffa9e67 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1444b1eb mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14c449fc mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14fad7e7 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16c7e701 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c458d07 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dee73d9 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x201a3c30 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x238af7be mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x246a0db0 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27e24cc8 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28b3179d mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dc9c7c4 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2eac84d2 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3366cbf0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3580d637 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x391793bc mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x396dc34f mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3acf6546 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3afa7799 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c00994f mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ed0cb50 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fa10e56 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40d657c3 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x430e1cab mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43426a78 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x451bcf9a mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46e84d06 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x470d6b35 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x481552f9 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a91f844 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c7fece2 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4cc98559 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ce2e4d3 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d187403 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e3be615 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50d24dd4 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x518b3edb mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51c941b6 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b30cfaf mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bd9c784 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fe508e8 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60a3f1d3 mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61da8afe mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ac93e13 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b149b9b mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d0b01fa mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f7a2de6 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71e2ee14 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x731c714e mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74e2c92f mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x781fa666 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7923844a mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x797eed40 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b41f5d9 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ef16898 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x824e5e8e mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8bd58a8a mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c8a860a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90597e88 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91abc6bb mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x928e2169 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96e6fa73 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98b47acd mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b39a5a6 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ca5f533 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9df8bbd4 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e9e3d15 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f376801 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fab747c mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fe954c5 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0e7de1d mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa71f2f88 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaad9f37a mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac0c57f7 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac5924ad mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae29620a mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaeab76d0 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb17d69ef mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb50bfe29 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb680f4c9 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb975ddda mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba9eefd5 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb4e538c mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc5daab7 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbce4ba78 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe4cb572 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe90f806 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfd692b0 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc707b3a4 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb60e992 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbf265cf mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce5ac5b6 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcecec015 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd293007e mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd950dd12 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb0f12cb mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb165bc7 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd063f82 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd7d51bf mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdec3722d mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe00d8ea8 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ed2711 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6dca9aa mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe78a639e mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7c1f574 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec4c1e7a mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec9929aa mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef85dffc mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3238014 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4dbeaac __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf68394c5 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf795ace9 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc16b22f mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc3a24f8 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff5d0c21 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffbb6df1 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00c627d0 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0826f39e mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ade7bfd mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c9a42ac mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c9cf94d mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f87babc mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x118c3696 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x125281dd mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13874c0b mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14ce65f1 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x168be4d0 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1710b94c mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19fa0943 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bc4902c mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fc6931b mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2359f0d8 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25d92d0b mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bb36c15 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d9715e1 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fc61b61 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fc87159 mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3bb84821 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c4645f4 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c5e7361 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x434d566a mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x445bdc8d mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4649a9aa mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x494938f1 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d809544 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d24bed5 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e1ca1ff mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e83a389 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x646ece15 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x649a6946 mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ff7d263 mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74484891 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cba0c8b mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d94b660 mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e74cb62 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e90c048 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87b5cac5 mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87b8b29e mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d198263 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x904fd83d mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x935f8d01 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94b3aa34 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9bd082fb mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7eef979 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb37e1951 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6a3234c mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7911246 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9204698 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9c7382d mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc959fd0 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1143295 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc28f3566 mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc30b4da3 mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4a76ce2 mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc93426a9 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc7d1bc9 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdf49c57 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce5367d5 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce93d96b mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc50f85c mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0172b8c mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4169c49 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7b0c57f mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef66db6b mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9a96a24 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc157a6c mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfca21248 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xcc4fa41a regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xd5cfe300 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8c8c6c2 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1d123878 ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x38db12c4 ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x51f0eee9 ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x6d7a1a65 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7baf6d97 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb5ca79ff stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe2f426b8 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x07705741 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x14d39e11 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x409b774b stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd70bad4f stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf90deb14 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x0bf4a02b w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x73d9a273 w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x7b5beabf w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x8354b9db w5100_remove +EXPORT_SYMBOL_GPL drivers/net/geneve 0x463460b3 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x034df7ba ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x156ffc9e ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x20c7f5e9 ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x52050a03 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x67bc4f56 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/macsec 0xca09b7a0 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1a036c15 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4854935b macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x88a1ce83 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf2c78ec4 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x7c277d20 net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xf9892630 net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x01136e69 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x07ecbf26 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0be7fa58 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x12668320 bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2d50d127 bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3482579e bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x46822c8c __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x46879c60 bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4a8eb2b8 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5ba38d29 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5c616be2 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x699267e5 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6ce15240 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6d505a53 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7961f569 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8ea09c36 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x97b86314 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x97cd521a bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9bea6c25 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa4d68bac bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xac4b0621 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xadc0e7fa bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbb6562b6 bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbef85248 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc1ba2a8b bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc1bf9a67 __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xca84a94d bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd3a0b4cc bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe0aa7f19 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe59c8c84 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe76899d2 bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xebd717a8 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeff519ff bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x0200223f mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0xc994434a mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x0767b4df phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2ea02398 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x8d76b48c phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc2252f3a phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc2acfb6a phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xcc029935 phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xcf338c10 phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xeb831591 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x0ba7d30b tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0x5e73af0e tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0x9d98e1be tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x9e8e9875 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xacbb15c4 tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0xcc99f387 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0xe4856509 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xe516a78e tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xf8f668fa tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0b380d01 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x561fef87 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5f1629cd usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb82f4546 usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd05f2087 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x058bd72c cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2875b413 cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x33bbe824 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x47323a3a cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4ce5479d cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4d55d3ef cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x77438410 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x994954f0 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdf91d282 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xef2d485c cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfa39b3a5 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x086d1e76 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1396220f rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x22104a29 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x290b8ddb rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x7405ed4d generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9a680200 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0897f647 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0f0f7259 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x16c443dd usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a0382ab usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2addcd15 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2fb92cf7 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b214a23 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x57985f87 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5f16958d usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x644021aa usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x77c60bda usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8224c6fa usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x855417f5 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x869dff6f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8736b096 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a1575be usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa23f5db7 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3a7eeb0 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa887f8bf usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb19dbf05 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb1bed248 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbda7f1cd usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc15e4a82 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4557886 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc46d935f usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc499ba31 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc61c6fc2 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc93175f3 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcb51fca4 usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd9e32c68 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0fead27 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf57d6fd3 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf9542fcd usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x607f7d6b vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x9b3e8bf6 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc79c8f77 vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe997ac43 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x022a8fe6 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04ba17d8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2670891e i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x271c8fde i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3a3ae9bc i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x529d8092 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x659d92f5 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8936defd i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x94a47fa3 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0f59375 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xabeea5c6 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb1d3f6a8 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbc59e9b1 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0ad29af i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf385b610 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf7c0bde2 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0x5f2b3d46 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x04bd7448 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x434539bf il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x52d2e37b _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa1935cba il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaae1daa0 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x04b8e468 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x05006fc2 iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x050e884f iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x057505b5 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x09f07fa7 iwl_sar_get_wrds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0b855f79 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0e8992a9 iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0ea6b62f __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x10fe85e9 iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x12839f39 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1332e4de iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1806a638 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1822bc98 iwl_sar_geo_support +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1858abaa __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x190b856d iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1c3065ab iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2133dfd2 iwl_acpi_get_eckv +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x22453c63 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x244aeea6 iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2710c362 iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2820f3ee iwl_acpi_get_tas +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x28f25d28 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2e3b2043 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2edf6aa3 iwl_validate_sar_geo_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2f479151 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x304df879 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x373a5984 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x38ac18ea iwl_acpi_get_mcc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x43725fdd iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x443003cd iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4a9dda0f iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x534967f5 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5988395c iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6a490402 iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6b764b9e iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6ceacfb2 iwl_acpi_get_object +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7623a5a5 iwl_sar_get_wgds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x77e9759b iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x78080246 iwl_acpi_get_pwr_limit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x784849be iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x791199ba iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7ab20b63 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7b9873a2 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7ea17b62 iwl_sar_get_ewrd_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x911eb1bf iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x94a121da iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x96344c93 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x963d38b0 iwl_acpi_get_wifi_pkg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x98bc714b __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa36fa76c iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa6bee18c iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9be02fb iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xacc92ae0 iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb90c881d iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbf86bc66 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc19744a8 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc3cc26b1 iwl_sar_set_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc81835f0 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc8cf85a5 iwl_sar_geo_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcbb3a0a6 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcc06d35d iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd914e00 iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd92a35a iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcfa2b3b0 iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd02edcb3 iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd26342e0 iwl_sar_select_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdaf7b961 iwl_acpi_get_dsm_u8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdb167ffa iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe0eb5838 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe2a80ed0 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe4043653 iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe74608c3 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe75b7e77 iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf522361c iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf88964e4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf9450c1f iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xffee9c5e iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x2d63f08c p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x321615fe p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x4ab54d3c p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x5aac543b p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x92ff3525 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xa6b33afb p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xf135e6c0 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xfe1985d1 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xfe3cf885 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x0965e157 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x238134c5 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x2c8b4ef0 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x3bba0486 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x4336ab17 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x48fbd71c lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5598a9f1 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x6048cd6b lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x867837f8 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x88232351 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x95b62911 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa8293b5b lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xb36beac3 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xb9efb464 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xcfb64998 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd210fa85 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x3f2e0059 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x78dbc635 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x84db1012 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8955b566 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa40a2b3e lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc3d23622 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xca73f458 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xd91a471f lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x18c81c06 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x2ad7f8cf mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x321cc536 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x437491c7 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4c4ddc6d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x541999e7 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5b609f19 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5f223f18 mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x621766df mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x6f20ebfe mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7ff7d354 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x80bd95ec mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x9047a314 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x9cfa18a2 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xaf1fc2fc mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb286ae3a mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb58c8dd8 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xc0d48977 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xc95015c9 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd0097f81 mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xde033cd3 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe9196ae3 mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf1d8d65a mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf7ec6a3d _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x05f80340 mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x08ba9235 mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0937686a __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0c4a6922 mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1132b6bf mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1300b583 mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x174deb10 mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x22e1a075 mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x32cd9e29 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x344e5bee mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x39702c93 mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3b599096 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3b61792f mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3d44435c mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x43694189 mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x436f81c2 mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x44df825a mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4696adc7 mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x47d2e310 mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4c51c8d8 mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4cf05002 mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x510b3b9a mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x54235b5f mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x556ddb2d mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5b909449 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x608123b2 mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x65909155 mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x66e8d640 mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x66f25457 mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x69bc033b mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6fe215c3 mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x71491810 mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x789c1448 mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7b212de6 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7cdb7988 mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x81991ac1 mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x81c36307 mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x86c1585c mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8c0a8c7a mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9494dd8d mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9ec0816b mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9f6237d8 mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa470d575 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xaa497241 mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xafcfc1e3 mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb999ccda mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbdb5973c mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbf3b782f __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc5fc58a3 __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc63bed47 mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd5916324 mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd6d35f25 mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd9b9c677 mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdbaf1db5 __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdc3bce8b mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe698beef __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe7514ad0 mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe843717c mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe8a38e05 mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xef2af736 mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf54b68fd mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf7b4518d mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x463ef11f mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x75ecb171 mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x797040b6 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x816e5c41 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x8e08e9ef mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x8f70ec1b mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x90d8bff7 mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xa6205ea4 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xcfc045f2 mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xd73958d0 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xdb365175 mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x0feebe01 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x16ead471 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1749c5b5 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x183147ba mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x18af9f19 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x230594b6 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x29067b66 mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2989a115 mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x34aee158 mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3ca62e38 mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x41d42a7a __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x49cfd887 mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x57c57527 mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x58f5c778 mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5bc93b16 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5dcf17cb mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x666b9aae mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x69cd9719 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x70e27080 mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x74aea559 mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x75a69463 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x794f72c6 mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x84d9b4a7 mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x85ad6624 mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8a373f6c mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8a775695 mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8d4d7571 mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb528165a mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbcc81597 mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc4642805 mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xda11b089 mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdc3ae84c mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdca08d79 mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdf344e55 mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe1be1458 mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xed833d59 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xff874556 mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x096908b9 mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x42b6df4e mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x4db7758a mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x5ec82879 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xc7058dee mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xe774ed55 mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x023c795d mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x03239348 mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x048934d5 mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x05886689 mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x095ccf2d mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x10282f81 mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x15625e1d mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x16ccbeea mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x185ea5cc mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x18d7886a mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1b964826 mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1c5c0693 mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1d4d103c mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2413c072 mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x26999508 mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x280c9f2a mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x29f11d32 mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2b55d756 mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x38f77547 mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x420e18b7 mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x482234b3 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4bfdd045 mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x51fe5f0c mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x52444056 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x56e36a60 mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5899a3d0 mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5b32b85e mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x64441b91 mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6b18906c mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x721fafa1 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x72b6a3c3 mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x732bfc53 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x835a5e39 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x859ffce4 mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8a11d852 mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8c2e362e mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x90ec1d9d mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9d7e7359 mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa443cfe1 mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa7182271 mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa7d603aa mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa8e5aa2a mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb67e47bb mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb829817e mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc53252c0 mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcc6d5e02 mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xce50c207 mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcf2a133c mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcfcc9705 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcfec251f mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd2e0d12a mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd51da748 mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd6766421 mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd7eed016 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xda61af3d mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe1f1a88a mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe8897959 mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xec50f053 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xec88ffb4 mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xefe5427f mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf2b7668f mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf37ffed6 mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf3ad40e4 mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf54f772d mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf910a80d mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfa0b6894 mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x2ce41fa4 mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x322c1c07 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x3caf9d9f mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x64d738a9 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x97aeb972 mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xcb4326e5 mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xeb1b82c9 mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xef392df2 mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0c2de0b9 mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0f7ea2b2 mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x23ee1958 mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2786afa6 mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x32784bbb mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x45f4ae34 mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x49dd8623 mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x4beffa71 mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x79c7249d mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x9cdfed3a mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xa0492b78 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb662e9d7 mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc16223af mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc174c055 mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd48d0b42 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe7e16873 mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xece33058 mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xf694b88b mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xfca3b874 mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x0f308ea1 qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x1b58a913 qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x341cf022 qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x7c8ffb52 qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x8d01bde0 qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xa510f220 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xdd99d2fe qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xf7a9ad6f qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0168f604 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x08f0c857 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0a473367 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1229dde3 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x18007f5a rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1912009e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1ab2a358 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x203c1e52 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3492f06c rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3e04fc8e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3f41e411 rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4214ad38 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x514c9caa rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x54e203a3 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5762fb42 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x57f972fb rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5a60bb0a rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5dfad99f rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5f1703a1 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x61d2b60b rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x672faff0 rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7a3596bb rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x81a77765 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8bc40de1 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8f21c55e rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x974b91d4 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9b6391c7 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa068b39d rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa080ccdf rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa9722343 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xaee21992 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc6502369 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc6f12ab3 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcc47b9fa rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcd750755 rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd03f8ef9 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xdb993b11 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xde8bcfe5 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe15623b9 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xea81ce47 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf4230a98 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf9bd87ae rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf9fd321a rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xfc793777 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x09601a14 rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0b5cb744 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1476be9e rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x3021e559 rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x3b9c4178 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x47b717e9 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x4b813d06 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5d056581 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x653b6ede rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x71cf0d3f rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x837526f3 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x8d337820 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x902a587e rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x97b7552b rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xb412fba9 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe4d1a4e1 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x004f4048 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x00e9dd5c rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x04ce69fe rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x05aa96ee rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0c5a5dcf rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0eab6a83 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0ee0045a rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x12f19d84 rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x1b19c375 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x241e9fb7 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x258786c5 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x32019f8f rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x343a5585 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x39acadd6 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3e975322 rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4e5c4a88 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5a81ef3b rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x61089fe2 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x709eab25 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x73bd5283 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x79d48c3e rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7f6a439b rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x802628b3 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x831fffe1 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x897f27e6 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8e2c233c rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x91a2dd00 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x92661b6f rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x92914a04 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9e97d802 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa36ca57a rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa9466df7 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb0daead6 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb38c9482 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb4cffc8d rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb5325ca9 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb87a213b rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb8b86916 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xcf6a7e48 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xcfe353ee rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd88f7e3f rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd9652693 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xde53999f rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xde8e40ed rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xeb792791 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf8c5b566 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfa327717 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x52ec0345 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x81fd0720 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xbf809bd6 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xc21e5750 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xf4446afb rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x04e97ca4 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x80d8d920 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x9da9a64f rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xe033776e rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x135fffdc rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x1c677f2e rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2f7f5deb rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5a9ba3e9 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x6cce42a1 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x6ee0a86f rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x8a9c9235 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x90940f15 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x90ff2012 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa3806597 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa841f3f7 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xb311fea6 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xc803cdfe rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xcbaa883b rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xdbd5895b rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xedd42fcf rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0da3e829 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x30103196 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6a2fac3f dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbcd0f15e dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x07e63a9f rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x144e3ae6 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1cfd8d34 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1dbb929d rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3cc6e337 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4fd161c5 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5619ffda rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5da53ed0 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x64ba2577 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x665701a9 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6a58b902 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6b36a7b7 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x821c4e02 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x824ad2f8 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8b917fe8 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8c0f201b rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8f413b25 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x98bb6f52 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb5b0686d rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb71fefbd rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcb0ed825 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcd79b584 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xce222183 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf569758a rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfe39bf37 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x06e0ddb5 rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b1a5516 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0c31bb0f rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x16bc37eb rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x208b4271 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2436860e rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x24b890f5 rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x261dbcda rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2b0a7144 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d32cdfc rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x39589473 rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3ad6021e rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4b1d16a2 rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4d6245ee rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e94cd48 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5c341209 rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x75c5c261 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7bdd796f rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa7119fcf rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb409a1f2 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbb377a4a rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcef0d5af read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd552271d rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xea304d14 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xea9368b8 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebf7308a rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xff891eff rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa23a3bfa rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa7ee68ec rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc031a78d rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdd165871 rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf4d15c99 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x1528036e cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x95fa788b cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xf9011a73 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xff3b2be7 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x33934eb8 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x57a66a5e wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc8c204c5 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x036d83e2 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07ac4752 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0881a27d wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x30c8902f wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x388b5234 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d91ce35 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x44485c0e wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x460fa1a7 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x474f4f5b wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4789901d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e4d70de wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x550ffa78 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x58299bdc wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c8fdc0a wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x698f04b3 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6cf6a02b wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6f3b927c wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x71f921ee wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x72abd7fa wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x72b30bae wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x74b4fef6 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x74f0766b wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e597255 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85498cd1 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8896ad99 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93322cbd wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x95821d94 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x98726d83 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4ed6640 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xacb9b38c wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb182dc16 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb32a4895 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8c3d64c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca9ca4f1 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccfceef5 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd01e321a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd24fe124 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4fc85a5 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd853d7d5 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdce33354 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xecdf20e0 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xecfd4296 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf684d1e9 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd2cf84c wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x02a105c4 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xb4f15a2d nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xd81b317e mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x04e9d5f6 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x33633e71 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7004df94 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8648120f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x1168229a pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x18d8be8d pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x256928cd pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x2f6590e0 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xad008046 pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xd2bd8d7f pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xe239db99 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x63826a0a st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6939b9e9 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x91b3725f st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9400c94b st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9e634401 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9e73e452 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc81a5ebb st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xefb2616f st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x2c9c928b st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x69e01895 st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x8ed5364a st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1f64eb18 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3fc4a107 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x66a5b28e ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x1eb3c2a0 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x7ca2603c async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x03473da2 nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x04ce37ec nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x106acda3 nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x13985513 nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1981dbd4 nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2b477252 nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2b981447 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4083f8a3 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x42cd5e2a nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x44853f84 nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x480c52b0 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x514f394e nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x51e7145f nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x54085d0d __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5ac19303 nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x68287702 nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6c461e62 nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6f28c06f nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x73a507dc nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x85fcddf3 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8a9c70ed nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8bdd28d4 nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8cc2dbb2 nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x96eedcbb nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x993fcabc nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x99a9b87d nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9f57db2b nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa33e6ccb nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa5aa26cd nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xae0a3c8c nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb36462c1 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc5ceeb64 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc6a4c7b0 nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xca574962 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd152c7ef __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe013faaa nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe4821218 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe5dd076d nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe6949811 nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xfb84ccd8 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x04049fcd nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x271d800c nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x2973fd9f nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x3c57a465 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x3d4efa08 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x618c1c3e nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x63f3d076 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x75f3df96 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x79df4564 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x98254540 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xbc71c34e __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xdd96a43c nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xebf69235 nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xcbafa768 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0dad69f4 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x37735173 nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x4b8ea521 nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x667992fd nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x6bcfac50 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x776fa041 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x964d80b7 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xc28f5c31 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xc382feb1 nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xd1c5b26f nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xdf9ebfcb nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x40fab2d8 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0x1591b2c6 hyperv_read_cfg_blk +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0x221394ae hyperv_reg_block_invalidate +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0xe5f73406 hyperv_write_cfg_blk +EXPORT_SYMBOL_GPL drivers/pci/controller/pci-hyperv-intf 0xfb921e00 hvpci_block_ops +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0xe9bdfde8 switchtec_class +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x5ba44e41 intel_pinctrl_probe_by_hid +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x627ebb58 intel_pinctrl_resume_noirq +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xeee33a0d intel_pinctrl_suspend_noirq +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xf2f62cb1 intel_pinctrl_probe_by_uid +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x4a94d4fe mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x7aef7011 mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x7d1f0373 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x213aa387 cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x81c56e3e cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x579be2cb wilco_ec_set_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x6a550aa7 wilco_ec_get_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0x6cd02ce8 wilco_ec_mailbox +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0xccf199bd wilco_ec_set_byte_property +EXPORT_SYMBOL_GPL drivers/platform/chrome/wilco_ec/wilco_ec 0xff9130c6 wilco_ec_get_byte_property +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x57c46ceb asus_wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x9d55d8a2 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xca2df658 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0x51552fca dell_rbtn_notifier_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-rbtn 0xa060fe7d dell_rbtn_notifier_register +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x1b0b3141 dell_laptop_register_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x45170471 dell_smbios_call +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x6c0b9f1f dell_smbios_register_device +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x7fd2ce06 dell_smbios_find_token +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x928e44a4 dell_smbios_unregister_device +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0x996bd2e6 dell_smbios_call_filter +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xb9400dbf dell_laptop_call_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xc2871e79 dell_smbios_error +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-smbios 0xd6c6b12d dell_laptop_unregister_notifier +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0x8eef8246 dell_wmi_get_hotfix +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0x9559234e dell_wmi_get_interface_version +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0xa167d064 dell_wmi_get_size +EXPORT_SYMBOL_GPL drivers/platform/x86/dell-wmi-descriptor 0xa3dcfa65 dell_wmi_get_descriptor_valid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_punit_ipc 0x8ee9455e intel_punit_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x050ecd13 isst_if_get_pci_dev +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x06f7821f isst_if_mbox_cmd_set_req +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x136af905 isst_if_cdev_register +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x58a8261f isst_if_mbox_cmd_invalid +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x861369f8 isst_resume_common +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0x9a5c38f2 isst_store_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_speed_select_if/isst_if_common 0xe18f42a5 isst_if_cdev_unregister +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x112d0332 telemetry_get_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x17d36efd telemetry_set_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x1c7565c2 telemetry_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x35db93a6 telemetry_get_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5847f501 telemetry_clear_pltdata +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x5bb8e91a telemetry_raw_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x665cd407 telemetry_read_eventlog +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x6b892524 telemetry_set_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x82bb2dbe telemetry_get_evtname +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0x90551504 telemetry_add_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xb75bd1e6 telemetry_raw_read_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xbb9a2726 telemetry_reset_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xd14ffffc telemetry_update_events +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe1eb4be1 telemetry_set_trace_verbosity +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xe8847f53 telemetry_get_sampling_period +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_telemetry_core 0xf00771b0 telemetry_get_eventconfig +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x232b5238 mxm_wmi_supported +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0x61cdf799 mxm_wmi_call_mxds +EXPORT_SYMBOL_GPL drivers/platform/x86/mxm-wmi 0xe26032eb mxm_wmi_call_mxmx +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x065b4695 wmi_get_acpi_device_uid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x17b0f8ca wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x4ef4508a wmidev_block_query +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x6068bedf wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x6a4b4e42 set_required_buffer_size +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x76ae31fd wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xaba842fe wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xd7752b86 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe75852c2 wmidev_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xf18bdd75 wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x6a2ca86d bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xcb771f7b bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xe8c70518 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x24a19884 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x62258728 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x972db40d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x31d3c60f rapl_remove_package +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x7b777446 rapl_find_package_domain +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x877dfd6c rapl_add_package +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0x97a0a7fb rapl_remove_platform_domain +EXPORT_SYMBOL_GPL drivers/powercap/intel_rapl_common 0xc75d7c0b rapl_add_platform_domain +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7d6909d6 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9f649828 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa78d5f8c mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0b850a4f wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x66cd12c1 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x686b8fce wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7040b8d0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe16a8223 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xec5a4083 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x791d41c9 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x4ab1384e qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e097b43 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22ada649 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23c3670f cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a05a43e cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c22c817 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33f3df70 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3c978321 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4006976c cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4045dfab cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x444f4cc9 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a52f6e2 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x510b5b54 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5131798b cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5686d849 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b47d9bb cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60fa25eb cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64874950 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6e05fa01 cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7674fc3e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fce1603 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83e2452b cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84e75ce2 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8cab4eaa cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9002db26 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9037a62f cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9172bc39 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95c40de1 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2cbd84c cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xace3931a cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad4bf917 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0a6117a cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb9195d40 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc5b32c1c cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf10a982 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcf5a1739 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd1e65ea1 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd846b15e cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdccec769 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd0c7974 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdef9502f cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe24b2fa7 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf5d60775 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfe6c384e cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff1b2d18 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x159930db fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x238e08b6 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x24e6e9ef fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x317749d4 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x385d5d58 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x43c47def fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4b4b5a95 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x556637c2 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7bb57db0 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9cd735d4 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb17d16df fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb3876b6d fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb9f91c2d fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbc3cbd0a fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd3ddef5 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf2d9907f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x5eedf138 fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0xfcb2b753 fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a4d271f iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2e22d5c9 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x802e5a9f iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x99855bfa iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb5e8e0b5 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd5cb4487 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf89a02bd iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0a81c90c iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x19d91d97 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24b287c0 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2553417e iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x272043d9 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2aa66b1f iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2baa1403 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b266ab9 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49ca5f67 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b004af4 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5598bd41 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59eb5698 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f97b625 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x611a2a1d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6837c54e iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a330a3d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e5bc545 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x703b38e6 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x735c8943 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7cec83a2 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x815827df iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8449a76c iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8bf275e8 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x92b82834 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x980c3cb3 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99e06558 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d2c4efa iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4134837 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa7682921 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaaa36e92 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafeaa55c iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0a8f60a iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb647373 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5413b93 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca73919b iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb3949f6 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd65a2fa iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdda11454 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde825c5f iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe36a6219 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5411bd4 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe69b95be iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x01d1678d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x168c5aa6 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1a8bc450 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2928e3da iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x35e16725 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4354e3e7 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x58810ad6 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x671f4b53 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x86de69ba iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa83df268 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa8db9979 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb68e345d iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb71f99a6 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd4f3e2a iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7f88d08 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd9f967bb iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf0147f6f iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1cc4ff1e sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1fe922c9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x20a43298 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24d99af2 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2b959dbc sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x39bd0eec sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x448b6159 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x449106c9 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64faa18c sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6800aa80 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6d8da302 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7e962cc2 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9359a248 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x95d6c706 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa24eb355 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa976bf22 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac81cbfe sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7448622 sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc16e5dc1 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc491eac5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6f209a4 dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb82a951 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd7c22cd3 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee840ce6 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x043e49a0 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10f3af99 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13bea0c0 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x148d7f23 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f966fc6 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2255209b iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2e8d04ff iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3133dc5c __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33b326c8 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38ee604a iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3bfefc12 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4061d043 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47867762 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f32c8a8 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61584c42 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6180219f iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6649a949 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6ae9b89b iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e2e9a70 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f0eab55 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75382208 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76b64231 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84d8fc04 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x903a5efc iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x906b4f54 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x90eb5ed7 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c2fdfe3 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c89ecca iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9da2e81f iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaac3519d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac4dc0e6 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xad8032fd iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea92c90 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb124e42d iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb686b079 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8bcdbff iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf23c8a9 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcae7cd85 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd19ee41f iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4697d5b __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd9b3e35f iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe099680c iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe887cca0 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee23e2f2 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3b5b58c2 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x5d1976d2 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7863d816 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf77f9419 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xb0242a6b spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x57dd4191 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x64e764f6 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x7a888075 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8e251f91 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xe6b9228e srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf3464aa3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x0862f8ea ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2397fc2f ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2be09b7b ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x359f704d ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x3cd2077f ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x747eacd0 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x7bad1105 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x801e52dd ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xaadc2607 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc1e4027e ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc5fab2d0 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc989a87a ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xce6c2beb ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xd78cd101 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xdf860cbe ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x15d135da ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x257c6cfa ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x26e076bc ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2af4289b ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x37b0134b ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xb5485024 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf0771c04 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x1c325598 siox_master_alloc +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x6c6d41ed __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x8002de38 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb8398a30 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xcf1805e9 siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xd3125dae siox_device_connected +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x05bf5d44 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x061e12ef slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x167bc130 slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1ac6e931 slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x2717d244 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x35dd1597 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x37fa3f88 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x46252c26 slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x49af618f __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4e8ad585 slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4fddecf9 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x625c1458 slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x6bf94cc9 slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7962356e slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7b56c1e0 slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x81834bb9 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x8c56bdc3 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x8f18cf42 slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xa885bf4a slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xcce3d0f3 slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xcdf847b0 slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xcf4ec16f slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd4c965be slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd4d1bd17 slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xdea68579 slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xeef9ec54 slimbus_bus +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x72323a88 sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x850c03b6 __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xc70bdd41 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-cadence 0x033d6f72 sdw_cdns_debugfs_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x167ff15d spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x347214d8 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6db6ebde spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x920a989e spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa11520b4 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xef0ceaee spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x072c8e71 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x21e4a90d dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2227214c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3548f9e8 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8e84ae70 dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x93d7808d dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc77c0139 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf48fb842 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xffde4e8d dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x5081ef8d spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x65063a47 spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x6fa8db2c spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x11f3a8a4 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2f4b5e12 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x33b638b2 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3e444f21 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x45cb79c2 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x615aa9c3 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x695c3293 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x72b4d793 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7b7cd93d spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x84472f4e spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x99b4af3e spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9b8b90fc spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9f7db6d0 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa4625fbb spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb1213add spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd713a94c __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe12f8875 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf09b4426 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xcd68c679 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x018990fc comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06dff2fd comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a8211d1 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0bba71d7 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e9c8839 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x14426922 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2449692b comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26ecbbca comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x409ecd64 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x416c8659 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x42bf14ce comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x45cc37f6 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56ae6386 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x590da6a3 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x63f4f4ab comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x67f0b280 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77d87208 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7f9a4adc comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8011d01b comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83a16fae comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9426bc17 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9bd6cb45 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9c41b602 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9ffc9f1e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0e405d0 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb1fa82dd comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb303c093 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb3dd1c48 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb851be1d __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb8ac023d comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbc5425fe comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc73a3ab6 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcb25211f comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe3daad18 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xff7a5d7f comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xff956673 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x61220d11 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x688506a6 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x91843ebf comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9e0c01ab comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa861a901 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb35a076e comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb3971758 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe487c69c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4ba661f0 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4d30071b comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x92e7dcc3 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xa51b83a8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xccb8efaf comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd1b899c7 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xfb0c5f5d comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x07ebc61d comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1270dee9 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x56ab1436 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x68ec4128 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa99009e5 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xba86fd48 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xb0c21536 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x133992a5 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xfc392d0b amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x79655ab8 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x057e3a11 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x23ea6a7c comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2f5630f9 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x39dec84b comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3ce7fd12 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x476c55dd comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x498df837 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x781a6d70 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xaafe168a comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb955b1c0 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe5b28289 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe98e6e06 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf33eb124 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x27bb0ff6 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x4ad62a82 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x60604d47 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x519be70b comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x5542b570 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x8b408f87 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xca784d4b comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xea878430 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x4429f2e0 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x020c57be mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1742922d mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3a3568a7 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3b3301d1 mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x491a21a8 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5bd88096 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6179ef9b mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x655ec830 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7b107311 mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8c3ecc2e mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9278a73f mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa8157a2d mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb7f9d86a mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc60f73df mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcace770f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd75744b4 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x533bb673 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x5dde0a1f labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x094c9fa4 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4daee887 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x5aa72227 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x752046fa labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xde5470ca labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0235b93d ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x062e0efa ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1e1d3ee6 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2c465ced ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2e6ccee6 ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x35b416b5 ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x37b546c6 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3bbfd9f1 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x63a61d7a ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x76c233e7 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa769930d ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xad4c7f10 ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbd809bda ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd38f82b9 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdcfeed97 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf3405a0c ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3c3d6171 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x62c06a70 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x67f7c346 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6a71aaa4 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x97b6ddc5 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd8f1af70 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5cb172a6 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8f81c360 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc91298d7 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd2b01297 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe017a059 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xedcdaab0 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xefa2db78 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x35dec7c5 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x76d077a5 fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x9487e01f fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xa9979344 fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x0849cc34 gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x21a4e1d8 gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x566d3c50 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5d404109 gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5db65a1f gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5fe3e24a gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x60c5fa69 gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x68ddce6f gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x85e6be9a gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x8e3dd8d5 gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xcaf65bd3 gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xf9f4055d gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xfce57a5d gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x1b20e43a gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x23762b69 gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x3b23e76d gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x55dc0ed7 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x59cf11c9 gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x677190ec gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x9c674d97 gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xad432a90 gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xc3616ccb gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd17ded6a gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xef88ec49 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf101820b gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf298a42d gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x68e623d4 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x9ae7c9e3 gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x0f3718a7 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xd65efc7d gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xef023933 gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xf75bbe0b gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x5827506e adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0x630110c6 apply_msr_data +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0x97e39838 load_msr_list +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/i2c/atomisp-libmsrlisthelper 0xf2be4c34 release_msr_list +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x0c5446dc atomisp_register_i2c_module +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x5a4baa8d atomisp_get_platform_data +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x779e47bc atomisp_gmin_find_subdev +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0x9e49cfc5 atomisp_gmin_register_vcm_control +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xabcb9de3 gmin_get_var_int +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xb155455e atomisp_gmin_remove_subdev +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xbae0e12f atomisp_get_default_camera_caps +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xbedc3972 camera_sensor_csi +EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xf8d6fddf gmin_camera_platform_data +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x06ae71f2 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x07c7802d spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x08c9f5b3 spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1a1a982e spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3e1dfcfe synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x590cace0 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x67b0197f spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76bb0bda synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x83d86040 spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84286d4b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8a56713e spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x996d45b9 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa27b1983 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb734cb9d speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb805d55e spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd13ee2da spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd23a261a spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd93829dd speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe5c2dbd1 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x5da88a16 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x6d888a8c host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x776af9a7 host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x7802fbe4 wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x96d8e859 chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xb2075551 wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xb8fdf0a9 chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/tee/tee 0x0fcad1cc tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1327aebe tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1342f24b tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1ee268a5 tee_client_close_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2baed802 tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2ee828fb tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x3da24dc4 tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x4f791081 tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0x6568fab1 tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x684dcc59 tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0x6bb105b6 tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x6eff0578 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x78db0ea9 tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0x7c6d9a7f tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x8108590c tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0x8324478f tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0x8948dc58 tee_shm_put +EXPORT_SYMBOL_GPL drivers/tee/tee 0x9da6faef tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x9e50d37b tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb6dceecb tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb885c6dc tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb93ff873 tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcdbc7305 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0xd4ec488a tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0x03b13fdc int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0x12871209 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel/int340x_thermal/int340x_thermal_zone 0x2f5b255e int340x_thermal_read_trips +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0x38ea5f2f intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0x432bca81 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0xbccedc69 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel/intel_soc_dts_iosf 0xc2032053 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x0f53a267 tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x17e0128e tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x29eabb41 tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x318565ae tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x432f27e2 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x476ec448 tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x47cfc74c tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e5064a7 tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e64bdfd tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5cb03072 tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x65d3113a tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x73ad2acb tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x785eb82c tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x92ca9d35 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9fe1951e tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa3d2b403 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa6955bfb tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb11769ab tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xbacf7549 __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xc9439150 tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xdd77a4fb tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe10c4852 tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe59e7e44 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf76028c7 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x019be4fc __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x08953b28 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x0a7b9e1d __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb52f702b uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x65de4ef0 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9f901318 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x102543b0 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc3c153f6 hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xe3bbfdb2 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0a9c5e9d ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0b1b58ef ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1ceebe5f __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x600c30b7 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc4931122 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xd566c3cc ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x41f0e2a4 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x50e018aa u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x5c2419a4 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x60b068df g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x97559ce5 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xa7540b21 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0527285b gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x070ba509 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x159662f7 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x212f5451 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3326673e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x48cb588b gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4a96359c gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5bee5efb gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x70104837 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x739e0da4 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8df86331 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb3671119 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd91725c7 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdaa34a10 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdd4f29ee gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x081a4862 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33abf8bc gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60db48f5 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x98277e26 gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb5f0a7d6 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc0a01527 gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x244dc19a ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x57f469c5 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xc475e6b6 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x26b72549 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x38a17166 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5a260126 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8fc9b832 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x921cf1bc fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9343964a fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9cc35812 fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa1fbec64 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xadf69b46 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb0dc7211 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc3600a3d fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc433de2e fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcd1d4b32 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd88e9e37 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdc54943c fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe5f1ba49 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4f21b0b fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0594ea00 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1c91994a rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x21289dcf rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x24d78c4f rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5745155c rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x67072ab5 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6c8e2e39 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x70885716 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7244e6a0 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x73e54e0d rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbec51ade rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbfb6097f rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc06c9b38 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd7c9605b rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe9dc1fff rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x067e001c config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x14582a33 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x22eb87d7 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x23d67d8d usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a997e08 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x490937f4 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5ec32435 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6669a74c usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x667de330 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x71746741 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7dac37d0 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x871ab77e usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8eb7ae82 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x904b7805 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x92a44ffc usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9754d889 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x983289c8 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9b9a2cc4 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9bceb4b7 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9d93636a usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9da4820e usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa407d23c usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa3ce8ec usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab73ffb9 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xae58044e usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb5fb0ff8 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb775db55 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf9766b6 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea76bee2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xebb22058 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf4286bd2 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfce64311 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x242d3512 gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x31d538da udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x38c96aa2 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x629d1f22 udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x7ef93330 udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xad7f89bf udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xdf48cd55 udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xeeff55be init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xf8cf53ea empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0269d245 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x06dc2a5f gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0c09f004 usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x15bc4d77 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x19960ddf usb_gadget_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x19e71a7f usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x204a88eb usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2a65ff36 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x34936726 usb_gadget_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x35d2d1c6 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ddbd04f usb_gadget_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x511b4108 usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x544266f4 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x662eba27 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6fa0b709 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7bb30760 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8b024f9d usb_gadget_wakeup +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x903ca34f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb5729e93 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc2c8f43a usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc475ac3f usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc6224813 usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdc4478c6 usb_gadget_frame_number +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe6a78b4c usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe73a9077 usb_gadget_activate +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x18d7e2e5 renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xd6d49dac renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x05cbf4ad ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xeded9f0a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x12b9cc86 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x144ce4aa ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x45cd8709 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x56ca1922 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5c032480 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5c8c585c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7a757db6 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa220dba4 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd0663848 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0c546130 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x1bab3bbd musb_queue_resume_work +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2734197f musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x48e4f803 musb_set_host +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x748758db musb_root_disconnect +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x9ca46687 musb_get_mode +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xda164f61 musb_set_peripheral +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x024e3229 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x9a9e90ac usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xafe4abdf usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xc09c22d2 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xcb40b266 usb_phy_generic_register +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x120a4490 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x06622e89 fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x2647d9de usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x636d9337 usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xeb506445 usb_role_switch_register +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x83ae9be3 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x05087f17 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1cbd2e48 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2303dacb usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2361a27e usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3e638cf5 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5240e427 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x627211f8 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x70c03f8f usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8061efed usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8c2b06e4 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x912f0fe1 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x96aa2c51 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1e65845 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa21344cc usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc6b4601d usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcb54d55d usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2c72af8 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe67af74d usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf27dc932 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf81d34e0 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xff2d507a usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x1323f0af dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0xadd658a5 dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xa62926a3 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x5042ef33 tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0d62b272 typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0d84a569 typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0ed41506 typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x14f36bc0 fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x19661d10 __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1a89d083 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3b75a71a typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3b8ed491 typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4035ba21 typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x418ef9a0 typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x500c30de typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x572d7612 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ee37092 typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x60311153 fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6b971c17 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e381153 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x81676a68 typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x8362fc31 typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x95877a04 typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x96cea214 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa3464a4e typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb0b9dc76 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb682986b typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb913d9a8 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbab76493 typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc14ed46c typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc741dbe4 typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc8f4e41d typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd3fdf2a1 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xdd890a7d typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe97d56d6 typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf5c60ec8 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x2776e1c8 ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x35aeed96 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x3b23870e ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x3da24c47 ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x799c6322 ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x7a80c038 ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xa9b276df ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xbc11e63e ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd8ab88ef ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf22bd472 ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x06acbb91 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x37e460d3 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x521d9f17 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x69d0ac39 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7bba2928 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8e69586a usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa3bb5dc5 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa513304c usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xabad08d7 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdac72456 usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdc94a0b0 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdf4c6be4 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf5619cb5 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x088af84a __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x316576f8 vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x90be667b __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xf8198731 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xfef2075c vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0xfc6be225 mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x054804ad vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x07115ac3 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x14c048f6 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1b59c334 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x206ff0a3 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x39da3a97 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3d0ee15a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x448d8382 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4d3a5d6e vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x523da2e4 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53332022 vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5604a2a8 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x569131bf vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x574b9885 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5975ca5e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5a3f527d vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x634989c0 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x66935285 vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6e9f59e4 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x720aa769 vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x766bc685 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d296756 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e68a444 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8f934ae8 vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9584b496 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x958a1ff8 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x95e18cfa vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xafa63c27 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb15a3a84 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc28bad7b vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc8dd9317 vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd5cc3d4c vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd629a83c vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdad6fb25 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe9c8aed2 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xebc4cdd3 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf3cb9861 vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8684694 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf9ed5ada vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0x2c63e051 apple_bl_register +EXPORT_SYMBOL_GPL drivers/video/backlight/apple_bl 0xdab0f892 apple_bl_unregister +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0937e51d ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x238baf64 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xaad2f0fe ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb1e286ea ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd9d73478 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf42947ee ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xff13f08f ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x5e37ae5e fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x52734273 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x6eac67d8 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x5613cbfa sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xa9e1dfb6 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x016e6c20 vmlfb_unregister_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/vermilion/vmlfb 0x90c018c6 vmlfb_register_subsys +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x0e1cee08 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x30cc9311 viafb_request_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x31469540 viafb_pm_unregister +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x70a7e81a viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4606f8d viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xb4f863e6 viafb_pm_register +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcaefb732 viafb_release_dma +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xcd538333 viafb_irq_enable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x0e338292 visorchannel_signalempty +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x4de03230 visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x56401853 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x68925205 visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x7887a0a1 visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0x8cb6c766 visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xafcd57f7 visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xb20a2dd3 visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xc0140fa1 visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/visorbus/visorbus 0xc455c651 visorchannel_get_guid +EXPORT_SYMBOL_GPL drivers/w1/wire 0x17ae5984 w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0x58fb4ea7 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x690319cc w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6e82f5b9 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6f541b02 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8e7e8ea5 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x99004ab5 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9bdd5889 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9cc9a647 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd0bbe474 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd95c2024 w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x370a62e1 xen_front_pgdir_shbuf_alloc +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x908cedb0 xen_front_pgdir_shbuf_map +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xb7f3ce93 xen_front_pgdir_shbuf_get_dir_start +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xef061bef xen_front_pgdir_shbuf_free +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xfbb7827f xen_front_pgdir_shbuf_unmap +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x04647bd7 xen_privcmd_fops +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xe51861e4 xen_privcmdbuf_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9be15669 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc67be9cb dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xfff28fb4 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x032d30f9 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x19d810c7 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1d1789af nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2fb27e86 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7dc8844e nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbe8d9a11 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf0be9e97 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02f32b68 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x036ed3a0 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x054007b7 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0701920a nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x083e3eae nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0df47fdb nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f87deac nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10643404 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x110aaafd nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x139d1fd7 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1506ded2 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15840e77 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19f6ba0c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b5f68ad nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ee28d8c nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20281575 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x214ff73c nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21e0235f nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2365b92d nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2467622c nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24bc6fe6 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24c3965f nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28ac7c0e nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29838eed nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ac3eafe nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2af332f6 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c7579ee nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e55a55d nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3115cde8 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3427d6ad nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34bba9a8 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38c93b15 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cc6a415 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dc4b96a nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e724bec nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4053d3fe nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x408340fc nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41aa9d39 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4463ab61 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4559a999 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45fbc7d8 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4861f753 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ae84f44 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4aec8138 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b1efa01 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b99bd2e nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bd71178 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c123ed0 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c575609 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d244b01 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61d4690c nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x634b0bf2 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6362e68e nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66bc7c8f nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68174606 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68f753da nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b611305 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6da0ee89 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ea4fb73 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71d4f7a6 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x730f6a37 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7358a64f nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73aa2e69 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76d340dc nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7742176d nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7758c5d5 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x776ee3b2 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79627ffe nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ba5cecb nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ef409b1 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f07e4cf nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x836826dc nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83f062c2 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x855b089a nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8663230c nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x870f98c7 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87e99463 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88e78583 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8997b5bd nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bf4d3c1 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92a81586 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92e60d4a nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9322dc7d nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98fb75fc nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa123cc98 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa465ce2b nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4b1c090 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5a89cf0 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6fe3fcd nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8abcded __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa3693f1 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9fde04 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaca49aa nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad0fbcf3 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb191af3b nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2ccc5c6 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb40064b0 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4bdf98c nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4bfc6df nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4f7ae9f unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f5c91f __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6b2c88 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbca6d4f1 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf788b1b nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc13b6926 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5de6577 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc962982a nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbcf70ea nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdb1c783 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce84a804 nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf42c7f3 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3ab5930 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd720a6a5 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9761532 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9a4e19d nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd7c57cc nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde3c4e7f nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdecf0cbc nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3156999 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe95af03a nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed259c54 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed440075 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeda8fbaf nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1fd31e2 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5657b5c nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf85f22e6 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8701821 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8cf441a nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfca47762 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe436ef9 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff4971b5 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x6f45919f nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x003dc0cd pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x02cba964 nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0625862c pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0914ce10 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ade27ae __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b156f59 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163831c3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x164730e0 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19c07699 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cdde079 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x208f5c30 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2172aa32 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22c060ef pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24647806 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2540b8c1 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25b7e9bc pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x29739e3f nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d0d03ac nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f961115 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34247d88 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x372f47c1 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x38608b85 pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39ac52fe __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7d84cc __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d22f7ff nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e5ea745 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40b08c20 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40bc3c6d __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x454b7fb0 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4cd01cb7 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52c98d55 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x585fb36c pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64d7feb1 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x66a9ad65 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69ced8fc pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b299945 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78ecf37b __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x887d6db8 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e6df0d5 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ed2d38d pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x909e6d3f nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x953a2eb2 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x957f1d23 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d7da80f pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9df353b8 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f2879a1 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa061c2ee pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0b861f1 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa24b4a8c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa319bfee __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa45a0771 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb672d4d5 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6f223d2 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9287105 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcf66c7e pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe383249 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0decf5c pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1d46a9f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2e3fd4a pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3940ebf pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7c77d08 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7e17c8b nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc96b277d nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd98c1e8 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce8dfde7 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf6d51a5 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6abbf28 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6ed7dda __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd964ffb0 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda0e113c pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbce017d pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc094961 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc29230a __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc7a6be9 nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf05942f __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe3755e16 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4f2d733 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xedf950d7 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee960d9f __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfaa707ad pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe239604 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x19530797 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x97d9ab87 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb4352803 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x7f164d80 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa6183d58 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b2435c5 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2d88dd2e o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x598bd6a1 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6da67f9f o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x724a013b o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8ccb4d0e o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbee202a0 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x05791b10 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x18cee3e4 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4605c415 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4c918002 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x887aac36 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9afa0305 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x11f423a2 ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2b2a48a4 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5f6566b6 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x903edaba ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x96d760c6 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xc3d2aed6 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x371d646c register_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x929a9718 unregister_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4b268e1c _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x6c9024da torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xeff40877 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL lib/bch 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL lib/bch 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL lib/bch 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0xeaf3cb23 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x7f376d08 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xaeadcbe8 poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xfa617389 poly1305_update_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x65ddf3ee notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x72c11f62 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x418b10cf lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xcdf1865c lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x2b2b5ba7 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x413f1240 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x655fcd1b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc839e756 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc94c6626 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xfe1f51fc garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x21e4b0ad mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9d4bb6de mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xb67d2e13 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xb6cfecf5 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc3438d05 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xf2f8ec96 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x97e4f3f5 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xe601813b stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x675673ac p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x78f77afe p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x30a70dd9 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3541ca8b l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3703a19b l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3ca3f389 l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5358ac18 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xaab60c5e l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xae906acc l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xca9c0c08 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf6402fda l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfbb3dbfb l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0xd7c30f83 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x00161a16 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0077621a nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x14ae14c4 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0x26e8570d br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3fc7fffb br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0x43b68140 br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x446976dc br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6016cc5a br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8a31b92a br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x98a153ea br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9c4c216f br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9e77bec7 br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9fee2ad3 br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa7fc9b17 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb71995d9 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf241cbef br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf485b6fa br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf7facb20 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/core/failover 0x52fe8e5f failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xc2895ae9 failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xe431614d failover_register +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01d7e730 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03d5805c compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0da93793 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1536ad10 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15a2a6af dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19b48f0c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2720b1f9 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27e7141c dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3aff6bf7 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3cf0f411 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ba64f4a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x505c6d8d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x52e0727b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f2a3e71 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x61a10dd8 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6372b1d4 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x71c8494b dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x722630de dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7a00557b dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7acd085a dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x847e362b dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c2324d5 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8d04016a dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x95112dda dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9d9bcb27 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2624a42 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa631599a dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xafd42123 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb49485ed dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4b239c5 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbe55d66d dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfd85595 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3b6a26c dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd270bd0b dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe55656f9 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xed73507d dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0aa36b65 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x29df22b7 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x75381a9c dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa99cd138 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdaa52aad dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf4de1eb7 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x11553d49 dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x146194dc dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x189bba52 dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x22a2e696 dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3640f537 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3c065e34 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x42e73f1b dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x477731b8 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x66db5d2c call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7246dad3 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7a0e0575 dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x80083b8b dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9b260f52 dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa404cec0 dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa48a67bc dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa70bcf28 dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd7f3db6c dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xded5c19c dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe3e2bd3c dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe74cb2fa dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xeca52feb dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf1a24329 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf4125039 dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x10669577 dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x46c421d9 dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x81141b26 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xdf17a65f dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xe31a5dfe dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xe5c509d7 dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xfde41ea5 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1aedd3cd ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x23fde97e ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2a36e26c ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xafa12db7 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ife/ife 0x437e8f1a ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x7050e9ef ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x65632e63 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x9d40f50e esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xdfbd8595 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0x3ef1e1f7 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xae02247a gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0337181d inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4f1b1f1c inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x64bfad2f inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6c1cd3db inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x79c1fb4c inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8e2f19f5 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd1d9cfa2 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd9c815aa inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xec1f42e6 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xcc931850 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x053cd71f ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x12888884 ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x46a80924 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5cb4877b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x668ece81 __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x66a6dad6 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x727bf690 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7a23a984 ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x85b5da21 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9805645e ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9d3036c9 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa08f966 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaea68417 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc4b5259a ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc8a3c07 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd2d77b59 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf609c5a6 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6314a662 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x3c64a6c5 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xb354200e nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xb7c1ea8c nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x1b5518aa nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x408d3f36 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5d24a641 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x6336ec18 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc603e73f nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x991bf5ec nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x75d67523 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xeadcebaf nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xf903d237 nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x7d6bcdaf nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x89491f58 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1d2a7369 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x80e5e2bc tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa9d6d98e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc8581370 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc866bf53 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x002458d0 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x294c2bf1 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x48ce1b5d udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x805b65f8 udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x827aa351 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x84552f1a udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xad20b9d6 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xbca5a647 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x2daeba54 esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x9b8987d5 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xd7c4ab01 esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x759fee8b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x86a0c55f ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe76d3e07 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xc00a38d7 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xff8ffefc udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x141cd0cf ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x3f7a180c nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x92aff3a2 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x16c05310 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x08ee2774 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3e697165 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x6abde15d nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc2b6af19 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc3d6c6cb nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x1e7c5485 nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x020fb575 nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xf27a466a nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xf2ec2674 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x02127325 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x8160a71d nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x10c91f2c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x40871dec l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x47bdf021 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4a59e38a l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4ec43f35 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x772f3aa5 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7fdfd8a7 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x85d981ae l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9709b7b9 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x99e6414c l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaa9ebf8c l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb6681729 l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb9096493 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc6e13e05 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc802721e l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd3d36df4 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe9c7c9db l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x253a041f l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0f70baff ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4fa383c6 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x504eefbd ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x52d019b3 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x539c1213 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x654e469b ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x73cb1382 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x769b8274 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x858efdd4 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9a609016 ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb122efda ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbea9b333 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc174bbde ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcc9837d6 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcd990c7f ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd30560aa wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd87b1b32 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe88e2700 ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x2cd22a38 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x68605f99 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x971cc190 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xabc98582 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xdd0c0018 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x03b0be7e ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x099188d3 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x31ea5fa3 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x36f1d89c ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47aaa883 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x64920b6f ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x66b82ffe ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x67b96be9 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x67e195f7 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7489759f ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa6f163b6 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xaae5251c ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb07ec6b3 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb4d0b03d ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbdf48c94 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd5836346 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe8314d71 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xedd5200c ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf2bd7996 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x588f1414 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x58cdbb14 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8b3253cc ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa372e065 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x1d8a7511 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3ff55ad3 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x5420f1b4 nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x5d6c7437 nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8c4cb9c3 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xcd4a35a7 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xd5c3ff5e nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a6a9ca3 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c6f9676 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0da6f43d nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17fac712 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x233eabb1 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26509b23 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a36345c nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x306a1d19 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3437a3ee nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3922d6dd nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39a7fb9d nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cd895bc nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x404076e0 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43e5046d nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x49900fb5 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a0462da nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x546743c2 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54820d8f nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b3b78f9 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c48f7a2 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d88ef36 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d9dd8e8 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5eca0297 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fe95f6e nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6771aa9c nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x684e6bd1 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x686429be nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x727edd5f nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72eb0a2f nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x781cee35 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f3c2d59 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fcc8d7b nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85821b62 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x85feb461 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87189fbd nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88734fe7 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8963a2e1 nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a6be007 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d1b35c9 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x903612a7 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9103592c nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x925676b8 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92da0c32 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94a3f412 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98b21ddd nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb7399 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9bfe97ce nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9cd73553 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa203fa03 nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa38214fd nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa59fcc98 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa685441b nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa726121d nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3fef43 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabcbbfe2 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac6e4deb nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf0847f0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb69778f8 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6c32efc nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6d8cdc6 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbebb79e9 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc20ea20a __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc912ec76 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca7a28ab nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xceb3f0ca nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1ce3145 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2873e94 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd30ff055 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3ac5952 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd58fd53d nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8bf7667 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda228109 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb69f81e nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba7326b nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1215780 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe480b76d nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6678029 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeddc1bcd nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3736489 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7fa78bb nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8d02f66 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf946b8f0 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcc16ad8 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcea5087 nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x33e3e9bb nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xc39c3844 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x6546875c nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x225ab7c1 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x41fab862 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x57fa94a7 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6727a45f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72bb3b22 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7c48c387 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb3f9a38d set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcaa422d8 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xef238064 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf1216227 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xc7490cf0 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0c8ff685 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x6028ab73 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb5fd738a nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xeba2efa3 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0212d25d nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0627d9ee ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x12efcce4 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3e147f00 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x66b79fda ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8bcd3373 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd7599960 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x972c950e nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xe67d2c10 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x2b5f3960 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x446b52a2 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x64c03a04 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x24a3cd9f flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x32823ff0 flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x375e21ff nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x3f4cdbd7 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x75ef219d flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x78ff72bb nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7f377dff flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7f37ab8c nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x81304414 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x980932bd nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9bd4b1c7 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9ca5a8b3 flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb2f0250b nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd48a2e71 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd9d3b57b nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xdf7e6776 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe7256b0c nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x20694a11 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x37dc1f68 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3e00211e nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x63cde9e1 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xaa457807 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe04146dc nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0014777d nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0cc19532 nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2e6a3671 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x30fcbc67 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x50fbb5bb nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5988c454 nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x598c96d5 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x675e94bc nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7b2da752 nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9658fcfe nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa69784c8 nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa99c0fc7 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaa57ba0d nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb8a868d1 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc32141ed nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc8d4cc5a nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x110117e7 synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x121ec8f6 synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1cd8d794 nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2986e51e synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x42533998 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4676065d synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4ed304aa synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x69086043 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x7fa432a0 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x89283e79 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xfcf889ae nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04c26b4c nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x092d0911 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x09488b2e nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0e2d7171 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x15b12ad5 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x16aaf7ec nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1a6f4353 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e41c3c5 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f19e8a7 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3046bbb7 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31f7305a nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3303b7ff nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3603cd2d nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36ea42e7 nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3f190bde nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46f57175 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58a1d209 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7692821f nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x89aa7953 nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x97b564bd nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa0f1f968 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa3f4b582 nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xafab1d38 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb8ea8268 nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbdcdb74b nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe811175 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc11d51a0 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce014f1f nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce8dd10d __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcfebbf7c nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe0d532e9 nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe4f484cd nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xea43cd06 nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed972531 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf8869b20 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0d329d68 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2c8f4c1e nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x466b8d50 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x573732fe nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x81787cbf nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x993171bb nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xb3732d36 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xc3a20e40 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xca23689d nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x2e7da041 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xdcfaf5ad nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x44279d13 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x873d7716 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xd2bad9d4 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xfda61f43 nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x0452054b nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x59aad4f8 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe39167fe nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0f258431 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1209fe9e xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x14b37d6b xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x27b9e1d3 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2e97b9d3 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x303e01d3 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3708c6a0 xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x372fc80d xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3842d251 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x38c09bf5 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3aade278 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4d8e58ed xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x53bddfc9 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6f64ce1f xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8a485f5d xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x91cd440c xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaea919c9 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc040d950 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc5355f24 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0129d9e xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xeb40a4b0 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x7a405914 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd9275dbd xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x41c27320 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x982983f0 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xbcc3dc1c nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x43e54751 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x58ed4137 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9625654d nci_uart_unregister +EXPORT_SYMBOL_GPL net/nsh/nsh 0x74bc1277 nsh_pop +EXPORT_SYMBOL_GPL net/nsh/nsh 0x76cd75f1 nsh_push +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x29cf1887 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2ead789e ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x374a8514 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3bee8fbc ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x490a6369 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf2d4d1c3 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/psample/psample 0x463a35c1 psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0x55058275 psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0x63069cac psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0x87e0dec8 psample_group_put +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x8beda3fb qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xb1209851 qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xe946314c qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/rds/rds 0x0089523e rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x115f52e4 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x17697239 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2222b7b8 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x2624964f rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2a19aa1a rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x33f3f568 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x37f89215 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3e05498b rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x43ce4e2f rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x474615c0 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x48f22ec0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x49b98c66 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x5aa89af3 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x660b5da1 rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0x72598f95 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x8d9d279e rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x92818e20 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xa347cb59 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa4aa3784 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xaa948f3c rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xb8795047 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xbf0f6a90 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc7dacd52 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xcb8b7590 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xedcd1de9 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xee4cc240 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xf3798490 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xfd22dd56 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x84c96179 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xd03403cd pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x379f411f sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0x47988894 sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0x6faddefa sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0xbb24ae42 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/smc/smc 0x3682a47c smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0x50423715 smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x7a504ffd smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0x86f5230c smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x9bc7d3ec smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xa66a0b7d smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0xc430435b smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0xdb0ca232 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xf6979f15 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xfa063324 smc_hash_sk +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x34026152 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9b93807a gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbb19d6ad svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe22122fd svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01fd127b xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03d24805 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0458645c svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05de65bf rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05fb0b27 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06197105 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086f561e xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09be5804 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a1dafcd svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d455504 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d992758 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f34badc svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fd7a895 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10efc067 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13736cdc svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13f33455 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15d886ab svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16e38cc9 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17c7a034 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18133d7b rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b0b6421 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b50f625 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c7d3ce5 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e436f9b rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e6d990d rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f4781c7 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fb12b6c xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x221c6338 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22e509cf svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23ad27f7 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23f4ca06 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x240355eb rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27e6798a rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a11bc92 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a5cb242 xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aadaac7 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b8ce500 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfd6d4a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fd64c0f rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31b722a4 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a7f715 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33bfbbb5 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34d184de rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3540af9b rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35b74f53 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3641d630 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37836b6a svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39873648 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a09e8eb rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a0d46e4 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cbacdf2 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d709743 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e6194aa rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e9aae86 rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f5c6d63 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x409d3a60 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45d20fd6 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46f97a5f rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x472fe4b7 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47fa6be7 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x499bcb83 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a38538d xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fe4b294 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x507ca88e xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51eba653 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x525d6378 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x544ce9bb rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55148497 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55699ea1 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x577a23eb cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x579751f6 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5809979f xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59210590 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59f861d8 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b9585e6 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d25b8a7 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d32c030 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e5c7152 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60aba3fc cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6122e62d rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61e2f251 xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x629d0b76 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63fc775a cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65420eab cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65ec2a19 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66a94afe rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ed2439 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6700c861 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x672f5a9d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6818dbe6 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69651c43 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x697c0e14 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c7e01a9 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d76b011 rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6df00fcf rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bc40e3 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7234b35a xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x734bd668 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x742b431d read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74eff458 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75d3c31a xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x760eaaf7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79120216 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ac49e0c rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7beda355 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dae1131 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e271286 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x802e5ceb xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x814b5f03 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f32022 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83b1f58b rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8442bee2 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84f18872 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x882538ed gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x883d8f75 svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8911a00e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89ba2378 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89ce00ae rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a76c3ef svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b21f15f xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c7b8868 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cbf8554 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cc8ea26 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fa9775b rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9063da53 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x914b8d97 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9154a857 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x918e6ffd svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91bef59f xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9249ccb7 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93e53e8c xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94b95a67 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9670b5a1 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99aee353 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a65bf3c rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aa690c6 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cd0a7d1 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ce4f346 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2043b8c xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22348f4 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2fbc0d3 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5b47255 sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6b3aace rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6edc0a7 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab09b6f0 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab3db2a9 rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac82ce01 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadd8af31 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf68ce04 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb12a4525 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb31775a8 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb376dc1a rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3aafda5 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb53aace1 sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5a2f0a7 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5ba387e rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5edb68e svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb60da066 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb62dfc3f rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8a33c5d rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9c6ad93 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba5c226d sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbabf7523 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbacae400 svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb3b688c svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb48e617 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb72feb9 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb8c4766 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc6d0bab rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe1defef xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc3bc32 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc028f2bc svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0e862ee xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0fa0abb rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc13a1e28 xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3b08691 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3d0dc1c rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4c5e336 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc77b160c rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc826cef5 cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8ffb4fc rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9743663 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc982a427 svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca34ace8 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca7f7a56 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb523966 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccabd8c7 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccc0f318 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd78d8e9 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcebea0d8 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf0b060f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf3d1700 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfe3b5a6 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd066ff63 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4e979d4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd529fffe svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5b16ebf rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5fd02a2 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9f359aa rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda4d964a svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbc88cd3 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc02424f rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc18ddae xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd936749 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde0dfc03 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0347d83 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe407b8d8 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe410e456 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5fc61e1 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe664aa67 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe78f3753 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe79de866 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7e67317 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe94fa6a7 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec6553f7 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedde0d8e svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b69b8e svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b7775d rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf168ce76 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2b5a81a rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf74bb320 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf82ee666 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf83f5390 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d90caa rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa70bc0 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd3cc895 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe6587f1 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff8992a6 cache_create_net +EXPORT_SYMBOL_GPL net/tls/tls 0x55d4c378 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x9208ff8b tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0x991722f4 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/tls/tls 0xbcec46d3 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03b34a4d virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x062e9988 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0a74898a virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x113024cd virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1f3c6539 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2fd124e3 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2ff6a53d virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x3e34d996 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4be3c26c virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6c7e2736 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6d53457e virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x73363edf virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x779d4882 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x796e8e0d virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x89264173 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9826837e virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x98992354 virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x99b0e8b9 virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa0c075c2 virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xaba70219 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xca331fe9 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd1416919 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd1c0ecc8 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd518de1b virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd9bbb041 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe0252c2d virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf3f3f7c2 virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf4e3b73d virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf54113cf virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf5ea73c8 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfee80c5c virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x087a8d03 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b073546 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x36592ca2 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4186c306 vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x422415c7 vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x570f971b vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5a73d2e3 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x64c5ca65 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6ec8fdeb vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7c898e0b vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb9171783 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd14a893 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbe95fde3 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbf47d9e2 vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc5aa7089 vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc92f7f50 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc9d148a0 vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xde495010 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe3ad4d26 vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf94f7379 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfc16d45c vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x21b4da43 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x29c963b3 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2a0a0131 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x416fe487 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x44fb8e17 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x66ca525f wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x724ca7a0 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9a9ea970 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9e6a689a wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa24b62f0 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdf38a1d0 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf2b015c1 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xffaf2903 wimax_dev_add +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0114f1f6 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x09d75ac5 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x332f7d1b cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4318394b cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4c6adc2c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5e98678f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x630138e8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96899971 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa0134d52 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa6ecd4ec cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xba92dfb2 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd28ab119 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe237ec7e cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe9574dfb cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeca6d5de cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfd3571dc cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x26b4540c ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x901f7eb9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xaff59793 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xdc14558c ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x9bb36404 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd 0x0d1de6e1 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x1b1cf0b2 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x4719c0fb snd_card_rw_proc_new +EXPORT_SYMBOL_GPL sound/core/snd 0x56dc9747 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x6006d805 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x6b6e38a6 snd_device_get_state +EXPORT_SYMBOL_GPL sound/core/snd 0x84a0a88a snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x8ae9b68c snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x9d921fd3 snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL sound/core/snd 0xb468c440 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xe0eb9f77 snd_card_disconnect_sync +EXPORT_SYMBOL_GPL sound/core/snd 0xfa4aee57 snd_card_ref +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x0c7402cd snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc3c0d5cf snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd8fe171f snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xede2c174 snd_compr_stop_error +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04787fc7 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x54d2f9b1 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x689e85cf snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6a10fe17 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8c73b072 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x97c3084c snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb5c8bcec snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbf780c36 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc012c539 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xec194a35 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x054db6c5 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0ca7f903 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x227396ac snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x604df938 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6e01c742 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7664df3e snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa2991d5a snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb1289b0e snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xca2637ef snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xeb5dac61 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xec85d15c snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf1c23946 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x7dcf9518 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0xd9f34852 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1a2d6f61 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2da92f25 amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2fdaf450 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x35f62f4c amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x37a845b8 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5944499f amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6426d73e amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x68de65ab amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8d8de846 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa4092d7f amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xb507362b amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xd1de25bb amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe9935921 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x0df6f98c snd_hdac_ext_stop_streams +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1712594c snd_hdac_link_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x1997d936 snd_hdac_ext_link_stream_start +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x20d0f48d snd_hdac_ext_bus_link_power_down +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2864adc4 snd_hdac_ext_stream_init_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2aa644ba snd_hdac_ext_link_set_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x2af569e8 snd_hdac_ext_bus_ppcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x32f19541 snd_hdac_ext_link_stream_clear +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x35a5c6a7 snd_hdac_ext_stream_get_spbmaxfifo +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x3c0a8230 snd_hdac_ext_bus_get_link +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x40159cc2 snd_hdac_ext_bus_device_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4115a065 snd_hdac_ext_bus_get_ml_capabilities +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x42392ca7 snd_hda_ext_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4455a453 snd_hdac_ext_stream_assign +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x44ed94d9 snd_hdac_ext_bus_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x4de4c437 snd_hdac_ext_stream_set_lpib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x620490cc snd_hdac_ext_stream_spbcap_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x62af29f6 snd_hdac_ext_stream_release +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x67a91165 snd_hdac_ext_stream_set_spib +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x9439da32 snd_hdac_stream_free_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x94ab81f0 snd_hdac_ext_bus_device_exit +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0x99b30208 snd_hdac_ext_bus_link_power_up +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xa508c4a6 snd_hdac_ext_bus_link_put +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xab48e878 snd_hdac_ext_link_stream_reset +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xac028f3d snd_hdac_ext_stream_drsm_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xacea2335 snd_hdac_ext_bus_link_get +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xb07120a1 snd_hdac_ext_bus_link_power_down_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc106665a snd_hdac_ext_stream_set_dpibr +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc5f287c1 snd_hdac_ext_link_clear_stream_id +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xc8326498 snd_hdac_ext_stream_decouple +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xdc409249 snd_hdac_ext_bus_ppcap_int_enable +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xdf41f89d snd_hdac_ext_bus_link_power_up_all +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xe230654c snd_hdac_ext_bus_device_remove +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xe44e533a snd_hda_ext_driver_register +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xe764224f snd_hdac_ext_stream_init +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xf2a35afb snd_hdac_ext_link_stream_setup +EXPORT_SYMBOL_GPL sound/hda/ext/snd-hda-ext-core 0xfdaccad9 snd_hdac_ext_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x00b56e3a snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x014854e4 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x031bb3ff snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x03c2e029 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0918118a snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0c02463d snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x17bcdb9a snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2289d4b9 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x254601dd snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f4a9b09 snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31356526 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x362def7c snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x369f88d3 snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3925a46b snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a30a910 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a69a53a snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bc949f4 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ccfd328 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3cdbf399 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3de8c289 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40d63e24 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40e600a2 snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42a72693 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x445190f0 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c5b2998 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4d7f5332 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4ed487d1 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5037050c snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x51f7412a snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53b64983 snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57f7862d snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5a1383f7 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c239e34 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c27787a snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61a106f9 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x639bd29d snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6715d20f snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x686d69be snd_hdac_i915_set_bclk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x704aab81 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72adff36 snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79af87ad snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87004635 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8759dcbf snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x885a61b7 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8acd8695 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ce00308 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x911f0b33 snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x98a4c637 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a32d1c3 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9b4465e1 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9b8b951a snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1edd9ee snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa30482a2 snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7a337b8 snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7e226cf snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaaf524f7 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xab177937 snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad1dc995 snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad7f84b7 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2ff4a36 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba47038b snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc6a2f4c7 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc7058f63 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9ee90bb snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf2ed5c9 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd07b7f74 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd07b9bc9 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd08653ac snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd12dd8e8 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd14adbef snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd2839c4f snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd9bdba12 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdac0b90a snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdffcd9a5 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe59459ea snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7a84225 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7f4ecde snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeeae8660 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef48926b snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb83db34 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbeb16be snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xffce1465 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x10078b86 intel_nhlt_get_dmic_geo +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x2778f4db snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x4e859456 intel_nhlt_free +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0xb72dd89f intel_nhlt_init +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x26eaa514 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x37c4c555 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x419848bf snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x77e3c5c3 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb54c27a0 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe0017b50 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0140ec80 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a3a5fd1 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cedd80d snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e6a4f5d snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ed5398b snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f51f127 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f9bfefe snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10cdca97 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11afed83 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11d993ff snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x120403a7 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1401225a snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1703d0f1 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x182ad539 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1938db51 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1df3656e snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f9e7859 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2108aa50 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x212898cd snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x222fc47e _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x242342f9 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b9053c6 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bc30c81 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c995643 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e0bf7f8 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f30b539 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32f09e18 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34f276a4 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38cf79d0 snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4302b0dd snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4338c30e snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4417193e snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x458651a7 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x486027e8 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a501657 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cb110d0 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ed6c761 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ee4bcf1 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f2a5395 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x523718be snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54051587 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55770834 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x561eff59 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5718fcbf snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5aa9d76a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bb1a5e8 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d1b2980 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d2a13d9 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d608152 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63275e2e snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6453b544 snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x659148c1 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66565b01 snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69024f1d snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69f21253 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b2a42be snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c68781d snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7289905b snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77fc077e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b45d2ce snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b4fae9f snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81dadbd0 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8233fb75 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x832225c0 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84c8092a azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84c92236 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85e25c29 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88e6e728 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x938d6d4b snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94132ae2 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1fc36fe query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa495775e snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa80c7bff snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa938d585 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa03282a snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaac78d1d snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab824fec snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac3f9154 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac9c5cd2 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadb614d5 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadc0b85c snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb206ca93 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb50ee284 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6d07fd5 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8cb5f75 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba2a05e8 snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc11711a snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbce8bda5 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc03618b3 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1beb31d __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc21513f8 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5489705 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc66b2d6b snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7cc3b37 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc884432b snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb13596c snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce24dcc4 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcef60415 snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0547981 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd38e93a1 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5da35e1 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5e8e960 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd663b871 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd670efcc snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd787ec9b snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd95b1dc7 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde78b436 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe17de261 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2342fb5 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe278eec8 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3516f95 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4e65ce6 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6105760 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef7038e6 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf113749f __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf27ebaf2 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf45a1bdd snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9469b51 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa1d83d9 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe8ca029 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff958496 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1c31a7c8 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b030911 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3458d86d snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x386905fc snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x59d7ae1c snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5b537b5f snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5d1810c3 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5df33765 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb039f300 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbc61cbf9 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc3828e81 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcd61bf41 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd38f9d8b snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd654d2e0 snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd27bbfe snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd2f3ff7 snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd7385fd snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe604e33e snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeaecb408 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeefcf489 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1fb411f snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfbda8d27 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x1484aeaf adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0xe1e77968 adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x021fefa3 adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x0e856202 adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x39089c77 adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x3e493276 adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x83e9065e adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x859ad241 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x97bb7122 adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb667aac7 adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xf8291af6 adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xff2ef9e7 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x34edb9dd adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x56de3df6 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xcdf037a1 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x0f35c118 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x294556d7 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xbc4d7e10 cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xbe35ae65 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe2823aaa cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x4e39a392 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x8b6959cb cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xbc921121 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x4c7e1308 da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x7ddb662b da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x95cc3044 da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x181bec6c es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xbbdbec96 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hda 0xdd9e9ce6 snd_soc_hdac_hda_get_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hdmi 0x7276f0d8 hdac_hdmi_jack_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdac-hdmi 0x875914eb hdac_hdmi_jack_port_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0x8cfd91f0 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x87a83943 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0x26441ad1 nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8825 0x764081fc nau8825_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x22d8db73 pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x610aec25 pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xb9151249 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x0656f109 pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x66ba400d pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x79b26d4f pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0xb208d01d pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x507e0caf pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x70a9b8dc pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x97f6b0ef pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x9a8e6aaf pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x32bca889 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4cf88867 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x72032e03 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xc3a8759d pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xa7aa810f rl6347a_hw_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6347a 0xade4bf4c rl6347a_hw_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt286 0x3461df2b rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt298 0x7f2ff174 rt298_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x61ff58e3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xff87892f rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x251e7a09 rt5640_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xf3a905f4 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x70cf0c18 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xf88f3955 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0xed16c539 rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x4c24e4e5 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x5db164ac rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x7f99f328 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xddb4d0ca rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x66057b04 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x5fc320ad rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x67956035 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xc6695825 rt5677_spi_hotword_detected +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xe8ece129 rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x120ac312 rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x49c3d97b rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x4eee237b rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x58b54d00 rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x59d3d967 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x666fe83e rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x6fd365fb rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x97a6e2d2 rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xad9ea1a0 rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb382f603 rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xf488f32c rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xfe0e112e rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x0390d323 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x51bafced sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x79bb781b devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9f4d0349 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa297981b sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x12d8d6b7 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0x71794b04 devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x15bec33e ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xe35907e2 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x1fbecde4 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xbf48f1e0 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x92a48d39 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x973be68b wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc0cc2fde wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xfbed5c4b wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xfc70e752 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7987db60 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x53ed90be fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0x12093dc8 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x03a2276f asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x1281f21a asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x31cc153a asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x360eb2eb asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x4c30d25b asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x5435c37b asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x546b524c asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6eff2f3c asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x7de3d395 asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x87c6a06a asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xa20922a8 asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xaa2d97ff asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xaf77526a asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xb2f03836 asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xb3590d30 asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xcf627033 asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe1f51f49 asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe59a57d4 asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform 0x50680da5 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform 0x810c27d1 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x29103005 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x709cd25f relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x7b4759ab sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xa756f37c sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xd7708799 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xdb832893 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x019b3122 snd_soc_acpi_intel_cfl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x1d21a3db snd_soc_acpi_intel_glk_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x1f80ea06 snd_soc_acpi_intel_skl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x2b5d28ad snd_soc_acpi_intel_baytrail_legacy_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x2c947a0c snd_soc_acpi_intel_icl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x33ba323b snd_soc_acpi_intel_kbl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x3719c4bd snd_soc_acpi_intel_broadwell_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x3aaabc6d snd_soc_acpi_intel_haswell_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x49ee336d snd_soc_acpi_intel_icl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x5b401a9f snd_soc_acpi_intel_cml_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x5bf374aa snd_soc_acpi_intel_cnl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x70f4b115 snd_soc_acpi_intel_baytrail_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x7288ae6d snd_soc_acpi_intel_cnl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x7beb3f35 snd_soc_acpi_intel_cherrytrail_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x814c0dea snd_soc_acpi_intel_tgl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x862d7081 snd_soc_acpi_intel_ehl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0x98304585 snd_soc_acpi_intel_tgl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xc628a218 snd_soc_acpi_intel_cfl_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xcb73619c snd_soc_acpi_intel_bxt_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xcfbf7257 snd_soc_acpi_intel_hda_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xf45a3960 snd_soc_acpi_intel_cml_sdw_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-acpi-intel-match 0xfc535677 snd_soc_acpi_intel_jsl_machines +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x032f1849 sst_dsp_register_poll +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x07132082 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x097ce8cf sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0acd6a3f sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x104540fc sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x11094708 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16e86983 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1d18e078 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x35fa96f8 sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5590aba5 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5b3f81c6 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x69551fcc sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6a8cf0f5 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6d1426ea sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x70ff16ed sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7d2fe776 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x85387dac sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8707be0b sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x87cdf7d2 sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x90d82664 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x916b1f1e sst_dsp_shim_update_bits_forced_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x96008201 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa279ba58 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa35ac26a sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaa15dc9a sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb0d19687 sst_dsp_shim_update_bits_forced +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xba5a2d61 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc3be1c62 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd72a34c2 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe4265200 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe9c6de99 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xea0ab8b2 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeea6fe78 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xef3e9b67 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x03cf27c7 sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x081fdcb4 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x13f21e54 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x16f4cd8d sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x23b972eb sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x2f5c9aa9 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x5c2afff9 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x61d5b0ec sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x64490e59 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x64bb9333 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x67005499 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x7627ddba sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x7bdb4016 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x7caf708a sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x7fcb27dd sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0x8149d1ec sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xaa494ee1 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xadb44945 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xadc2adc8 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xb9ec2573 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xbf6e8f67 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xcbba5e1c sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xcd58fd45 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xcd764289 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xd559cdb0 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xd7955365 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xea5730b9 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xeb89af13 sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xf3584d47 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-firmware 0xf7b38370 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x061a181b sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x49828734 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x57b34587 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x64b6c1d0 sst_ipc_tx_message_nopm +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x7d31d39a sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x81b3c79f sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xba55d677 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xd2b43f42 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x1929b5d9 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x8fe64b36 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xb40ff91f sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x6c5d2bcd snd_soc_acpi_find_package_from_hid +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x8795d901 snd_soc_acpi_find_machine +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0xa2585abc snd_soc_acpi_codec_list +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x025966f3 snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02dc9bd6 snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x031652c7 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0373411c snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09369156 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a5990e2 snd_soc_dapm_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bb9979c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bc67934 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c4597ed snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d6420a1 snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x110949dd snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13616212 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x147f31c9 snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15fd2e9e snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1855d610 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19aec840 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a3ed231 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d9e64c2 snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dd0afa1 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1de8c587 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1eb522c9 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x238073d8 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x244e8715 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26b55b15 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26e2dd45 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27b8ab26 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27d733d7 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x294773d5 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ccf4523 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f24412a snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x305ce93d snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x335770d8 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34c19387 snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34f343ea snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35516856 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35c075a4 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3690a164 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37808908 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38a73b60 snd_soc_find_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39281cdd snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39494ab8 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39a0940c snd_soc_dai_active +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39b5ece6 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b67aaf5 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bf5e103 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c03ddeb snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d58c5b0 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e54fab0 snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ea22b84 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ee006e1 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f2bbc0d snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x416306be snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41fd3970 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42e5b6e6 null_dailink_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x443ea2bd snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46a6cd77 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47298b1c dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4783fbeb snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47922d63 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x485d788f snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4898993b snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4918cce3 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49af251b snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c38e0e8 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4da84072 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f272678 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x512d547f snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51adcd38 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x524e49ba snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52b96153 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53e82416 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55abc5da snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55abc608 snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b6defe1 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ca7d34b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f45719c snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64650942 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x650c98ab snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66492ca6 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67ecc537 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x698312d9 snd_soc_lookup_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6998890c snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c589b00 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d679162 snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d69fe2f snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e3265f2 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e416f0c snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e829cd0 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74938775 snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74dad8f1 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76258ca3 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76d3e5d5 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79b7ad9f snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7aff1339 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b7f3e0a snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c91f2d7 snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d7e5873 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e08f275 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f432f78 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x808d831f snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80e8fa54 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82dcd2ec snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83156792 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8560e2d1 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88a02140 snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b76fc37 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d42c697 snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x927fc4b7 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92fea899 snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9340f984 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96765b25 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97cc8d16 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x997a6781 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a5e0503 snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b00d59e snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e4ddf85 snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f158086 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa05a7363 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3be1a88 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4597186 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4ab9606 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6e9b55c snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7271b23 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa755abc4 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9b47730 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac30a8a8 snd_soc_runtime_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacb08ba4 snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb06cf37a snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1f09bbb snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb27495cd snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2e73bf7 snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb36d519e snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb44c9e0e snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb48f16d7 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4e4fa9b snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb659966b snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb73821bf dapm_pinctrl_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb79eb6b4 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba2b171c snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba48c11e snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbad8eb0d snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbba559f1 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbec8f1ee snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc017a51e snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc184a3cd snd_soc_component_set_jack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3021e7a snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5da71b4 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc696ecf3 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc70a6995 snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc92198ce snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9a3053f snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb7b79ae snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd080af3 snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd926a73 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce115609 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce1d8b2b snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfacc87c snd_soc_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd21592c6 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb773f79 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbe3b6ee snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf68f8c7 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe00e7c42 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0d2e3f5 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe136d644 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe411c5d8 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4b1fd07 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5dffccb snd_soc_dai_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6131c85 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe929d93e snd_soc_add_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea19b424 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeafeafc2 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedb3a6e9 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee7fab36 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef05a269 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0445383 snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf149bb83 snd_soc_get_dai_id +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1e765e4 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf34907c9 snd_soc_component_read32 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4e09030 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf679f4de snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6c0e99e snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6d10a20 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf732ac02 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7c90d90 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb91354e snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfbdf162b snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcbc6a11 snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd45bc64 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe8abf55 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x09e08f30 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xaab455dc snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xca5f9cfc snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xe2a0baae snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1021155c line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1db29958 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2b62397c line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x38f845c8 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x76e2c2cf line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x771d4a2e line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7721c7f6 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x83827934 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8d57010a line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xafb099a4 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbace1970 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc23a9bf0 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcd10f86b line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd1265a0d line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdf5560bb line6_send_raw_message_async +EXPORT_SYMBOL_GPL vmlinux 0x00083217 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x0013071c regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x001b074f mce_is_correctable +EXPORT_SYMBOL_GPL vmlinux 0x001c26ab gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0023a9bb regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x00276536 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x003b79c8 fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x00485921 dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x004a1321 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x00531a17 xen_xlate_map_ballooned_pages +EXPORT_SYMBOL_GPL vmlinux 0x00565f18 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x0061e57a free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00643297 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00804761 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x00812205 gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0x008539f0 klp_shadow_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0089daf1 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x008d9029 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x008f79ab xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x00991b3f blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x00bcfcf2 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x00c0aace perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00c39521 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00cb47dd vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x00ce6508 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00da4c84 br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x00df9837 ioasid_register_allocator +EXPORT_SYMBOL_GPL vmlinux 0x00ed7bb2 cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x00ed9f1b __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x00f49c36 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x0101f2aa devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0x01023d1e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x010a839d xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x01236e15 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x012d8d9c relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x012e730e apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0x0144e7fc cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0149a3aa md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x015564e1 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0x015fd5f0 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x016d82ee of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x016fcddd platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x017c52f1 vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x018b3d1e intel_pt_validate_cap +EXPORT_SYMBOL_GPL vmlinux 0x019506cb bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x01b10fca ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x01b33b5f devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x01be5495 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x01c12c32 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x01c1ed0d icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0x01c8f74c of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ee5532 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x01fabb24 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x020c1e43 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x02166e3f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x0217543e security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0x023372f3 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x023b4d33 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x023d299f perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0x02413817 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x025000a9 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x0255ec63 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x02772a98 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x0282f914 usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x028fcbd0 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x0292396e ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x029c15aa usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x029f80c6 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x02ae7e9a l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0x02b8477a dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x02ca0f76 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x02e4fbf8 proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0x02e8cc66 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x02e9754e tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x02ec420f kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x02f7252f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x02f7e4f4 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0308a339 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0313e4b5 path_noexec +EXPORT_SYMBOL_GPL vmlinux 0x031e8afd platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x03269da8 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x03407ad2 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034a4c2a vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x036013a9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x03876479 dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x03909275 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x03a1cbc3 xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x03bffe9a phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03c3c886 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x03cb8922 devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x03cc6584 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x03cd3ff9 iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0x03ce058e task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x03e1ab91 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x03e84150 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x03ed88b8 dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x03f2980c usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040e1962 x86_vector_domain +EXPORT_SYMBOL_GPL vmlinux 0x040f1418 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x042cd022 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x0430ff02 kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x04420eaf srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0443c2eb sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0446bb67 mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x045bf315 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x04609a4d xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046eb93c fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0x0472f4c4 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0477ec4c crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x04790730 edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049929c0 hv_stimer_free +EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04db70d7 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x050a4c73 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0510e009 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x05281397 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x052e634c iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x0535913d strp_done +EXPORT_SYMBOL_GPL vmlinux 0x05444e05 mmput +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055d4f75 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x05665c83 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x056acaa0 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x056ca3a3 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x056e405d security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058f9366 apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x05940f77 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x05a5856b __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x05ab4202 phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0x05b260fa __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x05c21bdd gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x05c70748 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x05eddd39 dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x05f53eeb skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x060075dc bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x061203b9 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x061b1349 __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062f3806 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x063c6205 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x0640ffd0 devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06523566 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x0671d86d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0677ddd3 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x068d79ad usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06e480fd devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x06fa5fc8 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x070977c2 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x072b1a68 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x0739c38e wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x073d764c scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0x07413b77 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x07483e75 regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x0754f147 clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x07573d38 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0x0761b625 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x07827cdc pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x07884ee9 acpi_pm_set_device_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x079302b2 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x079ab9fe blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b64d81 hyperv_stop_tsc_emulation +EXPORT_SYMBOL_GPL vmlinux 0x07baad72 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07c23703 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07c25812 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x07cb43f3 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x07d8dc41 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x07df83b7 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x07edeba7 hv_free_hyperv_page +EXPORT_SYMBOL_GPL vmlinux 0x08087637 iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x081bc5a0 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x081ff359 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time +EXPORT_SYMBOL_GPL vmlinux 0x082a383b rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x083c7e4d set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0840277c pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x08453a03 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x08496d41 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0x08560aa1 __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x08795a28 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x087bc451 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x08b16c42 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x08b52c64 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x08c208cc dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0x08c9266a rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x08cbda0a acpi_data_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08d8dbd3 dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x08de865e inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x08f1c61f disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x08fc2e19 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x0905282b metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0907d14d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0925493f clear_page_orig +EXPORT_SYMBOL_GPL vmlinux 0x09337cd0 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x093786cf synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x093cdee3 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x09632c95 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x096a7e6f x86_spec_ctrl_base +EXPORT_SYMBOL_GPL vmlinux 0x096b2418 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x09770c36 icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0x099285a7 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0x09935a58 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x0997f13e regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x099d5823 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x09a5e501 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09d63265 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x09ea3c7c rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0x09f7d24a edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x0a032a9e iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x0a0c9d45 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x0a1d82b0 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x0a243600 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x0a27bbaa spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a502c98 dmar_platform_optin +EXPORT_SYMBOL_GPL vmlinux 0x0a56e8c9 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a571d77 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x0a57c5b3 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x0a5db566 iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a6e87fe adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0a739293 phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x0a864a5b pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x0a96ffb8 nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0x0aa48f71 extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x0ac0cf2e kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x0ac13016 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x0ac8da67 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0acc2ade pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x0ad137d3 lpit_read_residency_count_address +EXPORT_SYMBOL_GPL vmlinux 0x0adcf594 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x0adedb0f crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0af3978c crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0fcbd5 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x0b1508c2 acpi_subsys_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x0b1a461e devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b1e76c1 fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0x0b22e204 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x0b23fc31 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b4584b1 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0x0b476608 device_match_any +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b60f0ec acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x0b61cba0 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x0b63877b bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x0b7a7ba5 tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b899826 dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0x0b93458f __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x0b94493b irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x0bab6f52 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x0bc49335 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x0bca66c5 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0x0bdcfa47 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0c04e0de usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0c0d989f dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x0c15f3ab sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0x0c1f1b11 i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c46f156 __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x0c5ce4f6 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c659569 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0c789e05 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c9a295a pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x0ca0e881 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x0caec03c ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0cb579c0 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cc3b29e acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x0cc89964 bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x0cd40973 serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x0cf1affe tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x0d0bf692 fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x0d116ad0 __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x0d31e52e sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0d32aa48 crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5618dd register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0d64e3fa usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0d76d549 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x0d81b6ce fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0x0d85967c devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x0da09823 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x0dbd1ed7 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x0dc349a2 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dcb3ee8 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df10a54 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0df9de48 trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e05f244 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1bc5d2 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0e1ff7d8 crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x0e2a11b0 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x0e3ea190 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0x0e535bab fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x0e54ea4f synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x0e92f01c iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x0e950669 __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0x0e984044 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x0e997c6e regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x0ea5cbce xen_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x0ea9b1f0 ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0eafcfea device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x0eb0bbf9 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0ec096b0 hv_read_reference_counter +EXPORT_SYMBOL_GPL vmlinux 0x0ed1abee crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x0eef3387 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0eef6b53 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0f0b21fe pm_trace_rtc_abused +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f2a8d25 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f3058a4 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x0f31c40f ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f47d9f6 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x0f4cf743 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f4ec383 devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f5ae8d9 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x0f644600 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0f8c4038 led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x0fa77eb2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align +EXPORT_SYMBOL_GPL vmlinux 0x0fc37562 amd_smn_read +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fdd595d spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0fe1727e adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x0fe7617c __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x100fed20 crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101732f7 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1038b96f adxl_get_component_names +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x1089e218 __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x10a54a64 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x10c0ce1f espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x10c1c558 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c5a258 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x10c9c0ee __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x10e61605 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x10e8ec3f acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ed4892 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11075d05 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x113259c8 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x114746f5 extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x11501693 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x1172d487 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x1185c249 arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11cb2e45 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11e06ee9 badrange_init +EXPORT_SYMBOL_GPL vmlinux 0x11e08f96 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x11f5fc63 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x11f9a1d4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x11fd644b anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x12030fd2 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0x1211eb14 regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122caff4 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x1234ffa1 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x124cd645 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x124d255c inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x12614366 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1262ae70 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12817edf crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0x1291198b genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x1297ef4e raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x129ce117 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x12a19fd6 xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x12a1d62f od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x12ab31f1 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x12bf6c8c platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0x12c9d8e2 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x12cce294 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12def3f4 devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0x12e285ec is_uv_system +EXPORT_SYMBOL_GPL vmlinux 0x12e30e98 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x12eba01c devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x12fcc187 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131a6978 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x133bb7e1 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x135265f6 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x13591355 i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0x13596c13 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x13c19ee7 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13df808b serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x13e3aa9a smca_banks +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1401b044 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x1402e5f1 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x14030bdb __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x141225b7 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x1418238a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0x141a0464 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x14252711 crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0x14294069 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x144e7204 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x1459a7c4 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x146273e5 pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x14777500 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x1486e7da perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x149db3f0 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14de01d6 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x14e1e16c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x14e69492 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x14ec4fdb evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x1505255b regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15185987 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1523261d rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x152b7e1d iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0x152fdfac iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x154c01a1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x1558d29c security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x1559c019 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x156c82f2 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x156cdac8 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x1578c20a fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x157a8bec __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x159b81c2 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x15a4965f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x15b9493c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x15c1ad9d dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x15cf672b virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x15d7c044 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15ea7711 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1608c310 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x1608e366 cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x160d7a14 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x160da6ac __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x163d9993 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x164a341a kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0x16516798 osc_pc_lpi_support_confirmed +EXPORT_SYMBOL_GPL vmlinux 0x165de5e8 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16623712 xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x16691d01 regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x166a7b5b battery_hook_register +EXPORT_SYMBOL_GPL vmlinux 0x166d6443 __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x166db1b5 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x167d7113 acpi_bus_register_early_device +EXPORT_SYMBOL_GPL vmlinux 0x16bdaa76 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x16cfbd80 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x16d06678 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x16d68f2e pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0x16d727e0 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x16d74ea4 ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16f15139 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x16f2ad30 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x17065d05 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x1741ddee trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x1744af30 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x1749331a fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0x174a8fe1 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x174ad27c devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x174e123b kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x1756851d mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x175b547d debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x176a9b7a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x176adf76 xenmem_reservation_decrease +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177fece2 spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0x178341f8 dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0x1791c2bb badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x1798752a dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x179c3a92 device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x17a2e2e2 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x17a3993f __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x17a7e6ab uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x17add64b gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x17b02e97 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x17b5b7d1 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x17baa7b6 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x17cac280 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x17d6239e devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x17e01f11 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0x17e909ef fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x17eb09af __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x17ffd1dc blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x180113e1 vfio_iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x180226e5 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x180d3e2a blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1824b659 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x183f1be8 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x1869a476 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x186b9d2b spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x18728552 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x1878fe6d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x18864dd5 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x188dcd7d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x189157c0 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x18a66e94 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x18a68f7c i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x18b34743 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0x18b53a2b kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x18b9ccbc put_pid +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18edfdf0 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1918c670 devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x191b31ba bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x191d86f3 i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x1925d62d mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19272493 spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x19338604 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0x193b5fc9 gnttab_page_cache_put +EXPORT_SYMBOL_GPL vmlinux 0x193dfdf6 klp_get_prev_state +EXPORT_SYMBOL_GPL vmlinux 0x19541d1d pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19745b9a nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x197eaca8 wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x199e6640 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x199f09d2 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a648d4 dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0x19bc08ba devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19bed447 cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0x19e386f3 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19edd064 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0x19ee51e2 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a20a13c __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x1a2623f8 vfs_write +EXPORT_SYMBOL_GPL vmlinux 0x1a3431ca mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0x1a3ba8e8 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x1a496319 _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x1a51c4af proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x1a5ab876 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x1a60c8a0 led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a75c714 mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0x1a76a559 devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x1a77a39d ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x1a7c3f1c netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1ab6d2c2 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x1ab8a1d4 is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0x1abb08b5 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x1acd6190 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0x1acdc791 device_del +EXPORT_SYMBOL_GPL vmlinux 0x1ad098fd bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1ad26bf4 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0x1ae32269 bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0x1ae3a2de usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x1af07932 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1afd5eec bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x1aff3d55 mce_register_injector_chain +EXPORT_SYMBOL_GPL vmlinux 0x1b07b533 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b080e47 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x1b0a8c9c phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x1b1471f3 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b5f4377 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1b6131b9 alloc_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b616615 fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x1b6470ab iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x1b70a358 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x1b74672d usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x1b7a9059 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x1b80385b acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8b6809 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1ba237b0 default_cpu_present_to_apicid +EXPORT_SYMBOL_GPL vmlinux 0x1ba26c56 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc93e63 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x1bce7dba tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1be4722f bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1bf8226c fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0x1bfbb8d7 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x1c18bf64 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x1c31dd4f vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x1c42dc98 regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1c44b902 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c656c20 usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1c70d32b crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x1c746687 kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8f217f bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x1c92c5fc da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x1ca5308b ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1cb7c983 apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x1cb9a1c8 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0x1cba6721 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1ccef265 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1ce83692 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0x1d07283f clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1d13aad8 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x1d168109 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d24c35c platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x1d2e4a08 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x1d3a4794 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x1d4a037a devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x1d736c4a iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1d98ff05 skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x1da6adf4 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x1daea9e4 regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1db8e0c5 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x1dca0687 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x1dd78ac1 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x1df1a0d4 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1e038d2e usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e1e7fa0 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1e2b016a gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x1e335ec4 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1e51dabb __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e5a5f22 sn_partition_id +EXPORT_SYMBOL_GPL vmlinux 0x1e6ff241 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e892f4d rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1e8ef71a regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e9abb25 bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x1e9bc719 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1eaec09e sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec09ff0 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x1ec14f00 gnttab_dma_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x1ec17f1b ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1ed43b8f scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1ee7d3cd hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1ef9f48c spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f0e19b0 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x1f0e40ea inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x1f142dc2 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1f1ddd8d copy_mc_fragile +EXPORT_SYMBOL_GPL vmlinux 0x1f248aa1 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f46d0a7 skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f59c45d devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x1f614cd8 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x1f61b727 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x1f718698 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x1f7ee789 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f9f87b9 lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fa70ff5 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x1faa0161 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x1fb55ba8 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x1fb70eb9 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x1fbafdb5 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x1fc35a24 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x1fc3eb77 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x1fca225e nl_table +EXPORT_SYMBOL_GPL vmlinux 0x1fd2b083 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1fe718b6 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1ffd1f69 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x203d35b2 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x204c56bc gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x204f2c5c gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x20530607 badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0x20642c2c led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x20705648 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x2082e5ff wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x20899467 hv_stimer0_isr +EXPORT_SYMBOL_GPL vmlinux 0x2093f4dd clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x20978fb9 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x209fe2a7 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x20a021fa fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x20bd070d ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x20c436c0 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x20e51bf4 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x21076e56 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x2107c984 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0x2113dd3c phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x21200485 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x213369ee irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x2150b737 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x21548f62 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x215f8528 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x21972502 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x21a283f6 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ad82ba vfio_del_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x21af7fee thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x21b708f2 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x21c34c8f gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21dec9d3 virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x21f7463b arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x21fd922d pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x223633d2 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x224685ea of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x2246b4dd __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x225e45c7 virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0x2287f8e4 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x22a5191a shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x22b1d7de skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x22cde5f5 nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22de023e inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x22deb7ce pwm_lpss_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22e47664 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x22ec5205 cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x230ddb7f devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x230f7e27 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x2318faed scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0x23323c31 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x233338cd clk_register +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x2356da31 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x237db31f i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x237ea366 dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x2397002d irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x23976ec5 acpi_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x23b3613c blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x23b4e0d7 clear_page_rep +EXPORT_SYMBOL_GPL vmlinux 0x23b8b68a irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x23bbe090 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x23d1463a cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x23d947eb subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x23de4455 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0x23f01b7b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x23f1fc99 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x24044e81 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x2410c338 x86_virt_spec_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x2446bbe2 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x24602a5a virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x2464da17 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x246df185 hyperv_fill_flush_guest_mapping_list +EXPORT_SYMBOL_GPL vmlinux 0x24709b2f trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x24780d2a perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x247994e7 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2485b1e1 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0x24a680ce iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24b54823 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x24ba3e74 hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x24ccb785 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24e60219 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f58a0d gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x24f61bf6 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x24fb412a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x25140598 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x25227db9 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem +EXPORT_SYMBOL_GPL vmlinux 0x25332b5f extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25622e65 nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x25887869 nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0x2590bb0d devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25ab7381 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x25c4a73a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x25c80434 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x25ce7384 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x25d1c709 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x25dbcada ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f9fe74 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x25fd75a5 devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x2609dc27 of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x2612f440 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0x262a7063 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x263c7fce sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x263f039e xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x26454173 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x264f316b fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2653284d acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x266b255c pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x266e2015 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26965ddb pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x269a72ce devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x269de0d1 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0x26a08bf7 crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26c3ee36 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cda94f e820__mapped_raw_any +EXPORT_SYMBOL_GPL vmlinux 0x26e0b04c rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26ed4dd0 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0x26f3cee0 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x26fe0433 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2726e10e iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0x272a5317 pci_pr3_present +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x273dd633 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x274b41d8 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x276513cc ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x27727bde pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2773c485 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x2787827f pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x27954d02 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x279cb25a zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x27d3163a driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x27df3105 hv_alloc_hyperv_zeroed_page +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x280ace16 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x281118a5 account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x2817f7fd cppc_get_desired_perf +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28448c6e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x28475e59 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x287ea570 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x288528c7 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x289905f5 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28afbb08 cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x28bbcfc0 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x28c807b4 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0x28ce39f4 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x28db4fb7 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x28e37d5c icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x290f1dfc gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0x29252e74 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x29266c85 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x29366b61 register_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x293f4891 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0x29473ac1 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x2951a872 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x29646c60 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x29649545 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0x29667ba0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2978c8c1 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x29806128 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x298e1aef ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x29a8d6ee ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x29e18b8e switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x29f88076 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x2a215da3 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x2a2aea17 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a4eb64b ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x2a58ae55 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6ab4f7 __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a8f62aa tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x2a91c6f3 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a93ee93 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x2aadddbf ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ac8ea41 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x2adb1dc7 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x2af3e4ec pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x2aff68f9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x2b01f814 irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0x2b0765ca xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2b0fe000 gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x2b191b75 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2b1f347b d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x2b260a74 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x2b3598a2 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x2b37dcb1 dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x2b3db100 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b49326f devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x2b52ac8a scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x2b5c231f devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b6679fe rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2b67b6b7 mds_idle_clear +EXPORT_SYMBOL_GPL vmlinux 0x2b67dbf0 devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x2b7d5616 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2b7e9709 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2b7fc385 hv_init_clocksource +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9997fb atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2bbe6c59 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x2bd1a90d cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0x2be310c9 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x2be98017 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x2bf4bb83 spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0x2bf911a2 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2c00139a preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c065858 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2f5a09 x86_family +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c32dc81 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x2c390a48 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x2c455584 pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0x2c5dc3a8 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem +EXPORT_SYMBOL_GPL vmlinux 0x2c64de50 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c6d451e cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c768856 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c7d2399 dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c80a394 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x2c80e4b4 do_truncate +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2cb16621 genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x2cb1cf45 fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2cc011a2 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x2cc0fe28 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2cd4c9b3 ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x2cdc893d led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cecc8c3 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x2ced7794 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0x2cf70902 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x2d13160b pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2b9be7 badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d30c8c6 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x2d393f48 intel_soc_pmic_exec_mipi_pmic_seq_element +EXPORT_SYMBOL_GPL vmlinux 0x2d3b8ebc sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x2d4115c0 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d599841 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x2d6aa0f0 arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x2d7935e6 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2d836808 crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0x2d96c4f5 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2db02e7b udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x2db2826b wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2db65ad8 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x2dd8a4da dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x2ddbf140 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ded90a3 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x2df979c9 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e08226d badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x2e1c3255 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e3d02bc ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x2e46c20f fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x2e4faaf3 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x2e678211 xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2eda4807 is_uv_hubbed +EXPORT_SYMBOL_GPL vmlinux 0x2ee7c52b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x2ef2f5ec mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0x2ef3b1c7 store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f0eddfe replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2f1d1884 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f37686b ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f43cb37 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x2f6014f0 usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f6fc558 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2f70deea tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x2f8b3673 crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x2f97b8bf blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2f98ceee debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x2fab6b3e kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x2fad4f69 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2faeefac sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0x2fb72e9b sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x2fb754d4 acpi_set_modalias +EXPORT_SYMBOL_GPL vmlinux 0x2fc33412 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x2fdcfd28 smca_get_long_name +EXPORT_SYMBOL_GPL vmlinux 0x2fe3fa86 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x2feb31e3 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x30034a98 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x3016fb02 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x302ddd6b sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x303ddc80 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x304c21d4 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3055b120 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x305a1865 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x306c0cb4 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x306f5576 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x307ecfc7 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x3084185c dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x30873d66 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x30909cc2 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3090cb05 bind_interdomain_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x30974399 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x30b15b29 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30cf804f slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x30d080f2 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x30d11174 __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x30e1ec25 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0x30e97e3d iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x30f8895d task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x310593fc tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31217e73 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3165daa3 arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x31745f68 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x31785f08 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x317e1efa trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x319cafe1 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x319cbe71 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x319ecde1 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31b62373 irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31dca4d8 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x31e319a0 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x31ea2d2d noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x320968bd iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x322eb358 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x3237ad61 node_to_amd_nb +EXPORT_SYMBOL_GPL vmlinux 0x32480f98 __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0x325c96a4 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3262f759 icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0x327a2687 bind_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x328e3354 __memcpy_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x329ddf26 iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32ac38df ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bd11ee perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x32c2bb04 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c6c604 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x32e27056 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x32e3b076 mxcsr_feature_mask +EXPORT_SYMBOL_GPL vmlinux 0x32ec4c49 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x32f8e0d6 devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x32f8f226 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x3303f564 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x330e1b76 icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0x333429c0 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x3375421a skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x337a4ece __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x339ced6e __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x339f1645 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x33a21b38 crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x33abcebb dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x33d79461 regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0x33e1ce39 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x33e4f9d1 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x33f26677 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x33f75bd2 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x33f779d6 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x34170a60 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x34186c57 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x3421ca7c __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x342e0cf6 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x34331f04 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x34379285 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x345d5340 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0x3474437b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x347500f0 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x34826984 __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x34833ea7 acpi_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x348f218d pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3495c3fe class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x34add86d nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x34aefaed pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x34b47346 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x34bab869 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x34d8a4f6 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x34ddad2e __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x34e68151 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x34eab46d bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x34f0aa83 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x34f248f2 __devm_intel_scu_ipc_register +EXPORT_SYMBOL_GPL vmlinux 0x34f62fcd dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x34f63569 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0x34f94c71 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0x34fdad3d attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x3508437a ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x350f8392 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x3511dada ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x3513117c perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0x351ebcca device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x351f3d1a tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x352267e1 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3524229d fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0x35275286 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3559782e wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x35597d0b pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0x355bc89a klist_next +EXPORT_SYMBOL_GPL vmlinux 0x35601145 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x35640ee6 nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0x356501e2 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL vmlinux 0x356f8dd4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3582ef4a dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c85dd4 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0x35d3dc46 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x35ee31e6 dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36173c1d phys_to_target_node +EXPORT_SYMBOL_GPL vmlinux 0x36196677 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x362dabf9 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x363e1b3c acpi_get_psd_map +EXPORT_SYMBOL_GPL vmlinux 0x36742979 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x36898b64 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x368fed0a sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x36959559 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36d13c6d wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0x36d8cca3 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x36eec6b1 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x36fb7088 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x370dd7be extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3712b8ff xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0x37169f79 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x37230ee1 gnttab_pages_set_private +EXPORT_SYMBOL_GPL vmlinux 0x372cfd6e gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x3736ed6c pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x373c2b50 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x3750d770 erst_read +EXPORT_SYMBOL_GPL vmlinux 0x376cb2c3 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x377a9f8a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x37914025 xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x37bc3020 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0x37decbbf serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x37f292c4 pmc_atom_write +EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x380b2b2f hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x38189465 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x3857ade4 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x385be20e ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x385fc6b7 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387c3bb0 i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0x387c62fe inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x38886b2d serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count +EXPORT_SYMBOL_GPL vmlinux 0x38a04333 skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38c3ff30 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38d3b3d9 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x38dcb7d4 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x38e21d94 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ecf309 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x38ed0f43 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x38ef7673 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x390ec341 dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x3916aac3 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0x3922d8d2 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x393ff1a9 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0x39514d06 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x395f5e1c srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x396e2fd7 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x397ad4e1 led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0x398bfdc7 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x398e5f3e tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x399196ea fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0x39a4f4f3 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39bd216f ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x39c29dfa acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x39c84786 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x39c9f4ba regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x39ded098 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e7caab sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x39eb9db6 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0x39f4b8f6 noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3a06d108 hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x3a0c871e netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3a1750b0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3a1b2c79 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a282ca9 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a38bafb pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a8bbb8e trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x3a91f978 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3a9ce97a spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x3aa1e276 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x3aa34491 dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad113fe blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0x3ad374f3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x3ad5026e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3af578f5 hyperv_report_panic +EXPORT_SYMBOL_GPL vmlinux 0x3b028566 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3b20470b gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x3b2c9f4f devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b5108f3 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3b5e38c4 iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0x3b6017cc driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x3b7ad1b7 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3b8979ea gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3b901554 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x3b91db5b intel_pt_handle_vmx +EXPORT_SYMBOL_GPL vmlinux 0x3b95f543 klp_shadow_free +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3baf06b7 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x3bca49e4 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x3bcc5a1c virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bcf2417 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3bdcca4c usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3be68239 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x3be73da5 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c0e8050 hyperv_pcpu_input_arg +EXPORT_SYMBOL_GPL vmlinux 0x3c1aa274 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c1cc003 devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0x3c212744 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c26274b set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c2e380e crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x3c3afbac of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x3c3d7f28 fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x3c51f2a4 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x3c5fa4bf find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c74fa99 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x3c7931ab ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x3c82bea6 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x3c935b3c ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3ca87d68 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x3cc00b34 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x3cc0f319 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd69e0a find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x3ce5797c extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0x3cf37051 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3cffd06d pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x3d27b483 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d4cf9f2 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d5b9abe fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0x3d5fb35d dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x3d968a56 spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x3dafb9d6 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x3dc640ec regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df537ab virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x3df82d00 mce_log +EXPORT_SYMBOL_GPL vmlinux 0x3dffab94 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x3e05e82c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x3e0868f5 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3e0a0058 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x3e0a3cbe skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0x3e0c0966 iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0x3e1b688f led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x3e44daba rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea12142 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ead0136 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x3eb21901 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x3ec62c2a uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x3ec6d704 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3ecb6180 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x3ed96173 kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x3ee75b7c netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3ef69ed5 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ef8df04 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3efd9e5a devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x3f040aa6 devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0x3f0ebf1a crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x3f2196f8 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x3f2f5e35 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f65eaa2 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x3f6b852b fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x3f719c8c bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0x3f77d2ff spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f8b7c8a generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x3fae6ab0 hv_vp_index +EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fe90973 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x40267068 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x40307705 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406791f4 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x407ab0c5 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0x407af304 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4085a16d acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x4097df06 i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a0aafc __flush_tlb_all +EXPORT_SYMBOL_GPL vmlinux 0x40b43bd0 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x40c40f0e mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x40c66991 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40d69ba2 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x40d8a989 iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0x40d95098 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x4115a518 edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0x4129f5ee kernel_fpu_begin_mask +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4145cc1e usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x414e725b netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x415e41c7 devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4167109f dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x4175c0a9 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418674cc ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL vmlinux 0x41939f52 dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0x41950e4f iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x41975573 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41b6e91f phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x41c56754 clean_record_shared_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x41cd9b2d l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x41dcb8ea pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x41e3a614 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41f8a635 devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42227ec8 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x42230915 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x42288420 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x4228bcbf kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x422d8f6a regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x4231ab35 __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4235ab94 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x425daf69 acpi_device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x425fe3d1 __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x426762db skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x4281bfe7 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428377a8 skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0x4284e9dd genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x428e1620 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x428f552a lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x42a5e19a devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0x42a604ae platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42aab538 dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0x42b4779f _copy_from_iter_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x42bce9e8 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x42ca0426 pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x42d099e4 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x42de3d3d devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0x42e445f6 clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42eaf380 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x42f272e8 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fba1c7 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x42fd3a28 acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x42ff2f71 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x430d9d5e devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x4326e63b class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x43379abf tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x433ae21c user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x4347183f usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x4376546c regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x43795a9f alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x43936c70 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x439b1d0e dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x43a10a58 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43aa34b9 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x43abc33e devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43f4beea gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x44231522 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x443184e4 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x4436fb1f sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x4477c564 pci_msi_set_desc +EXPORT_SYMBOL_GPL vmlinux 0x4482a2a2 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44959f3f spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x44b9d59a dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c25848 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44d92ad5 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x44e28786 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x44e6a466 tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0x450110e8 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x450fc5f2 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x45375d27 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x45574488 blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x45630143 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x4564452e bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x45718ac8 sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457d76a8 usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0x458311fb __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x458efa98 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x459e5bf6 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x459f12e5 dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x45acf57a udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0x45cd3f17 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460b890a nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x46350c3d posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x463d8290 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x4643c6ab virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x464ee46a scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x465bf6a1 virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x465f4d57 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x466093fb init_iova_flush_queue +EXPORT_SYMBOL_GPL vmlinux 0x4665414b iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x46661498 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x467a98f9 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46951eb0 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4699e1f4 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x46a6c9ef hv_get_tsc_page +EXPORT_SYMBOL_GPL vmlinux 0x46c203ac devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x46c2b161 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46d7dfca cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x46e30026 fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x4707198d nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4742d905 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x474decce acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x475c678a md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x475d96c7 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4765a9b0 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x4766d331 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4798357d sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0x479c2d37 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47a668a9 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0x47a89953 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b72fd2 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47d643d1 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e9ec92 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x47f07ac6 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x480d0e71 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x48296a43 setfl +EXPORT_SYMBOL_GPL vmlinux 0x48296c32 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x48326663 pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4844cbb2 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x486db16d find_module +EXPORT_SYMBOL_GPL vmlinux 0x4874bdbe usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0x487e46c9 devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x489fb6e7 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x48a3809b sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48a53646 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x48a7d578 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0x48a9faab regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x48aaf386 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x48ac2d3e cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x48bff1de sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x48cb6b3f pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x48d64ae1 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x48dae385 reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x48e62b18 regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x48e95c4b gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x48f49400 apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0x490011e0 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x49004cb2 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x4903137d pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x49384344 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x493a2584 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x493ca54c rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x4949cc15 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x494bef6f dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0x495cb2c3 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4963a43d device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x4966934f __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4991537f regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x49951708 sev_enable_key +EXPORT_SYMBOL_GPL vmlinux 0x49a131b6 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x49c14a61 ex_handler_fault +EXPORT_SYMBOL_GPL vmlinux 0x49c511ce crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x49c5400d kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x49c9cf2b led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x49d77c27 devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x49db5c64 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a080226 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a1dbe93 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0x4a2c5d86 virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x4a39b534 tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a49886e spi_async +EXPORT_SYMBOL_GPL vmlinux 0x4a50a13d pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x4a5a20c2 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4a8665f1 linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0x4a8c24d3 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4a965d0b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x4a9be07c wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x4aa349cb kvm_clock +EXPORT_SYMBOL_GPL vmlinux 0x4aa58bea inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4aaa0eb4 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x4aaa404a __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x4abc4e8f sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4ac1ff1d inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x4ac4521c __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x4adf9462 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0x4ae73a7c rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0x4ae94668 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0x4af51193 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x4b0fdb9a dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x4b2097a8 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x4b2a5df3 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0x4b2b8416 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x4b45faaa tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b464ce5 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b56ce05 xenmem_reservation_increase +EXPORT_SYMBOL_GPL vmlinux 0x4b61765b pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x4b61e1e9 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x4b762828 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x4b82c48e lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0x4b931968 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x4b9e6a5c wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4ba15ac3 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x4ba44be0 sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x4ba8639f user_update +EXPORT_SYMBOL_GPL vmlinux 0x4bc2870c to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x4bc8727f xen_balloon_init +EXPORT_SYMBOL_GPL vmlinux 0x4bd0d062 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x4be1e4e5 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x4c0b8142 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4c0bc42a sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x4c0d5911 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x4c0e8846 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4c2c0ea7 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0x4c47fe4c gnttab_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x4c762b5c x86_stepping +EXPORT_SYMBOL_GPL vmlinux 0x4c7f185d pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4cbfa1ac ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x4ccba9fd file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x4cd93684 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4cf9dd17 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0x4cfea900 get_dev_pagemap +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0e1eb0 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x4d19e9f1 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x4d202b8c __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4d29290c inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4d428b35 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4d4b557e led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d52bd3a fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4d687129 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d74ce04 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d75e619 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4d7e37fe dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x4d8a96ab xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x4d964e74 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4da1f4a7 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4db47110 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4db57087 devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x4dc8b340 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4dc9eb4b ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x4dd56afc skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de656d6 pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0x4dfb58d7 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x4e069ca7 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x4e17c613 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4e1a24e1 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e1bd94e devm_intel_scu_ipc_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x4e4c37e2 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e760bb5 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x4e85cc55 iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0x4e99a742 blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x4ea5f668 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4eba9dfb acpi_device_fix_up_power +EXPORT_SYMBOL_GPL vmlinux 0x4ec1f78b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ece3615 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ed71ba1 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x4edc94c7 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x4edec5a5 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x4ef39fa6 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef76d70 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x4f0fa658 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f17b1c6 mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0x4f2593f0 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4f46947d skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x4f57e3fa __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x4f5e5db3 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f7bbadf thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x4f7ecf69 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x4f91a5ee scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0x4f998833 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x4f9a7cd2 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0x4fac98a7 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x4fc02643 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x4fc8206e sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff00370 acpi_device_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x4ff1c720 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x500c768c apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x5010a15a __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5016704c edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x50187187 switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x501ae252 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502c82d7 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0x506cec72 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x507a35b9 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x508793ee ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5099dbf5 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x509d5f55 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x50a63f93 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x50b03f5d l1tf_vmx_mitigation +EXPORT_SYMBOL_GPL vmlinux 0x50c4b64a led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50d70807 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f11ab2 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5102974d dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0x51068c48 compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5109e548 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x510be191 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x51130514 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x5116a6f1 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x514c0dc8 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x51640ae5 firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x5167b504 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x517f462e tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191485a arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x5196bc86 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0x519f092f platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x51bdd20c pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x51c065c5 gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x51c60556 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x51c9e36a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x51e0e740 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x51e70531 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x51f3d255 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x51fda5c9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x520614a7 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x52064ade xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0x52117087 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x52121118 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x52431348 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x52484a6b input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x5249f170 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x524a49df sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0x524fff0f xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x525d0aa3 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x5263b589 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x5267c291 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x526a3302 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0x5271c928 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x527289f4 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x52933791 fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x529bc3d7 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x529bda51 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x529ca166 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x529e64e8 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x529ed06a device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x52adbc8e __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x52b04be6 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52ba035b ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52e6e125 tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0x52e8fc29 gnttab_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x52f4cf05 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x52fb5629 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0x53227ca6 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x5336b397 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x533cc662 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x536da1a7 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x5371d1da irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x53729a87 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x5391f2c7 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x539284b5 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53b3b00d generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x53c47c53 apic +EXPORT_SYMBOL_GPL vmlinux 0x53cd2ca5 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53e22db5 devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x53e4f0f9 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x5410b875 gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x542bf859 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x542e688f set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x54302dee irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x5435454c divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x5447d949 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x544be7f5 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x545025e5 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x5457c526 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5458432f do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x545bc3c0 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x5463fd72 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x5479650c wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54955855 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x54974c44 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x54b0a016 extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x54b9f797 blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x54bc2911 crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x54e734ff blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54f18da2 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0x54f8fc3e em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x55049f8f acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x5518b1a3 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55534e5d fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0x55576399 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x555dbd7c class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x555f9eca rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0x556d2606 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55b1ecf9 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x55b4a5f9 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55d932c2 xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0x55e08b8a spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x56034103 __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561c5d77 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x562283a3 pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56327b92 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565654a6 devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x567299af crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x5674b3cb rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x568ca87a da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x56ce1b24 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x56ded71c devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x56dfbecd tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x56fd6a71 fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x56fee89d d_walk +EXPORT_SYMBOL_GPL vmlinux 0x57089a29 crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x570f841b ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x5714da57 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x5714ec0f ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x57358110 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x574609c5 apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0x5747bd25 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x575127c4 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x57684f3c mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x57719632 gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x57732438 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x578980ec __class_create +EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57929f03 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b9c0e9 phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0x57c2ba6e pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c590f5 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x57d09338 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0x57debfc7 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x57e10c16 elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x57e4ad79 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57fa0ac3 unwind_get_return_address +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x58276f93 cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0x582b810a fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5848a7d0 rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5857d1cc usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x587f6e44 rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5884db33 serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5891420b irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0x589f9d81 bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0x58a4f0fc is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x58a5efec xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x58d1b651 generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0x58d42d1c gnttab_dma_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x58d6311d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x58dc61e9 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58eb63e6 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x58f03b99 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x58f47bd9 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x58f8d8d3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x590daa8c clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0x59107aa6 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5914a857 lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0x591c8ff0 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5924ef92 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x597639d7 clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c60e2a pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x59c6aff4 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x59d2a1b4 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x59dbaeb1 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x59dc1c81 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x59dd51fe unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x59e5ca5c sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x5a0471aa __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x5a090912 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a1f9b73 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x5a378037 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x5a443cae serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a6ed4e0 _copy_mc_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a810fb6 xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5a9a4e38 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x5aaf461a devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x5ab0883a uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ab31160 sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0x5ac0d3e0 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5ac16b1d __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x5ae313d7 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5ae6d089 pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0x5af6d187 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x5afc7e37 bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x5b03af0b fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0x5b102fbc dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x5b1a1a12 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL vmlinux 0x5b36910d nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x5b4d1835 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5b501f20 gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5b5394ea dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b7a8a2b sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x5b7fc1ea watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5b863223 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b884364 hyperv_report_panic_msg +EXPORT_SYMBOL_GPL vmlinux 0x5b90eb6f gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b95d6ed devlink_net +EXPORT_SYMBOL_GPL vmlinux 0x5ba8c1b0 blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x5bb289ac __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0x5bbb9231 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bc1c6b2 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x5bc7d34e ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x5bccc82e phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdb3367 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfae8ff kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5c0f1f6f edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5c11cdbb spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x5c19cb7c phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c2f97f8 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x5c3842ef rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x5c4cab1f fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c7bf6f1 blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0x5c84db3c xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c92be96 tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5cab9945 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x5cac3432 devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cb0ddd5 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x5cc4dc90 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x5cde4a34 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d0629bb kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x5d0d94ce nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d127a00 fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x5d17148b apei_write +EXPORT_SYMBOL_GPL vmlinux 0x5d328885 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x5d3298ba ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x5d7b2c38 vfio_virqfd_disable +EXPORT_SYMBOL_GPL vmlinux 0x5d7c254b pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d90c0e3 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x5d9317d7 uv_teardown_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d966550 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dad8bdd acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5db2ac8b tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0x5db6c164 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5db71a49 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0x5db9ab13 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x5dbbd863 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0x5dbbfb3a efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5de2bfdd register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x5de7447d __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5df141c3 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x5e02aa5d tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0x5e0ab70b mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0x5e0f18a9 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x5e115d85 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e2cb6dd blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0x5e3a32b4 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x5e3a5171 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5b2eff wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5e6c9917 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x5e75bbcb gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e87a4ea pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5e8b7937 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x5e8e7686 bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x5e95c216 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x5e95f1e9 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x5e986e39 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e9f2f54 devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ecb8105 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ed654eb pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x5eeaf495 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x5ef475c4 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5efea641 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x5f0da6c4 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x5f1084f4 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f164f0b __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5f20c26e rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f2fcc83 ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x5f3ce8db regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x5f3d9de9 skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x5f3e77fd ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x5f45b05c dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0x5f5adf11 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f760d7a virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x5f7d674c software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x5f828d35 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x5f899ebb find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5f8a1a0a vfs_read +EXPORT_SYMBOL_GPL vmlinux 0x5f907471 devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0x5f98b376 synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0x5f9caecf virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f9cdd75 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x5faa347e crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x5fc852c6 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x5fd4420f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fed63e0 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x60069ee1 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601158a1 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x601ba3eb __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6029f05d dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x602a12f5 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6036ebd1 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x603b042f __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x603d0d51 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x60578e4f kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x605eddf3 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x60613221 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x60780fb7 nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x60806523 i2c_acpi_get_i2c_resource +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60965560 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a634c4 vfio_info_cap_add +EXPORT_SYMBOL_GPL vmlinux 0x60a9ffea blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x60b903af __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x60bb0b98 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x60c0727b skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x60dadf2f mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60f99e1b cppc_set_perf +EXPORT_SYMBOL_GPL vmlinux 0x611cfa85 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x611fbf04 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x614b2589 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x61657e06 strp_stop +EXPORT_SYMBOL_GPL vmlinux 0x61685ba1 sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x617b026c hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x6199f520 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x619b14da fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x61ae1d2d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x61b1e531 pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0x61c742f0 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x61dc91e6 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x61e0b28b acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x61f1e711 dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x61fc4e1c perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x620b1ccc each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x6211f16a subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62232dc3 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622e58c3 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x6249e18d handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x624d8413 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x62637f99 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x6263da62 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x62859cb6 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x62b4346e wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62bce3fb crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x62c35021 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x62c3676f ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x62d0227c pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x62e071e7 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x630ed654 ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63195919 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x6326d7cc mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x6340434e x86_model +EXPORT_SYMBOL_GPL vmlinux 0x636bcc9a __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x6376f0bf __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x638a9653 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x638aff11 proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x638fdae3 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x63969c6e __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x639aeeab blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x63a4104c vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c44b04 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x63c78649 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x63c8fd2b hv_setup_stimer0_irq +EXPORT_SYMBOL_GPL vmlinux 0x63cd8ea1 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x63d3292d security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0x63d9d5b5 vfio_external_group_match_file +EXPORT_SYMBOL_GPL vmlinux 0x63e5cef3 bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63ec9c14 tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x63fd36c5 cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0x640463b3 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x640ab48f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x641eedad __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x642a6152 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x642ffb06 devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0x643d917d scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x64476a1a pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x645dc2f2 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x6461cc3c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x646bde02 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x6488b63c usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x64a453f5 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x64a62e11 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x64b6a497 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x64c3d66a security_path_link +EXPORT_SYMBOL_GPL vmlinux 0x64d3cc4e xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64dd8948 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x64e08f3a devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64f5fc0c devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x6502d9c2 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x650519b3 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x650d1688 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x651484ef iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x651fa03b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x65329bfe tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x6545d6b8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x65467984 irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0x65497ae7 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x655a45b5 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x656545b6 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x656b5fca dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x65704d22 hv_stimer_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x65831cfb rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x6586dda6 extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x65953c48 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x6595b9e4 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x659e63f8 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x65b3c5d4 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x65bde8bc virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x65cc9ffa input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d74698 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x65e09de4 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x65e17eaa pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x65f88643 usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0x65fa7f9e ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x65fd0c8a trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x65fe833d phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661c2710 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x662291c0 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x66278f6b sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x662ad759 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x66630498 split_page +EXPORT_SYMBOL_GPL vmlinux 0x666b755a __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x6671cc62 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x6673ab31 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6678b40e dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66854e72 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x668d5f8b __acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x6697f8d1 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x66a6c061 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x66ae4727 mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x66b26b2b clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0x66b6226e icc_get +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66bd3a45 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x66beaf1a pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66db0e19 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x66ee9faa clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x66f1c156 fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0x67079d7a devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x671b9f3f uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0x672301e0 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0x67303f27 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x677dd4e0 gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6782806b serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x678d2679 sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x678db26f pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x6790ebd3 mce_is_memory_error +EXPORT_SYMBOL_GPL vmlinux 0x6792e25a __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679ca16b edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0x67b0fe2d devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x67c0e931 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x67d1c6d6 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x67d2f8ff devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67dcd76b uv_setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x67f02cbb wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x67f11832 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x67f16fba scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x68040b12 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x68280632 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6855ba00 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x685759dd led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x686ce30e tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x6870bca2 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x688d09ce devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0x688d317d gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0x6890f1d0 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x68a7f3ed percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x68aab822 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x68af03b0 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x68d8f2c6 blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x68df9653 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x69283f69 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6931f65b mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x69326078 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69387737 vfio_add_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x693ac369 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x6940af03 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x69469bb9 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x694d57ee acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x696340a5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x6965e5b9 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x696d5c5e __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0x696d7e0b l1tf_mitigation +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6980fa66 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x698ef1e0 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x69af620b kill_device +EXPORT_SYMBOL_GPL vmlinux 0x69bf596b tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x69d62ab1 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x69dcaa7e __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69fb6050 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x69fe886b platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a090746 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x6a09fa0f led_put +EXPORT_SYMBOL_GPL vmlinux 0x6a0d93ef pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a178ed8 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6a1b7927 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x6a24c631 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x6a27c45d pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6a27fce4 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6a39db0c dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4c0c7a dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5837b3 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a876f81 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6a8a7554 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x6a93e3ee crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x6a97064c fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x6aa2a877 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x6aa52226 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x6aad9152 xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x6ab65a13 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x6ab6a283 devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x6adc1a04 __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6aebe243 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6af4cd1c i2c_acpi_find_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x6afa0e32 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x6b003654 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b130f81 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2420cc posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b35a16b intel_scu_ipc_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x6b3ae022 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b435c27 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x6b55eca7 devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x6b5b6d48 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x6b63435f crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x6b7a4335 hyperv_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b83c3f8 spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x6b94625f xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6ba0ae5a platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x6baa310d devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0x6bb944cd regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6bc3cb11 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x6bc9e9ca rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bdef35c acpi_ec_mark_gpe_for_wake +EXPORT_SYMBOL_GPL vmlinux 0x6beb089d regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x6beb432b acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6c02bdf7 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6c27d6f8 blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x6c28828b usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3b612b acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6c3da63a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c3f827f xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c53f844 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x6c567663 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x6c5a9398 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6c6382cd pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c679626 disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x6c75a298 devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6c99bbb6 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb3bb8e devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0x6cc21616 metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0x6cc77103 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6cff99a1 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d1085cb input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x6d12d6b3 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6d2166ac get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6d2e899d mce_usable_address +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d38a384 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x6d3e0380 tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0x6d4bd1a2 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x6d5d8648 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x6d5e3d30 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d7a9bb3 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0x6d7b200a __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6d9fa49e raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x6dadef07 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x6db1e1ea iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dcee8e9 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x6dd47e4f bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x6de4d195 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x6df867cb usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x6e00fcfb modify_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x6e17c720 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x6e19b3b9 __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x6e2a92f5 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x6e2cf472 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6e30bc17 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4a9b29 isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e4e50a2 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6e4fb0c6 iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea990f2 mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0x6ead90e2 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6eb4235f __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6eb4a549 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ec814ee usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f13163c devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x6f134b7b phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x6f1ba47c sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x6f1f3413 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f224c0b usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x6f241d1b mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x6f29fdfa gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x6f30be86 check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x6f347e26 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0x6f34c46b pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x6f446e95 ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x6f464266 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6f4c85bb __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x6f5699d9 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x6f7cd626 iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0x6f83ebfa sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x6f8c017e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fdaa95c proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffce680 x86_cpu_has_min_microcode_rev +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x703003ce __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x7030da55 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x703a3ead virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x70576fee acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x706dceea tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x707937cb pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x707a616f edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x707e315a pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7092ee5f fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x70b7c07a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c6d827 mc146818_set_time +EXPORT_SYMBOL_GPL vmlinux 0x70c8db62 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f5332f sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0x70f73220 devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x70f84d6b irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71141853 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x7129147e fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x712b18be add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x712cd4d8 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x71300119 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x71316503 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x715615d3 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x71561cda netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x716a2b72 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x717ad933 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x717d0f54 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x7181db30 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b24eea efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x71c422b7 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x71cfae07 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x71daf236 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x71f5243f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x7208dca8 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x72118aa0 dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0x7216f86d ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x722b60d8 gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0x7238b7e6 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x7250aae6 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x725cc2af __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x7270dc07 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7295d92c blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x72c1aeeb __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x72c1fcee pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0x72c5ae1a gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x72d72516 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x72e070e3 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x72e90af4 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x7305a788 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732852fe xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0x733bfa93 blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x73585dac battery_hook_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7362de4f subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x737596fb perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x737ab146 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7381287f trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x73876b34 rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x738fe32b amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x73986288 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x739a4815 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b694a7 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c80789 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73cd8c3a serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0x73fcc23a devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x740674d9 __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x7411e4ae rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7423bb1e iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x74346138 __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x7436cbe4 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x745918fb of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x746b21db usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x7476f42e genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0x748bbede class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74af45b6 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x74b099b7 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x74b380d8 dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x74b517e6 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b6ac53 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bcb8a0 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x74e4e4a5 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x74e999f9 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x74eb3410 icc_enable +EXPORT_SYMBOL_GPL vmlinux 0x7502ecaf ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x750a880c ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x750c6dda clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75301f1f serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x753b725b devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x7559828b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x75676e8f pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0x75792186 get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x75800c25 tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x75881d3d __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x759a7557 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x759bfe36 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75a1c89d dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0x75a27717 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x75b99176 hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x75c2c5c5 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d25e7e __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x75d87013 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0x75e0e275 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f0e875 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x7606ed46 extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0x760b939a sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x76105a83 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x762065be irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x76243687 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x763ee20f i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x7661b962 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7665a95b idr_remove +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x767bdb4d crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x767d1541 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768ec56c pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x7692d514 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x769dfad7 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x76a43f2f blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x76ac0b86 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x76b5bea8 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x76b943fd __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0x76c144bb set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e85b92 gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76ef9e55 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76f9948e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x76faa2f3 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772c0179 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x773ae02c get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x773f2713 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x7745ea89 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0x7754905d gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775bf37a access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x77799644 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x778e91a3 perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x7799b9ed task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77be321c events_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x77d343a4 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77eb2fe7 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x77f3547b __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x77fc99b3 extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0x77fdf821 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x78041b8f byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x780c4faf peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7814af27 inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x781c1b24 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x7822e6e8 tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782f4124 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0x783725fb fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0x7844bf46 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x786830f5 ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x7878e79d extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7883f48e ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x788c153e platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78945bbc power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x78986d8e clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78a063c0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x78d7af19 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x78ec9b3e bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79088e45 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x790be0b9 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x790da89c hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x790e9d1b wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x79114eac fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x7915cee5 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x791748c8 adxl_decode +EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x791cc383 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x79287d38 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x79694eba __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x797c6826 sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0x798b7682 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79962701 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x799aebb1 sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x79a7db14 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x79bc842c usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x79bd7d22 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x79c84ad0 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x79cf1043 fpu_kernel_xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e3c868 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f54498 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x79f57364 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x79fdaed1 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0x79ff20d0 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x7a054763 security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x7a2dc8f4 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a357c2c spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x7a655f68 acpi_processor_claim_cst_control +EXPORT_SYMBOL_GPL vmlinux 0x7a677360 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x7a6be92c xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a98f4b4 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x7a9e4c23 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x7aa6abbb xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x7abfca43 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7ac97f70 pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7adfbf6e dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ae28b98 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x7af78560 fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0x7af8353f icc_put +EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x7b032bb2 crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0x7b067a57 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7b083510 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x7b1426cf kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b18a2ea pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0x7b2dade8 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7b3145c2 hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x7b35555c dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b4667f0 crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x7b4c9ba9 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x7b4ef438 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7b51c039 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x7b52fa6f devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x7b5452b8 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b604ec6 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0x7b61279c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x7b683d85 edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x7b6f9536 acpi_register_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x7b856860 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b8c2b4f component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0x7b8d68cb __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x7b8fec04 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7b9dc3eb devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x7bb1d640 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bcfd6c1 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7bf088c0 devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x7bf3efd9 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7c0e9413 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0x7c1ab230 governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x7c20b6a0 load_direct_gdt +EXPORT_SYMBOL_GPL vmlinux 0x7c29277a tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x7c2cd532 crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x7c39068b efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x7c3c175e kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x7c453826 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0x7c4d0be7 screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0x7c57421b x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7c5f3711 ioasid_unregister_allocator +EXPORT_SYMBOL_GPL vmlinux 0x7c61ee17 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7c626556 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c681aba efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x7c74966b unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7c776fb6 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9de01b validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0x7caf78e6 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x7cb803de btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x7cbb8892 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cd0fa3f blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x7cd2dae2 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cea767d to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0e1d95 hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d10949a dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x7d2ca554 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x7d30856a pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x7d34207b usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x7d350bb9 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x7d3bb357 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x7d463f91 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d4c1ac1 rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x7d582145 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5e3cb9 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x7d675225 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x7d94a4e9 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x7d9ca481 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x7da02255 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x7dbf8da6 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddb2718 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7de6cc23 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7dedb5d4 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x7e0debb2 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x7e37645f set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7e390001 intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7e3fd6e8 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x7e48f034 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x7e4a1c0e irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e5c7dcd rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7ac24c spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e8021d3 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e8aedb2 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x7e8d8619 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x7e8e0375 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x7e8f2d34 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x7e9210cf rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x7e9c556d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x7ea75c24 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x7eaea8e5 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0x7eb620c0 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7eb93263 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x7ec3ca6d pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x7ec814de inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x7ece3ed0 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7f16e5e1 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0x7f3450c9 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x7f72048c ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f7e59ae acpi_pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x7f9297c2 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7fa96509 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x7fafdec9 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fe59b7e max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x7ff1e24c dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x8019fa4b serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x802a34d0 pwm_lpss_probe +EXPORT_SYMBOL_GPL vmlinux 0x803bbaa5 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x803eaa08 rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x807766ea usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x807ede37 gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808a8088 handle_guest_split_lock +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809b0310 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0x80b109d4 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x80bcc76a xen_set_affinity_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x80c11314 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cfcfcd devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d7574d vmf_insert_pfn_pud_prot +EXPORT_SYMBOL_GPL vmlinux 0x80e33f7c regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x80e59328 lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0x80ef67d5 tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x81072d11 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81221cad amd_nb_num +EXPORT_SYMBOL_GPL vmlinux 0x812fa51a xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x813256f5 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0x813da36c device_create +EXPORT_SYMBOL_GPL vmlinux 0x814350f8 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815dd3ae md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x817e0df9 pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x819d72cb klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x81a9c908 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x81a9e6bb gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x81afb5b5 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81b362c5 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x81c688c2 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x81d10485 ioasid_free +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81de045c ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x81de3f68 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0x81e17843 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x81e18ec4 put_device +EXPORT_SYMBOL_GPL vmlinux 0x81ebd9a5 clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x82041c97 pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0x82092899 badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0x820af7a2 i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0x821ec7f1 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x822112d4 gnttab_page_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x822595bd __intel_scu_ipc_register +EXPORT_SYMBOL_GPL vmlinux 0x82262e57 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x822da1d7 perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x822e90d2 dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x823eae06 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x823f684d pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x82594cb4 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x827e61f8 acpi_has_watchdog +EXPORT_SYMBOL_GPL vmlinux 0x82a1c1ea __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x82a6bc30 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x82b6aa23 pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x82b8c222 dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x82c14862 __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x82cf31b7 security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dd18ab regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x82ef41a2 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x82f08f11 dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82f1bbde ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x82ff553f iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x82ff9c33 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x8318cef0 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x8322fc7c cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0x83284685 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x83435fc1 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x83467d63 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x8348e4f0 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8349f4e3 l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8353dfff acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0x835bf24e icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0x83675f1e regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x836c5a1e pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0x836efd36 __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x8371a2eb dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x83819bc5 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x8391d8f2 sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0x83a7ea71 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x83b24865 fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83b8dce9 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x83c51222 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0x83c62990 fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0x83d45bbe ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x83da7523 sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x84121d33 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842f046d usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84500dcd bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x846fe681 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x8485342e ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x8489201a sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0x849e78d5 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x84a610a1 acpi_dev_get_dma_resources +EXPORT_SYMBOL_GPL vmlinux 0x84b0e1bb debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x84b56def pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0x84c05d1e unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x84cd506f xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x84ed172e fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x84f358fc wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x84fc6723 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x8509ab79 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x851178d6 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x851ae2dd nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x8538a245 iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x8554ee81 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x857f0900 tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0x85862277 ioasid_find +EXPORT_SYMBOL_GPL vmlinux 0x858e16bd serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x85935a61 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x8593b8f5 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x859b0994 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85a5155e wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x85b15444 arch_set_max_freq_ratio +EXPORT_SYMBOL_GPL vmlinux 0x85b1c626 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85b1ccbe icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85b5a408 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d57d74 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85dd1adc devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x85e5d047 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x85e66235 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0x85fd8212 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x8608fdb6 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x861354fd hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86169f3e amd_smn_write +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x864e1056 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86553d8e fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x86617c31 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866ca6a3 gnttab_page_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x866ff803 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x86700220 acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8677f369 pvclock_get_pvti_cpu0_va +EXPORT_SYMBOL_GPL vmlinux 0x867babce mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868f4c08 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x869a1fd5 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x86b13d2a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x86b427ce clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0x86c43a8c cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86d1efdb pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x86d27a95 acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x86e2b1d9 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x86e346f9 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x870e6816 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x8716e5fa __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x871f1044 serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x8724bb96 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x87348ba2 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x8735ed3d irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x874a0438 genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x8773e87c __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x87887328 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0x87969d36 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x879d6974 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0x879d6b32 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x87b0ed16 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x87cc4816 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x87e64181 amd_nb_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x87f07bca fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x87f0ac8e blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x87f38048 vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x88066be2 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x88135af3 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x881ed737 blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0x88241528 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x8826a3ef ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x882f1191 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x8855079b phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x885abe7f irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x885e8c53 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8881831a nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x889ac87d raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x88a0abf8 bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0x88a7a0f3 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88c81ff1 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x88de06f1 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x88e1a081 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x88e62a6b fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x88ece1f2 serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x89081588 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x890fa0fa btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x89134cc8 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891cc462 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8933c2c8 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x893d54f0 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8948799a devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x894b5333 spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0x89696218 reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x898861cd scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89e340cf acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x89ecd170 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x89ffa58c fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x8a04183b genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x8a0b4ad9 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x8a2045c4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x8a240bff __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a45a555 acpi_unregister_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a4ca7be hyperv_flush_guest_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a75057c iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x8a7bc813 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a7e13ef da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x8a82ddfd bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x8a838ef6 intel_scu_ipc_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x8a963efc pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad5ceb1 __uv_hub_info_list +EXPORT_SYMBOL_GPL vmlinux 0x8aed49e3 devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0x8b08a673 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b32ed5f wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8b46d2ac vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x8b7aa28c handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x8b7b4d8e hv_stimer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9c7bb1 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x8bad9d0a iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x8bdceac4 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x8be21416 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x8be7d918 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x8befcf10 devm_acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c257caa da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x8c2890c5 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x8c42cecb set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c484409 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x8c49b1ba i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0x8c49c7fd tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x8c658778 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7785ef hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c94d71e sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x8c9c8f5c tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8ca3f08c get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x8ca47009 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0x8caa1842 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x8cabd8f0 devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x8cb5be25 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x8cbd6bd2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x8cc79d86 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8ccef6ad fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8cdd3143 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x8cf55d2b blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d27956a kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8d2e507a devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d385139 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0x8d40da17 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x8d4ea995 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d6566b6 dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x8d7a893a sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x8d7ef132 gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x8d9aa52e nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x8da95330 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x8db60db2 phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x8dc1950a device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8dca9568 of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x8dcfd6bb ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8de1b5d6 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x8ded1c16 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0x8e0ea639 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e1e9255 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e263fcb register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x8e2d5aa6 __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x8e2f631b devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x8e3227db proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x8e4096db md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x8e4123b8 do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0x8e4a3cca dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8e4e66c2 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e4f48c1 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x8e531aa9 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x8e61d8c5 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x8e6a210a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x8e6fa8b5 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x8e741f87 devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x8e75f401 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e7c7cbf ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x8e9bd4a3 hv_alloc_hyperv_page +EXPORT_SYMBOL_GPL vmlinux 0x8eaa154d pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x8eaa863a ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0x8eaa9f3c debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8eb211fe cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8eca3d85 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8ee53e31 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8ef7c505 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x8f0265c2 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8f0463b1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f10ecfc usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x8f2eb429 kvm_arch_para_hints +EXPORT_SYMBOL_GPL vmlinux 0x8f2ed730 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0x8f513b62 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8f557d31 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x8f572526 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8f574824 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0a6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8f801d8d rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8f803f3e spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x8f9685fe usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x8fae96c8 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x8fbc6713 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x8fbf0533 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x8fcfaeb5 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8fd64636 iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0x9007d972 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x900df074 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x9024f443 mds_user_clear +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9055d067 fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0x9057b91b to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0x905afa87 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x905d8300 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x905dbd87 iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9063e9b8 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x906cd20a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x90719cff __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x907274dc acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x907fea3e ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x9081b5db btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x9084b044 clear_page_erms +EXPORT_SYMBOL_GPL vmlinux 0x90869efa tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x9094a05d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x909f5f24 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x90a38ad5 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x90a9d8cc hv_is_hyperv_initialized +EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x90aec55e dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x90c8498c apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x91226fa4 alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0x91241efb genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x9127c7b1 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x912c6f48 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x913d5e41 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0x914a00ee cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9155fe65 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x91628481 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x91652ecb extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x9171f3d5 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x91855cb6 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x9194e18f xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x91976ec9 kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91ac931b devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0x91b9a4ba e820__mapped_any +EXPORT_SYMBOL_GPL vmlinux 0x91c24cae cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c8b5b5 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x91d30560 md_run +EXPORT_SYMBOL_GPL vmlinux 0x91f51dc1 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x920ad797 acpi_dev_gpio_irq_get_by +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9212af99 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x92141343 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x921608f8 phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x92295424 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x9231dbe4 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x923be477 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x923d9dba pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9255c97f rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9265814e led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d8e56f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92dd1e3d clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0x92e0f64e xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x92ea50a3 fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x92f12784 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x92f5a378 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x93069b11 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x930c7db4 net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x930fd343 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x931a50d7 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x93335f22 device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x933e69b2 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x933f75e0 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9345e1b3 alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0x93492796 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x934e9899 pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x93504389 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x935bc413 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x936765c7 nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x93725986 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x93aed2d8 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x93bca47e i2c_dw_acpi_configure +EXPORT_SYMBOL_GPL vmlinux 0x93cf32a6 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x93d1d424 gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x93d6c825 irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x93eb4aa4 of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0x93ebd5e2 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x93f17e4b da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x93fe56a9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x941a3d4f clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94207bd9 nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9424058f arch_haltpoll_disable +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x942fec7e __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x947b40c6 cpu_smt_possible +EXPORT_SYMBOL_GPL vmlinux 0x9480ae6e bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a76a39 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x94b572f4 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x94d32f86 bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x94def28d securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f37cf1 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x94f64e37 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x95008ca9 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x95226da1 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954c5112 ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0x954c9bd0 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x9556572e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9564d290 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x956660c7 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0x95688e9f elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95ac2408 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e6fe44 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95efa1db pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x9608a5af devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9615f068 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x96237444 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x96292755 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x962c8ae1 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x963dbb70 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x96513554 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96762e2d uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x9688b217 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x9694ebf1 pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x969574c6 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL vmlinux 0x969fae19 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x96d71ce7 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x96e2dae8 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x96e60bb9 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x96eaf6a8 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x96efd7d2 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x96f1f751 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x97074b85 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9719bcfd pmc_atom_read +EXPORT_SYMBOL_GPL vmlinux 0x97323741 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0x9733e72f devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x9747e959 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0x974b7da5 sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97623558 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x97733a7e crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x977b8316 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x977be5c7 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x97836c19 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x97a40e82 sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x97cbfb34 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x97d12355 hv_remove_stimer0_irq +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97f1611a regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x97f9257c skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x97f93edf rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x98104106 regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0x9810e568 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x981fc1d5 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x982fd011 gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983b4d8d aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x983c06b2 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x983e89dc regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x98406f8b __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x984b07af irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x984b34e1 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98536f22 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98602c16 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x986dc0c8 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987ab0a5 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x988a1a00 sn_region_size +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x9898fa8f gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x989b142c hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x98a87069 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0x98ac26cd led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x98bfa25d regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x98c2e93b devres_get +EXPORT_SYMBOL_GPL vmlinux 0x98c76b49 devlink_free +EXPORT_SYMBOL_GPL vmlinux 0x98ed67fe udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98f4d306 hyperv_flush_guest_mapping +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9911a68e virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0x99201164 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9930f8a3 uv_bios_change_memprotect +EXPORT_SYMBOL_GPL vmlinux 0x99430ba2 acpi_get_phys_id +EXPORT_SYMBOL_GPL vmlinux 0x99497681 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9954b44b blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9970cc70 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x998cbcbd serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x99b358bd rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x99ba84c6 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0x99c2ef72 vfio_iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x99d24052 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x9a001513 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x9a0e7ee3 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2367f6 kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x9a2d0647 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x9a2dabf6 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x9a52022c mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x9a58dd2d trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x9a785cf5 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x9a8f09c1 devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x9aa10304 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x9aa71c2a efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x9aaac699 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x9aad66fc nf_route +EXPORT_SYMBOL_GPL vmlinux 0x9aba3d20 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x9ac03bab wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac514d0 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9ad48f64 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x9adadeed regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x9ae4191f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aef9781 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9b0ae5b9 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b169333 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x9b1a2e75 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x9b1b8d35 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x9b32ff60 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x9b42af98 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x9b492059 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b58b94f vfio_group_get_external_user +EXPORT_SYMBOL_GPL vmlinux 0x9b698c42 ioasid_set_data +EXPORT_SYMBOL_GPL vmlinux 0x9b6de43d wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b737ad1 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x9b7c2cd8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b9fea5e max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bad141d hv_hypercall_pg +EXPORT_SYMBOL_GPL vmlinux 0x9bb6903b debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0x9bc77923 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x9bcbde90 edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0x9bcf27cd ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x9bddce0d bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x9bde33a6 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x9be2831a serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c008123 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9c06ac6b devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0x9c1aa2c6 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x9c1bda22 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9c1c1025 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x9c20b041 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x9c2735ff phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0x9c441b01 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x9c6b3f91 fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c803f6c crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9c9974bb ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x9ca1fd58 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9ca480cc clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9caab9ef acpi_gpio_get_irq_resource +EXPORT_SYMBOL_GPL vmlinux 0x9cb88057 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc9e3e8 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x9cca58f8 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x9cd08257 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x9ce6ea76 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x9ced853c irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x9cf37c44 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x9d0274e4 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d0bd4c2 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x9d14205c cr4_read_shadow +EXPORT_SYMBOL_GPL vmlinux 0x9d1feaf5 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x9d2f59dd led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x9d31d0a1 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9d32f99d tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0x9d347379 led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0x9d39a7d9 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9d57cfec crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x9d61ce6f ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x9d69254f scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0x9d6bbc36 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0x9d7d690f sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x9d8e4d2b skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x9dccee9d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x9dd662a5 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x9de35691 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x9e005e6f cppc_get_perf_caps +EXPORT_SYMBOL_GPL vmlinux 0x9e08d700 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e20ea93 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x9e238628 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x9e2d9b6a dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x9e343c92 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x9e405fb7 dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0x9e423bbc unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4dea0f fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0x9e704514 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x9e726a7a sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x9e7e3e01 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x9e951235 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9e9a9464 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x9e9ac1e9 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x9ea4f4e4 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0x9eb7cd07 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x9ebf5a1b lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ed3c5ef devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9edf2b19 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x9ee315fa usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x9ee5aead fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0x9eed375d dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x9ef34add phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x9efe22e5 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9efe97f8 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9f01c37b regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x9f0d8adb inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x9f1a09eb bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x9f24bb05 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x9f2bc087 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x9f36457e __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f48a9d9 kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x9f535630 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9f713c95 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x9f82665b power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x9f882259 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9fab32df arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x9fb9aeaa dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x9fbfebab erst_write +EXPORT_SYMBOL_GPL vmlinux 0x9fc2c7e3 dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fcf3357 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe8e5f0 vfio_virqfd_enable +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fed04b3 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xa0043e49 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xa0077875 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xa016addd tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa01f942d crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa03c1a19 cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0xa03d3f36 devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0xa0465b0c regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0xa04af49f dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa064bc7d crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xa08a41ce usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xa08e8701 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa08f5e74 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa0a41646 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xa0a5fe94 dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xa0b06842 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xa0b720b4 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xa0bc22e5 crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0xa0c49c6e class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa0c6befa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa0ca4965 devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0d30088 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa0d331b5 pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0d6c87f irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0xa0e9382d dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa0ea3d41 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0f0a72f regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa1074b89 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa107a3c0 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa113f5ae __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xa117988a devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xa141c973 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xa1444993 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0xa14eac53 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0xa14f851b switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xa153473f phy_configure +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1691b63 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xa18ee545 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0xa1a96a8c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa1b286c5 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1b42054 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xa1d6ba7a dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1fa562b transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa2016699 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa21111db posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa2128916 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa222f555 relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xa2280e8c sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0xa259e28b phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2817c33 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xa28c6d60 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xa28f0c2e irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0xa28f24ee wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0xa29a09c9 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xa2af54b3 irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xa2b29425 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa2c6f167 dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2d17092 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xa2de839c key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2e9be56 open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xa2efc2ed device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xa2f7487f hv_is_hibernation_supported +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa313d49a crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa32685a0 sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xa32695a4 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa3320fe0 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xa3382de2 irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0xa3485320 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xa3659b5f __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0xa36a1543 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xa375ef13 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xa38426e5 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3872571 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a526f2 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xa3a9797e device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3b9ef94 iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0xa3d22cd5 bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0xa3d97286 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0xa3ec32f2 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa41e2e73 cpuidle_poll_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa429de4e rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa43a6d2a ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa43b5b8f espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0xa44084a6 add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4550f19 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa463eb1e ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48c07d4 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xa496c305 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xa4a626a4 cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0xa4a84109 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4b6717c apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa4bba564 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xa4bfca0b devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xa4d04fe4 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xa4d80c73 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4e7fe6c blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xa4ebe450 fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0xa4f066d8 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa50335f4 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0xa516fda6 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa547cf1b vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0xa55788ae i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xa566fc70 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0xa5747e1f param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xa57ad66e attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xa5986813 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xa5a3d133 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa5aa429c pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xa5bda8a1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0xa5be44a6 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0xa5c33c01 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0xa5d797d7 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5e701f9 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f2b88e iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5f7f648 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0xa5f824ad init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa60c1680 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa60ecd72 cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0xa6105b94 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62af85b rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xa62e9d91 perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0xa638c365 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xa63d3f13 pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xa63fc8a8 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xa666ef4b init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa6824f3f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xa69a4902 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bcfa93 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0xa6c26593 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xa6cbe357 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f6b035 pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0xa6ffc6bd fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa7127da7 mce_unregister_injector_chain +EXPORT_SYMBOL_GPL vmlinux 0xa7139b71 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xa729283c __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xa731f387 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa74312c9 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xa75c1bd8 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xa77b1cea ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0xa7ad7818 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xa7bc396f key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xa7cf698b debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xa7d250ad tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0xa7d56095 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xa7de3119 gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0xa7ebf153 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xa7fadd9c nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa82d9c98 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xa838b83d register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85d2196 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xa8600d50 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8ae8351 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8cbe35f blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0xa8d10648 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa8d243ec scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0xa9039fc1 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa91674ae strp_process +EXPORT_SYMBOL_GPL vmlinux 0xa91819c4 dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0xa91efa2c perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa973f4ab nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa97bc9a6 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa97ccea6 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa97ff816 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xa98287a1 mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0xa9854364 umc_normaddr_to_sysaddr +EXPORT_SYMBOL_GPL vmlinux 0xa99cd44c spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9adc560 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9bc8b74 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ed7822 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa12da98 gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0xaa16fe69 fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa2da0a2 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xaa39a6d4 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xaa5aee1c uv_bios_mq_watchlist_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa86cfb5 uv_possible_blades +EXPORT_SYMBOL_GPL vmlinux 0xaa89a3cb iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xaa8fad3e skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa443a balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xaaac9213 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xaabc2aa4 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xaabeee4c fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xaac964a4 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xaacc51ba tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0xaad2ebd0 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xaada9fa4 spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0xaae49e8a pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xaae6f151 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xaaee01f4 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaff78ef iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0xab00d0e4 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xab00e333 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab2b61c9 dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xab626138 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xab653fa0 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xab68aafc edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0xab6a97d0 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xab6fa743 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0xab766d53 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xab830d34 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xabb02cb0 dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xabb8761a gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xabc298d0 intel_scu_ipc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcd1979 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0xabd76419 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xabe0b441 fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xabeaef83 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xac08e482 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xac263074 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0xac266fd2 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xac4792c8 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0xac4a6870 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xac6e56c4 dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xac6eaaac bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0xac76adbc pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0xac9ac604 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xaca5f02c __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacbe7cb1 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0xacd7bd5a __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xace9c868 icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0xad051491 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xad0f2b6c unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xad31d8f3 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xad42a96b devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0xad482b27 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad5f0017 perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad7e249f devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xad8522ef usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xada1a038 iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xada81ef4 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xadd6a7d3 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0xadd7f17b adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xade59bf5 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xadea4783 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xae262acc dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae79d759 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae82c854 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xae95c928 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0xae99a90d ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xae9de236 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xaea4a44a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xaeb12315 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xaeb1592f netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaeeb4e58 regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0xaef5cf2d gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0xaef932bd mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0xaf0b6ba7 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf404485 cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xaf55d5f5 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xaf78b8e2 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaf878107 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xaf91a0aa pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0xaf97b4ca fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0xafadd957 devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xafb35473 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xafcb5ae9 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xafdd0eaf validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xafeda59c __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xaffb6e9e iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xb0117096 bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0372209 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xb03a3c5e usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xb03f893b crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0xb04041f2 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xb04422f4 xen_remap_vma_range +EXPORT_SYMBOL_GPL vmlinux 0xb06a47d8 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08012de gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb0a219d6 serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c4b698 sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xb0d0a33f usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d5d7ad pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb0e2235c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb0e8e671 xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xb0f3cc5c clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xb0fbb722 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb115176d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb129e33a fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0xb13b4cf7 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xb141fc09 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15f9061 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb1687786 rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0xb16eddcd ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1854b31 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xb18bc2e2 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xb1bc7754 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e25b63 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xb1ecddd9 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xb1ed1c5b usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb1ef0548 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xb1fe06d1 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xb1fe1c1d ptdump_walk_pgd_level_debugfs +EXPORT_SYMBOL_GPL vmlinux 0xb211c1ae led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb23434de register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xb23cc41a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb25e563a lookup_address_in_mm +EXPORT_SYMBOL_GPL vmlinux 0xb25f6aee relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xb269e438 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27723e7 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb2855c2a blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0xb28a57d3 device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xb29c2d73 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xb29f0a14 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2b7dad5 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2c908a9 mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0xb2dc7100 sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0xb2de4cf2 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xb2df328a tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f98b1d fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb304cc55 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb309da71 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xb31ea5e8 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xb3203c34 bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0xb3211317 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb32273e3 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xb32348be relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3351c6c rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb34346a6 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xb345b535 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xb3541e04 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb3626d1f crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb365e1d8 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0xb3697565 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xb37798e8 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb3833475 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xb383d2e2 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb38b30fb serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb39843d3 perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0xb399942f ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb3a2e256 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb3ba1acd iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb3c5ecd9 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xb3cc2643 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb3dabb86 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xb3dc8d0b dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb40e314a i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb41c17a6 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0xb42a48f2 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0xb42eb2cc vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb445a83d __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb44c117e __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb44fb82e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb45748c4 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0xb45e035b gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0xb4602f5b bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xb47ac8e3 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb480f729 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d6f696 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eb342b sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4ef4a04 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb4f2a4cb call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xb4ff6bb6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb507c283 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb50c1ffe regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0xb50e1f27 __uv_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xb510c250 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xb5112407 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0xb5144625 fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb520eb79 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb5220cc1 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb5358bc8 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb53b3041 devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb5412e00 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xb54951e7 edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0xb54c3574 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xb55de71b generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xb5645acd spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xb5699922 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0xb583cbe2 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb5a4da19 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xb5a83e35 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xb5a8c226 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5aa769e blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xb5c0c844 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xb5c71f56 sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0xb5cdfe91 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xb5cf14a6 acpi_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb5d8485e spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0xb5d982b4 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xb5ded66c ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0xb5e1fb9b nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0xb5ebea2a blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xb5ed48c8 bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb60c964b tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62769e5 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb62c9fa6 regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb63a5dc6 iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0xb645e53b device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0xb6571b4f dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xb669552e bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb678d154 dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xb6888188 klp_shadow_get_or_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6abdc54 tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xb6c5e614 acpi_processor_evaluate_cst +EXPORT_SYMBOL_GPL vmlinux 0xb6ca9dd7 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eafdae aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xb6eb226f __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0xb6ec5e67 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb702838b alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0xb71e6b5f fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0xb75041d1 hv_stimer_legacy_init +EXPORT_SYMBOL_GPL vmlinux 0xb75060e4 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb75f8eda get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xb761318b sev_active +EXPORT_SYMBOL_GPL vmlinux 0xb79c754a scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7c06a35 xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f381c5 rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0xb7f73ef8 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0xb7f990e9 rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xb8062794 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0xb80a297a inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb80bef54 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xb80bf336 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0xb816bfb3 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb8273d0b __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xb844ba67 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xb845630c dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xb848c70d extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb855123d modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb87da378 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb883fc20 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xb88982d2 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb88ee54f device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb895a78b gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0xb89c980d regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8b3027b da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb8b9be30 thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ecf559 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xb8f11603 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb91a8977 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0xb91b4ad0 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xb923006d debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0xb92f74c2 blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xb94b8523 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb956f0a3 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb96c5660 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xb96dd2bf pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xb973e0f8 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xb98c10d9 pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xb9b257a6 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0xb9b63a70 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c16f51 hv_max_vp_index +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cecf1a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9ed45c4 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb9f89246 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xb9fe9eb9 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xba0074af pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xba01ec83 hv_stimer_global_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xba133f94 usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0xba20cb2b device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xba220db7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba55b1f8 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xba82d3c5 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xba9213de event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xba984d9b acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xba9f7181 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xbaa2b72e crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0xbaa9d957 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xbab266b1 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabec81a __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0xbad6abb7 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbaf9d785 __tss_limit_invalid +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0b25d2 register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0xbb10d7a3 pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb127f4e watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xbb1b7dc3 tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0xbb39ae85 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xbb4e3ec3 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xbb5f93dd security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6b9582 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xbb6dbac7 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb706a65 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb72ad6a md_start +EXPORT_SYMBOL_GPL vmlinux 0xbb8c7a23 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0xbb93eec5 ioasid_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb9f477e kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xbbacd8e5 tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbbfb4a4 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xbbc8aa1a clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xbbd2696b unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbbe8438b devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xbc023eef dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xbc04bd46 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0xbc08637e usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xbc138bb9 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xbc24d5e9 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xbc256386 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xbc28b29b tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xbc2dda30 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc42720a ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xbc4a3c7c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xbc5ff2f2 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xbc60dc37 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc6d705e inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbc831ce5 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xbc94b6b3 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc96432e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xbc974f7c xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbc986268 blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xbc9b8588 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbcab36ca vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc54d34 fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0xbcc91d6b do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd09c9b devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce2b980 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbce7fbc6 __xenmem_reservation_va_mapping_update +EXPORT_SYMBOL_GPL vmlinux 0xbceefc73 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd1c5b71 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xbd1df2a0 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xbd3a3052 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd42c663 kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd491498 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd53f2e6 gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xbd5ca71a device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd65497c sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd67cf9b phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbd7395f4 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xbd806d70 bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0xbd8f36a6 intel_pmic_install_opregion_handler +EXPORT_SYMBOL_GPL vmlinux 0xbd958218 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xbd96cffc fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0xbd9f9dd1 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbdb2dfd5 uv_bios_reserved_page_pa +EXPORT_SYMBOL_GPL vmlinux 0xbde901bd xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xbdfecbf4 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xbe0ff610 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xbe22044e rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xbe374371 nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0xbe46ca11 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xbe4d9cb9 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe5c888b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe64e0e5 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe744257 efi_get_embedded_fw +EXPORT_SYMBOL_GPL vmlinux 0xbe788218 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xbe7b1d67 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xbe8901c3 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xbe930534 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb37c3a ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xbeb62736 acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbec66c3a __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf187e7e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xbf221f03 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0xbf46d8f2 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xbf5e4c26 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xbf666608 gnttab_pages_clear_private +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf88a70e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xbf9d435e __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xbfaef10c ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfb59748 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xbfb98d50 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfcb2c6a __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbfd486ed ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0xbfe216cf fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfec7fc8 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xbfed2cd9 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0xbfefa7b0 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xbff3a656 xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xbfff7381 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xc01273f0 of_css +EXPORT_SYMBOL_GPL vmlinux 0xc04089de cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xc0665dcb netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0xc06843f7 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc071818d bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0xc076601d eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc0806d94 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc08bbce6 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0xc0a0624f scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ac6cdf tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0xc0d81473 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0ddd1eb iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xc0e04b20 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xc0e12472 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f38ec4 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc0f596b8 serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0xc0faee28 blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xc0ff0030 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xc1065757 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc12afa37 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0xc133518f pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc14d57ef device_register +EXPORT_SYMBOL_GPL vmlinux 0xc16284b0 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xc1635b8a unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xc170fd3d __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17e9946 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xc18cdf36 amd_df_indirect_read +EXPORT_SYMBOL_GPL vmlinux 0xc19ce6e0 ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc1b252a7 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xc1d4c68a crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL vmlinux 0xc1fddf5c tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xc2007442 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc21f2613 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc25b527d tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc25eb3c0 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc2694770 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xc271bbbb iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc285d9db sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc294dd5a dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xc298b56f tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc2a3e570 errata +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2b478b2 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0xc2b8ca68 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc2d1592c find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0xc2d71c0e __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0xc2de27ca hest_disable +EXPORT_SYMBOL_GPL vmlinux 0xc3150ad3 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xc31f8e9d cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0xc33ceba5 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc343c643 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc36bc477 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc386d817 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xc38c7ed7 apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc3939d09 regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc393cd1c edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc39e0d2f usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc3a13cfc kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xc3aa92b2 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc3ae0d38 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0xc3bb14c9 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xc3bffaef spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0xc3c097bc __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3cc3dda serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0xc3d408bf sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0xc3dc0ed0 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3e95fdb pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3edf6aa save_fsgs_for_kvm +EXPORT_SYMBOL_GPL vmlinux 0xc3f9c412 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xc4081295 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xc40f4e07 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xc423a562 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc426c51f klp_shadow_free_all +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4358e24 __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc43e92b9 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xc445c2bf blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xc44f56eb securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45d0d13 injectm +EXPORT_SYMBOL_GPL vmlinux 0xc45e23e4 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xc46324f6 dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0xc4661240 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0xc4698280 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL vmlinux 0xc4929c25 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc4935e1f regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc494cfe9 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc4a72936 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc4ac8eef __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xc4b1bc76 of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xc4e66296 serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4fcaa9c bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0xc50cce6d pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc5156bf3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc51e13dc iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xc5262f73 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xc52cb85f yield_to +EXPORT_SYMBOL_GPL vmlinux 0xc52f0388 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0xc52f26a6 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xc53c1e23 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xc54aabb9 sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xc54bc823 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc58ca103 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xc58e13c3 devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0xc594d840 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc5996c8c pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5b31155 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xc5b87d8d bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xc5ba0dee bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0xc5d789df alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc5d89cab acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc5e6f171 __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xc5f9bf00 pwm_lpss_remove +EXPORT_SYMBOL_GPL vmlinux 0xc600a8fa nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0xc617ee99 user_read +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc62b8522 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc62e0c13 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xc638b674 devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc646b1d3 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc6523be9 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc6572a90 xenbus_read_unsigned +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc67bd2ca sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xc682f838 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc683da81 set_memory_decrypted +EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6aaa72e evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc6afad28 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xc6b10427 ex_handler_fprestore +EXPORT_SYMBOL_GPL vmlinux 0xc6b2d0ea pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0xc6c49df5 dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0xc6cab405 pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0xc6def34b gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xc6eec8f5 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc70ac1a5 wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0xc715b52d power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xc718b166 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc729e9c0 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xc7856e74 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xc792c3c9 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b3c870 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xc7beb501 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc7c23ff0 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0xc7ced1e0 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc7fa7ed6 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc8061167 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xc8090299 rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0xc80a2c13 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc81c748e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc81cb9a7 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xc827e705 seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc839c1ce trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc83e7d91 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc85b066d enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc86bd0e0 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0xc87172d6 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc87fb025 xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc8835ac1 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0xc88b10a7 ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0xc89f10ee sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc8c2a33c devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8d2218f intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc8d5546c rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8f162c9 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xc8ffe357 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc9102e4b __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc912da18 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc925f760 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc92aeb8e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xc9345c0f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc93a0d9d virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc93ab949 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97a00c9 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc99ee506 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9a12c73 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xc9a4b416 copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9db9beb pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc9df7601 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca009988 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xca167d6b irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xca195667 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xca231e9f __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0xca25f774 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0xca26811e tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0xca426bfc efi_mm +EXPORT_SYMBOL_GPL vmlinux 0xca467318 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xca5a81da md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca932a9e thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xca99eeed gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xcaa68533 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac2fef6 tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0xcac41bec locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xcacd88a0 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xcadbcb67 skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xcadbe06f simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xcae11b05 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xcae2042d platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xcaf1d958 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xcaf901c9 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb23c1c1 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xcb25d1b0 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xcb28945b sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb34b060 crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0xcb352d4c nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb72f689 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcb80f0fc usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcb821e29 phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0xcb8a461c hv_stimer_legacy_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xcb970751 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xcb98827a regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xcba07ca9 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xcba9e979 blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0xcbadb25c event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xcbb025ac ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xcbbc4b7f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcbbd2df1 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcbc676c3 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xcbc96e55 spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbcdd669 pwm_lpss_resume +EXPORT_SYMBOL_GPL vmlinux 0xcbd8282b acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xcbd9922d ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0xcbdb4ec1 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xcbdeb93d bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcbe4c5f2 devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbfec966 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xcc016982 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xcc03cb9d pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xcc1128b6 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xcc135b46 xen_remap_pfn +EXPORT_SYMBOL_GPL vmlinux 0xcc15d4da fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xcc1863db __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0xcc1c37b8 fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0xcc2698d2 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc312197 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc3ed001 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xcc3fe4b9 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xcc504938 clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0xcc5104d0 copy_mc_to_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcc5ae9e8 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0xcc5d33c7 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc5eeb92 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0xcc8264e4 phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcc9385cb gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcc9bfd24 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0xcc9e8c2b perf_msr_probe +EXPORT_SYMBOL_GPL vmlinux 0xcca83668 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xccb3a4bc pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xccb93937 iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0xcccaf9df shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcccd2b32 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccec296c nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0xccf25c66 cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xccf59fda apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xccfcfa64 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd2fdb79 tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0xcd398a95 devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xcd3e5c7c acpi_release_memory +EXPORT_SYMBOL_GPL vmlinux 0xcd444e03 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xcd4e8dd7 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0xcd5f1c06 ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd81a945 switch_fpu_return +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb61188 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcf5273 pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xcdd1e305 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xcde26600 cppc_get_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xcdfbee13 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xce0a4020 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0xce1d3272 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xce24e288 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xce34720a regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xce3f9556 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xce465bd2 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xce5c8140 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xce613e28 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0xce6417d9 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6dd495 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0xce6e2d1e pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0xce81755f iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xce84f9bd device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xce879052 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0xce8ee6fe device_add +EXPORT_SYMBOL_GPL vmlinux 0xce905ecc wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xce9767e0 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce9bc53a wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xcea03117 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcea51ce6 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xceafd233 devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb66bec sched_clock_cpu +EXPORT_SYMBOL_GPL vmlinux 0xcec6b7d3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee26726 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xcee5f58c devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xceed8318 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xcefd8927 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0xcf07d8b1 irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xcf0fe8f2 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf114da5 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xcf1414e7 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0xcf1e4ffd perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xcf24e7b0 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xcf3f0ed7 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf564f90 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xcf62096b pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xcf6399ad regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xcf6d08c5 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xcf83c7ed wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xcf8bab8e fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xcfaaca47 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcfac737a perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xcfbb4211 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcfbbb2f9 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0xcfc15f4b rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc67822 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfcf9d09 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xcfd29a75 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xcfd30d71 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xcfd9e6b3 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0xcfda598f dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0xcff508bc devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xd008129b lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0xd0161898 fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd01a1cfe do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0xd02de3bd synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0xd02eb766 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xd03470e5 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd048333d xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xd049b44a ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xd04ed230 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0xd05fe47f irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06a68b3 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xd075ce89 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xd08f903d led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0xd09911a6 acpi_dev_get_irq_type +EXPORT_SYMBOL_GPL vmlinux 0xd09a4b5a crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0xd09aa686 bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xd0a5a81b fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0xd0b364a0 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd0bed2d0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d156e9 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xd0d3f0a4 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xd0da7bfd phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd119c3c1 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd12765b5 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd1339547 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xd13f2a69 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd176228a regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xd18295f7 crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd182ab64 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xd1a8a295 hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xd1a9be20 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xd1b2abf6 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xd1b749f1 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0xd1bf9521 phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0xd1c9ea0a blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xd1cac7bf unregister_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1cf864b pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xd1da535e pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0xd1f28cc3 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1faf54c generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0xd1fbc889 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd21fa4d2 do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0xd22298e2 strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xd24e9e8c klist_init +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd267f702 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xd269522f devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2748762 fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0xd27f215d gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xd290a7ac devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xd2983702 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd2b0870c dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2c4cdc9 devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0xd2c8ae77 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2d47b84 synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2fb7c0a serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd32694be sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xd329c63b kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd32a0446 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd35f6ebb ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xd361eae4 blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0xd3674b16 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xd36dd01b devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xd37287b5 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xd3752c27 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3b3beb7 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xd3bfa753 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3c6128a crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xd3db97c8 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xd3ebb791 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xd3f0fbf3 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd3fab8fa dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40a3757 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xd4155e9f irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4597869 dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0xd468a066 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xd46af5ef cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xd489fe0e virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xd48fe6b1 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xd4a2902b tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xd4a4a3df acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd4a958cd acpi_cppc_processor_probe +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4bd7812 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c5d9dd acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xd4cb8603 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xd4cfdd91 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd4f0e0b6 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd51049ac tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xd5297abf irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd539d32a serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xd53c67b3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd5566f42 serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5777070 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd57932cd of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xd57fbd31 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd590698a devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5ad357f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xd5afd7ad ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xd5b16ac8 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xd5b57ab3 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5f3bb7b set_memory_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xd5fa3f5e bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0xd5fd6c07 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0xd6056f0f gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xd61a5273 crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd642bba8 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67b2b2e wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd693326a device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd6ad4581 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xd6b8b68f devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xd6c14ac7 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xd6c15054 platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0xd6c30b8d nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0xd6eca215 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xd6f135b9 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xd6f9e837 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd724a45a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xd72c5cd0 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7360fb1 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xd75b2fd0 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd7638c51 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd7894c99 amd_iommu_is_attach_deferred +EXPORT_SYMBOL_GPL vmlinux 0xd7c39fff free_iova +EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7d0a37f devm_acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xd7d1c8cb spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xd7e029d9 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xd7e4cb12 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7f0428b locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xd8209560 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xd82a2bea debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd83c8c7e device_link_add +EXPORT_SYMBOL_GPL vmlinux 0xd84b6e4e class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd868db20 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd885fcfe trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xd894c28b tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0xd897e296 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xd898cc1f ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0xd89cce4a gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0xd8b58aaa wp_shared_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0xd8be3bd3 devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xd8c3824a regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8e45a4e policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xd8e7e13f fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd9096fcf crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd90b4c43 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd90fbf48 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91e5c24 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0xd92f0791 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd939b89f ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xd93a5cb1 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0xd93cbedb dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xd95bacdd devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xd96778f4 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd978bb7d pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xd97a8276 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd9803a66 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xd98e0570 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xd9928a8d cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xd9b4b2f6 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xd9bbefae get_device +EXPORT_SYMBOL_GPL vmlinux 0xd9bd2a03 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xd9c8292f serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0xd9d09aa5 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xd9d3f9ed crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xd9d44a60 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d879 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9e45be8 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd9e8f987 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0xd9ee78ac wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd9f1a4cb fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda0eb9eb __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xda148247 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xda15a15d alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xda1f78ee clear_hv_tscchange_cb +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda467b14 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xda46c472 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xda6ee881 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0xda73059a lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xda7912d4 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xda7b47e8 regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xda882127 extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0xda883b8f inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xda89d748 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdab14c85 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xdab51ef0 mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdad98406 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xdadaec2b dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0xdade056f iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdae31983 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdae75388 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xdaf3c7a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdb1765b3 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb2b18d6 acpi_cppc_processor_exit +EXPORT_SYMBOL_GPL vmlinux 0xdb5fa0f7 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xdb6177d4 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb6712a4 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0xdb735885 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdb74bdc9 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xdb86c329 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8b7a1d xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0xdb92ad02 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xdb94917e ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xdba03ad9 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xdba19780 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xdbbaca64 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xdbc0d2ef led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xdbcd9297 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xdbce5c34 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xdbd10868 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xdbd1767c regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdbd6ee3d aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xdbeb660b fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xdbf29726 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbf66a78 genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfc976f pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1ec5ba fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0xdc206c6c devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xdc21e866 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xdc23a7cb regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xdc53604e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc667e35 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc7df67f apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc885007 dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9d2cfb phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb42b64 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xdcb5558f ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xdcd14cbd ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xdcd18d2f queue_iova +EXPORT_SYMBOL_GPL vmlinux 0xdce23a83 sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xdcec6bf5 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0xdcf075f0 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xdcf44c3f wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdcf853d3 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xdcfa9f7f irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0xdcfde52f sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd0b0ab2 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xdd192f2a is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xdd1cd0ad virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xdd1e6898 rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3bedeb crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xdd477924 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xdd54026c crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd6de47a fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0765 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0xdd8af756 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xdd8f420b rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xdda0363d gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xdda42bf8 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc36ab0 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xddc75fee intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xddc7d8f0 nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xdddc74ca dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xdde9d92d tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xddf4da4c pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0xddff7c66 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xde09a94d xas_find +EXPORT_SYMBOL_GPL vmlinux 0xde1675ea crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xde16dda3 pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0xde1f46a7 devm_request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0xde2d3af0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xde35a696 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xde3a17d9 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0xde502f4c device_match_name +EXPORT_SYMBOL_GPL vmlinux 0xde54f4c5 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde70da63 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0xde8a608d devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xde92001d anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xde972d4e irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xde9ab8c7 xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xde9f6e41 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0xdea97109 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeac34cf pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xdeae1631 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xdee46d90 dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xdee6a8ac simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xdeefac98 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf0266d3 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca3f4 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf1c0910 blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0xdf223247 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf2fafe3 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0xdf46a5c9 init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xdf4d5270 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xdf5e5a0f pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0xdf60ccf6 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xdf7e0091 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdf8002a8 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xdf81924d uv_bios_mq_watchlist_free +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdf963bc4 phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xdfc3f11c dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfd6da79 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xdfdcdc62 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xdfe7701f fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0xe0080a58 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0xe011ac9f wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0xe04a21fc synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe060469a serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe084cce3 screen_pos +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08c709c iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0bdd8cc inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c83296 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0cd2097 raw_abort +EXPORT_SYMBOL_GPL vmlinux 0xe0d2e08f md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe0edb476 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xe0ee182a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe10d85ff irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xe1126d63 nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0xe114c451 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe13e453e devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xe1444fd5 rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0xe14aa555 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xe1544c3c dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0xe15b7354 devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xe16084c4 devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0xe1664678 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xe16ed325 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18a1e73 crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xe1a4e42a device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1a8578a strp_init +EXPORT_SYMBOL_GPL vmlinux 0xe1a8d7c9 net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe1aa2d62 set_hv_tscchange_cb +EXPORT_SYMBOL_GPL vmlinux 0xe1b0ebc7 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c4f2c1 device_move +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1cd7470 fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0xe1cdcf21 crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0xe1e4df72 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0xe1e860dd md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xe1e92b95 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xe1fc08e9 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0xe20fcf99 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xe2164e7d vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe2179936 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xe21e70bc rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xe22e0ee1 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe2309c89 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe234ac3d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe23d4e48 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xe23d9cc6 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xe2555006 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe2582a12 btree_init +EXPORT_SYMBOL_GPL vmlinux 0xe27f75e6 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xe27f8009 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe28665fe wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe2e3a476 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xe2f80305 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xe2fc325d __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3143c31 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xe31c0b93 serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0xe329399e irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xe329ba24 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe338c5ac inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0xe34198f0 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xe37dfc75 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xe386a09b devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xe39a407c fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3a5a9cd devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3b0bdc3 phy_modify +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bca97a rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xe3cd5fae klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe3d16092 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe3e88acb __get_current_cr3_fast +EXPORT_SYMBOL_GPL vmlinux 0xe3ec2182 fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0xe3ee77bd dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0xe3f5f9ed component_del +EXPORT_SYMBOL_GPL vmlinux 0xe402b2fe clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xe403e6ac gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe41196a6 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe412dbd7 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xe413b43b xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0xe41f816c led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xe4248980 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xe42614a5 pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43dbc8e iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xe44030e3 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe442e0d2 regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe46dcf0d to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xe47b281e sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe48611ac trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xe4874aef __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe4932b13 cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0xe495926a alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49d8890 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4c01109 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4c52908 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe4e04578 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4ea7868 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xe50615f7 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe50d441a clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0xe512186a unwind_next_frame +EXPORT_SYMBOL_GPL vmlinux 0xe5125054 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe5158f3c decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xe5190d96 dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xe52a4ac9 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0xe54c6d58 put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xe5649f7f device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58aa56b debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe58ec83f switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xe595d69b device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xe5abc599 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe5b92186 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe5c02b64 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe5d37e5e devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xe5ef6b02 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe5fe9e92 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe6086a46 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe612c4e8 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xe61f1342 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe62ba613 __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0xe63db38c sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0xe642ca8b acpi_subsys_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe6571753 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0xe6838761 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe68f3201 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xe693ff3f sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xe6a257f1 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6af828b icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0xe6b71abf devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xe6bf39cb palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xe6c6fd26 led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0xe6db7c60 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6e4124c pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xe6e4b72a usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xe6e90fd0 wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xe6f52443 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe6f5e6f5 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0xe6f66d6f pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6f8a04f dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0xe6fca8d3 devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xe70b9f04 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe7166d87 cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0xe72013a2 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7351c87 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe73aa49b rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xe740b58a hv_vp_assist_page +EXPORT_SYMBOL_GPL vmlinux 0xe74cd245 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe74e5c0a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75bc91a fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe7641730 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76c3b2d acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe788b593 mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0xe78e6d01 devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7967472 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xe79bf0c4 klp_shadow_get +EXPORT_SYMBOL_GPL vmlinux 0xe79cde0d ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xe7a4d9fe blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xe7b513a0 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xe7bb05f1 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xe7c4de4a usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xe7cbe431 nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7e0bb1e __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0xe7ec799e sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7fe76a5 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8070608 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe81e8b22 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xe8302b0f fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xe8305ed6 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe83eba32 itlb_multihit_kvm_mitigation +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe851cb66 usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86cf250 devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe87adc1d intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe8b40f33 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe8dd2ee3 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xe8f5391f ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xe8f6ab45 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xe90463c4 devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xe90907c0 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xe90a7f06 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xe91cfab8 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe91dda22 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe948465f ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe9579682 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xe95c9f58 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xe95d11b3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xe970f065 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xe976d234 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe97ffba6 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xe98941c1 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0xe99f42da cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe9b3e9e8 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe9c6f96b virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e18eb7 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0xea1194b5 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea18d680 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0xea1a2a3f param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xea1ed218 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0xea2719dd pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0xea34a039 crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea482bb6 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xea543ec6 regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xea61860f pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xea65ec65 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xea7aa0b5 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xea800b1c i2c_acpi_find_adapter_by_handle +EXPORT_SYMBOL_GPL vmlinux 0xea8532dd spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0xea89976f pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xeaa1e847 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xeaad96f9 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeae57df6 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xeaf7fe0f sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb1814ce balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0xeb2ddfc3 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xeb37ac4d akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb474fb0 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xeb53ed7c sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0xeb59ba27 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb740f45 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xeb7cb802 mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb8391b8 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xeb992b38 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xeba621e0 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xeba8b29f __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xebbda679 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xebbf5350 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0xebc0973c inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebd5cf51 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0xebfba685 ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0xec119dd4 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xec1628e6 pv_info +EXPORT_SYMBOL_GPL vmlinux 0xec20016c mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xec254b3c __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xec2a9a74 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xec39ecac fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec5ad73b trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xec660cd3 __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec722ca4 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xec74c673 pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec788566 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0xec86e148 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xec9dfc85 encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xeca0394f fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xecba68e3 gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0xecd8f23d xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xecf2d506 direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0xecf91ccf pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xecf930db devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xecf9e6c8 sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0xed16e4bf devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0xed1bcb5d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xed632987 devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed655b24 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xed6582f1 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xed66f540 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0xed74dab9 pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0xed7c7b91 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xed926e00 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xed98190b input_class +EXPORT_SYMBOL_GPL vmlinux 0xed9deda6 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0xedb7c60b regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xedbb2aa7 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xedccbb47 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xedce64d1 iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0xedd092d5 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xedd428d0 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xedd55077 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xedd87292 __unwind_start +EXPORT_SYMBOL_GPL vmlinux 0xede98ec5 intel_pt_validate_hw_cap +EXPORT_SYMBOL_GPL vmlinux 0xede9a09a btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xee139504 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee1828e6 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xee230c59 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xee373d78 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee4244eb scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xee5e145d devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xee60cce6 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xee6467c7 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xee73a5b4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee76b593 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0xee7d1d55 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xee8200e4 nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xee97ed93 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xee9fcda6 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xeea323aa memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xeeb4f6bc ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeee667d3 fpregs_assert_state_consistent +EXPORT_SYMBOL_GPL vmlinux 0xeeee42e1 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0xeef381dd crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xeefda288 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef20b689 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xef2139e0 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xef2433ab reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xef28e374 i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef30f09c powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xef333004 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef378a97 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xef38051d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xef44dfb2 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef52071d is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0xef604210 sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0xef6731dc i2c_acpi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xef6abb5f platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6e9d28 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef876e8a crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xef8abbbd icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0xef8fc95f kvm_async_pf_task_wait_schedule +EXPORT_SYMBOL_GPL vmlinux 0xef92ef33 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xef9b023a fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb26e63 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xefbb5088 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0xefda3dd3 metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xefe2c402 udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xeffe21b6 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xf019f624 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf01cb957 dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0xf029c210 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf0432ed8 crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf04429b4 acpi_bus_get_status_handle +EXPORT_SYMBOL_GPL vmlinux 0xf048faaa __xenmem_reservation_va_mapping_reset +EXPORT_SYMBOL_GPL vmlinux 0xf04db8ac napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xf0504ce5 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf0648558 devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06d1ee2 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0xf08050c4 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0921d10 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0xf09e102f acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xf0a02925 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf0a07a61 spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0xf0b61125 serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0xf0d478c7 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xf0dd9ffc ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xf0f820b5 extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xf10d76b8 serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0xf115a271 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf14740aa exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf1700158 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xf174dc0c ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18b7ed6 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xf1989509 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xf198995f pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xf1a09aba blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xf1ab2b1a pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1cd8929 kvm_read_and_reset_apf_flags +EXPORT_SYMBOL_GPL vmlinux 0xf1e02475 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xf1ec1242 trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf230fa2e ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf23b9b97 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf24b77fd dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0xf24bd534 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xf25692b2 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xf25a0f64 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2769c5b iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf27d0a7b gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xf28baa6d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2a29d83 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf2b46c8c serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xf2c970b0 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0xf2d06daf devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xf2d080fc ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2e725de devm_memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0xf2e81f09 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf2e8ccb5 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3095659 klp_get_state +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30e0ab9 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf318fa5a skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf335596e of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xf339672f __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xf33d5646 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xf34039fb fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xf34cd61e adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf3552f59 devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0xf359e4c8 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf35c82ed usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf3682b0f relay_close +EXPORT_SYMBOL_GPL vmlinux 0xf3760ba9 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf3797494 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c9314 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf39ef353 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3b28546 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b95d79 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3bb81de blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xf3cf03aa nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0xf3d6529b dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0xf3f40f40 call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xf3f5382e __put_net +EXPORT_SYMBOL_GPL vmlinux 0xf40d4231 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf422db74 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xf4415da3 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0xf44b0287 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xf4513068 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0xf46145c2 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf4a07f9a efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4e335f1 dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0xf4e67a07 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf4f0f0e9 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xf4f69d1f clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0xf503317e fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0xf5076f65 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xf50bb9b8 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf50e911e copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xf5163b4f devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56066ca acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xf5660c74 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xf56d730f irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf584174d xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xf58ebce8 component_add +EXPORT_SYMBOL_GPL vmlinux 0xf5a09cd1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c1cae6 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5f12a6f usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf600968d iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xf604f670 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf6120c22 bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0xf6142abf pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf622dd90 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xf6230e49 fpregs_mark_activate +EXPORT_SYMBOL_GPL vmlinux 0xf6323d62 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xf63646d6 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0xf63fe396 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xf64dec76 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf6585ca0 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xf65d0dae dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf66469b2 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xf671d928 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xf671e2f0 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xf678bf2f sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6c9228c sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xf6e6990c bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6edaa59 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf6f8b80a tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6fdff0c regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf70e4a4d preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf71e9940 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xf73c6a89 tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xf7604204 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf767ca35 fixed_percpu_data +EXPORT_SYMBOL_GPL vmlinux 0xf772f9ea regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0xf775399e devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xf775fd70 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xf7866b4f bind_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf7a2687e user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xf7a6adae page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0xf7aa0b8d crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf80e3886 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xf81249ab report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0xf821eef2 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf84d82ae firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0xf84e28a2 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf85a0f1a xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xf86b9685 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xf872dffa bind_interdomain_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf87d205e update_time +EXPORT_SYMBOL_GPL vmlinux 0xf87eb9a5 shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf881cecd load_fixmap_gdt +EXPORT_SYMBOL_GPL vmlinux 0xf88faea8 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8c330fa __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf8ce4643 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xf8dbc798 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0xf8e1f16f pci_msi_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf8f354ed skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3986 pat_pfn_immune_to_uc_mtrr +EXPORT_SYMBOL_GPL vmlinux 0xf90a26d4 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xf912b7e3 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xf913116a pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf91ab2ed __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93911f8 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0xf947cda6 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf963d3ba xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0xf98d12c8 crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a5bb53 iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0xf9a9adc5 gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0xf9ac1819 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf9aebf09 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf9b08686 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xf9b5ce12 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xf9b5ffb1 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xf9bc310e skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0xf9cafd7e regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfa0a8896 acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0xfa145a4b iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2c0ced led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xfa3258c0 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xfa349688 aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3d1a6f spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0xfa3d877f dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xfa42ab65 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfa49312c dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0xfa5d1112 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xfa633674 regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa66e37a tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa680218 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa6da694 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0xfa71606d ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xfa78a1cb tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xfa7a3ecd class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfa823077 i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfa9a79d8 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xfa9a7a9a debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xfaa4bcd9 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfacd8f50 bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfaf50fd2 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0xfafc2eeb extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xfb05d9f5 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xfb0ec7a4 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0xfb322290 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb53eacb regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfb59ef54 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfb600e83 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0xfb6a6d52 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb906e26 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfb92045c dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0xfba52679 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xfba998c3 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xfbad3c2b pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xfbbac6c8 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcdc74e fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xfbdfc558 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xfbeb20c9 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xfbfa0abf pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xfbffd601 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0797e4 free_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc29090a ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0xfc2aefb5 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfc305194 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3f92ca sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xfc4366e9 mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0xfc471d0f pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfc506532 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xfc746b3c gnttab_page_cache_shrink +EXPORT_SYMBOL_GPL vmlinux 0xfcaa1642 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcec8e10 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0xfcf61a3b bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0xfd06d51b phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xfd0ef6e4 gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0xfd269f25 skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xfd2ed710 acpi_subsys_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xfd40d7e4 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xfd4624f7 i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0xfd544984 usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd8bade6 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xfd9df330 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xfd9f5f87 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdc6266a sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xfdd11327 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xfddd3ef1 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xfde60a1a crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfe01dca7 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xfe08df7b dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xfe0e7cd3 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0xfe31c6a4 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xfe3250ce dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfe3b7097 cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xfe45ff6e virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe57a990 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe6e803d clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe75ea73 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0xfe82097a __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xfe89418f scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea77460 regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0xfebbafc6 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfebc53a9 skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee22afe thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfee79475 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xfeedb884 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xfeeecd05 apei_read +EXPORT_SYMBOL_GPL vmlinux 0xfef26f55 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfefd5ded clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0xff01259c da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xff04f58c ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1e67b9 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0xff2652ad fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3c76bf unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5d761c addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff8e74e2 arch_haltpoll_enable +EXPORT_SYMBOL_GPL vmlinux 0xff979d60 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xff9d5c06 memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xffa329e0 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffb58906 xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0xffd796ae ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xffdb499d register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xffdc2040 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0xfffaa507 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfffd7a99 pin_user_pages_fast +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x28459eb8 ltc2497core_remove drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0x3ddf6714 ltc2497core_probe drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x000ea1c0 mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x225c5d02 mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x24b482bd mcb_get_irq drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x50170fd0 mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x6caf4dd8 mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x8810e11e mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x97df6c94 mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xae07038f chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xbd7ef4b9 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xd8016e4c __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xde0980cd mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xe0ba9893 mcb_release_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xe73b2f42 mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xfedc076c mcb_unregister_driver drivers/mcb/mcb +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0x102bccb0 hda_codec_jack_wake_enable sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0xa50cf6db hda_codec_jack_check sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC EXPORT_SYMBOL 0xaaf99c7f hda_codec_probe_bus sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x2987166e hda_codec_i915_display_power sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x43947153 hda_codec_i915_init sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_HDA_AUDIO_CODEC_I915 EXPORT_SYMBOL 0x9d1c9650 hda_codec_i915_exit sound/soc/sof/intel/snd-sof-intel-hda +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x0ec08d08 sof_cnl_ops sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x5b5be595 apl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x61cf31b7 icl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x703e1716 tgl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0x7b046de6 sof_apl_ops sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xa9a9b2b6 jsl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xacf31f39 ehl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HDA_COMMON EXPORT_SYMBOL 0xf4d48b52 cnl_chip_info sound/soc/sof/intel/snd-sof-intel-hda-common +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0x2288ebf6 intel_ipc_msg_data sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0xa1271f0e intel_pcm_open sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0xbaffeeb3 intel_ipc_pcm_params sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_INTEL_HIFI_EP_IPC EXPORT_SYMBOL 0xd047adb2 intel_pcm_close sound/soc/sof/intel/snd-sof-intel-ipc +SND_SOC_SOF_MERRIFIELD EXPORT_SYMBOL 0x127945f9 sof_tng_ops sound/soc/sof/intel/snd-sof-intel-byt +SND_SOC_SOF_MERRIFIELD EXPORT_SYMBOL 0x8639b9f0 tng_chip_info sound/soc/sof/intel/snd-sof-intel-byt +SND_SOC_SOF_XTENSA EXPORT_SYMBOL 0x2f4a33cc sof_xtensa_arch_ops sound/soc/sof/xtensa/snd-sof-xtensa-dsp +TEST_FIRMWARE EXPORT_SYMBOL_GPL 0x9d8a8803 efi_embedded_fw_list vmlinux +TEST_FIRMWARE EXPORT_SYMBOL_GPL 0x9dd8d0e2 efi_embedded_fw_checked vmlinux +USB_STORAGE EXPORT_SYMBOL_GPL 0x0bae92f3 usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x120c863b usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x23c693eb usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x250eaaa1 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x347c5e46 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3cbe3cc2 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x44a98311 usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x59b44629 usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5e4aea2b usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6744d999 usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6aee32e1 usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6f1f8163 usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x77d0b9d5 usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7bb004c8 usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x938cd5aa usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9392a997 usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x97ccc910 usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa1dd853f usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xb424cc05 usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbc01c02c usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xcb97db29 usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xef1d6aef fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf8ece36f usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xfcdd03eb usb_stor_CB_transport drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/lowlatency.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/lowlatency.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/lowlatency.modules @@ -0,0 +1,5727 @@ +104-quad-8 +3c509 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_exar +8250_lpss +8250_men_mcb +8250_mid +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +9pnet_xen +BusLogic +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abituguru +abituguru3 +abp060mg +ac97_bus +acard-ahci +acecad +acenic +acer-wireless +acer-wmi +acerhdf +acp_audio_dma +acpi-als +acpi_configfs +acpi_extlog +acpi_ipmi +acpi_pad +acpi_power_meter +acpi_tad +acpi_thermal_rel +acpiphp_ibm +acquirewdt +act8865-regulator +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv7511-v4l2 +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +advantechwdt +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aegis128-aesni +aes_ti +aesni-intel +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +ah4 +ah6 +aha152x_cs +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak7375 +ak881x +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +alim1535_wdt +alim7101_wdt +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am53c974 +ambassador +amc6821 +amd +amd-rng +amd-xgbe +amd5536udc_pci +amd64_edac_mod +amd76xrom +amd8111e +amd_energy +amd_freq_sensitivity +amdgpu +amdtee +amilo-rfkill +amlogic-gxl-crypto +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx78xx +analogix_dp +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apds9960 +apex +apple-gmux +apple-mfi-fastcharge +apple_bl +appledisplay +applesmc +applespi +appletalk +appletouch +applicom +aptina-pll +aqc111 +aquantia +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcfb +arcmsr +arcnet +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3935 +as5011 +asb100 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-pwm-tacho +aspeed-video +ast +asus-laptop +asus-nb-wmi +asus-wireless +asus-wmi +asus_atk0110 +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_usb +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlantic +atlas-ezo-sensor +atlas-sensor +atlas_btns +atm +atmel +atmel-ecc +atmel-i2c +atmel-sha204a +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atomisp +atomisp-gc0310 +atomisp-gc2235 +atomisp-libmsrlisthelper +atomisp-lm3554 +atomisp-mt9m114 +atomisp-ov2680 +atomisp-ov2722 +atomisp-ov5693 +atomisp_gmin_platform +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796b +axi-fan-control +axnet_cs +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_charger +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bareudp +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm-phy-lib +bcm-sf2 +bcm203x +bcm3510 +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s-x86_64 +blake2s_generic +block2mtd +blocklayoutdriver +blowfish-x86_64 +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bnxt_re +bochs-drm +bonding +bpa10x +bpck +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmsmac +brcmutil +brd +bridge +broadcom +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c2port-duramar2150 +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx-x86_64 +camellia-aesni-avx2 +camellia-x86_64 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cavium_ptp +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccp +ccp-crypto +ccs811 +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-pltfrm +cdns3 +cdns3-pci-wrap +cec +cec-gpio +ceph +cfag12864b +cfag12864bfb +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-x86_64 +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8505 +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +chromeos_tbmc +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +cicada +cifs +cio-dac +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-cs2000-cp +clk-max9485 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5341 +clk-si5351 +clk-si544 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com20020_cs +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +contec_pci_dio +cops +cordic +core +coretemp +cortina +cosm_bus +cosm_client +counter +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpu5wdt +cpuid +cpuidle-haltpoll +cqhci +cr_bllcd +cramfs +crc-itu-t +crc32-pclmul +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-pclmul +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_ishtp +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_lpcs +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_kbd_led_backlight +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +crvml +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +cs89x0 +csiostor +ct82c710 +curve25519-generic +curve25519-x86_64 +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062_wdt +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +dax_hmem +dax_pmem +dax_pmem_compat +dax_pmem_core +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dcdbas +ddbridge +ddbridge-dummy-fe +de2104x +de4x5 +decnet +defxx +dell-laptop +dell-rbtn +dell-smbios +dell-smm-hwmon +dell-smo8800 +dell-uart-backlight +dell-wmi +dell-wmi-aio +dell-wmi-descriptor +dell-wmi-led +dell_rbu +denali +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9601 +dmard09 +dmard10 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dps310 +dpt_i2o +dptf_power +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drm_xen_front +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-edma +dw-edma-pcie +dw-i3c-master +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_wdt +dwc-xlgmac +dwc2_pci +dwc3 +dwc3-haps +dwc3-pci +dwmac-generic +dwmac-intel +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +ebc-c384_wdt +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_bhf +ec_sys +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edac_mce_amd +edt-ft5x06 +ee1004 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efa +efi-pstore +efi_test +efibc +efs +egalax_ts_serial +ehci-fsl +ehset +einj +ektf2127 +elan_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_pcmcia +ems_usb +emu10k1-gp +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +epat +epia +epic100 +eql +erofs +esas2r +esb2rom +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +eurotechwdt +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-fsa9480 +extcon-gpio +extcon-intel-cht-wc +extcon-intel-int3496 +extcon-intel-mrfld +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fam15h_power +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fjes +fl512 +floppy +fm10k +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +friq +frpw +fscache +fschmd +fsia6b +fsl-mph-dr-of +fsl_linflexuart +fsl_lpuart +ftdi-elan +ftdi_sio +ftl +ftrace-direct +ftrace-direct-modify +ftrace-direct-too +ftsteutates +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gasket +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gdmtty +gdmulte +gdth +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +genwqe_card +gf2k +gfs2 +ghash-clmulni-intel +gl518sm +gl520sm +gl620a +glue_helper +gluebi +gm12u320 +gma500_gfx +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpd-pocket-fan +gpio +gpio-104-dio-48e +gpio-104-idi-48 +gpio-104-idio-16 +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-amd-fch +gpio-amd8111 +gpio-amdpt +gpio-arizona +gpio-bd9571mwv +gpio-beeper +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-exar +gpio-f7188x +gpio-generic +gpio-gpio-mm +gpio-ich +gpio-it87 +gpio-janz-ttl +gpio-kempld +gpio-lp3943 +gpio-lp873x +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-ml-ioh +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio-siox +gpio-tpic2810 +gpio-tps65086 +gpio-tps65912 +gpio-tqmx86 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-vibra +gpio-viperboard +gpio-vx855 +gpio-wcove +gpio-winbond +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-ws16c48 +gpio-xra1403 +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpu-sched +gr_udc +grace +gre +greybus +grip +grip_mp +gru +gs1662 +gs_fpga +gs_usb +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_nokia +hci_uart +hci_vhci +hd3ss3220 +hd44780 +hdaps +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +hecubafb +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfi1 +hfs +hfsplus +hgafb +hi311x +hi556 +hi6210-i2s +hi8435 +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-hyperv +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hih6130 +hinic +hio +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +horus3a +hostap +hostap_cs +hostap_pci +hostap_plx +hp-wireless +hp-wmi +hp03 +hp206c +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hsi +hsi_char +hso +hsr +hsu_dma +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei-wmi +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_sock +hv_storvsc +hv_utils +hv_vmbus +hwmon-vid +hwpoison-inject +hx711 +hx8357 +hx8357d +hyperbus-core +hyperv-keyboard +hyperv_fb +i10nm_edac +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd-mp2-pci +i2c-amd-mp2-plat +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cht-wc +i2c-cros-ec-tunnel +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mlxcpld +i2c-multi-instantiate +i2c-mux +i2c-mux-gpio +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-reg +i2c-nforce2 +i2c-nforce2-s4985 +i2c-nvidia-gpu +i2c-ocores +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3000_edac +i3200_edac +i3c +i3c-master-cdns +i40e +i40iw +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i82092 +i82975x_edac +i915 +iTCO_vendor_support +iTCO_wdt +iavf +ib700wdt +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_qib +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibm_rtl +ibmaem +ibmasm +ibmasr +ibmpex +ice +ichxrom +icp +icp10100 +icp_multi +icplus +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +idxd +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imm +imon +imon_raw +ims-pcu +imx214 +imx219 +imx258 +imx274 +imx290 +imx319 +imx355 +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int3400_thermal +int3402_thermal +int3403_thermal +int3406_thermal +int340x_thermal_zone +int51x1 +intel-cstate +intel-hid +intel-ish-ipc +intel-ishtp +intel-ishtp-hid +intel-ishtp-loader +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel-rng +intel-rst +intel-smartconnect +intel-uncore-frequency +intel-vbtn +intel-wmi-sbl-fw-update +intel-wmi-thunderbolt +intel-xhci-usb-role-switch +intel-xway +intel_bxt_pmic_thermal +intel_bxtwc_tmu +intel_cht_int33fe +intel_chtdc_ti_pwrbtn +intel_int0002_vgpio +intel_ips +intel_menlow +intel_mid_powerbtn +intel_mid_thermal +intel_mrfld_adc +intel_mrfld_pwrbtn +intel_oaktrail +intel_pch_thermal +intel_pmc_bxt +intel_pmc_mux +intel_powerclamp +intel_punit_ipc +intel_qat +intel_quark_i2c_gpio +intel_rapl_common +intel_rapl_msr +intel_scu_ipcutil +intel_scu_pltdrv +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_soc_pmic_bxtwc +intel_soc_pmic_chtdc_ti +intel_soc_pmic_mrfld +intel_telemetry_core +intel_telemetry_debugfs +intel_telemetry_pltdrv +intel_th +intel_th_acpi +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +intelfb +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +ioatdma +iommu_v2 +ionic +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipu3-cio2 +ipu3-imgu +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +ipwireless +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +isst_if_common +isst_if_mbox_msr +isst_if_mbox_pci +isst_if_mmio +it87 +it8712f_wdt +it87_wdt +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcm +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kl5kusb105 +kmem +kmx61 +kobil_sct +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +ks0108 +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +ktti +kvaser_pci +kvaser_pciefd +kvaser_usb +kvm +kvm-amd +kvm-intel +kvmgt +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +lcd +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-apu +leds-as3645a +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxcpld +leds-mlxreg +leds-mt6323 +leds-nic78bx +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-sgm3140 +leds-ss4200 +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +legousbtower +lg-laptop +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lineage-pem +linear +liquidio +liquidio_vf +lis3lv02d +lis3lv02d_i2c +lkkbd +ll_temac +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp8755 +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +mac_hid +macb +macb_pci +machxo2-spi +machzwd +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +marvell10g +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693-haptic +max77693-regulator +max77693_charger +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mce-inject +mceusb +mchp23k256 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-cavium +mdio-gpio +mdio-i2c +mdio-mscc-miim +mdio-mvusb +mdio-thunder +mdio-xpcs +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei-txe +mei_hdcp +mei_phy +mei_wdt +melfas_mip4 +memory-notifier-error-inject +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +metro-usb +metronomefb +meye +mf6x4 +mgag200 +mhi +mi0283qt +mic_bus +mic_card +mic_cosm +mic_host +mic_x100_dma +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx-platform +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_i2c +most_net +most_sound +most_usb +most_video +moxa +mp2629 +mp2629_adc +mp2629_charger +mp8859 +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_ocelot_common +msdos +msi-laptop +msi-wmi +msi001 +msi2500 +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6397 +mt6397-regulator +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-pmic-keys +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxm-wmi +mxser +mxuport +myrb +myri10ge +myrs +n411 +n5pf +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nand +nand_ecc +nandcore +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +nettel +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfit +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-avx2 +nhpoly1305-sse2 +ni903x_wdt +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +ni_mio_cs +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nic7018_wdt +nicpf +nicstar +nicvf +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm750-pwm-fan +ns +ns558 +ns83820 +nsh +ntb +ntb_hw_idt +ntb_hw_intel +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nv_tco +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-rave-sp-eeprom +nvmem_qcom-spmi-sdam +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nvram +nxp-nci +nxp-nci_i2c +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +of_xilinx_wdt +ofb +omfs +omninet +on20 +on26 +onenand +opa_vnic +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +oxu210hp-hcd +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +palmas_gpadc +panasonic-laptop +pandora_bl +panel +panel-raspberrypi-touchscreen +paride +parkbd +parman +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_oldpiix +pata_opti +pata_optidma +pata_pcmcia +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pblk +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcengines-apuv2 +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-hyperv +pci-hyperv-intf +pci-pf-stub +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmcia_rsrc +pcmciamtd +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pciefd +peak_pcmcia +peak_usb +peaq-wmi +pegasus +pegasus_notetaker +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-cpcap-usb +phy-exynos-usb2 +phy-generic +phy-gpio-vbus-usb +phy-intel-emmc +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-usb-hs +phy-qcom-usb-hsic +phy-tahvo +phy-tusb1210 +phylink +physmap +pi3usb30532 +pi433 +pinctrl-broxton +pinctrl-cannonlake +pinctrl-cedarfork +pinctrl-da9062 +pinctrl-denverton +pinctrl-geminilake +pinctrl-icelake +pinctrl-intel +pinctrl-jasperlake +pinctrl-lewisburg +pinctrl-lynxpoint +pinctrl-madera +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-sunrisepoint +pinctrl-tigerlake +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn544_mei +pn_pep +pnd2_edac +poly1305-x86_64 +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +processor_thermal_device +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +pt +ptp_clockmatrix +ptp_idt82p33 +ptp_ines +ptp_kvm +ptp_vmw +pulse8-cec +pulsedlight-lidar-lite-v2 +punit_atom_debug +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvcalls-front +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm-cros-ec +pwm-iqs620a +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pxa27x_udc +pxe1610 +pxrc +qat_c3xxx +qat_c3xxxvf +qat_c62x +qat_c62xvf +qat_dh895xcc +qat_dh895xccvf +qca8k +qcaux +qcom-cpr +qcom-emac +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-vadc +qcom-vadc-common +qcom-wled +qcom_glink +qcom_glink_rpm +qcom_spmi-regulator +qcserial +qed +qede +qedf +qedi +qedr +qemu_fw_cfg +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1b0004 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ramoops +rapl +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +ray_cs +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcuperf +rdc321x-southbridge +rdma_cm +rdma_rxe +rdma_ucm +rdmavt +rds +rds_rdma +rds_tcp +realtek +realtek-smi +redboot +redrat3 +reed_solomon +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +repaper +reset-ti-syscon +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rocker +rocket +rohm_bu21023 +roles +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sd3078 +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wilco-ec +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +sample-trace-array +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sb1000 +sb_edac +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbs-charger +sbs-manager +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +scif +scif_bus +scr24x_cs +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdhci-xenon-driver +sdhci_f_sdh30 +sdio_uart +sdricoh_cs +seco-cec +seed +sensorhub +serial_cs +serial_ir +serio_raw +sermouse +serpent-avx-x86_64 +serpent-avx2 +serpent-sse2-x86_64 +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sha1-ssse3 +sha256-ssse3 +sha3_generic +sha512-ssse3 +shark2 +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +silead +sim710 +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis-agp +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +siw +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skd +skfp +skge +skx_edac +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +sl811_cs +slcan +slg51000-regulator +slicoss +slim-qcom-ctrl +slimbus +slip +slram +sm3_generic +sm4_generic +sm501 +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc91c92_cs +smc_diag +smiapp +smiapp-pll +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-acp3x-i2s +snd-acp3x-pcm-dma +snd-acp3x-pdm-dma +snd-acp3x-rn +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-ext-core +snd-hda-intel +snd-hdmi-lpe-audio +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pci-acp3x +snd-pcm +snd-pcm-dmaengine +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rn-pci-acp3x +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-skl_nau88l25_max98357a +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-acp-rt5682-mach +snd-soc-acpi +snd-soc-acpi-intel-match +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-cml_rt1011_rt5682 +snd-soc-core +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-dmic +snd-soc-ehl-rt5660 +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdac-hda +snd-soc-hdac-hdmi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-inno-rk3036 +snd-soc-kbl_da7219_max98357a +snd-soc-kbl_da7219_max98927 +snd-soc-kbl_rt5660 +snd-soc-kbl_rt5663_max98927 +snd-soc-kbl_rt5663_rt5514_max98927 +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-nau8825 +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rk3328 +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt1011 +snd-soc-rt1015 +snd-soc-rt1308-sdw +snd-soc-rt286 +snd-soc-rt298 +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5651 +snd-soc-rt5660 +snd-soc-rt5663 +snd-soc-rt5670 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rt5682 +snd-soc-rt5682-i2c +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-skl_hda_dsp +snd-soc-skl_nau88l25_ssm4567 +snd-soc-skl_rt286 +snd-soc-sof_da7219_max98373 +snd-soc-sof_rt5682 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-atom-hifi2-platform +snd-soc-sst-bdw-rt5650-mach +snd-soc-sst-bdw-rt5677-mach +snd-soc-sst-broadwell +snd-soc-sst-bxt-da7219_max98357a +snd-soc-sst-bxt-rt298 +snd-soc-sst-byt-cht-cx2072x +snd-soc-sst-byt-cht-da7213 +snd-soc-sst-byt-cht-es8316 +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-bytcr-rt5651 +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-nau8824 +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-firmware +snd-soc-sst-glk-rt5682_max98357a +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-sof-pcm512x +snd-soc-sst-sof-wm8804 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-acpi +snd-sof-intel-byt +snd-sof-intel-hda +snd-sof-intel-hda-common +snd-sof-intel-ipc +snd-sof-pci +snd-sof-xtensa-dsp +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-vxpocket +snd-ymfpci +snd_xen_front +snic +snps_udc_core +soc_button_array +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +soundwire-bus +soundwire-cadence +soundwire-intel +soundwire-qcom +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedstep-lib +speedtch +spi-altera +spi-amd +spi-axi-spi-engine +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-gpio +spi-lm70llp +spi-loopback-test +spi-mux +spi-mxic +spi-nor +spi-nxp-fspi +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-sifive +spi-slave-system-control +spi-slave-time +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spl +spmi +sprd_serial +sps30 +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmmac +stmmac-pci +stmmac-platform +stowaway +stp +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +stx104 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surface3-wmi +surface3_button +surface3_power +surface3_spi +surfacepro3_button +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +system76_acpi +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tef6862 +tehuti +teranetics +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thermal-generic-adc +thinkpad_acpi +thmc50 +ths7303 +ths8200 +thunder_bgx +thunder_xcv +thunderbolt +thunderbolt-net +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads7950 +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-lmu +ti-tlc4541 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +tlan +tlclk +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_key_parser +tpm_nsc +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +tqmx86_wdt +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish-avx-x86_64 +twofish-x86_64 +twofish-x86_64-3way +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +uPD98402 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +ucsi_acpi +ucsi_ccg +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_hv_generic +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +usnic_verbs +uss720 +uv_mmtimer +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-mem2mem +v4l2-tpg +vboxguest +vboxsf +vboxvideo +vcan +vcnl3020 +vcnl4000 +vcnl4035 +vdpa +vdpa_sim +veml6030 +veml6070 +ves1820 +ves1x93 +veth +vfio_mdev +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-camera +via-cputemp +via-rhine +via-rng +via-sdmmc +via-velocity +via686a +via_wdt +viafb +vicodec +video +video-i2c +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videodev +vim2m +vimc +viperboard +viperboard_adc +virt-dma +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_mem +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +visorbus +visorhba +visorinput +visornic +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vmd +vme_ca91cx42 +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmw_pvrdma +vmw_pvscsi +vmw_vmci +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmw_vsock_vmci_transport +vmwgfx +vmxnet3 +vop +vop_bus +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcd934x +wcn36xx +wd719x +wdat_wdt +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wilco-charger +wilco_ec +wilco_ec_debugfs +wilco_ec_events +wilco_ec_telem +wimax +winbond-840 +winbond-cir +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wmi +wmi-bmof +wp512 +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xen-blkback +xen-evtchn +xen-fbfront +xen-front-pgdir-shbuf +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xenfs +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgene-hwmon +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xiaomi-wmi +xilinx-pr-decoupler +xilinx-spi +xilinx-xadc +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xlnx_vcu +xor +xp +xpad +xpc +xpnet +xr_usb_serial_common +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z3fold +zatm +zaurus +zavl +zcommon +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zfs +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zlua +znvpair +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zunicode +zx-tdm --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/amd64/lowlatency.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/amd64/lowlatency.retpoline @@ -0,0 +1 @@ +# retpoline v1.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic @@ -0,0 +1,24584 @@ +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0x68f275ad ce_aes_expandkey +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0x8ff421c6 ce_aes_setkey +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0x52d67a4e neon_aes_cbc_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xd5f41819 neon_aes_ecb_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xea11590c neon_aes_xts_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xefc32a9b neon_aes_xts_decrypt +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0x6ddf27bc poly1305_update_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0x737051cc poly1305_init_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0xf39f5240 poly1305_final_arch +EXPORT_SYMBOL arch/arm64/crypto/sha256-arm64 0xb455924d sha256_block_data_order +EXPORT_SYMBOL arch/arm64/crypto/sha512-arm64 0x6402c8df sha512_block_data_order +EXPORT_SYMBOL arch/arm64/lib/xor-neon 0xd4671463 xor_block_inner_neon +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x36514a77 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0x371ade8d crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0x40623d3e crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0x7675e4b5 crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0xa4697bb5 crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xa56f5e9d crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/sha3_generic 0x02880cd8 crypto_sha3_init +EXPORT_SYMBOL crypto/sha3_generic 0x2ea42507 crypto_sha3_final +EXPORT_SYMBOL crypto/sha3_generic 0xf42faf5b crypto_sha3_update +EXPORT_SYMBOL crypto/sm3_generic 0x81bcbade crypto_sm3_update +EXPORT_SYMBOL crypto/sm3_generic 0xfc87c584 crypto_sm3_finup +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit/nfit 0xceec93be to_nfit_uuid +EXPORT_SYMBOL drivers/atm/suni 0x565a962e suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x31069b56 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xb6d4c370 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xde80f0ce btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xe6d35864 rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x20e9880a mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x32a7ef14 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6e6445e1 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x974d9c04 ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x9b2bf0ef ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x22118248 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x2f638dc8 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x32c2aa22 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5de49613 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x04dce207 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x20e93976 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6109ffd8 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x6da86c52 atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xb433f688 atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc0954e01 atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/caam/caam 0x09d05b03 caam_drv_ctx_rel +EXPORT_SYMBOL drivers/crypto/caam/caam 0x17572340 caam_congested +EXPORT_SYMBOL drivers/crypto/caam/caam 0x37734e06 caam_dpaa2 +EXPORT_SYMBOL drivers/crypto/caam/caam 0x44ae4bc4 qi_cache_free +EXPORT_SYMBOL drivers/crypto/caam/caam 0x575661fd caam_drv_ctx_update +EXPORT_SYMBOL drivers/crypto/caam/caam 0x63b18dc9 caam_drv_ctx_init +EXPORT_SYMBOL drivers/crypto/caam/caam 0xbd1720d5 caam_qi_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam 0xc0eaa792 qi_cache_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x6e2af8eb caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x7b6d57bb caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xb02e7c7c gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xb3de99dc caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xe1117738 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x2e152bb7 cnstr_shdsc_xts_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x3b54a9ad cnstr_shdsc_aead_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x76a68e3e cnstr_shdsc_chachapoly +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x7b0c587f cnstr_shdsc_rfc4543_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x7b7bcab8 cnstr_shdsc_rfc4543_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x86bcdec7 cnstr_shdsc_xts_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x88430d4c cnstr_shdsc_aead_null_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x91ac0969 cnstr_shdsc_aead_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa3115081 cnstr_shdsc_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa340e264 cnstr_shdsc_aead_givencap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa99d7fa6 cnstr_shdsc_aead_null_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xebcdd349 cnstr_shdsc_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xf92c5da5 cnstr_shdsc_gcm_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xf95bcf62 cnstr_shdsc_gcm_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xfd807e48 cnstr_shdsc_rfc4106_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xfdf7ec8f cnstr_shdsc_rfc4106_encap +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0x30a1e372 cnstr_shdsc_sk_hash +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0xb5571dbf cnstr_shdsc_ahash +EXPORT_SYMBOL drivers/crypto/caam/dpaa2_caam 0x7c22cee1 dpaa2_caam_enqueue +EXPORT_SYMBOL drivers/crypto/caam/error 0x53d0fc97 caam_ptr_sz +EXPORT_SYMBOL drivers/crypto/caam/error 0xa51f16c7 caam_little_end +EXPORT_SYMBOL drivers/crypto/caam/error 0xbd67c092 caam_imx +EXPORT_SYMBOL drivers/crypto/caam/error 0xd25da602 caam_dump_sg +EXPORT_SYMBOL drivers/crypto/caam/error 0xfd24b5be caam_strstatus +EXPORT_SYMBOL drivers/dma/xilinx/xilinx_dma 0x24411d5b xilinx_vdma_channel_set_config +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bc6094c fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c280f59 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a771e39 fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3bdb07aa fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4aa9e92f fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x535b034d fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x66e648c8 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69b745eb fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6b58e10d fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6dc50487 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x81b86eb1 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x858614b5 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86d91cb6 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x87505cc4 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x881fee40 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a4bb825 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x939b5a78 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d1b2b6f fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ddddc3c fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb8ced1b5 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc19305b7 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc5172750 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd2a7978c fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd66ed7c7 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe136e0fa fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe1e13ffa fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe7a014fd fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe8671753 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee55ae5e fw_core_remove_card +EXPORT_SYMBOL drivers/firmware/broadcom/tee_bnxt_fw 0x57b73b33 tee_bnxt_fw_load +EXPORT_SYMBOL drivers/firmware/broadcom/tee_bnxt_fw 0xdfaff93c tee_bnxt_copy_coredump +EXPORT_SYMBOL drivers/firmware/imx/imx-dsp 0x44487c75 imx_dsp_ring_doorbell +EXPORT_SYMBOL drivers/gpu/drm/drm 0x000f44f7 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x013b3a41 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x024b53a7 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02580818 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x030cec86 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0320097b drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03893473 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c63897 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x043bf880 __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04aec604 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04ce610f drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0501d75d drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x066d3898 drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07556706 drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07569971 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb449a drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0886c076 drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a99350 drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09901815 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x099447a5 drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ab1ee78 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aff7a71 drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bfbf62c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c6f42a2 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c81a1bc drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cc7e06d drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cf8f2e7 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d2ecab1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b9567a drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x120dac4d drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127a8c6b drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12fce5d0 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x130413c5 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x130495af drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x152b8b0f drm_of_crtc_port_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x153dceed drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15f9c82d drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16323f24 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1647a039 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x165513d9 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x170173be drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17171cab drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187f3e19 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19915e3b drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19af6779 drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a80a672 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d3c93da drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1da1011a drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e196880 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e777d79 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e4ed72 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20eec6b7 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x217678a0 drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21d541eb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x222dea23 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2267b435 drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x232276ed drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23570b12 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23db0918 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2547ae94 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26396472 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x267c47dc drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26f4dbce drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x279831d0 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27c4ef94 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28fa15cf drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x299f03a1 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a29a1f0 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ae0bfea drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af3b066 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db9afe9 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e30f510 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f1dc6e3 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f8576d1 drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3017d8ce drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x305dc377 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3107e7d4 __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3179a59f drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33ebf6d7 drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x344b5fb7 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35137546 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35367bde drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38538ccf drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x386e9263 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x397f4de6 drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39ea5067 drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a5dbb4f drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aec1bec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b02e148 drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b75c7ab drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b77ddc5 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bb1f384 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c22a4d8 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c46e38b drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c6e6bb1 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c9ada15 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e50b109 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ecd1ffa drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41a76d96 drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x420e4249 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x429b122b drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42a17530 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42a4f23c drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4372a60a drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44576475 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44fcf82e drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4579e8ee drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45f351ea drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474395da drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x481e53f9 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x489de94c drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48e300bd drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48fb5d7a drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b88b4d drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ad6d7ca __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4be3c9ab drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c552739 drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d16847a drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d4f1353 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f9840db drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ff04958 drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x506a8367 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5089ab24 drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5313e98d drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54304b0c drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54c40c42 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5542443b drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55732a2e drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55f3f40b drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x568db171 drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57174c43 drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57540b61 drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57e1df0e drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59a9e971 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c510ae0 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cbcccaa drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d70634c drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e64a0d0 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e6a50fc drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f096225 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fd6dda6 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fded3e5 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x614c9fd5 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62c40912 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6422672b drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x645cd58f drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x656ab228 drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65ee9fc2 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66960359 drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x671d21d3 devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6903e78a drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0x690cc635 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6931e2a6 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a4a9cc9 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aa0d630 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b092bd5 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b20daf6 drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b2fcedd of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cfcbf96 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d9c9d99 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dcc6429 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e5517de drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6eb26b10 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fa0bee2 drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x702f7fa1 drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x712c07fe drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71f6af24 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7269f123 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72fbd280 drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x734c2228 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b14b4c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76465d99 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76f5f8a6 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77434898 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77ec9aca drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x783e4ba6 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x795759e8 drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a65be80 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b052d82 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cc4788c drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d6d13ee drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e6008a1 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f737e39 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fd7ee51 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x805bac1b drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80beb7b1 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x822f84c9 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82682635 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x826c1f50 drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82b0e553 drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83dc70ff drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83ec8f95 drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842dd90c drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84b707dd drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x864c3cd6 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8739bb60 drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8810b610 drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8888c250 drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8944fbc7 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b00c8fd drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b368dd7 drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c29aef8 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c2d8a6e drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d34149f drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d4f1534 drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d819309 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dc8ac06 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f38514c drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90a09e58 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9323dc71 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9365e800 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93947222 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93e2285e drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94af35ce drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94c041f7 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96b009b3 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96d55304 drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97646d7c drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9838bcbc drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x992ff201 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99ce308e drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99dfded3 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0384f9 __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a75aace drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9af84454 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8cea93 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e78be9a drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f20f2b5 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f8f3552 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fe8c67a drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa04836a7 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11280f3 drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f94aad drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2436144 drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2d064ef drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2fdea0d drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa361d073 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4f74cb3 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa81c5148 drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa873f47a drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa90f5a3f drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa97a5e8d drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa038b6b drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad35913 drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab28c39f drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab57f291 drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac266ad7 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacd2dffb drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae12160c drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaed8e413 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaee9afb9 drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf5b1326 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafc42947 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0c9b8b3 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb12071f6 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2d0eedb drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb33f4af1 drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4572d8b drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb462d06a drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4f9055e drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb535e070 drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb548b8ac drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb75b193e drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb826710e drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb82e4089 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94699a7 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9d4546b drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc7a530f drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcac69bd drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbde793e6 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0f2408 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf529f7e drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0dd545e drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2532590 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc269f18a drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3267e48 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc32cb8ee drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3b65f81 drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3c69c08 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4e7007b drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5ca78d9 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6323239 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc657338a drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc68b6ee3 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc861e090 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8683502 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc89b6e82 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a4bf02 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc92a2f55 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc98518ce drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9d31a9f drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca10ea35 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb595ce8 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb84c61f of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc585bb9 drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccea57ae drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd372109 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0fbb78 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1a0d75 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd01598ae drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd12a935b drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1586ba3 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd170d216 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1b9701f drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2a2dbbf drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd312574a drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3476054 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3fdc324 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd479b1e6 drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd489af8e drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4955483 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5c5a796 drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6d7445e drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8ed380f drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9ca1f4f drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9fff2d2 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda06d2ab drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdabc78ee drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbae0a76 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc0eeeee drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc7e9f89 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc940953 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc9682a4 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcc08a3c drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd259f0c drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd51e975 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde4774c3 drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded6f524 drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe036c37a drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe03f47c6 drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe116d3a4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe132e01f drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe141e62d drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe36b3343 drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe57aab20 drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe61b0569 drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6208444 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6415b07 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe75ed474 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe99586ee drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea72299a drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb4395c6 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb58842e drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebeab697 drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebfb4321 drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec828bb7 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee456319 drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee576403 drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef0b1f37 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefecaa86 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf03158e3 drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0ab9bf4 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0b7192f drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf156b11c drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf168e887 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf17a06ad drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2ae854a drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf31f5cf8 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf336f488 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3804ce3 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3c081a3 drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6a35bc6 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6b24817 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7526478 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7de7781 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf83b4954 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf89dc518 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9516509 drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfad31f6c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfafcc0ad drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbdedbce drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbeacef5 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbfc8f47 drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc39877c drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd84ae56 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdd5d195 drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff0e0975 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff928f42 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffa512c0 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x033ec9a1 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x039456fa drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04f40e69 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05e9f789 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x066ffd90 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0746b17d drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09dee32b drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a30950b drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ebcf078 drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ed94109 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10d26aea drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x123c2637 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x134c20d3 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x141e0506 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1459275c drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14b47f66 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x150de03f drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15766f6e drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16514a20 __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e463d0 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x189a94f7 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18ca545c drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18d8c434 __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18eee575 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19496814 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19599be3 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ace3df6 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b101e8b drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b320c24 drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b99117b drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d7a6cd5 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e565a4d drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20dbdd14 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x217631cf drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x219e31c2 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2247d171 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22d1ad62 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24a4b2ea drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25f7768d devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x277f9ab6 drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2796e467 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x284e1727 drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b06cb6a drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cfce124 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d83c119 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f2b5f77 drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30a0b11b drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30ef754f drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x322b9e1f drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33bda51b drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33cbe0a5 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33d2f371 drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c38a87 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35fa31ad drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36368edc drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37269106 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38cd271a __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a45ad42 drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c19f421 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3da78abb drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e16d5ea drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x426fcf42 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42b91ec6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43691aad drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43754cf1 drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43c229bd drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44df1836 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46f3a0ea drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48e0cf0d drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a661c53 drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b6d80d3 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ba27b2b drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d7656b5 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fd97e55 drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50ccc4e8 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51509c31 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51f9dcc2 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54cdcc03 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56ab45fe drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x579cfcef drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x581fa14a drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58936f4c drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5898b3fd drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59d05af6 drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a155fd9 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ac3fe0e drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c985c31 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d5aa50f drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ff2f013 drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62ba43df drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x640355e9 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6703a697 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68c9c8cc drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a5f6da0 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a926571 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d1ea64e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x712b78c7 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72427fd4 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x726268c5 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72f3b5aa drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74037dda drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7674c0e6 drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e6618e drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77475fa5 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77fa358f drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78ff814d drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x794d0332 drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ad45728 __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8371f9e3 drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x840f4e1f drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85e0eeaa drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85e67b9c drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8800f434 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89ed369f drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c1a11d4 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c3952d9 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91d5d912 drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x963a9099 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x965fbb53 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x969a4ca9 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96ccfd74 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x972475ad drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98908a6c drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99be2403 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9aa6ed41 drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ba6907c drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bca0b6e drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d40726a drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0aba11d __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0ed3f3f drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa66bbea4 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6c64199 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7f204c2 drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa92235e8 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9339e0b __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa5cc5e8 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaab1bcb6 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab561a33 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaca7ab9f drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacef8aa5 drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae027a7e drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafef78d3 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb15c8adf __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1c8fa24 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2e27fa0 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb36c8296 drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb391398a devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5a0a8dd drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8018b9a drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb2b768f drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb87ca69 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdc24d7e drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbee24fb0 drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbef8dd5c drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf75ade5 drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0daed66 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0e07f80 drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2b4fe33 drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3be4315 drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc41f3de1 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5852dd6 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc587e080 drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc717f04a drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8923566 drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb3faf6b drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc6fb578 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd517ad6 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd924165 drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce370de4 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce57737c drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf51ca39 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0d84ab9 __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1227b24 drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd221cddc drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd35250d1 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3c15f8d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5601eff drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd814e234 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd94bc6d8 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdedeefd1 drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0567fae drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0bbc049 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0ee9a49 drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1a8fe53 __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe21f2f81 drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe387f91b drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5507a9d drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe621b55b drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6dda6d2 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8f9e6b2 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9a70bd8 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebf8deb6 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed28e935 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1d84340 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf34a2169 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf508ddf2 drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5ddfa85 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf695495d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf70d7998 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7b35f11 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7bd68ff drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa1c6302 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbefc94e drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc409464 drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff4fa417 drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffc6ae59 drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x12181f40 mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x1cd07ece mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x3afc20f6 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x44418bb6 mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x595f7f63 mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x5ecca56c mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x6ec8b329 mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7a7a4c74 mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7c908505 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8fd6a976 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x907031c9 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbec2b5e1 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xc07d8e63 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xd34d0d15 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xd5522899 mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe81e81b9 mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xfe096f35 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x47ad56d2 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0xca4b1bb9 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x0379edc6 drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x037e1849 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x0cbacdde drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x1809dd94 drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x254dc174 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2e5061c0 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x340194cb drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x34232348 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x3ea80723 drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x50daf61d drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x6236746d drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x67b5302a drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x7b4c1e6d drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x8f30cc9d drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x993bf709 drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9ea4bc9f drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc6733d4f drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc7e31f35 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd5a76586 drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf652f0ed drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf847f507 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/rockchip/rockchipdrm 0x54e0ba9c rockchip_drm_wait_vact_end +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0ff0128c drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x14ac2922 drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x198bbfb0 drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x31ec7ed5 drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x36ae3202 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x389958b9 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x71d810fb drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x79935e95 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x7c3b01f0 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x87261da5 drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x89870fdc drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x98eb7432 drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa28fb761 drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa8df827e drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xae542ae9 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb733b797 to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xc429c263 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xcc9974f1 drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xd1dfc225 drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xdc5f1968 drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xe8cf522c drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x2f59ad3d sun4i_frontend_update_formats +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x4ac573e9 sun4i_frontend_update_buffer +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x67a6f1dd sun4i_frontend_update_coord +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x96413fdb sunxi_bt601_yuv2rgb_coef +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xa56421f4 sun4i_frontend_enable +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xa631b179 sun4i_frontend_format_is_supported +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xacedd0c5 sun4i_frontend_exit +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xde9ffe01 sun4i_frontend_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xe13164ef sun4i_frontend_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x5606583e sun4i_dclk_free +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x6af11766 sun4i_rgb_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x6c10c7a7 sun4i_tcon_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xabb3ea20 sun4i_tcon_enable_vblank +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xc1c6d247 sun4i_lvds_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xedd9b941 sun4i_dclk_create +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xefdbeb82 sun4i_tcon_mode_set +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0x1aeff3b6 sun8i_tcon_top_de_config +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0x350e5dcd sun8i_tcon_top_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0xabfab582 sun8i_tcon_top_set_hdmi_src +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0661cb76 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d6c63f4 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e623435 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f621d77 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11f77cb8 ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c888084 ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23414945 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x246197fa ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x255ae216 ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b2fca31 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31dd844e ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3500146d ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b37b7ea ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51f403b5 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59a664ba ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59b879b8 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5e46d4a7 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69b95790 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ba26754 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d68798a ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e4ea40d ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73769a02 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x770d576a ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78780ab6 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81b453b5 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x857af481 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88178a5d ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8913e431 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92588b7b ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c887542 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa07fdb2c ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1e273c8 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1efc6e6 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa929067b ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb057cebc ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb595c4e4 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6bc400d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba635de0 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb874f77 ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbdcf504b ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe757a85 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc0f0bbff ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1d43b86 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce12c18f ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcfb81529 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2196e4a ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd27dec57 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7d3d00e ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8f41e22 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdac729e4 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc7d0818 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddfce82c ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe322d941 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe80cdc70 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe962caff ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef7b6228 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf07d351a ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4607a28 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4881ee6 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7d7cc07 ttm_bo_kmap +EXPORT_SYMBOL drivers/hid/hid 0x3a897a0b hid_bus_type +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x7833c705 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x229b0507 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x946508dc i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc5acaf21 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8bb128e8 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xdaee8b1a i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x7281980a amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x5dbe2c5a bma400_remove +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x5f1cbae4 bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xdcbef4ca bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x2590477b kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x53ce3ddf kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0xb7b67c9d kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x10b8ce4e mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x34adefd0 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3cae0721 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b1a6c14 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x68314136 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6e126480 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x895c8ce8 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8d49f474 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa01876e3 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa5cc1ef6 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xaefc4f79 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5148e93 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd6b0c357 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd770cef0 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe6798d6d mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfac9dc23 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x0ee55eab st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd73df3cd st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xdcd03bb6 st_accel_get_settings +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-buffer-dmaengine 0x1ac4e360 iio_dmaengine_buffer_alloc +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x57ac1bae iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xe494f018 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x218f8c72 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x2c8eb32b iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xc5cdf49d devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0x516e1888 bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2fa01a9f hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3b012167 hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4fc3d8ab hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x719bd252 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8500f179 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb8d29271 hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbd4282bd hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc1d0cef0 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xcbf49da5 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf372f776 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x87371b23 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x8b9cccae hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa2dd52a1 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xcbcc76b6 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x04e270ee ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x1c17d513 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x25f3a34d ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x308f5d25 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x596a73f3 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8c041c5c ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xea9161a4 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xf52bdf1b ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xff8f2e0f ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x60ddd48e ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6fc7b051 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb6ab199d ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xddb828b3 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf0ef9615 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x11621d6c ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x5edadddd ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8eb68ef1 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x058768f3 st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x21d198c0 st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x25f124a3 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3cf832bb st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5b265012 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6bc0ec56 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x801b85a9 st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9fb9d8c6 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa0e44862 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xacedf654 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc234737f st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xccb4606e st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd81609d4 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe33ea20b st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xed9aa121 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xee9d7dd1 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xef4beb8b st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfe252e47 st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xece5eba2 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x1e412ec9 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x0f01b41d mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x3e9c3757 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x425065e3 mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x8aae96fd st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xbaa5edba st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc3e3fb80 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x0f97a156 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xaa37c624 hts221_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6d32704b adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xa538be71 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xfec2ebe6 bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0xbc9c1eed fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x40bd911e st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x4d5a2761 st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/industrialio 0x00700714 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x07c7549a iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x0aa020c6 iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x0df184fd iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1090a4b7 iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0x16c1fbee iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x182a0ca1 __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x212b3f45 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0x22738faa iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x23ee5140 iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x41dbc80e iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x4bb4470f iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0x62aa8aa2 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x665b2d7e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x73003a3a __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x77fac527 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x908e1ba3 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x965a4461 iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x993aea8d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x9bad9232 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xb7265438 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd69b93f5 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe1c19ef8 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xfdf8ddda iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0xcd1cb3ca iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x124b1fc8 iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x55bea01e iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x7f3bed3d iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x9c439f25 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x4a0ad44a iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x9ef4bca3 iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xb1c71280 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xee271500 iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x62ed42ca iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xb22e8993 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x1f8dacf1 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xf9f7aa3b st_uvis25_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x143b4930 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x57ecd3c9 bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x977080eb bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xef0d80c8 bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x7e871372 hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xa0159382 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xb2fa805b hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xd93dbcf5 hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x52173021 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x58e2f3e3 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x75cadb34 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x11cfb6d7 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x17ddd78f bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x452f9c78 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xfb496bb5 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7ef3e72e ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xe251ea15 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xccb0518b st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xdab411f8 st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xec91860a st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0ab6c69b ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0e91cc57 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1c1733d5 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x24589e43 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6711a4b5 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x67315576 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x719ffd81 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x72db36de ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7eafea97 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9cf8319f ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb9753d92 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc089a895 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcdd40a73 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd093efba ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeed0c87b ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfdeeb694 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0308beb5 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0777cec1 rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a5cc74e ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c86f5cb ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d1f6350 ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d37213a ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d8081b6 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f175eeb rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x111fc1bd ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11b577ca ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1552a303 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x166ef04b rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16beb021 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b1867e8 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1cfa6b9a rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1dd074bc ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ee23189 __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f137462 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f3b1739 ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2032974e ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x205e54ff ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2116d349 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x261bd941 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26f809c7 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28622fcd rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29f1845d rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a4b35e9 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ab0533f rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e72feac ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ec35c60 rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2fdf9e1c rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x306e987a ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33db69cc ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37416ce5 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38876d87 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a7455d8 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a7f933a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c57c035 rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3df0ed95 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e06b521 ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e4b5b64 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4210aade rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x433c2cfc ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439ce33c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x450ea7ea ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45368e4d ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a25b0ad ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b887776 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bed05f8 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d7d316d rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dbf46cf ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f1bc40e ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x501a3b11 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51f0bca2 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5590f004 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55d88b35 rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55ed60ee ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5658e7b7 __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57d1f6c0 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57ebaa22 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x588fe5ec ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a8ddcdb ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b7e64a9 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d35349d rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61362826 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61ccd3d1 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x626dff93 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63639f14 rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x641efe0e ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64b25cc2 ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68dc4a67 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bcb23d9 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d69e943 ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ec480d0 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x709b8f43 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71a1c14c ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71eb523f rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73494764 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x739172d5 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7482f9e7 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74daf1b5 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7aa5b4e3 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bd6bec3 rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c121092 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cae5c52 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80a3d73c ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80c30005 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82db4f7a rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8345237e rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83c1aefb rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84b7271b ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8804663e ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88527ab1 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a33351f ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b16cb4b rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8cf89a35 ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8df26a78 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e26609a ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ec4c352 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ed0f6b3 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9138fe2a ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91a879a5 ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x944014f7 ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9632d23d ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x968410a9 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99c66206 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a207f14 ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ab7481f ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ba96c7a rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d6abe56 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0c25037 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa348ed15 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa39245d3 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa492723b ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa551ff68 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa77a3eb2 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa865fc30 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa90fa57e rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa92ee8b8 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab4b7c58 ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf66494c ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafceb7b8 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0618366 roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb19951e1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4008a2c ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7e4593b rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8b3f66f rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb98624dd ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba04c865 ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba270c5f ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba746ed1 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbbbade79 rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc29c5ef rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcf09805 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe423029 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2816b17 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc480b825 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6c32533 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc73f920a rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc90a5c58 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9c14854 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca310e04 rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcbaa057e ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd858bfa ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcef762f4 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf84cb27 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd38f1e31 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7618659 rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7726ca3 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd92d081c ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd939bf60 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9e661c4 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda666f12 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb0efb40 rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb233547 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb44ca7d ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbcc6d48 ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbcfb3f5 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd06cd7b ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde9d0ccf ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe07f84f7 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4840df9 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6c419f1 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe767ca7b rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7834b82 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8e2029d rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe97c100c ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9ff3367 ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xecaf833b rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xede5164a ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee210f62 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef51c590 ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefd9b901 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf22a0907 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3baf46e rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3c6faf7 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf464588c ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4b2e8c0 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5d88897 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf62235d6 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7c128dc ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa63a517 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb065481 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd3d96fb ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff458a5c __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffe86175 rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x08f32cfc ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0bad0c9b ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2756a92d ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x279d6335 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2853289b uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2e796753 uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x316c219d ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x327559d4 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3a26fc6e uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x451d5b40 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x45f174e5 ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4d90ff9f uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5d91ca7c uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x64ac5e5e ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x78f45eb1 ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7b3f0b91 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7c56a33e ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x80a6d306 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x885855ec _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa8be569a ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb9a472a7 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbf83316a flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc826e5a7 _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdbba73e1 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xec56c949 ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf187f71e uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf88083ad flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfef1f5bc uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x44b18fcf iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x61d102c4 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7565c004 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x90b9dd28 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xaf850bf7 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc0353649 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xef79f791 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf0d49330 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0cdaee54 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0e8bfebd __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0eef40d5 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x147b3344 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x151a6238 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2338e765 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3fbd33a7 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x41722edf rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x43588e86 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64110938 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x66fb58a5 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73e4e392 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79878d96 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x824b6010 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8c6b95c1 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94811a66 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9de693ac rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xab211642 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad5e0013 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xae613c11 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaed31190 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb307c092 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbbf70d2d rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc528a689 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc78b23ee rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcacf35db __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcb075048 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcfcaae24 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf6e2322e rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x0ab465f9 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x107ad63c rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x33d6bd80 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x6189b753 rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x8d007bc4 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xa7788294 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x2ea5f3de rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x980b313b rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xbdbf4b1a rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xfa9c51db rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x1f3899dc rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x47583b69 rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x65c41732 rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x8fd0fc4f rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xa8e4a28f rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xc8b8bc7e rtrs_srv_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1148f95f gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x187c8d94 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5ea6fdc1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x67f4c5ce gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80830003 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5963f03 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb2337de3 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb96ede26 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd265ce5 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x46e1c27f input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x938ae098 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xad45be3c input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc43f0a03 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdbe3066f input_free_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x5025c468 iforce_send_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x57cdc58f iforce_init_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xeaef1c8d iforce_process_packet +EXPORT_SYMBOL drivers/input/matrix-keymap 0xeb273648 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x16ae0f93 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x199fcb76 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x95a0c7ab ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x2d1f3534 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xb7f53eb2 rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x149aae15 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6a366064 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7b29940d sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xac158790 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xff314bcd sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x821dabc7 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x95e6a38d ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0fb7ade4 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x324cbde8 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x614f357f attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbea9640e capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf7664374 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x36104d05 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3d3fbbce mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbe3af1db mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc45d17b6 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe4ec13ab mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe8b5742b mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0509999f mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x085c65aa recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0cf7676e mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1a58b0b4 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2b613af0 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ec2c895 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3c4e43db mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a55b740 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4b421a46 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x624d190c get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6edb318f mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8490b938 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8512d589 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9abfdb6d mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa984f607 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb1255c3c mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb4063e7e recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb85b5b0b mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbd149c37 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe7bc381 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xca9b4326 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcc141054 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfa4d15b2 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x0b7af884 ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xdcdd800a ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x2c09b600 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x4cdc7543 omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x6e03c733 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/md/dm-log 0x0488cc5f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x320fb97a dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x46cfbeb8 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xc7268e9b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07a60a68 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1ba00b39 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x46bd35f1 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x60e4b1f9 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7e765361 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7fb553e7 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x899efedc r5c_journal_mode_set +EXPORT_SYMBOL drivers/md/raid456 0xd6bc7205 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1cf0f489 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3e14ffec flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7431155f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8ab9fbec flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8b8359d7 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa68f7adf flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb981ef82 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xda3dbc0b flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe6ae6a2d flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeee216c0 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6b96494 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfb9d4bbf flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfc1f3f79 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1d872d51 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x745e6add cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0x9f91137a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb84d1d72 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xbd46fc42 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x3eae597a tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x19a0af1d vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0xdda21578 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x4d843121 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x50b28fc8 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x860c9d10 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x98b37d03 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xd8bc7da6 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xeeee5a44 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0x8da5b278 vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0afa92b9 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d9a80f1 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e40f5a6 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cd29b1c dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f5cdf80 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3feecaf6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6181aec0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x62609eec dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x635b2878 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67480317 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x697544a6 dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72dec182 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7751ad77 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b0d51ce dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80985cc4 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x831f5f7a dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8865ecf9 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8ec581fd dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91a6794b dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa42be35a dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaa943ecb dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb2719120 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3352dd2 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3ca2812 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9a33c2e dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbb0168bb dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd84e780 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbeb0554f dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3f679f9 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd549a45a dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdcf60586 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe138ce6b dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe3a684f7 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5687e95 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe768b2f4 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebbc2d9b dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xed94b7b9 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb09f39a dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb9a826f dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc6380e5 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x37c10b21 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x3dfb1f51 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0cead6de au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2514d02a au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4583f2f0 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x63e02ba0 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6feb7ddd au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x79bfdccf au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9435a225 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa8d451f8 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe88e7bad au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x152d12ea au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xfed4dc13 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x4c2d3614 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xad67e400 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xd0140040 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x004175c3 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xdf30debf cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x0101e381 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xea0dfc8b cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x68d9d5fd cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xa4b343ba cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x90b010e0 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x66096e50 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x7faba72f cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0x38d5532d cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0ba8ed49 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2916ecc1 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5e0be8a6 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x96134bde dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xece70dee dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x17bc731e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1e4bd84c dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3c20b80f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x475ed064 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4aa377a3 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x511036d1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x62163e52 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7f95bb66 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x805c4a3c dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x922e1503 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x97bfe672 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa54b6999 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb20fb82f dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeda10e85 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf58573d3 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x2181ffc5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0ecbe509 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0f198143 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x319882f4 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3784013d dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4aa79c63 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf9a0ce70 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x17a0d05e dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x35c488e2 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdb4631d2 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdf5bdedb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3bedac21 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xefc4cbc0 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x2a085fce dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x58f2fbf4 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x6491a18f dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x814324ff dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x81c3b1fb dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x845ec7f2 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x85f49a97 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x97d62678 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x9fbcfd2b dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xa4a1f6de dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xc82e1e24 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xcc542f66 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xe153d280 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x5c1b2ae8 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x787e98cf dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8e99f33c dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbfe60129 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc68a5f54 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xe7c93af2 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x86db6fa7 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5745efdc drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xb4061d2f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x1cb70530 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x39e81abf dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x92263ed7 dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xa168a174 dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xc1becc6c ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xafaa7ec6 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xc83c485c helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x90d109ed horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x856bfb69 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x0ec731b0 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xda90ed8e isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x304e162d itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x4d557d12 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x137e2b43 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x1ed72539 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x92fa5ea6 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x6c8a08d6 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x2f0a3bfb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0x3ca999ef lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x18b4e86a lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x4c96e503 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0x7b9d0ee0 lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x66546139 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xeaf16ac7 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x12ddd4d3 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xed3027fb m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xee5a0378 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xc3060e5c m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x23276fe2 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xd660c676 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x57dbebc7 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xeb8deb4a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xf9df509f nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x2d302d7b nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x463a1fbd or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xf32149b1 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc040c42f s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x32ec36e8 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x67f1ee5a s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7dcd2f3d s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0x9abd6c71 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x7fe1c5c8 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x753c5b1b si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x1111bd50 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xb8c984cd sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x74bf1e48 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xd60e16e3 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x849d8d09 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x00ab3b02 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xbcbe48c4 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x47569946 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x401b1077 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7e7c3ba6 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x989be1e4 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xed881d03 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xc055de54 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xc644976d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x2257bae3 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xa228c75b tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xe974ba0c tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xd4554335 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4a74c211 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x8070e6c5 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xd2682ca7 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xbf5654ba tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xe2dcda19 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xaf0520fb tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xa194547c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xe4973506 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xeacfc722 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x17eab980 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x9d7b5aef ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x3826b200 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0xc78ddd73 zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x3b483778 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x7c4b4166 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x6a7e9006 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0c7d32d2 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x35a23e93 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x475dc98e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x58032ec5 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xbcab70ac flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd6e930d3 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe36992fe flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x18750407 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x23948340 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x55d3b500 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x57307932 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x3157430a bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x375cda4f bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x761b2a55 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0325bca4 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0ac5513b dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x224918a9 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x23d401e3 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4470f351 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb2ebc662 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd8cab6e8 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf970818d write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfa1239c4 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x48761e70 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x34efb575 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8b3ba525 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x901592f1 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc00a63c6 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd50af0e8 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x55e9d0ec altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x239a8f16 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x2800dcc2 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa25f90ba cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd6816562 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd9f9c600 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe1670fce cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xeaf8df7b cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x905c366c vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x90b5a53e vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0a03ae7f cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5276eb9b cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x89484347 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfb737776 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0b1ed3c1 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x22241d85 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x36f4907f cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x968ba293 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa05b254f cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd354cff3 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe125e192 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0b3cd2cd cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1065f726 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2e5cb2f0 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6134535b cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6672b42d cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x67ef90ba cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x685a65f4 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7de58e83 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x85bf640f cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x95fe3521 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c178d3e cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa229d34d cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0fb2b7f cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2b76033 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8bb66dc cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcf7abafb cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf5362b08 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf969213f cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf9c72f3b cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xff2cab5a cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0x1f81af3a ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0e74382e ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x273a9fb1 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3e749af2 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x649f0eb6 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6ea51b12 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x85576711 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8606b9d8 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8748ab22 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9cd30feb ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa93414c5 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc105137a ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc1753e5b ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdb6d9542 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe35b6361 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe71ef460 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xed9e7a56 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xedda36a9 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x07d39696 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x257e08a1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x581824fa saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5e44a07c saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x68fb71d2 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7be683ce saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7d944f15 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x873671eb saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xab32d0bd saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb1ad7430 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc7975309 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe2d1efab saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xf0e7174b ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0989f841 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x355483f2 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5523a358 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x84734b47 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x937e892a snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb17f4a8d snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc9a6d0c6 snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x446d1202 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/rc/rc-core 0xb044426c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x5bafbb70 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xb329ee24 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x02dbb9f5 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x61a46faf fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xda6fd0eb fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x8b3f897d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x294451a4 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x452cc087 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x082227b3 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x714cd5c9 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xe1972b87 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x3b11f6e0 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xc998837b tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x1bf6842b xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xbe6dc0fa xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xce4e4281 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xb7b55b36 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xdd7493ab cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4ac75e3a dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x50576a5b dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x547a78d0 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x569b51c7 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x729a79fb dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe472c45a dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe7e7b55b dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xeb042fe1 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb4dca9c dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x29d6b59b dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3eb96e79 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x424bf1d2 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8b6f5395 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9b3e6013 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9b449fc3 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xefa0aa33 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd0291f0e af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x385a1d00 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9035f062 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xae774f16 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb197344e dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe6228824 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xeb1d9ac4 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xebacadb3 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xec8ec001 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xff1e8522 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xc957d8ed dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xd71b6e1a dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x209816e8 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x9352515d em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2d8f4379 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x56258e48 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7e19ee5a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x823ef505 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb85e73a3 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xcc535efd go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd19fd340 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd343f972 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe7b4ae98 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x07d4fea8 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x36c94c7b gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x47906ca2 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4ed012b9 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5c21a2f8 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5d143855 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb85ff01e gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd9f5719c gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x11eef93e tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2eb8dae7 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x34fa1c64 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x5de18122 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x762680e8 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x12333c05 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x55cec47c v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xbc22e5ee v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc2d7d8b0 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0985659c v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bd008d0 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0cb48b9a v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0d0d361f v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f0f6ea7 v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1869e662 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18c4b834 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a46f8fc __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21a47c3a v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2225d97c v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2640e13a v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a99db6d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2abd109c v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c0ba195 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2dd4d447 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e273a13 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37b7634c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3973be84 v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x407b0512 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43662fd0 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x437f8087 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x48b7ecc2 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c5eb075 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c687b95 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5cc0c991 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d057f42 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x60ad901c v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63b821ec v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x693868fd video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f9fe565 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x758ea40b v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x799a82cf v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7acfc0d2 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82b4e428 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bcf6b8b v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c40fd83 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f4f76d0 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9369959d v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95d64edd v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96fecd28 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ca24ad6 __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0462f31 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1826efc v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa31cd7ff v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa41f47fe v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa43341c7 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa47a8a43 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7513af1 __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab1d7ad7 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6e5b5e3 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9e799f5 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe321bb2 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe839978 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc74756dc v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc910f531 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd00b5cbb v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd198a41f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd25a259c v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2acb76a v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbf277e0 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde532c92 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed4977f7 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2f3beb3 v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6775f77 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf76b69e2 v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf775f214 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd72adb2 v4l2_queryctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x38f0f2cc memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x45523046 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x456fa6b0 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4d290b08 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6727b01e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8bebe9f5 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8ea66818 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8f3898b9 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8bda46f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xae50437c memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaf82f037 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5cf6868 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe493e41b memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0741d10d mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a59f620 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16ad9368 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x246b50d1 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2864d08e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2e5c883a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x367af492 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x38b044f4 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4325f8bb mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45c5c511 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54e9db83 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x59f82724 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5c63ea3a mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5d25602a mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69995e63 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6be9866c mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7a1bc080 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8dca0ae9 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9dd04b48 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0a88b13 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa78a7ed8 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa7c12359 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc16c1c21 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8ae715c mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9ea1af6 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe9a3c016 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed3603bb mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xefa3ea0f mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa7a3663 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0e6920da mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12b1134c mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x19d23b97 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x24df1794 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2da17a64 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2ecfb1ce mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3a544e1a mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x40d808fe mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5a4355bd mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5f881c6b mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6920c9b2 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b246901 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x87d4b603 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f8de9a6 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8fb0ad0c mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9dcfc721 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9df6a50e mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9ee59f47 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa33d1042 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa833f522 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd5369db8 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdad6387b mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdb2fec5c mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd713710 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdee00dbc mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdfd8ea23 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe698eec2 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/mfd/axp20x 0x1192f320 axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0x1fd041b7 axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/axp20x 0xb11d9faf axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x1c3c0c05 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x28a4603c dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x87794209 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc62da070 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfdf44854 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0eae97bf mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x63bfe833 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73b2f37e mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73ccc8f9 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f44eca7 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7fee4d48 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x93e458c5 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa6a3f735 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaafc5724 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb865b73c mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd264f6b2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd520f912 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x2db0d807 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0x48488a1f wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x577a7326 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0x7a723186 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x92495334 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xd72a8832 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x0288a04b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x543756de ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5bafa76e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x6bb349fb c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x8a2d5cfa c2port_device_unregister +EXPORT_SYMBOL drivers/misc/tifm_core 0x01664d72 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ffb277f tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x1f8cb167 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x309aeb1b tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x5d1ec3a3 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x818f1157 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8b23d3e3 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9b1cb54d tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa2da2050 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xb4b6a60e tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9d78d94 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xd287d9b4 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xeafedd2b tifm_has_ms_pif +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x4cbca3c7 cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x529f1cad cqhci_deactivate +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x9237b288 cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xad80bbc9 cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xed352920 cqhci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x1f587e25 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x8d86cf37 dw_mci_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xa8e01f6c dw_mci_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xfa487642 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x350b0c72 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xfea0e89d mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1efd24da cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3a3bee3c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x712ad471 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x76ea3155 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x811733ff cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9efb0d9f cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xef6c7378 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2eea5bb9 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2f9ae113 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x474c4f89 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xea37f6e8 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x29daf1df mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb982739c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xc946c3cb simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xd2910d51 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe24cac31 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xac2c6c42 onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xba525f87 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xbfa5fe6e denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xc64da8f5 denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x102603bc mtk_ecc_get_parity_bits +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5437e775 mtk_ecc_disable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5de55d81 mtk_ecc_get_stats +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x6df58afb mtk_ecc_release +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x76e53683 mtk_ecc_wait_done +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x8dcc87d2 mtk_ecc_enable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xa9b0e7f6 of_mtk_ecc_get +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xda64ef4a mtk_ecc_adjust_strength +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xec8b9207 mtk_ecc_encode +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x07107c51 nand_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x0b6a7599 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x1113c3af nand_scan_with_ids +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x24f85cb6 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x389eb985 nand_create_bbt +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x7286eabe nand_monolithic_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x941feb9c nand_write_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x9ff1edde nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xc70a3069 nand_monolithic_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xf22ae84e nand_read_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xfb7a91d7 nand_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xfd9a9ce3 nand_get_set_features_notsupp +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0x793cf888 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xd4bc34f5 nand_calculate_ecc +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x092ef53f arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x364719e5 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3b867218 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x80c525cf arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x912cc4af arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa79548f0 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb6faa807 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9e09b5d arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfac900ed alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfae609eb arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x46fd06d9 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x49d87cc6 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8c103aef com20020_netdev_ops +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0474955f b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x06339ff5 b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0a40f66e b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0b3741ba b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0e35976c b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0e7621d8 b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1254f85c b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x20001963 b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x21a2d767 b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x266b5524 b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x273f0e14 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x28b17f34 b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2a89b046 b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3183272a b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x322031e0 b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x32ab6080 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x33bbfd52 b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3b213922 b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3dcd4b92 b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x490b9fca b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4940b618 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4952cbea b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4d9193f2 b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5e6da230 b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x60ac79b9 b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x679d2f87 b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x68d19a69 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x86609394 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8897f219 b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8bafff2a b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9776a57c b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb240f72a b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb442d843 b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xbf032012 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc385a00a b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xccc21842 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd111532f b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe439392c b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe863049e b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe9bc72e2 b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfb76c864 b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x6a087af7 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x74630236 b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x87cca4dc b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xc0587677 b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xd370b364 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xe49995b2 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xa2bc730e lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xdbd67e93 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0xe1a5e746 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x22c6729b ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x6006b78d ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x9bcb7241 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xd7e6035a ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xcdc6b1e1 vsc73xx_probe +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xf36a711a vsc73xx_remove +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x20327a94 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x22722d52 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x34a3d6c0 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x510f91ae ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x913eeb50 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x957899dd __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x961d6799 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xaa91472a ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd1e053c9 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdf8491b7 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x12cc2560 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x35e5255d cavium_ptp_put +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x69bafd0e cavium_ptp_get +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x34eeb48a bgx_set_dmac_cam_filter +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x46cdf933 bgx_config_timestamping +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x539ca253 bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x60cd1f2f bgx_lmac_get_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6ca2152d bgx_lmac_set_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x716fd7f0 bgx_reset_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x72b238e4 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xbe654297 bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xd8ed0bcc bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xff987a02 bgx_set_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x13912e4b xcv_init_hw +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x4f739dc0 xcv_setup_link +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x01830931 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x23af7611 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x305dbcb5 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x34544f74 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x36fd0b56 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4938246e t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7957f910 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x88cd0075 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc0d721b0 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcd920f76 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd3bac316 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd8afd948 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdc0042d8 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe38cbaaf cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe4680bdb cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf594f809 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x05c446cc cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1165e55b cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x19f76e59 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e863b54 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23aa4911 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x252e0237 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f5b0ce4 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x304dc418 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x56702976 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x592a8804 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5ca08529 cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5eb0bb99 cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6169f6c1 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x645e4c16 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x68069076 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x69e60a7d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8040d4b2 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x81967445 cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x831da1dd cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84393f16 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x886d781b cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9926c4a8 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f0e4c2d cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0b13ace cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa1397805 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8db193f cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaada944d cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab9c5fa6 cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb49c8d8e cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb64a5db7 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb756155e cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb94bf679 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbcd7448b cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbf30a0d7 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc8f63b32 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd54a72c8 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdbadaa7e cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde4350f8 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdec422c6 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe03cf77b cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe25ff66a cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe31eac7e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe93d9eb1 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xebeb2e82 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf30b7df2 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfc681d0a cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x0d8ef797 cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x104d2447 cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x2ae0ba8a cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3ab98f10 cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x4066da87 cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x4a99f369 cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xb5ee2b09 cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1b04cc9b vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x82772ab1 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xafc2c389 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb0c03a66 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb3bd0ca3 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xed7f64a7 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x420996b0 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7491d747 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/dpaa2/fsl-dpaa2-eth 0x4412391e dpaa2_phc_index +EXPORT_SYMBOL drivers/net/ethernet/freescale/enetc/fsl-enetc-ptp 0x5431a304 enetc_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x0679e451 hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x734c6d47 hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xa3d60ece hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xe0650452 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xe80075d7 hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hns_dsaf 0x50ede754 hns_dsaf_roce_reset +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x2fc304f0 hnae3_unregister_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x4f3f55db hnae3_set_client_init_flag +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x5cad2034 hnae3_register_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x7592fa4a hnae3_unregister_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xaa7fbbb8 hnae3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xb5dc186b hnae3_register_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xd9119f7c hnae3_register_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x8bdf114d i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xbf602377 i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x1e849fae iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x6058fc7a iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x02854265 otx2_mbox_wait_for_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x0c1bc003 otx2_reply_invalid_msg +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x1bff99c9 otx2_mbox_nonempty +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x28cc64ff otx2_mbox_reset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x3437523f otx2_mbox_get_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x4f31a322 otx2_mbox_check_rsp_msgs +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x69670e30 otx2_mbox_init +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x702a012c otx2_mbox_alloc_msg_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x88eeaf6c otx2_mbox_msg_send +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x8f772a3f otx2_mbox_id2name +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xda032eac __otx2_mbox_reset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xf83cefcd otx2_mbox_destroy +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xfa2f45b7 otx2_mbox_busy_poll_for_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x02301382 otx2_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x06ff4dd5 otx2vf_set_ethtool_ops +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x249faad6 mbox_handler_nix_bp_enable +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x38a39746 mbox_handler_nix_txsch_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x3a2448a6 otx2_set_mac_address +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x464afdca otx2_get_mac_from_af +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x5b7944fb otx2_get_stats64 +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x642e080b otx2_stop +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x81d10e11 otx2_sq_append_skb +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x9988f5e7 otx2_open +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xa2660df9 otx2_set_real_num_queues +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xa9360115 mbox_handler_nix_lf_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xc1dafc47 mbox_handler_msix_offset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xdb9ca7cb otx2_mbox_up_handler_cgx_link_event +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xddb2b399 otx2_detach_resources +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xf4b2f76b mbox_handler_npa_lf_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xf8e41770 otx2_attach_npa_nix +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x045ebe7d mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0497ba56 mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05927802 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e08470c mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x155de28b mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x161ed34d mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cd3b0b0 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2093089c mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2509a842 mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f559852 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fc83bae mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3677315a mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dfa70f6 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4487668b mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46920aee mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x569d4ba0 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x570cedc6 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e845720 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f2ccfac mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64211eae set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x736774d6 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7750b6aa mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77954339 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83af4ffa mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90aa1547 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93c80e41 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x995c6b26 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d16b66f mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2fb0ad5 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5d65c93 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa741cedf set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf597875 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafe5ef2d mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb078924d mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc154525 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc19587f4 mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc1b397b mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccc0ab79 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd964d388 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2b9c13c mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7186764 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf55e92f2 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf89db27d mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa564fcb mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00afb36d mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08c8eaa1 mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09749fc8 mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x152c62b3 mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x166bb48e mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b1289bb mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c3bd7e4 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1dc052d5 mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e2f0b01 mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ef4680c mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x204198b9 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25baae5b mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27fa4d63 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c63a16d mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30ef09cc mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32705594 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33b5209d mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34befef4 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3529c7d4 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37651b47 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x378ba9e4 mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c5be92a mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e960390 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9179e mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4040a77b mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x405c74ca mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4063ac57 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40c09a02 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42c06a45 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x450c4ba3 mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4535b9ea mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45ae2aa3 mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46150cf1 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x482f7e42 mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4848521b mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4dd45045 mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4dd70cb3 mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4eba81ab mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x556dd8f5 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x560ec960 mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e091cd2 mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6177933b mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65b60979 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68ffa122 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x694b5e14 mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c841c47 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d83182d mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e5bc7b5 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6ee26c05 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6fc1b24e mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7211071b mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x739a8e2f mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x752493dd mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7800b056 mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b154c06 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bcced47 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7fec10db mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x812bdce6 mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82a62d0a mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a25e22 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89327ecb mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b2e5426 mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d8485df mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ee195bc mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eeefaa0 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f49d02f mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x923733fb mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93b84f70 mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93ec2730 mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x957794fd mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9612a66a mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96474f73 mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9884865a mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98ab7cc6 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98d56b85 mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b465fc9 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c4566cc mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2763655 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa512e4e9 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa72d75f4 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae9ea383 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb62c65cc mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb792eeed mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb978d2d4 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd99779c mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf14f8c6 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0b5acce mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc183cae5 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc205f5bd mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc43a2981 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc581f950 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6771aa2 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcac52d1c mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xccebdc84 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd32e26e mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce3f7856 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf036534 mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfabdb3b mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1c5092a mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5523d2d mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd67ab476 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb996d23 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbeb31db mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd5cf471 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdde92fa8 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2f16f8d mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe3f5c979 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe59a2cfb mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8be8fe6 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb344807 mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeba4db25 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed95f0c7 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef01bb32 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefae8d4e mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf120e368 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1ebd6bb mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf36cbf82 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3e1fba7 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf56bacc6 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5963dfa mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6a18abb mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfade07a3 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe3c6eb2 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x83422a6b mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02f92bcc mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x132a5f5f mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2e0fcccf mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2ffef613 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x453c6095 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x532f0d47 mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63346b1e mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x684e2614 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa6074734 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb8cab321 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xced5eb60 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe2fa1de0 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe66238c1 mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe80f1981 mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf08d74cb mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf42feba1 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x5bbbafdc mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x7a60412d mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xbf577e21 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xf6437cad mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x00905ea0 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x083f3fea ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x08f424a6 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b75b93b ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b965f2e ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x14b7dcf2 __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1b6ede80 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3e1ba157 ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3f9500ce ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4331fdcb ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x47a12c2c ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x55d0fe13 ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x58907ced ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5e5ec2e1 ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6131d970 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x66a0770b ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x672ffacb ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x67483a8e ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6a97a002 ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6c7712ab ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7494ddf0 ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x74b0494e ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7d3e7c0e ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7e691373 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7ef2fa95 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x880bda2d ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8b5e2078 ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa1f96b41 ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa57f3687 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa60dbbb8 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaed85277 ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbb81e2ad ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbd5b54d7 __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbde0f020 ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc8c5094a ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd1b35021 ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd56cd4f1 ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd8cd1505 ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd997bfde ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xdb4a8333 ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe3ae16a8 __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe66098dd ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xeba7f9ba ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf28b79fe ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf5752674 ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf7eaadc0 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4949b424 qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xbf5dd855 qed_get_rdma_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xe24f29e8 qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xfd0fa520 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x1be7e48c qede_rdma_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0xec2759b0 qede_rdma_register_driver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x10290e86 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb1076d50 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdc651f0c hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf017ff4f hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf928c522 hdlcdrv_register +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0xd7284741 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x0c9452ed free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x3d812447 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x9e329a17 cavium_mdiobus_write +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0xd201806c cavium_mdiobus_read +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x20305383 xgene_mdio_rgmii_read +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x51e3ad93 xgene_mdio_rd_mac +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0xac3639c2 xgene_mdio_rgmii_write +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0xaecd23d2 xgene_enet_phy_register +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0xe31a33f3 xgene_mdio_wr_mac +EXPORT_SYMBOL drivers/net/ppp/pppox 0x051da458 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x17180351 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x506cc1d7 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x99af4c5e pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xe051f015 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x62e1ed6e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x78ea883d team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x7ad6c405 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xab9ac0b2 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xba503b2d team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xbca35d56 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xbcf92e55 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe2ec47f0 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x68d3e053 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x6dc8ad8e usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9d17ff2d usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1ad739f1 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x55473d1e hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x55b1c59b unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x911f47c5 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa49adb42 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xae66d9ef attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc595ef22 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0a855b6 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0e9b675 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf1806ce4 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x3be4a87e i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x11bb618a ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1496f9e7 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x310a75b8 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x39dc11d8 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4921cce6 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x86c1e3fd ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8e552eef ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x969309be ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9be348dc ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa3d86021 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd5e773b2 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf463ab76 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x01b38b6f ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x04f9ac96 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1339fe3e ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x161078a6 ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1a38eb42 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1e0fc4ce ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1e33e90a ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x247ae9bb ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2bb59c5c ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x40f60147 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x46c10822 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x476b766a ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4b3fc06d ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4f7bb1db __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x50dd77c4 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x53914f00 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57988b14 ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x638ebc27 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x63f7816d ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x653e6387 ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6d27cfb5 ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x739beaea ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x75b3c90d ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7a7b8b3c ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7de216c9 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7e50e573 ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x81ec312a ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8943da75 ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8d343d9c ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8ffc1b92 ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x92c008f6 ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x95459485 ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x994bc951 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb34d0857 ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb873fee5 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb96722a2 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbdb356e4 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc1830163 ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc47443a2 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcac6593c ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xce42e0c8 ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd537be64 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd61b56a6 ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd9785971 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdbbec7c1 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xebfd7687 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xee60b5da ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf5658e2d ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf7b6c4ed ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x60c8f41e ath11k_core_get_hw_mac_id +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x7cc0d4f9 ath11k_dp_service_srng +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x007ce0bc ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x08587d99 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x21952dc1 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2c9c85e9 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x61d817b6 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6285a2ec ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x67a152f2 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa9221be8 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb75dd512 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcc5b8ae4 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xff17c509 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x04a965b3 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x127fe1d8 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x22b186a2 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a03e734 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4651f08b ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x57cb010a ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x590db862 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6e458359 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7a07e083 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7e4bce21 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x83e80e8b ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8dc6f76d ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x91372871 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x91e8eaa7 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x94caee05 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa03eba58 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xae6491c6 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbc0097e1 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcdf26da7 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd1204db8 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2db571a ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe06d7354 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xee2ccdae ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0070ca59 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x062ace4d ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07855c64 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07eabf64 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13082a2d ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x160a481b ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19a397c4 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19cbbb1d ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ac6116d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f8db2ad ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23c1a8f1 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23ef34dc ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x253d9b2e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2823e745 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a77e197 ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b34b241 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bc5a48e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c0cbb20 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2dff8948 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f2bbfc8 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33629090 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33fd43f7 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35d98329 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39896fae ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b54955e ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c563e04 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cf77b1c ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d9b1bbe ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3dd989fa ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40d749a8 ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46e932cb ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x491d977a ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49865701 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52593a30 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5280959a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55399609 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x557c0e0a ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5816b0e0 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a15e238 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a8cf27e ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b1ca221 ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c55e3ca ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e9de186 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f120a22 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f3a60f5 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63eab4f8 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65074df1 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68369a30 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b7cf003 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cd4bf98 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e3c62a8 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70695e55 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7175afb3 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75d61194 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78379bcb ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c88129b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e92cc30 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f17587a ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8906fd11 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b0b6e7d ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d3aaa5b ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91d3ca48 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96b1c03e ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97203cad ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9756f6aa ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97796c44 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9900d05c ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b210a7d ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c846299 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c97fa96 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9daf9a75 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa15327a3 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa46f03a4 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b31696 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7b32bf0 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae592206 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0a98399 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb12d0676 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3f3fef2 ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7dcb67a ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbac85211 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc86980f ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdcd872e ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe35a3e9 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0659fa9 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1f5a5fd ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3cbcf1e ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc919e5af ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9325fb2 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc99da6aa ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb86cc1b ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc736040 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3ea01a0 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7ae59ef ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8fd5445 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdadca0b1 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdff4c58d ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1e90909 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2677a78 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9fee563 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec50888d ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf15255e8 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf39f3f08 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf67fa4b6 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc31aa83 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcd65d98 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd9df382 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x7548b6df atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xa5c59881 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xbc040c1c stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x0e49b7e8 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x19e3fe57 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x29291d73 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x63188f30 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x70262af3 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x74393b3b brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x75599ac6 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x762cbbdd brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x9904001f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xaabaaacc brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xae1daf31 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xafcf45da brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xef690e70 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x0bdf9a23 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x147aa722 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2529b14b libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x337ec137 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x38275683 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3d5a1ddf libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5503ce54 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5670c722 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x6671c6a3 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x74e746b4 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x7f8cbc23 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x9d4c5e2a libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xa8bd6de3 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xbd9ef2d6 free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xdca9f16c libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xddb1b0af libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xe8244f1a libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xec9b8871 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xeeca4529 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf440c3bb libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x04877946 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0bf6a1dd il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0e25ae22 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x103f162b il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x10b78864 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x155d4a25 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x17aee35e il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1ca0256b il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1debfff7 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1f858cac il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x20187022 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x20d6437c il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2602439c il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2776c1cd il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x27f2c5c5 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2870d9fb il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x28ad497a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2cf435b7 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2f3dafcf il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x336d245f il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x339218b9 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3446cf00 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3c1b23c1 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3d7dd1fc il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3e49584c il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4004d5e0 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x400671e0 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x414c7cbb _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x414fded7 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x440300a1 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x481c3a6b il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4b4fc8e4 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4d07f242 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4d6031be il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4efc492e il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x53d51793 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x53e1044c il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x59b76bf0 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x60f2658c il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x65fdfee3 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x70e93d66 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7258961b il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x761fb3f9 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x76ecad4e il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x78b71573 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x79b962e3 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7b3fd355 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7cc232de il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x80981d9f il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x837d7a06 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8547d5b1 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8a9a3f50 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x93f5b055 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9a4a1b18 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9eace93c il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa13b249e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa4cf7140 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa5adf720 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa75cd07b il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa85c55e2 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa99ebe16 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaaf805ad il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xae362182 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xae71891d il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb4845668 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb4eae058 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb5447aa5 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb60fdaec il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb736a6e9 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb77fe14c il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb84039bd il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb9ad0cf0 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc1415509 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc1e7948f il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc2457c77 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc3cd62ce il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc6d820d8 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd030de8b il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd35bcd14 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd46a91a9 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd485cd7c il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd7e9814b il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd8754302 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd9848d0d il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdafbd76a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdb8efa31 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdcc13392 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xddd3f2f4 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xde8871d0 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xedde479f il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xee53a0bc il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf0e3c3ce il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf0fc8f77 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf11af926 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf34db2b7 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf568bfd7 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfb664e24 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfd5bd66f il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1ee9c199 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x20a6a247 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb72ade7d __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0dc7bfa1 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13fcc13c hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x189589b9 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x27a2b47a hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2c33b225 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x335ae765 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3e158b15 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x42596a99 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x58f537fd hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x6120190c hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x67133543 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7504b189 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x75934c58 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x8576ad60 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x928ffdae hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x985aea9c hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa19e5b3f hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xafa4eeac hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb7cbec48 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xbed9e50f hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc6d82530 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xde51b4c4 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe1f43989 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xeb3636d7 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf1486d65 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf5d113f9 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x0969ab96 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x10eedf4d __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x145ee74e alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x1a9a5e53 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x20b542b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x31ce35af orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x584124cf orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5cd80980 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x7d4fdc53 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x98de201a orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb72a7d75 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xbf40f5f1 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xc4fdff8b orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd0aae274 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xd95387ef orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe84134c2 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0x2aa7442c mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x19727df4 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x000619b5 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0731d73c rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x126b6ebb rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x14989749 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x150302ed rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1d0abf15 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x20f700c5 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2fc79013 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x34d8b86a rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x37d5d3aa rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3a942965 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3e4ba7fa _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4a94fe1f rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4c829ebe rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4eba62f8 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x57986d2a _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5e0649b6 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6c12e294 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x735d7039 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7a5291cd rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7a7b396d rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8185559e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x82b79c89 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x84470d6d rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x84c81ada rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8b00dd0e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9ad5c908 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa5dfb039 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xba73314d rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbd6064cc rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc0c206d4 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc48bc963 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc5623ebe rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcdf2ebca rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd912afd4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe77f66c2 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe7bb7333 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf1acc7b1 _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf565874b rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf70ca941 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfab6e6a3 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x0fa75b8e rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x6580cc41 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x8a37869b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xb625e120 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x16310fd2 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x1f9f35c8 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x9194d345 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xfaaa5fbb rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0012e5b9 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0a3f2d3f rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b5ce507 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2047d95a efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x249fa9bc rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x36a95a0b rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x49feab64 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4b437996 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x623ec51e rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x641ecba1 efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6eebe236 rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x76a0bbfa rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7a1b422d rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7a1ee292 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x848bb84b rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8af229de rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8c475b4d rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ea60059 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x972fbe93 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9f4c9630 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9fc0b913 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xae53bedb rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb096b1fa rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb2fbac54 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd2df2b67 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd5381e8a rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdc42f5a8 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdf5bcf73 rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe682b0f3 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xeabbec50 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebedfe5f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf1954fa8 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0xef63895e rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0x0483f3ec rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0xeb4198d2 rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0a202fa4 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x106d260f rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x16b78bbf rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x171d5af8 rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x24edff89 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x280d8f13 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2c759b51 rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2e62af25 rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x39bc8099 rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x3ed1bd02 rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x3f560c9c check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x44984dcf rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4b6e69d4 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4f14ee22 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4f41d0fe rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5a997dee rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5eced9d7 rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5f2b5fa3 rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x61d879e5 rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x66a291b8 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x719c09f7 rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x725ef489 rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x78c3ab49 rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7c94ba72 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x80445773 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x80fe6ed2 rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8189a4b7 rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x84d90345 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x94cbd05a rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x96436b05 rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9760a31b rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9b3f8282 rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa1d1ba34 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa2122e7c rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa2efa6c7 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb30143ef rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb612b578 rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbaa00d5e rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbe57068c rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbf974d9a rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc71c9b84 __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc7843c66 rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd1cadb39 rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd868eade rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd9dec37d rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdd136551 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe05f9999 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe61b999e rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xea1c767c rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xeca6a5ce rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf62da06f rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x23167fc9 rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x9021cfe8 rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xa8955b93 rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xde83d1ac rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0xeaa44d63 rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x53a0010f wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9ddaee92 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc7ad89a2 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf287eafd wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x0f4b936a fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x2e63c0f4 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xcd52e682 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x394c6a23 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x96efea86 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x06015be1 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x5d8904d0 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x6fa5c09b nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0x5bcd2d12 pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x254058e2 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x3b7b29f4 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x7482ef2d s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x9b34ea94 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xb2691d1c s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x25f19cc3 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7831108f ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7b93836d ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x92b9a37b ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x981f70ba st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x994c1e8d ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb3f76537 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbe3f9db9 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xccd2df3d st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xde0f55f5 ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1e49e36d st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2120d21f st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3b83aaab st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x410db193 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x533f35b0 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x62dee6b2 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x684fe8c5 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x77a273e7 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa1b5ab9b st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa65e8e72 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbdc252e9 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc5c60b8a st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcf65caa8 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd0cab492 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd3f2017f st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe7ce1146 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf65e8fc9 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfa3bd54b st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x04f7aeef ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3a1050e4 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x3d53c2f1 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x3de6986a ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0x6fed0fbc ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x79068194 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0x850ff005 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x96bbf97f ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9bab1596 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x9ebe05a0 ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xb1c5b9c9 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xb6601082 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xc5d1b255 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xcd6e3466 ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0xd057d943 ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0xd90fb224 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0xe7f943c4 ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0xf6564b30 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xfa8dc68a ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0xff01b56c ntb_link_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x31fd66db nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x67f37c2e nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x064adac7 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x07ba2283 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x16fc4dde parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x1a8db117 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x21426170 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x23ebcfb1 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x2d3b9b22 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x3cb9e35e parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x44fd4018 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x47e8d02b parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x55fc1e71 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5ca42aaa parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x614873d0 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x6a4ad302 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x7c8c3513 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x893a7084 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x9a5968e1 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x9a5aa56b parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x9edfaeb0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xa20ba6c2 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xa7af4ca9 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3620274 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb662664f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xbf3a5294 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xd412a091 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xdd2c797e parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xdfb9c493 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xe5cb4753 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xe6c0c738 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xef612619 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xf7af3a50 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pci/controller/pcie-iproc 0x406fee7a iproc_pcie_remove +EXPORT_SYMBOL drivers/pci/controller/pcie-iproc 0x79ed954e iproc_pcie_setup +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x26c991d1 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x37334303 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x38401513 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x41f3dbaf pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x520b5cca pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5fc54de0 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaba27b5d pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcd87361e pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe10970cd pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf7e7577b pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf942709b pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x5db190df pccard_static_ops +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x00654de0 cros_ec_suspend +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x61f9c11c cros_ec_resume +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xaf1fd509 cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xbe0b2fa9 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xfe7216c3 cros_ec_handle_event +EXPORT_SYMBOL drivers/regulator/rohm-regulator 0x98eb8742 rohm_regulator_set_dvs_levels +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3330a1c8 qcom_smd_unregister_edge +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3a38199d qcom_smd_register_edge +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x047a2b54 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1eddb1cf rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x2ec75903 rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x47f56917 __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5959a478 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x79cec56b rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x89e10d48 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x962667ff rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x9a9f9859 rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb1b42a7f rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb2014264 rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb3d457ef rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xd13c6bcc rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xfa291a67 rpmsg_register_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x35fbc4f3 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x838b064f scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xdbc41f67 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe354999d scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe76a3b93 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0260e803 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x16e36804 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4e727b9f fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4fd9a1fa fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6281eec4 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x841571ee fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xacd4c7ff fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbd15519b fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcaa001ab fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd9a08541 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf30f968c fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00f73c35 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x018c4a89 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x046cc298 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06f0e7fb fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0920600d fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d96271c fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x11e81681 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16985a81 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c113ba8 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2e1d4509 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35907fcf fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3bed1c93 fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x478d2a16 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b2dc94d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4bfff5b4 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x54fe9ea1 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x554cd576 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d84bb00 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ed95dec fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x615b3af0 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62b73f09 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68886677 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d81ac1 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d996961 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7df55f2c fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f1c618d fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x808025a0 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83528d8a fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85e01831 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8708d073 fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89b32d45 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97c26851 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d4c9da4 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa49bc978 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4fdee42 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa883b26 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab07de7d fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xabe65048 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb73551fe fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8dfc956 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd17b79d5 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd25c5086 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd77c1938 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdaad93e8 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdacfc681 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc815f25 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdedec12f fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5cf06b5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6b4d688 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7913021 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea5b3c45 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee5d0c56 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf6241ab7 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x9d805189 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb0a183a0 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb9af7c58 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa9d3202d mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x02f1e92d qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x29aaaa0a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2b1e874d qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2e4b649a qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4391ade7 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4a70e59e qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4b864180 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5aa933ab qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9d32da0b qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe4247f65 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xede67196 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xef991722 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/raid_class 0xb2abeef5 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xbc9f2c25 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xd9b0cbcb raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0c9e3946 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0cf717d1 fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0f7394ed fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x46e66aea fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5d8fe705 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x70964e74 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7ee47f0e fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa4b4a1c2 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaf6ec749 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbc96998d fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc185b4f2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd760b7ef fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdf3bf4d4 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf0fa57b3 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfe88cb1c fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xff771837 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00360ad8 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x07945cf5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ca59b9e sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2e57a855 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x36533f68 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x36774fbc sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3844e7f3 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x38bd67e3 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3acec5fa sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x403c1417 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4714f82b sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x47b1db58 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4cc68591 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60b4f090 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x63c38a2a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70dabfdc sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x790b9a3f sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b0f4fbd sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ad7a572 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1d72787 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7deaab4 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb82e69f4 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba45c688 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0136947 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd10c8184 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3ed380a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdafe8d1b sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea924f0a sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfadb6180 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x11ec7964 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3006a77f spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x73d808d6 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9c24562a spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xeec7f9ea spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x279d0dfb srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x38f5d6cc srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xd7069b24 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe60813f1 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xfd87a2d4 srp_timed_out +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x2805b06a tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x54982dda tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x09dfe2cc ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x6d284a85 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x7292e9c6 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x8ea0080d ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x9e0a0394 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xb2e019e7 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xc1436eb3 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xe52577a5 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xed22b395 ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x4b8f52de ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0xe73ac1e0 ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0x030f2d6c dpaa2_io_service_enqueue_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0x3d01f417 dpaa2_io_service_pull_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xc4ccef03 dpaa2_io_get_cpu +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xdb008703 dpaa2_io_service_enqueue_multiple_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xe0f67b93 dpaa2_io_service_enqueue_multiple_desc_fq +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0348ce8f cmdq_pkt_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0a86537c cmdq_pkt_poll_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x23d0b9f2 cmdq_pkt_clear_event +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x41f3a1df cmdq_mbox_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x50396152 cmdq_pkt_write_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x58684d20 cmdq_dev_get_client_reg +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x85e281f0 cmdq_pkt_poll +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa066b5c3 cmdq_pkt_write +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa846e75e cmdq_pkt_wfe +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa9dc86da cmdq_pkt_flush_async +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xe19c6bbd cmdq_pkt_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xede9ce4c cmdq_pkt_flush +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xef239965 cmdq_mbox_destroy +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0x0838fb82 of_get_ocmem +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xc53d76b1 ocmem_allocate +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xf9b05967 ocmem_free +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x1c76ea4d pdr_restart_pd +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x432975e6 pdr_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x47b2ed49 pdr_handle_alloc +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0xf618ca5b pdr_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x0312294f geni_se_clk_tbl_get +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x0c418b94 geni_se_init +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x3aa6f22f geni_se_resources_off +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x628d65ec geni_se_tx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x6c20a386 geni_se_tx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x6c6b4311 geni_se_rx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x79c8cfaa geni_se_config_packing +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xb1aa352a geni_se_rx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xc1db5eee geni_se_clk_freq_match +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xcd8e1c2a geni_se_resources_on +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xe37a7deb geni_se_get_qup_hw_version +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xff926da4 geni_se_select_mode +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x0ef12cc9 qmi_encode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x21ce5888 qmi_response_type_v01_ei +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x2b3ac01f qmi_send_indication +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x2eb02f9d qmi_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x54275e77 qmi_send_request +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x5fcf6fe8 qmi_txn_wait +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x68772745 qmi_decode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x6fed7743 qmi_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x740c71e1 qmi_send_response +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x77e4b61a qmi_txn_cancel +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xbb00ccb7 qmi_handle_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xd07caa4d qmi_txn_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xf40fd1ad qmi_add_server +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x3abef80b qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x34b57571 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x9979b76e qcom_smem_virt_to_phys +EXPORT_SYMBOL drivers/soc/qcom/smem 0xeeffa750 qcom_smem_get +EXPORT_SYMBOL drivers/soc/qcom/wcnss_ctrl 0x899096e1 qcom_wcnss_open_channel +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x03af2868 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16568455 sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x272cb17d sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x275b0267 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2dab79c1 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2de6099b sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x46dab086 sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4b8870e2 sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4d6ccc8a sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x51e2931d sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x7989c512 sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x7d1c020a sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x809e381e sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x8ebc4eae sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9485d3b5 sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x989e271b sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xb51a96a0 sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xcf551429 sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd19d61bc sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x0b5901ee sdw_cdns_is_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x34712074 sdw_cdns_irq +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x491c20d7 sdw_cdns_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x56714814 cdns_reset_page_addr +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x60bc4231 sdw_cdns_alloc_pdi +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x6325dc86 cdns_xfer_msg +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x780111da sdw_cdns_enable_interrupt +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x7e03a29c cdns_bus_conf +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x845ab16d cdns_xfer_msg_defer +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x9a919406 cdns_set_sdw_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x9e0ee8cc sdw_cdns_probe +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa76a6fcb sdw_cdns_thread +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xe5a55364 sdw_cdns_pdi_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xef2bb057 sdw_cdns_config_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xf3721524 sdw_cdns_clock_restart +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xf503a96d sdw_cdns_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xfa15df7f sdw_cdns_exit_reset +EXPORT_SYMBOL drivers/soundwire/soundwire-intel 0x9d3c26fe sdw_intel_exit +EXPORT_SYMBOL drivers/ssb/ssb 0x084361e7 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x2174c41f ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x21cde204 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x21ed0070 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x2fccff81 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x36df0b64 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x3c43b3a6 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x49a4abd1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x6d094512 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x765cd379 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x79d6f164 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7f53d3c4 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x98aa4c5e ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x98cc3c9f ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x9a6f99fc ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xaf969640 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcd1b5f08 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe9c9600c ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xeb38a210 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xecdacac3 ssb_bus_powerup +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x051c55ad fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0600290c fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1148af4a fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2792b41b fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2f07ffaa fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4527c615 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x47544fa3 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4de5f47d fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5cf6f598 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x61ba21a1 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6c47922f fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f03c462 fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7ce31a63 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x829c84e6 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x852ede8c fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x893f032e fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x984ca629 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x98b8caed fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3740d24 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbaf1cd43 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbea2e3f5 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xddd251da fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe58ae66f fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf4a238fe fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xffc91cab fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x00c9f6a6 gasket_pci_add_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x04f1d91b gasket_get_ioctl_permissions_cb +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x065f9c9d gasket_page_table_max_size +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x339c2b95 gasket_page_table_map +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x34cc3109 gasket_sysfs_get_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x372973e0 gasket_page_table_are_addrs_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x38c3d415 gasket_page_table_num_active_pages +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4109757c gasket_page_table_partition +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4292ff96 gasket_page_table_is_dev_addr_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x43299805 gasket_register_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x5184b57d gasket_reset_nolock +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x772ff619 gasket_enable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x77311f6a gasket_page_table_unmap_all +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x89a16e7d gasket_unregister_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8a1abfe2 gasket_sysfs_put_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8c92da47 gasket_page_table_num_simple_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xb1f9955d gasket_sysfs_create_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xb2879c33 gasket_sysfs_register_store +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xb3634615 gasket_pci_remove_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaa2668a gasket_num_name_lookup +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaf2f8cd gasket_page_table_unmap +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc225208c gasket_page_table_num_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc66e2003 gasket_mm_unmap_region +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xe243d048 gasket_wait_with_reschedule +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xe76edaa5 gasket_sysfs_get_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xe79d763a gasket_sysfs_put_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xe827ebff gasket_disable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xfc2475c2 gasket_reset +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x505a3caf adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa843fef1 ade7854_probe +EXPORT_SYMBOL drivers/staging/media/allegro-dvt/allegro 0x2c79d0f2 msg_type_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0641199e rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07306815 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x099ede1e rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0df3048a rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x192de76c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f267651 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x340dc17b rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3933903a rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b5cb5c9 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3dd1e7db rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3fd9eb79 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x485f5c81 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a54bbe4 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d6db927 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67cc6552 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x69ee3fab rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x716dfa6d rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7aec0b9f rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7ea77113 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x815ac7a0 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83803696 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8448b54f rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86f68c79 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88335450 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x894ca5b0 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96bc6544 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9936b3dc rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ad34e85 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb96b88a1 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbdcfcdf0 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc1545a85 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc19a8ac4 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5ea427b dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7ae371f rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8694d36 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc91c27c6 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc98c6de6 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd88b224 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcecfd0fb HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0ec867d rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd3ee266a rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4522704 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd496c913 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd58fd0f1 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9adc70b dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf020438a rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf49e4651 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf591a7a7 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd12f8e0 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00c9c43c ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0245c38d ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06d04f27 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x09bc406f rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ff7cac3 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18f31367 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c4a0f34 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d66a0ff ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x233527a4 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x23aeaf83 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f3b45b3 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f440b74 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30d23423 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3becc45a ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c21905d ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a0e06af dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b863b65 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55950731 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56c3aa6f ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63310cb5 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a5d9566 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6aad3ba6 dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7843c9b3 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ba8e610 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ec5bdbe ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89a51559 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89e01f8a ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8abd9765 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x921f7c0b dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x935cc8a7 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9fd59c06 to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1070c54 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa53d2e4e ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xae1f49e2 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0f27f22 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb6042a7f dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb51895d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb6a3e57 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc2aeee8 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbcd4d07e ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbf7837bf ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc0a291d2 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc0f47150 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce7a1494 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf2934c2 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd09a3815 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf84f10b ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf8f67e2 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xebed89d9 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecc5fb1b ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf4b1eee7 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf7cfd385 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf830ec1a HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa18faaf ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc5383be is_legal_channel +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x2b777418 vchi_get_peer_version +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x2f3516ab vchiq_connect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x36331e4f vchi_held_msg_release +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x47f110c2 vchi_service_release +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x5211f7cb vchi_initialise +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x57e16fff vchi_disconnect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x582ed8ca vchiq_bulk_receive +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x6682543a vchi_msg_dequeue +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x69df51ac vchi_bulk_queue_receive +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x713b5716 vchiq_shutdown +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x84112d9c vchi_connect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x915629ae vchi_bulk_queue_transmit +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x92b2feb4 vchiq_bulk_transmit +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xa22e9df3 vchiq_add_connected_callback +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xaa03351f vchi_service_open +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xaba69e05 vchiq_add_service +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xbd9445f3 vchi_msg_remove +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xbf670d66 vchi_msg_peek +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc1fdb31f vchiq_open_service +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc4b0bf30 vchi_service_close +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc5c429da vchiq_initialise +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xcc07cfe3 vchi_queue_kernel_message +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xf2e8c52e vchi_service_use +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xf63a36d7 vchi_msg_hold +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07cb21d9 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x13eebd30 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x16dd1535 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b0ae963 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2074aa70 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x257c1c15 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x27f93358 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39f2e950 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x41778262 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51bdf730 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c80036d iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x615ced4e iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6565a493 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6947d149 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8994f2a0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8cdae311 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d61b898 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x93f3049a iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x97087efe iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9feae9ae iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa3e04d38 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xab7a4d17 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xae67ab32 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaeab1ece iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xafcc4a9d iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb1ad75c3 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbe9574f3 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc01b9b66 iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc04c90a8 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2917b8b iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2e6c382 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb026d85 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd5d4cfc2 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb8084ba iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe02bbabe iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe151f7d0 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2f46188 iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe716441f iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe842db4e iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xeab6bfb9 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xec0bae32 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf670b47b iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa992ab9 iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xff0822c0 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/target_core_mod 0x02501768 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x03e2918f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0bd8cdd6 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f23aaf5 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x17fcde49 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x1898251e target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x19ef2866 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x299cfa43 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2dd5787c target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ffc7b61 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x3473ff59 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x34f1aacc target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x35980a1f target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x35c498b0 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x372e7f5a target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x39d714cd __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c266ba7 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d45bdfe core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x46d8aa1b target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x479a9cd3 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x50605123 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x50c1edea spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x5119d1bb target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x547e4491 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x555021fb target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x55728ddf transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x58daefce transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5978b30b target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x59a4e829 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x60ee5b23 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x658a26dc transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x65aff517 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f9ca50b target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7167083d transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x75b3a387 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x772fd95d transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x77df2c5b core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x82790921 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8988332b transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a71a3e4 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a87007a sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b3fbe2c core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x93e8f8bc passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x960dd67c sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x99949a1d sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x99ac6f03 target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2a1c0de transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa561811c transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9189a14 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9e1f768 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa37f079 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xac15ce43 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xadd0d2f5 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xb08ae6d4 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb09c0eb3 target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7deb4df transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc14d2ee spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd272494 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd32c5fb passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd01002c0 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6c71469 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7f3721c target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xd95fcda1 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xdab78aba spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb6a025f transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdeb0d5f0 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3e415ea core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe50a1cf4 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6568295 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf5282c21 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xf752f275 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7eac8d7 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xfde44dde target_put_sess_cmd +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xa9122de9 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x6970f35e usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x27204718 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0b8516de usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0e6ceec9 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1b8a0010 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x56461af6 usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x63263162 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6945c133 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7519e725 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7f09305b usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x82b81d6b usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x85159ba6 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa748b020 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb18a8599 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xef7e5708 usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x5dd22a35 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x888d7f14 usb_serial_suspend +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x06d4e01e mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x491839ed mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x569ed51a mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x678ba257 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x8e913b6c mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x9010220a mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xa9afadcf mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xa9c6c2f0 mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xb6bf21bf mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbdda3e55 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbe5fb84d mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc6b413f4 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/vfio 0x19567d06 vfio_info_cap_shift +EXPORT_SYMBOL drivers/vfio/vfio 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL drivers/vfio/vfio 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x6c28be5a vfio_info_add_capability +EXPORT_SYMBOL drivers/vfio/vfio 0x747eaedb vfio_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x9df007d5 vfio_unregister_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0xadc044b7 vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL drivers/vfio/vfio 0xc02318d9 vfio_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xc6acd75d vfio_register_notifier +EXPORT_SYMBOL drivers/vhost/vhost 0x0af478d6 vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vhost 0xbbad0b69 vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3ecc1eea vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b6a6e23 vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6d95262b vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8d40c6f4 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xf6784994 vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x53b628cb devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x53d80f9d devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x84475de6 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfd11c3e0 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1ac8f16e svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5d2e172b svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6108b881 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xab91af3a svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb774688c svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd39e9c15 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf0c7a5cc svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x04b8f7fe sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x8ee67e4d sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x9f414a29 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xa91d7a80 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x0f5fed0e mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7d069e4c matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x87acd081 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xbb0e8d84 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x5f1c3c04 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xaadfe600 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcad320dc matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf0849614 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x18dfc8de matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x24c19761 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9c62a9cc matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xae03e2d8 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd4916501 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf798a911 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xcf7ae0a9 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xe06a568a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x20f02189 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x24cbdeb1 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x71409158 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8c29005d matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdb5b847 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9a2d26d0 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf22dd6e3 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x200a3df7 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdd71fa9b w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x43e056e0 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x65ed6564 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xa4bd5c52 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xd1d00da2 w1_unregister_family +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x74d95f32 bd70528_wdt_set +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x96c12d10 bd70528_wdt_unlock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xc6439d59 bd70528_wdt_lock +EXPORT_SYMBOL fs/fscache/fscache 0x03c2fc75 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x0810900c fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x09bd14c7 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x0c6ae9d4 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x188e0482 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x24e32add fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x268359f7 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2c40c24a fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2c7d84d6 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2cd1af39 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x32afa358 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3ae7948e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x4463f64b fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x49b5014a __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4c8f198b __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x5525ef4a __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5fa7e12c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x625cd56a fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x662845cb fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x6acefa42 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x6e923564 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x76d18c15 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x80575e02 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x838bb872 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x9f8c7276 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa182e4ba fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xa4102c10 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa8cfdbfc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa8d2f7a7 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xb175b9e5 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xb3d89be0 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xb64dd7f0 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xbe3cb73b fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xc4ed0c27 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xc7902681 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcbacafa8 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xcd94aa9b __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xdde86067 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xf8ed4aab __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xfeadf345 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x01c320e2 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x42a2aef0 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0x99637dd2 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa540a7ad qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd4455320 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xde768286 qtree_entry_unused +EXPORT_SYMBOL lib/crc-itu-t 0x09a34a2b crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba55d23e crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xe2aae5cc crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x7bcc24fd blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xa3cefaa0 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x755f4ba3 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x147c3f2e chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x1c679fe2 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x37b34b92 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5b19e187 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbaf4d923 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xce15a526 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0x96a2d9e4 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xf250d433 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x38f7b6e0 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x93ff008c LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x9cef495b LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0x679e8cc2 objagg_create +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x2ba67e07 lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x49b42efe lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x6606a5c6 lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x8b5ad46c lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xa2779935 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xceb12ecd lowpan_register_netdevice +EXPORT_SYMBOL net/802/p8022 0x98cd10c9 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xa5d373a7 unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0x5112f0fb unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x8c49fc80 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x01730414 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x06afcd4e p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x06ee6b96 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x0741a21f p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x08aeb896 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x1430723c p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x15c7bd92 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x1a4dda12 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x1dc71b07 p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0x232efd58 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x23389eb8 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x25952e20 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x288acb73 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x2a2975de p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2e42ca35 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x2f55707b p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41ce9823 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x42158da3 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x4e79b1c6 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x5639a8af p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x57fb492f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x5d77a33d p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x64dc5a0c v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x6c93416f p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x6f441070 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x7649dd64 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x79c38721 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x89c17a2c p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x917283dd p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x917dc149 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x95bd8f96 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x980a9f87 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x984c5e73 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0xa0940b19 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xa5c73c1a p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xa81fca09 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xb59c8f74 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xb79f25fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0xbe595ba7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xc201d67a p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc6350031 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc9d07e0e p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xd61c8955 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xe47e1ee5 p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xecf026e8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xfa04b4ac p9_client_open +EXPORT_SYMBOL net/appletalk/appletalk 0x022d4bdd atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x7bfbfb71 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x9946d676 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xb7f53215 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x06612986 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x0b93cea9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x40b70d02 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x44c6e633 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x6e751368 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x70412646 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x71746dd1 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x7e27bf00 atm_charge +EXPORT_SYMBOL net/atm/atm 0x98502636 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x98aa19ff atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb970d318 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xcfa69f52 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xdf4c44c9 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe0a794c3 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x14573fd5 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x165c1075 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x26178a61 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4660b3ab ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x578fb3b3 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x73a1a3d0 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x76c54c78 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0xf921c975 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x01a19ac3 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x01e8d1bb hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04c3883b bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05a3f7c0 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06d1d539 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x11beb85b hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e501a68 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c6de856 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3da2e7b7 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e6348cc bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f258cc8 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x493ab80a hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a4f5927 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4aa48411 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4d504e64 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x506b076c bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x52cc748e __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x53c4d66a hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5fb67e2b l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67fae26d hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6fac8873 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x705c4bae __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0x771758f2 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79ecbc1a hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c289078 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ebc012d __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8586f2e8 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c8b57e9 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9158f8c1 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9504a011 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa2ad7988 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa814c189 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0faa84a l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb226f496 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbeedf15 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc7b141c bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0915f80 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe01b3fe0 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe0cbfe59 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe32e8cbc hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe45120fa bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf2585f41 hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf979656d l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc814344 bt_sock_poll +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x25793395 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x9b83daa7 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe01a78a4 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x20911e2a caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x2befb2fe caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x82730b31 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0x9e6e64c8 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xad08e6e6 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x16e89678 can_rx_register +EXPORT_SYMBOL net/can/can 0x54498ea4 can_proto_register +EXPORT_SYMBOL net/can/can 0x55be30c5 can_sock_destruct +EXPORT_SYMBOL net/can/can 0x572f73ba can_rx_unregister +EXPORT_SYMBOL net/can/can 0x8ec11c83 can_send +EXPORT_SYMBOL net/can/can 0x9273f06a can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x07faef01 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0x08c65127 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x0cd44f02 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0dd4a4f0 osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x1122b12e ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0x13b6d809 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x14be645e ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x1ca7562a ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x2494626d ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x26082657 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x26d4e61f osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x322d8cc0 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x35a061c7 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x3bd62989 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x3bf13734 ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3d8208d3 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x46555f2e ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46c81d44 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x48ea13db ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4c23ac57 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x4df5c55a ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0x501be3e6 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x51dbe404 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x5483049e ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0x561e2887 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x56b81b25 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5e0ec6a3 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x610f0fcd ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x62b60618 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64e76efc osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x64f2fb9e ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x65b3c567 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x65f6acfb ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x673fc72a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x67c50db1 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6af51527 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x6f1dd070 ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0x728e248f osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x769341d5 ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0x76b80317 ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0x7701630b ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x82cbe64b ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x88c32e65 ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x8cc414e3 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x8ff9612f ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x9284590f ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x94f73c50 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x964a5e1c ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0x96e40ce0 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x996a0eb7 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x9b101a60 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x9b2f3478 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9d007bce ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa21099f6 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa35da9cc ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0xa4528d63 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xa4d68c95 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa6d72dce ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0xa8858495 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xac387774 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xacce0137 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaf1beeba ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb06e6957 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xb3feb46f osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xb473b8d5 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6ba4dbd ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xb6e24323 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb752ad37 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0xb7ae9c32 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xb8a2dd50 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xba5fe3e8 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbaf90468 ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xbbd1654a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xbcceb1a7 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xc13f6249 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc1935a00 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xc1fd09d9 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xc2dcd03d ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xc3ea13cd ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcb5ab157 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0xce7e01cc osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd19a3317 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd41a3942 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xda939b11 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xdc935fc8 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0xdd4bfd0d osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe272762b ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xe599032e ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0xe5b37f48 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xe856d86e ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xe9f05d97 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0xea2ed499 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xeb127290 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xef65f2f5 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xf04dbb61 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf393f21f ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0xf3f6284d ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xf5177025 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xf6899dbb ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xf914a29b ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0xfaa48230 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0xfaeb252c ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xfd7b67c6 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xfeaba48c osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd044f542 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd8f194a3 dccp_req_err +EXPORT_SYMBOL net/dsa/dsa_core 0x29ffe77b dsa_port_vid_del +EXPORT_SYMBOL net/dsa/dsa_core 0x809b87b2 dsa_port_vid_add +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1d47a2ea wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7d03f33a wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x81b0093c wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x833f2a10 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x854bf341 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x91861eef wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xd940510a __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf07aed45 __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xf6959b63 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x37376577 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x418f8805 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7b512f4a ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc8dad7ab ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0be03251 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2b9025de arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa22725c5 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4d041887 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x51abe8ab ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa808ed0f ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc16412b1 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc783c7ee ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x2613bcfe xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xf0117f55 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xa6d2d07e udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x091dc5eb ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x397bd9d7 ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3d63db1f ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4cd9048b ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6dc045f7 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x864fcda5 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa5734fe1 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xae024606 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcc24e66f ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0402af0e ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3b3a64f4 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x840f0741 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa2d47883 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb9040ce4 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xaddef1f9 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xca926ebe xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa3a0c40e xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xd300f20a xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/l2tp/l2tp_core 0xb3432de2 l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0xc2c64507 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x8cb843d6 l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x189ba88c lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x34a17efb lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x79af6693 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x8f29d62a lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xb0718b26 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xd56db5cb lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xf1c697ac lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xf557a5fb lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x1ae6b082 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x20bbaf0c llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2e837de5 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6c413108 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x96b188e3 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xc8a99bc7 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xccafe22e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x01e14254 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x04122426 ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0x052c73c9 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0a5b48d9 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x0d0ba187 __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x0fe7aaf3 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x10a2bbaf ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x1179a07a ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x12849c94 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x13b9e361 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x15bd3050 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1c9ac420 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1e47c80e ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x1fa699fb ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0x216894bf ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x217c35b2 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x23c6264b ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x242abf3e ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x2bf473bd ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x2e4616bc ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3069b438 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x331c702a ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x37dec41a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3c935a81 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x3cc0530d __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3f8f3b72 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x3fdff207 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x408ed0a6 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x413139e4 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x42ee3068 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x46cb28a4 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x4d81f864 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x51cceea4 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x52fa3544 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x5494dd8b ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x5eee2998 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6623e89f ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0x6a521d6b ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x6b70fcfa ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x6bbb36d6 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x70b1f8f5 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x72947d11 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x80510ee9 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x83ca1508 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8b299715 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x8e030817 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x919a8af0 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x956b034f ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9b81e550 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x9f18fca3 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xa143749d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa1899e83 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa4a93525 ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0xa947f9e8 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa949fdc8 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xab556730 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaba46934 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xacb06d57 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xae023a71 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0xb34ea4ce ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb4a8e468 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xb647ce19 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb84fcc95 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0xbaad68ad ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xbb64ee36 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xbb9c4345 ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0xbcfdb71c ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0xc023145c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc15dc453 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc1ec210a ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xc2b5d15a ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xc30a62c8 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xc3c6e326 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc45bdd9b ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xc47829f0 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcc9aa77f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcfec1772 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd0f24b59 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd1829c00 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0xd3b41b41 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xd3d0c5ca ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd4b99741 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd5c76513 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xd923d6d9 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xda47aadc ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xdb04e95d ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xdd802c6e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xdda6e9ce ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xdfa7a15a ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe9431a18 ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xef5f5a08 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xf090de88 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfc592d83 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xfc8e68ca ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xfe001a40 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac802154/mac802154 0x09359088 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5a42e661 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x6095f2e8 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x636ef93c ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x6cfdb7d9 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x900e3092 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x9beaa7ca ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xdd30a874 ieee802154_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x06171729 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x084f8098 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x14e97650 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1fc9670d register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x39b66969 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x555afbcc unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6ab93630 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x79540985 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x80ceb7e5 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xac230bed ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc7848b37 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc8d3665 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xde7a983c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe4127eff ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf4804881 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2e43160d nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x4a163d23 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x535be615 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x5b76257e nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x9d173eb0 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xa772bd3f __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x21216254 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x46720d0e xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x5b24e0d1 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa025b5e8 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xb623b23e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb7571bcc xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xcf3e091c xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd08ca3e2 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd0d5e285 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x0646c7fd nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1329dc5d nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x1468ef1d nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x14de6cb8 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x289e2e53 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x28c9807b nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x31e0d246 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x375d17d8 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x47b2af00 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x549b765c nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x6800fad7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x6bfab963 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x731b6def nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x7cf2549d nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xd6eccf75 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xd7c323fd nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xe06428c8 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xe9972429 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xead1aa65 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xf144f413 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xfaacf3aa nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/nci/nci 0x00a65a80 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x154932cd nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0x16a0b2b7 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x26d59629 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x328cfc92 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x34ada484 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x371a53d8 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x407e17e8 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x443686ab nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x48cacfd8 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x4facf756 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x548ca0cb nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x5a83fa04 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x6486aec9 nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0x6ba139a1 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x6ceafab5 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x77a5d7df nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x7b753922 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x8803192e nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x8ddd272b nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xa8f2d3fa nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xb6e7fc09 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcb349568 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xd0f722d9 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xd1d2f15f nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd54e73cb nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd6408e22 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xd9f5a160 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe3cc1b56 nci_set_config +EXPORT_SYMBOL net/nfc/nfc 0x0a729b87 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x159ca2ec nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x257c2710 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x3018bf6f nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0x3267b98d nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x379fcd26 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x3d360439 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3dd1b11b nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x408d0133 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x43b9f9df nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x4597d676 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x4d3aa830 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x51c89b83 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x54fb4cff nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x657c7a70 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x796ce110 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x7a58f764 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x8ef7aff7 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa3afb47d nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xae30b376 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xde9facdf nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xe79b2e49 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xeaa92c71 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xf42bb102 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xf698b9fd __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc_digital 0x49f5bd8a nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x722974f9 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8048ce85 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa611f0b0 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x2f599d90 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x5705d6cb pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x6353d1db pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x84c10318 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x8a4211f9 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x8d8a0e0a phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xc5d9a4d7 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe7429163 phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/rxrpc 0x08ffc84a rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x15da6d43 rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0x17154e98 rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3c52a629 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3cbdd326 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3fb4bc3d rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x55a60efc rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6d608e80 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x77b6fea2 rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8af64d66 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x96159485 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa11501d7 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa6b26f6b rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xc0066447 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xc82ed348 rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd23fddf4 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe77041ef key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0xfebb997b rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/sctp/sctp 0x8dccebac sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x7891d317 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x8f6ea17a gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb232f7f7 gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x626a11a6 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x708ba7b8 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x859c53bb svc_pool_stats_open +EXPORT_SYMBOL net/tipc/tipc 0x1a3b0439 tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0x663d2be7 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0xb1a45df1 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0xfa0ede6b tipc_dump_done +EXPORT_SYMBOL net/tls/tls 0xe4dedec3 tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x3684d119 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x94612d50 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x06cd0872 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x07700890 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0b1824e9 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0b5b636e wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x0c9d4ac7 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x0d5155a9 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0ff646e5 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x12c619db regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x1af1290e cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1c06998d cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1c94e9fa cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x1de562ca cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0x1e388ee4 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2081a8c5 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x26fa58cc cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x2aca2909 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x2c5b0877 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x2e7ea500 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x31af47bd cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x32e9400e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x330f6385 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3580b60d cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x373aff5b cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x40cfaecd cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4233a4fb cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x43f5efcf cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x4a6aaa40 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x4ebcf856 cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x51f5ccb9 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x5883cbf5 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5e233924 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0x606ce49b cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x61c2efac cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x66dd1361 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b796928 cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6e937408 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x6f60311c cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x6fa1e144 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x71011908 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7110f3c0 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x7333bb7c cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x74c11295 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0x75d02e88 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x766eef3e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x76c3540b cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ea708fa cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x80651725 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x81a436c9 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x824e7440 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x862758b7 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x86dcca7c cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x86e3592a cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x875a8462 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x887603e9 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x898cfe99 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x89d4b732 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x8a60102e cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8b94ed2d cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x91b4ca30 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x93502563 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x96765447 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0xa547f868 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa6712c8e cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa6ec4579 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa79def04 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa7c61dbd wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xaaa15ec4 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xab0cc57c regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xade97177 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb2fedcaa cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xb30646fc __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb7475474 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb7eb9737 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb8a91dc0 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xb8c28964 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xbc210ea9 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xc1219f9b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc24b86c8 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xc3acb6c9 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xc621ffec cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc7cddcae cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc926e4af cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xc9e33bfd cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xcd5321cf wiphy_read_of_freq_limits +EXPORT_SYMBOL net/wireless/cfg80211 0xd12bd40b cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xd3d24165 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd586c935 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xd86a986f cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdbedc8ae cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0xdc7a382d regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xe699567f cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeace2cf3 ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf6205a42 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf9b011b6 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xfdd0f68e ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/lib80211 0x058ec86a lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2cc7a49c lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x69e7f171 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6d6c7968 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x70af9f0b lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xae1d7cb9 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xaf4555b5 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x119e0199 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6e687b92 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x73c82cc7 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x82886421 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xbe10865a snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x734e4fba snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7a3e0db5 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8150b379 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb8620ad8 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd70dbf6 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd935c83 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe9e6c50c snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xf84b2a66 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x055f3614 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x0bec1bbd snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x0d54b84c snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b3c6c8a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x1f4c364a snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x235d8e87 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x23742444 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x23c1ff01 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25b6f0c8 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x25d89cc1 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x2736f9f7 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x2c77f457 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x2ce314ad snd_component_add +EXPORT_SYMBOL sound/core/snd 0x31a9b2f1 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3524d6ca snd_device_register +EXPORT_SYMBOL sound/core/snd 0x394131cd snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3c5e3117 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x48285686 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x49c5e3c6 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a5d1102 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x519a57f3 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x5282e50c snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x540e830f snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x545daefe snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x58309b1f snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x5fd6b2d9 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x65e8afb7 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x6c891a8b snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x728c9af8 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x72eb562a snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0x7365c628 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x7680a762 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x8c058a12 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x98cec2e5 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9a735e2e snd_card_register +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa4d47540 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xab22e75d snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xab2614bc snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc4b46a32 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0xd4d53331 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xe89413d3 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xe974c0b5 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xeab1ec48 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xeb3cdada snd_register_device +EXPORT_SYMBOL sound/core/snd 0xf30d1eab snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xfa612787 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xfeba459a snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-compress 0x5eba7f66 snd_compr_malloc_pages +EXPORT_SYMBOL sound/core/snd-compress 0xcdadec7d snd_compr_free_pages +EXPORT_SYMBOL sound/core/snd-hwdep 0x32e92e95 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03c6b6da snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x11eba48e snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL sound/core/snd-pcm 0x120a4a1a snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x18728dd4 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1a253f2a snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x207a2b63 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x2d2e8a1e snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3023906f snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x3282f1a7 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x36e5ed98 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x37ba4571 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3c85e892 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x44ca22dc snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x44ee79ef snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4612c5b9 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x4939399e snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x4c4fbf6e snd_pcm_set_managed_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4f56c398 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4f72306c snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5bf4b098 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69255f54 snd_pcm_hw_limit_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6d5372b2 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x70d7ae24 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x7186a9da snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x718da532 __snd_pcm_lib_xfer +EXPORT_SYMBOL sound/core/snd-pcm 0x7e3d54dc snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8e767f03 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x91ef01d6 snd_pcm_create_iec958_consumer +EXPORT_SYMBOL sound/core/snd-pcm 0x92a2b741 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9577b8d0 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x9c12ba1d snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa33c84b6 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xad23b3ae snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xadb02854 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xaeff3b5d snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xb6a952a9 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xcf71042a snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd337a9c3 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xd73fb26a snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xe0c5a4b2 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe4804b35 snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xee0a9b29 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xf01b10a0 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf3e4ad73 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xf6daae58 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e16828c snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4574cccc __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x583d6248 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x59298eca snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x62fc4554 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x675e00e5 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7b818a92 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7ec220b2 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7ecfed3e snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x89b75231 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8c8feaed snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8e076e70 snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb3e84a52 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc19ff4cd snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc59d3144 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd70fc7ca snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xda420acc snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea48cbd8 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf83e70f5 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfc8b95de snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0x7f0e0819 snd_seq_device_new +EXPORT_SYMBOL sound/core/snd-timer 0x03987a40 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x10e7855b snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x1721f1b2 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x1cdc0f7c snd_timer_instance_new +EXPORT_SYMBOL sound/core/snd-timer 0x31c6685b snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x3b0db752 snd_timer_instance_free +EXPORT_SYMBOL sound/core/snd-timer 0x3c954ef1 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x41aef599 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5ac14675 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x5afa5d75 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x62a7fd5d snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xcc0df4e6 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xcd238e22 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xd2a6ef51 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xf469cfa6 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xf13c7920 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x115d8b6b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x42c4810e snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x57b3102b snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6410ff46 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x95073922 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb799cf9b snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xba66ae9e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf0d51782 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf25c26a3 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x36e605b9 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x43dd568a snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x56724b62 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6d165308 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7d3cafee snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa8a97f61 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xaadcc9d6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb03bc652 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd10a3d3e snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x03c3d425 cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0ff24a6d amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x12ea2854 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x17596861 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1ff61853 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27c0721d fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46679651 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5aa52951 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5e7602a9 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x603fd005 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x61477326 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7865bf1a avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a04e58d cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7cc2694c amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x84444d43 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d142f75 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa2828c15 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa735c9e7 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa9e7481 cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4433bc7 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbcd4d16e snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd033c34b amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd1b9023a cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd49f196b amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc9fa48a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe33d3783 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe459f305 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4f2125f amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee1abf3c avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf811ba3f fw_iso_resources_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x0c1d2677 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xce49e0e1 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x02ccf728 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3fbea8f4 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x742ba338 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9e3f5d36 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb2c093b4 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xca8e9a58 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcbe5c42a snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe148a2d9 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0020fdf6 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x91eef3a2 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe3d7ce68 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfa9580fb snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x449da55f snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xe37cbae2 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x30c34c43 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x77d4a6d0 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xac41ca41 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb12886be snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe3d61978 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf9a0d348 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0d13931d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x18a508a1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x49e52653 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4fca4e48 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x67182330 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x91bfef1c snd_i2c_bus_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1ab83913 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1aff42e7 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4b9ea06d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f91d20b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5476e747 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e540054 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6f2f49a8 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x82666a91 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x97d9ca71 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x988cc1dd snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xab2167b0 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xad8ce778 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd792361c snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe4782764 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe5940ee2 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf4c0a69c snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf6b4dfc1 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0c0be5a2 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1b8f8343 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x29ad7319 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3a5854e6 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4813069f snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb4f01fbb snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb8cc27f8 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdae766f3 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf4f028bb snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x80248fe9 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa286b3dd snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd42f177f snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x08f3de7d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e62c75d oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x228b286b oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2489e7b5 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x28405bd0 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3340a7c7 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35ede692 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x41314710 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x49b3941b oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5cbcd03c oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x66a88e2e oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x69a3881a oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6d15fe86 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x83ef515a oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8f2e962 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb8c44e86 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2ded0f0 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcbed4f86 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xce91e480 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xce985162 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd538bdcc oxygen_pci_probe +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4ba3057b snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xae5dcb12 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xba5544e2 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe47e9dd0 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe8003de0 snd_trident_free_voice +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x2ad09ddd pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0xe90b59d5 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x0c1127d0 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xbd97e246 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x5c21998c aic32x4_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x7e4fa764 aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xb5b57bfa aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/qcom/snd-soc-qcom-common 0x75a66b01 qcom_snd_parse_of +EXPORT_SYMBOL sound/soc/snd-soc-core 0x6bf51893 snd_soc_alloc_ac97_component +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8 0x6763fe81 sof_imx8x_ops +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8 0xfc2181e8 sof_imx8_ops +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8m 0x52c88986 sof_imx8m_ops +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x01a43b85 sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0460a0a4 snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0eff0984 snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x140eb250 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x16aed52e snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x17983905 snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1d22a5ea sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2a9c08b6 snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x332138d0 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x36a4b9f8 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x38486966 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3b0b0802 snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x45f0a547 snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4c8c4256 snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4ca3d419 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4d748f50 sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x51809861 sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x544b357a snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5b70e7e3 snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5c10936b snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5c144c16 snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x61519680 snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x61e1ff68 snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x661ffc77 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x66f2018d snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6d04dca7 snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6ff855e6 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x76882987 snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7d681f21 snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8112de72 snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8741719e snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8b429273 snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9b8800f4 sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9e44536b snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa3c1fdcb snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb3a5ee62 snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb420890f sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb45468ec snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb72720a0 snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbfb771b2 snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbfeb4420 sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc50b92e2 sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc7203bb6 sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfdc5f98 sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd0dc49d6 snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd8bd20da snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe105f3c9 sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe5210653 snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe96e8dc1 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeb908573 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xec0b72ff snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf53a1fd6 snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf7df5665 snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf9a54f70 snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfe407aa2 snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soundcore 0x0d7916ad register_sound_special +EXPORT_SYMBOL sound/soundcore 0x327e019d register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x64cf82b9 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x895159e4 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcc3c10f9 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x03559191 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6acb7cd6 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6b79b05d snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x99a6e77d snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xac3d9a8a snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcb779039 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x293ac667 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x34ac95ae snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x48f920c4 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7d95566f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x85659341 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97bb24f2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9db98086 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe2935f8c snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x0ac9a092 __snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0014e189 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x0018eca0 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0x001ce5be security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x002e70b4 km_policy_expired +EXPORT_SYMBOL vmlinux 0x003ace83 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x004755ae mdio_driver_register +EXPORT_SYMBOL vmlinux 0x0049d7fb unregister_nls +EXPORT_SYMBOL vmlinux 0x005c8196 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x0071f106 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x00746f72 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x00748133 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x00974737 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x0097576f rtc_add_groups +EXPORT_SYMBOL vmlinux 0x00adcddb netif_napi_del +EXPORT_SYMBOL vmlinux 0x00b39238 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00bc10f4 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00de9c26 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x00efb3e7 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x00f70441 udp_seq_next +EXPORT_SYMBOL vmlinux 0x00fd3fcc netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01066f59 d_splice_alias +EXPORT_SYMBOL vmlinux 0x010efa66 dev_uc_init +EXPORT_SYMBOL vmlinux 0x01238305 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x0124d037 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x0129b193 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x0129c4f8 par_io_data_set +EXPORT_SYMBOL vmlinux 0x012de2ea xudma_rchanrt_read +EXPORT_SYMBOL vmlinux 0x01362249 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x013f26ae dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x0140e5f1 inet6_protos +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x01505d85 imx_scu_call_rpc +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x016da741 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x018671d7 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x01969973 tty_vhangup +EXPORT_SYMBOL vmlinux 0x019dc4ab udp_seq_ops +EXPORT_SYMBOL vmlinux 0x01a31da5 device_add_disk +EXPORT_SYMBOL vmlinux 0x01a6fdeb tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x01af2b4d vfs_mkdir +EXPORT_SYMBOL vmlinux 0x01b6865c xa_get_mark +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01d08c30 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x01d3c734 bdgrab +EXPORT_SYMBOL vmlinux 0x01f670a1 rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0x0207e9f4 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02293ac3 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x022e63ee tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x023ea9e9 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x026adaf2 pci_release_region +EXPORT_SYMBOL vmlinux 0x026e6948 write_inode_now +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a96359 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0x02a963ff skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x02aef87b mr_fill_mroute +EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x02c065f8 ucc_set_qe_mux_mii_mng +EXPORT_SYMBOL vmlinux 0x02d71492 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x02e0efdb i2c_register_driver +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02f90276 new_inode +EXPORT_SYMBOL vmlinux 0x02fbba15 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x0312c04c crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x0314cd17 napi_get_frags +EXPORT_SYMBOL vmlinux 0x031966cb kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x033265f3 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03382e5b mdio_device_remove +EXPORT_SYMBOL vmlinux 0x03659d29 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03716277 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03803460 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x03831e67 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x038b855e get_tree_nodev +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03b047b1 tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x03d2c130 init_task +EXPORT_SYMBOL vmlinux 0x03dc1ce5 thaw_super +EXPORT_SYMBOL vmlinux 0x03e2d8d9 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03feea40 cpumask_next +EXPORT_SYMBOL vmlinux 0x040df056 elevator_alloc +EXPORT_SYMBOL vmlinux 0x040ef9ff scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x04162736 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x0418478b xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0x0434d939 phy_attach +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04559758 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x04673adb qman_ip_rev +EXPORT_SYMBOL vmlinux 0x046f7187 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0x0484c6c4 acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x04968b48 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x049b8452 page_mapped +EXPORT_SYMBOL vmlinux 0x049e4dd7 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x049f0455 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x04b01261 kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x04c33c53 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x04e0509d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x04e9a24b scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f13173 seq_release +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051d58e8 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x0548e26d pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x054c16a7 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x055528f0 mntput +EXPORT_SYMBOL vmlinux 0x055e77e8 jiffies_64 +EXPORT_SYMBOL vmlinux 0x0568479c generic_delete_inode +EXPORT_SYMBOL vmlinux 0x0570570d ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x05707bd9 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x05740ccf inode_add_bytes +EXPORT_SYMBOL vmlinux 0x058512a6 __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x0585d979 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x05d05523 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x05e07839 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x060ba97c gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061aa76e tty_register_device +EXPORT_SYMBOL vmlinux 0x06248f2b blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063560c0 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x064b7fdd tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x06662e42 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x0682ef6e phy_start +EXPORT_SYMBOL vmlinux 0x0689556d __post_watch_notification +EXPORT_SYMBOL vmlinux 0x06bd88b5 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06dc3fec blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x06df0732 arp_send +EXPORT_SYMBOL vmlinux 0x06f66827 of_find_property +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0745a981 xa_erase +EXPORT_SYMBOL vmlinux 0x07499548 cdev_device_add +EXPORT_SYMBOL vmlinux 0x0768520d sock_setsockopt +EXPORT_SYMBOL vmlinux 0x078087c3 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x0781ec97 logic_insl +EXPORT_SYMBOL vmlinux 0x078de761 clear_inode +EXPORT_SYMBOL vmlinux 0x07a56f0c of_node_name_eq +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b41e49 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ceeac9 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x07eb2985 param_ops_long +EXPORT_SYMBOL vmlinux 0x07ec5850 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x08162c74 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x0816b686 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x08338428 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x08356f32 fman_sp_set_buf_pools_in_asc_order_of_buf_sizes +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0869bcbe filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x087b48a6 vme_bus_type +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x08914cf2 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x08ae0d62 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x08ae71c0 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x08bf0b02 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x08c3ed37 vme_master_request +EXPORT_SYMBOL vmlinux 0x08c698cc pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x08d8b3b9 genlmsg_put +EXPORT_SYMBOL vmlinux 0x08e39398 cmd_db_read_addr +EXPORT_SYMBOL vmlinux 0x08ead7a7 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x08eb60de keyring_search +EXPORT_SYMBOL vmlinux 0x08fe6798 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x091e3c69 PDE_DATA +EXPORT_SYMBOL vmlinux 0x0923e182 devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x092e26bf acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x093712e5 acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x093c164a xfrm_register_type +EXPORT_SYMBOL vmlinux 0x093f9f44 prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x09422a79 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x095d1531 tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x09682235 down_timeout +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x0977856c register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x097af021 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x097caf9b of_get_address +EXPORT_SYMBOL vmlinux 0x098637a4 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x098a9cfd jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0990e8ec mmc_free_host +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09da0ba4 xa_set_mark +EXPORT_SYMBOL vmlinux 0x09db7d2b add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x09f9b261 xudma_rchan_put +EXPORT_SYMBOL vmlinux 0x09fe7e88 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x0a0cacdf unregister_netdev +EXPORT_SYMBOL vmlinux 0x0a0ebc08 __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a43190d __check_sticky +EXPORT_SYMBOL vmlinux 0x0a51bf2b param_set_byte +EXPORT_SYMBOL vmlinux 0x0a5cb3c0 unix_get_socket +EXPORT_SYMBOL vmlinux 0x0a721302 padata_stop +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0ab53856 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x0abd0cee get_user_pages +EXPORT_SYMBOL vmlinux 0x0ac7fe0a input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad00f88 f_setown +EXPORT_SYMBOL vmlinux 0x0ae84d59 tty_throttle +EXPORT_SYMBOL vmlinux 0x0af20eae down_read_interruptible +EXPORT_SYMBOL vmlinux 0x0afb7a2b iov_iter_init +EXPORT_SYMBOL vmlinux 0x0b01b6d9 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b26b8c8 acpi_run_osc +EXPORT_SYMBOL vmlinux 0x0b290ada dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b30f0be set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0b4bae67 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x0b5cd26b xp_dma_map +EXPORT_SYMBOL vmlinux 0x0b5fc47d compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x0b6adb94 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b987557 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x0b999976 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x0b9df762 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x0ba051dd vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x0bb3f3e0 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bdd5998 tty_port_put +EXPORT_SYMBOL vmlinux 0x0bee18bb of_phy_find_device +EXPORT_SYMBOL vmlinux 0x0bee6167 clk_get +EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c2792b3 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x0c357d83 blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0x0c48298a get_tree_keyed +EXPORT_SYMBOL vmlinux 0x0c5b15c3 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6e0767 get_task_exe_file +EXPORT_SYMBOL vmlinux 0x0c7bc086 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0c86632a page_pool_put_page +EXPORT_SYMBOL vmlinux 0x0cb15fc8 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0x0cd385b2 get_super_thawed +EXPORT_SYMBOL vmlinux 0x0cd3c931 generic_perform_write +EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0ce981a9 register_quota_format +EXPORT_SYMBOL vmlinux 0x0d078c16 remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d080ff2 inet6_bind +EXPORT_SYMBOL vmlinux 0x0d087fe0 bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0x0d26be80 sock_no_listen +EXPORT_SYMBOL vmlinux 0x0d2ca20f ucc_fast_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0x0d3f5c1a fman_get_max_frm +EXPORT_SYMBOL vmlinux 0x0d4b37f7 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5a0c03 nvm_unregister +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d7311a2 devm_memremap +EXPORT_SYMBOL vmlinux 0x0d7a3e04 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x0d7f4fe9 key_unlink +EXPORT_SYMBOL vmlinux 0x0d85d6d6 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0x0dca5737 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0x0dcca2cb scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0dd7f010 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x0e125233 devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e27a2dd ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0x0e37ec06 pci_disable_device +EXPORT_SYMBOL vmlinux 0x0e3949f3 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0e4514cd tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0e72c9a9 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor +EXPORT_SYMBOL vmlinux 0x0e846d60 proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x0ea39be5 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed8eec1 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x0ee52715 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x0eec0528 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x0ef4a591 bioset_exit +EXPORT_SYMBOL vmlinux 0x0f008a6e fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x0f02fa3b __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x0f06649f vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f2bfdcb blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x0f304f38 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x0f318ebf tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0x0f37ca89 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f877520 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x0fa2110f nvm_end_io +EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbb5505 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x100066c2 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x100163bc dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x1025009a cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x102936ec qe_clock_source +EXPORT_SYMBOL vmlinux 0x102dbe9c km_state_expired +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x104a2ac0 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x1057a279 bsearch +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108a5e34 fc_mount +EXPORT_SYMBOL vmlinux 0x109efc6c nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x10a8fbc8 rproc_boot +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10ca2987 napi_disable +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10ead663 seq_open_private +EXPORT_SYMBOL vmlinux 0x10f5a1f0 dev_mc_add +EXPORT_SYMBOL vmlinux 0x10f8a08c gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110b0ba7 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x114b41ad pci_remove_bus +EXPORT_SYMBOL vmlinux 0x115110f2 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f177c tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x119b4db3 proto_register +EXPORT_SYMBOL vmlinux 0x11a4639a skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0x11b87c41 clk_add_alias +EXPORT_SYMBOL vmlinux 0x11c7f363 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x11d88056 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x11de3ac4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ffdfee ucc_slow_stop_tx +EXPORT_SYMBOL vmlinux 0x120833cb dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121ae9d6 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x12226c73 secpath_set +EXPORT_SYMBOL vmlinux 0x122ba424 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x124b2f09 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x126f4686 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x1278221d ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x127e38c6 fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x129a3984 scsi_add_device +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a9650d fman_set_mac_active_pause +EXPORT_SYMBOL vmlinux 0x12c585f3 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x12ca9da6 rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12d86f94 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12faf9b9 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x13057764 do_splice_direct +EXPORT_SYMBOL vmlinux 0x130afd75 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x130cc8f5 __devm_request_region +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x131a6146 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x131ac50c key_payload_reserve +EXPORT_SYMBOL vmlinux 0x131d5079 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132cca37 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x1362bce3 con_is_bound +EXPORT_SYMBOL vmlinux 0x13672d23 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x136cc2cd rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0x13782d3b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x13a48f84 vfs_fsync +EXPORT_SYMBOL vmlinux 0x13ae3f69 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x13b19361 dst_init +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13ddd49d sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x13e996e7 vme_dma_request +EXPORT_SYMBOL vmlinux 0x1401bed9 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x141271bf acpi_dev_found +EXPORT_SYMBOL vmlinux 0x14177843 d_path +EXPORT_SYMBOL vmlinux 0x1426f3da blk_get_queue +EXPORT_SYMBOL vmlinux 0x144a3c48 __mdiobus_write +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x147f80ed find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0x14824bbc _dev_alert +EXPORT_SYMBOL vmlinux 0x148bb793 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x148be68f unload_nls +EXPORT_SYMBOL vmlinux 0x149387b7 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x14b39caa blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x14b89635 arm64_const_caps_ready +EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14d9a9e3 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x14d9f0cc clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x14e11871 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0x14e5b3db mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x14fb2805 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x15097ded __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1517ae5b uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x15273461 phy_find_first +EXPORT_SYMBOL vmlinux 0x152d2267 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x15353b45 of_get_compatible_child +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15732149 d_rehash +EXPORT_SYMBOL vmlinux 0x157ec261 vfs_ioctl +EXPORT_SYMBOL vmlinux 0x158712e1 dquot_operations +EXPORT_SYMBOL vmlinux 0x15ba50a6 jiffies +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c85de3 mempool_init +EXPORT_SYMBOL vmlinux 0x15ca309c inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x15d6ef0d gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x15d95f47 nf_log_trace +EXPORT_SYMBOL vmlinux 0x15ea4898 qman_oos_fq +EXPORT_SYMBOL vmlinux 0x15f3b068 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x163baa19 of_device_unregister +EXPORT_SYMBOL vmlinux 0x163bded7 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x167386fd key_move +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16839cf1 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x168a9ccc eth_validate_addr +EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x16a0241b unregister_key_type +EXPORT_SYMBOL vmlinux 0x16a454c0 mpage_readahead +EXPORT_SYMBOL vmlinux 0x16c61048 phy_read_paged +EXPORT_SYMBOL vmlinux 0x16cdc340 acpi_get_table +EXPORT_SYMBOL vmlinux 0x16d1935c pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x16dee44d dma_fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e7e2cb cpu_all_bits +EXPORT_SYMBOL vmlinux 0x170ddf79 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0x170e1761 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x171c97ca nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x1727dc44 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x173cf582 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x1765ea1f __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x1774d2d8 pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x17825d3f xudma_rchan_get +EXPORT_SYMBOL vmlinux 0x17850cfa clear_wb_congested +EXPORT_SYMBOL vmlinux 0x178c4894 qe_upload_firmware +EXPORT_SYMBOL vmlinux 0x1799b7eb jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x179a80c4 dump_skip +EXPORT_SYMBOL vmlinux 0x17a36f93 init_special_inode +EXPORT_SYMBOL vmlinux 0x17a633f3 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x17b371d0 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x17be5b95 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x17c1fd48 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x17c4902b page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x17cca9c4 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x17cec979 input_event +EXPORT_SYMBOL vmlinux 0x17d7d882 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x17e64d2e follow_up +EXPORT_SYMBOL vmlinux 0x17e67d51 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x17f17a77 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0x17f45b93 tty_name +EXPORT_SYMBOL vmlinux 0x181407f2 _dev_err +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x18376877 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x184083f2 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x18456896 is_nd_btt +EXPORT_SYMBOL vmlinux 0x184aba49 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x185c98f5 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x185db316 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x1867a90b eth_header +EXPORT_SYMBOL vmlinux 0x18741d11 config_item_put +EXPORT_SYMBOL vmlinux 0x187884a8 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x18818c42 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x18888d00 downgrade_write +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189162b9 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x1892c0a1 pci_write_config_word +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x18b72cf1 con_is_visible +EXPORT_SYMBOL vmlinux 0x18c6962d kill_block_super +EXPORT_SYMBOL vmlinux 0x18e07a91 mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18efd028 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x18f1c4d4 bdi_alloc +EXPORT_SYMBOL vmlinux 0x1913b943 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x19436b98 pci_enable_msi +EXPORT_SYMBOL vmlinux 0x1953c958 mempool_create +EXPORT_SYMBOL vmlinux 0x195c0518 inet_frag_find +EXPORT_SYMBOL vmlinux 0x196c02c6 unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x1989ee4a blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19ccd692 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x19dbca55 notify_change +EXPORT_SYMBOL vmlinux 0x19ff6f2f file_update_time +EXPORT_SYMBOL vmlinux 0x1a107de2 ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0x1a188e2b dm_kobject_release +EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a2359ee skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a4b67e7 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x1a4ea72c inet6_del_offload +EXPORT_SYMBOL vmlinux 0x1a65d56d udplite_prot +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9ad46a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x1a9b86ed flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0x1aa6c90a amba_device_unregister +EXPORT_SYMBOL vmlinux 0x1aafe0f9 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x1abfac57 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acf6ade netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1ae00889 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x1aeebe4a mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b293646 find_lock_entry +EXPORT_SYMBOL vmlinux 0x1b3e3792 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x1b5196fc xudma_tchan_put +EXPORT_SYMBOL vmlinux 0x1b597b7a swake_up_all +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b65f15d tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x1b6e364f blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b84c21f qdisc_hash_add +EXPORT_SYMBOL vmlinux 0x1b85d366 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x1b894e06 phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x1bb2181f xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x1bb2a35b skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc +EXPORT_SYMBOL vmlinux 0x1bb86b9a xen_start_info +EXPORT_SYMBOL vmlinux 0x1bba1255 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x1bc689da nvm_register +EXPORT_SYMBOL vmlinux 0x1bcefcb3 devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent +EXPORT_SYMBOL vmlinux 0x1bfd5444 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x1c3310f7 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c43e088 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x1c444501 bio_add_page +EXPORT_SYMBOL vmlinux 0x1c56415b alloc_fcdev +EXPORT_SYMBOL vmlinux 0x1c58427f acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x1c59ee52 param_set_ullong +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c88ace5 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x1c8b7540 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x1c8e550a iptun_encaps +EXPORT_SYMBOL vmlinux 0x1ca60a5e finish_no_open +EXPORT_SYMBOL vmlinux 0x1cae679c tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cce4f0e eth_type_trans +EXPORT_SYMBOL vmlinux 0x1cd54da3 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x1cd8438b pxm_to_node +EXPORT_SYMBOL vmlinux 0x1cdbfebf ilookup +EXPORT_SYMBOL vmlinux 0x1cdd39ba logic_outsl +EXPORT_SYMBOL vmlinux 0x1cf5efa6 xudma_rflow_get_id +EXPORT_SYMBOL vmlinux 0x1cff7af0 sk_common_release +EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d1abdf0 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x1d24c881 ___ratelimit +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d2fce95 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x1d30e286 mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0x1d39fa9b __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0x1d40b6f3 idr_for_each +EXPORT_SYMBOL vmlinux 0x1d45081d netdev_warn +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d63ddf1 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x1d66b4e5 ucc_fast_dump_regs +EXPORT_SYMBOL vmlinux 0x1d68e80d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x1d7b083c blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x1d87d667 dquot_get_state +EXPORT_SYMBOL vmlinux 0x1d9aba7e devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x1dbc6c58 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1de67f9b qcom_scm_io_writel +EXPORT_SYMBOL vmlinux 0x1df63e88 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x1e0373fc imx_scu_irq_group_enable +EXPORT_SYMBOL vmlinux 0x1e073df1 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e0cd7fe acpi_detach_data +EXPORT_SYMBOL vmlinux 0x1e0ebc81 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e2b0344 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x1e56d0f9 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1e62643b skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x1e6b257f dst_discard_out +EXPORT_SYMBOL vmlinux 0x1e6be975 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7fa1da tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea60a18 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1ebb44a5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x1ed8bad9 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x1edb4480 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1ee184b0 netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x1efd9a33 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x1f03912b ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0x1f2576cc amba_driver_register +EXPORT_SYMBOL vmlinux 0x1f27457f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1f461ede security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1f557414 gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x1f95ff68 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x1fae8fd4 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x1fb80397 inet_getname +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdf9462 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9e912 configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x1ffd0d1c dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20055a37 _dev_warn +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2012222d mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x20283ea4 rtnl_notify +EXPORT_SYMBOL vmlinux 0x20463df4 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x204995ce set_bh_page +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x2054f963 send_sig_mceerr +EXPORT_SYMBOL vmlinux 0x20653fa7 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x2067876f rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20775b77 clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0x207aac87 filemap_flush +EXPORT_SYMBOL vmlinux 0x207bcb43 ata_port_printk +EXPORT_SYMBOL vmlinux 0x20a1b519 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x20a38919 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c4cae2 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x20cbb30a __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x20d4643e fget +EXPORT_SYMBOL vmlinux 0x20d520b1 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20f2fecc single_open_size +EXPORT_SYMBOL vmlinux 0x20ff533d pps_event +EXPORT_SYMBOL vmlinux 0x20ff7481 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x21032ca2 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x210eca88 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x211fdce6 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x21289dae dump_align +EXPORT_SYMBOL vmlinux 0x212cc386 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x216cc2e9 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x2175993d dquot_resume +EXPORT_SYMBOL vmlinux 0x217ac452 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x2192ea0e netpoll_setup +EXPORT_SYMBOL vmlinux 0x219f7232 devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x21a4638f from_kuid +EXPORT_SYMBOL vmlinux 0x21aeec42 redraw_screen +EXPORT_SYMBOL vmlinux 0x21bbd2d5 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21c7e48f flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0x21ce7f11 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x21d08a5e rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0x21d901b5 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x21db61eb phy_init_eee +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21ef374c try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x220a9003 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0x220e55d0 mem_section +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2234ca51 acpi_match_platform_list +EXPORT_SYMBOL vmlinux 0x224ce651 xudma_free_gp_rflow_range +EXPORT_SYMBOL vmlinux 0x22556c94 netdev_crit +EXPORT_SYMBOL vmlinux 0x2256b792 md_write_end +EXPORT_SYMBOL vmlinux 0x22663182 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x226dd700 pci_read_config_word +EXPORT_SYMBOL vmlinux 0x2270aaee dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22812c85 blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0x228a3adf gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x22a5b04c fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x22ae3ed2 fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x22affb72 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b615de bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x22c68ab9 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x22c81f5c ata_link_printk +EXPORT_SYMBOL vmlinux 0x22d03530 kern_path_create +EXPORT_SYMBOL vmlinux 0x22f62b86 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x22f6aaf7 dev_add_offload +EXPORT_SYMBOL vmlinux 0x2304d5d6 phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x232e877f block_write_begin +EXPORT_SYMBOL vmlinux 0x233419ed of_clk_get +EXPORT_SYMBOL vmlinux 0x23489979 path_put +EXPORT_SYMBOL vmlinux 0x23533a6d of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x23588e70 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x236048d8 ip_frag_next +EXPORT_SYMBOL vmlinux 0x2361ac9f blk_put_queue +EXPORT_SYMBOL vmlinux 0x2363170f elv_rb_add +EXPORT_SYMBOL vmlinux 0x23694fbe sock_no_connect +EXPORT_SYMBOL vmlinux 0x23792a39 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x238b360b set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x239959d8 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x23a17e41 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cabbb1 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x23cdef06 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x23e02dbb key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x23e0babd mpage_readpage +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2408a549 generic_copy_file_range +EXPORT_SYMBOL vmlinux 0x240d802b configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0x240dda52 xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24225818 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x243a70c3 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245b0f60 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x246a6413 sock_no_getname +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x247a2b70 rproc_alloc +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24b7ea2b kernel_getsockname +EXPORT_SYMBOL vmlinux 0x24c74160 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x24cea60d framebuffer_release +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24d8dfb6 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x24d957d9 netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x24ec907a netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x24ece5bd skb_put +EXPORT_SYMBOL vmlinux 0x24fd26f1 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x250e54ee gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x251b60ab devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x2524ba17 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2529dda6 nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0x254e59d5 __serio_register_port +EXPORT_SYMBOL vmlinux 0x2552fa92 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x2559c876 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x255f593f neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x255fa99e mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25801a58 update_devfreq +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x25974000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x25a65511 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x25b65abf kill_litter_super +EXPORT_SYMBOL vmlinux 0x25c0c2a4 devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0x25c2f332 bdi_register +EXPORT_SYMBOL vmlinux 0x25c5cf00 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x25dd3fa0 serio_bus +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f60a29 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26178a62 vfs_setpos +EXPORT_SYMBOL vmlinux 0x262057ca vme_irq_request +EXPORT_SYMBOL vmlinux 0x262127a3 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x262e4381 fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0x262fec39 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x263087b1 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x26379899 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c3152 bcmp +EXPORT_SYMBOL vmlinux 0x263de860 __bforget +EXPORT_SYMBOL vmlinux 0x263f0d1f qman_portal_set_iperiod +EXPORT_SYMBOL vmlinux 0x265cdd42 mod_node_page_state +EXPORT_SYMBOL vmlinux 0x266497ad input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x267ed9d8 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x268f5061 reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0x26a19f0a ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0x26a567a9 netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x26abddcc i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x26b15218 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x26cc73c3 complete_and_exit +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e56f9b sunxi_sram_claim +EXPORT_SYMBOL vmlinux 0x26ebeb97 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x27005537 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0x270b6c9b nd_device_notify +EXPORT_SYMBOL vmlinux 0x271a9020 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x2720dd00 d_lookup +EXPORT_SYMBOL vmlinux 0x272664c2 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x275dfee4 ucc_slow_free +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x277cd31e of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x27810361 acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27873230 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x278e923c scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x2794917d may_umount_tree +EXPORT_SYMBOL vmlinux 0x279be432 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0x279bf287 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x27a16396 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x27a4647c __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x27bb98a3 discard_new_inode +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bc6b74 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x27c3c728 qman_release_fqid +EXPORT_SYMBOL vmlinux 0x27c93f08 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x27ca3e95 simple_rmdir +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27d529ce rproc_add_carveout +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818e883 bio_devname +EXPORT_SYMBOL vmlinux 0x2833f577 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x285dea73 pci_match_id +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x2887741d sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x289c6b17 md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x28aee663 input_set_timestamp +EXPORT_SYMBOL vmlinux 0x28b50af3 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x28cc2481 reuseport_select_sock +EXPORT_SYMBOL vmlinux 0x28e7e615 kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x28f2efdf inet6_add_offload +EXPORT_SYMBOL vmlinux 0x290a88c6 kernel_bind +EXPORT_SYMBOL vmlinux 0x2914ea2d ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x291e4155 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x292334c0 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x2960adc8 sget_fc +EXPORT_SYMBOL vmlinux 0x296b085d xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x296cb509 __xa_insert +EXPORT_SYMBOL vmlinux 0x29726ab3 sock_edemux +EXPORT_SYMBOL vmlinux 0x299853c5 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x29987f1f mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x29a2efec super_setup_bdi +EXPORT_SYMBOL vmlinux 0x29b7b4a1 ppp_input +EXPORT_SYMBOL vmlinux 0x29ce41c7 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x29f6fab9 mount_nodev +EXPORT_SYMBOL vmlinux 0x29fc358c genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x2a078a94 mdio_device_free +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3fc450 configfs_register_group +EXPORT_SYMBOL vmlinux 0x2a528c42 tty_kref_put +EXPORT_SYMBOL vmlinux 0x2a52b457 nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x2a60c2d7 node_states +EXPORT_SYMBOL vmlinux 0x2a60c676 single_release +EXPORT_SYMBOL vmlinux 0x2a69dd93 d_alloc_anon +EXPORT_SYMBOL vmlinux 0x2a6b79d3 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x2a852dea fman_register_intr +EXPORT_SYMBOL vmlinux 0x2a916658 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2a9a3d77 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x2aa0843e mempool_resize +EXPORT_SYMBOL vmlinux 0x2aa329f8 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x2aabaf9d xudma_tchan_get +EXPORT_SYMBOL vmlinux 0x2ab2ee91 brcmstb_get_product_id +EXPORT_SYMBOL vmlinux 0x2ab5ccdc inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x2ab7989d mutex_lock +EXPORT_SYMBOL vmlinux 0x2ab9c9b9 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x2ac0128d security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0x2acae6f6 devfreq_update_status +EXPORT_SYMBOL vmlinux 0x2ad7a2ed __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x2ad9e670 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x2adafbca config_item_get +EXPORT_SYMBOL vmlinux 0x2b082783 devm_of_clk_del_provider +EXPORT_SYMBOL vmlinux 0x2b159852 fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x2b1abce3 fman_has_errata_a050385 +EXPORT_SYMBOL vmlinux 0x2b298192 of_get_parent +EXPORT_SYMBOL vmlinux 0x2b57d07a fsync_bdev +EXPORT_SYMBOL vmlinux 0x2b593aa8 gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2b63cfd6 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b6d631d cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x2b7876e6 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba5f6d4 inet_select_addr +EXPORT_SYMBOL vmlinux 0x2bb123fa acpi_dev_get_first_match_dev +EXPORT_SYMBOL vmlinux 0x2bb6099e dq_data_lock +EXPORT_SYMBOL vmlinux 0x2bd0046b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2bd60ab9 acpi_reset +EXPORT_SYMBOL vmlinux 0x2bfbab10 __memmove +EXPORT_SYMBOL vmlinux 0x2c052e98 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x2c0cacfb netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0x2c1f5125 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2edec7 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2c40324e copy_string_kernel +EXPORT_SYMBOL vmlinux 0x2c541e7b radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x2c83d7a7 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x2c91e17c vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x2c980713 bdi_put +EXPORT_SYMBOL vmlinux 0x2cc314f8 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x2cc81c9d ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2cd83573 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x2cdf87a1 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x2ceef750 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x2cf14b15 ucc_fast_disable +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d089205 is_nd_pfn +EXPORT_SYMBOL vmlinux 0x2d0e93bf jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x2d23ed2c of_phy_deregister_fixed_link +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d3d0ce8 __alloc_disk_node +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d7af037 lookup_one_len +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2da29336 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x2db097d5 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x2db3bc61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x2db3d320 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2db9e7df security_inet_conn_established +EXPORT_SYMBOL vmlinux 0x2dce2f1c __irq_regs +EXPORT_SYMBOL vmlinux 0x2dd53670 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x2de4bea4 devm_free_irq +EXPORT_SYMBOL vmlinux 0x2dec9127 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x2e0b1deb dma_fence_get_status +EXPORT_SYMBOL vmlinux 0x2e16de31 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e24a992 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2c4ddc logic_inw +EXPORT_SYMBOL vmlinux 0x2e302037 __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x2e34e763 vm_map_pages +EXPORT_SYMBOL vmlinux 0x2e3bcce2 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x2e3bcd2a vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e445380 bio_free_pages +EXPORT_SYMBOL vmlinux 0x2e5772d0 iput +EXPORT_SYMBOL vmlinux 0x2e5b27da xudma_alloc_gp_rflow_range +EXPORT_SYMBOL vmlinux 0x2e5c5246 ip6_xmit +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e697791 input_free_device +EXPORT_SYMBOL vmlinux 0x2e7c7d04 phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x2e84b6d5 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x2e9fc238 param_ops_uint +EXPORT_SYMBOL vmlinux 0x2ea1f3d2 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x2ec3453b qman_schedule_fq +EXPORT_SYMBOL vmlinux 0x2ec5ce58 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2ec6ef47 qman_get_qm_portal_config +EXPORT_SYMBOL vmlinux 0x2ed444dd mdiobus_read +EXPORT_SYMBOL vmlinux 0x2edbeaf7 hex2bin +EXPORT_SYMBOL vmlinux 0x2edd3ff8 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2eec468c devm_memunmap +EXPORT_SYMBOL vmlinux 0x2efba2cc xfrm_lookup +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0616f2 dup_iter +EXPORT_SYMBOL vmlinux 0x2f1a6d6c __lock_buffer +EXPORT_SYMBOL vmlinux 0x2f23d63f textsearch_register +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f333aab imx_scu_get_handle +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3f15b5 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2f538d4c config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x2f5580f1 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x2f72cd2b pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2faabb89 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x2fac5ce1 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x2fae92ea dm_put_table_device +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbffa97 simple_rename +EXPORT_SYMBOL vmlinux 0x2fcc4afe sock_rfree +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe330fd blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x2fe5b535 qcom_scm_assign_mem +EXPORT_SYMBOL vmlinux 0x2feaddc5 bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x2feb9961 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x30080a7a xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0x303ca5a6 __put_cred +EXPORT_SYMBOL vmlinux 0x304a84d7 tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x30560fbd sock_wfree +EXPORT_SYMBOL vmlinux 0x30564460 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x3056a64b vga_put +EXPORT_SYMBOL vmlinux 0x3058e16f rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x30598403 phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x30773c91 stop_tty +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309c76ff vif_device_init +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a8e679 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30af45a1 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x30b49902 sock_release +EXPORT_SYMBOL vmlinux 0x30bd5ee0 qman_destroy_fq +EXPORT_SYMBOL vmlinux 0x30e618cc blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3100cff9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x311670ed scsi_host_put +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x312acc26 of_device_alloc +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x315bb364 __skb_pad +EXPORT_SYMBOL vmlinux 0x315e0edb send_sig +EXPORT_SYMBOL vmlinux 0x3163c7f2 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x317d3f93 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x318d6fec mutex_is_locked +EXPORT_SYMBOL vmlinux 0x319d493d proc_dostring +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31b09434 register_gifconf +EXPORT_SYMBOL vmlinux 0x31d3e2db dquot_alloc +EXPORT_SYMBOL vmlinux 0x31dacc8c filemap_check_errors +EXPORT_SYMBOL vmlinux 0x31f3e767 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x3202dd2e pnp_is_active +EXPORT_SYMBOL vmlinux 0x3204b0cb ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x320525cb __register_chrdev +EXPORT_SYMBOL vmlinux 0x320e6a12 open_exec +EXPORT_SYMBOL vmlinux 0x322b3ab7 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x32394d4b qe_issue_cmd +EXPORT_SYMBOL vmlinux 0x32430762 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x3267b84c __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x3267d42b netdev_notice +EXPORT_SYMBOL vmlinux 0x326d6959 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x3271a12a check_disk_change +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x3286fd09 of_translate_address +EXPORT_SYMBOL vmlinux 0x3287a24b rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0x328be5cd mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0x329619e7 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x32b5f5c9 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x32b8d3cc skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x32b8f072 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x32bf59b9 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x32cccd02 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32d13e45 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32efa4ec backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0x33037fd8 logic_outl +EXPORT_SYMBOL vmlinux 0x332ab338 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x332cf585 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0x3345ba3f phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x335b06b5 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0x336f4031 dm_get_device +EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x338d37a5 page_pool_destroy +EXPORT_SYMBOL vmlinux 0x33b164ea scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x3404b150 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x3429f763 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x34361f35 mii_link_ok +EXPORT_SYMBOL vmlinux 0x344ca9d4 qman_init_fq +EXPORT_SYMBOL vmlinux 0x346a17d2 dm_io +EXPORT_SYMBOL vmlinux 0x3471b268 vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0x349031fe of_root +EXPORT_SYMBOL vmlinux 0x349ac524 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x349cb420 nf_log_set +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a1f7e3 acpi_processor_get_psd +EXPORT_SYMBOL vmlinux 0x34a693a0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x34c4c5c7 cred_fscmp +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34fe35c2 blk_rq_init +EXPORT_SYMBOL vmlinux 0x350b6bbc inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x350ea558 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3538d02c tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3585442b pci_pme_active +EXPORT_SYMBOL vmlinux 0x359ec42f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x35a03e34 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x35a2ad40 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x35a5e3e5 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b858bb netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x35c82986 devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0x35d0d981 scsi_device_get +EXPORT_SYMBOL vmlinux 0x35dc3a30 set_wb_congested +EXPORT_SYMBOL vmlinux 0x35dd56fb udp_seq_start +EXPORT_SYMBOL vmlinux 0x35e18f49 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x35e31f31 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x35e6c8fb from_kgid +EXPORT_SYMBOL vmlinux 0x35ec1734 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x35f11040 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x35fe8f31 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x36057934 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x36077a69 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x3608e76e vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36501e50 devm_ioremap +EXPORT_SYMBOL vmlinux 0x36550704 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x367ea197 __f_setown +EXPORT_SYMBOL vmlinux 0x368124e3 netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x36a1fff2 mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x36a3eab8 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0x36c7fc97 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x36dc992e vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x37110088 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x371e7f3a ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x372248d7 skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x372ee694 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x376a608c inet_release +EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x377d8004 acpi_error +EXPORT_SYMBOL vmlinux 0x378b5a3b __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37bb41dc scsi_block_requests +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c82f75 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37dc3292 param_set_invbool +EXPORT_SYMBOL vmlinux 0x37ddcfb7 set_disk_ro +EXPORT_SYMBOL vmlinux 0x37fe164a inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x37fef94a imx_scu_enable_general_irq_channel +EXPORT_SYMBOL vmlinux 0x38195458 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3854fdfa vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x38635c11 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x3865477b jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x386ea33c clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388aa3c9 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x38913e8f skb_store_bits +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b1cf25 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x38b4a12a xfrm_input +EXPORT_SYMBOL vmlinux 0x38cea85b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x38e46431 mempool_exit +EXPORT_SYMBOL vmlinux 0x39085cbc of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x391a62e2 vme_slot_num +EXPORT_SYMBOL vmlinux 0x3928b0c5 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x392b1fea wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x392e26d9 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x39342b68 km_new_mapping +EXPORT_SYMBOL vmlinux 0x393620d5 dst_destroy +EXPORT_SYMBOL vmlinux 0x393800a1 of_device_is_available +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395c96f7 pskb_extract +EXPORT_SYMBOL vmlinux 0x395d9fdf devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x396288a7 get_fs_type +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b8d49c cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x39cdf9b8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x39d9fbd3 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x39f9769f irq_stat +EXPORT_SYMBOL vmlinux 0x39fab0ae build_skb +EXPORT_SYMBOL vmlinux 0x3a072a71 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a2dc718 qdisc_reset +EXPORT_SYMBOL vmlinux 0x3a2ec949 proc_create +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a3992c1 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x3a4903fb __free_pages +EXPORT_SYMBOL vmlinux 0x3a49d490 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a4fb843 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x3a69c20f netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x3a75073b scsi_host_busy +EXPORT_SYMBOL vmlinux 0x3a8332ae mmput_async +EXPORT_SYMBOL vmlinux 0x3a85da0e ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x3a9359a9 devm_request_resource +EXPORT_SYMBOL vmlinux 0x3a996607 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x3ab3be5e vfs_rmdir +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3abf08ef touch_atime +EXPORT_SYMBOL vmlinux 0x3abf3dd4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x3ad5cda3 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x3ad7a5d5 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0x3ada9e06 acpi_check_region +EXPORT_SYMBOL vmlinux 0x3adedd4c blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x3aff3200 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x3b1266c0 no_llseek +EXPORT_SYMBOL vmlinux 0x3b20fb95 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x3b2a7205 md_write_inc +EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x3b42d5ec cdev_alloc +EXPORT_SYMBOL vmlinux 0x3b523e26 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x3b542c05 of_mdiobus_child_is_phy +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b9144c9 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x3b917c4a is_subdir +EXPORT_SYMBOL vmlinux 0x3bb0a342 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x3bdbe959 nonseekable_open +EXPORT_SYMBOL vmlinux 0x3bdf9a4d file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x3be719c4 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c1e1e81 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x3c3215c4 qe_immr +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c408395 md_error +EXPORT_SYMBOL vmlinux 0x3c41746b tty_port_hangup +EXPORT_SYMBOL vmlinux 0x3c61159c pci_release_resource +EXPORT_SYMBOL vmlinux 0x3c69c53b dcache_dir_open +EXPORT_SYMBOL vmlinux 0x3c714d84 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3c72a314 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c963b58 __frontswap_store +EXPORT_SYMBOL vmlinux 0x3c9d3a38 configfs_depend_item +EXPORT_SYMBOL vmlinux 0x3cae1a22 tcp_poll +EXPORT_SYMBOL vmlinux 0x3cb53312 proc_symlink +EXPORT_SYMBOL vmlinux 0x3cc21793 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x3cd6fd76 ip_frag_init +EXPORT_SYMBOL vmlinux 0x3cd9ed83 logic_insw +EXPORT_SYMBOL vmlinux 0x3cdd8246 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d02cd70 dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0x3d06b424 mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x3d09df32 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x3d0d2b67 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x3d210724 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x3d3c8a9a napi_consume_skb +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5bb3fd refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x3d74f20c blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x3d786b05 rpmh_write_batch +EXPORT_SYMBOL vmlinux 0x3d7b78d7 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x3d865820 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da58bbc always_delete_dentry +EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3dafc384 touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0x3dba6b3f lock_rename +EXPORT_SYMBOL vmlinux 0x3dbf694c migrate_vma_pages +EXPORT_SYMBOL vmlinux 0x3dc619d3 swake_up_locked +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd29bbc dma_direct_map_page +EXPORT_SYMBOL vmlinux 0x3dd3f054 xudma_rchan_get_id +EXPORT_SYMBOL vmlinux 0x3dd9b230 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3deb80d2 xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x3df36aff register_md_personality +EXPORT_SYMBOL vmlinux 0x3dfb86b9 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e037e42 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x3e0679d9 kobject_init +EXPORT_SYMBOL vmlinux 0x3e0b3476 iget_failed +EXPORT_SYMBOL vmlinux 0x3e21f7f0 request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e57f298 mdio_device_reset +EXPORT_SYMBOL vmlinux 0x3e71a5a7 simple_get_link +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e916620 serio_interrupt +EXPORT_SYMBOL vmlinux 0x3e91fa4f tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x3e9686d3 amba_release_regions +EXPORT_SYMBOL vmlinux 0x3e9a6b3c jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3e9e798a generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x3ebc5486 send_sig_info +EXPORT_SYMBOL vmlinux 0x3ec6b981 of_graph_get_remote_endpoint +EXPORT_SYMBOL vmlinux 0x3ed58c6e xp_alloc +EXPORT_SYMBOL vmlinux 0x3ee9c1fa dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0x3eeb2322 __wake_up +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f097b47 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f3e097e inet_accept +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4bd846 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f545cad cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x3f7a24ca netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3fa527b8 clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x3faf1abf ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x3fb6c1f0 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x3fbe037a __close_fd_get_file +EXPORT_SYMBOL vmlinux 0x3fbef639 __d_lookup_done +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fcb0839 mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0x3fcc3bd2 iget5_locked +EXPORT_SYMBOL vmlinux 0x3fd0acb6 param_get_byte +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x4011d449 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x40273540 sk_free +EXPORT_SYMBOL vmlinux 0x403dabea sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x40520eba dquot_quota_on +EXPORT_SYMBOL vmlinux 0x4053769c i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x40562235 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0x4064fed2 udp_skb_destructor +EXPORT_SYMBOL vmlinux 0x4065571a tty_port_close_end +EXPORT_SYMBOL vmlinux 0x40798c64 kill_pgrp +EXPORT_SYMBOL vmlinux 0x4093c7be eth_mac_addr +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409bcb62 mutex_unlock +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40ca64d4 __kfree_skb +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x40d9fefd xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x40e0353a fb_set_var +EXPORT_SYMBOL vmlinux 0x40f246ab mii_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x4108533a inode_io_list_del +EXPORT_SYMBOL vmlinux 0x411cde2c mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x411ce7e1 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x411f98e3 phy_device_free +EXPORT_SYMBOL vmlinux 0x4130cb2b md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x4145992d padata_start +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4148a5fd inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x41683b12 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x4168dca2 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x41773486 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4198ca95 __do_once_done +EXPORT_SYMBOL vmlinux 0x419b45d9 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x419b9107 follow_down +EXPORT_SYMBOL vmlinux 0x41efdeaf radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x4204bad4 pci_enable_device +EXPORT_SYMBOL vmlinux 0x4209564c blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x420b7bb0 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x4211ac8c flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4223e799 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x4228033b xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x423358af __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x425187b6 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x42578e80 acpi_get_type +EXPORT_SYMBOL vmlinux 0x4260a4dd bio_endio +EXPORT_SYMBOL vmlinux 0x4290de61 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x42919f31 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x42a36115 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x42bed8d4 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x42bf3c80 serio_reconnect +EXPORT_SYMBOL vmlinux 0x42c089b6 d_drop +EXPORT_SYMBOL vmlinux 0x42d6bc58 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x42d99176 vfs_unlink +EXPORT_SYMBOL vmlinux 0x42e7e291 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x42efac5b inode_needs_sync +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ecc96 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0x4314e190 ppp_input_error +EXPORT_SYMBOL vmlinux 0x4334dd13 dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x433cabfb acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43682286 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x43687271 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x43824b09 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x4383ad9a seq_read_iter +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4393909e flush_signals +EXPORT_SYMBOL vmlinux 0x43a22059 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x43ae5a76 skb_copy +EXPORT_SYMBOL vmlinux 0x43aede29 xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0x43bdf22a genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0x43bf971d sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x43c79ce3 phy_read_mmd +EXPORT_SYMBOL vmlinux 0x43c991ca seq_putc +EXPORT_SYMBOL vmlinux 0x43cf5526 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x43db0fbc inet_stream_connect +EXPORT_SYMBOL vmlinux 0x43f412a1 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x4403bbd0 imx_sc_misc_set_control +EXPORT_SYMBOL vmlinux 0x441bba52 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x44297a07 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x444d7cb9 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x4453e3fb bd_set_size +EXPORT_SYMBOL vmlinux 0x445787a2 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x44614da8 scsi_host_get +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x44880b04 locks_free_lock +EXPORT_SYMBOL vmlinux 0x448e9895 kern_unmount +EXPORT_SYMBOL vmlinux 0x44962dc5 __inet_hash +EXPORT_SYMBOL vmlinux 0x44993bee pci_read_vpd +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44ae6434 of_get_cpu_state_node +EXPORT_SYMBOL vmlinux 0x44c17f61 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0x44dd8523 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x44df82ea wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44fda9c0 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450d9a35 cmd_db_read_slave_id +EXPORT_SYMBOL vmlinux 0x45135b38 tcp_mmap +EXPORT_SYMBOL vmlinux 0x45180a06 inet6_release +EXPORT_SYMBOL vmlinux 0x452413a1 qman_alloc_pool_range +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x453a53bc amba_request_regions +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454f3cfb nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update +EXPORT_SYMBOL vmlinux 0x45747f12 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x4575c9a5 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d2aed ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x45888608 dma_resv_init +EXPORT_SYMBOL vmlinux 0x45a6c1aa inet_del_offload +EXPORT_SYMBOL vmlinux 0x45becf21 ping_prot +EXPORT_SYMBOL vmlinux 0x45cb25d4 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x45e69e01 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x45e96907 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0x45ee9ce8 filemap_fault +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x462b9cf0 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x463219fb tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4633383e devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4659b92d of_graph_get_endpoint_count +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x46647f5a kern_unmount_array +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466e8d07 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x4687f408 ps2_sliced_command +EXPORT_SYMBOL vmlinux 0x4698fe8a bman_release +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x46a1c525 __brelse +EXPORT_SYMBOL vmlinux 0x46a287ac pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x46ab7bcc mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x46b6ae59 netdev_change_features +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d76580 is_bad_inode +EXPORT_SYMBOL vmlinux 0x46da7581 ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x46ec5cf6 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x46f056a1 tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0x46f39d86 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x46f7f0e6 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x46ff7d12 qcom_scm_iommu_secure_ptbl_size +EXPORT_SYMBOL vmlinux 0x470612dc fman_port_get_qman_channel_id +EXPORT_SYMBOL vmlinux 0x4706c533 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x4715a909 acpi_load_table +EXPORT_SYMBOL vmlinux 0x471a89d4 __put_user_ns +EXPORT_SYMBOL vmlinux 0x471ad310 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x472ce8da param_get_ulong +EXPORT_SYMBOL vmlinux 0x473db91f uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x4753c83a __scsi_add_device +EXPORT_SYMBOL vmlinux 0x475d7427 fman_get_rx_extra_headroom +EXPORT_SYMBOL vmlinux 0x475edbd9 tty_set_operations +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x477c7680 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x4786802b qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x479137ca imx_scu_irq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47960bc4 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47a414d4 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x47ad1953 __pagevec_release +EXPORT_SYMBOL vmlinux 0x47b5e86b filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x47be92c9 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47ddd71d phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x480b0416 clkdev_alloc +EXPORT_SYMBOL vmlinux 0x4812cc6e ppp_dev_name +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x4826e7b4 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x482927a0 bio_chain +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x4837bb10 logic_outsb +EXPORT_SYMBOL vmlinux 0x4838e60c netif_napi_add +EXPORT_SYMBOL vmlinux 0x483ca886 sync_blockdev +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4846d08c alloc_pages_current +EXPORT_SYMBOL vmlinux 0x4847e597 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x4848cfb1 phy_mipi_dphy_get_default_config +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485c285c uart_match_port +EXPORT_SYMBOL vmlinux 0x486075c8 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x486e9253 tty_port_open +EXPORT_SYMBOL vmlinux 0x48916009 d_alloc +EXPORT_SYMBOL vmlinux 0x489eda10 memset32 +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x489fa133 param_ops_short +EXPORT_SYMBOL vmlinux 0x48a89143 pmem_sector_size +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b1321a get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bb07cc dump_page +EXPORT_SYMBOL vmlinux 0x48c093fb _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x48c37adc pcibus_to_node +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48daa9e6 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x48e0cdc3 of_find_backlight +EXPORT_SYMBOL vmlinux 0x48f67e4f ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0x48fd0a6f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4909606f phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0x49117473 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x491429da bio_split +EXPORT_SYMBOL vmlinux 0x491a400f pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x492a0cab fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x49309ab5 write_one_page +EXPORT_SYMBOL vmlinux 0x493152f4 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x4939af89 get_task_cred +EXPORT_SYMBOL vmlinux 0x49455d86 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x494b9318 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x49538ae7 d_delete +EXPORT_SYMBOL vmlinux 0x495639fb pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x4959ad37 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0x497610e3 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0x498cd333 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x4992ca09 input_get_timestamp +EXPORT_SYMBOL vmlinux 0x499c44b3 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b1c6c6 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x49e3f845 __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x49ed86a0 ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x4a00128c abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x4a1a2a99 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x4a3ad70e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x4a477667 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4a850a04 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4a9d65ed mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0x4a9daf8f __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x4aa6c955 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4ab208ba acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x4ad54f09 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x4ae253ad ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x4ae54a71 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x4ae8bf8e __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift +EXPORT_SYMBOL vmlinux 0x4afb2238 add_wait_queue +EXPORT_SYMBOL vmlinux 0x4afe4c4a phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x4b1109d1 iommu_get_dma_cookie +EXPORT_SYMBOL vmlinux 0x4b232677 vme_bus_num +EXPORT_SYMBOL vmlinux 0x4b26cfd4 backlight_device_register +EXPORT_SYMBOL vmlinux 0x4b2e9ec3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x4b4f5601 sget +EXPORT_SYMBOL vmlinux 0x4b533b41 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6df007 acpi_evaluate_reg +EXPORT_SYMBOL vmlinux 0x4b7457ea brioctl_set +EXPORT_SYMBOL vmlinux 0x4b87289d sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4b8778fe pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x4b9ec9eb pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x4ba4c631 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x4ba86e0f try_lookup_one_len +EXPORT_SYMBOL vmlinux 0x4bb17a1c param_get_charp +EXPORT_SYMBOL vmlinux 0x4bb4875a vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x4bcc2662 mempool_init_node +EXPORT_SYMBOL vmlinux 0x4bd85ef3 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x4bdbc583 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4bf3ce6f qman_release_cgrid +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c269f0f init_net +EXPORT_SYMBOL vmlinux 0x4c380ed1 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c558e83 __devm_release_region +EXPORT_SYMBOL vmlinux 0x4c56f92c key_type_keyring +EXPORT_SYMBOL vmlinux 0x4c5f2268 qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x4c70753f fman_port_bind +EXPORT_SYMBOL vmlinux 0x4c78d7ab pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x4c83d083 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x4cb82522 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cc27573 skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0x4cc8ffbf splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x4d0040a0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d28f0ba mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x4d2c7133 acpi_info +EXPORT_SYMBOL vmlinux 0x4d3ec884 xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x4d4c11a1 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x4d536e76 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x4d63dbd1 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x4d65cbd5 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x4d6965cd open_with_fake_path +EXPORT_SYMBOL vmlinux 0x4d8d3b7f __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x4d924f20 memremap +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dc05ab4 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x4dc3cd33 pci_irq_vector +EXPORT_SYMBOL vmlinux 0x4dca08ee sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x4de995ec gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x4dec58bd cdrom_open +EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e19079e lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0x4e20bcf8 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x4e2e74c1 qcom_scm_io_readl +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4b050b of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x4e4e5b09 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x4e4ec170 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4e4f0f16 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0x4e56b9e5 genphy_suspend +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e4b41 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7fd130 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x4e8d6395 sock_pfree +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4eca3a7e security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x4ef904cb fman_get_pause_cfg +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4f11b59d devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2ece35 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x4f38b352 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x4f3feb17 register_cdrom +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f55166f acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x4f657feb tty_port_close_start +EXPORT_SYMBOL vmlinux 0x4f8b1a08 register_netdevice +EXPORT_SYMBOL vmlinux 0x4f94a7eb mntget +EXPORT_SYMBOL vmlinux 0x4fb5a693 inet_protos +EXPORT_SYMBOL vmlinux 0x4fb7b9d8 make_kprojid +EXPORT_SYMBOL vmlinux 0x4fcb6c76 vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0x4fdd1638 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x5027bde2 acpi_acquire_mutex +EXPORT_SYMBOL vmlinux 0x504e2b7a crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x5059ee27 register_qdisc +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x5077b933 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x5081a597 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x50834d34 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x50933dff dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x50974b43 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50ac428c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x50ae7c4e phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50b96eca filemap_map_pages +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50d9ceca free_buffer_head +EXPORT_SYMBOL vmlinux 0x50e3aff0 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0x50e5462a sock_set_priority +EXPORT_SYMBOL vmlinux 0x50ec6d53 ps2_command +EXPORT_SYMBOL vmlinux 0x50ef4dda pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x50f27ab4 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x50f3460e i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x50f85302 __arm_smccc_hvc +EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x50fd23b8 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x5102a30b do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0x51059b8b nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x510d3dad __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x513ef657 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x515083bf acpi_release_mutex +EXPORT_SYMBOL vmlinux 0x515f520b qman_portal_get_iperiod +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x51683a02 set_blocksize +EXPORT_SYMBOL vmlinux 0x51751f14 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x5193b25f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x51a039db of_platform_device_create +EXPORT_SYMBOL vmlinux 0x51a64caa __block_write_begin +EXPORT_SYMBOL vmlinux 0x51c86dee tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d8a5ea iommu_get_msi_cookie +EXPORT_SYMBOL vmlinux 0x51dc0983 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x51e1797d key_put +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x5203d176 cmd_db_ready +EXPORT_SYMBOL vmlinux 0x52045ba5 sk_dst_check +EXPORT_SYMBOL vmlinux 0x5222c088 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5228f770 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x52356f19 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x52431144 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x52483372 of_node_name_prefix +EXPORT_SYMBOL vmlinux 0x5252f2b9 ether_setup +EXPORT_SYMBOL vmlinux 0x5253c490 cont_write_begin +EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x527c0091 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x5291442b console_start +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x529f440b add_to_pipe +EXPORT_SYMBOL vmlinux 0x52b52ab3 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0x52b8ed0a filp_close +EXPORT_SYMBOL vmlinux 0x52bd1e83 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52df392a xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x52ecbc75 crc_ccitt +EXPORT_SYMBOL vmlinux 0x52ee60ce iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x52f2850a imx_sc_pm_cpu_start +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530e6bc1 misc_deregister +EXPORT_SYMBOL vmlinux 0x531071df pci_iomap_range +EXPORT_SYMBOL vmlinux 0x53126ecc __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x531b4fbe bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x533206b5 sort_r +EXPORT_SYMBOL vmlinux 0x533cf6e3 dqput +EXPORT_SYMBOL vmlinux 0x534f3f6e set_binfmt +EXPORT_SYMBOL vmlinux 0x53675dc5 default_llseek +EXPORT_SYMBOL vmlinux 0x536fbd29 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x53750414 noop_qdisc +EXPORT_SYMBOL vmlinux 0x537eb0b0 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x537f5f59 phy_get_pause +EXPORT_SYMBOL vmlinux 0x5395a0ec tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x53a9b3df __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x53ac1e62 tcf_register_action +EXPORT_SYMBOL vmlinux 0x53b954a2 up_read +EXPORT_SYMBOL vmlinux 0x53c70e15 tcp_connect +EXPORT_SYMBOL vmlinux 0x53c90672 sk_wait_data +EXPORT_SYMBOL vmlinux 0x53d47930 fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0x53f4ccb4 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x5402da9f xudma_navss_psil_pair +EXPORT_SYMBOL vmlinux 0x541d846c unlock_page +EXPORT_SYMBOL vmlinux 0x541e8267 phy_print_status +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x54391083 dqget +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54466b46 __register_binfmt +EXPORT_SYMBOL vmlinux 0x544de3dd rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0x5465d413 block_write_end +EXPORT_SYMBOL vmlinux 0x5469ff81 efi +EXPORT_SYMBOL vmlinux 0x54747807 seq_escape +EXPORT_SYMBOL vmlinux 0x5478fce0 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ac1377 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x54b3041d fb_set_cmap +EXPORT_SYMBOL vmlinux 0x54be18ae tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ea6dfe xen_start_flags +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x5508f28d bman_acquire +EXPORT_SYMBOL vmlinux 0x550c1bf2 update_region +EXPORT_SYMBOL vmlinux 0x551060d1 tcf_block_put +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552db3aa qman_query_cgr_congested +EXPORT_SYMBOL vmlinux 0x55307ecf tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x555dc8a4 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x55686530 __arch_clear_user +EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x557ed982 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x5584f962 config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x558a2799 commit_creds +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x55a2e638 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x55a385e2 phy_write_mmd +EXPORT_SYMBOL vmlinux 0x55a76783 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x55ab8332 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55ed4706 file_ns_capable +EXPORT_SYMBOL vmlinux 0x55fb0f6a qman_start_using_portal +EXPORT_SYMBOL vmlinux 0x56000535 param_set_long +EXPORT_SYMBOL vmlinux 0x5603a560 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x5614f48a qman_dqrr_get_ithresh +EXPORT_SYMBOL vmlinux 0x56161dbe eth_gro_receive +EXPORT_SYMBOL vmlinux 0x562b6d2a vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x562fbdac xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x5634bc82 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642504d vfs_get_link +EXPORT_SYMBOL vmlinux 0x56466e42 ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x564f7608 acpi_reconfig_notifier_register +EXPORT_SYMBOL vmlinux 0x564fff47 __alloc_skb +EXPORT_SYMBOL vmlinux 0x5677c043 dma_supported +EXPORT_SYMBOL vmlinux 0x567d3708 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x569abcca acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x56a51cdd of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x56b79bc9 pci_find_bus +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cc1241 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x56de0519 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x56efc3dc watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x56f1407c cfb_imageblit +EXPORT_SYMBOL vmlinux 0x56f8c371 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x57088cca skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x57276e36 unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0x5738f57a simple_getattr +EXPORT_SYMBOL vmlinux 0x5747d486 put_tty_driver +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575a5f8a rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0x57617e4b blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576a11bb nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x5782b027 tty_devnum +EXPORT_SYMBOL vmlinux 0x5784fc1b linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x57900416 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57998316 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x57a36691 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x57afc052 md_bitmap_free +EXPORT_SYMBOL vmlinux 0x57bc19d2 down_write +EXPORT_SYMBOL vmlinux 0x57c9e1fe register_shrinker +EXPORT_SYMBOL vmlinux 0x57ec8860 truncate_setsize +EXPORT_SYMBOL vmlinux 0x57f38cdc qe_get_firmware_info +EXPORT_SYMBOL vmlinux 0x57f7abd6 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x57fdbe3a pnp_possible_config +EXPORT_SYMBOL vmlinux 0x58062fbc dec_node_page_state +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582606eb xudma_rflow_put +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5844fc33 skb_clone +EXPORT_SYMBOL vmlinux 0x584538a2 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x5856c209 module_refcount +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x5868427c user_revoke +EXPORT_SYMBOL vmlinux 0x5868a9e7 dquot_file_open +EXPORT_SYMBOL vmlinux 0x586b42f6 input_grab_device +EXPORT_SYMBOL vmlinux 0x587b892e qe_get_num_of_risc +EXPORT_SYMBOL vmlinux 0x587f22d7 devmap_managed_key +EXPORT_SYMBOL vmlinux 0x587fc30a alloc_fddidev +EXPORT_SYMBOL vmlinux 0x588472b0 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x5899f12a pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x58a45609 datagram_poll +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b29df9 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d8ee66 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f94ffa inet_addr_type +EXPORT_SYMBOL vmlinux 0x58fdaeb7 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x5904ed2b nd_dax_probe +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x590a0fe1 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x59279ba4 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0x5947f96e pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x595a4381 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x595f8feb get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x596327f7 md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x596a8c2b tcf_block_get +EXPORT_SYMBOL vmlinux 0x599b4888 qe_setbrg +EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node +EXPORT_SYMBOL vmlinux 0x599fe1f6 da903x_query_status +EXPORT_SYMBOL vmlinux 0x59a1ceb8 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0x59a2f0ee packing +EXPORT_SYMBOL vmlinux 0x59b3d5c1 skb_checksum +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59bce381 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0x59d0f756 clkdev_drop +EXPORT_SYMBOL vmlinux 0x59ee54e3 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x59fd6abd flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x5a08cf44 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a537dd4 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x5a60b950 qm_channel_pool1 +EXPORT_SYMBOL vmlinux 0x5a6e08d4 d_add +EXPORT_SYMBOL vmlinux 0x5a7b97aa serio_close +EXPORT_SYMBOL vmlinux 0x5a81fdb0 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a965735 page_pool_release_page +EXPORT_SYMBOL vmlinux 0x5a99117e md_finish_reshape +EXPORT_SYMBOL vmlinux 0x5a99fe84 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x5a9e3e84 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aad5304 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x5abeec62 get_tz_trend +EXPORT_SYMBOL vmlinux 0x5acefd29 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x5ad9e95d mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0x5ade1559 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x5adff4c3 tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x5aebdafa of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x5aed2418 param_ops_bool +EXPORT_SYMBOL vmlinux 0x5af2dc10 cpu_hwcaps +EXPORT_SYMBOL vmlinux 0x5afc8fec __lock_page +EXPORT_SYMBOL vmlinux 0x5b04cfe5 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x5b06b56d bd_start_claiming +EXPORT_SYMBOL vmlinux 0x5b204cad xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x5b2f27fb do_wait_intr +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b387241 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5b3965e8 posix_lock_file +EXPORT_SYMBOL vmlinux 0x5b3a1f9d unpin_user_pages +EXPORT_SYMBOL vmlinux 0x5b3e282f xa_store +EXPORT_SYMBOL vmlinux 0x5b40a60b fs_param_is_string +EXPORT_SYMBOL vmlinux 0x5b54903b qcom_scm_pas_mem_setup +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5c1f23 param_set_charp +EXPORT_SYMBOL vmlinux 0x5b951c02 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x5bb093f3 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x5bb48c41 ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0x5bbbab3b sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5bd84a20 nobh_write_end +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5bf980ba dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x5c00d810 ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5c110ba4 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0x5c20df92 vlan_for_each +EXPORT_SYMBOL vmlinux 0x5c26a53b wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c6898a1 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x5c8ef773 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0x5c9dee77 __scsi_execute +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb26a0 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x5cfff1f0 pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0x5d07346c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5d092d89 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x5d0ec61c rproc_put +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d2d02e5 skb_copy_header +EXPORT_SYMBOL vmlinux 0x5d308015 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x5d3c40be wake_up_process +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d4a029f nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x5d66fdf7 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0x5d678218 udp_gro_receive +EXPORT_SYMBOL vmlinux 0x5d68c1d8 tty_lock +EXPORT_SYMBOL vmlinux 0x5d6c4cbf get_tree_bdev +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5d9f20ed bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x5da8fc4c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x5dac4cd6 qman_dqrr_set_ithresh +EXPORT_SYMBOL vmlinux 0x5dadf594 fb_pan_display +EXPORT_SYMBOL vmlinux 0x5ddb978b module_layout +EXPORT_SYMBOL vmlinux 0x5decfb07 d_make_root +EXPORT_SYMBOL vmlinux 0x5deda938 dma_resv_fini +EXPORT_SYMBOL vmlinux 0x5df80873 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x5e0221c8 acpi_dev_hid_uid_match +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e0e423a tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x5e26a7bf xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x5e3240a0 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x5e332b52 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e5b76f8 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x5e80806b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x5e84fd92 bio_uninit +EXPORT_SYMBOL vmlinux 0x5e855e56 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9689d3 proc_set_size +EXPORT_SYMBOL vmlinux 0x5e9ca760 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb44e85 set_posix_acl +EXPORT_SYMBOL vmlinux 0x5ec09a3b backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ecf1624 sync_inode +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ed9d759 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5ef6a672 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x5efde8e6 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f3137bd pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x5f491fb1 give_up_console +EXPORT_SYMBOL vmlinux 0x5f5be04c is_acpi_data_node +EXPORT_SYMBOL vmlinux 0x5f663a43 d_find_alias +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f7cbeca flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x5f880392 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x5f93525c acpi_extract_package +EXPORT_SYMBOL vmlinux 0x5fa804a3 iget_locked +EXPORT_SYMBOL vmlinux 0x5fc0c8b3 make_kgid +EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fcb748c scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x5fcf842d tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x5fcf8bd0 mroute6_is_socket +EXPORT_SYMBOL vmlinux 0x5fed178c meson_sm_call +EXPORT_SYMBOL vmlinux 0x5ff9eb0e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601496f4 revert_creds +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604a32ca tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x6056f67e ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x60738281 genphy_resume +EXPORT_SYMBOL vmlinux 0x6078c8d6 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x607d4eef node_data +EXPORT_SYMBOL vmlinux 0x607eff55 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x608741b5 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x609b2853 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a48f91 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x60aaeb4b qman_p_irqsource_add +EXPORT_SYMBOL vmlinux 0x60b108f2 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x60b3071f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x60d86515 generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60dc4686 edac_mc_find +EXPORT_SYMBOL vmlinux 0x60eda113 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x60ef7f7a fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x60f963d5 md_check_recovery +EXPORT_SYMBOL vmlinux 0x6101ec16 get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x6102e774 no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0x61177cc1 vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613f7e22 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x61577694 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x617201ad udp6_set_csum +EXPORT_SYMBOL vmlinux 0x617c452b queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0x6185b747 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x618833bb keyring_clear +EXPORT_SYMBOL vmlinux 0x618865ed xattr_full_name +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619eb0ad nf_log_register +EXPORT_SYMBOL vmlinux 0x61a98113 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x61acd366 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf2de8 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x61c85327 file_path +EXPORT_SYMBOL vmlinux 0x61c8cc43 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x61d5eefd blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x61f2bd0a vme_lm_request +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623d5aae phy_loopback +EXPORT_SYMBOL vmlinux 0x624beea5 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x62500543 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x62503e22 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x6256cad1 pci_map_rom +EXPORT_SYMBOL vmlinux 0x62577de0 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62890955 __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x62936ea4 __break_lease +EXPORT_SYMBOL vmlinux 0x62bc9579 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0x62bf3656 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62c5957c xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0x62cac127 vm_event_states +EXPORT_SYMBOL vmlinux 0x62d96443 qman_dma_portal +EXPORT_SYMBOL vmlinux 0x62e9d8e0 dma_free_attrs +EXPORT_SYMBOL vmlinux 0x62ed1eca rproc_del +EXPORT_SYMBOL vmlinux 0x62f00aee skb_split +EXPORT_SYMBOL vmlinux 0x62fe2b7a stream_open +EXPORT_SYMBOL vmlinux 0x62fe3870 inet6_getname +EXPORT_SYMBOL vmlinux 0x6313c157 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x63179f48 mmc_add_host +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x63216a30 sock_wake_async +EXPORT_SYMBOL vmlinux 0x63263ebd __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x632a8bb1 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x632b6143 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x632baa1b iommu_dma_get_resv_regions +EXPORT_SYMBOL vmlinux 0x633660cd dma_virt_ops +EXPORT_SYMBOL vmlinux 0x633afe52 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0x6346d1c5 rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x637292bc __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x637b0fbd mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x638bafd7 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x639249fb dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x639385d0 bdput +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ab8627 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x63b2403f finish_open +EXPORT_SYMBOL vmlinux 0x63bf2020 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c8129d nmi_panic +EXPORT_SYMBOL vmlinux 0x63d6dbd9 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x63d72ef7 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x63dcd22c gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x63dd32d2 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6420427b dquot_drop +EXPORT_SYMBOL vmlinux 0x642eb5c6 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x643031aa of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x6435bfe5 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x6439109b sock_no_accept +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x6442b1c5 __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0x64440551 from_kprojid +EXPORT_SYMBOL vmlinux 0x6448489c napi_gro_flush +EXPORT_SYMBOL vmlinux 0x644be12c qman_affine_cpus +EXPORT_SYMBOL vmlinux 0x6461b1b1 vfs_fadvise +EXPORT_SYMBOL vmlinux 0x6463456d __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x646b6d09 file_fdatawait_range +EXPORT_SYMBOL vmlinux 0x646c50dd inode_init_always +EXPORT_SYMBOL vmlinux 0x64788392 __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x6482c8f0 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x648dd562 pid_task +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x6492b4d1 blk_put_request +EXPORT_SYMBOL vmlinux 0x6495428e xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649cd184 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64b06163 sg_miter_start +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c6ae3c setattr_prepare +EXPORT_SYMBOL vmlinux 0x64ca91b0 netdev_update_features +EXPORT_SYMBOL vmlinux 0x64d677f6 rpmh_write +EXPORT_SYMBOL vmlinux 0x64e57168 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x64eec020 mmc_request_done +EXPORT_SYMBOL vmlinux 0x64fdaeee pci_get_device +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654449c3 memset16 +EXPORT_SYMBOL vmlinux 0x654abb82 netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x654e40a0 put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0x6560a636 __close_fd +EXPORT_SYMBOL vmlinux 0x6563e746 udp6_seq_ops +EXPORT_SYMBOL vmlinux 0x65644c55 neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf +EXPORT_SYMBOL vmlinux 0x65755e59 phy_validate_pause +EXPORT_SYMBOL vmlinux 0x65806c33 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65a57e90 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x65b1e54e inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0x65d1bab2 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x660676ca genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x6626afca down +EXPORT_SYMBOL vmlinux 0x662b72a4 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x662c6b4c key_invalidate +EXPORT_SYMBOL vmlinux 0x662cf0bc tcp_req_err +EXPORT_SYMBOL vmlinux 0x663bba07 would_dump +EXPORT_SYMBOL vmlinux 0x664b1e29 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x666863dc par_io_config_pin +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x667c6803 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x66877401 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x668b19a1 down_read +EXPORT_SYMBOL vmlinux 0x668cb50a dump_truncate +EXPORT_SYMBOL vmlinux 0x668d74a0 __scm_destroy +EXPORT_SYMBOL vmlinux 0x6692ccd1 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x66978b46 xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x6699583e __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x66a41ac4 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x66af1fd1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup +EXPORT_SYMBOL vmlinux 0x66d08a18 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66d3d58c xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x66d4cb12 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x6709ee05 mount_subtree +EXPORT_SYMBOL vmlinux 0x670d673d of_cpu_node_to_id +EXPORT_SYMBOL vmlinux 0x671071fc fs_bio_set +EXPORT_SYMBOL vmlinux 0x67151515 of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0x671e8679 to_nd_dax +EXPORT_SYMBOL vmlinux 0x67237ada tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0x67412d2f ucc_slow_enable +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x67510f25 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x675c4f8d scsi_print_result +EXPORT_SYMBOL vmlinux 0x675ca816 iterate_fd +EXPORT_SYMBOL vmlinux 0x676dc453 seq_read +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x67a15cdb iommu_put_dma_cookie +EXPORT_SYMBOL vmlinux 0x67a3a934 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x67a5b3e3 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67badc18 mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0x67c0603d fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x67c13ea0 acpi_read +EXPORT_SYMBOL vmlinux 0x67cb017d thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0x67ce20c3 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x67d9e1c7 d_move +EXPORT_SYMBOL vmlinux 0x67fb655d __fs_parse +EXPORT_SYMBOL vmlinux 0x68187bea generic_setlease +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x683ddb8a __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x683fbd06 input_get_keycode +EXPORT_SYMBOL vmlinux 0x685bc049 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689fa1df blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x68a73f9d soft_cursor +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68b2f0f5 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x68d3569a tso_build_data +EXPORT_SYMBOL vmlinux 0x68dd92f5 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x69049cd2 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0x6913ec35 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x691c2deb ipv4_specific +EXPORT_SYMBOL vmlinux 0x693bd1e6 blk_register_region +EXPORT_SYMBOL vmlinux 0x6946211c ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x69585523 __ksize +EXPORT_SYMBOL vmlinux 0x695e47ee dst_dev_put +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x696aaf27 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x696f04a2 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6986ded8 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x698cbd1e tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0x69956072 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x69a516f6 do_clone_file_range +EXPORT_SYMBOL vmlinux 0x69a5e24d cad_pid +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c9a007 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69ed972b vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x69f2144d d_alloc_name +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a218638 wireless_send_event +EXPORT_SYMBOL vmlinux 0x6a30d33f __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x6a345dd2 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x6a3766b2 qman_delete_cgr_safe +EXPORT_SYMBOL vmlinux 0x6a449c4f register_sysctl_table +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a6a29d6 register_framebuffer +EXPORT_SYMBOL vmlinux 0x6a71859c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x6a7e5e51 kthread_stop +EXPORT_SYMBOL vmlinux 0x6a823300 dma_cache_sync +EXPORT_SYMBOL vmlinux 0x6a8b9ff3 devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x6a9a9917 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x6a9db2ce scsi_ioctl +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6ac31b87 generic_fadvise +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeeb23d gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b205623 current_time +EXPORT_SYMBOL vmlinux 0x6b270fc8 input_open_device +EXPORT_SYMBOL vmlinux 0x6b27729b radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x6b2941b2 __arch_copy_to_user +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b372027 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6b4024b4 cpumask_any_but +EXPORT_SYMBOL vmlinux 0x6b40fde1 vfs_mknod +EXPORT_SYMBOL vmlinux 0x6b4b2933 __ioremap +EXPORT_SYMBOL vmlinux 0x6b4f0c13 __netif_schedule +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b71a1e4 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x6b7e3f42 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6b9d2620 __quota_error +EXPORT_SYMBOL vmlinux 0x6bb4c410 finish_swait +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc47ea4 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x6be1c1f8 acpi_install_method +EXPORT_SYMBOL vmlinux 0x6be8b557 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0x6bef3732 ps2_end_command +EXPORT_SYMBOL vmlinux 0x6bfce4c8 dcache_readdir +EXPORT_SYMBOL vmlinux 0x6c0e963e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x6c0fae02 eth_get_headlen +EXPORT_SYMBOL vmlinux 0x6c224cda gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c280bb8 rproc_add +EXPORT_SYMBOL vmlinux 0x6c29b8f9 blkdev_put +EXPORT_SYMBOL vmlinux 0x6c2faa83 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0x6c391023 pci_dev_get +EXPORT_SYMBOL vmlinux 0x6c4dcd31 dev_activate +EXPORT_SYMBOL vmlinux 0x6c561e2f of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c5ed355 ihold +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6fd1e3 posix_test_lock +EXPORT_SYMBOL vmlinux 0x6c7a1b6e sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6c7f3de7 sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0x6c8f133a sock_create_kern +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cba99ab jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x6cf0d67d qe_get_num_of_snums +EXPORT_SYMBOL vmlinux 0x6cf62166 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6d28d281 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d30b450 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d5f5b91 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x6d6eeb77 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0x6d716e39 dev_add_pack +EXPORT_SYMBOL vmlinux 0x6d73c95f logic_outw +EXPORT_SYMBOL vmlinux 0x6d7abe02 first_ec +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d9af83c kernel_connect +EXPORT_SYMBOL vmlinux 0x6db4f2e8 pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x6db6a025 unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x6dc35b25 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0x6dc8828a generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dd17e7b acpi_get_table_header +EXPORT_SYMBOL vmlinux 0x6df01f66 elv_rb_find +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e019034 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x6e263215 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x6e286604 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x6e30519e __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run +EXPORT_SYMBOL vmlinux 0x6e5c3963 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x6e70bf65 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e782741 seq_printf +EXPORT_SYMBOL vmlinux 0x6e8364dd vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ecba6e7 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6ed9736e __skb_ext_del +EXPORT_SYMBOL vmlinux 0x6ee29eec __dec_node_page_state +EXPORT_SYMBOL vmlinux 0x6eef125e skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x6ef189f6 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x6ef5ffa2 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x6efb0e22 netif_device_detach +EXPORT_SYMBOL vmlinux 0x6f06de18 mdio_device_create +EXPORT_SYMBOL vmlinux 0x6f1572b5 phy_device_register +EXPORT_SYMBOL vmlinux 0x6f312fa5 uart_register_driver +EXPORT_SYMBOL vmlinux 0x6f3d5d25 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x6f41a428 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x6f5c6011 ip6_frag_next +EXPORT_SYMBOL vmlinux 0x6f6d263b generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x6f77a92c __d_drop +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f915a45 dqstats +EXPORT_SYMBOL vmlinux 0x6fa65fa7 pin_user_pages +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fbc6a00 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd314a3 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6ffd9db4 padata_do_serial +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x70048a98 vmap +EXPORT_SYMBOL vmlinux 0x7013840e blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x701543f8 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x7015c31d d_obtain_root +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7080946d pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x70a87c83 input_register_device +EXPORT_SYMBOL vmlinux 0x70ad75fb radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x70bf3672 dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0x70d1a18e qman_release_pool +EXPORT_SYMBOL vmlinux 0x70e00172 simple_readpage +EXPORT_SYMBOL vmlinux 0x70f03f82 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x70f45906 dump_emit +EXPORT_SYMBOL vmlinux 0x710768bd cdev_add +EXPORT_SYMBOL vmlinux 0x711b56e7 param_set_ulong +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71313f0f proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x7136ed33 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0x7141b88a logic_insb +EXPORT_SYMBOL vmlinux 0x715a5ebf netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x71669238 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7174ecc5 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ca8d27 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x71d14cdc mr_dump +EXPORT_SYMBOL vmlinux 0x71da809d inet_stream_ops +EXPORT_SYMBOL vmlinux 0x7205240e blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0x72125db8 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x722077ad dev_get_by_index +EXPORT_SYMBOL vmlinux 0x723cdea7 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x725a82a9 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x726adace iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x726bc3c7 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x7273b499 _dev_crit +EXPORT_SYMBOL vmlinux 0x728bd8b0 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x728d232b ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x72b5ac16 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72c7f573 vfs_statfs +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72e70918 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef769b irq_to_desc +EXPORT_SYMBOL vmlinux 0x7301ccd3 netlink_unicast +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7319d00c phy_sfp_probe +EXPORT_SYMBOL vmlinux 0x731b9c07 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x731c4a9c dma_fence_signal +EXPORT_SYMBOL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL vmlinux 0x73218574 flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0x732cbf40 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0x732f2d90 serio_open +EXPORT_SYMBOL vmlinux 0x735e6a81 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x739449c3 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x73978c4a inode_set_bytes +EXPORT_SYMBOL vmlinux 0x739ef38a timestamp_truncate +EXPORT_SYMBOL vmlinux 0x73a02e06 register_netdev +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73c1c203 kernel_read +EXPORT_SYMBOL vmlinux 0x73c7b2c8 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x73d0e214 generic_make_request +EXPORT_SYMBOL vmlinux 0x73ea4b69 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x73ebd888 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x7402ab5c skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x740b278f iov_iter_pipe +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x74233c84 cdrom_release +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x74284cfb pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x742eabb4 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0x74351977 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x743f4126 keygen_port_hashing_init +EXPORT_SYMBOL vmlinux 0x74421de5 simple_write_begin +EXPORT_SYMBOL vmlinux 0x7444407b sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x74554cd2 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x74725e69 ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x74754435 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x7482370a tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x74863fd4 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x749bd14d mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0x749ec1bd wireless_spy_update +EXPORT_SYMBOL vmlinux 0x749f2cf3 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0x74c0bbd2 make_kuid +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c7789e pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ebf32f set_user_nice +EXPORT_SYMBOL vmlinux 0x7502bc6c sock_i_ino +EXPORT_SYMBOL vmlinux 0x7506cea0 key_alloc +EXPORT_SYMBOL vmlinux 0x7508bea5 sock_set_keepalive +EXPORT_SYMBOL vmlinux 0x7513694e __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x7524f9ed _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x75272543 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x754cabdf ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0x75551bfe compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x755b78c6 meson_sm_call_write +EXPORT_SYMBOL vmlinux 0x755e3ce6 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x757b65cb pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x757f37e8 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x7584dfc5 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x75871f5e acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x7588f2cc compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x75922edd ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x75b822d1 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75dab518 dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x75f40d45 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x75f86591 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x75f98c5a blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7614c4be pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x761dc803 xp_can_alloc +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x763e7412 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76586631 netlink_ack +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x76782f42 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x76924078 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x769975d7 module_put +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76ad3fca max8925_set_bits +EXPORT_SYMBOL vmlinux 0x76bf26ec fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76df2942 dev_uc_add +EXPORT_SYMBOL vmlinux 0x76e4c15f seg6_push_hmac +EXPORT_SYMBOL vmlinux 0x771a8959 inet_add_offload +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x778516fb sock_bindtoindex +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b1dabf tty_do_resize +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d52c01 vga_tryget +EXPORT_SYMBOL vmlinux 0x77daab4a pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x7822fe0d __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x7833c26e tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x783532ae __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785d8590 put_disk_and_module +EXPORT_SYMBOL vmlinux 0x7869ec14 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78853ee6 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x788ca72b pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x788d2026 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78aacb4c scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x78ae6192 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x78b28421 key_task_permission +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78f816a0 phy_device_remove +EXPORT_SYMBOL vmlinux 0x79141f59 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x7916cb22 par_io_of_config +EXPORT_SYMBOL vmlinux 0x79411961 __tcf_idr_release +EXPORT_SYMBOL vmlinux 0x79441135 of_get_property +EXPORT_SYMBOL vmlinux 0x7948ffae __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x794cb742 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x7972959a of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x7972d41e neigh_xmit +EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x798d52b6 to_ndd +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c24c48 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x79c92d5e set_groups +EXPORT_SYMBOL vmlinux 0x79d86e93 dm_put_device +EXPORT_SYMBOL vmlinux 0x79e07bc4 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x79e8902f skb_trim +EXPORT_SYMBOL vmlinux 0x79f402ae nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a11b8b2 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a322918 dst_release +EXPORT_SYMBOL vmlinux 0x7a39d4ac inet_frags_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a47c6bd kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x7a56e513 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x7a660dee ps2_drain +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a968137 ucc_slow_restart_tx +EXPORT_SYMBOL vmlinux 0x7a9a4683 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7a9c16a0 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abef251 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7ae10898 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x7ae28698 sk_capable +EXPORT_SYMBOL vmlinux 0x7ae5d317 qe_get_snum +EXPORT_SYMBOL vmlinux 0x7afa2206 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b17b566 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x7b2c48bb I_BDEV +EXPORT_SYMBOL vmlinux 0x7b40ff56 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x7b42f86e udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x7b48e701 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x7b4da6ff __init_rwsem +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b668709 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x7b7f004d dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x7b82b9a1 idr_replace +EXPORT_SYMBOL vmlinux 0x7bb29c8e input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7bb50b88 acpi_write +EXPORT_SYMBOL vmlinux 0x7bb69383 nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0x7bb71f80 zap_page_range +EXPORT_SYMBOL vmlinux 0x7bb8a7ce posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bc481f0 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x7bc732d3 netdev_features_change +EXPORT_SYMBOL vmlinux 0x7bdc62dc copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x7bed23d7 ns_capable +EXPORT_SYMBOL vmlinux 0x7bfb1304 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0x7c03db86 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2d57d8 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7c3464e4 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0x7c441bde md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c601745 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7c638988 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x7c8fadc8 register_key_type +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7ca13f36 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cd1e7df tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0x7cd7c264 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfaa6a2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d036a93 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x7d074b7f kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x7d0ba682 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x7d0c9a27 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d12d76d acpi_get_parent +EXPORT_SYMBOL vmlinux 0x7d179f7a dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0x7d1a9d93 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x7d20e96d unpin_user_page +EXPORT_SYMBOL vmlinux 0x7d35c030 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x7d3f56bb phy_write_paged +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d4d0e2b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x7d7a2c3d of_get_next_cpu_node +EXPORT_SYMBOL vmlinux 0x7d91440c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7db8b50c cdev_set_parent +EXPORT_SYMBOL vmlinux 0x7dbb4613 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x7dc3cdae vfs_getattr +EXPORT_SYMBOL vmlinux 0x7dec9fe7 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0826e2 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e3d9285 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x7e44d7f8 cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0x7e60813d generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7ea4416e security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x7eb8c975 vm_insert_page +EXPORT_SYMBOL vmlinux 0x7ec78bdd rename_lock +EXPORT_SYMBOL vmlinux 0x7ef9c29c inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f0dc5dd migrate_page_states +EXPORT_SYMBOL vmlinux 0x7f1878e0 input_match_device_id +EXPORT_SYMBOL vmlinux 0x7f1b9fe7 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f25667c input_unregister_handle +EXPORT_SYMBOL vmlinux 0x7f49af2a __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x7f4cd19a security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0x7f4cd87b dev_addr_init +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f73d585 set_create_files_as +EXPORT_SYMBOL vmlinux 0x7f78b8b3 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f91feb0 flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0x7fab0a3a tcp_ioctl +EXPORT_SYMBOL vmlinux 0x7fad56f1 iov_iter_discard +EXPORT_SYMBOL vmlinux 0x7fb770a2 migrate_vma_setup +EXPORT_SYMBOL vmlinux 0x7fcccf99 register_filesystem +EXPORT_SYMBOL vmlinux 0x7fd672c4 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x7fe105d7 bman_ip_rev +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x801af609 of_iomap +EXPORT_SYMBOL vmlinux 0x802fe7f7 drop_nlink +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x8041c7bb xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x8043dc62 simple_lookup +EXPORT_SYMBOL vmlinux 0x80532001 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8071f01d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x8089fbba dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x8090242f fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x80a717a8 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x80abf230 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x80c093bf twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x80c4ea84 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80ecc6ef i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x81188c30 match_string +EXPORT_SYMBOL vmlinux 0x812203f7 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81616352 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x81630968 path_get +EXPORT_SYMBOL vmlinux 0x816644cd xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x818edf97 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x81a3c5a3 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x81ac5e33 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x81afcc70 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x81b395b3 down_interruptible +EXPORT_SYMBOL vmlinux 0x81ba2782 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f4c555 inet_gro_receive +EXPORT_SYMBOL vmlinux 0x820716db dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821933b9 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x82212956 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x8227e0fa locks_remove_posix +EXPORT_SYMBOL vmlinux 0x8229292c ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x822cf9b4 pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0x822d6355 fqdir_exit +EXPORT_SYMBOL vmlinux 0x822f1bd6 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x823d3505 cmxgcr_lock +EXPORT_SYMBOL vmlinux 0x8244d6bc processors +EXPORT_SYMBOL vmlinux 0x8247d4d0 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x825a76f8 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x8263a6d9 proc_douintvec +EXPORT_SYMBOL vmlinux 0x82663045 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x82733ae4 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82a0328f of_dev_put +EXPORT_SYMBOL vmlinux 0x82a3b1d6 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x82aa8fdb vme_master_mmap +EXPORT_SYMBOL vmlinux 0x82b14a13 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x82ba2bbc read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x82bccdcd netif_device_attach +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82d0f411 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x82d4f7ec configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x82da27b8 netdev_printk +EXPORT_SYMBOL vmlinux 0x82dc1708 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x82dcbf2a tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x82eeb0a5 complete_request_key +EXPORT_SYMBOL vmlinux 0x83066d26 vc_cons +EXPORT_SYMBOL vmlinux 0x830f99c3 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x83145978 tty_port_close +EXPORT_SYMBOL vmlinux 0x832ad3b2 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x832eccac ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x832fe924 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x836affb6 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x8373f448 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x83749847 super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x837c1028 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x838d6d0f vga_client_register +EXPORT_SYMBOL vmlinux 0x83a23545 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x83bcf1d1 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83f01670 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x83fbf763 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x8403551f dev_mc_del +EXPORT_SYMBOL vmlinux 0x840c5d27 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x8444e7c6 skb_unlink +EXPORT_SYMBOL vmlinux 0x845a3a1c cpu_hwcap_keys +EXPORT_SYMBOL vmlinux 0x8473f800 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0x84758405 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x847d8380 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x84934649 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x849c39af migrate_page_copy +EXPORT_SYMBOL vmlinux 0x84c0a4c5 _copy_to_iter +EXPORT_SYMBOL vmlinux 0x84c1c552 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x84c99e83 dev_mc_init +EXPORT_SYMBOL vmlinux 0x85150337 is_nd_dax +EXPORT_SYMBOL vmlinux 0x851b9121 xudma_dev_get_psil_base +EXPORT_SYMBOL vmlinux 0x851c8df0 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x8551ff39 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x85532eb1 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x8557183d inet_gso_segment +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8569aa79 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x8574b7c3 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x857d8435 generic_file_open +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b9ea6e ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85d50730 config_group_init +EXPORT_SYMBOL vmlinux 0x85de7e72 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e5f191 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f82051 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x85feec63 inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0x861d6251 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x86299abf fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x862cf26c nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x8630beb6 register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x8637defc bprm_change_interp +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x864111b9 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865b5ebf skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x86669440 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x86759f86 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x86842400 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868e526a msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x86a12f21 should_remove_suid +EXPORT_SYMBOL vmlinux 0x86a3f033 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x86a57dc3 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x86b36597 __find_get_block +EXPORT_SYMBOL vmlinux 0x86b55d90 inc_node_page_state +EXPORT_SYMBOL vmlinux 0x86c0f270 fb_show_logo +EXPORT_SYMBOL vmlinux 0x86cd438a of_phy_attach +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86eb31a7 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87201194 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x8748da46 devm_release_resource +EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed +EXPORT_SYMBOL vmlinux 0x877d5961 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x87802d8d devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x87886d2d flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x879297c9 udp_pre_connect +EXPORT_SYMBOL vmlinux 0x879bd327 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87b97f1e skb_checksum_help +EXPORT_SYMBOL vmlinux 0x87bf4112 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x87c28f52 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x87d01b88 prepare_creds +EXPORT_SYMBOL vmlinux 0x8805899a mmc_put_card +EXPORT_SYMBOL vmlinux 0x880e6ad1 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x881380e3 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x8816fcb6 fs_lookup_param +EXPORT_SYMBOL vmlinux 0x881bad5e phy_mipi_dphy_config_validate +EXPORT_SYMBOL vmlinux 0x881c4413 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x885452b2 devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0x8863ce45 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x886e94a3 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x8872f6b2 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 +EXPORT_SYMBOL vmlinux 0x88905af3 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88b178a5 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x88c11fc8 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88e5859d netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x8907742b vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x89087c8a devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x891fdde9 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x893ff549 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x89434b4b radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x89453bfe xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0x8946ea72 fpsimd_context_busy +EXPORT_SYMBOL vmlinux 0x8953657c devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x895f8377 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x896a9c4a dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x897bc39f __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x898c17f7 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x8995d931 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x89b265ac skb_append +EXPORT_SYMBOL vmlinux 0x89b41f1b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x89b87f1b vfs_tmpfile +EXPORT_SYMBOL vmlinux 0x89c3e316 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x89d7a0ef of_node_put +EXPORT_SYMBOL vmlinux 0x89f13c36 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0x89f2e5c1 inet6_offloads +EXPORT_SYMBOL vmlinux 0x89fef647 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x8a0292f2 PageMovable +EXPORT_SYMBOL vmlinux 0x8a2593f2 dquot_release +EXPORT_SYMBOL vmlinux 0x8a368afb nf_log_packet +EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0x8a4825fb phy_modify_paged +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a5c3c81 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x8a5eef1a pneigh_lookup +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a859146 d_set_d_op +EXPORT_SYMBOL vmlinux 0x8a89b40a blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x8a8cd470 param_set_copystring +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a982a6d amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa2d176 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0x8aaef3a1 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x8ac136ae imx_sc_misc_get_control +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x8acddcfc kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8ad4f09d skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b115568 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x8b16642d security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0x8b1a2c56 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x8b2a779e uart_get_divisor +EXPORT_SYMBOL vmlinux 0x8b2ffd83 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8b3ded5a sock_create +EXPORT_SYMBOL vmlinux 0x8b4c7c3c netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8b8af1 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x8b8cb31b remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8b8fc300 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8ba9f6ea scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x8be189ab ucc_slow_disable +EXPORT_SYMBOL vmlinux 0x8becb98a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x8bf01e31 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x8c010f92 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x8c14446e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x8c1b7b1a xudma_dev_get_tisci_rm +EXPORT_SYMBOL vmlinux 0x8c26d495 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x8c5297b9 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c7776f0 unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x8c875387 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x8c9e338f acpi_bios_error +EXPORT_SYMBOL vmlinux 0x8ca854d6 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x8cb544df __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8cc53d20 __par_io_config_pin +EXPORT_SYMBOL vmlinux 0x8cd66115 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d0ee7a2 nd_btt_version +EXPORT_SYMBOL vmlinux 0x8d145ac9 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x8d1a2d4a file_open_root +EXPORT_SYMBOL vmlinux 0x8d238600 blackhole_netdev +EXPORT_SYMBOL vmlinux 0x8d45ffed netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d724b95 md_write_start +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d85be4f __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x8d89c739 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x8d9a5b85 mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x8d9ca0e6 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x8dc75474 dev_change_flags +EXPORT_SYMBOL vmlinux 0x8dd781e5 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8df4afd9 qe_put_snum +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8e04c043 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x8e17b3ae idr_destroy +EXPORT_SYMBOL vmlinux 0x8e21c9a1 dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x8e3f1e59 ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x8e4c60a3 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x8e5178f8 mmc_retune_pause +EXPORT_SYMBOL vmlinux 0x8e6fedf4 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x8e719466 md_handle_request +EXPORT_SYMBOL vmlinux 0x8e7d8539 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8e94331e __skb_recv_udp +EXPORT_SYMBOL vmlinux 0x8e9bef67 dev_addr_del +EXPORT_SYMBOL vmlinux 0x8eb27c85 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x8ebaf2b3 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x8ec14314 logfc +EXPORT_SYMBOL vmlinux 0x8eccbb3a ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x8ee7f8d1 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x8ef9c0e8 load_nls +EXPORT_SYMBOL vmlinux 0x8efb5d76 netdev_emerg +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f158935 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0x8f18a3d0 component_match_add_typed +EXPORT_SYMBOL vmlinux 0x8f552e37 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x8f55d91f pagecache_get_page +EXPORT_SYMBOL vmlinux 0x8f873df6 flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0x8f876c49 scsi_partsize +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8fa1a57f km_policy_notify +EXPORT_SYMBOL vmlinux 0x8fa25c24 xa_find +EXPORT_SYMBOL vmlinux 0x8fb6e029 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x8fc9ea11 fman_port_cfg_buf_prefix_content +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fda6a7f __next_node_in +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x90176c72 seq_puts +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x902f5199 cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0x9034a696 mempool_destroy +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user +EXPORT_SYMBOL vmlinux 0x9074bbcc tty_unregister_device +EXPORT_SYMBOL vmlinux 0x907ba52c posix_acl_valid +EXPORT_SYMBOL vmlinux 0x907bc547 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x9083d2cb qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x90883b7a i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0x909b978f remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x90b2b783 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0x90cf5cca skb_tx_error +EXPORT_SYMBOL vmlinux 0x90f63eef dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x9101b215 __udp_disconnect +EXPORT_SYMBOL vmlinux 0x9106a44a devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9108e9b9 rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0x910e87db __mdiobus_register +EXPORT_SYMBOL vmlinux 0x910f212f device_get_mac_address +EXPORT_SYMBOL vmlinux 0x912cc4b0 of_graph_get_port_parent +EXPORT_SYMBOL vmlinux 0x9135cf59 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x9144f361 qdisc_put +EXPORT_SYMBOL vmlinux 0x915ad7e1 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0x91614d1c dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x916ddbf6 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x91877182 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x91936ec2 pci_save_state +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91b358f9 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x91b9a839 generic_write_end +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91e2afe0 page_symlink +EXPORT_SYMBOL vmlinux 0x91e8d132 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x91f44510 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x92093e2d dquot_commit_info +EXPORT_SYMBOL vmlinux 0x920d49df skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x9214265c devm_clk_get +EXPORT_SYMBOL vmlinux 0x921b13f7 md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x9234b950 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924d5630 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x92540fbf finish_wait +EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x927971cd __skb_checksum +EXPORT_SYMBOL vmlinux 0x9282b015 configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x9282f561 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x928ee442 put_watch_queue +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a13e02 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x92b99a33 acpi_put_table +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92c5c150 km_query +EXPORT_SYMBOL vmlinux 0x92ca6460 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x92d6e93c t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x92d9cdef iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fb2a51 pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0x93018fdb param_ops_string +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x932a3180 clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0x932c8b04 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x933c32cb netlink_capable +EXPORT_SYMBOL vmlinux 0x934836c5 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x93502b31 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x93551af0 fd_install +EXPORT_SYMBOL vmlinux 0x935a30e0 page_pool_update_nid +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937e953d devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a7fe64 freeze_super +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bc2be5 km_report +EXPORT_SYMBOL vmlinux 0x93c06126 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93d6dd8c complete_all +EXPORT_SYMBOL vmlinux 0x93e3979c genphy_read_abilities +EXPORT_SYMBOL vmlinux 0x93f12ea9 irq_set_chip +EXPORT_SYMBOL vmlinux 0x93fbad92 skb_dequeue +EXPORT_SYMBOL vmlinux 0x94049c93 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x9412e192 pci_get_class +EXPORT_SYMBOL vmlinux 0x941479f3 __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x941a4a90 dcb_getapp +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x94326b55 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x943ba56b __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x945ba508 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x945bc83e jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x9479af0b qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x94885499 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x9490c488 of_match_node +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94bb7ec3 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0x94beb4ca _dev_notice +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94c12255 fman_unregister_intr +EXPORT_SYMBOL vmlinux 0x94e481cf ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x94ecfe03 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x94f216d7 udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x94f3dd7b dev_remove_pack +EXPORT_SYMBOL vmlinux 0x94fc8d93 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x9522f351 param_get_invbool +EXPORT_SYMBOL vmlinux 0x95322737 noop_llseek +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc +EXPORT_SYMBOL vmlinux 0x954d66db of_phy_get_and_connect +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x956e649c bdget_disk +EXPORT_SYMBOL vmlinux 0x95722936 ucc_fast_transmit_on_demand +EXPORT_SYMBOL vmlinux 0x959311e7 netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x95a47dac of_mdiobus_phy_device_register +EXPORT_SYMBOL vmlinux 0x95a67b07 udp_table +EXPORT_SYMBOL vmlinux 0x95bdf09e md_reload_sb +EXPORT_SYMBOL vmlinux 0x95d7131d alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x96160969 mount_bdev +EXPORT_SYMBOL vmlinux 0x96283e80 simple_open +EXPORT_SYMBOL vmlinux 0x9632e7be show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x963725c7 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0x963c4120 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x963e590a param_get_int +EXPORT_SYMBOL vmlinux 0x9642d487 key_link +EXPORT_SYMBOL vmlinux 0x964ade4d jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0x966254c8 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x96674ab4 bio_copy_data +EXPORT_SYMBOL vmlinux 0x96848186 scnprintf +EXPORT_SYMBOL vmlinux 0x96884cc6 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x9688de8b memstart_addr +EXPORT_SYMBOL vmlinux 0x96936004 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x969b6f7d fman_port_get_device +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96ba4705 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x96be2f09 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96c515e3 dquot_acquire +EXPORT_SYMBOL vmlinux 0x96ccc74b dquot_transfer +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d2c869 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0x96de8e14 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x96e5d30f gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x96ebe4d2 scsi_device_put +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x9713a0bb misc_register +EXPORT_SYMBOL vmlinux 0x9726d365 pci_release_regions +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x975647d8 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x977126b3 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x977f511b __mutex_init +EXPORT_SYMBOL vmlinux 0x978d482f __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x978e8635 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c027f1 vfs_create +EXPORT_SYMBOL vmlinux 0x97d1efe7 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x97dadf7d phy_aneg_done +EXPORT_SYMBOL vmlinux 0x97e096e9 rio_query_mport +EXPORT_SYMBOL vmlinux 0x97eb9e4e refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0x97ee0e13 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x97f97129 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x98171de1 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x981eecee dev_deactivate +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982f96c8 devm_iounmap +EXPORT_SYMBOL vmlinux 0x98368e7c nf_reinject +EXPORT_SYMBOL vmlinux 0x984f4e89 dst_release_immediate +EXPORT_SYMBOL vmlinux 0x98779bbf freeze_bdev +EXPORT_SYMBOL vmlinux 0x98806786 locks_init_lock +EXPORT_SYMBOL vmlinux 0x98aa9c17 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x98acc3f8 iterate_dir +EXPORT_SYMBOL vmlinux 0x98b50269 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x98b90eda ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x98c039dc dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98cc9179 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d1d056 padata_free +EXPORT_SYMBOL vmlinux 0x98e2a606 iproc_msi_init +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98ea7ac2 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x98ef90e2 __register_nls +EXPORT_SYMBOL vmlinux 0x98f0722c __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x99078b39 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x99094fb2 qcom_scm_is_available +EXPORT_SYMBOL vmlinux 0x990cbf3a pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x9944f04b pci_request_regions +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9960b0ee rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x99734362 dev_get_flags +EXPORT_SYMBOL vmlinux 0x9975dc22 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x99856735 sunxi_sram_release +EXPORT_SYMBOL vmlinux 0x99862870 pci_clear_master +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99c21653 genphy_read_status +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99d78ad0 seq_write +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99e11afd pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x99e12cee bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x99ea6147 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x99fe9920 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x99febe04 get_phy_device +EXPORT_SYMBOL vmlinux 0x9a031b19 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a11a884 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9a133b72 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1a3e44 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x9a1b743a vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a22391e radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x9a22d46b vm_insert_pages +EXPORT_SYMBOL vmlinux 0x9a29fd3a __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x9a2a0ed8 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x9a2a4c0c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x9a4a13a3 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a669104 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x9a6b32fd serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9a73bbb9 dev_load +EXPORT_SYMBOL vmlinux 0x9a9276ef key_revoke +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9acd508b iov_iter_npages +EXPORT_SYMBOL vmlinux 0x9b022f6a fput +EXPORT_SYMBOL vmlinux 0x9b09a2e7 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x9b0c0548 set_page_dirty +EXPORT_SYMBOL vmlinux 0x9b128a66 qcom_scm_set_remote_state +EXPORT_SYMBOL vmlinux 0x9b21e3a1 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b39425c mpage_writepage +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b4c9292 uart_resume_port +EXPORT_SYMBOL vmlinux 0x9b565688 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x9b6775d7 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x9b6d5df2 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x9b72478f acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x9b9c2153 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x9bb10313 dentry_open +EXPORT_SYMBOL vmlinux 0x9bb8d568 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x9bba1c72 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x9bbfe838 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x9bd0c542 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x9be9460d lock_sock_fast +EXPORT_SYMBOL vmlinux 0x9bea39dc phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0x9beb7f3a sockfd_lookup +EXPORT_SYMBOL vmlinux 0x9c094d08 netdev_state_change +EXPORT_SYMBOL vmlinux 0x9c0fbb18 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x9c122bcf mempool_create_node +EXPORT_SYMBOL vmlinux 0x9c1e5bf5 queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0x9c2e02dd mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9c942adc vprintk_emit +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cac0bcb unregister_console +EXPORT_SYMBOL vmlinux 0x9cb79543 pci_read_config_byte +EXPORT_SYMBOL vmlinux 0x9cbc0737 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cd91791 register_sysctl +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce9dfc2 proto_unregister +EXPORT_SYMBOL vmlinux 0x9cf0fb6c __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x9cfa0df9 devm_register_netdev +EXPORT_SYMBOL vmlinux 0x9cfff808 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x9d09f84c of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d19d98f blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d294e9b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d61e994 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x9d71bd52 udp_ioctl +EXPORT_SYMBOL vmlinux 0x9d7e6c45 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x9d92f3ad __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9da1bd02 devm_of_iomap +EXPORT_SYMBOL vmlinux 0x9da3777d dput +EXPORT_SYMBOL vmlinux 0x9da63da3 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x9db22197 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x9ddf1bb1 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x9df21d0e qman_affine_channel +EXPORT_SYMBOL vmlinux 0x9dfa96bf get_super +EXPORT_SYMBOL vmlinux 0x9dfab136 import_iovec +EXPORT_SYMBOL vmlinux 0x9e03ef11 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e2737f0 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0x9e2ebd2e nf_hook_slow +EXPORT_SYMBOL vmlinux 0x9e3c60d4 inet_gro_complete +EXPORT_SYMBOL vmlinux 0x9e3e5b5a rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x9e41c25f vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e528173 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0x9e5e750d node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6cb3da ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9e7d0458 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x9e7d63fa kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf +EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup +EXPORT_SYMBOL vmlinux 0x9eb139ac uart_suspend_port +EXPORT_SYMBOL vmlinux 0x9eb621c7 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec1a786 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x9ec653e3 noop_fsync +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ecc8b83 xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x9ed7c847 brcmstb_get_family_id +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9ef45182 release_pages +EXPORT_SYMBOL vmlinux 0x9f0045aa dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9f205e85 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9f2c2cda vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0x9f3b671c nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f49dcc4 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x9f4f2aa3 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f65c857 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x9f6d4f10 dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0x9f789cb4 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0x9f790ddb mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0x9f7a49c5 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9f7d7dbb logic_outsw +EXPORT_SYMBOL vmlinux 0x9f84e3ea nd_device_register +EXPORT_SYMBOL vmlinux 0x9f8b69fb unregister_binfmt +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fa95f6c forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fc03836 rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0x9fc1fd96 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9fcf05eb vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0x9fdb314d tso_build_hdr +EXPORT_SYMBOL vmlinux 0x9fdc08fb mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ff7c53b __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0018488 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00faf4c __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0xa0100511 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0xa0248465 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xa02aa74a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xa03e362c skb_copy_bits +EXPORT_SYMBOL vmlinux 0xa043315a blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04b2b0b md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07b5770 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0a2b7f4 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bdffae pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xa0caa20f __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xa0d63b01 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f47508 finalize_exec +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f3b17 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xa1143251 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0xa117ac25 tcp_close +EXPORT_SYMBOL vmlinux 0xa11ac2d4 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa13e780a gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xa146743f flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xa155c071 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0xa15e4b9a tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0xa173e327 page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0xa1873f75 kset_register +EXPORT_SYMBOL vmlinux 0xa1b973d4 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d71c75 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xa1e5e0fc drop_super +EXPORT_SYMBOL vmlinux 0xa1f61432 set_security_override +EXPORT_SYMBOL vmlinux 0xa1f6d46b netdev_err +EXPORT_SYMBOL vmlinux 0xa2035ac6 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa2326c49 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0xa236f1cf kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa25bbb52 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0xa25d2e2a dst_alloc +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa2a0dc31 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xa2a1c1c5 kernel_listen +EXPORT_SYMBOL vmlinux 0xa2d2bffe pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xa2db32cd tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xa2eb8e68 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xa2ec1a29 vm_mmap +EXPORT_SYMBOL vmlinux 0xa2ef1698 audit_log_start +EXPORT_SYMBOL vmlinux 0xa2ef4647 param_get_short +EXPORT_SYMBOL vmlinux 0xa2f83f77 kobject_get +EXPORT_SYMBOL vmlinux 0xa306636c filp_open +EXPORT_SYMBOL vmlinux 0xa3189a0d fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0xa31c13bd devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0xa339e6e5 on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0xa34f8ed9 kill_fasync +EXPORT_SYMBOL vmlinux 0xa35edcc3 mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0xa363d845 request_key_rcu +EXPORT_SYMBOL vmlinux 0xa3669134 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xa36db6c9 netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0xa3713b70 has_capability +EXPORT_SYMBOL vmlinux 0xa3921245 request_key_tag +EXPORT_SYMBOL vmlinux 0xa39b454a address_space_init_once +EXPORT_SYMBOL vmlinux 0xa3a682d3 __breadahead_gfp +EXPORT_SYMBOL vmlinux 0xa3ad6273 cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0xa3b9da12 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xa3c9753f twl6040_power +EXPORT_SYMBOL vmlinux 0xa3ea9664 fasync_helper +EXPORT_SYMBOL vmlinux 0xa3fa23c7 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa40fd153 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xa40ff01b acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xa420232a tcf_classify +EXPORT_SYMBOL vmlinux 0xa425ee0c inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xa42a0518 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xa443076b nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0xa443881e inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xa4454b3c writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa44b25de nlmsg_notify +EXPORT_SYMBOL vmlinux 0xa4711e69 current_in_userns +EXPORT_SYMBOL vmlinux 0xa472c965 dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0xa488752b bioset_init +EXPORT_SYMBOL vmlinux 0xa48e515e vfs_iter_read +EXPORT_SYMBOL vmlinux 0xa4a5cb4f pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0xa4bb4454 devm_rproc_add +EXPORT_SYMBOL vmlinux 0xa4bd2387 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4d4371f vme_init_bridge +EXPORT_SYMBOL vmlinux 0xa4d6aec3 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xa4de2c1d blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0xa4ea0f58 dev_close +EXPORT_SYMBOL vmlinux 0xa4fca045 qcom_scm_ocmem_lock +EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xa514b395 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xa522e9b4 __scm_send +EXPORT_SYMBOL vmlinux 0xa52bedf6 xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0xa52ffd50 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xa532ca8c dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xa54b68e2 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xa5504e11 lookup_bdev +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa553734c scsi_print_command +EXPORT_SYMBOL vmlinux 0xa56b496f mdio_find_bus +EXPORT_SYMBOL vmlinux 0xa56eff50 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xa577f10e pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xa580effb __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xa5916960 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0xa591e8bf iunique +EXPORT_SYMBOL vmlinux 0xa5976e4f dev_base_lock +EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa5ae2fef __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xa5b4aae5 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa5b5aa99 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xa5f5a216 fs_param_is_path +EXPORT_SYMBOL vmlinux 0xa5f7cf37 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa6001148 fman_get_bmi_max_fifo_size +EXPORT_SYMBOL vmlinux 0xa604072b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xa60661be make_bad_inode +EXPORT_SYMBOL vmlinux 0xa606a90b blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa61cd2f3 vfs_mkobj +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa625788e put_ipc_ns +EXPORT_SYMBOL vmlinux 0xa6257a2f complete +EXPORT_SYMBOL vmlinux 0xa650b573 fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0xa6542ec5 of_match_device +EXPORT_SYMBOL vmlinux 0xa6642d13 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xa67dbc22 fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68232e4 udp_disconnect +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa68cbe99 jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0xa694d542 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xa6a4c8ff key_validate +EXPORT_SYMBOL vmlinux 0xa6ca3022 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0xa6d6dc3a zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xa6e2a2df neigh_connected_output +EXPORT_SYMBOL vmlinux 0xa7051287 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0xa70bc96d qcom_scm_restore_sec_cfg_available +EXPORT_SYMBOL vmlinux 0xa71acc92 fman_port_config +EXPORT_SYMBOL vmlinux 0xa7231a32 fs_param_is_blob +EXPORT_SYMBOL vmlinux 0xa7431a14 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa745b74c jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa75d0659 vfs_symlink +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa7886dc3 __sb_start_write +EXPORT_SYMBOL vmlinux 0xa797fe89 eth_header_parse +EXPORT_SYMBOL vmlinux 0xa7bf1881 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xa7d5f92e ida_destroy +EXPORT_SYMBOL vmlinux 0xa7e2aaf2 xp_free +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa804de26 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xa80c35a4 pcim_iomap +EXPORT_SYMBOL vmlinux 0xa813c83d mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0xa8181adf proc_dointvec +EXPORT_SYMBOL vmlinux 0xa81829e2 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xa82528cb __phy_resume +EXPORT_SYMBOL vmlinux 0xa82f4b04 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa853396b xa_extract +EXPORT_SYMBOL vmlinux 0xa857df2a page_pool_create +EXPORT_SYMBOL vmlinux 0xa858d68a neigh_table_init +EXPORT_SYMBOL vmlinux 0xa85a3e6d xa_load +EXPORT_SYMBOL vmlinux 0xa8666150 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa886af97 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xa8971890 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xa897e3e7 mempool_free +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8b732e2 try_to_release_page +EXPORT_SYMBOL vmlinux 0xa8c40381 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8db4b22 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xa8ddc106 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xa8e6933a qdf2400_e44_present +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa8f89409 kthread_create_worker +EXPORT_SYMBOL vmlinux 0xa8ffa060 ip_options_compile +EXPORT_SYMBOL vmlinux 0xa8ffda68 phy_disconnect +EXPORT_SYMBOL vmlinux 0xa9080e57 dm_register_target +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa925b9c1 d_add_ci +EXPORT_SYMBOL vmlinux 0xa926249c scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xa92a8ef7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa93133a0 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa935952e __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xa952f087 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa96aebc5 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa96e1584 devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa9859c10 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9b3601b km_state_notify +EXPORT_SYMBOL vmlinux 0xa9d2b0bc mdiobus_free +EXPORT_SYMBOL vmlinux 0xa9e388ab inet_bind +EXPORT_SYMBOL vmlinux 0xa9eec0ee pci_request_irq +EXPORT_SYMBOL vmlinux 0xa9f16735 tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0xa9faf179 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xa9fff7f2 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xaa00fdc0 ec_transaction +EXPORT_SYMBOL vmlinux 0xaa01a10f lock_page_memcg +EXPORT_SYMBOL vmlinux 0xaa07daf0 inode_nohighmem +EXPORT_SYMBOL vmlinux 0xaa112bf6 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xaa13cc27 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xaa341905 acpi_bios_exception +EXPORT_SYMBOL vmlinux 0xaa37e460 ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa88e4e0 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaaa7251c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xaaa82479 sg_miter_next +EXPORT_SYMBOL vmlinux 0xaaa9376a sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xaac63ddd xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad473d5 input_reset_device +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaedc78c genl_register_family +EXPORT_SYMBOL vmlinux 0xaafd1ed3 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab21a80f of_node_get +EXPORT_SYMBOL vmlinux 0xab328fea find_vma +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab4cebf2 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xab57bc60 file_remove_privs +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab6713e5 md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xab67a0ac dql_init +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8b7c63 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0xab8c9d72 pipe_unlock +EXPORT_SYMBOL vmlinux 0xab9b3eeb inet_shutdown +EXPORT_SYMBOL vmlinux 0xaba81805 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0xabbcee0e filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xabc3e60f skb_push +EXPORT_SYMBOL vmlinux 0xabd1ca38 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xabf8ad4d bio_put +EXPORT_SYMBOL vmlinux 0xabfd2f1a pnp_register_driver +EXPORT_SYMBOL vmlinux 0xac03b0a0 sock_gettstamp +EXPORT_SYMBOL vmlinux 0xac1467b4 __module_get +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1eb8fb blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac35abc5 phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0xac3ab49e consume_skb +EXPORT_SYMBOL vmlinux 0xac3b0d80 bh_submit_read +EXPORT_SYMBOL vmlinux 0xac537ac2 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xac53e90b inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xac5bcc3e sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xac5c7f91 netdev_info +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac8384d5 fget_raw +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xac9689ec generic_writepages +EXPORT_SYMBOL vmlinux 0xaca126f4 set_anon_super +EXPORT_SYMBOL vmlinux 0xaca9d62a _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0xacaa4c72 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacadacc9 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xacc1ff0d qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0xacd0f72c tcp_release_cb +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdb3d6c kernel_param_lock +EXPORT_SYMBOL vmlinux 0xace20544 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xacfc7cfd pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad043157 genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xad297cc9 mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0xad2ac00c release_sock +EXPORT_SYMBOL vmlinux 0xad3cdf51 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xad3ea04c qman_p_irqsource_remove +EXPORT_SYMBOL vmlinux 0xad44db0d genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0xad531863 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xad61d644 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xad63670b generic_block_bmap +EXPORT_SYMBOL vmlinux 0xad682b8f xudma_rchanrt_write +EXPORT_SYMBOL vmlinux 0xad6ba40e radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9901ae bit_waitqueue +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xad99e4c7 lease_modify +EXPORT_SYMBOL vmlinux 0xada31e57 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xadafd7ba tty_check_change +EXPORT_SYMBOL vmlinux 0xadb1aeac touch_buffer +EXPORT_SYMBOL vmlinux 0xadb4f529 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xadb62145 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xadb94158 posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae019fde __getblk_gfp +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae196f45 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xae1b6056 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xae1db6f8 vfs_get_super +EXPORT_SYMBOL vmlinux 0xae1e94dc blk_integrity_register +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae33c403 xudma_navss_psil_unpair +EXPORT_SYMBOL vmlinux 0xae47275a sock_no_linger +EXPORT_SYMBOL vmlinux 0xae4b51b1 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xae4ed3e3 d_genocide +EXPORT_SYMBOL vmlinux 0xae5a04bb acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0xae742bb5 qman_enqueue +EXPORT_SYMBOL vmlinux 0xae7e3a35 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xae89d7fc mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xae9c1f48 pci_free_irq +EXPORT_SYMBOL vmlinux 0xaea7e007 amba_find_device +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeaf8680 __SetPageMovable +EXPORT_SYMBOL vmlinux 0xaeb2aa98 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xaebd12f0 acpi_get_name +EXPORT_SYMBOL vmlinux 0xaec60722 abort_creds +EXPORT_SYMBOL vmlinux 0xaee4466b dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0xaef1cd97 sync_filesystem +EXPORT_SYMBOL vmlinux 0xaf223eac call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3f084f compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xaf507de1 __arch_copy_from_user +EXPORT_SYMBOL vmlinux 0xaf561f7a input_set_capability +EXPORT_SYMBOL vmlinux 0xaf56600a arm64_use_ng_mappings +EXPORT_SYMBOL vmlinux 0xaf6bc570 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xaf712dc0 rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0xaf987d2e rt6_lookup +EXPORT_SYMBOL vmlinux 0xafb48c87 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xafb91e5c devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0xafcc5216 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xafcdd1b8 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xafd261b0 init_pseudo +EXPORT_SYMBOL vmlinux 0xafecaae5 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xaff6e998 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xb0016ff4 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xb0197e1f insert_inode_locked +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb030f987 input_inject_event +EXPORT_SYMBOL vmlinux 0xb036aa6c vlan_vid_add +EXPORT_SYMBOL vmlinux 0xb043d5e8 blk_queue_split +EXPORT_SYMBOL vmlinux 0xb051ecc0 __inc_node_page_state +EXPORT_SYMBOL vmlinux 0xb05862ec tcp_check_req +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb061a98a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xb081ba55 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xb08da96f md_flush_request +EXPORT_SYMBOL vmlinux 0xb099cd5e rpmh_invalidate +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0aed408 ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0xb0b9ec60 neigh_update +EXPORT_SYMBOL vmlinux 0xb0c5e247 lockref_put_return +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e34c9a get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xb0e699d4 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize +EXPORT_SYMBOL vmlinux 0xb0f3ab0a generic_listxattr +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb1151b2f ___pskb_trim +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1247bcf dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12cbe55 tcp_peek_len +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14e8d23 udp_seq_stop +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb1565097 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xb162ef19 configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1b92593 tcp_seq_next +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1db9a69 fsl_ifc_find +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1df9ef6 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xb1e12d81 krealloc +EXPORT_SYMBOL vmlinux 0xb20962ce param_array_ops +EXPORT_SYMBOL vmlinux 0xb2224684 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xb2245800 path_is_under +EXPORT_SYMBOL vmlinux 0xb2258d95 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb2586fae serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xb260fd6d simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb266bbdd devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xb281ba19 seq_file_path +EXPORT_SYMBOL vmlinux 0xb289f1ac inode_init_once +EXPORT_SYMBOL vmlinux 0xb2a6f4d1 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0xb2aa8dc1 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0xb2add402 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xb2bbe772 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xb2bcb088 acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0xb2bf1d19 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xb2c69f43 qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xb2cb0613 set_cached_acl +EXPORT_SYMBOL vmlinux 0xb2d28db7 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xb2ead97c kimage_vaddr +EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 +EXPORT_SYMBOL vmlinux 0xb2fa96b3 md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb3114cc4 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xb31a4193 done_path_create +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb32728bb qcom_scm_iommu_secure_ptbl_init +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb33c8962 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xb33def31 skb_queue_head +EXPORT_SYMBOL vmlinux 0xb35482aa fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb3a34e60 inet_ioctl +EXPORT_SYMBOL vmlinux 0xb3b54a6e ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d7613b setattr_copy +EXPORT_SYMBOL vmlinux 0xb3e09786 inode_permission +EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4043948 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0xb417f082 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4296653 param_set_bool +EXPORT_SYMBOL vmlinux 0xb4577003 acpi_dev_present +EXPORT_SYMBOL vmlinux 0xb47a8cb9 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb48a7a35 mmc_command_done +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4985beb ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0xb4aae22f dev_set_group +EXPORT_SYMBOL vmlinux 0xb4d407eb pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb4d538ef cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0xb4dc7a65 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb50c9e25 _copy_from_iter +EXPORT_SYMBOL vmlinux 0xb532ddb1 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xb53f2810 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xb54227db nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xb5613edb config_group_find_item +EXPORT_SYMBOL vmlinux 0xb56e5721 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xb5715cf0 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57a10af vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0xb57f1e27 fman_port_disable +EXPORT_SYMBOL vmlinux 0xb5813674 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xb586b46c pci_read_config_dword +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb5a39a27 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b990ec flush_dcache_page +EXPORT_SYMBOL vmlinux 0xb5e2a9dd dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb5f1e456 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xb5f5029e mdio_device_register +EXPORT_SYMBOL vmlinux 0xb5fa7e93 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xb604f26c __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb61ad56c get_disk_and_module +EXPORT_SYMBOL vmlinux 0xb61dcec6 bdget +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb649978d fb_find_mode +EXPORT_SYMBOL vmlinux 0xb653cbc5 dma_find_channel +EXPORT_SYMBOL vmlinux 0xb654ef65 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xb665c6f0 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xb670bb33 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0xb676cd0b qman_create_fq +EXPORT_SYMBOL vmlinux 0xb677d9a7 dquot_disable +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67caf65 ucc_fast_enable +EXPORT_SYMBOL vmlinux 0xb67f56d3 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xb67fb942 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb68c8ba2 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6abca2c disk_start_io_acct +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6c8163f blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xb6e35582 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xb6e48ed7 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0xb6e88aee unlock_rename +EXPORT_SYMBOL vmlinux 0xb6fd7e81 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xb71b5c13 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xb737b185 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xb73fd05d netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xb7688155 ucc_slow_init +EXPORT_SYMBOL vmlinux 0xb788fb30 gic_pmr_sync +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb79a6d4b seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0xb79c4bf7 mii_check_link +EXPORT_SYMBOL vmlinux 0xb7bc31e5 __mdiobus_read +EXPORT_SYMBOL vmlinux 0xb7c0f443 sort +EXPORT_SYMBOL vmlinux 0xb7c142da bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7c8ad94 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xb7ead728 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0xb7ecfcb0 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xb7f0cf71 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xb80f66ed iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xb81c2509 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xb8337791 pci_set_master +EXPORT_SYMBOL vmlinux 0xb83fdd35 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xb842716c qcom_scm_ocmem_lock_available +EXPORT_SYMBOL vmlinux 0xb84a1f0e i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xb84ac8fa __ClearPageMovable +EXPORT_SYMBOL vmlinux 0xb84ea6a8 read_cache_page +EXPORT_SYMBOL vmlinux 0xb8599ce7 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xb85b70c9 load_nls_default +EXPORT_SYMBOL vmlinux 0xb8605d9c qman_p_static_dequeue_add +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb895df30 of_dev_get +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb89e43f2 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xb8bbcb87 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xb8c2ea2d param_get_bool +EXPORT_SYMBOL vmlinux 0xb8c598bf pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb8c61b44 dquot_commit +EXPORT_SYMBOL vmlinux 0xb8cb3955 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90c2470 dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0xb90ff6d5 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb9179636 sock_register +EXPORT_SYMBOL vmlinux 0xb91a6000 ipmr_rule_default +EXPORT_SYMBOL vmlinux 0xb91a6b3c __pci_register_driver +EXPORT_SYMBOL vmlinux 0xb91aec6e xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xb93459e6 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb94d57dd migrate_page +EXPORT_SYMBOL vmlinux 0xb95ae0b8 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xb961b08e vm_map_ram +EXPORT_SYMBOL vmlinux 0xb96d84dd sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb978eb81 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xb9a41576 __destroy_inode +EXPORT_SYMBOL vmlinux 0xb9a58055 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb9af1d0d __xa_clear_mark +EXPORT_SYMBOL vmlinux 0xb9bd777d kthread_blkcg +EXPORT_SYMBOL vmlinux 0xb9d5d999 registered_fb +EXPORT_SYMBOL vmlinux 0xb9d86b60 sock_alloc +EXPORT_SYMBOL vmlinux 0xb9e3fa17 d_exact_alias +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ed2c38 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xb9f7025c mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xb9fc381a qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le +EXPORT_SYMBOL vmlinux 0xba1e5920 xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xba23490b inet_sendpage +EXPORT_SYMBOL vmlinux 0xba441d21 kset_unregister +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5ca4f9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xba627871 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xba654cf8 unix_destruct_scm +EXPORT_SYMBOL vmlinux 0xba67f7c5 skb_pull +EXPORT_SYMBOL vmlinux 0xba6be14c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xba707a78 qe_get_brg_clk +EXPORT_SYMBOL vmlinux 0xba86d2bc fqdir_init +EXPORT_SYMBOL vmlinux 0xba901d94 rproc_free +EXPORT_SYMBOL vmlinux 0xbaaa4196 netif_skb_features +EXPORT_SYMBOL vmlinux 0xbaac461c pci_iomap +EXPORT_SYMBOL vmlinux 0xbad7c404 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbae10c02 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xbaed2124 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xbaeedf7d path_nosuid +EXPORT_SYMBOL vmlinux 0xbaffff96 ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb1b38c6 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xbb1bdf4c security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0xbb21260e convert_ifc_address +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb371cf7 generic_read_dir +EXPORT_SYMBOL vmlinux 0xbb388fad put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0xbb453cf1 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb599a2e __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xbb687724 bman_new_pool +EXPORT_SYMBOL vmlinux 0xbb708409 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xbb7708cf pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xbb908cde devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xbb9fce08 rproc_da_to_va +EXPORT_SYMBOL vmlinux 0xbbd0de0b phy_attached_info +EXPORT_SYMBOL vmlinux 0xbbe46b86 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order +EXPORT_SYMBOL vmlinux 0xbbeecf14 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xbc05f037 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xbc0f549e jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc22486f md_integrity_register +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc300040 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xbc32b19f xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xbc50ab47 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xbc5b8a8b mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0xbc5f2abf call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xbc64c5d7 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xbc6d378b tty_write_room +EXPORT_SYMBOL vmlinux 0xbc899046 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xbc90bfbb xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcb66e09 of_pci_range_to_resource +EXPORT_SYMBOL vmlinux 0xbcb72eb3 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xbcb80b67 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc94a92 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xbccd82ac simple_statfs +EXPORT_SYMBOL vmlinux 0xbcdab667 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xbcdf8985 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbce32642 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xbce8d266 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xbd06b428 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xbd13b049 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xbd16cb8d icmp6_send +EXPORT_SYMBOL vmlinux 0xbd23d9ad mdiobus_write +EXPORT_SYMBOL vmlinux 0xbd2470e8 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xbd2bb0e3 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0xbd39126a security_sock_graft +EXPORT_SYMBOL vmlinux 0xbd3a6358 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd509f8c skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xbd59d983 fman_set_port_params +EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 +EXPORT_SYMBOL vmlinux 0xbd715381 vme_slave_request +EXPORT_SYMBOL vmlinux 0xbd78d62e ns_capable_setid +EXPORT_SYMBOL vmlinux 0xbd8ac2a3 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0xbd8b34ee pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xbd943c92 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xbd9fca74 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0xbda14748 vme_irq_free +EXPORT_SYMBOL vmlinux 0xbda29b37 mmc_sw_reset +EXPORT_SYMBOL vmlinux 0xbdadc675 revalidate_disk +EXPORT_SYMBOL vmlinux 0xbdae13df fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0xbddf7fd5 tcf_em_register +EXPORT_SYMBOL vmlinux 0xbde94ce3 msm_pinctrl_dev_pm_ops +EXPORT_SYMBOL vmlinux 0xbdeba6ec devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xbded35db blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xbdf842bb iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xbe029f17 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xbe07cdcb skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xbe0edc94 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xbe200cb2 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xbe49252c acpi_os_write_port +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe6a866f __wait_on_bit +EXPORT_SYMBOL vmlinux 0xbe7e05a8 acpi_tb_install_and_load_table +EXPORT_SYMBOL vmlinux 0xbea5c1f2 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xbeafcdcb block_commit_write +EXPORT_SYMBOL vmlinux 0xbeb7901c vlan_vid_del +EXPORT_SYMBOL vmlinux 0xbec645bf blk_get_request +EXPORT_SYMBOL vmlinux 0xbec7e19f netdev_alert +EXPORT_SYMBOL vmlinux 0xbed4721c generic_file_llseek +EXPORT_SYMBOL vmlinux 0xbedd35a6 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xbee7c5ce udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xbee9e8cd tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef471dc pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xbef6ca77 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0xbefa51a3 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xbf05da73 simple_setattr +EXPORT_SYMBOL vmlinux 0xbf0b6c14 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xbf452213 simple_fill_super +EXPORT_SYMBOL vmlinux 0xbf4e3fba fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf7904ff vc_resize +EXPORT_SYMBOL vmlinux 0xbf7ea475 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xbf827885 peernet2id +EXPORT_SYMBOL vmlinux 0xbf8e0cc9 arp_xmit +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa52e86 neigh_lookup +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfda2b40 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbfff887e mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xc0064b6e tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0xc00fb90c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xc01d06aa fman_set_mac_max_frame +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc025d405 seq_lseek +EXPORT_SYMBOL vmlinux 0xc049aa13 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xc0607ce6 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xc06cf7b2 input_flush_device +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc083dca2 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xc085ee5d __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a8e5ab __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xc0be1ed8 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0xc0c13d6f xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xc0c5c27f bio_advance +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0dc347a scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc0e0a560 fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0xc0fbb8b4 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc102aa60 phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0xc10612df tcp_read_sock +EXPORT_SYMBOL vmlinux 0xc10cc96c cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0xc1125650 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xc1179daa kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0xc148766b inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xc14dc168 acpi_get_data +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc156c981 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc1579516 fman_port_enable +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc164a51c keygen_init +EXPORT_SYMBOL vmlinux 0xc164e3f6 config_item_set_name +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc178e52d neigh_destroy +EXPORT_SYMBOL vmlinux 0xc19261e0 inode_set_flags +EXPORT_SYMBOL vmlinux 0xc1946e88 compat_import_iovec +EXPORT_SYMBOL vmlinux 0xc1afe89a padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xc1c10520 generic_update_time +EXPORT_SYMBOL vmlinux 0xc1c5cb58 unlock_buffer +EXPORT_SYMBOL vmlinux 0xc1cb5def nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1ef30a8 devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0xc1f2da15 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0xc1f66031 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0xc1fc68db __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc2050974 fman_port_get_tstamp +EXPORT_SYMBOL vmlinux 0xc221bb6f d_tmpfile +EXPORT_SYMBOL vmlinux 0xc22d94e5 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xc2310cdc logic_inl +EXPORT_SYMBOL vmlinux 0xc24ec75f skb_ext_add +EXPORT_SYMBOL vmlinux 0xc259492e follow_pfn +EXPORT_SYMBOL vmlinux 0xc25be5fb blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xc261a886 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xc26274be locks_delete_block +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc2891d90 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a17ebe seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc2bf56f6 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xc2c607b2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xc2c6221a xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc2e4c9f5 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f11eac meson_sm_call_read +EXPORT_SYMBOL vmlinux 0xc2f52274 __lshrti3 +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc3098aba dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc311268a ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0xc31a6250 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc3494837 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xc3527426 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc36a3bd4 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0xc3762aec mempool_alloc +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc3942966 override_creds +EXPORT_SYMBOL vmlinux 0xc3b3ac28 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xc3b8514d set_nlink +EXPORT_SYMBOL vmlinux 0xc3bc72ad trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xc3c5b99f writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xc3ccc81d phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0xc3d2138a sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc3ebef27 phy_start_cable_test +EXPORT_SYMBOL vmlinux 0xc3ef1e8a dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0xc3ff38c2 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc4272049 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xc42b1c5a add_watch_to_object +EXPORT_SYMBOL vmlinux 0xc42d61d6 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xc42dcb99 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0xc434e4fb neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xc44df0ae blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0xc45ca4c8 build_skb_around +EXPORT_SYMBOL vmlinux 0xc45eddc1 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc495b160 kill_anon_super +EXPORT_SYMBOL vmlinux 0xc4b13905 of_graph_get_remote_node +EXPORT_SYMBOL vmlinux 0xc4b21d2f qman_get_affine_portal +EXPORT_SYMBOL vmlinux 0xc4b39ca4 fman_bind +EXPORT_SYMBOL vmlinux 0xc4bf08ac xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xc4d0eeeb tty_port_init +EXPORT_SYMBOL vmlinux 0xc4eaf2f4 vfs_get_tree +EXPORT_SYMBOL vmlinux 0xc4f05e4e mdiobus_scan +EXPORT_SYMBOL vmlinux 0xc4f2574f dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0xc51289ed pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc527639b jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xc528a49a queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0xc52938d3 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc531dcd4 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0xc536e38f compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc53790c1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xc561ee91 free_netdev +EXPORT_SYMBOL vmlinux 0xc56a41e6 vabits_actual +EXPORT_SYMBOL vmlinux 0xc57c48a3 idr_get_next +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc58e5ff7 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xc593d5a2 phy_resume +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5c26774 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc609ca75 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc6280154 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc652072b seq_release_private +EXPORT_SYMBOL vmlinux 0xc6535ed3 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xc65ae352 simple_empty +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc68d7ead pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0xc695d2dc skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xc69b1bd2 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xc69b614f serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xc69fce52 qcom_scm_qsmmu500_wait_safe_toggle +EXPORT_SYMBOL vmlinux 0xc6a15204 simple_link +EXPORT_SYMBOL vmlinux 0xc6a82b23 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xc6b13d25 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc6c30fd6 xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0xc6c75ebd flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc6f55146 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xc7040bf5 ucc_tdm_init +EXPORT_SYMBOL vmlinux 0xc708f1fe ec_write +EXPORT_SYMBOL vmlinux 0xc70d90a1 simple_unlink +EXPORT_SYMBOL vmlinux 0xc70ed17f netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xc71295c1 clk_bulk_get +EXPORT_SYMBOL vmlinux 0xc71d218f drop_super_exclusive +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72bdd9a netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0xc73881e4 mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0xc73e5fff tcf_idr_create +EXPORT_SYMBOL vmlinux 0xc745fd7e fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xc754b743 pci_enable_wake +EXPORT_SYMBOL vmlinux 0xc77440aa msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7991086 get_cached_acl +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d53e7c kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xc7da59b9 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xc7e182f3 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xc7e2884c flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xc7e85f83 block_truncate_page +EXPORT_SYMBOL vmlinux 0xc80ab559 swake_up_one +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc838c3f5 __ashrti3 +EXPORT_SYMBOL vmlinux 0xc844d74a dev_get_stats +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc870a741 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87e11bf sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc88483b0 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89846c4 xudma_tchanrt_read +EXPORT_SYMBOL vmlinux 0xc899ce97 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0xc89ac890 poll_initwait +EXPORT_SYMBOL vmlinux 0xc8a49256 tcp_seq_start +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b5b341 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xc8e0e021 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xc8e4061b gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xc8e7622c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xc8efd6e3 kernel_write +EXPORT_SYMBOL vmlinux 0xc8ff270e __sock_create +EXPORT_SYMBOL vmlinux 0xc90afb0c cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0xc9389460 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xc93e8461 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0xc948d568 dev_trans_start +EXPORT_SYMBOL vmlinux 0xc9589c72 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96c5d9c nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc9957204 __arch_copy_in_user +EXPORT_SYMBOL vmlinux 0xc99c54c2 tso_start +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a1aa36 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xc9af93fb pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xc9c8917d eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xc9d004b1 proc_set_user +EXPORT_SYMBOL vmlinux 0xc9d97fdc jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9ed2d31 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xc9f73da7 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xca0903b3 xfrm_state_free +EXPORT_SYMBOL vmlinux 0xca0976ec kobject_add +EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xca1bcdda read_cache_pages +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca3a4311 nobh_writepage +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca46d362 xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0xca54379f devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0xca62afaf xudma_rflow_is_gp +EXPORT_SYMBOL vmlinux 0xca6b406a bd_abort_claiming +EXPORT_SYMBOL vmlinux 0xca6b6bda blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xca7c309b pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xca886b68 __frontswap_load +EXPORT_SYMBOL vmlinux 0xca8f50f0 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9beaa4 __xa_store +EXPORT_SYMBOL vmlinux 0xcaa4aa2a vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0xcac05c24 start_tty +EXPORT_SYMBOL vmlinux 0xcad1aca8 acpi_exception +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf6bdea scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xcafd97ed xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb13eae8 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb40e3d2 flow_rule_match_control +EXPORT_SYMBOL vmlinux 0xcb5c55c7 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xcb5da614 configfs_register_default_group +EXPORT_SYMBOL vmlinux 0xcb61accc generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb952c79 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xcb9e1a22 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbb52b3f file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbe45110 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcbeaa54f generic_ro_fops +EXPORT_SYMBOL vmlinux 0xcbeddcff twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xcbee484c bio_reset +EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcc1b882a idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xcc20ed08 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc25e68b pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc48093b input_close_device +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc530c81 netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0xcc5c2df4 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc6feec1 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xcca5839d xen_vcpu_id +EXPORT_SYMBOL vmlinux 0xccbee762 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccd3385d genphy_loopback +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccd57911 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd01b8e6 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd4218d6 dquot_destroy +EXPORT_SYMBOL vmlinux 0xcd6fb1c6 dcb_setapp +EXPORT_SYMBOL vmlinux 0xcd79429d udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xcd7e37ee seq_dentry +EXPORT_SYMBOL vmlinux 0xcd838d21 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0xcd8ce890 acpi_format_exception +EXPORT_SYMBOL vmlinux 0xcdad86c7 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdca9140 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xcddb0953 devm_clk_put +EXPORT_SYMBOL vmlinux 0xcde1e4f7 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xce036f24 sg_split +EXPORT_SYMBOL vmlinux 0xce0cef3c max8998_read_reg +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3864eb ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce4d8c5e devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce50e5de ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xce544ce8 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6208a3 fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0xce6477b2 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xce655ee3 serio_rescan +EXPORT_SYMBOL vmlinux 0xce731b34 ucc_slow_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0xce76a9c2 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0xce76c257 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce807a25 up_write +EXPORT_SYMBOL vmlinux 0xce9aefee inet_add_protocol +EXPORT_SYMBOL vmlinux 0xce9c48ac sync_file_create +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceade2c3 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0xceb68de1 phy_free_interrupt +EXPORT_SYMBOL vmlinux 0xceb9fd91 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xcece2870 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcece88c5 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xced0f4d4 gen_pool_create +EXPORT_SYMBOL vmlinux 0xced12aa2 write_cache_pages +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf036904 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xcf0ba18e d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcf0eaea7 d_instantiate_new +EXPORT_SYMBOL vmlinux 0xcf15b93b pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf2a6966 up +EXPORT_SYMBOL vmlinux 0xcf43f534 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xcf4b9cbe sock_bind_add +EXPORT_SYMBOL vmlinux 0xcf4fdd4d _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xcf5599ab disk_end_io_acct +EXPORT_SYMBOL vmlinux 0xcf5ac11b scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xcf700e7a alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xcf7ce427 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xcf83d83a __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xcf8939b5 lru_cache_add +EXPORT_SYMBOL vmlinux 0xcf96a869 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcf9f5bbe dns_query +EXPORT_SYMBOL vmlinux 0xcfb93e2a __napi_schedule +EXPORT_SYMBOL vmlinux 0xcfd00b2e fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xcfe57d1f security_socket_socketpair +EXPORT_SYMBOL vmlinux 0xcfeb98a8 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xcffa119f param_ops_charp +EXPORT_SYMBOL vmlinux 0xd0087708 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd0096e26 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xd02e0348 phy_detach +EXPORT_SYMBOL vmlinux 0xd02f5e75 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xd03c47c5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd0589bea tcp_time_wait +EXPORT_SYMBOL vmlinux 0xd06174a3 mr_table_alloc +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0698f16 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xd06f6182 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xd083b08e ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xd0874941 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd087c5c3 tty_unlock +EXPORT_SYMBOL vmlinux 0xd08adb2b trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0xd092398e acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xd0a440a2 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd0a73907 clkdev_add +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b51911 passthru_features_check +EXPORT_SYMBOL vmlinux 0xd0b74705 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xd0bd487b hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd0d01d10 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xd0d765ca tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0xd0d7fb20 pnp_device_detach +EXPORT_SYMBOL vmlinux 0xd0da060d __icmp_send +EXPORT_SYMBOL vmlinux 0xd0ef6760 del_gendisk +EXPORT_SYMBOL vmlinux 0xd0f2a256 mr_table_dump +EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xd112c6e1 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd1143052 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xd11c4089 scmd_printk +EXPORT_SYMBOL vmlinux 0xd120e48f seq_path +EXPORT_SYMBOL vmlinux 0xd123b008 ip6tun_encaps +EXPORT_SYMBOL vmlinux 0xd135cf61 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd152d447 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xd1807663 mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd194ddf9 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xd1a23930 begin_new_exec +EXPORT_SYMBOL vmlinux 0xd1b19581 __put_page +EXPORT_SYMBOL vmlinux 0xd1bb1e25 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xd1beb9dc pci_resize_resource +EXPORT_SYMBOL vmlinux 0xd1c148c6 dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0xd1d57de5 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d9f33a security_sk_clone +EXPORT_SYMBOL vmlinux 0xd1f439a6 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xd1f46ede unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xd1f52c32 backlight_force_update +EXPORT_SYMBOL vmlinux 0xd1f87b4c touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xd2051916 qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0xd207491a flow_rule_alloc +EXPORT_SYMBOL vmlinux 0xd2220432 xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0xd2237016 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0xd23634c9 dma_set_mask +EXPORT_SYMBOL vmlinux 0xd2500d4e of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd25ba231 eth_header_cache +EXPORT_SYMBOL vmlinux 0xd25bc5d4 csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf +EXPORT_SYMBOL vmlinux 0xd265f0cb skb_free_datagram +EXPORT_SYMBOL vmlinux 0xd26616ac i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xd2730035 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2aa8b15 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xd2b0e5a0 security_path_unlink +EXPORT_SYMBOL vmlinux 0xd2b2f60a rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xd2c0af2a kernel_accept +EXPORT_SYMBOL vmlinux 0xd2c10aba pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xd2d2feb5 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xd2d755a3 thaw_bdev +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2db7c0a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xd2de66a6 vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2ea49b8 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd33c7e9f bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0xd34df742 try_module_get +EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xd3559ef4 __memset +EXPORT_SYMBOL vmlinux 0xd35713cf pci_dev_driver +EXPORT_SYMBOL vmlinux 0xd359c79d jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd366a2cc inode_dio_wait +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3736358 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd39ee82c tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0xd3b24a16 pci_select_bars +EXPORT_SYMBOL vmlinux 0xd3e71a40 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3eb56ae skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0xd3fba534 qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd40f0609 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xd412805d fb_get_mode +EXPORT_SYMBOL vmlinux 0xd425212e param_set_short +EXPORT_SYMBOL vmlinux 0xd42f9033 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xd4339de8 qcom_scm_pas_init_image +EXPORT_SYMBOL vmlinux 0xd453e24c netif_carrier_off +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd45ec0a5 input_register_handle +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd49e3811 unix_detach_fds +EXPORT_SYMBOL vmlinux 0xd4a69d20 qm_channel_caam +EXPORT_SYMBOL vmlinux 0xd4b67d89 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd4bad742 netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4d1983c udplite_table +EXPORT_SYMBOL vmlinux 0xd4e12ca8 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xd4e264cd xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xd4ecd764 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd5346bfc acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xd5463f95 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xd546e488 simple_write_end +EXPORT_SYMBOL vmlinux 0xd551a4b7 do_SAK +EXPORT_SYMBOL vmlinux 0xd56f7a01 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xd57b8610 dm_unregister_target +EXPORT_SYMBOL vmlinux 0xd58a2a4c sk_stream_error +EXPORT_SYMBOL vmlinux 0xd59d841f ll_rw_block +EXPORT_SYMBOL vmlinux 0xd5a15a99 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0xd5a501bd dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xd5abdc40 rpmh_write_async +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5b75def param_get_long +EXPORT_SYMBOL vmlinux 0xd5c38e06 pci_write_config_dword +EXPORT_SYMBOL vmlinux 0xd5e15062 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xd5f53160 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xd5fd90f1 prepare_to_wait +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd62365cc get_tree_single +EXPORT_SYMBOL vmlinux 0xd629df38 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xd62ecd49 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xd63ef3ff ppp_register_channel +EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax +EXPORT_SYMBOL vmlinux 0xd643239a acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xd6465927 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xd65b4781 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xd65e1c31 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd6622d46 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0xd668d8e4 input_allocate_device +EXPORT_SYMBOL vmlinux 0xd67a66da tcp_filter +EXPORT_SYMBOL vmlinux 0xd683a6e8 elv_rb_del +EXPORT_SYMBOL vmlinux 0xd683e482 napi_complete_done +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd68ef1e1 of_xudma_dev_get +EXPORT_SYMBOL vmlinux 0xd691c6a9 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd69e0061 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0xd6a2025c proc_mkdir +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6c85967 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xd6cccd49 security_path_mknod +EXPORT_SYMBOL vmlinux 0xd6dd249e __inode_add_bytes +EXPORT_SYMBOL vmlinux 0xd6e1ab86 __frontswap_test +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd7054342 scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd70f62b6 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xd70f9c8d mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd739e8c5 of_device_register +EXPORT_SYMBOL vmlinux 0xd7679913 single_open +EXPORT_SYMBOL vmlinux 0xd76d10ae tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0xd771c5f2 register_console +EXPORT_SYMBOL vmlinux 0xd776f6c0 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xd780269d netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd78f2d94 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xd79dffc0 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0xd7a7b169 fman_reset_mac +EXPORT_SYMBOL vmlinux 0xd7a7e7f8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xd7ae3b9b mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ff1b8a __ashlti3 +EXPORT_SYMBOL vmlinux 0xd80581bd twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xd811087e mdio_bus_type +EXPORT_SYMBOL vmlinux 0xd8131274 qman_alloc_cgrid_range +EXPORT_SYMBOL vmlinux 0xd828f063 xudma_tchanrt_write +EXPORT_SYMBOL vmlinux 0xd83eb23d eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd866a3c9 to_nd_btt +EXPORT_SYMBOL vmlinux 0xd879ee30 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a06c34 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xd8a4c7ec pci_dev_put +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8af9b93 empty_aops +EXPORT_SYMBOL vmlinux 0xd8b485cd input_unregister_device +EXPORT_SYMBOL vmlinux 0xd8b66e53 kfree_skb +EXPORT_SYMBOL vmlinux 0xd8cb18ab mmc_retune_release +EXPORT_SYMBOL vmlinux 0xd8d6e065 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xd8d94171 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xd8df08ac acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xd8eff3f8 ptp_clock_index +EXPORT_SYMBOL vmlinux 0xd901c129 import_single_range +EXPORT_SYMBOL vmlinux 0xd90758b1 end_page_writeback +EXPORT_SYMBOL vmlinux 0xd90cb249 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0xd911b743 __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0xd9165646 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xd921ef07 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xd92deb6b acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xd92f7766 register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xd9444ea2 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xd9491c14 xa_destroy +EXPORT_SYMBOL vmlinux 0xd96c8b6d __sb_end_write +EXPORT_SYMBOL vmlinux 0xd976c700 cdev_init +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd987c22c unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xd98d11bf scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0xd99a6b3a ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xd9a3d6ba napi_gro_receive +EXPORT_SYMBOL vmlinux 0xd9a5ea54 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xd9a7fbea dev_mc_flush +EXPORT_SYMBOL vmlinux 0xd9b85ef6 lockref_get +EXPORT_SYMBOL vmlinux 0xd9c0abb1 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xd9d6f4a8 dma_dummy_ops +EXPORT_SYMBOL vmlinux 0xd9d8403c dev_change_carrier +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9e8aee7 refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xd9ee35f1 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0xd9f36059 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xda0bb0cc neigh_for_each +EXPORT_SYMBOL vmlinux 0xda10443c xudma_tchan_get_id +EXPORT_SYMBOL vmlinux 0xda23a02b fb_blank +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda438a1f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xda4748d0 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda7969ad bmap +EXPORT_SYMBOL vmlinux 0xda81551a of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda9fc7ae kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xdaaae201 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xdab1e472 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdacbcccc vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0xdaccbcba mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0xdad3d449 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0xdaed074b page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xdb026b66 hmm_range_fault +EXPORT_SYMBOL vmlinux 0xdb276ca8 set_device_ro +EXPORT_SYMBOL vmlinux 0xdb457670 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xdb45f293 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xdb55c076 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb761100 unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0xdb7920b4 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xdb8677f7 pci_find_resource +EXPORT_SYMBOL vmlinux 0xdb8758d8 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xdb903208 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xdb99b338 sock_create_lite +EXPORT_SYMBOL vmlinux 0xdb9c8e1f netif_rx +EXPORT_SYMBOL vmlinux 0xdbaea9e3 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0xdbbc5408 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xdbcf041a acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbe58520 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xdbe931a3 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xdc01b20f __neigh_create +EXPORT_SYMBOL vmlinux 0xdc07eb77 iov_iter_revert +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1cc785 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xdc21989f input_get_poll_interval +EXPORT_SYMBOL vmlinux 0xdc327a8b i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xdc34158f fman_port_init +EXPORT_SYMBOL vmlinux 0xdc3e8f03 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc46dee9 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc71a575 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xdc7a011f blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xdc8660fb ip_defrag +EXPORT_SYMBOL vmlinux 0xdc964394 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xdca8c3d4 logic_outb +EXPORT_SYMBOL vmlinux 0xdcb1067e fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcc928d1 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xdcda8b76 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0xdcf9c71f inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xdd038d47 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xdd06add5 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xdd0d3f22 generic_permission +EXPORT_SYMBOL vmlinux 0xdd159b89 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xdd18a993 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdd282a36 proc_create_single_data +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd7e3192 qcom_scm_pas_auth_and_reset +EXPORT_SYMBOL vmlinux 0xdd8166a1 dma_fence_free +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xddad7952 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xddbe84d9 dev_printk +EXPORT_SYMBOL vmlinux 0xddd6b4c2 rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0xdddaba75 bdevname +EXPORT_SYMBOL vmlinux 0xddde5772 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xddecd49c poll_freewait +EXPORT_SYMBOL vmlinux 0xddf57526 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xddf6ad7a completion_done +EXPORT_SYMBOL vmlinux 0xddf9f301 d_instantiate +EXPORT_SYMBOL vmlinux 0xde1882f6 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xde293f9e add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xde36503b security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xde3a6555 _dev_emerg +EXPORT_SYMBOL vmlinux 0xde473e6c dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde65b6fd generic_fillattr +EXPORT_SYMBOL vmlinux 0xde6c891b dev_lstats_read +EXPORT_SYMBOL vmlinux 0xde753aa2 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xde755d08 ata_print_version +EXPORT_SYMBOL vmlinux 0xde8e4754 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xdea5b108 __seq_open_private +EXPORT_SYMBOL vmlinux 0xdeb7e309 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xdece7765 rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xdecfc25a ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xded6a415 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xded7c479 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xdee365b0 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf0285c5 mmc_start_request +EXPORT_SYMBOL vmlinux 0xdf05f7c6 param_get_uint +EXPORT_SYMBOL vmlinux 0xdf13015d __sk_receive_skb +EXPORT_SYMBOL vmlinux 0xdf1e4837 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xdf29e695 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf327b5f security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xdf36914b xa_find_after +EXPORT_SYMBOL vmlinux 0xdf414f09 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xdf44ae47 phy_attached_print +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf57fdd0 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xdf6b082f proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xdf7223ad jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xdf75ae9e tcp_prot +EXPORT_SYMBOL vmlinux 0xdf7f1d77 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0xdf80cd5e ptp_find_pin +EXPORT_SYMBOL vmlinux 0xdf8690d5 may_umount +EXPORT_SYMBOL vmlinux 0xdf88a0ff sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf94188d fb_set_suspend +EXPORT_SYMBOL vmlinux 0xdf9a75d1 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xdfa0f1bd mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xdfacc647 kobject_del +EXPORT_SYMBOL vmlinux 0xdfaffb75 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xdfb14029 down_read_killable +EXPORT_SYMBOL vmlinux 0xdfb4375d of_parse_phandle +EXPORT_SYMBOL vmlinux 0xdfb8cac9 amba_device_register +EXPORT_SYMBOL vmlinux 0xdfb97eb3 mount_single +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfcda7f6 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xdfd45d88 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdfe5bbc6 md_register_thread +EXPORT_SYMBOL vmlinux 0xdfe77871 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe0054114 netlink_set_err +EXPORT_SYMBOL vmlinux 0xe013c243 padata_free_shell +EXPORT_SYMBOL vmlinux 0xe0145d80 migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0xe02ba436 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xe02c9c92 __xa_erase +EXPORT_SYMBOL vmlinux 0xe036a1db scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0xe03a689d dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xe03d4681 pci_bus_type +EXPORT_SYMBOL vmlinux 0xe05ee880 sock_init_data +EXPORT_SYMBOL vmlinux 0xe06ccf05 mmc_get_card +EXPORT_SYMBOL vmlinux 0xe07c8286 put_cmsg +EXPORT_SYMBOL vmlinux 0xe07e5f44 acpi_reconfig_notifier_unregister +EXPORT_SYMBOL vmlinux 0xe082e88d acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe08bcc05 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xe08f556e netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe092b965 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold +EXPORT_SYMBOL vmlinux 0xe09c1905 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c04f58 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0xe0d9d645 mii_check_media +EXPORT_SYMBOL vmlinux 0xe0ef559f of_phy_connect +EXPORT_SYMBOL vmlinux 0xe0f153eb page_mapping +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11420ab kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xe114398a tty_hangup +EXPORT_SYMBOL vmlinux 0xe11a548f skb_dump +EXPORT_SYMBOL vmlinux 0xe11c2616 udp_gro_complete +EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0xe11d6068 console_stop +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe1299549 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe12de666 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xe138fb8c percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13d5d07 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xe14c8097 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe1563afb input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xe178a37c flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0xe18212e6 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe187bbdd page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe192bd6b flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0xe1957447 secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0xe199b05b pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xe19dcb25 proc_create_data +EXPORT_SYMBOL vmlinux 0xe19dfe7b security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xe1a400c3 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1a86240 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xe1b017b9 kill_pid +EXPORT_SYMBOL vmlinux 0xe1c6b85b nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1e895ea jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xe1f6b830 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xe1fec47b block_invalidatepage +EXPORT_SYMBOL vmlinux 0xe2006d15 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xe2109f3f ab3100_event_register +EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xe229ddad dev_uc_del +EXPORT_SYMBOL vmlinux 0xe245007c fman_get_mem_region +EXPORT_SYMBOL vmlinux 0xe2533b61 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xe2605910 dev_addr_add +EXPORT_SYMBOL vmlinux 0xe26c931a security_path_mkdir +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe28bca9e mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xe2c67c6c sk_net_capable +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2e5a445 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xe2f3bf88 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xe2fd9017 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe31d3e0e zpool_register_driver +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe331f2dd pps_register_source +EXPORT_SYMBOL vmlinux 0xe341f3ca seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xe354dbc8 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xe35be82b kmem_cache_create +EXPORT_SYMBOL vmlinux 0xe35f26b4 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xe3b92b97 i2c_transfer +EXPORT_SYMBOL vmlinux 0xe3d32bab tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xe3ddc7f6 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3f15110 softnet_data +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe40976c0 pnp_range_reserved +EXPORT_SYMBOL vmlinux 0xe40b5a3e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xe40c37ea down_write_trylock +EXPORT_SYMBOL vmlinux 0xe41476d9 ZSTD_getParams +EXPORT_SYMBOL vmlinux 0xe420c2db seq_open +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe44568c5 reuseport_alloc +EXPORT_SYMBOL vmlinux 0xe44ecbc1 phy_init_hw +EXPORT_SYMBOL vmlinux 0xe45a407e max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xe45ab742 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe469e430 rproc_report_crash +EXPORT_SYMBOL vmlinux 0xe4bbc1dd kimage_voffset +EXPORT_SYMBOL vmlinux 0xe4f60cea scm_detach_fds +EXPORT_SYMBOL vmlinux 0xe4f76a5b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xe4f8867c tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xe508f8de adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xe5122941 ps2_init +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5302daf genphy_update_link +EXPORT_SYMBOL vmlinux 0xe534bc76 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xe541075f inet_put_port +EXPORT_SYMBOL vmlinux 0xe553872e crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xe559d0a5 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0xe55d086c capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xe5600b30 rt_dst_clone +EXPORT_SYMBOL vmlinux 0xe578eb10 sock_from_file +EXPORT_SYMBOL vmlinux 0xe57feefb qcom_scm_ocmem_unlock +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe5a6a3e1 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0xe5a76075 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xe5ae22b7 md_done_sync +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5c60bd2 percpu_counter_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ef4c28 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xe5f03ae1 pcie_print_link_status +EXPORT_SYMBOL vmlinux 0xe5f653b4 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0xe5fa1887 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe5fa7d10 pci_choose_state +EXPORT_SYMBOL vmlinux 0xe5ff46e2 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xe6011d1f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xe60145f8 reuseport_add_sock +EXPORT_SYMBOL vmlinux 0xe60c287e blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xe610c76b get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe6227dba page_readlink +EXPORT_SYMBOL vmlinux 0xe626b551 tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0xe62fdc4c mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xe644a61b param_get_string +EXPORT_SYMBOL vmlinux 0xe64646bb fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xe64ba837 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xe64f681d vme_register_driver +EXPORT_SYMBOL vmlinux 0xe6695f02 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xe6720157 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xe68a1458 ilookup5 +EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0xe698638f blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xe6ab8be7 phy_device_create +EXPORT_SYMBOL vmlinux 0xe6b70312 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xe6e431c7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xe6f07a72 keyring_alloc +EXPORT_SYMBOL vmlinux 0xe6f1f6a3 path_is_mountpoint +EXPORT_SYMBOL vmlinux 0xe7094ed6 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0xe70e58ef param_ops_int +EXPORT_SYMBOL vmlinux 0xe71ea91d rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe7257ab8 xa_store_range +EXPORT_SYMBOL vmlinux 0xe72d5ef2 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe73ff6d0 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xe7679fe2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xe7698027 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe78505c5 fman_get_qman_channel_id +EXPORT_SYMBOL vmlinux 0xe78ecc38 input_register_handler +EXPORT_SYMBOL vmlinux 0xe78ff3be dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xe7a02573 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xe7b0353b __cpu_active_mask +EXPORT_SYMBOL vmlinux 0xe7b63ac5 prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0xe7ca039b ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xe7ca088d get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xe7d3c4c1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe80a7866 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xe81e69e0 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0xe81f315d vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xe8216e70 tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0xe82bb01c i2c_del_driver +EXPORT_SYMBOL vmlinux 0xe852dd97 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xe85aaa3d fb_class +EXPORT_SYMBOL vmlinux 0xe85f2123 acpi_tb_unload_table +EXPORT_SYMBOL vmlinux 0xe8619089 pci_find_capability +EXPORT_SYMBOL vmlinux 0xe86392e9 inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0xe86e79a1 tcp_child_process +EXPORT_SYMBOL vmlinux 0xe8c45b86 pci_request_region +EXPORT_SYMBOL vmlinux 0xe8cb8eb6 remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0xe8e399b4 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe8e82b8f blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xe8f52867 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xe8fbf4fa __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xe90253f0 xudma_rflow_get +EXPORT_SYMBOL vmlinux 0xe910f00c fman_get_revision +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91e00f4 inode_insert5 +EXPORT_SYMBOL vmlinux 0xe9343e2b pipe_lock +EXPORT_SYMBOL vmlinux 0xe937b665 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95c4d8a param_set_bint +EXPORT_SYMBOL vmlinux 0xe95c5a64 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe960c33e map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0xe984b995 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xe99658f8 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xe99e5a45 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xe9a7217d __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe9af7397 __xa_set_mark +EXPORT_SYMBOL vmlinux 0xe9b4c1fc thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xe9d934a4 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9ed1073 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0xe9f5c383 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f86336 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xe9fc0829 put_fs_context +EXPORT_SYMBOL vmlinux 0xe9fd0d8b devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0xea11ba2b hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xea231bdc down_write_killable +EXPORT_SYMBOL vmlinux 0xea25fa71 unix_attach_fds +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea5ffc05 mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0xea7e0664 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea861c8f jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xea8dd742 __invalidate_device +EXPORT_SYMBOL vmlinux 0xea9003ac param_get_ullong +EXPORT_SYMBOL vmlinux 0xea9d99b7 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xeaa7f0c6 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0xeab6f4c4 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xeab6f4d2 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xead8c400 bman_get_bpid +EXPORT_SYMBOL vmlinux 0xeadc56da forget_cached_acl +EXPORT_SYMBOL vmlinux 0xeae1ff63 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeae42eaf scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xeaef118e sock_i_uid +EXPORT_SYMBOL vmlinux 0xeaf53fe9 phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb13f841 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xeb1b2867 compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc +EXPORT_SYMBOL vmlinux 0xeb2391c9 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xeb2605a1 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0xeb2f9593 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3ab0af __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xeb401816 skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb444ce9 bdev_read_only +EXPORT_SYMBOL vmlinux 0xeb50e559 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xeb67d9a1 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xeb7f6046 acpi_get_devices +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xeba52455 reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0xebad46ae can_nice +EXPORT_SYMBOL vmlinux 0xebb61603 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xebc9095c inet_listen +EXPORT_SYMBOL vmlinux 0xebca1899 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xebd578a7 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xebd6ff97 md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xec237e4f xps_needed +EXPORT_SYMBOL vmlinux 0xec2b8a42 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xec2e1c8f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xec41716a qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0xec446f94 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec555b12 block_write_full_page +EXPORT_SYMBOL vmlinux 0xec56ae3e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xec691050 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xec73d8d2 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xec8bf2e9 submit_bh +EXPORT_SYMBOL vmlinux 0xec9428c0 phy_suspend +EXPORT_SYMBOL vmlinux 0xec9bca00 kobject_set_name +EXPORT_SYMBOL vmlinux 0xeca4c9dc arp_create +EXPORT_SYMBOL vmlinux 0xeca60505 dget_parent +EXPORT_SYMBOL vmlinux 0xecb60528 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xecb8f5ff remap_pfn_range +EXPORT_SYMBOL vmlinux 0xecc98f0a proc_remove +EXPORT_SYMBOL vmlinux 0xeccf6960 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed00c4fb acpi_os_printf +EXPORT_SYMBOL vmlinux 0xed069e27 fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0xed30602f rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xed55f929 acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0xed581867 elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0xed625c3d __page_symlink +EXPORT_SYMBOL vmlinux 0xed6fc369 block_read_full_page +EXPORT_SYMBOL vmlinux 0xed835fd1 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xed8a2d95 memset64 +EXPORT_SYMBOL vmlinux 0xeda0cd00 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xeda4c98b genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xeda962de to_nd_pfn +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xeddcb5ff xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0xedfc610c sock_efree +EXPORT_SYMBOL vmlinux 0xee026c58 vfs_link +EXPORT_SYMBOL vmlinux 0xee04349e dev_set_alias +EXPORT_SYMBOL vmlinux 0xee1b7303 user_path_create +EXPORT_SYMBOL vmlinux 0xee22a3ff netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2edb83 param_ops_byte +EXPORT_SYMBOL vmlinux 0xee32e65a tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0xee3d6c68 cdev_device_del +EXPORT_SYMBOL vmlinux 0xee3efd84 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xee54e201 skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee5b21e5 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xee5d23df in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xee7d7deb gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeeca9718 phy_driver_register +EXPORT_SYMBOL vmlinux 0xeefc7bbc md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0xef007d77 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xef3ac6d2 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xef447ffa of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xef476f8c flow_block_cb_free +EXPORT_SYMBOL vmlinux 0xef5809a1 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xef584b66 submit_bio +EXPORT_SYMBOL vmlinux 0xef5c809d pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xef8ac53d qcom_scm_restore_sec_cfg +EXPORT_SYMBOL vmlinux 0xef8ed100 udp_prot +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefbb6ad3 seq_pad +EXPORT_SYMBOL vmlinux 0xefbf516a free_cgroup_ns +EXPORT_SYMBOL vmlinux 0xefc19b11 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xefc30825 phy_connect +EXPORT_SYMBOL vmlinux 0xefcaad4a param_set_int +EXPORT_SYMBOL vmlinux 0xefcbfe77 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xefcea2e7 acpi_warning +EXPORT_SYMBOL vmlinux 0xefd2b334 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefe3771c security_binder_transaction +EXPORT_SYMBOL vmlinux 0xefe4f679 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xefee932c acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xeff608e0 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xeff8bf13 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0068fc3 vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf02aa937 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xf0411680 alloc_pages_vma +EXPORT_SYMBOL vmlinux 0xf0414c3f pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0xf05ba494 input_release_device +EXPORT_SYMBOL vmlinux 0xf05e7327 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xf081ef9d scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf0852b36 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xf089425c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf09ebeaa __mod_node_page_state +EXPORT_SYMBOL vmlinux 0xf0a33074 phy_stop +EXPORT_SYMBOL vmlinux 0xf0b0a997 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xf0b2419f cmd_db_read_aux_data +EXPORT_SYMBOL vmlinux 0xf0da7f3b __bread_gfp +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf1050151 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf1089681 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xf12be462 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xf1304402 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xf14666e0 blkdev_get +EXPORT_SYMBOL vmlinux 0xf15920cc acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xf15a67d5 iproc_msi_exit +EXPORT_SYMBOL vmlinux 0xf16cfbc1 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xf17a69f3 seq_vprintf +EXPORT_SYMBOL vmlinux 0xf18300ad logic_inb +EXPORT_SYMBOL vmlinux 0xf18306d1 inet_offloads +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19d50dc ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf1aa5593 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf1c50001 task_work_add +EXPORT_SYMBOL vmlinux 0xf1cc0aaa pci_get_slot +EXPORT_SYMBOL vmlinux 0xf1cef226 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dbcf5c get_vm_area +EXPORT_SYMBOL vmlinux 0xf1deb48f skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1fd7ffe ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0xf21017d9 mutex_trylock +EXPORT_SYMBOL vmlinux 0xf21beaf8 fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf22a8d83 profile_pc +EXPORT_SYMBOL vmlinux 0xf230124d dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24c4297 dev_driver_string +EXPORT_SYMBOL vmlinux 0xf2669a2c imx_scu_irq_register_notifier +EXPORT_SYMBOL vmlinux 0xf2705d8b ucc_fast_init +EXPORT_SYMBOL vmlinux 0xf275e248 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xf27efe9d mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xf28278af pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf29403e5 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xf294d130 of_parse_phandle_with_args_map +EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xf2ab11e0 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xf2abbbe5 d_invalidate +EXPORT_SYMBOL vmlinux 0xf2bd19a0 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c72efd dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf2f6f5a3 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xf2f70c25 qman_fq_fqid +EXPORT_SYMBOL vmlinux 0xf309e428 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xf310495d cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf32f0c3d inc_nlink +EXPORT_SYMBOL vmlinux 0xf338f045 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf350bb83 skb_seq_read +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf36289e5 nf_log_unset +EXPORT_SYMBOL vmlinux 0xf369dd95 clear_nlink +EXPORT_SYMBOL vmlinux 0xf36c19ac pci_restore_state +EXPORT_SYMBOL vmlinux 0xf36c19f3 skb_find_text +EXPORT_SYMBOL vmlinux 0xf3706ab2 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xf3795527 dma_pool_create +EXPORT_SYMBOL vmlinux 0xf3837d00 mpage_writepages +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3918522 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3ba2a43 genl_notify +EXPORT_SYMBOL vmlinux 0xf3c65723 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xf3cc1ed6 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ef4d05 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xf409e0e7 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0xf409f4f1 __ip_options_compile +EXPORT_SYMBOL vmlinux 0xf40e7a73 __xa_alloc +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf433e7a9 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf43d2caa acpi_remove_interface +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf4510aa9 is_acpi_device_node +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48cdee4 tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0xf49b0450 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xf4a515f7 rproc_shutdown +EXPORT_SYMBOL vmlinux 0xf4b2b86e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xf4b736c7 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cdccaf proc_create_mount_point +EXPORT_SYMBOL vmlinux 0xf4ce19d1 param_get_ushort +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4e9c929 audit_log +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f7d1bf mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xf4ffc3f2 tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0xf5089c56 ucc_of_parse_tdm +EXPORT_SYMBOL vmlinux 0xf5159e03 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xf51aba5d truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xf5267805 vga_get +EXPORT_SYMBOL vmlinux 0xf534043f mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xf53632e2 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf5383289 no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf55a13bc sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf55c093d security_path_rename +EXPORT_SYMBOL vmlinux 0xf567d9dc tty_register_driver +EXPORT_SYMBOL vmlinux 0xf56c3eb1 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xf57e63b2 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xf588ede9 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf58a1076 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xf5909eec tcp_seq_stop +EXPORT_SYMBOL vmlinux 0xf591753d nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf596db66 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0xf5cc2b97 __ps2_command +EXPORT_SYMBOL vmlinux 0xf5d3fbb6 setup_new_exec +EXPORT_SYMBOL vmlinux 0xf5e26a9e __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xf5e5a87b hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5fddd38 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xf614cfe8 put_disk +EXPORT_SYMBOL vmlinux 0xf6275b90 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0xf629d44b follow_down_one +EXPORT_SYMBOL vmlinux 0xf62c39fe ucc_slow_graceful_stop_tx +EXPORT_SYMBOL vmlinux 0xf636f617 vfs_readlink +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf65879b1 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf67c3dc7 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf681acfc hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68a07c6 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xf68c4a71 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0xf6acd93a _dev_info +EXPORT_SYMBOL vmlinux 0xf6ae9031 __breadahead +EXPORT_SYMBOL vmlinux 0xf6c0ee9f scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xf6cbc72b flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0xf6cd7b18 kern_path +EXPORT_SYMBOL vmlinux 0xf6d8d53b param_set_uint +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70a4804 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xf718a12a input_setup_polling +EXPORT_SYMBOL vmlinux 0xf727a07c file_modified +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76843b5 qcom_scm_pas_supported +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf77393a7 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf77cc7a5 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xf77f7673 sock_no_bind +EXPORT_SYMBOL vmlinux 0xf7c6d513 udp_poll +EXPORT_SYMBOL vmlinux 0xf7c77591 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xf7da6e6f acpi_unload_table +EXPORT_SYMBOL vmlinux 0xf7ea6311 qman_p_poll_dqrr +EXPORT_SYMBOL vmlinux 0xf7f05c17 fman_port_use_kg_hash +EXPORT_SYMBOL vmlinux 0xf7f1c34f sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xf7f6773a mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xf80201f6 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82417a9 of_get_next_child +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82c7fd2 __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf82f1e87 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf84eada0 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xf8524dc5 path_has_submounts +EXPORT_SYMBOL vmlinux 0xf876cc86 igrab +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf88fff56 kobject_put +EXPORT_SYMBOL vmlinux 0xf8967ae1 rtc_add_group +EXPORT_SYMBOL vmlinux 0xf89f4a86 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8de90a9 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xf8e8cdb9 component_match_add_release +EXPORT_SYMBOL vmlinux 0xf8f224a5 get_acl +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf916ebbb vfs_get_fsid +EXPORT_SYMBOL vmlinux 0xf91b89ab fman_sp_build_buffer_struct +EXPORT_SYMBOL vmlinux 0xf91dd5b4 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0xf93aae46 __arm_smccc_smc +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf95c619b acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xf970fb8a input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0xf9710648 ethtool_notify +EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf980e5c6 watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0xf98f735f iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ae03c4 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xf9b9dd40 security_sb_remount +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9cbfe53 deactivate_super +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xfa08f4b8 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xfa1329e9 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xfa17d7b3 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xfa28d84c rproc_get_by_child +EXPORT_SYMBOL vmlinux 0xfa297415 acpi_map_pxm_to_node +EXPORT_SYMBOL vmlinux 0xfa2b640b qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0xfa3561f1 simple_release_fs +EXPORT_SYMBOL vmlinux 0xfa39b296 put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0xfa3c42de csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xfa4ebad8 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5e0905 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xfa79e2a2 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xfa851b9f mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0xfa867c48 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa8b5317 cdev_del +EXPORT_SYMBOL vmlinux 0xfa8cc34e generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xfaa146c4 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0xfab4b3d9 __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0xfabc38e9 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xfac5af0d md_update_sb +EXPORT_SYMBOL vmlinux 0xfac749bb __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacef507 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xfada2f38 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xfae00309 tso_count_descs +EXPORT_SYMBOL vmlinux 0xfaf37abf arp_tbl +EXPORT_SYMBOL vmlinux 0xfaf9fdab vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xfb0873de __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xfb0f424d __serio_register_driver +EXPORT_SYMBOL vmlinux 0xfb27cf17 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xfb332781 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb393359 vfs_rename +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb4ec644 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6b04d2 page_get_link +EXPORT_SYMBOL vmlinux 0xfb746cc9 down_killable +EXPORT_SYMBOL vmlinux 0xfb7f6409 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xfb856a17 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xfba16444 udp_set_csum +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb045bb simple_pin_fs +EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbbfe55e mmc_erase +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc976d2 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0xfbc9812d vfs_llseek +EXPORT_SYMBOL vmlinux 0xfbd341f1 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xfbe19608 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xfbe4b175 qman_create_cgr +EXPORT_SYMBOL vmlinux 0xfbe8ee28 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0xfbe9d690 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xfbfac23a inode_init_owner +EXPORT_SYMBOL vmlinux 0xfbfe0e86 ucc_fast_free +EXPORT_SYMBOL vmlinux 0xfc22c029 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0xfc2406c4 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xfc336d2e __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc386584 devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc4152fc ec_read +EXPORT_SYMBOL vmlinux 0xfc52abc7 qcom_scm_pas_shutdown +EXPORT_SYMBOL vmlinux 0xfc5c46e2 acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0xfc5f89aa param_ops_bint +EXPORT_SYMBOL vmlinux 0xfc7cbde1 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xfc7e2596 down_trylock +EXPORT_SYMBOL vmlinux 0xfc881b89 fman_port_get_hash_result_offset +EXPORT_SYMBOL vmlinux 0xfc9825fc in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xfca2912d __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc697f3 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfd3764d0 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfd5436c6 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xfd653088 sk_alloc +EXPORT_SYMBOL vmlinux 0xfd849ea2 security_unix_may_send +EXPORT_SYMBOL vmlinux 0xfd972992 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb7b9dd free_task +EXPORT_SYMBOL vmlinux 0xfdcb4ed3 acpi_os_get_line +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdf2e6c5 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xfdf70093 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0xfdf9b562 get_watch_queue +EXPORT_SYMBOL vmlinux 0xfdfe4174 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe042aa8 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xfe124833 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xfe149d9b flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe526cf9 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xfe54f716 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5e1049 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xfe6dc725 gro_cells_init +EXPORT_SYMBOL vmlinux 0xfe81e560 kthread_bind +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeabf79f netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfebf5166 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xfecabc77 fiemap_prep +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff0647c1 bio_init +EXPORT_SYMBOL vmlinux 0xff129817 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff33ab46 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xff538916 dev_open +EXPORT_SYMBOL vmlinux 0xff65642d generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6c403a mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xff87cd18 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xff9c4b56 ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0xffa9c3e5 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0xffb7c514 ida_free +EXPORT_SYMBOL vmlinux 0xffb9ab59 request_firmware +EXPORT_SYMBOL vmlinux 0xffecd42a input_set_keycode +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL_GPL crypto/af_alg 0x096df66f af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x17979320 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x22f1769b af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0x2b463a08 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0x320aa5eb af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x38f56c08 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x66d9f2fb af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x81af622d af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x8c30d10f af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0xa5a4e6ff af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0xa5d18936 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xacc15094 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xcc9d5cfc af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0xcfa2b88c af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xd489f35e af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xde1c8aa2 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf7418f7c af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xfe1a844b af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0xa7f7327f asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x7c4a6f9f async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x61fae322 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa4886b0d async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x263eff62 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x69aefacd async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x0ef9270e async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x34bb2601 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x66dc13fd async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x731589b0 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x9dfc59dd async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xdef50c89 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdf509bf5 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x235b348e cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x50bed3e6 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x19cf8a5e cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x2511a7ef cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x4a381106 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x63812b5e cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x7f14ef87 cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x7fb97182 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x93891b84 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x95ebbb87 cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xa12e44ec cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa63e6313 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xbc6c3025 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd006ad45 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xec897de5 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x08b086b3 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x1af7c605 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2bf25ee3 crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2e58acf1 crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4f92b673 crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x53f6df28 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x7df7e2b6 crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x93759af9 crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x946bf86d crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xbba1799c crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xdf6e5613 crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xe777463d crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xfc6152fd crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x36de30a0 simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x8f7287a4 simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbf2d5776 simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xc29eff18 simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x3959a1db serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x1b2e4ed8 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x85490bd9 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x8b46cf4c crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x720547b4 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x304e5777 acpi_nfit_ctl +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x34aad815 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x4639bcda acpi_nfit_shutdown +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x499bbf57 nfit_get_smbios_id +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x674e18ea acpi_nfit_desc_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x9e1f6edb __acpi_nvdimm_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0xefa76b65 __acpi_nfit_notify +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xfcad562f __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xf935dd34 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0xe5259bbe __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0xb4257a60 __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0xdf068e0f __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x4282e77e __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x8129c183 __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x33057df4 __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x436c8a78 __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6f2df6a2 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x782b3d3c __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe87eff2a __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xffde47a2 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x6f916d66 __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x852efcf1 __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0313b7e8 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0f489c6c bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x13383e96 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x236a4c27 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2610ddd2 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2e0f99a8 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x436d7e03 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x540a5b45 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5d68e03f bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x629f7ca3 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x76f1cbfa bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7c007fc3 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8516ddda bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8804cfc4 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x96247cf2 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb056157d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc29361d0 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc3bc1ca8 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc7dd2a30 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca81e885 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb8786fe bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6d44fea bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea5603a7 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xffef9fcf bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x162ff304 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2f43ac4c btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x45a18ca1 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa60eee40 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xad2c4950 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb12d693b btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb744165b btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc674f458 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x017148cc btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0693851f btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x24c540c0 btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x373e8f68 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3c941bed btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3dcacbed btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3ea0719a btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x41e2521e btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x548590b6 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5f54a080 btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x649b49dc btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x74a2598b btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x74d1738d btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9cdc1443 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xaabd6f92 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd0ec6204 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe95a0971 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xeafc76ba btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0f052090 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2a8b4d70 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x38c3809b btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4db6f810 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7aab3c24 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9a511da9 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc13a433d btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc8b1234c btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd25b9371 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd893e6ae btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe5286292 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x233288e2 qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x291f3b2e qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x89fc6ed5 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x9b73848f qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xb46cb4bc qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x0c89c8a9 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x11ad8077 btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x2ef2bd16 btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x7223d4de btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xa9060b16 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x5a3e7bea hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x716d046d h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xba81ed96 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xc937288d hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x201cdbc4 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x2be9bc0a mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x35481d73 __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x359cca4e mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3efabbc9 mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x4d3e8d14 mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6d985bf3 mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x705e4c24 mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x71f8dcba mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7566b435 mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7f185bcd mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x908789fd mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x963d656f mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa3b9d1e4 mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa63ac43f mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xacf214eb mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xd4a8bb2a mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xdd94230e mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xe3b4216b mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf06fad87 mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfacf14b3 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfdbe3724 mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x10d23587 moxtet_device_written +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x16f123ec moxtet_device_read +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0xf0a4155c moxtet_device_write +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0xfc05516e __moxtet_register_driver +EXPORT_SYMBOL_GPL drivers/bus/sunxi-rsb 0x201a258d __devm_regmap_init_sunxi_rsb +EXPORT_SYMBOL_GPL drivers/bus/sunxi-rsb 0xd1730d3d sunxi_rsb_driver_register +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0x259c6a72 meson_clk_phase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0x875b274f meson_clk_triphase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/sclk-div 0xce28c471 meson_sclk_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0000139e clk_alpha_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x08f0cc30 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x09020683 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d10c3c4 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d678ab9 qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e5f8a53 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e98da3d clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0f52415a qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x17d44071 clk_alpha_pll_hwfsm_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1987883d clk_alpha_pll_fixed_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1d58ac63 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x272f3204 clk_alpha_pll_fixed_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a9c7452 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2adddb45 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2b0d957d clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2cae96b3 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x30bbf987 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x310b6341 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3747af55 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x395868a1 qcom_find_freq_floor +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3dfc2dc5 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x405d394a clk_alpha_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x418e9cfd clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4b0ed6da clk_ops_hfpll +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5111f2ad clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x520df3b7 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x57172323 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5a6ae327 clk_alpha_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5e6abb22 mux_div_set_src_div +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x615dbb77 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x631939a9 clk_branch2_aon_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x63ee9aa4 clk_alpha_pll_fixed_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6596a109 qcom_cc_register_sleep_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x66922845 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x68199825 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6af41b8b qcom_pll_set_fsm_mode +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7019378d clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x766e9f87 clk_regmap_div_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x787e8234 qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x78b81ea0 clk_rcg2_floor_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7a7d500f clk_fabia_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7e66fd9e clk_regmap_mux_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8b55eac4 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x91c41c9f clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x97488818 clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9c8854a1 clk_alpha_pll_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9d909edd clk_gfx3d_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e33f365 clk_trion_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9f241baa clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa4c30fa2 qcom_cc_probe_by_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa6f08f9a clk_trion_fixed_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaa403ee8 clk_alpha_pll_huayra_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xadc2751b clk_alpha_pll_postdiv_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xb09ba7ac qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xba961aa7 clk_dp_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc150d434 clk_alpha_pll_postdiv_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc5bdfa11 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xce340fb8 clk_alpha_pll_regs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcf422970 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd7ab6782 clk_alpha_pll_postdiv_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xdc014e02 qcom_cc_register_rcg_dfs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xdffcf609 qcom_cc_register_board_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe6e14638 clk_alpha_pll_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe816a036 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xec88bfe0 clk_lucid_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x096aa17b sprd_div_helper_recalc_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x0a3ec278 sprd_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x14212841 sprd_div_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x1ca519ca sprd_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x37e40b55 sprd_clk_regmap_init +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x4cad4f51 sprd_div_helper_round_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x4f93d75f sprd_mux_helper_get_parent +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x597905e4 sprd_sc_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x6b8639b9 sprd_div_helper_set_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x911aa4a0 sprd_mux_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x9925914a sprd_mux_helper_set_parent +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xaf833f64 sprd_pll_sc_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xddecd266 sprd_clk_probe +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xe305cb73 sprd_comp_ops +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x28935163 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x2b9eee17 counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x2d801de0 counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x41f34d63 counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x48e99ed5 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x4a874253 devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x529f425c counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x570aa1a6 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5d2a8e52 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x6028e7bc counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x67d4b1e9 counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x71fe037d devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xb3efce61 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3a1a3979 ccp_version +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x49705eff ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x00d8f6d8 hisi_acc_sg_buf_unmap +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x05f133cf hisi_qm_debug_regs_clear +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x14d50b78 hisi_qm_dev_err_uninit +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x1ba1739c hisi_qm_get_vft +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x23cea267 hisi_qm_dev_err_detected +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2f5d0694 hisi_qm_start_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x3ed568b6 hisi_qm_reset_done +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x436a471e hisi_qm_free_qps +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x4e18339d hisi_qm_sriov_enable +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x5234284c hisi_qm_init +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x534e527f hisi_qm_alloc_qps_node +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x805284cc hisi_qm_dev_slot_reset +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x80f56022 hisi_qm_start +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x87bab07a hisi_qm_create_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x89020d61 hisi_qp_send +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x92799cb0 hisi_acc_create_sgl_pool +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x95c60ceb hisi_qm_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xad0bf83f hisi_qm_stop +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xb1201df8 hisi_acc_free_sgl_pool +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xba505e08 hisi_qm_dev_err_init +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xbf6fa9c2 hisi_qm_sriov_disable +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xc4aba1a4 hisi_acc_sg_buf_map_to_hw_sgl +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xcce55180 hisi_qm_get_free_qp_num +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xd76db01a hisi_qm_uninit +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xed1a3491 hisi_qm_reset_prepare +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xf4302396 hisi_qm_release_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xfa0110df hisi_qm_stop_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xfea89e75 hisi_qm_debug_init +EXPORT_SYMBOL_GPL drivers/crypto/marvell/octeontx/octeontx-cpt 0x32e43048 otx_cpt_uc_supports_eng_type +EXPORT_SYMBOL_GPL drivers/crypto/marvell/octeontx/octeontx-cpt 0x7c0de21b otx_cpt_eng_grp_has_eng_type +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0xeea096c1 dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dax/pmem/dax_pmem_core 0x03e90425 __dax_pmem_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x6ef7347c dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xd44bcd07 dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x43ec01f9 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x60fd3786 idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7043b693 do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x850cff1c do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xacfcf524 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc7a931ce dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd45c6880 idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x05fe78bf dpdmai_get_rx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x0cf99c2e dpdmai_destroy +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x2012e188 dpdmai_open +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x37ed1e8c dpdmai_close +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x3b38cb26 dpdmai_get_tx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x5e0edaef dpdmai_set_rx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x71f91caa dpdmai_get_attributes +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x8afde869 dpdmai_disable +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x9b4047c7 dpdmai_reset +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0xd6d5485b dpdmai_enable +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x0a33d17a fsl_edma_tx_status +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x1d4990d3 fsl_edma_prep_slave_sg +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x2225b34c fsl_edma_free_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x2be2c0f8 fsl_edma_terminate_all +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x3194f09b fsl_edma_resume +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x83e172c9 fsl_edma_setup_regs +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8841dca5 fsl_edma_disable_request +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8a4c342c fsl_edma_free_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8bbef20a fsl_edma_slave_config +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8d5f63e2 fsl_edma_prep_dma_cyclic +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x92228215 fsl_edma_xfer_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xad1a6967 fsl_edma_chan_mux +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xe3ecdd27 fsl_edma_alloc_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xe3f31085 fsl_edma_issue_pending +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xe81c440c fsl_edma_pause +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xf463f2c0 fsl_edma_cleanup_vchan +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x4fe16661 hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x81398870 hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0x7e3e0f55 get_scpi_ops +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x0e7b7015 stratix10_svc_done +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x41d5ad1c stratix10_svc_allocate_memory +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x50f5368a stratix10_svc_free_channel +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x595b630e stratix10_svc_free_memory +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x69c86836 stratix10_svc_request_channel_byname +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0xd3df684d stratix10_svc_send +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xa7c17de5 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xe6bd6f15 alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0abb0f7a dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x2285824f dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x397c297f dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x45cc8437 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x51e66590 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x69b33771 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x71e8640a dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x74d93be8 dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x98453ab8 dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa088cf37 dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa2caede3 dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xcd08a660 dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd247d76e dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd59a4a11 dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd9ae62c4 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe1eb8bf3 dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe37cd2b9 dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe57d26ce dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xea0696ad dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x1fc787ea fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x3689ceab of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4b6ede99 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x513c3585 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x7123dd3f fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x862c7794 of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x9bdf73ba fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb8e86a9d devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc3e7eff7 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc4bf73b6 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xcd17cb3e fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xdbbbea09 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x12276a13 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x3dfd04ba fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x50062fa5 fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x558cdcb7 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5c0e7195 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5d164e55 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x621b87cf fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x7f1f2746 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa3ccb096 fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb418cda8 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd050d125 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xd994d97d fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xfcde7db2 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x645b7996 fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x6e3e556c fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x7b5b75fa fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xb7d0ee37 fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xb986d3fc devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xe0fda1a3 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xf1db4d19 fpga_region_free +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x08397266 fsi_get_new_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x0ebdbcef fsi_master_rescan +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x312abce0 fsi_device_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x33d8275f fsi_device_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3a93847e fsi_slave_claim_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a57d574 fsi_free_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x72387268 fsi_cdev_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x78060f23 fsi_slave_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xac7bd6a8 fsi_master_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xaeb95d96 fsi_driver_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xb2663cc5 fsi_bus_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xbd958e6f fsi_master_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xbf23cd75 fsi_driver_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xce22aee2 fsi_slave_release_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xd942f235 fsi_slave_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-occ 0x0ca577f9 fsi_occ_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x93cf62f9 sbefifo_parse_status +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x9ac41344 sbefifo_submit +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x78a232f1 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x8ffc9496 gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x96374d65 gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xa64ae10d gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xb987fe97 gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x3c731b0e gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x5c29480f gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x61acf3f0 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x78b5064a gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xf4dc9f7f gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x655b0773 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xcdbbc844 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x3ee0dd60 anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x56027333 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x8c533557 analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xc2be081e analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xc4123daf analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xd25e6f6e analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe1167211 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe2113f13 analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xf7e43d5b analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x09340e05 dw_hdmi_set_channel_count +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x094f6fc5 dw_hdmi_phy_i2c_set_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x1461e227 dw_hdmi_set_channel_status +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x157e02b6 dw_hdmi_phy_reset +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2d1c0e80 dw_hdmi_setup_rx_sense +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2fac9436 dw_hdmi_set_channel_allocation +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x316212a8 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x3d234a3c dw_hdmi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x42926f4a dw_hdmi_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x4a9b174f dw_hdmi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x6712b5a7 dw_hdmi_phy_gen2_txpwron +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x7d8a3aee dw_hdmi_phy_i2c_write +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x822671f9 dw_hdmi_set_high_tmds_clock_ratio +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9411a1b8 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9b44a60b dw_hdmi_phy_gen2_pddq +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd4e5ef3d dw_hdmi_set_plugged_cb +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd6968220 dw_hdmi_phy_setup_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xdafa1790 dw_hdmi_phy_read_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xf5922009 dw_hdmi_phy_update_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x0d667204 dw_mipi_dsi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x41361ae4 dw_mipi_dsi_set_slave +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x42ac3b2e dw_mipi_dsi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x54360398 dw_mipi_dsi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0xdb6c6e0f dw_mipi_dsi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x01be860d drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0e8b4c7e drm_of_component_match_add +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x12c7f1a9 drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1a5eadc8 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x241f7869 drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2c90448c drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x332fd663 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3749d045 drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x399edd9e drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3fae2969 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x54217d10 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x567cf503 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5699c6c1 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x61c6d6bf drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6a74b88c drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x75531c23 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7a50f5f2 drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x84408044 drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8c1986a8 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8d076933 drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x92970b4c drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9de4121c drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9f649c80 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc3e8dc64 drm_of_lvds_get_dual_link_pixel_order +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc43cf692 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc7814c66 drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcd287621 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcd745a0c drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcdcb7c71 drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcf84b4f1 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdb90f299 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xeb431abd drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf149ca41 drm_of_find_panel_or_bridge +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf1f5e3eb drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf452530f drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf5dc13f4 drm_of_encoder_active_endpoint +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf81cc991 drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x325dcdad drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x3d07711a drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x7579cddb drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x82047549 drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xa7b8294e drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xae8018d1 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb4eb4fe3 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xbafaf137 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc5f3b463 drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xd38c1da4 drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xf18bbc14 drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xf373bf86 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x298133f4 meson_vclk_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x2c73cfcf meson_venc_hdmi_venc_repeat +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x2e6fa815 meson_vclk_vic_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x450c228b meson_vclk_dmt_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x54d01e45 meson_venc_hdmi_mode_set +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xab5bee2f meson_venc_hdmi_supported_vic +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xfd34888c meson_venc_hdmi_supported_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/pl111/pl111_drm 0x13a34f15 pl111_versatile_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x7a48d6b2 rcar_cmm_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x8ea8ea4f rcar_cmm_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xa6539444 rcar_cmm_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xb6f1f73e rcar_cmm_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x8841cc24 rcar_lvds_clk_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0xf8805b10 rcar_lvds_clk_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0xfe1df98e rcar_lvds_dual_link +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0x7f2cfd19 vop_component_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0x8ef56dd4 rockchip_rgb_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xfead7585 rockchip_rgb_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4452875f ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd8ce78e3 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe72a7ff9 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x00639cd8 __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0442541b __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0e448b7d gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1d9bb3ad greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x221d1dd1 gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x249ee4f5 greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2ccc9426 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x372a23b7 gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x395774b1 gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3d52d107 __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3e9d267a gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ef75a08 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4797e6d4 gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x501ec31e gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x51d3d3e5 gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x56f7b8be gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5ac9af41 gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5fba5c5c gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x607e398c gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6590442d gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6ca20798 gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x72b26560 gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x77a17f05 gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x77bda8a2 greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7a381f48 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7ab445e5 gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7aeb267e gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x81cd837d gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8a42aea3 gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9862539e gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x99a9de55 gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb827a5e2 gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbf0c7b08 gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc397c10a __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc99bc5dd greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcad47b1e gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcb8c92cd __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xdf50a794 gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xec78723a gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf6ee928d gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf79d5c1d gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf9dc3ecb gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xfddb8a86 gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/hid/hid 0x031d4e6b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05306b01 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09b54fa6 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3d08374f hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0x41b0701a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ceac92a hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x529f4674 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x538bf6f6 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5df12511 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6054dc22 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x63392f69 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0x635256cf hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74b4b79c hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x76bc91cb hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a1122a3 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8160add5 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x83471dcc hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8e80e4b5 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90f3b1c9 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92015b29 hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92938773 hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92a290f0 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93e28ea2 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95fa30cc hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9cb33c4c hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa114cf8 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad0bb6a0 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaefd55b0 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb0c6336e hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb259a3b9 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb96e55f0 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb99bbaad hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd1dcbd4 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc38c3575 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcab009bb hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd335964e hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda9e5738 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdc9151ae hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdcd4127a hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe0e762ab hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe34005d7 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe9ed4b9c hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe9f0b662 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe979288 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x482361e6 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x752d5863 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9765631b roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc10a70d9 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc9b4ef3e roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd9080a52 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf758cec1 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x043a2d8b sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x142d86f5 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x369cb90d sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x41c7e53c sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x75090623 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x82eda480 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x86f427ff sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x93669ff6 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9789a238 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0xb24c7025 i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x8f7e7497 uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x124ad4ae usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x89f788e2 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x106976ee hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x18fd115c hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1d1e970a hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x20b6e4a3 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x48c527de hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4e627516 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5750b921 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6da1d9dc hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x74d468e2 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x78bce8c4 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7eacc27d hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8743d788 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8de42df9 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb6d371e5 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc35c4ba9 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xee613415 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf816dca5 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf8e4cd66 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x3fc8fec8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4f8d063a adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xae57a993 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xe5821ffc ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x01804f32 pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x22556602 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x24f81091 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2de212fc pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x305b1ed5 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x319b2c1a pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4b3d6f5a pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a6c9fc1 pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5b4494b3 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x65b65fb8 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x74f732bd pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x935adede pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x96f4a9c9 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xae99b63f pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb49d2996 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd4367cf3 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd8a28130 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe5a3bce1 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe63223ff pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x21514a45 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x53186442 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x606e7257 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x67afce4b intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x7a607bcd intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb089b8f6 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xc29c365e intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfb6bd949 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfde7a68d intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0xbb0a7633 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0xbb6a8ae6 intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0xeabad491 intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x0c236898 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x19c17985 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x208d8f89 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x229767b8 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x5f51b228 stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x71818af3 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa1c778d8 stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xbc1ab1ef stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xed667388 stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6dca0238 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xb72c5415 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd17cc572 i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe4316d1c i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x1ef3dce0 i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x5d9b9b53 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2da802d5 i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x3bd50b65 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x55a4a40e i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x63ac88c5 i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x653b9fa7 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7131cf0d i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x74ba1416 i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x786069a9 i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x861bd9c2 i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x87af57bf i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8a8a6412 i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb1171543 i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb24afe57 i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xba742fba i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xbe908a52 i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xc45789fc i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xcbbff734 i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd5322362 i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd84300c7 i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe09bd188 i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe175c2cf i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf5ad06d4 i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf7fcdeb1 i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf98d4c2e dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xfe23c807 i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x11c20eee adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x3ccd5f44 adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x005ebf92 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5c1f95ea bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xd5d70864 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xd5edd3c3 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x06ac2e22 mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xd778594e mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xf5aaad4d mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xa93eeef2 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xe54231a1 ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x9ca63b05 ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0xf6eeba35 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0277df79 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x06088df9 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0b8fa514 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x520af31f ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x52c904b4 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9130c11a ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc709a2fa ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd2b0bea3 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf44b03d1 ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfb5993c4 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfc79d4ef ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x212ea50a devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x91afb565 adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x6c32f251 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x94da80fc iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9acf62ab iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe3a33eca iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x01519d23 iio_dma_buffer_block_done +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x083130d9 iio_dma_buffer_set_length +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x173d1354 iio_dma_buffer_request_update +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x3584372b iio_dma_buffer_release +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x416aca72 iio_dma_buffer_block_list_abort +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x4a57f7df iio_dma_buffer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x5136ca5d iio_dma_buffer_read +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x541121b6 iio_dma_buffer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x5f9de85b iio_dma_buffer_init +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x82ff544b iio_dma_buffer_data_available +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x91917295 iio_dma_buffer_set_bytes_per_datum +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xfd99c3f3 iio_dma_buffer_exit +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x46183c4b devm_iio_dmaengine_buffer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x53e2d3e7 iio_dmaengine_buffer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x50ea9f48 iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xcd8cec75 devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x68bf23b7 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x90f6cd17 bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x4570c9a7 cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x57b2af3e cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x7ac6ffab cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x843a8827 cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x8dbb3dfd cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x98a6758e cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xca9db81d cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xe0dedac6 cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xedc5b5b7 cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x1f2650fc ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x21f1c16d ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x6e5b9d5c ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x76bef4b1 ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x14db1007 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xad49aa63 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xc0d9e342 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x14f39aad fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x4ad9d87f fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0xb82cfe7e fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x079ac515 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x19cc5784 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1d00aa6a adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1edcf71c devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x21b5d56b __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2fe9788d adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3f0996ee __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4061f308 __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4bc5f911 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4f4bfa72 __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5c5e8dec devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x95a6242f adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe429909 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcb58a417 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfa8b7675 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0xe11cd395 bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0x9decb95b fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x0db81b3c inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0xb7f6b9d0 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0572b447 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x079cadad iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x098c05c8 iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f724c9f iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15fbbf4a __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1c801a1d iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fbe1b09 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2af71888 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d4cd575 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x324ba545 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3712ae93 iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x390b1970 iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e482898 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3eb8eb38 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3f0a0e6a iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40d9ce8a iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4604527f iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x475fdda1 iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dce7dd4 iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50162669 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd3c47d iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6913ca41 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6cd28575 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x723778b0 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x79694322 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x871d27d4 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8a570347 iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8d50171e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f600ec7 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92215d42 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c425722 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa3ac1149 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4c15027 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7854c84 iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xac5f87d3 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f26c95 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc5bf033b iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccd063b6 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd4c5215 iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd1c40076 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3cf23af iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6a5d69e iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd7439366 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfada73b2 iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xfc055861 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x91f1cb88 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x672da47d zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x7a3b1996 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x7ed34285 zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc567299e zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc93684dd zpa2326_remove +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xd07c2ced zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x194781ea rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x3b833ee2 rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x4f0c8740 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x7a777dd3 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x8889b2ff rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x969f9786 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xa00451e5 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xa4357043 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xc8034e3c rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xcbb3a934 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xde7699a3 rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf3073c99 rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf44e8d70 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x5f52fc2e input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x7f48521b matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x35b61d24 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x0c13c77f rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x1d128e91 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x35809290 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x48e7bff3 __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x91ca7e86 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xa5535679 rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xba81146a rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xc3dbe112 rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xc6d04db0 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xcc614ced rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xe7cc9475 rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xed50ee40 rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xfb424112 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5cda0019 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb97e1164 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcfa8effa cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x1464331a cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf96c5d2a cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x2a2bb96d cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x6b047fa7 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x21f32a6e tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x7829b4dd tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xb0afd438 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xfaca0901 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0e572f03 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x13e93259 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x19f3d455 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x42ea02a6 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x697cc525 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7df2dbe3 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa3e32ca6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd8837d0b wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdf4332c7 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe02ea111 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe6fe2f56 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf39ea2b1 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0x96a3f20a imx_icc_unregister +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0xe29c0dbd imx_icc_register +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0x0b39b783 qcom_icc_bcm_voter_commit +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0x2914cec7 qcom_icc_bcm_voter_add +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0xee1a20d1 of_bcm_voter_get +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0x14558653 qcom_icc_aggregate +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0x2542f6bb qcom_icc_set +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0xe2f15d73 qcom_icc_bcm_init +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0xefd35052 qcom_icc_pre_aggregate +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0x81e513ad qcom_icc_rpm_smd_available +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0xe8dbdc6c qcom_icc_rpm_smd_send +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b969da3 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3281a6bf ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4f36b3b4 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5c93c25a ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7d15c4f5 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x881f3f0b ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaa09110b ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb1bc416d ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf81a1adc ipack_device_init +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x047d5367 devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x04ebf894 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x22a840af led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2de6fad5 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5f7d7d58 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x75600223 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xbcd1b205 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xedd9234a led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x0aeaa104 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x10258a0d lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x21988c26 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2918277c lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x642c0ce3 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x67aa04db lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7b387a6d lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x9b130654 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa37f55ad lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb0d1713b lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xdf8ee5a0 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15b97715 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19b88bec __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2307b422 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b46c4b6 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b793afb __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fbf8560 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33554606 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x414c7765 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5f6a4a3e __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65fb81f0 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6b1045c7 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7260fb66 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x748968f6 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7574c715 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c8a33fe __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x96bf5dba __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa353964f __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa4682eff __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xab4c5652 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb22f8879 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbf53dc9d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc00185bc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc13b483f __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc36e201d __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8feefc9 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd8da0f0e __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9f20dee __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe9c4d700 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee603d81 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5d8bf62 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf8502c64 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x02df78d4 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0f2bb5ad dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17242917 dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4191a225 dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x431b2aff dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4661a059 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4fa53cb7 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x629d5f87 dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8f3c4b4c dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9ce981d1 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa7d73503 dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbe7953bf dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc13ab51d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc587af49 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd8619538 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdd5de3e0 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe59794ad dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x480b015f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x75ff410a dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7890d535 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x890723f7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9be8c380 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xadbefda4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf8c2590 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bdae47 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x1c3f46cb dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4a6cd804 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x317abd43 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x36fc3e23 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbaf36aa1 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xde098c8d dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdf99bdd9 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf376c2a3 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24621ca3 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x30c37cc0 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4f477261 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5375ca71 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5cf0d0bb dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7551b46e dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b6b3af5 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9290e07a dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x932a6ffc dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9fc82a9f dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd51c29f1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x0566520f cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x0589a63d cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x070930f9 cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x276245f9 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x395a644e cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4362daf0 cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5ea62134 cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x72aea291 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7896c333 cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7fdea215 cec_pin_changed +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8f1b0685 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x933e7ac6 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xab536c6f cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xac9cf7b9 cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb3895539 cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb6d320ea cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb6fcfba9 cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe0bb80dd cec_pin_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe85617d7 cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe9ca344f cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xea875d12 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xfb3a2e53 cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x29d09b62 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x36ca6ebc saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x43a86594 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8de98562 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa69473a7 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xaad65ec8 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb052ceed saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc50fed88 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcc410243 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe8a9c161 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1f194c07 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x26e54983 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8374db55 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad8e21aa saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc7ba1440 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdf310ab3 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xefb813e5 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0a36ed0a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13f4fc2d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x18a74af1 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4919180a smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4da9fc25 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5316e6ee smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x53565807 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6a412362 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7a6f21af smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b165e57 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7f2eb1c7 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8a8793b2 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8f9bcb2d sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x979082cd smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaeafb8d6 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb4dbddb8 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfab7d955 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0834aacd vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0b856965 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x2e385f94 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x326e10f4 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3391770f vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x389ceeb6 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3f623848 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4e1ce95a vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x638ad287 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6a6a23d3 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6b31d8cf vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6d3b4e43 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x78c74bf4 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8ddae992 __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x90828029 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9440cbfc vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x98b4e401 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9b9cfc9d vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9e786678 vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa086a15f vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xac65ec95 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb3d924e4 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc88264fe __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xcd48957b vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xce3742f3 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xdf209a7b vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe594a0ff vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe737932e vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xf968a935 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x31754cbe vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xf9198994 vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0x9ef5df83 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0xdbe8030d vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0561d442 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x081e9a5c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0b246045 vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0e29f6b7 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1314167c vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x166b6b75 vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x2475aab7 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x26143a24 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3155a402 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x42b05527 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x432856d0 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x5f3d36bc vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x64aefaeb vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x79a2172e vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x821850b8 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9a19616a vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xaf707b1b vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb34b6e04 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb7e9a8a9 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc0cb2a60 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc268e449 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc5b07fb1 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd355b99c vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd6556281 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd7b1de83 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xde869b3a _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xdfd33745 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xef6ad0a5 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xef795de9 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xf4f2f426 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfb84958a vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0x0df25d78 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x87f31d3f dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xa546b84d dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xbdd09eaa dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x451ec8f4 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xbfda4cc1 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0xd63cfd08 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0xc9000d71 mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0x5191f33f stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0x2087c4ca stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x505e29b9 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0x0a979bd6 aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x1b8ee50f smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0104b91e media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x03d6a658 media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0e7cb7a3 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0ef02ae5 media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x126f6b1a media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x13623688 __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1578c2a1 media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x181470b5 __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1b1330d4 media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2b3ef1fb media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2d6c6f17 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x30f125dc media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x39625cd7 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x405c335d media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x41253ebe media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x556328d5 media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x57a4ebad media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6376fae0 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x68b995d3 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6ca9db7a media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x74447ef1 media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7471fbc8 media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7efbc616 media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8c7a6ff4 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x939e6987 media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9a2b7ed2 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa382b436 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa4032c47 __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaafccf62 media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb19a372d media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb853a52c media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xbd00e227 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc408036c media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc505f73b media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc5c01cb2 media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcae6eb1c media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xccc9c158 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd1a9ac7b media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd7dae462 __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd90bfde8 media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xda2c9494 __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdb6ef8a3 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdb843381 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdbda6304 media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe65ebe27 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xea2e1628 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x86fea8d3 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0ea9561d mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x259ea629 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x44ac9b84 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5d85ed99 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5da6c84f mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x69facf8a mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7a9cdb56 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8b190da8 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x90c1182e mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x930ea6e1 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9d0d9217 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa768a659 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb3409c50 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc65a9bf4 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc91c3a32 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdb82eb00 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xece7e8da mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf1f32583 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe6b104d mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0327bcdf saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x22ff82b9 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x35ff8065 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3f439d97 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x460a6072 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5363788c saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5b4cf9af saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7245add5 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x75f2cae5 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x79143d22 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x82551c3e saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x920bf1bb saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb4017a73 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc49c57ad saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcb0e4dca saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcfe9d61e saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdcad998e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe82a2c7b saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xedd14b26 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x05d5493b ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1eb17c2a ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x492f7c2c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4a12530b ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x99ed4d60 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xb1fc82b1 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcd7ad0bc ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x5d9c3870 mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x735c78bc mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xa1093cf3 mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xdb5e427c mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xf47aaf0a mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x36b38087 vpu_get_plat_device +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x39fccffa vpu_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x485cc91f vpu_load_firmware +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x5ea40e20 vpu_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x898f74bd vpu_ipi_send +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x92af5a6f vpu_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xb71edc09 vpu_ipi_register +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xf82f3494 vpu_wdt_reg_handler +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x0a6aec01 venus_helper_release_buf_ref +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x0c4422a3 venus_helper_set_color_format +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x27b12c5f venus_helper_m2m_device_run +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x28c72999 hfi_session_unload_res +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x2b9aa5a1 venus_helper_intbufs_realloc +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x2d693ecb venus_helper_m2m_job_abort +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x2dd5f609 venus_helper_set_dyn_bufmode +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x301a30d9 venus_helper_vb2_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x3043dee7 venus_helper_queue_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x33a570fe hfi_session_init +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x35211ba4 venus_helper_set_input_resolution +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x3563602c venus_helper_init_instance +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x381340c4 venus_helper_process_initial_out_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x3d615aae hfi_session_create +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x42317635 venus_helper_get_ts_metadata +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x46b06c55 venus_helper_buffers_done +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x4cd48ce6 venus_helper_init_codec_freq_data +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x5337fc55 venus_helper_get_opb_size +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x76c1d154 hfi_session_set_property +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x76e84045 venus_helper_set_bufsize +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x805fc6b8 hfi_session_stop +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x82499855 venus_helper_set_work_mode +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x872f0ce1 venus_helper_process_initial_cap_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x996f784b hfi_session_flush +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x9f40d49a venus_helper_check_codec +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xa19967ee venus_helper_find_buf +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xa4cb37c7 hfi_session_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb0513d86 venus_helper_free_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb27399c4 venus_helper_unregister_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb5da1da9 venus_helper_get_framesz_raw +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb6cf6318 venus_helper_set_output_resolution +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb9089908 venus_helper_intbufs_free +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbebc434b hfi_session_process_buf +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xc3f7da89 venus_helper_get_out_fmts +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xcb4c6f22 hfi_session_continue +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xd14dfa2a venus_helper_set_multistream +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xd21da2e4 venus_helper_get_framesz +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xd369be24 venus_helper_vb2_buf_prepare +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xde4f695a hfi_session_start +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xded0b006 venus_helper_vb2_start_streaming +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe1dbfce7 venus_helper_alloc_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe5c76dd2 hfi_session_destroy +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe5fbe3b9 hfi_session_abort +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe72ac092 venus_helper_acquire_buf_ref +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xedc00121 venus_helper_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf164dc06 venus_helper_get_bufreq +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf1ead2ff venus_helper_set_num_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf249b20d venus_helper_intbufs_alloc +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf4c641b8 hfi_session_get_property +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xfbbd39b5 venus_helper_vb2_buf_init +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xfd5b6962 venus_helper_set_raw_format +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x3d858696 rcar_fcp_put +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x4ad5d888 rcar_fcp_enable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x5fe6f6e8 rcar_fcp_disable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x9877c29f rcar_fcp_get +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0xc1f82373 rcar_fcp_get_device +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x1c75a7f9 vsp1_du_atomic_update +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x36e50dcf vsp1_du_setup_lif +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x72e2ad9a vsp1_du_atomic_flush +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xa0eba9f4 vsp1_du_atomic_begin +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xb0b09049 vsp1_du_init +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xcb62c9ad vsp1_du_map_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xf6589a76 vsp1_du_unmap_sg +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0ad3794b xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x293a9002 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2dc8b5d3 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x4b4d79a2 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5a287545 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb17a0698 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb67940fb xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd96eb4e3 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe08e6063 xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xef7dd5aa xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x161b6ac8 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xe4ef5fd4 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x55977710 si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x630acdd9 si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x7644170d si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x84ebf77a si470x_stop +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x91cda8cb si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x087ba771 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0befa112 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ac62c77 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x40b6a9ae ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4cbe285f rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x53f25875 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x591b4266 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x64507b5e ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6a55631b devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70f30845 devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x777f5bef ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bc8ac67 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x95abcab0 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbd983de7 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc40525ba rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca71c158 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc7c1a0a rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcdd7ae7a ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1958dc3 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xec203e6c ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf9b0f31d rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xecb5f88c mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xb8b6649c microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x9410f088 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xe7a0308f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x3ec9d11b tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x340ce202 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x306ad683 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x9df975b2 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x05a238da tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x64ffb1bf tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xb4a14fa6 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x07f322a2 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xbd601b60 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x27f52181 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0d855ee3 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2a807834 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2b8c2f60 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x376a5d67 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3b84d734 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x43a544ca cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4714e21a cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x515fa78f cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x53308018 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6f027524 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x72378e63 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7e267688 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8bc0a42b cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x94b61038 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa75ae72c cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaa758aac cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc47c11d1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc7252fd7 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd41a890c cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd74e8daf cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xb8110639 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x6515d0e0 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x02333a65 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2ae9e499 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x33ca3677 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x36000948 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x49726d53 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4bf8fba4 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x552eb3c9 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5edebb24 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x72c8d1eb em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7c65f34f em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x87d484e8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x99a0e0f4 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9a1750d1 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9ba3f593 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xacb73974 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcf19b3e8 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd6a69b73 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd978984f em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5cd130b3 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x65eb6eaf tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd5b41108 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe011bb0a tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x5171d8ff v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xaf44d7c7 v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xebc71fa7 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x0da8beed v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x0e9ad59a v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3d7cc1ae v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x45a4021b v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x48343407 v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x8f2405e5 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xb8d79263 v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xba54f32e v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xc26d3df9 v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xc508eaab v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xf7465a7e v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xfb2d933f v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0x8468300b v4l2_h264_init_reflist_builder +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xa003c02f v4l2_h264_build_b_ref_lists +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xae38bf6d v4l2_h264_build_p_ref_list +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0x30b5ebc6 v4l2_jpeg_parse_scan_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xcbfdf5cb v4l2_jpeg_parse_frame_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xe8956e3f v4l2_jpeg_parse_huffman_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xf8ffd565 v4l2_jpeg_parse_quantization_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xfe634d65 v4l2_jpeg_parse_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01794ac1 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x019b8b9e v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x06faf4da v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x07f19ffe v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x24f15cb3 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x265b6e5a v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3d086576 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45453d04 v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x49eb5e16 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4de445f0 v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4dfbc512 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5313a0cc v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57c3d3cd v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58b950ce v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5a66f29d v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5e048839 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6623ddd5 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x747c7a52 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7a9763ba v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7e12d3fc v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7f476ca9 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x838e41cd v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x951112bf v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x982b8909 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x995df953 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9984b347 v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a5e70c9 v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a7633cd v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa3a992e0 v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa46f27f1 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa8eb2a4a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xabc6d6bd v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb600e49c v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc7eda12a v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc928a219 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcbf57758 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd44b09fa v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd7557c51 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdd5ff3a9 v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe0eb11fc v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeab99c33 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf6998d4a v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfdfcdef4 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xff27259e v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0131a482 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0ce07e16 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1e4f1348 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x26c115a7 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c094211 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4823a7cc videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5b88cb2f videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x65444d08 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87e9b25e videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x893c219d __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99cb4baf videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f152a76 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb0db1e3c videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc596a7d3 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xca740b2f videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xce7ff712 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe07b6e3b videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe34bbb3d videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea563a11 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec923369 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0119a58 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf78f8a21 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfc27611a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfc5d701d videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe11df654 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe70b7eb7 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf11411ca videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf3d47e71 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x1e1525a4 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x27a7c836 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x4814d870 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0edac673 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x12f3b72c v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x147223be v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x193edd98 v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a04e88c v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1b394e57 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x24703d0e v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2583e9d6 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a53ca39 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2b39964f v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2ce42ec7 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32431a1e __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x38761696 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c930766 v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4309b5b8 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43996a8c __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4a459842 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x55a0618b v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5a44297a v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5a55aa02 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c52bbfb v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x603d264a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7af42fb9 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x811bf3fa v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x81b429cc v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x853f8aca v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8a1caea6 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8e849278 __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94f52cc9 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9b4875af v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9ea37eb2 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa3b56e8b v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa8cd38d5 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa96c28e6 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xab237ba5 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb0e9fc46 v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb23292fd v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb795f071 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb8b36cec v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb98334ec v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbd115c1f v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbeaefd9d v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc07f5df6 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc1ceebc5 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc32ef5b5 v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc39e1949 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc40b2805 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc5eff3c8 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc724253a v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc729700f v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9e4a819 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd39ed1ba v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd8c0355d v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd9eba1c2 v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc740fe1 v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2822320 __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2b703fd v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xed38e288 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3405cad v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf36e895c v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf67df451 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6f477b4 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfd80246e v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x29311878 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x87769313 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xcc1e235f pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2741c0bc da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2f0a665f da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8499a8a7 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb84d3cd1 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb87cddd1 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb93b2cb4 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe7e40580 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xa142a524 gsc_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xb7abd1c4 gsc_write +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0cfc3913 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2e7b1da0 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x33b63ef1 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x538eba7c kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x74ba238f kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7c90e5c4 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf3224fe7 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfee903cb kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x0304ae18 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x62659840 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xa3494c42 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0a1270a7 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0d08f2d7 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5bae88c9 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x621064a4 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6fa5dac8 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x837e71fd lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbd74458a lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x45c110b2 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5f14f1fd lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xbbac5a15 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x06e6cccf cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x06eb108f cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1bc03bfa cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1bcde7ba cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2c412007 cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2c4cfc47 cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x349457b7 cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x34998bf7 cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x45d3d1c3 cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x45de0d83 cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x56f4aed0 madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x58f526f6 cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x58f8fab6 cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x6f743d0b cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x6f79e14b cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x76a0fbfe cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x77a14abb cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x77ac96fb cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x83b42cbd cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x85418d82 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8f107b0f cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8f1da74f cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x916c5b8c cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x982f1188 madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xcc256603 cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xcc28ba43 cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd2787bc9 cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xec17e935 madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x20f2dcdb mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4d8be526 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa615ffba mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb41a0ad2 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb89d64dd mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf4a041f2 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/motorola-cpcap 0xa226dbe8 cpcap_sense_virq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x01825fe1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x285684b0 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4243ec46 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x47fc5885 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x69b5bf72 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8f5cace4 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x903a2f20 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaac945c6 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xae308c3e pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb12eb9e pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xffbc17b3 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6e351929 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x999ed722 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x25ed906b pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x33b394dc pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x648bcf75 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x71c111f2 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9e194cb2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x43e53ef9 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xb7ec0837 devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x05fc178a si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09175ff9 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1fb4b148 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2c6bd84b si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d32bc51 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x32c95cd3 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b2f993e si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ff0f675 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x40c8593a si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x424fd4fd si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x43833203 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54616342 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6aca6fe3 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6adf1371 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7dc713b9 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84edd9f3 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x85d73d8b si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8823c86f si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x915c71e3 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c7f1e1b si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9db5744d si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa2dc2add si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa45067c2 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb402c984 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc16a95ec si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc2e07979 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc776c67a si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd596b5ef si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd8726c61 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdd0c39f0 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0189bc2 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6c9af02 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf22952b9 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfeb8436b si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x361456ca sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x52059520 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x89c7dff5 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa5a03d16 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcd01c965 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sprd-sc27xx-spi 0x41b32276 sprd_pmic_detect_charger_type +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x0fcc98a2 stmfx_function_enable +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x610617a3 stmfx_function_disable +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x27dab7c6 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x711f43c6 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xae22e167 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xeccff589 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0156d2b8 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x75fff0ca tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbfcd479c tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe29f8854 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x048de382 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd55b810f tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd9288dba tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x37a96753 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x112861d5 alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x3b94adcb alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x4341c6cf alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x70746e7c alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x9a545fed alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xb391f700 alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xe76912fa alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x02b60cdd rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x05eb3757 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x181b11a9 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x2c7f3326 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x44a49b8c rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x44f56b31 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x62ac7ee0 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6b746d0c rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x72a9e1c4 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x7cb45b35 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x8040404a rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x84044823 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9152fcb4 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x91d18019 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xa4470180 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xa9d4c49b rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xaf7047dc rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xbe729000 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xcd7ce533 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdcb93c74 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xec6d8ebd rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xf0ace39b rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xf99ab16b rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfb38634b rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x194150d8 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x27f8b12d rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x57eec2ba rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x64ce351f rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x7028ff1c rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x744a6403 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x8439df1d rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x92f55fd4 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x9daef0c1 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xa9e32cf1 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd8c71ea9 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xf5c9ab3f rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xfb51f524 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2fe63be1 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x5c153f09 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7cafdb17 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf08ef06c cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0cfd2754 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1048e320 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x21fc947e enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x221a66d2 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x43e47be0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x53208fee enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x60629933 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd281083d enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x06515370 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x35d44a39 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x50ca0e47 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5accd338 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6d53284b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8c8860a8 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xced5f5c6 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf8deecc2 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x3b77de4e uacce_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xaeb803c8 uacce_remove +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xff196cf5 uacce_alloc +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x8fcdbdbc dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xb6dea8bf dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xc21a5909 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0x0260bccb mmc_hsq_init +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xcb6d7c3f mmc_hsq_finalize_request +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xe9db3127 mmc_hsq_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xfc611f5b mmc_hsq_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0x2efe52ff renesas_sdhi_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0x55ed2eea renesas_sdhi_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0209224d sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x09b17de8 sdhci_execute_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x09c271f1 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1a0241dd sdhci_set_power_noreg +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x20308ad3 sdhci_cqe_disable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x23b3e6b4 sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x25dbde88 sdhci_set_power +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x27baad9d sdhci_calc_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2fd2443b sdhci_set_ios +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x31fe7716 sdhci_dumpregs +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x350351de sdhci_request_atomic +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3b0b9478 sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4ae13566 sdhci_cqe_enable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4b432cda sdhci_setup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x540f6ff1 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x57b403c4 sdhci_send_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x58628799 __sdhci_set_timeout +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5996c5ad sdhci_reset_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5c231183 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x725ae38e sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x898c4517 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8b527846 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x97e104a0 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9a24bc03 sdhci_cleanup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9d9c672c sdhci_switch_external_dma +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa01666f1 sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb13f84b4 sdhci_adma_write_desc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc0b78fb0 sdhci_enable_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc4a400bd sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcc04d583 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdb51750d sdhci_cqe_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdfba158b sdhci_abort_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe37dfb7f sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe3f3e884 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe48cc46b __sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xee789bc7 __sdhci_read_caps +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfb58cf92 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfcd56f32 sdhci_start_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd262908 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd6d88fa sdhci_request +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xff75b147 sdhci_end_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x143d3c44 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2023832d sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3c382807 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7824a29f sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7fc3ea44 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x932cf2c5 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa21a9e5a sdhci_get_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbf8067f1 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe1a0cbfb sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x0cc54f99 tmio_mmc_do_data_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x3bdccdb6 tmio_mmc_disable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x64273672 tmio_mmc_host_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x736a9f0f tmio_mmc_host_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x89ce0558 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x9add9e3a tmio_mmc_host_runtime_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xa8035b7d tmio_mmc_host_free +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xb9497f88 tmio_mmc_enable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xf99ef928 tmio_mmc_host_alloc +EXPORT_SYMBOL_GPL drivers/most/most_core 0x01ed51c6 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x1e401ec8 most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x367b2868 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x6ec3add2 most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x70166a17 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x7b774a4e channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xcd6d524a most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xd28314ee most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xd653f86d most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe3519242 most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe9e7c016 most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xefb8e3ce most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xf4d417f3 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xfdcbe45b most_stop_channel +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7dbb7855 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x80a55dc3 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbf8c782b cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6cc800b1 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9f31cf37 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe16384e7 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0ef6a9b0 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0358611a cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x33710905 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd03ad421 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x01a1d3a0 hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x23076a1c hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x008d99e7 mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01f1cb4f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x042ffdc6 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0e79a263 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ee8395b mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x102e7fdc kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1cc4695a mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a939209 mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x327e6045 mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x43312d05 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49593b13 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x548e8c51 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x554aca38 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5590394e mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x55fe0183 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b50430d mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6024c796 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63edc705 mtd_write_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6af373cd unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x77557835 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x780c9bcb get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7a802f3e mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7b918484 get_tree_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d7458e4 mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e32c1de mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d56b27b mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9721656c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9956878b mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9f529101 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa065f37f put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa06ff2cf get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa4b64777 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xadcd8e68 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae3ce498 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae56ee57 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb3fa1418 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5f345b5 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb672638f mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9f77933 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcf12f8d mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd29be86 mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbe2a06f3 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc0451c1c mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9db585f mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd4c5103 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd67261dd __register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe53a7801 mtd_pairing_groups +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe62c1ea0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1b7335b mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2d6d7bf mtd_ooblayout_free +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb16bd23 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc18c0fd __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xffd3ac2a register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1952b2b9 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x24086a4b deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x62020648 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb4e461c4 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe2e00efe add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1812171d nanddev_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x296b8c30 nanddev_mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x2b7aea05 nanddev_bbt_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x2ff28ee3 nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x76e9abeb nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x8237d93c nanddev_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x831f1b19 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x8ef54c01 nanddev_markbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xb1b98348 nanddev_isbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xe9d767ee nanddev_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xedefc0b7 nanddev_bbt_update +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xeef4c35d nanddev_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xf79e9109 nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x17a3631c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x7dda9b7c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0xb19b6ba4 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0xc7823b22 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0xe6545b4c brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x22557291 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x00be0bbf nand_read_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x06413a4a nand_prog_page_end_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x074c0ced nand_prog_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x1a69ddde nand_read_oob_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x1bd30627 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x1e0cb74e nand_soft_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x1e903ad6 nand_reset_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x27cd28c5 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2915b87b nand_change_read_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x3b13af30 nand_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x3d4c0d5e nand_gpio_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x45b17417 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x47e7dca9 nand_select_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x488cee09 nand_decode_ext_id +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5eebc665 nand_readid_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x6ce3b2d4 nand_status_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x6ee64aae nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x73e82765 nand_change_write_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x9f8d52db nand_read_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa6d22a75 nand_ecc_choose_conf +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xb1daeeab nand_deselect_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xc06bca47 nand_erase_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xcaa610a0 nand_write_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xe4243fc7 nand_reset +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xff70a689 nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x3677aeb1 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x69178ade spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xe7e99601 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0a73215e ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1403602e ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1717dac5 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18accca6 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x211a938c ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x36c76376 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4588eb34 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x77b303f8 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x823115dc ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbc107a58 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc5a81db4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc7fb619e ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd9b97079 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe9da04bf ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0467faeb mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0c091f18 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x27c172e8 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x4130ef0b mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x6cf67548 mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x868ff4d1 devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x9d32ef21 mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa12d1b4b mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa7897576 mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xb8918696 devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xba03f3aa devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xbbe4ece3 mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf017341c mux_control_select +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x1a76deb0 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x58eb0b98 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/bareudp 0x4d430bc9 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2a1c2514 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3b63b691 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x60944d75 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb344e7d8 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe195db1f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xeeb08bc5 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x628384fe unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x8ace034e register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb6cd36d5 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xdb5d754d free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x013f25e3 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x11155927 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x148300c1 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1fe39417 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x232ea672 can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2b0760e8 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x337ec9f8 can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3f24ef1f can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x49d49543 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x528052a7 can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x56216152 can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x57eee8d5 can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x5eea7125 of_can_transceiver +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x63bc5aea can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x68ed06cf open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x81688fc9 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xaaefb73f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb1dfab60 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb95d814f can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc392c22c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc4bc6f90 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc6665f67 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc9fa6166 can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcb5770d0 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcbeb7e18 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd0357cde alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x1e038238 m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x33815b86 m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x481dc1d1 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x4ec7351d m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xa2ac06a0 m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xbc6f18de m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xd27b5e78 m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xe2c8de53 m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x02fbe2c4 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x1da95320 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8ab00356 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8fe28579 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0xde4f2386 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x0a1b1197 ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1ea20828 ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x3d08be3c ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x4cde348f ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x585ddd14 ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x6674612e ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x684aa919 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x80ffa9fa ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x9039b895 ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xc1fe1930 ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcc3c710a ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xd4dca61b ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe71f93e5 ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe80e553a ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe8c432c8 ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xea41a6a1 ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xfcc6df03 ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x10120cbb rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x130af631 rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x140773da realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x40bcac19 rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x55703241 rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x58e2ae98 rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x78c6990a rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x8c942915 rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xaf517724 rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xb32d7bb4 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xb6236bc8 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xbbd5316b rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xc698a90a rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xd9abaeaf rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xda4c70e9 rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xdb30015b rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x78a3a27d arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x9ebfe077 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x21eb642f enetc_mdio_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xd73f2141 enetc_hw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xd9d61d6f enetc_mdio_lock +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xddd34e7e enetc_mdio_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04c44589 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05436e7d mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05ed9739 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08274c7e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0839157b mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0992d584 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b0de281 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c4e3d11 mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10ff467e mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x124c84ba mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12d49a4b mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x138753e7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x160c951c mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x196b5763 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c7835d3 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d98e93b mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dccc6bb mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f42a656 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2141cc2f mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2747fe27 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28501a0f mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30b90f02 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x353e3fc7 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35bd9084 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36da0d3b mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39b94164 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ae17114 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c1051ed mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41c16a8a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41cfc310 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43f53ba6 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46d72ea0 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5423b326 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x570054ef mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x570c0dee mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59073efe mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5917283a __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ec2339f mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6213e4f4 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x636151db mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x645c3719 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64767fcd mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cd04361 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d1a85f2 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70f0cf15 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71e6ae2b mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x735031cb mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7426cb11 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x743a28f1 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77af20d2 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b4dc939 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d71e885 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d91b1a3 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8610db10 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87d23e86 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89348cfd mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b55b468 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ba30f1f mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8bd08d2a mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c2f4f4f mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e732b0a mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x908196cd mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91a13fd7 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95fa8345 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9787cd2f mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x989e2ccc mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x990be7f7 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9be29772 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9cc76b06 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ceed0af mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9df5d5c9 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9efd0646 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa449723e mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7ddaaa6 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa82c9aae __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa92b8e72 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacde096e mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaede6d45 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb37c5508 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3ba9f48 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb45bd052 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb55b49dd mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb64c0f8b mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb878ba7b mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb99f68a7 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbaf04c84 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdee9e6a mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe40168e mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbea058d6 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbea88d7e mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5ea332c mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7dc4630 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8d8ec68 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca2b49f4 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccd2e717 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd07420e9 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd59fa473 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7c9d3ed mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8f5d6af mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd98c35e4 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda656483 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf0f735b mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe138d141 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe24eb4b3 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe32a67b9 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6ff8462 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe70067c1 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe75fe2b9 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9ed2592 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeccf1e0e mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1ad9ba5 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2b19562 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf48da3e7 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5756859 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6a15a68 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8c753fb mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf96cbb14 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9f55612 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb9c4ed9 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcc26482 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfffbc819 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04077a2f mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07ba064d mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08282f58 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x096c5d3d mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12821589 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1370d223 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17daffbf mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1abb463c mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cb53bdd mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21f48df9 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x220a22f2 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28379ca1 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x295b3f76 mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e521ba3 mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3752ce27 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e8e4f2e mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x484f6aa1 mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d32c783 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52d4aeea mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52fd21ef mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x536ae5b8 mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5461f269 mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59080c9a mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c022206 mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x639aa483 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x654d6807 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x735ce8f8 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x745d9eed mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74cd0e7f mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76e4b2e2 mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x775f6ac2 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bf593d9 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cd6d4d4 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81bf177f mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81c52f15 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84fc6772 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x85f1e625 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86523768 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x929e4e01 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98aa3146 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b6e0021 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d3a30be mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fa4be86 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa62b5846 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa963d431 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab542487 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadbec722 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae43204d mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3c33679 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb76dc4aa mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba3f23c8 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbab0a213 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc91d86f mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf5b1a79 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1b1e82d mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3940c9d mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6a017ad mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd347bd9e mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1b82b66 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe3501a36 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe661a0d3 mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6ebd7aa mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee1f836f mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef7e5c94 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1f13148 mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5432624 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5fab400 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf64e4663 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa4a9733 mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbe862aa mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff22058d mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xcc4fa41a regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe494472e devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8c8c6c2 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x80e31bba ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x92bd6566 ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaad294cf ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x0b28a9ad qcafrm_create_footer +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x2b6ddf3f qcafrm_fsm_decode +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x41da0375 qcafrm_create_header +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x038b3bad stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x75e4d8ae stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x9ded38f7 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xb69c74a6 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x479da3fa stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x74f01d7e stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd15ac8f1 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xdad27612 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe45fd84f stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x405b51c2 am65_cpts_ns_gettime +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x48eebe3b am65_cpts_prep_tx_timestamp +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x4b45152d am65_cpts_tx_timestamp +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x587a43c0 am65_cpts_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x91fd3558 am65_cpts_rx_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xb60b988a am65_cpts_estf_disable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xbfc83e4d am65_cpts_estf_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xfca9b9d9 am65_cpts_phc_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x55f1b477 w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xb23027e9 w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xd1599c0a w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xdf70d07e w5100_remove +EXPORT_SYMBOL_GPL drivers/net/geneve 0x4d1a789f geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x62adfbf2 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x7a708246 ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xb477a458 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xc9690a72 ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xdf90f1d9 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/macsec 0x1fc60094 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4de9b852 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x517dc4a1 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbd8a7e69 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xdc1b5e9d macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x10eb14dd net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x8b7ace8d net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x007d8a25 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x024e8ca1 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0c4c4eba bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x12cb54b9 bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1ca245b9 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x21cb36e5 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2d321cfe bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3b326ba5 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3ea6842c bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x53f855ee bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5c00b864 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6a1340c2 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6b2fae55 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6ffe867c bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8d34b306 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8f09ee89 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x916aaf86 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x969562d0 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa28c1526 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa4e7340e __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa5fd2bdd bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb74765e5 bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc1932594 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc2555ef7 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc6e319c4 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcda2e10b bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd37a87c3 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd4204719 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd6d45705 bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeaecac48 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xecf21fc1 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xedc17040 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xfca5330d bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0xaa58a332 mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0xb33e5319 mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x37000956 phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x445dc03a phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5d33a4d2 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x67676c5b phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x753e86eb phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x9ddcf946 phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xb7482f8e phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xbed7e522 phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x1101e6ed tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x3e719c09 tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0x48145bf6 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x4e00f564 tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x8a65983f tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0xa3b8ba38 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xb0f1682f tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xb6e08c34 tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xf83f9b34 tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x02159122 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x52403e28 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x52865dd9 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7309ceeb usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe82e258c usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x32f2e88c cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3c01b50e cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3dbb150c cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x476e5f19 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x47f4808a cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7bd81d42 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9f59b840 cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb7a4a8ba cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe2590bbf cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe541501f cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf3ab74fd cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3becf59c rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3e5b9d9a generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8ecb5eec rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x98f396db rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xad7bc2e8 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe39e54dc rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x02d6e56f usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14d1d623 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x15a648d7 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1738d45a usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20f1088b usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x26b9edc7 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2b3881ac usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ce7f8d5 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39b050e6 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x447924bb usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x455ec443 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4850de76 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4b1889ec usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x515a0878 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x65b0e298 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x724c4dc8 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x76b86085 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c97dda0 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84d33015 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8a7ea35d usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b4f6025 usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8cf825fa usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9c3c03c0 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa40ae0d3 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcdda615e usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xce266ff2 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd331ecd4 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd3c5248a usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4b5a3a9 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe862dc40 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb25cec4 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed5258bc usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf0476259 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0eb77a65 vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x19b913a6 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x21fe1c7d vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xfd648995 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x062cc799 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0f50be9c i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1f3f8717 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3282f1a5 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x42909077 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x480a6955 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5036e84b i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x55b13278 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x757f7aab i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9ff5d994 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa3900d9 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb1b9ec17 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0bca98c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdcf4e4c6 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe21c9580 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe4844853 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0xde5a2b49 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1b0dfcb6 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3967c9ae il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4206e2f2 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x99014b0e il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaf784cae il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x06351e3e iwl_acpi_get_pwr_limit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x074b1bc2 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x08bab3a7 iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0b855f79 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0f7bd2e9 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1332e4de iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x147dbda7 iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x17303a4e iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x18c77e90 iwl_validate_sar_geo_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1d523abd iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x22453c63 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x249555dd iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2710c362 iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x29b811b5 iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2be78bec iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2cf49ecb iwl_sar_geo_support +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3206993d iwl_acpi_get_mcc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x32f03cf9 iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x33f70da8 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3f25995a __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4070d94e iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4319fc72 iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x48180624 iwl_sar_select_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4e4d68ba iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x531672e6 iwl_sar_get_wrds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x53cb02b0 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5988395c iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5d75e91e iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x603e5590 iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x62ca089a iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x68dfc470 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x78118e3f iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x78765854 iwl_acpi_get_wifi_pkg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x79cf0e3e iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x81533968 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x84d7de52 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8664b388 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8b303683 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8b54aefb iwl_acpi_get_dsm_u8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8beb86f6 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8d57bb60 iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8f7df03a iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x976d767e iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x97f5cbfc iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x987109e9 iwl_sar_get_ewrd_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9a04aa04 iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9f359038 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa4b68477 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa66a4f79 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa6f3b88f iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9b3baa7 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9d510ad iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xabbc1a5e iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xaffff133 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb22fea1e iwl_sar_geo_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb35b8683 iwl_acpi_get_eckv +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb3988616 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb406715b iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbc798480 iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc2016b6f iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc3cc26b1 iwl_sar_set_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xca402c7f iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcc79846f iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd852d55 iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd914e00 iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcda9b947 iwl_acpi_get_tas +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdf56ee3e iwl_acpi_get_object +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe0eb5838 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe3f8d1c1 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe75b7e77 iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf0b44fc2 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf1cde8a5 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf87e055b iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf88964e4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf8b12eb9 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xfd404f13 iwl_sar_get_wgds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xff167a64 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x3836073e p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x5ceb2821 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x7251a2ab p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x9bc20404 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xa465f0c2 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xa848ee8e p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xad3c3c9c p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xc1e4628d p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xc2b6a1c8 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x0fc2b38b lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x2786c297 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x2c7595cc lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x2ef0ce0a lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x4298a5f5 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x635b9918 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x72df8aca lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x90c6d5a7 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x92b40e06 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x94da38d0 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa725f66c lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xad9e5934 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xafab9874 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xbed4dc9e lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xc1f8dbef lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf95bdcc5 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x2d4e06ab __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x4968a3d0 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x7a0c3940 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x85c02f60 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8a210249 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x918556da lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc2c0d967 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xda100f7e lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x0e137596 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x1aba402f _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x26f98427 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x3fc7c348 mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x44ebcb02 mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4f111dda mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7c631622 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x894f389d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x95948a0c mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa7d3ec08 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb882723e mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xbcd113b8 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xbdb72e1b mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xc8f07b0f mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xca73d3e9 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xcb6b9bd6 mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xccd239d4 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4d08bed mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdc5265c5 mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdf532769 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe305f1d7 mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe834933c mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf0c68cf7 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xff7e8cae mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x07071f9b mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0a84c23a mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1084e5ff mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x139b746f mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x13f04e18 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x148aeb01 mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1925fcad mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x192aaa8a __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1b8f7e2b mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1dfb633e mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x22f1ede6 mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x26c09eb7 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2fe3db43 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3154d392 mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3509d67e mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x35ac68e9 mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x35ee06fd mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x379c7003 mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3ad888e2 mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3ed0329a mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x403c0f9a mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x476e0d41 mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4cfbe652 mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x526f87ab mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x57e12bba mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x58cc051c mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5977541c mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6d24fac3 mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7574d763 mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x77d5b6fe mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7a08987d mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x88ef051d mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x899bff90 mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8e18530f mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x90fe1f93 mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x94c2d612 mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9569227b __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9aae74bd mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9bde58a1 mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa03df343 mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xad32bac1 __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb020bb32 mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb464e022 mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbcb86ee3 mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc5821d2a mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc5fc58a3 __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xca401f1b mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcb96e2a5 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xceb7a34c mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd675c774 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd68bbbd4 mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdbaf1db5 __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdbe37ce2 mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe42048c5 mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe7d44cd9 mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf123d135 mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf568b0d0 mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf608a756 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf816e034 mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf8804aba mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfb704d85 mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xff94b674 mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x3c11ff85 mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x489f0e13 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x4a2d2b7d mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x7ced0904 mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x87577c47 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x9731eb04 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x9e766471 mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xa761f564 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xd3c63e6d mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xe4160634 mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xf4c9aa24 mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x009c2ced mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x099f96f1 mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1400d8d0 mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x17b0384d mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1b381b48 mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x25657c05 mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x265cbc4d mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x269adfc4 mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x34c20782 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x37f69a02 mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3ce96725 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3d95ff6f mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3edc407a mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x400e7392 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x40fe1da2 mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4dcce3c2 mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4fe8436f mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x55c81983 mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x57ca385b mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x76570e37 mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x777dee3f __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8ecb5c3b mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x912598da mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x937455ed mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa54375f1 mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa9b075c1 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb27edfda mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbcc58a7c mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbfac3dfe mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd1e95695 mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd41f7e39 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd7588738 mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd8ce345d mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe227189b mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe5592725 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xee488f02 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf54b7432 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x4bc813b4 mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x9ce20663 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xc8b1ea26 mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xdefeb0bc mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xdf1f474f mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xe6c2c401 mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x01af7634 mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0437118f mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x07401053 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x088aa81d mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0a48bb56 mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x17e5cd6c mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1d0a6154 mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x23d0042f mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x241b26b6 mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2b57b59f mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x33348594 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x34d0ad71 mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x36a86c5e mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3edeaa3c mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4344a4fc mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4496fd87 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x46454b46 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4ba2f04e mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4ddb017a mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x52d61df2 mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x54752797 mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x56c245c1 mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x57b8a0fc mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6159111d mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x62dd5eb5 mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x63fab57f mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x67e43c71 mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x70f0001b mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x75bf2b91 mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x77f84a6d mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7928cbbe mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7e84efdb mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7f677365 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x84c5a26e mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x896acaf3 mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8ac41d43 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8b2dd140 mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9227d534 mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9347d348 mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x942e108d mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x98f9dab0 mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9dc6fa8b mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9e781feb mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9f71d080 mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa45ebb2b mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa7b9ef8d mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xac3fb3ca mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xad48e7bf mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb5311fd2 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb71b4fc5 mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbf5d3739 mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc2730df8 mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc924d569 mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xce93d14b mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd63c5e27 mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd798ba9b mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xda2e38b1 mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe66fcfbf mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xeae18e3c mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xec7e742e mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xefab5a17 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf30d6bc7 mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf9d92f2e mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfbc7e131 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfc7bbf75 mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xff217445 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x27a5f9e7 mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x3870ce32 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x3cf457de mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x4b7dcf3f mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x6e259251 mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x7444c131 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xb6128268 mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xdac66b6f mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x111b3b13 mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x17f505cb mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2d354e78 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x387618b0 mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x3d0354e0 mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x73517234 mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x790bd6c5 mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x793a967d mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x8a4b40ee mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xa1519a0f mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xaa3ba1e5 mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb81edafe mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb9e16098 mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc41386c4 mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd6c6cbe4 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd873974a mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe4e01fd7 mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe8e8fdce mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xf11914d3 mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x352e104a qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x49578868 qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x51784865 qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x8b07bfaf qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xbe9dfc17 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xd014114d qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xe930a3e6 qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xfeea5e32 qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0c4d3fe4 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x14ae31f0 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1b235f7c rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1ec2f8c5 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1fb9da86 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x24a4a38c rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2a7800da rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2ad29d5c rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2d642828 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2ff999ec rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x31160db3 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3cc06366 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3e68d71f rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x40ee8104 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x43170742 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x45a00dbd rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x51db7770 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5ede32f0 rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x638606ce rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6a1992f1 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x77a715d2 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7b8f50c0 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x84c7110a rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8a09fab3 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8ba42836 rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8ddc3149 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8f7a4f23 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9a559553 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9e611459 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9f36a0f3 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9f36cd48 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa4c50d54 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xac67baec rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb3c29fec rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xbb563d72 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcf86407a rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd14e816e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd3e0d913 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd430364e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd66201ad rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe9146c17 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf52dc2ce rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xfb0e5c7d rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xfff1a8cb rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0530ccb7 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x14051480 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x20b408d5 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x49a827cd rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x4f617fb8 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x62ef034c rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x735f2c6d rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x73a96eee rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xaf4c48dc rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xbdaa2337 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xcfd9840d rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xd10b19ba rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xd6e23c18 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xd8479418 rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xdc825089 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xfa272a71 rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x07d27b73 rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x07e20199 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x099764ff rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x11966247 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x1e1a492b rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x258353ea rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x28f198d3 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x30c5cb23 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3327152c rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x346bf624 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3a719080 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x46c3d901 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x49e94736 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4e6735f0 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4eee6471 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5155ecad rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5a9dd7c1 rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6075cbbc rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x638e6f5f rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x73d40d72 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x76a5699c rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x802b56ad rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x817c7d03 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9f4c2014 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9fce81ff rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa2fe2c3e rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa35548b2 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa5535152 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xac160caa rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xac8dae24 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xaf8f1acd rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb0c572de rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb2a0ad96 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb501068a rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb5206867 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb8d25043 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc9002777 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd1b7e55c rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe0fb00af rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe44aa16f rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe4c11a73 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xed35c81a rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xee162260 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xee88c204 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xefa7208a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf54891ed rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfbe6d05c rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x02d7f80a rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x1286aa7d rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x2498d9e2 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x2e979751 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x76e3289a rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x346d49ef rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x76d3419f rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xf14dae67 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xf9085cf4 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2f4bcfb5 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x34b6678b rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x37770c40 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x3cf13a4a rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x40064e69 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5bcef582 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5ed0cb4d rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x7ae2a595 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x851a25e2 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x93b65dde rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x977cc9a4 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xab5f90b0 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xac104f29 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xad98d2b1 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe8a03c02 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe9ef5aee rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1e9c03c3 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4d058f9c dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8259bd70 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd502af49 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0920c09f rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x136fdc77 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1b241460 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x22caa57d rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2ec64498 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x39ee9827 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x41458894 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x52036490 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x57998348 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x67e065ef rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6852bc3c rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6a120973 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6bc939ce rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8415f9c5 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8e7b8eed rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa00e805b rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xab40621b rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb4edbda7 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb58d447a rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc659667c rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcc437843 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xccd71f69 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xce563056 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe524ffb6 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe5890f33 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x00273dc2 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x02122ff8 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x075b4449 rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0cb1a548 rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x10022643 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x16beacd6 rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1aa2663f rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x23c0aece rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d32cdfc rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30325839 rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e94cd48 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x53917e10 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54197035 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5fbc7cf7 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x641aedb6 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x671eb503 rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x72fb4859 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x74f3eb76 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x92b829cb rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9dbce1da rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xae02e78e read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb3ffa812 rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc14be7a1 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd5563347 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec99ba01 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf117d72e rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf24e5b55 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0a6bb3c7 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x314d85cc rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa1628b4c rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdfd2fc9e rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xefc4c993 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x26c3bc61 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x4afc1824 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x88b83b2f cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xbc3e9126 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x71d83efb wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x88078681 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x895f2a42 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03dd7bad wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x057e558d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05d83fb9 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07e9e01e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0ef6bcd9 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14549b24 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14b74812 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d1c0dbf wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2621a135 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2edce186 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x349172e3 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x407346a5 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x44d60458 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x56b1490f wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5757e943 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x62f503c8 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x745594e0 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76266eaf wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d794d95 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7efc2a96 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81736d06 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85498cd1 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8aeee7cf wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b775479 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f8d43ff wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x922b0510 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x933d7aae wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93d23c29 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3646b4f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa751db4f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8abb04b wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb574c703 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb822a657 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbd6a3285 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc25589f1 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc2a041cb wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd8dc27e wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce9c05b2 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2761cc5 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd30068a1 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd143dd9 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5ea2686 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb969a35 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd007afd wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x40ff8cbd nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x486fb8ef nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x88dd6c08 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf6c705be nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x45405057 pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x60329059 pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x6b827cc4 pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xad25b7d4 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xd8558d41 pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdc5a616d pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xe329b809 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x19a085b1 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1a93e7e5 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1ed89794 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x45539f2d st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x52922b71 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x89ab7a86 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x953defd9 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc00f020f st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x26e177d3 st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x9034d39b st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0xf8ded5ef st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x1cb65d7c ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x52f93ce1 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x7526532f ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x0c58bfb7 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x43a22b4b async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x05b2f9cc nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1379d967 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x14ec02ec nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1f09f15f __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x381494f2 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x38ed1075 nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x39fdbc5f nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x48bb8f1c nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4e0f6953 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x54085d0d __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x65224a93 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6c455064 nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x713af3bc nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x73c06eb8 nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7a1a2cd5 nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8a9c70ed nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x91ba8adf nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x969e0e76 nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x999c0701 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa299e0c7 nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa318d1d7 nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa54d93aa nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa8219f8a nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xace91e56 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xae49a884 nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb0547662 nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xbd8c2d5e nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xbe1816e6 nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc15a67d8 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc72a05f2 nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc73ac21d nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc8a3e25a nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcb74e538 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcf2178d1 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xddb52245 nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xddf0c113 nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe82c3ce0 nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xecabbe04 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf165fbde nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf5b644e2 nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x1e7bcccf nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x1f739d9b nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x204051c5 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x21dfaa59 __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x4463b5f6 nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x4dd57df8 nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x79df4564 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x7daefdb3 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x865c0333 nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x879d0dcf nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x8c2e8070 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xd86b451d nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xda00f1cb nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x2a25d787 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0cb23515 nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0dd31352 nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x236376e5 nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x2c8c2741 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x54938499 nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x5dd2bea6 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x97b0efdc nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xba187464 nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xe7acecdc nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xe8929603 nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf66fd9a0 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x2a759175 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/controller/pcie-iproc 0x6158dc97 iproc_pcie_shutdown +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0xf219660e switchtec_class +EXPORT_SYMBOL_GPL drivers/phy/allwinner/phy-sun4i-usb 0x1b0db8e8 sun4i_usb_phy_set_squelch_detect +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x1cfec83f get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x326cd58f ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x3ec66656 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x92407330 ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x9a7b1651 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xc51f8f8f ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xcc42c547 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xd2672f5e ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xdf80b6e5 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x61c93695 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0xda5cc78f mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0xea276360 mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x578cd6a6 cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0xae29eab0 cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x094fad2e devm_reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x36d57281 devm_reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x593b0316 reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0xc34bc723 reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x6501e5f0 bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x928b06dd bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xe8c7ff32 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x23874fd5 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xe14bd799 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xe5d20eb2 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x24867d40 ptp_qoriq_enable +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x24b7688f ptp_qoriq_init +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2e4ec2f4 ptp_qoriq_gettime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2eae82b0 ptp_qoriq_isr +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x6a733ca8 ptp_qoriq_free +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x8a4cd9b4 extts_clean_up +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa3900106 ptp_qoriq_settime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa8b2c8f7 ptp_qoriq_adjfine +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xb19b1269 ptp_qoriq_adjtime +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x54836fa4 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x776c1e19 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8346fc3b mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa02b7c25 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xeaa5656d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0fc95daa wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x414b0b09 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x74adc864 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x825e3f9c wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9143a08e wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfc4d56ae wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xcf4dace4 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x036fd12b scp_get_device +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x071d6ae0 scp_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x48eb6209 scp_put +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x4bd33236 scp_get_rproc +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x6e9dc2ec scp_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xc0d772e9 scp_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xf5c61535 scp_get +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x09313652 scp_memcpy_aligned +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x4a84febb scp_ipi_unlock +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x97bd0d6d scp_ipi_send +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xb42d6ab4 scp_ipi_register +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xe4566f12 scp_ipi_unregister +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xee21907e scp_ipi_lock +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x0ba3addd qcom_remove_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x31bfd40e qcom_unregister_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x5049f3e8 qcom_register_dump_segments +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x86a84622 qcom_register_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xa0963ea4 qcom_remove_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xb2f21e49 qcom_remove_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xb852d7e9 qcom_add_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xd65f4d68 qcom_add_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xe953f958 qcom_add_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x1d6e896c qcom_q6v5_wait_for_start +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x3934191f qcom_q6v5_unprepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x5258c5ab qcom_q6v5_panic +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x617efe95 qcom_q6v5_init +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xf0c6a662 qcom_q6v5_prepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xf7fde3e8 qcom_q6v5_request_stop +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0x62796cc7 qcom_add_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0x81e50cd9 qcom_remove_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0x8de5c6af qcom_register_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0xa879ee39 qcom_deregister_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0x4a3f460c qcom_add_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xa881c6fc qcom_remove_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x86903274 mtk_rpmsg_destroy_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0xe9fb9791 mtk_rpmsg_create_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xd4259372 qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0x72dd75d9 qcom_glink_smem_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0xe792b118 qcom_glink_smem_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x01168e03 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ba3a9d3 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ef1654b cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x22d079d3 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29f72dfa cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b1b416d cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2dd5c48a cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32a49e28 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f644182 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46bd561f cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x47196117 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4eb76900 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5959db9b cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b6b9220 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e0e3d66 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x649ff8c1 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x68513a8e cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6ff33169 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x73aee05c cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7541e862 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76141451 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x768a3aa1 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7c9fd068 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ebc42dc cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdad600 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x800ff53b cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x891b8bd6 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89cebb5a cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8fac2dfb cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9bcfd788 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa5cf9e36 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xab77f213 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafe8edc4 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb15e7019 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb71485be cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba663205 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd8ec387 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc818694e cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xda17939d cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd3a0819 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe36ae3e5 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xedba97b0 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf1e65163 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf771ff83 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x106e22e4 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x124e6d20 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31241c62 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3ade87be fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6140d2b5 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7b4275bd fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89e099ce fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ffac098 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x93099f52 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9342376d __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa8167e73 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa9e1fb10 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaad01a53 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb555c411 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbad18c50 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd1b4d5a3 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x08710cec fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x70158ccc fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x036e79b1 hisi_sas_slot_task_free +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x0b582c3f hisi_sas_release_tasks +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x1dcfe2a1 hisi_sas_controller_reset_prepare +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x242b99ef hisi_sas_debugfs_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x2545de33 hisi_sas_init_mem +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x269e661c hisi_sas_phy_down +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x297d373e hisi_sas_debugfs_exit +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x379bb5f8 hisi_sas_sync_irqs +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x3d67010d hisi_sas_probe +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x3e5d1313 hisi_sas_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x3fdf7546 hisi_sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4b04175b hisi_sas_get_fw_info +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4c569ddf hisi_sas_notify_phy_event +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4fc22123 hisi_sas_stt +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x52d092f1 hisi_sas_scan_start +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x562c1814 hisi_sas_host_reset +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x5b50cfd2 hisi_sas_debugfs_init +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x64505961 hisi_sas_controller_reset_done +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x693f2f74 to_hisi_sas_port +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x6c5c5fb9 hisi_sas_sata_done +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x84a21868 hisi_sas_alloc +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x8c27ff02 hisi_sas_phy_enable +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x9b807c91 hisi_sas_get_prog_phy_linkrate_mask +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x9e7c96a6 hisi_sas_free +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xab1d8386 hisi_sas_stop_phys +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xae9f942d hisi_sas_remove +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xb03aa9c5 hisi_sas_rst_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xc3a41131 hisi_sas_debugfs_dump_count +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xe330cb74 hisi_sas_sync_rst_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xe987d9aa hisi_sas_debugfs_enable +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xebfae55c hisi_sas_get_ata_protocol +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xfc17a31f hisi_sas_phy_oob_ready +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0494d840 iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2318d0e9 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7bc22244 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7bd4cf05 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc4732131 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc5eac448 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd81a3ec8 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0300e8fd iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0858a2c6 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b5c5c7 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17e1a9d0 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17f9cf32 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x290523e3 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x32fb95e0 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c69a2d3 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f8b9855 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x449e2434 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44e3bc5a iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ca54372 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53d9bfec __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57834d37 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60adf14c iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x691b4a6a iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6921c370 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b6fdaf1 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b99c5f6 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a8c01b3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81b0b19b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82ff390d iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8dc5e573 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9609c6d6 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9985c618 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9de4dbfe iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fdb6c51 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa49438a iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac72be05 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafb5b9ff iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb63afffd iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3d25da8 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc7e3ab44 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc838af0b iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc882ab5c iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb44721b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcfc3c654 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd3b622ca iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe622d79f iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee77d3be iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1172cc2 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf30d455e iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x32d06247 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3ef64ef0 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4d1dd8fb iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4d8c98de iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x504a557c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5d499231 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x625f6df4 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x63b4509c iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6d826f2f iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x80aec6ca iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8818a301 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8e4a3ae2 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x98132e2a iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x98ec68d7 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa6730a5d iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd22bdb08 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf18fcf1e iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x002eccaf sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x07ab2c53 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32b1708e sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x373539c7 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x482f98d6 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4f1c135e sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5ba7a734 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7ce5dbdc sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x847d9ed5 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x863cce8e sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8a1e5dc6 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8a6f2de3 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9d26b358 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xacac11b1 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0333e02 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbe43c806 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb121fbc sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xce9b128f sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcfd9658f sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdac732fb sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe0728875 sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf20778ad sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfcb5454a dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xff90ff27 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07d4f7ac iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0bde03b7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d2aba66 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x248e2a0e iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24e122a5 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x257a8750 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29ceb98b iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3027df1d iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3133dc5c __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35eb2dc8 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x36b6a32e iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x39321d13 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x472e2951 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47867762 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a5c2d05 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e30f75e iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x592bfc71 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61dd9392 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x837e7366 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86fe22a4 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cc241fc iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98612658 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9d3c93e4 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa017e296 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa9d648c5 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaac3519d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea92c90 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0b7eeb4 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2cb0f5a iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4f7db9a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc03308fa iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc094850a iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd2cc5f3 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4697d5b __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc28908c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe03d8858 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4f8c1f5 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5fc69f3 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee8b87dc iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0915f40 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf26171e3 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfcacfb2b iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd7e6363 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe314aff iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x262004b9 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6dbb46f0 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8720f3dc sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbac8bab4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x09802d14 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2852a4d6 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4bbbc1d9 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x54427168 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x593750d5 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb76da6eb srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdaba8f37 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1179c402 ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2b7bdd5d ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x46d396a5 ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x4be9fefb ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x4bf8cc16 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5ac0da6c ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5c1c7ae1 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x6c9e61e7 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x799740d5 ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xa7726d4e ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xaaf07893 ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xaccf6117 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xb2a8166e ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc8c4a319 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xe5e69315 ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x0278eb6d ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2695ad83 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x374fc275 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x49a74098 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7043666c ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x828c1601 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xca07040b ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x3481246f siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x48ef9701 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb9ce9a7b siox_master_alloc +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xc695e68c siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xc72a3854 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xc9f13e8e siox_device_synced +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x054246ff slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x10ecbde5 slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x135e60de slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x17e1f88d slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1c9eb931 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1e9ad323 slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x22f6f985 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x49a22c21 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4c0115de slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4d0defba slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x537c21a9 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x5397862e slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x599aa2fd slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x652befe0 __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x6dc5112c slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x72450401 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x76127e97 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7b4164ab slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x87279226 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x880ad330 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x91711290 slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9aa49fb4 slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc0d38d4e slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc33513bf slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc9b5c396 slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xef0e8df5 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x494128eb meson_canvas_alloc +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x673c5a86 meson_canvas_config +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x8b855933 meson_canvas_get +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0xfbd79150 meson_canvas_free +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x0261cd01 dpaa2_io_store_next +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x0ab37baa dpaa2_io_store_create +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x1b7c4023 dpaa2_io_service_rearm +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x2dc0841f dpaa2_io_service_deregister +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x2ea89927 dpaa2_io_service_pull_channel +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x2f10852c dpaa2_io_service_select +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x3f8992eb dpaa2_io_service_release +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x4994345c dpaa2_io_store_destroy +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x6560c60d dpaa2_io_service_acquire +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x736d3b3f dpaa2_io_service_register +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x79cf65a1 dpaa2_io_service_enqueue_qd +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x8edafa55 dpaa2_io_query_bp_count +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0xb9e81961 dpaa2_io_query_fq_count +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x30d2b052 aprbus +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x412c8d08 apr_driver_unregister +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x83b6bba7 apr_send_pkt +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0xd6671c35 __apr_driver_register +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x03c9a66d llcc_get_slice_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x0679b34d llcc_slice_getd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x7e773088 llcc_get_slice_id +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xad3516c4 llcc_slice_activate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xb534ec76 llcc_slice_deactivate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xb68b1300 llcc_slice_putd +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x5db77c83 qcom_mdt_load_no_init +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xa1c6a5b9 qcom_mdt_read_metadata +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xd86c2234 qcom_mdt_load +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xe8a3861c qcom_mdt_get_size +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x4247a986 sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x7b91aafe __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xa6a8fce7 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-cadence 0x42ce98dd sdw_cdns_debugfs_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0x23917790 bcm_qspi_probe +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0x8114c233 bcm_qspi_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0xe2cbd231 bcm_qspi_pm_ops +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0ffb2105 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x19f430e4 spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x95a32156 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x97dff2ca spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa654968a spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbcc89136 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x4ea8dedb dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x899028b5 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x961b2310 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9b36c225 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa12856ef dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa7110416 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc95f5d19 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd015bd3f dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe563d111 dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x0a2ad623 spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x3459645e spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x552331e6 spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0c2790c4 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2f0e5c74 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x39293a20 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4213868e spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x559e6f41 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x623b20ca spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6eb25f89 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7847485c spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x886b0692 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8bcd5b70 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9045d746 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9cbe2d1c spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa904b590 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xafccc789 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc65ea45d __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xce3c9849 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeda1f625 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf0dc4945 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x853004e8 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01a1b4b8 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1bc0026c comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c8eb6eb comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e8b8313 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f6215d1 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x30639a07 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4904ef10 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b9228e8 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5196c175 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54a33517 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5951d6c4 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69c82042 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6f5a71b9 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6ff40f05 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7918bea5 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7a47587b comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7d887db8 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f73b074 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8f9dc076 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9605cd7a comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x977d6118 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9f87309d comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa66da5f6 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xababa48e comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4c7a6cb comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc73d2c5b comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcbf8ecf7 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd693f16a comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd74d650d comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd79a2001 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe026b091 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe107a39e comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe2766d14 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe3c6d694 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe58fdc77 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc82ca94 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x263531c1 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3104bf06 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3e7671bc comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x843d8234 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8fd11537 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb3d65cf0 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb7d69458 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfe4ea249 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x27fd3d08 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x59fcc9e0 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x60a31ea1 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x87c0ec18 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb901318f comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xca33f63e comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xfeaecc92 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x4b0e0c0a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xa5da426d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x5c42c5ed amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3684b105 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4b851c10 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x60c7746a comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6a662e61 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x724f342c comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x76b9360b comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x797554a2 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x89b39e35 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa0cb11e6 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa7bd19a0 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbfba95a9 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd77d8cbc comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdc95568a comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x2a8bc865 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x9c361d84 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xfa9f149a subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x87d54840 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x09b040b4 mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x18aa04e0 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1b7d5858 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x21dbfb0d mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x321bfc2e mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4996e1ae mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x53528e06 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6fd3c060 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7be7a87e mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x883aee69 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x99c2ba8c mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaf10ef8a mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb44bdc76 mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbc09a07c mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd4cc9bb8 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc8ce827 mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xac33f74d labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe3135cc2 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x01550702 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x05eb27b9 ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4fbe9e03 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5b60889e ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5c489efa ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6bbc59ff ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7ec94d08 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xaa1f0fec ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbc008800 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcccbbaa8 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd19773c8 ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xda53fd97 ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdfa09641 ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe65953c2 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xeeea8042 ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xfca50462 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x01e21c6a ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x06cdf73e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3d50904e ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x55109a71 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x905a6596 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbb955f97 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0945ae37 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6f82e434 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x86299acd comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9268d39c comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa614b8f6 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb33ada58 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdc9f36ce comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x27ea0dde anybuss_finish_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x321ab283 anybuss_client_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x43858ebf anybuss_send_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x68791429 anybuss_recv_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x7562b925 anybuss_write_input +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x772607f0 anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x96bb0069 anybuss_client_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x9706da74 devm_anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xae83819d anybuss_read_fbctrl +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xb0f4f0b7 anybuss_start_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xc33798db anybuss_set_power +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xcb9b64d6 anybuss_send_ext +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xe57e12f3 anybuss_read_output +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfce879ad anybuss_host_common_remove +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x48c8f8d8 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x79bf65bb fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x8f26c370 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xe54fe06f fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x0c3ea7b5 gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x3a996d7b gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5ed5d0fa gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x6695eece gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x71d9c2eb gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x77399693 gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x839d7b19 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xa05b8bb0 gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xa47bd50c gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xcab11710 gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xd1760c56 gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xf690a243 gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xfd0da165 gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x196917b1 gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x1f1813d7 gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x2634bc92 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x2e62d574 gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x4229756a gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x492ed1d1 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x60c8c885 gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x897ef1f3 gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x8b735a6f gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x9183c56f gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd667e90f gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd77fb178 gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xe77023bc gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xa95cfb4f gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xd3253735 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x73604d02 gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x99f11db4 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x4ef03d79 gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x952596a8 gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x13965887 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x09d3f6ec nal_h264_write_filler +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x3b825582 nal_h264_read_pps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x8383145f nal_h264_write_pps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xa2487f58 nal_h264_read_filler +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xd3e0489a nal_h264_read_sps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xf30c8c83 nal_h264_write_sps +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x115655e9 amvdec_am21c_body_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x14eb8b1a codec_hevc_fill_mmu_map +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x17f0e0a8 amvdec_write_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1cb1e6d9 amvdec_am21c_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x26517aba codec_hevc_setup_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x2e721855 amvdec_write_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3e8bb814 codec_hevc_setup_decode_head +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5c0ebdb8 amvdec_write_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5d9f5f18 amvdec_get_output_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5ff35ee8 amvdec_am21c_head_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x6424a40d amvdec_read_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x7139bafb amvdec_add_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x8249660c amvdec_set_par_from_dar +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xa8951419 amvdec_dst_buf_done_idx +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xac1aec24 amvdec_src_change +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xbc9814bc amvdec_abort +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xbf9ae18d amvdec_remove_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xc3028024 codec_hevc_free_fbc_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xd0244cdd amvdec_dst_buf_done +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xd02be5a1 amvdec_clear_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xe25e495a codec_hevc_free_mmu_headers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xe2fcf617 amvdec_dst_buf_done_offset +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xef4d5772 amvdec_read_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xf19d1be3 amvdec_set_canvases +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x17f56951 spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x325b459d spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x36df09b0 spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4d96e0d0 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5335e710 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f9b26f8 spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x63e3ff6c spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6e29ebe1 spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x75a5f80d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7b6a7aa7 spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9db74b45 synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb734cb9d speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc2056b3d spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc2d6e86f synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xccab1170 spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xce3f61f9 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd93829dd speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf56c4e52 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfaaeee02 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x2359055c host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x2bbbc9bd chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x36c65593 wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x464c53d7 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x50d28f53 host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x8166bba5 chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xbf0dd1e7 wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/tee/tee 0x145da236 tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x229b5d03 tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0x27173b57 tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x35d18e6f tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x3da2aa1c tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x40736b33 tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x5e17a62b tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x5f043c25 tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0x64557202 tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x684a19a1 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0x784864b8 tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0x88cf4ec8 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x89c43926 tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa462c433 tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xafe22c3a tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb3e67962 tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb7207f1c tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcd2f6ac1 tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcea3471a tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0xe6a8ac53 tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf8eae984 tee_client_close_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf9c17f19 tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0xfc537518 tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xff0a7881 tee_shm_put +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x0280269c tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x04ea56e9 tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x1edec226 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x30870fee tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x32b24ee2 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x3c01aeeb tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x3fe3c46d tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e5064a7 tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e64bdfd tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5312f748 tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x73ad2acb tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x785eb82c tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7c43871a tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7f235768 tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x903edba1 tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9580b4ab __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9a559be6 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa288e137 tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa3d2b403 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa7ec422f tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xbd4d1d7d tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xddf08896 tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe590cf26 tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf76028c7 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x0404e5b6 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x3acb0ed9 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc1a626c5 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe0646cea __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x2d62f056 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xecd4e5cc usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x904e07ca hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x9597f5fb ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xb0d99aab ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x23935c94 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7049f52b imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x719d09ab imx_usbmisc_charger_detection +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa384d94c imx_usbmisc_hsic_set_connect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xe8fe5096 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xff313a02 imx_usbmisc_hsic_set_clk +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x15922cee ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5ef93e36 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x668e1f2c ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x962c0438 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xac4a2280 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xdc82b5d9 __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x24888f71 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x449705d5 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x573ce539 g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x6d832146 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x9de86636 u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xff011cd0 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x22401c93 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3f41e700 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3fe27c6d gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x40429c1a gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x470e92d4 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x67c4af6c gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6a4df70a gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9660f95b gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa4b696e6 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb3acaae2 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xca6ee99b gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd84f19b3 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdc1617e1 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf0ca038b gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf643910e gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x222055f0 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x3c9e6cd5 gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60db48f5 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x64a191b7 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc0a01527 gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe03690dd gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x358d3a32 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x57f469c5 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xeb13a23a ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0658a15d fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b75ff92 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1c99c2ea fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x31813b39 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3b690ad5 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x42a9ce20 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x505aad04 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5a3c192c fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x68f215cf fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x70522f96 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x75d0b0bd fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8d2d19fc fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd195fa9e fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdee0a9de fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xedee970e fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf984cad5 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf9e13bf4 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0c3b628a rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1e0bf603 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x22c64b2f rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3db3934f rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x54f6fdaf rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6b7cb4d0 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6db460d4 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7ee114f3 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x83cba92f rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9add842c rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa76a9c41 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbd96a295 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbfd573df rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf5838cea rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfa92f62f rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x084b03f5 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x18e99812 config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d50590d usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2593a0c3 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x26c7b899 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x276ae248 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x37e593df usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x41b56e8c config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x41e4f8eb usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4b34b0c0 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51b2b6d2 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x540887be unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x55391886 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6136c479 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x658a487f usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67551f0a usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x680428f5 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7a4a93d2 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e644fa8 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ecc95e1 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ed27bd3 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9952c2cd usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa39167d7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8ad13ae usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xae2a5ee7 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb14a5e00 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb775db55 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xce946077 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xda865acb usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee011b19 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf28939e4 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd4a68e8 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x12b74710 empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x2d148a4d gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x4746af86 udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x716b2d87 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x87c5d494 udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x8ce62a35 udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x8dad8c3c udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x9ca92697 udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xcefb1361 init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0210d999 usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x05818f50 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x07243717 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x088ef424 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x164e5c24 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x35f8ab63 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x47e3000e usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4a843352 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x511f508a gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6376349a usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x78c2a378 usb_gadget_frame_number +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9b647fcf usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9e95730b usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa2dff914 usb_gadget_wakeup +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb1ee6d0a usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb239afec usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb60b12f7 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xccbee7c2 usb_gadget_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd8cb7aef usb_gadget_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xde4a9fd7 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdeba68f2 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf4b81321 usb_gadget_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf6ce8cb8 usb_gadget_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf95037fe usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfd95439c usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xae9690cb renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xf9fa1630 renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9c06aedc ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xe5bfc2a7 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2307fa78 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x24c10364 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x29934698 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x30885336 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x48f96563 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6e2121bb usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x87dc314c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcbc63fff ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd082c170 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x167332a0 musb_root_disconnect +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2734197f musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x5e1a510e musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x7ad750b9 musb_set_peripheral +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x801712ec musb_set_host +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x9997e342 musb_get_mode +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xa652d85d musb_queue_resume_work +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x3df2e086 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x498eff42 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x7c6d3165 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xd7891440 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xf615641a usb_phy_generic_register +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x77cc15db isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x443b1afb usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x11ac1a2d usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1289bf27 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x13255fa2 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x167e0bfc usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x174dfcef usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x287c5fc4 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2a10a70c usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x33e486d4 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4d476e0a usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5087cb2f usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x530404d0 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x53934315 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5514d2f3 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x64cb2fa3 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x67f6fa2b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7beca44f usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7f0812a5 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9a0758fa usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4d26269 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd69cf2d1 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb7f7cd0 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x0b8e00cf dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x3d9370cf dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x22c449cd tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x2fac6461 tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x01748e75 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x045bed21 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x09eeebbe fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x11098ae8 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2a6ab845 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2ad2ba58 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3379f744 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33a486ce typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3ec2b639 typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3fea3d95 typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4c839aa4 typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x52f717c1 typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ffbd4ff typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x62976d9e typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x67e55dc7 typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6eda4260 typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x835ab094 typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x86633ad9 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x86c97a95 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xafa807ea fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xafdf52c2 typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbc4b9e3e typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc3878a78 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcdeaf67f typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd19c1174 typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2d688b9 __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe9321257 typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeedcfa85 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf4942c62 typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf78d15cc typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf8fbb5eb typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xfa07a76d typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x01cdff93 ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x219b15ef ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x8ece9262 ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x96a301ef ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xba641a29 ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd1a100d1 ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd2c4cdba ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf080d4d6 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf92c5c26 ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf94fe9d5 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x079744b3 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x21f90516 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x320b4fd9 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7d818094 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7f0268cd usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x81dd8a42 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x83fab829 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xaa635ed5 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc24cd093 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc9cc3010 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd0cd11fa usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd2723de0 usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xeb8c2301 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x47653693 __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x62ff1f28 __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x83819268 vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xcc1896d7 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xf695e819 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0x8d69528e mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x3e428034 vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x6be461cb vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x91a860d4 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xbfa6c6df __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x265ece98 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x60a634c4 vfio_info_cap_add +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6996a0f5 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x781cfb01 vfio_iommu_group_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x839d3ff3 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x87de0644 vfio_external_group_match_file +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa03ca872 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa79dd6e6 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf054be3c vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf9193d50 vfio_iommu_group_get +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xfbb32704 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x41f0ab88 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x5a836655 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e96ff70 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x170ceb8b vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e4859f6 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f33d7dd vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2183f519 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2468cee0 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32b59325 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x387ff1a4 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3b36d852 vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45f6b817 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4df461c2 vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4fef6341 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x50c5b5f7 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x578ee66e vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5da63aa6 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5f0caa04 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x65b681d5 vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6986e1d2 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7fea26a6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x82c1b122 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8782137a vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ba8049b vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x90ad4b9a vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x97afcf45 vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa2970fb5 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa4055988 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa72e6d5b vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa960c930 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xad0fd6ef vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb48a9491 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb4d9bd18 vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb9808727 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbe4c7e1e vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbfee1996 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca7572e4 vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf24c064f vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf346bd3d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf34d4a5d vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5bdd51b vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x01590fbc ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x40c141e0 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5dc7fe7a ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x902bb51e ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc2569967 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd36e3054 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe2d39942 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x69f61581 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x398c697f fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x89016e3e fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xde4107a5 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xe344563a sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x44695321 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5f86ea68 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x624c4932 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x642d429d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x89a8dd33 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8da610ad w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaa483325 w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbdf51522 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf761d74f w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfc799a19 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe5839f7 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x4053b5bc xen_front_pgdir_shbuf_get_dir_start +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x57970947 xen_front_pgdir_shbuf_unmap +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x5eaf9fa2 xen_front_pgdir_shbuf_free +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xa7ba92a2 xen_front_pgdir_shbuf_map +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xe7fab11f xen_front_pgdir_shbuf_alloc +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x10a11e92 xen_privcmdbuf_fops +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x864d1d23 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x33806996 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x35bb97ed dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xacf1e8eb dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4e974622 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8ae99fea nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xad567a04 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbdf42e6b nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd973eae6 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe25dc92d lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xee7aa4a0 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x031dad71 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x033f608b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0396d9d3 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03bc9670 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x045b4491 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x055ea7bd nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x056eb6fc nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x098b66c1 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0cdae10a nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dd4b2be nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ea96e29 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10f31585 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13a58672 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x164f80e9 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ad83572 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af9c1dd nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cd17c9c nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dbe4147 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e07cd26 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f03b11a nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20416e0a nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d2c771 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23651858 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x236f1cfd nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24a37cc1 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24d0d1af nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2549fa01 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2638f0fe nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28cd0617 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33730904 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35f48d2d nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37c7e556 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37d88b1d nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x383aa27e nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a539d89 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bdb8680 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d91d8f7 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40370f7e nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4320e7d0 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x436af62a nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46154145 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f0dec4c nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x504f9cfc nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5166643d nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x534b5594 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53d5f2f5 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55811336 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56c0bfde nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a923239 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dbee31d nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6062d914 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62bb10ca nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x696daef4 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ae7bd19 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bf8f6c1 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f195dec nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x701fcda6 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70630cdf nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7498f002 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x749be3ef nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74f4f8a8 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77972d2c nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77db99f3 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7975d6d6 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79d5d1a0 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a107643 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b31838e nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b5c0d0d nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c564194 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d618d8b get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ffcec46 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80593974 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83480f91 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84cb1c02 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a630822 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c01d13a nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f76fe51 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92aca929 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x945c141a nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95c6c3d6 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96262598 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x971032dd nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9720801e nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c4559b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98dc74c9 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99729393 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9aedd2ce nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f346f6f nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f482189 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f74ff58 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa637a687 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa67ac282 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa67cb2fa nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa723f085 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8abcded __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9301d3f nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa5c9ed2 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa7ccb9c unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9fde04 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabd46a39 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb598ccff nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5cedcee nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f5c91f __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6b2c88 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc050e8a0 nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc50e9ded nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca1f2376 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce6feed5 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce87b189 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfaf1dd6 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0f9fd57 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd13d0651 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd33d8847 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd985c6c3 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda5ae381 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe77904c7 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec2cd65f nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed7717de nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee596b23 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf177756f nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4451f22 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6b209da nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf731f48f nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf875cc68 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9203edc nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf932a772 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf98d5848 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfde06a68 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe4ed9c1 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff4843a1 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff7097b5 nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x780be796 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0765f9ce nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08db6442 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ade27ae __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bed1e81 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0fa38f8b nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0fafb057 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1441baac pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x158c475e pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163831c3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cdde079 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x208f5c30 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25100c6b nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26127570 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x304319e6 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31852b43 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32cc1a13 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39ac52fe __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7d84cc __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ee85249 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40bc3c6d __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43918ac7 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49ed4f29 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51db8ca8 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x55b871f7 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x561b82a3 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ad94d8a nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5d4c589c pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x655f8562 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x66d1d1e9 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71102dd6 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78ecf37b __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7985fb09 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x79af0369 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7aacff99 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80f33b6d pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x812398ac nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81bc124b nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8228d750 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x847b3bd5 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8536e034 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x85b5c948 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8c3687e6 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8db239b2 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8dd14a2d nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x943eb4d5 pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9564df45 pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96432153 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9680cbe1 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x994fba2a pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa319bfee __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa727880c pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae2d8e37 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2c09436 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xba5c2ad6 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc16c045e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2b4cc1c nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc321575a pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc38bad85 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc552f083 pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc969c117 pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd0e8821 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd35c99e pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0793226 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6ed7dda __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd746324b pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc29230a __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd24e1e2 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd7094db nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf05942f __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdff1f401 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe136638a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2bdf0aa pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5de5e63 pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7169845 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe75b32b1 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb9b3cf3 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebfa3ba0 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed40d456 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee960d9f __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8938e14 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe65d3f7 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x19530797 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x97d9ab87 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb4352803 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x1bb542a8 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x8c559828 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x729625b9 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x84ad4c2d o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8fa9f3ff o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x93df95e0 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa0f25b0a o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb81f6d6e o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd2bd0f30 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0c6e264f dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x2cee263f dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x51649635 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6a922181 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa52b8876 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc758e213 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x24ba511e ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5a88cd4b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x95a0465b ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe720eb60 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x96d760c6 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xc3d2aed6 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x57029c52 unregister_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x90c11c52 register_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3b137dd9 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb0f13c68 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe21c9c32 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL lib/bch 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL lib/bch 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL lib/bch 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0xeaf3cb23 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x39e8fa4b poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4370baea poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4a833012 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x002943c0 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x6f495013 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x0fe4c32e lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x797e7211 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x2337125f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x510e7aaf garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x5b1c35a6 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x68111615 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x7579a200 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xb54ba4c7 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x00470017 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x151a477c mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x3f0edf0b mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x78ba4944 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x8431b4ef mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xfd4d2d97 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x6dda8b9d stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xa220e7a3 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd4ad6342 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xe4c8d03e p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x4af4c4dd ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x25fe355d l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x34901b94 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8291957c l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8536b1bc l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8776eaf3 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb0a01828 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb212025f l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc2525f57 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf9c72ed1 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0xd4e07eef hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x07aefad3 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x11b6109b br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x157a9950 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x26b3e1a7 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2cdaf894 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x33835d9c br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4c0d1d20 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4ffdd99c br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x65d5e343 br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0x86fd7141 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0x87cb93c0 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9615c7ae br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc4979b9b br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdf5b4314 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe3e3b904 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf3dba507 br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf62d32bd br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf64d5d5a br_fdb_find_port +EXPORT_SYMBOL_GPL net/core/failover 0xa0ba0805 failover_register +EXPORT_SYMBOL_GPL net/core/failover 0xbc0fd9d8 failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xe8b11ac4 failover_unregister +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00c9b9c2 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x05d1dc7c dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x16be05dd dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1c76a90a dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x258bf680 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x40e2fb43 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a80889e dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x514657fa dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x519ed45e inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6cd072d9 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x722630de dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x739aaace dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7bbabac4 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f6e08c8 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86a66ae4 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87bb27e7 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8826f763 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9439929e dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x957b2a60 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x976ed831 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a3e949a dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e9c8d9f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa11a8122 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2624a42 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa94483ba dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb50892a5 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb5a82939 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb9195fee dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb91aa36f dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3b6a26c dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc60772ec dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7551d16 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6081b0c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd8a85841 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe28ef738 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe679ae09 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0886599f dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6488abd4 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7e0f74e2 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdd3cf7fa dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xee99c163 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf1c31315 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0d066ace dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x12681609 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x12e089b1 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2216b7ff dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2d1432cf dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3993f795 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4c27b635 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5b3e1923 dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7b30119e dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x8754db81 dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x8e5f2831 dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x907bebae dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x90a7debf dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x94285183 call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x94536a3e dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa99752c1 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb9bb3e5a dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xca7ba564 dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd3ae873e dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdcc8b1a6 dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xde5b9343 dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xecf5ec25 dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf3293cab dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x2c67e896 dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x35964864 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x44425e96 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x73e0ca27 dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xa89436c4 dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xc0b5b401 dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xefa21ec0 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3f93efec ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x523d13e4 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa72d88af ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa9f0b951 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ife/ife 0x0562c577 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x545f1143 ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x0d09b4f9 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x79cd698d esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xe81d1996 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0x225e8f12 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x797f754f gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x22e0d285 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3f58e143 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x477e06d3 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5a0106bf inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x67cc23e5 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x87dc1e89 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9d8df444 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa66f794f inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd61715c5 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x5f1977fe gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x05f4946a ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x337a125e __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3efa3653 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5bba6b3e ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5eb7c74b ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x669036a4 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x68133d0b ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6ac3a536 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7d043b1c ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x90e960e5 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x97d427db ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa8c4f1a8 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb23e72d3 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb86445d0 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe632a5ad ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe6630eb4 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf8ff5dd7 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x72b3707f arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x3f729bef ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xc175bd1a nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x97ace5a7 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0d584c2b nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x151ff70e nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x88f7e9de nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb5bbbd1f nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xba87f4b3 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x9d42fe22 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x2ef214a5 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x7734448b nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xfef24543 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x6f0da450 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x795412ff nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0ee6a583 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1d4bd1dc tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7c7792c8 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x87c9a9d2 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaa69bc21 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x45c89809 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x77003bf4 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x93d97da2 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9ab2d163 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa87c89d9 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa8a077af setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xae1b153b udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xba150d1a udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x197d4acc esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x593644f6 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xf0fdcb1a esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x152788b2 ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x45ea6cc7 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4cb8a0c2 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x61822fec udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x7a809251 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xf903caec ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x01817c2a nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xf72d691e nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x3ff47b17 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4752a17d nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcc616da2 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd5240eb5 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe69c0276 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe6fc2ce1 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x1a255f4b nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x6fbaddb1 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x80234832 nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xb99624e0 nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x416af6c9 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xc1a0dae3 nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0cb27e00 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2b331555 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x36b2e05d l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x393371c9 l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x406400f9 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x477fe9aa l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4aee05f2 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6cbb7b1a l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x73f2dcc8 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x85dcab0b l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x91994a73 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9b269e5f l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xba113908 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbfe27a0 l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbca1985c l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc1ef31bd l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xce3dbc7d l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xc6379b99 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x12a79ed8 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1c95d1a1 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x503c5859 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x514926e6 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x52b6215d ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5372688a ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x57b0414b ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x61a151e5 ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6b20a793 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x77467a3e ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x88afb5d9 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8b03e849 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb4b646f3 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbf4cfb0f ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc10ab3cc ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xca4cc09c ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd3e2f8b3 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf55d9eff ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x198670a8 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x4388d383 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x455ef061 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xabd1a13e nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xf6a8686d mpls_dev_mtu +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x159874fc ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2313f5a0 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x31a77e96 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3e4d80de ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x46e6fa52 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47072428 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5347e986 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x57a8e6db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d50d4b1 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9599e712 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x95e81307 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e325635 ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa90be446 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbe370140 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbf1c7c60 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd3621d1 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xea08de45 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfe1b254a ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff31bc9b ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5f45f3e3 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x645600dd unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6ebebdc8 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xcc0f2618 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x05c70c04 nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x17f65b0a nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3ff55ad3 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8c4cb9c3 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x9f04507c nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xba3d52b7 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xd1ab36c7 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01ae54b5 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01ee658b nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0451e6e5 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045e2d51 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0554c4e0 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05b33aeb nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0637e13d nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x072759e5 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x107bbfa9 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x175727fe nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x185f27a5 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18684813 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x192be82f nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e196b2d nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e4102b8 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2256dbc0 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ae44697 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ae4e66a nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c56d15c nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x303f2c8e nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35a50b0f nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3821bb93 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ae829b2 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cecc7e6 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4242fd99 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4415b9ff nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48a8cacf nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b8d2a9f nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c545f04 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d0bdf0b nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52f867ba __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54aea453 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x575296fd nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x617a1d57 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62480218 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6543fc7b nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70785673 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71d8fc07 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7aa9512b nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7be5e382 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c5ba890 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e109e7f nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8043b1b8 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84314796 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8611df66 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x878f81bb nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x890f165f nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89489e8b nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c3807bc nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99d15b8b nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb7399 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7fdb23d nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa886875e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa942a25e nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa95ccd26 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9c14abf nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab884bb5 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabebc203 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac0ba8d2 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad006b65 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf0847f0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb148c377 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3cfe60a nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7f8311c nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7e31043 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc90feead nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9e92e20 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca570313 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc8b00c2 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd26b9776 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3519c05 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4948df6 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6f74afe nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8218652 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba7326b nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xded1caf3 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3812b2c nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb399f3f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebbc96e9 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedf13e6b nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee76040b nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf07b56f2 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1f52f6e nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4c5cecd nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x30bb65ad nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xcef273e9 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x8b180db4 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1dba5cef nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x29e802e3 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x37325f4f get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3ac95375 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x84cd7768 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x863db9a6 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8952e2e5 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa9a0b3e5 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb07fb931 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd05abd3f set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x1dd3e9ce nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x32f476c8 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x93dd5fbf nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa7978137 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xdefd0fd2 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4acb9d43 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x63ab56c6 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x76e1472f ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x897edbec ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa8d70428 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd445c4e1 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf2d3bf72 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x388aec0a nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x3491917c nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x352e0bb1 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x53b5c83a nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xad58dee6 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1076fd87 nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x18d612b9 nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x22b516b8 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x27f96aab flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x4bb5183e nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x55a79f57 flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6717943d nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x825514e7 flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x98b19f74 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9bf73e53 nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb65a3b05 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xc1f1bdd9 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd225e63c flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd7abd6b3 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd9dc7023 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf229d5fa flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xff58e8ad flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x09d006c3 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x09d21764 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x482127be nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5b93b2c7 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x73f11570 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xc502d6d9 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x180b3ab9 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3742b71b nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x41834bcf nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4e16489b nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6ba7e96b nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8c51320f nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8cbaa0bd nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x99bc1584 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa8e4c9e2 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb8b6dbfc nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc896a328 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdab9768c nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe2fd9141 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe6340681 nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeccef1f1 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd9c1034 nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x0df374c3 synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1c17a826 synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x202f2908 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2783a023 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2d3d9c13 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x395b2027 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x451d5991 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xbe86d4a2 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc96345d4 nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xcecfccff nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdc92ea30 synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04c26b4c nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x07b85543 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x17810e7f nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x20000424 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x22179cd9 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x30a9bf05 nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3195718b nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x339dd98e nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36654e09 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36bc4b74 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3e3c7ca0 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46c43bb9 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x50c0dacc nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x52364eaf nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x548a697b nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x72f45ca8 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7474ffd5 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7692821f nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77bf11ea nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x88b9f87d __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7629238 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xac7a60fa nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb4aee869 nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe811175 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc0057c20 nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc6be2b25 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcd3214ce nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe04fac20 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe68868a3 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe70f71eb nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe84837f5 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe9406526 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf2403841 nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf8edf75c nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfd458296 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x14bb4242 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x56e74dba nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x73b6432d nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7f97665c nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd06e35c9 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfc5f2a9d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x1286d13c nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6dd254f2 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xd5f78656 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x1037f576 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x4e0539b3 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x3a4c6f99 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x50ebfbad nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x958efc73 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x9d9d496c nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1600e36d nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xba025f6f nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xfddec765 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x03b1ca08 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x195a55ec xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x19979ccd xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1db4fd85 xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x316e353a xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3a362ce2 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x536f94ee xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x54f5b0db xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7608a85b xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7d45ec06 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x872944e1 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8871fc7c xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x89c6159d xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x95e92e20 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d8e6753 xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xadc4de3a xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xadf80ebb xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb4d76258 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xde5ac90c xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf0b1c735 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfcb5d814 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x5d31d1a4 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xee7be36d xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x01c4fcef nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xb0612f16 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xe68fbe1f nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x80019632 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x92dddae1 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x933dcda9 nci_uart_register +EXPORT_SYMBOL_GPL net/nsh/nsh 0x00c94fa1 nsh_push +EXPORT_SYMBOL_GPL net/nsh/nsh 0x550bc43b nsh_pop +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1979c04c __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5588deb2 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x831cd07d ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9117b2b6 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc22909c4 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcff04279 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/psample/psample 0x3e2d622a psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0x47d988b6 psample_group_put +EXPORT_SYMBOL_GPL net/psample/psample 0x4cb73782 psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0x7ccb3b2d psample_group_get +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x2a02656a qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x9a2b1ff8 qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xdccb1d25 qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x05e9ccf3 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x110a53f7 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x22ea7b90 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2fe35b2c rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x351dcadf rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x36ff3881 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x3857fc95 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x42ad1a35 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x56f1742d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x5804a886 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7152c8ff rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x76ee4d89 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x7c60b24f rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x7de08cd1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x83c06657 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x83d8dd24 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9149facf rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x98d47efa rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x991d0edd rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0xa30073f1 rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0xaef42d49 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xb2a03379 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xb2c9d668 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcd2b3656 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xcfb9e0ab rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xde29ec2e rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xdf6ea2d9 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf6a5df25 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xfd22dd56 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xd74ce545 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xe1b9a7d5 pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x23d78d2c sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x5d6be8a2 sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0x8348d111 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0x88e83f22 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/smc/smc 0x03ad73f9 smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0x19e2ebef smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x3c42bb3e smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x645526b5 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x9f1abe18 smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0xdb2286d8 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0xe02f30d5 smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0xe8cc12a0 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xf0a2cc09 smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xf3589634 smcd_register_dev +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x12d6b63c svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4904c9f3 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x71f1d6cd gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd0146458 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0081e367 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0266c709 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x040cd7bc rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04d2433e rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x056931e7 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0840f322 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08ed7671 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09cdb174 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b633c1b cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e44d647 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e531518 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e91fbc5 sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f086a2e rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fde9ff3 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1011bf62 xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11b60f5c rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x120b2f33 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x146df867 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14bc3de3 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x173e69cc svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x174c112f rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19d8bd61 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a81a143 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ad051b1 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c899d47 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cd04829 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e91f4a7 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1eff5fc4 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2236f325 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x228dd3cf xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x247328d1 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25c59c64 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264aab29 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2660c5a2 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26ab7c20 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2816dc23 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x282dba34 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a0e3887 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d52e9c3 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f65fcec rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8c43a3 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fd53ce2 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fdbcd04 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32a92728 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a640a0 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34d184de rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36751611 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36cfb2fa rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36e1f22b svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37a99fe8 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ba9f19d xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bea90f6 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c16b51b svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c37743d svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dfa5d55 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e545307 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fea2911 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41c0afea rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44b87cf0 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44dbaaf8 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45eb40a2 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x463af8f9 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46b01ae8 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46f718ae svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48b51297 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49ba08eb xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49c31b17 xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a92e4ca xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b84551d rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ba2d433 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e0439d1 cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f1c0f95 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fe97807 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50cb6f52 rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5430e2e9 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c56cba rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abe764f rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b3e7c6a svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c501c2f svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d5485e2 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e162d96 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f6ff52e rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x612b459b sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x614300c3 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62ee9a8a rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x631da8bd svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65886d81 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ec3d39 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ed2439 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67902ba9 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x699cf74b xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69d6b92e sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d0cf7b8 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x701027e9 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x704ea8ad rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7058c457 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7142aa9e xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x714ccb59 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7193767b rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bc40e3 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x741238e7 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x748a8c89 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x764d9fa8 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78fb97a7 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79887e17 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79c49b91 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bca723d csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c295cd7 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f7022f8 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f798615 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fa87a42 rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x809a11bf cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83617d89 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8477cab0 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8631335b rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87adf17a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a0c8ea1 rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a22d180 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8acd6cf1 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c9eeeb8 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8efb546e svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fdef6d0 xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9483d08b read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95dc155c cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96567c2a rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9670b5a1 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9935695e xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9956d01e put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99636c26 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99aee353 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a0dc7dc svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ae4791f svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b75bdc9 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c3f55e7 xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9caa1d3d svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d2bdc37 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d7d8c24 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d92b87c xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f3534c8 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ffe631b rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa03c46c4 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa40bd0c6 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5a4d933 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa667b749 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6de92a2 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa74bf923 svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa90ccd65 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa94235a0 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabe69e26 svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad37b520 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xade186f7 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5027a3 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf61581a xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0088099 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1ee6993 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb20c3cac rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb21a2719 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb46094c5 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4a5c71e svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6e51dd1 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7156c91 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb80da69b rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8b04909 rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbad8abde xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc655c0f xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8c3ada rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc095cfe6 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0d14aca rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0de6cc6 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1a6471c xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1b3d750 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc22cdf60 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2a5d831 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2a5fbd2 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3c4d3cd __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc51fa2f5 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5bea26a svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5ed1935 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc64ba34c svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc78b831b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca4602a6 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc0e6e16 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc8d2438 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccf1ce80 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfbc3615 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfec450b rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd00f0637 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd04c2d57 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3910a15 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4b4de76 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6d26579 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda083ad2 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda1a987a rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda5bde59 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde1e9ce4 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdeaa25e3 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdeb23e5a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe01f6713 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe036502e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe387d286 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3cc7b16 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3cea5db xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe51fdc2e rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe520657a xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5a392db svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6670e35 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe70db6ac rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe753f62d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7ad01ab svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe872960c rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed967017 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xede9a66c rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef591b07 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefabf953 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefc99776 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b7775d rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0cd0a50 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2212e11 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf228f5a0 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3cbb1e5 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4833ddb xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf56823a3 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5a94165 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf62ff909 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6e5b531 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa70bc0 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfda51b54 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff2006cb rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/tls/tls 0x1d15bf9f tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0x5dde8847 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x8e6b5ae3 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xdc54ec85 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0d197905 virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1b03c923 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x27ae1c21 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x44f459be virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4b4bf085 virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4dff1cb5 virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5470a849 virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x58255666 virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5ffdabc3 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6861c559 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x708805e5 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x70d38a93 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7c0f20d9 virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7c78b4b1 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x80d422dc virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x826dfb2f virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8c302428 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x931300ec virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x97b09d10 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xad60ca44 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb10a750b virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb47c15a4 virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbb028793 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbcff4647 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbd7003bf virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdbe91b04 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdcfcae77 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xeafc4c08 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf267d622 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf4229f6b virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf902a135 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x067fe799 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0eae515e vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x294cea6a vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33219000 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x343a7e38 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3b3ee214 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4631b538 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5309f33e vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x53557408 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5bbe533e vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9d2634bd vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa18acf80 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa8104fa5 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xade41086 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb2909a44 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc2657b4d vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc907d2e0 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc92f7f50 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd4c2de5 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe68bfdec vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf9e676b1 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x26399390 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3a8b749a wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x402b96fe wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x463f16d8 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5281c3ea wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x67e16e27 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x975af8e6 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa71a1c2a wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc64a3df7 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7dea1aa wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcf74ad66 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd3bfb143 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfbad3a65 wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x14aac8dd cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1950fb0c cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x23947463 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x39b84e8b cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x599caedd cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5eb2ad0b cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8b4ebf77 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x98644e2c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb46b189f cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc8df8913 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xca02755c cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xded1f2b7 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe22aca25 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe3ae29c2 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe64f470c cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfa15c8d8 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3d2bfa41 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4dfc33af ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x503b53dd ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd486124d ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x8f9e60e7 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd 0x04c7f73b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x1028e679 snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL sound/core/snd 0x1755393d snd_card_disconnect_sync +EXPORT_SYMBOL_GPL sound/core/snd 0x5803d42b snd_card_ref +EXPORT_SYMBOL_GPL sound/core/snd 0x66d9529f snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x754e2bc0 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0x8cd5f5c2 snd_card_rw_proc_new +EXPORT_SYMBOL_GPL sound/core/snd 0x9b27c955 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xbaf31122 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xca26d093 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xd525bf54 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xe973e5df snd_device_get_state +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x3b992458 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x60bf9da8 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x7b7cfab7 snd_compr_stop_error +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc15841f7 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x105923af snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6807d84d snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x85838ebd snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x89933bca _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8a6ea964 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x91cd7bce snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb393ac06 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc3df795b snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc774b80a snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdafe7b0f snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1f877609 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2fae111b snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x301d7410 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7f4f97b9 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x92711b54 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x99ca489d snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa40bea52 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa609a20a snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa8132c93 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xaf05f1d4 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb0dd82d2 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf4f6ef68 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x2ee677a2 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x39462bd3 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x12ce3b29 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1b9b1901 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1e1f592a amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x28cf4e81 amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x48b629e8 amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5321584d amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x5a42bd2a amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6c52e1e0 amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x87f441a6 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8d100616 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe9d91251 amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xeaf498d7 amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xedc01313 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02b94a55 snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x06bfcdcd snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x095a54f6 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x126e2613 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1709ff87 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a9f1e2c snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c74ce6c hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c87f349 snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c9b1c70 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1cc0e11e snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2d8a8fc4 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x36c24931 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37bba719 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a672376 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3dbcaf2d snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f33e6dc snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3fda316b snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40b760fb snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42ac9958 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50f62558 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x524ec1a3 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x587e55dc snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x58bcbc1a _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59d4e462 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6150bfe8 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x616414a7 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61712fa0 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62c6487e snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6462be1d snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x667bc090 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6a4f4a21 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75303d04 snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x78f25905 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7e43f85d snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82f01c72 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x866e5c41 snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89660219 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a9450b0 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e6d40f6 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ef3eca6 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90ccdaf8 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x918333fa snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9767bc45 snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x977f51a0 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9868d3c3 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9937ee42 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d85f8f4 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1154e30 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1554028 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa207cb66 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa6b1d806 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7d6e2b4 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xab424f13 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb112b68a snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1fe5ed1 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb3803b24 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb43fbbe9 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbae2d95b snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb5344dd snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe91fadf snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbeca6be6 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc345bf72 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc4cdd945 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc53ea6af snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc646f689 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc921c1b1 snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd0819d67 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd618576e snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8941e5d snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0eaa504 snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe307fcf4 snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe55b9822 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe75f1e9e snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec793c48 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xed7221f3 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee058446 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf24718ee snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6a48332 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf758ef7b snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfbc4f6bc snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x256f77c1 intel_nhlt_init +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x4e859456 intel_nhlt_free +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x8058665c intel_nhlt_get_dmic_geo +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0xfd1c7ad2 snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x13a2bbc8 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x53f286f6 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8987a03a snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8d7b96c6 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd81b3b03 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xeed1e6b5 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x012a5c50 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05f79edd snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b4e07da __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b6a97cf snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c090c9b snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cb24492 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d9d3cbf azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e39ef83 snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f564570 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13f2dbc8 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17986818 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b76aaaa snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c2f0796 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d6e14df __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e4b9de3 snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f9d4925 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27b30533 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30fa7be4 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31e81a52 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32eb75c5 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3331540f snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33740f07 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33dcbf78 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a970660 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3acd7bad snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ce294bc snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ecda8f2 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ee86e3a snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f6130ed snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f934b90 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fd7a672 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43880a16 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44b095d0 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x470749d7 snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47973fe5 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x482f1e1e snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b360e30 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e138569 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ec3eed1 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56d1c8ba snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x577e2359 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5810fffd snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bea47e8 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c0a7ad4 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d415e39 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f8ee674 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x603087d3 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61c4868a snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x653b00e9 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6af5c8c1 snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c95ac19 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f61690f snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7031e875 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74c6fd96 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75300ace snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75cc9615 snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7805525b snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78ccd8ec azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7976422b snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7acc21c4 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c735947 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d859b67 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f2e6d9f snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86459f09 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87583000 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x883915a5 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8867a890 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88695362 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b9be11c snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90647738 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91c22a66 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93a66dbb snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94d36156 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x953b26c8 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e8fffbb snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ff562b4 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa13c06df snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5a6ac6e snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa73ab778 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabe61244 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac1e10fe snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacad768d snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaefbb0d8 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2ed79ab azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5588ac6 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb67fe8ac snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9047bde snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9461f1c snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba928a49 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd2f2cc8 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf961f51 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc03b60e1 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0e2035e snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc298a2a2 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3064e05 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc604091f snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9dd41b6 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca5b0b68 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce184298 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0996220 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd18c1efa snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1d35405 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3a389fb snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd56240f3 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd655a185 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9701325 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdba95d78 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0aeaa42 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1b2f616 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1c2d243 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6e9b126 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe72ddc65 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7801d2c snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec170f07 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed200af1 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5e908f0 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf960769b snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9bb8f82 snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9c782a7 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe695d8d snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfee6e16b azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x015a79e4 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x019691cf snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0508fb57 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0ce55b81 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x230ea3ec snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b077813 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3a5e25ac snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x430102b8 snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x52454658 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5a57bb0e snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x648bfed9 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x730981ef snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x77512fd1 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7cee95bc snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x89733ddf snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8c161874 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x91800413 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa49e05bc snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb0691545 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb69b16c2 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb9b3045b snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xee41a303 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x01fb00ec adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x90601397 adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x0289f34e adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x39f1b16f adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x51b3012b adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x57d651f0 adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x8951aa68 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb625131d adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xdfd8fda2 adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xf860474f adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xfc1393e7 adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xfeae34e5 adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0xfad07802 adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x01037693 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x5aa7dbf5 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1a0dba27 cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x2b3755dd cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x41f401da cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x6bd9e288 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xbe9cd17f cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2800fe0c cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x4df398a0 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x787cb5ed cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x5d44abbf da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xa47f41ef da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xd00f65b4 da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xcdbc5f0e es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xd7f80ed9 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0x70f66a94 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0xf2256844 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0x02d29478 nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xa326a7d0 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xac54326c pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xc2634be2 pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x4a06ba6f pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0xc5d3e7ca pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0xcd48981f pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0xdab98710 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x04458230 pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x3468b598 pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x50fd29fb pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x9ca2ed00 pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x039f2a77 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x5bffe958 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xab192290 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xad4b7c05 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x61ff58e3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xff87892f rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x78fda3f6 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xdd1c4894 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0x899d74f8 rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x180c9bdd rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x2d45be2f rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x59d3d967 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x6d71f274 rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x7e4baa5a rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x99dddeb1 rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xaf8cc3a2 rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb6d38e9f rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xbd3fc454 rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xc672052c rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xcbaae55b rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xf66cd719 rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7e7c7f73 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x813f7094 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x97fcb5f8 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb5807ae4 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe715f349 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xf9326aa5 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0x5453e5ff devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x0704b6e3 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x4030a025 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x36c236c2 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x2c9910a9 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x156b9cbc wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x1659324f wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc1e6da76 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd1676f21 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x255301d3 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x01078046 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/imx-pcm-dma 0xc21a6645 imx_pcm_dma_init +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xbc99c2fa fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0x33322e9b fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x040920a9 asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x0e24edc5 asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x1d306679 asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x22b976d1 asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x2c94578e asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3190828e asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x459450fa asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x4904d4df asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x609459e5 asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8a114aaa asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8adcc8a8 asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8c599fef asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8cd3f875 asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x97684dd9 asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xa436e43a asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xcb46cd6d asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd2adf7d8 asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf12cb830 asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x0100edf0 mtk_dynamic_irq_acquire +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x01f1dc3e mtk_dynamic_irq_release +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x1f485fab mtk_afe_fe_ops +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x27ea0779 mtk_memif_set_rate_substream +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x29e8da8a mtk_afe_fe_trigger +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x3157d76c mtk_afe_fe_prepare +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x3543f69c mtk_memif_set_disable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x354c2e87 mtk_afe_add_sub_dai_control +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x40209d0d mtk_afe_fe_shutdown +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4326f215 mtk_afe_fe_hw_free +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x457f3f47 mtk_afe_combine_sub_dai +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4762dba6 mtk_memif_set_channel +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x6aafb4ae mtk_afe_resume +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x8eab4495 mtk_memif_set_pbuf_size +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x9344607b mtk_memif_set_addr +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xa3b932bd mtk_memif_set_enable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xa5c58a2d mtk_afe_pcm_platform +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xa9caa0d6 mtk_afe_pcm_new +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xab6e4d40 mtk_afe_suspend +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xaefcc1c2 mtk_afe_fe_hw_params +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xb99a2a73 mtk_afe_fe_startup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xd83b32be mtk_memif_set_format +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xdd60597e mtk_afe_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xf17012b1 mtk_memif_set_rate +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x38d30724 axg_fifo_pcm_new +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x41d2fb27 axg_fifo_pcm_trigger +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x5da8580e axg_fifo_pcm_hw_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x646d2a36 g12a_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x8ff50886 axg_fifo_pcm_close +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xa23e4960 axg_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xc71c7c36 axg_fifo_pcm_open +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xec638eed axg_fifo_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xf9ebd141 axg_fifo_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x1a8f97f5 axg_tdm_formatter_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x216268ee axg_tdm_stream_alloc +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x809a0ec6 axg_tdm_formatter_event +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x9258a990 axg_tdm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xb0e9b620 axg_tdm_formatter_set_channel_masks +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xd6361dff axg_tdm_stream_start +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xf2948bf2 axg_tdm_stream_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-interface 0x8e0c8088 axg_tdm_set_tdm_slots +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x2e611765 meson_card_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x3b408fb4 meson_card_parse_dai +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x9f066973 meson_card_set_fe_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xaa4c74d2 meson_card_i2s_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xb6f8d91f meson_card_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xba9a6e6f meson_card_reallocate_links +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xd22eb0b9 meson_card_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xf35ff484 meson_card_set_be_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x1844d793 meson_codec_glue_output_startup +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x2501b89c meson_codec_glue_input_set_fmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x9dade6fd meson_codec_glue_input_dai_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xa2ba90f3 meson_codec_glue_input_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xa9febb0c meson_codec_glue_input_get_data +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xc9537e94 meson_codec_glue_input_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x28421460 q6adm_get_copp_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x6e5f5ff5 q6adm_matrix_map +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0xcc0bcd11 q6adm_close +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0xed2bb6b3 q6adm_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x369b6eeb q6afe_port_put +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3997e13a q6afe_is_rx_port +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3b16d6e7 q6afe_port_stop +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x498d993b q6afe_get_port_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x5332304f q6afe_slim_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x6e89c3ae q6afe_port_get_from_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x7df60063 q6afe_port_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xae809786 q6afe_hdmi_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xd4523c59 q6afe_i2s_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xe45246a8 q6afe_port_start +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xfaf22370 q6afe_tdm_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x01d71b3d q6asm_stream_media_format_block_wma_v9 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x0fe75f2b q6asm_audio_client_alloc +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x151ae9d4 q6asm_cmd +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x40299233 q6asm_run +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x5382edf1 q6asm_open_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x689e402d q6asm_stream_media_format_block_alac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x68db31e2 q6asm_unmap_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x6eb89e95 q6asm_media_format_block_multi_ch_pcm +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x720ce413 q6asm_stream_media_format_block_flac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x7353d9dd q6asm_cmd_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x857330c9 q6asm_write_async +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xa06e9828 q6asm_stream_media_format_block_ape +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xc5a116a4 q6asm_get_session_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xcc4952e4 q6asm_audio_client_free +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xd599e50f q6asm_enc_cfg_blk_pcm_format_support +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xdbedfcd9 q6asm_run_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe060c0a1 q6asm_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe1531577 q6asm_open_write +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xea75a5dd q6asm_map_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xf40aaabe q6asm_stream_media_format_block_wma_v10 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x7e52e977 q6core_is_adsp_ready +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x9b02ea0d q6core_get_svc_api_info +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6dsp-common 0x17142e58 q6dsp_map_channels +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0x5b75f756 q6routing_stream_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0xa7a64259 q6routing_stream_close +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x0efe2b59 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x25f64ac1 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x86eb8825 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xfa7a5cd0 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x13422766 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/rockchip/snd-soc-rockchip-pcm 0xed90a5b8 rockchip_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x6c5d2bcd snd_soc_acpi_find_package_from_hid +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x8795d901 snd_soc_acpi_find_machine +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0xa2585abc snd_soc_acpi_codec_list +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0186f22e snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02859368 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02d96fcb snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x044a199c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04fe2b5c snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058381ca snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07b022c1 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0854ea25 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a13d571 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ab6300b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b72b09c snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0babf909 snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d8e9df2 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e7d2a82 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f561dab snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ffa4b50 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10130b94 snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x147fcf79 snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14a1c15f snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16308e33 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x177b3ce7 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x189defc7 snd_soc_find_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aa5ffcf snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b6dd356 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ec851af snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f7b7555 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x211fd7df snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21a10a8b snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25c16cf8 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2900f910 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29e568e2 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b00a74b snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bd8507c snd_soc_runtime_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x306bfffe snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31837b02 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x318b13e2 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x331d182d snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x345fddad snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x365bc61d dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37ef03d4 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38664110 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a02c1d4 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3afa594c snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d12f3ff snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d2be0e2 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d405735 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e490e0f snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44820295 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44f81cfe snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x466daceb snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x487a05f4 snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48d32999 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4947fe84 snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a6c4e19 snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ad852c7 snd_soc_dai_active +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4af0cb8e snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c4a7b33 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d171f47 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4dd3f2ea snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50db304e snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53da43fc dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55d2e10a snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x568bade1 snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56f14b83 snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56f54e8b snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57aa0d65 snd_soc_component_read32 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59db1982 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c0aa0c2 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ddd85bb snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e0ce96e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e2ec967 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eb87837 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61078db7 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x612de3eb snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x621d1f04 snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62e37c5f snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x633feecc snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64431792 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x645592ec snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6608852a snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67221293 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ba0d837 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e54f566 snd_soc_lookup_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x700e3b22 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70dda6d7 snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7251706e snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x737e9adb snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76536fb2 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77c5a9ce snd_soc_component_set_jack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77d6b2bc snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x789295b4 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a2bd584 snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7bdeecff dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80250ece snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80640328 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82983214 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82c0341f snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82fa1089 snd_soc_dapm_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83bd5590 snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84621313 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x854c3b22 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85eb03d6 snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85f379f9 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x896986b6 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a258434 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ac20b11 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b03cb67 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c8669b2 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d2ad142 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e83ef7c snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ee3b876 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f51972e snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9168b153 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9583c004 snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9584d603 snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9642db72 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a072270 snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a0acb03 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9af7d3a7 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b078788 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bc46fd0 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e258275 snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e551454 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f8e1c8c snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa178d319 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2ff56ab snd_soc_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa31f8ce7 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3a733dc snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3d85a87 snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4d8c365 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4eee150 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa63ab339 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6d05a8f snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9d4b53d snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaacbe5a3 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabbcca64 snd_soc_get_dai_id +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac25b183 snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac4b77c3 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadd1056a snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae963964 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb07211c6 snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2e37847 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2f5eac2 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5801d6f snd_soc_dai_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8e91ebe snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd7076ee snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdd6d5d5 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbedff6df snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbeea5dda snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc39778ff snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc61b50ff snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc840d189 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb850608 null_dailink_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce1d20ca snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce63d193 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcec58da0 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf66ce9b snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3ee72ea snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4c42be3 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd51df916 snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd53f8902 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd56ad81d dapm_pinctrl_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6cfbd31 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd769bebc snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8bac0db snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda23cb3c snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb3e830c snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde443c3c snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf935781 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfb1dfde snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0005669 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3e225ac snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4f27341 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5975a0d snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5fc84de snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6d7e138 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8f15979 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeac07aa6 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef75fcab snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0303d3b snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf152708f snd_soc_add_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf356c3bb soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6816a92 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf84cdb3b snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf85bf94d dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfba0d54e snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc35cdf2 snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdea5946 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff4854a4 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x22f8b352 snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x81cfce6e snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xa0fe7d5f snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xfbdcbcc6 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x2c64d423 sprd_mcdt_request_chan +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x5061832c sprd_mcdt_chan_int_disable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x609193c3 sprd_mcdt_chan_write +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x68b4b311 sprd_mcdt_chan_dma_enable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x6c283cec sprd_mcdt_chan_int_enable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xa5fdddd3 sprd_mcdt_chan_read +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xb67dbf49 sprd_mcdt_chan_dma_disable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xdf547b54 sprd_mcdt_free_chan +EXPORT_SYMBOL_GPL sound/soc/sunxi/sun8i-adda-pr-regmap 0x37a3a5c2 sun8i_adda_pr_regmap_init +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-edma 0x49a8f09a edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-sdma 0xce745eb8 sdma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-udma 0xb9938b8d udma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x098b1df7 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x16657c05 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1abe3bd3 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x30b37579 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x383e7707 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x49b4d333 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x66d82d0d line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x791f3562 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7f3abe7d line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9087b617 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9d6abaa2 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc2c1a0db line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc97aa427 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd6eb5768 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4881f47 line6_probe +EXPORT_SYMBOL_GPL vmlinux 0x00102d32 devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x0010cd29 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0032049d cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0x003855f6 extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x00565f18 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x008d0aba input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x008e3223 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x00992a52 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x009c60d3 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x00c3337f qcom_smem_state_get +EXPORT_SYMBOL_GPL vmlinux 0x00e80265 dpcon_enable +EXPORT_SYMBOL_GPL vmlinux 0x00ec556a dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x00f5d49c virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x01178b1b scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x012e730e apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0x01342bd4 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0144e77f bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0x014d930a relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x015455a9 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x015fd5f0 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x016490da bgmac_enet_remove +EXPORT_SYMBOL_GPL vmlinux 0x016f927e pci_ecam_create +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0188ce4e pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e67468 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x01ebcc28 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0x01ec30fc virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x01ec902e acpi_pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x01f69bfd __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x02027daa fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x0203dcb7 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x0210c95b phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x022fc1b0 meson_clk_dualdiv_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x0244c752 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x027a676b iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x0281ee38 blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x0293cd18 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x0295c489 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x029dd9d5 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x02a8b7eb adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x02ac3fe0 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x02b6ba6c nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x02c7ec70 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x02e8080f irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0x02e9ea77 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032c3f8b fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034a7f4f qcom_smem_state_register +EXPORT_SYMBOL_GPL vmlinux 0x03578c9d do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0x036029d0 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x036e5370 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x03819a9f usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0x03827af9 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x03ae66ea input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03c6f62e ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x03d3c660 of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x03df1a01 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03e03e17 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x03e3a035 tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0x03f4b6bb mmc_pwrseq_register +EXPORT_SYMBOL_GPL vmlinux 0x03f84404 usb_of_get_device_node +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040e7149 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x0414e525 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x041d3021 crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x0422d619 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x04265bb0 fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x0427948c fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0x0427fbde tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x0428d1e4 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x04481ab2 crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046f359e of_overlay_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0477769a kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0495508d pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d1a90a ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x05177e9d acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x051e33da regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0x0523b43b mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x0524353c gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x05247650 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x054a4b03 devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x054cbaf6 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05610897 of_changeset_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0573c3c5 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x0577839c usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x057c4395 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x057ce998 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058e667f espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x058f9366 apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x05a5856b __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x05acefa0 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x05b836ae arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x05be4b32 device_register +EXPORT_SYMBOL_GPL vmlinux 0x05c4a5ac ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0x05d59dd8 __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x06137eba dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x06172c4e sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x061ad670 debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x062473e6 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06280115 security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x062a470d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x062ea668 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x063e04fe pci_ecam_map_bus +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0656e857 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x0661cf1d crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x0662e8b8 pinmux_generic_get_function_groups +EXPORT_SYMBOL_GPL vmlinux 0x06821736 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x0684e16e rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06960c55 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x06a44ca8 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x06ace640 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x06adbc97 xhci_mtk_add_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x06b39524 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x06bf1766 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x06c0e448 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x06c8f3f2 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06d2da66 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x06e12354 clk_regmap_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x06e4433e sunxi_ccu_set_mmc_timing_mode +EXPORT_SYMBOL_GPL vmlinux 0x06e5d4c7 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0700b49f ti_sci_inta_msi_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x071edeb6 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x0752d0fe usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x075e6030 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x07709623 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0772e53b of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x0799beeb __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x07a00085 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b4750b hisi_uncore_pmu_enable +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07beb46e ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07c23703 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07d0f045 gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x07d67c21 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x07f02125 pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0x07f19c83 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x07f8cdb6 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x07fa055e scmi_protocol_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fb4e6f srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x080b625d blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x0816538c sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x08176a04 devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x081ee8b8 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x083be4ed iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0x08418d08 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x0843ba7f wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x0845a0b2 phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0x08484b4d devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x084a9cf8 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x08557a4c mtk_pinconf_bias_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x08597308 mtk_pinconf_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x086e5876 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x088dc3d4 sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0x088efe89 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0x08911a2a uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0893e077 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x08c03800 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x08c5f05c nl_table +EXPORT_SYMBOL_GPL vmlinux 0x08cd6802 pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08da98ee sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x08e772cd extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0x08efb908 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x08f3c44d virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x0900e018 stmpe811_adc_common_init +EXPORT_SYMBOL_GPL vmlinux 0x09032052 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x090554c9 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x0907d14d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0923c289 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0932d1e8 bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x09337cd0 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x093786cf synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x093827b9 genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0x09394a68 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x093eb3cb disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x096293bf uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x096b2418 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x096d39a1 pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0x096f69fa perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0x0976b97b devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0x09af0625 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09ceec31 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x09d63265 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x09e0f450 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0x0a0134bf skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x0a01934b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x0a091430 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0a0c9d45 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x0a19b9d6 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0x0a24f51d usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x0a305514 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x0a369952 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0x0a51e8b9 encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x0a525e5d devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a713cea udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x0a73d87a regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x0a76412b sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x0a7873b4 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0a7c91c8 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a95f0e2 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x0aa17d71 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x0ab5f373 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0abb6a7a scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0x0abc6be6 k3_ringacc_ring_is_full +EXPORT_SYMBOL_GPL vmlinux 0x0abf31e4 i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x0ac82a21 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x0acb7863 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x0ae3d5d8 bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x0aec176a rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x0aedb6a0 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0x0af1e6bc fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x0b008a2f usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x0b059991 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b24b646 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b3a3ed7 zynqmp_pm_fpga_get_status +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b5313cd strp_stop +EXPORT_SYMBOL_GPL vmlinux 0x0b644976 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x0b690f04 k3_udma_glue_tx_get_txcq_id +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b95088e __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0x0b9b39e8 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x0b9b44bb sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x0b9da244 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0x0b9fd2cc ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x0ba6d554 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x0baa9c76 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0x0bb028d4 hisi_clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x0bd5d44b blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x0be00f26 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x0becec61 securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x0bf72c6b ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0bfaea6d genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x0c0027ab uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x0c0f1cc6 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0x0c1dbe6c phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x0c25dd25 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c3b2241 altr_sysmgr_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0c3e6241 k3_udma_glue_disable_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x0c4939db devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x0c560fa3 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x0c5bba39 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0x0c65a059 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x0c705d14 ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x0c824c96 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0c835f4d edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0x0c861a60 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x0c8e0475 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0ca54013 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0x0ca76dbb ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x0cb2f6bd pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0x0cb579c0 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cc3b29e acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x0cddeb02 devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x0ce3dd73 bman_is_probed +EXPORT_SYMBOL_GPL vmlinux 0x0ce99733 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d015c83 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x0d116ad0 __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x0d23f883 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0x0d2dcb38 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x0d40d8be ti_sci_get_num_resources +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d470b42 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5dab7a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x0d6582fc dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x0d756883 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x0d7cbc21 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x0d98f6b0 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x0d9cba2b of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x0da72cab device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x0dafac0e irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x0db2acfe fsl_mc_bus_dprc_type +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df9ab93 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1b7b83 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0x0e293d1a blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x0e50240b bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0x0e51b323 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x0e537268 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x0e5ca760 fsl_mc_populate_irq_pool +EXPORT_SYMBOL_GPL vmlinux 0x0e5fcca0 bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x0e6c8861 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0e6ee6ee kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x0e713045 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x0e7234a3 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x0e91539d dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0x0e925f67 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x0e92caaa __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x0e949aa9 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x0e9fa427 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0ea5cbce xen_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x0eb0bbf9 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0ebad489 is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0x0ed4ed5f rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0ed68b57 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x0ed81069 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x0ed8c917 devm_ti_sci_get_handle +EXPORT_SYMBOL_GPL vmlinux 0x0f044f7a device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x0f0995b2 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x0f12cc73 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f26fa7f pinctrl_parse_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x0f3807d6 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0f39445d extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0x0f4acfd0 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0f8dbf9f blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0f9c441d usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0f9d2410 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0fb52fd6 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x0fbaaa14 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align +EXPORT_SYMBOL_GPL vmlinux 0x0fc18076 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0x0fc43c20 hisi_format_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x0fc89039 amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x0fd668d8 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0fe7617c __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x100e2811 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x100fdc15 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10146cf1 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x10266a9e __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x10695790 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x107ceb14 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x10853d8d wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x108f52dc devm_acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x10ac5b38 regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x10adcd28 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0x10b2c8c9 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x10bc1785 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c767a8 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x10db05f9 sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fb97c4 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11138d33 is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0x1117821d device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x111f8314 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x112371bd dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x113ad0b9 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x113d52e8 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x116288df bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x1166f829 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x1172d487 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x1185c249 arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x1186a48e rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11b08446 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x11b365c1 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x11b5c6c6 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x11b79e85 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x11c1659d scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c4cf90 sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0x11c67771 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x11cb00f5 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11e06ee9 badrange_init +EXPORT_SYMBOL_GPL vmlinux 0x11e08f96 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x11e14c87 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x11ed2e63 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x1208bb30 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x120f4a01 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x1215a2b6 dev_pm_opp_of_get_opp_desc_node +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122d8275 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0x122ed7b6 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x1234ffa1 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x12479f97 gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x125462de __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x1259b431 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x128c2ae8 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x12906955 is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x12a9f609 dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x12ab31f1 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x12be4d01 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x12c028a6 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x12cd0b53 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12e185de da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x12e99a3a mtk_eint_find_irq +EXPORT_SYMBOL_GPL vmlinux 0x12eb7ccf cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0x12f8577c __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x12ff1ac4 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x1301eacb fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x130c5f06 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x130cf3f2 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x13184252 crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13230daf gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x1325b92b acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x135687da efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x136117c4 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a8d2e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1382f880 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x13a6d46a dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x13aa8297 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x13b15391 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x13b18a11 dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0x13c19ee7 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x1404e657 scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x140fc7d7 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x1418238a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x1427508e cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x1429e507 find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x1433b3a8 gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0x144591f9 hisi_reset_init +EXPORT_SYMBOL_GPL vmlinux 0x14485ef7 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x1456762b k3_ringacc_ring_get_free +EXPORT_SYMBOL_GPL vmlinux 0x1483a636 sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1485a307 free_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x1490b16a rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x14aea24d of_i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14d382d9 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x14d5ff70 phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x14d7eda5 spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0x14dbaec9 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x14e6f394 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x14ec4fdb evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x14ec8661 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x14ede9c8 fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x14fff5cd ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x15129b9e blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x151694a9 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x1525ebb6 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x152665cd debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x155efc4e ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x15698242 sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0x156cdac8 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x15701201 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x15843382 perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0x15934fab gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x159f5beb rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x15ba9efe blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x15d373b9 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x15e20f91 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x15e4e8c0 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15f9fec0 of_platform_device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x16015512 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x16099b0e fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x16142e79 net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x16171abf sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1620a9ce dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x16237914 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x162843a7 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x163eeb0b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1646116f regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x164dde13 fsl_mc_allocate_irqs +EXPORT_SYMBOL_GPL vmlinux 0x16516798 osc_pc_lpi_support_confirmed +EXPORT_SYMBOL_GPL vmlinux 0x165e88e1 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x166ca67e pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0x166d6443 __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x16735905 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x167d7113 acpi_bus_register_early_device +EXPORT_SYMBOL_GPL vmlinux 0x167d9343 fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x16907655 pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1694914c pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x16a2d757 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x16a608c5 hisi_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x16a8697c kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x16b2a272 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0x16bbba7e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x16bbc630 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x16cf1f3b dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16eb2c68 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x16ee012e irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0x16f15139 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x16f2640d devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x16ffc8bc devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x17001303 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x17031800 cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x172b7f2c screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0x17401a18 fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x1741ddee trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x174ea197 sprd_pinctrl_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x17591ecd zynqmp_pm_write_ggs +EXPORT_SYMBOL_GPL vmlinux 0x1759928b skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x175b3039 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x178ae307 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x178cda2a crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x178e562c __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x1793e776 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0x17970345 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x17a3993f __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x17d74af9 rockchip_pcie_enable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x17dd537b pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x17e01f11 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0x17e72c6f console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x17eea215 blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x1804bce1 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x180e7cbb rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x182c4506 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x18462240 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1856a3d3 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x1860f880 devm_memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x18728552 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x187da1f1 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x1888635c get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x18c0ccda lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0x18c16850 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x18dfe727 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18e12e65 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18f10f38 k3_udma_glue_enable_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1912c271 strp_process +EXPORT_SYMBOL_GPL vmlinux 0x1913e964 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x192b6892 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x1930966d scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1937dac4 __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x194352a6 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x19515cc9 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x197cb893 fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x1983fad2 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x1986e530 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0x199e6640 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19aa3b07 tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0x19aeb339 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x19b2e7d8 acpi_subsys_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x19c20269 soc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19c999d2 fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0x19d30733 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x19dc3fd3 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19ebdecf power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x19edd064 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a1c12ec housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x1a1fd81f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a252060 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x1a53121e xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x1a59e56e cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1a5cd3c2 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a77903a of_alias_get_alias_list +EXPORT_SYMBOL_GPL vmlinux 0x1a78bcb9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1a799e01 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x1a9a23fa rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x1aae9373 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x1ac2c352 bgmac_phy_connect_direct +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1ac88ea0 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x1acc53c2 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x1ace5adc clk_register_hisi_phase +EXPORT_SYMBOL_GPL vmlinux 0x1ad8b714 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x1af01162 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1b02f8a1 d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x1b0ea758 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x1b1471f3 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x1b1c23f0 of_property_read_variable_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x1b27fab4 crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0x1b2c082d device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x1b33203d mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x1b38b181 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b3abfee device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x1b3cb0c9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b5f4377 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1b6131b9 alloc_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b61a25f spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1b76d749 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x1b78e29c dpcon_reset +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b883299 devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1bb0ff43 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x1bb4db7b bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x1bb64aa3 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1bbdf9ec blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc9af36 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x1bd8b32e unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1bdc601c devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x1bdf7a21 sprd_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x1bec150f pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x1bec80e0 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1bf643bc crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0x1bf7a06c scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x1c13fe0c serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x1c1d2062 fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0x1c224004 devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x1c296cdc icc_put +EXPORT_SYMBOL_GPL vmlinux 0x1c2b4ffe class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c39b58b loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0x1c39c3bd crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x1c3f19cd l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1c413cb6 mtk_pinconf_bias_get +EXPORT_SYMBOL_GPL vmlinux 0x1c41bf7a dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x1c44b902 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1c4f3b68 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6ca649 hisi_cpumask_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x1c77d4c5 component_add +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c82232c regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c89fb22 zynqmp_pm_clock_setparent +EXPORT_SYMBOL_GPL vmlinux 0x1ca4a930 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x1cacd79b amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cae53e4 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x1cb7c983 apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x1cb9a1c8 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cc36ec0 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x1cca9ab2 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x1ccd38d4 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x1cd1f436 clk_regmap_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x1cd4154a dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x1cea5aee get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1cf43e8c governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x1d0d1a21 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x1d1453cf crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0x1d1e1bd4 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1d213cbe find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d26dab3 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x1d289f43 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1d3f61f8 iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1d9b206a pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x1daa3480 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1dbd34b2 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1dc8b81b ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1dc9081c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1deae378 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0ab589 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x1e30579e hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e356d0e phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x1e51dabb __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e6b2c1a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x1e736bb2 genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e848405 spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x1e8d6e47 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e92038b rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x1e9bc719 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1ea417f5 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1ea997cd __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1eaec09e sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x1eb5e129 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecaaa36 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x1ed47918 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x1ee2ef34 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1ee7d3cd hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1ef130e8 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x1ef27a52 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x1efb0340 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f055de3 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x1f096887 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f1cc011 zynqmp_pm_get_chipid +EXPORT_SYMBOL_GPL vmlinux 0x1f26eb14 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x1f26fb6c pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0x1f287915 crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0x1f310d54 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x1f31493f pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x1f40f8c7 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f47032a usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x1f4a0f08 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f771d6e blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f89a301 dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x1f9a2b53 zynqmp_pm_clock_enable +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fb11d6e debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x1fb70eb9 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x1fcf18c4 gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0x1fd9e3b7 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1fe9dff8 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x1ff210d2 xen_remap_vma_range +EXPORT_SYMBOL_GPL vmlinux 0x1ffe2a13 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x20206b9b ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x202a567a raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x2049c4c8 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x204af798 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x204f2c5c gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x20500165 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2055af0f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x2060e57a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x206d4e87 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x20820fd8 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x2086ec74 devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x20907ad1 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2093f4dd clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x20978fb9 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x20984078 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x20a5d215 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0x20abcbac acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x20ac96e2 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x20bf13f5 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0x20e2633c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x20e90a26 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0x20edab85 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x20f9ab1c mtk_pinconf_bias_disable_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x20fc2dd6 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2102fdbd ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x21098d1f sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2111318c dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x21131710 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x211e83ab sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x211f70e3 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0x2126d3f6 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x214611ed gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x21479bce page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x214c20a9 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x2158c75a skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x21646049 mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x2169b494 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x2174e719 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x2175eb9f securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x2179a021 devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0x2180e0f5 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x21844217 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x218a613f vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x2196dd0c xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a8534b of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x21a9d793 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b3423f ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x21c34c8f gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d82c30 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x21daf2f3 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x21fe9e3f xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x22096812 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x2212ac4a kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x2246b4dd __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x224a7a5f blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x22555c70 of_genpd_add_provider_simple +EXPORT_SYMBOL_GPL vmlinux 0x2259569d device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x228b0d05 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2291ebf1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x229e8602 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0x22a15388 lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x22acaa04 tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x22ae8097 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0x22afff5c gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x22b03d5b devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22db8246 xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x22ec5205 cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x22f1ab75 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x22f441d4 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x22fdb6b6 virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x2305f0b9 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x2316bde6 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x231d1c38 __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x2326717e gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x232ab97b pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x232c0a10 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x233043ce spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x233be5c1 fsl_mc_resource_allocate +EXPORT_SYMBOL_GPL vmlinux 0x234027ab fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x235172b5 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2353f9a8 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0x235549da user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x235c4488 i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x236773a0 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0x23777a3b device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x237a4331 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2380cec9 device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23924f9d device_create +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a45c5a ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x23b0e790 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23c138c7 iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0x23ce84cf hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x23d19f7f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x23d31940 i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0x23e21ef2 rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x23ee09c9 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x23f9db82 fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0x24052090 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x2405510a synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0x24169e93 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x241f8e94 zynqmp_pm_set_requirement +EXPORT_SYMBOL_GPL vmlinux 0x241fcf79 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2422fb27 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x242a5084 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x2442cb0c fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0x24565fb3 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x24566e88 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2462acb2 mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0x2464da17 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x24709b2f trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2470e9a6 i2c_acpi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248156e3 devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x24a86d9b led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24b90d42 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24e6e868 pm_genpd_opp_to_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ee5a56 ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x24f9a743 gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x250b2215 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x2510ca75 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x2518b943 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x25219767 dpbp_close +EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem +EXPORT_SYMBOL_GPL vmlinux 0x25322cb8 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0x25350b2d i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2539e5b0 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x253da6f2 spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x256a784c disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x256db7d7 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x2574da11 zynqmp_pm_write_pggs +EXPORT_SYMBOL_GPL vmlinux 0x257e4e43 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x25872347 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x258c343d __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25adda2a k3_udma_glue_push_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x25b23fc0 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x25b7e326 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0x25ba1b3a clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x25bc4076 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x25d1412b dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0x25e6367a dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0x25ef1ee9 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x25f0bdce clock_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25f47398 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x25fea82e udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x26036e23 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x2609ea56 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x260e623b pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x26192cd2 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2623963a pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x26302138 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x263b287e iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0x263f039e xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x264a1c28 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26539977 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x265b6393 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x26657882 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x2669ddea wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x266ca9ca devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26a01c4c tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26afea8e splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x26b18d12 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x26b56e5c rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d70303 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x26e739eb usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26ffe303 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270dd4eb mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x271f4e33 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x272e9d77 hisi_reset_exit +EXPORT_SYMBOL_GPL vmlinux 0x272edfcb gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x27330d37 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x273f1b86 fsl_mc_bus_dpbp_type +EXPORT_SYMBOL_GPL vmlinux 0x2740b213 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x27558d59 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x27715e4a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x27732367 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x2773c485 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x27746977 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x278a4490 extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x279d0a7f dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x27a3ed1f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x27c7ed83 acpi_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x27cdbe45 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f69da3 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x27fa3115 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2809c92c hisi_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x2811c2e0 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x2811f3f1 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x2817f7fd cppc_get_desired_perf +EXPORT_SYMBOL_GPL vmlinux 0x281b5ae3 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x2825bf3e devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283b8ce8 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x28573f08 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286b7e8a arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x2878421c fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28869a09 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x289b2712 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x289fad28 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x28a34bfe skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28afbb08 cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x28b030d2 of_overlay_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28b05eda devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x28b33cac gnttab_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x28b554c6 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x28c77c70 sprd_pinctrl_core_probe +EXPORT_SYMBOL_GPL vmlinux 0x28f14e58 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0x28f26684 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x29039324 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x29252e74 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x2925cc8c efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x2933e4d7 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2949560c hisi_uncore_pmu_del +EXPORT_SYMBOL_GPL vmlinux 0x295b982a hisi_clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x295fa313 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x2966762b ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x2966f4a4 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x29882094 mtk_pinconf_drive_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x2988b20a hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x298a84dd sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x29984a82 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x29ad8465 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x29bc1dd3 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x29cd8ab0 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x29cffdc0 dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0x29d76547 k3_udma_glue_tdown_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x29d799d9 of_genpd_remove_last +EXPORT_SYMBOL_GPL vmlinux 0x29df3b4c regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x29ee1f24 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x2a400e02 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a6549fa led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x2a66d54d power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a70eb74 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x2a7e1ded gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2a85a3c7 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x2abe6b6b pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x2ac1ee87 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ac940e6 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x2ad9958b usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2ae1689e zynqmp_pm_clock_getdivider +EXPORT_SYMBOL_GPL vmlinux 0x2ae90dfe of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x2b0765ca xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2b0c56ea dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x2b0fe000 gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x2b197e23 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x2b1d47d3 of_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x2b260a74 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x2b26849d spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b4a5dd3 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2b5200f0 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x2b5b16fe dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b619f27 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x2b64b6f9 lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x2b80098b tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x2b81b3da rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b953704 usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x2b960b66 qman_is_probed +EXPORT_SYMBOL_GPL vmlinux 0x2b9997fb atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2b9feb8c scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2ba91d69 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x2bad55a1 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x2bca75f5 strp_done +EXPORT_SYMBOL_GPL vmlinux 0x2bda27c2 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x2bdca18d devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2bdd0933 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x2be9b7b4 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2c099c5a clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3c84ba ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0x2c47b3a3 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0x2c48e9fe devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c78eafd iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7f8b0b devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x2c8dc176 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9f89d6 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x2ca49fd6 __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x2cc495c5 rpi_firmware_property_list +EXPORT_SYMBOL_GPL vmlinux 0x2cc5196e power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf20673 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x2cfe867a virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x2d063a26 i2c_dw_acpi_configure +EXPORT_SYMBOL_GPL vmlinux 0x2d06b16d tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x2d1a4bd4 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d26f39f regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x2d290a3f mtk_eint_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d3baeb6 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x2d3f7958 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d481241 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x2d52be7b tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x2d6aa0f0 arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x2d6edb84 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x2d80243a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x2da5f893 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2db67d4a owl_sps_set_pg +EXPORT_SYMBOL_GPL vmlinux 0x2dd323a2 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x2dd7ac63 fsl_mc_bus_dpseci_type +EXPORT_SYMBOL_GPL vmlinux 0x2df8bbaa adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e068bd7 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2e08226d badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x2e0b84d7 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e4d712c pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x2e678211 xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2e74eb7c fsl_mc_bus_dpcon_type +EXPORT_SYMBOL_GPL vmlinux 0x2e8232db kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x2e94eda0 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2e989727 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x2e9aa0df sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x2ea00a6b mmc_pwrseq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2eabf528 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x2eb0a613 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec86606 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x2ed8c9e7 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x2edc02d2 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x2ee7c52b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x2eec335f __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x2ef88956 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1ec502 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2f1f1022 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f212dc2 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2f24184d xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0x2f270d41 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4300d7 devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x2f4b3b28 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x2f532462 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x2f559e99 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x2f5b3b0d srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f7b63e1 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f7e53a7 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x2f846bc7 led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0x2f85a113 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x2f8769db ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2f91bb9f scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0x2f9bf5ac regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x2fb72e9b sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x2fbb852f fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0x2fe9ad07 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x2ff59f74 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x2ffe98b8 meson_vid_pll_div_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x30009db2 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0x300a8da0 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x30137da3 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0x3021efc5 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x30351294 k3_udma_glue_rx_flow_get_fdq_id +EXPORT_SYMBOL_GPL vmlinux 0x30450457 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x304e05ea of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x304e633d fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x3055a401 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x306cc83c sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0x306f5576 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x307d98d6 devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3090cb05 bind_interdomain_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x309bdab6 sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0x309be910 crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x30af00c6 crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x30b70de4 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x30bd28a1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30c17326 nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0x30c2bc88 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x30e1ec25 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0x30f163a7 crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0x30fd4984 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x311c7572 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x312f68cf of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x314369d9 dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0x315a43d4 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x315a8925 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x31785f08 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x3180935d tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x31832cad lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x31887600 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0x318c15b3 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x318ed66d skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x31912286 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x31926d7b dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x319ec846 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31b658ea aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x31ba3b8d l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x31c06576 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c80966 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x31d0eeab rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x31d4525b extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x31dac107 devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x31dca4d8 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x31e3aaaf devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31e9e8d5 zynqmp_pm_set_suspend_mode +EXPORT_SYMBOL_GPL vmlinux 0x31eefe61 crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x31f7c728 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x32322b57 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3254630a devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3256beef acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x326b704b psil_set_new_ep_config +EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0x326d0d3a dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x327a2687 bind_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x327f69e2 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x3288277e usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0x328d81bb regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0x3294501b kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0x329ca432 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x32a35c78 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x32a624d4 ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x32a7be78 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x32a7cc68 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c2bb04 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c68e35 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x32c6c604 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x32e9d540 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x32eae30f spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x32f6bf9d dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0x32faf0d1 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x32fe2f2a wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x330909bb sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0x330be5db phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x3343bffa regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x3350998b rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x335a2663 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x33642120 dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0x33ec3b87 icc_get +EXPORT_SYMBOL_GPL vmlinux 0x33f54dbe fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x3421ca7c __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x342f02ba dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x34331f04 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x343de0d8 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x345274b7 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x3468b6eb gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0x346a7da4 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3473e067 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x347ef6e8 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x34846624 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x3493cfd1 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x34b0b539 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0x34b1ec59 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0x34b5b073 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x34b67c8a cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x34bab869 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x34dbafd8 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x34dc8b1a srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x34df2dc7 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x34eab46d bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x34ec7d01 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x34f0c52e security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x34fb084d devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x3504ecbb ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x350710da tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x350f5942 thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3530e3c2 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x353e91b6 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x3555d24a regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x355bc89a klist_next +EXPORT_SYMBOL_GPL vmlinux 0x3561a5c2 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x3576f47b irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x358bbc37 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a10e9a pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x35a4f59d zynqmp_pm_clock_setdivider +EXPORT_SYMBOL_GPL vmlinux 0x35b2cf38 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x35b2fded mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x35bb3a94 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x35c37e72 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x35d3dc46 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x35d4ed9f spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x35dfb66b get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x35f5f763 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361ce3c3 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x3640d887 ahci_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3644890a rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x364be299 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x3655a52b acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x3657717a rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36763961 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x368d2848 pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x368e70a3 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x3694f657 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x3698a78d xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a68545 of_get_named_gpio_flags +EXPORT_SYMBOL_GPL vmlinux 0x36bd4786 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x36c105ff phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36c717dd kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x36db6fcd rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x36e5db4e pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0x36eff6f9 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x37121e62 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x37169f79 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x37288ed7 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x372cfd6e gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x372f1f14 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x373f037c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x373fff40 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x374a1ebf ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x3750d770 erst_read +EXPORT_SYMBOL_GPL vmlinux 0x37591232 nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0x375e4573 tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x3787df16 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x378adfb7 zynqmp_pm_sd_dll_reset +EXPORT_SYMBOL_GPL vmlinux 0x378b83f6 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0x37914025 xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x37959486 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x37a2b534 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x37b410f8 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x37b4e798 of_detach_node +EXPORT_SYMBOL_GPL vmlinux 0x37bc3020 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0x37bd4e47 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x37d63f87 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37dab6e1 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x37e19e79 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x37eb9d7f edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x37f29e5a usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x3801882c pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x38386c8a of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x3857e448 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x3859ba91 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0x386e4364 devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x387e0d1e fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x38996b18 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count +EXPORT_SYMBOL_GPL vmlinux 0x38a577a7 blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38afb686 gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x38b3609a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x38c3ff30 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38d364b3 tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0x38dfd0fb crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x38e235e5 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38e8729d irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0x38ed0434 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0x39061481 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x3911f444 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x3917b642 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x3928f735 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x39322fd6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x394f0b89 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x395fe315 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x3975b435 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x39781d68 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x39857bdb gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39b5a449 clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x39c62788 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x39ded098 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL vmlinux 0x3a00ef42 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3a147d5a set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0x3a1a9cf5 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3a1b66a7 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a340c6b clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a4d219d __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3a66c779 bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x3a687fb7 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3a805f1c __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3a84bbe6 __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x3a90064e xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa49f94 dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3aad9a2c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x3ab89d84 iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x3ac9439d device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3acfcbd5 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ae37974 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x3ae51ff1 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x3aea56a1 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3aed5594 mtk_pinconf_drive_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x3aff4f5f edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0x3b02ffb9 cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0x3b0ef036 of_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x3b135ea5 dprc_get_obj_region +EXPORT_SYMBOL_GPL vmlinux 0x3b1d5658 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x3b338e02 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0x3b35101e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x3b499be2 mtk_pinconf_adv_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b4e0ae2 led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x3b4eb264 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x3b55494f __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0x3b5c62ae ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3b605a25 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x3b69ee8b ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3b78bf02 sunxi_ccu_get_mmc_timing_mode +EXPORT_SYMBOL_GPL vmlinux 0x3b83591d ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3b8979ea gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3b8dbc5b virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3babe3ac trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0x3babf8c2 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x3baf25c3 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x3bc46293 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3bc7c6a1 dev_pm_opp_of_find_icc_paths +EXPORT_SYMBOL_GPL vmlinux 0x3bc930c0 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x3bd42a24 check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3be26080 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x3beb2d2b netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3bf8feae regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x3bfb5416 serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x3bfc6b43 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3c026bc1 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x3c11c2d3 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x3c164276 pinctrl_generic_get_group_count +EXPORT_SYMBOL_GPL vmlinux 0x3c1a8f59 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c1cfe32 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0x3c212744 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c2b68f7 of_changeset_apply +EXPORT_SYMBOL_GPL vmlinux 0x3c2bd626 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x3c439b20 pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0x3c4d0dbf pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3c56d786 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3c5c1aac serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x3c5c5bae regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c5e9d6c crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c79ac4d of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x3c8df542 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x3c9d571b of_changeset_action +EXPORT_SYMBOL_GPL vmlinux 0x3ca426f7 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x3ccd8b46 zynqmp_pm_clock_getparent +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce77caf register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3ce9a842 spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x3cf47e1d ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3d04d8e4 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3d2ade2a balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x3d2c2071 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3e33ac pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d7a82aa devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0x3d7c2bf2 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0x3d8831f8 of_pci_dma_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x3d9e3f41 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x3da37171 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x3da67e3b input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x3daa6ef6 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x3db783e4 switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc6b384 phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x3dd077da debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x3ddaab44 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df70c99 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x3dfc7dfd device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x3e08fcc8 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3e0d5ae8 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x3e22d71a inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x3e334950 cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0x3e3d85c0 usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0x3e3e159a devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3e3e4df2 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x3e4ca135 nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0x3e557f2c ti_sci_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3e5fe35a __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x3e605145 ti_sci_release_resource +EXPORT_SYMBOL_GPL vmlinux 0x3e6ecd92 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e76e64b usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x3e871e4e fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eac151e iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x3eaf0b5b ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x3ec4fc27 hisi_uncore_pmu_online_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3ed68d38 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3f116dc0 kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x3f1d8213 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x3f2196f8 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x3f26f92a perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f6abfc3 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x3f753f94 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x3f7b4317 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x3f805dd9 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x3f81cb91 pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3fac4f47 regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fad5cfc blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x3fbc1c76 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x3fca81f0 tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0x3fdb9b33 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL vmlinux 0x3fe62346 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fe7a383 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3fea029c hisi_clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x3febfc6b tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x3ff0c203 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x3fff9acf serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400c0424 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x400cca0c regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x40210964 skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x40267068 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4029cd35 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x402b5752 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x404d8380 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x404f435d device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x40538082 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x4060de62 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x407518d9 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x407af304 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4088d4d2 devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0x4099be77 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40b43bd0 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x40c308e5 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x40cce411 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x40d86b5a kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x40e11c86 usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x41109acf dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x4110cb0b of_msi_configure +EXPORT_SYMBOL_GPL vmlinux 0x41237f71 cpu_have_feature +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x41357eae synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x413a31d1 mtk_pinconf_drive_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x41472f08 battery_hook_unregister +EXPORT_SYMBOL_GPL vmlinux 0x414b088b meson_clk_mpll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x416445fe inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x416c4d60 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x4178997d addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41aa6a81 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x41aca12f __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x41acb459 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x41aecada udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41b8f2a9 devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x41cd6f7d nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x41e17b8a __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41eda85f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42230915 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x42324b3c devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x423c23ea sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x42568ee0 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x425b4f3f __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42641053 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x427a3a3e clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428839d4 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x428b5401 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x42b9ffd7 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x42c11cb4 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x42d3bc17 regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fba1c7 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x43000db6 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0x4325475f usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x4328b85f regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x432a3421 call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x43346c06 hisi_clk_register_phase +EXPORT_SYMBOL_GPL vmlinux 0x433ae21c user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x43439bbd ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x434b14c7 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x435b6d66 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x435f37f9 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x438808ef xhci_mtk_drop_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x4389b731 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x4393d13f get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43b247f0 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x43b29a7b phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x43b89bb2 icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0x43c11428 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x43c2a786 __cpu_clear_user_page +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fac6d1 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x440330b9 perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x44043c58 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x44126e1d tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x442df9b1 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x44434748 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x44464308 rpi_firmware_init_vl805 +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x446318d5 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449f6983 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44b4faa6 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x44b810dd of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44c3f2c1 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x44cb98ae spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x44cc3307 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x44e7c6e2 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x44ee1cb6 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x44f61687 bgmac_enet_probe +EXPORT_SYMBOL_GPL vmlinux 0x44fa6b45 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0x44fa9131 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x44fee405 badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x4527962b ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x4528b440 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x452a962d thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x45395b8d ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x454e629a fsl_mc_resource_free +EXPORT_SYMBOL_GPL vmlinux 0x4554ced1 usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x455d9b0c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x4561f990 qcom_smem_state_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4565f53e __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457963d0 phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x459a7763 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x45a75c4c iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x45b72ea5 gnttab_pages_set_private +EXPORT_SYMBOL_GPL vmlinux 0x45c186d3 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x45c33c3e pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0x45c9de1b crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x45cfb6cf ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x45d825ca irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x45f7781b perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x4608e6c2 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x462e3b9c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x46323377 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0x464287de pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x466093fb init_iova_flush_queue +EXPORT_SYMBOL_GPL vmlinux 0x4667a170 devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468f80b8 blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x46a656ff fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0x46afc0b4 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x46b6a203 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46c9ef9c k3_udma_glue_rx_flow_init +EXPORT_SYMBOL_GPL vmlinux 0x46cb5f57 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0x46e62e40 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x46e9ccc4 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x46ef7919 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x470219c5 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x471df26b ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4731f7d5 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x473369b1 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x47372fe6 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x473bd830 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x47444ae0 gnttab_dma_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x4755630f metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47624a6b usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x47696c9e bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x476a7e9e cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x476e2a0f platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0x477501ff regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4785dfbb hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x479cb337 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47a89953 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47db391c mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47deabcc __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x47f01a94 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4815aa79 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x48254bb3 acpi_irq_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4828ebcd relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0x482b076a serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x483a69d4 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4843a748 qman_portals_probed +EXPORT_SYMBOL_GPL vmlinux 0x484c1c93 devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48590ea5 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x486c9c03 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x488caeed rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x489e9028 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48be2cb8 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x48ced2ed devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x48d41ae2 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x48db13c4 meson_clk_mpll_ops +EXPORT_SYMBOL_GPL vmlinux 0x48e4de32 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x48f49400 apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0x4913581c synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x491933c9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x491a54a1 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x491afd5f ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x491fd53e usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x49367f81 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x4937b51c pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x494ff0fa crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x496e81a9 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x496f9837 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0x4982bcf0 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x498943f5 __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499a9402 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x499e8b44 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x49a0928d pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x49a90477 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x49adb132 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x49b3f1d8 cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0x49c1ec52 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x49c83a15 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x49cda04d of_reserved_mem_device_init_by_name +EXPORT_SYMBOL_GPL vmlinux 0x49d3d49c subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x49db5c64 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x49e0fd21 __cpu_copy_user_page +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49eb08ab pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x4a077061 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x4a07f203 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x4a0c0d2d ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x4a17c07d lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a2e1dae gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4897bb dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x4a5703f5 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4a80b8eb regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4a8660f1 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4a9493c2 tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x4a9636f8 kill_device +EXPORT_SYMBOL_GPL vmlinux 0x4aa42064 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x4aa58bea inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4ab44d6e fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x4acfae02 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x4ad4e2fd fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x4afaffad dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4afd13c2 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x4aff4889 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x4b04a7cc to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x4b0fb94f irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4b2b5286 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x4b2ff7f1 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x4b3f8bb7 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b68fd0b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x4b6a3e7e pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x4b6af532 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x4b817351 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x4b8ccb51 dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x4b904167 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x4b90d1b6 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x4b931968 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x4ba8a46f irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x4bace628 account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x4bb3344b crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x4bc73bad trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x4bc8727f xen_balloon_init +EXPORT_SYMBOL_GPL vmlinux 0x4bcb7466 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x4be2e50e pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x4bf1d278 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x4bf5bf67 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x4c14f3b2 __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4c2564bc regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4c2c0ea7 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0x4c730eb3 split_page +EXPORT_SYMBOL_GPL vmlinux 0x4c788f5f clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4c7b02f5 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4cae8797 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x4ce38dd8 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x4ce5e458 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d155086 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4d17f4e9 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4d1fcfec devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x4d202b8c __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4d322843 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4d33e1b8 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d503f1e hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4d52c7a9 hisi_uncore_pmu_read +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d75b2c8 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x4d83c710 k3_udma_glue_tdown_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x4d8a96ab xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x4d95d6d1 memcpy_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x4da1f4a7 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x4da65b42 of_mm_gpiochip_add_data +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4db77f4d hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x4dbdb767 ti_sci_get_free_resource +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4dde2173 __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de72a8e shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x4e17c613 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4e2f0d3f espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x4e3348d5 serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x4e49035b kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x4e4a3e7c blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0x4e4c37e2 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e574847 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x4e5dab52 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x4e636f3b gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4e8c3ded gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0x4ea0498d pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x4ea20db4 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4ecb1f31 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x4ece3615 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ee453cb ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x4eec453f tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f0786ef __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x4f17db39 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x4f20f899 pinconf_generic_parse_dt_config +EXPORT_SYMBOL_GPL vmlinux 0x4f2593f0 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4f347d6f bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0x4f42622f balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x4f520b32 tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x4f5ef435 blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f717a4c usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f738af8 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0x4f8a52b4 meson_sm_get +EXPORT_SYMBOL_GPL vmlinux 0x4f938149 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9ad1ee __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x4fa55f62 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4fa5b3eb hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4fbb0207 crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x4fc02643 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x4fc5fe8d bgmac_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fc8206e sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0x4fd8f3d2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe26d72 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4ffefde1 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x500c768c apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5059d1bc call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x5066857e skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x507216b8 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x50802067 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50931440 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x509ea22f firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x50a33d98 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x50a63f93 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x50a8ff79 ahci_do_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x50b7a714 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x50c2ae54 rpi_firmware_property +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ebd7ae pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50fd5b69 bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0x51241b24 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x51362b46 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x513bfb47 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x514da9fa usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x5157f40c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5160317b setfl +EXPORT_SYMBOL_GPL vmlinux 0x5169344d k3_udma_glue_pop_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x519fa588 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51b276fe __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x51c0b742 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51cfcd4a gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x51d22026 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x51fc9a6d xenmem_reservation_decrease +EXPORT_SYMBOL_GPL vmlinux 0x52036e4e cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x52121118 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x52431348 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x5249f499 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x5252783b dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5252a1b1 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52560e4a extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x525d0aa3 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x528914bd fsl_mc_bus_dpsw_type +EXPORT_SYMBOL_GPL vmlinux 0x52907351 devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0x52a34060 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52c449f1 skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x52cd9807 fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x530ccba2 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x531333cd unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x531b8c8e kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x53237bc9 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x53372065 md_start +EXPORT_SYMBOL_GPL vmlinux 0x53455f11 d_walk +EXPORT_SYMBOL_GPL vmlinux 0x534aa49a scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x5358e014 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x53652774 of_reserved_mem_lookup +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x53716773 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x537656aa kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x537968c2 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x5388484e gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x5389545d __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x538b92a2 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x5391f2c7 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x539ab91b ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x53a0ffdb fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0x53b13a23 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0x53b71988 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x53c14194 spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x53c3c599 skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53e0b54b devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x53e331a5 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53e67bc9 pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0x54015e41 genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x544d043e cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x545025e5 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x54525256 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x5453133b css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x545c7b6e crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x5468bf7d devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x54736fb3 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x5474060b pinconf_generic_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x54744c88 regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0x54801cfe msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x548c4124 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54955855 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x54a25da2 qcom_smem_state_put +EXPORT_SYMBOL_GPL vmlinux 0x54a4403c ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x54b1d5a4 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x54e8863c virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x54f05053 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x55174a89 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553f4f4e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555e6f30 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x555f9eca rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0x556d2606 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x558a6c2c ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x558dbcc6 mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0x5590f03f pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0x55948b11 ti_sci_put_handle +EXPORT_SYMBOL_GPL vmlinux 0x55a8a560 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x55af4a81 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x55bddc07 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55c34955 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55c85537 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x55c8bcb7 edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0x55c9880c zynqmp_pm_release_node +EXPORT_SYMBOL_GPL vmlinux 0x55cca521 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x55d08f47 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x55d4c087 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x55e04422 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f89c5c devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x55ff497d device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x560515bd blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561a5f21 crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562b80b1 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56335352 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x563c5dd5 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565bbf49 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x5674b3cb rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x567a7bdf debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x568cd97c usb_of_has_combined_node +EXPORT_SYMBOL_GPL vmlinux 0x56af67ba rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x56b8552b xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x56c0218f i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x56dd56ba __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56e5ec45 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x56e85fae dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x5710d0c1 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x5717ea96 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5719fccb usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x571a2153 fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x571f5f1b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5722ce5c skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x5729138e xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x572ccbdc kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x573b8a56 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x574609c5 apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0x574a0f8f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x575d1c2c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x576b2086 acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x57714dfc icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x57719632 gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x57732438 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x5778064e crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x577b0e53 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x578a74d5 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5796bc75 get_dev_pagemap +EXPORT_SYMBOL_GPL vmlinux 0x579cf662 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x579e3607 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x57aeff27 regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x57bbf7c2 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d81e8d hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x57ed70b1 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x57ef7829 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x57f2a3c3 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x57f302af devres_release +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57f706af xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x57fbea4e md_run +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x581bcd04 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x58276f93 cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0x58288174 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x582b8ed8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x58361f0f __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x586fbca0 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x586fdcbd cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x5877d227 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x58817436 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x588ee70f acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x5893c591 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x58955e40 handle_fasteoi_ack_irq +EXPORT_SYMBOL_GPL vmlinux 0x58a6d39f extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x58bf9bb5 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x58cc52a6 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x58f32db8 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x58fc6b34 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x58fd41b8 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x58ff4e50 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x593ba6f9 ti_sci_inta_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x5958919c tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x596af3de ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x597337ad pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x59740c89 __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x597dcf2c __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x59881f24 pinctrl_generic_get_group_name +EXPORT_SYMBOL_GPL vmlinux 0x598cabfa pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x59907fcb dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x5992d6a1 __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0x59a87701 spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0x59aa3a6a rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c08674 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x59cbdb0d pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x59d2a1b4 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x59d676b1 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL vmlinux 0x59fe70a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a4e371e __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a7184d6 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x5a729cef of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a823f49 dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ab27ef3 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x5ab9e678 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x5abaf3d3 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0x5ac15d50 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x5ad7e1b1 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5af51f26 rockchip_pcie_deinit_phys +EXPORT_SYMBOL_GPL vmlinux 0x5afc7e37 bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x5b0b8d44 nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b14cdd4 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x5b18b473 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5b1a430b tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x5b200c61 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b230c55 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x5b23654b mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0x5b2d0039 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x5b3200c3 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x5b46689e usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5b529f5b tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5b530d06 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b6b4bcc switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x5b6c52f3 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x5b6d20c6 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x5b7d4807 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5b80cde1 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b8e57db pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b937b48 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x5b9ff612 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x5ba07d95 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x5ba4a16b get_device +EXPORT_SYMBOL_GPL vmlinux 0x5bb0c866 pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5bb8f5be pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x5bbbd0de netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bc157b9 devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x5bc96999 blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd93d53 dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be29a6e strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x5beba069 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0x5bf4a2d4 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x5bfc773b pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5c00ca29 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x5c049a17 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x5c0f77ce HYPERVISOR_platform_op_raw +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c40bee3 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c8b6b71 spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x5c93107d of_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x5ca67d02 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x5caa20b2 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x5cab9945 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5caf4e69 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5cbc5e16 of_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x5cbf8936 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x5ccb5e7f switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x5ccbb7ff fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x5ce28fda led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x5ce61187 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x5cf8bde2 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x5cf9c940 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5d0087a7 meson_clk_pcie_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d17148b apei_write +EXPORT_SYMBOL_GPL vmlinux 0x5d20543c devlink_free +EXPORT_SYMBOL_GPL vmlinux 0x5d3e27dd regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x5d4f93c5 fsl_mc_cleanup_irq_pool +EXPORT_SYMBOL_GPL vmlinux 0x5d72295d fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x5d76332c usb_of_get_interface_node +EXPORT_SYMBOL_GPL vmlinux 0x5d76690e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d76e074 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d8b96fa bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da806c3 acpi_subsys_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x5dc16fdb metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x5de412cd k3_ringacc_ring_push +EXPORT_SYMBOL_GPL vmlinux 0x5de7447d __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5dfbb358 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x5e0a6b60 phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e3d4fe3 gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e6058e1 netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x5e60af2f dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x5e612a09 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x5e615260 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x5e685495 crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0x5e76bb57 k3_ringacc_ring_get_size +EXPORT_SYMBOL_GPL vmlinux 0x5e781dce fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5ea4cad4 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0x5eab7842 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0x5ec18779 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x5ec493f2 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5eced7f3 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x5ed35f04 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5ee4616a to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x5ee90e4a mtk_pinconf_drive_set +EXPORT_SYMBOL_GPL vmlinux 0x5ef548cf mtk_eint_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5efc1a43 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f2de2c0 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5f315fdb pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x5f318a4e bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x5f3a7a3b stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5f4b1edd devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5f5bfaaf nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x5f6c3440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f6fa188 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x5f72a984 dpcon_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f8928b3 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0x5f9ed574 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL vmlinux 0x5fbb5f33 fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x5fd42971 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fdabf4c iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x5fe267a2 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x60019704 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0x6003de36 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x60069ee1 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600a4eb4 extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0x6010d0dd regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6014c0f2 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x601ba3eb __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x602f43f4 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x6030b82b mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x603d0d51 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x60566fcf xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x605d5bfa cache_line_size +EXPORT_SYMBOL_GPL vmlinux 0x60626709 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x60806523 i2c_acpi_get_i2c_resource +EXPORT_SYMBOL_GPL vmlinux 0x6080c31a xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x608acc32 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60acc82f dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x60af2471 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x60b2967c devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x60ea7c3a usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x60eae37d gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60f99e1b cppc_set_perf +EXPORT_SYMBOL_GPL vmlinux 0x61051c4d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x611cfa85 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x6122e5e5 led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0x612348c8 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bddb2 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x612f514c of_property_read_variable_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x6132e47b xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x613b1337 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0x6148da3b serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x614adcb7 of_overlay_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x617b026c hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x618e2397 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x61a12df6 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x61ae1d2d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x61b91503 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x61c83b37 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x61ee181c ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x620243de devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x62126f46 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x62174e49 rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0x62178158 of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x621b1ece phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6232b016 iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6238b9c2 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x6238c8e2 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x623a1368 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x623f0ffe devres_get +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x625fd19f get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x627500fe fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x62754580 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x6277f6ef ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x628553e2 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0x628aaf9a fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x628d50f3 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x62930e5f hisi_uncore_pmu_event_update +EXPORT_SYMBOL_GPL vmlinux 0x62964c69 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x62b470a3 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62c976dc pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x62ce24cd devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0x62d73d9a acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x62d94822 of_mm_gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x62e537d0 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x630d38c4 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x632e8b6e pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x63358028 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x633904a7 device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x634118d7 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x634624a1 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x6346dc23 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x634bfbdb tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x63530dd2 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x6353f356 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x636ed69c __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x63712630 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6385f455 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x638aff11 proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x638c5c62 input_class +EXPORT_SYMBOL_GPL vmlinux 0x6397c891 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63a06ebe ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x63bb292b devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c1d80b platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63f5b5b4 __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x64017a0d edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x640ab48f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x643b06b0 zynqmp_pm_clock_setrate +EXPORT_SYMBOL_GPL vmlinux 0x644fcbcc udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x64675eaf kvm_vcpu_map +EXPORT_SYMBOL_GPL vmlinux 0x64747c2d pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647b5a67 pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x649be67c spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x64a513ce of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x64c41442 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x64c848a0 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x64d3cc4e xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64d5c560 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64f949d0 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x6502d9c2 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x65053351 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x65067143 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x650fcb3c virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x651869c4 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x6537bb72 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x65450309 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0x654ec27f xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x65511ca6 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x655e4879 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x657e0e2c iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x6582c3ef bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x659e63f8 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e01af9 __sync_icache_dcache +EXPORT_SYMBOL_GPL vmlinux 0x65e4f2b9 pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x65ebc500 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x65fd7c74 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x6608e6c1 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x664eb54a k3_ringacc_ring_reset_dma +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x665d7558 dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x665ed5bf regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6661c869 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x666b755a __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x6670f96a fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6698e716 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x66a6c061 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x66a81df4 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x66b1ce2c bgmac_adjust_link +EXPORT_SYMBOL_GPL vmlinux 0x66b53918 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66bcf85a aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x66c16503 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x66c8574c sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x66cb629b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x66cbcaf4 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dae379 devm_otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x66f37280 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x66fa1775 kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x670da364 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6718ed22 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x67235e1a memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x6727aa97 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673c53fb ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x6769f9e6 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x676c688f k3_ringacc_ring_free +EXPORT_SYMBOL_GPL vmlinux 0x676d9e33 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x67718b65 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6778981a otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x677b4190 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x67824883 dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x678c33b5 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x6792e25a __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a18841 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x67a8dd6a arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x67b39b98 devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67f8cfbe netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0x67fbe59e mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0x68248154 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x68263d99 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6833adc1 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x683ab55f virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x68425019 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0x6844c419 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x684ca117 zynqmp_pm_get_pll_frac_mode +EXPORT_SYMBOL_GPL vmlinux 0x68543a3b usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6869c8eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x68766390 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x6882c886 blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x689844c2 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x68a8c7dd ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x68ad3d26 mtk_pinconf_bias_disable_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x68c950a1 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x68ca5226 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x68d13fbf free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0x68d80b1c perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x68d94361 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x68dba123 __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x68e86673 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x68f26ae7 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x691795d1 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x692514dc rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x692c5a7f irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x694957e2 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x694a0602 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x694ce030 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x69505134 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x6957238c i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x695c64fa of_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x69625bbe set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x696340a5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x696f2b63 of_changeset_init +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69846b4b iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0x69868fe6 bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x69922313 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0x69a0f3e1 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x69b18bdd pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0x69b6e05f bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x69db3110 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69ef2377 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x69f55a05 vcpu_load +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a204849 regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6a330008 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x6a35633c spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0x6a393a7c crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4a331e pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x6a4c2adc k3_udma_glue_push_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a6bbe94 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x6a6bf3ed dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6a6dda44 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6a7391a8 dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x6a798437 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a846cf4 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x6aa2a877 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x6aa48479 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x6aad9152 xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x6aaf0f63 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6aca50b9 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x6ae05326 blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x6af55d40 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0x6b0d4738 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b3ae022 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x6b4045ee zynqmp_pm_get_api_version +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b477707 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6b77d553 sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0x6b8133e9 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b834121 bman_portals_probed +EXPORT_SYMBOL_GPL vmlinux 0x6b857fd7 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x6b8daceb fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x6b8eee8f nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x6ba43946 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x6ba521f7 em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ba5b1b9 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x6baaafbf devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x6bbba728 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x6bbf849c thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x6bc3d658 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bdadadd usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x6bdef35c acpi_ec_mark_gpe_for_wake +EXPORT_SYMBOL_GPL vmlinux 0x6be6a4a8 skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x6bea38ce iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6bfd495f mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0x6c065942 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x6c095f85 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x6c247190 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3b612b acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c405e8a amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c53dce4 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c617bb3 devm_acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c66bc68 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x6c74f586 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6c77d0df dev_pm_opp_of_register_em +EXPORT_SYMBOL_GPL vmlinux 0x6c8a3000 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c94ce07 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cacc78f regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6cb0ce87 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0x6cb651bd blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x6cbb04f8 blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x6cbccc66 devm_request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x6cccb73b of_property_read_u64_index +EXPORT_SYMBOL_GPL vmlinux 0x6cce49aa tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x6cddc94e fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x6ce10eb0 trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x6cf0ee82 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d161467 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d164837 pinctrl_generic_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x6d20ee5e led_put +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4e7cd4 rpi_firmware_get +EXPORT_SYMBOL_GPL vmlinux 0x6d63a861 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d841f70 irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x6d9655ce acpi_pm_set_device_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6dad9d01 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x6daf5539 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dda761c dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0x6de0ce06 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6defd01e iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x6df2a6ac genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x6df84afa usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x6dfac486 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x6dfb013f icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0x6dfd92c8 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6e13fc5a rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6e18e7ad extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6e2c62dd k3_ringacc_ring_cfg +EXPORT_SYMBOL_GPL vmlinux 0x6e36e483 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4aa78d k3_udma_glue_rx_flow_enable +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e4cd33f device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x6e5f9543 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6e612cda kvm_get_running_vcpu +EXPORT_SYMBOL_GPL vmlinux 0x6e766646 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e86d285 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4af2 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6e9ab7cd ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x6ea0ff55 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x6eb6fe17 compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6eed924d regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ef7606d __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x6f0c1457 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f638666 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x6f71d87f alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x6f92ae74 blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fb0586c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x6fcd1036 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fd6809e dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6ff01609 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6ff353fc kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x700a4be6 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x701f3c2b hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x70320dee inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x7033905f mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x703399a8 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x70357562 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7056c93e driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x70610dd4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x7068b833 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x706bf837 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0x7070a9c4 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x70782cff inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x7083e9c0 noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x70869f07 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x708c0594 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x708f5de2 fsl_mc_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70967a53 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x70a1ef67 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x70aca1b1 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0x70b105ff to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x70b7c07a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x70bb54e3 devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x70bca0ab platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x70c18b1f sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d11f35 ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x70d42dfa wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x70da534a gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x70db89ec cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x70e0c846 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x70eaf47e rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x70fa5dc5 thermal_zone_of_get_sensor_id +EXPORT_SYMBOL_GPL vmlinux 0x7101ed4f mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x710a5684 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7113a672 mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0x712d367c of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x71316503 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x713311dd wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0x7136d168 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x7136f3a3 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0x7143f146 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7148b8de spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x7155adcd of_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x71745106 rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x71753c0b regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x71819086 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x7181db30 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x718c8cad wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x718f5ee6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x719778e8 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x719c9827 xhci_mtk_check_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b5727d regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x71b687ed __acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x71b6fe98 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x71cd848c pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x71d4d58f __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x71dd5f56 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x71ed2181 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x71f479a4 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71ffa99d wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x72338aa5 i2c_detect_slave_mode +EXPORT_SYMBOL_GPL vmlinux 0x725ef455 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7293461a mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0x72b0072f pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x72b924c9 gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0x72c1aeeb __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x72c3264e ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0x72c427ec ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x72cb842e fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x72e53fde tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x72e9ed8c sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x72f48fdf ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x72feead5 genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x730f64b0 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x73242dcd cpu_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x732852fe xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0x73497e80 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x73535819 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x73623b16 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x73758617 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0x737f5163 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7381287f trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x7381bcdd of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x738b865b rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x73949a7d regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73d17bce usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x73e3c167 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x73f3e0cb rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x740427ea fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0x741be060 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x74249dfa of_k3_ringacc_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743b99d8 xenmem_reservation_increase +EXPORT_SYMBOL_GPL vmlinux 0x743ba17b devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x745e740e usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x74617483 wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x7472f8c4 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x748bd366 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x748f8936 tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x74a31282 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x74a3ca52 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x74a52c0a blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b75559 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x74ba66ae efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x74da847a da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x74ec3581 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x74f61eac ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0x7509846f acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75187d3c crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0x751a1e61 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75280962 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x753ac45f inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x7545cb4b gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x755ca284 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x758a43fe k3_ringacc_get_ring_irq_num +EXPORT_SYMBOL_GPL vmlinux 0x758c1f07 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x759bfe36 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75ad7bc3 component_del +EXPORT_SYMBOL_GPL vmlinux 0x75ae58ab devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x75c833e3 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75cd6ad1 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x75d25e7e __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x75d97a01 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x75dd4ebe of_overlay_remove +EXPORT_SYMBOL_GPL vmlinux 0x75ddcd07 usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f0e875 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x75fb9062 arch_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x7610c46a mtk_build_eint +EXPORT_SYMBOL_GPL vmlinux 0x762785af syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x763307e4 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x763aac03 ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0x7647425f component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0x766146c5 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x7665a95b idr_remove +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x766884b3 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768f9638 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7697b4b2 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x76983e4f dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76cec241 pinctrl_generic_add_group +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e85b92 gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76f92143 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x77031666 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7707e2a5 genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7728a82e dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77460812 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x7747c9d3 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x774f2a07 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77849a6f clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77aef0f1 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x77dbeae3 tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77eb2fe7 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x780c74d5 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x7813aee3 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x782a3efc ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x78324855 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x783f8644 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x785134ba devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x7871b493 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x78741b2a edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x78982866 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78a22f30 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x78a692c5 of_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x78b22314 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x78c85dc6 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x78c8dda2 iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x78e890e9 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x78f0026e serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0x790be0b9 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x7919ea62 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794a0461 rockchip_pcie_disable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7955d46e device_match_name +EXPORT_SYMBOL_GPL vmlinux 0x79679008 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x796eb0f8 acpi_set_modalias +EXPORT_SYMBOL_GPL vmlinux 0x797d8e02 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x7983dc2d usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x7984fa07 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x7985db18 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x79879895 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x798b7682 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x798c3b92 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x799aebb1 sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x79a4e933 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x79a672a0 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0x79bc842c usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e23632 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x79ed5817 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x79f4a931 dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x79f8242d __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x79f99487 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x7a08440a ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7a0918dc acpi_device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x7a0930e7 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x7a0d7033 crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x7a12283b devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x7a33dbca synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x7a3cca99 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x7a418da6 badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x7a463b15 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x7a4a64de netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7a672569 xen_xlate_map_ballooned_pages +EXPORT_SYMBOL_GPL vmlinux 0x7a6d3d85 acpi_dev_gpio_irq_get_by +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a7f48fa proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a8475a3 skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x7a865223 kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x7a893b84 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x7a932431 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7a98f4b4 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x7a9e4c23 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x7abfca43 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x7ac0d02a sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7ac10ad8 icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7aca9674 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x7ad1af9a devm_of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ad2c64c k3_udma_glue_release_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x7ad47292 perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x7ad7725f task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7add7f25 iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7ae6b283 lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0x7aeccdf2 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x7af86b7b fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL vmlinux 0x7b11bddb dev_pm_opp_of_add_table_indexed +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b1aff70 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x7b2163bd HYPERVISOR_tmem_op +EXPORT_SYMBOL_GPL vmlinux 0x7b4c9ba9 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x7b5452b8 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b610a7e irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7b692f19 fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x7b6f9536 acpi_register_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x7b856860 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b88df94 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b96446e fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7bc05d03 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bc37265 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x7bc44984 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7bcc62eb arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x7bd2c2c2 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x7be5d689 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x7bee20a2 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x7c05dd1d crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7c0dabbf amba_bustype +EXPORT_SYMBOL_GPL vmlinux 0x7c2642eb da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x7c3bedd7 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x7c3e70b1 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x7c5221fb pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x7c57421b x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7c626556 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c681aba efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c83f28e pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0x7c90b806 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9879c1 phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9ba7c7 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x7cb040fc vchan_tx_desc_free +EXPORT_SYMBOL_GPL vmlinux 0x7cb803de btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdb895f of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ce00437 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0baefe ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d154b6a usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x7d1d6714 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x7d2583e6 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7d2ca554 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x7d32893f zynqmp_pm_request_node +EXPORT_SYMBOL_GPL vmlinux 0x7d335f19 regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0x7d38dc75 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x7d42cd0d devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x7d4ab425 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5ecc19 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x7d68a3a8 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x7d6fb2bb __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x7d7c0435 fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x7d89712a fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x7dbc7c28 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x7dc0adc9 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x7dc5b43c edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddadd8a do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ddb2718 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7de6cc23 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7deaa707 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7df2c584 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e0497a3 rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x7e11346d mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x7e17b711 clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0x7e1f1f66 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x7e275ca6 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x7e2e4951 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0x7e3e60fa irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x7e460550 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e4ab5e1 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e707239 devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x7e7db6e2 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e7ef774 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x7e83cba8 fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x7e8d8619 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x7e8e143c dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7e93c2e5 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x7ea75c24 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x7eb7a50b crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7eb85a68 kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0x7ec814de inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x7ee905db dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7ef3ee2e __class_create +EXPORT_SYMBOL_GPL vmlinux 0x7ef86e0d devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x7efe547c vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7f050bd7 iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x7f083f80 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x7f268849 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x7f343197 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x7f41daa4 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x7f41e818 rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x7f4807ca regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x7f4863d2 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7f4e3fd4 phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x7f517cd3 bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x7f53cce3 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x7f5e1c2d devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0x7f63adbb tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f8d15a9 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x7fa796b2 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x7fa96509 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x7fb1d6cf serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0x7fc92904 bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x7fdfedb9 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0x7fe8153b fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x7ffc2ca6 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x80005dbf nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0x80067aa7 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x800f9aac class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x80135182 k3_ringacc_ring_pop_tail +EXPORT_SYMBOL_GPL vmlinux 0x80268fe9 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x8030ee17 devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x80365af0 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x8045a968 iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x805afea0 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x806fb067 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x807431d5 scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0x807766ea usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809498fe cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x809a0ff2 devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x80af7827 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x80b109d4 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x80c11314 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x80c449b0 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80ca9318 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80dee983 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x80eb545b iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x8115740c __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x813007d4 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x813ea878 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x814bb108 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8159e462 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x815dcfec pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8165597c nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x818a9eb1 skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x8192bf25 dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0x819930cf xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x819d72cb klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x81a72d4f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x81aa78d8 zynqmp_pm_aes_engine +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81b08b3c max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x81b541b7 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x81c4eec5 mtk_pinconf_bias_disable_get +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81dc89ba regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x81de4986 tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0x81df0539 bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x81e8be29 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x81fb17d9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x81fc598d fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x82092899 badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0x8220a38e k3_ringacc_get_ring_id +EXPORT_SYMBOL_GPL vmlinux 0x822199c7 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8224b6c1 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x823eae06 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8255bf7b pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x825b5653 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x826b5332 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x827e61f8 acpi_has_watchdog +EXPORT_SYMBOL_GPL vmlinux 0x828b04e4 reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x82a35744 fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x82a6aa0f ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x82b55458 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x82cb6418 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x82d5c75f devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x82d6d7d4 fsl_mc_bus_dpni_type +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82edecab trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x831a4180 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x8348e4f0 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x834e55de acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x8353b8a8 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8353dfff acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0x835cddb1 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x835fdadb usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x836501c4 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x8376381d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x8391adde syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x83953086 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x83998a93 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x8399e1b7 devm_of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x839f27b3 xhci_mtk_sch_init +EXPORT_SYMBOL_GPL vmlinux 0x83ab0334 nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x83acddfc irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x83b4a90b dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x83d7833a spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x83fe85eb dprc_close +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x8418201f phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x84188297 serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0x842333d4 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x84239ea0 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x84241fc9 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8424885c dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0x842520af blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842f046d usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x843e0285 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x8462da4d class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x846bda00 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x846d7c2e debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x84782326 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x847f1eae srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x84938836 timer_unstable_counter_workaround +EXPORT_SYMBOL_GPL vmlinux 0x84a8d0eb of_changeset_revert +EXPORT_SYMBOL_GPL vmlinux 0x84a8df67 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x84fa962e gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x84fdfa7b ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x850236b5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x851c7c98 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x85267fa1 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x85461626 sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x855831bc bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x8564a9fd l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x8565400c netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x85692551 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x85764c09 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x8589b2ee devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x85935a61 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x859d8fab pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85b1c626 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85b9bb6f blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x85c29a6b pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85e37f3b xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85e5d047 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x85e66dda crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x85ea0128 gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x8643a06f __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x864dfa3e ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x8658b4f5 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866ca6a3 gnttab_page_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x86700220 acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868de39d tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x868ee3af of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x8690680c vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x86a6aaeb blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x86ae72e8 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x86b13d2a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x86c43a8c cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x86c6998b validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86dcf4e2 i2c_acpi_find_adapter_by_handle +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x86f8c232 fsl_mc_bus_dpmcp_type +EXPORT_SYMBOL_GPL vmlinux 0x86fa2018 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x87029306 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871a51bf pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x871e4f25 iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x8729fded fsl_mc_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x872e0359 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x87424d24 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x8755c42f spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x8757f799 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x87702210 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x879820ca thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x879c91ff tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x87cd4d78 fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87d25228 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x87e34cc5 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x87e4cd26 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x87f49b50 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x87fe905a perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x88066be2 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8807fe8d dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x882b1bcd pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0x8831b41b xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x8839b008 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x884e299c nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x8856e29f user_update +EXPORT_SYMBOL_GPL vmlinux 0x8865624f akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x886b5d2b usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x8875b0cf bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x8876ecc8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x889e46d0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x88a0b63a gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b0f210 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88b63406 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x88b7aa8e virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0x88cd7a9a k3_ringacc_ring_get_occ +EXPORT_SYMBOL_GPL vmlinux 0x88f1a3a8 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x88fa3dcb virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x8908521f mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x890fa0fa btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x89239e9f kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ea4fe pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8939155d pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x893faa18 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894ecc50 blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x895d5deb nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0x89696218 reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x896b3e22 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x896f408e inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x8975a3a9 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x89799402 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x898a299a edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x89978973 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x89989b5f led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0x899c7b6b dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0x899e6719 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x89a4476d HYPERVISOR_multicall +EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d1e9a1 of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x89e340cf acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x89e41b81 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x89f0a812 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x8a078b40 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x8a106de3 devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x8a1318cf disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8a240bff __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x8a291afd dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x8a30ac9c __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8a3cb2de dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a45a555 acpi_unregister_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a4e533e __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a8d2394 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x8a9f2a8d regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac5f938 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x8ac96db8 device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x8ae84759 scmi_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8af24d28 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0x8afbfe36 cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0x8b0bdda6 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b4ecb5b hisi_uncore_pmu_counter_valid +EXPORT_SYMBOL_GPL vmlinux 0x8b795068 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x8b7abcaa phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b84172e irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x8b87dc65 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x8b8a7b8c blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x8b8b8e8e crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x8b95e345 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8ba77b99 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0x8bb5684b of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8bbe38c9 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x8bed3961 sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8bf5f379 k3_udma_glue_release_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x8bf6256b synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0x8bff51c9 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c069246 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x8c1e848b devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c254d44 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8c2cbb24 mtk_pinconf_bias_set +EXPORT_SYMBOL_GPL vmlinux 0x8c392092 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c42b635 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c484409 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x8c562ed5 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c939195 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x8cb5a38e k3_udma_glue_rx_flow_disable +EXPORT_SYMBOL_GPL vmlinux 0x8cd1ef74 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8cd7dfd6 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x8cd7e8f6 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x8ce24198 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x8d04940d dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x8d07f1f2 phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0x8d12c58f crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x8d139a50 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d15f0a5 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x8d1ae4aa phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d293fe9 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d3bc488 regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x8d40b2c0 iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x8d413d4e devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8d564c03 pci_ecam_free +EXPORT_SYMBOL_GPL vmlinux 0x8d5ad877 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8d5e90cf devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d652b6b sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x8d83c139 divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x8d8b4994 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8d94531d tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8d9632ed dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x8da79e3a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8dbe1666 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8dcc9fe0 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8dd461ea mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x8ddde2c3 devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8de01f87 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x8de4cb34 devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8df17512 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x8e02564c cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e16419b trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x8e1882a6 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x8e21dab5 platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e2d95d0 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x8e346090 hisi_uncore_pmu_stop +EXPORT_SYMBOL_GPL vmlinux 0x8e4665ab of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x8e4afee4 __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8e4b63a6 hisi_clk_register_gate_sep +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e68d279 tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8e6a3c87 i2c_acpi_find_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x8e6fa8b5 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x8e70cdbc tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x8e76eafd _copy_from_iter_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x8e78a36b mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0x8e7f0a9c acpi_get_phys_id +EXPORT_SYMBOL_GPL vmlinux 0x8e87c650 kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x8e883555 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x8e92a0e0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8eb24213 dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8eb72195 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8ebd5aed ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8ecbc0a3 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x8ecda1ae ping_err +EXPORT_SYMBOL_GPL vmlinux 0x8ee00adf acpi_cppc_processor_exit +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8ef330a6 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f198aba bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0x8f2093e4 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x8f2a66c5 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x8f2dcdfe iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0x8f33c92f dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x8f3969e1 zynqmp_pm_clock_getrate +EXPORT_SYMBOL_GPL vmlinux 0x8f443a1e device_add +EXPORT_SYMBOL_GPL vmlinux 0x8f516ff3 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x8f575b48 devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0x8f6683ba dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6d3802 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x8f6d8335 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f7bab47 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0a6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8f7e27ee __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0x8f801d8d rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8fa6052c sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x8fba69a2 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x8fba8503 set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x8fc13c13 hisi_uncore_pmu_event_init +EXPORT_SYMBOL_GPL vmlinux 0x8fd5063f rockchip_pcie_parse_dt +EXPORT_SYMBOL_GPL vmlinux 0x8fda5857 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x90069e53 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x9007d972 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x9024b103 debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x904e32b1 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x90553ff2 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x906b3b42 fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x906cc754 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x9081b5db btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x9084eb98 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x90897f39 dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x909183df gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x90af7426 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90c8498c apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x90c952b1 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x90ce8348 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x90d8deb3 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x90e3e144 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x90e8018d platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x90e8f3cd rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0x90ed32eb bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0x90fd25f4 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x90fe1039 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x9100e444 mtk_pinconf_bias_disable_set +EXPORT_SYMBOL_GPL vmlinux 0x9105684d crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x910baad1 serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x91171dee blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x911bd64c mtk_mmsys_ddp_connect +EXPORT_SYMBOL_GPL vmlinux 0x914c65f0 iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0x914e6d1b devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0x916c6fcf balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9190c14d pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x919425fd pv_ops +EXPORT_SYMBOL_GPL vmlinux 0x9194e18f xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91ab9f36 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x91bf220d mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c8b5b5 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x91ce0d8e gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x91e30809 HYPERVISOR_vm_assist +EXPORT_SYMBOL_GPL vmlinux 0x91f31481 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x91f4ec2c dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x91f5a88e fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0x920829b2 regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921aa79e amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92295424 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x922e3a5a acpi_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x923d9dba pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924ddb35 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9269c2d7 __fsl_mc_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x926c1554 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x92733dd6 devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x927487ea zynqmp_pm_read_ggs +EXPORT_SYMBOL_GPL vmlinux 0x9282a2d5 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x9291b976 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x92a0c6d8 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x92a22b8b ti_sci_inta_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x92c42f6d noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x92caf2ac clock_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d527fd irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0x92d8e56f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92dc89f7 device_match_any +EXPORT_SYMBOL_GPL vmlinux 0x92df6556 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x92e9cb84 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x92eb431c fsl_mc_bus_dpmac_type +EXPORT_SYMBOL_GPL vmlinux 0x9301dffd i2c_of_match_device +EXPORT_SYMBOL_GPL vmlinux 0x93068199 acpi_device_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x930ab533 k3_ringacc_request_ring +EXPORT_SYMBOL_GPL vmlinux 0x93132aa7 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x931af295 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x931c96a0 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x9324308a xhci_mtk_reset_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x933ccdb4 device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x933f75e0 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x934a9607 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x936245e8 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x93725986 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x9376e63f tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x9382e32e alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x938cc011 trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x93a91232 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x93b47407 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x93b818b8 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x93b94168 serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0x93d1d424 gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x93dd40e5 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x93f2f274 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x93f7ce2e get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x94076cb1 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0x940cf2b2 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x941824f9 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x942c9d3d iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943ccef3 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94496483 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x944f468f tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9450d026 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9451eb99 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x945d993a clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x945df638 firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x947e56bd anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94aa0167 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x94b1df1e device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x94b9eb62 dpbp_disable +EXPORT_SYMBOL_GPL vmlinux 0x94bdb401 nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0x94d11ac6 kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94eff7bb pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x94f0136c irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x94fb8332 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950ea90e __class_register +EXPORT_SYMBOL_GPL vmlinux 0x950ef58b ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x95121f8d devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x951f73c9 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952df815 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9537af48 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954b8ac1 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9554c116 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955c9304 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x95700743 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95918c66 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95a0c226 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x95a74abf vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x95b203a9 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x95b3580b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c0cd7c dprc_open +EXPORT_SYMBOL_GPL vmlinux 0x95c2b216 pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x95c7f8f7 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x95d05c18 xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0x95d249c2 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0x95d43597 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95efa1db pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x95fa07bf __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x960e593d i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x96175891 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x961828e3 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x961ae0b4 hisi_uncore_pmu_add +EXPORT_SYMBOL_GPL vmlinux 0x96246cf3 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x962c8ae1 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9632e31b clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x9642ddf8 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x9651d298 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96657339 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x96686245 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x96708f8f bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x9677b03c component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x968a5344 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x96953cdb crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x96cfeb41 of_genpd_parse_idle_states +EXPORT_SYMBOL_GPL vmlinux 0x96d445a7 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x96e0f7d3 extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0x96f4f31b ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x9701df28 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x97085198 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9715c5c0 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x9718c963 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x9719245e icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0x9719a2dd peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9721337b elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x97324694 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x97534555 gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9756f716 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x975f2ef0 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x97623558 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x9770d5f3 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x977be5c7 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x97849807 kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9787afeb ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x979d5ab6 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x97a4bbca nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x97a72e2c nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x97abb826 clk_regmap_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x97bc4a2f kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x97c04ae0 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0x97d92219 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x97dc2261 devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e733f2 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97fb0ea1 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x9802489b wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x980c7b23 sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0x9830186b balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98708ba0 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x9874128c skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x98911ba8 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x989a0752 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x98c27c74 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98ff5535 pinctrl_count_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x9904ff40 dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x99091f41 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x990b8543 serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0x990c1527 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x991a00de usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x991eaea2 crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x993ae56e device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x9945f261 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995d2f0b iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x99750b35 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x99802068 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x999a2730 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x99c0fab6 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x99d1097f __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x99eb0d1b blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x99ebd860 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x99ebdf9f devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a16ef4a memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0x9a506276 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x9a58dd2d trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x9a660d1a pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x9a996df2 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x9aa11eb7 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x9aacff7f devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0x9ab30621 fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad921e8 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x9ae4191f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afc1837 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x9b07dfe8 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x9b0a641f bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x9b0b84ad regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x9b14f732 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x9b163db4 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x9b2d065a gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9b316343 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x9b405bcf direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0x9b4b60fe devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b57745b xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x9b65148a tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x9b6b7195 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b781e6e ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b993fcf gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x9b9cabc7 dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba4acf8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x9baa8e83 dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x9bbb7749 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9bbd74f9 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x9bc717f5 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x9bc77923 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x9bc82227 sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0x9bd54c9f rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x9bde4c32 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0x9be47bd8 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bfad32d rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9c0542c0 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x9c0d7777 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x9c1c2a04 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x9c1e0110 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x9c24454a acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x9c29f8c2 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9c31b4ac sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0x9c482672 devm_thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c4bd8c9 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x9c6982bd virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c7874a0 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x9c7d2c62 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c937b4b thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x9c946c19 pci_pr3_present +EXPORT_SYMBOL_GPL vmlinux 0x9c9ab07f handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x9ca2867c debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x9ca58c3a mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x9ca80c34 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9caab9ef acpi_gpio_get_irq_resource +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccfa66d fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9cd7eebf ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x9ce24c23 usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0x9ce2ea43 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ce3024b power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9ce738ae __module_address +EXPORT_SYMBOL_GPL vmlinux 0x9cf37c44 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x9cf44173 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d1e45f3 dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x9d39165d __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x9d4ae2c9 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9d509953 serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9d52c82d ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x9d593c1b pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9d5d3e1a nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x9d9422f7 of_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x9da942c8 dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x9db0e2cf crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x9db5476c devm_ti_sci_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9db79967 meson_clk_pll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x9dc2c369 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x9dcb21db rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x9de0553a of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9e005e6f cppc_get_perf_caps +EXPORT_SYMBOL_GPL vmlinux 0x9e05e6d5 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9e08d700 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e39ef9e sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0x9e3a16e2 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4acdfb pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x9e59f3b5 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x9e5a057a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9e81b534 devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0x9e9421d6 sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x9e99be92 regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x9ea1331f regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x9ea9cc9f ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x9ebc9a1c rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x9ec4dce3 dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0x9ece5f7c devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f0197d1 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x9f11b1db devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9f32f336 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x9f36457e __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f3f848c __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f6bb588 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9f75bcbd power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x9f85f305 fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0x9f982cdf kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x9fa87e5b is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x9fbb9b04 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9fbfebab erst_write +EXPORT_SYMBOL_GPL vmlinux 0x9fc2ac3d rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x9fca119f trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd117ae gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x9fdbb106 sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0x9fe5c828 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fee29ce devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x9ffaa15f proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0xa0100bda ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa0179533 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa01e226a skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0xa0290d12 __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0xa0343865 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xa03bcc38 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xa0450444 fsl_mc_object_allocate +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0514012 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xa064e42a regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa06aadf6 virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0xa0a4bd1b mtk_pinconf_bias_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0xa0b56c88 ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0xa0c0a5ee __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa0c6befa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa0cd2657 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0e22d63 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xa0e8c702 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xa0fc8bc8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xa10d809f of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1268ce2 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa128e296 of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xa13206b8 security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa134737c ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xa13ffd39 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa15310e0 devm_of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1627818 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xa1641d4c restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xa1644c64 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa1691b63 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xa16bd696 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xa17a5e31 devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0xa18a4906 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xa193c8c2 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa19c48b2 pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa1cf093e fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1e63269 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xa1e94069 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1ea0150 fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa2064496 fsl_mc_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa21ba1d9 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xa21f316b sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0xa22c511c of_find_spi_device_by_node +EXPORT_SYMBOL_GPL vmlinux 0xa22d00ae iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa23a7f30 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0xa23ebaa7 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0xa26229e1 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27d2216 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa29b95ec devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xa2ae4529 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0xa2af54b3 irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xa2b237cd __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa2cd6caf irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xa2d4de5d tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2f51bea kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa30ad672 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0xa30ea0cf pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xa3149222 phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0xa33105ea cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0xa3386e14 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xa33a6ddf rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xa34ff487 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa3534407 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa3659b5f __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xa37c4b38 bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0xa3808ba7 devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa38c1436 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xa3953db2 meson_clk_cpu_dyndiv_ops +EXPORT_SYMBOL_GPL vmlinux 0xa3970925 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa39c13df acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xa39caf08 xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0xa39d826d __put_net +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a256f9 cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0xa3ae711b sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c31f98 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa3d19ffc sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa3d767af rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa3dcb681 zynqmp_pm_fpga_load +EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa40fae3b devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa4234c8b pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa42b072f hisi_uncore_pmu_start +EXPORT_SYMBOL_GPL vmlinux 0xa42fc91c udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4393f41 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa45264b7 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4534080 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa45d44fc zynqmp_pm_get_pll_frac_data +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa47cfbe9 sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4877ccb of_clk_hw_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xa48ab4b7 addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0xa48e742b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xa49c802c gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4b7cfba blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xa4bfb27f fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0xa4cc1a8d platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa4d74a7c fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xa4ec6c01 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xa4f2a2ed acpi_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xa50335f4 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0xa5081eda gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xa5203752 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa532994e l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa53712ff disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa5484838 rockchip_pcie_cfg_configuration_accesses +EXPORT_SYMBOL_GPL vmlinux 0xa55d6f01 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0xa577cfa7 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xa58c1622 mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0xa5a0f5da fsl_mc_device_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5b88154 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xa5bda8a1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5e7aae6 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa6060983 scmi_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa611d2de disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0xa6143ac6 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa619667c dprc_get_obj +EXPORT_SYMBOL_GPL vmlinux 0xa62688f3 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xa6277047 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6386778 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xa639d149 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa645ca5b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa64afd19 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xa66aeaae ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xa66bb932 serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa67e1352 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xa6824f3f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xa69128e8 page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b414bb wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa6d9c9be crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fcafd4 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa704438f sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xa706ecf5 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0xa709b201 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa7113b10 dpcon_set_notification +EXPORT_SYMBOL_GPL vmlinux 0xa7198523 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xa71c6c77 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa731f387 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa7336759 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa73455ce devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0xa73a7774 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xa74a6930 gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0xa759ebc8 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xa77e5b45 iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xa7856098 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0xa788700b copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xa799292b dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0xa7c76bf4 scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0xa7d9457c ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xa7e21237 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xa7e457d7 dpbp_get_attributes +EXPORT_SYMBOL_GPL vmlinux 0xa7f2f195 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0xa80789f2 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xa80c708b rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa81a2e64 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0xa81e385f get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xa8315f12 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0xa83235a9 of_device_request_module +EXPORT_SYMBOL_GPL vmlinux 0xa83dc5d3 mtk_hw_set_value +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8671f45 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa86d041b gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xa88044a5 serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0xa8962a44 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0xa8976623 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xa897eb52 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa8a19015 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xa8a544ef device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa8a62ace __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xa8a9d253 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xa8b286cc adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8bce916 i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0xa8c56d1d sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa8c9262b pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xa8e29187 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xa8ebe54e cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xa90aac06 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa91ffba3 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa9244f37 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xa9318cc7 dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa936a20d of_phandle_iterator_init +EXPORT_SYMBOL_GPL vmlinux 0xa93f5d5d of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xa96d0752 __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0xa979ec9b find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xa97aec55 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xa97be10d sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xa97c9935 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa986a182 ahci_platform_disable_phys +EXPORT_SYMBOL_GPL vmlinux 0xa993d603 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xa9969394 serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa99941f9 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9b4287a pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xa9b5efcf wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0xa9bc8b74 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa9be1c41 crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e629ce cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa9f3418b is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xa9f3dcc7 of_css +EXPORT_SYMBOL_GPL vmlinux 0xa9fb9a69 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xaa13a4c0 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xaa1702c5 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa1968d5 dpbp_enable +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa240cf8 __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xaa39b76d tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0xaa521a87 __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaa668fae perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa86b05c pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xaa9981b2 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0xaa9bddd8 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab038db icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0xaac75c24 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xaaeb332f perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0xaaed9c77 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xaaf03c00 perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0xaaf34ba0 irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0xaaf95668 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xab00d0e4 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xab052adb iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0xab060841 zynqmp_pm_query_data +EXPORT_SYMBOL_GPL vmlinux 0xab0d9829 i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0xab2a50bb device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xab2b2165 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xab47fccb xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xab4e5146 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xab4e6ad1 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xab54dca5 pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0xab763ed6 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xab796650 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xab8a54f3 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xab9d2b6f nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xabaa4114 alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0xabab83ae raw_abort +EXPORT_SYMBOL_GPL vmlinux 0xabba4a0b dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xabbdbd35 zynqmp_pm_reset_get_status +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcf8fd6 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xabcfed9e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xabd45848 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xabdc9c3c of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xabdd5e10 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0xabe87f79 pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xabf8bc72 devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xabfff2af __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xac039d89 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xac0d80d4 sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xac177049 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xac23254f __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xac31e75d dpcon_get_attributes +EXPORT_SYMBOL_GPL vmlinux 0xac349299 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xac39a3fd fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xac3d50a1 of_pci_get_max_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xac51090c devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xac58caea ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xac5e2c18 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xac5ec8e9 security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xac5fd6e2 of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0xac72da47 psil_get_ep_config +EXPORT_SYMBOL_GPL vmlinux 0xac7805cd crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xac78cc24 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xac8403da tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xac99560f blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xaca174b0 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xaca492ff regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0xaca8ef48 gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacc12296 blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0xacc95be9 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xacd28488 update_time +EXPORT_SYMBOL_GPL vmlinux 0xace99d2f serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0xad02f022 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xad0f2b6c unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xad1bed38 led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad834b41 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xad856b4d sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0xad8850de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xada33f74 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xada9d464 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0xadbc0d51 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xaddc59d9 tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xaddccde1 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xade86a35 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xae1228f5 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0xae159092 validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0xae17a733 __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xae2036d0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xae21ca2f ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xae29f9fe blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0xae2cad4e iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae3f6934 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xae4720a2 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xae66224d dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xae662649 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7571f8 device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae80e903 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xae834889 devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xae8b6ac2 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0xae93cda6 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xae98773a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xaeb12315 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xaeb6296a tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaec55c24 scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0xaed32ebc dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xaed399f1 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xaed6f308 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xaef25604 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0xaf0b6ba7 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0xaf1075a4 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xaf12e5fd tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xaf207c00 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xaf2bbd00 hisi_uncore_pmu_disable +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf543abf __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xaf6ba1f1 pinmux_generic_get_function +EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaf961e49 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafb3cdfb lochnagar_update_config +EXPORT_SYMBOL_GPL vmlinux 0xafb70efb of_phandle_iterator_next +EXPORT_SYMBOL_GPL vmlinux 0xafb71fca regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xafb90a97 crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xafe31dc2 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xafe7857c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xafeb4806 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xaff0cef7 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb0204c02 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb029d27a devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb02e17fe kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0xb02f9344 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xb04223b1 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0xb05b5c35 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xb0647efd xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xb06c7b15 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb086d14a ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb08a22a3 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xb08c5b7d fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xb096931c iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d8327b pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb0e8e671 xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xb1046a22 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb107b5de kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb112b54a i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0xb115ab97 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb1256bf9 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xb132e784 pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xb1380d12 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14911c7 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb166d4cf mtk_smi_larb_get +EXPORT_SYMBOL_GPL vmlinux 0xb16974f3 dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb170260b inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb1839e82 kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18c4a40 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0xb18e2375 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb190ea23 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xb1b4e973 mtk_paris_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0xb1b5d7d2 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb1b8721f class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c6d551 gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb201ca0d blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0xb214ecbf ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xb2187299 pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb2467e8f ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xb2508a0f ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27714a1 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xb29c2bf0 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb2a1a64e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb2a6c19f blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb2b48be3 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2d2c843 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xb2dc4f7f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e849ff skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0xb3010098 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb3329922 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xb3351c6c rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb337cf88 generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0xb34bd5da devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xb3549fc8 clock_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb363c20d sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb3697565 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xb393101c kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0xb39a3683 pinctrl_generic_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xb3a57a49 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb3ab85fa __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb3b9ad31 ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xb3c5ecd9 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xb3c6876e fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xb3ca59d5 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xb3d8b558 gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3df4e82 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xb3fa2974 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xb3fb1553 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xb3ffe429 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb40d1e4c vfs_read +EXPORT_SYMBOL_GPL vmlinux 0xb4169066 put_device +EXPORT_SYMBOL_GPL vmlinux 0xb41c73af tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0xb42dc1a5 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb43b4056 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb443b9f1 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb44b4f9f devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb4584da4 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb466e7e6 __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xb4686d29 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xb47de6d7 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xb4819f8f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb4871e9a inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xb492611b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb497ce5c netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0xb49b8d21 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0xb4b8ad08 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cac28f clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xb4cc8181 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb4d37633 fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0xb4dadd03 pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4e8a87b ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4edd3be usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb4ee5ff4 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb4ef9f88 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4f0c357 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0xb4f6e419 scmi_protocol_register +EXPORT_SYMBOL_GPL vmlinux 0xb4f7b90b tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0xb4ff6bb6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb510c250 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb520eb79 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb52d3775 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb533ea44 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xb53f467c acpi_subsys_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xb5436356 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb5460fac crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xb546485d of_property_read_variable_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb54b0e9b generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0xb54b753a led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0xb5539062 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xb555819c posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb55de460 HYPERVISOR_dm_op +EXPORT_SYMBOL_GPL vmlinux 0xb56e9ed3 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xb579076a regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xb57f19c6 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0xb5854078 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xb5a83e35 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xb5a8c226 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5b6db8e tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb5cd70e5 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0xb5cdf8f8 pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0xb5d17480 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xb5d92946 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5dc1102 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xb5e4a86f edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0xb5ed48c8 bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5f597bd regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xb5f8ca92 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0xb5f97ba7 of_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb5f9aa82 crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xb5fe5608 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xb61dd682 user_read +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb64271a8 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb652cfb6 phy_configure +EXPORT_SYMBOL_GPL vmlinux 0xb661fed1 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xb66e975e gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb683f19f mmput +EXPORT_SYMBOL_GPL vmlinux 0xb68c7cf8 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xb6a76fd4 ahci_handle_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb6b1851d skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xb6bfc379 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb6c13d6d usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6c63119 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb6c8f9a5 alloc_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0xb6e5094f xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb702838b alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0xb7042603 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xb70973e0 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xb71ebfc3 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb71f212b crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xb720de9f rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xb723a8ca __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0xb7407d7b is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xb75665aa regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xb757086a of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb7695ec7 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xb77b9d48 udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0xb7871749 nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0xb7a2fc00 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xb7a361b4 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7af0a19 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb7b100fc edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0xb7b5883c fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0xb7b61e4a posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7df8c6c dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb7f5d22b crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xb7f6f663 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0xb7f73ef8 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0xb7f990e9 rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xb7ff008d skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xb80c2e1a ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb8198a4d transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xb81daee0 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xb820cb84 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb825d029 __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0xb8273d0b __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xb8308abd sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xb837e2fc devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xb852d406 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb8612532 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb8617afa irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb864336b icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0xb87d373c of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89bc9bc efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0xb89e49fe pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8b129e8 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8b30ad4 power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8da7ad4 devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0xb8e731dd clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xb8eb7c91 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0xb8f11603 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb91e847b sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xb921ad05 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xb92f6f2b dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xb9321b32 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0xb9512e5f tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb970af7a regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xb97aebe5 alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0xb994ec22 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0xb998cccc security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ca7edb usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9f1c10b dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb9f87ff0 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xb9f89246 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xba07f21e clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xba1a6626 mtk_pinconf_bias_set_combo +EXPORT_SYMBOL_GPL vmlinux 0xba220db7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xba25d250 blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba2f728e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xba433456 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba60bf51 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xba691402 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xba7359bb irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0xba8bcb78 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xba94e771 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xba9560d0 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xba984d9b acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xbab6ae52 __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabf2dbc ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0xbac71e17 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0xbacb4976 icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0xbad41702 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xbae929b5 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xbaf2a403 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbb06faaf k3_udma_glue_request_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0b25d2 register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0xbb0cd812 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xbb14c207 pci_parse_request_of_pci_ranges +EXPORT_SYMBOL_GPL vmlinux 0xbb155c0d con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xbb176fd1 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xbb1f591b __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xbb2487e2 hisi_uncore_pmu_get_event_idx +EXPORT_SYMBOL_GPL vmlinux 0xbb409188 mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0xbb456802 iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xbb45b928 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xbb4baaa8 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb755abf gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xbb765d37 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xbb77bb4c mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0xbb839fe1 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xbb9be0bb md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xbbd509c1 dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0xbbefe128 iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0xbbf27385 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xbbfa49e7 fsl_mc_get_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xbc00f453 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xbc017d07 bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xbc1fa89a ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xbc390ee9 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc775842 nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0xbc78540f register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xbc7ec879 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbc824e9f unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xbc853573 __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xbc8edf4a bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0xbc9b8588 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc88bb1 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd162ff iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0xbcd24cd3 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0xbcd61dfc linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0xbcdb2747 reset_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcea581e pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0xbced9b9f xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd1888bd bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xbd190268 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xbd266fa9 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xbd2b5cd8 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xbd2ce79e dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xbd2e4631 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd45320f of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xbd6eba24 xen_set_affinity_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xbd6f874f dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0xbd7b4f1f devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xbd7f2586 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xbd7f9233 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xbdc51f25 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xbe259f8c led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xbe2bee54 xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbe50f145 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xbe521f37 devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0xbe5c888b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe5e3414 k3_udma_glue_reset_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6e08f4 screen_pos +EXPORT_SYMBOL_GPL vmlinux 0xbe70aebe skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea10cf1 xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbea20511 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb2d836 spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xbeb4f50e inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbebd0150 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0xbec66c3a __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xbecd2069 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xbed32f5c debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xbeffcb45 of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0b48b2 uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0xbf0f402b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xbf221bb7 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xbf247753 ti_sci_get_handle +EXPORT_SYMBOL_GPL vmlinux 0xbf34bdee vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xbf5cb3f8 sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0xbf5d0a7a iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0xbf5e5251 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xbf6a3984 nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0xbf6a5aa1 fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf700b8b iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0xbf874bc7 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0xbfa0cec2 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbfb63d05 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xbfb92dee bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcdaef crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0xbfc804d1 dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfed2cd9 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0xbfee0ead sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xbff4f9a8 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbff74753 skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc01e6077 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xc03b3b5c gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xc03b647f xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc0401fc6 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xc04eca99 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0539487 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xc06b7dd3 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc06c1b2e mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xc07142ea pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc07ee154 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc09ae3dc virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xc09d3073 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xc09d8543 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc0a3d155 k3_udma_glue_rx_get_flow_id_base +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0a9e137 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f166fd sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xc0f590c1 usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xc1084136 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc11870bd firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0xc11d74a1 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc11f6dfb device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xc1246074 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc12c2d30 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xc131d943 __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xc133a964 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xc14b60a3 pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17e9946 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xc18594e3 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xc1a75eda led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0xc1b4b5bf usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc1cb2fe2 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0xc1d122b2 kvm_vcpu_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc1dce028 k3_udma_glue_reset_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xc1ecc1a4 meson_clk_dualdiv_ops +EXPORT_SYMBOL_GPL vmlinux 0xc1ef6c42 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xc1f2dbe1 usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0xc21601bd devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22ed7f4 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xc22fa6bc i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xc2319467 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc2341d4c nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xc247d293 blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xc25ef00b shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc2609ac1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xc2654a1e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc26abf76 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc288f940 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc295b9f7 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xc2a3e570 errata +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2b4866f gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xc2c1b473 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc2c3790c smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc2cab60f ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc2cf469c pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xc2da6587 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xc2de27ca hest_disable +EXPORT_SYMBOL_GPL vmlinux 0xc2efb37a br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0xc317edd2 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xc319dd20 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc31edf22 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc31f61b4 shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0xc32696f0 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xc329ad17 bgmac_enet_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3382c5d sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xc33e5d55 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3432887 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xc346720d pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0xc3559455 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xc3560a61 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xc3636c74 of_map_rid +EXPORT_SYMBOL_GPL vmlinux 0xc36e5e0d find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc382ea06 fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xc385133a vcpu_put +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3a15e97 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xc3aff859 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3c94674 devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0xc3d497ca dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0xc3db4422 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3dea881 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3ea8f3a synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc3eb1fdb gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc3f176bb strp_init +EXPORT_SYMBOL_GPL vmlinux 0xc3f97bba fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xc40db564 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc40f4e07 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc428652e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xc4359ea7 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xc436abe3 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xc43a640d devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0xc43e92b9 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xc4515360 dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46324f6 dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4741ea7 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xc488d05f crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0xc48af6b8 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49c5b85 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc4a6c072 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0xc4a72936 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc4a8183b list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc4ac8eef __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xc4c7a36d device_del +EXPORT_SYMBOL_GPL vmlinux 0xc4d6fe01 pinmux_generic_remove_function +EXPORT_SYMBOL_GPL vmlinux 0xc4dfa65e rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc4eae733 perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc5156bf3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc51818e9 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xc51c6cc3 hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0xc52f0388 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0xc5551698 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc563efa3 xhci_mtk_sch_exit +EXPORT_SYMBOL_GPL vmlinux 0xc564ec25 ti_sci_inta_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc57831d9 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc594d840 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc5996c8c pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5a6ed4c ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0xc5ad185e iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0xc5b4e6a0 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xc5b72db7 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0xc5cbceb5 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc5d789df alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc5d93016 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0xc5decef6 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc617701b __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc6228513 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc63a0b1d device_move +EXPORT_SYMBOL_GPL vmlinux 0xc6540799 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc6572a90 xenbus_read_unsigned +EXPORT_SYMBOL_GPL vmlinux 0xc658f8a4 perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0xc65c2b97 nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0xc65e5199 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6729494 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc68fcc49 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a23e68 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6ad07f2 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xc6b81264 nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0xc6be404d devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6c18c7d acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xc6d44cf9 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0xc6def34b gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xc6e1fd57 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0xc6ff0211 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc700d1df __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc7052516 devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc724f703 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc7251f9c ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xc74ec6e4 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xc756882c __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc75f3847 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xc766c018 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0xc7671788 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0xc76ea802 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xc7856e74 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xc787ff99 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc792fa55 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xc79413b2 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a29d66 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xc7a90141 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc7b23c92 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc7b9f77c amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc7c23ff0 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0xc7c26966 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc7ead693 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xc7ebd997 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xc7f5ee7d fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc812056c pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0xc8130b28 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xc813aeac platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xc81474fd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xc82288e2 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0xc82468b9 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc82cf759 acpi_cppc_processor_probe +EXPORT_SYMBOL_GPL vmlinux 0xc839c1ce trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc86ba642 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc86e5225 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0xc871d7c9 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xc87cc293 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc87dd725 k3_udma_glue_pop_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xc87fb025 xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc89a428b of_i2c_get_board_info +EXPORT_SYMBOL_GPL vmlinux 0xc89dd5d2 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xc8b789ab usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xc8c25208 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8deb5f7 clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0xc8e45bea sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc8f27f18 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xc8f522b7 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc8f71cfb acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xc90fefa7 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc924f8d4 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc9345c0f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc93751ff tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0xc938e66a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xc939b94f __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc959d733 iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc96063c6 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97a00c9 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97d6918 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc9819706 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc985a1b6 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc9a22d6e scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0xc9a442a3 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xc9b2e6eb dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xc9bbaea8 clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0xc9c53e58 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xc9c8f2ea nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0xc9c9cff4 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc9ca8152 dprc_get_obj_count +EXPORT_SYMBOL_GPL vmlinux 0xc9cdb0c7 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc9d3f377 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9efb672 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xc9f7ede5 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0xc9fa5457 fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0xc9fb00f7 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0xc9fc789b fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL vmlinux 0xca345174 find_module +EXPORT_SYMBOL_GPL vmlinux 0xca496b92 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xca76b31c tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xca79508f ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca82b54a fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0xca8468cf bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0xca859484 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xca984b7c usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xca9a8173 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcaa96830 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xcaacb697 tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0xcabb45e9 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xcabd199d gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabf0bc9 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xcac70aaa crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xcacd88a0 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xcad8d8d1 dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0xcae7ce5d fsl_mc_get_version +EXPORT_SYMBOL_GPL vmlinux 0xcaf1d958 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xcaf7ba8d usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb076351 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xcb158823 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb3f591f mtk_pctrl_show_one_pin +EXPORT_SYMBOL_GPL vmlinux 0xcb441620 crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xcb4cefd2 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb5b236d usb_of_get_companion_dev +EXPORT_SYMBOL_GPL vmlinux 0xcb6ee274 iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcb877bcc fsl_mc_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcb8d82ae kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xcb9031bf pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xcb9a3709 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcbe455fb clk_register +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcc0fd0a7 k3_ringacc_ring_push_head +EXPORT_SYMBOL_GPL vmlinux 0xcc1eac62 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xcc20c5d4 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc381312 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc51f83a xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xcc52a4da spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc55f7da of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xcc579d31 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xcc639c82 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xcc658e5b ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xcc72f0d0 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xcc7d00f0 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcc7f8a58 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc85935e udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcc8b497b relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcca0d178 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xccaa772d rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xccb544a8 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xccbb22a5 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xccc26674 wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xcce0952a anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xcce582e1 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xccec51e4 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xccf6c787 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xcd03e62b __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xcd05ba0f fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0xcd107097 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xcd162734 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0xcd22c092 devm_thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd37e8ee power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xcd3e5c7c acpi_release_memory +EXPORT_SYMBOL_GPL vmlinux 0xcd4be7fd dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcd6175b5 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd71a79f lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcd759b82 k3_ringacc_ring_reset +EXPORT_SYMBOL_GPL vmlinux 0xcd76ebd7 clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xcd913360 pci_host_common_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd96fb29 mtk_pinconf_adv_drive_set +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cbcbf generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdaa9be7 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbfbcf0 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xcdc571cc debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0xcdc86b55 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde26600 cppc_get_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xcdf29fa2 __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcdf3bfee gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0xcdf4719c extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xcdfe2b49 decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xce09e7e2 ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0xce0a4020 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0xce0c96d2 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xce12e020 bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xce1c1f20 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0xce284be6 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xce316d7e zynqmp_pm_set_sd_tapdelay +EXPORT_SYMBOL_GPL vmlinux 0xce3aa028 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xce3f4439 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xce52efb1 pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0xce57fc68 mtk_pinconf_adv_pull_get +EXPORT_SYMBOL_GPL vmlinux 0xce650fe3 regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xce6624e5 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xce6ba491 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce735db2 soc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xce85c790 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0xce94b373 regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0xce95befe bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0xcea28225 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xceac8674 zynqmp_pm_read_pggs +EXPORT_SYMBOL_GPL vmlinux 0xceb0f085 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcec1fb7e devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xced13e80 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xced48970 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee5c8d5 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0xcee88e7a of_overlay_fdt_apply +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xceee14bb dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0xceeeb285 dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0xcf15cb53 pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0xcf1d9de5 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xcf41e73d ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xcf512c72 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf6eb9ff mtk_pinconf_drive_set_raw +EXPORT_SYMBOL_GPL vmlinux 0xcf853cb7 led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0xcf8fac45 sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0xcf9325d1 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xcf967b64 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xcf9ffeea gnttab_page_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xcfa395eb md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xcfb17a08 trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcfbaa72e of_usb_get_dr_mode_by_phy +EXPORT_SYMBOL_GPL vmlinux 0xcfc15f4b rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0xcfc37766 mtk_is_virt_gpio +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfc93e62 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xcfcfc3ae of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xcfd30d71 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xcfffb964 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0025cf0 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0026b9c devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xd0058322 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0073b5e dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd016f781 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xd018f7e2 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd02f1281 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd040df3d cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xd04307f0 fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0xd043f8d5 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd04ed77e wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xd0516bb0 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xd057eef5 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd09911a6 acpi_dev_get_irq_type +EXPORT_SYMBOL_GPL vmlinux 0xd0a447fc dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d156e9 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xd0d3f0a4 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xd0d40c85 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xd0d5f2d5 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0e9ad51 i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xd0f9c2cd nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xd0ffdf61 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd1020ed9 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xd11f55e8 fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0xd12067e8 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd123a5a8 devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0xd12d7564 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1420f83 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xd1456ccf stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd15a96fe irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd16724d9 nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xd1721ac7 devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xd184227c fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd188bf0b do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0xd19a543d pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0xd19ed88c regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd1a706c4 iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0xd1a88aa3 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xd1aceceb clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xd1c7d114 debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1ce578d rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd1e7ca0f uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f4e459 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd1f9ccd4 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0xd1fa6a94 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd1fdb234 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd206cb55 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd213e32a __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xd217b2ca pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd221f9e6 synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0xd23c80a5 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0xd24b7103 fsl_mc_portal_free +EXPORT_SYMBOL_GPL vmlinux 0xd24e9e8c klist_init +EXPORT_SYMBOL_GPL vmlinux 0xd2553245 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd26c5e56 of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xd26f53e8 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27ac54b open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xd27b79ea devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd27f215d gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xd2922fe0 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0xd29ab1c2 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xd2a6febc xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2b117eb security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xd2c8ae77 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2d60820 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2e07b0b da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xd301ac41 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xd30b6589 iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd32694be sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd33c4956 sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0xd3444e81 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xd34b2325 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xd367f428 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xd3752c27 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3b0fb9a thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xd3bfa753 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3c02806 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL vmlinux 0xd3cdeb4a report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0xd3dc3c5a task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40de7f4 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xd412966c inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd419549f ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xd41a451e pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd41d7d85 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xd423892f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xd4265dbd __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd44276d0 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xd446f88b pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0xd4494e95 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46af5ef cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xd48b5743 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xd48c28a7 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4938ddb pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd4966b32 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xd4b095d6 dpcon_open +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4b7c9e6 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c987f5 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd4ef8d15 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd4f12048 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd50694ef led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd50730c1 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xd507d30a virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xd51755c2 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd5210685 cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0xd527a446 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd5393ded crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xd53c67b3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL vmlinux 0xd54cafc7 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xd54d9d6e ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5772bd6 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd57fbd31 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5807af3 k3_ringacc_ring_pop +EXPORT_SYMBOL_GPL vmlinux 0xd58263e4 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd5835918 save_stack_trace_regs +EXPORT_SYMBOL_GPL vmlinux 0xd5863c68 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5ad357f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xd5b57ab3 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5c1c1dd driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5c9f1f3 fsl_mc_bus_dprtc_type +EXPORT_SYMBOL_GPL vmlinux 0xd5d0cb44 dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0xd5f36b32 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xd5fe4abd kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd601edf2 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xd6133e76 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd6175525 clk_regmap_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xd6337c0f anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd651318c inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xd6623b52 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xd667f91b __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xd66b337e bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67b4109 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd69d465d usb_role_switch_register +EXPORT_SYMBOL_GPL vmlinux 0xd6aa24f0 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6aefcbb fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd6b10050 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd6b3450d do_truncate +EXPORT_SYMBOL_GPL vmlinux 0xd6c4f769 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd6d4811b dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xd6db97e0 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd6e834ac ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xd6e8a923 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xd6f0f20d scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd7094c68 serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0xd71f755d proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xd722d67d __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd729b6c8 blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7334379 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd7408f3f __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd7478be8 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xd74d9f73 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xd755fdba tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd77f8574 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xd7948bec hisi_uncore_pmu_set_event_period +EXPORT_SYMBOL_GPL vmlinux 0xd7acc0cc pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd7b6d983 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xd7c39fff free_iova +EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7dc3651 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd7f06c32 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd8093588 pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0xd81bbca5 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xd8206482 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd821d216 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0xd8237495 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0xd83af501 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0xd840c866 of_genpd_add_provider_onecell +EXPORT_SYMBOL_GPL vmlinux 0xd8457ad9 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd8545ab2 metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0xd86186a2 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xd86cb096 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0xd876f7d3 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0xd879c619 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xd87f30d0 tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89200d3 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xd8a00501 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xd8d24416 hisi_clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8e65966 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xd8ec42ad iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0xd8ecc860 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0xd8f7fed9 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd8ffe41b of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xd90328cf sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xd9086502 zynqmp_pm_reset_assert +EXPORT_SYMBOL_GPL vmlinux 0xd90a93a7 k3_udma_glue_rx_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xd90de084 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xd91a4876 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xd920216c crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd92f0791 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd93a5cb1 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0xd94a714d devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd95c73fa mtk_hw_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd96968e7 i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0xd96b7187 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96bc107 usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0xd983cb5f devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xd98e9d97 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xd99c0c94 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xd9bd2a03 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xd9c0b4c6 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d879 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9ef48e4 of_reserved_mem_device_init_by_idx +EXPORT_SYMBOL_GPL vmlinux 0xd9f85cf3 alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0xd9faa7a5 zynqmp_pm_set_pll_frac_mode +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda023083 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xda0b7e02 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xda15a15d alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xda1d25a1 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xda298eb1 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda3cc5f4 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xda4aa47e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xda52b705 acpi_device_fix_up_power +EXPORT_SYMBOL_GPL vmlinux 0xda5b3c2b dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0xda5c11de fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xda5d2c32 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xda62e813 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xda71bcbc iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xda7912d4 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xda7a166f rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xda850a6b devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xda89eb48 dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa713ee dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdab70330 handle_fasteoi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xdacae4bd usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdaf849f6 blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdafe55ed usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xdb1cba15 hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb1ff836 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb268707 ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xdb28c0c3 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xdb290804 genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xdb33f713 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xdb3a89d7 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb3d9235 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xdb4d1a29 devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb59abba pinmux_generic_get_function_name +EXPORT_SYMBOL_GPL vmlinux 0xdb5a934e clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xdb62ef07 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb6e8cb9 sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xdb71a060 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0xdb735885 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdb780198 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba08ba9 nf_route +EXPORT_SYMBOL_GPL vmlinux 0xdba33808 dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xdbb20f53 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbb94fda posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbbf75b3 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0xdbc831fe ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdbd0d7e3 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xdbf13a0f usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xdbf29726 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbf331ad pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0d8161 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xdc139c13 k3_udma_glue_tx_get_hdesc_size +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc21e866 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xdc2a1489 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xdc2e793d tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xdc325250 ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0xdc35a451 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdc3c4ebc pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xdc514037 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc7df67f apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9e797e bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcaeb934 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcb33c0c pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0xdcb34f82 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcc2be13 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xdccd03e5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xdcd18d2f queue_iova +EXPORT_SYMBOL_GPL vmlinux 0xdcd4395e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdcd8c53b xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xdcd959f2 pinmux_generic_add_function +EXPORT_SYMBOL_GPL vmlinux 0xdce01b46 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xdce16e49 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdce23a83 sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd10e809 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdd1fca4d irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0xdd21f23f usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3dc297 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd658790 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0765 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0xdd7f64f0 cpu_logical_map +EXPORT_SYMBOL_GPL vmlinux 0xdd890b69 dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0xdd913a69 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd9ad49a clk_regmap_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xddb696c0 nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0xddb708e4 mc_send_command +EXPORT_SYMBOL_GPL vmlinux 0xddb97257 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc01515 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xddc29d30 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xddd23fa7 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xddd67936 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xddeb222c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xddf8312d device_link_del +EXPORT_SYMBOL_GPL vmlinux 0xde0116e3 dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0xde077809 dpcon_close +EXPORT_SYMBOL_GPL vmlinux 0xde09a94d xas_find +EXPORT_SYMBOL_GPL vmlinux 0xde124ea3 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xde2d3af0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xde61511e usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xde6e8ca0 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde750504 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xde7533f9 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xde9ab8c7 xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xdea702e1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdead5f77 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0xdec188ef __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xdee53a3b fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xdefbf5ca xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf0ab8d7 i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca3f4 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf136bf4 serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0xdf223247 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xdf259bcf regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf390f2d devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0xdf46a5c9 init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xdf4aaaaa path_noexec +EXPORT_SYMBOL_GPL vmlinux 0xdf5afc82 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xdf60a336 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xdf7ee8bd led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdfa14921 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0xdfab4744 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfd551cc mtk_eint_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xdfe37e99 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xdfeff236 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0xdff80a4d ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0xe00e32df sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe0153f70 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xe029b4bb seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xe037666e unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe03f1dee kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xe0435664 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xe0464dec bgmac_enet_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe05e0df2 dpbp_reset +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe05e8b22 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xe0679f60 crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0xe06fdc23 ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0xe0775702 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xe07d9a4d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe094d327 iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0xe0990257 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xe09d630b debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe0b00e88 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b2a7a6 of_clk_hw_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xe0c7e9c6 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe0d9e230 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xe0d9f42a platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe0dd2695 pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe0ea04c5 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe11295fe cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe114be71 crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xe13bce73 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1451a7d xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0xe14bdebb security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0xe1551879 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xe15c22a1 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe16c3dc1 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe16f0853 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17cce3c tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xe1879136 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0xe18a84fe scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe191bc51 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe19288bd __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0xe1990072 kvm_vcpu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe199fb9a usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe1a8d7c9 net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe1a90362 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe1af1ec9 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0xe1b61def max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c0a146 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe1c11d3c rockchip_pcie_init_port +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1d2712e irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0xe1e04ab2 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xe1e4df72 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0xe1e685a4 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xe1e9d877 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe1fe0c01 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe209563b iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xe217ffeb pinctrl_generic_get_group +EXPORT_SYMBOL_GPL vmlinux 0xe21c28f8 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xe21e70bc rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xe2255cfe pinmux_generic_get_function_count +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe2392a66 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe239c89f kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xe23a2d74 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0xe24032c1 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xe24a57fc clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xe2582a12 btree_init +EXPORT_SYMBOL_GPL vmlinux 0xe25cc6fe thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe29ad433 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2c4b7eb sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe2ee1738 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xe2fc3a28 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xe2fe9bf8 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe316d297 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xe31ca0bc pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0xe31e67c0 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xe32d29f6 fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0xe33284fb serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0xe338c5ac inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0xe36246b8 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0xe370ea4f mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xe38965cf rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3a4c344 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xe3ab4c86 blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3b21630 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xe3bd2a63 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3cd5fae klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe3e3902b sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe3ebf9bd arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xe3f738ea invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xe405bca7 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe41afacf tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0xe4248980 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe450329f debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xe45bceec pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xe45f58ba serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0xe4612144 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xe46a21e1 clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xe4874aef __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe48fafcd gnttab_pages_clear_private +EXPORT_SYMBOL_GPL vmlinux 0xe491f9db kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0xe495926a alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49b8323 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xe4a68df6 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4c07c45 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4db2b4d tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4ebd956 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xe5068ba4 fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0xe51028d1 sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xe5200189 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe52a1a42 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0xe52a4ac9 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0xe5395466 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xe54c6d58 put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xe5516728 k3_udma_glue_tx_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5538557 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0xe5595eaa tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe55bd978 pci_generic_ecam_ops +EXPORT_SYMBOL_GPL vmlinux 0xe56b7fe5 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xe57c9c6f gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe5850bfc blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58a38b1 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0xe59bd196 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xe5a925d3 zynqmp_pm_init_finalize +EXPORT_SYMBOL_GPL vmlinux 0xe5adcb88 iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0xe5b1b7bd sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0xe5b21552 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe5b3dc27 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xe5c02b64 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe5cb1943 hisi_clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe5d8bf99 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe5db3785 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xe5e0cde3 mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0xe5f9aab8 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe609d1c6 __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe626242e vfs_write +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe6329fe0 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe641d96c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xe643ddad mtk_mmsys_ddp_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xe64b8b4a clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe6546850 gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0xe654f9e1 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xe65b925f blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0xe66583d8 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe6717079 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe67d0eae xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0xe685edb2 serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0xe6940644 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xe6a11cbb __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0xe6ab6f32 ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xe6b0d5a6 regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe6b5160c dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0xe6b903b6 rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0xe6cfac65 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xe6d3d94c dev_pm_opp_get_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6e4d808 devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe6e988c5 k3_ringacc_get_tisci_dev_id +EXPORT_SYMBOL_GPL vmlinux 0xe6ec3328 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xe6f4efd8 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6f52443 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe6f5e6f5 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe7110fa1 phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0xe71317fe devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xe719e83f efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0xe71fd345 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe741800f kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75781f0 dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe76473ce pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe7918774 fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xe7936243 zynqmp_pm_clock_getstate +EXPORT_SYMBOL_GPL vmlinux 0xe7ac9f03 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xe7ae793f acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xe7bf1d60 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0xe7d0dc46 crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0xe7d29a87 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0xe7d58bd2 gnttab_page_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7e00c90 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0xe7e4124d led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7e93b6f transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7f96394 tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0xe7fe438d md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe802eda6 genpd_dev_pm_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81c7131 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe8377964 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8531b1e ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe858976a mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe868477f acpi_data_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xe870f96a put_pid +EXPORT_SYMBOL_GPL vmlinux 0xe8824e44 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xe88e2eff dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xe8a289a7 iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0xe8a465fc ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe8b40f33 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe8ba8ad9 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe8bfa1ec gnttab_dma_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xe8c5c21c ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xe8ecc658 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xe91442d0 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xe91b3cc4 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0xe9276152 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0xe927874d ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xe93080d0 _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe93be37b devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe946de31 fsl_mc_portal_allocate +EXPORT_SYMBOL_GPL vmlinux 0xe94a701a edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0xe951806e pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9599b89 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xe959fb8b dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xe982630f led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xe99185c9 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xe9ad9951 devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0xe9c5b605 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d63a0d k3_udma_glue_enable_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xe9e18eb7 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0xe9f17ec2 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0xe9f25519 pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1a2bff blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea4bef01 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea5eb776 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xea6c48d2 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0xea7b4744 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xea8360f8 fsl_mc_portal_reset +EXPORT_SYMBOL_GPL vmlinux 0xea9249a8 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xea9765f5 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0xeaac52fa cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xeaad96f9 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0xeab3d797 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeacb16e6 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xeacb30d2 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xead5784e dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xead68fa8 pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeaeda1a0 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0xeaf4541b __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xeaf7fe0f sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb12fcd1 spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0xeb1366d5 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0xeb21b0fe iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb3f8466 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xeb4221e4 trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xeb59bdac tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb7273d7 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0xeb84baac usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xeb9ac602 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xeba6b2a4 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xebaa36e8 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xebb4a97b crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xebbdfae2 blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0xebbe048a iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0xebc171fc regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xebc35037 cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0xebc3ebf7 fsl_mc_bus_dpio_type +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd3876f ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebde1c14 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xebdf0854 do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0xec0c0fdd xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xec1cba2d rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0xec4a721e crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xec500907 __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec5ad73b trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xec660cd3 __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec751c4f genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec7c61bb __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xec7f755f ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xec9095aa synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0xec94d1da pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xec98b2c1 of_property_read_variable_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xecb4f4bc regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xecba4e3d nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0xecba68e3 gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0xecd647e3 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xecd8f23d xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xece2d08f kvm_map_gfn +EXPORT_SYMBOL_GPL vmlinux 0xed010b9b modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xed0ca040 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0xed1bcb5d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xed331a03 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xed433134 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xed6ce64f bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0xed7b8fd9 mtk_pinconf_bias_get_combo +EXPORT_SYMBOL_GPL vmlinux 0xed7c4301 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xed7c7b91 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xed820873 icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0xed993790 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0xeda44e59 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xeda6e324 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xedd092d5 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xedddb83d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xede3eb42 dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xede523db crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xede9a09a btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xedf07827 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xee197e23 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0xee2711cc pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee40262b extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0xee45baeb transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xee4e476d rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xee6e4dae dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee842763 mtk_pinconf_adv_pull_set +EXPORT_SYMBOL_GPL vmlinux 0xee8aaeb1 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xee960e1a usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xeea7ab2c elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeeaa1528 extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0xeeb08064 l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0xeebac8df led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xeebe5c27 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0xeece7761 phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0xeed6dace regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeefd88ea tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xef050240 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xef180974 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xef1dde67 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef2f2a3c pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xef375ca6 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xef382673 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xef4471f3 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6fea55 dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef815b99 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0xef86780e of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0xef92ef33 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xef9a6340 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xefa0add6 security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa3f75a led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xefa654fb i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0xefa79959 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xefed44e1 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xeff2c3db regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xeff72486 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xeff83127 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xeffccb82 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf0013db2 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf00a3c1e raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf03c85df spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0xf0427b7e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xf04429b4 acpi_bus_get_status_handle +EXPORT_SYMBOL_GPL vmlinux 0xf0539240 clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06f1a9b of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xf07ae023 fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0xf08050c4 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xf08bad33 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf08f8fb6 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0a35e4b scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xf0a7495a perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xf0ab1cad rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0d07ea5 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xf0d478c7 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xf0dc81aa ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xf0f1939e of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf0f2ccb4 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0f96c1f apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0xf12cf4f4 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xf12f68b0 kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf1462b2f gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xf1495dc0 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xf14bef48 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xf1575847 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf170503a of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf193152c acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xf19817da tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xf1a9cba7 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ca4aad to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0xf1cacb5b irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xf1d0cd8b __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0xf2168fa9 rockchip_pcie_get_phys +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21fdf17 devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0xf2252e4d pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xf22949f5 wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0xf2419ba5 acpi_dev_get_dma_resources +EXPORT_SYMBOL_GPL vmlinux 0xf24493d4 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0xf260b927 clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0xf26111e3 pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xf26d7013 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf278f9ef bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xf279a885 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0xf27d0a7b gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xf28859e3 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf28aed9e pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf28e7e68 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf2d5e0b8 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xf2dd8511 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf2e40f14 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0xf2e92136 acpi_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xf2f2d725 xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0xf2f6c6a2 mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0xf2fb4fd3 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32686a5 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf32c901e subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf37477b7 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3a8bdd6 add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b95d79 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3b9d363 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xf3bcbafb proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0xf3cba3b1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf3cf294e ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0xf3e4bc94 ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf3ee7bbc regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xf3f8b4e7 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xf3f9a082 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0xf4082ec9 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xf409de88 virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xf414d7f1 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xf424cf03 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xf4395bec nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf4435dde ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf4464b03 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xf44c456d yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf47315d2 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf481be52 spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0xf486aa46 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf4890e7a rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b5cb9b fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xf4b731eb of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf4c6672b ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4cbfac1 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xf4d4d5ad spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4de5fd9 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4e1d871 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4e284e0 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0xf4ea0914 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xf4ee7cd4 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0xf50e911e copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xf51fe82e dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0xf52167c4 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0xf5337eaf fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xf546d049 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55909ca devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xf56b9141 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf56d0aba thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf57464d8 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0xf5815e71 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xf582833c crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xf587271b sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xf58ee305 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5aff16d ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xf5ceb357 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5e4e790 fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf5f5bb11 device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xf61669a2 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0xf61a1899 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xf61cdbce tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf64d40c6 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf64d435f phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf64e6fab gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0xf6522489 phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf6570f1b udp_abort +EXPORT_SYMBOL_GPL vmlinux 0xf6583381 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf65a5ad9 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf66032f3 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf6710e27 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf6770712 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xf69d35fe virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xf6a33040 cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0xf6a42bbb shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6c9228c sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xf6db1884 clk_regmap_gate_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf71dff8d pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf730fb4a qcom_smem_state_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf731f06f dprc_set_obj_irq +EXPORT_SYMBOL_GPL vmlinux 0xf733b301 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf738c4c7 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf7436184 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xf754d7a6 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf7601103 devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xf7866b4f bind_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf7868fc9 __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xf79b7f6d kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xf7a2687e user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xf7b320cb icc_enable +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7bdfedf devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7c8921b mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf7ca75ff sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xf7cd403b dpbp_open +EXPORT_SYMBOL_GPL vmlinux 0xf7d37caf devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf7f65020 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xf7f94d46 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf80da0ff wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf8143413 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xf824a61a ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83ba450 crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf8432553 cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf8661684 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf872dffa bind_interdomain_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf89f2c35 devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0xf8acbb5c platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xf8b5e83c kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xf8bd2fde bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0xf8c2c774 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf8c49dd6 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0xf8de9c7a zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf8e20436 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xf8e73296 mtk_eint_do_init +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf900c77d zynqmp_pm_clock_disable +EXPORT_SYMBOL_GPL vmlinux 0xf90fbf9e usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf910a0d6 meson_clk_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0xf91915ba ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xf91ab2ed __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf97b61c4 soc_device_match +EXPORT_SYMBOL_GPL vmlinux 0xf98d0526 mtk_smi_larb_put +EXPORT_SYMBOL_GPL vmlinux 0xf991d1a5 md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xf999ac97 of_get_required_opp_performance_state +EXPORT_SYMBOL_GPL vmlinux 0xf99a06d7 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a074ca usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xf9badc81 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xf9c29e0a skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0xf9d1d6e2 fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0xfa01729c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfa0285f9 crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xfa0a8896 acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1fc43f pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xfa2da4b5 blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0xfa341c68 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfa349688 aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xfa39380d spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xfa47894d pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xfa4e719b i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa67f93d crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa92d245 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfa99147c fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfab93f19 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xfad3dde3 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfae1a798 icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0xfaeb8620 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xfaf55630 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xfafcd016 k3_udma_glue_request_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xfb04359e badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0xfb098242 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xfb11c070 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xfb1ce614 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xfb1e5e8b tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfb1f7acb fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xfb301741 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3a6fbb iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0xfb3c6fd4 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb4a0bf7 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xfb58963a power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xfb61173c nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfb6373d1 hisi_uncore_pmu_offline_cpu +EXPORT_SYMBOL_GPL vmlinux 0xfb6694d3 fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb6fa74c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xfb728614 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xfb7311af blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xfb7b80fb skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xfb8fe4da regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb9cb4b4 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbbd60d7 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xfbbf955a __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfbd4124f __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfbdfc558 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xfbec0255 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xfbffd601 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc056c31 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xfc0797e4 free_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc2062c8 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc2598cd acpi_get_psd_map +EXPORT_SYMBOL_GPL vmlinux 0xfc28bb6b ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3dd3a6 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xfc4cd481 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xfc5b44ef inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xfc663df2 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0xfc6e46d5 nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xfc746b3c gnttab_page_cache_shrink +EXPORT_SYMBOL_GPL vmlinux 0xfc87908f pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0xfc9477b5 zynqmp_pm_set_pll_frac_data +EXPORT_SYMBOL_GPL vmlinux 0xfcaa1642 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfcb793b9 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0xfcbe382c cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcc259a8 store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0xfce15652 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xfce641c2 hisi_clk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfcf991e0 pci_host_common_remove +EXPORT_SYMBOL_GPL vmlinux 0xfd0c1e4f init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xfd0e2a2d gnttab_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xfd195774 k3_udma_glue_disable_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xfd3ab06e spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xfd4bed9e spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xfd526703 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd918838 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0xfd96e739 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfd9b39d9 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0xfda1ca85 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xfdaee167 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdc229bf tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0xfde692f8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xfdea6854 cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfdf8634d sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0xfdfa29c4 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xfe07ea06 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xfe0cf59b crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xfe0e7cd3 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0xfe1703e9 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xfe31c6a4 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xfe3372b7 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfe3b2c45 inode_dax +EXPORT_SYMBOL_GPL vmlinux 0xfe455922 cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0xfe46a48f skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe5028c6 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0xfe542db8 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xfe58e94b pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe71753e devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe792927 irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xfe86e0f5 blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe942949 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea08dbd device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xfeaad2a5 devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfebedc53 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0xfec3bf84 icst_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xfecc3128 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeea928e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfeeecd05 apei_read +EXPORT_SYMBOL_GPL vmlinux 0xfef74f2f platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xff01a2b8 battery_hook_register +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1403a5 __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0xff19790d kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL vmlinux 0xff501d2f kvm_unmap_gfn +EXPORT_SYMBOL_GPL vmlinux 0xff50808e vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0xff52ca3d devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff69b798 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xffaae521 fsl_mc_object_free +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffaf0e24 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xffd1123f save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xffd593b3 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xffec78ff dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xffeef6d4 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xfff331bc fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0xfff4f128 ata_dev_disable +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x01b28f83 ltc2497core_remove drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0x7dc06f7a ltc2497core_probe drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x01c9cb49 mcb_get_irq drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x04bff52d mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x5e57e8b5 mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x636585e0 mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x81749229 mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x995baf8b mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x9b6ae621 mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xa45ca6b0 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xa9788ea4 chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xc660d5f2 __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xd9b972ae mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf18b79c9 mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf9c651b0 mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xfae551fc mcb_release_bus drivers/mcb/mcb +USB_STORAGE EXPORT_SYMBOL_GPL 0x0d199069 usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x106db1d5 usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x13c85b0a usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x19325896 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x19f0b682 usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x33a0cc3d usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3595b6ec usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x428b1647 usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x52444fd1 usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5db9167a usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7d31c021 usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x83074d21 fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x83fd40e3 usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x88d88bec usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x944f7df5 usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x955698c3 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9cd34dd1 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa4b973e5 usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa80e0356 usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xd317646b usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xdcdf00a3 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe1914963 usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe3034a50 usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xef16b65d usb_stor_control_msg drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic-64k +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic-64k @@ -0,0 +1,24580 @@ +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0x68f275ad ce_aes_expandkey +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0x8ff421c6 ce_aes_setkey +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0x52d67a4e neon_aes_cbc_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xd5f41819 neon_aes_ecb_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xea11590c neon_aes_xts_encrypt +EXPORT_SYMBOL arch/arm64/crypto/aes-neon-blk 0xefc32a9b neon_aes_xts_decrypt +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/arm64/crypto/chacha-neon 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0x6ddf27bc poly1305_update_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0x737051cc poly1305_init_arch +EXPORT_SYMBOL arch/arm64/crypto/poly1305-neon 0xf39f5240 poly1305_final_arch +EXPORT_SYMBOL arch/arm64/crypto/sha256-arm64 0xb455924d sha256_block_data_order +EXPORT_SYMBOL arch/arm64/crypto/sha512-arm64 0x6402c8df sha512_block_data_order +EXPORT_SYMBOL arch/arm64/lib/xor-neon 0xd4671463 xor_block_inner_neon +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x0df59941 crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0x1d1c3ed5 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0x25cb57f5 crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0xa48e99c1 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0xad28ec6e crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xf25c90ac crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/sha3_generic 0x6ee5ebdb crypto_sha3_final +EXPORT_SYMBOL crypto/sha3_generic 0xb7cb0abc crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0xc9946034 crypto_sha3_init +EXPORT_SYMBOL crypto/sm3_generic 0x23123744 crypto_sm3_finup +EXPORT_SYMBOL crypto/sm3_generic 0xd8f12258 crypto_sm3_update +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit/nfit 0xceec93be to_nfit_uuid +EXPORT_SYMBOL drivers/atm/suni 0xc219f8fe suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x4d46df86 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x7e335edd bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x806a9f92 btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xa31a7e18 rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0xe1ccf91b mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x02603c4f ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x232208b3 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7d029ec4 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa29bb87e ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1aea0793 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1d602592 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x30a86fab st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x92503498 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x74fe1fbe xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd68d084d xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xfe2e30b9 xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x58c21dc2 atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xd1481123 atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xdb51b9d2 atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/caam/caam 0x17572340 caam_congested +EXPORT_SYMBOL drivers/crypto/caam/caam 0x37734e06 caam_dpaa2 +EXPORT_SYMBOL drivers/crypto/caam/caam 0x3a60d4ab caam_drv_ctx_init +EXPORT_SYMBOL drivers/crypto/caam/caam 0x44ae4bc4 qi_cache_free +EXPORT_SYMBOL drivers/crypto/caam/caam 0x5941ea93 caam_drv_ctx_rel +EXPORT_SYMBOL drivers/crypto/caam/caam 0x6a0e5693 caam_qi_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam 0xaf6b4ac5 caam_drv_ctx_update +EXPORT_SYMBOL drivers/crypto/caam/caam 0xc0eaa792 qi_cache_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x17df972e caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x5374b25a split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x5387536d gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x88784ac9 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xa51ef610 caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x2e152bb7 cnstr_shdsc_xts_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x3b54a9ad cnstr_shdsc_aead_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x76a68e3e cnstr_shdsc_chachapoly +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x7b0c587f cnstr_shdsc_rfc4543_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x7b7bcab8 cnstr_shdsc_rfc4543_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x86bcdec7 cnstr_shdsc_xts_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x88430d4c cnstr_shdsc_aead_null_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x91ac0969 cnstr_shdsc_aead_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa3115081 cnstr_shdsc_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa340e264 cnstr_shdsc_aead_givencap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa99d7fa6 cnstr_shdsc_aead_null_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xebcdd349 cnstr_shdsc_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xf92c5da5 cnstr_shdsc_gcm_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xf95bcf62 cnstr_shdsc_gcm_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xfd807e48 cnstr_shdsc_rfc4106_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xfdf7ec8f cnstr_shdsc_rfc4106_encap +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0x30a1e372 cnstr_shdsc_sk_hash +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0xb5571dbf cnstr_shdsc_ahash +EXPORT_SYMBOL drivers/crypto/caam/dpaa2_caam 0xb1ca38ad dpaa2_caam_enqueue +EXPORT_SYMBOL drivers/crypto/caam/error 0x002c46a5 caam_strstatus +EXPORT_SYMBOL drivers/crypto/caam/error 0x53d0fc97 caam_ptr_sz +EXPORT_SYMBOL drivers/crypto/caam/error 0xa51f16c7 caam_little_end +EXPORT_SYMBOL drivers/crypto/caam/error 0xbd67c092 caam_imx +EXPORT_SYMBOL drivers/crypto/caam/error 0xd25da602 caam_dump_sg +EXPORT_SYMBOL drivers/dma/xilinx/xilinx_dma 0x3d0fc3ad xilinx_vdma_channel_set_config +EXPORT_SYMBOL drivers/firewire/firewire-core 0x03b93194 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04671f45 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bc6094c fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e5ea91e fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x131d483d fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x374f889b fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37c164dd fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a771e39 fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d0901a7 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x653f2936 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6dc50487 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x750d565c fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7dc0dd5e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a1c7771 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa02c4068 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xabffc2ad fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc4b733c4 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7419aba fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xca9f47e9 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcb917f38 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd7e8afc8 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd8d0ac32 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd65bf5e fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdf686154 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe65e7444 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe96154da fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1130be6 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5a247e3 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfa93f18b fw_core_handle_request +EXPORT_SYMBOL drivers/firmware/broadcom/tee_bnxt_fw 0x57b73b33 tee_bnxt_fw_load +EXPORT_SYMBOL drivers/firmware/broadcom/tee_bnxt_fw 0xdfaff93c tee_bnxt_copy_coredump +EXPORT_SYMBOL drivers/firmware/imx/imx-dsp 0x44487c75 imx_dsp_ring_doorbell +EXPORT_SYMBOL drivers/gpu/drm/drm 0x007024a3 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x018c1f31 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02bae80d drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x034f0c54 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c63897 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x045fdb39 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x057cf08f drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05956ceb drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x066a2d3b drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x071821f2 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07556706 drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07711809 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07855072 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x079f686a drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb449a drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0907420b drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x097f5f0d drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0adc2485 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c18884b drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d2b9552 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d77eb6a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ef9b966 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x109a2ee7 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10a9273b drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10afa65e drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x111cfd78 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x113b4e64 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b9567a drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12068525 drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127a8c6b drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c3157f drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x154876e4 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16a69780 drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16b372b0 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17f2ce0e drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1821b7bd drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1842cc2b drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19d45611 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a26792d drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a404898 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a712850 drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a7efcf6 drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bee51fb drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c463ab9 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cf4b2b7 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d39dab3 drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e2accbc drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e4e171c drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e777d79 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f7f278f drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fdb5338 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20afce52 drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21d541eb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21dc19d5 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21ee7119 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2232262b drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22a4a19c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23c691d3 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23ef2bbc drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24f55092 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x257d2b0a drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25d790f3 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x265ff828 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26dfb27d drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d082e0 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x298bd6f3 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ae0bfea drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b9fd6dc drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bdfd205 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c082c68 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c3921f3 drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d4b78e9 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3038d9e9 drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3054aa03 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3107e7d4 __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x318c7461 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31c55045 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x327840a0 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x330d9efc drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3370e88c drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33817e1f drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34df054f drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36c36308 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36d0bf27 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36d7051a drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e62ed2 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37106b9f drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x371edcbb drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x394f81a8 drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39850107 drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a994142 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ad48f37 drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aec1bec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b8c8e00 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c22a4d8 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cf532c9 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d146249 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e036d3e drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e50b109 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e5d8b9a drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e6d513f drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x402bee9c of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x407d45ab drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41f58849 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42ad61f2 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43635ecd drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43ceafb3 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4530710f drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x454563b3 drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46ef11c2 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x489c889a drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48b62bee drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48ba39ab drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497f1fa4 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b48294c drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ba7cb9e drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c302c56 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c60ce10 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d23c46a drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea850d2 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f973390 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fab9aff drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fbf1838 drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50070c9d drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51c5db74 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x523a8802 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52ed9334 drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5349bdfd drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5432f8cd drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5542443b drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55f58eee drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5657c3ac drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5718386c drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5739d6d9 drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5808d4ec drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58c57873 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5929c03e drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x598d8b21 __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5af3c48c drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b8084f8 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b971565 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b9e03f6 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c118f0a drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1a9dc4 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c737b02 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cbd37e8 __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cf4629f drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d3ef1c5 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ded9823 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e1b8100 drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f096225 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f3839a1 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f5b57be drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60ab819d drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63a2b7e0 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6410e53e drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6465e925 drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64f3bee0 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x650d97ef drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6688b4c8 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66c74400 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66fd8324 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67491078 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6782abea drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68d114ab drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x695e1cf5 drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69cd5bcf drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a5c5b7e drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a6c24e1 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aa068fe drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ab13451 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b1a8886 drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d19f102 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d83b3e8 drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6db8f63c drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6de02528 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70100ef5 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x707591dd drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71dd1aa9 drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71ff29b8 drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x726b6a39 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7303944d drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x738a61b7 drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x745b2e9a drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b14b4c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74eb438f drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79f89521 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a61a26d drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b25c99d drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b5f2272 drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b88da6a drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b892dc6 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c5cae4a drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d682972 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dbc7e5c drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e1611b3 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e8f85bc drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f336f52 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f3b4328 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f4753b1 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x804b9035 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x811b7518 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x811f8118 drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81307314 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81317ecd drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81908e3b drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x819973d3 drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81b502f2 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842dd90c drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x853ddb6d devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85990230 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8851a00f drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8994cf82 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a0f01c2 drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a62319c drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b55b86d drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b9c8fd1 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c809145 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e3b60c0 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e7415b0 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e840401 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f3f81e3 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f562723 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6fca90 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ff5aba0 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9020feac drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9076a0f3 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90d5e38f drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91996464 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925f5d05 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92714851 drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9275482f drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9296a9be drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92aef470 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92b8f154 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93700433 drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94c041f7 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9828a837 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98a3d9ba drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f71cc9 drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a3253c5 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b6d6533 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dc90a92 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0836acd drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2034d51 drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa21d8164 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2ebc807 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa302964b drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa321bc82 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3bc2b5d drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4a16d0d drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa545051d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5b90971 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa66dc0ea drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa71a4412 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8072405 drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9a1e9a5 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9b27b4d drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9f8e98 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafa00d69 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4db5e8e drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4f5517c drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb61f9176 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb624ad6e drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c83b8c drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb852059b drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8621bd4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8aec340 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8c22b2a drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8cd1e3e drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93e3d57 drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9a6b4d1 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbacfd5c6 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaed00c4 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb0135bc drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb400132 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb8a0e4d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe89ba7 drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcada5b8 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcce1929 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd31ee1b drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe096bfb drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0f2408 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1575753 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc19ffffc drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1a030ec drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1ccafda drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc332249e drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3a8df10 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3bc8582 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4e7007b drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc57def97 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5cb975f drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6323239 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc64960dd drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6b718a0 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6e433cc drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc729aadf drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8683502 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc89b11b4 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8f6c2df drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc90d4656 drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb4a2b03 drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd95a008 drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdd86e2f drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce3d8ebc drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfa9c587 drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0f2ff58 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd15186b7 drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd31d9278 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3c867d5 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd47d8f8e drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd530b839 drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd605220e drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd61fddf0 drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd62d348a drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6624ff2 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6dd8db8 drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd73c870c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd76ae552 drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd780ea98 drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8466b89 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd87e2a10 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88f555f drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd94e2a90 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa7a28f drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb3ebb73 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb527e47 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc12dafb drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcfa9c23 __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde6baf42 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf1d5231 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe066e616 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0db46e6 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe116d3a4 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe152f121 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe264c0d6 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3ad11bf drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe42e3e03 drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe49aaecb drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4a029a6 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe50ff184 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe57aab20 drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe587843a drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe77c1f3c drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8eeff13 drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9856d3e drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb0d58b3 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebeab697 drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec002493 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec611d3d drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed0c804b drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedef9f11 drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee487543 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee99c667 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef5a4099 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08122dc drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf148eea4 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1983848 drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1ffdeea drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2203523 drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf32042b4 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf364d794 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf41d1193 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf45b5279 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5b1635e drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86f80f2 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8857927 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf889941a drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9764fd8 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa2bd070 drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc39877c drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc5537dc drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd4a3ef6 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd7da63d drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdbae525 drm_of_crtc_port_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe420527 drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfeaa7281 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff3b4569 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0091c634 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03abd4d5 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05cb5347 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x079e856f drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x096d7e3b __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bf93a50 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c5f4255 drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dcef1a2 drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e0cfa92 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e560b02 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1304c4ad drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x143f68e7 drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1595f7d1 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16195fff drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19e37177 drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19f859da drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1af8f650 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ca15fe4 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a12ef8 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a3811c drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24247f74 drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24dc9dc3 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x250da8c8 drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26148346 drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x265a6b85 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x271e2b06 drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2933fed1 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a8b0c66 drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2abf1de1 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b101e75 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b1226ed drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fffea8f drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30296666 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31eb9224 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34816ad8 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34fe8618 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c1369d drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36671dd7 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36ec622d drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37092fe4 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38226759 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38400790 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x388f10a2 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x393ef013 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a5b9bd1 drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a6804cf drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3bb303e5 drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c2eeeed drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f208e93 __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40531a7c drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4226029f drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x430f3073 drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x441df31a drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x443dd171 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4619fe94 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48594a34 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x487c7057 drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4930bd25 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49d0aaab drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a944cd4 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b5e452b drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b9d1162 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ce1882a drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d444586 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x506a8eb5 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5239bab2 drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5381c3aa drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54e362d0 drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55e1dac6 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x571dbe34 devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x578d5341 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5da1ca0b drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5dc9a3f1 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f2589c9 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x623a43c4 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x631fa2db drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6683ef38 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cd35f0e drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d476048 drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e0af43b drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e9253d8 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70141de7 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7312d693 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76dd00bd drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x789c5c2b drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a5d3886 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7aed4d41 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80328667 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81ed2b8e drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x828391dc drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x830ae774 drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83349a8f drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x853196f4 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88b3b18b drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x899e4f6f drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a39cb4e drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ad0fcd7 drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b71c3cc drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c584d80 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d969c4c drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ef358b5 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f6940e6 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f8b8342 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fa7791a drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x920668f8 drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92c5ee41 __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92cb6940 drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x944f27f6 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94de577f drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95fd667d __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96fd62a2 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x972c96a9 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98c1a0af drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d472ec2 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d9c6f3b drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f336fc2 drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0507e98 drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1f65b24 drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa300b5da drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa30c5f21 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3c21fdf drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa82d4b7e drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa941deab drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9f3b76d drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa09ac97 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae7b72bc __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaeaf860b drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf41ec5f drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafde9407 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb15bb288 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb18a6062 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb326e736 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb34bf0dc drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4196446 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb53bb9ff drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb60ac7b5 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb647d98b drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb70e6b7a drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7cbfa02 drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8d0fa1c drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb902239e drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbabe5cb6 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb042b64 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcd5ac29 drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcdf13d2 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf437406 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfcbff58 drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2028f7e drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc216e4db drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3b2f233 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc49bfdc3 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4bd6f82 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc53297af drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5671bdb __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc735b047 __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8a60852 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc90e360c drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb02cbfb drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb5ee43a devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb62ecf5 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcba4ef11 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcebda602 __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf09926a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf8e0d42 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd002e1b6 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1a2898d drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2951fe9 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd392b65e drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4ccd132 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7624fc8 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd896ddac drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8d58582 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb885351 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc1e3a4d drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc3f6894 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde222d85 drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde76e343 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe20a69a0 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe420e158 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5d7c692 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5ee85f3 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe60ada74 drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6a87f12 drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7bc631a drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe926fc22 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9aacd38 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed6e1f51 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedd158aa drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeddb2749 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee82f315 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefa23195 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1512533 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1cc1182 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3c67e7c drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf40e7dd2 drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf53b159f drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6d24dc4 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7e6907b drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf81b7eae drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf86e5e23 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa49abda drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfaedebc6 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc022fb4 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc3006a0 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc611dc6 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffe8d64a drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x01c76938 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x16cebb85 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x291fd169 mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x756a5394 mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x87d41522 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x884c2fa0 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8cf38618 mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8d0ba578 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8e0a4a9f mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xa190fa3c mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xb046ed67 mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbd17b7b9 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbeeefd30 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xcc2da859 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xdc1fecdf mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe58428fb mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xff690b35 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x5757859b drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0xf42cca1f drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x02337d2a drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x048feaee drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x04ca208b drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x0723bf3a drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2040b78e drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x27969f97 drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2ef2f627 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x34884421 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x37a8dc3c drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x4988b1d2 drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x75613e0a drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x83230138 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x88218c31 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xac36874f drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb4161dd2 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc56badc3 drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc88aea22 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd7d43af9 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xef5330f4 drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf44a2f52 drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf7109302 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/rockchip/rockchipdrm 0x8ea862aa rockchip_drm_wait_vact_end +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0cede91e drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x158bb575 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x198bbfb0 drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x31ec7ed5 drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x34a995ee drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x38a32154 drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x41e8276b drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x469724d4 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x4c2ab118 drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x6ec10c5a drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x71d810fb drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x79935e95 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x89870fdc drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa0657d4f drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa46e8f49 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa8df827e drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb32cfd33 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb733b797 to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xc5b28b15 drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xd1dfc225 drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf25e9473 drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x0a3d59ca sun4i_frontend_update_buffer +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x3f422087 sun4i_frontend_update_formats +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0x96413fdb sunxi_bt601_yuv2rgb_coef +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xa631b179 sun4i_frontend_format_is_supported +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xcdfb90fd sun4i_frontend_update_coord +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xe13164ef sun4i_frontend_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xebb14b49 sun4i_frontend_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xf91c840c sun4i_frontend_exit +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-frontend 0xfdfcbbcb sun4i_frontend_enable +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x67a94605 sun4i_dclk_free +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x6c10c7a7 sun4i_tcon_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x8c05ee55 sun4i_dclk_create +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x9444b96e sun4i_tcon_mode_set +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0x9fe2400e sun4i_lvds_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xab88a09a sun4i_rgb_init +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun4i-tcon 0xb862b691 sun4i_tcon_enable_vblank +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0x1aeff3b6 sun8i_tcon_top_de_config +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0x350e5dcd sun8i_tcon_top_of_table +EXPORT_SYMBOL drivers/gpu/drm/sun4i/sun8i_tcon_top 0xabfab582 sun8i_tcon_top_set_hdmi_src +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x037d4248 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03a1e940 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07247d69 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0edf39ab ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1657a03b ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x177a4fad ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17eb2e8c ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1acad598 ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cb2ab06 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1daf6ab5 ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1db9c05e ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1fc5a9a3 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23485ed8 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25271fe6 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29bc47a5 ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a6d6d6a ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ed77d0a ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ff43a22 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44671ae8 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x468c9d3a ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4aeac9f2 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4d83126e ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e461e2c ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x540f8262 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cbbe8d6 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6125aeab ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67a35269 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6854ae97 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79e71aab ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81b453b5 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x83096012 ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8686f368 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8b6b043d ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8df6e99a ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ca2b67f ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9cda9ab2 ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d3541ab ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa466981f ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa98d9ada ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa074d1f ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb0e1bc92 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6bab78d ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd4a1d58 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbeb092fb ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc96d05f7 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcfade370 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcfbb483f ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9355145 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb326689 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb78b684 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3cb20a1 ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe760bba2 ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe97893fe ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec65c69e ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef27ee25 ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf3649951 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5ea5a22 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf626155a ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf842e726 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb766426 ttm_bo_mem_put +EXPORT_SYMBOL drivers/hid/hid 0xc6409a2a hid_bus_type +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x088d731e sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x09b6019e i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7f87f3a0 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe8879143 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8a4f529c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfcc81cd1 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xc8baa360 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x5dbe2c5a bma400_remove +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x5f1cbae4 bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xdcbef4ca bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x2590477b kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x53ce3ddf kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0xb7b67c9d kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0d487c7f mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x24f59538 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2b81a9fc mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x38b4e7d2 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x391d9e01 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4cb0e32f mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4e43d197 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x686ccffe mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8cbac302 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x92cc8a3f mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa36e2e96 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xab97d30e mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc624f01d mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc6c9cd75 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe6097a76 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe67dc703 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x6458d979 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x8d90a3f4 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xa24faa2f st_accel_get_settings +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-buffer-dmaengine 0xf4069e74 iio_dmaengine_buffer_alloc +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x57ac1bae iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xe494f018 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x59eee91b iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x6e3c8def iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xa16b4d1a devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0xf5137e3d bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2fa01a9f hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3b012167 hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4fc3d8ab hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x719bd252 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8500f179 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb8d29271 hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbd4282bd hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc1d0cef0 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xcbf49da5 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf372f776 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x87371b23 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x8b9cccae hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa2dd52a1 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xcbcc76b6 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x03d37454 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x4c0c2729 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x722c7bf8 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x752599a1 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x8f9d8a0f ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbf963d6f ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xce1fa076 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe520674c ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xecafdfd0 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3dc63294 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5b7da184 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6eebd91d ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb6b1b682 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe16f037b ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x11621d6c ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x5edadddd ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8eb68ef1 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x16e0881d st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x20414ca6 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3443a993 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x37787f31 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4a3afe0f st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x56be7d5f st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x653e2830 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x665610c7 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x87dd8434 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xacdec3d3 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbb350f56 st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcdc43a3e st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcec1ab0b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdf756605 st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe2f4c9d5 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xec5168a8 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xee2c34b2 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf3718397 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xcdbace60 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xaba701f4 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x4f95eec6 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xac39af0b mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xe398f6c8 mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x9959183a st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xda37bc25 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xed0edf8d st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x0f97a156 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xaa37c624 hts221_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x4956f8c5 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x58480cfc adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0x404900bf bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0x81ff2400 fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x40bd911e st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x4d5a2761 st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/industrialio 0x00700714 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x07a9bad7 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x07c7549a iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x0aa020c6 iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x0df184fd iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1090a4b7 iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0x16c1fbee iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x182a0ca1 __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x212b3f45 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0x22738faa iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x23ee5140 iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x41dbc80e iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x4bb4470f iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0x62aa8aa2 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x665b2d7e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x73003a3a __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x77fac527 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x908e1ba3 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x965a4461 iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x9bad9232 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xb7265438 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd69b93f5 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe1c19ef8 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xfdf8ddda iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0xcd1cb3ca iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x124b1fc8 iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x55bea01e iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x7f3bed3d iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x9c439f25 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x4a0ad44a iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x9ef4bca3 iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xb1c71280 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xee271500 iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x62ed42ca iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xb22e8993 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x1f8dacf1 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xf9f7aa3b st_uvis25_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x01644a20 bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x342b9c3f bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x91ef21aa bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xc2f949c4 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x7e871372 hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xa0159382 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xb2fa805b hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xd93dbcf5 hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7cfa142c st_magn_get_settings +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xcfdb4e89 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xeba52c10 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x11cfb6d7 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x17ddd78f bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x452f9c78 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xfb496bb5 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7ef3e72e ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xe251ea15 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xa42b8061 st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xb3637033 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf9fcc59e st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0a8fca7b ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1139d964 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x302968bf ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3115b027 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3da609d7 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3e8c815f ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x51772b5b ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7f35fca1 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8fd4a14a ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa087db4a ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xabdaddbc ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb13fbc87 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xce863ff6 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcea33116 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe08516e4 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe6901d8c ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0170bbec __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x017e4e35 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x034567ca ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06988bff rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06a3de1f ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a42e139 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b21902d ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c49b3a0 rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c86f5cb ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d47e4df ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f05f0f9 rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1015a811 ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14e5eede ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x151aade1 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15534965 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x157cc52b ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x163a5b81 __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1772b394 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x192e310c rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bbcaeea ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c96c0cb ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1dab22e0 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x213878a8 roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21ce980b ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x231ff81f ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2580cfe3 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x264fefd1 ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26853883 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ca9b31d ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e8477ed rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3005c46e ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x332b7c81 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33b248bc ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36baef8b ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x383b178c rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39cf5be2 rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d84ffc4 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ec5abb4 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eefce7b rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439ce33c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x461ce447 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46edeae3 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4af0d683 ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c0f8313 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f219a81 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f59b408 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x547ea065 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x566bf90f rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x571073b7 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a7336fc ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c43efb4 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cd0a745 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d427c83 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f1481b5 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60555a2c rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x607975e4 rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6198b9fc rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x619bdd9f ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63aead10 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63ce3513 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6402244d rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64cc6408 rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65bd5907 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65d500c4 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6651ee86 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x676693dd ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6797a278 ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68188584 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x683643a2 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68cd4988 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69815b74 ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b3dabeb rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c901772 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d4e45c1 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e140eb9 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70e97b0a ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71d7ef35 rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72f4a682 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x735b65a7 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74204b15 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78220f13 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78939d5f ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x799e51ab ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79d9cc45 rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7adadabd ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bb51e7f ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e9eac82 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f351afb ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fe22448 ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x805ad44c ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x809ef787 ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82416765 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84044c1b ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x845f6afa ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x859686cd rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x874e3f52 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x895367d9 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89b4f886 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a35d074 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e12fdb8 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9054d997 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9079051f ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x918481a4 rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x945ed983 rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96d54103 rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9719e968 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98fe3a82 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ca463af rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9dd0c4d6 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa000ec75 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa36b922e rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa688d7d4 ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6c3f1a5 ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa71e2638 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8fdb636 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaac7d379 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabe548bc ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac31d1ac ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xacb4e938 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafdc033e ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0b3ac61 rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0d67fe9 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1518086 ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb183ec17 ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb43e9004 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb592adb2 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5a15512 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5f3b26f rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb65ca047 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb75836bf ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8dbf365 ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdde3769 rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe01cb3e ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe9df192 rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc027703a ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc02e546d ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc064b2a8 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc455781c rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc52b1f41 ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc59ff206 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6cb38e3 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc872e431 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca7ddd05 ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb23eff5 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xccfb2bbf rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcda939ac rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce3164b9 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf446557 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf9cc10b ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd284e9d7 rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd606b66e rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd61b54f7 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd620ad0a __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd65d5eab ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6a8132e ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8c1de67 ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc60c9e3 ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd2b7db8 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd65c7ef ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdee2e2af ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf2b8194 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe08b67b4 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe309f962 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3f5c6b3 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6905c3a rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6dc549b __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6f6b475 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeab54097 rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb040428 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec5504f6 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed6c8fcf ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedfa4857 ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeec3474c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeff39ea2 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0e912e7 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf12dd5cf ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3859390 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3e92b86 ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6cfb860 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb92ca08 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc4bd79f ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd48fb91 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe86ed3f rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfef3249a ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffccb6cb rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffea11c6 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x012fe6ed ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1246cdb9 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1df71cf9 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x24190f0a _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2620af2a uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x38ed08e2 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3b3e5d91 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5663f80b flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5fbde823 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6156825e _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6a4d6173 ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x710653de uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7f7c7050 uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x827fdd4d ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8686f34d uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8b446991 ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa55b4d84 flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb1bd526c uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd1397bd7 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd65c4816 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdbb0f19f ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdc15f2be ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdd5a43bb ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe01b365d ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xeaffd11b ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf455d6b6 ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfe8274f1 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xff9488a0 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5ef041ee iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x709b3328 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9cde5d10 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa9380dc8 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xba45eded iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd04de975 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe0fa532a iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xee4abede iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x05650115 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x06841e70 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0e6c4c78 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18304680 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a628d3c rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2e8c99d7 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x33f04199 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x39894455 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x40af8de8 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4af0472a rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b649377 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x541e4a01 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x571a01c1 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x58a5eb42 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x605fa2d8 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x60b7e342 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70991222 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7c2d7570 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x830f67bb rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x834c0454 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x97466dd2 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa837afb7 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb85f510e rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc39f972f rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd04a6405 __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xde4f2532 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf9fce933 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfdbbd861 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xff35b03d __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x41c4392c rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x4e2187b7 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x725f897b rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x8cd806d0 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xa40cbbe3 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xf35bd93f rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x0ad3a445 rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x810bd79d rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x91547054 rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xc3f2978e rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x0f34e5c4 rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x6032d877 rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x84f7d96a rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xb39cb3ea rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xe1293cc9 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xe9e660d9 rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1148f95f gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x187c8d94 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5ea6fdc1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x67f4c5ce gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80830003 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa5963f03 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb2337de3 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb96ede26 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd265ce5 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x46e1c27f input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x938ae098 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xad45be3c input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc43f0a03 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdbe3066f input_free_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x5025c468 iforce_send_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x57cdc58f iforce_init_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xeaef1c8d iforce_process_packet +EXPORT_SYMBOL drivers/input/matrix-keymap 0xeb273648 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x16ae0f93 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x199fcb76 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x95a0c7ab ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x2d1f3534 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xf7bd4d39 rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x149aae15 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6a366064 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7b29940d sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xac158790 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xff314bcd sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x821dabc7 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x95e6a38d ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1cd15984 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2127335d capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2341a8f8 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x97ec965f detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb516a7ef capi_ctr_down +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x04425914 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x12d15ffb mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3afa5f22 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8d1615d2 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x7e7f4ffc mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xbf886b41 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0178b24f mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x04a6056a get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08916a90 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5b58600a mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x67b0ae5d recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77486421 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77fb3852 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x78bbf13c queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8664f845 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d7e8317 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96ed3469 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9978df0a get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x99eb540a recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa8cdd86e mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa933cb14 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb7c922b7 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc70f986b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd2a7b7e9 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0934202 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xea857a98 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xec339f43 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf2a636a5 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xffe35be9 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x0b7af884 ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xdcdd800a ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xbaad1d1f omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xd23c1331 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xeb200945 omap_mbox_request_channel +EXPORT_SYMBOL drivers/md/dm-log 0x73bb3369 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa433e96a dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xbdac5cf6 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xdccd5563 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x01d4c8cc dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x08029098 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x27e7310e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x579759c8 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6ec5af02 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xef5776a2 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x4588250f r5c_journal_mode_set +EXPORT_SYMBOL drivers/md/raid456 0x860065f1 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3866a9b3 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5c1eae13 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x67b79fc6 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6cca39fc flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x92aa687d flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9f74544c flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa0dfd9d0 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb5e1da86 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xba3cf81c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc6d465e6 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd1265b6b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf2635a0c flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf46a7703 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5c220801 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x754f49d3 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa7d9eaf9 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf2dfe25b cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xbd46fc42 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x662d0dc3 tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x5a62f4f5 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x5b46d3d1 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x0966e889 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x09f524a1 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x39beda9f vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x64e3f33e vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x9324db3c vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xb63289e5 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0xb43c9785 vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d5929c4 dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e1603f1 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e40f5a6 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1ef340ed dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2aaefdbb dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f5cdf80 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3feecaf6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4f88b07c dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x544f5819 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6181aec0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6238cdef dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66147815 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x67480317 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x69414c5b dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72dec182 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7751ad77 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b0d51ce dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e652af0 dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80985cc4 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x867d1e53 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x872ed2bf dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bf71894 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x91a6794b dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9a007362 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c3184be dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaa943ecb dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3352dd2 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb3ca2812 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbb0168bb dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3f679f9 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8c36aae dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd628cbdd dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdcf60586 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe138ce6b dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe685d7fd dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebbc2d9b dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf083ea9f dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb09f39a dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb9a826f dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc6380e5 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xe8af6c99 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x645b5756 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x06f99092 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2378fa38 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x72777daf au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x892057ea au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9d4fe0b5 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9f683eed au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa156d9da au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xab885dce au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe099b30a au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x5db4c025 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x63bd36d6 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x32c7a633 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x53ce5750 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xaefe9067 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x4e8a9751 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xdccc45c2 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x1ab43d71 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xd66a3b8a cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x1975c894 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x730717f2 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x330a6c1d cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x20247f72 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xb2a987d0 cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0xf2c748e2 cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x32a2c2c6 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5a927783 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa5ccaf42 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb2e52c35 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xfc9bdeb8 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0391c4dd dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0404ba82 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1f30ad0e dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2497e28a dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x46367c70 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x494d598f dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x777df173 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7f0e357e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7ffee013 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8685347e dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x94d4168b dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9f21180a dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb784bd60 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd4573270 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xff5ba502 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x7141489d dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x09b9d5fa dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1ebf657f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5a2d81ec dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5d91b0a7 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9b18e396 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9d6c0bc4 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x034aed90 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x70ef9252 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd0639f59 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xfbc7a20d dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x3e9fc45b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x7d0797c7 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x0756c93f dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x35ca5819 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x439bf080 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x49daef31 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x4aad1327 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x7cb7a764 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x7e84ca54 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x85678ade dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x9a3ee639 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xc191cf82 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xcb3f65c8 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xd6d3db64 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xf0a437c9 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x45c8cefd dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa3498bba dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xab5ffa4a dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc53c150c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf4958821 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x5bae7dbe drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x6e4a34f2 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb3328582 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x81bed722 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xaa4d8f11 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x4d242282 dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xc39b37d8 dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xe6ea06ea dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xde10c6ad ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x47a32795 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x4eb52b67 helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x4fbf6e55 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x4364542a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x4218db64 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x24b30b20 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x4de630b5 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xd7669708 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x214a3bfc l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x461cbb11 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x546e5bb4 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xa464fda8 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x7b2bc36c lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0x424309c8 lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x7b4ca69c lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xaff6d6bc lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0x78a5a368 lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2266310e lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x65229003 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x21295a1a lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x70bc3c96 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xad19ce7f m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xeec9e3f1 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x4958c815 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x582f42f4 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xb4bbd878 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x6d9ea5ae mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x7cf7e010 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xa09c259a nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xc312af32 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1509574e or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xbf2039c8 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x14b04b97 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x565a72c4 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc00ba413 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0xbce1110e s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x479c8c4b s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x8b95e84b si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x873c3be5 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x2ee40278 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x799b8abb stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xf41b18c1 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x8db65ed8 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xcda91bfd stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xf13e1f96 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x15191cd1 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x14039c51 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x2a64b780 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xf2e44613 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xd5c9a59d stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x6ced4f01 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xf4729d0d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xa400b89d stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x4afb8690 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xc4bb57a1 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x5d0a5fde tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x20e6443e tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xeae260ea tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x485bc6bd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xe2527fcb tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x9c364a3e tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x3fa1e3a8 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x08ce7b03 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x00e05f58 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xc8dac900 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x270d415e ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1334de6d ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x7cea0770 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0xaa668b4a zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x549deecb zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x6b53dad0 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xa8d12393 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1d95d1a6 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x260c8e66 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x45e560c3 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6a341678 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8745107a flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9c721897 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb193423e flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x45de6471 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6a8fb8bb bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8b607e0a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd9ee77c2 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x468e66b9 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x5a6d141f bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd91f965d bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1b0f4f71 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6280ce73 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7c7ff1d7 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x81ea54a2 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x925c2302 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x96bb2a1a dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xabb8134f dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb8a636dc write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf2b78399 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xefcccc3c dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x45276074 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x508e1929 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8c059c57 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x94e3eaab cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe7cd66c5 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x55e9d0ec altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x00baa09c cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x48e2cf50 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5d41f122 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbb973229 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd09db747 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe1da7d60 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfc959da6 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x5b7af37b vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xaee3847a vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x268574e3 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x455503f8 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9bb36cb2 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc592b5d9 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4f6caa7b cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x60289470 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x851eb72e cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x87882e1c cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x89510480 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa2552663 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe2185136 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1d96ebfc cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2e787714 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x46c99a86 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4ef2fc79 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x50e16e82 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x54e71954 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5637b138 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5d4184b9 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x656ef02a cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7b144d8b cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa0d3ef4d cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa2d3ea20 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa6f3271e cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa7a63518 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb8effee3 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc19dc5f7 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc32f9f15 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdf01fc0d cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe40ee8b cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe65b674 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0xd234a779 ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x052963ce ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x16ee236c ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3361adc7 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x344a7f8a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4e2c214b ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x539cf0d7 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7417376a ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x89a3cfb1 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x91b591a1 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9677c6d2 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb0464dda ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb820ef39 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb9cb8d4a ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbbdc25a4 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbccde102 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd6e29929 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfb602b37 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x059e33b1 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x08eb4e71 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x581824fa saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7a20efa7 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x850ff295 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa7de9514 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbc19a2ec saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd8514778 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdcf28729 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xded92bd9 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xebebd22e saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xecc9e186 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x86012b7f ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/radio/tea575x 0x232e789e snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x67b51497 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6c506524 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x71ce159a snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9679e5d8 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xba63316d snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd774a1e6 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc82af522 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe665dea1 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x57f17309 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xeda8f99b fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x32eebb50 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xad1562cb fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc443a0c2 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x7a54f2e0 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x2a7cfc2c mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x32f77d21 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x7ff99a15 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xc37e1660 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x05e041d9 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x89233549 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xfbae891b tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x17ef872f xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x9831bd85 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xffe5de1f xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x36ba7c8a cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xa5b6efe5 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2bd9d47b dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x30871ee0 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x511d1615 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x51b9b5e6 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8128f141 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8d256fe1 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcf39bac7 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfa8d463c dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb4c5026 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x17bd714a dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6a8f847c dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8b6f5395 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9283299d dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa58398e4 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd37c36be usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xed4dfda8 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x3cdd390c af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0459eff2 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x07a2c54c dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x27757607 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3eafdcb4 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9a3b8da3 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb7a2caa2 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdad0fdc1 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xea1d9ce8 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xebebe8e0 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0x5db46c92 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xa6a18324 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x034eef50 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x8f2c8848 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x175a1aa4 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x77c35d1e go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd0a91bb1 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdb919c19 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xddb96568 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe1ac6d5e go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf145b99a go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfdbf212a go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xfecd006d go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x05b0902f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x10cdb880 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x23b1e1dd gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3b247563 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x429c8a92 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5114a193 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe0f3f85d gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe2951331 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x22942c3c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x742b29a0 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8917dc32 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8a4411d9 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa1831013 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3dce6188 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x77a6456b v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9636ce70 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa486c744 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00238727 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04b2581f video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x064aaa00 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x109ae6bb v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1324d626 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1994bbe5 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1dd8fbd9 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21f9277c v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x241c7d27 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2970d64c __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cdbed1b v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fe96454 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fffa084 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x324d4281 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x33f5eaf7 v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3807ecc7 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x386d7c98 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b919c41 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d3d741f v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f91855f v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41141fcf v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42ac2f45 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c3a29cf video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d7ac191 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x52475496 v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x527cb5db video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x533c687a v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c88318e v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6215e60c __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63d4aa9d v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x646e3d83 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x661bdae8 v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66523871 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66572227 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ae6022d v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6ae802f0 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6cf7b056 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7135aa7d v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7164aa66 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72b83ea2 __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72e203cc video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x771bbab8 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7aea9cf8 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7de03d82 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7fd0603b v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87d77396 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8902e8dd __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a35fdbb v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9137742f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92e9b022 v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9484c591 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaef37f04 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9560790 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba9b79a2 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe265db7 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc172160b v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1b81d09 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc32dbe67 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd054709a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4606bdf __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd965dcb v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb1e536b v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef864461 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf093cf19 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6230d8a video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfbd37bd9 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff3f5145 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2b8e5905 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x49c63bbd memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4c89261f memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x68339703 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c0a2fe3 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8d747352 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x963c9a36 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xac77a9ca memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xae50437c memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaf5fe13a memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbc82a38f memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdfb9dcfa memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf1e293be memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x029405ef mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x04f85e88 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x05d9ce2a mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x091b3dc6 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x24e67259 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2f2d035e mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b803ed1 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3edbba84 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x50a683c4 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6891fa33 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x68f6bc0f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6f955086 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x712e0691 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75dd127d mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7db01e5c mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a7bcf6c mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x94471426 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x95b5d5a6 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x99ee819f mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab902d5c mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb50f5af9 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc2b60216 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd01fd7e7 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd044f0b8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd631ae64 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd1340d1 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe5c98014 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8cb62a0 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf84e1ab9 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1d30b826 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x287a2aa2 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x37ae9510 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e859ea0 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3eade740 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x40e31902 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x41360cb0 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42fcc206 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x49e654cb mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4cd9ea22 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x50143d58 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x520dceec mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x53a8a429 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x58d95bbb mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5b0a1459 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x625eebcd mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65bf0f59 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x66c5fa59 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x790067ad mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93329c82 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xac63f8ee mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb65f9b9d mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde0bdd59 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe2ba946e mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe6b31130 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf541f457 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xff77979f mptscsih_resume +EXPORT_SYMBOL drivers/mfd/axp20x 0x8c121803 axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0x9f3d4b3c axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/axp20x 0xbba6ec0b axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/dln2 0x2c2d4ba4 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xba8f2c9a dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xe56bfdc2 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc62da070 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfdf44854 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0eae97bf mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x63bfe833 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73b2f37e mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73ccc8f9 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f44eca7 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7fee4d48 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x93e458c5 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa6a3f735 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaafc5724 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb865b73c mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd264f6b2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd520f912 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x15163846 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0x24a1625b wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0x48488a1f wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x7a723186 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x92495334 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xd72a8832 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x0288a04b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x543756de ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5bafa76e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x6bb349fb c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x8a2d5cfa c2port_device_unregister +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ffb277f tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x297dda4b tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x41d1ebe9 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x5cc317f1 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x64f91cc0 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x687abd49 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x6a37e063 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x6bbc7de0 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc3ef8ef4 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xcf961070 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xda7dfb06 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xea2f10f7 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xea38c47f tifm_has_ms_pif +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x3c9f9437 cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x4821620c cqhci_deactivate +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xd21b7f65 cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xeb98b9bf cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xfef58257 cqhci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x19fc57d1 dw_mci_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x7eba32c9 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x912e9cf8 dw_mci_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xa08ffb8a dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x6b1d7f8a mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xdf649663 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1efd24da cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3a3bee3c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x712ad471 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x76ea3155 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x811733ff cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9efb0d9f cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xef6c7378 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2eea5bb9 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2f9ae113 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x474c4f89 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xea37f6e8 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x29daf1df mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb982739c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xc946c3cb simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x6b444f39 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0x93dd490e mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xac2c6c42 onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xba525f87 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x2cd7ad05 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x61236d83 denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x102603bc mtk_ecc_get_parity_bits +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5437e775 mtk_ecc_disable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5de55d81 mtk_ecc_get_stats +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x6df58afb mtk_ecc_release +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x76e53683 mtk_ecc_wait_done +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x8dcc87d2 mtk_ecc_enable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xce0e8fb7 of_mtk_ecc_get +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xda64ef4a mtk_ecc_adjust_strength +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xec8b9207 mtk_ecc_encode +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x0b6a7599 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x24f85cb6 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x2863be2d nand_scan_with_ids +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x2cc45c91 nand_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x2f6ad9dd nand_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x389eb985 nand_create_bbt +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x494aa2f4 nand_write_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x56fb323d nand_monolithic_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x9ff1edde nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xa9b6f071 nand_monolithic_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xca50e724 nand_read_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xfd9a9ce3 nand_get_set_features_notsupp +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0x793cf888 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xd4bc34f5 nand_calculate_ecc +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x27e63b24 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x67616db3 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9c23f35f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa1ca55dd arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xade2f866 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc3b9ab22 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xda5b7b71 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf00dbda1 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfe652b3a arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xffeeb5be arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x53ddb54c com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x5f11b4f3 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xe2cf2f3b com20020_check +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x02ad8cbe b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x030c6cb6 b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x037ab055 b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x085cdfdf b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1c6473b9 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2d2139ad b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x38056159 b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3c3fcfdd b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3d4a6ee7 b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x46273d5f b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x492d5402 b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4eef1854 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4ff999d6 b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x53e10669 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5aa4ce75 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5c8a28cc b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5fceb513 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x716eb31e b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x74d27ed6 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x76da0232 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7a250d0d b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8a1599cc b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa1212cfa b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa1e93346 b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa35fc4ee b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa466a0ba b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xabe64802 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb723d06b b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb9008f1c b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xba4c65d2 b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcd943e9b b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xce677f24 b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd3bef506 b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdb4c7d52 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe4a935c7 b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xec1b7fd7 b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xec7ede4a b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf27de527 b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf379859c b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfb10d492 b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xff1ad038 b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x35210d9e b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x4f79bda5 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x59b42c76 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x9551e7f7 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xa3c213e2 b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xff41db87 b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x561ef127 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xadc34578 lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0x12217450 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x2a541800 ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x6a9b0c2b ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xce6d338d ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xdd3f3537 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x68712d38 vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xac303426 vsc73xx_probe +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x104b1dc4 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x10b23c31 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2fb55c20 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x440697c2 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x4bcd9331 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x84f49617 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa9759ace ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb9b89acd __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbc1a41b6 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9c622b3 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x7b0e11f7 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x625c33f8 cavium_ptp_put +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0xbd421c18 cavium_ptp_get +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x34eeb48a bgx_set_dmac_cam_filter +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x46cdf933 bgx_config_timestamping +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x539ca253 bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x60cd1f2f bgx_lmac_get_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6ca2152d bgx_lmac_set_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x716fd7f0 bgx_reset_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x72b238e4 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xbe654297 bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xd8ed0bcc bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xff987a02 bgx_set_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x13912e4b xcv_init_hw +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x4f739dc0 xcv_setup_link +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x18399095 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x241e0171 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2444c5bd cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x31e3f9a9 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3cdbda77 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4b834914 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x65f5314f t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6ab18742 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6d25862a dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x773c83c4 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7ee9bb5c cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x98371c4f cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa27827db t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa98ed42f cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb9811758 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb6402a5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0fed2ec5 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1429dbe9 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x173d0bcf cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x17b9b6d0 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e1463ff cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2497daf5 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x38b3cdc9 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a961d84 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3ff1f13f cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x416de401 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x42ef1055 cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x43702c10 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e1ef485 cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x61a29c5e cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x68bc32a2 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6d09ee4f cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6dfc123a cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x763edfc9 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x78c64895 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b0c4b24 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7fa38e89 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x80998224 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x87980d9a cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8b48c03d cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8ecaf2ca cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x90faeac2 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x95c954aa cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b457513 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9da307b0 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa18ca076 cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa503f6df cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa6990b62 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa7605f01 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8db193f cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xae5a630f cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb0f9e646 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb8894074 cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc000068 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcbce1930 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd257bd2d cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4475e53 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde187b49 cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeaf6fc39 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1e7e458 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf68e0821 cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7db790b t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x05d28201 cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x229aeeca cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x9557de4d cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x973b581a cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xc02f8a7d cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xc2f30a3d cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xc6a3aa89 cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0a950294 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xa0e2927a vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd70f37eb vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe2508653 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xed9fc88c vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf757d6c5 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2f429ee7 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x532467a0 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/dpaa2/fsl-dpaa2-eth 0x4412391e dpaa2_phc_index +EXPORT_SYMBOL drivers/net/ethernet/freescale/enetc/fsl-enetc-ptp 0x5431a304 enetc_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x3a69b0ba hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x41d1aa15 hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x62ff1e46 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x8af3ba1e hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x93b06aaa hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hns_dsaf 0x5dce5481 hns_dsaf_roce_reset +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x1ec46215 hnae3_unregister_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x79d71a67 hnae3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x7e1125e4 hnae3_register_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x8c1e1fd6 hnae3_set_client_init_flag +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x94699afd hnae3_register_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xa9748bcd hnae3_register_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xaeb2b44e hnae3_unregister_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x6ad8df6e i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xb2a3a8f8 i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x4716b8f2 iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x9a5f3b19 iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x1574c216 otx2_reply_invalid_msg +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x1d258e75 otx2_mbox_nonempty +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x3c4703d0 otx2_mbox_init +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x49880908 otx2_mbox_check_rsp_msgs +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x4bb19562 otx2_mbox_destroy +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x4de43228 otx2_mbox_alloc_msg_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x667d1ae7 otx2_mbox_reset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x8f772a3f otx2_mbox_id2name +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0x90f982d0 otx2_mbox_msg_send +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xb05d7419 otx2_mbox_busy_poll_for_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xb6467da3 otx2_mbox_get_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xc4842027 __otx2_mbox_reset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/af/octeontx2_mbox 0xe4e5bcaf otx2_mbox_wait_for_rsp +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x0aa75fe0 mbox_handler_nix_lf_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x1aac4615 otx2_stop +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x22e5ae98 otx2_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x319a0109 mbox_handler_npa_lf_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x3ab20bc0 otx2_mbox_up_handler_cgx_link_event +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x5be7e643 otx2_get_stats64 +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x6919c5f1 mbox_handler_msix_offset +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x796e509e otx2_set_real_num_queues +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x7af8bdf0 mbox_handler_nix_txsch_alloc +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x878048d4 otx2_open +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0x9c254446 otx2_attach_npa_nix +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xafd96c30 otx2vf_set_ethtool_ops +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xb1d10d94 otx2_detach_resources +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xc0d20082 otx2_set_mac_address +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xdb174f05 mbox_handler_nix_bp_enable +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xe4bb1d04 otx2_sq_append_skb +EXPORT_SYMBOL drivers/net/ethernet/marvell/octeontx2/nic/octeontx2_nicpf 0xfb48a69a otx2_get_mac_from_af +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09d908f2 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1661e029 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17b5b530 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1adc4b16 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2179fcb5 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x229e677e mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26be6fb0 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a6e39d mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x400229fc mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40bb5c05 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x422135c2 mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42d1f412 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d0ef6cd mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fa99574 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58f36120 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66839df2 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75105f29 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x783f9485 mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7aef00e3 mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b911bb7 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f4f9a33 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88ab347a mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x912a3f02 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac50192e mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad653223 mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaed607af mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafff7c91 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb07bca8c mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7fab0d9 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbadb91fa mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1232e77 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4223ce0 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0b9aa48 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1451be3 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd41a1f72 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5558e16 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde92fee0 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe09cc4ca mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe807d7e5 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedcb81df mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef00c11c mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb127f09 mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc5ac6ec mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe5e2a00 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x002efc63 mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x006c1b6b mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00c2a5fd mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02382b99 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02d92837 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03efecb9 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a522170 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0deb7cf6 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10abf81c mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x112bebf5 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1907f9a0 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c7fcde6 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c8f542b mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x22515935 mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23052e98 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25dbc11e mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26e3ddd8 mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x273602f5 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27fa4d63 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29d36ffd mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32705594 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33ed453c mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35330685 mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35757eb0 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37651b47 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3866bf18 mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b5042bc mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3cadb35f mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d1bb755 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e960390 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9179e mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x405c988a mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x429a3613 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x456c73f5 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46150cf1 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4fab99e0 mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53386ce6 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55c40e8f mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5793d813 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57f916a0 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5aa5a2f6 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ce66e07 mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d13329e mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5dedafeb mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fa688ed mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x614d6b29 mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x664e35fc mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x692f1cc8 mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b635143 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6eaa73b7 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70013ad4 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x717a01bd mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75633b1c mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x766cebac mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78d2a280 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a763265 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab0ca7b mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b427e48 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e62a266 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x804c52e6 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a25e22 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8916e6f3 mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a8e31cc mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b5728c3 mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d91e73f mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eeefaa0 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f1d3399 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9051e41b mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91425567 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x958179bb mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98073147 mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9884865a mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98ab7cc6 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d9c7f00 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa205bca9 mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa21d3ad2 mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa28a5ed4 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2a4e563 mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa32811ac mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5bb969c mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9d759b6 mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9e88fe5 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac9bcf26 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae9ea383 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1f5c374 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2fe6a10 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb574668d mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5eea92d mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6edfb42 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba7f9f1a mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaec0f46 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdbd414c mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc39d5b64 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8f2073d mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcce2e7ad mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xccfe9639 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf6f558d mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0686adc mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3115812 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd32efe6a mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd76a3e40 mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd82c1c18 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd847d239 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda30c031 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd9b358f mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9aa1a9c mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea0723a0 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb6b0931 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec4964e5 mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee55f6e6 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef01bb32 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf01bb6fd mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1183343 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf11c6638 mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf120e368 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1611dd8 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4a46d85 mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5503a2f mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5d8f4ee mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa295c79 mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfdbb14de mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff14c4a1 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xffa83f06 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x5eec01c0 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2564ff8b mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3bf0fb71 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59075d13 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59c01e6d mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x699e0625 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6b13c9ff mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x6ea431ca mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x80089b3e mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8cf74df3 mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x90f87dbe mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cede308 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc3a7d89e mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc3fccecd mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd95e25d4 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe8e0d361 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xfdc9cec4 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x939a4a4c mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xda0ba5ff mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x80d56448 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x968ac3d1 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x06ae4ed1 ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0e06490e ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x178f92a3 ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1b1e6457 ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x221914b1 ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2a54fd42 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x30021f70 ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x38581037 ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3b63f14d __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3bf4a4e9 ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3e0bbb8e ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x40cb9fc5 ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x448dd4d7 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x488435e0 ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4e5c4bbf ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5d36cf57 ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5e0012ab ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x64af8774 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x67e1d00f ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x684b33c6 ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6a687962 ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x71fc2437 ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7e01c0d2 ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8b446d5a ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x957a6d2c ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9b02db18 ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa3c76754 ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa7d3c470 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xae53dcd4 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb52e2f44 ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xba1b285b ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbe665006 ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbfefbc57 ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc09e642f ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc56ed8d8 ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcdb79db6 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd7e38e14 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe01ad535 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe0bd109f ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe61142f4 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe7887b91 ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe850fd28 ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe92051f7 __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xee2831c6 ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfa9f9d40 ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfbd91014 __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x0c5ae843 qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x40f81d71 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xc93c71f4 qed_get_rdma_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xfc2d156b qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x54104909 qede_rdma_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0xd923bb9c qede_rdma_register_driver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x02c28099 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1f56307c hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2b08f22f hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x92ce8acb hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa955800c hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0xccf3b485 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x3db050d4 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf028429f free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x0057ef0c cavium_mdiobus_write +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x55b954dc cavium_mdiobus_read +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x029f9bbf xgene_mdio_rgmii_read +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x12b527f8 xgene_enet_phy_register +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x31558dfd xgene_mdio_wr_mac +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x59729b0e xgene_mdio_rd_mac +EXPORT_SYMBOL drivers/net/phy/mdio-xgene 0x60abb9a9 xgene_mdio_rgmii_write +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3b39233c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3bf13e49 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xec4c7bbf pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf4549bc7 register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xf4aa4dec sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x007745ea team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x0af62999 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x0b6f7e0d team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x1dbe5acb team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x4ab116c2 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x4ebff7ae team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x84f1b4eb team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xcb24ec6a team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x23f8fc67 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x84b64b3a usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xc5846e47 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x031c5871 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x151a31d3 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x386c3226 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5596df14 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7a7be509 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x817380ab register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x96aef645 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc7b734de unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xceaf7938 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf977a669 hdlc_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xaf81d3e0 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0f3d415e ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1bc17613 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1bfc9d82 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x37653a57 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4999232b ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x64ab63bb ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x809f8062 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x884c3218 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa976c4b2 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6e48847 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbe6b75a7 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd513fd65 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f78b41e ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x103cec2a ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1322a929 ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1a43efbd ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1c3e9b86 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x23f60145 ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x25e4e8a7 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x296a9f25 ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3095a910 ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3180508d ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x36cbdb4a ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3c5923b5 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x402217c9 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x44ca61b7 ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x47bc32b2 ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4bb9c7f8 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4fabc48a ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x50dd77c4 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5b31a541 ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6062ad6c ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x66d7f1b8 ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6a74ffce ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x78daca11 ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7adce19a ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8268c043 ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x867e4799 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8af49bdd ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa30ee64d ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa323b1a2 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5e850a6 ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa9e05b61 ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaed9d88b ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaeda84ea ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb3551fca __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb7ba6d53 ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb857ade1 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbc0b5e6d ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc6c74895 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc99a754b ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xce106a9f ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd6ef372f ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdba02932 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdea42bbd ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe2c0842e ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe483e521 ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe8636da7 ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xea1c29b9 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf59a7e4c ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf97ec373 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x2920ea7f ath11k_dp_service_srng +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x5ddd77fd ath11k_core_get_hw_mac_id +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x046f3f8a ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1441222d ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x41d854ad ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x64f2a4c5 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x78e1ef67 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x831d4896 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91257ccc ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6592e96 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe5511dcf ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfd90a6fb ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xff03038b ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x05ccfef6 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x11ceb762 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1684e7a8 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x22ac2322 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a35fab8 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c6715b5 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b3d5801 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x517b5109 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5e1b6208 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5ed71611 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x90c23c35 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9b5f5d83 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d51b0be ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5358a29 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb18ab9ff ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc21424be ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd12a2a24 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdac5ca4f ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xea3d181f ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf3e819c6 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf7fb6ecd ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf89d559f ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfca8404a ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03c0e766 ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0946baf2 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a2301bf ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a87f879 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11970217 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x167397fb ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19f77605 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b40522d ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b94778c ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22937913 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23464dac ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23bef70d ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24e9ba40 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25d76082 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26008c5c ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2736e902 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27382d30 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2786df78 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28e16e20 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ae85cac ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c019c0d ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e852ea8 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2eb5a002 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31fd83a5 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x361cdcf8 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bb5f3d6 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40e57e19 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x419b2f34 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41f9e5b7 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x459f7c63 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x460b15dd ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a7be0c8 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dd92c4f ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dddde34 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5013e5eb ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50956769 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56023089 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59adbefb ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a14d26e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5af95018 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b86cae4 ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bdeffb6 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5be35750 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bf91e88 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c1d2437 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e1db9d1 ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x612da484 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69ad1b6c ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a3bd9a2 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a69d482 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c216450 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d4f37cf ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74d8053a ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x766b1798 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79f9ae17 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bc4bf28 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d5da64d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e57d659 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fb92f2b ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82694930 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x896af88b ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89edacac ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8abdcfe7 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bccd263 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c0e1203 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e24ded7 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92eb4706 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97de28fa ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99316b8c ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ab0edde ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b6f5616 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d8ecd64 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9eb9296c ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa3c040ae ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6f4c847 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac553f11 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3e71bc4 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb705d1db ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7e64d2c ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbfbd929 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd7cf923 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe13f95a ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbea491ae ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc30ea0d3 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc32740a9 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc33ed0b9 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc522ca6c ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5fa14ef ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc880e898 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcaa6e407 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc705754 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd63a0649 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd3b02d4 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd9434e9 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf02defb ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf694935 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe33fd395 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe34f095b ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8e496ad ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe95a1f9f ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed41069d ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0d91c70 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf26c305e ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf290a131 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf512e4e3 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9061393 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff1a28a3 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x22129652 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xb8985920 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xf7c20228 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x020cc8b3 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1103f208 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x171a9c41 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x226fe125 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x685c05f9 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x705d9e60 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x70c34840 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x70e87a13 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x8aac6302 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x9684759a brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb7f0aa49 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6ffe6ae brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xfca89370 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x014c6423 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x0b65e3a3 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x0ba4e174 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x12e0b8a1 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x31137361 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4140f56f libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4aaffd3b libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5ad7208d libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x6834aac4 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x723562af libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x899c4172 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x91034e2c free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x95e38fbc libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x9702de36 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xa9dc0a95 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xb6ce5856 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xd482e35f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xeac3e757 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf1e06124 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf91bd46b libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x00143048 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x032d8685 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x04540cbb il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0502c4e7 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x05208e36 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x05ff8cc6 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x06034199 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x06cd78cf il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x07ce512f il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0895e7f7 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0971e9d9 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x09c3b0f2 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x09e4d5bc il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0a389486 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0ad2fd07 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0c8f31e7 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0ca5942e il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0e40ac53 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x104c8681 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1152c7dc il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x19840bde il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1b724ff6 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1b7856b8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1dfdda14 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2090b64c il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x267347d5 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x27229f5a il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x27769c9e il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2df82edb il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x32a70c5c il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x343f8bd7 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3451a7f8 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3739ee25 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3e3dab9f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x425da738 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x426378d5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x42772f6f il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x43c753be il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4c4f457a il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x51432cd0 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x582f1472 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5ccce0ab il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5d0282c2 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x618d7857 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x63ff5b3c il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6f6502de il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7017cbde il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x73701e6e il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x748aab9a il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7c7d0d6d il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7d175ed8 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7f7c4e64 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x81a81e4c il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x82a22718 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8434cdc2 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8617c329 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x86f8489e il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x87010e76 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x89f9858e il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8a4763eb il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9039d0c5 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9d74b8d7 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9de75e34 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa0aa54be il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa1be54ac il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa515c4a5 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb13c0dfb il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb1cef2e5 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb5090535 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb742b040 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb9a4fe6a il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbbb9d463 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbc8c59aa il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbf3531f7 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc833cee5 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcc16510a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcc65202a il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcd293513 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcec7c66f il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd24ceed9 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd557bf69 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd7e48a56 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd9b1605f il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd9e7f0ae il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdd7092fb il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe32a503b il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe4073930 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe8adc99a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe9870e77 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe9fc717c il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xec69a690 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xece55632 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xedb66b54 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xeef02691 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf3df8f2a il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf66eae9a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfd377389 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xfe75dc45 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1ee9c199 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x20a6a247 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb72ade7d __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x02392b3a hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x03cd4874 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0bc60168 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x174fe5fd hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x1fe2cf63 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2d5ceaf1 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2f32858a hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x37985e1a hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3ee03574 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3f424dbb hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x43c03c1e hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x736551b8 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x75934c58 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7ccce88b hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7cdbe5df hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x97a540d4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x9a12652c hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x9b5cdebd hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa54146e5 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4879ed5 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb61a0db0 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb66e7374 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb896d2f4 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xbbae2283 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xbf1c08bd hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xdac07a50 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x1691806a orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x20b542b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x26831a01 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x2b5e0f8d orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x2c39175c alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x446e8ff3 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x51825f7a __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x559d2941 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x934592bb orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa5e66384 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa61697ce orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa9c7e664 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb34dc9b4 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xdc216371 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe8c81645 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xf811a63f orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0x32ec8ac0 mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x64e7895d rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0a601e43 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0aefbba4 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x173b8492 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1f1a3d4b rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2a76743e rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2b7b7feb rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x414ec125 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x48321ae2 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x52dce459 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x52f9b88b rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x580ef342 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x60a99361 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x65775980 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6aabaa34 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6c350ecb rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7708f2e5 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x79b3c92b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7ad281b8 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7fd4a245 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8431aea4 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8cda9cc8 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9522b77c rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x95d3cfa7 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9e06e38d rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9f17eb26 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xade18f7b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xbc38dcc8 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc02b150e rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc88608fc rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc963a96e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd1e5408a _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd5fbbe29 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd90e267c rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd92d45a1 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeec48a65 _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf19a90c8 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf1c243e3 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf967dccb rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfa8d7fdf _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfab977e2 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfffcc1e6 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x13cc9510 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x2c069846 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x96b852bb rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xe244e7aa rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x20ded0d0 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x28e719aa rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xc2ea3bc1 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xdc9ed010 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b086117 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1619b9a6 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x21329f99 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2b2941f4 rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3377ac75 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x338e5469 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3400b3cb efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a3279f1 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x45074a8e rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e66a971 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5198823e rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x51b6aaae rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x560d010f efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b1290c3 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5dd5de8a rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62eef78a rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x78e158b5 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7991681c rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7eaa9831 rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x89a7e5eb rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ea60059 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb6f7502c rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb96ea618 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbe326a52 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcbade6b3 efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd51b49e1 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xde87b4b2 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe992f520 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebedfe5f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec0305af rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf3f87239 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf608a045 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0x754b64a4 rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0x9eab1e16 rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0x71697528 rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x05a06164 rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x090aabb7 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x14ef66fc rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1e385e8b rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x252d2e92 rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x26fc2ffc rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x321e24b5 rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x339cf429 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x37b4f42f rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x40dc92c8 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x422a8b2c __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4360e67d rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x491577bb rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5567f7f5 rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x55f2c2c2 rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5bb99736 rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5bd6b37b rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x63d8f87e rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x70bcf452 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x70e5bb43 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x73c54107 rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x74cb30fb rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7596cec9 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x75e0ee38 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x77259dc4 rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7a7c9cb1 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7c396a50 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x88bf47bc rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8fbc3f6c rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x909b77e3 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x91866024 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x91a5d3dd rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x922dd765 rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa89e1fb0 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa8aa9bef rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xaaaf3060 rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb483662e rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb4d627ed rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb5e48907 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb73233a2 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc091bfeb rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc9c3b4ed rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd38b3fc9 rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd52722fa rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd7820794 rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdb6f7b00 rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdf7cfa7c rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe110bbbe check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe1477636 rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf29944ac rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf367ff13 rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x1f5ecca5 rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x43e518e9 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x99bcb59d rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xc38b1227 rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0x510f4d6b rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1059fdad wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1b4e3250 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x617d38d8 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa921cf37 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x0f0d691d fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xe347b3f2 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xef3d29af fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x01bd150d microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x48b2446b microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x6c71874a nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd5629582 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd5b445d2 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0xd34a4d3b pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x2d2061a7 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xbd3f01de pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x28f13877 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xb4424f83 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xe13cdd9f s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0e2f9b95 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x26a0b54e ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3d95df27 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4333e9cb ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6799de18 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x89ad5221 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa02264dd ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa804960f ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc7ae9844 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd33c7f5a ndlc_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x095fbd85 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bbfa665 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x253b19e0 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x335754d6 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3f78d470 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x42e728c8 st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x444793c8 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4a96ed8b st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4d1b323c st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x79c1aa30 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7a5c6916 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7b9c99ae st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x87b74db9 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8cb071bf st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9e62f630 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa5e0d736 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf7c18328 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfcad7c7d st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x0616f77d ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0x1bb7e1ab ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x1bced4bf ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x4db8dd32 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x63843663 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6458224e ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x6e7ad543 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x70fe9855 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0x7196d770 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x71a4820d __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x7546f896 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0x7e2cb038 ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0x7ead24bc ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9019c841 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x9ea98828 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0xa438e6f5 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xb76d58e5 ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xd685720a ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0xd81da9ac ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0xe438d56c ntb_unregister_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x19f664fc nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xf7bbd522 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x064adac7 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x07ba2283 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x16fc4dde parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x1a8db117 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x21426170 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x23ebcfb1 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x2d3b9b22 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x3cb9e35e parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x44fd4018 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x47e8d02b parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x55fc1e71 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5ca42aaa parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x614873d0 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x6a4ad302 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x7c8c3513 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x893a7084 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x9a5968e1 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x9a5aa56b parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x9edfaeb0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xa20ba6c2 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xa7af4ca9 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3620274 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xb662664f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xbf3a5294 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xd412a091 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xdd2c797e parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xdfb9c493 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xe5cb4753 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xe6c0c738 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xef612619 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xf7af3a50 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pci/controller/pcie-iproc 0x5ff81ce2 iproc_pcie_setup +EXPORT_SYMBOL drivers/pci/controller/pcie-iproc 0xaa02a6e3 iproc_pcie_remove +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x010f3c0a pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x07f807c5 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x38a8a3af pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x59ef16ac pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6ab4b2d2 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x918eff27 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9286886b pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9f56dcb2 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa5cf85ea pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf5691c73 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf942709b pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xafa9d5f4 pccard_static_ops +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x5679d57b cros_ec_handle_event +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xaa738460 cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xd8ea89c0 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xdbe49bb7 cros_ec_suspend +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xe87e0eb5 cros_ec_resume +EXPORT_SYMBOL drivers/regulator/rohm-regulator 0x98eb8742 rohm_regulator_set_dvs_levels +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3330a1c8 qcom_smd_unregister_edge +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3a38199d qcom_smd_register_edge +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x047a2b54 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1eddb1cf rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x2ec75903 rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x47f56917 __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5959a478 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x79cec56b rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x89e10d48 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x962667ff rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x9a9f9859 rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb1b42a7f rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb2014264 rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb3d457ef rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xd13c6bcc rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xfa291a67 rpmsg_register_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x35fbc4f3 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x13f94ce9 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x87d0dacd scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xca8c0534 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe568ed68 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x142e4c5c fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2344d0be fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x40d2288d fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5da56d70 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6b235915 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6ffe21cb fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7e881a70 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x88c5c3c1 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaae854ab fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdf574b10 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf553863e fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0aa4def2 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b96fb13 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c3cbccb fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1262ba2b fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1eb8343b fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x231d16b0 fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d177891 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3c9e5032 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f4c8d0c fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x47bf906f fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c640486 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c817074 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x520b33de fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x533ec6da fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x654ac076 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d4c28b9 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6fb7e9f7 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d81ac1 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7975d06d fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c4080fc fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85e01831 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x899a2699 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a36b2e2 fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ad13ee3 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8af072f0 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f245978 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9026c2fd fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9abbd434 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c979607 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e4128c3 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa326f8b5 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa59f53dd fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae32e830 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb08be8f2 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0a28871 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb377b9c7 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb615fa38 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb3f7714 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc4df39ba fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8267860 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc233c7b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfbcb1c5 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1470c7f fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe20cbb14 fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4823749 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5cf06b5 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe79b7b53 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8121962 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee38dc12 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf27b20d4 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2f270b3 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd62bc7d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff9f92c6 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7bf54f6d sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x7d102df3 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xdb20382d sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x87d5b154 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0db0c41a qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3c187d91 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7155b5a6 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x71ed370c qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x80dccda2 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x84b70905 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8d5ea140 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9ef2c03c qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd7deeee9 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xde7a3783 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe31d75b4 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfccc6824 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/raid_class 0x0764e158 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xe8c6ab22 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xeaebf890 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x30274c06 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3c2dfbc8 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7464e089 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x840aa29f fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x87c8a82f fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9e6cd46c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa774cddd fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xaced5751 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb05a981d fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd0433ece fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd7713c9d fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe1d48ef0 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe3ec47e8 fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xeaf86bbe fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf599f020 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb743956 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1eceebc1 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2963a471 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2f22dafb sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x30eb14d1 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x311df57b sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x34a9cb92 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x37c2194b sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x444b535f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a4c58b8 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9e3f089c sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xabf28123 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb6f1816c sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb6f9597d sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbd5b57ab scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbd86cedd sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc098a59f sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5add048 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc78c51e4 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcb938864 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcc2930d1 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd146b311 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1724cc2 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd4a9c924 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda258f76 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe8ab60f2 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee143243 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf34c1f57 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf9f969d0 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfeec297e sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x89d587e2 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9d430866 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa3d04443 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbce16704 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2029e97 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x569a1fd3 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6862f2c2 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6b1824f2 srp_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x94d31f0e srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xea54ba9e srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x0a86d3ae tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x23fd00eb tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x03347bfc ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x07a5b5df ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x50238bad ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x834a415a ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x907c8e61 ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xb7498802 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xd11ad3f2 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xe94f6fdb ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xedc61992 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x8cdec804 ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0xaf72d22a ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0x030f2d6c dpaa2_io_service_enqueue_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0x3d01f417 dpaa2_io_service_pull_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xc4ccef03 dpaa2_io_get_cpu +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xdb008703 dpaa2_io_service_enqueue_multiple_fq +EXPORT_SYMBOL drivers/soc/fsl/dpio/fsl-mc-dpio 0xe0f67b93 dpaa2_io_service_enqueue_multiple_desc_fq +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0348ce8f cmdq_pkt_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0a86537c cmdq_pkt_poll_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x23d0b9f2 cmdq_pkt_clear_event +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x2e0c3fc2 cmdq_pkt_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x50396152 cmdq_pkt_write_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x73307b74 cmdq_mbox_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x801e6484 cmdq_dev_get_client_reg +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x85e281f0 cmdq_pkt_poll +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa066b5c3 cmdq_pkt_write +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa47e7659 cmdq_mbox_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa846e75e cmdq_pkt_wfe +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa9dc86da cmdq_pkt_flush_async +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xede9ce4c cmdq_pkt_flush +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0x0838fb82 of_get_ocmem +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xc53d76b1 ocmem_allocate +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xf9b05967 ocmem_free +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x1c76ea4d pdr_restart_pd +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x432975e6 pdr_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x47b2ed49 pdr_handle_alloc +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0xf618ca5b pdr_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x21005974 geni_se_tx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x28e7a53f geni_se_clk_freq_match +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x31149942 geni_se_init +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x3208631c geni_se_rx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x4834ca37 geni_se_resources_on +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x4a778329 geni_se_resources_off +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x56324a5a geni_se_get_qup_hw_version +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x5eb97a04 geni_se_select_mode +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x640fe7c0 geni_se_clk_tbl_get +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x6bcbfc33 geni_se_config_packing +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xa100c113 geni_se_tx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xe41b9348 geni_se_rx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x095bf68a qmi_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x0ef12cc9 qmi_encode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x21ce5888 qmi_response_type_v01_ei +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x30abab1c qmi_add_server +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x5c201769 qmi_handle_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x68772745 qmi_decode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x8995b77d qmi_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x9c216db0 qmi_txn_wait +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xb5e00484 qmi_send_indication +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xd6bab80d qmi_txn_cancel +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xe59ff0cf qmi_txn_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xf0d9f52c qmi_send_response +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xf4fdba61 qmi_send_request +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x3abef80b qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x34b57571 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x9979b76e qcom_smem_virt_to_phys +EXPORT_SYMBOL drivers/soc/qcom/smem 0xeeffa750 qcom_smem_get +EXPORT_SYMBOL drivers/soc/qcom/wcnss_ctrl 0x899096e1 qcom_wcnss_open_channel +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x060801fa sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0c53584d sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16568455 sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x230ece4a sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x275b0267 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2fc96466 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4555b702 sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x5fff5629 sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x809e381e sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x8ebc4eae sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x989e271b sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9adf7f7a sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9bdb1e60 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xb51a96a0 sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xc49cf907 sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xe753b38c sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xebbc6705 sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf2dad93f sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf72d444b sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x3035bc0a cdns_xfer_msg +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x34712074 sdw_cdns_irq +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x420392a7 sdw_cdns_is_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x47958190 sdw_cdns_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x4b7f6a6d sdw_cdns_clock_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x50e22626 sdw_cdns_enable_interrupt +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x63a1b2c0 sdw_cdns_pdi_init +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x8d3a908a cdns_reset_page_addr +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x9321fca6 cdns_bus_conf +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0x9680e0e6 cdns_set_sdw_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa76a6fcb sdw_cdns_thread +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa7d6ffcb cdns_xfer_msg_defer +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xa82ae729 sdw_cdns_clock_restart +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xd2485450 sdw_cdns_config_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xd7983a6a sdw_cdns_exit_reset +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xe272f896 sdw_cdns_alloc_pdi +EXPORT_SYMBOL drivers/soundwire/soundwire-cadence 0xe3d33f0d sdw_cdns_probe +EXPORT_SYMBOL drivers/soundwire/soundwire-intel 0x3f4a2354 sdw_intel_exit +EXPORT_SYMBOL drivers/ssb/ssb 0x01f2bdc5 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x1bd85fad ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x1bf966b2 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x21be4926 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x269ece83 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x33327d7a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x3389bb0d ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x63d8c46a ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x83414c3b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8586b365 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x8f35f3af ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x90f9605b ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x975e389e ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xa35aec8f ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xdcdc606c ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xde1fb347 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe2d58ddb ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xeaaf4f91 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xee84cac6 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf8d38da2 ssb_commit_settings +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0b2b309a fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1168cce4 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x154c107d fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x21bbc916 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2617c77e fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2c1c2a0c fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x419f6a76 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x53155dea fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x588172cc fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x58cfc4c1 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x59036615 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5a718f65 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x609032d1 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7dd5c3d4 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7e77c757 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8be876aa fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9c52cec9 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa5e38b17 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc9687ff1 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcc916a7c fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd6795742 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe393bf84 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe7c5fb70 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf913aff8 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfc1eb20e fbtft_write_spi +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x01fbde8d gasket_pci_remove_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x065f9c9d gasket_page_table_max_size +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x0b3fb2c2 gasket_sysfs_put_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x18095b55 gasket_mm_unmap_region +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x339c2b95 gasket_page_table_map +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x36f27d69 gasket_sysfs_get_attr +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x372973e0 gasket_page_table_are_addrs_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x38c3d415 gasket_page_table_num_active_pages +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4109757c gasket_page_table_partition +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x41776221 gasket_sysfs_register_store +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x4292ff96 gasket_page_table_is_dev_addr_bad +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x520c8383 gasket_wait_with_reschedule +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x569c3817 gasket_enable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x63185ba7 gasket_sysfs_create_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x72ded0ec gasket_reset_nolock +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x77311f6a gasket_page_table_unmap_all +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8c92da47 gasket_page_table_num_simple_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x8eba5d04 gasket_get_ioctl_permissions_cb +EXPORT_SYMBOL drivers/staging/gasket/gasket 0x96ee8b04 gasket_sysfs_get_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaa2668a gasket_num_name_lookup +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbaf2f8cd gasket_page_table_unmap +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xbdd30227 gasket_register_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc225208c gasket_page_table_num_entries +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc28723d0 gasket_sysfs_put_device_data +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xc9b68f55 gasket_pci_add_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xcf820da1 gasket_reset +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xd899940d gasket_disable_device +EXPORT_SYMBOL drivers/staging/gasket/gasket 0xec15f3da gasket_unregister_device +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xb7e1e6e1 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa843fef1 ade7854_probe +EXPORT_SYMBOL drivers/staging/media/allegro-dvt/allegro 0x2c79d0f2 msg_type_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x058d734b RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07528eb4 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11efd579 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1222905f rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x16501db0 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x17cb7ce0 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d0e9d2c rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d25727e rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22b2c67b rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2cda25f1 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x32cc9845 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a1f1cb2 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d6a8880 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ea99da8 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x472b7c56 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47d49f77 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d405c23 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5356e197 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5941aede rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x62aed57b rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6dc8b888 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e97ab83 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x705ca35e rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79210144 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a6c8354 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81bcbd74 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ce4e1b1 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92cdd54a rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x969ee9ac rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99d9068c rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b136423 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa1b696e0 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa1e1fe61 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa285caab rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaebcb453 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb533606c rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb67ee27c rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb99d5b2a rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbeffa289 dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0439449 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd337dd65 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xddd2c0c9 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe49fa11b rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeaac2494 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xebadda07 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec47a243 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed296426 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef9d0152 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5a97aa7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x170dbb06 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19361dc5 to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x19e8221b ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d66a0ff ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1fa2648b is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x22edb176 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29ef8f47 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x312f771f ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32ef101a rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35a968d5 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43ffb775 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d3b7283 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50fc209a ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5494b987 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5af6eb7f ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c0790c8 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5eeffe26 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61764cc6 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61e13605 dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x65f11194 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a66be1c dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f049dd1 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7101d031 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x77d39867 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a3cb8d5 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88bf8b24 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e5dc2b3 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93dc297f dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa385b83b ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5e1c7ca ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6bd0076 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa84331ac ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac27150d ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf8ad38c ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0325ea5 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc7d9f86 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7cb89c3 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc94281d0 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcbbc31c4 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcc2499fa ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce0e0c75 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce8133c6 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd0d31f69 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1300d80 dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd179147b ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3c20e03 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4441679 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd4aa1b5c ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6995f4b ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xddd37efe ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe78660d1 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecc5fb1b ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef39dc69 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf43d8c98 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa681ee2 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x2b777418 vchi_get_peer_version +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x2f3516ab vchiq_connect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x36331e4f vchi_held_msg_release +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x47f110c2 vchi_service_release +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x5211f7cb vchi_initialise +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x57e16fff vchi_disconnect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x582ed8ca vchiq_bulk_receive +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x6682543a vchi_msg_dequeue +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x69df51ac vchi_bulk_queue_receive +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x713b5716 vchiq_shutdown +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x84112d9c vchi_connect +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x915629ae vchi_bulk_queue_transmit +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0x92b2feb4 vchiq_bulk_transmit +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xa22e9df3 vchiq_add_connected_callback +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xaa03351f vchi_service_open +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xaba69e05 vchiq_add_service +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xbd9445f3 vchi_msg_remove +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xbf670d66 vchi_msg_peek +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc1fdb31f vchiq_open_service +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc4b0bf30 vchi_service_close +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xc5c429da vchiq_initialise +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xcc07cfe3 vchi_queue_kernel_message +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xf2e8c52e vchi_service_use +EXPORT_SYMBOL drivers/staging/vc04_services/vchiq 0xf63a36d7 vchi_msg_hold +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0706edc5 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x22a80f84 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x253cb569 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x25c08c27 iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e25921e iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3310e0dd iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e7025ca iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x40d4b42e iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x43801198 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4e8da935 iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4f628e2b iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5068eb59 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51c60618 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55c5f1c9 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x56cc24f4 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5dc1c2cf iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5f96287f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5fb776a7 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x72a8bfd6 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x74dc254a iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7a502a5b iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8a31cb5f iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9172ba3c iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9afee9d0 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa0270afa iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa2e9e83d iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa54c6aee iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa68e49a0 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb3f99c46 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb4f3f5d0 iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb5e8646a iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9add287 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xba3d76f1 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbdc86888 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc57e84f9 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2c22cd5 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd82d5e1c iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2b3fcee iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe8ddc327 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xed661768 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf0edb890 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf70b74fa iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf9be89f4 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfda7e837 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x056e36a0 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0efcf961 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x103bb4b9 target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x18114b49 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x193d5379 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1960a44f core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1c6e181f target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d80b5e5 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ebdd182 target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2047ebaa target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x240c9352 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e0e293b transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f0d7da8 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x3052e87a core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x32dde520 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x32fe8dcd target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x33a24637 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x33a969df target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x35663a04 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x361a96be passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x38ec92cb transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c266ba7 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d42168a target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a9b9cfd transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e70a704 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5093b164 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x562f11d4 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x56eb2a07 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a6e794f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x62e20904 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x6358a53c target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6592e4f6 target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x659ca1b1 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x665d8514 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x68b6cf89 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fd57bcf target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x70fe64dd target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x71907ce1 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7716af66 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d00eeed sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x80e49651 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8307094f spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x848e9d7b target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x9017706d sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x91c5b8ec target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x96a44c3d transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x99650bac transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c990421 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x9f0bea81 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xab88c630 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xad517694 target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf096a2f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf3c2356 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xb08ae6d4 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xb376764e passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4d2c924 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5edc63a transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbab2e3d4 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcf295fc target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbdf52435 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3904010 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3d9b20e sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3f51bd5 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc05d2b4 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd3f6397 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf52f5df core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xde5a5887 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xe48130f9 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xec2f3023 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xf0b02e5f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1fa34f2 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4f6452f target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9f590da target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xa9122de9 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x485822cc usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x27204718 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x104e4322 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x136226df usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x163716fd usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x33a70c59 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4bf8ccee usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x661df58b usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x681f41ec usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6f20c6bc usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8593a01a usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x89a68f70 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8b29798a usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb171a0c5 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf8bf332f usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x481ae83b usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xfc46ee3e usb_serial_resume +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x06d4e01e mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x569ed51a mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x663d4de8 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x8e913b6c mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x9010220a mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xa9afadcf mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xa9c6c2f0 mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xb6bf21bf mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbdda3e55 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbe5fb84d mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc6b413f4 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xe885267c mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/vfio 0x148da734 vfio_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x19567d06 vfio_info_cap_shift +EXPORT_SYMBOL drivers/vfio/vfio 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL drivers/vfio/vfio 0x1c9947b9 vfio_unregister_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0x292521cc vfio_register_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x6c28be5a vfio_info_add_capability +EXPORT_SYMBOL drivers/vfio/vfio 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xadc044b7 vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL drivers/vfio/vfio 0xe591a862 vfio_unpin_pages +EXPORT_SYMBOL drivers/vhost/vhost 0xd0f4ee27 vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vhost 0xf2ae3446 vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3ecc1eea vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b6a6e23 vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6d95262b vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8d40c6f4 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xf6784994 vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x591fe844 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6b4b0b7c lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9a89116c lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xaa38d5a5 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0cd84627 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4677beaf svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x507ed138 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x7b9dc767 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa0eb8979 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc784d983 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe2a71d40 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x581e9ce2 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x51668ea4 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x1367e7ad sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x4dee99cf cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe270dddc mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7696a61d matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x9636ee56 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xc1112382 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x0e46a94a matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x97fbb6a9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc1445708 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf857bf3b DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xf6409cc4 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x9fec8f07 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x004625de matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8532f32b matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9f0f5faf matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xd5dc6a8a matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x957c6384 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xf9ed8b3f matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x0764ab0b matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x233cf71b matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4a60db1b matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x676957d2 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xa2e2a660 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9a2d26d0 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf22dd6e3 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x200a3df7 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdd71fa9b w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x06f56101 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x08a4d3b4 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x65ed6564 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xd1d00da2 w1_unregister_family +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x74d95f32 bd70528_wdt_set +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x96c12d10 bd70528_wdt_unlock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xc6439d59 bd70528_wdt_lock +EXPORT_SYMBOL fs/fscache/fscache 0x09effc69 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x1054c036 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x11609e7b fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x13f457d5 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x162beac0 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1a7eaa7c fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x1e03288d __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1e93e7ab __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x23b080f9 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x29ec443f __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2e5f81b7 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x2e8107d5 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x389e43fa fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x40f17064 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x4526ef21 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x504ecd49 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x51fe2148 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x5407dd88 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x5e0cb538 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x64e0e9da __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6acefa42 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x7029d476 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x73b88404 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x759a2e34 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7b1135b6 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x7c903628 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x7e5cc9fa fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x81c419be __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x97010e2a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xa5ca2905 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xb3094b0a fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xb6f97aa5 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xc106b338 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xc29ef6cd fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd3f0268c __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xebd5466a fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf18c9009 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf1c29fdc __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf81eb9e0 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xfe341111 __fscache_invalidate +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x01c320e2 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x42a2aef0 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0x99637dd2 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa540a7ad qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd4455320 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xde768286 qtree_entry_unused +EXPORT_SYMBOL lib/crc-itu-t 0x09a34a2b crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba55d23e crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xe2aae5cc crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x7bcc24fd blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xa3cefaa0 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x755f4ba3 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x147c3f2e chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x1c679fe2 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x37b34b92 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5b19e187 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbaf4d923 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xce15a526 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0x96a2d9e4 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xf250d433 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x38f7b6e0 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x93ff008c LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x9cef495b LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0x679e8cc2 objagg_create +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x2b4846a1 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x034314c5 lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x29093d42 lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x502388e5 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x96a19b04 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xa7c8b4d2 lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd17fead5 lowpan_unregister_netdev +EXPORT_SYMBOL net/802/p8022 0x48ef112d register_8022_client +EXPORT_SYMBOL net/802/p8022 0xdcddd1d6 unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0x69be9ad8 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xee3507cb register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x03d650f5 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0e86fdd6 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x1001b630 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x114e82fb p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x1427d9f1 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1430723c p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x20bd6526 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x2742ae16 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2fe86346 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x308b2ed9 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x39153115 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41ce9823 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x41faf6ec p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x422b4eee p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x4e1b8d5f p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x5f8c7940 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x64dc5a0c v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x6c224bd8 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6f441070 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x70bca124 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x814755b1 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8440bba3 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x854c65e0 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x87352e99 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x87442ef1 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x89f1e40e p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0x8cfa05df p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x95bd8f96 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x984c5e73 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0xa506f8e8 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa8d593fc p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xb05bf875 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xb79f25fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0xbe595ba7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xc1999f0c p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc397a613 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc42082ba p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xc43fd923 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc4ad73eb p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xcc6bb4fc p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xd61c8955 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xdf62f1b4 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe803c4ab p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xea137a8f p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf1acb777 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xf8c0240d p9_tag_lookup +EXPORT_SYMBOL net/appletalk/appletalk 0x02d62fa0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x06c6298b aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xa4c9e1c6 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xbb056e11 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x15a78706 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x17653131 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x1c3ecbef atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x1c886e8f atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x2777f314 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2c1e19d7 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x44c6e633 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x8425dfa5 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x90068e0b vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x97da6d7b vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb90647c6 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xcc60bad1 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xdad271da atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xe03b6ad2 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0b48675d ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x22c4ab90 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2a184756 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x3835160d ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6e67f1bd ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd3858382 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe088a9a2 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0xf8a37756 ax25_linkfail_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09b3809b hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c64392a hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0efe5c93 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f2f9f40 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15a9ff13 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19722744 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d17fb8d l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d549cce hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x202bd06f bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2096fc0c hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2639504f hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2933085f hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e596b8d bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33860c79 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x338d9495 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x388d23a9 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4d4914b2 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4f54c65f hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d5e5a81 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f3db038 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6483b492 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68ee15b8 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77ffcb55 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7a62c7f7 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c8ab9ab bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8cf2b203 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x922c4771 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x94ae326a l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9792954e bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x981518d1 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaeaebe4a bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb3c661d9 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5f9600b hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb67a2aee bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0fca9a7 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd62f0e47 __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7bbfd11 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda21847f l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddf18891 hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe750231a l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7f55041 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec01d6d4 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf3b10277 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5e84347 hci_register_dev +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc8b953ed ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe4baedad ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xebaefafb ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3adb1c49 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x4afde95f caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x5491be91 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8a124a3b caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xde22ce7d cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x2d923bea can_proto_register +EXPORT_SYMBOL net/can/can 0x505fe1d8 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x79b38059 can_rx_register +EXPORT_SYMBOL net/can/can 0x7b273f79 can_send +EXPORT_SYMBOL net/can/can 0x9679fe57 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xe30c8f15 can_sock_destruct +EXPORT_SYMBOL net/ceph/libceph 0x05c82798 ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0x0b736a10 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x10a3f11c ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x10f89529 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x190cbdb2 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x1ebc18e8 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x1f23dfea ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x2494626d ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x25bafe59 ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2dda077c ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x2e929093 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x30a3ef90 ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0x32eceec3 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x3501e330 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x36897044 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x38172836 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x38293a48 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x3ba10804 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3ca41f3c ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x46555f2e ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x469d941a ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x4818dcbe ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0x4c225376 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4f69a7c2 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x50db66c6 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0x54d4b4f6 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x54f7b7d9 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58fdd266 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5e0ec6a3 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x623084f1 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x65815bdb ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6c44cc62 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x6d8eacc2 ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0x6e886c6e ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0x70ada54b ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x738bfa68 ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x771c0a8f ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0x7b078075 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x7b67ff98 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x872b5a99 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x888189ce __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x8d0f2239 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x8e9464f2 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x909ef78e osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x9143133a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x921c518f ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x933fec3d osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x936633cc ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x94fa6581 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0x9b1cb11b osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x9b2f3478 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9e3cf710 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x9ea903e6 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa09971e6 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa0a01cb6 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xa2cdfe4d ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0xa366f217 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xa44f01e5 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xa4f87999 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa77ccedf ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0xa8efc3c6 ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb155a07a ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xb286f18b ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xb4b66412 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0xb4f4d6bd osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6bf656f ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb889da3c ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb8990cdd ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0xb9e046f0 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0xbc5f06c2 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xc2d75626 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xc330188c ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xc4de86b2 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc95d2fab ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc996d267 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xccc6d2c4 ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0xd07a823b ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0xd1eecb75 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd3009e41 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0xd368e265 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd42f14b8 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd7417f33 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0xda558e9a ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xdc935bdb osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe08a2d30 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xe0fc8293 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xe1843867 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xe33b2984 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xe3a76c1c osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xe7ff701f ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xea3ae4a0 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xeaa9e3be ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0xed408fdd ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xef65f2f5 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xf1d8777c ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0xf32fca37 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xf5071985 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xf88469e6 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf9382620 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0xfa9b6df5 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xfc436037 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xfce7e21d osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xffae2707 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xffbb3bfb ceph_cls_break_lock +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x0e9c184b dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xcaa297c3 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dsa/dsa_core 0x9206a597 dsa_port_vid_del +EXPORT_SYMBOL net/dsa/dsa_core 0xd539fec2 dsa_port_vid_add +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0b47c28c wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x549bb46c wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa053537f wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbf36f8e2 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfb4076f3 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfdd6bb81 wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x1de748dc __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x37acfea0 __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xe8cdfbf4 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x501ecdd1 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5d5e275b ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xba58cc20 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xff0c67d8 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0cade093 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x194d712d arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe0a2daf4 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x034b5bb8 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1e485d13 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xae09319d ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xce0ab4f1 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xdc97b102 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/tunnel4 0x830dff8e xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xef7eaa13 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xc6046923 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x170e7870 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6af83655 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x7e1cbf3e ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x872d9e11 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbb026586 ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc8948c19 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xda0f6728 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xdc8ff9b3 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xff955db2 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0244d86c ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x079a8eee ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3371dc8c ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6422ce27 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa65777ed ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x63e79fcb xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xf6c187f7 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x7900a91c xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe2d9948f xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/l2tp/l2tp_core 0x30177077 l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0xb5fb3299 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x2746abb3 l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x164067d3 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x33d97ecf lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x39ee9e3d lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x769d65b0 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xaf8efd11 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xaffde974 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xbf6b867c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe6c38286 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x1327a831 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x1cdf8ea4 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2b8b9b6e llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3cc363e5 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x45984c81 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xa51c0140 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xe656f31e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x00ef0b7f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x013614b0 ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x0505426f ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0x060b8514 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0eea20d2 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x0fa15605 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x149bb1c8 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1b791e72 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1bd2bbcf ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x1d038a7c ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x1f79b254 ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x1fa87284 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x201c5df7 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0x212aae4a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x2360979d ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x236c13f2 ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0x270c5d75 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x28b18187 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2afd78af ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2c9604ab __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x31dc504e ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x34ee8865 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x37b4f0bb ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x39c7d518 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3c8841b9 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x3e0760fb ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x3e7452ad ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x3f4e2c23 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x442502e3 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x4e701bf6 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0x50aeb763 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x52706400 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c6bc273 ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x63f9d9aa ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x6509bab9 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x73d3663f ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x78cefa7a ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x78ed7106 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x79775a35 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x7ab1418d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x7ac87b0d ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x7b02c66a ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0x7bed5726 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x7ea95cee ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x82f866ca ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x861b366c ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x86562922 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x8baef246 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x8c69e384 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x8cb20c42 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8d587453 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0x97b5cbeb ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9b2cfdb7 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa3832d0e ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa38eebb5 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa5b64d96 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xa9954754 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaafc49b4 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaeee15ee ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0xb051fe6f ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xb38c88cd ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb3a5cae0 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb3e5cc60 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xb4bd9a32 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xb6e80184 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc24ad41c ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc33f7373 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xc4576dd0 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xc6a64e7a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xc7d5ec34 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc895b85b ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xca64592e ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xcd54eb58 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xcd9b1571 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xd14b1ca9 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xd5335930 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xd69a6051 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xd7121c7e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xd84cc89c ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xd89841ce ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0xda7573dc ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xdd11813e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xdf7e8588 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe05e23e3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe2ab15fa ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0xe3a45809 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xe433671a ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe63875df ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe6c17d73 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe8555517 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xeb98062c ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xef6d69fb ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xf70b8a37 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xf98bc023 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfb99f5d9 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac802154/mac802154 0x14c1dad2 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x2caf6745 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x6ca9e3ac ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x86fb39bf ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x9e674af6 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa2502bc8 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa613b5ea ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xe6c291ab ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x183a75c5 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1ec1241c ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x28195718 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x30971822 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x32923e17 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x45b35e4f ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7179b730 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7bdeb11c register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7d8e5ffb ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbd28d3fb ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb6b91c2 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe5255048 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe9c97da3 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xebaeb29a ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfb6c9dfc ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x031dcb0d nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x89c4b7c9 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xa9778e1c __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd090056b nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xd716683e nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xde1c8a2f nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x112e2340 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x314cb091 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x536e2944 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x61c3b72a xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x67ca928c xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x7abe71ff xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa230a03a xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xa24b3f86 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xa9944992 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x02200731 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x0933724f nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1e7d7f92 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1f42d782 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2993f31c nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x29f709e3 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x32417d64 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x48bb48c1 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x492b06d5 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x524e8ddd nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x5952d916 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0xa68a5c7a nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xafe07a46 nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0xbc26368c nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbcc904c1 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xc2f355a2 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xdf2b0908 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xe66cf4f7 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe857c1ab nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xea560216 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf9fe060f nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x0399ac10 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x05a01665 nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0x20c87acf nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x2108bbef nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x2e9933d7 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x31c3bf01 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x31d15099 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0x3e425442 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x428d3dfb nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x462b7084 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x49c799c0 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4a065e5e nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4ca6bdad nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5d840af2 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x79e8d544 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x9a1e6568 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x9c2c91ee nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x9c708112 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0xa8c2fb3f nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xaa13430c nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbb27fd44 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xc09837ce nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xc1cf78ae nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xdee6b016 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xe0bd5cd0 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xef05b878 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xef7bb2f4 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf2cc37f4 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xfdf5ec43 nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x15b10cba nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x18e6e375 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x26cb2f57 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x29255867 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x2e0a700c nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x337bb956 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x356e558d nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0x35a18955 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x3e811899 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x4d507637 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x5f35594f nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x67a5eb42 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6d290d3a __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x71b2f648 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x84249ccc nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x8a23e8b9 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xa3490223 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xa8cfb286 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xaea87373 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xbf2fcb1f nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xc35d2017 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc44f5c9e nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xde66365f nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xe1bdeb1a nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xe51a48fd nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc_digital 0x18a159f2 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xde89167c nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xeeda97d8 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfe7073a1 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x0b000de9 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x44e856ba pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x6a59e1a1 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x8188f6e7 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x858045d2 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xc937415c pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xea0c3de4 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xfe8336de phonet_proto_unregister +EXPORT_SYMBOL net/rxrpc/rxrpc 0x109de5a2 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1df7c625 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x26572142 rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x42821906 rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0x4ad96813 rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5830dfbe rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x718361b7 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x73d1cc97 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa0915555 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa6d782ce rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb680f99d rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb8212746 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb95edc57 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xba04b5dc rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0xc3bd9c6e rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd0731909 rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe6299624 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xecf56870 key_type_rxrpc +EXPORT_SYMBOL net/sctp/sctp 0xfa43b149 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x1b99523d gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x54a32053 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x978b4b0e gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x29391f85 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3f8af161 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4b0f17ce svc_pool_stats_open +EXPORT_SYMBOL net/tipc/tipc 0x174ee2b2 tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0xa442cb82 tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0xa51faeeb tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0xc0b9729f tipc_dump_start +EXPORT_SYMBOL net/tls/tls 0x64a664ca tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x6227deb9 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xe6bd3b06 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x001670d8 cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x0454d510 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x058e3e72 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x09ceee90 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b3bfe35 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x0c816232 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x0d78ab71 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x0dccf1f7 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x1052868b cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1177aacc cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x12a1ba01 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x16f0f0fe cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x191349b7 cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x1cf18d0f cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x1dcf7287 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x1e40c7b8 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x1e4e06f1 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x1ef15cb3 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x20ca3356 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x222f27a4 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x27e9099d cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x28c46771 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x28cf7d68 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x29420226 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2f640909 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x2fbb2cc9 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x374d36c3 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x375dab31 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x43f5efcf cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0x4452b7cc cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x44841080 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x44feb537 ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x47dbe1ed cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x498160ef cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x499b5647 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x4cf4452e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x4d7832e1 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x502cd5f0 cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x51fd633e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x52d08d4e cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x538d137c cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0x59e8ae32 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x59fd4f42 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5b85f9b3 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x60787e68 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x60cf8734 cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x6368e22f cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x6473c669 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x65dc2558 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x65f85787 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0x6644751b cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x66b6b386 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6c673ec0 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x6ce6d189 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fc63af8 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x801ad680 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x85062075 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x87e5cd34 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x892a9881 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x918307f8 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x962f565b __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x97255b67 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x9a02256d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x9a89e5e7 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x9b80e37d cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0x9efd91b2 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0xa04c6765 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xa65f199b ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xa758f47b cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xaba9fb82 cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xaca7ccbf regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb0452011 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xb404e090 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xb486b08b cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xb90ed206 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xba1736c6 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xbf4da3ba cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xcffacdb3 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd05cd160 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd921ff62 regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe08b6266 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xe0cca15f cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe243289f wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xe43cf69d cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xe4876b27 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xe9ce8243 cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb106250 ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xeba855cb wiphy_read_of_freq_limits +EXPORT_SYMBOL net/wireless/cfg80211 0xefa2291b cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf0b71913 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf2062fd1 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf9ceb282 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfa331270 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xfd9e36c0 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/cfg80211 0xff99a865 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/lib80211 0x0c6fddb7 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x4143d9a4 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6c614b87 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x940925a1 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xbacf6f52 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf5b6a6fc lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x76759a9e ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x119e0199 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6e687b92 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x73c82cc7 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x82886421 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xbe10865a snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x734e4fba snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7a3e0db5 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8150b379 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb8620ad8 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd70dbf6 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdd935c83 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe9e6c50c snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xf84b2a66 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0282c5bd snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x055f3614 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x08546591 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x0bec1bbd snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x0d54b84c snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x0d87ffa7 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x195d5d99 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b1fc125 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x1ec1194b snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x1f4c364a snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x235d8e87 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x24571e8c snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25d89cc1 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x2c77f457 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x2ce314ad snd_component_add +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3524d6ca snd_device_register +EXPORT_SYMBOL sound/core/snd 0x385be01a snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b48bbaa snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x496d0097 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x49c5e3c6 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a5d1102 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x4e5d9ec1 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x52e93f70 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x540e830f snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x545daefe snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x5fd6b2d9 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x610c2bee snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x61eacf19 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x6c891a8b snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x6fbbc7c1 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0x7365c628 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x7b8fc0f8 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x8c058a12 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x98cec2e5 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x98e14e6a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x9a735e2e snd_card_register +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0e91ff3 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xab2614bc snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc4b46a32 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xc828d009 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xc97cc022 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0xd0d08752 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xd4d53331 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xe974c0b5 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xeab1ec48 snd_card_new +EXPORT_SYMBOL sound/core/snd 0xeb3cdada snd_register_device +EXPORT_SYMBOL sound/core/snd 0xf49ee4c8 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-compress 0x5eba4820 snd_compr_malloc_pages +EXPORT_SYMBOL sound/core/snd-compress 0xe1f438de snd_compr_free_pages +EXPORT_SYMBOL sound/core/snd-hwdep 0x32e92e95 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03cf995f snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x11eba48e snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x22226727 snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL sound/core/snd-pcm 0x244aecf0 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x28b16bd3 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x296948c9 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x29a2732b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x29c2f547 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2b46d139 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x3147197d snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x33f7f14d snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38d4d10a snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3ab5ce8c snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4941a44e snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x4a930b89 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4b02ffe0 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x4e33de52 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x548fd940 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x5a0a0ca1 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x5a22956e snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x616d496a snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69255f54 snd_pcm_hw_limit_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6a9bf276 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x6ba82abb snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6fdddc81 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x728435ff snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x81d2c6b8 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x84d82da4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x88b168bd snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x8e44889e __snd_pcm_lib_xfer +EXPORT_SYMBOL sound/core/snd-pcm 0x91bc5284 snd_pcm_set_managed_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9aa8b734 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x9fcac520 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa2464dbb snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa91af9b6 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xac818fe2 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc1f5ba60 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xc6f991da snd_pcm_create_iec958_consumer +EXPORT_SYMBOL sound/core/snd-pcm 0xd1056666 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xd2002e3a _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xd4493d21 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe62133bb snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xe93f5c74 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xebf3c229 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xec46da08 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00c7623b snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0c6d3363 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2190c598 snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x25977329 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x28ed09ce __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3294978f snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x32ecac01 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x48262acc __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54c2d8e7 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x74083aa9 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x75b02d46 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9b9b00bd snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaad99917 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xae8fcbef snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb3df9d71 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb71acee8 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc038b591 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xef3c5abc snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf01a1b2f snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf7856d7f snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0x7f0e0819 snd_seq_device_new +EXPORT_SYMBOL sound/core/snd-timer 0x03987a40 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x10e7855b snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x1721f1b2 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x1cdc0f7c snd_timer_instance_new +EXPORT_SYMBOL sound/core/snd-timer 0x31c6685b snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x3b0db752 snd_timer_instance_free +EXPORT_SYMBOL sound/core/snd-timer 0x3c954ef1 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x41aef599 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5ac14675 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x5afa5d75 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x62a7fd5d snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xcc0df4e6 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xcd238e22 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xd2a6ef51 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xf469cfa6 snd_timer_continue +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xf13c7920 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x115d8b6b snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x42c4810e snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x57b3102b snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6410ff46 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x95073922 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb799cf9b snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xba66ae9e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf0d51782 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf25c26a3 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x06202a29 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x21d01720 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3e5f4230 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x63111a51 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x76231b0c snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7878f1bf snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x87777766 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcfc7fead snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd3af368f snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x13f8775c iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x24570772 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2d7d4074 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35e0e7a1 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x37085eb6 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d5444b7 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4aab38f5 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4ea6696e cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54907ba6 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c1814e3 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ede4696 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ee9b39d fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63bd2889 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x778598fc amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7fd76718 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8ccc1ed2 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8d288532 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9b9a084a amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa6ff949a fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa8e8f8c8 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb008a603 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb477c15b cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbdfe1779 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca728f9f fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcfba9677 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd7d6e40c iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9e4a45f cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda23d5ec fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe20e34a1 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3658ed2 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xa57d59a7 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xa9acf96c snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x14ccbdb9 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x153541f0 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1a085eb7 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2546bc23 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4bb452f2 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x78b7f642 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x86d53121 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xcd619e7b snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0020fdf6 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x91eef3a2 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xe3d7ce68 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfa9580fb snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x449da55f snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xe37cbae2 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x05436710 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x29b47bac snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7c31d9ae snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8a2a3e38 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe0a471fe snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe4600ae0 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0d13931d snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x18a508a1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x49e52653 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4fca4e48 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x67182330 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x91bfef1c snd_i2c_bus_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0516caea snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x118efb83 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x31b7ab4f snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3c52af58 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x588e16f5 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x624c1f77 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7337d299 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8b0628d7 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xab39f3c3 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbaea307f snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbbd94852 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc7430db snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc7212cc3 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcb4f172c snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdd36c2bb snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe5d3405b snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe995fa8a snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x03c9fe79 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x29dd2398 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3b33d2df snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x580d4a6d snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x91d8fcfd snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc098fe62 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc665dce3 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd9c1bc25 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe1e80db8 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x61271feb snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa1b2ed3c snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcb0b601c snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x08f3de7d oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0b1ad63c oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e62c75d oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2489e7b5 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x28405bd0 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3340a7c7 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35ede692 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x41314710 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x49b3941b oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x69a3881a oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6d15fe86 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x83ef515a oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8f2e962 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xabc513a4 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb0b0da5d oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb8c44e86 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2ded0f0 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcc1e4d58 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xce91e480 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xce985162 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb2811f2 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6ade437c snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb4adfccd snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbbca7e4a snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc44d5b06 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe4edff0b snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x9c146833 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0xa6430e04 pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x03c11991 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x37993dbe tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x65cce105 aic32x4_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xb793f82b aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xe4638ae8 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/qcom/snd-soc-qcom-common 0x81b8da06 qcom_snd_parse_of +EXPORT_SYMBOL sound/soc/snd-soc-core 0x52c3cfdb snd_soc_alloc_ac97_component +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8 0x4cac319d sof_imx8x_ops +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8 0x87b40f52 sof_imx8_ops +EXPORT_SYMBOL sound/soc/sof/imx/snd-sof-imx8m 0xbadfc4f4 sof_imx8m_ops +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x061162ed snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x07f0c73e snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1c62ea9c snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1d22a5ea sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2339d4a3 sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x23c65c91 sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2711ff2d snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x296345d5 sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2a238a4f sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2aa099a4 snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x32d9e169 snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x456dee42 snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4ce43948 snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x594e2867 snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5e6c4308 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x627fec55 snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6683cb50 snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x67dddc1e snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6d67ee93 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6e544cc7 sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x73f03ca3 snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7725dc37 sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x795ee2c1 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8abea885 snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9836148b sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9be2a6b4 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9f126fea snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa144a5de sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa1fb0a75 snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa38cce7c snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xab0fcd47 snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad20fdd8 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad531da3 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb1a1c1aa sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb5d02496 snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb8732854 snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbf441fe8 snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc66824c0 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc6a30604 snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc6b53798 snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xca066e82 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcd174792 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcedce89c snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfdc5f98 sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd0eb416f snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd6e9e6c0 snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd6f83644 snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdbd3a57c snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe1c902bf snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe32102bd snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe5bdd0e7 snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeff60ed4 snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf0bacbff snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf55d13a0 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf7943e9f snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soundcore 0x0d7916ad register_sound_special +EXPORT_SYMBOL sound/soundcore 0x327e019d register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x64cf82b9 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x895159e4 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcc3c10f9 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x03559191 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6acb7cd6 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6b79b05d snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x99a6e77d snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xac3d9a8a snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcb779039 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x293ac667 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x34ac95ae snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x48f920c4 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7d95566f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x85659341 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97bb24f2 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9db98086 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe2935f8c snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x0ac9a092 __snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0001505d acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x001d84ab page_frag_alloc +EXPORT_SYMBOL vmlinux 0x0026c4e3 simple_unlink +EXPORT_SYMBOL vmlinux 0x0049d7fb unregister_nls +EXPORT_SYMBOL vmlinux 0x006ac6f8 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x00748133 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x00850bee dev_change_carrier +EXPORT_SYMBOL vmlinux 0x00859035 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x008bd550 netlink_ack +EXPORT_SYMBOL vmlinux 0x00928200 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x0097576f rtc_add_groups +EXPORT_SYMBOL vmlinux 0x00a53320 rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0x00add6a4 proc_mkdir +EXPORT_SYMBOL vmlinux 0x00b4e053 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00babc60 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x00bd946b mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00fc4ebc nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0107218c tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x01238305 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x0129c4f8 par_io_data_set +EXPORT_SYMBOL vmlinux 0x012c8c9c fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0x012d5c93 peernet2id +EXPORT_SYMBOL vmlinux 0x012de2ea xudma_rchanrt_read +EXPORT_SYMBOL vmlinux 0x0133dbb3 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0137c888 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x01396ee3 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0x013db260 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x013f26ae dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x0140269f dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x01505d85 imx_scu_call_rpc +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x016da741 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x0182ebb4 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x0194b91b devfreq_update_status +EXPORT_SYMBOL vmlinux 0x019623a0 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0x01b6865c xa_get_mark +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01c9b37b simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x01de1136 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x01f8164f blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x020b88fb of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02229f56 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x02293ac3 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x0233b877 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x02403229 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x0267cba8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02896499 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02b4b46c dquot_transfer +EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x02c065f8 ucc_set_qe_mux_mii_mng +EXPORT_SYMBOL vmlinux 0x02d25e0c pci_request_regions +EXPORT_SYMBOL vmlinux 0x02d35af8 scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0x02d79aa0 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02fe7d49 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x0315b37d uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x031e98c9 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x03248138 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034b90b4 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x0354e36b __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03722129 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0x037943bb kmem_cache_free +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037d163e vm_map_ram +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x0386336a page_pool_update_nid +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03c87223 deactivate_super +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03feea40 cpumask_next +EXPORT_SYMBOL vmlinux 0x042f6bd7 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044974d8 sock_i_uid +EXPORT_SYMBOL vmlinux 0x045c77e0 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x04673adb qman_ip_rev +EXPORT_SYMBOL vmlinux 0x046e2d79 migrate_page +EXPORT_SYMBOL vmlinux 0x04748220 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x047ec778 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x0484c6c4 acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x04864529 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x04a99254 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x04cf64d5 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x04d10516 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x04db5cfe dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x04dde64f rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x04de7a28 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x04e67982 iterate_fd +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x05032b11 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x0504de8f tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x0512dc82 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x051d58e8 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05288281 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x054ae357 fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x055d5c95 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x055e77e8 jiffies_64 +EXPORT_SYMBOL vmlinux 0x05616457 inet_frag_find +EXPORT_SYMBOL vmlinux 0x0589174e ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x059860f5 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x05a104d3 keyring_search +EXPORT_SYMBOL vmlinux 0x05ac9f68 iommu_dma_get_resv_regions +EXPORT_SYMBOL vmlinux 0x05b234b0 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x05b584a5 pci_select_bars +EXPORT_SYMBOL vmlinux 0x05ba04bb scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x05bb138b sk_alloc +EXPORT_SYMBOL vmlinux 0x05de22f6 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0x05e708de xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x05fddd39 drop_super_exclusive +EXPORT_SYMBOL vmlinux 0x05fe3471 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x0601b9dc skb_queue_purge +EXPORT_SYMBOL vmlinux 0x060ba97c gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x061358aa seq_pad +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0620e367 register_shrinker +EXPORT_SYMBOL vmlinux 0x06292c12 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x062c0f22 genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x06328005 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0647ec77 dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x06715ea4 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x0684222e devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x06a8267d mdio_bus_type +EXPORT_SYMBOL vmlinux 0x06acda19 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x06bd88b5 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06c95d63 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x06d77957 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x06d7d1a8 blkdev_get +EXPORT_SYMBOL vmlinux 0x06f08e78 igrab +EXPORT_SYMBOL vmlinux 0x06f2011e xfrm_input +EXPORT_SYMBOL vmlinux 0x06f66827 of_find_property +EXPORT_SYMBOL vmlinux 0x07123ed2 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073e3328 param_set_short +EXPORT_SYMBOL vmlinux 0x0745a981 xa_erase +EXPORT_SYMBOL vmlinux 0x07677f37 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x077c4fc5 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x0781ec97 logic_insl +EXPORT_SYMBOL vmlinux 0x07a0564d simple_rmdir +EXPORT_SYMBOL vmlinux 0x07a56f0c of_node_name_eq +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ceeac9 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x08162c74 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x08288653 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x08356f32 fman_sp_set_buf_pools_in_asc_order_of_buf_sizes +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0846e6a5 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x085bec4c generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x085c5318 posix_test_lock +EXPORT_SYMBOL vmlinux 0x086f0194 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x08844e84 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x08850ba1 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x08b3c54c ip_do_fragment +EXPORT_SYMBOL vmlinux 0x08b62d11 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x08cbc218 devm_rproc_add +EXPORT_SYMBOL vmlinux 0x08e39398 cmd_db_read_addr +EXPORT_SYMBOL vmlinux 0x08fa2081 mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x090b29ad blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x090deac0 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x092e26bf acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x093712e5 acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x096734cc xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x09682235 down_timeout +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097af021 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x097e6428 sync_filesystem +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099597c0 pci_find_capability +EXPORT_SYMBOL vmlinux 0x099dad30 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x09a74001 dm_io +EXPORT_SYMBOL vmlinux 0x09ac1c39 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d7af2e soft_cursor +EXPORT_SYMBOL vmlinux 0x09da0ba4 xa_set_mark +EXPORT_SYMBOL vmlinux 0x09db0299 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x09f32699 _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x09f9b261 xudma_rchan_put +EXPORT_SYMBOL vmlinux 0x0a0ebc08 __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a31bebc tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x0a34f182 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x0a38bb06 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x0a4da22e pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0x0a5093ae sg_miter_skip +EXPORT_SYMBOL vmlinux 0x0a6eaef4 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x0a721302 padata_stop +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a87535a md_handle_request +EXPORT_SYMBOL vmlinux 0x0a882022 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x0a8a7e94 mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0ac7fe0a input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0aec7f04 tcf_block_get +EXPORT_SYMBOL vmlinux 0x0aed01f5 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x0af20eae down_read_interruptible +EXPORT_SYMBOL vmlinux 0x0af80df9 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x0b129b03 dev_get_stats +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b26b8c8 acpi_run_osc +EXPORT_SYMBOL vmlinux 0x0b290ada dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b30f0be set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0b41dbdd xfrm_state_update +EXPORT_SYMBOL vmlinux 0x0b43dadf free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0b57fb80 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x0b58aaa4 get_tree_nodev +EXPORT_SYMBOL vmlinux 0x0b592de9 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x0b5e7162 configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x0b61501b flush_signals +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b811430 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x0b8826ee security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0ba4a3aa __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x0bba71ca csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd707a5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x0bd98d94 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x0bdd5998 tty_port_put +EXPORT_SYMBOL vmlinux 0x0bee6167 clk_get +EXPORT_SYMBOL vmlinux 0x0bf21ca9 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0x0c20a37e alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c28e29b md_error +EXPORT_SYMBOL vmlinux 0x0c291a15 seq_write +EXPORT_SYMBOL vmlinux 0x0c490005 rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x0c5a6860 tcf_classify +EXPORT_SYMBOL vmlinux 0x0c5b15c3 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x0c66fbb3 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c75ec33 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x0c7c32b9 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x0c9ce971 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0x0c9d2c9c cdev_device_del +EXPORT_SYMBOL vmlinux 0x0ca9c586 tty_unlock +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cb7f11e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0x0cccca6c ip_check_defrag +EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0ce8b059 I_BDEV +EXPORT_SYMBOL vmlinux 0x0ceee05a inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x0cf748a6 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x0d007d41 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d21e7e7 d_add +EXPORT_SYMBOL vmlinux 0x0d2ca20f ucc_fast_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0x0d3b6951 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0d3c86d5 mr_dump +EXPORT_SYMBOL vmlinux 0x0d3f5c1a fman_get_max_frm +EXPORT_SYMBOL vmlinux 0x0d512cf7 find_vma +EXPORT_SYMBOL vmlinux 0x0d516c76 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5b2c16 mdiobus_free +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6adb95 copy_string_kernel +EXPORT_SYMBOL vmlinux 0x0d6fe1e2 blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x0d75ecc7 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x0da2375a __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x0db89d78 inet_getname +EXPORT_SYMBOL vmlinux 0x0dca5737 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0x0de85068 sock_no_getname +EXPORT_SYMBOL vmlinux 0x0df90c73 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e27a2dd ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0x0e328251 inet_offloads +EXPORT_SYMBOL vmlinux 0x0e569220 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x0e570aab netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x0e631ef0 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x0e67e8f1 of_pci_range_to_resource +EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor +EXPORT_SYMBOL vmlinux 0x0eab6809 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed09ba9 nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x0ed999e9 tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f0ec605 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x0f166de0 netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0x0f33b221 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x0f37ca89 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x0f41863d mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0x0f5d444e mpage_writepage +EXPORT_SYMBOL vmlinux 0x0f798803 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x0f850608 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f9660a2 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x0fa05e2f mmc_free_host +EXPORT_SYMBOL vmlinux 0x0fa1b426 reuseport_alloc +EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0faec7d9 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc2a058 set_nlink +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0fde8f14 kern_unmount +EXPORT_SYMBOL vmlinux 0x0fe8ecc5 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x0fef1d5b phy_suspend +EXPORT_SYMBOL vmlinux 0x0ff5e9f8 mdiobus_read +EXPORT_SYMBOL vmlinux 0x0ffbaff1 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x100ecc69 tty_set_operations +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x10127b97 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x1025009a cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x102936ec qe_clock_source +EXPORT_SYMBOL vmlinux 0x102e20cb md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x104c5bda import_iovec +EXPORT_SYMBOL vmlinux 0x104f8f7a __close_fd_get_file +EXPORT_SYMBOL vmlinux 0x105191b8 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x10567e63 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x1057a279 bsearch +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x10709d25 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x10725ebd locks_init_lock +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1089c48d nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x10b6876e phy_sfp_probe +EXPORT_SYMBOL vmlinux 0x10bab88b blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10ebf912 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x10f0e308 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a71c0 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1112ec1e sock_set_priority +EXPORT_SYMBOL vmlinux 0x11130591 dev_driver_string +EXPORT_SYMBOL vmlinux 0x1135f3af param_ops_short +EXPORT_SYMBOL vmlinux 0x1149c887 dump_emit +EXPORT_SYMBOL vmlinux 0x1161d299 phy_detach +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1170d42c sock_no_mmap +EXPORT_SYMBOL vmlinux 0x1177efe9 tcp_seq_next +EXPORT_SYMBOL vmlinux 0x119d5546 generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x11aabcc6 vfs_symlink +EXPORT_SYMBOL vmlinux 0x11ae0733 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x11b5d75d call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x11b87c41 clk_add_alias +EXPORT_SYMBOL vmlinux 0x11c5f4f3 iommu_get_dma_cookie +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11e55022 _dev_err +EXPORT_SYMBOL vmlinux 0x11ec049b blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x11ec5cf5 bdput +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ffdfee ucc_slow_stop_tx +EXPORT_SYMBOL vmlinux 0x12083546 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121a7199 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x122c20df elv_rb_add +EXPORT_SYMBOL vmlinux 0x123e92c5 try_lookup_one_len +EXPORT_SYMBOL vmlinux 0x1275b584 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x1278221d ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x1287230c i2c_clients_command +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ba66d5 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12e30f70 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0x12f292f0 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12fdb980 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x12ff2fe5 register_qdisc +EXPORT_SYMBOL vmlinux 0x130a6f86 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x130afd75 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x131a6146 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x131d5079 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x133cfeb1 rtnl_notify +EXPORT_SYMBOL vmlinux 0x134aea25 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x1360c941 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x1363f538 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x1364a8a5 udp6_seq_ops +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x13a1ea2f rproc_da_to_va +EXPORT_SYMBOL vmlinux 0x13c16987 migrate_page_states +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dc70b9 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0x13dfaf01 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x13e25101 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x1400d45b jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x1402ddf5 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x141271bf acpi_dev_found +EXPORT_SYMBOL vmlinux 0x142e94b6 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x143e0b11 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x145771bf sock_alloc +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x14653059 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x1467b143 disk_end_io_acct +EXPORT_SYMBOL vmlinux 0x146ce26a simple_transaction_set +EXPORT_SYMBOL vmlinux 0x148a9454 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x148be68f unload_nls +EXPORT_SYMBOL vmlinux 0x14b89635 arm64_const_caps_ready +EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14d12c31 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x14f45fcc bman_free_pool +EXPORT_SYMBOL vmlinux 0x14f5feb4 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x15007601 submit_bh +EXPORT_SYMBOL vmlinux 0x150e5f9c pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x1529ddc0 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0x15353b45 of_get_compatible_child +EXPORT_SYMBOL vmlinux 0x1535f3d6 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1552abec request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x155d5c34 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x15750ae3 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x157742cd netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x158533c5 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x15aab8a0 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x15ba50a6 jiffies +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c2e926 super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0x15c69cb5 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x15c85de3 mempool_init +EXPORT_SYMBOL vmlinux 0x15d9df94 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x15ea4898 qman_oos_fq +EXPORT_SYMBOL vmlinux 0x1619ab7a ppp_dev_name +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x16324089 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1658fd4e pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x165ad395 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x165ef20b devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1663d21f skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x1670202d inode_dio_wait +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16891346 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x16afcb45 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x16ca080e of_xudma_dev_get +EXPORT_SYMBOL vmlinux 0x16cd6b2b csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x16cdc340 acpi_get_table +EXPORT_SYMBOL vmlinux 0x16d498a0 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x16dee44d dma_fence_init +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e7e2cb cpu_all_bits +EXPORT_SYMBOL vmlinux 0x170ddf79 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0x17223d23 md_check_recovery +EXPORT_SYMBOL vmlinux 0x17264d5e __neigh_event_send +EXPORT_SYMBOL vmlinux 0x1727dc44 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x172ad412 netdev_crit +EXPORT_SYMBOL vmlinux 0x1765ea1f __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x177fe461 put_fs_context +EXPORT_SYMBOL vmlinux 0x17825d3f xudma_rchan_get +EXPORT_SYMBOL vmlinux 0x17893cda jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x178c4894 qe_upload_firmware +EXPORT_SYMBOL vmlinux 0x179a30a4 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x17aea329 _dev_alert +EXPORT_SYMBOL vmlinux 0x17c13238 generic_read_dir +EXPORT_SYMBOL vmlinux 0x17c7abbc nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0x17cec979 input_event +EXPORT_SYMBOL vmlinux 0x17e0658a __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x17f3014b skb_unlink +EXPORT_SYMBOL vmlinux 0x17f4eb23 of_dev_get +EXPORT_SYMBOL vmlinux 0x1802e8d8 free_task +EXPORT_SYMBOL vmlinux 0x180bd9fe udp_skb_destructor +EXPORT_SYMBOL vmlinux 0x18191937 d_alloc_anon +EXPORT_SYMBOL vmlinux 0x18217566 ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x184083f2 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x185513ce netdev_warn +EXPORT_SYMBOL vmlinux 0x185d18ef inet_addr_type +EXPORT_SYMBOL vmlinux 0x18741d11 config_item_put +EXPORT_SYMBOL vmlinux 0x187884a8 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x18888d00 downgrade_write +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x18967194 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x18a4989e mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x18c78a84 rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x18d21950 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x18da3799 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18efd028 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x19189661 simple_fill_super +EXPORT_SYMBOL vmlinux 0x191aef0a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x1946d2f0 phy_modify_paged +EXPORT_SYMBOL vmlinux 0x194bcee1 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x1953aada scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x1953c958 mempool_create +EXPORT_SYMBOL vmlinux 0x196d8d6a dev_uc_init +EXPORT_SYMBOL vmlinux 0x197da4d8 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bb3e00 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19e13b67 block_write_full_page +EXPORT_SYMBOL vmlinux 0x19e23799 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x19e2d7c7 udp_prot +EXPORT_SYMBOL vmlinux 0x1a07cfac vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x1a0908d4 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x1a0cd10d iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x1a107de2 ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a210fbd invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x1a2b8f15 map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x1a3f8694 pci_release_resource +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a738416 locks_delete_block +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9eb553 phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0x1aa6c90a amba_device_unregister +EXPORT_SYMBOL vmlinux 0x1ab37928 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x1ab74fc2 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x1abdfb5f vme_slot_num +EXPORT_SYMBOL vmlinux 0x1abf91e8 edac_mc_find +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ae7dd9c ip_options_compile +EXPORT_SYMBOL vmlinux 0x1af33adc blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x1af8ff78 kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x1afb7b7a tcp_disconnect +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b275d82 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x1b381960 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x1b5196fc xudma_tchan_put +EXPORT_SYMBOL vmlinux 0x1b594d3f unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x1b597b7a swake_up_all +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b7306cd dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b78bfc8 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x1b7b9856 dma_pool_create +EXPORT_SYMBOL vmlinux 0x1b86299c bio_clone_fast +EXPORT_SYMBOL vmlinux 0x1b894c60 ll_rw_block +EXPORT_SYMBOL vmlinux 0x1b908b92 inet6_bind +EXPORT_SYMBOL vmlinux 0x1b9a2430 da903x_query_status +EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x1baa602f lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc +EXPORT_SYMBOL vmlinux 0x1bb86b9a xen_start_info +EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent +EXPORT_SYMBOL vmlinux 0x1bda84d3 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x1c08d0b8 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0x1c0f3915 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x1c2dfa28 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0x1c3310f7 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c3f2c3a serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x1c421f93 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x1c58427f acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c83b4a9 revalidate_disk +EXPORT_SYMBOL vmlinux 0x1c85f26a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x1c95fb20 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0x1c9bb15a inet6_protos +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cb6f349 bio_endio +EXPORT_SYMBOL vmlinux 0x1cd8438b pxm_to_node +EXPORT_SYMBOL vmlinux 0x1cdd39ba logic_outsl +EXPORT_SYMBOL vmlinux 0x1cde57e7 kernel_connect +EXPORT_SYMBOL vmlinux 0x1ce7fd21 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x1cf5efa6 xudma_rflow_get_id +EXPORT_SYMBOL vmlinux 0x1cfffe05 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x1d015703 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x1d072d2c migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d1abdf0 acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x1d24c881 ___ratelimit +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d3e4b73 cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x1d40b6f3 idr_for_each +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d66b4e5 ucc_fast_dump_regs +EXPORT_SYMBOL vmlinux 0x1d91c5da kthread_create_worker +EXPORT_SYMBOL vmlinux 0x1da24390 of_mdiobus_child_is_phy +EXPORT_SYMBOL vmlinux 0x1dc58434 vfs_get_fsid +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dd20f4d remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd974db xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1de67f9b qcom_scm_io_writel +EXPORT_SYMBOL vmlinux 0x1de9c398 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x1dea2ad2 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0x1df63e88 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x1e0373fc imx_scu_irq_group_enable +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e0cd7fe acpi_detach_data +EXPORT_SYMBOL vmlinux 0x1e0d1c00 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x1e13f2d8 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1e1a3e77 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e20f3b8 skb_store_bits +EXPORT_SYMBOL vmlinux 0x1e62643b skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x1e63826c pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x1e65b33b max8925_reg_write +EXPORT_SYMBOL vmlinux 0x1e6b409d tcp_child_process +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e78e30b send_sig_info +EXPORT_SYMBOL vmlinux 0x1e790f97 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1e7fa1da tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x1e80e659 __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x1e84a2f9 param_ops_long +EXPORT_SYMBOL vmlinux 0x1e876e4c __kfree_skb +EXPORT_SYMBOL vmlinux 0x1e9d7b89 devm_release_resource +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb24d17 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x1ec52ca6 inode_init_always +EXPORT_SYMBOL vmlinux 0x1ec7e9ba devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x1ecbbc6d blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x1ecd3243 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1eeb2dcc skb_trim +EXPORT_SYMBOL vmlinux 0x1efec272 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x1f03912b ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0x1f0ea388 __pagevec_release +EXPORT_SYMBOL vmlinux 0x1f2576cc amba_driver_register +EXPORT_SYMBOL vmlinux 0x1f49bcba vm_mmap +EXPORT_SYMBOL vmlinux 0x1f557414 gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x1f60d88b drop_nlink +EXPORT_SYMBOL vmlinux 0x1f65160f filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x1f7507d6 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x1f835063 kernel_accept +EXPORT_SYMBOL vmlinux 0x1f89a8c4 __mdiobus_write +EXPORT_SYMBOL vmlinux 0x1fa2476a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x1fab3778 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc26a1d security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe3806d jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ff31167 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201cddda lookup_one_len +EXPORT_SYMBOL vmlinux 0x201cfa2a mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x202bc21d __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x2042bc0f in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x20432c9f netif_skb_features +EXPORT_SYMBOL vmlinux 0x20463df4 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x2054a3a2 xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x2054f832 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0x206692a3 release_sock +EXPORT_SYMBOL vmlinux 0x2070bb6f xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20775b77 clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0x207a01cc vfs_setpos +EXPORT_SYMBOL vmlinux 0x208d8f30 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x20a1b519 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20cbb30a __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20dd75a8 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ee8373 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x20ff533d pps_event +EXPORT_SYMBOL vmlinux 0x20ff7a7c fifo_set_limit +EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x2108ee79 inet_listen +EXPORT_SYMBOL vmlinux 0x21100781 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x21358a85 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x2135bd01 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x2141bd38 of_get_address +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x216d9d83 sock_no_connect +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x21a4638f from_kuid +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21ef374c try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x220e55d0 mem_section +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22314024 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x2234ca51 acpi_match_platform_list +EXPORT_SYMBOL vmlinux 0x224ce651 xudma_free_gp_rflow_range +EXPORT_SYMBOL vmlinux 0x2250b4a2 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x225212f4 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x225567a6 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x2255bf97 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2286a418 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x22921571 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x22a27f23 mmc_start_request +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c44213 __ip_options_compile +EXPORT_SYMBOL vmlinux 0x22c8ba15 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x22cbbf9f of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x22d1c3fa ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x22e0d7b6 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x22eeea06 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x22f37a4a fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0x23113e0c skb_pull +EXPORT_SYMBOL vmlinux 0x231299c8 skb_seq_read +EXPORT_SYMBOL vmlinux 0x23295f55 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x2329bf61 xp_free +EXPORT_SYMBOL vmlinux 0x233886fe pci_scan_slot +EXPORT_SYMBOL vmlinux 0x23390330 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x236a0a40 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x2370a62b __skb_get_hash +EXPORT_SYMBOL vmlinux 0x23792545 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x23844d89 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x23897ba1 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x23a48e7b of_match_device +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bdfc88 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x23c80eea flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cabbb1 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242c08c5 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x242f6be6 mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244395ea gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246d9ad8 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x24780c4d ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248d5100 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x249ffc43 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x24acb5c2 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x24b5b405 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x24bfd6f5 tcp_req_err +EXPORT_SYMBOL vmlinux 0x24ca765b generic_writepages +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24f259f0 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x24fd26f1 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x24fe7344 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x250c30bc xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x25112e36 xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x2518a4d8 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x2524ba17 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x253bbae0 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x254e59d5 __serio_register_port +EXPORT_SYMBOL vmlinux 0x2552fa92 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257c9fed pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2587a61d blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x2595da74 key_task_permission +EXPORT_SYMBOL vmlinux 0x25966e8f kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x25974000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x259c2fc7 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x25a4409a tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x25a65511 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x25a977e4 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x25b839ef dev_get_iflink +EXPORT_SYMBOL vmlinux 0x25c0c2a4 devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0x25c37efb vfs_statfs +EXPORT_SYMBOL vmlinux 0x25cd44a5 import_single_range +EXPORT_SYMBOL vmlinux 0x25dd3fa0 serio_bus +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f46505 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x25f86754 get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x260e292c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x260ed2f8 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x260f87fb acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x2616d61d ab3100_event_register +EXPORT_SYMBOL vmlinux 0x262a8695 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x262ca6b1 nonseekable_open +EXPORT_SYMBOL vmlinux 0x26336a6a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c3152 bcmp +EXPORT_SYMBOL vmlinux 0x263f0d1f qman_portal_set_iperiod +EXPORT_SYMBOL vmlinux 0x2643de1f filp_open +EXPORT_SYMBOL vmlinux 0x265a9f05 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x266497ad input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x266d9336 vfs_readlink +EXPORT_SYMBOL vmlinux 0x2676f060 mmc_release_host +EXPORT_SYMBOL vmlinux 0x2682648f fc_mount +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x268ad47e put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0x26a89ffb get_tree_keyed +EXPORT_SYMBOL vmlinux 0x26b9d403 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x26cc73c3 complete_and_exit +EXPORT_SYMBOL vmlinux 0x26cfa2de single_release +EXPORT_SYMBOL vmlinux 0x26d6f41b unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e3f649 __scm_send +EXPORT_SYMBOL vmlinux 0x26e56f9b sunxi_sram_claim +EXPORT_SYMBOL vmlinux 0x26e85251 pci_dev_get +EXPORT_SYMBOL vmlinux 0x26eba7d9 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x27197356 tso_build_data +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27207d8f phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x2720ab59 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0x2724f6c3 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x272df0dd pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x27492a0f xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0x2751a1e2 sock_wfree +EXPORT_SYMBOL vmlinux 0x275dfee4 ucc_slow_free +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x2775ac5e __neigh_create +EXPORT_SYMBOL vmlinux 0x27810361 acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x278d12a3 dquot_resume +EXPORT_SYMBOL vmlinux 0x279be432 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0x27b38cdb __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bcaf8b iov_iter_init +EXPORT_SYMBOL vmlinux 0x27bd5a47 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x27c3c728 qman_release_fqid +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27da7640 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x27f0e29a simple_lookup +EXPORT_SYMBOL vmlinux 0x27f92998 register_quota_format +EXPORT_SYMBOL vmlinux 0x2813ad6e udp_gro_receive +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281aad91 proc_set_user +EXPORT_SYMBOL vmlinux 0x282291f5 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x2833f577 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x28401fa3 devm_register_netdev +EXPORT_SYMBOL vmlinux 0x2860021f __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x2879ea4b pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x288ac666 security_binder_transaction +EXPORT_SYMBOL vmlinux 0x28aee663 input_set_timestamp +EXPORT_SYMBOL vmlinux 0x28c7edef pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x28e6c989 d_instantiate +EXPORT_SYMBOL vmlinux 0x28f05e1b param_set_ullong +EXPORT_SYMBOL vmlinux 0x28fb1a0c netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x290a6b86 tcp_mmap +EXPORT_SYMBOL vmlinux 0x290f2bf1 mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0x2914ea2d ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x2935c3dd seq_path +EXPORT_SYMBOL vmlinux 0x2944e695 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x2948e8a8 pcie_print_link_status +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x2969bf6a kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x296bf386 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x296cb509 __xa_insert +EXPORT_SYMBOL vmlinux 0x29795bad configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x29b45788 inet_del_offload +EXPORT_SYMBOL vmlinux 0x29cd126e __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x29cf44f2 seq_putc +EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x2a0b9782 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x2a1706fa put_disk +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a36b1bd single_open_size +EXPORT_SYMBOL vmlinux 0x2a53494d nf_reinject +EXPORT_SYMBOL vmlinux 0x2a60c2d7 node_states +EXPORT_SYMBOL vmlinux 0x2a77d4cc of_get_mac_address +EXPORT_SYMBOL vmlinux 0x2a85101d mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0x2a852dea fman_register_intr +EXPORT_SYMBOL vmlinux 0x2a881fd2 mmput_async +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2aa0843e mempool_resize +EXPORT_SYMBOL vmlinux 0x2aa6884d finalize_exec +EXPORT_SYMBOL vmlinux 0x2aa97f42 page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x2aabaf9d xudma_tchan_get +EXPORT_SYMBOL vmlinux 0x2aaff33c km_policy_notify +EXPORT_SYMBOL vmlinux 0x2ab2ee91 brcmstb_get_product_id +EXPORT_SYMBOL vmlinux 0x2ab7989d mutex_lock +EXPORT_SYMBOL vmlinux 0x2ab99bf8 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2abe4c00 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x2adafbca config_item_get +EXPORT_SYMBOL vmlinux 0x2ae25e0d dcb_getapp +EXPORT_SYMBOL vmlinux 0x2ae4372a tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x2af694cf security_path_mkdir +EXPORT_SYMBOL vmlinux 0x2b035893 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x2b1abce3 fman_has_errata_a050385 +EXPORT_SYMBOL vmlinux 0x2b298192 of_get_parent +EXPORT_SYMBOL vmlinux 0x2b2fcd0b register_netdev +EXPORT_SYMBOL vmlinux 0x2b4b592d phy_device_free +EXPORT_SYMBOL vmlinux 0x2b5393fc cdev_set_parent +EXPORT_SYMBOL vmlinux 0x2b56f9d9 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x2b58439d bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x2b593aa8 gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2b6588da __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2bb6099e dq_data_lock +EXPORT_SYMBOL vmlinux 0x2bc032f4 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x2bc2fa31 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x2bd0046b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2bd60ab9 acpi_reset +EXPORT_SYMBOL vmlinux 0x2be38566 eth_header +EXPORT_SYMBOL vmlinux 0x2befed0d ptp_find_pin +EXPORT_SYMBOL vmlinux 0x2bf9ff15 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x2bfbab10 __memmove +EXPORT_SYMBOL vmlinux 0x2c11f306 xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x2c1e8399 is_acpi_device_node +EXPORT_SYMBOL vmlinux 0x2c1ecd4d key_payload_reserve +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c333838 timestamp_truncate +EXPORT_SYMBOL vmlinux 0x2c3c15ca pcim_iomap +EXPORT_SYMBOL vmlinux 0x2c51d330 dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0x2c541e7b radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x2c763356 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x2c80469d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x2c8a1ce9 module_put +EXPORT_SYMBOL vmlinux 0x2c91e17c vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x2c92eb1d devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x2ca69608 softnet_data +EXPORT_SYMBOL vmlinux 0x2cbdeaf8 lock_page_memcg +EXPORT_SYMBOL vmlinux 0x2cc64a54 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2cdf87a1 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x2ce0f433 ip_defrag +EXPORT_SYMBOL vmlinux 0x2ce78ca3 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x2cec7a36 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x2ceef750 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x2cf14b15 ucc_fast_disable +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cf754f2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x2cf8adfd security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x2d2043d7 nd_dax_probe +EXPORT_SYMBOL vmlinux 0x2d2ffcd5 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d306645 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d40e2c3 __netif_schedule +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d60d86c truncate_pagecache +EXPORT_SYMBOL vmlinux 0x2d84e1e9 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2d8a50f1 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d933b89 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2db306a5 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x2db3bc61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x2db3d320 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2dc7ec49 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x2dce2f1c __irq_regs +EXPORT_SYMBOL vmlinux 0x2de4bea4 devm_free_irq +EXPORT_SYMBOL vmlinux 0x2e0996ea tcf_register_action +EXPORT_SYMBOL vmlinux 0x2e0b1deb dma_fence_get_status +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e20be0e setattr_prepare +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2c4ddc logic_inw +EXPORT_SYMBOL vmlinux 0x2e3bcce2 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e5b27da xudma_alloc_gp_rflow_range +EXPORT_SYMBOL vmlinux 0x2e5f3893 bio_reset +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e654c48 tty_kref_put +EXPORT_SYMBOL vmlinux 0x2e697791 input_free_device +EXPORT_SYMBOL vmlinux 0x2e76df98 sock_no_bind +EXPORT_SYMBOL vmlinux 0x2e85db74 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x2e87e2d3 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x2e9a8e98 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x2e9d54c8 start_tty +EXPORT_SYMBOL vmlinux 0x2eb81ccb mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x2eb97a62 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x2ec3453b qman_schedule_fq +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2ec70698 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2ec906cc netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0x2ed49731 may_umount +EXPORT_SYMBOL vmlinux 0x2edbeaf7 hex2bin +EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2eee78cb mdio_device_create +EXPORT_SYMBOL vmlinux 0x2eef4229 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0x2f03691f pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0e6247 param_get_string +EXPORT_SYMBOL vmlinux 0x2f23d63f textsearch_register +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f333aab imx_scu_get_handle +EXPORT_SYMBOL vmlinux 0x2f36f5b4 inet6_getname +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f538d4c config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x2f6bff27 fsync_bdev +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2f7d811a mount_single +EXPORT_SYMBOL vmlinux 0x2f8a0f55 bio_put +EXPORT_SYMBOL vmlinux 0x2f9f1b2a kthread_stop +EXPORT_SYMBOL vmlinux 0x2fae0067 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x2fb0e71d xattr_full_name +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe5b535 qcom_scm_assign_mem +EXPORT_SYMBOL vmlinux 0x30014cf9 d_tmpfile +EXPORT_SYMBOL vmlinux 0x30232546 empty_aops +EXPORT_SYMBOL vmlinux 0x3037a7a6 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x303ca5a6 __put_cred +EXPORT_SYMBOL vmlinux 0x30499ab5 sock_wake_async +EXPORT_SYMBOL vmlinux 0x3060662e netif_napi_add +EXPORT_SYMBOL vmlinux 0x3063cf65 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x308afb1f param_set_long +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30af45a1 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x30bc6302 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x30bd5ee0 qman_destroy_fq +EXPORT_SYMBOL vmlinux 0x30c583ad unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x30c6701c bdevname +EXPORT_SYMBOL vmlinux 0x30d63807 pci_set_master +EXPORT_SYMBOL vmlinux 0x30d79b59 param_get_short +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f0292b netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x30f40e71 prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0x3100cff9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x3127450e __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x31275efc tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x312a6e1e set_device_ro +EXPORT_SYMBOL vmlinux 0x313b6bb3 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x3141c35f inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3146563c netdev_state_change +EXPORT_SYMBOL vmlinux 0x3176c891 dev_lstats_read +EXPORT_SYMBOL vmlinux 0x317a9646 put_tty_driver +EXPORT_SYMBOL vmlinux 0x318d6fec mutex_is_locked +EXPORT_SYMBOL vmlinux 0x319d493d proc_dostring +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x3202dd2e pnp_is_active +EXPORT_SYMBOL vmlinux 0x3202f9f6 fb_get_mode +EXPORT_SYMBOL vmlinux 0x320af471 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x32185073 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x3234512a __frontswap_load +EXPORT_SYMBOL vmlinux 0x32394d4b qe_issue_cmd +EXPORT_SYMBOL vmlinux 0x32621456 redraw_screen +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x328a7bc2 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x328c2dba d_set_d_op +EXPORT_SYMBOL vmlinux 0x328eec45 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x32acce1f bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0x32b8f072 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32d23e53 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0x32e16f0e nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32fa3558 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x32fe5c22 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0x33037fd8 logic_outl +EXPORT_SYMBOL vmlinux 0x3303b4b1 bdget_disk +EXPORT_SYMBOL vmlinux 0x330a28dc blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x331a36b5 __tcf_idr_release +EXPORT_SYMBOL vmlinux 0x332251ad kthread_bind +EXPORT_SYMBOL vmlinux 0x332a6971 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0x333d68b9 phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x3372dc5d unix_detach_fds +EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x33917a3c fqdir_exit +EXPORT_SYMBOL vmlinux 0x33942ead inode_permission +EXPORT_SYMBOL vmlinux 0x33bf416d __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fb67a4 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x344b9a26 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x344c0506 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x344ca9d4 qman_init_fq +EXPORT_SYMBOL vmlinux 0x344facd5 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3460bfb5 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x3466de6f __put_page +EXPORT_SYMBOL vmlinux 0x3474237c tcp_init_sock +EXPORT_SYMBOL vmlinux 0x349031fe of_root +EXPORT_SYMBOL vmlinux 0x3499c7d6 seq_dentry +EXPORT_SYMBOL vmlinux 0x349ac524 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a1f7e3 acpi_processor_get_psd +EXPORT_SYMBOL vmlinux 0x34b0a32f dev_get_flags +EXPORT_SYMBOL vmlinux 0x34c4c5c7 cred_fscmp +EXPORT_SYMBOL vmlinux 0x34e8661f block_truncate_page +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350e4ba5 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x350ea558 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35319e45 devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3571c388 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x358937b5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x359ec42f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b2cf6d mount_bdev +EXPORT_SYMBOL vmlinux 0x35c82986 devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0x35dc15ba blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x35e31f31 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x35e6c8fb from_kgid +EXPORT_SYMBOL vmlinux 0x35fe8f31 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36508e0e scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x366b3d61 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x3682897d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x36836590 ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x36863dca dev_addr_init +EXPORT_SYMBOL vmlinux 0x36a1fff2 mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x36a457f5 inet_ioctl +EXPORT_SYMBOL vmlinux 0x36a69729 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x36d35fa9 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x36da2592 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x36e381a8 neigh_table_init +EXPORT_SYMBOL vmlinux 0x37110088 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x371e7f3a ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x37320d6b would_dump +EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x377d8004 acpi_error +EXPORT_SYMBOL vmlinux 0x3796c021 default_llseek +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37ba84af posix_lock_file +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c9fc65 pci_bus_type +EXPORT_SYMBOL vmlinux 0x37d20a3d rproc_del +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f04944 param_ops_uint +EXPORT_SYMBOL vmlinux 0x37fef94a imx_scu_enable_general_irq_channel +EXPORT_SYMBOL vmlinux 0x3800b124 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3838dec4 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x385d2262 do_clone_file_range +EXPORT_SYMBOL vmlinux 0x386ea33c clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x3872e8ea jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388aa3c9 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x38908a8a netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x38994d01 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af629f __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x38d4d94e vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x38dfb4f0 sock_no_accept +EXPORT_SYMBOL vmlinux 0x38e46431 mempool_exit +EXPORT_SYMBOL vmlinux 0x38fd05ef generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x39085cbc of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x392717c5 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x392b1fea wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x393800a1 of_device_is_available +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3946dfcc starget_for_each_device +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395d9fdf devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x396655b3 ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0x397e9d0d security_path_unlink +EXPORT_SYMBOL vmlinux 0x3987a851 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x398bc972 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x398d8581 del_gendisk +EXPORT_SYMBOL vmlinux 0x39920df8 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b8d49c cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x39c0cac8 scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0x39c3d722 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x39c9acb9 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x39cdf9b8 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x39d9fbd3 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x39edbbf7 blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0x39f9769f irq_stat +EXPORT_SYMBOL vmlinux 0x3a0b0807 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a2756d2 key_revoke +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a34bb37 param_set_byte +EXPORT_SYMBOL vmlinux 0x3a3f927c dev_add_pack +EXPORT_SYMBOL vmlinux 0x3a4980b7 vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0x3a4ac327 ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a558f16 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x3a87cdee drop_super +EXPORT_SYMBOL vmlinux 0x3a8af407 inode_init_once +EXPORT_SYMBOL vmlinux 0x3aa52cbd __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x3aad44de tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x3ab3c3d5 dst_dev_put +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3abb628d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x3ad5cda3 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x3ad7a5d5 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0x3ada9e06 acpi_check_region +EXPORT_SYMBOL vmlinux 0x3aff3200 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x3b02bea1 generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x3b20fb95 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x3b2cabf5 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3b2d134e pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x3b416855 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x3b454250 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b8c1a9a pneigh_lookup +EXPORT_SYMBOL vmlinux 0x3b9144c9 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x3b92ff3a blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x3ba42465 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x3bce8b9c fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3bfca0fd param_get_invbool +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c1edec4 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x3c29e8df mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x3c3215c4 qe_immr +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c41746b tty_port_hangup +EXPORT_SYMBOL vmlinux 0x3c48a619 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x3c5ec7a8 get_vm_area +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c81852a kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x3c9e549a _dev_crit +EXPORT_SYMBOL vmlinux 0x3cb833b8 inode_insert5 +EXPORT_SYMBOL vmlinux 0x3cc97f50 ilookup5 +EXPORT_SYMBOL vmlinux 0x3cd9ed83 logic_insw +EXPORT_SYMBOL vmlinux 0x3ce229dd write_inode_now +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf15379 can_nice +EXPORT_SYMBOL vmlinux 0x3cfae15f prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x3d02cd70 dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0x3d06b424 mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x3d18727e skb_ext_add +EXPORT_SYMBOL vmlinux 0x3d210724 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x3d448848 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5bb3fd refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x3d63b09f __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x3d703eb0 eth_type_trans +EXPORT_SYMBOL vmlinux 0x3d786b05 rpmh_write_batch +EXPORT_SYMBOL vmlinux 0x3d9c8334 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da4ed1d ip6_xmit +EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3dafc384 touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0x3db7fdfc proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x3dc619d3 swake_up_locked +EXPORT_SYMBOL vmlinux 0x3dc675ac pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcbee66 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x3dd3f054 xudma_rchan_get_id +EXPORT_SYMBOL vmlinux 0x3dd9b230 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3ddc754a generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x3de12763 update_devfreq +EXPORT_SYMBOL vmlinux 0x3de160eb blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x3dee360e vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x3dfb86b9 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0094b3 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x3e0679d9 kobject_init +EXPORT_SYMBOL vmlinux 0x3e0b3476 iget_failed +EXPORT_SYMBOL vmlinux 0x3e1aec64 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e3feefc udp6_csum_init +EXPORT_SYMBOL vmlinux 0x3e5f729a netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x3e72d9d6 thaw_bdev +EXPORT_SYMBOL vmlinux 0x3e785954 rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0x3e81a7fd xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x3e87be08 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x3e892033 rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0x3e8c7497 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x3e909dd8 vc_cons +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e916620 serio_interrupt +EXPORT_SYMBOL vmlinux 0x3e9686d3 amba_release_regions +EXPORT_SYMBOL vmlinux 0x3ea8a413 tcp_seq_start +EXPORT_SYMBOL vmlinux 0x3ea996d4 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x3eb2bae1 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x3eba5553 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x3ec6b981 of_graph_get_remote_endpoint +EXPORT_SYMBOL vmlinux 0x3ee5c942 tcp_prot +EXPORT_SYMBOL vmlinux 0x3eeb2322 __wake_up +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f0ea1cd i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f2ae03b pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4bd846 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f545cad cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x3f61952f bd_set_size +EXPORT_SYMBOL vmlinux 0x3f64c2a9 request_key_rcu +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3f8bad07 dst_discard_out +EXPORT_SYMBOL vmlinux 0x3f8f040e page_readlink +EXPORT_SYMBOL vmlinux 0x3f990402 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0x3fa527b8 clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x3fb53598 vm_insert_pages +EXPORT_SYMBOL vmlinux 0x3fbf2d85 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fcd8dc4 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3ff3a8b5 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x3ff5fec7 key_put +EXPORT_SYMBOL vmlinux 0x40042cb3 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x40344508 __bforget +EXPORT_SYMBOL vmlinux 0x4038bfd6 _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x4065571a tty_port_close_end +EXPORT_SYMBOL vmlinux 0x4077f1dd dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x407cac17 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x4089efe0 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409aad3d phy_device_register +EXPORT_SYMBOL vmlinux 0x409ad625 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x409bcb62 mutex_unlock +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ae5ac4 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x40b33d07 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x40bdb4cd elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x40edc1d2 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0x41034de5 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x4106ddb8 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x4108aecb iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x410f0ca0 __destroy_inode +EXPORT_SYMBOL vmlinux 0x41126c04 __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x411bcca5 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x412bb268 inode_io_list_del +EXPORT_SYMBOL vmlinux 0x412eacf1 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x414067f6 skb_put +EXPORT_SYMBOL vmlinux 0x41450459 param_get_long +EXPORT_SYMBOL vmlinux 0x4145992d padata_start +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41681bae phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0x4168def6 pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x417c778c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41986ca4 of_phy_attach +EXPORT_SYMBOL vmlinux 0x4198ca95 __do_once_done +EXPORT_SYMBOL vmlinux 0x41a181d4 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x41c1bdef generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x41cefcfb __nd_driver_register +EXPORT_SYMBOL vmlinux 0x41d37ddd mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x41e7af67 pci_enable_msi +EXPORT_SYMBOL vmlinux 0x41e98a89 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x41efdeaf radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421f579d __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x4223e799 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x4226f516 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x42401028 kern_unmount_array +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42578e80 acpi_get_type +EXPORT_SYMBOL vmlinux 0x42755ba0 current_time +EXPORT_SYMBOL vmlinux 0x427c797f inet_release +EXPORT_SYMBOL vmlinux 0x427cf487 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x429b1fcc mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x42bed8d4 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x42bf3c80 serio_reconnect +EXPORT_SYMBOL vmlinux 0x42c18d4c udp_seq_stop +EXPORT_SYMBOL vmlinux 0x42cdaab3 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x42ed2c29 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ecc96 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0x4322f653 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x433105a8 inet6_release +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x433cabfb acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x4341bf4a pipe_unlock +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x4382af64 param_ops_bool +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4386ba4a pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x43a22059 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x43afb35a fget +EXPORT_SYMBOL vmlinux 0x43d60bea get_disk_and_module +EXPORT_SYMBOL vmlinux 0x43f412a1 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x43f722f7 udp_seq_next +EXPORT_SYMBOL vmlinux 0x4403bbd0 imx_sc_misc_set_control +EXPORT_SYMBOL vmlinux 0x440fdb49 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0x441ea9aa __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0x44352266 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x443cfec5 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x443dc98b sk_dst_check +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x444d7cb9 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x445cd2df md_bitmap_free +EXPORT_SYMBOL vmlinux 0x44608c19 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x446a2588 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x44805139 __fs_parse +EXPORT_SYMBOL vmlinux 0x448df24a add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x4490ab95 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x44964022 lru_cache_add +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a024e2 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44a7e4b7 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x44a809e5 unpin_user_pages +EXPORT_SYMBOL vmlinux 0x44ae6434 of_get_cpu_state_node +EXPORT_SYMBOL vmlinux 0x44b7f7a6 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x44cbe9e4 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x44e4857b simple_statfs +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f377d6 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0x44f732a1 inode_init_owner +EXPORT_SYMBOL vmlinux 0x44fa8c7f inet_put_port +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x450297e4 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450d3a9a cfb_copyarea +EXPORT_SYMBOL vmlinux 0x450d9a35 cmd_db_read_slave_id +EXPORT_SYMBOL vmlinux 0x4514e711 file_modified +EXPORT_SYMBOL vmlinux 0x452413a1 qman_alloc_pool_range +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x453a53bc amba_request_regions +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update +EXPORT_SYMBOL vmlinux 0x45598b2e sock_bind_add +EXPORT_SYMBOL vmlinux 0x45698c0f __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458c0dfa dma_sync_wait +EXPORT_SYMBOL vmlinux 0x45919906 vme_bus_num +EXPORT_SYMBOL vmlinux 0x45929e5b ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x45bdd953 mntput +EXPORT_SYMBOL vmlinux 0x45d77767 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x45dc6af7 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x45e27dc3 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x45e69e01 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x45ec4a1b ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x45f504e0 udp_seq_start +EXPORT_SYMBOL vmlinux 0x45fa864e proc_create_single_data +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x461a696f flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x46205733 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x46282d19 pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x463219fb tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x463fadf4 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x46442e6d fb_set_var +EXPORT_SYMBOL vmlinux 0x4658cfcf __dquot_transfer +EXPORT_SYMBOL vmlinux 0x4659b92d of_graph_get_endpoint_count +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466cd834 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0x466feea4 __post_watch_notification +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x4683cde4 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4687f408 ps2_sliced_command +EXPORT_SYMBOL vmlinux 0x468f8b25 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x4698fe8a bman_release +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x469d9dd7 __invalidate_device +EXPORT_SYMBOL vmlinux 0x46a39718 processors +EXPORT_SYMBOL vmlinux 0x46a4afdf filemap_flush +EXPORT_SYMBOL vmlinux 0x46a78ce4 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x46aa6b9c dquot_commit_info +EXPORT_SYMBOL vmlinux 0x46bc052f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x46c2c1ce page_pool_put_page +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d76580 is_bad_inode +EXPORT_SYMBOL vmlinux 0x46ee2ed0 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x46ff7d12 qcom_scm_iommu_secure_ptbl_size +EXPORT_SYMBOL vmlinux 0x4701735e keyring_alloc +EXPORT_SYMBOL vmlinux 0x470612dc fman_port_get_qman_channel_id +EXPORT_SYMBOL vmlinux 0x4715a909 acpi_load_table +EXPORT_SYMBOL vmlinux 0x471a89d4 __put_user_ns +EXPORT_SYMBOL vmlinux 0x471abace ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x4726b0fe pci_iomap +EXPORT_SYMBOL vmlinux 0x472f26a5 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x47353e52 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x47469736 file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x474c0f91 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x475d7427 fman_get_rx_extra_headroom +EXPORT_SYMBOL vmlinux 0x47677360 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x47714c2c pipe_lock +EXPORT_SYMBOL vmlinux 0x479137ca imx_scu_irq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47960bc4 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479cf4a5 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x480b0416 clkdev_alloc +EXPORT_SYMBOL vmlinux 0x48149605 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x4837bb10 logic_outsb +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4848cfb1 phy_mipi_dphy_get_default_config +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486075c8 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4865a4c4 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x486e9253 tty_port_open +EXPORT_SYMBOL vmlinux 0x488eac4f bioset_init +EXPORT_SYMBOL vmlinux 0x48956386 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x489eda10 memset32 +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c093fb _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x48c0952c security_sb_remount +EXPORT_SYMBOL vmlinux 0x48c0d834 block_read_full_page +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48d4ac59 unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0x48ebc1cf dev_mc_flush +EXPORT_SYMBOL vmlinux 0x48ef50c6 md_reload_sb +EXPORT_SYMBOL vmlinux 0x4903bf81 tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49117473 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x49256d35 poll_freewait +EXPORT_SYMBOL vmlinux 0x49343c75 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x495d43df uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x4970dcb9 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x4976967a seq_escape +EXPORT_SYMBOL vmlinux 0x49837de5 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x498cd333 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x4992ca09 input_get_timestamp +EXPORT_SYMBOL vmlinux 0x499e19c6 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49a6aacb flow_rule_alloc +EXPORT_SYMBOL vmlinux 0x49aa6367 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49d47ee0 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x49ed86a0 ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x49fa57f2 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x4a00725f sock_from_file +EXPORT_SYMBOL vmlinux 0x4a13994b gro_cells_receive +EXPORT_SYMBOL vmlinux 0x4a3ad70e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x4a3d2fe4 register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x4a6e4ba8 set_disk_ro +EXPORT_SYMBOL vmlinux 0x4a81cf56 mdio_driver_register +EXPORT_SYMBOL vmlinux 0x4a93cf16 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4a9fdf29 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x4aaf4146 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x4ab208ba acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x4abca503 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x4adc252e write_cache_pages +EXPORT_SYMBOL vmlinux 0x4ae47f32 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift +EXPORT_SYMBOL vmlinux 0x4afb2238 add_wait_queue +EXPORT_SYMBOL vmlinux 0x4afd21cb request_key_tag +EXPORT_SYMBOL vmlinux 0x4b0fd7c5 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x4b2e9bdd bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x4b38f41b blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0x4b3a0bca dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x4b3cbd70 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b683426 tcp_connect +EXPORT_SYMBOL vmlinux 0x4b6df007 acpi_evaluate_reg +EXPORT_SYMBOL vmlinux 0x4b6f77be pci_choose_state +EXPORT_SYMBOL vmlinux 0x4b7f05e8 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x4b95456a md_write_end +EXPORT_SYMBOL vmlinux 0x4bb368d9 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x4bb8c24c devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x4bb9f3bb blk_register_region +EXPORT_SYMBOL vmlinux 0x4bbd866a __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x4bcc2662 mempool_init_node +EXPORT_SYMBOL vmlinux 0x4bdbc583 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x4bdbd30d sock_create +EXPORT_SYMBOL vmlinux 0x4bde3ef5 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4be17397 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x4bea9441 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4bf3ce6f qman_release_cgrid +EXPORT_SYMBOL vmlinux 0x4bf52f39 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x4bf83ae2 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x4bf8cfe5 register_md_personality +EXPORT_SYMBOL vmlinux 0x4bf9faf0 secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c123348 pci_restore_state +EXPORT_SYMBOL vmlinux 0x4c237a45 inc_nlink +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c3abc54 proc_symlink +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c433d17 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x4c49169e i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x4c54d284 noop_llseek +EXPORT_SYMBOL vmlinux 0x4c5fe7ce tso_build_hdr +EXPORT_SYMBOL vmlinux 0x4c70753f fman_port_bind +EXPORT_SYMBOL vmlinux 0x4c7528dc cfb_fillrect +EXPORT_SYMBOL vmlinux 0x4c7684af pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x4c7e697d neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x4c845363 __skb_pad +EXPORT_SYMBOL vmlinux 0x4c99d4ab jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0x4ca7ee21 get_phy_device +EXPORT_SYMBOL vmlinux 0x4ca9e277 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4ccc14e0 __f_setown +EXPORT_SYMBOL vmlinux 0x4cd0d3d5 mpage_readahead +EXPORT_SYMBOL vmlinux 0x4ce71b47 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x4d0040a0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x4d097cad blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d24bf1e udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x4d2c7133 acpi_info +EXPORT_SYMBOL vmlinux 0x4d355dfd qdisc_put +EXPORT_SYMBOL vmlinux 0x4d40a15b i2c_transfer +EXPORT_SYMBOL vmlinux 0x4d444995 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x4d488e3d phy_attach +EXPORT_SYMBOL vmlinux 0x4d65cbd5 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x4d83faa7 phy_write_mmd +EXPORT_SYMBOL vmlinux 0x4d924f20 memremap +EXPORT_SYMBOL vmlinux 0x4d94770c scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x4d97fc32 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dca08ee sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x4dcfdc26 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x4de995ec gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e20bcf8 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x4e290f23 neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x4e2e74c1 qcom_scm_io_readl +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4f0f16 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x4e51aa89 udp_disconnect +EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e4b41 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e6f9eb7 fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea3d213 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x4ea7a117 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ebc4dd6 generic_write_end +EXPORT_SYMBOL vmlinux 0x4ebc9f8c ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x4ebcda42 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x4ec2dd98 key_move +EXPORT_SYMBOL vmlinux 0x4ec33811 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4ec7df46 bio_add_page +EXPORT_SYMBOL vmlinux 0x4ef5aa06 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4efec81f bio_free_pages +EXPORT_SYMBOL vmlinux 0x4efee1e1 prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x4f11b59d devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2a98ff nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f55166f acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x4f5a27b4 lookup_bdev +EXPORT_SYMBOL vmlinux 0x4f5e4762 dquot_initialize +EXPORT_SYMBOL vmlinux 0x4f5ee178 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x4f657feb tty_port_close_start +EXPORT_SYMBOL vmlinux 0x4f854ade fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x4f921cb4 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x4fa0ab4e compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4fb23573 tty_register_driver +EXPORT_SYMBOL vmlinux 0x4fb7b9d8 make_kprojid +EXPORT_SYMBOL vmlinux 0x4fbe8c5b fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x4fcb6b38 napi_disable +EXPORT_SYMBOL vmlinux 0x4fe487dd is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x5027bde2 acpi_acquire_mutex +EXPORT_SYMBOL vmlinux 0x5035a6e6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x503c395e jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x5050a7d5 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x505f664b vfs_ioctl +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x50770b3e dcache_dir_open +EXPORT_SYMBOL vmlinux 0x5077b933 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x50890d91 seq_puts +EXPORT_SYMBOL vmlinux 0x5097d34b lease_modify +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x509e3c25 unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50abcb08 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x50ac428c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x50b5f8a5 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50ca7a55 security_sk_clone +EXPORT_SYMBOL vmlinux 0x50cfb0b9 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x50d6ed3f __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x50dbdd3d submit_bio +EXPORT_SYMBOL vmlinux 0x50de6598 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x50ec6d53 ps2_command +EXPORT_SYMBOL vmlinux 0x50f5d11c ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x50f85302 __arm_smccc_hvc +EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x5102a30b do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0x510db7ae unregister_filesystem +EXPORT_SYMBOL vmlinux 0x512d868a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x5148e126 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x515083bf acpi_release_mutex +EXPORT_SYMBOL vmlinux 0x515c7397 fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x515f520b qman_portal_get_iperiod +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x5169f058 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5172bccd fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0x5193b25f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x519b9c89 neigh_xmit +EXPORT_SYMBOL vmlinux 0x519c8b9d alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0x51b40718 trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0x51b5d7aa secpath_set +EXPORT_SYMBOL vmlinux 0x51c17e31 keyring_clear +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ed5200 sk_net_capable +EXPORT_SYMBOL vmlinux 0x5203d176 cmd_db_ready +EXPORT_SYMBOL vmlinux 0x520e9c5d pci_set_power_state +EXPORT_SYMBOL vmlinux 0x5227fdbf write_one_page +EXPORT_SYMBOL vmlinux 0x52483372 of_node_name_prefix +EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x526efdc9 dma_cache_sync +EXPORT_SYMBOL vmlinux 0x5288a82f rt6_lookup +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a6427d nvm_unregister +EXPORT_SYMBOL vmlinux 0x52c0f1dd serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x52c24fc7 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x52d7158f cont_write_begin +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52e9e8f3 register_netdevice +EXPORT_SYMBOL vmlinux 0x52ecbc75 crc_ccitt +EXPORT_SYMBOL vmlinux 0x52f2850a imx_sc_pm_cpu_start +EXPORT_SYMBOL vmlinux 0x52fe7bc9 scsi_print_result +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530e6bc1 misc_deregister +EXPORT_SYMBOL vmlinux 0x53126ecc __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x533206b5 sort_r +EXPORT_SYMBOL vmlinux 0x53456756 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x534ab6a4 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x53659d0a __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x5367bce7 set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x536a16b8 follow_pfn +EXPORT_SYMBOL vmlinux 0x536d8f06 pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x53a3f15e md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x53b954a2 up_read +EXPORT_SYMBOL vmlinux 0x53c252d9 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x53fa7e50 netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x5402da9f xudma_navss_psil_pair +EXPORT_SYMBOL vmlinux 0x54081bd0 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x5411de30 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x5411e687 bdev_read_only +EXPORT_SYMBOL vmlinux 0x5415656c poll_initwait +EXPORT_SYMBOL vmlinux 0x54234d96 param_set_uint +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542627e1 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544bb16a iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0x544bf0a4 napi_consume_skb +EXPORT_SYMBOL vmlinux 0x5451de92 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x5469ff81 efi +EXPORT_SYMBOL vmlinux 0x546adbc7 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x548bb8b9 user_path_create +EXPORT_SYMBOL vmlinux 0x549d4ad3 inet_protos +EXPORT_SYMBOL vmlinux 0x54a188c9 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x54a44aa5 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0x54a65a8d eth_header_cache +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54be8c2b build_skb +EXPORT_SYMBOL vmlinux 0x54db8a38 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x54e6b2b7 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ea6dfe xen_start_flags +EXPORT_SYMBOL vmlinux 0x54f9bd47 d_path +EXPORT_SYMBOL vmlinux 0x54fd0679 phy_resume +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x5508f28d bman_acquire +EXPORT_SYMBOL vmlinux 0x55113466 mmc_put_card +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552db3aa qman_query_cgr_congested +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x555330bc phy_device_create +EXPORT_SYMBOL vmlinux 0x55686530 __arch_clear_user +EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x55772e46 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x557ed982 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x5584f962 config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x5589549a vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0x558a2799 commit_creds +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x55926343 proc_set_size +EXPORT_SYMBOL vmlinux 0x55998c0d blk_sync_queue +EXPORT_SYMBOL vmlinux 0x55de9c8e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55f1a79a phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x5614f48a qman_dqrr_get_ithresh +EXPORT_SYMBOL vmlinux 0x5617ceb3 unix_get_socket +EXPORT_SYMBOL vmlinux 0x56228148 open_with_fake_path +EXPORT_SYMBOL vmlinux 0x56359ba6 super_setup_bdi +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56369071 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x563ce13b shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x56436b5e compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x56466e42 ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x5649de96 file_fdatawait_range +EXPORT_SYMBOL vmlinux 0x564f6f84 audit_log_start +EXPORT_SYMBOL vmlinux 0x564f7608 acpi_reconfig_notifier_register +EXPORT_SYMBOL vmlinux 0x565b3c09 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x566aabe7 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x56787413 kfree_skb +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x5681119d md_register_thread +EXPORT_SYMBOL vmlinux 0x5687f211 fiemap_prep +EXPORT_SYMBOL vmlinux 0x569287bb dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x56988483 path_put +EXPORT_SYMBOL vmlinux 0x569abcca acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x56a51cdd of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x56c61f8b iunique +EXPORT_SYMBOL vmlinux 0x56c63870 configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d4da80 dm_put_device +EXPORT_SYMBOL vmlinux 0x56d8aaa6 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x56efc3dc watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x56f2236a devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x56f8c371 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x57095303 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x570c7643 sk_wait_data +EXPORT_SYMBOL vmlinux 0x57198c61 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x572f7f9f ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x5750cb89 sock_i_ino +EXPORT_SYMBOL vmlinux 0x575429bd jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575e5f98 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x57900416 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57bc19d2 down_write +EXPORT_SYMBOL vmlinux 0x57e0d32e netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x57f38cdc qe_get_firmware_info +EXPORT_SYMBOL vmlinux 0x58039331 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5825a837 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x582606eb xudma_rflow_put +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5842ddb4 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x585018e2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL vmlinux 0x586b42f6 input_grab_device +EXPORT_SYMBOL vmlinux 0x586ead47 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x587b892e qe_get_num_of_risc +EXPORT_SYMBOL vmlinux 0x587f22d7 devmap_managed_key +EXPORT_SYMBOL vmlinux 0x588d1fc7 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x588d601e sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b62dc6 param_set_int +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e3ca01 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x58f07724 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0x58f5aec5 key_validate +EXPORT_SYMBOL vmlinux 0x58f71c32 nd_btt_version +EXPORT_SYMBOL vmlinux 0x58fe59ad inode_needs_sync +EXPORT_SYMBOL vmlinux 0x590305d3 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x59094d3e iommu_put_dma_cookie +EXPORT_SYMBOL vmlinux 0x59116f31 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x59119f1a configfs_register_default_group +EXPORT_SYMBOL vmlinux 0x5923a24c md_flush_request +EXPORT_SYMBOL vmlinux 0x594f9c5a fs_bio_set +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x595995aa dma_resv_init +EXPORT_SYMBOL vmlinux 0x5968002a icmp6_send +EXPORT_SYMBOL vmlinux 0x59697da4 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x5969cf48 free_buffer_head +EXPORT_SYMBOL vmlinux 0x596b2c06 consume_skb +EXPORT_SYMBOL vmlinux 0x59706e83 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x59876ec7 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x598cb558 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x599762db hmm_range_fault +EXPORT_SYMBOL vmlinux 0x599b4888 qe_setbrg +EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node +EXPORT_SYMBOL vmlinux 0x59a2f0ee packing +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59d0f756 clkdev_drop +EXPORT_SYMBOL vmlinux 0x59d8fa93 ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x59dc7644 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x59e0af85 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x59ee54e3 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a14315e kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x5a32c675 mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x5a403647 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a50e818 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x5a60b950 qm_channel_pool1 +EXPORT_SYMBOL vmlinux 0x5a71636a dev_printk_emit +EXPORT_SYMBOL vmlinux 0x5a7b97aa serio_close +EXPORT_SYMBOL vmlinux 0x5a816313 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a938de5 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5a956b5b empty_zero_page +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aad5304 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x5abeec62 get_tz_trend +EXPORT_SYMBOL vmlinux 0x5ae1794d tcp_filter +EXPORT_SYMBOL vmlinux 0x5ae71f59 __frontswap_store +EXPORT_SYMBOL vmlinux 0x5aed0599 page_symlink +EXPORT_SYMBOL vmlinux 0x5af2dc10 cpu_hwcaps +EXPORT_SYMBOL vmlinux 0x5b02a13c con_copy_unimap +EXPORT_SYMBOL vmlinux 0x5b2f27fb do_wait_intr +EXPORT_SYMBOL vmlinux 0x5b32753a dev_get_by_name +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b3e282f xa_store +EXPORT_SYMBOL vmlinux 0x5b54903b qcom_scm_pas_mem_setup +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b674def mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x5b7ccee0 xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x5ba8b8b9 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bcbb359 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0x5bce57b0 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be0aa31 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x5be27f49 bdi_alloc +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5bed3f8b param_set_ulong +EXPORT_SYMBOL vmlinux 0x5bed5ba4 genphy_update_link +EXPORT_SYMBOL vmlinux 0x5bf1328b seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0x5bfc6e5f __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x5bffe9e6 vfs_link +EXPORT_SYMBOL vmlinux 0x5c00d810 ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5c01453e ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x5c06be60 wake_up_process +EXPORT_SYMBOL vmlinux 0x5c1882a5 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x5c26a53b wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x5c41d7b4 set_create_files_as +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c4b7a02 module_refcount +EXPORT_SYMBOL vmlinux 0x5c4c7ec1 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x5c4f1ab4 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x5c55b659 blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x5c80ad44 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x5c922781 dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0x5cbf86cc generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x5cce3d5d filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x5cdb192c ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfb26a0 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x5cfb591f d_obtain_root +EXPORT_SYMBOL vmlinux 0x5d05e0d7 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x5d0d5804 new_inode +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d1373b4 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x5d1dad40 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5d1f2a63 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d5a8e4b inet_shutdown +EXPORT_SYMBOL vmlinux 0x5d5d4dea pci_release_regions +EXPORT_SYMBOL vmlinux 0x5d698a8c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5da1f9bd mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0x5dac4cd6 qman_dqrr_set_ithresh +EXPORT_SYMBOL vmlinux 0x5dc16c39 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5dc6e22c pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x5dc91df6 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e14b43c tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0x5e3240a0 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x5e332b52 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x5e3374a3 xp_can_alloc +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e485d26 kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x5e5b76f8 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x5e855e56 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9ffd33 __sk_receive_skb +EXPORT_SYMBOL vmlinux 0x5ea1a95b check_disk_change +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ecaeb3f has_capability +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ed9d759 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5ef6a672 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x5efde8e6 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5f00316e tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x5f02a9d7 xp_dma_map +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f238da6 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0x5f357d6f inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x5f5649c2 seq_read +EXPORT_SYMBOL vmlinux 0x5f64fd85 pci_dev_put +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f880392 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x5f93525c acpi_extract_package +EXPORT_SYMBOL vmlinux 0x5fc0c8b3 make_kgid +EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fd818b1 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5fed4264 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x5fef06ff skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x5ff9eb0e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x60025c9e rproc_free +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600683df vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x601496f4 revert_creds +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602426b4 phy_init_eee +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604cfcc0 udp_ioctl +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x605b9b40 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x60715942 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x607aa30a kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0x607bbe43 vme_irq_request +EXPORT_SYMBOL vmlinux 0x607e320f wireless_spy_update +EXPORT_SYMBOL vmlinux 0x607eff55 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x60861355 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x608741b5 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x608ed45b kill_pid +EXPORT_SYMBOL vmlinux 0x60905ab7 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x60996445 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x609b2853 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60aaeb4b qman_p_irqsource_add +EXPORT_SYMBOL vmlinux 0x60b3071f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60d9adad __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x60dc4d32 block_write_end +EXPORT_SYMBOL vmlinux 0x60eda113 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x60fe976a dmam_pool_create +EXPORT_SYMBOL vmlinux 0x61121286 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x6116eba7 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x612583aa md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612b361f netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x613797ea dput +EXPORT_SYMBOL vmlinux 0x613903b4 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x61577694 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x6162491b account_page_redirty +EXPORT_SYMBOL vmlinux 0x6169ecd1 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x616be7f9 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x617a9ace phy_attached_info +EXPORT_SYMBOL vmlinux 0x617c452b queued_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0x618227e2 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x6184996d md_done_sync +EXPORT_SYMBOL vmlinux 0x6185b747 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619eff97 migrate_vma_pages +EXPORT_SYMBOL vmlinux 0x61a1dd27 vfs_get_link +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61be1105 flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x61dab0be inet_select_addr +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x61ebc95d iget5_locked +EXPORT_SYMBOL vmlinux 0x61ed0c09 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623bb96a xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x624aa681 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x624b4da2 dev_set_group +EXPORT_SYMBOL vmlinux 0x624ca2d1 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627d3a19 unpin_user_page +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62890955 __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x629cdde4 udp_gro_complete +EXPORT_SYMBOL vmlinux 0x62bf3656 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62c58763 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0x62c903a4 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x62cac127 vm_event_states +EXPORT_SYMBOL vmlinux 0x62d62bf7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x62d96443 qman_dma_portal +EXPORT_SYMBOL vmlinux 0x62e4e725 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x62ea9d0a neigh_table_clear +EXPORT_SYMBOL vmlinux 0x63088b8d pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x630bfb58 blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63194b23 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x632b6143 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x632de9b9 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x634ca117 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x6364be05 nd_pfn_validate +EXPORT_SYMBOL vmlinux 0x637f8bb7 register_cdrom +EXPORT_SYMBOL vmlinux 0x63963c52 __skb_ext_del +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ab8627 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x63c30080 dm_register_target +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c6c9b5 notify_change +EXPORT_SYMBOL vmlinux 0x63c8129d nmi_panic +EXPORT_SYMBOL vmlinux 0x63c949c9 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x63d60f6c blk_put_queue +EXPORT_SYMBOL vmlinux 0x63d6dbd9 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641bf242 vme_init_bridge +EXPORT_SYMBOL vmlinux 0x6429ebc1 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x642eb5c6 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x643031aa of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x644137f6 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x64440551 from_kprojid +EXPORT_SYMBOL vmlinux 0x644be12c qman_affine_cpus +EXPORT_SYMBOL vmlinux 0x64589439 ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x64590b5b freezing_slow_path +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649cd184 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64b2df37 scsi_host_get +EXPORT_SYMBOL vmlinux 0x64b5d765 inet6_offloads +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c70596 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x64cf055f mdio_device_register +EXPORT_SYMBOL vmlinux 0x64d2b984 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x64d677f6 rpmh_write +EXPORT_SYMBOL vmlinux 0x64d8aa40 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x6506165f ip_fraglist_init +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6540c6c2 phy_read_mmd +EXPORT_SYMBOL vmlinux 0x654449c3 memset16 +EXPORT_SYMBOL vmlinux 0x6561e2e7 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6564ccbc ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf +EXPORT_SYMBOL vmlinux 0x6573cef2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x6586de27 phy_device_remove +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x65959217 phy_print_status +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65a0ce03 no_llseek +EXPORT_SYMBOL vmlinux 0x65cb5383 rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0x65d1bab2 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f26a71 to_nd_dax +EXPORT_SYMBOL vmlinux 0x6626afca down +EXPORT_SYMBOL vmlinux 0x66364b32 put_cmsg +EXPORT_SYMBOL vmlinux 0x664212ac dcache_readdir +EXPORT_SYMBOL vmlinux 0x664b1e29 qman_delete_cgr +EXPORT_SYMBOL vmlinux 0x6657bc29 scsi_device_put +EXPORT_SYMBOL vmlinux 0x665af7f1 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x666863dc par_io_config_pin +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x668b19a1 down_read +EXPORT_SYMBOL vmlinux 0x6692bcf7 skb_push +EXPORT_SYMBOL vmlinux 0x6694ed7d iget_locked +EXPORT_SYMBOL vmlinux 0x6695407d sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0x669b91ce vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0x66af1fd1 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66d6e9a8 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x66e38568 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x66ebc02f dma_supported +EXPORT_SYMBOL vmlinux 0x66ed3974 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x66eed2a3 nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x66f19833 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x66fe4599 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x670d673d of_cpu_node_to_id +EXPORT_SYMBOL vmlinux 0x67335869 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x673f8832 xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x67412d2f ucc_slow_enable +EXPORT_SYMBOL vmlinux 0x67450598 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x6759f32d dm_kobject_release +EXPORT_SYMBOL vmlinux 0x6770a7b6 try_to_release_page +EXPORT_SYMBOL vmlinux 0x67735bb8 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x678fdd88 task_work_add +EXPORT_SYMBOL vmlinux 0x67961712 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c13ea0 acpi_read +EXPORT_SYMBOL vmlinux 0x67d7af53 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x67dc7c8c vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x67ea4262 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x67fbbb5b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x680ff5a4 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x681497ec i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6829a27a __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x682c151a pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x68325b9b tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x683fbd06 input_get_keycode +EXPORT_SYMBOL vmlinux 0x6849fd45 vfs_llseek +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x6860d390 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x6862b3fd d_find_alias +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688882e4 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68b4976c nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0x68bf3720 may_umount_tree +EXPORT_SYMBOL vmlinux 0x68c27587 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x68d20104 dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0x68dc6a06 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x68fe0cc4 set_binfmt +EXPORT_SYMBOL vmlinux 0x69000ca4 jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0x69049cd2 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0x691cab9d dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x692c42c1 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x69585523 __ksize +EXPORT_SYMBOL vmlinux 0x6959de46 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x69625d5e napi_gro_flush +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a7f038 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b2c0e2 phy_disconnect +EXPORT_SYMBOL vmlinux 0x69bb793d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x69d4598a twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x69d55ac9 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69e93e43 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1afe5e dump_skip +EXPORT_SYMBOL vmlinux 0x6a3766b2 qman_delete_cgr_safe +EXPORT_SYMBOL vmlinux 0x6a434da9 vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x6a4489a3 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0x6a449c4f register_sysctl_table +EXPORT_SYMBOL vmlinux 0x6a52defe pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a6d01dc scsi_remove_target +EXPORT_SYMBOL vmlinux 0x6a727933 reuseport_add_sock +EXPORT_SYMBOL vmlinux 0x6a860f27 rt_dst_clone +EXPORT_SYMBOL vmlinux 0x6a8b9ff3 devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x6a9b1d29 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6aaecc45 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6ab2eaff pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0x6ab3e748 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae1fae6 param_ops_string +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af7e68f kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x6b081799 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x6b16807b follow_up +EXPORT_SYMBOL vmlinux 0x6b262518 xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0x6b270fc8 input_open_device +EXPORT_SYMBOL vmlinux 0x6b27729b radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x6b2941b2 __arch_copy_to_user +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b32e2f4 dev_trans_start +EXPORT_SYMBOL vmlinux 0x6b3b6971 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x6b4024b4 cpumask_any_but +EXPORT_SYMBOL vmlinux 0x6b41bb99 flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x6b4b2933 __ioremap +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b7e4c76 tcp_check_req +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b882a91 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6b965223 update_region +EXPORT_SYMBOL vmlinux 0x6b9ca21a dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0x6bae4e02 __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x6bbfa36f tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0x6bc0ebf1 sg_miter_next +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcd9ac4 register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x6be1c1f8 acpi_install_method +EXPORT_SYMBOL vmlinux 0x6be23e30 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x6bef3732 ps2_end_command +EXPORT_SYMBOL vmlinux 0x6c0e6709 __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x6c224cda gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x6c250e8d blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c32657e generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6c561e2f of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c7095d7 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x6c790229 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x6c9aa885 dev_change_flags +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cd0d022 init_pseudo +EXPORT_SYMBOL vmlinux 0x6cd6a61e devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x6cf0d67d qe_get_num_of_snums +EXPORT_SYMBOL vmlinux 0x6cf62166 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6d0aa052 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x6d0db97d phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d52d531 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x6d5f5b91 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x6d702611 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x6d73c95f logic_outw +EXPORT_SYMBOL vmlinux 0x6d7abe02 first_ec +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d83c793 generic_perform_write +EXPORT_SYMBOL vmlinux 0x6da7fb6d jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x6da90df9 mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x6dc35b25 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dd17e7b acpi_get_table_header +EXPORT_SYMBOL vmlinux 0x6dda6357 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x6de1a938 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e00b9a5 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x6e019034 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x6e05f9c8 vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x6e1f0336 page_mapping +EXPORT_SYMBOL vmlinux 0x6e286604 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x6e2e4671 of_phy_get_and_connect +EXPORT_SYMBOL vmlinux 0x6e3828b2 console_stop +EXPORT_SYMBOL vmlinux 0x6e549ed8 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run +EXPORT_SYMBOL vmlinux 0x6e67c80a vfs_rename +EXPORT_SYMBOL vmlinux 0x6e6a31fc pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x6e6cafed sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7579e7 __devm_request_region +EXPORT_SYMBOL vmlinux 0x6e8d79e3 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6eb5a91f security_inet_conn_established +EXPORT_SYMBOL vmlinux 0x6ec0ad00 skb_queue_head +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6edb368e proc_create +EXPORT_SYMBOL vmlinux 0x6f060bdd pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x6f177d55 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x6f38e8aa of_get_pci_address +EXPORT_SYMBOL vmlinux 0x6f3dc2f2 proc_create_data +EXPORT_SYMBOL vmlinux 0x6f41a428 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x6f4b1eda jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x6f7fee33 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x6f89dae1 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x6f8ec4c2 vfs_get_super +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f915a45 dqstats +EXPORT_SYMBOL vmlinux 0x6f959224 devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0x6f961958 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x6fa9da6c con_is_visible +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fbc6a00 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6fc39eaf tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6fdc341d param_ops_ushort +EXPORT_SYMBOL vmlinux 0x6fe29aa5 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x6fecf5f2 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x6ff28c20 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x6ff6b29d tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x6ffd9db4 padata_do_serial +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x7004a407 netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x701b96e2 iov_iter_pipe +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x7041eeb9 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x706fde0e seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7075a8ef scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x707ab03f xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x70a87c83 input_register_device +EXPORT_SYMBOL vmlinux 0x70ad75fb radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x70caa33f tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x70d1a18e qman_release_pool +EXPORT_SYMBOL vmlinux 0x70fc634b scsi_partsize +EXPORT_SYMBOL vmlinux 0x7105cdb2 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7120c995 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x7121069f of_phy_deregister_fixed_link +EXPORT_SYMBOL vmlinux 0x71226629 dqput +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713ad8cb key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x7141b88a logic_insb +EXPORT_SYMBOL vmlinux 0x71421ea8 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x714513ce security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717b931c of_clk_get +EXPORT_SYMBOL vmlinux 0x7194b6f8 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b21fd7 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x71b22552 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x71c16058 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x71ca3a39 free_cgroup_ns +EXPORT_SYMBOL vmlinux 0x71e74283 ip_frag_init +EXPORT_SYMBOL vmlinux 0x71edbc93 ppp_input_error +EXPORT_SYMBOL vmlinux 0x71f85b23 module_layout +EXPORT_SYMBOL vmlinux 0x71fd426b vm_map_pages +EXPORT_SYMBOL vmlinux 0x721073aa nobh_writepage +EXPORT_SYMBOL vmlinux 0x72125db8 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x7214ee5d tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0x721532ac dev_open +EXPORT_SYMBOL vmlinux 0x7222957c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x72282029 datagram_poll +EXPORT_SYMBOL vmlinux 0x722e1271 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x72352d9d flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x725f4c14 vfs_create +EXPORT_SYMBOL vmlinux 0x726bc3c7 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x72748ca9 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x727ab276 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x729b9e06 _dev_info +EXPORT_SYMBOL vmlinux 0x72a2fe73 km_report +EXPORT_SYMBOL vmlinux 0x72a4f65d devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72be5b84 ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef769b irq_to_desc +EXPORT_SYMBOL vmlinux 0x72f4e447 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c4a9c dma_fence_signal +EXPORT_SYMBOL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL vmlinux 0x731fac95 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x732f2d90 serio_open +EXPORT_SYMBOL vmlinux 0x73342fb5 sg_miter_start +EXPORT_SYMBOL vmlinux 0x7338365c __lock_page +EXPORT_SYMBOL vmlinux 0x733ac84b pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x735e6a81 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x739495f8 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x73a62754 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73ade8b0 d_invalidate +EXPORT_SYMBOL vmlinux 0x73b5cd94 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x73e4d3c8 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x7413f316 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x741e8c70 do_splice_direct +EXPORT_SYMBOL vmlinux 0x741f71ad xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0x74226fe7 backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x7431fddd generic_listxattr +EXPORT_SYMBOL vmlinux 0x743f4126 keygen_port_hashing_init +EXPORT_SYMBOL vmlinux 0x744e18c1 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x746480a9 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x74725e69 ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x74754435 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x748c48fa dst_init +EXPORT_SYMBOL vmlinux 0x74918ba2 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x74a8c57e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x74bf9acb cfb_imageblit +EXPORT_SYMBOL vmlinux 0x74c0bbd2 make_kuid +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c711bb genl_notify +EXPORT_SYMBOL vmlinux 0x74cf52ef mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0x74e0856e dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ff7366 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x7500500d netdev_alert +EXPORT_SYMBOL vmlinux 0x750297e7 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x75240de0 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x7524e7b4 __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x75319f97 register_filesystem +EXPORT_SYMBOL vmlinux 0x7531bc8e blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x754b4d18 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0x755d3ba9 fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x7582308c __block_write_begin +EXPORT_SYMBOL vmlinux 0x75825941 generic_setlease +EXPORT_SYMBOL vmlinux 0x75871f5e acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x75a2c945 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x75ae185b acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75cb94d2 netdev_printk +EXPORT_SYMBOL vmlinux 0x75cce8d7 nf_log_packet +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75dab518 dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76159707 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0x761e2a20 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x7622fe47 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x763c02e4 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764f42d9 fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7665d9b6 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x767ea9a6 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x769768ab mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0x769addf0 dump_truncate +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x77263114 __devm_release_region +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7756f5a2 netdev_features_change +EXPORT_SYMBOL vmlinux 0x7757b0a4 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x7773e2c4 get_acl +EXPORT_SYMBOL vmlinux 0x777bde4e skb_copy_expand +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a0c26c vme_irq_free +EXPORT_SYMBOL vmlinux 0x77a9ae85 __sb_start_write +EXPORT_SYMBOL vmlinux 0x77ab56e8 dup_iter +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d1e0bb __module_get +EXPORT_SYMBOL vmlinux 0x77daab4a pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x77e8a32d n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x780a8f34 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x781e6b39 netlink_unicast +EXPORT_SYMBOL vmlinux 0x78248b10 netdev_err +EXPORT_SYMBOL vmlinux 0x78287f4c tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0x783727e4 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x7841262f bh_submit_read +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78477ba3 pci_free_irq +EXPORT_SYMBOL vmlinux 0x785fdc9e acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78a7e76c blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x78b4d673 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x78c72176 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x78ca607b dst_destroy +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78ff5086 sock_create_kern +EXPORT_SYMBOL vmlinux 0x7916cb22 par_io_of_config +EXPORT_SYMBOL vmlinux 0x79250645 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0x79282a0f rproc_add_carveout +EXPORT_SYMBOL vmlinux 0x79313013 blackhole_netdev +EXPORT_SYMBOL vmlinux 0x79441135 of_get_property +EXPORT_SYMBOL vmlinux 0x7951549b i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x7972959a of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985ada9 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x799fb703 mpage_readpage +EXPORT_SYMBOL vmlinux 0x79a14b5b seq_hex_dump +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c729e4 filemap_check_errors +EXPORT_SYMBOL vmlinux 0x79c92d5e set_groups +EXPORT_SYMBOL vmlinux 0x7a040f1d __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7a0422ba dquot_quota_off +EXPORT_SYMBOL vmlinux 0x7a064228 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a1d85f4 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a3c19ca vmap +EXPORT_SYMBOL vmlinux 0x7a3d1e00 thaw_super +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a464baa security_path_mknod +EXPORT_SYMBOL vmlinux 0x7a467d59 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x7a4979fc nd_device_register +EXPORT_SYMBOL vmlinux 0x7a518ebe f_setown +EXPORT_SYMBOL vmlinux 0x7a54d959 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x7a59a757 __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x7a660dee ps2_drain +EXPORT_SYMBOL vmlinux 0x7a79b26a scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7a7bd25b nlmsg_notify +EXPORT_SYMBOL vmlinux 0x7a89edd6 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7a94d8d0 blk_queue_split +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a968137 ucc_slow_restart_tx +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa0fbbc filemap_map_pages +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab38fd6 dev_set_alias +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acc37c5 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x7accf289 dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad954d0 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7ae5d317 qe_get_snum +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b0d1ed2 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x7b11f711 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x7b288fe0 phy_driver_register +EXPORT_SYMBOL vmlinux 0x7b358728 __register_chrdev +EXPORT_SYMBOL vmlinux 0x7b4da33c _copy_from_iter +EXPORT_SYMBOL vmlinux 0x7b4da6ff __init_rwsem +EXPORT_SYMBOL vmlinux 0x7b4e2e68 dev_add_offload +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b64ee0d ata_port_printk +EXPORT_SYMBOL vmlinux 0x7b82b9a1 idr_replace +EXPORT_SYMBOL vmlinux 0x7b985eb8 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x7bb29c8e input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7bb50b88 acpi_write +EXPORT_SYMBOL vmlinux 0x7bb8a7ce posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7bb97d68 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bbd36f4 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x7bcd61da eth_get_headlen +EXPORT_SYMBOL vmlinux 0x7be78fbb reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0x7bed23d7 ns_capable +EXPORT_SYMBOL vmlinux 0x7c0b379d vif_device_init +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2d57d8 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7c30bc72 __break_lease +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c766125 bio_uninit +EXPORT_SYMBOL vmlinux 0x7c85fe79 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x7c874859 devm_of_clk_del_provider +EXPORT_SYMBOL vmlinux 0x7c8a3396 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x7c8c1545 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cc60d39 tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x7cd90123 file_remove_privs +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d0ba682 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d12d76d acpi_get_parent +EXPORT_SYMBOL vmlinux 0x7d1a5ce6 sock_rfree +EXPORT_SYMBOL vmlinux 0x7d1c763b dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x7d255d9d tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0x7d34fd5c pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d549c8d mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x7d6440f5 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7d7584de __frontswap_test +EXPORT_SYMBOL vmlinux 0x7d7a2c3d of_get_next_cpu_node +EXPORT_SYMBOL vmlinux 0x7da3e9fc register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7db344b8 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x7db90000 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x7dbced80 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0x7dc398dd phy_register_fixup +EXPORT_SYMBOL vmlinux 0x7deff2d2 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df62c44 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x7e019f74 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x7e079fe4 genphy_resume +EXPORT_SYMBOL vmlinux 0x7e0826e2 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7e18e39b devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e3bd4dc of_iomap +EXPORT_SYMBOL vmlinux 0x7e408334 page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0x7e41dc07 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x7e44d7f8 cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0x7e6379b4 dma_virt_ops +EXPORT_SYMBOL vmlinux 0x7e9fda93 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x7ea7fd68 is_acpi_data_node +EXPORT_SYMBOL vmlinux 0x7ec78bdd rename_lock +EXPORT_SYMBOL vmlinux 0x7eddcfe1 phy_aneg_done +EXPORT_SYMBOL vmlinux 0x7ef33e27 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f1878e0 input_match_device_id +EXPORT_SYMBOL vmlinux 0x7f1cb21f block_invalidatepage +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f25667c input_unregister_handle +EXPORT_SYMBOL vmlinux 0x7f30d69c iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f63c41a dev_activate +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f9cbb4e tso_count_descs +EXPORT_SYMBOL vmlinux 0x7f9f91b2 d_lookup +EXPORT_SYMBOL vmlinux 0x7fcede5b vga_put +EXPORT_SYMBOL vmlinux 0x7fe105d7 bman_ip_rev +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x80004d9c dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x800e213d pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x80196dd5 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0x801cd88a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x802287b2 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x802f02ec posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0x8030bc07 seq_file_path +EXPORT_SYMBOL vmlinux 0x803a0932 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x80412934 block_commit_write +EXPORT_SYMBOL vmlinux 0x8042cf97 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x80713339 register_framebuffer +EXPORT_SYMBOL vmlinux 0x8071a650 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8071b13f compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x8071f01d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x807bdde8 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x807e7386 compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x8089fbba dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x808c89ea devfreq_add_device +EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x80a717a8 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d961af i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0x80df3478 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x80e28074 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x80e67915 mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x80f175f6 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x80f510f6 flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0x8104217c scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x81184bf7 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x81188c30 match_string +EXPORT_SYMBOL vmlinux 0x81223373 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x81510d5e netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815eb5ec d_make_root +EXPORT_SYMBOL vmlinux 0x817b083b genphy_suspend +EXPORT_SYMBOL vmlinux 0x817ec4a6 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x818edf97 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x818eec3c set_bh_page +EXPORT_SYMBOL vmlinux 0x8193439a genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x8193f464 user_revoke +EXPORT_SYMBOL vmlinux 0x81b395b3 down_interruptible +EXPORT_SYMBOL vmlinux 0x81b8330a mark_page_accessed +EXPORT_SYMBOL vmlinux 0x81bcc434 fasync_helper +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81fda2e0 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x8200a7dd t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x8202cb4f sock_init_data +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8219b553 sock_set_keepalive +EXPORT_SYMBOL vmlinux 0x8222f7df set_anon_super +EXPORT_SYMBOL vmlinux 0x82381249 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x823d3505 cmxgcr_lock +EXPORT_SYMBOL vmlinux 0x8242244e dst_alloc +EXPORT_SYMBOL vmlinux 0x825906bc iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x826064f7 ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0x8263a6d9 proc_douintvec +EXPORT_SYMBOL vmlinux 0x8277a8ab dquot_get_state +EXPORT_SYMBOL vmlinux 0x827db3aa vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828759fe kmalloc_caches +EXPORT_SYMBOL vmlinux 0x82bbfc38 pid_task +EXPORT_SYMBOL vmlinux 0x82c0dea3 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82d0f411 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x82f019df acpi_dev_hid_uid_match +EXPORT_SYMBOL vmlinux 0x83007b17 dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0x83145978 tty_port_close +EXPORT_SYMBOL vmlinux 0x83183fb4 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x835ae313 qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x835b8754 key_invalidate +EXPORT_SYMBOL vmlinux 0x8372525f mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x8373c817 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x839a52bb tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0x83b2fa70 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c7e3f8 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x83e95ddc tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x83f01670 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x83fa42de mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x83fb46ac generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x84239734 eth_header_parse +EXPORT_SYMBOL vmlinux 0x8424d388 pci_resize_resource +EXPORT_SYMBOL vmlinux 0x842dcfef inet_gro_complete +EXPORT_SYMBOL vmlinux 0x844b12dd clear_inode +EXPORT_SYMBOL vmlinux 0x84552492 tty_lock +EXPORT_SYMBOL vmlinux 0x845a3a1c cpu_hwcap_keys +EXPORT_SYMBOL vmlinux 0x846f88a8 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x84758405 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x84771fa9 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x84c1c552 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x84c93e56 nf_log_unset +EXPORT_SYMBOL vmlinux 0x84d60f31 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x84f30265 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x850c677b nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x851b9121 xudma_dev_get_psil_base +EXPORT_SYMBOL vmlinux 0x85237e70 fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0x8543cff9 mii_check_media +EXPORT_SYMBOL vmlinux 0x85473607 vfs_fsync +EXPORT_SYMBOL vmlinux 0x854786d1 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x85532eb1 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8583ae75 devm_iounmap +EXPORT_SYMBOL vmlinux 0x85879d50 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x85a1a5f1 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x85ac2f99 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x85ad58d4 bio_init +EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85ba63e1 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85bf146d remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0x85c7c0e3 km_query +EXPORT_SYMBOL vmlinux 0x85d50730 config_group_init +EXPORT_SYMBOL vmlinux 0x85d785a7 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e8c34f crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x861d6251 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x8624a635 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86503d40 bdgrab +EXPORT_SYMBOL vmlinux 0x86529210 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x867858b5 backlight_force_update +EXPORT_SYMBOL vmlinux 0x867a6098 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868c9842 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x868e526a msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x86b76181 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x86bb2a68 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x86d059ef generic_make_request +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86e236bd qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x86f4d9fa scsi_scan_host +EXPORT_SYMBOL vmlinux 0x86f8f07b rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87031688 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x8703db8a fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x870a61d2 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x87127398 __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0x8733a011 netdev_notice +EXPORT_SYMBOL vmlinux 0x874201c1 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x875379f9 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed +EXPORT_SYMBOL vmlinux 0x8766bd27 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x877d5961 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x877f04a9 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x8789a21c _copy_to_iter +EXPORT_SYMBOL vmlinux 0x8794cac0 param_set_copystring +EXPORT_SYMBOL vmlinux 0x8798eb80 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x87ac8b55 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87bc2626 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x87bcf57f pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x87bf4112 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x87c28f52 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x87d01b88 prepare_creds +EXPORT_SYMBOL vmlinux 0x880b1e04 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x88106f44 __check_sticky +EXPORT_SYMBOL vmlinux 0x881bad5e phy_mipi_dphy_config_validate +EXPORT_SYMBOL vmlinux 0x881c4413 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x881f8a47 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x881f93e7 rio_query_mport +EXPORT_SYMBOL vmlinux 0x887157eb fget_raw +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 +EXPORT_SYMBOL vmlinux 0x888a405c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x8898c242 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88b94124 mmc_retune_release +EXPORT_SYMBOL vmlinux 0x88bc98ae arp_tbl +EXPORT_SYMBOL vmlinux 0x88c11fc8 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x88c22489 ilookup +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x89090bd7 bdi_register +EXPORT_SYMBOL vmlinux 0x89138871 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0x8915aa82 sock_edemux +EXPORT_SYMBOL vmlinux 0x8921daa0 tty_vhangup +EXPORT_SYMBOL vmlinux 0x89434b4b radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x8946ea72 fpsimd_context_busy +EXPORT_SYMBOL vmlinux 0x89502bcd dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x8952c1af acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x89580a11 mdiobus_write +EXPORT_SYMBOL vmlinux 0x89681342 dquot_operations +EXPORT_SYMBOL vmlinux 0x896a9c4a dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x897c6137 fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x89889f73 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x89933ebe tcp_ioctl +EXPORT_SYMBOL vmlinux 0x89947dd1 mr_table_alloc +EXPORT_SYMBOL vmlinux 0x89d7a0ef of_node_put +EXPORT_SYMBOL vmlinux 0x89f6a706 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x8a0b64d2 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x8a2e59d2 fqdir_init +EXPORT_SYMBOL vmlinux 0x8a41b7c4 tcf_idr_create +EXPORT_SYMBOL vmlinux 0x8a44b2ec security_path_rename +EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a54034c param_get_bool +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7ea338 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0x8a80ddba mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a982a6d amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c4c62 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x8a9c9df0 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0x8aae3498 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x8ac136ae imx_sc_misc_get_control +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x8ad5b8a2 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x8ad70492 __scsi_execute +EXPORT_SYMBOL vmlinux 0x8ae56d7f brioctl_set +EXPORT_SYMBOL vmlinux 0x8af3e8a4 phy_loopback +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b08f414 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x8b0b2a0e scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x8b19a965 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x8b1d4863 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x8b205c5b scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x8b2133c2 iptun_encaps +EXPORT_SYMBOL vmlinux 0x8b2ffd83 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8b43221b pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b666619 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0x8b6f2aac kill_pgrp +EXPORT_SYMBOL vmlinux 0x8b74142d netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x8b7dffdb sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8b8af1 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8baad913 fs_param_is_path +EXPORT_SYMBOL vmlinux 0x8bc72eb2 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8be189ab ucc_slow_disable +EXPORT_SYMBOL vmlinux 0x8be3b795 netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x8c010f92 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x8c1b7b1a xudma_dev_get_tisci_rm +EXPORT_SYMBOL vmlinux 0x8c1e1e7d security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x8c26d495 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x8c29cc61 sk_free +EXPORT_SYMBOL vmlinux 0x8c48fe98 netdev_emerg +EXPORT_SYMBOL vmlinux 0x8c521584 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x8c672cd5 dquot_drop +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c790ed0 pci_read_config_word +EXPORT_SYMBOL vmlinux 0x8c9e338f acpi_bios_error +EXPORT_SYMBOL vmlinux 0x8ca93633 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x8cb544df __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8cc53d20 __par_io_config_pin +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce60f4a skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x8cff8da1 param_set_invbool +EXPORT_SYMBOL vmlinux 0x8d09750a of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x8d0c1273 blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x8d291574 simple_empty +EXPORT_SYMBOL vmlinux 0x8d3bb340 genl_register_family +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d669ebd inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x8d67bc69 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x8d6e950f gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d76488d cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x8d7ee22e tcp_peek_len +EXPORT_SYMBOL vmlinux 0x8d9ca0e6 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x8da3108b napi_gro_receive +EXPORT_SYMBOL vmlinux 0x8da4adc4 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x8db05ed6 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0x8ddab347 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8df4afd9 qe_put_snum +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8e17b3ae idr_destroy +EXPORT_SYMBOL vmlinux 0x8e1e7575 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x8e21c9a1 dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x8e3c8889 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x8e3f5ded configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x8e4c60a3 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x8e5f93e4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x8e7b6e98 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8ea2a7c2 set_blocksize +EXPORT_SYMBOL vmlinux 0x8eb27c85 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x8eb47c46 pci_request_irq +EXPORT_SYMBOL vmlinux 0x8ecd80d8 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8ef9c0e8 load_nls +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f05b087 block_write_begin +EXPORT_SYMBOL vmlinux 0x8f18a3d0 component_match_add_typed +EXPORT_SYMBOL vmlinux 0x8f1bac63 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x8f238408 __bread_gfp +EXPORT_SYMBOL vmlinux 0x8f3f701e cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x8f71c141 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x8f8095dd remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x8f84d18d d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x8f8bae15 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x8f97873c find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8f9a547b phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x8fa25c24 xa_find +EXPORT_SYMBOL vmlinux 0x8fa6489f scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x8fb0f956 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x8fc23c51 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x8fc8c622 sk_stream_error +EXPORT_SYMBOL vmlinux 0x8fc9ea11 fman_port_cfg_buf_prefix_content +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fda6a7f __next_node_in +EXPORT_SYMBOL vmlinux 0x8fe0ddc7 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x8fef1702 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x8ff21388 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x900f7e62 phy_init_hw +EXPORT_SYMBOL vmlinux 0x90127aff __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0x901f0386 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x90277fdc mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x902f5199 cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0x9034a696 mempool_destroy +EXPORT_SYMBOL vmlinux 0x903e0c47 fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user +EXPORT_SYMBOL vmlinux 0x9079725d cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x907aba6e blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x907ba52c posix_acl_valid +EXPORT_SYMBOL vmlinux 0x908d6099 rproc_report_crash +EXPORT_SYMBOL vmlinux 0x908e0d69 inet_gro_receive +EXPORT_SYMBOL vmlinux 0x9092f7c3 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x90be0091 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0x90d05667 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x90e90182 finish_open +EXPORT_SYMBOL vmlinux 0x90ebe283 mntget +EXPORT_SYMBOL vmlinux 0x90fe74de rproc_boot +EXPORT_SYMBOL vmlinux 0x911d1c2c vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0x9120bc33 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x912cc4b0 of_graph_get_port_parent +EXPORT_SYMBOL vmlinux 0x9134fbe7 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x913df108 pci_get_class +EXPORT_SYMBOL vmlinux 0x914cef4f blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168d220 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x916a04a5 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x917916b3 phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x917f4abf __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x919dab01 vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x919ecd0a request_firmware +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91acfa9b mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91cdd580 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x91d9d946 pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x91daf423 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x91e6cc59 page_get_link +EXPORT_SYMBOL vmlinux 0x91f44510 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x91f579d2 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x92131d1e __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9214265c devm_clk_get +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92536af5 inet_frags_init +EXPORT_SYMBOL vmlinux 0x92540fbf finish_wait +EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x926c7fb6 cdev_del +EXPORT_SYMBOL vmlinux 0x9270da75 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x9276b9b9 dma_resv_fini +EXPORT_SYMBOL vmlinux 0x928c0974 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x92905d0a simple_write_end +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a23eb6 twl6040_power +EXPORT_SYMBOL vmlinux 0x92abab64 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x92ac8e57 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x92b94c53 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x92b99a33 acpi_put_table +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92ba5c16 get_task_cred +EXPORT_SYMBOL vmlinux 0x92cef617 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x92e4ccd1 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x92ebf89a d_drop +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x932070ea xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x932a3180 clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0x93377320 sget +EXPORT_SYMBOL vmlinux 0x933d1488 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x934f9a71 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937e953d devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x938ca07c security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0x939eed45 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b1c63a touch_buffer +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b639c1 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93d6dd8c complete_all +EXPORT_SYMBOL vmlinux 0x93dbc7dd vfs_unlink +EXPORT_SYMBOL vmlinux 0x93dd7b30 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x93dfae88 mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x93e5aeff tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0x93f12ea9 irq_set_chip +EXPORT_SYMBOL vmlinux 0x94049c93 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x9423a31b scsi_register_driver +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x9441507c pci_enable_wake +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944515a2 pci_write_config_word +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x944ff7a3 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x94594f49 __mdiobus_read +EXPORT_SYMBOL vmlinux 0x945ba508 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x9464a4ac rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x946d6b3f netdev_update_features +EXPORT_SYMBOL vmlinux 0x9485a2d0 is_nd_dax +EXPORT_SYMBOL vmlinux 0x9490c488 of_match_node +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94bb7ec3 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94c12255 fman_unregister_intr +EXPORT_SYMBOL vmlinux 0x94ceea29 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x94e481cf ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x94f58f64 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x94f9dc46 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x94fc8d93 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x950bd3fc phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0x953023da dcache_dir_close +EXPORT_SYMBOL vmlinux 0x953f80e5 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x9552222e skb_append +EXPORT_SYMBOL vmlinux 0x9565c452 md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x956b0d3e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x95722936 ucc_fast_transmit_on_demand +EXPORT_SYMBOL vmlinux 0x9578a13b iproc_msi_init +EXPORT_SYMBOL vmlinux 0x95a67b07 udp_table +EXPORT_SYMBOL vmlinux 0x95b5fb0d sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x95fa9fb9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x95fc0fce netif_device_attach +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9607ae57 dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0x960f5fa7 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x961cf9b4 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x96267b5e vme_irq_generate +EXPORT_SYMBOL vmlinux 0x9632e7be show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x964a2adc nf_ct_attach +EXPORT_SYMBOL vmlinux 0x964ae0e3 kill_fasync +EXPORT_SYMBOL vmlinux 0x96504303 param_ops_charp +EXPORT_SYMBOL vmlinux 0x96627c0f dev_set_mtu +EXPORT_SYMBOL vmlinux 0x967d3545 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x96848186 scnprintf +EXPORT_SYMBOL vmlinux 0x9688de8b memstart_addr +EXPORT_SYMBOL vmlinux 0x969b6f7d fman_port_get_device +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b7a184 sock_no_listen +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dee1fe rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0x96e5d30f gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x96ebd115 find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0x96f61572 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x96f88689 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x96fd451a mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x9703e90c pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x9705ca0e fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x9713a0bb misc_register +EXPORT_SYMBOL vmlinux 0x97188ba6 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x9725480c xp_alloc +EXPORT_SYMBOL vmlinux 0x97347dae rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x97394263 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x97406159 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x975ac9f8 dqget +EXPORT_SYMBOL vmlinux 0x975e4e1a ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x975f44f5 phy_start_cable_test +EXPORT_SYMBOL vmlinux 0x9768e98b dev_alloc_name +EXPORT_SYMBOL vmlinux 0x97764f91 reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x977f511b __mutex_init +EXPORT_SYMBOL vmlinux 0x978e68cf vfs_iter_write +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97bcd4f8 pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c1dee9 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x97ca47f3 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x97d6533a ip_frag_next +EXPORT_SYMBOL vmlinux 0x97e59e15 tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0x97ea888a nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0x980763bc phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982eccd3 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x9840fe8a kern_path_create +EXPORT_SYMBOL vmlinux 0x98856bf7 fd_install +EXPORT_SYMBOL vmlinux 0x98874c5c pci_find_bus +EXPORT_SYMBOL vmlinux 0x98aa9c17 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x98b2ba2d fb_show_logo +EXPORT_SYMBOL vmlinux 0x98b5fd03 genlmsg_put +EXPORT_SYMBOL vmlinux 0x98c039dc dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x98c15b27 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d1d056 padata_free +EXPORT_SYMBOL vmlinux 0x98d6d57b md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98eaac29 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0x98ef90e2 __register_nls +EXPORT_SYMBOL vmlinux 0x98f580bb qman_start_using_portal +EXPORT_SYMBOL vmlinux 0x98f7bd93 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x9905d6a5 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x99094fb2 qcom_scm_is_available +EXPORT_SYMBOL vmlinux 0x992f88b4 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0x992f93f9 sync_inode +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99638e74 phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0x9975dc22 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x9976f05b unlock_page +EXPORT_SYMBOL vmlinux 0x9979750b __mod_node_page_state +EXPORT_SYMBOL vmlinux 0x997e10fb inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x99856735 sunxi_sram_release +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x999f95d5 tcp_time_wait +EXPORT_SYMBOL vmlinux 0x99ab1a96 pci_save_state +EXPORT_SYMBOL vmlinux 0x99af6efb is_nd_btt +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99d8a118 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99ddc51c kernel_bind +EXPORT_SYMBOL vmlinux 0x99ea6147 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x99fc2108 single_open +EXPORT_SYMBOL vmlinux 0x99fe9920 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a0c9d8d unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1e9022 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x9a22391e radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x9a336385 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x9a3bc8c5 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a6b32fd serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9a980be8 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x9aa6b190 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x9aa8452c d_instantiate_new +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9ab5de8a msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x9ab75d40 fman_set_mac_active_pause +EXPORT_SYMBOL vmlinux 0x9ac59083 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x9ace6ea0 mdio_device_reset +EXPORT_SYMBOL vmlinux 0x9ad833b4 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x9b03985c __breadahead +EXPORT_SYMBOL vmlinux 0x9b0c109c get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x9b10eb5e bd_start_claiming +EXPORT_SYMBOL vmlinux 0x9b128a66 qcom_scm_set_remote_state +EXPORT_SYMBOL vmlinux 0x9b1a9b56 security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b2d2865 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3cbe68 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b585798 put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0x9b585fd5 pskb_extract +EXPORT_SYMBOL vmlinux 0x9b5d12bd proc_remove +EXPORT_SYMBOL vmlinux 0x9b60735b mr_table_dump +EXPORT_SYMBOL vmlinux 0x9b6ac475 param_set_bint +EXPORT_SYMBOL vmlinux 0x9b6ff497 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x9b72478f acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x9b77fe4f tty_throttle +EXPORT_SYMBOL vmlinux 0x9b91d6e7 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9b93b095 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x9b9773c4 mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0x9bcc05e0 napi_get_frags +EXPORT_SYMBOL vmlinux 0x9bce82e0 d_delete +EXPORT_SYMBOL vmlinux 0x9bd3b09e jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x9c122bcf mempool_create_node +EXPORT_SYMBOL vmlinux 0x9c1e5bf5 queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0x9c6d3c8a dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x9c6e74a2 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x9c75f4bf get_user_pages +EXPORT_SYMBOL vmlinux 0x9c778bd7 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x9c942adc vprintk_emit +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb151b3 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cd6fb7b generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x9cd91791 register_sysctl +EXPORT_SYMBOL vmlinux 0x9cdecf01 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce4a38a put_watch_queue +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0f47fa pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d4121ca blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x9d5d1392 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0x9d61e994 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x9d791f9f netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x9d871a3d compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9d89fb72 elv_rb_find +EXPORT_SYMBOL vmlinux 0x9d92c1da skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0x9d92f3ad __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9daa87fb __phy_resume +EXPORT_SYMBOL vmlinux 0x9dad6dc9 freeze_super +EXPORT_SYMBOL vmlinux 0x9db8eaa3 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9dc9a291 fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x9dd00d10 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x9ddfef51 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0x9de987ef tcp_close +EXPORT_SYMBOL vmlinux 0x9df21d0e qman_affine_channel +EXPORT_SYMBOL vmlinux 0x9e024cae devm_of_iomap +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e106f3e proto_unregister +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e14f472 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x9e23a5bd blk_rq_init +EXPORT_SYMBOL vmlinux 0x9e2737f0 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0x9e45e1ca inet6_add_offload +EXPORT_SYMBOL vmlinux 0x9e491bba compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9e49214f kernel_listen +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5e750d node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e82381c buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x9e96f268 get_super +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf +EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup +EXPORT_SYMBOL vmlinux 0x9ebebfa8 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ecaef01 netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x9ed7c847 brcmstb_get_family_id +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9ef50dd1 put_disk_and_module +EXPORT_SYMBOL vmlinux 0x9eff166e rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0x9f08a552 begin_new_exec +EXPORT_SYMBOL vmlinux 0x9f0f0482 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x9f133ca8 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x9f13d02e dev_printk +EXPORT_SYMBOL vmlinux 0x9f296424 mpage_writepages +EXPORT_SYMBOL vmlinux 0x9f30f3be __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f49dcc4 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x9f4ce2d3 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x9f4f2aa3 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f65c857 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x9f6ec029 dev_addr_add +EXPORT_SYMBOL vmlinux 0x9f7d7dbb logic_outsw +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fbfe02a nvm_submit_io +EXPORT_SYMBOL vmlinux 0x9fc1293e __inet_hash +EXPORT_SYMBOL vmlinux 0x9fcc473c rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0x9fda25f8 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdfc3ea get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x9fe4135e register_key_type +EXPORT_SYMBOL vmlinux 0x9fe960fd generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa02aa74a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xa02d5e39 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xa0319ce5 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xa03c6bbf phy_start +EXPORT_SYMBOL vmlinux 0xa03f3962 scsi_add_device +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa065ee2e i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xa070b3b5 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0xa07846c9 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ec414 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0a2b7f4 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xa0a9eba8 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c3849d get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f2866 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xa11e1124 ata_print_version +EXPORT_SYMBOL vmlinux 0xa11fba8b __brelse +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa125f265 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0xa13e780a gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xa14c7f7c d_prune_aliases +EXPORT_SYMBOL vmlinux 0xa155c071 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0xa185fdb8 vme_bus_type +EXPORT_SYMBOL vmlinux 0xa1873f75 kset_register +EXPORT_SYMBOL vmlinux 0xa193eb40 __close_fd +EXPORT_SYMBOL vmlinux 0xa1b279f2 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xa1b4d0ab kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0xa1ba81cd mmc_request_done +EXPORT_SYMBOL vmlinux 0xa1befedd bdget +EXPORT_SYMBOL vmlinux 0xa1c21a60 send_sig_mceerr +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1eb42f1 vme_slave_request +EXPORT_SYMBOL vmlinux 0xa1f61432 set_security_override +EXPORT_SYMBOL vmlinux 0xa1f9ad38 devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xa2035ac6 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0xa203b589 phy_attached_print +EXPORT_SYMBOL vmlinux 0xa2054ece bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa226acc0 skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0xa2326c49 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0xa2352ac3 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xa24316b9 blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa2684976 mii_link_ok +EXPORT_SYMBOL vmlinux 0xa27a931f scsi_remove_device +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa2a6b546 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xa2a95749 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xa2ad8450 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xa2b0ced0 device_add_disk +EXPORT_SYMBOL vmlinux 0xa2b7031e d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xa2bd23da udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xa2d65a73 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xa2e39e41 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa2f193d3 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xa2f83f77 kobject_get +EXPORT_SYMBOL vmlinux 0xa30f57a0 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xa3151cb5 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xa31c13bd devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0xa3299e4b md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa339e6e5 on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0xa34b62e7 scmd_printk +EXPORT_SYMBOL vmlinux 0xa356e04c dma_find_channel +EXPORT_SYMBOL vmlinux 0xa35c57eb xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xa364bdc2 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xa36700d7 mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0xa36fd0c6 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xa3739c18 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xa3a42a9b phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0xa3a47987 init_special_inode +EXPORT_SYMBOL vmlinux 0xa3ad6273 cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0xa3ba7bdb xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0xa3d1c6c3 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xa3f4e039 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa3f635e7 dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa3ffdde4 tty_do_resize +EXPORT_SYMBOL vmlinux 0xa40ff01b acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xa41a2434 genphy_read_abilities +EXPORT_SYMBOL vmlinux 0xa42a0518 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xa4338c71 generic_fillattr +EXPORT_SYMBOL vmlinux 0xa434ba83 inet_bind +EXPORT_SYMBOL vmlinux 0xa446189c __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xa44b9da3 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xa44da013 rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0xa4711e69 current_in_userns +EXPORT_SYMBOL vmlinux 0xa47ec74d rproc_add +EXPORT_SYMBOL vmlinux 0xa47ed71c napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa4a6ab0c vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0xa4c0be66 seq_release_private +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4de1ec3 neigh_destroy +EXPORT_SYMBOL vmlinux 0xa4e1fa8d sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0xa4eefd7c param_set_bool +EXPORT_SYMBOL vmlinux 0xa4fca045 qcom_scm_ocmem_lock +EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xa528eba5 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xa52bd5fe pmem_sector_size +EXPORT_SYMBOL vmlinux 0xa52bedf6 xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0xa52cb81e inode_nohighmem +EXPORT_SYMBOL vmlinux 0xa53b3ec7 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xa54d43f8 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xa54e4366 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa566d954 d_move +EXPORT_SYMBOL vmlinux 0xa56bada8 param_get_ulong +EXPORT_SYMBOL vmlinux 0xa57f1732 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xa587ddd8 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0xa5976e4f dev_base_lock +EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa5f55179 cdrom_release +EXPORT_SYMBOL vmlinux 0xa5f6b45a twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xa5f7cf37 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa6001148 fman_get_bmi_max_fifo_size +EXPORT_SYMBOL vmlinux 0xa604072b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xa60661be make_bad_inode +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa625788e put_ipc_ns +EXPORT_SYMBOL vmlinux 0xa6257a2f complete +EXPORT_SYMBOL vmlinux 0xa64360d0 _dev_notice +EXPORT_SYMBOL vmlinux 0xa66e8417 passthru_features_check +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa694d542 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xa6a282ee md_unregister_thread +EXPORT_SYMBOL vmlinux 0xa6c18583 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xa6c4a019 hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xa6d4fb28 udp_seq_ops +EXPORT_SYMBOL vmlinux 0xa6da4685 tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0xa6e14947 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xa6f8ccb8 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xa7061141 to_nd_pfn +EXPORT_SYMBOL vmlinux 0xa70bc169 devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0xa70bc96d qcom_scm_restore_sec_cfg_available +EXPORT_SYMBOL vmlinux 0xa718de27 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xa71acc92 fman_port_config +EXPORT_SYMBOL vmlinux 0xa73dbb08 netdev_change_features +EXPORT_SYMBOL vmlinux 0xa7400390 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa753ba81 thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0xa75900cc filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xa7729a6a iterate_dir +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa78e9ac5 vfs_get_tree +EXPORT_SYMBOL vmlinux 0xa7d5f92e ida_destroy +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa7fbee80 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xa80b9834 fb_find_mode +EXPORT_SYMBOL vmlinux 0xa813c83d mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0xa813cce4 netlink_set_err +EXPORT_SYMBOL vmlinux 0xa8181adf proc_dointvec +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa838cb93 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xa83db400 __udp_disconnect +EXPORT_SYMBOL vmlinux 0xa841ce5e pcibus_to_node +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa84ff28f pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xa853396b xa_extract +EXPORT_SYMBOL vmlinux 0xa854c07f devm_request_resource +EXPORT_SYMBOL vmlinux 0xa856d725 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xa8596139 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xa85a3e6d xa_load +EXPORT_SYMBOL vmlinux 0xa85f9565 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xa863cb7a capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xa8666150 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa86e8fcf dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xa886af97 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xa897e3e7 mempool_free +EXPORT_SYMBOL vmlinux 0xa89bb8d3 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8da7256 noop_fsync +EXPORT_SYMBOL vmlinux 0xa8e6933a qdf2400_e44_present +EXPORT_SYMBOL vmlinux 0xa8ec841a mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xa8f3ff02 qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9223ef1 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xa93446bf flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa96e1584 devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa988a75e devm_ioport_map +EXPORT_SYMBOL vmlinux 0xa98fd0aa init_task +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9bda01a blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xa9f5eb93 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xaa00fdc0 ec_transaction +EXPORT_SYMBOL vmlinux 0xaa0811a5 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xaa112bf6 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xaa1d4dbd mdio_device_free +EXPORT_SYMBOL vmlinux 0xaa1fba01 dev_uc_del +EXPORT_SYMBOL vmlinux 0xaa297d7f ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xaa2d11d9 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xaa341905 acpi_bios_exception +EXPORT_SYMBOL vmlinux 0xaa40b2bd dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xaa418006 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xaa5f6214 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa892454 pci_pme_active +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaabbb6ad __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad473d5 input_reset_device +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad89e9d pci_read_config_byte +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaad92114 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xaade6650 __sock_create +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafb1add sock_no_linger +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab21a80f of_node_get +EXPORT_SYMBOL vmlinux 0xab22cdf1 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xab22f3c4 generic_fadvise +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab641d40 dquot_acquire +EXPORT_SYMBOL vmlinux 0xab67a0ac dql_init +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8d3625 get_tree_bdev +EXPORT_SYMBOL vmlinux 0xab9e0448 xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0xaba81805 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0xabc43277 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xabc81dfa d_exact_alias +EXPORT_SYMBOL vmlinux 0xabde6005 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xabfd2f1a pnp_register_driver +EXPORT_SYMBOL vmlinux 0xac0df7c3 phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0xac108487 fb_pan_display +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac3f6616 find_lock_entry +EXPORT_SYMBOL vmlinux 0xac475243 refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0xac4d2120 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xac537ac2 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac63fdeb nf_hook_slow +EXPORT_SYMBOL vmlinux 0xac746eeb nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac86a288 bioset_exit +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xaca69d5e vm_insert_page +EXPORT_SYMBOL vmlinux 0xacaa4c72 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb342b6 __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xacb6e34d rproc_put +EXPORT_SYMBOL vmlinux 0xacc1ff0d qman_volatile_dequeue +EXPORT_SYMBOL vmlinux 0xacd1ad96 phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0xacd3e7b4 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4c4e0 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xacfea9bf configfs_unregister_group +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad2900cf inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xad3ea04c qman_p_irqsource_remove +EXPORT_SYMBOL vmlinux 0xad589adc ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0xad5a0dde mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0xad682b8f xudma_rchanrt_write +EXPORT_SYMBOL vmlinux 0xad6ba40e radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xad728b4a devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9901ae bit_waitqueue +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xada31e57 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xadafd7ba tty_check_change +EXPORT_SYMBOL vmlinux 0xadb95014 param_get_ullong +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0xadcdf4d8 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xade72c09 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae014baf mii_nway_restart +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae1e7919 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xae305b9a __inc_node_page_state +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae33c403 xudma_navss_psil_unpair +EXPORT_SYMBOL vmlinux 0xae45e9ec dquot_release +EXPORT_SYMBOL vmlinux 0xae575c36 mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0xae5a04bb acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0xae6c17ac open_exec +EXPORT_SYMBOL vmlinux 0xae708a41 of_device_alloc +EXPORT_SYMBOL vmlinux 0xae742bb5 qman_enqueue +EXPORT_SYMBOL vmlinux 0xae7e3a35 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xae806b41 d_add_ci +EXPORT_SYMBOL vmlinux 0xaea09603 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xaea7e007 amba_find_device +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeb60f0a blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xaebd12f0 acpi_get_name +EXPORT_SYMBOL vmlinux 0xaec2ab9b tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xaec60722 abort_creds +EXPORT_SYMBOL vmlinux 0xaee09aeb xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xaee81301 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xaf1f61f7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xaf2ae4f6 pci_request_region +EXPORT_SYMBOL vmlinux 0xaf336af2 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf460a32 dev_addr_del +EXPORT_SYMBOL vmlinux 0xaf507de1 __arch_copy_from_user +EXPORT_SYMBOL vmlinux 0xaf561f7a input_set_capability +EXPORT_SYMBOL vmlinux 0xaf56600a arm64_use_ng_mappings +EXPORT_SYMBOL vmlinux 0xaf5fed37 node_data +EXPORT_SYMBOL vmlinux 0xaf68692a kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xaf868d87 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xaf8755f7 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xaf8b98d6 phy_write_paged +EXPORT_SYMBOL vmlinux 0xaf8dac5b add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xaf98a010 blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0xafaa83ff qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xafb91e5c devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0xaff48379 page_pool_create +EXPORT_SYMBOL vmlinux 0xaff6e998 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xb011ac89 dev_mc_del +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb030f987 input_inject_event +EXPORT_SYMBOL vmlinux 0xb0438352 free_netdev +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb061a98a mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xb0678185 dma_set_mask +EXPORT_SYMBOL vmlinux 0xb074b41f km_state_notify +EXPORT_SYMBOL vmlinux 0xb07f0a41 rproc_get_by_child +EXPORT_SYMBOL vmlinux 0xb086de9d ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xb0916891 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xb099cd5e rpmh_invalidate +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a6cd14 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xb0a9ab01 zap_page_range +EXPORT_SYMBOL vmlinux 0xb0aed408 ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0xb0c5e247 lockref_put_return +EXPORT_SYMBOL vmlinux 0xb0c84bf9 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0xb0cc45fa audit_log +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f33ba3 path_nosuid +EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize +EXPORT_SYMBOL vmlinux 0xb0f5a004 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12f696a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xb140d236 udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb15b64e6 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb17a8a7a netif_carrier_on +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1baddc6 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1d3c75d filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xb1db9a69 fsl_ifc_find +EXPORT_SYMBOL vmlinux 0xb1dd8998 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xb1dda185 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1de8c05 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xb1e12d81 krealloc +EXPORT_SYMBOL vmlinux 0xb1ed48b9 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xb208a26a inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0xb20e3832 devm_ioremap +EXPORT_SYMBOL vmlinux 0xb22b3d6c simple_rename +EXPORT_SYMBOL vmlinux 0xb22cac2a simple_link +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb23a2a12 km_policy_expired +EXPORT_SYMBOL vmlinux 0xb24fd69b dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb2586fae serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xb258b996 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xb25ab237 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xb266bda5 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0xb2798552 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xb280ceef uart_add_one_port +EXPORT_SYMBOL vmlinux 0xb289be41 netlink_capable +EXPORT_SYMBOL vmlinux 0xb28c08b3 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xb29bea4d file_open_root +EXPORT_SYMBOL vmlinux 0xb2bcb088 acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0xb2c29eba pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xb2c717ed pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xb2d0f5d4 seq_lseek +EXPORT_SYMBOL vmlinux 0xb2d4f292 wireless_send_event +EXPORT_SYMBOL vmlinux 0xb2db667d sync_blockdev +EXPORT_SYMBOL vmlinux 0xb2ead97c kimage_vaddr +EXPORT_SYMBOL vmlinux 0xb2eeee67 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb31cd524 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb32728bb qcom_scm_iommu_secure_ptbl_init +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb335b008 sk_capable +EXPORT_SYMBOL vmlinux 0xb348040c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb36742ea vga_tryget +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb384801f cad_pid +EXPORT_SYMBOL vmlinux 0xb38a137a neigh_direct_output +EXPORT_SYMBOL vmlinux 0xb38f625c dm_table_get_md +EXPORT_SYMBOL vmlinux 0xb3904e35 nd_device_notify +EXPORT_SYMBOL vmlinux 0xb3915543 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xb393ee84 xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0xb39c7fd3 vme_dma_request +EXPORT_SYMBOL vmlinux 0xb39eb569 blk_get_queue +EXPORT_SYMBOL vmlinux 0xb3b1dbb4 kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0xb3b237a1 pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3c7172b pci_get_subsys +EXPORT_SYMBOL vmlinux 0xb3c82258 follow_down_one +EXPORT_SYMBOL vmlinux 0xb3c849d0 scsi_host_put +EXPORT_SYMBOL vmlinux 0xb3cf21f0 uart_match_port +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3dc2128 neigh_lookup +EXPORT_SYMBOL vmlinux 0xb3dcf43f ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xb3e4cc7e sock_release +EXPORT_SYMBOL vmlinux 0xb3eb7ca4 lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4043948 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0xb40b0edc sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb417f082 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xb41f7567 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4577003 acpi_dev_present +EXPORT_SYMBOL vmlinux 0xb45b7fb1 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xb464a1f7 vme_register_driver +EXPORT_SYMBOL vmlinux 0xb46b2fd9 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0xb46c00a5 clear_nlink +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4985beb ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0xb4b1a922 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xb4ccfc44 dst_release_immediate +EXPORT_SYMBOL vmlinux 0xb4dc7a65 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb518f390 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xb52115be unregister_key_type +EXPORT_SYMBOL vmlinux 0xb52a0000 __lock_buffer +EXPORT_SYMBOL vmlinux 0xb52a33bb vme_register_bridge +EXPORT_SYMBOL vmlinux 0xb535b4c8 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xb53f2810 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xb54625d7 bio_copy_data +EXPORT_SYMBOL vmlinux 0xb54ffe2e posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xb5613edb config_group_find_item +EXPORT_SYMBOL vmlinux 0xb5626474 pci_irq_vector +EXPORT_SYMBOL vmlinux 0xb5671e9c sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb56ee862 kill_block_super +EXPORT_SYMBOL vmlinux 0xb5715cf0 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f1e27 fman_port_disable +EXPORT_SYMBOL vmlinux 0xb587b7fc blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb58f99e8 mmc_retune_pause +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b6881c d_genocide +EXPORT_SYMBOL vmlinux 0xb5bc691b file_ns_capable +EXPORT_SYMBOL vmlinux 0xb5c2adca __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xb5d72fe6 dev_close +EXPORT_SYMBOL vmlinux 0xb5e2a9dd dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb5ec2381 __dev_set_mtu +EXPORT_SYMBOL vmlinux 0xb6024d96 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xb620e602 dquot_disable +EXPORT_SYMBOL vmlinux 0xb62626d0 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb63c6178 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb6428a1f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xb6469efa neigh_seq_next +EXPORT_SYMBOL vmlinux 0xb654ef65 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xb66c7c4b d_rehash +EXPORT_SYMBOL vmlinux 0xb66e6ca9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb676cd0b qman_create_fq +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67caf65 ucc_fast_enable +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69dca55 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ab13ae phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb7075886 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xb728cc81 set_posix_acl +EXPORT_SYMBOL vmlinux 0xb72f1a6c file_update_time +EXPORT_SYMBOL vmlinux 0xb7350849 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0xb737b185 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xb741d83b dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0xb74e8b67 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xb7688155 ucc_slow_init +EXPORT_SYMBOL vmlinux 0xb77232c7 __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0xb779a2be jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xb788fb30 gic_pmr_sync +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb79aaf65 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xb7ab8296 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xb7c0f443 sort +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7cd085d request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0xb7e26f12 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xb7e886bd mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xb7fc955b build_skb_around +EXPORT_SYMBOL vmlinux 0xb828ceff inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xb8396845 setup_new_exec +EXPORT_SYMBOL vmlinux 0xb841232c skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xb842716c qcom_scm_ocmem_lock_available +EXPORT_SYMBOL vmlinux 0xb848339d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xb85422d4 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb856f637 dump_page +EXPORT_SYMBOL vmlinux 0xb85b70c9 load_nls_default +EXPORT_SYMBOL vmlinux 0xb8605d9c qman_p_static_dequeue_add +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb885217b xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb89e43f2 qman_query_fq_np +EXPORT_SYMBOL vmlinux 0xb8a1f76b __alloc_skb +EXPORT_SYMBOL vmlinux 0xb8a2fd4d fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xb8cb6f2b rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xb8dd5659 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb913806b __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xb936b207 tty_name +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb94b4154 bio_advance +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb97c788e __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xb97cba1c nf_log_set +EXPORT_SYMBOL vmlinux 0xb9942a22 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xb9999905 ping_prot +EXPORT_SYMBOL vmlinux 0xb9adb810 elv_rb_del +EXPORT_SYMBOL vmlinux 0xb9af1d0d __xa_clear_mark +EXPORT_SYMBOL vmlinux 0xb9c2998e ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb9cb2011 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xb9e7252a try_module_get +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9eba292 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xb9ec1839 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xb9ed2c38 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xb9ede803 iommu_get_msi_cookie +EXPORT_SYMBOL vmlinux 0xb9fc381a qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le +EXPORT_SYMBOL vmlinux 0xba15d722 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xba20481e ipmr_rule_default +EXPORT_SYMBOL vmlinux 0xba291705 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xba441d21 kset_unregister +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba49f3f5 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xba5ca4f9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xba627871 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xba707a78 qe_get_brg_clk +EXPORT_SYMBOL vmlinux 0xba8d755e dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xbaa1c592 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xbaa8fac3 mmc_sw_reset +EXPORT_SYMBOL vmlinux 0xbaae8a7e pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xbab2c86c pci_write_config_dword +EXPORT_SYMBOL vmlinux 0xbace9154 to_ndd +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbae10c02 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xbaffff96 ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb143235 __page_symlink +EXPORT_SYMBOL vmlinux 0xbb21260e convert_ifc_address +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb687724 bman_new_pool +EXPORT_SYMBOL vmlinux 0xbb814894 rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xbb9693bb tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xbba46dc1 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xbbae6855 sk_common_release +EXPORT_SYMBOL vmlinux 0xbbe46b86 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order +EXPORT_SYMBOL vmlinux 0xbbeefef9 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xbbfc01ea inet_sendmsg +EXPORT_SYMBOL vmlinux 0xbc06d998 of_mdiobus_phy_device_register +EXPORT_SYMBOL vmlinux 0xbc0792d3 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbc07cad8 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc2fbfd0 scsi_print_command +EXPORT_SYMBOL vmlinux 0xbc300040 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xbc317273 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xbc50ab47 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xbc77a45c flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0xbc85c264 pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0xbc885981 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcabf285 generic_write_checks +EXPORT_SYMBOL vmlinux 0xbcb4698a inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xbcb72eb3 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccb1aa9 unix_attach_fds +EXPORT_SYMBOL vmlinux 0xbce45ac6 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xbce54296 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xbcf8a486 vc_resize +EXPORT_SYMBOL vmlinux 0xbd06f85b mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xbd071289 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xbd170b15 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd475dbb unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0xbd59d983 fman_set_port_params +EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 +EXPORT_SYMBOL vmlinux 0xbd70b49b tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0xbd739d7f ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xbd78d62e ns_capable_setid +EXPORT_SYMBOL vmlinux 0xbd8209bd skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xbd8aa7a3 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xbd8f2c69 tty_devnum +EXPORT_SYMBOL vmlinux 0xbda7ae2d xp_raw_get_data +EXPORT_SYMBOL vmlinux 0xbdaacb5d mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xbdaaf724 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xbdaf1ca7 nvm_register +EXPORT_SYMBOL vmlinux 0xbdbb8e86 pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0xbdbe42ec pci_disable_device +EXPORT_SYMBOL vmlinux 0xbdda54fc finish_no_open +EXPORT_SYMBOL vmlinux 0xbddaa707 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xbde6bdb0 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xbde94ce3 msm_pinctrl_dev_pm_ops +EXPORT_SYMBOL vmlinux 0xbdf0fc9b configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0xbdf8d943 skb_clone +EXPORT_SYMBOL vmlinux 0xbe0a78bc acpi_device_hid +EXPORT_SYMBOL vmlinux 0xbe1783ea __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xbe1a2f78 seq_release +EXPORT_SYMBOL vmlinux 0xbe2dd44f inode_add_bytes +EXPORT_SYMBOL vmlinux 0xbe471744 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xbe49252c acpi_os_write_port +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe6a866f __wait_on_bit +EXPORT_SYMBOL vmlinux 0xbe6f6cfb no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0xbe7e05a8 acpi_tb_install_and_load_table +EXPORT_SYMBOL vmlinux 0xbe9f03a2 xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0xbeaac130 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xbecbccb9 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xbeda173e serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefa51a3 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xbf0e263a of_device_unregister +EXPORT_SYMBOL vmlinux 0xbf337638 get_fs_type +EXPORT_SYMBOL vmlinux 0xbf42855e vme_register_error_handler +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf6e397a __seq_open_private +EXPORT_SYMBOL vmlinux 0xbf70be5d rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xbf7f45b3 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbf84e2e4 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xbf8d8ac5 devm_memunmap +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa5c097 get_super_thawed +EXPORT_SYMBOL vmlinux 0xbfb8d722 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xbfc6c949 d_alloc_name +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfd0f25f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xbfd255cd compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc00fb90c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xc0123ad2 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xc019fcf5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xc01d06aa fman_set_mac_max_frame +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc030d927 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xc0363d10 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc04f4987 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xc055ae3d tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xc05f0377 md_integrity_register +EXPORT_SYMBOL vmlinux 0xc062400f ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xc06cf7b2 input_flush_device +EXPORT_SYMBOL vmlinux 0xc06dc39a xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07a5b75 con_is_bound +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc0887d95 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0b7efda pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xc0be1ed8 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0xc0caf06f read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc0cbc530 logfc +EXPORT_SYMBOL vmlinux 0xc0cbdfa8 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc105573e sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc1179daa kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0xc13ae79c dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xc14dc168 acpi_get_data +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc156c981 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc1579516 fman_port_enable +EXPORT_SYMBOL vmlinux 0xc162210d crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc164a51c keygen_init +EXPORT_SYMBOL vmlinux 0xc164e3f6 config_item_set_name +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc17bfc92 phy_get_pause +EXPORT_SYMBOL vmlinux 0xc188e6b9 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xc18ec449 done_path_create +EXPORT_SYMBOL vmlinux 0xc196f4ba page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xc1a6cc06 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xc1afe89a padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xc1b645ce rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1ef30a8 devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0xc1f56ddb ata_link_printk +EXPORT_SYMBOL vmlinux 0xc1fbf17f phy_find_first +EXPORT_SYMBOL vmlinux 0xc2050974 fman_port_get_tstamp +EXPORT_SYMBOL vmlinux 0xc20e60da scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xc225185e udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc2310cdc logic_inl +EXPORT_SYMBOL vmlinux 0xc23543e6 devm_memremap +EXPORT_SYMBOL vmlinux 0xc23dac0f remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc244cfb3 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0xc250c673 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc27e5f12 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a17ebe seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc2c9ba28 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xc2dde568 skb_copy +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f52274 __lshrti3 +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc33d34a0 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xc34126ab netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0xc3648404 blk_get_request +EXPORT_SYMBOL vmlinux 0xc36a3bd4 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0xc3762aec mempool_alloc +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc38c0ce6 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc3942966 override_creds +EXPORT_SYMBOL vmlinux 0xc3986bdb tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xc3a3013d inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xc3a51650 pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xc3b02599 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc3b0a8c6 migrate_page_copy +EXPORT_SYMBOL vmlinux 0xc3c8c464 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xc3d67176 discard_new_inode +EXPORT_SYMBOL vmlinux 0xc3f0d8b2 pci_map_rom +EXPORT_SYMBOL vmlinux 0xc3f6badf proto_register +EXPORT_SYMBOL vmlinux 0xc3ff38c2 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc42dcb99 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0xc43617d9 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc45fc19b dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xc468ff2e skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc48a610d acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xc495ef27 ppp_input +EXPORT_SYMBOL vmlinux 0xc49b1a3e simple_open +EXPORT_SYMBOL vmlinux 0xc4a48b3d simple_release_fs +EXPORT_SYMBOL vmlinux 0xc4a84227 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xc4b13905 of_graph_get_remote_node +EXPORT_SYMBOL vmlinux 0xc4b21d2f qman_get_affine_portal +EXPORT_SYMBOL vmlinux 0xc4b39ca4 fman_bind +EXPORT_SYMBOL vmlinux 0xc4b6f64e xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc4cb472f ether_setup +EXPORT_SYMBOL vmlinux 0xc4d0eeeb tty_port_init +EXPORT_SYMBOL vmlinux 0xc4e38b9e address_space_init_once +EXPORT_SYMBOL vmlinux 0xc4e8ab25 dev_load +EXPORT_SYMBOL vmlinux 0xc51e16b6 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xc528a49a queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0xc53306d3 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xc53b8cdb genphy_read_status +EXPORT_SYMBOL vmlinux 0xc53e04b5 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xc544f0bf pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xc55990cf iproc_msi_exit +EXPORT_SYMBOL vmlinux 0xc56a41e6 vabits_actual +EXPORT_SYMBOL vmlinux 0xc57b9da3 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xc57c48a3 idr_get_next +EXPORT_SYMBOL vmlinux 0xc5842392 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc58b7a8e generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5aae47e filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5d50957 dquot_commit +EXPORT_SYMBOL vmlinux 0xc5dac02b dentry_path_raw +EXPORT_SYMBOL vmlinux 0xc5dbce14 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc5fbf564 bio_split +EXPORT_SYMBOL vmlinux 0xc6040118 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc6087d1d inet_accept +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc6103ef5 generic_copy_file_range +EXPORT_SYMBOL vmlinux 0xc61b3031 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc6475efa inode_get_bytes +EXPORT_SYMBOL vmlinux 0xc657e3ff remove_arg_zero +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc69fce52 qcom_scm_qsmmu500_wait_safe_toggle +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6db4a09 PDE_DATA +EXPORT_SYMBOL vmlinux 0xc6e40c76 dev_uc_add +EXPORT_SYMBOL vmlinux 0xc6f1de92 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc7040bf5 ucc_tdm_init +EXPORT_SYMBOL vmlinux 0xc708f1fe ec_write +EXPORT_SYMBOL vmlinux 0xc71295c1 clk_bulk_get +EXPORT_SYMBOL vmlinux 0xc717bb47 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7286daa simple_getattr +EXPORT_SYMBOL vmlinux 0xc7498302 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xc74d1622 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0xc75005ec configfs_depend_item +EXPORT_SYMBOL vmlinux 0xc77440aa msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xc775048b mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc782fc7a dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78c6f80 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xc78d200f devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a2eab1 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a8ec11 reuseport_select_sock +EXPORT_SYMBOL vmlinux 0xc7b5f276 udp_pre_connect +EXPORT_SYMBOL vmlinux 0xc7c04742 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0xc7c0c53a filemap_fault +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7c630cc skb_vlan_push +EXPORT_SYMBOL vmlinux 0xc7ccda60 tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d693d5 dcb_setapp +EXPORT_SYMBOL vmlinux 0xc80ab559 swake_up_one +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc8385d5c mmc_erase +EXPORT_SYMBOL vmlinux 0xc838c3f5 __ashrti3 +EXPORT_SYMBOL vmlinux 0xc83c2a6e sock_gettstamp +EXPORT_SYMBOL vmlinux 0xc847f00b __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc856f03d add_to_pipe +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc88a5b1c bprm_change_interp +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc890ccf7 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xc89846c4 xudma_tchanrt_read +EXPORT_SYMBOL vmlinux 0xc89c74f6 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8d7bc11 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xc8e1a8fe sock_create_lite +EXPORT_SYMBOL vmlinux 0xc8e7622c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xc90afb0c cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0xc920c76b mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xc93533f9 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0xc93e8461 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96d17c8 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc97c87f4 is_nd_pfn +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc983b294 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xc98536ac mount_subtree +EXPORT_SYMBOL vmlinux 0xc9957204 __arch_copy_in_user +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9bf8c0b skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xc9d3306b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xc9d7db9d devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9ed2d31 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xca0976ec kobject_add +EXPORT_SYMBOL vmlinux 0xca0b4265 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca42c739 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca54379f devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0xca5547ba sock_register +EXPORT_SYMBOL vmlinux 0xca62afaf xudma_rflow_is_gp +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9beaa4 __xa_store +EXPORT_SYMBOL vmlinux 0xcaa159cf dma_free_attrs +EXPORT_SYMBOL vmlinux 0xcaabb68c devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xcaac3274 registered_fb +EXPORT_SYMBOL vmlinux 0xcabe7e70 __napi_schedule +EXPORT_SYMBOL vmlinux 0xcac2ec1c pin_user_pages +EXPORT_SYMBOL vmlinux 0xcad1aca8 acpi_exception +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb13eae8 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0xcb18a609 skb_checksum +EXPORT_SYMBOL vmlinux 0xcb28f63c mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb4d0b8d inode_set_flags +EXPORT_SYMBOL vmlinux 0xcb53ffc9 devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xcb5987ef iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xcb67f4dc tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb9e1a22 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbaa88d5 finish_swait +EXPORT_SYMBOL vmlinux 0xcbb20ca8 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xcbc949fc flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbd9ffba inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xcbe82750 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcc073f89 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0xcc182984 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xcc1b6380 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcc1b882a idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2e27f9 phy_stop +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc410b98 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc48093b input_close_device +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc5d9423 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xcc6780a5 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xcc797f9b md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xcc8111c7 cdrom_open +EXPORT_SYMBOL vmlinux 0xcca5839d xen_vcpu_id +EXPORT_SYMBOL vmlinux 0xccb1e4e3 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xccb3df05 seq_vprintf +EXPORT_SYMBOL vmlinux 0xccb62ad5 netdev_info +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc4a15f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccd0c7cd fb_blank +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccd6d3ac file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0xcce7cf86 locks_free_lock +EXPORT_SYMBOL vmlinux 0xcce8d5d2 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xccea1169 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd01b8e6 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xcd07ed91 skb_split +EXPORT_SYMBOL vmlinux 0xcd1622b5 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd33007a seq_printf +EXPORT_SYMBOL vmlinux 0xcd52acda take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xcd58c7fc fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0xcd627994 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xcd6fe35c _dev_warn +EXPORT_SYMBOL vmlinux 0xcd7573ce xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xcd7a81b5 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xcd820d1f xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0xcd8ce890 acpi_format_exception +EXPORT_SYMBOL vmlinux 0xcd9ddbc1 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcddb0953 devm_clk_put +EXPORT_SYMBOL vmlinux 0xcddc99a1 pci_match_id +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xce036f24 sg_split +EXPORT_SYMBOL vmlinux 0xce043fd6 set_page_dirty +EXPORT_SYMBOL vmlinux 0xce04915a __d_lookup_done +EXPORT_SYMBOL vmlinux 0xce08f62a xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0xce0a1d87 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3864eb ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce50e5de ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xce568a7f eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5c7a14 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0xce5e7e8a pskb_expand_head +EXPORT_SYMBOL vmlinux 0xce6477b2 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xce655ee3 serio_rescan +EXPORT_SYMBOL vmlinux 0xce731b34 ucc_slow_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0xce76c257 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce807a25 up_write +EXPORT_SYMBOL vmlinux 0xce9c48ac sync_file_create +EXPORT_SYMBOL vmlinux 0xceaae33e jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb3e5b8 fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xcec8ca08 tcp_seq_stop +EXPORT_SYMBOL vmlinux 0xced0f4d4 gen_pool_create +EXPORT_SYMBOL vmlinux 0xcee5ab3b blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xceedf957 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0xcefa9a06 touch_atime +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf05e89a sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xcf19f24e simple_write_begin +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf2a6966 up +EXPORT_SYMBOL vmlinux 0xcf3f3a8b d_set_fallthru +EXPORT_SYMBOL vmlinux 0xcf4522f4 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xcf4fdd4d _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xcf5bfc31 vlan_for_each +EXPORT_SYMBOL vmlinux 0xcf83d83a __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xcf898eaf iov_iter_zero +EXPORT_SYMBOL vmlinux 0xcf97df81 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcf9f5bbe dns_query +EXPORT_SYMBOL vmlinux 0xcfb0f8a0 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xcfda7c8b xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0xcfeab31a of_device_register +EXPORT_SYMBOL vmlinux 0xcfeb98a8 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xcff34db6 fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0xcff56ca4 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xd024e9bb of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0xd035ad28 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xd03c47c5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd0436307 follow_down +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd08a681a pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xd08ce7cf kmem_cache_size +EXPORT_SYMBOL vmlinux 0xd0a4879d bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd0a73907 clkdev_add +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b44fd9 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xd0b74705 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xd0bd487b hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd0d7fb20 pnp_device_detach +EXPORT_SYMBOL vmlinux 0xd0f87c26 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xd100a35e netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xd135cf61 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd148e70e inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0xd156237c end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xd1584915 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xd16494d7 do_SAK +EXPORT_SYMBOL vmlinux 0xd17c9820 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0xd180288d inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd194ddf9 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xd1aa1aa6 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0xd1cd469f security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0xd1d57de5 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1daa03d phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0xd1f87b4c touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xd1ff220a lock_rename +EXPORT_SYMBOL vmlinux 0xd2051916 qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0xd21a0dff simple_setattr +EXPORT_SYMBOL vmlinux 0xd2237016 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0xd22870c3 unlock_buffer +EXPORT_SYMBOL vmlinux 0xd22ef232 mii_check_link +EXPORT_SYMBOL vmlinux 0xd2500d4e of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd250d0b7 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xd254f110 set_wb_congested +EXPORT_SYMBOL vmlinux 0xd255036f km_new_mapping +EXPORT_SYMBOL vmlinux 0xd25bc5d4 csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25dcbc3 acpi_dev_get_first_match_dev +EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf +EXPORT_SYMBOL vmlinux 0xd26f6d78 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0xd2796c39 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd29accb5 fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0xd2b08961 end_page_writeback +EXPORT_SYMBOL vmlinux 0xd2c10aba pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dad53e nvm_end_io +EXPORT_SYMBOL vmlinux 0xd2e2249a skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2e2fbcb ipv4_specific +EXPORT_SYMBOL vmlinux 0xd2ea49b8 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0xd2f7330a __scsi_add_device +EXPORT_SYMBOL vmlinux 0xd3019ce2 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xd31bd9f7 phy_connect +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3208e78 netdev_pick_tx +EXPORT_SYMBOL vmlinux 0xd34aec9b vme_irq_handler +EXPORT_SYMBOL vmlinux 0xd351ad6f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xd3559ef4 __memset +EXPORT_SYMBOL vmlinux 0xd35934ba xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd37ec51c neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xd3819084 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd3941078 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd399896d dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xd3a42f29 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xd3a60019 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xd3b36d27 ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0xd3b7e2b6 tso_start +EXPORT_SYMBOL vmlinux 0xd3b7f5a7 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0xd3c980f4 set_cached_acl +EXPORT_SYMBOL vmlinux 0xd3dc1893 __icmp_send +EXPORT_SYMBOL vmlinux 0xd3e32b90 mdio_device_remove +EXPORT_SYMBOL vmlinux 0xd3e3fb4f pci_assign_resource +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3fa8919 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xd3fba534 qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd4201dac register_console +EXPORT_SYMBOL vmlinux 0xd4339de8 qcom_scm_pas_init_image +EXPORT_SYMBOL vmlinux 0xd43cc1aa try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xd44417c5 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xd44cfc5d md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd45ec0a5 input_register_handle +EXPORT_SYMBOL vmlinux 0xd45ed2b6 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xd470e842 path_is_under +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4883458 dev_mc_init +EXPORT_SYMBOL vmlinux 0xd48e2b4b __i2c_transfer +EXPORT_SYMBOL vmlinux 0xd4951fa8 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xd49fdd50 d_alloc +EXPORT_SYMBOL vmlinux 0xd4a69d20 qm_channel_caam +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4d1983c udplite_table +EXPORT_SYMBOL vmlinux 0xd4d28779 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xd4d63a49 dquot_destroy +EXPORT_SYMBOL vmlinux 0xd4e0e7db sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd4e275c9 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xd4eff78e gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd5162f8c fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd5346bfc acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xd535512f mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xd556ef12 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0xd55ebe85 dev_deactivate +EXPORT_SYMBOL vmlinux 0xd5a86493 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xd5abdc40 rpmh_write_async +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5d7ec74 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xd5dacf83 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd5e48e7c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xd5e8b260 pci_read_config_dword +EXPORT_SYMBOL vmlinux 0xd5fd90f1 prepare_to_wait +EXPORT_SYMBOL vmlinux 0xd604e78f xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd62b1e45 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xd62ecd49 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax +EXPORT_SYMBOL vmlinux 0xd643239a acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xd668d8e4 input_allocate_device +EXPORT_SYMBOL vmlinux 0xd67cade8 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd67efe0d dquot_alloc +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd691bca6 kern_path +EXPORT_SYMBOL vmlinux 0xd691c6a9 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd69abb52 ihold +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6afcb44 __quota_error +EXPORT_SYMBOL vmlinux 0xd6b65a09 stop_tty +EXPORT_SYMBOL vmlinux 0xd6c39dfa mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0xd6c3dd87 __scm_destroy +EXPORT_SYMBOL vmlinux 0xd6deeeae flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6eba06e dentry_open +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd6fe8886 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xd70b8e85 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd70f62b6 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xd718626b vlan_vid_del +EXPORT_SYMBOL vmlinux 0xd71c1eae rproc_shutdown +EXPORT_SYMBOL vmlinux 0xd7322dc2 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xd73309c1 iov_iter_revert +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd73e210e neigh_for_each +EXPORT_SYMBOL vmlinux 0xd7529d49 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xd764a7cc __sb_end_write +EXPORT_SYMBOL vmlinux 0xd78234ec set_user_nice +EXPORT_SYMBOL vmlinux 0xd7975d12 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd799b732 truncate_setsize +EXPORT_SYMBOL vmlinux 0xd7a7b169 fman_reset_mac +EXPORT_SYMBOL vmlinux 0xd7b736d9 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xd7c81200 read_cache_pages +EXPORT_SYMBOL vmlinux 0xd7ca15fc __skb_checksum +EXPORT_SYMBOL vmlinux 0xd7cb9342 get_watch_queue +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ff1b8a __ashlti3 +EXPORT_SYMBOL vmlinux 0xd8131274 qman_alloc_cgrid_range +EXPORT_SYMBOL vmlinux 0xd828f063 xudma_tchanrt_write +EXPORT_SYMBOL vmlinux 0xd8400b02 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd868eb7e console_start +EXPORT_SYMBOL vmlinux 0xd8828ac2 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0xd88abf0e unregister_console +EXPORT_SYMBOL vmlinux 0xd8918f9a param_get_byte +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a74a47 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b485cd input_unregister_device +EXPORT_SYMBOL vmlinux 0xd8ca5b94 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xd8df08ac acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xd8e33bb3 qman_get_qm_portal_config +EXPORT_SYMBOL vmlinux 0xd8f10003 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0xd8f544b3 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0xd90cb249 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0xd924addc scm_detach_fds +EXPORT_SYMBOL vmlinux 0xd92deb6b acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xd934255d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xd9491c14 xa_destroy +EXPORT_SYMBOL vmlinux 0xd950b449 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98fa792 blkdev_put +EXPORT_SYMBOL vmlinux 0xd99a6b3a ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xd9a5ea54 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xd9b3a75c tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xd9b85ef6 lockref_get +EXPORT_SYMBOL vmlinux 0xd9d597f4 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0xd9d8cb14 param_get_uint +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9e8aee7 refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xd9ec4b4d tcf_block_put +EXPORT_SYMBOL vmlinux 0xda10443c xudma_tchan_get_id +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda7ede99 add_watch_to_object +EXPORT_SYMBOL vmlinux 0xda81551a of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xda82b48b xfrm_state_add +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda88d568 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda8e0287 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xda9fc7ae kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xdab00b66 of_phy_connect +EXPORT_SYMBOL vmlinux 0xdac2fe4b send_sig +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdb1b3a03 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xdb31e2b8 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xdb55c076 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0xdb678e6e simple_get_link +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdba28cbb dget_parent +EXPORT_SYMBOL vmlinux 0xdbadd6d9 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xdbbaccfc dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xdbbc09e0 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xdbcf041a acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbe55593 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xdbf5aa5f kernel_write +EXPORT_SYMBOL vmlinux 0xdbf6eeb8 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc21989f input_get_poll_interval +EXPORT_SYMBOL vmlinux 0xdc34158f fman_port_init +EXPORT_SYMBOL vmlinux 0xdc3bc4ee pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc45e304 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5339ff xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xdca1fefe __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xdca8c3d4 logic_outb +EXPORT_SYMBOL vmlinux 0xdcaaf5ac mmc_can_discard +EXPORT_SYMBOL vmlinux 0xdcafa717 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcc399e3 tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0xdcc51eda __skb_recv_udp +EXPORT_SYMBOL vmlinux 0xdcd1bb02 seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xdcea1afe dev_mc_add +EXPORT_SYMBOL vmlinux 0xdcfb179d __register_binfmt +EXPORT_SYMBOL vmlinux 0xdd06add5 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xdd0790b0 tty_hangup +EXPORT_SYMBOL vmlinux 0xdd0abd2a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xdd18a993 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd2cacff block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xdd3e9b5d dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd67e2ff inet_recvmsg +EXPORT_SYMBOL vmlinux 0xdd6b94dd setattr_copy +EXPORT_SYMBOL vmlinux 0xdd72d714 unregister_netdev +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd7e3192 qcom_scm_pas_auth_and_reset +EXPORT_SYMBOL vmlinux 0xdd8166a1 dma_fence_free +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd8d50be __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xdd9c39e1 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xddad7952 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xddb0b794 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xddb5b6e5 __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0xddcb8651 compat_import_iovec +EXPORT_SYMBOL vmlinux 0xddd1d89a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xddf6ad7a completion_done +EXPORT_SYMBOL vmlinux 0xde02765d dm_get_device +EXPORT_SYMBOL vmlinux 0xde0a7465 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xde16fb2f get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xde23cd32 seq_open +EXPORT_SYMBOL vmlinux 0xde293f9e add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xde29604f vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0xde47ec18 configfs_register_group +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde5f5f35 framebuffer_release +EXPORT_SYMBOL vmlinux 0xde7324fe dump_align +EXPORT_SYMBOL vmlinux 0xde73cf2a pci_find_resource +EXPORT_SYMBOL vmlinux 0xde8a1eab __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xde8b836d pci_get_slot +EXPORT_SYMBOL vmlinux 0xde8d4a6b pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xde908fd7 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xde9991b6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xded6a415 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xdee365b0 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdefafee2 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xdf0cd3ce filp_close +EXPORT_SYMBOL vmlinux 0xdf1ca8cd mmc_add_host +EXPORT_SYMBOL vmlinux 0xdf1e2db2 dma_direct_map_page +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf327b5f security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xdf36914b xa_find_after +EXPORT_SYMBOL vmlinux 0xdf4637c2 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf6b082f proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xdf6b0bd6 skb_find_text +EXPORT_SYMBOL vmlinux 0xdf77ff55 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xdf7cda6c key_link +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf925048 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf95d4e2 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0xdfa585a0 qdisc_reset +EXPORT_SYMBOL vmlinux 0xdfa642a4 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0xdfac117b lease_get_mtime +EXPORT_SYMBOL vmlinux 0xdfacc647 kobject_del +EXPORT_SYMBOL vmlinux 0xdfafda7b d_splice_alias +EXPORT_SYMBOL vmlinux 0xdfb14029 down_read_killable +EXPORT_SYMBOL vmlinux 0xdfb4375d of_parse_phandle +EXPORT_SYMBOL vmlinux 0xdfb8cac9 amba_device_register +EXPORT_SYMBOL vmlinux 0xdfc33812 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfcd620f sget_fc +EXPORT_SYMBOL vmlinux 0xdfdcc0f7 skb_copy_header +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdff59c01 register_gifconf +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe013c243 padata_free_shell +EXPORT_SYMBOL vmlinux 0xe0197e2d inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0xe02c9c92 __xa_erase +EXPORT_SYMBOL vmlinux 0xe03169d9 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xe03a689d dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xe044dc86 bio_chain +EXPORT_SYMBOL vmlinux 0xe046ef72 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xe05a4ff2 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xe05f8df5 __free_pages +EXPORT_SYMBOL vmlinux 0xe07823eb acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xe07e5f44 acpi_reconfig_notifier_unregister +EXPORT_SYMBOL vmlinux 0xe082e88d acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe085dbee fb_class +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold +EXPORT_SYMBOL vmlinux 0xe0a6cb3a tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xe0a92f1a flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bab1bf seg6_push_hmac +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c843f9 udp_set_csum +EXPORT_SYMBOL vmlinux 0xe0cb00bd sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0xe0d3ba3d nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0xe0d6df30 blk_put_request +EXPORT_SYMBOL vmlinux 0xe10878ef jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe138fb8c percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13d5d07 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xe1436aed trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xe1530751 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe1563afb input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xe169ecde vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xe16d73cd locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xe1741c44 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xe180c685 nf_log_register +EXPORT_SYMBOL vmlinux 0xe197fe8b netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1be5a7e pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe1ceb34f rproc_alloc +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e0d4a5 fs_param_is_string +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1f64200 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xe1fe1579 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe20fc70e fman_get_pause_cfg +EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xe22c4675 udplite_prot +EXPORT_SYMBOL vmlinux 0xe232e094 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0xe245007c fman_get_mem_region +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe27d19a4 uart_register_driver +EXPORT_SYMBOL vmlinux 0xe287951a frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xe28d8da7 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe29a1729 mount_nodev +EXPORT_SYMBOL vmlinux 0xe2bb901f xfrm_state_free +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe304f3fa read_cache_page +EXPORT_SYMBOL vmlinux 0xe3203aeb gro_cells_init +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe331f2dd pps_register_source +EXPORT_SYMBOL vmlinux 0xe339c8e1 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe33b92a6 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xe34ed0c1 PageMovable +EXPORT_SYMBOL vmlinux 0xe357de2d dquot_scan_active +EXPORT_SYMBOL vmlinux 0xe35b5191 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xe391ea11 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xe3a0f77b vga_client_register +EXPORT_SYMBOL vmlinux 0xe3a7025d kill_litter_super +EXPORT_SYMBOL vmlinux 0xe3c754f9 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xe3d4d8da no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0xe3df6d95 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0xe3e06872 inet_add_offload +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3ee1497 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xe3f271b3 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe3f3c2f6 km_state_expired +EXPORT_SYMBOL vmlinux 0xe3f3d1e4 noop_qdisc +EXPORT_SYMBOL vmlinux 0xe3fdb901 pci_clear_master +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe408df73 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xe40976c0 pnp_range_reserved +EXPORT_SYMBOL vmlinux 0xe40b5a3e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xe40c37ea down_write_trylock +EXPORT_SYMBOL vmlinux 0xe41476d9 ZSTD_getParams +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe450a1f3 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0xe45a1026 cdev_alloc +EXPORT_SYMBOL vmlinux 0xe47a5c6d mmc_command_done +EXPORT_SYMBOL vmlinux 0xe4837fa7 freeze_bdev +EXPORT_SYMBOL vmlinux 0xe4934b63 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xe4b35579 param_ops_int +EXPORT_SYMBOL vmlinux 0xe4bbc1dd kimage_voffset +EXPORT_SYMBOL vmlinux 0xe4d1fb63 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xe4d42e9e dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xe507e04a napi_complete_done +EXPORT_SYMBOL vmlinux 0xe50a0538 devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xe5122941 ps2_init +EXPORT_SYMBOL vmlinux 0xe5142430 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5261720 security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0xe526dce4 path_get +EXPORT_SYMBOL vmlinux 0xe53002d6 param_ops_bint +EXPORT_SYMBOL vmlinux 0xe57ecffb nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xe57feefb qcom_scm_ocmem_unlock +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5859fdc skb_dump +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe5ac3527 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5c60bd2 percpu_counter_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cee1df xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xe5d8aec2 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xe5e13b78 cdev_init +EXPORT_SYMBOL vmlinux 0xe6011d1f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe61b906a phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0xe6392fdc unregister_qdisc +EXPORT_SYMBOL vmlinux 0xe64280de md_write_inc +EXPORT_SYMBOL vmlinux 0xe656c2ff __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xe66f36e7 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0xe6896856 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0xe6aa562c nobh_write_begin +EXPORT_SYMBOL vmlinux 0xe6b5bbcf nf_log_trace +EXPORT_SYMBOL vmlinux 0xe6d27caf xfrm_register_type +EXPORT_SYMBOL vmlinux 0xe6ed8b69 __SetPageMovable +EXPORT_SYMBOL vmlinux 0xe7125660 tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0xe7257ab8 xa_store_range +EXPORT_SYMBOL vmlinux 0xe728f6ea mroute6_is_socket +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe733b6ec kernel_read +EXPORT_SYMBOL vmlinux 0xe73ff6d0 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xe756fa41 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xe7698027 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe78505c5 fman_get_qman_channel_id +EXPORT_SYMBOL vmlinux 0xe7894401 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xe78c329e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xe78dea46 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xe78ecc38 input_register_handler +EXPORT_SYMBOL vmlinux 0xe7a02573 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xe7b0353b __cpu_active_mask +EXPORT_SYMBOL vmlinux 0xe7b5c59a nobh_write_end +EXPORT_SYMBOL vmlinux 0xe7c4dd81 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xe7d3c4c1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7df64d0 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe7dfa1d0 genphy_loopback +EXPORT_SYMBOL vmlinux 0xe7ea0c4c is_subdir +EXPORT_SYMBOL vmlinux 0xe7ff5342 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0xe818bf15 __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0xe81f7f98 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xe82927da pci_get_device +EXPORT_SYMBOL vmlinux 0xe82a3814 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xe82bc2e6 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xe84f583b vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xe855788c __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xe85f2123 acpi_tb_unload_table +EXPORT_SYMBOL vmlinux 0xe8799e7c page_mapped +EXPORT_SYMBOL vmlinux 0xe894e872 configfs_undepend_item +EXPORT_SYMBOL vmlinux 0xe89b93e6 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xe8a373a8 fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0xe8bb4c45 netpoll_setup +EXPORT_SYMBOL vmlinux 0xe8cd9a65 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xe8d17265 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xe8e208a7 complete_request_key +EXPORT_SYMBOL vmlinux 0xe8fbf4fa __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xe8fcb602 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0xe90253f0 xudma_rflow_get +EXPORT_SYMBOL vmlinux 0xe906cf6c tty_write_room +EXPORT_SYMBOL vmlinux 0xe9083768 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0xe90da5bc pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xe910f00c fman_get_revision +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9233ac8 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xe928b6e5 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xe92ba73c mdio_find_bus +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96012d9 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xe990ff75 should_remove_suid +EXPORT_SYMBOL vmlinux 0xe9ae289e kill_anon_super +EXPORT_SYMBOL vmlinux 0xe9af7397 __xa_set_mark +EXPORT_SYMBOL vmlinux 0xe9b38acc netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0xe9b4995c security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xe9b4c1fc thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xe9c588b9 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0xe9c72717 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xe9e36833 genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0xe9e5629e md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe9e7ec07 rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xe9e882bc blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9ed307f generic_permission +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea117d5a dst_release +EXPORT_SYMBOL vmlinux 0xea231bdc down_write_killable +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea3ee08c bmap +EXPORT_SYMBOL vmlinux 0xea4092aa jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea8367f6 vga_get +EXPORT_SYMBOL vmlinux 0xeaa1a690 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xeaa61d58 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xeab6f4c4 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xead8c400 bman_get_bpid +EXPORT_SYMBOL vmlinux 0xeadba755 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeafe79fe simple_dir_operations +EXPORT_SYMBOL vmlinux 0xeb1de248 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc +EXPORT_SYMBOL vmlinux 0xeb2391c9 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xeb24f843 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xeb29e84c t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xeb2b707e __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb671c64 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xeb7710b1 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xeb7f6046 acpi_get_devices +EXPORT_SYMBOL vmlinux 0xeb9b122b vfs_tmpfile +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xeba33052 param_array_ops +EXPORT_SYMBOL vmlinux 0xebb2e815 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xebb86741 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xebb93c5b kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xebc53ad0 mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0xebdfed8b iov_iter_discard +EXPORT_SYMBOL vmlinux 0xebf3e97b memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xebfeb854 tcf_em_register +EXPORT_SYMBOL vmlinux 0xec074031 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xec237e4f xps_needed +EXPORT_SYMBOL vmlinux 0xec2879e5 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xec2b8a42 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xec2cc45e inc_node_page_state +EXPORT_SYMBOL vmlinux 0xec2e1c8f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xec372681 seq_read_iter +EXPORT_SYMBOL vmlinux 0xec41716a qman_alloc_fqid_range +EXPORT_SYMBOL vmlinux 0xec4bf62d fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec73d8d2 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xec7410d8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xec7b3076 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0xec8374f2 param_set_charp +EXPORT_SYMBOL vmlinux 0xec84c166 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xec889dc6 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0xec9bca00 kobject_set_name +EXPORT_SYMBOL vmlinux 0xeca81f1a unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0xecb36527 get_cached_acl +EXPORT_SYMBOL vmlinux 0xeccc87b3 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xecdaf01d remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecef2ae3 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xecf348ce path_has_submounts +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xed00c4fb acpi_os_printf +EXPORT_SYMBOL vmlinux 0xed043eff of_dev_put +EXPORT_SYMBOL vmlinux 0xed0f4a3b netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0xed162d5f pci_disable_msi +EXPORT_SYMBOL vmlinux 0xed1d2fcb tty_register_device +EXPORT_SYMBOL vmlinux 0xed55f929 acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0xed5fd715 generic_file_open +EXPORT_SYMBOL vmlinux 0xed69c067 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xed6e8cf0 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xed7d855f __d_drop +EXPORT_SYMBOL vmlinux 0xed84b2ae fput +EXPORT_SYMBOL vmlinux 0xed86986e pcim_pin_device +EXPORT_SYMBOL vmlinux 0xed8a2d95 memset64 +EXPORT_SYMBOL vmlinux 0xeda06105 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xeda6d618 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc82295 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xedc887da tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xedceb745 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xedcf0a5b dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0xeddd0130 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xedfdc22b blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee4191cd netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0xee4272cb tcp_read_sock +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee735109 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xee75e827 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xee7d7deb gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee89d810 ethtool_notify +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9b1b09 param_get_charp +EXPORT_SYMBOL vmlinux 0xeea91c51 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xeeacd4f3 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0xeead38cb backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xeeb427a8 tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0xeecf15e1 of_find_backlight +EXPORT_SYMBOL vmlinux 0xeeff6bee ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0xef007d77 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xef1f1da7 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xef37e70c netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0xef419846 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xef447ffa of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xef5c2b2e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xef5d4298 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xef8ac53d qcom_scm_restore_sec_cfg +EXPORT_SYMBOL vmlinux 0xef8e0978 vfs_getattr +EXPORT_SYMBOL vmlinux 0xefac4b4a mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefb61bfb cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xefc19b11 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xefcea2e7 acpi_warning +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefd63552 proc_create_mount_point +EXPORT_SYMBOL vmlinux 0xefe4c671 sock_pfree +EXPORT_SYMBOL vmlinux 0xefe4f679 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xefee932c acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xeff608e0 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf00b5558 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf00b9af3 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0xf0126829 dma_dummy_ops +EXPORT_SYMBOL vmlinux 0xf02aa937 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xf03703b1 param_set_ushort +EXPORT_SYMBOL vmlinux 0xf044b726 flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0xf049c8e3 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xf04b9fce ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xf05ba494 input_release_device +EXPORT_SYMBOL vmlinux 0xf05fd753 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0aadb8d nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xf0b2419f cmd_db_read_aux_data +EXPORT_SYMBOL vmlinux 0xf0b553e9 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xf0c1e5d3 xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0xf0e59661 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xf0ecd1c3 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf0ed4317 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf113a1ab ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xf114205f vfs_mkobj +EXPORT_SYMBOL vmlinux 0xf1408b37 netif_rx +EXPORT_SYMBOL vmlinux 0xf14f3579 phy_validate_pause +EXPORT_SYMBOL vmlinux 0xf159b2e9 md_update_sb +EXPORT_SYMBOL vmlinux 0xf164db19 of_translate_address +EXPORT_SYMBOL vmlinux 0xf18300ad logic_inb +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19ff71d blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0xf1a30eaa create_empty_buffers +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1da541e xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e94db2 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2003f81 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xf21017d9 mutex_trylock +EXPORT_SYMBOL vmlinux 0xf219300c xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf22a8d83 profile_pc +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2593be0 pci_enable_device +EXPORT_SYMBOL vmlinux 0xf2669a2c imx_scu_irq_register_notifier +EXPORT_SYMBOL vmlinux 0xf26a14b8 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0xf26df2e9 page_pool_release_page +EXPORT_SYMBOL vmlinux 0xf26eda6d flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xf2705d8b ucc_fast_init +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf29403e5 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xf294d130 of_parse_phandle_with_args_map +EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xf2a8ff80 mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0xf2ac3346 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c8818c bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf2cf7542 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2e6cdd2 mr_fill_mroute +EXPORT_SYMBOL vmlinux 0xf2f0035d cdev_add +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf2f70c25 qman_fq_fqid +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf31ac18c get_tree_single +EXPORT_SYMBOL vmlinux 0xf31fccd1 release_pages +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3688d89 udp_poll +EXPORT_SYMBOL vmlinux 0xf37257e4 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38e06f5 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0xf38f5c7a flow_rule_match_control +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3918522 qman_retire_fq +EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3b57fb2 mii_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xf3d37f2b tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0xf3d43527 bdi_put +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f964c4 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf3f97845 stream_open +EXPORT_SYMBOL vmlinux 0xf4006bdf neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf40e7a73 __xa_alloc +EXPORT_SYMBOL vmlinux 0xf4100f53 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf43d2caa acpi_remove_interface +EXPORT_SYMBOL vmlinux 0xf44a6976 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf45e6451 register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xf46cc03e of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf479625a bd_abort_claiming +EXPORT_SYMBOL vmlinux 0xf4813e7b blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xf4965f63 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xf4a4e09b dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0xf4b2b86e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xf4b736c7 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bd1c9e blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfa5ab __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4db4123 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5089c56 ucc_of_parse_tdm +EXPORT_SYMBOL vmlinux 0xf529978d dec_node_page_state +EXPORT_SYMBOL vmlinux 0xf539edb1 __alloc_disk_node +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf58a9ec6 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0xf591753d nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0xf5c40882 file_path +EXPORT_SYMBOL vmlinux 0xf5c50f8a generic_block_bmap +EXPORT_SYMBOL vmlinux 0xf5cc2b97 __ps2_command +EXPORT_SYMBOL vmlinux 0xf5de807e uart_resume_port +EXPORT_SYMBOL vmlinux 0xf5e5a87b hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xf5e72eb2 seq_open_private +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5e92744 md_write_start +EXPORT_SYMBOL vmlinux 0xf5f68ac4 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xf605375a rtnl_create_link +EXPORT_SYMBOL vmlinux 0xf62c39fe ucc_slow_graceful_stop_tx +EXPORT_SYMBOL vmlinux 0xf62e15b2 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xf634b4a8 mod_node_page_state +EXPORT_SYMBOL vmlinux 0xf63a79a5 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf64fb724 skb_tx_error +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf68147bd phy_read_paged +EXPORT_SYMBOL vmlinux 0xf681acfc hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf699e940 generic_update_time +EXPORT_SYMBOL vmlinux 0xf69b8c95 _dev_emerg +EXPORT_SYMBOL vmlinux 0xf6ca9f09 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf6d7c776 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xf6e3b8f9 dquot_file_open +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ef0434 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf718a12a input_setup_polling +EXPORT_SYMBOL vmlinux 0xf71cc065 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf73d1124 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xf74150ff param_ops_byte +EXPORT_SYMBOL vmlinux 0xf74d2ef3 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf754eed2 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7606c6c neigh_update +EXPORT_SYMBOL vmlinux 0xf761aaed __phy_write_mmd +EXPORT_SYMBOL vmlinux 0xf765acf3 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0xf76843b5 qcom_scm_pas_supported +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf78993e1 ip6_frag_next +EXPORT_SYMBOL vmlinux 0xf7901926 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xf7da6e6f acpi_unload_table +EXPORT_SYMBOL vmlinux 0xf7ea6311 qman_p_poll_dqrr +EXPORT_SYMBOL vmlinux 0xf7ee5924 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xf7f05c17 fman_port_use_kg_hash +EXPORT_SYMBOL vmlinux 0xf7f10781 kthread_blkcg +EXPORT_SYMBOL vmlinux 0xf7fa4996 vme_lm_request +EXPORT_SYMBOL vmlinux 0xf7fe44c9 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xf8057469 bio_devname +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf8171c3d unlock_rename +EXPORT_SYMBOL vmlinux 0xf81c9bda eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0xf82417a9 of_get_next_child +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf838dbb9 migrate_vma_setup +EXPORT_SYMBOL vmlinux 0xf83a8f6f vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf84fc1a8 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xf87a521a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xf88474eb vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf88f315b xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0xf88fff56 kobject_put +EXPORT_SYMBOL vmlinux 0xf8909133 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xf8931c4b simple_readpage +EXPORT_SYMBOL vmlinux 0xf8947a4c mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xf8967ae1 rtc_add_group +EXPORT_SYMBOL vmlinux 0xf8b4496d sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0xf8b4da82 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf8c0f4bd t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8e51620 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xf8e8cdb9 component_match_add_release +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf8f886e9 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf91b89ab fman_sp_build_buffer_struct +EXPORT_SYMBOL vmlinux 0xf91bfadb dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0xf93aae46 __arm_smccc_smc +EXPORT_SYMBOL vmlinux 0xf93f214b inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf94282e9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xf946c491 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf95c619b acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xf970fb8a input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf97dfa4b sock_efree +EXPORT_SYMBOL vmlinux 0xf980e5c6 watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0xf99c13ec page_pool_destroy +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9bcdb31 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xf9be3198 param_get_int +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xf9fffa6d arp_xmit +EXPORT_SYMBOL vmlinux 0xfa04a1dc dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xfa08f4b8 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xfa22ab8d pci_release_region +EXPORT_SYMBOL vmlinux 0xfa297415 acpi_map_pxm_to_node +EXPORT_SYMBOL vmlinux 0xfa45cac6 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xfa4977fb xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa60d05f skb_dequeue +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa89777a param_get_ushort +EXPORT_SYMBOL vmlinux 0xfa8eaca4 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xfabbc6a7 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xfabfdd46 security_sock_graft +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad51fec rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0xfaef1685 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0xfaf37199 pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0xfb0f424d __serio_register_driver +EXPORT_SYMBOL vmlinux 0xfb2f20c9 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0xfb332781 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xfb382046 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb3ef3dd __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xfb442841 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb62239c netif_napi_del +EXPORT_SYMBOL vmlinux 0xfb6968d0 alloc_pages_vma +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb746cc9 down_killable +EXPORT_SYMBOL vmlinux 0xfb7ee6bf skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xfb877079 inet_sendpage +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbbc10b0 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcb2b09 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0xfbdff281 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xfbe4b175 qman_create_cgr +EXPORT_SYMBOL vmlinux 0xfbe8ee28 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0xfbfcf2bb netif_device_detach +EXPORT_SYMBOL vmlinux 0xfbfe0e86 ucc_fast_free +EXPORT_SYMBOL vmlinux 0xfc0045dd iput +EXPORT_SYMBOL vmlinux 0xfc336d2e __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc4152fc ec_read +EXPORT_SYMBOL vmlinux 0xfc52abc7 qcom_scm_pas_shutdown +EXPORT_SYMBOL vmlinux 0xfc5c46e2 acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0xfc622018 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0xfc70cfa5 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xfc7142ab __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xfc7432ac scsi_remove_host +EXPORT_SYMBOL vmlinux 0xfc77ce1b sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xfc7e2596 down_trylock +EXPORT_SYMBOL vmlinux 0xfc881b89 fman_port_get_hash_result_offset +EXPORT_SYMBOL vmlinux 0xfca49db0 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0xfcb3cb9d crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc697f3 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xfcc9c2bb generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xfccc3d06 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcd7682a sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfced2b65 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xfcf1d066 vme_master_request +EXPORT_SYMBOL vmlinux 0xfd259d0a key_alloc +EXPORT_SYMBOL vmlinux 0xfd264343 put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0xfd2660cb key_unlink +EXPORT_SYMBOL vmlinux 0xfd3c005c sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xfd3e3130 fs_lookup_param +EXPORT_SYMBOL vmlinux 0xfd4c4905 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xfd5f6e17 scsi_device_get +EXPORT_SYMBOL vmlinux 0xfd60919c tcp_poll +EXPORT_SYMBOL vmlinux 0xfd6f1c7b inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0xfd7933d7 vfs_fadvise +EXPORT_SYMBOL vmlinux 0xfd92b46a dquot_get_next_id +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb51116 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xfdcb4ed3 acpi_os_get_line +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdd7794b give_up_console +EXPORT_SYMBOL vmlinux 0xfdf70093 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0xfdfa367e fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe08984e __find_get_block +EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update +EXPORT_SYMBOL vmlinux 0xfe252d61 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfe2e9bd0 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xfe327255 arp_create +EXPORT_SYMBOL vmlinux 0xfe33b923 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xfe4095a7 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe574ca5 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6daf17 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0xfe80f01d init_net +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9478e6 inet_gso_segment +EXPORT_SYMBOL vmlinux 0xfe96e3b5 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeb3976e inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xfeb41a0f key_type_keyring +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfec16211 skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0xfeca29f5 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0xfecb2af8 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xfed5c543 scsi_host_busy +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeeabf8b get_task_exe_file +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff221464 to_nd_btt +EXPORT_SYMBOL vmlinux 0xff240856 genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xff3bc402 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xff4643f0 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xff52922f sock_bindtoindex +EXPORT_SYMBOL vmlinux 0xff5b56e3 mmc_get_card +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7ea1c6 arp_send +EXPORT_SYMBOL vmlinux 0xff876054 elevator_alloc +EXPORT_SYMBOL vmlinux 0xff87cd18 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xff999fc0 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xff9c4b56 ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0xffaa02c2 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xffb7c514 ida_free +EXPORT_SYMBOL vmlinux 0xffbbdf58 rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0xffbfb8fe inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xffc4a366 cdev_device_add +EXPORT_SYMBOL vmlinux 0xffcdc4d1 path_is_mountpoint +EXPORT_SYMBOL vmlinux 0xffcfdf59 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0xffecd42a input_set_keycode +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0xfff84673 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xffff8df2 alloc_anon_inode +EXPORT_SYMBOL_GPL crypto/af_alg 0x00e4a123 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x12b0beaa af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0x14f7eda8 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x1dd30890 af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x287df4a0 af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0x2cc2dfa7 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x2fd7f079 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x38c9f18a af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x617b5bde af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x7cc68d58 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x8140ffd6 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x89c81ebf af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x908c62e6 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xc1795834 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0xc86f85d7 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc8e913ea af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xe80b7302 af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0xf37203a7 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x1369816c asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x281d4f92 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x11662d31 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x719b7423 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x85e2d279 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xba2156de async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x077acd4d async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x13a2a82d async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2254dd6f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe1bee6bc __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x385dde3a async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbb274285 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdc8dee13 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x235b348e cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x50bed3e6 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0bdc3306 cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x1e38faf5 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x23173481 cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x26463d20 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4be551a8 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5275f3f3 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x557931a6 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x70569bc4 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x74ea5ee6 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x87d4bd03 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x8cbcc4ee cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x9ec63ac2 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xafa50687 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x1a03ec4e crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x1c05dacd crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2f05986f crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x6c6d2638 crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x8ee95429 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x941d3275 crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xa2633698 crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xb7650f5c crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xcb432313 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xcc257906 crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xe4563f17 crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xef7c6461 crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xfc924419 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xc1d905ad simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xdaeaa398 simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xdd31686a simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xf662f396 simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x3959a1db serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x1b2e4ed8 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x85490bd9 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x8b46cf4c crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x720547b4 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x14387a39 acpi_nfit_ctl +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x2d9f6437 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x31ca0f2b acpi_nfit_desc_init +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x4205a4da __acpi_nvdimm_notify +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x4639bcda acpi_nfit_shutdown +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x499bbf57 nfit_get_smbios_id +EXPORT_SYMBOL_GPL drivers/acpi/nfit/nfit 0x72263364 __acpi_nfit_notify +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xe9362042 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xbfe598ed sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0xed8d0ac8 __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x1c2e7779 __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x22ffcf46 __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x4282e77e __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x8129c183 __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x33057df4 __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x436c8a78 __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6f2df6a2 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x782b3d3c __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe87eff2a __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xffde47a2 __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x6f916d66 __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x852efcf1 __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x16dc9fd8 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1f8de2b6 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x24d36e41 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x34600a40 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3bb7657b bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x534fba3d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5765286d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b343be1 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5dcb95e6 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6d5444b5 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7dc2598b bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x832f7545 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88e07f92 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fe01af5 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97076699 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa872903f bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbd74d097 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc066d931 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xca0d4c15 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdd76ce4f bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec12a9a9 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec652161 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xee55998e bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf1dae6f7 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x091b1c91 btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0d04cdfe btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x373dded0 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x508a9fdc btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7da05833 btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd0786fd4 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf2c1240f btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfac4da0f btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x040b96af btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0727261e btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1f9fe309 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x20a2b367 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3570dba2 btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3b0fbd65 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4586b5a0 btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5882ea7d btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6b3df131 btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x75275d47 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa2057282 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xab363396 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb0bb9482 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb956c598 btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe4649ebe btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xea70e7d2 btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf068c366 btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfa7e7302 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0ac5de27 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x11038aac btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x11c2734e btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x13b38851 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x405e1f5c btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4bd6ac58 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x59b17f8e btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5de097c1 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x91a933cf btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf55acc22 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfd716fd5 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x9e25407d qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x9e3cc5f6 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xa4bf23c0 qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xb3b3ab6c qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xe1d65df4 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x1aff79b9 btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x622d6112 btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x8b99f9d9 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xe35d7843 btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xe64b51ae btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x8d22e925 h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xa12b5fc6 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xa358545e hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xd51658e7 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x1a0b0249 mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x2efc53d0 mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x391db2c0 mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x4f26f622 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5048de71 __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x533799c3 mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x71068f5a mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7484f87a mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x755b0513 mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x8102c87f mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x95f9db2a mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9c84bb3a mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9c93ac8f mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa70e351b mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xb946b8b7 mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbaabf8d9 mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbf3aeeb6 mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbfdb3d33 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc60096fa mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xcd839ec4 mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xe38e743e mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xe959166f mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x1d606d79 moxtet_device_write +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x8186c523 moxtet_device_read +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x9564aa7a moxtet_device_written +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x9a42aa72 __moxtet_register_driver +EXPORT_SYMBOL_GPL drivers/bus/sunxi-rsb 0x201a258d __devm_regmap_init_sunxi_rsb +EXPORT_SYMBOL_GPL drivers/bus/sunxi-rsb 0xd1730d3d sunxi_rsb_driver_register +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0x259c6a72 meson_clk_phase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0x875b274f meson_clk_triphase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/sclk-div 0xce28c471 meson_sclk_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0000139e clk_alpha_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x08f0cc30 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x09020683 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d10c3c4 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d678ab9 qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e5f8a53 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e98da3d clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0f52415a qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x17d44071 clk_alpha_pll_hwfsm_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1987883d clk_alpha_pll_fixed_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1d58ac63 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x272f3204 clk_alpha_pll_fixed_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a9c7452 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2adddb45 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2b0d957d clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2cae96b3 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x30bbf987 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x310b6341 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3747af55 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x395868a1 qcom_find_freq_floor +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3dfc2dc5 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x405d394a clk_alpha_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x418e9cfd clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4b0ed6da clk_ops_hfpll +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5111f2ad clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x520df3b7 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x57172323 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5a6ae327 clk_alpha_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5e6abb22 mux_div_set_src_div +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x615dbb77 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x631939a9 clk_branch2_aon_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x63ee9aa4 clk_alpha_pll_fixed_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6596a109 qcom_cc_register_sleep_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x66922845 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x68199825 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6af41b8b qcom_pll_set_fsm_mode +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7019378d clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x766e9f87 clk_regmap_div_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x787e8234 qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x78b81ea0 clk_rcg2_floor_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7a7d500f clk_fabia_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7e66fd9e clk_regmap_mux_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8b55eac4 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x91c41c9f clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x97488818 clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9c8854a1 clk_alpha_pll_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9d909edd clk_gfx3d_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e33f365 clk_trion_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9f241baa clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa4c30fa2 qcom_cc_probe_by_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa6f08f9a clk_trion_fixed_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaa403ee8 clk_alpha_pll_huayra_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xadc2751b clk_alpha_pll_postdiv_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xb09ba7ac qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xba961aa7 clk_dp_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc150d434 clk_alpha_pll_postdiv_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc5bdfa11 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xce340fb8 clk_alpha_pll_regs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcf422970 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd7ab6782 clk_alpha_pll_postdiv_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xdc014e02 qcom_cc_register_rcg_dfs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xdffcf609 qcom_cc_register_board_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe6e14638 clk_alpha_pll_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe816a036 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xec88bfe0 clk_lucid_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x096aa17b sprd_div_helper_recalc_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x0a3ec278 sprd_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x14212841 sprd_div_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x1ca519ca sprd_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x37e40b55 sprd_clk_regmap_init +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x4cad4f51 sprd_div_helper_round_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x4f93d75f sprd_mux_helper_get_parent +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x597905e4 sprd_sc_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x6b8639b9 sprd_div_helper_set_rate +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x911aa4a0 sprd_mux_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0x9925914a sprd_mux_helper_set_parent +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xaf833f64 sprd_pll_sc_gate_ops +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xddecd266 sprd_clk_probe +EXPORT_SYMBOL_GPL drivers/clk/sprd/clk-sprd 0xe305cb73 sprd_comp_ops +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x28935163 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x2b9eee17 counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x2d801de0 counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x41f34d63 counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x48e99ed5 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x4a874253 devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x529f425c counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x570aa1a6 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5d2a8e52 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x6028e7bc counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x67d4b1e9 counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x71fe037d devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xb3efce61 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x3a1a3979 ccp_version +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x5965d306 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x0d9b5f7a hisi_qm_create_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x13f28fd5 hisi_qm_dev_err_init +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x1c915460 hisi_acc_sg_buf_unmap +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2638857e hisi_qm_start +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2c402b6c hisi_qp_send +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2da9a20b hisi_qm_dev_slot_reset +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2f1f5099 hisi_qm_reset_prepare +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x2fe56611 hisi_acc_create_sgl_pool +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x38baf112 hisi_qm_start_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x3f7f6ee5 hisi_qm_sriov_disable +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x4db27037 hisi_qm_dev_err_detected +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x568f60cc hisi_qm_alloc_qps_node +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x5aec7866 hisi_qm_stop +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x623824ce hisi_qm_free_qps +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x66d34cff hisi_qm_debug_init +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x71c33000 hisi_qm_debug_regs_clear +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x7e359ae4 hisi_qm_stop_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x841a9ab4 hisi_qm_sriov_enable +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x8ec14c0a hisi_qm_reset_done +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x9495bf21 hisi_qm_get_vft +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x9cafae30 hisi_acc_free_sgl_pool +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x9cd5001a hisi_qm_release_qp +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x9f04f78a hisi_acc_sg_buf_map_to_hw_sgl +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0x9fa885a8 hisi_qm_dev_err_uninit +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xacf017e0 hisi_qm_init +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xb108fe3f hisi_qm_sriov_configure +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xc64cb7ca hisi_qm_uninit +EXPORT_SYMBOL_GPL drivers/crypto/hisilicon/hisi_qm 0xde835891 hisi_qm_get_free_qp_num +EXPORT_SYMBOL_GPL drivers/crypto/marvell/octeontx/octeontx-cpt 0x32e43048 otx_cpt_uc_supports_eng_type +EXPORT_SYMBOL_GPL drivers/crypto/marvell/octeontx/octeontx-cpt 0x8452e314 otx_cpt_eng_grp_has_eng_type +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0x80d0b7b7 dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dax/pmem/dax_pmem_core 0x077c4414 __dax_pmem_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xd539ea50 dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xf131dbe9 dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x045444ba dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x16314f68 idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2b03d5c1 idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x81e28d69 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x84ba52c7 do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd1c9b04d dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xfab81d9c do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x05fe78bf dpdmai_get_rx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x0cf99c2e dpdmai_destroy +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x2012e188 dpdmai_open +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x37ed1e8c dpdmai_close +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x3b38cb26 dpdmai_get_tx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x5e0edaef dpdmai_set_rx_queue +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x71f91caa dpdmai_get_attributes +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x8afde869 dpdmai_disable +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0x9b4047c7 dpdmai_reset +EXPORT_SYMBOL_GPL drivers/dma/fsl-dpaa2-qdma/dpdmai 0xd6d5485b dpdmai_enable +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x22c3ee40 fsl_edma_xfer_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x26edb613 fsl_edma_tx_status +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x338a63f8 fsl_edma_setup_regs +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x4635f2af fsl_edma_issue_pending +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x66ea3dbb fsl_edma_prep_dma_cyclic +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x74b93fc2 fsl_edma_free_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x7da5fb4a fsl_edma_pause +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8f2195d8 fsl_edma_prep_slave_sg +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x90c17d68 fsl_edma_cleanup_vchan +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x9228d01e fsl_edma_disable_request +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xa23941d3 fsl_edma_free_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xac850d06 fsl_edma_resume +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xc2033015 fsl_edma_alloc_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xcc248d73 fsl_edma_slave_config +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xec5eadad fsl_edma_terminate_all +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xedad2a1c fsl_edma_chan_mux +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x4fe16661 hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x778d2e6a hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0x7e3e0f55 get_scpi_ops +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x0e7b7015 stratix10_svc_done +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x41d5ad1c stratix10_svc_allocate_memory +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x50f5368a stratix10_svc_free_channel +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x595b630e stratix10_svc_free_memory +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0x82043a8b stratix10_svc_request_channel_byname +EXPORT_SYMBOL_GPL drivers/firmware/stratix10-svc 0xd3df684d stratix10_svc_send +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xa7c17de5 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xe6bd6f15 alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0abb0f7a dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x2285824f dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x397c297f dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x45cc8437 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x51e66590 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x69b33771 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x71e8640a dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x74d93be8 dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x98453ab8 dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa088cf37 dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa2caede3 dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xcd08a660 dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd247d76e dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd59a4a11 dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd9ae62c4 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe1eb8bf3 dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe37cd2b9 dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe57d26ce dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xea0696ad dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x1fc787ea fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x3689ceab of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4b6ede99 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x513c3585 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x7123dd3f fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x862c7794 of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x9bdf73ba fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb8e86a9d devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc3e7eff7 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc4bf73b6 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xcd17cb3e fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xdbbbea09 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x0308628a fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2c35b1ce fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x45e57f83 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5ae95dca fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x84d325f4 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x85dfbb94 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8d183bce fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x90d7bb22 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xbc9485f9 fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xcee0add1 fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xdc1f2760 fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe70e3909 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xfef0d5da devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x645b7996 fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x6e3e556c fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x7b5b75fa fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xb7d0ee37 fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xb986d3fc devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xe0fda1a3 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xf1db4d19 fpga_region_free +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x2a0784cb fsi_get_new_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3a93847e fsi_slave_claim_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3d365274 fsi_master_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x4ca5e3b5 fsi_driver_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x54532e8a fsi_driver_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a57d574 fsi_free_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5ef8d3ae fsi_master_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x78060f23 fsi_slave_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x7fe4e7fa fsi_bus_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x824b4830 fsi_device_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x9faa47bf fsi_device_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xc002ec51 fsi_cdev_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xce22aee2 fsi_slave_release_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xd942f235 fsi_slave_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xe10e6dd8 fsi_master_rescan +EXPORT_SYMBOL_GPL drivers/fsi/fsi-occ 0x0ca577f9 fsi_occ_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x3115bb54 sbefifo_parse_status +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x356d303a sbefifo_submit +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x57c4a6a7 gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x5ee66e61 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x89eede43 gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xab178a11 gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xf59bc092 gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x04d4e28a gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x2405c545 gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x28f5cced gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x322507d8 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x6558b733 gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x655b0773 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xcdbbc844 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x0d110780 analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x0e3f8658 analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x3ee0dd60 anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x60f35d0f analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x676d6c44 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x8c729e03 analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xaf959f56 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xbf43797f analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xc384fde5 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x09340e05 dw_hdmi_set_channel_count +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x094f6fc5 dw_hdmi_phy_i2c_set_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x0af99949 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x11f6315d dw_hdmi_set_plugged_cb +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x1461e227 dw_hdmi_set_channel_status +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x157e02b6 dw_hdmi_phy_reset +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2d1c0e80 dw_hdmi_setup_rx_sense +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2fac9436 dw_hdmi_set_channel_allocation +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x316212a8 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x42926f4a dw_hdmi_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x4a9b174f dw_hdmi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x5c719495 dw_hdmi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x6712b5a7 dw_hdmi_phy_gen2_txpwron +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x7d8a3aee dw_hdmi_phy_i2c_write +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x822671f9 dw_hdmi_set_high_tmds_clock_ratio +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9b44a60b dw_hdmi_phy_gen2_pddq +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd6968220 dw_hdmi_phy_setup_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xdafa1790 dw_hdmi_phy_read_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xf5922009 dw_hdmi_phy_update_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x0d667204 dw_mipi_dsi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x41361ae4 dw_mipi_dsi_set_slave +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x42ac3b2e dw_mipi_dsi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0xaffd1f01 dw_mipi_dsi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0xee99b508 dw_mipi_dsi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x03e8c35c drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1bfa3f4c drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x246717c9 drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3052744a drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x30ac4af2 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3314b593 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3b4b2934 drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x41b97896 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x436c7518 drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x440fd692 drm_of_component_match_add +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x455eae66 drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x59d90888 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5cff5483 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5dfe5ac0 drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6898ff95 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x69b63f10 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6c87962c drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7135c588 drm_of_lvds_get_dual_link_pixel_order +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x73ce30a2 drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7b8be07b drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x81f9617b drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x824166f8 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x832eab74 drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x84408044 drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x87c3e201 drm_of_find_panel_or_bridge +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8de7d8a6 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9924a15c drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa3dc8128 drm_of_encoder_active_endpoint +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb1a75843 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc541b6e0 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcf646726 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcfa755f1 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xda35eb97 drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdf04ceb1 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe3c8ac71 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf68717c4 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfb5f49d9 drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x0a7a3b35 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x2eff9e2f drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x3e0fd483 drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x448e1fc6 drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4dae18dd drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4f15625d drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x7d9dd98e drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x9ae3bc40 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xacca2d3e drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xee441e0d drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xfa8e3432 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xffc7eb12 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x203b7a85 meson_vclk_vic_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x2c73cfcf meson_venc_hdmi_venc_repeat +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x8f2b677e meson_vclk_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xab5bee2f meson_venc_hdmi_supported_vic +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xc8b08708 meson_venc_hdmi_mode_set +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xc8cd3dd2 meson_vclk_dmt_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xfd34888c meson_venc_hdmi_supported_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/pl111/pl111_drm 0xb4679e21 pl111_versatile_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x7a48d6b2 rcar_cmm_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x8ea8ea4f rcar_cmm_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xa6539444 rcar_cmm_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xb6f1f73e rcar_cmm_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x06634354 rcar_lvds_clk_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x2683af20 rcar_lvds_clk_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x713d6536 rcar_lvds_dual_link +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0x20ccb707 vop_component_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xd79b9793 rockchip_rgb_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xfead7585 rockchip_rgb_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x486b4897 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6726334f ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xdc26ae11 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x00639cd8 __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x04091867 gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0442541b __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0682d0d8 gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0ec59281 gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x10387269 greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x17b1f1e3 gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1a5e218a gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1e0e0719 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1f2805e3 gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2b29857f greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2f2edfd4 gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x358cc534 gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x36e30b85 gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3d52d107 __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ef75a08 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4059b4fc gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5657b8f0 gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5a1e53b7 gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5dda34af gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6414180c greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6867cfda gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7de41fc2 gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7eb2b9bd gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8256f332 gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x82bd405f greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x86ec2d10 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x87e5d4f5 gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8e248a7d gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8e900eab gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x931a1209 gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x976ee2d9 gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9ca6201c gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9eed37c6 gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa006bbed gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa1c66e8f gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb73f2996 gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc2a28320 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc397c10a __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcb8c92cd __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd94148e2 gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xecc51330 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf7df929e gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00ddb9ce hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x029c8eb0 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x031d4e6b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0940f596 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0dc0a02a hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0dceeeb2 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x170c39b5 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21050cde hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x218096f4 hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21e5bfb3 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x308d5f7b hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33058550 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3b88017b hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3d110288 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x41b0701a hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47745543 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e191977 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e982dbb __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55a61cf8 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c238f9c hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x635256cf hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x674d9dfc hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x698dc46e hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7671732e hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8287e75d hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8c8714fc hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ed49ac6 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c6b8fcb hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa971035f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaefd55b0 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xafacc47a hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb802d5be hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb91fc7e4 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbabe5fe5 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb8491c4 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2115d7a hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd667da72 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe0e762ab hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec011d8a hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec06ff5c hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf60aed70 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7a49241 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfb1c0715 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfb4979c7 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x482361e6 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x752d5863 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x9765631b roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc10a70d9 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc9b4ef3e roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd9080a52 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf758cec1 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x043a2d8b sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x142d86f5 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x369cb90d sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x41c7e53c sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x75090623 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x82eda480 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x86f427ff sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x93669ff6 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9789a238 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0x57706f9a i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x8f7e7497 uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x89f788e2 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc006e62e usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b102a18 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0b82e0e6 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x16c85636 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1ab0c9e3 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x29818aaa hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2a35b923 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x30733863 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x590c1418 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x601e15b5 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x66e44d96 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x75b936cc hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x980790fe hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4f83c06 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa7634a3c hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbdd50d47 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbeb7ce48 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc317d1ab hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc49e49f1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x3fc8fec8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4f8d063a adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xae57a993 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xe5821ffc ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x11fa9bb8 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x32bd7754 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4aeb6cce pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5231b6f2 pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x55a39a21 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x671cb1bd pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x681eb7c0 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x895e9c62 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8fda9034 pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x901f8a24 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9400ddbf pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb240c390 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb54f5d21 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb704b2e3 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd45f1456 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9748c00 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xea009cec pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf3643150 pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfa1abcb5 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x122aa5ee intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x5cb840d4 intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6f3022d1 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x85064164 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xaa1ce67a intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xcd81c2cb intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf04cef2b intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xf8deaa31 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfe7b1633 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x5975332d intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x93c8c423 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x949db055 intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x13596e68 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x1697d5f2 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3dab0973 stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x4b662e05 stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x71818af3 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xb9ffacb9 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc8b3f89c stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd54d44f5 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xf86ea90e stm_source_register_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x67a69559 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x7442dc12 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x8482dcf0 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x890b819d i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd376b9b7 i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xffce8214 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x0a3482bf i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x0df71232 i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2f4a4dd3 i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2f4af468 i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x45425cd1 dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x4b107a5b i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x550df05c i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x5ea349a6 i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x62c986b0 i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6795019d i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6eec9d30 i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x711692ca i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x80fcd749 i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x857617ad i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9d1a3a39 i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa1a13daf i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa5f5d1b3 i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb07992ec i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb933cf18 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xbbb2ede2 i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xca1fa76c i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xcacf9e0b i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd75a706e i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd8a3bbf7 i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf65aa9a6 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x43889079 adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0xaaf0e0d3 adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x48bbf16d bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x4bc36a56 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x8c4fecb5 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xae61bc12 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x06ac2e22 mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xd778594e mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xf5aaad4d mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xa93eeef2 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xe54231a1 ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x9ca63b05 ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0xf6eeba35 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x08f05812 ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0f6afd68 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2ea6cf23 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6593918c ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6b4b926b ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7519c6ef ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8721cf2d ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9e06073e ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd21580b2 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd9604f82 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf61effd3 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x212ea50a devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x91afb565 adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x6c32f251 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x94da80fc iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9acf62ab iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe3a33eca iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x15da1d53 iio_dma_buffer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x24fe414d iio_dma_buffer_block_done +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x4f9605df iio_dma_buffer_exit +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x55a4b315 iio_dma_buffer_set_bytes_per_datum +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x67d562ba iio_dma_buffer_request_update +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x7404a319 iio_dma_buffer_data_available +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x82903100 iio_dma_buffer_read +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x94234eb9 iio_dma_buffer_block_list_abort +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x9c5d28f3 iio_dma_buffer_set_length +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xaa1245f2 iio_dma_buffer_init +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xe49e485c iio_dma_buffer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xfc2adb92 iio_dma_buffer_release +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x18fbe904 devm_iio_dmaengine_buffer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x27367f2f iio_dmaengine_buffer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x50ea9f48 iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xcd8cec75 devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x68bf23b7 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x95ae0139 bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x4570c9a7 cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x57b2af3e cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x7ac6ffab cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x843a8827 cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x8dbb3dfd cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x98a6758e cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xca9db81d cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xe0dedac6 cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xedc5b5b7 cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x1f2650fc ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x21f1c16d ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x6e5b9d5c ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x76bef4b1 ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x395d67c4 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x9182574c bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xb4c5062e bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x14f39aad fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x4ad9d87f fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0xb82cfe7e fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x33dbbe9b adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3af01292 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x41d6dd51 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x48d43123 __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x65bded09 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x65edb65e adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x806b4e98 __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9559e5a3 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9c5f11ea adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaaa7353b __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb0a0d876 devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc8fcd135 devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcac1fcef adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdd763e69 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdfca4ed5 __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0xfefea4da bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0x11062ffa fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x5ce3af32 inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0xdce097d4 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0572b447 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x079cadad iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x098c05c8 iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f724c9f iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x15fbbf4a __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1c801a1d iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fbe1b09 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2af71888 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d4cd575 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x324ba545 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3712ae93 iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x390b1970 iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e482898 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3eb8eb38 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3f0a0e6a iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x40d9ce8a iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4604527f iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x475fdda1 iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dce7dd4 iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x50162669 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd3c47d iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6913ca41 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6cd28575 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x723778b0 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x79694322 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x871d27d4 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8a570347 iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8d50171e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f600ec7 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92215d42 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c425722 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa3ac1149 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4c15027 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7854c84 iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xac5f87d3 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f26c95 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc5bf033b iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccd063b6 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd4c5215 iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd1c40076 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3cf23af iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6a5d69e iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd7439366 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfada73b2 iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xfc055861 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x91f1cb88 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x672da47d zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x7a3b1996 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x7ed34285 zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc567299e zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc93684dd zpa2326_remove +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xd07c2ced zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x03d229a6 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x1349871f rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5168b0ef rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x584794d1 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x7a192ad6 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x921cb649 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xc172c9ca rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xc5e27e6e rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xd294363b rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xd5b814a2 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xed3c01c0 rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xed83923f rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xedb5c360 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x5f52fc2e input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x7f48521b matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x35b61d24 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x08421113 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x0aac3285 rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x0e50756a rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x28958682 rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x3a5f17f1 rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x437d4484 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x4b85363a rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x4ea120c3 __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xcc494240 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xd1ada63a rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xeb0cdf6d rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xedc55e00 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xf06a5522 rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5cda0019 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb97e1164 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcfa8effa cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x1464331a cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf96c5d2a cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x1f42ac5f cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x573dc347 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x21f32a6e tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x7829b4dd tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xb0afd438 tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xfaca0901 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x42026325 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7fcfcf2b wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x88a2369c wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x936e5cf9 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa4bac804 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xaedbd2ef wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb365cfb5 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbb4ad660 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc9bfef99 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xced6a426 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe122feeb wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf824a010 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0x96a3f20a imx_icc_unregister +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0xe29c0dbd imx_icc_register +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0x0b39b783 qcom_icc_bcm_voter_commit +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0x2914cec7 qcom_icc_bcm_voter_add +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-bcm-voter 0xee1a20d1 of_bcm_voter_get +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0x14558653 qcom_icc_aggregate +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0x2542f6bb qcom_icc_set +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0xe2f15d73 qcom_icc_bcm_init +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-rpmh 0xefd35052 qcom_icc_pre_aggregate +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0x81e513ad qcom_icc_rpm_smd_available +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0xe8dbdc6c qcom_icc_rpm_smd_send +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0b969da3 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3281a6bf ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4f36b3b4 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5c93c25a ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7d15c4f5 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x881f3f0b ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaa09110b ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb1bc416d ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf81a1adc ipack_device_init +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x047d5367 devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x04ebf894 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x22a840af led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2de6fad5 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5f7d7d58 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x75600223 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xbcd1b205 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xedd9234a led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x11c9e451 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x148fd16b lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1cb6bb11 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x82dc78c2 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xba6f97f8 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xbd9573ea lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc1d35ff3 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xcb3455a0 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xcd407d46 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xe19a9d0d lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfb8502f5 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15b97715 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19b88bec __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2307b422 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b46c4b6 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b793afb __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fbf8560 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33554606 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x414c7765 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5f6a4a3e __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65fb81f0 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6b1045c7 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7260fb66 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x748968f6 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7574c715 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c8a33fe __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x96bf5dba __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa353964f __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa4682eff __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xab4c5652 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb22f8879 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbf53dc9d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc00185bc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc13b483f __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc36e201d __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8feefc9 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd8da0f0e __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9f20dee __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe9c4d700 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee603d81 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5d8bf62 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf8502c64 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0f06e8ab dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1b216f6e dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x21a45e5e dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3275f656 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4c7b9829 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x58854a62 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6886aa18 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6dcef44f dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x79b0a642 dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x87d6ee2f dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8fe4f586 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x91b19923 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x99c289e3 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xc180f3db dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd9df6719 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdb27872e dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfb795213 dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdafc9fff dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x074bd77a dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1e04a4dd dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7890d535 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x890723f7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xadbefda4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf8c2590 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bdae47 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x70d65f40 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x992c521f dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0421e2b5 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x96185ec1 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x96470210 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9fe768f6 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xce3a8e32 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd815aea6 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24621ca3 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x30c37cc0 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4f477261 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5375ca71 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5cf0d0bb dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7551b46e dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b6b3af5 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9290e07a dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x932a6ffc dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa344fe73 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd51c29f1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x07bde23c cec_pin_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x08f667b9 cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x0c7ff636 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x1c1eacbc cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x1ce684c8 cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x25f82e05 cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x2ccb830f cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4076db9f cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x47363b0e cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4eac75d2 cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5b2f6ccf cec_pin_changed +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x6799503c cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x6ae3f7b4 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x76411a15 cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x781d380d cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x807afd16 cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x85969960 cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8b4fc036 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa252ea4c cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xdd24df6d cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xdf04a9a6 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe09db503 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x033da42c saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3ed23074 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x40371b8d saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x41ee08ce saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4e75c227 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7e469644 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9ad6b7dc saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xadac67d0 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xbbadf582 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd59b12a2 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2a2402f1 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2af24b79 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x50f50352 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8292c05f saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa1dd3bbf saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb98436dd saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xebad91dd saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x17995dd3 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1965b7fd smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x19890f61 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x320ecf95 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x354e8266 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3c938e52 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x41a66d8c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x557ebaa4 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b1afbfd smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc188c993 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc5bfd81e smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc6159694 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd6d24c9e smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd79760ae smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd8e6e1d1 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe12c7e43 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe5907b97 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x09b41d34 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0c31f642 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x2c413418 vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x33814bc6 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3f623848 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x64ede452 vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x67722838 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6dd84a20 vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7a1e5411 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7b6d3cac vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7db5fd5a vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7de20364 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x856bc0e8 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8ddae992 __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x90828029 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x92635181 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x951b9e1f vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9a8a3b3a vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa571f1e3 vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa78fd822 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa851a410 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb0c1b0c5 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb2fa7b5a vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb548be7c vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc043536e vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc6b8acc7 vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc72af8e9 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc88264fe __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xfca67542 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x3d815f65 vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xb2425723 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0xf0c34478 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0x3b56ec29 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x022ec7c3 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x07f84323 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0ac4cff2 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x169da2a9 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1975dbed vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1e57ea48 vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1e5c3344 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x28e607ed vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x2abfec48 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x2eb90fe9 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x30b791f9 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x48f8c02f vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x54d8d3d3 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x54ed30ca vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x55dde50f vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x62161170 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6f80b83b vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x745755e2 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x74db5b3d vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x75412e59 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x77dd73fd vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x82bcf482 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x88d39e1a vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x8996edb2 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9020a9fe vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9091dd7c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xa01d7a41 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xbd1c04da vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc4df7547 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd794e7f9 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfab05fee vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0x27f34077 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x458f379e dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x89908d57 dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xbc353541 dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xa8670ca2 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xc130dce6 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0xcbf3bb5a gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0xfe460bb4 mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0x30caeb14 stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0x379f5f7c stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xb22ec4f6 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0x0a979bd6 aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x1b8ee50f smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x03d6a658 media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0e7cb7a3 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0ef02ae5 media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x126f6b1a media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x13623688 __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1578c2a1 media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x181470b5 __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1b1330d4 media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2b3ef1fb media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2d6c6f17 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x405c335d media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x41253ebe media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x47375fdb __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x4b1c5566 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x556328d5 media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x57a4ebad media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6376fae0 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6745c5e6 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x68b995d3 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6ca9db7a media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x732612f3 media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x74447ef1 media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7efbc616 media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8c6e1fc7 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x939e6987 media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9a2b7ed2 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9ab568bc media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa382b436 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaafccf62 media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb19a372d media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb853a52c media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xbd00e227 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc17b042c media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc408036c media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc5c01cb2 media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcae6eb1c media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xce60ff44 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd7dae462 __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd90bfde8 media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xda2c9494 __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdb6ef8a3 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdbda6304 media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe65ebe27 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe87a49a7 __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xea2e1628 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xed4529bf media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x94286ff4 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0c634d42 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1bcfb136 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x26477340 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x27b4b487 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2c879da9 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x345b81f1 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x646d4e2f mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ebd01ad mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x895fc5a6 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89e338fc mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9081da3a mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x95418562 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9bd23263 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9d1a4187 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xafe1daaf mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcc483048 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd31b493e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe1f50ccb mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf03335f9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x147f87c4 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26e708e2 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x48666a38 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4f079087 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x53ba63a9 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x54a1848c saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6406cdfc saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6521646a saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x68d903db saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6ad8b501 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7234dafa saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x89af7dd5 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8b05d7e3 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa9b6cc2c saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb218f6ff saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb5489855 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe494c8e3 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xefe3a3be saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf1c2a19a saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5301762e ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9043612a ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x94161f4e ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbb05b80b ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc7161177 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe3a6c998 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xecf46893 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x295ee559 mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x648a2f18 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xa359685a mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xbd5609b4 mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xd2e064a8 mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x2615c313 vpu_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x327f98bf vpu_load_firmware +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x64c52a67 vpu_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x70432317 vpu_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x7c2e8aca vpu_ipi_register +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x9c0430ea vpu_get_plat_device +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xf4f67a00 vpu_ipi_send +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xfbf11a00 vpu_wdt_reg_handler +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x15e0242f hfi_session_create +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x17f05329 venus_helper_process_initial_out_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x1adf5a0f venus_helper_vb2_start_streaming +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x1cfb495a venus_helper_vb2_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x1ec2ed36 venus_helper_free_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x204b631a venus_helper_intbufs_free +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x24cab0cd hfi_session_init +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x24d941b0 venus_helper_init_instance +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x27b12c5f venus_helper_m2m_device_run +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x2d693ecb venus_helper_m2m_job_abort +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x2e9939a1 hfi_session_continue +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x31347a83 venus_helper_alloc_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x3b383872 venus_helper_find_buf +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x49e72657 venus_helper_set_input_resolution +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x4f3ed2dd venus_helper_intbufs_realloc +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x56c7c3ce hfi_session_process_buf +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x5bb2118b venus_helper_release_buf_ref +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x5fc3c98a venus_helper_set_dyn_bufmode +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x63a5a075 venus_helper_get_ts_metadata +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x6c578129 hfi_session_flush +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x717f3ef7 venus_helper_vb2_buf_prepare +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x71a3cd5b venus_helper_set_color_format +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x755ff117 hfi_session_start +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x80574597 hfi_session_destroy +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x87ea189b venus_helper_check_codec +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x8ad11ee3 venus_helper_intbufs_alloc +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x9057be12 hfi_session_stop +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0x9bac8bd4 venus_helper_init_codec_freq_data +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xa9f08fd2 venus_helper_set_work_mode +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xab8b83f6 venus_helper_set_output_resolution +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb399f3d7 venus_helper_queue_dpb_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb5da1da9 venus_helper_get_framesz_raw +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xb7749cd7 venus_helper_unregister_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbada61a4 venus_helper_get_bufreq +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbb66bbe2 venus_helper_set_raw_format +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbc700522 venus_helper_set_bufsize +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbe0228ac venus_helper_set_num_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xbf51e638 hfi_session_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xc050f8f3 venus_helper_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xc11adefa hfi_session_abort +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xc2ed7681 hfi_session_get_property +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xca6ff4a6 venus_helper_acquire_buf_ref +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xd21da2e4 venus_helper_get_framesz +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xdacfd1eb venus_helper_set_multistream +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe1246173 venus_helper_buffers_done +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe27d800d venus_helper_get_out_fmts +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xe4e2b051 venus_helper_vb2_buf_init +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xeebe520c hfi_session_unload_res +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf4d8ef4f venus_helper_process_initial_cap_bufs +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xf9657b62 venus_helper_get_opb_size +EXPORT_SYMBOL_GPL drivers/media/platform/qcom/venus/venus-core 0xfa458573 hfi_session_set_property +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x31028812 rcar_fcp_get_device +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x3d858696 rcar_fcp_put +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x4ad5d888 rcar_fcp_enable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x5fe6f6e8 rcar_fcp_disable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x9877c29f rcar_fcp_get +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x1d660ae7 vsp1_du_setup_lif +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x20fb3d31 vsp1_du_atomic_begin +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xa0a2a8be vsp1_du_unmap_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xa91ecaa1 vsp1_du_atomic_update +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xb0cab767 vsp1_du_init +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xc88d3ba6 vsp1_du_map_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xf04588cd vsp1_du_atomic_flush +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0d677ac5 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3859b6d8 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9aa94dcb xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9fcb90f3 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb67940fb xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbeea9fec xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe08e6063 xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xee902218 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf6f2a01c xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xdfeaad69 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x05904ccb radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x6bedf4ed radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x3318f7fe si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x3a6bdc84 si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x3d7cf096 si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x70a83875 si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xb5957686 si470x_stop +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x087ba771 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09f6ad0d ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ac62c77 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1fa4124b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2b02ec19 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2b4f73e6 devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2f9045ba rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2fcc44af ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3026abde rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3efd61ac ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x53d20cb8 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70603fd3 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bc8ac67 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87d22a0e ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa661e941 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb370bb81 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc57a96de ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcd344b79 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd9b3d6ee devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf0281cc3 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf38e15da rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xef8d5504 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6df43076 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xe76499b0 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xe7bece2f r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x28ee3302 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xfbaa463b tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x11446385 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xc2883ea9 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x12baa36c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x36105f53 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa3b9d410 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x5b2901a4 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xaa7880d6 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x1f886802 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0a06e2c2 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1cef0604 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x207b8404 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x20c81c5c cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x38835ce0 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3e7c5ed9 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x438769fd cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x46a77bf3 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4dc3a9f5 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x59ded1d6 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f82b5f7 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x661a940f cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x685222eb cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6bbbac9a cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x953bd98f is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa3919748 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc55052ea cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd1f90647 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xea7d2bc3 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf61c31b7 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x65c8b90c mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x6680a940 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x13eaa84b em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1e319e25 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2d501aef em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2e66920b em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3f319a3a em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4c7788a9 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x63d9c7a1 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x664173d7 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6e50ea84 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x790d8c5c em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8dace46d em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8dfb0821 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa9f0745a em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbb3778b9 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd214ea33 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4fe5891 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf162adf0 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf3a754d5 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x717b731e tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8be70607 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xb984c699 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc0cdaa22 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3d44c3d9 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x6c7416be v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xf336288d v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x03e89500 v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x0863e4d0 v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x22ba291a v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x4223ee4e v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x42d76c43 v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x52cae6c4 v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x56b8ce8a v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xc0695114 v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xd48f3f79 v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xdfaa447e v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xe59eddd1 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xefbe16e2 v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0x8468300b v4l2_h264_init_reflist_builder +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xa003c02f v4l2_h264_build_b_ref_lists +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xae38bf6d v4l2_h264_build_p_ref_list +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0x30b5ebc6 v4l2_jpeg_parse_scan_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xcbfdf5cb v4l2_jpeg_parse_frame_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xe8956e3f v4l2_jpeg_parse_huffman_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xf8ffd565 v4l2_jpeg_parse_quantization_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xfe634d65 v4l2_jpeg_parse_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d4ff3b9 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x15566804 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x22fa7ff3 v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x271c77d5 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2e865c20 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2f54f975 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x31aba9e3 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x322cd951 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x326ca534 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x34df3ca7 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x35b3b472 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3866ae54 v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3dfe2ead v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x57ad6b4b v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5f53d9fe v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x604900c5 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x609e3ecb v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63dbc0ad v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6b26c23a v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6b31328d v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7603aa5a v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79f64f2f v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b64f8d0 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x825214b0 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8596c0fe v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x85d76ab5 v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8980586f v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9077c6f3 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa178bafa v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa32e5a44 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa75aa6a4 v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa7840b5b v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa82c7328 v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa991a381 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb63c4ebc v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba523063 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc18dccf3 v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb3e9cc7 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe0e8aedc v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe376a439 v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3fa8c0e v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf0532326 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf1821fff v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf2670a3c v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1779f396 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1fc5fd0d videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x284018c4 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x419594ee videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4db400e4 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e7dac6a videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5980a244 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7092744a videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x76be2903 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x80f02607 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8bc1b361 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9e589e04 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa0a70a98 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa24bc254 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb82245e3 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc0aac29f videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xca86ab91 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xca9b6da4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcb4f1a61 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdce77892 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe040b44e videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe81ec1da videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeaa43957 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xee469b98 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0b762831 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x517de8d7 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xafdcc72d videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd1aa48e1 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x437a66ef videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x49c69ed4 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc790df8e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06a34cc8 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1054b68d v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x191b3934 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a471a95 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1b9aa718 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1db804a7 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x21e16084 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2458fcab v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x25cdd91e v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x26cf4cdf v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28f05c8b __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a53ca39 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2da28baf v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2e3bda14 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31c12e6d v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32431a1e __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x378ec9e1 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3a87109f v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3b459211 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x43996a8c __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4a8e5450 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5a84fb95 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5baba051 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5d183a5b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5def2ac6 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x651de665 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x68be12ab v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x78830ba9 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a401c23 v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7c1033fe v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7c3c8268 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x816a6086 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x85cc8fef v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8af6e5ae v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x996ced98 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9ddbc322 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fbe3c08 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2b4d8e5 v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2c545cf v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa5a83132 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa9017274 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xafc005ea v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb795f071 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb874887b __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbd115c1f v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc02ff80b v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcbe6a717 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcd693413 v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5f18b4d v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb84dfc4 v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe05c38b9 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe208bf6d v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2822320 __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe3e77695 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xead769ef v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedb5c606 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xef1d3f79 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xefeec7c0 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf729b064 v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf912f40f v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc2be3e4 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfd34fd1c v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff958b5e v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x60bcfb39 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x7c837bc2 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xdf70fbcc pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x22416fdd da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3659e410 da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x620822d3 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8e5b624d da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa32ace3b da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xd98292ec da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xfa7ed0f5 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xa142a524 gsc_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xb7abd1c4 gsc_write +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0cfc3913 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2e7b1da0 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x33b63ef1 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x538eba7c kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x74ba238f kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7c90e5c4 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf3224fe7 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfee903cb kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x57eb1253 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8e1e0239 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9116574c lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0a1270a7 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0d08f2d7 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5bae88c9 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x621064a4 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6fa5dac8 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x837e71fd lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbd74458a lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x04507a41 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x9d2e8b92 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xaef8969d lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0314f254 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x03192e14 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0e367227 cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2a30724b cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2cda015b cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4021ef58 cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x402c3318 cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4327a824 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8ae24594 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8aef99d4 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8f615a3b cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x979d8d4f madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x97c4b2a1 cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x97c96ee1 cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa045a95c cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa048751c cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb890deec cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb89d02ac cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc9d75898 cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc9da84d8 cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd4f1afad cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd4fc73ed cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe370b450 cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe37d6810 cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xf63eef0d madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xf8d63b51 madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xfba5c3e0 cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xfba81fa0 cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x20f2dcdb mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4d8be526 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa615ffba mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb41a0ad2 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb89d64dd mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf4a041f2 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/motorola-cpcap 0xa226dbe8 cpcap_sense_virq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x09c194e1 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1341b036 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1454834e pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25c35840 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x33539d60 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3574cdd1 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4feb7bb0 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6f2e3ee9 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9f9689d3 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb201169f pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf767b026 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6eeb8c42 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x90b86bad pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x464d9e5e pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x74414f5b pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8cdaeebb pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd6e58f64 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf4f75d7f pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x43e53ef9 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xb7ec0837 devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x149b9b99 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1854f253 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x18a029bf si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x25ee035f si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2a1e77be si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2c3fbfe3 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2de5a58f si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x378a68e0 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x380a1b81 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54ac126a si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x556555f3 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5a821054 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5d22fc5b si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5e08b3d7 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5eb27b40 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x60c6308b si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7cb70cfa si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d3f1e85 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d9f5725 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8710e59f si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8cac5425 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x95f58763 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a2ea065 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5dae29f si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa671e581 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb5730382 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbcec09f3 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbe17bfc8 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc34a63e si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xda9ff491 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe4a6fa17 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xed52ca74 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xef982860 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf36fa65d si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2d40653e sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x66419e1b sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd5a0a9fb sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf87d1358 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf96bdfba sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sprd-sc27xx-spi 0x07aa7791 sprd_pmic_detect_charger_type +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x94a8d2c2 stmfx_function_enable +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0xc4276413 stmfx_function_disable +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x27dab7c6 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x711f43c6 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xae22e167 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xeccff589 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x20e4f645 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5bad45fc tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xede37caa tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf292ed22 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb33e2dab tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xba0021de tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xe970520c tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x937962a5 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x2245584d alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x4a3c41ae alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x4e78dd21 alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xa3892f8e alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xb4363865 alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xc6af9740 alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xde8f223f alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x0abd7168 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x198a104a rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1cc606d6 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x20d06c3e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x44a6e15e rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x4df0dfcf rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x863c0180 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x8d880744 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x99c5ff72 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9c5a9c9f rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9cbcd599 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xb251edf3 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xb53269a0 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xb9cfb2e0 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xbf6e0fe4 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xc9a790b2 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xca5a0563 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xcc99022f rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xce408c97 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xd64f24ef rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdd2a446c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe1575a23 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe7b97deb rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xf7321327 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x194150d8 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x27f8b12d rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x57eec2ba rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x64ce351f rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x7028ff1c rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x744a6403 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x8439df1d rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x92f55fd4 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x9daef0c1 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xa9e32cf1 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd8c71ea9 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xf5c9ab3f rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xfb51f524 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4452fa5b cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa8a453f9 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xcd22763b cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe23164fe cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x0cfd2754 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1048e320 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x21fc947e enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x221a66d2 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x43e47be0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x53208fee enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x60629933 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd281083d enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x06515370 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x35d44a39 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x50ca0e47 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5accd338 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6d53284b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8c8860a8 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xced5f5c6 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf8deecc2 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x3733ca47 uacce_alloc +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x4dfee597 uacce_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xe39e9b39 uacce_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x51ad6e8e dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x7d5ddc2f dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xe9822cb2 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0x0260bccb mmc_hsq_init +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xcb6d7c3f mmc_hsq_finalize_request +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xe9db3127 mmc_hsq_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/mmc_hsq 0xfc611f5b mmc_hsq_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0x90024897 renesas_sdhi_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0xf5e1314c renesas_sdhi_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x051218d4 sdhci_execute_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0d5edd06 sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x17035ea5 sdhci_start_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x17a15574 sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x180957ff sdhci_abort_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1d49e6c5 sdhci_setup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3242ae1c sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x35b830a7 sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x36c5febb sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f09ec3f sdhci_set_power +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3f464c11 sdhci_cqe_enable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x50d67c91 sdhci_adma_write_desc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5445a28b sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x57a31573 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x59ce1b63 __sdhci_set_timeout +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6c85ff4f sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6c8cc7a2 sdhci_end_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6d996915 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7dceb1ae __sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x84ac7577 sdhci_calc_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8771ad60 sdhci_dumpregs +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8ec06f4c sdhci_switch_external_dma +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9365b12d __sdhci_read_caps +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9a202076 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9a5e7b46 sdhci_request_atomic +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa52606e4 sdhci_enable_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa6c62afe sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb19d561d sdhci_reset_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb3190ae4 sdhci_cqe_disable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbe67db07 sdhci_set_ios +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc3154c75 sdhci_cleanup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcb74ee06 sdhci_cqe_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe1970a4f sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe20e0e90 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe567aa03 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xedf3e5e3 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xef9ef222 sdhci_request +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xeff72e78 sdhci_send_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf943b601 sdhci_set_power_noreg +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf9b15692 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfbff3aac sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x101f9495 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2de23898 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3e7681bc sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9ab40184 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9bedb875 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb357a838 sdhci_get_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcebf9427 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd225bc3d sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xec1225bf sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x17f37b27 tmio_mmc_disable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x1df07a15 tmio_mmc_host_free +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x2794df66 tmio_mmc_host_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x4d9b052b tmio_mmc_enable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x6f290c23 tmio_mmc_host_alloc +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x7ebfd044 tmio_mmc_host_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x8bc6fb1c tmio_mmc_do_data_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xba3b660c tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xc3d5d441 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL_GPL drivers/most/most_core 0x05a64927 most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x17e9cacf most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x1f0db7ff most_stop_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x223a05ad most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x30482128 most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x7cd3c0ee most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x8bbc5407 most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x9aefe0ed most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xaa9d4296 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xc6b1fa7a most_submit_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xcd6d524a most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xdd67fa5e most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe24dd63b most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xf4d417f3 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7dbb7855 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x80a55dc3 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbf8c782b cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6cc800b1 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9f31cf37 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe16384e7 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0ef6a9b0 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0358611a cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x33710905 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd03ad421 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x01a1d3a0 hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x23076a1c hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x014acbbf put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01f1cb4f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07e6297a mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0a2ce995 mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x12adbf72 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x222bb227 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x34003c6b mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3b5d2a7a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4468da36 mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x57dd5d17 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59c6c37c mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a4117e2 mtd_write_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x605dd54a mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63bac3cd mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x649bf679 mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x757b7866 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7710115b register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x773471e9 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7cf3f289 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8065dbb7 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8be6fdb2 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8e0df829 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x90eb5056 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9152be8d get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x938b62f4 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97f5968f get_tree_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9fa9150d mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2346d6c mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaac29adf mtd_ooblayout_free +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb79d5d73 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8abd587 mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcf12f8d mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfa5ef19 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfe0859b mtd_pairing_groups +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfe5164f unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc0451c1c mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc25e0525 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc265a0ba mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4549489 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc565ed53 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc940af05 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc97540c5 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xca249b63 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd67261dd __register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdbccceb4 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe62c1ea0 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8d2a963 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xea3b87d9 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0fade47 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf1b7335b mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf51e064a mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5469d26 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfae62db2 mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0e747bed register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3b8d5389 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x44dadf8c add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb0b1443a deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe704c18a mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1812171d nanddev_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x296b8c30 nanddev_mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x2b7aea05 nanddev_bbt_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x2ff28ee3 nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x76e9abeb nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x8237d93c nanddev_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x831f1b19 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x8ef54c01 nanddev_markbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xb1b98348 nanddev_isbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xe9d767ee nanddev_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xedefc0b7 nanddev_bbt_update +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xeef4c35d nanddev_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xf79e9109 nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x17a3631c onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x7dda9b7c onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x08911db4 brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x2baed81c brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x6455ae9d brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x91c8ba14 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x00c901ec nand_read_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x086908c1 nand_reset_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x132cc263 nand_change_read_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x1bd30627 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x3138a8d2 nand_erase_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x33cd1ed6 nand_deselect_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x397c141e nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x3de69d26 nand_write_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x41b9881d nand_ecc_choose_conf +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5665e2f6 nand_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x607d696b nand_read_oob_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x66012837 nand_select_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x6ad44cbf nand_prog_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x7f167f3f nand_gpio_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xa8eaf839 nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xab6cfe8f nand_read_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xbd6d7e6c nand_decode_ext_id +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xc2e2b8dd nand_prog_page_end_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xc397cf44 nand_soft_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xcfb0331a nand_reset +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd71eb649 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xdc41d21b nand_readid_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xebeecd13 nand_change_write_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xf1066922 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xf470d84a nand_status_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x3677aeb1 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x66cb30df spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x842ca6b2 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0242716c ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x06a603bd ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x101f20ba ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x64938d9a ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x93fc9599 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x962bc020 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9d8d9907 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xab3f2971 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbcbd1a89 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc82edb47 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe34551c3 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe5a9d353 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf6bac72d ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfdea2417 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0467faeb mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0c091f18 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x27c172e8 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x4130ef0b mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x6cf67548 mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x868ff4d1 devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x9d32ef21 mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa12d1b4b mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xa7897576 mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xb8918696 devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xba03f3aa devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xbbe4ece3 mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf017341c mux_control_select +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x6be41edc devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x79b3aae3 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/bareudp 0x3cfe3bf9 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x53b9292c alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6410fbe7 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8c46b664 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa120254f c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa43eb406 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf2b7187b free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x0c43027d free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x362b5c48 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4c91a070 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xed86f129 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0c16d6b6 of_can_transceiver +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0e147f9b can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1016ad71 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x17dd3e47 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3481c339 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3517bb08 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x36159972 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3b470ecb alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x46fdf5b2 can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x50e6125e can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x57f153c7 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x698fad03 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6c416410 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x76c8611e safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x89f7f4b1 can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x91ace1cc can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x9fccdbd7 can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa47ea050 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa7657ce2 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xab0d990d can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc215416d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc847adbb unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe1e46151 can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe6805058 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf58c6ca5 can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf8bc16d0 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x252d00b6 m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x5f65ed64 m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x74a3f34d m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x800d28cc m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x88695d28 m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xc1af1ad6 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xd0d3eb15 m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xd21ca667 m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5bc59f12 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbff2402d alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd6b36349 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf851e764 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0xf754b2cd lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x2dbb3cce ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x412a0e09 ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x485c3b8a ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x49155ef5 ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x4a8c2706 ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x50c8743b ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x74c62ed7 ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x8f6eb078 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x9405379f ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xaa1f1cb9 ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xc4c7b4d6 ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xd24a5721 ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xd61cb3a3 ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xd856e10a ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe76583aa ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf4f087f2 ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf8215bf5 ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x07870a1f rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x191291f5 rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x221aa951 rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2b18dbf4 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x3ab30fff rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x3eb01cac rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x601fc3d8 rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x7a6a54ae rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x7bc48d64 rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x855e828c rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x9c64fca3 rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xa2fcb5cb rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xa4c5fc4e rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xb0f66ae6 realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xd941f462 rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf52a02fd rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x50a520f5 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xd56700ba arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x7b85f19c enetc_hw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x94d5703c enetc_mdio_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xcb851304 enetc_mdio_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xd9d61d6f enetc_mdio_lock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x051155ca mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05b03e22 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05d7fba1 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0832da8d mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0918f8a5 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ca0369c mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x155de798 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x168b1eb2 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a0504cd mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c0f6c49 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cbf2285 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e2f12bb mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f6eb0bb mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2146a897 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28077c81 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2830f37f mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cde0078 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e6816d3 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f2dafc2 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3536ff55 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x370016cd mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x383161b4 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3927a5b6 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ab22cb3 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b2eaed3 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b68ee37 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ea64004 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x417f55dd mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42e0d422 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42e28715 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x443038fb mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x447048ab mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45a6ebd4 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x483c367e mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49cb81ed mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a55b3b9 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e8246d4 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50c6786a mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x564b9604 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x577829c5 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57bda201 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57e11488 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59e1a92f mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cdc7697 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d58c10b mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x619a067b mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62d637be mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6442720e mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x665166ac mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68bb9cfa mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c110925 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d616be0 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f4777c6 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fba7336 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73b73d6a mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x749e7b4c mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74b86267 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x754ba71d mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x763c94ad mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77386029 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7be36257 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x822932f8 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84d2277e mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87264227 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x872bf21f __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e3fca37 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9156d33c mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9217840a mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9281d11c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94e86016 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97c9abbf mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99744708 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ba53b9f mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d20c9d7 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e226d4d mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa352ce80 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6547fa4 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa65a9609 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa67605f3 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa702df04 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa74b6469 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa776b085 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa999fcc3 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabc005df mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafb2af4b mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3b40bc8 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5d48b7d mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5dece31 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb641e1c9 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb83a1c9b mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb97054ff mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb54cae2 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbef14390 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc112eb58 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc25837db mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc395cbdd mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc43a0ca2 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd98f1cb mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0b067c7 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0b2c95d mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd32ea298 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd44c6f5c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd52950be mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8409808 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd961e94f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0b47c47 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8dff80a mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9d3e7f4 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb98eaf6 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0127745 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf05417d0 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2cd1b76 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3a1252b mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf42dcfaa mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6983651 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8d6247a mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbff5ffa mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcaa5ed6 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe0a4240 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe8eda95 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffb4d7f8 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x005c4557 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02fac4c9 mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x054e0687 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x122a459a mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1289a450 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15c5788e mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16623d39 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1680a78e mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1691e51a mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x183bb96b mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f631d10 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x208e90fc mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x232dc367 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x247f772f mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e2d504a mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3146e284 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ad925b6 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41e47760 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4675cd55 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e3b0a19 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x518caa82 mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x593dcac1 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b0b1163 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fd8f77f mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60512462 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65bdfddd mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x665f8543 mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a509ef3 mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f03326d mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70e6f77d mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x750bb53a mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77d4371a mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8063e56a mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x821e7e80 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c21dfb1 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e9dd5bf mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9415a52f mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99bdb4dd mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa186f8a1 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8563342 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb126dc6a mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8f8fed8 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba207a00 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba4e882e mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc9f7d11 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4803148 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc59d686c mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc68ece88 mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8997ba9 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc978fcb3 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb765c90 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcceea6b5 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0dc860c mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd500b9d0 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd83531a4 mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda074557 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd5e0a80 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdef014c0 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe40a2880 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4735040 mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeba930fc mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed049de0 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeea78290 mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefdb364e mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3934994 mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3c6675c mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf86c094c mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9927830 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfce2985b mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe45c111 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfead7ada mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x201268d4 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xcc4fa41a regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8c8c6c2 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6464e1c9 ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x64ac34f1 ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x840658c4 ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x0b28a9ad qcafrm_create_footer +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x2b6ddf3f qcafrm_fsm_decode +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x41da0375 qcafrm_create_header +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1d68d002 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4cb8996c stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x6083aed8 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe93c2357 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x73e0b50c stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x9e73714d stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xa83a20df stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe96c1b98 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xeb24e764 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x405b51c2 am65_cpts_ns_gettime +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x6635ed70 am65_cpts_prep_tx_timestamp +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x77d012c8 am65_cpts_tx_timestamp +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0x91fd3558 am65_cpts_rx_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xb60b988a am65_cpts_estf_disable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xbfc83e4d am65_cpts_estf_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xd69863d2 am65_cpts_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/am65-cpts 0xfca9b9d9 am65_cpts_phc_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x382932a7 w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x8b0adcfd w5100_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xdc7d0ffb w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xefa7a32c w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/geneve 0x89187ba2 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x0f43120f ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x8e7fc1a7 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x98cfbb33 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xe0a805ad ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xf64c59ca ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/macsec 0x046b06a0 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x23039fe1 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb3f933ac macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xeea85e51 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xfcf1edc5 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x10ac4bfd net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xc860d104 net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x01d3488d __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0554e40a bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x24a54fe8 bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x256f3454 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2bd5e026 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2d9a1701 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2eca3d81 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5320491d bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5a8ea5a3 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5cb01238 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x61c18dbb bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6bff8922 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x743e9b29 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7eb1943c bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x839d5ba0 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9777c8d1 bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xab023ff9 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb3ed31b4 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb8997b4d bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbbc951cd __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbc237d2c bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbdfca531 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc72b1991 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc86161a4 bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcaf5d7d3 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcce6cd23 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcde68774 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd5e2b9db bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe1e8b495 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe491c91b bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeff056a8 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xfaa91c6e bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xfbcf13e0 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x2b8cb816 mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0x5384535b mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12d0fcc1 phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x38e0da71 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x3c3ddfa5 phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x3da7db74 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x483f1f40 phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x4ad17bbe phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc46a13c7 phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf852fa0c phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x4a264d31 tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x74b11146 tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0x74d2ee50 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x82e5cd8e tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/tap 0x9f543661 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xbe232bb8 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xcd716ad1 tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xeffb0767 tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0xf114d116 tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3491dfc0 usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6a5de5ff usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x796957e2 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa606c0ea usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf5a0c39d usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x103f2f03 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3bc1e1af cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x44f1bc59 cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5adb0841 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5d54fa74 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7f0d4566 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x99f55f02 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9c768d26 cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcbe808b8 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd40828fc cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe579b093 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x25000151 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x29fc2a8e rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x68dedfe3 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8e7e9a52 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x91250504 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xaa851d26 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x017c76e1 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0646cd47 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08de454d usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13976440 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b4df9aa usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1c0cc2ec usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ba6d1c6 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38ad79ee usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b63715f usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x47b7b80b usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5c8a0599 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d574ecd usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5e1582f3 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x667c6322 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x66974cf2 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x76f0b417 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e191e51 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7e751d95 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f8fc78a usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x838fa003 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x872f1530 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87616ac2 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e36809c usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x96407596 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9f5bf837 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad95e88a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xae55444e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc1134101 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc649f129 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcace8594 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd1386bc0 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdb5b38f5 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfb96552e usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x45364474 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x580c37a2 vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x62bc6b2d vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe29b5322 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2136b97d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x47d41ff4 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5b1957cf i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x76d2d9e2 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x77c52469 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7b8a4e43 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a63a9f6 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8ea67f0b i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8f2055dd i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa12fb27e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa1e2d55c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6194e6b i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xad6b099e i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd7e18dc i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xddcc7eb9 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfaa30ccd i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0xe157610c libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x198234d9 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x26e5aaca il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x38dcd1b9 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7aca3bce il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaaee1ec4 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x013a3c60 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x02a48e33 iwl_sar_select_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x02f2d186 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x032bdd73 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0477d817 iwl_acpi_get_eckv +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0b855f79 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0cc65399 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0da2c97d iwl_acpi_get_pwr_limit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x11ffaeb8 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1332e4de iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x156b31ce iwl_acpi_get_dsm_u8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1668bbcb iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1976b38d iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x199bd3f3 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1d079473 iwl_sar_get_wgds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x22453c63 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x234385f0 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x241eeaf1 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2545ac29 iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x264f2a8c iwl_acpi_get_tas +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2710c362 iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2b29610c iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x31b5d9bf iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x34f1d405 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x396f5a30 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3cc13ee0 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x44ad8f9f __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4d74ea66 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4f99cd09 iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5025a9bf iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x50afab1a iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x51e5572d iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x54f2c982 iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5822dac3 iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5988395c iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5b8bb290 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x63dcb4f4 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6461eaf4 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6ad997fe iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x79a2032e iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x88f187ac iwl_acpi_get_mcc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x89191a35 iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8e261ad6 iwl_acpi_get_wifi_pkg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x912a4cde iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa72b13b2 iwl_sar_get_ewrd_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa8739ccb iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9c4810f iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xae0adeca __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb4a7bd85 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb6be4c4e iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbfe249ba iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc1be8a6c iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc2ffb84d iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc3cc26b1 iwl_sar_set_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc62a0e63 iwl_sar_geo_support +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc69f2c4e iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd914e00 iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcf268e92 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd5c01ecd iwl_acpi_get_object +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdc8f7525 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe0eb5838 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe257262c iwl_sar_get_wrds_table +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe2d44b2b iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe37d63dd iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe5da3ce5 iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe75b7e77 iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe7b03b2e iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xeb01cdd4 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xed7b1ec4 iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf0a3edcc iwl_sar_geo_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf0c33eb0 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf3585c9d iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf40b8951 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf88964e4 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf8fa3c71 iwl_validate_sar_geo_profile +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xfcd20f88 iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xfe9bff75 iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x25befe5c p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x3c895606 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x670dfab0 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x69001381 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x6d4baeae p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x98b976e5 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x9c0da76c p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xadb5be96 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xff0f0da7 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x07441a12 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x10f4e5b6 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x3bce12f7 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x45b732dd lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5c030ecc lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x66f1a7fb lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x77754e97 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x7c7deb2d lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x80e9927a lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa6fd8b0b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa8d12f85 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xc60bc35d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xe24cf269 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xe823559c lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xef266de9 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xfccf84e9 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x68d1c925 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8b40b699 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x97632b15 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x9c3d46ac lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa33f7f85 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc07934fc __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc0b933af lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xe5503cfc lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x02bb2e5d mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x0f5eec77 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x13fa62c2 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x1d3f78a4 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x22f2630c _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x295f5a8b mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5ae92dd1 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5cee8236 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5d8c5393 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5e9acfda mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x64767e2f mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x6a555f97 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x9dd927f4 mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x9f346855 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa93e1719 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xaa010529 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xce375e29 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdd36f4c7 mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xde455f2b mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe17bbb27 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xee1eee99 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf0bfbeff mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf8541f92 mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xfc5370b7 mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x08aa9429 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0aa06a87 mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1477587f mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x16d47ff7 mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1c16b6cd mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x20e8a9c8 mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x20f494ad mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x244cf445 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x27fdf413 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2827ff86 mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2e0ba7dc mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2f4ac794 mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x389f30d7 mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x562ff03b mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x594321cd mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x597bb00c __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5cd1e74d mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5f36f9a7 mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5fd43cfc mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x69272e87 mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x75633288 mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x759aec75 mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x79c1f6cf mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7f6dd922 mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x832794d2 mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x887343fd mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8a3fed27 mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8c836463 mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8e1bc38d mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8f3bc249 mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8ff91504 mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9712ae7c mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9850fed5 mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x99c58e23 __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9bff4073 mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa12a1754 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa6fff06b mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xab6d666c mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xadbf4adc mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb41380f4 mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb4516b4f mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb7f8cf0e mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc08cf97c mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc142127e mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc5fc58a3 __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcd7f223d mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd426826b mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd592f0e1 mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdbaf1db5 __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xddf35b96 mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xde0bf9c1 mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe49321b7 mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xeabed476 mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xeba2a370 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xec9430be mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf1f2ab0e __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf205555e mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf5a8816b mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf83c9d1f mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfa9a3dc9 mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfeeb8e23 mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xff7941f9 mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x0095ec90 mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x060c1695 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x0d022af9 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x3c19bc51 mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x6cbdcbbc mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x7513934e mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xaa4ecf04 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xd74e8e4c mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xe52119ef mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xee01fdac mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xf33b9014 mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x0a4a25a1 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x196d5a5b mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1eab4e7c mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1fb74125 mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x246a913b mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2b612e8c mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4060a9e6 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x4527f5a6 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x46864179 __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x67cc04a8 mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6a347656 mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6d8d09f3 mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x78459f27 mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x7b293c8c mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8d2ac958 mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8d74dfa9 mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8dca4fc8 mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8e63b49b mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8ebcf2a1 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x90f6b706 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa72f01aa mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb1f6ca9e mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb57e33df mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb6fb05ff mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbf92208f mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc0443331 mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc2680ea7 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xca668e02 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xcd502afa mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xcf5dd384 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd0b26fdc mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd2f7b034 mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdd85f5ea mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf053c01b mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf17e7252 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf2525c97 mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf27d8b1d mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x0ffb0b6d mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x1e265a2e mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xa4ce4089 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xbff70fab mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xc0064c29 mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xd41854e9 mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x00b1a13a mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x03cea49b mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x073f83a8 mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0cf982f9 mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0ffe941b mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x106aa48e mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x13bf9eb8 mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x172dd030 mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x19f89c19 mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x247a64a2 mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x277e9078 mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x29c452af mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2b172e8b mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x34c52281 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x383c9a71 mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x39a5f792 mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3d272e14 mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4097547f mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x441c142a mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x49b815ec mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x49f6c645 mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4f5ddc81 mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x513b04b7 mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x58e68374 mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bcfaf43 mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5eb03f58 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5f0865f0 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x68cf1ea5 mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6be37e3e mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6cf370f2 mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6da9e1cc mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6fd57594 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7004fad0 mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x74751fd3 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x81492655 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x81c56666 mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8a16aa17 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x96c659c7 mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9842fa0b mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9a64fa1c mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9ad1110f mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa03f302f mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa0619246 mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa5e78608 mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xaad02797 mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xae099cc5 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xaf8713ff mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbc0e793d mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbdbcd612 mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc3cd1f7e mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc7af5d77 mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc8c0f589 mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc912ef74 mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xca258fba mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcdeb90f2 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd0d83d6d mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd26ed162 mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd660bdb0 mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xdc6097f3 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xddf16b3c mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe5a575c2 mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xea6f3cfa mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xedfca45c mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xeef3a6c4 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xefa70d34 mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfc497b9d mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x396eda2f mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x3e3cf42e mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x41844890 mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x4ac90011 mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x539901bf mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x6f51784e mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x8e7ef0e9 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xfb2ef658 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x05391e3a mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0822a3c6 mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0c0f51ac mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x21d5fe7d mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2885526a mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2a9557d8 mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x330be5b3 mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x51eacf31 mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x7713ab14 mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x7bca1cf2 mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x7c00252b mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x94aa8ed3 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xaf3cb61b mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xaf70375d mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb7f14106 mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd170d00b mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xdb5b9ade mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe6725c7d mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xfe2ded29 mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x25c16b4b qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x501ffe3e qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x53216e84 qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x588a3838 qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x62ac3f75 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xac6bd90e qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xb944841b qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xde07221e qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x03c2d200 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0644020f rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x099ab714 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1bb57fec rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1caa7962 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x226e2c67 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x22c2ace9 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x241fec96 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2ef0d38b rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3b850459 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3e1be917 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x49dec7bc rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4bceabd1 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5391e911 rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5a788ef0 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x77c79cde rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8251a561 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8462fcac rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8c9573bb rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x93a7d9a5 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x964caa86 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa598806b rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xacb80ac3 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xaed016b8 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb42b8a45 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb5a42ae6 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb5b29af5 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb6a78c77 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb98a5b09 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc7e50195 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcaeefb53 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd050cae7 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd43b7cb5 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd594dbd7 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xdd79b109 rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xde0563a9 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe2b29100 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe6440a45 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe6d2b69e rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xebd65410 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xee268080 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xee3741ff rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf3255868 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf3dd52c3 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x12ac8be4 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1f4329a5 rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2a0decd5 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x34177774 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x401012b0 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x4f0ab90c rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x8120307d rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x828135c9 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x84020412 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x858dbf69 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xa655cdf0 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xabb4f32a rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc4b20063 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xd4c4e32e rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe340f84d rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xf644df8f rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x1f7aba02 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x2cbea8fc rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3250c102 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x393ef25e rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3b9a4b62 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3f473beb rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x43036221 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x492f9847 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4f74a538 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5333c2bf rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x53973a7a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5a0718c2 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x60790aa1 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x660dbc75 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6e6d1e12 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6fcf6332 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x71c5fdb5 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7650da65 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x76e0dea8 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x79ebb597 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7a67dae6 rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7bb81b29 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7c7fe5cb rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x80d4fd42 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x834f80e2 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x93f0f25f rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9550ec56 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9590c391 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x97f75fe4 rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9cd79200 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa6f25379 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xaa886ecd rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xac985d19 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb199433f rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb3d93ce4 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb629b1fb rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xbb8d04ee rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc09956b0 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc44707c9 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc58a7827 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc6262756 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd87668df rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd904c27d rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xdae97f82 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe3f2559d rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe7479369 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xee9d811e rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x57631fb7 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x5b8a88e7 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x7444d2d2 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xc6b7c88c rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xe33819c9 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x0434a8fc rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x5f6cfa0d rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x824354e9 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xc6c0fb6c rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x05fc471d rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0d8bbc79 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x123323d2 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x193dff7c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x24eea03d rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x3225915a rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x4c92ad71 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x509c9001 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x623554c0 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x74beeee5 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x840edc53 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x8654decf rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x97b0f9a2 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa0405ff3 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa38862ba rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xd3994bad rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0eabc2b8 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4330fec0 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcbdb435c dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe81b5aee dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0f27d9de rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1c244888 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x25383a70 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x2cf27413 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x400fcccb rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x488b8555 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4e8aae17 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5ca3e42d rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6390d963 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x6bdc87b4 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x7a0d5324 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9617e7cc rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa6a1e442 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xab699d83 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xabbde0a9 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xad14dc0d rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc3ceca7a rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc61f841b rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xca97efa5 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd0550b02 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd9263179 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe7e59c15 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xef1726f4 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf9ba1da6 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfb6a2914 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1272d197 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x163d59cc rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d32cdfc rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x31756eb5 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3b765f33 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3d9b70d3 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4e94cd48 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x57f4273a rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x653e995b rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6ee5225a rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x71315b38 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x784b2930 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x816ce65a rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8b6e2483 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x981b85fb read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9954e58d rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x99b479e1 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9b0c82c5 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9f1a6bdd rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9fa4d158 rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa21c45c8 rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa7e70b53 rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xad90f93c rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xaf32ab30 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc63a08a1 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd7d20988 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdb18bdb1 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x713c47c7 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x789be589 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x83e21841 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x89b4851d rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd6370003 rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x4fb62f72 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x6d690f42 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xb7b29bde cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xffc59242 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe262d5c6 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf35a11d5 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfc559b0d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00212c23 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x005e78b2 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x007ab1b8 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18d54341 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21d0c789 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2903327e wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2979dda7 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2aeaa7f8 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37503682 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a68a355 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x40a0a79e wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49b32257 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d661066 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c712121 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d57b176 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6eb6189d wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76ede9ec wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77a89ad1 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82650566 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85498cd1 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x89e66700 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e4a26fe wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8eec5a39 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90420e7e wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x944cac75 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb08341c5 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7b74824 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb80e4420 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba2a53da wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc72c9f1d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc783109f wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd67b899 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd065cdb3 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd30e60af wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3e8a1e5 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5b91804 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7b6cca4 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7ef1a0a wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb373e78 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe2b7d7af wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3f27905 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5fa30b1 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee21ec2b wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4794ea2 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x4130a935 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x46b3008f nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x81d4aac2 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc3b0c9e8 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xa1dde2a0 pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xc11654b0 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xccbf5b40 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xd6b844d1 pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xded188f7 pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xe2a62fc8 pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xee4ec49c pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x133f1b3f st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x52de6781 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5eecbe4f st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x75879e91 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x79073282 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7e8f2786 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8e202dac st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa13d21ac st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x872ec07f st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0xb1505f7b st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0xe8b4ec53 st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x682cec80 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x703f3da4 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8858fbba ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x16ee7a9e async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0xd4481423 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x001eac64 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x05905ad4 nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x07befbad nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0f0889e3 nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0f5562eb nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x13e7b3f7 nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1edec1c8 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x21aadea9 nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x3171f4cd nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x3783f8bf nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x3b484645 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x41cd27ea nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x43199c32 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x466311be nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4a0bcd58 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x54085d0d __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x549229c2 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5de60f0d nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x61e0677b nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x62286913 nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6eb3a4a8 nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x704e0ec0 nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x825762c7 nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x866db54c nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8a9c70ed nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9287139d nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa5f216e3 __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb3599332 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc073a817 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc2ef85a6 nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcd1f5596 nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd09d5520 nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd3211822 nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xda5322bd nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xdbcc72f4 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xde8f19ad nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe5dc363a nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe8461934 nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xec52d5ff nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xeff13464 nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x13ce87fb nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x24979da9 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x32ed50e0 nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x45d954a4 nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x487357cd __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x65a173c3 nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x79df4564 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9eb8e0b4 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xa88a3729 nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xcddbd234 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xd1951521 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xe97286ef nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xf003b6f4 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x23119f80 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0794a232 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x17ed1b77 nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x4d134b0b nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x59baac6d nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x78554a75 nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x8f6148b1 nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xa211484e nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xac4d09b7 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xba5e195b nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf5077f29 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf725434a nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4c2f9d99 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/controller/pcie-iproc 0x0226e88d iproc_pcie_shutdown +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0xbce5e5d7 switchtec_class +EXPORT_SYMBOL_GPL drivers/phy/allwinner/phy-sun4i-usb 0x1b0db8e8 sun4i_usb_phy_set_squelch_detect +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x1cfec83f get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x326cd58f ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x3ec66656 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x92407330 ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x9a7b1651 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xc51f8f8f ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xcc42c547 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xd2672f5e ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xdf80b6e5 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x61c93695 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0xda5cc78f mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0xea276360 mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x578cd6a6 cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0xae29eab0 cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x094fad2e devm_reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x36d57281 devm_reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x593b0316 reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0xc34bc723 reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x6501e5f0 bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x928b06dd bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xe8c7ff32 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x29658c93 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x80779765 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xcabd5030 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x24867d40 ptp_qoriq_enable +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x24b7688f ptp_qoriq_init +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2e4ec2f4 ptp_qoriq_gettime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2eae82b0 ptp_qoriq_isr +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x6a733ca8 ptp_qoriq_free +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x8a4cd9b4 extts_clean_up +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa3900106 ptp_qoriq_settime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa8b2c8f7 ptp_qoriq_adjfine +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xb19b1269 ptp_qoriq_adjtime +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6714f456 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x74f1133f mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x85b95d4d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb8d58c52 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf2108087 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1b111dc8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2b287224 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3c5f783d wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3c678c84 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x654b18af wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcee9f781 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x93836f15 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x097d3a80 scp_get_rproc +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x3886600b scp_put +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x44eb91ae scp_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x967b2ae3 scp_get_device +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xafe9fda6 scp_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xd443d584 scp_get +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xe0177f90 scp_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x09313652 scp_memcpy_aligned +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x0c08c8cb scp_ipi_register +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x1d2e30cf scp_ipi_send +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x48050f80 scp_ipi_unlock +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xc146a14b scp_ipi_unregister +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xf68b692d scp_ipi_lock +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x303cec4a qcom_register_dump_segments +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x31bfd40e qcom_unregister_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x65079082 qcom_add_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x6da84761 qcom_remove_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x86a84622 qcom_register_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x86bc2c9d qcom_remove_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xee21d8b6 qcom_add_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xf0f52fd3 qcom_remove_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xf8f6bce9 qcom_add_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x06f729e2 qcom_q6v5_unprepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x14736c0b qcom_q6v5_prepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x39c01b44 qcom_q6v5_init +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xb5da0be6 qcom_q6v5_panic +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xce2a3ec4 qcom_q6v5_wait_for_start +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xdcdc8724 qcom_q6v5_request_stop +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0xb96db200 qcom_add_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0xe191eef2 qcom_remove_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0x27f69b48 qcom_deregister_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0xeaad0e19 qcom_register_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xa881c6fc qcom_remove_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xc50d9ccf qcom_add_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x126e0c50 mtk_rpmsg_create_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x86903274 mtk_rpmsg_destroy_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xd4259372 qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0x72dd75d9 qcom_glink_smem_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0xe792b118 qcom_glink_smem_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0468d04d cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x05837e15 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1398603a cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1aa99f7f cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x20e6641d cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29c1754f cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x399a33e0 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d5678e6 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e855b9e cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4672f850 cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x56990a01 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x594c2bb8 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65e4a74f cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x69eb4b6a cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6d188955 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x715555c9 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b794197 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b8e9e79 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7bbf6e5b cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7c29e817 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ce0b9e5 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84fce53d cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89479486 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90320111 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x946b75c7 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9716cb47 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa127fd54 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3636ba9 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3dd063d cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa599620d cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad752072 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1d7be16 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7315a5a cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbca01773 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0ca4d0f cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc34f59e6 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd2673825 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd50353d6 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd566460c cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe50e1974 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe6a5ae28 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe8393a99 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf059833d cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf870bb82 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x11d8088c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x16b1f453 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x463d1fc8 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5134c042 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x51684a34 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5c18a8b3 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x621973e7 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x622dab57 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x67c36c0d fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x80c209da fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b12c3c6 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xac6666db fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb0140f53 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeebac90f fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfac08d85 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfadd602e fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0xa898ae0a fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0xb6304df1 fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x242b99ef hisi_sas_debugfs_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x2696e4f2 hisi_sas_debugfs_exit +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x43f4bf4b hisi_sas_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4c4a419a hisi_sas_phy_oob_ready +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4f57ef6c hisi_sas_controller_reset_done +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x4fc22123 hisi_sas_stt +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x5722e7e5 hisi_sas_init_mem +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x58085625 hisi_sas_sync_irqs +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x6f98dedd hisi_sas_phy_down +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x73bba015 hisi_sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x7a1232a1 hisi_sas_phy_enable +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x86804d2f hisi_sas_slot_task_free +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x888da4d9 hisi_sas_release_tasks +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x89499254 hisi_sas_probe +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x9861d07e hisi_sas_sata_done +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0x9b807c91 hisi_sas_get_prog_phy_linkrate_mask +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xa957bedc hisi_sas_host_reset +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xb03aa9c5 hisi_sas_rst_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xbcd7f8d6 hisi_sas_stop_phys +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xc36c7095 hisi_sas_debugfs_init +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xc3a41131 hisi_sas_debugfs_dump_count +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xc7c72664 hisi_sas_alloc +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xc7dda9ed hisi_sas_get_fw_info +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xca6d9833 to_hisi_sas_port +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xd789920c hisi_sas_free +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xd7e86e06 hisi_sas_scan_start +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xe2c73f2d hisi_sas_remove +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xe330cb74 hisi_sas_sync_rst_work_handler +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xe987d9aa hisi_sas_debugfs_enable +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xebfae55c hisi_sas_get_ata_protocol +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xef3412e2 hisi_sas_controller_reset_prepare +EXPORT_SYMBOL_GPL drivers/scsi/hisi_sas/hisi_sas_main 0xf9e44e2f hisi_sas_notify_phy_event +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0494d840 iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2318d0e9 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7bc22244 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x7bd4cf05 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc4732131 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc5eac448 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd81a3ec8 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09edb9c5 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d4cea72 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0df6e022 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x136c6bda iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x16783b52 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x280b9eb3 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a647a39 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b3e306e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c33d3e1 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42de0caf iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46123fce iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5814af0a iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5db8ec28 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7161adb0 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x71e16fbc iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x74ea8f9d iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d410a13 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80efdcc0 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82c97f21 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x852d9436 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87071e44 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9941aa27 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e91fa9b iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab939d97 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb507b1ca iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb76f4741 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfb53959 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2d54e6a iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc5c3527 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc6929c5 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0d4ebe7 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd334ed7 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xded710a8 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8af04ed iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeaaca6f8 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec6aaac5 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee08ddbf iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef4d54a4 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf2ee716d iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf737873d iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7f17bfa iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf821671a iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0fc6fe1a iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x200cb85c iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x29a478e0 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2d616c56 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2e274981 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4426732d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6488a787 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x68aa02d0 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8241a52b iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8a1b7863 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9302491b iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e28e77a iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb82bd764 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb980747c iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcdc1c4ab iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdad443a1 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdf7502c1 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x19c2fefa sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1d8f35c7 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24a48c9b sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x44a2f503 dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a15bd1a sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5d32478f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e36872e sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x707ccff6 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88d13642 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8cd1558f sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8f1a5aed sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9f735850 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaaf60e02 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0b001b6 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb18a614b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb4e17f9a sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xba3981d4 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbaab673e sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbc52eb81 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf4fc9d7 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc72acc21 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe9cf06b0 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xefc4c119 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf7c489aa sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02604865 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x027b71f3 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04237939 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0773f093 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0bbeedc9 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13472a0d iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18fe8764 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1be9d815 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e6a19b1 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3133dc5c __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37b6da42 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x43595c3c iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47867762 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x483fc7a9 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c13192a iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ea8273b iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f27efee iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5020138a iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5598e844 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x561edc7f iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59dc0aa1 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b0bd479 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x61ecc086 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63918e4f iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f814080 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f52122e iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x853070d5 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x95935a22 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa53bc734 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa7b735ce iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaac3519d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea1cc09 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea92c90 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb3dd9be9 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb51f922d iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb654d369 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb6d69a87 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7a904b4 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc0be864 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4697d5b __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd83e0d6a iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe47b32a1 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9bd397d iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea6bdc54 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x22aa136e sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x436fe7cd sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7cead195 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf6935ce3 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x97e23094 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x02ac337f srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x31bf1975 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x75096b7c srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x989bde35 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa765922d srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb984e3fe srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x0057ad70 ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x10a74172 ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1d90fb08 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2efcb4f7 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x4c960945 ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x71f57d00 ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x7351692a ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x99cd1caf ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xa1c39c5d ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xb3462347 ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xcb9c9877 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xd91e15da ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xdf437fe1 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xf115a361 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xf296388a ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x17ccd38f ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x234631ca ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x5e10862e ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7160db2b ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x8186477b ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xde32214b ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xeda02370 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x03d302c5 siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x39e52aaf siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x457dbf58 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x49527e27 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x8fc85e96 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xfe1e8e8e siox_master_alloc +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x054246ff slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x10ecbde5 slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x135e60de slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x17e1f88d slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1c9eb931 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1e9ad323 slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x22f6f985 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x49a22c21 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4c0115de slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4d0defba slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x537c21a9 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x5397862e slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x599aa2fd slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x652befe0 __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x6dc5112c slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x72450401 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x76127e97 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7b4164ab slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x87279226 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x880ad330 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x91711290 slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9aa49fb4 slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc0d38d4e slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc33513bf slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc9b5c396 slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xef0e8df5 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x494128eb meson_canvas_alloc +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x673c5a86 meson_canvas_config +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x8b855933 meson_canvas_get +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0xfbd79150 meson_canvas_free +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x0261cd01 dpaa2_io_store_next +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x15f2698b dpaa2_io_service_register +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x1b7c4023 dpaa2_io_service_rearm +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x2ea89927 dpaa2_io_service_pull_channel +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x2f10852c dpaa2_io_service_select +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x3f8992eb dpaa2_io_service_release +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x4994345c dpaa2_io_store_destroy +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x4d081b19 dpaa2_io_store_create +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x6560c60d dpaa2_io_service_acquire +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x79cf65a1 dpaa2_io_service_enqueue_qd +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0x8edafa55 dpaa2_io_query_bp_count +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0xb9e81961 dpaa2_io_query_fq_count +EXPORT_SYMBOL_GPL drivers/soc/fsl/dpio/fsl-mc-dpio 0xdee45ca1 dpaa2_io_service_deregister +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x30d2b052 aprbus +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x412c8d08 apr_driver_unregister +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x83b6bba7 apr_send_pkt +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0xd6671c35 __apr_driver_register +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x03c9a66d llcc_get_slice_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x0679b34d llcc_slice_getd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x7e773088 llcc_get_slice_id +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xad3516c4 llcc_slice_activate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xb534ec76 llcc_slice_deactivate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xb68b1300 llcc_slice_putd +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x5db77c83 qcom_mdt_load_no_init +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xa1c6a5b9 qcom_mdt_read_metadata +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xd86c2234 qcom_mdt_load +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0xe8a3861c qcom_mdt_get_size +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x4247a986 sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x7b91aafe __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xa6a8fce7 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-cadence 0xb65d7b58 sdw_cdns_debugfs_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0x06b4755f bcm_qspi_probe +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0x581f885d bcm_qspi_pm_ops +EXPORT_SYMBOL_GPL drivers/spi/spi-bcm-qspi 0x6ebc817d bcm_qspi_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1730fd69 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xafe4ff59 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd8ab036a spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdbdf87ed spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe8d06c21 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf899c32f spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x18e9a7f4 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x26fa3ebc dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2893fda5 dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2eccde44 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x83046da5 dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb059d7c4 dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb6d1d5d7 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe22e5607 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfb605f05 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x0b59f73b spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x81230472 spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xb391d111 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x19fd1be7 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1b2149ec spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x246136ff spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3560fc82 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4cbad2a6 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x55fd56e1 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5f3ed7c7 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6af600aa spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6ccf4db6 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x706187c9 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x77d5bb4e spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7e8ffaf9 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x869ffb3a spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa32a027c spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc75bb9a4 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xce8b854b spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe4beb524 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf8b2d42e spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x90112b67 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x07f5a231 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b88bbe6 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0d0fa4c9 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x118f88cb comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x162bd203 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26091706 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x27485383 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x348b4fb9 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d4787bd comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50500f6a comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x528a4a25 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x566d6885 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5bd7dea5 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x621d1e03 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x64024738 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x717f570a comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7679426c comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7a38f9ee comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8504d3fe comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x86a13fc1 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x92cf3f1f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95d7cb8c comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x982f64ae comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9bd9a5ce comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e02498b comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa2f81102 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaaaeceac comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbe63c38e comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb8f669c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdfb85a4d comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe89291e3 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xecf4767f comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0480461 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf71f8caa comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf79f033f comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xffcd0f45 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x17bf25c0 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1bc99b9f comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x63a9cef3 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8c72b393 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x94830d5f comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9b6be024 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa6fccee4 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf450efb0 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x26e18ad3 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3aef96b7 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x8b15be10 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x93550721 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x945576d6 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9574e47f comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x8f3c55c3 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x55d067a7 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x9b0ced8c amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x154ce608 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x176e03b1 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1b7d6f0a comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1ffd3e2d comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x34913e69 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3590c68f comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x56a3c6c8 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6a65967c comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6f72c020 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x88a2858b comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x94c01724 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa54efe85 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcceb2d03 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdb2f9dab comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0af1c9b4 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0af9dce9 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5495ec1f subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xfd9a8207 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x07328d14 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0cdd0802 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1b95184f mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x28ce174f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x390a4fc4 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x666d5967 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7d1f603b mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8ae4cba6 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaebfc4ad mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb18835e2 mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb28c8873 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbad29b68 mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcdedc3bb mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd671b89c mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd84072ad mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xec4ee60a mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x1ad7cd87 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xdfbe283f labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0815c2d4 ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2a456ffe ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4b910b02 ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5ad79900 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5d433dd6 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6b54e5cc ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7dfe64c2 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x9a7f162f ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa3c28c10 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa70c5cad ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa835db45 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xac21f63f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbf500ea4 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc34a4c2e ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd4506b8b ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xfafb88fe ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x196a01b4 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x2f7c3a52 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x322b1500 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x42713975 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4567c16c ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfb1790c1 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x10e0cdcb comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1157ac25 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1e397fdb comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1f5289f9 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2bbc5c21 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x84b80422 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd6243fc1 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x101e7b5f anybuss_client_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x183ee6f4 anybuss_write_input +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x58a40d13 anybuss_read_output +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x74562225 anybuss_send_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x79a769c3 devm_anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x7febe8c6 anybuss_finish_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xab0233c3 anybuss_client_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xac9af6a4 anybuss_send_ext +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xae8629a4 anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xbb647c21 anybuss_recv_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xf212972e anybuss_set_power +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfce879ad anybuss_host_common_remove +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfdfba493 anybuss_read_fbctrl +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfe543695 anybuss_start_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x48c8f8d8 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x79bf65bb fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x8f26c370 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xe54fe06f fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x0f0ea473 gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x1b873919 gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x30724668 gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x35c7a336 gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x49ced0fe gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5d474d94 gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x60d51414 gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x6d4d28a7 gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x7f77accf gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x8120f77b gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x95a96a11 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xbaf15243 gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xc8ed1759 gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x0bc69603 gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x19404182 gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x3b3f2a4e gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x3d9f70e1 gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x5a926005 gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x74b75f03 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x7d9fb1bf gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xa3bedc83 gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xbdc8a5db gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd03fbb5a gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd5d57e77 gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xdad310b2 gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf8650f13 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xa95cfb4f gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xd3253735 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x80359147 gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xce2e4de8 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x54b77330 gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x8d3d0fde gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xf47f2e34 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x09d3f6ec nal_h264_write_filler +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x3b825582 nal_h264_read_pps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0x8383145f nal_h264_write_pps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xa2487f58 nal_h264_read_filler +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xd3e0489a nal_h264_read_sps +EXPORT_SYMBOL_GPL drivers/staging/media/allegro-dvt/allegro 0xf30c8c83 nal_h264_write_sps +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x00ba5411 amvdec_add_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x115655e9 amvdec_am21c_body_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x149368d5 codec_hevc_free_mmu_headers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1acd1fba amvdec_write_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1cb1e6d9 amvdec_am21c_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3162ddd7 amvdec_get_output_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3cc4c265 amvdec_dst_buf_done_idx +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x569a12cd amvdec_src_change +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5ff35ee8 amvdec_am21c_head_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x60df57ec amvdec_set_par_from_dar +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x72d3340a codec_hevc_fill_mmu_map +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x7a6f790e codec_hevc_free_fbc_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x8a4c17c4 amvdec_set_canvases +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x90973435 amvdec_clear_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x99ca4ebe amvdec_read_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x99cca699 amvdec_write_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xae7795b7 amvdec_dst_buf_done +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xb23e8ed1 codec_hevc_setup_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xb3a59487 amvdec_abort +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xcd4c781b amvdec_remove_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xd03e6091 codec_hevc_setup_decode_head +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xecd94ca1 amvdec_dst_buf_done_offset +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xf4c8302e amvdec_read_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xf5bf2916 amvdec_write_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14ab6dbb synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1da20daf spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x24d590ee spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x28dca40a spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x29d2d0db spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3e8e69c2 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5aeb3d68 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x60cca89d spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x788428f1 spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7daebbd2 synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x81be6124 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa833e1df spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb734cb9d speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc4366731 spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc4a9ad8e spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd47212e8 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd93829dd speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe5aa27ac spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf6941fa3 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x0629e129 chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x070e7725 chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xb8b745e2 host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xd4a06b30 host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xd74c873d wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xe33f8827 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xe75867f9 wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/tee/tee 0x145da236 tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x27173b57 tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0x35d18e6f tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x3da2aa1c tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x41d48098 tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x51456986 tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x684a19a1 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0x6f8e7721 tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x75d17149 tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x76bc5303 tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x80b09fdb tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0x88cf4ec8 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x89c43926 tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa462c433 tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa9aa74e5 tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0xaa390119 tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb3e67962 tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb617c9d7 tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0xbdc5feaa tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0xc2305990 tee_shm_put +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcd2f6ac1 tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0xddd0976e tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0xede61943 tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf8eae984 tee_client_close_session +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x03b1aa07 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x0c143752 __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x0c44b34a tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x27168db2 tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x330defef tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x343de759 tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x37407cee tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4c797629 tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e5064a7 tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e64bdfd tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5571a2b4 tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5aea90fd tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x6173895f tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x73ad2acb tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x785eb82c tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7f8433ba tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9f99e6ff tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa3d2b403 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xac84d157 tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb19a77c0 tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xcdbe3358 tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xd91f96db tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xeb0f2828 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf76028c7 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x1b13d453 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6703848c __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd2706202 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xdb2ad25e uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x195a03e3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x749aef57 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3ebd28d9 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x520cf28e ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xdac1f339 hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x23935c94 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7049f52b imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x719d09ab imx_usbmisc_charger_detection +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa384d94c imx_usbmisc_hsic_set_connect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xe8fe5096 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xff313a02 imx_usbmisc_hsic_set_clk +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3684d8b9 __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x48959f17 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa5f86fea ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbd388a58 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xdd813ab9 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xefb5f368 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x6eeb98b2 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xa125ec28 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xb3005e66 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xbdbe4207 g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xf3d52740 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xf6c2c601 u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0e7a3fc9 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1897a4c4 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1a2fb317 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1a3da3f4 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4886cdbd gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4df29343 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8d325bc1 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x972bcbcf gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x990bb280 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb959d169 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbe4a58e2 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcb14b6e7 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd0a5dfdd gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe4bf0617 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xee2baaf4 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x1c68a141 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60db48f5 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x6b22a43f gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc0a01527 gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xcfdd409e gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xfff47eb3 gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x1433cb51 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x57f469c5 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x5ce91623 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0695e128 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x08f40e9b fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x15271005 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2571b089 fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3347fedd fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x37549d72 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x42a97bd3 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4686a3b1 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x55a0ff86 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x66fb1136 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x88bd7eed fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99098551 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa7c87f16 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xaa8d0c6f fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc31cfe6b fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd0256fb7 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1bf0f41 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x02575eef rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0287800b rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0f90a9cf rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x19ba9174 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1bf0a385 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x44726b3a rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x613d9930 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x73df0a0a rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa5219e11 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcaa6f5ed rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc5ab47c rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd2573fdb rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdca20c60 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe30940c7 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfc746229 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x01408c4d usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1ca8bb7f usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x255f9a61 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a58ceaf usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a99759e usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3c836334 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d04c49f usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e07668e usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3fe5d7ff usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4269b4ce usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x52ae4ea2 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58b07bb1 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c6d4218 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x683317f1 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x76f3ee32 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x83b52d29 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8b5ddf35 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8bd2eee7 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x90884605 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x939a5df5 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98a8212f usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9dec6d3a config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa95ea60d usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb73411a1 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb775db55 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xca286a6c config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc39a3a0 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe119f6ca usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfbb7db85 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfc5c3d2a usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfcca7cdb usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xff731313 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x37143b6d udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x50bd0a4e udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x6cce2247 udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x7a00f59d udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x8d6cd1de empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x90d4f40d udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xa27fd1a7 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xc1ba02b7 gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xd024af17 init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0099f997 usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0b65a00f usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x11f7d891 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1e31d99e usb_gadget_wakeup +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x27be10ea usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2b332682 usb_gadget_frame_number +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x44098aaa usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4c659b0d usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5b428486 usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x671974ea usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x673e9fd9 usb_gadget_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x721c5d53 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7adf0943 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x860734bd gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x95d2aa61 usb_gadget_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf8e4bc1 usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb7c75919 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbeb94460 usb_gadget_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd39e7cc2 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdb0690dc usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe90ee82b usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf3b67392 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf5847805 usb_gadget_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfea0a40a usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xff069ab3 usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x62013668 renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xccba8f26 renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9c06aedc ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xe5bfc2a7 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2307fa78 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x24c10364 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x29934698 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x30885336 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x48f96563 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6e2121bb usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x87dc314c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcbc63fff ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd082c170 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x10293761 musb_set_host +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x225fcf59 musb_set_peripheral +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x22dee288 musb_get_mode +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2734197f musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x591c341c musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x9b6a186d musb_root_disconnect +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xb4c88abd musb_queue_resume_work +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x1f2ebf24 usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x2e213710 usb_phy_generic_register +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x8ac83527 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xcd0a937d usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xd2929bb7 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x034e8b53 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x4767a33a usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00ded674 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x099852f1 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x09afbd48 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0c627a03 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14fb1262 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x159025df usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1b81fd6f usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2389c2e0 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x46ad2a3e usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x47c08261 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x48156651 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x481acef9 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49bf9797 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8b72e98d usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x97a42400 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x99dd2513 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1bbfb09 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6ce99d8 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8ed7c84 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe9c7e5a9 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfbaa2ab5 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x0b8e00cf dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x3d9370cf dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xde0fdd78 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x2fac6461 tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x01748e75 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x045bed21 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x09eeebbe fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x11098ae8 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2a6ab845 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2ad2ba58 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3379f744 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33a486ce typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3ec2b639 typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3fea3d95 typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4c839aa4 typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x52f717c1 typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ffbd4ff typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x62976d9e typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x67e55dc7 typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6eda4260 typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x835ab094 typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x86633ad9 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x86c97a95 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xafa807ea fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xafdf52c2 typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbc4b9e3e typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc3878a78 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcdeaf67f typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd19c1174 typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2d688b9 __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe9321257 typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeedcfa85 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf4942c62 typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf78d15cc typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf8fbb5eb typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xfa07a76d typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x01cdff93 ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x219b15ef ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x8ece9262 ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x96a301ef ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xba641a29 ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd1a100d1 ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd2c4cdba ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf080d4d6 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf92c5c26 ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf94fe9d5 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0468d0ca usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0ffa12f6 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x11343ec2 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x18131285 usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x215b942a dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x320be110 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5cf95af0 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6592deaa usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6f99a76c usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc46b3de8 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc933d283 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdacc37ed usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe3a1b7a8 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x47653693 __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x62ff1f28 __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x83819268 vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xcc1896d7 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xf695e819 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0x4825872d mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x0880b551 vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x5a82cd3c vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xe195833e vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xfc0cfa63 __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x024ad421 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x1d534be5 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x1f4b93ce vfio_iommu_group_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x26a307f0 vfio_iommu_group_get +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x60a634c4 vfio_info_cap_add +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x717c03be vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x88212b39 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb4ff1350 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc5df386a vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf05dd1f6 vfio_external_group_match_file +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xfa55029b vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x34f54fcc vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x503da6b7 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x00758e99 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x15f9ce02 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19cd6477 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1aa037fd vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f094c62 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x260bc66f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2b5c344b vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x339f505f vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3a10910f vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3dc87532 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4427a5fa vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4508234e vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5023e205 vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5a3e398d vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5a4d577e vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5cb40072 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5cf5a42e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x667267f8 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x68bf7cd1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6914aa99 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6aa300c8 vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x711fccd3 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8112a204 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e01cbb2 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8fa44393 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x95085c8f vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x965d6634 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96b6beb1 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9e04494d vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa3deaea0 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa7fbf46e vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xab136d7d vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbb16e918 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc67548f7 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca844cdc vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xce2611e1 vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xce708bc6 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf4451c2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe4d8891e vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0453dc4b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x148a05e4 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x391971ad ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6dee22e4 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9dadd1cd ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xeadc5cf5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xff3db7d2 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x35a26052 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x093bef1e fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x31a8cab8 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x399202f9 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x98c3b63a sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x44695321 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5f86ea68 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x624c4932 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x642d429d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x89a8dd33 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8da610ad w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaa483325 w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbdf51522 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf761d74f w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfc799a19 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe5839f7 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x04a80b50 xen_front_pgdir_shbuf_unmap +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x082fb104 xen_front_pgdir_shbuf_get_dir_start +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0x2c485d59 xen_front_pgdir_shbuf_free +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xaf5c2e2f xen_front_pgdir_shbuf_map +EXPORT_SYMBOL_GPL drivers/xen/xen-front-pgdir-shbuf 0xcd17ede0 xen_front_pgdir_shbuf_alloc +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x0aa0d239 xen_privcmd_fops +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x313fdd29 xen_privcmdbuf_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x33806996 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x35bb97ed dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xacf1e8eb dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x02e36372 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x21e3aab5 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x27db348f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6d90dc15 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa5785e5d lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdc97e35e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf385d685 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x017d1204 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05e744f6 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x066e8f7a nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06c8eaf1 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0af14960 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b708358 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c47b3b5 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10824b4a nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12a29556 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15ae52d9 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17daa241 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1aa8af36 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ab533f9 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af22d95 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b30dab5 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b655a97 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cb8c5a1 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cf80e56 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20f25009 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21d9a8ac nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22228ffb nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22ec2a8b nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2510f4b9 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x269b9d71 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x283b28dd nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28488fda nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2bb643bf nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d4876a1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x338954e7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3448191d nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3497b97e nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39de4f6e nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c2c9dcf nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40eb818c nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44993d26 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4509ec41 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b87c5f0 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fc59196 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x505db26f nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x506fb41b nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5347093f nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54a17d23 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ee38d4e nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63111af4 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63cd5d91 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65ac04c7 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65baa4ac nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66299cd3 nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66a57062 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a17226e nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c7b4eec nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cffa3df nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e783a20 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7146ae58 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x743f63d0 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x748baa77 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74e412cc nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7582b9d2 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79690b74 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b1bff05 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e01b8ed nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80871fa6 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x865a763f nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8711fd0b nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a4175c5 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b0a8c61 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8edef1c3 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x905f2417 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x906d0e6b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9203d21f nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x926da9f4 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x945c6e6f nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9946e90e nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99cccf7a nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a549c3f nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e1cad3a nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9eeb5e9c nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f11636a nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1ff97ea nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2862792 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa448b41b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa59d11ab nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6d9a000 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8139e61 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8abcded __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9b59658 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa456dc2 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9fde04 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf62c6e2 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2269583 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2decad8 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb394101d nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb42df23e nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f5c91f __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6b2c88 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfeff4d3 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc089f8f2 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc264411d nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2d3720b nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc324edab nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7bcffc5 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd79c266 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf2056fa nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0b8bb1a nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd151a50d nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4490c08 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd78e555f nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8736acb nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8a18131 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdaa06db4 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdfb5eb26 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0bce76d nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0fef0e5 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe10e44f4 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe22c5a33 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4354e31 nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe61976c1 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe73ca9ce nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb286ae5 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb3df486 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec338a4c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec618d40 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee454be4 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef6154f8 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2619bf5 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4f9ac8f nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5d0cfce nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf657f13b get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe59f75f nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff5424ad nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff898738 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xb1ff0906 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03315e51 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04332c50 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x062fde0a pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x080dad82 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0881b1b3 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a6eead6 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ab70673 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ade27ae __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d2b37c0 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x149b9d66 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163831c3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19311e7d nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19a647ab pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cdde079 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x208f5c30 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x215bda98 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x271eac2e pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27d2b0eb nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x286cde35 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d5cbcb3 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2fc4ce60 nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33d4b299 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34e10076 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39ac52fe __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7d84cc __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3db906aa pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f0e40e4 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40bc3c6d __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x46e8e778 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x489da7b8 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d84bf86 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5a156c83 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f6a4ad5 nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61a70c4b pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63d49685 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x659d2870 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6761d5c9 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73263f19 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x74feb176 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x763a43cb pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x784a0516 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78ecf37b __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x79c73b99 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7b8f9b89 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7df94e73 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e08ddad nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x84f768df pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x85c7cb5f pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e1a89bb pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90933f04 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91d4c97a nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9dcf9581 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e71616e nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa319bfee __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa86c39d0 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa9af62ba pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa9c90a78 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa41ada8 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xace71f3b pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaff8025b pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb721da71 pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7ca4737 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb82a7c46 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc18cc263 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1b217f9 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcafa54ba pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccc7776c nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce165d2b pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd0a9cc49 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1f763a6 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6ed7dda __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbf29c00 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc29230a __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde10fc0c pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf05942f __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed959b93 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xedaa184e pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee960d9f __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef3fd5a3 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf0b9893e nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf33704b4 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x19530797 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x97d9ab87 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb4352803 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x85f242b2 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf63c2b58 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x12e1257e o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6549531e o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb86e45b9 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe60711a6 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe8b88455 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xebc9aff8 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xeffb9b8e o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x0f126758 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x40981d64 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4915dc94 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8f61f5d1 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcf79b02a dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xea918838 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x24ba511e ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5a88cd4b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x95a0465b ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe720eb60 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x96d760c6 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xc3d2aed6 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x165c9673 unregister_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x86e4e9e4 register_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3b137dd9 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb0f13c68 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe21c9c32 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL lib/bch 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL lib/bch 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL lib/bch 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0xeaf3cb23 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x39e8fa4b poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4370baea poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4a833012 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x002943c0 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x6f495013 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xa08c8e97 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xc9428c80 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x3ac56716 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x52412231 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x60cf189f garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x762d7355 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x987ae234 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xdd1bd3ff garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x806b93f7 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x8bd2efa5 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x9399ccf1 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xae283a29 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xbe80cc38 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xd754a351 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x2e793cd2 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x79948428 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x2a1a353f p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf43271c9 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xdeb74985 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0051d95b l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x05c90f69 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0c91356f l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x315a0f43 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5ad039fa l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5bf70788 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6ac9d776 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x91ad6dd3 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xddb6199b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0x52ee4e09 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x10e94122 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1d2f4f62 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x38836fb1 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3dca51ea br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3f247970 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x50e3c5b9 br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0x623cc378 br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x66a680a3 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x74554fa2 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8169d70a br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbfbf2d99 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd2ec8906 br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0xda7f1af3 br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xda815e7d br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0xeaa6e5d8 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf4aa634e br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf52a39dc br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfbb9ddc3 nf_br_ops +EXPORT_SYMBOL_GPL net/core/failover 0x1372bf6a failover_register +EXPORT_SYMBOL_GPL net/core/failover 0x3f2d7c86 failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x7082ce01 failover_slave_unregister +EXPORT_SYMBOL_GPL net/dccp/dccp 0x016f6bcf dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07cb1f22 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1c1cd95c dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2021d117 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x22a77850 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2778c440 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c4a8ba3 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34b0857e dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35cc312f dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42c36fc1 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4389e6d8 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4797c502 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e8360fe dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x57de57d6 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d012426 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x720ad43c dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x722630de dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x797b325a dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x84201938 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9205f01b dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9bb9eb80 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2624a42 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa39195f2 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8c64f3b dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaaf2b3c3 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf7edb71 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb592f91f dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf42b2cd dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbfb2f13d dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3b6a26c dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce0f9d26 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdc6b1846 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6257c77 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf4ef8db0 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf6d5d1e6 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfc738345 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0d2af79e dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x528d8564 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6ecd0801 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9ff2da99 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd2a571c6 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf4d127bf dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x09c62198 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0fcebfdb dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x11584995 dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2c1bdd3d dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2ff60442 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x561f1375 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x58034d28 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x6abf7a24 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x71d470b5 dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9a5d6bc5 dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa3f78260 dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb0cac675 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb1965527 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb2a26048 dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb32655f6 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb88ce2ab dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc635159b call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc98bac96 dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xcab9553c dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdb0ca497 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdea81f09 dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xfb6723c0 dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xfe3a9b06 dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x2b3deecf dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x50c51311 dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x7f184537 dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x817d85b8 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x8a27e516 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x95585298 dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf9469ff3 dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x627ff2ef ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x9ce9baa5 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa3c8304e ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd01196c9 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ife/ife 0x569efcb1 ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xad2c7912 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x11db3cd9 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x50949560 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xd802b696 esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0e0e807e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5ee14c3e gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x05d13d0b inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2e4044e7 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4f4aa005 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4f8e0d73 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x64f87d69 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x771441c0 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8640290e inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x89cb8a63 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xdc5e7501 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x1f221c24 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x12b0e1f8 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x13770095 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x17aa2133 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x237f7cae ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3960afc0 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7a42953c ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7b6febd7 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x835e1df4 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa81f429 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xab0a731a ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbf1d000f ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd00ee4df ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd66672ad __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdeb6bb28 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf2465a8a ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf2d2097e ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf66dad04 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x26de31c2 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x90fc8010 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x266c8aa6 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x0230dd5a nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3ec3544b nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x476c7ed0 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb4155bce nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xdea5dcca nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf91253c4 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x00c563c8 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x1d000917 nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x21d75682 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x4fdef753 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x658ab774 nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x9dc78e85 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x11407b81 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x579fbefc tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x830a1c29 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8ebd1911 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc781970c tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x3b86790a udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x518519c9 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x625448cb setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9addff60 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xaa628773 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xbab7de54 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xcd5c9d39 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd3d78788 udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x0e026bda esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x2681537a esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xcfe0acb3 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0d7c129b ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x51888f70 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xaba8759c ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xa0b20fd9 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xaa39ba3e udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x474efe4c ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xd8b382bb nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xea00088a nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x7b363af1 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x07fe426e nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x53c51abf nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x5672d421 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcf8b8188 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xdaad6472 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x87a2c2a1 nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x4808c015 nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x548f53cc nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xbf588187 nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x58322142 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xc61990f6 nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e169efd l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3df1a710 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x527dc310 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x58b7a7a3 l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9079487a l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x94b8d680 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x97027e26 l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x990cd5c5 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9cae8f9a l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa7470d8f l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaad1ea5a l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xab2ef61b l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc724aea6 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc8349c5f l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe4da3c4f __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xec794416 l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf5d5bd10 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x472c94f8 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0a4ac8f2 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x210ce938 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2d0b7080 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x46c42f8b ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4fd7afaa ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x54af3a6f ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x60043bca ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x846f1f2f ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e96baec ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8fc023bf ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa53ed693 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb4a3f8ba ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc27a4af5 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc7be22bc ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc7d359f6 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc83f23b3 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcb04bd01 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdc1694e2 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x05d344f8 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x291e8e96 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x5ad39dab nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x5e2981e4 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x6b612647 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0894e8a2 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1935753b ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x24e8b66c ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x251039ec ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2df61589 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x324cdcef ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5885a2e7 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5c5f9045 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7836b3cd ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x91d9cd55 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x97d811b5 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb4d46c16 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3985345 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce0b389a ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xceb0b38b ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd0c766c6 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd99e80b ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfd5b31e7 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfecdc2a8 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0f04050f register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x20125f10 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6daba029 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd70305e7 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3b259612 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3ff55ad3 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x4b4f789f nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x55c3a3b2 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x7cd7ea8a nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8c4cb9c3 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xd4f08059 nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02936c9c nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0558e253 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0960efd6 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x098aea5a nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a48368a nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f74a256 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11133f5d nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1120d45e nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1998a4e1 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bf374ea nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cd2d6c4 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ead8536 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eb41afa nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1eb9c882 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x231ee564 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23ffed45 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26b1bf4a nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26b3b182 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2771e823 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bd0cd22 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c0dbd02 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3062249f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x310c8754 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3657292c nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x394d428e nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e8ff39a nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x418271bb nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x506d4161 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59a267af nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a42b6cc nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a7ff04f nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a8347e0 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5aaf9bc2 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e62d0e7 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c176704 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x728681f7 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74e47f6e nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b3178f5 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b6d46f9 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b30a437 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x957c287a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb7399 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b3de63a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f883705 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa14af4ce nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1ae4716 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4288a49 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa454fe92 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9744d17 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa4b172d nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa8beb38 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf0847f0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1bdf045 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb63201de nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6df4098 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6fc21ec nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb546df2 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0a01c9f nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2d500f5 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4dc85fb nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca4bd3fd nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd7e9623 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcebd2c30 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xceea7f48 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1a2a544 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd55e40eb nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5911b87 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9cad6c0 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdac7243e __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba7326b nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbf60279 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1d1bc56 nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe479e02a nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe49ce8ed nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5df956c nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe630ca1c nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe93c468f nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf05a8883 nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf16098e8 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38d843a nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf45ea4d7 nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf682c2a9 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb33623d __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfba14d3b nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xbbc7c108 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xaaf1a48d nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x2ce3ae88 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0fafb71c set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x289dfb4a set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x34cb8067 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x39ce39dd set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x43730985 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x45f77ab3 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7c00f45c set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x97651f3e nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa3131cf9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf7dbe2c nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x5aff7aa9 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x22b19d76 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x59fe4fa2 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa131bf21 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe93927e7 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x394d8147 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4d5b9a97 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5699e006 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb66188be ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd9fa7f68 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe2139b5c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xed8bfa35 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x96d35248 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x89b84016 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x2ecd7ebb nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x67c8e274 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xf0002862 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x121d4dfb nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x126b3b47 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x16178302 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1821780f nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1dd55328 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x245c5d1e flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x452b2f78 flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x472c0f4a nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x5a30b553 nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7354e098 flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8b4e49e1 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9ad6e1d5 nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9efa4dee flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd67ba9db nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd74bf032 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe563338b flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe765aac4 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x18b37caa nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x370e5f59 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x401952e8 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6914a226 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa4c610da nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xadf97b85 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x103e9614 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x17b5820f nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x34c13e09 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x386183e6 nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4ce67566 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5cc591ef nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x653d6cbe nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x77e84884 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x78e8ca21 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9360d966 nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x97f2b64e nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb82cb86d nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc1894f63 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcbef8fca nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd8675f2a nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeadb591d nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x19d164d4 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x232ecd7d nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x39a3f304 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4fae7a26 nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5523445f nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5a3652b6 synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5e667f09 synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6f37523e ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x7f48f95b synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8d6aab07 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x939ad7ac synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0342a3ca nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04c26b4c nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0ab2bf28 nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0e6df24f nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2021b986 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x25e37bee nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x322a5da0 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3913e3b9 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4281b07f nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4adbf0e7 nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4bab2721 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x56c4f8c3 nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x606be48c nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6b303089 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6eace173 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7692821f nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7a607086 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8789628c nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8d166f1e nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x93215977 __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9bcce362 nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa37eb304 nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa9bf5707 nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xab36a413 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb67f2cf4 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe811175 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc52f3616 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc7af72bd nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd51c9c95 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xddd9811b nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe043dde3 nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe20ff2a0 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf53b718c nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf57d8707 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf5de3f24 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x42698a57 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x940ffbb5 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd3d156e8 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xeebd9098 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf05129a8 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf1a7ca8b nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x7376aa65 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x788dcb58 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe55c189a nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xaa261092 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xc9f54b38 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x05f395ce nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x4a700606 nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x66a4cffe nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xd1eee4ae nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x7878d39c nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xcfbe3b49 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xf67c3dff nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x02150920 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x092d2b69 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0950f64c xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x170edef6 xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2736f3cb xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x352577a0 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x48d1edc7 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5df1f459 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6994c3d6 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6a010027 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9511e7fe xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9a1279f4 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d96af3a xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xae43b07b xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc17d8658 xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1cc61f1 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb9b5c63 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd070628b xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd80916f7 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe03703e3 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf269b177 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x6eb4447b xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb9b4bfef xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x63c5ac30 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x91321b7b nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xd1104140 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x498be3a8 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7109463e nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9b5ce3e2 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nsh/nsh 0x913d1087 nsh_push +EXPORT_SYMBOL_GPL net/nsh/nsh 0xbe39ba0b nsh_pop +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1a7dd622 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x272399b0 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x69c1dc83 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa73923ed ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb92398a5 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcad7115a ovs_vport_free +EXPORT_SYMBOL_GPL net/psample/psample 0x5b21b97d psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0x68d400ab psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0x80e591ce psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0xbb7afcf2 psample_group_put +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xe0c83651 qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xf116ce00 qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xf9f1bbbd qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/rds/rds 0x009d26d3 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x04b94ec2 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x08a4b1a9 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x24925fc0 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x2a05fa69 rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x306c2e39 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x3acc335c rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x402693ba rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x4ff16f4c rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x5584d39c rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x677a80af rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x69e2f583 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x79b39820 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x7b18abd7 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x7cfa082a rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x83daa28b rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9edae9e5 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xa08582b4 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xa56570b8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa73a84a2 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xaa42425a rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb180f58b rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xbff88c0e rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcb7cd27a rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xccde3ab3 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe8ccc386 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xf0f289a8 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xf8440890 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xfe0f22ab rds_connect_path_complete +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x73ac7aa1 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xa1df4974 pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x28000fd1 sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x399f64bd sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0x5c7f86b7 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/sctp/sctp 0xdb67369f sctp_for_each_transport +EXPORT_SYMBOL_GPL net/smc/smc 0x04ef39af smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x40b907a0 smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x5188a01d smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0x579c73cc smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x59f6020c smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x5b253859 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x8a198582 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0xb1e09d83 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xc0b3eb4b smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0xf2392328 smc_proto +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x27f6f4af svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7eb0df50 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xafa70727 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd11a8816 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00a3544a svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01dcb5ed svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03395d2a xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03843a8d svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x047056aa rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04dcfa92 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04e5af78 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0504b16f rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05751f52 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05f517f6 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06604ca4 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x089bc9ee svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08a3e2df xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08a82427 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a512f66 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0abb83b8 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b8a0c0c svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b8f4487 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e844456 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x101a497c rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1147ee01 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12b457d9 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x162a1632 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17f3a96a bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x182e9b26 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19cf1da9 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b795a38 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c6ae518 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d5902ed rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d6de941 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1de3c0be svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e7a620f xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2425c427 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2567a212 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25a6ef8a xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x269f90a5 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2784d4e6 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27b0caef rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27b8aabb rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27d991fc rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28c5e8cc rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x292e9926 rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a60ff4f rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b7f4d11 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f2882b0 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3071b9a7 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a6dcab xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32193442 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x326d786e rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b1a8d8 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33bb53d4 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34d184de rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x370ee4d4 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38cbb0b4 xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3adc42a5 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b2ee0da rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b7150da svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c3bf7ce rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d1db3fb svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41b0139d rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x428388a8 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x434909d2 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x438b0f49 xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x449af61d cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4562f4f4 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45c0a676 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4600987f put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4677c39e rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46a128b2 xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48313cb1 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48895721 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48958dd6 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c630cb6 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ce8307a svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ec8a6a4 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fadd6e0 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5217e1e3 rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x540728cf xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x553c35f7 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55855106 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558df905 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x583d67fc xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5acfe845 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ee93a0e rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f6c5bc8 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x608ce6aa xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60c246c6 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x624d7ee5 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62c11c69 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62cb62c6 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x639b91aa rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63f1452b xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x642a3f4a cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65e2aa37 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ed2439 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68c1aacf svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b3b4e22 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ca4ce63 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cfe179e svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6eec17ef rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fb50a4c auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ffc79f4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7107baac rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71925dd2 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bc40e3 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x759d0636 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77080e7a xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78420687 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78db7d18 rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79460988 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79fa2642 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a931086 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7baaced8 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c18ecfd svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cb35232 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eae38d8 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x807f033e xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8084cf69 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80e2ca8d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x841ce25a xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x866c9c44 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86fa61fe xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89812402 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8983f978 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8aa3ec66 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b193048 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bf8cded xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c3ac27a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c7be80e svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d143aa0 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dfd296a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fd098c3 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90103ef5 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90442a74 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91a96eb2 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92b0a7b0 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94183a57 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95033b74 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9670b5a1 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9718b2ee auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971cb9cb sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98c771df svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99aee353 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b4b5bd3 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bc1d994 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bccd071 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bee1e0b cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d3a9a85 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9de36420 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df2b9de sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fc9c435 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa00d552a xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2ad636b rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3128fa0 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4c8c791 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4fa4af6 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa81358e7 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa899c786 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa118410 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa92f511 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa96d3b9 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa975bcc sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafbd272c svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb000f807 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0912b86 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1d5135f svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3b8e34e svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3f9bebb svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5236b52 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5bbdbd2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb63aac08 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb81f0747 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb921a493 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba726e27 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbadb2314 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb027b40 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca56572 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd04b088 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe6ef3fb svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9a9b09 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf166c1c rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf900ced svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0296a04 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc275996d rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2c89524 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc63d926a rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc68fa2f4 rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc91ed491 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca6518b2 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccb9779f svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce662df6 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcef1449c csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf4903bb rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd035a0a7 rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0a52ee0 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd39442e1 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd566f4e3 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6cd4e54 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6f3d6b0 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7b355a6 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd952c76c rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd991287b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda5517d9 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc873ea6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddf2a8e6 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde665418 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdeb87d41 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfaae06f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1215d20 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe373629f svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4c0f85e xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe88a61a3 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8e1e40e rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe925f2ab svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb2525b0 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebe176f3 rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec3404ba xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeefdc4bd svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef8284e5 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b7775d rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf30a7a56 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf40e56b1 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf52cb5a4 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf86a468c rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa70bc0 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcd2b065 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd3b5658 svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe1133ee rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/tls/tls 0x5e117af1 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/tls/tls 0x9741d42a tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xca278dc6 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xda8094b5 tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x149fbe83 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x16b3e44d virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1c6800a7 virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1e82d5a2 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x21d569b8 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x248ec347 virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x269ad3e9 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x369ad3de virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4589781e virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4b3ecb16 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x54257d3a virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5b5c7a4e virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x62d010a5 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x64fcd398 virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6dc670f1 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7b78e3ac virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x83157636 virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8a79d133 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x96a92148 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x979c1d6d virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x993ff43f virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9c1204ae virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xaad048da virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xae6c9d92 virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb5be70cc virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcf72436d virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd212f211 virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xda4221f1 virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe3dd091d virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe5a4d9ea virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe83df62f virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x034c6eab vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0788d3fc vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x089e97e3 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0d85853a vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x167f02fd vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x29b873f2 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2b112959 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x493879af vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6549a601 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x91089810 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9826d0c9 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b1cc2ce vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa0e24800 vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xae2766c7 vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xae7ab630 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc1de47f8 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc92f7f50 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcc8b3679 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd926e05 vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe65d3c25 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf0fe73d3 vsock_create_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0f4ad6a9 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x274152b2 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x30800807 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79628475 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8fd87f0c wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb977f0b6 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbf61bdae wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7f94c59 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc82d4cd8 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd115ed82 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xec8d8fba wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf73e7c44 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xff6e0bba wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x33b7eebe cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3401e63c cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x460edc76 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x547bd0e4 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x72439626 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7759b4cd cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x78bc3b3c cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x894f09d2 cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x91c35c15 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9286293c cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x97cf01f8 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb2e99075 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcceae9d2 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd0b45762 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf9aa120c cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfd7089fa cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1ba3843f ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2df5634c ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5fbfcd1d ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x93ce3557 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/ac97_bus 0x56947898 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd 0x04c7f73b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x1028e679 snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL sound/core/snd 0x1755393d snd_card_disconnect_sync +EXPORT_SYMBOL_GPL sound/core/snd 0x5803d42b snd_card_ref +EXPORT_SYMBOL_GPL sound/core/snd 0x66d9529f snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x754e2bc0 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xadf76d38 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xbaf31122 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xca26d093 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xcf817f2c snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xe184a9f2 snd_card_rw_proc_new +EXPORT_SYMBOL_GPL sound/core/snd 0xe973e5df snd_device_get_state +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x190135f4 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x35ee1f80 snd_compr_stop_error +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x7c780809 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x7eb85aab snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x08a2a88a snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x335d345e snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3c879203 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x45e4b122 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x59ba6d72 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x764601db snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x79820ff8 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb6fa8c2d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdf117c3f snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xefeb4f57 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1aafa36d snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x29fd2e4a snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2bda14b6 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x308c741b snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7e11a722 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8be69120 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa03eed1b snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa7b7eb4e snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa991d684 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb95d3936 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdf9a85e3 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf6d31780 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x2ee677a2 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x39462bd3 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x1e857754 amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x35a04cb7 amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3860115e amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x4342ca4e amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x46f6d062 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x55fda23f amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x58096122 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x64add2d0 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x7576761b amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa1b51aeb amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xa6533c10 amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xdafe9d01 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf918fda9 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08f791fe snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b18f46f snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d41c6e8 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0fd6010a snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13d5b8b7 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x141db75a snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x152eed5e snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1dfb53bb snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e6aa051 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ea7ee01 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x206a9895 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x218fabae snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22186eff snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2934629e snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2953b344 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2bd71e66 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c699d92 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e6eebb8 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3520e641 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3cb0ed33 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f222b25 snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f41199e snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49197076 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4d324287 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x527caa9b snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x536cf47e snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x53db9e7b snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5afdee24 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b4b96aa snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6356f198 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x639f8aed snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x646e7f97 snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67d8c2ab snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6b7e25a0 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6bcf3732 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6f6441ad snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7317eb76 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x743e8551 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76fabc93 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7f1a2aab snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x859d954e snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x86c5a487 snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88c9da1a snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8951a7ab snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89ed302f snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a3daf65 snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x912a1d7b snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x989800a1 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9dbba4eb snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e4c2a62 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1e8935c snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa393dace snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4a55546 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa8b8744b snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb01b4c6c snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb80ce729 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb13d282 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7e36c9 snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf8dba8e snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5e87e32 snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc84947d1 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca56b3a0 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcab7e2b0 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc803b07 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xce24a834 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcfaad83e snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcfaeee2c snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcfb61c32 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd045b7ad snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4c76176 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd7d9d56d snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb4b3340 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe52dceb9 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe5322327 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xed7be431 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf1b949f7 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2488b60 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3f6f968 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf73dbbcf snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf84d6435 snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x2b73f1b7 intel_nhlt_init +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x3383501f intel_nhlt_get_dmic_geo +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x43e49cf5 snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x4e859456 intel_nhlt_free +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x25a02a84 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x36e9c2ab snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6487565c snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xadb87be7 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb6edc98d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf2d82f30 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02273e07 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0461c32c snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07e297f5 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e2b6ab8 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1361e607 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1661c95b __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18c54c9f snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1915a80f snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x193e4b2a snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x195a221a snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d86958c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22c6390e snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25384849 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x261b51c9 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27e565ed snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b62e520 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2db8e254 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e4ef9b9 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32f01013 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x344364be __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39a74802 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b8e34bc snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e1ab7bc azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40dce680 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x423d37cb azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x437fca9b snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x448a0145 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x464ddce7 snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x475ef10b snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b5ad152 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x503f66d5 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x505a4b78 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51817016 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51be5781 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55aef84b snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x560d9c53 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56504c69 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x565878a7 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5be3cbb8 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cea2cb5 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x612350ad snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6220d29f snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6669373c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x667eb684 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6957a9ae snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bb3d72b snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6be3f3a6 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ce4996f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6da79dc8 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dacbfae snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e62980a snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fb59f85 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ffa1590 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7198aad8 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x723ccbb4 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73b24fca snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x742b987d snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78a2223a azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e183051 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f3f7b1d snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83e0eee2 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x848e410b snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85f7689d hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86422096 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a309a2f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c1b8f16 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d35bf3c azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90559304 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91e423ba snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9406a12b snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9805d86a snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a2f9abc snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ee2d278 snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f986350 snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa17fddc9 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa32a7d43 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa74289fa azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa51f5b1 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac3fd4cb snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac925155 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacad6cfc snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad3eb80c snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaed43b7d snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb23d406d is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3da982e snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6c3cb4e snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb802febd snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbae9c0d1 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf904b88 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2723bad snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc48110a2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4caa6de snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc56162ea snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc609ebb7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc81e33b8 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8876501 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc92d6133 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb0860b0 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbd59b2d snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1b0e706 snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd85d4d4e snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9d28088 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe000886f snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0ec69bf snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4f324a9 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe53e411a hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6a605a8 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe70dfa70 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe84b7ca2 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea171dd9 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab3a3ad snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeae58860 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec015eb6 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xecad31ff snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xecc02723 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed0895fb snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf11de277 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5483253 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9d7aba5 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff940c2b snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffecc3da snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x08a1b790 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x122388a7 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x20c116a0 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2196d2b5 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x34f3c727 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x356d2f62 snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3704a668 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x37912cc8 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x40013a17 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x453d9365 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x50123a58 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x541e40fe snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x584165f8 snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5aa9f721 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x631f67fc snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6aa8d8d7 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x88e78db8 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd6f4eed9 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe496d9f0 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xebfff4e2 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf70b1499 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xff1f6442 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x3cf00d20 adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0xc558c33a adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x358cd705 adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x36e15f88 adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x525601ce adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x5b68d982 adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x6648d500 adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x7b5f2454 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb371040b adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb508b4f5 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb5daa42e adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xd74401f5 adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x4818b1d0 adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xb299617c cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd71f5aa4 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x007e741c cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x34eb303c cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x5ab7e0f0 cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x88dab529 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xd654624a cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x3907e9d4 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xc8f32f1e cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xdb50ee1d cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x7393e279 da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x8b925531 da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xa999ce71 da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x905836da es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xcba0dbd5 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0xdf2a3981 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x3876252d max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0x752d9f01 nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xb280a874 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xd3645c3a pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xf7698ede pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x97b629b4 pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0xd4d4f012 pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x98f86a93 pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0xafa6b6f6 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x058622fd pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x4d94893f pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x93dcb4e0 pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xf8e0a79f pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x48d25a3f pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x79e8501c pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x83561147 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xde061376 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x61ff58e3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xff87892f rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x0eceb816 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xfb15cf9c rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0x88d9b4e2 rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x07d89d88 rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x11d3a32a rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x353571f9 rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x4e178b4b rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x59d3d967 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x6afcc75a rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x70deaf35 rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x76d57943 rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x9de2c240 rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xace8bdbd rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xc37f017e rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xf2d28ab7 rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x76f9bd55 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa77d6ad1 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xbd8a2346 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xbead8684 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xdebf24f3 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x6c7fd6c3 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0x1b35f22e devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x5137b7fd ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xcdaa6f77 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x36c236c2 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x42d27aac ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x13771867 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x8e65be5b wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xa6d9a668 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb915b1c3 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x71f18a2f wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7969bf94 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/imx-pcm-dma 0xee6b547b imx_pcm_dma_init +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x1047f494 fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0xff2675b8 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x16a81a7f asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3a0682c7 asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3cc6af3f asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x4d59110e asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x617eb91d asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x63857cce asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x696d7120 asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6eea239a asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x73368dc2 asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x757a26e1 asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x8108e742 asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x949f9309 asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xb594273e asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xc2c5ca27 asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xced141b3 asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd04e4c37 asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd68659e0 asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe6bfb29b asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x04ea41ee mtk_memif_set_addr +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x08da80cb mtk_afe_fe_hw_free +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x1c4d26e5 mtk_afe_fe_prepare +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x225ac6a5 mtk_dynamic_irq_acquire +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x2672cc29 mtk_memif_set_pbuf_size +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x39a4d0b9 mtk_afe_suspend +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4ee05d28 mtk_afe_combine_sub_dai +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4f0cb968 mtk_afe_fe_startup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x5147f7a4 mtk_afe_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x5d7f39e2 mtk_memif_set_enable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x82593815 mtk_afe_add_sub_dai_control +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x9696cb01 mtk_afe_fe_ops +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x99291cb2 mtk_afe_fe_trigger +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x998a35a8 mtk_afe_pcm_platform +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xabecba45 mtk_memif_set_rate_substream +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xae1264c1 mtk_memif_set_format +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xb0868925 mtk_memif_set_rate +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xb62df87b mtk_afe_fe_hw_params +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xc47f0040 mtk_afe_pcm_new +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xc828ffa7 mtk_dynamic_irq_release +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xce50801c mtk_afe_fe_shutdown +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xd97c3c43 mtk_memif_set_channel +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xdd87ef45 mtk_afe_resume +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xe58be787 mtk_memif_set_disable +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x2a64f44d axg_fifo_pcm_new +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x33bc66e6 axg_fifo_pcm_open +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x49befc23 axg_fifo_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x53d6aee3 axg_fifo_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x540fac73 axg_fifo_pcm_close +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x93c99fc0 axg_fifo_pcm_trigger +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xac352611 axg_fifo_pcm_hw_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xdd6cae3d g12a_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xf38fa500 axg_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x216268ee axg_tdm_stream_alloc +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x7640ce3e axg_tdm_formatter_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x8e89f2ef axg_tdm_formatter_event +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x9258a990 axg_tdm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xb0e9b620 axg_tdm_formatter_set_channel_masks +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xd6361dff axg_tdm_stream_start +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xf2948bf2 axg_tdm_stream_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-interface 0x6169ed05 axg_tdm_set_tdm_slots +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x4dc2f89a meson_card_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x54861b62 meson_card_i2s_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x58d97604 meson_card_set_be_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x7449bba2 meson_card_set_fe_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x81e85f1d meson_card_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xa8b58793 meson_card_reallocate_links +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xc6cbb9f5 meson_card_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xe6a836b1 meson_card_parse_dai +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x3f044798 meson_codec_glue_output_startup +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x84f0e788 meson_codec_glue_input_set_fmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x91db8f69 meson_codec_glue_input_dai_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xdb39fb83 meson_codec_glue_input_dai_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xe06fd207 meson_codec_glue_input_get_data +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xfdfe166f meson_codec_glue_input_hw_params +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x28421460 q6adm_get_copp_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x6e5f5ff5 q6adm_matrix_map +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0xcc0bcd11 q6adm_close +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0xed2bb6b3 q6adm_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x328187fe q6afe_port_get_from_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x369b6eeb q6afe_port_put +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3997e13a q6afe_is_rx_port +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3b16d6e7 q6afe_port_stop +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x498d993b q6afe_get_port_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x5332304f q6afe_slim_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x7df60063 q6afe_port_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xae809786 q6afe_hdmi_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xd4523c59 q6afe_i2s_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xe45246a8 q6afe_port_start +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xfaf22370 q6afe_tdm_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x01d71b3d q6asm_stream_media_format_block_wma_v9 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x151ae9d4 q6asm_cmd +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x40299233 q6asm_run +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x5382edf1 q6asm_open_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x689e402d q6asm_stream_media_format_block_alac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x68db31e2 q6asm_unmap_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x6d3b4aa4 q6asm_audio_client_alloc +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x6eb89e95 q6asm_media_format_block_multi_ch_pcm +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x720ce413 q6asm_stream_media_format_block_flac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x7353d9dd q6asm_cmd_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x857330c9 q6asm_write_async +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xa06e9828 q6asm_stream_media_format_block_ape +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xc5a116a4 q6asm_get_session_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xcc4952e4 q6asm_audio_client_free +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xd599e50f q6asm_enc_cfg_blk_pcm_format_support +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xdbedfcd9 q6asm_run_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe060c0a1 q6asm_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe1531577 q6asm_open_write +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xea75a5dd q6asm_map_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xf40aaabe q6asm_stream_media_format_block_wma_v10 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x7e52e977 q6core_is_adsp_ready +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x9b02ea0d q6core_get_svc_api_info +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6dsp-common 0x17142e58 q6dsp_map_channels +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0x5b75f756 q6routing_stream_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0xa7a64259 q6routing_stream_close +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x028888ee asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x0b49d5c0 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x0f557b88 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x3394cd1e asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x14eb6ebd asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/rockchip/snd-soc-rockchip-pcm 0x0afa552b rockchip_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x6c5d2bcd snd_soc_acpi_find_package_from_hid +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0x8795d901 snd_soc_acpi_find_machine +EXPORT_SYMBOL_GPL sound/soc/snd-soc-acpi 0xa2585abc snd_soc_acpi_codec_list +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x008ce249 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01573296 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01ff5119 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02587199 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03040ebc snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x03485564 snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x039b2524 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04e3464b snd_soc_new_compress +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x064144f0 snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x089b1578 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08e287d1 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0960b034 snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a4fcb83 snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ae2321c snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b64da3c snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d928a95 snd_soc_component_read32 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dbd940f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e166092 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f919391 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fcf42b5 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12ef5533 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16b03352 snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16d533e8 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x176e822a snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17cdaf5b snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x189f5457 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a0b5a16 snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a3195c5 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b8d099f dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d119d80 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e28031b snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fc752d3 snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21c53be4 snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21eac496 snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21ec5159 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22bfc2b7 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22f306fc snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2384ea76 snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23b53df0 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26465121 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26c7471d snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2785eba3 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e879b30 snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ea67313 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f437c5c snd_soc_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31296a1b null_dailink_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33bb2320 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3661abf8 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a09021f snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3aef1c75 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3af56897 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3cc5b40b snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d8f9f7e snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f554cc0 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fd5768c snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46b2deff snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46e74f61 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4767b39e snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a96e632 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e582ae2 snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f7ca32c snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fb4790b snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x521b1299 snd_soc_dai_active +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52a473b3 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57304ade snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5998a734 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a215333 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ac40731 snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d5f013f snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x648e1e97 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65a7497f snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65efb812 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66e7c4f2 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67192313 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6721bc7e snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6824d3f0 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69954bb4 snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a2afaf6 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a995ebd snd_soc_dai_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bc3ad65 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x705fba35 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x711c370c snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x712387d8 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x737597a2 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73d39c43 snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7421ccce snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74a70d64 snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74b53aa8 snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75479358 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75fb9c9c snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x767943af snd_soc_dapm_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76883b9a snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7738471c dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7af42e3c snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7be8e2ba snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c176d22 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c5e4322 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e1de256 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f9a275d snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80b3e8f0 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80dd93ca snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81b11d9b dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83c523d8 snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x843c03b1 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84e3364c snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8697cf23 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a450c9f snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c00a885 snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c054ef0 snd_soc_lookup_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d6d7038 snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9056ecbe snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90e91d74 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91565b6e snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91b53a75 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91bb9a1d snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92d87dcb snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x932748c4 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93d84ad4 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95377e1f snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9608d85f snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b2b91fc snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c826c38 snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d789b52 snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e02c182 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fa549b4 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa110fde9 snd_soc_add_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa141dace snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1a60001 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2778267 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa39723c1 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa57a620c snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa83f93ee snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa1edc01 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacc73d70 snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacfbe9ca snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0e165d7 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4ca4307 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4f6122c snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5bb6da7 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb68f328c snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7af171f snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb813191a snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbad1815a snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe447725 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbef0f096 snd_soc_component_set_jack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc068d83c snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc39104cb snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc437ec91 snd_soc_runtime_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4c53f3e snd_soc_get_dai_id +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc88b14f4 snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc915e377 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc94d2fea snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca056a95 snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb20fefd snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc4024bc snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd2638ec snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcde4f475 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd15004ff snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd233df7c snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd33e9001 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6b1b38e snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc09bf4c snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf6e9c62 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfabe47c dapm_pinctrl_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfd51bfc snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0555f94 snd_soc_find_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0622f71 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe08d77fc snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2ab4a78 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2f39c54 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5b6f079 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe98a4678 snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea2fa09d snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea6d2b85 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaf5010b snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb4275ca snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb7acee1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec4a5b8d snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec60ab3a snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefcb25a3 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0f372c2 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3b2f42a snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6164709 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf75906e4 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8d5eb74 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdb69d09 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfeabfb75 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfeef0529 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff981200 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x163c5ebe snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x45f6d421 snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x59391571 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x895b06f2 snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x2c64d423 sprd_mcdt_request_chan +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x5061832c sprd_mcdt_chan_int_disable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x609193c3 sprd_mcdt_chan_write +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x68b4b311 sprd_mcdt_chan_dma_enable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0x6c283cec sprd_mcdt_chan_int_enable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xa5fdddd3 sprd_mcdt_chan_read +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xb67dbf49 sprd_mcdt_chan_dma_disable +EXPORT_SYMBOL_GPL sound/soc/sprd/sprd-mcdt 0xdf547b54 sprd_mcdt_free_chan +EXPORT_SYMBOL_GPL sound/soc/sunxi/sun8i-adda-pr-regmap 0x37a3a5c2 sun8i_adda_pr_regmap_init +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-edma 0x6c590f7a edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-sdma 0x6b68ab7e sdma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-udma 0x515f9309 udma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x161098b1 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1d5ba804 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1d5c2288 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2f16ded2 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x32bb5af6 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3ba0e8db line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5364a050 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6742685e line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7efeae24 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8024fbc1 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x90da5b55 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x917eebe2 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc96ea957 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe6003a4a line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf08a43c3 line6_send_raw_message_async +EXPORT_SYMBOL_GPL vmlinux 0x00045329 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x00102d32 devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x0032049d cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0x003855f6 extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x0055b614 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x00565f18 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x00640999 dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0x008d0aba input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x00b5a54f iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x00c3337f qcom_smem_state_get +EXPORT_SYMBOL_GPL vmlinux 0x00c7b08c efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x00e3ecbe acpi_device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x00e63841 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x00e80265 dpcon_enable +EXPORT_SYMBOL_GPL vmlinux 0x01110edf thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x012e730e apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0x013531c8 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x015b069d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x015fd5f0 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x0167d405 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0190aa08 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01cce343 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x01ceec04 blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f127f7 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x021504c7 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x022fc1b0 meson_clk_dualdiv_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x0233c79e serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x0240fa95 blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x024eed41 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0258c8b6 __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x025948cb ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x0272927f devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0x027a2410 pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x0280a294 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x028da852 i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x029dd9d5 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x02c2c6bb scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x02c6fab7 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x02e06a8a tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x02e8080f irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0x02f30689 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0x0300963d shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x0311e604 bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03225aa4 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x032c3f8b fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0x0336dfd6 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034a7f4f qcom_smem_state_register +EXPORT_SYMBOL_GPL vmlinux 0x03512c2c splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x03819a9f usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x0396ff67 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0x03ac0208 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x03ae66ea input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x03bcad58 crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03c6f202 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x03df1a01 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03e37ff7 regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x03e84e79 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x03f4b6bb mmc_pwrseq_register +EXPORT_SYMBOL_GPL vmlinux 0x03f84404 usb_of_get_device_node +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040428fe efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x0414e525 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x042ac215 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x0433113f inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x043a6cab fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0x043ec993 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x044d9b75 dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x044e779a __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046f359e of_overlay_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0477769a kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a07c71 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x04a7d97f fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x04a9126b page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0x04b2ed65 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x04bee96e blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c912f4 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x04c9385a iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x04dd59fa tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x050781a1 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x050901ba crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0x050fc93f kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x05114b60 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x052d9456 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x053512af blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x054cbaf6 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05610897 of_changeset_destroy +EXPORT_SYMBOL_GPL vmlinux 0x057ce998 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x057faa88 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058c671d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x058f9366 apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x059eca52 pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x05a5856b __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x05b6c72b rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x05bc1f3c fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x05c0939f dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x05d7c5de preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x05e3de14 br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x060375eb account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x0622ac04 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x06255a3f user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062f0211 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0662e8b8 pinmux_generic_get_function_groups +EXPORT_SYMBOL_GPL vmlinux 0x0685a2fe devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x069b5ce8 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x06a10b8e devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x06aa15a6 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x06ace640 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x06adbc97 xhci_mtk_add_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x06b1f644 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x06bcd734 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x06c18533 i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06d33167 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x06d83d88 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x06e12354 clk_regmap_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x06e178a9 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x06e4433e sunxi_ccu_set_mmc_timing_mode +EXPORT_SYMBOL_GPL vmlinux 0x06ef98a9 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x0700b49f ti_sci_inta_msi_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x0700f4b7 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x07093898 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x071edeb6 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x074059a4 crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x0746d626 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0x07498d0d pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x076987a6 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x076b8572 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x078b4b60 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x0790263a gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x0793b8e2 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x0795e92b find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x0799beeb __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x07a271d4 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x07ac2417 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07bf2b7b cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0x07c23703 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07e8c30e netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x07f19c83 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x07f2e33d iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x07f5b9dc fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x07fa055e scmi_protocol_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fb4e6f srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0800ee24 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0x080dc06a edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x0816538c sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x08169304 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x0816f443 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x08418d08 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x08427e63 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x0843ba7f wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x08557a4c mtk_pinconf_bias_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x08597308 mtk_pinconf_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x085bffd1 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x088983ce iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x08aed913 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x08b25308 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x08bec0bf nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0x08c1a683 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08c80f2f nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08e772cd extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0x08e98aa1 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x08efb908 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x0900e018 stmpe811_adc_common_init +EXPORT_SYMBOL_GPL vmlinux 0x0903bc0d relay_open +EXPORT_SYMBOL_GPL vmlinux 0x0907d14d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x090d9ccc __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x091ff86f ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x09337cd0 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x0933e388 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x093786cf synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x09391a76 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x093df6c3 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x0958a121 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0959d867 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x096b2418 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x097b7c9f usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09ceec31 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x09d63265 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x09f4c799 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0x0a0c9d45 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x0a2dc909 device_match_name +EXPORT_SYMBOL_GPL vmlinux 0x0a3a7236 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a51e8b9 encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x0a5753c4 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0a60119f perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x0a65fd3b __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a76876c __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x0a8d4d61 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x0a953d92 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0a95f0e2 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x0aa17d71 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x0aa20022 __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x0ab5f373 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0abc6be6 k3_ringacc_ring_is_full +EXPORT_SYMBOL_GPL vmlinux 0x0abe0213 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x0ae21ad8 is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x0ae29164 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b252700 synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0x0b28b921 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b3a3ed7 zynqmp_pm_fpga_get_status +EXPORT_SYMBOL_GPL vmlinux 0x0b3b0b0e usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0b51e321 virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b690f04 k3_udma_glue_tx_get_txcq_id +EXPORT_SYMBOL_GPL vmlinux 0x0b6f2c0c irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0b70e286 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x0b810a27 battery_hook_register +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b8bf355 do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0x0b8e4538 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x0ba39ee1 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0ba6d554 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x0baa9c76 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0x0bb028d4 hisi_clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x0bbe3e1c rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x0bc542f9 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0bd10335 i2c_detect_slave_mode +EXPORT_SYMBOL_GPL vmlinux 0x0bd233d7 iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0x0c0899f6 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0c15b701 serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x0c208108 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x0c26899c rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c3b2241 altr_sysmgr_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0c3e6241 k3_udma_glue_disable_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x0c4939db devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x0c560fa3 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x0c76d2ed iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0x0c824c96 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0c8e0475 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0c9026c3 thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x0ca64af6 genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x0caf6339 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x0cb579c0 __free_iova +EXPORT_SYMBOL_GPL vmlinux 0x0cb9beeb devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cc2580e ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x0cc3b29e acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x0ce3dd73 bman_is_probed +EXPORT_SYMBOL_GPL vmlinux 0x0ce43622 fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cecd50f sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x0cee6ef5 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0cf329c5 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0cf7eca0 rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x0d116ad0 __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x0d15e880 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x0d1b5da0 serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x0d23737d ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x0d40d8be ti_sci_get_num_resources +EXPORT_SYMBOL_GPL vmlinux 0x0d40fc38 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x0d447862 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5dab7a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x0d771a2b debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x0d792b4e dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x0d7bc75b __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0x0d7cbc21 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x0d7f9f04 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x0d98f6b0 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x0d9cba2b of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x0d9dec4b tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0x0da59a48 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0db051b6 regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x0db3a955 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x0dbde0d6 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x0dbed0fb i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dd3766a regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ded4b85 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0df3be14 skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x0df52a96 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x0df54b88 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0df9ab93 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e120cde skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e14899f devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x0e45e8c8 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0e5ca760 fsl_mc_populate_irq_pool +EXPORT_SYMBOL_GPL vmlinux 0x0e5dc415 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x0e6c8861 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0e6e58f8 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x0e8f4da3 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0e943b5b xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0e949aa9 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x0ea5cbce xen_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x0eb0bbf9 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0ebd4cda serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x0ec70a56 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x0ed68b57 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x0ed8c917 devm_ti_sci_get_handle +EXPORT_SYMBOL_GPL vmlinux 0x0ee6319a regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0ef8ed30 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x0f079d43 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x0f0cfcab pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f26fa7f pinctrl_parse_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x0f39445d extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0x0f4acfd0 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0f4b7a00 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x0f546fcf device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x0f576ec7 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0fa33903 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0fb52fd6 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align +EXPORT_SYMBOL_GPL vmlinux 0x0fc4a751 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x0fc89039 amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x0fcb3440 crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x0fd668d8 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0fd7fa0d led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x0fdb906a alloc_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x0fe7617c __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x10101036 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x1012b8d2 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x103be139 blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x1044c84d dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x105540b3 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x1068c337 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x10695790 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x107a004a ref_module +EXPORT_SYMBOL_GPL vmlinux 0x107ec603 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x10853d8d wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x1091197d ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c767a8 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x10cd7563 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x10d64648 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x10db05f9 sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x10e9a284 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ece578 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x10fd15c4 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x11072336 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0x110c46c4 gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x111f61dd dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x11221110 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x112811d2 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0x113ad0b9 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x114ad467 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x1172d487 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x1185c249 arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11b365c1 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x11b5c6c6 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x11bca51f devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c4cf90 sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0x11d7c996 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x11d97f74 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11e06ee9 badrange_init +EXPORT_SYMBOL_GPL vmlinux 0x11ed2e63 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x11f79806 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x120be15f bgmac_enet_resume +EXPORT_SYMBOL_GPL vmlinux 0x1215a2b6 dev_pm_opp_of_get_opp_desc_node +EXPORT_SYMBOL_GPL vmlinux 0x1215b507 icc_get +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1221a02f iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0x122d8275 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0x122ee203 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x1234ffa1 cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x1251d191 netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1259b431 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x125a71f8 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0x12603add tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126f1ea3 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x12736fb4 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x127dfde3 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x128c2ae8 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x12903fe9 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x12ab31f1 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x12b85d8b tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x12be3d68 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x12cac3ae __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x12cd0b53 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12e99a3a mtk_eint_find_irq +EXPORT_SYMBOL_GPL vmlinux 0x12f8577c __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x12fee4d4 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x12ff104d linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0x130c1528 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x130cf3f2 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x130f3db3 bgmac_enet_suspend +EXPORT_SYMBOL_GPL vmlinux 0x131481f2 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132f73a4 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x1332cc0c unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x13400514 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138538c8 lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x13920b8a cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x1395ab9c devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0x139af21c metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x13a01437 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x13a6d46a dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x13be9f55 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x13c19ee7 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13de726a xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x14047a6a dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x1418238a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0x141eecd8 fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x142c921d pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0x143b8179 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x143fdd8c device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x1442c75d devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x144591f9 hisi_reset_init +EXPORT_SYMBOL_GPL vmlinux 0x145261a0 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0x1456762b k3_ringacc_ring_get_free +EXPORT_SYMBOL_GPL vmlinux 0x1485a307 free_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x148847c2 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x148c3297 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x148c763f ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x14c29d69 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14c3a1ee nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14d382d9 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x14d5ff70 phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x14e0df79 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0x14ec4fdb evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x14f22c75 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x14f3bae5 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x150212db thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x150599a7 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x150d94ed fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1522bc33 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x15698242 sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0x156cdac8 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x15701201 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x15885585 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x159f5beb rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x15df932e skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x15e6d72d gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15efb59d balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x1602658b fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x1606e325 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0x160742b5 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x1627a093 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x163675ab gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x164dde13 fsl_mc_allocate_irqs +EXPORT_SYMBOL_GPL vmlinux 0x16516798 osc_pc_lpi_support_confirmed +EXPORT_SYMBOL_GPL vmlinux 0x165e88e1 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x166c186a sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x166d6443 __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x1671f592 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x16735905 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x167d7113 acpi_bus_register_early_device +EXPORT_SYMBOL_GPL vmlinux 0x16864746 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1694914c pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x1697fda3 serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x16a608c5 hisi_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x16ae1ec4 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x16b2a272 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0x16c769d4 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16da40ff securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x16e76f26 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x16f15139 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x16f2640d devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x16ffc8bc devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x17011e31 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x1701e2e5 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x17031800 cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0x170b3f4a ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x17139920 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x171edb6a sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1720b090 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x1720cbdf ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x1725c43f of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x172a962b iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x172d9098 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x17410283 phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x17497918 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x174ea197 sprd_pinctrl_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x17591ecd zynqmp_pm_write_ggs +EXPORT_SYMBOL_GPL vmlinux 0x175df85c regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x1769f5bf strp_init +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177f3c3a pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x17882d8a pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x178ae307 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x178e562c __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x1793e776 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0x17970345 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x17a3993f __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x17de70f4 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x17e01f11 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0x17fd3ee4 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x17fddce2 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x17fe36cb regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x18158d10 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x1829d124 dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x183a70f6 acpi_set_modalias +EXPORT_SYMBOL_GPL vmlinux 0x18434105 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x186d8fd8 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x18728552 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x18872fe3 sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0x188aad66 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1891472e crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x18ad4832 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x18c0940b ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x18cb21f5 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x18ceb713 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18e9dc69 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x18f10f38 k3_udma_glue_enable_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x18f5e940 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x19032d6d trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x1904a8cd dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x192137f4 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x192422be gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1925baa3 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x192b6892 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x192be89a pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x194653c4 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x1946a42d fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0x195ee4b4 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x1983fad2 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x1998729c rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x199e6640 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19aa3b07 tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0x19aeb339 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x19b15a6a xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x19c20269 soc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19cd1f70 __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x19d30733 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19ebdecf power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x19edd064 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a04f93c dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a180136 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1a1c6f4d crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1a248b31 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1a3701ed spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0x1a43751b regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x1a5a3731 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1a5b3d80 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x1a5c5ac4 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1a631142 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a6f9b3a __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x1a742a10 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x1a77903a of_alias_get_alias_list +EXPORT_SYMBOL_GPL vmlinux 0x1a8228d5 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1a866c33 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x1ab135ee ahci_do_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1ab53dce devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x1ace5adc clk_register_hisi_phase +EXPORT_SYMBOL_GPL vmlinux 0x1ad8b714 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x1ade585d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1b08d6e2 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1b1471f3 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x1b1c23f0 of_property_read_variable_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x1b261333 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x1b2c71e5 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0x1b35065c gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0x1b38b181 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b3cb0c9 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1b4051ad trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b6131b9 alloc_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b78e29c dpcon_reset +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b91ca3b inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1ba588ed scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x1bb199ea relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x1bbbcf24 pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc8f1ba pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x1bdc601c devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x1bdf7a21 sprd_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x1becde8a gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1bf39d5a rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0x1c0af502 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x1c183fb6 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x1c1f36b0 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x1c224004 devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x1c413cb6 mtk_pinconf_bias_get +EXPORT_SYMBOL_GPL vmlinux 0x1c44b902 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1c499945 elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x1c4f3b68 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x1c54846a gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c77d4c5 component_add +EXPORT_SYMBOL_GPL vmlinux 0x1c80366a gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c89fb22 zynqmp_pm_clock_setparent +EXPORT_SYMBOL_GPL vmlinux 0x1ca4a28c device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x1ca4a930 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x1ca4db14 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x1cacd79b amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cb7c983 apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x1cb9a1c8 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cc36ec0 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x1ccfc7aa rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1cd1f436 clk_regmap_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x1cd4154a dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x1cdd07f8 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x1cf43e8c governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x1cf7c6de dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1cf902b2 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x1cfd34bf sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1cff547e __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x1d162d94 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d289f43 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1d374448 fsl_mc_bus_dpbp_type +EXPORT_SYMBOL_GPL vmlinux 0x1d555f9b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1d5ae0af security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d845fed vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x1d8d4a26 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1d9fcc50 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x1dae6328 regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x1dc71634 vfs_write +EXPORT_SYMBOL_GPL vmlinux 0x1dc9081c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dd69f04 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x1deadc2d fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0b24c2 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x1e19f059 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x1e32c62f xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0x1e356d0e phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x1e3e9067 of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x1e408231 blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x1e4b374f rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x1e51dabb __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e7034b8 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7c49e0 gnttab_dma_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e86df4c genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0x1e8a7e72 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e9bc719 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1ea417f5 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1ea997cd __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1eaec09e sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec311e0 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1ecaaa36 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x1ed4e026 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x1edab433 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x1ee7d3cd hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1ee87538 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x1ee96563 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1ef130e8 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x1efb0340 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f193601 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x1f1c48d8 bgmac_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f1cc011 zynqmp_pm_get_chipid +EXPORT_SYMBOL_GPL vmlinux 0x1f26eb14 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x1f2b9ee4 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x1f2fcd06 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1f36734a kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f4f244c fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f665fd6 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x1f67cd47 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x1f835f67 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f9a2b53 zynqmp_pm_clock_enable +EXPORT_SYMBOL_GPL vmlinux 0x1f9f963e uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1faa7f92 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x1fae048c rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0x1fb70eb9 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x1fbaf10b spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x1fc25ec4 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x1fcf18c4 gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0x1fd20918 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x1fe41ebb ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1fed6dad i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x1fee7136 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1ff6f58b ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x200d617c pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x20290cf9 of_i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x202d833a devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0x2041a1e6 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2041cb3a of_pci_get_max_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x2049c4c8 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x204a2f26 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0x204f2c5c gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x20500165 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x206dd578 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x2077035b uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x2077706f device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x20778d04 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0x207e4f2c acpi_irq_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x2086ec74 devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x208bfafb unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x2093f4dd clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x20978fb9 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x209cc645 dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0x209ecdb9 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x20a61322 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x20acf9a6 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x20b1b407 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x20e9a5c5 pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x20eee1fe usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x20f9ab1c mtk_pinconf_bias_disable_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x20fc2dd6 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2119d1c1 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2121f0ea skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x2126d3f6 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2133eb9e pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x21341aee __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x218a6c7f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a9d793 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b4a9f2 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x21b9f28b edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x21c34c8f gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21da7394 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x2228b824 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x2246b4dd __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x22678c62 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x228b0d05 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2291ebf1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x22949f66 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0x229bb513 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x229e8602 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0x22b03d5b devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x22bcddb3 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x22ccab3a split_page +EXPORT_SYMBOL_GPL vmlinux 0x22cfc72e irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x22d21ab9 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22d95533 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x22ec5205 cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x22fca1f4 xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0x22fce829 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x22ff970b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2305f0b9 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x2326717e gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x2334232c xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0x233a2051 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x233be5c1 fsl_mc_resource_allocate +EXPORT_SYMBOL_GPL vmlinux 0x233c6090 devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x234027ab fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x2342c19a devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23484a0a rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x23517e3e debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x235581f1 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x236773a0 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0x23728794 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x237b5319 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x2380cec9 device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23ae425b devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x23b025d3 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x23bbdc66 acpi_device_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x23bbe8e9 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0x23ce84cf hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x23d31f8a evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x23f731e1 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x23f7ef34 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x23fe528d __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x2403c7bd of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x24085efe vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x241f8e94 zynqmp_pm_set_requirement +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x24565fb3 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x24596a95 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x245f5b8d __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x2462acb2 mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0x2464da17 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2478e550 tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a48ab8 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x24a86d9b led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24e26ba6 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f00a26 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x24f2843b iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x2515364a of_device_request_module +EXPORT_SYMBOL_GPL vmlinux 0x25219767 dpbp_close +EXPORT_SYMBOL_GPL vmlinux 0x25263869 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x252aaa82 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253d9a41 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x254afb32 cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x255ece09 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x25697a3f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x256a784c disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2574da11 zynqmp_pm_write_pggs +EXPORT_SYMBOL_GPL vmlinux 0x257ad2c1 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25910772 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25937470 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0x259661a5 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x25975e84 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x25a010cf crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x25adda2a k3_udma_glue_push_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x25b0ab25 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x25b85026 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x25ba1b3a clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x25bd7b2b cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x25d38ab7 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x25dfbfef check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x25ec019e xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x25ef1ee9 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x25f02cd5 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x25f0bdce clock_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25fd7de1 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0x26036e23 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x2609ea56 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x26107b24 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x261b3f68 ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0x26302138 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x26398083 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x263f039e xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x264a1c28 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x2650458f gnttab_page_cache_put +EXPORT_SYMBOL_GPL vmlinux 0x26517878 spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26548e9e kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x26613c78 security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x26688e91 pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x26689138 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x2669ddea wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x266ca9ca devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x2672505f pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26a01c4c tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26abb89d ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x26afd0e5 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26ea3d86 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x2706749e crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x27191575 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x27220bbe regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x272e9d77 hisi_reset_exit +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x276ab4a7 fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x27715e4a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x27732367 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x2773c485 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x277fc368 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x2780da8c __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x278201df dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0x278a4490 extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x27904241 fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0x27a3ed1f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x27abfcfb unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x27b6c0ae xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x27bc8d8a adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x27bcc163 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0x27c0cae8 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x27cc575d devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x27f03f1c acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f69da3 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27ff7421 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x2804c980 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2815cb26 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x2817f7fd cppc_get_desired_perf +EXPORT_SYMBOL_GPL vmlinux 0x28184c23 regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0x281b2dc4 kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28402a25 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x286133d7 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286b7e8a arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x2873558d ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL vmlinux 0x289b2712 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28afbb08 cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x28b030d2 of_overlay_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28b97529 kvm_vcpu_destroy +EXPORT_SYMBOL_GPL vmlinux 0x28bc4dcc ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x28c77c70 sprd_pinctrl_core_probe +EXPORT_SYMBOL_GPL vmlinux 0x28de6704 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x28e2f102 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x28f26684 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x29186256 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x291f88b0 dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x29252e74 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x295b982a hisi_clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x2965103e user_update +EXPORT_SYMBOL_GPL vmlinux 0x29882094 mtk_pinconf_drive_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x2988b20a hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x29984a82 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x299dbf20 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x29b04b42 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x29b149e4 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x29b1f92d balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0x29bc1dd3 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x29d4d07f irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x29d54a05 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x29d76547 k3_udma_glue_tdown_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x29d933fb irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x29dfdca5 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x2a0e9c4b kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0x2a362f30 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x2a3ef0c2 fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x2a3fda47 kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x2a45b8b0 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a66d54d power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6df28d devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0x2a7e1ded gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x2abe6b6b pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x2ac1ee87 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ae1689e zynqmp_pm_clock_getdivider +EXPORT_SYMBOL_GPL vmlinux 0x2ae90dfe of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x2af4857c ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x2afb5740 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2b0765ca xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2b0fe000 gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x2b1d47d3 of_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x2b1e63b8 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2b209f93 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2b260a74 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b4a9835 fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x2b5485a2 crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x2b577841 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b660972 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x2b8e8106 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b960b66 qman_is_probed +EXPORT_SYMBOL_GPL vmlinux 0x2b9997fb atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2ba3fff5 fsl_mc_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2bad55a1 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x2bc7eae5 set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0x2c1bdb01 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c477c25 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2c48e9fe devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x2c5c26ff crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c756a2d tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0x2c775c9d cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7faefe pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x2c7ffed3 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c91c058 __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x2c93378a i2c_of_match_device +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2caf792c vcpu_load +EXPORT_SYMBOL_GPL vmlinux 0x2cb7c29a icc_put +EXPORT_SYMBOL_GPL vmlinux 0x2cc475cd dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x2cc495c5 rpi_firmware_property_list +EXPORT_SYMBOL_GPL vmlinux 0x2cc5196e power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x2cc56285 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x2cd48ab9 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0x2ce2b13c devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf08c66 vcpu_put +EXPORT_SYMBOL_GPL vmlinux 0x2d1a4bd4 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1f196a crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x2d290a3f mtk_eint_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d369229 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x2d3baeb6 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d481241 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x2d6394d0 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2d6aa0f0 arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x2d6d476f serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x2d80243a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x2d9925df of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2daff286 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x2db67d4a owl_sps_set_pg +EXPORT_SYMBOL_GPL vmlinux 0x2db9e722 fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0x2dde277a hisi_uncore_pmu_counter_valid +EXPORT_SYMBOL_GPL vmlinux 0x2df1c83c usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0x2df69500 pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e08226d badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x2e0b84d7 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x2e1b75ae blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x2e1cb5ef switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e389b81 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x2e649f24 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x2e678211 xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0x2e6b998a unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e6e8dd3 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2e94eda0 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2e989727 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x2e9bd1f1 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x2ea00a6b mmc_pwrseq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2eb71223 timer_unstable_counter_workaround +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec9e2b5 dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0x2ecdb183 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2ee506f3 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x2ee5275f kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x2ee7c52b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x2efcf70e nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f1a26f6 rpi_firmware_init_vl805 +EXPORT_SYMBOL_GPL vmlinux 0x2f1d4348 cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x2f1ec502 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2f1f1022 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f206b7d regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x2f212dc2 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2f26f7ec arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4300d7 devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x2f5b3b0d srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f6b2394 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x2f754fac blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2f802530 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x2f81f3f7 dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f846bc7 led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0x2fb72e9b sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x2fb7789f generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2fd79ea5 fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x2fe1675b blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x2fe9ad07 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x2fef543f spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x2ffe98b8 meson_vid_pll_div_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x3010a4ec tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x3010beab shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x301d1223 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x3020e264 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x302ed644 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x30351294 k3_udma_glue_rx_flow_get_fdq_id +EXPORT_SYMBOL_GPL vmlinux 0x30490141 virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0x305d6727 bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x30605604 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x306f5576 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x307f8015 of_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3090cb05 bind_interdomain_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x30929d57 regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x30ae50de tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x30b6afe1 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30e1ec25 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0x310bec64 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3127fb27 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x312f68cf of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x314eff66 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x314faf82 fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x315c8b31 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x31785f08 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x31836602 bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x319ec846 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d4525b extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x31dca4d8 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x31e19a1c ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x31e30380 wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x31e96a5b set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x31e9e8d5 zynqmp_pm_set_suspend_mode +EXPORT_SYMBOL_GPL vmlinux 0x3209270d of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x32234bed regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x3229f4a3 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x3237b0b9 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0x32457f37 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0x325ddfa6 cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0x326b704b psil_set_new_ep_config +EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0x326d7b49 rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x32741066 dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x32758f2b rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0x327a2687 bind_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0x327f69e2 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x32860f5f l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x3288277e usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0x328f3157 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x3299d8c1 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x3299e986 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x329eeccb crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32ac1e24 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x32b3dce0 tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0x32ba8486 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c2bb04 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c6c604 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x32c82818 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x32ca3342 i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x32cccffc devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x32ed0c06 i2c_acpi_find_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x32ff53b3 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x33001e37 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x3305841a dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x330be5db phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x332f7e6e pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x3340dcb1 fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x33642120 dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0x338f7eb1 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x33ba4f97 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x33bd2bf7 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x340f39d0 dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0x341b4ea0 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x3421ca7c __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x3427ff2b pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x34331f04 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x345328b2 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x34537ff5 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x3468b6eb gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0x346a7da4 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x346ac9f3 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0x34bab869 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x34c1a2a0 phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34c31850 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x34d768ac virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x34dae237 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x34dbafd8 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x34dc8b1a srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x34dd390a clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0x34ea9fef security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x34eab46d bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x34eda21d register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x34fb084d devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x350710da tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x350f5942 thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x351fdea9 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x352987cd gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3530b085 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x3539697b regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x354ff16a dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0x355bc89a klist_next +EXPORT_SYMBOL_GPL vmlinux 0x3560c735 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x3561a5c2 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x35726b2e of_reserved_mem_lookup +EXPORT_SYMBOL_GPL vmlinux 0x357abf6e bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0x358bbc37 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35902229 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x35a4d46a crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x35a4f59d zynqmp_pm_clock_setdivider +EXPORT_SYMBOL_GPL vmlinux 0x35a521b4 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x35a80e74 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x35ab761c acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x35b2cf38 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x35ba6e8a regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x35cda8ea pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0x35d3dc46 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x35f0d7a6 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x35f5e018 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x3629fa6e hisi_uncore_pmu_stop +EXPORT_SYMBOL_GPL vmlinux 0x364be299 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x36763961 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3694f657 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x369a4604 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x369e908c regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a68545 of_get_named_gpio_flags +EXPORT_SYMBOL_GPL vmlinux 0x36a86ffa d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x36c717dd kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x36c99abc inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x36cb77df vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x36cd9726 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x36ddd5e4 fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0x36df66cc blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x36e62cfd gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x36eff6f9 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x37169f79 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x371937a6 xen_unmap_domain_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x37255175 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x372cfd6e gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x3750d770 erst_read +EXPORT_SYMBOL_GPL vmlinux 0x375ae488 devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x37621292 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x37723d2c pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x378adfb7 zynqmp_pm_sd_dll_reset +EXPORT_SYMBOL_GPL vmlinux 0x37914025 xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x3795cfbf ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x37a2b534 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x37a39e3e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x37ad3672 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x37b4e798 of_detach_node +EXPORT_SYMBOL_GPL vmlinux 0x37b737af blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x37baf330 fsl_mc_bus_dprc_type +EXPORT_SYMBOL_GPL vmlinux 0x37bc3020 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0x37bd4e47 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x37d63f87 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37df7515 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x37e37a99 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x37e3abe9 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x383011a1 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0x38333af6 dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x38386c8a of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x38395f8d regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x3844b813 do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0x38489b93 perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0x385f36f4 bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0x38790de7 crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x3882d542 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x38849acd tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38aeab82 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x38c355d5 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x38c3ff30 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38c42b31 udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x38d825d6 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38f3b71e pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x38fbd2ce ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3906b077 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x390d1ce6 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x39322fd6 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x396d107b __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x3973ef0e regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3994225b ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x39a1323c spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39b32c5c ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x39b5a449 clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x39bc818d kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x39ded098 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x39e51495 skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39eb0904 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL vmlinux 0x3a014e4a fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0x3a120a4d cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a340c6b clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x3a464911 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3a687fb7 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3a6b7d65 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a7568fc fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x3a7ecc8c blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0x3a84bbe6 __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3a9e4e6b usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3acfcbd5 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ae55b43 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x3aed5594 mtk_pinconf_drive_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x3aefa99f devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0x3b02ffb9 cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0x3b072a04 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3b135ea5 dprc_get_obj_region +EXPORT_SYMBOL_GPL vmlinux 0x3b19dd1a tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0x3b1d5658 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x3b26d2a1 pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x3b3493ab usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x3b372f44 blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3b499be2 mtk_pinconf_adv_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b525971 skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x3b6b69f6 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0x3b78bf02 sunxi_ccu_get_mmc_timing_mode +EXPORT_SYMBOL_GPL vmlinux 0x3b7fab1a cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x3b85c452 net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x3b8979ea gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3ba13df3 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3ba9ee95 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x3bc570f1 of_pci_dma_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x3bc7c6a1 dev_pm_opp_of_find_icc_paths +EXPORT_SYMBOL_GPL vmlinux 0x3bcb875c uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3bdbcb5a blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0x3be3ae34 __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x3bec64dc proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3bf45000 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x3c0399d5 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3c164276 pinctrl_generic_get_group_count +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c212744 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c25a5ba rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x3c2b68f7 of_changeset_apply +EXPORT_SYMBOL_GPL vmlinux 0x3c310ee8 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x3c477489 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c79ac4d of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x3c824b29 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x3c8dae6e sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x3c9d571b of_changeset_action +EXPORT_SYMBOL_GPL vmlinux 0x3cb4cdd6 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x3cc4eaaf devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3ccd8b46 zynqmp_pm_clock_getparent +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce15efa dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x3ce77caf register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3cee6285 spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x3cf05ba4 bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x3cf3f5a2 l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0x3d04d8e4 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3d18dfb0 acpi_pm_set_device_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3d25e35a spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d44b135 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d72eef0 phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x3d7a82aa devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0x3d87e94c perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x3da2532a register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x3da37171 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x3da67e3b input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x3daeff82 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x3db4d6fa devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dd8f774 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x3ddfec86 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x3de6b844 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3deb6e84 __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x3dedda86 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3df70c99 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x3dfb0d5a edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0x3e07f679 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x3e0ce375 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x3e1c90d7 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3e2254e5 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e2ab2e0 devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3e4e0938 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3e54165d register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x3e557f2c ti_sci_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3e605145 ti_sci_release_resource +EXPORT_SYMBOL_GPL vmlinux 0x3e6eb12f add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7b3f8e hisi_cpumask_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x3e8420e1 devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0x3e921e49 dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ea56313 gnttab_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x3ec4fc27 hisi_uncore_pmu_online_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3ed811d8 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x3eeaea7e platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3eff800c crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3f1d8213 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x3f2196f8 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x3f2626f3 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x3f2a2334 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3f340c42 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f890c76 acpi_device_fix_up_power +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f9918fe __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x3f9ed0ab pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f9f1a7d balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x3fb7f5d1 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3fcc892d device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x3fd33b63 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3fdb9b33 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x3fddb602 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL vmlinux 0x3fe62346 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fea029c hisi_clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x3febfc6b tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x3ff0c203 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x3ff13332 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x4003025e devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4008f924 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400defec rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x40117e1b regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x4018ec3c rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x40267068 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4029cd35 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x402a9f12 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4047aca9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x405bbf1f ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x407af304 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x40963eb4 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4099be77 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a5bb3d ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x40a6d342 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x40a79b8f xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x40b43bd0 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x40b8e775 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x40c1a1a3 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40e11c86 usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x40e28b0d skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f6f371 devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x40fbf312 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x410b4c55 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0x4110cb0b of_msi_configure +EXPORT_SYMBOL_GPL vmlinux 0x411b1d59 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x41237f71 cpu_have_feature +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x413a31d1 mtk_pinconf_drive_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x4143fb1c bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x41446612 is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0x4147ffa3 crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0x414b088b meson_clk_mpll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x4158b617 iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x41645e74 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x417017f5 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL vmlinux 0x419b47a3 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41a43e55 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x41a7de36 devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x41aa6a81 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41b8f2a9 devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x41c324b9 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x41cbaa4d crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x41ccbc60 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x41e15929 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41eda85f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x41ef6d67 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x41fc25fb crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x41fcd10c gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x420bbbe6 __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x420c7811 crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42230915 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x42324b3c devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x423da852 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x423ee2e2 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x4242f588 blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42641053 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x42708e59 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x427a3a3e clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428b5401 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x429ebc34 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x42af47ca icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0x42b9ffd7 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x42bdc873 wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x42e526de regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fba1c7 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x4324f207 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x43346c06 hisi_clk_register_phase +EXPORT_SYMBOL_GPL vmlinux 0x433ae21c user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x43464a8c device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x43542f33 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4354a830 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x435fc0c1 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x43609005 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x43663c72 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x438808ef xhci_mtk_drop_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x438bc672 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x43a35664 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43b27cc2 sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0x43bdecfb dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x43be0639 of_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x43c2a786 __cpu_clear_user_page +EXPORT_SYMBOL_GPL vmlinux 0x43c2c68e dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fac6d1 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x43fad313 crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x440b42ce devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44126e1d tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4412f25d net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x4413d73e tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x442df9b1 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x44399a0d pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0x4444b462 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x44770296 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a0a732 icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44b5191e fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44d1f330 ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x44d527dc strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x44e1e9aa balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x44ee1cb6 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x44f6cf4e free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x44f8f6d6 ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x44fa9131 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x44fee405 badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x451ada43 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x4525ba8f dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x45426a3c ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x454e629a fsl_mc_resource_free +EXPORT_SYMBOL_GPL vmlinux 0x4554ced1 usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x45592a03 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x4561f990 qcom_smem_state_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4564f0ea da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4578cd8f blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x457963d0 phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x459a7763 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x45ca9a40 nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0x45cd7636 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x45d3ef73 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x45d825ca irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x45d9bf79 acpi_subsys_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460a871e fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x463be680 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x463cc3a3 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x4641ba78 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x464be499 securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x466093fb init_iova_flush_queue +EXPORT_SYMBOL_GPL vmlinux 0x4667a170 devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46afc0b4 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46c9ef9c k3_udma_glue_rx_flow_init +EXPORT_SYMBOL_GPL vmlinux 0x46c9f39e virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x46cb5f57 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0x46e62e40 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x46f1522f trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x47186f9f serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x47187ba6 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47259fc6 switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x4731f7d5 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x47372fe6 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x473fd645 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x475006f4 fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x475487d2 phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476c9547 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x476e2a0f platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0x4785dfbb hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4793e827 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47a89953 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47ab14cc proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x47acbb82 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x47bc899e xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x47bf1a97 clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0x47c6e182 kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f01a94 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47f4bf9b bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x4815aa79 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x48289e29 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x483a69d4 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4843a748 qman_portals_probed +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485fa018 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x487e4ba4 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x4881292d md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x48823762 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x48a3cde2 fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48ac0cf7 phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x48af3581 devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x48c2cdaa vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x48ced2ed devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x48db13c4 meson_clk_mpll_ops +EXPORT_SYMBOL_GPL vmlinux 0x48f49400 apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0x48f61f69 lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x49068eb2 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x49076900 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x491933c9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x49264449 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x493a66a6 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x4941cdc4 phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0x49487936 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x494ff0fa crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x496e81a9 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x49728bbf __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x4977a36b arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x4982bcf0 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x498e50a4 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a0928d pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x49a58609 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0x49a83446 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0x49b3f1d8 cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0x49cb420f phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x49d15a3a icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0x49d3d49c subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x49db2b23 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x49db5c64 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x49e0fd21 __cpu_copy_user_page +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a04a07b devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a289239 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x4a2c621c class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4a2e1dae gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0x4a36fb0b i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a4897bb dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x4a518472 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x4a5db1de switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x4a732976 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x4a777939 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x4a8660f1 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4a8934ac ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4aa42064 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x4aa58bea inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x4ab0e5f0 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x4abcfabd ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x4af3693d iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0x4b05186a pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x4b0fb94f irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4b1606f0 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x4b2b4389 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x4b335f77 cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x4b33ffab dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x4b3e5557 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x4b3f8bb7 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4b470e1d dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b762c7e kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x4b904167 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x4b931968 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x4ba37a8f xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4ba8a46f irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x4bc18742 iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc8727f xen_balloon_init +EXPORT_SYMBOL_GPL vmlinux 0x4bf03e70 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x4bfbe54f skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x4c070a62 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0x4c14f3b2 __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4c1d4ea7 ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0x4c2c0ea7 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0x4c402239 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x4c458529 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x4c53eaf3 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x4c66fc48 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4c6da251 gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x4c6e567a devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x4c7678bb aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4c788f5f clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4c7bc1c5 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4c932552 mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0x4caded34 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4cbd7c6f i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0x4cc8ca47 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4ccbc1b6 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x4ce66fd3 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x4cebdc5e con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x4cf537d6 i2c_acpi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4cfc0989 __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x4cfff655 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0a7b13 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4d17f4e9 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4d1cfdcd securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4d202b8c __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4d26c126 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0x4d2d729b virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d762de6 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x4d83c710 k3_udma_glue_tdown_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x4d885dfd crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x4d8a96ab xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x4d9260f9 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x4d95d6d1 memcpy_flushcache +EXPORT_SYMBOL_GPL vmlinux 0x4d96cf8d metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x4da1f4a7 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x4da65b42 of_mm_gpiochip_add_data +EXPORT_SYMBOL_GPL vmlinux 0x4dad073e regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4db141d0 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x4db77f4d hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x4dbdb767 ti_sci_get_free_resource +EXPORT_SYMBOL_GPL vmlinux 0x4dc73fb4 of_reserved_mem_device_init_by_idx +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4ddf1718 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df46692 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x4e0b4fbb ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x4e166464 alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0x4e17c613 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4e303ad8 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0x4e316184 fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x4e4c37e2 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4e5bec60 phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x4e600542 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x4e60c14e nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x4e6e2e03 mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0x4ea0498d pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x4ea275b7 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4eb94503 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x4ece3615 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ed7d5ef kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f0692b9 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x4f0c8ebc ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x4f209b6e tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4f20f899 pinconf_generic_parse_dt_config +EXPORT_SYMBOL_GPL vmlinux 0x4f2593f0 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4f3c3c76 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4f46fc2a regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x4f48a11a mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4f56c7f6 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6d69d7 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x4f717a4c usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f8dadee clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fa55f62 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4fb72dc5 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x4fba34af blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x4fc02643 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x4fc5f57a ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x4fc8206e sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0x4fcf1768 tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x4fcf9c2d pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0x4fd486c9 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x4fdb81a2 nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1d2d6 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe26d72 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4ffaf6ec sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x500c768c apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50289b64 phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0x503f7e9c dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0x506b24e3 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5096c07e gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0x50a63f93 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x50c2ae54 rpi_firmware_property +EXPORT_SYMBOL_GPL vmlinux 0x50d27a67 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5105ed65 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x511b3e89 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x512467fd ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x512bbaa9 fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x513e00be ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x514d5cf9 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0x5169344d k3_udma_glue_pop_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x517a05c6 __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518d915f iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x519979a1 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x519fa588 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51aeedbe ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x51ca8e4d gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x51d22026 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x51ef8e10 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x51f250e2 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x51fc9a6d xenmem_reservation_decrease +EXPORT_SYMBOL_GPL vmlinux 0x5202a923 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x52036e4e cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x520fac8c regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x52121118 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x522394e9 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x5230d4c0 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x523872d9 __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x52431348 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x52560e4a extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x5256e5e7 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x52576e31 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0x526530fc sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x52814cb3 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x52920c94 fsl_mc_bus_dpcon_type +EXPORT_SYMBOL_GPL vmlinux 0x52a81934 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52c2d40e bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52cd9807 fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52e52e60 scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0x530c180b class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x530f0ff9 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x531fb2e4 devm_of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x533520b2 of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x5351ac2d vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x5358e014 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x535b65c0 hisi_uncore_pmu_add +EXPORT_SYMBOL_GPL vmlinux 0x535d60b7 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x536e79a5 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0x53716ca7 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x537968c2 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x538b92a2 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x538f93e1 bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x5391f2c7 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x53abadfa kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53e0b54b devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x53e331a5 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53e565df devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53e67bc9 pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x542fd2b0 clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x543e49e4 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x5441cbd5 pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0x544d043e cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x544d5e5b lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x545025e5 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x5465b236 genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x546902ae spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x5474060b pinconf_generic_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x5474b467 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x548383f7 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x548cddc2 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54955855 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x54a25da2 qcom_smem_state_put +EXPORT_SYMBOL_GPL vmlinux 0x54a8654d inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x54a89be9 __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54b20dfa md_run +EXPORT_SYMBOL_GPL vmlinux 0x54b9b90b pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x54ce53ca usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x54e1e555 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x54f7b8a3 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x55182bba device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x551f0d8e fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0x55288721 genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0x5529facd usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553e128b validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555f9eca rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0x55605a63 fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x556d2606 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556eeb0a sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55948b11 ti_sci_put_handle +EXPORT_SYMBOL_GPL vmlinux 0x55a8a560 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x55be4988 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x55c34955 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55c9880c zynqmp_pm_release_node +EXPORT_SYMBOL_GPL vmlinux 0x55ca9e6e tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x55dd7c35 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x55eb4d33 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f4a61e devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x560319fb wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x5606238a phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0x560efe5b debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x561428c3 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x56144f8b dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561809ea __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x561d9587 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x56251a19 hisi_uncore_pmu_enable +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562b80b1 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56335352 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565c456b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x5661758a ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x566cb329 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x5674292e tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x5674b3cb rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x567edfe4 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x5684c536 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x5686f7cb uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x568cd97c usb_of_has_combined_node +EXPORT_SYMBOL_GPL vmlinux 0x5692a54c virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x56930aa0 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x56a8c5d3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x56b7c943 regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x56d15a69 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x56e5ec45 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56ebc1ab __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x570f9777 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x571762fb kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x571dcbea pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0x571f5f1b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x572a6759 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x572ccbdc kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x573b8a56 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x574609c5 apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0x574a0f8f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x57592337 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x57719632 gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x57732438 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x577b0e53 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x578eb371 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57978954 device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a447ee debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x57ad3fce regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x57aeff27 regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x57bbf7c2 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c65837 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x57c92974 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x57d586a0 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x57e69f96 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x57ec5ab6 iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x57ef7829 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x57f302af devres_release +EXPORT_SYMBOL_GPL vmlinux 0x57f4867c tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x58008504 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x580d41c7 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x5812ec23 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x58276f93 cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0x582b8ed8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x584194e0 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x5850154b fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x587d139a __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0x5882b817 iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x58955e40 handle_fasteoi_ack_irq +EXPORT_SYMBOL_GPL vmlinux 0x589c3111 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x58a6d39f extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x58cc52a6 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x58d05977 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58e073a2 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x58face0d sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x58fce0db hisi_uncore_pmu_event_update +EXPORT_SYMBOL_GPL vmlinux 0x59280f58 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x59302a89 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5936c28b kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x593ba6f9 ti_sci_inta_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x59409c7c ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x59537d80 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5967061f of_genpd_parse_idle_states +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x59881f24 pinctrl_generic_get_group_name +EXPORT_SYMBOL_GPL vmlinux 0x599fdc21 nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x59b23970 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59bfabed xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x59c05422 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x59d2a1b4 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x59d8dcd0 fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x59e4fc58 pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL vmlinux 0x59ed45c3 regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0x59ee852c device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x59fb3201 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0x59fe70a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x5a0322a4 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x5a0368b0 vchan_tx_desc_free +EXPORT_SYMBOL_GPL vmlinux 0x5a121a9b pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a2ef770 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x5a354be7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x5a3e6aa8 serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a7184d6 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x5a729cef of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a82d8a5 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x5aa86b50 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5aad5df4 of_i2c_get_board_info +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5abaf3d3 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0x5ac15d50 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x5ac3c4c4 __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x5ac8d27f iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5acd6ee2 iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x5ad7e1b1 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5ad83de0 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x5afc7e37 bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x5b0076b4 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x5b0d24b0 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x5b1a6764 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b2cd092 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x5b2fa3ca ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x5b3107ae sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x5b430db1 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b6bd7eb gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x5b6f5a35 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x5b778ad8 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0x5b7c9c1e serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0x5b937b48 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x5b9d2b5e hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x5b9ff612 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x5ba07d95 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x5bb07791 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bcbd6be gnttab_page_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd5814a class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be4522d __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x5bfc773b pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5c00ca29 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x5c0f77ce HYPERVISOR_platform_op_raw +EXPORT_SYMBOL_GPL vmlinux 0x5c12b184 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x5c134f3b devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0x5c275ff4 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c40bee3 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c9274e8 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x5c93107d of_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x5cab9945 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cb2ca98 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5cc8c7a4 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x5ce28fda led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x5ce8d76f shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x5cf8bde2 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x5cf9afdb ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5cf9c940 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5d0087a7 meson_clk_pcie_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d008c00 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0x5d00f44e ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x5d17148b apei_write +EXPORT_SYMBOL_GPL vmlinux 0x5d4f93c5 fsl_mc_cleanup_irq_pool +EXPORT_SYMBOL_GPL vmlinux 0x5d619868 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5d64871b virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x5d6722bb nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x5d76332c usb_of_get_interface_node +EXPORT_SYMBOL_GPL vmlinux 0x5d7b4dac gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dacce9d mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5db66c75 pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x5dbb5c61 fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x5dcd2903 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x5ddc9805 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x5de412cd k3_ringacc_ring_push +EXPORT_SYMBOL_GPL vmlinux 0x5de7447d __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5df3222e bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x5dfbb358 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e245341 crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x5e30ac54 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x5e39c6f8 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x5e4a0c33 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e60af2f dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x5e6f941c iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x5e70dfcb __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0x5e76bb57 k3_ringacc_ring_get_size +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e8bb9f1 blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x5e8eb80c mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5e9f534c ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x5ea5399b fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5eced7f3 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x5edab31b nl_table +EXPORT_SYMBOL_GPL vmlinux 0x5ee90e4a mtk_pinconf_drive_set +EXPORT_SYMBOL_GPL vmlinux 0x5ef548cf mtk_eint_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5efc1a43 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x5f01eaed blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x5f0a07d3 pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x5f1e3fc6 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f2de2c0 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5f30c88e perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0x5f3a7a3b stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5f3bce61 crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x5f408273 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x5f497628 gnttab_pages_set_private +EXPORT_SYMBOL_GPL vmlinux 0x5f4b1edd devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5f5bfaaf nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x5f62116e pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x5f665d10 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x5f6c3440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f72a984 dpcon_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f7a9f85 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x5f9cec25 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x5fafc1db acpi_get_psd_map +EXPORT_SYMBOL_GPL vmlinux 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL vmlinux 0x5fc1f243 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x5fc515eb edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x5fc8d76d dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5fcaa7c2 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5fd42971 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x6002d289 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x6003de36 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x60069ee1 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x600728d3 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600a4eb4 extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0x601ba3eb __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6030b82b mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x603d0d51 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x605b8639 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x605d5bfa cache_line_size +EXPORT_SYMBOL_GPL vmlinux 0x6061abc9 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x606e306e hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x60744894 devm_acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x607e9409 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x60806523 i2c_acpi_get_i2c_resource +EXPORT_SYMBOL_GPL vmlinux 0x608679d1 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x608acc32 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a456de ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x60ab4012 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x60b2967c devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x60c0ba43 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x60c744de usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x60d490bc kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x60e33388 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x60e89a81 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60ee58a2 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x60f549a8 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x60f99e1b cppc_set_perf +EXPORT_SYMBOL_GPL vmlinux 0x60fdc91d dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x61012129 iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0x61129f4f ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x6118a49d ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x61191c2c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x611cfa85 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x6122e5e5 led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x612f514c of_property_read_variable_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x614adcb7 of_overlay_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x617b026c hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x619eb254 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x61ae1d2d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x61b3e2a6 devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x61b55764 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x61b88ce6 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x61bbbc3a ahci_platform_disable_phys +EXPORT_SYMBOL_GPL vmlinux 0x61c35cab dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x61c83b37 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x61cc120c tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61d874a8 pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0x61e17a9b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x61e231aa ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x620243de devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x62126f46 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x62178158 of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6238c8e2 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x623a1368 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x623f0ffe devres_get +EXPORT_SYMBOL_GPL vmlinux 0x6241d083 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x62500795 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x625a1c15 kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x627360c3 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x6285c4e0 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6292a69b da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6293a781 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x62b679e9 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62c7dc13 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x62c976dc pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x62d94822 of_mm_gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x62eef0d6 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x62f7349d ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x630292a7 sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x63237e58 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x632adce9 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x63337a0c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x6333ad04 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x63358028 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x633904a7 device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6339576e acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x634118d7 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x634624a1 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x634912ff rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x634bfbdb tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x6368e830 bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0x6385f455 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x638aff11 proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x638c5c62 input_class +EXPORT_SYMBOL_GPL vmlinux 0x639c5b0a usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x639c61a6 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x639e3e86 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x63b9ad9d xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x63bb292b devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63d45ffd tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0x63da24e6 fsl_mc_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63dbc8c8 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63f0d038 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x640ab48f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x6426210d regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x643b06b0 zynqmp_pm_clock_setrate +EXPORT_SYMBOL_GPL vmlinux 0x64502e85 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x64529db3 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x645801c0 irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647c7d2e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x648169ff task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x6485cd35 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x6489e0d1 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0x6489faa2 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x648c3d4e alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x649b463d regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x64c3af60 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x64c3c4c1 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64c41442 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x64c848a0 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x64d19d2a dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x64d3cc4e xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64d5c560 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x6502d9c2 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x650475e3 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x651869c4 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x6519a670 k3_udma_glue_request_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x6520ff14 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x65511ca6 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x655e4879 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x6567eae5 of_genpd_add_provider_onecell +EXPORT_SYMBOL_GPL vmlinux 0x65698361 serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0x658820e5 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x658c7260 udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x65909617 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x65992664 genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x659e63f8 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x65b42ae6 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x65cb4900 __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65dfdf46 regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0x65e01af9 __sync_icache_dcache +EXPORT_SYMBOL_GPL vmlinux 0x65e08dd0 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x65e918eb wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x65e999aa eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x65f9221a tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0x65fd7c74 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662862cd sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x6628939c crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x664eb54a k3_ringacc_ring_reset_dma +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x665f6e63 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x666710b4 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x666b755a __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x66784278 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x667c946b xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6685bcb8 gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0x6694ca29 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x66a6037f dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0x66a6c061 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dae379 devm_otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x66db997e cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x66eb3d74 led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x66f64e6c aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x670da364 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x670e6ba4 blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x67131e16 akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x672121fc spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674a1a87 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x675908a8 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0x676c688f k3_ringacc_ring_free +EXPORT_SYMBOL_GPL vmlinux 0x67718b65 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6778981a otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x677b7aa8 skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0x67824883 dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x6792e25a __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a18841 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x67b931d0 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x67ba7eb2 pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0x67bebc35 serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x67d16af4 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x67d53a42 fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67e00f5d nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x67f2f931 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x680ce423 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6811916d platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x68248154 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x684ca117 zynqmp_pm_get_pll_frac_mode +EXPORT_SYMBOL_GPL vmlinux 0x6861d3ab skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x6867d687 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x6869c8eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x68792adc iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x68814b73 fsl_mc_bus_dpsw_type +EXPORT_SYMBOL_GPL vmlinux 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x689844c2 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x68a9a3ea __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x68ad3d26 mtk_pinconf_bias_disable_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x68bf70ed ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x68ca5226 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x68dba123 __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x68e86673 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x68f5e27c bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x69126e1c kvm_unmap_gfn +EXPORT_SYMBOL_GPL vmlinux 0x691c33dd tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x692140ff pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x692514dc rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x6927122f find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x692c5a7f irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x692fc4a3 kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x694ce030 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x69505134 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x696340a5 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x696f2b63 of_changeset_init +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698748e7 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x69a36482 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x69b18bdd pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0x69b7ae7f kvm_map_gfn +EXPORT_SYMBOL_GPL vmlinux 0x69c37d1e rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x69d30da6 edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0x69d593d5 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a06b91f strp_process +EXPORT_SYMBOL_GPL vmlinux 0x6a0b3302 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0x6a0f31a7 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a207030 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x6a2a2bf8 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x6a386842 update_time +EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4c2adc k3_udma_glue_push_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a532b98 acpi_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6a59f3e7 devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a6bf3ed dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6a6fed35 xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x6a771b3b __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9c229f iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6aa2a877 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x6aa3ad50 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x6aab45ab tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x6aad9152 xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x6aae59e2 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0x6aaf0f63 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6abb688a crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x6ada4993 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x6af39dbb tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x6b0a4075 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b1b0ee5 phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b3ae022 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x6b4045ee zynqmp_pm_get_api_version +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b65d7be ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x6b6db10e usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6b713be6 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6b77d553 sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0x6b80f422 sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b834121 bman_portals_probed +EXPORT_SYMBOL_GPL vmlinux 0x6b845321 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6b857fd7 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x6b8c5591 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x6b9d7d36 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x6ba1ef2f acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x6ba521f7 em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x6bbf849c thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bdea4aa crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x6bdef35c acpi_ec_mark_gpe_for_wake +EXPORT_SYMBOL_GPL vmlinux 0x6bf61c57 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x6bf94aec nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x6bffde0f usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x6c038535 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x6c1fe5ad __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x6c211226 usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3b612b acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c405e8a amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c511a9d devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x6c568010 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x6c5a5e53 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c77d0df dev_pm_opp_of_register_em +EXPORT_SYMBOL_GPL vmlinux 0x6c789b2b ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x6c8227e9 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cacc78f regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6cb0ce87 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0x6cc28b6e bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6cccb73b of_property_read_u64_index +EXPORT_SYMBOL_GPL vmlinux 0x6cd1475d blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0x6ce10eb0 trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x6ce2ac33 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x6ceb9208 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x6cef3a14 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6cf0ee82 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x6cfbb55c add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x6d029e12 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d161467 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d164837 pinctrl_generic_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x6d189dc2 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0x6d20ee5e led_put +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3ddb31 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x6d49831b device_move +EXPORT_SYMBOL_GPL vmlinux 0x6d54a986 clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x6d5d7a69 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x6d634dde led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0x6d654077 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x6d6ca34d generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d94da8a clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dc1da5f md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x6dd56bac tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x6de0ce06 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6dea65c8 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x6df84afa usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x6e0b522e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6e10e0f6 nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0x6e18e7ad extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6e26bbe6 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0x6e2c62dd k3_ringacc_ring_cfg +EXPORT_SYMBOL_GPL vmlinux 0x6e3a0138 ahci_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4aa78d k3_udma_glue_rx_flow_enable +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e4ef853 blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x6e55204c dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0x6e5bebf3 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7c3147 skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4af2 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6e932e46 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x6e9e27e1 report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0x6ea0ff55 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x6eb6fe17 compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ed6b2ce spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0x6ee0863e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f06cbbc noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x6f0e1178 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f510cc4 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0x6f5bc5bd ip6_input +EXPORT_SYMBOL_GPL vmlinux 0x6f638666 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fab1147 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x6fc92778 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6fccc5d5 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fd1ad23 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6fd3e095 iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x6fd85949 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7005918d bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x700f06a6 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x702fec76 pci_generic_ecam_ops +EXPORT_SYMBOL_GPL vmlinux 0x70365af1 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x703cc82b ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x704d8595 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x7056c93e driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x706009a5 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x70610dd4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x7068b833 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x70869f07 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x70880ee7 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x70b7c07a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x70b9ca3d gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x70c18b1f sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c82137 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d42dfa wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x70fa5dc5 thermal_zone_of_get_sensor_id +EXPORT_SYMBOL_GPL vmlinux 0x710351b9 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x710a5684 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0x710b8a29 device_create +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712780e5 nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0x712a7b55 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0x71316503 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x71402cee icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0x7143f146 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x71559845 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x71562740 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x717b6ed6 regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0x7181db30 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x718c8cad wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x719bfee1 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x719c9827 xhci_mtk_check_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71ae5f8b netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x71b72133 bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0x71bfb150 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x71c1aa49 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x71c99e9f __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x71cd848c pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x71e7c043 serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0x71ed2181 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x71f479a4 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71ffa99d wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x7229a390 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x7241398a rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x725aedda regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728dfd72 get_device +EXPORT_SYMBOL_GPL vmlinux 0x72af5511 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x72c1aeeb __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x72cc2aae arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x72d8a6a3 blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x72dad3d2 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x72f442a8 memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x72f4f29f spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x73039918 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x7313b8ae usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x73174f1d find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x731dc7d8 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x73242dcd cpu_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x732852fe xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0x7349b67b wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7358e137 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x736a206f trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x737ad239 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x737f5163 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7381bcdd of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73dbd193 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x73e3c167 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x73f9dc50 rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x740bba24 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x741a58bc key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x741be060 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x742d4429 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7435e59f fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743b99d8 xenmem_reservation_increase +EXPORT_SYMBOL_GPL vmlinux 0x743ba17b devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7454e5b1 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x745548bf set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x74565b0b usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7464a01c register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x74a3104a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x74a3ca52 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x74d906aa fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x74df342e kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7515dabe cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x751edaf3 hisi_uncore_pmu_start +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7530bbe3 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x75408a45 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0x7570576f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x758a43fe k3_ringacc_get_ring_irq_num +EXPORT_SYMBOL_GPL vmlinux 0x758c1f07 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x758ca22a sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x7591427d bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x759bfe36 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75ad7bc3 component_del +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75cf137a ping_err +EXPORT_SYMBOL_GPL vmlinux 0x75cf146c xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x75d25e7e __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x75d97a01 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x75dd4ebe of_overlay_remove +EXPORT_SYMBOL_GPL vmlinux 0x75ddcd07 usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0x75e14186 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f0bb0e iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0x75f0e875 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x75f5f635 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x75fb9062 arch_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x7610c46a mtk_build_eint +EXPORT_SYMBOL_GPL vmlinux 0x7616e3df crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x762785af syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7627add7 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x7640c2d5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x7647425f component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0x764ad384 xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0x7665a95b idr_remove +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x766e1777 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x76740959 phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76983e4f dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76a4aedd fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x76b589f8 i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0x76b9d413 icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0x76c6de03 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x76cec241 pinctrl_generic_add_group +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e2865f inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x76e85b92 gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7700c6ad ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x77120180 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x771b6f31 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x771e5c41 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x771ed0b4 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7728a82e dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77353836 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x777dfd7c crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x77849a6f clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x7793d4d6 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7796c4a8 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77d482f9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77eb2fe7 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x780a62e8 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x7813aee3 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x784b1c76 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x786bd172 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x7871b493 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x788ad962 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x7893f217 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78d6e7ad mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x78ea22ff dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x78f29871 ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x790be0b9 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x7917183c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x7919ea62 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x79327b05 crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0x7934ea08 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x793af3af xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x793e1fcd tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794a0461 rockchip_pcie_disable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x79535513 gnttab_dma_alloc_pages +EXPORT_SYMBOL_GPL vmlinux 0x795f9599 crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0x7960c089 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x79616aa8 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x796b467a kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x796cfbcf regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x797895aa tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x7988c747 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x798b7682 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x799aebb1 sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x79a4e933 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x79bc842c usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79ed5817 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x7a04054f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7a092408 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x7a0de5f5 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x7a33dbca synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x7a3cca99 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x7a418da6 badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x7a4d380b ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x7a508e7a scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7a5fe2c2 validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0x7a672569 xen_xlate_map_ballooned_pages +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a79eac0 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a98f4b4 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x7a9e4c23 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x7abfca43 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x7ac10ad8 icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7ac3a48c register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7acbb74e of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x7accafb7 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ad2c64c k3_udma_glue_release_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0x7aeccdf2 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x7aee1ae8 acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x7af3a79c ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL vmlinux 0x7b066ab8 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x7b11bddb dev_pm_opp_of_add_table_indexed +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b2163bd HYPERVISOR_tmem_op +EXPORT_SYMBOL_GPL vmlinux 0x7b219b58 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x7b4c9ba9 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x7b5452b8 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b5b7e97 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x7b6ed2cb device_match_any +EXPORT_SYMBOL_GPL vmlinux 0x7b6f9536 acpi_register_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x7b7a44fd led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x7b7d684c blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0x7b856860 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b85bb15 rockchip_pcie_get_phys +EXPORT_SYMBOL_GPL vmlinux 0x7b88df94 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7b97afe2 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x7b98102a pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7bc44984 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7bd2c2c2 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x7bdb3cb4 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x7bdca341 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x7be2e70d platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7beeefb1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x7c0c0dca __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0x7c0dabbf amba_bustype +EXPORT_SYMBOL_GPL vmlinux 0x7c19331f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7c1fc625 crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x7c2642eb da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x7c48f433 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x7c57421b x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7c58bf9e __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x7c626556 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c6601ca fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x7c681aba efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c8fba62 of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9879c1 phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cb803de btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x7cc101d7 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7b121 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ce00437 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x7ce4ae1d of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d0cebe7 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7d154b6a usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7d16d4bd devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x7d22c491 scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0x7d2ca554 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x7d32893f zynqmp_pm_request_node +EXPORT_SYMBOL_GPL vmlinux 0x7d38dc75 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x7d42cd0d devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x7d4e7cc9 pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x7d50c117 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x7d523348 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7d558968 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d65e1b6 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x7d713a71 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0x7d7a68e2 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7d89c310 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d89f672 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x7da98b71 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x7dbd7ede usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x7dbd8233 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7dc30c1d clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0x7dc57162 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x7dcdda61 ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddb2718 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7de6cc23 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7df282c6 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0x7df2c584 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e1ce869 kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x7e2063e5 hisi_uncore_pmu_set_event_period +EXPORT_SYMBOL_GPL vmlinux 0x7e2544dc ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x7e3e60fa irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x7e435d15 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7e4da702 ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e707239 devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x7e798001 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x7e7a2362 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x7e7db6e2 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e83cba8 fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x7e8d8619 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x7e8e143c dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7ea75c24 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x7eb4f12d irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ec814de inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x7ed3b649 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7ef53da1 fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x7ef610f5 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0x7ef6b0b7 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x7ef86e0d devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x7f0c2b3b sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x7f189972 edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0x7f268849 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x7f3193c7 trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7f335a52 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x7f53cce3 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x7f59dcf3 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x7f63adbb tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x7f70bd6c tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f83a555 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x7f96d4b0 pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0x7fa796b2 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x7fa96509 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x7fb9329f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x7fc92339 pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0x7fe898c1 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x7ff54e06 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x7fffe0bf bgmac_adjust_link +EXPORT_SYMBOL_GPL vmlinux 0x80039b5f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x80135182 k3_ringacc_ring_pop_tail +EXPORT_SYMBOL_GPL vmlinux 0x80182712 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0x8030ee17 devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8037c7e2 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x805afea0 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x8069688d __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x807766ea usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80aee1de dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x80b109d4 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x80bcc9cd acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x80c11314 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80ca9318 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x80ce42f2 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80ff2130 kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x80ff6cdd usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81382eb3 gnttab_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x813b8d26 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x813ea878 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x814baa52 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x81622794 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x81897703 rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x818f785c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x8194bc69 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0x819d72cb klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x81aa78d8 zynqmp_pm_aes_engine +EXPORT_SYMBOL_GPL vmlinux 0x81aafb88 kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81b7b496 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x81c0d0d8 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x81c4eec5 mtk_pinconf_bias_disable_get +EXPORT_SYMBOL_GPL vmlinux 0x81ccc3ed vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x81cf5282 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81de4986 tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0x81f07791 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x81fb17d9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x8203e779 ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0x82092899 badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0x8220a38e k3_ringacc_get_ring_id +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8231bf66 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x823eae06 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8241312d sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8241e1fa blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x824adeba usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x8276fbf9 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x827a9426 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x827e61f8 acpi_has_watchdog +EXPORT_SYMBOL_GPL vmlinux 0x82873c0f rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x828b04e4 reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x82956d47 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x829f7520 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x82a35744 fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x82b6f3d3 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e724ac virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x83211389 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x832fdf69 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x8348e4f0 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8353dfff acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0x83543689 icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0x835cddb1 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x835db819 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x83682b25 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x836c5ed4 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x837a20ce fsl_mc_bus_dpseci_type +EXPORT_SYMBOL_GPL vmlinux 0x837a252b nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0x8391adde syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x839f27b3 xhci_mtk_sch_init +EXPORT_SYMBOL_GPL vmlinux 0x83a9b3b3 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x83acddfc irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x83b9e7e4 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x83c521f0 blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0x83e221bb dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x83e958c1 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x83ea58ef regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x83fe85eb dprc_close +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x841791e3 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x8418201f phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x84231765 pci_host_common_remove +EXPORT_SYMBOL_GPL vmlinux 0x84239ea0 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x84241fc9 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8424885c dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842f046d usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x843557b2 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x843712df unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x843e0285 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x844a6bc7 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x846351b0 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x846bda00 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x8478d8b6 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x847b3656 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x847f1eae srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x848cb15d iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x8490266b mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x8497c553 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0x849d8cac rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x84a2cb29 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x84a4b09e sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x84a8d0eb of_changeset_revert +EXPORT_SYMBOL_GPL vmlinux 0x84ad0fff scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x84beb0dd crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x84bfbf8f clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x84c9605a kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x84d30ebe crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x84d56ae9 devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x84d8f6ce perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x8504728f __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85095274 devm_of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8518f73e tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x8524ff31 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0x854ff0ff pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x85569695 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x855831bc bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x85656578 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x856a9812 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x857f9e14 of_platform_device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8589b2ee devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8590b744 to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0x85935a61 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x859c338e kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85a4a431 get_dev_pagemap +EXPORT_SYMBOL_GPL vmlinux 0x85b1c626 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85c29a6b pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x85c4e6da netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85d22f86 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x85d6d920 acpi_subsys_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x85e5d047 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8614174c da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8621e393 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x86310990 iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x8639ae6a kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x8643a06f __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x86497c6c devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x86612154 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x866ac978 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x866ca6a3 gnttab_page_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x86700220 acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868de39d tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x86903e94 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8690b2d3 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x869d7d93 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x869dcadf mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x86a0bbde devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86aa702a sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x86adda43 kvm_vcpu_map +EXPORT_SYMBOL_GPL vmlinux 0x86ae72e8 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x86b13d2a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x86b32665 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x86c02173 tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x86c43a8c cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x86c5bc73 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86cc0448 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x86e21b4f device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x86e8174c edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x86f24b66 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x86fa2018 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x87011491 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871a51bf pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x872261b0 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x8722b5a6 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x872b427a blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x872f3c5f sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0x8730004b device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x87424d24 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8751d5fc fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x875e85e5 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x876466a9 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0x877b9681 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8782d48d bgmac_phy_connect_direct +EXPORT_SYMBOL_GPL vmlinux 0x878983f4 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x878a86f6 call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x878db1ba __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0x8793eab5 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x879439c6 devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87c424d7 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x87ce6bf6 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x87dae7be switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x87e34cc5 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x87fee00d device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x88066be2 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x88068dbe ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x8807fe8d dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x88105ae0 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x88249ddd __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x8827eaff ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x88439499 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x88447ba3 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x8865785d netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x887550b8 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x8876ecc8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x888e6b4a fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x888e9f11 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x8890ac5b genpd_dev_pm_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x889732bf devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x889e46d0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88cd7a9a k3_ringacc_ring_get_occ +EXPORT_SYMBOL_GPL vmlinux 0x88ceb105 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x88d736b1 blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x88f1a3a8 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x88f64f70 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x88fb3a01 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x88fc494e fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x890fa0fa btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891f925a cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x89239e9f kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8929668d gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x89364caa acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x893a70b0 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x893a9a7a device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894b7a38 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x8958f83b acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x89696218 reserve_iova +EXPORT_SYMBOL_GPL vmlinux 0x8979cd99 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x898c8954 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0x89989b5f led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0x899c7b6b dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0x89a4476d HYPERVISOR_multicall +EXPORT_SYMBOL_GPL vmlinux 0x89a79b30 mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x89ba31fc thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bd2921 gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x89d1e9a1 of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x89e340cf acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x89eeeeda kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x89f4966b __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x8a0886dd get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x8a106de3 devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x8a240bff __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x8a30091b iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0x8a30ac9c __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a45a555 acpi_unregister_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a6a0d24 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x8a7bee57 fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x8aa3a6fb raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x8aa5ba55 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac5f938 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x8ad83252 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x8add9349 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x8ae84759 scmi_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8af24d28 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0x8af33b5d debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x8b098084 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x8b12abce sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b18cd0f firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0x8b284e92 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0x8b6c347d blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x8b7721c5 skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x8b795068 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x8b7abcaa phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b7bdd60 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x8b84172e irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x8b98d4ff rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8b9abdba pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x8b9fbfee tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x8ba4cfe2 ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8ba6b6aa of_genpd_remove_last +EXPORT_SYMBOL_GPL vmlinux 0x8ba77b99 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0x8bb5684b of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8bd7bca4 i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x8bdc7f78 serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8bf5f379 k3_udma_glue_release_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c16ea75 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x8c1e848b devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c202b24 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8c2cbb24 mtk_pinconf_bias_set +EXPORT_SYMBOL_GPL vmlinux 0x8c3b60ce to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x8c42b635 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c484409 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x8c7295c2 __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x8c742d39 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7aa936 fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c985c6b spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8ca0c373 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0x8ca30018 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8cb5a38e k3_udma_glue_rx_flow_disable +EXPORT_SYMBOL_GPL vmlinux 0x8cb5a716 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x8cc3da81 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8cd7e8f6 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x8ceb2d6a usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x8ced11c3 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x8cffaf48 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x8d115e90 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0x8d139a50 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d231cef ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d413d4e devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8d5b7172 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x8d5bd445 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x8d83c139 divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x8d86ca14 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x8d8b4994 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8dae0098 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8dcce3b9 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x8dce32fe ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x8dd32fd5 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x8dd5d06c md_stop +EXPORT_SYMBOL_GPL vmlinux 0x8ddde2c3 devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8dfe9e65 ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x8e147b3f xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e16419b trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x8e1d3306 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e2ab114 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8e4a001a usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8e4b63a6 hisi_clk_register_gate_sep +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e68d279 tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8e6fa8b5 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x8e7f0a9c acpi_get_phys_id +EXPORT_SYMBOL_GPL vmlinux 0x8e92a0e0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x8e981047 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8ec01c80 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0x8ed1affc __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8ed5b44c kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0x8edb44aa synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x8eebee8a crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f24f431 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x8f2f7a2c dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x8f30b9b0 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x8f33c92f dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x8f3969e1 zynqmp_pm_clock_getrate +EXPORT_SYMBOL_GPL vmlinux 0x8f42928a security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8f568ef4 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x8f6683ba dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8f6bfe1d fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0a6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8f801d8d rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8f842b8d skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x8f8b9a19 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f95583d iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0x8f98ed05 vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x8f9e1eb6 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x8fa6052c sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x8fb44f44 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8fb91ad9 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x8fc585bd regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x8fd100a6 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x8fd3d8f0 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8fe4234e crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x9007d972 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x900cdb13 __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x9016d198 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x90247f16 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x9025df0f genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x905e10f9 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x9061e79d usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x9075d98a screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0x9081b5db btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x90889c54 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x909c9369 uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0x909e2e53 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x90a2dfbe devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x90a62e39 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90be7b63 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0x90bee473 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x90c8498c apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x90c90a49 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x90ce8348 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x90d18e1a of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x90d84a19 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x90e659f0 dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0x90e8018d platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x90f60664 dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x90fd25f4 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x90fd99ba regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9100e444 mtk_pinconf_bias_disable_set +EXPORT_SYMBOL_GPL vmlinux 0x910ffbc4 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x911bd64c mtk_mmsys_ddp_connect +EXPORT_SYMBOL_GPL vmlinux 0x9127ff07 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9139b002 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x91471ea9 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x9156ebfc __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x915bb424 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x91872636 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x91890e5d perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x918cda05 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x919425fd pv_ops +EXPORT_SYMBOL_GPL vmlinux 0x9194e18f xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91ab9f36 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x91af7817 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x91bf220d mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x91c5fc6b edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c8b5b5 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x91d31973 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x91d97fd9 balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x91e30809 HYPERVISOR_vm_assist +EXPORT_SYMBOL_GPL vmlinux 0x91e84586 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x91f38836 set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x91f5a88e fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0x9200c0a4 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x92062f10 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92175954 proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0x921aa79e amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92295424 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x9231c966 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x92373a82 __acpi_node_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x923d9dba pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924ddb35 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x92596883 dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0x925e8d02 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x926c1554 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x927487ea zynqmp_pm_read_ggs +EXPORT_SYMBOL_GPL vmlinux 0x9282a2d5 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x92a22b8b ti_sci_inta_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x92a7e13a wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x92c369f5 irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0x92caf2ac clock_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d527fd irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0x92d8e56f __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e7da08 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x92ef5aaf usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x930ab533 k3_ringacc_request_ring +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x9324308a xhci_mtk_reset_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x9337e45a raw_abort +EXPORT_SYMBOL_GPL vmlinux 0x933f75e0 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x934c5cc2 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x93530779 pci_ecam_map_bus +EXPORT_SYMBOL_GPL vmlinux 0x935d662f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x936dcb93 crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x93725986 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x937aae08 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x938cbbab kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x93b818b8 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x93c17148 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x93d1d424 gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x93da690f usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x93e44f39 pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x940cf2b2 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x941824f9 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9422e9d5 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x942f9a2b get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9450d026 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x945d993a clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x9472a81f __class_create +EXPORT_SYMBOL_GPL vmlinux 0x947e56bd anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x948303c4 nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0x9491f882 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x949e88e2 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a5bfdf gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x94aeef9f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x94b3399e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x94b9eb62 dpbp_disable +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x94e7409c call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f0136c irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x94fc2a93 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9508137f kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x9509a3c9 rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0x9513bdc9 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953b61fb tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95498dca crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0x955a76d9 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x956acae7 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x956db9e1 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x9573cc65 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x9596c22b cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95ba198b ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c0cd7c dprc_open +EXPORT_SYMBOL_GPL vmlinux 0x95c7f8f7 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x95d2bb94 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95efa1db pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x96175891 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x962c8ae1 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9632e31b clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x9649409d napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x9651d298 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965730fd mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x9665292c usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x9669d399 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x96708f8f bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x96748b69 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9677b03c component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x967cc598 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x96c4d8fe ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x96d445a7 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x96e0f7d3 extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0x96f15f3d xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x96faf89d adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x97042018 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x970ff688 ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x971e887c irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0x97273218 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9732ca7f inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x973d4e0d devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0x973fa2f0 pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x9746cd58 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9748ee7a usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9756f716 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x97590184 kvm_get_running_vcpu +EXPORT_SYMBOL_GPL vmlinux 0x97623558 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x97630ce1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x97695dbf efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x977be5c7 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x97951501 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x979d5ab6 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x97a6ca25 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x97ab7452 devm_memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0x97abb826 clk_regmap_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x97b87697 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x97c1d088 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x97c1f25c device_add +EXPORT_SYMBOL_GPL vmlinux 0x97c93791 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x97cd3d97 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e50295 dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x97e69826 ahci_handle_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97e87909 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x980187b8 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0x9802489b wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x980c7b23 sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0x9813bd06 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9822b0ed sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98394c12 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x98420f95 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9855923a clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0x98708ba0 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9880b35f do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x98e00bc4 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98ff5535 pinctrl_count_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x990e6039 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x992a249a genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x993ae56e device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x993e6a87 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x994ff394 dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x996a47e7 md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x99750b35 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x99968d1d ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x999a2730 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x99afa6b0 rockchip_pcie_deinit_phys +EXPORT_SYMBOL_GPL vmlinux 0x99c62435 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0x99d69165 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x99f98e62 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9a0a6ff7 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2b3325 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x9a478177 crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x9a5145ae hisi_uncore_pmu_event_init +EXPORT_SYMBOL_GPL vmlinux 0x9a55e1de of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x9a841fcd pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x9aa3425a blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ae4191f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af1948e __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x9af6e9a1 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9b18c56f ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x9b1ef0a9 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x9b39a856 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x9b4b60fe devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b5986eb inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9b6203e5 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b7340d0 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b993fcf gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x9b9cabc7 dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0x9b9df28f dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x9b9e5633 devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba55b20 __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0x9ba5fcdf ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x9ba6e1b2 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9bac3927 bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0x9bbf26be __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x9bc77923 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x9bd9605a scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x9be64202 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9be9654c dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bfd0578 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0x9c0d7777 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x9c1c2a04 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x9c2cb85b proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0x9c3db98b relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x9c45f2d5 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9c482672 devm_thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c5acbcc sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c7054c4 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x9c76ff8d trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c7864f8 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x9c7af8b9 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c8d1730 xen_remap_vma_range +EXPORT_SYMBOL_GPL vmlinux 0x9c8e54a9 wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x9c900c20 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x9c937b4b thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x9ca320bc dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x9caab9ef acpi_gpio_get_irq_resource +EXPORT_SYMBOL_GPL vmlinux 0x9cb1b961 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdc73d0 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x9ce3024b power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9cf37c44 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x9cf44173 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x9d077f68 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d0c1d56 lochnagar_update_config +EXPORT_SYMBOL_GPL vmlinux 0x9d117393 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x9d168757 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0x9d2e6af6 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9d2fdafa ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0x9d3847b0 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x9d42acaf xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x9d493a2a elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x9d4ae2c9 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9d593c1b pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9d5e387c regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x9d73f87a nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9d81a9cf skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x9d81ce6d devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x9d83264f acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9d84c685 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x9d9422f7 of_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x9da942c8 dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0x9db5476c devm_ti_sci_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9db79967 meson_clk_pll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x9dcb21db rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x9dd027bb devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x9de91cda i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x9dfef4ac skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9e005e6f cppc_get_perf_caps +EXPORT_SYMBOL_GPL vmlinux 0x9e05e48b vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x9e08d700 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e2dc00c usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9e2f842f acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x9e317db9 of_css +EXPORT_SYMBOL_GPL vmlinux 0x9e35bb92 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4ec7cb cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x9e59954b acpi_cppc_processor_probe +EXPORT_SYMBOL_GPL vmlinux 0x9e5a9b40 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9e5b85aa serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x9e90350b ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x9e9421d6 sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x9eba22a3 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x9ebb89c7 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0x9ebe387a devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x9ec4dce3 dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0x9ec68d98 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x9ecc9bb8 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9edb8dfd devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9ef873f7 iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x9f0197d1 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x9f11b1db devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9f269768 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x9f32f336 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x9f36457e __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f3f02b3 crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f5ff38a acpi_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9f6e983e blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x9f75bcbd power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x9f8d5973 i2c_acpi_find_adapter_by_handle +EXPORT_SYMBOL_GPL vmlinux 0x9f95ef5e devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x9f982cdf kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x9fa2e84b genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x9fba7934 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x9fbfebab erst_write +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd2e423 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x9fd74ee5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9fe5c828 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa014c601 fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0xa0179533 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa03163c4 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xa0329844 mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0xa0450444 fsl_mc_object_allocate +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa04fcdb8 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0xa05ce242 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xa065cc19 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xa06c216f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa073d26e sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0xa086558d iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0xa086b7d0 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa08e2be4 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xa0a0a837 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0xa0a4bd1b mtk_pinconf_bias_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0xa0c0a5ee __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xa0c6befa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1189db4 iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0xa12008a3 __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xa128e296 of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xa1432738 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15b4e98 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0xa1691b63 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xa16ae682 tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0xa1782fac spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xa1786f88 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa18467b2 spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa1c7b552 kill_device +EXPORT_SYMBOL_GPL vmlinux 0xa1c84e7c tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1deece5 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xa1e125c2 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xa1e94069 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa20a9f22 strp_stop +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa22d9548 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa2570687 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xa26229e1 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0xa2641a60 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xa2685ce5 devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2705437 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa2799bfb lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0xa2814455 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xa28cdce2 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa2957931 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa2af54b3 irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xa2c28c5e crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2e79065 spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0xa2eaa39d mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa32edbf2 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xa32fc8c7 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa33105ea cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0xa3522517 iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa3659b5f __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xa37ef32e usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xa37fa1f2 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xa3808ba7 devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa38c1436 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xa38c1ed8 skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0xa3953db2 meson_clk_cpu_dyndiv_ops +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a256f9 cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0xa3ae711b sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d13af7 lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3d19ffc sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa3d2e9a2 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xa3d767af rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa3dcb681 zynqmp_pm_fpga_load +EXPORT_SYMBOL_GPL vmlinux 0xa3e01ce5 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa3ed3865 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa3f25bfd regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa40fa17f gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa41a23bc tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0xa42590a5 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xa4267ac7 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xa42aa552 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xa4365a8a __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xa437231d ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xa4393f41 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0xa4428b94 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa45d44fc zynqmp_pm_get_pll_frac_data +EXPORT_SYMBOL_GPL vmlinux 0xa46b8f9c hisi_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4c89b89 fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa4dfae60 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa4ec6c01 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xa4ed0266 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xa4f2a2ed acpi_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xa4f55cd8 gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0xa50335f4 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0xa50b7ff4 _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xa511800b each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xa5163de7 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa517e345 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa537a684 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xa55823cd dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa55e9c82 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa569dcb3 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xa5752a33 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa598d4b2 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xa59a6c84 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xa5a2cb41 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xa5b8ef99 ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xa5bda8a1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0xa5c41b6b ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5e59ca4 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f65a25 iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0xa6060983 scmi_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa613694e cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xa619667c dprc_get_obj +EXPORT_SYMBOL_GPL vmlinux 0xa61eb5fd usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa63e41d2 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa645ca5b devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa64f8055 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xa6532a59 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa65f2d35 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xa67c1be5 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0xa67ca078 crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0xa6824f3f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xa688a07a mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa690e2ca device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xa69bcd0a find_module +EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b71e07 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa6be362a inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa6d80188 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa6da6018 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e57c14 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa6e8312a regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa709b201 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa7113b10 dpcon_set_notification +EXPORT_SYMBOL_GPL vmlinux 0xa718f465 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xa7198523 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xa71c6c77 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa731f387 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa7349f9d nf_queue +EXPORT_SYMBOL_GPL vmlinux 0xa742e837 fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0xa74a6930 gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0xa750ecb2 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa759b028 fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xa75dd2e8 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa76106c4 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xa77cf0ac tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xa7856098 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0xa7870c7f loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0xa788700b copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xa7a5687e ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xa7bbf459 hisi_uncore_pmu_get_event_idx +EXPORT_SYMBOL_GPL vmlinux 0xa7c877b7 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0xa7e457d7 dpbp_get_attributes +EXPORT_SYMBOL_GPL vmlinux 0xa7e5504c fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xa7ed0a3a dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xa7f2f195 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0xa7fa1d1a gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa806d805 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xa80789f2 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xa812f30d path_noexec +EXPORT_SYMBOL_GPL vmlinux 0xa815c838 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xa81eb5eb acpi_dev_get_dma_resources +EXPORT_SYMBOL_GPL vmlinux 0xa822fa69 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xa8232524 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xa82a9849 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xa82d9a1c __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa833f478 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xa83dc5d3 mtk_hw_set_value +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8671f45 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa87bb202 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xa87f21fd relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xa8a9d253 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8bf7e4d rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa8c3ebca regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa8c8c3e6 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa8cd41d7 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa8e29187 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xa9053ba1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xa90aac06 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa91da2ab wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0xa922415a pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa92f161b fsl_mc_bus_dprtc_type +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa936a20d of_phandle_iterator_init +EXPORT_SYMBOL_GPL vmlinux 0xa94986ac rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa979ec9b find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xa9974dbf fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a59db2 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa9a7912b dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xa9a9622e kvm_vcpu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa9b4287a pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xa9bb7142 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xa9bc62bb nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xa9bc8b74 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa9d07d2c relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e1d216 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xa9ef8548 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xa9f3418b is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xaa04dd3c blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0xaa106118 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xaa13a4c0 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xaa1702c5 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa1968d5 dpbp_enable +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa45acfa ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xaa644001 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa7fb8ec gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0xaa82113f debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xaa9981b2 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0xaa9bddd8 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xaaa493c8 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xaaa6419b devm_request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaacab2ff da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaae42f35 gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0xaae74bc7 devlink_free +EXPORT_SYMBOL_GPL vmlinux 0xaaf34ba0 irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0xab00d0e4 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xab060841 zynqmp_pm_query_data +EXPORT_SYMBOL_GPL vmlinux 0xab174d69 regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0xab23049e devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xab23f86d regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xab3132ef usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xab401320 __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xab8a54f3 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xab8d5fc7 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xab945669 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0xab995e77 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xab9d0073 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xab9d2b6f nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xaba5b6e4 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xabbdbd35 zynqmp_pm_reset_get_status +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc7a893 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0xabcf8fd6 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xabd14fa0 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xabd45848 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xabdc9c3c of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xabdd5e10 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0xabde27ad palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xabe87f79 pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xabf5a294 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xabf8bc72 devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xabfe63ae skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xabfff2af __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xac0dc494 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xac2b17fb nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0xac31e75d dpcon_get_attributes +EXPORT_SYMBOL_GPL vmlinux 0xac41e40a blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xac4dbc78 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xac51090c devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xac5f16ba regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xac724933 regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0xac72da47 psil_get_ep_config +EXPORT_SYMBOL_GPL vmlinux 0xac8403da tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xaca03709 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xaca174b0 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacd6a012 do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0xacec2f90 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xacfefbe7 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0xad095afc crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xad0f2b6c unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xad104ae1 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xad1bed38 led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xad2674d3 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xad2bcca5 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xad3dd099 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xad3de898 regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xad464ccf fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xad4a11b4 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad61a471 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xad633406 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad7db612 user_read +EXPORT_SYMBOL_GPL vmlinux 0xad7f043f efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xad7f5a5c ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xad8850de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xad9c992e sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xada23faa trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xada6ee6d direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0xada89060 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xadb3b03a iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xaddc59d9 tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xade758d9 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xadedd765 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae0b973f __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xae135d3a nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xae1371ac mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xae17a733 __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xae287d68 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xae2a8160 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae358acd unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae3f6934 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xae4720a2 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xae554ff9 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xae5b13db acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xae614e36 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0xae649499 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xae66224d dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae77dad4 crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7e4864 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xae834889 devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xae837eb5 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xae976932 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xae98773a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xae995f21 skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xaeb12315 find_iova +EXPORT_SYMBOL_GPL vmlinux 0xaeb143a8 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaebc4767 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xaed3549d of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xaee3f1e1 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xaeeddd26 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0xaf0b6ba7 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0xaf1bc9c3 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0xaf29851a devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0xaf2f5016 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf3a7ae9 __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xaf3b6aab dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf53a90c posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xaf66226d blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xaf6ba1f1 pinmux_generic_get_function +EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaf79459c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xafa6f267 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafb38656 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xafb70efb of_phandle_iterator_next +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb007dfd4 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xb01ad14c regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xb0280aa1 dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb05850ec sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0xb0658194 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0xb06c7b15 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0806085 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xb0816231 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xb08499c5 pci_parse_request_of_pci_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb08a22a3 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xb08f9ae0 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb0a4e94e i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb0b8562b thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bf1001 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d3e7fd usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xb0e27b00 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xb0e8e671 xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xb0edb9ef gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb111dcc8 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xb115ab97 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb1256bf9 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xb132e784 pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xb1332cde hisi_uncore_pmu_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb159a465 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xb162e062 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb166d4cf mtk_smi_larb_get +EXPORT_SYMBOL_GPL vmlinux 0xb16a4410 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb17a7876 iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb18b00eb icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0xb190ea23 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xb1a95873 scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0xb1b4e973 mtk_paris_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c1d108 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb1c27dcb ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xb1c89e06 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e46d79 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb1e8c07b dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0xb1ea9017 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb1eb6ed3 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0xb203e0d8 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0xb212eb8a fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb21696ce tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb234c7bb ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb23ff8c3 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb24a959b phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xb25a19de of_genpd_add_provider_simple +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26f7e49 cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb28a4495 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xb28b14e8 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xb2a1a64e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb2b3ba66 fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2c4a7a1 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb2cf442f pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xb2d58ed2 __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0xb2dc4f7f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f4ba20 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0xb3010098 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0xb302a8f4 iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb32e6514 iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb333978a devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb3351c6c rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb3399d34 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xb34bd5da devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xb3541db8 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xb3549fc8 clock_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb3572333 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0xb35b2c98 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xb35b5624 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb3697565 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xb3701649 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xb37422c0 fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xb37bb1f5 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb39a3683 pinctrl_generic_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xb3aa33ee iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb3ab85fa __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb3b37933 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0xb3c426b0 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xb3c5ecd9 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xb3edcb8d sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xb3fd2cc6 devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0xb3ffe429 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb40cad5b bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb41bc892 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb41c73af tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0xb429dc96 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xb42e7114 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb43c660b virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0xb43e9462 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb4474f88 debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0xb44890a0 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xb44c2dc7 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb452057c ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xb466e7e6 __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xb46aa256 gnttab_pages_clear_private +EXPORT_SYMBOL_GPL vmlinux 0xb4728497 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xb47d3034 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xb49b8d21 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0xb4aa231f md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ccba3e sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb4d22ab1 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb4dadd03 pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4dea6cb trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xb4e5f5f4 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4edd3be usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xb4f4f407 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0xb4f6e419 scmi_protocol_register +EXPORT_SYMBOL_GPL vmlinux 0xb4fdf904 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb4ff6bb6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb510c250 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb520eb79 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb522fb01 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0xb5241dfe tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0xb531805f crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb53225d7 generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0xb5436356 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb546485d of_property_read_variable_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb54b753a led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0xb55a9e4f rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xb55d8346 blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0xb55de460 HYPERVISOR_dm_op +EXPORT_SYMBOL_GPL vmlinux 0xb5679b2a vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xb5692325 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb56c31de fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xb575dd20 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xb579076a regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xb57ab82c usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xb5a83e35 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xb5a8c226 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5b0d177 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xb5bcb916 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xb5bd9d94 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0xb5cd70e5 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0xb5cdf8f8 pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0xb5d649e1 crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0xb5debf52 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb5e0e492 nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0xb5ed48c8 bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5f97ba7 of_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb5fe5608 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xb61023f0 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb627c56f phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0xb652cfb6 phy_configure +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb681573e fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0xb68d4be9 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xb6920b31 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb6b6ccb1 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb6d23ee5 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fb455a ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xb702838b alloc_iova +EXPORT_SYMBOL_GPL vmlinux 0xb7079a38 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb70a7457 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb7278bf5 tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0xb7379610 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xb7559b8e trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xb757086a of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb7701830 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xb7768b81 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xb77cc107 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0xb78ba013 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xb7920632 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb7a2027a usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7cfa25e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb7d7beb0 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb7df8c6c dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb7ec26c6 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xb7f73ef8 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0xb7f990e9 rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xb8198a4d transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xb819bdb2 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb8221e46 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0xb8273d0b __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xb82a847c inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xb82cb3a4 strp_done +EXPORT_SYMBOL_GPL vmlinux 0xb83df38f device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb83efb2c debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb8613bc7 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb8617afa irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb879be57 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xb87d373c of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xb882048d virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89027fb iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8ae691d device_del +EXPORT_SYMBOL_GPL vmlinux 0xb8b30ad4 power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0xb8b3a16b ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xb8b91804 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xb8bdb75b trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xb8be3b18 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8cfe521 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb8d37251 blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0xb8de881a fsl_mc_bus_dpni_type +EXPORT_SYMBOL_GPL vmlinux 0xb8e731dd clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xb8ea0f01 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xb8f11603 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb910bda8 iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb91e847b sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xb921ad05 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb9659ea0 device_register +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb96cf33d iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0xb9808131 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xb9868343 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xb9897e9d usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb99c3b23 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xb99fb9a1 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xb9a072b6 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0xb9ab4a4f put_pid +EXPORT_SYMBOL_GPL vmlinux 0xb9ae9206 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xb9b5d726 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bbdb96 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xb9c227b8 dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c9d9fe crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9db15b8 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xb9e09b78 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0xb9ec5ebf fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xb9f87ff0 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xba031118 xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0xba0ca1a7 pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0xba1577b4 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xba1a6626 mtk_pinconf_bias_set_combo +EXPORT_SYMBOL_GPL vmlinux 0xba220db7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba2f728e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xba32a6d4 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xba3c2d49 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xba3e619c dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xba52e77e crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xba60bf51 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xba675160 fsl_mc_device_add +EXPORT_SYMBOL_GPL vmlinux 0xba71ff0f open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xba810b89 pci_ecam_create +EXPORT_SYMBOL_GPL vmlinux 0xba813261 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xba8bcb78 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xba977415 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xba984d9b acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xba9bbfd7 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xbaa584ba __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad0d42f gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbad41702 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbafea67d max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0b25d2 register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0xbb18a09a housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0xbb2674b2 ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0xbb351412 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xbb39ca5f mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0xbb3dbabc ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xbb48e416 bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb755abf gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xbb77bb4c mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0xbb839fe1 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xbb85bdd1 pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0xbb86df4a trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0xbb8a1498 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbb8ca55b lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0xbba898a6 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbbbfe5a7 mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0xbbcd8cfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xbbd300e0 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xbbd509c1 dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0xbbd6292a ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xbbe1e47d __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xbc03e342 devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0xbc071b2b uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xbc15fa90 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xbc1cf11f __fsl_mc_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xbc2c3085 put_device +EXPORT_SYMBOL_GPL vmlinux 0xbc337bed pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xbc481864 dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0xbc51d473 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc568845 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xbc674c57 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc742a7e ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbc78540f register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xbc7a62cc edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xbc7ec879 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbc8c207d cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xbc9b8588 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbc9fe2e1 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xbca0cd1a serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc5ac54 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd9d336 udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0xbcdb2747 reset_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xbcdc7ab2 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcedbe43 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xbcf09e74 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbcf55b82 kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd45320f of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xbd49ac12 hisi_uncore_pmu_disable +EXPORT_SYMBOL_GPL vmlinux 0xbd512176 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xbd56b69f dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0xbd624749 fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0xbd6d2829 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xbd74b400 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xbd7b19b6 usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0xbd7b4f1f devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xbd7ca609 crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xbd88b720 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xbda7f6d1 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xbdb9d7d6 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0xbdba8655 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xbdd8c706 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0xbdda86ea spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0xbddb9ea2 disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0xbddd30e9 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe10df72 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xbe155cf6 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xbe1ac8b6 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xbe259f8c led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xbe2fe0f0 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe5c888b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe5e3414 k3_udma_glue_reset_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe78f5c8 sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbe836048 regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea30312 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xbea3f321 scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec66c3a __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xbecd2069 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xbedcd715 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xbeef8ed0 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbf0238b1 spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1b491d debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbf221bb7 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xbf247753 ti_sci_get_handle +EXPORT_SYMBOL_GPL vmlinux 0xbf3377e2 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbf4a97f8 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xbf679c2e gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf6d6d08 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf70e5cd usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbf9e2911 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xbfb63d05 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xbfbba601 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc28a0e alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0xbfc7d903 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0xbfd6c25c ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfed2cd9 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0xbfee0ead sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xbff344c1 fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xbfff074e class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc02d5d9b iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc04eca99 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc05667ab dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xc06c1b2e mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xc06f8a94 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0xc071b3c5 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xc0775b08 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc08b5737 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0xc08eff0e __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xc0a3d155 k3_udma_glue_rx_get_flow_id_base +EXPORT_SYMBOL_GPL vmlinux 0xc0a902f7 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0xc0a954e9 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ac0334 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xc0b5c03c iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0xc0ba85ed ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xc0cef50a bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xc0d908d0 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e1605f of_reserved_mem_device_init_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e886f9 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f590c1 usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc11b8f30 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xc131d943 __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xc133a964 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xc14b60a3 pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc15e271e sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xc16618a2 regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0xc16a84e0 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc175ee57 dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0xc17e9946 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xc18cb5f9 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xc1a75eda led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0xc1a947a2 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0xc1ade38e scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0xc1bbfee9 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc1c0d5de kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0xc1cb2fe2 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0xc1cc9b37 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0xc1dae019 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc1dce028 k3_udma_glue_reset_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xc1dd2b9d irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0xc1def487 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xc1e1e5be ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xc1ea87e6 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0xc1ecc1a4 meson_clk_dualdiv_ops +EXPORT_SYMBOL_GPL vmlinux 0xc1f24602 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xc1f7abb8 fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0xc21601bd devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xc228e5f7 bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22ed7f4 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xc2319467 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc23fee8f xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0xc241e5ac security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc28ebd1d simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc2a3e570 errata +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2b9cb1f setfl +EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc2c3790c smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc2d33a88 blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0xc2da6587 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xc2de27ca hest_disable +EXPORT_SYMBOL_GPL vmlinux 0xc2e503c4 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xc30c9f15 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xc319dd20 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc31d0205 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xc324ebef get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xc328ed2d hisi_format_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xc32d811a serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0xc32f3089 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc3382c5d sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc346720d pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0xc34a372a shake_page +EXPORT_SYMBOL_GPL vmlinux 0xc34efe26 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc3636c74 of_map_rid +EXPORT_SYMBOL_GPL vmlinux 0xc37754cc clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3990e00 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc3a15e97 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xc3a3669f crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc3b1fff1 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xc3c47771 icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3c94674 devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e00784 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc3e1abb3 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xc3e1c994 i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3ea8f3a synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc3f9b49b irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xc3faf216 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc3fceba0 gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc40db564 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc40f4e07 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43b9654 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0xc44645f0 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xc44ec608 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45707be tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xc46324f6 dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0xc46a9d32 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc471aa10 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc472fe52 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49b2718 virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc4a72936 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc4aa106a regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc4ac8eef __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xc4b4c18c perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xc4be6ccd tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc4c8dad1 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0xc4d6fe01 pinmux_generic_remove_function +EXPORT_SYMBOL_GPL vmlinux 0xc4dc5437 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xc4e6edab serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0xc4e99624 of_clk_hw_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xc4eae733 perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4fb902d pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0xc5156bf3 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc51818e9 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xc528d78a rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0xc52f0388 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0xc5432031 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc54551d0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc54861de acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc563efa3 xhci_mtk_sch_exit +EXPORT_SYMBOL_GPL vmlinux 0xc564ec25 ti_sci_inta_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc57303d2 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc594d840 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc5996c8c pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5ae509d kvm_init +EXPORT_SYMBOL_GPL vmlinux 0xc5ae6f06 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xc5c0ef1f ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc5c77156 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xc5cbceb5 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc5d789df alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc5d93016 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0xc5e9cebc fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0xc5f6f39f bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc621628d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc625d5f0 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc640642c debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xc64d86c8 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xc64d9673 ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc6572a90 xenbus_read_unsigned +EXPORT_SYMBOL_GPL vmlinux 0xc65c796d bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xc65e5199 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6694176 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc682a746 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xc688b534 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xc692f9f9 dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6ad07f2 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xc6bded7e register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xc6be404d devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6c19f17 icc_enable +EXPORT_SYMBOL_GPL vmlinux 0xc6def34b gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xc6f192b1 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7052516 devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL vmlinux 0xc70d11d7 rockchip_pcie_cfg_configuration_accesses +EXPORT_SYMBOL_GPL vmlinux 0xc710a2f5 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xc7177dbc addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0xc71e1ae0 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc7219342 nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0xc738b334 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc74dfba9 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xc756882c __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc75f6569 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xc76089b9 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0xc76cc122 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc7856e74 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xc79413b2 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a5e597 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xc7a90141 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc7b4eacf thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc7b9f77c amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc7ba9fde seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xc7c23ff0 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0xc7c26966 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc7e187cf regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc8044512 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xc80db8cb device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xc81474fd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xc817b060 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xc821a9a0 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc8222f83 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xc82468b9 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0xc8296483 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc8329d7e _copy_from_iter_flushcache +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc860d57b gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xc872b3b8 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xc87dd725 k3_udma_glue_pop_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xc87fb025 xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc8829f51 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xc8cccfb2 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e45bea sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc8edd8ff md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xc8f27f18 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xc90e2ddd tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc919ee4f platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc923aee1 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xc9345c0f digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96063c6 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc966a80e fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xc97a00c9 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97cdd50 blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xc97e72a2 spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0xc9801d5a crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xc9803868 sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc990a14d irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xc9a30aac inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc9b2e6eb dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xc9b4b515 blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0xc9b63de0 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xc9c87652 iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0xc9c98fcc bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0xc9ca8152 dprc_get_obj_count +EXPORT_SYMBOL_GPL vmlinux 0xc9cb1390 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0xc9d51601 noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xc9de9ea9 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f69690 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xc9fb00f7 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0xc9fc789b fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL vmlinux 0xca03c3a7 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xca15d035 acpi_pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xca368afe cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xca496b92 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xca4b8efd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xca6da94d pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0xca70def0 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xca9bc299 rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xca9bd8f8 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xca9d2f8d rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xcaa0e62a rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0xcaa96830 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac12903 serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0xcac5ba80 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcacd45c4 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcacd88a0 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xcace78be phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0xcad8d8d1 dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0xcae7ce5d fsl_mc_get_version +EXPORT_SYMBOL_GPL vmlinux 0xcaefcb09 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0xcaf1d958 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xcaff0477 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xcb032276 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xcb158823 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb30cbe9 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xcb380e49 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xcb3f591f mtk_pctrl_show_one_pin +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb5b236d usb_of_get_companion_dev +EXPORT_SYMBOL_GPL vmlinux 0xcb66d510 i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0xcb877bcc fsl_mc_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcb905beb switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xcba5e00c skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xcbc269f7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xcbcad5b3 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xcbccdc4c pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xcbd572f3 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xcbe11d2d rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbf28482 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0xcbfff5e4 spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcc0fd0a7 k3_ringacc_ring_push_head +EXPORT_SYMBOL_GPL vmlinux 0xcc19ff8d gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xcc1f4b22 perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc31e125 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc3f84f7 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc55f7da of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xcc690938 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcc768af4 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcc7baf58 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xcc7d3293 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xcc862e73 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcc97f7bd __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xcca0d178 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xcca602d6 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xccb94a65 serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0xccb9fb53 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0xccbb22a5 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xccc59f0b tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xcce582e1 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xccec51e4 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xccfb3c69 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xcd049a8e kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xcd1c1a53 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xcd22c092 devm_thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xcd243785 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd2530c1 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xcd37e8ee power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xcd3e5c7c acpi_release_memory +EXPORT_SYMBOL_GPL vmlinux 0xcd57b243 apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd759b82 k3_ringacc_ring_reset +EXPORT_SYMBOL_GPL vmlinux 0xcd76ebd7 clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xcd850943 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xcd8ac3c0 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd96fb29 mtk_pinconf_adv_drive_set +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbac8a7 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xcdc86b55 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcfd804 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0xcde26600 cppc_get_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xcde30335 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xcdee8c79 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xcdf29fa2 __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcdf4719c extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xcdfe2b49 decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xcdff35f8 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xce0a4020 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0xce1ee201 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xce30be29 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce316d7e zynqmp_pm_set_sd_tapdelay +EXPORT_SYMBOL_GPL vmlinux 0xce3171b8 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xce358454 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xce3f4439 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xce439163 devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0xce55cf78 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xce57fc68 mtk_pinconf_adv_pull_get +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce735db2 soc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xce85c790 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0xcea28225 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xceac8674 zynqmp_pm_read_pggs +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb1fa2f irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0xcec1fb7e devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xcecd1ef9 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xced48970 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xced68067 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee5c8d5 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0xcee6209d crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0xcee88e7a of_overlay_fdt_apply +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xceff9b36 __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0xceffcb6d pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0xcf05ec4b proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xcf266307 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcf29f0ef xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5ba4bf iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcf6eb9ff mtk_pinconf_drive_set_raw +EXPORT_SYMBOL_GPL vmlinux 0xcf721498 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xcf7ef930 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xcf8fac45 sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0xcf95f863 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcfbaa72e of_usb_get_dr_mode_by_phy +EXPORT_SYMBOL_GPL vmlinux 0xcfc15f4b rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0xcfc37766 mtk_is_virt_gpio +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc653b0 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfcb7a45 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xcfd30d71 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xcfe4daf7 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xcfffb964 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0025cf0 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd0026b9c devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xd0058322 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd00ac79f fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0xd0137185 of_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xd0191eb0 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd04291cc mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd06736a5 of_clk_hw_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd08f5a67 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xd092e349 lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0xd0974940 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xd09911a6 acpi_dev_get_irq_type +EXPORT_SYMBOL_GPL vmlinux 0xd0aa4407 iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0xd0b78e08 acpi_cppc_processor_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d156e9 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xd0d3f0a4 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xd0d40c85 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0eede14 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xd0ffdf61 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd11d2fa7 rockchip_pcie_init_port +EXPORT_SYMBOL_GPL vmlinux 0xd12a21b0 regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd12c7978 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0xd12d7564 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1456ccf stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd146d8d3 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd16724d9 nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xd169de86 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xd1702782 scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0xd17e4810 mdio_mux_init +EXPORT_SYMBOL_GPL vmlinux 0xd1810594 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xd1971a5e __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xd19b1a7a dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xd19b6441 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xd1aceceb clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xd1b26716 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xd1cbb439 fsl_mc_bus_dpio_type +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1cc73d5 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd1d317d8 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0xd1d6ca4c usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd1dad33e fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xd1ddddcf spi_async +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f40cce device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd1fa6a94 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd1fdb234 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd20016d0 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd222ece5 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xd245f38f pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xd24b7103 fsl_mc_portal_free +EXPORT_SYMBOL_GPL vmlinux 0xd24e9e8c klist_init +EXPORT_SYMBOL_GPL vmlinux 0xd2507082 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xd250bc57 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xd2554341 serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0xd259f7f7 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd25db1d6 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd267884e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xd268cf8e xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27f215d gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xd28327f6 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0xd2898817 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xd29356c6 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd293ed88 bgmac_enet_remove +EXPORT_SYMBOL_GPL vmlinux 0xd2952322 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xd29fe355 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2a34842 md_start +EXPORT_SYMBOL_GPL vmlinux 0xd2ad5586 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2c7080b debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd2c8ae77 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2ca53ad skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2e07b0b da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xd2e23dd6 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0xd2e61a78 bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0xd2efe854 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd301c2a5 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0xd303584e debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd3053bdc i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0xd30f7502 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd311dd17 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd31c241d blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd32694be sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xd32df973 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xd367c79a dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0xd3712090 pci_host_common_probe +EXPORT_SYMBOL_GPL vmlinux 0xd3752c27 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd386c935 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd38769f9 regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0xd39c754d pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3bfa753 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3ca0a2c tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xd3df6827 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd3e61ee8 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd40196f5 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41a6a78 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xd41d7d85 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xd423892f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xd4265dbd __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd43683d1 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd43e893e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xd44276d0 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xd44809be regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd454443a bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0xd46af5ef cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xd48c28a7 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd48f1951 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd4938ddb pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd4966b32 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xd4986de0 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4a03969 blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0xd4a745f8 metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0xd4b095d6 dpcon_open +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cc0c2e shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd4da376d kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xd4df3726 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xd4e50fe4 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd4ee2ade dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd5063fd6 genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0xd50694ef led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd51aff59 pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xd5210685 cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0xd525f1ac dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd5315dc4 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xd53c67b3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL vmlinux 0xd549228c perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xd5571248 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5673637 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0xd5742104 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd5772bd6 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd57fbd31 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5807af3 k3_ringacc_ring_pop +EXPORT_SYMBOL_GPL vmlinux 0xd5835918 save_stack_trace_regs +EXPORT_SYMBOL_GPL vmlinux 0xd5884d08 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd58fd0df fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xd5943ef7 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5ad01c6 pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0xd5ad357f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xd5b57ab3 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5c1c1dd driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5c7f797 edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0xd5cb98d8 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xd5dab5f9 d_walk +EXPORT_SYMBOL_GPL vmlinux 0xd5ecb42d nf_route +EXPORT_SYMBOL_GPL vmlinux 0xd6037f6b dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0xd6175525 clk_regmap_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xd6337c0f anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd633d049 devm_of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xd63c8744 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd65504e5 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd69d465d usb_role_switch_register +EXPORT_SYMBOL_GPL vmlinux 0xd6ad50e8 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0xd6b8c569 lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0xd6c4f769 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd6d7947b tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xd6da6ad5 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd6dc6d06 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xd71bd0b7 kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xd71c8881 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd72473c6 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd736a8d4 mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd741c4fc tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd7543422 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xd76388e6 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd7954d78 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xd7998e71 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0xd7ac882b perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd7bc858d xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xd7c39fff free_iova +EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7d64f03 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd8237495 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0xd825fd8a tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd83a576e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd8457ad9 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd876f7d3 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0xd87c4c33 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88b3012 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0xd893b9c7 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd8b706b4 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xd8bb5e43 acpi_subsys_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xd8d24416 hisi_clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xd8d41686 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8faf76a virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd8fdc6e5 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0xd8fe6cd1 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xd8fe9e37 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xd90328cf sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xd9086502 zynqmp_pm_reset_assert +EXPORT_SYMBOL_GPL vmlinux 0xd90a93a7 k3_udma_glue_rx_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xd91ce764 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0xd92f0791 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd93163ec __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xd93a5cb1 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0xd94a714d devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd95c73fa mtk_hw_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd991f444 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xd99db4f4 security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd9b9f2ef phy_modify +EXPORT_SYMBOL_GPL vmlinux 0xd9bc1df1 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd9bd2a03 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xd9c0b4c6 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xd9c4e25b gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d879 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0xd9d82329 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd9e11041 fsl_mc_get_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9ebaaa7 devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0xd9f02bda sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd9f2c0c4 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xd9faa7a5 zynqmp_pm_set_pll_frac_mode +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda10d386 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xda14872f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xda15a15d alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xda29b6f3 mmput +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda34743a gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0xda3cc5f4 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xda5ca23d tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xda72b884 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xda7912d4 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xda850a6b devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xda86096a dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xda886c4e ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xda8988ed devm_acpi_dev_remove_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdab70330 handle_fasteoi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xdab755ac kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xdac9af89 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xdacae4bd usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xdacc7b69 bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0xdada39f3 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdafad885 memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdb1cba15 hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb1d70cb virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb33f713 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xdb3a89d7 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb59abba pinmux_generic_get_function_name +EXPORT_SYMBOL_GPL vmlinux 0xdb5a934e clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb6f1a02 __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xdb735885 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb971970 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdba11456 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xdba9cc92 pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0xdbadeedc l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdbcb0c10 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xdbdcfad1 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xdbea3262 serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdbf07667 bgmac_enet_probe +EXPORT_SYMBOL_GPL vmlinux 0xdbf13a0f usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xdbf29726 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc02b583 clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0xdc0fe7a1 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xdc12b226 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xdc139c13 k3_udma_glue_tx_get_hdesc_size +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc21e866 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xdc2e793d tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xdc3d14da of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc71876d serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xdc77cf95 inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdc7df67f apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc83eb95 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcaeb934 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdcb0326a irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xdcba0656 pci_ecam_free +EXPORT_SYMBOL_GPL vmlinux 0xdcc2be13 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xdccd03e5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xdcd18d2f queue_iova +EXPORT_SYMBOL_GPL vmlinux 0xdcd959f2 pinmux_generic_add_function +EXPORT_SYMBOL_GPL vmlinux 0xdce23a83 sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd066838 __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd07e356 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xdd1ad588 mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0xdd1fca4d irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0xdd2678e3 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd63a4c2 of_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xdd6c1f6d devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd7d77dd shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0765 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0xdd7f64f0 cpu_logical_map +EXPORT_SYMBOL_GPL vmlinux 0xdd90ec02 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xdd9ad49a clk_regmap_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xdd9dde6f iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xddb36f94 pci_pr3_present +EXPORT_SYMBOL_GPL vmlinux 0xddb708e4 mc_send_command +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcdea05 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xddd67936 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xddd8e2ac pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xdde13440 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xddeb222c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xddfcf498 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xde077809 dpcon_close +EXPORT_SYMBOL_GPL vmlinux 0xde097b12 ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0xde09a94d xas_find +EXPORT_SYMBOL_GPL vmlinux 0xde156471 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xde1b037d device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xde2d3af0 acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde750504 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xde9a8589 crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xde9ab8c7 xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xdea702e1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xded098b5 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xdee6ed3d xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xdeff535b xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf04d7a0 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca3f4 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1800e3 fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0xdf223247 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf27e90b iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0xdf2f36c6 ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0xdf424b1e rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xdf429f10 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xdf458f13 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xdf46a5c9 init_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xdf7ee8bd led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0xdf90f3f0 bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdf92f1c4 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xdfa2e2f9 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdfab4744 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0xdfab90f2 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xdfb60767 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xdfb62e52 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xdfc807f1 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfd551cc mtk_eint_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xdfe0a848 dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0xdff02203 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe0074def gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe0178044 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe02be1a7 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xe037666e unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe040167b edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe05e0df2 dpbp_reset +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe091225e bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c14100 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe0c7e9c6 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe0f67f92 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1049904 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0xe10857a7 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe11295fe cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xe119e9ea __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe141d8dd nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0xe15c22a1 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe167d9f1 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0xe1771f50 sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17e6f37 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xe1802dc8 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0xe18bcb77 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0xe1902b5d acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xe194ec7a locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xe1978fa8 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xe1a8d7c9 net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1c73994 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xe1d2712e irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0xe1d4d6e4 security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0xe1d59933 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe1d9e8df md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xe1e4df72 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0xe203ceac fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xe20cd8cf gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xe217ffeb pinctrl_generic_get_group +EXPORT_SYMBOL_GPL vmlinux 0xe21e70bc rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xe2255cfe pinmux_generic_get_function_count +EXPORT_SYMBOL_GPL vmlinux 0xe2284e73 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xe2293b47 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xe22d848a efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe23b3431 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xe2582a12 btree_init +EXPORT_SYMBOL_GPL vmlinux 0xe25cc6fe thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xe26fe838 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe29ad433 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0xe29c9757 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xe29d353c clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xe2a960db pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0xe2aa4a5e gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2c786a7 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe2d7489b kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xe2f2db03 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xe2fa7dc2 xen_set_affinity_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xe3042b64 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3075a64 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xe31ca0bc pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0xe328d2cc genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0xe338c5ac inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0xe34af078 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xe370ea4f mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xe37174b8 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xe38cba53 bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0xe38f5a9a debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe393462c ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3a4c344 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xe3afac1d iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3b211d9 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe3bd2a63 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3c3dca8 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xe3cd5fae klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe3dcad19 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe3e65421 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe3ebf9bd arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xe3fce571 fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0xe3fdd994 ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0xe40531d7 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe4248980 cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe437cab7 devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0xe43f3e7b md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe444cc57 nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0xe4493bc5 crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0xe4564e07 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4770c16 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xe47f50f3 devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xe4874aef __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe48fd48c wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe495926a alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a38c32 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b50947 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4c76c90 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xe4c83fb0 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xe4c99d07 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4e7f313 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe4fc2bf6 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0xe502d43c usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xe50edca2 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xe51028d1 sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xe5191aba devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xe52a4ac9 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0xe538790e rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe5431407 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe549e931 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0xe54c6d58 put_iova_domain +EXPORT_SYMBOL_GPL vmlinux 0xe5516728 k3_udma_glue_tx_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5538557 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0xe56b7fe5 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xe5846f49 of_k3_ringacc_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe5867698 dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58a38b1 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0xe59bd196 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xe5a8bd9b usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xe5a925d3 zynqmp_pm_init_finalize +EXPORT_SYMBOL_GPL vmlinux 0xe5beb9dc xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xe5c02b64 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe5cb1943 hisi_clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe5d3179c ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe609d1c6 __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe61c6aef of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xe61cb892 dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe6316fb2 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xe6329fe0 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe63a906f sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe63c84b8 clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xe643ddad mtk_mmsys_ddp_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xe6462457 ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0xe64b8b4a clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe64f2c97 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe669106c fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0xe67b04e3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xe67c3574 sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0xe6886e86 ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0xe696157f rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe6a218bc pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0xe6cfac65 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xe6d3d94c dev_pm_opp_get_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6e988c5 k3_ringacc_get_tisci_dev_id +EXPORT_SYMBOL_GPL vmlinux 0xe6e9cbaa phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0xe6ed02b9 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xe6f52443 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe6f5e6f5 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe705af65 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe71317fe devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xe729a11f bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0xe7312d78 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xe736cb1d usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xe741800f kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75c3bc0 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xe76473ce pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77a0d3b bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7838da6 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe7921fba pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xe7936243 zynqmp_pm_clock_getstate +EXPORT_SYMBOL_GPL vmlinux 0xe7a15bdd key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xe7bb918f dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xe7d4e79a peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7d832ac irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xe7d96de1 iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0xe7d9972c posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe7e93b6f transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7f2a0db event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xe7f80885 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe81120c2 k3_udma_glue_request_rx_chn +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe8361b9a pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0xe840bec3 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8525c78 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL vmlinux 0xe854f303 rockchip_pcie_enable_clocks +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe868c83e ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xe8824e44 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xe88a4e7b udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xe88c8967 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xe88e1e0d ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xe89ee342 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xe8b40f33 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe8bb51e9 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0xe8ecc658 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xe8eccec4 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe8fcd158 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xe908f992 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xe917b318 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xe919741b to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xe91b3cc4 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe946de31 fsl_mc_portal_allocate +EXPORT_SYMBOL_GPL vmlinux 0xe948c77d rockchip_pcie_parse_dt +EXPORT_SYMBOL_GPL vmlinux 0xe951806e pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xe953e495 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe958ce7a tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xe97e6ceb dm_put +EXPORT_SYMBOL_GPL vmlinux 0xe9ad9951 devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0xe9ae5445 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe9bbdbd4 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xe9bed6cb regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xe9c5b605 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d63a0d k3_udma_glue_enable_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xe9d97a40 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe9dd4050 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xe9dee62b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xe9e18eb7 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0xea0caf25 acpi_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xea104757 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea264829 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xea2cdf4e serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea5c60d8 devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0xea5f7e1e gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xea7a53b9 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xea7ff6e9 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xea8360f8 fsl_mc_portal_reset +EXPORT_SYMBOL_GPL vmlinux 0xea989f56 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0xea9ea414 nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xeaa57470 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xeaac52fa cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xeaad96f9 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0xeacb30d2 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xead68fa8 pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0xeadaa183 devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeaedd6a6 xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xeaf5ad6d ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xeaf793b0 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xeaf7fe0f sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb029633 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xeb1366d5 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0xeb136d51 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xeb2314b4 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xeb2dec4a task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb3f8466 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xeb4221e4 trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xeb51a832 synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb7273d7 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0xeb84baac usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xeb9ac602 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xeb9d92b3 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebd94e13 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0xebe0e36a inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xec013ae4 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0xec240594 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xec2781fa of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xec404c4f gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xec40cb4b ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec5d055b regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xec660cd3 __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec6ea532 do_truncate +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec98b2c1 of_property_read_variable_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xeca006fd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xecb19844 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xecb30522 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xecb5ac18 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0xecba68e3 gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0xecbabc51 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xecc3df53 iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0xecd34361 irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xecd8f23d xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xece1a562 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xecfea2bd __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0xed1bcb5d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xed428e3f ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xed4f6ec0 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xed573050 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xed6245b9 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0xed7b8fd9 mtk_pinconf_bias_get_combo +EXPORT_SYMBOL_GPL vmlinux 0xed7c7b91 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xed7e39b5 iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0xed94b645 pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0xed9ce789 crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xeda33fcc adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xedaeea9f usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0xedb6ebf7 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xedd092d5 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xede3eb42 dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xede9a09a btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xedfca519 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xee0da4f4 fsl_mc_bus_dpmac_type +EXPORT_SYMBOL_GPL vmlinux 0xee117163 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xee2711cc pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xee2dd3d9 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xee3186a1 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee40262b extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0xee45baeb transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xee5a32d7 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xee60a4f0 iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0xee60c432 hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xee6b4331 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xee72d9e4 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xee842763 mtk_pinconf_adv_pull_set +EXPORT_SYMBOL_GPL vmlinux 0xeea1ca6d fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xeea6f1eb fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xeeaa1528 extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0xeec2b362 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0xeec7d410 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeefd617e nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xeefef5f3 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xef05703c xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0xef083b76 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xef139391 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xef1dde67 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef5dd51c regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef7681a7 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xef80a311 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xef86780e of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0xef8be3d3 sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xef8c1bd5 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xef92ef33 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xef98e426 fsl_mc_device_remove +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa59e62 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xefaa811a tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xefb89fad screen_pos +EXPORT_SYMBOL_GPL vmlinux 0xefe05860 platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xeffeff0a serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xf001852f sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf006a291 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xf01e085c __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf0427b7e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xf04429b4 acpi_bus_get_status_handle +EXPORT_SYMBOL_GPL vmlinux 0xf051d66a acpi_data_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xf0635848 battery_hook_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06f1a9b of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xf071d33d platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf0748f46 __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xf075c472 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf08050c4 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xf0825738 pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0xf08920cb ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0xf090bc01 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0942877 perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0xf0a577e8 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf0c76140 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf0d478c7 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xf0da3972 pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xf0dd1026 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf0f2ccb4 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf116d218 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xf11c0c5b tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xf1318c32 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf16e5d60 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf170503a of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf188194c pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b8282a blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xf1bece9d __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0xf1c67624 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1cacb5b irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xf1cc153c dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf1d2a316 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xf1d6433e mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xf1fb46f3 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xf1fed4cf nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf2247a5d ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xf224a1e9 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2252e4d pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xf22dcfe3 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf240837a platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0xf26d7013 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf27803d8 cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xf278dfcf get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xf27d0a7b gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xf28859e3 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf28e805f kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf29c6644 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2a93b3a debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf2c1f456 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xf2f6c6a2 mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0xf2ff81f1 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xf3035f8a fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf316b96c ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xf31766de gnttab_foreach_grant_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf31896dc user_describe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32686a5 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf32c901e subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf333d364 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xf34223c9 sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0xf342bcf1 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf346c5d6 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf358ecff dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xf370bba6 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf380f88f perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0xf3ae7a26 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b95d79 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3bfa57e rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xf3c9bf7f dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0xf3d2ffe2 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf3dd80b4 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf3e648ef serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0xf3e8766d ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0xf40451c9 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xf40840d1 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xf414d7f1 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xf41572cf devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0xf41bb3b6 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xf425c1d1 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf4559d02 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xf45d6f10 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf4765653 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xf47d8cf9 is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0xf4871cc1 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xf490cb70 sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b5627f fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xf4bc989b blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xf4c1c05c bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xf4d3660c raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4de5fd9 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xf4e284e0 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0xf4e79f8b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xf50e911e copy_reserved_iova +EXPORT_SYMBOL_GPL vmlinux 0xf5211021 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xf52f5283 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf546d049 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf559cfae rpi_firmware_get +EXPORT_SYMBOL_GPL vmlinux 0xf56482a0 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xf57464d8 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0xf58a3fe2 perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0xf58ae0f5 bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a70356 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xf5ceb357 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5d9e914 of_find_spi_device_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf5e1a77c trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf5f60292 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0xf6047a78 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xf607660d device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xf63a043d devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf63cd010 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf64d40c6 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf64d435f phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf64e6fab gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf6646170 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xf6710e27 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf67e244b hisi_uncore_pmu_del +EXPORT_SYMBOL_GPL vmlinux 0xf68a54b5 serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0xf696eb5e spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xf6bcfea4 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xf6c144cb fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0xf6c34c04 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xf6c54a60 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c839b1 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6c9228c sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xf6cf540e usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf6cfe889 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xf6d3058d gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xf6db1884 clk_regmap_gate_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xf6e44341 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf7235acd crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xf7265d28 dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf7269ceb regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xf730fb4a qcom_smem_state_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf731f06f dprc_set_obj_irq +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf7490e66 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf749c10a __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xf75d07e3 device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xf7681215 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xf7745368 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf7866b4f bind_evtchn_to_irqhandler_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf78d42e4 nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0xf7a2687e user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7c099a0 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xf7c39398 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7cd403b dpbp_open +EXPORT_SYMBOL_GPL vmlinux 0xf7d37caf devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0xf7d66957 firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf7dec6f6 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xf7e60d65 iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0xf7e7a45f raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf7ec0d09 nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0xf7f94d46 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf80da0ff wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf816f983 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf81972ed of_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xf81ebdf7 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xf81f0494 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xf826666a devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf8661684 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf8673e02 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xf87233ba icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0xf872dffa bind_interdomain_evtchn_to_irq_lateeoi +EXPORT_SYMBOL_GPL vmlinux 0xf874de2b crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf883d6f3 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xf8912525 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xf8b14abc crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xf8b4d5c1 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xf8c2820a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf8e20436 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xf8e66eae synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0xf8e73296 mtk_eint_do_init +EXPORT_SYMBOL_GPL vmlinux 0xf8e8b1d3 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f7d580 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xf8fc94ba virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xf900c77d zynqmp_pm_clock_disable +EXPORT_SYMBOL_GPL vmlinux 0xf910a0d6 meson_clk_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0xf915f4f0 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xf91ab2ed __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf933ef33 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0xf938834b sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0xf9511139 pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0xf952c11e fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf97b61c4 soc_device_match +EXPORT_SYMBOL_GPL vmlinux 0xf97f410c devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0xf98aa3d7 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0xf98d0526 mtk_smi_larb_put +EXPORT_SYMBOL_GPL vmlinux 0xf98db8cd ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xf999ac97 of_get_required_opp_performance_state +EXPORT_SYMBOL_GPL vmlinux 0xf99a06d7 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xf9a00dbe ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a18e8a devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9a9b0fe crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xf9b1f1f2 nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0xf9b32e10 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9c33287 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0xf9c5dae8 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xf9dd7370 iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0xf9e3d3ab device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9ff85ac gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xfa01354b bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xfa013762 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xfa04a251 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xfa0a8896 acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0xfa1e25da fsl_mc_bus_dpmcp_type +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1fc43f pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xfa32d616 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa349688 aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xfa3910ef bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa6ca109 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xfa8e7b65 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xfaa8aa4a i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0xfab1bd8f ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfac52206 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfaeb8620 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xfb04359e badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0xfb0b9735 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xfb11c070 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xfb2af51f iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfb2feca7 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb40083b spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xfb413428 regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb58963a power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xfb61173c nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xfb614576 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xfb6373d1 hisi_uncore_pmu_offline_cpu +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb728614 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xfb91d92e blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xfb94540a tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfb9b4b47 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xfba75e95 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xfbaaefe7 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfbb06045 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xfbb4d21d xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbceb230 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xfbdac6ca serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0xfbdfc558 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xfbea3435 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xfbec0255 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xfbfcfb3a xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0xfbffd601 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc07215e acpi_dev_gpio_irq_get_by +EXPORT_SYMBOL_GPL vmlinux 0xfc0797e4 free_iova_fast +EXPORT_SYMBOL_GPL vmlinux 0xfc0973dd perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc1e3a68 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc217311 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc30817a nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3dd3a6 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xfc4cd481 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xfc563556 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xfc6afbd9 xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0xfc72ceaa sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xfc746b3c gnttab_page_cache_shrink +EXPORT_SYMBOL_GPL vmlinux 0xfc8de6dc skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xfc9477b5 zynqmp_pm_set_pll_frac_data +EXPORT_SYMBOL_GPL vmlinux 0xfc9690e7 devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0xfcaa1642 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfcad10c9 wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xfcb93030 of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcc259a8 store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0xfcc853a6 devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0xfce641c2 hisi_clk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfce78c47 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0xfd0c1e4f init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xfd195774 k3_udma_glue_disable_tx_chn +EXPORT_SYMBOL_GPL vmlinux 0xfd20b94a usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xfd21b53c gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0xfd35125b md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xfd4bc3c4 i2c_dw_acpi_configure +EXPORT_SYMBOL_GPL vmlinux 0xfd677aba usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd770705 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0xfd8a05dc irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xfd94672b sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdc2eeb1 virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0xfdc4a7cf screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xfddce1b0 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfdf8634d sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0xfdfa29c4 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xfe07ea06 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xfe0e7cd3 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0xfe1570d5 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xfe16d65b platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xfe1a4a2e __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xfe31c6a4 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xfe3b5ea5 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xfe455922 cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe542db8 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe72c8ad tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfec3bf84 icst_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xfecc3128 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed5a0d9 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xfee63f3b lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xfee7fbf6 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xfeeeaa58 spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xfeeecd05 apei_read +EXPORT_SYMBOL_GPL vmlinux 0xfef69537 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfeff64b6 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0718bd vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xff20c597 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2b5aa4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xff2e381f pm_genpd_opp_to_performance_state +EXPORT_SYMBOL_GPL vmlinux 0xff379b43 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL vmlinux 0xff52ca3d devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xff584d52 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff679eaa xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff847a9b thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xff8aa252 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xffaae521 fsl_mc_object_free +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffaf0e24 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xffbb036a iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0xffcd50da rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xffd1123f save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xffd497c9 gpiochip_free_own_desc +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x01b28f83 ltc2497core_remove drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0x7dc06f7a ltc2497core_probe drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x01c9cb49 mcb_get_irq drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x04bff52d mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x5e57e8b5 mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x636585e0 mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x81749229 mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x995baf8b mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x9b6ae621 mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xa45ca6b0 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xa9788ea4 chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xc660d5f2 __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xd9b972ae mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf18b79c9 mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf9c651b0 mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xfae551fc mcb_release_bus drivers/mcb/mcb +USB_STORAGE EXPORT_SYMBOL_GPL 0x0742d36b usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x14bf5a95 usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1cbf7175 usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x220b48e8 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3d3a3f39 usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x4cc862c4 usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5189499c usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x51c86a72 usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x68f537ce usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6c6b83fe usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7ae5d912 usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x98c7847b usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa981d47f fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xae4ec02d usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xaf0ad7ed usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xb6da8f45 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xc47e9b5e usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe3fb4203 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe5bd21d9 usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xea28f6c0 usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf59783e6 usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf5d99679 usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf953b088 usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xfdf87063 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic-64k.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic-64k.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic-64k.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic-64k.modules @@ -0,0 +1,6316 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_aspeed_vuart +8250_exar +8250_men_mcb +8250_omap +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +9pnet_xen +a100u2w +a3d +a53-pll +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abp060mg +ac97_bus +acard-ahci +acecad +acenic +acp_audio_dma +acpi-als +acpi_configfs +acpi_ipmi +acpi_power_meter +acpi_tad +acpiphp_ibm +act8865-regulator +act8945a +act8945a-regulator +act8945a_charger +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv748x +adv7511_drm +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aes-arm64 +aes-ce-blk +aes-ce-ccm +aes-ce-cipher +aes-neon-blk +aes-neon-bs +aes_ti +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +afs +ah4 +ah6 +ahci +ahci_brcm +ahci_ceva +ahci_mtk +ahci_mvebu +ahci_platform +ahci_qoriq +ahci_seattle +ahci_xgene +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak7375 +ak881x +ak8974 +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +allegro +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-pr-ip-core-plat +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am53c974 +am65-cpts +amba-pl010 +ambakmi +amc6821 +amd +amd-xgbe +amd5536udc_pci +amd8111e +amdgpu +amlogic-gxl-crypto +amlogic_thermal +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx6345 +analogix-anx78xx +analogix_dp +anatop-regulator +ansi_cprng +anubis +anybuss_core +ao-cec +ao-cec-g12a +aoe +apbps2 +apcs-msm8916 +apds9300 +apds9802als +apds990x +apds9960 +apex +apple-mfi-fastcharge +appledisplay +appletalk +appletouch +applicom +apr +aptina-pll +aqc111 +aquantia +ar1021_i2c +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arcpgu +arcx-anybus +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_dsu_pmu +arm_mhu +arm_scpi +arm_smc_wdt +arm_smmuv3_pmu +arm_spe_pmu +armada-37xx-cpufreq +armada-37xx-rwtm-mailbox +armada-8k-cpufreq +armada_37xx_wdt +arp_tables +arpt_mangle +arptable_filter +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-pwm-tacho +aspeed-video +ast +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_snoc +ath10k_usb +ath11k +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlantic +atlas-ezo-sensor +atlas-sensor +atm +atmel +atmel-ecc +atmel-flexcom +atmel-hlcdc +atmel-i2c +atmel-sha204a +atmel_captouch +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796b +axg-audio +axi-fan-control +axis-fifo +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x-rsb +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bam_dma +bareudp +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm-flexrm-mailbox +bcm-keypad +bcm-pdc-mailbox +bcm-phy-lib +bcm-sba-raid +bcm-sf2 +bcm203x +bcm2711_thermal +bcm2835 +bcm2835-rng +bcm2835-v4l2 +bcm2835_thermal +bcm2835_wdt +bcm3510 +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm6368_nand +bcm7038_wdt +bcm7xxx +bcm87xx +bcm_crypto_spu +bcm_iproc_adc +bcm_iproc_tsc +bcma +bcma-hcd +bcmsysport +bd6107 +bd70528-charger +bd70528-regulator +bd70528_wdt +bd71828-regulator +bd718x7-regulator +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +berlin2-adc +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s_generic +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluefield_edac +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bman-test +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bnxt_re +bochs-drm +bonding +bpa10x +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmnand +brcmsmac +brcmstb-avs-cpufreq +brcmstb_nand +brcmstb_thermal +brcmutil +brd +bridge +broadcom +bsd_comp +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btqcomsmd +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +caam +caam_jr +caamalg_desc +caamhash_desc +cachefiles +cadence-nand-controller +cadence-quadspi +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camcc-sdm845 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +cap11xx +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cavium-rng +cavium-rng-vf +cavium_ptp +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccp +ccp-crypto +ccree +ccs811 +cctrng +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-dphy +cdns-dsi +cdns-pltfrm +cdns3 +cdns3-imx +cdns3-pci-wrap +cdns3-ti +cec +ceph +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-neon +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8318 +chipone_icn8505 +chipreg +chnl_net +chromeos_tbmc +chrontel-ch7033 +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_tegra +ci_hdrc_usb2 +cicada +cifs +cirrus +cirrusfb +clip +clk-bd718x7 +clk-cdce706 +clk-cdce925 +clk-cs2000-cp +clk-hi3519 +clk-hi655x +clk-lochnagar +clk-max77686 +clk-max9485 +clk-palmas +clk-phase +clk-plldig +clk-pwm +clk-qcom +clk-raspberrypi +clk-rk808 +clk-rpm +clk-rpmh +clk-s2mps11 +clk-scmi +clk-scpi +clk-si514 +clk-si5341 +clk-si5351 +clk-si544 +clk-si570 +clk-smd-rpm +clk-spmi-pmic-div +clk-sprd +clk-twl6040 +clk-versaclock5 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm3605 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +coda-vpu +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +contec_pci_dio +cordic +core +cortina +counter +cp210x +cpcap-adc +cpcap-battery +cpcap-charger +cpcap-pwrbutton +cpcap-regulator +cpia2 +cppc_cpufreq +cptpf +cptvf +cqhci +cramfs +crc-itu-t +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-ce +crg-hi3516cv300 +crg-hi3798cv200 +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_rpmsg +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_ec_vbc +cros_kbd_led_backlight +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +csiostor +curve25519-generic +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062-thermal +da9062_wdt +da9063-regulator +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +dax_hmem +dax_pmem +dax_pmem_compat +dax_pmem_core +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +ddbridge-dummy-fe +de2104x +decnet +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +dispcc-sc7180 +dispcc-sdm845 +display-connector +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9601 +dma-axi-dmac +dmard06 +dmard09 +dmard10 +dmc520_edac +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dpaa2-console +dpaa2-ethsw +dpaa2-qdma +dpaa2_caam +dpdmai +dpot-dac +dps310 +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drm_xen_front +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-axi-dmac-platform +dw-edma +dw-edma-pcie +dw-hdmi +dw-hdmi-ahb-audio +dw-hdmi-cec +dw-hdmi-i2s-audio +dw-i3c-master +dw-mipi-dsi +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_drm_dsi +dw_mmc +dw_mmc-bluefield +dw_mmc-exynos +dw_mmc-hi3798cv200 +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_mmc-rockchip +dw_wdt +dwc-xlgmac +dwc2_pci +dwc3 +dwc3-haps +dwc3-keystone +dwc3-meson-g12a +dwc3-of-simple +dwc3-pci +dwc3-qcom +dwmac-altr-socfpga +dwmac-dwc-qos-eth +dwmac-generic +dwmac-imx +dwmac-ipq806x +dwmac-mediatek +dwmac-meson +dwmac-meson8b +dwmac-qcom-ethqos +dwmac-rk +dwmac-sun8i +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edt-ft5x06 +ee1004 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efa +efi-pstore +efi_test +efibc +efs +egalax_ts +egalax_ts_serial +ehci-brcm +ehci-fsl +ehci-mxc +ehci-platform +ehset +einj +ektf2127 +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emac_rockchip +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_usb +emu10k1-gp +emxx_udc +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +envelope-detector +epic100 +eql +erofs +error +esas2r +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +etnaviv +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-fsa9480 +extcon-gpio +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-qcom-spmi-misc +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fan53555 +farsync +fastrpc +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +fintek-cir +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fixed +fjes +fl512 +flexcan +fm10k +fm801-gp +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +fscache +fsi-core +fsi-master-aspeed +fsi-master-gpio +fsi-master-hub +fsi-occ +fsi-sbefifo +fsi-scom +fsia6b +fsl-dpaa2-eth +fsl-dpaa2-ptp +fsl-edma +fsl-edma-common +fsl-enetc +fsl-enetc-mdio +fsl-enetc-ptp +fsl-enetc-vf +fsl-mc-dpio +fsl-mph-dr-of +fsl-qdma +fsl_dpa +fsl_ifc_nand +fsl_imx8_ddr_perf +fsl_linflexuart +fsl_lpuart +fsl_pq_mdio +fsl_ucc_hdlc +fsl_usb2_udc +ftdi-elan +ftdi_sio +ftl +ftm-quaddec +ftsteutates +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gasket +gateworks-gsc +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gcc-apq8084 +gcc-ipq4019 +gcc-ipq6018 +gcc-ipq806x +gcc-ipq8074 +gcc-mdm9615 +gcc-msm8660 +gcc-msm8916 +gcc-msm8939 +gcc-msm8960 +gcc-msm8974 +gcc-msm8994 +gcc-msm8996 +gcc-msm8998 +gcc-qcs404 +gcc-sc7180 +gcc-sdm660 +gcc-sdm845 +gcc-sm8150 +gcc-sm8250 +gdmtty +gdmulte +gdth +gemini +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +genwqe_card +gf2k +gfs2 +ghash-ce +gianfar_driver +gl518sm +gl520sm +gl620a +gluebi +gm12u320 +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-altera +gpio-amd-fch +gpio-amdpt +gpio-arizona +gpio-bd70528 +gpio-bd71828 +gpio-bd9571mwv +gpio-beeper +gpio-brcmstb +gpio-cadence +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-eic-sprd +gpio-exar +gpio-fan +gpio-grgpio +gpio-gw-pld +gpio-hlwd +gpio-ir-recv +gpio-ir-tx +gpio-janz-ttl +gpio-kempld +gpio-logicvc +gpio-lp3943 +gpio-lp873x +gpio-lp87565 +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-max77620 +gpio-max77650 +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-mlxbf +gpio-mlxbf2 +gpio-moxtet +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-pmic-eic-sprd +gpio-raspberrypi-exp +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sama5d2-piobu +gpio-siox +gpio-sprd +gpio-syscon +gpio-thunderx +gpio-tpic2810 +gpio-tps65086 +gpio-tps65218 +gpio-tps65912 +gpio-tqmx86 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-vibra +gpio-viperboard +gpio-wcd934x +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xgene-sb +gpio-xgs-iproc +gpio-xlp +gpio-xra1403 +gpio-zynq +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_wdt +gpmi_nand +gpu-sched +gpucc-msm8998 +gpucc-sc7180 +gpucc-sdm845 +gr_udc +grace +grcan +gre +greybus +grip +grip_mp +gs1662 +gs_fpga +gs_usb +gsc-hwmon +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hantro-vpu +hanwang +hbmc-am654 +hci +hci_nokia +hci_uart +hci_vhci +hclge +hclgevf +hd3ss3220 +hd44780 +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcd +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfpll +hfs +hfsplus +hi311x +hi3660-mailbox +hi556 +hi6210-i2s +hi6220-mailbox +hi6220_reset +hi6421-pmic-core +hi6421-regulator +hi6421v530-regulator +hi655x-pmic +hi655x-regulator +hi8435 +hibmc-drm +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hih6130 +hinic +hip04_eth +hisi-rng +hisi-sfc +hisi-trng-v2 +hisi504_nand +hisi_dma +hisi_femac +hisi_hpre +hisi_powerkey +hisi_qm +hisi_sas_main +hisi_sas_v1_hw +hisi_sas_v2_hw +hisi_sas_v3_hw +hisi_sec +hisi_sec2 +hisi_thermal +hisi_zip +hix5hd2_gmac +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hms-profinet +hnae +hnae3 +hns-roce-hw-v1 +hns-roce-hw-v2 +hns3 +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp03 +hp206c +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +ht16k33 +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei_cdc_ncm +hwmon-vid +hwpoison-inject +hx711 +hx8357 +hx8357d +hyperbus-core +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-bcm-iproc +i2c-bcm2835 +i2c-brcmstb +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-demux-pinctrl +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-fsi +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-imx +i2c-imx-lpi2c +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-gpmux +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-nvidia-gpu +i2c-ocores +i2c-owl +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-pxa +i2c-qcom-cci +i2c-qcom-geni +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-scmi +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-synquacer +i2c-taos-evm +i2c-thunderx +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xgene-slimpro +i2c-xiic +i2c-xlp9xx +i3c +i3c-master-cdns +i40e +i40iw +i5k_amb +i6300esb +i740fb +iavf +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibmaem +ibmpex +icc-bcm-voter +icc-osm-l3 +icc-rpmh +icc-smd-rpm +ice +ice40-spi +icp +icp10100 +icp_multi +icplus +ics932s401 +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-mux +iio-rescale +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imon +imon_raw +ims-pcu +imx-bus +imx-cpufreq-dt +imx-dma +imx-dsp +imx-interconnect +imx-mailbox +imx-pcm-dma +imx-pxp +imx-sdma +imx214 +imx219 +imx258 +imx274 +imx290 +imx2_wdt +imx319 +imx355 +imx6q-cpufreq +imx6ul_tsc +imx7d_adc +imx7ulp_wdt +imx8m-ddrc +imx8mm-interconnect +imx8mm_thermal +imx8mn-interconnect +imx8mq-interconnect +imx_keypad +imx_rproc +imx_sc_key +imx_sc_thermal +imx_sc_wdt +imx_thermal +imxfb +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-buffer-dma +industrialio-buffer-dmaengine +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int51x1 +intel-xway +intel_th +intel_th_acpi +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +ionic +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipa +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmb_dev_int +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc-rng200 +iproc_nand +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-hix5hd2 +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-spi +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3_bandgap +k3dma +kafs +kalmia +kaweth +kbtab +kcm +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kirin-drm +kl5kusb105 +kmem +kmx61 +kobil_sct +komeda +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +kpss-xcc +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +kvaser_pci +kvaser_pciefd +kvaser_usb +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +layerscape_edac_mod +lcc-ipq806x +lcc-mdm9615 +lcc-msm8960 +lcd +ldusb +lec +led-class-flash +led_bl +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-an30259a +leds-as3645a +leds-aw2013 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-cpcap +leds-cr0014114 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-el15203000 +leds-gpio +leds-is31fl319x +leds-is31fl32xx +leds-ktd2692 +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lm3692x +leds-lm3697 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77650 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxreg +leds-mt6323 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-sc27xx-bltc +leds-sgm3140 +leds-spi-byte +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +lego_ev3_battery +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lima +lineage-pem +linear +liquidio +liquidio_vf +lis3lv02d +lis3lv02d_i2c +lkkbd +ll_temac +llc +llc2 +llcc-qcom +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lochnagar-hwmon +lochnagar-regulator +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp873x-regulator +lp8755 +lp87565 +lp87565-regulator +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpasscc-sdm845 +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvds-codec +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +macb +macb_pci +machxo2-spi +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mailbox-test +mailbox-xgene-slimpro +mali-dp +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +marvell-cesa +marvell10g +marvell_nand +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max14656_charger_detector +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max5821 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77620-regulator +max77620_thermal +max77620_wdt +max77650 +max77650-charger +max77650-onkey +max77650-regulator +max77686-regulator +max77693-haptic +max77693-regulator +max77693_charger +max77802-regulator +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mceusb +mchp23k256 +mcp16502 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-cavium +mdio-gpio +mdio-hisi-femac +mdio-i2c +mdio-ipq4019 +mdio-ipq8064 +mdio-mscc-miim +mdio-mux-gpio +mdio-mux-meson-g12a +mdio-mux-mmioreg +mdio-mux-multiplexer +mdio-mvusb +mdio-octeon +mdio-thunder +mdio-xgene +mdio-xpcs +mdt_loader +me4000 +me_daq +mediatek +mediatek-cpufreq +mediatek-drm +mediatek-drm-hdmi +megachips-stdpxxxx-ge-b850v3-fw +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +melfas_mip4 +memory-notifier-error-inject +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +meson-canvas +meson-drm +meson-gx-mmc +meson-gxl +meson-ir +meson-mx-sdio +meson-rng +meson-vdec +meson_dw_hdmi +meson_gxbb_wdt +meson_nand +meson_saradc +meson_wdt +metro-usb +metronomefb +mf6x4 +mgag200 +mhi +mi0283qt +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microtek +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxbf-bootctl +mlxbf-tmfifo +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_hsq +mmc_spi +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmcc-msm8996 +mmcc-msm8998 +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_dim2 +most_i2c +most_net +most_sound +most_usb +most_video +motorola-cpcap +moxa +moxtet +mp2629 +mp2629_adc +mp2629_charger +mp5416 +mp8859 +mp886x +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpq7920 +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_felix +mscc_ocelot_common +msdos +msi001 +msi2500 +msm +msp3400 +mspro_block +mss-sc7180 +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6380-regulator +mt6397 +mt6397-regulator +mt6577_auxadc +mt6797-mt6351 +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt8183-da7219-max98357 +mt8183-mt6358-ts3a227-max98357 +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-btcvsd +mtk-cir +mtk-cmdq-helper +mtk-cmdq-mailbox +mtk-cqdma +mtk-hsdma +mtk-pmic-keys +mtk-pmic-wrap +mtk-rng +mtk-sd +mtk-uart-apdma +mtk-vpu +mtk_ecc +mtk_nand +mtk_rpmsg +mtk_scp +mtk_scp_ipi +mtk_thermal +mtk_wdt +mtouch +mtu3 +multipath +multiq3 +musb_hdrc +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mux-mmio +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvneta +mvpp2 +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxc_nand +mxc_w1 +mxcmmc +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxser +mxsfb +mxuport +myrb +myri10ge +myrs +n5pf +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nand +nand_ecc +nandcore +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +netsec +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfit +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-neon +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nicpf +nicstar +nicvf +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm750-pwm-fan +nps_enet +ns +ns-thermal +ns558 +ns83820 +nsh +ntb +ntb_hw_idt +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-bcm-ocotp +nvmem-imx-iim +nvmem-imx-ocotp +nvmem-imx-ocotp-scu +nvmem-rave-sp-eeprom +nvmem-reboot-mode +nvmem-rockchip-otp +nvmem-sc27xx-efuse +nvmem_meson_mx_efuse +nvmem_qcom-spmi-sdam +nvmem_qfprom +nvmem_rockchip_efuse +nvmem_snvs_lpgpr +nvmem_sprd_efuse +nvmem_sunxi_sid +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nwl-dsi +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocelot_vsc7514 +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocmem +ocrdma +octeontx-cpt +octeontx-cptvf +octeontx2_af +octeontx2_mbox +octeontx2_nicpf +octeontx2_nicvf +of-fpga-region +of_mmc_spi +of_pmem +of_xilinx_wdt +ofb +ofpart +ohci-platform +omap-mailbox +omap-rng +omap4-keypad +omap_hwspinlock +omfs +omninet +onenand +opencores-kbd +openvswitch +opt3001 +optee +optee-rng +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5640 +ov5645 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +owl-dma +owl-mmc +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +palmas-pwrbutton +palmas-regulator +palmas_gpadc +pandora_bl +panel +panel-arm-versatile +panel-asus-z00t-tm5p5-n35596 +panel-boe-himax8279d +panel-boe-tv101wum-nl6 +panel-elida-kd35t133 +panel-feixin-k101-im2ba02 +panel-feiyang-fy07024di26a30d +panel-ilitek-ili9322 +panel-ilitek-ili9881c +panel-innolux-p079zca +panel-jdi-lt070me05000 +panel-kingdisplay-kd097d04 +panel-leadtek-ltk050h3146w +panel-leadtek-ltk500hd1829 +panel-lg-lb035q02 +panel-lg-lg4573 +panel-lvds +panel-nec-nl8048hl11 +panel-novatek-nt35510 +panel-novatek-nt39016 +panel-olimex-lcd-olinuxino +panel-orisetech-otm8009a +panel-osd-osd101t2587-53ts +panel-panasonic-vvx10f034n00 +panel-raspberrypi-touchscreen +panel-raydium-rm67191 +panel-raydium-rm68200 +panel-rocktech-jh057n00900 +panel-ronbo-rb070d30 +panel-samsung-ld9040 +panel-samsung-s6d16d0 +panel-samsung-s6e3ha2 +panel-samsung-s6e63j0x03 +panel-samsung-s6e63m0 +panel-samsung-s6e88a0-ams452ef01 +panel-samsung-s6e8aa0 +panel-seiko-43wvf1g +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-sharp-ls043t1le01 +panel-simple +panel-sitronix-st7701 +panel-sitronix-st7789v +panel-sony-acx424akp +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +panel-tpo-tpg110 +panel-truly-nt35597 +panel-visionox-rm69299 +panel-xinpeng-xpp055c272 +panfrost +parade-ps8622 +parade-ps8640 +parkbd +parman +parport +parport_ax88796 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_imx +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pblk +pc300too +pc87360 +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-pf-stub +pci-stub +pci200syn +pcie-brcmstb +pcie-iproc +pcie-iproc-platform +pcie-rockchip-host +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia_core +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pda_power +pdc_adma +pdr_interface +peak_pci +peak_pciefd +peak_usb +pegasus +pegasus_notetaker +penmount +pfuze100-regulator +phantom +phonet +phram +phy-am654-serdes +phy-armada38x-comphy +phy-bcm-kona-usb2 +phy-bcm-ns-usb2 +phy-bcm-ns-usb3 +phy-bcm-ns2-usbdrd +phy-bcm-sr-pcie +phy-bcm-sr-usb +phy-berlin-sata +phy-berlin-usb +phy-brcm-usb-dvr +phy-cadence-salvo +phy-cadence-sierra +phy-cadence-torrent +phy-cpcap-usb +phy-exynos-usb2 +phy-fsl-imx8-mipi-dphy +phy-fsl-imx8mq-usb +phy-generic +phy-gmii-sel +phy-gpio-vbus-usb +phy-hi3660-usb3 +phy-hi6220-usb +phy-hisi-inno-usb2 +phy-histb-combphy +phy-isp1301 +phy-j721e-wiz +phy-mapphone-mdm6600 +phy-meson-g12a-usb2 +phy-meson-g12a-usb3-pcie +phy-meson-gxl-usb2 +phy-meson8b-usb2 +phy-mtk-tphy +phy-mtk-ufs +phy-mtk-xsphy +phy-mvebu-a3700-comphy +phy-mvebu-a3700-utmi +phy-mvebu-cp110-comphy +phy-ocelot-serdes +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq4019-usb +phy-qcom-ipq806x-sata +phy-qcom-pcie2 +phy-qcom-qmp +phy-qcom-qusb2 +phy-qcom-snps-femto-v2 +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-usb-hs +phy-qcom-usb-hs-28nm +phy-qcom-usb-hsic +phy-qcom-usb-ss +phy-rcar-gen2 +phy-rcar-gen3-pcie +phy-rcar-gen3-usb2 +phy-rcar-gen3-usb3 +phy-rockchip-dp +phy-rockchip-dphy-rx0 +phy-rockchip-emmc +phy-rockchip-inno-dsidphy +phy-rockchip-inno-hdmi +phy-rockchip-inno-usb2 +phy-rockchip-pcie +phy-rockchip-typec +phy-rockchip-usb +phy-sun4i-usb +phy-sun50i-usb3 +phy-sun6i-mipi-dphy +phy-tahvo +phy-tusb1210 +phylink +physmap +pi3usb30532 +pi433 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-axp209 +pinctrl-da9062 +pinctrl-ipq4019 +pinctrl-ipq6018 +pinctrl-ipq8064 +pinctrl-ipq8074 +pinctrl-lochnagar +pinctrl-madera +pinctrl-max77620 +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-mdm9615 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8976 +pinctrl-msm8994 +pinctrl-msm8996 +pinctrl-msm8998 +pinctrl-msm8x74 +pinctrl-qcs404 +pinctrl-qdf2xxx +pinctrl-rk805 +pinctrl-sc7180 +pinctrl-sdm660 +pinctrl-sdm845 +pinctrl-sm8150 +pinctrl-sm8250 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pinctrl-stmfx +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl111_drm +pl172 +pl2303 +pl330 +plat-ram +plat_nand +platform_lcd +platform_mhu +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pm8916_wdt +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn_pep +poly1305-neon +poly1305_generic +port100 +powermate +powr1220 +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +ptp-qoriq +ptp_clockmatrix +ptp_dte +ptp_idt82p33 +ptp_ines +pulse8-cec +pulsedlight-lidar-lite-v2 +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvcalls-front +pvpanic +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-bcm-iproc +pwm-bcm2835 +pwm-beeper +pwm-berlin +pwm-brcmstb +pwm-cros-ec +pwm-fan +pwm-fsl-ftm +pwm-hibvt +pwm-imx-tpm +pwm-imx1 +pwm-imx27 +pwm-iqs620a +pwm-ir-tx +pwm-lp3943 +pwm-mediatek +pwm-meson +pwm-mtk-disp +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-rockchip +pwm-sprd +pwm-sun4i +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pwrseq_emmc +pwrseq_sd8787 +pwrseq_simple +pxa168_eth +pxa27x_udc +pxe1610 +pxrc +q6adm +q6afe +q6afe-dai +q6asm +q6asm-dai +q6core +q6dsp-common +q6routing +q6sstop-qcs404 +qca8k +qca_7k_common +qcaspi +qcauart +qcaux +qcom-apcs-ipc-mailbox +qcom-camss +qcom-coincell +qcom-cpr +qcom-cpufreq-hw +qcom-cpufreq-nvmem +qcom-emac +qcom-geni-se +qcom-pon +qcom-rng +qcom-rpmh-regulator +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-pmic +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-vadc-common +qcom-wdt +qcom-wled +qcom_aoss +qcom_common +qcom_edac +qcom_geni_serial +qcom_glink +qcom_glink_rpm +qcom_glink_smem +qcom_gsbi +qcom_hwspinlock +qcom_nandc +qcom_q6v5 +qcom_q6v5_adsp +qcom_q6v5_ipa_notify +qcom_q6v5_mss +qcom_q6v5_pas +qcom_q6v5_wcss +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd +qcom_smd-regulator +qcom_spmi-regulator +qcom_sysmon +qcom_tsens +qcrypto +qcserial +qed +qede +qedf +qedi +qedr +qemu_fw_cfg +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1b0004 +qm1d1c0042 +qmi_helpers +qmi_wwan +qnoc-msm8916 +qnoc-msm8974 +qnoc-qcs404 +qnoc-sc7180 +qnoc-sdm845 +qnx4 +qnx6 +qoriq-cpufreq +qoriq_thermal +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ramoops +raspberrypi-cpufreq +raspberrypi-hwmon +raspberrypi-ts +ravb +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcar-csi2 +rcar-dmac +rcar-du-drm +rcar-fcp +rcar-vin +rcar_can +rcar_canfd +rcar_cmm +rcar_drif +rcar_dw_hdmi +rcar_fdp1 +rcar_gen3_thermal +rcar_jpu +rcar_lvds +rcar_thermal +rcuperf +rdc321x-southbridge +rdma_cm +rdma_rxe +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +realtek-smi +reboot-mode +redboot +redrat3 +reed_solomon +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +renesas_sdhi_core +renesas_sdhi_internal_dmac +renesas_sdhi_sys_dmac +renesas_usb3 +renesas_usbhs +renesas_wdt +repaper +reset-brcmstb +reset-hi3660 +reset-meson-audio-arb +reset-qcom-pdc +reset-scmi +reset-ti-sci +reset-ti-syscon +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rk3399_dmc +rk805-pwrkey +rk808 +rk808-regulator +rk_crypto +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rmtfs_mem +rn5t618 +rn5t618-adc +rn5t618-regulator +rn5t618_wdt +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rockchip-dfi +rockchip-io-domain +rockchip-isp1 +rockchip-rga +rockchip-vdec +rockchip_saradc +rockchip_thermal +rockchipdrm +rocker +rocket +rohm-bd70528 +rohm-bd71828 +rohm-bd718x7 +rohm-regulator +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmpd +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bd70528 +rtc-bq32k +rtc-bq4802 +rtc-brcmstb-waketimer +rtc-cadence +rtc-cpcap +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-fsl-ftm-alarm +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-hym8563 +rtc-imx-sc +rtc-imxdi +rtc-isl12022 +rtc-isl12026 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-meson-vrtc +rtc-msm6242 +rtc-mt2712 +rtc-mt6397 +rtc-mt7622 +rtc-mxc +rtc-mxc_v2 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-pm8xxx +rtc-r7301 +rtc-r9701 +rtc-rc5t583 +rtc-rc5t619 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sc27xx +rtc-sd3078 +rtc-sh +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rti_wdt +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +rza_wdt +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +sahara +salsa20_generic +sample-trace-array +samsung-keypad +samsung-sxgbe +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sb1000 +sbp_target +sbs-battery +sbs-charger +sbs-manager +sbsa_gwdt +sc16is7xx +sc2731-regulator +sc2731_charger +sc27xx-poweroff +sc27xx-vibra +sc27xx_adc +sc27xx_fuel_gauge +sc92031 +sc9860-clk +sc9863a-clk +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +sci-clk +sclk-div +scmi-cpufreq +scmi-hwmon +scmi_pm_domain +scpi-cpufreq +scpi-hwmon +scpi_pm_domain +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sd_adc_modulator +sdhci +sdhci-acpi +sdhci-brcmstb +sdhci-cadence +sdhci-esdhc-imx +sdhci-iproc +sdhci-milbeaut +sdhci-msm +sdhci-of-arasan +sdhci-of-aspeed +sdhci-of-at91 +sdhci-of-dwcmshc +sdhci-of-esdhc +sdhci-omap +sdhci-pci +sdhci-pltfm +sdhci-pxav3 +sdhci-sprd +sdhci-xenon-driver +sdhci_am654 +sdhci_f_sdh30 +sdio_uart +seed +sensorhub +serial_ir +serio_raw +sermouse +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sh-sci +sh_eth +sh_mmcif +sh_mobile_lcdcfb +sha1-ce +sha2-ce +sha256-arm64 +sha3-ce +sha3_generic +sha512-arm64 +sha512-ce +shark2 +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sifive +sii902x +sii9234 +sil-sii8620 +sil164 +silead +simple-bridge +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +siw +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slg51000-regulator +slic_ds26522 +slicoss +slim-qcom-ctrl +slim-qcom-ngd-ctrl +slimbus +slip +slram +sm3-ce +sm3_generic +sm4-ce +sm4_generic +sm501 +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc_diag +smd-rpm +smem +smiapp +smiapp-pll +smipcie +smm665 +smp2p +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsm +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bcm2835 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-acpi +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-apq8096 +snd-soc-armada-370-db +snd-soc-audio-graph-card +snd-soc-bcm2835-i2s +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-core +snd-soc-cpcap +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-davinci-mcasp +snd-soc-dmic +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsi +snd-soc-fsl-asoc-card +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdmi-codec +snd-soc-imx-audmix +snd-soc-imx-audmux +snd-soc-imx-es8328 +snd-soc-imx-sgtl5000 +snd-soc-imx-spdif +snd-soc-inno-rk3036 +snd-soc-kirkwood +snd-soc-lochnagar-sc +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-meson-aiu +snd-soc-meson-axg-fifo +snd-soc-meson-axg-frddr +snd-soc-meson-axg-pdm +snd-soc-meson-axg-sound-card +snd-soc-meson-axg-spdifin +snd-soc-meson-axg-spdifout +snd-soc-meson-axg-tdm-formatter +snd-soc-meson-axg-tdm-interface +snd-soc-meson-axg-tdmin +snd-soc-meson-axg-tdmout +snd-soc-meson-axg-toddr +snd-soc-meson-card-utils +snd-soc-meson-codec-glue +snd-soc-meson-g12a-toacodec +snd-soc-meson-g12a-tohdmitx +snd-soc-meson-gx-sound-card +snd-soc-meson-t9015 +snd-soc-mikroe-proto +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-mt6797-afe +snd-soc-mt8183-afe +snd-soc-mtk-common +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-qcom-common +snd-soc-rcar +snd-soc-rk3288-hdmi-analog +snd-soc-rk3328 +snd-soc-rk3399-gru-sound +snd-soc-rl6231 +snd-soc-rockchip-i2s +snd-soc-rockchip-max98090 +snd-soc-rockchip-pcm +snd-soc-rockchip-pdm +snd-soc-rockchip-rt5645 +snd-soc-rockchip-spdif +snd-soc-rt1308-sdw +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5663 +snd-soc-rt5682 +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-sdm845 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-sprd-platform +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-ti-edma +snd-soc-ti-sdma +snd-soc-ti-udma +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-acpi +snd-sof-imx8 +snd-sof-imx8m +snd-sof-of +snd-sof-pci +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +snd_xen_front +snic +snps_udc_core +snps_udc_plat +snvs_pwrkey +soc_button_array +socinfo +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +soundwire-bus +soundwire-cadence +soundwire-intel +soundwire-qcom +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-amd +spi-armada-3700 +spi-axi-spi-engine +spi-bcm-qspi +spi-bcm2835 +spi-bcm2835aux +spi-bitbang +spi-brcmstb-qspi +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-fsi +spi-fsl-dspi +spi-fsl-lpspi +spi-fsl-qspi +spi-geni-qcom +spi-gpio +spi-hisi-sfc-v3xx +spi-imx +spi-iproc-qspi +spi-lm70llp +spi-loopback-test +spi-meson-spicc +spi-meson-spifc +spi-mt65xx +spi-mtk-nor +spi-mux +spi-mxic +spi-nor +spi-nxp-fspi +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qcom-qspi +spi-qup +spi-rockchip +spi-rspi +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-sifive +spi-slave-mt27xx +spi-slave-system-control +spi-slave-time +spi-sprd +spi-sprd-adi +spi-sun6i +spi-synquacer +spi-thunderx +spi-tle62x0 +spi-xcomm +spi-xlp +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spl +spmi +spmi-pmic-arb +sprd-dma +sprd-mailbox +sprd-mcdt +sprd-sc27xx-spi +sprd_hwspinlock +sprd_serial +sprd_thermal +sprd_wdt +sps30 +sr-thermal +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmfx +stmmac +stmmac-pci +stmmac-platform +stmpe-adc +stmpe-keypad +stmpe-ts +stowaway +stp +stpmic1 +stpmic1_onkey +stpmic1_regulator +stpmic1_wdt +stratix10-rsu +stratix10-soc +stratix10-svc +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +sun4i-backend +sun4i-csi +sun4i-drm +sun4i-drm-hdmi +sun4i-frontend +sun4i-gpadc +sun4i-ss +sun4i-tcon +sun4i_tv +sun50i-codec-analog +sun50i-cpufreq-nvmem +sun6i-csi +sun6i-dma +sun6i_drc +sun6i_mipi_dsi +sun8i-adda-pr-regmap +sun8i-ce +sun8i-codec +sun8i-codec-analog +sun8i-di +sun8i-drm-hdmi +sun8i-mixer +sun8i-rotate +sun8i-ss +sun8i_tcon_top +sun8i_thermal +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sunxi +sunxi-cedrus +sunxi-cir +sunxi-mmc +sunxi-rsb +sunxi_wdt +sur40 +surface3_spi +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sy8106a-regulator +sy8824x +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink_gt +synclinkmp +synopsys_edac +syscon-reboot-mode +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc358764 +tc358767 +tc358768 +tc3589x-keypad +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tee_bnxt_fw +tef6862 +tehuti +teranetics +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thc63lvd1024 +thermal-generic-adc +thermal_mmio +thmc50 +ths7303 +ths8200 +thunder_bgx +thunder_xcv +thunderbolt +thunderbolt-net +thunderx-mmc +thunderx2_pmu +thunderx_edac +thunderx_zip +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads124s08 +ti-ads7950 +ti-ads8344 +ti-ads8688 +ti-am65-cpsw-nuss +ti-cal +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-j721e-ufs +ti-lmu +ti-sn65dsi86 +ti-tfp410 +ti-tlc4541 +ti-tpd12s015 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_sci_pm_domains +ti_usb_3410_5052 +tidss +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +tlan +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc_core +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_atmel +tpm_ftpm_tee +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_key_parser +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +turingcc-qcs404 +turris-mox-rwtm +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucc_uart +ucd9000 +ucd9200 +ucs1002_power +ucsi_acpi +ucsi_ccg +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufs-hisi +ufs-mediatek +ufs-qcom +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-dmac +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-h264 +v4l2-jpeg +v4l2-mem2mem +v4l2-tpg +vc4 +vcan +vchiq +vcnl3020 +vcnl4000 +vcnl4035 +vctrl-regulator +vdpa +vdpa_sim +veml6030 +veml6070 +venus-core +venus-dec +venus-enc +ves1820 +ves1x93 +veth +vexpress-hwmon +vexpress-regulator +vf610_adc +vf610_dac +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_iommu_type1 +vfio_mdev +vfio_platform_bcmflexrm +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-rhine +via-sdmmc +via-velocity +via686a +vicodec +video-i2c +video-mux +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videocc-sc7180 +videocc-sdm845 +videodev +vim2m +vimc +viperboard +viperboard_adc +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vqmmc-ipq4019-regulator +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcd934x +wcn36xx +wcnss_ctrl +wd719x +wdat_wdt +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wimax +winbond-840 +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xen-blkback +xen-evtchn +xen-fbfront +xen-front-pgdir-shbuf +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xenfs +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgene-dma +xgene-enet +xgene-enet-v2 +xgene-hwmon +xgene-rng +xgene_edac +xhci-histb +xhci-mtk +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xilinx-pr-decoupler +xilinx-spi +xilinx-tpg +xilinx-video +xilinx-vtc +xilinx-xadc +xilinx_can +xilinx_dma +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xilinx_uartps +xilinxfb +xillybus_core +xillybus_of +xillybus_pcie +xircom_cb +xlnx_vcu +xor +xor-neon +xpad +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z3fold +zaurus +zavl +zcommon +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zfs +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zlua +znvpair +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zunicode +zx-tdm +zynqmp-aes-gcm +zynqmp-fpga +zynqmp_dma --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic-64k.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic-64k.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic.modules @@ -0,0 +1,6319 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_aspeed_vuart +8250_exar +8250_men_mcb +8250_omap +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +9pnet_xen +a100u2w +a3d +a53-pll +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abp060mg +ac97_bus +acard-ahci +acecad +acenic +acp_audio_dma +acpi-als +acpi_configfs +acpi_ipmi +acpi_power_meter +acpi_tad +acpiphp_ibm +act8865-regulator +act8945a +act8945a-regulator +act8945a_charger +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv748x +adv7511_drm +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aes-arm64 +aes-ce-blk +aes-ce-ccm +aes-ce-cipher +aes-neon-blk +aes-neon-bs +aes_ti +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +afs +ah4 +ah6 +ahci +ahci_brcm +ahci_ceva +ahci_mtk +ahci_mvebu +ahci_platform +ahci_qoriq +ahci_seattle +ahci_xgene +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak7375 +ak881x +ak8974 +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +allegro +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-pr-ip-core-plat +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am53c974 +am65-cpts +amba-pl010 +ambakmi +amc6821 +amd +amd-xgbe +amd5536udc_pci +amd8111e +amdgpu +amlogic-gxl-crypto +amlogic_thermal +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx6345 +analogix-anx78xx +analogix_dp +anatop-regulator +ansi_cprng +anubis +anybuss_core +ao-cec +ao-cec-g12a +aoe +apbps2 +apcs-msm8916 +apds9300 +apds9802als +apds990x +apds9960 +apex +apple-mfi-fastcharge +appledisplay +appletalk +appletouch +applicom +apr +aptina-pll +aqc111 +aquantia +ar1021_i2c +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arcpgu +arcx-anybus +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_dsu_pmu +arm_mhu +arm_scpi +arm_smc_wdt +arm_smmuv3_pmu +arm_spe_pmu +armada-37xx-cpufreq +armada-37xx-rwtm-mailbox +armada-8k-cpufreq +armada_37xx_wdt +arp_tables +arpt_mangle +arptable_filter +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-pwm-tacho +aspeed-video +ast +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_snoc +ath10k_usb +ath11k +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlantic +atlas-ezo-sensor +atlas-sensor +atm +atmel +atmel-ecc +atmel-flexcom +atmel-hlcdc +atmel-i2c +atmel-sha204a +atmel_captouch +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796b +axg-audio +axi-fan-control +axis-fifo +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x-rsb +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bam_dma +bareudp +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm-flexrm-mailbox +bcm-keypad +bcm-pdc-mailbox +bcm-phy-lib +bcm-sba-raid +bcm-sf2 +bcm203x +bcm2711_thermal +bcm2835 +bcm2835-rng +bcm2835-v4l2 +bcm2835_thermal +bcm2835_wdt +bcm3510 +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm6368_nand +bcm7038_wdt +bcm7xxx +bcm87xx +bcm_crypto_spu +bcm_iproc_adc +bcm_iproc_tsc +bcma +bcma-hcd +bcmsysport +bd6107 +bd70528-charger +bd70528-regulator +bd70528_wdt +bd71828-regulator +bd718x7-regulator +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +berlin2-adc +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s_generic +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluefield_edac +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bman-test +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bnxt_re +bochs-drm +bonding +bpa10x +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmnand +brcmsmac +brcmstb-avs-cpufreq +brcmstb_nand +brcmstb_thermal +brcmutil +brd +bridge +broadcom +bsd_comp +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btqcomsmd +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +caam +caam_jr +caamalg_desc +caamhash_desc +cachefiles +cadence-nand-controller +cadence-quadspi +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camcc-sdm845 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +cap11xx +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cavium-rng +cavium-rng-vf +cavium_ptp +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccp +ccp-crypto +ccree +ccs811 +cctrng +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-dphy +cdns-dsi +cdns-pltfrm +cdns3 +cdns3-imx +cdns3-pci-wrap +cdns3-ti +cec +ceph +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-neon +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8318 +chipone_icn8505 +chipreg +chnl_net +chromeos_tbmc +chrontel-ch7033 +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_tegra +ci_hdrc_usb2 +cicada +cifs +cirrus +cirrusfb +clip +clk-bd718x7 +clk-cdce706 +clk-cdce925 +clk-cs2000-cp +clk-hi3519 +clk-hi655x +clk-lochnagar +clk-max77686 +clk-max9485 +clk-palmas +clk-phase +clk-plldig +clk-pwm +clk-qcom +clk-raspberrypi +clk-rk808 +clk-rpm +clk-rpmh +clk-s2mps11 +clk-scmi +clk-scpi +clk-si514 +clk-si5341 +clk-si5351 +clk-si544 +clk-si570 +clk-smd-rpm +clk-spmi-pmic-div +clk-sprd +clk-twl6040 +clk-versaclock5 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm3605 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobra +coda +coda-vpu +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +contec_pci_dio +cordic +core +cortina +counter +cp210x +cpcap-adc +cpcap-battery +cpcap-charger +cpcap-pwrbutton +cpcap-regulator +cpia2 +cppc_cpufreq +cptpf +cptvf +cqhci +cramfs +crc-itu-t +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-ce +crg-hi3516cv300 +crg-hi3798cv200 +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_rpmsg +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_ec_vbc +cros_kbd_led_backlight +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +csiostor +curve25519-generic +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062-thermal +da9062_wdt +da9063-regulator +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +dax_hmem +dax_pmem +dax_pmem_compat +dax_pmem_core +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +ddbridge-dummy-fe +de2104x +decnet +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +dispcc-sc7180 +dispcc-sdm845 +display-connector +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9601 +dma-axi-dmac +dmard06 +dmard09 +dmard10 +dmc520_edac +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dpaa2-console +dpaa2-ethsw +dpaa2-qdma +dpaa2_caam +dpdmai +dpot-dac +dps310 +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drm_xen_front +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-axi-dmac-platform +dw-edma +dw-edma-pcie +dw-hdmi +dw-hdmi-ahb-audio +dw-hdmi-cec +dw-hdmi-i2s-audio +dw-i3c-master +dw-mipi-dsi +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_drm_dsi +dw_mmc +dw_mmc-bluefield +dw_mmc-exynos +dw_mmc-hi3798cv200 +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_mmc-rockchip +dw_wdt +dwc-xlgmac +dwc2_pci +dwc3 +dwc3-haps +dwc3-keystone +dwc3-meson-g12a +dwc3-of-simple +dwc3-pci +dwc3-qcom +dwmac-altr-socfpga +dwmac-dwc-qos-eth +dwmac-generic +dwmac-imx +dwmac-ipq806x +dwmac-mediatek +dwmac-meson +dwmac-meson8b +dwmac-qcom-ethqos +dwmac-rk +dwmac-sun8i +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ec_sys +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edt-ft5x06 +ee1004 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efa +efi-pstore +efi_test +efibc +efs +egalax_ts +egalax_ts_serial +ehci-brcm +ehci-fsl +ehci-mxc +ehci-platform +ehset +einj +ektf2127 +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emac_rockchip +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_usb +emu10k1-gp +emxx_udc +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +ene_ir +eni +enic +envelope-detector +epic100 +eql +erofs +error +esas2r +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +etnaviv +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-fsa9480 +extcon-gpio +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-qcom-spmi-misc +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fan53555 +farsync +fastrpc +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +fintek-cir +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fixed +fjes +fl512 +flexcan +fm10k +fm801-gp +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +fscache +fsi-core +fsi-master-aspeed +fsi-master-gpio +fsi-master-hub +fsi-occ +fsi-sbefifo +fsi-scom +fsia6b +fsl-dpaa2-eth +fsl-dpaa2-ptp +fsl-edma +fsl-edma-common +fsl-enetc +fsl-enetc-mdio +fsl-enetc-ptp +fsl-enetc-vf +fsl-mc-dpio +fsl-mph-dr-of +fsl-qdma +fsl_dpa +fsl_ifc_nand +fsl_imx8_ddr_perf +fsl_linflexuart +fsl_lpuart +fsl_pq_mdio +fsl_ucc_hdlc +fsl_usb2_udc +ftdi-elan +ftdi_sio +ftl +ftm-quaddec +ftsteutates +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gasket +gateworks-gsc +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gcc-apq8084 +gcc-ipq4019 +gcc-ipq6018 +gcc-ipq806x +gcc-ipq8074 +gcc-mdm9615 +gcc-msm8660 +gcc-msm8916 +gcc-msm8939 +gcc-msm8960 +gcc-msm8974 +gcc-msm8994 +gcc-msm8996 +gcc-msm8998 +gcc-qcs404 +gcc-sc7180 +gcc-sdm660 +gcc-sdm845 +gcc-sm8150 +gcc-sm8250 +gdmtty +gdmulte +gdth +gemini +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +genwqe_card +gf2k +gfs2 +ghash-ce +gianfar_driver +gl518sm +gl520sm +gl620a +gluebi +gm12u320 +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-altera +gpio-amd-fch +gpio-amdpt +gpio-arizona +gpio-bd70528 +gpio-bd71828 +gpio-bd9571mwv +gpio-beeper +gpio-brcmstb +gpio-cadence +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-eic-sprd +gpio-exar +gpio-fan +gpio-grgpio +gpio-gw-pld +gpio-hlwd +gpio-ir-recv +gpio-ir-tx +gpio-janz-ttl +gpio-kempld +gpio-logicvc +gpio-lp3943 +gpio-lp873x +gpio-lp87565 +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-max77620 +gpio-max77650 +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-mlxbf +gpio-mlxbf2 +gpio-moxtet +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-pmic-eic-sprd +gpio-raspberrypi-exp +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sama5d2-piobu +gpio-siox +gpio-sprd +gpio-syscon +gpio-thunderx +gpio-tpic2810 +gpio-tps65086 +gpio-tps65218 +gpio-tps65912 +gpio-tqmx86 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-vibra +gpio-viperboard +gpio-wcd934x +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xgene-sb +gpio-xgs-iproc +gpio-xlp +gpio-xra1403 +gpio-zynq +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_wdt +gpmi_nand +gpu-sched +gpucc-msm8998 +gpucc-sc7180 +gpucc-sdm845 +gr_udc +grace +grcan +gre +greybus +grip +grip_mp +gs1662 +gs_fpga +gs_usb +gsc-hwmon +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hantro-vpu +hanwang +hbmc-am654 +hci +hci_nokia +hci_uart +hci_vhci +hclge +hclgevf +hd3ss3220 +hd44780 +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcd +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfpll +hfs +hfsplus +hi311x +hi3660-mailbox +hi556 +hi6210-i2s +hi6220-mailbox +hi6220_reset +hi6421-pmic-core +hi6421-regulator +hi6421v530-regulator +hi655x-pmic +hi655x-regulator +hi8435 +hibmc-drm +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hih6130 +hinic +hip04_eth +hisi-rng +hisi-sfc +hisi-trng-v2 +hisi504_nand +hisi_dma +hisi_femac +hisi_hpre +hisi_powerkey +hisi_qm +hisi_sas_main +hisi_sas_v1_hw +hisi_sas_v2_hw +hisi_sas_v3_hw +hisi_sec +hisi_sec2 +hisi_thermal +hisi_zip +hix5hd2_gmac +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hms-profinet +hnae +hnae3 +hns-roce-hw-v1 +hns-roce-hw-v2 +hns3 +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp03 +hp206c +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +ht16k33 +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei_cdc_ncm +hwmon-vid +hwpoison-inject +hx711 +hx8357 +hx8357d +hyperbus-core +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-bcm-iproc +i2c-bcm2835 +i2c-brcmstb +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-demux-pinctrl +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-fsi +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-imx +i2c-imx-lpi2c +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-gpmux +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-nvidia-gpu +i2c-ocores +i2c-owl +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-pxa +i2c-qcom-cci +i2c-qcom-geni +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-scmi +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-synquacer +i2c-taos-evm +i2c-thunderx +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xgene-slimpro +i2c-xiic +i2c-xlp9xx +i3c +i3c-master-cdns +i40e +i40iw +i5k_amb +i6300esb +i740fb +iavf +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibmaem +ibmpex +icc-bcm-voter +icc-osm-l3 +icc-rpmh +icc-smd-rpm +ice +ice40-spi +icp +icp10100 +icp_multi +icplus +ics932s401 +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-mux +iio-rescale +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imon +imon_raw +ims-pcu +imx-bus +imx-cpufreq-dt +imx-dma +imx-dsp +imx-interconnect +imx-mailbox +imx-pcm-dma +imx-pxp +imx-sdma +imx214 +imx219 +imx258 +imx274 +imx290 +imx2_wdt +imx319 +imx355 +imx6q-cpufreq +imx6ul_tsc +imx7d_adc +imx7ulp_wdt +imx8m-ddrc +imx8mm-interconnect +imx8mm_thermal +imx8mn-interconnect +imx8mq-interconnect +imx_keypad +imx_rproc +imx_sc_key +imx_sc_thermal +imx_sc_wdt +imx_thermal +imxfb +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-buffer-dma +industrialio-buffer-dmaengine +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int51x1 +intel-xway +intel_th +intel_th_acpi +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +ionic +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipa +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmb_dev_int +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc-rng200 +iproc_nand +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-hix5hd2 +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-spi +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3_bandgap +k3dma +kafs +kalmia +kaweth +kbtab +kcm +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kirin-drm +kl5kusb105 +kmem +kmx61 +kobil_sct +komeda +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +kpss-xcc +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +kvaser_pci +kvaser_pciefd +kvaser_usb +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +layerscape_edac_mod +lcc-ipq806x +lcc-mdm9615 +lcc-msm8960 +lcd +ldusb +lec +led-class-flash +led_bl +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-an30259a +leds-as3645a +leds-aw2013 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-cpcap +leds-cr0014114 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-el15203000 +leds-gpio +leds-is31fl319x +leds-is31fl32xx +leds-ktd2692 +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lm3692x +leds-lm3697 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77650 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxreg +leds-mt6323 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pwm +leds-regulator +leds-sc27xx-bltc +leds-sgm3140 +leds-spi-byte +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +lego_ev3_battery +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lima +lineage-pem +linear +liquidio +liquidio_vf +lis3lv02d +lis3lv02d_i2c +lkkbd +ll_temac +llc +llc2 +llcc-qcom +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lochnagar-hwmon +lochnagar-regulator +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp873x-regulator +lp8755 +lp87565 +lp87565-regulator +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpasscc-sdm845 +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvds-codec +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +macb +macb_pci +machxo2-spi +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mailbox-test +mailbox-xgene-slimpro +mali-dp +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +marvell-cesa +marvell10g +marvell_nand +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max14656_charger_detector +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max5821 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77620-regulator +max77620_thermal +max77620_wdt +max77650 +max77650-charger +max77650-onkey +max77650-regulator +max77686-regulator +max77693-haptic +max77693-regulator +max77693_charger +max77802-regulator +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mceusb +mchp23k256 +mcp16502 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-cavium +mdio-gpio +mdio-hisi-femac +mdio-i2c +mdio-ipq4019 +mdio-ipq8064 +mdio-mscc-miim +mdio-mux-gpio +mdio-mux-meson-g12a +mdio-mux-mmioreg +mdio-mux-multiplexer +mdio-mvusb +mdio-octeon +mdio-thunder +mdio-xgene +mdio-xpcs +mdt_loader +me4000 +me_daq +mediatek +mediatek-cpufreq +mediatek-drm +mediatek-drm-hdmi +megachips-stdpxxxx-ge-b850v3-fw +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +melfas_mip4 +memory-notifier-error-inject +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +meson-canvas +meson-drm +meson-gx-mmc +meson-gxl +meson-ir +meson-mx-sdio +meson-rng +meson-vdec +meson_dw_hdmi +meson_gxbb_wdt +meson_nand +meson_saradc +meson_wdt +metro-usb +metronomefb +mf6x4 +mgag200 +mhi +mi0283qt +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microtek +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxbf-bootctl +mlxbf-tmfifo +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_hsq +mmc_spi +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmcc-msm8996 +mmcc-msm8998 +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_dim2 +most_i2c +most_net +most_sound +most_usb +most_video +motorola-cpcap +moxa +moxtet +mp2629 +mp2629_adc +mp2629_charger +mp5416 +mp8859 +mp886x +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpq7920 +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_felix +mscc_ocelot_common +msdos +msi001 +msi2500 +msm +msp3400 +mspro_block +mss-sc7180 +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6380-regulator +mt6397 +mt6397-regulator +mt6577_auxadc +mt6797-mt6351 +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt8183-da7219-max98357 +mt8183-mt6358-ts3a227-max98357 +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-btcvsd +mtk-cir +mtk-cmdq-helper +mtk-cmdq-mailbox +mtk-cqdma +mtk-hsdma +mtk-pmic-keys +mtk-pmic-wrap +mtk-rng +mtk-sd +mtk-uart-apdma +mtk-vpu +mtk_ecc +mtk_nand +mtk_rpmsg +mtk_scp +mtk_scp_ipi +mtk_thermal +mtk_wdt +mtouch +mtu3 +multipath +multiq3 +musb_hdrc +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mux-mmio +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvneta +mvpp2 +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxc_nand +mxc_w1 +mxcmmc +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxser +mxsfb +mxuport +myrb +myri10ge +myrs +n5pf +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nand +nand_ecc +nandcore +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +netsec +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfit +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-neon +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nicpf +nicstar +nicvf +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm750-pwm-fan +nps_enet +ns +ns-thermal +ns558 +ns83820 +nsh +ntb +ntb_hw_idt +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nuvoton-cir +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-bcm-ocotp +nvmem-imx-iim +nvmem-imx-ocotp +nvmem-imx-ocotp-scu +nvmem-rave-sp-eeprom +nvmem-reboot-mode +nvmem-rockchip-otp +nvmem-sc27xx-efuse +nvmem_meson_efuse +nvmem_meson_mx_efuse +nvmem_qcom-spmi-sdam +nvmem_qfprom +nvmem_rockchip_efuse +nvmem_snvs_lpgpr +nvmem_sprd_efuse +nvmem_sunxi_sid +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nwl-dsi +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocelot_vsc7514 +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocmem +ocrdma +octeontx-cpt +octeontx-cptvf +octeontx2_af +octeontx2_mbox +octeontx2_nicpf +octeontx2_nicvf +of-fpga-region +of_mmc_spi +of_pmem +of_xilinx_wdt +ofb +ofpart +ohci-platform +omap-mailbox +omap-rng +omap4-keypad +omap_hwspinlock +omfs +omninet +onenand +opencores-kbd +openvswitch +opt3001 +optee +optee-rng +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5640 +ov5645 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +owl-dma +owl-mmc +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +palmas-pwrbutton +palmas-regulator +palmas_gpadc +pandora_bl +panel +panel-arm-versatile +panel-asus-z00t-tm5p5-n35596 +panel-boe-himax8279d +panel-boe-tv101wum-nl6 +panel-elida-kd35t133 +panel-feixin-k101-im2ba02 +panel-feiyang-fy07024di26a30d +panel-ilitek-ili9322 +panel-ilitek-ili9881c +panel-innolux-p079zca +panel-jdi-lt070me05000 +panel-kingdisplay-kd097d04 +panel-leadtek-ltk050h3146w +panel-leadtek-ltk500hd1829 +panel-lg-lb035q02 +panel-lg-lg4573 +panel-lvds +panel-nec-nl8048hl11 +panel-novatek-nt35510 +panel-novatek-nt39016 +panel-olimex-lcd-olinuxino +panel-orisetech-otm8009a +panel-osd-osd101t2587-53ts +panel-panasonic-vvx10f034n00 +panel-raspberrypi-touchscreen +panel-raydium-rm67191 +panel-raydium-rm68200 +panel-rocktech-jh057n00900 +panel-ronbo-rb070d30 +panel-samsung-ld9040 +panel-samsung-s6d16d0 +panel-samsung-s6e3ha2 +panel-samsung-s6e63j0x03 +panel-samsung-s6e63m0 +panel-samsung-s6e88a0-ams452ef01 +panel-samsung-s6e8aa0 +panel-seiko-43wvf1g +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-sharp-ls043t1le01 +panel-simple +panel-sitronix-st7701 +panel-sitronix-st7789v +panel-sony-acx424akp +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +panel-tpo-tpg110 +panel-truly-nt35597 +panel-visionox-rm69299 +panel-xinpeng-xpp055c272 +panfrost +parade-ps8622 +parade-ps8640 +parkbd +parman +parport +parport_ax88796 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_imx +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pblk +pc300too +pc87360 +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-pf-stub +pci-stub +pci200syn +pcie-brcmstb +pcie-iproc +pcie-iproc-platform +pcie-rockchip-host +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia_core +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pda_power +pdc_adma +pdr_interface +peak_pci +peak_pciefd +peak_usb +pegasus +pegasus_notetaker +penmount +pfuze100-regulator +phantom +phonet +phram +phy-am654-serdes +phy-armada38x-comphy +phy-bcm-kona-usb2 +phy-bcm-ns-usb2 +phy-bcm-ns-usb3 +phy-bcm-ns2-usbdrd +phy-bcm-sr-pcie +phy-bcm-sr-usb +phy-berlin-sata +phy-berlin-usb +phy-brcm-usb-dvr +phy-cadence-salvo +phy-cadence-sierra +phy-cadence-torrent +phy-cpcap-usb +phy-exynos-usb2 +phy-fsl-imx8-mipi-dphy +phy-fsl-imx8mq-usb +phy-generic +phy-gmii-sel +phy-gpio-vbus-usb +phy-hi3660-usb3 +phy-hi6220-usb +phy-hisi-inno-usb2 +phy-histb-combphy +phy-isp1301 +phy-j721e-wiz +phy-mapphone-mdm6600 +phy-meson-g12a-usb2 +phy-meson-g12a-usb3-pcie +phy-meson-gxl-usb2 +phy-meson8b-usb2 +phy-mtk-tphy +phy-mtk-ufs +phy-mtk-xsphy +phy-mvebu-a3700-comphy +phy-mvebu-a3700-utmi +phy-mvebu-cp110-comphy +phy-ocelot-serdes +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq4019-usb +phy-qcom-ipq806x-sata +phy-qcom-pcie2 +phy-qcom-qmp +phy-qcom-qusb2 +phy-qcom-snps-femto-v2 +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-usb-hs +phy-qcom-usb-hs-28nm +phy-qcom-usb-hsic +phy-qcom-usb-ss +phy-rcar-gen2 +phy-rcar-gen3-pcie +phy-rcar-gen3-usb2 +phy-rcar-gen3-usb3 +phy-rockchip-dp +phy-rockchip-dphy-rx0 +phy-rockchip-emmc +phy-rockchip-inno-dsidphy +phy-rockchip-inno-hdmi +phy-rockchip-inno-usb2 +phy-rockchip-pcie +phy-rockchip-typec +phy-rockchip-usb +phy-sun4i-usb +phy-sun50i-usb3 +phy-sun6i-mipi-dphy +phy-tahvo +phy-tusb1210 +phylink +physmap +pi3usb30532 +pi433 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-axp209 +pinctrl-da9062 +pinctrl-ipq4019 +pinctrl-ipq6018 +pinctrl-ipq8064 +pinctrl-ipq8074 +pinctrl-lochnagar +pinctrl-madera +pinctrl-max77620 +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-mdm9615 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8976 +pinctrl-msm8994 +pinctrl-msm8996 +pinctrl-msm8998 +pinctrl-msm8x74 +pinctrl-qcs404 +pinctrl-qdf2xxx +pinctrl-rk805 +pinctrl-sc7180 +pinctrl-sdm660 +pinctrl-sdm845 +pinctrl-sm8150 +pinctrl-sm8250 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pinctrl-stmfx +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl111_drm +pl172 +pl2303 +pl330 +plat-ram +plat_nand +platform_lcd +platform_mhu +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pm8916_wdt +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn_pep +poly1305-neon +poly1305_generic +port100 +powermate +powr1220 +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +ptp-qoriq +ptp_clockmatrix +ptp_dte +ptp_idt82p33 +ptp_ines +pulse8-cec +pulsedlight-lidar-lite-v2 +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvcalls-front +pvpanic +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-bcm-iproc +pwm-bcm2835 +pwm-beeper +pwm-berlin +pwm-brcmstb +pwm-cros-ec +pwm-fan +pwm-fsl-ftm +pwm-hibvt +pwm-imx-tpm +pwm-imx1 +pwm-imx27 +pwm-iqs620a +pwm-ir-tx +pwm-lp3943 +pwm-mediatek +pwm-meson +pwm-mtk-disp +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-rockchip +pwm-sprd +pwm-sun4i +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pwrseq_emmc +pwrseq_sd8787 +pwrseq_simple +pxa168_eth +pxa27x_udc +pxe1610 +pxrc +q6adm +q6afe +q6afe-dai +q6asm +q6asm-dai +q6core +q6dsp-common +q6routing +q6sstop-qcs404 +qca8k +qca_7k_common +qcaspi +qcauart +qcaux +qcom-apcs-ipc-mailbox +qcom-camss +qcom-coincell +qcom-cpr +qcom-cpufreq-hw +qcom-cpufreq-nvmem +qcom-emac +qcom-geni-se +qcom-pon +qcom-rng +qcom-rpmh-regulator +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-pmic +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-vadc-common +qcom-wdt +qcom-wled +qcom_aoss +qcom_common +qcom_edac +qcom_geni_serial +qcom_glink +qcom_glink_rpm +qcom_glink_smem +qcom_gsbi +qcom_hwspinlock +qcom_nandc +qcom_q6v5 +qcom_q6v5_adsp +qcom_q6v5_ipa_notify +qcom_q6v5_mss +qcom_q6v5_pas +qcom_q6v5_wcss +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd +qcom_smd-regulator +qcom_spmi-regulator +qcom_sysmon +qcom_tsens +qcrypto +qcserial +qed +qede +qedf +qedi +qedr +qemu_fw_cfg +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1b0004 +qm1d1c0042 +qmi_helpers +qmi_wwan +qnoc-msm8916 +qnoc-msm8974 +qnoc-qcs404 +qnoc-sc7180 +qnoc-sdm845 +qnx4 +qnx6 +qoriq-cpufreq +qoriq_thermal +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ramoops +raspberrypi-cpufreq +raspberrypi-hwmon +raspberrypi-ts +ravb +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcar-csi2 +rcar-dmac +rcar-du-drm +rcar-fcp +rcar-vin +rcar_can +rcar_canfd +rcar_cmm +rcar_drif +rcar_dw_hdmi +rcar_fdp1 +rcar_gen3_thermal +rcar_jpu +rcar_lvds +rcar_thermal +rcuperf +rdc321x-southbridge +rdma_cm +rdma_rxe +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +realtek-smi +reboot-mode +redboot +redrat3 +reed_solomon +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +renesas_sdhi_core +renesas_sdhi_internal_dmac +renesas_sdhi_sys_dmac +renesas_usb3 +renesas_usbhs +renesas_wdt +repaper +reset-brcmstb +reset-hi3660 +reset-meson-audio-arb +reset-qcom-pdc +reset-scmi +reset-ti-sci +reset-ti-syscon +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rk3399_dmc +rk805-pwrkey +rk808 +rk808-regulator +rk_crypto +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rmtfs_mem +rn5t618 +rn5t618-adc +rn5t618-regulator +rn5t618_wdt +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rockchip-dfi +rockchip-io-domain +rockchip-isp1 +rockchip-rga +rockchip-vdec +rockchip_saradc +rockchip_thermal +rockchipdrm +rocker +rocket +rohm-bd70528 +rohm-bd71828 +rohm-bd718x7 +rohm-regulator +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmpd +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bd70528 +rtc-bq32k +rtc-bq4802 +rtc-brcmstb-waketimer +rtc-cadence +rtc-cpcap +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-fsl-ftm-alarm +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-hym8563 +rtc-imx-sc +rtc-imxdi +rtc-isl12022 +rtc-isl12026 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-meson-vrtc +rtc-msm6242 +rtc-mt2712 +rtc-mt6397 +rtc-mt7622 +rtc-mxc +rtc-mxc_v2 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-pm8xxx +rtc-r7301 +rtc-r9701 +rtc-rc5t583 +rtc-rc5t619 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sc27xx +rtc-sd3078 +rtc-sh +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rti_wdt +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +rza_wdt +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +sahara +salsa20_generic +sample-trace-array +samsung-keypad +samsung-sxgbe +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sb1000 +sbp_target +sbs-battery +sbs-charger +sbs-manager +sbsa_gwdt +sc16is7xx +sc2731-regulator +sc2731_charger +sc27xx-poweroff +sc27xx-vibra +sc27xx_adc +sc27xx_fuel_gauge +sc92031 +sc9860-clk +sc9863a-clk +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +sci-clk +sclk-div +scmi-cpufreq +scmi-hwmon +scmi_pm_domain +scpi-cpufreq +scpi-hwmon +scpi_pm_domain +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sd_adc_modulator +sdhci +sdhci-acpi +sdhci-brcmstb +sdhci-cadence +sdhci-esdhc-imx +sdhci-iproc +sdhci-milbeaut +sdhci-msm +sdhci-of-arasan +sdhci-of-aspeed +sdhci-of-at91 +sdhci-of-dwcmshc +sdhci-of-esdhc +sdhci-omap +sdhci-pci +sdhci-pltfm +sdhci-pxav3 +sdhci-sprd +sdhci-xenon-driver +sdhci_am654 +sdhci_f_sdh30 +sdio_uart +seed +sensorhub +serial_ir +serio_raw +sermouse +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sh-sci +sh_eth +sh_mmcif +sh_mobile_lcdcfb +sha1-ce +sha2-ce +sha256-arm64 +sha3-ce +sha3_generic +sha512-arm64 +sha512-ce +shark2 +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sifive +sii902x +sii9234 +sil-sii8620 +sil164 +silead +simple-bridge +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +siw +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slg51000-regulator +slic_ds26522 +slicoss +slim-qcom-ctrl +slim-qcom-ngd-ctrl +slimbus +slip +slram +sm3-ce +sm3_generic +sm4-ce +sm4_generic +sm501 +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc_diag +smd-rpm +smem +smiapp +smiapp-pll +smipcie +smm665 +smp2p +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsm +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bcm2835 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-compress +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-acpi +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-apq8096 +snd-soc-armada-370-db +snd-soc-audio-graph-card +snd-soc-bcm2835-i2s +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-core +snd-soc-cpcap +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-davinci-mcasp +snd-soc-dmic +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsi +snd-soc-fsl-asoc-card +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdmi-codec +snd-soc-imx-audmix +snd-soc-imx-audmux +snd-soc-imx-es8328 +snd-soc-imx-sgtl5000 +snd-soc-imx-spdif +snd-soc-inno-rk3036 +snd-soc-kirkwood +snd-soc-lochnagar-sc +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-meson-aiu +snd-soc-meson-axg-fifo +snd-soc-meson-axg-frddr +snd-soc-meson-axg-pdm +snd-soc-meson-axg-sound-card +snd-soc-meson-axg-spdifin +snd-soc-meson-axg-spdifout +snd-soc-meson-axg-tdm-formatter +snd-soc-meson-axg-tdm-interface +snd-soc-meson-axg-tdmin +snd-soc-meson-axg-tdmout +snd-soc-meson-axg-toddr +snd-soc-meson-card-utils +snd-soc-meson-codec-glue +snd-soc-meson-g12a-toacodec +snd-soc-meson-g12a-tohdmitx +snd-soc-meson-gx-sound-card +snd-soc-meson-t9015 +snd-soc-mikroe-proto +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-mt6797-afe +snd-soc-mt8183-afe +snd-soc-mtk-common +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-qcom-common +snd-soc-rcar +snd-soc-rk3288-hdmi-analog +snd-soc-rk3328 +snd-soc-rk3399-gru-sound +snd-soc-rl6231 +snd-soc-rockchip-i2s +snd-soc-rockchip-max98090 +snd-soc-rockchip-pcm +snd-soc-rockchip-pdm +snd-soc-rockchip-rt5645 +snd-soc-rockchip-spdif +snd-soc-rt1308-sdw +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5663 +snd-soc-rt5682 +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-sdm845 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-sprd-platform +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-ti-edma +snd-soc-ti-sdma +snd-soc-ti-udma +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-acpi +snd-sof-imx8 +snd-sof-imx8m +snd-sof-of +snd-sof-pci +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +snd_xen_front +snic +snps_udc_core +snps_udc_plat +snvs_pwrkey +soc_button_array +socinfo +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +soundwire-bus +soundwire-cadence +soundwire-intel +soundwire-qcom +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-amd +spi-armada-3700 +spi-axi-spi-engine +spi-bcm-qspi +spi-bcm2835 +spi-bcm2835aux +spi-bitbang +spi-brcmstb-qspi +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-fsi +spi-fsl-dspi +spi-fsl-lpspi +spi-fsl-qspi +spi-geni-qcom +spi-gpio +spi-hisi-sfc-v3xx +spi-imx +spi-iproc-qspi +spi-lm70llp +spi-loopback-test +spi-meson-spicc +spi-meson-spifc +spi-mt65xx +spi-mtk-nor +spi-mux +spi-mxic +spi-nor +spi-nxp-fspi +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qcom-qspi +spi-qup +spi-rockchip +spi-rspi +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-sifive +spi-slave-mt27xx +spi-slave-system-control +spi-slave-time +spi-sprd +spi-sprd-adi +spi-sun6i +spi-synquacer +spi-thunderx +spi-tle62x0 +spi-xcomm +spi-xlp +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spl +spmi +spmi-pmic-arb +sprd-dma +sprd-mailbox +sprd-mcdt +sprd-sc27xx-spi +sprd_hwspinlock +sprd_serial +sprd_thermal +sprd_wdt +sps30 +sr-thermal +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmfx +stmmac +stmmac-pci +stmmac-platform +stmpe-adc +stmpe-keypad +stmpe-ts +stowaway +stp +stpmic1 +stpmic1_onkey +stpmic1_regulator +stpmic1_wdt +stratix10-rsu +stratix10-soc +stratix10-svc +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +sun4i-backend +sun4i-csi +sun4i-drm +sun4i-drm-hdmi +sun4i-frontend +sun4i-gpadc +sun4i-ss +sun4i-tcon +sun4i_tv +sun50i-codec-analog +sun50i-cpufreq-nvmem +sun6i-csi +sun6i-dma +sun6i_drc +sun6i_mipi_dsi +sun8i-adda-pr-regmap +sun8i-ce +sun8i-codec +sun8i-codec-analog +sun8i-di +sun8i-drm-hdmi +sun8i-mixer +sun8i-rotate +sun8i-ss +sun8i_tcon_top +sun8i_thermal +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sunxi +sunxi-cedrus +sunxi-cir +sunxi-mmc +sunxi-rsb +sunxi_wdt +sur40 +surface3_spi +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sy8106a-regulator +sy8824x +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink_gt +synclinkmp +synopsys_edac +syscon-reboot-mode +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc358764 +tc358767 +tc358768 +tc3589x-keypad +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tee_bnxt_fw +tef6862 +tehuti +teranetics +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thc63lvd1024 +thermal-generic-adc +thermal_mmio +thmc50 +ths7303 +ths8200 +thunder_bgx +thunder_xcv +thunderbolt +thunderbolt-net +thunderx-mmc +thunderx2_pmu +thunderx_edac +thunderx_zip +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads124s08 +ti-ads7950 +ti-ads8344 +ti-ads8688 +ti-am65-cpsw-nuss +ti-cal +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-j721e-ufs +ti-lmu +ti-sn65dsi86 +ti-tfp410 +ti-tlc4541 +ti-tpd12s015 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_sci_pm_domains +ti_usb_3410_5052 +tidss +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +tlan +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc_core +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_atmel +tpm_ftpm_tee +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_key_parser +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps65217 +tps65217-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +turingcc-qcs404 +turris-mox-rwtm +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucc_uart +ucd9000 +ucd9200 +ucs1002_power +ucsi_acpi +ucsi_ccg +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufs-hisi +ufs-mediatek +ufs-qcom +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-dmac +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-h264 +v4l2-jpeg +v4l2-mem2mem +v4l2-tpg +vc4 +vcan +vchiq +vcnl3020 +vcnl4000 +vcnl4035 +vctrl-regulator +vdpa +vdpa_sim +veml6030 +veml6070 +venus-core +venus-dec +venus-enc +ves1820 +ves1x93 +veth +vexpress-hwmon +vexpress-regulator +vf610_adc +vf610_dac +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_iommu_type1 +vfio_mdev +vfio_platform_bcmflexrm +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-rhine +via-sdmmc +via-velocity +via686a +vicodec +video-i2c +video-mux +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videocc-sc7180 +videocc-sdm845 +videodev +vim2m +vimc +viperboard +viperboard_adc +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmw_pvrdma +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vqmmc-ipq4019-regulator +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcd934x +wcn36xx +wcnss_ctrl +wd719x +wdat_wdt +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wimax +winbond-840 +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xen-blkback +xen-evtchn +xen-fbfront +xen-front-pgdir-shbuf +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xenfs +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgene-dma +xgene-enet +xgene-enet-v2 +xgene-hwmon +xgene-rng +xgene_edac +xhci-histb +xhci-mtk +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xilinx-pr-decoupler +xilinx-spi +xilinx-tpg +xilinx-video +xilinx-vtc +xilinx-xadc +xilinx_can +xilinx_dma +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xilinx_uartps +xilinxfb +xillybus_core +xillybus_of +xillybus_pcie +xircom_cb +xlnx_vcu +xor +xor-neon +xpad +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z3fold +zaurus +zavl +zcommon +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zfs +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zlua +znvpair +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zunicode +zx-tdm +zynqmp-aes-gcm +zynqmp-fpga +zynqmp_dma --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/arm64/generic.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/arm64/generic.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic @@ -0,0 +1,23827 @@ +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/arm/crypto/curve25519-neon 0x3c74a43e curve25519_base_arch +EXPORT_SYMBOL arch/arm/crypto/curve25519-neon 0xc832c670 curve25519_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0x6ddf27bc poly1305_update_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0x737051cc poly1305_init_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0xf39f5240 poly1305_final_arch +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x54602c73 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x9379fc25 crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x44444275 crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0x4533615f crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0x50f0903a crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0xad22aae8 crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xda4d801b crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0xddd4920a crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/sha3_generic 0x1135dba8 crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0x6134e6c0 crypto_sha3_init +EXPORT_SYMBOL crypto/sha3_generic 0xa8dbe6a3 crypto_sha3_final +EXPORT_SYMBOL crypto/sm3_generic 0x92e3fe07 crypto_sm3_update +EXPORT_SYMBOL crypto/sm3_generic 0x9a316cec crypto_sm3_finup +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x63adf97b suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x26ff35bf bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x6b412b80 bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x0c14c6b3 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x0f986cf7 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x1050113c pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x1f056862 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x32a38c61 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x44046c1d pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x5de3798e pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x652ef5ee paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x656909bd pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7085898a paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x7885e00e pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xca553abc pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x15b0b08c btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xe4c441ff rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x630298a4 mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2d96e5f2 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x490cc089 ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc61c6d9a ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc7129440 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/kcs_bmc 0x11dec937 kcs_bmc_handle_event +EXPORT_SYMBOL drivers/char/ipmi/kcs_bmc 0xad8271dc kcs_bmc_alloc +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1ff0dd9e st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xb9f37b03 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd32fc859 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd8bd0d97 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x07c28ba8 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x0c0b65b8 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xa6960f63 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x08937066 atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x6c28f9b1 atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x73fa978f atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x78969979 atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/caam/caam 0x37734e06 caam_dpaa2 +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x09fce715 split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x7a3c8437 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x7f9492ed caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x90c8492f caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xb2ea44cf caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x06717761 cnstr_shdsc_aead_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x09c41809 cnstr_shdsc_gcm_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x4099709e cnstr_shdsc_aead_givencap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x46efe449 cnstr_shdsc_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x4b74fe69 cnstr_shdsc_rfc4106_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x4ead8e70 cnstr_shdsc_aead_null_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x6de99a64 cnstr_shdsc_rfc4543_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x756131a7 cnstr_shdsc_aead_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x86089940 cnstr_shdsc_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x893ab046 cnstr_shdsc_aead_null_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0x8a8c929e cnstr_shdsc_xts_skcipher_encap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa2ea5326 cnstr_shdsc_gcm_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xa970bc2f cnstr_shdsc_xts_skcipher_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xbef6ab16 cnstr_shdsc_chachapoly +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xc6c7d14b cnstr_shdsc_rfc4543_decap +EXPORT_SYMBOL drivers/crypto/caam/caamalg_desc 0xe05ab546 cnstr_shdsc_rfc4106_encap +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0x686d05f8 cnstr_shdsc_ahash +EXPORT_SYMBOL drivers/crypto/caam/caamhash_desc 0x9dc00876 cnstr_shdsc_sk_hash +EXPORT_SYMBOL drivers/crypto/caam/error 0x2eed504a caam_ptr_sz +EXPORT_SYMBOL drivers/crypto/caam/error 0x8db6e8c5 caam_dump_sg +EXPORT_SYMBOL drivers/crypto/caam/error 0xa51f16c7 caam_little_end +EXPORT_SYMBOL drivers/crypto/caam/error 0xbd67c092 caam_imx +EXPORT_SYMBOL drivers/crypto/caam/error 0xf6820df7 caam_strstatus +EXPORT_SYMBOL drivers/firewire/firewire-core 0x08404edd fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x11b7e139 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ca86317 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2a34d9f7 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x38ce9f77 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x39d000ba fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3df29777 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4cf9b315 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x556601c3 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x59775ec1 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x67320412 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69f08f72 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x75741b48 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ec4e37e fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8f70036d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x974a2c4c fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9fb6cf29 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaed560cd fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc03ba1d2 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xce3576db fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd26bc0aa fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd2baf338 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd83fbbee fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd9f6640e fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xda21debe fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xddb9fde0 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe161bfb4 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xefa7a09c fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xffa24ac4 fw_core_handle_request +EXPORT_SYMBOL drivers/firmware/imx/imx-dsp 0x72272dd8 imx_dsp_ring_doorbell +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0027f528 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00b53e3a drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x017937e9 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01ac2d51 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0213a3a8 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0268c80d drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0304cb1e drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03111702 drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03ad5b92 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03bb144d drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c46da3 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03f3f5ec drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x053f3fe3 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05e78a95 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0679c224 drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06f6ecb7 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0742308f drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x078b3c36 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x080b3234 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08473bc9 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x088c7ab5 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0963d66f drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5df324 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a7d08aa drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b92527c drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c6abb2d drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c6ee159 drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d5c8bba drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e6e56c5 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fe76bf0 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10474726 drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11f85df5 __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1337342f drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14685634 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a3bd94 drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ce8815 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18684ff0 drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1882a911 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18854ffb drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18e3676c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1950613b drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19a3e7e6 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a1a2e35 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a913535 drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bfdbac8 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d883513 drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dce5be5 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1df0fd01 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e776b7b drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f5a3122 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f6f82bd drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1feec1c7 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20434739 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20a21c47 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2129ccc8 drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2160844f drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2260193d drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22b64d9c drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a03144 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24c569ac drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25921284 drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26c7460c __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27dccdd8 drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28af61d1 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a462911 drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2be60400 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ce429ed drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d184ea2 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db6d0d4 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2db714fa drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2deebbce drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7ea31c drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fabe861 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ffdb2c5 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x301bb603 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30c765f9 drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30de7362 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32b6748f drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32fb729c drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x334b5e31 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3515adb0 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3699b9e6 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37055d75 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3781e5b2 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x380b5fbb __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3882989a drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3905f00b drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39093b79 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c986d0 drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bcda50e drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cfa373d drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d7e4236 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dbfb2f5 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eab7a3c drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f6358f7 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fcb41b5 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40d4585f drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4171df7c drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4192eac8 drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41bb0ced drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c0e6c6 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c6f040 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41cf642a drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41d593ce drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42798593 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43b7b270 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45f5d158 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4610270d drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46fd7492 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47506d3c drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4794fd68 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x482522b2 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4834906a drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x485e25a7 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x486395d0 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48d53bc7 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x492be36b drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ac880af drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b99e280 drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c10fb57 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cae5dbf drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cbde267 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cf7d003 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e05f5fb drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e134521 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ebd12b5 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f9a85c2 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e2fbd0 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50fb5e54 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x524019e9 drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x537e89a1 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x541043e2 drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54336f36 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541071 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54ab8eae drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554eb7c8 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55a039d4 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e78676 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57058fb0 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c9eb6d drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x585d44a1 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59b5d967 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a405b31 drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a5eb120 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ab692d7 drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d1be3cd drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7446e8 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e7c6bdd drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x604d1e75 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61457270 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6215b1bb drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x626901be drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x636d1426 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63a7b65d __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x653f6cab drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6581bfa1 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66ab9a44 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x676ad115 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68479e7a drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68866794 drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68d9d5b2 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69ba84ef drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69e74b9e drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0b9550 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b918f72 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e7a2628 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ebb22c7 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f8af2d8 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f956bec drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70a6129b drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71221d52 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72d0dbf5 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x735421ae drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73d79bf2 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73e15773 drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73f15ae3 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74577d89 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7579d025 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75f1f94b drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x771aa5ef devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77fa1089 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78c99984 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79f36ce5 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a37a413 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bf5d309 drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bf9dc82 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3389a3 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c958868 drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d03ee5e drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e016d38 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e4cede5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ecbf655 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f773e4f drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fd725b3 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80fe4f6d drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ea177c drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81f83be7 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8345f9ee drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x835666d7 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x836a74bd drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83d7b01e drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8437c56f drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84460339 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x848519c3 drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8539fee8 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85965f6b drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85a6ec12 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cb40936 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d4f7025 drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e9d09ed drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ef6e905 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f72fcd5 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91080b20 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91785bc8 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92bc6fd0 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x943617d7 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94d4a5d3 drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x954359ed of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96bc8950 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96c53835 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96fdbaee drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x985072bd drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x987da2c3 drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x990ecfbe drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x995c860e drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x995cefcf drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99bcb9e2 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a7d73a6 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d03b9ea drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e09c975 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e28c00a drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e49263f drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa01922b8 drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0b54143 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0bdd92f drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa23ee21e drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa37fca97 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3c6d70d drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3ccbe9c drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ef97d8 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d0d7cc drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6a2b415 drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96fb9bd drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab03e6e6 drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaba58901 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac534585 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacf8ec19 drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad0f47e1 drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae33b6db drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf72e762 drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafa68e79 drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb08993e9 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb096f2bd drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb09f4472 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11123ea __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb131d1f0 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb31f7de5 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb369ae5d drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3b501ac drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5519953 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5eec348 drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a07e98 drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb73b7afd drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb73f1a64 drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7503fe7 drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7de1e37 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8ff60d6 drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb978938c drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaa0ea99 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb0616f1 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb45bfe drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc13d822 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc6be89d drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc8ac325 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcdb96f1 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd0b98cd drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe84f19d drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf1e3088 drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc009653a drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc08d90d4 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1d769af drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc34683e3 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc34b1529 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc373d805 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4aa48be drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4dc99e5 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc54776b4 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5ce9af3 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6c6ee40 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7dfd0be drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc89ef525 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9569c23 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9c40315 drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca3883ec drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb66b928 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbe109e8 drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc02e1a8 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd1fe803 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdda1e5a drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce633206 drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0de2b8f drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd16ad2e8 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1fc5f14 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd28f0aaa drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2cd1a71 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4132cc6 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4aee418 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52e55b6 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd59726b1 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd59b934c drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5a27129 drm_of_crtc_port_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6acda2f drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd82790ab drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa58082 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa59a58 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb714d0f drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc833fbb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd32c1e6 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeedb23e drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfc3ad71 drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0d5d8ec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe15161c8 drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1940921 drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1eb2215 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe245cf87 drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe25f1314 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2894b8d drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe339b9ec drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe347d8d1 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe37ec4d2 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3e13501 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4b36829 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4de7e1a drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4ebb46f drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe554e510 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe59ea6dc drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6bac8d3 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a66ad4 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe95beb7d drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9644752 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb4883cb drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb61d425 drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb9e7d43 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec49790f drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec7d1f51 drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec99a1e3 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec9cc93d drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecd6e7bc drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed278e1a drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee4ca00e drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef518df9 drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0e41751 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b6d6eb drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2527e20 drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf28f300e drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf37e89b3 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f02818 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d59a55 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4e49d5c drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5c32b0f drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf905cfab drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9090e99 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf91dc30c drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf97730bf drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9bfd26e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa60d341 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaa478c7 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfafbc425 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbadaaa3 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc1dfb6 drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc5b995 drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc06ebaf drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc399c62 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd53216b drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe21601f drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea3f9c9 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff0bec1b drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffa59280 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfff1f1d7 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x018f73e1 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x026d65b0 drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x033e392d __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04832139 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0531d35d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0539f453 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x068ae36d drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0844aaf8 drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08eee1ea drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09197640 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a89bbef drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bfb20fd drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11081675 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x139cd4cd drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14223a12 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16bfce29 drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x175c5c6e drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17d303e4 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1965a975 drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a08e226 drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a1bde49 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b94ad80 __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b9f917c drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bfaa86e drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c5d7162 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1cae246f drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d994eaa drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1da59866 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e122017 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2035f03b drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21c7eb47 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22807925 drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22b61f92 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22d83f5a drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x241920f0 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2529875c drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x287ff69a drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28a510be __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29dbd64b __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2af2edf0 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c258c43 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c25d0b3 drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ca07898 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cd77311 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d2fae87 drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e7c998f drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f68e028 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30129764 drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30835d53 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30d03a4f drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31b644c9 __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33200b97 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3339a86d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3357d9ae drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33f42e11 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34440bb2 drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x372e5fb2 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37b2667d drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3834cbd8 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a6b7696 drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b925f05 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c19519c drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f30de54 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f6f56c1 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f81d6a0 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fdb1acd drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40a98892 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43040eee drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x477a9786 drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48780091 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48e77ed5 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49a30e14 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ae6b2f2 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c835c27 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d8804cc drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e0ae895 drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f32da01 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50bb1996 drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x510eeec5 drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5277980b drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x556ff374 drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x557d897c drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x563edf57 drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ac54100 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d8b74ad drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e198cc8 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f0668e4 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f99e988 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6055a103 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67c7f1b8 drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b3dcc9e drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b98c640 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c595b1d drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c8244d1 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c8cf3c7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d21ad9a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d778987 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d9ebf22 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e3debc7 drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6fab0ed7 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70ffe435 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72356de3 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x725c4bdf __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7391e2cb drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73ac448b devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x74d05837 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75e87a27 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a58f087 drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a6901c3 drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d4e4980 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dc1a1ce drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ddcaa03 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e4f9fa7 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f638657 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81f04ac7 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85ea20df drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x867aa769 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x871ae23a drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89ddbc9b drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a24980d drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c631e89 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8cb44d2e drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d543b23 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e51b814 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x903fad08 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9169d76a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93ee4cfb drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9495bb38 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95273a91 drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9656e297 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96bcbe8a __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x97ad573a drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x982efcf5 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99614fb2 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a0ec2b3 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9aafe0ec drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa151784c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa33c51dc drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa79c1d97 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa959d798 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9725b0c __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9ab67c1 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacc35bec __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad133408 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae2e2fd6 devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae52f984 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf0c47a1 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb048c850 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb06040c9 drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0855bd4 drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1186b8b drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb166aec2 drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb18814bd drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3497f7f drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb47a4183 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6204dd1 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7c162a4 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8f36f2c drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9ab3f03 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbae22f8c drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaf136f1 drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd42683d drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbde86a93 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf3deeb7 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0331329 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1bd6fc1 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc30c404c drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3577c11 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3ba8804 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc427cd43 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4519dc3 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc471c536 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5496d19 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5e1713a drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcee443a8 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfb7e1fb drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2c31856 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3462b40 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd45f0a96 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6b48b21 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd759d666 drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7761d76 drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7b4ea93 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd80fb95c drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8e6788a drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd75dfcc drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf9dea7a drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe60fc08e drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6a25b15 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef3cd725 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf04efb9d drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf05cb33f drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf14b2068 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf15f316f drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf40ed789 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf52354ef drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf539f93d drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf81a3805 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8333949 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa09fc57 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa1a243f drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb711d03 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc139f70 drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdefd0e8 drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff6549e8 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffeb5605 drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x140f152d mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x17ada838 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x3345ae82 mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x46134cd6 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x46b1fe96 mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x5a7f8c1c mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x64b4509e mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x96715cdb mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x9b109c0a mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xb7b926bb mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xc77c7210 mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xccbd4a23 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe6056b98 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xecf8b4e3 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf1fe11fd mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf49185c1 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xfd3627b5 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x1da93f66 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x5617620d drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x11efd4a2 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x12193fa4 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x19b08b3b drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2c78439a drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x411c78c5 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x425bc3ec drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x4657542d drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x49bee11a drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x6197d377 drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x87ea4e74 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x97b95f6d drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9978a3ec drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9dcfcd7b drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb2632d4f drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb4320b51 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xbacf3aba drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd4ba2e8f drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe0b65f0f drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe6471032 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe9773389 drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xfa09afac drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/rockchip/rockchipdrm 0x7d1a7935 rockchip_drm_wait_vact_end +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0437c7f5 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x11a5926b drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x189fec85 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x350958cf drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x523bdef1 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x5252ff7d drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x58cefac6 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x667aac91 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x6895301e drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x7ece294a drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x8ffe1a63 drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x90a7cbe0 drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x90b7c40a drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa839d1d8 drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xbe5d31ec drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xc761eece drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xce33a956 drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xcec84af9 drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xcfb7735f drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xdb7889f5 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf8016cdc to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00b3408a ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0138450f ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01fd965c ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04de8a46 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05365393 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e64d27d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13111b37 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x185f761e ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18d2602c ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cd6ca47 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1efa96b9 ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27b66ac0 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2e02fc00 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3438ffd5 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3bb6b7f6 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c99ba93 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x405f18df ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x41267e6c ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44cc56fd ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e1bd177 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ee242d2 ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x52eb8238 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5775fac3 ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6087168f ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64226d92 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6af908bd ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6edfcf28 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75a3be0f ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c7dec85 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7f2ae58e ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x912f12ba ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94537c90 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94e241ff ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x966214dd ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x972ab4b0 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b3730d6 ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c7a0daa ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2596662 ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2d8487b ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa623bab3 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa48391a ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac77a248 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb219e8a1 ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbf5901cc ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbf8dcf1f ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1ceb1c9 ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcda4d8ec ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4e10086 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd70b8571 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb6624ce ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdbc6c85d ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe120e733 ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4ec4f76 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb887f3f ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef4b9f16 ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef860179 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf116814b ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2fdc92f ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8aaab81 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff97b619 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfffddc2f ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x046b5df6 host1x_channel_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x094571d3 host1x_syncpt_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x0bc0d09e host1x_syncpt_read_min +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x0d847b12 host1x_client_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1a86c9d7 host1x_syncpt_incr +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1f35781e host1x_job_pin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x363d3fe6 host1x_syncpt_read_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x37a849da host1x_syncpt_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x387f5e18 tegra_mipi_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x40131a66 host1x_device_init +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x4109bde7 host1x_job_alloc +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x43799a4e tegra_mipi_calibrate +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x51de13ce host1x_syncpt_base_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x628ae224 host1x_job_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x68942467 host1x_job_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x6b287a74 host1x_job_unpin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x7e0f49da host1x_driver_register_full +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x8f37c6d7 host1x_client_resume +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9451a33e tegra_mipi_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x95e01bec host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa733ff60 tegra_mipi_disable +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa7d5bedf host1x_device_exit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xb56ca6d3 host1x_channel_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xba2c5966 host1x_syncpt_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xbc0e3f17 host1x_syncpt_incr_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xca8b78dc host1x_syncpt_get_base +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xcafa37d5 host1x_job_add_gather +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd204359e host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xd8e72b3d host1x_syncpt_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xde76f436 host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xe17a72dd host1x_get_dma_mask +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xed2fbbef host1x_job_submit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xef1e9911 host1x_syncpt_read +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf5deda55 host1x_channel_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf6e81de5 host1x_client_suspend +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf8a79b19 tegra_mipi_enable +EXPORT_SYMBOL drivers/hid/hid 0x7457ac1c hid_bus_type +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb52ef65c sch56xx_watchdog_register +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x159c744e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x327b4395 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x8c841960 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x115337f0 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x4f3b766c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xf8bb4585 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xb50c70da bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xdec6f594 bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xec290dd3 bma400_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x00f7dc22 kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x849044a5 kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0xb0c93b40 kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x339e30e3 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3485a9b5 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3a805f19 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3fd46e6d mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x51af7c4f mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x557ff40b mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7c32b3e7 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x80914762 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8b14c55f mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8b64ab1d mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa9ab7dee mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xab4fdf93 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbca8fc17 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xceb102e6 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe6071f88 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfa652608 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x18384de7 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x89fecc67 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xb21774e6 st_accel_get_settings +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-buffer-dmaengine 0xe238d31e iio_dmaengine_buffer_alloc +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x02c7ef55 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xe43475ab iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x1ae354f4 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x854ab511 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xfa55095c devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0xde19751a bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x044bd2d3 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2cfe3965 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2f905d7b hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4b1c1ce7 hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x58b76527 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x66e983ef hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x74eeac2e hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa049093b hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd104acee hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf95e0a94 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2941acff hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x48b04344 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x70b87376 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x78070db8 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x07b6e66b ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x34ebbde4 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x40bb7f0a ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x433d979b ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x56e123c6 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x628e7911 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x6f202276 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xdb6aee12 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xdbf06b1a ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4596e7f5 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5bb6fdd3 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6a6d6f72 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd53e731e ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xfc4e9492 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x039a0018 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xfb7c2f4d ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xffae3aae ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x03bda39d st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0d825b56 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2e8aff9c st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x40e5e809 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4975d4d4 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4f1f353c st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5431b086 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7c6481cb st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x86bf978a st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8b107425 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8d21e029 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa9234fd0 st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb781375d st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbc9e489c st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbefcacc6 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xde8ab3f2 st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe05c807e st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe0cc0f40 st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x23361f02 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xc654b8e3 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x5a550aa0 mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x865a5d1d mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xfb0c887c mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6faa4c17 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x90a95830 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x9287e93e st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x520f90d8 hts221_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x7fab4aa5 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x0ac61d24 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x660a779d adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0x83228002 bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0xcce864e7 fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x5fc8a9aa st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x82876fe5 st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/industrialio 0x0b7be4a1 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x13bc3cf9 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x1455c708 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0x17b3a1a0 __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x24093c29 iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x295ca0a8 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e3b2589 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x3540dc5c iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x3aeedd0a iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0x47f80ffc iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4971ea9a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x4db9e760 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0x4dde8f9f iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x59c0c4c3 __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x615ba3e1 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x97969ed3 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa8ed1564 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xb51e47dc iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb9b2c1e3 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc1dc6fe2 iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0xd6ef40a2 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe12a21ba iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xe555227f iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0xef76e413 iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0x10b1e323 iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x1cc52a09 iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x21649966 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x88d68863 iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xe27aef31 iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x0429fc0c iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x7ac57e73 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xd5dfbd93 iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xd66728bf iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x52c600ca iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x6ac4fdeb iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x1dc8af2e st_uvis25_probe +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x3aea37a8 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x68d89436 bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x81f0d389 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x957046ed bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xf708ef8b bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x09ba70f9 hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x0c6cbaa4 hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x684b11f3 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xec26e18b hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x13abff22 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x43a53c29 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xfe5e87b6 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x054f5944 bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x7784e361 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x9d023e03 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xd18b39a2 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb8ab0664 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xff34adbc ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x2daf360d st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xab2ddc4f st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xb4735ea8 st_press_get_settings +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x08e93d21 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0f135b73 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x24286cb7 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x55ac038a ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74c72eb3 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7a5ab9fd ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7f65303a cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x953f542c ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x98a028d2 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb07248ee ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb10ceb1c ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xba2969f4 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcbaf3439 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe127d8af ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeb8900f6 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xee555ca6 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x004ea728 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00c04d40 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x067812f6 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x071d61a8 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0762549c rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x078d8f86 rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0896fba4 ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0985fe1b rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a31fb20 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a85e1dc ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b17ac38 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c118c2f ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dc11132 ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e89d8db ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e909346 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f39c369 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x109d0989 __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x115c1660 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16cfc384 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16db16cf ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x208fa376 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21993ad0 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x222761a1 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x230602cd ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26d077b0 ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x292e1f6f ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29991876 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a129c80 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b118960 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ca76155 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d597243 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30c4a4bd ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3117ea79 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x337af501 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35712303 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3696e5e4 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3727de8d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x389cd3eb rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38b96d9c rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x399e8cdc ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a2b8423 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a59be75 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3aa6c7fa rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b519a19 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3bde507f ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d4c60a6 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x401c89bc rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x419f217b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4230a875 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43f5b3da ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46514fbb rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x474a94bd rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a251a19 rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ae96fb9 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f007ac8 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54685323 ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55d85784 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5644568e ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5adabceb ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bb67359 ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c27908c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cf52602 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ee9b387 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f136165 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f509a23 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62daf33f rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6581ca90 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x680a6686 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x695910a3 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6981af95 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69dafcc3 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a2d1645 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bc0d08c rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72bf2546 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74b294e9 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x765b805c ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x795b4931 ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a4f021d ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b155617 rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ba0a9fc ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7be1fb57 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cb8a50f ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ce9c4dd ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d7bccf1 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7f0061dc ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fe48bd6 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80594d6b ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81630067 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82d94702 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8311880f rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85a8bca2 ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87853e1b ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89aa2321 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a8b2c96 ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c6e7207 rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ef68088 ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x902d7ead rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x909cbc44 rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90a02b75 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x911dbc52 ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93462e39 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x964fb740 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9790f873 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97a57315 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97f07319 ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9af42ccf ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d4543ac ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0f69006 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa17dcfb7 rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1daf3c9 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa272d861 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3bc0a0a ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3c41091 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4112563 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa46023b2 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4a431f7 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4c4ec3d ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa663bc96 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7c4c123 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa806d8be rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa893fe79 ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaad7031e rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabc817be ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad3733f5 __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad8f67c0 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae35a646 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf9179c0 __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0e8638d rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb10bb9af ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb18d9feb ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1de33e8 rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb47a3f6e rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb616b48c rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7a04084 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb96d1235 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbab432aa ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd350225 rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd83f528 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe65eef5 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbec01d2a rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf2dca02 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfb71c69 ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbffbe6cf __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1b81f75 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1db483a _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2b01220 rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc34aba86 ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc386f007 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3daa7c3 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3e8faf1 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc47b6af8 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc50a5983 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5151e30 ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc602fae4 ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6ce1649 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc98c425a rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca3efe46 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb87de15 rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc9849d0 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf387df8 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7b021b7 ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7b2ad8a ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7ebecb0 ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8fefee5 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9015446 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd930541b ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb5b9c3a ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbbfb29a ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe05129a7 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe142ff55 ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe69fd2cf ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b499ea rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe922f253 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9a2cdda ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea629a53 ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeab51244 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebf2f5df ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed3c158a roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed4757f8 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf066c86a rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4bcc70d ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4f0f67b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf683405e ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf73cd1e7 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7ce61bd ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf819ee12 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf930c1cc ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc36fcf6 ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x15a5734e ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2378aea7 flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3042ffae flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x361a75c8 ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x37129234 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x38cb6ab6 _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3b7647f9 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4a5fe74a ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x55cee20f uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x597fae1a uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5f8e8e4c uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x69f079c5 ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7428a90f ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7aaf2c87 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8d00faea ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa6ede2e1 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xab422a5c _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb02d9efa ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb3bc1109 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc3abcb1a uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xcd447da7 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd91be576 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd9f14cd5 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe75ea7e8 ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe77d18fd uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xeed782cb ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfd66bb19 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xff7a36e5 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x11e10985 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x34a05d68 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7b5a9f8d iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9fab297b iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb9780ca2 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc61b8141 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb478303 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfe7158bf iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b60a6c4 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0fa34cd0 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x151f3f01 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x17d01a7a rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18175815 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1e634a5c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2df2b9b6 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3381acf2 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3488f63c rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3af43704 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3e6094f7 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3e65d5f8 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4c0ed6c2 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5ae3e8de rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x71eea036 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7e9a60b9 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8966745e rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9256c323 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa758492f rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa940c5ba rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc3045e9f rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd2c2c606 __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd74d8103 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe5f4ef11 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xefff27d3 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf22f4dfe rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf4c8277f rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf92a8fc0 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe13c228 __rdma_accept +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x0d826330 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x0f45ef9e rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x490290a2 rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x6a706d93 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x79f5fb27 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x882ed9cf rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x2510363a sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x474392c7 rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x67029a33 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x99471ccc rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xa8774115 rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xb4578848 rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x63c4d5b1 rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x66fa1caa rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x6fdb2035 rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x9257a777 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xaad22552 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xc766b552 rtrs_srv_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0dd5fa0a gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1099bb7c gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x21357c58 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3521b79a __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x522190e7 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x561bca5b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x76bda831 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe97bf912 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf79df69a gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x30a4671f input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x8c2a4249 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x91fedd33 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa8604256 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xdd21e42b input_allocate_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x2c843fe0 iforce_init_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x63958537 iforce_send_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x8eda501c iforce_process_packet +EXPORT_SYMBOL drivers/input/matrix-keymap 0xfbb25bb7 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x22cf6ed8 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x5a376fed ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9df32f50 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x04f52f6a cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xf4865e80 rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2a2a16ef sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2d9e34e7 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x760a845b sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc43e9398 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf94a058a sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xaafc97c8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xbb47992d ad7879_probe +EXPORT_SYMBOL drivers/iommu/iova 0x58604e4d alloc_iova_mem +EXPORT_SYMBOL drivers/iommu/iova 0x858b3fe3 free_iova_mem +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x23cdeb35 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x412a42f3 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x78c93a45 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe4a04bb3 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe7b78423 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x463b6432 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7521e5f9 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x89110ecf mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x96cdab38 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3875d854 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x3ece9a76 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0d678dfe mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2aa9efbf mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45e5c283 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x488594c3 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x49a37c49 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50bc548b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x53a3deb4 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x589a912f recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5fca38c4 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x687fa78d mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6e4385a9 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x79b643f6 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x86c346ab get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8f16cab1 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96b5ca3d get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9b5e2d1d recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa01fca19 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb17ab7de mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbc3e061c create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbebee4d0 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd0615732 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd48e5002 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe2d05796 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x4d773002 ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xa53b4b2b ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x34e5235c omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x3e0a9c79 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x75d2ead8 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/md/dm-log 0x3f0bdcaf dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x6c3db63f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x8c9dce98 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xe715e5eb dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00a35dc4 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x25045885 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x40464bdb dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x566ac768 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9001b57b dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb7102744 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xbc4e652f raid5_set_cache_size +EXPORT_SYMBOL drivers/md/raid456 0xd07dd95d r5c_journal_mode_set +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0eeeaaac flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x12484c63 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3417154d flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4cfbbdd3 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x73429260 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x788132ac flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9fd4934e flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8d68542 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xab795f3a flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xae2348c6 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb0cd3e5f flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb770fc74 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf73c0771 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0x958d46ad cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb54cd7f1 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcc14d05c cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf0dd60ac cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x368dd91a cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xd875e011 tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x14a1c5e4 vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x36280c7f vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x178f61c5 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x288fd064 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x640b8073 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x9e38a858 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xc2d2d2e4 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xdb8d525f vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0x13382c18 vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x006d6880 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x043106a6 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0dec170c dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10ee62cb dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1609d70c dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e7a8283 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21381c3b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x214d5b4e dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2bcc8617 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2c12c287 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x34f1cd15 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39176a50 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b332a2e dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3fd96ba7 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x42d15a1b dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4be5c646 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5154df5c dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x53abb853 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x55af243c dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58d79a3e dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a8299d2 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x64b1e901 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x702c9c99 dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b334d3c dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8026ef3e dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x82143c17 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95dbfa8c dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9d3c2ce3 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa769e0db dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb6a938be dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb9dca3ec dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc0b93899 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3f35647 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd799e7c9 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdafc31c5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xedda2b2f dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf7aa36f2 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf9fbafa9 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfa80eb9d dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe73d116 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x7e6ac9b6 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa627bf86 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0484784b au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0d798f3d au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x31a0601f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7e74e687 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x912bd413 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x93ceaecf au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc326b3b3 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf6c764c4 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfc627e51 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xec438964 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xf6d5077f bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x34ab0884 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x646b8ce7 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xa8923ed0 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x8a81c911 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xaf0612cd cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x543d64d1 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x5ace7d21 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x0c559116 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xb4ff8480 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x24c12258 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x0cbc2832 cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xb7df201a cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0x892ca5b5 cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x248e7f42 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x25028f7d dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5ab443a0 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x957ac186 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe90a9b28 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0c395d43 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x103b08b1 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x35b636f7 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x36afedb6 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x479cc137 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5e974456 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6290b81c dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x76c4d198 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x844ee1d8 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0e64ef4 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb3530628 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb3c0b78a dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc46d17e3 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe437b1fd dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf6c7616e dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc8b3ef02 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0e0df6da dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2a4de18f dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3444f8b7 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4b9ad3d9 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x52df58ec dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x67b98521 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x19972c06 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x27d765b4 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc752eee9 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xea41ba72 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x887fddf4 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x64a87f54 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x13dd1aec dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x1ecf4573 dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x350ba5b1 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x39fddcbd dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x559c2597 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x5eb931a4 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x74b73e3b dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x7dbb771e dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x88627525 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x9791a22b dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x97a7fab0 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xbbce753b dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xf3f0088d dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x38962267 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x49241d0e dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x722a1130 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd3e34d86 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xeb9a017d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xf8ddbf87 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x9e85bf6f drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x5ef497d6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xedd052ea ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x3651b434 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x4f3c8ee0 dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xb6a45f1b dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xe4f2aa88 dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xb146720c ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x50e8bddf helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xd334c93c helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0xd97acb7a horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xfbe935b5 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x09801318 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x4147b2bb isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x3006775e itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x14bd466f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x5a5aae97 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x8ecb47b2 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x505dc566 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xe6f472e5 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x375bed48 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0x442fa77f lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x3281044b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x331d9524 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0x9ae092ac lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x487ab6f1 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x55e60034 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xf3142f68 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xbf30be14 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xfa28d71f m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x957dbef8 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x3bbdf7e7 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xa564923d mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x28509be0 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xb39d9a74 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x4a2a41d3 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x8fbb4950 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xf5cf0ef1 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x444b6801 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xf53b26ab s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x080aa9a0 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x6d81e807 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9a921dbc s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0xa05bf339 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xe7805b04 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xbc3033fc si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xf1c51d04 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x581d2499 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x31bdd01c stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x01ef4894 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x70cfb693 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xc8dfbc37 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x2fd52a3c stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x51a35abb stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x58818872 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x66e6a3a3 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x800179e1 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xee86d80b stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xdc2b4a54 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xa4d9f2e0 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x19908788 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xf07e8216 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xbf0f0aa8 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x70645b00 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x590e72b9 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x930a566d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x8b8017da tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x5e29adbc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x9a5ae489 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x98b9974f tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xd6951d47 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xed264d0c ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3d2e9955 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xff3cbf70 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xee7f0ea4 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x023104f2 zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x9795d9c5 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x828d97ef zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x90c7d887 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x218a0b46 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x06422ade flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x511af6aa flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x5b108967 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9637d443 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x99b21a57 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa13aad70 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa8232e3b flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x2d1340a7 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5cf7ed3b bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xb8ea91df bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xcc7867f1 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x15b71698 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x62af9e62 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x948454fb bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3197c8a5 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3ac4b3fd rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x504eb1ae dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa262b4ba dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb53cb5b8 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb6e11f45 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc57be824 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcafb37b9 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdb315c69 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xb3e3511b dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1381d8c8 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x16f73198 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x27b49d07 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7d63740b cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa91c7aac cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x59a5ad6d altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x07187305 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x09021047 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0de7c8fc cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x32b5fe7b cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3644320d cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x46fe7086 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9349aa08 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x844a721c vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xfaf2c651 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x13bae4aa cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7a2ea192 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7d487a0f cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8c5ce37f cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x020ab78a cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1d7f57ac cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x51292ceb cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcc84ccce cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xecb16a38 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf10121b7 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf8827968 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x407aef75 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x455fd741 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x48912bd8 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4ea6cf81 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x59e76618 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x68a54bbb cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6a2ac060 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x75c742a2 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x84cc7427 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x887e5cbd cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f3fec4c cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x91bb3574 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2898b35 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc9fe8b9e cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd15c52ca cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd503c8f7 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc47fc73 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xeb1c5a89 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf5c7973f cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfe67774e cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0xff6cc580 ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x085ffe12 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x08c24474 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x12898f6e ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x20dee705 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x27797074 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3090ae07 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x63939717 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x66402aa0 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x689c834e ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x70d63dec ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x87813dc4 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8909abf1 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x95c0464b ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9d7aaa83 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb6b4a23c ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc4c2415f ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc9ad0015 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x07e613b7 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0c826e71 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0c9b998b saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x202c9adf saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3662cce1 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5077ef6b saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x669abefd saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x809c5701 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x913f20d0 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc6e9fe4c saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd13ddd16 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf5b99ae1 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x26159a59 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/coda/imx-vdoa 0x6671c6ea vdoa_context_configure +EXPORT_SYMBOL drivers/media/platform/coda/imx-vdoa 0x787fe8a8 vdoa_device_run +EXPORT_SYMBOL drivers/media/platform/coda/imx-vdoa 0x7fe3d6f9 vdoa_context_create +EXPORT_SYMBOL drivers/media/platform/coda/imx-vdoa 0xd96c63ec vdoa_wait_for_completion +EXPORT_SYMBOL drivers/media/platform/coda/imx-vdoa 0xfc58eef7 vdoa_context_destroy +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0x232f208b csc_set_coeff +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0x7ec20969 csc_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0xc5d6d71c csc_set_coeff_bypass +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0xd5ad9109 csc_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x37c3c8bb sc_set_hs_coeffs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x7aeb42c8 sc_config_scaler +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x9217758d sc_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0xe3b7dada sc_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0xe4f365fe sc_set_vs_coeffs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x157301bf vpdma_submit_descs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x163e1a86 vpdma_free_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x16f0b6e4 vpdma_add_cfd_adb +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x1d8a5dbd vpdma_add_abort_channel_ctd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x1e26321d vpdma_misc_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x2dd37ab2 vpdma_get_list_mask +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x39b22d06 vpdma_set_bg_color +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x3bb6047d vpdma_create_desc_list +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x49293b26 vpdma_yuv_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x50ec40af vpdma_rgb_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x5118bd7d vpdma_add_sync_on_channel_ctd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x52c043fd vpdma_set_line_mode +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x60708dc6 vpdma_raw_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x65d23377 vpdma_add_in_dtd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x664dd09f vpdma_alloc_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x6752273f vpdma_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x6b57707e vpdma_update_dma_addr +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x7502f028 vpdma_set_max_size +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x77fd8548 vpdma_list_busy +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x87c0415e vpdma_free_desc_list +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x8f3f99b8 vpdma_get_list_stat +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x97f311f0 vpdma_add_cfd_block +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x9cf58e74 vpdma_set_frame_start_event +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xaab3b384 vpdma_hwlist_alloc +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xb3183798 vpdma_hwlist_release +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xb68351b2 vpdma_map_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xbda246ba vpdma_list_cleanup +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xc6dcc93a vpdma_enable_list_complete_irq +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xcf7a6895 vpdma_hwlist_get_priv +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xdb48e266 vpdma_unmap_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xdd7f11d3 vpdma_add_out_dtd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xe7b02140 vpdma_clear_list_stat +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf1fad50a vpdma_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf93ba9bf vpdma_reset_desc_list +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xfefbda83 vpdma_rawchan_add_out_dtd +EXPORT_SYMBOL drivers/media/radio/tea575x 0x12e91b35 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2f80f3b8 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x623e2303 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8eafa6ab snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x905f721e snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xba7d5540 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd7ac32d2 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x55e60620 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf0fdcf66 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x5390d018 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xd3b1cbed fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x5b61d9f2 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xec1343e5 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xec4e0435 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x537d41fa max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xc839cde8 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x2d7bb3c3 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x607554f7 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xa2099e6e mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xe826538d mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xe854bd47 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xab05e6f6 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xd0c44757 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x848b5fb2 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x332db167 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x508a1397 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xf1a031af cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x17cebf90 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x27a14126 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb653fa85 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc38123c8 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd0d0ea04 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd233e825 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd3d44b38 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd6dc2889 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xed52ec15 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x22e4799f dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x65d933e3 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6dec500f dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbf866001 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd447e52c dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdb759ec6 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdeb7ed48 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x2ca0759b af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1121aacc dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1bbad4a1 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2c3fec55 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x44a98d99 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9884d732 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb2a65f2e dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbe34635d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe2aba52f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xeeb24808 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xa7a5d0d4 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xb4fbd547 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x3227c396 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xddad74ab em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x022d657f go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x175dbfe3 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x71abf8be go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8eb2b2bb go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb040fa8e go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb41ca613 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdd7c171a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xddd1d1ac go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xed52c0bf go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x26d2638f gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2e90e065 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x36f648ab gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x37ae0518 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x81c65356 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb7350203 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xd15b4a80 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfea269d5 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa60fd691 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xacc4894c tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf93afccb tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x01c6ae00 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x2a01afca ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x06ef6a8f v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x51835f3c v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x62c3e6c6 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xce4c38b6 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02a37922 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0845865a video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0990858a v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b8f08b2 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f846036 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18836d6d v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x213a0947 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29daf375 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30135616 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3825352b v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3f9793d0 v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4156b452 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41fe856a v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42d432b1 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x443cbba1 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ae9a1d7 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4be0dd80 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x502b4aaf video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5650a2c8 __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6439ded6 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x654ec349 v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6da5b22b v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6da8c550 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b7228af v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d24b1d3 __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e0fb4aa v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ef88c98 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x81c921d0 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x824d74b5 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89cb6ebc v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8da85fee v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90e8df8a v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x924b9abf v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95a6e4e6 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b341dc6 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa11bfb9f video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa204cc97 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa20933e0 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa499366a v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa608e863 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6d2ec1e v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7461acf v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaee2e197 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb07f1970 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb415b6d6 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb50b47d7 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6fcea3b v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7864a3c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7d4aee1 v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9f20fc9 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba4adef1 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2b49182 v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc2f647fd v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc38af9cf __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccd2eb0a v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2bb9741 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd58b1d9b v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6ac6110 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbbc64d8 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf32d3d7 v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1bb43e5 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3b50711 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xefe1222d v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2a0dae0 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8f325ed v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb27ea2d v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff5daed8 video_unregister_device +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0d248968 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0ddedf7e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x183fe2eb memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x21879aa7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2660cac4 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2bb82f81 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3ab058a6 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3edad53b memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x566c8812 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6c5bf3ea memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x75f77cfb memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x88067382 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa7b3019f memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xea987511 memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x040fc2e9 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x053d17ad mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0e328068 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1147508d mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16387234 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2e7c075a mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x35319a54 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3a6258ee mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3d34e96b mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47037af2 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4862eb7f mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x48d56bc8 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4f22c2fa mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4f363380 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5550d5d8 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x59b9a302 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5d6741a3 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x66505d7d mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x713dd983 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7313712b mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8fabe534 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a568b12 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xad9ae5ad mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xca222ed3 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xca8b37f8 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcf64c09b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd6f838a9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe475a96c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfc7ced39 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0ddb96be mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x175c2fbb mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b03fdca mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2382e543 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2770560a mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27eb62f1 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2adad4bd mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3476dd35 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3fefa327 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48ab7469 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4c3d1f0c mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4e304548 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x82960bd9 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c7c92e2 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8cdfe7f4 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93f57152 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9aacee1f mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa106c0da mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa942e227 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xad1d5ec3 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4d45a84 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc6df6d0e mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc9d6b6e1 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xde4011f8 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef28dfa3 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf019ca64 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf3defd3b mptscsih_host_attrs +EXPORT_SYMBOL drivers/mfd/axp20x 0x123d001e axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0x1a4315c1 axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/axp20x 0x426819cd axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x21c51552 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x31af3dc3 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x75c26244 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x7664dd69 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xde1e6d95 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x05742be6 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x05f53a1a mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x54aa9fe3 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5a21ae4c mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x73680d8f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7af25dfe mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa1f92409 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa6fd325a mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xabef2716 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb7791127 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xee8703dd mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0x832aed94 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x07d637f5 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x46dd6526 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x49488977 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0x74e7debf wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xdc6d9439 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0xeb85dc92 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xc9909171 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xf0782faa ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x2fb85933 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x07b314c5 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x580e0914 c2port_device_register +EXPORT_SYMBOL drivers/misc/tifm_core 0x0c937743 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x41d3b6cb tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x43833532 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x4d70d8af tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x4d9c17da tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x5a51a639 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x70db38ce tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x838bc02f tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x85a2463b tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa5ef71cf tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc3849441 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xf96a1c25 tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x113a3dfb dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4a9aac79 dw_mci_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x942ae46e dw_mci_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xb947a9ac dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x01ff5f50 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x3bf91c94 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x288b34b9 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x33e282bd cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5443fc72 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6f12b5ce cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xbaa5ef47 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd9825bf8 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xffc0de67 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x360a9201 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x2e4d67be lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0x56ace192 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xfb49f88a onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x8caf5809 denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xa9f48758 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x102603bc mtk_ecc_get_parity_bits +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x1417f42c of_mtk_ecc_get +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x24351100 mtk_ecc_enable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5437e775 mtk_ecc_disable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5de55d81 mtk_ecc_get_stats +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x6df58afb mtk_ecc_release +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x76e53683 mtk_ecc_wait_done +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x7eb47fa9 mtk_ecc_encode +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xda64ef4a mtk_ecc_adjust_strength +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0abba77b arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x187ea1ca arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x30de096a arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6654cd8a arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7584e827 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8f68df9e arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x958f660b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9aaa038a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xca92a9f5 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfbc584b7 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8f1c4667 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x9be7488d com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xe03ac75a com20020_check +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x03e3924f b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0c734ec7 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1dbe307d b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1ef72f40 b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2b5e2225 b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x310d6769 b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3522889c b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x368bd76c b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x370e9e82 b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x41ae0590 b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x46199aea b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x46dcc707 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x49413d63 b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5424752e b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x57841edc b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5ef28beb b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6110f5b0 b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x619f2374 b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6661d52c b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x69836f26 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6f1e17ec b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7a917a5f b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x818e8cc9 b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x88303bda b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x91919460 b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x928a4b6a b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x931dbe71 b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9501ad64 b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x95c5564f b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9ee1aad1 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa85e630d b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb1e164e1 b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb3511442 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb8778022 b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcbf693f9 b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xde050d1b b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe16eeb8f b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe7e1c1e8 b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf0d63049 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf36b47b1 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfa36fcc7 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x1b7ae0fa b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x238c148f b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x2e69378c b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x3bc61950 b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x864474a1 b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xaccbca09 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x3c2b4051 lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xd999e21f lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0xcfa08af0 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x6c42cb74 ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x3a0bcb39 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x9d78196f ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xf78bac54 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x38d6512a vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x4152e4f7 vsc73xx_probe +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x27bceb57 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x29cf6da7 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x61833851 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x653f181b ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6d00275a ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x92d41d3c NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9ae71253 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa3dde7d0 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa3eb79ff ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbb83d9f5 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xf4f9f35c cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2029ddde t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2b8db100 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64802fee t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x66cb3f21 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6c272356 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90303015 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa15db1e0 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa1c5e185 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2e43267 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb63eab79 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb864db05 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb8d4a53c cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbd9a124a cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeba8d35c t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xee6982dd cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf73da926 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x00374aee cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0adbc362 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x117bcd3a cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x148eeee6 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16bbcbaa cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1c5ab1b7 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1ff6a175 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x25c20acb cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x25e43765 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x25e4ddc4 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2b75f686 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2e4960ee cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f2394f0 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f6a7b58 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33f3fb39 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x381bd190 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e812487 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54394550 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62144fb7 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63a2665c cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63ad7d8a cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6a428b8c cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ffbba0a cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7959c6da cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x831c5ec3 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8329d36c cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x87fe7dbf cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8be994ef cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92fe8779 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa072e414 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa436de0f cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac6232bf cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbad92dfa cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f52a1e cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc703a8ab cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc72b5c0f cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc76cc953 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc88c2af9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xce3913ed cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd7376684 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdd51247e cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xded2869b cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe0c9e727 cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf547c9f1 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf57e050a cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf98542f5 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3d7d72f7 cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3d953b26 cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x41819bfa cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x7e8899e7 cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x90df9d79 cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xb19c79b3 cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xfb544b62 cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x29fb4fc4 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3d31aa62 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6728cfd4 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xbeffed1e vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe15282ac vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf55161ae enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x67bec8ad be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x8fa02e8f be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/enetc/fsl-enetc-ptp 0x5431a304 enetc_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x1f4ccba0 hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x416643c7 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x4b381374 hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x71280fa1 hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xbf3e0ab6 hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hns_dsaf 0xa0dea115 hns_dsaf_roce_reset +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x05f4eaa7 hnae3_unregister_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x13b4ca76 hnae3_register_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x2d92fd35 hnae3_set_client_init_flag +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x4701725d hnae3_unregister_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x529c54fa hnae3_register_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x65040371 hnae3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x734423a0 hnae3_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x11e38059 i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x6df62d9e i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x0a662beb iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0xf92d43de iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01fb6f74 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e68c8c5 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1456aa17 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d3288bf mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21ddde28 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x228fefb9 mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f6ba55f mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cf9688c mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fd4c671 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44fa6060 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4777dcbb mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49fd6232 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a9dff83 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5815b81a mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58f453cf mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a2b3541 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x612149cb mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66314366 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69f9829f mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c158aff mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72673b33 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7949e0ea mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c58f0b5 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82fb4599 mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ad0679b mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b467c4e mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c044d22 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98263385 mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a90533a get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac8bb48a mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb16c8b9e mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe019a39 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc41519b5 mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc539bdca set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5e2f52c mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc980734 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce5b2496 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdba6b32f mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb244666 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebe01d86 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf48f9971 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf822fb52 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb7f1369 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdb8a7e6 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0300875d mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x060aaea6 mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a94c091 mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c2fc676 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0da42096 mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12e7e110 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1785396c mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1830c03e mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18a5d671 mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x205b24b3 mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21585acb mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x220cf655 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2510c860 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2801033e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29266cf5 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b7d1952 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cb5cb15 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e4f8514 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f5b9724 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x310089a8 mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32f6b310 mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39153c11 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c146b60 mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c3efe43 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3dba4f3c mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40b26eda mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x40fe6704 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42f0cb41 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4649fc25 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x477709ae mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ad7e9d4 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b6b0421 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x501d2486 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x510b75cd mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5656b0df mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58fa7d83 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ae329a9 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c25bfeb mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c6413b9 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d53f49b mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e792a6b mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f7588ba mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61ab51b0 mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x666d77ee mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x683f018e mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b94a386 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d553d4c mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e4425b3 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70252f8e mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71a87f6b mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73193ce9 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x761f0aba mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x769c3c45 mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x786011b3 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79c38187 mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7aa7a44d mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bde2672 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e53bc1f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84fdc437 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b9ad95e mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bba1556 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e7623b5 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f1ffaa0 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f48d674 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ff80f5d mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90018bd2 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x900325dc mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94954366 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95a6992c mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95d47eb2 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9bcfa286 mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f7080fc mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0a996a6 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa62c67b9 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa862f9ec mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa91a961c mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa09e94d mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac72d904 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae53c645 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaeffe222 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf112ede mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0a60d81 mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1856b23 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1fc5e5d mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb29dc60a mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb31e062d mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8af0570 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbeb1d108 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0843520 mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2774da2 mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc40b0d64 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb1335ed mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd6faada mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdf8dcac mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd02008f1 mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd107fe13 mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd54e88f1 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd716e13f mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7bfabfd mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd94a9e1b mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda7b7b73 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb43ded0 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb9feb66 mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe230e4e7 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe233c022 mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe3eb74ac mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe40bc218 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4d38b0c mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe528d8f4 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe53280b1 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe74459f6 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9c1e778 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf114ff9e mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1eeca40 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2263ea5 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7816df7 mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf86bc7fe mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8ff66ea mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbc87dae mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd1b92dc mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd5aebd5 mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfdb60eeb mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff05e262 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0xa71b6a12 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ea3befd mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x17f7ce63 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x26d9476d mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f672008 mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x56e0f8b9 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x57e736af mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ea9a1b8 mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x7cc7a4ac mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x83dbbfe0 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9f75a1eb mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xaa600760 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0efd5c2 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb11b3935 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbbd7a457 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbdac1afd mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbdc38d34 mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc808c5ff mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd5550cf9 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xeca0348c mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf24b1945 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff276ed0 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x5bd1137b mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xe0b550af mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x0214a8ea mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xe1fd2b89 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x018aa3a1 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x025988b8 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x09ede257 ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x101d734d ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1b9c7732 ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x1e387a47 ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2020ec3a ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x23b1bd06 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x283af0b3 ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2887d57e ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x299f1cd5 ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2ac4f9cd ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3aaf9aae ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3ce49806 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x45886d02 __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4908ed71 ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4ac9d2cf ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x52c28a07 ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x574ce0c5 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5940019a ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6173556d ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x61df6aed ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7943b1a2 ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9ebc0988 ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa078cd5c ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaa27b54f ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaa93acc1 ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb08e55c6 ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb26ab07a ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb800e37b ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb95e7142 ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbc60ad3b ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbc61aed0 ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc286a375 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc8f78dd7 __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcb55751b __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd20a0bd5 ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe58f9999 ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xeb49b93d ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf5e169d6 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf89568b0 ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf92581d2 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfa2c617d ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfd25c6f0 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xff23e3ab ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xffb06647 ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x73d6c813 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x7f64b038 qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xee871068 qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x09edabc3 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0d90c7e5 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x43043f34 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x709c6b8d hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc864d6b7 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x08ece120 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x179da966 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x19e02d3d mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x43982185 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x49739a30 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x49eb89f0 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x7ebddd13 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x8c68b332 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xa86b3726 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xbbdab89d mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x5ac6ab4f bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x8e6b892d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa842e081 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3ea28fea pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x45cd0eb4 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xcd9e30bb register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x76ed6692 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x182e4823 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x3776e9f0 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xabef6faf team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xbb07d034 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xc12e62e1 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xce1404d3 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xd4bdbfdb team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xf2fc1854 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x28235dfb usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xfc1254ca usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xfdae244b usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0d0e179e detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1b2cca97 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4b6d14f0 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4e9713d1 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x544ca75f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8c431aa0 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa7e5c1cd hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe1f9fb51 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf2ddc01a alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf7e526e7 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x79696d91 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1cd236fe ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3c229edc ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x54c7f3ff dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x811df6d8 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9ec5cc57 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaa1fcc3c ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xca6c3aa5 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xced743dd ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd194ce20 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe0a733f0 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe84214b9 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xed2f4b8f ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x05c69bee ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x05feb519 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x069cf7bf ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x096b7d97 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0e4ef241 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f55b716 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x14609d2c ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1548df29 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1d692e0d ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x24b3a2c4 ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2b9ee8d8 ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2be61662 ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2d9871fa ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x39be9cb4 ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3cf22271 ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3d58c87e ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x44164046 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x476f09f8 ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5d9f5a90 ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5f3be661 ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6458fe4e ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x79d17fdc ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7b6d4b19 ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7d78ed49 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86c9f0e7 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86f00314 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8d7e12d2 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x948a04de ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x958c9a77 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x972ff463 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb0cf4288 ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb3cfd481 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb41ce02b ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb7f9c61b ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb98dd7b0 ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbbd69ed4 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc00dd22a ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc0810b52 ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc6f26ff9 ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcc2ba11a ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd4f3d0ec ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd71fd0d9 ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd9a13b59 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe0266388 __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe6bb42a2 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf36373fc ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf8b8c1f3 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfd6f1af6 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfe26754a ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x0b56056b ath11k_core_get_hw_mac_id +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x8a89fe27 ath11k_dp_service_srng +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x08b00ac1 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x26d588e1 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4f533464 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x807dbff8 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8ce23a17 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xae28eac8 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb706d095 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbf20db7f ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdade5d74 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf70d09ea ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfe9f3092 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08205520 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3970f31c ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3b439891 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4afdf362 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4c73dd6d ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d18f225 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x50f4e9c6 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x60b5669c ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x62a94f1a ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8454412d ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x91e6fd10 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93af9385 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9a5dca15 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa1188a7e ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa799a73a ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb131a5d3 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb5085bd7 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb8a727c0 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcc9db217 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd476f379 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd7adb61d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe9625752 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xeeb4fb8d ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x001c6e02 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x013b17fb ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x015734a2 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0206b1db ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04bb379e ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0570aea5 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x073df19e ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a675c3e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cb25549 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x145139b2 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x162a9dfb ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x169f3e5d ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bea26fe ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1eb3f53a ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22f3104f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x255cf4d5 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25b135ae ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26e2930e ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d3f628e ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2eaf9dee ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x32198231 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x328e72af ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3490b6b7 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34dca5aa ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37d3d80f ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37d51dec ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38f4937e ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39b7f657 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3d7cb91b ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3eb7042f ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40c57525 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45a4fbc2 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52c72fd7 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x530a1980 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54dd7cb8 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5573c9d0 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56633eec ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5730d3d1 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5bdebdca ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c189d81 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6110e812 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x622bce0b ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64291699 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6540f371 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x669252ad ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67e78bbb ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68e9df79 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a7f8b70 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cda7041 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73ef610d ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x749bd891 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7719c1d9 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x783cb876 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x799e99bd ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7cf2a955 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ea39f3b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8452f31e ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84aeaec2 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8dff2f60 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e356dcc ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91fe5fd4 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92cd9ff9 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9643bbc6 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98978dc6 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9db6e36b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9eb1678c ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0c0a00a ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7af08cb ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa971c9e0 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa98f6014 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9acbbef ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaba5e943 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaba82fa1 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaef1c449 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaff7d9b3 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2778c3f ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9b4bdc9 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba4c33b8 ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe4e0f58 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc447a8df ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4cbaf3b ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcab00a84 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcae55810 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb185630 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd35f4b8d ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd52adef4 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7293f1f ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda0c7ffc ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb050a0b ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd0ac0f4 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdffe7ad5 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe137f700 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe499cf46 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5dcac88 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6f74739 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6fa5061 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8880242 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9b7248b ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee15ec66 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee4825ad ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee65b844 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeef368b9 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4767fd3 ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf74c02c0 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf84c4fde ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfad9cc32 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff339e96 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x32b691d8 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x7260f790 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xdef72909 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x3b015b26 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x4d6719fe brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x5f40eaf2 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x8507bec7 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x948afe4a brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xafd0ba05 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb00bd054 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb0a866f0 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xbbc98555 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xe37dc9d6 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xe50cd8d9 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xf2c5d743 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xfe63307a brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x09034b66 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x137c5ebf libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x242ee96d libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2d608592 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2e315a4a libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3120349a libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3258c85f libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3d55ec38 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x424af911 free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x4c95502c alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5b1e52f5 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x652735a9 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x6e432009 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xb4f00e30 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xb5864536 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xc31acc00 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xc9ec6d5d libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xcbe844b9 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xd7c1d4ea libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xeee482fc libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x021308cc il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x07be24cf il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0873bbde il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0a072f86 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x108b5fd7 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x10e77a06 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x11003000 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x16de3cc5 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x18b84858 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x197ede90 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1c8c0cc9 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1c997b08 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1ed32da4 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x23819eef il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x26d94cbe il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x28351a7c il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x28d686cd il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2b1aa687 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2cf8386a il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2ec3b78a il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x370121f8 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x38410b89 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x39d40783 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3bb675b3 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3bc5159e il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3dd74418 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x40d83f7f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x510c8f34 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x511f9ae5 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x538c86bf il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x54f3fa68 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x587b2634 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5b24fa34 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5ceef26e il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5d6d8f24 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6e54243a il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6fce17c0 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6ff39ce7 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x70847ff3 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x70b25820 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x72eec22b il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x748e842f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7addc70e il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7f442466 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x87a05a11 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x89281a44 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8bf4a808 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8c815def il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8fd3dc59 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x911e3b39 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9163458d il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x94414702 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9674073f il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9826ac8d il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x994db7e0 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9aab5bd4 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9d6559ac il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9fc2c51b il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9fcaae8a il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa3bea54b il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa3d446ce il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa4662257 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xab4ac853 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xad60b427 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xae37ffbd il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb2aa953d il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb37a9427 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb3fd89a3 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb4226ae4 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb51ec510 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xba1dac9f il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc04adf2b il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc2c0e96f il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc757e369 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc8852d43 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc96ea9b7 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xceb17fdd il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd04f390b il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd07967cf il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd8a89f56 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd9bf32a3 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe0876545 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe28b767b il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe3f1c248 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe545b8a2 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xed6250d7 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xee9cfbce il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf0ccf304 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf20f4bb4 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf222c2a8 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf230ad39 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf4bca40e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf5f83274 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf6bfcfe0 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf75c4643 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf75c968b il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf8f1a40e il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf97aab34 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xff63c0e7 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x33c2544a __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa44e2870 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xab9db4d3 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x08a1f7f7 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x1717a39d hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2b184993 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x30031dd8 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x30f8313c hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x4ca7dc6f hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x4e2a233a hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5a2afa25 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x60ed562b hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x61d5539e hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x805cfd24 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x90c8c025 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x95d8f78e hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa58937d3 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xade8e055 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb8539fc1 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc67b5975 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xd2a31513 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xde944294 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe1246220 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf092826a hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf8807a6b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xfcf7210a hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xfd5d981b hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xfd8385b9 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x0eb2477f orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x152a11be orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x1691a915 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x279c276e __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x33753176 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x337de15a orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x413cb25f orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x510f83d1 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x66d20e45 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x8b525cb8 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x8d21100b orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb19745e4 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xc7b2cfe9 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe007728e __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe0b8aac9 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xeb4c9831 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0x09396ec3 mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x1a7d55fc rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x01ba8ae3 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x028a4956 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1071353a rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x126ce97e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x1270b5ee _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x238bbec9 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2c0396bf _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2deefb29 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2ffa5224 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x33ed247e rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3746566e rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x39c2767d rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x40377476 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4494091e rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5521e422 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x58e76c2a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x61cfe229 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6525c681 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6bc0885f rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x746a0c44 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x769005ab rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x865a9ba8 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x899acba2 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8ab28403 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9089df81 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x94b4f456 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x99d2eb15 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa8b14821 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa9c8016f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaba4885e rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xaf6aa6ae rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc1f7cb51 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc49bd65c _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd7697811 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe17b0115 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xebca8abe rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xeea5804f _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf0d86cf0 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf1e4bb2f _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfa649190 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfc862d8b rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x0156d03b rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x3966c3b1 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x65a97b15 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xa833b18a rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x25c7065d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x2ec197d4 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xa5bda1db rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xbdacd0f6 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0194bc77 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x030f7c1d rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x09f7e56a efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0c1f37f7 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1c7277f6 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d2fe367 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3275bb8e rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3eb2fd1e rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4b430e42 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5c412526 efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7ce1b2d1 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7e0056a2 rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7e28b4e8 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8b83a68c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8cf22fd0 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8e39bfa8 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x977be49d rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9bcc3678 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa27eeac0 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa3035835 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa9ec829f rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbc4d44fd rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc1980a5d rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc29bbf36 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc7f58f81 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcea77667 rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd5873508 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdb6a4ad9 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xdc82cd1b rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe15ca084 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf18ae510 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8f840c0 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0x4988c417 rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0xa268bea5 rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0x4daad59b rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x001e8c5d rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x013cb6b3 rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0329a71c rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x04d1c1b2 rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0b000b1e rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x15af9f6b rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x164f7fc9 rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x19b41408 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1f92ee58 rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x237336d6 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x23da3ddf rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2e6f0f58 rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x361a87db rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x367cd74d rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x37d9f3a4 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x432c6ba4 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4dc1e3f5 rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4f5b47b3 rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x520478c0 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58bd021a rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x607a5138 check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x62ceb0d6 rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6a3c0324 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6e930bae rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x71a54ddc rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x738b1d37 rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8727ee6b rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x88d3620c rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x90d97ad1 rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x995979f3 rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9cb7d2a3 rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa3d09a22 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa493fd85 rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa8ebe73d rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xae351e20 rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xaf397472 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb0dfebbd rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb266bbef rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb6003bca rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb70845a5 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbc98b55f rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbddc0e8d rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xcb460fb4 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xcbb44966 rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd468d697 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd8d15321 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe0453ec8 rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe6115fe5 rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xeed54d5e __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf92166b7 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfc78dea2 rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x1c0f64dd rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xb20fb8c2 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xd2b82f4f rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xe3708324 rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0xe4fbde5d rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x3c215367 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5c171ae4 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x62990a4b wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xac86220f wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x28621988 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x76e26f5d fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x8b57a12e fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x75d4368b microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x99a147b4 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x51205ae3 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc733b463 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xfe28d1a0 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0x60bc050e pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x777abfb2 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd529dd8a pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x6c5f171f s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xbf92a190 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xf1ae1bd3 s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0188e600 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x232bff27 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x23863525 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3c1f39e5 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x43e9c87e ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5d331e34 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8530c971 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xca443478 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xda444be9 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe420efd8 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x036b2bb7 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0c87a4de st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x136f0e72 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x138b6e0e st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x188d658d st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2bf4b756 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x52dca55c st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x686a7e4e st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7865b636 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x79ece9a2 st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa228e0db st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa2947885 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xab9d1fb6 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb38a3fac st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc38afa11 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xdca0a8bf st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe8dd869b st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe925c406 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x004437f5 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x12820430 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0x1e7c63db ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0x2b5e366d ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0x5ca7e458 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6cc76727 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0x7c2bb640 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x81cf6c3f ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0x8eba83ac ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x9c88b30d ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xa43b47ff ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xb1cdb2f5 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc098587d __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xc4293be3 ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0xca7e3ad0 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xd0aa7505 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xdcb09991 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0xfa0ebb21 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0xfb0027e8 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xff067159 ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/parport/parport 0x09065bd2 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x10804598 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x111249f6 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x1199460a parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x219948c3 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x23d751b2 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x2a3a2dd6 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x2c6f1f16 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x2cd1eaa1 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x3348d24b parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x33b31e25 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x3d116209 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x4af5df76 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x51940656 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x545e9414 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x595a300b parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5f6dafdb parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x60118471 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x6a2b393c parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6ba09c3e parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x80ab6a8c parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x8aa54408 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x92fe1bc0 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x993070e6 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xabbe66f2 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xbf97e77c parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xc5c6c1a0 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xce60ea89 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xd666eb46 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xeb821d54 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xefcb8ca5 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0x1e67054c parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xd86e1bc1 parport_pc_probe_port +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x1c70f361 cros_ec_handle_event +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x4bb1f6aa cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x5a20dcd9 cros_ec_suspend +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xaf2bc023 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xf33b60c9 cros_ec_resume +EXPORT_SYMBOL drivers/regulator/rohm-regulator 0xaff7fc4c rohm_regulator_set_dvs_levels +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3330a1c8 qcom_smd_unregister_edge +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0xe3c24096 qcom_smd_register_edge +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1204fca4 rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x17b078ba rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1d6acbe1 __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x3410f039 rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x38d446d7 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x3f479cd1 rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x518192d0 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5c38ea75 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x6dac61ab rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xd9740d5c rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xe7bf47f7 rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xe7c3be43 rpmsg_register_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xeb178f2f rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf891e056 rpmsg_send +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xd2d5c5e5 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x0cf9dd9e scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x42789342 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5efeb3c3 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd521f564 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x15ce72d4 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1b83f96a fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x408677ed fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x451f59d5 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x500a3c01 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x53891948 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x54bc8565 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x760bd8d9 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa3847c6e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdb1b49db fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe2ca5806 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x01439070 fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0235b0d0 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b44e718 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10e92195 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1532ee50 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1948690f fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f75d339 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22a5bccf fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22edc8d9 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x271c4b6b fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28911b31 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2925ebbf fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d5e0cbd fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3109157c fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31541b1e fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x32038d92 fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x350d5c1c fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37ec2799 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b679d0c fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b6c8bed fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x465c4394 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x49c2d392 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x51a8ebc1 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ab41f0c fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5e7781a9 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x608bc09e fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64d4576f fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67348ad4 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70bbc0dc fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79439204 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cc341a4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d4bc10c fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d8aa0f1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84148663 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85deb9f1 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c2c56eb fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8dd43d14 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x90ab4e6d fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9924828f fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa14e00d0 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6448725 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaac0edeb fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae74bbe0 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb1060083 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb10d78cc fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc61c47f fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf2e5656 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc56a6f67 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc623d584 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcad12949 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc814621 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb9626b4 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe32b2e7d fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3af80bd fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7b44f4c fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebec5b9b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed0b3d8d fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xedaad876 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef20b2f1 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x074f4607 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6996bdbb sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf81761de sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x67a73810 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5e68d73f qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5f726fab qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7299fd11 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7f4dbdc1 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7f514cf0 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x82560357 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa4c74dcb qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa8756e50 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xadfce5e7 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe5696aa3 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf2c1aff8 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf37d35da qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/raid_class 0x6a47b43f raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xbcf2c7b8 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xcdf54239 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2320089d fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x479d1a97 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4f008976 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x511c7f34 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x55326626 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6d5388f8 fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7add6c52 fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7ffd1a50 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa7b497b5 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb7d05f35 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd0715a87 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdfc4d0d2 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe043f5f4 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe29db223 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe81a30b4 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xed86abd4 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04639691 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0833973d sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0d495012 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0da636e7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0dc42a5b sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1a9c67d0 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ab4966b sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2950aa94 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x352bfdbb sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3773171a sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3cb9a4e9 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x417028e7 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x53fbf417 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x58e96f48 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b8effd9 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6132889b sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x61dd04e4 sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6aa48181 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70290656 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x80d6f5c2 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ac0dff1 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa4e7daf9 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7659499 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbcc2cfbf scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc7e7a44e sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc929fa7 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe90c5068 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xec839ad0 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfeefe272 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4a838458 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9f3418b2 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbb8a05d8 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdc15b315 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe26d299a spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x1842dfd7 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x537326e0 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6560fad1 srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x683d0b23 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb897c003 srp_timed_out +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x0aa626ef tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x3c8d1f16 tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x220954d5 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x24b49cc9 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x48903a8e ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x606e3146 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x66d3e0ee ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x8a3fa0c1 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x8aea6596 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xf08e3838 ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xfcbf0ac2 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x1c194e69 ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x361cd055 ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x134db152 cmdq_pkt_write +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x52eb8e83 cmdq_pkt_flush_async +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x532db664 cmdq_pkt_poll_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x5ab2e662 cmdq_pkt_write_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x6d61d952 cmdq_pkt_flush +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x782df519 cmdq_pkt_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x8684e564 cmdq_dev_get_client_reg +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x8b2c8efe cmdq_pkt_wfe +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x91bd54f2 cmdq_pkt_clear_event +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa7655345 cmdq_pkt_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xce144008 cmdq_mbox_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xe8846f22 cmdq_pkt_poll +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xf5361fd6 cmdq_mbox_create +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0x8b0a1f5d of_get_ocmem +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xc53d76b1 ocmem_allocate +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xf9b05967 ocmem_free +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x1c76ea4d pdr_restart_pd +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x432975e6 pdr_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x47b2ed49 pdr_handle_alloc +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0xf618ca5b pdr_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x1544bab2 geni_se_clk_freq_match +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x1bbba9e4 geni_se_rx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x24a33e13 geni_se_resources_on +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x3addf5f7 geni_se_init +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x55e58a9b geni_se_select_mode +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x6b868b05 geni_se_resources_off +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x8f28a040 geni_se_config_packing +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x9ee12974 geni_se_tx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xab41e2d8 geni_se_clk_tbl_get +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xb8cd993d geni_se_tx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xdc8e8279 geni_se_get_qup_hw_version +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xe748f67f geni_se_rx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x079a8ea0 qmi_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x133168aa qmi_encode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x21ce5888 qmi_response_type_v01_ei +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x3389dad6 qmi_send_indication +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x458feda2 qmi_txn_cancel +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x4cf5bc6c qmi_send_response +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x838a463c qmi_add_server +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x87398c3e qmi_txn_wait +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x9cb2bfd0 qmi_send_request +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xa2ff1ede qmi_decode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xcaf2ea8e qmi_handle_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xdbf25bad qmi_txn_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xe5a8343a qmi_handle_release +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x46bb046c qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x63ef36e3 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x694c56fb qcom_smem_virt_to_phys +EXPORT_SYMBOL drivers/soc/qcom/smem 0x932eb0e3 qcom_smem_get +EXPORT_SYMBOL drivers/soc/qcom/wcnss_ctrl 0x6b345c64 qcom_wcnss_open_channel +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x085d6187 sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0e8b0441 sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0fdf4af6 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x102e634b sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16145ec7 sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x25c17d60 sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x445d9032 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x44c70886 sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x6063275b sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x7984b6ba sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9a438406 sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xad4597bb sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xcad4aec4 sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xcb5558df sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xcceee499 sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xdbbcc472 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xe9c9426b sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf46e29c4 sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf6735232 sdw_read_no_pm +EXPORT_SYMBOL drivers/ssb/ssb 0x01169194 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x05b6d3fa ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x15ec2f2b ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x3665c6bb ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x710dc443 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x78be198f ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x7af1aacc ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x841f28b5 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x975a0469 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x97efbc45 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xa4a8bb50 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xa77a2ed8 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xbdd2a76b ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc6aff3c8 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xc9d8444e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd5a578d6 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xdc78acf3 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xddb9bd0c ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe2672393 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xf29ec4d7 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x00a8a8be fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x082ad0ab fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1308d84d fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x33ed1b7b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36fa66b5 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ebf75d3 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4c224c9c fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x553c0463 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5d24b317 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5fddd0c5 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x602552f5 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x66f39873 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6d1a7b52 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x723d986b fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x75bb5535 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7c94c980 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8629c1c4 fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa8fb9c85 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb0ec4c09 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbde222b6 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc5ab77e6 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcbcaafde fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd382a22c fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe0684ad7 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf07b2d21 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xd65c46ad adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x5f753ff2 ade7854_probe +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x0a5ea71f nvec_write_async +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x32996b65 nvec_write_sync +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0286b21f rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x054dc7b8 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x085ed6c1 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08faa62c rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0aa9c45a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ccc6b02 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0efb09c0 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cb0fc9c rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x216cc2b5 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2446d8a2 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b140219 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bda9e94 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f20e735 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3175e08c alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31c0bdb7 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x357edfaf HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37f03868 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3dbf0bf5 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e65fc83 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x41971a69 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4499002e rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4efab152 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x537737cd rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f584eaf rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x602f1a60 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x62227274 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x65805f52 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a138ce0 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a994641 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e730a0a rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81023ee6 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x889b4fa3 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8baea4a4 dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ffd55d0 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x97e93b9f rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9de60497 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9e827765 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9f32a92 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb525e0f1 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbb031202 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf752d74 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0a9e15c RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcaeca4f1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2df1f6a rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4d074fa rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd74078da rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd903dda0 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee33cfb1 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf808b7dc rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a0f312b ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13c039f3 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x147176e4 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1535d372 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16ce8dbe ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x170896b0 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1cadcd70 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x270925df ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3805e3ee ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c6fc352 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48969534 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x489c3e2d ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a639260 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x512942de ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58cf20a3 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x609081d9 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6303587d is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e7338a8 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71d82d7e ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73f4af8d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74e3f4a3 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7de836a2 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81fd68d4 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82cffb40 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x866d0a75 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86d1ce62 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89ec8b23 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c56318f ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d90fdba ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f4821e7 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90e75008 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93eeba75 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99681ce3 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa347ae35 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa823b7c8 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8b4abcf ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab98f4b9 dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad466606 to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf19b4bc ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0b6cd25 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb0be0e7 rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbcf6216f dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc754e5c2 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9fe0226 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd283619e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd83fb9e6 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd63dfa6 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe41b0bba dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe50ea1c2 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe828423f ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe83348fd ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef9a98ff dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8a969db ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc5f04a5 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd92b006 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x00866250 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x08e6d3cc iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0ef82fd3 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10337884 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x193519dd iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1e16e931 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ee1bb2c iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x35ad0bce iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36a848f6 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x385e7848 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x42ed12c6 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x457c5548 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5782cc44 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5a76ff3c iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5c4c2a24 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5cfde078 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6269af7e iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x62aabd44 iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x64491b99 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7054e366 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x787a253e iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x92ac7199 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9719e3c8 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa1c47bf5 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa241fd99 iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa4d3dd48 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa8198446 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa9d85cd7 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaa1b50a9 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb2fc5bca iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd41b75e iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc8d7e0e4 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd1045df2 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd45d9d15 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd93d5656 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9797def iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdab47351 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe04c5bf4 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe51a5e67 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf1360a2e iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf33e3b02 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfb2f68e4 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfc0a0b4c iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfda69e5d iscsit_build_reject +EXPORT_SYMBOL drivers/target/target_core_mod 0x0047f6fe transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x03ce6717 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x06837ec8 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b09b3e0 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0cc9e3ab target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x18c2edc4 target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x1acbb1b2 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x20c2c69a transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x223e7d90 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x23773d3b transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x24592d87 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x2508f2a2 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x262dffff target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x29525b55 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e43e066 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x38f994d1 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b81d3ea sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c6aa66a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x405635ad transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x413c41af sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x41f2b5a7 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x44e6c711 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x45922a77 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x4951a0c3 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a08a903 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a54e5a7 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e7513b2 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x527d2c73 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x545f820a target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5460d056 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x570164fb passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c2ad8e4 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d380f28 target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6161a201 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x61dc4e6b target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x62a025cf transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x651fe3ed transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b42b860 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bebf245 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x79b4042e target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c0a0545 target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e30433a target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x804160bc sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x8689a5c8 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x889accc3 transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ed5c1cb transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x96393331 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9670aa93 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x99ee67f8 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2871d58 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xa71623d6 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xae636ba3 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf9d837e target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5bc4f3c transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xb7a83cb2 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd7cc866 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0ca0204 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc356f42d target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xc42b0389 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc583fe77 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xccb6e7aa transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcce4b9cd target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xd1f581c9 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5591b54 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xdcc47a6c spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe05f7457 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xe42d224b spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xe68a5cd5 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xeaf888b0 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb785171 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xebdb08e3 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xf17b080f target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8ece579 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xfede8835 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xffebc681 target_cmd_parse_cdb +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x02750968 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x1793dc96 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xbbf2fcea sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0e0d98a0 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x17bca229 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x210df390 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x278ca318 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2a89343f usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x61aa3d11 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7397becf usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7e7c82e5 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa44c6e9a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb44abd03 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xba314f6c usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfe0ba0ae usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xff030ac4 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x0a75af9c usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xa77de977 usb_serial_resume +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x02e6440e mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x0b8d2f8b mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x0ccbfccc mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x1e556cb0 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x29c2491a mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x4727e341 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x7b738cc6 mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x8cfd066c mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xdd0a02e0 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xe8b1d70c mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf9528833 mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf996bcb8 mdev_dev +EXPORT_SYMBOL drivers/vfio/vfio 0x05b8cfda vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL drivers/vfio/vfio 0x0beb34b2 vfio_dma_rw +EXPORT_SYMBOL drivers/vfio/vfio 0x0f655355 vfio_info_add_capability +EXPORT_SYMBOL drivers/vfio/vfio 0x1475db81 vfio_register_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x51f16cdb vfio_info_cap_shift +EXPORT_SYMBOL drivers/vfio/vfio 0x73ec81d2 vfio_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x762badd2 vfio_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xfe91b0b9 vfio_unregister_notifier +EXPORT_SYMBOL drivers/vhost/vhost 0x963c858e vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vhost 0xf2e09dcf vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b2fbd56 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x98a7e2b2 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0xa8a5b2a1 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xae7c3cbf vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbc172ecf vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x0b9a67db devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x68c6cd29 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa74e400e lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe044d98e lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x019707e8 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x41dcb827 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5d6e47d2 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x64d744b7 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd341828b svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe526b657 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf912e3da svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x2a955d07 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x2f85092c sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xc6899e2b sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x56ddf13e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x64e720de mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x634f84a3 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x9df849a0 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xd8e0016d g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x05f48fdd DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x16dfbbfb matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x792f4a0e DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb51aa2b0 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xf8276aec matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x3fe8c3cb matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5099637e matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xa41fdebc matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb1e80004 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xeae7aa8b matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x7b739fde matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xf657a773 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x00a8c10e matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x2c442988 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x34f6240f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x973c7987 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc0ea10d0 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x01575b17 dss_mgr_connect +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x03005606 omapdss_get_version +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x0a8e13d2 omap_dss_get_overlay +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x14517904 omapdss_output_set_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x156bfe43 dss_mgr_set_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x1c12e0e6 dss_mgr_register_framedone_handler +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x1d49ce4d omapdss_find_mgr_from_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x2423d741 dispc_ovl_setup +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x299448b6 omap_dss_get_overlay_manager +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x35f0bf91 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3b9dd3bb omap_dss_find_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3c803531 omapdss_default_get_resolution +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3d36d54d dispc_mgr_set_lcd_config +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3e9be9ec dss_mgr_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x42912b0c dispc_clear_irqstatus +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x45d74ef6 dispc_mgr_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x4bd67a8d dispc_write_irqenable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x4f676649 omapdss_unregister_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x55b1c332 omap_dss_get_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5c761004 dss_mgr_start_update +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5c866caa dss_mgr_disable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x628c0482 omapdss_register_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x639ee0b5 omapdss_unregister_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x66cdd3c9 dispc_mgr_setup +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x6b1a3090 omap_dss_ntsc_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x7057c4ea dss_mgr_set_lcd_config +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x7064a42c omap_dss_find_output_by_port_node +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x7331f0a3 dss_mgr_disconnect +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x827143a1 omap_dispc_unregister_isr +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x86581300 omap_dss_find_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x87fdb051 dispc_mgr_go +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x882004ae dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x8a13a64a omapdss_register_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x8f1922b3 omap_dss_get_next_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x95dceb40 dss_install_mgr_ops +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x967cb4e8 dispc_ovl_set_channel_out +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xa13d27f5 dispc_read_irqenable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xa4f6a175 dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb3099d36 omapdss_default_get_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb3ed5aa9 dispc_mgr_is_enabled +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb7f94a15 dispc_mgr_set_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xba8ddcea dispc_mgr_get_vsync_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbb300900 omap_dss_get_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbe0d4752 omap_video_timings_to_videomode +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xc152a375 omapdss_find_output_from_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xc45105c3 dispc_mgr_go_busy +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xcc197296 omap_dispc_register_isr +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xcd730805 omap_dss_put_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xce466b8f dispc_ovl_check +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd70adbc1 videomode_to_omap_video_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd8ed186b omap_dss_pal_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xdf50ae1e omapdss_output_unset_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xef3b2795 dispc_mgr_get_framedone_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf4f63234 dispc_read_irqstatus +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf9427374 dispc_request_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x18126c7c w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe10f7b61 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4513ae12 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4ea1052c w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x005179dc w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x997fad34 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x9ca629bf w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc0897864 w1_add_master_device +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x1739cefd bd70528_wdt_unlock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x4bac7c65 bd70528_wdt_lock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xe372564d bd70528_wdt_set +EXPORT_SYMBOL fs/fscache/fscache 0x024a990b fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x0308c04c fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x059a00d2 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x0bf226fe __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x1b1ebe44 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1f2676d9 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2089bd59 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x271b91ac fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x34d35af0 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x36df92e9 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x38592ec6 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x4a7a722d __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x5b787a9d fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x64d47956 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x6a2a948d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x769dfcc3 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x78e1240c __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x7d702acf __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x7e3ee75a fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x7faa9417 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x80db0ed7 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8743585a __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x8afc55cd __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x8d87edab __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9385ce03 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x96527d75 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa302d0f5 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xb079ab5d fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xb418eb57 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xbb270544 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xbf557778 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xde628ca5 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xde867e4f __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xe493c0e0 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe5d17b52 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe9092726 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xeaa83fdb __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xeba5a2ae fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xfd15dd49 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xff99163c fscache_mark_pages_cached +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x36f1d97c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x4f9481c8 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6dc74f84 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0x7755b42d qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xba64ddde qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xecdbc352 qtree_delete_dquot +EXPORT_SYMBOL lib/crc-itu-t 0xa2048e95 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba95c5c0 crc7_be +EXPORT_SYMBOL lib/crc8 0x5a742e56 crc8 +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x246ea205 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0x2cfa6ca1 blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x23eea787 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5519169b xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5d776412 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x64375eb4 chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x738d84bf xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xb1ec48ec chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xf0dbf797 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x1a4bb846 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x4f125ebc lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x4cc636f2 LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x765fd165 LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xd02774b1 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x067fa594 objagg_create +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x1ae3d010 lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x30900af7 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x3a81b8fd lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0xd5b777ff lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xe10c5bf8 lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xeaab8590 lowpan_unregister_netdev +EXPORT_SYMBOL net/802/p8022 0x633d42e6 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xf827c2ce register_8022_client +EXPORT_SYMBOL net/802/psnap 0x943da85c register_snap_client +EXPORT_SYMBOL net/802/psnap 0xa8d4483d unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x05c64358 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x0969cee2 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x108e3b57 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1916807a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x1f81a129 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x1fda2268 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x21e00b11 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x22a05bbe p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0x2734214c p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x3629289c v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x39d68b1c p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3d986cf9 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x3fbb31a8 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x44405213 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x460dd228 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x46b0fa8f p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x4c1c47a1 p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x4fce9726 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x51bcb96a v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x5202920d p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0x5d385173 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x666d99f6 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x6a23d287 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6e265925 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x721b7804 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x73300f11 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x73d5ed38 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x7b514ce4 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x800e8867 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x80bbc6fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x812f61bd p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0x87aa4d5a p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x8cfc4f42 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa276b4fe p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xa57f9823 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xb24f8ff1 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbac55235 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xcbeb6888 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xce01338d p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xdcfa0717 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdde30637 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xe1f90088 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xe2d8ca10 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe4a9f3a7 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6676c18 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xe6b1e55e p9stat_read +EXPORT_SYMBOL net/appletalk/appletalk 0x2d8b3542 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x36fd1747 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x4f9a17ea aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x6b539956 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x1cda6648 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x2730eda5 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x293573d9 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2a1393e0 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3b2795f6 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4fbb3f75 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x6b9a3871 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x7bf98978 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x8a2b361d deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x91b87cf5 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa26f9337 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb13cd4fc atm_charge +EXPORT_SYMBOL net/atm/atm 0xd83d0845 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfa9b26bb atm_dev_release_vccs +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4f70cb86 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x7601ac8c ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x7caeefa2 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc313545e ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc69670c2 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc79bed18 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xdd50a91c ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xe6116771 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0059bacf hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x007dd792 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x132c189a __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1654f865 hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a588042 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fda102d hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x272d08e4 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e27b42d hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x332b67b1 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3552c9f9 hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4fd912e4 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x56f0bb63 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c5c2fed hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x667f6f46 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6797f645 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67a75a3f hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x687ad9c4 hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6bea54fc bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70628563 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7114e343 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79fb535e hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c091480 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7ebcf6d6 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x801a80ee __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0x82741e8e bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86af8b08 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86ffe292 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x932a5002 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98d477e6 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9d5e9e71 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3d05610 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb7bedfaf hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd3e8276 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0f0cc61 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc189098a hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc1cbdd49 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc29a9fa8 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcecc4a1f bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcee6d88f bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe1e4e4c6 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeed04b2a l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef9578a8 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf7989b86 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfabbd89e hci_conn_security +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x38150623 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x47462016 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd6dcd546 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2460fa16 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3d45663b get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5bc619e8 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x74ee0e7b caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x92356058 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x0302776c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x8a0cec04 can_rx_register +EXPORT_SYMBOL net/can/can 0xb0c0e596 can_send +EXPORT_SYMBOL net/can/can 0xb532882c can_sock_destruct +EXPORT_SYMBOL net/can/can 0xba80b16a can_proto_unregister +EXPORT_SYMBOL net/can/can 0xe5ea9c09 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0012ec15 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x02947383 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x0460a8de ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0x085085b6 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x0a3c60e0 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0x0e820695 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0x1077a798 ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0x11df1eab ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x12fa0093 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1420b61e ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x150e956f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x15cc2c6b osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x15f4c64e ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x1cba3f20 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x24d90f3f ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x26a0f7f2 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x2886ead3 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x2b002fc5 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x2db5a837 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2ea4e2ea ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x30a67f91 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x30e43a49 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x317ac0ee ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0x34f18ae7 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x3522979c ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x36afbb45 ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x3acbf033 ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3d0f2a7c ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x42a8333e ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x42e04704 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x45044d94 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47075eab ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x48051272 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x50b33d21 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5433190a ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x56b92656 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5b5dd889 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x5bd05069 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x6038df48 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x643ae8a0 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x644b6e50 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x64fb6095 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x65f1a692 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x688e36fe ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x6962154b ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x6a4dc793 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x6a721f3f osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6be07a04 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x6c1f2ecf osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0x6e3b0544 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x6ea1c8be ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6edb8cb7 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6f175bd4 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x74104cb5 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0x75ddc7ae ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x7795263c ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x7a7a7f3d osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x80c20f6c ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0x83e20fa9 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0x8693956b ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x8bd5050e ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x92049e57 ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0x94d5b4b9 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x98520176 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x98643d9c ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x99adc06a ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0x9a3727f0 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x9abe2180 ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9d07239b osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9e38a884 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa0f693c2 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa6006a89 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa80dd098 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0xa9517ab1 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xa9fccd0a ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xaa6cfce2 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0xaa761dcb ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xab012567 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xabfff131 ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaf533b21 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0088121 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb1c9d00b ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb55c0802 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb72c49d6 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0xb811d9c2 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xb8431912 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0xbaf56101 ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xc20c8ca8 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xc817721a ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0xc85b4392 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcd74999c ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0xd02a911e osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xd25116f8 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd25fe496 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd58339dc ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xdc6b0d29 ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0xdd1ecc3b ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xde6fdc20 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfab23ea ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xdfd6dd32 ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0xe0b105fe osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xe190ed1d ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0xe351ae6f osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xe3667017 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xe9c24dde ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xec6fd607 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xee48ded4 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xee6efcee osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xf4034844 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xf562aab7 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf6093114 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xfbbf725a osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xfe9f3f94 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xfef31277 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xff012122 ceph_destroy_client +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x12a6360c dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x283df67c dccp_req_err +EXPORT_SYMBOL net/dsa/dsa_core 0x1eb72e6a dsa_port_vid_add +EXPORT_SYMBOL net/dsa/dsa_core 0xe0b8922e dsa_port_vid_del +EXPORT_SYMBOL net/ieee802154/ieee802154 0x74688582 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x75f22b7d wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd9f01a27 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdcd9eb5d wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdd978d33 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xfb26a9a4 wpan_phy_new +EXPORT_SYMBOL net/ipv4/fou 0x19741ae4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xc78951e8 __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xea81ca97 __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xff1adff3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xe7a30875 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6b13c7ce ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x84285f28 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x84a9bfb3 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x886d7f2e ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x327a1028 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xed5a78a4 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf408aca1 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x59245295 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6cb89f4e ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x95f4ffb4 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb1d89f90 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc8d68a42 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/tunnel4 0x53ed020d xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x86dc7df8 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xee8f3f18 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4975c940 ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5c88e780 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x649823df ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6a31078f ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x78d0b978 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9527c3eb ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa40384d1 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd805a464 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe9ce2772 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x07895843 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x2effc21e ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x559164ff ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe13c21e5 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe6dcc8af ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x6d2d716d xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xe90e35f8 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x2a1e9c31 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x5645fe30 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/l2tp/l2tp_core 0x24c7f2d0 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_core 0x36a893ab l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_ip 0xf9b7e343 l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x03923811 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x0c59c368 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x141b6e6c lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x421d9a6a lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x51e76b54 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x85fca043 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xa4e8b751 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xc9e863d4 lapb_register +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4274775a llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5302d8c0 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x84a23815 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xb0464cc2 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc77b80f6 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xd9e7dff3 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xf26042d8 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x03f4a5f7 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x08bb2a33 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x0cec2124 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x0dff8607 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0x0f2711b2 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x11017fdd ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x12a4027c ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x1367cd80 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x182b7470 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x1985716a ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1a771b34 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x216ed642 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x234cfda0 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x237a8b52 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x27237f3f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x2c47c595 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x2e005aa6 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2f60da68 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x304953fd ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x3075264b ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x30e5630b ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x31f8195a ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x3895f034 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3bdd38aa ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4313a602 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x44d8b05a ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x4750f795 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x480a6d7e ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x4a1dd82f ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x4afb1e0d ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x4bf12a35 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x4d8aaa97 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x4ff471a2 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x50ccdf19 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x51f9bab4 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x5835f77c ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x62a5f876 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0x62d0c40d ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x62def733 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x64ed41ed ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x650b5e9e ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x651b9866 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x67d531a2 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0x6cb1d4ec ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x6d488cbe ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x71b0926f ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x72c807e1 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x73c4d197 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x74c81f4a ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x779bea13 ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x7ab577d3 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x7c7aff36 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x7f450bdb ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x81f16d21 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x86da0ae8 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x89f83aac ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8e2c4e0a ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x8eac14bf __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x91a76fa6 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x92ac1d4c ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x9335c4e9 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x93b7af41 ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9c98b4f3 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa65c44be ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xa7182586 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa9225e1c ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0xaa5490d1 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0xb16ef686 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb2458b06 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb53056e7 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0xb99ed5cd ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xbd545183 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0xbeb2ac0e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbfc1acc5 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xc72b3560 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xcbe4dbeb ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xccaabeea ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xcd02444c ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xcd66063e ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xcd69a4d6 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcfca94ae ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0xd095f95e ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd1de9d98 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd26fb999 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xd7744475 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xd7c6d855 ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0xd7e1e7c2 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdb5ab118 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdb8b72e7 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xe1bb8b85 ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0xe3385fd0 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe4a477a4 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf18f62f7 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xf3cd11b7 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xfd17b944 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac802154/mac802154 0x28e53c89 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4674a2f9 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4870865a ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x58125739 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5c3a5d4c ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x97e73e67 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe7032ec3 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xea6c14e0 ieee802154_wake_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0400e49c ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x046e00f3 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0a6d2c88 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0b2d76de ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0c12a48c ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3940a26f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x440f0d04 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4431ba57 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x781a80cb unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa752540a ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xac10c217 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcd2b99f2 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd91b1341 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf0bc3823 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xffe14214 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf7cd591c nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x299ffda8 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x7393981d nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x8a7d4445 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x97555abf nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd13a7c30 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x20a9ea10 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x5a14cab5 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x6f6d6685 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa17c18c2 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa1ea0ab4 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb3f5c35f xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xc13bba47 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xc3e621eb xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xd4b8ed82 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x06022f73 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x06b01f3f nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x1034755b nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x1316eee1 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x19e3bb98 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x223121ce nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x28a385c9 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x30ad49c2 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x449b158f nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x7b77c874 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x90028b84 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x9055c6e7 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xa725c79b nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xb8ab7b3c nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xc04b1fa9 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xccf98baa nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xd10f3432 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd2975b48 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xe1278ac7 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xe2a57011 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xee46e53b nfc_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x11a205ae nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x1592427e nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x197e96b0 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x253ad959 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x29b28521 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x2e3fae27 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x33070986 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x3accfe5c nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x3e5efac0 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x3eeb4153 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x40dadb50 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x42bca3b8 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0x43982ef7 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x4685470a nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x47f91f92 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x49394c02 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x4cd0d820 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6a04c130 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x75a37afc nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x826d25a8 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x84f67e46 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x8f4569d1 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x92efc1cd nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xa2a2567d nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xa2ccbab9 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xa47aab16 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc0624167 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe44bf476 nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0xfc57abcf nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nfc 0x1620f781 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x19aa45a4 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x1c7b9337 nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0x2583edd6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2724f35b nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x38f771dd nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x3d8bb47b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x49f07254 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x587a2ee8 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x59a96dc3 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x643af867 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x6afdf46f nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x87182760 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8c166e94 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x91d9b15d nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x9cf29849 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xa94b91df nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xb300e6c2 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xb550296d nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xc85a4fdc nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xce73c45d nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xd73daf6b nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xdd46ce1c nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xebac0276 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xf4f92881 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x14665c0c nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x17297504 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8f9f092c nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfe4c95e1 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x108c0df6 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x18181003 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x6ead6e53 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x727dd944 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x8825c746 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xf0c30db5 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xf2fe8ddd phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xfb27ccf2 phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/rxrpc 0x30ac12ad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3454a782 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0x3df4203b rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x50809f5f rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5a5e68c5 rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5d0ca35b rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5e040bd5 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x78f935eb rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x89349550 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8bef179d rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8f90b8ef rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa501a676 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb6828ea2 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0xbe3e08ab rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xc18d85b6 rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd31f2b6a rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xdc3c8893 rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0xea73c929 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/sctp/sctp 0x1d0ee382 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x133bf758 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x4128c66b gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x9eb6b45e gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5e1f4414 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6351740a svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x63b84233 xdr_truncate_encode +EXPORT_SYMBOL net/tipc/tipc 0x19b1489b tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0x589a25b9 tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0x8bfa2b80 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0xdf524002 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tls/tls 0x053b3141 tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x05b18c85 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xe740f014 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x05dec9d4 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x099f54c9 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x0a5069ec cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x0b02beb8 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0ba8c5e0 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0df3f080 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1083f48f __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x11a28a7f cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x11f6458e regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x130cfdd4 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x131766a9 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x131a4e8e cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x17a21c8d wiphy_read_of_freq_limits +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x189b0734 ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x1c4008ba cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x20d951a9 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x27544137 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x2b51fce1 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x2c88b6d7 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x2eef32c3 cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0x3285060a cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x33254a1b cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x38cb594a ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x3cc78b1b regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x40492e71 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x4554a239 cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x4821aa11 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x51642099 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x52660b43 cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x55f29b89 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x581bd71d cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x5d9f6bfe cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x60f5d91b freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x61c646b4 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x62fb4529 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x630ad806 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x647370c8 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x64f3852f cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x672ac508 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6bcc4804 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x6bd8bc86 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6c47733b cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x6ff70cc5 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0x7058c99d cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x70bad0f4 ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x7357349f cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7a9f4a8d cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x7bcfeb11 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7da510fc cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x8120392e __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x8203eecd cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x827bb7ab cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x842008fe cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x895ff91b cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x8aa4db26 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x8b24e88f cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x8baf49ef ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x926c53c2 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x969841ae cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x9745c54b cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x97d54ab4 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x98f889ec cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x9c8bf69f cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0xa023c271 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0xa026f8fa cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0xa642dbe6 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xa85d0d9f cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb0f5fc50 cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xb371b0cd cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb43fe40b cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xb4cbc533 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xb9480e5a cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xbadc23ac cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xc109c7dd cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc725fb67 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc7905dfb ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc998ed24 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xcab5c4ae cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcb40261c wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xcec0899d cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xd2ce7ac2 cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd4296c78 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd76e19a8 cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0xd7f6f362 cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe77d1f50 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe787d288 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xea16d933 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xebd3539b cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xef5a8f10 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf07a73f9 cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xf1460231 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xf25c89ed cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf56343c4 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xf7a656a3 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xf834ec36 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf97ac32f cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xfa7be443 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/lib80211 0x15e93294 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x560ec3e1 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x5caca32f lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5cca2527 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x8ed6d396 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xca03f6e1 lib80211_crypt_info_free +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x4269176b snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x07fc424a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x55ba75bc snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa765b522 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf4ad2f95 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1724fb56 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x17fcf66b snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cff6e14 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2f853c43 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5f7f98 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x56efbc6b snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdaf3383a snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x75c1d1c8 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x484bac11 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06cfbece snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0741cd87 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0a2b833c snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x16d1556b snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1a897be4 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1ce8d3fb snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x23fa562c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x85828c9f __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x883ac3a7 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8a031983 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x948d2851 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xad5bfc3d snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb71e9b8b snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb951782b snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc23e47d4 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8ce29c1 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc9b6ad5d snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcac0d93d snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xecb7be43 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9c32110 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0xbde1bd93 snd_seq_device_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xae0cc7af snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x063d4461 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0c3cbe78 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3dee794a snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x510b5a2b snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x51d82845 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa9f6a87c snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xceb754db snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe0ad6321 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf012d79f snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x06d86c19 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x06da1c26 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x08f670bb snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2e062a80 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4d070b8f snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x532be1ca snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5c3a93b8 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6052d3c7 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbece8eef snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x069ad702 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x09e751ad avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18ab5c27 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a10e568 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2e4f0e05 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x33350ad0 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x40c0a30f cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c59df41 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53716faa avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x60334d16 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6406a9fe amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6db0c61d cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x75c8b3e4 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7e2c1ee7 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8300eacc cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x874ecaf3 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8b0af54a amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91122e91 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9dd61c67 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa2e25d0f amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab102be2 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb547eefb fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbc18a997 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb9567f2 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe16cf44b amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe488c87b amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe83387e8 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeeeff5f9 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xefdbeb84 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf55295e9 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x4e180920 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x6929a988 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0012e551 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0cd2bef4 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5016bec7 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5ada7be3 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6473af1d snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x90a0a046 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa1c8f80f snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xacbb413a snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x26ccca23 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3f234c47 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x437870c4 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xaca2d7cb snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xad50cabf snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xeaa5eb42 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-i2c 0x191ac8c4 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x54fbabdf snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5cc1301b snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa8cec718 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbcf45638 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf233674d snd_i2c_readbytes +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x168d1756 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2164eb26 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x23974d13 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2eb65fc6 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x324779f8 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x37bc35be snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4c4b4ccb snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6181b3ba snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7be2f1d4 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x982c58a1 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb37681d1 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc108ea2 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc040bd2a snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd826c730 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd9d4aa4f snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd9ef49af snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xec7d382f snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x134d0ad4 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x192b3355 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd1137edc snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1e854d08 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2c8dc376 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5008ae3b oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x533dcdd7 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x709339c9 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x71878d13 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x72f8ae6c oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7525dac8 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7ba4573d oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x972231ea oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c424c2c oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaf8aabf1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xafa6b797 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb139cbd9 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbfde9e67 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc30aaa3f oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc4c819a1 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcedfadc9 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3a1bd41 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeefb6d1d oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfd69a9fb oxygen_read8 +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x15c22972 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x3227764b pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x266fbc0c tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x8b1edd08 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x59bb2d85 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x7be7e3cc aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x7ed62dd7 aic32x4_probe +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0x691566bf fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/soc/qcom/snd-soc-qcom-common 0x3c29a6c2 qcom_snd_parse_of +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x02cc72ff sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0ecdf744 snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1154a278 snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x12907eb2 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x160f5afa sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1a146973 sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1ca6625b snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1e97618e snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2d73c28d snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3433617b sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3a907c63 sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3bf9c091 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3e93c320 snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3ebb395f snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x40b40bfa snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x42176949 sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4bdc401f snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5a6737c1 snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5cf5282d snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x67bcfc75 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x692589d3 snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6e4903f1 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x70e611d5 snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x77628bca snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x77d3ad44 snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x77facb9d snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x79936912 snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8378cf4b sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9076085d sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x955def65 snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x99d9001b snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9bf4d425 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa2ccb2c8 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa5aba841 snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa77618f5 snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad055b2c sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb766d6b1 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb7c7fdb3 snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xbe3be9b1 snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc501ac3b snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd20159db snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd927eca8 sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xda753069 snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdb73aafd sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdd7e0ca7 snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe04db6df snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe4da3f25 snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe8e1bc7c snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe915db13 snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeb0b9c0d snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf4d78a63 snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf888dc39 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfb0bbad6 snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfb6906fa snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfe211dbe sof_io_read64 +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x67e059aa __snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x001ee95a imx_ssi_fiq_base +EXPORT_SYMBOL vmlinux 0x004e2da5 rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0x005060cc param_ops_byte +EXPORT_SYMBOL vmlinux 0x0051b3ff kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x005ad519 pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x006ce11f vme_lm_request +EXPORT_SYMBOL vmlinux 0x006e622d pci_resize_resource +EXPORT_SYMBOL vmlinux 0x006f30cf netif_rx_ni +EXPORT_SYMBOL vmlinux 0x0072c383 dump_truncate +EXPORT_SYMBOL vmlinux 0x007763ad free_cgroup_ns +EXPORT_SYMBOL vmlinux 0x007d0713 sock_release +EXPORT_SYMBOL vmlinux 0x00852eb4 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x008f07fe nla_append +EXPORT_SYMBOL vmlinux 0x00a6a292 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x00a9f03b cqhci_irq +EXPORT_SYMBOL vmlinux 0x00ab255e set_device_ro +EXPORT_SYMBOL vmlinux 0x00b3d0e8 backlight_device_register +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00b5432a device_add_disk +EXPORT_SYMBOL vmlinux 0x00b6612a sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dc0f19 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010264bd mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x010662fc sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0119ea0b phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x011ad160 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x011d870c pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x01212735 sget +EXPORT_SYMBOL vmlinux 0x01230e4c truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x0129c4f8 par_io_data_set +EXPORT_SYMBOL vmlinux 0x0139db93 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x0145d60a pps_register_source +EXPORT_SYMBOL vmlinux 0x014ce474 dcb_getapp +EXPORT_SYMBOL vmlinux 0x01505d85 imx_scu_call_rpc +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x01769c8d begin_new_exec +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x01830813 kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x01984cc8 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b1d6f7 pci_select_bars +EXPORT_SYMBOL vmlinux 0x01d530a6 mr_dump +EXPORT_SYMBOL vmlinux 0x01e769d6 __next_node_in +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x021de01b fb_validate_mode +EXPORT_SYMBOL vmlinux 0x0232ef63 datagram_poll +EXPORT_SYMBOL vmlinux 0x02487bb0 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x02543a40 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x025b9b84 proc_remove +EXPORT_SYMBOL vmlinux 0x025e245a key_link +EXPORT_SYMBOL vmlinux 0x0273dadd of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0276bf16 udp_ioctl +EXPORT_SYMBOL vmlinux 0x02800c37 tty_write_room +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0290cdce of_parse_phandle +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02ac4e91 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x02c065f8 ucc_set_qe_mux_mii_mng +EXPORT_SYMBOL vmlinux 0x02cd9e8c __snd_pcm_lib_xfer +EXPORT_SYMBOL vmlinux 0x02df50b0 jiffies +EXPORT_SYMBOL vmlinux 0x02e3efb8 mdiobus_write +EXPORT_SYMBOL vmlinux 0x02e80c3e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f2f893 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x02f67ae0 mmc_start_request +EXPORT_SYMBOL vmlinux 0x02fcefff simple_write_begin +EXPORT_SYMBOL vmlinux 0x030f73cd jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x0324ff56 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x035bf871 nf_reinject +EXPORT_SYMBOL vmlinux 0x03605d9d mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0380fbd7 padata_free_shell +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x0399a486 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x03a12e66 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03d664d7 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x03d9f9ac skb_push +EXPORT_SYMBOL vmlinux 0x03e2104e scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x03f04abc xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x03fba701 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0400f91c vif_device_init +EXPORT_SYMBOL vmlinux 0x040b96e1 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x041e3c18 scsi_host_put +EXPORT_SYMBOL vmlinux 0x042685d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x043c77a5 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0x04426f14 mem_section +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044fb722 dev_base_lock +EXPORT_SYMBOL vmlinux 0x0455d677 devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x045723ac flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0x045c0f23 dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x04a5bace snd_pcm_set_managed_buffer +EXPORT_SYMBOL vmlinux 0x04ae0988 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x04b0d474 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x04be7905 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x04c4b8df kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x04c6b4c3 __crypto_memneq +EXPORT_SYMBOL vmlinux 0x04ca1027 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04da236a __register_nls +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ef735c netdev_change_features +EXPORT_SYMBOL vmlinux 0x0508088e ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x050b1cca ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0x051cbddc unregister_shrinker +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x053ad594 inet_frag_find +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x054ba5cd __sk_receive_skb +EXPORT_SYMBOL vmlinux 0x054bec49 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x054d272d pcie_print_link_status +EXPORT_SYMBOL vmlinux 0x05521a1b __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x05612718 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x056419b2 follow_down_one +EXPORT_SYMBOL vmlinux 0x058824d0 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x0588c3e6 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x0590ef34 ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x05b0caa0 hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x05ca18a2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x05e13eb9 ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x05e18a1b pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x05fd669d __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x0602a656 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x060845f5 devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06268fb3 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x062d90f3 lru_cache_add +EXPORT_SYMBOL vmlinux 0x06319406 keyring_alloc +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06350c70 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x065cea24 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x0663535f phy_connect +EXPORT_SYMBOL vmlinux 0x06724b38 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x067ea780 mutex_unlock +EXPORT_SYMBOL vmlinux 0x069199be read_cache_page +EXPORT_SYMBOL vmlinux 0x069a184d drop_super_exclusive +EXPORT_SYMBOL vmlinux 0x069c02a5 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0x06a3ab7a blk_execute_rq +EXPORT_SYMBOL vmlinux 0x06b8fcf2 genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x06bdc640 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06f7924e param_get_uint +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073cad1d md_write_start +EXPORT_SYMBOL vmlinux 0x0751e85c xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x075a2c33 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x075aafa9 input_reset_device +EXPORT_SYMBOL vmlinux 0x077079f9 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x077530d7 security_sb_remount +EXPORT_SYMBOL vmlinux 0x07765ca4 remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x077af67c init_opal_dev +EXPORT_SYMBOL vmlinux 0x077ff773 watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x07845fc8 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x07861580 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x0797b613 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ad5684 prepare_creds +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf6ec4 locks_init_lock +EXPORT_SYMBOL vmlinux 0x07d50abc sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x07d51766 block_commit_write +EXPORT_SYMBOL vmlinux 0x07d8e5ed vm_insert_page +EXPORT_SYMBOL vmlinux 0x07e2c085 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x07e63d01 param_set_ushort +EXPORT_SYMBOL vmlinux 0x07fc5160 mdio_device_register +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082d2596 __inc_node_page_state +EXPORT_SYMBOL vmlinux 0x0833ccd6 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084c1a1a do_map_probe +EXPORT_SYMBOL vmlinux 0x085ce6a6 console_stop +EXPORT_SYMBOL vmlinux 0x086253a7 ioremap_cache +EXPORT_SYMBOL vmlinux 0x08690bbf __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x0871434b __check_sticky +EXPORT_SYMBOL vmlinux 0x08799420 input_grab_device +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x0896306c xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x08a25231 proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x08a71e0c pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x08c4fd32 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x08ceefe9 register_console +EXPORT_SYMBOL vmlinux 0x08d7d496 make_kprojid +EXPORT_SYMBOL vmlinux 0x08dc5d71 fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0x08ddea3c mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x08e1b0ca blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x08e27256 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x08e39398 cmd_db_read_addr +EXPORT_SYMBOL vmlinux 0x08e74044 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x08e776be genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x08f47d79 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x08f640e2 send_sig +EXPORT_SYMBOL vmlinux 0x08ffbadf tegra_ivc_write_advance +EXPORT_SYMBOL vmlinux 0x09040e61 tcp_poll +EXPORT_SYMBOL vmlinux 0x091c01e1 simple_rmdir +EXPORT_SYMBOL vmlinux 0x091d9865 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x09242afd pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x092d665e commit_creds +EXPORT_SYMBOL vmlinux 0x09491c49 lock_page_memcg +EXPORT_SYMBOL vmlinux 0x094caef9 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x09561d1c of_root +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097bb54c pci_pme_capable +EXPORT_SYMBOL vmlinux 0x097cbdf0 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a5ad5d drop_super +EXPORT_SYMBOL vmlinux 0x09bed655 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d30bc6 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e830b3 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x09f185c6 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x09f84237 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x0a06f6a7 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0x0a0da906 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x0a20d621 ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a5cf09d of_device_unregister +EXPORT_SYMBOL vmlinux 0x0a701acf genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0x0a7df2df netif_rx +EXPORT_SYMBOL vmlinux 0x0a84033e genl_unregister_family +EXPORT_SYMBOL vmlinux 0x0a9338c7 bio_put +EXPORT_SYMBOL vmlinux 0x0aa09d79 omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa79c58 __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x0aac0487 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae11a9b serio_unregister_port +EXPORT_SYMBOL vmlinux 0x0ae547ed xxh64_update +EXPORT_SYMBOL vmlinux 0x0aeb9059 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x0b11913c jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x0b1b939e kmemdup +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2473d1 seq_write +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b30fa69 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x0b32a490 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x0b40d7cf _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x0b423410 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b617520 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x0b709411 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8f60f3 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0b97fbbb inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0b9d0f67 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x0bae1803 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x0baf8a14 rproc_report_crash +EXPORT_SYMBOL vmlinux 0x0bb24e4a fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be1b441 dquot_transfer +EXPORT_SYMBOL vmlinux 0x0c0eca22 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0x0c148aec snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c6e5ede pci_get_class +EXPORT_SYMBOL vmlinux 0x0c8d4828 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x0c9452f9 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x0ca028a7 snd_timer_start +EXPORT_SYMBOL vmlinux 0x0ca2c2c7 param_get_charp +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae1eec phy_print_status +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cb5eae1 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x0cda6950 dma_resv_fini +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0d062895 __lock_buffer +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d0e1f99 dev_addr_del +EXPORT_SYMBOL vmlinux 0x0d19ca7a __udp_disconnect +EXPORT_SYMBOL vmlinux 0x0d2ca20f ucc_fast_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d404dda serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x0d47efd3 rproc_get_by_child +EXPORT_SYMBOL vmlinux 0x0d48e6b9 tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d68cc19 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x0d7bcd93 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x0d82cd80 peernet2id +EXPORT_SYMBOL vmlinux 0x0da2b786 tty_set_operations +EXPORT_SYMBOL vmlinux 0x0da66bc4 cqhci_pltfm_init +EXPORT_SYMBOL vmlinux 0x0dba5e9a radix_tree_delete +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0df10812 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x0df4a8b1 xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e1c8804 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x0e2a3ccd cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x0e3cab45 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x0e3d5ac3 vfs_llseek +EXPORT_SYMBOL vmlinux 0x0e4a65bb mpage_writepage +EXPORT_SYMBOL vmlinux 0x0e4c027b neigh_connected_output +EXPORT_SYMBOL vmlinux 0x0e6b5f9c __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x0e7c359d eth_validate_addr +EXPORT_SYMBOL vmlinux 0x0e9ac092 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x0e9aeede __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x0ea3387b phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0x0ea8ba59 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ecdf09a vfs_readlink +EXPORT_SYMBOL vmlinux 0x0ed20a20 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x0edd1c6e eth_type_trans +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0f06957f allocate_resource +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f120c8e i2c_del_driver +EXPORT_SYMBOL vmlinux 0x0f1c41c3 mmc_get_card +EXPORT_SYMBOL vmlinux 0x0f319b5d find_inode_nowait +EXPORT_SYMBOL vmlinux 0x0f3e649e mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x0f68d4a9 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x0f79f04e xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f9c8b2a default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x0fa7cd50 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x0fae3e70 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb92fd0 vfs_get_link +EXPORT_SYMBOL vmlinux 0x0fbc9ac5 pci_clear_master +EXPORT_SYMBOL vmlinux 0x0fd076b6 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x10018cb0 __pv_offset +EXPORT_SYMBOL vmlinux 0x10086004 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x1025009a cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x102936ec qe_clock_source +EXPORT_SYMBOL vmlinux 0x1038aaf9 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x104725c4 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x10479f47 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x1052df6c padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x10571655 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0x105f047b snd_device_new +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x106cfd90 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x10739f1e swake_up_locked +EXPORT_SYMBOL vmlinux 0x107d4856 vme_master_request +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1080613a mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x10810807 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x1082bcb8 of_match_device +EXPORT_SYMBOL vmlinux 0x1085d5ee down_read_killable +EXPORT_SYMBOL vmlinux 0x10973ea9 cpu_user +EXPORT_SYMBOL vmlinux 0x1097c200 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x10b866ca tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x10bf5255 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10c65bf4 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x10caa876 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10ec5e8a of_iomap +EXPORT_SYMBOL vmlinux 0x10f8772b __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x11067335 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1133cd7c blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x1145f276 tty_throttle +EXPORT_SYMBOL vmlinux 0x114844c9 tegra_dfll_runtime_suspend +EXPORT_SYMBOL vmlinux 0x11560d1b ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x115c84b1 param_set_ullong +EXPORT_SYMBOL vmlinux 0x115cb9e0 d_rehash +EXPORT_SYMBOL vmlinux 0x11631994 ps2_sliced_command +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11682657 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a643b4 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x11b62670 snd_pcm_create_iec958_consumer +EXPORT_SYMBOL vmlinux 0x11d09864 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11e4c96b dev_addr_flush +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121f156b snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x122132e5 param_ops_bint +EXPORT_SYMBOL vmlinux 0x1233385e __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x12354755 mount_single +EXPORT_SYMBOL vmlinux 0x123b1d4b mntget +EXPORT_SYMBOL vmlinux 0x1271bbc0 __do_once_done +EXPORT_SYMBOL vmlinux 0x1274437f pcie_set_mps +EXPORT_SYMBOL vmlinux 0x12a280b3 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a4e4c6 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x12b41b31 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x12c03e07 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12de4881 genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x12e2848b backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0x12f19edf __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12fe7a87 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x13126a27 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x1319fd1a crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x131e3196 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x137c4236 bio_free_pages +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x1399a1c6 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x13ae4b8e netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x13b55f55 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x13c01450 mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0x13c5b606 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0x13ca73df skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d1e8e2 blk_queue_split +EXPORT_SYMBOL vmlinux 0x13d24f16 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x13d92490 dma_pool_create +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f84059 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x140cef8e cmxgcr_lock +EXPORT_SYMBOL vmlinux 0x1418cb34 blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0x141e83f0 tcf_block_put +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x14634b77 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x14758f8e wireless_spy_update +EXPORT_SYMBOL vmlinux 0x147d4a1e blkdev_put +EXPORT_SYMBOL vmlinux 0x148a4897 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x148dcee2 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x149f007c of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x14c01d53 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x14c733bb dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x14fb26e5 _dev_alert +EXPORT_SYMBOL vmlinux 0x14fe016a phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x151359bc tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0x1516f817 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x151a833a textsearch_prepare +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x152c3133 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x15387fce blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x154c217e audit_log_start +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155ac8a7 dev_addr_init +EXPORT_SYMBOL vmlinux 0x155e7a54 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x155f16c7 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x156a1b59 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x15aca904 keyring_clear +EXPORT_SYMBOL vmlinux 0x15ace99a twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15d433c0 ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x15dfdfb6 cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x15eec7c8 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0x15f0cd21 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x15f0eeb1 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x16028985 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x161f77bf flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0x1622aea4 page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x163a78b3 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x163d2417 tegra_io_rail_power_off +EXPORT_SYMBOL vmlinux 0x164bd54f max8998_read_reg +EXPORT_SYMBOL vmlinux 0x16525cc4 xa_find +EXPORT_SYMBOL vmlinux 0x166810cb module_put +EXPORT_SYMBOL vmlinux 0x166ca79e mdiobus_free +EXPORT_SYMBOL vmlinux 0x168b06a5 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x16b12917 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0x16b44d4e generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x16c9ea6e __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x16d0290b inet_select_addr +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16f3ad81 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x1709e4a5 vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0x1729d9a6 mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0x1738c19e _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x174b97bb scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x17561c81 kill_pgrp +EXPORT_SYMBOL vmlinux 0x17570562 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x17690d48 unpin_user_page +EXPORT_SYMBOL vmlinux 0x176a6e5a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x17887935 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x178a2ead ping_prot +EXPORT_SYMBOL vmlinux 0x178c4894 qe_upload_firmware +EXPORT_SYMBOL vmlinux 0x17983f06 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x17b03610 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x17bedb8d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x17c87604 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x181b2447 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x183a0f0a rproc_free +EXPORT_SYMBOL vmlinux 0x1841e1f5 phy_aneg_done +EXPORT_SYMBOL vmlinux 0x18475d45 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x184ef038 may_umount_tree +EXPORT_SYMBOL vmlinux 0x185148da kthread_stop +EXPORT_SYMBOL vmlinux 0x185320ba blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1856e030 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x1858be06 tegra_ivc_write_get_next_frame +EXPORT_SYMBOL vmlinux 0x185c32cf sgl_free +EXPORT_SYMBOL vmlinux 0x185e7034 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x1874b05b hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x187884a8 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x1887b64b vfs_fsync +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1899ee4b bdget +EXPORT_SYMBOL vmlinux 0x189aced5 reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x189c5980 arm_copy_to_user +EXPORT_SYMBOL vmlinux 0x18a87ab6 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0x18b34725 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x18b6007b fb_set_var +EXPORT_SYMBOL vmlinux 0x18d48356 netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18e807f8 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x18eb99fc mmc_can_trim +EXPORT_SYMBOL vmlinux 0x18f9661c __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x18fc5726 mmc_request_done +EXPORT_SYMBOL vmlinux 0x19008696 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x1911b0b9 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x192a032a __put_page +EXPORT_SYMBOL vmlinux 0x193a6ea0 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x193c6a8c __sb_end_write +EXPORT_SYMBOL vmlinux 0x19457fb9 rtc_add_group +EXPORT_SYMBOL vmlinux 0x194d3c3c ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x195c8596 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x1962d3fd kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ae442 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19aaf468 inet_gro_complete +EXPORT_SYMBOL vmlinux 0x19ae304a fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d98f48 seq_open_private +EXPORT_SYMBOL vmlinux 0x19e12a02 d_invalidate +EXPORT_SYMBOL vmlinux 0x1a0827e6 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1a0e1d44 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x1a16e13c put_disk +EXPORT_SYMBOL vmlinux 0x1a174d67 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0x1a1ba9e4 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1a20c540 omap_vrfb_supported +EXPORT_SYMBOL vmlinux 0x1a21d691 __ksize +EXPORT_SYMBOL vmlinux 0x1a2cb0ce uart_get_divisor +EXPORT_SYMBOL vmlinux 0x1a3c6852 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x1a51c881 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x1a5241de textsearch_unregister +EXPORT_SYMBOL vmlinux 0x1a56fcb8 dcache_readdir +EXPORT_SYMBOL vmlinux 0x1a5e8166 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x1a64d898 amba_find_device +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a7bc9ef xxh32 +EXPORT_SYMBOL vmlinux 0x1a7ff252 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x1a810daf devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x1a93de42 pci_enable_msi +EXPORT_SYMBOL vmlinux 0x1a96b609 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1aa86d18 rdma_dim +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ad314e1 dst_init +EXPORT_SYMBOL vmlinux 0x1ad385d4 ucc_fast_dump_regs +EXPORT_SYMBOL vmlinux 0x1aded990 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0x1ae231e1 get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b188ecb snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x1b2587f4 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x1b25f187 __xa_store +EXPORT_SYMBOL vmlinux 0x1b3ef517 touch_atime +EXPORT_SYMBOL vmlinux 0x1b404272 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x1b438f7d param_ops_invbool +EXPORT_SYMBOL vmlinux 0x1b45b6f4 secpath_set +EXPORT_SYMBOL vmlinux 0x1b6289f2 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b666ffe do_clone_file_range +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1bbac527 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x1bc24b4e show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x1be51eec update_region +EXPORT_SYMBOL vmlinux 0x1c0b1aa5 md_register_thread +EXPORT_SYMBOL vmlinux 0x1c33aa61 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0x1c33c2eb tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x1c386a4d __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x1c5a389d nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c6b3c64 udp_poll +EXPORT_SYMBOL vmlinux 0x1c777c5c dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x1c8a0c77 pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x1c9fb372 rproc_shutdown +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1ccafd13 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x1cd11147 blk_get_queue +EXPORT_SYMBOL vmlinux 0x1cea4bde handle_edge_irq +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d1256f6 dev_mc_del +EXPORT_SYMBOL vmlinux 0x1d18f8b9 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x1d2cf140 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d325743 xp_dma_map +EXPORT_SYMBOL vmlinux 0x1d332dee ppp_channel_index +EXPORT_SYMBOL vmlinux 0x1d43a34a snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d6488d1 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1d6bd450 from_kuid +EXPORT_SYMBOL vmlinux 0x1d98e374 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dcaf1e7 filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de3f19a ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1de7b6da netdev_info +EXPORT_SYMBOL vmlinux 0x1e0373fc imx_scu_irq_group_enable +EXPORT_SYMBOL vmlinux 0x1e0492c7 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e1ec406 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x1e43f49d rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0x1e495dfb scsi_block_requests +EXPORT_SYMBOL vmlinux 0x1e496ac2 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x1e539d5c freeze_super +EXPORT_SYMBOL vmlinux 0x1e63cedb skb_find_text +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e93d955 neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x1e96f43d __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x1e975462 pci_pme_active +EXPORT_SYMBOL vmlinux 0x1e9af0ea phy_read_paged +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea80a51 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x1eb64646 div64_s64 +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1ee6693e sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x1f3a6be4 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8141f0 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x1f9d7f16 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x1fab4098 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x1fb02546 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x1fb91fc5 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc7f418 phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0x1fc9c0c2 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd33378 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x1fdd1966 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x1fe3c490 request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x1fe4f0d8 get_mem_type +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200036a3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x20068fc9 skb_clone +EXPORT_SYMBOL vmlinux 0x20070ea2 _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20200bc2 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x20208ccd lock_rename +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x205727b8 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x20608643 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x20675df5 sock_create +EXPORT_SYMBOL vmlinux 0x20706f03 rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0x2072b8b4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20846110 down_killable +EXPORT_SYMBOL vmlinux 0x209f3bf7 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x20a3cb5e nand_scan_with_ids +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20af635a posix_acl_valid +EXPORT_SYMBOL vmlinux 0x20c0425c ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0x20cf3926 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x20d3d573 param_get_invbool +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20e59630 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x20eaa9ca shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x20eadd96 d_splice_alias +EXPORT_SYMBOL vmlinux 0x20ef1e64 request_key_rcu +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x210cfce4 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x210f664f security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211118e3 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211706f8 tty_kref_put +EXPORT_SYMBOL vmlinux 0x211ee9bc qcom_scm_assign_mem +EXPORT_SYMBOL vmlinux 0x212133db xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0x21347808 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x218ccf1a tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x219bf432 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x21a5579c netdev_crit +EXPORT_SYMBOL vmlinux 0x21ab9bef of_cpu_node_to_id +EXPORT_SYMBOL vmlinux 0x21b0be11 skb_trim +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be258c __nla_reserve +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21c334c6 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x21d03882 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21ee48a6 fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x21f14f1a pci_release_regions +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x21fb5555 generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x220c7021 tegra_io_pad_power_disable +EXPORT_SYMBOL vmlinux 0x22207bec __mdiobus_register +EXPORT_SYMBOL vmlinux 0x22238b70 cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x224899e1 get_user_pages +EXPORT_SYMBOL vmlinux 0x2252acfb input_flush_device +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277d558 mx53_revision +EXPORT_SYMBOL vmlinux 0x228637cd __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x22967569 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x22a17930 ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bc46ea default_llseek +EXPORT_SYMBOL vmlinux 0x22c81065 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x22e5f2d1 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x22e6e823 mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x22ec75a0 xp_alloc +EXPORT_SYMBOL vmlinux 0x2300883f simple_map_init +EXPORT_SYMBOL vmlinux 0x230cc74f security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x230dcb66 vme_slave_request +EXPORT_SYMBOL vmlinux 0x2320664f disk_stack_limits +EXPORT_SYMBOL vmlinux 0x23220afc pci_reenable_device +EXPORT_SYMBOL vmlinux 0x2329cbcb phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x232a29fc dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x2335287a put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0x2339c2d8 PageMovable +EXPORT_SYMBOL vmlinux 0x234204ec key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x235294c6 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x23619cff jiffies_64 +EXPORT_SYMBOL vmlinux 0x236856ec vfs_getattr +EXPORT_SYMBOL vmlinux 0x2369a9d1 xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0x236ff005 watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bbdeed _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23c82171 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x23cc388a kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x23cef842 dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x23e5cfb9 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x23e99b7e config_item_put +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23ee6c62 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x23f9c5ce xps_needed +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244c3a57 __mdiobus_write +EXPORT_SYMBOL vmlinux 0x2456309c block_write_begin +EXPORT_SYMBOL vmlinux 0x2456e0b5 of_dev_put +EXPORT_SYMBOL vmlinux 0x2458e021 single_open +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245ec465 netif_device_detach +EXPORT_SYMBOL vmlinux 0x246790df idr_for_each +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x2490b1a0 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x249441bc i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x24a4a42d md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x24a82df7 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24b41863 open_with_fake_path +EXPORT_SYMBOL vmlinux 0x24b97378 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24f84e95 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x24f8faf5 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x24fa55ab pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x24ff8b22 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25011d04 ether_setup +EXPORT_SYMBOL vmlinux 0x251ad22a page_pool_destroy +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254ce0f0 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x255aa4c9 migrate_page +EXPORT_SYMBOL vmlinux 0x2566a7c0 config_item_set_name +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x257ae45c dma_fence_free +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x25af4018 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x25b0af5b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x2618cf4c blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x26334184 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x263a3bbb debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264fd27c simple_pin_fs +EXPORT_SYMBOL vmlinux 0x2664b472 send_sig_info +EXPORT_SYMBOL vmlinux 0x2665a528 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x2672aa5c phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x2690e6c1 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x26944208 get_super +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26df921c proc_symlink +EXPORT_SYMBOL vmlinux 0x26eef99f mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0x27047ccf phy_attach +EXPORT_SYMBOL vmlinux 0x270ac400 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x270d94aa can_nice +EXPORT_SYMBOL vmlinux 0x2729d102 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x277185c4 devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c68705 node_states +EXPORT_SYMBOL vmlinux 0x27cedc96 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x27cf1f01 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x27f79847 mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0x28031665 __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28217b4b page_pool_create +EXPORT_SYMBOL vmlinux 0x282706ec snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x28361440 unix_get_socket +EXPORT_SYMBOL vmlinux 0x2836c002 register_filesystem +EXPORT_SYMBOL vmlinux 0x285cd22b may_umount +EXPORT_SYMBOL vmlinux 0x286c7b5b pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x28748fee tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x2878e15a idr_destroy +EXPORT_SYMBOL vmlinux 0x287bb8a8 configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x287c5940 dma_free_attrs +EXPORT_SYMBOL vmlinux 0x28936f7a pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0x28c0ddbf rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x28c1effd of_clk_get +EXPORT_SYMBOL vmlinux 0x28e80c37 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x28fff975 __find_get_block +EXPORT_SYMBOL vmlinux 0x290fa4c3 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x291ed488 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x292544a1 thaw_super +EXPORT_SYMBOL vmlinux 0x292c5ded vfs_rename +EXPORT_SYMBOL vmlinux 0x294995b9 dev_load +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x2954ace8 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0x29555335 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x2977212e mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x29773325 param_ops_charp +EXPORT_SYMBOL vmlinux 0x2977559a super_setup_bdi +EXPORT_SYMBOL vmlinux 0x29a47fe9 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x29af6459 set_posix_acl +EXPORT_SYMBOL vmlinux 0x29c1a135 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0x29c5262b pci_release_resource +EXPORT_SYMBOL vmlinux 0x29d61a18 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x29d76209 lookup_one_len +EXPORT_SYMBOL vmlinux 0x29d79b2d fb_get_mode +EXPORT_SYMBOL vmlinux 0x29d9f26e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x2a0fd0d0 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x2a1107d7 blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x2a227042 kernel_connect +EXPORT_SYMBOL vmlinux 0x2a249ea1 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x2a2893be follow_pfn +EXPORT_SYMBOL vmlinux 0x2a2de3c8 pci_read_config_dword +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3114ce dev_alloc_name +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a403cbb mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x2a461ad4 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2a524a1f vga_get +EXPORT_SYMBOL vmlinux 0x2a575831 input_inject_event +EXPORT_SYMBOL vmlinux 0x2a66337e __dec_node_page_state +EXPORT_SYMBOL vmlinux 0x2a6e4184 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x2a76adbe pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2a80abd6 init_net +EXPORT_SYMBOL vmlinux 0x2a85098f __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x2a8e1462 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x2a8eacff lookup_bdev +EXPORT_SYMBOL vmlinux 0x2a9a19cf devm_clk_put +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa4fdc5 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x2ab3f058 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x2ab74ad0 mmc_retune_pause +EXPORT_SYMBOL vmlinux 0x2ab89d46 md_write_inc +EXPORT_SYMBOL vmlinux 0x2ac36bba I_BDEV +EXPORT_SYMBOL vmlinux 0x2add35d1 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x2ae76b82 skb_dump +EXPORT_SYMBOL vmlinux 0x2b204305 phy_driver_register +EXPORT_SYMBOL vmlinux 0x2b26649a dev_mc_add +EXPORT_SYMBOL vmlinux 0x2b364ba1 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x2b4ae49c sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x2b54ad2e dup_iter +EXPORT_SYMBOL vmlinux 0x2b5ab97d _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x2b5f571c md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2b60022e phy_find_first +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b82f810 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x2b876f95 mmput_async +EXPORT_SYMBOL vmlinux 0x2b9381c0 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x2b99722a __cpu_active_mask +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2b9f6db0 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x2bb144ed setattr_copy +EXPORT_SYMBOL vmlinux 0x2bb33077 vscnprintf +EXPORT_SYMBOL vmlinux 0x2bd69ee5 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x2be0a87b tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0x2bfc57e9 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x2bfdb94d dquot_alloc +EXPORT_SYMBOL vmlinux 0x2bff5887 xa_destroy +EXPORT_SYMBOL vmlinux 0x2c03e95a dm_kobject_release +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c26b13f ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x2c3047db __alloc_skb +EXPORT_SYMBOL vmlinux 0x2c329e54 tegra_powergate_sequence_power_up +EXPORT_SYMBOL vmlinux 0x2c4063af blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x2c53eb55 kill_anon_super +EXPORT_SYMBOL vmlinux 0x2c659b86 fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x2c6b6974 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x2c6b73e3 fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x2c77931d scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c8ff154 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0x2c90fb2c security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x2c929728 sk_free +EXPORT_SYMBOL vmlinux 0x2c936fbf netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x2c9d3756 vsnprintf +EXPORT_SYMBOL vmlinux 0x2ca643d0 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2cab95a4 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x2cb1a50c generic_file_fsync +EXPORT_SYMBOL vmlinux 0x2cb7b754 input_event +EXPORT_SYMBOL vmlinux 0x2cc6a84a xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x2cd4a227 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x2cfde9a2 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x2d05d18f tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d19a7f3 snd_soc_alloc_ac97_component +EXPORT_SYMBOL vmlinux 0x2d1e631f __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d3ba1da rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0x2d3c7d52 generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d5e4777 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x2d6fcc06 __kmalloc +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2da81bff _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x2db216d3 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0x2dbd2199 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x2dc8749f of_node_put +EXPORT_SYMBOL vmlinux 0x2dc905e6 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x2ddd7ad2 file_update_time +EXPORT_SYMBOL vmlinux 0x2de3928c xfrm_state_update +EXPORT_SYMBOL vmlinux 0x2dec67cd _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x2deffcf1 sg_miter_start +EXPORT_SYMBOL vmlinux 0x2dfc665d tcp_prot +EXPORT_SYMBOL vmlinux 0x2e0335d7 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e36053c tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e4a18f7 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e7249de __close_fd +EXPORT_SYMBOL vmlinux 0x2e77e471 filp_close +EXPORT_SYMBOL vmlinux 0x2e917e1c tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x2e91cca1 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x2e9ed018 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x2ea7f64a seq_read_iter +EXPORT_SYMBOL vmlinux 0x2eacbe22 ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x2ebdcbc7 fs_param_is_path +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2edc4836 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0x2ef73dcf udp_sendmsg +EXPORT_SYMBOL vmlinux 0x2efc4c82 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x2f0284b0 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f18d647 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x2f1b0d62 ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x2f248b20 phy_attached_info +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f333aab imx_scu_get_handle +EXPORT_SYMBOL vmlinux 0x2f41ae24 path_has_submounts +EXPORT_SYMBOL vmlinux 0x2f50cbf5 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x2f58c94b kernel_param_lock +EXPORT_SYMBOL vmlinux 0x2f5b0fdb gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2f60e476 fqdir_exit +EXPORT_SYMBOL vmlinux 0x2f6ea6d2 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0x2f6f8205 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x2f70dd19 pps_event +EXPORT_SYMBOL vmlinux 0x2f869976 file_ns_capable +EXPORT_SYMBOL vmlinux 0x2fad3061 truncate_setsize +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe57bdf pci_write_vpd +EXPORT_SYMBOL vmlinux 0x30034489 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x30084ea1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x300edffc no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0x30212b0d tegra_dfll_runtime_resume +EXPORT_SYMBOL vmlinux 0x30275bfb __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x304ef2bf sock_sendmsg +EXPORT_SYMBOL vmlinux 0x30507b37 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x306b46eb __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x306cd71e scsi_device_put +EXPORT_SYMBOL vmlinux 0x30745185 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x307ab8bd mr_fill_mroute +EXPORT_SYMBOL vmlinux 0x30897df9 tcp_seq_start +EXPORT_SYMBOL vmlinux 0x30962236 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309a13c1 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a93cb1 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30b3de71 inet_offloads +EXPORT_SYMBOL vmlinux 0x30bd1bd3 fb_show_logo +EXPORT_SYMBOL vmlinux 0x30c6b841 nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0x30c971be mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x30d334b9 tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0x30d9a471 gen_pool_create +EXPORT_SYMBOL vmlinux 0x30e11a72 release_and_free_resource +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3120814d pci_set_master +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x3132c06f pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x3135eaef tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x313bc47a cfb_fillrect +EXPORT_SYMBOL vmlinux 0x3144f6d3 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147be84 pci_iomap +EXPORT_SYMBOL vmlinux 0x314b20c8 scnprintf +EXPORT_SYMBOL vmlinux 0x314b78b0 tso_build_data +EXPORT_SYMBOL vmlinux 0x31891e4c utf8nagemin +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31bf6d87 file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x31c734c9 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x31d6f2c1 ns_capable_setid +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x32138614 migrate_page_states +EXPORT_SYMBOL vmlinux 0x321a93b0 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x322cbcef dquot_destroy +EXPORT_SYMBOL vmlinux 0x3231d129 register_key_type +EXPORT_SYMBOL vmlinux 0x3234d46b crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x32394d4b qe_issue_cmd +EXPORT_SYMBOL vmlinux 0x323ee8a7 current_in_userns +EXPORT_SYMBOL vmlinux 0x32412e90 fsync_bdev +EXPORT_SYMBOL vmlinux 0x3242e1fb clk_get +EXPORT_SYMBOL vmlinux 0x32430023 _totalhigh_pages +EXPORT_SYMBOL vmlinux 0x325e21e1 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x3261e401 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x32777d2a pci_get_subsys +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3281fb74 ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32996b77 pipe_unlock +EXPORT_SYMBOL vmlinux 0x329e41ec netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32e26108 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x32e6cbaf cdev_add +EXPORT_SYMBOL vmlinux 0x3327f153 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x333c8c7d disk_end_io_acct +EXPORT_SYMBOL vmlinux 0x33447e9e pcie_get_mps +EXPORT_SYMBOL vmlinux 0x3358e5ad bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x3366d021 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x33713f19 phy_loopback +EXPORT_SYMBOL vmlinux 0x3380fd69 find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0x339cb9ed proc_set_user +EXPORT_SYMBOL vmlinux 0x33a320e8 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x33c09fde textsearch_destroy +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3400958c clk_add_alias +EXPORT_SYMBOL vmlinux 0x3402eb3f of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x342b9051 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x34429c34 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x3445db12 vme_register_driver +EXPORT_SYMBOL vmlinux 0x34596c35 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x346408cd iov_iter_pipe +EXPORT_SYMBOL vmlinux 0x3477e627 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x3479c720 filp_open +EXPORT_SYMBOL vmlinux 0x349b4277 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a04d71 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x34b144d1 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x34bce2ed nand_read_oob_std +EXPORT_SYMBOL vmlinux 0x34c068dd ucc_slow_restart_tx +EXPORT_SYMBOL vmlinux 0x34c19275 simple_write_end +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35037449 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352baefe tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x352c05d9 release_resource +EXPORT_SYMBOL vmlinux 0x35398248 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x353ec7e9 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x3545701d ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0x3560d24b pci_read_vpd +EXPORT_SYMBOL vmlinux 0x3560e651 kmemdup_nul +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3565e9f6 seq_vprintf +EXPORT_SYMBOL vmlinux 0x35696cb2 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x356d3a5b pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x356d741b scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3584d524 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x35a481e7 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ad83d2 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x35bbe6c4 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x35bdc817 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0x35c03b5e rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0x35cbd36f netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0x35e40966 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x35ea78f5 atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x35f47969 fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x3607e1fe __seq_open_private +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x361396e1 clear_nlink +EXPORT_SYMBOL vmlinux 0x3623788a ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x36247b37 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x362a9738 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x362e2913 tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x363ad8d5 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x363c18dd tegra_dfll_resume +EXPORT_SYMBOL vmlinux 0x364e7989 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x3656c550 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x36588e6a tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x36723874 task_work_add +EXPORT_SYMBOL vmlinux 0x36799ec2 param_set_charp +EXPORT_SYMBOL vmlinux 0x3690c47a padata_start +EXPORT_SYMBOL vmlinux 0x369a2bcb __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x36a6e058 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x36ac219c pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x36b13bd8 dma_set_mask +EXPORT_SYMBOL vmlinux 0x36ceec24 config_group_find_item +EXPORT_SYMBOL vmlinux 0x36d69557 ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x36dad99c call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x36fd98fe get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x372c4f13 set_security_override +EXPORT_SYMBOL vmlinux 0x3735538e vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3748dc5c pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x374b47eb ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x375a1a09 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x375a2c5f vfs_rmdir +EXPORT_SYMBOL vmlinux 0x375c267f snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x375d216d write_one_page +EXPORT_SYMBOL vmlinux 0x3767e444 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x377c55df from_kgid +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379ae745 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x37a6c054 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x37a771f4 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x37a83188 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c8f8ab __i2c_transfer +EXPORT_SYMBOL vmlinux 0x37d06b15 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x37d3275b devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e24ba3 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x37f06341 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x3802bacc pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3807430c param_get_string +EXPORT_SYMBOL vmlinux 0x3813d370 sock_efree +EXPORT_SYMBOL vmlinux 0x38179c03 find_lock_entry +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3842b3a6 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x384eab79 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x385e4c84 xfrm_state_free +EXPORT_SYMBOL vmlinux 0x3869afdf blk_put_queue +EXPORT_SYMBOL vmlinux 0x386d9ce9 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x38865b33 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38da7157 add_to_pipe +EXPORT_SYMBOL vmlinux 0x38e0feb4 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x3902cb59 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x3910cddd snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0x392a1c9a of_graph_get_port_parent +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393cdc40 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x39417c90 tegra_dfll_unregister +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3947471f netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x3992bc63 __xa_set_mark +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39a12ca7 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c77e32 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x39c88fd5 flush_rcu_work +EXPORT_SYMBOL vmlinux 0x39c989f5 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x39d22d7b xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x39de46d0 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x3a1a6c54 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x3a21e4a4 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x3a47a822 ip_frag_next +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a54591c dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x3a856489 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x3a917281 devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3aa5728d pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x3aa969ef of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3abe991c param_set_uint +EXPORT_SYMBOL vmlinux 0x3ad6fd8e krait_get_l2_indirect_reg +EXPORT_SYMBOL vmlinux 0x3ad796ff netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x3adf5af2 nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x3af9cafa __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x3b11377a __free_pages +EXPORT_SYMBOL vmlinux 0x3b15a62e of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x3b1ab2c1 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3b209a35 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x3b299067 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b2f0aa3 md_handle_request +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b697738 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x3b6f3d61 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0x3b731de3 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x3b8a2898 finish_swait +EXPORT_SYMBOL vmlinux 0x3b923d80 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x3ba63f69 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bccb66e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x3be3c927 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3c13746a f_setown +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c263a4c of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x3c27681e omap_rtc_power_off_program +EXPORT_SYMBOL vmlinux 0x3c3215c4 qe_immr +EXPORT_SYMBOL vmlinux 0x3c3bc238 udp_gro_receive +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c6761ac ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9382ab of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x3cb8963a of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x3cb8f5ef alloc_fddidev +EXPORT_SYMBOL vmlinux 0x3cc73335 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x3cc97a19 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x3cdc1c75 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d0537eb __skb_recv_udp +EXPORT_SYMBOL vmlinux 0x3d0c3f54 dentry_open +EXPORT_SYMBOL vmlinux 0x3d1777a6 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x3d32525d inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x3d34ec82 pci_dev_put +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d56448c pci_request_irq +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d6660c1 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0x3d700040 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x3d8b01a5 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x3d94885b i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3daba25d new_inode +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcf1ffa __wake_up +EXPORT_SYMBOL vmlinux 0x3dd033b0 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x3dd878a0 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x3deb3a5c fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x3df0de5f dm_io +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0e862a put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0x3e108f6c __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x3e20bf68 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e2f1636 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x3e3387ac kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x3e443b7e param_get_long +EXPORT_SYMBOL vmlinux 0x3e4c287d xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x3e5d8adf seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e94019e key_move +EXPORT_SYMBOL vmlinux 0x3ea2e3e5 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x3ebbaf40 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x3ebebc8f fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x3ed104a5 xa_set_mark +EXPORT_SYMBOL vmlinux 0x3ee3d27f fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0x3eedad63 _copy_to_iter +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f0317b0 mdio_device_free +EXPORT_SYMBOL vmlinux 0x3f0765ee mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x3f09da50 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x3f1890b2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x3f1f9420 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4a4f9f netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x3f4af46f gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f4bf22f devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0x3f58de84 _dev_emerg +EXPORT_SYMBOL vmlinux 0x3f62d048 dma_fence_init +EXPORT_SYMBOL vmlinux 0x3f705dc2 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x3f70a2f4 release_pages +EXPORT_SYMBOL vmlinux 0x3f7433a6 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x3f7ebdf2 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x3f841625 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x3f88c8ae refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3f8efbb1 napi_get_frags +EXPORT_SYMBOL vmlinux 0x3f9d7894 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x3fc12501 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x3fc6b407 elevator_alloc +EXPORT_SYMBOL vmlinux 0x3fd07298 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fea538c hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x4011fe92 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x4022e1f2 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x402d8d27 nand_monolithic_read_page_raw +EXPORT_SYMBOL vmlinux 0x403a93e7 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x4040b83d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x4041504d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x4043a937 scsi_print_result +EXPORT_SYMBOL vmlinux 0x40481507 generic_copy_file_range +EXPORT_SYMBOL vmlinux 0x4052c117 phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x406cad28 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a4eeff inet_gso_segment +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b51c05 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x40c5e620 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d402ad do_wait_intr +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dbb194 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x40ef88b3 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f2654e neigh_lookup +EXPORT_SYMBOL vmlinux 0x40fef1bf __skb_checksum +EXPORT_SYMBOL vmlinux 0x41013957 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x41051e26 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x41080d9d tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x412404a0 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x412970ec __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41495d19 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x414975dd __genradix_prealloc +EXPORT_SYMBOL vmlinux 0x41537e5d path_is_mountpoint +EXPORT_SYMBOL vmlinux 0x415778e9 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4158306c generic_listxattr +EXPORT_SYMBOL vmlinux 0x417243f3 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x417b15f4 read_cache_pages +EXPORT_SYMBOL vmlinux 0x4183f057 generic_writepages +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41acaca6 md_bitmap_free +EXPORT_SYMBOL vmlinux 0x41bb84fc dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x41d3bc95 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x41dc94aa sock_bindtoindex +EXPORT_SYMBOL vmlinux 0x41e56a18 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x41e7032e mr_table_dump +EXPORT_SYMBOL vmlinux 0x41e84ac1 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x42022a23 amba_device_register +EXPORT_SYMBOL vmlinux 0x4203238f blk_register_region +EXPORT_SYMBOL vmlinux 0x4209cbf9 tty_vhangup +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42450512 sget_fc +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4253aa7e down_write +EXPORT_SYMBOL vmlinux 0x42604384 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x42798c6e devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x427da230 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x42927685 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429c3e0f tcp_time_wait +EXPORT_SYMBOL vmlinux 0x42ab7d8a of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x42cc9d7c blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x42d65ecd __block_write_full_page +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x42f40e86 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x42f63485 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430a13b6 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x430e2bc5 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x43186101 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x432c9147 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x433a1a88 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x433db2e9 sock_alloc +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435b4de4 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x436013b7 md_done_sync +EXPORT_SYMBOL vmlinux 0x4368ba13 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x4371159c tegra_ivc_reset +EXPORT_SYMBOL vmlinux 0x4376259a netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x43825fa9 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x4384eb42 __release_region +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43922e07 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x43a38358 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x43a76cad nvm_end_io +EXPORT_SYMBOL vmlinux 0x43ba5a28 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x43ba84d3 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0x43c9b5d5 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x43d398f3 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x43f06e38 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x43f4b0e1 pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0x43fa4cc9 blk_put_request +EXPORT_SYMBOL vmlinux 0x4403bbd0 imx_sc_misc_set_control +EXPORT_SYMBOL vmlinux 0x44139d75 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44257722 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x442d39e5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x444cc8ed tcp_md5_needed +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4466310f netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x44801691 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x44898bd8 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x448a6884 tcf_register_action +EXPORT_SYMBOL vmlinux 0x448c5d44 init_special_inode +EXPORT_SYMBOL vmlinux 0x448f6dde sock_gettstamp +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44b83240 ucc_of_parse_tdm +EXPORT_SYMBOL vmlinux 0x44bbbb55 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x44c9dc6c percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x44ccc406 phy_modify_paged +EXPORT_SYMBOL vmlinux 0x44ce4a4a fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e6e007 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0x44e8ff17 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb1fc6 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x450d9a35 cmd_db_read_slave_id +EXPORT_SYMBOL vmlinux 0x451a0669 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453e3a29 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0x4562a134 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x4564a798 inc_node_page_state +EXPORT_SYMBOL vmlinux 0x45785133 add_watch_to_object +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4590d1e4 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x45a56b43 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x45bd11d4 devm_iounmap +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45cf5454 _dev_err +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x46119000 kset_unregister +EXPORT_SYMBOL vmlinux 0x461eb46a blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0x46262cc7 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462bdb78 sk_wait_data +EXPORT_SYMBOL vmlinux 0x463034f0 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x463aaab0 __post_watch_notification +EXPORT_SYMBOL vmlinux 0x4656a687 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x465fef6f tegra_ivc_init +EXPORT_SYMBOL vmlinux 0x4680fb69 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x4683a920 dqput +EXPORT_SYMBOL vmlinux 0x46998899 nf_log_register +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x469ab5bb bd_set_size +EXPORT_SYMBOL vmlinux 0x46bfe1b0 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x46c69d4a __dquot_transfer +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46f5969a scmd_printk +EXPORT_SYMBOL vmlinux 0x47011940 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x47096ad6 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x4710496f xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x471f11fc jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x4721d747 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x4756260d ida_destroy +EXPORT_SYMBOL vmlinux 0x475d84ef gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x477d7b5f tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x477d95d7 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x47845496 _dev_crit +EXPORT_SYMBOL vmlinux 0x478d9b84 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0x479137ca imx_scu_irq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4798adaf try_module_get +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47a8c5ee remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x47b16df3 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0x47ba8c1b ppp_input +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47c6b0ad __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x47cb8f9d padata_stop +EXPORT_SYMBOL vmlinux 0x47d96bc2 __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f26c2b pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x482067e8 tcf_block_get +EXPORT_SYMBOL vmlinux 0x482fbcb5 would_dump +EXPORT_SYMBOL vmlinux 0x483235b1 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x4848cfb1 phy_mipi_dphy_get_default_config +EXPORT_SYMBOL vmlinux 0x484a97dd dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x48562431 uart_register_driver +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486f3f06 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x487ee240 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x48869b41 import_iovec +EXPORT_SYMBOL vmlinux 0x48a49780 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bb80db hex2bin +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49090975 cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0x493b791c rt6_lookup +EXPORT_SYMBOL vmlinux 0x496d00ce simple_getattr +EXPORT_SYMBOL vmlinux 0x4982109f netpoll_setup +EXPORT_SYMBOL vmlinux 0x4982f418 rproc_da_to_va +EXPORT_SYMBOL vmlinux 0x49970de8 finish_wait +EXPORT_SYMBOL vmlinux 0x49b1cdbb pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x49baa81b d_alloc_name +EXPORT_SYMBOL vmlinux 0x49bffefe clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x49d3457a cpumask_any_but +EXPORT_SYMBOL vmlinux 0x49dde235 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x49e50651 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f04645 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x49f26466 kstrndup +EXPORT_SYMBOL vmlinux 0x4a12c64f thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0x4a34305f udp_seq_next +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a424068 end_page_writeback +EXPORT_SYMBOL vmlinux 0x4a45fca7 set_user_nice +EXPORT_SYMBOL vmlinux 0x4a4ac7b0 __mod_node_page_state +EXPORT_SYMBOL vmlinux 0x4a4c16dd __sb_start_write +EXPORT_SYMBOL vmlinux 0x4a4c408c blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x4a5a43c0 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x4a5e02e2 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x4a5ed089 km_query +EXPORT_SYMBOL vmlinux 0x4a70c84c locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x4a78a38e phy_device_create +EXPORT_SYMBOL vmlinux 0x4a881c4b netdev_alert +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4a9a4343 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x4aa6f4fa __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4addfb3c vfs_iter_read +EXPORT_SYMBOL vmlinux 0x4ade8b2e kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x4ae7a363 ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0x4ae8ee66 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b32c3c9 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x4b3b5124 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x4b45d928 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b715318 d_instantiate_new +EXPORT_SYMBOL vmlinux 0x4b735aca ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x4b814d51 pci_free_irq +EXPORT_SYMBOL vmlinux 0x4b9253cb snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x4bb23e41 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x4bba0b0e seq_lseek +EXPORT_SYMBOL vmlinux 0x4bbcc4f1 of_parse_phandle_with_args_map +EXPORT_SYMBOL vmlinux 0x4bcaa958 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x4bdc1bb7 edac_mc_find +EXPORT_SYMBOL vmlinux 0x4bdcd91f __getblk_gfp +EXPORT_SYMBOL vmlinux 0x4be6be05 ipv4_specific +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4bf0c9d3 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x4bfdcefa __memset32 +EXPORT_SYMBOL vmlinux 0x4c19e65e proc_set_size +EXPORT_SYMBOL vmlinux 0x4c1cca3b cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c32b60a invalidate_bdev +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c3e7bc5 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c443fcf skb_pull +EXPORT_SYMBOL vmlinux 0x4c52d251 dev_get_flags +EXPORT_SYMBOL vmlinux 0x4c63cff2 zap_page_range +EXPORT_SYMBOL vmlinux 0x4c6fdc3c mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x4c74b151 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x4c76cfb9 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x4c92d72e kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0x4c976465 dev_deactivate +EXPORT_SYMBOL vmlinux 0x4ca14861 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cc2854d tegra114_clock_assert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0x4ccd150a dev_uc_add +EXPORT_SYMBOL vmlinux 0x4ce8fc60 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x4cf47e24 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x4d05c3fe dst_release_immediate +EXPORT_SYMBOL vmlinux 0x4d0739aa proto_unregister +EXPORT_SYMBOL vmlinux 0x4d0a280f configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d0f49c7 devm_ioremap +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d514485 xa_store +EXPORT_SYMBOL vmlinux 0x4d5e47e8 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4d633c89 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x4d634803 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x4d6ae35f rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4d86229f file_modified +EXPORT_SYMBOL vmlinux 0x4d865de9 __serio_register_port +EXPORT_SYMBOL vmlinux 0x4d911e3a dev_open +EXPORT_SYMBOL vmlinux 0x4d934e4b pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x4d980c44 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4dd80926 write_cache_pages +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4df79a4f vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x4df9fc8a mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x4e05bdec mempool_init_node +EXPORT_SYMBOL vmlinux 0x4e089f1c netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x4e0fa834 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x4e13d312 serio_interrupt +EXPORT_SYMBOL vmlinux 0x4e1d6221 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x4e2569c5 vm_insert_pages +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e71d936 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x4e7ee2db netif_receive_skb +EXPORT_SYMBOL vmlinux 0x4e839cac inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4e909557 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x4ea432ba __close_fd_get_file +EXPORT_SYMBOL vmlinux 0x4ea48740 snd_pcm_new +EXPORT_SYMBOL vmlinux 0x4ea7b9f6 pci_write_config_word +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4eca328a pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x4ecb00e5 netlink_ack +EXPORT_SYMBOL vmlinux 0x4ecf0296 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x4ee0e846 ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x4ee98ebd tcp_have_smc +EXPORT_SYMBOL vmlinux 0x4f13b3ef inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f3b2fa8 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x4f3dd4b7 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x4f4b2315 phy_get_pause +EXPORT_SYMBOL vmlinux 0x4f4b513a rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f572ba5 dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0x4f6cd76d ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x4f7ce5a3 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x4f80f913 __brelse +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f8183e9 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f98131e skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x4fa41735 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x4fa63912 input_open_device +EXPORT_SYMBOL vmlinux 0x4fbcb1a0 tcp_seq_next +EXPORT_SYMBOL vmlinux 0x4fc6178b sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x4fd72b7d dev_remove_pack +EXPORT_SYMBOL vmlinux 0x4fef3ef4 completion_done +EXPORT_SYMBOL vmlinux 0x5004b5b8 kern_unmount +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x502a625b mdio_device_remove +EXPORT_SYMBOL vmlinux 0x502b6647 mempool_create_node +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x50449b5a inode_dio_wait +EXPORT_SYMBOL vmlinux 0x505a544c netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x506ead03 security_path_unlink +EXPORT_SYMBOL vmlinux 0x50848231 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5090c641 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x5095ae54 kern_path_create +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50bae062 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50cf7b3d jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x50d71bcf gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x50f85302 __arm_smccc_hvc +EXPORT_SYMBOL vmlinux 0x50fd6103 dma_fence_signal +EXPORT_SYMBOL vmlinux 0x51022053 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x511ffe81 devm_memremap +EXPORT_SYMBOL vmlinux 0x512ca054 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x51414518 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x514a471a blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x514a62ec dq_data_lock +EXPORT_SYMBOL vmlinux 0x514cc273 arm_copy_from_user +EXPORT_SYMBOL vmlinux 0x5150eae1 dst_alloc +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x516d5cac ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0x516e31a6 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x517018a2 sgl_alloc_order +EXPORT_SYMBOL vmlinux 0x51824f2c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x51957b93 pci_request_region +EXPORT_SYMBOL vmlinux 0x51a93e9e pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x51b2fc92 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x51bacd35 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x51dff51f inet_sk_set_state +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ead55f netif_device_attach +EXPORT_SYMBOL vmlinux 0x51fd343b remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0x5203d176 cmd_db_ready +EXPORT_SYMBOL vmlinux 0x520f0a95 snd_compr_malloc_pages +EXPORT_SYMBOL vmlinux 0x521ac12b input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x52248d91 vme_irq_request +EXPORT_SYMBOL vmlinux 0x523e57aa ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0x52465ef4 ppp_input_error +EXPORT_SYMBOL vmlinux 0x5261eccc devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52ae6c5e phy_start_aneg +EXPORT_SYMBOL vmlinux 0x52b4afb9 register_netdevice +EXPORT_SYMBOL vmlinux 0x52b4d0ab tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x52bfaa26 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x52c9d337 rproc_del +EXPORT_SYMBOL vmlinux 0x52cb0b57 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52e86a66 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x52e901e1 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x52f2850a imx_sc_pm_cpu_start +EXPORT_SYMBOL vmlinux 0x52fa3770 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x534251c8 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0x5343a7a1 do_SAK +EXPORT_SYMBOL vmlinux 0x535176bd pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x536060af radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x5362b04c dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x5364243d rtnl_notify +EXPORT_SYMBOL vmlinux 0x536a46c6 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x536e6dc3 init_task +EXPORT_SYMBOL vmlinux 0x5371b7ab pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x5389559b udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x53b5b678 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0x53c1c306 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x53c5f44d sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x53cb8eb5 block_read_full_page +EXPORT_SYMBOL vmlinux 0x53e8c316 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x53ecfb8d dquot_get_state +EXPORT_SYMBOL vmlinux 0x53f64fd0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x54042cbb mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x5427f0cc __neigh_event_send +EXPORT_SYMBOL vmlinux 0x542a1839 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x543e9231 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0739 phy_start_cable_test +EXPORT_SYMBOL vmlinux 0x544d2fde security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x5455e41c nf_log_set +EXPORT_SYMBOL vmlinux 0x54629e3a copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x54844074 param_array_ops +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54bae675 km_state_expired +EXPORT_SYMBOL vmlinux 0x54beb727 genlmsg_put +EXPORT_SYMBOL vmlinux 0x54cab5be mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0x54d1242a param_set_bint +EXPORT_SYMBOL vmlinux 0x54d8357b snd_timer_close +EXPORT_SYMBOL vmlinux 0x54ddcc2e bio_uninit +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ec9908 noop_fsync +EXPORT_SYMBOL vmlinux 0x54ed45c7 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x550dcf56 nobh_write_end +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551f3a5f get_task_cred +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x557b118f generic_setlease +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x559bd4cb snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x55bbda39 register_netdev +EXPORT_SYMBOL vmlinux 0x55c72826 cdev_set_parent +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55eb9e55 devm_rproc_add +EXPORT_SYMBOL vmlinux 0x55f80766 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x560a8ba1 noop_qdisc +EXPORT_SYMBOL vmlinux 0x5616ca39 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x561b74e4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x562d837d cdrom_release +EXPORT_SYMBOL vmlinux 0x562e7e63 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x56498087 paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x5662bd0d finish_open +EXPORT_SYMBOL vmlinux 0x5662e994 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0x5667a277 down_timeout +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56fe85ab set_blocksize +EXPORT_SYMBOL vmlinux 0x5722ac7d input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5729a1c8 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x5742024f blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57540e61 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5764b3d9 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577416b1 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x579116c3 security_sk_clone +EXPORT_SYMBOL vmlinux 0x57aa94e2 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x57ab4fd7 skb_checksum +EXPORT_SYMBOL vmlinux 0x57c7940f vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x57ceedb1 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x57e5170c qcom_scm_iommu_secure_ptbl_size +EXPORT_SYMBOL vmlinux 0x57f38cdc qe_get_firmware_info +EXPORT_SYMBOL vmlinux 0x57ff23f0 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x580079f7 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5806afd5 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581cde4e up +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5834846f phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x5834c1bc d_find_alias +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584d00e6 napi_consume_skb +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x5855b740 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5876b3de skb_put +EXPORT_SYMBOL vmlinux 0x587b892e qe_get_num_of_risc +EXPORT_SYMBOL vmlinux 0x58a15f42 cqhci_deactivate +EXPORT_SYMBOL vmlinux 0x58a83c7c ac97_bus_type +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c8110d snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58f4c817 ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x58fa70b7 pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x58fa91a3 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x58fad869 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x58fe465f genphy_update_link +EXPORT_SYMBOL vmlinux 0x5900e0a2 neigh_xmit +EXPORT_SYMBOL vmlinux 0x590a14f5 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x592b5bd9 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x59315134 nf_log_packet +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x5962dfa8 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x5965caf8 inet_shutdown +EXPORT_SYMBOL vmlinux 0x5972e92a neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x598c14ad key_revoke +EXPORT_SYMBOL vmlinux 0x599b4888 qe_setbrg +EXPORT_SYMBOL vmlinux 0x599f125c eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x59a17bfc tegra114_clock_tune_cpu_trimmers_high +EXPORT_SYMBOL vmlinux 0x59ad918d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x59b1d17c pci_add_resource +EXPORT_SYMBOL vmlinux 0x59b7cab6 mempool_resize +EXPORT_SYMBOL vmlinux 0x59bc0429 sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0x59d127f9 devm_release_resource +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e6409a snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x59feca66 seq_pad +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a14de15 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x5a1a28e4 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a60e9b6 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x5a7c9d59 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x5a87260c twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x5a92152d dcb_setapp +EXPORT_SYMBOL vmlinux 0x5aa3d6ce __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x5aa45c56 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x5aa618ac path_nosuid +EXPORT_SYMBOL vmlinux 0x5aa6be2f vme_bus_type +EXPORT_SYMBOL vmlinux 0x5ab012ea flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x5ab0adda __invalidate_device +EXPORT_SYMBOL vmlinux 0x5abea1fc scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x5ac9dfc8 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b062284 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5b101a07 is_bad_inode +EXPORT_SYMBOL vmlinux 0x5b1b3a52 single_open_size +EXPORT_SYMBOL vmlinux 0x5b1ebe1e of_mdiobus_phy_device_register +EXPORT_SYMBOL vmlinux 0x5b23dd72 filemap_check_errors +EXPORT_SYMBOL vmlinux 0x5b252484 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x5b30bbe3 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b4e0db9 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x5b5c4d31 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x5b5d6d6c pci_find_capability +EXPORT_SYMBOL vmlinux 0x5b65a249 poll_initwait +EXPORT_SYMBOL vmlinux 0x5b70760b i2c_register_driver +EXPORT_SYMBOL vmlinux 0x5b8643ce pcim_iomap +EXPORT_SYMBOL vmlinux 0x5b8f345c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x5b95942e bh_submit_read +EXPORT_SYMBOL vmlinux 0x5ba23424 dev_set_alias +EXPORT_SYMBOL vmlinux 0x5badbb78 string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5bb8309b dev_get_iflink +EXPORT_SYMBOL vmlinux 0x5bbe49f4 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x5bc41496 fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x5bc4eff7 bio_add_page +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5bed77ef posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0x5bf7f981 save_stack_trace_tsk +EXPORT_SYMBOL vmlinux 0x5c09a29e __phy_resume +EXPORT_SYMBOL vmlinux 0x5c0c88ac scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5c12dad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x5c17137e sg_miter_skip +EXPORT_SYMBOL vmlinux 0x5c355595 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c4d9a53 file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x5c53ed77 single_release +EXPORT_SYMBOL vmlinux 0x5c716976 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x5c737040 ucc_fast_disable +EXPORT_SYMBOL vmlinux 0x5c7b2c9b snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x5c7f1284 int_sqrt64 +EXPORT_SYMBOL vmlinux 0x5c884c5f devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cb35bf8 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x5cb9214f jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x5cbd8e69 __crc32c_le +EXPORT_SYMBOL vmlinux 0x5cc2b48e dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0x5ce5991f dma_supported +EXPORT_SYMBOL vmlinux 0x5ce9a942 hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf9eb6c netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x5cfbdab4 __ip_options_compile +EXPORT_SYMBOL vmlinux 0x5d029854 netif_napi_add +EXPORT_SYMBOL vmlinux 0x5d0ce2cc elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x5d107e6b d_obtain_root +EXPORT_SYMBOL vmlinux 0x5d18d69c sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5d192635 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x5d1c284d dev_change_carrier +EXPORT_SYMBOL vmlinux 0x5d249d9d hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5d37d658 dim_park_tired +EXPORT_SYMBOL vmlinux 0x5d3df12d filemap_map_pages +EXPORT_SYMBOL vmlinux 0x5d43ee61 set_cached_acl +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d52bb9b account_page_redirty +EXPORT_SYMBOL vmlinux 0x5d54aadd snd_compr_free_pages +EXPORT_SYMBOL vmlinux 0x5d57dfe2 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5d7e9028 mpage_writepages +EXPORT_SYMBOL vmlinux 0x5d7eedf5 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x5d810f97 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5d94ac5b netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x5db85a45 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x5dba71d7 sg_last +EXPORT_SYMBOL vmlinux 0x5dbbaf32 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x5dbd9cc0 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5de5cca2 utf8_normalize +EXPORT_SYMBOL vmlinux 0x5e00fcc5 udp_seq_ops +EXPORT_SYMBOL vmlinux 0x5e0c22f6 mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e15d536 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x5e170055 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x5e27b849 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x5e2d621f inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e38c830 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x5e391562 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x5e63e362 register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x5e6f91f9 tegra_powergate_remove_clamping +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed05bf6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5edf590f __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5efd6e34 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0b1b80 fs_bio_set +EXPORT_SYMBOL vmlinux 0x5f3407d4 __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x5f3f7454 nand_write_page_raw +EXPORT_SYMBOL vmlinux 0x5f50adda phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x5f53fae8 pci_get_slot +EXPORT_SYMBOL vmlinux 0x5f7394ff phy_read_mmd +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f81a5fc rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x5f849a69 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5f8aca8f pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x5f9d22ca map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x5fb01358 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fba99bc max8925_set_bits +EXPORT_SYMBOL vmlinux 0x5fd2d210 inet_sendpage +EXPORT_SYMBOL vmlinux 0x5fe576f1 inet6_offloads +EXPORT_SYMBOL vmlinux 0x5feaea9d kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x5ffacee7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005b86b uart_resume_port +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600b1bec mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60230465 phy_detach +EXPORT_SYMBOL vmlinux 0x60284fe0 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x602b2b20 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x602ce95f mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x603286b8 utf8_casefold +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603ee7d6 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x605a7ed1 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x6081c097 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x6087ed41 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x60923524 rio_query_mport +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60bffe6d div64_u64 +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x6108c4c0 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x610d198b __fs_parse +EXPORT_SYMBOL vmlinux 0x61214e34 tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x6121bd54 dql_init +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612c8c42 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x612e8359 flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x614a0d6c dma_async_device_register +EXPORT_SYMBOL vmlinux 0x6156c7f4 net_dim +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x615bb82f cred_fscmp +EXPORT_SYMBOL vmlinux 0x616d0566 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6173bf70 devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x619c5af9 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x619fe088 bdi_alloc +EXPORT_SYMBOL vmlinux 0x61b76bb9 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c76b3a proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x61cc9e25 fb_class +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61e521aa param_set_byte +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x6207d782 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x6211866e napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6244068f tso_count_descs +EXPORT_SYMBOL vmlinux 0x625b27fc blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x625b9ec8 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x62688e94 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x626d349e bdi_register +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62742dd4 skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x627d4340 hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62983b59 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62d31d03 d_make_root +EXPORT_SYMBOL vmlinux 0x62d83698 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x62f373ed twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x62f576d9 trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0x62f8e5fb fb_pan_display +EXPORT_SYMBOL vmlinux 0x63066695 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x63080d12 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x630f2cb8 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x6313325d __napi_schedule +EXPORT_SYMBOL vmlinux 0x631835f0 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x63230633 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x63231d35 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x6340a658 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x6342f99f mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x6349d7a8 netdev_err +EXPORT_SYMBOL vmlinux 0x634d8bc3 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x6367ceb4 simple_empty +EXPORT_SYMBOL vmlinux 0x636e1689 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x6371a339 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x6373f61a sg_miter_stop +EXPORT_SYMBOL vmlinux 0x6386c8a4 bio_split +EXPORT_SYMBOL vmlinux 0x6390d842 serio_open +EXPORT_SYMBOL vmlinux 0x63a04e28 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63a8ec70 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x63ad8999 flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x63b01a85 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x63bd5a83 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c7965b vm_map_ram +EXPORT_SYMBOL vmlinux 0x63c82057 tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f01d67 genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x63f8be4d nf_setsockopt +EXPORT_SYMBOL vmlinux 0x63fcc9cc xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x6443babd ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x6452752f dev_driver_string +EXPORT_SYMBOL vmlinux 0x645662f7 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x64650d8b sg_miter_next +EXPORT_SYMBOL vmlinux 0x647af474 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x648c4a08 __icmp_send +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64b10a7b phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x64c74969 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x64d32fbc pci_disable_device +EXPORT_SYMBOL vmlinux 0x64dd24df nla_put_64bit +EXPORT_SYMBOL vmlinux 0x64efd203 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x64f6899d generic_update_time +EXPORT_SYMBOL vmlinux 0x64fecd0d netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a3c79 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x6520859a sync_blockdev +EXPORT_SYMBOL vmlinux 0x65235519 vga_client_register +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x6573d892 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x6578533e prepare_to_wait +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x65947c9e pipe_lock +EXPORT_SYMBOL vmlinux 0x65983753 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65bb5845 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x65c24f2d phy_device_remove +EXPORT_SYMBOL vmlinux 0x65c3f18b free_buffer_head +EXPORT_SYMBOL vmlinux 0x65d411e9 idr_get_next +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65dd6562 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x660b434e misc_deregister +EXPORT_SYMBOL vmlinux 0x66120c0f icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x66474aa4 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x664c360a param_set_long +EXPORT_SYMBOL vmlinux 0x665b9fc1 tcf_classify +EXPORT_SYMBOL vmlinux 0x665c673b mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x665e0ec1 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x66657274 kmalloc_order +EXPORT_SYMBOL vmlinux 0x666863dc par_io_config_pin +EXPORT_SYMBOL vmlinux 0x66695080 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x6669977a km_new_mapping +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x6674bd14 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0x6679f185 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x6691e072 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x66945ff9 tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0x669e3d93 d_path +EXPORT_SYMBOL vmlinux 0x66a74534 d_alloc +EXPORT_SYMBOL vmlinux 0x66ab2a54 vfs_setpos +EXPORT_SYMBOL vmlinux 0x66ba4190 dev_add_pack +EXPORT_SYMBOL vmlinux 0x66dbb4d2 ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x66fddd6e ipmr_rule_default +EXPORT_SYMBOL vmlinux 0x67092819 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x6727174c iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x67295bff iterate_supers_type +EXPORT_SYMBOL vmlinux 0x672c777c bio_advance +EXPORT_SYMBOL vmlinux 0x672fb170 dec_node_page_state +EXPORT_SYMBOL vmlinux 0x6738d380 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x6746f964 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x674ad5c1 uart_match_port +EXPORT_SYMBOL vmlinux 0x674b8e0b ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x674c72fc vfs_link +EXPORT_SYMBOL vmlinux 0x67561e4e xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0x6759ea6a __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x67690fa6 __SetPageMovable +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x6782d34a rename_lock +EXPORT_SYMBOL vmlinux 0x679856f5 sort_r +EXPORT_SYMBOL vmlinux 0x679cfbbf kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x67aa0e48 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x67ad1113 devm_free_irq +EXPORT_SYMBOL vmlinux 0x67ae1bf2 get_vm_area +EXPORT_SYMBOL vmlinux 0x67aed40d elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c5e113 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x67d71a44 vm_event_states +EXPORT_SYMBOL vmlinux 0x67e9c829 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x67ea6e61 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x67fef509 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x6808c968 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x6818c15c netdev_features_change +EXPORT_SYMBOL vmlinux 0x681c351d elm_config +EXPORT_SYMBOL vmlinux 0x683145cd netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x683dc83d simple_readpage +EXPORT_SYMBOL vmlinux 0x685da503 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68874cbd pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68b3994a snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x68b9fca9 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x68ba8ebd inode_nohighmem +EXPORT_SYMBOL vmlinux 0x68dc4ed1 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x68e5ca31 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x69066657 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x690aeb88 pid_task +EXPORT_SYMBOL vmlinux 0x690ea859 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x693be22a free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x695a7aa0 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x695d10ca snd_timer_new +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6974b168 phy_disconnect +EXPORT_SYMBOL vmlinux 0x698be757 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x699e2f56 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ad8bec sock_no_connect +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69cd77e1 dev_printk +EXPORT_SYMBOL vmlinux 0x69d405e1 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69e51d08 __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x69f14e06 mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x69f23314 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a03caae tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x6a06fe13 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x6a263ac2 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x6a2d87f2 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5cdc2f dquot_initialize +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a655fb9 set_anon_super +EXPORT_SYMBOL vmlinux 0x6a71cfb1 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x6a7bf4cf reuseport_select_sock +EXPORT_SYMBOL vmlinux 0x6a8ab71d mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0x6a9e3226 fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x6ab16882 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6ac39d3d tcf_exts_change +EXPORT_SYMBOL vmlinux 0x6ad8b906 flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x6adbda03 snd_timer_instance_new +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6adecc7a ns_capable +EXPORT_SYMBOL vmlinux 0x6ae228b5 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af7b21a packing +EXPORT_SYMBOL vmlinux 0x6afb5936 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x6b058799 pci_request_regions +EXPORT_SYMBOL vmlinux 0x6b06907f flush_signals +EXPORT_SYMBOL vmlinux 0x6b1afa80 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b322fbd __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x6b35aebc pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x6b4a00e0 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x6b4afcd7 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b604710 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6b7e5f87 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8964a9 nvm_register +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6b8d6b69 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x6b93b140 devm_of_clk_del_provider +EXPORT_SYMBOL vmlinux 0x6b9e44fd icmp6_send +EXPORT_SYMBOL vmlinux 0x6bac0f4d pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x6bb33e6b __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd0c8ae tegra_dfll_register +EXPORT_SYMBOL vmlinux 0x6bf6792a cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x6c0fd3c0 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x6c1bf58a proc_create_mount_point +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c207763 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c2f76e4 rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0x6c53ef8c genphy_suspend +EXPORT_SYMBOL vmlinux 0x6c5cf9dc devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c810e42 __xa_clear_mark +EXPORT_SYMBOL vmlinux 0x6c8641d5 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cbcd95e ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0x6cd2e444 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x6cd677a4 tty_port_close +EXPORT_SYMBOL vmlinux 0x6cdb6590 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9961c udp_prot +EXPORT_SYMBOL vmlinux 0x6cf0d67d qe_get_num_of_snums +EXPORT_SYMBOL vmlinux 0x6cf2ea5f vga_put +EXPORT_SYMBOL vmlinux 0x6d05c9c1 genphy_read_status +EXPORT_SYMBOL vmlinux 0x6d113baa xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x6d16caa1 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d32023d mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0x6d3348f7 nvm_unregister +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d34557a dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0x6d35a2bb ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x6d3880b8 block_write_end +EXPORT_SYMBOL vmlinux 0x6d39cf31 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0x6d3fbe89 snd_timer_continue +EXPORT_SYMBOL vmlinux 0x6d42caf5 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x6d474382 configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x6d4fefc6 md_reload_sb +EXPORT_SYMBOL vmlinux 0x6d5ba7f6 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0x6d64c2b9 load_nls +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d68affd __kfree_skb +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d89b199 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6d9140b3 configfs_register_group +EXPORT_SYMBOL vmlinux 0x6da2f35a of_get_pci_address +EXPORT_SYMBOL vmlinux 0x6dabde4d mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x6db1917d mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x6dbf29d8 iterate_fd +EXPORT_SYMBOL vmlinux 0x6dc58d89 devm_clk_get +EXPORT_SYMBOL vmlinux 0x6dca4a26 adjust_resource +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df585b9 vme_dma_request +EXPORT_SYMBOL vmlinux 0x6df80b99 iget_failed +EXPORT_SYMBOL vmlinux 0x6e0d3b2a cdev_device_add +EXPORT_SYMBOL vmlinux 0x6e1ca6c0 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x6e4e7468 vmap +EXPORT_SYMBOL vmlinux 0x6e4e7714 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x6e56c732 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6e5783e3 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x6e6fb369 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x6e6fec06 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7ced10 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6e7fedee tcp_make_synack +EXPORT_SYMBOL vmlinux 0x6e81a8ec __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x6e90e460 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x6e957ae9 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6e9e79c7 tcp_filter +EXPORT_SYMBOL vmlinux 0x6ea55afb mount_subtree +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6eb542d0 wake_up_process +EXPORT_SYMBOL vmlinux 0x6eb7016a snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ecdb792 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6ed6ae2c xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6ef3ad5f pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f013ecd __init_rwsem +EXPORT_SYMBOL vmlinux 0x6f082220 xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0x6f40c184 __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0x6f49a83d inet_register_protosw +EXPORT_SYMBOL vmlinux 0x6f63ec3e param_get_ullong +EXPORT_SYMBOL vmlinux 0x6f7c0372 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x6f8085fe from_kgid_munged +EXPORT_SYMBOL vmlinux 0x6f8dbb3a pci_disable_msi +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6fa1d16e devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x6fae9fac netif_skb_features +EXPORT_SYMBOL vmlinux 0x6fbe4717 idr_replace +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x70084b07 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x70426057 page_readlink +EXPORT_SYMBOL vmlinux 0x705d933f scsi_partsize +EXPORT_SYMBOL vmlinux 0x70703993 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7071b848 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x70d54591 jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0x70ea8f09 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0x710befe5 bio_endio +EXPORT_SYMBOL vmlinux 0x711b8a9b __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x712110ab proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71418e7c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x71432c37 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0x715ed799 get_phy_device +EXPORT_SYMBOL vmlinux 0x716b58cb ioport_resource +EXPORT_SYMBOL vmlinux 0x716eea8f mdio_driver_register +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71759e75 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b29d5d revert_creds +EXPORT_SYMBOL vmlinux 0x71c1478c register_shrinker +EXPORT_SYMBOL vmlinux 0x71c7859d vfs_fadvise +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71f016b3 set_page_dirty +EXPORT_SYMBOL vmlinux 0x71f7de4f proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x71ffc319 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x7231fe7f scsi_ioctl +EXPORT_SYMBOL vmlinux 0x723ec814 dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0x7245003e del_gendisk +EXPORT_SYMBOL vmlinux 0x7248828b __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x72531440 ps2_drain +EXPORT_SYMBOL vmlinux 0x7265142c dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x7296de7f xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x72973c5c amba_driver_register +EXPORT_SYMBOL vmlinux 0x72b5b373 of_phy_attach +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72c98f4c mount_nodev +EXPORT_SYMBOL vmlinux 0x72cd8feb fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0x730d09d5 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7317790e lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x732c6127 pci_enable_wake +EXPORT_SYMBOL vmlinux 0x7350d928 key_alloc +EXPORT_SYMBOL vmlinux 0x7355e198 neigh_table_init +EXPORT_SYMBOL vmlinux 0x735f33b0 mutex_is_locked +EXPORT_SYMBOL vmlinux 0x736d2b25 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x73777336 security_path_mknod +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x738f9651 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x73951257 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73b2a594 con_is_visible +EXPORT_SYMBOL vmlinux 0x73b386ba devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x73b4b783 init_pseudo +EXPORT_SYMBOL vmlinux 0x73e19f0e fs_lookup_param +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73ecc6b1 ps2_init +EXPORT_SYMBOL vmlinux 0x73ffc002 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x74103ee2 hmm_range_fault +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7411d71d fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x741ec23d ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x74428414 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x744302ed __register_binfmt +EXPORT_SYMBOL vmlinux 0x744f4f23 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x745c2be7 vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x746cacd2 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0x74804e6d update_devfreq +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d02048 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x74e46dac imx_ssi_fiq_tx_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e78d5e mmc_sw_reset +EXPORT_SYMBOL vmlinux 0x74fa9cc6 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7510fb7e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x7520ae72 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7555bcc2 import_single_range +EXPORT_SYMBOL vmlinux 0x755928da security_inet_conn_established +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x756f23f9 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x757721f2 vm_mmap +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x759431df mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x75ab6bc9 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x75b9fec6 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75c0cc6b simple_rename +EXPORT_SYMBOL vmlinux 0x75cd73ec gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d127a0 fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75ee3b52 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x75f1cf49 iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760a11d1 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x761d1b9e mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7658ca09 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x766c952b abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x76732fd4 kmap_to_page +EXPORT_SYMBOL vmlinux 0x767bc97b unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x768d9af8 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x769ff0b2 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x76a9661b snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x76c94aeb kernel_accept +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76cf76aa fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76dbdc6e unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x76de99c7 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7705c62d backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0x77171b96 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77380b99 kobject_put +EXPORT_SYMBOL vmlinux 0x77449b44 snd_seq_root +EXPORT_SYMBOL vmlinux 0x7754a702 module_layout +EXPORT_SYMBOL vmlinux 0x77602189 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x77662ef8 ihold +EXPORT_SYMBOL vmlinux 0x777919cb scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x7779eafc jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x777b55ef scsi_device_get +EXPORT_SYMBOL vmlinux 0x777da8f3 ps2_end_command +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x7797faa2 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779acd73 dquot_release +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c19b09 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x77c642b6 xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x77c871dd scsi_host_get +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77f6c690 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x77f6f183 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x780e4b25 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x78121a11 md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x781503f2 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x78304139 md_check_recovery +EXPORT_SYMBOL vmlinux 0x7834f9cd phy_stop +EXPORT_SYMBOL vmlinux 0x783b977a kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0x78431876 ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x78439d43 get_tree_bdev +EXPORT_SYMBOL vmlinux 0x784c8d21 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x78525869 vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x78731f03 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78a25fea lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0x78be7f1b genphy_loopback +EXPORT_SYMBOL vmlinux 0x78c8ba75 bdput +EXPORT_SYMBOL vmlinux 0x78d6c752 __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78df7c49 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x7917d8fe bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x792a7417 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x794765d1 mempool_free +EXPORT_SYMBOL vmlinux 0x794787af __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x794d5b18 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x796d562c inet_frags_init +EXPORT_SYMBOL vmlinux 0x7973ad50 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x797bde81 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x797cf4f8 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x797db5a2 __quota_error +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b4b54f snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x79d15f1f blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x79d84e90 posix_lock_file +EXPORT_SYMBOL vmlinux 0x79e56760 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x79fa1deb imx_ssi_fiq_rx_buffer +EXPORT_SYMBOL vmlinux 0x79fc577f utf8nagemax +EXPORT_SYMBOL vmlinux 0x7a00dfe3 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x7a032372 nand_read_page_raw +EXPORT_SYMBOL vmlinux 0x7a0434ff get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a2221f9 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x7a3e8a42 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4b7b3d of_translate_address +EXPORT_SYMBOL vmlinux 0x7a4cb4de scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x7a5a1058 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x7a74c7c1 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x7a79b9f3 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7a88bf62 phy_device_register +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a96ada4 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x7a97c543 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x7a989d18 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa24671 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aba5c0b ZSTD_getParams +EXPORT_SYMBOL vmlinux 0x7abe096d netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x7acbaa5e d_genocide +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad6c154 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7ade9187 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x7aded2f7 down_write_trylock +EXPORT_SYMBOL vmlinux 0x7ae5d317 qe_get_snum +EXPORT_SYMBOL vmlinux 0x7af7eb61 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x7af92766 dev_uc_del +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b10453a register_sound_dsp +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b2fb85d __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x7b3e94d6 put_watch_queue +EXPORT_SYMBOL vmlinux 0x7b4d5d37 of_graph_get_remote_endpoint +EXPORT_SYMBOL vmlinux 0x7b51b66c ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0x7b549882 unload_nls +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b6057c7 sk_stream_error +EXPORT_SYMBOL vmlinux 0x7b6cb4cd inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x7b74ae64 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x7b7b2578 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0x7b7ee798 logfc +EXPORT_SYMBOL vmlinux 0x7b82b9ad input_unregister_handle +EXPORT_SYMBOL vmlinux 0x7b8c43c2 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x7b8eef39 dma_cache_sync +EXPORT_SYMBOL vmlinux 0x7b93beba blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x7b9789ca nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x7ba5a3b4 tegra_powergate_power_off +EXPORT_SYMBOL vmlinux 0x7ba9faf2 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x7bc30a87 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x7bdf24d9 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0x7be631dd flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x7bec5a8d ata_port_printk +EXPORT_SYMBOL vmlinux 0x7bf59272 pci_read_config_word +EXPORT_SYMBOL vmlinux 0x7c014618 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x7c112946 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x7c14ad95 sync_filesystem +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c24bf64 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x7c26fd51 sgl_free_order +EXPORT_SYMBOL vmlinux 0x7c2a6b97 dst_discard_out +EXPORT_SYMBOL vmlinux 0x7c34e55d __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4b27cc md_flush_request +EXPORT_SYMBOL vmlinux 0x7c5afdad tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x7c6c7400 md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x7c8cea9e key_create_or_update +EXPORT_SYMBOL vmlinux 0x7c9317e8 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0x7c98993d serio_reconnect +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc1e2e4 vfs_tmpfile +EXPORT_SYMBOL vmlinux 0x7cc29dc7 inode_permission +EXPORT_SYMBOL vmlinux 0x7cc72e4a mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x7cdeeb4d pgprot_user +EXPORT_SYMBOL vmlinux 0x7ce0dee5 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce568fe md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x7ce5b6d7 netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x7ceedd41 of_get_compatible_child +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d07e0f5 ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x7d09596b dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0fd935 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x7d26ef4a d_drop +EXPORT_SYMBOL vmlinux 0x7d3f19ad config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x7d404a82 con_is_bound +EXPORT_SYMBOL vmlinux 0x7d474d41 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d531b44 irq_set_chip +EXPORT_SYMBOL vmlinux 0x7d60a08d tty_name +EXPORT_SYMBOL vmlinux 0x7d677869 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x7d6c2636 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0x7d6f1dc3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x7d705825 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x7d8495d3 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x7d8acd69 __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7d92d3bc tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7db1a4d1 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x7dc0d7ee pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x7dd5f9b1 d_delete +EXPORT_SYMBOL vmlinux 0x7de281eb simple_nosetlease +EXPORT_SYMBOL vmlinux 0x7de73628 unregister_console +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0ce0c3 up_write +EXPORT_SYMBOL vmlinux 0x7e194404 rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e32e7c7 irq_stat +EXPORT_SYMBOL vmlinux 0x7e38109e tty_port_close_start +EXPORT_SYMBOL vmlinux 0x7e4f2bad tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7e5e2ce2 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x7e8a341d zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x7e986abe try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x7ea5bb1f unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x7eb75835 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x7ecb54a2 vfs_get_tree +EXPORT_SYMBOL vmlinux 0x7ef91956 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x7efd4daf input_setup_polling +EXPORT_SYMBOL vmlinux 0x7f011e3d fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f118482 pskb_extract +EXPORT_SYMBOL vmlinux 0x7f16692b bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0x7f1ad4e6 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f304b27 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f6826e6 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x7f76203b cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f8b2a32 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x7fa0ea72 seq_open +EXPORT_SYMBOL vmlinux 0x7fa5d3be csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x7fba1f75 input_register_handler +EXPORT_SYMBOL vmlinux 0x7fce778e tegra_ivc_total_queue_size +EXPORT_SYMBOL vmlinux 0x7fce8400 dquot_commit +EXPORT_SYMBOL vmlinux 0x7fd57011 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7fd5b687 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x7fd95ebf genl_register_family +EXPORT_SYMBOL vmlinux 0x7fdb8116 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe0a981 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe782f1 rproc_put +EXPORT_SYMBOL vmlinux 0x8005b6c4 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801ce573 PDE_DATA +EXPORT_SYMBOL vmlinux 0x80246014 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x80327952 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0x8039b3fd _totalram_pages +EXPORT_SYMBOL vmlinux 0x803b6dae request_firmware +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x805c024a bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x80630f14 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x806e1db6 fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x807643bb jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x807a40ed xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x80874081 amba_request_regions +EXPORT_SYMBOL vmlinux 0x80c4c319 crc32_le +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d02c8b alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80eccd60 ip_options_compile +EXPORT_SYMBOL vmlinux 0x81014e65 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8108ac7a down_read_trylock +EXPORT_SYMBOL vmlinux 0x81098346 ucc_fast_init +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x8114d158 fd_install +EXPORT_SYMBOL vmlinux 0x8116db42 free_task +EXPORT_SYMBOL vmlinux 0x81209644 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x8120a2d3 rt_dst_clone +EXPORT_SYMBOL vmlinux 0x8135dc79 poll_freewait +EXPORT_SYMBOL vmlinux 0x8141aef2 empty_aops +EXPORT_SYMBOL vmlinux 0x814504ce of_device_register +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8161fec2 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x816c167f netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0x81748780 blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x817c8e16 vfs_get_super +EXPORT_SYMBOL vmlinux 0x81805d9a dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x818b0b30 efi +EXPORT_SYMBOL vmlinux 0x818dc55b cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x818edf97 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8191fc0b inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x819f738c devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x81a75137 devfreq_update_status +EXPORT_SYMBOL vmlinux 0x81a92a73 snd_card_new +EXPORT_SYMBOL vmlinux 0x81c45e17 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x81c5544e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x81c6c8b4 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x81d004f4 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x81d1036e dma_find_channel +EXPORT_SYMBOL vmlinux 0x81d5f0b2 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81ef88d7 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x822137e2 arm_heavy_mb +EXPORT_SYMBOL vmlinux 0x82296b68 mdio_device_reset +EXPORT_SYMBOL vmlinux 0x8229eaee dev_activate +EXPORT_SYMBOL vmlinux 0x823769bd bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x824e3b70 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x826a022b udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x826ddbd2 sock_no_listen +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x828fa9af ip6_xmit +EXPORT_SYMBOL vmlinux 0x82a48d26 __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x82c0bfdc inet6_bind +EXPORT_SYMBOL vmlinux 0x82cc982e security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x82e2f6d3 d_add +EXPORT_SYMBOL vmlinux 0x82ebc174 tcp_connect +EXPORT_SYMBOL vmlinux 0x82f886a1 ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0x830624e6 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x830d2a52 dev_mc_init +EXPORT_SYMBOL vmlinux 0x83171802 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83324e83 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x83364691 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x833c1367 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x8348012e genphy_read_abilities +EXPORT_SYMBOL vmlinux 0x8348060a seq_file_path +EXPORT_SYMBOL vmlinux 0x8351f2dc seqno_fence_ops +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x8377fc0d down_write_killable +EXPORT_SYMBOL vmlinux 0x83831ccd mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x83a2ade0 dev_trans_start +EXPORT_SYMBOL vmlinux 0x83a95a17 pci_save_state +EXPORT_SYMBOL vmlinux 0x83baf26e scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cd0e6f atomic_io_modify +EXPORT_SYMBOL vmlinux 0x83ed8026 rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x83f045ee snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x83fade1a xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x8431eaea __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x84386190 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x8441c8cb sg_free_table +EXPORT_SYMBOL vmlinux 0x84473857 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x845073f9 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8451fdfe sg_init_table +EXPORT_SYMBOL vmlinux 0x8456e9a7 xa_erase +EXPORT_SYMBOL vmlinux 0x846c7bbb scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x847c1f63 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0x847dacfe phy_start +EXPORT_SYMBOL vmlinux 0x84818f57 tegra_powergate_power_on +EXPORT_SYMBOL vmlinux 0x84aefb3f kern_path +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84c36bf1 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x84cacde2 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x84ef2669 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x84f52f57 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x84f5425f __ps2_command +EXPORT_SYMBOL vmlinux 0x8522b944 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x8527d5ef seq_read +EXPORT_SYMBOL vmlinux 0x852d856a request_key_tag +EXPORT_SYMBOL vmlinux 0x85338cb8 dquot_drop +EXPORT_SYMBOL vmlinux 0x8545dc3a blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x854fec83 tegra_sku_info +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856ab81b input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x856ca649 devm_request_resource +EXPORT_SYMBOL vmlinux 0x8577caea dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x8582ebff cpu_all_bits +EXPORT_SYMBOL vmlinux 0x858ee0ac seq_path +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x85a7ae50 ata_link_printk +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85cb416c mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x8612f557 tcp_close +EXPORT_SYMBOL vmlinux 0x8617d92a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x862bc663 memset16 +EXPORT_SYMBOL vmlinux 0x86332725 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x864cf3a7 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86609d46 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x8666995b sgl_alloc +EXPORT_SYMBOL vmlinux 0x866ab0f8 input_release_device +EXPORT_SYMBOL vmlinux 0x8674ad7f generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x8675eecd finalize_exec +EXPORT_SYMBOL vmlinux 0x867bdb64 vfs_symlink +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86eb0c08 proc_dointvec +EXPORT_SYMBOL vmlinux 0x86eb1439 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870d5a1c __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x87141761 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x8718eb80 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x8761c6e5 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x87769b89 dst_destroy +EXPORT_SYMBOL vmlinux 0x8783d8ae xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x878649a1 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x87c5a70c jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x87d9b91e eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x880bd7e4 vfs_create +EXPORT_SYMBOL vmlinux 0x881033d8 udp_skb_destructor +EXPORT_SYMBOL vmlinux 0x881bad5e phy_mipi_dphy_config_validate +EXPORT_SYMBOL vmlinux 0x88747710 nf_log_trace +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x88906c7a __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x88a18e9e get_fs_type +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88b2deca sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x88b87d4b set_wb_congested +EXPORT_SYMBOL vmlinux 0x88b8f9f3 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x88bcf9a8 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x88d626c4 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x88d6a395 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88e570f1 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x8904a8dc consume_skb +EXPORT_SYMBOL vmlinux 0x8906e645 sock_i_uid +EXPORT_SYMBOL vmlinux 0x890de126 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0x8924c746 page_mapping +EXPORT_SYMBOL vmlinux 0x892bdd0d tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x893922eb ata_print_version +EXPORT_SYMBOL vmlinux 0x89505c3e register_sound_mixer +EXPORT_SYMBOL vmlinux 0x89526872 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x8952c6ea sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x89624137 sock_create_lite +EXPORT_SYMBOL vmlinux 0x8968d945 put_cmsg +EXPORT_SYMBOL vmlinux 0x89e208f3 textsearch_register +EXPORT_SYMBOL vmlinux 0x89e4e3e3 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x89e96a30 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x89eb3a43 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x8a1de6d2 fget +EXPORT_SYMBOL vmlinux 0x8a3784dc __xa_alloc +EXPORT_SYMBOL vmlinux 0x8a3b1285 __xa_erase +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7e0d63 registered_fb +EXPORT_SYMBOL vmlinux 0x8a84be15 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8a879147 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x8a884a0c snd_timer_instance_free +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a99a8a6 lease_modify +EXPORT_SYMBOL vmlinux 0x8aa30959 ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x8ac136ae imx_sc_misc_get_control +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8aca1c9f max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8adcabbf simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b06eba9 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x8b1337ec kmalloc_caches +EXPORT_SYMBOL vmlinux 0x8b28f2c0 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8b46f8d6 from_kprojid +EXPORT_SYMBOL vmlinux 0x8b4c7089 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b82aa68 phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x8b87c1a2 qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x8b8b9c7f in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8bbceeb4 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x8be03286 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x8bee75d7 proc_dostring +EXPORT_SYMBOL vmlinux 0x8c1aa049 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x8c238b87 cqhci_resume +EXPORT_SYMBOL vmlinux 0x8c2599ba param_set_bool +EXPORT_SYMBOL vmlinux 0x8c3c1f8c tty_register_device +EXPORT_SYMBOL vmlinux 0x8c5d254a dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c753a51 kfree_skb +EXPORT_SYMBOL vmlinux 0x8c8b2ce7 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x8ca10772 gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0x8caacccb proto_register +EXPORT_SYMBOL vmlinux 0x8cb316a8 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x8cc53d20 __par_io_config_pin +EXPORT_SYMBOL vmlinux 0x8cc73125 of_get_address +EXPORT_SYMBOL vmlinux 0x8cca04fc netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x8ccf0630 inc_node_state +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cdfaa12 get_super_thawed +EXPORT_SYMBOL vmlinux 0x8ce13cc5 udplite_table +EXPORT_SYMBOL vmlinux 0x8cf90f60 snd_component_add +EXPORT_SYMBOL vmlinux 0x8d05e370 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x8d07ded1 stop_tty +EXPORT_SYMBOL vmlinux 0x8d0f0792 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x8d1e5bf6 build_skb +EXPORT_SYMBOL vmlinux 0x8d2be067 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8d3984fc dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x8d520699 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5c5165 fasync_helper +EXPORT_SYMBOL vmlinux 0x8d66e9e4 unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d77da6a register_gifconf +EXPORT_SYMBOL vmlinux 0x8d7f5377 of_get_parent +EXPORT_SYMBOL vmlinux 0x8d857215 md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8db7fa33 __mdiobus_read +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8de7d67e dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x8df12680 filemap_flush +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8df4afd9 qe_put_snum +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8dfefc0d kvmalloc_node +EXPORT_SYMBOL vmlinux 0x8e116a88 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x8e44422d of_phy_connect +EXPORT_SYMBOL vmlinux 0x8e4872d3 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x8e5dc050 iov_iter_revert +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e876807 rps_needed +EXPORT_SYMBOL vmlinux 0x8e8e707a fb_find_mode +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8e9417cb kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x8ec2792c dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL vmlinux 0x8ecf67ff of_node_name_prefix +EXPORT_SYMBOL vmlinux 0x8edbfffb hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x8edc6d6e configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x8ef69e4f devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x8ef70c92 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x8ef8aeaa send_sig_mceerr +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f2d394c netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x8f3625fe _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x8f3a5352 iget5_locked +EXPORT_SYMBOL vmlinux 0x8f41f4a9 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x8f515620 rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5e4ad9 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f686806 md_update_sb +EXPORT_SYMBOL vmlinux 0x8f8f657f bsearch +EXPORT_SYMBOL vmlinux 0x8f94c853 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8f9baf4d dqget +EXPORT_SYMBOL vmlinux 0x8fbf774b udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x8fcdf047 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x8fce418f hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x8fcf844b bprm_change_interp +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fe35457 xxh32_update +EXPORT_SYMBOL vmlinux 0x8fed5ada napi_disable +EXPORT_SYMBOL vmlinux 0x8fef4373 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x901a3e40 mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x901a5319 __f_setown +EXPORT_SYMBOL vmlinux 0x9023aa38 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x9035751c sock_bind_add +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x9056142d rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0x90609db6 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x906f5252 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9078330a keyring_search +EXPORT_SYMBOL vmlinux 0x907e4728 seq_dentry +EXPORT_SYMBOL vmlinux 0x90885b63 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x909244c5 param_set_invbool +EXPORT_SYMBOL vmlinux 0x909332ca register_sysctl +EXPORT_SYMBOL vmlinux 0x90a8b1a0 tty_hangup +EXPORT_SYMBOL vmlinux 0x90b34f83 security_binder_transaction +EXPORT_SYMBOL vmlinux 0x90bf3360 should_remove_suid +EXPORT_SYMBOL vmlinux 0x90c17062 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90df04a0 component_match_add_release +EXPORT_SYMBOL vmlinux 0x910096b6 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x91012220 sock_from_file +EXPORT_SYMBOL vmlinux 0x910b6074 igrab +EXPORT_SYMBOL vmlinux 0x910fd727 generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0x9135dba6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x91485db9 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x9154cdd3 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x915df785 contig_page_data +EXPORT_SYMBOL vmlinux 0x917cbb28 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91980879 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a408da sound_class +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91ae55fb page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0x91b59263 secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0x91bd7d10 vga_tryget +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x920112a6 blackhole_netdev +EXPORT_SYMBOL vmlinux 0x92071d8b notify_change +EXPORT_SYMBOL vmlinux 0x920f06f5 key_type_keyring +EXPORT_SYMBOL vmlinux 0x921b07b1 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x9229f082 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923ea194 __xa_insert +EXPORT_SYMBOL vmlinux 0x924e2b8a param_get_int +EXPORT_SYMBOL vmlinux 0x927aaab2 phy_write_mmd +EXPORT_SYMBOL vmlinux 0x9292dca2 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x92952429 generic_fillattr +EXPORT_SYMBOL vmlinux 0x9295bcf9 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x92af79e7 reuseport_alloc +EXPORT_SYMBOL vmlinux 0x92b1749b __destroy_inode +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92bbd652 __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x92e44b22 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x931a4c30 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9329fbe4 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x9341b72d get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x935c5284 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x93713086 sg_split +EXPORT_SYMBOL vmlinux 0x937639fb i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x938d6ddc vme_irq_generate +EXPORT_SYMBOL vmlinux 0x93a69ceb sk_mc_loop +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a7a69f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x93adbe19 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x93adcdb2 bio_devname +EXPORT_SYMBOL vmlinux 0x93b27077 rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bdaa1f dma_pool_free +EXPORT_SYMBOL vmlinux 0x93bed766 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x93d95b3a vme_slave_set +EXPORT_SYMBOL vmlinux 0x93e9176d tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x93ef0dcf xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x9415da83 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x941bb250 seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0x9425caca _raw_write_lock +EXPORT_SYMBOL vmlinux 0x943951f7 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x943dc8aa crc32_be +EXPORT_SYMBOL vmlinux 0x943de5b8 inc_nlink +EXPORT_SYMBOL vmlinux 0x94418006 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x944b4e25 seq_release +EXPORT_SYMBOL vmlinux 0x94664639 give_up_console +EXPORT_SYMBOL vmlinux 0x9476e538 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x94855ea1 inode_insert5 +EXPORT_SYMBOL vmlinux 0x948ba486 netlink_set_err +EXPORT_SYMBOL vmlinux 0x948d719a padata_do_serial +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94985bbd shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x94995d2b tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x949b42fd __tcf_idr_release +EXPORT_SYMBOL vmlinux 0x94a5c24f scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x94b5c757 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94bf79aa dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x94d08a2d __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x94d45b9e of_n_size_cells +EXPORT_SYMBOL vmlinux 0x94e1e45b security_inode_init_security +EXPORT_SYMBOL vmlinux 0x94eb0873 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x9502c6bf d_alloc_anon +EXPORT_SYMBOL vmlinux 0x950b41bf mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x9521f42f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x95368d33 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x9537316e cdrom_open +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x955cc2a8 down_read_interruptible +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x957b43e9 xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x958999f8 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x958d22eb writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x959d420b generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x95badc24 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x95d3d918 refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x9609a4e2 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x961185da set_bh_page +EXPORT_SYMBOL vmlinux 0x962c4977 clkdev_add +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965f34a2 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x9668aac2 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x96692436 ucc_fast_free +EXPORT_SYMBOL vmlinux 0x9672dc81 of_get_cpu_state_node +EXPORT_SYMBOL vmlinux 0x96744c2a mdio_bus_type +EXPORT_SYMBOL vmlinux 0x967e21d8 pci_find_resource +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968d9332 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x96be1090 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d00d71 of_phy_deregister_fixed_link +EXPORT_SYMBOL vmlinux 0x9709dbc5 current_work +EXPORT_SYMBOL vmlinux 0x97106714 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x971bf817 input_get_poll_interval +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x972cf4fa kunmap_high +EXPORT_SYMBOL vmlinux 0x97350edd inet_getname +EXPORT_SYMBOL vmlinux 0x975952d3 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x975df142 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x9767d5c9 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x97820b7e mpage_readpage +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979d8b2e tegra_dfll_suspend +EXPORT_SYMBOL vmlinux 0x97a7dda9 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97b6b1f5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c9bcb5 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x97cb1c92 unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0x97d3d64b xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x97d43bed param_ops_int +EXPORT_SYMBOL vmlinux 0x97f27a6c prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x9807a96c sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x9807b1d9 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x9811c38c xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x983284c0 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x983ac031 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x983c8de9 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x984378d7 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x985eb3d3 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x986ae100 __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x98832da8 utf8ncursor +EXPORT_SYMBOL vmlinux 0x988504b2 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x9890508e xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x9891d82e ucc_slow_stop_tx +EXPORT_SYMBOL vmlinux 0x9892e7c9 proc_create +EXPORT_SYMBOL vmlinux 0x98a21b5a neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x98c1a0f6 sk_net_capable +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98cb8a9c __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98ee8024 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x98f99f7b snd_card_free +EXPORT_SYMBOL vmlinux 0x9900a098 msm_pinctrl_dev_pm_ops +EXPORT_SYMBOL vmlinux 0x99094fb2 qcom_scm_is_available +EXPORT_SYMBOL vmlinux 0x991d72b4 rtc_add_groups +EXPORT_SYMBOL vmlinux 0x992a8ceb kmap_atomic_high_prot +EXPORT_SYMBOL vmlinux 0x992caa64 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x992e2bba key_reject_and_link +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993b03df percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0x9947700f seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x9948a138 ucc_slow_disable +EXPORT_SYMBOL vmlinux 0x994b9144 tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x996829ea swake_up_all +EXPORT_SYMBOL vmlinux 0x996ba3bb blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x99725dbd snd_power_wait +EXPORT_SYMBOL vmlinux 0x99876eab blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x9987b998 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x998fbb9d fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x9990f487 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x9994a7bb sock_set_reuseport +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cebb85 inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99e742c9 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x99fe0c43 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0x9a02b171 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x9a047675 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a12d07b sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1a23de of_dev_get +EXPORT_SYMBOL vmlinux 0x9a1a9b74 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a25b538 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x9a41f841 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x9a45bf6a dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x9a4cd694 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x9a547ef1 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a5ce96f pci_bus_type +EXPORT_SYMBOL vmlinux 0x9a7265dd __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x9a7ce044 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a89a7a3 proc_douintvec +EXPORT_SYMBOL vmlinux 0x9aa9cea4 trace_print_flags_seq_u64 +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9abe5634 fput +EXPORT_SYMBOL vmlinux 0x9ac3e5f1 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x9ac8e99d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x9acb8066 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x9aeef157 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x9af602d4 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x9b02ca77 register_sound_special +EXPORT_SYMBOL vmlinux 0x9b05246d dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x9b0e1ec3 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x9b128a66 qcom_scm_set_remote_state +EXPORT_SYMBOL vmlinux 0x9b1b7306 xxh64 +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b317cdc mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3f8f12 nla_put +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b427b93 inet_addr_type +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b51637b i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b8204f1 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x9b860691 tty_unlock +EXPORT_SYMBOL vmlinux 0x9b9abe91 generic_file_open +EXPORT_SYMBOL vmlinux 0x9bbe96ae skb_split +EXPORT_SYMBOL vmlinux 0x9beb9aaa register_cdrom +EXPORT_SYMBOL vmlinux 0x9c11f83f _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x9c2de6fa mr_table_alloc +EXPORT_SYMBOL vmlinux 0x9c53d267 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9c5ee867 user_path_create +EXPORT_SYMBOL vmlinux 0x9c70e386 skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0x9c7419dc ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9c849d3a file_remove_privs +EXPORT_SYMBOL vmlinux 0x9c89b835 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x9c956229 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x9ca28258 snd_device_register +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbbec8a genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x9cc98cd5 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce7fed5 dma_resv_init +EXPORT_SYMBOL vmlinux 0x9ce9d07f snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x9d036a5d discard_new_inode +EXPORT_SYMBOL vmlinux 0x9d06ac33 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d20fd74 page_get_link +EXPORT_SYMBOL vmlinux 0x9d221da2 skb_seq_read +EXPORT_SYMBOL vmlinux 0x9d23e886 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d509330 soft_cursor +EXPORT_SYMBOL vmlinux 0x9d5cd559 reservation_ww_class +EXPORT_SYMBOL vmlinux 0x9d659fc8 vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d741db5 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x9d7fe713 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x9d8efd55 set_binfmt +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9da4f77e devm_register_netdev +EXPORT_SYMBOL vmlinux 0x9dc08a71 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x9ddcf6ff of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x9de8b10c devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0x9deb3f0c xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0ec162 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e3b8e22 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e54ecba vme_irq_free +EXPORT_SYMBOL vmlinux 0x9e59088d xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e8854cb of_lpddr3_get_min_tck +EXPORT_SYMBOL vmlinux 0x9e894ded bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x9e900d7b simple_open +EXPORT_SYMBOL vmlinux 0x9e91484b xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0x9e9a9cb4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea00252 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x9eab5bf8 snd_jack_new +EXPORT_SYMBOL vmlinux 0x9eb215c0 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec11ae5 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ec7f432 revalidate_disk +EXPORT_SYMBOL vmlinux 0x9ec883b6 abort_creds +EXPORT_SYMBOL vmlinux 0x9ecb856f pci_map_rom +EXPORT_SYMBOL vmlinux 0x9ed11cdf console_start +EXPORT_SYMBOL vmlinux 0x9ed39a54 down_trylock +EXPORT_SYMBOL vmlinux 0x9ed8b616 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9eea6334 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x9efc7e72 __page_symlink +EXPORT_SYMBOL vmlinux 0x9efcf2f2 tegra_ivc_read_get_next_frame +EXPORT_SYMBOL vmlinux 0x9f086537 page_address +EXPORT_SYMBOL vmlinux 0x9f3c9845 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f5ba6ad ucc_slow_graceful_stop_tx +EXPORT_SYMBOL vmlinux 0x9f63fa83 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x9f7030c0 has_capability +EXPORT_SYMBOL vmlinux 0x9f8bf718 flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f98cd3b ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x9f98d507 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x9f9a5310 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fd1a8d4 __frontswap_test +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe0c2c6 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ff50d1d scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0x9ff5c7a4 elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffacade __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0xa0112f45 user_revoke +EXPORT_SYMBOL vmlinux 0xa0133f9a cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0xa018b82b tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0xa02090c5 snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL vmlinux 0xa028a13b iptun_encaps +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa050fadf page_symlink +EXPORT_SYMBOL vmlinux 0xa052cd90 rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa05df183 fs_param_is_bool +EXPORT_SYMBOL vmlinux 0xa064fb9b sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0xa065da15 of_mdiobus_child_is_phy +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa06f0a74 blk_get_request +EXPORT_SYMBOL vmlinux 0xa07f71f1 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0870726 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xa08bffe2 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0a07438 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0xa0aae687 imx_ssi_fiq_end +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0aefe3e bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b3954e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xa0bf10a4 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xa0ccab22 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0eb889e md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10f81bc param_set_int +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa13456b7 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xa15d00a0 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0xa15d0131 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xa167c2b9 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0xa16b21fb wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xa17bd3fc add_wait_queue +EXPORT_SYMBOL vmlinux 0xa1839690 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa19cf93e __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xa1a70b14 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xa1af8a1f vfs_mkobj +EXPORT_SYMBOL vmlinux 0xa1bacd91 qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d131ed vmemdup_user +EXPORT_SYMBOL vmlinux 0xa1d9e172 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa1e43ac0 __pagevec_release +EXPORT_SYMBOL vmlinux 0xa1f06870 clk_bulk_get +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa228d2ee netdev_printk +EXPORT_SYMBOL vmlinux 0xa2329e73 touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0xa240d908 qdisc_put +EXPORT_SYMBOL vmlinux 0xa24491bf ida_free +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa253ad8c pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa264bb9b of_match_node +EXPORT_SYMBOL vmlinux 0xa26b5d11 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa28d3d16 mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0xa28e5461 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0xa2af15cd pci_choose_state +EXPORT_SYMBOL vmlinux 0xa2b2342d get_unmapped_area +EXPORT_SYMBOL vmlinux 0xa2cc3c95 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa2d9846e param_get_ulong +EXPORT_SYMBOL vmlinux 0xa30ac879 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xa325cbdf d_move +EXPORT_SYMBOL vmlinux 0xa3294adc set_anon_super_fc +EXPORT_SYMBOL vmlinux 0xa32d2614 phy_write_paged +EXPORT_SYMBOL vmlinux 0xa3313e71 seq_escape +EXPORT_SYMBOL vmlinux 0xa351071a sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xa35a308f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xa38878f8 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0xa38d5f44 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xa38f47d0 clear_inode +EXPORT_SYMBOL vmlinux 0xa39655e1 ucc_fast_transmit_on_demand +EXPORT_SYMBOL vmlinux 0xa3a4c337 nand_correct_data +EXPORT_SYMBOL vmlinux 0xa3a54979 init_on_free +EXPORT_SYMBOL vmlinux 0xa3ac158f sg_alloc_table +EXPORT_SYMBOL vmlinux 0xa3b4e3f6 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xa3b6e1b7 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0xa3c00c06 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0xa3d5c118 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xa3ddb954 qdisc_reset +EXPORT_SYMBOL vmlinux 0xa3e62172 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa40fa01f writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xa42e8e54 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xa43799a8 rfs_needed +EXPORT_SYMBOL vmlinux 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xa4552208 init_on_alloc +EXPORT_SYMBOL vmlinux 0xa45f46ea dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa46c0096 register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xa46ccf00 dquot_acquire +EXPORT_SYMBOL vmlinux 0xa46e707e netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xa48a5503 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xa4959807 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xa49a9d26 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b7f2cc sync_file_get_fence +EXPORT_SYMBOL vmlinux 0xa4c4a6df pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4dde73c tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xa4df3f02 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xa4ec39a6 input_get_timestamp +EXPORT_SYMBOL vmlinux 0xa4fca045 qcom_scm_ocmem_lock +EXPORT_SYMBOL vmlinux 0xa505426a fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0xa50f0c20 inode_io_list_del +EXPORT_SYMBOL vmlinux 0xa5169a2a irq_to_desc +EXPORT_SYMBOL vmlinux 0xa5283ba9 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa553de30 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa55be397 kthread_blkcg +EXPORT_SYMBOL vmlinux 0xa55c94ed unregister_key_type +EXPORT_SYMBOL vmlinux 0xa561cb85 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa5684076 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xa5689824 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0xa56fde1c __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xa572609d tcp_check_req +EXPORT_SYMBOL vmlinux 0xa58220a5 module_refcount +EXPORT_SYMBOL vmlinux 0xa59052f0 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa5ad162f jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xa5ba819c bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xa5e0a282 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa5eb9a6f noop_llseek +EXPORT_SYMBOL vmlinux 0xa5ebbe1d tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa63f6044 kernel_read +EXPORT_SYMBOL vmlinux 0xa6414dac sk_common_release +EXPORT_SYMBOL vmlinux 0xa64f838b dma_dummy_ops +EXPORT_SYMBOL vmlinux 0xa65a1b93 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xa65acdbb fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0xa6692ec9 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xa66e3243 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa674ffb0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa68613dd get_jiffies_64 +EXPORT_SYMBOL vmlinux 0xa6878c19 param_get_short +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6997cf5 vprintk_emit +EXPORT_SYMBOL vmlinux 0xa6a1122f __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xa6a7a2ad div_s64_rem +EXPORT_SYMBOL vmlinux 0xa6aee628 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xa6b90811 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xa70ac583 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa70bc96d qcom_scm_restore_sec_cfg_available +EXPORT_SYMBOL vmlinux 0xa71f7c1b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xa725ff44 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xa72957cc __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xa72c5b95 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0xa72fd1b2 tty_port_init +EXPORT_SYMBOL vmlinux 0xa73ee62b _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa753f6ba vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xa75b122b _dev_notice +EXPORT_SYMBOL vmlinux 0xa76f399c eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa7801974 configfs_register_default_group +EXPORT_SYMBOL vmlinux 0xa7916db6 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xa7a3f85f jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xa7aef36c cad_pid +EXPORT_SYMBOL vmlinux 0xa7b3181c up_read +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa7f3af0a udp_seq_stop +EXPORT_SYMBOL vmlinux 0xa7f7976b page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xa7fbd37b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xa7fd7439 config_group_init +EXPORT_SYMBOL vmlinux 0xa804c5ef i2c_clients_command +EXPORT_SYMBOL vmlinux 0xa80acb56 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xa8124830 ll_rw_block +EXPORT_SYMBOL vmlinux 0xa82fd6f7 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa832abcf inet_frag_kill +EXPORT_SYMBOL vmlinux 0xa83a9fae nf_log_unset +EXPORT_SYMBOL vmlinux 0xa841cd10 set_nlink +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa844e2a9 mmc_command_done +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa84d1a67 pci_irq_vector +EXPORT_SYMBOL vmlinux 0xa855c83d t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xa87e9d9f vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xa8a08caf trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8c662d2 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8e94d1e snd_timer_open +EXPORT_SYMBOL vmlinux 0xa8ec7d34 crc_ccitt +EXPORT_SYMBOL vmlinux 0xa8ee65c1 omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa8f7f280 idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xa8f8cdb8 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xa8fc1d70 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa901de01 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0xa9068311 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xa90f5de0 iunique +EXPORT_SYMBOL vmlinux 0xa914940c dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0xa92bf604 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa937a72f jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa95fb111 __neigh_create +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa96db198 fc_mount +EXPORT_SYMBOL vmlinux 0xa977faca block_truncate_page +EXPORT_SYMBOL vmlinux 0xa9a7432f qcom_scm_pas_mem_setup +EXPORT_SYMBOL vmlinux 0xa9a94c16 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xa9c80559 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xa9ccbe80 mdio_find_bus +EXPORT_SYMBOL vmlinux 0xa9d8e919 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xa9eb465f ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0xa9ed62d2 tegra_fuse_readl +EXPORT_SYMBOL vmlinux 0xa9f7f473 rproc_add +EXPORT_SYMBOL vmlinux 0xa9fd385b of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xaa02a2e5 devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xaa1382b8 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xaa17a5af skb_append +EXPORT_SYMBOL vmlinux 0xaa236a52 skb_queue_head +EXPORT_SYMBOL vmlinux 0xaa304f90 tty_port_put +EXPORT_SYMBOL vmlinux 0xaa330fa7 dm_register_target +EXPORT_SYMBOL vmlinux 0xaa42e16a gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0xaa4b86dd rproc_alloc +EXPORT_SYMBOL vmlinux 0xaa515d96 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0xaa5e2610 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xaa68d907 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa7c022f pci_fixup_device +EXPORT_SYMBOL vmlinux 0xaa7e03d3 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xaa91f77a pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaabcba77 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xaacc9e27 sort +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaaf07947 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xaaf45b43 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xaaf77a02 flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0xaafd9237 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab204f91 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xab238b02 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0xab28dfeb pci_restore_state +EXPORT_SYMBOL vmlinux 0xab2ad76e inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab50fbc1 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xab535c18 __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0xab5e345d ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab6f831a kill_fasync +EXPORT_SYMBOL vmlinux 0xab6f9d00 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab7603e7 imx_ssi_fiq_start +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8fe6d4 key_unlink +EXPORT_SYMBOL vmlinux 0xab943c6a __scm_destroy +EXPORT_SYMBOL vmlinux 0xab98092f dquot_file_open +EXPORT_SYMBOL vmlinux 0xaba01789 kill_litter_super +EXPORT_SYMBOL vmlinux 0xabb35cdb tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xabb9c64a sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xabd2c6f2 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xabe5fe2e register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xabe60f9d neigh_for_each +EXPORT_SYMBOL vmlinux 0xabe77661 ps2_command +EXPORT_SYMBOL vmlinux 0xabeda78c follow_up +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xac16e053 input_register_handle +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac23cf52 sk_dst_check +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac331b07 ucc_slow_free +EXPORT_SYMBOL vmlinux 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xac47dc06 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xac4a1f98 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xac4ba68e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xac582aae scsi_host_busy +EXPORT_SYMBOL vmlinux 0xac58b7a8 skb_copy +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac629cdd phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xac7a5a64 __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xac7b6160 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0xac83ed8b nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac8b99b0 thaw_bdev +EXPORT_SYMBOL vmlinux 0xac8cd1ae path_is_under +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xaca995a5 sync_inode +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb31ecf _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xacc1a5c6 set_create_files_as +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace2f17c cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xacef37aa vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xacf41db4 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xacfdf72b snd_register_device +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0e6bd4 ioremap_wc +EXPORT_SYMBOL vmlinux 0xad13cc68 input_set_keycode +EXPORT_SYMBOL vmlinux 0xad1f0f20 dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0xad347df7 vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0xad44f76c mem_map +EXPORT_SYMBOL vmlinux 0xad6f7144 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xad71eb8e nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad7ae3a7 security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xadbc6c18 of_get_next_cpu_node +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadcd6754 tcp_mmap +EXPORT_SYMBOL vmlinux 0xadd22e70 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0xaddae4bf register_framebuffer +EXPORT_SYMBOL vmlinux 0xaddbeb8d dm_put_table_device +EXPORT_SYMBOL vmlinux 0xadde76ab pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xaddf8db7 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0xade8c10b nf_ct_attach +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae10db53 bdevname +EXPORT_SYMBOL vmlinux 0xae128389 param_ops_short +EXPORT_SYMBOL vmlinux 0xae296d28 current_time +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae408327 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xae553bb7 md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xae5e04e5 xfrm_input +EXPORT_SYMBOL vmlinux 0xae7bbdd3 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xae9849dd __request_region +EXPORT_SYMBOL vmlinux 0xae9e9065 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xaeab13cb of_node_get +EXPORT_SYMBOL vmlinux 0xaeab755e sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeb68add dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xaeccba82 get_watch_queue +EXPORT_SYMBOL vmlinux 0xaece77aa serio_close +EXPORT_SYMBOL vmlinux 0xaee03463 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xaee6fbae netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xaee7f740 jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0xaee95991 ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0xaf076011 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xaf081a6e devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xaf16f615 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xaf2b9815 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf513c6d pskb_expand_head +EXPORT_SYMBOL vmlinux 0xaf71b6fa rproc_add_carveout +EXPORT_SYMBOL vmlinux 0xaf7e0821 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xaf82509e __register_chrdev +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf86c3c2 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91fd1a pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xaf9a0a2a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0xafb1eb03 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xafd98dc8 __put_user_ns +EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0xafeb7485 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xaffa71f6 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xb00124fa param_set_ulong +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb01f6d3c loop_register_transfer +EXPORT_SYMBOL vmlinux 0xb02514f3 register_sound_special_device +EXPORT_SYMBOL vmlinux 0xb028d1a1 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xb0341649 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xb0503b0a vlan_for_each +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb076ba40 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xb0857e34 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xb095c801 security_unix_may_send +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a3c5d2 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xb0a82c3e flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0xb0c73e18 vfs_get_fsid +EXPORT_SYMBOL vmlinux 0xb0d5d855 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xb0da13e9 input_set_timestamp +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ea4613 generic_permission +EXPORT_SYMBOL vmlinux 0xb0f3de81 neigh_destroy +EXPORT_SYMBOL vmlinux 0xb0f8a1fb vm_get_page_prot +EXPORT_SYMBOL vmlinux 0xb0ffda6d __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xb10a7d7a xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xb10bee3d md_integrity_register +EXPORT_SYMBOL vmlinux 0xb10d34a7 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb128f6cb kthread_bind +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13b465a __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14d0a86 vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb1541d46 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb171f95a skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb18f47bd phy_set_max_speed +EXPORT_SYMBOL vmlinux 0xb1a036e9 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1abe565 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1bcbdef __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0xb1bde5be sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1dcefda dm_put_device +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1ef545a blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xb1f25fa7 ucc_fast_enable +EXPORT_SYMBOL vmlinux 0xb1f9b326 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xb2110e6f dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xb2136c8b pci_read_config_byte +EXPORT_SYMBOL vmlinux 0xb21416b2 put_tty_driver +EXPORT_SYMBOL vmlinux 0xb216d331 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0xb21a48d6 bio_reset +EXPORT_SYMBOL vmlinux 0xb2253dfa jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xb2296a3f mmc_can_erase +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb235f906 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb242a7f6 __breadahead +EXPORT_SYMBOL vmlinux 0xb249a391 omap_request_dma +EXPORT_SYMBOL vmlinux 0xb24dc68f dcache_dir_open +EXPORT_SYMBOL vmlinux 0xb25e885f xp_free +EXPORT_SYMBOL vmlinux 0xb27f2b56 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xb286c477 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0xb28d325d ucc_slow_init +EXPORT_SYMBOL vmlinux 0xb2a10cc9 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb2b38635 input_get_keycode +EXPORT_SYMBOL vmlinux 0xb2b6bbb5 sk_capable +EXPORT_SYMBOL vmlinux 0xb2c0a0d0 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xb2d0053e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xb2d42202 udp6_seq_ops +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2ecfb77 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb32728bb qcom_scm_iommu_secure_ptbl_init +EXPORT_SYMBOL vmlinux 0xb32da502 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xb33b9179 eth_gro_receive +EXPORT_SYMBOL vmlinux 0xb3495261 snd_device_free +EXPORT_SYMBOL vmlinux 0xb34f558a buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xb3574818 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xb3667805 dqstats +EXPORT_SYMBOL vmlinux 0xb367c984 mxc_set_irq_fiq +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb36bb0c2 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb3ac57b2 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0xb3aec8ce __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb3b1236a km_policy_expired +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3bfb8f1 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e0b89f generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xb3ea538a fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb416b027 sock_i_ino +EXPORT_SYMBOL vmlinux 0xb41938c9 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42d16f8 devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xb42d9b77 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0xb437a552 mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0xb438c364 bmap +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb457c639 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xb45c891b qdisc_hash_add +EXPORT_SYMBOL vmlinux 0xb465ec95 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb466d134 register_md_personality +EXPORT_SYMBOL vmlinux 0xb476c8f4 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0xb4861577 netdev_state_change +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4939f57 param_ops_bool +EXPORT_SYMBOL vmlinux 0xb4ab1a38 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0xb4b71ca0 skb_copy_header +EXPORT_SYMBOL vmlinux 0xb4d80280 build_skb_around +EXPORT_SYMBOL vmlinux 0xb4dea7f3 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xb4e6a266 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb4fde2fb scsi_add_device +EXPORT_SYMBOL vmlinux 0xb51175e3 sock_no_getname +EXPORT_SYMBOL vmlinux 0xb51db220 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xb5232be2 generic_write_checks +EXPORT_SYMBOL vmlinux 0xb53d1675 clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0xb53e2a10 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xb551a930 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0xb5631ad2 netlink_unicast +EXPORT_SYMBOL vmlinux 0xb56a4714 softnet_data +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb576aa5a try_to_release_page +EXPORT_SYMBOL vmlinux 0xb57bcd54 mntput +EXPORT_SYMBOL vmlinux 0xb57e97a1 tty_port_open +EXPORT_SYMBOL vmlinux 0xb586637b sock_set_keepalive +EXPORT_SYMBOL vmlinux 0xb587c47c write_inode_now +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb58b84ff netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xb59b2199 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a55777 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b09b80 passthru_features_check +EXPORT_SYMBOL vmlinux 0xb5bc9587 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb5bf3190 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xb5c23aba of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xb5c38e67 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xb5c67c64 nla_reserve +EXPORT_SYMBOL vmlinux 0xb5e77633 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0xb5f0f829 __frontswap_load +EXPORT_SYMBOL vmlinux 0xb5f86678 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xb5fd6be3 pci_get_device +EXPORT_SYMBOL vmlinux 0xb61c571f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xb62f451c _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xb63c90e2 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xb63e3c67 tcf_idr_create +EXPORT_SYMBOL vmlinux 0xb64a31d7 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xb6564f70 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb6614282 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xb66183bb scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xb662fc8f max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xb664fba9 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67d33ac __block_write_begin +EXPORT_SYMBOL vmlinux 0xb67e9dbe kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68a4442 qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb694335d forget_cached_acl +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6aeeece mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0xb6b6284e xz_dec_run +EXPORT_SYMBOL vmlinux 0xb6ef240c dquot_operations +EXPORT_SYMBOL vmlinux 0xb70e73bf dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0xb71d986d snd_pcm_hw_limit_rates +EXPORT_SYMBOL vmlinux 0xb71e012e tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xb72f1239 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xb7362c90 do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0xb73dfe12 dump_align +EXPORT_SYMBOL vmlinux 0xb74283c1 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xb77bb526 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xb77e8012 dev_lstats_read +EXPORT_SYMBOL vmlinux 0xb7872388 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb78e2050 qcom_scm_pas_init_image +EXPORT_SYMBOL vmlinux 0xb7ad1d33 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xb7b107b3 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7c7f08a phy_advertise_supported +EXPORT_SYMBOL vmlinux 0xb7dd21d9 generic_fadvise +EXPORT_SYMBOL vmlinux 0xb7df0e97 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xb80f77b2 blk_rq_init +EXPORT_SYMBOL vmlinux 0xb812386a netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0xb816fadf __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0xb82aab7e configfs_unregister_group +EXPORT_SYMBOL vmlinux 0xb82ae742 simple_lookup +EXPORT_SYMBOL vmlinux 0xb83ddb96 tcp_peek_len +EXPORT_SYMBOL vmlinux 0xb842716c qcom_scm_ocmem_lock_available +EXPORT_SYMBOL vmlinux 0xb853586b param_ops_string +EXPORT_SYMBOL vmlinux 0xb864b84b ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0xb865601f devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb868ed07 unix_detach_fds +EXPORT_SYMBOL vmlinux 0xb87a1eea nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xb8872071 kthread_create_worker +EXPORT_SYMBOL vmlinux 0xb8959cc2 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb8aa38f9 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8c17907 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xb8c66c45 dma_fence_get_status +EXPORT_SYMBOL vmlinux 0xb8e15315 input_unregister_device +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb90eb953 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb90f8bbe try_lookup_one_len +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb91a4de4 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb928d9b9 refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0xb92b41b4 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xb931ac2c kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb936025b sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xb93d7478 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb944ea06 neigh_update +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb9702837 pci_match_id +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb97bd8b0 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xb97cb92d xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xb99b70c6 configfs_depend_item +EXPORT_SYMBOL vmlinux 0xb99f1bbb inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0xb9a613c6 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xb9a797f6 udp_gro_complete +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9bf1348 pci_write_config_dword +EXPORT_SYMBOL vmlinux 0xb9cdb891 map_destroy +EXPORT_SYMBOL vmlinux 0xb9ce71cd __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb9d7f617 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9fadbe4 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb9fc381a qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xba15604c tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xba1ce1ca mdio_device_create +EXPORT_SYMBOL vmlinux 0xba2ffeea ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0xba3ee799 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xba43e557 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba5a0fe8 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0xba60d4df xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xba707a78 qe_get_brg_clk +EXPORT_SYMBOL vmlinux 0xba7763af input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xba7e0ca1 csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xba8d820f param_set_short +EXPORT_SYMBOL vmlinux 0xba978485 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xbaa7c8c5 krealloc +EXPORT_SYMBOL vmlinux 0xbaae6ce4 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xbad5eae5 genphy_resume +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbaeddd28 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb14eb31 bcmp +EXPORT_SYMBOL vmlinux 0xbb14f37d rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb43cbe2 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0xbb47ff19 bioset_init +EXPORT_SYMBOL vmlinux 0xbb623a4c scsi_register_interface +EXPORT_SYMBOL vmlinux 0xbb627fd1 copy_string_kernel +EXPORT_SYMBOL vmlinux 0xbb6df778 sg_nents +EXPORT_SYMBOL vmlinux 0xbb725484 md_error +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbbac01c2 param_get_ushort +EXPORT_SYMBOL vmlinux 0xbbba4761 __netif_schedule +EXPORT_SYMBOL vmlinux 0xbbcff9a4 check_zeroed_user +EXPORT_SYMBOL vmlinux 0xbbd48917 pci_iounmap +EXPORT_SYMBOL vmlinux 0xbbd58b07 simple_unlink +EXPORT_SYMBOL vmlinux 0xbbe20ce7 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0xbbe9641d page_mapped +EXPORT_SYMBOL vmlinux 0xbbf8e26e mmc_erase +EXPORT_SYMBOL vmlinux 0xbc003aee padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xbc0c621c submit_bio +EXPORT_SYMBOL vmlinux 0xbc0d736b netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc1b41fa scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc295b48 config_group_init_type_name +EXPORT_SYMBOL vmlinux 0xbc3bd913 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xbc5f513d skb_ext_add +EXPORT_SYMBOL vmlinux 0xbc60f0a6 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xbc61557d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xbc7300f3 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xbc7b9761 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0xbc870930 of_lpddr3_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc0b9a4 iget_locked +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc54414 tty_devnum +EXPORT_SYMBOL vmlinux 0xbccf89b8 sock_wake_async +EXPORT_SYMBOL vmlinux 0xbcdc6b3e kill_pid +EXPORT_SYMBOL vmlinux 0xbce0dd79 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0xbced7034 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xbd01e5ef input_free_device +EXPORT_SYMBOL vmlinux 0xbd04dcab block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xbd0d8889 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0xbd399672 elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0xbd4b4e74 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xbd5276b5 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xbd62e47a phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0xbd6e9690 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xbd7640c8 make_kuid +EXPORT_SYMBOL vmlinux 0xbd774c51 reuseport_add_sock +EXPORT_SYMBOL vmlinux 0xbd820297 rtc_lock +EXPORT_SYMBOL vmlinux 0xbd846a81 dev_add_offload +EXPORT_SYMBOL vmlinux 0xbd8555f8 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xbd866309 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xbda2c7b7 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xbdcce231 eth_header_cache +EXPORT_SYMBOL vmlinux 0xbdd34aa2 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xbdda95de serio_rescan +EXPORT_SYMBOL vmlinux 0xbdfa1433 input_close_device +EXPORT_SYMBOL vmlinux 0xbe0e3cba tcf_queue_work +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe12a92d alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0xbe27d0f1 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xbe2cfe9d ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe4f0582 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xbe58206e vm_zone_stat +EXPORT_SYMBOL vmlinux 0xbe59d15e start_tty +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe729ccb pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0xbe816a31 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xbe961541 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xbeaa029e fb_set_suspend +EXPORT_SYMBOL vmlinux 0xbeb26b79 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xbec19219 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xbeddf30f cdev_alloc +EXPORT_SYMBOL vmlinux 0xbedf6701 inode_init_once +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeee4511 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef44e66 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xbf0c31e8 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xbf163bc0 netif_napi_del +EXPORT_SYMBOL vmlinux 0xbf29967f ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xbf40679d lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0xbf46417b dma_direct_map_page +EXPORT_SYMBOL vmlinux 0xbf48c002 pps_unregister_source +EXPORT_SYMBOL vmlinux 0xbf4d4539 udp_table +EXPORT_SYMBOL vmlinux 0xbf513322 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf5b13b5 nonseekable_open +EXPORT_SYMBOL vmlinux 0xbf6960e3 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xbf69d794 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xbf6f0e66 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xbf7347b2 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xbf75ea6c tegra114_clock_tune_cpu_trimmers_low +EXPORT_SYMBOL vmlinux 0xbf807945 seg6_push_hmac +EXPORT_SYMBOL vmlinux 0xbf88aaf5 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa25599 tcp_req_err +EXPORT_SYMBOL vmlinux 0xbfbbba30 udp_set_csum +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfd17f1e of_pci_range_to_resource +EXPORT_SYMBOL vmlinux 0xbfd9dc9b __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xbfdce7c3 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0xbfdf7bc3 mempool_create +EXPORT_SYMBOL vmlinux 0xbfe8435e simple_transaction_get +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc007a25d __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc00e35bc serio_bus +EXPORT_SYMBOL vmlinux 0xc012975a udp_pre_connect +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc02de6cf dev_uc_sync +EXPORT_SYMBOL vmlinux 0xc03f340e blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0xc040d860 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc04b3f8c ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0xc05375d8 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0xc05ce2b6 of_node_name_eq +EXPORT_SYMBOL vmlinux 0xc069dced __put_cred +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0772cf2 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc094af78 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0b383ee of_graph_get_endpoint_count +EXPORT_SYMBOL vmlinux 0xc0ba7d3c unregister_cdrom +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0d649a7 __scsi_execute +EXPORT_SYMBOL vmlinux 0xc0da0e99 dim_on_top +EXPORT_SYMBOL vmlinux 0xc0e17977 param_ops_uint +EXPORT_SYMBOL vmlinux 0xc0e53f18 inet6_protos +EXPORT_SYMBOL vmlinux 0xc0e9f2a7 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0xc0f4008e ptp_clock_register +EXPORT_SYMBOL vmlinux 0xc0f5e269 tegra_ahb_enable_smmu +EXPORT_SYMBOL vmlinux 0xc0f814df uart_add_one_port +EXPORT_SYMBOL vmlinux 0xc0fb357a dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0xc0fe497e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc13a7ba6 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0xc13f7346 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc15cfb35 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0xc15f4ed8 utf8nlen +EXPORT_SYMBOL vmlinux 0xc1638863 vfs_ioctl +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc16926bd get_tz_trend +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc1745c81 tcp_child_process +EXPORT_SYMBOL vmlinux 0xc1880831 input_set_capability +EXPORT_SYMBOL vmlinux 0xc19f786a generic_perform_write +EXPORT_SYMBOL vmlinux 0xc1aa7e67 tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0xc1b17621 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc1c47c73 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc1ca2652 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e2c742 tegra_io_rail_power_on +EXPORT_SYMBOL vmlinux 0xc1e9619d security_sock_graft +EXPORT_SYMBOL vmlinux 0xc1fdc6bd fb_blank +EXPORT_SYMBOL vmlinux 0xc2059c64 fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0xc206a837 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xc207ee07 complete_and_exit +EXPORT_SYMBOL vmlinux 0xc213a772 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xc230c9a8 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0xc256729d unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc271c3be mutex_lock +EXPORT_SYMBOL vmlinux 0xc2758871 seq_release_private +EXPORT_SYMBOL vmlinux 0xc279969a omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xc27de484 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xc2810379 proc_create_single_data +EXPORT_SYMBOL vmlinux 0xc2a9e9b0 cdev_init +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b1d4e1 lockref_put_return +EXPORT_SYMBOL vmlinux 0xc2cf2dde ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0xc2cf82c2 __devm_request_region +EXPORT_SYMBOL vmlinux 0xc2d4610a skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2eac026 ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xc2edac05 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc2ede9c5 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xc2f28b5d xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0xc2f7dc94 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xc2fbae70 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xc3038718 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc3081485 put_disk_and_module +EXPORT_SYMBOL vmlinux 0xc30bae1f neigh_ifdown +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc32e15c1 __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0xc335be41 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0xc34e9d07 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xc34f28d3 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xc358aaf8 snprintf +EXPORT_SYMBOL vmlinux 0xc36e7ccd eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc37335b0 complete +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc38ed9cc configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0xc39f12af ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0xc3acabf2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xc3be3ca0 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xc3bfb614 inet_del_offload +EXPORT_SYMBOL vmlinux 0xc3d1ef66 netdev_emerg +EXPORT_SYMBOL vmlinux 0xc3ec6065 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xc3ec7dc1 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc3ed40b3 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc427e066 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0xc42f749c pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0xc464a10a __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xc4657dc8 mempool_init +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc49db234 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xc4a46495 _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xc4bc46d5 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xc4c06852 ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0xc4c91467 __nla_put +EXPORT_SYMBOL vmlinux 0xc4e51cca proc_mkdir +EXPORT_SYMBOL vmlinux 0xc4ea9fcc mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xc4f0589e __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc4f0feb6 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0xc5020749 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xc50a8fee dquot_disable +EXPORT_SYMBOL vmlinux 0xc5156019 __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xc51cf6ea dev_close +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc581500f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc58a728d cqhci_init +EXPORT_SYMBOL vmlinux 0xc58f4b46 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0xc58f7f9d input_allocate_device +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5c9667b xfrm_register_type +EXPORT_SYMBOL vmlinux 0xc5d365a9 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xc5e08f7a tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5ee6c48 kvfree_sensitive +EXPORT_SYMBOL vmlinux 0xc5f5737a __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xc5f5e4fc ab3100_event_register +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc60e88f0 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xc62dd850 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc63a23b5 address_space_init_once +EXPORT_SYMBOL vmlinux 0xc645ce95 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc654c242 tegra_ivc_read_advance +EXPORT_SYMBOL vmlinux 0xc65910f1 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xc65baf58 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc665afca filemap_fault +EXPORT_SYMBOL vmlinux 0xc66668e7 set_disk_ro +EXPORT_SYMBOL vmlinux 0xc6679a97 tty_do_resize +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc67582c8 _dev_warn +EXPORT_SYMBOL vmlinux 0xc67db994 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0xc682805e vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0xc687d788 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xc68f0c81 read_code +EXPORT_SYMBOL vmlinux 0xc69fce52 qcom_scm_qsmmu500_wait_safe_toggle +EXPORT_SYMBOL vmlinux 0xc6a223ce pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xc6b37b0a io_uring_get_socket +EXPORT_SYMBOL vmlinux 0xc6c103a4 timestamp_truncate +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d04040 arp_tbl +EXPORT_SYMBOL vmlinux 0xc6e73698 inode_set_flags +EXPORT_SYMBOL vmlinux 0xc6f0670a devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc6f94613 pin_user_pages +EXPORT_SYMBOL vmlinux 0xc70767f3 vme_bus_num +EXPORT_SYMBOL vmlinux 0xc70f5c97 __lock_page +EXPORT_SYMBOL vmlinux 0xc71619ba param_get_bool +EXPORT_SYMBOL vmlinux 0xc71b03ea dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc720e5c8 iput +EXPORT_SYMBOL vmlinux 0xc7273722 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc729e55c scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc7309c7f fiemap_prep +EXPORT_SYMBOL vmlinux 0xc7513f17 param_get_byte +EXPORT_SYMBOL vmlinux 0xc75ea91f max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xc765179e bio_init +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7919a4f always_delete_dentry +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a35703 of_graph_get_remote_node +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7bb58a2 unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d3d92c ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xc7d591e2 misc_register +EXPORT_SYMBOL vmlinux 0xc7d949c6 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f088a1 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xc7f1ca98 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xc7f59660 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc837fe75 dput +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc860954e phy_sfp_probe +EXPORT_SYMBOL vmlinux 0xc869187f genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc88a70e7 wireless_send_event +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8912e51 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xc89c9dd1 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b58a25 __memset64 +EXPORT_SYMBOL vmlinux 0xc8d0ac07 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xc8d76a3d ___pskb_trim +EXPORT_SYMBOL vmlinux 0xc910b668 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xc91ecfee sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xc9232ac7 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc9429384 devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0xc94d8e3b iomem_resource +EXPORT_SYMBOL vmlinux 0xc95a5edb skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xc95cbf99 nobh_writepage +EXPORT_SYMBOL vmlinux 0xc960e7c9 no_llseek +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc963ed5d kmap_high +EXPORT_SYMBOL vmlinux 0xc96d479b unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc9788ff0 sock_create_kern +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc982f0fa __frontswap_store +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9c9113d snd_info_register +EXPORT_SYMBOL vmlinux 0xc9ca3698 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xc9cb37f2 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9e01583 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xca04a424 unpin_user_pages +EXPORT_SYMBOL vmlinux 0xca089d29 vme_init_bridge +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca21fc40 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xca308b1e blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xca353ead security_path_rename +EXPORT_SYMBOL vmlinux 0xca3707da mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0xca3eea59 __sock_create +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca813ce6 LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9989e3 tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0xcaaa20f7 vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0xcab597e4 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xcac217aa mroute6_is_socket +EXPORT_SYMBOL vmlinux 0xcad1ed45 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0xcaecc079 sock_rfree +EXPORT_SYMBOL vmlinux 0xcaef8286 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafe072b qcom_scm_io_writel +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb042ef8 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xcb0dccab prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0xcb190790 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xcb1aa5ac input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0xcb2cd9d4 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb510bc2 complete_all +EXPORT_SYMBOL vmlinux 0xcb555d29 generic_make_request +EXPORT_SYMBOL vmlinux 0xcb5c0c9a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xcb606eb9 xa_load +EXPORT_SYMBOL vmlinux 0xcb722ab0 mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0xcb8c753b mempool_exit +EXPORT_SYMBOL vmlinux 0xcb8ffb75 kobject_add +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbb8494b tty_port_destroy +EXPORT_SYMBOL vmlinux 0xcbbbd5a4 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0xcbc6415c pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbe43e70 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xcbf1dbd0 utf8len +EXPORT_SYMBOL vmlinux 0xcc017a20 km_state_notify +EXPORT_SYMBOL vmlinux 0xcc127e7e pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xcc15f328 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0xcc21c303 skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc257513 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xcc27a9a2 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0xcc30f0f1 tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0xcc32d90f con_copy_unimap +EXPORT_SYMBOL vmlinux 0xcc3581b2 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xcc3b2cc9 __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc424667 snd_jack_report +EXPORT_SYMBOL vmlinux 0xcc45cec3 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xcc496f68 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc5acd3b kernel_bind +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0xcc724487 mpage_readahead +EXPORT_SYMBOL vmlinux 0xcc75d5ec phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0xcc7cc553 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xcc8e89b8 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xcc8f0664 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xcca9cbb5 tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0xccaadaf8 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xcccfebef __break_lease +EXPORT_SYMBOL vmlinux 0xccd9aa65 unlock_buffer +EXPORT_SYMBOL vmlinux 0xcce2c677 dump_page +EXPORT_SYMBOL vmlinux 0xccec8980 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xcceef6ad ip_fraglist_init +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd00abbc add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd094535 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xcd1a2c64 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xcd23317d get_disk_and_module +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2e9b7f inode_init_owner +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd3a1a56 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xcd3ec51d scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xcd453820 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd751613 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xcd8884bb rproc_boot +EXPORT_SYMBOL vmlinux 0xcd8ca770 da903x_query_status +EXPORT_SYMBOL vmlinux 0xcd92285c phy_resume +EXPORT_SYMBOL vmlinux 0xcda5f1af mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0xcdb40508 tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0xcdb97f75 get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd26abb elv_rb_del +EXPORT_SYMBOL vmlinux 0xcdd67637 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xcdd795fc __sg_free_table +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xcdfa135d ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xcdfac208 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0xce00b3ba lock_sock_fast +EXPORT_SYMBOL vmlinux 0xce058c41 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2d061a serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xce2e6c8f phy_attach_direct +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce51f664 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xce5300b2 get_task_exe_file +EXPORT_SYMBOL vmlinux 0xce5a3056 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce731b34 ucc_slow_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce9e4c6e skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceb2fbdf snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0xcebd9b98 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xced61359 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xceed939d abx500_register_ops +EXPORT_SYMBOL vmlinux 0xceee9cb3 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xceef9d36 sk_alloc +EXPORT_SYMBOL vmlinux 0xcef0dee7 override_creds +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf01f610 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xcf0402a8 i2c_transfer +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf259a0d ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0xcf26aa59 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0xcf32c49c blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xcf3fac84 cpumask_next +EXPORT_SYMBOL vmlinux 0xcf431b5f register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xcf4948c2 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0xcf518694 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xcf65eb50 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xcf67c190 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xcf6e1eb7 arp_xmit +EXPORT_SYMBOL vmlinux 0xcf7912cc file_open_root +EXPORT_SYMBOL vmlinux 0xcf7d42db ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0xcf7e1d1d hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xcf86cdac queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xcf8c5d69 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcfa93258 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xcfb9e0e3 ioremap_page +EXPORT_SYMBOL vmlinux 0xcfbed627 get_acl +EXPORT_SYMBOL vmlinux 0xcfc342ba pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xd004c6ff jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd017cd8f __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd01867d9 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xd022359f snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0xd02f2dfb __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xd03bb545 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd04c7414 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xd04febe9 arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xd051b797 blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xd0581d62 cpu_tlb +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0667f8c vc_resize +EXPORT_SYMBOL vmlinux 0xd06a7d32 snd_card_register +EXPORT_SYMBOL vmlinux 0xd08b84d6 phy_device_free +EXPORT_SYMBOL vmlinux 0xd09b53b8 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ad905e blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xd0b26102 path_get +EXPORT_SYMBOL vmlinux 0xd0b959f8 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xd0cf563e page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd0d394a7 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd0d9259c find_vma +EXPORT_SYMBOL vmlinux 0xd0db49df sock_pfree +EXPORT_SYMBOL vmlinux 0xd0e9fb09 release_firmware +EXPORT_SYMBOL vmlinux 0xd0fe689e ethtool_notify +EXPORT_SYMBOL vmlinux 0xd0ff78db fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0xd10475f5 page_pool_put_page +EXPORT_SYMBOL vmlinux 0xd1160656 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xd1228d7b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xd12750aa backlight_force_update +EXPORT_SYMBOL vmlinux 0xd12d4032 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd14aa50d cdev_device_del +EXPORT_SYMBOL vmlinux 0xd178b343 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0xd17ce4f2 __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xd17d9316 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1985fb7 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xd1abe064 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xd1afb405 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xd1b1f23b dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xd1b27ce1 amba_device_unregister +EXPORT_SYMBOL vmlinux 0xd1bf4ac8 padata_free +EXPORT_SYMBOL vmlinux 0xd1cc4c3b mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xd1d137eb fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0xd1d3acd7 inet_listen +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd2051916 qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0xd2167335 setup_new_exec +EXPORT_SYMBOL vmlinux 0xd21ed35b rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0xd222a7eb security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xd2355cc9 simple_fill_super +EXPORT_SYMBOL vmlinux 0xd2487679 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xd2534f51 nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0xd25c93c5 par_io_of_config +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd269864a seq_puts +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd29e2b27 cdev_del +EXPORT_SYMBOL vmlinux 0xd2ae15cf d_instantiate +EXPORT_SYMBOL vmlinux 0xd2b47ffb bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e36d24 inet_protos +EXPORT_SYMBOL vmlinux 0xd2eb32b9 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0xd2f47ecd device_get_mac_address +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd320645e jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd32d6c08 lockref_get +EXPORT_SYMBOL vmlinux 0xd33aa992 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xd3509e43 _copy_from_iter +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd35f75a1 match_string +EXPORT_SYMBOL vmlinux 0xd361cba4 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0xd365ca5b mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd3719b9c qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xd37c657a inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd3865b67 of_device_alloc +EXPORT_SYMBOL vmlinux 0xd3947a28 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xd39fa6ab __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xd3a8aa6a sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xd3c090b6 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xd3c3886c ip_frag_init +EXPORT_SYMBOL vmlinux 0xd3d3f82e deactivate_super +EXPORT_SYMBOL vmlinux 0xd3e58b45 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xd3e974a8 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3f9c515 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd417e0f5 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xd4180bd9 mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0xd4399e48 empty_zero_page +EXPORT_SYMBOL vmlinux 0xd4485271 bdi_put +EXPORT_SYMBOL vmlinux 0xd46b54dd flush_delayed_work +EXPORT_SYMBOL vmlinux 0xd4824618 tegra_ivc_notified +EXPORT_SYMBOL vmlinux 0xd4828275 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4849167 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xd48fd28f kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4be5ab1 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xd4c66dd2 register_quota_format +EXPORT_SYMBOL vmlinux 0xd4d1bcb3 xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0xd4da0975 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xd4e2f0e4 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xd4e431ac skb_checksum_help +EXPORT_SYMBOL vmlinux 0xd4e89843 bd_start_claiming +EXPORT_SYMBOL vmlinux 0xd4ffdc30 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xd5053b8f devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0xd5087b6b scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xd521fc3b of_get_next_child +EXPORT_SYMBOL vmlinux 0xd5249d13 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd53ed45b prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xd549fee3 iov_iter_init +EXPORT_SYMBOL vmlinux 0xd54bb34c get_tree_nodev +EXPORT_SYMBOL vmlinux 0xd558cdd9 follow_down +EXPORT_SYMBOL vmlinux 0xd559af1a check_disk_change +EXPORT_SYMBOL vmlinux 0xd55c205c inet_bind +EXPORT_SYMBOL vmlinux 0xd58d8ad9 tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0xd598e04b d_prune_aliases +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5b8f603 mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0xd5d8cfa1 open_exec +EXPORT_SYMBOL vmlinux 0xd5e9f339 kobject_get +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f7f662 input_match_device_id +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd6205c02 ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xd62344fc pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c1924 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0xd63fafc2 div64_u64_rem +EXPORT_SYMBOL vmlinux 0xd641f5da skb_dequeue +EXPORT_SYMBOL vmlinux 0xd6582ab0 xa_extract +EXPORT_SYMBOL vmlinux 0xd661e0d7 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd696f179 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xd69d8b5a blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6b6aeb6 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xd6ba4f0e serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xd6bc04ff cmd_db_read_aux_data +EXPORT_SYMBOL vmlinux 0xd6cfdff8 devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f4b94c ip_defrag +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd703e459 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd70ef27a of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd739a070 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xd779183c d_lookup +EXPORT_SYMBOL vmlinux 0xd796f9af vfs_mknod +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd79cee5e xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0xd7a0d78f ilookup5 +EXPORT_SYMBOL vmlinux 0xd7b8a9bf blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0xd7c3aab4 unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xd7c7ebd0 udplite_prot +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7e292e8 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8057b00 flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0xd81bb6f6 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0xd825c723 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0xd8410611 mempool_alloc +EXPORT_SYMBOL vmlinux 0xd8540803 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xd8584e49 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd860755b __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xd86cb12c dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xd875584a __genradix_ptr +EXPORT_SYMBOL vmlinux 0xd894a8d7 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89ee11f krait_set_l2_indirect_reg +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bce85f xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0xd8cd35f9 i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0xd8de4149 dquot_resume +EXPORT_SYMBOL vmlinux 0xd8f10a3f sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd902b93c put_ipc_ns +EXPORT_SYMBOL vmlinux 0xd913b93f __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xd928f108 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0xd9323f97 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0xd9346321 ucc_tdm_init +EXPORT_SYMBOL vmlinux 0xd94a8723 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd95cca55 dev_get_stats +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98c25d8 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xd9903787 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xd9b0765d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xd9b4553f remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xd9bc93e4 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9df8640 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xda104eaa dump_emit +EXPORT_SYMBOL vmlinux 0xda1ba1bd flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xda2c85f8 unregister_nls +EXPORT_SYMBOL vmlinux 0xda318d31 key_task_permission +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4e62c1 mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0xda514b6c bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xda5c5d9f __skb_pad +EXPORT_SYMBOL vmlinux 0xda6fc0b3 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda7a0fe7 do_splice_direct +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda889cdd inet6_release +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda9a256b filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xda9c7079 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0xdab8ba1e devfreq_add_device +EXPORT_SYMBOL vmlinux 0xdac14a3d inode_init_always +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac739f6 ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0xdad5a580 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0xdad8dfb4 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdadcf6be xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xdae9ec5e tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0xdaec8e39 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xdaf842e3 make_kgid +EXPORT_SYMBOL vmlinux 0xdb0470ab km_report +EXPORT_SYMBOL vmlinux 0xdb15c855 nand_bch_init +EXPORT_SYMBOL vmlinux 0xdb4b476f neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xdb62b797 register_qdisc +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7aec83 mmc_add_host +EXPORT_SYMBOL vmlinux 0xdb7b0169 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0xdb81e2fc __wait_on_bit +EXPORT_SYMBOL vmlinux 0xdb9ca3c5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xdbaa882e generic_write_end +EXPORT_SYMBOL vmlinux 0xdbaad939 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xdbd6994a flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xdbe9927a kernel_write +EXPORT_SYMBOL vmlinux 0xdbfef95a netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3d80f9 of_phy_get_and_connect +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc430db2 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5a86bb seq_printf +EXPORT_SYMBOL vmlinux 0xdc5c7961 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xdc633378 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xdc77d170 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdc81901a wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xdccc461f tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xdcd23cf5 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0xdcd70a44 km_policy_notify +EXPORT_SYMBOL vmlinux 0xdcf6d045 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xdcfec389 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd183290 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xdd19523d snd_timer_notify +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd29f5d3 tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd36539b pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0xdd4e34f1 pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0xdd4ffa9b mutex_trylock +EXPORT_SYMBOL vmlinux 0xdd54d978 sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0xdd76f075 find_inode_rcu +EXPORT_SYMBOL vmlinux 0xdd7ca54b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xdd7e3192 qcom_scm_pas_auth_and_reset +EXPORT_SYMBOL vmlinux 0xdd81421f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0xdd820029 set_groups +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xddb071ce ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xddbc655c submit_bio_wait +EXPORT_SYMBOL vmlinux 0xddc6680c jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xddd17ac4 pci_release_region +EXPORT_SYMBOL vmlinux 0xddd888ec kernel_listen +EXPORT_SYMBOL vmlinux 0xdde4b2b6 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xdde4e19d pci_write_config_byte +EXPORT_SYMBOL vmlinux 0xddf041c4 pci_dev_get +EXPORT_SYMBOL vmlinux 0xde058b76 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xde07efe2 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0xde25dbd0 iov_iter_discard +EXPORT_SYMBOL vmlinux 0xde3ff734 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xde434610 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xde4468e4 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0xde467b6d security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0xde483130 phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde5543c3 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0xde59092a lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xde5a8eac sock_no_linger +EXPORT_SYMBOL vmlinux 0xde5ae857 vme_slave_get +EXPORT_SYMBOL vmlinux 0xde92cff0 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xde99a366 phy_suspend +EXPORT_SYMBOL vmlinux 0xdea2089e dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0xdec030e5 arm_clear_user +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xded78002 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0xdeecd192 dns_query +EXPORT_SYMBOL vmlinux 0xdef2b30c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdefb0652 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xdf032db6 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xdf167f33 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf45c216 nand_get_set_features_notsupp +EXPORT_SYMBOL vmlinux 0xdf52def1 ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5c2f92 done_path_create +EXPORT_SYMBOL vmlinux 0xdf70b608 devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0xdf84d873 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf9ee4df sock_set_priority +EXPORT_SYMBOL vmlinux 0xdfcc4509 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xdfd559e1 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdfe84f89 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xdff68e10 unregister_netdev +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe00ee456 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xe0103b6d kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xe028a6ca atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xe041a95a md_write_end +EXPORT_SYMBOL vmlinux 0xe04cd956 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe0656c76 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xe06699b2 sg_next +EXPORT_SYMBOL vmlinux 0xe06a01b0 of_find_property +EXPORT_SYMBOL vmlinux 0xe07003aa netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xe0707b29 mmc_free_host +EXPORT_SYMBOL vmlinux 0xe073f2e3 __bforget +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0a6b585 request_resource +EXPORT_SYMBOL vmlinux 0xe0ac8e94 xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0f541e0 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xe0fef3f3 tcp_seq_stop +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1141300 path_put +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe12b7729 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe135f63b dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14899a4 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xe1500721 mount_bdev +EXPORT_SYMBOL vmlinux 0xe153f436 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0xe1740b3d netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe1973cdc __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xe1a0c356 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xe1a3e7fd key_validate +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1a58023 d_exact_alias +EXPORT_SYMBOL vmlinux 0xe1a9b2ff dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xe1abfb3d xattr_full_name +EXPORT_SYMBOL vmlinux 0xe1c7af7b load_nls_default +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1efb994 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xe209d2d1 file_path +EXPORT_SYMBOL vmlinux 0xe219e559 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xe21bfc98 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xe21d6cc7 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xe2274a1c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xe23743d5 stream_open +EXPORT_SYMBOL vmlinux 0xe23b1e2f tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0xe251bef7 setattr_prepare +EXPORT_SYMBOL vmlinux 0xe2522697 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe266f098 xa_get_mark +EXPORT_SYMBOL vmlinux 0xe2719fd1 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe27c3f13 skb_tx_error +EXPORT_SYMBOL vmlinux 0xe2815b8a jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xe28193a4 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0xe28ccf46 scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0xe28e4207 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0xe2aaa8cb dev_addr_add +EXPORT_SYMBOL vmlinux 0xe2d467c4 gic_pmr_sync +EXPORT_SYMBOL vmlinux 0xe2d47398 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dd419f jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xe2e0fb35 dm_table_get_md +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f7fb1a from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe310bbb3 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe346f67a __mutex_init +EXPORT_SYMBOL vmlinux 0xe3482046 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0xe355159a clear_wb_congested +EXPORT_SYMBOL vmlinux 0xe3879ff2 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xe38a468c napi_gro_frags +EXPORT_SYMBOL vmlinux 0xe39a6683 arp_create +EXPORT_SYMBOL vmlinux 0xe3a90dfa radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0xe3ae9b18 inet_accept +EXPORT_SYMBOL vmlinux 0xe3b07240 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe3b16232 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0xe3b1bf52 mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0xe3d237a5 pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3f50b57 bioset_exit +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe40666d4 iterate_dir +EXPORT_SYMBOL vmlinux 0xe419f7b0 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xe425163c bdev_read_only +EXPORT_SYMBOL vmlinux 0xe428464e dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe43a0f2b dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe443624f dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0xe44bfee5 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xe44eecbd tcp_disconnect +EXPORT_SYMBOL vmlinux 0xe4702b3a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0xe470a56d ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xe477fc9b memremap +EXPORT_SYMBOL vmlinux 0xe47a0fdd snd_timer_global_register +EXPORT_SYMBOL vmlinux 0xe47a4c99 devm_of_iomap +EXPORT_SYMBOL vmlinux 0xe47a824d dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xe47e1b6e framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xe49b71bf make_bad_inode +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4d4c929 sock_edemux +EXPORT_SYMBOL vmlinux 0xe4dc8e92 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0xe4e0f8a9 inet_add_offload +EXPORT_SYMBOL vmlinux 0xe4eb2573 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xe4effcd5 sg_init_one +EXPORT_SYMBOL vmlinux 0xe4f99a49 config_item_get +EXPORT_SYMBOL vmlinux 0xe51c882d jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe532e542 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xe5428b09 vc_cons +EXPORT_SYMBOL vmlinux 0xe545678e ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xe5698c32 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe56b6f4b udp_disconnect +EXPORT_SYMBOL vmlinux 0xe57feefb qcom_scm_ocmem_unlock +EXPORT_SYMBOL vmlinux 0xe5807e62 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58eca2f generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe59102cc security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0xe59d6936 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xe59f0295 simple_release_fs +EXPORT_SYMBOL vmlinux 0xe5ab17d2 pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5bf2bdf inet6_getname +EXPORT_SYMBOL vmlinux 0xe5c4a8f0 fs_context_for_mount +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cf8fac dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe5d24339 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe5d4f4c7 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe6259c24 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0xe629bdee nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xe63e5fb7 sock_register +EXPORT_SYMBOL vmlinux 0xe641a821 ilookup +EXPORT_SYMBOL vmlinux 0xe64f030e snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xe65048e4 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xe650cedd iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xe6563f6d pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xe663fdb1 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xe66f59f1 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xe66fc32d netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0xe67025df snd_card_file_add +EXPORT_SYMBOL vmlinux 0xe6726efc phy_init_eee +EXPORT_SYMBOL vmlinux 0xe676c867 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe68fe87f devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe6aa884c __scm_send +EXPORT_SYMBOL vmlinux 0xe6b51f52 of_find_backlight +EXPORT_SYMBOL vmlinux 0xe6ee8773 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xe6f9c6a1 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7086e47 elv_rb_find +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe732ed82 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xe7469404 xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0xe755296e snd_pcm_stop +EXPORT_SYMBOL vmlinux 0xe76247a2 posix_test_lock +EXPORT_SYMBOL vmlinux 0xe76e7b1f skb_unlink +EXPORT_SYMBOL vmlinux 0xe777df61 of_get_property +EXPORT_SYMBOL vmlinux 0xe791a92d dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0xe7b08ea0 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe7b342f7 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0xe7ce903f key_put +EXPORT_SYMBOL vmlinux 0xe7cf909d __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f13f4f of_platform_device_create +EXPORT_SYMBOL vmlinux 0xe7f2e3a2 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xe80c5561 migrate_page_copy +EXPORT_SYMBOL vmlinux 0xe842dc8c dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0xe84dcc4c get_cached_acl +EXPORT_SYMBOL vmlinux 0xe856033a ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe8616e48 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xe88eb405 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xe8a184f3 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xe8ae3b4f balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xe8af015a kern_unmount_array +EXPORT_SYMBOL vmlinux 0xe8b149be release_sock +EXPORT_SYMBOL vmlinux 0xe8b65886 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xe8b9a3d4 mx51_revision +EXPORT_SYMBOL vmlinux 0xe8cd0a2c crc32_le_shift +EXPORT_SYMBOL vmlinux 0xe8cfce09 tegra114_clock_deassert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0xe8e5792a fqdir_init +EXPORT_SYMBOL vmlinux 0xe8ee2491 __devm_release_region +EXPORT_SYMBOL vmlinux 0xe8f7413b sock_no_bind +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9325f03 downgrade_write +EXPORT_SYMBOL vmlinux 0xe94ba168 ip6_frag_next +EXPORT_SYMBOL vmlinux 0xe9515b1d thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe969eeb5 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xe97c4103 ioremap +EXPORT_SYMBOL vmlinux 0xe97d86ef nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xe97e84da vfs_unlink +EXPORT_SYMBOL vmlinux 0xe98d051a netdev_update_features +EXPORT_SYMBOL vmlinux 0xe98d780c nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xe99592ca param_ops_long +EXPORT_SYMBOL vmlinux 0xe99b7111 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0xe9a742c4 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xe9a759e0 blkdev_get +EXPORT_SYMBOL vmlinux 0xe9aef353 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe9b6cff0 flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0xe9cbf734 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe9d2fd74 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe9d54035 rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9ffcc57 netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0xea1c90c3 tso_start +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea43d10e iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xea4bd21e qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xea557f57 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xea633bb1 seq_putc +EXPORT_SYMBOL vmlinux 0xea6c98cf __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a3e53 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xea7f8e7a skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea90b38c pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xea9cf5f3 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xeac05a69 ucc_slow_enable +EXPORT_SYMBOL vmlinux 0xeae414b1 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb28fccf unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb371328 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xeb3848ff kunmap_atomic_high +EXPORT_SYMBOL vmlinux 0xeb3dccbe in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb70954e __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0xeb7339c8 component_match_add_typed +EXPORT_SYMBOL vmlinux 0xeb8d2d01 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0xeba230cf dev_change_flags +EXPORT_SYMBOL vmlinux 0xebc9af8f snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0xebe057f7 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xebee7bc1 blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0xebf4fefa dget_parent +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec15011a reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0xec2534d5 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xec2d9211 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xec31891e cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0xec37a2e8 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec51e5a0 page_pool_release_page +EXPORT_SYMBOL vmlinux 0xec55efba skb_store_bits +EXPORT_SYMBOL vmlinux 0xec663c29 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xec6e3954 flow_rule_alloc +EXPORT_SYMBOL vmlinux 0xec746916 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xec9549c1 put_fs_context +EXPORT_SYMBOL vmlinux 0xeca34b7a nand_monolithic_write_page_raw +EXPORT_SYMBOL vmlinux 0xecb70ee4 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xecc25f11 simple_statfs +EXPORT_SYMBOL vmlinux 0xecc7b4f7 block_write_full_page +EXPORT_SYMBOL vmlinux 0xece3a47f phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf696fc redraw_screen +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xecf96d6b __d_lookup_done +EXPORT_SYMBOL vmlinux 0xed022549 inet_release +EXPORT_SYMBOL vmlinux 0xed09efd5 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xed5c5f0d d_set_d_op +EXPORT_SYMBOL vmlinux 0xed7dec05 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xed87caef mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xed92f83c netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0xed9efa7d cont_write_begin +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbb6518 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede85852 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xedeb59d9 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xedeff728 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xee02a44f gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xee195251 drop_nlink +EXPORT_SYMBOL vmlinux 0xee1a44c1 tty_register_driver +EXPORT_SYMBOL vmlinux 0xee1b77de generic_delete_inode +EXPORT_SYMBOL vmlinux 0xee203603 fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee43fd9b ___ratelimit +EXPORT_SYMBOL vmlinux 0xee5115d0 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee819356 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xee8ae5c5 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeeb02628 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xeeb31b40 sync_file_create +EXPORT_SYMBOL vmlinux 0xeebb4f44 kset_register +EXPORT_SYMBOL vmlinux 0xeecd1eb4 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xeece5f17 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xeedc7624 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xeee634d9 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xef0809fd napi_gro_receive +EXPORT_SYMBOL vmlinux 0xef19f2b8 tcf_em_register +EXPORT_SYMBOL vmlinux 0xef230933 mdiobus_read +EXPORT_SYMBOL vmlinux 0xef3c75ba nf_hook_slow +EXPORT_SYMBOL vmlinux 0xef4cad92 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xef54f245 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xef57839c dump_skip +EXPORT_SYMBOL vmlinux 0xef6d0022 unlock_rename +EXPORT_SYMBOL vmlinux 0xef760cba __skb_get_hash +EXPORT_SYMBOL vmlinux 0xef77842f blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xef8a5438 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xef8ac53d qcom_scm_restore_sec_cfg +EXPORT_SYMBOL vmlinux 0xefac0d74 page_pool_update_nid +EXPORT_SYMBOL vmlinux 0xefb7bccf _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xefbb80bd xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xefbc6ed3 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf01528a4 dim_turn +EXPORT_SYMBOL vmlinux 0xf01585cd dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf02a6977 queue_rcu_work +EXPORT_SYMBOL vmlinux 0xf0308d2f snd_ctl_replace +EXPORT_SYMBOL vmlinux 0xf04dabfa filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xf04fb05c kobject_del +EXPORT_SYMBOL vmlinux 0xf0622177 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xf06cee2c radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0xf075bc11 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0a343ed release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf0a84e83 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xf0d2d8fc simple_setattr +EXPORT_SYMBOL vmlinux 0xf0d84bba inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xf0e3dd9c alloc_fcdev +EXPORT_SYMBOL vmlinux 0xf0e50d10 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef52e8 down +EXPORT_SYMBOL vmlinux 0xf0f0979e dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0xf0fd13be gro_cells_init +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf102732a crc16 +EXPORT_SYMBOL vmlinux 0xf108715e dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0xf10b74d2 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xf149d83a simple_get_link +EXPORT_SYMBOL vmlinux 0xf14a91f6 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xf14e9143 input_register_device +EXPORT_SYMBOL vmlinux 0xf158ffbc phy_init_hw +EXPORT_SYMBOL vmlinux 0xf15bf742 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xf175802d blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf197920a ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xf19a66a0 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xf1ad9c4b tegra_ivc_align +EXPORT_SYMBOL vmlinux 0xf1b5dd39 pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1eb70b3 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xf1f1dbe5 mod_node_page_state +EXPORT_SYMBOL vmlinux 0xf213bd2a complete_request_key +EXPORT_SYMBOL vmlinux 0xf2188acc xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0xf21bc246 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xf21c577f eth_header_parse +EXPORT_SYMBOL vmlinux 0xf220c212 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf236c75e swake_up_one +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24605a4 __skb_ext_del +EXPORT_SYMBOL vmlinux 0xf2669a2c imx_scu_irq_register_notifier +EXPORT_SYMBOL vmlinux 0xf267c64f pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf2682a5b sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xf274baa9 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xf281fdad neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf285969a dst_release +EXPORT_SYMBOL vmlinux 0xf2ad80d9 snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL vmlinux 0xf2b14768 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xf2c012ea pci_enable_device +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2d22d6f iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xf2d6aa8e phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xf2d71ae4 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f1cf1a skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xf2fa0bed pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xf2fd1ac3 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf325bee9 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xf32c5d61 vm_map_pages +EXPORT_SYMBOL vmlinux 0xf32f36f1 vm_node_stat +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf348ff41 bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf34dacd4 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3774029 __vfs_removexattr +EXPORT_SYMBOL vmlinux 0xf3781f5c snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xf37d143e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xf37f9794 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf383746e proc_create_data +EXPORT_SYMBOL vmlinux 0xf388747b tty_lock +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39817e6 sock_wfree +EXPORT_SYMBOL vmlinux 0xf39d596d dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xf39e441c ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf3a11c35 xa_find_after +EXPORT_SYMBOL vmlinux 0xf3aaa98f kobject_set_name +EXPORT_SYMBOL vmlinux 0xf3ae3acb file_fdatawait_range +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3d8fb1e get_tree_keyed +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fcd1dd blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf4000b18 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf40019c0 tegra114_clock_tune_cpu_trimmers_init +EXPORT_SYMBOL vmlinux 0xf40bcee0 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xf412595c sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf41abb51 kill_block_super +EXPORT_SYMBOL vmlinux 0xf4228967 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xf4497a5b phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf4526ced tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0xf452c296 dev_uc_init +EXPORT_SYMBOL vmlinux 0xf45b953f inet_gro_receive +EXPORT_SYMBOL vmlinux 0xf45da496 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf475238f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xf4766e17 __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0xf4859c39 genl_notify +EXPORT_SYMBOL vmlinux 0xf49d88f2 dm_get_device +EXPORT_SYMBOL vmlinux 0xf4a04498 nmi_panic +EXPORT_SYMBOL vmlinux 0xf4b83ce4 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xf4ba246e ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xf4baa334 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cbffc3 ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4ea904b register_mii_timestamper +EXPORT_SYMBOL vmlinux 0xf4ee057d read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5110f92 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0xf5243506 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xf527f72d mmc_release_host +EXPORT_SYMBOL vmlinux 0xf5282659 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0xf532fe3c netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf55a4695 vme_slot_num +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf56643d0 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xf56fac1c skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0xf576a956 mmc_retune_release +EXPORT_SYMBOL vmlinux 0xf5771dc4 kobject_init +EXPORT_SYMBOL vmlinux 0xf5a0e0d2 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xf5b666ef __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xf5d608e3 security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0xf5dfd071 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf5e1dae5 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5f1efa3 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xf616ba54 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf6440bd7 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xf64bf255 wait_for_completion +EXPORT_SYMBOL vmlinux 0xf652d359 __wake_up_bit +EXPORT_SYMBOL vmlinux 0xf65a4d15 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xf65d03d3 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xf66034fa devm_memunmap +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf66723f7 dev_set_group +EXPORT_SYMBOL vmlinux 0xf670c8d2 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xf6752635 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6a5ee2e qcom_scm_io_readl +EXPORT_SYMBOL vmlinux 0xf6abb53c phy_attached_print +EXPORT_SYMBOL vmlinux 0xf6e4df71 on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6ffa7c0 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xf705fa49 gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0xf70d00e1 fs_param_is_string +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf74b8346 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76843b5 qcom_scm_pas_supported +EXPORT_SYMBOL vmlinux 0xf76f8c8b no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf780c849 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xf782ded9 udp_seq_start +EXPORT_SYMBOL vmlinux 0xf7a59240 get_tree_single +EXPORT_SYMBOL vmlinux 0xf7bdce52 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xf7e7c3e3 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf822b3f6 __bread_gfp +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf838fd97 dim_park_on_top +EXPORT_SYMBOL vmlinux 0xf842c5fc d_find_any_alias +EXPORT_SYMBOL vmlinux 0xf84390e4 of_device_is_available +EXPORT_SYMBOL vmlinux 0xf84c3647 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xf85315ba nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xf866b00c tegra_io_pad_power_enable +EXPORT_SYMBOL vmlinux 0xf86f27cd idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xf883fd38 inet_ioctl +EXPORT_SYMBOL vmlinux 0xf894273d nand_write_oob_std +EXPORT_SYMBOL vmlinux 0xf8b0f9de eth_header +EXPORT_SYMBOL vmlinux 0xf8b813e8 arp_send +EXPORT_SYMBOL vmlinux 0xf8d3d119 free_netdev +EXPORT_SYMBOL vmlinux 0xf8dad174 elv_rb_add +EXPORT_SYMBOL vmlinux 0xf8dd2637 super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0xf8df7d09 param_set_copystring +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf8f6a692 finish_no_open +EXPORT_SYMBOL vmlinux 0xf909437c ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0xf91397ff dcache_dir_close +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf918ddd2 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xf9288217 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xf92882c7 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xf93aae46 __arm_smccc_smc +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf9456736 unlock_page +EXPORT_SYMBOL vmlinux 0xf962d80e netlink_capable +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf973f25d padata_do_parallel +EXPORT_SYMBOL vmlinux 0xf9966fef imx_scu_enable_general_irq_channel +EXPORT_SYMBOL vmlinux 0xf9a36b47 down_interruptible +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b7ff83 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xf9cf73c8 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf9dc1f4c audit_log +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xf9f13557 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xfa021f90 ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xfa0ab842 nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0xfa205b1e __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa66c8b8 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xfa7c1de7 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa9c1b5b napi_complete_done +EXPORT_SYMBOL vmlinux 0xfaa17cf2 sock_no_accept +EXPORT_SYMBOL vmlinux 0xfac5d6f1 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacf4175 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0xfad057da rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xfadf1ce8 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xfb012c98 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xfb1d7438 down_read +EXPORT_SYMBOL vmlinux 0xfb242bf7 tty_check_change +EXPORT_SYMBOL vmlinux 0xfb336634 mempool_destroy +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb3e3ea5 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb53c6dd twl6040_power +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6ffc1f vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xfb71c47f freeze_bdev +EXPORT_SYMBOL vmlinux 0xfb750f98 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xfb7a4954 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfba400a5 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xfba563b1 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb606f0 d_add_ci +EXPORT_SYMBOL vmlinux 0xfbc0b14d netdev_notice +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbec0c0e __module_get +EXPORT_SYMBOL vmlinux 0xfbf4ad81 pci_find_bus +EXPORT_SYMBOL vmlinux 0xfc0888b7 flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0xfc10c938 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3f3589 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfc52abc7 qcom_scm_pas_shutdown +EXPORT_SYMBOL vmlinux 0xfc653bb4 nvm_submit_io +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc95f3b0 blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0xfcaedfca scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xfcc343e2 fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0xfcc4d621 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcd5bec1 blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0xfceacc23 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfd00acda bdget_disk +EXPORT_SYMBOL vmlinux 0xfd090d1f key_invalidate +EXPORT_SYMBOL vmlinux 0xfd10ea0d blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xfd114f18 netdev_warn +EXPORT_SYMBOL vmlinux 0xfd211f72 dst_dev_put +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd50795c brioctl_set +EXPORT_SYMBOL vmlinux 0xfd59335c max8998_update_reg +EXPORT_SYMBOL vmlinux 0xfd5ad821 nand_create_bbt +EXPORT_SYMBOL vmlinux 0xfd72b740 simple_link +EXPORT_SYMBOL vmlinux 0xfd73a76b flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0xfd8c5afc release_fiq +EXPORT_SYMBOL vmlinux 0xfd8de48e pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xfd91ece2 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0xfd9fb088 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xfda40019 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0xfda50aba inet_put_port +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdc464ef submit_bh +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdde1f2d __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xfde5c1b5 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xfde9a7c0 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xfdf4cff0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xfdfb3dfe ps2_handle_response +EXPORT_SYMBOL vmlinux 0xfdff94e0 ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe0653b3 _dev_info +EXPORT_SYMBOL vmlinux 0xfe13ab41 scsi_print_command +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe651897 input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0xfe90c4a6 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xfea0934a fget_raw +EXPORT_SYMBOL vmlinux 0xfeb06ab4 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfecd20e9 d_tmpfile +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeeb76dc jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff001148 bio_chain +EXPORT_SYMBOL vmlinux 0xff1738b7 __inet_hash +EXPORT_SYMBOL vmlinux 0xff1913ae is_subdir +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff339573 tegra_ivc_cleanup +EXPORT_SYMBOL vmlinux 0xff354a4f phy_validate_pause +EXPORT_SYMBOL vmlinux 0xff480ce4 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xff5eb59e amba_release_regions +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7ef1bf of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xff8c2e5a radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xff99f940 touch_buffer +EXPORT_SYMBOL vmlinux 0xffa22034 sock_init_data +EXPORT_SYMBOL vmlinux 0xffa3899d skb_copy_bits +EXPORT_SYMBOL vmlinux 0xffa6ba23 generic_read_dir +EXPORT_SYMBOL vmlinux 0xffa983d1 bdgrab +EXPORT_SYMBOL vmlinux 0xffb93134 xp_can_alloc +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffbbbd19 __alloc_disk_node +EXPORT_SYMBOL vmlinux 0xffc18bcd tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xffc70b31 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xffd30857 __d_drop +EXPORT_SYMBOL vmlinux 0xffd96fef processor +EXPORT_SYMBOL vmlinux 0xffe9095f i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0xfff6d930 nobh_truncate_page +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x8130e040 sha1_update_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xe997ca23 sha1_finup_arm +EXPORT_SYMBOL_GPL crypto/af_alg 0x24d681c9 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x3f07d2d1 af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0x69f8adc9 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x8aa260d9 af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8bae042c af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0x8d7136cb af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xa1580df8 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xa6268978 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0xac461703 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xaf4db7f7 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xbb2a3c84 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc649192a af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xdd60fd01 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0xdfdec9fb af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe5407f2a af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xe5aa3a64 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xeb894ab3 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xf3e4446c af_alg_poll +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x8659b595 asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xaf5043ca async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xbd2e8b02 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf6ff69ca async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x4e3c1ddc async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7f14ae96 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x109614ce __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1e3404c0 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3aadf7f0 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc339c145 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x691918fb async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xf7101be5 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x1eb0524e blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x9b92a059 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x4b59c38b cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0266225e cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x2d4841b1 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x3eb30467 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4f2aeb1a cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x6f0ce2a0 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xaa7856f6 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xb4a783f7 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xcc778365 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xcf11d915 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd88d78e7 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xfdaa84cc cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xfdc3729a cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xfee1560a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x09884da2 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x0d8fadfd crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x391b6744 crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x3ca6c5c6 crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x3ff2028e crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x70089e79 crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x88c1722b crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x994f2598 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x9ca22e5a crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xb47460e1 crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc703401c crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xe96e43da crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf54f62a9 crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x53fd4708 simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x615f1136 simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xc93bd74d simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xcec77839 simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xb0613adf serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x15f805c7 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xae077149 crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xf171d884 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd5b2a838 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xae03fac6 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x1eb6db68 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-ac97 0x8786ea24 __devm_regmap_init_ac97 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-ac97 0xc6d955a3 __regmap_init_ac97 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-ac97 0xfd6b4bf1 regmap_ac97_default_volatile +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0x96ed9ab0 __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x74ed4dc4 __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x82ce15a9 __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x0a782a87 __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x303d609e __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x77419c14 __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x910ac9bf __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x3303a1ff __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x946ad4f7 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xc0cf6d85 __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xce9c0461 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x26a39ae8 __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0xd8adc26e __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x145cfd9a bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x151d2e6d bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x19498ea2 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x269f8dfc bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3365ef9d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3646f1f0 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4d7b3f2a bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x50c004fc bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63b67e5f bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6ba28842 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x81e025b4 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x822d1a71 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x85c731aa bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x861ef195 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x92e2d829 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x96e830ff bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9b6bc944 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xadc531ba bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6e3ea1c bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd79fa1e7 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe1426138 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf21df2a2 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6342ebe bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfdb55e2e bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0a94783d btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x516c7216 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6047275e btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x82b8f23f btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x84407baf btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa8998a65 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc1cf8e6c btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd7cb6147 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x080b2458 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x27cc07f7 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x34eb0965 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x394d7b25 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3ec261d2 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x410066b6 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5bbfe16b btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5f1bc11d btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x66542492 btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x76ec8d94 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x7bb43b72 btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9a321a51 btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa25af707 btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa2d348d8 btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xaaae3904 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb5a81a43 btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xcc16394f btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfa23d62f btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1e3fd6dd btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x393653cf btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4d6cff2c btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x93c74141 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9a50036e btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa33e8cde btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb04d1607 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb1ead840 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd0eb2913 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd408bbfb btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf03d9d58 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x93fc4c6e qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xd5baec55 qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xdaea52fc qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xdfdaf68a qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xf4343894 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x3734701e btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x810c7701 btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x89e68fb6 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xa0b0c7b7 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xf501009e btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x46ffcb8b h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x4a837d63 hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x67d0f055 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x97581e92 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x1d06679b mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x233ef1ec mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x24c8e2ce __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x282b5e01 mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x2be62a81 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x38c35791 mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3d706792 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3f0111dc mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5d5f07c7 mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x67941dcc mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7132b308 mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x73217c0d mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x76832b2a mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7a7ba4da mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x98a1018b mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa389b35c mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xba28bdfe mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xd8977924 mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xdf71ff25 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xec586d87 mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf80d010e mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfab704b4 mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x3f1b4306 moxtet_device_read +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x59be0d26 moxtet_device_written +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x94dc8f9c __moxtet_register_driver +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x98a48689 moxtet_device_write +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0xc37ae3f3 meson_clk_triphase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0xeb820ca2 meson_clk_phase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/sclk-div 0xb1aa8b06 meson_sclk_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0000139e clk_alpha_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x07fa3ea2 qcom_cc_register_sleep_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x08f0cc30 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d10c3c4 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d678ab9 qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e5f8a53 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e98da3d clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x17d44071 clk_alpha_pll_hwfsm_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1987883d clk_alpha_pll_fixed_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x272f3204 clk_alpha_pll_fixed_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a9c7452 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2b0d957d clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2cae96b3 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x30bbf987 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x310b6341 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3747af55 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x395868a1 qcom_find_freq_floor +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3b15a709 clk_alpha_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3dfc2dc5 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x405d394a clk_alpha_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x418e9cfd clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4b0ed6da clk_ops_hfpll +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4c4ae6c8 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4f8c3ce3 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5111f2ad clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x520df3b7 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x57172323 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5e6abb22 mux_div_set_src_div +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x615dbb77 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x631939a9 clk_branch2_aon_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x63ee9aa4 clk_alpha_pll_fixed_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x668151b8 qcom_cc_register_board_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x66922845 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x68199825 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6af41b8b qcom_pll_set_fsm_mode +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6c069db2 qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7019378d clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x766e9f87 clk_regmap_div_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x787e8234 qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x78b81ea0 clk_rcg2_floor_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7e66fd9e clk_regmap_mux_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8b55eac4 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x91c41c9f clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x97488818 clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9c8854a1 clk_alpha_pll_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9d909edd clk_gfx3d_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9dc41abb krait_div2_clk_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e33f365 clk_trion_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e690faf qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9ea74eae qcom_cc_probe_by_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9f241baa clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa31948b2 qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa6f08f9a clk_trion_fixed_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaa403ee8 clk_alpha_pll_huayra_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xadc2751b clk_alpha_pll_postdiv_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xba961aa7 clk_dp_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc037091a krait_mux_clk_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc150d434 clk_alpha_pll_postdiv_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc5bdfa11 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc6a05db2 clk_fabia_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xce340fb8 clk_alpha_pll_regs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcf422970 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd3135b41 qcom_cc_register_rcg_dfs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd7ab6782 clk_alpha_pll_postdiv_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd8d92954 clk_lucid_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe6e14638 clk_alpha_pll_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe816a036 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x54e2be55 counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5c4db28b devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x66f03983 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x74947154 counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x800ee1f5 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x857b6033 counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x8cfbfee0 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xa5a0f4a7 counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xc482fd2c devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0xc799dcc1 counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xccab7878 counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xd704bde2 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xdb587d55 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/crypto/omap-crypto 0x701db540 omap_crypto_align_sg +EXPORT_SYMBOL_GPL drivers/crypto/omap-crypto 0xd5328478 omap_crypto_cleanup +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x00e9b62f dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xd2839fed dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x4e5e46a5 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x66740560 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x8ce45d8c idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa879b8a8 do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb210b551 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xde65aa6c do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf0609726 idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x09b48728 fsl_edma_pause +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x122000ff fsl_edma_free_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x2dc19454 fsl_edma_alloc_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x44e3cf8a fsl_edma_resume +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x48af0b14 fsl_edma_setup_regs +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x4cf04475 fsl_edma_prep_slave_sg +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x92f28d67 fsl_edma_terminate_all +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xb9b0b3db fsl_edma_xfer_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xbeef086c fsl_edma_chan_mux +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xbff4ca96 fsl_edma_cleanup_vchan +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xe048fa2f fsl_edma_tx_status +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xf2ddc7cb fsl_edma_prep_dma_cyclic +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xf5077239 fsl_edma_free_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xf821368e fsl_edma_issue_pending +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xf8861432 fsl_edma_disable_request +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xfa1468f1 fsl_edma_slave_config +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x8660e133 hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0xc85caae6 hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0x3f9840cb get_scpi_ops +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x4ac68bea alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xe0cab948 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x01fc2e22 dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0cf9a794 dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0dd013cc dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x1b239aa9 dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x28963b21 dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x2c4ab237 dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x35463d3e dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x4ac79dec dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x61f3662b dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x806127ab dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x8bc2ca91 dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x9c9cff00 dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x9e5d0afd dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xaba7df62 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xaf1ebdd5 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xbc9e62b7 dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc5c75886 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd8399cb8 dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xe45efd81 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0ade092c of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2475b2b8 devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4639f7aa fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x5373658f fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x895556ee fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xa752cd77 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb0b04ad8 fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb20e4d92 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xc7978bf4 fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xcf85542a fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xda6162af of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xe206713a fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x07e364f4 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x147ca5f3 fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x14af6709 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x4d5b89b9 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x55716c1d fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x74f95b14 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x819359f5 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x86d79cc4 fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa9cc029f fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe3a05ae7 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf303788b fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf407a468 fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf84980bf fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x03367e13 fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x3987e3b3 fpga_region_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x547c4616 devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x57064a89 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x5a2a7bdd fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x71b60bc9 fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x8d41c753 fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x02dcc29c fsi_cdev_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x1c9fb6fb fsi_master_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3a93847e fsi_slave_claim_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3ac421c9 fsi_device_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a57d574 fsi_free_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5f39cb55 fsi_master_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x60a97912 fsi_slave_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x7bbcdcc6 fsi_driver_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x88aaecdd fsi_device_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xa366faa1 fsi_driver_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xb71b7e1c fsi_get_new_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xce22aee2 fsi_slave_release_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xced56120 fsi_bus_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xe172715c fsi_master_rescan +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xe4ac7aa2 fsi_slave_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-occ 0x62fbed3b fsi_occ_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x84fb3521 sbefifo_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0xb2e65dd4 sbefifo_parse_status +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x0292d115 gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x4b242c5e gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x58cb5fed gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x9a4c238e gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xb49add59 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x5d543b45 gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x8e7fd709 gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xa29398ca gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xa60768a4 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xdb69d1f3 gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0x5dcbe46c aspeed_gpio_copro_set_ops +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0x5e87bfb8 aspeed_gpio_copro_grab_gpio +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0x6c10e9cc aspeed_gpio_copro_release_gpio +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x0fdea4e7 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xfb72ec1b __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x248b1d1e analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x4dd335af analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x7b837692 analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x7e657309 analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xc67af2b1 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xca7eca4f analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xd820b4ab analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe4978c9d anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xfaa1255f analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x09340e05 dw_hdmi_set_channel_count +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x094f6fc5 dw_hdmi_phy_i2c_set_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x1461e227 dw_hdmi_set_channel_status +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x157e02b6 dw_hdmi_phy_reset +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2d1c0e80 dw_hdmi_setup_rx_sense +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2fac9436 dw_hdmi_set_channel_allocation +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x316212a8 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x42926f4a dw_hdmi_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x4a9b174f dw_hdmi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x6712b5a7 dw_hdmi_phy_gen2_txpwron +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x7d8a3aee dw_hdmi_phy_i2c_write +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x822671f9 dw_hdmi_set_high_tmds_clock_ratio +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9b44a60b dw_hdmi_phy_gen2_pddq +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xb2876bb2 dw_hdmi_set_plugged_cb +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xcaf75e5b dw_hdmi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd6968220 dw_hdmi_phy_setup_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xdafa1790 dw_hdmi_phy_read_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xefe6986b dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xf5922009 dw_hdmi_phy_update_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x0d667204 dw_mipi_dsi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x22f1adb7 dw_mipi_dsi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x41361ae4 dw_mipi_dsi_set_slave +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x42ac3b2e dw_mipi_dsi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x64adc439 dw_mipi_dsi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0923ecdd drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1db38ef9 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1ff2f758 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2479a1e7 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2a2923d5 drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x313f29c8 drm_of_component_match_add +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x34a092ec drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x39fed264 drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x483c9747 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x483ebb9d drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x49b5ab2e drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4d0db7f2 drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4e1125c4 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x512277f7 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x51d2dd85 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6606bdbe drm_of_lvds_get_dual_link_pixel_order +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6f6c533f drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7142c488 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7289d009 drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x794787c9 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8b4c71af drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8d7fcfd1 drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9736dd86 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x99a075ed drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9e5e2362 drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa3e4706e drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa4242c9e drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa83d213a drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad4419fd drm_of_find_panel_or_bridge +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbd2fa26d drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbdf7f373 drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7e20861 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdb3d68ba drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xddf4c0b4 drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xecf0e6bc drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf2ed04a8 drm_of_encoder_active_endpoint +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf3edc26e drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x0a4990c6 drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x3c91dddd drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x65fb49bc drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x87ffa28a drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x8e2b42d4 drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xba4254a5 drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xbec2e9f1 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc7df1fe3 drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xd50163e0 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xdf98eee7 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe89597c5 drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xfb33f1bf drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x053080f5 imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x90dbf153 ipu_planes_assign_pre +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x9b2adae4 ipu_plane_disable_deferred +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc8653729 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/mcde/mcde_drm 0x84407338 mcde_display_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x2c73cfcf meson_venc_hdmi_venc_repeat +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x693296ad meson_vclk_vic_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x6dc0d6b5 meson_vclk_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x94bf1378 meson_venc_hdmi_mode_set +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xab5bee2f meson_venc_hdmi_supported_vic +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xd23e0e01 meson_vclk_dmt_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xfd34888c meson_venc_hdmi_supported_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/pl111/pl111_drm 0x52718d55 pl111_versatile_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x086782f9 rcar_cmm_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x1550c9a7 rcar_cmm_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x29d427e3 rcar_cmm_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x985a5ab2 rcar_cmm_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x0be61e4d rcar_lvds_clk_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x31b368c7 rcar_lvds_dual_link +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x6a4ca965 rcar_lvds_clk_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0x060ef581 vop_component_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xe97a409b rockchip_rgb_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xfead7585 rockchip_rgb_fini +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x01f4ee1f ipu_image_convert_adjust +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0252165f ipu_prg_channel_configure +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x034e4f9b ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x04742f4b ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x050f0d7b ipu_di_adjust_videomode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x07036df2 ipu_ic_calc_csc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0b4ec668 ipu_cpmem_zero +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0e42bd95 ipu_csi_set_dest +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0eccd631 ipu_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x118160e1 ipu_ic_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1348ad5a ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x13952dfe ipu_dmfc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1708d126 ipu_idmac_unlink +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x18730251 ipu_rot_mode_to_degrees +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x18aa0dcd ipu_image_convert_abort +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1e913d9f ipu_csi_get_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x20e09f6f ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x23aaa71f ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x258a4439 ipu_image_convert_queue +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2adf0f00 ipu_cpmem_skip_odd_chroma_rows +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2cf7ed72 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2e825a67 ipu_smfc_set_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f92d651 ipu_ic_task_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3020d65c ipu_prg_max_active_channels +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3166aec7 ipu_dmfc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x34fd07c8 ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x37c33dcf ipu_cpmem_set_uv_offset +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x38a62f32 ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3d8f18f6 __ipu_ic_calc_csc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3da8fd97 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3e86ea72 ipu_di_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4114b80f ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x418a282f ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4244759f ipu_dc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x428b3432 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x42d3d500 ipu_image_convert_unprepare +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4431a2df ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x498b4c7b ipu_image_convert_enum_format +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4a13614c ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4af8f410 ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4d232623 ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x51475e87 ipu_dmfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x527f3b94 ipu_smfc_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x53de277c ipu_di_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x55767280 ipu_vdi_set_motion +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x57801c91 ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x57f20950 ipu_cpmem_get_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x580d2f81 ipu_vdi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5b15aea8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5cae270a ipu_vdi_unsetup +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5e4a802e ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x602fbbc8 ipu_srm_dp_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60bdf2ec ipu_csi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x623722e2 ipu_ic_task_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x62be8454 ipu_prg_channel_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x63593ec7 ipu_csi_init_interface +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x64031ebc ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x66e729d2 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x68d0d6a8 ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6d17d9d5 ipu_prg_channel_configure_pending +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x747eaf4e ipu_image_convert_verify +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76e4c358 ipu_image_convert_prepare +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x794468c5 ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7c485045 ipu_prg_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x806ee405 ipu_image_convert_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x80a9aece ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x80e1ceb7 ipu_fsu_unlink +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x81d9995d ipu_fsu_link +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x83a73292 ipu_dc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8497c7d4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x85e84b79 ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x886c35aa ipu_smfc_map_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8eb22643 ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8ece82bd ipu_pixelformat_is_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8ef11ea1 ipu_prg_present +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8f14955a ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x91ce1a04 ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x95a1f900 ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x97f08d2f ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x99363e76 ipu_prg_format_supported +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f38e177 ipu_dp_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa4b0cabd ipu_dc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa60b144b ipu_csi_set_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa671dfcf ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa8adc101 ipu_pixelformat_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb556678d ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xba458b8f ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbd18d210 ipu_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbf983ba6 ipu_vdi_set_field_order +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc080e4b5 ipu_dc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc30cfe02 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3605ae8 ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc4710e3f ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc4af2e81 ipu_dmfc_config_wait4eot +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc4b15642 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc6675aa9 ipu_csi_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc677177d ipu_smfc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcbea3eec ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcc7a5d75 ipu_prg_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd54eb3d ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7fbaa4 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xce10db35 ipu_stride_to_bytes +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcee639e3 ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd24df879 ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd2724247 ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd59d9b52 ipu_vdi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd6d5994f ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd8f285f0 ipu_vdi_setup +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdb49e02c ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdc06295f ipu_image_convert +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdc3b1b50 ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdd6db9bc ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe300a959 ipu_dp_setup_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe3785583 ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe4e46103 ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe562a498 ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe6243c52 ipu_dc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe78afcda ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe95eff21 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xedf15a8b ipu_idmac_link +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xeea12b31 ipu_vdi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1abac7e ipu_csi_set_downsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf268e1b9 ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf2c8c5e2 ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf38ea7ee ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf541df2d ipu_vdi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf93e752d ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x05fa28bb greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x116f0b9e greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x13c077cc gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x14fd57c2 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x291e2eec gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x29f7da7f __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x34c2b24e gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x384d111a gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x38b89571 __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3b35ef8a gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x44c8bf90 greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x46c8d9f2 gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x50517685 __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x521a5a48 gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x59c666b1 gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5e3073cd gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6e2fbeb9 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7559871d gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x75c9730a __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7827724a gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x815eb223 gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x81a15417 gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8b0c6307 __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x904c1acf gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9767d244 gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x98602cb3 gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x9d8b5dbd greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa181806a gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa8330f0b gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb6fb7f44 gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb8244b61 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xba9dcfe4 gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc3b69fe2 gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc92faaec gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xda0a697e gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xde3878ae gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe159625a gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe19988ce gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe4005c4d gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe7a963c4 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xeda04bdd gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xfc3c3469 gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xfcd391a8 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01968e84 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0d4b3b6c hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x104591ff hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1092dd7e hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17d94e5c hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x23f486e8 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31bbe4c0 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3ada53d1 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3bf79299 hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3cc2bf7b hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e05f6ac hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x45fe3c10 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0x467daeb3 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x519388ac hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5cfbf3c5 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x61eda7b1 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b2eb6b4 hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9395100d hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x96e28873 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9cddff6e hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d2ea7db hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa8da407e hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa9b39da2 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa526d03 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaae52241 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf20efcd hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb0635aae hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf2dbc78 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc00de84c hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc18b5c8c hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc20342bd hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc53529d9 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcfa95fcc hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd86ba1f8 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe21a317f __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe2297c0b hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe277fe4f hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe3fe8ae8 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6dfaf95 hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8e08cae hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf2c8336b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf39cb16b hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfad9e67d hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfc6eb440 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2298c593 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x017e5682 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7ccdfc03 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8643ac70 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa13aa4f5 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xad625c51 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbc24cf41 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x06481595 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x234e15fc sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x29415dab sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x56c457c8 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x59e53273 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa4148a41 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc03ae697 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xea5381f6 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf69c5194 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0x9bdfb7bc i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x574b07da uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x592dcee7 usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd0f7aa37 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x30a507d8 ssip_reset_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x86dca1fd ssip_slave_stop_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xccd14cbe ssip_slave_running +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xd66297ab ssip_slave_get_master +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xe61b96dc ssip_slave_start_tx +EXPORT_SYMBOL_GPL drivers/hsi/controllers/omap_ssi 0x7d6b6606 ssi_waketest +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x19661a28 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x270ff52c hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2c927b74 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x34ea96cb hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5de4e48b hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d2d7b69 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8492af19 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8541d58e hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8cbfb4ce hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc1d8c38a hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc29d62fd hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc6e7b84a hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8218d82 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce1284be hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd1179248 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd57f919c hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc1617ca hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf8584f06 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0ce9a1ed adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xb92ac9d3 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xfb5d1aa8 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x0601fbbe ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x07c9ebc5 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0b175dbd pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0d9b20dd pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x16d01356 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x184fbb73 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1fbef73c pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2d803c1c pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2dcd417e pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x34125711 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3df4ad43 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4144aff0 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x430faadf pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x64ed8918 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x74be1d25 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9f9a05c5 pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaecc74f4 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd1cbf677 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf6495009 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfc51f81c pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x13fbaeaf intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1fe333c6 intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4910d656 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x75bb0297 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xcc138d49 intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xcf15e07b intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdd8412a9 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xe9791329 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfaa3536c intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x1c650020 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x239d9980 intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x9570d4b0 intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x0d362673 stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x1c3e4d3f stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x53c7db25 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x65ae24bd stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x6ab8aa88 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x6ac1e40e stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa0ae2aa2 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc2304524 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xe6d12811 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6469957b i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbf58407c i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xcaa79908 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf030090e i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x20759ee8 i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb6551d4c i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x02d5dede i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2d74fd3a i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x3936bbd9 i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x5a634c20 i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x63e6dc5a i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6a653740 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x772daec3 i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7856cc8a i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8225037e i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8589fc35 i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8a3c5fdd i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8b32b29c i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x95daae06 i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x98f66573 i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9d39c69f i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa6e5635f i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xaed569e8 i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb250f7ed i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xc45c0ebc i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe666926c i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xeeeb1d51 i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf1e07d80 dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf370be3a i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf52b03d1 i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf9a30106 i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x2e3966e5 adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0xeb54eea3 adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x6e49c9c4 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x98955bcd bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xb3760f77 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xef93aad7 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x860653cf mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xc2ea0d8d mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xf6be94f0 mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0x25efea00 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xcfcac601 ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x86d251c6 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0xc521e28a ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2f5e9cdb ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x613d3513 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6ea56d4c ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6fd22b28 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xac8d934e ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc41248f3 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc579b9fa ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcf16ff27 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xeabb9f8d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf48a0c44 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfe5efc6e ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x5adced93 adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0xe4c9ed1c devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x615b9a6d iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9bb30936 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xdf54bd34 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xfff2647d iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x031082bd iio_dma_buffer_set_length +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x098b6299 iio_dma_buffer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x0d709c19 iio_dma_buffer_request_update +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x1baa4c3e iio_dma_buffer_data_available +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x4391c4fb iio_dma_buffer_read +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x447390b2 iio_dma_buffer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x4c4b2b9c iio_dma_buffer_set_bytes_per_datum +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x4fdfa31f iio_dma_buffer_release +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x557d1618 iio_dma_buffer_exit +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xabd3da74 iio_dma_buffer_block_list_abort +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xd48a35ce iio_dma_buffer_block_done +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xdf598725 iio_dma_buffer_init +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x8b3e2646 iio_dmaengine_buffer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x906a7b45 devm_iio_dmaengine_buffer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x96c582dc devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbcd7a785 iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x9ffde331 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0xd6fbe603 bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x3dd04ef1 cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x4998e96c cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x772bc06e cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x7e84827f cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x89d9fa8d cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9755f1a0 cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xbb2002ce cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xc7e39f45 cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xdd048dbb cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x00e8fd3e ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0xce5b7875 ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x35c75af8 ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x48edbd0d ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x8e576b2e bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xd8a4b27a bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xfccc81a7 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x1c0538e6 fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x3af78013 fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x4f7a4e6e fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x036e3a6e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x05169f7f adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1e7224c5 devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x202008ff adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x22dec3b2 __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2bce0071 devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5563cd02 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5584b0d7 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x606c943a adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6a378e52 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6c880281 __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x85364b69 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9f17f39c adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd4df1d88 __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf85bc998 __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0x8955adcd bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0xd342eccf fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x1ca3e686 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x31ad79d9 inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x042698a1 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0aa272f9 iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0de0e11b __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0fdc9a8e iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x111de917 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x140dcd19 iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1630d46c devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x193cf5e5 iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1eca14ec iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20ce344a iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2bf9a4fd iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3551c0d6 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c529a30 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x415752aa iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x477674f7 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4994dc07 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5c0d3847 iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5cf1631e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x626e612e iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6abb37f9 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d57f14a iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x73479d0b iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x784294bf iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b881e02 iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c63a714 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa23cfbea iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4c0d21a iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaee46972 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb5433087 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbb5f21eb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcc752859 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccf3a9cf __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xce55032a iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd3da3cb3 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe08d34d3 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe195bda2 iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe758c989 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeaa7d0e6 iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebf7c9c1 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xecea1164 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf13a1c7f iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf51d5275 iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfdb3072b iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xffeed154 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x86ffb1b2 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x209f31d5 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x18338280 zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x3769c923 zpa2326_remove +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x4ff7c48b zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x6ccb2387 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xdaafa0b9 zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xe1a3b6d3 zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x043686f9 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0ea60868 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x29534e7b rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x42a69691 rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x46d310ff rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x6dd45b29 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x7361dbd1 rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x7b7f3d34 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x88509586 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x8d86dca9 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xaa1997f2 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xdba717b8 rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xddfaaa69 rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x0786e32a input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xfe453471 matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x3d910892 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x0c9fdb6a rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x3275af46 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x45250263 rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x529e0abf rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x5a25a11c rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x69e3983c rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x7cf22d24 rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x82bcbe61 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x92a8cd04 rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x9476b3e8 __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x999c28d8 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x9a9bdea3 rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xe1b5ebaa rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x3db9dfdb cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x69e35005 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xbff7be4f cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x9f7f22d3 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc676696f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x289d11d3 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc9aa7c46 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x075574fa tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x505eac6c tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xbed8789e tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xf2e7211d tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x17d4c54c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x23577c24 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5aba72e6 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x77cddf34 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x790fbc7c wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7c1a4cbc wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa81ba1b8 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae2a78da wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb06e7632 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5a5bce2 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd4b7f78f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xecb5012a wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0x987e09d8 imx_icc_unregister +EXPORT_SYMBOL_GPL drivers/interconnect/imx/imx-interconnect 0xc2cfae9a imx_icc_register +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0x81e513ad qcom_icc_rpm_smd_available +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0xe8dbdc6c qcom_icc_rpm_smd_send +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x14450656 free_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x438d8df2 iova_cache_get +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x560ca013 copy_reserved_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x632be339 find_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x6591423e alloc_iova_fast +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x7b03b40e reserve_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x89032608 put_iova_domain +EXPORT_SYMBOL_GPL drivers/iommu/iova 0x99b29474 free_iova_fast +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xa4066476 init_iova_domain +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xb9939bcd queue_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xc7061ef3 iova_cache_put +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xc76f53b7 alloc_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xdaa3dd25 __free_iova +EXPORT_SYMBOL_GPL drivers/iommu/iova 0xf4901ce0 init_iova_flush_queue +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0c5f49cd ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x27a23077 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4e8c875f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5721ca41 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x75065b0c ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8bc8c593 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xac13b678 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb3163d1 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xfbd86310 ipack_get_device +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0b710929 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x53dfbac2 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x58cf49d2 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8ea4a5b1 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x9f10ab63 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xc09bb5f4 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd462ea60 devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe5b553d9 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x06b02bd4 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x19a54183 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1f6c9d09 lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4ba9e3eb lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x52218a59 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x56d088fa lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x7fd63e03 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x809a761a lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x83d39936 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xacde6207 lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd2f31597 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00af95a1 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06d94b0a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x157aa73e __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19a50641 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19acd14e __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1e382318 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x24935482 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x28991160 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x29ef0066 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2cd1be34 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3ae1afd1 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f0216b8 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x56bd5947 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5cb0a24a __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65835607 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68b2f180 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7baca7fe __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x95286aa1 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9cedcd57 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa60fcee9 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xafae4e81 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4b03b2e __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7500cb5 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1fd1dbc __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd4cd3c1a __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe278bd6d __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe68d70a9 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee926d8f __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf30b9aa6 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf438022f __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfbd03183 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x09d26fc2 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2b59c0b0 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x316f7eda dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x49cb8d22 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4c9d521b dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x58d5cc70 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5e4b2651 dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x607f860c dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8123fd44 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x87236a4d dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8f876ced dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x90745af5 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9380ad45 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa462af77 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb50ef546 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdc4a53f5 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf38f9aad dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf4a6d5a9 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x03bb93e0 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3d666e0e dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5730f8ae dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5b3dc349 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x75c08c4a dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8f647e48 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x90136207 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x8af764d1 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa57c5512 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2954dd89 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3214bd4b dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4dca22df dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x77739eaa dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x85dcc69a dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x878eebee dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x29c25d50 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x46af8087 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55f98e63 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x630a38db dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x64976f82 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x8a56150c dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa433adbc dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa7083b63 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb8dbd4e1 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6367ed7 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf3e25192 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x00bba4ee cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x122db2a8 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x15ffce0e cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x3e654d47 cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x45403736 cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x48d27f16 cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4d387846 cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4f08d01b cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x59204a37 cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x64cd0738 cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7252160f cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x77b470f4 cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8bc72bd8 cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x9bac66d6 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x9f55cc14 cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa072610e cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa312da2d cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xba245d73 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xba5aee0a cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbf8dd70b cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x02e1fb33 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0c178f13 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x45be26f2 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5cc8588f saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x76cbcfd8 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdb549759 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdf1bdae4 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe64fc9b7 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xecabc14a saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf25b988c saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0532da0b saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0e8e9858 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x609a422f saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9241f644 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xcfcbebff saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xec016348 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfa0fa10a saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x032122a9 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0c55f342 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x194d819e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1dd39ddf smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x38a64316 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45b59d3b sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x553f7725 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x59a4765f smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5de298da sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x827a8c5b sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb2d333c7 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb6ab6dfc smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc144dc6a smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc60fcb26 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdaf84e62 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf78293a8 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfd2a438a sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x021a019c vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0aa6af5e __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x16f67eef __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x1b125da8 vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x1d544dc9 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x1f2b2a01 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x2f105b6a vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x421e5794 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4381f396 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x53521e19 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x60adef96 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7b0bf049 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7e1e2fe4 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7e8a3a3b vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7eeeee2e __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x83006a6c vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x88f1425c vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x92d0b10b vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9d401420 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x9ee7fa61 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa3e23b2e vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xa5a363f1 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb69dd93a vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xbd7e99f3 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xcfc721d1 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd8192224 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe779c33a vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xe8e542bb vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xfdd41197 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0x76480ae3 vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xbfa82561 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0xd25fcdbf vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0x3a591f42 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x01e908e2 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x041b45e5 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x248e4668 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x24b08b15 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x375706cb vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x387687a6 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x421065c1 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x469f64c9 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4d987331 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4ee36821 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4fcb922a vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x5d925414 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x5fd89261 vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x648a00c4 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x70d26740 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x79b43420 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x8df45d4b vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x8fa15cb4 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x970ff871 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9a2a2562 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xabc113b4 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xac24b316 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xacff8f97 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb56320db vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xbf883872 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc2318c71 vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xda04fc16 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xda5c4896 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe722c9a1 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfb99e1e7 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfdac7a38 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0x22d18bed vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x0cfdca0b dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x710e7838 dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x93c940ce dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x6948c899 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xc75c7251 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0xf6f58985 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0xd1af669d mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0xecc4d725 stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0xcc0b5d2b stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x9f4637fc tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0x7b48434d aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x475d5467 smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1194759a media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x125520d6 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x184794bb __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x27cfd20c __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2e030410 media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2e9fe9af media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x31534555 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x32bf1959 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x399942a4 __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x407476fb media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x434f1041 __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x449c231d media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x48b0edc6 media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x54782582 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5551462f media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x562e132d media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5880096d media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x59153b5d media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x60b81bf8 __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6632084c media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x66d0f51d media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x6d71849c media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x71505ba4 media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x72a3d43a __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7aa0d26e media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x820398a8 media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x848b4890 media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8609030a media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x87bc12dc media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8d2772ff media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8e255811 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8f6b6588 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9c634081 media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa8cd0699 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xba383765 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xba891ac5 media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc2cf6f74 media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc8038ae6 media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xca9e8b8c media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcb2f6df4 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdeb41775 media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe1e4d6d7 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe6d9b457 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe81e2e98 media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xeb88369d media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf1d9b38a media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x50deec6c cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10cf0f5b mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x16a7a27e mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x42a2dc4e mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x543ccea8 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x61848211 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6a5cbde4 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6fbc7321 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89cf8ce1 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8c18714d mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8efb63d4 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x973ac8b8 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa14def92 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xae92e569 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaf3e2f12 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcd421af2 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd12c5e2b mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd24aba0b mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd3244e3d mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd81d0f7d mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x08ff7ebe saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a94dba6 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x146f3ca8 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x14798d39 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x273fd831 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x314c8c47 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3c4c02cd saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x49b519bf saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5fe6d2ed saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8db91925 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8e751b1c saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa180e36a saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa5ae5526 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa6a1e5c1 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaf1db15c saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcb602766 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xee475563 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xef8f0350 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xff8028cb saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4aa9afd8 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5e9aa458 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcfe25b7e ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe069157f ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe4ce5fb7 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xea863a85 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf801493e ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x158a04ad mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x89d8647e mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xa9dfb7f9 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xd13e0f83 mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xda896f05 mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x141236d1 vpu_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x1f20f5b2 vpu_ipi_send +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x24dde156 vpu_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x34ea50c6 vpu_ipi_register +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x41b19dae vpu_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xc805dd21 vpu_get_plat_device +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xe021252a vpu_wdt_reg_handler +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xe552006f vpu_load_firmware +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x085d8e48 omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x0a59c11d omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x0d615dfe omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x3739df24 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x6e8a3074 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x23e237f3 rcar_fcp_get_device +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x3d858696 rcar_fcp_put +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x4ad5d888 rcar_fcp_enable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x5fe6f6e8 rcar_fcp_disable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x9877c29f rcar_fcp_get +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x01436b67 vsp1_du_map_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x298ed56d vsp1_du_atomic_begin +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x6b7c9ebb vsp1_du_unmap_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x7d7897a4 vsp1_du_atomic_update +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x8ddb9bf1 vsp1_du_atomic_flush +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xe79743b3 vsp1_du_init +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xed3b70b1 vsp1_du_setup_lif +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x47a4f78d xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6e3199cd xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x8c0237b3 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9b1c84e3 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb67940fb xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc14e32f0 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd83b1ea5 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xdbabc42b xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe08e6063 xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x43688c5c xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x7b48f677 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x96949461 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x277f5f80 si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x650ada4f si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x66cdac98 si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x80e54fcf si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xd15e7b1c si470x_stop +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0518b9ff rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x05ed2c9c rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x154def03 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x27383244 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3174467e ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x44c73138 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x52a6e729 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x52e7529a devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x684157d1 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ce113f1 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7a0db325 ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x849637b7 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x870b4266 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8f6504f7 ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x97577f94 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaaa4e48c devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4406953 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcbca17d9 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda06a1db rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf2c26ead ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfd5960f2 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x0dc864c0 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x7600615d microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x9d889151 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x6c48c794 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xcb1a4b9a tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x8b893286 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0b9093f6 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5fc3a0cd tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x3835c1d7 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x42ac8483 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8936b6ab tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x51ec8281 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xbee5ea04 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xe7927bff simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1d91b052 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x20eb19f2 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x230a1ea7 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x35b91bce cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x442c4a19 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4e987dcc cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5695b75d cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f0a6cb7 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68d634d5 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6bc3b86a cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x70a24ff4 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7aa9fc76 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ea82934 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x824d9df3 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x87a42802 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9d183d50 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbaed0eb9 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc79ec088 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdc97f13e cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfac319f1 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xbb959e60 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xc367d70b mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x02f38050 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0905f9be em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ce89a7b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1232531a em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1a3e5cc9 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2022b366 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x29d99e24 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x40929f07 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x57648d33 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6dd1d01d em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x75f2fc6b em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7827efc5 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7896bb5a em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x82b01159 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x86b216d9 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x88fb7053 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcdd0f5f3 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xde6b9cf1 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x60488a97 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc469aac9 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc6b3bdf7 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe0dfd6d5 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x12f26aba v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x4691b403 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xcd6fb7ac v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x4b6d24be v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x59fbb7e5 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x5dfd514c v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x77282f14 v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x796a17c6 v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x7ab98331 v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x7e558880 v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xa65b2f61 v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xab5841d8 v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xbc78e677 v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xc9b04af1 v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xdcd6132c v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0x8468300b v4l2_h264_init_reflist_builder +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xa003c02f v4l2_h264_build_b_ref_lists +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xae38bf6d v4l2_h264_build_p_ref_list +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0x161b22cc v4l2_jpeg_parse_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0x4c847e31 v4l2_jpeg_parse_huffman_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0x5e92a994 v4l2_jpeg_parse_scan_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xd8c706cb v4l2_jpeg_parse_frame_header +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-jpeg 0xdc58b7d5 v4l2_jpeg_parse_quantization_tables +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x068b55e2 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0f9d8f57 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x11b79ff5 v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x13506b0d v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1635311d v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x168a26bb v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1b8ce154 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2fb67d15 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3e10501e v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f75a5a9 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f838b65 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f96e4a5 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4386b92a v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45e3ff30 v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4f5da330 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4fa0e261 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5415dffd v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x582a4c57 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5db83451 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x63f5f762 v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6a37d191 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6f93118f v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x70eab0f2 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x75a858db v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7e1c16e5 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x800fb7f6 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89d315fa v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x91fb79c9 v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9342ecea v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9511895a v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x97990d54 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x97e182e8 v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e550a75 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xad055ee6 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb15a25a9 v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb9026a2f v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba116835 v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc4d5fd11 v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdd23593c v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdfc64ac1 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe1d2f0b2 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef21d8ed v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf866ffdf v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe3924f6 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0318072b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x068bb8e7 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0c5dbfec videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0e7e78db videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x16079d01 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d6a61a7 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x29947911 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2a884696 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3876410e videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x460a1127 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x48863d27 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x78905dab videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x85458171 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9cee6dff videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa0ed74aa videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa602b426 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa8e66203 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xab9f5dcc videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xaea417de videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb07a96fe videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb315e8f5 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcf61776d videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef9ab88e videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa961667 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x2c906cfc videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x49789f22 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x7034e96b videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd480c4da videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x17a18fee videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x60473868 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9b6ea977 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0033f256 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06e4e05b v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0aefb779 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0b5ce5f0 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x178a4812 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x19c2bf28 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2082a7c8 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2229bfe3 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x25a0b77f __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2a602b1a v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3245322b v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x33ab8b10 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x389707e8 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3bf25424 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c3a17a0 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c853c67 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x490639ef v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4940e4d5 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6059598a v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61817752 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x640312e9 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x694c6266 __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d810f54 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6df81f80 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x704d7b52 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x73efcf69 v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bc2765b v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8007839a v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80c54f85 v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x813f25d1 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x842bcff9 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8678dd76 v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x95fa7a6f v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x976288b6 v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c8d421c v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9cfb1946 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa1c75d1b v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa6392d49 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa820498b v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb43f4415 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb45b1a77 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb67a4cf5 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb6dbc1fa v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb92a966d v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xba958ce3 v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbc748243 v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbc9a9c83 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc2cb4ad3 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6cd58c7 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc70d8175 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9179db1 v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9b285cc v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc8b334c v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2712013 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe8770199 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeb81d59d v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xed2b1268 v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7047aa4 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfac9fb3e v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfed4988d v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff76573f __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff99aeaa v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x27ed2092 pl353_smc_set_ecc_mode +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x2eec2ab2 pl353_smc_ecc_is_busy +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x31112d75 pl353_smc_get_nand_int_status_raw +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x80ef3725 pl353_smc_set_ecc_pg_size +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x84eeb67e pl353_smc_set_buswidth +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xc00d163f pl353_smc_set_cycles +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xc37aa3c1 pl353_smc_clr_nand_int +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xe2603369 pl353_smc_get_ecc_val +EXPORT_SYMBOL_GPL drivers/memory/ti-emif-sram 0x49a8a623 ti_emif_get_mem_type +EXPORT_SYMBOL_GPL drivers/memory/ti-emif-sram 0xbcf322c5 ti_emif_copy_pm_function_table +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x74008f4d pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x81787e45 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe1b8ae3b pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x0a672d86 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x281243b2 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x544e41e7 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x787a1547 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa2cf6e3b da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc9e884d1 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xeaa5369a da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xa142a524 gsc_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xb7abd1c4 gsc_write +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x286cc635 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x78068efe kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x921be65e kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9abb32af kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9ad28ffe kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa2fede09 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc5ee38ae kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xff8cbd15 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00be4119 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x40491197 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5f9f7b66 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x520e36f2 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5821a8ec lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8c218bd0 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8f282e56 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcdb9cfa0 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd1b1e75c lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfe0c4b8c lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5d9a14aa lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x9a4f7e90 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xcaba1a95 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x12639008 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x126e4c48 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1b33571f madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4a3f81a9 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x51568d04 cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x515b5144 cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x62bc33c9 madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x86b3d0fd cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x86be0cbd cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8eb1b65e cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x9b9527c8 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x9b98fb88 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa9e7bcb0 cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa9ea60f0 cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb132cb00 cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb13f1740 cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xbaee6338 cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc586cdf1 cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc58b11b1 cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xc7ab2fde madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd4398c31 cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd876583f cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd8a03ac4 cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd8ade684 cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xead2a1bc cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xeadf7dfc cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xf207d60c cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xf20a0a4c cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4498975a mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6ca28c91 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x74552e25 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8a0afbf6 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcab0b0d6 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd8bf45be mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/motorola-cpcap 0xa226dbe8 cpcap_sense_virq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x067545ae pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1156cb5a pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6513b5c8 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x700884cb pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x75e25535 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7ecd6c74 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x95c3afbc pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x96124750 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaf6e865b pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xda9b85f4 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe8384749 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x1e9c1ff5 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4c402bf7 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x74833f41 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x777ddc78 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x970d366c pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa37a885c pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd47faf75 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xc31bdb8e devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xeecaf484 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x02d85c97 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0cfe47e4 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x166e0667 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x22790507 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2b0d57f1 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x440c2690 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x44bf3d58 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5714e89f si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69480155 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69783e8d si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x71ad2ad9 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x746863a7 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x75e488c3 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x785a697c si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d5e94a0 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7f4f47ed si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89c178c7 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8ac6be10 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9661f8d0 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x97532363 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xba45b376 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbfa4f9a si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd34d4171 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd9573568 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd9bb9bbc si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0d31438 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0e65eb5 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2428a56 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe79a2ac6 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xea51b353 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeb17708c si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3fd8924 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfcec1e94 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xffb61552 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x328910d5 ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xe02d85f1 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x3e125eaa stmfx_function_disable +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0xbdd3240b stmfx_function_enable +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x132d0e32 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x800ffab2 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x87cc675e am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x9676ebb6 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2ba74af1 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x86b27654 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xcd9478bd tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xa633e18c ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x065d252e alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x086cf90b alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x15756b9e alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x1c8c4b0b alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x4e822457 alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x63c7dbe6 alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xa5628f80 alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x039c775b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x05136311 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1660066c rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1993e863 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x1c4b1ae2 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x333a3afb rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x612c9971 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6cc11e12 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6e2bf1c4 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x791b6bb7 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x7da5dcfe rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x8bc713d1 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x94df82e8 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xad4ff3a9 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xaea415c5 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xaf097bf7 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xc41a391b rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xc6df3e80 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xcb77ef28 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdae4fa2b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdf539e6c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe44c340e rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xf9ee4269 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfc3977a2 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x02d6507b rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x19e0f065 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x1b281762 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x26eb1ee3 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x37d9ad2f rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x5d8f0106 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x8bd08212 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x8ef9b9eb rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x9ea6c3a8 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xb175c934 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xdbd9cfa9 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xe0d6d0fe rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xed48c32d rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x17541510 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x235b0818 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x557ddf3d cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb2e2d7a4 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x25cf5b5f enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x32d9d43a enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x33331a18 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x41e9961d enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81cece03 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8b4ed904 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb9f7e7f0 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfa944658 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x518946bc lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x51ac69b1 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x53a19657 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x596427e4 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x69c4d461 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6da5aa99 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb2cf9b3f lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbb0b15d8 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x091fbd7e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xa31892ca st_unregister +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x19ba7751 uacce_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x1e349af4 uacce_alloc +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x7542ad0b uacce_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x94459585 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x9a7d0c4d dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xcfa2d344 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0xc75f27d5 renesas_sdhi_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0xd547271f renesas_sdhi_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x1f24fab7 tmio_mmc_do_data_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x37ff88a9 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x4c5bf090 tmio_mmc_host_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x52b2133e tmio_mmc_host_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x96aeb45d tmio_mmc_host_runtime_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x9988a00f tmio_mmc_disable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xae2f7cb5 tmio_mmc_enable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xbf8f9474 tmio_mmc_host_free +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xfcaa4ab2 tmio_mmc_host_alloc +EXPORT_SYMBOL_GPL drivers/most/most_core 0x1115a457 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x17dfa78d most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x21edd4aa channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x33033840 most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x5a8fef45 most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x85ebef6c most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x867821aa most_stop_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x905f85ff most_submit_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x9dc71c60 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xba27bcc6 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xc70eb93c most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xd8f0c08a most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe28a58fc most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe83472bb most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x136ff232 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2c46d7da cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xee71d7a4 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x0cfb60c6 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x72a92b16 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xff02af40 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x9d3c0641 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2e6d5fab cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8caa843f cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf81953fa cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xc412e29a hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xe8227955 hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0xa8c5a29b onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0xd4e98b8e onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x0b3aa0a4 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x23398a94 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0xe20efe8b brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x8a842708 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x52e0b604 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xc0fed223 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xfc746590 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x04421f27 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x093508dd ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3adb020f ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42d7cf78 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e731dc8 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7f37e4da ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8a2f2862 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9ad5f1ba ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9c7ee3ee ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc2625ec7 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd850e1aa ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeb7b8732 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xedf94c3a ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xffd75b9b ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x263bcaa7 devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x442a69bb devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x4eedebef mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x52b56b51 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x59eb9761 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x6048d362 mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x7bc45dc4 mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x87d3ec8b mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x897a3f9d mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xaed62b71 devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xbbca5bd7 mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xcdb2f0f3 mux_control_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf4ae1cb9 mux_control_get +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x748b742c arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x76b89514 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/bareudp 0xa38d502c bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x10ef5fd4 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2b9bf14d register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4891ed61 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x844c8969 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xcd855f8c alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf46c6a64 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x469388c6 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x493d7d25 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7545a2c3 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd09de327 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0289da14 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0b25d8e8 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x109671ac can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x147b4cb8 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x155335ed can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2e4578d0 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x30fb3fc0 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3ecada88 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4659826e can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x5b0a2680 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7304d20c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x88f31d9e alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8c1cedb8 can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8f4c25ce register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x909754cb can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x95f99539 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x97de4663 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa08a34e5 of_can_transceiver +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbb8dfb8e alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbcdfa39d alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc67d80c4 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcab8092a can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe1760f23 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe4311015 can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe8bec1ca can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf48d8946 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x33043e1b m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x56b99a85 m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x68d2b910 m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x7afa5680 m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x8419d209 m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xa93b89c0 m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xdbcc9ad3 m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xebd16a9f m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6c4b01b2 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd4cfa8a0 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe901c3c6 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf14eedc1 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0x172bc7f9 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x146572af ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x21a2e46b ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x319e5208 ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x32117be7 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x3a0f130d ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x3d46b3cc ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x576338fd ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x5f8033d2 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x61e0c234 ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x8d57415c ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x93b18954 ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x9745ba23 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x99f25db9 ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xb40ae667 ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xbd7279e9 ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe3ee04aa ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf61f95aa ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x02200824 rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x0df5a32e realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x41b3f1f9 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x48888660 rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x52587fb6 rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x590cf58f rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x59186c0a rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x59bcc795 rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6884511f rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6c3144d0 rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x8d918eea rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xa6447801 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xcd2e939e rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xd4ad51d1 rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf6b4a1e4 rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf767cfa9 rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xb80b98ca arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xd9742d76 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x9c9f2ff5 enetc_hw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xf334e38a enetc_mdio_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xf68ac32d enetc_mdio_lock +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xfa1620cc enetc_mdio_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0194eea4 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02aceff2 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x061bb19e mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d0e73c1 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dc9fc37 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dede78e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f597110 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fc28911 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x133236e5 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x141a4f7d mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1561e6f0 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15e94773 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x176407c1 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f189633 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x209560d1 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23b43930 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x245afa37 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x287ca58f mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d10413a mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d2a7b42 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d391192 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f12ef54 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32a99169 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33b08c8c mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36cd0f86 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x395fa4e6 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a37c1eb mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b08799b mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ee2a32e mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f209cb6 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fca5361 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x409dd512 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4294f3b4 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42c9df19 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x457455ef mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45929cc1 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4627057b __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d46e4f4 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ee95ad0 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fef2306 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5023e575 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x511b85c7 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x524c66cb mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54417e5d mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55577a26 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55825368 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55e586b8 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56b44352 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58287a5d mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x595cb872 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a3bf7fd mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a920a27 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d1ea005 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e3848df mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64063597 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64ce0da9 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cbeaf12 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ce8fa9f mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f82d23f mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7533fdde mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a49d443 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a8042a5 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7afe03d0 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cb1eb2a mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7db96d56 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fa28a46 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x826908fa mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8507d857 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86cb4341 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c8ba21a mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ccd80a9 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e6da97e mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fba19f9 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x926d04cc mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9944236e mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9da10dce mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e71e379 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0ee6760 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1ffeeaa mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa53c842c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68b870e mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacc094e9 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad6a7143 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf9a9ad1 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb02c5e01 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0af0d95 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb36422a2 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb511871c mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8f07c1b mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd22941 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe5ac2d3 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe9c7800 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf4470ca mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc080be42 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1208ef8 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc23ab567 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7b77a2e mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc83169b0 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc2d329d mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd27e7446 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd35f9a46 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5e0bd91 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7089802 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd81b8fc1 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda392813 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda4afd58 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc6c0a61 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc70cedc mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2beb773 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe615be1d mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6dc2113 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeba869f1 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecb4aab6 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef93603a mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf082597c mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0c68134 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf70ad41c mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf95d9a51 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe801f6d mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff5331a8 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffc2694b mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05f9805b mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13009f12 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13258183 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x133b4001 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1516d2a5 mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15a22bfc mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15b7ab02 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17c775e6 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x195e2100 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e4c6e81 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e557031 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fc54d65 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2397065b mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x255e8127 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2acc26a5 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ad0fee2 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x30b25af8 mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3133b979 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x334e794f mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38a298f9 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43767384 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48f7bc4f mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49dc8ba3 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b033af1 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b73a140 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c0072c6 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5354db9c mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55d6a5e9 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x660ef0c6 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x682d9011 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a49ff1b mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6aeeaba9 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e71daff mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f789bc0 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7221baf4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76bf947f mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76d89b5f mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x777c28ec mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78c3fd84 mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7aab7407 mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cbdc6dc mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7db7e346 mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81017c5c mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82b8b4cf mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90a3b598 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90e42737 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x935d5c1b mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x954e7423 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95c4c010 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97057289 mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1d14481 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa63669c2 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0395738 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9709a1c mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb9e90d6a mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb02282c mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbec35838 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1feee79 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd24ffc0b mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd33b3f5f mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3e8b42c mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6714be1 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd9bb0b7 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf083576 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe746c468 mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec2c7674 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef562cbc mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefc40774 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefd38328 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf76d4395 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb14735f mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbe8c30a mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd2556f4 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x2695f52f regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x4be2f862 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x5fa4e3f4 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x29c8b606 ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9e96db57 ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd443803f ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x0b28a9ad qcafrm_create_footer +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x2b6ddf3f qcafrm_fsm_decode +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x41da0375 qcafrm_create_header +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7c089d17 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xa514f7bb stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe235a919 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xef7552a8 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x60a2ba39 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x7209e147 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x99d71d50 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x9bfc4831 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd0ed106d stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x2ecb63b8 w5100_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x51c8560c w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x6ba9b4f9 w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xb34e7776 w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/geneve 0x50202686 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x07a6e285 ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x403f6ef7 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x5218ffb2 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x6df78629 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xc7d4400b ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/macsec 0xbcb336c2 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1477d906 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x414a413d macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x85e767d0 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe9e6987e macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x47a66e93 net_failover_create +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x8d8ee9f9 net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x07b09acb bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x184a1567 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x18f3bbbf bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1ddb3ffb __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1e9d81fc bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x21113518 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2a6dedf4 bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x38e72528 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4a95b92f bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4fd2d488 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x56263d0c bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6027f40f bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6190ef03 __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x75edee07 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7a0b3c22 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x88c7dc3a bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x90fbd0a7 bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9cc1e097 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa0e9ca20 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa407534d bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbac28707 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbbe337c6 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc4ee5524 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc8bef518 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcb0b3c6d bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcf43517d bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd94767ed bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xde906e59 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe6c04167 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xecef4b0c __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf1e5d567 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf22a9f46 bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xfe186004 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x2b7eb2d3 mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xe8c05287 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0xb07fb29d mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x00981008 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x04a73371 phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x0c2e4a66 phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x4cd2ce33 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x55fa6f65 phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x9bdf83aa phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xb52cc846 phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xbb68cba2 phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x16431e47 tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0x78e17cd3 tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/tap 0x977d6a9e tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0xaa4e9c59 tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xb6e00413 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0xb8c0f0ab tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0xb92c9533 tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xc03c89a6 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xf2e9653b tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0426493b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2f07d514 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xa2bb9395 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb114c8f8 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbdac6565 usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0ab2ed4a cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0af3d99d cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0d38a9b7 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x292dcc65 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x40c743c9 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6be9e819 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa23044bc cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa62f8b98 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc1b380f8 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc5982a0f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdf0c6992 cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0110485b rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1e266d70 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x43dda93c generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x57079bbb rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbf33fa00 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xec478f15 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x011dc7ec usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x02434121 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04de44d8 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x06500bc5 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ca3c7bd usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1093724c usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x10e2e4ae usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x112378a3 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x128abc4f usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x253fce68 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x256c7b97 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x30beb3ac usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4d2087fe usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x50e8ecf2 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x54318405 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5751ade2 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x63138114 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6ef1c3a2 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6ff9a675 usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x70706466 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x71f16cb9 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88f9a9d4 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbfa85680 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc1c18820 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc4776e22 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc7ee5cba usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc915703e usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe6a17155 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb3699e2 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xec1802a4 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeeea2e01 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf356656d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf5f3600d usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x46b82143 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x5637c4ae vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7a119223 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc54a7799 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2c719d54 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x30eae7a4 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3d995e80 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4c27a363 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7ca059a0 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d49ff13 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8cd962ea i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9bd97b56 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9ef373a9 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa1fae8ac i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xab9180f5 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb37337ec i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc39b6ec3 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc4a1d9e3 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0cdd239 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdad7456a i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0x6bffa0ca libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x42b536cf il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa71b4f95 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaedb4f90 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb1635c13 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcd1081a1 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0189c36f iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x028cd7d2 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x095c0d11 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x131b6db3 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x150a3f98 iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1787e6e2 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x17d249ce iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1c48129a iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2093d1b9 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2c0f571f iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35ed1c65 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x36895b94 iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x36f341a8 iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x48cb198b iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4e886fd4 iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x59b751fd iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x59c08cd8 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5ef4a44d iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x63bcf7e4 iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x640ea77a iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7434fb4b iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x74deaf5a iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x77921ed2 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7811848f iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7952c48f iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x79cb60a0 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7a30fcdb iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7ad25648 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x84377de6 iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8a0d1a00 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8c5a1a04 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x93160e9e iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9955979e iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9b3d1191 iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9c71a276 iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa11145bd iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa138343e iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa2b25547 iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb0898ddf iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb1e39cb3 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb2169dea __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb21d83c7 iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb2fc5979 iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb46a8550 iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb5bbe075 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb6181631 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc552c888 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc9878a51 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd5de42fa iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd97bf106 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdbb4c26a iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdec9e66d iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe0d14150 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe3e43252 iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe4405676 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe8443ef9 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe8859fa2 iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe9691661 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xed8d5929 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf69ef772 iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf8d48c89 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xfc86f2fa iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x145a2bdb p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x4865fd70 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x592a94eb p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x7038eb4c p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x975c43da p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xb30cbdbd p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xc5d911a3 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xf5818e3c p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xfbc27ed2 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x1bd09148 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x34f1d565 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x595f8357 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x757d8043 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x8ab6c6eb lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa41dc1f0 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa4f38605 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xb254e3ce lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xba828f29 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xbc201ede __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xcdbc007f lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xea7c667b lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf207da62 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf2124607 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf48f0d1d lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf8006f44 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x1a213c7b lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x311d91ea lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x5595c38c __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8784bd34 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8cacd73d lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x8cc80bc4 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc0ad62f9 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xf96bceba lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x1ca3f19f mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x24e259b2 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x30b4f351 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x3aa717aa mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x3e621837 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x44861b7b mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4846adcd _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x50bf8bce mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5825837a mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x63b48d84 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x64cd1b0f mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7317e7f4 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x76e656b8 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x778bd37c mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8653d318 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8a9be2e3 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x95696cd5 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa935a750 mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xaa0e32fd mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb116a282 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb6133431 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xc45539ac mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xcbfd8b5a mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe736b39a mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x014e913c __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x054ef5a6 mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x05afece6 mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0638c3b2 mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0a5945c1 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0e7f3dac mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x12abc2de mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x17aba758 __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x201e111f mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x218d8537 mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2bc11cda mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2d716253 mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x37ccb641 mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3e7f9b53 mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4c5447bc mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4c921253 mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5074eaea mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x54e4f52b __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x551e49d7 mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x58c8c16b mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5c098b4d mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5c483987 mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5ed1aba1 mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x68288ae9 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6a50650a mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6bc00e9c mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6fece2ab mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x71a27cef mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7357eed7 mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7736f7a6 mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7cd8e40d mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7e3f48da mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x80154419 mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x85478ff5 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8572d31d mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x887367da __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x892eb9e2 mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8e81ba4c mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x92f30851 mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa164806b mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa556faaa __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xab4f1430 mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb096ce86 mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb1473fcb mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb22ce0ca mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbe370064 mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbede03d0 mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc78aae46 mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc7a8b2ba mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc88ef8c0 mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd26b8f3d mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd384c896 mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd6fb65a2 mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdeeda87d mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe0f1da1a mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe6a4b7fc mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe70ca21e mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe9d9e554 mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xed72a05f mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xeec5b728 mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf0bc96db mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfc3129fb mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x115d13c6 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x3b37828e mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x8b6791bf mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x8c0b67c3 mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x975bc5c3 mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x99e28403 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xb6eb1534 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xd0dd1f85 mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xd4ee8d11 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xddd13320 mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xe3defb36 mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x0012f71a mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x03e8621c mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x06c72e96 mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x07b61dc8 mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1a9ed7fb mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x27d95929 mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2aa755f2 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2f1457d7 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x31768c76 mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x32dbd5f9 mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x339b594d mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x388f8f4a mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3cb1f8f0 mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5532fe37 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5ff24773 mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6114391e mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x62cb01b1 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x78507e4b mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x87db15cd mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x8a1f507e mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x9cfba573 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb49fff62 mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb531a35e mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb54ac9ca mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb9efa463 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc36f99dd mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc5509c84 __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xca6fc4ab mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xcf37c24f mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd0192bc2 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd0a48e0c mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf09795ce mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf22cc3dc mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf385655e mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xfcde3d29 mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xfe4f0b96 mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xff226815 mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x3d81c7d7 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x5436e881 mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x60c46c1f mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x9b0f2e90 mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xca8e14ee mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xee937ca8 mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0086dded mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x063a855d mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x07ba5f1f mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0b2a817f mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0ed5cfc1 mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0ffacf45 mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1a335b22 mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1bdfdd9c mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2052685d mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x217bb8d7 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x250c85b6 mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x25d0cb59 mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2a92aed9 mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2df75bbd mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3235122b mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x36caad2b mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x45730311 mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x45df8166 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4c6c3c60 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4f687a1b mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x50acd8cc mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x53f36afb mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5e057a91 mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x614c877f mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x641d1d34 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x657512d7 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x66c280b7 mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x670a6d44 mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x70936a1a mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x70bbd115 mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x73add037 mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7b643405 mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7ff28bce mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8641d3f8 mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8ddc0845 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x92382248 mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x98b6f783 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9bb9a563 mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa410e979 mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xad26cd1e mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xadb94103 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xae4c86c6 mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xafa3c770 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb027a99f mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb71b8068 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb7d19823 mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb9468c9e mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbc8404dd mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc04676e2 mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xcf2044cb mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd13a0423 mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd4fae515 mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd8539ab9 mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xde16cf95 mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xdf97b414 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xdfd2be6d mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe1df184f mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe46f71f7 mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe60df54d mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe7f3853f mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xeba93174 mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf4005cb7 mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf84bd70d mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfae02e6c mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfc46e6aa mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfe779532 mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x110f8cd8 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x19865da5 mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x1a332498 mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x21920f63 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x48ebf27c mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x5cf5089f mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xac36b3b4 mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xffda4f5a mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x12dbd868 mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x1699e4da mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x176c1137 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2e12727d mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x42b6cd90 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x59ddb4af mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x5b366d8e mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x5eaea8b7 mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x8bccb57b mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xa2bd3980 mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xaab30dbc mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xaf59894b mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb7a3d9b4 mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xbd92fb8e mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xcd5d4586 mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xce298fb5 mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xcef680ce mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd7eb44f9 mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe1ee7d37 mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x026d9de0 qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x26184c10 qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x50738dac qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x51ed7b5b qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x60052e0e qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xb66f5556 qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xbbf3e6f0 qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xde1172dc qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0027d7ea rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x01916658 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x03a67533 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0f44634a rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x13285015 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x13f8d948 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x14dc1c11 rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x25842717 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x28b51555 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2b82b937 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2c756186 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x31069020 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x35f9be84 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x37092527 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3c8fb0e9 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x40b038a3 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x43f55edf rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4b5728f8 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x67bfa231 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6b068fca rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6d5d15a9 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7543db26 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x77c7cd7d rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7d3717bf rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x83f4ba77 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x873f3060 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8919f536 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8e29c60b rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x91a1a024 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9cc47cef rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa00dedff rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa0b01a04 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xae055d86 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xba403acb rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc0f8e264 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xdb7ca56d rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xdbfee6cb rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe560126e rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe85f47af rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xecfe150b rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xed9fb99e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf196ce93 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf80665e2 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf902749c rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1c10deca rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x25f75847 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x41acd9d6 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x4cfb26ca rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5e4efe69 rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5f3ba556 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x74a5bb5c rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x8ebfc38e rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x96584086 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xa7088268 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc35f8fdc rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xcebc8ddd rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xd0612cf9 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xea21a696 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xee33313d rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xf7fc03a5 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x03e888f5 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0693e7c5 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x15aa5008 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x204a550a rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x22832a10 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x34387ed6 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x442238a6 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x44ede4f6 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4812261e rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4a66ed11 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4d566d93 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4d570180 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x54ce374e rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5cf55ba6 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5d5f4333 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5f108490 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x63264202 rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6e85aa09 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x76c5123f rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x77e1c429 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7fca333d rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8b0ecf36 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8bf6bd51 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9e959eed rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x9f4e265d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa38b611e rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa6f1b915 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xade6643c rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb1e84899 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb47e2a35 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb6f8c546 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc5a7644a rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xcc3e0264 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xcf0cf7a0 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd1a52244 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd36cd276 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd9b6e507 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe3ab5115 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe636dff3 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xeaefe357 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xec334512 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf08fff4e rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf25113fa rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf2a8ffed rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf9f0f11d rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfc842b5c rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xff76afa0 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x37ee31aa rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x46dc89bf rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x50e83335 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x55ee5bec rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xb183d2fa rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x417a3b2f rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x4abb2a8a rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x4de68e08 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xc46d005b rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0393e7d0 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0975736e rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x100b6033 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x14f06394 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x1a84015b rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x214b9155 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x25f26366 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x3a2a5a89 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x660c0c1c rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x6bc47c47 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x964384eb rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xa75ab383 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xb0218b10 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xc3fcc674 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe2a718f3 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe3f38006 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x89c85643 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb15500d8 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdd5270f8 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xecf73214 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x0fdceed9 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1a0ce746 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1a7df07a rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1afe7257 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1d36c7b6 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1e4f2b24 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x223f2116 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x33633b25 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x354afd88 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x368229d0 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x43670e68 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4785ad35 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x52ec6c39 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x542f9f0f rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x57d3cae0 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5c749915 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x653de576 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x727baf31 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x853336dd rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9b13b9d7 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xceb3539d rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcf42cf49 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe4b890da rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf255f959 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xfdc44469 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x09705d89 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d68abfa rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1cb1a545 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x37b993b4 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x439764b8 rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x495728aa rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5d9321b5 rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x64efc4e7 rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x724dc6e4 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8401f51c rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x923cad52 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x96811f60 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9df7d9ac rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa431217e rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa4722fb4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb3643801 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb8e69a21 rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc0e3d145 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc23cb6fe rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd56e7937 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe8dbba8e rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf5642736 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf7591aac rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf7b3aa53 rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfd939ff3 rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xff8a3c41 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x510d806d rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x85e139f8 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa4b7f9cc rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xae5bae8e rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcf96070a rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x2b855db5 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x8c3c6bf4 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x97246f6c cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x9764e16a cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x35b6c276 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb39d1a35 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xcceb2a3f wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x009b2a46 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05f14a36 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09f73691 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11f73242 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x17395a82 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1819ed84 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x186d4ae9 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1bc5c0ad wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1da91673 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2568a0ec wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27507301 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2be7770f wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31323d43 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x337c9b95 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bfc8992 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5031743c wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x51cfdf96 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5258c628 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5303a6af wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x61c409bc wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ac9491a wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7fdc5fbf wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a023462 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8fc1d170 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90898e6d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x920582a2 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93210805 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93d10513 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94ea5169 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x96f5c53e wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5d150d8 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabfad4ab wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac0ad2dd wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadf546f2 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3995cf1 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb848c5c9 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbc587cb3 wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc1db71fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc82b42de wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcdf78f9d wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4c3501c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4f9c6b6 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xecd2429e wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef6c4271 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3ec8c313 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8fc5b6a8 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xfcd8864d nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xfe9ef725 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x60163bda pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x6a527e8e pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x7be2b8cd pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x83408764 pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x93c13994 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xde58bd80 pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecc590c pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x011dae2b st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0bf19d01 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0c26dcac st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6107458c st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x61c4979c st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb755746d st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcf649a27 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xea4c23fb st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x0f331e76 st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x9a743ae1 st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0xc3c8f0b4 st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0cd74c76 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x799fdcb6 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xbd18acab ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x04660c93 nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x083e1f22 nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x19876274 __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1a24758e nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x20b73a1b nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2108b45d nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2333e32b nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2eede233 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2f3cc5ae nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2f4da364 nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x31738acf nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x35339f84 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4163bdd9 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5101a146 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5c97e297 nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5f3317b0 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x65d7c710 nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x699a4b21 nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6e688f2c nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x755aabd9 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7675c081 nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x826c4951 nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8540eb47 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x86329683 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8ab19397 nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8bdf1a56 nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8c89cefc __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x90c76bde nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x99c9963c nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa3f441c7 nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa4cfe1f6 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb808600d nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xba73bbb8 nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xbabcf36f nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xbd42fb17 nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd2d83d06 nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe643724c nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xebe67aa6 nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf213db8f nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xfd4e742f nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x0639ca04 nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x14552e94 nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x2907de94 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x313099c8 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x35b79339 __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x508c8532 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x7e62db69 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x999b6ecf nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xa7e9975b nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xbf0dae8f nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xca3a1649 nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xe1da3c68 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xee1ef3a1 nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x35b8c820 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbeaa0ea6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x08207c16 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0bc75bb6 nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x1cd1eaa9 nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x3ebd780f nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x59662a1d nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x8b1f166b nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xa594c196 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xc7215a2a nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xcaa0c239 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xcefd9e26 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xe952be11 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0e3c043d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7b8040d6 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0xddb93c97 nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0xfee33ec7 nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0x629b2317 switchtec_class +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x0a5df6c1 get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x266bb705 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x30ccc377 ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x56804afc ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x62b186c1 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xae541953 ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xb3e5f214 ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xb507193e ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xec13f943 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x2a23379a tegra_xusb_padctl_put +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x4a80dd4c tegra_xusb_padctl_usb3_save_context +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x504052c4 tegra_xusb_padctl_hsic_set_idle +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x6c3921df tegra_xusb_padctl_get +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x6f958d0b tegra124_xusb_padctl_soc +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0x860300df tegra_xusb_padctl_get_usb3_companion +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0xc62edd52 tegra_xusb_padctl_usb3_set_lfps_detect +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0xd7b6d055 tegra_phy_xusb_utmi_port_reset +EXPORT_SYMBOL_GPL drivers/phy/tegra/phy-tegra-xusb 0xe8c4ec6b tegra_xusb_padctl_set_vbus_override +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0x415002cb omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0x4275840f omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0x9b63f75f omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x019f1c81 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x5c9bc011 mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x6ce064fe mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0x53b6161d cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0xa1c8554f cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x159620d1 devm_reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x3c1416f6 reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x4474067e devm_reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0xb881d3fa reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x8d2b6fa5 bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xcf00d035 bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xdf89f6ce bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x2de756a7 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x47371451 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xde08448f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x06cd55b7 ptp_qoriq_enable +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x158d587d ptp_qoriq_init +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2eae82b0 ptp_qoriq_isr +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x74f048ac ptp_qoriq_adjfine +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x79c0c36b ptp_qoriq_free +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x7b8a501c ptp_qoriq_settime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x97fd01bf extts_clean_up +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa95c5672 ptp_qoriq_adjtime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xd0fd419a ptp_qoriq_gettime +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3ed099df mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x63a799ff mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9414a059 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb1d8a88a mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe661bec3 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2a87b4dd wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x369863d7 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8a584bb8 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8ac1d8da wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd7b39019 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xee25a93f wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x88970066 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x04f148eb scp_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x249027d0 scp_get +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x89b058b8 scp_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x9c15289f scp_get_device +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xbeb3f106 scp_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xdd7cb3cc scp_put +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xf64c5a53 scp_get_rproc +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x09313652 scp_memcpy_aligned +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x0a2c295b scp_ipi_send +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x0b2e5dd4 scp_ipi_lock +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x38e5ae32 scp_ipi_register +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x63090f63 scp_ipi_unregister +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xb8957f89 scp_ipi_unlock +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x31bfd40e qcom_unregister_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x588b71be qcom_remove_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x666e4dd5 qcom_remove_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x7ad5935b qcom_add_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x8142a32e qcom_add_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x86a84622 qcom_register_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xb365bfd9 qcom_register_dump_segments +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xc17b9f61 qcom_remove_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xcafd1f1b qcom_add_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x251058cc qcom_q6v5_init +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x93cb50d5 qcom_q6v5_wait_for_start +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xd0cafabd qcom_q6v5_unprepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xd6fe5754 qcom_q6v5_request_stop +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xde2be3aa qcom_q6v5_panic +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xee937681 qcom_q6v5_prepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0x24b68aa8 qcom_remove_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0xc16fb9bc qcom_add_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0x527bd9d2 qcom_deregister_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0xe4abfcfe qcom_register_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xa881c6fc qcom_remove_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xe82257b2 qcom_add_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x86903274 mtk_rpmsg_destroy_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0xa573dae4 mtk_rpmsg_create_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xbba03da4 qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0x72dd75d9 qcom_glink_smem_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0x7cbc6516 qcom_glink_smem_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x05b302d4 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x06457b65 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c1fbbcf cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c5d77fc cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1dcbdcdc cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x26acc8f4 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29320337 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32469bb5 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x349e8941 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x397248b4 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f30e85a cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f5e8f2d cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4042980b cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x415d82c0 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48ffeb60 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d60aeaa cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4fe45193 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f0e5286 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75c178cd cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76193a01 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76d3abf5 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x824f3b7d cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8386b9b0 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x87ccfa07 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88c3ee49 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8994797f cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8aa4346d cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93b29c77 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9925ad5f cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9bb94a2a cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ea60394 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa71b16c0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad36c95f cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb53bfd57 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe65df8a cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc485fc4e cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb161162 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd99bf115 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdac05ac1 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb8976e9 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdc72b5e2 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf2b6e78 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea89db6c cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed517198 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf76db0d0 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x182154de fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x19a7b928 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1c020193 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2a1ebefa fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3281853c fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3d230243 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x72791a71 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7576f4ef fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x863df9ec fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9359b014 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x936540b4 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa77ec6a2 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa98673fc fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc3da938f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe819a976 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf73838f8 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x3d45098e fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x65044f70 fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1a32012b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2097dbaa iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2377ea2f iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x3a01c24f iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa4b4e84b iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbf101f68 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xeb55478e iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0xf15aa126 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x05b436ee __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0654e733 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09261c52 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15da0e55 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1853cd8b iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1cd4be7f iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x226e2d71 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24780992 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27d7be3c iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2dd86732 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4392b403 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x498718a8 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54d0148d iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c307b29 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x612f1609 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x639dd17c iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x667b80bc iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7024fbae __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76bf9ae2 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78fc71df iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x914afadf iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93b1f30a iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99ae4b49 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d17f2ac iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d6ae0ee iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ed85a7f iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fc3c13b iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab1bc62c iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab411cb8 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb201480e iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfd9ef27 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1137e1f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd8dcc91 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd0c9cf8 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdf3140f6 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3f29460 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe93ba45f iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe976dd66 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed96ab5a iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xedaa89c5 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1ff3c7b iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf682e8f3 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x03daab1e iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x179e733f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x197fea44 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x21066545 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2ea27f3d iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4281ce89 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5230f1eb iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x695ad083 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x69db70da iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x77d4de24 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7abe1d44 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7aee21f9 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x972043f9 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9aa42773 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcb1d78e7 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd0d5d55c iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdda07f0b iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1011b2fc sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1592bafe sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1d8c0e0b sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x20dd97c2 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24459504 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a952e5b sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x33f9fd69 dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3742b446 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5eedc50b sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6231c0aa sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x679cb8dd sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6a1e6b66 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6c2fa218 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80814bf4 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x90ec582a sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x92904a0a sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa648656c sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xabf7dcee sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb56a9c72 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd790260a sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdc3c4932 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4956e3d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf6e9e51b sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfa83d158 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x02599d28 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17bb136c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x191ccaad __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c3ff7a7 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c445160 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1de4faff iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x25760d7a iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x359194a4 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41dc73a5 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4480bfc7 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ba7ff54 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f91dd92 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55ff89ed iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5c952dad iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d9d2b2c __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6520fec2 __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x700d7612 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70c0199a iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7cd7d6be __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7e13d7ff iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85a2bcc2 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x88c33b0a iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c8bedce iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e344a69 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f716488 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9bfb46e1 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9e429078 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ea8426a iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0c9fc5d iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac5feab6 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb65ffc2d iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe9bb8c2 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc3e2714e iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc67772c9 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc04ec97 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc12a42f iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd85d85c2 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda2039c0 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc8ddce3 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3a74164 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xefe92ffe iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf62e4a87 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf75569c4 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff8978dc iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2fdc72a0 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7ed1a9b4 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x9d17bc0f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe774abb1 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xf318ae90 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0a211775 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4b555a07 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x506cf85d srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x55fe28e1 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x67ff23e2 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x91aac438 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x0ffed48a ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x16e531bb ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1abbb325 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x1cea70d6 ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2af3821c ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x328486ac ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x38698efe ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x47212b70 ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x4fd72e48 ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x511edfa9 ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5ce5f302 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x68194dc4 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x7095ad94 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xa94ef593 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc5a04e5d ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x439eb571 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x87e2fd2f ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa91b2c57 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xc8b6ae31 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xca151c2d ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd73ce2ab ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xebe17933 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x46a06e2c siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x84b4f441 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x9e51b034 siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xd39730b3 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xd7bf0321 siox_master_alloc +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xed7c0953 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x12692efb slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x190e5b21 slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1c2a3ea7 __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x2f6df612 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x32c6fad2 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x58107b76 slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x62eb467f slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x65bb4d4e slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x707564fa slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x77da9200 slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7b84308b slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x808d2677 slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x8204bd94 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x821d2f73 slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x86e8a3c9 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x87bf1d0e slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x952c2f26 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9ca42d1b slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xa253d55b slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb33a0179 slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb51e8156 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xca670ae6 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xdbde1503 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xe9cdfc85 slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf2d27d66 slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xfa2a3912 slimbus_bus +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x2baeeff8 meson_canvas_get +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x494128eb meson_canvas_alloc +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x673c5a86 meson_canvas_config +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0xfbd79150 meson_canvas_free +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x9d2006b0 apr_send_pkt +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0xae199f2c apr_driver_unregister +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0xd3ebbd8d __apr_driver_register +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0xe5f58c3b aprbus +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x06285798 llcc_slice_deactivate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x09afc16e llcc_slice_activate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x14f99b76 llcc_get_slice_id +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x2027e82d llcc_slice_getd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x62ff6e92 llcc_slice_putd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xdffee709 llcc_get_slice_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x1f1a6ac6 qcom_mdt_load_no_init +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x42f47788 qcom_mdt_read_metadata +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x45e1cd7c qcom_mdt_get_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x813711c3 qcom_mdt_load +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x47ba2b59 sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x91017455 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xd0069afa __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0161fa85 spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2d030ba1 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x36b0acbb spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x37f5caf7 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4f9bcc9d spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd087d5fd spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0df9c2d9 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x16c980c7 dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1e298b46 dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x31aa8884 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x603c40c4 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x71ffd85f dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc3c086b1 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe1e77c5e dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfc8c8a5c dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x2fc06e72 spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x7f4ed6e5 spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xff3981be spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x205ae43c spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2063f98f spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x24b3d998 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x31358cce spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5abe464f spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5f1e0f75 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x62a67a71 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6bf18d30 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8bd9e373 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8f0b1731 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xae84e4ef spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd8e68c3f spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd9468a2b spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xda1cbd36 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe5a4638f spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe5b9b3c5 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf6928fff spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf8cec708 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xd1ffbf06 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0724edce comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0b6e916d comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x13494ab3 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1d0f05e8 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f03751a comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x279302be comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2b29f62f comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2cc6afbf comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x491d107e comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b26305c comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e9a022d comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x67d8214f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x68c1032a comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6de136f3 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x843c49c1 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x845b2afd comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x976ae24b comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9f834070 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa0432581 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xadcd65c2 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf534c2c comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb56d335a comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba471791 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc6c6cf2b comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc7ca5137 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc806e6f5 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd404bbfe comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd858562f comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe36e8c57 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe44f46f8 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe890eb3a comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf8e7d2f3 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf93a663b comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfaff5b3e __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfb9f9e06 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfd28790a comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x15f0f81a comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2aa5b750 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2dc90bc1 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x541fc84c comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x72bb07c7 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xa8e52caf comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc9779f95 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xcfef6f34 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x167cc1bd comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x485a78a5 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7711014a comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xacc01e69 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xdc499547 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf8a02e91 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x1189ab3f addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x2219d055 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xc60cacab amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x67df0b27 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2d01b467 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3259456c comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x377f508c comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x50747c24 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x53162539 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x99c06f5d comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9a3f83eb comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9b1fea10 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb016921a comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcc639d18 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd0aa5deb comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe9a12ae1 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfb4e3a77 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0e53aca4 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xc2d23a49 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xf215775b subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xf999afb5 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0e20d196 mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1a1edd53 mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1f2f41c1 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x26bcf7b4 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x51ba2c2e mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5f60134b mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x604656b8 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x81411384 mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9b4f42bb mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xabbae5a8 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb82aadff mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc525c631 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xca0cd935 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xce8ca3dd mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe052fbea mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfc100ab2 mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x71f6284f labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xb3b11d40 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0f6fb38e ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x17a9d056 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2ee9f104 ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x45377258 ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4f06cbb2 ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6ce4a5fd ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7278276c ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7d4c98bc ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x84cb9e9a ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa42ccd5c ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xaa307f05 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xac9229d8 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcfa7632d ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd09ccbf6 ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd9379d5e ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf94b7dc9 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x08bf687c ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1973576f ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5359936e ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x78bd5cb5 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd6c6299b ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xebd12141 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x02313f50 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x389a4b3f comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5bf6e5fe comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa5863ff6 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd4c28bd3 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xebc28ffd comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf72c65ff comedi_close +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x0261f640 anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x0a122ca2 anybuss_recv_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x0cbb3828 anybuss_client_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x10d51aef anybuss_send_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x4d97a5db anybuss_set_power +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x51fc727a anybuss_start_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x6ba43ba8 anybuss_read_output +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x72eccc0f anybuss_read_fbctrl +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x7324f7d7 anybuss_write_input +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x8c4b9751 devm_anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xb684c4d6 anybuss_send_ext +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xdad556fd anybuss_client_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xe80d76b2 anybuss_finish_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfce879ad anybuss_host_common_remove +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x294f58d5 fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x813c8112 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xa4d3cd39 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xc79a4070 fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x0fc01952 gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x26c7d395 gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x2c53c471 gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x5f68a4db gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x710e0739 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x83f6bfe2 gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x8c8042ed gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xa6ea7188 gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xb74becec gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xd380263c gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xf24e5c86 gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xf6251976 gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xfd38a189 gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x2330ea33 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x3e981cde gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x45e6fb21 gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x4d3d4d6d gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x59b24c36 gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x68855a04 gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x75ee29e9 gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xd2607cf2 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xdabbcabe gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xe5b7da98 gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xed2b45bc gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xeed0c619 gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf0a3fdde gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x69afd974 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x7016e56c gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x41c83e23 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xd36bf137 gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x082b6948 gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xeab561ae gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x4d89260f adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x0734eb43 imx_media_find_subdev_by_devname +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x0938165f imx_media_capture_device_register +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x0c3b288e imx_media_ipu_image_to_mbus_fmt +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x0ded5c39 imx_media_capture_device_next_buf +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x0f285b24 imx_media_capture_device_init +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x11367c95 imx_media_pipeline_csi2_channel +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x22846806 imx_media_probe_complete +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x2dea1896 imx_media_try_colorimetry +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x31694799 imx_media_pipeline_subdev +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x3afc4948 imx_media_find_pixel_format +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x3bde9b59 imx_media_free_dma_buf +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x49057c4e imx_media_init_cfg +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x4a715bc0 imx_media_get_pad_fwnode +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x534ba9e1 imx_media_find_mbus_format +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x687718fb imx_media_add_of_subdevs +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x7b3c2125 imx_media_alloc_dma_buf +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x8093c108 imx_media_mbus_fmt_to_pix_fmt +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x8aa9eeed imx_media_find_subdev_by_fwnode +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x91d69412 imx_media_pipeline_video_device +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x955f8e06 imx_media_enum_pixel_formats +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0x9e344618 imx_media_add_video_device +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xa631199b imx_media_grp_id_to_sd_name +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xa9e2459f imx_media_enum_mbus_formats +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xaa6bd246 imx_media_pipeline_pad +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xacba838b imx_media_mbus_fmt_to_ipu_image +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xb4580461 imx_media_dev_init +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xc4cd8bb4 imx_media_dev_notifier_register +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xc8c6886e imx_media_capture_device_remove +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xcc9ae390 imx_media_init_mbus_fmt +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xcca505ec imx_media_capture_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xd23d250d imx_media_of_add_csi +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xf69c3c40 imx_media_capture_device_error +EXPORT_SYMBOL_GPL drivers/staging/media/imx/imx-media-common 0xf86bc3e5 imx_media_pipeline_set_stream +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x0b84dd74 codec_hevc_setup_decode_head +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x115655e9 amvdec_am21c_body_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1cb1e6d9 amvdec_am21c_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x20c18276 amvdec_set_canvases +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x2b47c659 codec_hevc_setup_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x357b2720 amvdec_dst_buf_done +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3b4ea04d amvdec_write_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x454eee04 amvdec_dst_buf_done_offset +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x51f656c4 amvdec_read_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5ff35ee8 amvdec_am21c_head_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x6035fa68 amvdec_remove_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x6398395e amvdec_add_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xa1eea1ae amvdec_read_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xa3d7d32b amvdec_src_change +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xa6dbfef2 amvdec_write_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xad410020 codec_hevc_free_mmu_headers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xad98cc30 codec_hevc_free_fbc_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xb0882c72 codec_hevc_fill_mmu_map +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xd6eb91ee amvdec_clear_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xedd70cdb amvdec_write_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xee4bf68a amvdec_dst_buf_done_idx +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xf67eefc2 amvdec_get_output_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xfc457b19 amvdec_abort +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xfff1bdc8 amvdec_set_par_from_dar +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x9c3d2d72 nvec_register_notifier +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0xa1ed6f5d nvec_msg_free +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0xb9752c71 nvec_unregister_notifier +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1bae5b0b synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1bcac916 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2d3e7fbb spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2e7e21d7 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x345ad135 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x37e31ea1 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x54a48d36 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5d613720 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8181ceec speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x834b3493 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa90c32a5 spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb177838a spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc0817d3a spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xea2d3c4b spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xec87bb27 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf05afe7a spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf75317d7 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf9a68401 spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd78643c synth_current +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x0099b1c4 host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x7c1b02de wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x8a50102d host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x8eb67cfc wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xa2aedeee wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xde2066db chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xf362ab18 chip_wakeup +EXPORT_SYMBOL_GPL drivers/tee/tee 0x004fed63 tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x03a0a745 tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x0d9b29e7 tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2458f012 tee_client_close_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2caede20 tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0x43051118 tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x4febbacc tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x53346f4d tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0x61c679a5 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x67085bba tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x6d89445b tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0x7ced73d0 tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0x850a5dd5 tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa2de7e0c tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa30425a1 tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0xab1db073 tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xc7d09c2c tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcaf979c9 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0xce0a8a9d tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0xdb06fa41 tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xed3c6fa9 tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf550644f tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0xfa80b16a tee_shm_put +EXPORT_SYMBOL_GPL drivers/tee/tee 0xfe55319d tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x06c2aeef tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x21a31526 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x2531326a tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x36521060 tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x3a2362e2 tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x40563583 tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x50e506d0 tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5b0f2c0c tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x64cc57e3 tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x6ceee74b tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8598d300 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x86166e8c tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x87bf95e9 tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x94d292f4 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x98b3c65f tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa94481c7 __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xac2258ff tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xaf1fe161 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb550c639 tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xc48e7e48 tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xc64da6ae tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xd362571d tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe2697cd4 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf91931cb tb_ring_poll +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4305b7ad uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4b45314e __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x62859836 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xda8af1f0 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1b2302f8 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf17d1737 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3c5379aa hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x984d8c8b ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xdf3f5959 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x323c9a8b imx_usbmisc_hsic_set_connect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x3aa6b71a imx_usbmisc_hsic_set_clk +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7f655b0e imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x7f97a93c imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xb7a55af2 imx_usbmisc_charger_detection +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xc9297777 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9067d3a9 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa2dd65a1 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb13c6d9d __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc0f76643 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc1eeb5aa ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xeed8b125 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x392de00c u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x8f164f63 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x914252b0 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x94de1bf2 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xa1475260 g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xd5be6383 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0a819332 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2917a270 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2d111723 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3955ad3a gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x621dd973 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x81cdface gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8433fb24 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x868a0b35 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa9ed0942 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaa93d4e4 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xabc74c57 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc00cec8c gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc4bfe833 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdd411476 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf62cddaa gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x03075b02 gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x77dbf841 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x7eeb76ef gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x90ce677f gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xa18ee0bd gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc9a64872 gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf53717eb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xfe9468f2 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x3df5db03 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xf16829b4 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xf48ac1c9 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0f61bb0b fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1aeb82fc fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2f5a1458 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x34913ce2 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3b08f45b fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x66708cdf fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6b3f7651 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7931959f fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8de3ce28 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x92be2ce3 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9ae03461 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc0652f6a fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd166c6a1 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd736a82e fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe1dd323e fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe75c2a28 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xee56229b fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x171799ad rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3cfb4aab rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x434bef8e rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x44edf329 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x65e9351e rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6f14ac6e rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x84de77dc rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8ee31651 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb2b94ff5 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb8ddc721 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc090ea11 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc6813131 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc46d95b rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd776856f rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfaca7781 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0387b97c usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0d74618b usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d9be7e2 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2129e23e usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2401a83c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x264ee540 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3b517fd9 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3d5adcf8 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x416cda94 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4aa29487 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4edc65e0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4ffde34d usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ff1de25 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7bf774f4 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8ccb6d67 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x910e55f7 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x914d5fba usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x953778d6 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9a8a845a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9f4f8a6e usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa506562 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaba1daab usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xad6ebf61 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb24084d6 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbd62e2bb usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbf68fdac usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc5f6971d usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe32da7d7 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe9248757 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb69cbc5 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf544d4c9 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf565af99 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfc033447 config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x1f3d0736 init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x2b6f2409 udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x2e77f853 gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x439fa244 empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xba03ed63 udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xd6a4753c udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xd8ae4b18 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xea7c4839 udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xeb0cf4ef udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xb54f3423 renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0xdd14fa9e renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x5357eb8e ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xc747fea1 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x085c6152 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5754c3c1 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5e91bc16 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x70b4bcfe usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8011a481 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x894cefe3 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc26560e0 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xcbfdfaec usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xce47e1dc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x508daecd am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x0fa8574f isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x6aa75481 tegra_ehci_phy_restore_start +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xa5c2d1ec tegra_ehci_phy_restore_end +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xe088ce8a tegra_usb_phy_postresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xebabac4a tegra_usb_phy_preresume +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x808d858e usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1beceae3 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2841df88 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x45cfb5e7 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x538114e3 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61e35d6b usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fcd9fc5 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7fce53a4 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x87e1d037 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8ab7e543 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9b8b8307 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9bf8cb6f usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa1075f5a usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9120342 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb52b4f91 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xba6339c9 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc97685c9 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcaee1e11 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcd547cc9 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd4faea41 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xde6ff845 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfbcfd8e2 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x4423f3de dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0xe0ead1d5 dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x5c186fd8 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xf7cef46b tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x00e60c96 typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0beb08ce typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0eeb98ce typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0f797cd3 fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x246a82e1 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2bd1a7a0 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x38c26b10 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x38d32b49 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3bb2120b typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x516d0a95 typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x51d662a7 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x62facd43 fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7374b157 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9bdb3288 typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa173787c typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa1f4c7e1 typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa2e6eb88 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa7d8868d typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xaed38135 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb44f942d typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbc0c5538 typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc3092874 typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc7ac0b3f typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc9dc23f2 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcb9206be typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcc520d2c typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd17aba39 typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xddb7a7d0 typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xdfbde482 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe0b8cd03 typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe68935cd typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xf65c39ea __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x197a8753 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x20e57606 ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x5084751a ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x647ab47c ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x821ae22c ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x8db05597 ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xafc6a776 ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd404dd7c ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xdfaa53e0 ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xf0085865 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2856e436 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5b2d7969 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x659bfde6 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x76e2a55a usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x99296532 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa076761f usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa08eb37b usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa285c795 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa39b81fb usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb01a66ae usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02c29c8 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf1120512 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfc944379 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x3e4bd92a vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x4642a910 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x6962b1e4 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xabd39201 __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xc07e131c __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0xdb4e440b mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x7a63f685 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x8b395bf0 vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x91d5745c __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xe2f400fc vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x036baa29 vfio_iommu_group_get +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x06240fe0 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2ea4b8bc vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x44b83e00 vfio_info_cap_add +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5716794b vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x696cafc3 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8a20ea27 vfio_external_group_match_file +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x90a21d11 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd407477b vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xde3ee9a9 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe596c598 vfio_iommu_group_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x5ae939d7 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xe82519ec vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x05fecabd vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e16b039 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1c98909b vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x31974d09 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x366543fa vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x394ae939 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x42c06acd vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4929b1e5 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4c99de4c vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cafa46f vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x522da3dc vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x526ff963 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x527e499e vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x58495135 vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5fcc8ada vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x629c1cf5 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x645b98fa vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6b558582 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ed37730 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7033edd5 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x71f59614 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7401bb58 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c4c49a8 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e49d882 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9413544c vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa05e1c7f vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0f71b8b vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa330dfe4 vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb151b626 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb39a0605 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb7697b2a vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xba335ad4 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc044e6ca vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc60a9d27 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc79b8eb3 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc8a436aa vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe4a68a12 vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xea5d7bf4 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf03444eb vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x061b970c ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x297760b9 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3e744f3e ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4bd8c825 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5051b3b0 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x61caa038 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbee929f7 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x9e98d57f fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x2ef2ddbf fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xbbffb308 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x167640e0 omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x23769c5f omapdss_of_get_next_port +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5dd01536 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x75b20865 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xab8893d9 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xe0d228a6 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x07799f92 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x28497d53 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x53292ccd w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0x550d3d77 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x699fd786 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x88558566 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa8a01353 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb5101af8 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc4d21a70 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc6730117 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfd868cb1 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x3af7aef7 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x5c77b231 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xd9b1af99 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2d93ca82 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5222b279 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8bcfa979 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8e4cdda0 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96293a0e nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xddb0b397 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf0f480d9 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0228d8ce nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x046199ab nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x060aa936 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x074f6f5a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ae4b857 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b961348 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ecf677b nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x122db7d8 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14b17f85 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16185dc3 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b73f4de nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bef974d nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1eda497d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f671783 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fc0522a nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20fac116 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2346e605 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2456f172 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a3372c9 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2adfdae2 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d57be54 nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x324df5d4 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3446f92f nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x383d5fd2 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b922009 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b9cc1a9 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc0fff1 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f49cb7d nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x437988ad nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43c53b74 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x446f1326 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4576f297 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45841b7f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x460b0076 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4684ed4b nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x483ada99 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48a7f0da nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49605466 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b1a795e nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d35f95e nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d3e980b nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d7767e6 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f699e5c nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5238c82d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52a557b4 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5309b7f9 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x566dab9a nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57a7537a nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5acc0ba6 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cb006c9 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e69c6d6 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f12f4e2 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x620a8984 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62c0f751 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62cb18d6 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x62daa24c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63e14e3c __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64d48d84 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x688cabe8 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a84aef7 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b910d15 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cc1ab42 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7216386a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x730523b9 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7475c7f1 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x753675ca nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78a45700 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b99082c nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d8f57cf nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ebf4ace __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80380197 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82d851b7 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8bbf598a nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d8a18f1 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90d6600f nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92c8ba6d nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93769962 nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96267579 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97ec544d nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98564bbd nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x996816fb nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99ecb53a nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9abd0a3c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9acdc914 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bd64b74 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3bc7ae1 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa650fcdf nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa81cef36 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa82d3bd3 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9c19b59 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaae21648 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xace65da2 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadf99087 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf53c00f nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb692c69f nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6f66c77 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb71f4228 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8212b8a nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf135a5e nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6f3d376 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7951e0f nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7a00fc3 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc9b19ee nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd3223d4 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd180a223 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2c2d538 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd742e37f nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb4fa93d nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc19fe64 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc6263cf nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcbf1eeb nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcf11668 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde69a8a1 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdeb06341 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdec79feb nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe03dd138 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1ef636a nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe38337df nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4275d30 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6113d99 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe624243c nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea767c0e nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefe15d71 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0f1016e nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf18f26eb nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1bbe171 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4105077 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf69940b3 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7537616 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfab866c4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffe45429 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x2565aba7 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06860ff9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1194c500 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1249f606 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15314eed nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ab82793 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d1f7f46 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24d15569 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25f1ef5a nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b03ec0b __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b5063da pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2fd51dd8 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30ccee0b pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33cf183a pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36751a61 __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37e272b4 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3945d2f2 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x395a188f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c0a75c5 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e73f10c __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48be8074 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5205f7ed __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x520c1b5f pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52b16553 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52b9ca14 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5507db9d pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x577d7254 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5851e465 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e9533e5 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x611f898a pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65dcbd9c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6909668a pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b554176 pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6deea91d nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e16b52a __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7acb6a41 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c75cbef nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x852a82de pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8720b402 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x87efa7e0 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ea0ba22 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x960c822f nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9675aee1 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9bd74af1 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c02b6e1 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d162943 __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa29a6e84 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa7f03093 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae6d734d pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb106efed nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb385a1da nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4895436 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5ca3201 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb85de48c __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc39d4a4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe4d984a pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc151e45f __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7c93e93 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc93363b1 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc95e0eef nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc98e2610 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9f4c04f pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcac9675a __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdd4abec nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd07e1913 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2075868 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc65abdb nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd3dfcee nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde5fb5fe __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1eca9bd __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe4b6aefb nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5a7264c __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe9a43629 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb4c8d89 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef619785 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf071b2b8 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf077d746 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf473559d pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8ec66d6 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb0cc451 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfccf1b40 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe0e739f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0fbfc1d0 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x953ef589 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9a1bcdd2 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x18d873bf nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa6c9f1b5 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x364f639b o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5244ac8e o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x59f31645 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd1a25fac o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xecaee966 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf2638310 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf40f926b o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf6615c60 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x231eaf94 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x51dffab6 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5d556d49 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe73a519b dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe7785561 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf238112d dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x14644275 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x201acce5 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x59ce41ff ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8bc5d07b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb542cba5 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xf31bbdd5 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x74d120f1 register_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0xd49ab95f unregister_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x87bb682f _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xcaed6e2a _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe1f9ecc3 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0x955ee96c crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x39e8fa4b poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4370baea poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4a833012 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x1337b2f2 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x3265cc55 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x0a8c9a09 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xdde5485a lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x0d25daa5 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x566a0312 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x65b8900d garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xcd0720bc garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xdcdb14f2 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xefe6f16b garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x0b9f20b7 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x3906bcd8 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x8891e0eb mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xb7c3e6de mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xcdfc5b5e mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xd7ba121c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x2f8ebe68 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xb1396893 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x56945adb p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7a157a4c p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x6d6ae639 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1d4ba76c bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x225550c3 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x33f3246c l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x48ddd6d3 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x53d35d97 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5b864db0 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x832c7167 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x851b68ea l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcfee05f6 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0x8de3a415 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x12cb72a7 br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0x28385597 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0x286f11d7 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4d3b5aba br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4f79b466 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x59070c41 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5cae844c br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5f3ea5d5 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8f286707 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8f96939d br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa5a94e56 br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb0aeb13b br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbd66afde br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbfc6df1d br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc53e6f7a br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd56bc561 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdce3321d br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf325da69 nf_br_ops +EXPORT_SYMBOL_GPL net/core/failover 0xb8d0b760 failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xbae7e900 failover_register +EXPORT_SYMBOL_GPL net/core/failover 0xef8ca146 failover_slave_unregister +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06fd5219 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0938791c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0de0b212 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x107ffeeb dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1fcfd738 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x249ed61e dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d03e6af dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ff1d5af dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x435e102f dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x46de797b dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4df28368 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e90539f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x609ca79a dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76ca19cb dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7768a968 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x78162aba dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e0c0dca dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8156d188 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86c215df inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa43e19f0 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb241e990 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd209b8f dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b838c3 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6662365 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc7a6453d dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd5392d45 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe1ecad28 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe35567bc dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe58ce0f2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0784aa7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf55ef99b dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5f51e22 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfbad289c dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfeda6e99 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1af1af91 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x33128dcf dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x42e68579 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x439d31f5 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8a1f23b3 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe48ea6d2 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0baa4a57 dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x13c8fe1d dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x190e1b80 dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2caeae62 dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3cc261cd dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x40bc58c4 call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x573eb735 dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5b96d21e dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x647b5a88 dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x6b646937 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x78cc6adf dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7c110e54 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7d2f1831 dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x829dbe66 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x8596950d dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x99b84e96 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc63e0828 dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe7c0088e dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe94a87d7 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf2fc20eb dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf496ebd9 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf76f15a0 dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xff6b5cc5 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x004ee6ec dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x2bf9386e dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x49dfdd05 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xc4d39b5d dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xcdde55df dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xcf4904d5 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xd79cce7f dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3c85426a ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x84d879d9 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xec7e1bd4 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfc3c539f ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ife/ife 0x00e39a04 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x85e5096a ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x7430862b esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xb4d37345 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xe7c472d4 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0cb925b2 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x7c647a00 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x11102800 inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x12242d9c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2251ca88 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x78fe86a5 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x92559bae inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x93acf7a2 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa7cc0f02 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd897fbf2 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xebea8f28 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x695b2266 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x11aebf53 __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x20814383 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x42914ae8 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x523ccfe9 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x546711da ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x61f41ab9 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x647a8e25 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7169eeb0 ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa9b28b81 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb7ac037b ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc42c0b11 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xca869c87 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd9cb7084 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdc838f09 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe7343bd1 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xead6376c ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeec47805 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xd9d0f51a arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x2810e353 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xc6992c3f nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x79411463 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4da50b54 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x580f3e7b nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5c8fa08f nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc36b1a7b nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc9ba1578 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0xcfbf2f24 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xb4f56415 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xb9a8d850 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xcb7dc565 nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x9a75a4f8 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xa2835e67 nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x098e47d4 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x4967a6a2 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x88f82a12 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb1da0939 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf46a569f tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x01739a43 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0930d9f3 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x16214b04 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x1bb30546 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x68a5c4ce udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7fdf7638 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x84881fb5 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8527dcf1 udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x1ec28b43 esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x3aa5edad esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xccdbb30c esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x25b4c990 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x51d2a117 ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd364a56d ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x6a4ef071 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x74532586 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x6ede5d64 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x8dcfe8cd nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xf88d3d5c nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x0619dd69 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3aba088d nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3d21bb39 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x53296ac0 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x850284fb nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe4639ed8 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x48d88e4d nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x1a6e9b6b nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x9d22f62f nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xaec7f046 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x0d2903c8 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x66e69168 nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2cf66081 l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2e4ebef9 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3698c539 l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3e2b3ab9 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x47baedbd l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x614b9315 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6fc25bb1 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x81773d30 l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9b5e931d l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa2559ee5 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb32df68f l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb5b88e1e l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcddd4e8f l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe347db89 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe9a83e5d l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf074b594 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf61a8a80 l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x3a7e5410 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0296a9e7 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x08aede1b ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x29170a8b ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x360acf6d ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3ad50107 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5e960384 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x62cb9a6b ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x64ac6219 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6ada595d ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x78f2a796 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x820a0539 ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x844a0e05 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9fc220c5 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb833cb34 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe8101923 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed2be585 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf438be12 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfc80f6f8 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x22274886 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x43fec26c mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7c5ee52e nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x842a2149 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe7d9a73b mpls_dev_mtu +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0e5738a5 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1c219326 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x35578fb6 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3676478b ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x445bec5b ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x46916a14 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x648cdf11 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x659d955d ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6a1ad586 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x706be811 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x716d9d2a ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7dca3839 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x858af8cb ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x98a34e27 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa1035609 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xabcdd7f5 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xba591904 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd73634d6 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfc17a2b1 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5dfbd792 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x65cc5f62 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xca8e8ceb unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd4c80e63 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x259ac289 nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x268a4802 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6a9da60f nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xbe03a217 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xc6910961 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xc790017b nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xc99d68ed nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02e67668 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07ef4ed1 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a6f0090 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0be26168 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0da8ad30 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1026b613 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13fd97b2 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x141d58e6 nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15156ad5 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16abd596 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17db5ff4 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18cee92b nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19b0766e nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a6cdea3 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2281c1d6 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x251cfd65 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3384e9e1 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33ae0782 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3405c7c4 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3460a820 nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35509436 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af5166d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40e81847 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42c0faf8 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x436bae92 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43dce306 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x473e385d nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a53e6c2 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ea258d2 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52e0f21d nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54ddacb5 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fc16585 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64aeae95 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x660958bc nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6862baf8 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e5d2ccf __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70fca725 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x744aff00 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b5ea5a8 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ed3e8ca nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80466f15 nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80f4d492 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83c9de80 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84c27166 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x897e8553 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a0547f5 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c6e11f4 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94819b13 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94870fcd nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x951236fa nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97301db8 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c19d612 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c59a8c4 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa232657c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2468a84 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa309d1d4 nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3671d18 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa63c6a37 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf224dfe nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1f0b395 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5cabd17 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9e363e4 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc0e5fc9 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbda85071 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc21d07af nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc31e7f66 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4ebd34a nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5d52b66 nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7cfd1b7 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc89ecfb nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd25b93da nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd29cb65a nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd39bcded __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6374549 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9f79ddb nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc0c3826 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd10c7bd nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xddb538e3 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2a10f53 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe916de27 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf449f596 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4aafed7 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5452913 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff6011c7 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x4841dbbf nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xfa3f88b6 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xb81c5935 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0089eeb4 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1c1ee508 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2bf0c075 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x46171ea7 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x56a98f4d set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6f559c64 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72ecab62 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa43ad085 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xba965d6a nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe84a781e set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xff5052d2 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8a0c31ec nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xaec7f463 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc322ef37 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd509bd71 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2827221e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2c03303b ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8eee167a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa7b002f9 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc25b41c1 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd18a9f9a ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd501f440 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x6202e9ec nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbabfbbb3 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x39c179a2 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x927a51cd nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xd755355d nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x039440ff nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0bcfb4c2 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x15654916 flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x2a2c3267 flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x49bc2b80 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x57fb0661 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6078db07 flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7abe4540 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9e0b99a3 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xa23f823f nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xab9f71c6 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xc6b9ab23 flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xceec2c64 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xda43365b nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe56863ce nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe6c538fa nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf233be15 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x096c4750 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x219ea383 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9168607e nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb6ad8c85 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xefc420f6 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xfbc4fee9 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0afd6bdf nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1e26d0ed nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x20a2be1d nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x23b3f6c3 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x35cc3feb nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x399bf03f nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4c577317 nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6486e988 nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x65ab8e3d nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6d376dd8 nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8510f59a nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8a973acd nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa95a3353 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb27d2b9c nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdf4fdad6 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe00bd60b nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1154ffea synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x50bd1484 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x54481303 synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5ad5e31b nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6f02623c synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8e0e9c3e synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa5400dc9 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xaf28fa56 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xe0ff051b ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xe4e29766 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xf0df0806 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x08a02a62 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c1a1531 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c2ee0f8 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x32dffa91 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x342ab309 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36a48dca nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3bd3d093 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3f193eb9 nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3fa1b982 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x59d2ccc0 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x62be6971 nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x73f74eec nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x743d2d3c __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7732995e nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77c15342 nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x788ed7b3 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x79391c02 nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x86a519ee nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8aa03113 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8b0bb55c nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x92998b6b nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b9ec483 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa9a9ab4d nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa9ffc821 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaaf01941 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb27fa301 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb2a4d193 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb717f40f nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb9954580 nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe12a36c nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc52c6245 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc9f03599 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc9fc238d nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe037ee37 nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf4838028 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xffa888e5 nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x36477225 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9531ab20 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc943f0f6 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe8c2cb43 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf339c59e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf6f756a2 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0c7c67b6 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xcbe8a842 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xf1257242 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x280fb254 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xe40e7fc7 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x2f33eed4 nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x5f76dd7d nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x921c8a95 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xf5307da1 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xb83d46b4 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xef263ad7 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xfa8f3bb3 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0cb5f889 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x11eda9ee xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2d6d42ca xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x31bfd567 xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f1ef70a xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x571c3a69 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x745dac3e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x92077f72 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x94c51062 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b5e9a42 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa3d0b70a xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa77ee7ba xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb38b615e xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3402517 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf21808a3 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf6a88081 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x9c72bcfd xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf0924c11 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7d9570ad nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x8f251789 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xb45b1aeb nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7065fe61 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7eb6cce8 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xeb7c38d2 nci_uart_register +EXPORT_SYMBOL_GPL net/nsh/nsh 0x3ad93730 nsh_push +EXPORT_SYMBOL_GPL net/nsh/nsh 0xa332b8a3 nsh_pop +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1aeb4fe8 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x20382837 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x55455b4a ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x96fbe877 ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb2cafa78 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf68691d7 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/psample/psample 0x92702a19 psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0xad4cb98f psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0xb9595ae2 psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0xd345f86b psample_group_put +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x2af27198 qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x674a58c5 qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xd20d35a5 qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x01baa6dc rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0f6cd423 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x1d3ecf6a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x22e10134 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x238bb5f9 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x28b17c04 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x29ad51ca rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2f94e001 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x30d123e7 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x31487015 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x41e0f897 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x45fc50d0 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x47d8a68d rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x4ba92649 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x59ed9c28 rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x5e986a51 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x69496fd5 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x89fd5398 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x8b80e094 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x8c01749f rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x96279d75 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xb2ca1131 rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0xb5b36cb2 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xc27e117f rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc4113ed1 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc43f6b88 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xca222854 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0xcf36e497 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0xe6a51192 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xf4c257e8 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xfd8b36ae rds_send_path_reset +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x44ef9fcf pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xe97e73c1 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x7db7d103 taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xd765a904 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x37f5b402 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0x3a6c43b1 sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0x4ce3c2cc sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/sctp/sctp 0x51fcea2c sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/smc/smc 0x42f9d501 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x7f6af896 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0x91e2e055 smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x95333cf8 smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0x99ed36e6 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xafacf044 smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xb07f1605 smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xd404d25d smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0xe0fa5309 smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0xe8a6a2a5 smc_hash_sk +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6e73d9cc svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7df2f118 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa646cab3 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xad825ba9 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00651a7d csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x008ab44d rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00c8f8ba xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02216bb3 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02f7605e __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03831d66 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03f29ea9 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0435e861 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0622e985 rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0683193c xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x078c8580 xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09c5822a rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a880ef5 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b84fea0 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b88bf3f rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b92582f rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c28008b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c29dd43 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e0fbdf3 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e51bf35 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10e095af sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10fb8666 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16d6edc8 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1807e7d1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b037b56 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1db782db rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f751a7f xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x200936dd rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23140ada rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2472c226 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2546d1d9 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25cf2c9b xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x263af1e5 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26eccc10 rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x272ef940 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27593124 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x275c68f3 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2785839d xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x295f4064 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x297a0ecd sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a289306 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a678090 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aa3500f rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b289354 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bd23362 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c230ce7 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30cfbaf3 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31606ede svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x330c9c53 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x330d2485 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x338e66d7 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x345ef550 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x346c20cd rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x355524d8 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37a484ff rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x383a63d3 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3840457b rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387013b8 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x392dd48c svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x394f185a svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a90bb78 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c99baca rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cdf3260 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d5d4210 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43271c65 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46b83b7e rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46c70539 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47d6e649 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x492ab667 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49f7da6a rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a284168 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ff569aa cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50615c75 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51883550 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51c3aa40 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51ce108c svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51e0ce02 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52184e54 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x559c9a57 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5624be8a xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56869692 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x572260e3 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x591fef22 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59419597 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ba65a6d put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c33c9e2 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f7b62ff svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6081c598 xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6101979b rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x621174c1 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x641c472b rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6572acf8 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65e95391 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x666dbd25 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66bc48e2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x676d4b3c xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68bed5f3 cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69615bb1 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a45627a rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6acb8820 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c66c879 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e678f7b gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72979510 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72c6af7b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72f7532f svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73d84a5f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74c88137 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7501be56 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x753e83db xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7592bd02 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b867949 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d16491a rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e29909d svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e8a10d4 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x803d95e2 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82ab01d3 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82e0c33c sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88114b0c xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88c4d060 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88e7c0e1 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88ee08c8 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89871ce1 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8be166df rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c1d7fea rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ccb96ec xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d3dc1fa svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90b6989b rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9224516d rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92fe3a75 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95c6128c rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97cac7d5 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98796ee0 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99cd9e0e svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a6c203a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ad244bf rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ceec908 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d7d1f01 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dcd2974 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e06c78b svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e2c0724 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e6faa7a rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f6c2dc7 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa07f4258 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0c3e015 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3c6fcec svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5384d8f auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6c70680 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6da3ac5 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7ea73f5 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8fb3154 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9ae4390 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac627757 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacfba1fd xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad047aed xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad9098e6 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaedb3f57 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf183545 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf230f58 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafa5d96d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaff21cc1 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3672a3d bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4219116 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb47ed91b cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb838385a rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9c59d41 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbedec52 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc1e38fd xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd92af27 svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf639544 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfa58e8a rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc052d0b6 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc169d947 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18dc904 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc21f7520 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3b1c95c svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc40b3840 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5acc432 rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5ec2510 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc699c00f svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc75fb8e2 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7bcfc8c rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc53ed51 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd6975e2 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcea87768 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceb91915 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf199d2b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd04bdf26 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0c66081 svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0fefbfd svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1720dbc sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd181f57a xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1a3b5e7 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1bb8a0c rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5fea3b4 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd605da68 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd89dd13d rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd981bea3 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda355a61 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc1eb0a3 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcbd1be0 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdef927cb xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf58f447 xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfa368d7 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc94eab svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe04d4ff7 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2ad26e6 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5b0dc86 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe67dd6d8 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe95c348f rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb1935a8 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeca19218 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedfc96a4 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee032da6 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef1923a8 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2c38d89 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf445e39a svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf461f3ce rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8b5fff9 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d8e9f9 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa3a43e5 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfac28608 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbf091e9 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc2f400a sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcb75aa3 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcc67c38 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe4aac30 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa1b212 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffd1d7a3 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/tls/tls 0x3e007202 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/tls/tls 0x4413a5b4 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x6f83d14d tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x85203cee tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x06937078 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x105e9485 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x16465157 virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x175fcc7a virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x22297129 virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x37efe621 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x3a7301f7 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x40dcc932 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x48aacde1 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4c794958 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4e9ccf2d virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x571fd4c8 virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x68bd61f3 virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6f242ef3 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8341971f virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x90f842b1 virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x96b3994b virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9dfe3184 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa668e1ab virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa8b4230c virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa9136574 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xad7e35f3 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xadacbeca virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xc77ab71b virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcaea7e3d virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdde31bc8 virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xded5c792 virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe0673b25 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe99accd5 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf7ff86dc virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfbb375bc virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x01e71939 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x02da033e vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x068553e1 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x150b06b1 vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2233efc7 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x36dd5d78 vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3ec04ba4 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x44420515 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x48de6868 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4eb2db55 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5cda45d3 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x618cbdc5 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x621e2a30 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x758526d7 vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x80eddb45 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa8683e78 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xad085ccd vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb9465f7a vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd8add67 vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xef20ae37 vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfba2b85a vsock_stream_has_space +EXPORT_SYMBOL_GPL net/wimax/wimax 0x14a45f5e wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5d6b6933 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79a193f0 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7b485ba4 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x89cdcab8 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x94b39d7d wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x95f2060a wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x99852325 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbd5ab826 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcb4a330e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd98e11d8 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe30c5715 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe4e33ab7 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03cb3899 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x16c5bb80 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x22dfdeb7 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3021b458 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3d9c85f9 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4c1b10e2 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5ba130ea cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x74f5ffd8 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7b14d40e cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a103588 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9744cca4 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x99afd835 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc2927a25 cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcdf547d6 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf00eeb5 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf96c5828 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x29e36de6 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x38c02f00 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9cbb0411 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa3d3e762 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x176448e6 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x415bd159 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x029f0419 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x29636d40 amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x34bead05 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x56bc668b amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x636c554f amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x79aecc31 amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x7c0606a1 amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x989c19cb amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x9aa7733a amdtp_domain_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xcf0b4be4 amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe1e6862c amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe6446fbc amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf2f7d15b amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0030838f snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05636f93 snd_hdac_aligned_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x096bd641 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d1d6f54 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d54b6ef snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x12389fb9 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1414643c snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1433b641 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1488641f snd_hdac_aligned_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x18a6b48b snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x194006f2 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f1e53ff snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f1f9dc6 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a24930b snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a5d2599 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b02ac18 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b4c1867 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x302bbc36 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33bd3635 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3741f582 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e0d5bb2 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e827c1a snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3eb0f9ab snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40cfac72 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44204d8c snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4627c5ac snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x479c66ab snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49430b1b snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4f74ef78 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x567e04b8 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5aa92a12 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5fd65421 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6042c368 snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x646c0797 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64715a71 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6674fbcd snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67fc2a09 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x688fb927 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6ade9744 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x738aaac7 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73dc425e snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x748f0c25 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b2025bb snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x852e3bf3 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85e14dde snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x893afcaa snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a22c125 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ff9940e snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92b5edb4 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x942c3654 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94f36d7a snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa61e9fc5 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa62ccb20 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7c43d87 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabd40468 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7e7c798 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbbad23c6 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc7227897 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc87eece0 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc7cea62 snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd49ec290 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd4b0467d snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5150b61 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd792de9a snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd9ec18bd snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdafa019e snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb5dd2c1 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdbb33860 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdcfda99a snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd58953e snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf429443 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4cee5bf snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe529533f snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8ba9122 snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe9a4e0ab snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeabc50ee snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf325c64b snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4cf2cda snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf58c6812 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa86624b snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfccebc19 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfddae314 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0xa6897d25 snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x05aac7a6 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2c7f70df snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa4e83ecb snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa66aacac snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xde9e829f snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xee4e6944 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0235925e snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02edc40c snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0747e8f6 snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x09e58e33 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a18e6e7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b289c69 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ccd24ed snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0eb1cc23 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x117c353f snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15d7c397 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x178a5a8a __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a1de104 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1baadc79 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x231cd5b9 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24168265 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24561b54 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25f189ac azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x278a4e8f snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c8e1faa snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cd74787 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e66b2cb snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f93a600 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35d30ac2 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36446b2d snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x372ee151 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375faa60 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ff5c74 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39b15927 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a2b3c95 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bd987a8 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3be56edf snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eb3a369 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4063e431 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41b1447f snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x41b2c928 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e98e1a2 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5308d841 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53b4307d snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x588fc0c3 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a538cc3 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a9065a6 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b56aa1e snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c208d81 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cfd1535 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e50f8f8 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6082fdde snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63d2d8d0 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63e9e843 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x640d383a snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66d1174b snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67726080 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68ec4a58 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d3622e6 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x701fd801 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x734a795f snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7592ca11 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x759d59d1 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76391333 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78294119 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79cba292 snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ac5a809 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b23e038 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c930adb snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ee68257 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fd3bfd5 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x821ce149 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82a521fd snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x854dd1a5 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x86647d12 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e5811de azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8eb2bfa9 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92422e49 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x938e7f93 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x940bb592 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x958ff681 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97f6edca snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9968805d snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cc6bca3 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d16f608 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d596c31 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d7718e2 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0fbe9be hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7281630 snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa785acfe snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaaef75ad snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabd027ea snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3b3ef1a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb470cbc2 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6422690 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb862b9fc snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb89867aa snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb996c6f6 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf75e684 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbff9b124 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0a5f1ab snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc295685f snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3c13d71 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6218ab8 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc89d29bd snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcda8540e snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce43d1b1 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce89690d snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf886cd3 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfda9b1e snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0fed896 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2e770ce azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd38c520a snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5bd0ddc snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8aa135a snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda35960e snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb06b019 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe196625f snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe199d292 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4810d9a __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe826bde6 snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8b9457d snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8ebb2b0 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab5dca4 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0cc0fe5 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6e41088 snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe0a1f4c snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x089ed4cc snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1af9a6ac snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1cba00f1 snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x333094ac snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x49b3523f snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x53391bc8 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5f07bdfc snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x68e72e7e snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x74d30a9e snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76e2c8ca snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x85a6bb48 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8809bbb1 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8d8fdbf0 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x98f1be03 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9b3b1c07 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbcb5cfe5 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd4af30b4 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd53651f6 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe547dab3 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe7473ea8 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf817a2f9 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfb572065 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x2200df6a adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0xda31578e adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x0120986f adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x02030215 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x1965f107 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x1d21000e adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x4938e30f adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x90cdc4fa adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x953b4da0 adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xe9735808 adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xf463310e adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xf89a1c7a adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x8101e0ce adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x027758c1 arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x04a564ec arizona_hp_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x0f024587 arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x142b9476 arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x153f1501 arizona_init_spk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1ec252b2 arizona_isrc_fsl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1fd80bf0 arizona_anc_ng_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x232094dc arizona_init_gpio +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x26d79523 arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x2773d191 arizona_of_get_audio_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x339f425c arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x36978d68 arizona_set_output_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x3a8d647b arizona_dvfs_up +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x409bf161 arizona_init_vol_limit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x46277216 arizona_rate_val +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4700f4e3 arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4b2494f9 arizona_clk_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4e7f5f84 arizona_input_analog +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x504f7766 arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x65669f60 arizona_dvfs_sysclk_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x69102a20 arizona_sample_rate_text +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x725ae5e4 arizona_init_mono +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x729a5ef3 arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x75fcf5b6 arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7d357710 arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7f26f273 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7fb07e37 arizona_init_dvfs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7fcb929a arizona_sample_rate_val_to_name +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x80cb173c arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x855310a4 arizona_isrc_fsh +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x85bd4ec7 arizona_ng_hold +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8708aa3e arizona_lhpf_coeff_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8b8759c6 arizona_set_fll_refclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8ce0154e arizona_in_hpf_cut_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8dfda793 arizona_asrc_rate1 +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8ffe6386 arizona_free_spk_irqs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x934316e0 arizona_eq_coeff_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x9485f5b1 arizona_init_spk_irqs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x95e849e8 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x9dc40e63 arizona_output_anc_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xa4a28103 arizona_anc_input_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xa66ae11f arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xab3cd77f arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xab4d845c arizona_rate_text +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xbfdda74a arizona_adsp2_rate_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc0dbb8fc arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc53b32e0 arizona_dvfs_down +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xca0b26bb arizona_simple_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdce6e596 arizona_in_dmic_osr +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdfe804b8 arizona_sample_rate_val +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf14e6998 arizona_anc_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf6444056 arizona_voice_trigger_switch +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xfee6f4b8 arizona_init_common +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xff9dccfc arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xafaf1ef4 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xc1113019 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x12cf10b6 cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x4a5c9f5d cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xbd3d717d cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xbe3171b9 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe65fd14e cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x899b3d98 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xc08bec41 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xf3cddc36 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x458abcca da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x49963810 da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x74b88127 da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x87ecb5af es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x9eb16f47 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0x4eeeef72 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x39331680 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x3626ae67 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0xdef47f72 nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x63f88876 pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x79a439b9 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x89149c47 pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x3253dae1 pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x6448245e pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x2670f7b7 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x373f4d4f pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x0eb19217 pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x305f62b9 pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x4489e4a9 pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xcee1a5a8 pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x57d05237 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x6a18e23e pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x9438bf75 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd62653f1 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x554467a3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xbb4583f6 rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xb42578b7 rt5640_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xf3d7cf76 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x9b3470ca rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xaa919456 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0x30f836bf rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0xabe9f3c4 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x425a794d rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xa8c77592 rt5677_spi_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xc6695825 rt5677_spi_hotword_detected +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0xf17750f8 rt5677_spi_write_firmware +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x074d3f19 rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x08414742 rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x2082ea17 rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x3a7ec035 rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x5b131caa rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x61529636 rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x787104a6 rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x91079df2 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb7a511a3 rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xcbb55114 rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xdbefdb52 rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xe3439d43 rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x0e42987f sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x11a7690c sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1c6cfcc0 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x80cb41ed sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xe101ba40 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xebc2507f devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0x50ac6566 devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xe1ab63b1 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xf17c146e ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x33be1e53 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x378a9190 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x205fd11b twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2a3b5c44 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4686887a twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xc1bbcbad twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd2a0e78e twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x0022f2a2 wm_adsp_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x0246db6c wm_adsp2_set_dspclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x02e25a4a wm_adsp_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x0c5c2a90 wm_adsp_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x113ee4c7 wm_adsp_read_ctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x1d026603 wm_adsp_compr_handle_irq +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x1eccec21 wm_adsp2_preloader_get +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x2557aea0 wm_adsp1_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x2e81386f wm_adsp2_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x36d617ef wm_adsp2_component_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x3980fbbb wm_adsp_compr_get_caps +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x40a443b7 wm_adsp_early_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x460dbf06 wm_adsp_fw_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x50126eab wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x52c16479 wm_halo_wdt_expire +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x6afee48d wm_halo_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x7288ec06 wm_adsp_write_ctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x842907ea wm_adsp_compr_copy +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x9e88cc3f wm_adsp_fw_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xa75a90d4 wm_adsp_fw_get +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xaed0cb34 wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xb93e6dec wm_adsp2_component_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xdd3c79ef wm_adsp2_bus_error +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xea38ee07 wm_halo_bus_error +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xef6826b3 wm_adsp_compr_open +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xeff6e5d2 wm_adsp_compr_free +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xfdf213a8 wm_adsp_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xff9bc3f3 wm_adsp2_preloader_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x1b8f39c0 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x4c2001fe wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x54b5ec95 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x75fc6215 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9dbd182c wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa7226f4c wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc4dfd822 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xd1d6c952 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x482cd136 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x5f3b761d wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x85048c61 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xdeb65e7b wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x1f0ff16a wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x4bc6e522 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x4bf4a6fe wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb676b595 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x9cdf2b20 fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0xa595fc51 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x126cad8e asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x13c0d9ad asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x2b294814 asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x2f106d8c asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x380ca2db asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x52e848f0 asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x59363bd6 asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6115c957 asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6c84cab7 asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x83e8cdcb asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x850ec90e asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x92501191 asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xa00cc369 asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xa2626f98 asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xcf459ee1 asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd14909fb asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd3263cdd asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe5523ef0 asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x145f728d mtk_afe_pcm_new +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x14abe7d0 mtk_memif_set_disable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x1f12db7e mtk_afe_pcm_platform +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x25401874 mtk_memif_set_rate +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x323ce595 mtk_afe_fe_startup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x3a541b3d mtk_memif_set_format +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x50135338 mtk_afe_fe_ops +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x72457ab0 mtk_afe_combine_sub_dai +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x73875ca4 mtk_memif_set_addr +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x7a141fd9 mtk_dynamic_irq_release +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x85c211fa mtk_afe_fe_trigger +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x86c42edc mtk_afe_fe_hw_free +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x8f19a0cd mtk_afe_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x90aed4f0 mtk_memif_set_pbuf_size +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x9168274d mtk_afe_add_sub_dai_control +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x941d08f9 mtk_afe_suspend +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x97531df2 mtk_memif_set_channel +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xa3a5b872 mtk_afe_fe_hw_params +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xb7080418 mtk_memif_set_enable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xcf0a739e mtk_afe_resume +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xd354b90d mtk_afe_fe_shutdown +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xde014420 mtk_dynamic_irq_acquire +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xf5f6c2db mtk_memif_set_rate_substream +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xf92eaf2e mtk_afe_fe_prepare +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x185f17ca axg_fifo_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x29fc6c05 axg_fifo_pcm_trigger +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x3d42d7a3 axg_fifo_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x70992e10 axg_fifo_pcm_hw_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x7f323b5a axg_fifo_pcm_new +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x862f5f35 axg_fifo_pcm_open +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x980e2953 axg_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x9b9c4071 axg_fifo_pcm_close +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xcfa842c1 g12a_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x2db27767 axg_tdm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x63169364 axg_tdm_formatter_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x679cd72f axg_tdm_stream_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x74cef4bf axg_tdm_formatter_event +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x9734c838 axg_tdm_stream_start +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xb711a93e axg_tdm_stream_alloc +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xeaf1cae4 axg_tdm_formatter_set_channel_masks +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-interface 0x0218b62b axg_tdm_set_tdm_slots +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x015820f9 meson_card_reallocate_links +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x0e72a373 meson_card_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x530acb8e meson_card_set_be_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x5b8ae223 meson_card_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x78de0d28 meson_card_i2s_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x98692967 meson_card_set_fe_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x99c538cf meson_card_parse_dai +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xb9fea068 meson_card_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x3f0daa34 meson_codec_glue_input_get_data +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x458b51c6 meson_codec_glue_input_set_fmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x47e25c50 meson_codec_glue_input_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x5206ed88 meson_codec_glue_output_startup +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xb95c14c8 meson_codec_glue_input_dai_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xd54ecb1c meson_codec_glue_input_dai_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x28421460 q6adm_get_copp_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x31888be3 q6adm_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x5262ce99 q6adm_close +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0xf11e0361 q6adm_matrix_map +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x369b6eeb q6afe_port_put +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3997e13a q6afe_is_rx_port +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3b16d6e7 q6afe_port_stop +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x498d993b q6afe_get_port_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x5332304f q6afe_slim_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x7df60063 q6afe_port_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xae809786 q6afe_hdmi_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xbe87a4be q6afe_port_get_from_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xd4523c59 q6afe_i2s_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xe45246a8 q6afe_port_start +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xfaf22370 q6afe_tdm_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x01d71b3d q6asm_stream_media_format_block_wma_v9 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x151ae9d4 q6asm_cmd +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x1bad7526 q6asm_audio_client_alloc +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x40299233 q6asm_run +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x5382edf1 q6asm_open_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x56418ca6 q6asm_map_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x689e402d q6asm_stream_media_format_block_alac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x68db31e2 q6asm_unmap_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x6eb89e95 q6asm_media_format_block_multi_ch_pcm +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x720ce413 q6asm_stream_media_format_block_flac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x7353d9dd q6asm_cmd_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x857330c9 q6asm_write_async +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xa06e9828 q6asm_stream_media_format_block_ape +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xc5a116a4 q6asm_get_session_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xcc4952e4 q6asm_audio_client_free +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xd599e50f q6asm_enc_cfg_blk_pcm_format_support +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xdbedfcd9 q6asm_run_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe060c0a1 q6asm_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe1531577 q6asm_open_write +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xf40aaabe q6asm_stream_media_format_block_wma_v10 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x7e52e977 q6core_is_adsp_ready +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x9b02ea0d q6core_get_svc_api_info +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6dsp-common 0x17142e58 q6dsp_map_channels +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0x5b75f756 q6routing_stream_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0xa7a64259 q6routing_stream_close +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x14c99ca9 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x566b3290 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x967d8f96 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xb4dc8928 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x44eca761 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/rockchip/snd-soc-rockchip-pcm 0x4330bf72 rockchip_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0x0340de96 idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x38a03521 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x19a5a0b1 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xcd20d457 snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xdc4970a2 snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xe7d84d0d snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x2d48c7d5 tegra_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x6ebc9eae tegra_pcm_platform_unregister +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0xb07b65ed tegra_pcm_platform_register_with_chan_names +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x085b113b tegra_asoc_utils_set_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x0c787c22 tegra_asoc_utils_init +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0xaeeaa383 tegra_asoc_utils_set_ac97_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0x0d54c9b9 tegra20_das_connect_dap_to_dac +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xb52cfca4 tegra20_das_connect_dac_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra20-das 0xbced7431 tegra20_das_connect_dap_to_dap +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x386bbc30 tegra30_ahub_allocate_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x55a40206 tegra30_ahub_disable_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x5d7237ff tegra30_ahub_set_cif +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x6060e6f9 tegra30_ahub_allocate_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x6fe20143 tegra30_ahub_set_rx_cif_source +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb419329b tegra30_ahub_disable_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb4a9367d tegra30_ahub_enable_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xb81bca9d tegra30_ahub_free_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xc78c7125 tegra30_ahub_free_tx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xccb67e55 tegra124_ahub_set_cif +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xccc98372 tegra30_ahub_enable_rx_fifo +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0xe549513a tegra30_ahub_unset_rx_cif_source +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-omap-mcbsp 0x05c49464 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-omap-mcpdm 0x77ea0a29 omap_mcpdm_configure_dn_offsets +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-edma 0x4a74ca16 edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-sdma 0x72d45561 sdma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-udma 0x5d631e6d udma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x2046ffdc uniphier_aio_dai_remove +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x52dd3dfa uniphier_aio_spdif_ops +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x5be7ed90 uniphier_aio_remove +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xa7b8b4e9 uniphier_aio_i2s_ops +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xbeac839f uniphier_aio_dai_probe +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xcee9775d uniphier_aiodma_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xfabd0eea uniphier_aio_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x044712a9 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0c132ca8 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0c5a21e3 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x17f06916 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1edb5af2 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x20f239b9 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x21d0d831 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x22a285ba line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x22f3a4b0 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2917c04c line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x51b81963 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x556f819c line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6d28c0bb line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x811123fc line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x936623f7 line6_init_midi +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x000221ac fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0x0004c198 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0018ff0f devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0x00264a54 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x002a9c8e blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x003e9604 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0041fedb device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x004c7e16 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x00521834 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x00522c27 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x0057b1d2 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x0061e501 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006de332 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x00994aca mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x009b998c fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x00a83517 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x00c9acde cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x00dec14a pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x00f5abf3 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01060078 iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x0111e15d snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x0116f69f scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x0119b375 ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x011cf34d lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x01206e26 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x01222a9a of_phandle_iterator_init +EXPORT_SYMBOL_GPL vmlinux 0x01284dec sdhci_get_property +EXPORT_SYMBOL_GPL vmlinux 0x014758d0 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x014b44ee tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x0150f7d2 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x015144a6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x015b2c8f sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x016615ee of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x016f2ef0 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x018f62b4 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x01b1957e pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x01c2ab81 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01d419ea __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x01d747f5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x01e01b7a governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fead94 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x02085209 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x02257c1a tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x022d8e33 iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0x0232be99 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x024f7710 iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x0254f40d ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0x025f5098 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x02648981 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x026d2711 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x026f3380 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x027b7e62 mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0x02800f58 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x02862880 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02adf799 nf_route +EXPORT_SYMBOL_GPL vmlinux 0x02b24cd3 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x02be0548 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x02e685a7 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x02ea61a6 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x02fbb054 xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x0307c271 iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03315f0c btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x0337a0ec shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034e5305 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x035345a7 gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0x0358f6f2 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x036d8e9b klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x03907f28 firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x039d8bd6 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0x03cc5d79 l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0x03d48dac pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x03df762d nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x03e15a46 account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x03f46381 tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0x03f9c59e sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL vmlinux 0x03fae22f netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x04172241 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x041f2fdd regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x042113e9 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x0422cb66 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0x04542ed6 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046d8804 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x046f359e of_overlay_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04909e13 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x049a33e7 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0x049da79a of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x04a162fc usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x04adb178 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x04ae4635 trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04dcce4e remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04fb6430 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x04fd11e4 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x05003025 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x050e60f1 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0515908b of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x0515b3b6 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x05355bf0 pci_host_common_remove +EXPORT_SYMBOL_GPL vmlinux 0x053f66ab fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05610897 of_changeset_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0570910a devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x058a87fe crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05b5941a xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x05be9823 bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x05deab2a dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x05eeae26 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x05ffcb46 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x06095f40 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0x06122337 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x06132bd7 phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x06144876 blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x06172964 extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x06184eec devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x06242fcc devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06350a8c __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0x063bf7ee efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x0644f8e2 fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x066b9f55 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x066e91bd dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x067c2a83 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x0683f4eb regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x068c7eb7 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x06a2a628 spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x06a338e2 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x06a8fbe0 pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x06b09f5d snd_soc_component_set_jack +EXPORT_SYMBOL_GPL vmlinux 0x06b53bd2 memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x06c13051 __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x06c41810 pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x06c421e5 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x06cae89a cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06e017b8 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x06e88816 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x06e92aea nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x06f2c7da phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x06fbc5ca __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x0704d71e pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0x07147af8 snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0718280b dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x071f06e9 regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x073b68b5 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x0771a7a1 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x07734c00 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x0775d9db iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x0782e90e tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x078a1f16 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x07942325 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x07b13cb2 dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b2a8c0 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07cb02a1 crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x07ed6028 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x07f8cd6e __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x07fa055e scmi_protocol_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fceed9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x08023fb7 clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x081bcb16 irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time +EXPORT_SYMBOL_GPL vmlinux 0x082b4d5f put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x08360835 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x08370227 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x08387737 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x084ca149 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x086d57f3 alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0x0874b869 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x087f1f83 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x0898c908 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x08acb827 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x08aeed7f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x08c73234 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x08c8a21e cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x08cd893c crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08df879e dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x08e3043a amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x08e94300 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0x0907ffdc blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0x09152b60 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0919ec8a platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09412e16 icc_enable +EXPORT_SYMBOL_GPL vmlinux 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL vmlinux 0x0956b414 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x095f97f1 nand_read_data_op +EXPORT_SYMBOL_GPL vmlinux 0x0966d50b gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0x0975d8a3 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x097634fc ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0x0979d414 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0x098fa3c4 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x09989cd6 devm_of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0x09a13d16 usb_ep_enable +EXPORT_SYMBOL_GPL vmlinux 0x09aa536c scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x09ad85d5 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09bc0589 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x09e66eb3 virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x09ee2c25 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x09ee6305 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x09f5b2f7 bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x09f6b608 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0a0dd323 phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x0a19bfe9 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0a1db1dd blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x0a26f699 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x0a365254 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x0a42d1f5 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x0a4f6b22 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a7151e0 devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x0aadf6fc led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x0ab983ac dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0abc3d93 rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0x0ac596bb snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x0ae71bc3 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x0ae8d8c6 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x0af02fd8 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x0af49fa9 i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0fea9c crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b1c796e dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0b237ca6 clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0x0b2970fe klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0b424b41 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0x0b552623 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x0b693d01 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b72bb52 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x0b79b592 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x0b7c4731 sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0x0b87261e transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0b970b7d tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x0ba65e4f usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0bb028d4 hisi_clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x0bc0974e tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0x0bcf7195 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x0be4ce86 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x0c23c104 of_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x0c23cc5e __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c3edef4 snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL vmlinux 0x0c484e1d ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x0c49c744 serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0x0c4ffde1 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x0c55e2d5 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x0c5b6039 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0c6b419c mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0x0c6f3a41 __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c7927a7 devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0c81a5f1 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x0c896274 perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x0c97770f __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x0cafcb4e snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x0cb185fa vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x0cb456e1 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x0cb4c798 iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0x0cb6523f of_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x0cdc1316 devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x0ce44776 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0ce5e791 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x0ce80e51 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x0ce9926a extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0x0ceaf5e5 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x0cfae067 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x0d0ac9ae edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0x0d0bfd25 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0d1cc4dd devres_release +EXPORT_SYMBOL_GPL vmlinux 0x0d256675 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d50d2a5 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d553367 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x0d59a383 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0x0d5a5939 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x0d5cf85e skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x0d6a7f61 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0d870a00 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x0da97fe9 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x0daa0c01 iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0x0db4857f rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x0db927a3 phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dc4e9fc dev_pm_opp_get_of_node +EXPORT_SYMBOL_GPL vmlinux 0x0dcb3ee8 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0dcd5a57 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x0dd8d9e1 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1f54 kill_device +EXPORT_SYMBOL_GPL vmlinux 0x0dfc99fb inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x0e0e160a devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e152d2d reset_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x0e1911bc dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x0e196f47 genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x0e24dc3e skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x0e2805f6 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x0e2d0b91 devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x0e3d8bdd device_move +EXPORT_SYMBOL_GPL vmlinux 0x0e44c417 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x0e53ea4b gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x0e58118e rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x0e6a5076 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x0e7e403e dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0x0e8648b1 thermal_zone_of_get_sensor_id +EXPORT_SYMBOL_GPL vmlinux 0x0e87a45c crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x0e8a574a cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0e8c4e74 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x0e9862e1 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x0e9bf026 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x0eada42c compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0ece0a18 __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x0edc914d of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0edfae99 __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x0eeb5417 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x0ef6ef4f ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0x0efa4a19 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x0f059aed crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x0f0f222a snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f1c00b9 ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x0f1c0e9e regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0f2203d9 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0x0f257036 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0x0f2da3dc rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f4c4228 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x0f517ff5 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0x0f698de0 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x0f713f3d irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0x0f75d0b5 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0f93aee8 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0x0f949ea8 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0f9f8562 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0x0fb488c3 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x0fc22b31 pci_host_common_probe +EXPORT_SYMBOL_GPL vmlinux 0x0fd70012 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x0ff45e29 devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ff92d97 devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0x1003348e fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0x100359e4 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x100ab093 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101bbe13 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x1036638e sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x103cd540 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0x1043cac3 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0x104854e6 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x10674e33 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0x106ad9e1 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x1071a4a3 udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0x10904ec0 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x10941c43 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0x10bdb8bd register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c2fc92 regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x10d78e8e tegra_bpmp_transfer_atomic +EXPORT_SYMBOL_GPL vmlinux 0x10d9abd2 dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0x10e72608 hisi_clk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f5905e device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x10f93c3c sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x10fb42a7 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x1104c4d5 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL vmlinux 0x110d5a2d fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x111667aa dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x11197001 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x1125fb19 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x112ca405 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x1138cb1f of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x113bb791 spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0x1141d3bd rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x11526c9a meson_clk_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x11528518 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x117b2712 rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x11807076 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1188af7a noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1194ad6d add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11aa809a regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0x11b105bc usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c411eb dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x11c79928 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x11cc298e irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11eb5fa6 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x11f0cfb0 kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x11fe930f sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x1211e3fb bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1222ba51 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x122d1d71 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x12429b74 kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x124c3d3a mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0x12526d04 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x1253bb2f vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x1258360b page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0x125d637f irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126c3ff3 __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x1282d7e5 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x12885691 crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x128f5a1c blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x12a0ca29 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x12a6d688 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x12ac5a8b device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x12bbfae0 devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x12bda432 sdhci_cqe_disable +EXPORT_SYMBOL_GPL vmlinux 0x12be45c2 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x12cdd747 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x12d0d84e gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x12ff1e89 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x12ff296f snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1323a582 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x132432c5 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x132f9635 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x1338926c dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136c872f gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x137e2312 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x13813f20 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1381d4f3 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1381fdf4 usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL vmlinux 0x13889036 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x13940a0d fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0x13a69312 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x13be0e88 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x13c7cd25 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x13cb7882 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x13cf04ac spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x13d01656 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x13d57dff scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x13e00fe3 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x13f4e4ce dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0x13f5766e sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x13fbfc15 tegra_xusb_padctl_legacy_remove +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x14050692 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x140c99b7 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x140cf343 tegra_bpmp_put +EXPORT_SYMBOL_GPL vmlinux 0x141064d5 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x141dfbab efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x141eac07 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x14298497 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x143128b4 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x14324748 xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1449a6ad regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x144b960e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x147c3515 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x14801835 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x148ede45 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x1499082a driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x149f093b cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x14a98a21 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x14b5e563 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x14bc6e82 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x14c2872d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x14c8c3b6 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x14cb4cac of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14d27bee lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x14d9c62e fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0x14e0316b kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x14e12ac8 devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14ebe9c6 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x14fda6a9 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x150424f6 lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0x1504fdf4 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x15116fde devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x152d8a1f rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x153d4191 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x155a29d4 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0x156ce943 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x1573f7dc blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x157700b6 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0x157c3ee7 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x157ce384 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x158542ac snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL vmlinux 0x1595c43e blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0x1595e94e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0x159e23cc pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x15ad9c88 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x15b06044 __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x15ba74b0 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x15d1eab0 device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x15d7e9db tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x15ec6155 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x15f36582 led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x161b1093 usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1621ffee iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0x162f5f38 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x1635da54 imx_pcm_fiq_exit +EXPORT_SYMBOL_GPL vmlinux 0x163a561f mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x163b9ec9 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x1644450b device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x165bc9d1 synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x165dcccc bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x1662e8eb crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x166aa120 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1690dac0 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x1697c196 of_phandle_iterator_next +EXPORT_SYMBOL_GPL vmlinux 0x169841aa devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x169ff08b gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x16a5f0ed badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0x16b65ce7 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x16d195c3 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x16d9e135 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16ef576b class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x16f3a68e inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x16ffb8af get_tree_mtd +EXPORT_SYMBOL_GPL vmlinux 0x17020dcf devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1706a654 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x1707ee5d crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x17127f2d kick_process +EXPORT_SYMBOL_GPL vmlinux 0x17129be4 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x1712ea28 __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x17257b7e snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x173491a5 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x173ac4df sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0x173c74b9 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x1746252f mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x174c677f d_walk +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x177a0633 arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1789f43f xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0x179da7fe dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x17a8061e serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x17cd025c irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x17dc4c4f hisi_reset_init +EXPORT_SYMBOL_GPL vmlinux 0x17eaec63 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x17f8037f __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x17f98270 pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x17f9d379 iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x17fbe97d amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x1817930e dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1821ab1d blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x182419fc device_add +EXPORT_SYMBOL_GPL vmlinux 0x183f3d12 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x184721d1 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x187b067f phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x1882c37f metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0x18858eec clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x188b8697 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x188e63da ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x1893a85e ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0x18c7b69c crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x18d896f8 ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0x18dd4667 i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0x18ddfa86 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18e5d08d pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x18f18e4c snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1904a9b2 device_del +EXPORT_SYMBOL_GPL vmlinux 0x190a7209 mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0x190ca34c crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x1921431b meson_clk_pcie_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x192f0e7b snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x19330c5f bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x193cf760 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1940b13e usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x194132fa zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x194de273 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x196294ed snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL vmlinux 0x196dcacc snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL vmlinux 0x196fbaf3 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x1972bae4 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1977ab8e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19c20269 soc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a028e48 devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a042fa5 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1a0a0206 cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a132424 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a177911 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x1a1ae9c9 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0x1a2643e2 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL vmlinux 0x1a585778 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x1a5c5775 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x1a6b3dde ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a6ffa87 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x1a7256f9 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x1a77903a of_alias_get_alias_list +EXPORT_SYMBOL_GPL vmlinux 0x1ab4ef94 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x1ab68ff9 i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1ad5566e regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x1ad9d2e3 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1adec33b bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x1aece18a rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1aedb708 iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1aefc3db of_property_read_variable_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1af78209 kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x1b31883b uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1b339560 of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x1b355682 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1b4008fa of_css +EXPORT_SYMBOL_GPL vmlinux 0x1b4184ca rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x1b424230 clock_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b5ad884 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1b657a38 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x1b8247cd __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1ba52610 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x1baa55d5 meson_clk_pll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x1bbd5e9a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x1bc40a8d gpmc_omap_get_nand_ops +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bcc68d9 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1c1096e1 ahci_do_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1c2a41ad crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1c2d726a relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x1c353b55 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1c43b0c4 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6b8a76 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1c6d7959 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x1c785f94 irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x1c798d9f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c8424cc ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8d833d clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x1c931155 __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x1c99161e call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x1cbb267e pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cbefb80 security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1ccab588 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1cde9036 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x1cdf4efb copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x1ce65eea usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0x1d20f209 perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d29b6e6 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x1d3cc1c6 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x1d4cbf97 snd_soc_dapm_init +EXPORT_SYMBOL_GPL vmlinux 0x1d4d2a74 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x1d548ca5 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1d591d32 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1d61e7e1 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x1d67c2b8 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1d6d379b amba_bustype +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7f6d33 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x1d80a7e5 mtk_mmsys_ddp_connect +EXPORT_SYMBOL_GPL vmlinux 0x1d817cb7 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1d96dd25 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d9d64d0 sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x1d9de7fd sdhci_request +EXPORT_SYMBOL_GPL vmlinux 0x1dab1f76 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x1dbcf0c8 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x1dc366ce devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0x1dc99f6d yield_to +EXPORT_SYMBOL_GPL vmlinux 0x1dce0031 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x1dd6a78b serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x1de00292 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0e11a8 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0x1e23525e alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0x1e3e54d1 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x1e455bfd sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x1e57ab21 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7d6157 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1e7e47b7 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x1e85e2f7 hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e957e15 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1eaef2ea usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec57d70 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x1ecae3a7 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f2cf60b iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x1f317bd9 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1f3bfc19 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f449da7 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x1f54b3ee inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f5b8f46 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0x1f5fc4a5 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x1f66eba5 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f6725b4 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x1f74090f regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x1f774f46 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1f77cca1 thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x1f7b71e8 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x1f84ad69 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f890d7b phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x1f90d8de dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x1f9bf682 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fa61f1e inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1fa6be29 l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1fbea212 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0x1fc5bd2f tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x1fca0b38 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x1fd1cf7b edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1fd25a2c regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1fea62c0 devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x1ff222df blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x2020e6b8 phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x202a3460 spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x202ac22d store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0x204000a6 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x20445e5c pci_generic_ecam_ops +EXPORT_SYMBOL_GPL vmlinux 0x20478a3e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x205dc8d9 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x2064e06f irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x206f1d45 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x207bfc28 dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x2087be15 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x2093ce6a perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20960ff6 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x209bcd13 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x20b955e1 usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0x20c2f1fc ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x20db71c3 sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x20dc567d crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x20eac433 mtd_pairing_groups +EXPORT_SYMBOL_GPL vmlinux 0x20f2d8b2 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x20f9db42 xhci_mtk_add_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x210649db __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x210a2104 of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x210b0817 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x21498b27 __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x214fc26f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x21559f80 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x21562a1d raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x215bcf76 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x216e59c2 get_device +EXPORT_SYMBOL_GPL vmlinux 0x21726652 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2183b93d gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x219bf79e ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ae5262 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x21c02107 devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d25c90 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x21d3a17b dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x21e068f3 tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x21f4e673 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0x21f8a10c ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x220e9561 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221268fd arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x221a07d0 __sdhci_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x22260534 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x2227d139 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x223b3c4e fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x22648c02 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x2267af01 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x227140b4 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x227da6df scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x22895f90 fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x2295c354 of_property_read_u64_index +EXPORT_SYMBOL_GPL vmlinux 0x229b77c1 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x22a52ab9 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22b8693d bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x22c2547a bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22c50110 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0x22d75787 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22e7bf25 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x22ed8449 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x22f767dd wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x23134788 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x23177d46 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x2322b129 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x232e1d96 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x23362530 blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x233e0154 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x234af278 devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x2366c934 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x23704b4e switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x2380a2b9 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x23835e7c pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0x23852145 badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23950433 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23b72eed vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x23dcc797 usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL vmlinux 0x23f6c603 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x241343eb fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0x24328660 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x2435f57b pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x246491d9 bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x2471f73f thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x24722b6a pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24730cd2 gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x247c01df dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24868f2a md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x248a6d83 mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL vmlinux 0x24908f98 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24b062dc fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x24b499e3 dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x24b9a75e devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24cc0069 tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x24ce2625 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x24d176f4 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x24d45862 snd_soc_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f5c6f2 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x2526afdd cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2539d534 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x253a8454 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x25488d60 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x25717301 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x2581fdd0 snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x259b8438 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x25a67f10 usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x25ae5c03 fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0x25ae9e21 crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0x25aef05e do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0x25c363d3 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x25c4ee91 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x25c528c4 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25f473fc devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x25fee408 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x25ffdc9a xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x26025fa0 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x2613123f __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x261b6f7c tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x262eba44 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x2630938d ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x2638586b xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0x2651442f pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x26776d9b of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x269f02ed tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x26a88021 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26bf18b8 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x26c39903 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e5a13e __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2704548a of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x2714c7a7 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x272e9d77 hisi_reset_exit +EXPORT_SYMBOL_GPL vmlinux 0x2734197f musb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2734aa90 tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x2737329a fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2758d43b pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x2768ea27 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x276dc1ba put_device +EXPORT_SYMBOL_GPL vmlinux 0x27738fde devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x278242d3 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x2788e07d tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0x279c1733 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x279c4d2a snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x27a9b574 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x27ad6158 extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x27d8cb68 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x27e699e0 regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x27e8cbcb synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0x27ed0bc9 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x27f0568b ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f61877 tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2803b61d crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x282193de phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x2822c290 dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x2827bfb3 kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0x282aed60 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x282b7d57 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283163e1 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x285548b7 mtk_pinconf_bias_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x285bc9a9 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL vmlinux 0x289543ad mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL vmlinux 0x289aadb1 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x28a2d4f1 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28b030d2 of_overlay_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28c3a2e2 phy_configure +EXPORT_SYMBOL_GPL vmlinux 0x28da1c49 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x28fa4788 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0x29231498 dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x293b7f2b iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x293c2cfb devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x294816d5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x2952964a security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x2953a22b clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x295a2670 clk_regmap_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x295b982a hisi_clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x296fe755 pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x2972cbbc class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29743665 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x297ced47 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x29899c62 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x298b7d49 of_genpd_parse_idle_states +EXPORT_SYMBOL_GPL vmlinux 0x2995ac36 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x29a5248d l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x29b945e8 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x29c509c7 xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0x29cf2470 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x2a050f9d cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x2a2aea17 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a2c4f88 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2a32131e wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2a35ad48 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x2a3e255d __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x2a58b049 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a635b90 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x2a65821b usb_gadget_connect +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a73f54b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x2a911833 scmi_protocol_register +EXPORT_SYMBOL_GPL vmlinux 0x2a9d1b7f __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x2aad4e4e dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0x2acdf766 pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0x2ad13b11 nand_select_target +EXPORT_SYMBOL_GPL vmlinux 0x2ad3232c usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2adbb1ba mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0x2ae31ddc ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2b0ca665 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x2b0df868 sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0x2b1483d9 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2b4151e7 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b4f62ed xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x2b603eda device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x2b614135 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b6197ff devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x2b717ab2 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2b854389 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9633b5 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2ba30968 device_register +EXPORT_SYMBOL_GPL vmlinux 0x2ba9c5a3 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2bb910b4 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0x2bd1efd5 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x2bd5f163 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x2be2ca2a br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2be5030f copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x2bf56747 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0x2bf8d3a3 led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0x2c0bd60d arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2eb7ec fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c32a13f of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x2c3a2d13 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x2c3d9a6c clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0x2c5b8db9 of_i2c_get_board_info +EXPORT_SYMBOL_GPL vmlinux 0x2c5fbbc8 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x2c6208ee serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca378d0 is_software_node +EXPORT_SYMBOL_GPL vmlinux 0x2ca4d5dc vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x2cb09e4e irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x2cb1e454 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2cd26e42 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cfa6e11 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x2d01fb5c modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1bc4cd fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x2d1cc6cc fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d2f77b1 led_put +EXPORT_SYMBOL_GPL vmlinux 0x2d3409d3 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL vmlinux 0x2d396e38 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x2d417e12 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d45364e bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x2d4617c8 bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d4c3e08 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x2d58062f device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x2d6422eb iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0x2d6682a2 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x2d706142 sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x2d928dd4 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x2d9536a0 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0x2da4725d ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2db67d4a owl_sps_set_pg +EXPORT_SYMBOL_GPL vmlinux 0x2dfcda0b gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2e003b34 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e08583f unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e24265b dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x2e30509c percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2e358ece mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0x2e3696c0 blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x2e3a88d0 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2e3ffc77 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2e4261f6 snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0x2e4420a3 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x2e5a65d2 iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x2e957432 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0x2e9b3bef dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x2e9fdbab sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x2ea11a90 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2ea2d6a9 mtk_smi_larb_get +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec25f13 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x2ecd7309 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x2ee1a9f3 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2eeb12e9 device_create +EXPORT_SYMBOL_GPL vmlinux 0x2efa7b42 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2f00c004 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f25afef kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x2f272bca pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f46fcb3 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4dc771 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x2f5c1223 __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x2f63e634 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f65f1a1 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x2f85a9a3 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2f87d601 perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x2f895416 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2f9278da pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x2f967a7a debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x2fade0be synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x2fb78063 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x2fc98045 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2fd849a1 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x2fe97a6c event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x2feadf37 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2fec73c5 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x30096d57 insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x301bbf5b devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x3021656e pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x30341ca6 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x30350d74 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x303db38e snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL vmlinux 0x305723d9 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x305973e1 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3067d2db dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x3069809a __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x3069e46b scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x30741085 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0x307c8965 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x307ef586 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x3080ba85 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0x30810187 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x30827bd7 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x309546fd device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x30a2b5f5 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30c3928d icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0x30d6deb3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x30df795a dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0x30eaa9ad of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x31138e67 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x311a826f dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0x311ab1ee pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31277254 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x31290304 pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x312cf3c6 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x313549e2 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x3161efff shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x3166b150 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x316b1d03 devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x3172dfbf skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x31808563 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x31861f82 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x318911e1 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0x318ab2b0 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x3195d903 pinmux_generic_get_function_name +EXPORT_SYMBOL_GPL vmlinux 0x3198367b dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31b0aa77 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x31c4084a phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31e2fe56 phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x31ee082f tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x31eefd47 xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0x31ef3d8c strp_done +EXPORT_SYMBOL_GPL vmlinux 0x3202dfdb clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x32032dca vchan_tx_desc_free +EXPORT_SYMBOL_GPL vmlinux 0x3210eb84 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x32474e82 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x3250ace6 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x3251cf0b watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0x3256197e validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0x327217db virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x327d0940 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x328c3f24 irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0x329dde80 devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x32a3a61d tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32aea289 blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x32baba03 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ce5f4f srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x32e0a587 nand_reset_op +EXPORT_SYMBOL_GPL vmlinux 0x32e97898 i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0x3308a544 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x3312a640 icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x33160b50 sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x331c387e ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3323b3f0 usb_gadget_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x3335ae32 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x33379c32 i2c_of_match_device +EXPORT_SYMBOL_GPL vmlinux 0x333d5b05 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x334afab6 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x3359e8d5 iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336a2d50 proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0x33708be0 blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0x3396d735 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x33a98a90 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x33b1b935 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x33b46aa6 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x33bbe997 crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x33c23a6a tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x33cd2cd6 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x33d0d73f devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x33dffe93 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x33e87c14 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x33e9e0a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x33efc8c8 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x33ff6837 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3409f680 pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x340d96fe transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3412a53e sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x341f243f metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x3420a688 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x3421d068 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x34276189 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x342a43bd dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x342c4c9d soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x34327a8f unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x34420d02 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x3451949a unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x3461ba36 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x3480f7ee cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x348195fb iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0x34908579 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0x34931725 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x34956a20 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x34a84df3 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ad66a5 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x34ae9a75 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x34f4161f ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0x34f68122 rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x34fcda68 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x3503a146 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x35293a2a __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35372ec1 of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x3540ea11 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x354ac51d fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x3572f33c serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x357a3470 hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x357d361a mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35996de4 em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x35abe8a5 rockchip_pcie_parse_dt +EXPORT_SYMBOL_GPL vmlinux 0x35b03fa2 snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL vmlinux 0x35b2f5d5 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x35be8cfc of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x35d89216 nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL vmlinux 0x35e48d72 cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x35f10f67 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360c97cb nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x362d7a08 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x362de961 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x363a49dd ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3641b51d snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL vmlinux 0x3649c417 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x364e9a9a regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x36626ab3 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x368e888d skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x369362a2 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ba9ad9 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x36c98c77 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x36d84adb inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x36dc0a57 of_get_required_opp_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x36dc95cf sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x36e25554 xhci_mtk_reset_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x370a48ad sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x37291365 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x372e5cec __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0x37318197 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x3734ab16 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3737e671 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x37595cb3 meson_clk_mpll_ops +EXPORT_SYMBOL_GPL vmlinux 0x375dbb85 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x37670b99 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x37a1a2b5 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x37b9b797 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0x37ba93b2 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x37bc0f74 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x37c0f2e1 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x37d14dc0 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x37d599fd power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x37f47436 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x3809bac4 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x3814929f pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0x381cf502 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3833be81 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x3841419e blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x3854f2f3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x385e1148 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x3879f841 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x38913817 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x3892f645 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x38935d4f nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x389f797a inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38aa4657 xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x38aa5bfd snd_ac97_reset +EXPORT_SYMBOL_GPL vmlinux 0x38afe804 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x38b15ec8 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x38c0c9e4 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x38c6397a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x38c8c29a fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x38d4f511 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x38d5b67c crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x38d64028 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x38e45a86 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38e65df7 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x38ea60a9 mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x3903b95f of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x390ee24b virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x39174654 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x39179871 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3922af3f snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3946d910 bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0x394a2589 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x395e7c2d do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0x396cac43 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3979e66d ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x397d0e0a crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x39815e26 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x3989109b platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3990ae25 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x3992ecd7 snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39cf81b3 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x39d18801 gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0x39d3130f vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ea933b rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x39ec296f crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x39f701d1 pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x39f728d4 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x39fbc57f pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x3a09dbc6 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3a0b42ff efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a1decbb ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a2f3d58 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a58bcd8 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a5a25b9 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3a6a918e fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x3a6dc43f pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x3a7bc091 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x3a865c0c mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0x3a8c7b76 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x3a92ae95 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa12240 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3aa42cfa md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x3aad462e pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x3ab79747 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3adf62bf usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x3ae64043 spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x3ae7645c pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x3aeec121 serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0x3b03535f free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0x3b06bd9d ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3b22acd6 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3b26928c debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b56a90a bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x3b8769b3 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x3b987140 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3b9a348c devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3ba05dff __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3ba1abde pinconf_generic_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x3ba26281 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3babb2a1 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x3bb404ae mmc_pwrseq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3bb8c807 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x3bba0c85 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x3bbe8c17 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x3bc0c5ea wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3beef199 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x3bf02f1b ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c17b513 usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c1e3379 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x3c200eab gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3c2b68f7 of_changeset_apply +EXPORT_SYMBOL_GPL vmlinux 0x3c2e13ab devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x3c441e2a pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3c45bc12 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x3c5afe56 regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c651f33 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c701b0e pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3c72724e usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3c9e1402 blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0x3cbc07f5 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0x3cc85500 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x3ccbaa9b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce0d5e4 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0x3ce493ef power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x3ce671bc __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3cf02e49 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x3cfeee47 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x3d0aaa3f of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x3d1eda71 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0x3d25e9a3 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3d2895cd device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x3d2ae5f5 mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x3d2d658e dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d39eed8 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x3d46ffe1 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3d49fc73 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d6a3a04 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x3d6a3fa6 update_time +EXPORT_SYMBOL_GPL vmlinux 0x3d756150 iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x3d79ad09 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x3da08c6e usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x3da31f46 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0x3dad5aa1 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dca3247 sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0x3dd72eba rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x3de2cb91 icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df188ed rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x3df89bba phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x3e06bf8d sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x3e09b76d platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0x3e0a8d30 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x3e17a786 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x3e1d1f1c page_endio +EXPORT_SYMBOL_GPL vmlinux 0x3e21ba72 acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x3e27065b usb_ep_set_wedge +EXPORT_SYMBOL_GPL vmlinux 0x3e31d9c3 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x3e468405 rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x3e4bcae1 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x3e537662 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3e5ae2df gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0x3e5f5622 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0x3e65f289 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea39053 pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x3eafc51f wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3ec360ee cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x3ecba722 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0x3ecdd3cf blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x3edb0529 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3ee6ddbc mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3ef1098a dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x3efa8d59 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3efd68d9 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x3eff5225 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x3f060887 __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x3f3b4e53 regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f5064bb ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x3f5d49bb component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x3f69d2a0 sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x3f6ef804 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x3f6f320e pinctrl_generic_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f982928 pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x3fa95427 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x3fb37885 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x3fb5e6cb pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x3fbbb922 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fea029c hisi_clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x4009eb6a fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x40388a65 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x403b12a2 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x403bf854 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4044865c usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x4063b637 xhci_mtk_sch_init +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40674e64 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4071c4bb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x4076d3ee rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40b1068c fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x40dbb336 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x40ed3ccc tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f83c1b component_del +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x41014dcd snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL vmlinux 0x41268973 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x412e2787 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x413d06a1 of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0x414538e6 synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x41476ed6 irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0x414ccf14 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x414ed5cb devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x414f45d9 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x41530da3 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x41571523 sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x416c2f50 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418627dc devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x4186354e tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x418bc284 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41b4df93 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x41bb7aa0 device_match_name +EXPORT_SYMBOL_GPL vmlinux 0x41c0b9ee devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x41c166ca virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x41c30f3a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x41c7e38a sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x41c94bf5 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x41ea7510 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41ee3f33 fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x41fdef9a lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42220a94 cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x42228e66 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x424bb1f3 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0x424c2dd7 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x42784ce7 irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x427ce846 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42856cb4 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x42887525 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x428eb164 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x4294fa7c ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x42a8e89c arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x42aa7402 kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x42aadcce clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x42d1a588 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x42e445f6 clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42e7a297 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42efb127 nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42f73ab4 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x431f87e3 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x43249cbf mtk_eint_find_irq +EXPORT_SYMBOL_GPL vmlinux 0x432730b9 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x433d735d cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4365a6b1 dev_pm_opp_of_add_table_indexed +EXPORT_SYMBOL_GPL vmlinux 0x4369d075 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x4369dcfe serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x437fd7d8 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43b2756a tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x43bd999d ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x43c0ebe9 sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x43c58ddb dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x43c984f0 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43ef796e sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4406ed37 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x441b4c10 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x4422d7d6 of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x4423796f genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x442d3464 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x442d75a4 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x442e6794 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x44339406 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0x44418188 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x44489f1b __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x444e6320 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x444f0bd9 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44531e80 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x44648d02 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x447861f1 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x447dc230 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x447eb497 wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44915de2 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x449761b4 snd_soc_add_component +EXPORT_SYMBOL_GPL vmlinux 0x449f1ec9 nanddev_erase +EXPORT_SYMBOL_GPL vmlinux 0x44a91dae badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0x44acf90c devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0x44b0313d synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0x44ba1042 percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44d4fd2d kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x44f3ae16 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x4520327b dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x45242641 tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x45365b6f vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x4553edcc dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x455b7e2f __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4561f990 qcom_smem_state_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4562f8e4 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x4563d503 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x456a4c83 devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4577fad9 __sdhci_read_caps +EXPORT_SYMBOL_GPL vmlinux 0x4582b60a of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x458ea773 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x45b3a371 cpts_release +EXPORT_SYMBOL_GPL vmlinux 0x45baf6ae tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x45c13997 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x45d641f7 phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0x45f1bc79 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x45f93b22 phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x45fca75c tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x45ff8535 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x46297234 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x46325c13 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4640db2a icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0x464607d1 dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x466e5342 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x467c74da perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x4681621a bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x4683a8ee key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4686b974 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x46870dbd crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4696f730 proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0x46973c89 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x46b21bd2 find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x46c06c19 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x4700260a tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x470409c3 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0x470ba005 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4727695d device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x47317949 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x47317de2 mtk_eint_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x473b7d3b exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4749fe7b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4768a4fc ahci_platform_disable_phys +EXPORT_SYMBOL_GPL vmlinux 0x476d119b crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x47725415 ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0x477b0d53 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47925794 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47bbfd76 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x47c1d254 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x47d59011 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47eaa1d4 spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0x47f40a85 fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0x47f6ebd8 phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0x48020c1c irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0x4811e175 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x48290473 mtk_pinconf_drive_set +EXPORT_SYMBOL_GPL vmlinux 0x484779ef __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x484be316 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x484cb2b0 spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x4870b854 dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x488ae9ce crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x4890887d dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x48945ee7 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x489ea5dd iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x48a377de fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48a49331 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x48b928ed class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48b9496d ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0x48c436dd snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x48c4fb76 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x48d3a0d0 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x49181f89 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x49326ef6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x495da3d5 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x49603f8b fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4966c814 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4967d11b tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0x497d4da1 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x497d90e3 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4991a12f crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x49932f46 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x49975bd0 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x49983ec6 devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x499cfb9b cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x49a03786 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x49a35118 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x49aa2fa6 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0x49c467d2 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x49d96707 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x49dddde0 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f484ef sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a1bc915 cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x4ab57e92 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ab61ef8 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x4abc372c transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4abce14b debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4ad63858 rockchip_pcie_init_port +EXPORT_SYMBOL_GPL vmlinux 0x4ad77930 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x4ae26481 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x4ae2a234 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0x4ae8f1d3 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4aed661c genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0x4affb123 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x4b09fe33 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b1dc521 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x4b380f02 devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0x4b495122 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b540f2c crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x4b57d747 debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x4b67d693 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x4b6b0936 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x4b744101 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4b8bb1f3 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b8ead64 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b9053c6 dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x4b99da4f mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0x4b9a92fa mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL vmlinux 0x4bba1476 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x4bbae38e rockchip_pcie_enable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x4bdee258 sdhci_cqe_enable +EXPORT_SYMBOL_GPL vmlinux 0x4c05ede3 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c1a2ce5 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c27703c usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x4c3a71bb snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x4c4e9b35 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4c5ca995 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4c7dbce7 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c9d814f device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x4cb0e4ef pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x4cb1cf44 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x4cba2be6 fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x4cc0f751 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x4cd67c15 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x4ce6d76e tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4ce8a612 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x4ceef8b9 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x4cf17d9a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4cf24332 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x4cf46b42 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x4cf8af22 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d024589 apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0x4d05a66d xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0x4d1ca86a pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x4d1d01a8 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4d20bb12 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4d3687d9 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4d38bd1c kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d4c3201 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d62a963 gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d72ac42 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x4d7a201d regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4d83fb4a led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x4d8dd201 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x4d8eadc1 nand_change_write_column_op +EXPORT_SYMBOL_GPL vmlinux 0x4d951d70 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4daa7444 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4dd22a34 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e36a8bd hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e66f08d of_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x4e71d41e sdhci_setup_host +EXPORT_SYMBOL_GPL vmlinux 0x4e785814 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x4e7db255 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x4e7f919f ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x4e81effb adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x4e9f1114 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x4ea6b7d1 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4eae39d8 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x4ebfb865 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x4ec16ba6 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x4ecc7018 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x4ed59d7f ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x4ef35f23 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x4ef4d219 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f00e90a ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f16b6ad spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0x4f1a5083 gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x4f239d3a of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x4f2d73bf snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x4f331911 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4f3ba219 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0x4f41c2fa del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x4f487631 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4f541d0f xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4f543ff9 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x4f546853 get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x4f649316 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6f8602 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f7456ca led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0x4f7850e8 wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x4f78b5ea fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x4f81b817 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x4f8cfa1e pci_ecam_create +EXPORT_SYMBOL_GPL vmlinux 0x4f8e1592 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x4f93958d devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9bca83 debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0x4fa4d1f4 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x4fb06134 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x4fb0625d mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fec2099 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x4ff6d3df regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5007b410 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x501c5b27 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x503461c5 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x503c5951 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x503eeebb synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x506595b1 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x5073279a of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x50855306 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x5086b884 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x5086c2d9 mvebu_mbus_get_dram_win_info +EXPORT_SYMBOL_GPL vmlinux 0x508afef4 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509d5f55 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x50a7ce41 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x50b127a5 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x50b16e87 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL vmlinux 0x50c84c9e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cb7de0 rockchip_pcie_deinit_phys +EXPORT_SYMBOL_GPL vmlinux 0x50cf7537 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x50e5f910 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50feda70 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x50ff7b76 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x51058329 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x511b24de rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x51269b35 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x513ad2dc platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x514fc1c3 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51533eb9 __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x51552503 blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x51715a53 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x51733b90 icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0x51754009 inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0x5190a0c7 mtk_pinconf_bias_disable_set +EXPORT_SYMBOL_GPL vmlinux 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51a3cc5e fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x51bb453f device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0x51cf0049 extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0x51d04ea2 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0x51d4f88c virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x51ef89fc mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x51f1a161 __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0x52092315 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x5227baaa debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x522ee651 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x5236497d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x523cefbe __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x523fd3b1 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x526943cb inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5271dbf4 pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0x527b9274 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x527dc6da max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5283012b snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x529395ad edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x52a64a22 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52b3e8a1 is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0x52b69d9b skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x52b96b90 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x52c1a3b6 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52d44ac4 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52e0b73e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x52eb9cab pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x52efcd15 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x52f21cc5 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x530484d5 scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x5305e8ee usb_gadget_activate +EXPORT_SYMBOL_GPL vmlinux 0x530ca30a ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x535ce0d7 bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x53667c9c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x5375935f pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x537a259b tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x539774b3 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0x53992a8b sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x53aba5a1 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x53b43159 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x53bfd585 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53e100b7 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x53e44378 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x53fc8f45 nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x541387dd fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x54172702 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54325c63 snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL vmlinux 0x5435454c divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x545ea4d3 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5463df96 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x548020af snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x549436fa fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549c2783 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x54a25da2 qcom_smem_state_put +EXPORT_SYMBOL_GPL vmlinux 0x54aa2864 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x54b38160 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x54c3b17c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x54c83820 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0x54cddcac dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0x54d100e4 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54e2a844 blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x54e9052c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x54f0bd3e ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x54fc34be regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x54fec1c0 pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x551256ef ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x551335dd serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553c0d3a vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x553c5846 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555da5aa power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556f0cf7 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5578edff tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x558b3693 tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x55934ce4 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x5598fb41 spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0x55ab4427 devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x55acaf6d dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x55c2beaf pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x55c50e05 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55cd9783 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55efaa82 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x55ff38ea iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x5613395a phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x561be3e8 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL vmlinux 0x563d4d55 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56a6a76c net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56ba67ef devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0x56bd6c14 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x56cc57f3 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x56d0c0a2 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x56d431d6 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x56dddf19 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f1cc92 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x57059f8d sdhci_dumpregs +EXPORT_SYMBOL_GPL vmlinux 0x57241379 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5724937b netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x572ca1a0 blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5743f393 fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0x575016da devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x576b546c snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL vmlinux 0x577394f8 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5779cb54 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x5780e21c fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x578b1be4 sdhci_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57922fe3 sdhci_start_tuning +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a231cc usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x57a7c1e5 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x57accc5e gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x57b5b644 fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x57c23399 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57ca8331 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57d1f270 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x57d2e935 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x57d6ef2d regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x57da358a phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x57e08115 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x57e22073 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x57ea7814 pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57fe308c i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x58040f8d pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x58065a22 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x58261de7 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x583e7aac spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x585df369 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x586e3c06 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x5879df48 ahci_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x587a9026 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x587ac04d cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x587d759a proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x588f0bb2 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x58903802 wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0x5893ea04 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5897872c pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x58b73c78 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x58c5784c fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0x58d6bef8 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58ed5732 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x58f0308a clk_regmap_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x58f3577b posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x58fc03ec tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5906aaa7 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x59138e93 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x5920c651 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x59397d16 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x59399e2d pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x593f36e3 nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x59502fbe crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0x595483d4 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x59633f8f usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x597d3eef __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x5988b961 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x599184a8 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x59a1fab8 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x59b5def6 clk_regmap_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x59b75ce9 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x59bf3f8f usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x59c1659e of_genpd_remove_last +EXPORT_SYMBOL_GPL vmlinux 0x59cdb410 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x59dd963a dev_pm_opp_of_get_opp_desc_node +EXPORT_SYMBOL_GPL vmlinux 0x59de3454 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x59f43571 mtk_pinconf_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x59f53d68 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a049df5 snd_soc_component_read32 +EXPORT_SYMBOL_GPL vmlinux 0x5a10169c rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a46def4 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a61d58a ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a7111ef dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x5a7246a8 regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x5a76e56b sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a99ceae virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x5aa1db77 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x5aafbed2 spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ab936af ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5abb3e7f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x5abeb175 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x5abfac14 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0x5ac24451 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5ad2447c blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5ad3c2f1 sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x5adab7a2 regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0x5ae80999 icc_get +EXPORT_SYMBOL_GPL vmlinux 0x5aeb7d93 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5af00bb7 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0x5b0c18d6 nand_change_read_column_op +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b316080 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x5b3f8900 musb_queue_resume_work +EXPORT_SYMBOL_GPL vmlinux 0x5b4cc463 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5b520767 regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5b65c85d wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5b6a71b9 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b72f33e regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5b8da080 sdhci_cleanup_host +EXPORT_SYMBOL_GPL vmlinux 0x5b9e30ad gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x5bad4167 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0x5bb6bb5d spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5bbd5bd2 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x5bca223d devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be0542b pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0x5bf66f9c ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x5c005f89 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5c05b933 tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x5c18af37 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x5c26f451 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x5c2b0a38 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c5665bf security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c685f58 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x5c724709 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5c7631e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x5c952eb2 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5ca22b24 led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0x5ca27daf skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cbf491f gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5ccecbcb __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x5cd719c8 crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x5cd9612c ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x5cde876f xhci_mtk_check_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x5cdf57f4 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x5cede61a crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5cf325bc blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x5cfcdb16 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5d03fed7 scmi_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x5d08d43a mtk_smi_larb_put +EXPORT_SYMBOL_GPL vmlinux 0x5d0a84c9 mtk_pinconf_adv_pull_get +EXPORT_SYMBOL_GPL vmlinux 0x5d31f97e mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5d35b43f __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5d5980c3 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x5d60e5a2 fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x5d708f99 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x5d715b0d crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5d71cc5c rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d9d49ca ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5daf763a fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5dbe4631 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x5de5ab59 dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0x5df778c5 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x5dfe35bd dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e0c550e snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL vmlinux 0x5e12ecc1 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x5e1b9961 of_reserved_mem_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5e1e080d devm_thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e2115ba sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0x5e36f080 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x5e3a373c devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x5e47b0f5 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e526968 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x5e67b71d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e7ed468 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e8b0860 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5e8d08f2 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x5e9841cd genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x5ea57b88 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x5eb368ad ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x5ec57a1e snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ee07278 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x5ee8fba1 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x5f00badb fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x5f02b72d __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5f0ee569 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x5f1a77c6 security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5f2ce97d crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x5f5383ce kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x5f551dbd xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x5f585af3 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x5f5aebc2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5f607b21 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f6ef280 led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f808bdd serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f850f0f devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f8672ec wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5f904dae bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0x5f92aad8 i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0x5f97f6d4 pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0x5f9e1a1a __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x5fa3a75f pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x5fab7490 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x5fbcdb8e clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5fc44681 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5fca6ee6 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x5fd034e6 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x5fe7a3e7 perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0x5ff21923 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x5ff27091 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x60033020 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60078704 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x602aeef0 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6052ed89 debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x6053830d sdhci_request_atomic +EXPORT_SYMBOL_GPL vmlinux 0x60558987 ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x60671345 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x6077fa15 devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x607b8ff3 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x607e794c page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0x6083fc0a __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60bf23f7 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x60c01e56 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x60c2dad1 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x60e41278 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x60e531c4 usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60f4553f ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x6114aa49 hisi_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x611a7a4c device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x611b07a6 regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x6131355f devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0x614150ff __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0x614782f1 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x614adcb7 of_overlay_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x616048c9 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x616aa667 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x616bdfce led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6194bf33 gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x61a65a21 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x61ab4d9a regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0x61ae420f devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x61af2524 virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x61b1860e ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x61c9320a acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x61d2a79c of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x61d9b802 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x61dc6ddd devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x61df4cfc blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x61f574e1 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x62031367 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0x6203a470 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x62078913 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x6214920a tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x62216cbe usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x62425663 bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x625d5b3d ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x6273eee6 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x628d2475 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x628e20f7 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62d0e2a6 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x62d4962b param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x62df0bc5 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x62e3d653 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x62f0fccf pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x62f3b62f of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x630fd2b5 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6316f57a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x63221b95 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x632ad653 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x633be66c pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x63538348 nand_soft_waitrdy +EXPORT_SYMBOL_GPL vmlinux 0x6353c730 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x635580fa phy_get +EXPORT_SYMBOL_GPL vmlinux 0x637b45cf fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x637d0d14 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL vmlinux 0x63842567 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x6387672c snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x638a85b3 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x638d9f99 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x6394143f wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x63b5824f snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63de9697 snd_soc_dai_action +EXPORT_SYMBOL_GPL vmlinux 0x64014217 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x64091fec spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x6409598c nand_reset +EXPORT_SYMBOL_GPL vmlinux 0x64130214 cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x642390e3 regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x642d3170 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x6437b09a fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x64477660 vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x644bfdcf trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6481c65e of_reserved_mem_device_init_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6485880d devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x6493994c xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0x6493a2df rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x6499ca92 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x64a2c7e7 meson_clk_mpll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x64a84255 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x64bead33 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x64c07d32 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x64cdf082 xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64de0eca tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x64e22a08 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64ee2011 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x64f1be87 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x6506e8b6 bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x65284995 efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x65289755 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x6543ec96 spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x6546a1b9 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65537437 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x6555dfff iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0x6575ce1b mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x6585944e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x6592a643 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x65bb8400 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0x65c6e39a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65dca720 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x65def01d mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x664d2f5e snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x664d8554 snd_soc_get_dai_id +EXPORT_SYMBOL_GPL vmlinux 0x66515994 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x6666b8ba kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x6670570b devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x667eddea pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL vmlinux 0x66a72617 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x66aaac41 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x66b26b2b clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66d57f37 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f5fe89 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x670e23a8 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6710095a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x6719a5de __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x672f2ea9 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x67444919 snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL vmlinux 0x6781513c __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x67844935 crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x678d4faa pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a508ae regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x67c7a7c8 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x67d4c062 hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x67d6fad7 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67dcec97 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x67dd4f2b cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x67e43bd9 snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL vmlinux 0x67f2b7b8 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x67fdd7c4 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x6808912d devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0x6817a30c wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x681e5c43 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6836ee95 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x683b555a alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x683f06ad iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x685d3e76 sdhci_set_power_noreg +EXPORT_SYMBOL_GPL vmlinux 0x68645f24 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x68708ad6 mtk_pinconf_drive_set_raw +EXPORT_SYMBOL_GPL vmlinux 0x6870e01b devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x687fca31 imx6q_cpuidle_fec_irqs_used +EXPORT_SYMBOL_GPL vmlinux 0x68806cf2 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x6891f85e do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6894835c __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x689675ba usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x689d4785 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x68ae3fc4 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x68aee36d snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x68b0db87 serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x68b44f4d of_pci_get_max_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x68b6e30a platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x68c6d156 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x68f026ca tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x68f19f8a ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x68f34e2d phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x68f37e9f __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x68f87c5a amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x68ff7add snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL vmlinux 0x690ad252 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x6913865a trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x691c0b0d pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x691c85b6 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x692098e2 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x692a4f08 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6944962e iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x696a4590 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x696f2b63 of_changeset_init +EXPORT_SYMBOL_GPL vmlinux 0x6979b611 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6992dd3f sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x699fbaa1 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x69a95b5f arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x69c1a5d8 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x69c7d375 ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69edc9a6 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69f908f7 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x69f91007 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x6a000adf mtk_hw_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2f8b14 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x6a38fa6c fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x6a44e3e6 trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4f59d7 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a72aca2 serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x6a9fb15a put_pid +EXPORT_SYMBOL_GPL vmlinux 0x6aa5e412 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x6ab1c8bb xas_store +EXPORT_SYMBOL_GPL vmlinux 0x6ae53d00 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6ae641b6 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x6b05a0dc gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6b0e9bae crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x6b18ff7a sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x6b1c3803 pinmux_generic_get_function +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2afd12 sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0x6b3199af mtk_pinconf_bias_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x6b334acc trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b437e62 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6b4560ed fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0x6b459469 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0x6b4c6d26 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x6b541156 perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x6b6bca89 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x6b72e663 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x6b7442d6 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6b784e45 fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b91f823 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6ba15c51 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x6ba8b314 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x6baf7999 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x6bca0505 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x6bce93d8 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6be18e1d __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x6be23673 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6be5993b pinmux_generic_get_function_groups +EXPORT_SYMBOL_GPL vmlinux 0x6be8527c regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6c00cd63 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c00d70e regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6c0de629 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c43b737 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x6c47380f balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0x6c4a819b snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c631129 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6c65fde1 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6c67c511 devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c7ef723 devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cc41bb4 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0x6ccb2af5 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x6cd17e49 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x6cf9ac91 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x6d097ddb __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d0b8c5e percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x6d0c73b6 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x6d161831 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x6d212d3a bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3af8b2 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x6d4095dc regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0x6d486041 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x6d6ab32d scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d794c6c mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d8747a0 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x6d931b00 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x6d986c8e devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x6d9c046c icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6da1b55b report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0x6da8168c devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0x6da96ca4 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6dae8eca blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dc3f320 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x6dc43f43 imx6q_cpuidle_fec_irqs_unused +EXPORT_SYMBOL_GPL vmlinux 0x6dcd49bd net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x6dcd5c57 usb_gadget_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x6dcfb6c4 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6dd3d0da pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x6dd463cd anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x6dd622ba of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x6de0dd5a get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x6df3a927 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x6df516e4 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x6dfabed1 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x6e0baa2c devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x6e1a916a locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x6e1ec5bd scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x6e1f9450 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x6e20216a amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x6e3a9b0c serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e4d0b80 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x6e55ed00 pinctrl_generic_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x6e56beb0 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x6e623155 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0x6e677f56 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x6e72568c register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e856217 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eb12aab free_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x6eb9e30d extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x6ebe1ef0 dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ec1861e pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x6ed01b65 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ed6a28f dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0x6ee13683 crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0x6ee614fc __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f02be50 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x6f091d04 phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f1de490 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x6f214a01 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f2f18ca ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x6f433064 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x6f538894 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x6f5724b6 clock_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f7eb066 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x6f85f94b blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x6f870e56 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6f8a9279 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fa0f5eb nand_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6fb717cf ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x6fb7e313 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x6fc0bfbf __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6fc855f7 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fd0d0ae regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x6fdfdc64 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6fe04c1b skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0x6fe91d35 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x700708ca devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x70086c68 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x700db22c usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x70179b73 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x7017b04c crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0x703380e5 blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x703b5037 extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0x7046fa61 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x704ab145 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x705f6537 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x7063b00f ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x70664aaf serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7094f925 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x70952dd2 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0x7095666e fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x709d3832 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x70a57ae6 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0x70a8eb75 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x70afef5f perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x70bf09f2 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c6d827 mc146818_set_time +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d69b9a __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x70f39840 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0x70f6e7d0 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x710c2183 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710e0179 omap_iommu_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x7123b160 snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x71299ecb dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x712dd15b pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x713238d0 scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7138f369 sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x71477d48 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0x7151e016 perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x71709904 scmi_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x719f9e07 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x71a3fb93 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x71d836b0 clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0x71e9a36a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x71eaa965 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x71efbdb5 fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71f9bf7f mtk_pinconf_drive_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x72035dda pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x72433752 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x724c0075 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x724c7b22 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x726937d8 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x726a8892 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7297aeba xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x72a5713f sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x72aee1ad sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x72b0f77d fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x72b299e1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0x72b93f62 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x72ba8a76 mtk_pinconf_adv_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x72bf8a59 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x72d0a7a3 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x72d2b7fa __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x72d4cd79 pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0x7304e1e2 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x730a98a4 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x730eaf66 __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x7313638e to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x7314b8e2 blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x733ef9f2 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x734e6517 sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x73532010 usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL vmlinux 0x737676f9 serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x738022a7 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0x738414fd usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x738422ee iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x73871f38 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x739d0b99 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b1f197 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c089ff pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73daccb3 devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x73f1aab7 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x73f85562 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x74061da0 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0x7419cabf platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x742489b1 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x742d3ff0 snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744fa0fc regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7462e7b4 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x7483b6b3 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x7492be1f rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x7493d37b __put_net +EXPORT_SYMBOL_GPL vmlinux 0x7497687a snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x74b201d6 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bbed77 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x74bc45b5 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x74bc88ee pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x74cbc07e noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x74dadf13 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x74e1e0d5 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x74e2ec8e dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x74f129be iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0x74fbee18 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7513b5ec __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x7518e0a1 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752b75b3 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x753924af tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x75424683 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x75430c34 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0x755ae3c8 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x756c1090 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x756ef6a5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x7573655b device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x75783ca0 devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x7584a241 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x75896edb udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x758a08a6 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75933297 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x75a58e08 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x75b2c65c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x75bf6cc0 is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d74c97 mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0x75dd4ebe of_overlay_remove +EXPORT_SYMBOL_GPL vmlinux 0x75e02fc9 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f987b5 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x75fb9062 arch_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x761bb6da blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0x762c9cf5 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7631727b ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x7636b0a7 reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x764d46be netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x764d6bce of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x764e101c devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x764ec898 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7651ce00 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x7658f2b0 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x76674530 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768a9836 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76972885 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x76d91225 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76dc5daa gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x76e10a88 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x76ed33a0 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76f03079 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x770d7a9f ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x771838b8 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x771b0a4d dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x771df30e sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772e2c26 xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x7731bd26 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x7734f991 ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x7739967d sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x7739f714 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x773ca9df iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x773f2713 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x7756ec84 clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775eeb1c sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x77683d48 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x776f2968 snd_card_rw_proc_new +EXPORT_SYMBOL_GPL vmlinux 0x77705093 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x778a52df device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x778d315d __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x77a113ce invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x77ab7d44 pinctrl_generic_get_group_name +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77aefdbe device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x77b01b7d device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x77b46ffb usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL vmlinux 0x77bb6666 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x77cc004c ahci_handle_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77eca204 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x781e1694 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x7823f5dc sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x7826f6f7 dapm_pinctrl_event +EXPORT_SYMBOL_GPL vmlinux 0x784a3789 fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x78594bcc pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x78718725 pinctrl_generic_get_group +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x7890233b serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x789b974e sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78ad0d04 i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x78b00cd5 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0x78bfaea7 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x78c4c182 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0x78d85b29 devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x78e2b10f __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x78fdfc75 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x7935eb96 fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x793a93dc raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x793e26aa virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7946de22 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794a0461 rockchip_pcie_disable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7951c889 genpd_dev_pm_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x795a2a9d ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x7962f6d4 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x797715d6 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x7988dcca pinctrl_generic_add_group +EXPORT_SYMBOL_GPL vmlinux 0x798f2917 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0x79a30423 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x79a46e17 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x79b1853b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79b34623 of_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x79c5604c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x79c91019 __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x79cdb946 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x79dc181e crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e13487 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x79ecd2e1 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0x7a20cebe public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x7a252444 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7a3a3064 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x7a3ac6f8 iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7a410378 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x7a48d06c cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a79320d skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x7a7c3420 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x7a7cbe75 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7a7f1396 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a81e665 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x7a876cbe pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x7a8f2dc6 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x7a8fb0bc mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL vmlinux 0x7a9f8028 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x7aa956a0 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x7ab6eeec dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7ac10ad8 icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ad8e8b9 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ae537a9 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x7af45f42 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x7af92859 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x7b0b6a77 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b25ae73 kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x7b25e026 power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x7b4c67ad crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0x7b4d954b clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x7b58a70d fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0x7b59253a class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b617623 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x7b776b9e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x7b7dce4b user_read +EXPORT_SYMBOL_GPL vmlinux 0x7b80d2a0 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7bde5615 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7be04a5e spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x7bec1b01 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x7bfd3be4 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x7c17f00e nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7c20576d nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL vmlinux 0x7c2956f4 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c2e0aaf software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7c44da4e usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x7c4ca2f8 bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0x7c5b58f0 led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x7c5eeb0b fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7caf0d52 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7cc431ba crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7317b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x7cdc65a0 wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf5643f tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x7cfbc43b genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x7d060461 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x7d068525 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x7d08f022 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x7d26e34c ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7d3475b4 mtk_pinconf_bias_disable_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x7d3b820f kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d7841d9 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x7d78943a ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x7d795aae gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x7d7ed1fc nand_prog_page_end_op +EXPORT_SYMBOL_GPL vmlinux 0x7d7f62d7 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x7d956e5d __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x7d9efb2c eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x7da132c5 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x7db548b3 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x7dbe72db regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7dc0b6dc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x7dc4e30c debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7dd105ad nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddc0742 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x7de14a19 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x7df9a9fa blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x7e08d3c8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7e0d1aeb pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x7e2bc8f8 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7e347325 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7e3ee4f9 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x7e40ae3b spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x7e47efdc nand_readid_op +EXPORT_SYMBOL_GPL vmlinux 0x7e489e4e snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL vmlinux 0x7e5254b8 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x7e5b87dd devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x7e5c13f7 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e69e6c5 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x7e79b13a sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e82e3ae tegra_bpmp_get +EXPORT_SYMBOL_GPL vmlinux 0x7e8b975c i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x7eb00a3f usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ebce2c9 mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x7ece998a snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL vmlinux 0x7ed2d35c snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x7edea432 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ee8412d __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7eecaeb2 usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x7eedf347 icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0x7efcb646 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0x7eff1806 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x7f014ec8 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x7f01cdfc irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x7f04f857 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x7f1e6f1c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x7f35e114 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x7f3d4826 of_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x7f4262f6 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x7f7809ad cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0x7f791f25 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f85d954 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x7f8b434a usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x7f8dd2bb bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x7f930e60 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7f9e55e8 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7fa1bdce sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x7fa720a6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x7faf4184 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0x7fafdec9 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fb2756b dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x7fb43741 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7fb7be36 fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0x7fd3afe1 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fdfbcc3 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x7fee9dab alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x801eb65d dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x80248fb6 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x802b02a8 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x8033fae3 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x80477c5a class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x8048260e sdhci_enable_clk +EXPORT_SYMBOL_GPL vmlinux 0x804bfb4f of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x8052903d __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x80669740 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x806864bc regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x806a088e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x80746ec6 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808533d1 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x808b6525 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8092e66a crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x80ac7a9c bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0x80b17b75 omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x80b66623 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x80bcb0cb edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x80c456ac regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cf1a33 pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d7c808 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x80d9d70a devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x80dfe69c ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x80e98a7b i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0x80f7d128 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x8118ce81 devm_otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8126d246 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8135b2aa add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x8135e93f crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x816c0bbd crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x817a10d0 devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x817be032 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x8192478c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x81975468 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81bb2a01 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x81bcbb43 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x81bf93e8 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x81c3d08f usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x81cea705 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x81d31a33 usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0x81d8c761 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x81f2b867 dev_pm_opp_of_register_em +EXPORT_SYMBOL_GPL vmlinux 0x81fb567b dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x820ba29f devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x821b10d8 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0x821ec7f1 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x82213df5 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x822a43b1 br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x824d6aff mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x8263380c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x826fe081 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x829385e3 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x82b30293 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x82b55fd3 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x82bad965 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x82bb3f77 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x82c311fd crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x82c3260d of_mm_gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x82c5f07a dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x82c72753 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ed1a2f usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x82ffcb4e bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x83029a0b regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x83185348 of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x831e9d70 fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0x8338321c devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x833d0031 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x8341a73c __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x836739a8 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8378935e pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x83a3652f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x83a82d1f devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0x83baa033 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x83bde121 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x83c456ff of_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x83d77a09 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x83f4969f sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL vmlinux 0x83ffef6c sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x841b4cf2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x8423ddd3 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x8438b794 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x844712df perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x8448abbd serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0x844ff557 fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845aa3dc lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x845b2069 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x8463a34a handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x846e2180 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x8483f9aa blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x849b9edc debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x84a2e43d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x84a8d0eb of_changeset_revert +EXPORT_SYMBOL_GPL vmlinux 0x84b9f876 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x84bc50c3 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x84c81f24 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x84cb8de2 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x84cc1ca5 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x84d3fc1f __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x851a30a0 sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0x851c1fae rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x852b4cf9 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x853c370a trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x8555939d xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x856032e7 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x856714cc pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x85711b84 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0x85737364 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x857385ff usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8583f29a tegra_bpmp_mrq_is_supported +EXPORT_SYMBOL_GPL vmlinux 0x858c1b60 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x85967e9f pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85aca8ec user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x85acb812 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x85b06317 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x85b3f3cf inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x85b4962e bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0x85b9266b do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85d749d4 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x85d91449 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x85f696dc devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86228fff crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x86384c42 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x86457405 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x865583d0 devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x8665230b percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8677b06b cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x8679cfad ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x867c833e sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x867e5fd2 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x86844258 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86957756 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x869ea2da snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x86a3593f _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x86a742d1 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x86b427ce clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0x86c16990 devm_of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86d68061 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x86dedb6b hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x86e7b040 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x86e7dca5 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x8702a316 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8708a697 dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x87245673 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0x8735bb7a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x87398f21 cpts_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x87564683 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x877c9d59 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x877d3ac3 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x877e5e68 synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0x87899f9c subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x878be68d rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8794d792 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x879bb353 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x879fde0d fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0x87b0781d gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x87b2b34e __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x87b72212 nand_read_page_op +EXPORT_SYMBOL_GPL vmlinux 0x87b7d617 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x87baa8c4 stmpe811_adc_common_init +EXPORT_SYMBOL_GPL vmlinux 0x87c2db3f rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x87c33135 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0x87c4f1ca usb_ep_fifo_flush +EXPORT_SYMBOL_GPL vmlinux 0x87c8eb2f device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x87d529a3 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x87d85651 tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0x87e6f854 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x87f29e3f dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x88019cdd find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x8804dde1 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x8805a073 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x880ef295 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x88279cae regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x88279d2c pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0x883ca9d7 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x885dc820 d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x88930241 scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0x88997d6f soc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88bc3f9e iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x88be8ff7 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x88c4beb4 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x88c64c32 virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x88dad729 rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x88f5226c ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x88fe643f snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x890728c2 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892867a4 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x8932aa0b serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x8942ac29 irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x89436f1e efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x8946b5c8 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895d3d20 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x896f812a mtk_eint_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x89b4eb6b rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bef563 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x89bfe270 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x89c52706 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x89f6fc57 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x89f9d73a pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x89ff1add class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a2182b3 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a3fde26 pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0x8a44a6b9 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x8a51e48a wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8a527651 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a5bc7ae usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a615b7f strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a674d72 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8a7ca372 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x8a9cffc0 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x8a9d804f usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8aa02161 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8aa4bd12 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8aad89f7 exynos_get_pmu_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abe98d2 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x8ac11ebd iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0x8ac88771 crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0x8ad4d55e scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x8ad90666 handle_fasteoi_ack_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ae8b437 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b188ad1 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x8b36ed3f pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x8b4277c3 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x8b4c5bfa blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x8b529ce4 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x8b6d2ba3 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x8b892c02 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x8b8dc35c fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0x8b91f7a7 nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0x8ba0c4ba usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x8babf072 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x8bbb4855 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8bd92074 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x8be73823 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0f0422 lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0x8c11e860 nanddev_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8c209b8e devlink_free +EXPORT_SYMBOL_GPL vmlinux 0x8c2921e2 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x8c2b697e clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x8c33d6cf of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c4ff924 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x8c5e6c2c gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x8c5fbb62 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x8c61988e nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0x8c68d301 __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x8c6bc667 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c75aee6 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x8c7bb06f tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x8c7bd877 __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c8b428a securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8ca4cbb2 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x8cada6b6 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x8caeeeaa rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8cb33061 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x8cb5474c gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x8cca0669 gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0x8cfaee66 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x8cfdf7a0 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8d18ac84 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d384694 split_page +EXPORT_SYMBOL_GPL vmlinux 0x8d423ce7 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x8d45c95d of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x8d4fc2c5 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x8d584b27 pinmux_generic_remove_function +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d609e30 serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x8d64e36a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8d6ca584 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0x8d6e4127 bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x8d79fabd fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x8d7bc776 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x8d7e2e8c snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d872906 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x8d877da8 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x8d9f7d4c rockchip_pcie_cfg_configuration_accesses +EXPORT_SYMBOL_GPL vmlinux 0x8da15fba xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x8da8b07a nand_prog_page_op +EXPORT_SYMBOL_GPL vmlinux 0x8db73b40 i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x8dbf649f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8dc11669 lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0x8dc9e1c7 thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x8dcc9c37 dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8de818bd of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x8e0d882d pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8e15135c ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e3859ac uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0x8e3bfa89 blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0x8e43680a find_module +EXPORT_SYMBOL_GPL vmlinux 0x8e4b63a6 hisi_clk_register_gate_sep +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e51a3c7 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x8e5f36e9 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8e602440 fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x8e82db91 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x8e863186 of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x8e8fc934 sdhci_adma_write_desc +EXPORT_SYMBOL_GPL vmlinux 0x8e94f7c9 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x8eaa61ac regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x8eabf7e4 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8eb798d4 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x8eb89b1e hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x8ec2e211 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x8ecf8558 __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x8ee0e9f4 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8efebfd2 addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f079f77 usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x8f0d10e0 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x8f1a8cf9 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x8f1fb25b nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x8f4d4e43 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x8f558793 mtk_pinconf_adv_pull_set +EXPORT_SYMBOL_GPL vmlinux 0x8f592c8c of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f725e67 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f997f47 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x8fbe60c9 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x8fcff898 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8fda8c8b bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x8fe67f45 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x900a86a8 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x901c6c99 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9055efc0 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x90584ffe snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x906dd327 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90803c9e i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x90809f6e crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9084c4da fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x90a35424 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x90b8c7f4 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x90d3b4d6 serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0x90d7dcb6 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x90dcb7c8 extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0x90ec0b50 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x90fe57ac crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x91166960 of_changeset_action +EXPORT_SYMBOL_GPL vmlinux 0x9118f3ba register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x9120bd27 skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x9120d438 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x91287223 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9132e0d1 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x91333b84 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x9134b361 snd_soc_new_compress +EXPORT_SYMBOL_GPL vmlinux 0x913ca5e1 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x9145d11c watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x914edfc0 blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0x91519a16 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x9156c70e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x91637e86 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x916e061e msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x91708a9e fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x91938636 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x919c0594 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x91a0df44 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL vmlinux 0x91a41668 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x91a4f560 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91a75278 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f04058 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x91f94684 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0x920321a6 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x920beb59 scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x9244abb2 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x925d91e2 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x925f2a7a iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x926fdcad ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x92777862 rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0x9282f433 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x9285ceb2 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x92a3222f pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x92a4f574 dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x92af3b30 snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92bc3d89 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d57b97 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e15e7c dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x92ffcc77 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x930b10f0 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9312eef5 of_i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x9321b325 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x933709b5 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x933ac406 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x935b2e76 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x9375c6f6 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0x93805369 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x938b3db0 snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL vmlinux 0x9396c787 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x93bc6b48 ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0x93e1b647 serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x94062060 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x940bb7a3 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x940bcf12 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x941a3d4f clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x942813e9 disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x942d15c6 iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943d2695 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x9447d163 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x94549204 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x945517c1 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x94559758 dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0x94565d24 usb_ep_free_request +EXPORT_SYMBOL_GPL vmlinux 0x9459866f wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x946c38ea sdhci_set_ios +EXPORT_SYMBOL_GPL vmlinux 0x946c9a93 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x946d849f mtk_is_virt_gpio +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x94850687 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x948f2588 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x949794e0 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x94a46c70 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b4f70c virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x94c1a6f1 irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x94d47197 fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0x94e0261e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x94e28f5a verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0x94e4cb27 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x94edf8f7 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950c55c2 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x950d3b60 inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x9521ed09 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9529f491 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x952cc716 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x952f5f55 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x95363dfb usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954dda1b fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x95506155 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x955ae82c snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9580c5a3 component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0x958c09fb fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0x958dac4b dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x9599542e ping_err +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95aeeedc blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x95bb669c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c7da06 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x95ddadc6 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x95ecfa3a gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95f02e2a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x95f7c6db __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x95f981c2 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x960e27d9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x961fd1e6 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x962d9939 sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0x9631f124 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x9635c902 cpts_unregister +EXPORT_SYMBOL_GPL vmlinux 0x964b72b7 edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9661a1c6 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0x9664d84a scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x9671a450 elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x969b48bd event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x96a151a6 gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0x96a2e07b sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x96b5453a eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x96bce2f2 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x96c2f2e7 dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0x96ca63f5 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x96ed2a27 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0x96ee4316 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x96ffac01 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9714f426 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x971d61f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x973b79ca inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x974c04de nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL vmlinux 0x974d4d87 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x977372e9 strp_init +EXPORT_SYMBOL_GPL vmlinux 0x977af35d shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x97905771 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x979d4027 imx_pcm_dma_init +EXPORT_SYMBOL_GPL vmlinux 0x97b71dc9 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97e9c698 call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x98044008 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x9808e1d5 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x9820e888 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x98275b0e find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c8aef cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0x98415006 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98561d12 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9871e686 cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x9872fac2 sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987def65 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x989c4e37 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x98ade657 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x98bdf6c0 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x98cbe22f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x98d0a184 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x98e9327b pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fc1dc4 clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x98fd2227 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x990b530d ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x995ce246 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9960a74f devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0x996bd751 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x99768324 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x998a8395 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x9997e7c2 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x99a5fbac pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0x99b7191f dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0x99c058f4 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x99d370dc i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0x99d5cf84 snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x99f3839a espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x9a048866 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a11b316 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x9a153cd5 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x9a2768d5 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x9a2b508c fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x9a412e8a devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9a5de38d sdhci_calc_clk +EXPORT_SYMBOL_GPL vmlinux 0x9a66dea6 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a788778 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9a799756 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0x9a8038fb debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9a85cfb7 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac3739d tegra_bpmp_mrq_return +EXPORT_SYMBOL_GPL vmlinux 0x9acafe13 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ad56d2d __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x9ae03ba3 fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x9ae9c3ae relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afd28b6 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x9b015814 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x9b11111c genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x9b12cb97 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x9b1d8b70 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x9b231af3 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x9b31049a crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b62f3a4 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9b67e78b pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b74b176 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9babfdc8 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x9bbd50f9 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x9bc3146c component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x9bd398c9 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9bdb2448 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x9bdd47e5 devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x9bdfc4a7 of_reserved_mem_device_init_by_idx +EXPORT_SYMBOL_GPL vmlinux 0x9be398d1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9beed87b usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x9c06c6a7 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9c07029d sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x9c0feec3 qcom_smem_state_get +EXPORT_SYMBOL_GPL vmlinux 0x9c21bada device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9c2cc15b vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x9c498dd6 dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0x9c641c2a setfl +EXPORT_SYMBOL_GPL vmlinux 0x9c686f24 pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c7af97a blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c8238e7 bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0x9c9d9291 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9ca480cc clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9cc2cba8 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd99220 sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x9ce3afa3 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9cf2e122 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x9cf909b8 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0x9cf978b9 dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x9d04bde5 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d21e783 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x9d270466 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x9d2bb0af __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x9d358861 snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x9d3983f3 edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x9d516d63 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x9d5baaa8 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9d5c3f2d fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x9d5d4362 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x9d61891d sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0x9d6e6b1a ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x9da60155 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x9daebede tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x9db52d6a perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x9dba64d7 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x9dc0d06e sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x9dda51dc ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x9de2a969 devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x9df10ab5 usb_ep_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9dfe7820 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9e016686 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e24460a iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0x9e269b75 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x9e28dbc2 of_mm_gpiochip_add_data +EXPORT_SYMBOL_GPL vmlinux 0x9e2d25ae snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL vmlinux 0x9e37c401 nand_decode_ext_id +EXPORT_SYMBOL_GPL vmlinux 0x9e37cc3d usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9e3d77ee screen_pos +EXPORT_SYMBOL_GPL vmlinux 0x9e42472d trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e52b50f blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9e5534c2 dev_pm_opp_of_find_icc_paths +EXPORT_SYMBOL_GPL vmlinux 0x9e5cfb2e io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9e65ed2b __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x9e76a08b iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x9e78780b metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9e7d0640 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x9e82b61c tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x9e875831 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x9e8a35e0 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x9e8bacdf usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x9e8dd867 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x9e9ceda6 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9ea807e4 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x9eac849c devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9eb1ec0c pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x9eba3cae snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x9ebacdb4 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x9ec944a8 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee5e40a __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x9ef83803 xhci_mtk_drop_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x9efe645e mtk_pinconf_drive_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x9f140889 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x9f26a478 fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x9f2dbf39 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x9f354dfb wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x9f3faee4 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x9f4a51ca pci_remap_cfgspace +EXPORT_SYMBOL_GPL vmlinux 0x9f54d7a8 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9f55e8e6 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9f571acf spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x9f5a1c19 mtk_pinconf_bias_get +EXPORT_SYMBOL_GPL vmlinux 0x9f6160cf null_dailink_component +EXPORT_SYMBOL_GPL vmlinux 0x9f7479b7 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x9f7ec864 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0x9fb26f94 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fcec376 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9fe4fc85 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0x9fe5caac devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fe9c826 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xa00b0c16 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xa00b9466 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xa00e4912 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xa01d423a regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xa02c1c60 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa0326db6 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xa0356402 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xa03c5690 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa04d6c2d dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa05d5d25 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xa069fe99 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa0743630 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xa09a109f crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa0c2738c fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0xa0eef7a9 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa0f63031 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xa124dab1 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0xa1263254 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xa12c9947 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xa12f2f21 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xa13e33dd of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xa1402966 nanddev_bbt_init +EXPORT_SYMBOL_GPL vmlinux 0xa1410a7a usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xa1690e3e snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL vmlinux 0xa1778c9e serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0xa1870a4d devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xa18c27c7 led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xa19ec2ee snd_device_get_state +EXPORT_SYMBOL_GPL vmlinux 0xa1a89071 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xa1b7503c is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0xa1bd2526 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xa1bfaed3 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa1c5715a of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xa1ce50b4 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1f1bd3a arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0xa1f87d67 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xa202c114 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0xa20ae1b2 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa222bf7c gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xa23a4f15 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa23b8517 snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL vmlinux 0xa23f684b __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xa252dc4f rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xa255f471 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa270d0c3 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa29270aa gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa2ac00e9 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xa2bb0553 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL vmlinux 0xa2bd25da tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0xa2c31b2a proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0xa2cb2377 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2ce4d88 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xa2d39f0a ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xa2d8dae6 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2e4b1c6 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa2ef9631 snd_soc_find_dai +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa304e008 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa3088e01 sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0xa30c2b0f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xa31f9679 pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0xa3277b93 pinctrl_parse_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xa3350771 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0xa33744aa edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xa33f18c1 mtd_ooblayout_free +EXPORT_SYMBOL_GPL vmlinux 0xa33f681f nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0xa345acdc fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0xa346975c idr_remove +EXPORT_SYMBOL_GPL vmlinux 0xa34f0587 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa369e66f alloc_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0xa3780ef5 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa37833dd rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0xa379a52e edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0xa37dfda8 sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xa380e740 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa39c4f04 of_clk_hw_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a14edc rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0xa3ab37d2 of_pci_dma_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c05fdc dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0xa3d136fa __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0xa3e09593 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa3e76608 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xa3ec5555 scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa3f35343 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0xa3f59cea pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xa3fee39c scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa408a549 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa40fed13 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa419dc12 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa42bd8af rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xa4399ea6 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa44fbefa __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0xa4514e91 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xa4591774 gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa45dc275 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa4749885 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa47a60d6 usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL vmlinux 0xa47be8fe edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa47fb017 udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4844ed7 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4ae1e0a mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4b87845 pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0xa4c28fa0 snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa4cc19b3 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa4dff1d5 usb_of_has_combined_node +EXPORT_SYMBOL_GPL vmlinux 0xa4f84c7c sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xa4fab2ca inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xa518b768 fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0xa522c625 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa53b7e80 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa53f0dd7 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0xa553a09b inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xa5884929 irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0xa598da6c sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0xa5b43d43 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0xa5b4b48a rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5e52841 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0xa5e584e2 mvebu_mbus_get_io_win_info +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6295fb1 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa6345d7e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa6367e9f cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0xa636bed2 sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0xa6419d09 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xa653165e pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa6533f3d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xa65fb3fc usb_gadget_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xa662a42b pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xa670d1e7 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa6747043 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xa6751eaa cpts_misc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa68921aa ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xa68cdc13 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0xa6a258c9 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0xa6a379e0 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xa6a976c5 nanddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b49539 akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa6ccccb8 crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f941f9 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0xa7049d95 icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa725b74e kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa73b2f68 lochnagar_update_config +EXPORT_SYMBOL_GPL vmlinux 0xa7530348 mtd_write_oob +EXPORT_SYMBOL_GPL vmlinux 0xa76eea95 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xa7735583 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xa77b9098 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xa7802e2e btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa7a0d6bf walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xa7a6b8af __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa7aaafde klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa7aec036 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa7b09f71 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0xa7b8e716 pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xa7bbf713 mtk_pinconf_bias_disable_get +EXPORT_SYMBOL_GPL vmlinux 0xa7c45329 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xa7d1cbd7 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0xa7dd0c66 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xa7e1c3bf tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0xa7ed4bf4 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0xa7ff9500 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0xa81a65a4 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0xa82d014c of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xa8414f7d pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa848820b genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa854e926 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa8590986 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0xa8691316 mtk_pinconf_adv_drive_set +EXPORT_SYMBOL_GPL vmlinux 0xa87c6b35 mtk_build_eint +EXPORT_SYMBOL_GPL vmlinux 0xa8953448 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8c14b67 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0xa8d07b31 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xa8da5f93 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0xa90bb48d ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa910d722 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xa9157dbe kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xa91598b5 perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0xa920dc0c noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xa9242b8b nanddev_bbt_update +EXPORT_SYMBOL_GPL vmlinux 0xa926c695 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xa92b7803 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93224b5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xa9490706 pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xa94f476f open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xa95133f9 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0xa966398a cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa96747cb udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa969a800 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0xa974cc33 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xa986882a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xa988b2ec platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0xa98d88b3 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa9951a52 clk_regmap_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a525a9 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xa9a998c7 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xa9b1a9e2 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa9b46a8b bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0xa9c2a588 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa9c9add5 devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9d95113 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0xa9df487f blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0xa9e05660 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xa9e12cb0 led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e30764 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL vmlinux 0xaa0360c8 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xaa073280 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xaa11004e register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xaa20838b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2c00e3 pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa655e01 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xaa657fe9 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL vmlinux 0xaa74dedc pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0xaa88ba94 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaacddf regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xaaaaf33e blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xaaab22db pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0xaad9a67a input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0xaae339c1 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0xaae74bac gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xaaecf75d perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaafaf79f pm_genpd_opp_to_performance_state +EXPORT_SYMBOL_GPL vmlinux 0xab17930b sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xab2b21bf kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xab32cffc disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xab378068 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xab378bef snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xab49ee9d dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xab4c9dac __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xab4f4b32 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xab6d8808 snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab9211c8 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xab941ef3 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xab9aefd5 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xab9cc962 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xabbe74f8 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcda29e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xabcfa03b __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xabdc5660 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0xabe0a961 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xabe8512e regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xabf24f18 pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0xabf6602b usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xabf86863 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xabffe13e scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0xac04b43c mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xac122495 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xac257b4e edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0xac323944 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xac59420a debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xac8c0d79 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0xac9c82cb __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaca81d2e devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xacac9d54 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacbe4d46 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xacccd340 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0xacefce9c cpts_create +EXPORT_SYMBOL_GPL vmlinux 0xacf11f75 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xacf74e76 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0xad023426 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad0d4cbc icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xad14ff44 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad244d29 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xad4e0a7c udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad61c581 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad67a282 __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xad6ecfce nand_status_op +EXPORT_SYMBOL_GPL vmlinux 0xad711e34 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xad7c07cb snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xad8e6cf0 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xada7d94f lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xadaa1de9 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0xade141dc tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xade1de04 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae03eb7d devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xae0b2473 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xae0da3b3 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xae137ace devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0xae2d16b0 dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae411456 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xae63ee8e usb_of_get_interface_node +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6d7775 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xae70a6a2 crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae83f199 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xaea2c00c mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaeb9b51e __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xaecf38bf __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xaef546bc thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xaef6a80d usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xaf063047 sdhci_execute_tuning +EXPORT_SYMBOL_GPL vmlinux 0xaf0f9a42 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf3fdb4c bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf4a2d60 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xaf526d9e pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf5271e7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xaf66e4b7 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xaf6dcf98 devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xaf8a501d blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0xaf9de37b fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xaf9ec1be pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xafb1cb68 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xafc6d14a wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xafe2086e snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0xaff1f419 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xaff35932 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb002a9d6 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xb00a0e5b crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb00c48fb uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb011d7d1 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xb0127120 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb0232477 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xb02d6beb bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xb032bd22 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xb04bf20e serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb04d1f7b perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb05631af spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xb065dbc1 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07d94b3 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xb07e9341 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xb085706f ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb096624b iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0xb0ad570b ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb0b10e2d mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL vmlinux 0xb0b1f9b0 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xb0b2542e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c86104 nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0xb0da373c nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0xb0dafeb4 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xb0dc237f musb_set_peripheral +EXPORT_SYMBOL_GPL vmlinux 0xb0de6d17 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0xb0ef6255 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0xb0fbb722 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb11625b9 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb11b9113 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xb11d1eee dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb12761a2 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb1296318 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xb1302295 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xb1391174 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb1750fb0 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0xb179cbed ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xb18110e0 __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1851921 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xb18b3fef bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xb1932e00 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb198a1c8 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xb1b1525c dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0xb1bc29d5 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bed2fe snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0xb1c1035c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1efb293 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xb202580a ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb2104c64 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xb21a98dd tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb229c547 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb2633f47 path_noexec +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26df5fe usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb27cb60d xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0xb27d8b52 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb28bd7b9 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0xb2932615 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xb2abf354 dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb2b6fee6 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2c5bbad mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0xb2dcae4b get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb2de4cf2 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xb2df2bd7 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f383a0 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb2fadc38 clk_regmap_gate_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3011a6b fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb30bc955 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb31a8580 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xb31c5ec4 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb32533c5 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xb363e44f sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb36582bc devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb365f716 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb371ee67 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xb378559e freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xb38469e9 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0xb38d24ff usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xb39a0256 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0xb39c68df devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb39c6f45 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xb39c7cf9 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xb3ab2237 __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb3ae618f regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xb3b08a50 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb3cf9a82 sdhci_end_tuning +EXPORT_SYMBOL_GPL vmlinux 0xb3d6a998 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb3eb2f9d rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xb3f7cdde pinconf_generic_parse_dt_config +EXPORT_SYMBOL_GPL vmlinux 0xb401b8be __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb40971e7 devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb40a3482 icc_put +EXPORT_SYMBOL_GPL vmlinux 0xb40c6376 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb4147ce0 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb41806c8 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xb41c5b2d srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xb4235f08 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb4342ba2 device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xb43a3960 imx_pcm_fiq_init +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb462bbd3 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xb474a574 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xb483200f sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xb498aa34 devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xb49de221 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xb4a5cbf9 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0xb4ad243f pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4afef8b snd_card_ref +EXPORT_SYMBOL_GPL vmlinux 0xb4b45ab6 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0xb4b78a97 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c15a44 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xb4c85355 ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xb4cc5a4b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xb4cceea3 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xb4d50b35 snd_soc_runtime_action +EXPORT_SYMBOL_GPL vmlinux 0xb4e798cd gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb506c484 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb509ead2 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb50f1ef4 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xb5176965 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53a065a pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xb551ab33 tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0xb5777a64 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb579bb17 __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xb5899c0b ti_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0xb5a1105f snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0xb5a373e5 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xb5a8056e dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xb5b0df75 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5c63984 __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0xb5dcd8a0 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xb5e3b272 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xb5eb0a9f kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xb5eb11ee pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb5ec301b devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xb5eca02f usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb638193f debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0xb64952ec ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xb64cf75f sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb65ceeef bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb68f8905 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xb69118a5 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb6918719 tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0xb6abae8e bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0xb6ad1fe7 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xb6b3facb crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xb6c14077 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0xb6c5a961 blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0xb6ca969a snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6e9f9e5 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xb702a597 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xb70d8cea sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb74538d2 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xb7491c17 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0xb74942c2 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb7641af2 sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb7772343 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xb77db4cd software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb785a3ee spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0xb791bf4c cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7aab13f trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xb7ab3839 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7b4c7af snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL vmlinux 0xb7b81fa2 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0xb7be3253 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7d1c5de security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0xb7de5a3b spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0xb7e51830 tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb7ea259a usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb7eed08b gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0xb81518c0 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xb819aee6 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0xb81aef4d mtk_mmsys_ddp_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb82d3571 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL vmlinux 0xb82eaa80 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xb84d9294 genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb86bdc17 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xb87232cb rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb8752e4d __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb87b4d8c pinmux_generic_get_function_count +EXPORT_SYMBOL_GPL vmlinux 0xb87f7184 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb88671ea __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89772f6 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0xb8c3db25 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d48f56 user_update +EXPORT_SYMBOL_GPL vmlinux 0xb90a1fcd rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xb90a5cf8 rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb9138620 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0xb9150023 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb939f0db tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb946145c proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xb94658e6 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb96d210a ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb98a039e __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb98b9616 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xb99a93f5 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb99d3629 synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xb9b0cc3a extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9f736e0 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xb9f9f9b1 phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba02f5e1 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xba1214c8 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0xba13d11b mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xba1fd22b dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba3a523b ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xba3af09a mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0xba51de6d fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0xba7ac137 __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0xba9ef4b3 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbab1b2f8 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabb99c9 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xbabbf8ce dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xbace3461 usb_ep_disable +EXPORT_SYMBOL_GPL vmlinux 0xbad08bd0 iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0xbad414d5 devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbad58730 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xbada2ff5 devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xbae6bb12 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xbaebf3f1 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1f7e14 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xbb364ab5 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xbb43095d rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbb4c7570 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbb598016 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0xbb60becd cpts_register +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb7f76bb ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xbb8e41c7 sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL vmlinux 0xbb901912 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xbb902505 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xbb92fcaf security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xbbb4a1cd firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0xbbc21c0c device_match_any +EXPORT_SYMBOL_GPL vmlinux 0xbbc9421d regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbbcc73b7 tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0xbbcdb700 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0xbbe97f4b iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0xbbf0913f evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbc11dd87 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbc1cebda stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xbc26be6a ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbc308dd6 sdhci_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0xbc377f6a usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xbc3d654a devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0xbc550232 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xbc63a1ef inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc6d8fa6 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0xbc7e42f3 gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0xbc87f1a4 fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xbca695a3 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc854cb dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0xbcc89e78 lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbccce97f splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xbccf5258 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce9cc79 regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbcf7a639 devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5faaaf wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xbd6140d6 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd688b78 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xbd74a465 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd7ad818 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0xbd9a8e96 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xbda5db96 omap_iommu_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xbdbae521 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xbde27d1a md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xbde5692f __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xbdfcfb0c pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0xbdfeb1e3 iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0xbe06a9b6 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xbe2285cd musb_set_host +EXPORT_SYMBOL_GPL vmlinux 0xbe354d97 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xbe373db3 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xbe37ef69 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xbe5ed148 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe70bd0a irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xbe84988e uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xbe898833 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea6ddc2 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xbeafb65b ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xbeb53a1e sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xbec3dc1d regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xbec5473b usb_ep_fifo_status +EXPORT_SYMBOL_GPL vmlinux 0xbec6ad3e snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xbed491ea devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbed9eb5b crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0xbee3b448 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xbefb53aa register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xbefff0a4 gpmc_omap_onenand_set_timings +EXPORT_SYMBOL_GPL vmlinux 0xbf0140e3 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf138cc9 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0xbf27485e devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xbf2f1c73 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xbf4d00cc bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xbf4eedd2 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbfb30dd4 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xbfb47fc4 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xbfb6bb11 mtk_pinconf_bias_disable_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfe053c6 of_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfecb36f sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbff30880 kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xbffc9c73 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbffce09b rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc003f744 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xc006bfb0 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc00e75ae __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc018e1a0 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xc01d5c71 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xc022cf11 direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0xc0266029 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xc02f6dc0 xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc034edd0 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xc0420b23 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xc0583e20 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc06b77b3 __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc0932aeb crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc09aa7e0 pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0xc0a36054 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c0079a dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xc0ca6264 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xc0cd3075 pinctrl_generic_get_group_count +EXPORT_SYMBOL_GPL vmlinux 0xc0dbab37 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ede07a sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f19d66 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xc0f7f609 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0xc100c35e crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc10655da xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10a6fa1 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc1135678 mtk_hw_set_value +EXPORT_SYMBOL_GPL vmlinux 0xc11e2521 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL vmlinux 0xc126b60e crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0xc129566a unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xc12fbbaa ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xc146e822 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc14b64c7 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xc14f9dde nand_erase_op +EXPORT_SYMBOL_GPL vmlinux 0xc150e423 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc173be1a pci_parse_request_of_pci_ranges +EXPORT_SYMBOL_GPL vmlinux 0xc174283c pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18bc752 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xc19c3a66 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc1a1d24e iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xc1c390e0 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xc1c4decc platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xc1d8bae5 snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL vmlinux 0xc1ddaf65 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xc1f23e15 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc213c672 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xc21853d0 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc218a220 component_add +EXPORT_SYMBOL_GPL vmlinux 0xc21b3cca devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc222ead3 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2317c04 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xc2444290 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xc262596b gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xc2674a10 dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc26a56a0 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc277c2c7 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0xc278d444 skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0xc27dc7f5 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc281cf5a ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc28c692f bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2bdb66e wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc2db7e18 xas_find +EXPORT_SYMBOL_GPL vmlinux 0xc2ea4d15 devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xc2f34e87 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc2fab1ff balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xc2fb8052 platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc33f6b71 pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34520dc trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xc3453603 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc34bace8 mtk_eint_do_init +EXPORT_SYMBOL_GPL vmlinux 0xc35c4c78 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xc36eef17 qcom_smem_state_register +EXPORT_SYMBOL_GPL vmlinux 0xc37291e0 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc383cfd8 dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xc383d6ba snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3942384 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xc39a3aa0 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0xc3ae12cc devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3d0c709 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xc3d73053 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3ef08ec switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xc3f285e2 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc3fe1213 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xc4071562 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xc40a0791 cpts_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xc4206cd2 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc42130fd irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc42b0213 vfs_write +EXPORT_SYMBOL_GPL vmlinux 0xc4476e3c sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xc4490e66 usb_of_get_companion_dev +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc457b646 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0xc463f434 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4937fde ti_clk_is_in_standby +EXPORT_SYMBOL_GPL vmlinux 0xc49f6ddf snd_compr_stop_error +EXPORT_SYMBOL_GPL vmlinux 0xc4b582e4 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xc4b75f35 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc4c27b12 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc4ce9245 dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0xc4cf2420 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0xc4e2c52d sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4f2b684 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xc513153f clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xc518c5e8 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc5445bf8 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xc553416d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xc554d76e __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc56679ae regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc57a4ffc strp_process +EXPORT_SYMBOL_GPL vmlinux 0xc57aee3e gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xc585894f power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc5934219 bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0xc593d983 tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc59ec318 xhci_mtk_sch_exit +EXPORT_SYMBOL_GPL vmlinux 0xc5a6039a pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xc5aa993a nand_read_oob_op +EXPORT_SYMBOL_GPL vmlinux 0xc5aafff1 wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0xc600d5e2 extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xc61786b8 pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63b6143 kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xc63c0bf1 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0xc6433365 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xc6444ed2 devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0xc64fecab mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc65a634b gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0xc667048e sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66c2d59 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xc6736def dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc6746756 mmc_pwrseq_register +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc6785409 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0xc67a7d67 extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xc68c9773 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a7fa08 pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc6b01e67 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc6c3ed50 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc6c496cb regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xc6d42f92 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xc6e46b2a of_msi_configure +EXPORT_SYMBOL_GPL vmlinux 0xc6e667f1 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0xc6e7a295 screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0xc6ee4ac1 virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xc6eec8f5 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc71b5c49 ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc7315315 iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0xc73b55a4 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc74b7468 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xc75267b3 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc75d35f7 handle_fasteoi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7651842 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xc771f25d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc78fc7fb pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc79144f5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xc794971a dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a5dafa hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7be666f __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc7e03783 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc7fb6a51 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0xc803b424 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0xc80864c3 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xc817740d gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xc81de083 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc844384a devm_thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xc848d8dc usb_ep_queue +EXPORT_SYMBOL_GPL vmlinux 0xc848f1db register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc853247f class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc87152ce fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc873e327 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xc8789b73 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xc8795595 spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0xc8819bda crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0xc88c13c1 i2c_detect_slave_mode +EXPORT_SYMBOL_GPL vmlinux 0xc8aafdcc fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc8b16341 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc8bdfbfc devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xc8cadd80 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xc8d6c566 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e77244 snd_card_disconnect_sync +EXPORT_SYMBOL_GPL vmlinux 0xc8fc06cf nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xc8fc5626 __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0xc902dbe5 md_run +EXPORT_SYMBOL_GPL vmlinux 0xc9080cfd pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0xc90f6d46 tegra_bpmp_free_mrq +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9129324 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0xc91ded61 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc92f2056 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc9364bf3 sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL vmlinux 0xc93b4ecc mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xc93caa01 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc944bd7f ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc9817c70 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc9863b32 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xc988def4 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xc9a1d012 mmput +EXPORT_SYMBOL_GPL vmlinux 0xc9a228ce property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0xc9aa1203 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xc9b64e29 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xc9bb959d ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xc9c1f42f unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9c78d3c skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xc9d393da sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xc9ec2445 devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f3de5e pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc9f4de70 of_property_read_variable_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xc9fb00f7 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL vmlinux 0xca0b7cce snd_soc_lookup_component +EXPORT_SYMBOL_GPL vmlinux 0xca12f97c of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xca17dfc5 of_property_read_variable_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xca1bcc12 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xca2b81f5 clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xca2ec968 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xca30fa89 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xca32fa61 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xca3ab270 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xca467318 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xca62d265 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xca666e24 sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0xca683870 __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca6b912e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xca759a75 gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca870163 switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xca88dada regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xcaa71f39 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabe1206 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcabe68b6 ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0xcac45fc4 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xcad805df efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xcade6d41 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0xcae60de3 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xcaeab027 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xcaf27af9 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xcaf4a30b ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xcaf7bff3 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xcaf845bd ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0xcb0a447c nand_gpio_waitrdy +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb330b3d of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0xcb4ed46e nand_ecc_choose_conf +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb5f4a08 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xcb81776c snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL vmlinux 0xcb96d84f pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xcbbc30a9 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcc07eb7a led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0xcc0c7578 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcc1f7703 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0xcc20ac52 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc312197 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc44acd1 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xcc598794 security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0xcc691ab5 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0xcc71be8d lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0xcc7d46b6 rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc81ef86 fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0xcc994a9f usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcc9e76c4 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xcca2e25e regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xcca882a8 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xccaba888 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xccbe13e2 dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xcccb10a7 tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd049e3 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0xccd344ac devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xcce1cd57 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xcceedea2 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xccf6c344 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xcd015ac7 mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0xcd15a15e pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd27e2c0 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xcd28e5cc iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0xcd2c38fc of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xcd2e8fce cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0xcd3bb4d2 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xcd55886e snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0xcd5a2004 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcd61918d usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd8368c2 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xcd8ca08a sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xcd906368 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd94d159 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde1d97a rockchip_pcie_get_phys +EXPORT_SYMBOL_GPL vmlinux 0xce009978 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xce031fd3 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xce2e7e0c snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xce325405 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xce32effa tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xce37e416 devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0xce4bc9cb sdhci_cqe_irq +EXPORT_SYMBOL_GPL vmlinux 0xce4dd8b3 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xce4f823a crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0xce4ff082 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xce5143c3 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xce553d39 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce562fd1 sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xce56fbdb usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xce6b30a3 tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce6e1630 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xce95d599 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xceab6a90 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xcebd3fa6 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcec811a4 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xcec93c92 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xced3d542 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee54322 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xcee88e7a of_overlay_fdt_apply +EXPORT_SYMBOL_GPL vmlinux 0xcef4d5b4 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf00a7ad dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0xcf0991f5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xcf0e71c2 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xcf28f55e trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xcf2f916d sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0xcf4521db dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0xcf45d0e4 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xcf484b50 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf788afe shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf79ee8b vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0xcf8d72d7 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xcf924c3f sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfc7c3ed tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xcfed453e irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0xd0097a91 devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xd010ce60 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd0213e2b devm_of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xd03b936d inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd0569136 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0xd0575ab7 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0xd057a357 bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06ecd9a __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd0707a0d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xd099c5c1 devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xd09c3fe5 pinmux_generic_add_function +EXPORT_SYMBOL_GPL vmlinux 0xd09fa27b iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0xd0a00623 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xd0a50642 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd0b26cf8 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c553a0 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd0c79604 iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd0cce5f6 of_get_named_gpio_flags +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0f90f80 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xd0fe6c36 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xd0fe6e04 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xd101762c power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xd10cda59 __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xd12159a7 stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0xd13d0580 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0xd142f6fe ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd1620dec iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0xd16228ab noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xd16a76b3 spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0xd16aeb37 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xd16c9628 icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd173a2ff strp_stop +EXPORT_SYMBOL_GPL vmlinux 0xd18e7239 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xd1962fcb rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd1969c4f devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xd1b0a33b dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0xd1b4ace6 rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0xd1c1a17e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd1c54073 clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd200993d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd203eaa7 snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xd20a9c3d regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd213dedf __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd21cb4fc alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xd21d58e8 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xd22dae7b usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xd2306115 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0xd23858fa of_find_spi_device_by_node +EXPORT_SYMBOL_GPL vmlinux 0xd238ad09 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd23d2036 of_genpd_add_provider_onecell +EXPORT_SYMBOL_GPL vmlinux 0xd25dd478 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0xd25e1350 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd266e5eb gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xd2682ccb phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27d7d91 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xd286c953 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd2922323 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd29a8b7f security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xd29f2a6f device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xd2a10307 usb_gadget_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd2a3b316 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xd2ad3f07 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2d05ef0 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xd2dc87a8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2e6b444 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd2ec82bc devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd303ead4 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0xd31197f5 sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0xd315aa8b of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd320930d dax_inode +EXPORT_SYMBOL_GPL vmlinux 0xd330b7da blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0xd339d793 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd33acc1f pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3564841 peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd3660687 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd367d290 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0xd3738f35 __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0xd378022e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd37cde94 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd38fbf27 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xd39071e6 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xd393d177 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xd39712ef iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3ae7a63 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd3af446b wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd3b67187 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xd3ba9f45 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xd3c227b8 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL vmlinux 0xd3d8b68c devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xd3e832ee alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0xd3f62a7e generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd400c9e8 musb_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd405e8ce bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xd406d0bb bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL vmlinux 0xd432ca9f iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xd435f294 skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd454d9b2 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0xd4621941 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd46ae9b9 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xd46cc2ba device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xd474bb62 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd492ae73 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xd4999edd crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0xd49c4559 i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0xd4b108eb badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0xd4b4c17b rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c15442 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd4e90707 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4f6d2fc __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xd4f77b9f blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xd500769b regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xd5032cd9 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd53e1b50 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xd540f301 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL vmlinux 0xd54b313b nand_deselect_target +EXPORT_SYMBOL_GPL vmlinux 0xd54b4c92 bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xd5563dd7 set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd562853b snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xd56e0b32 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd575c74d cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5a25d13 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xd5aa33eb nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xd5abe1f9 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd5ac24e5 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xd5b3f00c devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0xd5e2423f percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xd5e5f76f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xd5ec0ad9 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd60854a7 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6164816 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0xd62228ad edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0xd62e56e6 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xd637e850 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xd63ce82a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0xd64618ab hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd653b126 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xd667b39a soc_device_match +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67c99b6 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd67e555a ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xd687e87d rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd6899af2 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd69038cb icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0xd69d5768 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6a74ef3 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xd6c2a739 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xd6cee0d3 skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xd6d51261 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0xd6d73a76 musb_root_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xd6f8d853 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xd7010d7e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd7092819 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xd70b78ce devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xd70baa59 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0xd70bcbc0 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xd71f73e7 mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL vmlinux 0xd72ce666 input_class +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd7414c5e phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0xd7614723 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd766e8f2 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xd767c02a ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76ed683 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0xd77cbf8d fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xd7979ccd skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd7b411cb __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xd7c35343 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0xd7d08deb switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xd7e04bd6 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xd7e9b8ff __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xd7f73970 rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0xd7f8c8f2 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xd80829ac fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xd81bbe58 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xd81ecd19 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd8267b15 usb_of_get_device_node +EXPORT_SYMBOL_GPL vmlinux 0xd83a6400 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0xd83b4213 virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0xd8497d56 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd84b33b0 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd8585277 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xd86aaa90 mtk_pinconf_drive_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xd87a11cb dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd89b3769 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xd8b4a6f4 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xd8c2cdd5 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xd8c8bdee vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xd8cb85fe fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xd8d24416 hisi_clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xd8d654ca list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8d9d79e is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xd8dca8c1 usb_ep_set_halt +EXPORT_SYMBOL_GPL vmlinux 0xd8e0372c ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xd8efea81 dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xd8f86817 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xd902f9f8 regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd9104446 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd92f32cb phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0xd9375c1c of_map_rid +EXPORT_SYMBOL_GPL vmlinux 0xd93c5466 pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0xd93f5183 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd94388e5 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xd94b587b snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL vmlinux 0xd95dc029 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd95dd8bf add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9885c82 tegra_bpmp_request_mrq +EXPORT_SYMBOL_GPL vmlinux 0xd989dac3 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd990395c crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xd99ee6de skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xd9bde299 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0xd9c2fafa crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xd9c399a3 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd9cac481 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9e328a2 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0xd9e98100 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xd9f3e65f __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda0a0e84 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xda1129c8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0xda124eb9 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0xda1c802b bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0xda20df4a ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda3761e7 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0xda45c2ca md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xda6b86b7 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0xda6dbfdc serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0xda7c46c6 regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0xda85ed66 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xda8cc3b9 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda938d6f __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0xda93dbf1 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdaa0b752 sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdad435d6 pci_ecam_free +EXPORT_SYMBOL_GPL vmlinux 0xdad607a0 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xdad9e259 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdaeaa820 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdafc7da7 iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdafee6b4 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0xdb0e61d0 iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0xdb242ecf __register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xdb254e0f phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb45b8cc inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xdb76c2c2 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xdb7ae8a1 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xdb7d1a84 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba22696 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xdba7c24c sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xdbb4a89f usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0xdbc1967f md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xdbcdfc4a dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xdbd61ed4 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xdbdf2eed gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xdbedc17c ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0xdbf2fb17 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc01fc71 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xdc09904b sdhci_reset_tuning +EXPORT_SYMBOL_GPL vmlinux 0xdc1ae6ec securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xdc1c7acd snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xdc3eeddf bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0xdc4f576f arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc50c8d2 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc57e0df fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc6eb1c1 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0xdc7ce353 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc86e59f efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9eb827 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca09bd8 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0xdce032b9 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdcf005f8 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0xdcf5f5fb led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xdcfa7163 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd0fd236 hisi_clk_register_phase +EXPORT_SYMBOL_GPL vmlinux 0xdd21316c nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0xdd2505a0 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xdd26a3f1 devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4107ce __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0xdd4d043d mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd69c88d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xdd7eeeab tegra_xusb_padctl_legacy_probe +EXPORT_SYMBOL_GPL vmlinux 0xdd7feb92 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd85063c lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0xdd8bc0b4 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xdd8c8e7b sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xdd9c7a5f md_start +EXPORT_SYMBOL_GPL vmlinux 0xdda2a5e6 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xddb83f7e dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd3d381 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0xddd6a7be devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdde35496 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xdde3c722 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdde4b384 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xddef345e pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0xddfd75ab omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xddffbec1 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xde0a98ee inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xde0c0d4a fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xde217752 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xde25f88c __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xde2a9893 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xde3258fc validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0xde364cf6 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xde38b027 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xde3c396d __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xde413845 nand_write_data_op +EXPORT_SYMBOL_GPL vmlinux 0xde54fdb4 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0xde60a699 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xde6500a7 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde6f5b68 clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0xde710efe snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0xde962b81 irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0xde96b720 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xde9ed614 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeab2b69 devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0xdeb180c3 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xdebd9f8d driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdecf772a phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0xded58269 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xdefa4406 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1b1254 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xdf20bd51 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xdf255dcf memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf2bb368 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xdf3664be devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdf54cb4c of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xdf67bd66 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xdf78aadb kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xdf7b8b3c __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdf7d36b9 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0xdf7fa33b __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0xdf900506 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdfae6b7a rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0xdfb7b00f sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0xdfc03cd7 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xdfc1805f pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0xdfc8ae8a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdfc92595 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfdabde2 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0xdfe3a0f7 fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xdff60447 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xe0022ea7 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe02498f9 dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe030549d crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe034b822 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0xe03ad687 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xe04be2f4 snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0xe04e99d7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe0506377 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe0713cd6 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xe07615f9 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe078f129 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xe08b3da7 snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xe0950540 dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0xe09ca8c6 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xe0a80509 usb_ep_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c75c0c fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xe124944f scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0xe126553f __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe13f07eb irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe14ac753 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xe1502545 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xe1653a54 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe168aaea __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0xe19d88fd devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1bf0639 gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1cb379d inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xe1cd2e1a relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xe1cfa261 __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0xe1e12c8c clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xe20aff6c irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe218c900 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xe231cd60 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe238b2c1 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xe23a6c55 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xe241541d tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xe25c60ec regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe26306e1 hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0xe2717792 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xe2740acd cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0xe27d6a7f crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0xe282ac35 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xe286b454 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xe2972fbb sdhci_set_power +EXPORT_SYMBOL_GPL vmlinux 0xe29fe531 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xe2a98edb netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2df51a8 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe2ec4a67 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0xe2fa2b77 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0xe301a065 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe318a4c8 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0xe3314acf handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xe331e165 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xe3395963 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xe34c63f0 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe35277bd ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xe360e972 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xe37009bc clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xe3801eb4 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xe38704d7 clk_register_hisi_phase +EXPORT_SYMBOL_GPL vmlinux 0xe39167a6 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe39fc2be mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xe3a17f04 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0xe3a90858 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe3afd49c encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3bb45d5 iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3bd07d1 extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0xe3cf4b58 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xe3d06a82 dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3d964f3 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xe40260ca skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xe40b524f dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe41833e4 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe41ae0ca phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe41f4eb5 nanddev_markbad +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4309c1d check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0xe4408dde handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xe448dcad sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe449aeb5 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe470518b sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0xe47dface devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xe480d8e1 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe4954950 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe499dd68 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b08f98 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0xe4b15700 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe4b37955 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4bfe175 usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4c9f178 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xe4d47ea4 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe4d5d41e devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4e6ba35 spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xe4f09f27 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xe51143a7 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe52025ae cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xe52ae5bc set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xe535e753 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0xe554a884 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xe56cb56b snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL vmlinux 0xe57003b8 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0xe57b993d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe580adc6 snd_soc_dai_active +EXPORT_SYMBOL_GPL vmlinux 0xe5815ff9 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xe58558fe mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0xe5870574 xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5927967 dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xe59db730 devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL vmlinux 0xe5c04952 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0xe5c6b7b4 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe5cb1943 hisi_clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe5cf3dd7 devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe5d49310 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0xe5d4b295 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe5d7409c alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xe5eec47d snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xe5f2519f tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0xe5fbed1c of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xe5fd44a6 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe603c2fe badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0xe6045877 of_property_read_variable_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe61d24a3 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe626bee4 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe656a2dd relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xe66943e1 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe670ae72 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe684dec9 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0xe6a257f1 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6a6eced call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe6ab43fd devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe6d81d31 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xe6e341ff irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6e3f04c devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe701cff2 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0xe714da01 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe71a4ae6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xe71d756a generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xe7262c6f show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xe72bf2c2 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xe736b9cf cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xe7371fb8 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xe747297d xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe74c80c6 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75625fb cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe762400b bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77006e6 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe775b60a sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0xe77a0712 seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe77ca434 phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe7853836 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xe7a8ee90 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0xe7acf59d of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xe7b1a233 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xe7beaf28 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xe7cded8c pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xe7d55d7f dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7f204ee edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81d150f switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe8200d3c __sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xe8273263 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe82bde82 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe82e9f4e dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xe8466a39 vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe860e5e6 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe864cd1b serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe8656788 dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe8691edc nl_table +EXPORT_SYMBOL_GPL vmlinux 0xe8715ee5 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe87b6e4c sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe88b95b0 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe8a3fd2a dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xe8a7b60d vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xe8abe27e tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xe8b34372 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe8b64725 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xe8b848a2 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe8bc2b67 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xe8bf5702 metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xe8c3999b sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xe8cf340c snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xe8d538ac pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe8e26fc7 pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0xe8eb2b37 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe8f856ef regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0xe8fd5583 nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe900cc2b __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe90619e6 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe90f5582 serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0xe9127fd3 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0xe9140521 usb_ep_alloc_request +EXPORT_SYMBOL_GPL vmlinux 0xe9334378 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94285ae pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe96cd629 gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0xe98cf384 mtk_pinconf_bias_get_combo +EXPORT_SYMBOL_GPL vmlinux 0xe9931f9e fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0xe9a94157 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xe9aeba4e iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe9c616de cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d26bc5 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xea0910fc sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0xea105b6a usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0xea114216 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1b5f3f of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea1bc2e1 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea4a09cb mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xea4eba7d of_usb_get_dr_mode_by_phy +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea637207 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xea637736 of_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xea676f82 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xea7c9d64 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0xea83ce75 snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xea8cc570 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xea974d62 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeab0a925 nanddev_mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xeac6495c ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xead2e457 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeae23c65 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xeaf62044 iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb09add7 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0xeb0bdb17 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xeb1d902c sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xeb1ec34b phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xeb2cbe6f __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL vmlinux 0xeb37e24d serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb475978 cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xeb640c70 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL vmlinux 0xeb6413ea clock_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb6e63b4 of_clk_hw_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xeb6e90de serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb77a01a blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xeb87b883 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb9211c edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xebbe1622 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xebbf7e2f rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0xebc512b0 devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebe4519a led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xebf34d25 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xec07cb9c disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xec0f481f serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xec0f8740 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xec20a843 device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0xec314e29 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xec47e98a nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL vmlinux 0xec49980a rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xec5adfee cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec69c109 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xec6fd20b irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec8466a8 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xec904029 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xec9e33e9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xeca7c161 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0xecb37061 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xecb6d96e fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xecb70831 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xecbec45f ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xece22bfe regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xece34b98 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xed032a72 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xed0baf05 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xed12d4c5 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0xed2f77ae crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xed344146 mcpm_is_available +EXPORT_SYMBOL_GPL vmlinux 0xed35f0f8 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xed3807e9 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xed388b41 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xed38c848 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xed40899c of_genpd_add_provider_simple +EXPORT_SYMBOL_GPL vmlinux 0xed40c72b mtk_pinconf_bias_set_combo +EXPORT_SYMBOL_GPL vmlinux 0xed4ca732 dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0xed694354 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0xed7bee0b posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xed8bbe99 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0xed9937b5 bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0xed998092 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0xedb0352c sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xedb3561d decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xedb6afd0 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xedc8756f snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0xedcc0b10 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0xedd12504 shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0xedd82fd9 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xedd8602e rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xede8d631 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xedf36763 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xee030c9e lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xee0d6213 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xee0f82c0 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0xee15d306 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xee19dece fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xee1ce7bb sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xee282e42 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xee38806d platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee41e26c dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee78c24a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xeeaf34a2 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xeed21e98 mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeedfcfb2 irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xeee1f3d9 rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0xeee7de5e adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xeef230f3 gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xeeffdceb rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xef081167 lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef3f0d1b blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0xef43621a of_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xef456ccf relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef65a3cf blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef79d5f0 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xef81bc90 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xef83eed1 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xef8cef27 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefaace6e mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0xefad5107 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xefaebe84 fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0xefc72784 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xefd51482 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xefd71dc3 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xefe6989c skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xefeccd00 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xeff0214e gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xeffe3e33 of_platform_device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf00bc4e2 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xf017b394 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf025b524 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xf02780fb perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xf03681fd genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0xf03748cb snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xf04db245 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf04f09fd dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xf061699b dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0xf06ced30 spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf07970bf fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0xf07ee7cf cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0aad129 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xf0acac5c xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0xf0cf08d8 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xf0efdc71 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xf0f6e5fa uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0xf10a6999 usb_role_switch_register +EXPORT_SYMBOL_GPL vmlinux 0xf10c565f irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf119a642 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf15752e5 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf171f358 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xf1847a76 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1894acc pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf18fd98e led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xf19375a7 nanddev_isbad +EXPORT_SYMBOL_GPL vmlinux 0xf1a75893 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0xf1ad68ff skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0xf1afdc9c devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1bed159 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xf1c0ac63 __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xf1c8c76f pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0xf1fa06fe pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf1fae6a3 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0xf20132b6 devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0xf215162f crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22131a1 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0xf236c032 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xf23d4b36 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0xf2481a5f rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xf25ec466 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xf2698f21 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xf26db454 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2aa2967 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf2af5841 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xf2cddd33 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf2d6b0ff sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0xf2d6b438 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xf2e05215 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf2e282e9 edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0xf302568d __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xf304c8d8 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30a6c0e tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf3165f53 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31d58ab snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xf324d475 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xf3257281 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xf32d2fbd dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3388e9e posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf342fd5d freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf34c1fd9 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xf375bb3c shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3974db5 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xf3985e8d relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3da4288 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf3dd478e usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf3de705c snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xf3e4355e skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xf3e99ce0 handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xf3ece5ee clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0xf3ed03bc raw_abort +EXPORT_SYMBOL_GPL vmlinux 0xf3fdc7dc kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xf4028e58 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf4039457 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0xf415297a mtk_pinconf_bias_set +EXPORT_SYMBOL_GPL vmlinux 0xf421a7fd extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0xf42fec93 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xf44579d7 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xf447f124 iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf453b82f mtk_eint_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xf45cf578 regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf46216f4 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf4627749 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf468a9f0 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf46b0064 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0xf47de486 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf4877697 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xf48ceebd net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf48ebcc6 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf49c680a fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0xf49c8179 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf4a034ba get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xf4a06bcc sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b4a02a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xf4b58db5 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xf4c45e6c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4c6b529 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xf4d42ecc dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xf4d4440b ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4f4676a tegra_bpmp_transfer +EXPORT_SYMBOL_GPL vmlinux 0xf4f69d1f clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0xf527cbb2 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0xf52abbc9 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xf52e14e9 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xf5468929 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf546ea23 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54f2d84 trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b6e72 rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf55bb665 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0xf569bb5f pci_ecam_map_bus +EXPORT_SYMBOL_GPL vmlinux 0xf5761c3f devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf578c642 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xf5994fee ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b7e6e7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xf5bac791 devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf60c7675 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xf61af7f7 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0xf61baa65 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf61c2183 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0xf62b7e37 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0xf641bb4a ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf65fb4ea devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf66a2170 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xf67ca4a9 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xf67e1307 snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xf6989fd4 fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf69b1622 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0xf6b737b0 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cc3ea0 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0xf6cc4f46 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0xf6cda760 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf6f4b201 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xf71a7ca7 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf71b9690 regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0xf730fb4a qcom_smem_state_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf7340f23 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bc943 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0xf74d21a7 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xf75a7944 sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf77c319a irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0xf7842d8c snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0xf7864d0f rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf7920d26 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf7984b21 fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xf7ace7ed clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xf7b4bbcb sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xf7b969d5 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7c96f0d mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf7c9b693 hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0xf7ca651f unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf7cc1035 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf7e60838 sdhci_switch_external_dma +EXPORT_SYMBOL_GPL vmlinux 0xf7eb2326 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xf7ede0e7 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xf82c2564 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83fa0cd fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0xf84607ba cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf8731bf6 clk_regmap_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf88e0d25 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xf8a0bd5c regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf8d5a622 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xf8e8a3c0 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f6b6d1 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf8fad15a irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xf902ac4c snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xf903f26c dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xf90fa24a ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xf9129e64 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xf91afa77 devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf92230c1 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93e48ba snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xf948f55d ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0xf952292a of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf956c7f9 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0xf9571e9d do_truncate +EXPORT_SYMBOL_GPL vmlinux 0xf9646e69 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xf972d809 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xf97447d1 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf9859480 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xf98c5319 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ba36e9 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf9cff44b spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xf9d129df klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xf9e56193 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xfa008bf7 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xfa03858a sram_exec_copy +EXPORT_SYMBOL_GPL vmlinux 0xfa090853 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfa152c3e ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xfa1945db irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1a8d6e pinctrl_count_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0xfa1d8a56 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa40c5be key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xfa4f3b50 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa6e6f91 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xfa6ed097 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xfa754f14 virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0xfa782602 pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xfa82f473 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xfa848e1d devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xfa919adf fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa92a02 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfaba248a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xfabbc367 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xfacfeeec fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfadcc497 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0xfaeef376 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xfb03c33c serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0xfb15b40b dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xfb24d4ab blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb27fa14 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xfb2aabda unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3382a5 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfb4550f8 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xfb4ca2f1 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xfb51f520 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xfb6083bc usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfb6b5325 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7a4a7f btree_last +EXPORT_SYMBOL_GPL vmlinux 0xfb8a24a1 serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0xfb91cd89 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xfb9c163e cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xfb9c34f0 crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0xfbae5402 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfbbade33 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xfbbcd114 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbdb6074 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xfbfb512c wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfbfea93a scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xfc014cb6 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0xfc0342a1 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc189a17 regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc1e19f0 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xfc210a03 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xfc2b463e palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xfc3973d8 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfc3cd432 pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0xfc435265 blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xfc537103 of_device_request_module +EXPORT_SYMBOL_GPL vmlinux 0xfc5eaebc __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfc664544 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xfc731b73 nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0xfc8cfdb0 crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfca31298 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xfcb251e1 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xfcc0c464 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0xfccb809f irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0xfccc9b26 tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0xfcdf102b unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xfcf5d132 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xfd013606 perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0xfd040770 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfd0b1df3 __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xfd190e43 __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0xfd4dba7d freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL vmlinux 0xfd5827d5 snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xfd6c27ac regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xfd7aeb0b sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xfd803199 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0xfd823629 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0xfd8e0acc fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xfd971920 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xfd97e92f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xfd99b94a arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xfdaca390 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfdbc64b1 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdc0d17a pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xfdc6e9bf power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfe07a4fd of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xfe0bbbd2 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfe1c6e7b usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xfe232988 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xfe29d810 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xfe36aa5b snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0xfe3e2209 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xfe3f91d4 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe48eecb __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0xfe4a357d pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xfe4df495 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xfe5c0467 nanddev_isreserved +EXPORT_SYMBOL_GPL vmlinux 0xfe609951 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe9833ed devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9a2870 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xfe9bbc65 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xfe9f9b32 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xfea05d74 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xfea55244 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xfeaeebf7 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfec3bf84 icst_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed2096b __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfed3bc4e ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xfed8a851 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xfee2cc96 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xfee7e5cc usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xfef26ad5 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xfef284b3 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0xfef67ace btree_init +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff064d62 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3cf0c6 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff750a10 of_detach_node +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff84949a debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xff9332fb do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xffa3bfad sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xffa7b6b4 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xffa94fa5 ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xffa9b683 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffbd94a7 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xffcea502 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xffd1123f save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xffde28f7 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xffdf905f ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xffe1c089 device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfff443f2 usb_hcd_unlink_urb_from_ep +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x85ccbf5c ltc2497core_probe drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0xd06068ea ltc2497core_remove drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x03ca6ef3 mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x04bdba9d chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x159d5794 mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x1a91a239 mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x27ad078f mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x32dc9e71 mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x370a8086 mcb_release_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x3cf4880c mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x54abb017 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x5d3fa972 mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x8eee0a7f mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x9e02ac4a mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xbcf52873 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xc1fa8138 __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xdecd9b5d mcb_get_irq drivers/mcb/mcb +USB_STORAGE EXPORT_SYMBOL_GPL 0x07d6682f usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x102fc348 usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1b0c4555 usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x20b44d7b usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x23790057 usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x2dda7dd2 usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3e7e5f51 usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x42284460 usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x4714a58f usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x57d9d318 usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5a539e2e usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6ea3d8b1 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7944c842 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7e90f88f usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x95ae5dbb usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9db4687b usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa3374d2f usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xa57d6086 usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xb0e078b1 fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xb3360ae3 usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbfb6e147 usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xcf1dbec7 usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xea0e822e usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf16baac0 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic-lpae +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic-lpae @@ -0,0 +1,23685 @@ +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0x220b49ab chacha_crypt_arch +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0xdc94f829 chacha_init_arch +EXPORT_SYMBOL arch/arm/crypto/chacha-neon 0xdd8ec6bd hchacha_block_arch +EXPORT_SYMBOL arch/arm/crypto/curve25519-neon 0x3c74a43e curve25519_base_arch +EXPORT_SYMBOL arch/arm/crypto/curve25519-neon 0xc832c670 curve25519_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0x6ddf27bc poly1305_update_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0x737051cc poly1305_init_arch +EXPORT_SYMBOL arch/arm/crypto/poly1305-arm 0xf39f5240 poly1305_final_arch +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x63f7a05b crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xa7284996 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x54903a8a crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0x6c35ca45 crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0xb885f3e6 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xb9626b42 crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0xc21f7df2 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0xd4958883 crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/sha3_generic 0x68979048 crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0x75d666d4 crypto_sha3_init +EXPORT_SYMBOL crypto/sha3_generic 0xe799f5fd crypto_sha3_final +EXPORT_SYMBOL crypto/sm3_generic 0xa1b5e71f crypto_sm3_finup +EXPORT_SYMBOL crypto/sm3_generic 0xd60bf94f crypto_sm3_update +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x6cac8e37 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x8ac88707 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xbf74533b bcma_core_irq +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x1e5043a4 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2125f363 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4e84b67a pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x6b25418a pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x7e145948 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x8cbe76a7 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x8d8a1f33 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x927f1652 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb8f9e263 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xd21eec65 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xd4e74fc8 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf0dd260f pi_read_block +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xa84d7936 btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0xba0cc981 rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x03e05def mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x15d60baf ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa666161a ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb040a546 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc9f041a4 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/kcs_bmc 0x8442ce8b kcs_bmc_handle_event +EXPORT_SYMBOL drivers/char/ipmi/kcs_bmc 0x9647c49b kcs_bmc_alloc +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x5d8ae3f1 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x742c8618 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa3b4dad5 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xffdb822d st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x50c9f598 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x76d1304f xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x7e9a4c5f xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x4b82e0f8 atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc5357091 atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfc793522 atmel_i2c_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04b5dfbc fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f3d220e fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2201269d fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3acef540 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3fec32b0 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x556601c3 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x570f1b4e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x599043e9 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5e94b613 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5fbd349e fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6693a99a fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69f08f72 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f5b0645 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x81dafdfc fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x84fa8395 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ec4e37e fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9cb39d59 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad0494c6 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb67df444 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9449477 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xce65452d fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcf36c596 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd167ec5b fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd63631de fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe6ed9a74 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe8b2b155 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeed30862 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xef9cd769 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5c77ea4 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x009a86b8 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x019c81ab drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f0ec7f drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0393f102 drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x042b0299 drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05c65622 drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0697d3d8 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06b30f2e drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb3645 drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0813bc88 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x081e2769 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x082f00c6 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x099de731 drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a182887 drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ad9a913 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b5d4036 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c8a2efd drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cdc5a2a drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d18d7f3 drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dfd0e69 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e83a5e9 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10228e04 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10a33de6 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12347c72 drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12e1dae7 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12ff6ee6 drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13021165 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1309c832 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x136c7a97 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x138bce43 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14f1f659 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15e974b1 drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x165076d2 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16f823f0 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17cb5081 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18bffe3d drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19f8c1e2 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1adc5aae drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dbcf7b7 drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e55ade8 drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e755c08 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f722065 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21313faf drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21535abe drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x215b4efc __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2181c0f9 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224322d3 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x230e8b5c drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2461597c drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24fb2a31 drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2634c9bb drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26a03ce8 drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26faa40f drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x271f5b9c drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2766b724 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27be15ef drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27e20320 drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a0a49e8 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a4dae44 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6c69b6 drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aaea1c3 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af49d8c drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c11cb4e drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d6d795f drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d8257e0 drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eae180b __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2eb4c77c drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f5304ef drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ffa2b04 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3005c9fc drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x306aaa40 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x325c2c12 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3261c299 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x337e23ce drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33c6709a drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34f8a5ce drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x354e090f drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35793cd9 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x365f528b drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x380b5fbb __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3836671f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39093b79 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x391b9373 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a684801 drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a6cdd9b drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a7d0312 drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b10acea drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b3dfc03 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b5c207f drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cef3292 drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e3bb636 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e5157c0 drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40ea2938 drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x421d4b85 drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434fb6f3 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x440a9f16 drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x448dfc77 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44c28edf drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x453d11de drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45ae1452 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46c59d9d drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x473cddad drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4834906a drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4846995b drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48f22c03 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49650259 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b9251d drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ac69dfb drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c1b724f drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d18fc40 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e1fa852 drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f0acb24 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f5a4ed2 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f6e7e07 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fa7d85b drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fd4f4cb drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50586f98 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5168c02c drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x516bcadb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52cf65de drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x550db1ae drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55a6f524 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56607e69 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56e48a6e drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59c663c6 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a79975c drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cfc557a drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f11a850 drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f9c7c7e drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61b3e19d drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6215b1bb drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x628b767f drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x633a8148 drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63e125b6 drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x661de57a drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6635ad80 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x664a7f1f drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68446fe5 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0b9550 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b5447c3 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b88a4c1 drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d6fab8f drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dec0e69 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ea2d3d0 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fef364b drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71221d52 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x717c931b drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71900cf2 drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e037fb drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73542ff7 __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74f7fec7 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75644363 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x759cd721 drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75e887e6 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x772ac138 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77e9ef70 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7856720c drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x793dc55c drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ce1d054 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e016d38 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e185515 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e8d05eb drm_of_crtc_port_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edca70d drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f65c2b7 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff16bce drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80937ab2 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80d87577 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81913eb3 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84459fcb drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x847b49a5 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x847ba5ba drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8577922a drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8634374d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x865d3b19 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86cfa899 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8745a565 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x874702e4 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8829bbef drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x898a01db drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89af8d8c drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a69d413 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b346cec drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b488750 drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b777c73 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bbb71fd drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e5bba4b drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc13552 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9116ca2e drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91224ad0 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91318f0e drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x921c6235 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9229b825 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92a118b9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92bc6fd0 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93a51340 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93da3a4e drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93dd241e drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941cbfb3 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95538bfd drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95e3a673 drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96187b4d drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9626b9a3 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9646ca7c drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x967f15bd drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96c665d3 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96fe8ffd drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x974f0db8 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x989ffa09 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9937450f drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99a455f1 drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0207c6 drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a7298c4 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9af6867f drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ba5f721 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cc6f6a1 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d1d0009 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e5c2191 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e759dba drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fa3c228 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0282b9e drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa02dddaa drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0370ab2 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0ce8883 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1a34c9c drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1dedcb3 drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1f04a73 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa22e14a2 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2abb5d2 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2c6db3a drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3925892 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa486aaf9 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4babfce drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6083799 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa62a7177 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6f0c5ce drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa77fc1a3 drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7907c8f drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7b82581 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8e7f6b4 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8eede91 drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9defa11 drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa8c50a6 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab26d550 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab321bc2 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8ca0d9 drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac9c2bd4 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacc13d51 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae1c03de drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae8e5acf drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf993cb3 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafb7d051 drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb06020c2 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb13fc1e6 drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1afb536 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1d8e4f3 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2092540 drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2fa5df5 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb396e57d drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3f01edd drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb404fdd3 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4fc915c drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5da1a44 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6126996 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb61f0afe drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb62b7985 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6559533 drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6d93016 devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb75c3a01 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb78cb7c4 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8082885 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb953b091 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95d6797 drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ebd0e4 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb1ea267 drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb395081 drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb8a8a57 drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc13d822 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd2e82c4 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdb22f95 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe0b042c drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb876cb drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc52deb drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfdad3b9 drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0241b7d drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1497980 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2671150 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc26e73c7 drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4264c85 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc426e3fc drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4332e47 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4a81571 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4dc99e5 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5433a0a drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc65c6c2c drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6f91169 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc71b1012 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc72175ae drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc72807b3 drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc841b905 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca3256bc drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaf810da drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd068bee __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce179555 drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce6e0a0a drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf362b44 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfa9cb98 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1023666 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd150b93b drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1fc5f14 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30305cb drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3163e71 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd337c7f1 drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4132cc6 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4753863 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd53c069c drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a1c4bc drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7958df4 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd87bc710 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8ff99b9 drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd93dcc3b drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda0402ca drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda63b66a drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdacdc5dd drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb6a9b7e drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc57e4a6 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc7d08b0 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc817261 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc833fbb drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd2c79ba drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd83a6f3 drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfc82e66 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0d5d8ec drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13d864d drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1d0e5f8 drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2590004 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2c9f9c0 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2dc8ed4 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3bdf8db drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe43687d9 drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a66ad4 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8d188ae drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8ffb9d8 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea5c9843 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea780335 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb2ce83f drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb6933a6 drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb6fcbea drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebc281f5 drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecc25bf6 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed851497 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedb2245c drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee0434f3 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef536ed drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefadece9 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2064248 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2a19c99 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3559f9c drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4351831 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf439d15a drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4e2cca5 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf53d2d7b drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5d23872 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6423b5c drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf717eec5 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7786714 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7cf1efd drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf841e4b0 drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87f92e9 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf91e7e9d drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9453380 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf95c59d1 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfae21a10 drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb50b511 drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb688e73 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbb801cf drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd652d52 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfded2a5c drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff0850cc drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00c6b2ce drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02a7fc68 drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02efa553 drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0347a06a drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x035997a8 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05778fcc drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09e6b363 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a4b2ec5 drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b789bcd __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0dbe6116 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e2e8ac6 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1175ddca drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x133cb34b drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x154a3da9 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1565196b drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x156eb862 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16a94681 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17a63e62 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17d5f9c7 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17e81658 drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a3f6d86 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b9c35dd drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c043001 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e9f11b9 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f9347ce drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21347458 drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x215c8e4d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x215e122b drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21cbbf65 drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26a8f371 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26be8e7a drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x274849b4 drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x27528f65 drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x299440dc drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b368ea0 drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b58672e drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c0fde91 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c657f22 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c9fc789 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d6361f9 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e4504d8 drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f53a9e0 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fb16ed6 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fb1cea5 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30663975 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3108007a __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31b681bc drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33946699 __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34513203 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34afac95 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34ede43b devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36f2f3b8 drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3893e95d drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38b861bc drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3998ba07 drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c5d6be7 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ca571a9 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3efb43d8 drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x436e291e drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43f4b0b4 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x467918ed drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x468646a3 drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x485198de drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49209455 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a0dd06f __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a73519a drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b0b58f3 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b44ad8f drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b986d94 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e81acf3 drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fadb431 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50df78b1 drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52928ad0 drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x553f61a7 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5604f5a9 drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56317d5f drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x574b1f8b drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57ab1be8 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5878b8fd drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x597278fb drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d7c4b3c drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ed82f63 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x626658a7 __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64d4398c drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6748ec73 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x677cc1e5 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67cd93a9 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6831fd90 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68a485f9 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x693db38f drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69ee4a02 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a50af54 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a7ee1d4 drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d4d90a2 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6dcf338f drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f551492 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71dd79c1 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x724c8f20 drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x737a58c5 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x750abda1 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75c415fc __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79ac7f7d drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c08180b drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cd80efe drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e45dbaa drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e8a8001 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eb5f231 drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ef89bc1 drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f958b0c drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x809cef4f drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81f54f36 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82bc9a5c drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x83722260 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84629d08 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84666e6a drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x877ee222 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87b5d11c __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89af2d4d drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b5afd56 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9198383e drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91b2c3b2 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92459080 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x924f03b2 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x955a2bb9 drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95ac286f drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9715e5db drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9af836d7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b9d3800 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bbf55f9 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c506f58 drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cdc08b0 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ceba2d1 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d006d11 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dd287f3 __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f51d246 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fb3fcf9 drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa28ff7fe drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa31eb44d drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3b387ee drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa53aa713 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5b94207 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6bb1c83 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8bc4885 __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8c06be1 drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaafebed7 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab08cae2 drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab15e05d drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab3ec4eb drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab9e81e9 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabe5d47c drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac4181ce drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaddf8a07 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae8e28db drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb07456c5 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0834f16 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1366ade drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2e24b16 drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb41d87f0 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4900fb9 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5c59dda drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6009f8d drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb63c65f0 drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8900c5d drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba211f26 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd77b752 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe2c0452 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf414a46 __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0ba6338 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc31790af devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc40358b3 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4368ad4 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4b89351 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6037a6a drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce3774cf drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xceaeb8ab drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0533804 drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd073f269 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3ca2e6d drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd60b779d __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdaa1dc88 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb8dd8a0 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdec1beb3 drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdff8eac9 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe067a151 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5657dc2 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5defe41 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7af2818 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8e2cdd4 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe935938d drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebadd885 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebc17f17 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec07df87 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec74f6e9 drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedc92fae drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeea0b6a3 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0acbb2b __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf29043ca drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf445e7d2 drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5545089 drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf607df3d drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb53b150 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb918ab4 drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcf4c60a drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd6dd5dc drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdbff2f6 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdd08757 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x041f60e1 mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x147fcf7a mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x17f09374 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x39a42fa1 mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x5c943137 mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x626b3916 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x742d2584 mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7da57054 mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x86c7792b mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xa919ae15 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xad7739f7 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xadb2646f mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbdc0e63e mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xcf932ec5 mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xd53d19d6 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf7598e31 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xfe648889 mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x86b3627b drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x9584b696 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x02f754a2 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x192afefb drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x38c25d27 drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x3d9189c4 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x4683c183 drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x5b73b64c drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x60e3d7d1 drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x695fb328 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x6a779af1 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9b7e6739 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x9fdd524e drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xa8c07353 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb4cbb757 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xbdffd64e drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xca5a4605 drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xce5f2496 drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd06578bc drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd52c1044 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd8f4a463 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe6a7b73d drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xed60105a drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/rockchip/rockchipdrm 0xe36e95e1 rockchip_drm_wait_vact_end +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0470de60 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0b327bb5 drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x0e108043 drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x11194af6 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x17a34fb3 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x18d7d45d drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x18defdea drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x24ce1711 drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x258eb6a1 drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x3b765ba4 drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x48addfe3 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x499869ec drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x59f0979c drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x6378e316 drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x739e6978 drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x7b767698 to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x95848277 drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xac369f95 drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xca4e8afc drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xd95a2766 drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xf9b35d10 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x077a20d9 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a6a756c ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b3d9783 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d923072 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fef840c ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1201749f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x163124ab ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20da5a24 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x223dbba7 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x246042a8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x263bf795 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2808e56f ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x28748bb7 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x327aba40 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x331412fa ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3375280c ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ac98331 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c527c43 ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x416e173a ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x442c613f ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4983cfc1 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f29cebf ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x525b4f5a ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x536fcc01 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x53ddbe48 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5eee7f44 ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c7865d0 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70347a9a ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79612d95 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d19b8ed ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7fcb3f89 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x835fcd07 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84bac894 ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85da93ef ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87f11aa2 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8b9a70a2 ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d9acd89 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8e54575d ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8f586448 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x916c5434 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x933a7679 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x936aeba5 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93a07c2b ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a72dffe ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d9080bd ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa3d775b1 ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab99331f ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb043ee9c ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc017112 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd5a9431 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbee52bac ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd092f27a ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd1bff0a0 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda26baa6 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf74a889c ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7b8631a ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9590677 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa329dc4 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdffa381 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffc1ce2f ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/hid/hid 0x0d623b97 hid_bus_type +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x01568393 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x8ccd925e sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x96ec3b26 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xaa17a737 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xb37b9b81 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x35a818be i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xa4565d7d i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe1d3fd2c i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x25efb6e6 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x890cdc57 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x62ea9738 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x56742df4 bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x6394b058 bma400_remove +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x952b0fba bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x20c9b37c kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x50b01b81 kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x939b5e75 kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3cc97ab5 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x433d15a1 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x43915fe3 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5f6f7a88 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x641e801e mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7183b059 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x72f5ea50 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7d13348a mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x83776292 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x870424dd mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa5cffd64 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb56bb598 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdda36e86 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdfed3234 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xeb5d4f27 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf2f14f9a mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x2ebf8e01 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x5d8a88f6 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x78e86115 st_accel_get_settings +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-buffer-dmaengine 0x6651b057 iio_dmaengine_buffer_alloc +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x5c5eb1ce iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0xdb6e102e iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x19056c71 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xa84cb1f1 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xb2c41c4d iio_kfifo_free +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0x3f85e65e bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x57378150 hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x70b9f89f hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8ba93c36 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8bdb00ff hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x98a6e692 hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9dae7f47 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa7914310 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xef2eaa43 hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf2176d99 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf99b83dd hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3222e703 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x649e9ff8 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe7f8992e hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xecdcead4 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x14b55276 ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x20da8fe3 ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x496963ce ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x55762d39 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x92c85f02 ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x99cd8ec6 ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xc7401c60 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xd482d08a ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe152cbd3 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x07854a79 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1463139d ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1daed9f0 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2c840836 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd55b6792 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x65d020eb ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x97542ad2 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf400d989 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x180b8655 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x18c77e4d st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x21144f29 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x346e33fe st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3532af28 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x35941ae3 st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3c759fde st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x56e7d818 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5e18f3e7 st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6fd29222 st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8d6b69fe st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x99cac2f1 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb6a22d96 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc657b707 st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe53adf21 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf12fb4b0 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf587386e st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfe6fe789 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xab7a945f st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x8c291f64 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x71eb3c0d mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xa2c3a2be mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xbefef335 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x2a7d35e6 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6e038dbf st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc945c9e6 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x19058036 hts221_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0xa3917623 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3b6daa94 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x6e233f6d adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xf9951133 bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0x31fbcd84 fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x10471c3f st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x6419c7b2 st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/industrialio 0x07dc7f5d iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x0a645d55 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x1e1af718 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1fa29c9d iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0x268b80a9 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x26a0c840 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x35215a65 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x63d1ec9b iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x68f589e6 iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0x6ea7eee2 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x7e6885c5 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x8851d03c iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x8901436e iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x94562988 iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x9471b920 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x9f8eacd1 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0xa5371d95 iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0xb82d2c2a iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0xcb0f4617 iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe44c4c26 __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xe60a056f iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xf0be8e2d __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xf595e46b iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xf71e053c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0xa824270b iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x06b2ba7d iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x2927cb5c iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x794a7c06 iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x9283e629 iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x1a2d9123 iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x8e588c6f iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xa902c422 iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xd05bc2d0 iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x6a850f5e iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xbb7105aa iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x5afaf1f5 st_uvis25_probe +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x6aadf00b st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x190c28f3 bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x63f8a35c bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x6af5c2f6 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xdcb6d926 bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x0eaffbd9 hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x2dedb348 hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x4f5bec84 hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x6aa88b97 hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x5386a43a st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x94f99b83 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xbb89fe47 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x3d736af7 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x4ac0ecd1 bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xb2ceeb43 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xd7f5b795 bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x4385d867 ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x680e3ebc ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x7e8c4b5b st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xa3ea00f4 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc04f8fa5 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1a2475a9 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x23050373 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x295a44d0 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x361dcf7d ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x63b68280 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x95911f76 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa8ad3063 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb1191153 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb203180d cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc0e8c5c2 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc430c66f ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc979c97b ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd26690b1 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe4049591 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf0465144 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf2492577 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00deacd1 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x027c6c1e rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x028fa61b rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02cac4ea rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x040d3d39 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08071c49 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08873ab7 rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x092b2889 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09c814d4 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e7a42c1 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x176982f4 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x178f4bd8 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a75097e rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c01d60a ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e4f4807 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f81d732 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x209bf9fa ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21bf27f4 ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x235992eb ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28db4888 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29e52aab rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a52647b rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2bc216ac rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c1a7831 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d91c4ec ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed8dc7c ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f1f0a47 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3118e12b rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3169cbb0 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x355eabd4 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3696206b rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36ba40df ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x371e6665 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a848da3 ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ab6268e rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b5ab2b4 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d6a8aee ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e79edc2 ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eac785e ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ef2f1a3 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ef861d2 roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fe6d5ff ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40637b15 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40a07cea rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41dbc96b ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x421c5acc ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45885dd9 ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x470b9020 rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x483ce73a rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x485235b7 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x492aa950 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a9e5a7c rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c70a5af ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c7d51ee ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4df2a419 ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f1c578d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x509dcd3c ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50f55780 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51492e68 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52c01628 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55b9d5f1 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5779245e ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x593b75f7 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59f1bbf7 rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a86fedd rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b6cb540 ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bf23d00 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c1c5267 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d1843f3 __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d3de4f1 rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e33ddb1 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e47d738 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f1d8003 ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6138e21e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64d06437 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x657b4d3e ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6581ca90 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6738e514 ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68747af5 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69fed617 ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a477e11 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d97741f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e7c0802 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6edf9295 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x740021bc rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75757371 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76889036 ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a20cbe9 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d2faefc rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7de7c750 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80f0e863 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81156da7 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x820a4735 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82d5c676 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x831d88bb ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8448ad81 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8db79e37 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fc85acf ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fcffcb8 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x910cda7e ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x963b4112 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96d540d4 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97e20936 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99c58251 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b53d4e5 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b74c111 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cf2a099 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d60510f ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e0c333e ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fdab9e5 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0c7fc1e ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1d236c4 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa200efee __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa20a49b4 rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa44d20ee ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa56743f9 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa64f2776 ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7c4c123 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa6907ce ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab44beff rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab8f790c rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadf4855a ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb0f36742 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb25cd87c ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb47cfd95 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb50b82c3 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5e0e6a8 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6769af1 ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe9b5956 ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfee785d rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc14689d4 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc19adeda ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2d7d7f2 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc66709be rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc73b42a7 rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc992d5e5 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9af263b ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb1f8a92 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcbea2488 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd62c012 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce72051e ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf4be470 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf5d81df rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfb3cf2f ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2949a9a ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd543cfc6 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5a6f25c rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd65d4a31 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd71645d7 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd818ed95 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd86d1a5f rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8800e7c ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8e5ecf8 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd932b1c0 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9ddb3db ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb34aa0b rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde1327e9 ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde4676b1 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf7e1674 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfd3472c rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfebba29 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0154e6a ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1077281 rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe13a309d ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe196b55c ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2caec61 ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3ee3a99 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4ca4a97 ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe521b45b __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5c7607c ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5c88b38 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe91e7e83 rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9276dca ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe967da6c ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea67a83b ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebc626cc ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec303658 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed9fb9c6 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeee840c7 ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef31a50d rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef374e68 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1b22f4c ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3035e8a ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf44f1a6a ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5568267 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfedce85d ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x03ed232f ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1a915a74 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1e7985f0 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2480c4c5 flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x340187d1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x43adaece ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x519f6dc4 _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x57a42402 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x58fefb49 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6431f443 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x678f615c uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7654e310 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x78ad32f2 _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8509a553 ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa993ed27 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb7705371 uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc2d0889a uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd0118dd2 ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd047c074 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd30e2492 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdc0ffdfc uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdcf507a5 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe36ab6e3 flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe451ce47 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe829a1aa ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf846798d ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfc86a4b5 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfeb23ad9 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x51af3f6f iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x783735ea iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x87d93f88 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8b4fca93 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa488f2f9 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa70cfe13 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe35fabb3 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf21ed95f iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x001b9355 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x085940d4 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x135b81aa rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19b45860 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a95f16e rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x34677a7b rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a28484e rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4096b34b rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x42463986 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x425caf44 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a1287b8 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5205a145 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x555f4509 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x585285e5 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5b8bab44 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d763822 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73b6849d rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9c5054d1 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xadc23b8c __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb5280ed7 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb8ad7de4 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbeb248f0 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbed76a21 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd23ccb35 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdb41bd0d rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdb76e180 __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4d76c19 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xee352729 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf3e81ad4 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x21c7cc4d rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x33be93b3 rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x5f7a4c2c rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xa85dff2b rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xd576d419 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xee5ff2e3 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x1d14112a rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x2510363a sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x3ffa9a8f rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x67029a33 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x67924678 rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x7c1fdaef rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x0b4a76bf rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x12a90b70 rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x13a4c84c rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xa5b845f9 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xb427e0e6 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xddea4e5e rtrs_srv_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0b591659 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x35d321ad __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4356a1dc gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x515c5b92 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xad628c7f gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc61ed75e gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcc36bae5 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf200ba92 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf3392521 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x106cc34e devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x352a6797 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x92177c9d input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x99438aac input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa4b61001 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x2881362a iforce_send_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x3e33cbf7 iforce_process_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xa2442c02 iforce_init_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x4971d237 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1015809b ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xa9942356 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf5af8cf9 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xde1cd88e cma3000_init +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0xc273d35a rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x57642986 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6939e326 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x76591764 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xc958d9c5 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe5ad2a5c sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x10e4c014 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x891a9f1d ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x08dda9b6 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2f3512d5 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x45a46134 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x954eefa5 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbb60272f detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x14c1756e mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x493fa3e1 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x90e3d111 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf02ae4c1 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x2c65a0e5 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xf8935824 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x04468345 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08c352ee mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08d171df mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1d53efe3 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c19edd4 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c472de1 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x63a8e977 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6498c13a mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7184777c mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f43b03e recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96d965bb bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9caeff6e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa77410cf mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb3f3b49e mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcefef79e mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd3cf66dc mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6d52405 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdb877c9b recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe58478ef mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe65e2a58 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe697b31c recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe9c745ca recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf546a966 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x8ea94730 ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xfc33f3b3 ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x1258a5fe omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x636c1867 omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xc6410961 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/md/dm-log 0x0e6dc187 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x8e992642 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x91ec5493 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x9509c898 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0829eb08 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x28b3cbe5 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4654a20e dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x886a60d3 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa5f0f641 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd54b8284 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x58e990b8 raid5_set_cache_size +EXPORT_SYMBOL drivers/md/raid456 0x8554ff22 r5c_journal_mode_set +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0f2006be flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2277e0e5 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x23a7e510 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x38c64d3e flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5f0c1546 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7f28e362 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x972ef3c7 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9f797518 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xaf9067c1 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb03d86bb flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc4ed8066 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc94a4517 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcbcf1dca flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/cx2341x 0x4bd8da30 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5fb512db cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa46a4d81 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdbf6e0f9 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x5f86d828 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x59f9ceb0 tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x8f275cd7 vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0xdd867f0f vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x087834b7 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x0f0741b8 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x5004900b vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x71085c16 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xf243cac0 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xfdc73a4b vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0x7373a0bc vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x006d6880 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0e6cd491 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0f7bf36f dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12d265d8 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1609d70c dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1ba5b157 dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e7a8283 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21381c3b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x214d5b4e dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2c12c287 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x31d09674 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32bccf2b dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x38a21780 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x38c65851 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3fd96ba7 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x42d15a1b dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x493349b8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4be5c646 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x561a9103 dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58920678 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5eedb549 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x64b27329 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6ba914a6 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b334d3c dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8026ef3e dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x82143c17 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x83ea0a2b dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x846ed814 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x883388eb dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9b0d9c0f dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa68fb899 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb98f70d8 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbe3d62d6 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc0b93899 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd1b71e54 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdafc31c5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe196082f dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xedda2b2f dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfa4430e6 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfe73d116 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0x4d58fe06 ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x950f49a1 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x00248073 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0d7498cc au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2c93d1b7 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2d7870b3 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5e53b05f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x66c51d4e au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9119fbd7 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9a9cd6d5 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xfbaa48aa au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x065e26a1 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x8a23a7f0 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x217e4886 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x8fa112d9 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xbd477ed2 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xb988ab72 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xcbea1237 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xbcd6e217 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x89b9ce1d cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x1b7582ee cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x404b96c8 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xbcff347e cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x082a59fe cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xf792fd64 cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0x192a1873 cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x36ce1374 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4c9e06c8 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9c4a24e6 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa054a041 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd527ead3 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x03121731 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0b93ad80 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1378288b dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1a0b5a61 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x30527ec8 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x48e3e653 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6fdbf0cd dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x71b48dc7 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x78527100 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa8d4364f dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb5c1f5a0 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3f9b04e dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc711a885 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf17c0131 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfbd19f22 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xa530e423 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x00d37cf1 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2df913ba dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x367da012 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6d1939e8 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x95444a5b dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd7ca8d72 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2323a6c5 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x247a2c6b dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x84b59a01 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9b041232 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xf36c10c7 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x9c18d40c dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x01471861 dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x1bd218f5 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x1cb8baf5 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x2969bff5 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x4d4ec724 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x53f62f08 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x5ee33b30 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x7aef75a3 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x802de703 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x8b63e4f5 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xb19171b8 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xcb95d5e0 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xf10c0033 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2c3bcf9c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2ebeec97 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x40d462b5 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x764b003f dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9b236834 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x0f8b8584 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x0e38e395 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x3c0d51a3 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xf6e5974d ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x898963fa dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x1a4e82c2 dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x1b512a25 dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0xb09f0e4d dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x8c9386da ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xbebd3dc5 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xecacd683 helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0xea48fcca horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x288adbd6 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x75e32478 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xaa816dcd isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf4ae769b itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x14461dde ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x37e8c7de l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x8a08e196 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x29919dd7 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xd887cc33 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xea120a1c lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0x51fae77d lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xa9db11af lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0x222cdff2 lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0xaaa11877 lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xda95e3e4 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe0fc9853 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x2e8ad9dc lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x4a0cf133 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xcb012d71 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x2280af1e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x1550c9b0 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x5111a0d2 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x3961d136 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x0e14bc61 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xd460ced5 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x4f7cce62 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x6b8581f7 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x7ff02823 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xc754f673 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xb2daa5c9 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xa7281ca8 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc20bee69 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0x1a8bff50 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xebeb008e s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x57faadc2 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xd1d647ff sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x780e7e62 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x8b10aac7 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xac162116 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x62fb082a stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x88926149 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x01cf8f3b stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xff697d50 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x480b9df4 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x766cb625 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xaeec47b6 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x92c595bc stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xb1d2ccea stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x0a71749d stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x7687d927 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xa60ccce2 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x08f21b4e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x502bd3cf tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x3c6adfb1 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xf66efb65 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x8b7b4c6b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x7fe07367 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x8f8fa48b tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xf99e769b tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x3b012ab6 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x8fdf8b79 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x90d7f0d7 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc304c758 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1a0a3c4b ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x3b227cda zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x844cbc4f zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x70547bcf zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x0e261ced zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x8f359784 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x09697027 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x3396fd2b flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x58904f3f flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7e1a181d flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7fe348d5 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8e0fddd5 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9417095f flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x031c8410 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1c908716 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4d6d09ab bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7933f20a bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x5aabcf97 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x942b8773 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xd36b58b6 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3cc2d104 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3fc5ba76 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4f492625 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x560b816c rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5f91eba0 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8a98416a dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9357b9de read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9a3027f6 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe104956d dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x4c34f926 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x56fbe5cc cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7f6a14d7 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x8811eb7d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xba55f37c cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd66c18d7 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x59a5ad6d altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x17d28abf cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x36e9f1ca cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x42dcccd3 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4817931e cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5c63c1ce cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa14c4f74 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcb778f7f cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x244990bb vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8e24230c vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x05f6bbf7 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0fbbc927 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xe539c48d cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xffb69ccc cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x135420a4 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x43b959c5 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7922cb82 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb889ef0c cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe4676c3a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf74655d0 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfea4ea21 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x00cabc65 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0f143dc5 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x16eacccd cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x238c0199 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x47acd080 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5d10f504 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7e601e70 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa5becacc cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb30bfc8c cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbc19aec0 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbcec4497 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbde099db cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xca3f1e24 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcd03b0da cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd21e4f82 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe4a260d3 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xee8bffec cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf1f48fb5 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf3db9f0a cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf6aa8c7e cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0x09701f7f ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1efdf8ee ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2223d2e6 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x24a0bc26 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x56dcefab ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x595c6a08 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a1c2e89 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x742372cb ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x75366b81 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xab3bd391 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb8843026 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc2443f53 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcf909cfb ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd32a3f9d ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd969387e ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdacd7abd ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xede404eb ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf47b8c32 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0bb69513 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x507e5117 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x687a6115 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x89f0ec02 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x97192cc1 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc419cb6a saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc6e9fe4c saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc938a031 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe776fd77 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeec1fb0a saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf478f082 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf88e8bf8 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xfa1db95f ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0x177ae363 csc_set_coeff_bypass +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0x209bff75 csc_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0x2d78b21f csc_set_coeff +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-csc 0xc89d086f csc_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x33464675 sc_set_hs_coeffs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x510cb459 sc_set_vs_coeffs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x74aa4b26 sc_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0x796beba0 sc_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-sc 0xe77dc9ab sc_config_scaler +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x07464bcf vpdma_add_cfd_block +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x0ca990c7 vpdma_unmap_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x190b742d vpdma_create +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x1e26321d vpdma_misc_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x1ee5d41c vpdma_add_in_dtd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x26314f8c vpdma_set_line_mode +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x2b08bd6e vpdma_hwlist_get_priv +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x3269c1e2 vpdma_add_sync_on_channel_ctd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x3b3f4afb vpdma_create_desc_list +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x4485638a vpdma_set_bg_color +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x49293b26 vpdma_yuv_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x50ec40af vpdma_rgb_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x5b1b9450 vpdma_list_busy +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x60708dc6 vpdma_raw_fmts +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x614ac2d9 vpdma_clear_list_stat +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x6724e391 vpdma_enable_list_complete_irq +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x6ea95e2f vpdma_free_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x73ae3d42 vpdma_add_cfd_adb +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x7965a7d7 vpdma_set_frame_start_event +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x872ab065 vpdma_get_list_mask +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x88847683 vpdma_hwlist_alloc +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x92417974 vpdma_map_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x9de56bd8 vpdma_add_abort_channel_ctd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0x9ece601a vpdma_free_desc_list +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xabdc201c vpdma_submit_descs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xac07769e vpdma_get_list_stat +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xac6b0c26 vpdma_set_max_size +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xc201cf71 vpdma_dump_regs +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xcc78bec4 vpdma_rawchan_add_out_dtd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xd0aeae6a vpdma_add_out_dtd +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xebbec4fb vpdma_alloc_desc_buf +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf4fe0cda vpdma_list_cleanup +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf5c8cf87 vpdma_update_dma_addr +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf77aa29b vpdma_hwlist_release +EXPORT_SYMBOL drivers/media/platform/ti-vpe/ti-vpdma 0xf82483c6 vpdma_reset_desc_list +EXPORT_SYMBOL drivers/media/radio/tea575x 0x40e8e279 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x50750dcc snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x79525f0e snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x84156bb4 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8d570796 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9230910f snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb84ed756 snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/rc-core 0x0903ef0b ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2aa3f8f4 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xe9169453 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc16803ea fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x14837aeb fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x51be3327 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc74ee498 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xf2faffec max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf8784733 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xff375de5 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xb239bad1 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xe554e11d mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x8adf95f8 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xaf09c234 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x05ad608b tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x51f6c1c7 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x3e5b53db xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x0e97b073 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x220278fc cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe03ff012 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x07abf625 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3c972a13 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x40dbec70 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5747a341 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa1e5a15e dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbb5b0c09 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc0c2b629 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf326b32f dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb5e4069 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x053c9ce0 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x13913704 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x362348b0 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x65d933e3 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8aaf5206 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xeac856bf usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xedc195cd dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xc75e61dc af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0b2a23af dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5d5c0d3e dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7f586673 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x94ac5768 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9b2ad779 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8cc5554 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xaf7fe1a2 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbd3b7c4b dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcf88be62 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xda3196cc dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0xf23a6f6a dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x2515667b em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x690b96f4 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x19e45720 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ab027a5 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x48fc4059 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6cecb554 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8f108f06 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa27e2540 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb1aef526 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc74478ac go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf6afbc3c go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x35c5762d gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x39665092 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9d18e977 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc0254afc gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcbc53b9c gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xcdc11195 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xec6f1b88 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf11e2a0e gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x409a7c15 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8f00cbba tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfac1ca7c tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x089dedaa ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x235aec60 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x568fa546 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x7f64b661 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x94a18006 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9752c5b0 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03450193 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x056a1eec __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x062454c9 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08ca2030 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f8deaf6 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10890b93 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11510a63 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1337af09 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x19e73129 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25655a5c v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b513fde v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e1a9bac __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x307bfe97 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31da7945 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32cacfd9 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a2ac86d v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b3f7ba3 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44171216 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46560fd4 v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x49d9529f v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4aa440b0 v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d4913db v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f2e5535 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x525eeb79 v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5bb086bf v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c89e2f0 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64ee7144 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x658d91e3 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x674c52f9 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6be42d76 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x704b4239 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72c75d7e v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76930711 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76c9a046 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79e75791 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b805161 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ecd5161 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x805d315d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x806b8181 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84dded6c v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93a1e065 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8972609 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab35da4c v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac0231c2 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac0bd0e7 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac754f5c v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5bac5f7 __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc391f48 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe4648f6 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc41ddff9 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca1b061f v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc0736a5 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xceb565fe v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2abe922 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd305219d v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3f29748 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd4e54f99 v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd55407a9 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8558d5a v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd871bc6e v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9a6ea4e v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbe04703 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2af4b3d v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe929470c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xecab9699 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2aa5708 __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9cbefc4 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0c12780f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1ca1da19 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x301ce040 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x36e907b2 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x400c06f9 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4ce2c6b8 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51cb13f8 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c5e4e09 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x93ab621d memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaea73a39 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb90cfbaf memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd6717ff8 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe7728535 memstick_new_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a26d2d1 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x23408464 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25ea76dd mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2bc5a916 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32759c40 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3461d290 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x428bd393 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49623c90 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49845131 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53adf926 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5dacc903 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69eef50b mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x86e2ba64 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x97afa4f1 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa8fc29a7 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xade86fd3 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbd3f275d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc209ffb8 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc413b26d mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcc2f7631 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcf950481 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd124fab1 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd23c37df mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd95962b3 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd52a818 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe0013217 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed5e15c4 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfe82ee47 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xffa593fa mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x06650683 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07951752 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x17b1ace5 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x35e40916 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b6f0a42 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a3f5536 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a814be0 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4c5715ed mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c9a8937 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x64318bba mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x69ea2ae4 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7a0ab1fa mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7bc061ba mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x80de07e3 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8396047e mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x96418843 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x96f4c117 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadf800cd mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e7772d mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc339b3f1 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc915f97c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd7df0916 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd8b1aeaa mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe5b5d4c0 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xefeaa45f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf55a972c mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xffb55dd2 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/mfd/axp20x 0x272788a1 axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/axp20x 0x3e27de4b axp20x_match_device +EXPORT_SYMBOL drivers/mfd/axp20x 0xa9e8ee41 axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/dln2 0x3d90c212 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xa854aea9 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xea87d891 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x59c5fdfc pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc0ca828d pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x170e4f5a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1734b769 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x394abbf3 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4c194bf9 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6eda13a5 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8741578e mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc5665d7b mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd3c20242 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe2f044d6 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe9b37428 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf8bfaa23 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0x832aed94 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x1b2eff33 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x3987d23f wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x82deaf46 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0x844cfd1e wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x95f83dce wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0xb6764687 wm8994_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x022fded7 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x53524015 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x2fb85933 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x3dd36086 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x7a4a0f0c c2port_device_unregister +EXPORT_SYMBOL drivers/misc/tifm_core 0x10de1f0f tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x14a8c386 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x34e3f5a7 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x40275e3a tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x4e3b8307 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x5214f117 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x65145adc tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x76edc7ff tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x93f7ecb5 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xd1532e4c tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xed957551 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xf0c99616 tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x50f04b92 cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x6ef7219a cqhci_deactivate +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x70944e35 cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x94f2154e cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x97fd5f77 cqhci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x014dd150 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x55d9600f dw_mci_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xb009b3a4 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xf3c3c2c0 dw_mci_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x6060babb mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xa03eba2e mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x11ce6ed3 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x16430ce1 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5cb27fe4 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7b3b5f6b cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7e8e2bde cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcc303527 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcef177a7 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x895ca6a3 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x269f9bcd lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0x7e715626 flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0xc9f09c08 onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x0b6ea763 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x9a9fef87 denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x102603bc mtk_ecc_get_parity_bits +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5437e775 mtk_ecc_disable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x5de55d81 mtk_ecc_get_stats +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x6df58afb mtk_ecc_release +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x76e53683 mtk_ecc_wait_done +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x7cce5a73 of_mtk_ecc_get +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0x8dcc87d2 mtk_ecc_enable +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xda64ef4a mtk_ecc_adjust_strength +EXPORT_SYMBOL drivers/mtd/nand/raw/mtk_ecc 0xec8b9207 mtk_ecc_encode +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x00ee4de9 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1206805c arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1e3e3093 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ffb5566 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x31d73dcd arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x51a55121 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5be7323e alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6bbec8b9 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x949c0d6f arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe616c42b arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x0a27ae25 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x37237772 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd24508ee com20020_found +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0858363e b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0a9306c6 b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0db52020 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0ff5553e b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1a768b7c b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1d53bab0 b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1f8e8b6c b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x247a6963 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x28f39f50 b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2ecbde4a b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x358a9a9e b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x39f3239e b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x41c148dc b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x43ba8229 b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x46c0f62f b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4e10d420 b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4fca927e b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6040c53b b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x617b773f b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6b742c63 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6f8e2c43 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x70777766 b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x76887c6f b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x76a88e0a b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x96e3bb67 b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9f45b000 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa59cddc0 b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xabb9fc6c b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb128e7fc b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb94abd1f b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xbaeda0ea b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xbc61fb2a b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc7b4539f b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd1163378 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd82d592a b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdc13d573 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdc40fe1b b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xde8ff68f b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe0b7e951 b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf8fcfa81 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfd0863f9 b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x29d6d2bd b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x32708f76 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x375dd25e b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x38fc32e4 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x3ba23566 b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x9517231d b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x34816279 lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xacefb34d lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0xc03c2ad0 ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x18d46f8b ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x1caaa2c3 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x5d1d1299 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x78c3ed11 ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x533f9af8 vsc73xx_probe +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x58f57350 vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3940ccc9 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x45337666 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x57905f51 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x801ae7fc ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x86067ec7 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9420bc87 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x98cc273d ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe136e80c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe806e90d ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xed15c9de __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xa1acdabf cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x04ade877 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x06a6881f cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1b6921cc cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x323cd92c t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ace9b59 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64286df1 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x67f60f3a t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x741a1438 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x87bbd9de cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8d7944cc cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x988c700a cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbf08dc0f t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd06c4bf4 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd0ef3661 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd9d731aa dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe98801ed t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x083b0bea cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c10c2bd cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x19472be8 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1a808a68 cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1abf9496 cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1df471e6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1f74f985 cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1fec43f4 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22f77c15 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2693320f cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3d63e996 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3edc2390 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f1d698e cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f906006 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4006bd2e cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x461db2da cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48025a44 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4a53a90a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x537def3a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x591f1a9a cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x59bf6bac cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5bbd1a1f cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x679309bd cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x791ad9f1 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7a26cd34 cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x85327938 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8553e193 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x87afed09 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9113c124 cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x99d0b5cd cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f08dc8d cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa4666891 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa518cd68 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xabb0abd4 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb9c41def cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbd37e584 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbfe40b09 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc57e6417 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd9213e44 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd9a3abb7 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xded2869b cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeac852c9 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf0dd28d2 cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf14343fe cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf5e16ab8 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa34f52a cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x0a1b2b47 cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3a39e6e1 cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3aa73457 cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x436d895a cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x69ebc847 cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xaf7b55d6 cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0xdc306ac1 cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1297c881 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x791386fb vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x798b6416 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x89d41dd4 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc9c4afbf enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf3c5ec6d vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2880c1b0 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4269a2ce be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/enetc/fsl-enetc-ptp 0x5431a304 enetc_phc_index +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x0e130351 hnae_get_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x79eec048 hnae_ae_unregister +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x84b3ba9e hnae_ae_register +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0x8e6c4e34 hnae_put_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xb1266858 hnae_register_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xc1400a3f hnae_reinit_handle +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hnae 0xdf24adef hnae_unregister_notifier +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns/hns_dsaf 0x0ca2a04d hns_dsaf_roce_reset +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x09849c14 hnae3_register_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x76c2d88f hnae3_set_client_init_flag +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x793d5d70 hnae3_register_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0x9ba51dc6 hnae3_register_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xa201500d hnae3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xd2b89169 hnae3_unregister_ae_dev +EXPORT_SYMBOL drivers/net/ethernet/hisilicon/hns3/hnae3 0xe68a6b77 hnae3_unregister_ae_algo +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x74cb604c i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xf56aeefd i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x1cfe2dc6 iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0xad0a9f9e iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0539c5ed mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b49711f mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ba19674 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16e3bc4f mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19be14f5 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d3cb59b mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fc571cb mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23b9b071 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x243935bc mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27234933 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c8f6359 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30b22225 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37b9c8ab mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38f227c7 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c443caa mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40574b36 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4273ae1b get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f642bf1 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5d1836df mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6268f01e mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64de3c3c set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65c59b71 mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71730f60 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7207ec26 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85b73fc3 mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b3977a3 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91b11002 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93b479de mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa63d00e8 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8e8e501 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb29873a1 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0e1d911 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc37595b2 mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca459fb0 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb2396a8 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbfa8622 mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1645f78 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7e02f7b mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8fd4b07 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe854f12d mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf807d170 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b1ce2a mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8d2741a mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8ef0e4e mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02f97448 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04a320ea mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x057531a8 mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x068c5912 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08eb78b7 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a20180d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0bc83052 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c2fc676 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c9ff74e mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d1e7ee9 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ec068c1 mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f06c89e mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10c4299a mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1adbcba3 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f316d26 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x202e6414 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x238aae87 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x292a1cb7 mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2931c678 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2daa9783 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32774a67 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35741a5c mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3588d8cc mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x376c75e0 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x379be620 mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38094dcc mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39153c11 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b73909d mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ddaf7c2 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ea53650 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f1acf48 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f349977 mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ad7e9d4 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4eeb5aa9 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4f250fe4 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50179d98 mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5271599c mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52ce66d5 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5388bfd9 mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54164cc4 mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54a458f7 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x553a0043 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x575c042d mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58fa7d83 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5955e952 mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c20b087 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c25bfeb mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f7588ba mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x629627fa mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62b94c54 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63362805 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63a2395e mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64f5afce mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67700570 mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68dfcf8c mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6924ed31 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bbe3172 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c7890ed mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x726baa96 mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72c054c4 mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73193ce9 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x73475ba2 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x735cf62e mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7441d202 mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7592a2f4 mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x759e2e6a mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75ecc36f mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77b4d5f7 mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab8a9d1 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b8c10f5 mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c3db0ef mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ca366ea mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84943557 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8818d04c mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88e808f3 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89123783 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89218846 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c02ddd5 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c1f3114 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e1f45f5 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90018bd2 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x94d4a7fd mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95224ccb mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95d47eb2 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98303ea8 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99088810 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c3e7eaf mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d027f27 mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d05719c mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa22e6784 mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa86f5c36 mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa97ca927 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa983f03e mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa9c09659 mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaee6499b mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1856b23 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5d224da mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb448520 mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb722ced mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbedfc9c7 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6179a8f mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce7e737d mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfb991c0 mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd02008f1 mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd69178c1 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7092ebd mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda39442b mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb9044e8 mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde4ee4da mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf31c8a9 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4b966f7 mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7843be8 mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7e86d70 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8ff276c mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe96e66c7 mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebe9a8fd mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec842182 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xecc2d1e0 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1eeca40 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf24e76d2 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf756e38a mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc7465aa mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff05e262 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x8a56c208 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0082653d mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x01a02295 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x119c9c5c mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x16bf9e9e mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x29fd6b30 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f672008 mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x57e736af mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x58b96416 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x673bb464 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x745e8b27 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x93e8c10b mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa0020452 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xaa600760 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbbd7a457 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe24e641 mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc239058 mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdcd1ee93 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdd526310 mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe2454079 mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xeca0348c mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf9ab558d mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x78c24212 mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xf519c4a2 mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xbeec7766 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xc599afe9 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x07143954 ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x091fea41 ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x13a074b4 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2a51e1a7 ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2c35e46a ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2c92a7c1 ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x2e98bb3e ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x359deccc ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x36c1cbd5 ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x39c79bdd ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x405808e9 ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x43fcda33 ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4752f35c ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4a5c236a __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4c26efae ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4e57000f ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5bd34ed0 ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x643b558e ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6a7eea89 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x799fbf90 ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8935afe1 ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8af0b112 ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9c6addf8 ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa05b00c8 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xacf68aee ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xaef02a7a ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb04c2399 ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb2cc4264 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb91e8f57 ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb9e3ac8c ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xbf8e7522 ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc508143d ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc7339d5d ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc8a6a813 ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd435c416 __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd559a5ca ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd6224b88 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd7c4a36b ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xdabdcacb __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xef23a9e7 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf5d9b7f1 ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfa87221c ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfae29248 ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfdb21ec5 ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfe61a077 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfea24e5b ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x51d67170 qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x6a899747 qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x77d6d1c2 qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x35f19f0b hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x486727fd hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa8168399 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xcdcbafc4 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfede57ef hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x37d4bd87 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x4d1f1ceb mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x50002586 mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x57b48c2f mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x8c8fca67 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x8ca32f3b mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x93462171 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0xa98b9254 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xaa7a97e3 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xc7b8a798 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x63466bbf bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xaf6d20cf alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf2a7d68c free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x115a961e pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x34037156 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe5bca2d6 pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0xb4bbd126 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x553eaa86 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x61fab8b6 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x6bb4a5f0 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x71bee22a team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x801703ee team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xa0d55164 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xe614053c team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe6c54566 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x457f2a54 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa7ccbf5c usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xba44b425 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4ba7b3f9 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x591b916a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6db850ce alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6f3c07d3 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8eab2676 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9afd3165 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa34475d1 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa3e3c137 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xca1a11bf attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfb8f03aa detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xe6dc7fd9 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0613df5b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x59745756 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x65f29509 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x667e8ec7 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6a36bb52 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7bce1601 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8c8261ee dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8d048371 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa0ce458e ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaf365a85 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdffb8bb6 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe399b2cb ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x08ac925d ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x08d41e4e ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x09b6f8e6 ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0c15c6d1 ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0e429d01 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x12e4ecb6 ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1a01ac85 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2617e9ee ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2916d8f5 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2f079e02 ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x33ca3cd4 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3ca69973 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3d9ac836 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4bc33923 ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4c39771e __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4f017424 ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x51504254 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x673d8433 ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6a2c385c ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6e0e47b6 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7006c88e ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x70573103 ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x71dcb1b4 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7d6fd7f5 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x81b36978 ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x86c9f0e7 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9081eec2 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x97156eed ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9acb81c0 ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9b09e885 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9b72f9e0 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa7c39b0d ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa80ae8d9 ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb1de9609 ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb1e05e41 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb2b22b60 ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb75cd135 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb8dda5d6 ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb9aab515 ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc8e82693 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xca4ead9c ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcd1ba95b ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdb239869 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xdcd86115 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe1949489 ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe2d917d6 ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe898a298 ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xea7174b9 ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf8f07a8e ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0x0af87817 ath11k_core_get_hw_mac_id +EXPORT_SYMBOL drivers/net/wireless/ath/ath11k/ath11k 0xb7452e61 ath11k_dp_service_srng +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0a91f9f0 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x36fdf132 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x58015cb0 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5c1798a8 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5d403392 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x60c5ee8b ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6b6342ca ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7bd34729 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8520035e ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x88ba5aa0 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc8e50384 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x052129cd ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f39c953 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x230e550e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x246c7d79 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x383ba173 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x412364e6 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x557db5d0 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6b4d04c5 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6bd23698 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6f0278b4 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x734c1e93 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7b565160 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9cad9d05 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5fdd057 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa601f0a2 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb2c6c446 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb7593793 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbd13a46f ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc4ff0917 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc83ea826 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd18c0c17 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf7357b0d ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfb3062ce ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02090da8 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02ae93be ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03279a52 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04a48028 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x056054fa ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c4aac57 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ee75ab9 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f4b10ba ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x100f245a ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x10237240 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x108cfdb1 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11328b09 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11728ab2 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13634f14 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x138e1aab ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1446f1cc ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17eac093 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19721a5d ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c354c3f ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d562bea ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ddc0200 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20470be1 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x230f0703 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23c110c9 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26a4a08c ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27a5819b ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a123300 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2afb695a ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2b2700a4 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bf165e0 ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3087298a ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3620f12a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3894e809 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3dc27f24 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f2d71fe ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f920d1c ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41dc20c3 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4713dd18 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ccbef15 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d6cc81a ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4dc8ae72 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4eedf66e ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f228789 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f6f0e06 ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5031aa96 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55feaeec ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b9bed00 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c0953b4 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c69b1eb ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d3b0fbc ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e7f17f8 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x637881d9 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6584e6bd ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a41ebba ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a80975e ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d4b8f2b ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d51f0ed ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ea771f1 ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74d59c56 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78777ebe ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b1556a9 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e7e4f80 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x804df745 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86b7225e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8833fe06 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b7f47df ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d7772a5 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x912a2a52 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93a6e624 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9538c7ac ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x966e06c4 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e1c75d0 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f1d24e2 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9c5db69 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaafd2584 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabf37a9d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaded5fb1 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaecddb78 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaee70ac9 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2663fe9 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb68077ca ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb93b8ab1 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99b1929 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc5357a9 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc10cb32f ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3582803 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfac0236 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd301a701 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd52a0780 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd56d8f84 ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5c9862e ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd63f8cf7 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf97a2af ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0b200ef ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0bd990c ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe41210d2 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe433a15a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe46e22f0 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe69c629d ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe931b07d ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1efbf81 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1fe2a4d ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf290a38c ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2e1e655 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf46d4ebb ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7dab3b1 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc89c1ba ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x0013f7be atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xcad5f4f1 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xd2bcaaa3 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x0fd6d494 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x2df0382f brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x34064040 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x57635249 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x7ab5cc65 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x83fcc467 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x8f5369ba brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x9a4a212b brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa00add30 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xb457f9bb brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xc333f2ac brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd2a6e09b brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xeb527639 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x03f74a54 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x12186a11 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x1b975481 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x206e9b0f libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x29f477bf libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x2cc28376 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x404d0a4f libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x6d6bc2f0 free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x76a665eb libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x794dc8ac libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x88851c2c libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x8fe1d320 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xa3a01188 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xac0e7d4b alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xbca4dfe7 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xd435f698 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xda56f1e1 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xe790e4cd libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf1c98fa7 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf27cf3d7 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x07cd9514 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0b18ace6 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0e7b48da il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0ead228f il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0fdf85e6 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x154947a5 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x159625b5 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x16f12bda il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x17214bb2 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x17f6ae0e il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1d70d5b5 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x22d5163e il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x246a75ef il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x24fe564b il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2918e852 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x293490cc il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2b6cc6f2 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2f9262ab il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x31987092 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3573c553 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x35d4eda3 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3b68afc4 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3c3b655b il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3c3b8fbf il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3ca11c2a il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3f752ba2 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4af33c6e il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x50c72746 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5295192b il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x548c559d il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x57589384 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5ca50edc il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5e00dba2 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x63ec502e il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x656c0a39 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x65f4c9cb il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x66c22451 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x66e5461e il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6b173ee5 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x6d4c72d8 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x72a374f9 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x78b1fa0d il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7955f9a5 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7c9d9e10 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x7ccf4bee il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x82f6805d il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8392d24a il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8437e38e il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8a130fc2 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8daf7b7c il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8ffefd8c il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x92e35764 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9818c809 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9a159648 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9babc65c il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9bd4af88 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9be1c9cf il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9f000c61 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa01edfe8 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa1170007 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa48484f8 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa52e510a il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa53543d5 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xad5f9e52 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaf8ce1c6 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xafe90a46 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb9081b6f il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbdca9036 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc0476258 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc091d2b8 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc1c2f2a9 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc55bee63 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc5fa6235 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc70c9a09 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc9821401 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcbaff3a3 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcedf667c il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcfffbd5f il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd373399b il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd4d0820c il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd5dc0d67 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd6b4b16f il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd7c34e9e il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd7f90b2a il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd8617811 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdfc6e636 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe244e935 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe3f87b7c il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe4d51d67 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe971f9ea _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xebed1b1a il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xeca159e4 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xed991a5a il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xefcaa3d0 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf26462b0 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf33e71e8 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf3c7d278 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf8c210f1 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x33c2544a __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa44e2870 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xab9db4d3 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x015634c6 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x09af9173 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x27a244b6 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x36a6d30a hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3a1c7177 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x473a0d85 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x52c21d30 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x5ea240f6 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x6e1500c5 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x86f2a22c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x87b1fc08 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x884e3e55 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x92a789db hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x962b59ff hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa3129757 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xa7adc16b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4076dd3 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb5edf1ee hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xcc513ead hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xdd65b18b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xe7731a5c hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xedc2cbcd hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xefcf727f hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf8dd2f2f hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xff579da2 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x1514be1a orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x41840cdf orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x4ae23565 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x4b7715ae alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5da281d9 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5e863610 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5eeda9b1 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x6a295362 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x71f1643a orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x72926a92 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x87fa6894 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x9c3bcaf5 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb6db9858 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xc4e1c952 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe640aa08 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xeb4c9831 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0x94c7f4de mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0x058e85ad rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x02e79944 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0f8e20d4 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x17cda6ae rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e493767 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e81e9c4 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x32460d2b rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x324faa31 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x438bdca5 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5b13d044 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6f185f48 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7054ef4c rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x706df69e rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x757e44b4 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x801f404f rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x85e9372b rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8d31c50f _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x93554be3 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9378164e rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x96f125a1 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9883c578 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9cd49add rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa8e72f82 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa9bf5920 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xad264ae1 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb15574e9 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb336bc2c rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb74efdc4 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb77f0e5d _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xb8fd2608 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc03cb206 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc06e1208 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc2eb9eb9 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc577728c rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc65692a4 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc91c2371 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xcc275221 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xda1e1d2c _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe0be253c rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf21fe2e3 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfc5bf1be rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xffe1045a _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x615f9c65 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x91228a84 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xbfbbfd40 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xea17f0b6 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x0c5f21ba rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x2a0484d6 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x58785342 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x6ac0ef06 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x03bde7c2 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0e8c121b efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0f244ecf rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x11e9c7af rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1453e346 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x179ae427 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1c7277f6 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x227b3799 rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x31d69471 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x321e50d8 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x351e97cb rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3bba9e72 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x42c974d2 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5714aeef rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5df77416 rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6038dd58 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x61677c65 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6f719e9d rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7d6cf0ea rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x92b8ad2a rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa21754e6 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xadaf719f rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb36bc696 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb55ba329 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbe58a6c7 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd1ffb640 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd2ce9758 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd4797ac4 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd5873508 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed3bebaf rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xee3b09ce rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xef7423ac rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0xee12dd7c rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0x05f2a7ce rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0xea30ccf0 rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0926d499 rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1128d8a8 rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1222b853 rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x182cc841 rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x190649ff rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1dca63ed rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1fcb984a rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x208651d9 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x221d412e rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x29fe9027 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2c1b8b79 rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2f9cbb00 rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x30a34ebb rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x318d248d rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x37c90de9 rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x3c838e41 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x3e8e8220 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4abff7ba __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5e016ad8 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6c2de03e rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x725e0e1f rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8c9b69f0 rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8e9858bc rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8f22e468 rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x90c1320b rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9510d38d rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa4d3f290 rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xabedff41 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb0a6e335 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb24850c0 rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb462aa9b rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb61d2ac3 rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb700d735 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbe6f2c43 rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc144e334 rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xc8f96859 rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xcedc8dd5 rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd04bbcbc rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd0c3e245 rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd18d8f4c rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd7c21eaa check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xd9610f90 rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdb861ecc rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdb876214 rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdd1e3d8e rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe073b657 rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe088e0db rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xec1974d9 rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xeef2e259 rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf8c0097f rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfab6ef3e rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x39e6bd10 rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x768c09b7 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xd4b66235 rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xf3e85ac1 rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0x96098a9a rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x65922f95 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6db8c208 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbe5e8ba3 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe175947f wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x225589f4 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xa9087f1c fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xddfd2472 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/microread/microread 0xdd69a1e6 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xf3111b6d microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x92338996 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x93c7b86b nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xf417b84c nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0x83636b80 pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x54bdf468 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x7baa289a pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x401b2bfe s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xae018f1c s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xc70fa529 s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x15cc291e st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1de73802 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2abccdb2 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x53a9935c st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6eecbbb8 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7bc39bbf ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb3aa8407 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc1c03e85 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdab736c5 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdf03c6f7 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x03692f64 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1094689d st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x19bd6ce5 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2174a0ca st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x546b44b8 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x66b628e7 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x84899e1b st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x877b8b95 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x87de3b4a st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9474be5b st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9a620069 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9b5d0045 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb2df6a14 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc0db20f8 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd0a3609b st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd0cf45ec st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd81fdcc8 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe32d9547 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/ntb/ntb 0x0259e695 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x047b3730 ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0x189bff58 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x1aba362c ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x22c1f6ef ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3d5ff4f7 ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0x4f6e60a3 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x657e1785 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0x65e4a2b1 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x670aa276 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x9a31c91f ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x9c0dd846 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xabd9999e ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xad6243f4 ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0xd7fc7e71 ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xd9007ab0 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xd995cf90 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xdf07ae81 ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0xecb275f6 ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0xfa17e78e ntb_clear_ctx +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x5824462c nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x83908b9d nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x178e74f3 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x293ab471 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x3db138ee parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x45488770 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4980fff6 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x52493583 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5e6575f4 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x61c21144 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x688eeb03 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x6a0a5535 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x737df120 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x765722c7 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x7ac525ce parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x8b91a314 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x930534b6 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x9b0e62ac parport_read +EXPORT_SYMBOL drivers/parport/parport 0x9f874da0 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xa1c3e4c6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xaae89cc3 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xad64166f parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xb0ee57f5 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xb3208a92 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xb36b5a9a parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xba985e7c parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xbdae70a5 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xca01fe6d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xd1b375f8 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xee9352ab parport_release +EXPORT_SYMBOL drivers/parport/parport 0xf4999531 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xf6f57d9d parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xfae6fe21 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport_pc 0x0bb00b9a parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe44b0d26 parport_pc_probe_port +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x0821ba1a cros_ec_resume +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x234b1426 cros_ec_register +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x65e2d213 cros_ec_unregister +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0x66ad357f cros_ec_handle_event +EXPORT_SYMBOL drivers/platform/chrome/cros_ec 0xe98c7429 cros_ec_suspend +EXPORT_SYMBOL drivers/regulator/rohm-regulator 0xa633e54e rohm_regulator_set_dvs_levels +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0x3330a1c8 qcom_smd_unregister_edge +EXPORT_SYMBOL drivers/rpmsg/qcom_smd 0xa0758813 qcom_smd_register_edge +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1433e984 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x4a237693 __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x6e45906c rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x6f5b0375 rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x7487ee9c rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x822e907d rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x9d678c46 rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x9e27580f rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb3efbe9c rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xc38f2c7c rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xe4e5866f unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xe688213c rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xec994b6e rpmsg_register_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf8d18906 rpmsg_unregister_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x8e9eab08 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x0f22ec20 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xbbe66925 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc0313395 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xfb831b85 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x27ad4018 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x30ffb531 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x51165d90 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ab6bb5d fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x95a18840 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa6b9eebe fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae6ee72a fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcafc0e88 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd4caaf24 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf2ad3610 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf5febeb5 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x01439070 fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a151c5d fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d6155cb fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ed1acb8 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f13fc67 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2401dad5 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x28faecb1 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fc9d7c9 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3109157c fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3297dcd9 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38bd6d1d fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38f62111 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46246571 fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x51a8ebc1 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5ab41f0c fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6985faae fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7069790e fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x729891c2 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74272225 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x78497bb5 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79439204 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7bfe9e1e fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cc341a4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d60c41d fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7da00902 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8331b73b fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84148663 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x849d8e82 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a37dc8f fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c96fe9b fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ecc9be0 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9dc46d18 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fb6dc6d fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa44a7c21 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8004c50 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac079683 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae74bbe0 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9a4be55 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9efd592 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbca4da68 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbefffaea fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3bab1e6 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc43ea37e fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xceb1d394 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfcb0dfb fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd12ce06f fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd29f4e17 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8d03551 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb82b2c0 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1bb4cf8 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe35726c4 fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3af80bd fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe891e4e1 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea08749d fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee95ab8d fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf5ce4001 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf7986e5c fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8bf4f74 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffe1cee5 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x01403917 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa09721b5 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfea729da sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xe2a7e718 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x07454a5a qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2f191e6a qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3d831b81 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3d8e5857 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6dbcdcd3 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7043c46c qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x939dd805 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa3e7000e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaab31ff8 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaec753b0 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbdb697ee qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd9158365 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/raid_class 0x15e85421 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x1ad90512 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x436acbbb raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1693e2a2 fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1e7ad9a4 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x234b56b7 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x489f3077 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x51059534 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6dd9e355 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8722059c fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9988068c fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9c9baddc fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9d354846 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcdc5e928 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd517c141 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe056846f fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe0c8fe22 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe99ec1f7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfd28bffb fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1186dc2f sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x245d6199 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27a43402 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x33bf82aa sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d0999c0 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ecbdf53 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4e11772e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x527fd4f0 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x54311e83 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57b61825 sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57b6812d sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d571c65 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x79ce31b4 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8563b601 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e42d5e4 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa0b29b0a sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa16ca48a sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xac93423c sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb298ec99 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb84c4efa sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbf9d041a sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc77a0eef scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc9506c1b sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1202438 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd61c87df sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea3de830 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xebe9af9d sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfab5cf86 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfb33f458 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x58c2aa05 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6743a5c1 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6d5a5c45 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbac8ac0e spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbe510fe7 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3c442aa6 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7dc0f20d srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9c5ade17 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9f547ae1 srp_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf337707e srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x12dbee2d tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x8b4907bf tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x0350daa5 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x12287dde ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x1581d99a ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x4903fe0f ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x5d0c7d10 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xb547487b ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xc3b13384 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xef50c1d8 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xf67d161a ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x3d4c30cf ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x62867b04 ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x00b44ef9 cmdq_pkt_poll_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0b713282 cmdq_pkt_poll +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x0f51b3ef cmdq_pkt_write +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x243391b2 cmdq_mbox_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x431f28d1 cmdq_pkt_wfe +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x59ab9e73 cmdq_pkt_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x8cd5a570 cmdq_pkt_clear_event +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0x94887ba0 cmdq_pkt_write_mask +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xa2d1d99d cmdq_mbox_destroy +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xb749a852 cmdq_dev_get_client_reg +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xc317c0cf cmdq_pkt_create +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xd8b8fbcc cmdq_pkt_flush_async +EXPORT_SYMBOL drivers/soc/mediatek/mtk-cmdq-helper 0xdde7bff5 cmdq_pkt_flush +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xb9ce826a of_get_ocmem +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xc53d76b1 ocmem_allocate +EXPORT_SYMBOL drivers/soc/qcom/ocmem 0xf9b05967 ocmem_free +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x1c76ea4d pdr_restart_pd +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x432975e6 pdr_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0x47b2ed49 pdr_handle_alloc +EXPORT_SYMBOL drivers/soc/qcom/pdr_interface 0xf618ca5b pdr_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x10384507 geni_se_clk_freq_match +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x349bfd0b geni_se_config_packing +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x39281fca geni_se_rx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x3d25e41f geni_se_get_qup_hw_version +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x4223bc4b geni_se_tx_dma_prep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x43f34e55 geni_se_resources_on +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0x5ff61120 geni_se_select_mode +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xaa08dccd geni_se_tx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xad0db649 geni_se_resources_off +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xba9ee63f geni_se_init +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xd3881317 geni_se_clk_tbl_get +EXPORT_SYMBOL drivers/soc/qcom/qcom-geni-se 0xe2b71a23 geni_se_rx_dma_unprep +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x133168aa qmi_encode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x21ce5888 qmi_response_type_v01_ei +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x333fab72 qmi_txn_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x34ea61ed qmi_txn_wait +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x40960a8f qmi_send_indication +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x49dffb11 qmi_txn_cancel +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x597a5ef9 qmi_handle_init +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0x736f86ad qmi_add_lookup +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xa2ff1ede qmi_decode_message +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xc167e3a6 qmi_add_server +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xe8589a8e qmi_handle_release +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xebe45dbf qmi_send_request +EXPORT_SYMBOL drivers/soc/qcom/qmi_helpers 0xf3864c79 qmi_send_response +EXPORT_SYMBOL drivers/soc/qcom/smd-rpm 0x46bb046c qcom_rpm_smd_write +EXPORT_SYMBOL drivers/soc/qcom/smem 0x5a710273 qcom_smem_get_free_space +EXPORT_SYMBOL drivers/soc/qcom/smem 0x63ef36e3 qcom_smem_alloc +EXPORT_SYMBOL drivers/soc/qcom/smem 0x932eb0e3 qcom_smem_get +EXPORT_SYMBOL drivers/soc/qcom/smem 0x9979b76e qcom_smem_virt_to_phys +EXPORT_SYMBOL drivers/soc/qcom/wcnss_ctrl 0x5bf924eb qcom_wcnss_open_channel +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x0c757b6c sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1b9be91f sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2577e63a sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x2ee86342 sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x30dd6ba3 sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x355a5522 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x45c32ede sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x500cacfc sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x83908085 sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x8a6b3acb sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x8bbc16f6 sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9a2e5c48 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xace85c40 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xb50bb5c8 sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbaad0604 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xe3b69cea sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xed81dcb8 sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf566f1f9 sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf85a7ecf sdw_clear_slave_status +EXPORT_SYMBOL drivers/ssb/ssb 0x05b09fdf ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x34c60f2a ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x425ccefa ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x544d4602 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x65e8bb86 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x6fca291c ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x7165a8d0 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x795e5794 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x84029e13 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x8ac50880 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x976f1bd4 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xa1f4577c ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa30ce072 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaa858d4c ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xb9ff05fa ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xbff92df8 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc83e6859 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xccc0cf81 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xd396f55c ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xec8518e5 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0cb38297 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0d4d36cf fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0eb6cc71 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0fa96c18 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x102fe86f fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x18b16e33 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x31e344d1 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x409bdeac fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x40b4a32a fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x54fbc9ca fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x678ee926 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x715ce5e5 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x71dd3d33 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x732e9e97 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7bcdb855 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x895e7982 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8f45a8fd fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x93e089bc fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa50e02c7 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc1f94244 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc21083a5 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc375c225 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcbc65393 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd139eec7 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdb1ae5d1 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x84708d68 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x56597de8 ade7854_probe +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0471805a rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14d0fcb3 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1fdf757f rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ad05264 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bdaf5a1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3aab7aa3 dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x43f98426 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x48ca647b rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4cc1d9ba rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5270d089 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x58d5fddd rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b6caff0 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d5ec41e notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x603bfd62 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67f1c3ee rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8298413a rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8440f670 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x860ce564 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x888ef180 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92f12405 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x966d2c1e rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fba07dd rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8312449 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8890747 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac53d928 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1ddf51e rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb321ab49 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb52b4bc1 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb5aa8aac rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbeef2def rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc245cf70 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc25bdef4 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9fbad30 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcdce12b2 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce9e18bf HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd04a78b9 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd1568947 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdba720f1 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdbe7e75b rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdeff3239 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe6fe08e6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9c6557a rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb623157 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf2c9fd9b rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf41a0e10 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf54afbcd rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf609386a rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7da8785 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xffbbe200 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0723909e ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0c4f2406 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16d4386c ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x18116999 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x181d1769 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c4dcdb2 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e93cf56 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x29e5c16b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ad8b20d ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32d666b7 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x358b1f20 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x367b75f0 rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3766f132 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c766657 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x494b60aa ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x499397f5 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b45a796 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x601d088c ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x637dd7d9 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63f9fba9 dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6459b9ac ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6618e13f ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a3a8bef HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c814e5b ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76a085a3 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x794f65fc ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a236acc SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d7baf9f dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x828211f5 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x883be705 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x921a2cfd ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9427b7ac to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x983f4950 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d07642b ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0d87bf9 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad765b3c dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0b6cd25 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1ea4fdc dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3ff15b0 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4f65c61 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc02c06d ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbe592c3f ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc769e343 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc90c4fdb ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xccb8b9a7 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd0018c3c ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd1d4933 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe302927d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe63b0d5e ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe828423f ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe848b83b ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec0d9b97 is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef8c885f ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xefd33445 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf750a112 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09e6edf9 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0f617947 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x142c77bb iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x207cbc1a iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2a00ae09 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x42a2b8ca iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x438143cd iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x478e8a0d iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4aab1b05 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4ed24ea1 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50ccdbba iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x575f3174 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5fe45c45 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x71db854b iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x720229f3 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x78aa3c38 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x78b8f36c iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79a8d14e iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7a893989 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7c4cd570 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x847b50cc iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85bf0a93 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x991dca0f iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa36125b6 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa7e682d5 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaba5b495 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad6020ba iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb22f30fb iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc0b5d6f1 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb45ef0a iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb565693 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd03298bf iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd381cb92 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd464bf83 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9b06371 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdf0e69e1 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe4b599a9 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6d52af2 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe7bfdaa6 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe9ac82a0 iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xea6c8ca8 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xef5811cf iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7600c11 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfebfbd37 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x024d95e1 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x070e863b transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x07f26f9d transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x08334015 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a0f41a5 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0abc6071 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c2fe9a7 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x10270d34 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x106672ab target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x12361b36 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x12d83f53 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x1acbb1b2 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ef7f850 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d8c2fa0 target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a0bfcb3 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e0cb7a9 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e5c248f __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x42a850f2 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x44c42708 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x46429ae9 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a3a146d target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x4cf3db40 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x4d2bc838 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x51b86b2d transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x52daeb46 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x5372b7cc target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x56da3f3e target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x59fbb8fa target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b467910 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d9599c5 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f60b5bd sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f626223 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fce3a6f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x62cc6f82 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x62f7b768 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x699be4d4 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x71db30b2 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x772c67ba target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x79e92d73 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bc1c91c core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7be0d215 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cebae63 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ef788c9 transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x864ca709 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x864dbfda target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x889d908c target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8be1b787 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x911d52a6 target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x91a41d93 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x983a3b4d target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x986be823 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x995df5af sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa055cbc3 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0745339 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4451685 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xadca1394 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2e57394 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb37ac979 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8edd238 target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xbaf3fd61 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc294a74 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xbea4c6f9 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xbec93b76 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc288d834 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc857f670 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbd6d2d2 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2328ed3 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xd56359ed core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8df011c transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe26801a8 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xe590c732 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xeba3c84a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf711076d target_get_sess_cmd +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x431f0497 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x980e5956 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xee016e88 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0120e149 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x062dbb33 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x10be313c usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x16757acf usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x18a6e2aa usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4a636ad3 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7163fa7c usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8798a244 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9ca1562e usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xad8bfda6 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xafc9ea4e usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd107f144 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe3ab3010 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1d1d259d usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x9c5130e1 usb_serial_suspend +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x02e965fd mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x0c4d5787 mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x20b27824 mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x2e862b63 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x5aa63879 mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x6bc278e4 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x90df86df mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xac256d1b mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc4b7aa35 mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc5e3593c mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xc92363f7 mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf1e2c034 mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/vfio 0x001dd584 vfio_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x05b8cfda vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL drivers/vfio/vfio 0x0f655355 vfio_info_add_capability +EXPORT_SYMBOL drivers/vfio/vfio 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x51f16cdb vfio_info_cap_shift +EXPORT_SYMBOL drivers/vfio/vfio 0x5d3a804b vfio_dma_rw +EXPORT_SYMBOL drivers/vfio/vfio 0x67d2deea vfio_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xf6c64e8d vfio_register_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0xfbcad209 vfio_unregister_notifier +EXPORT_SYMBOL drivers/vhost/vhost 0x4e855b5a vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vhost 0x53e6c081 vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b2fbd56 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x98a7e2b2 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0xa8a5b2a1 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xae7c3cbf vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbc172ecf vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x5a1e94f7 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x959b66ed lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xbbcb7954 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf405a31b devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x3743cbbe svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4906457f svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x7591bb00 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9b31acd1 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xbf862d2b svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xde952af9 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf49b2c44 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x2f923bb2 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xdcfd1656 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x1e17e151 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x7841167c cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe54387e6 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7b5f6855 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8a725291 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xf269c88f matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x5dc68c3a DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xa2751082 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xafab65d4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xeb915300 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xa1bec59e matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x2574df3c matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0b3305aa matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x3bd04881 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8f9002c2 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x90f0e0d3 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x82f84310 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xbc283407 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8a4b94f0 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9a05a19f matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb1a90cd0 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbc092b42 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xdd854088 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x03005606 omapdss_get_version +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x0786ef5c omapdss_unregister_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x097bf44d omapdss_find_mgr_from_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x261dcad2 dss_mgr_register_framedone_handler +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x36d1d536 omap_dss_get_overlay_manager +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x38e61b54 omapdss_find_output_from_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3a50573f dispc_ovl_check +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x3d36d54d dispc_mgr_set_lcd_config +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x42912b0c dispc_clear_irqstatus +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x45d74ef6 dispc_mgr_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x4bd67a8d dispc_write_irqenable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5070b2bc omapdss_default_get_resolution +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x51d0f14d omap_dss_put_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x546809a2 omap_dss_find_output_by_port_node +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x66cdd3c9 dispc_mgr_setup +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x6b1a3090 omap_dss_ntsc_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x7e9099b4 dss_mgr_disable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x827143a1 omap_dispc_unregister_isr +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x87fdb051 dispc_mgr_go +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x8bd864d4 omap_dss_find_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x95d5c793 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x967cb4e8 dispc_ovl_set_channel_out +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x9beb1294 dss_mgr_set_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xa13d27f5 dispc_read_irqenable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xa4f6a175 dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xa884016b omap_dss_get_next_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xaea7e534 omap_dss_get_overlay +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xaff1a67e omapdss_register_display +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb3ed5aa9 dispc_mgr_is_enabled +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb6951de9 omapdss_output_set_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xb7f94a15 dispc_mgr_set_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xba8ddcea dispc_mgr_get_vsync_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbd827095 dss_install_mgr_ops +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xbe0d4752 omap_video_timings_to_videomode +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xc3a4e566 dss_mgr_enable +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xc45105c3 dispc_mgr_go_busy +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xcc197296 omap_dispc_register_isr +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xceb0091d omapdss_output_unset_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xcede97c5 omapdss_default_get_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd70adbc1 videomode_to_omap_video_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xd8ed186b omap_dss_pal_timings +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xdc8a7079 omap_dss_find_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xde8b74b2 dss_mgr_set_lcd_config +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xe71ea1af dss_mgr_disconnect +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xecba911c omapdss_unregister_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xee6601a9 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xeeb2704a dss_mgr_connect +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xef3b2795 dispc_mgr_get_framedone_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf34ede02 dss_mgr_start_update +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf4f63234 dispc_read_irqstatus +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf9427374 dispc_request_irq +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xf99e1799 omap_dss_get_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xfa95d18f dispc_ovl_setup +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xfa985cb4 omap_dss_get_device +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xfc2ce6b1 omapdss_register_output +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x330d53e6 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xb926e48d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00d5d993 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x85a28f5b w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x22ec8daf w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x7c34493c w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xc62a615e w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xd6cbbefc w1_unregister_family +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x094a0f4a bd70528_wdt_set +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xa67efb9a bd70528_wdt_lock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xff383648 bd70528_wdt_unlock +EXPORT_SYMBOL fs/fscache/fscache 0x03e82969 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x04cd350c fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x04e6733e fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x059a00d2 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x18494915 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x215ebcbd __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x24ac2d7d fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x2fa87285 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x32f6c266 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x35167087 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x3848e12a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x392a22e8 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x3d33e5b2 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x457d26de fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x502f25a9 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x518ec8f6 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x53260420 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x58b893a0 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x6970badd fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x70aceece fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x70d26bfe __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x71a8fa4d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x735fd450 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a1f8b1e fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x7a33262a __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x80ab7a2f fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x8df8c39e __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x8eb1fb4f __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x98e028be __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9c56a844 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9cbb0b54 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x9e491557 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x9f0fe80d fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xa1530aea __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xa66e8e3b fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa8d01aaa fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xde74e8c2 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe72bfd33 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xee102824 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf841da10 __fscache_maybe_release_page +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x10a3d752 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8fa8eeb8 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x9e856381 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0xa3ea6e29 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc2b3908c qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe5020fe2 qtree_write_dquot +EXPORT_SYMBOL lib/crc-itu-t 0xa2048e95 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba95c5c0 crc7_be +EXPORT_SYMBOL lib/crc8 0x5a742e56 crc8 +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x246ea205 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0x2cfa6ca1 blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x23eea787 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5519169b xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5d776412 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x64375eb4 chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x738d84bf xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xb1693668 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbb7cb0d3 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbe7c23c lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc48fa976 lc_set +EXPORT_SYMBOL lib/lru_cache 0xc6e4cd46 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xcb7e3981 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xcb990a55 lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcbec7b3a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xcea6747e lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xd212c9f0 lc_get +EXPORT_SYMBOL lib/lru_cache 0xeb13128b lc_del +EXPORT_SYMBOL lib/lru_cache 0xf460a486 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0xf5ea5f5c lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xf6acec20 lc_find +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x4cc636f2 LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x765fd165 LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xd02774b1 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x067fa594 objagg_create +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x36b52331 lowpan_unregister_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x3f0ebe83 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x82de5583 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x8836cded lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xc905781d lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xe37894c2 lowpan_register_netdevice +EXPORT_SYMBOL net/802/p8022 0x2678c2cf register_8022_client +EXPORT_SYMBOL net/802/p8022 0xf08fa795 unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0x5d189c74 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x938ad3d8 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02c82cfb p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0edc8500 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x12af1dc7 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x175a653b p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1bbfd96d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x1c46a6c8 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x1d632ad5 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x22a05bbe p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0x2ec931d8 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3d986cf9 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x46ca4ba4 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x4a552fdd p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x4c1c47a1 p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x56d79881 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x57e02dde v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x5c33d9d7 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x5c88e62f p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x648b26ed p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x693c85ca p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x6aa76fa5 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x7062be50 p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0x762a6e8e p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x780a1b7d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x7a09129f p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x80bbc6fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x8129cac1 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x960fc351 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xa7557320 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xaa382516 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xae1351a8 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb54b78cc p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xb7dd4def p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xb8ae541f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb929c86b v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xb9dae1ef p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xbfc15c29 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc48a955f p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xc53fb13c p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xca839173 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xd83d6090 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xdaa967be p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xdf74c0c0 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe32a04e0 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe395cb43 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe6b1e55e p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xf28b00f5 p9_show_client_options +EXPORT_SYMBOL net/appletalk/appletalk 0x23887208 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x4bd6075d aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x4db7a35e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa047f361 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x0c8c1963 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x0f5953a0 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x1f216cf9 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x495e1cd9 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x57bb812d atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x6b9a3871 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x72b4a16b vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x878dbad5 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9738dd0c atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa0357377 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xaa3d4f35 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xab3dc199 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xae671d7f vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xe45e0f2b atm_charge +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x14561656 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x18a68a39 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x39399aac ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5a1dbd44 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x67176b2d ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x695dae33 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xb85971f1 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc159a585 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00354b80 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0533c0cb hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05cf1cb7 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1998b1ca hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d67dc77 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20ad6660 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a4d6de5 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ad1561f bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ae460ce bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x354ff8dc l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x38fd0726 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a51d331 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4279dce0 __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4e3e7ad1 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57ba693b hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6827ae2d hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6a49769c hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x765aa7ac bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c56e494 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a4e2d08 hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x90cea125 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x940cb2d8 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b6f7d92 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b9b8d05 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9f6eda9e l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0763d11 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9e38c53 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xabc7e4c9 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf452898 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb1c5c41c bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb4d1f4da bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbae73a72 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc1df40aa bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca4840d4 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcd261b5d hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3ab277b bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc5548d0 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdd8ab4cf l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdfcd65e5 hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe23dcd38 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe4253dd5 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe43fef43 hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfbdad1b6 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfdbb62f7 __hci_cmd_sync +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x0c14dcb0 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x44b4fe1c ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc9bb643f ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x0e611963 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6e41c8a5 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb66f0df6 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xde48dafd caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xf1f55dda cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x100330d2 can_sock_destruct +EXPORT_SYMBOL net/can/can 0x3d9d6935 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x44f37675 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x6e66d5e8 can_proto_register +EXPORT_SYMBOL net/can/can 0x9b1c61d5 can_rx_register +EXPORT_SYMBOL net/can/can 0xace84196 can_send +EXPORT_SYMBOL net/ceph/libceph 0x00eba7e6 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x03e8c65d ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x065c822f osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x07adf381 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0a3c60e0 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0x0b609523 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0x0d3cf0e0 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x0d87efc5 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x11327059 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1208d49f ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x18154028 osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x1872078d ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1b9b2ebe ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x1cba3f20 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x21263332 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0x2229aac7 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x25db16f8 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x27fe4a1a ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x2d04ef35 ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0x2e91a798 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0x30e43a49 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x317ac0ee ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0x34df7dcf ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3522979c ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x395a4af4 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x3bc8d8d2 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3cc771a5 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0x3d0f2a7c ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x3e2ef025 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x4329c4b2 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x45044d94 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47075eab ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x499255bb ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x49f28e07 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x4b5accaa ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0x4d85a424 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0x4ecf53c9 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x52226b04 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x566a3db6 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5b3b9700 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x6038df48 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6439f33c ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x643e09b6 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x644b6e50 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x64b9311a ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0x691dd209 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6c0e9817 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x6d088ad3 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x6dbb13a9 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x6edb8cb7 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x714d76cd osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x71544694 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x744cbc5f ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x74b9ba57 ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0x75c14ad4 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x75c518bc ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7e03e3b0 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x7f05fdd6 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x83e20fa9 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0x83e60701 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x893218d6 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x89c5a5e0 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x8bd5050e ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x8fcaea25 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x90259e3c osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x90c17239 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0x925f4fee ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0x933c9c75 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x965aa215 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x96b66fa0 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x973e8f26 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0x9754707d ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9889ac6b ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9f0aa562 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa0124ca1 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0xa6067446 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa70cfaed ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xaa761dcb ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xaebc0f41 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb04b974e ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0xb199a979 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb3b80a71 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb52a14d8 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xbe8c11cf ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xc20c8ca8 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xc6c16381 ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0xc6c2d3f7 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xc77a5b38 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcba27e5b ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xccd9c5ea ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xcfc8ad10 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0xd03c93fb ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0xd06c446b ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd5cc1bc7 ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0xd6399184 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd6c71268 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xda53513b ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xda85be67 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xdbe0cbb3 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xde9e0ff3 ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0xdf182268 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe25d0d16 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xe2f1da12 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xe6893feb ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xe7dd9e54 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xebc4239f osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xefd69dda ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0xf035f65d ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xf2359bf6 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xf35affbb ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0xf3f5cd18 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xf562aab7 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf589677c ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xf611c1b6 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xf7ddd535 ceph_put_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x81d1a82c dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xff30ea6a dccp_req_err +EXPORT_SYMBOL net/dsa/dsa_core 0xe94e1a58 dsa_port_vid_add +EXPORT_SYMBOL net/dsa/dsa_core 0xed1fd866 dsa_port_vid_del +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0ce6420a wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x167e46ac wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x75296cb1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc68b558d wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe7ca9360 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf03d704a wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x19741ae4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7f8041ec __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x8642e0ae __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xff1adff3 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0xd2e22f80 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5668b2a3 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8fc9285f ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xcc148e64 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd8b6b9f9 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x791e7d84 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x917ac2cc arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xea8ac3cc arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0e5b578c ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x16df4e45 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1ff7ce8d ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x50310f17 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x60b2c29d ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/tunnel4 0x165ca54a xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x4630f547 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x7abe1465 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x08b8885d ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x138bdbcb ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x15ff2aa2 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x21539385 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x57c88747 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa60b4560 ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc6e52a47 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd72044e1 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf65f0fbf ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x317a9501 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x7d2ae7c2 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x7f9132bb ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc1c44ffe ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xeba7352f ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x92c047df xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xa7b001f7 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x2a5ad9ee xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3f50469e xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/l2tp/l2tp_core 0x3e18bc69 l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0x87937705 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x913f8b77 l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x1addb2b0 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x27746728 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x61802274 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x75e00399 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x95aa17c4 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x96dc47fd lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xe5ce40e9 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xf879215a lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x431ad84e llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x4728b67c llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5968fea0 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x7246fcfe llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x7bfe3a11 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xc55a67d4 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xd71cb30d llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x02d1d275 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x036dc7a9 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0753810b ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x0907a89b ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x093be4b3 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x0a062594 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x139afde3 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1425932e ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1bfb7f2d ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x1e5d1410 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x1e7d678f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x2175e37d ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x25e76f96 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x2d975681 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2daf14c2 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x364bccc8 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x3656e8ef __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x38523d19 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x3c1b8e3f ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0x3c947c97 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3f72d675 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x42cda293 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x48d8a4ab ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x49add3c5 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x4eb97f72 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x55bd5a2c ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x5c7acbda ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0x5db982f9 ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0x66500e9a ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x69697d15 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6e5aa98a ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x6ea2fcbc ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x719e95a6 ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0x74fafd64 ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x76343b01 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x77096f45 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x77e67371 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x787a0388 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x78912c6a ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x79c7d196 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x7bffbf8d ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x805cf467 ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x8151a2d8 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0x81b76ef5 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x81fe6722 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0x84fae290 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x86995d16 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x87bd0d3c ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x89daacce ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x92f98922 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x94fb47b9 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x95c63dc8 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x977723ad ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9930c26a ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9a8de135 __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x9ae5fe86 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9b7cb127 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x9cbe7303 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9cfbf39d ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x9d0e0f60 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa1739b5f ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa81993d9 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xa82834c6 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa9233e63 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xa92a86e8 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xaa70241c ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xabba24c5 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xadb87d10 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xae169cf3 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xae91413f ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaf13a37a ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xb2f52454 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0xbaacb351 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbb7dad93 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xc1cc93ee __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc32689b6 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc8d18fdb ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xd0631411 ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0xd22e2596 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xd316b760 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd7d87550 ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xda5badb6 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xdc357722 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xe04c3300 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xe4d0aaf5 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xe827b304 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xec03a9df ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xece41295 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xef3d1155 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xf2c76768 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xf5868c4f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf6ebeba6 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfa196670 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xfc67f361 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0xfddde604 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x2c2e66b6 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x375ecaed ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x53849285 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x84a1d08a ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8ba6c781 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x8bdaa040 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x9b0c67e7 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa5d7fadb ieee802154_free_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x35d895ed ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4455a679 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5befe750 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6ac6b696 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8f4dec6e ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x952c4163 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9cadba74 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa2f16995 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xadf0fb99 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb1f1d757 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbb6263ec ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcd03a89d ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf02478a9 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf3222ef6 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfe288a9a ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb8b60a4e nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x26bc8f4f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x2cde3b36 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x333a024b nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x6c9fbff6 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x884edcd2 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x46139141 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x4e90f767 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x695fbfb2 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x70a270e8 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x87cc05d6 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9041f0d8 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xacf15d3a xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xccb1a43f xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd4b5713d xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x0470c0cc nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1190741b nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x16aea250 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1e282e04 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x29bfa408 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x3f8cb107 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x401d035b nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x512cb2a9 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x539dd0d3 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5470ed9b nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x5646edba nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x580b3b3e nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x5ada13cd nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x6dfd5c33 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7105817c nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x978c68d3 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa74ac77c nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0xb86160d9 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xcd75a7f0 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd524ba60 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xf16bd285 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/nci/nci 0x0151507b nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x207c4947 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x2380acf3 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x252ebe91 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x2d085266 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x45141612 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x45206048 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x46f1facb nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x48a4c5f5 nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x4a8db17c nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x55237465 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0x6902524b nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x6e3d8018 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x785073db nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x8048edaf nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x839dafa6 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xa05aa8ff nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0xa3020874 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa37f50f0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xac2c0dbe nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0xaea26e2d nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xb5b1b540 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xb70db33c nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xb7251d30 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc4306e67 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xc50789d4 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xc58d6985 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0xd0af3476 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xdd0993c3 nci_set_config +EXPORT_SYMBOL net/nfc/nfc 0x18cfe006 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x19ecb22e nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x232ac988 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x2df62584 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x4bbe4896 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x4c6ba3c6 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x55ab66c8 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x573ca94a nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x589aaa6f nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x69f06b07 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x724d3ff4 nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0x8c5c7bae nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x8c7078d0 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x93d65ef7 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x959d4880 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x95f7a541 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x98738d72 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xabb401d7 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xac4e470d nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xb88bdff2 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xda667ac0 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xdab9fc5b nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xdf1c70f9 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xe21426ac nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xe55e1e7f nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x54cc27e3 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x71a1c75e nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa9e38a29 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xb55f2248 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x025e1797 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x13565903 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x40974e49 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xc829f234 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xce6e42ee phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xdc9560ef pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xe34c30e0 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xfd63bce8 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/rxrpc 0x10d98a68 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x11d4610d rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1b3a34a3 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x2dc2cf49 rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x35acdf8f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x35b24ad3 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x441cc631 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x518ec17b rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0x57a36852 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x5cb81045 rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x61ee53e5 rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x63508ad0 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6668657e rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8156a9e7 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x90d142c3 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe3b3ba4b rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0xf66d7988 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xff33fbd5 rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/sctp/sctp 0x15344afb sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3c8e56af gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x499d68e4 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x75f09b42 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x08ca24a7 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x177a78ea svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe5a15669 xdr_restrict_buflen +EXPORT_SYMBOL net/tipc/tipc 0x35c1bbff tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0x3b76a75d tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0x3faeb76d tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0xb7624f7f tipc_nl_sk_walk +EXPORT_SYMBOL net/tls/tls 0xb78289eb tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0xded7cb0d wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xe1169d47 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0152e43e regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x05758dfc wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x08ce290d wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x093f2e3f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x0a589ef9 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x0f548d44 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x1235032d ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x13b23183 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x173fc676 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1849d6ec cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x1adef9fb cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1afad2a8 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x1b1139eb cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x206ba8af cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x206ef733 cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x22c80df2 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x257e3661 wiphy_read_of_freq_limits +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x28a16b7b cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x3134f2e3 regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x36f20034 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x38cb594a ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x3ab5facf cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x4342e44b cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x4347872f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x45e745d2 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x4a37e579 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x4a5130e7 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4bdf7e34 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x505c9fd2 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x50687d2b cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x5526793e cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x593b782f wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x5c6433a2 cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x60d3dcc1 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x612ccfe5 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x6270f2f5 cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6361c270 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x656befc5 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x67d55947 cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x68b5e63a cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x68c4a631 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6aa7b660 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x6b966db9 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x6bdabe30 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6c703c82 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x6db8e493 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x72bc3406 cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7a3d441a cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7af81c59 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x813fac2a cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x84a20611 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x84b2c5f1 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x88866c65 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x8b24e88f cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x8fb5484a cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x8fe5e011 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x913ebf9e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x91c2a859 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x93476cf5 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x98c10599 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x9b4f9024 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0x9de3ed76 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xa03d59fb cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa2a6e996 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xa343f5ca cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xad7ff5fc cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0xae3c10de cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb0fbb57d cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb5a5785f ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc021a8b6 cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0xc17f61ec cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc697f802 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xc7525391 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xca3babd0 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xcb7b3045 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xd26b2cc0 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xd40dd735 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd42a37c8 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xd51657f2 cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd64a6626 cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xd7f6f362 cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc88ce92 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdd5a3210 cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0xe011287a cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xe2c5ac3a cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xe3847558 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xe43d24f1 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe74583f0 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe8a62eff __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xeaf842ce ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xed71b358 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xf3b25a5f wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf5a07d9a __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf6de2333 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xf90921d7 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xf97ba0a1 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf9cba6a6 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/lib80211 0x1cb25988 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x5102d92a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x6beba180 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x89a712f3 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xe3fb62da lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xf3296e1b lib80211_get_crypto_ops +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x28d9d3e8 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x60de800c snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x64db7fb6 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x8bc6900a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcb558d82 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1724fb56 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x17fcf66b snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cff6e14 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2f853c43 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5f7f98 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x56efbc6b snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xdaf3383a snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8cdc5846 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x99d0e449 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0961d4f5 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0a9023f6 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0c8ae889 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x16641c21 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1ef26e32 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2633c8d6 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2daad9b7 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3b60fc81 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6c60b786 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7508470f snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7b14131c snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8080a0f0 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8de843b1 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9f01c37e snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa32aa5b9 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xae1672df __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb9448de snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe50d001e snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe5f54b36 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xffb3fedd __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0xffcdc4a6 snd_seq_device_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xa8480b75 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x252423b0 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x3e102755 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x43b9bd38 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8a5a2689 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb07923c5 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb727df00 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc1324873 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xda3d6334 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdd4babc0 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0daac3ea snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4fee764c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x58071c30 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x62830396 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x76681629 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8079908b snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9463d21c snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdaaa2b7a snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf918dc9d snd_vx_resume +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x028c35c6 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04a5d221 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x14f18616 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18a5f475 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c78c271 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2070ffe7 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x21bc12bb avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32e19543 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x471ba183 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4fed7a9c fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x58112be2 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f08cbca cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a87c442 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7b600dac fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8148c9e6 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb27834a5 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb87335b9 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbd2d1b2b fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc8a50d22 cmp_connection_reserve +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca7061cf amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcbb8aa8e amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xce201d3a amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcf285377 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd7ebcd70 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9c26e8b iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe60f281f cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe6f04d18 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf00217d2 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf7424db4 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xffaf1e63 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x8ee63b62 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xdc4b39ec snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0930debe snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x11111a0e snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x48c19f78 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7e1e3127 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8d6047da snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc3e2b8c4 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd9088c47 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe3496ec7 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3344ae39 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x4870af2b snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x97b88db6 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbba2468a snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x564fdaba snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf619f782 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x14c8e429 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x556182a9 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5b555ea3 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xce2958da snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd801ec5e snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe2bd649e snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x013e4ae5 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x449aeb0b snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x51ac52db snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x96da77e5 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd53658d5 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdcd862a3 snd_i2c_probeaddr +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x004c2438 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x25d13b5a snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3b496840 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3d878235 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3e37998a snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x414f9205 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4701169b snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4b3b5b2e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x58eed666 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5d9f268e snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6bc81a02 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e28e9bb snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x943f3256 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa911d7e5 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbbdae39f snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdf1ec01f snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe3db10a0 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x180ecde5 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x21d60c68 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2f649872 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5e5b2ed3 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x63a34378 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa33f6743 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd5081e4b snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe898cbbd snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf32a95b6 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0869803e snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6e901560 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7c7c93f0 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d6c1167 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0e7d3cc3 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25b2fe3e oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x36681c8f oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x416a881e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44c92bb2 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4a51030b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4f0c1066 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5747e9e5 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x587a7436 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6328f616 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x650ccd9d oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6cd266f5 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7420257d oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa4df830e oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb44e4acc oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb4e79d2e oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb6609101 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbc0ca601 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdecd6fd8 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe302b052 oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x01e3bc2f snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3aa9e3a7 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5a1bf903 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x91f1c1ea snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xcc30a735 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x2bfabe0c pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0xad47d305 pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x7d4a321c tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x832d6486 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x159b4bb2 aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xe05d2ba4 aic32x4_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xebefcbd8 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/qcom/snd-soc-qcom-common 0x72f3d5e6 qcom_snd_parse_of +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0584743d sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x05ac96b7 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x074923be snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0b4832c6 snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0b7cf620 snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0c18ad46 snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2263f4c0 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x236e28aa snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3009c671 snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x30ca7104 snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x37a62d3a snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3904d91b sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3d3beb1a snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5749d557 snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x599a9cb8 sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5b967219 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5fe62cb2 sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6119cdce snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x66cf0148 snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6d9183be snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6e296971 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x70660b5e sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x745f7ac2 snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x771ae282 sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x792e7b26 snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7e1c6182 snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7e46223d snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8d1cdd5c snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8f851681 snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9275b7bd snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x96e36bf8 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x97e352ca snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9b463d0a snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa398376d snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xa631c48d snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xac298b0d snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xac4d1703 sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad055b2c sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xadbeaff7 snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb3652b56 snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xba6d754d snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xce165827 snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd021484c snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd131f665 snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd6f7357b snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd927eca8 sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdbfdfbf0 snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe26568a4 sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe8a72db2 sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeee37a0b snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf2ef432d snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf38c763b snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf96a4a56 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf9ede523 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xfa969633 snd_sof_free_trace +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x122beed7 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x285f4f5c snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3515766e snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc53af771 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdcf0389f snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe0a956c5 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x44db6e41 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x801ce873 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x97b7ac12 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9f632a2c snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbc531e15 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbe2c305c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc0f9c9ea snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd7295068 snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x2083a8c1 __snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x0005d929 framebuffer_release +EXPORT_SYMBOL vmlinux 0x000acf4d scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x002acffc devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x002f41ce edac_mc_find +EXPORT_SYMBOL vmlinux 0x003e808c devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x003facaf tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x0041085a skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x00487f31 fb_pan_display +EXPORT_SYMBOL vmlinux 0x007dbb82 seq_path +EXPORT_SYMBOL vmlinux 0x00804f3e msm_pinctrl_dev_pm_ops +EXPORT_SYMBOL vmlinux 0x0088b9ab sk_free +EXPORT_SYMBOL vmlinux 0x008f07fe nla_append +EXPORT_SYMBOL vmlinux 0x009adc7b mmc_erase +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e79ba2 tty_unlock +EXPORT_SYMBOL vmlinux 0x00f2e5d4 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01054a95 pci_pme_active +EXPORT_SYMBOL vmlinux 0x0107075c neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x010e522b __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0115d800 param_set_byte +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x0129c4f8 par_io_data_set +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x01830813 kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x01872b53 ucc_of_parse_tdm +EXPORT_SYMBOL vmlinux 0x019002be ip_setsockopt +EXPORT_SYMBOL vmlinux 0x01911cd8 make_bad_inode +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01dca497 noop_fsync +EXPORT_SYMBOL vmlinux 0x01e37b0a pcie_get_mps +EXPORT_SYMBOL vmlinux 0x01e769d6 __next_node_in +EXPORT_SYMBOL vmlinux 0x01fab8a5 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x0205cadd key_type_keyring +EXPORT_SYMBOL vmlinux 0x0207fab7 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x02091dcd pci_set_mwi +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x023c084d scsi_device_get +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x02570d71 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x02673d37 devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0276887c unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0290bea9 pci_irq_vector +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02b2816d cdev_alloc +EXPORT_SYMBOL vmlinux 0x02b6fc05 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x02c065f8 ucc_set_qe_mux_mii_mng +EXPORT_SYMBOL vmlinux 0x02c68492 tty_check_change +EXPORT_SYMBOL vmlinux 0x02df50b0 jiffies +EXPORT_SYMBOL vmlinux 0x02e121ca param_set_ulong +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f8957a rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x030b628d __sb_start_write +EXPORT_SYMBOL vmlinux 0x0326ff50 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x033489fd netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0340083a __frontswap_load +EXPORT_SYMBOL vmlinux 0x03530fd8 softnet_data +EXPORT_SYMBOL vmlinux 0x0357a3af get_fs_type +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0377d8ab md_finish_reshape +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x038c88be blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x03914173 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03b11ae0 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c60516 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x03fa6724 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x03fba701 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041eac28 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x0425b43b mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x0429f552 can_nice +EXPORT_SYMBOL vmlinux 0x04426c15 vme_lm_request +EXPORT_SYMBOL vmlinux 0x04426f14 mem_section +EXPORT_SYMBOL vmlinux 0x044272df devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04496e8d snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x044cd938 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x044fb722 dev_base_lock +EXPORT_SYMBOL vmlinux 0x0453eb19 input_grab_device +EXPORT_SYMBOL vmlinux 0x045c0f23 dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x045ccc04 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x0461a6e1 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x047c9e89 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x048d1ce4 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x049d36f4 get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0x04b01a47 d_obtain_root +EXPORT_SYMBOL vmlinux 0x04c5f69b param_set_long +EXPORT_SYMBOL vmlinux 0x04c6b4c3 __crypto_memneq +EXPORT_SYMBOL vmlinux 0x04c90784 cdrom_open +EXPORT_SYMBOL vmlinux 0x04cb31c4 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04e0bff8 dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04fa6cd0 xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x0504fc2d __kfree_skb +EXPORT_SYMBOL vmlinux 0x0508088e ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x0517cf90 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0x051b46b6 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05434d58 posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x054577ab seq_vprintf +EXPORT_SYMBOL vmlinux 0x05484c07 vm_map_pages +EXPORT_SYMBOL vmlinux 0x0551a9ca __netif_schedule +EXPORT_SYMBOL vmlinux 0x05521a1b __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x05522d7f dev_load +EXPORT_SYMBOL vmlinux 0x057de361 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0590c113 deactivate_super +EXPORT_SYMBOL vmlinux 0x0596c772 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x05a8b8b9 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x05b0caa0 hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x05ca18a2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x05cd617e gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x05e13eb9 ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x05e305d1 generic_permission +EXPORT_SYMBOL vmlinux 0x05fc35e5 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x060837f1 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x06109d12 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0621b73f kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x0624e362 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x062d423a kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06350c70 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x06724b38 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x067ea780 mutex_unlock +EXPORT_SYMBOL vmlinux 0x06938d16 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x0718f44b xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0x071c3067 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0732d428 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x07394d80 pci_set_master +EXPORT_SYMBOL vmlinux 0x07410d3c rt_dst_clone +EXPORT_SYMBOL vmlinux 0x0748e677 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x074a85aa kern_path +EXPORT_SYMBOL vmlinux 0x075a2258 cpu_tlb +EXPORT_SYMBOL vmlinux 0x075a2c33 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x075fe937 fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x07684401 input_inject_event +EXPORT_SYMBOL vmlinux 0x07719426 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x07776848 may_umount_tree +EXPORT_SYMBOL vmlinux 0x077af67c init_opal_dev +EXPORT_SYMBOL vmlinux 0x077e386e sock_no_listen +EXPORT_SYMBOL vmlinux 0x078510f9 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x07a82bbd xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a9a845 security_sock_graft +EXPORT_SYMBOL vmlinux 0x07ad5684 prepare_creds +EXPORT_SYMBOL vmlinux 0x07af27f6 scsi_device_put +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e2c085 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x07f057de mdiobus_scan +EXPORT_SYMBOL vmlinux 0x07f2e74c nf_log_packet +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x07f887c3 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x0808148b filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x08087809 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x081e5365 proc_create_mount_point +EXPORT_SYMBOL vmlinux 0x0821784e tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084afc36 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x084e1adc tcp_shutdown +EXPORT_SYMBOL vmlinux 0x08690bbf __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x0876656b netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x0882d0b7 unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x08a36c8f nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0x08a82cc5 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x08c4fd32 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x08d25525 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x08d4ca86 mount_subtree +EXPORT_SYMBOL vmlinux 0x08dd1f19 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x08de2cbb nd_device_register +EXPORT_SYMBOL vmlinux 0x08e39398 cmd_db_read_addr +EXPORT_SYMBOL vmlinux 0x08ebc224 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x08f228d8 vfs_symlink +EXPORT_SYMBOL vmlinux 0x09017abf mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0x09037193 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x09207831 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0x09287c47 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x092d665e commit_creds +EXPORT_SYMBOL vmlinux 0x092ff2d2 udp_pre_connect +EXPORT_SYMBOL vmlinux 0x09466089 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x094e28e6 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097cb673 skb_seq_read +EXPORT_SYMBOL vmlinux 0x097f58a7 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x0982d22d genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09933b19 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x09992aef sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x09a12428 blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0x09aa11a7 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x09b9f228 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09caad8b mmput_async +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09f831b9 inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x0a064b2e dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x0a06f6a7 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0x0a0c92a1 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x0a20d621 ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a29feae tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x0a2c65c2 snd_timer_new +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a34b1c0 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x0a41cf17 dev_open +EXPORT_SYMBOL vmlinux 0x0a69f61c mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x0a760100 keyring_alloc +EXPORT_SYMBOL vmlinux 0x0a8ccaa2 put_watch_queue +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa57908 netif_skb_features +EXPORT_SYMBOL vmlinux 0x0aa79dfe backlight_force_update +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0abf256c jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x0aca674f vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0x0ace4bf4 __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0adc2bed pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x0ae547ed xxh64_update +EXPORT_SYMBOL vmlinux 0x0ae9df49 rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0x0afe31f0 xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x0b0d24c5 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x0b1b939e kmemdup +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b1c7da9 __seq_open_private +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b4005ce __devm_request_region +EXPORT_SYMBOL vmlinux 0x0b40d7cf _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b617520 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x0b641ad8 phy_loopback +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8710a3 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0x0b99031f tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0ba57220 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0x0bacd329 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcb4d7e forget_cached_acl +EXPORT_SYMBOL vmlinux 0x0bccdc82 inode_permission +EXPORT_SYMBOL vmlinux 0x0bda91ef poll_initwait +EXPORT_SYMBOL vmlinux 0x0bdaf4a3 setattr_copy +EXPORT_SYMBOL vmlinux 0x0beff2b9 pci_find_resource +EXPORT_SYMBOL vmlinux 0x0bf1143f iov_iter_pipe +EXPORT_SYMBOL vmlinux 0x0bf24b4d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c292016 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x0c35edc5 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x0c7b9aec of_mdiobus_child_is_phy +EXPORT_SYMBOL vmlinux 0x0c87071d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0ca7df8b xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x0caf51fb config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cc1130e netdev_notice +EXPORT_SYMBOL vmlinux 0x0cc1318b mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0d01fbb0 key_alloc +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d0b60a0 mdiobus_read +EXPORT_SYMBOL vmlinux 0x0d2132ca snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x0d2ca20f ucc_fast_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d8cff96 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0x0da63cbd ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x0dba5e9a radix_tree_delete +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc299ae blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x0ddc75e2 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0x0de257ad netdev_crit +EXPORT_SYMBOL vmlinux 0x0de81d5b blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x0df04b2d blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x0df48f58 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x0df7c4e1 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x0df9b6f8 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x0dfff1cd scsi_print_sense +EXPORT_SYMBOL vmlinux 0x0e0d9699 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x0e13da8d framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e1c8804 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x0e335131 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0e512aa6 rtc_add_groups +EXPORT_SYMBOL vmlinux 0x0e66fb5e get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x0e9ca233 pin_user_pages +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed76e4f inet6_getname +EXPORT_SYMBOL vmlinux 0x0ee1a44e blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0ee656f7 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x0eea0399 strscpy +EXPORT_SYMBOL vmlinux 0x0f00439e snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f172543 vfs_create +EXPORT_SYMBOL vmlinux 0x0f1e8088 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x0f319a99 security_inet_conn_established +EXPORT_SYMBOL vmlinux 0x0f78bc6f rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0x0f800655 path_nosuid +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f92edb4 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x0fa0964a from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0fea042c arp_create +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff72640 proc_create_single_data +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x10018cb0 __pv_offset +EXPORT_SYMBOL vmlinux 0x10083973 dev_get_flags +EXPORT_SYMBOL vmlinux 0x1023718e fb_get_mode +EXPORT_SYMBOL vmlinux 0x1025009a cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x102936ec qe_clock_source +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x103cba20 netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x1054422c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x105d09b9 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x10739f1e swake_up_locked +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10834602 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x1085d5ee down_read_killable +EXPORT_SYMBOL vmlinux 0x10942d7f vme_irq_generate +EXPORT_SYMBOL vmlinux 0x10af17fc __d_lookup_done +EXPORT_SYMBOL vmlinux 0x10c23cf2 dup_iter +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10ecfc2e nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x10f8772b __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11128404 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x11304b0a ip_frag_next +EXPORT_SYMBOL vmlinux 0x113a3e68 config_group_init +EXPORT_SYMBOL vmlinux 0x114964a6 __phy_resume +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11802422 __bread_gfp +EXPORT_SYMBOL vmlinux 0x11825d53 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0x1183bf09 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x118cd687 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11ada1cf ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x11d16ed6 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x11d87a76 netdev_warn +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11ee6b15 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ffdfee ucc_slow_stop_tx +EXPORT_SYMBOL vmlinux 0x12008d48 rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x121ca633 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x12240fc7 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x1271bbc0 __do_once_done +EXPORT_SYMBOL vmlinux 0x1275fcff bdev_read_only +EXPORT_SYMBOL vmlinux 0x12827367 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1296c751 _copy_to_iter +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b1204e nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x12c832da ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12efc8d6 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x12f19edf __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12fbb91e vme_dma_request +EXPORT_SYMBOL vmlinux 0x130b1b15 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x1314260d elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x1317533f max8925_reg_write +EXPORT_SYMBOL vmlinux 0x131b7254 snd_timer_start +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x133684e7 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x13407da8 phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x1345cd88 irq_to_desc +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x137bb9e8 current_time +EXPORT_SYMBOL vmlinux 0x137eb822 rproc_report_crash +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x139e89f7 done_path_create +EXPORT_SYMBOL vmlinux 0x13c75fd3 mdio_device_remove +EXPORT_SYMBOL vmlinux 0x13ccc67c inc_nlink +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d24f16 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x13d9a5a4 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x13dbd46a tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x13de540c d_exact_alias +EXPORT_SYMBOL vmlinux 0x13e7932e sg_miter_start +EXPORT_SYMBOL vmlinux 0x13ede703 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fa7128 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x13fe6e61 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x140cef8e cmxgcr_lock +EXPORT_SYMBOL vmlinux 0x1455a2d5 drop_super +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x146c61cf proc_create +EXPORT_SYMBOL vmlinux 0x14738817 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x1486978a gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0x1487b5ca tcp_make_synack +EXPORT_SYMBOL vmlinux 0x149443f2 dma_pool_create +EXPORT_SYMBOL vmlinux 0x149d0722 __skb_checksum +EXPORT_SYMBOL vmlinux 0x14c93d9f security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14f17f19 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x14fc1250 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x14fd5f7e submit_bio +EXPORT_SYMBOL vmlinux 0x15110684 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x15336559 phy_start_cable_test +EXPORT_SYMBOL vmlinux 0x1533fff7 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1534a1d3 fc_mount +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1559652b __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x1578a4fe sock_create_kern +EXPORT_SYMBOL vmlinux 0x1580b358 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x158f5370 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x1591cd5f inet_stream_connect +EXPORT_SYMBOL vmlinux 0x15a19a7a netlink_net_capable +EXPORT_SYMBOL vmlinux 0x15ad5d4c unpin_user_pages +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c6754b nd_btt_probe +EXPORT_SYMBOL vmlinux 0x15d433c0 ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x15d4fa78 clear_inode +EXPORT_SYMBOL vmlinux 0x15e891a8 flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0x1601c17d has_capability +EXPORT_SYMBOL vmlinux 0x160323fc pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0x160c31aa dev_disable_lro +EXPORT_SYMBOL vmlinux 0x160c5a11 dentry_open +EXPORT_SYMBOL vmlinux 0x1617c0e7 config_group_find_item +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x163c602d flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x164541fb param_array_ops +EXPORT_SYMBOL vmlinux 0x16525cc4 xa_find +EXPORT_SYMBOL vmlinux 0x1659c76b vmap +EXPORT_SYMBOL vmlinux 0x1669d699 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x166b4fe4 init_special_inode +EXPORT_SYMBOL vmlinux 0x168cca7a bio_uninit +EXPORT_SYMBOL vmlinux 0x168deb2d skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x1697b130 component_match_add_release +EXPORT_SYMBOL vmlinux 0x16cb0d75 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16fd57fb simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x17265777 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x172cab5f seq_lseek +EXPORT_SYMBOL vmlinux 0x1738c19e _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x1741848d vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x1778632d genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x17836d62 __sk_receive_skb +EXPORT_SYMBOL vmlinux 0x17887935 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x178c4894 qe_upload_firmware +EXPORT_SYMBOL vmlinux 0x179e5008 nvm_end_io +EXPORT_SYMBOL vmlinux 0x17af08b2 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x17b15166 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x17cd5989 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x17cfbbb4 lock_rename +EXPORT_SYMBOL vmlinux 0x17da755d rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0x17e4e112 tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0x17f0cb54 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x1804f935 pci_release_resource +EXPORT_SYMBOL vmlinux 0x1808b878 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x180a225e skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x1814ba9f dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x18582f34 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x185f96e5 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x18697957 mmc_add_host +EXPORT_SYMBOL vmlinux 0x1874b05b hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x187884a8 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x188568b2 mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189c5980 arm_copy_to_user +EXPORT_SYMBOL vmlinux 0x18a45515 pci_find_bus +EXPORT_SYMBOL vmlinux 0x18c063c8 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x18ce2e8c __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x18d8c2b5 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18fa3f27 kthread_blkcg +EXPORT_SYMBOL vmlinux 0x18fbfae4 truncate_setsize +EXPORT_SYMBOL vmlinux 0x18fcc8fd ___pskb_trim +EXPORT_SYMBOL vmlinux 0x18ffd98c tcp_ioctl +EXPORT_SYMBOL vmlinux 0x1900da3e gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x19026fa5 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x19084f5d d_move +EXPORT_SYMBOL vmlinux 0x190e8ac0 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0x190fb6ad iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x191018da pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x19380128 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x193d97ac scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x195c8596 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x196a147c tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0x19702370 udp_seq_ops +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x19958360 rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19bff4f9 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x19c96422 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x19d3f766 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x19f97772 fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x19ff0787 xp_can_alloc +EXPORT_SYMBOL vmlinux 0x1a10f789 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x1a159d27 neigh_xmit +EXPORT_SYMBOL vmlinux 0x1a21d691 __ksize +EXPORT_SYMBOL vmlinux 0x1a29a805 _dev_warn +EXPORT_SYMBOL vmlinux 0x1a304f97 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x1a3f9753 cdev_device_del +EXPORT_SYMBOL vmlinux 0x1a437271 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6d1957 dev_addr_init +EXPORT_SYMBOL vmlinux 0x1a70989e padata_start +EXPORT_SYMBOL vmlinux 0x1a745a3d input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x1a7bc9ef xxh32 +EXPORT_SYMBOL vmlinux 0x1a824932 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9c7813 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x1aa86d18 rdma_dim +EXPORT_SYMBOL vmlinux 0x1abe935c vfs_get_link +EXPORT_SYMBOL vmlinux 0x1ac3693d vfs_iter_write +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1aded990 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0x1adf820e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b03a02a amba_find_device +EXPORT_SYMBOL vmlinux 0x1b055971 mpage_readpage +EXPORT_SYMBOL vmlinux 0x1b0a4bfc inode_insert5 +EXPORT_SYMBOL vmlinux 0x1b0ff709 netif_napi_del +EXPORT_SYMBOL vmlinux 0x1b11b0ec serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x1b15bd74 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x1b25f187 __xa_store +EXPORT_SYMBOL vmlinux 0x1b3a6af3 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x1b47624f drop_super_exclusive +EXPORT_SYMBOL vmlinux 0x1b4cd946 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x1b53017f ipv4_specific +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b8a4088 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x1b8ca48f sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x1bab8836 dev_set_alias +EXPORT_SYMBOL vmlinux 0x1bf459cf kernel_listen +EXPORT_SYMBOL vmlinux 0x1c0fcb9a set_bh_page +EXPORT_SYMBOL vmlinux 0x1c404347 register_framebuffer +EXPORT_SYMBOL vmlinux 0x1c4adcca get_tree_keyed +EXPORT_SYMBOL vmlinux 0x1c560f13 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x1c5a389d nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c712c9c fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x1c777c5c dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x1c9eb4ae of_lpddr3_get_min_tck +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cb6da41 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x1ce22bd4 dquot_drop +EXPORT_SYMBOL vmlinux 0x1cfbdf3c sock_register +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d06e3ad inet_release +EXPORT_SYMBOL vmlinux 0x1d0c0853 _dev_err +EXPORT_SYMBOL vmlinux 0x1d0e0c6d inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x1d0f3a23 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x1d13af5f set_wb_congested +EXPORT_SYMBOL vmlinux 0x1d1993f2 inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x1d258b48 param_set_invbool +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d30fce1 configfs_register_group +EXPORT_SYMBOL vmlinux 0x1d37eeed ioremap +EXPORT_SYMBOL vmlinux 0x1d3884b4 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x1d51ba81 mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d603920 reuseport_select_sock +EXPORT_SYMBOL vmlinux 0x1d66b4e5 ucc_fast_dump_regs +EXPORT_SYMBOL vmlinux 0x1d702c76 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x1d7d4fec md_error +EXPORT_SYMBOL vmlinux 0x1d91d7a0 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x1d9b8920 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x1da0a776 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x1db33266 inode_init_owner +EXPORT_SYMBOL vmlinux 0x1db42fb6 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de3f19a ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1de67f9b qcom_scm_io_writel +EXPORT_SYMBOL vmlinux 0x1de6bad7 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x1dea8e8a sound_class +EXPORT_SYMBOL vmlinux 0x1e099fda tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e1e81e0 notify_change +EXPORT_SYMBOL vmlinux 0x1e221fcd dev_activate +EXPORT_SYMBOL vmlinux 0x1e238871 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x1e2899e7 snd_card_new +EXPORT_SYMBOL vmlinux 0x1e454ce1 dev_driver_string +EXPORT_SYMBOL vmlinux 0x1e4d68b2 audit_log +EXPORT_SYMBOL vmlinux 0x1e4e4975 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x1e52776a d_find_any_alias +EXPORT_SYMBOL vmlinux 0x1e5284e4 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6d7eed __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x1e96f43d __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb64646 div64_s64 +EXPORT_SYMBOL vmlinux 0x1ec9fbdf genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x1ece300c i2c_del_driver +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1efb4e5a eth_get_headlen +EXPORT_SYMBOL vmlinux 0x1f2996e7 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1f2ac2a4 skb_tx_error +EXPORT_SYMBOL vmlinux 0x1f2c37f0 ihold +EXPORT_SYMBOL vmlinux 0x1f3a2208 devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0x1f3a8218 snd_info_register +EXPORT_SYMBOL vmlinux 0x1f70b926 sock_alloc +EXPORT_SYMBOL vmlinux 0x1f746d9d ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1f7a2c56 get_phy_device +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fb4ae38 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x1fbbee1b rproc_del +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc6debd mmc_can_erase +EXPORT_SYMBOL vmlinux 0x1fcd3f01 pci_request_regions +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd4b247 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe99d3f file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x1fed4c69 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x1ffda1aa udp_seq_start +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200036a3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x20070ea2 _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200f8748 hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x2030c20a udp_poll +EXPORT_SYMBOL vmlinux 0x20417b97 unix_get_socket +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x2061b2b7 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x206d9eee simple_write_begin +EXPORT_SYMBOL vmlinux 0x2072b8b4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2074e1c6 reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x20846110 down_killable +EXPORT_SYMBOL vmlinux 0x208a06e6 tcp_req_err +EXPORT_SYMBOL vmlinux 0x208ad4ad request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20af635a posix_acl_valid +EXPORT_SYMBOL vmlinux 0x20b5eb06 send_sig_info +EXPORT_SYMBOL vmlinux 0x20c6b15e skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x20cc1752 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20f064a7 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x20fce982 kernel_write +EXPORT_SYMBOL vmlinux 0x2104b2a9 kill_fasync +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x210dd0f9 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x2113248e build_skb +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x212133db xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0x2139a7cd mpage_writepage +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x2144438f xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x214df41b inet_addr_type +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x215bea19 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0x216a60d5 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x218f3b1c blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be258c __nla_reserve +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21db55ad of_root +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x22085d6e __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x2216c7a5 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223c0d52 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x226b50f8 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x226cbbc6 console_stop +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22974c58 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22bf070f _copy_from_iter +EXPORT_SYMBOL vmlinux 0x22ed1015 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x230290ff vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x2305c29f rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0x232cad3c vm_insert_page +EXPORT_SYMBOL vmlinux 0x232d44a1 free_task +EXPORT_SYMBOL vmlinux 0x233e177b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x23489215 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x235abb60 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0x23619cff jiffies_64 +EXPORT_SYMBOL vmlinux 0x236edd34 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x239e5a8f of_node_put +EXPORT_SYMBOL vmlinux 0x23a5934d pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x23a962f0 update_devfreq +EXPORT_SYMBOL vmlinux 0x23b74cbf starget_for_each_device +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23b9e5e3 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x23bbdeed _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23cef842 dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0x23d39624 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x23e47a64 inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0x23eb9c86 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23f9c5ce xps_needed +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240bf63f clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2424e4e9 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x2438f3da param_get_string +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245abe12 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x246790df idr_for_each +EXPORT_SYMBOL vmlinux 0x247313f7 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x2478c834 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x247a0a44 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x247d3fac nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x248577ce dqget +EXPORT_SYMBOL vmlinux 0x24875a0d snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x2493bc8f pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x2497a12d __mod_node_page_state +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24b68750 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0x24b97378 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0x24c70460 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x24cf2c8e pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x24cf355e blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24e85d41 mount_nodev +EXPORT_SYMBOL vmlinux 0x24ea7664 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x24f9a421 clk_add_alias +EXPORT_SYMBOL vmlinux 0x24fbf832 seq_open +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x251fc935 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x252161cf __page_symlink +EXPORT_SYMBOL vmlinux 0x2523e114 snd_pcm_new +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527b496 sg_miter_next +EXPORT_SYMBOL vmlinux 0x2534b2e4 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x254122b6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x254b79b7 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0x254d81a9 get_super_thawed +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25719dce pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x257ae45c dma_fence_free +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x25bbee24 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x25c2fb71 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x25c7cec3 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e78c50 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25eda87e nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26172039 phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0x261bc020 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x2625ae26 tty_do_resize +EXPORT_SYMBOL vmlinux 0x262ac3c8 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0x26314ef0 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x263ba4af blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c1abd skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x263f62c3 scsi_host_get +EXPORT_SYMBOL vmlinux 0x2642e33a ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x26486bfa flow_rule_alloc +EXPORT_SYMBOL vmlinux 0x264ea38f dcache_readdir +EXPORT_SYMBOL vmlinux 0x2683a11b mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x268b8ccb nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x2690e6c1 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x26a369c2 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c102bf fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x26c97ed3 seq_read_iter +EXPORT_SYMBOL vmlinux 0x26d24cb8 vm_event_states +EXPORT_SYMBOL vmlinux 0x26d266b0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x26db48a6 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x26f0d8ce empty_zero_page +EXPORT_SYMBOL vmlinux 0x26f5dfdf nobh_writepage +EXPORT_SYMBOL vmlinux 0x26fd2ace netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x270190e6 phy_write_mmd +EXPORT_SYMBOL vmlinux 0x270dfce4 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x274c242a of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x275c8e05 tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x275dfee4 ucc_slow_free +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x276bdb6b pci_select_bars +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27894b31 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x279a0dd2 input_open_device +EXPORT_SYMBOL vmlinux 0x279d6b3e dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0x27a14a9b make_kgid +EXPORT_SYMBOL vmlinux 0x27b7016c proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x27b9f7c8 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c68705 node_states +EXPORT_SYMBOL vmlinux 0x27ca94f0 nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27dda698 key_unlink +EXPORT_SYMBOL vmlinux 0x27ec872c config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x27f1410c dquot_acquire +EXPORT_SYMBOL vmlinux 0x2803567e filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281ae721 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x2823e004 no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0x283c7506 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x2852a08e d_drop +EXPORT_SYMBOL vmlinux 0x2873e07f unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x2876bdce generic_update_time +EXPORT_SYMBOL vmlinux 0x28779cb7 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x2878e15a idr_destroy +EXPORT_SYMBOL vmlinux 0x2880d0f7 __neigh_create +EXPORT_SYMBOL vmlinux 0x28945f76 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x2899fd22 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x28bd0aab dev_uc_add +EXPORT_SYMBOL vmlinux 0x28d372aa xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x28e43491 __lock_page +EXPORT_SYMBOL vmlinux 0x28e80c37 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x2946da06 load_nls_default +EXPORT_SYMBOL vmlinux 0x2946e7ef __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x29779429 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x298ee6a5 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x299a9513 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x299e35bc may_umount +EXPORT_SYMBOL vmlinux 0x29a47fe9 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x29a5be1a ethtool_notify +EXPORT_SYMBOL vmlinux 0x29d9f26e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x2a0fd0d0 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x2a109b8f inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x2a1abfb3 set_anon_super +EXPORT_SYMBOL vmlinux 0x2a2101a8 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x2a2b1722 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x2a2e3ef5 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a4e1f81 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x2a55877a genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x2a55f7c8 unlock_buffer +EXPORT_SYMBOL vmlinux 0x2a58e21a mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x2a85cf4f mark_info_dirty +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa4dfb7 generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x2aad94e0 input_setup_polling +EXPORT_SYMBOL vmlinux 0x2abcf01c devm_of_iomap +EXPORT_SYMBOL vmlinux 0x2adc1f07 do_clone_file_range +EXPORT_SYMBOL vmlinux 0x2ae5323b fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x2aef2aee __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x2af30d75 mdiobus_write +EXPORT_SYMBOL vmlinux 0x2b00c45f flush_signals +EXPORT_SYMBOL vmlinux 0x2b01c083 of_get_compatible_child +EXPORT_SYMBOL vmlinux 0x2b16baa2 filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x2b31f67a qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x2b415834 nand_monolithic_write_page_raw +EXPORT_SYMBOL vmlinux 0x2b59a20a register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x2b5ab97d _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x2b5e4fd7 pci_save_state +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b69574e tcf_idr_create +EXPORT_SYMBOL vmlinux 0x2b6f23f7 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x2b8210bf netif_rx +EXPORT_SYMBOL vmlinux 0x2b8853c5 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x2b99722a __cpu_active_mask +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba5ff33 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x2bb0ce03 path_is_mountpoint +EXPORT_SYMBOL vmlinux 0x2bb33077 vscnprintf +EXPORT_SYMBOL vmlinux 0x2bbee4a2 snd_jack_report +EXPORT_SYMBOL vmlinux 0x2bcc13de netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x2bcfdcc4 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x2be45807 netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x2beb5222 snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL vmlinux 0x2bf85891 neigh_table_init +EXPORT_SYMBOL vmlinux 0x2bfb6a15 kernel_accept +EXPORT_SYMBOL vmlinux 0x2bff5887 xa_destroy +EXPORT_SYMBOL vmlinux 0x2c13b339 skb_pull +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1a2119 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x2c1d39e8 param_get_ullong +EXPORT_SYMBOL vmlinux 0x2c22a17c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3239cb blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x2c541a1c vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0x2c67caed uart_get_divisor +EXPORT_SYMBOL vmlinux 0x2c6b6974 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x2c6f92bc simple_setattr +EXPORT_SYMBOL vmlinux 0x2c74b1d6 cdev_del +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c80c447 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c9d3756 vsnprintf +EXPORT_SYMBOL vmlinux 0x2cc6a73c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x2cc7c4ff file_open_root +EXPORT_SYMBOL vmlinux 0x2ce699fb bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x2ce9a414 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x2cf14b15 ucc_fast_disable +EXPORT_SYMBOL vmlinux 0x2cf4c57b of_device_register +EXPORT_SYMBOL vmlinux 0x2cf83bd0 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x2cfde9a2 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x2d068923 netdev_update_features +EXPORT_SYMBOL vmlinux 0x2d07a53e tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0x2d127db8 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x2d13dc9b generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d25513a snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d45c835 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x2d4b1bd2 kfree_skb +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d6fcc06 __kmalloc +EXPORT_SYMBOL vmlinux 0x2d75fb42 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x2d8fc491 registered_fb +EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2d9c0aec of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x2da2ff35 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x2da81bff _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x2dcb7baf dev_close +EXPORT_SYMBOL vmlinux 0x2dd2874b pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x2ddb5abc snd_timer_instance_new +EXPORT_SYMBOL vmlinux 0x2dec67cd _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2a29bb locks_delete_block +EXPORT_SYMBOL vmlinux 0x2e3c4839 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e743310 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x2ea48d4f nd_device_notify +EXPORT_SYMBOL vmlinux 0x2eacbe22 ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x2eadc198 init_net +EXPORT_SYMBOL vmlinux 0x2eb2fc15 iunique +EXPORT_SYMBOL vmlinux 0x2eb90bac scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x2ebc3924 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x2ebd37aa inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2ecc60fb max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x2ed63eb1 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x2ee9b655 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0x2efaf1c3 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x2efbc74e inet_bind +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f1a5e53 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x2f1b0d62 ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x2f288b7f rio_query_mport +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f30f5a0 release_sock +EXPORT_SYMBOL vmlinux 0x2f50cbf5 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x2f50d74c set_nlink +EXPORT_SYMBOL vmlinux 0x2f56261a tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x2f57086d __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x2f5b0fdb gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0x2f5d2dcc mmc_remove_host +EXPORT_SYMBOL vmlinux 0x2f68d77b always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2f6ea6d2 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2fa3b41c snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fcf89aa lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0x2fd3c9a7 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x2fdb347c skb_unlink +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe50357 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x2ff6c64a send_sig_mceerr +EXPORT_SYMBOL vmlinux 0x2ffe70f8 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x3007c48d __frontswap_store +EXPORT_SYMBOL vmlinux 0x30275bfb __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x302779e3 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x3034fcdf tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x3040066f make_kprojid +EXPORT_SYMBOL vmlinux 0x304e345a flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x306ab000 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x30745185 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x307f30ec mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x30849b81 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x3084e0e7 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30c0cdfb pci_bus_type +EXPORT_SYMBOL vmlinux 0x30d8a12a tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x30d9a471 gen_pool_create +EXPORT_SYMBOL vmlinux 0x30da0c74 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30fe1792 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31218c6b __register_binfmt +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x312d90fd iov_iter_npages +EXPORT_SYMBOL vmlinux 0x3134d4b8 qdisc_put +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x314b20c8 scnprintf +EXPORT_SYMBOL vmlinux 0x315478ed set_page_dirty +EXPORT_SYMBOL vmlinux 0x31604792 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x31806124 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x31891e4c utf8nagemin +EXPORT_SYMBOL vmlinux 0x319217ee netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31a68738 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x31a7e255 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x31aae7f1 ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x31b01961 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x31b19700 simple_lookup +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b4ceb0 security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0x31baac76 fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x31bddf48 get_tree_nodev +EXPORT_SYMBOL vmlinux 0x31d6f2c1 ns_capable_setid +EXPORT_SYMBOL vmlinux 0x31dc66a0 sock_rfree +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x3232132e of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x32394d4b qe_issue_cmd +EXPORT_SYMBOL vmlinux 0x32430023 _totalhigh_pages +EXPORT_SYMBOL vmlinux 0x325f076f dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x327441c7 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x32744f55 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3281fb74 ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32a67c61 bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32f0de2e nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x33029925 kill_litter_super +EXPORT_SYMBOL vmlinux 0x3332f2a8 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x339190b0 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x33991756 vfs_get_tree +EXPORT_SYMBOL vmlinux 0x33b3106d eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x33d27415 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34068933 netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0x340e61de flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0x341cfcb8 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3425e9e6 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x342c7ae6 simple_getattr +EXPORT_SYMBOL vmlinux 0x343179eb mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0x3439ee46 remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x34581bd4 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x347766d8 bio_advance +EXPORT_SYMBOL vmlinux 0x3488251a scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x349b4277 xa_clear_mark +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349e50c6 da903x_query_status +EXPORT_SYMBOL vmlinux 0x34a04d71 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x34af7fbf nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x34c37173 vga_get +EXPORT_SYMBOL vmlinux 0x34c571aa snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0x34d6caec skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x34e12223 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x34f1be18 mroute6_is_socket +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f702c7 vfs_llseek +EXPORT_SYMBOL vmlinux 0x34f9ecfe km_report +EXPORT_SYMBOL vmlinux 0x350c7f19 user_path_create +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3545701d ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0x35519de4 phy_suspend +EXPORT_SYMBOL vmlinux 0x355b2807 dev_mc_add +EXPORT_SYMBOL vmlinux 0x355f57f2 vm_map_ram +EXPORT_SYMBOL vmlinux 0x3560e651 kmemdup_nul +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35696cb2 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x357c7228 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x358b768e disk_end_io_acct +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35a9e563 unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0x35b88d70 of_match_device +EXPORT_SYMBOL vmlinux 0x35bc2609 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x35bdc817 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0x35c5e06d tso_count_descs +EXPORT_SYMBOL vmlinux 0x35d7fd5b config_item_set_name +EXPORT_SYMBOL vmlinux 0x35e0a9f2 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x35e9e8d6 devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0x35ea78f5 atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x3634c69f mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0x363dbe0b scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x3655324b fb_find_mode +EXPORT_SYMBOL vmlinux 0x36588e6a tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x3667aa8f pcie_set_mps +EXPORT_SYMBOL vmlinux 0x367727f9 block_truncate_page +EXPORT_SYMBOL vmlinux 0x3678e821 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x3687e9dc key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x368d6555 write_cache_pages +EXPORT_SYMBOL vmlinux 0x369a2bcb __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x36af82d9 sock_create +EXPORT_SYMBOL vmlinux 0x36d69557 ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x36f1dd2a gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x36fabea4 scsi_host_put +EXPORT_SYMBOL vmlinux 0x36fb567d pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x37173a2c f_setown +EXPORT_SYMBOL vmlinux 0x371d3c7a devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x372c4f13 set_security_override +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3749b0df dquot_commit_info +EXPORT_SYMBOL vmlinux 0x374b47eb ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x3771fe7d sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x378f2af0 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b022f9 sg_split +EXPORT_SYMBOL vmlinux 0x37b3b990 param_get_invbool +EXPORT_SYMBOL vmlinux 0x37be5a26 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37bfae87 path_put +EXPORT_SYMBOL vmlinux 0x37c7f9ca pskb_expand_head +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37f3c04e phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37fc427e mmc_put_card +EXPORT_SYMBOL vmlinux 0x380faff8 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x381942fb blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3826bd00 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x38372b28 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x3842b3a6 unix_gc_lock +EXPORT_SYMBOL vmlinux 0x384b2803 finish_open +EXPORT_SYMBOL vmlinux 0x386d9ce9 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x3879bd1d i2c_clients_command +EXPORT_SYMBOL vmlinux 0x387a5db8 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x38863d4e napi_gro_frags +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a1d447 register_netdevice +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9691d pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38b7b2f5 d_tmpfile +EXPORT_SYMBOL vmlinux 0x38b85ab4 fd_install +EXPORT_SYMBOL vmlinux 0x38cce45c elv_rb_add +EXPORT_SYMBOL vmlinux 0x38e2906e __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x38fbc371 register_filesystem +EXPORT_SYMBOL vmlinux 0x3909d86d peernet2id +EXPORT_SYMBOL vmlinux 0x39179888 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393da7ac eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x3944cb44 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3955249f jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x398c5fd3 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x3992bc63 __xa_set_mark +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399b4a71 phy_device_create +EXPORT_SYMBOL vmlinux 0x399ec753 reuseport_add_sock +EXPORT_SYMBOL vmlinux 0x39a117f8 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x39a12ca7 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x39aac8df neigh_ifdown +EXPORT_SYMBOL vmlinux 0x39acd48a __destroy_inode +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bdc813 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c88fd5 flush_rcu_work +EXPORT_SYMBOL vmlinux 0x39d73ea8 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0x39dd8674 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a14aa43 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x3a2be20b xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a46fd61 serio_reconnect +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a81b622 param_get_charp +EXPORT_SYMBOL vmlinux 0x3a8c66d3 contig_page_data +EXPORT_SYMBOL vmlinux 0x3aaf816f blk_put_request +EXPORT_SYMBOL vmlinux 0x3ab2badf skb_find_text +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3acf1530 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x3ad6fd8e krait_get_l2_indirect_reg +EXPORT_SYMBOL vmlinux 0x3adf5af2 nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x3af031e2 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x3af5ee2b blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x3b0c1d6f netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x3b16bd7a posix_test_lock +EXPORT_SYMBOL vmlinux 0x3b209a35 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x3b2563cc input_set_poll_interval +EXPORT_SYMBOL vmlinux 0x3b299067 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b61a588 param_set_uint +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b697738 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x3b6d33f6 unlock_page +EXPORT_SYMBOL vmlinux 0x3b7e29aa simple_statfs +EXPORT_SYMBOL vmlinux 0x3b81d44c writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x3b9edc06 devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x3ba78cd2 padata_stop +EXPORT_SYMBOL vmlinux 0x3bbca2e6 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bc6883f proto_register +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c2ed540 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3c3215c4 qe_immr +EXPORT_SYMBOL vmlinux 0x3c38963f posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x3c3c9402 inet_del_offload +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c4c1c86 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x3c5cf86a nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0x3c60315c ioremap_cache +EXPORT_SYMBOL vmlinux 0x3c608d06 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x3c6b07b0 inet_frags_init +EXPORT_SYMBOL vmlinux 0x3c728c96 generic_setlease +EXPORT_SYMBOL vmlinux 0x3c7a4a24 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c841299 vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x3cb46eca serio_rescan +EXPORT_SYMBOL vmlinux 0x3cd97777 tcp_child_process +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceda97c module_layout +EXPORT_SYMBOL vmlinux 0x3cf44bf0 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x3d154e4c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d6995e8 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x3d8aee69 neigh_destroy +EXPORT_SYMBOL vmlinux 0x3d934a62 input_register_device +EXPORT_SYMBOL vmlinux 0x3d955262 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x3dae494f blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcf1ffa __wake_up +EXPORT_SYMBOL vmlinux 0x3dd878a0 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x3dddf6b5 pid_task +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1e8778 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e482094 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x3e571787 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x3e690099 of_clk_get +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea22002 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x3eb46750 sock_bind_add +EXPORT_SYMBOL vmlinux 0x3ece047a pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x3ed104a5 xa_set_mark +EXPORT_SYMBOL vmlinux 0x3ef37ccd eth_validate_addr +EXPORT_SYMBOL vmlinux 0x3ef72dca __nlmsg_put +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f0ea678 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x3f1f8c06 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x3f24367f import_single_range +EXPORT_SYMBOL vmlinux 0x3f2964cd input_allocate_device +EXPORT_SYMBOL vmlinux 0x3f2da03d add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x3f300746 inet6_release +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4af46f gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x3f557466 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x3f62d048 dma_fence_init +EXPORT_SYMBOL vmlinux 0x3f7c8f72 stream_open +EXPORT_SYMBOL vmlinux 0x3f80c59e snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x3f88c8ae refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3f9b4a87 mpage_readahead +EXPORT_SYMBOL vmlinux 0x3f9b9776 kmap_atomic_high_prot +EXPORT_SYMBOL vmlinux 0x3f9f3fe0 inet_add_offload +EXPORT_SYMBOL vmlinux 0x3f9fe79e ilookup +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fcc0a0f md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fea538c hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x400dec45 bdget +EXPORT_SYMBOL vmlinux 0x401d3b36 inode_init_always +EXPORT_SYMBOL vmlinux 0x402981be ipmi_platform_add +EXPORT_SYMBOL vmlinux 0x4030bcac neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x40326648 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x403a93e7 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x403ef801 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x404c161d flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0x405361bf scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405b00c8 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x406eec17 netlink_unicast +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x4098be6b nf_log_register +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b3e1d6 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x40b51c05 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x40b8429d sk_alloc +EXPORT_SYMBOL vmlinux 0x40c58cea csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c8c5e3 __ip_options_compile +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d402ad do_wait_intr +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dd9dd2 inet_gro_receive +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x4110ea2f blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414975dd __genradix_prealloc +EXPORT_SYMBOL vmlinux 0x4158709c of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x4176338a xfrm_state_update +EXPORT_SYMBOL vmlinux 0x4179f64e generic_listxattr +EXPORT_SYMBOL vmlinux 0x417d3d40 get_mem_type +EXPORT_SYMBOL vmlinux 0x417dd2fe tcf_classify +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a05aa input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x4191f1af dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x41bb66d9 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x41bb84fc dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x41c35238 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x41db740c xfrm_input +EXPORT_SYMBOL vmlinux 0x41e1e26d sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x41e56a18 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x41ed3a4f netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x41f83805 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x42140ab0 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421b8359 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x42292ea5 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x4231ee68 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x4244ac90 pci_dev_get +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4253aa7e down_write +EXPORT_SYMBOL vmlinux 0x42604384 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x4262b1c9 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x426ea62a tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x42734c27 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x427b2cc7 vga_tryget +EXPORT_SYMBOL vmlinux 0x428999d8 mr_table_dump +EXPORT_SYMBOL vmlinux 0x428ef98b sk_net_capable +EXPORT_SYMBOL vmlinux 0x429813b1 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x42a40b09 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x42a636e7 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x42be7ca2 key_link +EXPORT_SYMBOL vmlinux 0x42c74003 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 +EXPORT_SYMBOL vmlinux 0x4341ada8 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435d1307 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0x436232b9 refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0x436413de remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0x4376dd09 pci_resize_resource +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438b68a8 bdput +EXPORT_SYMBOL vmlinux 0x43ab1e88 pci_iounmap +EXPORT_SYMBOL vmlinux 0x43cf058d devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44270723 sock_i_ino +EXPORT_SYMBOL vmlinux 0x442a9480 skb_split +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443cd191 dquot_initialize +EXPORT_SYMBOL vmlinux 0x443f9f06 fput +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x44489ed1 md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x444cc8ed tcp_md5_needed +EXPORT_SYMBOL vmlinux 0x444f8367 devm_of_clk_del_provider +EXPORT_SYMBOL vmlinux 0x44522309 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x44533a7c tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x446ca555 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x4496d9d4 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x449aae6b sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x449bff73 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44aa6cdd ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x44b15e8a write_inode_now +EXPORT_SYMBOL vmlinux 0x44c9dc6c percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x450d9a35 cmd_db_read_slave_id +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x452ef9cf sock_set_reuseport +EXPORT_SYMBOL vmlinux 0x45368bf9 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45451392 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x45460164 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x454a0237 migrate_page_copy +EXPORT_SYMBOL vmlinux 0x454bd404 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x454e111c fb_set_suspend +EXPORT_SYMBOL vmlinux 0x4555676c of_graph_get_port_parent +EXPORT_SYMBOL vmlinux 0x4561e9f1 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x4562a134 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x4562cbf5 phy_aneg_done +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d7f0d mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x457f432f tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x459a73c7 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x45a0aa00 sock_edemux +EXPORT_SYMBOL vmlinux 0x45a71a8e netdev_emerg +EXPORT_SYMBOL vmlinux 0x45a8cd96 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c8d729 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x46133aea tso_start +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x463e4804 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x464ef0aa wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x46521291 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x4654a0d8 ping_prot +EXPORT_SYMBOL vmlinux 0x465aee8a dm_put_table_device +EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size +EXPORT_SYMBOL vmlinux 0x46607c11 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x46620bc2 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x46686729 vfs_rename +EXPORT_SYMBOL vmlinux 0x466fc771 get_watch_queue +EXPORT_SYMBOL vmlinux 0x467fdf2f bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x4688a3ce __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x46a2545a dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x46a86aa1 finalize_exec +EXPORT_SYMBOL vmlinux 0x46aa9c79 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x46ba133b tty_port_close +EXPORT_SYMBOL vmlinux 0x46bfe1b0 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x46c5b91b sock_kfree_s +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46dc1802 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x46e44f22 of_mdiobus_phy_device_register +EXPORT_SYMBOL vmlinux 0x46e577df _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x46e9cb7c ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0x46f102ad user_revoke +EXPORT_SYMBOL vmlinux 0x46fe632d __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x47085509 omap_rtc_power_off_program +EXPORT_SYMBOL vmlinux 0x472683ee snd_device_register +EXPORT_SYMBOL vmlinux 0x4727a468 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x4756260d ida_destroy +EXPORT_SYMBOL vmlinux 0x47595bf2 free_netdev +EXPORT_SYMBOL vmlinux 0x4764d48c netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x47876517 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x478d9b84 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0x47920eff skb_copy_header +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47b18d89 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47c703bc rt6_lookup +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47ee1b4a seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x481a68e9 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x482b488e prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x48346765 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x4848cfb1 phy_mipi_dphy_get_default_config +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x48552081 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48610c10 processor +EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x487ee240 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x489cd132 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x48a14d98 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48bb80db hex2bin +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4904ef94 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x4914d762 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x491877df dma_free_attrs +EXPORT_SYMBOL vmlinux 0x4929f42d dev_get_by_index +EXPORT_SYMBOL vmlinux 0x495e451e netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0x4965273c twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x49672e16 skb_queue_head +EXPORT_SYMBOL vmlinux 0x496a686d vfs_get_super +EXPORT_SYMBOL vmlinux 0x49777a82 __mdiobus_read +EXPORT_SYMBOL vmlinux 0x497e8f34 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x499667aa jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x49970de8 finish_wait +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49ca6fba add_watch_to_object +EXPORT_SYMBOL vmlinux 0x49d3457a cpumask_any_but +EXPORT_SYMBOL vmlinux 0x49e855d0 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f26466 kstrndup +EXPORT_SYMBOL vmlinux 0x4a004cb4 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0x4a020ad8 devm_free_irq +EXPORT_SYMBOL vmlinux 0x4a1a0c9a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x4a1d73c1 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x4a26a60d sock_efree +EXPORT_SYMBOL vmlinux 0x4a3036b4 ptp_clock_register +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3c1463 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a422730 simple_rename +EXPORT_SYMBOL vmlinux 0x4a443313 md_write_inc +EXPORT_SYMBOL vmlinux 0x4a4ad313 is_bad_inode +EXPORT_SYMBOL vmlinux 0x4a4e4fbc skb_append +EXPORT_SYMBOL vmlinux 0x4a51c582 of_graph_get_remote_endpoint +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4ab7b01b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x4abfd414 dev_get_stats +EXPORT_SYMBOL vmlinux 0x4ad44676 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x4ade8b2e kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x4ae510b1 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x4af4e621 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x4b06f80c pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x4b09b6ff dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2a8e92 from_kgid +EXPORT_SYMBOL vmlinux 0x4b472d98 generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b631a22 _dev_emerg +EXPORT_SYMBOL vmlinux 0x4b6dfac0 d_find_alias +EXPORT_SYMBOL vmlinux 0x4bb35434 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x4bd6bc4a tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x4bdd9de3 iterate_dir +EXPORT_SYMBOL vmlinux 0x4be76dc6 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4bf8ba8d __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x4bfdcefa __memset32 +EXPORT_SYMBOL vmlinux 0x4c17ef4f unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x4c1cca3b cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2cc6fe xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x4c2d7fc3 would_dump +EXPORT_SYMBOL vmlinux 0x4c2e6aa6 submit_bh +EXPORT_SYMBOL vmlinux 0x4c36711a blk_integrity_register +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c4e91f9 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x4c510da1 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x4c6401dd md_update_sb +EXPORT_SYMBOL vmlinux 0x4c694e47 scsi_host_busy +EXPORT_SYMBOL vmlinux 0x4c7266b2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x4c8fafcd read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4c948f17 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x4c9ab106 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x4cb00d8f security_path_unlink +EXPORT_SYMBOL vmlinux 0x4cb0c9f9 seq_pad +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cdcb2ff netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d166b67 of_node_name_eq +EXPORT_SYMBOL vmlinux 0x4d188800 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x4d2a4b5e set_binfmt +EXPORT_SYMBOL vmlinux 0x4d3486eb dquot_operations +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d407667 cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d514485 xa_store +EXPORT_SYMBOL vmlinux 0x4d5ff25b devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x4d633c89 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x4d634803 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x4d6ae35f rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4d787ca7 simple_link +EXPORT_SYMBOL vmlinux 0x4d8fc811 ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4dedec35 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x4dee3ad2 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e021361 locks_free_lock +EXPORT_SYMBOL vmlinux 0x4e05bdec mempool_init_node +EXPORT_SYMBOL vmlinux 0x4e10814d __alloc_disk_node +EXPORT_SYMBOL vmlinux 0x4e134646 md_check_recovery +EXPORT_SYMBOL vmlinux 0x4e2e74c1 qcom_scm_io_readl +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e419045 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x4e47309b input_close_device +EXPORT_SYMBOL vmlinux 0x4e4b942e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x4e608eab jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea4f89a snd_compr_free_pages +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4eadc47f tty_port_open +EXPORT_SYMBOL vmlinux 0x4eb24b02 __devm_release_region +EXPORT_SYMBOL vmlinux 0x4eb87048 flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ee0e846 ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x4ee42e6f request_firmware +EXPORT_SYMBOL vmlinux 0x4ee98ebd tcp_have_smc +EXPORT_SYMBOL vmlinux 0x4ee9f03f filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x4efcdab6 xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x4f13b3ef inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1ebc1c tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f23dc9b __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0x4f294850 fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x4f3b1db7 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f51f065 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x4f65cadb blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x4f7d8ea3 ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f84b37f kobject_init +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f9c60fc call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x4fb113b8 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4fb93acb d_genocide +EXPORT_SYMBOL vmlinux 0x4fbc7c2d fget_raw +EXPORT_SYMBOL vmlinux 0x4fbd734a scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x4feaca78 nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x4feb72c1 of_get_next_child +EXPORT_SYMBOL vmlinux 0x4fef3ef4 completion_done +EXPORT_SYMBOL vmlinux 0x4ff9413d __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x502b6647 mempool_create_node +EXPORT_SYMBOL vmlinux 0x5039f559 vm_mmap +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x505d9d1f devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0x505f84a3 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506b9d2b mem_map +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x507bde52 kobject_get +EXPORT_SYMBOL vmlinux 0x507ea3f6 serio_close +EXPORT_SYMBOL vmlinux 0x508ddee8 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x5095f6dc cros_ec_get_next_event +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50a7e0ac remove_proc_entry +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50bd9224 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50d71bcf gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x50f10cbd dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x50f85302 __arm_smccc_hvc +EXPORT_SYMBOL vmlinux 0x50fd6103 dma_fence_signal +EXPORT_SYMBOL vmlinux 0x51022053 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x510a4abf devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x511499fb pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x511951a3 md_write_end +EXPORT_SYMBOL vmlinux 0x511b12f3 elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x51287b0e alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x51372a82 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0x513b7efe vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0x514a62ec dq_data_lock +EXPORT_SYMBOL vmlinux 0x514cc273 arm_copy_from_user +EXPORT_SYMBOL vmlinux 0x51554254 rproc_shutdown +EXPORT_SYMBOL vmlinux 0x5156fe08 get_task_exe_file +EXPORT_SYMBOL vmlinux 0x515b5452 pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x517e59da kobject_set_name +EXPORT_SYMBOL vmlinux 0x51819591 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x518d4eeb jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x519d940e __icmp_send +EXPORT_SYMBOL vmlinux 0x51a0ab26 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x51acf2a5 of_graph_get_endpoint_count +EXPORT_SYMBOL vmlinux 0x51e1fa9b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ece260 sock_no_bind +EXPORT_SYMBOL vmlinux 0x51f509be ps2_command +EXPORT_SYMBOL vmlinux 0x51f56bfb genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x5203d176 cmd_db_ready +EXPORT_SYMBOL vmlinux 0x520a0a42 mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x5212e449 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x52156d98 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x5219843e mmc_register_driver +EXPORT_SYMBOL vmlinux 0x5226fac9 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x522f25f7 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x523e57aa ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0x523f381c pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x52456d1c security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x524d3115 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x525eed12 udp_seq_stop +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52d051cf blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52d8d19e _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531470fc kmap_to_page +EXPORT_SYMBOL vmlinux 0x532aa52d sock_no_accept +EXPORT_SYMBOL vmlinux 0x53368443 dev_set_group +EXPORT_SYMBOL vmlinux 0x533d26c6 put_disk_and_module +EXPORT_SYMBOL vmlinux 0x53463802 page_pool_release_page +EXPORT_SYMBOL vmlinux 0x536060af radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x5392aa9e udp_seq_next +EXPORT_SYMBOL vmlinux 0x5398a950 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x53ba59a4 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x53d934c2 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x53da3435 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x53da3739 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x53da5d4c __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0x53f85379 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x540c9199 no_llseek +EXPORT_SYMBOL vmlinux 0x540d3030 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x540e324a security_binder_transaction +EXPORT_SYMBOL vmlinux 0x54200a28 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x542b2f63 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x543d939c key_invalidate +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544ec1de qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x5461bb90 snd_register_device +EXPORT_SYMBOL vmlinux 0x5466ba1c textsearch_prepare +EXPORT_SYMBOL vmlinux 0x5469ff81 efi +EXPORT_SYMBOL vmlinux 0x54871d45 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x548c0c30 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x548d6fcf __i2c_transfer +EXPORT_SYMBOL vmlinux 0x548fe2cc pci_read_config_byte +EXPORT_SYMBOL vmlinux 0x549941ee blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54b86882 nand_create_bbt +EXPORT_SYMBOL vmlinux 0x54ccedad udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5500507d xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x551770ba inode_get_bytes +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541e7d9 bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x556262c3 cros_ec_get_host_event +EXPORT_SYMBOL vmlinux 0x5568d218 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x55adb9de dev_set_mtu +EXPORT_SYMBOL vmlinux 0x55d180c2 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x55dfbdc7 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55f1d4a4 phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x55f597ce jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x560aa1f0 vfs_unlink +EXPORT_SYMBOL vmlinux 0x560c2e53 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x56124b93 phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0x561c4e58 mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0x5630e9dc icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x564d28bd __module_get +EXPORT_SYMBOL vmlinux 0x5667a277 down_timeout +EXPORT_SYMBOL vmlinux 0x566e2b89 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x566e59b1 serio_interrupt +EXPORT_SYMBOL vmlinux 0x56782775 dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x567ca0fb tcp_seq_next +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x56843f01 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x56a7c145 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x56b0aecd generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x56b17e28 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x56b6e4cd clear_nlink +EXPORT_SYMBOL vmlinux 0x56b78252 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x56bd0f34 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dea4ee twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x56e91042 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x571bcd86 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0x571e300d vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x57307a3c cfb_imageblit +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5762b782 bio_devname +EXPORT_SYMBOL vmlinux 0x5765b339 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5770371b d_make_root +EXPORT_SYMBOL vmlinux 0x5788f665 d_lookup +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x57af2a95 of_pci_range_to_resource +EXPORT_SYMBOL vmlinux 0x57ceedb1 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x57e00b95 pci_dev_put +EXPORT_SYMBOL vmlinux 0x57e143cf blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x57e5170c qcom_scm_iommu_secure_ptbl_size +EXPORT_SYMBOL vmlinux 0x57f38cdc qe_get_firmware_info +EXPORT_SYMBOL vmlinux 0x57ff23f0 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x580407e9 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581cde4e up +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582279b0 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x582a298f flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x583752a6 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584a07c6 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x587b892e qe_get_num_of_risc +EXPORT_SYMBOL vmlinux 0x58853c46 vfs_ioctl +EXPORT_SYMBOL vmlinux 0x5896505a block_read_full_page +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b5a1de user_path_at_empty +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bb4bb4 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x58c78fbc phy_attached_info +EXPORT_SYMBOL vmlinux 0x58d182ec tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58eba1bc iptun_encaps +EXPORT_SYMBOL vmlinux 0x58f14e08 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0x58f4c817 ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x58fad869 __var_waitqueue +EXPORT_SYMBOL vmlinux 0x590cbff1 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x59122948 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x59131403 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x591621ae i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x591cd0a3 file_update_time +EXPORT_SYMBOL vmlinux 0x592b5bd9 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x59337f60 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594f6923 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x596992be scsi_print_command +EXPORT_SYMBOL vmlinux 0x5975f32e file_modified +EXPORT_SYMBOL vmlinux 0x59864461 current_in_userns +EXPORT_SYMBOL vmlinux 0x599af782 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x599b4888 qe_setbrg +EXPORT_SYMBOL vmlinux 0x59a94b37 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x59ad438e get_acl +EXPORT_SYMBOL vmlinux 0x59b7cab6 mempool_resize +EXPORT_SYMBOL vmlinux 0x59bf6cec mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0x59c78dbf copy_string_kernel +EXPORT_SYMBOL vmlinux 0x59cd62e8 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x59ce0e40 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d6eedb skb_store_bits +EXPORT_SYMBOL vmlinux 0x59da4432 devm_clk_get +EXPORT_SYMBOL vmlinux 0x59e1dafb pps_event +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59f385b2 sock_pfree +EXPORT_SYMBOL vmlinux 0x59f50087 xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a14de15 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x5a24a7b1 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a577c91 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x5a64aac5 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x5a90f9aa nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x5a99fc2c jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x5a9a86a2 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x5aadc405 vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x5ad10fd1 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x5ae8af67 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x5af611d8 dev_add_offload +EXPORT_SYMBOL vmlinux 0x5b062284 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0x5b113f22 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b52eb35 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x5b54903b qcom_scm_pas_mem_setup +EXPORT_SYMBOL vmlinux 0x5b56b9e5 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x5badbb78 string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5bb791e0 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x5bbe49f4 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bcee0f4 zap_page_range +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be24e40 stop_tty +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5bec17da __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x5bf3dd2e kobject_del +EXPORT_SYMBOL vmlinux 0x5bf7f981 save_stack_trace_tsk +EXPORT_SYMBOL vmlinux 0x5bfe047d pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0x5c3a1d43 kill_block_super +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c716976 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x5c7f1284 int_sqrt64 +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5c973d70 skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x5cbbec5b linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x5cbd8e69 __crc32c_le +EXPORT_SYMBOL vmlinux 0x5cc47949 dma_cache_sync +EXPORT_SYMBOL vmlinux 0x5cc71e64 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x5cdfa7da xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x5ce9a942 hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0a438e blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x5d249d9d hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5d327694 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x5d37d658 dim_park_tired +EXPORT_SYMBOL vmlinux 0x5d45d9aa try_to_release_page +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d810f97 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5d854d10 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5daddf50 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0x5db2bef1 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5dd51aef lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x5de5cca2 utf8_normalize +EXPORT_SYMBOL vmlinux 0x5de6c9ae tso_build_data +EXPORT_SYMBOL vmlinux 0x5de93ebe sock_set_keepalive +EXPORT_SYMBOL vmlinux 0x5e030bf5 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x5e05ecb7 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x5e0a7989 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e0ec2b7 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0x5e335d5a fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e429061 phy_device_remove +EXPORT_SYMBOL vmlinux 0x5e631405 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x5e6e3254 pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e814b88 get_super +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e867414 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0x5e876336 __scm_send +EXPORT_SYMBOL vmlinux 0x5e8771c4 config_item_get +EXPORT_SYMBOL vmlinux 0x5e952a87 sock_wake_async +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9f24bd dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0x5ea0a262 mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ecf8c71 simple_rmdir +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed05bf6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5ed8df4c gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5ee8a3b2 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x5ee9bb87 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x5ef610af mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0c7c40 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x5f13cd19 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f6d2a43 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f849a69 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5f935abb xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x5fa8fba9 mdio_device_free +EXPORT_SYMBOL vmlinux 0x5faa1d90 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5fb01358 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fb4b74e xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x5fb87cde tty_write_room +EXPORT_SYMBOL vmlinux 0x5fbbd8a4 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0x5fc8cd49 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x5fdb9237 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0x5fea1193 devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0x5feba5d1 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5fee6150 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6012ccea generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x601896cd rproc_alloc +EXPORT_SYMBOL vmlinux 0x601d7fa7 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60303f8c tty_register_driver +EXPORT_SYMBOL vmlinux 0x603286b8 utf8_casefold +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6040f529 read_code +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x60746a0f mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x607c753e __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x608b0dc4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60bffe6d div64_u64 +EXPORT_SYMBOL vmlinux 0x60c2492c tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x60d87caf prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60de8abe sk_wait_data +EXPORT_SYMBOL vmlinux 0x60f93606 PDE_DATA +EXPORT_SYMBOL vmlinux 0x610b6822 ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0x6120df73 input_set_timestamp +EXPORT_SYMBOL vmlinux 0x6121bd54 dql_init +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612c623f secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0x6130fd6e jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x6156c7f4 net_dim +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x615bb82f cred_fscmp +EXPORT_SYMBOL vmlinux 0x617421db tty_set_operations +EXPORT_SYMBOL vmlinux 0x61830360 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x619ea5e0 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x61a9b4d0 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x61ab8a61 rtc_add_group +EXPORT_SYMBOL vmlinux 0x61ab9c45 revalidate_disk +EXPORT_SYMBOL vmlinux 0x61ad30f0 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x61aea076 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x61b52d08 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x61b76bb9 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61b8d1cc param_ops_bint +EXPORT_SYMBOL vmlinux 0x61bdbd3f pci_enable_wake +EXPORT_SYMBOL vmlinux 0x61c16b02 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x61c76b3a proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x61ca0f5a dcb_setapp +EXPORT_SYMBOL vmlinux 0x61d121bf pci_write_config_word +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x62040553 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62345387 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x625434d2 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x62668304 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x626a31e3 thaw_super +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627d4340 hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x62830bd3 __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6289c966 ether_setup +EXPORT_SYMBOL vmlinux 0x6291a99d dma_resv_init +EXPORT_SYMBOL vmlinux 0x62a3af74 iget_locked +EXPORT_SYMBOL vmlinux 0x62aaa669 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x62b3adc9 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x62bcc78d seq_puts +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62cdb738 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x62dd44d8 xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x62f576d9 trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0x62f5ea98 generic_perform_write +EXPORT_SYMBOL vmlinux 0x6302bce5 textsearch_register +EXPORT_SYMBOL vmlinux 0x63086464 mdio_device_create +EXPORT_SYMBOL vmlinux 0x630cec25 page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x630f2cb8 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x63123c11 md_handle_request +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x63230633 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x632e5311 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x6334bac4 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x6342f99f mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x63492151 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x63633e8f pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x637d1029 iov_iter_discard +EXPORT_SYMBOL vmlinux 0x63851e70 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x6389f2b5 genphy_read_abilities +EXPORT_SYMBOL vmlinux 0x6390b1ae input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0x63a0f2c8 page_pool_put_page +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63a99a38 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x63bd6e9e seq_read +EXPORT_SYMBOL vmlinux 0x63bf8453 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x63c22b09 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63ca4474 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x63cc5ba1 ip_frag_init +EXPORT_SYMBOL vmlinux 0x63cece65 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ed0e61 inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0x63fad8a5 inet_offloads +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x641008eb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641750a1 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x641862fe xfrm_lookup +EXPORT_SYMBOL vmlinux 0x641a52c8 set_cached_acl +EXPORT_SYMBOL vmlinux 0x6423b24c simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x642ac363 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x6442ed1a pci_set_power_state +EXPORT_SYMBOL vmlinux 0x6443babd ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x6450953b remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x6451c20d tcp_seq_stop +EXPORT_SYMBOL vmlinux 0x6454bae6 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x645d970e alloc_fddidev +EXPORT_SYMBOL vmlinux 0x646da3ee mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0x6470e898 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6478d2fe page_mapped +EXPORT_SYMBOL vmlinux 0x647af474 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x64830d5a of_get_parent +EXPORT_SYMBOL vmlinux 0x648bd67b tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x6495f991 phy_connect +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649c3191 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64bce8a3 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x64c1086f snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x64c74969 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x64c990c2 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x64dd24df nla_put_64bit +EXPORT_SYMBOL vmlinux 0x64e09f71 sock_bindtoindex +EXPORT_SYMBOL vmlinux 0x64eefe0a vfs_iter_read +EXPORT_SYMBOL vmlinux 0x64fa13e7 icmp6_send +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x65209fd6 param_get_short +EXPORT_SYMBOL vmlinux 0x6521cc2c pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0x652aba80 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x653c9aa8 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65455199 km_policy_expired +EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x6561b0a7 rtnl_notify +EXPORT_SYMBOL vmlinux 0x6578533e prepare_to_wait +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x659f1b7f new_inode +EXPORT_SYMBOL vmlinux 0x65a108b6 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x65b04e92 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x65b83069 pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0x65c5f02d qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x65d411e9 idr_get_next +EXPORT_SYMBOL vmlinux 0x65d7cd3c tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e8c970 pipe_lock +EXPORT_SYMBOL vmlinux 0x65f4da93 of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x65fdbbfd jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x66002881 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x661655a0 param_get_bool +EXPORT_SYMBOL vmlinux 0x662552b4 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x6637413f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x66404f43 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x66441270 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x66474aa4 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x66538015 tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x66657274 kmalloc_order +EXPORT_SYMBOL vmlinux 0x666863dc par_io_config_pin +EXPORT_SYMBOL vmlinux 0x666c96f2 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x6690a953 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x669b0f92 xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0x66c103ad twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x66c4536e sock_gettstamp +EXPORT_SYMBOL vmlinux 0x66dbb4d2 ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x66f5b390 mr_table_alloc +EXPORT_SYMBOL vmlinux 0x672ab9a8 freeze_super +EXPORT_SYMBOL vmlinux 0x6738200e sk_reset_timer +EXPORT_SYMBOL vmlinux 0x67412d2f ucc_slow_enable +EXPORT_SYMBOL vmlinux 0x67440933 dput +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x6751f942 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x675a8e80 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x67676fa3 pci_map_rom +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x6782d34a rename_lock +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x6795ba18 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x679856f5 sort_r +EXPORT_SYMBOL vmlinux 0x6798e548 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0x679d615a snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x67a4edb5 devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ba8526 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x67bb60dd skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x67c1f787 __find_get_block +EXPORT_SYMBOL vmlinux 0x67c4ad66 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x67caf1e1 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x67ea6e61 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x67ef7188 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x6808c968 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x6811c1a8 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x683c0ef3 mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x68441e7b dm_get_device +EXPORT_SYMBOL vmlinux 0x6859d9f6 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x6873f125 fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x68765434 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68871fd0 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68ad8972 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x68b6ce07 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x68bd0165 ipmr_rule_default +EXPORT_SYMBOL vmlinux 0x68cb2347 sk_common_release +EXPORT_SYMBOL vmlinux 0x68ce1f3d __register_nls +EXPORT_SYMBOL vmlinux 0x68ce98a7 kset_register +EXPORT_SYMBOL vmlinux 0x68e85f73 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x691938f8 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x691bd63d fs_param_is_string +EXPORT_SYMBOL vmlinux 0x6944a400 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x69573e52 fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x696a7914 scsi_print_result +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6976b961 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x69890041 __break_lease +EXPORT_SYMBOL vmlinux 0x699bb4b0 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69c49c0e blk_queue_split +EXPORT_SYMBOL vmlinux 0x69c69db7 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69e4aaa1 inet_accept +EXPORT_SYMBOL vmlinux 0x69e51d08 __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x69eae20b netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x69f0539f ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x69f9f2c2 dev_addr_add +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a06fe13 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x6a363665 devm_release_resource +EXPORT_SYMBOL vmlinux 0x6a41cf47 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6a46889e show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a6c614a mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x6a9fa971 follow_up +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6aa54901 fs_param_is_path +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6ac4929a unregister_console +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6adecc7a ns_capable +EXPORT_SYMBOL vmlinux 0x6ae36cb3 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af493c7 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x6af7b21a packing +EXPORT_SYMBOL vmlinux 0x6b1a40d6 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x6b22cbaf fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x6b26b995 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x6b2a6ad2 thaw_bdev +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b307ecf netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x6b322fbd __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x6b439e27 dquot_transfer +EXPORT_SYMBOL vmlinux 0x6b44e452 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x6b472dc4 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x6b53321f padata_do_serial +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b57dfd9 fb_set_var +EXPORT_SYMBOL vmlinux 0x6b5b1abf vfs_getattr +EXPORT_SYMBOL vmlinux 0x6b604710 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6b6c31d9 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6b730057 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6ba1aa2b inet6_protos +EXPORT_SYMBOL vmlinux 0x6bb1fae8 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x6bb632aa param_ops_charp +EXPORT_SYMBOL vmlinux 0x6bb93d9e sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bf7d3c2 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x6c0072fd phy_device_free +EXPORT_SYMBOL vmlinux 0x6c0974be ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x6c17ee76 cdev_set_parent +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c1d6f10 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c2e1f73 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x6c340809 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x6c431ca0 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x6c4c0aee ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c78db4a snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x6c810e42 __xa_clear_mark +EXPORT_SYMBOL vmlinux 0x6c845f4f block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cb71e6d inode_nohighmem +EXPORT_SYMBOL vmlinux 0x6cbcd95e ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0x6cbfd5e6 free_buffer_head +EXPORT_SYMBOL vmlinux 0x6cc872aa crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x6cd21a3a mount_single +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9398f kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x6ceb8ccd mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x6cf0d67d qe_get_num_of_snums +EXPORT_SYMBOL vmlinux 0x6cf1e7e0 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x6cfd9007 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x6d0d4258 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x6d179493 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x6d226d7d tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d34a322 mdio_driver_register +EXPORT_SYMBOL vmlinux 0x6d3eb1c7 phy_attach +EXPORT_SYMBOL vmlinux 0x6d525bbc skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x6d5f1f62 inet_sendpage +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d89b199 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6d8d8904 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x6da56a05 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x6daaf2a2 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x6dc7e44d of_graph_get_remote_node +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dd069b5 __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6df05cbf single_open +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dfabcb1 watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x6dfd4b11 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x6e044c99 netif_device_detach +EXPORT_SYMBOL vmlinux 0x6e08acb1 phy_detach +EXPORT_SYMBOL vmlinux 0x6e0d0924 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x6e19e3f2 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x6e25990e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x6e3bac38 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x6e4c1b38 vme_irq_free +EXPORT_SYMBOL vmlinux 0x6e4e7714 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x6e586338 iov_iter_revert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea54060 simple_readpage +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6ead49cc xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0x6eae2f2e add_to_pipe +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ecdb792 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6ee13b3e vme_bus_num +EXPORT_SYMBOL vmlinux 0x6ee2ee3e ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6ee92606 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x6ef66e4d seq_write +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efc8ca0 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x6efe2f21 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x6f013ecd __init_rwsem +EXPORT_SYMBOL vmlinux 0x6f28d270 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x6f5283ec seq_putc +EXPORT_SYMBOL vmlinux 0x6f590f30 brioctl_set +EXPORT_SYMBOL vmlinux 0x6f6d7b0f sockfd_lookup +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f9853c2 dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0x6fbe4717 idr_replace +EXPORT_SYMBOL vmlinux 0x6fbf60af snd_soc_alloc_ac97_component +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6fddf709 md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6ff774dd rproc_free +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700c21a4 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x701a7712 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x70407c4e rproc_add_carveout +EXPORT_SYMBOL vmlinux 0x7059cf01 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0x706b531b xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0x70703993 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x70744ae5 __block_write_begin +EXPORT_SYMBOL vmlinux 0x707dede7 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x70a09b26 bio_chain +EXPORT_SYMBOL vmlinux 0x70d5f3cc flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x70daa225 redraw_screen +EXPORT_SYMBOL vmlinux 0x711b8a9b __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x711cd91c simple_transaction_get +EXPORT_SYMBOL vmlinux 0x712110ab proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71432c37 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0x71498b3f tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0x71514ad4 key_move +EXPORT_SYMBOL vmlinux 0x7156c952 of_node_name_prefix +EXPORT_SYMBOL vmlinux 0x7160d9ad cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x716fae12 bd_set_size +EXPORT_SYMBOL vmlinux 0x717105f3 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71793d51 get_tree_bdev +EXPORT_SYMBOL vmlinux 0x7180696d kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x718d07c0 set_blocksize +EXPORT_SYMBOL vmlinux 0x7197bd70 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b29d5d revert_creds +EXPORT_SYMBOL vmlinux 0x71b55fcc __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x71b710e6 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71cb088e dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x71d1d2e9 pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x71e278f6 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x71f35d36 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x71f5758e fb_validate_mode +EXPORT_SYMBOL vmlinux 0x71f7de4f proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x7203d67b page_get_link +EXPORT_SYMBOL vmlinux 0x7215b9cd neigh_lookup +EXPORT_SYMBOL vmlinux 0x7234f463 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x724e1760 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x72521c74 ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x72660af2 __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x727d0ce6 eth_header_parse +EXPORT_SYMBOL vmlinux 0x7295dc8f __put_page +EXPORT_SYMBOL vmlinux 0x729c9c4a dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x729fb2d9 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x72a75afe param_set_ullong +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72ba16d5 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x72cf819b nd_device_unregister +EXPORT_SYMBOL vmlinux 0x72d230a2 param_set_charp +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72de0959 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x72e18061 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eb6732 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x72fc7fda of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x73044d74 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7317790e lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x731aef6d _dev_crit +EXPORT_SYMBOL vmlinux 0x731b7382 rproc_put +EXPORT_SYMBOL vmlinux 0x7326c43d super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0x7333c4d7 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x73405c9f wireless_spy_update +EXPORT_SYMBOL vmlinux 0x734132f7 migrate_page +EXPORT_SYMBOL vmlinux 0x735f33b0 mutex_is_locked +EXPORT_SYMBOL vmlinux 0x73654470 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x7370ee10 km_state_expired +EXPORT_SYMBOL vmlinux 0x7372c237 fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x737d712a inet_stream_ops +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x739c2f06 proc_mkdir +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73b473e1 md_write_start +EXPORT_SYMBOL vmlinux 0x73c983e5 param_ops_byte +EXPORT_SYMBOL vmlinux 0x73d20fb3 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e93bce __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x742396bf xfrm_state_add +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x742959f3 dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x742a630e unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x742a70cf __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x744834f5 input_event +EXPORT_SYMBOL vmlinux 0x744f969d xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x7459df66 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x746a57b2 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x74b20f7b dquot_alloc +EXPORT_SYMBOL vmlinux 0x74b9e4dc pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x74beab48 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c1816a scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0x74d6d6da netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x74dc8943 begin_new_exec +EXPORT_SYMBOL vmlinux 0x74e11f88 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fa9cc6 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750edb20 __breadahead +EXPORT_SYMBOL vmlinux 0x751068ee scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x751387da tty_port_init +EXPORT_SYMBOL vmlinux 0x753260d8 rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x754d07c7 put_cmsg +EXPORT_SYMBOL vmlinux 0x756f23f9 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x7586f470 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x75883616 udp_gro_complete +EXPORT_SYMBOL vmlinux 0x7592a28a eth_header +EXPORT_SYMBOL vmlinux 0x759e1d62 iterate_fd +EXPORT_SYMBOL vmlinux 0x75a3e08d snd_card_free +EXPORT_SYMBOL vmlinux 0x75b9cdca mtd_concat_create +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75c8ddde genphy_update_link +EXPORT_SYMBOL vmlinux 0x75cc7f3b __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75d81a79 misc_deregister +EXPORT_SYMBOL vmlinux 0x75dc0ecc mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0x75e828b2 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x760932d8 tty_vhangup +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76300f32 inet_frag_find +EXPORT_SYMBOL vmlinux 0x7630831c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7649a6e1 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x766deee7 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0x766f7eff rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x7688fb35 find_vma +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76b8a799 xfrm_state_free +EXPORT_SYMBOL vmlinux 0x76bd5aad snd_compr_malloc_pages +EXPORT_SYMBOL vmlinux 0x76c28a0c buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d18130 blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76e9c1cf skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x7700ce69 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77347825 is_nd_btt +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x773b654f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x77619ec6 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7769892c ppp_channel_index +EXPORT_SYMBOL vmlinux 0x77778daf phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x777bf245 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x77832768 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x778818f5 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x77901ced d_add_ci +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x7796e383 pci_match_id +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bf2c62 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77ef6e4a pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0x77f6c690 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x77f6f183 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x77fdfea4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x783b977a kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0x78431876 ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x786f21ed of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x787c8638 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78855854 udp_disconnect +EXPORT_SYMBOL vmlinux 0x7889b1a0 map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78b17d79 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x78bd5834 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x78c1b274 dma_direct_map_page +EXPORT_SYMBOL vmlinux 0x78cb1b0b phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x78d0a697 input_match_device_id +EXPORT_SYMBOL vmlinux 0x78d95a28 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e6195f cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x78fa4170 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x7927e989 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x7934e883 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x7942b79d mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0x794765d1 mempool_free +EXPORT_SYMBOL vmlinux 0x79511213 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x795cd69c path_has_submounts +EXPORT_SYMBOL vmlinux 0x795dea12 __put_user_ns +EXPORT_SYMBOL vmlinux 0x7968980b skb_trim +EXPORT_SYMBOL vmlinux 0x79715693 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x799cf414 elv_rb_del +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79ae6cf1 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x79b6ad6f nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x79c2d5fb phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x79d2a755 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x79f867a2 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x79fbdb4e csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x79fc577f utf8nagemax +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a0c3c53 cdev_init +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a3e8a42 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4694b2 nand_scan_with_ids +EXPORT_SYMBOL vmlinux 0x7a4ceaa7 unpin_user_page +EXPORT_SYMBOL vmlinux 0x7a5d07af mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x7a7a1acb __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x7a8b1681 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x7a8b36a7 devm_request_resource +EXPORT_SYMBOL vmlinux 0x7a8fa39a blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a968137 ucc_slow_restart_tx +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab78713 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aba5c0b ZSTD_getParams +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad1008c vfs_fsync +EXPORT_SYMBOL vmlinux 0x7ad7453f kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7aded2f7 down_write_trylock +EXPORT_SYMBOL vmlinux 0x7ae5d317 qe_get_snum +EXPORT_SYMBOL vmlinux 0x7af54722 genphy_suspend +EXPORT_SYMBOL vmlinux 0x7af5c8fd phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b2fb85d __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x7b3b7630 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7b4c6aa6 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x7b51b66c ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b779d4c skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7b7936cd configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x7b79fe1d pagecache_write_end +EXPORT_SYMBOL vmlinux 0x7b7d9f97 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x7bda6021 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x7be11b77 ata_print_version +EXPORT_SYMBOL vmlinux 0x7bea5f54 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x7bff143e tcp_init_sock +EXPORT_SYMBOL vmlinux 0x7c0e208d get_user_pages +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2de1c6 of_find_backlight +EXPORT_SYMBOL vmlinux 0x7c39e7b5 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c520bf8 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x7c5caaae sock_recvmsg +EXPORT_SYMBOL vmlinux 0x7c5f1a77 phy_modify_paged +EXPORT_SYMBOL vmlinux 0x7c838b81 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7c8cea9e key_create_or_update +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cb2796d mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ccdacb2 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x7cd6f908 xp_dma_map +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d1f0a6b __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x7d22f6a6 gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0x7d27de9e dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x7d474d41 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d6666c5 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x7d66f91a ps2_drain +EXPORT_SYMBOL vmlinux 0x7d69895c of_parse_phandle_with_args_map +EXPORT_SYMBOL vmlinux 0x7d6e240f xattr_full_name +EXPORT_SYMBOL vmlinux 0x7d6f1dc3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x7d8c4311 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x7da93458 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7db8926e zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x7dbd1086 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x7dd7808e security_sk_clone +EXPORT_SYMBOL vmlinux 0x7ddd799f blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfa8d9e twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x7e0300b4 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x7e0a466a fifo_set_limit +EXPORT_SYMBOL vmlinux 0x7e0c27bc iget5_locked +EXPORT_SYMBOL vmlinux 0x7e0c6927 twl6040_power +EXPORT_SYMBOL vmlinux 0x7e0ce0c3 up_write +EXPORT_SYMBOL vmlinux 0x7e0d3517 _dev_alert +EXPORT_SYMBOL vmlinux 0x7e2d9bb7 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e32e7c7 irq_stat +EXPORT_SYMBOL vmlinux 0x7e4e952e scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x7e58ebe5 md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x7e69a8dc poll_freewait +EXPORT_SYMBOL vmlinux 0x7e7599e2 fb_show_logo +EXPORT_SYMBOL vmlinux 0x7e986abe try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x7ea1ed5d pci_write_vpd +EXPORT_SYMBOL vmlinux 0x7ea5856e kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x7ed0c904 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x7ed465e8 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x7ed938a7 of_match_node +EXPORT_SYMBOL vmlinux 0x7ee086eb inet_getname +EXPORT_SYMBOL vmlinux 0x7ee70d0c md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f1b4da8 skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f304b27 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x7f3af4d9 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x7f3e0b3c page_mapping +EXPORT_SYMBOL vmlinux 0x7f4f05e9 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f627320 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f732467 d_alloc +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f8bbd6d inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0x7fa25934 d_instantiate +EXPORT_SYMBOL vmlinux 0x7fa87a6d netdev_err +EXPORT_SYMBOL vmlinux 0x7fbddd03 page_pool_update_nid +EXPORT_SYMBOL vmlinux 0x7fc41029 page_readlink +EXPORT_SYMBOL vmlinux 0x7fda3a34 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x7fda4e80 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe2d9d3 get_cached_acl +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe35678 register_sound_special_device +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x80108291 amba_driver_register +EXPORT_SYMBOL vmlinux 0x80285051 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x802921eb dquot_get_state +EXPORT_SYMBOL vmlinux 0x8030871e xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x8039b3fd _totalram_pages +EXPORT_SYMBOL vmlinux 0x803bd735 genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x804d102f ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x80717fb8 dquot_file_open +EXPORT_SYMBOL vmlinux 0x80789fef nf_setsockopt +EXPORT_SYMBOL vmlinux 0x807a94cf file_path +EXPORT_SYMBOL vmlinux 0x808618b4 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x80862fec input_register_handler +EXPORT_SYMBOL vmlinux 0x808bc8e3 param_set_bool +EXPORT_SYMBOL vmlinux 0x80910f9d snd_device_free +EXPORT_SYMBOL vmlinux 0x8092c0a5 mmc_retune_release +EXPORT_SYMBOL vmlinux 0x809ca8c4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x80c4c319 crc32_le +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d0027a con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9b7ba do_splice_direct +EXPORT_SYMBOL vmlinux 0x80f2b487 of_device_is_available +EXPORT_SYMBOL vmlinux 0x80fff45a mmc_release_host +EXPORT_SYMBOL vmlinux 0x8108ac7a down_read_trylock +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815e4ae5 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x81690a2d check_disk_change +EXPORT_SYMBOL vmlinux 0x81752336 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x8182e53a simple_unlink +EXPORT_SYMBOL vmlinux 0x81831d5e nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x818edf97 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8192c88a input_set_keycode +EXPORT_SYMBOL vmlinux 0x8194da1c pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x81a1b66d vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x81a2fc86 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x81aac96f netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x81b7ca85 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x81c5544e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x81c7985f generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dce038 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x822137e2 arm_heavy_mb +EXPORT_SYMBOL vmlinux 0x82228f45 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x82231344 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x823031be mpage_writepages +EXPORT_SYMBOL vmlinux 0x8238141c mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x823a5df9 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x823ae819 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x82592509 build_skb_around +EXPORT_SYMBOL vmlinux 0x82603503 dst_release_immediate +EXPORT_SYMBOL vmlinux 0x82648a3b reuseport_alloc +EXPORT_SYMBOL vmlinux 0x8269bdb7 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x82706a6b inode_set_bytes +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82bbaec8 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x82c5f39d dump_emit +EXPORT_SYMBOL vmlinux 0x82cc6cf5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x82d1a026 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x82d5e70e blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x82e53743 configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0x82f886a1 ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x83297ce3 sync_filesystem +EXPORT_SYMBOL vmlinux 0x8351f2dc seqno_fence_ops +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x8377fc0d down_write_killable +EXPORT_SYMBOL vmlinux 0x83827014 md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x838d0016 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x83bb1f16 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cd0e6f atomic_io_modify +EXPORT_SYMBOL vmlinux 0x83e9f161 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x840b4830 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x841a2d87 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x8429b312 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x8431eaea __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x84330317 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x8456e9a7 xa_erase +EXPORT_SYMBOL vmlinux 0x846eb887 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x847326b7 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0x847f1f7b iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x849284f7 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x84990635 udp6_seq_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd0263 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x84c3592b tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x84c68f14 dev_addr_del +EXPORT_SYMBOL vmlinux 0x84e182c4 dst_release +EXPORT_SYMBOL vmlinux 0x84f80644 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x851c2938 param_get_ulong +EXPORT_SYMBOL vmlinux 0x85267b61 input_set_capability +EXPORT_SYMBOL vmlinux 0x85282707 tcp_time_wait +EXPORT_SYMBOL vmlinux 0x8537938e __scsi_add_device +EXPORT_SYMBOL vmlinux 0x85382aba of_parse_phandle +EXPORT_SYMBOL vmlinux 0x8544d004 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x854b7a44 setattr_prepare +EXPORT_SYMBOL vmlinux 0x8552a983 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8582ebff cpu_all_bits +EXPORT_SYMBOL vmlinux 0x85851f6f km_policy_notify +EXPORT_SYMBOL vmlinux 0x858ed16f cad_pid +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x85971188 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x85aede11 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x85b38999 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85bdd7e7 seq_file_path +EXPORT_SYMBOL vmlinux 0x85d16059 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e77be0 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f0061d tcf_em_register +EXPORT_SYMBOL vmlinux 0x85f14c94 simple_release_fs +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x8604b2f1 single_release +EXPORT_SYMBOL vmlinux 0x86058792 sk_stream_error +EXPORT_SYMBOL vmlinux 0x860f7fde ps2_begin_command +EXPORT_SYMBOL vmlinux 0x861ef4ed dev_mc_flush +EXPORT_SYMBOL vmlinux 0x862bc663 memset16 +EXPORT_SYMBOL vmlinux 0x862cdf4b jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x86332725 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x863e374c buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x8648dc71 sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86579b7a security_path_rename +EXPORT_SYMBOL vmlinux 0x8668fb82 bdi_put +EXPORT_SYMBOL vmlinux 0x8675f169 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x867db10e pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x8681d808 unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868ddb49 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x86936b97 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x8694b498 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x86a27dbf __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x86ad6737 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x86bcb351 vfs_readlink +EXPORT_SYMBOL vmlinux 0x86cc0f8b netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86e7a6fe mdio_find_bus +EXPORT_SYMBOL vmlinux 0x86eb0c08 proc_dointvec +EXPORT_SYMBOL vmlinux 0x86eb61f0 input_get_poll_interval +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870d5a1c __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x8710c5b2 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8713435c dm_unregister_target +EXPORT_SYMBOL vmlinux 0x87228cd0 seq_dentry +EXPORT_SYMBOL vmlinux 0x872a1103 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x875ff4c8 devm_register_netdev +EXPORT_SYMBOL vmlinux 0x8769c169 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x877f6e1d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x878ff83e rtnl_unicast +EXPORT_SYMBOL vmlinux 0x8792c081 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x8799d063 generic_write_checks +EXPORT_SYMBOL vmlinux 0x87a50776 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x87a610a2 dump_page +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87c69a46 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x87ccbbe7 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x87ccd779 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x87da834a jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0x87dd8234 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x87fc9d10 request_key_tag +EXPORT_SYMBOL vmlinux 0x87ff97a1 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x8802817b sock_sendmsg +EXPORT_SYMBOL vmlinux 0x88038e57 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x8812621a param_get_long +EXPORT_SYMBOL vmlinux 0x881bad5e phy_mipi_dphy_config_validate +EXPORT_SYMBOL vmlinux 0x88271d55 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x88313de8 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x88365570 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x88598669 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x888ef43d xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x888fdc72 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x889aec17 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x889f432e blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x88b02a28 load_nls +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88bf58a6 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x88c4b827 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x88c59215 phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88dbc808 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x8904c312 filp_close +EXPORT_SYMBOL vmlinux 0x891e42a6 snd_timer_close +EXPORT_SYMBOL vmlinux 0x89405259 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x8962b8f5 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x89631df0 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0x896fe1f9 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x8971940d twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x8973064e posix_lock_file +EXPORT_SYMBOL vmlinux 0x8997620c generic_copy_file_range +EXPORT_SYMBOL vmlinux 0x89ab3f68 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x89aefcb2 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x89b15ee0 ip_options_compile +EXPORT_SYMBOL vmlinux 0x89b347a3 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x89ba2c34 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x89e366f8 pskb_extract +EXPORT_SYMBOL vmlinux 0x89fcf0f1 sk_capable +EXPORT_SYMBOL vmlinux 0x8a0b8729 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x8a1b621d ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x8a1d0d66 kernel_connect +EXPORT_SYMBOL vmlinux 0x8a3784dc __xa_alloc +EXPORT_SYMBOL vmlinux 0x8a3b1285 __xa_erase +EXPORT_SYMBOL vmlinux 0x8a3df7d5 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a575ef2 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x8a62d152 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x8a641973 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a89f8c8 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa30959 ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x8aa42116 simple_get_link +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ad049bc take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0x8ad0ea5b xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x8afe0b59 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0x8afef503 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b09e010 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x8b265eb4 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x8b2cefab blk_get_queue +EXPORT_SYMBOL vmlinux 0x8b3431f3 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b67775a snd_unregister_device +EXPORT_SYMBOL vmlinux 0x8b71938c cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8ab00e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8b9eaff0 tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0x8bb8cc5a pci_read_config_word +EXPORT_SYMBOL vmlinux 0x8bc1af23 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x8bc99b1b d_splice_alias +EXPORT_SYMBOL vmlinux 0x8bcad9a2 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8bd01817 d_delete +EXPORT_SYMBOL vmlinux 0x8bd6feca twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x8be189ab ucc_slow_disable +EXPORT_SYMBOL vmlinux 0x8bee75d7 proc_dostring +EXPORT_SYMBOL vmlinux 0x8bef37b9 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x8bf6849c gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x8bf7ca98 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x8c4c4c3f dqput +EXPORT_SYMBOL vmlinux 0x8c553975 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x8c5d254a dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0x8c685c23 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c6d0b22 _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x8c8950a7 mount_bdev +EXPORT_SYMBOL vmlinux 0x8c8dfac9 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x8ca43791 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x8cbc614a cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x8cc53d20 __par_io_config_pin +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cdbbae1 arp_send +EXPORT_SYMBOL vmlinux 0x8ce13cc5 udplite_table +EXPORT_SYMBOL vmlinux 0x8d0404a1 key_task_permission +EXPORT_SYMBOL vmlinux 0x8d051bd4 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x8d0e0555 no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0x8d201bcf security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x8d2d8a46 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8d2eb950 freeze_bdev +EXPORT_SYMBOL vmlinux 0x8d359730 ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x8d39d689 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x8d3bd683 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x8d53df83 vfs_statfs +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6ce7be get_vm_area +EXPORT_SYMBOL vmlinux 0x8d6dc41a register_shrinker +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d79ba03 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x8d7b27b8 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x8d7cb9dd snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x8d7dfb4c noop_qdisc +EXPORT_SYMBOL vmlinux 0x8d8904dc __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x8da12741 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8dc47517 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8de25f5b tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8df4afd9 qe_put_snum +EXPORT_SYMBOL vmlinux 0x8df86a97 md_register_thread +EXPORT_SYMBOL vmlinux 0x8df9c6e8 vme_slave_request +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8dfb85ab phy_validate_pause +EXPORT_SYMBOL vmlinux 0x8dfefc0d kvmalloc_node +EXPORT_SYMBOL vmlinux 0x8e018ba7 genl_register_family +EXPORT_SYMBOL vmlinux 0x8e05559c nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x8e105501 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x8e116a88 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x8e193b73 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x8e362158 snd_timer_continue +EXPORT_SYMBOL vmlinux 0x8e4c60a3 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x8e791b00 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e876807 rps_needed +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8eb8d9d5 netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL vmlinux 0x8ece9097 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x8edbfffb hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x8eea1829 should_remove_suid +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f1077f4 padata_free +EXPORT_SYMBOL vmlinux 0x8f3625fe _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x8f580bd2 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6cf18c phy_init_eee +EXPORT_SYMBOL vmlinux 0x8f8a3b48 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x8f8f657f bsearch +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8f9a9473 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8fc08fa2 __bforget +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fd8aa49 amba_request_regions +EXPORT_SYMBOL vmlinux 0x8fe35457 xxh32_update +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x900028b9 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x9001f517 vfs_get_fsid +EXPORT_SYMBOL vmlinux 0x900a74ef tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x900b5f7b snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x9010797a dec_node_page_state +EXPORT_SYMBOL vmlinux 0x9015ea02 input_get_timestamp +EXPORT_SYMBOL vmlinux 0x90266980 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x90332bf1 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x90351e73 __brelse +EXPORT_SYMBOL vmlinux 0x90483a27 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905d6b94 ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x905f55b9 __lock_buffer +EXPORT_SYMBOL vmlinux 0x9066ab7d security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x906f5252 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x907c12b0 devm_memunmap +EXPORT_SYMBOL vmlinux 0x90929439 find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0x909332ca register_sysctl +EXPORT_SYMBOL vmlinux 0x90b091a3 dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90da7a3c file_remove_privs +EXPORT_SYMBOL vmlinux 0x90db9057 send_sig +EXPORT_SYMBOL vmlinux 0x90f0dd8c fb_blank +EXPORT_SYMBOL vmlinux 0x910096b6 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x91028c62 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x91106a55 param_get_int +EXPORT_SYMBOL vmlinux 0x91150ca0 seq_release_private +EXPORT_SYMBOL vmlinux 0x912cc35c devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0x9132d063 devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x9135dba6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a2a273 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91d2a835 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0x91dda666 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x91e9de3b qdisc_reset +EXPORT_SYMBOL vmlinux 0x91eb1e59 netdev_features_change +EXPORT_SYMBOL vmlinux 0x91ff462d inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x9201a7a7 request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x9206cba1 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x920f965b kernel_getpeername +EXPORT_SYMBOL vmlinux 0x921249fe sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x921b07b1 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x921d1f48 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923ea194 __xa_insert +EXPORT_SYMBOL vmlinux 0x926a92fd scsi_ioctl +EXPORT_SYMBOL vmlinux 0x926ae8f9 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x926af405 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x9277dbaa cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x9289ea45 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x928baf25 of_phy_deregister_fixed_link +EXPORT_SYMBOL vmlinux 0x928ceb29 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x92951fc3 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x92adbd6b iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x92b28b06 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92bbd652 __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x92c74537 netdev_alert +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92f0ca73 of_cpu_node_to_id +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930a6aa5 tcp_peek_len +EXPORT_SYMBOL vmlinux 0x930ac305 eth_type_trans +EXPORT_SYMBOL vmlinux 0x931136b4 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x931c31f0 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x93205967 pipe_unlock +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9334b696 do_map_probe +EXPORT_SYMBOL vmlinux 0x935726ee serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x9364f13d security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937b9733 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0x9397e868 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93ac9ae3 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x93acb255 dm_register_target +EXPORT_SYMBOL vmlinux 0x93b0a44e dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bba2a5 mr_fill_mroute +EXPORT_SYMBOL vmlinux 0x93ca32bd touch_atime +EXPORT_SYMBOL vmlinux 0x93e221ab skb_queue_tail +EXPORT_SYMBOL vmlinux 0x93e280b7 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x93ed01d4 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x93f1bb2a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x93fec5f7 devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940e47be tcp_conn_request +EXPORT_SYMBOL vmlinux 0x9414dfc9 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x9425caca _raw_write_lock +EXPORT_SYMBOL vmlinux 0x943dc8aa crc32_be +EXPORT_SYMBOL vmlinux 0x94410a45 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x9448b3b3 input_register_handle +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x9460d3f4 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0x946fa452 __skb_ext_del +EXPORT_SYMBOL vmlinux 0x94864efa xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94963282 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x949bf7eb pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x949c0c8a dma_dummy_ops +EXPORT_SYMBOL vmlinux 0x94ada84a block_commit_write +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94d94e4b scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x94dd2f8a snd_card_register +EXPORT_SYMBOL vmlinux 0x94e16a1e __quota_error +EXPORT_SYMBOL vmlinux 0x9504fac5 set_device_ro +EXPORT_SYMBOL vmlinux 0x95180091 netlink_set_err +EXPORT_SYMBOL vmlinux 0x95368d33 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95486719 __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x95513fbf nand_read_oob_std +EXPORT_SYMBOL vmlinux 0x955cc2a8 down_read_interruptible +EXPORT_SYMBOL vmlinux 0x9569a8e6 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x956e808b __skb_recv_udp +EXPORT_SYMBOL vmlinux 0x9570f9c9 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x95722936 ucc_fast_transmit_on_demand +EXPORT_SYMBOL vmlinux 0x957697bb flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x957caf9a pci_release_region +EXPORT_SYMBOL vmlinux 0x95cf77bb tty_port_put +EXPORT_SYMBOL vmlinux 0x95d3d918 refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95dca82e proc_set_size +EXPORT_SYMBOL vmlinux 0x95ea90b3 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x95fdf60e ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x960c52b4 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x962c4977 clkdev_add +EXPORT_SYMBOL vmlinux 0x9645ed0b pgprot_user +EXPORT_SYMBOL vmlinux 0x964e12f0 dma_resv_fini +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9659338b vme_slot_num +EXPORT_SYMBOL vmlinux 0x965edcc1 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x966312fa of_device_unregister +EXPORT_SYMBOL vmlinux 0x9665ef64 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0x966a6f20 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0x966ad271 nvm_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96a06221 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x96abc8a5 ip_defrag +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d39d0b fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0x96de3069 mod_node_page_state +EXPORT_SYMBOL vmlinux 0x96f3c86a xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x96f69b46 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x97013367 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x9709dbc5 current_work +EXPORT_SYMBOL vmlinux 0x970cc3ad blkdev_put +EXPORT_SYMBOL vmlinux 0x970e564e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x97106714 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x971a4ef6 nvm_unregister +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x972d3208 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x973e4753 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x9745b613 generic_fillattr +EXPORT_SYMBOL vmlinux 0x974d2ff1 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x975c1724 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x976ea2b8 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x976f80a8 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0x97733a10 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x9776df93 d_alloc_anon +EXPORT_SYMBOL vmlinux 0x97808501 of_dev_get +EXPORT_SYMBOL vmlinux 0x978519b6 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97b00c4f mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97d1cce6 from_kprojid +EXPORT_SYMBOL vmlinux 0x97d80cee devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x97f58dbd jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x97fb48f1 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0x98000a03 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x9802a530 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x980e6c1c tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0x981c2db3 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x98227112 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0x982390ab napi_get_frags +EXPORT_SYMBOL vmlinux 0x983ac031 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x98407d4b inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x985ce93c bdi_register +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x98832da8 utf8ncursor +EXPORT_SYMBOL vmlinux 0x988399b0 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0x988bd8a8 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0x989672a9 pps_register_source +EXPORT_SYMBOL vmlinux 0x98a21b5a neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x98a71dcc sock_i_uid +EXPORT_SYMBOL vmlinux 0x98af38df pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x98b264b5 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x98c3c6a7 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98d7bc65 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98ec4800 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x98f492df cdev_device_add +EXPORT_SYMBOL vmlinux 0x98fe8676 ip6_frag_next +EXPORT_SYMBOL vmlinux 0x99088b28 mdio_device_register +EXPORT_SYMBOL vmlinux 0x99094fb2 qcom_scm_is_available +EXPORT_SYMBOL vmlinux 0x9912ec32 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x991ab837 netlink_capable +EXPORT_SYMBOL vmlinux 0x992b88d0 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x992c70ae of_dev_put +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993b03df percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9952e8f1 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x9961223e bdi_alloc +EXPORT_SYMBOL vmlinux 0x996829ea swake_up_all +EXPORT_SYMBOL vmlinux 0x9983614b pci_write_config_dword +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c06907 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a0c71e3 param_ops_long +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a21f127 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x9a2f0a04 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a5b98b5 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x9a7516a1 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x9a753644 lru_cache_add +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a89a7a3 proc_douintvec +EXPORT_SYMBOL vmlinux 0x9a9a743c udp_prot +EXPORT_SYMBOL vmlinux 0x9a9f8370 kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x9aa9cea4 trace_print_flags_seq_u64 +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9abfbd57 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x9acb8066 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x9ad05655 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x9ad6a864 dquot_release +EXPORT_SYMBOL vmlinux 0x9b013d13 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x9b0d3d74 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x9b128a66 qcom_scm_set_remote_state +EXPORT_SYMBOL vmlinux 0x9b12fe66 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x9b1b6814 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x9b1b7306 xxh64 +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b3108f3 flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x9b33d2b4 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3f8f12 nla_put +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b5477db netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x9b5682af gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x9b5a9e8b filemap_flush +EXPORT_SYMBOL vmlinux 0x9b5c5fe9 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x9b5f0256 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x9b5f05e3 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x9b5f3966 noop_llseek +EXPORT_SYMBOL vmlinux 0x9b6a9f59 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b897187 inet_gro_complete +EXPORT_SYMBOL vmlinux 0x9b8ce098 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x9bbd27f8 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x9bcf1550 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0x9be4d453 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x9be8c1d0 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x9bed7d1a skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x9bf512b9 give_up_console +EXPORT_SYMBOL vmlinux 0x9c0366ab snd_timer_open +EXPORT_SYMBOL vmlinux 0x9c1a71b3 nand_bch_init +EXPORT_SYMBOL vmlinux 0x9c2cc473 vc_resize +EXPORT_SYMBOL vmlinux 0x9c351f70 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x9c618b27 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x9c7419dc ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9c757530 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x9c7e50cc flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x9c845e93 input_free_device +EXPORT_SYMBOL vmlinux 0x9c9d7347 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x9ca694a5 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbe232e xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x9cc1a8da fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cdc2c99 filemap_fault +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce7ffec prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0x9ce90824 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x9cedff9c skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x9cf04071 nf_log_trace +EXPORT_SYMBOL vmlinux 0x9d06ac33 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d31449a jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x9d5cd559 reservation_ww_class +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d8323f9 __udp_disconnect +EXPORT_SYMBOL vmlinux 0x9d8dda1f __pagevec_release +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9d9dff40 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0x9db4b919 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0x9dd8d922 drop_nlink +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0ec162 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e1968ee pci_get_slot +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5199c0 par_io_of_config +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e63c66b phy_sfp_probe +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7bbe22 follow_down_one +EXPORT_SYMBOL vmlinux 0x9e8e7ca8 unregister_key_type +EXPORT_SYMBOL vmlinux 0x9e9356d1 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x9e9a9cb4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eae434a mmc_get_card +EXPORT_SYMBOL vmlinux 0x9eb45fb7 configfs_depend_item +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec66c6d ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x9ec67136 proc_set_user +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ec883b6 abort_creds +EXPORT_SYMBOL vmlinux 0x9ed12bde __inet_hash +EXPORT_SYMBOL vmlinux 0x9ed39a54 down_trylock +EXPORT_SYMBOL vmlinux 0x9ed52033 mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9f1fd35e fqdir_init +EXPORT_SYMBOL vmlinux 0x9f2f9fdf skb_vlan_push +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f5aaa89 netdev_state_change +EXPORT_SYMBOL vmlinux 0x9f6b8a2e ppp_input +EXPORT_SYMBOL vmlinux 0x9f7f97a8 __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x9f807b3d netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9f91fb1f bh_submit_read +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fb9fc23 skb_checksum +EXPORT_SYMBOL vmlinux 0x9fc2320b dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x9fc56f87 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fedba48 page_pool_create +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9fef8cf5 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffcd489 udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xa00b141f blk_register_region +EXPORT_SYMBOL vmlinux 0xa0114e25 vif_device_init +EXPORT_SYMBOL vmlinux 0xa0133f9a cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0xa0188f5c phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xa02b1d8a inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xa02d409f alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa057ca4d page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa071249b scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xa07efa33 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08a8524 alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0aefe3e bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b0ec01 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xa0c8652d snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xa0d05708 bio_add_page +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f02989 dev_add_pack +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa10043b2 file_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10c6e54 I_BDEV +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1339bf5 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xa14c2135 of_phy_attach +EXPORT_SYMBOL vmlinux 0xa14c571d scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xa14f5d88 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xa15ae2af nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xa15d0131 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xa1606dd8 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xa16b21fb wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xa16fc493 dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0xa17bd3fc add_wait_queue +EXPORT_SYMBOL vmlinux 0xa1831a58 kmap_high +EXPORT_SYMBOL vmlinux 0xa1839690 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa18ff8f9 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xa1a9c35b unlock_rename +EXPORT_SYMBOL vmlinux 0xa1b5e18a __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xa1bacd91 qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d131ed vmemdup_user +EXPORT_SYMBOL vmlinux 0xa1d7dae0 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xa1e5b787 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa2148e03 snd_jack_new +EXPORT_SYMBOL vmlinux 0xa222247e snd_seq_root +EXPORT_SYMBOL vmlinux 0xa22f6c04 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0xa230489b devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xa2373135 param_set_short +EXPORT_SYMBOL vmlinux 0xa24491bf ida_free +EXPORT_SYMBOL vmlinux 0xa244d54c mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xa2479b68 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xa24a0f66 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xa24b120b security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa259fc67 kernel_read +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa2624499 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa26f8895 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xa2710c14 of_find_property +EXPORT_SYMBOL vmlinux 0xa27dbb7d pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0xa27eb148 input_release_device +EXPORT_SYMBOL vmlinux 0xa2803183 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0xa2818607 fget +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa2987770 unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xa2a53ce0 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xa2b5eb51 devm_ioremap +EXPORT_SYMBOL vmlinux 0xa2dde4ef pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xa2e54f50 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xa2fe0c7b snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0xa2ffbad9 generic_file_open +EXPORT_SYMBOL vmlinux 0xa338ce4f tcp_seq_start +EXPORT_SYMBOL vmlinux 0xa33d312c d_alloc_name +EXPORT_SYMBOL vmlinux 0xa34065f0 wake_up_process +EXPORT_SYMBOL vmlinux 0xa34fa454 sync_blockdev +EXPORT_SYMBOL vmlinux 0xa35f46ea blackhole_netdev +EXPORT_SYMBOL vmlinux 0xa3783bfa inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0xa379e416 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xa37b158c __d_drop +EXPORT_SYMBOL vmlinux 0xa388e744 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0xa38c406a mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xa3951f40 _dev_notice +EXPORT_SYMBOL vmlinux 0xa3962669 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0xa3a54979 init_on_free +EXPORT_SYMBOL vmlinux 0xa3a729c2 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0xa3ba27bf vme_free_consistent +EXPORT_SYMBOL vmlinux 0xa3bb326b register_gifconf +EXPORT_SYMBOL vmlinux 0xa3c00c06 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0xa3f0f4fe rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0xa3f1f005 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xa3f930dd __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa408cf15 blk_put_queue +EXPORT_SYMBOL vmlinux 0xa4164aed phy_resume +EXPORT_SYMBOL vmlinux 0xa418bd55 xp_alloc +EXPORT_SYMBOL vmlinux 0xa437183d netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xa43799a8 rfs_needed +EXPORT_SYMBOL vmlinux 0xa43a312e pmem_sector_size +EXPORT_SYMBOL vmlinux 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xa443286f ip_do_fragment +EXPORT_SYMBOL vmlinux 0xa44b3adf __close_fd +EXPORT_SYMBOL vmlinux 0xa4552208 init_on_alloc +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4624248 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa467f856 unregister_nls +EXPORT_SYMBOL vmlinux 0xa4681609 key_validate +EXPORT_SYMBOL vmlinux 0xa485c1d1 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xa496f05c __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xa499cb01 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xa4a48d55 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b7f2cc sync_file_get_fence +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4dd0a63 dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0xa4f0309a device_add_disk +EXPORT_SYMBOL vmlinux 0xa4f78838 __close_fd_get_file +EXPORT_SYMBOL vmlinux 0xa4fca045 qcom_scm_ocmem_lock +EXPORT_SYMBOL vmlinux 0xa50c9d2d mmc_request_done +EXPORT_SYMBOL vmlinux 0xa5169601 security_sb_remount +EXPORT_SYMBOL vmlinux 0xa517a6e1 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xa52d6316 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0xa5487e17 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0xa54b7d6f neigh_direct_output +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5647ff7 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xa565565f sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xa5684076 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xa56fde1c __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xa573832c unlock_new_inode +EXPORT_SYMBOL vmlinux 0xa57a6736 con_is_visible +EXPORT_SYMBOL vmlinux 0xa59052f0 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa592be52 input_reset_device +EXPORT_SYMBOL vmlinux 0xa59799db sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xa5988194 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xa598cae5 dst_discard_out +EXPORT_SYMBOL vmlinux 0xa59c3008 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xa5a3557a uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xa5c3bdee scm_detach_fds +EXPORT_SYMBOL vmlinux 0xa5c6fb93 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0xa5de715e tcp_mmap +EXPORT_SYMBOL vmlinux 0xa5e76b3b of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xa5fc627e fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0xa602030f devm_iounmap +EXPORT_SYMBOL vmlinux 0xa615e357 mmc_command_done +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa62b33c5 soft_cursor +EXPORT_SYMBOL vmlinux 0xa62b9bad snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0xa637cea6 rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xa63e378d security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xa6509b96 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa65da9df devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xa65f2f16 elevator_alloc +EXPORT_SYMBOL vmlinux 0xa664cefc blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xa681e39d __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa68613dd get_jiffies_64 +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6997cf5 vprintk_emit +EXPORT_SYMBOL vmlinux 0xa69a520e sock_no_getname +EXPORT_SYMBOL vmlinux 0xa6a5fa09 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xa6a7a2ad div_s64_rem +EXPORT_SYMBOL vmlinux 0xa6b24c9c mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa6c52a73 dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0xa6dbdb20 set_create_files_as +EXPORT_SYMBOL vmlinux 0xa6dcd40d __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xa700167b padata_alloc_shell +EXPORT_SYMBOL vmlinux 0xa7016cdc input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xa70bc96d qcom_scm_restore_sec_cfg_available +EXPORT_SYMBOL vmlinux 0xa712414c snd_pcm_set_managed_buffer +EXPORT_SYMBOL vmlinux 0xa714758e sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xa71eab75 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xa72418ae __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xa72957cc __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xa729e3b8 reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0xa738bf7c dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0xa73eba5e genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xa73ee62b _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa7507581 seq_printf +EXPORT_SYMBOL vmlinux 0xa76560fa dcache_dir_close +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa77d829d find_inode_nowait +EXPORT_SYMBOL vmlinux 0xa7821e2f blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa7836d39 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xa78686f3 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xa78ec00b sk_dst_check +EXPORT_SYMBOL vmlinux 0xa795d231 d_invalidate +EXPORT_SYMBOL vmlinux 0xa7a56dca pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xa7b3181c up_read +EXPORT_SYMBOL vmlinux 0xa7b6f192 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0xa7c50c82 vga_put +EXPORT_SYMBOL vmlinux 0xa7c8be48 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7e916bb put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0xa7edc0e6 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa80acb56 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xa8253676 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xa82b08ef hmm_range_fault +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa834d1c6 bio_split +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa854324e sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xa8613cd2 mmc_start_request +EXPORT_SYMBOL vmlinux 0xa8679bc7 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0xa86a8f4b textsearch_unregister +EXPORT_SYMBOL vmlinux 0xa873f90f vfs_tmpfile +EXPORT_SYMBOL vmlinux 0xa8990854 dump_skip +EXPORT_SYMBOL vmlinux 0xa89a60f7 rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0xa89b94d9 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xa8a08caf trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8b94a4a inode_init_once +EXPORT_SYMBOL vmlinux 0xa8c65ccc security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8d52d76 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0xa8d988e7 vm_insert_pages +EXPORT_SYMBOL vmlinux 0xa8ddc124 kern_unmount_array +EXPORT_SYMBOL vmlinux 0xa8ec7d34 crc_ccitt +EXPORT_SYMBOL vmlinux 0xa8f48e75 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa8f7f280 idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xa8fc89a2 migrate_page_states +EXPORT_SYMBOL vmlinux 0xa903ebcd param_set_int +EXPORT_SYMBOL vmlinux 0xa905d54c read_cache_pages +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa936133e del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xa960586f flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0xa9643179 mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa98b0091 filp_open +EXPORT_SYMBOL vmlinux 0xa9eb465f ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0xa9ef6239 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xa9f6664c qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0xa9ff5e82 dquot_resume +EXPORT_SYMBOL vmlinux 0xaa0076c9 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xaa0b7885 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xaa14d557 register_cdrom +EXPORT_SYMBOL vmlinux 0xaa317d74 touch_buffer +EXPORT_SYMBOL vmlinux 0xaa42e16a gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0xaa568174 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xaa56fb7d d_instantiate_new +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6b8aed generic_block_bmap +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa820814 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xaaa26d81 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaab7fc9f input_unregister_device +EXPORT_SYMBOL vmlinux 0xaac9e71f devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0xaacc9e27 sort +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad68ac7 _dev_info +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaae7bcba serio_bus +EXPORT_SYMBOL vmlinux 0xaafd9237 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab005eb9 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xab024b0a generic_read_dir +EXPORT_SYMBOL vmlinux 0xab082de5 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xab1abc71 unload_nls +EXPORT_SYMBOL vmlinux 0xab1ebc94 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xab2da674 dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab735372 ipmi_dmi_get_slave_addr +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab85b9fa inet_sendmsg +EXPORT_SYMBOL vmlinux 0xab9b58c1 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xab9bf915 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xaba2454d jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xaba89183 set_posix_acl +EXPORT_SYMBOL vmlinux 0xabc0620d bioset_exit +EXPORT_SYMBOL vmlinux 0xabe51fe9 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xabee80f5 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xabef4ece tcp_add_backlog +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xabf7ba10 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xabfcebff rproc_da_to_va +EXPORT_SYMBOL vmlinux 0xac0c1436 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xac0eae76 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2c2da0 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xac52ef2a phy_init_hw +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac61f901 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xac620682 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac88ca95 __snd_pcm_lib_xfer +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb31ecf _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xacb9036f __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf2af09 skb_clone +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a167e snd_timer_global_free +EXPORT_SYMBOL vmlinux 0xad2d57f7 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xad4d6c1d block_write_begin +EXPORT_SYMBOL vmlinux 0xad6f7144 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad74eda0 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xad7dd19e fs_context_for_mount +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadd22e70 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0xadd7fe0a inet_select_addr +EXPORT_SYMBOL vmlinux 0xadde8b02 of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0xade68118 bdgrab +EXPORT_SYMBOL vmlinux 0xade9bfa8 phy_get_pause +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae05aba3 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xae13fdb3 fiemap_prep +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae3c8ed1 dcb_getapp +EXPORT_SYMBOL vmlinux 0xae414ff7 sync_file_create +EXPORT_SYMBOL vmlinux 0xae48063a ppp_input_error +EXPORT_SYMBOL vmlinux 0xae559e84 register_sound_dsp +EXPORT_SYMBOL vmlinux 0xae5c3100 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xae6f2ac3 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xae929696 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xae9a94d4 __frontswap_test +EXPORT_SYMBOL vmlinux 0xae9f55b3 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xae9fa512 sock_create_lite +EXPORT_SYMBOL vmlinux 0xaea1b045 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaede0695 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0xaee95991 ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0xaf051c6f mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xaf16f615 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xaf1f5dfd fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xaf2cc42e get_tree_single +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf6b8774 nvm_submit_io +EXPORT_SYMBOL vmlinux 0xaf730d8c kobject_put +EXPORT_SYMBOL vmlinux 0xaf743e6f scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf92a6a5 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0xaf9a0a2a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0xaf9ac3c4 netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0xafa4d33d jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xafa7704c __SetPageMovable +EXPORT_SYMBOL vmlinux 0xafd1c8f8 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xafd9de5a component_match_add_typed +EXPORT_SYMBOL vmlinux 0xafde4f17 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xafe24387 nand_write_oob_std +EXPORT_SYMBOL vmlinux 0xafe557bb serio_open +EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0xafebcf26 dump_truncate +EXPORT_SYMBOL vmlinux 0xafef1704 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb026a4df napi_disable +EXPORT_SYMBOL vmlinux 0xb04c607a tcp_poll +EXPORT_SYMBOL vmlinux 0xb04dd079 param_get_ushort +EXPORT_SYMBOL vmlinux 0xb055b84c nf_log_set +EXPORT_SYMBOL vmlinux 0xb05a6602 snd_component_add +EXPORT_SYMBOL vmlinux 0xb05e2b2f ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb083d0b6 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xb08eb6c2 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0xb09ef452 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a3c5d2 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xb0bf3f6c snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xb0c207d5 ac97_bus_type +EXPORT_SYMBOL vmlinux 0xb0d92e32 dev_mc_init +EXPORT_SYMBOL vmlinux 0xb0da0b4b dm_table_get_md +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ed08fe vme_master_mmap +EXPORT_SYMBOL vmlinux 0xb0f541a1 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0xb10b4c63 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb128c32f __scm_destroy +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb133c634 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xb1357551 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0xb13db854 flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0xb13e9056 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14f1dab md_bitmap_free +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb152022f sock_kmalloc +EXPORT_SYMBOL vmlinux 0xb1641453 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb193991f xfrm_register_type +EXPORT_SYMBOL vmlinux 0xb194af33 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xb19a5de4 kthread_create_worker +EXPORT_SYMBOL vmlinux 0xb19b6915 proc_symlink +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1bb15db dst_alloc +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1f197de km_state_notify +EXPORT_SYMBOL vmlinux 0xb21c02f9 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb249a391 omap_request_dma +EXPORT_SYMBOL vmlinux 0xb256c974 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb25a698b ps2_sliced_command +EXPORT_SYMBOL vmlinux 0xb25bf2f0 rproc_add +EXPORT_SYMBOL vmlinux 0xb2851d92 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0xb286c477 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0xb289ac68 config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0xb28d1559 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xb2b19c01 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xb2d0053e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e01479 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xb2e37a1f sock_no_linger +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2fb51cb console_start +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb320b016 simple_open +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb32728bb qcom_scm_iommu_secure_ptbl_init +EXPORT_SYMBOL vmlinux 0xb32ca072 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xb344e6df blk_rq_init +EXPORT_SYMBOL vmlinux 0xb34efb7b PageMovable +EXPORT_SYMBOL vmlinux 0xb35af074 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xb3667805 dqstats +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb373ecde skb_clone_sk +EXPORT_SYMBOL vmlinux 0xb3789a5e param_ops_uint +EXPORT_SYMBOL vmlinux 0xb378ad06 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xb37c7ff0 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb37cff38 nf_reinject +EXPORT_SYMBOL vmlinux 0xb3b6d7bf ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xb3b7c0af nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0xb3bb1a88 d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3bed574 kunmap_high +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d55ec5 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xb3ef82c2 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb3f5579b pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3f8c428 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xb40cae14 phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42cf26f i2c_transfer +EXPORT_SYMBOL vmlinux 0xb444378d ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xb44a0331 vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4600f09 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb4686023 sock_set_priority +EXPORT_SYMBOL vmlinux 0xb476c8f4 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb4910192 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0xb491bc7d devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xb49274e1 locks_init_lock +EXPORT_SYMBOL vmlinux 0xb4aa017a netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0xb4b933b6 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xb4ccf129 kset_unregister +EXPORT_SYMBOL vmlinux 0xb4ddc2ce seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb504c280 tcf_idr_search +EXPORT_SYMBOL vmlinux 0xb51db8e2 ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xb564631d fqdir_exit +EXPORT_SYMBOL vmlinux 0xb56ea0e0 of_get_property +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57a7aee __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b0a385 inet_listen +EXPORT_SYMBOL vmlinux 0xb5b702a2 mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0xb5c67c64 nla_reserve +EXPORT_SYMBOL vmlinux 0xb60c9b81 phy_start +EXPORT_SYMBOL vmlinux 0xb61dec60 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xb62f451c _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xb64eec4b skb_put +EXPORT_SYMBOL vmlinux 0xb6674f4e simple_empty +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67caf65 ucc_fast_enable +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb699bb03 elm_config +EXPORT_SYMBOL vmlinux 0xb69a4961 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6b6284e xz_dec_run +EXPORT_SYMBOL vmlinux 0xb6e6a155 amba_release_regions +EXPORT_SYMBOL vmlinux 0xb6f3d4af proto_unregister +EXPORT_SYMBOL vmlinux 0xb6fbc3d3 nand_read_page_raw +EXPORT_SYMBOL vmlinux 0xb70b5065 cdrom_release +EXPORT_SYMBOL vmlinux 0xb71d986d snd_pcm_hw_limit_rates +EXPORT_SYMBOL vmlinux 0xb7362c90 do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0xb736b4b9 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xb74c6728 uart_match_port +EXPORT_SYMBOL vmlinux 0xb74e6797 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xb7688155 ucc_slow_init +EXPORT_SYMBOL vmlinux 0xb77088cd devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0xb7872388 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0xb787f98d md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb78e2050 qcom_scm_pas_init_image +EXPORT_SYMBOL vmlinux 0xb7bb9036 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xb7c119ce unregister_quota_format +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d403ab kernel_bind +EXPORT_SYMBOL vmlinux 0xb7d54386 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0xb7df0e97 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xb7f24f49 d_path +EXPORT_SYMBOL vmlinux 0xb842716c qcom_scm_ocmem_lock_available +EXPORT_SYMBOL vmlinux 0xb846128b security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xb8480823 skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0xb84a57ef blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xb861f4f9 tty_hangup +EXPORT_SYMBOL vmlinux 0xb864b84b ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb879dfe3 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xb88032a1 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb8a6ffeb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xb8aabde1 phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8bac854 udp_ioctl +EXPORT_SYMBOL vmlinux 0xb8bb1d3d logfc +EXPORT_SYMBOL vmlinux 0xb8bbcc1c md_unregister_thread +EXPORT_SYMBOL vmlinux 0xb8c66c45 dma_fence_get_status +EXPORT_SYMBOL vmlinux 0xb8cc07f6 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb90292ed of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xb9046556 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb90dd81d netdev_info +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb9369fe1 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xb93eff19 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xb940d1d3 thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb9488012 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xb94babd9 dev_trans_start +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb986ae29 snd_card_file_add +EXPORT_SYMBOL vmlinux 0xb9a0e69a sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xb9a613c6 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9aaf706 fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9c3f8ed lookup_one_len +EXPORT_SYMBOL vmlinux 0xb9c685b2 path_get +EXPORT_SYMBOL vmlinux 0xb9cbb5f2 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0xb9e5f3f2 nand_monolithic_read_page_raw +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9eee3ec scsi_partsize +EXPORT_SYMBOL vmlinux 0xb9fc381a qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xba16d34c pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0xba2a873f pci_free_irq +EXPORT_SYMBOL vmlinux 0xba2ffeea ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0xba3e4b7a register_md_personality +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba536f16 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xba5a3e69 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xba707a78 qe_get_brg_clk +EXPORT_SYMBOL vmlinux 0xba77cb29 tcp_close +EXPORT_SYMBOL vmlinux 0xba79c2f8 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xba7ccc2f tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0xba92ce53 backlight_device_register +EXPORT_SYMBOL vmlinux 0xbaa7c8c5 krealloc +EXPORT_SYMBOL vmlinux 0xbaae6ce4 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xbaafae4d clear_wb_congested +EXPORT_SYMBOL vmlinux 0xbabb9a31 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbaec36ea dev_lstats_read +EXPORT_SYMBOL vmlinux 0xbafc0e23 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0xbb01fcad of_lpddr3_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb14eb31 bcmp +EXPORT_SYMBOL vmlinux 0xbb1d41b5 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb25a8da qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3cc85f kmem_cache_size +EXPORT_SYMBOL vmlinux 0xbb42ea58 sock_release +EXPORT_SYMBOL vmlinux 0xbb49ea6c fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0xbb4e8dbe tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xbb533253 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xbb57ca82 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xbb70f90a blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb7d7b1f qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xbb838503 follow_pfn +EXPORT_SYMBOL vmlinux 0xbb86036a arm_dma_ops +EXPORT_SYMBOL vmlinux 0xbb95d999 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0xbbc93458 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xbbcff9a4 check_zeroed_user +EXPORT_SYMBOL vmlinux 0xbbd9dc5d param_ops_ulong +EXPORT_SYMBOL vmlinux 0xbbdd2d99 __inc_node_page_state +EXPORT_SYMBOL vmlinux 0xbbdef33c sget +EXPORT_SYMBOL vmlinux 0xbc05bd0a module_put +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc2689ba wireless_send_event +EXPORT_SYMBOL vmlinux 0xbc358216 sget_fc +EXPORT_SYMBOL vmlinux 0xbc35cae5 bio_put +EXPORT_SYMBOL vmlinux 0xbc3f558b __scsi_execute +EXPORT_SYMBOL vmlinux 0xbc414170 kobject_add +EXPORT_SYMBOL vmlinux 0xbc4d7b8a finish_no_open +EXPORT_SYMBOL vmlinux 0xbc701899 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc98d82 scsi_add_device +EXPORT_SYMBOL vmlinux 0xbcd28b75 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xbce11eaf dev_printk +EXPORT_SYMBOL vmlinux 0xbd146291 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xbd2ec65c mmc_retune_pause +EXPORT_SYMBOL vmlinux 0xbd407123 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xbd46dfcd simple_write_end +EXPORT_SYMBOL vmlinux 0xbd483fa1 nand_correct_data +EXPORT_SYMBOL vmlinux 0xbd4a3cb3 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0xbd6807f0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xbd751e3b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xbd7a88d4 udplite_prot +EXPORT_SYMBOL vmlinux 0xbd820297 rtc_lock +EXPORT_SYMBOL vmlinux 0xbd8555f8 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xbd9a4b3b dev_mc_sync +EXPORT_SYMBOL vmlinux 0xbda42419 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0xbdc21701 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xbdca067b vfs_fadvise +EXPORT_SYMBOL vmlinux 0xbdd49231 nf_log_unset +EXPORT_SYMBOL vmlinux 0xbddada08 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0xbe03f173 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xbe0e3cba tcf_queue_work +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1f0d3a vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xbe32fea7 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xbe47e789 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe51d891 tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0xbe58206e vm_zone_stat +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe5d7480 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe858c4b mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0xbe936d7f mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf003821 tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0xbf1fc955 dev_change_flags +EXPORT_SYMBOL vmlinux 0xbf4161ba pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xbf485d40 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xbf4d4539 udp_table +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf6fda96 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xbf7347b2 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xbf85a133 tcp_connect +EXPORT_SYMBOL vmlinux 0xbf865e50 dquot_disable +EXPORT_SYMBOL vmlinux 0xbf8e90ea of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xbf9232f8 clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfcd2800 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0xbfdf7bc3 mempool_create +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc00c8fdf tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xc014f428 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc0151a10 tty_register_device +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc02bc920 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xc034a061 rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0xc03c09e3 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0xc044310b clk_get +EXPORT_SYMBOL vmlinux 0xc04b3f8c ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0xc069dced __put_cred +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc07f4520 of_get_cpu_state_node +EXPORT_SYMBOL vmlinux 0xc0832c81 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xc0849d00 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xc084fc06 skb_copy +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc09f4749 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0da0e99 dim_on_top +EXPORT_SYMBOL vmlinux 0xc0dd4cd9 skb_push +EXPORT_SYMBOL vmlinux 0xc0e11423 bioset_init +EXPORT_SYMBOL vmlinux 0xc0ec0ad7 update_region +EXPORT_SYMBOL vmlinux 0xc0fb357a dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc10cbf3d __invalidate_device +EXPORT_SYMBOL vmlinux 0xc13805e8 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xc1387283 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xc13a7ba6 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0xc1425404 nand_write_page_raw +EXPORT_SYMBOL vmlinux 0xc14ab7bb mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0xc14c9205 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc1560d7e nf_log_unregister +EXPORT_SYMBOL vmlinux 0xc15f4ed8 utf8nlen +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc181ee9a dquot_scan_active +EXPORT_SYMBOL vmlinux 0xc184d96d of_get_min_tck +EXPORT_SYMBOL vmlinux 0xc1aabef7 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xc1b38e7b __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xc1c6b370 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xc1d27676 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e27225 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xc1e61f18 configfs_register_default_group +EXPORT_SYMBOL vmlinux 0xc1ebeaeb xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc2059c64 fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0xc206a497 to_nd_btt +EXPORT_SYMBOL vmlinux 0xc207ee07 complete_and_exit +EXPORT_SYMBOL vmlinux 0xc20f6d86 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xc229411a devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc22bf545 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0xc230c9a8 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0xc23745e5 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0xc258997d snd_pcm_create_iec958_consumer +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc26b61e7 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xc271c3be mutex_lock +EXPORT_SYMBOL vmlinux 0xc29308b7 of_phy_get_and_connect +EXPORT_SYMBOL vmlinux 0xc294e0cb module_refcount +EXPORT_SYMBOL vmlinux 0xc29902e8 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xc2a8373c unix_detach_fds +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b1d4e1 lockref_put_return +EXPORT_SYMBOL vmlinux 0xc2b299e4 open_exec +EXPORT_SYMBOL vmlinux 0xc2b4c32e md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xc2cf2dde ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0xc2d60abe iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xc2d8a21a phy_disconnect +EXPORT_SYMBOL vmlinux 0xc2dd576a vlan_vid_add +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ede9c5 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xc2f07c5a vfs_create_mount +EXPORT_SYMBOL vmlinux 0xc2f63a7a to_ndd +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc3269bb0 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc3484cdb tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xc358aaf8 snprintf +EXPORT_SYMBOL vmlinux 0xc37335b0 complete +EXPORT_SYMBOL vmlinux 0xc37863e5 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc3809e08 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc3a82302 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xc3a9615d pci_iomap +EXPORT_SYMBOL vmlinux 0xc3ec7dc1 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc40af356 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xc415e5da sync_inode +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc42d95ad dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xc4352fbf iov_iter_init +EXPORT_SYMBOL vmlinux 0xc4657dc8 mempool_init +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc47a1451 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xc4845b20 register_console +EXPORT_SYMBOL vmlinux 0xc485795a mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0xc491e0c4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xc4a500ab pci_claim_resource +EXPORT_SYMBOL vmlinux 0xc4a69054 iput +EXPORT_SYMBOL vmlinux 0xc4acc45b snd_jack_set_key +EXPORT_SYMBOL vmlinux 0xc4ad426c scsi_remove_host +EXPORT_SYMBOL vmlinux 0xc4c2e419 filemap_check_errors +EXPORT_SYMBOL vmlinux 0xc4c91467 __nla_put +EXPORT_SYMBOL vmlinux 0xc4d98b27 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xc4f05ef4 get_disk_and_module +EXPORT_SYMBOL vmlinux 0xc50cc267 lock_page_memcg +EXPORT_SYMBOL vmlinux 0xc51607db param_ops_string +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc52f3dac tty_throttle +EXPORT_SYMBOL vmlinux 0xc53fe81b __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xc5442a79 netif_napi_add +EXPORT_SYMBOL vmlinux 0xc549d4c7 __f_setown +EXPORT_SYMBOL vmlinux 0xc5524968 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0xc55f9e48 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0xc5619689 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xc581500f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc58f1c00 elv_rb_find +EXPORT_SYMBOL vmlinux 0xc58fdec6 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc595e3fb copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL vmlinux 0xc5b1c40c xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xc5c06ad5 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0xc5ccf323 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xc5d1af13 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xc5df8bcb blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5ee1d3a key_put +EXPORT_SYMBOL vmlinux 0xc5ee6c48 kvfree_sensitive +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc5fff94e scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc603cbe3 skb_ext_add +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc60890e8 __free_pages +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc6247240 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xc62fd229 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc63cfbac mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xc64d2d57 kthread_stop +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc67d7ffb dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc6914dd9 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xc69fce52 qcom_scm_qsmmu500_wait_safe_toggle +EXPORT_SYMBOL vmlinux 0xc6abda2e of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xc6bafe4d of_device_alloc +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d774cf generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc7040bf5 ucc_tdm_init +EXPORT_SYMBOL vmlinux 0xc708e8ab genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xc70a7c7e param_ops_bool +EXPORT_SYMBOL vmlinux 0xc70c586f default_llseek +EXPORT_SYMBOL vmlinux 0xc71b4e24 ata_link_printk +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7512f79 inode_io_list_del +EXPORT_SYMBOL vmlinux 0xc76329b5 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xc76440b8 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xc77385bd xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xc777bdbf netlink_ack +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc784c635 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a20d4d unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a81d55 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xc7ac87f0 tty_kref_put +EXPORT_SYMBOL vmlinux 0xc7b077e3 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7c2f5bb bio_copy_data +EXPORT_SYMBOL vmlinux 0xc7c75b61 d_add +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f60ddb netdev_change_features +EXPORT_SYMBOL vmlinux 0xc8173b16 fs_lookup_param +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc81e9e69 snd_power_wait +EXPORT_SYMBOL vmlinux 0xc82bb758 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc82e1191 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc8351cac dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8564db4 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc86581ee inet6_add_offload +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b58a25 __memset64 +EXPORT_SYMBOL vmlinux 0xc8ffd469 skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0xc921e314 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xc930f423 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xc93b7051 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xc945b365 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0xc95611aa nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc967e81f skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc973b373 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xc981a5a3 kill_anon_super +EXPORT_SYMBOL vmlinux 0xc981df77 del_gendisk +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc983922d locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xc9964d12 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xc99cbb83 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a38fd1 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xc9c0525f locks_remove_posix +EXPORT_SYMBOL vmlinux 0xc9ca3698 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xc9cb4bdb lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0xc9ddbd0d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9e9d5f9 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xc9f6788d xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xc9fd562a cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca39a1d6 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca75f08e set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xca813ce6 LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0xca82565d pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0xca83aaec snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xca8b6d45 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca974ab4 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xcab42a9c blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xcac5ef5b input_get_keycode +EXPORT_SYMBOL vmlinux 0xcadb1690 of_phy_connect +EXPORT_SYMBOL vmlinux 0xcaef8286 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xcaf0abc0 pci_enable_device +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb510bc2 complete_all +EXPORT_SYMBOL vmlinux 0xcb5e4a2d finish_swait +EXPORT_SYMBOL vmlinux 0xcb606eb9 xa_load +EXPORT_SYMBOL vmlinux 0xcb7f0e8b security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xcb86eea1 igrab +EXPORT_SYMBOL vmlinux 0xcb8c753b mempool_exit +EXPORT_SYMBOL vmlinux 0xcb9460f5 cros_ec_cmd_xfer_status +EXPORT_SYMBOL vmlinux 0xcb95e2d2 generic_write_end +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbc32064 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xcbc62a0c inet6_del_offload +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbdacac6 devm_memremap +EXPORT_SYMBOL vmlinux 0xcbde9bdc dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xcbe9078f touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0xcbf1dbd0 utf8len +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc29863f simple_pin_fs +EXPORT_SYMBOL vmlinux 0xcc30f0f1 tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0xcc323ded vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xcc3b83c2 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc4546da vme_irq_request +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc50cdb7 fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0xcc73a2d0 tcp_filter +EXPORT_SYMBOL vmlinux 0xcc7e75bf misc_register +EXPORT_SYMBOL vmlinux 0xcc958898 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0xcc9bf8ab bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0xcc9c9247 devm_clk_put +EXPORT_SYMBOL vmlinux 0xcca33b3e scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc28bc1 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccf0e407 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd00abbc add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xcd03f85f __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd123403 inet_gso_segment +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd5725b6 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xcd5f8516 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd78a1d8 arp_tbl +EXPORT_SYMBOL vmlinux 0xcd79cb68 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xcda23794 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xcdb9353c neigh_update +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde1264f inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xcdfa135d ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xcdfd68a2 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xce0dff07 kill_pid +EXPORT_SYMBOL vmlinux 0xce2610c8 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3724e6 try_lookup_one_len +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce4a559c pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce552fda file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce69d9d9 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0xce731b34 ucc_slow_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0xce77aa5a lease_modify +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce7e56b5 __mdiobus_register +EXPORT_SYMBOL vmlinux 0xce9a494e arp_xmit +EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcede275c memremap +EXPORT_SYMBOL vmlinux 0xceeaf849 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xcef0dee7 override_creds +EXPORT_SYMBOL vmlinux 0xcef8b427 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf01f610 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xcf1a09f2 xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0xcf1ab349 vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf273a5f register_qdisc +EXPORT_SYMBOL vmlinux 0xcf3290c8 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xcf3fac84 cpumask_next +EXPORT_SYMBOL vmlinux 0xcf5a93b5 ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xcf75d105 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xcf7e1d1d hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xcf86cdac queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xcf8d98bf eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcfdb9d27 configfs_undepend_item +EXPORT_SYMBOL vmlinux 0xcffc8805 pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0xd02fe747 __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd0459dff pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd04c7414 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xd04febe9 arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xd057adb9 dm_put_device +EXPORT_SYMBOL vmlinux 0xd05f79ae param_ops_invbool +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0ab6984 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd0ac1545 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0xd0c26fa9 __ps2_command +EXPORT_SYMBOL vmlinux 0xd0ca0d1a sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xd0d7b6c5 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xd0e9fb09 release_firmware +EXPORT_SYMBOL vmlinux 0xd1074304 generic_fadvise +EXPORT_SYMBOL vmlinux 0xd109778f gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0xd10aea1a scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xd10c0a78 md_reload_sb +EXPORT_SYMBOL vmlinux 0xd134d775 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize +EXPORT_SYMBOL vmlinux 0xd156b914 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd191d58f seg6_push_hmac +EXPORT_SYMBOL vmlinux 0xd1975916 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xd19b66e9 account_page_redirty +EXPORT_SYMBOL vmlinux 0xd1b0027c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd1b3ca59 map_destroy +EXPORT_SYMBOL vmlinux 0xd1d47675 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d91ec5 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xd1f425d3 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0xd204b040 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xd2051916 qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0xd221916a param_ops_int +EXPORT_SYMBOL vmlinux 0xd222a7eb security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xd22fa7c8 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xd2395e37 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xd2478e23 tty_name +EXPORT_SYMBOL vmlinux 0xd250a242 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2802d5c pgprot_kernel +EXPORT_SYMBOL vmlinux 0xd288841c omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xd2984faa jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0xd2b225bd skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0xd2b31c9f of_node_get +EXPORT_SYMBOL vmlinux 0xd2ccbe3a bdget_disk +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2eb32b9 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0xd2f7e891 inet_put_port +EXPORT_SYMBOL vmlinux 0xd2f87406 udp_gro_receive +EXPORT_SYMBOL vmlinux 0xd2f969f6 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd320e590 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xd3213a2b input_flush_device +EXPORT_SYMBOL vmlinux 0xd32d6c08 lockref_get +EXPORT_SYMBOL vmlinux 0xd33d362a sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd34f74bb free_cgroup_ns +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd35f75a1 match_string +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd39bf675 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xd39fa6ab __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xd3acb99f key_revoke +EXPORT_SYMBOL vmlinux 0xd3e923cf mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd400d866 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xd4023427 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xd404ec0e uart_register_driver +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd41f515f __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xd4302b3a bd_start_claiming +EXPORT_SYMBOL vmlinux 0xd440750a dm_io +EXPORT_SYMBOL vmlinux 0xd446375f of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xd446fd11 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd455c605 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0xd457cad5 seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0xd45c7253 try_module_get +EXPORT_SYMBOL vmlinux 0xd45f768a fs_bio_set +EXPORT_SYMBOL vmlinux 0xd46b54dd flush_delayed_work +EXPORT_SYMBOL vmlinux 0xd47153ca dquot_commit +EXPORT_SYMBOL vmlinux 0xd47303ac mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xd47836a9 __napi_schedule +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd4896dca __check_sticky +EXPORT_SYMBOL vmlinux 0xd48bd80b napi_consume_skb +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4a62c9a uart_resume_port +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4d31d14 netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0xd4e2f0e4 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xd4e6fd82 page_address +EXPORT_SYMBOL vmlinux 0xd4ee48f2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xd4f827a0 __fs_parse +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd5011015 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xd507b172 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0xd51312f0 tcf_block_get +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd528e417 is_subdir +EXPORT_SYMBOL vmlinux 0xd52af3f2 ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0xd5419a57 tty_lock +EXPORT_SYMBOL vmlinux 0xd57afadb km_new_mapping +EXPORT_SYMBOL vmlinux 0xd591a5d8 config_item_put +EXPORT_SYMBOL vmlinux 0xd593381f i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xd5944233 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xd594510d sock_wfree +EXPORT_SYMBOL vmlinux 0xd5a887b5 dev_deactivate +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5cadbfd consume_skb +EXPORT_SYMBOL vmlinux 0xd5cee70d fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0xd5d3f100 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xd5df3787 __sb_end_write +EXPORT_SYMBOL vmlinux 0xd5e43edd request_key_rcu +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f7dceb fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xd6025cb8 secpath_set +EXPORT_SYMBOL vmlinux 0xd604ea7c register_netdev +EXPORT_SYMBOL vmlinux 0xd6062103 blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd6205c02 ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xd621d1a5 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd637ffe1 __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xd63fafc2 div64_u64_rem +EXPORT_SYMBOL vmlinux 0xd655716d i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xd6582ab0 xa_extract +EXPORT_SYMBOL vmlinux 0xd65a6621 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xd66ff323 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0xd6716d22 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xd674fa41 d_set_d_op +EXPORT_SYMBOL vmlinux 0xd6770a3c sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0xd67ab6f0 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xd685ca39 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6bc04ff cmd_db_read_aux_data +EXPORT_SYMBOL vmlinux 0xd6be813b of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xd6d4a9c0 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f096e3 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd6fb94a8 kern_unmount +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd701a48f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd71a2592 discard_new_inode +EXPORT_SYMBOL vmlinux 0xd720d0c8 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xd72fbfd2 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xd732dbbd d_set_fallthru +EXPORT_SYMBOL vmlinux 0xd7355a97 dump_align +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd73baed7 vfs_mkobj +EXPORT_SYMBOL vmlinux 0xd7512d65 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0xd76574b5 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xd7680f6e vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0xd7689575 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd79d7189 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xd7a1ab59 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xd7ba8656 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xd7be8b81 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xd7c7bbfa pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xd7d0acfc input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7d7f438 release_pages +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7eb7840 uart_suspend_port +EXPORT_SYMBOL vmlinux 0xd8030aaf iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xd808fba8 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xd80de2fa skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xd815502d phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0xd815cfa5 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0xd821246f __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xd82907cb i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0xd8410611 mempool_alloc +EXPORT_SYMBOL vmlinux 0xd8433938 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd860755b __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xd86b7a9f page_pool_destroy +EXPORT_SYMBOL vmlinux 0xd875584a __genradix_ptr +EXPORT_SYMBOL vmlinux 0xd87b9ae1 single_open_size +EXPORT_SYMBOL vmlinux 0xd87ff672 phy_read_mmd +EXPORT_SYMBOL vmlinux 0xd88f183a udp_sendmsg +EXPORT_SYMBOL vmlinux 0xd8912684 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89ee11f krait_set_l2_indirect_reg +EXPORT_SYMBOL vmlinux 0xd8a1596e d_prune_aliases +EXPORT_SYMBOL vmlinux 0xd8a7c09c unregister_qdisc +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ae04b4 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xd8b3b2f7 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xd8b65076 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xd8c061cf __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xd8e63cf7 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xd8e89fe3 phy_driver_register +EXPORT_SYMBOL vmlinux 0xd90ea19b vfs_setpos +EXPORT_SYMBOL vmlinux 0xd90f6c12 end_page_writeback +EXPORT_SYMBOL vmlinux 0xd91a4254 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xd91c4639 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xd92df21a tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xd9303880 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0xd94cc893 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd963a836 genlmsg_put +EXPORT_SYMBOL vmlinux 0xd96a49ac rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xd9702186 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xd983f138 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a0116a pci_release_regions +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9e7d3b7 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xd9ebef65 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0xda00fd5a vc_cons +EXPORT_SYMBOL vmlinux 0xda1501f3 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xda31c96d inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda533f42 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xda5342d0 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0xda5c88ce neigh_seq_start +EXPORT_SYMBOL vmlinux 0xda680c6d __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0xda6fc0b3 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda9c8f17 __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xdaa13e0f qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xdaacc800 register_key_type +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac6f745 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xdac739f6 ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0xdad82f30 seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdada6494 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xdae23bc0 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdaed9d10 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xdb0d39ea pci_request_region +EXPORT_SYMBOL vmlinux 0xdb27e5f4 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xdb3fac1d ps2_init +EXPORT_SYMBOL vmlinux 0xdb52c3b6 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb78e376 flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0xdb8029c8 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xdb81e2fc __wait_on_bit +EXPORT_SYMBOL vmlinux 0xdb852ab6 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0xdb895f40 proc_create_data +EXPORT_SYMBOL vmlinux 0xdb9482d8 blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0xdb951fe4 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xdb9ca3c5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xdbb6fd67 devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0xdbc0cf41 sock_from_file +EXPORT_SYMBOL vmlinux 0xdbd0bf13 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdc09b3ee tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2cda8e locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xdc343b2e ata_port_printk +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc41d13a vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5c7961 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xdc77d170 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdc7f5036 phy_device_register +EXPORT_SYMBOL vmlinux 0xdc81901a wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xdc9ee388 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xdcb1180a pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xdcd7fc15 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xdcd8ecd6 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xdcdae7ab is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xdcdb5a7b ps2_end_command +EXPORT_SYMBOL vmlinux 0xdce332f3 __serio_register_port +EXPORT_SYMBOL vmlinux 0xdcf6d045 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1f8f1b inet6_bind +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd33c2a7 bmap +EXPORT_SYMBOL vmlinux 0xdd4ffa9b mutex_trylock +EXPORT_SYMBOL vmlinux 0xdd5a8a06 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd796beb get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xdd7e3192 qcom_scm_pas_auth_and_reset +EXPORT_SYMBOL vmlinux 0xdd81421f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0xdd820029 set_groups +EXPORT_SYMBOL vmlinux 0xdd82d5ec pci_get_device +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd8f8a2e blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xddac2a03 unregister_netdev +EXPORT_SYMBOL vmlinux 0xddb16e23 rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0xdddf6b61 keyring_search +EXPORT_SYMBOL vmlinux 0xddea85e5 get_task_cred +EXPORT_SYMBOL vmlinux 0xde08293a inet6_offloads +EXPORT_SYMBOL vmlinux 0xde122994 file_ns_capable +EXPORT_SYMBOL vmlinux 0xde1999a5 import_iovec +EXPORT_SYMBOL vmlinux 0xde1d2612 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xde1e7a28 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xde2e9a83 tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0xde384ded genl_unregister_family +EXPORT_SYMBOL vmlinux 0xde389b57 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xde3aa31c put_fs_context +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde59092a lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xde6253a8 register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xde7abebc skb_queue_purge +EXPORT_SYMBOL vmlinux 0xde80aa08 vme_bus_type +EXPORT_SYMBOL vmlinux 0xde8d90d8 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xde905558 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xde962197 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xde97af6d security_path_mkdir +EXPORT_SYMBOL vmlinux 0xdebc1727 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xdebdd7f3 configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0xdec030e5 arm_clear_user +EXPORT_SYMBOL vmlinux 0xdecf1881 mdio_device_reset +EXPORT_SYMBOL vmlinux 0xded0a32b blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xdee71a06 pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xdeecd192 dns_query +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf141c83 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xdf258f60 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xdf26ccec xp_free +EXPORT_SYMBOL vmlinux 0xdf272de7 proc_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3ede4e genphy_resume +EXPORT_SYMBOL vmlinux 0xdf52def1 ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf71f3bd phy_connect_direct +EXPORT_SYMBOL vmlinux 0xdf72bf50 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xdf85947f of_iomap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfb16ebe tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0xdfc1b17a task_work_add +EXPORT_SYMBOL vmlinux 0xdfc6d078 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xdfc75152 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfd9da84 pci_restore_state +EXPORT_SYMBOL vmlinux 0xdfdc2994 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdfe34b77 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xdfe7a430 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0xdff404e7 block_write_end +EXPORT_SYMBOL vmlinux 0xdff66fe9 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdff9e8c0 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe01f6a09 keyring_clear +EXPORT_SYMBOL vmlinux 0xe0209ace xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0xe028a6ca atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xe0309403 genphy_loopback +EXPORT_SYMBOL vmlinux 0xe0329e47 seq_escape +EXPORT_SYMBOL vmlinux 0xe03c1677 pci_request_irq +EXPORT_SYMBOL vmlinux 0xe046386b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xe0601f3b blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xe065094e mmc_run_bkops +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0a77637 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c48dce bio_init +EXPORT_SYMBOL vmlinux 0xe0c4e989 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xe0e024e6 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11812fb pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xe11c0b56 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xe121bfb9 seq_release +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe126d8df insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe150314c phy_write_paged +EXPORT_SYMBOL vmlinux 0xe153f436 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0xe15effdd bio_reset +EXPORT_SYMBOL vmlinux 0xe161b324 amba_device_register +EXPORT_SYMBOL vmlinux 0xe17df40a vme_master_request +EXPORT_SYMBOL vmlinux 0xe1973cdc __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1a9b2ff dma_fence_match_context +EXPORT_SYMBOL vmlinux 0xe1ac2f99 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0xe1d3d480 nobh_write_end +EXPORT_SYMBOL vmlinux 0xe1db98c6 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe209acdc clk_bulk_get +EXPORT_SYMBOL vmlinux 0xe213eb2b of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xe21e5784 dst_dev_put +EXPORT_SYMBOL vmlinux 0xe2274a1c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xe228c666 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe25ae898 page_symlink +EXPORT_SYMBOL vmlinux 0xe266f098 xa_get_mark +EXPORT_SYMBOL vmlinux 0xe26e5a03 security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0xe270338a udp_set_csum +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe28e4207 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0xe2c34374 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xe2c80310 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe2cf4a29 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xe2d467c4 gic_pmr_sync +EXPORT_SYMBOL vmlinux 0xe2d47398 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d90c75 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e951ef __alloc_skb +EXPORT_SYMBOL vmlinux 0xe2eb6dce skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe346f67a __mutex_init +EXPORT_SYMBOL vmlinux 0xe347e9c8 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xe3482046 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0xe3534bcc i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0xe36a7620 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xe36cbd83 kthread_bind +EXPORT_SYMBOL vmlinux 0xe3738154 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xe389e0d5 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xe39879e6 kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0xe39cf4ea bio_endio +EXPORT_SYMBOL vmlinux 0xe3a90dfa radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0xe3ba8af3 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe3c8afd8 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xe3d81f58 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xe3e4fe77 sock_init_data +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe40a7fe0 nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0xe4100429 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xe41d8881 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xe428464e dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe43a2fa1 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0xe43fa92b devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe4437eeb ip6_xmit +EXPORT_SYMBOL vmlinux 0xe4457345 fs_param_is_bool +EXPORT_SYMBOL vmlinux 0xe44c1d68 set_anon_super_fc +EXPORT_SYMBOL vmlinux 0xe45507ce tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xe4598e3c super_setup_bdi +EXPORT_SYMBOL vmlinux 0xe46097fb scsi_register_driver +EXPORT_SYMBOL vmlinux 0xe4610c68 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xe46f97e1 put_disk +EXPORT_SYMBOL vmlinux 0xe490d100 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xe49523c8 nd_btt_version +EXPORT_SYMBOL vmlinux 0xe4a7ea8c pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xe4be0304 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xe4c224ee netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0xe4c3dccd vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4d31a6e watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0xe4d93b5d mmc_free_host +EXPORT_SYMBOL vmlinux 0xe4df0fa4 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0xe4f3fd14 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xe4fb2743 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xe502fea9 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xe51c4380 input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0xe51ddf47 dev_mc_del +EXPORT_SYMBOL vmlinux 0xe51e7218 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52b70c2 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xe534f768 param_set_bint +EXPORT_SYMBOL vmlinux 0xe5371198 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xe54d89d7 md_flush_request +EXPORT_SYMBOL vmlinux 0xe569e045 __skb_pad +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe56e370c truncate_pagecache +EXPORT_SYMBOL vmlinux 0xe5735f6c rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0xe577283d nand_get_set_features_notsupp +EXPORT_SYMBOL vmlinux 0xe57bbeb2 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xe57feefb qcom_scm_ocmem_unlock +EXPORT_SYMBOL vmlinux 0xe5807e62 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe59bfd2d tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0xe59e8877 blk_get_request +EXPORT_SYMBOL vmlinux 0xe5a48d3a inc_node_page_state +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5bf760a bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xe5c0031c dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cbac6b tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xe5ccb179 pci_get_class +EXPORT_SYMBOL vmlinux 0xe5cebdf9 pci_disable_device +EXPORT_SYMBOL vmlinux 0xe5d2a9fe scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xe5d83b19 bdevname +EXPORT_SYMBOL vmlinux 0xe5e7aa1b netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0xe5e8aa73 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe615951a __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe6173cb4 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe624596c sock_no_connect +EXPORT_SYMBOL vmlinux 0xe640ae34 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xe6427569 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xe652dc82 eth_header_cache +EXPORT_SYMBOL vmlinux 0xe673dfd7 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0xe67e2d41 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xe680cb28 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0xe685b8e4 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe69ba08a md_integrity_register +EXPORT_SYMBOL vmlinux 0xe6a14059 irq_set_chip +EXPORT_SYMBOL vmlinux 0xe6c3baf6 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xe6d2c39f cdev_add +EXPORT_SYMBOL vmlinux 0xe6fc8be2 mntput +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe7596b1f devfreq_update_interval +EXPORT_SYMBOL vmlinux 0xe767e7c2 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0xe76ff184 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xe77977d3 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xe78a2d11 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xe78efdc1 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xe7c8413d inc_node_state +EXPORT_SYMBOL vmlinux 0xe7d310b0 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xe7d3ddea __nd_driver_register +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d8cf11 empty_aops +EXPORT_SYMBOL vmlinux 0xe7ead49b backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0xe7f2e3a2 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xe842dc8c dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0xe857538a neigh_for_each +EXPORT_SYMBOL vmlinux 0xe85a876c snd_device_new +EXPORT_SYMBOL vmlinux 0xe86d67a5 put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0xe88acc33 of_get_next_cpu_node +EXPORT_SYMBOL vmlinux 0xe8cd0a2c crc32_le_shift +EXPORT_SYMBOL vmlinux 0xe8d331f0 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xe8d7d8cf passthru_features_check +EXPORT_SYMBOL vmlinux 0xe8ff4539 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9325f03 downgrade_write +EXPORT_SYMBOL vmlinux 0xe9344390 complete_request_key +EXPORT_SYMBOL vmlinux 0xe9415462 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xe9435755 fasync_helper +EXPORT_SYMBOL vmlinux 0xe9520720 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe984380c scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xe99036d8 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xe9963477 inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xe99b7111 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0xe9a1c5ab sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xe9a3264e i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xe9a4f889 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0xe9ab5aa2 phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0xe9b6ddbe find_lock_entry +EXPORT_SYMBOL vmlinux 0xe9be3d1a ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xe9cbf734 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe9d87c60 tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size +EXPORT_SYMBOL vmlinux 0xe9efca83 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0xe9f117ae blkdev_get +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea02880c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xea091902 fsync_bdev +EXPORT_SYMBOL vmlinux 0xea0d60a3 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xea119d1d pcie_print_link_status +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea5ad272 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xea613c2b tty_port_destroy +EXPORT_SYMBOL vmlinux 0xea61e773 ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea749bd1 datagram_poll +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea82ff10 fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0xea8c256e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xea8cc9b1 dma_set_mask +EXPORT_SYMBOL vmlinux 0xea91f879 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xeaa3d6be nobh_write_begin +EXPORT_SYMBOL vmlinux 0xeaabda0e pci_reenable_device +EXPORT_SYMBOL vmlinux 0xeac107a3 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0xeac185e7 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0xeacc32f7 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xead2cf4c __skb_get_hash +EXPORT_SYMBOL vmlinux 0xeadd947a generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xeaeb19f4 dev_uc_init +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeafdef95 dst_destroy +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb04adfb ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xeb2d411d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3848ff kunmap_atomic_high +EXPORT_SYMBOL vmlinux 0xeb3ef8c5 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xeb412560 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb6708df ilookup5 +EXPORT_SYMBOL vmlinux 0xeb7f7703 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0xeb903c1c rproc_boot +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xebae2190 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xebb8ff8e phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xebbef444 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xebd4b2cf snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xebe77577 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xebfa124d pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebffede5 pci_clear_master +EXPORT_SYMBOL vmlinux 0xec107a50 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xec1252ab generic_writepages +EXPORT_SYMBOL vmlinux 0xec27914d mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0xec37a2e8 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xec3807fe padata_free_shell +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5e7617 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xec765e58 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xec7d8b67 kernel_param_lock +EXPORT_SYMBOL vmlinux 0xec85437c mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0xec9b365f blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xeca8832b dev_uc_sync +EXPORT_SYMBOL vmlinux 0xecb9934b eth_mac_addr +EXPORT_SYMBOL vmlinux 0xecc1b54f tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xecd19445 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xecd38206 param_ops_short +EXPORT_SYMBOL vmlinux 0xecda95a8 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0xece2fe8f hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed24538a __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0xed29e98b jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xed33a799 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xed34321e mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xed52b680 genphy_read_status +EXPORT_SYMBOL vmlinux 0xed66c87b pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xed98c8a7 snd_timer_instance_free +EXPORT_SYMBOL vmlinux 0xedad0f6d iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbe0d4b i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc2c0f0 dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0xedd3568e inet_ioctl +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xede456e5 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xedeb59d9 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xee02a44f gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2d8028 dst_init +EXPORT_SYMBOL vmlinux 0xee3e8bc3 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xee43fd9b ___ratelimit +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee922b77 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0xee9bdf66 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xeec12e47 xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0xeec5fb7f netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0xeeed255f sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0xef4cad92 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xef4d4561 inet_protos +EXPORT_SYMBOL vmlinux 0xef50bec8 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xef56d9f4 tcp_prot +EXPORT_SYMBOL vmlinux 0xef628d59 devm_rproc_add +EXPORT_SYMBOL vmlinux 0xef68f1e1 tcf_register_action +EXPORT_SYMBOL vmlinux 0xef7ea6d2 __register_chrdev +EXPORT_SYMBOL vmlinux 0xef8ac53d qcom_scm_restore_sec_cfg +EXPORT_SYMBOL vmlinux 0xef94e12c napi_complete_done +EXPORT_SYMBOL vmlinux 0xef9df60f phy_print_status +EXPORT_SYMBOL vmlinux 0xefb69e26 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0xefb7bccf _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xefc153c9 rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff11e61 vfs_link +EXPORT_SYMBOL vmlinux 0xeff8d1bf jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf0098412 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0xf01528a4 dim_turn +EXPORT_SYMBOL vmlinux 0xf018a9d5 of_get_address +EXPORT_SYMBOL vmlinux 0xf01d8e78 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xf020aa8f phy_attached_print +EXPORT_SYMBOL vmlinux 0xf02a6977 queue_rcu_work +EXPORT_SYMBOL vmlinux 0xf03648d0 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xf03d0201 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xf04dc31c get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0xf069269c md_cluster_ops +EXPORT_SYMBOL vmlinux 0xf06cee2c radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0xf07888ae netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0xf07efde9 start_tty +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf09c19f3 phy_free_interrupt +EXPORT_SYMBOL vmlinux 0xf0a343ed release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf0ad412a scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xf0c39db4 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0xf0dac86d snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0xf0ded4d6 mntget +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef52e8 down +EXPORT_SYMBOL vmlinux 0xf0f27c68 init_pseudo +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf102732a crc16 +EXPORT_SYMBOL vmlinux 0xf108715e dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0xf11dc684 skb_dequeue +EXPORT_SYMBOL vmlinux 0xf122cac7 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xf134a883 skb_dump +EXPORT_SYMBOL vmlinux 0xf142ff1f mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xf15e59fd vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0xf16f2ad7 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0xf191f6f2 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0xf192f25a set_disk_ro +EXPORT_SYMBOL vmlinux 0xf194c20c gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1a7bdab register_quota_format +EXPORT_SYMBOL vmlinux 0xf1a9483b flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0xf1ba8ffd trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xf1c9bf6b netdev_printk +EXPORT_SYMBOL vmlinux 0xf1cbad06 block_write_full_page +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1ff563b tty_devnum +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf224edb5 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xf22b4b26 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xf23176df param_get_uint +EXPORT_SYMBOL vmlinux 0xf236c75e swake_up_one +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2435893 phy_advertise_supported +EXPORT_SYMBOL vmlinux 0xf24d0163 iget_failed +EXPORT_SYMBOL vmlinux 0xf253d348 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0xf25f6bf6 of_translate_address +EXPORT_SYMBOL vmlinux 0xf2705d8b ucc_fast_init +EXPORT_SYMBOL vmlinux 0xf2708daa xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xf27c59b3 put_tty_driver +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf2904fdb set_user_nice +EXPORT_SYMBOL vmlinux 0xf299ee2e snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xf2a6e7aa skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0xf2a98e6e register_sound_mixer +EXPORT_SYMBOL vmlinux 0xf2ad80d9 snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf3010fed con_is_bound +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf313d758 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xf314acdc mr_dump +EXPORT_SYMBOL vmlinux 0xf32237f8 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xf327ea73 __sock_create +EXPORT_SYMBOL vmlinux 0xf32f36f1 vm_node_stat +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf348ebf8 nonseekable_open +EXPORT_SYMBOL vmlinux 0xf348ff41 bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf35384d6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3711801 genl_notify +EXPORT_SYMBOL vmlinux 0xf386d7ee dquot_destroy +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39e441c ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf3a11c35 xa_find_after +EXPORT_SYMBOL vmlinux 0xf3a996d5 register_sound_special +EXPORT_SYMBOL vmlinux 0xf3aeff08 km_query +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3bdd509 phy_find_first +EXPORT_SYMBOL vmlinux 0xf3cdeaf4 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fbc0a9 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xf443a15f dev_uc_flush +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf45ab093 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xf46209a6 do_SAK +EXPORT_SYMBOL vmlinux 0xf469bf1e dma_find_channel +EXPORT_SYMBOL vmlinux 0xf46ba87e blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48b7147 pci_enable_msi +EXPORT_SYMBOL vmlinux 0xf497e0d1 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xf4a038d2 get_tz_trend +EXPORT_SYMBOL vmlinux 0xf4a04498 nmi_panic +EXPORT_SYMBOL vmlinux 0xf4aefb46 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xf4af07f3 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xf4b575fd redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xf4b7dcc1 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0xf4ba246e ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xf4baa334 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xf4bcf3cd tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cbc24b security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0xf4cbffc3 ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0xf4cfc04c audit_log_start +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf51d39e8 __tcf_idr_release +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf554585e dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xf554d0f4 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xf55c0fc2 __post_watch_notification +EXPORT_SYMBOL vmlinux 0xf56127a2 mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf56f48af xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xf5843458 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xf5868d8f kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xf588cf92 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf596a9b3 make_kuid +EXPORT_SYMBOL vmlinux 0xf5995e4e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xf5a9557e generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xf5a95e62 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0xf5b3eeb8 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf5b666ef __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xf5bc44eb neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xf5bce806 simple_fill_super +EXPORT_SYMBOL vmlinux 0xf5db30ae gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5fb07f8 pci_read_config_dword +EXPORT_SYMBOL vmlinux 0xf60ba26b simple_map_init +EXPORT_SYMBOL vmlinux 0xf62c39fe ucc_slow_graceful_stop_tx +EXPORT_SYMBOL vmlinux 0xf631149a pci_choose_state +EXPORT_SYMBOL vmlinux 0xf632596d kfree_skb_list +EXPORT_SYMBOL vmlinux 0xf6371951 rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0xf6399eae of_platform_device_create +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf64bf255 wait_for_completion +EXPORT_SYMBOL vmlinux 0xf652d359 __wake_up_bit +EXPORT_SYMBOL vmlinux 0xf6548b23 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xf66182ea address_space_init_once +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6978055 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0xf6a841a8 snd_timer_pause +EXPORT_SYMBOL vmlinux 0xf6b8fad4 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xf6d23e0b inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xf6d7a596 setup_new_exec +EXPORT_SYMBOL vmlinux 0xf6e4df71 on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f661f7 inet_shutdown +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fdcb2d configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0xf705fa49 gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf71b42f4 md_done_sync +EXPORT_SYMBOL vmlinux 0xf72d460c kill_pgrp +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf746710e security_task_getsecid +EXPORT_SYMBOL vmlinux 0xf7474ab3 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xf7572b19 dma_supported +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76843b5 qcom_scm_pas_supported +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf786f0a8 register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0xf7a04562 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xf7ab3af4 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf7c79fce dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0xf7e5c7c3 devfreq_update_status +EXPORT_SYMBOL vmlinux 0xf7eb0bc3 param_get_byte +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8174f56 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xf827605f dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf838fd97 dim_park_on_top +EXPORT_SYMBOL vmlinux 0xf83b3429 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xf86f27cd idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf88a2d28 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xf8981644 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0xf8a3a777 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xf8adc586 dget_parent +EXPORT_SYMBOL vmlinux 0xf8c8c699 __mdiobus_write +EXPORT_SYMBOL vmlinux 0xf8e4efea generic_make_request +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf8fbfdeb dev_uc_del +EXPORT_SYMBOL vmlinux 0xf90a0107 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf912f908 fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf91a4c09 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf922bf5b open_with_fake_path +EXPORT_SYMBOL vmlinux 0xf93aae46 __arm_smccc_smc +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf952c505 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xf96b53fd bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf983ba9f devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf9846ed0 vme_init_bridge +EXPORT_SYMBOL vmlinux 0xf9a36b47 down_interruptible +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ab4afd bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf9c7392a kern_path_create +EXPORT_SYMBOL vmlinux 0xf9caa41b udp_skb_destructor +EXPORT_SYMBOL vmlinux 0xf9d48770 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0xf9d720ca timestamp_truncate +EXPORT_SYMBOL vmlinux 0xf9dc2be5 iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0xf9e4aabc xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf9e9fc1b vga_client_register +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xf9ff11b8 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xfa021f90 ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xfa1d9f9d inode_set_flags +EXPORT_SYMBOL vmlinux 0xfa217765 blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0xfa282782 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0xfa37bdb3 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5cf8c0 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xfa63e265 phy_stop +EXPORT_SYMBOL vmlinux 0xfa64df88 cont_write_begin +EXPORT_SYMBOL vmlinux 0xfa7ef5cd fb_class +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa9899be seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xfa9bd7c5 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xfa9fe6a6 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xfaa4dd37 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xfab0356d scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfab08c2d __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xfab291f9 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad31d7c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xfafc6dce delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xfb1ab0d2 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xfb1d7438 down_read +EXPORT_SYMBOL vmlinux 0xfb28bdcc dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xfb336634 mempool_destroy +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb4aa5b3 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb751321 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfba67c62 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb4880d __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xfbbe0379 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc9e7fb rproc_get_by_child +EXPORT_SYMBOL vmlinux 0xfbcb5c24 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xfbceef23 read_cache_page +EXPORT_SYMBOL vmlinux 0xfbdb1ffe __vfs_getxattr +EXPORT_SYMBOL vmlinux 0xfbdfd3f1 ioremap_wc +EXPORT_SYMBOL vmlinux 0xfbfe0e86 ucc_fast_free +EXPORT_SYMBOL vmlinux 0xfbff6949 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xfc06ff92 d_rehash +EXPORT_SYMBOL vmlinux 0xfc199ad3 tcp_check_req +EXPORT_SYMBOL vmlinux 0xfc1f5414 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xfc347171 register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3f3589 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfc4c8587 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0xfc52abc7 qcom_scm_pas_shutdown +EXPORT_SYMBOL vmlinux 0xfc5adb87 mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0xfc601514 page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0xfc610c96 devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc7b611e md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xfc7e0b3f vlan_for_each +EXPORT_SYMBOL vmlinux 0xfcb7287d ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xfcba748a qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0xfcbd5ade netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0xfcca951c seq_open_private +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcde7ef0 snd_timer_stop +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfd04ab51 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xfd0c0a49 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0xfd115de1 pci_find_capability +EXPORT_SYMBOL vmlinux 0xfd1c5d27 follow_down +EXPORT_SYMBOL vmlinux 0xfd23e913 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xfd258501 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd3f7e22 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0xfd48dd04 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0xfd50864b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xfd5f9240 pcim_iomap +EXPORT_SYMBOL vmlinux 0xfd70d1bf snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xfd7c1b2a tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfd8e85bd tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xfda84390 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb8c92d __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdcfa4db gro_cells_init +EXPORT_SYMBOL vmlinux 0xfdd46d20 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xfde6fba4 bio_free_pages +EXPORT_SYMBOL vmlinux 0xfdf44c54 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xfdf4cff0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xfdfb762e mdiobus_free +EXPORT_SYMBOL vmlinux 0xfdff94e0 ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0xfdff94e3 generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0xfe000180 param_set_copystring +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe054e9a jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xfe11b2b2 from_kuid +EXPORT_SYMBOL vmlinux 0xfe171764 ioremap_page +EXPORT_SYMBOL vmlinux 0xfe20025b nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xfe3cbc1c input_set_abs_params +EXPORT_SYMBOL vmlinux 0xfe3e419a put_ipc_ns +EXPORT_SYMBOL vmlinux 0xfe41829c xa_store_range +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe563224 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe60d9ec wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfe67c4f1 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xfe7c7dd3 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xfe832ac3 ll_rw_block +EXPORT_SYMBOL vmlinux 0xfe868f0e cpu_user +EXPORT_SYMBOL vmlinux 0xfe90c4a6 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xfe98529e init_task +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfedb731b write_one_page +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee30860 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff02a41b of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xff112606 tcf_block_put +EXPORT_SYMBOL vmlinux 0xff1de32e flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff1ead36 vme_register_driver +EXPORT_SYMBOL vmlinux 0xff5b7cca ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xff5e7aba lookup_bdev +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff73be30 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xff744319 scmd_printk +EXPORT_SYMBOL vmlinux 0xff8c2e5a radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xff95ae0e phy_read_paged +EXPORT_SYMBOL vmlinux 0xff9610ee qcom_scm_assign_mem +EXPORT_SYMBOL vmlinux 0xff9846f6 netif_device_attach +EXPORT_SYMBOL vmlinux 0xff98a454 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xff99161a nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xff996450 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xff9b6aad path_is_under +EXPORT_SYMBOL vmlinux 0xffb1e7ff security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd21205 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xffdcad50 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xffe82224 mmc_sw_reset +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0xfff38c3f proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xfff9db26 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xfffc6627 netpoll_setup +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x2e7c0170 sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x8d081cbf sha1_update_arm +EXPORT_SYMBOL_GPL crypto/af_alg 0x110a6210 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x322f8cbf af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x363e7688 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0x4e3591ab af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x5f91a454 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x780f0a8c af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0x7b5b86ba af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x861dc199 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x87e84d48 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8b03da2b af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x8f7615b3 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x943a1183 af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0xa0be7939 af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xa23cbaf4 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xab287f93 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb71cd4d0 af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0xd586f7d1 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xf55e8810 af_alg_release +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0xad689c30 asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x65512453 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x023bc1d2 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa961cd03 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x590dcf58 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x976a5a95 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x4e266a62 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x51a54a60 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xaddb534b __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd49901fa async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x397ace29 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x520ecc8f async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x4241b039 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x471299e6 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x0269bab5 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x12157f30 cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x18dbd632 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x1b7ee567 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x3079e86a cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x48c8cf5a cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x719a2a36 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x723e6a2e cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x73f076bd cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8c97d48b cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa42dffc0 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa6bb19c5 cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xb8881253 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xf9351a3e cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x17e0ecc7 crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2d246b85 crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x3a707ab4 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x3d7627f1 crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x436a8eab crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x43bc7803 crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x6bdd1d94 crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x89f1a957 crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x906d93e4 crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc354f9fd crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc5184b56 crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xd072da9f crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xfe5a1529 crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x252b0bac simd_register_skciphers_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x345077d7 simd_unregister_skciphers +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x504cb053 simd_aead_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x66983e96 simd_skcipher_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x851c747c simd_aead_create +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x88638552 simd_skcipher_create_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0x9cbc7554 simd_register_aeads_compat +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xbfd26f15 simd_aead_free +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xeda0f9db simd_unregister_aeads +EXPORT_SYMBOL_GPL crypto/crypto_simd 0xefe73979 simd_skcipher_free +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a8cc902 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x015cdca7 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x95349250 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xfb29a406 crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe21244d0 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6b243323 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x78041c7d sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0x04749140 __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x4b5fac83 __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x790fc5b1 __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x00ce0ff1 __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x1a9bd634 __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x60de5bce __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0xccfb6e5e __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x07e83ea2 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x08213d50 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x4ab5e27a __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xdc1163ab __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x71e6c667 __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0xa7db0a4f __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x071627c1 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cdc9d3b __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x16ed5d6e bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x24ddad76 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x356c965d bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x40b398a3 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x440964c3 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a8024d9 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x764db90d bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x960973f7 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa4cdfe85 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaabd14c1 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaad88357 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb07d637a bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb46d5bb1 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc09f81f1 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc9cdac46 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcc1c5f40 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xde4a9e9e bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe01b5f46 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe79c8b6e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeefd135a bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6265218 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfd15c584 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x030aa961 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0a54c0d6 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x76e39d9f btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7d3f7e4f btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8dc2b2c0 btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x952a50f6 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x9d2b5582 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa94edddf btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x27a95fca btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x338ba790 btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3dd2aaa0 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4939cd5d btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x4e72b41e btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x53d35070 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x5cd394f9 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x639ba0bb btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8e349579 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x924b5f16 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9b1409de btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa9e01402 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xae344a65 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb130307c btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb5f57d51 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe40a276b btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xec9f7005 btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xf062fdd3 btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x19b228e8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1c361980 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1e8aee43 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2d6529d2 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4dfcc232 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb5a712b9 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xce34f831 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd37841c0 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdcb59647 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdd0b939f btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdee8c7f7 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x1c53137c qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xafae417c qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xb116483f qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xf36444a6 qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xfcf708b2 qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x138b1dd9 btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x4618ee01 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x9444ea99 btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x98cfc2c4 btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xed85a409 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x572bbc13 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x66fedecb h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x7dfc0685 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x8a2f4c51 hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x114a7d15 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x138be370 mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x1d2f4f2b mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x22326ea6 mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x2c576945 mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x3d337c1b mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5140fa34 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x54808697 mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5c79053a mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x5eb41781 mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6f83e41c mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x79077898 mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7be5d1e7 mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x7e33440b mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x872f109c mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x99b80cfa mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x9d50ceab mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xb0aa6661 mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfa9cfd9b mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfb5ed98c mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfbd5b13c mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xfca6ae0c __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x13b4ce9c moxtet_device_write +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x1c6c225e moxtet_device_written +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x89e81e8d __moxtet_register_driver +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0xa24cc73b moxtet_device_read +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0xc37ae3f3 meson_clk_triphase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/clk-phase 0xeb820ca2 meson_clk_phase_ops +EXPORT_SYMBOL_GPL drivers/clk/meson/sclk-div 0xb1aa8b06 meson_sclk_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0000139e clk_alpha_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x08f0cc30 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d10c3c4 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0d678ab9 qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e5f8a53 clk_pll_sr2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0e98da3d clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x17d44071 clk_alpha_pll_hwfsm_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x1987883d clk_alpha_pll_fixed_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x21191853 qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x272f3204 clk_alpha_pll_fixed_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a9c7452 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2b0d957d clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2cae96b3 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x30bbf987 clk_rcg2_shared_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x310b6341 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3747af55 clk_rcg_bypass2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x395868a1 qcom_find_freq_floor +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3b15a709 clk_alpha_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3dfc2dc5 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x405d394a clk_alpha_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x418e9cfd clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4b0ed6da clk_ops_hfpll +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5111f2ad clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x520df3b7 clk_rcg_esc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x57172323 clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x57d26870 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5a468e93 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5e6abb22 mux_div_set_src_div +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x615dbb77 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x631939a9 clk_branch2_aon_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x63ee9aa4 clk_alpha_pll_fixed_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x66922845 clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x68199825 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6af41b8b qcom_pll_set_fsm_mode +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x6c069db2 qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7019378d clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x766e9f87 clk_regmap_div_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x787e8234 qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x78b81ea0 clk_rcg2_floor_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7e66fd9e clk_regmap_mux_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x8b55eac4 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x91c41c9f clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x97488818 clk_rcg_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9c8854a1 clk_alpha_pll_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9d909edd clk_gfx3d_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9dc41abb krait_div2_clk_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9e33f365 clk_trion_pll_postdiv_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x9f241baa clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xa6f08f9a clk_trion_fixed_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xaa403ee8 clk_alpha_pll_huayra_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xac4aa76f qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xadc2751b clk_alpha_pll_postdiv_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xba961aa7 clk_dp_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xbd67274e qcom_cc_register_board_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc037091a krait_mux_clk_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc150d434 clk_alpha_pll_postdiv_ro_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc5bdfa11 clk_byte2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc6a05db2 clk_fabia_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xce340fb8 clk_alpha_pll_regs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xcf422970 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd3135b41 qcom_cc_register_rcg_dfs +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd7ab6782 clk_alpha_pll_postdiv_lucid_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd8d92954 clk_lucid_pll_configure +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xdfe5bcb1 qcom_cc_probe_by_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe302111d qcom_cc_register_sleep_clk +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe6e14638 clk_alpha_pll_fabia_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe816a036 clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x227894bc counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x25072124 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x31846fa2 devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x71c5ce8d counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x824d9c82 counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x8ec534db counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x94383453 devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xa99c4cac counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xb0874da0 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xb4d131ec counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xb889e1b5 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xe67f5106 counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0xfb1ed2bb counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/crypto/omap-crypto 0x5c2673e4 omap_crypto_cleanup +EXPORT_SYMBOL_GPL drivers/crypto/omap-crypto 0xd9009a51 omap_crypto_align_sg +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0xc952d06f dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x5c0971cf dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0xfcf5b5fa dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x347d415d idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x5489008f do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x54896492 do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x893e2a4d dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x92c2c4df dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xec217374 idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xeff396d1 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x03f2afe9 fsl_edma_slave_config +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x145daac9 fsl_edma_setup_regs +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x3bd90df6 fsl_edma_disable_request +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x48f43627 fsl_edma_free_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x5f461662 fsl_edma_tx_status +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x637d9ccb fsl_edma_prep_slave_sg +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x7df3cf58 fsl_edma_alloc_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x8005a331 fsl_edma_cleanup_vchan +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x882f8772 fsl_edma_chan_mux +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xb78da44e fsl_edma_prep_dma_cyclic +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xbbdc15ab fsl_edma_xfer_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xc21a448a fsl_edma_terminate_all +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xc5b9fc0e fsl_edma_resume +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xcc16f176 fsl_edma_issue_pending +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xccab3665 fsl_edma_free_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xff4c6d87 fsl_edma_pause +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0xb07d6e2a hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0xfac755e7 hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/firmware/arm_scpi 0xe53b48ee get_scpi_ops +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x99f88f5a alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xe2ccfcb5 alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x10af98d4 dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x29ddc944 dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x5416bdd5 dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x55e5d820 dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x602a81ba dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x60788b9a dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x77869a47 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x77e7895a dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x7b3d8836 dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x95f12298 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x9c5e3e07 dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x9eb60291 dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa1d81a93 dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xbc63ba48 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xc063cdfb dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xcfcda864 dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xd7bcae42 dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xec19934a dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf9100c69 dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x07d2f2cf fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x12a1acff of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2d29c024 of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4c652714 fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x653aeb52 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x81043018 fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x906236be fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x942388d7 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x9cc9a890 fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x9ee84554 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xa1a0ca85 devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb9f45dd3 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2fcba202 fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2ff5f77b fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x5685a725 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x68f4be3c fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6d8c2858 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6de674d8 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x7a0b38c2 fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x89d166a8 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xa029ebd1 fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xb57e0955 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xcc4114b4 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe776e68e fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf0cb0e61 fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x12dd357e fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x1c8b08b5 devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x6d7d8428 fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x6f0c901c fpga_region_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xa0d68e69 fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xcbbfd57f fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xd7b7ae79 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x0fee74f4 fsi_device_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x1942d718 fsi_master_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3a93847e fsi_slave_claim_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x50ba72aa fsi_driver_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5621c9c9 fsi_get_new_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a57d574 fsi_free_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x60a97912 fsi_slave_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x99a4490c fsi_bus_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x9e7dc3e4 fsi_master_rescan +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xa4962831 fsi_device_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xb39b7c76 fsi_cdev_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xc79dc49a fsi_master_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xcbc1c7af fsi_driver_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xce22aee2 fsi_slave_release_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xe4ac7aa2 fsi_slave_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-occ 0xfc342fe1 fsi_occ_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x85efc1a9 sbefifo_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x993d7188 sbefifo_parse_status +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x2473f68b gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x3b6e3312 gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x4a9518c0 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x968dd9e4 gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xf3938388 gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x23ef3517 gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x48eb89f6 gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x8b551d06 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x945893a7 gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xab5e38c3 gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0x30bcde86 aspeed_gpio_copro_release_gpio +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0x5dcbe46c aspeed_gpio_copro_set_ops +EXPORT_SYMBOL_GPL drivers/gpio/gpio-aspeed 0xe97cadc1 aspeed_gpio_copro_grab_gpio +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x342e4ea4 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd87136e6 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x039e84ff analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x12e73372 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x1dab8116 analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x2fcb7582 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x44398a2f analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x8ff58c66 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x95fda7e6 analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe4978c9d anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe5a39999 analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x09340e05 dw_hdmi_set_channel_count +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x094f6fc5 dw_hdmi_phy_i2c_set_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x1461e227 dw_hdmi_set_channel_status +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x157e02b6 dw_hdmi_phy_reset +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2d1c0e80 dw_hdmi_setup_rx_sense +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2fac9436 dw_hdmi_set_channel_allocation +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x316212a8 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x42926f4a dw_hdmi_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x4a9b174f dw_hdmi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x6712b5a7 dw_hdmi_phy_gen2_txpwron +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x7d8a3aee dw_hdmi_phy_i2c_write +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x822671f9 dw_hdmi_set_high_tmds_clock_ratio +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dba346a dw_hdmi_set_plugged_cb +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9b44a60b dw_hdmi_phy_gen2_pddq +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd30fc9a2 dw_hdmi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd6968220 dw_hdmi_phy_setup_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xdafa1790 dw_hdmi_phy_read_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xe6f00f82 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xf5922009 dw_hdmi_phy_update_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x0d667204 dw_mipi_dsi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x41361ae4 dw_mipi_dsi_set_slave +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x42ac3b2e dw_mipi_dsi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x76138d0c dw_mipi_dsi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi 0x8f096008 dw_mipi_dsi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x01b30024 drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x089f1ea6 drm_of_lvds_get_dual_link_pixel_order +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2b48f3d2 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2f0bc21b drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3007e2fe drm_of_component_match_add +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x40e49a82 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x40f55c2f drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x41740567 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x439ee9f7 drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4baf5b34 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x53e51f9c drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x55e04cc0 drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5710de05 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5d2ca929 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5d64d295 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6050a8ad drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x77f42476 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8c35c05d drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8d5073cc drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x922c12e9 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa5198970 drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xafaccaf7 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb0bfbffb drm_of_encoder_active_endpoint +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb5d48a3c drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbcf8c65e drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc32b7174 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc556a69f drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc7ef701e drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc9f7ddc1 drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd38268e3 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xde6cd4c1 drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xeb2b0341 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xec8a5974 drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf40f8873 drm_of_find_panel_or_bridge +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf5cad8c1 drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf81d71af drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xff8de3dd drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x04ce94cb drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x0af4c65e drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x2fe65871 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x374c7f9d drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x7ceca4a9 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x83ae2f8a drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xa8c23823 drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc5f9c41b drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcdf9f7c2 drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xced009f7 drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xdd18f5a3 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe1a32a93 drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x0f087f0f ipu_planes_assign_pre +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x29ef026d ipu_plane_disable_deferred +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x36d1ef33 imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xe2206125 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/mcde/mcde_drm 0x2a155c30 mcde_display_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x2c73cfcf meson_venc_hdmi_venc_repeat +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0x5681254b meson_venc_hdmi_mode_set +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xab5bee2f meson_venc_hdmi_supported_vic +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xdea0ab5c meson_vclk_dmt_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xeacd01e6 meson_vclk_vic_supported_freq +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xec6914f6 meson_vclk_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/meson/meson-drm 0xfd34888c meson_venc_hdmi_supported_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/pl111/pl111_drm 0xbed03519 pl111_versatile_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x23380939 rcar_cmm_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0x6f6e306e rcar_cmm_setup +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xc425d345 rcar_cmm_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_cmm 0xe782e1e0 rcar_cmm_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x0080aaf5 rcar_lvds_clk_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0x94d60aa6 rcar_lvds_clk_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/rcar-du/rcar_lvds 0xb3536470 rcar_lvds_dual_link +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xd21660e6 vop_component_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xed8a5d68 rockchip_rgb_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/rockchip/rockchipdrm 0xfead7585 rockchip_rgb_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x28612ef9 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4239b169 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x69425652 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x050f0d7b ipu_di_adjust_videomode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x07036df2 ipu_ic_calc_csc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0e42bd95 ipu_csi_set_dest +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0e792e13 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x100fcb01 ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x10239e1b ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x118160e1 ipu_ic_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x12d63077 ipu_image_convert_prepare +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x13952dfe ipu_dmfc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x16c7df08 ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x172d4c2b ipu_cpmem_get_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x18730251 ipu_rot_mode_to_degrees +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x189ebe66 ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x18aa0dcd ipu_image_convert_abort +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1e913d9f ipu_csi_get_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x20d224ff ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x20e09f6f ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2424c9a6 ipu_csi_is_interlaced +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x271d0049 ipu_fsu_link +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x27eec2de ipu_image_convert +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2cf7ed72 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2d4e5577 ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2e825a67 ipu_smfc_set_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f3264ee ipu_prg_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x2f92d651 ipu_ic_task_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3020d65c ipu_prg_max_active_channels +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3166aec7 ipu_dmfc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x32ba810b ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x331a867a ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x34b6550c ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x35f71032 ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3c467922 ipu_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3d8f18f6 __ipu_ic_calc_csc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3e86ea72 ipu_di_get_num +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x418a282f ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x42d3d500 ipu_image_convert_unprepare +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4325d425 ipu_idmac_link +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x485e5373 ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x498b4c7b ipu_image_convert_enum_format +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4d2a7876 ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4f07c77c ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x51475e87 ipu_dmfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x527f3b94 ipu_smfc_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x53de277c ipu_di_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x55716d7d ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x55767280 ipu_vdi_set_motion +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x580d2f81 ipu_vdi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5b15aea8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5b66c3a8 ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5cae270a ipu_vdi_unsetup +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5ed7d3a2 ipu_vdi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5efe54cf ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x60bdf2ec ipu_csi_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x623722e2 ipu_ic_task_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x63593ec7 ipu_csi_init_interface +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6590a64b ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x66e729d2 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x72b47741 ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x734c6a9b ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x74b69821 ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x770f412d ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x77387d7e ipu_prg_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x77effe13 ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7935ba21 ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7fb84c89 ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x818d6f12 ipu_cpmem_skip_odd_chroma_rows +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8497c7d4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x84b72135 ipu_prg_channel_configure_pending +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x84ce9427 ipu_dc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x87d652ad ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x886c35aa ipu_smfc_map_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x89098eba ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x899d1b10 ipu_prg_channel_configure +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8a9458d2 ipu_image_convert_verify +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8eb22643 ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8ece82bd ipu_pixelformat_is_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8f86efa7 ipu_prg_present +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x906d44d0 ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x91ce1a04 ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x91e3070b ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x92595703 ipu_cpmem_zero +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x94dda4e1 ipu_image_convert_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x97f08d2f ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f38e177 ipu_dp_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f7838dc ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa0ed8bd8 ipu_dc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa13b70a5 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa1e35df1 ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa4b0cabd ipu_dc_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa516e861 ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa60b144b ipu_csi_set_window +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa6daa1cb ipu_image_convert_queue +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa77bf9bb ipu_srm_dp_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa7f8d25e ipu_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa8adc101 ipu_pixelformat_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xabb76ec1 ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xac55b01a ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb1ee1f33 ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb30a977f ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xba2a4164 ipu_cpmem_set_uv_offset +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xba458b8f ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xbf983ba6 ipu_vdi_set_field_order +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc065feff ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc4af2e81 ipu_dmfc_config_wait4eot +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc4b15642 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc603fac7 ipu_image_convert_adjust +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc6675aa9 ipu_csi_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc677177d ipu_smfc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc9ae2977 ipu_fsu_unlink +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xca48c8eb ipu_prg_channel_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcbea3eec ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd67a578 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7fbaa4 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcdb9982c ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xce10db35 ipu_stride_to_bytes +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd6c155a8 ipu_dc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd8f285f0 ipu_vdi_setup +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xddaf7274 ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdeaac188 ipu_idmac_unlink +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe300a959 ipu_dp_setup_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe6243c52 ipu_dc_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xe94c0fe8 ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xeb9dd385 ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xed66febf ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xeea12b31 ipu_vdi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1abac7e ipu_csi_set_downsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf541df2d ipu_vdi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xfaee9b74 ipu_prg_format_supported +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0491cc29 greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x12678914 gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1bc557f9 gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1be03444 gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2386957a gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x29f7da7f __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2d4cd9b7 gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2dd6ee4c gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x2e87f79c gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3668b935 gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x38b89571 __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3d0f3f95 greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x422aba3d gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4affade0 greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x50517685 __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x554d1ff5 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x55a5dfaa gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5952e031 gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x65c8e343 greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x703ea2a0 gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x71558a3e gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7234cd8f gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x75c9730a __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x764aa392 gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x79251187 gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7f8b7457 gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x816d01e1 gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8b0c6307 __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa9cba84d gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xab167917 gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb3faabfe gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb50dcf7c gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb6d1c0ea gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xba3672fb gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc41b2d26 gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc6e820bd gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcb550b9a gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xd6763434 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xdc638493 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf46c4e18 gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xf7420506 gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xfcd391a8 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xff420bd1 gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04ed0eaa hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08343e1b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b0275bd hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0eeffd81 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x161f8602 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x18544001 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0x196b1f00 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x22c1e02b hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0x348e80a4 hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x355366f4 hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0x359375bf hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x42538c59 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4a812896 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d7eb30c hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4df361b8 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5576b2bb hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x55afec74 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6153b6eb hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6207c225 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x66637e96 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x72dcbc73 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x77aa5ff8 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7d1130e1 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x860b34a9 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b2d4533 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b9fac7f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8df8dcbc hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x98b7af48 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x98de9a63 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c1c1a27 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9eb39a6c hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa38fd81c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa54945f5 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc444f185 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca9de2dd hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xce206833 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xce3a0e53 hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcee322c7 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0938bda hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2a015e9 hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda05dabf hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4de26a8 hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf4a63a7b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf6ef30fa hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x18db56c4 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x003e1a40 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x28d66dd3 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x61fcbee1 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7d862b4c roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdc0bad60 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xe0371e59 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0d31fc77 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x46dcfbb0 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x750cab8e sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x79d9fe70 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x839e465b sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb8b092c4 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xba1cb7fc sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdd7593da sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf833fe70 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0x75ac5014 i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0xb092ffcc uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcb72e1c2 usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcf07ffbb hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0525f19a hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x243b630e hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ac24057 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x60789775 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6b48b81c hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x72a08952 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8d26cc76 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9b72b4cf hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xab0f6df0 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb067a865 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcdb382b1 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdc4bc3c5 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe2dfff7a hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe847e37a hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xea847d15 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfe09cdc7 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfe9e7cb6 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xff43aea7 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x2ba31840 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x5737ca80 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x88ce993e adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x0206e797 ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x08153b71 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2cad6cb7 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3e0f008c pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x45c1523b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4e061aee pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x52df7b72 pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x725286d5 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x822b41a4 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x922f333d pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x98eee8ad pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9fe6a28e pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa1a01521 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb9556138 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbaabc70f pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbe75f9a4 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd5fd8c4e pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe1443f3b pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf60e0b15 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfec61a13 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x10f7c92e intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x20b89f11 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x4c34b526 intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x527d013b intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x8e9f8cf7 intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x8f9315f2 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xcbd61dd9 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdb7db5a7 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xfe70e551 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x19bfd36b intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x5e0513ac intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x9e12d5e0 intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x02f91e00 stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x0a381a1c stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x194880af stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x375a415f to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3ce46ae9 stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x540e47f8 stm_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xbfbd6e13 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xc04b9dc1 stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd9338d9b stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x71f3cd94 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x9d343b40 i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xbf6a7cb8 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xc369aff8 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x72d21fd2 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x9cef18b7 i2c_register_spd +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x0a54f033 i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x16654e4a i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2765efa9 i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2c043c38 i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x315bc4dc i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x576eee9f i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x57fc5629 i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6012fe7c i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x61a57b8d i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x68d01f1f i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x83d95a9f i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x88420132 i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8ad4b111 i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9206fa53 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9cea333a i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa74a659a i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb2fb2c4a i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb6d60f93 dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xbbe039d9 i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xc5fd8d8e i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd16ae543 i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd5036bbf i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe5ee5d01 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xeae6b640 i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf91792a1 i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x692445fb adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0xf68e67bd adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x47dfcbb4 bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5e7019a2 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x7ce60e75 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0xa17d4eed bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x24a22176 mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x2bc464a8 mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xcd705420 mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xf2e02cd6 ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0xf9720a35 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x4e2771d8 ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x5ae86d40 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1d5e4638 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x29ca2681 ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x629f67f5 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6dca9d20 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc0100d3f ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc4728e35 ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xce6eecf7 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd20dcbdd ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd8d79955 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdb406df0 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xed095173 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x3e62f259 devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0xa82594dd adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb0009008 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb2a006e6 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xb2c87bdb iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xfff2647d iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x021abd00 iio_dma_buffer_block_list_abort +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x169b8502 iio_dma_buffer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x2dd89407 iio_dma_buffer_set_bytes_per_datum +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x53a4817d iio_dma_buffer_block_done +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x65f6297c iio_dma_buffer_request_update +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x7e4862cb iio_dma_buffer_set_length +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x87d3e8bb iio_dma_buffer_data_available +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xa0c737ce iio_dma_buffer_read +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xa560da31 iio_dma_buffer_init +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xd6898749 iio_dma_buffer_release +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xeb89c098 iio_dma_buffer_exit +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xfb0f1da2 iio_dma_buffer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0xaa61fa59 iio_dmaengine_buffer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0xf4f3b470 devm_iio_dmaengine_buffer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x08d2b4ff devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x5977e36a iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x68dfe163 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x476aecb8 bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x19344ce3 cros_ec_sensors_read_lpc +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x231de574 cros_ec_sensors_ext_info +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x621649fc cros_ec_sensor_fifo_attributes +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x6562788a cros_ec_motion_send_host_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x7f85d318 cros_ec_sensors_core_init +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x8bad12ec cros_ec_sensors_read_cmd +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9971dac4 cros_ec_sensors_capture +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0x9b2afb5c cros_ec_sensors_core_read +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xb167c9ee cros_ec_sensors_core_write +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xe9dc339b cros_ec_sensors_push_data +EXPORT_SYMBOL_GPL drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core 0xf5966ac2 cros_ec_sensors_core_read_avail +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x49c09e37 ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0xe05b79ad ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x3bb18cda ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0xc0fb662a ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x13ae8f98 bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x26a85acc bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x89c315ab bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x1669075c fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x74e2d7ae fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0xe1cfd344 fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1e0268c3 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2b8fc234 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2f445dda adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3da72b11 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x45c19fcd __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4ea12f7b __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x56502267 devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5d5b173f __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x88ecfc5e adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x954f6a8e devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc06e9906 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd205b22e __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf3b462b5 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf7d0ac92 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf8be9721 __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0x0d8b555f bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0xab3fd5ec fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x5a313dd0 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0xebc9a2b2 inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x07f3b1c9 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0af74ac4 iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1146180e iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1d64602e iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e200d13 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1e6fb40f iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20ce344a iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2edcbeee iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x33d87096 iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3b50b39c iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x403aa7b3 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5e20e671 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ecd5639 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x62cd4468 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6947da36 iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x69aaf0c4 iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a629ba6 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d07b8f8 iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x71d19d30 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x74304ea1 __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7bdabf5d iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x820947b5 iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x847b5ba9 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8601ebaf iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92146f8f iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x971f37fa iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d5a047b iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e710da1 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa2625717 iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa555eb0f iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb9787b14 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc15dd9b4 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd0b3bd1f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd797bf8a devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdcc0bbd0 iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdf75c940 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4b04b12 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6ecb675 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb60b6ce iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed2a06f4 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf00909a3 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4d3456a iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf7709035 iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xffc65d89 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x01191fa0 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0xdb14fd84 mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x1cb8b50b zpa2326_remove +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x2c11c52b zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x3cc08de9 zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x4b93a6d1 zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xa738e511 zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xe5a4aafa zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x06195bb0 rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x229a5e6e rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x2b0253cd rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x619de31e rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x6ff19369 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xaff63017 rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xaff9ea2e rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb51f9234 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xbf80162f rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xd8d1b2b9 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xec548cfe rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xfca8e09c rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xfdc44e97 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x60869895 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xab9c89fe matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x87eebea8 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x01c3f461 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x0cb8ff31 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x1f3d69b6 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x30302543 rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x3a40fff8 rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x4613c4d8 rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x6a45aee2 rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x7812b1cb rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x7e26097f rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x90f3eb88 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xb6a9d72e __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xb9e844b0 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xd6a1f49f rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x0fd63805 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x496d7e1c cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xda397124 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x686f624a cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xe59061ba cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x1e160fa7 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x630cffbd cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x59e31e2b tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x9f859a5e tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xa8e86578 tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xd3d0f1f0 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x058d457a wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x08f273f8 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x16eeffb8 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x18335820 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3a191fbf wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4af71f3b wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5481992e wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x590878ad wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6d0affdc wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc92745e4 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcf60a5b9 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xedbc4bc5 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0x81e513ad qcom_icc_rpm_smd_available +EXPORT_SYMBOL_GPL drivers/interconnect/qcom/icc-smd-rpm 0xe8dbdc6c qcom_icc_rpm_smd_send +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2ee5a5c4 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3434b719 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x443e5f4b ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5482886b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5740edf7 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x75434671 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc0d7eceb ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xed94ab97 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xff8df990 ipack_device_init +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x83ab9f6d devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x90e31152 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x92a44d45 devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa42018f2 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xb6ae59a2 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcaef0d11 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd14b0d6e led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf93671c2 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x015c0f96 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x07c730b7 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2bef0c5e lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x4c76aff0 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x6bea0f38 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x85872d42 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xa6f3210b lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb24f5efb lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xc48e0e42 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xd6a6fc3c lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xfe13ec25 lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x00af95a1 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x06d94b0a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x157aa73e __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19a50641 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19acd14e __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1e382318 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x24935482 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x28991160 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x29ef0066 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2cd1be34 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x3ae1afd1 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f0216b8 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x56bd5947 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5cb0a24a __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65835607 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x68b2f180 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7baca7fe __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x95286aa1 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9cedcd57 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa60fcee9 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xafae4e81 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb4b03b2e __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7500cb5 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1fd1dbc __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd4cd3c1a __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe278bd6d __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe68d70a9 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee926d8f __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf30b9aa6 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf438022f __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfbd03183 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x020c9c41 dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x04873773 dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1a4fad04 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3a488a02 dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5bbbedf5 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5ea8755a dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6008a3ef dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6c97b575 dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x92497947 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x92db9fc9 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa87b72e3 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb88600fc dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb9879d88 dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdc5ac12f dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdc97cfb5 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe5c5b81f dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf1f9d213 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x1b1b9b93 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x03bb93e0 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0d873cb8 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x408c30a9 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5730f8ae dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5b3dc349 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8f647e48 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x90136207 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc4156947 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xea7fbbe4 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2b0090ac dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x90a545e4 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xba114f6f dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd11ff334 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdd11af95 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf1ab1b6d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x29c25d50 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x46af8087 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55f98e63 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x64976f82 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x8a56150c dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa433adbc dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa7083b63 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb8dbd4e1 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6367ed7 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf3e25192 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf456e224 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x1c5e6d84 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x2c47a9d5 cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x31165cba cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x35cdb70f cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x40d03c9b cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x4682672e cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5a90039c cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5e7d0fe9 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8095f560 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x8a348847 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x985d230e cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa493b086 cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb28ac971 cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb4d437e7 cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb61eaebb cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbdb5e4bc cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xc4b70408 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xd365d7d2 cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xe3b9596d cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf9c118b1 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0460cddb saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0d2a21ab saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x150870eb saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x40410195 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4cc86a70 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x58c1fff6 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5d41b1e0 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7ff08275 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc87e4779 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf566ec26 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1c0e1884 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4acfde12 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5f1b4208 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8e1e1882 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x92402640 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc87816a4 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xea9d385c saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x07152cc8 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x147e8d4f smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1fbc4253 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x27a6e89f smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x299a9810 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74f813fa smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x88f6dcd8 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9e2cdaac sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa0ab78d4 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa7513985 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xba98a51d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xda3cbdfe smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe5c1e148 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe694fd9a smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xec8d22e6 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf07cb4b5 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf8f8fa44 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x07cddf6e vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x0aa6af5e __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x16f67eef __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x317abd2a vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x339ee1fa vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x36d3a516 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x571f48d9 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x5b4834ee vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x688713ce vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6a1c03b6 vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x74e66504 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x75e846c7 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7bd83bde vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7cdede6e vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x7eeeee2e __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x83190105 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x83261f1d vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x850bad5d vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8b76984f vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xabadd835 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb00a14ea vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xbbc76424 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xbd2420e8 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc4b5b5a5 vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xc7dfecd6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd4c14f85 vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd8192224 __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xf1ea49eb vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xf75242b1 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xb3d2bcae vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xb680d839 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0xef6e3b6f vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0x5aa11d49 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0a2d1657 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x0d3ea15d vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x16194e5c vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x1aba2ee8 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x20927eac vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x27ac4fc7 vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x36f7ed38 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x39824bf0 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x446461aa vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x455872f7 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4eb34820 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6627f650 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x66a22751 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x69ecbef3 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6aadb894 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x77494360 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x80a985c2 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x93edd72b vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x96dcbaed vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x993f1968 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xacffe97b vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb1159416 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb212336f vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc6b80197 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc83496de vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd000b885 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xdf07e58d vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe32573b6 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xea14b562 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xf66f00e5 vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xfcdfa81b vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0xa43f68cf vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x69a38d8f dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xbd870310 dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xc696ffee dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xbe28d27e as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xd2893253 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0x9820cec9 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0x5fb4b0f9 mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0xd94d47a7 stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0x52ea9941 stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xf2093c42 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0xd8974c4f aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x2290d9fa smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x02e583ce media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x08ac9b67 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x09804e97 media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0d56ba34 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x10462c8f media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1110566b media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x19b086ab media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1f6575d4 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1fe1a96a __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2260082d __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2d2d4d7b media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x308d4f91 media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x34547905 media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3871dc59 __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x3f71521b media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x49047edc media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x496a8d16 media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x4bcd890e media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x4e389558 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x4eba8525 media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x50d089ac media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x51c2041a media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x535f9c69 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5a61da5e media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5d608075 media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5f3bda58 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5f89256b media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x65cfd190 media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x693c00b0 media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x78faab17 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7febc37d media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8b3ce321 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9670ae2b media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xa0333bd3 __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaa7a308a media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xafb2f283 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xba7e3f3b media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xbad576e5 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xbe20da9b __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xcc8a0b5f media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xccb9656d media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd30bc623 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd40bac79 media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe4594dd9 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe8c558b1 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xff284e21 media_request_put +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xb23d5b1a cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x12dd8b22 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x298d0844 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2cab1ae5 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x444980ce mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x46461428 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5668a4ea mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5728c592 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77301809 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7b395f0d mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8d38ba4a mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9b46b3f5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e60a154 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa1d77192 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xadbd0021 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb197c7d6 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbf7ecb72 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc9f2e4bc mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf95854c3 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe1761f6 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x219ccf7a saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2428d650 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x49ce70d2 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x615fda26 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x628cd43c saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6b2d472a saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7ae57b18 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7eba2c90 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x82895a59 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x844fccb8 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x93b30afa saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x97735223 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9d4e4b12 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb15a92f4 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbc6b982d saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc0af68e0 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe6a37076 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xed3d391f saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf9328351 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x071a38d2 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x46a5f77e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6cf5325f ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x770185cb ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x93db9239 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xaeff5212 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf2031af0 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x5e9bd03d mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x7ad1477e mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x7ae91674 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x8e6eac81 mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xf2a0464b mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x012d21e1 vpu_load_firmware +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x21c1b49d vpu_wdt_reg_handler +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x27605308 vpu_ipi_register +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x3dd19dfe vpu_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x50e188a1 vpu_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x5328fb4b vpu_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0x8f7a72c1 vpu_ipi_send +EXPORT_SYMBOL_GPL drivers/media/platform/mtk-vpu/mtk-vpu 0xf2a776ce vpu_get_plat_device +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x3d858696 rcar_fcp_put +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x4ad5d888 rcar_fcp_enable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x5fe6f6e8 rcar_fcp_disable +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0x9877c29f rcar_fcp_get +EXPORT_SYMBOL_GPL drivers/media/platform/rcar-fcp 0xcfc33728 rcar_fcp_get_device +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x094c099e vsp1_du_atomic_begin +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x1b059e67 vsp1_du_atomic_update +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x3d105611 vsp1_du_init +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x44b0be59 vsp1_du_setup_lif +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0x942994e0 vsp1_du_atomic_flush +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xaaf3b5f7 vsp1_du_unmap_sg +EXPORT_SYMBOL_GPL drivers/media/platform/vsp1/vsp1 0xec886f33 vsp1_du_map_sg +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x011de74d xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3cde9d63 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x60e11b5e xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6164abb8 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb67940fb xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb69fb10d xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbd4668b8 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe08e6063 xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe839643f xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xf479685c xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x4a1593c9 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x6a091077 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x1651a1f6 si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xa66dab5e si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xaf18c51d si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xbf62b5cd si470x_stop +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xdcca4c90 si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x048ad3fe rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x167efcf8 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x22f9cd9a rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x24d074ad ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3ec92b18 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x52a6e729 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5603b6d6 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5d69a430 devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b6c4e75 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x870b4266 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x98b93143 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa0bfc91d ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa4891b8d rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa558047c devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb99459e4 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc4036c86 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda9bc85a ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdfdd49c0 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf2331fc0 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf628509b rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfd5960f2 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x3d89ee1b mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x751b7a38 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x45a1f744 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x0938ee72 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x4d347695 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x3f4bd935 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x139a081e tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xa17db3a7 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x99299ced tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x282aeb91 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5471cfc1 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x3e50ad45 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xcf0d46eb tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x020f70b1 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x04a3cf87 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x17a81b46 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x25122324 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2747be11 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x47797c4d is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5a6c6a71 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5fad6b2e cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x641c43b9 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b24816c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7daa26ec cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e5195b7 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x991e7d63 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc7e9fac3 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd52d8c08 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd811bbd9 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd8f88b97 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xde889419 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdfffd3eb cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe14ba996 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf4f7c6ce cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xa3e999ab mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x42283f2e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0e5254ae em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1db6c41d em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x267a4cc7 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x39857d92 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4066172e em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4ed8ef3e em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x58c6866a em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6c7b8910 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7c5d5359 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7f4a9adc em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8dcfb58e em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8f367fe2 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xabb3d0bf em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd03ed9fd em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe6169ed9 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xec21aa66 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xef706bb8 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf5ee100b em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x04363441 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2af731ba tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8f1a805b tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xd893455b tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x512bb2a7 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x901235a4 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xa70e0ed3 v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x33f16736 v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3682acea v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3f18ee73 v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x400031b0 v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x40572fd3 v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x6a95645c v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xba43d78a v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xbae0ee17 v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xd0465f58 v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xd48ff69e v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xd9b29b2d v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xe7e3c28e v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0x8468300b v4l2_h264_init_reflist_builder +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xa003c02f v4l2_h264_build_b_ref_lists +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-h264 0xae38bf6d v4l2_h264_build_p_ref_list +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x00713ac9 v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x033b2696 v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x049c9eed v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x04aaa9a0 v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x07d11b3c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0b597df2 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c3ad5ea v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x143a84bc v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x152647a7 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x25be22d1 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x283c9779 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b92d515 v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x416d7cff v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x44a42f36 v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5eaf98f6 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6de6000a v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x72d286da v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x739bf14d v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73b4ca66 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x81075cf3 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x81ccc8de v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x884f7dac v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x886f25cb v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8df409c0 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8f8c16b2 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9c84e7fc v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa2262fe7 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa519d24b v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb879c3ab v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xba3faaea v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbaf3e6bf v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc018528e v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc2ea192a v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd4b25b0a v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe1b32761 v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe215d7c6 v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe8936675 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xee07f271 v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf15e8a1b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf1754fa1 v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf54dc3f9 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf8b1d784 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf9387566 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfef65ec1 v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0fd5603a videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x144b8583 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1831f342 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1c186936 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1ee8e63a videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3faa6bda videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4bcaac0a videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x50c9b886 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56bdc29b videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5fcab3aa videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6103ef23 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7b1a7f63 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x823847f8 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbd7959b8 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc36e7420 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xca992835 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe0789a40 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe4489f71 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xedfb859a videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xee30bde1 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xee7cffbd videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf789b83e videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8018295 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfee92390 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x07bd11f2 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xb196d896 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xc2b5b4d0 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xfddd0f36 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x08630360 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x690da344 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9bf5140d videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x00b1711e v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06525893 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0a938afc v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0b83a615 v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0d427a5d v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0d43fdd3 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1259465f v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x14ff3fea v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x178a4812 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1ca50856 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1efd364b v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1f8ebffd v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2159cd19 v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x25a0b77f __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x30166870 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x30aa18e8 v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x30d7ba6b __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x30ef8d00 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x36358a10 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3a483f24 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41a8f3d7 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x46d00bbb v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4c2476fc v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52307df5 v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5528950e v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58bee392 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5b5a4613 v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x61817752 __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6366a29f v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6724b61b v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e8adbf5 v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x79a80bbf v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bbf2e6a v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x869c7461 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8c24e269 v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d67f917 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8e4875f1 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9341b23d v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x961c4d58 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9db3c901 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa2be3ef1 v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa81f3443 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa8e9a888 v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa912df69 v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xad37f190 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb1cde960 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4f46da5 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb6dd35cd v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb7e3154e v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbb089405 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbbfa523c v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbc46cae1 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbe47d44a v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcdb47000 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xceab3984 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd2e923a9 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe0259e74 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe8770199 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xef2a8947 v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3e0756a v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6fc8aa0 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff76573f __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x27ed2092 pl353_smc_set_ecc_mode +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x2eec2ab2 pl353_smc_ecc_is_busy +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x31112d75 pl353_smc_get_nand_int_status_raw +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x80ef3725 pl353_smc_set_ecc_pg_size +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0x84eeb67e pl353_smc_set_buswidth +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xc00d163f pl353_smc_set_cycles +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xc37aa3c1 pl353_smc_clr_nand_int +EXPORT_SYMBOL_GPL drivers/memory/pl353-smc 0xe2603369 pl353_smc_get_ecc_val +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1eece955 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x3559a279 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x7a1d8e38 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8212552f da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x9d744ad0 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa36fea1a da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xaebcf082 da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb4a212c3 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb9365641 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcdc3373d da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xa142a524 gsc_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xb7abd1c4 gsc_write +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x40f17fbc kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x564777ce kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6c5551bf kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x86cb96e7 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x96494608 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9cd08eb8 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbd243b9d kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xcb1a6be3 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x1e8e24a0 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6a93a669 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x7bd5d95e lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2553579d lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x5d27caac lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6d046dc4 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x793fc391 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xad4a81a4 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe3be7896 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xed9af6ff lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x91527253 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xcf6ca454 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd26837c5 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x05113c80 cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x051ce0c0 cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1837cbb5 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x183a17f5 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2a4550cd cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2a488c8d cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x3290277d cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x329dfb3d cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4624218c cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4629fdcc cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x53c33b08 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x5b02d6b9 cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x5b0f0af9 cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x69704dc1 cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x697d9181 cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x71a53a71 cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x71a8e631 cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x75256157 cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8f763860 madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x91c17c75 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x91cca035 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x99d53061 cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x9d9ee38e cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa5e92916 cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xbb834675 madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd2f46179 cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd2f9bd39 cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xf510ba15 madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x12799c4b mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x29dd1f51 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3bd2ea39 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7b68a119 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc621ca57 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xfb14f46c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/motorola-cpcap 0xa226dbe8 cpcap_sense_virq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x139da078 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x16a47ea7 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x31fb4a77 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3e993aa7 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x514ee9a9 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5b67144d pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5f79c3f0 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x910ca002 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbb8acbda pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbddfc024 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2ba6216 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7b2105e1 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf0a94017 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x30b89f3a pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x59029ae9 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x733e8f5e pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7b550fc5 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7eb5066d pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xabea57ea devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0xeecaf484 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x056eae41 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x11852e37 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x18554fe2 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1df5ed2d si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2965e447 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x356772a1 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3d6a9e22 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49974868 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54382b30 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6001689b si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6fa71f61 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x75d412e0 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7f5f99f2 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8202f184 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x84233c20 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8ca09753 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa14667c0 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa80cf8b4 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb40c5a2a si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb5f3e536 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb794ed78 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbd63235c si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc212968a si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc47279eb si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc6e14624 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbb17063 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbf9acb0 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd245ab9f si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd966ff6e si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdb027e34 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdf77e5dd si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf1216350 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf14fc2c4 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfc8fc621 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xd69c4e6c ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xe2e16424 ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x261c1b33 stmfx_function_disable +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x533380d6 stmfx_function_enable +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x636bcbb7 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x66aff403 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7711aa48 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x99ff82ca am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x1a11ec1b tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x6f25d964 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbb466320 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x6dc8b147 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x062d95ca alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x53c61183 alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xad137f38 alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xb2c72ac8 alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xcc76fd4c alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xdc3289b5 alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xfd69ad46 alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x0c44ae72 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x0c4b0b93 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x24efede4 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x2a30c8c7 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x39dba8c8 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x472f4ecc rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x587747cf rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x5f6a0f0c rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6267d4b2 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6c81b963 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x85cdb390 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x87f133f3 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9c065870 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xadae69a7 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xaffe5c64 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xb3efbcd0 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xbf622554 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xd5a169be rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdc5c4243 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe6e60199 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe7089459 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe75e1cc1 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe82ede62 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfaabdc78 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x002aeac3 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x01dcdf13 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x10689be7 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x17b12c5c rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x290037f1 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x5cd10ef3 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x73fcc5c0 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x9dcc773a rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xabd5a94b rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xcaf807d0 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xe3aef8dc rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xf45e5c68 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xf60e7a5e rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0f27cb18 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x66d51b07 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x7f5a5dea cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa28730c2 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x016c9ed8 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x346f1765 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x69237ae2 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6fb7ca94 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8bcd16e9 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8ea87bc7 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb86e950b enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xba8e0530 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0bb15869 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3062965b lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x44289af2 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9663d09d lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa3affdfd lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaf9827ed lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf8f5ad2e lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfd72a2f3 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x091fbd7e st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xa31892ca st_unregister +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x12899426 uacce_remove +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x6723d9b7 uacce_alloc +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xd235afff uacce_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x7277f678 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x7a1842ff dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x940bf891 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0x973f538d renesas_sdhi_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/renesas_sdhi_core 0xaf38a9b0 renesas_sdhi_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x0f739337 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x3d7c106d tmio_mmc_host_runtime_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x3f1e2b7a tmio_mmc_host_alloc +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x604b18c7 tmio_mmc_host_probe +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x6d16467e tmio_mmc_enable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0x924507de tmio_mmc_disable_mmc_irqs +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xb81c7286 tmio_mmc_do_data_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xc067e5b6 tmio_mmc_host_free +EXPORT_SYMBOL_GPL drivers/mmc/host/tmio_mmc_core 0xc49a65d7 tmio_mmc_host_remove +EXPORT_SYMBOL_GPL drivers/most/most_core 0x02dd5d20 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0x046632a1 most_submit_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x25c5c093 most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x4f21151a most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0x72fd0efe most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x7b1f83aa most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x9021e16c most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x9b2bc572 most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xaff2397a most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xb5023b1d channel_has_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xc252160c most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xdf7e10a3 most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xe39c3be3 most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xf1318904 most_stop_channel +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x5f94b9b0 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x9da3b9ce cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa28a9c26 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x4ee7c154 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xbd1e0ed2 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xc34c4502 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x2cd96855 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x20c4a897 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x86f64086 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9db4598a cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x5403c400 hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xe2882614 hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x1d003a59 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0xe0577f76 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x597ad476 brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0x9e694e09 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/brcmnand/brcmnand 0xceaefa50 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x681f2095 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0xefb8f1fe sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x09688d2f spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xe2c093fa spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x06eccb9d ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x12243de1 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x23550bf0 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x594d64fb ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6dcb5ee8 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d919dcf ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8acefaaf ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb56dbdb4 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb809ccf0 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc74a856c ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd59bfd3e ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe2887ec3 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfe28ab0c ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xff5f361b ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x0d9b8e96 mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x1387c743 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x30100da3 mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x38c769ef mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x427f4c8d mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x45358e2f mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x4f70ef3f devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x619bb89d mux_control_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x66869d91 mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x8f7203c4 mux_control_states +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x97aadb04 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xddc4a6da devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xe6891732 devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x953f786d arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xbccd8dda devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/bareudp 0xadd92bb5 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0938cf6c c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x25aba07a free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5208d996 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5b87956e register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x984ad7c1 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe20efa91 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5a25c9ed free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6ed2bdf5 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6f04a25a register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc1faacce alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x045d8535 can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1165bd4f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1289edd2 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16620803 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x166b875a alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x179dfcdb unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2bfd6bef can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2dd2fe79 alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3cf97b34 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4095894c can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x46e0f2aa can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4da88332 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x72a6810a can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x737590f6 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x86908d67 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x9592e32a of_can_transceiver +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa972e5fb free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb54d4086 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbce8a97b open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcd690a91 can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd9a89d36 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xdc23b473 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe58441a8 can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe60bb85e register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe8461efe can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xfacc22b2 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x024befb9 m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x1252286a m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x1b453788 m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x1bd56e54 m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x2c0668fd m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x9966713d m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xe151f3eb m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xe3981687 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x590c1e65 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8c7f07ee free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbb172433 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfd9bb260 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0x9d5bc039 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x01bd48d2 ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x04598c0f ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x0c61b2bf ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x3ac794dd ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x3dc68cab ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x43c417e3 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x5a201ddd ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x5b05a3ac ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x664b0250 ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x79e5b46d ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x9f79f3b2 ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xb496876b ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcbf14e9a ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcf42c542 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdb703bcd ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf22c7505 ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf8d1f8cc ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x04e8bedc rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x07c46908 rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x19dd98b5 rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x36799387 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x3e3120c3 rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x49ffe367 rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6557a6fa realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6dd6402e rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x75988bb8 rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x868a806c rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x8de296a6 rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x99828181 rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x9c2a8d81 rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xc15fb5e9 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xc8745a52 rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf9c0550a rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x7c7fd522 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xb6a9dec6 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x27c5c4f6 enetc_mdio_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x44e63ae6 enetc_mdio_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xf68ac32d enetc_mdio_lock +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xff9e653b enetc_hw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x034bba63 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07710183 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1bc1b0 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a33a6d2 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d16b83d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d336ca1 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d818751 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0deece16 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14e96c32 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15008dd8 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16456d81 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17ddd83b mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18b814ae mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a0cc9e9 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cd3211f mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ce4e2a5 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x211c8e17 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x243a74c1 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x258369fe mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x262cb58d mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28f5102b mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e631265 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31078ae6 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x321c7a58 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34752c68 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36087cd9 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3814ef28 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3afe37e0 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d7e27a6 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dffee69 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3efe0aa5 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4534789e mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45f63ff3 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4732126b mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48f145ca mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48f4104e mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a3e7439 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b222203 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b2c5003 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c886a15 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f26d0ea mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x539511f1 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5416a957 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58e4d0a6 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59f249c0 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bed5da7 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fab5e7d mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x611e50a6 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x621d644f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62313990 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x660f4d20 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67688ee4 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6adad86e mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bef65b1 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c6dc01f mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c7bad36 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ca5f145 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e744c03 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72b30dc4 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72f8bd81 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x732b1855 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a53ef66 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x814b372e mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x829a3399 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x830eea2b mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83ec1983 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85caa291 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89775a84 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b086da5 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d5652db __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8feddd2f mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92afb5b0 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99a22e80 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99b68bf4 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0f186e7 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1f45c16 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2c88034 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68dcaa0 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6e533ab mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9cc34c9 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac3239cc mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf323cfc mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0a3d9c9 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb22cb35c mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7dec22f mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb82866c8 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb929e7d5 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe2c940e mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0d9a2fd mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0ec9671 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc316713d mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc53a3ff4 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8d9156a mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca21362c mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb6ff6cc mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc6d39af mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd20cc52e mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3c06ff7 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd433e26a mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7b4d671 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9f281ca mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfc87d66 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe13ff073 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe154648b mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe35acc45 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8f20f6d mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeda3c516 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedb6b6cb mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xede3d312 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1dbc2ec mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2c7dfe8 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf579d5d3 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf654fc0c mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7584c7d mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa377f95 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaa1d219 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfaad1970 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbd75157 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdabcec8 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff468b9f mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffd73449 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0037142e mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09f8c157 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0fc86971 mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11f3cb28 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x125c35c3 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13fe8dcb mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a57e973 mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bdb0e04 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d8c65c5 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x279f2012 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a6997ff mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e41aea9 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5116c1e8 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51a3dec9 mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55a4798a mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x586c416d mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58a6267d mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x58b3ba68 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d0f95b9 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d3d8ea4 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62bcedb5 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65fe783e mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x669464f9 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67cc23e2 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x683411b7 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68655bd2 mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a97270c mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79404be7 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c709428 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d577837 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f71aa0d mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f8cdb0e mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81219984 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x821dea1c mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83c2bb54 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8f8f44b4 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8fe1929f mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92ae235d mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x953ac1a7 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a57e990 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9af96a18 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa267c60f mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3c41964 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa41af7cd mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4b58001 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4b63288 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa59a3243 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5c8c09c mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6ddeb6c mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa76b7acb mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa67105e mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0ada196 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7914d66 mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb954f481 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbb86a24 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbec026f0 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc35363b4 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb03c830 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce61336f mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd350986f mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4b6cf1c mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd824eb61 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf880368 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfb6db82 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe221ae5c mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2b500f9 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe47b4b65 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef870bd4 mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefcbfcec mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2271fd7 mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4ad8ad4 mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x2695f52f regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x4aabcef6 devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0x4be2f862 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x444ba672 ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x662c8b6c ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x84e6364d ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x0b28a9ad qcafrm_create_footer +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x2b6ddf3f qcafrm_fsm_decode +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x41da0375 qcafrm_create_header +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x34826e4f stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x38731458 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x84e8b6db stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf191557f stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x08a61470 stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x1d2a40d4 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x30e06ed7 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x44563de8 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5cf11109 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x2f387064 w5100_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x2f9bc6e9 w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x820f54f2 w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xb2656c34 w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/geneve 0xe710b5f3 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x01a59419 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x0ddee710 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x3d6ca7c3 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x9fddba7e ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xa4e386eb ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/macsec 0x81711738 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2a61c58a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x9c118c16 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa916d1c9 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb69141fa macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x6c09f3ba net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xcaf3f80f net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0c9fe3f4 bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x151faab2 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1c991b77 bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1d683657 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x254fcee6 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x392c5ac8 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x43b2e1d6 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x452cad44 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4984d32b bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x53d3493d __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5459b45e bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x552c137e bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6118c231 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x62e860c2 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x66dca819 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6ced2f03 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x71eec57a bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7693db39 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8763a22b __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9bb95317 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9c2856fc bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa8852b7b bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb4b49062 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb702664a bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc1ea58fd bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcac806ab bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd0655ffa __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xddd7d84a bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeb63eb9d bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf2e8104a bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf2effe1a bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf364b37b bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf525cdfe bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x13b864ce mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6d5d351d mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0x1b5494a6 mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x094b48de phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x16330371 phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x65dd187c phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x74a4c12e phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x835935dd phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x8562af48 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xd3d62da3 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xda05187d phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x06331417 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x2644991c tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0x661ef0e8 tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/tap 0xafbbb6ac tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0xb6d02333 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xd283c17a tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xf094c08a tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xf235e5b0 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0xf36fc6ba tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0540e061 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4808b0ad usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xac2297fd usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb424524b usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd48c8b26 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2cbd7d7c cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2e36d83d cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x35182aa4 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4cb5a94f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x65bd556a cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x759009f9 cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8307419c cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8e986fd2 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xcb40afd1 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd5350116 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf4a638d2 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x05d5bf10 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x064301df rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0eef65f8 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3248fec4 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4967f593 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb5a5b808 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x053d54bc usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x100dc440 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x18cb0b8b usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f8a9f5a usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2626f031 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2e6fa3d2 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2f5b26f1 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x33cd4345 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x432c4424 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x500b67b8 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x50874700 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5eb595ab usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6662a319 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6bd2bdce usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7439d28f usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x749aba6b usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7ab9b0b4 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x80ad984f usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8c5b5eca usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9860495f usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9ecd5489 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa62b9dfb usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2448778 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5ce2221 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe5fc290 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc51c1eab usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd075096a usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2dd367f usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe43ddaa2 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xea64991d usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb5f0283 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4cba1b9 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf6a4b532 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x09d7b26a vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x1041bae4 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x75f53f4d vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7fefec51 vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04c60c8b i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0e396e45 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1ff9c070 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x20ba5267 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x26af70cf i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3b9849bb i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3ed862ae i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4511206b i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6bbbb7cd i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6e15f090 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9183332f i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9972c1bc i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9e21e97c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa2ccfee6 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa5a39b55 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xae181b84 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0x7ea94fba libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1d3ac649 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x65c7cc97 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8b1d42e5 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbebac908 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf2a0afcd _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x00593a25 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x00734065 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x007f3f72 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0189c36f iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0582b08e iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1009192a iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x15401781 iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1787e6e2 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1c48129a iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1c62f793 iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2267dbb7 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2456fdb3 iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x261d8fde iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2c0f571f iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x40cb225e iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4302b361 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x47e3a27d __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4d20c627 iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4ff49c15 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5039f9dc iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c880d34 iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5d311dc7 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5d54586f iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5ef4a44d iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5fbf3d43 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x631aba21 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x663d3945 iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6a9c4696 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6e580c6b iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6f8cedb7 iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x71f5a775 iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x73c95030 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7434fb4b iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7fea4575 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x81656f40 iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x83a137d7 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8874c2b7 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8d7b3a65 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8dd6c7c7 iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x90d803c1 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x911c972a iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x93160e9e iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x976370d7 iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa634a3ea iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb1e39cb3 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb2d19c06 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbad63b37 iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbd82290b __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xc6a4effb iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcb32a4fe iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd4231697 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd89e6bb0 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xddb37706 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xdec9e66d iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe4d0c795 iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe61250ea iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe665613c iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe70543e8 iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe7e09b05 iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xeec71477 iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf4fd0bf8 iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xfb6687c5 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x11591ec0 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x1be2f0ac p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x4eb3e364 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x70173bc7 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x946485bf p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x9fb6e0e5 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xab2ed0c0 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xbe0a190b p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xd7377ad2 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x06313635 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x1a8ebf8a lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x280bdd0b lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x466785f4 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x785f1e3d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x81672a27 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x87cbd952 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x89a5efe5 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x8cb18e30 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x8f338d4e __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x9eb56f33 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x9f6a61a3 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x9f9f7b38 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa877200e lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd4049ea6 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd56bd398 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x0300e864 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x5ebd3a12 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x74f3a220 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa6aa077c lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa939c3d9 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xbde76871 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xdac75243 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xf3e04656 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x0273bed8 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x1fac904e mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x2f3020e4 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x364bcfa8 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x41c91143 mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x45291dc6 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x465d3108 mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x597e8664 _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x5aecd791 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x6a22cd20 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x701e14a9 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7f2d4b48 mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x867c14a6 mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8a07ad37 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8a8685af mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8ce9450e mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x8d2e050c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xbcdf5c86 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd65e460b mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xda9a838b mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdae7d383 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdb9bf3c8 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xdd115317 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf719d397 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0013ad94 mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x05506c91 mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x0710af34 mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x082856d0 mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x13911cc1 mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x142815c3 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x15a40f19 mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x16d60b31 mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x17f04197 mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1de2e3b4 mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2ba798b3 mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x34e02765 mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3b7deb24 mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3f13d84a mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4155b96d __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x45761135 mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4618efc7 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4b6545ce mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4dbb07f2 mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x557dc340 mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x566c0a50 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5a6af8a8 mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5b0e944a mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5fbd1bf0 mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x65ee0ac2 mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x67bd900b mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x697bc606 mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7198a45f mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x73bafa5d mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x75f7ed2f mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x76fa26d3 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x81ea1512 mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x887367da __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8c39ab82 mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9277eb9a mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x95f2c834 mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9a4010fa __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9c495b53 mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9e28c8ab mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9f33f9ef mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x9fc00f3b mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa556faaa __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xade35b5c mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xaf2aabae mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb24d33d3 mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc4542640 mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc585cf64 mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc739aafe mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcea0a7e2 mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcf5fa9c2 mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd2bbdc39 mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd69d8f6c mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xda01ef8b mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xda9e50b1 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xdba1614a mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe2d05ccc mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe81f68ba mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xebff8c1e __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xefb6e747 mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf4e605ca mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf4f9355f mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf86688c7 mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x11036c62 mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x19dce68a mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x3a859984 mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x4c3b9659 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x5d9077d9 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x732336b2 mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x765f307d mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x920508df mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x94b965ab mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x9a469d92 mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xfe9e456a mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x01859db5 mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x192d85e2 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1ee94bc8 mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3155f352 mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x32263569 mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x35fce9b2 mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x417daea8 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x49fecbb1 mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5112ac31 mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x59451315 mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6dc4e038 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x70465c9a mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x72dd0640 mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x7b0a4e20 mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x7d31ad0c mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x912e5fb7 __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa176a9b5 mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xaab7a7a4 mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb08d1224 mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb87cc87c mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbb5d039e mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc3d0b09b mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc490b447 mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc861d742 mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xca9b7af0 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd5c49393 mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd71518f0 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd8d9e458 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdb1979b5 mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe0f2e269 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe3f72fb3 mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf5b739bd mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf8ad5802 mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf9277332 mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xfeb0a8c8 mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xfeefc080 mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xff5923d6 mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x2d251191 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x60567af7 mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x8865a3f3 mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x9ab9bd6e mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xc75fdcb4 mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xc900f5d5 mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x01126518 mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x09c6084b mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x10915dd5 mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x15a0e796 mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1668bc60 mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x19c1ae7d mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1fc97ed0 mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x21514fcb mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x258966ed mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x29a7dffa mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2c460261 mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2dc1ea5f mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x31328b3c mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3a11ffd4 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3bbdc911 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3f2a0212 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3f5d0cc1 mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3fa77a17 mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x419916d4 mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x47b1afcb mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x482e9378 mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x529d8a17 mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x541e6ba1 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x58cec04e mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x597a078c mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5ce2649c mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6351f5ef mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x695b240b mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6d5c0ba2 mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7116fc9e mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x755056c8 mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x79fc1794 mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7aee3b74 mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7bfa2800 mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x7eb45039 mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x80669657 mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x80b464dd mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8b4c6fda mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8b69dfa0 mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8dceb0b2 mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8e11bd30 mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9151d169 mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x95485277 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x96816ec1 mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x99eb9a47 mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9ba6c66d mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa938beb5 mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa9799a07 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xae04d94d mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb1bf6e45 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb2915f71 mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb3d0dce8 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb443b524 mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xbac05657 mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc0acf862 mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc54e7e0e mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc5ab488f mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xccdc61c7 mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xccf5b82b mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd2539db4 mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe1381b53 mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe738395a mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xef83f182 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfc8e0bf6 mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfe0f12bf mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xff73f420 mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x4d2f0154 mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x707f2d5d mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x79e2276e mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x866c76f4 mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x98cc1f85 mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xa131847d mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xae9cd67e mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xcd00657d mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x2531364a mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x38768c48 mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x408b3914 mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x4a5a09ef mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x51200489 mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x6967f477 mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x6fb85335 mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x77b91437 mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb00a8988 mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb09c8be0 mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xb53d3361 mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc390bf2a mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd3189223 mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xd7598979 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe61f63a8 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe7888c47 mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xe8d65cbe mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xf03b041e mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xfa11720f mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x0a727b82 qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x23a3086a qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x271f8591 qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x88fedd1b qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xa3641bc4 qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xa69d81a7 qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xbb593f9b qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xc3bcd1f8 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x00b52cf5 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x10cb0689 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1f5d7143 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2ce77e83 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2ebc596b rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x36da9b11 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x38d2a64f rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3b80743b rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3ba185c4 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3e5e528d rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3eddf034 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4b427c8c rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x54280400 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x591de985 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x5ab106c9 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6700aee1 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x68dc811f rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x72abb91b rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x72d16c2c rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x756a52a8 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x76b09c08 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x78674985 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7ad008ee rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x89fb8526 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8bdc766d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9044df45 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x90f7159f rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x92c43618 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x9ffbcd80 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xacc7c563 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xba7c0296 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc87c9458 rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc99ffab6 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcaf7195f rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd3a756bb rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd3ac3cb6 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd6e4499c rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe0530933 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe0c3b410 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe1340230 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe982385c rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xea639b02 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf0572763 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xfa746dd3 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1b31202d rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1e53c0e9 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2894bc6e rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2ce2aafc rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5ec2a224 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5f4c4775 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x6a70df20 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x71580cb9 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x73f052ff rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x9ba06696 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xb3e79c47 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc1fc0e2a rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc2409687 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xdd6a6e3b rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe46603d7 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xeabf5855 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x03afc3ec rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0721cd24 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x199600a8 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x214fb1f8 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x295fe60a rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x2985f7aa rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x2ffe090e rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x323fd144 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x33ac5f9f rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x37bbb001 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3ae4a57f rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3ba173b1 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3e9e30f8 rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x44b37b0d rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x53b0cc3a rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x53cf7381 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x554fba1a rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x56a79cab rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5916b874 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6053accb rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6706968d rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x717b9a83 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7c7894c2 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x834e6602 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x89307098 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x8b166ef7 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x92853dd5 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x99ef38d2 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa498dbb6 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa864b2c6 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xacf68c51 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xaf3d6f02 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb09b3080 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb37e6092 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb9f507ab rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xbebe6450 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc170d15a rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc2b37826 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xc73a5c7d rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xda00d912 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xda8b8e6a rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xdaad486d rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe576f74d rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xe87a764c rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xeb32d129 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xeea625bb rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf6b7acce rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x2fc4b881 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x5c9e6f11 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xbd64bfa3 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xf3e81cd8 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xf580efb0 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x0496bd58 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x7d10ed81 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xab4a28ed rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xae29e95b rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0044b82e rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0ac3873f rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x0ecd4f4f rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x3b59aae7 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x45f9d50a rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x4fac84b2 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5a72323e rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5fcc5e72 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x7e22b603 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x8c7d0822 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x9927868c rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xdb8e648c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xdcd02a38 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe87f978e rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xf536e459 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xfdffbaa1 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x42fe9cf3 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8b71b661 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdb3918f4 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe5e07135 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x22f0a5c4 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x27e4fc8b rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3110b957 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5087d805 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x508acdf8 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x57519f77 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5ba920ff rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5c90c5e6 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x80a129fc rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x88a05718 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8ed2aff9 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x9561aa27 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x971a4ebb rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa6d61a85 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xabe46a89 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbb317b74 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbfc2a6d5 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc54b21ed rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xcc34b208 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xde03bef8 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xde093020 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xe7ed7d18 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xeaa74d4e rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf0f4e2df rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf766da85 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x09a34c3f rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x18105fa5 rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1a0f23ce rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2b1f3603 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x37b993b4 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x391fa926 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3cbdc745 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3ea8769f rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4185b572 rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x45ed64db rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5863a6c1 rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x59ff110d rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5b422999 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x60be6e11 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x666f756f rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x6bf61258 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x71b4a655 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8fb6aac7 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9cbbfe2f rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9fa46acb rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa0b9be24 rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa4ccf5b7 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbb3fef1d rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd691d26a rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xec6fc43d rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf3aca959 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x13d78fe6 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x407d013d rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x57d284d9 rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6a59affc rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x82c262be rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x034cc35b cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x5d0ac87f cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xdfa4cdc5 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xe997f4f8 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1df43ac5 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x82a6a9cd wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd5f551a9 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x077646d0 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08c65d04 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x112739e4 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11c92cb7 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x12141dec wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f7db049 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x262aaf5e wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2efbccf8 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x33966665 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4628f892 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4893d58e wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53ada49d wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a860423 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5cc03b67 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x63296c70 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x63757f61 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6573c755 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6641945d wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6fca0145 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x72ea3d3e wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x785aa4d9 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b13cab1 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b7d75c1 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7f5b7e73 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83a11820 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x868c8f72 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e6beb05 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f772a38 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93035fb8 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9402ede4 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x97eb8196 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9870c7a8 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xacbb2135 wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xace19c03 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb8023fbf wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc1db71fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc306f99b wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcb70cb73 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce371930 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcf1cb5a1 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd019992f wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd057dc9b wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2072266 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee7e0abd wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x54a7fa73 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x825fc9e7 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe0170f8c nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe8af330c nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x0762fdce pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x2eb93ac2 pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x5d9cf853 pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x5f902385 pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x8458fc6f pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xd96f4267 pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xfd328135 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2aac8661 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4075c043 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x44fb5414 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x477c98ac st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5eb2e947 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x67b090c1 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x79a67e7d st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9dc7d7f7 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x50cd1c7d st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x6c073c62 st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x917a9c2c st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8b8de60a ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xdaa67d42 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xeccd8c24 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x73aa4499 async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0x961d7432 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0e07983f nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x14a9c539 nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1848ad2d nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x19876274 __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1a5fc14a nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1f65bec2 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x257eca54 nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x32b35397 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x361337f9 nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x40a1a232 nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x45e68bad nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4d56ad2f nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x539cc6b7 nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5c5e367e nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6404a17c nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x66ca02c4 __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x70b302e8 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7a5516f5 nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7dade8ee nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7ee9d543 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8ab19397 nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x93b0b7bd nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x94409cee nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x948f655f nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9b34400f nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa04607db nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa67d5b66 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xaa0fe72c nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xaba9c633 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xadd9ca22 nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb0ed0347 nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb4ad6bc9 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc54fa3fd nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd01a432b nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd10e3e2d nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd16fcd76 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe0139fea nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe659fac4 nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xef0b900b nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf8292d05 nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x288a3346 nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x3f4ce82e nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x3fea7ab6 nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x4e28f845 nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x5e6da3a8 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x999b6ecf nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9e4be8b1 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xbb19d6d1 __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xcf11fb37 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xd41eb4e6 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xda41457f nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xf77c8898 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xf8fdd3b7 nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x96445818 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x18756c48 nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x23cbdaae nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x3b6a4715 nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x4c649e19 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x5589ee70 nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x68dacf99 nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x6a3ea255 nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x83053966 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x9b213a09 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xb5c0fe94 nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xfe69e4e5 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x48c14093 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0xadae4e08 switchtec_class +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x019d785a get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x07d9d00d ufs_qcom_phy_save_controller_version +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x4720a474 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x4a906c2e ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x68958d72 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x6c86ca1c ufs_qcom_phy_set_tx_lane_enable +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0x7e922a49 ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xe48e5bff ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/qualcomm/phy-qcom-ufs 0xfd68c5f7 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0x825cd20e omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0xd0e30436 omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-control 0xf3056ac0 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/ti/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x22884700 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x44018e07 mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x747a2ae8 mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0xb094b9da cros_ec_sensorhub_register_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros-ec-sensorhub 0xe735e724 cros_ec_sensorhub_unregister_push_data +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x6b1be500 cros_usbpd_unregister_notify +EXPORT_SYMBOL_GPL drivers/platform/chrome/cros_usbpd_notify 0x8bda2df3 cros_usbpd_register_notify +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x2bd113eb devm_reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x2bdad6b1 devm_reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0xa99188b6 reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0xec683db7 reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x17f0e293 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x5c527bc8 bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x7ea7d125 bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x569adb01 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x86fdd458 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xa1277570 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x174c1f9e ptp_qoriq_settime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2eae82b0 ptp_qoriq_isr +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x3474ff51 ptp_qoriq_init +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x43a72fd5 extts_clean_up +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x5370a351 ptp_qoriq_free +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x7e3a12a6 ptp_qoriq_enable +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xa5525acb ptp_qoriq_adjtime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xcd9a0b5c ptp_qoriq_adjfine +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xe5eeca60 ptp_qoriq_gettime +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0b1bd5ef mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x22022635 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x318de88e mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7b0298a2 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb75d71cb mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3daa8e61 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4daf87cf wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5f1a383d wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6683aec7 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x9006f9cb wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd7054e85 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x99f5aec8 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x72683408 scp_get_vdec_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x75a7a69c scp_get_venc_hw_capa +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x81d82ada scp_put +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x8e816802 scp_get_rproc +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0x96a0eca8 scp_get +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xdf3f12a3 scp_mapping_dm_addr +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp 0xf796fcfc scp_get_device +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x09313652 scp_memcpy_aligned +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x27ca4236 scp_ipi_unregister +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0x9fe5a579 scp_ipi_unlock +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xdfcd3f3c scp_ipi_lock +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xe0f9dbe4 scp_ipi_send +EXPORT_SYMBOL_GPL drivers/remoteproc/mtk_scp_ipi 0xf8ba1c03 scp_ipi_register +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x19773869 qcom_remove_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x1e479e00 qcom_register_dump_segments +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x2d3e50fc qcom_add_smd_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x31bfd40e qcom_unregister_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x86a84622 qcom_register_ssr_notifier +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0x8e953505 qcom_remove_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xb7034307 qcom_add_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xe0a2f0cc qcom_remove_glink_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_common 0xfb157265 qcom_add_ssr_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0x3ae8f574 qcom_q6v5_panic +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xc225221d qcom_q6v5_request_stop +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xd4f4c0ed qcom_q6v5_unprepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xdb44d848 qcom_q6v5_init +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xe1e7b78c qcom_q6v5_wait_for_start +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5 0xe9fe439b qcom_q6v5_prepare +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0x78106ee6 qcom_add_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_ipa_notify 0xe57a8506 qcom_remove_ipa_notify_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0x095d7ab2 qcom_deregister_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_q6v5_mss 0xfe1a028d qcom_register_ipa_notify +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0x0077f833 qcom_add_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/remoteproc/qcom_sysmon 0xa881c6fc qcom_remove_sysmon_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x16411de7 mtk_rpmsg_create_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/mtk_rpmsg 0x86903274 mtk_rpmsg_destroy_rproc_subdev +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xaa7319b8 qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0x72dd75d9 qcom_glink_smem_unregister +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink_smem 0xd8e7d7b0 qcom_glink_smem_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d622158 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x17e15d57 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e0d36f5 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x243c96d3 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2716070d cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b3689bc cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x326a1211 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x33b0f743 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ad4fc76 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3bd8e304 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x436896d5 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ec0b656 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51fc9ad1 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53894655 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a791947 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6275fd02 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72346faa cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75e2a59a cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x793e4bbb cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b920b36 cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x82b97eb0 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x840186e8 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84c7cbca cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8fd891af cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x991da591 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa23fff81 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa6f5bab8 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa9a78de3 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb5733e67 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7755dcb cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb81c33f7 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc3898b2 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe070ddc cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc78445e8 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb59925f cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc5abd0f cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd0ce80f6 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5522143 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe52d7a6e cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeea97609 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0dd8f07 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0de9803 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf20de17f cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf996dfb0 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x26da9cd1 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x27173f70 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7a5bf4b5 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x83bb8198 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x95468a5f fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x96550b9b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97d8ca84 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa65e06a4 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa688fc51 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb9d379b7 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd076f1b9 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda430955 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdbace06a fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe4897707 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe4dd8e14 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeb02d9b9 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x060ed51c fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x20ff7e26 fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0d29ce2c iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x25d46100 iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a307f13 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2c57cbfc iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x872ea125 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xaeccb26f iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb2b54bff iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0xf15aa126 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x054d17ec iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1258a7f8 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1933cfef iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b2bf163 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2cd1941d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f7ad109 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x32f3bd8d iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41975661 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e8b91f9 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4fde1f06 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x577179aa iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60d02eb2 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69b64b9a iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x71b077cf __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x733b6247 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x789ac907 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x813eae71 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b82c309 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8bb7865f iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c047d38 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8fe7cb8d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x93646459 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96a20c10 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ae59e92 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9c312405 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e273b1b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e46fe34 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa18ddd6c iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3f742a8 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa5754abc iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaba1548b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb22d6503 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb60a56f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc9f3150 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf4589e5 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb95a9ea iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcd68c591 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd29a0b2b iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe123129b iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe42aa0de __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe78ee469 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1b1f2e3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0422042a iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1952ea5a iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2948169d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x488c63d8 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4cc91750 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x58a25e88 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5b1362f8 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x763905ff iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7c4363e3 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb98858bc iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc02de103 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc426f52b iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc43c8c2b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe25231a4 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xee370d5f iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3c8bc38 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf91d8e40 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00b27cc2 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x016de947 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01b947bf sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x16ecc21c sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1d3ad1a5 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2eaefd80 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x34ea915e sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3c2737eb sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3fa520ac sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4f74128e sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a5b277c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x620deadc sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6c8cb5dc sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x81dca250 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac6774fc sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac832322 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac9b44b0 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb1ae6839 dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb2618f6 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc52f2670 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcccce4be sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd00db1b8 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd918a5a1 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfe2078d7 sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0715ef53 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x071a4262 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a1fc707 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12d8c878 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16d206e6 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x191ccaad __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1babfc39 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d763425 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2b94cd7e iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2d00c8e1 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x382f3991 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f3697dd iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x499e6313 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59e7e08e iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d9d2b2c __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5dbbbefe iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6520fec2 __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e394f67 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7101b2a5 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73c42b44 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74cf8ab7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x798f38de iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7cd7d6be __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84f13d23 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85a2bcc2 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x87380b1a iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9bb30d77 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa021e9b4 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0fc7c97 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac49a525 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb1bb5fdf iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb28b6225 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb641c93f iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbeae48be iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2cd5d77 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc82e09ab iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc96241fb iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xca5bf1a5 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2ebfc61 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe18c6326 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe410c69b iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xecab0fc4 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf09694a5 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0c46b09 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4a216009 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4d545e7c sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x85caebe4 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd34bca3b sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x8b100b02 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0f94ce3c srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x11f774c3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x77078edc srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x99342093 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd726df0b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd77d09f4 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x13dc22da ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x26ce20dd ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x385841cd ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x6c25c88f ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x8562088e ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x94011662 ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x99a1467e ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xa50aad55 ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xa8e3faeb ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc56d0e48 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xc79b41de ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xda2c7f67 ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xef45ffb4 ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xf53f1680 ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xf5491b2e ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2494ea60 ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x468a212a ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7839419e ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa62c7a23 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xa9dd8990 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xc7a18523 ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xf3fa0bdd ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x126b3cc6 siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb81b6067 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xcfdf3158 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xe6fcfc4f siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xea5a20fa siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xf8a2d0ad siox_master_alloc +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x0a7ca7e3 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x0d88c248 slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x0f915d28 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x25849ecf slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x2a031886 slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x49351959 slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x530eb37d slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x683dbb87 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x6bbeae2f slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x6be8d7bc slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7509a71b __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x891a9959 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x94a7e037 slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9a8d2523 slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9f091481 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x9f1340d6 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xa3681b1e slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xa3e86c4b of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xae2ac7da slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xbe52339c slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc5493d0b slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xcde23c33 slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xddf8c6de slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xdf3963ed slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xebd0a4d2 slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xff2d3d29 slim_stream_enable +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x494128eb meson_canvas_alloc +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0x673c5a86 meson_canvas_config +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0xec698368 meson_canvas_get +EXPORT_SYMBOL_GPL drivers/soc/amlogic/meson-canvas 0xfbd79150 meson_canvas_free +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x1cb94a8a apr_driver_unregister +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x302556c2 __apr_driver_register +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x89fa1bcd apr_send_pkt +EXPORT_SYMBOL_GPL drivers/soc/qcom/apr 0x8fb161b1 aprbus +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x06285798 llcc_slice_deactivate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x09afc16e llcc_slice_activate +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x14f99b76 llcc_get_slice_id +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x2027e82d llcc_slice_getd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0x62ff6e92 llcc_slice_putd +EXPORT_SYMBOL_GPL drivers/soc/qcom/llcc-qcom 0xdffee709 llcc_get_slice_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x06485fbd qcom_mdt_load_no_init +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x42f47788 qcom_mdt_read_metadata +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x45e1cd7c qcom_mdt_get_size +EXPORT_SYMBOL_GPL drivers/soc/qcom/mdt_loader 0x7f0cc249 qcom_mdt_load +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x02a3ec02 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x5cf2af4d __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xcce76e4c sdw_bus_type +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3fa77c19 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x65eff853 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x85c9d00c spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9b8adee1 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9d6349fb spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb83df82b spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1ec59623 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x31569341 dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x340f9205 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x546c6711 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6cbe85ca dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x7b9c3bcf dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9e335093 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd60c9d74 dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf4bd221a dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x04028505 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x4e9b5076 spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xf29cd9cb spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1f39a231 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2a540013 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2c7fb669 __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x30638616 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x38d1a7ad spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3f39ab79 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4db1c35f spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x65386f71 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9809bed0 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa5777bd5 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb93dd67a spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd2c24d68 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd47d0bfb spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd63c7044 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xda6a212c spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdef97b35 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf8ce0e5b spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xffaf33a3 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x8e515c9c ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03a8c9a0 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x066ea28c comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c99d5a9 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x18e7b062 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x37e817ac comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x39ea6c48 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e5eb517 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4241217e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x59ba4bc8 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5f3e3d73 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x62ac8e3a comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6d04cb0e comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x76700aa1 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8505d7ca __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8b0182f4 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x933315e8 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x93596989 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95e94a39 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9b14fb27 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabba6e9c comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaffa6bdf comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb66628e2 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5d204a4 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc68f1001 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcd3bda6d comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcd8c3a73 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf41e9a7 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf578aff comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0ab3aa7 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe7533d83 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf127ad16 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf62b76bd comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf7a3ba14 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf8947f13 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfce8f02d comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe6aca5c comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3593591a comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3a6b3e5c comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x46194960 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x549d39a9 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xaa8edf6e comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb1fdb406 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xdd0e0590 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xecc9fa80 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x209474fd comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3d4594e3 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x447af281 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x751e999b comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xbaa0f9e2 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf90fd590 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x7691ea0e addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x01033972 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x6e810a8a amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x1b4ee2ba amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x20231525 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x249f2389 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3198cfaf comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3fd874f2 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x49999f4f comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4fd2a4d8 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x729924bd comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x74b643e3 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9a7b444c comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xaaad6e6c comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbc27868a comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbcf3dc81 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfa4c2878 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0cd566cf subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x380ef6e0 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xa5e259df subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xf482e6d8 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x03740843 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12e99e39 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3abb119d mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x472bf6a7 mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4ce2e109 mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x513149c9 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x53eb74a4 mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5404de42 mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x65a38b2a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7113e2c2 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x747cf855 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x79920eef mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7a6e7b08 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x99146232 mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbd87c168 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe2788ad5 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x71ebf305 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xf6f4cfa3 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x26d0fd85 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2c701cde ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x362eeebe ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3869f185 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x498070dc ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x52f15e76 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6dbf31c4 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7b61728c ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x85540fc9 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8a54bf3f ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8ea653ba ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdbb2da9d ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xddeb17d9 ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xea415f8f ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf2914d37 ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf9e1366b ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x23effcea ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6250061a ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8c1b3c1f ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x931f7586 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x984ede7d ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc38bb863 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0602af8d comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2b2a3152 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x65c90d03 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x889dbdbc comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xae25db15 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeb62da8c comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf090b82a comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x098b589a anybuss_recv_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x31976645 anybuss_read_fbctrl +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x4765e966 anybuss_client_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x4cecc479 anybuss_send_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x56c73a99 anybuss_client_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x5c4cd3b6 anybuss_write_input +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x7a2faab2 anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x85093eac anybuss_start_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x986cd6cd anybuss_read_output +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x99343da3 anybuss_send_ext +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xab30c445 anybuss_set_power +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xe74254ff anybuss_finish_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xe8f2fbb9 devm_anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfce879ad anybuss_host_common_remove +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x1f03c38b fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x27aa7e38 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x3ad70b5f fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xa69a7f81 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x064e26ba gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x1543d217 gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x1b77c886 gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x2c157153 gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x41a02f2b gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x56f344fa gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x666452c1 gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xafdb8f94 gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xbbe42217 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xc5791ab2 gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xe07da1a8 gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xeb594057 gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xff66edd4 gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x107f6d96 gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x127b82a7 gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x181f961b gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x33aa3c99 gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x5e167236 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x78c44151 gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x85ae137c gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x9a9d73f0 gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x9d7343ae gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xacf54283 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xad96705c gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xdd01b0f2 gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf0cf0d01 gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x7475baf1 gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xe25476aa gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x0bbf5859 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xb855924f gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xc0859c6c gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0xf4af1bb1 gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xc274562d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x08a48c36 amvdec_src_change +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x0fb5ea3f amvdec_read_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x115655e9 amvdec_am21c_body_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1379f053 codec_hevc_setup_decode_head +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x18dce4f6 amvdec_add_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x1cb1e6d9 amvdec_am21c_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x231928ef amvdec_write_parser +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3689cf9a amvdec_remove_ts +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x3b82576b codec_hevc_free_mmu_headers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x45e30951 amvdec_set_par_from_dar +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x4f39b2bf codec_hevc_setup_buffers +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5caa1126 amvdec_set_canvases +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5def270a amvdec_abort +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x5ff35ee8 amvdec_am21c_head_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x7b9232a3 amvdec_dst_buf_done +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x84f399cb amvdec_read_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0x8e36dd77 amvdec_write_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xa4c300b5 amvdec_get_output_size +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xc556fffe amvdec_write_dos +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xd02790a4 amvdec_clear_dos_bits +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xe21ba354 codec_hevc_fill_mmu_map +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xef857c30 amvdec_dst_buf_done_offset +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xf95f8fb4 amvdec_dst_buf_done_idx +EXPORT_SYMBOL_GPL drivers/staging/media/meson/vdec/meson-vdec 0xfd86fc70 codec_hevc_free_fbc_buffers +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0d4904b0 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0d698821 synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0eee79b8 spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x12b696d0 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x15317655 spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2e7e21d7 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x39a8351f spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3c983adf spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4862702e spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7c9b9f54 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8181ceec speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x995a8549 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a3ff700 spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbc2f692d synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc3512881 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdfa57e56 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe5dc1e81 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf86eaa9f spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd447b60 spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x12dd562b host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x311c701d wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x78efecdc chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x8dc5d28e chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x9cda3258 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xa63356ed wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xd62549af host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/tee/tee 0x009ebcde tee_shm_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x00b00383 tee_client_close_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0x0cf3779a tee_client_get_version +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1042b2e4 tee_shm_pool_free +EXPORT_SYMBOL_GPL drivers/tee/tee 0x1be24e43 tee_bus_type +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2936fa0b tee_device_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x2f0cd45f tee_shm_pool_mgr_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0x36776a27 tee_shm_get_from_id +EXPORT_SYMBOL_GPL drivers/tee/tee 0x3c8361e6 tee_shm_get_va +EXPORT_SYMBOL_GPL drivers/tee/tee 0x4792d1e6 tee_device_unregister +EXPORT_SYMBOL_GPL drivers/tee/tee 0x52ccb4af tee_client_invoke_func +EXPORT_SYMBOL_GPL drivers/tee/tee 0x5c4749b1 tee_shm_va2pa +EXPORT_SYMBOL_GPL drivers/tee/tee 0x652b889f tee_get_drvdata +EXPORT_SYMBOL_GPL drivers/tee/tee 0x78fdcc0c tee_shm_pool_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0x85fd9922 tee_session_calc_client_uuid +EXPORT_SYMBOL_GPL drivers/tee/tee 0x9de0a29b tee_client_close_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0xa228cc54 tee_shm_put +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb6f1ca14 tee_shm_pool_alloc_res_mem +EXPORT_SYMBOL_GPL drivers/tee/tee 0xb99b2fd0 tee_device_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xc3026816 tee_client_open_session +EXPORT_SYMBOL_GPL drivers/tee/tee 0xcba3ee5a tee_shm_pa2va +EXPORT_SYMBOL_GPL drivers/tee/tee 0xdc74e855 tee_client_open_context +EXPORT_SYMBOL_GPL drivers/tee/tee 0xe0574c1c tee_shm_alloc +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf04f7e85 tee_shm_register +EXPORT_SYMBOL_GPL drivers/tee/tee 0xf6258e68 tee_shm_get_pa +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x004f2c8a tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x103018db tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x1d1590ff tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x21a31526 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x2acb7a66 __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x36521060 tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x3e365c98 tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x52201411 tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x5781b009 tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x613106c0 tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x68c0d720 tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x6ceee74b tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x78a1d499 tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7bc447d9 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x7de7c37e tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x86166e8c tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9fefce0c tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xc64da6ae tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe2697cd4 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe4a00660 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xee10c6bf tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf2a5743b tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf6012b32 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf67702aa tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x27896466 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb0ac1cba __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb4551539 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe6a83e26 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x1d83e5e3 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa608c2b2 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x6029d702 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xa44e4c59 hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xdc64a6c4 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x567d755d imx_usbmisc_hsic_set_clk +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x6f384856 imx_usbmisc_hsic_set_connect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x8d37a3f6 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd4dcee7d imx_usbmisc_charger_detection +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xdfce3620 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xe507485e imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6cb86c9f __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa685fd7c ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa96e0996 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xaf4bd2bb ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc86659e8 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe9e0254e ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x00c3fcf9 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x129ba656 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x3d95fc1e u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xb451f2e8 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xb8e75632 g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xd2260347 u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0589e2f8 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6aa5f027 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x82d89381 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8acd8a41 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa2af4723 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbb1c5027 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbbc47c7e gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbff15da7 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc3b4c1a9 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd4678f9e gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd74337fc gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd9aad6bd gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdbd1b2a4 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe16c0e34 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf630da44 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x12748ad4 gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x3b6d50f6 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x3ce8fbcf gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x6d6739af gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x77dbf841 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xa18ee0bd gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x1603a82e ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x3df5db03 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x98baa4b3 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x060ae916 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x07cb8f23 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1581c4cc fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x19bab260 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x32a22877 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6e1b04 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x403d2da1 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6b44239d fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x87f2491b fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8c0c7f95 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x914a3990 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5e4a93a fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb8d45031 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe65b1ff5 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1952f2a fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf534e1bf fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xfcae2f43 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x27c5522c rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4a074e6c rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x705e41c1 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x77768fab rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8eb65a58 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x99350271 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9e705e3d rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa4a10bb6 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaded0a8e rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbf7b08f6 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcac79b67 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd0446409 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdb3612e7 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe03747b2 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xeedc1021 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x01795e01 usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x02bd1963 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x119f0f56 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x128a6325 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x245ab9e0 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2741fedc usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x321ee4b8 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x32be0e1e usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4ff195ab usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x539a8130 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x562376de usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c58422f usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6408948a usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7883e9a3 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7bf49719 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7e23ce61 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x836c31c0 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8564ac03 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x86a0c462 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x89ee70db config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8c678442 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8da994d6 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x982cb36d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9a1ff7c8 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0c15aa8 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa20b8c4b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb90e6881 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbcca1f87 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc79a56ff usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdada31d8 config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe0cfa325 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd50aac2 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x0509cc1b udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x074a115d udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x19189102 free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x3787d92a gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x4d9ebd5f udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x9901ea39 init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xbbeb91ed udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xd8e4278a udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xf4e1eeb9 empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x463191e0 renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x8563f41b renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4faf9b8a ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xb4397673 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3c0d857c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5cbec5d0 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x61333a74 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6656a14f usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x72bd469c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x97a590b4 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x98638913 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9d915616 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xca25f343 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x40c5be4b am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x38126c43 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x351eeb82 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x061860ed usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0be5e6bd usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x26e2b9fc usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2bc9eaab usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3229d17b usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3911617d usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x40b5a043 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4e2e9d52 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6245d053 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8451a5e8 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8615b641 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x956d3fe7 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9739d893 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa6806cb6 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb6878de7 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc703122d usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcb0c6096 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcd3d76d3 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdb11ff72 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdeb23507 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfac86206 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0xb12881f4 dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0xef8c9049 dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x9d93cf79 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xaea4824f tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0826fb6a typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x09462b12 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x143a2b2b typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1eda6ef9 typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x21e5ea3f typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x310b4efd typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x35e212e6 typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x413bf06f typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4216f4d7 typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4c1ccf19 typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6b5d3b96 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6eb38360 typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x797c310d typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x85d65bc3 typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x8f6ca37e typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x927d6a40 typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9c8fff21 typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xab2de116 typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb385fa58 typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb3884dd3 __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb4c51620 typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xbc720f14 typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc293f191 fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcfbeb489 fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd05debc9 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd1cd5039 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd36dd447 typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd8d9e77d typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe77e44fb typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeaf69047 typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xed7f2bfe typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xef16cad3 typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x1493ecea ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x34157e02 ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x4e44281b ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x6a78057f ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x6dc3b786 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x878ebf09 ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x89911bfb ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xbea36a89 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xd3b34a43 ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xe4967951 ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x21ad65bd usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x244ad75b usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x30d22bf5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x73c66484 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7459b52e usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7bffa7db usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7e4e1b9a dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7f94d370 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x992a9c2f usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa10fa573 usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa1410c89 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xabad9e80 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc414ef53 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x04d938ca __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x1109b2dd __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x5906ec47 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x6ad54a43 vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x8b805b89 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0xb9dac391 mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x358474b0 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0x7736ebfa vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xe79beece vfio_platform_unregister_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform-base 0xfb01be17 __vfio_platform_register_reset +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x43c84d35 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x44b83e00 vfio_info_cap_add +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x4d17c766 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x51ddbe9d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x57d2c63b vfio_external_group_match_file +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6801ef20 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x76581380 vfio_iommu_group_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x94de8f96 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa4b8a730 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb12a9a9b vfio_iommu_group_get +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xd3177d79 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x074b52b6 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xa6951a3e vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0098dd11 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x00e44d94 vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x06312784 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x137070a8 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x15e5b151 vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3d0caeb1 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4820bb2b vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x487788b9 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x556619d3 vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x56772c50 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61551b97 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61daaf13 vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61e59109 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6584b83b vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7862c08c vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7cc60ca9 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x81c18733 vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x824e178f vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x873ccd3c vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x88712b8d vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9b8351a1 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa7016d09 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xae329d4d vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f43a29 vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1f86d45 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb38568e5 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc40f9ba5 vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca0d8b84 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd45b1dab vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd5d657ed vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdc6b71b3 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdf9c9cfc vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2791824 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe5ac0e73 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe6751334 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe6faff6e vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf268fcc8 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xff31a11e vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xffcf903a vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x428c0030 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x66c7f96e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6984523c ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa622de3a ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xccb9baef ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe724b86f ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xeeb73b61 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x8f30c2c9 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x29e67204 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x2ae1d2af fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x14c3611e omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0x2c835784 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xae8aec1c omapdss_of_get_next_port +EXPORT_SYMBOL_GPL drivers/video/fbdev/omap2/omapfb/dss/omapdss 0xe0268e4f omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xdd4f98f2 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xf5c8206d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x13682374 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x165d89af w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1dbbe091 w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1e27503a w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x20235829 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x322c992f w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x34119e57 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x425827d5 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x946b60a4 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x952de10c w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdaf69600 w1_reset_bus +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69e9340b dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa49fe256 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xada0734f dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0ad0d6e6 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x47c6213c nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5ca9289a lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x877ca98e nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbfcc3087 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc2ab5da8 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe5f1aeb3 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x014f114c nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x062ff617 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09732d28 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b739dab nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d38935a nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0eceb30e nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11249374 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x120c4381 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12ba0c89 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12d17716 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1443d396 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x160dac61 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16c82d54 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x172fd970 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a0f573d nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e62c779 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ed99ba2 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1eda497d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x236549c0 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x238f2457 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x280bce91 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2aeeb2fb nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c0125ea get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d571d44 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31cfde48 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3219c358 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32b33158 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x331160af nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3357d99a nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35191e5a nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x360ab53e nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37c740b6 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37c9f4a7 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39b62442 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b2e3471 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3be5c15a nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4558b725 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x472729dc nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x479de583 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48ef8929 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x499886cf nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d601a7a nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4da8f75f nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4dc51215 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4dd00394 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e55c438 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52d1364f nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53d1142c nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54ab882f nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54ecd140 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x558aae95 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x562a9621 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bbe8cc2 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d0e24f4 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60e9de8d nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61e0c855 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63e14e3c __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6659f307 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6673d1f2 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67040ac1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b0f57e7 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b400b76 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c33aefc nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e8d02e3 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fc2136a register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72afdf2e nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74b75530 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77744b3c nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x780a113b put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a4a03c8 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bd72bf1 nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7cccb074 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ebf4ace __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f290241 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x801984c3 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x838ee9ca nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8523da29 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86f7c33e nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87e19b43 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87ecefad nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c7c1def nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fe911bb nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90b380d0 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92aac36f nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9455d691 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x958276aa nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95f68b3b nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97d3d390 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x991cad9f nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9941dbfb nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cf4a5ec unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d81e7c3 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e332e99 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ee0c16d nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f385f43 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f613c7e nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f6f3a5a nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa02a32e1 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7d3d8a1 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa83935ae nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8f16fdb nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab4b0349 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab94d5ed nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabee7d06 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade50485 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf5b138a nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1d6cb0c nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3af93e4 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb87dac7d nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9b97b75 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbea103a6 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2857a79 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc42ccb6e nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc84068f6 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf800ec7 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4c262a1 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda9fd8d1 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc79aa08 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe01543d7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe08ccf8d nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe12426dc nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe36dca85 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe477ff2d nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5828a60 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9171e36 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea767c0e nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea7f4066 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5766123 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6155233 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf696fe9c nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfda512d5 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x61c05831 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x051daa0a nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06583f0e nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c7a35cf nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cad9ec7 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e3f1952 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1058d974 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x117fa6fe nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11efde54 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x182c4e65 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x183a81b1 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a51204d nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ca8c85e nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2864fb5c pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b03ec0b __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c652281 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2cf0aaba nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34be4c5a nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36751a61 __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e73f10c __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4137aee8 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b8d599e pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5017d28e pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5205f7ed __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x58fd100d pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x622ae188 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6669ace4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67048008 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6beae352 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6de441e1 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e16b52a __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7650ae21 pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d5ed152 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d996424 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x82776da2 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83a2f22f nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8443a05d pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x84ed21f0 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x85d43602 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8812c094 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x89b6446d nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8eb24a49 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99092fc7 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99ea07ee pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b9318c8 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c50c3e1 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c708909 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d162943 __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02a57b8 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1c01085 pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa87e2427 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad9bdfaf nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb018dd04 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4895436 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4bf2e57 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb85de48c __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc151e45f __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc204b9d7 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5fa4d46 pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc71be163 pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcac9675a __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbf209db pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd1b58f9 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdfa9d8e nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcef784a1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfbbd29d pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd317d1ed pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8bf609d nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xda955d60 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc563fde nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd687c08 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde5fb5fe __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe15fb3a7 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1eca9bd __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1fc9ad4 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe222601b pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5a7264c __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeee683e5 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf67d5390 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf722d765 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7ffcf29 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd2a1e38 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0fbfc1d0 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x953ef589 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9a1bcdd2 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa96e90ce nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xbe384399 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1cb231d0 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x364f639b o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4f874c2a o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x50478854 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x65fd8272 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7a80c4f6 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xad9e2913 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc5535d0a o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfb0839f1 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x600bb756 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8163e947 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb7855e2d dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc9db146f dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe431358d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xea8c28b1 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x6f378537 ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb794aaa1 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc7b1ba10 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd9fd2736 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb542cba5 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xf31bbdd5 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x3210c549 unregister_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x9e9eaec1 register_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x9e026750 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xbbfa9300 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL kernel/torture 0xfe0c0dcd _torture_create_kthread +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0x955ee96c crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x39e8fa4b poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4370baea poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0x4a833012 poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x4e70c4e4 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x514a6250 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x021957e1 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x0f8a2742 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xd4cb6873 raid6_call +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x2a739cf3 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd8d074a8 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x0b45243f garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x80dbb48f garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x99594bbb garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xa88a5faf garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xc33b80fb garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xd829b57e garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x167b7e72 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x204e8516 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x370148ff mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x3bc9aec4 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x665c8616 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x8f0606a0 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x260e6042 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x9ec51aa2 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x40510df2 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd121c0e9 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xa8c7403f ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x228d151d l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x39d5a8a9 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4f6fcbd2 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8140b503 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb7d5679c l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xce4f8ea5 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe0595b83 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe3e45cca l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfcd7f183 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0x49ee08a4 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1af56123 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2206ff3e br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2b31421e br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2c458eb4 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2fd00df6 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x518ddf35 br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0x57914edc br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8281fe45 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8a236fcd nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9be41b09 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa3915833 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb3afc7ff br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc0dadbcc br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc23346cd br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xce46889a br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd5c9686d br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xddbd331a br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xed967c38 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/core/failover 0x44044a80 failover_register +EXPORT_SYMBOL_GPL net/core/failover 0x57c0436e failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xffd04fb9 failover_unregister +EXPORT_SYMBOL_GPL net/dccp/dccp 0x07c72412 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15885875 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x190cc24d dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19c701a3 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1fe1075a inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b2ab10b dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e6c4c95 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e8f7e39 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3dcb3255 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4177ae32 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b16c309 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4da5d23a dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4df02dec dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e30c7dd dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x77a25a83 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7cf0eb5c dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a8793a7 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa04ed220 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa43e19f0 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa43fc129 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacbe8961 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb5c46489 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda85ec93 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdb8f38f7 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdeaedbc6 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe258e494 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9a09475 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xecee1405 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf0784aa7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf55ef99b dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5d3de15 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf9be80d9 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfaac65bf dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfaf32f8f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2a1f4734 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2e7e4636 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d8b53e5 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8dfc1cc8 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb72b639c dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdf23a7a3 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x00bbe252 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x01d29e5c dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x04232d0d dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x094708ab dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0b5603d6 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x13a56c92 dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1951b89a dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2141c459 dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2a50fc4b dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3d5b8197 dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3f01bddd dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x48cb1c75 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x74110dc3 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x74e9640d dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x92a95a0f dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x9d99dcc3 dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb695f42d dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb91c4bd1 dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xcbb8b1a5 dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xde1a7a16 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe3d3b8ca dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe96073eb dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf37a7d07 call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x34434825 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x37079ce2 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x5ffe7687 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x73bd75e4 dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x77f592bb dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x82bbe5af dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf81f27db dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x43ca49ca ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x79551251 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8dea7f5b ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xad00bf03 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x72323b7b ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0xe218ae10 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x0894f884 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x26e7cb9e esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x3046d2b4 esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb882ac4e gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcd904da2 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x290216a3 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2da1af9b inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4070697c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x57432962 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8475a869 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8b9ec063 inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa980ab0b inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb9e12094 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xff8ff858 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x49fa1a7e gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0327f97a ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x03968173 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0c4f9481 __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x14106fe6 ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x151dc6ef ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x19615dfb ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1ccffca7 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1f125dce ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x43a7715b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x56bc2980 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x87bfe026 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb2f65d1a ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb7dde816 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc0daebfd ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc979f858 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd4d5b8e4 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf44ea5c2 ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xd62750fd arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xb7f0ee88 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xeb09303a nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xcb8583c8 nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x6e1ec1bf nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7fda907d nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x985410d2 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xbb2ab25b nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfb27aa44 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x450f5154 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x107b9e86 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x4bde26b5 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x8acdcea1 nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x13ad133f nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x3a7d9b08 nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3d0061ff tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9aa1dd11 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xba4906f0 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc87408fc tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfb2a9e55 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x34c0d54c udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4ea52989 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x70bc1ce2 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x812b2623 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x83ba8ec4 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xad037f1f udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xbc33e62f udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xc372107b udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x281dee94 esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x8ab400b5 esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xfdfd5466 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2c9fda5f ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4b3818ba ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xda4a5913 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x303e93db udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xeec7882f udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xc568f290 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x1ab8271d nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x7b698df8 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0xe634e7c3 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x044a12ff nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2dad9d5b nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4e74cf30 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9fd93d3a nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcfc38506 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0xc268f03d nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x23be0d7e nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x839944c8 nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xcfc0889b nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xbc479c90 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xbe808c86 nft_fib6_eval +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x04a7042f l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x11be41b8 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d0f73b0 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3c2d7de4 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3d8fe94b l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x442f1648 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f37b4f2 l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x676a2e3e l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6ca10e01 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6e0ed76e l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x778dd0bb l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8ec244ff l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc6a6a9a2 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcbc27021 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdb143684 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf742e06c l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfabb3f63 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x8ae231b5 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x23d13d38 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2a67a5b6 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2f939565 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x48f3cf3e ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58620124 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8c19ddca ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x91036dfd ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa3fe5db3 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbbb34b8b ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbbd3e495 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc1ee20b2 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc9a391d5 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0eaa1c7 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe136a06a ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xec4f2c0e ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf37b71b0 ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfab7199a ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfe04ec12 ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x433f36a4 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x6385c940 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x76d0b6c2 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x9aef60cd mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xc5faaad7 mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x15040716 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x211690e0 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x33ff5e3f ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x363e6cfc ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4b28adab ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x644fba58 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7c11c888 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7d2f03f6 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7e7d9d8c ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7f7c3ddd ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x82d980a5 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8c66d036 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xab19c915 ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd928bc44 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe1ec9486 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe42f9f85 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf028d8c4 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf4d5e556 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf89b6c61 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x3d85a6e3 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc42f72ff unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc5e688a5 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf3aa31b8 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x046f810c nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x268a4802 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x508ba8ac nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6a1149db nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6de65d76 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xbe03a217 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xc5f24f6f nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01f811bd nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09691fe6 nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e1c4506 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f93419b nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a1ef3a9 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e24ae8f nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e98c7f8 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24fd90df nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2597da45 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e341675 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x358a98aa nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x368b2eea nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37649473 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e878a42 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e94b851 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4269bcc4 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x473e385d nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x496327cf nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c02e3ff nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ea258d2 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f046961 nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5158802b nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5194473c nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5257b9b0 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x599f8ab4 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a909749 nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5aa974bb nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d03968b nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x65035cf4 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6548af77 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x668bf30a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69b881e7 nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69ebb78f nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a3d3d68 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6dbd7d55 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6df7e0e2 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6fdd1eb5 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70b59cef nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73d66454 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x763effc6 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d9c662f nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7eb3b6e4 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f765044 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x83b022d8 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89fcaeb1 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b478a7f nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c6e11f4 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dd07851 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x956431da nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98d87c83 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99080ea8 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99a52cd2 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ca48d55 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa00a5038 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa21d7911 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa279edd3 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5e5239e nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad427c93 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae199cd5 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7155d61 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb1c360a nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc16317d2 nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc37a83bf nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3d4d29a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4929193 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7ec30da __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd25b2aab nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd30665a7 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3c9b65b nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9a445a3 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe065687b nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5362799 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6691072 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6af4369 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebd4413b nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed576c58 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedd42357 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf03ac5ed nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf47feed4 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf70274f0 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9904e04 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa47a65a nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb6b3a57 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe1aeafa nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x88b00729 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xa997237d nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x7cf8e959 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0692fbfb nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x197e9a15 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2d6269b5 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x49e60f28 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x67c4f76c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7c3f9ec9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x81181752 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xab16cc22 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdcd79338 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf3993e71 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x1bd24ddf nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x017840c5 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x328f52b2 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x94a4fe72 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfafc02ee nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1b05ab31 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1b93479b nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3135e347 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4de015c2 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8f312d87 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x904bb446 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcf0e66e1 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x88f20873 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x8ad296dc nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x80970a26 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x99e19fac nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xd8a23eb1 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x042ea7aa nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1273f35c nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x17e2d4e1 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x374ca38d flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x3879c7be flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x456c9cd6 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x59377930 flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x5cca24d6 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x689d57ef flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x78f769c8 nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7d205fbd nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xba1578d6 nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xbd12de57 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd661781b flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xdef23f7c nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe0092127 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf499d938 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x0ce3de26 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x20786546 nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4f75a2bd nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6815d14b nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x81837217 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe268af23 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x00e7837a nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0ec2c015 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0fbf15c9 nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x24aaa59b nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4c930971 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x66d27c36 nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9da93164 nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa8246a0f nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa8551600 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xafc53a0f nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb9316e4a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbbaa97e1 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbf73ca93 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xde0b5c1b nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeb19ff65 nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf05d3d9b nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2be69342 synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4ec84098 synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x75274777 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x78a906f7 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x799a3c33 nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x9365a006 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x95f68c6f synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc0a34183 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xcc1e3ac7 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xe9f601c3 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xf0bcd0fc synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x13be3c99 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1ba932c4 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c1a1531 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c2ee0f8 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2dfb7ea7 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3cc08081 __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3e4a4a58 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x453351eb nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x491f958b nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5c40234e nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6c93d765 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77c15342 nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x836db89a nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8737ee97 nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8c46ae60 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9649c02a nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x98605d0b nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa02ba166 nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa043f540 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa9ffc821 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb084426f nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb0981ef8 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb77e8cb2 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbbceb25a nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc38063c7 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc76b1c38 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcbc0bea8 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xccf73660 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd0b983a7 nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe11f60ad nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe70bdaad nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xea14d24b nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xecfc6fba nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf598a460 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf6498a4f nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf90e23fe nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x05a8562f nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x73c73f88 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7ab8aeb4 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa9844d3c nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc50a4640 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc8b9b0f4 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x2bb27514 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6ed79d56 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xd055caf5 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x119ec1e9 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x7e9613a8 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x0ed1c157 nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x37943155 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xd440ac87 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xdb034fc4 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x70c01ff7 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa894ae52 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xcd68baed nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x001de8d9 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x218016b8 xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2ff7b321 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f1ef70a xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x57f2cb7d xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x65b29d55 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8d475b99 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x95016dcf xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa045edbd xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbd6e1ed5 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc4f1f43d xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd08e1e35 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd69cdffe xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdfa688c3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe62edba7 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xee79311e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00de9b6b xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x659f40e9 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x3953fc5c nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x78d0e1b3 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x9125defc nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x103a45ce nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9cbd119e nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xe37e37f7 nci_uart_register +EXPORT_SYMBOL_GPL net/nsh/nsh 0x168d0908 nsh_pop +EXPORT_SYMBOL_GPL net/nsh/nsh 0xba6559e6 nsh_push +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x277550f8 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x51e1e78c ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x75dfdd48 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa43e201b ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb83c9764 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc98b3067 ovs_netdev_link +EXPORT_SYMBOL_GPL net/psample/psample 0x0efcb82d psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0x1a3c2aca psample_group_put +EXPORT_SYMBOL_GPL net/psample/psample 0x46ee5e0a psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0xfd49819d psample_sample_packet +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x3bc25b45 qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x82419ea6 qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xa061c13f qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x182748a7 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x198377c8 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x1d3ecf6a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x23ed46db rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x253114a3 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2a3a34cb rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x3724d207 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x38c4440d rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3ee86a11 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x52e0da91 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x674be5b8 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x67a41334 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6a9a298c rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x727be2e6 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x7c4c71e8 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x8d1e19e2 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x8e0a0323 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x94e21823 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x974643ad rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xa300d72f rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xa375d88d rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0xa39cc852 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xb3a2f443 rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0xbee68517 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc5970849 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xd811c66f rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xe7ff8359 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xe9c9115f rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xf4c257e8 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xf9d41124 rds_conn_drop +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x918d713d pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xa7942b1e pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x7db7d103 taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xd765a904 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x9d104a81 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0xbc1ffda6 sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0xc91b98b2 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/sctp/sctp 0xf7761d3d sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/smc/smc 0x26c36c27 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0x30d9cd2c smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0x3caf45c3 smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x48ab245f smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x978c00b8 smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0xbfb0e490 smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0xf0d288e6 smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xf2092837 smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xf3e7fe15 smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xf48b2ab9 smc_unhash_sk +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3baae50d gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc034bd23 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xda0960b0 svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe99de665 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x009a6627 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x017cb2e9 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03562c45 xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x043898d4 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x054623de rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x055b225e svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0582dd88 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x067f44f3 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x070d3ebe svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08276f1f __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x089975ea svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08c094fb rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a811398 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ad67f4f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b84fea0 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c0551b6 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c28008b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e8e1399 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ea984e5 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ed345f8 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ff91b83 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11e5c0a5 rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x124d3987 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c693f9 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1301fb03 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13c55615 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14f52b8a xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x152a762f sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15a10c4d rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x160f8caf xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17be6043 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1807e7d1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a5e6ea8 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b50699b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c77e17f rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c80f4e4 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cf68baa xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dafac64 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f90402e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20a08fbe rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22f4c55c rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2655114d sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2889147f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aa14983 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ad64d2b xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f82dc11 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3246405c sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x339c6e80 rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35c6664f svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35f3e597 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x364a0d03 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37b97d77 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37d1849b xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e562ec xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x395e23b3 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39a6915b rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d7252ef xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e0c1826 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e98ca91 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ecdcc13 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4340d2c9 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4472291f svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x463727fd xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x469308d1 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46b9d1b8 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x497cc026 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a704187 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a9f9ec4 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b23ae8c cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b9c7d0c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bc961ec rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d6651a3 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51d326ae rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5355583e cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5399856e xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x559e2caf svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x572260e3 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57280cbf svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5793c1ab rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57c57b3d svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x586e5bdb gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58708542 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x589d84be svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59641e35 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aa0b043 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5aa414ac rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b4c4dd9 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b6c8a54 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c1cdb66 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c9602c8 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfd4551 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dc0ff66 rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f2a3553 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b22c52 xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60b7936b rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60fb7bbc svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61d76706 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x624f7fea rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x629218b4 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x633acd98 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x634b97c6 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x635f21a0 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67505c16 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x677d8715 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6787af37 xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68552790 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68d88beb xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68f86141 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69063983 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6992619b svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6adc482c svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b1cc2ce sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6becab38 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72bf35da xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7351dcc7 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76fa8301 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7975637f rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c49bad2 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c562416 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c664e24 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c6b255f xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81c914b8 xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81cf39a4 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83ba0c6f rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x840bb968 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8593a0bb rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8659d4d4 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86e97964 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87267340 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87d81152 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8949d7d4 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a632998 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d79843b cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dfc7274 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e1aaf50 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91310399 rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91623f59 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92100157 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9224516d rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92c2291b auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x948e123b cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x951a3595 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95af7b3a rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x978c2f2b rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98e73609 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9986abd1 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ae25de4 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bd0ebea rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bfe57f6 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9deab6fb rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1b623d9 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3080cd3 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa49027c9 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa58a39dd svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5f17e1a rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa602e510 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6115973 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa88566c9 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaaa9d3e4 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac2a6c4a svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacf3de78 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadf774a1 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf87a3f5 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb097e780 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb114bc81 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2739436 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2b08eb2 rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7feeecc rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb807b3ff rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb887d601 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8caeae4 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb92404f6 xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9bb3fc1 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe084068 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe240dec rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf19788c svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9613c0 xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0905286 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc169d947 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc440e7a6 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc498f9c1 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc63151c3 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc77213d6 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7eaf0ca rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc87ae345 rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb0f17a7 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce046657 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf34b6b4 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd265c9fe rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2d1a44c svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3101aa8 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd395e7e1 rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd42c36c4 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7a56e59 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7e93323 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9f267ab xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda5af0b2 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdba33c92 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbec4aeb xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc71197f xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe141e30a rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe60d7849 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe770504c svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7e92bad rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe95c348f rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea503a7b rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebdf6294 svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedf22013 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee59b6b1 rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeef2bb87 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefe1ed89 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf12060b6 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf208f7ea xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf334272f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3b26d6c rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4fb1c33 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf69c99d9 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf772e0e0 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf790bede xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8021e2a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf93e6279 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa22b394 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa54cad6 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb3ac8dc xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc0d97d5 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc2eeaf3 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe29861f xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfef03f84 svc_create_xprt +EXPORT_SYMBOL_GPL net/tls/tls 0x4d913d08 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x633553b7 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x636d4e43 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/tls/tls 0xdf96691f tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0b880bc9 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2328bf90 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x33ad70fb virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x48abc5e0 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x547224bf virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x579fce3f virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5afde5bd virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5da69d04 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x65a28bd3 virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x66026e10 virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6e028bf2 virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x74f4ea37 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7b376e57 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x84c9b496 virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x86b048ff virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x86b42af4 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x86ed09d8 virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8fe3e4fc virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9b1979da virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa0535414 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xaf5a250d virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xc630abcf virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcb2e611d virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcf3896ba virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd52d7ddf virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd64249a1 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe88979fc virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf2c096d8 virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf6b79886 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf7a4d570 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfc133206 virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0149af1c vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x049dffae vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0956ad80 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x10fb755b vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x223af703 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x233d08e1 vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3b435a14 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x44420515 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x49c0aac5 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x60460290 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x634ddd7a vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x74e91915 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x77f446ee vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x780c29b1 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x82d5f095 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x83b4e1c7 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9edf7e77 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa3a107ee vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa6b2d0cc vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xad7d8b22 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe9dd8ddd vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf4acf0e0 vsock_add_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x30eba272 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3e827b57 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x61290cf5 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x615e77c1 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x737b839f wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x766c792d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x985b7032 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa0095acb wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb017775f wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xebce557f wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf3e7b1ba wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf80e0e2d wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xff8756a4 wimax_dev_init +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x173133c8 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x198ab025 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x28010229 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2a171e70 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x37c3325f cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3b36a0c5 cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3d3cb5b6 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x41e76a28 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x43fcea90 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5958c328 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x781a69b4 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8f33fd75 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9434b7b0 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbf4b5ef0 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc5364195 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd0143b37 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4a590ced ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6990f19d ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7e7d6455 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8310a44e ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0xe1c16dec snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0xeaca3d90 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x02a41789 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x14372258 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x32f938cd amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x48284f17 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x637f17e3 amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x6fddf618 amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8587f574 amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x87abfc5a amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x937af3d5 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc8a6b1c5 amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xd08ef93e amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xd7c0b1d9 amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xe8746453 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02352656 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x043661a5 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a5d1782 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0ab885b0 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d932936 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1059e1ff snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x11aba1a0 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x135525a0 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13b483c0 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14512f19 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x182b5459 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x18902dcf snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d4ac4c0 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x215216a7 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x24c773cc snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x262570fc snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x26d62ba2 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b613509 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2df561b1 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2dfa82eb snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30e785ee snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32e553c3 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x36d3cadf snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38cc712b snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bbf83f1 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3d5448f2 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ea05b67 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41cda32b snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42a8f88d snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x454b1bcd snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x45bb91a9 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49254094 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4bf1a205 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59771f0a snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ce2d0f9 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ec454b3 snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f565637 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f6f84fa snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62f45cc8 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67f91430 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x697be1dd snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6fc1ce21 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x71aa40de snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x71c7abef snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7510e9a4 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x758a265a snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76233b4b snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x766c8b9f snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x80b5758a snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x81816556 snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88287291 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x885cb50b snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8c2908cc snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x915f408d snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9b79eab7 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9cba4561 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d2b17c4 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb188ca31 snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb73b31a7 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb88f75a4 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbde9e789 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9263df8 snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9ca4dc0 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcdfae11e snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd0f305a8 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5610e77 snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd57aa253 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd622c005 snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdded7e93 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde87fd0f snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe08eaf9a snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe0e197e2 snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe19c9817 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe44af26f snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6b6bb9a snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6c3b8e6 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xecb566f5 snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeedda50e snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6b4632f snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf94a04c8 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0x080c546d snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0e450eb0 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x89a0401e snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xcd0bb7cf snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd6951426 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xdd33b6e5 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe7e7d459 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x006a8ad1 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01227485 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x028c00ea snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03930991 snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06a24e7f azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b5600cc snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d28c740 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0deec9ee snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee8e068 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10cbd941 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x129a8120 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16559fd5 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x171bd632 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17cdae23 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18b58b38 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1acfde6d is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ad9e7d0 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b2076c0 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ccfc8c6 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d263d02 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d9e3371 snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2639a20e snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27e3aa53 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bbc5021 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c53fd32 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31b670e0 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3542fa83 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38c67bed snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3bc85963 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d483dc7 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dc0499a snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e113df6 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eb7ae5e snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x418e9607 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42e6cfb6 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4599b3e3 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46626554 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4792cc84 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48fb58e3 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c49f111 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fbdef54 snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fdb512c snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5653c657 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56554111 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5999daff snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a7f70c7 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cd20800 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d57fff2 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66f39c48 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x693c1486 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c1df4db snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c81e9c0 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d5227cf snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e324c82 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e8593c9 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f010d4d snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f95a7a8 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7018ed20 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70742c2a __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70d1789f snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75207a1c snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78523d57 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c5b7ad8 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e33d5f9 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fa4dfe8 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fdd638f snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80823cac snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x839d28bb snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x848d65b1 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85b496f5 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a644e5f snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d2c7b7d azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f76fa2d snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94d36d17 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96f1ed5b snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x971da50e snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9789f21c snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97b8b044 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa119c76d snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4b8d7a0 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa78fc852 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa7f7cc6 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaae6e4e2 snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabf86097 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1502fb7 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2808ec1 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb415a5b9 snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc723f58 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe4a10f6 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8cc7cc2 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcafbac1b azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd021c29 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcde17b71 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd11b94bf snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd22a5aae snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd48c35a6 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd61683c6 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7fe7536 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9245d89 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda76b005 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda7de6f0 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdecfaf3c snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe227eebd snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3d55519 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe69bd00a snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8a656c9 snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9289b78 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe97d6bb9 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea42ed94 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebdc92a6 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec3e53f5 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda9d279 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeec3baed snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf26a8782 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf3c54265 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5590668 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf98f86d6 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc1e3753 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdce51f6 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe82976e snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff117422 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x022e2af6 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2e556934 snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3263a051 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x330bcc60 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x34b08d63 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3eb711ad snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4bda795e snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4ee2d239 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x64f47e59 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6611d855 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x67e98c8c snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6f19192a snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x71c9f8a6 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8093ed59 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x86d75a40 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaabb87c1 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbac3b79a snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc36c0b02 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd43210b snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe9c95f45 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1ef0a85 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf751ed84 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x33e91b19 adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0xc86f6921 adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x4c9890e8 adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x5507a5d4 adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x590b4643 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x617021af adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x68e1f7d3 adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x6ec29dd2 adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x7fad3742 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xccc949ff adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xddc265c4 adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xde6feaca adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x63fa01c3 adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x0276f746 arizona_lhpf2_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x15e4de83 arizona_isrc_fsl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1aa67a54 arizona_voice_trigger_switch +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x1aaec448 arizona_lhpf_coeff_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x25c2216c arizona_in_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x336891bc arizona_dvfs_up +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x339eeddb arizona_lhpf1_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x33df8b47 arizona_dvfs_sysclk_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x3e15838b arizona_adsp2_rate_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4058fa2f arizona_anc_input_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x441540ac arizona_in_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x46277216 arizona_rate_val +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4a97ac48 arizona_simple_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x4b124909 arizona_set_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x54f89f98 arizona_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x56182599 arizona_init_dvfs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x60625448 arizona_clk_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x61a6c27c arizona_lhpf4_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x69102a20 arizona_sample_rate_text +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x6a6f21f7 arizona_set_fll_refclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7276580d arizona_eq_coeff_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x729a5ef3 arizona_mixer_values +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x73e86820 arizona_init_dai +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7641c8c5 arizona_anc_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x766fe847 arizona_init_spk_irqs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7b06bf71 arizona_free_spk_irqs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7f26f273 arizona_mixer_texts +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x7fcb929a arizona_sample_rate_val_to_name +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x838e7dce arizona_init_gpio +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x889cd150 arizona_out_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8d4307a9 arizona_input_analog +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8e0b91fe arizona_init_common +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x8e759c95 arizona_isrc_fsh +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0x997fbb02 arizona_init_vol_limit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xa1326320 arizona_dvfs_down +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xa401fcf2 arizona_lhpf3_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xab4d845c arizona_rate_text +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xabde323d arizona_init_spk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xaff898fb arizona_output_anc_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xba53e42c arizona_out_vd_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xbc141289 arizona_asrc_rate1 +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xbc743880 arizona_in_dmic_osr +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xbefe91a9 arizona_of_get_audio_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc7979475 arizona_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc84825c0 arizona_hp_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xc9c29637 arizona_mixer_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xd0dc3aaa arizona_ng_hold +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdb8485ec arizona_out_vi_ramp +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xdfe804b8 arizona_sample_rate_val +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe15034b8 arizona_in_ev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xe28b1b3f arizona_anc_ng_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xec72c858 arizona_in_hpf_cut_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xf7c236cb arizona_set_output_mode +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xfbc7ae20 arizona_init_mono +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-arizona 0xff5a9f17 arizona_init_fll +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x5f021b5a cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xb8dc0758 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x773c3997 cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x7e4f6218 cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x8305e603 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x8bb31fab cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe2002184 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x64abaf37 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xb40accc0 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcaec9e2a cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x6ef71817 da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0x945e5d74 da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xbee4fad5 da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x0ea946e9 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xce883aca es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0xc49041b0 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x59e03e1e max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0xcfbd29f7 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0x56eb038f nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x5e69792e pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x5eb2f707 pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x9669df35 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x59d9d506 pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x76df7b37 pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x184860c9 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x952a6e0b pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x952f85ff pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xcc73e24e pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xd170485e pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xd96a27ee pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x51509b9e pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x69e8c549 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd5762276 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd9df9994 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0x554467a3 rt5514_spi_burst_read +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5514-spi 0xbb4583f6 rt5514_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x4f7df114 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xf72b3a68 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5663 0x49d83952 rt5663_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x0447acc4 rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x0783d676 rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x110746ee rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x11d3b2f5 rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x159cca71 rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x608ddefc rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x623b7480 rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x7afe9445 rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x91079df2 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xa7ce1e47 rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xbf781f7b rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xfae409f6 rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x26552c7f sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x587f5625 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x65236c20 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x81471bef devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa91ae198 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xbf9d063f devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0xd779ac38 devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xdc3a92e9 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xdccd82ad ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0xfebe4e88 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xe2c3384d ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x02ccd307 wm_adsp_compr_get_caps +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x0422fee7 wm_adsp_compr_handle_irq +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x1201226f wm_adsp_write_ctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x1cc203f3 wm_adsp_compr_copy +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x2c6bda48 wm_adsp2_set_dspclk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x3c92eeba wm_adsp2_preloader_get +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x42ed0e12 wm_adsp2_component_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x46118ee1 wm_adsp_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x47ae8689 wm_adsp2_preloader_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x4aee222b wm_adsp_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x4e57a0f1 wm_adsp_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x52c16479 wm_halo_wdt_expire +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x5d808113 wm_adsp1_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x80895f7e wm_adsp1_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x84dbde2c wm_adsp2_component_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x853f93ff wm_adsp_compr_open +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x914bf202 wm_adsp_fw_put +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0x9d911ce3 wm_adsp_read_ctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xa9277f81 wm_adsp_fw_enum +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xaa8e2cfd wm_halo_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xab0dc7c2 wm_adsp_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xc22cc808 wm_adsp_compr_free +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xc56d2bda wm_adsp2_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xce065340 wm_adsp2_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xdd3c79ef wm_adsp2_bus_error +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xea38ee07 wm_halo_bus_error +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xea779a31 wm_adsp_fw_get +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-adsp 0xf65d3af9 wm_adsp_early_event +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x1254ac50 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2b88cfbb wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x78084eb2 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x88c9f9e3 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x926cac29 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xe15198fe wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xe2ba9748 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xfa5b6a66 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x165ff978 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6a1cd770 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7a814602 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xfdccb7dd wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x1b31165c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xa2f1cef0 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x83a03f3a wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb3e307bc wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x8a4a30c7 fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0xa2307070 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x072cc77c asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x0f647be7 asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x34663147 asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3e4b1ef8 asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x5695a4b9 asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x6dad266a asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x85854fab asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x95b7f9b7 asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x9ffd661a asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xaba5807d asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd054588d asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xdadbbfbe asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe506b1ba asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe8864985 asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe939b88d asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xea55fb73 asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xeb9b83ee asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf0365543 asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x1293210a mtk_afe_fe_ops +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x1917fd69 mtk_memif_set_rate_substream +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x3473ecee mtk_memif_set_format +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x36eebdd6 mtk_afe_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4579d681 mtk_afe_combine_sub_dai +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x4d82fca8 mtk_memif_set_addr +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x52cff116 mtk_afe_pcm_platform +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x54a4a144 mtk_afe_pcm_new +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x5b5e11ea mtk_memif_set_rate +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x73034f7b mtk_memif_set_enable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x77360e40 mtk_dynamic_irq_release +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x88a19cdc mtk_afe_fe_hw_free +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x8c79725e mtk_afe_suspend +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x901f5c6d mtk_afe_fe_startup +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x960eb624 mtk_afe_add_sub_dai_control +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0x9ca9aaab mtk_afe_fe_shutdown +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xabf4ede0 mtk_afe_fe_prepare +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xaf1418c8 mtk_memif_set_disable +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xb5c3aad8 mtk_afe_resume +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xcfe43792 mtk_dynamic_irq_acquire +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xd4074d04 mtk_memif_set_channel +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xd6ff983c mtk_afe_fe_trigger +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xf8397058 mtk_afe_fe_hw_params +EXPORT_SYMBOL_GPL sound/soc/mediatek/common/snd-soc-mtk-common 0xff8b02b8 mtk_memif_set_pbuf_size +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x02484fbf g12a_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0x70799420 axg_fifo_pcm_hw_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xa6ccecaf axg_fifo_pcm_open +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xa9bcea99 axg_fifo_pcm_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xb9169867 axg_fifo_pcm_trigger +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xe3e8a3d3 axg_fifo_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xe9834c0d axg_fifo_pcm_close +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xf382965f axg_fifo_pcm_pointer +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-fifo 0xfe2d933e axg_fifo_pcm_new +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x107aecaa axg_tdm_formatter_event +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x2db27767 axg_tdm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x679cd72f axg_tdm_stream_free +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0x9734c838 axg_tdm_stream_start +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xb711a93e axg_tdm_stream_alloc +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xc9c5a3a8 axg_tdm_formatter_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-formatter 0xeaf1cae4 axg_tdm_formatter_set_channel_masks +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-axg-tdm-interface 0xb1f4248e axg_tdm_set_tdm_slots +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x3d190c6e meson_card_reallocate_links +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x497ab048 meson_card_i2s_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x6818697a meson_card_parse_dai +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0x90c7ac56 meson_card_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xa161a623 meson_card_set_fe_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xa207c7ce meson_card_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xcebd285c meson_card_set_be_link +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-card-utils 0xd808406f meson_card_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x0d9ef9fa meson_codec_glue_input_dai_remove +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x5c646967 meson_codec_glue_input_hw_params +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0x757cd745 meson_codec_glue_input_get_data +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xbb1ce73d meson_codec_glue_output_startup +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xbc9a4057 meson_codec_glue_input_dai_probe +EXPORT_SYMBOL_GPL sound/soc/meson/snd-soc-meson-codec-glue 0xbee23f4b meson_codec_glue_input_set_fmt +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x04e52732 q6adm_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x28421460 q6adm_get_copp_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x4d32cf32 q6adm_close +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6adm 0x79301e6f q6adm_matrix_map +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x369b6eeb q6afe_port_put +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3997e13a q6afe_is_rx_port +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x3b16d6e7 q6afe_port_stop +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x47955a83 q6afe_port_get_from_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x498d993b q6afe_get_port_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x5332304f q6afe_slim_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0x7df60063 q6afe_port_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xae809786 q6afe_hdmi_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xd4523c59 q6afe_i2s_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xe45246a8 q6afe_port_start +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6afe 0xfaf22370 q6afe_tdm_port_prepare +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x01d71b3d q6asm_stream_media_format_block_wma_v9 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x151ae9d4 q6asm_cmd +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x40299233 q6asm_run +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x5382edf1 q6asm_open_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x689e402d q6asm_stream_media_format_block_alac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x68db31e2 q6asm_unmap_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x6eb89e95 q6asm_media_format_block_multi_ch_pcm +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x720ce413 q6asm_stream_media_format_block_flac +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x7353d9dd q6asm_cmd_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0x857330c9 q6asm_write_async +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xa06e9828 q6asm_stream_media_format_block_ape +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xb4f98cb3 q6asm_map_memory_regions +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xc5a116a4 q6asm_get_session_id +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xcc4952e4 q6asm_audio_client_free +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xd599e50f q6asm_enc_cfg_blk_pcm_format_support +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xdbedfcd9 q6asm_run_nowait +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe060c0a1 q6asm_read +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xe1531577 q6asm_open_write +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xf0973788 q6asm_audio_client_alloc +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6asm 0xf40aaabe q6asm_stream_media_format_block_wma_v10 +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x7e52e977 q6core_is_adsp_ready +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6core 0x9b02ea0d q6core_get_svc_api_info +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6dsp-common 0x17142e58 q6dsp_map_channels +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0x5b75f756 q6routing_stream_open +EXPORT_SYMBOL_GPL sound/soc/qcom/qdsp6/q6routing 0xa7a64259 q6routing_stream_close +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x05be590c asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x078c746c asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x64b81f06 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xd4872a9b asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x78482eab asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/rockchip/snd-soc-rockchip-pcm 0xce76f9a2 rockchip_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0x14e9ba13 idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x2ea45d47 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x06df4720 snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x21ce51f1 snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xbe6ec49b snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xf855a03f snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-omap-mcbsp 0x6e7eae98 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-edma 0x91e2dde0 edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-sdma 0x6e73e215 sdma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/ti/snd-soc-ti-udma 0xf4e6cf2a udma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x26b351b8 uniphier_aiodma_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x2a9e411b uniphier_aio_remove +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x2bdc8f3a uniphier_aio_probe +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x33f2125c uniphier_aio_dai_probe +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0x9ac34820 uniphier_aio_dai_remove +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xd241b709 uniphier_aio_spdif_ops +EXPORT_SYMBOL_GPL sound/soc/uniphier/snd-soc-uniphier-aio-cpu 0xf35f4e75 uniphier_aio_i2s_ops +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x00074551 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b8df19d line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x156e0fd7 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2662e5f5 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3e5d6f6a line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4f64c5d6 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x684a8ae7 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x706e0e9b line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x71cb701f line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x72e56f13 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7de87c37 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x801e64d8 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x93c2652b line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xadb99693 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf7aa0eed line6_read_serial_number +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x00028c2b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x002ee959 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0038a13d platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x003d0cf9 usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL vmlinux 0x00446bc1 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x00541e85 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x0055e120 usb_gadget_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006726da serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x006c58d9 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x006c5ca9 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x006ffe23 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x008ce1d1 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x00d4e586 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x00ed35fd wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x00efbdad __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x00eff019 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00f2095a snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x00f91524 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0x01087715 iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0x0108803a bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x0111d90f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x0116eaa3 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0125d36c virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x0128b907 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x01306559 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x0150dcf4 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x015c68d4 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x017360d4 tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0x018278fc tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x018b3ff1 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x01a34d3f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL vmlinux 0x01c0e85d pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01d747f5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x01db599a net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f4cac4 mmc_pwrseq_register +EXPORT_SYMBOL_GPL vmlinux 0x020be0c3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x021e2405 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x0225578b irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x0249c45a seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0x024bc558 of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0x024db336 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x02560e9f fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x02581a03 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x0264cae3 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x02657cc4 mtk_mmsys_ddp_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x0265d3ce pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x026f3380 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0277ae54 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x027a580b fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0x0283441c usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x02853fd0 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x028bfb5e inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x02b24cd3 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x02b5fe52 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x02bab495 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x02ccf42b sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x02d53f82 devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x02ea61a6 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x02fea672 noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x031353c4 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0x03164d73 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x031e09ee security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03315f0c btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033c6695 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0349e160 of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0x036d8e9b klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x036e2d23 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x036f6643 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x03746d47 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x0375ad90 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x03798181 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x037e2186 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x037f2b90 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0x037fc60e usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x039d8bd6 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0x03bddb24 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x03c6b256 strp_stop +EXPORT_SYMBOL_GPL vmlinux 0x03d7892b dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x03da3c0c devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x03f50b09 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x03f86c2f snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x03f94125 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x0408c536 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0x040ba2d3 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x04127caa of_genpd_add_provider_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0419c7b9 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0x041c71fa shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x041f9cc8 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x0456995b sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0x046106bb iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046f359e of_overlay_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x0473a014 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x047f9c54 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048b71af mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x048bfb1c pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0x04917a59 snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL vmlinux 0x0492e898 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x04a6f637 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x04a7f6e6 devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x04ae4635 trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0x04b3affa mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d25697 hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x04d77138 pm_genpd_opp_to_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x04dc754a mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04e74adc sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x04f0e8e4 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0506f636 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x052ef62d usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x052f3181 fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0x05332c81 led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0x054bf778 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0553f69a peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0x05581963 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x055d3241 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x055fab44 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x05610897 of_changeset_destroy +EXPORT_SYMBOL_GPL vmlinux 0x056713e9 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x0569895f regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x0575db47 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x057a3881 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a69dbf usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x05c5c2fb device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x05c8787a pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x05d775cf gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x05d7cb48 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0x05fb4217 pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x06122337 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x06159839 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0618b310 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063654ad pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0x063eb003 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x0645ec22 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0650bb65 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x0660ede1 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x06658ade rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0668fa64 ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0x0689637c pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x0692f80c free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x06acdf9d devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x06b53bd2 memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x06b5a5b0 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06e1ec1f pinmux_generic_get_function_count +EXPORT_SYMBOL_GPL vmlinux 0x06e92aea nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x06ec03e2 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x0705b4ab msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x070f9df3 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x072a7ca6 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x075cb8ff fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x0764fb00 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x077128eb devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x0771d6d1 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x077fa2f0 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x07942db8 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x079b3a27 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x07a547f2 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b9e56c rockchip_pcie_init_port +EXPORT_SYMBOL_GPL vmlinux 0x07bd95b0 snd_ac97_reset +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07d02594 extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0x07f031b1 usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0x07f159f4 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x07f87733 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x07fa055e scmi_protocol_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07fb2a73 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x08033ed7 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time +EXPORT_SYMBOL_GPL vmlinux 0x0838015b cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x0861a29a bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0x086f1bb5 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x08aeed7f sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x08c56863 dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x08c73234 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x08c8a21e cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08e658ca ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x08e6df51 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x08e94300 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0x09035ed1 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0905f63c rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x091f3898 devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x0926e4dd cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x092a43fb driver_find +EXPORT_SYMBOL_GPL vmlinux 0x092d0b78 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x092fd517 of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x093147ce skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x09336e3e device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL vmlinux 0x094fb1a4 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x0956b414 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0968e26b device_match_name +EXPORT_SYMBOL_GPL vmlinux 0x09860d58 regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x09968a2a virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x099e694d snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x09a38632 of_reserved_mem_lookup +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09c70e26 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x09c94ca7 irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0x09d71719 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a033a00 serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0x0a1227c0 pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0x0a24514a dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0x0a27c995 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0a372e40 trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0x0a4450d3 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x0a462484 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x0a6add2a dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a6d7a53 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL vmlinux 0x0a940519 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0aa8e681 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x0aaa149f pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0aad5249 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x0ab9368b iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x0abc3d93 rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0x0ac26bc8 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0ac67d9c to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x0aca469c dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL vmlinux 0x0ae1c777 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x0aedfce8 __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b2970fe klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b33916e mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0b3b2be7 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0x0b4e6381 devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0x0b6f1dda snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0x0b779201 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x0b7a2a10 __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x0b811cea add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x0b8eee00 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x0b91180b ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x0ba53b59 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x0bb028d4 hisi_clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x0bb64f9b tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x0bc2d2f4 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x0bccbbaa ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x0bd7227e nand_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0bdc870c virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x0c149636 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c820f79 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x0c94eb79 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0ca23a1f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0cc0a704 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x0cca504f led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x0cd35449 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x0ce48a4b nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x0cece210 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x0cedc9f0 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x0cfad8ec blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x0d06189b clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0x0d0a4c4f of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x0d2c3d60 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x0d35ffd6 wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5a5939 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x0d794932 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0d862222 devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0x0d8749ce phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x0d8925e4 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL vmlinux 0x0da2bf09 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0dbfa56b serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0x0dc03110 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dcb3ee8 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ded77fe ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0x0dfcaf7e mtk_eint_find_irq +EXPORT_SYMBOL_GPL vmlinux 0x0e0c81f5 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x0e100e48 i2c_detect_slave_mode +EXPORT_SYMBOL_GPL vmlinux 0x0e174709 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x0e45652d pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0e4b2468 crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x0e512a3f fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x0e63c0e8 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x0e6660f7 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x0e69a351 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x0e6d0aa1 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0x0e764cc1 iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0x0e7a8a75 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x0e7c45ab iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x0e8145be uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x0e848a64 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x0e8a574a cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0e93ed8c mtk_pinconf_bias_disable_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x0e9c5976 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0eb9ba08 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0eba037f ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ec5f935 of_mm_gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0ec6a16a edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x0ec9424b security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0x0ec96ab7 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x0ecb9999 of_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x0ece0a18 __xas_next +EXPORT_SYMBOL_GPL vmlinux 0x0ece6ca4 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0ed8a36d snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL vmlinux 0x0edefd6f crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x0eeb5417 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x0efd147d virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x0f119bc9 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f1e0c3c mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0x0f2da3dc rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x0f305849 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f3861d3 bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x0f596f0b i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0x0f61e26a pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x0f67e1b7 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x0f7f48ab snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f819920 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x0f8ff89f crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x0f9625a4 usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0x0f9e3c9b dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0f9fdccc gadget_find_ep_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0fa4676e __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0x0fc2480b of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x0fc4608b irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0x0fc69074 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x0fcbe164 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x0fcd1c5b fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0x0fd20b95 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x0fd96c07 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0x0fe397c5 dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0x10022206 ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x100359e4 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x100ab093 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x102c9331 mtk_pinconf_bias_disable_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x1034e29f devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x1036dfe2 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x1043cac3 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0x105caa0e edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x106ad9e1 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x107b72c0 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x1081a735 pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0x1094b398 dev_pm_opp_of_find_icc_paths +EXPORT_SYMBOL_GPL vmlinux 0x10974b5d crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x10b0d725 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c5fd8d skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0x10d65883 bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x10e523f3 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x10e94711 devm_thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f2e942 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x10f7fa20 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0x110105d9 serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0x1104c4d5 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL vmlinux 0x110aa94a pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x112360f5 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x11526c9a meson_clk_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x11884eaf of_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x118b73bf devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x118ef869 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x119d8411 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x119e0963 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11a9a19b tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x11b5f217 balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x11bc8922 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x11be8ab9 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c37782 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x11ccab4c of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d98d54 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x11def8b5 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11dfa3e1 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x11ed0003 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0x12068278 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x12093267 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x120c49ae __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x1212efab reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x12470df7 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x124f0858 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x125d87a7 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12807240 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0x128622c4 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x12982d8d snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x12b88c78 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0x12bd331c sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x12c30e07 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x12d02a2b sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132c1ba7 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x133b51c5 gpmc_omap_onenand_set_timings +EXPORT_SYMBOL_GPL vmlinux 0x1359678e sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0x1360c5a3 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x137e2312 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x1381d4f3 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x13889036 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x139a3f2b devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x139e1d51 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x13a1fd40 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x13ba1d49 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x13befbfe handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x13e3b531 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x14073607 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x141064d5 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x14137157 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x141f07eb fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x142050f6 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x1429130b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x142f0ef0 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x143603c7 pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0x1448de99 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x145c4038 __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x145d6355 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0x146a4a0b spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x148e1b7d mtk_pinconf_bias_disable_set +EXPORT_SYMBOL_GPL vmlinux 0x148eec0e get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x14932650 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x14a3a86b mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14a6893a regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x14a98a21 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x14b0fc04 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x14b5bea7 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x14b657cf disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x14b80be3 dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x14c2872d xas_pause +EXPORT_SYMBOL_GPL vmlinux 0x14c2cc09 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x14cb9d46 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14d5eff9 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x14d6e8cb mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x14e45db1 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x14e528f4 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x14f3e015 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0x14f87e42 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x1517abda devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1518c3bb ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x151f5104 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1521b41e task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x1548baff i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x154af222 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x15535749 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x1555cf66 crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x15605518 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x156a08fe devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x15874c14 usb_gadget_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x158a7495 mtk_eint_do_init +EXPORT_SYMBOL_GPL vmlinux 0x158e8751 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x15922ef4 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x159987c4 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x159b00a6 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x15a5f817 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x15b06044 __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x15bb80b2 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x15cb861b devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x15d2330a snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x15f3d3cf sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x1603bc93 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x160aa535 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x161cff73 sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL vmlinux 0x162103b9 usb_gadget_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x162f559b crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x163a01dd devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x163f834d fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x1641ba25 iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0x165786df blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x1657e63d ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x1676ccc0 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16814d5c snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL vmlinux 0x168abe2e pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1695087c blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x16977af7 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x16998a4a devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x16a21f2f clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x16d1727e cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0x16d9f9ff pci_remap_cfgspace +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16f5a704 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x171bbb87 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x172cfd6e of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x17420aad devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x175486f3 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x17558eb7 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1755f5ab rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x175fd459 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x1769a99f pci_ecam_free +EXPORT_SYMBOL_GPL vmlinux 0x176afc80 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x177243bd spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x17777fb5 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x177a0633 arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x177b8c32 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x179a4e10 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x17a2ce33 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x17b00be5 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x17c40289 nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL vmlinux 0x17ddc3d9 skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x17f41dfa __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x1807409f extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x180d0bc3 spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x181382e1 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x181efcd3 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1827389f crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x1839b703 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x184d8d5e ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x185b8d7b scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes +EXPORT_SYMBOL_GPL vmlinux 0x1886d37d ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x188849fb sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x188d083b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x189fc5c7 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x18a9d391 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x18c44c02 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x18d59344 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x18ddfa86 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18f80d74 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x18fde180 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x190066a7 strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x1912902d irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x19178ed7 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x1918b57c is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0x191bc334 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1921431b meson_clk_pcie_pll_ops +EXPORT_SYMBOL_GPL vmlinux 0x19244dcd i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1924e171 tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x19385a86 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x193fc42e dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x194132fa zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x19686072 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x196efb1b virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1972c39a bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x19757471 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x197b404d usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x1984ba42 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x198b3005 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x199228a9 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1999a2ff led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a60963 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x19ac088b __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x19b7b9d6 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x19c00dff posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x19c20269 soc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19cb409e iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x19d5124d cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0x19d959d0 tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0x19e4f9e4 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19f03c18 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1a080c11 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL vmlinux 0x1a317c36 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x1a39fea0 iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0x1a4c85d0 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x1a5cb1e6 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a6e3707 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x1a70eefb vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1a77903a of_alias_get_alias_list +EXPORT_SYMBOL_GPL vmlinux 0x1a8a5638 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x1a8d0b05 regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1a8e055c xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1a98db98 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1aa4a8fa each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1aa546d5 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x1aa69a1d shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0x1ab92cb9 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1ac9f2c0 ti_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0x1acab41d bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x1ad12bcf regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x1aef8b98 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1af177a1 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1af74b87 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x1afb764c rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x1afee123 snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL vmlinux 0x1b11ad02 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x1b146f4e crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x1b19bbee unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1b3beb34 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x1b41525e rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b512a1d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x1b5c19e6 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1b5d3445 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b78f65c hisi_reset_init +EXPORT_SYMBOL_GPL vmlinux 0x1b7d9be4 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1b92f1b7 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x1b965ee8 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1b9a26c2 blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x1b9ac1b0 irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x1ba5a8c4 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x1ba5c74d dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x1baa55d5 meson_clk_pll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x1badc0f9 nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1bc40a8d gpmc_omap_get_nand_ops +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd4b6da nanddev_bbt_update +EXPORT_SYMBOL_GPL vmlinux 0x1be555ac led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1c0bc793 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0x1c1ca8bb snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x1c20f052 dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0x1c22de25 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x1c24306e devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x1c3a0461 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x1c3f6715 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x1c41e792 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x1c54951e mtk_pinconf_bias_set_combo +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6b95f0 apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0x1c75e1e0 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0x1c798d9f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x1c7dc659 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8ed286 blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x1ca331e1 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x1ca9107d ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cc1bd65 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x1cc297a5 screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0x1cccb6ee badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0x1ccd5560 uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x1cd6d0c3 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x1cdf4efb copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0x1d0655cb amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x1d0aadc4 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x1d328b6f sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0x1d380fa9 dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0x1d3b451c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x1d3bc3d6 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0x1d55c5ab mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x1d5938b5 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x1d5e286d fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1d5ea299 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x1d61e7e1 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x1d636a80 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d81aeb1 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x1d879c36 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1d917d70 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle +EXPORT_SYMBOL_GPL vmlinux 0x1da44a62 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x1dc170a5 mmc_pwrseq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1dcac90c snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL vmlinux 0x1dfbe8a1 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1e05365b to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e098011 phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x1e1299ab mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x1e22ec93 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x1e2decb6 mtd_write_oob +EXPORT_SYMBOL_GPL vmlinux 0x1e3e5e71 devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x1e47f1c1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x1e535de4 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1e5c0b09 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x1e7ab2d4 mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7d6157 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e944099 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x1e973e69 udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x1eb2cbb9 blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0x1eb74e36 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec6c5c8 xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1ed105f3 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1ed82dd1 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x1ee46cad user_update +EXPORT_SYMBOL_GPL vmlinux 0x1ee9b0fd cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ef18d95 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x1f059117 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f13874b thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1f13dab6 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x1f21ea2b usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x1f23fce2 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1f35f398 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0x1f4037ad ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x1f43268b blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1f438ec2 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f4f5259 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1f54b3ee inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f5f096f hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x1f5fc4a5 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x1f65a452 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f75d79d find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x1f76921b lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0x1f774f46 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1f7f8604 elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f884194 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x1f913398 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x1f95d0a4 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x1f9a4d96 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1f9ea409 scmi_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fca0b38 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1feaf6a4 dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1fef0f63 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x1ffc59e6 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x201c6979 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x201f8e17 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x203dcf5d virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x2045ba33 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x205ff7fb irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x2061be8c rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x206412fe lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x20678b4d device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x206963f2 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x20735303 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x20781a0c phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0x207d9517 sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL vmlinux 0x207ddbed sdhci_cqe_irq +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x20863981 fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x20a39baa regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x20a9c874 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x20ae6a37 fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x20b0c60b nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0x20d2744d device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x20f0a8ac fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x211bd635 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x21494650 mvebu_mbus_get_dram_win_info +EXPORT_SYMBOL_GPL vmlinux 0x214af47d edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0x21562a1d raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x2159d9d1 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0x21630a28 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x21652b54 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x21726652 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x21758cb0 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2178add0 rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x21908c62 genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0x219f6d8a devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21de20fa usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x21e184d7 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221562f8 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x22279a69 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x22334303 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x223e52cf crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0x22450ac2 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x22512956 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x22539502 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x225b0877 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x2261b1d1 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x22648c02 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x22718ad7 alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0x2281c5f8 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x2281d58a ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x228dde81 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x22994cb5 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x22a52ab9 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22b945ca __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x22bbac51 pinmux_generic_add_function +EXPORT_SYMBOL_GPL vmlinux 0x22c44f2d phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x22c4f3aa i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x22ccc2c5 addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0x22d03d42 extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x22d13148 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x22d65a13 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22d95e60 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x22ecd77b sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22fcef0b __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x22fd4d1e regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x230c7cc8 nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x230e7e76 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x23176e76 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x2331537c io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x234326d4 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238b9070 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x2393609b pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0x23950433 efivar_variable_is_removable +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239a5e4f of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x23a91887 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x23ab6934 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x23aeed5e of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x23c77a2a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x23d88a63 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x23f47769 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x23fcd86b __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x24001d85 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x2400c6a4 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x241f6fb6 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2429bfbe mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x2436e871 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0x2437ed1c ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x243ae467 icc_get +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x243fce48 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x24521aab spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x246eacec kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0x247c5322 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aa1f87 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x24ab2800 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24af7540 dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x24ce89bd get_device +EXPORT_SYMBOL_GPL vmlinux 0x24d5e8ef pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24ed46d9 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x24fc367d relay_open +EXPORT_SYMBOL_GPL vmlinux 0x25106820 of_find_spi_device_by_node +EXPORT_SYMBOL_GPL vmlinux 0x251ee6f0 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x252af7f0 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x255a935e i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x256417eb inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x25674109 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x2570c63b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x257d5fee wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25aff6cd pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x25b8fa54 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x25ba4c6d iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0x25be03ae crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x25bf961f snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x25c50bda ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x25d6f188 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x25d713b1 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x25d9600e sdhci_cqe_disable +EXPORT_SYMBOL_GPL vmlinux 0x25ee6401 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0x25fbb2d5 led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x260470cd devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x262ee95f bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x2638586b xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0x26465d06 serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0x264a07ed request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x264d715d regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265319ff pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x265eaa64 regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0x266373f2 ahci_handle_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2673d4ec clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x2679b030 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26801149 clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x26964306 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26aeba90 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x26bcc52b disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x26c171d2 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x27100013 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x27247a96 regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x272e9d77 hisi_reset_exit +EXPORT_SYMBOL_GPL vmlinux 0x2734197f musb_readb +EXPORT_SYMBOL_GPL vmlinux 0x273fc84c pinmux_generic_remove_function +EXPORT_SYMBOL_GPL vmlinux 0x2742e86d gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x276e74a3 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x278cc47f fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x27a67258 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x27b0754c securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x27b35376 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f849cb devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2803753c hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x280bad38 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x280c9bdb tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x280c9d31 aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x2821af0f clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x282b7d57 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x282ea83f pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0x28324646 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x283bd528 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x28712861 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x2880fb30 gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL vmlinux 0x288ebaf8 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x28a3901f ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x28a7db63 nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x28aa560f nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28ac72fb devres_get +EXPORT_SYMBOL_GPL vmlinux 0x28b030d2 of_overlay_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28b31554 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x28be0b91 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x28cc12e2 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x28d66ce7 dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x28e5b39a of_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x29277ca6 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x292a86e0 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x29344faf devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x2935fe98 snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x295385f7 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x295a2670 clk_regmap_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x295b982a hisi_clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x29825dcc fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x299529f0 pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0x299fe1bb iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0x29cc7382 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x29ceb64b iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x29cf2470 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x29f6ff2c trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x29ffb6fc skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x2a03f01e __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x2a0bf0d0 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x2a2a8084 crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x2a2aea17 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2a2d3a82 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6b0a45 spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a74b821 ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update +EXPORT_SYMBOL_GPL vmlinux 0x2ac08d37 dapm_pinctrl_event +EXPORT_SYMBOL_GPL vmlinux 0x2acd9cb7 phy_configure +EXPORT_SYMBOL_GPL vmlinux 0x2acf5c91 pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x2ae00b4c pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2ae8d03a ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x2af3a55a ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2b0b6420 bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x2b199f78 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x2b20c7eb snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x2b246076 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2b26b548 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x2b3633ff led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b468ccc perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b70d910 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2b77566e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x2b84d71b mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9c46eb __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x2bb7e46e virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0x2bbb047f bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x2bc1cff7 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2bdb293a skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0x2bdc8064 snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL vmlinux 0x2be5030f copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x2bec4722 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x2bf37cd4 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x2c0c6fcf __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2490e7 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4909cc sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0x2c494325 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x2c568dcd snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c6fb721 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x2c7760d5 nand_read_oob_op +EXPORT_SYMBOL_GPL vmlinux 0x2c79fe0f sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8659a1 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca3cf3d blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x2cab21ce kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x2cbe7ecf mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2ced2f57 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x2cf1a888 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2356f1 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x2d282e90 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d31552e debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL vmlinux 0x2d3ecbfb devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59048e debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x2d7447b6 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x2d79f7de snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x2d81fc16 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x2d89aaff metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x2d8bb027 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x2d98d55f bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x2da7d377 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2db67d4a owl_sps_set_pg +EXPORT_SYMBOL_GPL vmlinux 0x2dcf8756 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e154127 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1259 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x2e30509c percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2e4261f6 snmp_get_cpu_field64 +EXPORT_SYMBOL_GPL vmlinux 0x2e57dfae bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0x2e9fcb72 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x2eb10a5f snd_soc_set_dmi_name +EXPORT_SYMBOL_GPL vmlinux 0x2eb51783 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x2eb931d9 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x2eba7d3d led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec2b77c tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0x2ed53f64 tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ed58522 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x2ef4a0e9 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x2ef6e8cc snd_soc_lookup_component +EXPORT_SYMBOL_GPL vmlinux 0x2ef8c654 dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x2efbc76a ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x2efc648b perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0x2f02a72c dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f103765 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2f1726c7 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0x2f1e3985 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x2f26a534 genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0x2f31a1f0 device_del +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f55ac1c blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x2f5a001a udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x2f5c1223 __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x2f63e634 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f6f3286 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x2f86840c trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x2f895416 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2fade0be synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x2fb40455 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x2fbf4d71 mtk_pinconf_adv_drive_get +EXPORT_SYMBOL_GPL vmlinux 0x2fda81b8 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x2fe183df extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2fe39490 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x2fea39ef reset_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ff27c63 blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x2ffbf45a crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x2ffc0517 sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0x300952fa of_changeset_action +EXPORT_SYMBOL_GPL vmlinux 0x301551a5 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x3015b8b8 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x301b942d spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0x302d0cce dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0x3031408e pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3035d8c3 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x30395757 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x304c79d5 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x3069809a __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x30741085 sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0x309b899c devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x309d1eca sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x30a03a20 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x30a2b5f5 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x30b1826a wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x30b67305 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30c2c046 thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0x30d06a00 bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x30d4a1a5 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x30fc8e76 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x310006ea mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0x310c3293 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x310c9216 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3133703d regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x313b9743 snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x314d5984 dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x3153be77 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x31773020 dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0x31800ec6 rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x31a12705 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31bc4759 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x31bf3a8f vfs_write +EXPORT_SYMBOL_GPL vmlinux 0x31c1f2e4 gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31c8d814 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x31ce2caa regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x31dc098a rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x31dc18ce blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0x31de0235 sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x323349b0 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x324763db anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x324ab73f snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL vmlinux 0x324c4ed4 genpd_dev_pm_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x3251907d snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x32586a95 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x32652b80 nand_read_page_op +EXPORT_SYMBOL_GPL vmlinux 0x326e2ef9 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x327459c1 snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL vmlinux 0x32825a0f scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x32829219 sdhci_start_tuning +EXPORT_SYMBOL_GPL vmlinux 0x328d200e ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x329126fa ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32b2c954 pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x32b49c47 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ce5f4f srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x32e8bb44 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x32ebe436 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x32fe9bf7 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x33010b06 sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x3335ae32 freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3337d0b1 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x335bc82f edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336dbb55 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x3378573f skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x339e4ae6 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x33ac819e iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x33c806d9 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33cd2cd6 cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x33e9e0a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x33efc8c8 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x341215b2 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x34170aec max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x3427cd1b dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x34339fea extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0x34341baa blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x344ed12f regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x34592ddc pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x3461ba36 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x347a6588 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x34908579 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0x34a3e17c bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x34a84df3 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x34a938ed pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b10c06 pinctrl_generic_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x34b4a0a7 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x34b9bdd8 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x34db3ade fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x34dcc478 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x3506eb7e scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x351bb970 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3532abfb usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x35367100 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x353ca0fc snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x3545a74e unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x35660542 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x3582d33c mtk_pinconf_drive_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x358b4df6 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35996de4 em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x35997736 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x359f3466 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x35a05df4 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x35b5c6ad crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x35bd7f32 snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL vmlinux 0x35c5d72f snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x35d1ac7a snd_soc_add_component +EXPORT_SYMBOL_GPL vmlinux 0x35d74f9a cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x35df4b61 __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x35fb47ce regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x362de961 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x362fd583 device_match_any +EXPORT_SYMBOL_GPL vmlinux 0x3634a39f of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x363f9ab2 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x364f1630 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x3652fb26 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x366f056a pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x367099e1 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x3685c08f ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x368c3215 ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f3b6 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x36a42cbe fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0x36b5f6a3 edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x36ba6382 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x36c2f8f0 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x36d68595 account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x36dddc3b badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0x36e1db4d xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x36ec8a8a nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x36fc4aa0 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0x370088b6 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x37113794 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x371887a1 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x37218576 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3729fcee __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x37495f22 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x37580af1 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x37595cb3 meson_clk_mpll_ops +EXPORT_SYMBOL_GPL vmlinux 0x376e76c6 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x378397bd espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x37964211 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x37a3590e devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x37b0466b mtk_smi_larb_get +EXPORT_SYMBOL_GPL vmlinux 0x37c1ec41 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x37d5d635 fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0x37d78f85 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x3814935d to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x381b95d8 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x381c8f63 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x382dfde0 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x3850cb98 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x385e1e49 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x3873fb58 mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0x387a1762 snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL vmlinux 0x388a7022 snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL vmlinux 0x389a5a28 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38aa4657 xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x38c0c9e4 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x38d1aa41 of_property_read_variable_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x38d64028 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x38de2e69 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x38e227f9 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x39174654 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x3917e4fd tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0x39190532 mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0x39217bce bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0x392fd9a0 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x394c5efe rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x3959f4f7 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x395fb1c0 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x39632a80 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x3966d003 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3968f5fb blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x39805c0b iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x39828022 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x3982ff2c virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3989128b usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x39a7a057 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39a8a073 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x39d61014 bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x39df9ff2 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f315f8 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x39f683c9 gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x3a22977f dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x3a28f0ea devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a2b51bb snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a409c23 snd_compr_stop_error +EXPORT_SYMBOL_GPL vmlinux 0x3a413aad pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x3a4e8884 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a542510 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3a547970 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x3a559c4f snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0x3a6dc43f pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x3a727be9 dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0x3a74368e call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x3a767203 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x3a7f20bf __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x3a8b9d53 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aab335a blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3ab03890 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x3abe2c92 of_clk_hw_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x3acd3c2c of_get_required_opp_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x3acdaf22 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad1465f pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x3ad41fed crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x3ae7645c pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x3af93218 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x3afaff34 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x3b020516 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x3b0fa352 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x3b200952 tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x3b3577cb gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b3874e2 debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x3b413a14 crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x3b45badb sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b54af65 udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x3b66cb8b ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x3b7015c4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x3b71354f transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b84c05b pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x3b907396 pinconf_generic_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x3b956341 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x3b9a52dc stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x3ba26281 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3ba4dd19 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x3bc52e79 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3bc6589f crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3bcaeb16 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3bd22361 of_property_read_variable_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x3bd67b14 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3be4c236 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3bf02f1b ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c0400d5 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x3c1b8984 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c2b68f7 of_changeset_apply +EXPORT_SYMBOL_GPL vmlinux 0x3c3d88cc wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3c406445 icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0x3c498d81 nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0x3c4f7c49 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x3c651f33 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c72724e usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3c735b5c irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x3c8902fe clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x3cb03bb2 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x3cb70bf7 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x3cba80f5 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ccb9fd4 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce6b819 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x3ce9813b pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3ced04e7 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3d05a985 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x3d0721fd gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x3d15a09e of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d1eda71 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0x3d22a206 nand_gpio_waitrdy +EXPORT_SYMBOL_GPL vmlinux 0x3d24d090 badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d49fc73 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x3d4db9b0 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d5b5003 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3d6fce3f __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x3d79ad09 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x3d7f3a23 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x3d8c1aee sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x3d8ead0f rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x3d907fe3 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x3daca1f5 sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x3db357a2 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dca2fa1 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x3ddb8066 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df044eb of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x3e01d69a mtk_eint_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3e1a525b usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3e31d9c3 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x3e54c78d debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3e5f5622 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0x3e621ed5 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e725b5a crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x3e77076c switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x3e7dde13 nanddev_markbad +EXPORT_SYMBOL_GPL vmlinux 0x3e961c0b __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x3ea8edac spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x3ebe172d tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x3ee78393 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3efec558 dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0x3f060887 __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x3f06518e alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0x3f267ba3 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f89c7cb regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f937a0a dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x3fad6104 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x3fb1ded1 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3fb42a5c pinctrl_parse_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x3fc56fde fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x3fdce254 iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0x3fe4ab9d serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fea029c hisi_clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x3ff7e1f6 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x3ff8de54 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x3ffa4472 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x400ba30a xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x400df957 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x401a8bff snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0x403e62b5 ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x406c7c88 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x407ca5fc genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a024c3 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x40a0ffe1 put_device +EXPORT_SYMBOL_GPL vmlinux 0x40ad7296 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x40db41dc tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x40f00bed fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f719c2 sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x4103f8d8 dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x41093d9c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x41138e33 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x41151773 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0x41173988 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x413594a3 __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x414394d6 nanddev_isbad +EXPORT_SYMBOL_GPL vmlinux 0x414538e6 synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x41695d40 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x416c2f50 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x417779f0 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x4178978a iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4190661d blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x419998c0 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x419e1504 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x419e6c16 rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41c30f3a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x41c8a88e of_device_request_module +EXPORT_SYMBOL_GPL vmlinux 0x41c9e2e9 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x41ea7510 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x420b1338 security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42284663 kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x423c8024 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x42408ab6 devm_of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x424128d6 nand_write_data_op +EXPORT_SYMBOL_GPL vmlinux 0x4253159e ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x42538d49 ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0x4255a41a regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x4279c6d7 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x427d8174 omap_iommu_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0x428219cc snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42887525 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x428a4b24 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x429bb5f2 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x42aadcce clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x42ad912e subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42b68edf ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x42b81ef7 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0x42c90ddb ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x42d05ec4 sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL vmlinux 0x42d3bdf5 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x42d70196 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x42e445f6 clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x42e8c5fc led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42e9dfa7 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x42efb127 nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fa74c5 serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0x4308e8f7 __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4315313b snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4316cbc9 netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x43190a8d pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x432a9914 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x433d07ba ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x433f82be regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x434a3555 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x435b053d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x43690745 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x437a9d46 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x438fb36b irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x439a760a ahci_platform_enable_phys +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43b4c9d4 cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0x43c6eb2b firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0x43cdb530 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x43ce20e5 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43e8a6f8 fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0x43ec1867 fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4407274f mtk_pinconf_bias_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x4412dd48 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x441305fa bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x441b6b8b dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x44272b03 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x44339406 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0x443a786b extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44531e80 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x4457b812 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x445e198c rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0x4471c5c4 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x4480a554 pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x4482569b scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448a1a2f trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x448b34c6 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x448c0a20 md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x44a10f7f of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x44a55ee6 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x44a83bf9 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x44ae537c skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x44ba1042 percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44db4006 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x44e2ad00 crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x44ef5d02 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x44f531ab fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x450611bf iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x4518eabf ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4519b69f fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x4531717d mtk_pinconf_bias_get +EXPORT_SYMBOL_GPL vmlinux 0x45383d1e pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x454ab7e8 cros_ec_get_sensor_count +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x4561f990 qcom_smem_state_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4562f8e4 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457c6033 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0x457cfdca eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x4581a423 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x459b8c74 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0x459cafaa snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x45ac6c69 mtk_mmsys_ddp_connect +EXPORT_SYMBOL_GPL vmlinux 0x45b19b8a wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x45c8646e sdhci_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0x45d07221 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0x45de73b7 devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x45e30b5d mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x45f1bc79 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x45f6c254 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x45ff8535 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x45ff95b2 pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x461b1c23 pinctrl_count_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x46282229 pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0x462c434b fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x463ce218 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x4646f671 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x466e5342 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x467232d2 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x4683a8ee key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46897ef4 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x46922d1d power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x469ec80e snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL vmlinux 0x46a27b9b wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x46a38529 nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x46ae94ee snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x46b0cf3e iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0x46b2b599 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x46c06c19 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0x46c79be4 led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0x46c985cc tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x46cd6002 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x46ce7b86 devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x471d407d subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472352ee dev_pm_opp_of_add_table_indexed +EXPORT_SYMBOL_GPL vmlinux 0x472f97c5 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x47317949 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x473492ae qcom_smem_state_register +EXPORT_SYMBOL_GPL vmlinux 0x475df6c7 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47734394 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47925794 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x4795d890 musb_set_peripheral +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47aaef96 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x47b56647 mtk_pinconf_bias_set_rev1 +EXPORT_SYMBOL_GPL vmlinux 0x47cc45b7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e2ad3c mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x47e30e73 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x47f24759 usb_of_has_combined_node +EXPORT_SYMBOL_GPL vmlinux 0x48020c1c irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0x48335fb9 rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x4837dab1 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x48403e70 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x484779ef __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x484be316 mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x484cef1d clock_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x484d8e33 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4854df7b dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x485cf8e6 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x485da19a snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x485f1a1b nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x486fa04a snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x48713979 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4876f5bd sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x4891c0e1 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48a855bc ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x48b97f6e component_del +EXPORT_SYMBOL_GPL vmlinux 0x48cfeddc regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x48d878a6 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x48da5e1b devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x48e9b46e skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0x48f2be54 snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4909cbc1 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x490c4c2d sdhci_end_tuning +EXPORT_SYMBOL_GPL vmlinux 0x4915ca80 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0x4924921c snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL vmlinux 0x49257192 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x492b019f ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x49326ef6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4932c2fc kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x493b6c6b wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x493e9519 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x494186f4 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x495167d0 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x4951f50d scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0x49548b73 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a16268 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x49a2c9c1 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x49ad6ca6 nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x49ae4c78 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x49b328d3 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x49b40c48 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x49bf878a ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x49d96707 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL vmlinux 0x49dab7e9 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x49ddd367 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49e227f7 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49e97bf3 debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0x4a02978b thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x4a0658ab platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a23c266 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4a2b7b26 of_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x4a405abf fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x4a4e743b bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x4a555faf skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x4a5d6d34 blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x4a78c781 dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0x4a82f71a bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0x4a92cd04 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x4a94d462 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x4aa338ca ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x4aa55756 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x4aa61ffe scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x4ab156b2 check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x4ab3965e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4ab3a92f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x4abc570a crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x4ad1dd93 dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x4ae57681 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x4af751b5 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x4afd2b59 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x4b16f880 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x4b1dee61 hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x4b470647 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b6b0936 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x4b86b95b of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bab36c4 nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x4bade402 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x4bbb2690 usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0x4bcf8866 __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4be72da9 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x4bed2450 null_dailink_component +EXPORT_SYMBOL_GPL vmlinux 0x4c07591c regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4c168bc7 kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x4c314c65 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x4c589547 blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x4c790c32 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x4c7d24be cpts_release +EXPORT_SYMBOL_GPL vmlinux 0x4c828a72 stmpe811_adc_common_init +EXPORT_SYMBOL_GPL vmlinux 0x4c8c754e devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0x4c92dc43 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x4ca3f0bc nand_prog_page_end_op +EXPORT_SYMBOL_GPL vmlinux 0x4cb1cf44 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x4cd99540 strp_init +EXPORT_SYMBOL_GPL vmlinux 0x4ceae70f vchan_tx_desc_free +EXPORT_SYMBOL_GPL vmlinux 0x4ceda069 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x4cf17d9a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4cf24332 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d09f1d4 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4d0b0090 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4d19393a br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x4d1de1a2 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x4d3687d9 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d5af2ad add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0x4d5b421b rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d6db3cd phy_init +EXPORT_SYMBOL_GPL vmlinux 0x4d75e222 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x4d761806 sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x4d8110d0 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x4d836182 usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x4d8f65bc tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x4d93c502 nand_reset +EXPORT_SYMBOL_GPL vmlinux 0x4d9a4bef nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x4da3da89 rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4db0f03a pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4ddabe4c ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x4ddceccb sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4debbe1c extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x4dedf227 dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x4df28602 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4e042a1e sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x4e2622ba pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x4e2c55b5 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4e336db5 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x4e394892 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x4e44a3a1 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL vmlinux 0x4e55000f nand_prog_page_begin_op +EXPORT_SYMBOL_GPL vmlinux 0x4e674f3d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x4e6cf260 sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL vmlinux 0x4e729687 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4e8a6f6f pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x4e903d8a efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x4ea727ad virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4eb2b889 sdhci_switch_external_dma +EXPORT_SYMBOL_GPL vmlinux 0x4ec8a47e rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0x4ed0feb8 fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x4ed40532 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x4ee37fba devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x4ee59011 irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ee85de2 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f114402 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x4f168d70 iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4f179d74 crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0x4f2a8e0f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x4f2da2ca debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x4f3ba219 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0x4f481b90 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4f543ff9 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x4f546853 get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x4f58fe84 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6cc1ad snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f81b817 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x4f8ca696 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4f902f4c clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9b469d blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x4fac4f9e snd_soc_get_dai_id +EXPORT_SYMBOL_GPL vmlinux 0x4fb50784 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x4fc9c2e8 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x4fd3f927 snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x4fd893fc dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe56011 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4ffba041 d_walk +EXPORT_SYMBOL_GPL vmlinux 0x5011bb30 nand_reset_op +EXPORT_SYMBOL_GPL vmlinux 0x501fa272 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x5026fd19 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x50270e60 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x503d6f51 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x503eeebb synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x5040d006 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x5049251d devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x505361b7 acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x505841db rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x50666443 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL vmlinux 0x5078dbb7 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x5086a19f led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x508afef4 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509d5f55 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x50a32ffa get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x50a79217 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x50ac48b9 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x50ae313c gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL vmlinux 0x50c54bec crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d2109c device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x50df9bbb of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ece8e6 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x50f2e60d icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0x50f51c81 cpts_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51058329 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x510b9aad serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x511b1f47 spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x5127039d usb_of_get_interface_node +EXPORT_SYMBOL_GPL vmlinux 0x512eda46 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0x5131777e musb_root_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x513671ee dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x513e1242 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x514c062d snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL vmlinux 0x5151a79c usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0x5156456f ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5156ed8d tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x515ab6ec fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0x515cfa95 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5163b096 __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x5169cddc of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x517197ee ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x51754009 inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0x517ecc2a devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x5185ea2e __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5190e39c fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x51aaacfe dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0x51b643fc ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x51fdecf8 led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0x52036f21 ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x52060b6a spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0x5209a6da dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x5224982e blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x52252778 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x5236497d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x523e0591 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x524368b5 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x52472ea7 iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0x52506bdd mtk_pinconf_drive_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x52601fb8 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x526aaa1f thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x52775e8b spi_async +EXPORT_SYMBOL_GPL vmlinux 0x5278aaa9 ahci_platform_disable_phys +EXPORT_SYMBOL_GPL vmlinux 0x527ac4e6 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x527be5df __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0x527d029c power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x52829993 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x528ccdd4 rockchip_pcie_deinit_phys +EXPORT_SYMBOL_GPL vmlinux 0x52a0479f handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x52a34f2c snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52b3e8a1 is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0x52b9eb92 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52d62726 kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x52dd975b phy_create +EXPORT_SYMBOL_GPL vmlinux 0x52e9d20e xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x52f5ca87 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x52fa0074 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x530c9bca hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x53115f61 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x53365272 __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x53388f73 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5343057b bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x534fb543 devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5355b453 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x535a44e0 perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x535b5a85 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x53765179 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x538bc18a led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x53936fc2 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53b46405 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x53b94900 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x53bb3f94 of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x53bea510 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x53ca7ee8 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x53d0acf0 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x53daaada fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53e44378 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x53e4bf47 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x53e88b6f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x53fa3843 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x54172702 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0x541b2810 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54205412 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x54255656 dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5435454c divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x5436786f devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x543ac025 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x54434d7e wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x54465bfb devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x54555267 strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x545b76f9 device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x54603354 mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL vmlinux 0x548aa27a xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549ce9bb class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x54a25da2 qcom_smem_state_put +EXPORT_SYMBOL_GPL vmlinux 0x54b7a489 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x54bddbbb wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x54ce8396 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x54dc7c7d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x54de0115 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x54e9052c tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x54f2064f report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0x54f5fe34 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x55062ed4 devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x55147501 iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5543a280 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x5568b5a6 sdhci_enable_clk +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5574f2e8 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5578c5fc acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x55941e16 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x55944d4c mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55a39739 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x55c0fb66 fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55ca9cfe thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55cb5f91 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x55d1a545 __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x55eabf22 snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL vmlinux 0x55ec6169 phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55eeee75 gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x5606c18a ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56161dbb sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5631c22c __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5653892e free_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x565cbd02 mtk_is_virt_gpio +EXPORT_SYMBOL_GPL vmlinux 0x566ea5e8 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x567570a4 __sdhci_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x56848427 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x56968ac7 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5697582b of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x56a4dbbf pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x56a6a76c net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x56a8352e ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x56a8ca09 genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c620aa mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x56c7cfda synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x56e42fb7 tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0x56e57c47 phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0x56e5cd05 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x56e6fc77 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56eed00f __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x5708d983 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x5709a363 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5717f730 gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0x57194c54 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x573ad7c3 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x573ea319 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x5746df4d sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x57628d4b mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x5771d845 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x57773563 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x577b04cc devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0x578d84ba nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57912e9b ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a231cc usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x57b4d8de console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d149ee rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57fde9a1 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x58048851 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x5815c078 devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0x5821f531 device_create +EXPORT_SYMBOL_GPL vmlinux 0x5830092d regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5838db13 fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x586010ba max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x587ac04d cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x588c1064 pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0x588cbe79 pinctrl_generic_add_group +EXPORT_SYMBOL_GPL vmlinux 0x58ac0f01 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x58acfc75 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x58ae26f7 nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0x58b7b3e7 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x58c0e6f1 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x58c49860 phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x58c5fb95 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x58c7ad31 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58e43456 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x58f0308a clk_regmap_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x5903b6ad device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x59405403 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x595213e8 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5953ddfb dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59709bbe dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x5975c899 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x59769a39 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x597d2180 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x598fc158 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x59927da1 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL vmlinux 0x59957e00 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x599e8ef8 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0x59a1fab8 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x59a2fd93 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x59a9f0fc blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0x59b5def6 clk_regmap_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x59b75ce9 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x59e2103b sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x59e276de genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x59eb6baf dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x59fde9e0 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5a0aec18 sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x5a1521d7 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a1dd292 snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL vmlinux 0x5a28d2a3 snd_soc_component_read32 +EXPORT_SYMBOL_GPL vmlinux 0x5a3028ca rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x5a395afd ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a532ad9 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5a534b76 pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x5a5f8625 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5a607457 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x5a65fc14 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a742b18 hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a76e56b sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7f63c9 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5a8a37d0 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x5a9978e7 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ac24451 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5ae6d131 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x5b02fd46 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x5b1a941f mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b29ed9d __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x5b2ebf4b __device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b316080 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x5b326054 input_class +EXPORT_SYMBOL_GPL vmlinux 0x5b32ec01 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x5b3ae22e relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x5b485a68 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b4b1b83 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x5b55b7dd bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0x5b5c85ab __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5b639d44 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5b63dc6f regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b76301c devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x5b83b88a edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0x5bb2222c __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bda372a crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bea9237 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x5c0cd80b inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x5c243345 lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5c28d561 pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c303b83 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x5c36743b crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5c3c21ee __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5c49a132 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5a2832 sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0x5c5ba19a aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5c5da1bc gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x5c62792e ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c724709 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5c8168d0 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5c84d1f6 mvebu_mbus_get_io_win_info +EXPORT_SYMBOL_GPL vmlinux 0x5c87061b hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0x5c94ad28 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x5c9867f5 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x5ca7df8c of_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cd1b39b gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x5cd2e722 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x5ce27bc4 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5ce56700 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x5ce9135e genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0x5cf09a57 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5cfe9882 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5d0a8623 bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x5d19cf43 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x5d22edc7 snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL vmlinux 0x5d2332c1 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x5d26b51f __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5d35b43f __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5d39ec63 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x5d4523a4 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x5d46f24c sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x5d4996c9 dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x5d59221a ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x5d708f99 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x5d83ba0b fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d9744d0 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x5da4ab57 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1922c rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x5db1db64 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x5dd4eac0 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x5df1d1da hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0x5df4d073 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x5df778c5 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x5dfed7bd evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0x5dff6fda x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x5e03868f fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x5e12ecc1 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x5e2e8aa5 nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0x5e3880cc perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x5e4b534d __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5e4ec6e9 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e61b2b1 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5e67b71d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0x5e7028a8 of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e7d2d40 pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x5e84ba03 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e9b1ebf watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5eb96205 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x5ec4270a snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ed289c0 mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x5f021758 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0x5f16b20d driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x5f1c122e alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f25b050 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x5f292af7 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0x5f2b49e8 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x5f3b60db register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5f3fb590 hisi_clk_register_phase +EXPORT_SYMBOL_GPL vmlinux 0x5f46960a fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0x5f503b01 d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x5f59fd38 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x5f5a68ec disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5f5c6bd0 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x5f63c8e3 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f6a0061 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f889226 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x5f8c6564 nand_status_op +EXPORT_SYMBOL_GPL vmlinux 0x5f969155 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5f9e1a1a __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x5f9e8ac3 snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL vmlinux 0x5fa174aa regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5faac1f5 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5fadc8d3 irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x5fb65f06 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x5fb81237 phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x5fbc4cc0 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5fc5e5ef phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x5fe13d0b mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x5fe4be73 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x5feb2439 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5fed8488 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0x5feda592 sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0x5ff3a08d regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x60085602 skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6011be7f to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x60175bff snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x601c16a5 nanddev_mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x6028b032 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0x602d3c6b file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x603b5763 devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x603db670 split_page +EXPORT_SYMBOL_GPL vmlinux 0x603feb78 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x60516fba synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0x6059acb8 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x60671345 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6091a3fa ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60c19a19 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x60c72c67 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60ecd33b devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x60f213b0 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x60f48456 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x611a4738 tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0x611e53fc regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x612dc2bf snd_soc_component_set_jack +EXPORT_SYMBOL_GPL vmlinux 0x61330367 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x6139d243 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x614150ff __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0x61418f25 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x614782f1 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x614adcb7 of_overlay_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x616250cc skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x61a5d772 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x61cfe4ac cpts_create +EXPORT_SYMBOL_GPL vmlinux 0x61e7417c dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x61e83904 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x61ea50b9 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x61ed24b0 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x61fad980 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0x620e8cfa dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x62214b82 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x622266fb ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x62255def snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x622b922f devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622f9771 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x62325c1b dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x62417e63 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x6269b22f pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x6278d601 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x627e57c3 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x628dcf7c spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x62932f0a snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL vmlinux 0x62a3c47f regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x62ba1561 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62c2edaf inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x62c769c0 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x62d0e2a6 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x62eae714 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x62f76950 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x6320bb27 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0x6328fced ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6330e2a2 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x6333cae7 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x634a4d6c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x635be804 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0x636f6efd mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x638a85b3 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x63a32821 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x63b9d6ad crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c37ecf skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x63c62d18 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x63c7c006 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x63c9eba6 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x63d7bd2d gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x63e2092c spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x63ecdce7 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x63f753ee snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0x63f8b988 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0x6408ad03 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x640d4ae3 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x641150d1 pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0x6411cce4 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x64243190 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6436be53 i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0x644bfdcf trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x645df00d dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x646d106d iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x646fac20 fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x6493a2df rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x6499ca92 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x64a2c7e7 meson_clk_mpll_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x64a4c4dc ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x64a73b47 ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0x64c07d32 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x64c2022d mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x64cdf082 xas_load +EXPORT_SYMBOL_GPL vmlinux 0x64cfe6ea regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x64da1d6a usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x64dcb256 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64ef4df6 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x651dbc6a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x652010da usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x65302b37 governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x653d0fd5 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x65537437 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x65568258 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x655d5a6f usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6578581c irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x658879c0 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x65b51493 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d56966 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x65e84130 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x65ffc202 security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0x6600192b crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66287b85 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x6628a600 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x66306c40 regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x6646664d snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x664c155a kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x664d0962 i2c_of_match_device +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x667a2803 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x667e9e57 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x6682eb65 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x6683adf4 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66865a72 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL vmlinux 0x669de806 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x66a11eb9 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x66b26b2b clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0x66b39cc8 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66ca7923 mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f5fe89 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x66f60e22 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x66fc2bc0 badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x670b9dbb dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x6722fd82 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x6724ea55 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x6734e5b7 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x673698a6 devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x673cac08 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6751eb93 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x67569cdf usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL vmlinux 0x677b4967 blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x6781513c __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x678ee4b4 pci_generic_ecam_ops +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ae7f1b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x67c6b856 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67dc0ce7 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0x67e0fbd5 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x67e4473e pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0x67f0a654 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x67fa79c8 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x6813114a devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x68145277 fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x6823ccf0 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x6828b9fa kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6831cf18 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x68334a69 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0x683a9c0c xhci_mtk_drop_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0x683ba83b bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0x6852e774 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x686ec026 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x68758fda nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x6884ce0e genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0x6893f4e2 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x6894835c __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x68968617 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x68a70bcc crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x68cf9341 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0x68db3671 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68e09c9c mtk_smi_larb_put +EXPORT_SYMBOL_GPL vmlinux 0x68f37e9f __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x68f71931 devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68ff3429 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x6913865a trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x69146ff8 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x6916c7e0 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x691c85b6 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x692098e2 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0x6929039d fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0x6929f38e gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x692a4f08 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x692dcdb1 spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x6937ef61 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x693a1115 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x693b160a pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x6944a917 serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6945ae89 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x69484689 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x6955d023 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x696f2b63 of_changeset_init +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69821ad0 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6989bd9e device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x698dcabc usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x69978446 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x69ae9c24 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0x69b7559c mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x69c33018 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x69c87a51 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x69c984ee crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x69cefc4e power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69fc1e0b show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x6a036362 iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a241212 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a465f14 component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0x6a47d723 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5d3ad9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a61e527 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6a684711 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6a7c6bc0 nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x6a8c8099 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x6a91041a efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x6aa5e412 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x6ab1c8bb xas_store +EXPORT_SYMBOL_GPL vmlinux 0x6abc6cf5 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x6ac3ac3d pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x6ad248f9 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6ae641b6 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x6ae6fdee power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x6aebbc78 iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x6af68291 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x6afccb9c pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0x6b038e2b snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b334acc trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x6b411db2 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b6ca8f0 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6b72e663 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b82aec4 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0x6b848d7c gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6b93dea4 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x6b9cb228 regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x6ba8d9e4 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6baafa52 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x6bad70e6 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x6baecd44 iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0x6bce93d8 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bdc7844 mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0x6c0573f5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x6c1dc8fb rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c43b737 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c7b76ff clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x6c8c2f54 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0x6c8e070a clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x6c91a079 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x6c9efbfb regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6caa8b9e crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6cc7a762 ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x6cd17e49 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x6cf19c91 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cfc5a02 nand_change_read_column_op +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d0b8c5e percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x6d0ba1ef blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x6d20d150 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6d229544 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d30ec45 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x6d56cd2c xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x6d57cdee fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x6d5ac91b ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d752fe8 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6da3a3b8 crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x6dba21fb gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dbc489c devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0x6dbd33d3 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6dbf37f3 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x6dc55f09 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x6ddd2c8e handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6de3718e do_truncate +EXPORT_SYMBOL_GPL vmlinux 0x6dfabed1 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x6e065751 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x6e0902f0 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x6e1344c3 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x6e16271a i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x6e36fa41 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e3cf67b fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e402837 edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e5689b6 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x6e727a40 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9598dc dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x6eb4abbf snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x6ebc3a16 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ed1fc33 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x6ed32a6a __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x6edab4ee perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0x6ee83cb7 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f082e3a snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f19e354 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6f3490d8 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0x6f375fa0 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6f3cce78 of_mm_gpiochip_add_data +EXPORT_SYMBOL_GPL vmlinux 0x6f4c5e6c snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x6f61b69f sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x6f6e49be irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x6f790aab input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x6f7a418f pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x6f83dc2b dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6f9a8aab fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6f9f916d sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x6fa0fe86 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0x6fa388db scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0x6fb03e5d rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x6fb7e313 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x6fbe2a11 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x6fc7ea87 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fd0286f devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x6fd764c7 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6fdd9019 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6fe416b2 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0x6fe82304 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x6fe9d8ce __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffc3ed3 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x70121e93 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x701a0dc4 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x70205f9c i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0x7028fc6f nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL vmlinux 0x7035f895 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x703afad9 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x7042a404 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x704cd45a phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x704de5bf kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x70518856 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x70675070 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x7068f0ea debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7081b2cd rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x70b0ef70 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c6d827 mc146818_set_time +EXPORT_SYMBOL_GPL vmlinux 0x70cd00f2 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70ffc567 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710ef5db get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7127a03c amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7128a42c da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x712c6d4a pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x712d3fda regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x71322931 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x71324fee wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0x71369fcd crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x7140971f thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x71441a4b netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x7144c9bb __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x7146c57f devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0x7157c07b snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71643237 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x71720c2e mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0x7174a6ec irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x71771d19 snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL vmlinux 0x717eabb9 cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0x717edca1 iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7183db7b __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x71851d95 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x718fdb59 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x71991348 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0x71995b7e crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x719adbe4 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71af6e7c nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x71afb9ed devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71bdffd8 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x71c81e93 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71cb2661 rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0x71ced96d platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x71dc3235 do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71fa4d75 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x71fbe400 sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0x72047fec set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x72077def bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x7212bf95 phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x72243248 devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x7224ba22 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x72375a5f ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x72417e36 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x724a01f8 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0x724b78f0 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x725537c3 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x72594cf4 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x726042f5 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x726420ce tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7270a5a5 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x72754a20 __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72850c8b __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x7298d96c dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x72aee1ad sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x72b299e1 efi_capsule_supported +EXPORT_SYMBOL_GPL vmlinux 0x72b3947a tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0x72de9fe6 iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x72eab982 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x72f686c9 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x731ad624 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x731e6654 serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x734db772 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x734e48fc tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x735c9d37 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x73684978 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x73735bf5 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x737da7a6 devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0x738ae097 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x73a2226e pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x73a2aeed usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x73a39a82 mtk_pinconf_bias_get_combo +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73aa8a9f snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73dcc445 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x73dcf4d4 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x73f5f8e1 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x73f6eb26 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x7409576a snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x7429a8d7 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0x742f4e01 serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7441ca76 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x744b0476 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x747c5f8f ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x748da030 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x7494cee2 cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0x7499320c regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bb08ac ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x74cd68b6 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x74d08fdd i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x74ecf15f tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x74f54ebb virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x7501df4e xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x75023339 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0x750afdc4 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x7513b5ec __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x7519e30f init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7536f76f __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x755ae3c8 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x755d3f9f pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x75618d42 __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x75673d30 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x75736dfd tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x75747b7c sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x7579dd62 clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0x757b5d5f perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x758b3d23 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x759abf30 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x759f2a95 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x75ac2d4f __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x75b5725c regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x75beb8d6 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x75bf6cc0 is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d8eca0 device_register +EXPORT_SYMBOL_GPL vmlinux 0x75dd4ebe of_overlay_remove +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75f34a8c gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x75fb9062 arch_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x760a55d3 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7616f27c devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0x761b1a4b bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0x7624537e bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x762ce588 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x762dff47 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x763999e4 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x76556af9 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x765e9897 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x76642d35 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x76710a9c devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x767e4944 skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7683fa26 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x76a6e332 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x76b2d05f tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0x76ba54b7 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x76c2fe17 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e10a88 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76f20f27 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x77059663 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x771838b8 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x771eee33 nand_readid_op +EXPORT_SYMBOL_GPL vmlinux 0x7721b61f dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772e2c26 xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x7733cc0d usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x773f2713 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x77416637 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x7750cde1 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775eeb1c sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x7763037c usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL vmlinux 0x7766e3ef bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0x77752d69 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x777edeba vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x77855a19 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x779afca6 debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x779fa1f5 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77d7a471 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x78159785 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7823f5dc sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x78259f4c snd_card_disconnect_sync +EXPORT_SYMBOL_GPL vmlinux 0x7843400e ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x78476af0 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x78599204 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x786452d7 __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x78852f78 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x788b0ec1 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x788ce5b0 musb_set_host +EXPORT_SYMBOL_GPL vmlinux 0x788ff330 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x789b0174 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78af59bc ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x78bbd8d9 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x78c2d32a gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match +EXPORT_SYMBOL_GPL vmlinux 0x78e360bf of_usb_get_dr_mode_by_phy +EXPORT_SYMBOL_GPL vmlinux 0x78e90997 bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0x78f2c2de otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x78ffe9cc platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0x79004cc0 devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x790836d2 is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0x790ff046 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x79187f19 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x792a3fbc transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x793a93dc raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x793d3105 blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470651 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794a0461 rockchip_pcie_disable_clocks +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795ad217 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0x795e7106 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x79716b1d of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x798c9984 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x79952b0f skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x799e66e6 genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0x79ad5c74 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0x79b359e3 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x79baee7e fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e36a56 dev_pm_opp_get_of_node +EXPORT_SYMBOL_GPL vmlinux 0x79f29981 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x7a008aa8 devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x7a099d80 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x7a19366b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x7a205922 vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e9db1 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x7a3185d2 bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL vmlinux 0x7a48d06c cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7a5faab7 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7a653acf scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x7a65e34a __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x7a667b8b do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0x7a679964 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a7e2aa6 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a7f1396 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7abed5b8 regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0x7ac10ad8 icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7ac1c882 of_led_get +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7aca6db8 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7acc1163 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ad7ccff mtk_pinconf_adv_pull_set +EXPORT_SYMBOL_GPL vmlinux 0x7ae4c06f ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x7af7b528 tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x7afad9eb power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b2b18e6 fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7b3b8f6c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7b431cdd usb_gadget_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x7b4a4de6 crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x7b5a40b7 of_pci_get_max_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b607008 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x7b64d081 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7b99275e device_move +EXPORT_SYMBOL_GPL vmlinux 0x7b9a40f6 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x7b9f85c7 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x7ba66205 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x7bb43b1b usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x7bc09b8b inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x7bc62c50 bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0x7bd5ad06 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x7be2f239 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0x7bea059c of_map_rid +EXPORT_SYMBOL_GPL vmlinux 0x7beb1eab spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x7bece78b snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x7bf3bfa0 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x7c1ebc07 alloc_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0x7c30da12 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7c63ff3d pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c83a492 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x7c95a0b7 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9ed189 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0x7cc6d419 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ccb348b inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cdac071 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ce2e355 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceb63b8 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x7cee58da ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x7cef5db7 devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x7d002139 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d00ec6c usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x7d1f2715 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0x7d400d6b page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a94a1 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7d65a10f xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x7d843e33 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x7d8fec6a blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x7d95d26b platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7d9971ea is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7d9d6c48 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d9f44da regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0x7dae5f40 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0x7dbfaac6 nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0x7dc7b476 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x7dd0a296 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de6baf6 bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x7df67192 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x7df755b3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x7dfac8ba sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x7dfdc486 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7dfe7d01 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7dffc76b udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x7e08d3c8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7e095653 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x7e0e5e58 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x7e1f7bd7 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x7e1fc5a6 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x7e2370fe mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7e2954c2 clock_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x7e5052e2 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7e5adb4a kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e6006cd power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6d5655 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0x7e706887 virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0x7e768138 __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x7e79b13a sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e8e9b78 amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x7ea05208 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x7ead965b devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7f037e03 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7f072a09 snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7f2e7dfa snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL vmlinux 0x7f438dbe fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x7f48408c unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x7f4a37e6 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x7f5a14cb icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7f6404ac cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x7f733a2f iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x7f7c84e1 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f819c74 __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x7f8dd2bb bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x7f9ee09e icc_put +EXPORT_SYMBOL_GPL vmlinux 0x7fa3eaf4 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x7fa720a6 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x7fafdec9 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fb0084a of_msi_configure +EXPORT_SYMBOL_GPL vmlinux 0x7fb84aa3 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x7fc23190 spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0x7fee9dab alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7fefc863 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x801eb65d dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x803235e6 tps65217_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x803658c5 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x803ad71e pinmux_generic_get_function_groups +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x8061b697 pinmux_generic_get_function_name +EXPORT_SYMBOL_GPL vmlinux 0x80654865 irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0x80746ec6 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x807df938 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808becfd device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809463f8 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x809c8f99 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x809d2f45 blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x80b17b75 omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x80c16542 to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0x80c286fd sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c683c6 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x80c7f891 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e172c9 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x80ef00f2 xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x80f0ab92 md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x80f60bf8 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x80f7d128 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x80fe83f8 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x810004f8 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8113dc3e ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812073ba devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x812eb261 tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x81367782 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x8144bc83 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x817dd80d lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x8184a3b0 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x8186ab56 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x81915add devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x819aafde snd_soc_find_dai +EXPORT_SYMBOL_GPL vmlinux 0x819c47f6 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x819fe250 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x81a4807d ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x81a65d4a mtk_pinconf_drive_set +EXPORT_SYMBOL_GPL vmlinux 0x81a87102 xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x81a889d6 clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0x81ac7b0c pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x81b009b6 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x81b03377 efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x81ba53ee driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81c16d4d dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x81dcc59c ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x81e0f76a sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x81e48ed7 usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x81f2b867 dev_pm_opp_of_register_em +EXPORT_SYMBOL_GPL vmlinux 0x81f336c2 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0x81f6cf2f anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x81fe5212 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x82078467 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x821665de snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x821ec7f1 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x82279eb3 blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0x822d4fd0 perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x8238940e bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x82529887 fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x827b5218 __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0x8292645f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x829412c8 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x8299be56 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0x82aa9377 kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x82b4f3c6 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x82cb7b06 dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82edf56e page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0x82f2e98e device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x82fb7e91 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x82fbb602 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x831de5a4 perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x83251af4 vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x832805c4 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x833d14f4 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x833defc0 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x83465f64 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x8361db5e dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x83621371 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x83835b50 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x8385d1bd pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x838b52b5 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x8397fa54 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x839aa45f bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x839e5cd4 cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0x83a4e83b pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x83ace38c blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x83b896bd fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x83cc29cb sdhci_set_ios +EXPORT_SYMBOL_GPL vmlinux 0x83cda8cd path_noexec +EXPORT_SYMBOL_GPL vmlinux 0x8400def8 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x841a3d51 mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842829e7 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x842ef0ed cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x84392388 akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x843b9a82 get_tree_mtd +EXPORT_SYMBOL_GPL vmlinux 0x84457d84 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x844712df perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x845aa3dc lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x845b2069 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x846f956c snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x8475fc0d nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0x848375e1 clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x84882f19 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x84a07f12 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x84a31234 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x84a8d0eb of_changeset_revert +EXPORT_SYMBOL_GPL vmlinux 0x84c7730c syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84d120a0 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0x84d2fd4f irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x84e28f64 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x85183e0d fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x851ca19f __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x8535f017 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x854585a2 kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x856337f7 ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x858d6b49 dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0x859fb207 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85a891cd housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x85a9508f ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x85aca8ec user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0x85acb812 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x85b3f3cf inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0x85d33a1e crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x85e62c28 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x85f73f51 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x85fca1f0 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x8626cea3 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x86276dc1 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x86511ffc snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x865376d2 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0x865587a5 scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x8664087f bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8665230b percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x867876c8 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x867ba5be snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0x8685c1a3 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86b427ce clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0x86c8f5f8 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x8704e4e0 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x870c1ad1 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x870ffc34 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x87306816 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x873ba8cf ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x873cffe7 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x8740688e napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x874a3f40 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x874e1feb of_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x87650cfb bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x876e077f reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x877d3ac3 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x87974295 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x879d42a9 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x87a838a5 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x87b2b34e __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x87b7d617 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x87b9db09 i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x87c0be2e root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87d75019 __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x87f26d68 ahci_do_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x87f44489 snd_soc_new_compress +EXPORT_SYMBOL_GPL vmlinux 0x87f6090b snd_soc_component_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x8805a073 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x880ef295 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x881a3ad2 nanddev_init +EXPORT_SYMBOL_GPL vmlinux 0x88205420 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x883ca9d7 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8842ba61 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x887b167e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x887f229a devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x88828ef8 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x888593d8 led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x888a3e36 regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x888e9633 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x8898f81a nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x88a1a689 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x88a370b1 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88bd1162 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x88cc1be3 tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x88df080a skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x88ebe5c2 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x88f5503e snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x8919f015 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892985d2 dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0x892c0af7 clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x892e17eb ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x8931ac7d get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x893c4f63 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x89462c9e device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x897fd59e kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x8981aa36 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x898be1f1 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x898f5106 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8990b2d0 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x89ad4322 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x89b8f7d7 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bfe270 __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x89d2aaa4 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x89e343ec ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a346891 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a421f3b ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x8a46ca1e blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x8a4837a0 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x8a52b5c1 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x8a543738 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a5634f0 pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a5bdb25 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a7519e0 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8a7becb8 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x8a7e575a devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a85e51e rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x8a8642b4 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8a8dc671 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x8a93d9e6 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0x8a9b1819 devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8aa02161 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8aa20a67 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0x8aad89f7 exynos_get_pmu_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8ab35768 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abe83b9 wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x8abeff40 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8aed3677 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8af08bfd iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b178604 iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x8b347a4c gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0x8b5103e0 iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0x8b529ce4 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x8b531c42 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8b616927 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x8b6a3196 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8b7a1fe8 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8b7d0fb4 tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x8b866269 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x8b91f7a7 nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0x8b9341b5 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x8bbf1dba devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x8bdaafb6 tps65217_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8bebfe9a irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x8bf7d78b iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0x8bfd1519 xhci_mtk_sch_init +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c05be66 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x8c1873e1 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x8c202fcd linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0x8c2921e2 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x8c2ad8f1 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x8c39b9f6 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x8c3d7cef kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x8c3de2a1 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c490a00 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7bd877 __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c921433 of_genpd_remove_last +EXPORT_SYMBOL_GPL vmlinux 0x8c9ca066 of_platform_device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8ca34bc1 snd_soc_dapm_init +EXPORT_SYMBOL_GPL vmlinux 0x8ca5b844 tps65217_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8ca87076 fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x8caa0491 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x8caeeeaa rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8cb8635c trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8cc6992c devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x8cd05e15 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x8cd0796d tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x8cdad47e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8cfa721b efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x8d09a35d snd_card_rw_proc_new +EXPORT_SYMBOL_GPL vmlinux 0x8d0b6b86 badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x8d1979df ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d46f294 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d6a8259 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL vmlinux 0x8d7bc776 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d867b07 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8d99f95a perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x8da18664 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x8da47cf9 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x8dab2ad7 fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x8db76f80 crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x8dc11669 lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0x8dc57e7d thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8dc89e51 setfl +EXPORT_SYMBOL_GPL vmlinux 0x8dc9d1ff ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x8dcb9435 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x8dd93b74 fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0x8e03530c pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x8e0d010b mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e228955 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8e4b63a6 hisi_clk_register_gate_sep +EXPORT_SYMBOL_GPL vmlinux 0x8e4e69f6 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e51a3c7 dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x8e521a7d fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0x8e6b94f7 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8e6bb7fc ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x8e6ea19e tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x8e71dfc9 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x8e754863 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x8e764e71 __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x8e78077e usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8e7cd981 sdhci_setup_host +EXPORT_SYMBOL_GPL vmlinux 0x8e7d6697 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8e810d50 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x8e8a92a0 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8e8cee63 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x8e90a5cc rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x8ea1c3b8 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x8eab6847 of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8ebf1260 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x8ec40789 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x8ed93020 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8ee81268 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8eeb5b9f serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f13411c rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x8f1a8cf9 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x8f1c0d30 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x8f3484f2 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8f3f3d10 tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x8f432b31 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0x8f4399fd devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8f6b16a9 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f725e67 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f79c4c5 __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8f8a05cd extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x8f8eb34e cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x8f8ffeee fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0x8f90c702 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8f92bcc0 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x8fa833a1 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x8fb82178 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x8fba664e iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x8fcff898 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8fdac80f of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x8fe2c9f8 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x8fe46668 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x8ff4c9ef dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x900c88cd sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x901c1eba of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x901c6c99 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0x90284f96 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903de80c br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x90484d08 regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x9056ad2a usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x90589ae6 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x906dd327 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9075994a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x9076b11e skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x907f2fcd rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x90955a3f mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x90c1c070 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x90d61287 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x90d7b199 phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0x90ec0b50 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x90fa9325 rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0x910586d6 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x9120466e fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x912e89f5 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x91367738 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x914e405e gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x91519a16 dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x915c2647 fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0x91637e86 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x91731130 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x91748d21 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x917d0604 ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x91938636 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x919d9af5 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91da135d __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x91f7582d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x92024dda pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x921c96a8 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x9222e33b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x922730c0 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x924954fc __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924ce40f blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0x9259c7a6 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x925ec367 clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9267012b efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9282f433 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x9285ceb2 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x929745be ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x92a5070f hisi_clk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c4317f tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x92d1e61a rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d65713 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x92d6d405 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e807b0 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x92ee13fa compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x92fa9e25 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x93143761 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x931be4f6 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x9322e7b3 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x932b42b5 tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x93330f95 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x933bf7e1 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x93478487 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x934da8f0 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x93611443 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x937c911c tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x93805369 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x9380e2bd irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x9386cdb8 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x93952d34 edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0x9396c787 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x93a760f1 nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0x93cbc96b pci_host_common_remove +EXPORT_SYMBOL_GPL vmlinux 0x93d201aa sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x93dd433d gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x93e99796 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x93f22aa7 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x941a3d4f clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9422f939 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x943eece2 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x94400024 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x9441aa29 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x9450b066 md_start +EXPORT_SYMBOL_GPL vmlinux 0x945145dc soc_device_match +EXPORT_SYMBOL_GPL vmlinux 0x945a8b5b usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x945d9eb7 mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x9483c301 scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0x948ccdac dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x94a06a7a edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x94a6de24 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x94ab1ddb debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b8712d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x94d3078a perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0x94d6d8ad spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x94dc32d2 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0x94e28f5a verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0x94f67c6f dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9509a0b1 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x950f8fb7 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9532a42b usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9572e423 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x957a6e8a ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959a8178 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95e18249 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size +EXPORT_SYMBOL_GPL vmlinux 0x95f10843 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x9630728e amba_bustype +EXPORT_SYMBOL_GPL vmlinux 0x96308c70 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x9634a596 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0x9647bf24 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965ba57e attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x965d716b regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x967473cb ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x968cf4d5 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0x96a65bef xhci_mtk_sch_exit +EXPORT_SYMBOL_GPL vmlinux 0x96a74354 nand_deselect_target +EXPORT_SYMBOL_GPL vmlinux 0x96bce2f2 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x96ca63f5 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x96dce808 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x96e344c9 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x96f82e5f mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL vmlinux 0x9704a2a3 usb_role_switch_get +EXPORT_SYMBOL_GPL vmlinux 0x97084bcf cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x971d61f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9738f21b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x97393658 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x974a824d dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9767709e tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0x9783be9b usb_gadget_connect +EXPORT_SYMBOL_GPL vmlinux 0x9784bd09 sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x97861fc0 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x97b71dc9 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x97c9f34f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x97cf5f49 devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97ef9b0f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x97f2b9b1 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x98254ae0 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x98315ac4 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983664a0 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x9839288a devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x983bf6a7 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x9845051e blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x98483039 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9851e7b6 pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x986005c4 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x98613c90 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x98643225 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x98652e9d devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x9866dc5e shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x986b03ee scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x986c6c14 sdhci_request_atomic +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987efd5d irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x98937e75 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x98a8f3e9 nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0x98c80026 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x98e34d12 crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x98e4a126 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x98e63b38 gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98f0a4a6 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x98f16336 of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x98f349ec usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x9905e27d __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x990a649d phy_reset +EXPORT_SYMBOL_GPL vmlinux 0x99146583 devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x991f5472 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x99384613 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9941b461 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x99504b9e sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997858ca security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x9988ae1f pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9990d847 find_module +EXPORT_SYMBOL_GPL vmlinux 0x999e04a4 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x99a825ca pci_ecam_map_bus +EXPORT_SYMBOL_GPL vmlinux 0x99b7191f dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0x99c6741c nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x99d54feb tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x99d65ea4 dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0x99e00b75 sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x9a048866 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x9a0e3b8a __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1a7e55 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x9a1aad5f crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x9a2444b1 xhci_mtk_reset_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0x9a28e639 perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x9a2e069d dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9a4081c7 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x9a4cf30e devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x9a4fe0e8 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x9a519803 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9a5505a8 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x9a624f86 lochnagar_update_config +EXPORT_SYMBOL_GPL vmlinux 0x9a6b53d3 crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x9a76d5c1 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x9a77aaae serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0x9a8a5b24 regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0x9a9d434f thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a9e699b devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x9a9f7818 __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9a9fbae1 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x9aaa6d68 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x9ab1009d power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x9ab845bd thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x9abc49c1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9abe68b5 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9abfb3a6 dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x9ac05eec pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad56d2d __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x9ae6f953 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af07c4e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9afb26c6 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0x9b0749a4 of_get_named_gpio_flags +EXPORT_SYMBOL_GPL vmlinux 0x9b0b59e5 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x9b145063 genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x9b1a00aa dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0x9b3c2961 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b7faae1 kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b9fba46 dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0x9bc393b7 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9bc9d514 led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0x9bd44a8a __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x9be872c6 sdhci_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf273fc of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x9c19f7c3 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x9c1e52fe usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9c219f81 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x9c22780c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x9c2ef5da handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x9c340175 mtd_ooblayout_free +EXPORT_SYMBOL_GPL vmlinux 0x9c36b372 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x9c6e2b88 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9ca480cc clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x9ca83df2 __register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x9cb3b99a user_describe +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc61540 devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0x9cd04165 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x9cd733a2 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x9cdeccd1 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x9ce4d9d3 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x9d0227ae perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d11c092 irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x9d14e9fc serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9d196e18 devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x9d22bd98 iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x9d324570 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x9d444f83 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9d5835a9 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x9d5a0314 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x9d684b5c sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9d856f4c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x9d9700c9 __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x9dba64d7 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x9dc7c435 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x9dd3eff0 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x9dd6f033 sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0x9dd8f662 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x9dde519b gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e016686 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e1b02b9 phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x9e1be662 cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x9e22cf11 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e573671 nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x9e65a3e1 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9e65ed2b __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x9e6a95a8 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x9e7d0640 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x9e84016b powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9e8c81b2 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x9e98d13f rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x9ea98bd0 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL vmlinux 0x9ed0175a pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x9ed3b368 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee5e40a __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x9efb3622 direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0x9efbafb3 __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x9f0bb559 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x9f140889 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x9f229b03 spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x9f2b9f83 mtd_pairing_groups +EXPORT_SYMBOL_GPL vmlinux 0x9f2ff394 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x9f383df3 strp_done +EXPORT_SYMBOL_GPL vmlinux 0x9f3db81a scmi_protocol_register +EXPORT_SYMBOL_GPL vmlinux 0x9f5474be bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x9f5ef9e0 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x9f6bd3d1 of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x9f80526a crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x9f88d56e store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0x9f8d2c47 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x9fa657c0 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9fc2f37b mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x9fcd3441 xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdb59ed devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9feacdb3 cpts_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9ff329ed stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9ffe2d50 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0xa0129e77 devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa02fe141 __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa041245b usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0507399 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa05390f1 devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xa06d6b0b ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xa06e9493 nand_prog_page_op +EXPORT_SYMBOL_GPL vmlinux 0xa0756198 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xa0790786 blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0xa079f23d devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa0a43d01 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0xa0a827f4 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0abd32a add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xa0bb87ea usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa0ce1101 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xa0e588ab mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xa0ec358b rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0xa0eeff41 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xa0f1e931 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xa0fe7caf devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0xa1142c1c wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xa118603e serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xa12aa65b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xa13f6131 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0xa14a5997 component_add +EXPORT_SYMBOL_GPL vmlinux 0xa153c66d devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1558a7e devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xa1738126 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xa1743581 nand_soft_waitrdy +EXPORT_SYMBOL_GPL vmlinux 0xa1787994 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xa183d3f4 dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0xa1873ac5 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xa18c218e ahci_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa197eb7a tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0xa19a2752 dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0xa1a4bca0 rockchip_pcie_parse_dt +EXPORT_SYMBOL_GPL vmlinux 0xa1ac2219 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa1ae6743 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa1b556b9 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xa1cbf633 nanddev_erase +EXPORT_SYMBOL_GPL vmlinux 0xa1d1e2b0 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xa1d20684 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1e1e4cf nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa1e657c6 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xa1ecf90f mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0xa1f1bd3a arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0xa204b04f usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa208a93d gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa21ce8f3 mtk_pinconf_adv_pull_get +EXPORT_SYMBOL_GPL vmlinux 0xa21d3600 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0xa21d5c80 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0xa23b4682 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa23f3f84 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0xa23f5339 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa23f684b __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xa252f765 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa25429be usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xa2598247 of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xa25b04ef power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27bb85f of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa2805034 usb_of_get_device_node +EXPORT_SYMBOL_GPL vmlinux 0xa2824bf9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa295acea gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xa29ed50b __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa2a46c20 update_time +EXPORT_SYMBOL_GPL vmlinux 0xa2adfd4a netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa2b8aa9d regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xa2bc00b6 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xa2bd25da tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0xa2bf2393 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa2c31b2a proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0xa2ce4d88 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xa2d32bf2 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa32b9a42 snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xa333caac iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0xa33744aa edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xa346975c idr_remove +EXPORT_SYMBOL_GPL vmlinux 0xa35a0ec0 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa371312c debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xa374f2f4 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa37743ae pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0xa3788595 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xa37a3f7c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xa37e54fb iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa39a2185 pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0xa39d51fe devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa39f4d49 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3af89a2 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0xa3b0263c usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xa3b3a793 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xa3b3a8a0 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d02bba snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa3f6f112 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa4141ad5 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xa42e09f9 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xa4344a34 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa438171a simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa43d7547 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa44f0583 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0xa44fbefa __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0xa453b5eb __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa45dc275 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xa46151fd sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0xa46a305c ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa4803679 musb_queue_resume_work +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa48e004b iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa4a9651e nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4cb3f85 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa4cc19b3 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa4e450f9 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xa4f4fa39 dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xa4fab2ca inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xa4fe017c usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xa50103ba pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa508272c regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0xa520dc1b spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xa527536a iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa535932d device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xa53f0dd7 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0xa54de899 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa56534df sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0xa56fd470 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0xa5820ffb devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0xa58ef066 devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0xa5a48889 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa5a86ba6 devm_of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xa5b4b48a rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0xa5b75047 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xa5b8da0c usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5b9abae pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xa5bb24cd sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xa5c0455c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5da0c73 cpts_register +EXPORT_SYMBOL_GPL vmlinux 0xa5db52f9 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa5dd501d ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xa5e00e56 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa5e7936c vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa5ed9ccd pinmux_generic_get_function +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa62cea39 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xa62d1808 snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL vmlinux 0xa630d50c ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xa63d935b dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa6797846 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa68dbc47 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa699ae2c dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xa69d486c dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xa69edba8 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b25138 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xa6ca9b90 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xa6ddc2a7 xhci_mtk_add_ep_quirk +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e42c38 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xa6f57a89 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa70a0ab3 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xa71e8584 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xa720b102 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xa7256123 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xa7310993 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xa75a9ed3 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xa76e3b77 bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xa7802e2e btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa7a17870 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a4bd6b devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0xa7aaafde klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa7b552e1 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0xa7b9e2a2 xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0xa7cd6e36 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xa7d1cbd7 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0xa7d4ca8c usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0xa7fa9d99 tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0xa7fc975f extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0xa80a841e cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0xa810bc89 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xa8349f26 pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xa844722b regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xa84792da tps65217_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa850ff77 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa853b79c crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xa8617132 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa86f1679 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xa8727e73 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0xa87da6ab cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0xa8953448 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa89be317 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa8b95a0d od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8cbb5a7 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xa8eea646 blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0xa8f422ba __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xa909811a badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0xa909cc25 virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xa9101943 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa912e8c3 usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa92b1d0a __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xa92b7803 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa93104c0 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa946e614 __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa9524344 dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0xa952a157 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xa986359c sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0xa99094a6 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xa9951a52 clk_regmap_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a3601d ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa9c5c99c irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xa9c8cbd1 mtk_pinconf_bias_set +EXPORT_SYMBOL_GPL vmlinux 0xa9c9a7bc xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xa9df5899 crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0xa9e05660 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xa9e076f0 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL vmlinux 0xa9e81c0e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xa9f418e8 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa9fb2f09 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xaa194503 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2a8101 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xaa2c02ae clock_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xaa31fa11 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa84ba1b usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xaa88ba94 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaae3866 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xaabc095c __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xaad6f852 validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0xaada58f5 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xaae59262 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xaaecf75d perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaaedf7ed pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xab028109 of_detach_node +EXPORT_SYMBOL_GPL vmlinux 0xab09e1a0 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xab0d4708 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xab1086c2 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xab129818 kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0xab1472b6 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xab1cb9eb pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xab200849 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0xab2657d1 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0xab32ade0 pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0xab49c8a7 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xab4c9dac __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0xab4f4b32 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xab561a09 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xab580610 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xab598920 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xab5f1801 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xab681727 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xab703850 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xab79f396 crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0xab823511 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xab899252 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab9665f5 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xabc33efa crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc88561 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xabcda29e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xabcfa03b __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xabd46b7c ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xabf746d9 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xac058fb5 pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0xac08c3ea pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xac0a8265 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xac175057 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xac1fec31 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xac246174 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xac28688e dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0xac2a1eb5 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xac2cd7ea sdhci_set_power +EXPORT_SYMBOL_GPL vmlinux 0xac30c5ff da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xac38d8b7 of_property_read_u64_index +EXPORT_SYMBOL_GPL vmlinux 0xac476c0a of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xac55bcef rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xac5cabe3 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xac6c614d devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xac6cd15b devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0xac6dd543 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xac6dded1 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xac8ead6e device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xac96039a ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0xac9907ff mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xac9a7b44 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xacac68df __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacc9a22d sdhci_reset_tuning +EXPORT_SYMBOL_GPL vmlinux 0xaccffd6b snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xacd2e974 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xacd4765d fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xacd79fe0 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0xacf7a5f1 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xacfbb397 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xad0f2329 devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xad1eef19 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad54609e xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init +EXPORT_SYMBOL_GPL vmlinux 0xad6139b7 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xad615a0f policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad825edd mtk_hw_set_value +EXPORT_SYMBOL_GPL vmlinux 0xad84232b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xad9be1a7 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadb6e7ee virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae1b5968 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xae1b783d fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0xae263bbb devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae3f57ab crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0xae408443 xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xae422d24 sdhci_request +EXPORT_SYMBOL_GPL vmlinux 0xae4ddb79 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6c1f0a dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xae720219 devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xae78b21f icc_disable +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae8df4c0 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaf0be1ec dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL vmlinux 0xaf251845 mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0xaf2be95a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf376dbb ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xaf38a9ba pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf5271e7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xaf5e72be usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xaf608b34 fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf8cf51b regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xaf9b4a79 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xaf9e14e7 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xafa2edfb pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xafa47b3b devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xafaf86aa vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xafb12f3d devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xafcff03d fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xafd6390e pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xaff4c499 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0xaff836d9 devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xb0170673 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb01867c6 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb01ab70e dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb0232477 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xb023c11d irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0xb0269e32 soc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb0308952 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb04d1f7b perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xb059f2c0 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb05ecf46 irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb076205b fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb091b30c sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xb0a4f7c7 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c01d34 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0xb0df5812 tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0xb0ef155f pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xb0f58c90 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xb0fbb722 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xb1075f35 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb10efc61 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xb11625b9 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb1241cde gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb162238a ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb16a9286 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb16af8ce devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb17a99f0 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xb17d9190 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb18110e0 __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19f0ac8 pinctrl_generic_get_group_name +EXPORT_SYMBOL_GPL vmlinux 0xb1ad7e6f devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1cb041b led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0xb1cda421 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ebe6e2 devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xb1ecc46f handle_fasteoi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2314a50 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb245108f xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb259a6ca ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xb25ba5a1 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0xb26242ae snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28014db wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb28477af regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xb288a2e1 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xb288cdac irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xb29365e6 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0xb29f84bf devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xb2ade9f5 ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0xb2b5747f dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xb2bda61b usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xb2c0b4c2 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2d32efa spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0xb2de4cf2 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e8284a security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0xb2fadc38 clk_regmap_gate_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xb2ff407a crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xb3054c9b is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb31f2993 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xb320e68c iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xb3380fdd dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0xb33b0856 blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xb34609ad fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xb34f4303 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL vmlinux 0xb34f8248 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL vmlinux 0xb35ed2b7 fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0xb360036c usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb3627220 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xb3658177 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb36d0cc6 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xb378559e freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xb37dab97 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xb37f41e9 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xb38348a3 skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xb388b208 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xb38f778b dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb3903d78 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0xb39c7cf9 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xb3b41ab9 platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0xb3c0d3f1 ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0xb3cb2272 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0xb3dcee6d bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb3e496d8 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xb3e6dc61 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xb3fc8464 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xb3ffcd0c devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb40c6376 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb41c5b2d srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xb423a3fc regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb45054c6 musb_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xb455de0a sdhci_dumpregs +EXPORT_SYMBOL_GPL vmlinux 0xb4562ba5 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xb4600bb5 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb460ea51 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xb463e606 dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb487b64b perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xb48e5dc3 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0xb49a5e82 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb49bc095 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xb49bde4b tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb49de221 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xb49e21b1 cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0xb4a00291 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xb4a3a884 pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d08c62 pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0xb4e9c2ce nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eb0dac irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4edad72 securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb50a562f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb50c3ea9 devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0xb51da0de snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb537e461 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0xb5394d5c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xb5431579 sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0xb54f565e md_run +EXPORT_SYMBOL_GPL vmlinux 0xb57556ff bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0xb57bf656 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb586d33d devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb5926eec xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5987cc3 devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb5a79ec4 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xb5b4df74 fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0xb5d5ac17 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0xb5d951bf gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb5dcd8a0 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xb5e24239 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0xb5ed88ce mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0xb5f5cef2 nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb5fd2720 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xb60688b9 fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62b3316 xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0xb6388286 of_reserved_mem_device_init_by_idx +EXPORT_SYMBOL_GPL vmlinux 0xb64cb9a8 power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0xb65e1678 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb66a477b tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb66e49b1 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0xb6710124 qcom_smem_state_get +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb6812ce6 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xb6836ae3 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xb68a2d7c sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xb68eb916 call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xb6a363c1 blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xb6beb2c5 fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6ed824f fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0xb701d07d sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xb7075e96 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xb70e86b5 relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xb715b8bf dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xb72e169f __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73667e0 devm_thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb737399b usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xb73fb62e ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb7421a2c usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb74538d2 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xb7491c17 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0xb74a14bd mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0xb7645136 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77db4cd software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7aa1376 xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0xb7b81fa2 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0xb7be686a blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xb7befb99 phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7d2590b led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xb7df7e94 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xb7e91dab ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0xb7ea57e7 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0xb7f77cf7 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0xb7f7a873 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xb80957e5 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb828fbf9 xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0xb846c8e7 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0xb84a05d8 dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xb84f9e24 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb867fd7d watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0xb8752e4d __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb8762885 icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb8a1832a clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xb8a30d26 devm_of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xb8a6125c driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb8ad147b crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb8b139e8 of_phandle_iterator_next +EXPORT_SYMBOL_GPL vmlinux 0xb8c5614e ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8efabcd platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xb8f6c6d9 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb905a316 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xb9084b12 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb90a1fcd rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xb90a8f31 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xb9138620 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb91d1b85 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xb9271c67 sdhci_execute_tuning +EXPORT_SYMBOL_GPL vmlinux 0xb9370ac9 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xb9493544 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0xb94dbbcd wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb951a675 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb9567f97 pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0xb9595e3d splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xb9610714 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb966fb6c unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb9746164 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xb97762cd bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb97c0083 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb984d0b9 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb994cac9 spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0xb99a93f5 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb99d3629 synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xb9a70aa5 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c40692 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cac776 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9dae89f snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL vmlinux 0xb9df8728 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9ee463e irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xba0bc88a xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xba0e02f6 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xba12fabd event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xba165ea8 bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0xba268162 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba2d9c3e regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xba338333 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xba361d89 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xba370d6a tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xba39af51 fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0xba3b7ac3 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xba4034a3 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xba485768 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xba4e26bb mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL vmlinux 0xba5c9402 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0xba70e27c phy_get +EXPORT_SYMBOL_GPL vmlinux 0xba73eea2 xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0xba784ee9 fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0xba858898 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xba94007e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xba96e753 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0xbab87f20 snd_soc_runtime_action +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac16ea3 dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbad07e94 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xbad16e30 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xbad6e714 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0xbadb98b7 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbae4b5cb kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbafa1cba irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0xbafee2f4 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f3d97 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0xbb135277 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbb1a1f1e regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbb2124ea sdhci_adma_write_desc +EXPORT_SYMBOL_GPL vmlinux 0xbb4c7570 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xbb546c4a sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0xbb55ce48 pinctrl_generic_get_group +EXPORT_SYMBOL_GPL vmlinux 0xbb633f81 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb664670 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6ab13e devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb7af105 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xbb902505 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xbba74717 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbba7a839 snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL vmlinux 0xbbaf9413 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xbbb819fb gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0xbbb9f8da led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xbbbbfa1b device_rename +EXPORT_SYMBOL_GPL vmlinux 0xbbbfd043 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xbbc3f51d devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbcaeba3 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xbbcd5770 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xbbd422b7 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0xbbf5fcd1 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xbc18acaa register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbc260c3a iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbc2e1849 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xbc66e9e6 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xbc6a40e8 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc717921 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0xbc95a31f of_property_read_variable_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xbcbf1d4b pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xbcc091ad snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc45af1 regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0xbccb8f48 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd1698b1 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd229211 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xbd2f55ad devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xbd31662d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4e8b52 __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xbd6a95b3 nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xbd7f99dd led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0xbd9c3668 pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0xbdaf099f devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xbdb7bddc skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xbddc686c metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0xbde28566 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbe00222c trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xbe09cd07 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xbe0f69fc pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xbe13eb13 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xbe145ccc devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xbe18966b __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0xbe191c11 tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0xbe2ee267 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xbe33ef48 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xbe3b52bb ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0xbe40397e iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe89550b serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe990334 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xbe99c3a2 sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea12b3d iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea9b03d dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xbec0a452 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xbee59e37 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbef0fab9 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xbefb53aa register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xbefe32d7 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xbf03072b devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf050b21 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xbf0c357c mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xbf1c424f rockchip_pcie_enable_clocks +EXPORT_SYMBOL_GPL vmlinux 0xbf1f5fbf devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0xbf335f6a blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xbf4eedd2 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xbf50a9a3 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xbf525dc1 icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf7128d9 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xbf795a86 phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0xbf7995c9 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0xbf7f9bce sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xbf8210d9 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbf86bbed of_i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL vmlinux 0xbfac31fb snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc12e6a __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xbfc6aa55 rockchip_pcie_cfg_configuration_accesses +EXPORT_SYMBOL_GPL vmlinux 0xbfc8f6cc devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xbfd7b111 gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0xbfe335d5 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff65061 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbff85f34 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbffce09b rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc006b0b5 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc00a5816 pci_host_common_probe +EXPORT_SYMBOL_GPL vmlinux 0xc018e1a0 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xc026b82a dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0xc03c72f6 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0xc0420b23 usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0xc0429a71 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0xc0583e20 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc06b77b3 __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc06cc9fb adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc070fa2e tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc07bf56f clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc0883e4e nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0xc08930fb adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc0952c38 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc09ea3fb pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0ae6e2b spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc0c2cac4 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ee3d5b of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f56b2e proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0xc0f9e2b3 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xc1023c29 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xc10655da xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc150aaec ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0xc16ae939 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0xc172134e synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc180fd6b pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0xc1879adb crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc19b8560 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xc19c3a66 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc1a46204 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc1bfa5cc vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xc1fbb896 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xc2018cf9 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0xc21b3cca devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc21b5d33 sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0xc222ead3 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22e665f mtk_eint_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xc231abb3 devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0xc2351fd3 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xc23a3513 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc23b03b8 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc248c495 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc270550f clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0xc27c382e serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xc27f3bd6 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287e18d snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc2a261ec exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc2a5e44a pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2c79381 sdhci_cleanup_host +EXPORT_SYMBOL_GPL vmlinux 0xc2c95290 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xc2db7e18 xas_find +EXPORT_SYMBOL_GPL vmlinux 0xc2fd27ec extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xc33082cc __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0xc33ac9ae dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0xc33c5071 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3434c18 of_genpd_add_provider_simple +EXPORT_SYMBOL_GPL vmlinux 0xc351a642 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc352c63a pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0xc35a817e phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc36d535c tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xc370fd24 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3903278 of_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xc3a7d4d2 xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0xc3ac94d5 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc3b5261f generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3c79ba3 snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xc3dc064c hisi_clk_init +EXPORT_SYMBOL_GPL vmlinux 0xc3dd2629 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e8229e tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3fceef3 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc432727a regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc4469d98 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46ef6b9 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xc471a76a pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4795576 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xc480883a crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4937fde ti_clk_is_in_standby +EXPORT_SYMBOL_GPL vmlinux 0xc4a2a662 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xc4a2fcfc dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xc4a6d260 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc4b4163d devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xc4b6971a mtk_build_eint +EXPORT_SYMBOL_GPL vmlinux 0xc4b8bf76 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc4cf2420 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4f99397 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xc5045c0b class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc50a5b2d regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xc5131b13 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc5178ff8 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xc548c94d __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xc5578bd2 __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc56e2d29 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc5793196 tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5bcd942 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xc5cc4e86 clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0xc5eff032 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xc6022992 omap_iommu_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0xc604b04c dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xc605a165 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc60cf30e regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0xc60d26ac skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0xc6161b4a vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc623f199 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xc62ada50 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xc62e76ce shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0xc6336783 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xc64a59b4 cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0xc64bfb31 cros_ec_check_features +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc65c1b97 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0xc65dbe1d ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xc660cec1 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc67a452a tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc67abd96 kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xc6865e7a __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69fa0f1 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc6a2183e devlink_register +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a57864 fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0xc6b56a85 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xc6b594e5 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0xc6bb9899 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0xc6c3bb07 sdhci_get_property +EXPORT_SYMBOL_GPL vmlinux 0xc6c3ed50 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc6d2d06c usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xc6d3e5ae pinctrl_generic_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xc6dbfcef devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xc6e2ebaa locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xc6e667f1 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0xc6eec8f5 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6fb5314 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc732c97d spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0xc732ffbb ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xc73a9e70 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xc7591b37 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xc771f25d alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xc7722886 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc783e82d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xc787f768 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc79144f5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xc79c269b nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc7a00c88 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a9db52 pinconf_generic_parse_dt_config +EXPORT_SYMBOL_GPL vmlinux 0xc7b6d83b snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xc7c372b6 find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xc7d20fc3 phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0xc7eed052 scmi_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc7f70176 dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc80387e2 lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0xc8122200 switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xc8189731 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc81cce84 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc82f618f sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc831dc99 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc8355b5b security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xc83ec7cb fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc848f1db register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc8789b73 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xc8851c66 dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0xc88bf11b sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0xc8a04183 nand_decode_ext_id +EXPORT_SYMBOL_GPL vmlinux 0xc8a64466 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xc8b314e7 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc8b498a0 of_clk_hw_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xc8d9c5ce irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xc8dadcdc devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8eddd03 hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xc8f8a458 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc924a527 bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9405618 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc963eb3a crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xc96fb674 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc9874130 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xc98cb534 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc98eb439 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0xc995728b snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0xc9a228ce property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0xc9aa1203 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xc9c1f42f unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9c40a25 thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xc9d36480 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc9d3712f phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xc9d393da sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fb00f7 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL vmlinux 0xca1274c0 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0xca184293 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xca235722 icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0xca2397fb sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0xca23eea3 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xca2e468c irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0xca2ec968 mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xca307a4d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xca32b605 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xca3ab270 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xca467318 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xca472dc8 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xca61103d phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xca65a352 edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0xca7a6fea open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca99d65b adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xca9cd3d8 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0xcaa7bef3 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xcaaaf52d gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xcaaee61d sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xcab59d25 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xcabca3bc ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabe1206 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcad0ad1a l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcad66dd4 crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcade6d41 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0xcade86e1 mtk_pinconf_drive_get +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb458c21 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xcb46038d find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xcb4687f3 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xcb51d4d9 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb717238 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xcb7e291f ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xcb92e17c tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xcb95bd18 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xcb974f4e snd_card_ref +EXPORT_SYMBOL_GPL vmlinux 0xcba16565 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0xcbaca79f snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0xcbad1950 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0xcbb37823 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0xcbbcd23e devlink_net +EXPORT_SYMBOL_GPL vmlinux 0xcbd56dac device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbe7845d sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc1880c3 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0xcc1c0683 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xcc1df058 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0xcc1e1129 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0xcc201698 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xcc20ac52 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc312197 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc341e31 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc39ddcd nanddev_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xcc3bc4a3 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xcc458613 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0xcc4c7d67 devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0xcc5c7635 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xcc642fa8 sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0xcc7441e5 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcca2d205 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xccbf1426 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xccc6170a da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xccc7118d hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xccc9fd6e __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd0d0b6 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xccdf176f devlink_free +EXPORT_SYMBOL_GPL vmlinux 0xcce0c7ff ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xcce1cd57 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xccf2ac63 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xccfda890 crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xcd084ab6 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xcd16e417 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0xcd19bfc0 gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xcd24b427 iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd2c7ed5 bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd417f51 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xcd4371ca serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0xcd455eaf get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcd5bbd89 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd5c0de7 devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xcd6d49bd serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd7b7cfa snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0xcd824f0c input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd952233 nand_select_target +EXPORT_SYMBOL_GPL vmlinux 0xcd96b586 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9856de mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcda75b8d snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xcdb4a156 usb_gadget_activate +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbd89dc __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0xcdbf39ad crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xcdc12a9a md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd56ca8 l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0xcddfca2b efivars_register +EXPORT_SYMBOL_GPL vmlinux 0xce1980c0 dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xce1a565e dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0xce1b1043 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xce553d39 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce562fd1 sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xce62230e of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7f368c ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xce94511f blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xce9834c3 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xce9862d8 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xcec02d26 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0xced8bea9 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xcede3362 pci_ecam_create +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee88e7a of_overlay_fdt_apply +EXPORT_SYMBOL_GPL vmlinux 0xcef4d5b4 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf00c26a crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0xcf021029 shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0xcf041338 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xcf260a58 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xcf28f55e trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xcf2c1278 sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0xcf432ecb rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xcf52180e usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf750097 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcf7cc9fb palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xcf851f7a ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xcf868a5b dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xcf99772e devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xcf99c391 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xcfbb266c __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfcf96fd devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xcff31c27 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xcff5d7fe nand_read_data_op +EXPORT_SYMBOL_GPL vmlinux 0xd033fa08 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd039709f gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd066a3a4 wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd068ffe7 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd06e6e84 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0xd097b7ef ping_err +EXPORT_SYMBOL_GPL vmlinux 0xd09b5b71 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xd0b6ac3a usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d0b837 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0xd0da0346 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0e98db5 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd112efbb sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xd12159a7 stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0xd1265325 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0xd1413e07 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xd1435f2a set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd143c714 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1495f05 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0xd1603ad3 i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0xd168bd6c pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xd16e8479 user_read +EXPORT_SYMBOL_GPL vmlinux 0xd17af081 synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0xd180505b edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd1855509 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0xd1992dee pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd19ce1b7 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0xd1aa2722 iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0xd1aecc83 switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xd1b69154 led_put +EXPORT_SYMBOL_GPL vmlinux 0xd1c0e562 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd1c67937 screen_pos +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1d1aa3d snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xd1e0574a of_i2c_get_board_info +EXPORT_SYMBOL_GPL vmlinux 0xd1e39c2c devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd2008431 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xd200cb08 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xd207bb20 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20e133c sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd21cb4fc alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xd224ba99 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xd23b52ff ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xd23fc34e firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0xd251ec25 usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd265e6fd vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0xd26cc82a nand_ecc_choose_conf +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a3b316 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xd2aa4be9 fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xd2ae8739 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xd2b0fdae of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2b55e47 do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0xd2c0e5c3 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xd2c636a8 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xd2d31db5 device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2e682e2 usb_role_switch_register +EXPORT_SYMBOL_GPL vmlinux 0xd31197f5 sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd32da1ee lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0xd32f8d59 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd342202d dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xd3448bc7 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xd3470315 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd37717f9 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd37c3b0e pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xd3821d0f gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xd38c4a7f fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xd38e8aca efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xd393153b pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0xd395770d virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd39f7f2a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xd3a61dc5 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xd3c55759 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL vmlinux 0xd3ccfc76 i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0xd3e43257 dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0xd3e8c3b7 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xd3e97c21 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd3febd1d bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0xd401a1c7 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40bde76 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL vmlinux 0xd4235392 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xd42fc7ff fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44bb3d9 handle_fasteoi_ack_irq +EXPORT_SYMBOL_GPL vmlinux 0xd4587346 uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0xd45b1fd0 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xd4680958 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd468bca8 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd46a2767 iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xd46dbb7e snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd472adde iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd489a448 blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0xd48a6a86 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0xd4a225c9 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd4a3fff5 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xd4a97a0e snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c31550 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xd4c9fd18 of_phandle_iterator_init +EXPORT_SYMBOL_GPL vmlinux 0xd4dbdc46 dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xd4dea460 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0xd4e59842 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd50259c0 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xd5181258 icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0xd5184f3a uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xd52a887c regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd52c4681 xhci_mtk_check_bandwidth +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd538e72d sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL vmlinux 0xd5515b36 icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0xd556b15b ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5608567 mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL vmlinux 0xd5796189 devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xd579f205 snd_soc_dai_active +EXPORT_SYMBOL_GPL vmlinux 0xd57e98ae rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xd58a2384 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xd5918d8d phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd59effbf usb_of_get_companion_dev +EXPORT_SYMBOL_GPL vmlinux 0xd5a294be ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xd5ac24e5 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xd5ac971d serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xd5b5075e nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xd5de9b14 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xd5e2423f percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xd5ea2e9a platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xd5eb8fbd dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd6001e66 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xd60da7d7 of_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xd6164816 blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0xd6256ed7 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd639ec6e devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xd63ba8c9 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xd63ce82a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0xd64045b4 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xd6471cc5 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd648bc19 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xd64dd81f regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd65398bf sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xd653b126 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xd657fee1 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd65b28b6 __sdhci_read_caps +EXPORT_SYMBOL_GPL vmlinux 0xd65debc9 sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xd670a8aa driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd685045c sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xd688c221 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xd68f9928 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0xd695c28d snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0xd698bd70 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xd6a3ec85 cpts_misc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd6a8b054 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0xd6c43f01 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xd6de0382 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xd6fd4c27 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0xd71dcdd4 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0xd71df75e regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xd7285705 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd7367b2b sdhci_cqe_enable +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd7512036 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xd766e8f2 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xd7689434 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76f0634 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xd7744b17 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd7780f40 ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0xd78a2acd spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xd7a293d8 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0xd7b411cb __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xd7b4d11e serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd7b5550c cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd7db66bc cpts_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7e98719 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xd7eab111 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd81bbe58 rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xd828e92f dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xd82e6955 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd839ec4c usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd83d5166 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd858736c cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xd866e1c6 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd8680d36 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xd879c06b __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8858336 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd88c87c7 bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xd896ac79 __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xd8a3e2d3 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xd8aa661e gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xd8be0a91 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd8ca9a05 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8d24416 hisi_clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xd8d654ca list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type +EXPORT_SYMBOL_GPL vmlinux 0xd8f4a113 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd8faa4b3 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd8fbfc6b fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0xd8fc6e84 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xd8fd9d47 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0xd9048864 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xd906d98b skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0xd90f60ae get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xd9152bbb regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xd91a5f54 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0xd91fb969 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0xd9290220 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xd93165be pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0xd936815c ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xd942ab85 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xd95f1222 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9793884 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xd9af53c3 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xd9cdade1 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd9cec6d9 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9f2adc0 snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL vmlinux 0xd9f3e65f __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda00c8b3 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0xda04ac25 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xda0b86b5 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda0dc10c ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xda0f4289 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xda1129c8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0xda12e598 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xda185430 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xda21d865 pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda413b81 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0xda53a8e6 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0xda79e665 devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0xda87ef57 __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xda8cc3b9 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda938d6f __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0xda98e7c9 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xda9d1f16 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xdaa031b8 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdab58d77 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdaf2e961 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdaff3d78 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xdb1fc9bf wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb30deba virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xdb426417 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xdb765acc gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0xdb80a247 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba22696 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xdbba5143 fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0xdbd89801 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xdbddb8ef extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0xdbe02232 crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xdbe03ae4 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc29b6db sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0xdc2a7213 snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL vmlinux 0xdc2c58ce __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xdc324b33 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xdc45f62e gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0xdc4af0f2 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0xdc50bd57 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xdc51e763 blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0xdc58c6f6 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc659d6d regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xdc693667 noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0xdc6db16f genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0xdc715588 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xdc720e86 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xdc7ce353 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8d100d snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca76116 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb5a6f4 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xdcd505bb spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xdcd9ac08 mmput +EXPORT_SYMBOL_GPL vmlinux 0xdcdeaeb7 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xdcef1645 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0xdcf005f8 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0xdd03116c crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd127a06 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdd21316c nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0xdd2480b9 mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0xdd27bb1f devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4ab49a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xdd4e01aa devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd74dad5 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xdd769f9e synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0xdd7aaceb debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0xdd85063c lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0xdd8e2868 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xdd970521 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdda1a2b9 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0xddae3d4d ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc036e5 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xddd5ddfa usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xddd6a7be devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xde037b6c da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xde0a5d78 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xde219c23 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0xde25f88c __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xde384afb regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xde5baa88 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xde5edec5 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde6f9fc1 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xde82a7cf component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xde889126 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xde8b05be crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xde96676a snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xde98a7ae pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xdea660c1 bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeafdeb6 of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0xdeb020ae __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xdee1919a switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf255dcf memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf283031 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xdf37ff4a regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf3df475 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xdf49a57a ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xdf5c93ce device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xdf7fa33b __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0xdf8b667d nand_erase_op +EXPORT_SYMBOL_GPL vmlinux 0xdf913fe5 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdfab5c0b snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xdfad9cde sdhci_calc_clk +EXPORT_SYMBOL_GPL vmlinux 0xdfbfd6c8 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xdfc03cd7 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xdfc2c6ad __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfd776e6 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xdfe89166 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xdff6529b crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0xdff7a0d1 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xe0016151 pci_parse_request_of_pci_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe0204064 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xe035dd82 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0xe0373805 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe0397480 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xe045831a usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xe04e99d7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe065ceeb i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0xe0713b96 fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0xe0777dc5 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xe082c3eb ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe087bfc7 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0900611 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0989cfd __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c99ae3 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe0cb3936 validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0xe0d1b363 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe0d903f3 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xe0e51197 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xe103875a mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xe1234eba simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xe126360f fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xe126553f __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe1265de1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe12eff31 serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0xe14c76e7 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xe14ce4b0 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xe1502545 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xe1653a54 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17bed42 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xe1840a3e sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0xe1871bf8 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe18960ba nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0xe18d51c8 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xe195ec0b device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe196dadd cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1be1048 nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1c3b0ad devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1cad266 icc_enable +EXPORT_SYMBOL_GPL vmlinux 0xe1cb1fec gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xe1cfa261 __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0xe1d00099 fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0xe1ea77b8 fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0xe1ef2ba5 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe1f11bd9 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe206f5f3 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xe20bb90f devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0xe20bd8dd tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe2262584 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe22c01b4 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe23aff22 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0xe25438f5 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe25b8673 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe2717792 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xe27c8c88 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe281411f crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xe28c6363 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xe28faf95 fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0xe2a356ec pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2b858b1 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xe2c5f4ea snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe2cba341 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe2d8b8b6 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xe2e9b915 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe2fd79e1 sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3052ab0 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0xe3073583 is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xe30aeeba snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0xe30b50d4 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe30f60a3 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe331e165 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xe33368d9 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xe351240d cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xe3746620 clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0xe3863555 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xe393aa63 scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0xe3988901 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe39c308b snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3b21e53 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xe3bffa49 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe3c1d355 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xe3d5c9db tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0xe3dbee49 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xe3de2d72 sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0xe3f0e5d2 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xe401d61f gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0xe402a6ef ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xe402dfb3 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0xe4034d9d crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe406e2b1 iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe4298c01 mtk_pinconf_bias_disable_get +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4369a2d led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0xe4378b13 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0xe43fa84f inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xe4440b08 usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL vmlinux 0xe46ba8fc of_genpd_parse_idle_states +EXPORT_SYMBOL_GPL vmlinux 0xe471e9a7 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe47c0914 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe4817f1a pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0xe4844367 blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0xe48ad1fa of_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xe48fc882 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe4954950 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a1ba26 phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4c9f178 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe517137d device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xe52acaa7 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0xe531c3cd decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xe53595d1 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe54efcab of_pci_dma_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xe5502be4 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe56f0b94 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0xe57b993d init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58e0fad ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe5906f2a pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe5909cb4 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xe591518c spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0xe597a5d7 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL vmlinux 0xe5b32c12 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xe5b93279 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe5c2e244 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xe5cb1943 hisi_clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xe5d7409c alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xe5d9cb1d snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0xe6034a0b devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xe6054040 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe61e3075 mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL vmlinux 0xe6261a38 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xe6263c0b __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe62a3a85 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xe639be46 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe6512462 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe65132eb device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe658dd5a sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xe65c18b1 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xe65d4791 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xe65dc828 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xe66b1d0e iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0xe66e9406 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe671a610 devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0xe6790345 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xe682cb43 perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0xe6a257f1 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6a3ae9c serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0xe6a6eced call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe6cd65f8 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0xe6d4cda0 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6d6fed4 rockchip_pcie_get_phys +EXPORT_SYMBOL_GPL vmlinux 0xe6d81d31 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xe6e3203d of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6f00e48 nanddev_bbt_init +EXPORT_SYMBOL_GPL vmlinux 0xe6fe1ebc pinctrl_generic_get_group_count +EXPORT_SYMBOL_GPL vmlinux 0xe70dc445 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xe712f1ea iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xe7269fc1 encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xe72ce54b sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xe7460f1c securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xe747297d xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe750b83f mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75625fb cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe75e69d1 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xe7610a07 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xe76673fb dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe775b60a sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe781c3ce page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe78ade67 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xe78f3362 device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0xe792fb80 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe7c04497 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7ca43a2 nf_route +EXPORT_SYMBOL_GPL vmlinux 0xe7cded8c pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xe7d0ca87 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0xe7d1e5c6 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xe7d556b8 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe81f0cd6 balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0xe835cb2c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe852f819 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xe856bbf1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8695574 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xe8adaf29 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xe8b0f3c1 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xe8e99841 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xe904af98 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xe90dd344 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xe911440f usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe91614e0 pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0xe91aea4b led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0xe9269db7 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe92b815d devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe9348a86 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9446209 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xe9545fcc fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe96baabb rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0xe96cc89a ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xe96d01cb devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0xe9828d5b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xe98b4017 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0xe9914eb8 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xe9952056 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0xe9a7d971 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe9a7fe16 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0xe9ab1d19 fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0xe9adab17 _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe9af484b mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0xe9b18d6c __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe9b2855d serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xe9b349fc arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe9bbe6e6 __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0xe9c00825 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe9c616de cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xe9caef0a rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d26bc5 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xe9d3a9e9 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xe9d7cefd __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0xe9dd40a7 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea1f6e0e hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xea28d80f wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xea344098 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xea36593f crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea4076a7 crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0xea4a09cb mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea576634 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xea595211 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xea5e9c5a scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0xea852ef2 proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xead7fcf7 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeaf2caf0 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xeaf4d850 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb1d63fe nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL vmlinux 0xeb34d73d dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0xeb354273 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb3eb997 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xeb417877 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb7659b5 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xeb7e6c81 raw_abort +EXPORT_SYMBOL_GPL vmlinux 0xeb874d34 platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9fd52d extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeba27183 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xeba6c88b l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0xebad4be3 crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xebad716b snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xebb468ad blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xebbbc037 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xebbe1622 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xebc3f0c3 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebd907aa regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xebee6eb0 regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0xebf0d8df of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xec0f707e amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xec0f8740 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xec182742 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0xec3cbc9e tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xec56ad88 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec766113 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec7f6c08 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xec8466a8 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0xecab90f9 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xecb2e49f virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0xecc5210e sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xecc9d8f3 mtk_pinconf_drive_get_rev1 +EXPORT_SYMBOL_GPL vmlinux 0xecda4204 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xece143de transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xece48c85 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xecf85683 of_css +EXPORT_SYMBOL_GPL vmlinux 0xecfe73dd devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xed15b2af scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0xed1be95f snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0xed344146 mcpm_is_available +EXPORT_SYMBOL_GPL vmlinux 0xed38c848 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0xed39673e blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xed5f7137 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xed754c81 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xed77864d of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xed791c02 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xed8bbe99 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0xed8fa7ee nanddev_isreserved +EXPORT_SYMBOL_GPL vmlinux 0xeda04e24 clk_register_hisi_phase +EXPORT_SYMBOL_GPL vmlinux 0xedadb282 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0xedb1e9eb led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xedb1f361 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xedefc416 iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0xedf70ad6 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xedf9e70c clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0xedfc3d7f gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xee077e52 gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0xee108edd devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0xee1ae1db ip6_input +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee3f03a5 pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0xee3f8561 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee58c5a0 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xee5dcf3a regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xee5e3ed5 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee772015 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xee85746e snd_soc_dai_action +EXPORT_SYMBOL_GPL vmlinux 0xee8588f9 genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xee870586 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xee8866e8 strp_process +EXPORT_SYMBOL_GPL vmlinux 0xee8a9719 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xeeab725d device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xeeb3de6a ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xeec4c43f snd_device_get_state +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xef011ec9 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xef043849 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0xef1b2f6b ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xef256426 iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef30d34d cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef5972fc nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL vmlinux 0xef65f2de regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef78ea04 gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0xef81fef9 phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef824117 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xef83eed1 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xef9047f9 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefa686ac gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xefaace6e mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0xefcd6a6f power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xefce9e1f serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xefd41698 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xefe76471 i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xeff21b4b fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xf01fc866 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf02ab551 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xf03317f0 fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xf039fbe3 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xf0514f04 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xf05842db edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0xf05f2afa platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xf07fa1c2 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xf0880153 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf09bbe0f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xf0a06e05 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xf0ab6426 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf0b88846 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xf0c70957 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xf0defc09 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf0e00ef2 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xf0e80c57 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xf0f6088a iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0xf0f852d2 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0xf0fa97ee dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xf0fae899 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf10bc887 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf126f385 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf15f408d irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf16e2502 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1885542 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1a43789 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1cc538f ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf1ce9378 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xf1d4ec73 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0xf1e8e565 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0xf1fae6a3 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0xf1fc382a of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xf207f720 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xf20ce2ca pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0xf20cec77 thermal_zone_of_get_sensor_id +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22557d8 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf2272275 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf243e27a dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xf2497728 ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0xf2527a0b bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf25b2745 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xf262b9e2 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xf265c367 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf27108a4 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0xf279c625 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2bf1bbd ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xf2cddd33 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf2d6b0ff sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0xf2d7f744 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf2ee5293 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xf2f75798 spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf318a38f relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3222c7c class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf342fd5d freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf3435ffc serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xf3522e96 __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0xf361ea84 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xf36818ed mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf369166c snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0xf37f3237 devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf398585b serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xf3a38226 fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xf3aea110 devm_otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0xf3b2bc71 dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b7afa9 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xf3bc2445 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf3f1ac0a regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xf3fe9e4a ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xf401383c extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0xf402cc7d crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf405b2b9 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xf40ca263 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xf4149109 iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0xf41adc3b __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xf420af08 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xf448ea4a vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xf458c7e0 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf47de486 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf48ceebd net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf49c680a fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0xf4a2af17 nand_change_write_column_op +EXPORT_SYMBOL_GPL vmlinux 0xf4a3bf6e crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0xf4a52f97 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0xf4a9b5e6 tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0xf4aab8d9 pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0xf4af237f mtk_eint_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b02dba ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf4b0da20 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xf4b15b14 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4dd1641 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xf4deec39 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xf4f69d1f clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0xf4f9c73d usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xf510b64c thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xf5156924 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf51e6c9e snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xf52e14e9 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xf54a1038 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xf54bbf52 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf552b5a5 mtk_hw_get_value +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56d69cd mtk_pinconf_adv_drive_set +EXPORT_SYMBOL_GPL vmlinux 0xf57c9bb6 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xf57db0af gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0xf58adce1 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a92d79 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0xf5b7e6e7 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xf5caf580 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5da923e eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xf5e57d52 snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf61baa65 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf61df3b9 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf62b7e37 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0xf633a573 kill_device +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf66716e6 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xf698e85e ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf69d3e6d mtk_pinconf_drive_set_raw +EXPORT_SYMBOL_GPL vmlinux 0xf6bd4b33 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d91d5b dev_pm_opp_of_get_opp_desc_node +EXPORT_SYMBOL_GPL vmlinux 0xf6e4f666 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6e97182 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf7279803 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xf730fb4a qcom_smem_state_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf754aa41 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xf75b297a crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xf767fbce virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf7739c18 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf77a02a4 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xf78a1103 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0xf797c386 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0xf7985568 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf7b23041 devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf7ed3d2b debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf7ed7354 fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0xf8120b31 extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0xf8254ea0 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xf827ceec md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83666ed class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf83fe927 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf84eff0e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf8731bf6 clk_regmap_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf88a2706 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf88b7336 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf893b6f4 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xf89ab575 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xf8ca876c ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xf8df098b extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0xf8ebfacf pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xf8ed6b61 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xf8f164b6 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf92ef819 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9359b6d ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0xf941c58e attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9646e69 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xf97eb399 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xf984d6e8 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xf992dbad blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xf99d7274 sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9acb7c4 dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0xf9b033fa cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xf9bd179f device_add +EXPORT_SYMBOL_GPL vmlinux 0xf9d129df klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfa03858a sram_exec_copy +EXPORT_SYMBOL_GPL vmlinux 0xfa049f77 snd_soc_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xfa195881 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa353cf9 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xfa38cda9 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xfa40c5be key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xfa57f1d7 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xfa585613 dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0xfa5aec4d fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa6e06cb regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfa784e6d blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xfa82f473 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xfa84e0c8 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0xfaa2df99 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab49246 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfab7e450 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xfaba0007 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfaba248a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfae222e1 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfae8c59e iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xfaeee479 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xfb06a6a9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xfb24d4ab blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb289949 lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3e4b01 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfb4550f8 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xfb4eef69 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfb51f520 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xfb63bd3e crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xfb654e34 of_property_read_variable_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xfb6ca832 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb789ef7 gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xfb7a4a7f btree_last +EXPORT_SYMBOL_GPL vmlinux 0xfb89db0c devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0xfb90a168 find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0xfb9be93d gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0xfb9eac1f mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0xfba4f00b rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc0c934 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0xfbd0ffcf wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfbd3c093 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xfbe97943 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfbfb512c wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xfc014cb6 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc270e2f of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xfc3973d8 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xfc427810 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc49da22 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xfc4e9284 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xfc5021c2 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xfc646627 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xfc6bf5f0 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfc6f5012 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfc711797 i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xfc8bf72d fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xfcd4f8af nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0xfcd58659 nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0xfce659b2 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xfce863a4 udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0xfcee8541 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcfa3d84 __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xfd040770 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfd3aea9a fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xfd3c0216 pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0xfd4dba7d freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfd502833 snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL vmlinux 0xfd544b19 badrange_init +EXPORT_SYMBOL_GPL vmlinux 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL vmlinux 0xfd620754 regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfd847a5c sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfd86798d arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfd920a32 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xfd9874bb bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0xfdb31afd of_reserved_mem_device_init_by_name +EXPORT_SYMBOL_GPL vmlinux 0xfdbacb14 dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdce4c1b tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xfdd33cd2 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0xfdd76398 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfdda48a9 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfddd34f0 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xfde0c5f1 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xfde9022f ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xfdf1921f dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfdfac3bf sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xfdfb677d dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xfe0bbbd2 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfe29d810 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xfe2d0ffc hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe3c76e0 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe48eecb __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0xfe4b8a8a pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0xfe4e0dec __sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xfe85706e devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea2c151 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xfebd8446 __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xfec3bf84 icst_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xfec4fa69 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed2096b __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfef67ace btree_init +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0b552d xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xff0cba7e cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL vmlinux 0xff4aac2b sdhci_set_power_noreg +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff827a47 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xff997408 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xff9a2ba2 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xffa4a7b2 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xffa70459 devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0xffa917e6 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xffaa9804 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0xffaade30 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xffab7802 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffb4130a devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xffbf642f pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xffc029c3 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xffcde967 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0xffcf5371 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xffd1123f save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xffda7c99 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xffde8382 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xffea3510 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xfff03a63 mtd_read_oob +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0xa80922a7 ltc2497core_probe drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0xe8c0fdc4 ltc2497core_remove drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x0a72ae76 mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x3426fd01 mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x3f042fe5 mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x5bac5846 chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x708adb9b mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x7277b37a __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x8f023f26 mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xb25f0ba6 mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xd49a2928 mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xd97bb125 mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xe0c8e7e0 mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xef154ad0 mcb_free_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xefe6ba6f mcb_release_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf66aeb11 mcb_get_irq drivers/mcb/mcb +USB_STORAGE EXPORT_SYMBOL_GPL 0x0a28db4a fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x0ffba323 usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x1c511586 usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x21560762 usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x3090671e usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x346a2a2f usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x34dd3a6f usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x4ce9c7c0 usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x531ecedc usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5f785333 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x728a8f9e usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x762d2c4e usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7e96598a usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x827b26c7 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x83e3b2ed usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x84bad80e usb_stor_suspend drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x91ea1e51 usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xb62c2d8b usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbf786449 usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xd18f12e8 usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe67e814e usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf797f32f usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf807f49e usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xfe4e3652 usb_stor_access_xfer_buf drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.modules @@ -0,0 +1,6069 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_aspeed_vuart +8250_dw +8250_exar +8250_men_mcb +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a53-pll +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abp060mg +acard-ahci +acecad +acenic +acp_audio_dma +act8865-regulator +act8945a +act8945a-regulator +act8945a_charger +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv748x +adv7511_drm +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aes-arm +aes-arm-bs +aes-arm-ce +aes_ti +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_dm816 +ahci_mtk +ahci_mvebu +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak7375 +ak881x +ak8974 +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-pr-ip-core-plat +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am35x +am53c974 +amba-pl010 +ambakmi +amc6821 +amd +amd5536udc_pci +amd8111e +amdgpu +amlogic-gxl-crypto +amlogic_thermal +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx6345 +analogix-anx78xx +analogix_dp +ansi_cprng +anubis +anybuss_core +ao-cec +ao-cec-g12a +aoe +apbps2 +apcs-msm8916 +apds9300 +apds9802als +apds990x +apds9960 +apple-mfi-fastcharge +appledisplay +appletalk +appletouch +applicom +apr +aptina-pll +aqc111 +aquantia +ar1021_i2c +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arcpgu +arcx-anybus +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_mhu +arm_scpi +arm_smc_wdt +armada +armada-37xx-cpufreq +armada-37xx-rwtm-mailbox +armada-8k-cpufreq +armada_37xx_wdt +arp_tables +arpt_mangle +arptable_filter +artpec6_crypto +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-lpc-ctrl +aspeed-lpc-snoop +aspeed-p2a-ctrl +aspeed-pwm-tacho +aspeed-smc +aspeed-vhub +aspeed-video +aspeed_adc +aspeed_gfx +ast +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_snoc +ath10k_usb +ath11k +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas-ezo-sensor +atlas-sensor +atm +atmel +atmel-ecc +atmel-flexcom +atmel-hlcdc +atmel-hlcdc-dc +atmel-i2c +atmel-sha204a +atmel_captouch +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +ax88796b +axg-audio +axi-fan-control +axis-fifo +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bL_switcher_dummy_if +bam_dma +bareudp +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm-keypad +bcm-phy-lib +bcm-sf2 +bcm203x +bcm3510 +bcm47xxsflash +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm6368_nand +bcm63xx_uart +bcm7xxx +bcm87xx +bcma +bcmsysport +bd6107 +bd70528-charger +bd70528-regulator +bd70528_wdt +bd71828-regulator +bd718x7-regulator +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +berlin2-adc +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s_generic +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bochs-drm +bonding +bpa10x +bpck +bpck6 +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +brd +bridge +broadcom +bsd_comp +bt-bmc +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btqcomsmd +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +cachefiles +cadence-nand-controller +cadence-quadspi +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camcc-sdm845 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +cap11xx +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccree +ccs811 +cctrng +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-dphy +cdns-dsi +cdns-pltfrm +cdns3 +cec +ceph +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-neon +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8318 +chnl_net +chrontel-ch7033 +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_tegra +ci_hdrc_usb2 +cicada +cifs +cirrus +cirrusfb +clip +clk-bd718x7 +clk-cdce706 +clk-cdce925 +clk-cs2000-cp +clk-exynos-audss +clk-hi3519 +clk-hi655x +clk-lochnagar +clk-max77686 +clk-max9485 +clk-palmas +clk-phase +clk-pwm +clk-qcom +clk-rk808 +clk-rpm +clk-s2mps11 +clk-scmi +clk-scpi +clk-si514 +clk-si5341 +clk-si5351 +clk-si544 +clk-si570 +clk-smd-rpm +clk-spmi-pmic-div +clk-twl6040 +clk-versaclock5 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm3605 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cnic +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +contec_pci_dio +cordic +core +cortina +counter +cp210x +cpcap-adc +cpcap-battery +cpcap-charger +cpcap-pwrbutton +cpcap-regulator +cpia2 +cppi41 +cqhci +cramfs +crc-itu-t +crc32-arm-ce +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-arm-ce +crg-hi3516cv300 +crg-hi3798cv200 +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_rpmsg +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_ec_vbc +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +cs89x0 +csiostor +curve25519-generic +curve25519-neon +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062-thermal +da9062_wdt +da9063-regulator +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +ddbridge-dummy-fe +de2104x +decnet +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +dispcc-sc7180 +dispcc-sdm845 +display-connector +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9000 +dm9601 +dmard06 +dmard09 +dmard10 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dove_thermal +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dpot-dac +dps310 +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-axi-dmac-platform +dw-edma +dw-edma-pcie +dw-hdmi +dw-hdmi-ahb-audio +dw-hdmi-cec +dw-hdmi-i2s-audio +dw-i3c-master +dw-mipi-dsi +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi-imx +dw_mipi_dsi-stm +dw_mmc +dw_mmc-bluefield +dw_mmc-exynos +dw_mmc-hi3798cv200 +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_mmc-rockchip +dw_wdt +dwc-xlgmac +dwc3 +dwc3-exynos +dwc3-haps +dwc3-meson-g12a +dwc3-of-simple +dwc3-omap +dwc3-qcom +dwmac-dwc-qos-eth +dwmac-generic +dwmac-ipq806x +dwmac-mediatek +dwmac-meson +dwmac-meson8b +dwmac-qcom-ethqos +dwmac-rk +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edt-ft5x06 +ee1004 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efi_test +efibc +efs +egalax_ts +egalax_ts_serial +ehci-fsl +ehci-npcm7xx +ehci-omap +ehset +ektf2127 +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emac_rockchip +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +emif +empeg +ems_pci +ems_usb +emu10k1-gp +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +envelope-detector +epat +epia +epic100 +eql +erofs +esas2r +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +etnaviv +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-fsa9480 +extcon-gpio +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-qcom-spmi-misc +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +exynos-gsc +exynos-lpass +exynos-rng +exynos-trng +exynos5422-dmc +exynos_adc +exynosdrm +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fan53555 +farsync +fastrpc +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +flexcan +fm10k +fm801-gp +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +friq +frpw +fscache +fsi-core +fsi-master-aspeed +fsi-master-ast-cf +fsi-master-gpio +fsi-master-hub +fsi-occ +fsi-sbefifo +fsi-scom +fsia6b +fsl-dcu-drm +fsl-edma +fsl-edma-common +fsl-enetc +fsl-enetc-mdio +fsl-enetc-ptp +fsl-enetc-vf +fsl-mph-dr-of +fsl-qdma +fsl_linflexuart +fsl_lpuart +fsl_pq_mdio +fsl_ucc_hdlc +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftm-quaddec +ftmac100 +ftsteutates +ftwdt010_wdt +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gateworks-gsc +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gcc-apq8084 +gcc-ipq4019 +gcc-ipq6018 +gcc-ipq806x +gcc-ipq8074 +gcc-mdm9615 +gcc-msm8660 +gcc-msm8916 +gcc-msm8939 +gcc-msm8960 +gcc-msm8974 +gcc-msm8994 +gcc-msm8996 +gcc-msm8998 +gcc-qcs404 +gcc-sc7180 +gcc-sdm660 +gcc-sdm845 +gcc-sm8150 +gcc-sm8250 +gdmtty +gdmulte +gdth +gemini +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +gf2k +gfs2 +ghash-arm-ce +gianfar_driver +gl518sm +gl520sm +gl620a +gluebi +gm12u320 +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-altera +gpio-amd-fch +gpio-arizona +gpio-aspeed +gpio-bd70528 +gpio-bd71828 +gpio-bd9571mwv +gpio-beeper +gpio-cadence +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-exar +gpio-fan +gpio-grgpio +gpio-gw-pld +gpio-hlwd +gpio-ir-recv +gpio-ir-tx +gpio-janz-ttl +gpio-kempld +gpio-logicvc +gpio-lp3943 +gpio-lp873x +gpio-lp87565 +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-max77620 +gpio-max77650 +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-moxtet +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sama5d2-piobu +gpio-siox +gpio-syscon +gpio-tpic2810 +gpio-tps65086 +gpio-tps65218 +gpio-tps65912 +gpio-tqmx86 +gpio-ucb1400 +gpio-uniphier +gpio-vibra +gpio-viperboard +gpio-wcd934x +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xra1403 +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_wdt +gpu-sched +gpucc-msm8998 +gpucc-sc7180 +gpucc-sdm845 +gr_udc +grace +grcan +gre +greybus +grip +grip_mp +gs1662 +gs_fpga +gs_usb +gsc-hwmon +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hantro-vpu +hanwang +hci +hci_nokia +hci_uart +hci_vhci +hclge +hclgevf +hd3ss3220 +hd44780 +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcd +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfpll +hfs +hfsplus +hi311x +hi3660-mailbox +hi556 +hi6210-i2s +hi6220-mailbox +hi6220_reset +hi6421-pmic-core +hi6421-regulator +hi6421v530-regulator +hi655x-pmic +hi655x-regulator +hi8435 +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hisi-rng +hisi-sfc +hisi504_nand +hisi_femac +hisi_powerkey +hisi_thermal +hix5hd2_gmac +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hms-profinet +hnae +hnae3 +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp03 +hp206c +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +ht16k33 +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei_cdc_ncm +hwmon-vid +hx711 +hx8357 +hx8357d +hyperbus-core +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-aspeed +i2c-axxia +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-demux-pinctrl +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-exynos5 +i2c-fsi +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-gpmux +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-npcm7xx +i2c-nvidia-gpu +i2c-ocores +i2c-owl +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-pxa +i2c-qcom-cci +i2c-qcom-geni +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3c +i3c-master-cdns +i40e +i40iw +i5k_amb +i6300esb +i740fb +iavf +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibmaem +ibmpex +icc-osm-l3 +icc-smd-rpm +ice +ice40-spi +icp10100 +icp_multi +icplus +ics932s401 +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-mux +iio-rescale +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imm +imon +imon_raw +impa7 +ims-pcu +imx-ipu-v3 +imx-ldb +imx-tve +imx214 +imx219 +imx258 +imx274 +imx290 +imx319 +imx355 +imx6ul_tsc +imxdrm +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-buffer-dma +industrialio-buffer-dmaengine +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int51x1 +intel-xway +intel_th +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmb_dev_int +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-hix5hd2 +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-rx51 +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-spi +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +irqbypass +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcm +kcomedilib +kcs_bmc +kcs_bmc_aspeed +kcs_bmc_npcm7xx +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kl5kusb105 +kmx61 +kobil_sct +komeda +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +kpss-xcc +krait-cc +ks0108 +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +ktti +kvaser_pci +kvaser_pciefd +kvaser_usb +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +lcc-ipq806x +lcc-mdm9615 +lcc-msm8960 +lcd +ldusb +lec +led-class-flash +led_bl +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-an30259a +leds-as3645a +leds-aw2013 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-cpcap +leds-cr0014114 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-el15203000 +leds-gpio +leds-is31fl319x +leds-is31fl32xx +leds-ktd2692 +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lm3692x +leds-lm3697 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77650 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxreg +leds-mt6323 +leds-ns2 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8058 +leds-pwm +leds-regulator +leds-sgm3140 +leds-spi-byte +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +lego_ev3_battery +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lima +lineage-pem +linear +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +lkkbd +ll_temac +llc +llc2 +llcc-qcom +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lochnagar-hwmon +lochnagar-regulator +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp873x-regulator +lp8755 +lp87565 +lp87565-regulator +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpasscc-sdm845 +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvds-codec +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +macb +macb_pci +machxo2-spi +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mailbox-test +mali-dp +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +marvell10g +marvell_nand +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max14656_charger_detector +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max5821 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77620-regulator +max77620_thermal +max77620_wdt +max77650 +max77650-charger +max77650-onkey +max77650-regulator +max77686-regulator +max77693-haptic +max77693-regulator +max77693_charger +max77802-regulator +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mcde_drm +mceusb +mchp23k256 +mcp16502 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-aspeed +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-hisi-femac +mdio-i2c +mdio-ipq4019 +mdio-ipq8064 +mdio-mscc-miim +mdio-mux +mdio-mux-gpio +mdio-mux-meson-g12a +mdio-mux-mmioreg +mdio-mux-multiplexer +mdio-mvusb +mdio-xpcs +mdt_loader +me4000 +me_daq +mediatek +mediatek-cpufreq +mediatek-drm +mediatek-drm-hdmi +megachips-stdpxxxx-ge-b850v3-fw +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +melfas_mip4 +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +meson-canvas +meson-drm +meson-gx-mmc +meson-gxl +meson-ir +meson-mx-sdhc +meson-mx-sdio +meson-rng +meson-vdec +meson_dw_hdmi +meson_gxbb_wdt +meson_nand +meson_saradc +meson_wdt +metro-usb +metronomefb +mf6x4 +mgag200 +mhi +mi0283qt +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microtek +mii +milbeaut-hdmac +milbeaut-xdmac +milbeaut_usio +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_spi +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmcc-msm8996 +mmcc-msm8998 +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_dim2 +most_i2c +most_net +most_sound +most_usb +most_video +motorola-cpcap +moxa +moxtet +mp2629 +mp2629_adc +mp2629_charger +mp5416 +mp8859 +mp886x +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpq7920 +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_ocelot_common +msdos +msi001 +msi2500 +msm +msp3400 +mspro_block +mss-sc7180 +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6380-regulator +mt6397 +mt6397-regulator +mt6577_auxadc +mt6797-mt6351 +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt8183-da7219-max98357 +mt8183-mt6358-ts3a227-max98357 +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd_dataflash +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-btcvsd +mtk-cir +mtk-cmdq-helper +mtk-cmdq-mailbox +mtk-cqdma +mtk-crypto +mtk-hsdma +mtk-pmic-keys +mtk-pmic-wrap +mtk-rng +mtk-sd +mtk-uart-apdma +mtk-vpu +mtk_ecc +mtk_nand +mtk_rpmsg +mtk_scp +mtk_scp_ipi +mtk_thermal +mtk_wdt +mtouch +mtu3 +multipath +multiq3 +musb_dsps +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mux-mmio +mv643xx_eth +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxser +mxsfb +mxuport +myrb +myri10ge +myrs +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nbpfaxi +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-neon +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nicstar +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm-rng +npcm750-pwm-fan +npcm_adc +nps_enet +ns +ns558 +ns83820 +nsh +nsp32 +ntb +ntb_hw_idt +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-rave-sp-eeprom +nvmem-reboot-mode +nvmem-rockchip-otp +nvmem-uniphier-efuse +nvmem_meson_mx_efuse +nvmem_qcom-spmi-sdam +nvmem_qfprom +nvmem_rockchip_efuse +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nwl-dsi +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocelot_vsc7514 +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocmem +ocrdma +of-fpga-region +of_mmc_spi +of_pmem +of_xilinx_wdt +ofb +omap +omap-aes-driver +omap-crypto +omap-des +omap-mailbox +omap-ocp2scp +omap-rng +omap-sham +omap2430 +omap2fb +omap4-keypad +omap_hdq +omap_hwspinlock +omap_remoteproc +omap_wdt +omapdss +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opt3001 +optee +optee-rng +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5640 +ov5645 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +owl-dma +owl-mmc +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +palmas-pwrbutton +palmas-regulator +palmas_gpadc +pandora_bl +panel +panel-arm-versatile +panel-asus-z00t-tm5p5-n35596 +panel-boe-himax8279d +panel-boe-tv101wum-nl6 +panel-elida-kd35t133 +panel-feixin-k101-im2ba02 +panel-feiyang-fy07024di26a30d +panel-ilitek-ili9322 +panel-ilitek-ili9881c +panel-innolux-p079zca +panel-jdi-lt070me05000 +panel-kingdisplay-kd097d04 +panel-leadtek-ltk050h3146w +panel-leadtek-ltk500hd1829 +panel-lg-lb035q02 +panel-lg-lg4573 +panel-lvds +panel-nec-nl8048hl11 +panel-novatek-nt35510 +panel-novatek-nt39016 +panel-olimex-lcd-olinuxino +panel-orisetech-otm8009a +panel-osd-osd101t2587-53ts +panel-panasonic-vvx10f034n00 +panel-raspberrypi-touchscreen +panel-raydium-rm67191 +panel-raydium-rm68200 +panel-rocktech-jh057n00900 +panel-ronbo-rb070d30 +panel-samsung-ld9040 +panel-samsung-s6d16d0 +panel-samsung-s6e3ha2 +panel-samsung-s6e63j0x03 +panel-samsung-s6e63m0 +panel-samsung-s6e88a0-ams452ef01 +panel-samsung-s6e8aa0 +panel-seiko-43wvf1g +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-sharp-ls043t1le01 +panel-simple +panel-sitronix-st7701 +panel-sitronix-st7789v +panel-sony-acx424akp +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +panel-tpo-tpg110 +panel-truly-nt35597 +panel-visionox-rm69299 +panel-xinpeng-xpp055c272 +panfrost +parade-ps8622 +parade-ps8640 +parallel-display +paride +parkbd +parman +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pbias-regulator +pblk +pc300too +pc87360 +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-pf-stub +pci-stub +pci200syn +pcie-rockchip-host +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +pdr_interface +peak_pci +peak_pciefd +peak_usb +pegasus +pegasus_notetaker +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-armada38x-comphy +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-cadence-salvo +phy-cadence-sierra +phy-cadence-torrent +phy-cpcap-usb +phy-dm816x-usb +phy-exynos-usb2 +phy-exynos5-usbdrd +phy-fsl-imx8-mipi-dphy +phy-fsl-imx8mq-usb +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-mapphone-mdm6600 +phy-meson-g12a-usb2 +phy-meson-g12a-usb3-pcie +phy-meson-gxl-usb2 +phy-meson8b-usb2 +phy-mtk-tphy +phy-mtk-ufs +phy-mtk-xsphy +phy-mvebu-a3700-comphy +phy-mvebu-a3700-utmi +phy-mvebu-cp110-comphy +phy-ocelot-serdes +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq4019-usb +phy-qcom-ipq806x-sata +phy-qcom-pcie2 +phy-qcom-qmp +phy-qcom-qusb2 +phy-qcom-snps-femto-v2 +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-usb-hs +phy-qcom-usb-hs-28nm +phy-qcom-usb-hsic +phy-qcom-usb-ss +phy-rcar-gen2 +phy-rcar-gen3-pcie +phy-rcar-gen3-usb2 +phy-rcar-gen3-usb3 +phy-rockchip-dp +phy-rockchip-dphy-rx0 +phy-rockchip-emmc +phy-rockchip-inno-dsidphy +phy-rockchip-inno-hdmi +phy-rockchip-inno-usb2 +phy-rockchip-pcie +phy-rockchip-typec +phy-rockchip-usb +phy-tahvo +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +phy-uniphier-pcie +phy-uniphier-usb2 +phy-uniphier-usb3hs +phy-uniphier-usb3ss +phylink +physmap +pi3usb30532 +pi433 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-axp209 +pinctrl-da9062 +pinctrl-ipq4019 +pinctrl-ipq6018 +pinctrl-ipq8064 +pinctrl-ipq8074 +pinctrl-lochnagar +pinctrl-madera +pinctrl-max77620 +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-mdm9615 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8976 +pinctrl-msm8994 +pinctrl-msm8996 +pinctrl-msm8998 +pinctrl-msm8x74 +pinctrl-qcs404 +pinctrl-rk805 +pinctrl-sc7180 +pinctrl-sdm660 +pinctrl-sdm845 +pinctrl-sm8150 +pinctrl-sm8250 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pinctrl-stmfx +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl111_drm +pl172 +pl2303 +pl330 +pl353-smc +plat-ram +plat_nand +platform_lcd +platform_mhu +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pm8916_wdt +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn_pep +poly1305-arm +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +pt +ptp-qoriq +ptp_clockmatrix +ptp_idt82p33 +ptp_ines +pulse8-cec +pulsedlight-lidar-lite-v2 +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvpanic +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-berlin +pwm-cros-ec +pwm-fan +pwm-fsl-ftm +pwm-hibvt +pwm-iqs620a +pwm-ir-tx +pwm-lp3943 +pwm-mediatek +pwm-meson +pwm-mtk-disp +pwm-omap-dmtimer +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-rockchip +pwm-samsung +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pwrseq_emmc +pwrseq_sd8787 +pwrseq_simple +pxa168_eth +pxa27x_udc +pxe1610 +pxrc +q6adm +q6afe +q6afe-dai +q6asm +q6asm-dai +q6core +q6dsp-common +q6routing +q6sstop-qcs404 +qca8k +qca_7k_common +qcaspi +qcauart +qcaux +qcom-apcs-ipc-mailbox +qcom-coincell +qcom-cpr +qcom-cpufreq-hw +qcom-cpufreq-nvmem +qcom-emac +qcom-geni-se +qcom-pm8xxx +qcom-pm8xxx-xoadc +qcom-pon +qcom-rng +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-pmic +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-vadc-common +qcom-wdt +qcom-wled +qcom_aoss +qcom_common +qcom_edac +qcom_geni_serial +qcom_glink +qcom_glink_rpm +qcom_glink_smem +qcom_gsbi +qcom_hwspinlock +qcom_nandc +qcom_q6v5 +qcom_q6v5_adsp +qcom_q6v5_ipa_notify +qcom_q6v5_mss +qcom_q6v5_pas +qcom_q6v5_wcss +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd +qcom_smd-regulator +qcom_spmi-regulator +qcom_sysmon +qcom_tsens +qcrypto +qcserial +qed +qede +qedf +qedi +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1b0004 +qm1d1c0042 +qmi_helpers +qmi_wwan +qnoc-msm8916 +qnoc-msm8974 +qnoc-qcs404 +qnx4 +qnx6 +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ravb +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcar-csi2 +rcar-dmac +rcar-du-drm +rcar-fcp +rcar-gyroadc +rcar-vin +rcar_can +rcar_canfd +rcar_cmm +rcar_drif +rcar_dw_hdmi +rcar_fdp1 +rcar_gen3_thermal +rcar_jpu +rcar_lvds +rcar_thermal +rcuperf +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +realtek-smi +reboot-mode +redboot +redrat3 +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +renesas-ceu +renesas_sdhi_core +renesas_sdhi_internal_dmac +renesas_sdhi_sys_dmac +renesas_usb3 +renesas_usbhs +renesas_wdt +repaper +reset-hi3660 +reset-meson-audio-arb +reset-qcom-pdc +reset-scmi +reset-ti-syscon +reset-uniphier +reset-uniphier-glue +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rk3399_dmc +rk805-pwrkey +rk808 +rk808-regulator +rk_crypto +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rmobile-reset +rmtfs_mem +rn5t618 +rn5t618-adc +rn5t618-regulator +rn5t618_wdt +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rockchip-dfi +rockchip-io-domain +rockchip-isp1 +rockchip-rga +rockchip-vdec +rockchip_saradc +rockchip_thermal +rockchipdrm +rocker +rocket +rohm-bd70528 +rohm-bd71828 +rohm-bd718x7 +rohm-regulator +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmpd +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-aspeed +rtc-bd70528 +rtc-bq32k +rtc-bq4802 +rtc-cadence +rtc-cmos +rtc-cpcap +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12026 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-meson +rtc-meson-vrtc +rtc-msm6242 +rtc-mt2712 +rtc-mt6397 +rtc-mt7622 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r7301 +rtc-r9701 +rtc-rc5t583 +rtc-rc5t619 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sd3078 +rtc-sh +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +rza_wdt +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s5p-cec +s5p-g2d +s5p-jpeg +s5p-mfc +s5p-sss +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +sample-trace-array +samsung-keypad +samsung-sxgbe +samsung_tty +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sbp_target +sbs-battery +sbs-charger +sbs-manager +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +sclk-div +scmi-cpufreq +scmi-hwmon +scmi_pm_domain +scpi-cpufreq +scpi-hwmon +scpi_pm_domain +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sd_adc_modulator +sdhci-cadence +sdhci-dove +sdhci-milbeaut +sdhci-msm +sdhci-of-arasan +sdhci-of-aspeed +sdhci-of-at91 +sdhci-of-dwcmshc +sdhci-omap +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdhci-xenon-driver +sdhci_am654 +sdhci_f_sdh30 +sdio_uart +seed +sensorhub +serial_ir +serio_raw +sermouse +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sh-sci +sh_eth +sh_mmcif +sh_mobile_lcdcfb +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha2-arm-ce +sha256-arm +sha3_generic +sha512-arm +shark2 +sharpslpart +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sifive +sii902x +sii9234 +sil-sii8620 +sil164 +silead +simple-bridge +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slg51000-regulator +slicoss +slim-qcom-ctrl +slim-qcom-ngd-ctrl +slimbus +slip +slram +sm3_generic +sm4_generic +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc911x +smc91x +smc_diag +smd-rpm +smem +smiapp +smiapp-pll +smipcie +smm665 +smp2p +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsm +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-maestro3 +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-apq8096 +snd-soc-arizona +snd-soc-armada-370-db +snd-soc-arndale +snd-soc-audio-graph-card +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-cpcap +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-davinci-mcasp +snd-soc-dmic +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsi +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdmi-codec +snd-soc-i2s +snd-soc-idma +snd-soc-imx-audmux +snd-soc-inno-rk3036 +snd-soc-kirkwood +snd-soc-lochnagar-sc +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-meson-aiu +snd-soc-meson-axg-fifo +snd-soc-meson-axg-frddr +snd-soc-meson-axg-pdm +snd-soc-meson-axg-sound-card +snd-soc-meson-axg-spdifin +snd-soc-meson-axg-spdifout +snd-soc-meson-axg-tdm-formatter +snd-soc-meson-axg-tdm-interface +snd-soc-meson-axg-tdmin +snd-soc-meson-axg-tdmout +snd-soc-meson-axg-toddr +snd-soc-meson-card-utils +snd-soc-meson-codec-glue +snd-soc-meson-g12a-toacodec +snd-soc-meson-g12a-tohdmitx +snd-soc-meson-gx-sound-card +snd-soc-meson-t9015 +snd-soc-mikroe-proto +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-mt6797-afe +snd-soc-mt8183-afe +snd-soc-mtk-common +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-odroid +snd-soc-omap-mcbsp +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-qcom-common +snd-soc-rcar +snd-soc-rk3288-hdmi-analog +snd-soc-rk3328 +snd-soc-rk3399-gru-sound +snd-soc-rl6231 +snd-soc-rockchip-i2s +snd-soc-rockchip-max98090 +snd-soc-rockchip-pcm +snd-soc-rockchip-pdm +snd-soc-rockchip-rt5645 +snd-soc-rockchip-spdif +snd-soc-rt1308-sdw +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5663 +snd-soc-rt5682 +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-sdm845 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-smdk-spdif +snd-soc-smdk-wm8994 +snd-soc-smdk-wm8994pcm +snd-soc-snow +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-ti-edma +snd-soc-ti-sdma +snd-soc-ti-udma +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tm2-wm5110 +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-uniphier-aio-cpu +snd-soc-uniphier-aio-ld11 +snd-soc-uniphier-aio-pxs2 +snd-soc-uniphier-evea +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm-adsp +snd-soc-wm-hubs +snd-soc-wm5110 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wm8994 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-of +snd-sof-pci +snd-sonicvibes +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-usbmidi-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +sni_ave +snic +snps_udc_core +snps_udc_plat +socinfo +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundwire-bus +soundwire-qcom +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-amd +spi-armada-3700 +spi-axi-spi-engine +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-fsi +spi-geni-qcom +spi-gpio +spi-lm70llp +spi-loopback-test +spi-meson-spicc +spi-meson-spifc +spi-mt65xx +spi-mtk-nor +spi-mux +spi-mxic +spi-nor +spi-npcm-fiu +spi-npcm-pspi +spi-nxp-fspi +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qcom-qspi +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-sifive +spi-slave-mt27xx +spi-slave-system-control +spi-slave-time +spi-ti-qspi +spi-tle62x0 +spi-uniphier +spi-xcomm +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spmi +spmi-pmic-arb +sprd_serial +sps30 +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssbi +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-asc +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm-drm +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmfx +stmmac +stmmac-pci +stmmac-platform +stmpe-adc +stmpe-keypad +stmpe-ts +stowaway +stp +stpmic1 +stpmic1_onkey +stpmic1_regulator +stpmic1_wdt +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surface3_spi +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sy8106a-regulator +sy8824x +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink_gt +synclinkmp +syscon-reboot-mode +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc358764 +tc358767 +tc358768 +tc3589x-keypad +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tef6862 +tehuti +teranetics +test-kprobes +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thc63lvd1024 +thermal-generic-adc +thermal_mmio +thmc50 +ths7303 +ths8200 +thunderbolt +thunderbolt-net +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads124s08 +ti-ads7950 +ti-ads8344 +ti-ads8688 +ti-cal +ti-csc +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-lmu +ti-sc +ti-sn65dsi86 +ti-soc-thermal +ti-tfp410 +ti-tlc4541 +ti-tpd12s015 +ti-vpdma +ti-vpe +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_cpsw_new +ti_edac +ti_hecc +ti_usb_3410_5052 +tidss +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +tilcdc +timeriomem-rng +tipc +tlan +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc +tmio_mmc_core +tmio_nand +tmiofb +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_ftpm_tee +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_key_parser +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +turingcc-qcs404 +turris-mox-rwtm +tusb6010 +tvaudio +tve200_drm +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucc_uart +ucd9000 +ucd9200 +ucs1002_power +ucsi_ccg +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufs-hisi +ufs-mediatek +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uniphier-mdmac +uniphier-regulator +uniphier-sd +uniphier-xdmac +uniphier_thermal +uniphier_wdt +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-dmac +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-h264 +v4l2-mem2mem +v4l2-tpg +vcan +vcnl3020 +vcnl4000 +vcnl4035 +vctrl-regulator +vdpa +vdpa_sim +veml6030 +veml6070 +ves1820 +ves1x93 +veth +vexpress-hwmon +vexpress-regulator +vexpress-spc-cpufreq +vf610_adc +vf610_dac +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_iommu_type1 +vfio_mdev +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-rhine +via-sdmmc +via-velocity +via686a +vicodec +video-i2c +video-mux +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videocc-sc7180 +videocc-sdm845 +videodev +vim2m +vimc +viperboard +viperboard_adc +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmw_pvrdma +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vqmmc-ipq4019-regulator +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcd934x +wcn36xx +wcnss_ctrl +wd719x +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wimax +winbond-840 +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgmac +xhci-histb +xhci-mtk +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xilinx-pr-decoupler +xilinx-spi +xilinx-tpg +xilinx-video +xilinx-vtc +xilinx-xadc +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xlnx_vcu +xor +xor-neon +xpad +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yurex +z3fold +zaurus +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zx-tdm --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic-lpae.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic.modules @@ -0,0 +1,6210 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_aspeed_vuart +8250_dw +8250_exar +8250_men_mcb +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a53-pll +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abp060mg +acard-ahci +acecad +acenic +acp_audio_dma +act8865-regulator +act8945a +act8945a-regulator +act8945a_charger +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv748x +adv7511_drm +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aes-arm +aes-arm-bs +aes-arm-ce +aes_ti +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_dm816 +ahci_mtk +ahci_mvebu +ahci_qoriq +ahci_tegra +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak7375 +ak881x +ak8974 +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-pr-ip-core-plat +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am35x +am53c974 +amba-pl010 +ambakmi +amc6821 +amd +amd5536udc_pci +amd8111e +amdgpu +amlogic-gxl-crypto +amlogic_thermal +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx6345 +analogix-anx78xx +analogix_dp +anatop-regulator +ansi_cprng +anubis +anybuss_core +ao-cec +ao-cec-g12a +aoe +apbps2 +apcs-msm8916 +apds9300 +apds9802als +apds990x +apds9960 +apple-mfi-fastcharge +appledisplay +appletalk +appletouch +applicom +apr +aptina-pll +aqc111 +aquantia +ar1021_i2c +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_emac +arc_ps2 +arc_uart +arcmsr +arcnet +arcpgu +arcx-anybus +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_mhu +arm_scpi +arm_smc_wdt +armada +armada-37xx-cpufreq +armada-37xx-rwtm-mailbox +armada-8k-cpufreq +armada_37xx_wdt +arp_tables +arpt_mangle +arptable_filter +artpec6_crypto +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-lpc-ctrl +aspeed-lpc-snoop +aspeed-p2a-ctrl +aspeed-pwm-tacho +aspeed-smc +aspeed-vhub +aspeed-video +aspeed_adc +aspeed_gfx +ast +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_snoc +ath10k_usb +ath11k +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas-ezo-sensor +atlas-sensor +atm +atmel +atmel-ecc +atmel-flexcom +atmel-hlcdc +atmel-hlcdc-dc +atmel-i2c +atmel-sha204a +atmel_captouch +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +ax88796b +axg-audio +axi-fan-control +axis-fifo +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bL_switcher_dummy_if +bam_dma +bareudp +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm-keypad +bcm-phy-lib +bcm-sf2 +bcm203x +bcm3510 +bcm47xxsflash +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm6368_nand +bcm63xx_uart +bcm7xxx +bcm87xx +bcma +bcmsysport +bd6107 +bd70528-charger +bd70528-regulator +bd70528_wdt +bd71828-regulator +bd718x7-regulator +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +berlin2-adc +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s_generic +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bochs-drm +bonding +bpa10x +bpck +bpck6 +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +brd +bridge +broadcom +bsd_comp +bt-bmc +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btqcomsmd +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +caam +caam_jr +caamalg_desc +caamhash_desc +cachefiles +cadence-nand-controller +cadence-quadspi +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camcc-sdm845 +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +cap11xx +capmode +capsule-loader +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccree +ccs811 +cctrng +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-dphy +cdns-dsi +cdns-pltfrm +cdns3 +cdns3-imx +cec +ceph +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha-neon +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8318 +chnl_net +chrontel-ch7033 +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_tegra +ci_hdrc_usb2 +cicada +cifs +cirrus +cirrusfb +clip +clk-bd718x7 +clk-cdce706 +clk-cdce925 +clk-cs2000-cp +clk-exynos-audss +clk-hi3519 +clk-hi655x +clk-lochnagar +clk-max77686 +clk-max9485 +clk-palmas +clk-phase +clk-pwm +clk-qcom +clk-rk808 +clk-rpm +clk-s2mps11 +clk-scmi +clk-scpi +clk-si514 +clk-si5341 +clk-si5351 +clk-si544 +clk-si570 +clk-smd-rpm +clk-spmi-pmic-div +clk-twl6040 +clk-versaclock5 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm3605 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmt_speech +cmtp +cnic +cobra +coda +coda-vpu +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +contec_pci_dio +cordic +core +cortina +counter +cp210x +cpcap-adc +cpcap-battery +cpcap-charger +cpcap-pwrbutton +cpcap-regulator +cpia2 +cppi41 +cramfs +crc-itu-t +crc32-arm-ce +crc32_generic +crc4 +crc64 +crc7 +crc8 +crct10dif-arm-ce +crg-hi3516cv300 +crg-hi3798cv200 +cros-ec-cec +cros-ec-sensorhub +cros_ec +cros_ec_accel_legacy +cros_ec_baro +cros_ec_chardev +cros_ec_debugfs +cros_ec_dev +cros_ec_i2c +cros_ec_keyb +cros_ec_lid_angle +cros_ec_light_prox +cros_ec_lightbar +cros_ec_rpmsg +cros_ec_sensors +cros_ec_sensors_core +cros_ec_spi +cros_ec_sysfs +cros_ec_typec +cros_ec_vbc +cros_usbpd-charger +cros_usbpd_logger +cros_usbpd_notify +cryptd +crypto_engine +crypto_safexcel +crypto_simd +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +cs89x0 +csiostor +curve25519-generic +curve25519-neon +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da8xx-fb +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062-thermal +da9062_wdt +da9063-regulator +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +ddbridge-dummy-fe +de2104x +decnet +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +dispcc-sc7180 +dispcc-sdm845 +display-connector +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9000 +dm9601 +dmard06 +dmard09 +dmard10 +dme1737 +dmfe +dmi-sysfs +dmm32at +dmx3191d +dn_rtmsg +dnet +dove_thermal +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dpot-dac +dps310 +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_ttm_helper +drm_vram_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-axi-dmac-platform +dw-edma +dw-edma-pcie +dw-hdmi +dw-hdmi-ahb-audio +dw-hdmi-cec +dw-hdmi-i2s-audio +dw-i3c-master +dw-mipi-dsi +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi-imx +dw_mipi_dsi-stm +dw_mmc +dw_mmc-bluefield +dw_mmc-exynos +dw_mmc-hi3798cv200 +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_mmc-rockchip +dw_wdt +dwc-xlgmac +dwc3 +dwc3-exynos +dwc3-haps +dwc3-meson-g12a +dwc3-of-simple +dwc3-omap +dwc3-qcom +dwmac-dwc-qos-eth +dwmac-generic +dwmac-imx +dwmac-ipq806x +dwmac-mediatek +dwmac-meson +dwmac-meson8b +dwmac-qcom-ethqos +dwmac-rk +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edt-ft5x06 +ee1004 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efi_test +efibc +efs +egalax_ts +egalax_ts_serial +ehci-fsl +ehci-mxc +ehci-npcm7xx +ehci-omap +ehci-tegra +ehset +ektf2127 +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emac_rockchip +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +emif +empeg +ems_pci +ems_usb +emu10k1-gp +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +envelope-detector +epat +epia +epic100 +eql +erofs +error +esas2r +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +etnaviv +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-fsa9480 +extcon-gpio +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-qcom-spmi-misc +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +extcon-usbc-cros-ec +exynos-gsc +exynos-lpass +exynos-rng +exynos-trng +exynos5422-dmc +exynos_adc +exynosdrm +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fan53555 +farsync +fastrpc +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fieldbus_dev +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +flexcan +fm10k +fm801-gp +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +friq +frpw +fscache +fsi-core +fsi-master-aspeed +fsi-master-ast-cf +fsi-master-gpio +fsi-master-hub +fsi-occ +fsi-sbefifo +fsi-scom +fsia6b +fsl-dcu-drm +fsl-edma +fsl-edma-common +fsl-enetc +fsl-enetc-mdio +fsl-enetc-ptp +fsl-enetc-vf +fsl-mph-dr-of +fsl-qdma +fsl_imx8_ddr_perf +fsl_linflexuart +fsl_lpuart +fsl_pq_mdio +fsl_ucc_hdlc +fsl_usb2_udc +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftm-quaddec +ftmac100 +ftsteutates +ftwdt010_wdt +fujitsu_ts +fusb300_udc +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gateworks-gsc +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gcc-apq8084 +gcc-ipq4019 +gcc-ipq6018 +gcc-ipq806x +gcc-ipq8074 +gcc-mdm9615 +gcc-msm8660 +gcc-msm8916 +gcc-msm8939 +gcc-msm8960 +gcc-msm8974 +gcc-msm8994 +gcc-msm8996 +gcc-msm8998 +gcc-qcs404 +gcc-sc7180 +gcc-sdm660 +gcc-sdm845 +gcc-sm8150 +gcc-sm8250 +gdmtty +gdmulte +gdth +gemini +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +gf2k +gfs2 +ghash-arm-ce +gianfar_driver +gl518sm +gl520sm +gl620a +gluebi +gm12u320 +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-altera +gpio-amd-fch +gpio-arizona +gpio-aspeed +gpio-bd70528 +gpio-bd71828 +gpio-bd9571mwv +gpio-beeper +gpio-cadence +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-exar +gpio-fan +gpio-grgpio +gpio-gw-pld +gpio-hlwd +gpio-ir-recv +gpio-ir-tx +gpio-janz-ttl +gpio-kempld +gpio-logicvc +gpio-lp3943 +gpio-lp873x +gpio-lp87565 +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-max77620 +gpio-max77650 +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-moxtet +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sama5d2-piobu +gpio-siox +gpio-syscon +gpio-tpic2810 +gpio-tps65086 +gpio-tps65218 +gpio-tps65912 +gpio-tqmx86 +gpio-ts4800 +gpio-ts4900 +gpio-ucb1400 +gpio-uniphier +gpio-vibra +gpio-viperboard +gpio-wcd934x +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xra1403 +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_wdt +gpmi_nand +gpu-sched +gpucc-msm8998 +gpucc-sc7180 +gpucc-sdm845 +gr_udc +grace +grcan +gre +greybus +grip +grip_mp +gs1662 +gs_fpga +gs_usb +gsc-hwmon +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hantro-vpu +hanwang +hci +hci_nokia +hci_uart +hci_vhci +hclge +hclgevf +hd3ss3220 +hd44780 +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcd +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfpll +hfs +hfsplus +hi311x +hi3660-mailbox +hi556 +hi6210-i2s +hi6220-mailbox +hi6220_reset +hi6421-pmic-core +hi6421-regulator +hi6421v530-regulator +hi655x-pmic +hi655x-regulator +hi8435 +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-google-hammer +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hifn_795x +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hisi-rng +hisi-sfc +hisi504_nand +hisi_femac +hisi_powerkey +hisi_thermal +hix5hd2_gmac +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hms-profinet +hnae +hnae3 +hns_dsaf +hns_enet_drv +hns_mdio +hopper +horus3a +host1x +hostap +hostap_pci +hostap_plx +hp03 +hp206c +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +ht16k33 +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei_cdc_ncm +hwmon-vid +hx711 +hx8357 +hx8357d +hyperbus-core +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-aspeed +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-demux-pinctrl +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-emev2 +i2c-exynos5 +i2c-fsi +i2c-gpio +i2c-hid +i2c-hix5hd2 +i2c-i801 +i2c-imx-lpi2c +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-meson +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-gpmux +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-npcm7xx +i2c-nvidia-gpu +i2c-ocores +i2c-owl +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-pxa +i2c-qcom-cci +i2c-qcom-geni +i2c-qup +i2c-rcar +i2c-riic +i2c-rk3x +i2c-robotfuzz-osif +i2c-sh_mobile +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tegra +i2c-tegra-bpmp +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3c +i3c-master-cdns +i40e +i40iw +i5k_amb +i6300esb +i740fb +iavf +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibmaem +ibmpex +icc-osm-l3 +icc-smd-rpm +ice +ice40-spi +icp10100 +icp_multi +icplus +ics932s401 +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-mux +iio-rescale +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imm +imon +imon_raw +impa7 +ims-pcu +imx-bus +imx-cpufreq-dt +imx-dma +imx-dsp +imx-interconnect +imx-ipu-v3 +imx-ldb +imx-mailbox +imx-media-common +imx-pxp +imx-sdma +imx-tve +imx-vdoa +imx21-hcd +imx214 +imx219 +imx258 +imx274 +imx290 +imx2_wdt +imx319 +imx355 +imx6-media +imx6-media-csi +imx6-mipi-csi2 +imx6q-cpufreq +imx6ul_tsc +imx7-media-csi +imx7-mipi-csis +imx7d_adc +imx7ulp_wdt +imx8m-ddrc +imx8mm-interconnect +imx8mm_thermal +imx8mn-interconnect +imx8mq-interconnect +imx_keypad +imx_rproc +imx_sc_key +imx_sc_thermal +imx_sc_wdt +imx_thermal +imxdrm +imxfb +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-buffer-dma +industrialio-buffer-dmaengine +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int51x1 +intel-xway +intel_th +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +iova +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmb_dev_int +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-hix5hd2 +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-rx51 +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-spi +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +irq-ts4800 +irqbypass +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcm +kcomedilib +kcs_bmc +kcs_bmc_aspeed +kcs_bmc_npcm7xx +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kl5kusb105 +kmx61 +kobil_sct +komeda +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +kpss-xcc +krait-cc +ks0108 +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +ktti +kvaser_pci +kvaser_pciefd +kvaser_usb +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +lcc-ipq806x +lcc-mdm9615 +lcc-msm8960 +lcd +ldusb +lec +led-class-flash +led_bl +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-an30259a +leds-as3645a +leds-aw2013 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-cpcap +leds-cr0014114 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-el15203000 +leds-gpio +leds-is31fl319x +leds-is31fl32xx +leds-ktd2692 +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lm3692x +leds-lm3697 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77650 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxreg +leds-mt6323 +leds-ns2 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8058 +leds-pwm +leds-regulator +leds-sgm3140 +leds-spi-byte +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +lego_ev3_battery +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lima +lineage-pem +linear +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +lkkbd +ll_temac +llc +llc2 +llcc-qcom +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lochnagar-hwmon +lochnagar-regulator +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp873x-regulator +lp8755 +lp87565 +lp87565-regulator +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpasscc-sdm845 +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvds-codec +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +macb +macb_pci +machxo2-spi +macmodes +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mailbox-test +mali-dp +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +marvell10g +marvell_nand +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max14656_charger_detector +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max5821 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77620-regulator +max77620_thermal +max77620_wdt +max77650 +max77650-charger +max77650-onkey +max77650-regulator +max77686-regulator +max77693-haptic +max77693-regulator +max77693_charger +max77802-regulator +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mcde_drm +mceusb +mchp23k256 +mcp16502 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +mdc800 +mdev +mdio +mdio-aspeed +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-hisi-femac +mdio-i2c +mdio-ipq4019 +mdio-ipq8064 +mdio-mscc-miim +mdio-mux +mdio-mux-gpio +mdio-mux-meson-g12a +mdio-mux-mmioreg +mdio-mux-multiplexer +mdio-mvusb +mdio-xpcs +mdt_loader +me4000 +me_daq +mediatek +mediatek-cpufreq +mediatek-drm +mediatek-drm-hdmi +megachips-stdpxxxx-ge-b850v3-fw +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +melfas_mip4 +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +meson-canvas +meson-drm +meson-gx-mmc +meson-gxl +meson-ir +meson-mx-sdhc +meson-mx-sdio +meson-rng +meson-vdec +meson_dw_hdmi +meson_gxbb_wdt +meson_nand +meson_saradc +meson_wdt +metro-usb +metronomefb +mf6x4 +mgag200 +mhi +mi0283qt +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microtek +mii +milbeaut-hdmac +milbeaut-xdmac +milbeaut_usio +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlx_wdt +mlxfw +mlxreg-fan +mlxreg-hotplug +mlxreg-io +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_spi +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmcc-msm8996 +mmcc-msm8998 +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_dim2 +most_i2c +most_net +most_sound +most_usb +most_video +motorola-cpcap +moxa +moxtet +mp2629 +mp2629_adc +mp2629_charger +mp5416 +mp8859 +mp886x +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpq7920 +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_ocelot_common +msdos +msi001 +msi2500 +msm +msp3400 +mspro_block +mss-sc7180 +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6380-regulator +mt6397 +mt6397-regulator +mt6577_auxadc +mt6797-mt6351 +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt8183-da7219-max98357 +mt8183-mt6358-ts3a227-max98357 +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd_dataflash +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-btcvsd +mtk-cir +mtk-cmdq-helper +mtk-cmdq-mailbox +mtk-cqdma +mtk-crypto +mtk-hsdma +mtk-pmic-keys +mtk-pmic-wrap +mtk-rng +mtk-sd +mtk-uart-apdma +mtk-vpu +mtk_ecc +mtk_nand +mtk_rpmsg +mtk_scp +mtk_scp_ipi +mtk_thermal +mtk_wdt +mtouch +mtu3 +multipath +multiq3 +musb_dsps +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mux-mmio +mv643xx_eth +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxc_nand +mxc_w1 +mxcmmc +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxser +mxsfb +mxuport +myrb +myri10ge +myrs +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nbpfaxi +nci +nci_spi +nci_uart +nct6683 +nct6775 +nct7802 +nct7904 +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +nhpoly1305-neon +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nicstar +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +noa1305 +nokia-modem +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm-rng +npcm750-pwm-fan +npcm_adc +nps_enet +ns +ns558 +ns83820 +nsh +nsp32 +ntb +ntb_hw_idt +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nvec +nvec_kbd +nvec_paz00 +nvec_power +nvec_ps2 +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-imx-iim +nvmem-imx-ocotp +nvmem-imx-ocotp-scu +nvmem-rave-sp-eeprom +nvmem-reboot-mode +nvmem-rockchip-otp +nvmem-uniphier-efuse +nvmem_meson_mx_efuse +nvmem_qcom-spmi-sdam +nvmem_qfprom +nvmem_rockchip_efuse +nvmem_snvs_lpgpr +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nwl-dsi +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocelot_vsc7514 +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocmem +ocrdma +of-fpga-region +of_mmc_spi +of_xilinx_wdt +ofb +ohci-platform +omap +omap-aes-driver +omap-crypto +omap-des +omap-mailbox +omap-ocp2scp +omap-rng +omap-sham +omap-vout +omap2430 +omap2fb +omap3-isp +omap3-rom-rng +omap4-iss +omap4-keypad +omap_hdq +omap_hwspinlock +omap_remoteproc +omap_ssi +omap_wdt +omapdss +omfs +omninet +on20 +on26 +onenand +onenand_omap2 +opencores-kbd +openvswitch +oprofile +opt3001 +optee +optee-rng +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5640 +ov5645 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +owl-dma +owl-mmc +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +palmas-pwrbutton +palmas-regulator +palmas_gpadc +pandora_bl +panel +panel-arm-versatile +panel-asus-z00t-tm5p5-n35596 +panel-boe-himax8279d +panel-boe-tv101wum-nl6 +panel-elida-kd35t133 +panel-feixin-k101-im2ba02 +panel-feiyang-fy07024di26a30d +panel-ilitek-ili9322 +panel-ilitek-ili9881c +panel-innolux-p079zca +panel-jdi-lt070me05000 +panel-kingdisplay-kd097d04 +panel-leadtek-ltk050h3146w +panel-leadtek-ltk500hd1829 +panel-lg-lb035q02 +panel-lg-lg4573 +panel-lvds +panel-nec-nl8048hl11 +panel-novatek-nt35510 +panel-novatek-nt39016 +panel-olimex-lcd-olinuxino +panel-orisetech-otm8009a +panel-osd-osd101t2587-53ts +panel-panasonic-vvx10f034n00 +panel-raspberrypi-touchscreen +panel-raydium-rm67191 +panel-raydium-rm68200 +panel-rocktech-jh057n00900 +panel-ronbo-rb070d30 +panel-samsung-ld9040 +panel-samsung-s6d16d0 +panel-samsung-s6e3ha2 +panel-samsung-s6e63j0x03 +panel-samsung-s6e63m0 +panel-samsung-s6e88a0-ams452ef01 +panel-samsung-s6e8aa0 +panel-seiko-43wvf1g +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-sharp-ls043t1le01 +panel-simple +panel-sitronix-st7701 +panel-sitronix-st7789v +panel-sony-acx424akp +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +panel-tpo-tpg110 +panel-truly-nt35597 +panel-visionox-rm69299 +panel-xinpeng-xpp055c272 +panfrost +parade-ps8622 +parade-ps8640 +parallel-display +paride +parkbd +parman +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_imx +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pbias-regulator +pblk +pc300too +pc87360 +pc87427 +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-pf-stub +pci-stub +pci200syn +pcie-rockchip-host +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +pdr_interface +peak_pci +peak_pciefd +peak_usb +pegasus +pegasus_notetaker +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-armada38x-comphy +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-cadence-salvo +phy-cadence-sierra +phy-cadence-torrent +phy-cpcap-usb +phy-dm816x-usb +phy-exynos-usb2 +phy-exynos5-usbdrd +phy-fsl-imx8-mipi-dphy +phy-fsl-imx8mq-usb +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-mapphone-mdm6600 +phy-meson-g12a-usb2 +phy-meson-g12a-usb3-pcie +phy-meson-gxl-usb2 +phy-meson8b-usb2 +phy-mtk-tphy +phy-mtk-ufs +phy-mtk-xsphy +phy-mvebu-a3700-comphy +phy-mvebu-a3700-utmi +phy-mvebu-cp110-comphy +phy-ocelot-serdes +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq4019-usb +phy-qcom-ipq806x-sata +phy-qcom-pcie2 +phy-qcom-qmp +phy-qcom-qusb2 +phy-qcom-snps-femto-v2 +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-usb-hs +phy-qcom-usb-hs-28nm +phy-qcom-usb-hsic +phy-qcom-usb-ss +phy-rcar-gen2 +phy-rcar-gen3-pcie +phy-rcar-gen3-usb2 +phy-rcar-gen3-usb3 +phy-rockchip-dp +phy-rockchip-dphy-rx0 +phy-rockchip-emmc +phy-rockchip-inno-dsidphy +phy-rockchip-inno-hdmi +phy-rockchip-inno-usb2 +phy-rockchip-pcie +phy-rockchip-typec +phy-rockchip-usb +phy-tahvo +phy-tegra-usb +phy-tegra-xusb +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +phy-uniphier-pcie +phy-uniphier-usb2 +phy-uniphier-usb3hs +phy-uniphier-usb3ss +phylink +physmap +pi3usb30532 +pi433 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-axp209 +pinctrl-da9062 +pinctrl-ipq4019 +pinctrl-ipq6018 +pinctrl-ipq8064 +pinctrl-ipq8074 +pinctrl-lochnagar +pinctrl-madera +pinctrl-max77620 +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-mdm9615 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8976 +pinctrl-msm8994 +pinctrl-msm8996 +pinctrl-msm8998 +pinctrl-msm8x74 +pinctrl-qcs404 +pinctrl-rk805 +pinctrl-sc7180 +pinctrl-sdm660 +pinctrl-sdm845 +pinctrl-sm8150 +pinctrl-sm8250 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pinctrl-ssbi-gpio +pinctrl-ssbi-mpp +pinctrl-stmfx +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl111_drm +pl172 +pl2303 +pl330 +pl353-smc +plat-ram +plat_nand +platform_lcd +platform_mhu +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pm8916_wdt +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn_pep +poly1305-arm +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +ps2-gpio +ps2mult +psample +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +pt +ptp-qoriq +ptp_clockmatrix +ptp_idt82p33 +ptp_ines +pulse8-cec +pulsedlight-lidar-lite-v2 +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvpanic +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-berlin +pwm-cros-ec +pwm-fan +pwm-fsl-ftm +pwm-hibvt +pwm-imx-tpm +pwm-imx1 +pwm-imx27 +pwm-iqs620a +pwm-ir-tx +pwm-lp3943 +pwm-mediatek +pwm-meson +pwm-mtk-disp +pwm-omap-dmtimer +pwm-pca9685 +pwm-rcar +pwm-regulator +pwm-renesas-tpu +pwm-rockchip +pwm-samsung +pwm-tegra +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pwrseq_emmc +pwrseq_sd8787 +pwrseq_simple +pxa168_eth +pxa27x_udc +pxe1610 +pxrc +q6adm +q6afe +q6afe-dai +q6asm +q6asm-dai +q6core +q6dsp-common +q6routing +q6sstop-qcs404 +qca8k +qca_7k_common +qcaspi +qcauart +qcaux +qcom-apcs-ipc-mailbox +qcom-coincell +qcom-cpr +qcom-cpufreq-hw +qcom-cpufreq-nvmem +qcom-emac +qcom-geni-se +qcom-pm8xxx +qcom-pm8xxx-xoadc +qcom-pon +qcom-rng +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-pmic +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-vadc-common +qcom-wdt +qcom-wled +qcom_aoss +qcom_common +qcom_edac +qcom_geni_serial +qcom_glink +qcom_glink_rpm +qcom_glink_smem +qcom_gsbi +qcom_hwspinlock +qcom_nandc +qcom_q6v5 +qcom_q6v5_adsp +qcom_q6v5_ipa_notify +qcom_q6v5_mss +qcom_q6v5_pas +qcom_q6v5_wcss +qcom_rpm +qcom_rpm-regulator +qcom_smbb +qcom_smd +qcom_smd-regulator +qcom_spmi-regulator +qcom_sysmon +qcom_tsens +qcrypto +qcserial +qed +qede +qedf +qedi +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1b0004 +qm1d1c0042 +qmi_helpers +qmi_wwan +qnoc-msm8916 +qnoc-msm8974 +qnoc-qcs404 +qnx4 +qnx6 +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ravb +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcar-csi2 +rcar-dmac +rcar-du-drm +rcar-fcp +rcar-gyroadc +rcar-vin +rcar_can +rcar_canfd +rcar_cmm +rcar_drif +rcar_dw_hdmi +rcar_fdp1 +rcar_gen3_thermal +rcar_jpu +rcar_lvds +rcar_thermal +rcuperf +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +realtek-smi +reboot-mode +redboot +redrat3 +regmap-ac97 +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +renesas-ceu +renesas_sdhi_core +renesas_sdhi_internal_dmac +renesas_sdhi_sys_dmac +renesas_usb3 +renesas_usbhs +renesas_wdt +repaper +reset-hi3660 +reset-meson-audio-arb +reset-qcom-pdc +reset-scmi +reset-ti-syscon +reset-uniphier +reset-uniphier-glue +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rk3399_dmc +rk805-pwrkey +rk808 +rk808-regulator +rk_crypto +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rmobile-reset +rmtfs_mem +rn5t618 +rn5t618-adc +rn5t618-regulator +rn5t618_wdt +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rockchip-dfi +rockchip-io-domain +rockchip-isp1 +rockchip-rga +rockchip-vdec +rockchip_saradc +rockchip_thermal +rockchipdrm +rocker +rocket +rohm-bd70528 +rohm-bd71828 +rohm-bd718x7 +rohm-regulator +rohm_bu21023 +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rpmpd +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-aspeed +rtc-bd70528 +rtc-bq32k +rtc-bq4802 +rtc-cadence +rtc-cmos +rtc-cpcap +rtc-cros-ec +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-hym8563 +rtc-imx-sc +rtc-imxdi +rtc-isl12022 +rtc-isl12026 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-meson +rtc-meson-vrtc +rtc-msm6242 +rtc-mt2712 +rtc-mt6397 +rtc-mt7622 +rtc-mxc +rtc-mxc_v2 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r7301 +rtc-r9701 +rtc-rc5t583 +rtc-rc5t619 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sd3078 +rtc-sh +rtc-snvs +rtc-stk17ta8 +rtc-tegra +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +rza_wdt +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s5p-cec +s5p-g2d +s5p-jpeg +s5p-mfc +s5p-sss +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +sahara +salsa20_generic +sample-trace-array +samsung-keypad +samsung-sxgbe +samsung_tty +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_rcar +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sbp_target +sbs-battery +sbs-charger +sbs-manager +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +sclk-div +scmi-cpufreq +scmi-hwmon +scmi_pm_domain +scpi-cpufreq +scpi-hwmon +scpi_pm_domain +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +sd_adc_modulator +sdhci-cadence +sdhci-dove +sdhci-milbeaut +sdhci-msm +sdhci-of-arasan +sdhci-of-aspeed +sdhci-of-at91 +sdhci-of-dwcmshc +sdhci-of-esdhc +sdhci-omap +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdhci-tegra +sdhci-xenon-driver +sdhci_am654 +sdhci_f_sdh30 +sdio_uart +seed +sensorhub +serial-tegra +serial_ir +serio_raw +sermouse +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sh-sci +sh_eth +sh_mmcif +sh_mobile_lcdcfb +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha2-arm-ce +sha256-arm +sha3_generic +sha512-arm +shark2 +sharpslpart +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sifive +sii902x +sii9234 +sil-sii8620 +sil164 +silead +simple-bridge +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slg51000-regulator +slic_ds26522 +slicoss +slim-qcom-ctrl +slim-qcom-ngd-ctrl +slimbus +slip +slram +sm3_generic +sm4_generic +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc911x +smc91x +smc_diag +smd-rpm +smem +smiapp +smiapp-pll +smipcie +smm665 +smp2p +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsm +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-aloop +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-ens1370 +snd-ens1371 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hda-tegra +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-apq8016-sbc +snd-soc-apq8096 +snd-soc-arizona +snd-soc-armada-370-db +snd-soc-arndale +snd-soc-audio-graph-card +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-cpcap +snd-soc-cros-ec-codec +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-davinci-mcasp +snd-soc-dmic +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-eukrea-tlv320 +snd-soc-fsi +snd-soc-fsl-asoc-card +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-utils +snd-soc-gtm601 +snd-soc-hdmi-codec +snd-soc-i2s +snd-soc-idma +snd-soc-imx-audmix +snd-soc-imx-es8328 +snd-soc-imx-mc13783 +snd-soc-imx-spdif +snd-soc-imx-ssi +snd-soc-inno-rk3036 +snd-soc-kirkwood +snd-soc-lochnagar-sc +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-mc13783 +snd-soc-meson-aiu +snd-soc-meson-axg-fifo +snd-soc-meson-axg-frddr +snd-soc-meson-axg-pdm +snd-soc-meson-axg-sound-card +snd-soc-meson-axg-spdifin +snd-soc-meson-axg-spdifout +snd-soc-meson-axg-tdm-formatter +snd-soc-meson-axg-tdm-interface +snd-soc-meson-axg-tdmin +snd-soc-meson-axg-tdmout +snd-soc-meson-axg-toddr +snd-soc-meson-card-utils +snd-soc-meson-codec-glue +snd-soc-meson-g12a-toacodec +snd-soc-meson-g12a-tohdmitx +snd-soc-meson-gx-sound-card +snd-soc-meson-t9015 +snd-soc-mikroe-proto +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-mt6797-afe +snd-soc-mt8183-afe +snd-soc-mtk-common +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-odroid +snd-soc-omap-abe-twl6040 +snd-soc-omap-dmic +snd-soc-omap-mcbsp +snd-soc-omap-mcpdm +snd-soc-omap-twl4030 +snd-soc-omap3pandora +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-qcom-common +snd-soc-rcar +snd-soc-rk3288-hdmi-analog +snd-soc-rk3328 +snd-soc-rk3399-gru-sound +snd-soc-rl6231 +snd-soc-rockchip-i2s +snd-soc-rockchip-max98090 +snd-soc-rockchip-pcm +snd-soc-rockchip-pdm +snd-soc-rockchip-rt5645 +snd-soc-rockchip-spdif +snd-soc-rt1308-sdw +snd-soc-rt5514 +snd-soc-rt5514-spi +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5663 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rt5682 +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-rx51 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-sdm845 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-smdk-spdif +snd-soc-smdk-wm8994 +snd-soc-smdk-wm8994pcm +snd-soc-snow +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tegra-alc5632 +snd-soc-tegra-max98090 +snd-soc-tegra-pcm +snd-soc-tegra-rt5640 +snd-soc-tegra-rt5677 +snd-soc-tegra-sgtl5000 +snd-soc-tegra-trimslice +snd-soc-tegra-utils +snd-soc-tegra-wm8753 +snd-soc-tegra-wm8903 +snd-soc-tegra-wm9712 +snd-soc-tegra20-ac97 +snd-soc-tegra20-das +snd-soc-tegra20-i2s +snd-soc-tegra20-spdif +snd-soc-tegra30-ahub +snd-soc-tegra30-i2s +snd-soc-tfa9879 +snd-soc-ti-edma +snd-soc-ti-sdma +snd-soc-ti-udma +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tm2-wm5110 +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-twl4030 +snd-soc-twl6040 +snd-soc-uda1334 +snd-soc-uniphier-aio-cpu +snd-soc-uniphier-aio-ld11 +snd-soc-uniphier-aio-pxs2 +snd-soc-uniphier-evea +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm-adsp +snd-soc-wm-hubs +snd-soc-wm5110 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wm8994 +snd-soc-wm9712 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-of +snd-sof-pci +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-usbmidi-lib +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +sni_ave +snic +snps_udc_core +snps_udc_plat +snvs_pwrkey +socinfo +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundwire-bus +soundwire-qcom +sp2 +sp805_wdt +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-amd +spi-armada-3700 +spi-axi-spi-engine +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-fsi +spi-fsl-dspi +spi-fsl-lpspi +spi-fsl-qspi +spi-geni-qcom +spi-gpio +spi-imx +spi-lm70llp +spi-loopback-test +spi-meson-spicc +spi-meson-spifc +spi-mt65xx +spi-mtk-nor +spi-mux +spi-mxic +spi-nor +spi-npcm-fiu +spi-npcm-pspi +spi-nxp-fspi +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qcom-qspi +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-sifive +spi-slave-mt27xx +spi-slave-system-control +spi-slave-time +spi-tegra114 +spi-tegra20-sflash +spi-tegra20-slink +spi-ti-qspi +spi-tle62x0 +spi-uniphier +spi-xcomm +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spmi +spmi-pmic-arb +sprd_serial +sps30 +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssbi +ssd1307fb +ssfdc +ssi_protocol +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-asc +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm-drm +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmfx +stmmac +stmmac-pci +stmmac-platform +stmpe-adc +stmpe-keypad +stmpe-ts +stowaway +stp +stpmic1 +stpmic1_onkey +stpmic1_regulator +stpmic1_wdt +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surface3_spi +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sy8106a-regulator +sy8824x +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink_gt +synclinkmp +syscon-reboot-mode +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc358764 +tc358767 +tc358768 +tc3589x-keypad +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tee +tef6862 +tegra-bpmp-thermal +tegra-drm +tegra-gmi +tegra-kbc +tegra-tcu +tegra-vde +tegra-video +tegra-xudc +tegra186-cpufreq +tegra20-devfreq +tegra30-devfreq +tegra_cec +tegra_nand +tegra_wdt +tehuti +teranetics +test-kprobes +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thc63lvd1024 +thermal-generic-adc +thermal_mmio +thmc50 +ths7303 +ths8200 +thunderbolt +thunderbolt-net +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads124s08 +ti-ads7950 +ti-ads8344 +ti-ads8688 +ti-cal +ti-csc +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-emif-sram +ti-eqep +ti-lmu +ti-sc +ti-sn65dsi86 +ti-soc-thermal +ti-tfp410 +ti-tlc4541 +ti-tpd12s015 +ti-vpdma +ti-vpe +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_cpsw_new +ti_davinci_emac +ti_edac +ti_hecc +ti_usb_3410_5052 +tidss +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +tilcdc +timeriomem-rng +tipc +tlan +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmio_mmc +tmio_mmc_core +tmio_nand +tmiofb +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_ftpm_tee +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_key_parser +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps65217_bl +tps65217_charger +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts4800-ts +ts4800_wdt +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsi721_mport +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +turingcc-qcs404 +turris-mox-rwtm +tusb6010 +tvaudio +tve200_drm +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucc_uart +ucd9000 +ucd9200 +ucs1002_power +ucsi_ccg +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufs-hisi +ufs-mediatek +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +uniphier-mdmac +uniphier-regulator +uniphier-sd +uniphier-xdmac +uniphier_thermal +uniphier_wdt +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-dmac +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-h264 +v4l2-jpeg +v4l2-mem2mem +v4l2-tpg +vcan +vcnl3020 +vcnl4000 +vcnl4035 +vctrl-regulator +vdpa +vdpa_sim +veml6030 +veml6070 +ves1820 +ves1x93 +veth +vexpress-hwmon +vexpress-regulator +vexpress-spc-cpufreq +vf610_adc +vf610_dac +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-amdxgbe +vfio-platform-base +vfio-platform-calxedaxgmac +vfio_iommu_type1 +vfio_mdev +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-rhine +via-sdmmc +via-velocity +via686a +vicodec +video-i2c +video-mux +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videocc-sc7180 +videocc-sdm845 +videodev +vim2m +vimc +viperboard +viperboard_adc +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmw_pvrdma +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vqmmc-ipq4019-regulator +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83627ehf +w83627hf +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcd934x +wcn36xx +wcnss_ctrl +wd719x +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wimax +winbond-840 +wire +wireguard +wishbone-serial +wkup_m3_rproc +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xgmac +xhci-histb +xhci-mtk +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xhci-tegra +xilinx-pr-decoupler +xilinx-spi +xilinx-tpg +xilinx-video +xilinx-vtc +xilinx-xadc +xilinx_emac +xilinx_gmii2rgmii +xilinx_sdfec +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xlnx_vcu +xor +xor-neon +xpad +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yurex +z3fold +zaurus +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zx-tdm --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/armhf/generic.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/armhf/generic.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/fwinfo +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/fwinfo @@ -0,0 +1,1753 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: BT3CPCC.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: acenic/tg1.bin +firmware: acenic/tg2.bin +firmware: adaptec/starfire_rx.bin +firmware: adaptec/starfire_tx.bin +firmware: advansys/3550.bin +firmware: advansys/38C0800.bin +firmware: advansys/38C1600.bin +firmware: advansys/mcode.bin +firmware: agere_ap_fw.bin +firmware: agere_sta_fw.bin +firmware: aic94xx-seq.fw +firmware: amdgpu/arcturus_asd.bin +firmware: amdgpu/arcturus_gpu_info.bin +firmware: amdgpu/arcturus_mec.bin +firmware: amdgpu/arcturus_mec2.bin +firmware: amdgpu/arcturus_rlc.bin +firmware: amdgpu/arcturus_sdma.bin +firmware: amdgpu/arcturus_sos.bin +firmware: amdgpu/arcturus_ta.bin +firmware: amdgpu/banks_k_2_smc.bin +firmware: amdgpu/bonaire_ce.bin +firmware: amdgpu/bonaire_k_smc.bin +firmware: amdgpu/bonaire_mc.bin +firmware: amdgpu/bonaire_me.bin +firmware: amdgpu/bonaire_mec.bin +firmware: amdgpu/bonaire_pfp.bin +firmware: amdgpu/bonaire_rlc.bin +firmware: amdgpu/bonaire_sdma.bin +firmware: amdgpu/bonaire_sdma1.bin +firmware: amdgpu/bonaire_smc.bin +firmware: amdgpu/bonaire_uvd.bin +firmware: amdgpu/bonaire_vce.bin +firmware: amdgpu/carrizo_ce.bin +firmware: amdgpu/carrizo_me.bin +firmware: amdgpu/carrizo_mec.bin +firmware: amdgpu/carrizo_mec2.bin +firmware: amdgpu/carrizo_pfp.bin +firmware: amdgpu/carrizo_rlc.bin +firmware: amdgpu/carrizo_sdma.bin +firmware: amdgpu/carrizo_sdma1.bin +firmware: amdgpu/carrizo_uvd.bin +firmware: amdgpu/carrizo_vce.bin +firmware: amdgpu/fiji_ce.bin +firmware: amdgpu/fiji_me.bin +firmware: amdgpu/fiji_mec.bin +firmware: amdgpu/fiji_mec2.bin +firmware: amdgpu/fiji_pfp.bin +firmware: amdgpu/fiji_rlc.bin +firmware: amdgpu/fiji_sdma.bin +firmware: amdgpu/fiji_sdma1.bin +firmware: amdgpu/fiji_smc.bin +firmware: amdgpu/fiji_uvd.bin +firmware: amdgpu/fiji_vce.bin +firmware: amdgpu/hainan_ce.bin +firmware: amdgpu/hainan_k_smc.bin +firmware: amdgpu/hainan_mc.bin +firmware: amdgpu/hainan_me.bin +firmware: amdgpu/hainan_pfp.bin +firmware: amdgpu/hainan_rlc.bin +firmware: amdgpu/hainan_smc.bin +firmware: amdgpu/hawaii_ce.bin +firmware: amdgpu/hawaii_k_smc.bin +firmware: amdgpu/hawaii_mc.bin +firmware: amdgpu/hawaii_me.bin +firmware: amdgpu/hawaii_mec.bin +firmware: amdgpu/hawaii_pfp.bin +firmware: amdgpu/hawaii_rlc.bin +firmware: amdgpu/hawaii_sdma.bin +firmware: amdgpu/hawaii_sdma1.bin +firmware: amdgpu/hawaii_smc.bin +firmware: amdgpu/hawaii_uvd.bin +firmware: amdgpu/hawaii_vce.bin +firmware: amdgpu/kabini_ce.bin +firmware: amdgpu/kabini_me.bin +firmware: amdgpu/kabini_mec.bin +firmware: amdgpu/kabini_pfp.bin +firmware: amdgpu/kabini_rlc.bin +firmware: amdgpu/kabini_sdma.bin +firmware: amdgpu/kabini_sdma1.bin +firmware: amdgpu/kabini_uvd.bin +firmware: amdgpu/kabini_vce.bin +firmware: amdgpu/kaveri_ce.bin +firmware: amdgpu/kaveri_me.bin +firmware: amdgpu/kaveri_mec.bin +firmware: amdgpu/kaveri_mec2.bin +firmware: amdgpu/kaveri_pfp.bin +firmware: amdgpu/kaveri_rlc.bin +firmware: amdgpu/kaveri_sdma.bin +firmware: amdgpu/kaveri_sdma1.bin +firmware: amdgpu/kaveri_uvd.bin +firmware: amdgpu/kaveri_vce.bin +firmware: amdgpu/mullins_ce.bin +firmware: amdgpu/mullins_me.bin +firmware: amdgpu/mullins_mec.bin +firmware: amdgpu/mullins_pfp.bin +firmware: amdgpu/mullins_rlc.bin +firmware: amdgpu/mullins_sdma.bin +firmware: amdgpu/mullins_sdma1.bin +firmware: amdgpu/mullins_uvd.bin +firmware: amdgpu/mullins_vce.bin +firmware: amdgpu/navi10_asd.bin +firmware: amdgpu/navi10_ce.bin +firmware: amdgpu/navi10_gpu_info.bin +firmware: amdgpu/navi10_me.bin +firmware: amdgpu/navi10_mec.bin +firmware: amdgpu/navi10_mec2.bin +firmware: amdgpu/navi10_mes.bin +firmware: amdgpu/navi10_pfp.bin +firmware: amdgpu/navi10_rlc.bin +firmware: amdgpu/navi10_sdma.bin +firmware: amdgpu/navi10_sdma1.bin +firmware: amdgpu/navi10_smc.bin +firmware: amdgpu/navi10_sos.bin +firmware: amdgpu/navi10_ta.bin +firmware: amdgpu/navi10_vcn.bin +firmware: amdgpu/navi12_asd.bin +firmware: amdgpu/navi12_ce.bin +firmware: amdgpu/navi12_dmcu.bin +firmware: amdgpu/navi12_gpu_info.bin +firmware: amdgpu/navi12_me.bin +firmware: amdgpu/navi12_mec.bin +firmware: amdgpu/navi12_mec2.bin +firmware: amdgpu/navi12_pfp.bin +firmware: amdgpu/navi12_rlc.bin +firmware: amdgpu/navi12_sdma.bin +firmware: amdgpu/navi12_sdma1.bin +firmware: amdgpu/navi12_sos.bin +firmware: amdgpu/navi12_ta.bin +firmware: amdgpu/navi14_asd.bin +firmware: amdgpu/navi14_ce.bin +firmware: amdgpu/navi14_ce_wks.bin +firmware: amdgpu/navi14_gpu_info.bin +firmware: amdgpu/navi14_me.bin +firmware: amdgpu/navi14_me_wks.bin +firmware: amdgpu/navi14_mec.bin +firmware: amdgpu/navi14_mec2.bin +firmware: amdgpu/navi14_mec2_wks.bin +firmware: amdgpu/navi14_mec_wks.bin +firmware: amdgpu/navi14_pfp.bin +firmware: amdgpu/navi14_pfp_wks.bin +firmware: amdgpu/navi14_rlc.bin +firmware: amdgpu/navi14_sdma.bin +firmware: amdgpu/navi14_sdma1.bin +firmware: amdgpu/navi14_smc.bin +firmware: amdgpu/navi14_sos.bin +firmware: amdgpu/navi14_ta.bin +firmware: amdgpu/navi14_vcn.bin +firmware: amdgpu/oland_ce.bin +firmware: amdgpu/oland_k_smc.bin +firmware: amdgpu/oland_mc.bin +firmware: amdgpu/oland_me.bin +firmware: amdgpu/oland_pfp.bin +firmware: amdgpu/oland_rlc.bin +firmware: amdgpu/oland_smc.bin +firmware: amdgpu/picasso_asd.bin +firmware: amdgpu/picasso_ce.bin +firmware: amdgpu/picasso_gpu_info.bin +firmware: amdgpu/picasso_me.bin +firmware: amdgpu/picasso_mec.bin +firmware: amdgpu/picasso_mec2.bin +firmware: amdgpu/picasso_pfp.bin +firmware: amdgpu/picasso_rlc.bin +firmware: amdgpu/picasso_rlc_am4.bin +firmware: amdgpu/picasso_sdma.bin +firmware: amdgpu/picasso_ta.bin +firmware: amdgpu/picasso_vcn.bin +firmware: amdgpu/pitcairn_ce.bin +firmware: amdgpu/pitcairn_k_smc.bin +firmware: amdgpu/pitcairn_mc.bin +firmware: amdgpu/pitcairn_me.bin +firmware: amdgpu/pitcairn_pfp.bin +firmware: amdgpu/pitcairn_rlc.bin +firmware: amdgpu/pitcairn_smc.bin +firmware: amdgpu/polaris10_ce.bin +firmware: amdgpu/polaris10_ce_2.bin +firmware: amdgpu/polaris10_k2_smc.bin +firmware: amdgpu/polaris10_k_mc.bin +firmware: amdgpu/polaris10_k_smc.bin +firmware: amdgpu/polaris10_mc.bin +firmware: amdgpu/polaris10_me.bin +firmware: amdgpu/polaris10_me_2.bin +firmware: amdgpu/polaris10_mec.bin +firmware: amdgpu/polaris10_mec2.bin +firmware: amdgpu/polaris10_mec2_2.bin +firmware: amdgpu/polaris10_mec_2.bin +firmware: amdgpu/polaris10_pfp.bin +firmware: amdgpu/polaris10_pfp_2.bin +firmware: amdgpu/polaris10_rlc.bin +firmware: amdgpu/polaris10_sdma.bin +firmware: amdgpu/polaris10_sdma1.bin +firmware: amdgpu/polaris10_smc.bin +firmware: amdgpu/polaris10_smc_sk.bin +firmware: amdgpu/polaris10_uvd.bin +firmware: amdgpu/polaris10_vce.bin +firmware: amdgpu/polaris11_ce.bin +firmware: amdgpu/polaris11_ce_2.bin +firmware: amdgpu/polaris11_k2_smc.bin +firmware: amdgpu/polaris11_k_mc.bin +firmware: amdgpu/polaris11_k_smc.bin +firmware: amdgpu/polaris11_mc.bin +firmware: amdgpu/polaris11_me.bin +firmware: amdgpu/polaris11_me_2.bin +firmware: amdgpu/polaris11_mec.bin +firmware: amdgpu/polaris11_mec2.bin +firmware: amdgpu/polaris11_mec2_2.bin +firmware: amdgpu/polaris11_mec_2.bin +firmware: amdgpu/polaris11_pfp.bin +firmware: amdgpu/polaris11_pfp_2.bin +firmware: amdgpu/polaris11_rlc.bin +firmware: amdgpu/polaris11_sdma.bin +firmware: amdgpu/polaris11_sdma1.bin +firmware: amdgpu/polaris11_smc.bin +firmware: amdgpu/polaris11_smc_sk.bin +firmware: amdgpu/polaris11_uvd.bin +firmware: amdgpu/polaris11_vce.bin +firmware: amdgpu/polaris12_ce.bin +firmware: amdgpu/polaris12_ce_2.bin +firmware: amdgpu/polaris12_k_mc.bin +firmware: amdgpu/polaris12_k_smc.bin +firmware: amdgpu/polaris12_mc.bin +firmware: amdgpu/polaris12_me.bin +firmware: amdgpu/polaris12_me_2.bin +firmware: amdgpu/polaris12_mec.bin +firmware: amdgpu/polaris12_mec2.bin +firmware: amdgpu/polaris12_mec2_2.bin +firmware: amdgpu/polaris12_mec_2.bin +firmware: amdgpu/polaris12_pfp.bin +firmware: amdgpu/polaris12_pfp_2.bin +firmware: amdgpu/polaris12_rlc.bin +firmware: amdgpu/polaris12_sdma.bin +firmware: amdgpu/polaris12_sdma1.bin +firmware: amdgpu/polaris12_smc.bin +firmware: amdgpu/polaris12_uvd.bin +firmware: amdgpu/polaris12_vce.bin +firmware: amdgpu/raven2_asd.bin +firmware: amdgpu/raven2_ce.bin +firmware: amdgpu/raven2_gpu_info.bin +firmware: amdgpu/raven2_me.bin +firmware: amdgpu/raven2_mec.bin +firmware: amdgpu/raven2_mec2.bin +firmware: amdgpu/raven2_pfp.bin +firmware: amdgpu/raven2_rlc.bin +firmware: amdgpu/raven2_sdma.bin +firmware: amdgpu/raven2_ta.bin +firmware: amdgpu/raven2_vcn.bin +firmware: amdgpu/raven_asd.bin +firmware: amdgpu/raven_ce.bin +firmware: amdgpu/raven_dmcu.bin +firmware: amdgpu/raven_gpu_info.bin +firmware: amdgpu/raven_kicker_rlc.bin +firmware: amdgpu/raven_me.bin +firmware: amdgpu/raven_mec.bin +firmware: amdgpu/raven_mec2.bin +firmware: amdgpu/raven_pfp.bin +firmware: amdgpu/raven_rlc.bin +firmware: amdgpu/raven_sdma.bin +firmware: amdgpu/raven_ta.bin +firmware: amdgpu/raven_vcn.bin +firmware: amdgpu/renoir_asd.bin +firmware: amdgpu/renoir_ce.bin +firmware: amdgpu/renoir_dmcub.bin +firmware: amdgpu/renoir_gpu_info.bin +firmware: amdgpu/renoir_me.bin +firmware: amdgpu/renoir_mec.bin +firmware: amdgpu/renoir_mec2.bin +firmware: amdgpu/renoir_pfp.bin +firmware: amdgpu/renoir_rlc.bin +firmware: amdgpu/renoir_sdma.bin +firmware: amdgpu/renoir_vcn.bin +firmware: amdgpu/si58_mc.bin +firmware: amdgpu/stoney_ce.bin +firmware: amdgpu/stoney_me.bin +firmware: amdgpu/stoney_mec.bin +firmware: amdgpu/stoney_pfp.bin +firmware: amdgpu/stoney_rlc.bin +firmware: amdgpu/stoney_sdma.bin +firmware: amdgpu/stoney_uvd.bin +firmware: amdgpu/stoney_vce.bin +firmware: amdgpu/tahiti_ce.bin +firmware: amdgpu/tahiti_mc.bin +firmware: amdgpu/tahiti_me.bin +firmware: amdgpu/tahiti_pfp.bin +firmware: amdgpu/tahiti_rlc.bin +firmware: amdgpu/tahiti_smc.bin +firmware: amdgpu/tonga_ce.bin +firmware: amdgpu/tonga_k_smc.bin +firmware: amdgpu/tonga_mc.bin +firmware: amdgpu/tonga_me.bin +firmware: amdgpu/tonga_mec.bin +firmware: amdgpu/tonga_mec2.bin +firmware: amdgpu/tonga_pfp.bin +firmware: amdgpu/tonga_rlc.bin +firmware: amdgpu/tonga_sdma.bin +firmware: amdgpu/tonga_sdma1.bin +firmware: amdgpu/tonga_smc.bin +firmware: amdgpu/tonga_uvd.bin +firmware: amdgpu/tonga_vce.bin +firmware: amdgpu/topaz_ce.bin +firmware: amdgpu/topaz_k_smc.bin +firmware: amdgpu/topaz_mc.bin +firmware: amdgpu/topaz_me.bin +firmware: amdgpu/topaz_mec.bin +firmware: amdgpu/topaz_pfp.bin +firmware: amdgpu/topaz_rlc.bin +firmware: amdgpu/topaz_sdma.bin +firmware: amdgpu/topaz_sdma1.bin +firmware: amdgpu/topaz_smc.bin +firmware: amdgpu/vega10_acg_smc.bin +firmware: amdgpu/vega10_asd.bin +firmware: amdgpu/vega10_ce.bin +firmware: amdgpu/vega10_gpu_info.bin +firmware: amdgpu/vega10_me.bin +firmware: amdgpu/vega10_mec.bin +firmware: amdgpu/vega10_mec2.bin +firmware: amdgpu/vega10_pfp.bin +firmware: amdgpu/vega10_rlc.bin +firmware: amdgpu/vega10_sdma.bin +firmware: amdgpu/vega10_sdma1.bin +firmware: amdgpu/vega10_smc.bin +firmware: amdgpu/vega10_sos.bin +firmware: amdgpu/vega10_uvd.bin +firmware: amdgpu/vega10_vce.bin +firmware: amdgpu/vega12_asd.bin +firmware: amdgpu/vega12_ce.bin +firmware: amdgpu/vega12_gpu_info.bin +firmware: amdgpu/vega12_me.bin +firmware: amdgpu/vega12_mec.bin +firmware: amdgpu/vega12_mec2.bin +firmware: amdgpu/vega12_pfp.bin +firmware: amdgpu/vega12_rlc.bin +firmware: amdgpu/vega12_sdma.bin +firmware: amdgpu/vega12_sdma1.bin +firmware: amdgpu/vega12_smc.bin +firmware: amdgpu/vega12_sos.bin +firmware: amdgpu/vega12_uvd.bin +firmware: amdgpu/vega12_vce.bin +firmware: amdgpu/vega20_asd.bin +firmware: amdgpu/vega20_ce.bin +firmware: amdgpu/vega20_me.bin +firmware: amdgpu/vega20_mec.bin +firmware: amdgpu/vega20_mec2.bin +firmware: amdgpu/vega20_pfp.bin +firmware: amdgpu/vega20_rlc.bin +firmware: amdgpu/vega20_sdma.bin +firmware: amdgpu/vega20_sdma1.bin +firmware: amdgpu/vega20_smc.bin +firmware: amdgpu/vega20_sos.bin +firmware: amdgpu/vega20_ta.bin +firmware: amdgpu/vega20_uvd.bin +firmware: amdgpu/vega20_vce.bin +firmware: amdgpu/vegam_ce.bin +firmware: amdgpu/vegam_me.bin +firmware: amdgpu/vegam_mec.bin +firmware: amdgpu/vegam_mec2.bin +firmware: amdgpu/vegam_pfp.bin +firmware: amdgpu/vegam_rlc.bin +firmware: amdgpu/vegam_sdma.bin +firmware: amdgpu/vegam_sdma1.bin +firmware: amdgpu/vegam_smc.bin +firmware: amdgpu/vegam_uvd.bin +firmware: amdgpu/vegam_vce.bin +firmware: amdgpu/verde_ce.bin +firmware: amdgpu/verde_k_smc.bin +firmware: amdgpu/verde_mc.bin +firmware: amdgpu/verde_me.bin +firmware: amdgpu/verde_pfp.bin +firmware: amdgpu/verde_rlc.bin +firmware: amdgpu/verde_smc.bin +firmware: ar5523.bin +firmware: asihpi/dsp5000.bin +firmware: asihpi/dsp6200.bin +firmware: asihpi/dsp6205.bin +firmware: asihpi/dsp6400.bin +firmware: asihpi/dsp6600.bin +firmware: asihpi/dsp8700.bin +firmware: asihpi/dsp8900.bin +firmware: ast_dp501_fw.bin +firmware: ath10k/QCA6174/hw2.1/board-2.bin +firmware: ath10k/QCA6174/hw2.1/board.bin +firmware: ath10k/QCA6174/hw2.1/firmware-4.bin +firmware: ath10k/QCA6174/hw2.1/firmware-5.bin +firmware: ath10k/QCA6174/hw3.0/board-2.bin +firmware: ath10k/QCA6174/hw3.0/board.bin +firmware: ath10k/QCA6174/hw3.0/firmware-4.bin +firmware: ath10k/QCA6174/hw3.0/firmware-5.bin +firmware: ath10k/QCA6174/hw3.0/firmware-6.bin +firmware: ath10k/QCA9377/hw1.0/board.bin +firmware: ath10k/QCA9377/hw1.0/firmware-5.bin +firmware: ath10k/QCA9377/hw1.0/firmware-6.bin +firmware: ath10k/QCA9887/hw1.0/board-2.bin +firmware: ath10k/QCA9887/hw1.0/board.bin +firmware: ath10k/QCA9887/hw1.0/firmware-5.bin +firmware: ath10k/QCA988X/hw2.0/board-2.bin +firmware: ath10k/QCA988X/hw2.0/board.bin +firmware: ath10k/QCA988X/hw2.0/firmware-2.bin +firmware: ath10k/QCA988X/hw2.0/firmware-3.bin +firmware: ath10k/QCA988X/hw2.0/firmware-4.bin +firmware: ath10k/QCA988X/hw2.0/firmware-5.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: ath6k/AR6004/hw1.3/bdata.bin +firmware: ath6k/AR6004/hw1.3/fw.ram.bin +firmware: ath9k_htc/htc_7010-1.4.0.fw +firmware: ath9k_htc/htc_9271-1.4.0.fw +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmel_at76c506.bin +firmware: atmsar11.fw +firmware: atsc_denver.inp +firmware: av7110/bootcode.bin +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_lp.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode24_lcn.fw +firmware: b43/ucode25_lcn.fw +firmware: b43/ucode25_mimo.fw +firmware: b43/ucode26_mimo.fw +firmware: b43/ucode29_mimo.fw +firmware: b43/ucode30_mimo.fw +firmware: b43/ucode33_lcn40.fw +firmware: b43/ucode40.fw +firmware: b43/ucode42.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.13.15.0.fw +firmware: bnx2x/bnx2x-e1h-7.13.15.0.fw +firmware: bnx2x/bnx2x-e2-7.13.15.0.fw +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac43012-sdio.bin +firmware: brcm/brcmfmac43143-sdio.bin +firmware: brcm/brcmfmac43143.bin +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac43241b0-sdio.bin +firmware: brcm/brcmfmac43241b4-sdio.bin +firmware: brcm/brcmfmac43241b5-sdio.bin +firmware: brcm/brcmfmac43242a.bin +firmware: brcm/brcmfmac4329-sdio.bin +firmware: brcm/brcmfmac4330-sdio.bin +firmware: brcm/brcmfmac4334-sdio.bin +firmware: brcm/brcmfmac43340-sdio.bin +firmware: brcm/brcmfmac4335-sdio.bin +firmware: brcm/brcmfmac43362-sdio.bin +firmware: brcm/brcmfmac4339-sdio.bin +firmware: brcm/brcmfmac43430-sdio.bin +firmware: brcm/brcmfmac43430a0-sdio.bin +firmware: brcm/brcmfmac43455-sdio.bin +firmware: brcm/brcmfmac43456-sdio.bin +firmware: brcm/brcmfmac4350-pcie.bin +firmware: brcm/brcmfmac4350c2-pcie.bin +firmware: brcm/brcmfmac4354-sdio.bin +firmware: brcm/brcmfmac4356-pcie.bin +firmware: brcm/brcmfmac4356-sdio.bin +firmware: brcm/brcmfmac43569.bin +firmware: brcm/brcmfmac43570-pcie.bin +firmware: brcm/brcmfmac4358-pcie.bin +firmware: brcm/brcmfmac4359-pcie.bin +firmware: brcm/brcmfmac4359-sdio.bin +firmware: brcm/brcmfmac43602-pcie.bin +firmware: brcm/brcmfmac4364-pcie.bin +firmware: brcm/brcmfmac4365b-pcie.bin +firmware: brcm/brcmfmac4365c-pcie.bin +firmware: brcm/brcmfmac4366b-pcie.bin +firmware: brcm/brcmfmac4366c-pcie.bin +firmware: brcm/brcmfmac4371-pcie.bin +firmware: brcm/brcmfmac4373-sdio.bin +firmware: brcm/brcmfmac4373.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cavium/cnn55xx_se.fw +firmware: cbfw-3.2.5.1.bin +firmware: cis/3CCFEM556.cis +firmware: cis/3CXEM556.cis +firmware: cis/COMpad2.cis +firmware: cis/COMpad4.cis +firmware: cis/DP83903.cis +firmware: cis/LA-PCM.cis +firmware: cis/MT5634ZLX.cis +firmware: cis/NE2K.cis +firmware: cis/PCMLM28.cis +firmware: cis/PE-200.cis +firmware: cis/PE520.cis +firmware: cis/RS-COM-2P.cis +firmware: cis/SW_555_SER.cis +firmware: cis/SW_7xx_SER.cis +firmware: cis/SW_8xx_SER.cis +firmware: cis/tamarack.cis +firmware: cmmb_ming_app.inp +firmware: cmmb_vega_12mhz.inp +firmware: cmmb_venice_12mhz.inp +firmware: comedi/jr3pci.idm +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: cs46xx/cwc4630 +firmware: cs46xx/cwcasync +firmware: cs46xx/cwcbinhack +firmware: cs46xx/cwcdma +firmware: cs46xx/cwcsnoop +firmware: ct2fw-3.2.5.1.bin +firmware: ctefx-desktop.bin +firmware: ctefx-r3di.bin +firmware: ctefx.bin +firmware: ctfw-3.2.5.1.bin +firmware: cxgb3/ael2005_opt_edc.bin +firmware: cxgb3/ael2005_twx_edc.bin +firmware: cxgb3/ael2020_twx_edc.bin +firmware: cxgb3/t3b_psram-1.1.0.bin +firmware: cxgb3/t3c_psram-1.1.0.bin +firmware: cxgb3/t3fw-7.12.0.bin +firmware: cxgb4/t4fw.bin +firmware: cxgb4/t5fw.bin +firmware: cxgb4/t6fw.bin +firmware: cyzfirm.bin +firmware: daqboard2000_firmware.bin +firmware: digiface_firmware.bin +firmware: digiface_firmware_rev11.bin +firmware: dvb-cx18-mpc718-mt352.fw +firmware: dvb-demod-m88ds3103.fw +firmware: dvb-demod-m88ds3103b.fw +firmware: dvb-demod-m88rs6000.fw +firmware: dvb-demod-mn88472-02.fw +firmware: dvb-demod-mn88473-01.fw +firmware: dvb-demod-si2165.fw +firmware: dvb-demod-si2168-a20-01.fw +firmware: dvb-demod-si2168-a30-01.fw +firmware: dvb-demod-si2168-b40-01.fw +firmware: dvb-demod-si2168-d60-01.fw +firmware: dvb-fe-af9013.fw +firmware: dvb-fe-cx24117.fw +firmware: dvb-fe-drxj-mc-1.0.8.fw +firmware: dvb-fe-ds3000.fw +firmware: dvb-fe-tda10071.fw +firmware: dvb-fe-xc4000-1.4.1.fw +firmware: dvb-fe-xc4000-1.4.fw +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-4.1.30.7.fw +firmware: dvb-tuner-si2141-a10-01.fw +firmware: dvb-tuner-si2157-a30-01.fw +firmware: dvb-tuner-si2158-a20-01.fw +firmware: dvb-usb-af9015.fw +firmware: dvb-usb-af9035-02.fw +firmware: dvb-usb-dib0700-1.20.fw +firmware: dvb-usb-dw2101.fw +firmware: dvb-usb-dw2102.fw +firmware: dvb-usb-dw2104.fw +firmware: dvb-usb-dw3101.fw +firmware: dvb-usb-ec168.fw +firmware: dvb-usb-it9135-01.fw +firmware: dvb-usb-it9135-02.fw +firmware: dvb-usb-it9303-01.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.fw +firmware: dvb-usb-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-p1100.fw +firmware: dvb-usb-p7500.fw +firmware: dvb-usb-s630.fw +firmware: dvb-usb-s660.fw +firmware: dvb-usb-terratec-h7-az6007.fw +firmware: dvb_nova_12mhz.inp +firmware: dvb_nova_12mhz_b0.inp +firmware: dvb_rio.inp +firmware: dvbh_rio.inp +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot.fw +firmware: edgeport/boot2.fw +firmware: edgeport/down.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/emu1010b.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: fm_radio.inp +firmware: fm_radio_rio.inp +firmware: fw.ram.bin +firmware: go7007/go7007fw.bin +firmware: go7007/go7007tv.bin +firmware: go7007/lr192.fw +firmware: go7007/px-m402u.fw +firmware: go7007/px-tv402u.fw +firmware: go7007/s2250-1.fw +firmware: go7007/s2250-2.fw +firmware: go7007/wis-startrek.fw +firmware: hfi1_dc8051.fw +firmware: hfi1_fabric.fw +firmware: hfi1_pcie.fw +firmware: hfi1_sbus.fw +firmware: i2400m-fw-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: i915/bxt_dmc_ver1_07.bin +firmware: i915/bxt_guc_33.0.0.bin +firmware: i915/bxt_huc_2.0.0.bin +firmware: i915/cml_guc_33.0.0.bin +firmware: i915/cml_huc_4.0.0.bin +firmware: i915/cnl_dmc_ver1_07.bin +firmware: i915/ehl_guc_33.0.4.bin +firmware: i915/ehl_huc_9.0.0.bin +firmware: i915/glk_dmc_ver1_04.bin +firmware: i915/glk_guc_33.0.0.bin +firmware: i915/glk_huc_4.0.0.bin +firmware: i915/icl_dmc_ver1_09.bin +firmware: i915/icl_guc_33.0.0.bin +firmware: i915/icl_huc_9.0.0.bin +firmware: i915/kbl_dmc_ver1_04.bin +firmware: i915/kbl_guc_33.0.0.bin +firmware: i915/kbl_huc_4.0.0.bin +firmware: i915/skl_dmc_ver1_27.bin +firmware: i915/skl_guc_33.0.0.bin +firmware: i915/skl_huc_2.0.0.bin +firmware: i915/tgl_dmc_ver2_06.bin +firmware: i915/tgl_guc_35.2.0.bin +firmware: i915/tgl_huc_7.0.12.bin +firmware: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: imx/sdma/sdma-imx6q.bin +firmware: imx/sdma/sdma-imx7d.bin +firmware: intel/ibt-11-5.ddc +firmware: intel/ibt-11-5.sfi +firmware: intel/ibt-12-16.ddc +firmware: intel/ibt-12-16.sfi +firmware: intel/ice/ddp/ice.pkg +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2100-1.3.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdbt_nova_12mhz.inp +firmware: isdbt_nova_12mhz_b0.inp +firmware: isdbt_pele.inp +firmware: isdbt_rio.inp +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-3160-17.ucode +firmware: iwlwifi-3168-29.ucode +firmware: iwlwifi-3945-2.ucode +firmware: iwlwifi-4965-2.ucode +firmware: iwlwifi-5000-5.ucode +firmware: iwlwifi-5150-2.ucode +firmware: iwlwifi-6000-6.ucode +firmware: iwlwifi-6000g2a-6.ucode +firmware: iwlwifi-6000g2b-6.ucode +firmware: iwlwifi-6050-5.ucode +firmware: iwlwifi-7260-17.ucode +firmware: iwlwifi-7265-17.ucode +firmware: iwlwifi-7265D-29.ucode +firmware: iwlwifi-8000C-36.ucode +firmware: iwlwifi-8265-36.ucode +firmware: iwlwifi-9000-pu-b0-jf-b0-46.ucode +firmware: iwlwifi-9260-th-b0-jf-b0-46.ucode +firmware: iwlwifi-Qu-b0-hr-b0-56.ucode +firmware: iwlwifi-Qu-b0-jf-b0-56.ucode +firmware: iwlwifi-Qu-c0-hr-b0-56.ucode +firmware: iwlwifi-QuQnj-b0-hr-b0-56.ucode +firmware: iwlwifi-QuQnj-b0-jf-b0-56.ucode +firmware: iwlwifi-QuZ-a0-hr-b0-56.ucode +firmware: iwlwifi-QuZ-a0-jf-b0-56.ucode +firmware: iwlwifi-SoSnj-a0-gf-a0-56.ucode +firmware: iwlwifi-SoSnj-a0-gf4-a0-56.ucode +firmware: iwlwifi-cc-a0-56.ucode +firmware: iwlwifi-so-a0-gf-a0-56.ucode +firmware: iwlwifi-so-a0-hr-b0-56.ucode +firmware: iwlwifi-so-a0-jf-b0-56.ucode +firmware: iwlwifi-ty-a0-gf-a0-56.ucode +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: korg/k1212.dsp +firmware: ks7010sd.rom +firmware: lantiq/xrx200_phy11g_a14.bin +firmware: lantiq/xrx200_phy11g_a22.bin +firmware: lantiq/xrx200_phy22f_a14.bin +firmware: lantiq/xrx200_phy22f_a22.bin +firmware: lantiq/xrx300_phy11g_a21.bin +firmware: lantiq/xrx300_phy22f_a21.bin +firmware: lattice-ecp3.bit +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: liquidio/lio_210nv_nic.bin +firmware: liquidio/lio_210sv_nic.bin +firmware: liquidio/lio_23xx_nic.bin +firmware: liquidio/lio_410nv_nic.bin +firmware: me2600_firmware.bin +firmware: me4000_firmware.bin +firmware: mediatek/mt7610e.bin +firmware: mediatek/mt7610u.bin +firmware: mediatek/mt7615_cr4.bin +firmware: mediatek/mt7615_n9.bin +firmware: mediatek/mt7615_rom_patch.bin +firmware: mediatek/mt7622_n9.bin +firmware: mediatek/mt7622_rom_patch.bin +firmware: mediatek/mt7622pr2h.bin +firmware: mediatek/mt7650e.bin +firmware: mediatek/mt7663_n9_rebb.bin +firmware: mediatek/mt7663_n9_v3.bin +firmware: mediatek/mt7663pr2h.bin +firmware: mediatek/mt7663pr2h_rebb.bin +firmware: mediatek/mt7668pr2h.bin +firmware: mediatek/mt7915_rom_patch.bin +firmware: mediatek/mt7915_wa.bin +firmware: mediatek/mt7915_wm.bin +firmware: mellanox/mlxsw_spectrum-13.2000.2714.mfa2 +firmware: mellanox/mlxsw_spectrum2-29.2000.2714.mfa2 +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mixart/miXart8AES.xlx +firmware: moxa/moxa-1110.fw +firmware: moxa/moxa-1130.fw +firmware: moxa/moxa-1131.fw +firmware: moxa/moxa-1150.fw +firmware: moxa/moxa-1151.fw +firmware: mrvl/sd8688.bin +firmware: mrvl/sd8688_helper.bin +firmware: mrvl/sd8786_uapsta.bin +firmware: mrvl/sd8787_uapsta.bin +firmware: mrvl/sd8797_uapsta.bin +firmware: mrvl/sd8887_uapsta.bin +firmware: mrvl/sd8897_uapsta.bin +firmware: mrvl/sd8987_uapsta.bin +firmware: mrvl/sdsd8977_combo_v2.bin +firmware: mrvl/sdsd8997_combo_v4.bin +firmware: mrvl/usb8766_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mrvl/usb8801_uapsta.bin +firmware: mrvl/usbusb8997_combo_v4.bin +firmware: mt7601u.bin +firmware: mt7603_e1.bin +firmware: mt7603_e2.bin +firmware: mt7628_e1.bin +firmware: mt7628_e2.bin +firmware: mt7662.bin +firmware: mt7662_rom_patch.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: multiface_firmware.bin +firmware: multiface_firmware_rev11.bin +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8366_ap-3.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: netronome/nic_AMDA0058-0011_2x40.nffw +firmware: netronome/nic_AMDA0058-0012_2x40.nffw +firmware: netronome/nic_AMDA0081-0001_1x40.nffw +firmware: netronome/nic_AMDA0081-0001_4x10.nffw +firmware: netronome/nic_AMDA0096-0001_2x10.nffw +firmware: netronome/nic_AMDA0097-0001_2x40.nffw +firmware: netronome/nic_AMDA0097-0001_4x10_1x40.nffw +firmware: netronome/nic_AMDA0097-0001_8x10.nffw +firmware: netronome/nic_AMDA0099-0001_1x10_1x25.nffw +firmware: netronome/nic_AMDA0099-0001_2x10.nffw +firmware: netronome/nic_AMDA0099-0001_2x25.nffw +firmware: ni6534a.bin +firmware: niscrb01.bin +firmware: niscrb02.bin +firmware: nvidia/gk20a/fecs_data.bin +firmware: nvidia/gk20a/fecs_inst.bin +firmware: nvidia/gk20a/gpccs_data.bin +firmware: nvidia/gk20a/gpccs_inst.bin +firmware: nvidia/gk20a/sw_bundle_init.bin +firmware: nvidia/gk20a/sw_ctx.bin +firmware: nvidia/gk20a/sw_method_init.bin +firmware: nvidia/gk20a/sw_nonctx.bin +firmware: nvidia/gm200/acr/bl.bin +firmware: nvidia/gm200/acr/ucode_load.bin +firmware: nvidia/gm200/acr/ucode_unload.bin +firmware: nvidia/gm200/gr/fecs_bl.bin +firmware: nvidia/gm200/gr/fecs_data.bin +firmware: nvidia/gm200/gr/fecs_inst.bin +firmware: nvidia/gm200/gr/fecs_sig.bin +firmware: nvidia/gm200/gr/gpccs_bl.bin +firmware: nvidia/gm200/gr/gpccs_data.bin +firmware: nvidia/gm200/gr/gpccs_inst.bin +firmware: nvidia/gm200/gr/gpccs_sig.bin +firmware: nvidia/gm200/gr/sw_bundle_init.bin +firmware: nvidia/gm200/gr/sw_ctx.bin +firmware: nvidia/gm200/gr/sw_method_init.bin +firmware: nvidia/gm200/gr/sw_nonctx.bin +firmware: nvidia/gm204/acr/bl.bin +firmware: nvidia/gm204/acr/ucode_load.bin +firmware: nvidia/gm204/acr/ucode_unload.bin +firmware: nvidia/gm204/gr/fecs_bl.bin +firmware: nvidia/gm204/gr/fecs_data.bin +firmware: nvidia/gm204/gr/fecs_inst.bin +firmware: nvidia/gm204/gr/fecs_sig.bin +firmware: nvidia/gm204/gr/gpccs_bl.bin +firmware: nvidia/gm204/gr/gpccs_data.bin +firmware: nvidia/gm204/gr/gpccs_inst.bin +firmware: nvidia/gm204/gr/gpccs_sig.bin +firmware: nvidia/gm204/gr/sw_bundle_init.bin +firmware: nvidia/gm204/gr/sw_ctx.bin +firmware: nvidia/gm204/gr/sw_method_init.bin +firmware: nvidia/gm204/gr/sw_nonctx.bin +firmware: nvidia/gm206/acr/bl.bin +firmware: nvidia/gm206/acr/ucode_load.bin +firmware: nvidia/gm206/acr/ucode_unload.bin +firmware: nvidia/gm206/gr/fecs_bl.bin +firmware: nvidia/gm206/gr/fecs_data.bin +firmware: nvidia/gm206/gr/fecs_inst.bin +firmware: nvidia/gm206/gr/fecs_sig.bin +firmware: nvidia/gm206/gr/gpccs_bl.bin +firmware: nvidia/gm206/gr/gpccs_data.bin +firmware: nvidia/gm206/gr/gpccs_inst.bin +firmware: nvidia/gm206/gr/gpccs_sig.bin +firmware: nvidia/gm206/gr/sw_bundle_init.bin +firmware: nvidia/gm206/gr/sw_ctx.bin +firmware: nvidia/gm206/gr/sw_method_init.bin +firmware: nvidia/gm206/gr/sw_nonctx.bin +firmware: nvidia/gp100/acr/bl.bin +firmware: nvidia/gp100/acr/ucode_load.bin +firmware: nvidia/gp100/acr/ucode_unload.bin +firmware: nvidia/gp100/gr/fecs_bl.bin +firmware: nvidia/gp100/gr/fecs_data.bin +firmware: nvidia/gp100/gr/fecs_inst.bin +firmware: nvidia/gp100/gr/fecs_sig.bin +firmware: nvidia/gp100/gr/gpccs_bl.bin +firmware: nvidia/gp100/gr/gpccs_data.bin +firmware: nvidia/gp100/gr/gpccs_inst.bin +firmware: nvidia/gp100/gr/gpccs_sig.bin +firmware: nvidia/gp100/gr/sw_bundle_init.bin +firmware: nvidia/gp100/gr/sw_ctx.bin +firmware: nvidia/gp100/gr/sw_method_init.bin +firmware: nvidia/gp100/gr/sw_nonctx.bin +firmware: nvidia/gp102/acr/bl.bin +firmware: nvidia/gp102/acr/ucode_load.bin +firmware: nvidia/gp102/acr/ucode_unload.bin +firmware: nvidia/gp102/acr/unload_bl.bin +firmware: nvidia/gp102/gr/fecs_bl.bin +firmware: nvidia/gp102/gr/fecs_data.bin +firmware: nvidia/gp102/gr/fecs_inst.bin +firmware: nvidia/gp102/gr/fecs_sig.bin +firmware: nvidia/gp102/gr/gpccs_bl.bin +firmware: nvidia/gp102/gr/gpccs_data.bin +firmware: nvidia/gp102/gr/gpccs_inst.bin +firmware: nvidia/gp102/gr/gpccs_sig.bin +firmware: nvidia/gp102/gr/sw_bundle_init.bin +firmware: nvidia/gp102/gr/sw_ctx.bin +firmware: nvidia/gp102/gr/sw_method_init.bin +firmware: nvidia/gp102/gr/sw_nonctx.bin +firmware: nvidia/gp102/nvdec/scrubber.bin +firmware: nvidia/gp102/sec2/desc-1.bin +firmware: nvidia/gp102/sec2/desc.bin +firmware: nvidia/gp102/sec2/image-1.bin +firmware: nvidia/gp102/sec2/image.bin +firmware: nvidia/gp102/sec2/sig-1.bin +firmware: nvidia/gp102/sec2/sig.bin +firmware: nvidia/gp104/acr/bl.bin +firmware: nvidia/gp104/acr/ucode_load.bin +firmware: nvidia/gp104/acr/ucode_unload.bin +firmware: nvidia/gp104/acr/unload_bl.bin +firmware: nvidia/gp104/gr/fecs_bl.bin +firmware: nvidia/gp104/gr/fecs_data.bin +firmware: nvidia/gp104/gr/fecs_inst.bin +firmware: nvidia/gp104/gr/fecs_sig.bin +firmware: nvidia/gp104/gr/gpccs_bl.bin +firmware: nvidia/gp104/gr/gpccs_data.bin +firmware: nvidia/gp104/gr/gpccs_inst.bin +firmware: nvidia/gp104/gr/gpccs_sig.bin +firmware: nvidia/gp104/gr/sw_bundle_init.bin +firmware: nvidia/gp104/gr/sw_ctx.bin +firmware: nvidia/gp104/gr/sw_method_init.bin +firmware: nvidia/gp104/gr/sw_nonctx.bin +firmware: nvidia/gp104/nvdec/scrubber.bin +firmware: nvidia/gp104/sec2/desc-1.bin +firmware: nvidia/gp104/sec2/desc.bin +firmware: nvidia/gp104/sec2/image-1.bin +firmware: nvidia/gp104/sec2/image.bin +firmware: nvidia/gp104/sec2/sig-1.bin +firmware: nvidia/gp104/sec2/sig.bin +firmware: nvidia/gp106/acr/bl.bin +firmware: nvidia/gp106/acr/ucode_load.bin +firmware: nvidia/gp106/acr/ucode_unload.bin +firmware: nvidia/gp106/acr/unload_bl.bin +firmware: nvidia/gp106/gr/fecs_bl.bin +firmware: nvidia/gp106/gr/fecs_data.bin +firmware: nvidia/gp106/gr/fecs_inst.bin +firmware: nvidia/gp106/gr/fecs_sig.bin +firmware: nvidia/gp106/gr/gpccs_bl.bin +firmware: nvidia/gp106/gr/gpccs_data.bin +firmware: nvidia/gp106/gr/gpccs_inst.bin +firmware: nvidia/gp106/gr/gpccs_sig.bin +firmware: nvidia/gp106/gr/sw_bundle_init.bin +firmware: nvidia/gp106/gr/sw_ctx.bin +firmware: nvidia/gp106/gr/sw_method_init.bin +firmware: nvidia/gp106/gr/sw_nonctx.bin +firmware: nvidia/gp106/nvdec/scrubber.bin +firmware: nvidia/gp106/sec2/desc-1.bin +firmware: nvidia/gp106/sec2/desc.bin +firmware: nvidia/gp106/sec2/image-1.bin +firmware: nvidia/gp106/sec2/image.bin +firmware: nvidia/gp106/sec2/sig-1.bin +firmware: nvidia/gp106/sec2/sig.bin +firmware: nvidia/gp107/acr/bl.bin +firmware: nvidia/gp107/acr/ucode_load.bin +firmware: nvidia/gp107/acr/ucode_unload.bin +firmware: nvidia/gp107/acr/unload_bl.bin +firmware: nvidia/gp107/gr/fecs_bl.bin +firmware: nvidia/gp107/gr/fecs_data.bin +firmware: nvidia/gp107/gr/fecs_inst.bin +firmware: nvidia/gp107/gr/fecs_sig.bin +firmware: nvidia/gp107/gr/gpccs_bl.bin +firmware: nvidia/gp107/gr/gpccs_data.bin +firmware: nvidia/gp107/gr/gpccs_inst.bin +firmware: nvidia/gp107/gr/gpccs_sig.bin +firmware: nvidia/gp107/gr/sw_bundle_init.bin +firmware: nvidia/gp107/gr/sw_ctx.bin +firmware: nvidia/gp107/gr/sw_method_init.bin +firmware: nvidia/gp107/gr/sw_nonctx.bin +firmware: nvidia/gp107/nvdec/scrubber.bin +firmware: nvidia/gp107/sec2/desc-1.bin +firmware: nvidia/gp107/sec2/desc.bin +firmware: nvidia/gp107/sec2/image-1.bin +firmware: nvidia/gp107/sec2/image.bin +firmware: nvidia/gp107/sec2/sig-1.bin +firmware: nvidia/gp107/sec2/sig.bin +firmware: nvidia/gp108/acr/bl.bin +firmware: nvidia/gp108/acr/ucode_load.bin +firmware: nvidia/gp108/acr/ucode_unload.bin +firmware: nvidia/gp108/acr/unload_bl.bin +firmware: nvidia/gp108/gr/fecs_bl.bin +firmware: nvidia/gp108/gr/fecs_data.bin +firmware: nvidia/gp108/gr/fecs_inst.bin +firmware: nvidia/gp108/gr/fecs_sig.bin +firmware: nvidia/gp108/gr/gpccs_bl.bin +firmware: nvidia/gp108/gr/gpccs_data.bin +firmware: nvidia/gp108/gr/gpccs_inst.bin +firmware: nvidia/gp108/gr/gpccs_sig.bin +firmware: nvidia/gp108/gr/sw_bundle_init.bin +firmware: nvidia/gp108/gr/sw_ctx.bin +firmware: nvidia/gp108/gr/sw_method_init.bin +firmware: nvidia/gp108/gr/sw_nonctx.bin +firmware: nvidia/gp108/nvdec/scrubber.bin +firmware: nvidia/gp108/sec2/desc.bin +firmware: nvidia/gp108/sec2/image.bin +firmware: nvidia/gp108/sec2/sig.bin +firmware: nvidia/gv100/acr/bl.bin +firmware: nvidia/gv100/acr/ucode_load.bin +firmware: nvidia/gv100/acr/ucode_unload.bin +firmware: nvidia/gv100/acr/unload_bl.bin +firmware: nvidia/gv100/gr/fecs_bl.bin +firmware: nvidia/gv100/gr/fecs_data.bin +firmware: nvidia/gv100/gr/fecs_inst.bin +firmware: nvidia/gv100/gr/fecs_sig.bin +firmware: nvidia/gv100/gr/gpccs_bl.bin +firmware: nvidia/gv100/gr/gpccs_data.bin +firmware: nvidia/gv100/gr/gpccs_inst.bin +firmware: nvidia/gv100/gr/gpccs_sig.bin +firmware: nvidia/gv100/gr/sw_bundle_init.bin +firmware: nvidia/gv100/gr/sw_ctx.bin +firmware: nvidia/gv100/gr/sw_method_init.bin +firmware: nvidia/gv100/gr/sw_nonctx.bin +firmware: nvidia/gv100/nvdec/scrubber.bin +firmware: nvidia/gv100/sec2/desc.bin +firmware: nvidia/gv100/sec2/image.bin +firmware: nvidia/gv100/sec2/sig.bin +firmware: nvidia/tegra124/vic03_ucode.bin +firmware: nvidia/tegra124/xusb.bin +firmware: nvidia/tegra186/xusb.bin +firmware: nvidia/tegra194/xusb.bin +firmware: nvidia/tegra210/xusb.bin +firmware: nvidia/tu102/acr/bl.bin +firmware: nvidia/tu102/acr/ucode_ahesasc.bin +firmware: nvidia/tu102/acr/ucode_asb.bin +firmware: nvidia/tu102/acr/ucode_unload.bin +firmware: nvidia/tu102/acr/unload_bl.bin +firmware: nvidia/tu102/gr/fecs_bl.bin +firmware: nvidia/tu102/gr/fecs_data.bin +firmware: nvidia/tu102/gr/fecs_inst.bin +firmware: nvidia/tu102/gr/fecs_sig.bin +firmware: nvidia/tu102/gr/gpccs_bl.bin +firmware: nvidia/tu102/gr/gpccs_data.bin +firmware: nvidia/tu102/gr/gpccs_inst.bin +firmware: nvidia/tu102/gr/gpccs_sig.bin +firmware: nvidia/tu102/gr/sw_bundle_init.bin +firmware: nvidia/tu102/gr/sw_ctx.bin +firmware: nvidia/tu102/gr/sw_method_init.bin +firmware: nvidia/tu102/gr/sw_nonctx.bin +firmware: nvidia/tu102/nvdec/scrubber.bin +firmware: nvidia/tu102/sec2/desc.bin +firmware: nvidia/tu102/sec2/image.bin +firmware: nvidia/tu102/sec2/sig.bin +firmware: nvidia/tu104/acr/bl.bin +firmware: nvidia/tu104/acr/ucode_ahesasc.bin +firmware: nvidia/tu104/acr/ucode_asb.bin +firmware: nvidia/tu104/acr/ucode_unload.bin +firmware: nvidia/tu104/acr/unload_bl.bin +firmware: nvidia/tu104/gr/fecs_bl.bin +firmware: nvidia/tu104/gr/fecs_data.bin +firmware: nvidia/tu104/gr/fecs_inst.bin +firmware: nvidia/tu104/gr/fecs_sig.bin +firmware: nvidia/tu104/gr/gpccs_bl.bin +firmware: nvidia/tu104/gr/gpccs_data.bin +firmware: nvidia/tu104/gr/gpccs_inst.bin +firmware: nvidia/tu104/gr/gpccs_sig.bin +firmware: nvidia/tu104/gr/sw_bundle_init.bin +firmware: nvidia/tu104/gr/sw_ctx.bin +firmware: nvidia/tu104/gr/sw_method_init.bin +firmware: nvidia/tu104/gr/sw_nonctx.bin +firmware: nvidia/tu104/nvdec/scrubber.bin +firmware: nvidia/tu104/sec2/desc.bin +firmware: nvidia/tu104/sec2/image.bin +firmware: nvidia/tu104/sec2/sig.bin +firmware: nvidia/tu106/acr/bl.bin +firmware: nvidia/tu106/acr/ucode_ahesasc.bin +firmware: nvidia/tu106/acr/ucode_asb.bin +firmware: nvidia/tu106/acr/ucode_unload.bin +firmware: nvidia/tu106/acr/unload_bl.bin +firmware: nvidia/tu106/gr/fecs_bl.bin +firmware: nvidia/tu106/gr/fecs_data.bin +firmware: nvidia/tu106/gr/fecs_inst.bin +firmware: nvidia/tu106/gr/fecs_sig.bin +firmware: nvidia/tu106/gr/gpccs_bl.bin +firmware: nvidia/tu106/gr/gpccs_data.bin +firmware: nvidia/tu106/gr/gpccs_inst.bin +firmware: nvidia/tu106/gr/gpccs_sig.bin +firmware: nvidia/tu106/gr/sw_bundle_init.bin +firmware: nvidia/tu106/gr/sw_ctx.bin +firmware: nvidia/tu106/gr/sw_method_init.bin +firmware: nvidia/tu106/gr/sw_nonctx.bin +firmware: nvidia/tu106/nvdec/scrubber.bin +firmware: nvidia/tu106/sec2/desc.bin +firmware: nvidia/tu106/sec2/image.bin +firmware: nvidia/tu106/sec2/sig.bin +firmware: nvidia/tu116/acr/bl.bin +firmware: nvidia/tu116/acr/ucode_ahesasc.bin +firmware: nvidia/tu116/acr/ucode_asb.bin +firmware: nvidia/tu116/acr/ucode_unload.bin +firmware: nvidia/tu116/acr/unload_bl.bin +firmware: nvidia/tu116/gr/fecs_bl.bin +firmware: nvidia/tu116/gr/fecs_data.bin +firmware: nvidia/tu116/gr/fecs_inst.bin +firmware: nvidia/tu116/gr/fecs_sig.bin +firmware: nvidia/tu116/gr/gpccs_bl.bin +firmware: nvidia/tu116/gr/gpccs_data.bin +firmware: nvidia/tu116/gr/gpccs_inst.bin +firmware: nvidia/tu116/gr/gpccs_sig.bin +firmware: nvidia/tu116/gr/sw_bundle_init.bin +firmware: nvidia/tu116/gr/sw_ctx.bin +firmware: nvidia/tu116/gr/sw_method_init.bin +firmware: nvidia/tu116/gr/sw_nonctx.bin +firmware: nvidia/tu116/nvdec/scrubber.bin +firmware: nvidia/tu116/sec2/desc.bin +firmware: nvidia/tu116/sec2/image.bin +firmware: nvidia/tu116/sec2/sig.bin +firmware: nvidia/tu117/acr/bl.bin +firmware: nvidia/tu117/acr/ucode_ahesasc.bin +firmware: nvidia/tu117/acr/ucode_asb.bin +firmware: nvidia/tu117/acr/ucode_unload.bin +firmware: nvidia/tu117/acr/unload_bl.bin +firmware: nvidia/tu117/gr/fecs_bl.bin +firmware: nvidia/tu117/gr/fecs_data.bin +firmware: nvidia/tu117/gr/fecs_inst.bin +firmware: nvidia/tu117/gr/fecs_sig.bin +firmware: nvidia/tu117/gr/gpccs_bl.bin +firmware: nvidia/tu117/gr/gpccs_data.bin +firmware: nvidia/tu117/gr/gpccs_inst.bin +firmware: nvidia/tu117/gr/gpccs_sig.bin +firmware: nvidia/tu117/gr/sw_bundle_init.bin +firmware: nvidia/tu117/gr/sw_ctx.bin +firmware: nvidia/tu117/gr/sw_method_init.bin +firmware: nvidia/tu117/gr/sw_nonctx.bin +firmware: nvidia/tu117/nvdec/scrubber.bin +firmware: nvidia/tu117/sec2/desc.bin +firmware: nvidia/tu117/sec2/image.bin +firmware: nvidia/tu117/sec2/sig.bin +firmware: orinoco_ezusb_fw +firmware: ositech/Xilinx7OD.bin +firmware: pca200e.bin +firmware: pca200e_ecd.bin2 +firmware: pcxhr/dspb1222e.b56 +firmware: pcxhr/dspb1222hr.b56 +firmware: pcxhr/dspb882e.b56 +firmware: pcxhr/dspb882hr.b56 +firmware: pcxhr/dspb924.b56 +firmware: pcxhr/dspd1222.d56 +firmware: pcxhr/dspd222.d56 +firmware: pcxhr/dspd882.d56 +firmware: pcxhr/dspe882.e56 +firmware: pcxhr/dspe924.e56 +firmware: pcxhr/xlxc1222e.dat +firmware: pcxhr/xlxc1222hr.dat +firmware: pcxhr/xlxc222.dat +firmware: pcxhr/xlxc882e.dat +firmware: pcxhr/xlxc882hr.dat +firmware: pcxhr/xlxc924.dat +firmware: pcxhr/xlxint.dat +firmware: phanfw.bin +firmware: prism2_ru.fw +firmware: prism_ap_fw.bin +firmware: prism_sta_fw.bin +firmware: qat_895xcc.bin +firmware: qat_895xcc_mmp.bin +firmware: qat_c3xxx.bin +firmware: qat_c3xxx_mmp.bin +firmware: qat_c62x.bin +firmware: qat_c62x_mmp.bin +firmware: qcom/a300_pfp.fw +firmware: qcom/a300_pm4.fw +firmware: qcom/a330_pfp.fw +firmware: qcom/a330_pm4.fw +firmware: qcom/a420_pfp.fw +firmware: qcom/a420_pm4.fw +firmware: qcom/a530_pfp.fw +firmware: qcom/a530_pm4.fw +firmware: qcom/a530_zap.b00 +firmware: qcom/a530_zap.b01 +firmware: qcom/a530_zap.b02 +firmware: qcom/a530_zap.mdt +firmware: qcom/a530v3_gpmu.fw2 +firmware: qcom/a630_gmu.bin +firmware: qcom/a630_sqe.fw +firmware: qcom/a630_zap.mbn +firmware: qed/qed_init_values_zipped-8.42.2.0.bin +firmware: ql2100_fw.bin +firmware: ql2200_fw.bin +firmware: ql2300_fw.bin +firmware: ql2322_fw.bin +firmware: ql2400_fw.bin +firmware: ql2500_fw.bin +firmware: qlogic/1040.bin +firmware: qlogic/12160.bin +firmware: qlogic/1280.bin +firmware: qlogic/sd7220.fw +firmware: r8a779x_usb3_v1.dlmem +firmware: r8a779x_usb3_v2.dlmem +firmware: r8a779x_usb3_v3.dlmem +firmware: radeon/ARUBA_me.bin +firmware: radeon/ARUBA_pfp.bin +firmware: radeon/ARUBA_rlc.bin +firmware: radeon/BARTS_mc.bin +firmware: radeon/BARTS_me.bin +firmware: radeon/BARTS_pfp.bin +firmware: radeon/BARTS_smc.bin +firmware: radeon/BONAIRE_ce.bin +firmware: radeon/BONAIRE_mc.bin +firmware: radeon/BONAIRE_mc2.bin +firmware: radeon/BONAIRE_me.bin +firmware: radeon/BONAIRE_mec.bin +firmware: radeon/BONAIRE_pfp.bin +firmware: radeon/BONAIRE_rlc.bin +firmware: radeon/BONAIRE_sdma.bin +firmware: radeon/BONAIRE_smc.bin +firmware: radeon/BONAIRE_uvd.bin +firmware: radeon/BONAIRE_vce.bin +firmware: radeon/BTC_rlc.bin +firmware: radeon/CAICOS_mc.bin +firmware: radeon/CAICOS_me.bin +firmware: radeon/CAICOS_pfp.bin +firmware: radeon/CAICOS_smc.bin +firmware: radeon/CAYMAN_mc.bin +firmware: radeon/CAYMAN_me.bin +firmware: radeon/CAYMAN_pfp.bin +firmware: radeon/CAYMAN_rlc.bin +firmware: radeon/CAYMAN_smc.bin +firmware: radeon/CEDAR_me.bin +firmware: radeon/CEDAR_pfp.bin +firmware: radeon/CEDAR_rlc.bin +firmware: radeon/CEDAR_smc.bin +firmware: radeon/CYPRESS_me.bin +firmware: radeon/CYPRESS_pfp.bin +firmware: radeon/CYPRESS_rlc.bin +firmware: radeon/CYPRESS_smc.bin +firmware: radeon/CYPRESS_uvd.bin +firmware: radeon/HAINAN_ce.bin +firmware: radeon/HAINAN_mc.bin +firmware: radeon/HAINAN_mc2.bin +firmware: radeon/HAINAN_me.bin +firmware: radeon/HAINAN_pfp.bin +firmware: radeon/HAINAN_rlc.bin +firmware: radeon/HAINAN_smc.bin +firmware: radeon/HAWAII_ce.bin +firmware: radeon/HAWAII_mc.bin +firmware: radeon/HAWAII_mc2.bin +firmware: radeon/HAWAII_me.bin +firmware: radeon/HAWAII_mec.bin +firmware: radeon/HAWAII_pfp.bin +firmware: radeon/HAWAII_rlc.bin +firmware: radeon/HAWAII_sdma.bin +firmware: radeon/HAWAII_smc.bin +firmware: radeon/JUNIPER_me.bin +firmware: radeon/JUNIPER_pfp.bin +firmware: radeon/JUNIPER_rlc.bin +firmware: radeon/JUNIPER_smc.bin +firmware: radeon/KABINI_ce.bin +firmware: radeon/KABINI_me.bin +firmware: radeon/KABINI_mec.bin +firmware: radeon/KABINI_pfp.bin +firmware: radeon/KABINI_rlc.bin +firmware: radeon/KABINI_sdma.bin +firmware: radeon/KAVERI_ce.bin +firmware: radeon/KAVERI_me.bin +firmware: radeon/KAVERI_mec.bin +firmware: radeon/KAVERI_pfp.bin +firmware: radeon/KAVERI_rlc.bin +firmware: radeon/KAVERI_sdma.bin +firmware: radeon/MULLINS_ce.bin +firmware: radeon/MULLINS_me.bin +firmware: radeon/MULLINS_mec.bin +firmware: radeon/MULLINS_pfp.bin +firmware: radeon/MULLINS_rlc.bin +firmware: radeon/MULLINS_sdma.bin +firmware: radeon/OLAND_ce.bin +firmware: radeon/OLAND_mc.bin +firmware: radeon/OLAND_mc2.bin +firmware: radeon/OLAND_me.bin +firmware: radeon/OLAND_pfp.bin +firmware: radeon/OLAND_rlc.bin +firmware: radeon/OLAND_smc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/PITCAIRN_mc2.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/PITCAIRN_rlc.bin +firmware: radeon/PITCAIRN_smc.bin +firmware: radeon/R100_cp.bin +firmware: radeon/R200_cp.bin +firmware: radeon/R300_cp.bin +firmware: radeon/R420_cp.bin +firmware: radeon/R520_cp.bin +firmware: radeon/R600_me.bin +firmware: radeon/R600_pfp.bin +firmware: radeon/R600_rlc.bin +firmware: radeon/R600_uvd.bin +firmware: radeon/R700_rlc.bin +firmware: radeon/REDWOOD_me.bin +firmware: radeon/REDWOOD_pfp.bin +firmware: radeon/REDWOOD_rlc.bin +firmware: radeon/REDWOOD_smc.bin +firmware: radeon/RS600_cp.bin +firmware: radeon/RS690_cp.bin +firmware: radeon/RS780_me.bin +firmware: radeon/RS780_pfp.bin +firmware: radeon/RS780_uvd.bin +firmware: radeon/RV610_me.bin +firmware: radeon/RV610_pfp.bin +firmware: radeon/RV620_me.bin +firmware: radeon/RV620_pfp.bin +firmware: radeon/RV630_me.bin +firmware: radeon/RV630_pfp.bin +firmware: radeon/RV635_me.bin +firmware: radeon/RV635_pfp.bin +firmware: radeon/RV670_me.bin +firmware: radeon/RV670_pfp.bin +firmware: radeon/RV710_me.bin +firmware: radeon/RV710_pfp.bin +firmware: radeon/RV710_smc.bin +firmware: radeon/RV710_uvd.bin +firmware: radeon/RV730_me.bin +firmware: radeon/RV730_pfp.bin +firmware: radeon/RV730_smc.bin +firmware: radeon/RV740_smc.bin +firmware: radeon/RV770_me.bin +firmware: radeon/RV770_pfp.bin +firmware: radeon/RV770_smc.bin +firmware: radeon/RV770_uvd.bin +firmware: radeon/SUMO2_me.bin +firmware: radeon/SUMO2_pfp.bin +firmware: radeon/SUMO_me.bin +firmware: radeon/SUMO_pfp.bin +firmware: radeon/SUMO_rlc.bin +firmware: radeon/SUMO_uvd.bin +firmware: radeon/TAHITI_ce.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/TAHITI_mc2.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/TAHITI_smc.bin +firmware: radeon/TAHITI_uvd.bin +firmware: radeon/TAHITI_vce.bin +firmware: radeon/TURKS_mc.bin +firmware: radeon/TURKS_me.bin +firmware: radeon/TURKS_pfp.bin +firmware: radeon/TURKS_smc.bin +firmware: radeon/VERDE_ce.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/VERDE_mc2.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/VERDE_rlc.bin +firmware: radeon/VERDE_smc.bin +firmware: radeon/banks_k_2_smc.bin +firmware: radeon/bonaire_ce.bin +firmware: radeon/bonaire_k_smc.bin +firmware: radeon/bonaire_mc.bin +firmware: radeon/bonaire_me.bin +firmware: radeon/bonaire_mec.bin +firmware: radeon/bonaire_pfp.bin +firmware: radeon/bonaire_rlc.bin +firmware: radeon/bonaire_sdma.bin +firmware: radeon/bonaire_smc.bin +firmware: radeon/bonaire_uvd.bin +firmware: radeon/hainan_ce.bin +firmware: radeon/hainan_k_smc.bin +firmware: radeon/hainan_mc.bin +firmware: radeon/hainan_me.bin +firmware: radeon/hainan_pfp.bin +firmware: radeon/hainan_rlc.bin +firmware: radeon/hainan_smc.bin +firmware: radeon/hawaii_ce.bin +firmware: radeon/hawaii_k_smc.bin +firmware: radeon/hawaii_mc.bin +firmware: radeon/hawaii_me.bin +firmware: radeon/hawaii_mec.bin +firmware: radeon/hawaii_pfp.bin +firmware: radeon/hawaii_rlc.bin +firmware: radeon/hawaii_sdma.bin +firmware: radeon/hawaii_smc.bin +firmware: radeon/kabini_ce.bin +firmware: radeon/kabini_me.bin +firmware: radeon/kabini_mec.bin +firmware: radeon/kabini_pfp.bin +firmware: radeon/kabini_rlc.bin +firmware: radeon/kabini_sdma.bin +firmware: radeon/kaveri_ce.bin +firmware: radeon/kaveri_me.bin +firmware: radeon/kaveri_mec.bin +firmware: radeon/kaveri_mec2.bin +firmware: radeon/kaveri_pfp.bin +firmware: radeon/kaveri_rlc.bin +firmware: radeon/kaveri_sdma.bin +firmware: radeon/mullins_ce.bin +firmware: radeon/mullins_me.bin +firmware: radeon/mullins_mec.bin +firmware: radeon/mullins_pfp.bin +firmware: radeon/mullins_rlc.bin +firmware: radeon/mullins_sdma.bin +firmware: radeon/oland_ce.bin +firmware: radeon/oland_k_smc.bin +firmware: radeon/oland_mc.bin +firmware: radeon/oland_me.bin +firmware: radeon/oland_pfp.bin +firmware: radeon/oland_rlc.bin +firmware: radeon/oland_smc.bin +firmware: radeon/pitcairn_ce.bin +firmware: radeon/pitcairn_k_smc.bin +firmware: radeon/pitcairn_mc.bin +firmware: radeon/pitcairn_me.bin +firmware: radeon/pitcairn_pfp.bin +firmware: radeon/pitcairn_rlc.bin +firmware: radeon/pitcairn_smc.bin +firmware: radeon/si58_mc.bin +firmware: radeon/tahiti_ce.bin +firmware: radeon/tahiti_mc.bin +firmware: radeon/tahiti_me.bin +firmware: radeon/tahiti_pfp.bin +firmware: radeon/tahiti_rlc.bin +firmware: radeon/tahiti_smc.bin +firmware: radeon/verde_ce.bin +firmware: radeon/verde_k_smc.bin +firmware: radeon/verde_mc.bin +firmware: radeon/verde_me.bin +firmware: radeon/verde_pfp.bin +firmware: radeon/verde_rlc.bin +firmware: radeon/verde_smc.bin +firmware: renesas_usb_fw.mem +firmware: riptide.hex +firmware: rp2.fw +firmware: rpm_firmware.bin +firmware: rs9113_wlan_qspi.rps +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: rtl_bt/rtl8723a_fw.bin +firmware: rtl_bt/rtl8723b_config.bin +firmware: rtl_bt/rtl8723b_fw.bin +firmware: rtl_bt/rtl8723bs_config.bin +firmware: rtl_bt/rtl8723bs_fw.bin +firmware: rtl_bt/rtl8723ds_config.bin +firmware: rtl_bt/rtl8723ds_fw.bin +firmware: rtl_bt/rtl8761a_config.bin +firmware: rtl_bt/rtl8761a_fw.bin +firmware: rtl_bt/rtl8821a_config.bin +firmware: rtl_bt/rtl8821a_fw.bin +firmware: rtl_bt/rtl8822b_config.bin +firmware: rtl_bt/rtl8822b_fw.bin +firmware: rtl_bt/rtl8852au_config.bin +firmware: rtl_bt/rtl8852au_fw.bin +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/rtl8106e-1.fw +firmware: rtl_nic/rtl8106e-2.fw +firmware: rtl_nic/rtl8107e-1.fw +firmware: rtl_nic/rtl8107e-2.fw +firmware: rtl_nic/rtl8125a-3.fw +firmware: rtl_nic/rtl8153a-2.fw +firmware: rtl_nic/rtl8153a-3.fw +firmware: rtl_nic/rtl8153a-4.fw +firmware: rtl_nic/rtl8153b-2.fw +firmware: rtl_nic/rtl8168d-1.fw +firmware: rtl_nic/rtl8168d-2.fw +firmware: rtl_nic/rtl8168e-1.fw +firmware: rtl_nic/rtl8168e-2.fw +firmware: rtl_nic/rtl8168e-3.fw +firmware: rtl_nic/rtl8168f-1.fw +firmware: rtl_nic/rtl8168f-2.fw +firmware: rtl_nic/rtl8168fp-3.fw +firmware: rtl_nic/rtl8168g-2.fw +firmware: rtl_nic/rtl8168g-3.fw +firmware: rtl_nic/rtl8168h-1.fw +firmware: rtl_nic/rtl8168h-2.fw +firmware: rtl_nic/rtl8402-1.fw +firmware: rtl_nic/rtl8411-1.fw +firmware: rtl_nic/rtl8411-2.fw +firmware: rtlwifi/rtl8188efw.bin +firmware: rtlwifi/rtl8188eufw.bin +firmware: rtlwifi/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192cufw_A.bin +firmware: rtlwifi/rtl8192cufw_B.bin +firmware: rtlwifi/rtl8192cufw_TMSC.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192eefw.bin +firmware: rtlwifi/rtl8192eu_nic.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: rtlwifi/rtl8723aufw_A.bin +firmware: rtlwifi/rtl8723aufw_B.bin +firmware: rtlwifi/rtl8723aufw_B_NoBT.bin +firmware: rtlwifi/rtl8723befw.bin +firmware: rtlwifi/rtl8723befw_36.bin +firmware: rtlwifi/rtl8723bu_bt.bin +firmware: rtlwifi/rtl8723bu_nic.bin +firmware: rtlwifi/rtl8723efw.bin +firmware: rtlwifi/rtl8821aefw.bin +firmware: rtlwifi/rtl8821aefw_29.bin +firmware: rtw88/rtw8723d_fw.bin +firmware: rtw88/rtw8822b_fw.bin +firmware: rtw88/rtw8822c_fw.bin +firmware: rtw88/rtw8822c_wow_fw.bin +firmware: s5k4ecgx.bin +firmware: sd8385.bin +firmware: sd8385_helper.bin +firmware: sd8686.bin +firmware: sd8686_helper.bin +firmware: sd8688.bin +firmware: sd8688_helper.bin +firmware: slicoss/gbdownload.sys +firmware: slicoss/gbrcvucode.sys +firmware: slicoss/oasisdownload.sys +firmware: slicoss/oasisrcvucode.sys +firmware: sms1xxx-hcw-55xxx-dvbt-02.fw +firmware: sms1xxx-hcw-55xxx-isdbt-02.fw +firmware: sms1xxx-nova-a-dvbt-01.fw +firmware: sms1xxx-nova-b-dvbt-01.fw +firmware: sms1xxx-stellar-dvbt-01.fw +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard.bin +firmware: softing-4.6/ldcard2.bin +firmware: solos-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-db-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tdmb_denver.inp +firmware: tdmb_nova_12mhz.inp +firmware: tdmb_nova_12mhz_b0.inp +firmware: tehuti/bdx.bin +firmware: ti-connectivity/wl1251-fw.bin +firmware: ti-connectivity/wl1251-nvs.bin +firmware: ti-connectivity/wl127x-fw-5-mr.bin +firmware: ti-connectivity/wl127x-fw-5-plt.bin +firmware: ti-connectivity/wl127x-fw-5-sr.bin +firmware: ti-connectivity/wl128x-fw-5-mr.bin +firmware: ti-connectivity/wl128x-fw-5-plt.bin +firmware: ti-connectivity/wl128x-fw-5-sr.bin +firmware: ti-connectivity/wl18xx-fw-4.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso.bin +firmware: tigon/tg3_tso5.bin +firmware: ttusb-budget/dspbootcode.bin +firmware: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/adi930.fw +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: usbdux_firmware.bin +firmware: usbduxfast_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vntwusb.fw +firmware: vpdma-1b8.bin +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: vxge/X3fw-pxe.ncf +firmware: vxge/X3fw.ncf +firmware: wd719x-risc.bin +firmware: wd719x-wcs.bin +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wil6210.brd +firmware: wil6210.fw +firmware: wil6210_sparrow_plus.fw +firmware: wil6436.brd +firmware: wil6436.fw +firmware: wlan/prima/WCNSS_qcom_wlan_nv.bin +firmware: xc3028-v27.fw +firmware: xc3028L-v36.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/ppc64el/generic +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/ppc64el/generic @@ -0,0 +1,23299 @@ +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x913f1e6d hvcs_get_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xa73464c7 hvcs_register_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xbdf97f58 hvcs_free_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x37f0d238 crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0x97df4ef5 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0xb8410e2f crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0xf01fbba8 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xfb681fe5 crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0xfce1581e crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/sha3_generic 0x0f71ace9 crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0x4f8482df crypto_sha3_init +EXPORT_SYMBOL crypto/sha3_generic 0x890c6391 crypto_sha3_final +EXPORT_SYMBOL crypto/sm3_generic 0x21cdbd99 crypto_sm3_update +EXPORT_SYMBOL crypto/sm3_generic 0xbed0b73c crypto_sm3_finup +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xd8e76617 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0xdf76a895 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xec3cfdc6 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/block/paride/paride 0x086dd839 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x10a080c7 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x22bdea6d pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x5a48ec28 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x62740999 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x691a42a4 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x72c44ccb paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x94557f74 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xa0164f43 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xa8a002f1 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb91aadfc pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xe07819e3 pi_release +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x2cf656ce btbcm_patchram +EXPORT_SYMBOL drivers/bluetooth/btrsi 0x27cb60cf rsi_bt_ops +EXPORT_SYMBOL drivers/bus/mhi/core/mhi 0x7e87439a mhi_sync_power_up +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x03bc993e ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x0705dd14 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x12dd1e77 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x230094ac ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x264ce83f ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2f7a2e1c ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x31cab048 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c2054d7 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4ed2f584 ipmi_add_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50f65edf ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67369b42 ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x74778a80 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80aa4656 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x89a5279a ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xaca90ebd ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae71627d ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd54a5050 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4330a39 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xec1c2a90 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf388b18b ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf5531bea ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfaaa4831 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe0f2369 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfe9b1d15 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x9a524529 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc948a5e8 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xe6684aa3 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xebebd625 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x103280a8 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xe09c83d8 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xfff25b6e xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x27a0e976 atmel_i2c_send_receive +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x35701e2f atmel_i2c_enqueue +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x5a317d36 atmel_i2c_probe +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0x80a11b1d atmel_i2c_init_read_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xc71ed50c atmel_i2c_init_genkey_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xf283e995 atmel_i2c_init_random_cmd +EXPORT_SYMBOL drivers/crypto/atmel-i2c 0xfaab573f atmel_i2c_init_ecdh_cmd +EXPORT_SYMBOL drivers/firewire/firewire-core 0x06ab7154 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bc6094c fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1d581be1 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x27a082af fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x32f235c1 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37c38708 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x389f056b fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a771e39 fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x58f542e3 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x64d75cb2 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x66b4d86f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69b99ac9 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6dc50487 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x75e70d04 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7f31ffc7 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8751163d fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8c03bb0c fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8ca1df20 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x93991011 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa7a7a6c7 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa97272da fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaedf84ce fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbe9f6b86 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc16298b2 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcfdcf6cd fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd3ab7d56 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd496eea2 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdd1f6d2a fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3fde125 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe586d99a fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80e5087 fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee4fde1a fw_iso_context_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00b6090f drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01bcd356 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0226b49e drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c63897 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03e8a61b drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0453188a drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x055d9a61 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0814cf52 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08729f78 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0876a386 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a1cef9 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a6a23f drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0967f01f drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09de3655 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a047b09 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa85a14 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b57196f drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0be9c862 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d1c9204 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dc65d52 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0de33a71 drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ded5107 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ecbe9ed drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1080258f drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11c2af52 drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12f076a5 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x147bf5dc drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x156c98a5 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15997e8b drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15b02cc7 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x164ceac9 drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17382a96 drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1760c7d2 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193b9197 drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193cb8be drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a08efa1 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aaa6cc0 drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af72a83 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b58f604 __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b970b49 drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bec13b3 drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c144048 drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cfceb06 drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e712a21 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f74e86c drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f77846a drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2015e82b drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2039b574 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x207f1271 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20bacd1b drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cec992 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22f123ed drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25454da3 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x271cc5c6 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27922a47 drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28246519 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2856da0d drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x293c7dc0 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f61ed4 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c535562 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d6937c7 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e1095b5 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7155e5 drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ef6322c drm_gem_cma_prime_import_sg_table_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f309f43 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fbbd1ef drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe6a11c drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x300643ca drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x331427a1 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33942535 drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35f18af5 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3641c75a drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x379250e7 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x392a63ee drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39b02571 drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39bc1bb8 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a358c68 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c2abbb7 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cd9a2db drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f9bde37 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x404cdcd1 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40b13084 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40d32c1b drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4137ff7c drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4370d5f2 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43e08d23 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44351c88 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44404d60 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4485aab8 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4491d0d6 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44c2bd89 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x453ed322 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x460778bc drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x469882ea drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46a70411 drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4776754e drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48c5595a drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4905ccff drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49776978 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49ae0751 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f277de drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49f84154 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a32307f drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b149428 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bd8ca52 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bdd3b6e drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c49ea8d drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4eed32e5 drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4faaa3ad drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fb347de drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5072a7f8 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50ec6fa9 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5321f9a6 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53c8ffeb drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54066dce drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54373f3a drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54a7b2fd drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54b19052 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54d50050 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55a589e4 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x580346f5 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x598a609b drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ba6d7dd drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c7a7657 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c8788f7 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d44dc22 __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d559068 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d9e1852 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e65d20a __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e696242 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fadb1cf drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6003dc30 drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x604692c4 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60b21f64 drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x617da9b6 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6190252a drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61a94a03 drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61fd3d29 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62a69c27 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637b135a drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64949e2b drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6571c572 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65fd4782 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x676fb445 drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6863d55d drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69f6a180 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a06767d drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b04c583 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b895946 drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c78d53b drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ce56a04 drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d464cfc drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f2d7845 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70f18e7a drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7118212b drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x730d2fcf drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73448006 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x734b726f drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x735ade12 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7412a0a8 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7531f533 drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x757432aa drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75d95ae8 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x765d9377 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77c32f00 drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77f3e6df drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x781b5770 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785b2978 drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790baa64 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x793874a2 drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79f8c863 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bcda837 drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c35b475 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cfbf290 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e1d4217 drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff94976 drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x808c78d4 drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80982fa2 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8180e74f drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x820eeec9 drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82caf5cf drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x832cfd13 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83620850 drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x836ba18d drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840b2199 drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x849e6191 drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86b97758 drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8734cbc6 drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8799ca99 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e9e8ae drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88400230 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8919cb94 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89331daa drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8949a97a drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89967d5c drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a15f564 drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8aa01f08 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8aa420a8 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c04dda5 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4ee0e9 drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c5d64d7 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c5e5456 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6f24a2 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d1d084d drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dd2392e drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dfe4524 drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e31640c drm_panel_of_backlight +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e7f6523 drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ea3cdb7 drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f53e0b0 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fa58390 drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90a266ba drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x912c9c20 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x913e2915 drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0x916f83b1 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x917dc2ff drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91a85397 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x937787c1 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x943453d2 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x945b4f1f drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95ed85b8 drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9680a684 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96c3de00 drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9798d902 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983e8c55 drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x989e2ec4 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x999d944f drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9af53b28 drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b3b98e9 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b7e33ee drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ba34795 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bb8d78a drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d18a355 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e5ab0df drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e68dab7 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0986235 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1323221 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1626727 drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1cc02c7 drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa22ac248 drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2a38c47 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa31d6eb6 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3adf6db drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa40a90b3 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa577b9d3 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa58b8cb6 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a02601 drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d50400 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa60ed17f drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa62a8b28 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa63b5f8f drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7237dd5 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa783def2 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7dcee41 drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa82d612f drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab0f611f drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab11cea7 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabec158d drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac24a1c2 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf136f16 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf9fe6df drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb141bec1 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb196dac3 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb299dd70 __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb352a3c9 drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb387c752 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3dbc0a0 drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4733ce4 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb48f849a drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4be8589 drm_gem_cma_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb53796c5 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5423c2a drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb593881e drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0b48 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5e71441 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6381826 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6a979ab drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6af5dad drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7404f6c drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7d239f9 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb83580bc drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba00e315 drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba588ae6 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba634be1 drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba80b717 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaa92c80 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb2ca43 drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc395cbd drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc4ee28e drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcbab56c drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbed32b1d drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbee82566 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc15e0e3d drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2d1130c drm_of_component_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3a15918 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4b3f937 drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc547bf02 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc560d51d drm_of_crtc_port_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7ca5110 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc94edd32 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca8d9dcb drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbd749d6 drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc8da789 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce62acf8 drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfa50f22 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0d0af39 drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1070507 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd10c0b78 drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1f1ced6 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ea4a9a drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd313961e drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd336315c drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd41ed600 drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6198171 drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6b8caa8 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd75b86b1 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd86b43f2 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8add533 drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd95a4d33 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaef54fa of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb111e97 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbbfeae5 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbcec67d drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd0a2c9c drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd1487f3 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd6db383 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd891701 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd9476f1 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde0128af drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde3a1094 drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf7c0e75 drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe00e7593 drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe042a62f drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0b7a472 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe11b293c drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe12919f6 drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2bbbc01 drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3164ed9 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe36fc0ea devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3aa0d8a drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5ef102f drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6cc6bfc drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6d6ce9d drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f80f24 drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7dc3bb3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea2c4ead drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea45b1c4 drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaaf1a4c drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeadbf4aa drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebebe0f9 drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec106b95 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec268e85 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed428b41 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee13eecf drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee2b6e2b drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee5ec2ea drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeb08adc drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeec7333b drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef39109d drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef6f82c0 drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0875b60 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf089a8f4 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0caa1c0 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf25366cb drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2759774 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2843299 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf322627f drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3b683e0 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf62df536 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf67460f4 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6879efc drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6e55a1c drm_cma_gem_create_object_default_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7840145 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7f823f3 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf84a9f05 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf871648b drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8fdfde2 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9da27ff drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfae5c78e drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfaf05d49 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb3ab796 drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb4517f8 drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcb362cb drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd4e0190 drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe04c82a drm_agp_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe1adbaa drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe8ce8af drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea31a28 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0217280b __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0244aa4f drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03799e71 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03a3537a drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x062b73d6 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x085fbed4 drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0931237c __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x099f74b2 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b1dc4f4 devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b9d5020 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b9e78c3 drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d21e73c drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d47c404 drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d59d089 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d95d2c2 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e1c4d4d drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0fa8f89e drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x115b5fd1 drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14fed492 drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1581a41f drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1812451f drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a1f33bd __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a553466 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b60c956 __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b845f16 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1be1776f drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c1e18d5 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ee47ce2 drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2106fc56 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23053367 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2387733c drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x242ce275 drm_dp_cec_set_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x250b8d56 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x299fff8d drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a30fad0 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ad7a84f drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ad93e3b drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ae2e32a drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bb31486 drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cb256ef drm_dp_cec_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30ae6629 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31bbff9e drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3319f039 drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x332df60e drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33e2a9ad drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33ebd508 drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3458eb2e __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34cc30dd drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3572cd1c drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35c80104 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37481118 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x392eeb97 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f6ca56b drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3feeb952 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40935261 drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42cad2e5 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x444cfb90 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x460b58ea drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46139167 drm_dp_cec_unset_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x469442d4 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46ce0ce8 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46d41b66 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a8571c8 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c61e6c0 drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e89a7e7 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f2967c7 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fffb383 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50e853f1 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x516fc7b8 drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51fd1d0d __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52062a85 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x533be985 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54ee44e8 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5510c8a7 drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x564487ee drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5713ed01 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5805688c drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59760b5c drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5aaf5422 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ddfa125 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e30d14d drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e42d572 drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e92d414 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ecbf782 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f6f336c drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f7b0806 drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fc22773 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61f76a93 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63928391 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x643962fa drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64d657d5 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x683edf56 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x688493d2 drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x688aa35f drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69f1588f drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b54142e drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6be74894 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c7a5803 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d74f1c5 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6da58aa2 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f8619a7 drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73dcc79d drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75679674 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79a7c775 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f245d33 __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f466779 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fd538b2 drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80c030e5 drm_dp_cec_unregister_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80dea8fe drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x823cb28e drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8465f473 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84a68575 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89942117 drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89e0c7fa drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca5388c drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8cf55c35 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ebd9f81 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f7cf9bf __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fca0f29 drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9009c281 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x901a155e drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9263edc6 drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x937f2354 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x950fdec4 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95336a53 drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95587764 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95ad4eaa drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a3010a7 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a6ba452 drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a84495d drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cc1ca03 drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d9b0619 drm_dp_cec_register_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e5d5f47 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e871d56 drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f8fa3f9 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2ade383 drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3b1b607 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa40d0589 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa44b0e7d __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa512c1f8 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa55e8506 devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77acdfa drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab965aa1 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab9761b1 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac3751fb drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac778f89 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad38f248 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaed4c6ef drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafa7f5b7 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafbb2251 drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb042546b drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb226f170 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4e739a9 drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb559c530 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb59af718 drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb754c627 drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb79d1c38 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9aaa775 drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9f5e05a drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbadcf485 drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb705269 drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbc5ca98 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdbcc423 drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1c412eb drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc29b10d5 drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2a4f51b drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2baa123 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc33b11ee drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc39a0c05 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc41d1d25 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc552c780 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc588851e drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6476b23 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6536855 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc682f829 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6976635 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc80c3393 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8bb7892 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9d45d62 drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd531601 drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdc5081f drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd12832c0 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1634f72 drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4210ac2 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5491d6c drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbf1a584 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdceaf5f5 drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf560e4c drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf5c4060 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0697235 drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe111ae4a drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3dcf87a drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4c7f8c4 drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9f5a724 drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec86451a drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef1f2934 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf104c328 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1b37ebc drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2cb121b drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5005fd4 __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7fa39fd drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf98e05f0 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf99f0d5c drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcd0ce36 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfde556ca drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfec0f36b drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x15bf22f6 mipi_dbi_pipe_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x26683ec4 mipi_dbi_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x33e14975 mipi_dbi_dev_init_with_formats +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x3a5f948d mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x3debb8ed mipi_dbi_pipe_update +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x49e0b36d mipi_dbi_buf_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x5d0137a0 mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x621c0310 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x72de9088 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x793337d4 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7b940470 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8d4f2717 mipi_dbi_command_read +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x9dedfb1b mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xaf5e9152 mipi_dbi_spi_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xc7cbe87d mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xdf4872b7 mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf3e12742 mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_panel_orientation_quirks 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x62a5a4c8 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0xc087de68 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x065cfab8 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x0731c481 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x183350f2 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x257dde6e drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2e563d44 drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x3fdca60b drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x56cab4bc drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x5f711bdc drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x70680cfc drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x7a3664f1 drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x8f1ab088 drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x94932a22 drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xacb680fd drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xae232689 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xc57467f1 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd80b0b4d drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe37a8afe drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xec5bd37d drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf6ff82b0 drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf959d5c0 drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xffd9fc1b drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x10ea16a3 drm_sched_job_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x19179e07 drm_sched_job_cleanup +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x2026843f drm_sched_entity_destroy +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x2176bf59 drm_sched_entity_init +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x2a505c97 drm_sched_entity_push_job +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x3323ddc4 drm_sched_stop +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x39f8ba4f drm_sched_entity_modify_sched +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x42891fd9 drm_sched_dependency_optimized +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x562b7ab4 drm_sched_suspend_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x5fd1d4d7 drm_sched_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x85a51b23 drm_sched_start +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0x9aed7534 drm_sched_entity_flush +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa01bf401 drm_sched_increase_karma +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xa81386fc to_drm_sched_fence +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xb0be14e3 drm_sched_entity_set_priority +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xbecfec0b drm_sched_entity_fini +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xc4bdc485 drm_sched_resubmit_jobs +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xd34b18aa drm_sched_fault +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xe73ef7c8 drm_sched_resume_timeout +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xefe0c2ad drm_sched_pick_best +EXPORT_SYMBOL drivers/gpu/drm/scheduler/gpu-sched 0xfde2f3cd drm_sched_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01224d96 ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04807436 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04b24b1a ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07f1c66f ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bdaa1ac ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x108600b7 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14580072 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x16d135a2 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1759e785 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x17f5634b ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a830c7f ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cdd158c ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20a2e0de ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21cda2b4 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2540732d ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f12ad9c ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fce546b ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x328c92d6 ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33a5ec98 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34111ec5 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x361d3b5e ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49cac786 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50eb95fb ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x55ef6636 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5dfca1a0 ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6071bc6c ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62233e32 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64897f58 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6992de67 ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71c16545 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x725ef0a3 ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78adfe2c ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8505556f ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ebe48ba ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9148fb74 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91ef936a ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x932cad22 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9671ad3b ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96ab338b ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96ba0094 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a1869c7 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9cf99dac ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0756a69 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7288d67 ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7bd4337 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb79694f5 ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd8c09f9 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2345257 ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3fe8628 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc684cf88 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc82a7fcb ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca78abcb ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd1424428 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd58b1a0c ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5deec12 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdda8b71a ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4ff64b3 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf0627832 ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1124c12 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf92529f8 ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdd113e2 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe56d8ac ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe6f30ac ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/hid/hid 0x15374d45 hid_bus_type +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x2f9e7f8e vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x446615bd vid_from_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x79140c78 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb29eaccf i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbb62d355 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xbbaadac5 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfd26ce78 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x76c70831 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x69413b23 bma400_probe +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0x71f71248 bma400_regmap_config +EXPORT_SYMBOL drivers/iio/accel/bma400_core 0xe87fb0bb bma400_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x22f498c3 kxsd9_common_remove +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x5c38f378 kxsd9_dev_pm_ops +EXPORT_SYMBOL drivers/iio/accel/kxsd9 0x86877af5 kxsd9_common_probe +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x014824c0 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0716fac4 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x17ce81e2 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x19e1e319 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2380d4bd mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5a029e52 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6101acb4 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9cb24468 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd925bc57 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdba5ac01 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe640431f mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe84e5b72 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xef237ea4 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf923e1a8 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfea40f23 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xffa00534 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x4950e851 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x78f8b471 st_accel_get_settings +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xd12cc936 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0x70e6eca1 qcom_vadc_decimation_from_dt +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xcae36995 qcom_vadc_scale +EXPORT_SYMBOL drivers/iio/adc/qcom-vadc-common 0xf253ae31 qcom_adc5_hw_scale +EXPORT_SYMBOL drivers/iio/buffer/industrialio-buffer-dmaengine 0x6b284a1b iio_dmaengine_buffer_alloc +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x09366eda iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/buffer/industrialio-triggered-buffer 0x185fcdee iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x0ae6d4b3 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0x2e0ad288 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/buffer/kfifo_buf 0xfb359eb1 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/chemical/bme680_core 0xea4ce8c8 bme680_regmap_config +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0b70486c hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1862ef06 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x310222e3 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4b2d282c hid_sensor_batch_mode_supported +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x698cef72 hid_sensor_set_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7c458479 hid_sensor_get_report_latency +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7f7621ec hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x90ab1e9e hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd27ef95c hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf3e38411 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfa2299ae hid_sensor_convert_timestamp +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3badabaf hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa87a1574 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe11cef76 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xfc1c8a84 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x045688dd ms_sensors_read_prom_word +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x2d2f5cd5 ms_sensors_reset +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x31ed0d5a ms_sensors_ht_read_temperature +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x42b6a050 ms_sensors_convert_and_read +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x70ef2858 ms_sensors_show_battery_low +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0x7ef2a93d ms_sensors_ht_read_humidity +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xb4814a56 ms_sensors_tp_read_prom +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xbf0785af ms_sensors_show_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xcc133ebe ms_sensors_read_temp_and_pressure +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe0c28932 ms_sensors_write_heater +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xe62ada43 ms_sensors_write_resolution +EXPORT_SYMBOL drivers/iio/common/ms_sensors/ms_sensors_i2c 0xf2894467 ms_sensors_read_serial +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x02b96d29 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x132f8f62 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3ddfabab ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x48ffdb1b ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7e748033 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x62c3ea3c ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xbddf3fdb ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xc76f2b6d ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0e2bf028 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1aee1a67 st_sensors_validate_device +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1c2388c3 st_sensors_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4df1c498 st_sensors_dev_name_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4e167ab5 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x78e74f5f st_sensors_verify_id +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7cd0f910 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x81937c01 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8f41997f st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x98ac71b3 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb4e52ebd st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb721947a st_sensors_get_settings_index +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbed5ba64 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc2243096 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc25c42b8 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc2980432 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc7472356 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfba69e20 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x736ff890 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x82ca6601 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x1247908b mpu3050_common_probe +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0x2fa1b67a mpu3050_dev_pm_ops +EXPORT_SYMBOL drivers/iio/gyro/mpu3050 0xcabeb464 mpu3050_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x1fcc3336 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x3aa851e6 st_gyro_get_settings +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x43631ac5 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x334562a0 hts221_pm_ops +EXPORT_SYMBOL drivers/iio/humidity/hts221 0x5fb620bc hts221_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x3040566a adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x49fabf10 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0x6443b915 bmi160_regmap_config +EXPORT_SYMBOL drivers/iio/imu/bmi160/bmi160_core 0xca19cfae bmi160_enable_irq +EXPORT_SYMBOL drivers/iio/imu/fxos8700_core 0xf15818d6 fxos8700_regmap_config +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0x5a11bdbc st_lsm6dsx_probe +EXPORT_SYMBOL drivers/iio/imu/st_lsm6dsx/st_lsm6dsx 0xd42ade6f st_lsm6dsx_pm_ops +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f86ceeb iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x3f21d097 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x4f7aa488 iio_device_set_clock +EXPORT_SYMBOL drivers/iio/industrialio 0x52fb5a92 iio_trigger_set_immutable +EXPORT_SYMBOL drivers/iio/industrialio 0x53faad11 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x57b6268c iio_get_time_ns +EXPORT_SYMBOL drivers/iio/industrialio 0x5d8994e0 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5ff3260e iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x69baa816 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x780485c6 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x7e1056d3 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x878f4551 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x8f0493a8 __iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x945b2800 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x9c5c6ba1 iio_trigger_using_own +EXPORT_SYMBOL drivers/iio/industrialio 0xbe1642b9 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xcbea6ecf iio_read_mount_matrix +EXPORT_SYMBOL drivers/iio/industrialio 0xdb839e67 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe3a809cb iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xe54b7b7d iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xeb72bdb2 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xf0244169 iio_get_time_res +EXPORT_SYMBOL drivers/iio/industrialio 0xf9c10199 iio_trigger_validate_own_device +EXPORT_SYMBOL drivers/iio/industrialio 0xfa5f61ea __iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio-configfs 0x472a9cd0 iio_configfs_subsys +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x1e3c1fed iio_sw_device_destroy +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0x7bdadcc4 iio_register_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xa35886cd iio_sw_device_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-device 0xac17d881 iio_unregister_sw_device_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x28cae629 iio_register_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0x9bca694f iio_unregister_sw_trigger_type +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xd9fae14b iio_sw_trigger_create +EXPORT_SYMBOL drivers/iio/industrialio-sw-trigger 0xfe92bcfa iio_sw_trigger_destroy +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0x68d2c064 iio_triggered_event_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-event 0xfc37377e iio_triggered_event_cleanup +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0x662518f2 st_uvis25_pm_ops +EXPORT_SYMBOL drivers/iio/light/st_uvis25_core 0xc1ca6cb0 st_uvis25_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x3c28d10c bmc150_magn_probe +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x6b60c65d bmc150_magn_pm_ops +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0x92b97e68 bmc150_magn_regmap_config +EXPORT_SYMBOL drivers/iio/magnetometer/bmc150_magn 0xda0ae2e4 bmc150_magn_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x0fda8a8c hmc5843_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x6b44a94a hmc5843_common_suspend +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0x89032a4d hmc5843_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/hmc5843_core 0xbdd6c09f hmc5843_common_resume +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x4439bc9a st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xab5c9a47 st_magn_get_settings +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe41f25f5 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x12fd0bd9 bmp280_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0x719d1787 bmp280_dev_pm_ops +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xeb1d4d84 bmp280_common_probe +EXPORT_SYMBOL drivers/iio/pressure/bmp280 0xf87bd6bb bmp180_regmap_config +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x635eb26b ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xa6a8b0c6 ms5611_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x6da98a0a st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x7e9c9e3f st_press_get_settings +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xaa90cee0 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x285d741b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x470f755f ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x496903c2 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x525e7c03 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8049ca5a ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9b218201 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb1816a82 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc18f43dd ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc3e1d93c ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc7672d28 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc77f928c ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc9c0eecc cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdf0ce72a ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9f8d4ff ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xea711c49 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf3ea2291 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00af2044 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00d3ab12 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x017dd73f rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02c8a5b5 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x030d27dd ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x032f4166 ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04776fa3 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0547925b ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x057ff96d ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08c9639d roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c129b32 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e6f5c60 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e768e73 ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1025cfc4 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x104e8a9f rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10758b51 rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10b18d5c rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11ba53af rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11cb6703 rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13311c28 rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1596228e rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17a1d8c6 ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17a6710c rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19f505d1 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b3bcf33 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ba31174 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c0accff rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20257993 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2193521b ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21eaabcf ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25251dba rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x253f46ea ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x279d853d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29240ccf rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x293aafb3 ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2aac43f4 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ace4a61 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cdee10f ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d479d96 ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e93703d rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f9f1b0e rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x315741ce ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x318a36fa ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32d1afe4 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x348f6ecb ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37aa908e rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37acaebf rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38ea150f ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b53de0a rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3bea73a4 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fa081d1 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40da74be ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43393bc4 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43bc9a14 rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43ebfe90 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46bc55aa ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46f07662 ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4711799d ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47741a4d ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47959473 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49e86a0e ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a392486 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a69fa61 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4cc24c72 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d942089 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dea3a35 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x502c4b1e rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54f08dc3 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55c36fec rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55e6190e rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56d9dfa1 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5820d18e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x590dd222 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a7adbd4 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d8ac518 ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5defe7d4 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f7a9436 ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62cc6ad8 ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6573437d ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x668650ed ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b3a1646 ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6be41ef7 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cf186b4 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d866118 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6df766f9 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70dfc9b5 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x715a88d0 ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x743587e8 ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77532725 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x778d6376 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78377a78 rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79017f9d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b33cb87 ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b85a835 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fcdac4f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85ad0ffd ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x882634f0 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89d60086 rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a0c035b ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b0c866a ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d199f58 ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d325b1f ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91a4fc28 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94bdc4f2 ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x975ff2b9 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e4a9c71 ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1e6bf49 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa35ed0a5 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5a9b119 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5d12de8 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5d16850 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5d2ce99 ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6561630 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa79dbbcb ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7b470cc ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8d9723c rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa94db156 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabdb83ca ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac8add52 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad6b05a9 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaef1e313 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xafb34eda ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb21d0098 rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5d1d546 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba6cb8b8 ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc3e4824 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbca18098 rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbcac937b ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbce501d3 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe07f70e ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf66b80e ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc073033b rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0ea2b40 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc253f72f rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2b3a202 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3f362ee ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc41a5062 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc55588cb rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc69f70ee ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6a96e34 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb784184 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd962a84 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcddddb7d __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd24d9585 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2925a41 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd32222ac ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5ae4cdb rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd655529b __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd66a5c60 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd66f411e ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd799a189 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8806530 ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd94c4f46 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9fad2b8 rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb9f3b4c ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbe81c91 ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc53cb67 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdda14729 ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddac6adc rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde1df0d9 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfa1cc80 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdff78e1e ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0174291 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe03b7feb ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1808ec2 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4269def ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe76576b5 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7a1f499 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7e89112 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe830f10a ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe967ffed ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec40f3dd ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec47e89c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec642631 ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef890e0a rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefa90376 __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefbe602d ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf11918cd ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2d32007 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf45fd734 ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8e558de ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9b870c3 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb380040 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfca79a70 ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd9c431c rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdf8a7e8 ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffe22903 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07ff137f ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0a846202 ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3093944d ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x40302a3c ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x47c2acfd ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4a8c6065 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4d320b0c _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x510a49be ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63b3105f flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x79e96f68 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x81f4b943 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8543d463 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8c9171a1 uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x90ad0261 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x94b0f3ab _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9a49d6eb uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa5d08a80 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xae2605a9 ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb0553000 flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbaeb9dab uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbe819ba9 ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xcc0b51a1 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd4e31a37 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd6cac981 uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd824d316 uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xde9329f8 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf3cb9f82 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf47614b2 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x02283557 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3c92244a iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x874f4caf iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xacc41506 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc2f273a9 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc376dc6a iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd6b3fd6a iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf1228a79 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0b51b9a9 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1161a0d6 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x13fce8d4 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x146a2d20 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a3277e3 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x22c5a0fc rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x30b02f6e rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x37f85692 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x524c8d00 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55446fe1 __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5c6ff727 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x644c23c3 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x652da288 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x655e2b75 __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x780b93b1 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x79ce6bca rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7e0a8d68 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8de4eef3 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9459f168 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9ee016b2 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa3b7d4d3 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb38e0be6 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb5daa0b1 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbd3386fd rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcbd94392 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf947c65 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf0bfa126 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf5c0454d rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf8dedfec rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x0fee951f rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x14868784 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x1f72df3d rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x28194f66 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x8774cd06 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xb329935f rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x08594a72 rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x1d096851 rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x7de4597b rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xb47f158c rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x41c594e1 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x70e0d473 rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x90fe0d05 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xa5e39b54 rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xddd96822 rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xe22e9d7c rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3f31b283 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5b8fa0d8 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x75f6a520 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x927eb107 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9d7153e2 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbc28c51c gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc8d3934f gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd1bd3a00 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdbc96866 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x0e5cef28 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x0eb80f4e devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb1446723 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb94ab2ba input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf4eb2993 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0x3df4fee3 iforce_send_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xb037d8e4 iforce_process_packet +EXPORT_SYMBOL drivers/input/joystick/iforce/iforce 0xe9963471 iforce_init_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xca89b627 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x8dc0f314 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x966935f2 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9c669537 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x3c5706f4 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/rmi4/rmi_core 0x24bc4736 rmi_unregister_transport_device +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5fb37f6c sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x692d0694 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa87ba26e sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xab4e8633 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd3660228 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2ec806d7 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xb0163668 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x49adec0e detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x815d21da capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa56e241 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc78e092d capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xceea0b17 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x27c58fd5 isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x4644eea5 isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0x5b835a58 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/isdnhdlc 0xef4ee223 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x01db9b6b mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x0cff37a5 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x3890da14 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6ad6fe23 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x445b365c mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc4717284 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x03a68066 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06488412 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1c12e6b9 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x22e0d453 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x26236de8 mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2d263482 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d25b0d mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x313b1fde mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b6c4e29 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6047df40 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x689dc052 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x69751a23 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6af5f205 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6b8caa48 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x73c66108 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9abba041 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c928457 mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9c9b3d9e mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa5b259b4 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbdefdaff recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xce242d57 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd9731783 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe1e8e86c dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeeae2def queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xef2d8f1b recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf3d51d52 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6567bad mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf954b88e mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb16bdd5 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x93df9e4b dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb07a21b8 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x1ad4615e ti_lmu_common_get_brt_res +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x54a12ec4 ti_lmu_common_set_ramp +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0x94dee567 ti_lmu_common_get_ramp_params +EXPORT_SYMBOL drivers/leds/leds-ti-lmu-common 0xced72aae ti_lmu_common_set_brightness +EXPORT_SYMBOL drivers/md/dm-log 0x255d5fa4 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xd95e7f51 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xe31562df dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf469edc4 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0c89f131 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x47cbf0cd dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x630dbaaf dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x660dd1f2 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa1044669 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbd6baedd dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x093c1340 raid5_set_cache_size +EXPORT_SYMBOL drivers/md/raid456 0x2fa2707b r5c_journal_mode_set +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x05fda6bf flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x196a6e62 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fe57223 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x483aa30a flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x79457545 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8c751e47 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xac8885c1 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xacae78bb flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc665e5e2 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcd7feba8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd01a10df flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf78016a1 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf812542c flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3b2821ad cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x55aa7c5f cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6990edc3 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x87c98df2 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8d3a49fd cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb9c8f3f1 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc889377e cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0xd287620a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xdaff62f9 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe197a5dd cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xeb854f47 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9193c90c cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x0dbf0296 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x41088237 tveeprom_read +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0x28d60d4b vb2_verify_memory_type +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-common 0xcf55588a vb2_buffer_in_use +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x000e8291 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x058a1bc8 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x12eac649 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0x37235ffe vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xa646ec03 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-dvb 0xce357dd8 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xa21fa765 vb2_create_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-memops 0xccd197c7 vb2_destroy_framevec +EXPORT_SYMBOL drivers/media/common/videobuf2/videobuf2-v4l2 0xd93a1966 vb2_querybuf +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0415d93d dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x064fd246 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08733236 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0de672f5 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x13b3d9f9 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x24080adb dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x29d58443 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b93d71a dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3d8830e7 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f2201f7 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x442e65b5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4502c3be dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x472f9e7b dvb_remove_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x47d36a6e dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c39b77e dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4f7dd8fc dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5830a49a dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a015da7 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2b1d95 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66a68864 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x66bd7694 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6ef5628b dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7c850e9e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ce14ae7 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f08a73d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x82878c35 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8622911a dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8c392066 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8fbc3585 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa0f1efb2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb313211f dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb5767bda dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb5a3524f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8531cd2 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc980071a dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xce748c8d dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8a53bbf dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe0668b7b dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xec25f0b6 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef3fcd61 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf29e3b65 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf5a99eca dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf9e3d59b dvb_free_device +EXPORT_SYMBOL drivers/media/dvb-frontends/ascot2e 0xb696762e ascot2e_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x330c5ded atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x07d6d1d0 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1a60924c au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x55e211ec au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x95299e19 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x98533f1c au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa374c6c6 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb614ac2b au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbfd7d9a6 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd68f5eaf au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x9c7ce89d au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x4714bef5 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x5c967fcb cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x4793d840 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x65db7e3e cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x5764243b cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x96de2930 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x12aa97b0 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xc5d9351f cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6e9282b1 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe03dbae3 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x983b4e59 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0x4f6a193c cxd2841er_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2841er 0xeb909262 cxd2841er_attach_t_c +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2880/cxd2880 0xab3eacc1 cxd2880_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x25e2fd9a dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x69834ab5 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7efe83ec dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x80dd170f dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x91bc801c dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0250f9a1 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x172c1965 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x30073a47 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4bf5ded5 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4e0fa5b6 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4e96cd64 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6e5e9439 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x85e1912e dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8b96e26d dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8cef4230 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x92dac0e2 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9a105caf dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb266fbde dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd7272416 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xec162742 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc5b7d112 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x068c826a dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1ff2ef38 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5095394b dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x67d0eb5c dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x69164f3c dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7c7431a1 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x384211b3 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5633e9c1 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd6bfa7e8 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd896b5a1 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd76727bd dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x18dd8117 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x15330f40 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x1b26404e dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x302031e0 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x40ecac49 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x4d44c421 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x5253b248 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0x98a37006 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xa70eff49 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xb01179d9 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xbbb08525 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xc71000ce dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xe2999f83 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/dib9000 0xf215fff3 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x128c07cb dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x238620de dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x761ad49a dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x863f3967 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xda39291f dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xa2a70422 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x280ac375 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xaae6ebdf drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xfb12c01a ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x6dda3a4b dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x32cc7ce1 dvb_dummy_fe_qpsk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x41c8ef94 dvb_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb_dummy_fe 0x99025889 dvb_dummy_fe_ofdm_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x8f1494c1 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0x103fb047 helene_attach_s +EXPORT_SYMBOL drivers/media/dvb-frontends/helene 0xb3402abf helene_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/horus3a 0x8839e915 horus3a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xa6ec4b60 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x118b6102 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd059227b isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x608ebf2e itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x1914c1c0 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x1c6d3a65 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x5aa01388 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xd01de35e lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xbd8514cb lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xbc9eb356 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gl5 0xc1fdf377 lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x9eeeec36 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh25 0xc43377cd lnbh25_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbh29 0x5b048fd8 lnbh29_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x1470d295 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe9a1bdb7 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x24cabb08 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x7aaa36b3 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xe08f6ea8 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x7089f043 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x02370b77 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xcac30c83 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x2ca81a4b mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x5af15ced mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x40a59ddb nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xe9e470a1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xcc827f9c or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x5be2b6d9 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xcb59b7c9 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xf6475d36 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x3943d664 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7a22bc91 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1432 0x6cff5f72 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xf34977c4 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xa0ed62e0 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x2d6bf9b0 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xb28a5289 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xca39bfe8 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2ef1dbf6 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x7c09048e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x29b6a383 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xc37f6c1d stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x026b0645 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x0e7ce9b3 stv0367ddb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7ee29652 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xcb4190ba stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x6e3c9d5c stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x82827780 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x191e80f8 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xc7d39faa stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x76e3a9ae tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x299dddbf tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x6c2ef879 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdfe101fb tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe0e04979 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x1c23ef66 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd1e1535a tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x2b71ceab tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x1f9fc69b tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x8a05350e tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x42e39223 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x46eb74bf tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x1874f13d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x363c2d4a ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0x9a22a65a zd1301_demod_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/zd1301_demod 0xed190cf0 zd1301_demod_get_dvb_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x439ba598 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x91a4266e zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xb295a7b1 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2f41dd17 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x404962d4 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4e6b294c flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8b2a1146 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9809b666 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xace7403e flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xebc9ddc8 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x35e1690a bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5650e69b bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8f28ed5d bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc894c642 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x824bcceb bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xae234f3b bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb7c7d243 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x26d4c198 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3c334182 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43a983fd dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x54493d87 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x77f789c1 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7bdf7c53 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa6daf353 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb781721a dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xcc5002bc dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf2b480f9 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xa8565c45 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x555f5ac8 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa4fd4343 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb3afcec0 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb711daea cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xeaf2ae7f cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xd0fdb6b0 altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x043dc275 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x0d35e003 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4249d44e cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x44b517f5 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa0749529 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb14f575d cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd4f5eb83 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xde17cff6 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe9050411 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xe170bbb5 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xfac0091b vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x782f96b9 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7e826d02 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8aec82e3 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb51da4cd cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x3a471683 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x43e562f7 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x539ca7df cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6717bc4b cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x90894247 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd2a6f725 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd9b63344 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0b251fff cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x245dba17 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x26210ebe cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3d16031a cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x41b917ae cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4aeb0333 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5310abed cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x56da69c6 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5edb7ae5 cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x656d7898 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7d7d9beb cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x874594b1 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8d88137a cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x975216d9 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbaada516 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc4abf0d9 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc72cb5ef cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd4cc14f1 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe42d6e65 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe5004604 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf4b53e6f cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfaaaabb6 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/ddbridge/ddbridge-dummy-fe 0xcb98e967 ddbridge_dummy_fe_qam_attach +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x31d6aeb8 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x46102f7d ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ae1d9d0 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ee2399a ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x698c4c28 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x72d0340a ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x946ccfdf ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa15f80f8 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa444e228 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad454bf0 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc40acfa2 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd152d83b ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe4e75fb9 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xedbf0cd7 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf0597fbf ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf120ba40 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf610dc43 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x2679f421 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5cfa23a4 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6da4d65c saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x730c4be3 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7eb6dba8 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x80515cee saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8db8d8dd saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa20a6915 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbc565851 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd43c2df9 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdb6163a6 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe05e458a saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf75d6c8b saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x693e74ba ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xcd9c23d9 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3dbe70f0 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4f2c7f96 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x6b88f663 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7a32786b snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x86e9c007 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x87963b32 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe7ee616d snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1c77399a ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x2ad91f6e ir_raw_gen_pl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3131b773 ir_raw_encode_scancode +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4725eda1 ir_raw_encode_carrier +EXPORT_SYMBOL drivers/media/rc/rc-core 0x524b3ad8 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x7cf52901 ir_raw_gen_manchester +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9e12e343 ir_raw_gen_pd +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xf94b1626 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x993536c7 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x8d94c79a fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa0d9af44 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf7241908 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0xe458de71 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xf45639bb mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc01e1d71 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x8be50d8d mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x21578bbe mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xd5440b70 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x06a66d6c qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x2774172b tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x4c48939e tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x3800f827 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xe7e6bbd1 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xe6e6a8db xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x113759b8 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x432bcece cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1d64d828 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1ee194b4 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2cf36538 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5645aa5f dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x56c6155c dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x7ee9b16e dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe3c851c6 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf265189c dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfb0d6b01 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x077170d9 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x68d40726 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6cdeaedd dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8b6f5395 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x90d0a3fa usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa17a202d dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe588e939 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x341530cb rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xb72948b6 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3bd38c70 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x565cbab4 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x60b2d4ab dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6215509a dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6395f97b dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8bcc4814 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9319c2d3 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x93822ecb rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8714a91 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf67c57ff dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0x03d22e7c dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc-common 0x89694757 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xe27dc6ec em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xf0bcfc3f em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x25ed3335 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x37ff4b7a go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4ca7419a go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x62404ed9 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x90b5e0f7 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbd5b3684 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe21a8074 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe414c19a go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe7175134 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x00f6f8a1 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x014be141 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x25a4b91e gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x55680929 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa6ce1d86 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe08b576e gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf855fc8e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfee6e5cb gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2c55a4e1 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x324eb462 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7f78a6f3 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x157536e4 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x3eb2372e ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3daad022 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x55a0d4e0 v4l2_m2m_buf_done_and_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x5789e1f7 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x87d6db60 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00d2e9b8 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02deb8c5 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0414f4d2 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x082737e8 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e952724 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f6f04f7 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18f2e075 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b994e43 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1efff2dc video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20a29e51 __v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2187dcbf __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28b12cc9 v4l2_format_info +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29ad0e92 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c7011ba v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e93ca27 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ece03ef v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fdfbfad v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x315de2cf v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d43420 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40e7150b v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43ebbcaa __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x467d1b00 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x485321c1 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x523a9ab1 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54af510b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5576c4cc __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x576166ab v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58043a85 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x60be1d69 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61165f36 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78e660b4 v4l2_subdev_call_wrappers +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c18c474 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ec28095 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8280534c v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84452c37 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8500e9fe v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89e3897d v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8fbba459 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92666b71 v4l2_ctrl_request_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x990209d9 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e018b65 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2e484a8 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa54ed2ee v4l2_ctrl_new_fwnode_properties +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa87b3b98 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8f7156d v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9d97ab6 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa5effe2 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab7c11c0 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb027718a __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb15674ca v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb650aa35 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb70d7a2e video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xba475c55 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe33a78e v4l2_ctrl_request_complete +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5b0aa25 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcba35bec v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbed33fa v4l2_async_subdev_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc3f1bee v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfa8f0f8 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd16d9c01 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc6c1416 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde9b3352 v4l2_ctrl_new_std_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeeaa6bb __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe0e5d974 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3aa23b7 v4l2_async_notifier_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec84c7ac v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xecfa3adb v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeda21663 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee3195c0 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee6f4c0a __v4l2_ctrl_s_ctrl_compound +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf50fecbc v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5836e93 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfac30291 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd81bfca v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff8ff964 v4l2_queryctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0eac5ae1 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1077e195 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x14b507d7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x233acfa4 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4a4e5778 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4beca9d9 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4de53841 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5cdaeb31 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x72b838a6 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x81dea5fe memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8b849b7e memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa3a06efe memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xae50437c memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcd89ebe2 memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x054b8722 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08d0d536 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0a63e3c9 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0b7f47c0 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x103ae09d mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x12b2b295 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1e07d813 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22d79e27 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32892357 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32b4c53c mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x499c3603 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5de6e6a5 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x610b257e mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x69e9b3d2 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74a0134a mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7a733759 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8e8d5cc7 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x946d1274 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x981efe92 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa236ecb5 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa7b25c37 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa808683d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xacf2b61d mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadb0f183 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae3552e5 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb06e081b mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbad36ee6 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc7f817bd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcbb26cda mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0277af2 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe0f5a88f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe5c4c897 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6c1e126 mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x086e8164 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0ceb5d88 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x17070017 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1c946f9c mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b4977cf mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3cca5dd9 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x406bbe28 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a44c408 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a457b6d mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x80a2ae46 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x822b8889 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x822e5f73 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8698017e mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88e2b930 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8d0aa378 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f7fdef6 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x929cca6a mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0c948c6 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb5276aff mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba083b02 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbb1a3fb7 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcea512f6 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe04a12a8 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe644dea8 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0101c46 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf5f8b11b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfe22951f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/mfd/axp20x 0xbdc9f2aa axp20x_device_probe +EXPORT_SYMBOL drivers/mfd/axp20x 0xc20e9058 axp20x_device_remove +EXPORT_SYMBOL drivers/mfd/axp20x 0xfa7eadcc axp20x_match_device +EXPORT_SYMBOL drivers/mfd/dln2 0x505daddc dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x75f5ca85 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xe12caf79 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x1dde45eb pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x706e11b6 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0002381c mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x106b0726 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1469ab3d mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4dbf2532 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x91ad6f9c mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb0d95ea2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4b480a3 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbd129d8d mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcb48a7aa mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd1364bef mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfea5f5fa mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/wm8994 0x0af1a9c2 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x3344a0f0 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994 0x38cb125b wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0x46a8ea03 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994 0x8b82b8d9 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994 0xa7a91076 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd043be08 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xd51f314d ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x5bafa76e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x334b0c4f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x4b10ca8d c2port_device_unregister +EXPORT_SYMBOL drivers/misc/tifm_core 0x046f4368 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x0ffb277f tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x11a29dc6 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x58715165 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x5f352188 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x732e6d20 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x79c78a00 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x7c918f1b tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9c8a88ab tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xacfc6b3a tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xc9e0e306 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd3359d80 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xdea7a95a tifm_map_sg +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x05e6d38d cqhci_pltfm_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x0fa5b1a8 cqhci_init +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x2083bf8b cqhci_resume +EXPORT_SYMBOL drivers/mmc/host/cqhci 0x8cfe55cc cqhci_deactivate +EXPORT_SYMBOL drivers/mmc/host/cqhci 0xbe47bdda cqhci_irq +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x37db20d1 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x54231223 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x177f014d cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x1a118fde cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x823ef70b cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9d967973 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb3337157 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe23edd68 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf66176f6 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x5f77090c do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x670afd57 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6f730c28 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7c3c9d0d register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xdc9e16f8 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x7afae41f lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x387823f8 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1a6c4371 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xab7c8eea mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0x08f0a8dc onenand_addr +EXPORT_SYMBOL drivers/mtd/nand/onenand/onenand 0x30608dee flexonenand_region +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x30db096f denali_calc_ecc_bytes +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0x8cbc6bba denali_remove +EXPORT_SYMBOL drivers/mtd/nand/raw/denali 0xe85d3cae denali_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x1b44e057 nand_read_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x1e200218 nand_write_oob_std +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x3d661d96 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x478d51fa nand_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x492125e7 nand_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x4d650b60 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x5b98a5c5 nand_monolithic_read_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0x8ecbb3b8 nand_check_erased_ecc_chunk +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xbb27d289 nand_create_bbt +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xca64a44e nand_scan_with_ids +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xd4c4e7cf nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xe6d898e6 nand_monolithic_write_page_raw +EXPORT_SYMBOL drivers/mtd/nand/raw/nand 0xfb122c37 nand_get_set_features_notsupp +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0x53ded2d3 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xa43d1c72 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb636dd73 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/raw/nand_ecc 0xb6fb2864 nand_correct_data +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x15c44a27 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1d3b7737 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2b78fc1b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x53551a3b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6ffaba27 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x839ab50b alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9b37b55 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc387ee1e arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd35e153d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdacd9491 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x2b58d057 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x7a436590 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xc4ca02f7 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x02d65229 b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0c08d12f b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x10830d99 b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x127ade58 b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x22ba856c b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x235d58e5 b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x27e412e8 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2c86649a b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2ca2ef5d b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2f420c15 b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x334bc6b3 b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x33e2cdce b53_mdb_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3a2f23b1 b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3c21c5a0 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x40ff47ab b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5002c407 b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x569c0ed2 b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x56df3871 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x72d1cdb1 b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x76967c0e b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7d2b4a64 b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x82fedb7f b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x928d4b27 b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x947efbe5 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xaa442a37 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xabb43dae b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xba957dba b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc09657ed b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc65de683 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc7a3177d b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc876cb0c b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcefbe1af b53_vlan_prepare +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcf746ba1 b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xcfa9a6e1 b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xde009371 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdfd474d0 b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe37b06f4 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xea3ae251 b53_br_egress_floods +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xeb1459af b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xeed03341 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfbeb27dc b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x2258514e b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x25775670 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x29d51a5d b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x50d15837 b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x698e9349 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x931abf4f b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x64cef1b4 lan9303_remove +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xa2260ba3 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0x4839690a ksz8795_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x1d8f682f ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x2874c6fc ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x28935c74 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xb976d1f6 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x851fe46a vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xfbcc44e7 vsc73xx_probe +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x20863ed3 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3f48ffac ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x56cd6b08 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x57be79aa ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x644d722c ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6acd99a7 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x764fdaeb ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x90e92ef6 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd833a7eb ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd9e0c2ff NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xd9fe5659 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x160f08c0 cavium_ptp_get +EXPORT_SYMBOL drivers/net/ethernet/cavium/common/cavium_ptp 0x3f83d211 cavium_ptp_put +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x0d8be5fd bgx_lmac_rx_tx_enable +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x34eeb48a bgx_set_dmac_cam_filter +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x46cdf933 bgx_config_timestamping +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x539ca253 bgx_get_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x60cd1f2f bgx_lmac_get_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6ca2152d bgx_lmac_set_pfc +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x716fd7f0 bgx_reset_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x72b238e4 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xbe654297 bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc397f585 bgx_lmac_internal_loopback +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xc82be691 bgx_get_map +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xd8ed0bcc bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xff987a02 bgx_set_xcast_mode +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x13912e4b xcv_init_hw +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_xcv 0x4f739dc0 xcv_setup_link +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0d5f44ce cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d061203 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x42c4cbfe dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x60c9b3dd cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7059557b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x898e0fca t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa492c89c cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa6639ac2 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb6178aa2 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc4e8a72a cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcbd2d732 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd35027db cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe0bac236 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe9e96ee5 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xef3793de t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfe5b5b2e cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0488fb77 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x093759f3 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0a270ff7 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c5c8dc3 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1649e119 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x164d91af cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x174ae621 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x21abc7a5 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23775d13 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2a91bfb0 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x354c81e6 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40009fcc cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x417432f0 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x419d7e25 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4a73c397 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x52b686b7 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x53760f4f cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x53cedc05 cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5903502d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x676a11a9 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ca1237e cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x75706b4a cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7864a665 cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c5a081f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8d6a0b4f cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8dbf1994 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8fd764cc cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94c767a2 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9583ac4a cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96afa1bc cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f6e5bff cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9fd4d3e2 cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa21a7120 cxgb4_get_srq_entry +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa7c4b8c4 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8e92114 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa97f66ed cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc8e8dc8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xce4b5c7e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd1d9ba9d cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd618441d cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1e9250a cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xefa7c398 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1fb0fde cxgb4_smt_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf79e8313 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa68bfd1 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb2933cf cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe3ba2eb cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1bdaafe1 cxgbi_tagmask_set +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x1ce280fe cxgbi_ppm_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x255ab30f cxgb_get_4tuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x2bfbe93e cxgb_find_route +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x311a62c7 cxgbi_ppm_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x3a33b46b cxgbi_ppm_ppods_reserve +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x4b3d126a cxgbi_ppm_ppod_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x4bef2f20 cxgbi_ppm_make_ppod_hdr +EXPORT_SYMBOL drivers/net/ethernet/chelsio/libcxgb/libcxgb 0x81758007 cxgb_find_route6 +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x296b6ff4 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x39e5b930 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6172b8f2 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x624b606a vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6fc9d2c8 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xce26babb vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x0434ab38 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2387e606 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/enetc/fsl-enetc-ptp 0x5431a304 enetc_phc_index +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xb39cf7a5 i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xe949293e i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x11bf26ea iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x122b7fc0 iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x034a7eba mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x069eeed1 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cfd113b mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x238d6c2d mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x250ece19 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a21c338 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c1e2aaf mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x359cf436 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x365bd14e mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b5e12e5 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3de2da6a mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4035c253 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x428171df mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48801ae7 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4908cb9f mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a42ad04 mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51e1c177 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x553a31d0 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5893a4fd mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e77af33 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69fd3f2b mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72347605 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c42ac9 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fb25641 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8081afe5 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x814d8182 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x837265a8 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x858a609f mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88e7188a mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97961ffd mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a9e6786 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f8f3030 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa76a2985 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac2a8333 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaefbde2d mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb58028a9 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3fe1d2e mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc77ac883 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd44e5189 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd58e351a mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4a7ba29 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf20ad749 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4e5e84c mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff3a2074 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05c9ef36 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07e5bbe9 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09f41f3e __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a29007e mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a5dcca7 mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d02f4c1 mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d17c275 mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0dd263ed __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1004b9b4 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11108174 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15056153 mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x159517cd mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e6d75a6 mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2021792a mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2112ae50 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x216d35a6 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2291385c __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26dc1855 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28bb4ba7 mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29efd84d mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29f0a490 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2aa6361f mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b62c25b mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bbe6860 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2be736f0 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ea9a81a mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33e1ff51 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38dea0a9 mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c0a4883 mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d78e002 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42ebf6bd mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a34b907 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ad565bf mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4de3f0b5 mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e6d0c52 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5118230c mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55fd8de7 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x567394d9 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x569c07e5 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x584540f0 mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x594d2eab mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59e0e732 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a9b20eb mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c1501c3 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60d02c43 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x614f551c mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x653f2f0e mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6585a53e mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x681b5eac __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x682ff736 mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69576cac mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bcedff9 mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cdd3616 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d3650b0 mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e56623d mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x746767a6 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74d97d7f mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7afcba14 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b0efa91 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cf5e17d mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x849a60dc mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x870e085d mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b140be4 mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c344443 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x90b85b52 mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98d0aae9 mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x996340ff mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9bd8b945 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d862bf5 mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ee8e034 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f216829 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0e0a8fd __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5ae9023 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa723dc0f mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7f707f6 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8416852 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa86f0b57 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa7e231c mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae3a15a8 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafa5ac11 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafd0d9a4 mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb358287b mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6bbf556 mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7ef2060 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb800685b __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb6a8098 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0b7d52a mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc10fe96f __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1b339cc mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc40f27f4 mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc56a82d3 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc9e649df mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcda65d6b mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf6597af mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd20a7c32 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2a2110d mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3d46fbc mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4cec7f2 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd749ab5d mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7e62e1e mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8b6a761 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdaec3d67 mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0ef9e89 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe455480a mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4d08b96 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea1e81b2 mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeaa2a8c7 mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeaeace6f mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed227971 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef49a699 mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf01ceba8 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf189b8fd mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf29b3165 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2fb574f mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5798df4 mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf60aab35 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf76e1b4f mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf84bc342 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa1dfc8c mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb984063 mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc502d87 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd923778 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff48e971 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x9b584831 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x04e96f39 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e64229b mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c2c1b1f mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x371b21b5 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x378f26c5 mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x44034827 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4e2bc0b3 mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x59e1f32c mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9ec560aa mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9f095f10 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb97ce10d mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb9e44724 mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba2023fc mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9a44ede mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdb43b4fb mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdf931c11 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x0706fecb mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xb31c1546 mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x655d1ceb mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xe1fbc649 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x00ad890a ocelot_port_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x041fdf47 ocelot_ptp_settime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0b150222 ocelot_netdevice_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x0d842a93 ocelot_deinit_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x132cc227 ocelot_hwstamp_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x29cc007a ocelot_fdb_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x37d50cda ocelot_bridge_stp_state_set +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x3b7425d9 ocelot_chip_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x44885915 ocelot_port_policer_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4a269ee6 ocelot_port_vlan_filtering +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x500c5e69 ocelot_port_disable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5358088f ocelot_regmap_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x53f551d4 ocelot_port_set_maxlen +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x5ac5f5d3 ocelot_get_ethtool_stats +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x618f3f70 ocelot_port_bridge_join +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x63487e1d __ocelot_read_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x64648633 ocelot_ptp_adjfine +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x64f83a16 ocelot_regfields_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x679d8ee0 ocelot_ptp_adjtime +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x67a84f37 ocelot_fdb_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x6cab2671 ocelot_port_policer_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x731beb8d ocelot_set_ageing_time +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x75319d1e ocelot_adjust_link +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7ad30409 ocelot_get_txtstamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7ae5a801 __ocelot_write_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7d2b0bae ocelot_init_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x7f63b9c0 ocelot_deinit +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x80c68eb8 ocelot_probe_port +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8bac5e84 __ocelot_rmw_ix +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x8dbe10e8 ocelot_port_add_txtstamp_skb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x913461f1 ocelot_get_max_mtu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9a8bf3fb ocelot_configure_cpu +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9ea19966 ocelot_fdb_dump +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0x9f4788f9 ocelot_port_writel +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb02c72e5 ocelot_get_strings +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xb3bd3838 ocelot_port_bridge_leave +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc5fb1625 ocelot_vlan_add +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xc68c64d4 ocelot_init_timestamp +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcb47cede ocelot_vlan_del +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcdda38d7 ocelot_ptp_enable +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xce7f279b ocelot_get_sset_count +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xcfa15128 ocelot_ptp_gettime64 +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0348add ocelot_switchdev_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd0395ea1 ocelot_ptp_verify +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xd407fd6a ocelot_port_readl +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xda7dfa17 ocelot_init +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe54a91e8 ocelot_switchdev_blocking_nb +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xe6da9982 ocelot_get_ts_info +EXPORT_SYMBOL drivers/net/ethernet/mscc/mscc_ocelot_common 0xf4794580 ocelot_hwstamp_get +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x13f4e1cf qed_get_rdma_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x443459dd qed_get_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x4f264472 qed_put_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x992e03d0 qed_put_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0x9eeeef48 qed_put_eth_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xa871d895 qed_get_fcoe_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qed/qed 0xb86aede0 qed_get_iscsi_ops +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x19bc5db9 qede_rdma_register_driver +EXPORT_SYMBOL drivers/net/ethernet/qlogic/qede/qede 0x8325264d qede_rdma_unregister_driver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2f58d10f hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x699c55cc hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x86bdead8 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x97dc52cb hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xaf899886 hdlcdrv_register +EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0x63e0fee5 mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0x652fb0b6 mdio45_ethtool_ksettings_get_npage +EXPORT_SYMBOL drivers/net/mdio 0xb79a54ee mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0xcdbdeca7 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mdio 0xdaceb7a6 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x20db1307 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x2ab8333c mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x2c99929a mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x94080e60 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xae118762 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xb57c12df mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xce1a4f5d mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xe9630195 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0xf1b8fecf mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0xf21c561e mii_check_link +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x7201a0bf bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7777df2f free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x8d4d0ea3 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x1e76a465 cavium_mdiobus_write +EXPORT_SYMBOL drivers/net/phy/mdio-cavium 0x2c770876 cavium_mdiobus_read +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1ecea594 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x4c8c2363 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9d9e6892 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa66b2450 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xf3aac438 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0f0bf4f1 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x2fb6fc67 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x4c3ef9dc team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x85500955 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x99d105b9 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xae371c6d team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe270e2e3 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xea02c549 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x0cc669f9 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xea50dc3f usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xeceb14a2 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x101d7346 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x20a202a1 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x298e6030 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x35823cfd hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x394b642b attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7df7217f hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x901028ba hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x91b6dc96 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xeb78693c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf83cd747 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x7e17bc02 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x108b188f ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3586068d ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3afba457 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4571aea8 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5d82ea1a ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x60cbcc91 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x625b7b1f ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7b19303e dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x891848c9 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x95611b82 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9994f821 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa18f224e ath_regd_find_country_by_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb101a1e3 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb6588ba6 ath_bus_type_strings +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb7f8a771 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd66ced69 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf08b651e ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x015e5db2 ath10k_debug_mask +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x02a82edf ath10k_ce_completed_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0be0b44b ath10k_ce_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0e1715cf ath10k_ce_completed_send_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0ecb7ba4 __ath10k_ce_send_revert +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1204be70 ath10k_ce_revoke_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x146d2b1c ath10k_htc_notify_tx_completion +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1e446ee8 ath10k_ce_send +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1e757ea3 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x20c2997f ath10k_ce_completed_recv_next_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x21aaf114 ath10k_ce_free_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x29f62b99 ath10k_htc_rx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2bf335ac ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3aa79f5b ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x43a953c6 ath10k_ce_completed_recv_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x457352fc ath10k_core_free_board_files +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4efd65c8 ath10k_ce_deinit_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x504255ec ath10k_htt_t2h_msg_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x52af6610 ath10k_ce_alloc_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x55e19bff ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x68507b60 ath10k_ce_per_engine_service_any +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6f76ddef ath10k_core_fetch_board_file +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7509fe41 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x76a633a2 ath10k_ce_init_pipe +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7718069f ath10k_ce_dump_registers +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7ed32599 __tracepoint_ath10k_log_dbg +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x85ca5f51 ath10k_ce_free_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8847ebb0 ath10k_htt_rx_pktlog_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x929af7ec ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x94bdba48 ath10k_ce_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x956a6d93 ath10k_ce_cancel_send_next +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa51ac67c ath10k_htt_hif_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa5d5748c ath10k_ce_rx_update_write_idx +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaffc2b9a ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc2211403 ath10k_ce_send_nolock +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc2eef141 ath10k_htc_tx_completion_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc3ecd0b4 ath10k_ce_num_free_src_entries +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc5e26733 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc79c7bfa ath10k_coredump_get_mem_layout +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcbc8504c __ath10k_ce_rx_num_free_bufs +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcf1981eb ath10k_htc_process_trailer +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd0f45d25 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd767f19c ath10k_ce_alloc_rri +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe1b526d0 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe901f27d ath10k_ce_per_engine_service +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe9736121 ath10k_coredump_new +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xecd1bfc9 ath10k_mac_tx_push_pending +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xed553a58 ath10k_htt_rx_hl_indication +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf93496f4 ath10k_htt_txrx_compl_task +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfbf63af5 ath10k_ce_rx_post_buf +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1354043d ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2022ce14 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x278d5e24 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x332f6007 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3502feef ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3c047c66 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4103c8fb ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x88643be4 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x905e11c5 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6dd99ee ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xac5c967c ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb881b1a9 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a50b36 ath6kl_read_tgt_stats +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9a689dd ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd19267a8 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0648be9e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x07c144ab ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0e939beb ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x13259128 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1b1304ea ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x414dd2b1 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x423b777c ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x47e6ee85 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x81afe148 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x837bae8d ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x867a224f ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8b676927 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93ed497a ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9524c82c ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9b4fa841 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa5c679b8 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xad1fe7ef ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xafe60bb8 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb61e7197 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb76fccc7 ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc08b0d63 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc4d7ab3e ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc68fc49c ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd92ff824 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x03038266 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x095cf3ac ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ee18ce0 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0eea1c23 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f31ed83 ath9k_hw_btcoex_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f77dafc ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x102a83e0 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11bda4ea ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12405018 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12dbf909 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17b293b7 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b630d74 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e945fb4 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f39e973 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1fe4b816 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20574468 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21b1c436 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x232b99bc ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2510d56b ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25656c97 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26c520c7 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2712eba1 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x273b3b64 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a03d61b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c3117fa ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d187bc4 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3174998a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x335701de ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3878ee4d ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a1d4b07 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b2c706e ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4270e2ee ath9k_hw_gpio_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x476da6cc ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49cac989 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d92719f ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4fbafeb4 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61563aa6 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6216c2e7 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66211fa2 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68f85a83 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69d218f6 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b6ca1d5 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c6aa3ad ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d5e33aa ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70c4d4ae ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72535c31 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72f8a7f6 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76944458 ath9k_hw_gpio_request_in +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e15607 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x773ffcd5 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7891a3d4 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7aa5be16 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d58a4bc ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e4bfed9 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81c566f3 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83f8dd78 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8abb3744 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b3af96b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d7e59b0 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97dd8ebf ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97eef77e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99402fba ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99c1e358 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c4045bf ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa06a4e17 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa240fd4e ath9k_hw_loadnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa65b4c1b ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa66e2d80 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7536530 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7978af2 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafc4b1e3 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb31cf721 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3b4557a ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5c7f4dd ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9cfb37b ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc09b7bb0 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc200d0ff ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc314dcd6 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4f8bae8 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5b2a96a ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6025af5 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9a73be4 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc5bdf1f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc8ba7fe ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcef878b8 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf3b749e ath9k_hw_resume_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfd200c1 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd05b8f9f ath9k_hw_gpio_request_out +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1ecef07 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5893d45 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd8ce108 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd9c9a3f ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf11530b ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2b97f58 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe78a1f61 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7eb9cab ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb5e91cf ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xece96062 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedba6500 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0a38b3b ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1bbcd7e ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4c7cea5 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4fe4f1b ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7ed4f12 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9d1399d ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb1052e2 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfba0ace2 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff572515 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x1e53164b init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0x35101238 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel/atmel 0xcf06d49d atmel_open +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x01bbc3bc brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x1906648e brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x23078286 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x27a453e2 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x5105cfa7 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x59d0ae49 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x5d4f16db brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x7fae8833 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x822cb909 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0x878a2d08 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xa17c0ccf brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xc259392b brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xc6b306ad brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xd6217d91 brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xebd8567f brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil 0xf37edfa4 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0x265d8b45 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0x9fa6c9f2 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/cisco/airo 0xd9da9833 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x0307d2b8 free_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x15adfbd1 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x202758ed libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x32a11aa2 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x333febb3 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3976c7c8 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3979fdc1 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x3d7ad874 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x5cb88118 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x65719602 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x7844393a libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x86e2165f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0x93230463 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xc501f907 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xcc0f24ed libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xe0364302 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf23e5f19 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xf638651f libipw_rx +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xfe5f928a libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/intel/ipw2x00/libipw 0xff61c5d4 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x00fa20a2 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x020ddff2 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0401bfcd il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0587c389 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0af2c76d il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0b4c0b2e il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0bc40fae il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x0e9f15e9 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x17132a66 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x183e8b32 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x18d18429 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1b1feb34 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1cd01df1 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x1eb9884c il_init_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x225da2c0 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2bf7eea6 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2c6bff52 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2d27efc8 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2d748ba8 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3149c1de il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x332ef4a1 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x387f57e5 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x39ab9bfc il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x39d3b537 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3c28f903 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x3ea38b29 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x416bd26a il_debug_level +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x43ecd765 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4830d838 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x495bdf3b il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4966c9aa il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x49dfa66d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4a3fbadc il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x4e1cd92c il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x53e4cf8c il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x567f44f2 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x57eacb2a il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5bf280bb il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x5f30430d il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x601cd1eb il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x60d520a4 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x66688c0c il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x68661f6c il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x68efbd4e il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x70d8ec2b il_leds_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x809ed403 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x80fc8134 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x82f1af0a il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x84cbf934 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8970f9d8 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x89bb121e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x8c6e0369 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x95ce61c2 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x975968fe il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x97c1f1f1 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x984462c0 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9cc714af il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x9e83130f il_apm_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa2737b06 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa3318f64 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa48e625c il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa4ce34fb il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa8fb75a5 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xa92b5962 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaa049727 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaa854f11 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xaabab8e3 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xab00c7ff il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xab730ed7 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xabb7c392 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xabc885b8 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xacd74d69 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xafca0e56 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xafcb3ed9 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb0cd2304 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb22f0180 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb65510a3 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xb8097e2d il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xba478cd8 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbaca7a87 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xbd4706fb il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc4e0bfd7 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xc6c8c96b il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcd4feb1e il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcdbfb4ff il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xcee354a4 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd690c7f4 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd6fef30f _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xd902766d il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xdf50f3df il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe0f6da14 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe44907e2 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe5b592c5 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xedf42d3d il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf408d62b il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf59c02df il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf70a693b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf8de46c2 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf9468145 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf9665a10 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf9cc7c35 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xff105522 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xff1ba45f il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x73d6904e __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe45aec74 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe76e8c18 __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x04ae99b0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0c17efaa hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x0d199f1a hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x116ac6cd hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x13abdd5a hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x177a09ce hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x1ff5cd35 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x22507e6f prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x269e696b hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x2fc1fe7e hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x3387c8ab hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x4e037ec8 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x65f60c1e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x6efe6265 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x6f86d648 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x75934c58 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7b963987 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x7fb75891 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0x87a2bd6a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xbb1f69c7 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc3cde1fb hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xc85a144d hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xcbada5ed hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xd6e92a1a hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xde500c74 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xef45dcc9 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xf6de3439 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/intersil/hostap/hostap 0xfc9df71e hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x0588859d orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x17d3e819 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x3629e1f3 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x502ffd03 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x503e59dd orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x5e8e7af0 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0x795e9fb5 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xa46a8e0c alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xb2c32855 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xca465635 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xcbd851f6 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xda36345d orinoco_up +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xe8dc0aff hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xed0d6b91 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xf770e8bf orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xfa0f696c __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/intersil/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/mediatek/mt76/mt76 0x3a8561e3 mt76_wcid_key_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist 0xcb1bba79 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0257c9ae rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x0a465ee3 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x11559745 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x12b70d75 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x20b64a3d _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2327d91c _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2e7052a6 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x2efd9386 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3abb5923 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x3baeceeb rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x442c5cca rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x468f3762 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x4c302569 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x57066866 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x58c9b58c _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5987b93d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x5d5fa05f rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x6570f74b rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x681903ea rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x71f5b7e5 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x7c025d0e rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x8268844d rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x84a6f833 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x87ac9803 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x9a373dc8 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa29726d1 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa4858e18 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa728d761 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa9bfed37 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc0fd8308 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xc165f76e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd069e40b _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd51ff21d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd598d40a _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd8779eec _rtl92c_store_pwrindex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xd8957c4c rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdfe18b14 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe2684400 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf1981305 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf46b1f85 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xf9deab03 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xfc2de157 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x5d7e24f9 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0x885235c1 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xce430d2f rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_pci 0xe8910ac9 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x72cd712c rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0x9b13df31 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xad691d4d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtl_usb 0xc2c077b9 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x09b567ee rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0a514b60 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0b038e24 channel5g_80m +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x14240a43 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x1b945315 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e489e0d rtl_rx_ampdu_apply +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30a956d7 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x30ad6fc6 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a4136ed efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3c16bc5d rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3d4420e2 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3e490b63 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x52ca23ae rtl_mrate_idx_to_arfr_id +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x54824f58 channel5g +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x5a08710d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x70e73fc6 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x747ae432 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x7d7211c5 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8158a2e3 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x833f072c rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x860b01f2 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x8ea60059 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x96c43960 rtl_collect_scan_list +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9d83ecb2 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa21b6384 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa37f9469 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa3b8435f rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa633c683 efuse_power_switch +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xa7316bf8 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb30ceda7 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc24b78dc rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xcfb1f900 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd6f73f03 rtl_c2hcmd_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe048dd6c rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xebedfe5f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed7c8cf2 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xfa963c31 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8723d 0x94dd7f42 rtw8723d_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822b 0x7f3d05f0 rtw8822b_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_8822c 0x90ff6ece rtw8822c_hw_spec +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x00042b84 rtw_read8_physical_efuse +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x06aa8355 rtw_parse_tbl_txpwr_lmt +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x0984bf5b rtw_unregister_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x11122c9e rtw_bf_remove_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x12d3b9f1 rtw_tx_fill_tx_desc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x142ee7c2 rtw_bf_enable_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x194ca9ea rtw_phy_pwrtrack_avg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x1ad4e64b rtw_phy_get_tx_power_index +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x24299a57 rtw_coex_write_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x2e4be24f rtw_bf_remove_bfee_su +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x31434949 rtw_parse_tbl_bb_pg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x33b3f3c0 rtw_debug_mask +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x38957bd6 rtw_phy_set_tx_power_level +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x41797ee5 rtw_coex_write_scbd +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x440b7589 rtw_phy_rf_power_2_rssi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4baf58c9 rtw_phy_pwrtrack_need_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x4dd31a7e rtw_restore_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x519c8ba9 rtw_rate_size +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x54bd0495 rtw_fw_do_iqk +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x56dcb87a rtw_core_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x577d6883 rtw_phy_cfg_bb +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x579243f7 rtw_phy_config_swing_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x58210e60 rtw_rate_section +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5a886227 check_hw_ready +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x5e0fb60d rtw_bf_enable_bfee_mu +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x63666483 rtw_bf_set_gid_table +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x65de8fa0 rtw_chip_info_setup +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x672f20d8 rtw_fw_c2h_cmd_rx_irqsafe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x6c4d2d1f rtw_phy_write_rf_reg_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7018beec rtw_phy_write_rf_reg_mix +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x73cbd6f4 rtw_rx_stats +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x76243149 rtw_parse_tbl_phy_cond +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7a193859 rtw_coex_read_indirect_reg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x7da31273 rtw_tx_report_enqueue +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x80cb6db3 rtw_phy_pwrtrack_get_pwridx +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8383a235 rtw_power_mode_change +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8c367a8c rtw_bf_cfg_csi_rate +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x8ed1259f rtw_phy_cfg_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9a0e78cb rtw_tx_write_data_h2c_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9f1f94c6 rtw_phy_pwrtrack_get_delta +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0x9fed1ef2 rtw_tx_write_data_rsvd_page_get +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa353e395 rtw_core_deinit +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xa6680be0 rtw_phy_read_rf +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xb6d7c79f rtw_set_channel_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xbeab0210 rtw_bf_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xcd6317f9 rtw_rx_fill_rx_status +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xdf259605 rtw_phy_load_tables +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe15fcbaf rtw_phy_init +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xe1b6a499 rtw_phy_cfg_agc +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf21c873a rtw_phy_cfg_mac +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf34249ad rtw_fw_lps_deep_mode +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf54eeee8 rtw_phy_read_rf_sipi +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xf5a6954a rtw_phy_pwrtrack_thermal_changed +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfb26460b rtw_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xfb56ba6d __rtw_dbg +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_core 0xff1ff1e5 rtw_register_hw +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x28baebd0 rtw_pci_probe +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0x726dc3ed rtw_pm_ops +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xec53cf16 rtw_pci_remove +EXPORT_SYMBOL drivers/net/wireless/realtek/rtw88/rtw88_pci 0xf2b1e082 rtw_pci_shutdown +EXPORT_SYMBOL drivers/net/wireless/rsi/rsi_91x 0x9897a4cd rsi_config_wowlan +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x147348b4 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x831aebe9 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbbe4b53e wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xefac3975 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x285f6fb9 fdp_nci_remove +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0x947418c4 fdp_nci_recv_frame +EXPORT_SYMBOL drivers/nfc/fdp/fdp 0xb9c94b23 fdp_nci_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0x0e8c20af microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xff2521ca microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x18bc5fa5 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x450c5735 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc65f8540 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn533/pn533 0xdf5a0b2f pn533_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x0eb728ea pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x87921d3d pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x2446594b s3fwrn5_recv_frame +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0x6391c11b s3fwrn5_remove +EXPORT_SYMBOL drivers/nfc/s3fwrn5/s3fwrn5 0xd0c4f7b8 s3fwrn5_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0c2e2268 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x15a418d7 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3b0d3e92 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4c364fb9 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7aee5bc8 st_nci_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa03cec69 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa4055963 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xaae25bd8 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe7b1c3dc st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf01eadde ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0fc4e93d st21nfca_hci_loopback_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x16de1d5b st21nfca_vendor_cmds_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x19268d38 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2730e8d0 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x31126216 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x38a8c6ed st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x42c5fb8a st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5b2352a3 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x790ab67e st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x81e9f747 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8dbd705d st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8df1ea99 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x922870a7 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9e9db375 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa6d786ea st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xafe6be43 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf1233f34 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfe3ebe4a st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/ntb/ntb 0x03a9c691 ntb_msi_peer_trigger +EXPORT_SYMBOL drivers/ntb/ntb 0x1121805e ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x1cb65451 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x2fea284c ntb_msg_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3d287a3e ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x487b7a46 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x4a269530 ntb_msi_setup_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x4b0e2b48 ntb_msi_init +EXPORT_SYMBOL drivers/ntb/ntb 0x7f7b74e0 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8681b1e6 ntb_msi_peer_addr +EXPORT_SYMBOL drivers/ntb/ntb 0x889f5994 ntb_msi_clear_mws +EXPORT_SYMBOL drivers/ntb/ntb 0x99bb6a0b ntb_default_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xabb098c2 ntb_default_peer_port_idx +EXPORT_SYMBOL drivers/ntb/ntb 0xaeb86e57 ntbm_msi_request_threaded_irq +EXPORT_SYMBOL drivers/ntb/ntb 0xb63ba0fe ntbm_msi_free_irq +EXPORT_SYMBOL drivers/ntb/ntb 0xb65a74fa ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xef4e2a36 ntb_default_peer_port_number +EXPORT_SYMBOL drivers/ntb/ntb 0xf1af14b3 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xfabfbcbe ntb_default_peer_port_count +EXPORT_SYMBOL drivers/ntb/ntb 0xfdc0973a ntb_unregister_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x12db0b5e nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x15cf62ef nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x032d0731 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x0ccb1af5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x0d783df8 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x1b513f07 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x2537a0c3 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x2678b2a9 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x333b6eb6 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x68505163 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x6a35e49c parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x76dcad51 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x7d70155c parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x83582859 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x92f8a5e2 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x934bf490 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x958c5223 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x95947560 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x973701fd parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xa2f91a5e parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xa51fdaae parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xc36f5487 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xc4924d08 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xce934c37 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xd2f6a5fd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xda8e167c parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xde704371 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xe0b8d0e3 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xe13a97c0 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xebfe8993 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xefdc7bae parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xfafcfd9f parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfffec483 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x6a3ffeed parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xa9009e12 parport_pc_unregister_port +EXPORT_SYMBOL drivers/regulator/rohm-regulator 0xef1c0ea7 rohm_regulator_set_dvs_levels +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x0af20ad1 rpmsg_poll +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x14fc8843 rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x1e3c11d8 rpmsg_sendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x3d8dc833 rpmsg_trysend +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x58071775 rpmsg_unregister_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x5c38e5e0 rpmsg_trysend_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x69d0e403 rpmsg_send +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x7ffe25fe __register_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0x8c0d17b4 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xb3e7b248 rpmsg_find_device +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xba1b0daf unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xbed579d3 rpmsg_send_offchannel +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xee6f636f rpmsg_trysendto +EXPORT_SYMBOL drivers/rpmsg/rpmsg_core 0xf8722dc2 rpmsg_register_device +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x48d9fffc ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x627bb811 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x8473ae20 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb53b3b17 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xce454164 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4c5cee8b fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x68a1863b fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6d242dfe fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6e0af47e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x729d78ee fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x90b34ec6 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa0690846 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaaba5918 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb889f295 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc87c8d5c fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcd81a969 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0bcdb78c fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10179ae8 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x114a6ab5 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2175aaf7 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x286792b8 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x32fd3b13 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x33a55692 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37eec36d fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38416362 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e66fbc1 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x518b68d0 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x54f826cc fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57f16ad4 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5aafa236 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f00cab8 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6089f0ad fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71d81ac1 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x720d6e33 fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72f699b4 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76f70c67 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7854dc04 fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85e01831 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8cd59a1c fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f78bc04 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x95fe85ee fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aa59b5b fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b9dfb2e fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa953ce9b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb480d9e2 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9c352d9 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbcf326b2 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe697df8 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbed0728d fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2acc65a fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5b6f9ec fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5e821c8 fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9c7fc81 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcce1fd79 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd2d73393 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd467923a fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd55f6ee4 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5c987eb fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8d460cb fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda40ca31 fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc25a920 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc47f0a8 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xebe46878 fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec5463a8 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed998936 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xee812eb8 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9d8fbfd fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfcd076fc fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe5cefa8 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x10ab8c06 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xaa8e33cd sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe03c144c sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xf5d3a7a8 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x010f9d7a qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x020d1166 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x373f469a qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43de5910 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x55e58610 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5d082825 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7d546fdc qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9345baf3 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x97d04ec6 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa2ab71ab qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdae844ae qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe6c92c76 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/raid_class 0xbb88912b raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xd602e9d1 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe449a46a raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1a0533ab fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3865f0dc fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3c99f3e6 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x62542f64 fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x69b5afc0 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6cc19d0e fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8eec3dd2 fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x98ea8977 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9db04805 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa3edc02f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb4555af1 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb56c04d4 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbb0e54f9 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd66758c9 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe10c70b4 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe455e1a6 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0957ef83 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x104d19c7 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x24b580b5 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x30e17a8b sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3bd25114 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4401948f sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4b34a7f9 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57b93d39 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d445523 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5dbb34d4 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5fe814e3 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60f3716a sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x67b91653 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75ffbf4a sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b3c4434 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x82f3ba36 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f1f2ee3 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9202ef54 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa811b2fe sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad934615 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xadcb22b2 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbbb029cc sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc43f35a1 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc566d3dd sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc7d222a sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe59bd712 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xecc7a8ee sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfc2ae041 sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfcb774d5 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0be2595e spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x63936ca8 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6e9b9164 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8a8221c4 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xaa9f3241 spi_release_transport +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x3e016152 tc_dwc_g210_config_20_bit +EXPORT_SYMBOL drivers/scsi/ufs/tc-dwc-g210 0x55486e56 tc_dwc_g210_config_40_bit +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x4ab96b4a ufshcd_map_desc_id_to_length +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x76546b2e ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0x7ea78f8a ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xc4c650c1 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xcd7a30d6 ufshcd_get_local_unipro_ver +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xcf8c2520 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xd69084c4 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xf9a0437d ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-core 0xfe98466c ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0x239f273f ufshcd_dwc_link_startup_notify +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd-dwc 0xa4871691 ufshcd_dwc_dme_set_attrs +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x16d1706b sdw_prepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1b2e2ab6 sdw_bus_master_add +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x1deee061 sdw_find_row_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x398cf453 sdw_stream_remove_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x41aab02d sdw_read_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x4cde88bf sdw_disable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x579b72e6 sdw_stream_add_master +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x5b27d207 sdw_handle_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x60e31fbb sdw_find_col_index +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x6d7ef4b1 sdw_stream_remove_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71891d59 sdw_deprepare_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x71f70fb9 sdw_slave_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x75a8db53 sdw_nread +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x8082345f sdw_master_read_prop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0x9e122d79 sdw_alloc_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xacb1f8e4 sdw_write +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xadbf3854 sdw_bus_prep_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xb882c4b5 sdw_read +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xbbec2c2e sdw_enable_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xc4379604 sdw_write_no_pm +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xc758f1e7 sdw_bus_master_delete +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd251b590 sdw_clear_slave_status +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd40199ff sdw_stream_add_slave +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xd6cb6aee sdw_nwrite +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xda5bce09 sdw_release_stream +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xe0664af0 sdw_bus_clk_stop +EXPORT_SYMBOL drivers/soundwire/soundwire-bus 0xf170c3f4 sdw_bus_exit_clk_stop +EXPORT_SYMBOL drivers/ssb/ssb 0x079b9e82 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x0bba4228 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x0e19d7f1 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x1a730216 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x22added0 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x2e3e4f2b ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3328e9a1 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x374a8612 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x45aaf07f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x708f834f ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x8befcc18 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x977717aa ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x990bf2c3 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xa22a7e28 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xcb17f1cb ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd1def9bc ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xdc25966c ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xdeab01cc __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe5b6e0c4 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xf5db6282 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xfd63a9e6 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x04054968 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x13cf7a98 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x15610caf fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1ab5a604 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x24bd736c fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x314de697 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3730bf9a fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x44deb706 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x45d66a19 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4d7ede77 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x57029888 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5dc9c6b6 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x89c6d46f fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9294bc38 fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x932c73a9 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x935fbf15 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x98e048ba fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa2872f9d fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa9e05ec3 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb0ff5e8d fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbf54710c fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcb27f7f5 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xde273c28 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe525c729 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf26bea88 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x5bc8657c adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x0bb36e8f ade7854_probe +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00ef3ad9 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x021f93a1 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0f5f03c5 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x108dad05 dot11d_channel_map +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18979750 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18d4bbeb rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19ef37c1 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1d8f578e rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22166084 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2320c1a5 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x312d8f4b rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x328de605 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3460481b rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a2018b6 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d900f5c rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3dcc50fd rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42fabbb8 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x475496a2 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d1c2b8a rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5485b2c1 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x55e42864 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x568e4fbd rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63c95096 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x643cc69d rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e920ca9 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70919085 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x744c9dcd rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x863c6d26 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87ea3588 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8f73c2fb rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9681926f rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98039578 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99e9a9a4 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fce3db2 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa39b8f45 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa85ee524 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa97a5b7c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb04c86bd rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0895114 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba4f9453 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc1618ccc rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc635325a rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd5bbdbb rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd145971b rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4a59709 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5134d2e dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd618e23c rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5ec4d3f notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7949fd4 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa84c1da rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x032e9013 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x045009f7 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x04db0b5f ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07ad14a4 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a80ee2e ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13691bab ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b8c1c85 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c1b00a7 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d66a0ff ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2768530a to_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f158013 is_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f911bba ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30a36f4b ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3496bd07 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a78209f ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f15699d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f2b88a3 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44c8f3ce ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x49bff029 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x511d6f24 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x58e2735f ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ab97c85 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62328013 dot11d_get_max_tx_pwr_in_dbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6411d6d7 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x649ea9bf HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6bbf0753 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x730527b3 dot11d_reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x750e38f7 dot11d_scan_complete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d8381bb ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f03061e ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f8f9acf notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x800ca5a6 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x915bab7d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93e27f09 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a949743 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c23d54f ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9ee3db38 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaba6c817 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xadfa92a9 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xafd4001e ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9d0907d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba8baa9c dot11d_update_country_ie +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbf50088a ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1902809 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2b89d91 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc4fd610b ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce42191c SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5bb65c7 rtl8192u_dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5e07a21 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc0041fa ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec10ce99 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecc5fb1b ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9285530 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfbf926d4 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfca07031 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06757392 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06c8fdbf iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x167c1df5 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2edaac44 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2f04aa8f iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2f1f87b2 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x30a797c4 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36aef674 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3c738b32 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3f6ee21d iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x459c900a iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51420751 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5276262c __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x59fce24a iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5e79ff53 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x640d2b3c iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x69507b3e iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6c81dc32 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6d5eb375 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x717b9080 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x759afb6d iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x775438e8 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7b65d487 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x898194bc iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8a4e2090 iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8d069856 iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8f4c0adf iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x922f79f1 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9d0503ee iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa133905d iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa13b7b29 iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa3b90be1 iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa50d5f11 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc523e7ac iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc6f7007d iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb218b12 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd8887f2 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd05bf398 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd38484c2 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd958af2d iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe01ad07c iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf075d1a0 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf35cbb78 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf8f8ebc1 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/target_core_mod 0x00f6a6e9 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x050b09e7 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x0707582a transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x09a88cdd transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0bb9e49c transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c214421 target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x0fc7ab2c target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x0fdb2f3c transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x1397eae0 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x16787f14 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x194a0ed0 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x228a0b1d target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x234a469d target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x27581da1 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x27a2da04 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x29f7fd53 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d5e2ad6 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e26777d target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x4064ef75 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x464890c2 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c620b86 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x54c09fdf transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x578da301 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x57b1e54d transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6155666d target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x61a10a0c core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x66eb253b sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x698f185e spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x69a3b33f target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c57b58e target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d0838ed target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fb41ca7 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fd13753 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7262e704 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x747a42dd transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x77795a4d passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x78cbe323 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x835a6d4d core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x847ead2c sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x89da225e spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b60f333 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e0bcfd4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x8ed9c904 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x901c97d2 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x9435f3ef transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x98122afe transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa859527d target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8b013df target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xacb7211e target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb0938926 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1c796ee core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5876f3d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xb82c41bc transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xbfceed9c transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1732f66 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3dbfb32 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xc86b5992 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc3ed954 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xce7a60b2 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf8c6424 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd18f7a66 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9b6e7f6 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xde8d105a passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe04f67ba core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5b86fa6 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe71b0a27 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe954546a core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf78f267a spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9cb632a core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb2a7f91 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc6ffe1c target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe24fcb3 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xff824085 sbc_get_device_type +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x5bd9dfa8 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xed6364df usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x559cce23 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x11786c44 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x417b9f3c usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x500b3b16 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5d6cbba1 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5dc01971 usb_wwan_get_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb3178729 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb65f624e usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbb62c3cb usb_wwan_set_serial_info +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcd116502 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd149c112 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe95255f7 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xea81a311 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf2c5e48d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x48fe532e usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x67563f47 usb_serial_suspend +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x0652d3cb mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x2e459c9f mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x3da6a9f3 mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x4dec5796 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x5247d206 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x5ae22622 mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x7c329829 mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xaf44c338 mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xb2126698 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbd567709 mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xbeb96f5f mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xccce5c30 mdev_get_drvdata +EXPORT_SYMBOL drivers/vhost/vhost 0x12ddc313 vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vhost 0x326a5d66 vhost_chr_poll +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3ecc1eea vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x44d6f41b vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4b6a6e23 vringh_iov_pull_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x4d0529ee vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x56f694fc vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58bc86ac vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5aa88061 vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5e47ee29 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6d95262b vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x80ad788a vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x85665842 vringh_notify_enable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8701069c vringh_abandon_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8bfb5a2b vringh_complete_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8d40c6f4 vringh_getdesc_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0x8e78a074 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x91b5a92c vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xac2d6746 vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xaf01a583 vringh_set_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xbf4f4fbd vringh_need_notify_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xd3a14d7d vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xe544457e vringh_notify_disable_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xee1c7df3 vringh_init_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xf1bbb2ad vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xf6784994 vringh_iov_push_iotlb +EXPORT_SYMBOL drivers/vhost/vringh 0xff6e6a53 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x30ecbeab lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4c0165e6 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc9353f67 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe01e72ae devm_lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x17f3f471 svga_set_default_seq_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1be6dc30 svga_set_textmode_vga_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x2a0e1e77 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6987483f svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x759ac5f5 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x82a64090 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83a41489 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c337c2 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c97d2a svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8ed9cdea svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb0ab2b2e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb6ddb13d svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb76186d1 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd6ec2c44 svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdcc5a013 svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x4446bf9b sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x8d403713 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x1ecc06ed sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x534b6f18 cyber2000fb_disable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x94a78335 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x12f9420b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x836a766e matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x92a2485b g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x022c6465 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x4e6eaff8 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb5163464 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf1944d4c DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xc9d0b5e3 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xb26cbc48 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5db96239 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x7303b704 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x82906c97 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb884574a matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x6ad8d22b matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xc09bc3f5 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x45d7b747 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x572dd1f6 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xa8f518fc matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf66565b2 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xfe0554b4 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0xfe963115 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5de0ba04 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe3e9582f w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xcd7186cb w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdccb6021 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x09a5c989 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x2ad602c0 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x80976918 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf471b92a w1_add_master_device +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x124fb5a0 bd70528_wdt_unlock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0x30c16dbc bd70528_wdt_lock +EXPORT_SYMBOL drivers/watchdog/bd70528_wdt 0xe86081aa bd70528_wdt_set +EXPORT_SYMBOL fs/fscache/fscache 0x14b11fef __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x1859c9f2 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x18713ed2 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x187d4115 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x1b333d78 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1ce441fa fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x25060731 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x2f177afd fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x38364417 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x3e055965 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x44c38d41 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x47c9a46f fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x524441ff __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5263c34e __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x52dce117 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x642178b0 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x65794820 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x78998ba7 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x7e2d0c59 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x7e9b0979 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x88450aa5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x91e99abf fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x99a58ddd __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x9f9d19f0 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa0adf2ee fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xad00d42a fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xb6af2133 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc0ca3713 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xc1a99984 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xc22ddd1a fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xc2bb52e3 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc7ccc64f __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xda8645b3 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xddc47e66 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe01fabda fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xee7f3222 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xeefe64c6 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xf2053264 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf554aa6f __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xf8c336b6 fscache_operation_init +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2f4b48c6 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x80061dfd qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x98237375 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0xaf7fc186 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc0a5402a qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xed6ea629 qtree_entry_unused +EXPORT_SYMBOL lib/crc-itu-t 0x09a34a2b crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xba55d23e crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xe2aae5cc crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x7bcc24fd blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xa3cefaa0 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0x755f4ba3 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x147c3f2e chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x1c679fe2 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x37b34b92 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5b19e187 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xbaf4d923 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xce15a526 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0641307b lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x098d2ed9 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x2d47ac83 lc_committed +EXPORT_SYMBOL lib/lru_cache 0x2f3dcecb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x4522d82a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x4cf5f5a8 lc_is_used +EXPORT_SYMBOL lib/lru_cache 0x5752f31b lc_del +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x7515ef06 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0xb672aa97 lc_create +EXPORT_SYMBOL lib/lru_cache 0xbfbe53d5 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a98c1d lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0xcc979a91 lc_set +EXPORT_SYMBOL lib/lru_cache 0xe53a26f2 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x38f7b6e0 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x93ff008c LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x9cef495b LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0x679e8cc2 objagg_create +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0xefc78e77 raid6_empty_zero_page +EXPORT_SYMBOL net/6lowpan/6lowpan 0x236bee4f lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x68bc4c76 lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x98e673ca lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf8402b01 lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf889c9a0 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xfaa30a71 lowpan_unregister_netdevice +EXPORT_SYMBOL net/802/p8022 0x5e06f9a7 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xc80ccfdd unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0x4787bd9e unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc26a5ec1 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x021cb0eb p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x0fadcbeb p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1084f97c v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x16ef64d2 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x18bab12d p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1ed10be5 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x20523f72 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x22e7034b p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x2bbb298e p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x325fc12b p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x32889a0c p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x3789a7dc p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x37fa9f38 p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x4c538ea2 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x566b5275 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5cd6f5f4 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x6820f3bf p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x6cc3cc43 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x6e46cb0f p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x6f8d746b p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x73e898f2 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x904d62af p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x9057d007 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x939bdb96 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x94313ee5 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x954215ca p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x984c5e73 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0x9b390aa1 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa5255fea p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xa78c4d73 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb0023f63 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xb2d4263a p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xb331edf2 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb6b55293 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xb79f25fd p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0xb8be2d20 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc06560c5 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xc57400ed p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0xce00d612 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xce65245e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd2a5bd17 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xdb4de3d1 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xebefc314 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xf41a88ee p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf5a666a6 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xfb019d3e p9_req_put +EXPORT_SYMBOL net/appletalk/appletalk 0x2806c0cd atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x7704851f atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x9fca495f alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xd0d8864c aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x0cad86f4 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x119490dd atm_charge +EXPORT_SYMBOL net/atm/atm 0x1b125e45 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3449b8cb vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x65ef6525 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x75851b0c atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x7a43ee85 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x8c2bce3d vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa45792e3 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd02bf406 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd52c30af atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xddc518b0 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xdff58c4e atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x17609a29 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x461bad55 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5dc35124 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x7d3023b7 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x7e6fdcf2 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xaa9c197c ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xae24750b ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xb9331f8d ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid +EXPORT_SYMBOL net/bluetooth/bluetooth 0x069071e6 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0718b8b7 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x099cc224 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d8c251b bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bc092a3 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c168853 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c4dee1e hci_set_hw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x214e4265 bt_warn +EXPORT_SYMBOL net/bluetooth/bluetooth 0x26891b20 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b443216 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2bbbe664 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3446652b hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x395e8121 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x39f0491b __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b8e84b0 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3c20675b hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3da2c895 __hci_cmd_send +EXPORT_SYMBOL net/bluetooth/bluetooth 0x41572715 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x489abca7 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c2127ec bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57b05afa hci_recv_diag +EXPORT_SYMBOL net/bluetooth/bluetooth 0x640a3ff2 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6d21964f hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f6204c4 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x703c3c02 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7211451a hci_set_fw_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aad008b bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b5ce5c3 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8c32f1 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7d824edc bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89c06968 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c8a321a hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8d792883 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8faa37d8 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x961f2c39 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9cff6f88 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa25f5e64 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa329f7b7 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0fadc87 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb45c6029 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5cfe105 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc3604497 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1378abc bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3cf0f75 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5c7f1c5 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7613212 bt_err_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcb91ada hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddacccf6 bt_warn_ratelimited +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7763ebd bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee0c4b6c bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf4c35b24 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2bd3ea63 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x471b0900 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x68a23fb2 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5741f75d get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x608cf2dd caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa38d37a5 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd01583cc caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xde899292 caif_connect_client +EXPORT_SYMBOL net/can/can 0x248414ec can_sock_destruct +EXPORT_SYMBOL net/can/can 0x30ebffbd can_proto_register +EXPORT_SYMBOL net/can/can 0x365244c3 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x3673cd4f can_send +EXPORT_SYMBOL net/can/can 0xce869d3b can_rx_register +EXPORT_SYMBOL net/can/can 0xe2cd0da0 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x005c8ea2 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x094cec41 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x101dd246 ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x10793152 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x10b443d8 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x12dd80f4 ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x1546c158 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x17498e6a ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1aa50e83 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x1b930310 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x1c420e15 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x225290a7 ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x28cac880 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x335588a1 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x350e8633 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x35d34b9b ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x384bb098 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x38b2d2ab ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x3ff154a4 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x476bcfea ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x47790a45 ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0x4afa6f25 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x4c16bc63 osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x4c9ca4e2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x4d021bc3 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0x4efebcc1 ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0x50a181df ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x565606ab ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x599adfcf ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5f730d61 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x6293743d osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x6304a3a2 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x63492334 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x67f0f036 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6b662f51 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0x6c04a8cd ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x6ea82a28 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x7a12bd42 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x7c1e23f8 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x86f632a5 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x8a8bd1aa ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x8d225b37 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x8e03c1d8 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0x8f1f117f osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x90b35dbf ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0x983379a5 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0x9907e78f ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0x9b1510b3 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9bd2790e ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa0864f2a osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xa0bc47de ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xa1a7d3c7 ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0xa241b4e8 ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0xa41f4784 ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xa66244ed ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa8bfc1eb ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0xaa586b73 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xaab80b84 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xab1f4850 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xac672c88 ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb020ae65 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xb0865544 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xb0e72adf ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0xb0fc2468 ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0xb3cd7ee4 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xb739fbf9 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xbef0cb53 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xc0eb1d0f ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xc355da50 ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xc3affd0b ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xc6eb015a ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0xc75b8310 ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xc8204a68 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xc8c46513 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xc8e06434 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcb8d9546 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xcf610a67 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd0bc3705 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2373cf2 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0xd25788db ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xd4162db4 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xd478a93f ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd5abb841 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0xd6ac67ab ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xd707e50a ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0xdbf79865 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xde631d3e ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe1d42a86 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe30d509b ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe59e2fb0 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0xe61a68c4 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xe8f03a80 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xe97c43bf ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xeaeaca3c ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0xeb3f17b5 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xeb7d3715 ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0xebed59da ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeec3661a osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xefaf3d78 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xf0df268f ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf456088a ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xf458fe9e ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xfe095ae4 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0xff789c44 ceph_parse_mon_ips +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x2793231d dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x62f5ac6c dccp_syn_ack_timeout +EXPORT_SYMBOL net/dsa/dsa_core 0x6a4a781b dsa_port_vid_del +EXPORT_SYMBOL net/dsa/dsa_core 0xae8beca0 dsa_port_vid_add +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2a301459 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5357df14 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x57f1356c wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb3e5c4f7 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbe04cf75 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf314c9a8 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x838152be __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x9de8d1ee __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0x3a37721f gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8464be5f ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8478d8a8 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x86b0b60e ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x87813f45 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x102597ef arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1484559e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd9841bc0 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x13de8681 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1b614122 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x731edcd0 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xad7917ab ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd745278f ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x49007f1f xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xd9790420 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xe67e75f4 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x176ab877 ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1da54257 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4e15a8b8 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x6b50077d ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xada7355e ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc46873eb ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe90cd058 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf1e9df4a ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfe1ba4b8 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x178385f7 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x37f371cd ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4fa25587 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4fc2d691 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x925af856 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xdffd02fe xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xf8228023 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xaf4785c9 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xb51e3018 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/l2tp/l2tp_core 0x10995331 l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_core 0xb695eda2 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_ip 0xa34f31e1 l2tp_ioctl +EXPORT_SYMBOL net/lapb/lapb 0x04562a60 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x388ad500 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x69da4e72 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xaa347864 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xacfb4cc7 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xc19c6509 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xc9d7c723 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xf6c707ce lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x06e55230 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x354f1183 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7dd8f1a4 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x8be45036 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x96d28fae llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xd5fe904e llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xff5cf7ef llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x02a54463 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x05c9a3e8 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x08710b67 ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x0a7c5cf7 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x0ddc9260 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x0e4c6eeb ieee80211_set_hw_80211_encap +EXPORT_SYMBOL net/mac80211/mac80211 0x1323000c ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x1428ade1 __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x1a92f545 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1c8b3ae9 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x1c8b7920 ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0x1e36c34b ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x20cb1fb4 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x25f3b32c __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x26046771 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x274e5188 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x27aa19b9 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0x2963accc ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x353a95cf ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x37ff2c23 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x38746fc4 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0x3901a010 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x3bf83f42 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x3db5378b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x40ca2e71 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x42738d14 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x42e1e5b1 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x43cf6c88 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x4a5a7407 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4ac7df97 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb38cd9 ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x50a50918 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5583df3d ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x56661b88 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x57978330 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5a11dee7 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x5de7a307 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x62c4b855 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x660ab889 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x674b4706 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x67a4128e ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0x68c6109b ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x70a63870 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x7b6ffdb7 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x7e364f7c ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x81ddfc78 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x82210c3a ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x82302b67 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x826bbf12 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x832cee55 ieee80211_csa_set_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x86f13c45 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x8b59e23d ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8c6891db ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0x8eded9a8 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0x921bc5fa ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x95550416 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x9b48b943 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x9eba506c ieee80211_tx_status_ext +EXPORT_SYMBOL net/mac80211/mac80211 0xa60fd4df ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa81e1423 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xa9865832 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xacc133ce ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xaef2653e ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb097fa12 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xb16840b8 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xbe4d706b ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xbf79f20a ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xc3110735 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0xc4a68e28 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xca635c89 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xca8f881a ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcc8b2e00 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcd0f38e0 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd0b4a434 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xd88f6c1d ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd96153ee ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xe24422c1 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xe49364ce ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xe4c5f047 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe70743a1 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe7546ea1 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xee8546e5 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xeeb5111e ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xefd7058d ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf08e4b2b ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0xf1391f4b ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xf23b71d4 ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0xf5d9ecc4 ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0xf6712b8d ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xfb8b52e7 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0xfb96cced ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xfd5c6c37 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xfe69a0ef ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xff4f760c ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xff9a6a99 ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac802154/mac802154 0x1268f8f7 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x191df54a ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x5bd5a2f6 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x667c363c ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x9c12cb92 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xb0b3d253 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xbb0bca2e ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xd94f9060 ieee802154_free_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0a73c659 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x19184f7d ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x294f199d register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5e0d9a04 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x63bc6b8c ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x66a734fd ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x679729d4 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x68464eaf ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x89620694 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8b1ff8ce ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9c5d76c5 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xab189fa8 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaeac8fc1 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc3f3ff30 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf449a720 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x80350aba nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x53940a1f nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x5a6b7a9a nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x69c52557 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xb7adb8b0 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xf2de3d60 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x39d3c239 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3b6693df xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x7a0158ad xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x7ae1f868 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x974f9e33 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa049674c xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xbb45ebe9 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xc1920600 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xd3fbf5b9 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/nfc/hci/hci 0x105d1da6 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1113a5bc nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x14ddb86b nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x1b00ef4c nfc_llc_stop +EXPORT_SYMBOL net/nfc/hci/hci 0x1e5768d9 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x25a6c14e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x33b19743 nfc_llc_start +EXPORT_SYMBOL net/nfc/hci/hci 0x36c10334 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x556b2cf2 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x5df6e4e6 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5f251381 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x74fe3670 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x76e458fc nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa4350184 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa9f8ac09 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xb08faf8f nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xb4a21b28 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xc487da4b nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xcf2d53cf nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xeabafdd5 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xec42ac2a nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xf389f783 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x124c049d nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x1b93c469 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x2418e3b8 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x3dba6adf nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x53befad7 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x58c00339 nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6414dd76 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x72cf797b nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7a4f8362 nci_nfcc_loopback +EXPORT_SYMBOL net/nfc/nci/nci 0x7cf5d538 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x8cd315c2 nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x90f02a15 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x92600c91 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x94e9ebb1 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x989f8dae nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb34714f0 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0xb6f6d0b9 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbee19022 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xc0ac4334 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xc369e7bf nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xcaf0fa1a nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xcf64f1a4 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xd24c2df8 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xd729262d nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xda9d4b49 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xe3cb1a14 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0xe70bc418 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xeaa27798 nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0xeca3ed4c nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nfc 0x01d480d5 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x02f47722 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x06dab882 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x1250d7d5 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0x16920ae9 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x37ffd5e8 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x4d21d95c nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x5e50e7c8 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x5f7143d8 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x6d2beac6 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x780fbc76 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x8b3b9e2b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x8f490f8b nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xa308239c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xb163f704 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xb69d8847 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xba209077 nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0xc32d021e nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xd266f22f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xd32cd10c nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xd40380c0 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xe4b556a4 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0xe5c77413 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xf6c0e2fc nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xf7651738 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x1acadf82 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x27a303ed nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x938c6f8e nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfb85f598 nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x67d8d517 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x6c8b951a phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x90a497b7 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xd56fcd5c pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xd998dcc9 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe663b658 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xf26d357b pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xf7ff1cd6 phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/rxrpc 0x182d8b8c rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1cd82d02 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x249a67aa rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x28a6f00e rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x53b35375 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x57fcda7c rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6dfec8b7 rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x7cf88988 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0x881f515d rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8efa7bc8 rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0x90d5a43b rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xa09aff4a rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0xbbf558ea rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0xcb5c0dd7 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xcef5fc63 rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0xcef69fe9 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xdf0a5664 rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0xef2b8b55 rxrpc_get_server_data_key +EXPORT_SYMBOL net/sctp/sctp 0xd33e3be0 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x493abbf2 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x70d2dc67 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xee47e7e8 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x38acb7ab xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4d26412a xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x79ef82e8 svc_pool_stats_open +EXPORT_SYMBOL net/tipc/tipc 0x28977042 tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0x527e9ba0 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0x66b8622f tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0x8bf3ccc8 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tls/tls 0x4ca823a6 tls_get_record +EXPORT_SYMBOL net/wimax/wimax 0x2306e8f7 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x4098cd73 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x01a99256 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x01e92253 wiphy_read_of_freq_limits +EXPORT_SYMBOL net/wireless/cfg80211 0x04b5b0d8 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x0590a496 cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x07ff23d4 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x08ad2cb6 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x0f2f8dd6 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x0f37a317 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x0f772584 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x0f8c7bc4 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0fecbf82 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x17717703 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18b53545 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm +EXPORT_SYMBOL net/wireless/cfg80211 0x1f1d1e4b cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x27c31185 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x28446f90 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x290f0343 ieee80211_get_channel_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x2930147c wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x2cff26a1 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x2e9ede02 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x324e67af cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x336d30e8 cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x35243734 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x38fc3f9e cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x3bd8aaa1 ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x3e222360 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x3faa8729 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x3fff2f9c cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x418cc4c9 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x43f5efcf cfg80211_sinfo_alloc_tid_stats +EXPORT_SYMBOL net/wireless/cfg80211 0x4446372c regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x45ba3423 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x4745baa4 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x4a2a930d cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x4bd84d04 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4f3aeaa9 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x55c1f6af ieee80211_data_to_8023_exthdr +EXPORT_SYMBOL net/wireless/cfg80211 0x570a827f cfg80211_inform_bss_frame_data +EXPORT_SYMBOL net/wireless/cfg80211 0x571485f9 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5827c667 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x5a113b8e wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x5b56283c cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x5e349a2e cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x638932e9 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x67ac08c7 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x67d86dcd ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0x68600c40 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x68ac6fd5 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b549e92 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x6f1ee89b cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem +EXPORT_SYMBOL net/wireless/cfg80211 0x7a9a6bb1 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss +EXPORT_SYMBOL net/wireless/cfg80211 0x7cf86ed5 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x81a471d6 cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x8256b443 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x825cb039 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x83061a5e cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x876ef454 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8ef059ad cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func +EXPORT_SYMBOL net/wireless/cfg80211 0x96750903 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x976f62ba cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0x983e9de5 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match +EXPORT_SYMBOL net/wireless/cfg80211 0x9e0bf2b5 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x9ee855f6 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9fde7f6f cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xa2ea3e69 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa3cd54f6 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaa48c5ff cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xad631c87 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xae93c97c cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xaf62be96 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xafe8b001 ieee80211_channel_to_freq_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb5012463 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb546f60c cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0xb5cd727b cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xb668f176 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xb66cdc37 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbac506cf cfg80211_bss_iter +EXPORT_SYMBOL net/wireless/cfg80211 0xbe8c54c9 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xbed80538 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xbee50558 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc0c8006b regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xc116f529 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xc203a0eb cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc51d5cb0 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc892c1eb cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcc0257ed __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited +EXPORT_SYMBOL net/wireless/cfg80211 0xcd4ef782 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xce66406c cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xcfebc086 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xd14d91db cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xd5d18952 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xd8b21e00 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd9fc621c cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0xdb05fc98 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd459e95 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xde121a73 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xdeec1edb cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xe4b43bec cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0xf67da2f0 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xfa340555 cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0xfae8514f cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0xfba1f361 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfc9a44a2 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0xff0c113a ieee80211_bss_get_elem +EXPORT_SYMBOL net/wireless/lib80211 0x03c39200 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2c99cf48 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x309cbf55 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x35962b20 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8824ba0f lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xbf5056c5 lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xffa7575f ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xdcfe5a96 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1e3d9781 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x545bf7a2 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6d98b88a snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf9e1cc6d snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf912f0c8 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x072d978b snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x13a17752 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x2eed26bf snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x4d5ca523 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x592f6e9b snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xddcf2191 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x329354b0 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x145d63e6 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x16060cdf snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x172ce55c snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x18b7122a snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x423ffe31 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x491dc93a snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4f7d7d28 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x53187557 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x534141d1 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x5ae4437d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x5cc559a0 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x5d41a3a8 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x604e187a _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x6b4a1c9f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x6bafd769 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x6e83e58f snd_register_device +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x73076315 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0x76cd49eb snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x776c3183 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x80180582 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x80ee9141 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x81c3c882 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x827a8e7b snd_device_free +EXPORT_SYMBOL sound/core/snd 0x85c4d1a7 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9bbe1a03 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x9df29cb1 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa57f9169 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xa8d9bd82 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xacac6ae8 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xb0e4b66e snd_component_add +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb74d7035 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xb9c90895 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xbbc51f49 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xc21d61f4 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xc3f9f477 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xc40295de snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xc5a6d10b release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xcc6a729f snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0xda6bbdd0 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xddd97b06 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xe289b000 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xe2e21b88 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xe530eba1 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xe5a5f8ff snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xe962b947 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xeb55307f snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xef1ad02c snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xf220c5a6 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xf75070fb snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xf77a9614 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x1b3ccde2 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x08743c3f __snd_pcm_lib_xfer +EXPORT_SYMBOL sound/core/snd-pcm 0x11eba48e snd_pcm_create_iec958_consumer_hw_params +EXPORT_SYMBOL sound/core/snd-pcm 0x12fbd229 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x1422b458 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x15cbce33 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x19c0e3c4 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x286044d7 snd_pcm_set_managed_buffer_all +EXPORT_SYMBOL sound/core/snd-pcm 0x306c209f snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x39228760 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3fdf68b2 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x422e264c snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x51e0198f snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x595f3cba snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x5c3d6873 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x61df7752 snd_pcm_create_iec958_consumer +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69255f54 snd_pcm_hw_limit_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x74d966e0 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x7940a072 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x7b52aa96 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x7e21d72e snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x812b9200 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x82869682 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8592b2b9 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x87c4e233 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x88c5aae1 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x8da507e0 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x91a7c969 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9523e3d0 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x98a89a8b snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x99f0ec77 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x9cea575d snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8d61af4 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xaafa5128 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xac437f7b snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xb04250e7 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xb6fcecaa snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xb7f6be6f snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xb9d3d356 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xbd614c56 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xbfa7e8e0 snd_pcm_set_managed_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc05c8d1e snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd607d159 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe6856a06 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xe75e9579 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xef9817d9 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf6e30604 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xf87a806c snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x007afdf3 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e75059f snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14a0e6c3 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x19344ecf snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1b31ce32 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2a0f379c snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3d1a02a9 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4e74ace5 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x551381d7 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x55d80811 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x661f234b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x77e94ab3 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8f6f602c snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9259236b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9c3353cf snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa97033a7 snd_rawmidi_proceed +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd0b1af9 __snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe0ca4604 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf9048bf1 __snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xff4c6f5f snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/snd-seq-device 0x814e29fc snd_seq_device_new +EXPORT_SYMBOL sound/core/snd-timer 0x0476e571 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x0fa60294 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x44d19c5e snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x6ae0f42a snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7debad71 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x7e0f799e snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x811e54e4 snd_timer_instance_new +EXPORT_SYMBOL sound/core/snd-timer 0x9b2de70f snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xaad6433b snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xd6cafcee snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xe1e63468 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xe4945150 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xe53aa468 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xe9519c26 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xf2e47b5f snd_timer_instance_free +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x566d26d6 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0ef1239d snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x15f356e3 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x96b269a3 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x98aaf608 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa437c5a6 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc2c88200 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd6b08747 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe66622ba snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xec0a2aab snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x10755027 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x17ef2bd4 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x18199774 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2ed06eb1 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x620b0a11 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcb54081f snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdc6c48c7 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeb38a791 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xec1e9abb snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0149c410 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0312afb9 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0cf65bed amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x18abfe72 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1943453a amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x282841be amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2a02e578 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x31352ea2 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3a797783 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5b156d71 cmp_connection_release +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c7ab615 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x63c881cd cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x65eb4c42 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x75da5dda fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a1fa990 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7adc3287 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8c2d2ce4 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93385ce4 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ad08eef amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa00d11f amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xad93c283 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb05bba4f cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2fc6256 snd_fw_schedule_registration +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc7197c28 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc813c755 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe26a1588 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe423aa40 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec3c68c1 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3171501 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3e0b5fd cmp_connection_reserve +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x0c9d3a9f snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xf0ae7e14 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x29b7e083 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x338c6fe8 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x68910f62 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8c008014 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb2682671 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbd17f8ea snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xecf0a429 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xed0de9f1 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2ab0cb24 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x64bcb475 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb562be30 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd4ab6172 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x1b397a81 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf9f23e6f snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-i2c 0x05bc6d41 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5129b8fe snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9203d261 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xad44c42b snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe8338459 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf8c20b04 snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2a116922 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4c7c803f snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x533ce877 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7063f78e snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x752d3b66 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x878bff70 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x89947c18 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x96bbb27c snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdae3cf75 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xedb8d1f6 snd_sbmixer_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x061de001 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x17bf717c snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x370beae2 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3843bfa3 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x38dc0d2a snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a93a983 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x45a65c27 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f9bcbb4 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x567c7fd2 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5e05f0d0 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x81a3f489 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9a9d2ae3 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb8f2e167 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc00504d3 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xca840622 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdee43646 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe090a7ea snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0615dc06 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0890a1e1 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb9d19920 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x011feb52 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0915e403 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1b8b2451 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2d28921f oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x395586b0 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3edf116a oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x430968f5 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4c5121cd oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x52366359 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x555bd4ea oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8f361759 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa2b59e7c oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa6ab9d55 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb14b9771 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe5d725f oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc2c441a5 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6c0708b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc9febbfb oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcec2a8b9 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd21ff104 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeb20f7ed oxygen_write32 +EXPORT_SYMBOL sound/soc/amd/acp_audio_dma 0xea74f232 bt_uart_enable +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x22881b42 pcm3060_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-pcm3060 0x3416bb21 pcm3060_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-rt715 0xed2acb24 hda_to_sdw +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x438077d3 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xa626bfdb tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x054884f2 aic32x4_remove +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0x206ed4a2 aic32x4_regmap_config +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic32x4 0xce0aeaa5 aic32x4_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xcd86d45b snd_soc_alloc_ac97_component +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x0a7c5b18 sof_fw_ready +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x114516c2 snd_sof_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x143ece66 snd_sof_complete +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x17293320 snd_sof_trace_notify_for_error +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x19fa3b3d snd_sof_run_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1b3d5bc8 snd_sof_dsp_update_bits64_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x1d22a5ea sof_ipc_tx_message_no_pm +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2376feab snd_sof_ipc_free +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x23f5b402 snd_sof_fw_unload +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x292d9582 snd_sof_load_topology +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2ab3ad32 sof_mailbox_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x2c3c1cc3 snd_sof_ipc_set_get_comp_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x36e65ec7 snd_sof_fw_parse_ext_data +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x37ff4780 snd_sof_prepare +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3ac24184 snd_sof_pci_update_bits +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x3b47e4f9 sof_mailbox_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4530659c snd_sof_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x47901328 snd_sof_handle_fw_exception +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x4921f318 snd_sof_get_status +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x52bd4111 sof_block_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x57947a88 snd_sof_ipc_msgs_rx +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5c29e9ee sof_machine_unregister +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x5f794197 snd_sof_device_remove +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x64190439 sof_io_write64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6d0f5753 snd_sof_device_probe +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x6d69c54d snd_sof_release_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x779dd965 snd_sof_runtime_resume +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x7d12a183 snd_sof_load_firmware_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x834f7178 snd_sof_free_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x89ac8226 sof_block_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8be3e6ca snd_sof_dsp_only_d0i3_compatible_stream_active +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x8ece3453 sof_machine_check +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x92cc9450 sof_io_read64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x957cda82 snd_sof_dsp_panic +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x98853efe snd_sof_dsp_update_bits_unlocked +EXPORT_SYMBOL sound/soc/sof/snd-sof 0x9de97ea4 snd_sof_init_trace +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xacb164aa snd_sof_ipc_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad391ef7 sof_machine_register +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xad5f825b snd_sof_ipc_stream_posn +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xaf39e5d8 snd_sof_ipc_valid +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xafacbaa6 snd_sof_load_firmware_raw +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb39bfac1 snd_sof_create_page_table +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb83af2b5 snd_sof_load_firmware +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xb902c433 snd_sof_dsp_update_bits_forced +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc6c11889 snd_sof_parse_module_memcpy +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xc8170b5b snd_sof_ipc_reply +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xccff2b91 snd_sof_dsp_update_bits64 +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xcfdc5f98 sof_ipc_tx_message +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xd516f1c6 snd_sof_runtime_suspend +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xdc097acb snd_sof_runtime_idle +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xe87c3584 snd_sof_pcm_period_elapsed +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeac99303 sof_io_write +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xeedd3a40 snd_sof_dsp_mailbox_init +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf25c9c7e sof_io_read +EXPORT_SYMBOL sound/soc/sof/snd-sof 0xf8fd13fa snd_sof_dsp_update_bits +EXPORT_SYMBOL sound/soundcore 0x1a623012 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x6dd11b53 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xc024c3ed register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xc5b22a79 sound_class +EXPORT_SYMBOL sound/soundcore 0xcc04222c register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xb2af19e1 snd_usbmidi_resume +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xbed43a41 snd_usbmidi_suspend +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xe9ccb4ec __snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x000aee60 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x0016cad2 security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x001a4dde security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x001d84ab page_frag_alloc +EXPORT_SYMBOL vmlinux 0x002ea681 freeze_bdev +EXPORT_SYMBOL vmlinux 0x003a7a96 h_ipi_redirect +EXPORT_SYMBOL vmlinux 0x00401cb7 mutex_unlock +EXPORT_SYMBOL vmlinux 0x0047a2b5 xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0x009249fe gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x00a600a2 __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x00aae6c2 seq_lseek +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00ba6914 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x00bd1efb ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x00c2f9b2 config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00d848c0 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0110a5e5 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x0118152c netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0x0129844a __destroy_inode +EXPORT_SYMBOL vmlinux 0x0129c4f8 par_io_data_set +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x0136d576 input_get_timestamp +EXPORT_SYMBOL vmlinux 0x0140c525 gen_pool_create +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x017584e9 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x01921587 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x01982074 xa_set_mark +EXPORT_SYMBOL vmlinux 0x01a889ac dev_remove_pack +EXPORT_SYMBOL vmlinux 0x01ac373b zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01e3e32a d_make_root +EXPORT_SYMBOL vmlinux 0x01e6142a dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x01e80350 netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0x01f7e45b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x01fd8d2a sg_miter_start +EXPORT_SYMBOL vmlinux 0x02005ee5 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x020aa393 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x022296f3 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x0228925f iowrite64_hi_lo +EXPORT_SYMBOL vmlinux 0x0245c633 fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0x024e21fc unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x024ee8f3 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x025aafd0 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x0265d724 import_iovec +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0289dca8 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x028f2f19 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x0293f185 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02b3a92d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x02b48bc7 fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x02b8218e unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x02c065f8 ucc_set_qe_mux_mii_mng +EXPORT_SYMBOL vmlinux 0x02c42f0a sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x02d1b221 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x02d99ff5 fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0x02df50b0 jiffies +EXPORT_SYMBOL vmlinux 0x02e0e855 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x0304a77e ppp_dev_name +EXPORT_SYMBOL vmlinux 0x0308fcde adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x0318e4f3 posix_test_lock +EXPORT_SYMBOL vmlinux 0x03281db3 vme_register_driver +EXPORT_SYMBOL vmlinux 0x03301b1c abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03364810 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0x0337aaa8 inode_init_always +EXPORT_SYMBOL vmlinux 0x034a04ca register_framebuffer +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0379a5a9 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03815f35 ledtrig_disk_activity +EXPORT_SYMBOL vmlinux 0x0385f70c iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x038678e4 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03994fcb abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x03bcd5a6 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x03dc4a75 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0x03dc6b7d vfs_fsync +EXPORT_SYMBOL vmlinux 0x03e59816 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x03e62097 d_instantiate_new +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040a8ccb netdev_alert +EXPORT_SYMBOL vmlinux 0x041253b4 of_cpu_node_to_id +EXPORT_SYMBOL vmlinux 0x04254a8c tcp_release_cb +EXPORT_SYMBOL vmlinux 0x0437c2ff inet6_ioctl +EXPORT_SYMBOL vmlinux 0x043e86f9 ppp_input +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044ce70b pci_iounmap +EXPORT_SYMBOL vmlinux 0x045b4cad sg_miter_skip +EXPORT_SYMBOL vmlinux 0x0461b757 mach_powernv +EXPORT_SYMBOL vmlinux 0x0464dfe8 vio_find_node +EXPORT_SYMBOL vmlinux 0x04707b3b thaw_super +EXPORT_SYMBOL vmlinux 0x047ff9fd key_validate +EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x04889f05 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x049d3872 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x04ab9223 scsi_host_put +EXPORT_SYMBOL vmlinux 0x04adaa66 get_watch_queue +EXPORT_SYMBOL vmlinux 0x04b04d26 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x04b78002 vif_device_init +EXPORT_SYMBOL vmlinux 0x04c24d5c __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f158be cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x04f8c0ce d_prune_aliases +EXPORT_SYMBOL vmlinux 0x04fe0a83 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x05043438 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x0512e2ea path_has_submounts +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05188575 vfs_get_link +EXPORT_SYMBOL vmlinux 0x0518ee89 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x0519b917 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x051c9b89 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x05234544 sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052d0c1c phy_read_mmd +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05355bfe ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0x0536955d __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x0537a459 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x0540a9e9 simple_empty +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x05489180 find_lock_entry +EXPORT_SYMBOL vmlinux 0x05519d30 refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x0558c60f jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x056d360d pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x05768396 inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x057783ff sock_bind_add +EXPORT_SYMBOL vmlinux 0x05a03903 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x05a8f8ff input_set_abs_params +EXPORT_SYMBOL vmlinux 0x05aee050 flush_signals +EXPORT_SYMBOL vmlinux 0x05c2c04a tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x05c81fec generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x05d0486b bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x06073fa8 file_remove_privs +EXPORT_SYMBOL vmlinux 0x060ac106 bdi_put +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062ae01d vme_dma_request +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0640de69 genphy_suspend +EXPORT_SYMBOL vmlinux 0x0641dc18 component_match_add_typed +EXPORT_SYMBOL vmlinux 0x065246b8 frame_vector_create +EXPORT_SYMBOL vmlinux 0x06745fbb __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x0689e114 dput +EXPORT_SYMBOL vmlinux 0x06a86bc1 iowrite16 +EXPORT_SYMBOL vmlinux 0x06b2f8c6 tty_vhangup +EXPORT_SYMBOL vmlinux 0x06b63bcd copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06c9d7d5 pci_release_region +EXPORT_SYMBOL vmlinux 0x06e25d4a phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x06e3b569 pci_clear_master +EXPORT_SYMBOL vmlinux 0x06fa3bed posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0720eda9 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x0721f4c7 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x0729722b fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0732f44d phy_start_cable_test +EXPORT_SYMBOL vmlinux 0x073bef2c fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075baad1 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x076479e7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x0776f1c3 devm_clk_get_optional +EXPORT_SYMBOL vmlinux 0x077e23f5 devm_extcon_unregister_notifier +EXPORT_SYMBOL vmlinux 0x078211a3 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bd15ac __debugger_sstep +EXPORT_SYMBOL vmlinux 0x07be4eea starget_for_each_device +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e3ffdd mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x07e6bd1d mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x07f59e04 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x07fe813d pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x0822b040 param_get_byte +EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point +EXPORT_SYMBOL vmlinux 0x082a3c85 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08531476 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x085ae84d f_setown +EXPORT_SYMBOL vmlinux 0x0873489d uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x0893b543 tcf_block_put +EXPORT_SYMBOL vmlinux 0x08a90edd mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0x08b3ff4c input_register_device +EXPORT_SYMBOL vmlinux 0x08b4dae1 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x08c1d68c vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0x08e102ef skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x08e5502f generic_listxattr +EXPORT_SYMBOL vmlinux 0x08f50e32 sock_create +EXPORT_SYMBOL vmlinux 0x090a1582 d_tmpfile +EXPORT_SYMBOL vmlinux 0x091015b8 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x0915491a tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x09376deb refresh_frequency_limits +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x097aea45 security_sb_remount +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09987417 __d_lookup_done +EXPORT_SYMBOL vmlinux 0x09b6d823 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x09bc7ae0 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf9fe1 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d4bb03 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x0a10deee proc_create_single_data +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a471030 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a56e3bb block_truncate_page +EXPORT_SYMBOL vmlinux 0x0a59e037 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x0a644032 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x0a76a332 dev_set_alias +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a8f7eb2 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x0a93cfee inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0abcb907 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x0accd17f dev_printk +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae5e19e pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x0ae6e6a1 get_disk_and_module +EXPORT_SYMBOL vmlinux 0x0aeffd7b init_net +EXPORT_SYMBOL vmlinux 0x0b014e5e add_to_pipe +EXPORT_SYMBOL vmlinux 0x0b103cb7 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x0b144a9a bdget +EXPORT_SYMBOL vmlinux 0x0b1601eb set_nlink +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b32aa56 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x0b3cdce5 tty_register_device +EXPORT_SYMBOL vmlinux 0x0b4bc87f vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x0b5254cc key_move +EXPORT_SYMBOL vmlinux 0x0b6ae7e6 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8549e9 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x0b8a6338 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x0ba293f0 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x0bb45d03 phy_read_paged +EXPORT_SYMBOL vmlinux 0x0bbffa6c skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd18062 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x0bd3264b vfs_unlink +EXPORT_SYMBOL vmlinux 0x0be0cf11 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x0bec2981 scsi_print_command +EXPORT_SYMBOL vmlinux 0x0bf36885 do_wait_intr +EXPORT_SYMBOL vmlinux 0x0c06745b __frontswap_test +EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0x0c121503 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c3441f2 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x0c5c461f pci_enable_device +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c71b8be dev_uc_sync +EXPORT_SYMBOL vmlinux 0x0c9d1537 dev_uc_del +EXPORT_SYMBOL vmlinux 0x0cb0601a node_states +EXPORT_SYMBOL vmlinux 0x0cb12092 xa_destroy +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false +EXPORT_SYMBOL vmlinux 0x0cd33e2b seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0ce4f617 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x0ce91c6f fs_param_is_path +EXPORT_SYMBOL vmlinux 0x0cfdd5ad vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d08f02d tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x0d1c0ede tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0x0d1f31d3 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x0d26f64b config_item_put +EXPORT_SYMBOL vmlinux 0x0d2ca20f ucc_fast_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0x0d2cadc5 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x0d49b93f __debugger_ipi +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d90fd14 param_get_uint +EXPORT_SYMBOL vmlinux 0x0daf9529 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x0dc52a83 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x0dfe5b49 pci_match_id +EXPORT_SYMBOL vmlinux 0x0e0c390c ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e199692 vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x0e27a2dd ZSTD_initCCtx +EXPORT_SYMBOL vmlinux 0x0e2c43eb mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x0e2d1f5a path_put +EXPORT_SYMBOL vmlinux 0x0e2eb179 ether_setup +EXPORT_SYMBOL vmlinux 0x0e3fa44b fs_param_is_blob +EXPORT_SYMBOL vmlinux 0x0e574cd2 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x0e5a757f of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x0e61a5de neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x0e689843 dst_release_immediate +EXPORT_SYMBOL vmlinux 0x0e68f0ef kmem_cache_create +EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor +EXPORT_SYMBOL vmlinux 0x0e75af61 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x0e79ffbb jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x0e81747f mmc_can_erase +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e91e460 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x0e955171 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x0ea5ea27 bioset_init +EXPORT_SYMBOL vmlinux 0x0ea634cc nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x0eabdb3d ip6_xmit +EXPORT_SYMBOL vmlinux 0x0eb43449 of_get_cpu_state_node +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed99403 param_get_int +EXPORT_SYMBOL vmlinux 0x0ee6d5c2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x0efa5841 xp_can_alloc +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f24fb92 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x0f32cb8a of_get_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x0f33f769 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x0f3c546f __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x0f4f3d40 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x0f5108c5 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x0f5ad093 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f89ce1c dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0x0f8ed230 migrate_vma_setup +EXPORT_SYMBOL vmlinux 0x0f9c19e6 register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd4b188 block_write_begin +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0fec9ec6 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x100b0215 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x102471f1 vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0x1025009a cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x1026c286 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x102936ec qe_clock_source +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x104196b3 srp_rport_get +EXPORT_SYMBOL vmlinux 0x104281ab mmc_start_request +EXPORT_SYMBOL vmlinux 0x1045ab05 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x1052bf8b dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1057a279 bsearch +EXPORT_SYMBOL vmlinux 0x105939ee simple_fill_super +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x107ea5f9 rproc_vq_interrupt +EXPORT_SYMBOL vmlinux 0x10876f3b phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0x109bd0bc vfio_pin_pages +EXPORT_SYMBOL vmlinux 0x10aeb678 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x10b29f2d backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x10bdedcf xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x10c0911a dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10d133f3 send_sig +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10e0f124 __pud_index_size +EXPORT_SYMBOL vmlinux 0x10e28019 sock_no_accept +EXPORT_SYMBOL vmlinux 0x10e5f4c3 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x10ea087d netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111fa7c9 qe_pin_set_dedicated +EXPORT_SYMBOL vmlinux 0x112028fe tcp_ioctl +EXPORT_SYMBOL vmlinux 0x114566f6 bio_split +EXPORT_SYMBOL vmlinux 0x114d3135 bdevname +EXPORT_SYMBOL vmlinux 0x1157013c flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116627c9 ioremap_prot +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1170a124 dqput +EXPORT_SYMBOL vmlinux 0x11742212 rproc_add_subdev +EXPORT_SYMBOL vmlinux 0x117972a8 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0x117df546 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118310d5 __page_symlink +EXPORT_SYMBOL vmlinux 0x11aee01f vme_register_bridge +EXPORT_SYMBOL vmlinux 0x11be0b05 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x11c12940 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x11c91fa1 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11e5c077 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x11e64484 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0x11f3b353 submit_bh +EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fb6638 pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x11ffdfee ucc_slow_stop_tx +EXPORT_SYMBOL vmlinux 0x1200dd38 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x12011b59 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x1220f3ca rproc_free +EXPORT_SYMBOL vmlinux 0x1237b07b iget_failed +EXPORT_SYMBOL vmlinux 0x123fd199 rproc_mem_entry_init +EXPORT_SYMBOL vmlinux 0x125a7e9b simple_rmdir +EXPORT_SYMBOL vmlinux 0x1277c53d filemap_map_pages +EXPORT_SYMBOL vmlinux 0x1278221d ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a607c7 cred_fscmp +EXPORT_SYMBOL vmlinux 0x12b10cf1 dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12caf9e4 dma_find_channel +EXPORT_SYMBOL vmlinux 0x12d798ad ppc_md +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12ec94a2 mmc_retune_pause +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x130900bf gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x131eef45 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x133e2ae3 __skb_checksum +EXPORT_SYMBOL vmlinux 0x133eed38 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0x134c77db agp_free_memory +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x137c7c2c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x13b13a97 xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x13c3b9e6 console_start +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e1b2d5 current_stack_frame +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14388c70 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x1443009a param_get_ulong +EXPORT_SYMBOL vmlinux 0x145dd8f8 mdio_device_create +EXPORT_SYMBOL vmlinux 0x145e0b03 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x14699c67 sk_net_capable +EXPORT_SYMBOL vmlinux 0x146a1561 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x147358a2 simple_getattr +EXPORT_SYMBOL vmlinux 0x1474919d fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x1476b654 get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x14782d99 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x147e0857 gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0x149cd278 tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14a2b413 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0x14b1c29f netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x14c75633 input_free_device +EXPORT_SYMBOL vmlinux 0x14cd853d tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x15012d7f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x150e09ee scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x150e4951 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0x150e5f1e __register_chrdev +EXPORT_SYMBOL vmlinux 0x1517d5fb __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x154bc3f4 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155196cc mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x156f1638 vfs_setpos +EXPORT_SYMBOL vmlinux 0x156f39c2 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x15714c5a inet6_release +EXPORT_SYMBOL vmlinux 0x15885382 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x15afe806 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15cf4dff block_invalidatepage +EXPORT_SYMBOL vmlinux 0x15d215f2 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x15d45ec3 netdev_state_change +EXPORT_SYMBOL vmlinux 0x15dd7f6b __i2c_transfer +EXPORT_SYMBOL vmlinux 0x160475aa ip_frag_next +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x1627085c key_put +EXPORT_SYMBOL vmlinux 0x16286538 iowrite64be_lo_hi +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0x16596ec8 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16850e3e dma_dummy_ops +EXPORT_SYMBOL vmlinux 0x1689672e flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x168a311c inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x1692201e tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x16a61e19 __serio_register_port +EXPORT_SYMBOL vmlinux 0x16ba4d6f bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x16c04286 kernel_listen +EXPORT_SYMBOL vmlinux 0x16c140fe tcp_have_smc +EXPORT_SYMBOL vmlinux 0x16ca73b2 PDE_DATA +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16e9cb06 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x171b1814 dev_add_pack +EXPORT_SYMBOL vmlinux 0x1726f073 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x172e6e48 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x1730f498 proc_remove +EXPORT_SYMBOL vmlinux 0x1736c80b of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x175e9e7a udp_disconnect +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x176f30c7 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x17868c8c request_key_rcu +EXPORT_SYMBOL vmlinux 0x178c4894 qe_upload_firmware +EXPORT_SYMBOL vmlinux 0x17d39dfc setattr_prepare +EXPORT_SYMBOL vmlinux 0x17ef3544 swake_up_one +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18028487 backlight_device_get_by_type +EXPORT_SYMBOL vmlinux 0x18255c0d __init_rwsem +EXPORT_SYMBOL vmlinux 0x182ad430 arp_send +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x183621c6 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x18458dfc sock_i_ino +EXPORT_SYMBOL vmlinux 0x185a116c __xa_insert +EXPORT_SYMBOL vmlinux 0x1876c61c vfs_statfs +EXPORT_SYMBOL vmlinux 0x187884a8 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x1882b586 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x1887259f skb_ext_add +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x189ad495 inode_io_list_del +EXPORT_SYMBOL vmlinux 0x18a9999b file_update_time +EXPORT_SYMBOL vmlinux 0x18b445ac try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x18c35126 km_policy_expired +EXPORT_SYMBOL vmlinux 0x18c8cfab __register_binfmt +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18efd028 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0x18f523e6 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x190f3601 dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0x19567d06 vfio_info_cap_shift +EXPORT_SYMBOL vmlinux 0x19570f7e dev_get_by_name +EXPORT_SYMBOL vmlinux 0x196a5a99 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x196c72da shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b16b34 up_read +EXPORT_SYMBOL vmlinux 0x19b8feef kfree_skb +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d68628 xa_get_mark +EXPORT_SYMBOL vmlinux 0x19eac0c4 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x1a00f023 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x1a04293c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x1a044096 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x1a0563a8 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x1a107de2 ZSTD_compressCCtx +EXPORT_SYMBOL vmlinux 0x1a1a406c dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a1f941e iput +EXPORT_SYMBOL vmlinux 0x1a343cfb update_devfreq +EXPORT_SYMBOL vmlinux 0x1a36ce0c inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x1a53f276 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x1a5611b7 nonseekable_open +EXPORT_SYMBOL vmlinux 0x1a57de25 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x1a949779 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9e4456 vc_cons +EXPORT_SYMBOL vmlinux 0x1aa2b3f1 tlbie_capable +EXPORT_SYMBOL vmlinux 0x1aa85fb6 md_integrity_register +EXPORT_SYMBOL vmlinux 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ad7bac2 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0x1ae5692e d_find_alias +EXPORT_SYMBOL vmlinux 0x1aeddc84 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b12b1e6 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b235223 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x1b3088d3 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x1b356e04 __napi_schedule +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6c41d3 empty_aops +EXPORT_SYMBOL vmlinux 0x1b700d37 put_vaddr_frames +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b855173 of_get_compatible_child +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1ba44b23 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x1baae9d6 dma_fence_init +EXPORT_SYMBOL vmlinux 0x1bb32eb4 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent +EXPORT_SYMBOL vmlinux 0x1be6529d try_lookup_one_len +EXPORT_SYMBOL vmlinux 0x1bfa6bb2 sync_inode +EXPORT_SYMBOL vmlinux 0x1c07b2c5 tty_check_change +EXPORT_SYMBOL vmlinux 0x1c07d11f kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x1c13cf1d cdev_set_parent +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c36fa97 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x1c3c7fdd dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c497fee sget_fc +EXPORT_SYMBOL vmlinux 0x1c4a24f9 fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x1c4ebe62 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x1c500a3a mount_nodev +EXPORT_SYMBOL vmlinux 0x1c5db1ab may_umount_tree +EXPORT_SYMBOL vmlinux 0x1c636713 vm_mmap +EXPORT_SYMBOL vmlinux 0x1c7b7d91 unregister_nls +EXPORT_SYMBOL vmlinux 0x1c7cfdb1 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0x1c855ff1 radix__flush_tlb_page +EXPORT_SYMBOL vmlinux 0x1c9c8058 __SetPageMovable +EXPORT_SYMBOL vmlinux 0x1ca03e04 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x1ca1b1be radix_tree_delete +EXPORT_SYMBOL vmlinux 0x1ca65fa3 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cbcd955 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0x1cd1fc12 kill_pgrp +EXPORT_SYMBOL vmlinux 0x1cde0a51 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d41afcb remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x1d43e78a rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0x1d5f9555 frame_vector_destroy +EXPORT_SYMBOL vmlinux 0x1d669a8b __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1d66b4e5 ucc_fast_dump_regs +EXPORT_SYMBOL vmlinux 0x1d6ad35c padata_alloc_shell +EXPORT_SYMBOL vmlinux 0x1d6f44bb ata_port_printk +EXPORT_SYMBOL vmlinux 0x1d7299eb inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0x1d8edd01 dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x1d9bdbc4 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dcbcba7 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x1dcd0f35 tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddce34f __put_cred +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1dec7dbf jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x1dee073b unregister_netdev +EXPORT_SYMBOL vmlinux 0x1df63e88 ZSTD_compressBegin +EXPORT_SYMBOL vmlinux 0x1df66309 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x1dfa08c9 prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0x1dfddab3 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e1992cc __memset64 +EXPORT_SYMBOL vmlinux 0x1e1b4964 udp_seq_start +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e1e1a6c i2c_del_driver +EXPORT_SYMBOL vmlinux 0x1e220181 dump_emit +EXPORT_SYMBOL vmlinux 0x1e2559ff bio_clone_fast +EXPORT_SYMBOL vmlinux 0x1e62643b skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x1e6341a4 pci_dev_get +EXPORT_SYMBOL vmlinux 0x1e6b9cfa phy_device_register +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7f5f05 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x1e875885 add_wait_queue +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb20858 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x1ed71843 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1eeaf344 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x1f03912b ZSTD_flushStream +EXPORT_SYMBOL vmlinux 0x1f218ce9 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x1f2bf055 tcp_check_req +EXPORT_SYMBOL vmlinux 0x1f337a6d path_is_under +EXPORT_SYMBOL vmlinux 0x1f3fa994 netdev_update_features +EXPORT_SYMBOL vmlinux 0x1f4e0c0a copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x1fa63062 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x1fa8b2f4 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0x1fa99e4b dns_query +EXPORT_SYMBOL vmlinux 0x1fb9d250 sock_wfree +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc7f849 hmm_range_fault +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd2df9a agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x1fdd815d key_payload_reserve +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedcf41 bio_put +EXPORT_SYMBOL vmlinux 0x1feee096 mutex_lock +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2011ae90 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x2017f17d get_tree_keyed +EXPORT_SYMBOL vmlinux 0x201f8d0a rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0x202ac8db dma_free_attrs +EXPORT_SYMBOL vmlinux 0x20462e63 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20745ac5 vga_con +EXPORT_SYMBOL vmlinux 0x20a10e80 setup_new_exec +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b51ac5 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x20b582f4 input_set_timestamp +EXPORT_SYMBOL vmlinux 0x20cbf7e6 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20db7ffd tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0x20fb7cb6 inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x21190ab3 dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0x211f4d45 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc +EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x21537694 down_read_interruptible +EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init +EXPORT_SYMBOL vmlinux 0x215addb9 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x216e81d5 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x21726fd3 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x2172e25e netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0x2173b1b8 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x2176590a is_nd_pfn +EXPORT_SYMBOL vmlinux 0x21867369 xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0x218d6b99 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x21a1ec87 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x21a4d293 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x21b60242 bit_waitqueue +EXPORT_SYMBOL vmlinux 0x21b69f7d send_sig_mceerr +EXPORT_SYMBOL vmlinux 0x21bb62e4 radix__flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x21bbd43b ilookup +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21ca0927 module_layout +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21e21023 napi_complete_done +EXPORT_SYMBOL vmlinux 0x21e5b30b sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x2211861b kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0x2212bba1 vfs_get_fsid +EXPORT_SYMBOL vmlinux 0x221e0b7e mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x2222efd3 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22534679 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x22625189 devm_of_clk_del_provider +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277d0ef sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x227b0f3c sk_ns_capable +EXPORT_SYMBOL vmlinux 0x2284d9a3 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x22854e5d generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x22863370 mmc_wait_for_req_done +EXPORT_SYMBOL vmlinux 0x22907072 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x22908e91 fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x22a09b89 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x22a2cdd8 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x22a54cd1 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c6adf2 napi_get_frags +EXPORT_SYMBOL vmlinux 0x22df7874 seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0x22e737a1 serio_interrupt +EXPORT_SYMBOL vmlinux 0x22fbf116 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x230e941e fb_show_logo +EXPORT_SYMBOL vmlinux 0x23246910 key_alloc +EXPORT_SYMBOL vmlinux 0x2328c0f6 param_ops_byte +EXPORT_SYMBOL vmlinux 0x2337373e fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2348b7b7 neigh_xmit +EXPORT_SYMBOL vmlinux 0x234ce145 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x23619cff jiffies_64 +EXPORT_SYMBOL vmlinux 0x2368dcb1 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x237d1733 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x2382414d from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x2388c29b set_page_dirty +EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0x2391e91a ip_do_fragment +EXPORT_SYMBOL vmlinux 0x23b5b617 mempool_create +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c21309 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x23c80935 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240dcc8c sock_register +EXPORT_SYMBOL vmlinux 0x2419f245 rproc_elf_load_segments +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24231cf8 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x242ee823 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x243442d2 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2457e1c7 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2462f8ab icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x2469047f __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x24699451 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x246f6c1d __inet_hash +EXPORT_SYMBOL vmlinux 0x2471c4ec __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24870a6c devm_clk_release_clkdev +EXPORT_SYMBOL vmlinux 0x24ce2023 validate_sp +EXPORT_SYMBOL vmlinux 0x24d06c4b phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24dfaf10 follow_down +EXPORT_SYMBOL vmlinux 0x24e66924 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x24f82a9e sock_pfree +EXPORT_SYMBOL vmlinux 0x24fe3cc2 begin_new_exec +EXPORT_SYMBOL vmlinux 0x250242d7 dquot_file_open +EXPORT_SYMBOL vmlinux 0x2504ee89 security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0x251fcc1f ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x2524ba17 ZSTD_getCParams +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x253c9cc2 kobject_put +EXPORT_SYMBOL vmlinux 0x25469f60 eeh_dev_release +EXPORT_SYMBOL vmlinux 0x254c9287 ioremap +EXPORT_SYMBOL vmlinux 0x256a0a49 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25753c3e blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x2578b4f9 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x257c083b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25825b86 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x25861675 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x258aa956 notify_change +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x25912f7f qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x25988607 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x259d0c8c udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x25b67337 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x25b99929 pci_free_irq +EXPORT_SYMBOL vmlinux 0x25c420e1 param_get_bool +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ee2879 __d_drop +EXPORT_SYMBOL vmlinux 0x25f731f6 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x260b430d rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x2616f0a0 inc_nlink +EXPORT_SYMBOL vmlinux 0x261fbcb7 skb_queue_head +EXPORT_SYMBOL vmlinux 0x2628c52d radix__flush_tlb_range +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c3152 bcmp +EXPORT_SYMBOL vmlinux 0x2644f708 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x266b8832 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x267c0c5f abort_creds +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x26a017c2 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0x26ba787c genphy_read_status +EXPORT_SYMBOL vmlinux 0x26c74891 mr_table_alloc +EXPORT_SYMBOL vmlinux 0x26d24cb8 vm_event_states +EXPORT_SYMBOL vmlinux 0x26ddba8e d_exact_alias +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26f8f0b8 iowrite16be +EXPORT_SYMBOL vmlinux 0x27012e68 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x27125d23 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x2726d8b8 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x2755bea5 rtc_add_groups +EXPORT_SYMBOL vmlinux 0x275a2569 dev_set_group +EXPORT_SYMBOL vmlinux 0x275dfee4 ucc_slow_free +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x277ecee1 down_write +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27944bb0 dev_load +EXPORT_SYMBOL vmlinux 0x279be432 ZSTD_copyCCtx +EXPORT_SYMBOL vmlinux 0x27aee792 input_register_handle +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c74610 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x27cb3237 d_add +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27d1c0a9 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x27d558b1 configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0x27e200ab vme_slot_num +EXPORT_SYMBOL vmlinux 0x27e2e488 md_check_recovery +EXPORT_SYMBOL vmlinux 0x280ae827 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x280c2e8e pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282e8827 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x2833f577 ZSTD_compressBegin_advanced +EXPORT_SYMBOL vmlinux 0x2837e148 dev_mc_init +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x28779edd iptun_encaps +EXPORT_SYMBOL vmlinux 0x287c90f1 pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0x288817cb agp_bind_memory +EXPORT_SYMBOL vmlinux 0x288da5f5 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0x28c2ad6f eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x28e11362 vme_register_error_handler +EXPORT_SYMBOL vmlinux 0x28f38c35 tty_throttle +EXPORT_SYMBOL vmlinux 0x28fc7256 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x2914ea2d ZSTD_compressBlock +EXPORT_SYMBOL vmlinux 0x291c4fda pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x2933c082 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x293cbf1e ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x29559eb2 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0x2956fb4c rtnl_unicast +EXPORT_SYMBOL vmlinux 0x29754ea7 unpin_user_pages +EXPORT_SYMBOL vmlinux 0x297aa422 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0x2983a4cd mod_node_page_state +EXPORT_SYMBOL vmlinux 0x2984356f dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x2996ff27 security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0x2999eb83 neigh_table_init +EXPORT_SYMBOL vmlinux 0x29be9cf9 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x29d1a768 xattr_full_name +EXPORT_SYMBOL vmlinux 0x29e1ad3d netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x29e96d1c __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x29f6a715 watchdog_register_governor +EXPORT_SYMBOL vmlinux 0x29fdf1c6 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0x2a22dd97 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3d7f18 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x2a461d21 fb_find_mode +EXPORT_SYMBOL vmlinux 0x2a636867 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x2a688bef inet_recvmsg +EXPORT_SYMBOL vmlinux 0x2a7c8a8c mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get +EXPORT_SYMBOL vmlinux 0x2ab0eeca seq_path +EXPORT_SYMBOL vmlinux 0x2ac28d5f devm_nvmem_unregister +EXPORT_SYMBOL vmlinux 0x2ac69f7d of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x2ace81a7 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x2ae515b9 blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0x2af71b21 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x2b05ed22 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2bac1ec6 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x2baccefc nd_pfn_validate +EXPORT_SYMBOL vmlinux 0x2bbea7bb jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2bf508ce mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0x2bf668eb uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x2c044bff inet_shutdown +EXPORT_SYMBOL vmlinux 0x2c0e261f fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c355d9f devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x2c40842f devm_devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c81ba83 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x2ca95490 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x2cc875fd xmon +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2ce2c4e0 cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x2ce40b7e vfs_get_tree +EXPORT_SYMBOL vmlinux 0x2cf14b15 ucc_fast_disable +EXPORT_SYMBOL vmlinux 0x2cf29b55 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfeb6aa vm_map_pages +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d489332 dev_driver_string +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d53b229 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x2d54726a page_symlink +EXPORT_SYMBOL vmlinux 0x2d7ec8a1 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2d99f913 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x2d9c6400 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x2db2d286 get_tz_trend +EXPORT_SYMBOL vmlinux 0x2db3bc61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x2dbcb0f3 backlight_device_get_by_name +EXPORT_SYMBOL vmlinux 0x2dc4e156 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x2dcdea36 chip_to_vas_id +EXPORT_SYMBOL vmlinux 0x2dce19f1 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x2df400e1 devfreq_update_interval +EXPORT_SYMBOL vmlinux 0x2df4ef45 inet_offloads +EXPORT_SYMBOL vmlinux 0x2dfa56e2 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x2dfd663e sock_sendmsg +EXPORT_SYMBOL vmlinux 0x2dfd940e __block_write_begin +EXPORT_SYMBOL vmlinux 0x2e1511ed super_setup_bdi +EXPORT_SYMBOL vmlinux 0x2e180192 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2e107a phy_find_first +EXPORT_SYMBOL vmlinux 0x2e4d1b83 seq_file_path +EXPORT_SYMBOL vmlinux 0x2e51fe66 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x2e55c659 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e7b83c5 param_set_ulong +EXPORT_SYMBOL vmlinux 0x2e7fd26f nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x2e892bc4 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0x2eaf3cbb bio_advance +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2edbeaf7 hex2bin +EXPORT_SYMBOL vmlinux 0x2edc8827 fb_get_mode +EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2f000c44 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f05b501 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x2f17e69b inode_add_bytes +EXPORT_SYMBOL vmlinux 0x2f19ce44 eth_header +EXPORT_SYMBOL vmlinux 0x2f1c1779 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f3f460a param_set_ushort +EXPORT_SYMBOL vmlinux 0x2f70b7e3 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x2f74f93f get_acl +EXPORT_SYMBOL vmlinux 0x2f761e21 phy_ethtool_ksettings_set +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2f77d7a3 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x2f79f2d5 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x2f7c5910 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x2f8264bd gtm_get_timer16 +EXPORT_SYMBOL vmlinux 0x2f95fc0b kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x2fa8dc2b mmc_gpio_set_cd_wake +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc78fcc xa_erase +EXPORT_SYMBOL vmlinux 0x2fc7ef44 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x2fd6df09 mmc_is_req_done +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fff9ae8 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x302bbe40 from_kuid +EXPORT_SYMBOL vmlinux 0x305cb223 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x305fcab9 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x306ef6be of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x30711bb5 file_fdatawait_range +EXPORT_SYMBOL vmlinux 0x3095b22c scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309e1122 cdev_device_del +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30af45a1 ZSTD_initCStream +EXPORT_SYMBOL vmlinux 0x30afb88e make_kuid +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30cfb12d jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x30eca092 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x30fed7b4 of_phy_attach +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31154f2f mmc_command_done +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x314a84e1 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x31572c5a dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x315992df param_ops_bint +EXPORT_SYMBOL vmlinux 0x315ee652 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x3179f7eb ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x317f818a param_set_int +EXPORT_SYMBOL vmlinux 0x31807707 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x3185f021 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0x318a402f lookup_one_len +EXPORT_SYMBOL vmlinux 0x318c1922 vme_init_bridge +EXPORT_SYMBOL vmlinux 0x318cafa4 filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x3197c3f1 __tcf_idr_release +EXPORT_SYMBOL vmlinux 0x31aece02 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x31b600ae filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x31b88f58 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x31d12dea ip6_frag_next +EXPORT_SYMBOL vmlinux 0x31fa8815 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x3217c3a3 __memset32 +EXPORT_SYMBOL vmlinux 0x322e794c fb_set_suspend +EXPORT_SYMBOL vmlinux 0x32394d4b qe_issue_cmd +EXPORT_SYMBOL vmlinux 0x3242ee23 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x324c4784 clk_add_alias +EXPORT_SYMBOL vmlinux 0x3252a410 phy_driver_register +EXPORT_SYMBOL vmlinux 0x327c84bf vme_lm_attach +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x32a46757 nobh_writepage +EXPORT_SYMBOL vmlinux 0x32aeaad8 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x32b0fa60 noop_llseek +EXPORT_SYMBOL vmlinux 0x32b7d5b2 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x32bf5cf3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x32c22433 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32d6da17 phy_print_status +EXPORT_SYMBOL vmlinux 0x32ee90af inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x32f916e1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x3303fe3b simple_transaction_release +EXPORT_SYMBOL vmlinux 0x333ba675 xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0x333c15b4 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3367366f kill_anon_super +EXPORT_SYMBOL vmlinux 0x336f3229 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x33730db9 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0x3377cd2f netdev_printk +EXPORT_SYMBOL vmlinux 0x337a3330 seq_printf +EXPORT_SYMBOL vmlinux 0x337cda61 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x339c27a1 rproc_of_resm_mem_entry_init +EXPORT_SYMBOL vmlinux 0x33a48cf0 update_region +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c83b1e compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x33ef191d of_device_is_available +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f619ca page_pool_create +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x341772e8 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0x342bf728 seq_dentry +EXPORT_SYMBOL vmlinux 0x3448a04c da903x_query_status +EXPORT_SYMBOL vmlinux 0x345c8916 strict_msr_control +EXPORT_SYMBOL vmlinux 0x345f31ec backlight_force_update +EXPORT_SYMBOL vmlinux 0x345fac57 path_get +EXPORT_SYMBOL vmlinux 0x346894cd kernel_connect +EXPORT_SYMBOL vmlinux 0x346c157e _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x348dae59 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b2bf71 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x34ca9e6a of_phy_deregister_fixed_link +EXPORT_SYMBOL vmlinux 0x34e112a9 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0x34e1b60a vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x34e3f9c8 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x34f3437e devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x350cd016 read_cache_page +EXPORT_SYMBOL vmlinux 0x351066b7 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x35154961 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35257e6c epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0x352bb201 xa_store +EXPORT_SYMBOL vmlinux 0x3534ba58 dquot_commit +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x35445dea component_match_add_release +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3573e0d0 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x35763bd5 free_buffer_head +EXPORT_SYMBOL vmlinux 0x35793e4b finish_swait +EXPORT_SYMBOL vmlinux 0x359bd0b8 md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b4d9ae qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35d6f8d6 scmd_printk +EXPORT_SYMBOL vmlinux 0x35dbabc3 touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x35dcc14f iget_locked +EXPORT_SYMBOL vmlinux 0x35f5631f tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0x35f7e7cd blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x36022418 __bforget +EXPORT_SYMBOL vmlinux 0x3613be1a param_ops_int +EXPORT_SYMBOL vmlinux 0x3628c0f1 netif_rx +EXPORT_SYMBOL vmlinux 0x362ef408 _copy_from_user +EXPORT_SYMBOL vmlinux 0x362fa7ba udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x3635160d __register_nls +EXPORT_SYMBOL vmlinux 0x3651477c configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x3659e24a netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x366cfc60 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x3678f173 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x367d24b0 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x3684a0d3 sk_alloc +EXPORT_SYMBOL vmlinux 0x368a69ef mmc_can_gpio_ro +EXPORT_SYMBOL vmlinux 0x36b25a78 tcf_classify +EXPORT_SYMBOL vmlinux 0x36b859f2 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x36bf59c6 neigh_destroy +EXPORT_SYMBOL vmlinux 0x36c262b3 param_set_charp +EXPORT_SYMBOL vmlinux 0x36c7d2fe dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x36e50a77 mdiobus_write +EXPORT_SYMBOL vmlinux 0x36eaafe2 __cpu_active_mask +EXPORT_SYMBOL vmlinux 0x36ee66ff pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x36fda5bf mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x371e7041 dentry_open +EXPORT_SYMBOL vmlinux 0x371e7f3a ZSTD_initCDict +EXPORT_SYMBOL vmlinux 0x372a95cf inet_listen +EXPORT_SYMBOL vmlinux 0x37309141 unix_get_socket +EXPORT_SYMBOL vmlinux 0x37336445 netdev_change_features +EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37519524 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x3767c78b xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x3781a741 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b89bf8 flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37ef48db inet_gro_receive +EXPORT_SYMBOL vmlinux 0x37f4af83 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0x38026cb6 complete +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38271794 kill_block_super +EXPORT_SYMBOL vmlinux 0x3857f34d tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x385d1c9a generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388a24c7 pci_select_bars +EXPORT_SYMBOL vmlinux 0x389134e9 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x389bdcd8 wake_up_process +EXPORT_SYMBOL vmlinux 0x38a4a0ef devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x38a597ee bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38c2d146 __break_lease +EXPORT_SYMBOL vmlinux 0x38d72237 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x38e00631 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x38e6eba3 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x38f63c2b tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x391de354 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x39227ea8 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x396bddc2 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x396f6f4a pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x39799d86 __skb_ext_del +EXPORT_SYMBOL vmlinux 0x3985901c kthread_create_worker +EXPORT_SYMBOL vmlinux 0x39897b40 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x399e999d padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x39ae4546 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bfae6a km_state_notify +EXPORT_SYMBOL vmlinux 0x39c1d9e1 vm_map_ram +EXPORT_SYMBOL vmlinux 0x39d67aa9 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x39dcf851 vfs_create +EXPORT_SYMBOL vmlinux 0x39f87f1a __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x39f9e18c dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x39fd057c mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x3a0a8ea4 give_up_console +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a229363 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a32b784 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x3a459a77 mach_pseries +EXPORT_SYMBOL vmlinux 0x3a4ea9af simple_setattr +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a5900b0 get_phy_device +EXPORT_SYMBOL vmlinux 0x3a649e1e __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0x3a7412d1 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x3a805435 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x3a875620 __xa_store +EXPORT_SYMBOL vmlinux 0x3a929e5b param_get_charp +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3ad14716 scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0x3ad53080 kthread_blkcg +EXPORT_SYMBOL vmlinux 0x3ae109a7 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x3b148a87 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x3b1507a2 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x3b1a27ef _copy_to_iter +EXPORT_SYMBOL vmlinux 0x3b1c46e0 filemap_check_errors +EXPORT_SYMBOL vmlinux 0x3b1d8067 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x3b3a7ef8 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x3b3d390f iterate_fd +EXPORT_SYMBOL vmlinux 0x3b42124e agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6d4343 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3b878d0f of_iomap +EXPORT_SYMBOL vmlinux 0x3b9d41e4 dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0x3ba6f6eb kernel_write +EXPORT_SYMBOL vmlinux 0x3ba79986 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x3bbed9a5 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x3bde326e dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3bec4571 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x3bfb09fa gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x3bfd1cde xp_dma_unmap +EXPORT_SYMBOL vmlinux 0x3bfd86b5 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x3c0f0123 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c2dc8ca mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x3c3215c4 qe_immr +EXPORT_SYMBOL vmlinux 0x3c3b8345 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c457453 ioread64_lo_hi +EXPORT_SYMBOL vmlinux 0x3c6919ee devm_extcon_unregister_notifier_all +EXPORT_SYMBOL vmlinux 0x3c6dcdb3 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x3c79900b pnv_pci_get_npu_dev +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c96e202 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x3c9f4bc7 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x3cb37157 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0x3cb4bb00 phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0x3cbe2b43 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d042e1b migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x3d296153 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x3d3804c1 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5c8064 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x3d769dca insert_inode_locked +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3dc2c571 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcc3ae2 param_set_bint +EXPORT_SYMBOL vmlinux 0x3dfb86b9 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x3dfc8791 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e046dd2 scsi_print_result +EXPORT_SYMBOL vmlinux 0x3e087be0 __vio_register_driver +EXPORT_SYMBOL vmlinux 0x3e0df3ae ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3e2918a5 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e7b090c fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x3e821a89 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x3e866331 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3e8e829a mipi_dsi_device_register_full +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e98aa3b i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3ea682fe netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x3eac80a8 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x3eae1912 vga_put +EXPORT_SYMBOL vmlinux 0x3eb60a2c configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x3ec2690b may_umount +EXPORT_SYMBOL vmlinux 0x3eeb5a58 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x3efb4172 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x3efd3660 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0890de generic_file_llseek +EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f13b226 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x3f2c52ff mipi_dsi_turn_on_peripheral +EXPORT_SYMBOL vmlinux 0x3f377cc0 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x3f3c2244 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f529261 of_match_device +EXPORT_SYMBOL vmlinux 0x3f60ea23 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x3f7d378c down_write_killable +EXPORT_SYMBOL vmlinux 0x3f84b47d xfrm_register_km +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3fb7377a scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3fda0c6f irq_set_chip +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe9a447 __netif_schedule +EXPORT_SYMBOL vmlinux 0x400245a5 inode_init_once +EXPORT_SYMBOL vmlinux 0x40195a3e neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x403d6de7 sync_filesystem +EXPORT_SYMBOL vmlinux 0x4045090b simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x4078144d kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x4080372f kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409ef099 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40b20ada mmc_get_card +EXPORT_SYMBOL vmlinux 0x40b61a55 pci_find_resource +EXPORT_SYMBOL vmlinux 0x40bcfd24 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x40c01704 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x40d986f7 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x40dc41fc phy_sfp_probe +EXPORT_SYMBOL vmlinux 0x40dc6b2b nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0x40f1e5ab dev_addr_flush +EXPORT_SYMBOL vmlinux 0x411991b0 of_device_alloc +EXPORT_SYMBOL vmlinux 0x412ea812 vme_irq_request +EXPORT_SYMBOL vmlinux 0x4130a7da ppp_channel_index +EXPORT_SYMBOL vmlinux 0x413de712 pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0x4145d341 netif_napi_add +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414984dd dev_add_offload +EXPORT_SYMBOL vmlinux 0x4166ce58 to_nd_pfn +EXPORT_SYMBOL vmlinux 0x4172a4e0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x417c101b netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x41809ddf kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x41823e84 locks_delete_block +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a473a fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x4192ab12 unlock_page +EXPORT_SYMBOL vmlinux 0x41990414 input_get_keycode +EXPORT_SYMBOL vmlinux 0x41ae718a __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x41e9e85e serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x41e9fd1b audit_log_start +EXPORT_SYMBOL vmlinux 0x42079530 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x4209afcc ps2_init +EXPORT_SYMBOL vmlinux 0x420fa3d3 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4214a12a gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422de881 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x423dc597 keyring_alloc +EXPORT_SYMBOL vmlinux 0x4242f403 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426251fe tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0x42680815 pci_get_device +EXPORT_SYMBOL vmlinux 0x42685675 skb_seq_read +EXPORT_SYMBOL vmlinux 0x426d165d mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0x427028be mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x427c9193 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x429cc3db __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x42af85fb mdiobus_scan +EXPORT_SYMBOL vmlinux 0x42ee8cec seq_vprintf +EXPORT_SYMBOL vmlinux 0x42f030bd dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x42f86420 revalidate_disk +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ecc96 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL vmlinux 0x4310721d netif_carrier_off +EXPORT_SYMBOL vmlinux 0x431f8c28 unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x43504a14 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43535dab d_obtain_root +EXPORT_SYMBOL vmlinux 0x435a12ef tcp_prot +EXPORT_SYMBOL vmlinux 0x436a14d1 generic_setlease +EXPORT_SYMBOL vmlinux 0x436d9fce devm_nvmem_cell_put +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43879adc udp_gro_complete +EXPORT_SYMBOL vmlinux 0x43a489c9 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x43a4938f vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x43a58776 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x43b00c00 md_write_end +EXPORT_SYMBOL vmlinux 0x43b7d297 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x43c82edf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x43f1fb3a dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x43fcbb66 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x43fefbe3 arp_create +EXPORT_SYMBOL vmlinux 0x4400e5b0 phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0x44012785 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x441e33bf elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x443e6e31 tty_do_resize +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x444b6a47 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x444c1372 km_policy_notify +EXPORT_SYMBOL vmlinux 0x44545b02 __sk_receive_skb +EXPORT_SYMBOL vmlinux 0x44617403 con_is_bound +EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq +EXPORT_SYMBOL vmlinux 0x446b6ce3 mdio_driver_unregister +EXPORT_SYMBOL vmlinux 0x447d8853 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x44824c7b km_report +EXPORT_SYMBOL vmlinux 0x4488bc8a prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x44967c11 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44b60884 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x44d92019 page_pool_destroy +EXPORT_SYMBOL vmlinux 0x44db7f21 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x44e03d3a gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44feb517 param_get_short +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x450bd37e __pmd_index_size +EXPORT_SYMBOL vmlinux 0x450d640b dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x4513e23a rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0x4519b75e unlock_new_inode +EXPORT_SYMBOL vmlinux 0x452287df gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454187d7 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x4543531b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x45436b70 pci_release_regions +EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45899fa8 override_creds +EXPORT_SYMBOL vmlinux 0x45a226f0 devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x45a977b6 current_in_userns +EXPORT_SYMBOL vmlinux 0x45ad3582 flow_block_cb_free +EXPORT_SYMBOL vmlinux 0x45c1c6ee scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x45c3f6d8 ipmr_rule_default +EXPORT_SYMBOL vmlinux 0x45da3d9d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x46001d34 percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461b01ff sock_wake_async +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462a02fe dquot_transfer +EXPORT_SYMBOL vmlinux 0x46369ea0 skb_dump +EXPORT_SYMBOL vmlinux 0x46444dff netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466f70cf input_setup_polling +EXPORT_SYMBOL vmlinux 0x4674ec42 __pgd_val_bits +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46826c5b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x46911fab pci_iomap +EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d19f7d xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x46d7dda3 filp_close +EXPORT_SYMBOL vmlinux 0x46f9f2b5 xa_find_after +EXPORT_SYMBOL vmlinux 0x471a76f0 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x471d07cc kill_fasync +EXPORT_SYMBOL vmlinux 0x474b2951 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x475a91d4 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x475a9dbe vme_irq_free +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47adb499 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x47b657fe devm_of_iomap +EXPORT_SYMBOL vmlinux 0x47bc06d5 file_path +EXPORT_SYMBOL vmlinux 0x47bdd3d6 giveup_altivec +EXPORT_SYMBOL vmlinux 0x47c48af3 store_fp_state +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47c951ae vlan_vid_del +EXPORT_SYMBOL vmlinux 0x47e35218 put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0x47e89eb0 sock_gettstamp +EXPORT_SYMBOL vmlinux 0x47ed64ab mdio_device_free +EXPORT_SYMBOL vmlinux 0x47f63e0f inet_bind +EXPORT_SYMBOL vmlinux 0x4805958f ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x48151d32 sock_create_kern +EXPORT_SYMBOL vmlinux 0x4815b58a scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x48285709 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x48380028 ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4848cfb1 phy_mipi_dphy_get_default_config +EXPORT_SYMBOL vmlinux 0x484f247c md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x48526ff2 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x4854d735 __put_page +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486c17db __xa_erase +EXPORT_SYMBOL vmlinux 0x486e5a7f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x487dfdd7 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x48864776 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0x488d5a85 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x489a1077 vga_client_register +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x489ff1c5 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48b9eb47 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x48bd7554 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48caa4d4 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x48dc545c posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x48e1e982 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x48e457d6 devfreq_register_notifier +EXPORT_SYMBOL vmlinux 0x48eb96f5 vfio_unregister_notifier +EXPORT_SYMBOL vmlinux 0x48fc2d87 vme_slave_request +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4919287f input_grab_device +EXPORT_SYMBOL vmlinux 0x4920cf94 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x492ab731 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x492ba83a phy_write_paged +EXPORT_SYMBOL vmlinux 0x4955f5f0 file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x495fe4c4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x49616259 bio_uninit +EXPORT_SYMBOL vmlinux 0x496c68ef udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x49735662 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x4999c077 ppp_input_error +EXPORT_SYMBOL vmlinux 0x499bfc6d __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum +EXPORT_SYMBOL vmlinux 0x49ba8d02 giveup_fpu +EXPORT_SYMBOL vmlinux 0x49ea3f70 touch_buffer +EXPORT_SYMBOL vmlinux 0x49ed86a0 ZSTD_endStream +EXPORT_SYMBOL vmlinux 0x4a151f53 input_allocate_device +EXPORT_SYMBOL vmlinux 0x4a1f24a9 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x4a2f25d7 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x4a3465ee write_one_page +EXPORT_SYMBOL vmlinux 0x4a3e333a tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x4a453f53 iowrite32 +EXPORT_SYMBOL vmlinux 0x4a49e4b8 vme_bus_num +EXPORT_SYMBOL vmlinux 0x4a4bcc81 inet_frags_init +EXPORT_SYMBOL vmlinux 0x4a55c8ea ioremap_wc +EXPORT_SYMBOL vmlinux 0x4a56685d get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x4a578e85 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x4a5c717d md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4a7748fc nvm_submit_io +EXPORT_SYMBOL vmlinux 0x4a7c8f58 unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x4a952eaf __breadahead +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4aa072f6 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4ad337ce del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift +EXPORT_SYMBOL vmlinux 0x4aeb47a9 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b117a94 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x4b272f8a page_readlink +EXPORT_SYMBOL vmlinux 0x4b2c0682 param_ops_string +EXPORT_SYMBOL vmlinux 0x4b41457d fget_raw +EXPORT_SYMBOL vmlinux 0x4b4274f6 kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b62975f mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4b743ec5 __frontswap_store +EXPORT_SYMBOL vmlinux 0x4b82ac12 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x4b861087 netdev_info +EXPORT_SYMBOL vmlinux 0x4b8966fa max8998_write_reg +EXPORT_SYMBOL vmlinux 0x4b8d5ce1 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x4b8eeb42 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x4bafa094 generic_file_open +EXPORT_SYMBOL vmlinux 0x4bbf3366 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name +EXPORT_SYMBOL vmlinux 0x4c01bdb4 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c32e99a blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c455679 elv_rb_find +EXPORT_SYMBOL vmlinux 0x4c4b50c7 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x4c557677 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x4c78a63f __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x4c7cd2fe scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x4c829ac4 udp_seq_stop +EXPORT_SYMBOL vmlinux 0x4c84678c cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x4c9ca944 cpumask_next +EXPORT_SYMBOL vmlinux 0x4cb1dc89 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event +EXPORT_SYMBOL vmlinux 0x4cbb0fde mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0x4cbba8d1 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x4cc3a71b neigh_for_each +EXPORT_SYMBOL vmlinux 0x4cc6534b cpu_l2_cache_map +EXPORT_SYMBOL vmlinux 0x4ccf1f9a blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x4ce19248 vme_bus_error_handler +EXPORT_SYMBOL vmlinux 0x4cedaff1 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x4d06f78a default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4d1586a7 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x4d27027c ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x4d32a5a2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x4d3c7f7b pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x4d5ba891 kern_path +EXPORT_SYMBOL vmlinux 0x4d65cbd5 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x4d6ae35f rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4d6fd319 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x4d7cc7ef xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x4d8e9751 bdi_register +EXPORT_SYMBOL vmlinux 0x4d9120db pcie_print_link_status +EXPORT_SYMBOL vmlinux 0x4d924f20 memremap +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dd7cc2c security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x4ddf9117 dquot_drop +EXPORT_SYMBOL vmlinux 0x4de0c95f deactivate_super +EXPORT_SYMBOL vmlinux 0x4de6aa07 __neigh_create +EXPORT_SYMBOL vmlinux 0x4de7fc2a ip_options_compile +EXPORT_SYMBOL vmlinux 0x4de9beac file_ns_capable +EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4e0c5ddc elv_rb_del +EXPORT_SYMBOL vmlinux 0x4e11c879 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4e1702f3 keyring_clear +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0x4e5597c8 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6bef07 mmc_cqe_post_req +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e749978 cont_write_begin +EXPORT_SYMBOL vmlinux 0x4e7dbb93 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4e8eaf83 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x4ea42f61 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4eb7ae3d hvc_get_chars +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ebe3d69 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4eea7d04 simple_write_begin +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4efabf22 register_key_type +EXPORT_SYMBOL vmlinux 0x4f06ee2c kernel_bind +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f3dc3a9 freeze_super +EXPORT_SYMBOL vmlinux 0x4f474e97 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL vmlinux 0x4f586bfe dump_page +EXPORT_SYMBOL vmlinux 0x4f66e613 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x4f8726c9 bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0x4f91c0b2 pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x4fa65563 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x4fa97823 neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x4fba5666 dev_pm_opp_unregister_notifier +EXPORT_SYMBOL vmlinux 0x4fc08c63 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x4fc97115 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe139f2 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x4ff1555a d_delete +EXPORT_SYMBOL vmlinux 0x50085cc5 md_flush_request +EXPORT_SYMBOL vmlinux 0x5009407e sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x5026e7d9 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x503a0778 ethtool_notify +EXPORT_SYMBOL vmlinux 0x503bb2f3 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x503ec202 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506adf7d fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x50741e5e ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x5079c9d7 __pte_index_size +EXPORT_SYMBOL vmlinux 0x5081dc96 proc_create_seq_private +EXPORT_SYMBOL vmlinux 0x50938a40 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x509409d5 xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0x509ff697 phy_attach +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50a7c015 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50bfbc46 dev_mc_del +EXPORT_SYMBOL vmlinux 0x50cdc5d7 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x50d400e6 scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x5117ea77 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5152b518 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x51546d70 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x5158388d alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x515cd9bd phy_loopback +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x5164db2e neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5165f599 pci_irq_vector +EXPORT_SYMBOL vmlinux 0x516ba41b msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0x517dd473 key_link +EXPORT_SYMBOL vmlinux 0x519b1a0b blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x51a8080d remove_arg_zero +EXPORT_SYMBOL vmlinux 0x51b146fe task_work_add +EXPORT_SYMBOL vmlinux 0x51c7c6c7 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x51cbfe96 vfs_get_super +EXPORT_SYMBOL vmlinux 0x51dc6181 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x51e40daa generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x5211f85f dst_dev_put +EXPORT_SYMBOL vmlinux 0x523b6632 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x5250b987 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x52735e53 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a0920f pmem_should_map_pages +EXPORT_SYMBOL vmlinux 0x52b26618 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x52c41926 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x52c6460b mmc_can_gpio_cd +EXPORT_SYMBOL vmlinux 0x52d01040 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52e28a85 netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x52e7e82f scsi_remove_host +EXPORT_SYMBOL vmlinux 0x52ecbc75 crc_ccitt +EXPORT_SYMBOL vmlinux 0x52fa8f3f finalize_exec +EXPORT_SYMBOL vmlinux 0x53085627 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5308e350 __vmalloc_start +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x532ff7c2 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x533206b5 sort_r +EXPORT_SYMBOL vmlinux 0x533c05d3 devm_release_resource +EXPORT_SYMBOL vmlinux 0x53963148 netdev_warn +EXPORT_SYMBOL vmlinux 0x53a42e31 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x53a48751 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x53acb1e3 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x53aff7f0 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x53f082a2 security_path_unlink +EXPORT_SYMBOL vmlinux 0x53f8f8b9 bd_start_claiming +EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x540d7d64 find_vma +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54206e2f inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542698e8 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x542d91d1 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0x54389eb7 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x548d74c8 tcp_poll +EXPORT_SYMBOL vmlinux 0x54a0ed34 init_on_alloc +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aa1daa bprm_change_interp +EXPORT_SYMBOL vmlinux 0x54abcce6 netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0x54ba87f3 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x54d76408 pps_event +EXPORT_SYMBOL vmlinux 0x54e3d5fd __pmd_frag_nr +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5524fa8c __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x55304a01 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x554abbdc key_reject_and_link +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x554c9ab1 fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0x55686530 __arch_clear_user +EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x5570c5e3 sget +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x558b851e ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x5590674f cfb_fillrect +EXPORT_SYMBOL vmlinux 0x559ab72f of_root +EXPORT_SYMBOL vmlinux 0x559d07b9 nvm_unregister +EXPORT_SYMBOL vmlinux 0x55ace7c2 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x55b106f0 tcf_idr_create +EXPORT_SYMBOL vmlinux 0x55b6fdd3 proc_mkdir +EXPORT_SYMBOL vmlinux 0x55be1b98 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x55c5aa5d d_invalidate +EXPORT_SYMBOL vmlinux 0x55c62d8f dev_get_flags +EXPORT_SYMBOL vmlinux 0x55c6de7f proc_create_data +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55e4aa08 lookup_bdev +EXPORT_SYMBOL vmlinux 0x55e5ee64 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x55f35fc8 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x560cc472 input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0x5610fe57 mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x562e9776 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56466e42 ZSTD_CStreamInSize +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x5651b2d0 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x565af885 pci_get_class +EXPORT_SYMBOL vmlinux 0x565b5324 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x565c2c94 vfs_ioctl +EXPORT_SYMBOL vmlinux 0x565f80ec md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x56643abc rproc_elf_get_boot_addr +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x568d732e devm_of_find_backlight +EXPORT_SYMBOL vmlinux 0x56a32296 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0x56aa7c6f iov_iter_pipe +EXPORT_SYMBOL vmlinux 0x56ac2a7c _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f30d80 __alloc_disk_node +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x56fad7bd should_remove_suid +EXPORT_SYMBOL vmlinux 0x5723bd86 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x572ae748 dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57518f3a is_bad_inode +EXPORT_SYMBOL vmlinux 0x5754a545 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x5755873f generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x576029c3 migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576e11a5 fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0x5775955a generic_block_bmap +EXPORT_SYMBOL vmlinux 0x577c2bc5 tty_write_room +EXPORT_SYMBOL vmlinux 0x577d2300 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57b445e2 bio_copy_data +EXPORT_SYMBOL vmlinux 0x57c922b7 d_move +EXPORT_SYMBOL vmlinux 0x57cab248 __scm_send +EXPORT_SYMBOL vmlinux 0x57eec13a config_item_set_name +EXPORT_SYMBOL vmlinux 0x57f38cdc qe_get_firmware_info +EXPORT_SYMBOL vmlinux 0x581108ac kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583f99ed blk_rq_init +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58689a76 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x587b892e qe_get_num_of_risc +EXPORT_SYMBOL vmlinux 0x588eee4c xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x58a99a8f to_ndd +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58adb05c get_vaddr_frames +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c4d872 mr_dump +EXPORT_SYMBOL vmlinux 0x58c5e187 qdisc_put +EXPORT_SYMBOL vmlinux 0x58c8098c dev_addr_init +EXPORT_SYMBOL vmlinux 0x58c97dc1 _dev_notice +EXPORT_SYMBOL vmlinux 0x58ccd067 skb_append +EXPORT_SYMBOL vmlinux 0x58d11396 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x58e1de0d padata_free +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x58e690da call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x5912bb06 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x591352a7 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x591ef143 account_page_redirty +EXPORT_SYMBOL vmlinux 0x59349642 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x593faa09 set_device_ro +EXPORT_SYMBOL vmlinux 0x59421809 dm_register_target +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594f1ae2 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0x594f69b4 skb_dequeue +EXPORT_SYMBOL vmlinux 0x594f9100 rproc_del +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x595a1198 cdev_add +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x59802d9c udp6_csum_init +EXPORT_SYMBOL vmlinux 0x59849b65 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x5988f4f3 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x59894fa7 down_write_trylock +EXPORT_SYMBOL vmlinux 0x59986d14 framebuffer_release +EXPORT_SYMBOL vmlinux 0x599b4888 qe_setbrg +EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node +EXPORT_SYMBOL vmlinux 0x59a0c0c4 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x59a2f0ee packing +EXPORT_SYMBOL vmlinux 0x59b3f0ce mutex_trylock +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59bb1524 nd_dax_probe +EXPORT_SYMBOL vmlinux 0x59cc6d08 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x59de9f6a rt_dst_clone +EXPORT_SYMBOL vmlinux 0x59f94c74 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x59fc8c01 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a032030 gtm_put_timer16 +EXPORT_SYMBOL vmlinux 0x5a088923 up_write +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a2b8461 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x5a382433 param_set_byte +EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5a49ccb6 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a59dbe2 tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x5a85cec6 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9503b1 compat_import_iovec +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5acddfe0 clear_nlink +EXPORT_SYMBOL vmlinux 0x5b002914 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x5b03d7bd rproc_coredump_add_custom_segment +EXPORT_SYMBOL vmlinux 0x5b13dc92 _dev_warn +EXPORT_SYMBOL vmlinux 0x5b2659b3 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x5b3297e9 sock_no_listen +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b506f02 sock_set_priority +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5becf8 pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x5b760467 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x5b7fa48e truncate_setsize +EXPORT_SYMBOL vmlinux 0x5b9218b8 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5b9867f2 netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x5bb89fbf __nd_driver_register +EXPORT_SYMBOL vmlinux 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5c00d810 ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5c0567d6 sk_dst_check +EXPORT_SYMBOL vmlinux 0x5c065ae2 nd_device_register +EXPORT_SYMBOL vmlinux 0x5c0cdd8c tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x5c227d92 tty_set_operations +EXPORT_SYMBOL vmlinux 0x5c2d943c configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3ddaf7 init_task +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c462d5e agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x5c4810ce nobh_write_begin +EXPORT_SYMBOL vmlinux 0x5c4d3c6c request_firmware +EXPORT_SYMBOL vmlinux 0x5c5c80dc seg6_push_hmac +EXPORT_SYMBOL vmlinux 0x5c82c7a4 tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0x5c9ce062 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x5cac5739 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x5cbbd92e __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x5cbd6adb vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x5cc53a64 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x5cd1db21 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x5cde8dd1 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x5ce162c0 register_filesystem +EXPORT_SYMBOL vmlinux 0x5ce9ab90 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x5ceb752d nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x5cf2162b ptp_cancel_worker_sync +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf91cab flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x5cfb4c45 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0x5d0c7307 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x5d2636be __invalidate_device +EXPORT_SYMBOL vmlinux 0x5d27d802 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x5d3830d2 dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d5325fc udp_poll +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d8221fd xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5d8b004c tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x5d8dfc41 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x5da3a214 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x5dbaeb9d jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x5dc878e8 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x5de12747 dst_alloc +EXPORT_SYMBOL vmlinux 0x5de63a61 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x5df49be6 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x5e04c3f9 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x5e05dfae zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e1ae8fb _dev_crit +EXPORT_SYMBOL vmlinux 0x5e1cb16a put_watch_queue +EXPORT_SYMBOL vmlinux 0x5e289a35 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5e333bc4 register_cdrom +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e433882 uart_resume_port +EXPORT_SYMBOL vmlinux 0x5e5d6556 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x5e8c4912 stop_tty +EXPORT_SYMBOL vmlinux 0x5e9317f1 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9a8364 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed040cd mipi_dsi_dcs_set_tear_scanline +EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ed97273 user_path_create +EXPORT_SYMBOL vmlinux 0x5ed98b16 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5ee3cc83 dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0x5eff99a8 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5f014700 agp_enable +EXPORT_SYMBOL vmlinux 0x5f027688 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1c6712 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x5f4ad5b2 unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x5f50332c security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x5f5668e3 dump_align +EXPORT_SYMBOL vmlinux 0x5f5acdd4 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x5f5b4fcb mdio_device_remove +EXPORT_SYMBOL vmlinux 0x5f6b889c rproc_va_to_pa +EXPORT_SYMBOL vmlinux 0x5f70a557 register_shrinker +EXPORT_SYMBOL vmlinux 0x5f7b68e6 bmap +EXPORT_SYMBOL vmlinux 0x5f7d0abb md_register_thread +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f932153 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x5fa961aa ptp_find_pin +EXPORT_SYMBOL vmlinux 0x5fb516f8 xa_find +EXPORT_SYMBOL vmlinux 0x5fc65fda forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x5fcda7bd ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600c484d dev_set_mtu +EXPORT_SYMBOL vmlinux 0x6016531a gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6023a837 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x60324782 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603d5f3e request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x603d7415 phy_init_hw +EXPORT_SYMBOL vmlinux 0x603f4741 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x6050bd22 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x6055bcb3 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x605c415c bio_free_pages +EXPORT_SYMBOL vmlinux 0x60626a96 kset_register +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x609b2853 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609eb2c0 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60cec2a4 simple_open +EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get +EXPORT_SYMBOL vmlinux 0x60dc4378 phy_init_eee +EXPORT_SYMBOL vmlinux 0x61149424 genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x611c8add nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x6121bd54 dql_init +EXPORT_SYMBOL vmlinux 0x6125be99 make_kprojid +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613ba6b7 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x615375c2 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x61577694 ZSTD_compressEnd +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x615b7ea9 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x615ff998 inet_add_offload +EXPORT_SYMBOL vmlinux 0x6160b320 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6179b973 rproc_elf_sanity_check +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x618c797f submit_bio_wait +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61ad5f6e config_group_init_type_name +EXPORT_SYMBOL vmlinux 0x61ad803a mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x61ad9487 dquot_disable +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bc505b blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x61eb2798 xp_dma_map +EXPORT_SYMBOL vmlinux 0x61ed610e __free_pages +EXPORT_SYMBOL vmlinux 0x61ef66c1 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x61efbe87 md_write_start +EXPORT_SYMBOL vmlinux 0x61f82589 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x620129ca blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621a4824 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6233affd bdev_read_only +EXPORT_SYMBOL vmlinux 0x6242f59f nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0x62652225 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x626ab5a1 flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62792022 vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0x6280f5d8 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628f1b0c inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x629091b0 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x6294019e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x62ab28c3 agp_create_memory +EXPORT_SYMBOL vmlinux 0x62bad830 iov_iter_discard +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62c49fa3 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x62d61629 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x630fbd3c pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0x6312b2bd qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6319928e inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x6351e974 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x635379ee fqdir_init +EXPORT_SYMBOL vmlinux 0x63541632 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x635f3023 put_ipc_ns +EXPORT_SYMBOL vmlinux 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL vmlinux 0x636dce68 bdi_alloc +EXPORT_SYMBOL vmlinux 0x636e29cf agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x6372ad57 security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x63732b27 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6383ec47 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63bffd8e neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d0c4a2 textsearch_register +EXPORT_SYMBOL vmlinux 0x63d8e39f unlock_buffer +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f1d81b tcp_sendpage +EXPORT_SYMBOL vmlinux 0x63f563ae sk_capable +EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss +EXPORT_SYMBOL vmlinux 0x640ee666 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64234fb9 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x643d0d19 __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x644917e9 __quota_error +EXPORT_SYMBOL vmlinux 0x646aaa19 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x647256da decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x6472ca42 locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x64831cb8 xa_extract +EXPORT_SYMBOL vmlinux 0x648a7cde inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64bf4e46 ip_defrag +EXPORT_SYMBOL vmlinux 0x64c191d1 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x64d23467 refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x64e646b2 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x64fbcdbe input_reset_device +EXPORT_SYMBOL vmlinux 0x650cb973 of_graph_get_port_parent +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653866ba find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x653f5829 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65439c1c pskb_extract +EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x655520a6 xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf +EXPORT_SYMBOL vmlinux 0x656ec463 of_dev_put +EXPORT_SYMBOL vmlinux 0x657b9994 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x657f3398 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c95bb5 napi_disable +EXPORT_SYMBOL vmlinux 0x65ca2c70 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dadf95 from_kgid +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65fa291c ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x66019a40 put_cmsg +EXPORT_SYMBOL vmlinux 0x6608fdaa eth_gro_receive +EXPORT_SYMBOL vmlinux 0x6620f877 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0x662a92d2 elv_rb_add +EXPORT_SYMBOL vmlinux 0x663bf497 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x6640e3b2 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x6643ab9a rproc_coredump_add_segment +EXPORT_SYMBOL vmlinux 0x666863dc par_io_config_pin +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x66916208 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x6691c86f seq_read_iter +EXPORT_SYMBOL vmlinux 0x66a13615 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2b1e2 vfs_getattr +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66e9fdc0 dma_supported +EXPORT_SYMBOL vmlinux 0x66ecc6f8 mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0x66ef7a72 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x671b28cd ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x672e4ac6 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x6732b889 pci_request_irq +EXPORT_SYMBOL vmlinux 0x673cb8e5 reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67412d2f ucc_slow_enable +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x674de079 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x6758ba19 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x675f6207 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x677c107a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x677ef217 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x67975427 phy_stop +EXPORT_SYMBOL vmlinux 0x67975e3d dump_skip +EXPORT_SYMBOL vmlinux 0x6798d67b csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x67a1ac34 inet6_bind +EXPORT_SYMBOL vmlinux 0x67b0ca64 registered_fb +EXPORT_SYMBOL vmlinux 0x67b4d751 vio_register_device_node +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67ccf2a1 devm_memremap +EXPORT_SYMBOL vmlinux 0x67d14d13 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x67e11612 ptp_find_pin_unlocked +EXPORT_SYMBOL vmlinux 0x67f3d52d prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x67f4562b jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0x67f468e7 bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0x67f79b80 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x67f9f0df d_alloc_parallel +EXPORT_SYMBOL vmlinux 0x67fc472c gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0x6805b0b3 pci_resize_resource +EXPORT_SYMBOL vmlinux 0x680d22f2 d_alloc_anon +EXPORT_SYMBOL vmlinux 0x681a421c mpage_readahead +EXPORT_SYMBOL vmlinux 0x68366782 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x683d229b param_ops_short +EXPORT_SYMBOL vmlinux 0x684320f4 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x684bf856 padata_free_shell +EXPORT_SYMBOL vmlinux 0x685687b0 idr_replace +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x68651dec simple_get_link +EXPORT_SYMBOL vmlinux 0x686818bb down_read +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689f4e90 lock_rename +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68ac750d devm_iounmap +EXPORT_SYMBOL vmlinux 0x68b89b82 get_user_pages +EXPORT_SYMBOL vmlinux 0x68cafa96 security_binder_transaction +EXPORT_SYMBOL vmlinux 0x68cc8fd2 kern_unmount_array +EXPORT_SYMBOL vmlinux 0x68e39a50 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x68eebb91 tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x69008d02 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x6900b5e4 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x6909440b __pgd_table_size +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x694d3f85 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0x69585523 __ksize +EXPORT_SYMBOL vmlinux 0x695a594e handle_edge_irq +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6986b731 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x698b7af3 read_cache_pages +EXPORT_SYMBOL vmlinux 0x698df264 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bb8a67 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x69d5bfd1 dma_fence_array_create +EXPORT_SYMBOL vmlinux 0x69d8a649 __tracepoint_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le +EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window +EXPORT_SYMBOL vmlinux 0x69f9d0ee dm_kobject_release +EXPORT_SYMBOL vmlinux 0x69fa2a7e get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a071f9c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6a129206 set_binfmt +EXPORT_SYMBOL vmlinux 0x6a2dd6e2 agp_bridge +EXPORT_SYMBOL vmlinux 0x6a2f8586 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x6a30d10b __mdiobus_write +EXPORT_SYMBOL vmlinux 0x6a5b7156 km_query +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a9a4307 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6aabb131 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6abff51f of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x6ac498df tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x6ac7c74c fc_mount +EXPORT_SYMBOL vmlinux 0x6ade6454 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x6ae2ae36 mdio_driver_register +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af8aaf8 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0x6b00a747 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b45820e udp_skb_destructor +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b89618f uart_get_divisor +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6b95486f has_capability +EXPORT_SYMBOL vmlinux 0x6bab9d59 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc609e8 skb_copy_header +EXPORT_SYMBOL vmlinux 0x6bcde848 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x6bd72c7e set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x6bde4f0f dev_get_stats +EXPORT_SYMBOL vmlinux 0x6c002aa5 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x6c28be5a vfio_info_add_capability +EXPORT_SYMBOL vmlinux 0x6c2a20a8 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x6c2faa2a arp_tbl +EXPORT_SYMBOL vmlinux 0x6c35ec65 __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c632ea9 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x6c7f1c34 migrate_page_states +EXPORT_SYMBOL vmlinux 0x6c8e3cc6 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x6c94154f __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cca1957 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x6cca57f9 vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x6cce71d4 config_group_find_item +EXPORT_SYMBOL vmlinux 0x6cd8030c lease_get_mtime +EXPORT_SYMBOL vmlinux 0x6ce60c5a ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0x6cf0d67d qe_get_num_of_snums +EXPORT_SYMBOL vmlinux 0x6d11b57f mmc_can_discard +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d38974a blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x6d48d8a8 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x6d58f69e agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0x6d769e28 is_nd_dax +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d7e7c36 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6da3400d __serio_register_driver +EXPORT_SYMBOL vmlinux 0x6dbd09ef page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x6dcdec64 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e04cd65 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x6e0c69e3 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x6e0ed9b5 radix__local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x6e2366b7 devm_clk_put +EXPORT_SYMBOL vmlinux 0x6e286604 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0x6e2a768e rfkill_alloc +EXPORT_SYMBOL vmlinux 0x6e2aba16 pci_get_slot +EXPORT_SYMBOL vmlinux 0x6e3522d0 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x6e3c4ee2 devm_extcon_register_notifier_all +EXPORT_SYMBOL vmlinux 0x6e539355 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run +EXPORT_SYMBOL vmlinux 0x6e64e9f6 phy_device_free +EXPORT_SYMBOL vmlinux 0x6e7045c3 tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7257a2 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x6e95898d dcb_getapp +EXPORT_SYMBOL vmlinux 0x6e9a448d __pte_frag_nr +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6edab7c7 radix__flush_all_mm +EXPORT_SYMBOL vmlinux 0x6ee1c0f7 vfs_fadvise +EXPORT_SYMBOL vmlinux 0x6ee63f54 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0x6ef00d04 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x6f08b1c6 mempool_exit +EXPORT_SYMBOL vmlinux 0x6f108f8c input_unregister_handler +EXPORT_SYMBOL vmlinux 0x6f1283ee idr_for_each +EXPORT_SYMBOL vmlinux 0x6f215f3f genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x6f2e899b phy_support_asym_pause +EXPORT_SYMBOL vmlinux 0x6f4a372e of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x6f547f35 generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0x6f6abfb9 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x6f72a5db nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f93d7f2 send_sig_info +EXPORT_SYMBOL vmlinux 0x6fa23ca5 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6faa7519 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fb98c0f tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcfd903 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x701c74cf __pagevec_release +EXPORT_SYMBOL vmlinux 0x70291607 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x7032bf35 clear_user_page +EXPORT_SYMBOL vmlinux 0x704115b3 qe_usb_clock_set +EXPORT_SYMBOL vmlinux 0x704599b2 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70589c04 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x707ede5a twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x709abafc scsi_partsize +EXPORT_SYMBOL vmlinux 0x70ae98e0 edac_mc_find +EXPORT_SYMBOL vmlinux 0x70cc998f xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x70ced1b5 key_unlink +EXPORT_SYMBOL vmlinux 0x70d8c63b gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x710929e9 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x710d25a3 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x7122a0f7 i2c_transfer_buffer_flags +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7131bf58 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x71380ac8 cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0x7138a800 inet_accept +EXPORT_SYMBOL vmlinux 0x71464a17 mdio_find_bus +EXPORT_SYMBOL vmlinux 0x71660688 page_pool_release_page +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717e2495 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x717fb2d6 tty_devnum +EXPORT_SYMBOL vmlinux 0x7184305f dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7184610e copy_string_kernel +EXPORT_SYMBOL vmlinux 0x718938be ipv4_specific +EXPORT_SYMBOL vmlinux 0x718c9771 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x7199f832 cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x719b831c skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x719ebe2b jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b68751 misc_deregister +EXPORT_SYMBOL vmlinux 0x71b73f79 dquot_resume +EXPORT_SYMBOL vmlinux 0x71e21ed1 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x71e31d2b pagecache_write_end +EXPORT_SYMBOL vmlinux 0x71ea327f vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0x720b40e2 page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0x720dac22 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x7241a4d8 devm_memunmap +EXPORT_SYMBOL vmlinux 0x7248a106 __post_watch_notification +EXPORT_SYMBOL vmlinux 0x724b02b0 configfs_register_default_group +EXPORT_SYMBOL vmlinux 0x724ba45e abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x72608c0e do_uaccess_flush +EXPORT_SYMBOL vmlinux 0x727dac3c blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x7283ec4f blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b43c4f tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72bebfcf mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x72c0f970 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x72c4bcb2 _dev_info +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ca1059 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72d66d47 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72fee8f3 dev_open +EXPORT_SYMBOL vmlinux 0x730bc0f0 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x73385408 dev_activate +EXPORT_SYMBOL vmlinux 0x734e83f6 mipi_dsi_dcs_get_display_brightness +EXPORT_SYMBOL vmlinux 0x7355f151 __bread_gfp +EXPORT_SYMBOL vmlinux 0x7358a55b dma_direct_map_page +EXPORT_SYMBOL vmlinux 0x736528ef inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7367f085 __devm_request_region +EXPORT_SYMBOL vmlinux 0x73776ba4 vio_unregister_device +EXPORT_SYMBOL vmlinux 0x73785cb8 nd_btt_version +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x73a16194 of_phy_get_and_connect +EXPORT_SYMBOL vmlinux 0x73a70361 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73b5b135 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x73baf310 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x73c5736c rproc_coredump_set_elf_info +EXPORT_SYMBOL vmlinux 0x73d5f058 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0x73d5f746 genphy_c37_config_aneg +EXPORT_SYMBOL vmlinux 0x73df85fb tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x73e10f47 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x73e7c161 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x740228c7 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x7408b98f pipe_lock +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x742be432 stream_open +EXPORT_SYMBOL vmlinux 0x7439fd86 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x745de4e0 blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x7461b797 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x746641a3 serio_close +EXPORT_SYMBOL vmlinux 0x74725e69 ZSTD_compressContinue +EXPORT_SYMBOL vmlinux 0x74852e84 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x748bde38 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL vmlinux 0x749912f3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c18454 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x74cab11b dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x74dd9684 nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f1cd69 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x750e89be page_get_link +EXPORT_SYMBOL vmlinux 0x751183e4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7513eb34 param_get_ushort +EXPORT_SYMBOL vmlinux 0x7518dafc of_find_mipi_dsi_host_by_node +EXPORT_SYMBOL vmlinux 0x752fd55e bio_endio +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754eeda5 bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x75759b08 seq_open +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x75a79927 unpin_user_page +EXPORT_SYMBOL vmlinux 0x75aa6ca1 __kernel_virt_start +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75c221e4 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x75cc8617 srp_rport_put +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75d86cb6 of_get_next_cpu_node +EXPORT_SYMBOL vmlinux 0x75de1b23 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x75e2074f get_super +EXPORT_SYMBOL vmlinux 0x75f9d347 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x7606a61a compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7617451f pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x76194df8 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x763150b3 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x763ba3ad ioread64be_hi_lo +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7648d06f param_get_ullong +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x767aeb21 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x768e9f5e vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76a28e0c devm_clk_get +EXPORT_SYMBOL vmlinux 0x76c2936a skb_queue_purge +EXPORT_SYMBOL vmlinux 0x76c512ea generic_writepages +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d87971 inet6_protos +EXPORT_SYMBOL vmlinux 0x76f2f13e __f_setown +EXPORT_SYMBOL vmlinux 0x770e0787 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x77234d37 downgrade_write +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x776afead dquot_free_inode +EXPORT_SYMBOL vmlinux 0x776b2dcf phy_start +EXPORT_SYMBOL vmlinux 0x77752733 complete_request_key +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a3c9b3 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x77b5729a agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77cf3957 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x77e6bd0d pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77f772d1 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x77fee50d register_sysctl_table +EXPORT_SYMBOL vmlinux 0x78045597 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x7809af32 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x7824cd9b neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x78339235 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL vmlinux 0x783a6172 blk_put_request +EXPORT_SYMBOL vmlinux 0x783ab6e7 vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78771860 sock_release +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78851d2f _outsb +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e556b5 skb_pull +EXPORT_SYMBOL vmlinux 0x78f631c7 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x790a993d fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x790c1b9a dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x791729bc sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0x791c43c1 address_space_init_once +EXPORT_SYMBOL vmlinux 0x791f91ef mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x79333aa3 xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x79459965 no_llseek +EXPORT_SYMBOL vmlinux 0x7951ecac sock_init_data +EXPORT_SYMBOL vmlinux 0x795f8823 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x79658b57 ptp_schedule_worker +EXPORT_SYMBOL vmlinux 0x796adc81 devm_extcon_register_notifier +EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7986c237 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x79982656 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x799993ae agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x799c693a mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a8c0bb dev_addr_add +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79beb9cb jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x79d48f00 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0x79d96d53 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x79e51cf3 phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x79e63c9b reuseport_add_sock +EXPORT_SYMBOL vmlinux 0x79ee3960 is_subdir +EXPORT_SYMBOL vmlinux 0x79f5b7fd inet_frag_find +EXPORT_SYMBOL vmlinux 0x79fa3a9e max8925_reg_write +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a21e936 sock_no_getname +EXPORT_SYMBOL vmlinux 0x7a3c317f devm_ioremap +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6199c4 set_blocksize +EXPORT_SYMBOL vmlinux 0x7a6443f3 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x7a70874b tcp_conn_request +EXPORT_SYMBOL vmlinux 0x7a71741f __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x7a7de0d6 mempool_init_node +EXPORT_SYMBOL vmlinux 0x7a88d96c pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a968137 ucc_slow_restart_tx +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab19647 cdc_parse_cdc_header +EXPORT_SYMBOL vmlinux 0x7ab1b651 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x7ab5f8c3 _insw_ns +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7aba86db node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x7abf67b9 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7ae5d317 qe_get_snum +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b094854 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x7b1c19af blk_queue_split +EXPORT_SYMBOL vmlinux 0x7b2c7226 uaccess_flush_key +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b63dee3 devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x7b8f381e __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0x7b951fe3 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x7b9964ff xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bd8f50d radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x7bdbf035 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0x7bdc682a tcp_seq_stop +EXPORT_SYMBOL vmlinux 0x7be3f5a6 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c123692 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1c193a i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4f5633 devfreq_update_status +EXPORT_SYMBOL vmlinux 0x7c5757e3 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x7c63a098 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x7c711920 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x7c78c07b agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x7c87366b of_node_put +EXPORT_SYMBOL vmlinux 0x7c8c999c kset_unregister +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7c9f3f99 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cc6c2ed proc_symlink +EXPORT_SYMBOL vmlinux 0x7cca2d8b unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x7cd46330 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x7cdddd7b mntget +EXPORT_SYMBOL vmlinux 0x7cde7c47 __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf9ee36 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7cfe837a hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x7d02d1e8 dqget +EXPORT_SYMBOL vmlinux 0x7d07dc49 d_set_d_op +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d312027 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x7d3e7ec3 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x7d48e782 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x7d4aa871 _copy_from_iter +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d57725d iterate_dir +EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x7d95e138 uart_register_driver +EXPORT_SYMBOL vmlinux 0x7da4a16a __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7dafdaec __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x7db9edb1 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x7dc37a85 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x7dc3d9cd netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcfdcd2 bioset_init_from_src +EXPORT_SYMBOL vmlinux 0x7dd40dda d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x7de02a60 devm_get_clk_from_child +EXPORT_SYMBOL vmlinux 0x7de21880 noop_qdisc +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfc8277 isa_mem_base +EXPORT_SYMBOL vmlinux 0x7e02dba3 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x7e0a6f54 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x7e0dd5d1 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x7e0f59f9 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x7e1011a1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x7e25101e inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x7e2b3259 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x7e2d6436 ida_free +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e4cc575 inet6_offloads +EXPORT_SYMBOL vmlinux 0x7e5268c4 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x7e62611a phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7e72a735 lease_modify +EXPORT_SYMBOL vmlinux 0x7e7a848c inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x7e7c23db _dev_alert +EXPORT_SYMBOL vmlinux 0x7e884f27 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x7e980509 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x7ea927e4 security_sock_graft +EXPORT_SYMBOL vmlinux 0x7ebc057e elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x7ee1244f skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x7ef4897a twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f10f84d kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x7f202499 seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f3c3905 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x7f48493a phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x7f51f742 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f588576 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0x7f58c257 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f6bf8c8 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x7f71575c devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x7f71fb97 xa_load +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f89426c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x7f8c4655 udp_gro_receive +EXPORT_SYMBOL vmlinux 0x7f93b06d devm_rproc_alloc +EXPORT_SYMBOL vmlinux 0x7fbf3a3f sk_wait_data +EXPORT_SYMBOL vmlinux 0x7fcd7454 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x7fcf70a5 fb_set_var +EXPORT_SYMBOL vmlinux 0x7fd14bdc textsearch_unregister +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fed255f of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x8013ee37 put_disk +EXPORT_SYMBOL vmlinux 0x802541ca ucc_of_parse_tdm +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x803de3fd irq_domain_set_info +EXPORT_SYMBOL vmlinux 0x803f8ab9 fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x8067c271 ping_prot +EXPORT_SYMBOL vmlinux 0x80734ace mmc_sw_reset +EXPORT_SYMBOL vmlinux 0x8074ab6e mdiobus_read +EXPORT_SYMBOL vmlinux 0x8076bf64 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x80771902 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x80850722 cdev_alloc +EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x809e2504 scsi_device_put +EXPORT_SYMBOL vmlinux 0x80ad1d6d remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x80c07d26 of_match_node +EXPORT_SYMBOL vmlinux 0x80c618f0 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cc239e sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e6381d skb_copy +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x81188c30 match_string +EXPORT_SYMBOL vmlinux 0x81265879 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x81326bdc ilookup5 +EXPORT_SYMBOL vmlinux 0x8132d512 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x8134201b device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0x8138ad29 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x814bdc13 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x814eebc4 md_reload_sb +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x81553ca4 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x81556a5c sock_alloc +EXPORT_SYMBOL vmlinux 0x815a8f12 dquot_alloc +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815fbdfb pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x816347c6 agp_device_command +EXPORT_SYMBOL vmlinux 0x81812384 rtnl_notify +EXPORT_SYMBOL vmlinux 0x8181d633 inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x8188363f passthru_features_check +EXPORT_SYMBOL vmlinux 0x818edf97 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8191c4f6 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x819eb20a __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81bb2bf1 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x81c04b11 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81cd0153 param_set_ullong +EXPORT_SYMBOL vmlinux 0x81cf4f68 dev_deactivate +EXPORT_SYMBOL vmlinux 0x81d2ca71 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e09c7b xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x81e4892f giveup_all +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8209262b fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x820c0980 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x821559d6 __vmalloc_end +EXPORT_SYMBOL vmlinux 0x821f9a64 set_cached_acl +EXPORT_SYMBOL vmlinux 0x821fca67 softnet_data +EXPORT_SYMBOL vmlinux 0x8227ab82 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x82394b7d bdput +EXPORT_SYMBOL vmlinux 0x823f7837 devm_clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x8260982b udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x826eb750 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x827c99c0 bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8284629d phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x829674e1 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x829823e0 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x82a9a901 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82f225e1 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x82fee055 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x83249927 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x83296e60 pci_request_regions +EXPORT_SYMBOL vmlinux 0x834658ac cmxgcr_lock +EXPORT_SYMBOL vmlinux 0x834e5921 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x837dc7f5 __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0x8382952e abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x8385f210 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x8389d2cd set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x838f0b22 unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x83ba312a pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c91007 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0x83e1dc93 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x83f711fe key_revoke +EXPORT_SYMBOL vmlinux 0x83f9521c cpumask_any_but +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x84069096 pci_set_master +EXPORT_SYMBOL vmlinux 0x84156834 __next_node_in +EXPORT_SYMBOL vmlinux 0x8433946d dm_put_table_device +EXPORT_SYMBOL vmlinux 0x843dc0f4 sock_efree +EXPORT_SYMBOL vmlinux 0x84545ba5 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x848d372e iowrite8 +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84aa92ad tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84c2644e tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x84c3e37e consume_skb +EXPORT_SYMBOL vmlinux 0x84c4fb44 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x84f31275 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x84f3c134 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x85167bea skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x851a8ae5 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x85238dab devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x85248886 simple_rename +EXPORT_SYMBOL vmlinux 0x85250ccc xa_store_range +EXPORT_SYMBOL vmlinux 0x852ef292 dquot_acquire +EXPORT_SYMBOL vmlinux 0x853ba9f8 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x855856a8 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8577a116 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x857f423a alloc_pages_current +EXPORT_SYMBOL vmlinux 0x8587c1ad input_close_device +EXPORT_SYMBOL vmlinux 0x8591d7d5 ledtrig_mtd_activity +EXPORT_SYMBOL vmlinux 0x8596ccad d_add_ci +EXPORT_SYMBOL vmlinux 0x8597c05f invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85ab9d6f in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x8607e5c6 dev_uc_add +EXPORT_SYMBOL vmlinux 0x8609aee2 __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x8623ae49 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x862c859c nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x86332725 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x863e696d fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0x8645b255 cdev_device_add +EXPORT_SYMBOL vmlinux 0x864ccceb start_tty +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x866f3c8b writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x86811a5b sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8695df34 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x86b1026f proc_douintvec +EXPORT_SYMBOL vmlinux 0x86b25850 down_read_killable +EXPORT_SYMBOL vmlinux 0x86b942f0 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x86c8c740 nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0x86ce31e0 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86e7f09a get_unmapped_area +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870be682 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x870dd856 tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x870fa095 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x87140d87 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x87248715 write_cache_pages +EXPORT_SYMBOL vmlinux 0x872a5283 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x87363516 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x8756c914 do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0x87583752 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x8759f064 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x875f372f blk_sync_queue +EXPORT_SYMBOL vmlinux 0x8765f73a nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x8795a49f pci_reenable_device +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87b8b9c7 __put_user_ns +EXPORT_SYMBOL vmlinux 0x87b8daff do_splice_direct +EXPORT_SYMBOL vmlinux 0x87cd33d0 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x87d94451 bio_reset +EXPORT_SYMBOL vmlinux 0x87e33ac1 fiemap_prep +EXPORT_SYMBOL vmlinux 0x87f5be2e inet_addr_type +EXPORT_SYMBOL vmlinux 0x88005fbf md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x881343e5 input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0x881bad5e phy_mipi_dphy_config_validate +EXPORT_SYMBOL vmlinux 0x882010de scsi_block_requests +EXPORT_SYMBOL vmlinux 0x8827b55c pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x882a9c54 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x884a7af9 d_splice_alias +EXPORT_SYMBOL vmlinux 0x8861f901 sync_file_create +EXPORT_SYMBOL vmlinux 0x886f46c8 neigh_update +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x8883c3e9 mount_subtree +EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 +EXPORT_SYMBOL vmlinux 0x88993295 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0x88a742a5 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88bf96b9 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x88cfe105 key_invalidate +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88de2810 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88ee4872 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x88ff3cd0 gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x8905f94b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x891290f1 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0x8921dc1b udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x89389f06 genlmsg_put +EXPORT_SYMBOL vmlinux 0x8946a7c1 mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x895709e0 phy_do_ioctl_running +EXPORT_SYMBOL vmlinux 0x89575e81 netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0x89645323 fs_param_is_string +EXPORT_SYMBOL vmlinux 0x8972a2bf nf_getsockopt +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89898459 kvm_irq_bypass +EXPORT_SYMBOL vmlinux 0x89a259e3 migrate_page +EXPORT_SYMBOL vmlinux 0x89a32ddf inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x89a5f4cb __do_once_done +EXPORT_SYMBOL vmlinux 0x89be8a9f show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0x89f18afc done_path_create +EXPORT_SYMBOL vmlinux 0x89feaf92 __irq_regs +EXPORT_SYMBOL vmlinux 0x8a15cde4 nf_log_register +EXPORT_SYMBOL vmlinux 0x8a2304ce blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8a3cd206 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x8a446ca3 lock_page_memcg +EXPORT_SYMBOL vmlinux 0x8a4560d3 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a54050b __pud_cache_index +EXPORT_SYMBOL vmlinux 0x8a596ffb dma_virt_ops +EXPORT_SYMBOL vmlinux 0x8a5b5b1c pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x8a63f9d9 finish_no_open +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a73c194 simple_write_end +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a83cd0a skb_clone +EXPORT_SYMBOL vmlinux 0x8a8a6c8c mac_find_mode +EXPORT_SYMBOL vmlinux 0x8a904081 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a994d93 paca_ptrs +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9d512d ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0x8aa9345b md_cluster_ops +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8ac3bb12 dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x8ac9af40 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x8ace0386 page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0x8ad2099e tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8ad39905 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x8ad5c5bb jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b09e65e blk_integrity_register +EXPORT_SYMBOL vmlinux 0x8b2f6bd6 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0x8b385f0b xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x8b3995e4 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6cbf3b __dquot_transfer +EXPORT_SYMBOL vmlinux 0x8b728e9d vm_insert_pages +EXPORT_SYMBOL vmlinux 0x8b7950e8 set_groups +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8246a1 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x8b8b24cf __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b95ba41 dma_fence_signal +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8bc64362 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0x8bcc4421 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x8bd14cec nf_log_unset +EXPORT_SYMBOL vmlinux 0x8be189ab ucc_slow_disable +EXPORT_SYMBOL vmlinux 0x8bf1d407 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x8c0a8167 noop_fsync +EXPORT_SYMBOL vmlinux 0x8c150a48 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x8c194453 block_read_full_page +EXPORT_SYMBOL vmlinux 0x8c25f082 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x8c491c7d dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c6ce08b jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x8c7c6548 keyring_search +EXPORT_SYMBOL vmlinux 0x8c8de960 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x8c8e5243 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x8c9309ee dma_pool_create +EXPORT_SYMBOL vmlinux 0x8c93f5ca input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x8c96113f dump_truncate +EXPORT_SYMBOL vmlinux 0x8c9bff9c __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x8ca23abf get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x8cc53d20 __par_io_config_pin +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccaed63 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x8cd56a4b dquot_quota_off +EXPORT_SYMBOL vmlinux 0x8cda71a0 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x8cf53c56 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x8d0aef6d __mutex_init +EXPORT_SYMBOL vmlinux 0x8d0c0c5f ns_capable +EXPORT_SYMBOL vmlinux 0x8d10584e inet_stream_ops +EXPORT_SYMBOL vmlinux 0x8d2753bc radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x8d304aff dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x8d36f784 single_release +EXPORT_SYMBOL vmlinux 0x8d38baa0 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x8d4dba32 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x8d51c686 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6131f5 dquot_destroy +EXPORT_SYMBOL vmlinux 0x8d72280d sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d985af5 udp_seq_next +EXPORT_SYMBOL vmlinux 0x8d9ce724 trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x8d9dd150 gro_cells_receive +EXPORT_SYMBOL vmlinux 0x8dbb180e fget +EXPORT_SYMBOL vmlinux 0x8dc7504b mipi_dsi_compression_mode +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8de30b61 generic_make_request +EXPORT_SYMBOL vmlinux 0x8deb38ab iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x8df1bf74 cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0x8df42fb3 pid_task +EXPORT_SYMBOL vmlinux 0x8df4afd9 qe_put_snum +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8e1d2dc0 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x8e2e206e mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x8e33d1be nobh_write_end +EXPORT_SYMBOL vmlinux 0x8e4c60a3 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x8e4dacac flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0x8e63eac9 logfc +EXPORT_SYMBOL vmlinux 0x8e687213 proc_set_user +EXPORT_SYMBOL vmlinux 0x8e6a2449 tcf_em_register +EXPORT_SYMBOL vmlinux 0x8e6bdc94 locks_init_lock +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8e97cbda irq_stat +EXPORT_SYMBOL vmlinux 0x8e9e4832 flow_rule_alloc +EXPORT_SYMBOL vmlinux 0x8ea15ad3 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8eb2a6f1 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x8ebb45ec icmp6_send +EXPORT_SYMBOL vmlinux 0x8ebe907e netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x8ebfa049 disk_end_io_acct +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ef6a5dc dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x8f01afd6 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x8f0873fd vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x8f1a6868 vfs_mknod +EXPORT_SYMBOL vmlinux 0x8f4b8647 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x8f62f3d2 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x8f68da79 __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x8f6d91ae twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x8f6e201b skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x8f73ffe7 dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0x8f7c6b99 pci_save_state +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8fd32ccb iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x8fe276a1 netif_device_attach +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x8ffbe8b4 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x9008bf74 __devm_release_region +EXPORT_SYMBOL vmlinux 0x901a54d6 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x9020515d can_nice +EXPORT_SYMBOL vmlinux 0x9023361b proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get +EXPORT_SYMBOL vmlinux 0x9044c637 would_dump +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user +EXPORT_SYMBOL vmlinux 0x905de361 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0x90733d0b netdev_notice +EXPORT_SYMBOL vmlinux 0x90807fdf ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x90820bc4 register_gifconf +EXPORT_SYMBOL vmlinux 0x90916ed1 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x9091d76b pcibus_to_node +EXPORT_SYMBOL vmlinux 0x90bc5e49 set_user_nice +EXPORT_SYMBOL vmlinux 0x90c2953c generic_write_end +EXPORT_SYMBOL vmlinux 0x90c73313 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x90d538e9 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x90ee3380 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x90ee582f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x91247651 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9147a4ab generic_update_time +EXPORT_SYMBOL vmlinux 0x9148af5d inet_select_addr +EXPORT_SYMBOL vmlinux 0x914c85b7 skb_trim +EXPORT_SYMBOL vmlinux 0x915ad5c3 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9160847d pci_domain_nr +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x917830c8 netdev_err +EXPORT_SYMBOL vmlinux 0x918e2054 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x918e576c key_task_permission +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91bdcf81 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x91c02d1d inet_put_port +EXPORT_SYMBOL vmlinux 0x91e49704 watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x91f9d05a genphy_update_link +EXPORT_SYMBOL vmlinux 0x920d80c2 security_path_rename +EXPORT_SYMBOL vmlinux 0x92123440 kern_path_create +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924e9e4a pci_write_config_word +EXPORT_SYMBOL vmlinux 0x9251f0d2 wait_for_completion +EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x9276bb86 rtc_add_group +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a92062 flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0x92a99a03 sk_stream_error +EXPORT_SYMBOL vmlinux 0x92abe166 param_array_ops +EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name +EXPORT_SYMBOL vmlinux 0x92d895cd agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x92e0e967 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9303ba32 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930780f7 register_md_personality +EXPORT_SYMBOL vmlinux 0x930b9b94 tcp_req_err +EXPORT_SYMBOL vmlinux 0x93261483 file_modified +EXPORT_SYMBOL vmlinux 0x932c631e node_data +EXPORT_SYMBOL vmlinux 0x934e72e9 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x935dc8bf dev_uc_init +EXPORT_SYMBOL vmlinux 0x935ef6df unregister_md_personality +EXPORT_SYMBOL vmlinux 0x93636ae7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x9369335e serio_unregister_port +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937c99c7 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x93880dad pci_find_bus +EXPORT_SYMBOL vmlinux 0x93a10be6 put_fs_context +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a8d88a __module_get +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93f3ea71 page_pool_put_page +EXPORT_SYMBOL vmlinux 0x93f41378 md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x93f8cce9 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x940187d6 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x9415a65f cdrom_open +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x9438adc2 seq_pad +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x943f1aeb mmc_card_is_blockaddr +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x94667988 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x9489e920 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a5fd84 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x94abf841 sg_miter_next +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94c1d1e4 __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x94dbd2dc phy_detach +EXPORT_SYMBOL vmlinux 0x94e481cf ZSTD_adjustCParams +EXPORT_SYMBOL vmlinux 0x94f042ed jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951adce5 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x9538275c phy_attached_info +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x95722936 ucc_fast_transmit_on_demand +EXPORT_SYMBOL vmlinux 0x957e1fff __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x95874001 elevator_alloc +EXPORT_SYMBOL vmlinux 0x95888e7c thaw_bdev +EXPORT_SYMBOL vmlinux 0x9592d31c __mdiobus_read +EXPORT_SYMBOL vmlinux 0x95c6c48a qe_pin_set_gpio +EXPORT_SYMBOL vmlinux 0x95c77bcc inode_needs_sync +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x9600711a config_item_get +EXPORT_SYMBOL vmlinux 0x96021c21 setattr_copy +EXPORT_SYMBOL vmlinux 0x961b0eb3 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x96234a08 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x962c4977 clkdev_add +EXPORT_SYMBOL vmlinux 0x9631f354 clk_bulk_get +EXPORT_SYMBOL vmlinux 0x96416fcd mipi_dsi_device_unregister +EXPORT_SYMBOL vmlinux 0x9659d589 nd_dev_to_uuid +EXPORT_SYMBOL vmlinux 0x9668d63e phy_attach_direct +EXPORT_SYMBOL vmlinux 0x967e267c rproc_boot +EXPORT_SYMBOL vmlinux 0x96848186 scnprintf +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x969f154d trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b6f210 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x96b8137a __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x96ba35a6 pci_disable_device +EXPORT_SYMBOL vmlinux 0x96ba778d fb_blank +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96c506ee xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x96caf74d msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x96cbf20f serio_bus +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e5ad3a ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x96f2a9d5 single_open +EXPORT_SYMBOL vmlinux 0x96f449c6 set_anon_super +EXPORT_SYMBOL vmlinux 0x96f77581 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x970d2c42 sock_edemux +EXPORT_SYMBOL vmlinux 0x97149b10 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x971e3fd7 del_gendisk +EXPORT_SYMBOL vmlinux 0x971ec27c hvc_put_chars +EXPORT_SYMBOL vmlinux 0x973a8e6f mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0x973c09e5 __pgd_index_size +EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x975dac6e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x97627c07 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x9793cc34 param_get_long +EXPORT_SYMBOL vmlinux 0x97947bb2 nf_reinject +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a3734b blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x97a4114f vfs_link +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97aad49b input_flush_device +EXPORT_SYMBOL vmlinux 0x97ab142e tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c0e025 devm_mfd_add_devices +EXPORT_SYMBOL vmlinux 0x97c1fe48 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x97c5521c pci_find_capability +EXPORT_SYMBOL vmlinux 0x97c7d5c4 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x97d5403a pci_read_config_byte +EXPORT_SYMBOL vmlinux 0x97de0921 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x97e18838 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x97e64f04 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x97e9dcfc follow_pfn +EXPORT_SYMBOL vmlinux 0x97eb3f6d param_ops_bool +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x9809481e netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x981dafa6 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982b105b phy_disconnect +EXPORT_SYMBOL vmlinux 0x9832b2f9 __i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x98553720 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x985b14fd percpu_counter_set +EXPORT_SYMBOL vmlinux 0x98637e99 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x9866c9a4 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0x9869f6ba pps_register_source +EXPORT_SYMBOL vmlinux 0x98942b46 dev_close +EXPORT_SYMBOL vmlinux 0x989760a6 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL vmlinux 0x98a7ac9a ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x98aff406 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x98e8bd7b cdev_del +EXPORT_SYMBOL vmlinux 0x98eb14fd tty_lock +EXPORT_SYMBOL vmlinux 0x9905a500 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x992edc30 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0x9937d0d0 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99432bee of_graph_get_remote_node +EXPORT_SYMBOL vmlinux 0x994cb402 mmput_async +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99759edb sock_wmalloc +EXPORT_SYMBOL vmlinux 0x997ff4d5 seq_puts +EXPORT_SYMBOL vmlinux 0x998af2cf pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9995ce9d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99adbd59 d_alloc_name +EXPORT_SYMBOL vmlinux 0x99aea9f4 genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c9bf38 of_node_name_eq +EXPORT_SYMBOL vmlinux 0x99d45364 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99eca4d8 genl_register_family +EXPORT_SYMBOL vmlinux 0x99f646a2 blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x9a0a4dae tcp_seq_start +EXPORT_SYMBOL vmlinux 0x9a0c3a18 vme_unregister_error_handler +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a373026 __phy_resume +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a5a0e27 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x9a5efbfb truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x9a87a33f do_clone_file_range +EXPORT_SYMBOL vmlinux 0x9a87bfe2 md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x9a8c5bfa vga_get +EXPORT_SYMBOL vmlinux 0x9a94233e PageMovable +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9abc9214 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x9ac02638 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x9ac5074c dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x9ac99786 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x9acde112 gtm_ack_timer16 +EXPORT_SYMBOL vmlinux 0x9ad1cbce xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0x9aea8f42 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9aff0a3f param_set_bool +EXPORT_SYMBOL vmlinux 0x9b182006 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3bdf38 tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0x9b461a0d bio_init +EXPORT_SYMBOL vmlinux 0x9b4754c8 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b5b524f jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x9b86451d dst_release +EXPORT_SYMBOL vmlinux 0x9b86ad3e get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0x9b8dcb34 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x9b996729 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x9b9b96e5 register_qdisc +EXPORT_SYMBOL vmlinux 0x9bbaeedf file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x9bc44384 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x9bc8979a __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9bc8a832 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x9bcf8309 netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0x9be43359 qdisc_reset +EXPORT_SYMBOL vmlinux 0x9c1eea39 scsi_device_get +EXPORT_SYMBOL vmlinux 0x9c23ecd5 inet_sendpage +EXPORT_SYMBOL vmlinux 0x9c2f9292 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x9c44a460 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x9c57e2cf blk_execute_rq +EXPORT_SYMBOL vmlinux 0x9c6e6125 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x9c7f9a38 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x9c841200 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x9c8b51a3 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x9c942adc vprintk_emit +EXPORT_SYMBOL vmlinux 0x9c96efc7 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x9c9e438c security_sk_clone +EXPORT_SYMBOL vmlinux 0x9ca557f0 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cabaea1 open_with_fake_path +EXPORT_SYMBOL vmlinux 0x9cca87a6 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce6e4d1 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x9cf353e4 scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0x9cf776f9 tty_kref_put +EXPORT_SYMBOL vmlinux 0x9d05ac75 srp_timed_out +EXPORT_SYMBOL vmlinux 0x9d0cab7f genphy_resume +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1642b4 kobject_set_name +EXPORT_SYMBOL vmlinux 0x9d17ce01 drop_nlink +EXPORT_SYMBOL vmlinux 0x9d2535dd mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d3f282d pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x9d4b8997 inode_permission +EXPORT_SYMBOL vmlinux 0x9d557d5a rtas +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7e097b skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x9d96a9b0 mmu_hash_ops +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9d9a79aa skb_put +EXPORT_SYMBOL vmlinux 0x9d9e8732 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x9da53049 from_kprojid +EXPORT_SYMBOL vmlinux 0x9da70ee3 tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0x9db2cd05 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9dd069ed max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9dd8dd57 load_fp_state +EXPORT_SYMBOL vmlinux 0x9de706b5 mempool_destroy +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e39d397 timer_interrupt +EXPORT_SYMBOL vmlinux 0x9e3b4bc7 vm_insert_page +EXPORT_SYMBOL vmlinux 0x9e481d8c set_posix_acl +EXPORT_SYMBOL vmlinux 0x9e4cc556 of_device_register +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e558dff scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e658c0d sk_free +EXPORT_SYMBOL vmlinux 0x9e6dea68 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x9e887859 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e98994e mark_page_accessed +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf +EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup +EXPORT_SYMBOL vmlinux 0x9ec0e639 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ed1767a dquot_scan_active +EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set +EXPORT_SYMBOL vmlinux 0x9f05b0f7 dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0x9f0adb3e netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x9f2631ad bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x9f26efe7 sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0x9f2eb8d7 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x9f3a1e85 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9f3f16f9 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x9f42eac0 bio_chain +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f48dbde eth_get_headlen +EXPORT_SYMBOL vmlinux 0x9f4e03be xfrm_input +EXPORT_SYMBOL vmlinux 0x9f4f9c3e __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f608504 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x9f65c857 ZSTD_checkCParams +EXPORT_SYMBOL vmlinux 0x9f78ada5 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x9f87d932 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x9f8bd1db kthread_bind +EXPORT_SYMBOL vmlinux 0x9f954abc of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9dc969 lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fb50be8 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x9fc4a01c jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x9fc7f822 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x9fd99cd2 vlan_for_each +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe807b7 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00a80bb tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0xa0262284 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0xa03ccec2 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04d0a57 __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xa057df8f twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa08135fd __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0850031 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xa08a12f2 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0af1bc5 key_type_keyring +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0cadd62 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0xa0ce9240 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xa0cee43e jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1248f93 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xa155c071 ZSTD_compressBegin_usingDict +EXPORT_SYMBOL vmlinux 0xa171fef8 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0xa18063cb input_event +EXPORT_SYMBOL vmlinux 0xa190d418 ps2_command +EXPORT_SYMBOL vmlinux 0xa1a0fb8d pmem_sector_size +EXPORT_SYMBOL vmlinux 0xa1bb266f nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c8cd93 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0xa1e4ed77 _dev_err +EXPORT_SYMBOL vmlinux 0xa1eaa2cd mempool_init +EXPORT_SYMBOL vmlinux 0xa1eb44bb dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa20da50f dentry_path_raw +EXPORT_SYMBOL vmlinux 0xa20eacdd tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xa2179258 of_clk_get +EXPORT_SYMBOL vmlinux 0xa2379497 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa23d1329 mmc_cqe_request_done +EXPORT_SYMBOL vmlinux 0xa244278f inode_set_flags +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa2578209 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa25fda91 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xa262e09b phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa26d05b6 of_pci_range_to_resource +EXPORT_SYMBOL vmlinux 0xa274da89 nd_device_notify +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa29b8cb9 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xa2b32cf8 tso_start +EXPORT_SYMBOL vmlinux 0xa2b66abe ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xa2b6e8e4 sock_from_file +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2ebae1e generic_read_dir +EXPORT_SYMBOL vmlinux 0xa2fc8767 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xa301b29d d_lookup +EXPORT_SYMBOL vmlinux 0xa30478a9 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xa30cd42b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xa31427bc icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0xa31ea249 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xa32acc3d jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xa3331df4 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xa33ddde2 __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xa34ea576 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xa3550abf sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa3557711 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xa35c99e7 clk_get +EXPORT_SYMBOL vmlinux 0xa382ea0a agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xa382ff4e dma_cache_sync +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39039f7 input_release_device +EXPORT_SYMBOL vmlinux 0xa396ca34 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3b79f02 of_node_to_nid +EXPORT_SYMBOL vmlinux 0xa3d81d4c inet_ioctl +EXPORT_SYMBOL vmlinux 0xa3e67940 skb_tx_error +EXPORT_SYMBOL vmlinux 0xa3fd437d get_thermal_instance +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa424db04 __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xa430f73e pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xa4364cfa __scsi_execute +EXPORT_SYMBOL vmlinux 0xa43ddea5 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0xa45f7ca2 inet_del_offload +EXPORT_SYMBOL vmlinux 0xa47f980d __sock_create +EXPORT_SYMBOL vmlinux 0xa482a74c tcp_parse_options +EXPORT_SYMBOL vmlinux 0xa4927381 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa49a9b46 mempool_alloc +EXPORT_SYMBOL vmlinux 0xa4a6b386 radix__local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xa4b46338 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4be4285 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL vmlinux 0xa4d21896 mmc_cqe_start_req +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d84072 security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0xa4efc940 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa4fa639d scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa5038fbe register_quota_format +EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0xa50ed6ea user_revoke +EXPORT_SYMBOL vmlinux 0xa528b018 param_set_long +EXPORT_SYMBOL vmlinux 0xa5463027 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0xa54c574a devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xa54db1f0 get_task_exe_file +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5683f26 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0xa56dd919 of_node_name_prefix +EXPORT_SYMBOL vmlinux 0xa579c7ab phy_modify_paged_changed +EXPORT_SYMBOL vmlinux 0xa58be376 make_kgid +EXPORT_SYMBOL vmlinux 0xa5956abe ioread64_hi_lo +EXPORT_SYMBOL vmlinux 0xa59b6362 make_bad_inode +EXPORT_SYMBOL vmlinux 0xa59ebc72 nvm_register +EXPORT_SYMBOL vmlinux 0xa5a3fa3d tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xa5aa59f2 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa5b42645 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa5b51707 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xa5ba02e8 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xa5bc1661 ptp_clock_event +EXPORT_SYMBOL vmlinux 0xa5bc29c6 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xa5c55fb4 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xa609a111 netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0xa60a1de3 filp_open +EXPORT_SYMBOL vmlinux 0xa610e984 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa61f2b9e simple_transaction_set +EXPORT_SYMBOL vmlinux 0xa648245a blk_get_queue +EXPORT_SYMBOL vmlinux 0xa6579f21 __pud_val_bits +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6703ef4 dst_discard_out +EXPORT_SYMBOL vmlinux 0xa6794981 add_watch_to_object +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa6914005 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0xa6c9047c compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa6d13599 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xa6d314a4 pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0xa6d40b77 tty_register_driver +EXPORT_SYMBOL vmlinux 0xa6d44df6 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xa6f56e89 blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0xa7180e0e md_write_inc +EXPORT_SYMBOL vmlinux 0xa7233d14 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xa72c90c0 __sb_start_write +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa75180bc of_get_property +EXPORT_SYMBOL vmlinux 0xa754aa6d vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0xa75b3706 pseries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xa77b1ed6 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa786ee39 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa79bff2d hpage_shift +EXPORT_SYMBOL vmlinux 0xa7b679fc get_tree_bdev +EXPORT_SYMBOL vmlinux 0xa7bf5443 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa7d66dbb tcf_exts_change +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa7f108ca end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xa7fba791 dma_resv_init +EXPORT_SYMBOL vmlinux 0xa80afc1e generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL vmlinux 0xa8361724 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xa83c308f dev_lstats_read +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8457321 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xa84a1f50 ata_link_printk +EXPORT_SYMBOL vmlinux 0xa84b816d __seq_open_private +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa885aa7b xfrm_state_free +EXPORT_SYMBOL vmlinux 0xa8896319 __xa_clear_mark +EXPORT_SYMBOL vmlinux 0xa88b869e mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xa894ab7d xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa89b2577 try_to_release_page +EXPORT_SYMBOL vmlinux 0xa8bb2674 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all +EXPORT_SYMBOL vmlinux 0xa8d483ff cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa8f864f9 udp_seq_ops +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa917779c proc_create +EXPORT_SYMBOL vmlinux 0xa9255668 dget_parent +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa94f1b13 free_netdev +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa96c731e kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned +EXPORT_SYMBOL vmlinux 0xa9761286 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xa9829999 pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0xa983c3a6 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa987f578 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9bd3649 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xa9bf2c4b pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa9dffce5 mempool_free +EXPORT_SYMBOL vmlinux 0xa9ecbf6b pci_enable_wake +EXPORT_SYMBOL vmlinux 0xa9f15c4f free_cgroup_ns +EXPORT_SYMBOL vmlinux 0xa9f4267a nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xa9f52ac9 no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0xaa078558 simple_statfs +EXPORT_SYMBOL vmlinux 0xaa137735 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xaa173779 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xaa19db62 dcache_readdir +EXPORT_SYMBOL vmlinux 0xaa1fd473 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xaa3f6f04 radix__flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xaa45f0c1 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xaa4b2a31 inet_release +EXPORT_SYMBOL vmlinux 0xaa5ae19c input_set_keycode +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa78294e tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xaa9179c4 ida_alloc_range +EXPORT_SYMBOL vmlinux 0xaa9afeb1 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaaaa68eb scsi_ioctl +EXPORT_SYMBOL vmlinux 0xaab13aef of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xaab2ee91 complete_all +EXPORT_SYMBOL vmlinux 0xaacb2e99 phy_write_mmd +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaaf5d0a7 dm_table_get_md +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab002636 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xab20efeb __fs_parse +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0xab3d0ad9 mount_single +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab65e4ab request_key_tag +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8180ce blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xab8bfe28 inode_nohighmem +EXPORT_SYMBOL vmlinux 0xabb95adf genphy_read_status_fixed +EXPORT_SYMBOL vmlinux 0xabbe67ce fqdir_exit +EXPORT_SYMBOL vmlinux 0xabc815fd udp_prot +EXPORT_SYMBOL vmlinux 0xabeabf5f tcp_splice_read +EXPORT_SYMBOL vmlinux 0xabecc8b8 mdio_device_reset +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xac022379 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac36ddac pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xac430423 __pmd_val_bits +EXPORT_SYMBOL vmlinux 0xac4a2ed9 put_disk_and_module +EXPORT_SYMBOL vmlinux 0xac5b3181 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac81a0b4 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xac958c59 __kfree_skb +EXPORT_SYMBOL vmlinux 0xac9b8f45 phy_ethtool_nway_reset +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb534ce inet6_getname +EXPORT_SYMBOL vmlinux 0xaccf12da dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xacd7ba01 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xace18748 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xacebab67 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xacfcba4a __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad042977 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xad244cec security_inode_copy_up +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad5564be mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xad5dc535 seq_putc +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad78c5da dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0xad7b1ef3 page_mapped +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8cd25e netlink_capable +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xad9aeee6 vfio_unpin_pages +EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0xadc044b7 vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL vmlinux 0xadc5269a scsi_remove_target +EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0xadd0ef4c security_task_getsecid +EXPORT_SYMBOL vmlinux 0xadd6bfca reuseport_select_sock +EXPORT_SYMBOL vmlinux 0xadd9d043 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xaded72f1 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae1081ba capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xae2515f8 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae31cea2 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xae323679 pcim_iomap +EXPORT_SYMBOL vmlinux 0xae3c7d75 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xae4ae4bd phy_validate_pause +EXPORT_SYMBOL vmlinux 0xae4c8439 __pte_table_size +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae66b0f1 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xae69527f forget_cached_acl +EXPORT_SYMBOL vmlinux 0xae6e30f5 kernel_accept +EXPORT_SYMBOL vmlinux 0xae8bf23f blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xae901b24 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xaea2e288 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xaea61242 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaeacb681 compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0xaeb2e831 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xaeb5fc3c phy_modify_paged +EXPORT_SYMBOL vmlinux 0xaeb71553 mpage_writepages +EXPORT_SYMBOL vmlinux 0xaec900ec xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xaecbca77 xp_alloc +EXPORT_SYMBOL vmlinux 0xaecebefd __scm_destroy +EXPORT_SYMBOL vmlinux 0xaed2f8b8 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xaeef8a52 end_page_writeback +EXPORT_SYMBOL vmlinux 0xaefaf0e6 pci_bus_type +EXPORT_SYMBOL vmlinux 0xaefbafde ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf1d188c simple_release_fs +EXPORT_SYMBOL vmlinux 0xaf2f6d20 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xaf30c520 mipi_dsi_picture_parameter_set +EXPORT_SYMBOL vmlinux 0xaf39643b serio_reconnect +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4d082b vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xaf53afc9 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xaf65102e nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xaf66fa1c netpoll_setup +EXPORT_SYMBOL vmlinux 0xaf80d041 sock_bindtoindex +EXPORT_SYMBOL vmlinux 0xafa2ab2f scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xafbb317f compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xafc06bcd wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xafd77350 wireless_send_event +EXPORT_SYMBOL vmlinux 0xafdea114 open_exec +EXPORT_SYMBOL vmlinux 0xafe22d9f fsync_bdev +EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc +EXPORT_SYMBOL vmlinux 0xafee55b9 __brelse +EXPORT_SYMBOL vmlinux 0xaff7f6c1 __debugger_bpt +EXPORT_SYMBOL vmlinux 0xaff9ba07 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb01fa806 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0xb022f4c0 pci_request_region +EXPORT_SYMBOL vmlinux 0xb027e011 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xb02952a1 ipmi_platform_add +EXPORT_SYMBOL vmlinux 0xb02bbdb9 inet_gro_complete +EXPORT_SYMBOL vmlinux 0xb0327441 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xb038fabc blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0xb0417384 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06463e9 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xb06a859f md_handle_request +EXPORT_SYMBOL vmlinux 0xb072634d param_get_string +EXPORT_SYMBOL vmlinux 0xb072cd6e import_single_range +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0aed408 ZSTD_compressStream +EXPORT_SYMBOL vmlinux 0xb0c2d419 dev_change_flags +EXPORT_SYMBOL vmlinux 0xb0cc13d9 no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0xb0d44662 agp_backend_release +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f314b4 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize +EXPORT_SYMBOL vmlinux 0xb0fbdc48 path_nosuid +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb1199f37 clear_inode +EXPORT_SYMBOL vmlinux 0xb1256059 netlink_ack +EXPORT_SYMBOL vmlinux 0xb1284588 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1308515 netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0xb131ff34 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xb1436ff4 dev_addr_del +EXPORT_SYMBOL vmlinux 0xb1472688 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb148ee24 tcp_mmap +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb18fa02c dst_init +EXPORT_SYMBOL vmlinux 0xb19d55df fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1b110a7 tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0xb1bc0a27 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c5c64e gtm_set_exact_timer16 +EXPORT_SYMBOL vmlinux 0xb1d6f043 skb_checksum +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1e12d81 krealloc +EXPORT_SYMBOL vmlinux 0xb1ee4f18 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb1ee7ec2 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xb1f55035 build_skb_around +EXPORT_SYMBOL vmlinux 0xb1f9284a max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xb1fd26f0 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb21e5c21 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xb227ce5a blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb2477455 zap_page_range +EXPORT_SYMBOL vmlinux 0xb24c80a8 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xb2642d40 of_node_get +EXPORT_SYMBOL vmlinux 0xb26cb662 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xb26fc33c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xb2a10c95 profile_pc +EXPORT_SYMBOL vmlinux 0xb2a991a8 vfio_register_notifier +EXPORT_SYMBOL vmlinux 0xb2acc4cd __msr_check_and_clear +EXPORT_SYMBOL vmlinux 0xb2acd9e5 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xb2d03d81 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xb2e49221 mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0xb2ee9e8c scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 +EXPORT_SYMBOL vmlinux 0xb2f88066 locks_free_lock +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb3002376 dm_put_device +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb30b9822 vme_master_set +EXPORT_SYMBOL vmlinux 0xb30f0e63 kill_pid +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb32733fe unregister_filesystem +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb342a8b7 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xb350f6f2 dqstats +EXPORT_SYMBOL vmlinux 0xb359409c insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xb35ddc60 __sb_end_write +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb37dfa4e seq_read +EXPORT_SYMBOL vmlinux 0xb39290ba pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xb3a72ab2 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3c65ca5 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xb3cff973 fput +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb416f57c netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0xb417f082 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xb41acc1a disk_start_io_acct +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb43dfb1c kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xb4424b2b proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xb44478a6 qe_pin_free +EXPORT_SYMBOL vmlinux 0xb44ad4b3 _copy_to_user +EXPORT_SYMBOL vmlinux 0xb450a000 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xb4514e55 inet_protos +EXPORT_SYMBOL vmlinux 0xb4563355 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xb45dedd5 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xb45ee61d ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xb462d8bf scsi_host_get +EXPORT_SYMBOL vmlinux 0xb4632bfd sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xb47330dd __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb47be20e pseries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb490a5f1 __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0xb494bf60 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xb4985beb ZSTD_resetCStream +EXPORT_SYMBOL vmlinux 0xb4a23239 kernel_read +EXPORT_SYMBOL vmlinux 0xb4e71f58 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xb4ec218d load_nls +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb4f88ed7 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xb51b7c5b __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xb5267579 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xb539b516 dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xb540bc02 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0xb5457895 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xb54c1909 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xb555f9f3 gtm_get_specific_timer16 +EXPORT_SYMBOL vmlinux 0xb5594cfa xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0xb5733fb5 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5760f9f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xb5794d19 nmi_panic +EXPORT_SYMBOL vmlinux 0xb57a86d0 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb57c14b4 try_module_get +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb59fbde2 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xb5a1a1e9 arp_xmit +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b63ee1 submit_bio +EXPORT_SYMBOL vmlinux 0xb5bcd829 eth_header_cache +EXPORT_SYMBOL vmlinux 0xb5dd0c5b i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb5fc68db max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xb606a5e7 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xb624db4e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb63bf0c4 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xb651f625 unregister_console +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67caf65 ucc_fast_enable +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb68437c5 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xb6913ccc of_mdiobus_phy_device_register +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6b1dd0f netdev_emerg +EXPORT_SYMBOL vmlinux 0xb6c549ee rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xb6caf102 fs_lookup_param +EXPORT_SYMBOL vmlinux 0xb6e18921 mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xb7182b76 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb720e1ab mem_section +EXPORT_SYMBOL vmlinux 0xb727187c iget5_locked +EXPORT_SYMBOL vmlinux 0xb74859a6 console_stop +EXPORT_SYMBOL vmlinux 0xb74df581 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb7503c13 vme_lm_request +EXPORT_SYMBOL vmlinux 0xb75e1452 skb_unlink +EXPORT_SYMBOL vmlinux 0xb7688155 ucc_slow_init +EXPORT_SYMBOL vmlinux 0xb77a32b7 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xb78881f3 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb7a82774 sock_no_connect +EXPORT_SYMBOL vmlinux 0xb7aa71e7 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xb7bb4984 padata_start +EXPORT_SYMBOL vmlinux 0xb7bc6adc seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xb7c0f443 sort +EXPORT_SYMBOL vmlinux 0xb7c12eb3 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0xb7c36211 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xb7c54ae2 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7d2ef3d gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb7d9d8d5 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb7dcde66 __alloc_skb +EXPORT_SYMBOL vmlinux 0xb7fe80ab flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0xb824767a pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0xb8511e94 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0xb855a515 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb869602b ll_rw_block +EXPORT_SYMBOL vmlinux 0xb86af85c pci_restore_state +EXPORT_SYMBOL vmlinux 0xb870a74e ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xb8893ac5 skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0xb8983942 cad_pid +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb8a6c2c0 dup_iter +EXPORT_SYMBOL vmlinux 0xb8ab2fc6 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xb8ac602f input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8b59f1a agp_generic_enable +EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xb8c683bb ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0xb8df94b6 bio_add_page +EXPORT_SYMBOL vmlinux 0xb9053050 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb9089f69 pci_enable_msi +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb9120c2e write_inode_now +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb96ff181 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xb9713471 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb98b2b8d generic_permission +EXPORT_SYMBOL vmlinux 0xb9a939fb blk_register_region +EXPORT_SYMBOL vmlinux 0xb9b0a2fa machine_id +EXPORT_SYMBOL vmlinux 0xb9ce0d9c proc_create_mount_point +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba0f20e5 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le +EXPORT_SYMBOL vmlinux 0xba1cca46 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xba2eb540 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xba3739b1 tso_build_data +EXPORT_SYMBOL vmlinux 0xba4645ae __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba66765b mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xba691c85 _insb +EXPORT_SYMBOL vmlinux 0xba707a78 qe_get_brg_clk +EXPORT_SYMBOL vmlinux 0xbaa47deb ps2_drain +EXPORT_SYMBOL vmlinux 0xbab93782 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xbac0cc4f __phy_write_mmd +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbaffff96 ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb070a24 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xbb188e0f get_cached_acl +EXPORT_SYMBOL vmlinux 0xbb1b06b2 genphy_loopback +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb2c3b41 iunique +EXPORT_SYMBOL vmlinux 0xbb2d13b8 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3e9e90 __pmd_table_size +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb531588 get_vm_area +EXPORT_SYMBOL vmlinux 0xbb7b414e gtm_stop_timer16 +EXPORT_SYMBOL vmlinux 0xbb85be73 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xbb905872 genphy_check_and_restart_aneg +EXPORT_SYMBOL vmlinux 0xbb938e68 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0xbb9a3e21 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xbba13d00 udp_pre_connect +EXPORT_SYMBOL vmlinux 0xbbaa79d5 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xbbb15101 __skb_recv_udp +EXPORT_SYMBOL vmlinux 0xbbbeba7c mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xbbc0090f dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xbbcee4db phy_connect +EXPORT_SYMBOL vmlinux 0xbbd39357 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order +EXPORT_SYMBOL vmlinux 0xbbedc7a4 load_nls_default +EXPORT_SYMBOL vmlinux 0xbbffa52f fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0xbc0ebf32 vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0xbc21008e dcb_setapp +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc487e47 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0xbc76a6e1 init_special_inode +EXPORT_SYMBOL vmlinux 0xbc7f7774 serio_rescan +EXPORT_SYMBOL vmlinux 0xbc853fd1 thermal_zone_device_critical +EXPORT_SYMBOL vmlinux 0xbc891769 __udp_disconnect +EXPORT_SYMBOL vmlinux 0xbc8df6ef gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xbc96feca __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcad0c22 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbcc15019 param_set_copystring +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf1c986 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xbcf5a9e4 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xbcfdf9d7 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xbd092a08 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd504a75 I_BDEV +EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 +EXPORT_SYMBOL vmlinux 0xbd6c6c65 mount_bdev +EXPORT_SYMBOL vmlinux 0xbd6f5135 padata_do_serial +EXPORT_SYMBOL vmlinux 0xbd808a48 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0xbd8519dd devm_rproc_add +EXPORT_SYMBOL vmlinux 0xbd9b9979 module_refcount +EXPORT_SYMBOL vmlinux 0xbda68195 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xbdae1466 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xbdb3a1c1 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xbdb8a4bc set_create_files_as +EXPORT_SYMBOL vmlinux 0xbdd10e22 vfs_rename +EXPORT_SYMBOL vmlinux 0xbde27f15 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xbde62c78 kill_litter_super +EXPORT_SYMBOL vmlinux 0xbdf2fc3b frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xbdf92c51 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xbe2db514 par_io_of_config +EXPORT_SYMBOL vmlinux 0xbe30335d cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xbe496199 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xbe4aada1 genphy_read_mmd_unsupported +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe56018d mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe632624 __phy_read_mmd +EXPORT_SYMBOL vmlinux 0xbe651b50 of_graph_get_endpoint_count +EXPORT_SYMBOL vmlinux 0xbe773b31 tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0xbe968716 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0xbe99ea58 flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xbe9c788d genl_notify +EXPORT_SYMBOL vmlinux 0xbea2457b __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xbeab6643 get_fs_type +EXPORT_SYMBOL vmlinux 0xbead61b2 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xbeae43c8 inode_init_owner +EXPORT_SYMBOL vmlinux 0xbeb506a2 fb_class +EXPORT_SYMBOL vmlinux 0xbec8164d security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xbee2bebf device_add_disk +EXPORT_SYMBOL vmlinux 0xbee737a5 netif_skb_features +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0209c7 md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xbf07f75e _dev_emerg +EXPORT_SYMBOL vmlinux 0xbf0dadb4 mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0xbf1a4921 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xbf2408cd tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xbf2f1866 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xbf3d3efd bdgrab +EXPORT_SYMBOL vmlinux 0xbf420f2a read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xbf42fc52 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xbf46c6ab pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xbf49a5b5 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xbf596f45 _insl_ns +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf7ca94f nf_log_unregister +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfcc7677 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xbfce5342 vmemmap +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff2f418 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc054ca84 serio_open +EXPORT_SYMBOL vmlinux 0xc05d92cd i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xc0705b3a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xc071d6ea radix__flush_pmd_tlb_range +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc07fb161 pci_read_config_dword +EXPORT_SYMBOL vmlinux 0xc0804995 super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0xc09146f4 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3bc17 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b17b0c mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0b346d8 opal_nx_coproc_init +EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xc0bd150e tso_count_descs +EXPORT_SYMBOL vmlinux 0xc0c606bd napi_consume_skb +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0d6d78f __var_waitqueue +EXPORT_SYMBOL vmlinux 0xc0edc54f pnv_pci_get_gpu_dev +EXPORT_SYMBOL vmlinux 0xc0f6f908 skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0xc0feef78 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc10a255c mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0xc1179daa kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0xc121f372 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xc1328cee start_thread +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc1640fb5 free_task +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc16cf182 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xc179fd8d tcp_time_wait +EXPORT_SYMBOL vmlinux 0xc17c2077 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xc1a08216 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0xc1b49cc4 put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0xc1ba027a mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xc1ce2bd1 gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e17318 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0xc1f3a94d crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xc2234679 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0xc2296d2d fasync_helper +EXPORT_SYMBOL vmlinux 0xc22b1dca blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc22ce28a dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xc2415877 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xc2421c00 cdrom_release +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc25cc8b4 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xc266aaff param_ops_invbool +EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate +EXPORT_SYMBOL vmlinux 0xc27f46a3 simple_unlink +EXPORT_SYMBOL vmlinux 0xc2951c66 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc29e8c67 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xc2a09139 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0xc2ac9155 register_console +EXPORT_SYMBOL vmlinux 0xc2b88074 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xc2bfbbc1 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0xc2c08063 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0xc2cafe94 __lock_buffer +EXPORT_SYMBOL vmlinux 0xc2d6b570 kobject_add +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ee3ec9 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xc2eeab4f file_open_root +EXPORT_SYMBOL vmlinux 0xc2f22689 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xc2f5eb65 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc300e390 new_inode +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc3198435 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc3224f72 genphy_c37_read_status +EXPORT_SYMBOL vmlinux 0xc3235278 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xc3295535 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xc32bf17f mmc_release_host +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc32dec75 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xc344300a d_instantiate +EXPORT_SYMBOL vmlinux 0xc35910af input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc3776e0f pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0xc383f277 iov_iter_revert +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc395b322 security_path_mknod +EXPORT_SYMBOL vmlinux 0xc3a4eac4 tty_port_close +EXPORT_SYMBOL vmlinux 0xc3bbb254 udp_ioctl +EXPORT_SYMBOL vmlinux 0xc3c37185 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xc3dfb215 follow_up +EXPORT_SYMBOL vmlinux 0xc3e2dd35 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xc3fed6c7 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0xc407b7b6 of_translate_address +EXPORT_SYMBOL vmlinux 0xc4125a79 bdget_disk +EXPORT_SYMBOL vmlinux 0xc413c084 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc414b658 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value +EXPORT_SYMBOL vmlinux 0xc41bf3f5 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc4705a43 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc47bbbfe block_write_end +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4924017 input_match_device_id +EXPORT_SYMBOL vmlinux 0xc49ec17f blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xc4a216b5 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xc4ae915e arch_touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xc4b4ffdf xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xc4bcd455 lru_cache_add +EXPORT_SYMBOL vmlinux 0xc4be0497 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0xc4dcc35f blkdev_get +EXPORT_SYMBOL vmlinux 0xc4ee7c70 phy_aneg_done +EXPORT_SYMBOL vmlinux 0xc4efaea3 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xc4f6a5ae inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0xc4fce110 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc50462bf flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0xc50e8050 __ps2_command +EXPORT_SYMBOL vmlinux 0xc515aba6 qe_pin_request +EXPORT_SYMBOL vmlinux 0xc5366502 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc560da9b of_find_backlight +EXPORT_SYMBOL vmlinux 0xc563068e refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc5987e29 md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a396fd udplite_table +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5b72bfb jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5dba500 of_dev_get +EXPORT_SYMBOL vmlinux 0xc5df50a3 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xc5e5543d of_graph_get_remote_endpoint +EXPORT_SYMBOL vmlinux 0xc5e5573a frame_vector_to_pages +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc61b8087 idr_destroy +EXPORT_SYMBOL vmlinux 0xc61ca65e iowrite64be_hi_lo +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc6369552 sync_file_get_fence +EXPORT_SYMBOL vmlinux 0xc63e7af1 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xc64cb86f __close_fd_get_file +EXPORT_SYMBOL vmlinux 0xc65d41ec get_task_cred +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc664b528 mempool_create_node +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc671fc42 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xc67a0d0e devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xc69a0032 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xc6afd2cb genphy_read_abilities +EXPORT_SYMBOL vmlinux 0xc6b92f45 input_inject_event +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6cf0f12 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6d5002c check_disk_change +EXPORT_SYMBOL vmlinux 0xc6d6af46 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xc6dabd2e mmc_erase +EXPORT_SYMBOL vmlinux 0xc6ee651f remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc7040bf5 ucc_tdm_init +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7393727 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79cc8a7 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a50957 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xc7aa31a3 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7c79e62 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xc7c8b858 register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc7d0e385 single_open_size +EXPORT_SYMBOL vmlinux 0xc7d95ead unregister_quota_format +EXPORT_SYMBOL vmlinux 0xc7e3c386 phy_set_max_speed +EXPORT_SYMBOL vmlinux 0xc7f484b1 ida_destroy +EXPORT_SYMBOL vmlinux 0xc7f7c9e2 pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0xc7fbbd3b skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xc8039488 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xc80e850e dquot_initialize +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc8376c67 vga_tryget +EXPORT_SYMBOL vmlinux 0xc8453b66 flush_all_to_thread +EXPORT_SYMBOL vmlinux 0xc8464280 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84f8a40 alloc_pages_vma +EXPORT_SYMBOL vmlinux 0xc85150a1 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xc855e634 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc88ac2aa textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89253f3 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc898da85 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8c14e0b pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xc8d09fef inet_sendmsg +EXPORT_SYMBOL vmlinux 0xc8e16f9a pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xc8e2b801 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xc8f5a95a wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xc90f950b input_open_device +EXPORT_SYMBOL vmlinux 0xc93168c2 fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0xc9355c4f d_alloc +EXPORT_SYMBOL vmlinux 0xc938f623 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xc93df9ec mark_info_dirty +EXPORT_SYMBOL vmlinux 0xc94d429d skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0xc95322fa init_pseudo +EXPORT_SYMBOL vmlinux 0xc9587b3e bd_set_size +EXPORT_SYMBOL vmlinux 0xc95ca9d0 pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc97d7443 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b1664c vme_irq_generate +EXPORT_SYMBOL vmlinux 0xc9ba26d3 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xc9d3687a pci_enable_ptm +EXPORT_SYMBOL vmlinux 0xc9d811d4 tcp_close +EXPORT_SYMBOL vmlinux 0xc9db874c sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0xc9dbc779 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xc9dc3d79 __pte_frag_size_shift +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9e3e253 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xca084ae9 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0xca175bd4 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca29a422 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca3c7bec pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca4e1c4f __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0xca8048f4 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9494ef simple_link +EXPORT_SYMBOL vmlinux 0xcab26424 dm_io +EXPORT_SYMBOL vmlinux 0xcae9d858 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0xcaed32f0 param_ops_long +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf457e4 fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0400f0 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0xcb168a91 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0xcb1c291c unix_detach_fds +EXPORT_SYMBOL vmlinux 0xcb2299a3 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xcb265b8a __icmp_send +EXPORT_SYMBOL vmlinux 0xcb2ea0b5 finish_wait +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb3c8a7d ___ratelimit +EXPORT_SYMBOL vmlinux 0xcb4d2685 dquot_release +EXPORT_SYMBOL vmlinux 0xcb528e09 seq_escape +EXPORT_SYMBOL vmlinux 0xcb626662 mmc_cqe_recovery +EXPORT_SYMBOL vmlinux 0xcb6f4ce1 dmaenginem_async_device_register +EXPORT_SYMBOL vmlinux 0xcb7bbc0d mmc_add_host +EXPORT_SYMBOL vmlinux 0xcb7c80ef kobject_del +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcbc3b94e eeh_check_failure +EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbf08612 mdiobus_free +EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcc043609 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xcc093dd9 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc4c08c8 of_parse_phandle_with_args_map +EXPORT_SYMBOL vmlinux 0xcc4c261c prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc50423b ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc626c2c completion_done +EXPORT_SYMBOL vmlinux 0xcc672934 page_mapping +EXPORT_SYMBOL vmlinux 0xcc6922c6 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xcc7683a3 secpath_set +EXPORT_SYMBOL vmlinux 0xcc7b5a90 dec_node_page_state +EXPORT_SYMBOL vmlinux 0xccb08746 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xccb6a90c rproc_add +EXPORT_SYMBOL vmlinux 0xccb6eac8 dma_fence_free +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xccc95a8b tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xccec39df vio_get_attribute +EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd008a5f pneigh_lookup +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd285a75 put_tty_driver +EXPORT_SYMBOL vmlinux 0xcd3fc6c2 simple_readpage +EXPORT_SYMBOL vmlinux 0xcd4d4835 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xcd5a504c security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0xcd619583 kern_unmount +EXPORT_SYMBOL vmlinux 0xcd6e448d input_register_handler +EXPORT_SYMBOL vmlinux 0xcd7adad8 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd89192a of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xcd93e5cd netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xcd9593f0 tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0xcda47a61 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xcdae5503 generic_fillattr +EXPORT_SYMBOL vmlinux 0xcdb82704 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xcdc0349c add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd623dd block_commit_write +EXPORT_SYMBOL vmlinux 0xcdda265b iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xcdfe851e disk_stack_limits +EXPORT_SYMBOL vmlinux 0xce18bbe1 fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xce1b3190 srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2edbbe mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xce382712 ihold +EXPORT_SYMBOL vmlinux 0xce3864eb ZSTD_compress_usingDict +EXPORT_SYMBOL vmlinux 0xce3f6acb get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce4fca0d security_inet_conn_established +EXPORT_SYMBOL vmlinux 0xce50e5de ZSTD_compress_usingCDict +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5dfbf4 netdev_features_change +EXPORT_SYMBOL vmlinux 0xce731b34 ucc_slow_get_qe_cr_subblock +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce807151 idr_get_next +EXPORT_SYMBOL vmlinux 0xce99f918 default_llseek +EXPORT_SYMBOL vmlinux 0xce9a031e generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0xce9b4e9c unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0xce9e8ced mdio_device_register +EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceada8ee bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xcec766f1 __memset16 +EXPORT_SYMBOL vmlinux 0xcecac727 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xcee8d8ba dev_trans_start +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xceee44a2 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf0b57e5 blk_set_runtime_active +EXPORT_SYMBOL vmlinux 0xcf18b662 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf3501a1 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xcf39fabe ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xcf429b70 do_SAK +EXPORT_SYMBOL vmlinux 0xcf56ba5a kmalloc_caches +EXPORT_SYMBOL vmlinux 0xcf5996f4 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xcf5e4174 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xcf6d95ce sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xcf782c88 nvdimm_namespace_locked +EXPORT_SYMBOL vmlinux 0xcf7df006 mmc_run_bkops +EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos +EXPORT_SYMBOL vmlinux 0xcfa1a158 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xcfb60316 clk_bulk_get_all +EXPORT_SYMBOL vmlinux 0xcfb6effd devm_register_netdev +EXPORT_SYMBOL vmlinux 0xcfd4d81a devm_free_irq +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd048ee96 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd057f581 tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd06aa014 vfs_mkobj +EXPORT_SYMBOL vmlinux 0xd06b53a5 cdev_init +EXPORT_SYMBOL vmlinux 0xd07022ec unregister_qdisc +EXPORT_SYMBOL vmlinux 0xd075c8b6 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xd080d870 configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0xd08e9e9f phy_queue_state_machine +EXPORT_SYMBOL vmlinux 0xd0a091cf jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b1fa40 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xd0bbf597 rproc_get_by_phandle +EXPORT_SYMBOL vmlinux 0xd0bd487b hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd0fcdb05 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10ecc07 to_nd_dax +EXPORT_SYMBOL vmlinux 0xd11bb54b scm_fp_dup +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd1428d83 pci_read_config_word +EXPORT_SYMBOL vmlinux 0xd143524c rproc_get_by_child +EXPORT_SYMBOL vmlinux 0xd145d56b secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0xd149f32a __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xd154a6d4 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd16c4612 tcp_filter +EXPORT_SYMBOL vmlinux 0xd1784a15 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd185588d dst_destroy +EXPORT_SYMBOL vmlinux 0xd1b10e0c __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xd1c52033 vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d9ab4b nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xd1e3a48a security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xd1f17bc0 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xd1f95220 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xd1fac222 devm_request_resource +EXPORT_SYMBOL vmlinux 0xd21c5139 iowrite64_lo_hi +EXPORT_SYMBOL vmlinux 0xd2445389 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2856bd0 sock_no_bind +EXPORT_SYMBOL vmlinux 0xd2ac8ebe twl6040_power +EXPORT_SYMBOL vmlinux 0xd2af04a6 register_mii_timestamper +EXPORT_SYMBOL vmlinux 0xd2b78955 rproc_add_carveout +EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2eadad8 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd2eb1bc2 blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0xd319593f vc_resize +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd336b74a pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd33c32bd mutex_is_locked +EXPORT_SYMBOL vmlinux 0xd34050e6 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xd3418d22 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xd3565463 posix_lock_file +EXPORT_SYMBOL vmlinux 0xd356e781 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd371d866 param_set_invbool +EXPORT_SYMBOL vmlinux 0xd372dfe4 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xd3865caf pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0xd39a6598 register_netdevice +EXPORT_SYMBOL vmlinux 0xd3a197a3 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xd3af7b22 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xd3b18983 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xd3b99e47 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd3bbe51c __xa_alloc +EXPORT_SYMBOL vmlinux 0xd3bc84a5 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0xd3c04e31 tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0xd3de33ed rps_needed +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3f7574d seq_release +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd42aa77b netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd46423d3 sock_create_lite +EXPORT_SYMBOL vmlinux 0xd46e0559 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xd470dc0a alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xd47b595e fb_pan_display +EXPORT_SYMBOL vmlinux 0xd47c9661 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0xd489e45e dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xd48c7e3c security_unix_may_send +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4b8d60f mmc_free_host +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4cbb2e9 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xd4d4e57d d_rehash +EXPORT_SYMBOL vmlinux 0xd4d7c068 fsl_upm_find +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd4fad468 skb_split +EXPORT_SYMBOL vmlinux 0xd4fd0ec2 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0xd4ff3e64 tty_name +EXPORT_SYMBOL vmlinux 0xd5047232 mmc_retune_release +EXPORT_SYMBOL vmlinux 0xd515212f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd5334afd pci_scan_slot +EXPORT_SYMBOL vmlinux 0xd5513115 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xd561406b seq_release_private +EXPORT_SYMBOL vmlinux 0xd5777c58 sock_no_linger +EXPORT_SYMBOL vmlinux 0xd5b12f7d radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5b3e942 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xd5b7a9a3 d_drop +EXPORT_SYMBOL vmlinux 0xd5be130e cpu_core_map +EXPORT_SYMBOL vmlinux 0xd5c16bba xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xd5cea5dc reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0xd5cffad4 i2c_transfer +EXPORT_SYMBOL vmlinux 0xd5e5d5dc kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd5e82368 kobject_init +EXPORT_SYMBOL vmlinux 0xd5f749e2 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd61b8add of_mdiobus_child_is_phy +EXPORT_SYMBOL vmlinux 0xd622abe9 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xd62a753a freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax +EXPORT_SYMBOL vmlinux 0xd6557f04 km_state_expired +EXPORT_SYMBOL vmlinux 0xd65a248a phy_start_cable_test_tdr +EXPORT_SYMBOL vmlinux 0xd672f1aa rproc_report_crash +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68af1c9 remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd68f86b0 dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0xd6948ac9 dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xd69948fb proc_dointvec +EXPORT_SYMBOL vmlinux 0xd69efb3a tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd6a91f54 twl_i2c_read +EXPORT_SYMBOL vmlinux 0xd6af0c00 fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0xd6af298a iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xd6b35f84 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xd6bc7153 _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd6c1015c nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd6c39e2d fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f262c2 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd6fdb8cd blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd70b141c nf_log_packet +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd7264053 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xd7264fa3 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xd72df77e truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xd738d877 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xd7717811 flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd78a6be9 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xd7b31f3a __inc_node_page_state +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7d533e9 mmc_request_done +EXPORT_SYMBOL vmlinux 0xd7d6bb50 param_set_short +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7fa8c94 generic_copy_file_range +EXPORT_SYMBOL vmlinux 0xd802e761 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xd80a0134 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xd80afd1f generic_write_checks +EXPORT_SYMBOL vmlinux 0xd8196cab dev_printk_emit +EXPORT_SYMBOL vmlinux 0xd82a2fa9 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xd83956bd nd_btt_probe +EXPORT_SYMBOL vmlinux 0xd8548b30 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0xd857fcc5 rproc_da_to_va +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd8617c78 proto_unregister +EXPORT_SYMBOL vmlinux 0xd8682d23 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0xd875ecea tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0xd87f50eb md_unregister_thread +EXPORT_SYMBOL vmlinux 0xd880b269 blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aaf654 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0xd8c6d727 ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0xd8cd4f70 blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0xd8cd7348 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xd8ce6b44 d_path +EXPORT_SYMBOL vmlinux 0xd8d5c2df skb_clone_sk +EXPORT_SYMBOL vmlinux 0xd8e8e831 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xd90cb249 ZSTD_getBlockSizeMax +EXPORT_SYMBOL vmlinux 0xd911c7e0 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xd913f225 tcf_block_get +EXPORT_SYMBOL vmlinux 0xd9209367 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xd923e3bf dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0xd92dd627 ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0xd93427b3 __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xd93ec4bb poll_initwait +EXPORT_SYMBOL vmlinux 0xd95c2c6e of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd966b3a7 touch_atime +EXPORT_SYMBOL vmlinux 0xd9720212 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd994fb80 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd9ace855 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xd9ad155f rproc_shutdown +EXPORT_SYMBOL vmlinux 0xd9ade4c8 km_new_mapping +EXPORT_SYMBOL vmlinux 0xd9aed75c mmc_can_trim +EXPORT_SYMBOL vmlinux 0xd9b2c00f netlink_unicast +EXPORT_SYMBOL vmlinux 0xd9b3423b alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9de06d4 phy_request_interrupt +EXPORT_SYMBOL vmlinux 0xd9ec974c srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xd9edd139 unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0xd9fb0ba4 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xda01508f commit_creds +EXPORT_SYMBOL vmlinux 0xda04d4b5 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xda12050f tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0xda1c9200 pci_dev_put +EXPORT_SYMBOL vmlinux 0xda1ecf88 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xda226d2f blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xda254cb7 dev_mc_add +EXPORT_SYMBOL vmlinux 0xda2936b2 inc_node_page_state +EXPORT_SYMBOL vmlinux 0xda300676 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda400778 pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xda400a8f udp6_seq_ops +EXPORT_SYMBOL vmlinux 0xda440b0f netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xda612e4f tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xda6b52df mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda7eaadf blkdev_put +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda87f85c pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda91b362 block_write_full_page +EXPORT_SYMBOL vmlinux 0xda9fc7ae kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xdaa0038f xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0xdaa0b460 current_time +EXPORT_SYMBOL vmlinux 0xdaa63b2a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad269dc rt6_lookup +EXPORT_SYMBOL vmlinux 0xdae57638 hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xdaea0dc9 kobject_get +EXPORT_SYMBOL vmlinux 0xdaf66d5d brioctl_set +EXPORT_SYMBOL vmlinux 0xdb026f5b migrate_page_copy +EXPORT_SYMBOL vmlinux 0xdb0da2e9 dquot_operations +EXPORT_SYMBOL vmlinux 0xdb0f2005 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xdb37f3cf ns_capable_setid +EXPORT_SYMBOL vmlinux 0xdb42a040 set_disk_ro +EXPORT_SYMBOL vmlinux 0xdb42f839 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0xdb5758dd md_error +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb891823 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xdb89d5da __tracepoint_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xdb9168a6 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xdbba1bd7 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xdbd3ba28 mroute6_is_socket +EXPORT_SYMBOL vmlinux 0xdbd4fd37 pci_write_config_dword +EXPORT_SYMBOL vmlinux 0xdbd8da44 configfs_register_group +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbf3110e gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0xdbfa0017 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xdc038fcd unlock_rename +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc366c61 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc496b9a proc_set_size +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc4c5730 poll_freewait +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc517533 mntput +EXPORT_SYMBOL vmlinux 0xdc5b4f99 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xdc5c29e1 mr_fill_mroute +EXPORT_SYMBOL vmlinux 0xdc5f002a of_get_next_child +EXPORT_SYMBOL vmlinux 0xdc6d859d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xdc8bca64 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xdc90c9ea mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc94abf0 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xdca0c6e4 phy_device_create +EXPORT_SYMBOL vmlinux 0xdca985b0 sk_common_release +EXPORT_SYMBOL vmlinux 0xdcb1ebc0 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0xdcb4e21e find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcdcc52d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xdce71a20 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xdcf4b6d0 param_set_uint +EXPORT_SYMBOL vmlinux 0xdd0c6145 drop_super +EXPORT_SYMBOL vmlinux 0xdd0c961a xp_free +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd510e39 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd779bd4 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd9eb4ff cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddb97d0e filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xddd26b4b vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xde0108f9 of_read_drc_info_cell +EXPORT_SYMBOL vmlinux 0xde0ea449 of_find_property +EXPORT_SYMBOL vmlinux 0xde1e2e0e fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0xde42ca48 udplite_prot +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde67f3c1 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xde706578 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xde71bc24 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xde8ad396 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb29805 tcp_seq_next +EXPORT_SYMBOL vmlinux 0xdeb55e90 __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xdec657fd __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xded32a0c eth_gro_complete +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xdeecdbbc security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xdef1c412 unregister_key_type +EXPORT_SYMBOL vmlinux 0xdef3929d ip_frag_init +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf00b5d7 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xdf07da33 posix_acl_valid +EXPORT_SYMBOL vmlinux 0xdf14bc24 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xdf21aa08 bh_submit_read +EXPORT_SYMBOL vmlinux 0xdf22951d xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf426269 flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0xdf54151a of_get_address +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf6c74de scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xdf79000b ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0xdf9250a5 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdfb7d6ba dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xdfbce32e __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xdfc082ec dcache_dir_open +EXPORT_SYMBOL vmlinux 0xdfc1c63b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xdfc2d82a soft_cursor +EXPORT_SYMBOL vmlinux 0xdfc3fac0 seq_write +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdfee192e migrate_vma_pages +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb744b frame_vector_to_pfns +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe0034644 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xe01760e6 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xe01d60e5 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0xe022e639 gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0xe0285c0e devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xe036dcdf irq_to_desc +EXPORT_SYMBOL vmlinux 0xe03df5d8 pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0xe03e337e __mod_node_page_state +EXPORT_SYMBOL vmlinux 0xe04883c6 phy_attached_print +EXPORT_SYMBOL vmlinux 0xe0522ed1 blackhole_netdev +EXPORT_SYMBOL vmlinux 0xe05e3013 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xe061870e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xe06741be deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xe069349f of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xe0702530 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xe073a846 tcp_child_process +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe089edf8 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xe08c58a1 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0xe08e70c8 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold +EXPORT_SYMBOL vmlinux 0xe0a3dac1 dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0xe0ae8142 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b3bd35 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0xe0d08cf8 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xe0f96895 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe12bda79 vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xe13d5d07 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xe1420ec6 tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0xe143d73a generic_file_mmap +EXPORT_SYMBOL vmlinux 0xe156dfc8 scsi_host_busy +EXPORT_SYMBOL vmlinux 0xe17e8940 rproc_alloc +EXPORT_SYMBOL vmlinux 0xe186307c tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xe19dd0eb filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1b59ae9 __debugger +EXPORT_SYMBOL vmlinux 0xe1c2cd55 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1efb2d7 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xe1f8deac con_is_visible +EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe233eea7 register_netdev +EXPORT_SYMBOL vmlinux 0xe23d06d3 mmc_retune_unpause +EXPORT_SYMBOL vmlinux 0xe24170ba fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0xe2520d94 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0xe25a92bb tty_hangup +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe279001d blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe27e460c pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xe28e46bc tty_port_put +EXPORT_SYMBOL vmlinux 0xe2a352f2 get_tree_nodev +EXPORT_SYMBOL vmlinux 0xe2a6d424 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xe2ac6d5d xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xe2adc96d vfs_symlink +EXPORT_SYMBOL vmlinux 0xe2b36d69 fs_bio_set +EXPORT_SYMBOL vmlinux 0xe2bc413b mmc_put_card +EXPORT_SYMBOL vmlinux 0xe2c735fd iov_iter_advance +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e1ec7a pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xe2e3fb5a finish_open +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe3179eaf of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xe31d8a78 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xe3228848 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe345efe2 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xe3535123 redraw_screen +EXPORT_SYMBOL vmlinux 0xe355239a fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xe37f4a34 set_bh_page +EXPORT_SYMBOL vmlinux 0xe381dc58 nf_log_set +EXPORT_SYMBOL vmlinux 0xe38744ac mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xe399d94d param_ops_uint +EXPORT_SYMBOL vmlinux 0xe3b3b1e0 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xe3c463b4 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3ecb20e mpage_readpage +EXPORT_SYMBOL vmlinux 0xe3ede696 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xe3f29f70 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xe3f8ee5c tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe40cc353 release_sock +EXPORT_SYMBOL vmlinux 0xe41476d9 ZSTD_getParams +EXPORT_SYMBOL vmlinux 0xe419bc99 iowrite32be +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe45427df of_get_parent +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a3c170 pci_map_rom +EXPORT_SYMBOL vmlinux 0xe4adb908 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xe4b6bda4 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xe4bdeb8e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xe4d9a7f7 ps2_sliced_command +EXPORT_SYMBOL vmlinux 0xe4de73a6 build_skb +EXPORT_SYMBOL vmlinux 0xe4def624 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xe4e7cff3 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe4efb700 register_sysctl +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe5052c35 gtm_set_timer16 +EXPORT_SYMBOL vmlinux 0xe51bde54 memcpy_page_flushcache +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe548d5df flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xe56955b7 vme_master_request +EXPORT_SYMBOL vmlinux 0xe573110a scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5869ebe pin_user_pages +EXPORT_SYMBOL vmlinux 0xe58a79d2 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe592cb9f __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xe59f742f uart_suspend_port +EXPORT_SYMBOL vmlinux 0xe5a00e19 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free +EXPORT_SYMBOL vmlinux 0xe5bd7b6e vfs_tmpfile +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d71a61 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xe5fcd1da of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe614f7f6 ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xe63bafdc __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe65aa108 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xe66a8d72 netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0xe66dea50 dm_get_device +EXPORT_SYMBOL vmlinux 0xe6861ca9 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0xe694077f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xe69aeaf3 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xe6a445f4 __skb_pad +EXPORT_SYMBOL vmlinux 0xe6aa1427 nf_log_trace +EXPORT_SYMBOL vmlinux 0xe6bffe7f configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0xe6c9412c config_group_init +EXPORT_SYMBOL vmlinux 0xe6cf5d78 fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0xe6d50ac2 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xe6ee3a0b devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe6fca01f gro_cells_init +EXPORT_SYMBOL vmlinux 0xe720d264 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe7414e8b pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0xe74c3f7c radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0xe7722c21 skb_store_bits +EXPORT_SYMBOL vmlinux 0xe788b1d3 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xe78ce5a3 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xe7901cc1 tcf_register_action +EXPORT_SYMBOL vmlinux 0xe7c59d12 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7da28ab tty_port_open +EXPORT_SYMBOL vmlinux 0xe7e123e3 vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0xe7fa5e05 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xe800b768 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xe82b4435 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xe8352b2f seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0xe8355c01 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xe8395dd0 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xe83ed2bc eth_type_trans +EXPORT_SYMBOL vmlinux 0xe854806b __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xe854dfb6 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe878cc22 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xe8868836 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe893b341 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xe89be58e md_done_sync +EXPORT_SYMBOL vmlinux 0xe8a67dfa netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xe8d2772e audit_log +EXPORT_SYMBOL vmlinux 0xe8d54c77 xa_clear_mark +EXPORT_SYMBOL vmlinux 0xe8f2409b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xe8f962da vfs_readlink +EXPORT_SYMBOL vmlinux 0xe9077baf blk_get_request +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91798cd sock_set_keepalive +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe97ffd7e d_genocide +EXPORT_SYMBOL vmlinux 0xe9d76f5a ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fc8b01 gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xe9fe5295 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xea2ab7bf xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea426e43 mempool_resize +EXPORT_SYMBOL vmlinux 0xea584087 security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xea60f40f __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0xea792ac1 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0xea80392f on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea8ccb19 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xea8fe721 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xea960e6d discard_new_inode +EXPORT_SYMBOL vmlinux 0xeab3fd7c skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xeabc12d5 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xeabf7152 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xeac45e94 backlight_device_set_brightness +EXPORT_SYMBOL vmlinux 0xeacd3470 datagram_poll +EXPORT_SYMBOL vmlinux 0xead63085 igrab +EXPORT_SYMBOL vmlinux 0xead6d1da qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb166428 mr_table_dump +EXPORT_SYMBOL vmlinux 0xeb201b91 input_unregister_device +EXPORT_SYMBOL vmlinux 0xeb22c2d7 of_get_pci_address +EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc +EXPORT_SYMBOL vmlinux 0xeb29441a agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xeb36ff44 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb45652c __check_sticky +EXPORT_SYMBOL vmlinux 0xeb488b36 input_set_capability +EXPORT_SYMBOL vmlinux 0xeb58df63 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0xeb629c4f xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xeb6a30b1 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xeb6d8a46 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xeb855ac2 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb8f2d4f __pmd_frag_size_shift +EXPORT_SYMBOL vmlinux 0xeb98d5f9 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xeb9c0015 rproc_put +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebd32cdd dma_fence_get_status +EXPORT_SYMBOL vmlinux 0xebe00cc9 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xebec2290 __ip_options_compile +EXPORT_SYMBOL vmlinux 0xebfba86d blk_put_queue +EXPORT_SYMBOL vmlinux 0xec0537d8 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0xec15717f fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xec20e7e4 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xec2accd5 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4fb493 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xec57d690 generic_perform_write +EXPORT_SYMBOL vmlinux 0xec613aa7 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0xec754cd1 release_pages +EXPORT_SYMBOL vmlinux 0xec8e7761 phy_resume +EXPORT_SYMBOL vmlinux 0xec97ead8 __kernel_io_start +EXPORT_SYMBOL vmlinux 0xec9ec942 of_device_unregister +EXPORT_SYMBOL vmlinux 0xec9fec49 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xecadc0c1 __mdiobus_register +EXPORT_SYMBOL vmlinux 0xecb5ae15 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece9516f clocksource_unregister +EXPORT_SYMBOL vmlinux 0xed282d66 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xed39bf61 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xed3dbc3f pci_choose_state +EXPORT_SYMBOL vmlinux 0xed3f3456 drop_super_exclusive +EXPORT_SYMBOL vmlinux 0xed4e1694 dma_resv_fini +EXPORT_SYMBOL vmlinux 0xed58ba09 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0xed6d7485 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xed71d3b9 pci_release_resource +EXPORT_SYMBOL vmlinux 0xed94b3e8 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xeda5b09d mipi_dsi_shutdown_peripheral +EXPORT_SYMBOL vmlinux 0xeda9a45e get_agp_version +EXPORT_SYMBOL vmlinux 0xedb5b8f5 unix_gc_lock +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedd95957 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xede275db try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xee02f958 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xee0e0c5b nvm_end_io +EXPORT_SYMBOL vmlinux 0xee28f44a mpage_writepage +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee32c914 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xee429578 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xee434e7f udp_set_csum +EXPORT_SYMBOL vmlinux 0xee50bd47 to_nd_btt +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee592dac pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeeb1affa vme_master_mmap +EXPORT_SYMBOL vmlinux 0xeeb690e4 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xeec11759 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xeed5bcca __pud_table_size +EXPORT_SYMBOL vmlinux 0xeed7f8cf lock_sock_fast +EXPORT_SYMBOL vmlinux 0xeeffa34b xps_needed +EXPORT_SYMBOL vmlinux 0xef045ee0 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xef1ff1c8 ata_print_version +EXPORT_SYMBOL vmlinux 0xef25cfc1 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xef42dc28 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xef4ec375 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xef4fd593 revert_creds +EXPORT_SYMBOL vmlinux 0xef509056 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xef50b355 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xef589237 param_ops_charp +EXPORT_SYMBOL vmlinux 0xef71a22c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xefa892bc scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xefacae98 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefb4f163 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xefe4f679 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xefe71870 set_security_override +EXPORT_SYMBOL vmlinux 0xefeb5c0e __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xefebbd40 ioread64be_lo_hi +EXPORT_SYMBOL vmlinux 0xefef3630 inc_node_state +EXPORT_SYMBOL vmlinux 0xeff608e0 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf0225086 tty_port_init +EXPORT_SYMBOL vmlinux 0xf0303863 input_get_poll_interval +EXPORT_SYMBOL vmlinux 0xf0329ad1 down_read_trylock +EXPORT_SYMBOL vmlinux 0xf0403209 pci_pme_active +EXPORT_SYMBOL vmlinux 0xf0469b42 __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xf04af8e9 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0xf05d1a37 of_phy_connect +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf068a095 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xf06cfac7 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xf07350bd proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0xf07525f4 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0xf07801a3 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf07de2c5 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0b0df8e sock_i_uid +EXPORT_SYMBOL vmlinux 0xf0c361eb napi_schedule_prep +EXPORT_SYMBOL vmlinux 0xf0ca703a fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xf0d0c3ec seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf1188612 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf11dbb49 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf1222750 agp_copy_info +EXPORT_SYMBOL vmlinux 0xf1309aaa rproc_remove_subdev +EXPORT_SYMBOL vmlinux 0xf1349228 swake_up_locked +EXPORT_SYMBOL vmlinux 0xf137486c simple_lookup +EXPORT_SYMBOL vmlinux 0xf13a8e1c dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0xf169c7ec fd_install +EXPORT_SYMBOL vmlinux 0xf17f402a scsi_add_device +EXPORT_SYMBOL vmlinux 0xf18de7bc tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf18e54a9 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1b86834 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1d18e90 _outsw_ns +EXPORT_SYMBOL vmlinux 0xf1d65856 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dced1d vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e63929 devmap_managed_key +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ebb504 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xf208f1c3 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xf209c1cc inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf227e7da __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24321bc simple_dir_operations +EXPORT_SYMBOL vmlinux 0xf24802e4 skb_find_text +EXPORT_SYMBOL vmlinux 0xf25dc77c genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xf262af5d pci_write_config_byte +EXPORT_SYMBOL vmlinux 0xf2705d8b ucc_fast_init +EXPORT_SYMBOL vmlinux 0xf276d6da scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf2927c93 vmap +EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c99200 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xf2d0357c page_pool_update_nid +EXPORT_SYMBOL vmlinux 0xf2dc0a43 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf31f1197 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf32a2c4d bio_devname +EXPORT_SYMBOL vmlinux 0xf3322d36 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34f3bc3 dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3718cd9 xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0xf3851da7 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf392daaa inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xf3ac11ee scm_detach_fds +EXPORT_SYMBOL vmlinux 0xf3b1db75 bioset_exit +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3c453dc fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0xf3ceeb6a compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf3d64969 arch_free_page +EXPORT_SYMBOL vmlinux 0xf3dc5753 set_wb_congested +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf40c2c74 inet_getname +EXPORT_SYMBOL vmlinux 0xf41bc9e2 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf42d64ca proc_dostring +EXPORT_SYMBOL vmlinux 0xf437a5a3 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf45dd480 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0xf465a7d2 nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0xf472017a swake_up_all +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf498618f pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xf4a6bc86 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0xf4ab9e4c padata_stop +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c87baf skb_push +EXPORT_SYMBOL vmlinux 0xf4d61909 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4e44984 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0xf4ebd477 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f19832 inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0xf4fa2649 __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xf515b1f6 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0xf5173506 timestamp_truncate +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53f722e trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xf5488fd9 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xf54c2092 reuseport_alloc +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf579a361 map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c4b444 memcpy_flushcache +EXPORT_SYMBOL vmlinux 0xf5daa497 tty_unlock +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e53603 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xf5e5a87b hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5ebc1df __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf60de0d1 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xf6150d63 __xa_set_mark +EXPORT_SYMBOL vmlinux 0xf62c39fe ucc_slow_graceful_stop_tx +EXPORT_SYMBOL vmlinux 0xf63d2d17 dquot_get_state +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf6517b05 rproc_elf_load_rsc_table +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf6743dc4 pipe_unlock +EXPORT_SYMBOL vmlinux 0xf681acfc hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0xf681d5f0 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf695cb77 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xf6a35258 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xf6c85149 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xf6d381ec uart_match_port +EXPORT_SYMBOL vmlinux 0xf6e6661c mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70be483 ptp_clock_index +EXPORT_SYMBOL vmlinux 0xf7252211 path_is_mountpoint +EXPORT_SYMBOL vmlinux 0xf7279bd3 vfs_llseek +EXPORT_SYMBOL vmlinux 0xf7347e7e nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf73e5680 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf762334a phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xf76ce9d1 netif_napi_del +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf7c2df39 __wake_up_bit +EXPORT_SYMBOL vmlinux 0xf7ccf9ab elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0xf7fcafb4 put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0xf8075083 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xf80de932 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8521539 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xf857c6b8 proto_register +EXPORT_SYMBOL vmlinux 0xf861c328 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xf86bfc79 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xf882e99d phy_device_remove +EXPORT_SYMBOL vmlinux 0xf883db75 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf8b063f2 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8e1115e _outsl_ns +EXPORT_SYMBOL vmlinux 0xf8e746c1 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xf8f34870 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf8f7ab02 inet_gso_segment +EXPORT_SYMBOL vmlinux 0xf8fbaf0c devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf922e3e1 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xf92ed4d3 get_tree_single +EXPORT_SYMBOL vmlinux 0xf935995b register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf943918c vme_bus_type +EXPORT_SYMBOL vmlinux 0xf944e7f2 tcp_peek_len +EXPORT_SYMBOL vmlinux 0xf94eedbc filemap_flush +EXPORT_SYMBOL vmlinux 0xf95b072f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xf96ec242 rfs_needed +EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len +EXPORT_SYMBOL vmlinux 0xf9722676 twl_i2c_write +EXPORT_SYMBOL vmlinux 0xf98eba16 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b1cdcd smp_call_function_many +EXPORT_SYMBOL vmlinux 0xf9b6abed tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c8ec9b blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0xf9cf7642 prepare_creds +EXPORT_SYMBOL vmlinux 0xf9e10de0 generic_fadvise +EXPORT_SYMBOL vmlinux 0xf9e38268 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL vmlinux 0xf9fd9a8f skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xfa0e406a inode_insert5 +EXPORT_SYMBOL vmlinux 0xfa2789f3 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xfa4687e1 netlink_set_err +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa8c985e csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0xfa936237 sock_rfree +EXPORT_SYMBOL vmlinux 0xfa95910e unload_nls +EXPORT_SYMBOL vmlinux 0xfab67519 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xfabf866e phy_remove_link_mode +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad7df96 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xfaef2c31 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xfafe3a49 md_bitmap_free +EXPORT_SYMBOL vmlinux 0xfb232c7e idr_get_next_ul +EXPORT_SYMBOL vmlinux 0xfb280208 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb485f84 phy_get_pause +EXPORT_SYMBOL vmlinux 0xfb52adea scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6c4944 __lock_page +EXPORT_SYMBOL vmlinux 0xfb860ec8 netif_device_detach +EXPORT_SYMBOL vmlinux 0xfb8d873a init_on_free +EXPORT_SYMBOL vmlinux 0xfba4a58a iov_iter_init +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbb942a4 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbe1da10 mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0xfbe90abb tcp_connect +EXPORT_SYMBOL vmlinux 0xfbeff539 posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0xfbfe0e86 ucc_fast_free +EXPORT_SYMBOL vmlinux 0xfbff99a8 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0xfc05d1a0 __find_get_block +EXPORT_SYMBOL vmlinux 0xfc3127d3 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xfc35c7fd kthread_stop +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc39eb56 netdev_crit +EXPORT_SYMBOL vmlinux 0xfc3e61d6 phy_suspend +EXPORT_SYMBOL vmlinux 0xfc41ccb6 neigh_lookup +EXPORT_SYMBOL vmlinux 0xfc65f491 mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0xfc6ec0ff nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xfc747092 __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xfc7c0e09 follow_down_one +EXPORT_SYMBOL vmlinux 0xfc8d228a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xfc9b5d1d touchscreen_report_pos +EXPORT_SYMBOL vmlinux 0xfc9eb8d9 rio_query_mport +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbcaadd md_update_sb +EXPORT_SYMBOL vmlinux 0xfcc56dbe pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcdf46b6 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xfceb83ad ps2_end_command +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfd002d64 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xfd01a8b3 xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0xfd0f1acb is_nd_btt +EXPORT_SYMBOL vmlinux 0xfd14d3b1 rproc_elf_find_loaded_rsc_table +EXPORT_SYMBOL vmlinux 0xfd1549b3 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0xfd231414 find_inode_rcu +EXPORT_SYMBOL vmlinux 0xfd4a55be skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0xfd57e897 pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xfd5ea356 seq_hex_dump +EXPORT_SYMBOL vmlinux 0xfd605800 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xfd8bd604 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xfd9d89ef jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbdfa89 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xfdbe3eb4 filemap_fault +EXPORT_SYMBOL vmlinux 0xfdc4fa5d sync_blockdev +EXPORT_SYMBOL vmlinux 0xfdc767ad configfs_depend_item +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdcccf19 get_super_thawed +EXPORT_SYMBOL vmlinux 0xfdd4216d pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xfdd6bbad __wake_up +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdeeba95 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xfdf70093 ZSTD_CStreamOutSize +EXPORT_SYMBOL vmlinux 0xfdfcdd5f __csum_partial +EXPORT_SYMBOL vmlinux 0xfdff71c1 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe05da6b rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update +EXPORT_SYMBOL vmlinux 0xfe1d9638 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0xfe252dd4 module_put +EXPORT_SYMBOL vmlinux 0xfe2a4380 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe4a9a04 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xfe4b1f27 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe93ce2a peernet2id +EXPORT_SYMBOL vmlinux 0xfe97e522 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xfe9ffcaa vme_irq_handler +EXPORT_SYMBOL vmlinux 0xfeae01a8 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfebcb3a0 __close_fd +EXPORT_SYMBOL vmlinux 0xfec7c5db locks_copy_lock +EXPORT_SYMBOL vmlinux 0xfed75601 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xfedca226 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee709d6 seq_open_private +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef17703 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff18821d __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2726bb tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xff5b2816 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xff61f94b dma_set_mask +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff69cc78 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xff8bd3b0 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0xff9c4b56 ZSTD_compressBound +EXPORT_SYMBOL vmlinux 0xff9f1deb eth_header_parse +EXPORT_SYMBOL vmlinux 0xffb392fb flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0xffb6bf63 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xffc2b1df misc_register +EXPORT_SYMBOL vmlinux 0xffd5010d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xffe3e845 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xffe690fd udp_table +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0xfff8d886 nf_ct_attach +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x00f93f8b kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0199ece9 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x02679963 kvmppc_xics_rm_complete +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0386182f kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0433d714 kvm_get_running_vcpu +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x089eaff1 vcpu_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0a3fcde0 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0b8fe707 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x10ec6725 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x16b62527 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x199df5b7 kvmppc_xics_set_mapped +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x19cf20d1 kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x19e5a239 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x22668a1d kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x23079032 kvmppc_xics_clr_mapped +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2a648b12 kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2ca1d3b9 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2f54a13c kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x316e27fc __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x37a6f0af kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x37c8ce0a kvmppc_xive_set_mapped +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x39af2ea4 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e6a5dc4 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3f7d4027 kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x41b8db22 kvm_vcpu_unmap +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4da2a898 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4fbebff2 kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5163f29b kvmppc_core_queue_machine_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5671156e kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5899d7f3 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x595d6b6a kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5c67f128 kvmppc_core_queue_inst_storage +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6250d632 kvm_vcpu_map +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x63eef82c kvmppc_xive_clr_mapped +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x641dcb59 kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x643fe043 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x68f78d63 kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6b4a68a3 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6bf6c650 mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6c449724 vcpu_put +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6eb4815d kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6fc145dc kvmppc_h_put_tce_indirect +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x70f7b103 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x711e6832 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x75a4b358 gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x765002f2 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x779efc8c kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x784ab476 gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7f3e1579 kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7f51204e kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x820307b0 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x82ae3229 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x86c9518f kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x873d2842 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x881e6e5b kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8ea6ed70 kvmppc_xive_push_vcpu +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8ed110b8 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x909d6556 kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x92f416aa kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x935834f5 kvmppc_h_stuff_tce +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9976ff72 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa7526193 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa8440792 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xad65830d __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb57910c3 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb71765b2 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb7cf957a kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb83e6c33 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb9fb6cfb kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbf322a29 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc134338c kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc20098ff kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc9763d99 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xccbfc3ca kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcd50bff2 kvmppc_core_queue_data_storage +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcd6ce12b kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcdc8cafb kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xce38c380 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcebc139b kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd077d93e kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd1135f5c kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd42e953f kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd7c496cf kvm_vcpu_destroy +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdcb5ba79 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdd44d2c9 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdd63de66 kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xde8978d4 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe162378f kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe1e02bd9 kvmppc_h_put_tce +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe2a87907 kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe3ff26ec kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe71f0dd5 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe804896e gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xece04ea3 kvm_map_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf98bb5ea kvm_unmap_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfa62cd98 kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfb6a432c kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-hv 0x36df3871 kvmhv_copy_from_guest_radix +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-hv 0x6b4da970 kvmhv_copy_to_guest_radix +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-hv 0xf8aeb0ea __kvmhv_copy_tofrom_guest_radix +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x8225ec33 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL crypto/af_alg 0x076c19ad af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x12af1195 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x1d67813d af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x2dc3b33d af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x387b75e5 af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x440093ca af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x47f1157c af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5d0e7ab6 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0x61c97da8 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x7967c08f af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0xa20bf7f1 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa240a526 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0xae74752d af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0xcaa326dd af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0xceff92c0 af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xd94be0e2 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0xed5a447e af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf84a22f2 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0xa84067ba asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xdde0daf5 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x7a734013 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc093bbce async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x0faac88f async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8660c088 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x10deba9d async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x11bcb21a async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6785fa8c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf6e0d507 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3602a099 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbc33974a async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x61595e57 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xb9a4a5fd cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x97e2ce39 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x05c2a3a2 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x05f81757 cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x0d4a7ec1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x242bcddc cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x2fdff45b cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0x344ef23b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x47d28ffa cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4ca27d3a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x50832a12 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x6fdbf0a1 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x86d27608 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd93086bf cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe63c29d6 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x16abf95a crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x1ede017d crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x2b0bc188 crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4654872e crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4720d918 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4b46327a crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x79dcc758 crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x940a5f27 crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x9983c324 crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xa4f37d97 crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc74273bc crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf042e4c4 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf2938f55 crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4a06da2b serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x4ec85ee3 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x73805e98 crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0xe45f7d07 crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/twofish_common 0xb97205ef twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1227dac4 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x22cd3813 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x29619f31 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3687001a ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3caab123 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43baeb0c ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4c9269bc ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x51180873 ahci_do_hardreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x513c83e6 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5275a889 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x53cfdf37 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c7be348 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6ea19460 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7b70df2f ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8d663934 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x909db63f ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a265c00 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9eff6413 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa1a15290 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa70824ac ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa8efaa2a ahci_handle_port_intr +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd88ca71f ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdbad9cba ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe631d2c1 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0f717c01 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x264fa585 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4d0443e1 ahci_platform_enable_phys +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x54965499 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x68a01bd4 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x76a2c8da ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x89f2e01c ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa2fce710 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa380e84a ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbd32f3ec ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbfa26696 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xc7f98e24 ahci_platform_shutdown +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd50d9427 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe1b1275b ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe403d9db ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf8233023 ahci_platform_disable_phys +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xaf08dfeb __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x78796327 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x727ea304 charlcd_poke +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0x9192a401 charlcd_register +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xa2a58bbe charlcd_alloc +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xac53a91b charlcd_unregister +EXPORT_SYMBOL_GPL drivers/auxdisplay/charlcd 0xd0cc2e18 charlcd_free +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x14102f23 ks0108_displaystate +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x48a70518 ks0108_writedata +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x4f506333 ks0108_startline +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0x6edae968 ks0108_isinited +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xbf4774db ks0108_writecontrol +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xedde6df2 ks0108_page +EXPORT_SYMBOL_GPL drivers/auxdisplay/ks0108 0xfee8ef7b ks0108_address +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-i3c 0xc90787fe __devm_regmap_init_i3c +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x283182b0 __devm_regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sccb 0x3530237f __regmap_init_sccb +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x1010072e __devm_regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-sdw 0x39cb15f0 __regmap_init_sdw +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0x6e676fb6 __regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-slimbus 0xa8fe2f4a __devm_regmap_init_slimbus +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x0f5a94bb __regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x4400f6ac __devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x67129ef3 __regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xf4adcab6 __devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0x860cfb32 __regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-w1 0xaae14884 __devm_regmap_init_w1 +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x069af50b bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0b702f3d bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x31cc1307 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x466ad891 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x59d423f1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5b997009 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x70793f8f bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7316d9dc bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x76aae660 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7a8fa6f8 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8c92b455 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97c1fa73 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x98aec7ec bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9da6a5d1 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2c3a708 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa495b848 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa628ea4c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd06fc825 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd2740e42 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7fd1618 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdecea183 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe5aab80c bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf2e32b7d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5f19851 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x176a66a4 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x4a7ae846 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6172ea50 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc4abf6ee btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc87a7944 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe23c55a1 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe330e685 btbcm_read_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe444059e btbcm_write_pcm_int_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x01a84fe7 btintel_set_event_mask_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0863aed6 btintel_regmap_init +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x0f56abc4 btintel_load_ddc_config +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x1c34775c btintel_set_event_mask +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x2fcb0927 btintel_set_diag_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x3e91bb42 btintel_set_diag +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x42afb4dc btintel_hw_error +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x55c80c71 btintel_version_info +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x58231c0c btintel_enter_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x798feb0a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x9da9f548 btintel_secure_send +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa3aae4da btintel_read_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb78b4dc8 btintel_exit_mfg +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb9d7d29a btintel_read_boot_params +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xdb1694c4 btintel_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xdd57aa45 btintel_send_intel_reset +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xeefb2073 btintel_reset_to_bootloader +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xfc0844ae btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x09acdf70 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1556f1c9 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x26981fb6 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x28612517 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6364ac20 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6b8e3c8d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7bc8acec btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x99eeba16 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc2058e4c btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdeb90043 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe6e10f72 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x3072d1db qca_set_bdaddr_rome +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x30b414e0 qca_send_pre_shutdown_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x3568200c qca_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0x5285c19a qca_read_soc_version +EXPORT_SYMBOL_GPL drivers/bluetooth/btqca 0xd1ccf41b qca_uart_setup +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x3b5b079e btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x6264d0e9 btrtl_get_uart_settings +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xaf78f260 btrtl_free +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xb2f4d9cf btrtl_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xdda76982 btrtl_download_firmware +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xf05a57e3 btrtl_shutdown_realtek +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x314b06b7 hci_uart_register_device +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0x87fd468a h4_recv_buf +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xc6956b66 hci_uart_tx_wakeup +EXPORT_SYMBOL_GPL drivers/bluetooth/hci_uart 0xccf65b62 hci_uart_unregister_device +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x124a0378 mhi_device_get_sync +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x4d076a44 mhi_force_rddm_mode +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x60a469a4 mhi_queue_skb +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6cf7fc17 mhi_pm_suspend +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x6e183494 mhi_unregister_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x8a059e64 mhi_pm_resume +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x92ad06c8 mhi_notify +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0x98e34104 mhi_download_rddm_img +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa1a6e577 mhi_driver_unregister +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa1afd077 mhi_device_put +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa5223540 __mhi_driver_register +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa60eeef1 mhi_queue_buf +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xa93ecb90 mhi_queue_dma +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xb5744b7c mhi_device_get +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xbf35b2df mhi_register_controller +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc7f80a50 mhi_prepare_for_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xc812e7e8 mhi_prepare_for_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xcb6524ab mhi_power_down +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xe948a229 mhi_unprepare_from_transfer +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf0491ef1 mhi_async_power_up +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf40ec21f mhi_poll +EXPORT_SYMBOL_GPL drivers/bus/mhi/core/mhi 0xf4afd106 mhi_unprepare_after_power_down +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x2454fc7a moxtet_device_read +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x5c417169 __moxtet_register_driver +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0x9f3e7810 moxtet_device_written +EXPORT_SYMBOL_GPL drivers/bus/moxtet 0xc0597b34 moxtet_device_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x01aab51b counter_count_direction_str +EXPORT_SYMBOL_GPL drivers/counter/counter 0x1d165375 counter_device_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0x3aedcad4 devm_counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x3e02c1d7 counter_unregister +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5447016a counter_count_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x5c2def7c counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x6b1817dc counter_device_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0x7273b4b7 devm_counter_register +EXPORT_SYMBOL_GPL drivers/counter/counter 0x91927a57 counter_count_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xc5fef3d4 counter_count_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xce92b4b2 counter_signal_enum_write +EXPORT_SYMBOL_GPL drivers/counter/counter 0xdf5ef795 counter_device_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xe11d7dee counter_signal_enum_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xe31a11ea counter_signal_enum_available_read +EXPORT_SYMBOL_GPL drivers/counter/counter 0xee526d0f counter_count_mode_str +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x4038a0cd nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x6058a31b nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xb9365576 nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xe2aab8d5 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0x233f3d87 dev_dax_probe +EXPORT_SYMBOL_GPL drivers/dax/pmem/dax_pmem_core 0x33f39a11 __dax_pmem_probe +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x01e59cae dw_edma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw-edma/dw-edma 0x2dc0afc6 dw_edma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0223c563 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x03cec8c9 do_dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x286732f0 idma32_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3d81438b dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x9c153684 do_dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xadd7a619 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xdb702f2b idma32_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x20485f48 fsl_edma_free_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x2f9f5209 fsl_edma_free_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x35230f83 fsl_edma_prep_dma_cyclic +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x375e8e36 fsl_edma_alloc_chan_resources +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x414375ba fsl_edma_terminate_all +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x4c65835b fsl_edma_disable_request +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x4cfd3147 fsl_edma_setup_regs +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x54f7a1e7 fsl_edma_resume +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x5cdace9a fsl_edma_prep_slave_sg +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0x6eae95fc fsl_edma_pause +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xa5583440 fsl_edma_cleanup_vchan +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xa6b943a0 fsl_edma_issue_pending +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xc65974f9 fsl_edma_xfer_desc +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xd0f6e8cc fsl_edma_chan_mux +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xdb38daee fsl_edma_tx_status +EXPORT_SYMBOL_GPL drivers/dma/fsl-edma-common 0xe60ef557 fsl_edma_slave_config +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0x87f1ae81 hidma_mgmt_setup +EXPORT_SYMBOL_GPL drivers/dma/qcom/hdma_mgmt 0xc6b220ec hidma_mgmt_init_sys +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1e3ada1a vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2ca5af73 vchan_tx_desc_free +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2ebe1f36 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x7a9ac11b vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x805b34c4 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xe86fb5c7 fw_card_release +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x16f92201 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xf257b51a alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x0af258e5 dfl_fpga_port_ops_del +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x17cd5530 dfl_fpga_port_ops_add +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x1ff2bd73 dfl_fpga_dev_feature_init +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x296f13ca dfl_fpga_cdev_assign_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x324be4e2 dfl_fpga_dev_feature_uinit +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x368c0b05 dfl_fpga_cdev_config_ports_vf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x3a037260 dfl_fpga_cdev_config_ports_pf +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x3c440e75 dfl_fpga_feature_devs_enumerate +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x4773631b dfl_fpga_dev_ops_unregister +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x4b28ad0f dfl_fpga_enum_info_free +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x74213e43 dfl_fpga_enum_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x771d2f7f dfl_fpga_port_ops_get +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x7c7f4a5a dfl_fpga_cdev_release_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x804f2d63 __dfl_fpga_cdev_find_port +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0x90ccdaac dfl_fpga_port_ops_put +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xa3f9039c dfl_fpga_check_port_id +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xccd6577a dfl_fpga_dev_ops_register +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xcde5a024 dfl_fpga_feature_devs_remove +EXPORT_SYMBOL_GPL drivers/fpga/dfl 0xf6d745b0 dfl_fpga_enum_info_add_dfl +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0249302b fpga_bridge_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0633c4b9 fpga_bridges_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x0b2b884c fpga_bridges_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x175e208e fpga_bridge_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2c8167cf fpga_bridges_disable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x2f4c82b3 fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x4e357a61 fpga_bridge_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x72b63b35 devm_fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x7cc5d97a of_fpga_bridge_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x7d6b68c5 of_fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0x87ae6c2a fpga_bridge_enable +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xaca65727 fpga_bridge_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xb28aa1f6 fpga_bridge_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xd6fc48d6 fpga_bridge_get_to_list +EXPORT_SYMBOL_GPL drivers/fpga/fpga-bridge 0xf6760fc4 fpga_bridge_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x28ea46c3 fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x55418f10 of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x575e2e77 fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x6b456227 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x7f26059f fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8545609f fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x8913b32d fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xad772ba1 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc414ef5e fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xce776297 fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf3bef9c2 fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xf9107713 devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xff822663 fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x0d564715 fpga_region_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x1e71dc9e fpga_region_program_fpga +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x2ad478f7 fpga_region_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0x7fac9b36 fpga_region_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xc76e9751 devm_fpga_region_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xc938aa9a fpga_region_class_find +EXPORT_SYMBOL_GPL drivers/fpga/fpga-region 0xdca1adb9 fpga_region_create +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x1e7fc9ff fsi_device_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x3a93847e fsi_slave_claim_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x4a5b52ec fsi_driver_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x4aaa5b07 fsi_device_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5300ef4b fsi_master_unregister +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a57d574 fsi_free_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x5a94a6a9 fsi_driver_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x6fc84fc4 fsi_bus_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x733413ce fsi_cdev_type +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x761abc24 fsi_get_new_minor +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0x78060f23 fsi_slave_read +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xb82a31c1 fsi_master_register +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xbd0b8d79 fsi_master_rescan +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xce22aee2 fsi_slave_release_range +EXPORT_SYMBOL_GPL drivers/fsi/fsi-core 0xd942f235 fsi_slave_write +EXPORT_SYMBOL_GPL drivers/fsi/fsi-occ 0x83a7fc0c fsi_occ_submit +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x32809593 sbefifo_parse_status +EXPORT_SYMBOL_GPL drivers/fsi/fsi-sbefifo 0x88205a5b sbefifo_submit +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x3e66b88b gnss_register_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x8bc98d6a gnss_allocate_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x906d332d gnss_deregister_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0x996c7744 gnss_put_device +EXPORT_SYMBOL_GPL drivers/gnss/gnss 0xc7d4bca2 gnss_insert_raw +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x66c74632 gnss_serial_free +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x6a171aaf gnss_serial_register +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x70909995 gnss_serial_allocate +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0x7ad857f4 gnss_serial_pm_ops +EXPORT_SYMBOL_GPL drivers/gnss/gnss-serial 0xc363c998 gnss_serial_deregister +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x44248d49 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xf943270c __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x1d8eb7ef analogix_dp_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x3ee0dd60 anx_dp_aux_transfer +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x416b792c analogix_dp_stop_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x49c9f049 analogix_dp_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x67486bd4 analogix_dp_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x6a09d086 analogix_dp_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x701d1f2a analogix_dp_start_crc +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0x7221b145 analogix_dp_suspend +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/analogix/analogix_dp 0xe098b09a analogix_dp_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x09340e05 dw_hdmi_set_channel_count +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x094f6fc5 dw_hdmi_phy_i2c_set_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x1461e227 dw_hdmi_set_channel_status +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x157e02b6 dw_hdmi_phy_reset +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2d1c0e80 dw_hdmi_setup_rx_sense +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x2fac9436 dw_hdmi_set_channel_allocation +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x316212a8 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x42926f4a dw_hdmi_resume +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x4a9b174f dw_hdmi_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x6712b5a7 dw_hdmi_phy_gen2_txpwron +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x7d8a3aee dw_hdmi_phy_i2c_write +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x822671f9 dw_hdmi_set_high_tmds_clock_ratio +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x8dcd6f43 dw_hdmi_set_sample_rate +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0x9b44a60b dw_hdmi_phy_gen2_pddq +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xacf04801 dw_hdmi_set_plugged_cb +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xbe042e22 dw_hdmi_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xcd8c7728 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xce27012a dw_hdmi_audio_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd6968220 dw_hdmi_phy_setup_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xd8fe547b dw_hdmi_audio_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xdafa1790 dw_hdmi_phy_read_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/synopsys/dw-hdmi 0xf5922009 dw_hdmi_phy_update_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x056fe17c drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1c7708ee drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d2523b9 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d6ec267 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x261d1f35 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2a5da420 drm_of_component_match_add +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2bb71e59 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2f7b9299 drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2f91f5ff drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x327a323a drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3d587a23 drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4a8033a9 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4bc38871 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4de84a9f drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x51b4f82f drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x558c1e14 drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5c8be90c drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5da858f7 drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x62182b13 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x68b7858d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6fb89d12 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x72db8a89 drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x80902599 drm_of_find_panel_or_bridge +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x858615f4 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x92f6e5c3 drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x991b8976 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9a3b4cc9 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9c5ae901 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa574b681 drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad885165 drm_bus_flags_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xae3eed08 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xba0f0066 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbfa42b4c drm_of_lvds_get_dual_link_pixel_order +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc1884700 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc51de66b drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xddea2886 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xebeaba0f drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf73bcead drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf7dd6481 drm_of_encoder_active_endpoint +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf875c6d4 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x0e688d20 drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x31dfb9b4 drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4d63e283 drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4df2f617 drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xa3756c1d drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb31f28fb drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xc5d763e3 drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xca95e4e3 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcfdb7006 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xdf80cc9f drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe5d32288 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xf0016e9c drm_fb_cma_get_gem_addr +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4410dbdf ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x74470318 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x74f04a11 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x04a2ee7f gb_operation_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x058724eb gb_operation_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0a5322ac gb_operation_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x0f13fb07 __tracepoint_gb_message_submit +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15b64530 gb_operation_response_alloc +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x15d1942f greybus_disabled +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x16a7c09c gb_operation_request_send +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x17db1655 gb_operation_request_send_sync_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x1d056911 greybus_message_sent +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x255d2727 gb_connection_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x275ad1e2 gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x344a04e0 gb_operation_cancel +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x39818441 gb_hd_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3ac25066 gb_debugfs_get +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3b109f2e gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x3f3e729d gb_operation_result +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x41b50b3c gb_operation_unidirectional_timeout +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x4466ea39 __tracepoint_gb_hd_create +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x44e665e2 gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x45f3f0cd gb_connection_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5592dd65 gb_operation_get_payload_size_max +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5d9c0c30 gb_connection_create_offloaded +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x5fd99cef gb_interface_request_mode_switch +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x6a8c7c1d greybus_register_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x79afc7df greybus_deregister_driver +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7bf4ca10 __tracepoint_gb_hd_add +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x7f92cb1a gb_hd_output +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x83bff855 gb_svc_intf_set_power_mode +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x84a88675 __tracepoint_gb_hd_release +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x8531da1d __tracepoint_gb_hd_del +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0x99dd4bf7 greybus_data_rcvd +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xa14ebdaa gb_connection_disable_rx +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xb5fb65fa gb_operation_put +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xba2055d5 gb_connection_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbccd902c gb_connection_disable_forced +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xbe5273ae gb_hd_cport_reserve +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xc3f7874a gb_hd_shutdown +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcce4c9e9 gb_connection_destroy +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xce308090 gb_hd_cport_release_reserved +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xcfc6f277 __tracepoint_gb_hd_in +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xdc796ad8 gb_connection_latency_tag_enable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xdd281439 gb_connection_create_flags +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xe675615a gb_connection_latency_tag_disable +EXPORT_SYMBOL_GPL drivers/greybus/greybus 0xea794d32 gb_connection_enable_tx +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00a49310 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06da94ab hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0794124f __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x151d5f92 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19d52f1f hid_quirks_exit +EXPORT_SYMBOL_GPL drivers/hid/hid 0x19edb227 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bf3bd66 hid_hw_start +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1d9ba48c hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1e87758b hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1f9e384c hid_hw_open +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29f2fc37 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e23344d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x400d83d1 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4272b313 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4857688c hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4dce1b26 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ea82beb hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x63b21dd7 hid_match_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6a9a16de hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6b39bc02 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6d8d888c hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x71c57de1 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x77345648 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e370fa3 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8633d9d7 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b13a8b8 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ee2a938 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x915b3bae hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99beedbf hid_hw_close +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c1e4cdb hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9e110e33 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0670ee5 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa68d23d7 hid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa80f0fe hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa94e556 hid_compare_device_paths +EXPORT_SYMBOL_GPL drivers/hid/hid 0xabd9afed hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4aaa029 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca4e98d9 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde7c32e0 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea4bf87b hid_hw_stop +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea5869a8 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xee6b19ca hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf03d1bdf hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf88c05a3 hid_setup_resolution_multiplier +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa355613 hid_quirks_init +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfbe88f56 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xffc25af3 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3e4427c8 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xda142551 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x112e0b97 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xab78feb5 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb665d930 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbdf1772c roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc604a361 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf5c202d4 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x47804e95 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x59fc8a59 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5a7a5843 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x65308f15 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9f28126c sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb37205eb sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb94907e1 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe50d3952 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe9945ab0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/i2c-hid/i2c-hid 0xd3e899fc i2c_hid_ll_driver +EXPORT_SYMBOL_GPL drivers/hid/uhid 0x5872bf3f uhid_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x760dcc20 usb_hid_driver +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd962850b hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1e3618d9 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x240148a7 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2ad95a29 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2e620465 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3b4c5ffd hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x42e73385 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x51d29954 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f40efbb hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x84638c13 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9b9911af hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa0c3d7b2 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa19f6ba4 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa47b1c55 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb486ffe5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcdca1a9f hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd6bbf680 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8bc4717 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xeb57bb1c hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x069d54dd adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x67ed4a89 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd809706d adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0x5cbb5274 ltc2947_core_probe +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xbc54f93e ltc2947_of_match +EXPORT_SYMBOL_GPL drivers/hwmon/ltc2947-core 0xc3e8b129 ltc2947_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0e6aa5c0 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x11990681 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2486a9bb pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x36b3589a pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x41e41f47 pmbus_get_fan_rate_device +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x66a08245 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6c400988 pmbus_update_fan +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7ce4c253 pmbus_get_fan_rate_cached +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7f8027a0 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8f259c1a pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x959bd665 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa01338cc pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa2863650 pmbus_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa9a8316f pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xab98899e pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb4463517 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb7253da6 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbf6cef3b pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc7e031be pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1e04a743 intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x2917de39 intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6523b483 intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6b6a21a7 intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x9aa9ce7a intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xb8dee87c intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xba22ddad intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xdff3e98a intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xefc1210b intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x2c912f0a intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x2ea4eaa8 intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0xd9b2db47 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x3bc7d96f stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x71ee612c stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8ff0dcdd stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa9fa90aa stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd7632430 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xd80f2fbd stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xdf9c06f3 stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xe7bc66bf stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xf90e9127 stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x0e54d160 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x5b7e28d8 i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6453e931 i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x83dc225a i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x18f32869 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x111dc816 i3c_master_do_daa +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x15e83b5d i3c_generic_ibi_alloc_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x2b8e4d31 i3c_master_enec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x3a2baefa i3c_device_free_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x3e927158 i3c_device_enable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x427185e2 i3c_driver_register_with_owner +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x543f06d0 i3c_driver_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x643726ed i3c_device_get_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x666e6fc1 i3c_device_match_id +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6abb18dc i3c_master_defslvs_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x6b72e17f i3c_device_request_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7394fdae i3c_device_disable_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x76fe3e05 i3c_generic_ibi_free_pool +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7fd5cd7f i3cdev_to_dev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x7ff5f259 i3c_master_set_info +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x85284260 dev_to_i3cdev +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x8c3a1624 i3c_master_unregister +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0x9d4334a8 i3c_master_queue_ibi +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xa8a15e30 i3c_master_get_free_addr +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xabf20918 i3c_generic_ibi_recycle_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb6e79869 i3c_master_register +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xb93a8c45 i3c_master_disec_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xd8e8acfc i3c_generic_ibi_get_free_slot +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe20873c2 i3c_master_add_i3c_dev_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xe4eb313b i3c_master_entdaa_locked +EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xf3173528 i3c_device_do_priv_xfers +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0x7720f68c adxl372_readable_noinc_reg +EXPORT_SYMBOL_GPL drivers/iio/accel/adxl372 0xf69ec025 adxl372_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x0244bbc0 bmc150_accel_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x36fa4300 bmc150_accel_core_probe +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x5adf8924 bmc150_regmap_conf +EXPORT_SYMBOL_GPL drivers/iio/accel/bmc150-accel-core 0x80bfb51f bmc150_accel_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x27fea21d mma7455_core_regmap +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0x9c9917d7 mma7455_core_remove +EXPORT_SYMBOL_GPL drivers/iio/accel/mma7455_core 0xa45c0736 mma7455_core_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0x12c73b77 ad7091r_regmap_config +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7091r-base 0x3f6ad5ed ad7091r_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x3e8f25c5 ad7606_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/adc/ad7606 0x55aefcba ad7606_probe +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0349c9c2 ad_sd_reset +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1a472689 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1a74f90b ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x47fd22d5 ad_sd_calibrate +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x689ad321 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x87c4dda8 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x932ccec8 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9af07108 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa8b6309c ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdb161c4c ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdffaba87 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0x41e784ba devm_adi_axi_adc_conv_register +EXPORT_SYMBOL_GPL drivers/iio/adc/adi-axi-adc 0xd4aae956 adi_axi_adc_conv_priv +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0x9acf62ab iio_channel_cb_set_buffer_watermark +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xc6038ec6 iio_channel_cb_get_iio_dev +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xd22c8db3 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-cb 0xe5fe4dfc iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x06ca3b45 iio_dma_buffer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x23f0e841 iio_dma_buffer_exit +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x29a01788 iio_dma_buffer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x34c64032 iio_dma_buffer_data_available +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x88c21bec iio_dma_buffer_block_list_abort +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0x9c0f482e iio_dma_buffer_read +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xcfde952b iio_dma_buffer_set_bytes_per_datum +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xe1df6bce iio_dma_buffer_init +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xe47022f2 iio_dma_buffer_release +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xe4a74a4b iio_dma_buffer_request_update +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xe785e3e4 iio_dma_buffer_set_length +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dma 0xf3c3df79 iio_dma_buffer_block_done +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x6ea5da69 devm_iio_dmaengine_buffer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-buffer-dmaengine 0x79e67d53 iio_dmaengine_buffer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x093c0c6d devm_iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x3391543d iio_hw_consumer_disable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0x9671bc15 iio_hw_consumer_free +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xbf358fa9 iio_hw_consumer_enable +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-hw-consumer 0xfa56c44c iio_hw_consumer_alloc +EXPORT_SYMBOL_GPL drivers/iio/buffer/industrialio-triggered-buffer 0x2a54c2f5 devm_iio_triggered_buffer_setup +EXPORT_SYMBOL_GPL drivers/iio/chemical/bme680_core 0x4ca8942f bme680_core_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0x13e69ba5 ad5592r_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5592r-base 0xa77f7672 ad5592r_probe +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x53591500 ad5686_remove +EXPORT_SYMBOL_GPL drivers/iio/dac/ad5686 0x58d63c61 ad5686_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x81964ddd bmg160_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0x87d12b82 bmg160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/bmg160_core 0xae3f4cb4 bmg160_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x004bd49c fxas21002c_core_remove +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x0b1bcb24 fxas21002c_core_probe +EXPORT_SYMBOL_GPL drivers/iio/gyro/fxas21002c_core 0x7d2a4722 fxas21002c_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1b96e9bb adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1f508eda adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2023ec33 __adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x376e1e58 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x49acd0c2 __adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x668f01a4 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8009f2f1 __adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x82376486 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9bc9444a devm_adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa66abcae __adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xaaa207b8 __adis_update_bits_base +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbc031ea6 devm_adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe2bba81c adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xec341885 __adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xef2128f3 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/bmi160/bmi160_core 0x80e3385d bmi160_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/fxos8700_core 0xc3a8bd9a fxos8700_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x3767f905 inv_mpu_core_probe +EXPORT_SYMBOL_GPL drivers/iio/imu/inv_mpu6050/inv-mpu6050 0x635eb4ca inv_mpu_pmops +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x01ad39a4 devm_iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x04189dfd iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x07273143 iio_write_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f0c1fdd iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x18349988 iio_device_release_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fa91e24 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23643f3f iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x242888db iio_write_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2888dbfe iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x29e2f00c iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d57ace2 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3054c95f iio_read_channel_ext_info +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x32b5ce49 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x38ea013e iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x412c4e65 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4317ae49 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x472420bc iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4bead50d iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4bfb4751 iio_buffer_set_attrs +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4ca218d5 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4dce7dd4 iio_format_value +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a4f67ea iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5c0c63fc iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61ce5b25 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x68a5c86a devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6e1b09aa iio_read_max_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7f835d0a iio_read_channel_offset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x823bef91 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88237c46 iio_read_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8d1d8937 devm_iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f4d6704 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x936cdecd iio_show_mount_matrix +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d602659 iio_read_avail_channel_attribute +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e735544 __devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa9a45ce4 __devm_iio_trigger_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb2d300af iio_get_channel_ext_info_count +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb5914dbf iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcc4aa74c iio_read_avail_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdcaad36f iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xec638bb5 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xee207e61 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef756e3e iio_device_attach_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf1da115a iio_device_claim_direct_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf638a1b7 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0x0a1424e0 rm3100_volatile_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xaa911f08 rm3100_readable_table +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xad93f6f8 rm3100_common_probe +EXPORT_SYMBOL_GPL drivers/iio/magnetometer/rm3100-core 0xcc7209be rm3100_writable_table +EXPORT_SYMBOL_GPL drivers/iio/pressure/mpl115 0x3ce5183a mpl115_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x4369a48a zpa2326_isreg_writeable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x66af6d72 zpa2326_isreg_readable +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0x7812ba1d zpa2326_pm_ops +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xa9a2baee zpa2326_probe +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xc0d5386d zpa2326_isreg_precious +EXPORT_SYMBOL_GPL drivers/iio/pressure/zpa2326 0xd93cf379 zpa2326_remove +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0735ae29 rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0edae6a6 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x14389326 rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x173890f8 rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x273c537b rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x2d20f2cc rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x35aa5081 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x41996013 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x54e57b57 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b55dd91 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb25fc09d rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xca2bfc15 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xd56d243c rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xc76f767d input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x36360ae9 matrix_keypad_parse_properties +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xf2769087 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x39143ed5 rmi_set_attn_data +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x48f7944d rmi_2d_sensor_abs_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x4b8590b3 rmi_dbg +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x53da48f8 rmi_2d_sensor_rel_report +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x68d6c1a4 rmi_2d_sensor_abs_process +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x78d8678d rmi_driver_suspend +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x79f8a179 rmi_driver_resume +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x8133b3c9 rmi_of_property_read_u32 +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0x94122b82 __rmi_register_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xa1d9da11 rmi_unregister_function_handler +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xe4f59c9f rmi_2d_sensor_configure_input +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xeebfadb7 rmi_2d_sensor_of_probe +EXPORT_SYMBOL_GPL drivers/input/rmi4/rmi_core 0xf9438508 rmi_register_transport_device +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x327b872b cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x4ee99e21 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xbd95176a cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4242f870 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x98be4899 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x13ef92fc cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x381f014c cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x0a3afb8b tsc200x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x1f20865f tsc200x_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0x219d46f2 tsc200x_regmap_config +EXPORT_SYMBOL_GPL drivers/input/touchscreen/tsc200x-core 0xd4d9bb84 tsc200x_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x02edb6a5 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x14cbc44a wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6065cb26 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7ddbd67c wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x871b66ab wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb171d6e2 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc7536a52 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd31ba97f wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdd7b0e9e wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe210954e wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf8f676f5 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfa49f1b6 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x192e7f7a ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x46b56cb1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5d100a6a ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x66afc74c ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x6ea41922 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaf02d326 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc43a7e0f ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd2a853a0 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf69e4d89 ipack_get_device +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1b18aafe led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x44ef900f devm_led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x45c18813 led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x626cc736 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x76f2f273 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7f6b140e led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x9d5df67d led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa730bf80 devm_led_classdev_flash_register_ext +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x047424b3 lp55xx_init_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x06bbfd84 lp55xx_register_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x093212fd lp55xx_deinit_device +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x1d6ae198 lp55xx_unregister_sysfs +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x2fa21697 lp55xx_unregister_leds +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x312e97b7 lp55xx_read +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x3584151e lp55xx_update_bits +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0x36aba788 lp55xx_is_extclk_used +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xb80fb329 lp55xx_of_populate_pdata +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xedd14442 lp55xx_write +EXPORT_SYMBOL_GPL drivers/leds/leds-lp55xx-common 0xf097384d lp55xx_register_sysfs +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0x3bd45b0d ledtrig_audio_set +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-audio 0xce593c22 ledtrig_audio_get +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x749e05f2 ledtrig_flash_ctrl +EXPORT_SYMBOL_GPL drivers/leds/trigger/ledtrig-camera 0x7903e46e ledtrig_torch_ctrl +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0d4ad18f wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0e2b2eea wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x594212fc wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x69ce6493 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x873b4a5d wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8e3cb372 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb9625b5b wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe0f22f77 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10439a81 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19a02ba6 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x24ee2a7c __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2515e866 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2869bc82 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40430b3f __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4f0eec50 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x52cb1bd3 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5a47b147 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x61f8a4a2 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x666af686 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x77db9ce2 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x78c4e77b __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x83195c57 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8d0e2577 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x90d77239 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x93c8b623 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x97890220 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9a530fe1 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa49f3127 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb19c0de4 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb7599baf __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb8cb3ae4 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc3af40d5 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xca6ae723 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xceafa6da __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xcf2b1b68 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd89fb73f __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xed607240 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xefba8a85 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf307604e __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0683217e dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1fbc89b6 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x299fa9c7 dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3f3e1b47 dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x46c8ba73 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x46e5bcbb dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x55ec9eb4 dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6854242b dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6b5eaf58 dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7bf036f6 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8134df73 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8a518214 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x93fd3cc8 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x99fced5c dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9f8d27ee dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xade1fb53 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbfa3cb55 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2676682 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x106427de dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7890d535 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x890723f7 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa8aa8514 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xadbefda4 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcf8c2590 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bdae47 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x32c884df dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3d5c667c dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x090a97df dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x46fa4d16 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7093e22f dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8e8f3b1d dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb2e387f1 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc0bb8704 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24621ca3 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x30c37cc0 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4f477261 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5375ca71 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5cf0d0bb dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7551b46e dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b6b3af5 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9290e07a dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x932a6ffc dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa6376fd2 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd51c29f1 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x0c29b7d2 cec_notifier_cec_adap_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x11cd202e cec_notifier_parse_hdmi_phandle +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x155cc0d3 cec_s_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x5c2bec4b cec_unregister_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x64a13d06 cec_queue_pin_hpd_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x7e26c26b cec_notifier_cec_adap_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x87282821 cec_queue_pin_cec_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x9163a90e cec_s_log_addrs +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0x9f076b81 cec_notifier_conn_register +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa01fbb6b cec_notifier_set_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xa86436b9 cec_fill_conn_info_from_drm +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xaee236c6 cec_notifier_conn_unregister +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb1ff4b1d cec_s_conn_info +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xb8947118 cec_transmit_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbbee14c1 cec_transmit_attempt_done_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xbe4de675 cec_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xcd54f7ee cec_queue_pin_5v_event +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xcd6f860d cec_received_msg_ts +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xce2a0b6e cec_register_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xd46465f4 cec_s_phys_addr +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xd785cf16 cec_allocate_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xdfa16e57 cec_transmit_msg +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xefd21b56 cec_delete_adapter +EXPORT_SYMBOL_GPL drivers/media/cec/core/cec 0xf8c99364 cec_notifier_set_phys_addr_from_edid +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2f8501f1 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x32806d3f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x363472c3 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4544a2ce saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x57930f07 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x96950b26 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x98b37204 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb60026ed saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdcd371b6 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xea57cf6a saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x01bb675c saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x11caf3ad saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x249bf310 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8da8239a saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc046fb35 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xca79ece6 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe1784e68 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x031dae54 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0c9ea8c4 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x115c8b44 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2314bf9a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2e4c7c99 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x34bf0e61 smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x53722788 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x65e89577 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6fa706fd smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x706901aa smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x805b4a50 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x84ef1fc4 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x98c00179 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbeb04fd9 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc5b3d176 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe83bf68e smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfa6d6085 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfa740e6a sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x03005a48 tpg_alloc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x040dc7cd tpg_aspect_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x4d1d285c tpg_init +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x517e7ccd tpg_fill_plane_buffer +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x579c6308 tpg_gen_text +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6026aaf0 tpg_log_status +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x6960e899 tpg_s_crop_compose +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x756516e7 tpg_s_fourcc +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x7a5d8c0b tpg_update_mv_step +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x86b4ddf7 tpg_reset_source +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0x975a1e29 tpg_g_interleaved_plane +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xaa5503d9 tpg_set_font +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6110b6e tpg_free +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xc6808be7 tpg_calc_text_basep +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xce8159bb tpg_pattern_strings +EXPORT_SYMBOL_GPL drivers/media/common/v4l2-tpg/v4l2-tpg 0xf65c5e46 tpg_fillbuffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x02309166 __tracepoint_vb2_buf_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x08719fc4 vb2_core_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x11961b5c vb2_core_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x2f94a22e vb2_core_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3667ef79 vb2_core_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x36df7ed8 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x3867067a vb2_core_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x38fa35bb vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4071e8f2 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x4a28e196 vb2_request_buffer_cnt +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x5235c19c vb2_core_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x63b986da vb2_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x672d9c68 vb2_core_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6c178235 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6d0af828 vb2_core_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x6eae5138 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x72ddb883 __tracepoint_vb2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x869b4979 vb2_core_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x8d323b2b vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x92432b65 vb2_core_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x940cd4e2 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0x98b294c8 vb2_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xaf020967 vb2_core_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xb1ec0973 vb2_request_object_is_buffer +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd3cf05db vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd6249b3e __tracepoint_vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xd83d6bd6 vb2_core_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xf0c756e7 __tracepoint_vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-common 0xfb6ae9be vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xec6943f7 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-contig 0xed3735ae vb2_dma_contig_set_max_seg_size +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-dma-sg 0x19d7eadd vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-memops 0xe4290592 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x01971adc vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x05bd1760 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x071cc91b vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x11557ed4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x16c01986 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x280a9011 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x2beb626e vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x32089295 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x375af203 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x3f2514b4 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x4c9cf601 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x5b09847d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x65ac60b2 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x65c05730 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x6a8d3320 vb2_request_validate +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x72e39df8 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x76c22546 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x811989f0 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x9584a6cb vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0x983c9528 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xae0ae43c vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb3dcda05 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb650747d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xb675cfd2 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xbf0a9f8f vb2_request_queue +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc49eebdd vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xc76243af vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xd76c6cf7 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xdeb9c0d9 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xe7e30797 vb2_find_timestamp +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-v4l2 0xf474d5d9 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/common/videobuf2/videobuf2-vmalloc 0x81a603be vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x51302807 dvb_module_probe +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0x76fbe3e0 dvb_module_release +EXPORT_SYMBOL_GPL drivers/media/dvb-core/dvb-core 0xdab0f3f3 dvb_create_media_graph +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x17e734db as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xb060f17a cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/gp8psk-fe 0x8ac07964 gp8psk_fe_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/mxl5xx 0x97c09f9d mxl5xx_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv0910 0x82ba358f stv0910_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/stv6111 0x82c7f16b stv6111_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x65eaa34c tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/i2c/aptina-pll 0x1d33d46c aptina_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/i2c/smiapp-pll 0x9ad1207f smiapp_pll_calculate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x00e10d80 media_entity_pads_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x01197c9a media_device_pci_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x02dc97c2 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x058c2541 media_request_object_find +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x0cf5383f __media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1106f3ef media_devnode_create +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x13e032e2 __media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x1d8801e5 media_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x241f81fb media_remove_intf_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x2577652d media_request_get_by_fd +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x257af606 media_request_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x287494af media_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x34bb8a9f media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x430a98e8 __media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x510e1366 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x57b637e4 __media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5a467de5 media_device_unregister_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x5ad5a086 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x649e7673 media_request_object_unbind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x68b5a014 media_create_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x7086c079 media_device_delete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x8c916011 media_create_pad_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x969f0a52 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x974d3802 media_request_object_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x987aeb51 __media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9bb4d229 __media_device_usb_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0x9f7858c5 media_request_object_bind +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaade5fca media_get_pad_index +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xac44ad83 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xad0a4e09 media_device_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xae5a8b75 media_request_object_complete +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaea0c514 media_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xaea4d60c media_remove_intf_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb1cc1b29 media_graph_walk_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xb2d4fabe __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xc26836d4 media_create_pad_link +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd05558b3 media_device_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xd7340a81 media_devnode_remove +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdc581289 __media_entity_enum_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdcccaf8c media_device_register_entity_notify +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xdf939e42 media_entity_get_fwnode_pad +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe4b257c8 media_graph_walk_init +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xe5ceecd6 media_entity_enum_cleanup +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf47a9bd7 media_request_object_put +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xf4e47e14 media_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xfdcde752 media_device_usb_allocate +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xfe9f7091 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/mc/mc 0xfff34043 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x8ce4c045 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0873998e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1198c098 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x216e2ffa mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x222dedef mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x27beaa46 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39b266ec mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6d5923c9 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7d99f0d2 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9239f6e5 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x96c7d4ff mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9aa72d2a mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaa7a221a mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaff47457 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb50be986 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc917ec68 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd5677395 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe1e0aca3 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf43b4d03 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf93ce5b5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x01086780 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26b476e3 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x32b68a70 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x50d12bbf saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5e41dc81 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6b9e2c64 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6db7b062 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7a38c456 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7b2500f6 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x80a2287a saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9c5c3433 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xac48d375 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcc3f4391 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcd2b78f8 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdbec7f04 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xecb4b127 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf3736221 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf624c707 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xff3024b7 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2e4afd76 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x582f5c5c ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x66e61a2e ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x74bd8fa5 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7bd57f37 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xea724b22 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf1c0f99a ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x6ef96735 mccic_shutdown +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0x75816838 mccic_resume +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xa9ce5fd7 mccic_register +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xede985c5 mccic_suspend +EXPORT_SYMBOL_GPL drivers/media/platform/marvell-ccic/mcam-core 0xfbb2e91e mccic_irq +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x447ff21d xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x4d047ce4 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x700d9bcb xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x712a3c8a xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb67940fb xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb8df091e xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xdd2a2ddf xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe08e6063 xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf023f000 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x47d7900b xvtc_generator_start +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x7ca4328f xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb09dce23 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc0998a3b radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x1ca6f03e si470x_start +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x5942a790 si470x_viddev_template +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0x7ada2f31 si470x_set_freq +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xd9255094 si470x_stop +EXPORT_SYMBOL_GPL drivers/media/radio/si470x/radio-si470x-common 0xfabea79b si470x_ctrl_ops +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x07b60152 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1d834c2a ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x32a9250e devm_rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x43b7c644 ir_raw_event_store_with_timeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5af4c77c rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x63db4c15 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7511fd44 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7abef9ab rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7e45aa17 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8484060c rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x891dff1b rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x892f26fd devm_rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a3f9f86 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbf0b892c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc053e2aa ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc3b38028 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc789cbfb ir_lirc_scancode_event +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc964b616 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd1f0c9e9 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd37a5e7c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe8f45851 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x08f47c05 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x406c4ab8 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xdfc05f49 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x9c897f16 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x8d69cd40 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x801a3922 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xcf06bf09 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xdc289487 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x6537c4a1 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x82abaaf5 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc0d16644 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x60e437eb tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x6a3e2094 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x9c960e1a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x04d4d933 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x07ec68a3 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0e8a6c1e cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x18ef8e0b is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1904aa88 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3d1310ea cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3d4a01de cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x56940643 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5fe12641 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b995c2a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6e5bcd9a cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x738b1ea3 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b2c9fc3 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x822226fb cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8a0f6d70 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x969c7822 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x97b172a9 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9a1908a1 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9e5f1481 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd745a49d cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xb3b80706 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xaec85992 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x04b6eeed em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x090760d0 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0c450475 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x11cb24b0 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2531edfd em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3b2b69d9 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4fb9e4ba em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5d3b4262 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x721f7cc7 em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x75fcac54 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7981ff84 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8e5b5bf3 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x90eb670b em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x921d7c65 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x95087e69 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb4a905c3 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc73838f2 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcc91e1cb em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd77fa2b4 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe04522a4 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x07af9077 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1285e2c6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x32f70590 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x6327fd3c tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x01612c0b v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08402862 v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0958448b v4l2_set_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x0af3d134 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x2bf67def v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x370cfe6e v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x3aa68d7a v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4839762f v4l2_calc_timeperframe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x7b6ac78f v4l2_phys_addr_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x8f8d4341 v4l2_get_edid_phys_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x922ecd29 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xa97e00eb v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xae575c8f v4l2_phys_addr_for_input +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xd034392d v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xef15cc44 v4l2_hdmi_rx_colorimetry +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf56238f4 v4l2_find_dv_timings_cea861_vic +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xff585440 v4l2_dv_timings_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3589426f v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xc0f2f493 v4l2_flash_indicator_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xc32bd0cc v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x04fc4f9e v4l2_fwnode_connector_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x26955e1f v4l2_fwnode_connector_add_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x29f7f46b v4l2_fwnode_device_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x2a18f4fa v4l2_fwnode_parse_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3b57b75a v4l2_fwnode_put_link +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x3f7aa15e v4l2_fwnode_endpoint_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x44bd0b36 v4l2_fwnode_endpoint_alloc_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x612ddce5 v4l2_fwnode_connector_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x6343c0b3 v4l2_async_register_subdev_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x637524e3 v4l2_async_notifier_parse_fwnode_endpoints_by_port +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0x9f867f1c v4l2_async_notifier_parse_fwnode_sensor_common +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xaa923a8e v4l2_async_notifier_parse_fwnode_endpoints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-fwnode 0xb44bf221 v4l2_fwnode_endpoint_parse +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2978dafb v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b52e588 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2c0ba828 v4l2_m2m_register_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3c8d0779 v4l2_m2m_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3e24cac2 v4l2_m2m_request_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3eca57d6 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x40352356 v4l2_m2m_ioctl_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5842fabe v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x59f0af88 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x692274a9 v4l2_m2m_buf_copy_metadata +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6948a6dd v4l2_m2m_buf_remove_by_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x726a9824 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x730f2eae v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x741aff9a v4l2_m2m_ioctl_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x78c7bf31 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x796df4a3 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79986dc6 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x805423a4 v4l2_m2m_buf_remove_by_idx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x854f93b8 v4l2_m2m_last_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x859d8a66 v4l2_m2m_last_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x867b7673 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x86fed799 v4l2_m2m_update_start_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8994d7b0 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ae4a199 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x93fd375f v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9b5de0ad v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9d2d608d v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa95fc996 v4l2_m2m_ioctl_stateless_try_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xae976918 v4l2_m2m_ioctl_stateless_decoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb2162579 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb3917229 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb717f4d4 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb89dcf5f v4l2_m2m_update_stop_streaming_state +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc9b3dd7d v4l2_m2m_ioctl_try_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcaa3a940 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd4173d65 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb9fb820 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdfae4822 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe01bbbf6 v4l2_m2m_ioctl_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe95fe7b9 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xebacbaa1 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13ff84d v4l2_m2m_unregister_media_controller +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf74944ba v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf90f1175 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfa50b58b v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfce3207e v4l2_m2m_encoder_cmd +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x03042fbe videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d48ada0 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x11682a47 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d5d9263 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2af41ee0 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2d72c8d1 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3e566a2a videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4380e30c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x634ef305 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6d035dde videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x75d1edfd videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7bd80a2a videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7de9547a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x82ece47d videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x83edc462 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8aa59a26 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b1c876c videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa4035e01 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb2224830 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc72629c7 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe4d80483 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe7eb1568 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xebeee695 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf698a822 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4dbcfdd4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4f24008e videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x5068a532 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x73328207 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x765d61dd videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8bd34788 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x8c837c9d videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x012c7666 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0376d903 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0b6ccf4c v4l2_s_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0c5b6310 v4l2_i2c_subdev_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0f9dd37d v4l2_ctrl_request_hdl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a586e77 v4l_vb2q_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1c0a3114 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x264917fe __tracepoint_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x270dccc6 v4l2_subdev_get_fwnode_pad_1_to_1 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x34b37062 v4l2_async_notifier_add_fwnode_remote_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x48c8c590 __tracepoint_vb2_v4l2_buf_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4fd67de1 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x50d65b11 v4l2_subdev_free_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52a11d12 v4l2_create_fwnode_links +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56247d68 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x59730c1f v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c4eab5d __v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c8bf6ae v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x651cd402 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6b536ad6 v4l2_pipeline_pm_get +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e0401b5 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6e9acc41 v4l2_fill_pixfmt_mp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6fe5ec93 v4l2_g_parm_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x707c1708 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x71073cb7 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x798230fb v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bf8ec37 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x86673e8d v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x89412e8e v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fe96d7b v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x900c1644 __tracepoint_vb2_v4l2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94ff2c1e v4l2_pipeline_link_notify +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9880fa44 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x999ba22c __tracepoint_vb2_v4l2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9e666d7e v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9fef35ac v4l2_apply_frmsize_constraints +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa9328aa3 v4l_disable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaf3263b9 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb3e35bea v4l2_subdev_notify_event +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbb2f2ac5 v4l2_ctrl_request_hdl_ctrl_find +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbcc63ee8 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbeb79a40 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc803cfd0 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcb521f73 v4l2_async_notifier_cleanup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc5d61f0 v4l2_async_notifier_add_i2c_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcf5f708f v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcfa5fc3e v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd33ccb46 v4l2_create_fwnode_links_to_pad +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd3edaf97 __v4l2_ctrl_handler_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd4ca631f v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5b68f69 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7132199 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd7cbd2ce v4l2_pipeline_pm_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe01e1f6b v4l2_async_notifier_add_fwnode_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2822320 __v4l2_find_nearest_size +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7a581b2 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7dcad27 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xef93da7c v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf097ca10 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf114d8f4 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf184389d v4l2_async_notifier_add_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf39685d4 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf56b4dc0 v4l2_async_notifier_add_devname_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf5fbd75f v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfac7fb5c v4l_enable_media_source +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfbebac31 v4l2_mc_create_media_graph +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x082ba68a pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x7af1623f pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xf49e628e pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x0bcc7391 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x22f2b357 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x34149c72 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x39d18b6e da9150_write_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6d0d5c8a da9150_read_qif +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa9fb0deb da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xab0348d8 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xa142a524 gsc_read +EXPORT_SYMBOL_GPL drivers/mfd/gateworks-gsc 0xb7abd1c4 gsc_write +EXPORT_SYMBOL_GPL drivers/mfd/iqs62x 0x22a28670 iqs62x_events +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x046cf1d6 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x33c6449f kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4ef3d470 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x567358ca kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5e49a659 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xac64415a kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd48adccf kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xdc1b07d3 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xcfd86d4c lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd8c9c527 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xfa585827 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x1666b6d8 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x43762942 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6952e488 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8ae1f2d3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb4883b59 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbae882d2 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf4389041 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1299cf29 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x4e2e0481 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6b969ece lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0bfead91 madera_dev_init +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x0f379262 madera_of_match +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1b144a10 cs47l15_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x1b199650 cs47l15_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x2dd6e134 cs47l85_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x3062198a madera_dev_exit +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x4ec21be7 cs47l35_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x5821571c cs47l15_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x582c8b5c cs47l15_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x5e4a5ebe madera_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8fc40ae5 cs47l92_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x8fc9d6a5 cs47l92_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x92e2fdd0 cs47l35_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x92ef2190 cs47l35_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0x96a871a9 cs47l15_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa09066a8 cs47l85_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xa09dbae8 cs47l85_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb8451118 cs47l90_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xb848cd58 cs47l90_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xbcc03717 cs47l90_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xccf117e9 cs47l92_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xccfccba9 cs47l92_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd1d7e0dc cs47l35_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xd1da3c9c cs47l35_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xdb81a3bf cs47l92_patch +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe3a57ba4 cs47l85_16bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xe3a8a7e4 cs47l85_32bit_i2c_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xebe384cb madera_name_from_type +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xfb700c14 cs47l90_16bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/madera 0xfb7dd054 cs47l90_32bit_spi_regmap +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3efb819a mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4429ae7e mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x71894fb9 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x84dc0219 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x96d3f771 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc4664939 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/motorola-cpcap 0xa226dbe8 cpcap_sense_virq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2bcfe225 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4807a68f pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x93718ea3 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x93826404 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xad0e0e4c pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaf2d98dc pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xafb4a671 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb4e0a27e pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdac44487 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe01ffa8d pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xec9fa7c8 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0c1b7fe6 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xaeb043c8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x14fd3442 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb4730535 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xcda04b43 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdf0236b2 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xeea3d5c0 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x186d863e devm_rave_sp_register_event_notifier +EXPORT_SYMBOL_GPL drivers/mfd/rave-sp 0x43e53ef9 rave_sp_exec +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x56d1a8c5 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0xa074c8b6 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0122568c si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x053e5d55 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x06d9b611 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x071680a1 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09c3524c si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a04496c si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a07a615 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b2fb051 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x113e205b si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19615bee si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1cb6cc20 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2345ce14 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3ca975cd si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x498d0ead si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4c74fb37 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e34b7fe si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x559f5f5e si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x625f75fc si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6e963f98 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x70038080 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7454a7e0 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x765663b4 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x861c8e41 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89c1b2cc si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8eeb5fa6 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ada25ba si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa6d38872 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc73f4e40 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc2529e1 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd11550d5 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd42695a3 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd5df0cf7 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdb81d3b6 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfce06bde si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1e81f537 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1e8a295b sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2b3a0fa7 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4b989956 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5330290e sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0x225bf512 stmfx_function_enable +EXPORT_SYMBOL_GPL drivers/mfd/stmfx 0xe8b3b776 stmfx_function_disable +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x03d443ca am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2d57b584 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x4349412c am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa1ee9d28 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x1beb88a3 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa58ff482 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xad6b658c tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xb49e2afd ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x288fdc03 alcor_write32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x2c9f7394 alcor_write16 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x6eb36eb6 alcor_write8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0x95cdab89 alcor_write32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xbfc379e9 alcor_read32 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xddfd2140 alcor_read8 +EXPORT_SYMBOL_GPL drivers/misc/cardreader/alcor_pci 0xfc91607a alcor_read32be +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x151fc4aa rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x46dbe195 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x4a379667 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x4ad5b229 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x4b241f11 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x501f5224 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x5173604f rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x58c9ba09 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x5be4cec6 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x603fbcdf rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x62282e8b rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x6d342c3f rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x7bebf03f rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x7e9686bb rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x840756a0 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x84b8efb2 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x983ce4f7 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0x9f58836a rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xb205e256 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xc5f6423e rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xd6e59c42 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xdbf229f2 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xe8b560fa rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_pci 0xfd73a38e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x0f4897e6 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x114c2066 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x1eb0edc5 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x3ecdc26d rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x40190bf7 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x4d827aa4 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x6cb3df10 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x87b8cdec rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x911a7872 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0x9bceed3e rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xaad422e5 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xd40e233c rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/misc/cardreader/rtsx_usb 0xfa3da492 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x84821ebd cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa3f0f907 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xcbcba1cc cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd025781b cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x02207906 cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x08130471 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0cc7e7fc cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x193d9f55 cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x26708972 cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x277a6542 cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x2bc18ff6 cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x362db953 cxllib_get_PE_attributes +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3ac97cbe cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3b54a940 cxl_set_driver_ops +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3d231360 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4a2d3d28 cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4bcdafe0 cxl_set_priv +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x52a4f9e5 cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x67e3d9a8 cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x71657226 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x722b3b09 cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7974b593 cxl_read_adapter_vpd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x82d3490e cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x891daf81 cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8e8a579a cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa47abb73 cxl_context_events_pending +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xad4373e6 cxllib_switch_phb_mode +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xb81e68b9 cxllib_handle_fault +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbaf59cbb cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbb72e11f cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbbaa3fb3 cxllib_set_device_dma +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xccab0d2c cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd26a17a5 cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd7618d13 cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd7957a82 cxllib_get_xsl_config +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd97f1200 cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xde3c30ad cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xe2256dab cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xee364f6e cxllib_slot_is_supported +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xf37e6786 cxl_get_priv +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x0b008db0 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x296a8983 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3115970d oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x4b711f77 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x5909e701 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x780d3f01 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x84eba96d oslec_free +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x3cb83d5b eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x870b53e9 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x884deb9d eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xc9c6bb25 eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xff7a0fdf eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x027df09b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x21929256 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2baffab5 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x661ea703 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x81e9108e enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb26f760d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe98e2034 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf5b05c8b enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x148bf738 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2b1aa2d0 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x40c6b591 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5b6e95d1 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8daf2643 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa28b8582 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb687f9e0 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xbe665c82 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x041a260d ocxl_afu_irq_alloc +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x080fe827 ocxl_afu_put +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x0afa66b3 ocxl_afu_set_private +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x0e9ded3e ocxl_function_close +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x2d876dd2 ocxl_link_remove_pe +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x3782b8f1 ocxl_context_alloc +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x50ea30e8 ocxl_global_mmio_write64 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x55c4ac9c ocxl_global_mmio_set64 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x592287f1 ocxl_link_setup +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x5c95626f ocxl_global_mmio_read32 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x5d8814ea ocxl_link_free_irq +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x5dd667fb ocxl_function_open +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x5dff07da ocxl_afu_irq_free +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x5f8ce541 ocxl_config_set_TL +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x68d821e5 ocxl_global_mmio_clear32 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x7734e7b0 ocxl_context_free +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x7a1bef86 ocxl_global_mmio_read64 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x8034b9e8 ocxl_global_mmio_set32 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x851a259c ocxl_global_mmio_write32 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x86c7c750 ocxl_function_config +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x920a0559 ocxl_afu_get_private +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x9b0d8c55 ocxl_context_attach +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0x9ea4b5c4 ocxl_link_release +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xa55be3f7 ocxl_config_read_function +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xb4c57e2d ocxl_afu_config +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xb7a209a7 ocxl_config_set_afu_state +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xbaa34679 ocxl_config_read_afu +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xbc43d9c3 ocxl_config_get_actag_info +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xbd283491 ocxl_global_mmio_clear64 +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xc61852d5 ocxl_function_afu_list +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xc7c68d98 ocxl_config_terminate_pasid +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xcca25264 ocxl_context_detach +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xd30196e5 ocxl_config_set_afu_actag +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xd46dcaca ocxl_irq_set_handler +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xd5eb45d2 ocxl_afu_get +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xebdc395f ocxl_link_irq_alloc +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xf33eb2a1 ocxl_function_fetch_afu +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xf793b5b6 ocxl_link_add_pe +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xfaf71e5d ocxl_afu_irq_get_addr +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xfbf1cc03 ocxl_config_set_actag +EXPORT_SYMBOL_GPL drivers/misc/ocxl/ocxl 0xfe195941 ocxl_config_set_afu_pasid +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x191d57c0 uacce_register +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0x6d12c96c uacce_remove +EXPORT_SYMBOL_GPL drivers/misc/uacce/uacce 0xd156bfb3 uacce_alloc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x05309d4e sdhci_end_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x09099a2f sdhci_start_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1e366c2b sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x216195b3 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x24dde967 sdhci_execute_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x30151cd7 sdhci_switch_external_dma +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x30aa2b51 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x31c48e68 sdhci_cqe_enable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x345ec116 sdhci_set_data_timeout_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x38761ccf sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x44b9d88a sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x56720a1b sdhci_cqe_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5c20c111 sdhci_cleanup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x68cd7015 sdhci_send_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x69c81fea sdhci_request +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6cd98a5c sdhci_calc_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x79cd9e88 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x87ed18f0 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8850d474 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x895ada72 __sdhci_set_timeout +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8f8331f8 sdhci_enable_sdio_irq +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91490c30 sdhci_set_ios +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9bc14eed sdhci_start_signal_voltage_switch +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa494ccc4 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa534d82c sdhci_adma_write_desc +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xab9b7b8f sdhci_enable_v4_mode +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaca8b0cf sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb08669ff sdhci_request_atomic +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb590f5bb sdhci_cqe_disable +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc0dae0a6 sdhci_setup_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc5dffb0b sdhci_abort_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc7fe62c1 sdhci_set_power_noreg +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc90a9611 __sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd20552ec sdhci_enable_clk +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdf08110d sdhci_dumpregs +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe8610c10 sdhci_reset_tuning +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xeb501acb __sdhci_read_caps +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xecbb957e sdhci_set_power +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xed4fe6e3 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf0fb9591 sdhci_set_power_and_bus_voltage +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfe5eaa03 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x196a828b sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x45edd6bc sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x702d377b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x97b3e970 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9a55e3f4 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa1aa44a5 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa3dc1f60 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xaab130d1 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe4fff57e sdhci_get_property +EXPORT_SYMBOL_GPL drivers/most/most_core 0x063cdce1 most_get_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x2cfa8647 most_resume_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0x4a370045 most_register_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0x54e1d37f most_submit_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0x55168655 most_deregister_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0x5c71242b most_stop_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0xa35ec106 most_register_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xad3f3c27 most_start_channel +EXPORT_SYMBOL_GPL drivers/most/most_core 0xb1a11772 most_register_interface +EXPORT_SYMBOL_GPL drivers/most/most_core 0xb8a1a2b6 most_deregister_component +EXPORT_SYMBOL_GPL drivers/most/most_core 0xce978a2e most_deregister_configfs_subsys +EXPORT_SYMBOL_GPL drivers/most/most_core 0xddff04ba most_put_mbo +EXPORT_SYMBOL_GPL drivers/most/most_core 0xed688338 most_stop_enqueue +EXPORT_SYMBOL_GPL drivers/most/most_core 0xee9ab9b4 channel_has_mbo +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x49088a46 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7621afae cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8b3f8a38 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x17e7768a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x69b53d5a cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9a4cf2dc cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf8725bdd cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x027696a3 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7de0244a cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf8807261 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0x706b6421 hyperbus_register_device +EXPORT_SYMBOL_GPL drivers/mtd/hyperbus/hyperbus-core 0xa12b9c0a hyperbus_unregister_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03cb3604 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x04b81294 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x089562d2 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d18619a mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17fbbe33 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1ec8788c register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x203c48ce mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26149344 mtd_wunit_to_pairing_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x285700d9 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ad9af01 mtd_pairing_info_to_wunit +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2b78dc55 mtd_ooblayout_count_freebytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2bcc6528 mtd_ooblayout_free +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ce6f24c mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32f4b839 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3819c229 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x39490989 get_tree_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3e8db6a7 mtd_ooblayout_set_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f2202f8 mtd_ooblayout_find_eccregion +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x424ce26d __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f355927 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x53b8d8ee mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x56df5564 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58d28f05 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5c913769 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x648253a7 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66a77e7f mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6a0bbcd4 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6bd42a65 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6c097f49 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6de8c262 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x747fe0c5 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x82e3b198 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83334e9b mtd_ooblayout_set_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8591ecc9 mtd_ooblayout_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x990dd382 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9a03c84a mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9df24d3e mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9f5955d9 mtd_write_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1bbcc54 __register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbd061ad7 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc06e1eb8 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc6e103da mtd_ooblayout_count_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8d8e5c5 mtd_ooblayout_get_databytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe9e2025a mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf0ee2692 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3a0edb3 mtd_pairing_groups +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf716a375 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa155ca0 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfcf212f9 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd5c47fe mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd82cbf9 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe2836c7 mtd_ooblayout_get_eccbytes +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfff740a8 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x3c6bcb02 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9b62548c deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xbce55e16 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xdb4f3b16 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe2031fe9 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x0071cb6c nanddev_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x0ea40189 nanddev_mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1471529a nanddev_mtd_max_bad_blocks +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x1a6c0ff9 nanddev_bbt_get_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x3dea9171 nanddev_markbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x765818cb nanddev_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x79726cdc nanddev_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x998bbf3a nanddev_isbad +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0x9be8cd8e nanddev_bbt_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xaa7e707c nanddev_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xd129aba9 nanddev_bbt_set_block_status +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xdc13da08 nanddev_bbt_update +EXPORT_SYMBOL_GPL drivers/mtd/nand/nandcore 0xe5b509d8 nanddev_bbt_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0x9ba7208f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/onenand/onenand 0xc8e098b6 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/denali 0x69e88b73 denali_chip_init +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x11091291 nand_extract_bits +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2060e4a1 nand_decode_ext_id +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x21006447 nand_change_read_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x218340f8 nand_reset +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x25b88d99 nand_erase_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x26735b8a nand_soft_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x26b3dc31 nand_ecc_choose_conf +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x289f584c nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2bf5e6d4 nand_cleanup +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x2d368c4c nand_subop_get_addr_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x303ac0f3 nand_read_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x3b82447f nand_prog_page_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x45ae0c05 nand_status_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x5632e63d nand_subop_get_num_addr_cyc +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x59da1c41 nand_op_parser_exec_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x6100eb36 nand_readid_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x67436b89 nand_write_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x76ee0af2 nand_prog_page_begin_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x7f162c59 nand_ooblayout_lp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x91a34768 nand_change_write_column_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x966984e2 nand_deselect_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0x9f209998 nand_read_data_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xaa63038e nand_reset_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xc5475bfc nand_gpio_waitrdy +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3c672b8 nand_subop_get_data_len +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd3cf6d3c nand_prog_page_end_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xd41ff2ac nand_subop_get_data_start_off +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xddb7332e nand_read_oob_op +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xee80c07e nand_ooblayout_sp_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/nand 0xfe779356 nand_select_target +EXPORT_SYMBOL_GPL drivers/mtd/nand/raw/sm_common 0x3e7c94f1 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x39f85ae7 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x95323366 spi_nor_restore +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x015f2be9 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x038ce8ab ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1f4a50ce ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2f137049 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3a48727e ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3fce3af5 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x43f777be ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x66011ab6 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6ec4934b ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8866d685 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc206eb7e ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc2ed36f4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc6ccbb81 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdbf63e94 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe4918c9e ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x110fc86c mux_control_deselect +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x24c853cb mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x6129ea68 mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x67581bb0 mux_control_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x6b3aa858 mux_chip_unregister +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0x907a3606 mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xbbfe0573 devm_mux_control_get +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xc8643afd devm_mux_chip_register +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xca6e4921 mux_chip_free +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xe3aef9c1 mux_control_try_select +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xe3c5c3e6 devm_mux_chip_alloc +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf3cf8e0f mux_control_put +EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xfc07608d mux_control_states +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x3653b604 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x3b5d6b10 arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/bareudp 0x9aabc61c bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0db6eceb unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x484f210a c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6bf22836 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x87a58a22 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x90935da9 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd5e99483 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x5df4f862 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x616ddfe5 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x87b6d23f unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb08a2315 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x07ebdf93 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x107c5be0 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x112b97f0 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x129bb927 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x16081ffb can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1b6e8621 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2e632df3 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x37a3dd96 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3e1585a4 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x464c47b5 alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x5fd77d8b alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6408bfed can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6a6cdb83 can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x76feb8b3 can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7767578b can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x84b9eb75 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8762619a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa220740c can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa549e932 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa55bb052 can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc6423c30 can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc9e339b2 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd0106110 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe0499e32 can_rx_offload_queue_tail +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe4cb8f42 of_can_transceiver +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe636fd31 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xea5a1cf6 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf00fbbf3 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x155e52e2 m_can_class_register +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x23bc2223 m_can_init_ram +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0x2505f7b8 m_can_class_resume +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xad9edd35 m_can_class_free_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xce2fd5b0 m_can_class_unregister +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xe71ce276 m_can_class_suspend +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xf1eaf231 m_can_class_allocate_dev +EXPORT_SYMBOL_GPL drivers/net/can/m_can/m_can 0xfd01aa58 m_can_class_get_clocks +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x046b594b alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0504d4d3 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x747bddc0 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd1aae45e unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0xc9c9bdb1 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x073b9c83 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x182902f7 ksz_port_mdb_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1a4dd8b0 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x22f4d524 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x265ef3de ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x7871fbd3 ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x7b9866da ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xa405d14d ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xabb64153 ksz_disable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xb4eda772 ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xc0617d06 ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcea3153f ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdb9032b3 ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xde860287 ksz_adjust_link +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xec75f6ac ksz_port_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf86c4f0a ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xfdab906e ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x07f71622 rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x0ca85a65 rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x16a8a818 realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x1fc0844f rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2f452d9e rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x570755a8 rtl8366_vlan_prepare +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x5b812d58 rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x616add9e rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x62b2775a rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6adaae64 rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x6d3399cc rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xa913499f rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xbe0e6401 rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xe69dea96 rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf1c1602e rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xfde27952 rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x20a8716f enetc_mdio_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0x57974f0f enetc_mdio_lock +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xde08a4d7 enetc_hw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/freescale/enetc/fsl-enetc-mdio 0xf15e645a enetc_mdio_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01454503 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0183143a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0220c6c3 mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05baa2ff mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x061a19a7 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0877b95c mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ff116d9 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1016282f mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11059b08 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1265d79f mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x127ccbed mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x135de7f6 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fcec03b mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2468f742 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x260a6c74 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29e54be2 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29f492af mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a594119 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2aae8552 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d6b4802 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ef169a4 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3083bdc4 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31dcde6f mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36e5a2a0 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37a63de1 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37d6f61f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b801008 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d06397e mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3de8b2bc mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ed95be5 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4042316b mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x407e4bc0 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40c58fa7 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x461e8980 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x487e0e31 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49feb8e1 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52106849 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x549389ea mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54d283a7 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5577426f mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55a18a02 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5642a1c3 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a9fb4c0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e3cd33a mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ef02bb4 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62fece42 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65dca236 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6754f1e2 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e9ba863 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fb3f651 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fd53074 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x706efe2d mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73694ada mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74a66058 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7643e800 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ba2220f mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d62a765 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8071c19b mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80e20560 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82267a42 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82d71e58 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82e6d5cc mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8398e30c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x852d7a02 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85e7f552 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86e35169 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cff5e06 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8debe4ba mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8df3d238 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9380f947 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93875929 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94890dbf mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ccb663b mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ce4a3ec mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9dd3615e mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2ea96dc mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5eff853 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6accbc2 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa63b54a mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb26f8410 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5f36f6a mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6806fa6 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb94c0ebf mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb465885 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc52d271 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf06bcec mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc02999bc mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc35f0b80 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc81e3937 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca1a7e30 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb9145a4 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1e5750d mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2c1edd0 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd41382b3 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7e6fd4d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd833ad27 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd920c02b mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9725559 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd29748c mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddb4f9c0 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdee5fc68 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0a4ae4e mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe21b8dbb mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2657abb mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4366f79 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe44db95a mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5200ff8 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9aae962 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea226f61 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb081fdb mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed4e9384 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf038e82b mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf133f2dd mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf179c7f5 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3c7a6ca mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9ad0fc7 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc283413 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc396892 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc4938ba mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcb45b89 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdb2b367 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0859b6e8 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b4d8c6b mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x115eef63 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x163b647f mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1bd6f16f mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c53975f mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d807295 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23074d25 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24ec8af7 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29855158 mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2aa0de60 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ac6162a mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cdebb03 mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d242bc0 mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x35900339 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36090402 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x399329c1 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a9faff1 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f44b47a mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42614aa8 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x430a1066 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x457354c0 mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b357b85 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5250a44b mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56fb7d95 mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57ff9131 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x624c1575 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6427b815 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6551bea9 mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65ce00be mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6917249e mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c2ea6b2 mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f1ed24a mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74d9cb5c mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76d45b6b mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x775ba739 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77da06a3 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79b19b0a mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f3f9772 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a646cfd mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8af1510d mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97267eeb mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9aed4738 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa56ed532 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaacbc60a mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xabc79a10 mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadec3947 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0d58826 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb49b63e7 mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5943df4 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba3b45be mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb528d3b mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbcf1c184 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd6046a7 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf096e53 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc5176883 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc61c6589 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfc4a472 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd042e797 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4ed60fc mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd78dc154 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7f29397 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde4cc4bf mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde5b64ce mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0e636e8 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6f754d7 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeab3d48c mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xede0549e mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeef3bf0d mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf680d007 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xff9fafd7 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xab92a91c devm_regmap_init_encx24j600 +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xcc4fa41a regmap_encx24j600_spi_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/microchip/encx24j600-regmap 0xe8c8c6c2 regmap_encx24j600_spi_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0x4983027c ocelot_cls_flower_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xa6ad8630 ocelot_cls_flower_replace +EXPORT_SYMBOL_GPL drivers/net/ethernet/mscc/mscc_ocelot_common 0xfd01a3c4 ocelot_cls_flower_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x0b28a9ad qcafrm_create_footer +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x2b6ddf3f qcafrm_fsm_decode +EXPORT_SYMBOL_GPL drivers/net/ethernet/qualcomm/qca_7k_common 0x41da0375 qcafrm_create_header +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x31ccbe92 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x43c41292 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x59b66396 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x92d778bb stmmac_get_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd1cc24db stmmac_set_mac_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd50e852f stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x21c22c83 stmmac_remove_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x2391486e stmmac_get_platform_resources +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x6ffc2cc9 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc415bd91 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xfa42a8f7 stmmac_probe_config_dt +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x3a689266 w5100_ops_priv +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0x890b44eb w5100_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xcb8f9a7a w5100_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/wiznet/w5100 0xfbd60f64 w5100_pm_ops +EXPORT_SYMBOL_GPL drivers/net/geneve 0xfdc362dc geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x2ffed813 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x69856ad6 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x93d0a023 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x9aec7a0b ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xa0a0bd13 ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/macsec 0x31915e71 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x96e06d9a macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb005a30e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xef588bd6 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xfc9bcad4 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xd60387c8 net_failover_create +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xec06d0af net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0435fcd4 bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0c613b3c bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1534a8e9 bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2bfb9871 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2fa219d4 bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x337ed689 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3b3901c3 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x40819902 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x46a1c4a5 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x586b83a0 bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x58a3a307 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5ac917ac bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5fb4bb49 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5ffcfd75 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x617b8bd1 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x65cb1dbb bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6bf61ba1 __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x72844ca1 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x84ec8737 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8b88a66c bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9f2bff09 bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa09f34bd bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa72df0f8 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa949d04f bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xadc8257e bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb2298a8c bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbc9faa53 bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcbc56d0d __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe1cedb58 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe8041ac2 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xec50b031 bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xedd7a714 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xff9050e9 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x08d6bdd0 mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x1b1e02cf mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-xpcs 0xe68dc152 mdio_xpcs_get_ops +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x11f6a82e phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x619939c9 phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x918ca250 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xa6021db3 phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xaf38d711 phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xcb451afb phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xe3937b2b phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xe95a8c3e phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x270858ba tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x550be950 tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0x55e8c134 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x72f2c7bf tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0x8fde81e1 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xb1baed93 tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xf9a99386 tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xfa458910 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0xff6178aa tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x204f4df7 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x24cf1b03 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x600ec2c2 usbnet_ether_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbfb26951 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd490447e usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x11a9ba92 cdc_ncm_rx_verify_ndp32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x276f2e9d cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x37cb35f0 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x69a51fe4 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8d9078e0 cdc_ncm_rx_verify_nth32 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa4cf5261 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa4e4c879 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xab790243 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xacbf60fc cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xaf3e641d cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe8de7ef2 cdc_ncm_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x58726c8f rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x839a34ec rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9e5d7c02 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa7017267 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xfbda17b6 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xff9d7372 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04c1990e usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x083af90d usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c5c878c usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3789700f usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a447578 usbnet_get_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4428a7ce usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x47bde9b7 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48537d05 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4d3929cb usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51446309 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51b0efc7 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51da368c usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x583f9d21 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x69c1a1f8 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a0c0e3d usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f23477c usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89128406 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa5095815 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa7bfc5fb usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb6b09c77 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc196af3a usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcae3675e usbnet_get_stats64 +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd159061f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd5971bfb usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe47b7f90 usbnet_set_link_ksettings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5e36241 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5fdb093 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe92233e3 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xef5983cd usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf15fe0c0 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf38c2bb3 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf966f74d usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf972aad3 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4da71f37 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x9db3d577 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf17352ed vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf1fbde99 vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04a9b56b i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0b563411 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x25ecbf53 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2f527c9a i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x321ed83e i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x469b24c9 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4b4f6ac1 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x69d4a69f i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7540cbde i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a1548d4 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x90210871 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9dbba4c0 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9e7d84ea i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa05a352d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe05693e1 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe8c971c8 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/ipw2x00/libipw 0xe0808939 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2c5184c9 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0x2f9f2eeb il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe4ddb3af il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xe6b6a7cf il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlegacy/iwlegacy 0xf2ab499f _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x00c26ced iwl_get_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x03ecbaba iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x0b855f79 iwl_fw_lookup_notif_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x13cfc1f1 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x19b0dfd7 iwl_get_cmd_string +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x1bfb740f iwl_fw_runtime_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2209deb4 iwl_read32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x229d8b26 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x2710c362 iwl_dump_desc_assert +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x310e6243 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x32f28675 iwl_fw_dbg_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x33d951af iwl_write8 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35307150 iwl_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x35e49af5 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x397fed04 iwl_read_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3c023391 iwl_fw_dbg_error_collect +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x3e79e9ba iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x486963f7 iwl_get_shared_mem_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x49bee914 iwl_dbg_tlv_time_point +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4a98bef0 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4eabd8a9 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4f2f215e iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x4faa6d39 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5888cf78 iwl_fw_start_dbg_conf +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5902f1d5 iwl_write_prph_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5ba76940 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x5ef93a6f iwl_set_soc_latency +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x645d4925 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x64e74332 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6d371f7e iwl_fw_dbg_collect_trig +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6e4a86d9 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x6e7e6537 iwl_fw_dbg_stop_restart_recording +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7101b284 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x71d2c058 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x724e8822 iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x72c97258 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x72fa56ef __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7307e077 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7427fe76 iwl_read_external_nvm +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x75fcda9f iwl_init_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x78868415 iwl_write64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7c87c27a iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x7e60511a iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8f4ee195 iwl_write32 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x8f8b6bf7 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x91a5d621 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0x9b507793 iwl_trans_send_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xa9f05394 iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xac108a5f iwl_cmd_groups_verify_sorted +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb4fc8b88 iwl_finish_nic_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xb8e744de iwl_write_direct64 +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbc9ee1c9 iwl_write_prph64_no_grab +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xbcc802d1 iwl_fw_runtime_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcbd89587 iwl_fw_runtime_init +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xcd914e00 iwl_fw_lookup_cmd_ver +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xce0c6460 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xd71fe37a iwl_fw_dbg_stop_sync +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe225014e iwl_fw_error_print_fseq_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xe299d216 iwl_fw_dbg_read_d3_debug_data +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xea1b26fc iwl_nvm_fixups +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xec555f74 iwl_fw_dbg_collect_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xeecb490b iwl_dbg_tlv_del_timers +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf60840d9 iwl_free_fw_paging +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf7f0de83 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/intel/iwlwifi/iwlwifi 0xf8a38fbb __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x12f540a9 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x3b0e7a89 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x6dd61e05 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0x8a4f79eb p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xb12c3b49 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xb5aa09b1 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xd2427c13 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xe682a092 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/intersil/p54/p54common 0xf7ad074c p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x1578e32b __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x1f9861d9 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x24384fae lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x2c74327e lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x46b37d6c lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x62467edc lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x676fda65 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0x91b51adb lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa01a724f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xa9e35ea4 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xb4ee83c4 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd10d8dba lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd4268280 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xd9663b68 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xe7c1a6ed lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas/libertas 0xfde06329 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x4d93be89 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x626b6d1d lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x6e0868fa lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0x9c7337da lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xa0093eef lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xd476d30b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xdbb0fb3d lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/libertas_tf/libertas_tf 0xfd3bc22f __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x0edbeb96 mwifiex_prepare_fw_dump_info +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x14755014 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x17d1129a mwifiex_reinit_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x27641cdc mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x32fe9c40 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x357fe788 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x4a824be7 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x643e1f0d mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x705dba88 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x7cf3c205 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0x9d012074 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa6c1f850 mwifiex_shutdown_sw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xa8c8143b mwifiex_multi_chan_resync +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xae7f6a34 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xb4142119 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xbb4ce37f mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xc8e78add _mwifiex_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd0cba92d mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd192f042 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd4dad9f3 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xd6e6e086 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xe5e8cceb mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xefb3066b mwifiex_dnld_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf16463dd mwifiex_fw_dump_event +EXPORT_SYMBOL_GPL drivers/net/wireless/marvell/mwifiex/mwifiex 0xf1bc724e mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x035141d0 mt76_set_stream_caps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1a021229 mt76_queues_read +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1a8da2ab mt76_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1b787fd9 __mt76_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x1ca6767b mt76_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x25384bd4 mt76_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x293a4463 __mt76_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2be81a45 mt76_tx_status_unlock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x2c69ca28 mt76_sta_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x32cf0db0 mt76_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x35b81a59 mt76_alloc_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3730c7c1 mt76_has_tx_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x38b75e11 mt76_sw_scan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x39d8030d mt76_tx_status_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x3c4e2524 mt76_insert_ccmp_hdr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4777437e mt76_mcu_msg_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4b25aceb mt76_alloc_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x4cb587aa mt76_release_buffered_frames +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x52892c2e mt76_get_min_avg_rssi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x561b012c mt76_rx_aggr_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x562ded8f mt76_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x583a3e69 __tracepoint_mac_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x58fc0e26 mt76_tx_status_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5ad18c91 mt76_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5d4e675c mt76_wake_tx_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5dd6b37e mt76_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x5ed74ec7 mt76_seq_puts_array +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x60ac7fac mt76_rx_aggr_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x644e8c7e mt76_get_rate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x6d81ca6d mt76_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7117f66b mt76_tx_status_skb_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x74ad827a mt76_tx_status_skb_get +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x74e30e3b mt76_pci_disable_aspm +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x75106391 mt76_unregister_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x77e38ddb mt76_txq_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x7f1ed360 mt76_txq_schedule +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x84026159 mt76_tx_status_skb_done +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x858b7f72 mt76_update_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x8600fadb mt76_mcu_get_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0x90c916f4 mt76_set_irq_mask +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa235c9e8 mt76_csa_finish +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa43696ac mt76_free_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xa576ac65 mt76_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xaad8b1ea __mt76_poll_msec +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xadfe5577 mt76_dma_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb531ea29 mt76_mcu_rx_event +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xb629717b mt76_stop_tx_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbab085cb mt76_eeprom_override +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xbaf4539b mt76_txq_schedule_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc6634315 mt76_ac_to_hwq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xc72025a0 mt76_sta_pre_rcu_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xcbb4823f mt76_csa_check +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd1ed3499 mt76_mmio_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xd5a0ed8d mt76_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xda0606a0 mt76_get_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xda076e95 __tracepoint_dev_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe292fe04 mt76_txq_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe40b66ef mt76_wcid_alloc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe6477f25 mt76_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xe67cdb1a mt76_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xed7f23bd mt76_unregister_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xf3bbba8a mt76_register_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xfc08e99e mt76_put_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76 0xff924d78 mt76_register_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x0d9c1601 mt76u_queues_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x35308fa2 mt76u_stop_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x3ea3a612 mt76u_skb_dma_info +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x5f42d430 mt76u_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x718539b2 mt76u_resume_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0x87f72444 mt76u_alloc_mcu_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xa42e23cb mt76u_alloc_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xab926324 mt76u_stop_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xcc4934fb mt76u_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xe29b423e mt76u_single_wr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76-usb 0xece67a41 mt76u_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x057c4d49 mt7615_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x08eeea2c mt7615_mcu_fill_msg +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x0bb6d5c0 mt7615_firmware_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x10544868 mt7615_mcu_restart +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x130e360e mt7615_mcu_del_wtbl_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1e78b9a1 mt7615_mcu_wait_response +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x1eee5003 mt7615_mac_sta_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2703d48c mt7615_mcu_set_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2ad0b4cc __mt7663_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x2bb6321a mt7615_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x33464758 mt7615_phy_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x383bb3d6 mt7615_mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3ceb101f mt7615_mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x3f71ef7b mt7615_register_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x51fd4eb4 mt7615_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5e03a3b5 mt7615_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x5e8252a0 mt7615_wait_for_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x6abaebae mt7615_check_offload_capability +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x748d5b30 mt7615_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x7665db3c mt7615_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x86a60d44 mt7615_mac_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x87b16202 mt7615_mac_wtbl_update_cipher +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0x9363ece3 mt7615_mac_wtbl_update_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa4ea66c8 mt7615_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xa838a2b1 mt7615_mcu_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xb4437582 mt7615_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xbd83dced mt7615_txp_skb_unmap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc4393484 mt7615_dma_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xc6de9d7c mt7615_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xd8c8f04f mt7615_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xda0739ac mt7615_mac_set_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdabc1905 mt7615_driver_own +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xdd3831d7 mt7615_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe5b2f07b mt7615_unregister_ext_phy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe5cf58a0 mt7615_mcu_exit +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe6d4a29e mt7615_tx_token_put +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xe7b48291 mt7615_mcu_set_hif_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common 0xf9469ad2 mt7615_mac_wtbl_update_pk +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x0d757e4b mt76x0_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x3361f8af mt76x0_chip_onoff +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0x88eb771b mt76x0_register_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xb1b2a497 mt76x0_phy_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xcbb1f4b2 mt76x0_init_hardware +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common 0xf712f6f5 mt76x0_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x01641d3d mt76x02_get_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x03a77f62 mt76x02_init_agc_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x04506a6f mt76x02_mac_setaddr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0462ce68 mt76x02_add_rate_power_offset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0d4023ec mt76x02_get_max_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x0ee214de mt76x02_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x11f6f65a mt76x02_mcu_function_select +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x15f02cb3 mt76x02_init_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x161e1fde mt76x02_phy_set_txdac +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1735e465 mt76x02_dma_disable +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x17c39153 mt76x02_mac_write_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x1cf456fa mt76x02_tx_set_txpwr_auto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2d8e0740 mt76x02_update_beacon_iter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x2fa952f9 mt76x02_phy_set_bw +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x35d2834d mt76x02_limit_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3c1a18c8 mt76x02_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3d1487d5 mt76x02_tx_status_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x3f28441a mt76x02_mac_reset_counters +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4215e773 mt76x02_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4321f356 mt76x02_mac_cc_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4336cd9a mt76x02_resync_beacon_timer +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x496c204f mt76x02_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x4a21818e mt76x02_rx_poll_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x502055ea mt76x02_get_efuse_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x53ab26f3 mt76x02_mcu_set_radio_state +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x590b4394 mt76x02_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5b416682 mt76x02_eeprom_copy +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bb422bd mt76x02_remove_hdr_pad +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5bd84fd5 mt76x02_rates +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x5c20ab1b mt76x02_update_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x634fed25 mt76x02_phy_set_rxpath +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x656622f1 mt76x02_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x66c4366b mt76x02_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6833da33 mt76x02_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x687dea3a mt76x02_mac_wcid_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6d21e891 mt76x02_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6d9e2c1e mt76x02_mcu_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x6dc244b4 mt76x02_eeprom_parse_hw_cap +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x71fbe08b mt76x02_enqueue_buffered_bc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x744c09e6 mt76x02_config_mac_addr_list +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x77bf5c50 mt76x02_sta_ps +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x800f3357 mt76x02_phy_dfs_adjust_agc +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x81454efd mt76x02_dma_cleanup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x81e730c0 mt76x02_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x81edbbf8 mt76x02_set_tx_ackto +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8bd8587d mt76x02_set_coverage_class +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8d6f5e2b mt76x02_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x8edfb550 mt76x02_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9104050a mt76x02_mac_set_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x91d5b9ee mt76x02_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x933884cf mt76x02_get_lna_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x953b4c1a mt76x02_dfs_init_params +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x96d97054 mt76x02_init_debugfs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x98337f07 mt76x02_ext_pa_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x99cbe770 mt76x02e_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9d1bb1c9 mt76x02_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0x9dce5cd4 mt76x02_phy_adjust_vga_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa09a110b mt76x02_sta_rate_tbl_update +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa2bd3875 mt76x02_phy_set_band +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xa2f93781 mt76x02_dma_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb300b218 mt76x02_mcu_calibrate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xb59a5296 mt76x02_mcu_msg_send +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xc3a30fa2 mt76x02_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xd5011dad mt76x02_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xddfbc623 mt76x02_mac_shared_key_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe4f21687 mt76x02_edcca_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xe9919620 mt76x02_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xef49ed67 mt76x02_set_ethtool_fwver +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xf798f0d9 mt76x02_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfa8630c7 mt76x02_queue_rx_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-lib 0xfbbc3b29 mt76x02_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x313d81fc mt76x02u_mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x31b249a9 mt76x02u_init_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x3b74912b mt76x02u_tx_complete_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x42a12b44 mt76x02u_init_mcu +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0x95a764bc mt76x02u_exit_beacon_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xcbcea9f8 mt76x02u_tx_prepare_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xcc074217 mt76x02u_mcu_fw_send_data +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x02-usb 0xeba286b3 mt76x02u_mcu_fw_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0118c709 mt76x2_get_temp_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x0c3daba2 mt76_write_mac_initvals +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x152ea887 mt76x2_mcu_load_cr +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x1ad85256 mt76x2_read_rx_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x49f82fe8 mt76x2_init_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x56ef711e mt76x2_mcu_tssi_comp +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x6f36c6dc mt76x2_phy_tssi_compensate +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x765dbd19 mt76x2_phy_set_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x79ef2e3f mt76x2_get_rate_power +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x88e92012 mt76x2_eeprom_init +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x9c0ad71f mt76x2_reset_wlan +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x9cc91592 mt76x2_mcu_init_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0x9cf323a9 mt76x2_apply_gain_adj +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xac0798f1 mt76x2_mcu_set_channel +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc2d4b39c mt76x2_phy_update_channel_gain +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xc2dac6d0 mt76x2_configure_tx_delay +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xce514921 mt76x2_mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xdaacd561 mt76x2_phy_set_txpower_regs +EXPORT_SYMBOL_GPL drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common 0xfed14a55 mt76x2_get_power_info +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x31fab83c qtnf_chipid_to_string +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x42bd4b97 qtnf_get_debugfs_dir +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x42f49e90 qtnf_update_tx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x632d2602 qtnf_classify_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0x94477e0a qtnf_trans_handle_rx_ctl_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xc15fb2b9 qtnf_core_attach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xdd048b34 qtnf_update_rx_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xddc51ecd qtnf_core_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/quantenna/qtnfmac/qtnfmac 0xf5d59ff8 qtnf_wake_all_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x0242b437 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x028c705a rt2800_txstatus_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1393c890 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x17b19ca1 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x1b7cdcaf rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x20272ce8 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x24cd78bc rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x298764f9 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x2b4468a1 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x32830fc3 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x3375ae3f rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x41b3ebf5 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x437ddf80 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x49b34fac rt2800_pre_reset_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4ec3f54c rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x4ec9c380 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x575ff349 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x57df1747 rt2800_txstatus_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x67581766 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x6fcf6108 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x703a81e6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7c42585e rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7c8131c1 rt2800_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x7fee3525 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x8087e617 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x886f9af5 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x92a6de44 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x95b77150 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x986a2aa5 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0x99a095dc rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa3f5a72e rt2800_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xa8795c81 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xabd69641 rt2800_txdone_nostatus +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xae4786ec rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb313c231 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb85d6269 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xb871cae3 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xc44fe40e rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xcfd81640 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd3f893da rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xd5c7f9b9 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xda0f4f54 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xe79c5b73 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800lib 0xf5e83cec rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0315916d rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x039262bf rt2800mmio_get_dma_done +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0f34cad0 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x129784e8 rt2800mmio_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x1890530e rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x37a85e10 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x67852e9e rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x6db26cac rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x8d1c2cf0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0x9e1b4755 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xb09cf56b rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xbf679235 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc8571e82 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xc95fccfe rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xca651767 rt2800mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe1593a18 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x015415e0 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x069f294e rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x06cc66eb rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0aecb4a3 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x0f811e38 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x11a11dd7 rt2x00lib_set_mac_address +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x14d5aaac rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x18fc0347 rt2x00mac_reconfig_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x2c673b7b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x34ae3849 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3d036eb0 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x3f715876 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x42f3950f rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x47728f5c rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x4c8e041e rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5000a08a rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x555ca9a1 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x579bb2d6 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5b67d4a1 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5b9f6c0b rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x5eb9775b rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x61deb4ff rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x6276a136 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x69330e94 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x695eadc9 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x736c6440 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x7ecae64c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x86377329 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x96fb898d rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0x993a5fd0 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa37b79f0 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xa5f223d3 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xaccc5041 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb51c3d76 rt2x00lib_txdone_nomatch +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xb90c3cff rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xba532502 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xbd2546e7 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xbd4d9ea6 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xcf1cf238 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xd45f9868 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xdaf1d7c9 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xdcdca336 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf1c8bafb rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf3989689 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf43b6379 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xf67b0d48 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00lib 0xfe235042 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x14ec1db7 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x56a5f260 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x6530ba3a rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0x91bd4645 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00mmio 0xd799e932 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0x80dbf58f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xb75aaad7 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xe6318697 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00pci 0xed7d5cad rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x12e8f03c rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x245d94e4 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2a83b82d rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2af5eb4f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2e151eee rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x2f6b1b21 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x41a30641 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x52fe920c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x5d53b730 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x64b7305e rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x8b4453c6 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x8f4a6a6d rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0x92c90d83 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xceff4f65 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xdb3795ae rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ralink/rt2x00/rt2x00usb 0xe7d90531 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0x27637697 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xa389c2af dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xdc242879 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common 0xe32c4b8c dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x131e2589 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x18893dd3 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x1ffa2ecc rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x37bc7a5e rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x3f5bf9c0 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x44c40848 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x4d80d410 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x504e24d4 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x51a9cbd4 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5534073c rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x55f520d6 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x5eb0c60f rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x61ac8e1b rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8071614f rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x8baf8913 rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x940359c1 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x966ad8c6 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0x983addee rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xa2c19a7a rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb1c8cdc5 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xb973f365 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xba5df74c rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xbce76cfc rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xc14ac258 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xd0543b72 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xdd61cd42 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtl8723com/rtl8723-common 0xf2e0cc9c rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x01809c57 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x064eb5d4 rtl_get_hwinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x11f42411 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x28f0972c rtl_tx_ackqueue +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2d32cdfc rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x2e5382f9 rtl_fill_dummy +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x35aa482d rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3a517229 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3ac8312d rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x3f72fb15 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x4fee9d06 rtl_lps_leave +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x534b8e10 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x62124ff2 rtl_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x910f0701 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97658b0e rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x97e05663 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0x9d2a94c5 rtl_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xb03571f6 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xba7715fa rtl_tx_report_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xbe599100 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xc081ab8e rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xd3426db8 rtl_set_tx_report +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe1765ea3 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xe30d9a6c rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xea034924 rtl_get_hal_edca_param +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xed193b57 rtl_lps_enter +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xefc2df8a rtl_efuse_ops_init +EXPORT_SYMBOL_GPL drivers/net/wireless/realtek/rtlwifi/rtlwifi 0xf8e4bc53 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0f5c3ce9 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x1ad53689 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x262c2e30 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2936bbfc rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x52053fdd rsi_hal_device_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa6813d69 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcd173710 rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x04c3f27f cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x1236b8a8 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0x694be56d cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/st/cw1200/cw1200_core 0xafabb321 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x5e2614c1 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x99c58fe2 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc699e71c wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01f8e57e wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06d3b27e wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x140c73b1 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20351125 wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2757cf53 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27ca2bba wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29c5f0ba wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x33254615 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a497aac wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a71096b wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3bdc92ec wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c96e6e7 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43700da1 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4853c258 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x512790c4 wlcore_cmd_generic_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54b61ec8 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64922856 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a331bc5 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x709eb373 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7588a2c9 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x79054a6d wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b762e39 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81fa321f wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82f7f51b wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85498cd1 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8c89e7c7 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93170631 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b2c971a wlcore_event_fw_logger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xad3e71c1 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaef66010 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3d6c0b8 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb455d0ca wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb54ef94b wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbb0e11fe wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbcc1bd37 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc0923ce5 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc294a658 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc7fa0e29 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0d651df wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd9a6690d wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb9d37e3 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf714768 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xedb54116 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee2e70c7 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf90b1805 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfbfe5b66 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x6362565e nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8ba8bac5 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd804b4ba nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe88c9655 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x06ab2501 pn53x_common_init +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x0ce7a605 pn53x_register_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x4363ecb5 pn533_rx_frame_is_cmd_response +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x77ef6b0a pn53x_common_clean +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0x8df1aa1d pn533_finalize_setup +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xbfb65383 pn53x_unregister_nfc +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xdecfd339 pn533_rx_frame_is_ack +EXPORT_SYMBOL_GPL drivers/nfc/pn533/pn533 0xeb035fd3 pn532_i2c_nfc_alloc +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x265dd91a st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x50d3688c st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x809a5368 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8c52af15 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x9819ddc3 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb5304853 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe3e6fb58 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf8b28111 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x4a298883 st95hf_spi_recv_response +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0x99b5c746 st95hf_spi_recv_echo_res +EXPORT_SYMBOL_GPL drivers/nfc/st95hf/st95hf 0xef05df22 st95hf_spi_send +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0862001f ntb_transport_tx_free_entry +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x30934216 ntb_transport_max_size +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x32537aca ntb_transport_link_query +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x3d54dbfc ntb_transport_tx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x436098aa ntb_transport_link_down +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9747050b ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa5cb56fd ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc270dc24 ntb_transport_free_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xc37d9036 ntb_transport_rx_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xd40e7a02 ntb_transport_rx_enqueue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xdb58c14a ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0xaf2e6b94 virtio_pmem_host_ack +EXPORT_SYMBOL_GPL drivers/nvdimm/nd_virtio 0xea6ac8dc async_pmem_flush +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x0de2c5d1 nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x1603d531 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x16c27096 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2508f4f3 nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2fb98f44 nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x361064af nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x3c568f40 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x400afb9b nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4537ba5e nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4bf36b3b __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x51fba644 nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x56b1c3f9 nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5962b769 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x69b75b32 nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6c192255 nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6dc2257e nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7621bef2 nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x77a1cfc0 nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x78f6c372 nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x832008e3 __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x84c6a0bc nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x86ad264b nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x88acd382 nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x88ae1b4d nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8a9c70ed nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x8f091733 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9fa7419d nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xa6f16ff2 nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xad4e0e5e nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xae5b0e2c nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb0e24c0e nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb77ffd9c nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xbd5acaa1 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc5f69ff5 nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd2792418 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd8026664 nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe17cb97d nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf0da585c nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf0ffa911 nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xfde0defd nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x09a7bbb8 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x1c0450ab nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x26e9a5c0 nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x2a93250a nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x79df4564 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x971f910e nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x980ff40b nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9c65a64a nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9dba268d nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9e2a9946 nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xac5f3252 __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xcc873ebd nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xd136ac8c nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x82b2224a nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0264ffc8 nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x284298a9 nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x61effefa nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x6ff15a02 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xa079b5d8 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xaf9e464e nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xcfb32767 nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf445ad36 nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf55428d3 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf6f53177 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xf94aec3e nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0xca4f64c3 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/pci/hotplug/pnv-php 0x18a29a92 pnv_php_set_slot_power_state +EXPORT_SYMBOL_GPL drivers/pci/hotplug/pnv-php 0x2fc91bee pnv_php_find_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x16846eca rpaphp_check_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xd4bb033f rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xe0763d1d rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0x84924e99 switchtec_class +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x1565e3a6 mcp23x17_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0x251e4749 mcp23x08_regmap +EXPORT_SYMBOL_GPL drivers/pinctrl/pinctrl-mcp23s08 0xd9b0faf8 mcp23s08_probe_one +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x0496ce71 reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x0fd283b0 devm_reboot_mode_unregister +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x3e97b5c8 reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/reset/reboot-mode 0x68bacca5 devm_reboot_mode_register +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x5d4bf630 bq27xxx_battery_setup +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0x871676b3 bq27xxx_battery_update +EXPORT_SYMBOL_GPL drivers/power/supply/bq27xxx_battery 0xab78c90e bq27xxx_battery_teardown +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x12747407 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0x4847b28e pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/supply/pcf50633-charger 0xc4bd52c8 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x2eae82b0 ptp_qoriq_isr +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x5fa953fc extts_clean_up +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x6101d679 ptp_qoriq_adjtime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x68021b62 ptp_qoriq_gettime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x8e1fe650 ptp_qoriq_adjfine +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0x97f2d43e ptp_qoriq_settime +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xb135a333 ptp_qoriq_init +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xd43ad421 ptp_qoriq_enable +EXPORT_SYMBOL_GPL drivers/ptp/ptp-qoriq 0xd8f00ef1 ptp_qoriq_free +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3ebfcb46 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x751cc0d8 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xaaf97c8d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfa95db1c mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfd99cdb2 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x151ac4c8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4dcb9a5a wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x58e947f5 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x766759a4 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x878d5816 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa1de304b wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x338db9ca wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x0691a3d2 qcom_glink_native_probe +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0x149236da qcom_glink_native_remove +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xf14f5684 qcom_glink_ssr_notify +EXPORT_SYMBOL_GPL drivers/rpmsg/qcom_glink 0xfd2d5a1d qcom_glink_native_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02b5949c cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cbcf122 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1743846f cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x17ce92c6 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x23a5e31f cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25f7da5b cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28ed2a48 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e5df6df cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f06deb5 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2fd638bd cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41b9ca19 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48826f51 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x488317c5 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48a354a7 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x48e0f2f4 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51e348f9 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5614ed64 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a5ca2b2 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5d11dc9d cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e95fc4f cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5fb51e1c cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f793a4d cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x71fdce46 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x761dbf23 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76ca8be3 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7db7a370 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ef30de5 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80742e0d cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x842db3a9 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bc4935c cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bdf1fdb cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa14da1f5 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb20f0cdb cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7472a25 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb4e4ac7 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc011af75 cxgbi_ddp_set_one_ppod +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc7167dad cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc94087c5 cxgbi_ddp_ppm_setup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde2be73e cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3a0c15d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe514e2ce cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf4225362 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf556a8f2 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9156958 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfdf3dfac cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0b3ce85c fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fbcd10c fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1b6f05f1 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2206f2ea fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3bb476dc fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3e3df941 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x56338dcd fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5dc3782e fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5fb3ba7b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x68945e34 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x69a333ca fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6cb843b7 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6ce1e67a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8d08795c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbce85d49 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xebf9c475 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0x0611088b fdomain_create +EXPORT_SYMBOL_GPL drivers/scsi/fdomain 0xdb65c91c fdomain_destroy +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00fa258f iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4e8907cb iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x73b3cd22 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa2aba6e3 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9037637 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd73cc18d iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xecf4ec68 iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0075eecc iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x04dc5ea7 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06b2db95 iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13123ae1 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18734539 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x34316425 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x365bfee7 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ce981c0 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50b45f7c iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5461d46d iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d2f28df iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6fa1216e iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72bb7582 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80de3047 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x840a336f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x87f44ed1 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b5b64cd __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e0ef013 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f83561f iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x90e05f9d iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x919681c3 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98636709 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99f2bc52 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa05c1a70 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa598d5f1 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb206109c iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb743e5ee iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf425edb iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc26a8953 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4468fc6 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4f9fc08 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6a85d6d iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb1ecf8e iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4c6a3c4 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6b86ff8 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea46fc57 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee226fc0 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1567449 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf737d75a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa8838a3 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb131b9c iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfce65e05 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1fd72013 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6217b2af iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x717acabc iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7606274f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x76dc4255 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7e79d286 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x90c353a4 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb0837d23 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb1a5c82a iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb43baea2 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc2cecd6d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc626dc96 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc79c2760 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xea83de07 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf234987e iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf25b23f3 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfaef7558 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0262398b sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x02ae6da2 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a76ec3a sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18641750 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18eca20f sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1bc133bc sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2a28da8e sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x417ee2b8 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x78809f07 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b60f0b7 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b990868 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7fd220a0 dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e6db9d2 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8fcb9a0d sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x927b7572 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x94d5eacd sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x973d810e sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa06ae399 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa4f83d9a sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb2315af7 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd2294fe sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc6db6827 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdb5c8a40 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe82f7aa5 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04002599 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07b655be iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x126a3c8f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x14753a7d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1931007d iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c7321ce iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f25ef97 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20aa7c98 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x21435464 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x262ad34d iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2aee4333 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a627340 __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42b5cf00 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53635784 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e194094 __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e7ae886 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x641b9ebe iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6da9ed28 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f33abaf iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70ac001e iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x781693fe iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7b09de9b iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81b1d0a6 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x846e2221 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84cd03c0 __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b92f743 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x946dcb33 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x95e6e25b iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9725dfbf iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa31c735c iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8ebb417 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4f8fdfd iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8febbd9 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe835dfd iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc0fe1c42 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2fcb3c4 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd08465d iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6a0924e iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd700a7ed iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda14fd5c iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb7d674a iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4b542a5 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6018a38 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfdd9ab1f __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4750bdd8 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x622d1a7d sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdf49be27 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe99c8688 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa36dcee2 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x0c31d5f8 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x202c2986 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x29b9e62c ufshcd_make_hba_operational +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x2f9c348e ufshcd_fixup_dev_quirks +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x3f1fbac2 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x3fc7e0c6 ufshcd_link_recovery +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x5d588c32 ufshcd_update_reg_hist +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x6a24407f ufshcd_release +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x723b1abf ufshcd_delay_us +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x89782102 ufshcd_dump_regs +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x8c807f97 ufshcd_uic_hibern8_exit +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x8ebd2b6c ufshcd_auto_hibern8_update +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0x99c152cc ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xb5f1144e ufshcd_config_pwr_mode +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xb6c744d5 ufshcd_hold +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xbc371ca2 ufshcd_hba_enable +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-core 0xe10d0f36 ufshcd_dealloc_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x13a307bc ufshcd_pltfrm_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x2ed694e1 ufshcd_pltfrm_runtime_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x42f4d9b0 ufshcd_pltfrm_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0x7451b338 ufshcd_pltfrm_runtime_idle +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xccb06377 ufshcd_pltfrm_runtime_suspend +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xd483aa7c ufshcd_pltfrm_resume +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xdc2b1ab0 ufshcd_pltfrm_shutdown +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd-pltfrm 0xff85cd6b ufshcd_get_pwr_dev_param +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x1d64a8b1 siox_master_alloc +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x3be07d40 __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x5880a0a0 siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x6bd5534c siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x9a87f363 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xb8a8c8ce siox_device_synced +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x1973805d slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x2449d483 slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x270ed124 slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x282f7d71 slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3291fef6 slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3c7d182b slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3dd4b635 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x4493335b slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x465c057d slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7626c65a slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x7a68f218 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x92ad9c63 slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x92b42ea4 slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x94c4135a slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xa7879fd7 slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xab57c5e1 slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xaed4769d slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb973535e __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc388ec8d slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc4e5c9ae slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd1af9518 slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd209654f slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd60157af slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xecb6fab1 slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xef00f466 slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf2e98514 slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x19dd9281 __sdw_register_driver +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xd9ad44fd sdw_bus_type +EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xf91e1680 sdw_unregister_driver +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3dbf923b spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4835f2f4 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4b61261e spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x80b03108 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb81b8fe9 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdc9364c7 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x177db86f dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x18d8dedb dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x21869281 dw_spi_update_cr0 +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6ee1bc45 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x80c52ed6 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x93d3938a dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb6a663db dw_spi_update_cr0_v1_01a +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdc37133f dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfd8e0e12 dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x55e29f98 spi_test_run_tests +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x5a3380dc spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x7245c800 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x093ed872 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x20060998 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2b8515bf spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3ea0d23e spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5a2ffc47 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x672d6429 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x782115b0 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x81ef93a8 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x893a7c80 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x99072155 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9dc09e4a spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb1b7a607 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc13cfb8e spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc2957026 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc4846b20 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe35e78ba __spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf024fe5f spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfa24d8a0 spmi_device_add +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xeb337bed ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c719de9 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x12c2134b comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1315e74c comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22439a2b comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ed36f95 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x309fd007 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x311609ad comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x378b386c comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50e0ac21 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56c4aab6 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56e173b1 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5a68f463 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x603449c8 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x621c6a42 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77c21d61 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x78a13ca7 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x83f4d495 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x84510abd comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8690238b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x87e85287 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x898b75ca comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x931dd672 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb3e5835a comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb7eebc4a comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb1aea50 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xccef2518 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcd27be07 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcec4c010 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd1cb81f1 comedi_bytes_per_scan_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd71947b2 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdcafb8f3 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe236914c comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe36b733e comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe9b532f4 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeef98eff comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3f224b7 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4b3d27d3 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x7e75fccd comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x878f6272 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9ac4373f comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xad713010 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc0c08592 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc68d406c comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xca16811d comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x12677228 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x1fb99607 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x33cbba8e comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x447126fb comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa138a672 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe8b76b7e comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79f4a6cf addi_watchdog_reset +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0xeac585d3 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xdf538e61 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xf7ffe48b amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x219e8a53 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1212cb11 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x21b6f92c comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2261cf4f comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4af4f186 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4d29ce21 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x88122403 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc0e54502 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc68c3651 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd024ee44 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd46e6423 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdd042c81 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe61f1ab7 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xee5bd371 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x14235f23 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x4c03279e subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xeea64d0c subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x899309d4 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x9011ecdc comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xca784d4b comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xe3601f70 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xea878430 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x360d9008 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x01c55da8 mite_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x04ab7643 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x203c3eba mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x26835c43 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x307cb758 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x35a1e4e1 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x375770db mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3cf5d177 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x415b3a09 mite_sync_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x632de76c mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6feac1b5 mite_init_ring_descriptors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc0a7accc mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xceb2537c mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe253d07c mite_request_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe5e6fd65 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfcc4cad7 mite_ack_linkc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x2243a599 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x7cb4dfaa labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x2a23ffb1 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x5308e497 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8ea603b3 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc7b9f10e labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xe107fa15 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x076bc308 ni_find_route_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x0921123e ni_lookup_route_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x1facf7f8 ni_is_cmd_dest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x64443d67 ni_get_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x6c18c54e ni_count_valid_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x85e75c94 ni_assign_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x863a306d ni_sort_device_routes +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8ab47ba4 ni_route_set_has_source +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0x8f0f0901 ni_find_route_set +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_routing 0xb3e302a3 ni_route_to_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x13f17b1b ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2144c7c3 ni_tio_set_gate_src_raw +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x257f6f4c ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x471967e4 ni_tio_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4a4b8301 ni_tio_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5b269fbd ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x70eb8359 ni_tio_set_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8cca3893 ni_tio_get_soft_copy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc298a86a ni_tio_get_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc45548de ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc5f17e00 ni_tio_set_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc7207729 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcd0d6284 ni_tio_unset_routing +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd921b5b8 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd9e8c0e0 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe4f6fd38 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x10fcedd1 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x32522a82 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x7c199221 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc3b471e7 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc492c216 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdd56f944 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x152567ff comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5866d2c9 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x587f8725 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9335a9f5 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb05cc4d7 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc816f6e1 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf8e76375 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x17c06ac6 anybuss_client_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x1de48b8e anybuss_read_output +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x1fce3349 anybuss_set_power +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x2c1a7444 anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x305f1dff anybuss_read_fbctrl +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x4b2759b8 devm_anybuss_host_common_probe +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x82b9dfe9 anybuss_write_input +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x879a5e06 anybuss_recv_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0x8b3207f6 anybuss_send_msg +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xa2ae6915 anybuss_finish_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xeba70ebe anybuss_start_init +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xf0c585ee anybuss_client_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfc8d641a anybuss_send_ext +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/anybuss/anybuss_core 0xfce879ad anybuss_host_common_remove +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x502ed92e fieldbus_dev_unregister +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0x74ffd714 fieldbus_dev_online_changed +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xc294d16f fieldbus_dev_area_updated +EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xc5643640 fieldbus_dev_register +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x022bb59b gb_audio_apbridgea_stop_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x19868787 gb_audio_apbridgea_stop_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x2a45f9c1 gb_audio_apbridgea_set_config +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x42e8a663 gb_audio_apbridgea_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x45625550 gb_audio_apbridgea_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x4d40a575 gb_audio_apbridgea_prepare_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x56ed9769 gb_audio_apbridgea_prepare_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x623dd7a9 gb_audio_apbridgea_unregister_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0x7b02af8f gb_audio_apbridgea_start_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xae5ff668 gb_audio_apbridgea_shutdown_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xb5f2c474 gb_audio_apbridgea_shutdown_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xc95a5be0 gb_audio_apbridgea_start_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-apbridgea 0xdaec18fa gb_audio_apbridgea_register_cport +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x01679967 gb_audio_gb_set_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x09482e57 gb_audio_gb_get_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x0b0fee40 gb_audio_gb_set_rx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x0b9115a2 gb_audio_gb_get_control +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x4be3ed1c gb_audio_gb_set_tx_data_size +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x71aac450 gb_audio_gb_disable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0x93343a09 gb_audio_gb_activate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xb8aa2f22 gb_audio_gb_activate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xc61568a6 gb_audio_gb_get_topology +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xdc11b4b5 gb_audio_gb_deactivate_tx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xed520cce gb_audio_gb_enable_widget +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf78fa19e gb_audio_gb_deactivate_rx +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-gb 0xf7e42e05 gb_audio_gb_set_pcm +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x19e9e6b1 gb_audio_manager_remove_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x27f4936e gb_audio_manager_put_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x32e6391e gb_audio_manager_remove +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x5a108b0f gb_audio_manager_add +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0x79eef2f8 gb_audio_manager_dump_all +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xaeac8ca2 gb_audio_manager_dump_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-audio-manager 0xce262c7b gb_audio_manager_get_module +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0x986ab471 gb_gbphy_deregister_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-gbphy 0xf7722c6c gb_gbphy_register_driver +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x00fd7eb8 gb_spilib_master_exit +EXPORT_SYMBOL_GPL drivers/staging/greybus/gb-spilib 0x9cd79a7b gb_spilib_master_init +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x3f8b5023 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0a87ca51 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0c4cc5f5 spk_do_catch_up_unicode +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1b4e3de6 synth_current +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1e39eb14 synth_putws +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2603ad33 spk_ttyio_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x466f5eb7 synth_putwc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4d3760d8 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4d560bac spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5e2b0833 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5e34f168 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x696ab4d7 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6f702722 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76d40046 synth_buffer_skip_nonlatin1 +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x84dad068 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c82dfca synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e50055a spk_stop_serial_interrupt +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fe0db01 synth_putwc_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x93bb8a9a spk_serial_io_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x94f28768 spk_ttyio_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaadb0612 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae7d6424 spk_ttyio_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb68cbedf spk_ttyio_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb95b0515 spk_synth_get_index +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xba0088e0 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbe3f0c60 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc319c604 synth_putws_s +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcca44049 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd8fd86cf synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe194d0ef synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfcf2b02b spk_serial_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfd189eef spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0x845b1cde host_wakeup_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xae93fbff wilc_netdev_cleanup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xb4442a09 wilc_handle_isr +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xb948758e chip_wakeup +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xbef64b47 chip_allow_sleep +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xcde4a679 host_sleep_notify +EXPORT_SYMBOL_GPL drivers/staging/wilc1000/wilc1000 0xe4af4d63 wilc_cfg80211_init +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x01d23ee1 tb_property_create_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x06d695c4 tb_service_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x23130426 tb_ring_poll +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393a9c96 tb_xdomain_find_by_uuid +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x393b4f2f tb_property_free_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x40f7b929 tb_xdomain_disable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x49a252c1 tb_register_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e5064a7 tb_property_find +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x4e64bdfd tb_register_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x518a4349 tb_ring_alloc_tx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x603249ed tb_unregister_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x658e3d97 tb_property_add_immediate +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x691986fb tb_ring_alloc_rx +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x73ad2acb tb_property_get_next +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x785eb82c tb_property_remove +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8b62f95e tb_property_add_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x8dbdac15 tb_ring_start +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0x9ea58fc1 __tb_ring_enqueue +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa353bfe0 tb_xdomain_request +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa3d2b403 tb_property_add_data +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xa49b620b tb_xdomain_response +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xaa875dc5 tb_unregister_service_driver +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb7c7cdce tb_property_add_text +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xb8dc3a93 tb_xdomain_enable_paths +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xd7a08723 tb_ring_free +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xe8897ff1 tb_xdomain_type +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf1cfd1ff tb_register_property_dir +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf76028c7 tb_unregister_protocol_handler +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf814d165 tb_ring_stop +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xf92b47c7 tb_xdomain_find_by_route +EXPORT_SYMBOL_GPL drivers/thunderbolt/thunderbolt 0xfe4d4058 tb_ring_poll_complete +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x8a422e5e n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x0e4736ea uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xae8f5c8e __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd3f6c0d3 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf6bba73b uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x5e2b78ab usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x86b5bb3a usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xbd3b2062 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf1561739 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xf8dcfc29 hw_phymode_configure +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x37737026 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x78a93ee5 imx_usbmisc_charger_detection +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x84c1b492 imx_usbmisc_hsic_set_connect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa0f97fc6 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa951dfbe imx_usbmisc_hsic_set_clk +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xabb6c71b imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x28068082 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x41273f4b ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x416471ab ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x60866043 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x889670cf ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa503dfc1 __ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x3f680502 u_audio_stop_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x539bd020 g_audio_setup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x78e08289 u_audio_start_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0x8d230c93 u_audio_stop_capture +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xa6a5a0bc g_audio_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_audio 0xc2ff3ff6 u_audio_start_playback +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0c521952 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1117418f gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2a4f96b0 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x45cf464e gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4e14e777 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5bf19595 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5f952f0c gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x67414bbe gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x68d19868 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x72ffeb0b gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x734d55c3 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8029b6db gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8d83bd6e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcbbb60c6 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd9022e1f gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4a3df9d0 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60db48f5 gserial_get_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x60ea48a0 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x72648e8f gserial_suspend +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc0a01527 gserial_set_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xca0304e5 gserial_resume +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe1c685f6 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe4d30822 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe89dc424 gserial_alloc_line_no_console +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x1bd356b7 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x1be2e787 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xa496e576 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x141fce2a fsg_common_remove_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1710b539 fsg_fs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1899f9ff fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1ccb58f7 fsg_common_set_num_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x265ba2ff fsg_store_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2933ee1d fsg_ss_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2e2dd7ee fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x398778e1 fsg_ss_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3c6a07d0 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3d3865b5 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4dec30cd fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4e603fb0 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x50209085 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x54834a2c fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x56344daf fsg_hs_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x671421c0 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6acb4179 fsg_common_set_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x70e03495 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x7e26d4a5 fsg_common_set_sysfs +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x857b6dc2 fsg_hs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x90b59fca fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9a0221c7 fsg_common_free_buffers +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5cae92f fsg_ss_bulk_out_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa5f99b69 fsg_fs_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xab6c68ac fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb26b7177 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb2c2cece fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb3adf38d store_cdrom_address +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb52ba28a fsg_intf_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xb54d0d95 fsg_fs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1a3e8e0 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd1d29ac1 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xec3b3027 fsg_show_inquiry_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xedc2eb0f fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xeeb7b5c7 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf4efc0c8 fsg_ss_bulk_out_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1ac8ab44 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1bd2e7d6 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4c0fdfed rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5c24b06a rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x61e3e011 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x640f9319 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8fcb1603 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9121cbb3 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9efae133 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa1611222 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb981b88a rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc01ef8a9 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe12a8ba4 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe7ed3839 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfe29f00e rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c589aba usb_validate_langid +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0cb7e477 usb_ep_autoconfig_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1e861933 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2711cbb2 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2f09fc19 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x339bd354 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x34afa007 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4beb505d usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51c232ae usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x555d43ed config_ep_by_speed_and_alt +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x59110ac7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5c346bd4 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x609a3ce4 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x666e68e4 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6709b6d6 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ac7fc48 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x788dd692 usb_otg_descriptor_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7891221f usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x89165541 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96de3eed usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x98dde9e5 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xac0339db usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb17566dc usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb775db55 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb83296bc config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd82edd94 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdb3b333c usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc11f3ca unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdcb3a11f usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea1a7036 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xecdecdd6 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf278495e usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf45b1596 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd86b7ca usb_otg_descriptor_alloc +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfda5d6d4 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x033aea24 udc_mask_unused_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x0b20025c udc_remove +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x5d01d078 udc_irq +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x8ff2425c init_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0x9a60f351 gadget_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xa541e23e free_dma_pools +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xcfd45fe0 udc_enable_dev_setup_interrupts +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xd0b31cc5 udc_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xfb2c97e1 empty_req_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/snps_udc_core 0xfe233d37 udc_basic_init +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x01b12bfb usb_ep_free_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0a8c3b4b usb_ep_set_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0acfe2e7 usb_ep_set_wedge +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0d90d784 usb_ep_fifo_flush +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0f32454e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1a93aa04 usb_gadget_ep_match_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x25cba006 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2e00125b usb_gadget_clear_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2f690078 usb_gadget_vbus_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x38946f43 usb_gadget_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ed6715b usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x42d486b1 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x49d9f030 usb_ep_fifo_status +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x506ab3a9 usb_ep_queue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x50b88f41 usb_get_gadget_udc_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x55262fd0 usb_gadget_vbus_draw +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x56ac1ca8 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5743df93 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5b035bec usb_gadget_set_selfpowered +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5fc294ef usb_ep_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a41b9f2 usb_ep_set_maxpacket_limit +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7be89624 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7fcafb7d usb_gadget_frame_number +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x882077d5 usb_ep_dequeue +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8be00387 usb_gadget_wakeup +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8deaa651 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x92051424 gadget_find_ep_by_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9eb52803 usb_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa58637e5 usb_gadget_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa9e74462 usb_ep_alloc_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaab8b609 usb_gadget_vbus_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaf201fa6 usb_ep_enable +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb35380bb usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbbcd5b4f usb_gadget_map_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd73bce43 usb_gadget_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdd62a46f usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe31a1d58 usb_gadget_unmap_request_by_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xede51fdd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfd740245 usb_gadget_connect +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x84a72c87 renesas_xhci_pci_exit +EXPORT_SYMBOL_GPL drivers/usb/host/xhci-pci-renesas 0x87797974 renesas_xhci_check_request_fw +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x23f42075 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x30d728ec ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x06d01d74 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x127adb12 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x328ebad2 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3773ee0d ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5d6f6f36 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x79ff9816 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x82045e72 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd90decd9 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xda2375c5 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x09492220 musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0b4a8834 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x1ae0a976 musb_get_mode +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2734197f musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2cdd5ef3 musb_queue_resume_work +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x49722939 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x51dd0839 musb_set_peripheral +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x669594ad musb_clearw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x6af8c6dc musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x719a5e41 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xade3e56c musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xc10f36ef musb_set_host +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xe59efb0e musb_clearb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xee278970 musb_root_disconnect +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xf0f95e51 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x432ef72d usb_phy_generic_unregister +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x49c988db usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x4d3b3582 usb_phy_generic_register +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0x702df01d usb_gen_phy_init +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-generic 0xbfee51c7 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xee52463d isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x1690b503 usb_role_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x2882d40e usb_role_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x315ebbc2 usb_role_switch_find_by_fwnode +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x4ce06f13 usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x516599f0 usb_role_switch_register +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0x51a348cc usb_role_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xa0e3d538 fwnode_usb_role_switch_get +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xc9fd634a usb_role_switch_put +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xd5474690 usb_role_switch_set_role +EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xff42c374 usb_role_switch_get_role +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xcc4e48d2 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x011e7b2d usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x17268a9d usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1a190d52 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1ac74079 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1cf5441e usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x23d79352 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c5d1dd0 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x314eb20b usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x42d4dea7 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x44bd11c9 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x57f9e101 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5e038545 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7676331c usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb8f5f5f1 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc2e51d3e usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8e1ad19 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcc95ecfc usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcffa8913 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe4d11453 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xec67b0c6 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfc16457d usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x03da9ccd dp_altmode_probe +EXPORT_SYMBOL_GPL drivers/usb/typec/altmodes/typec_displayport 0x8f6abe24 dp_altmode_remove +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x6f497a3c tcpci_irq +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0x70345ff9 tcpci_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpci 0xc529e32e tcpci_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x3b84657b tcpm_pd_transmit_complete +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x76eeda4b tcpm_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0x9e0bd753 tcpm_pd_hard_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xb655342c tcpm_pd_receive +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc37b9769 tcpm_cc_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xc7fee416 tcpm_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xceb50012 tcpm_vbus_change +EXPORT_SYMBOL_GPL drivers/usb/typec/tcpm/tcpm 0xea220941 tcpm_tcpc_reset +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x001495fb __typec_altmode_register_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x03608f2a typec_cable_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x08ad5e53 typec_mux_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x0c589db2 fwnode_typec_switch_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x1b90ac2b typec_unregister_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x288fcb6f typec_port_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2c4b45c2 typec_cable_is_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x2d1e301d typec_find_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x33fd62de typec_set_pwr_opmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x36852716 typec_set_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x3c4e4c53 typec_altmode_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x426285ea typec_unregister_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x469ff96e typec_switch_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x48501462 typec_match_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x493159cc typec_partner_set_identity +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4aaf4de5 typec_cable_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4d0636fe typec_mux_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x4f023d7e typec_switch_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x504a0f5f typec_altmode_put_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x54c93810 typec_set_mode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x560f3c0e typec_register_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5869adb2 typec_get_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x59169f18 typec_altmode_notify +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5ac3a632 typec_set_vconn_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f2c6469 typec_set_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x5f357e64 typec_altmode_get_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x614740d9 typec_register_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x6d41bd13 typec_mux_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x718746bc typec_altmode_enter +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x734a9c4d typec_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x74319c8a typec_altmode_update_active +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x77d7f5fb typec_mux_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7a496a8f typec_plug_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7e2998e7 typec_set_pwr_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x7f10abf6 typec_altmode2port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x877776e8 typec_altmode_get_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x88631134 fwnode_typec_mux_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9049491e typec_find_port_data_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9cad8da6 typec_unregister_partner +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0x9f693450 typec_mux_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xa254de98 typec_find_orientation +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xb73777a3 typec_switch_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xc4aa4adc typec_altmode_attention +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xcb4433f2 typec_switch_set +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xd0b95b25 typec_switch_put +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xda0a9c4c typec_unregister_port +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xde83e38a typec_cable_get +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xdf879728 typec_switch_register +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe2c3b700 typec_register_cable +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe5953743 typec_unregister_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe8c78c61 typec_altmode_exit +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xe99e2a1f typec_mux_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeafc1eb8 typec_find_port_power_role +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xeb355944 typec_altmode_vdm +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xee19f4b1 typec_register_plug +EXPORT_SYMBOL_GPL drivers/usb/typec/typec 0xfd32774c typec_partner_register_altmode +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x24d0e0c3 ucsi_create +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x38683a33 ucsi_unregister +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x52a39e3e ucsi_set_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x6d597e11 ucsi_register +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x7aca2da2 ucsi_get_drvdata +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0x874a61e8 ucsi_send_command +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xa7df251b ucsi_destroy +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xad5aa050 ucsi_init +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xcc7bd400 ucsi_connector_change +EXPORT_SYMBOL_GPL drivers/usb/typec/ucsi/typec_ucsi 0xdd2461e9 ucsi_resume +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x02291e1c usbip_in_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x049e648e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x128b9169 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x16e8ccb7 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1ad7a40c usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3de77382 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5ec28d85 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9abeaad8 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa3c23c53 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc07714fe usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc782cbda usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd6d975d4 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe5a9473c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x031991de vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x1fbc215a __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x31b0c9a9 vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xc33d470a __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xeae1d14c vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0x3c55ea44 mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x069820ee vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0c472ffc vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e6799db vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0f192ebd vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x11905638 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e2ed2a2 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2be722d1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35498be3 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3df16030 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x472641cb vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49057e01 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4abf2db9 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x530b9a60 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x55cbbfc8 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5b476afb vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x62509f36 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x68a5bc6e vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6a8a44a3 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6c524d03 vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6fe037d4 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7801cfb2 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x781482ad vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80b9263a vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x87631811 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x879455be vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8b3148ce vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x924264d5 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x937ebe12 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96ae43ae vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x98e3b13d vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9c59f145 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa483bed3 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc62cb4cd vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc65ea064 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc848a150 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd01e2211 vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf27d49a1 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf9da9d4b vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd0dc823 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2e5e75bf ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x43115eae ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x795796a0 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x882d6960 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa3f51bbb ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe4df602a ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xee930fb5 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x23038fed fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x95ce8e2d fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xb371c793 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x2d70f08d sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x4587b6fe sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2bcf0a8c w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63757e92 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x789f3fd8 w1_touch_bit +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7af29ef2 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x817e5629 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x88ce0245 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9116ca68 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa2f322a0 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdba57cb2 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe8a84775 w1_triplet +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf0804651 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfedbcbf3 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x0a86b0e9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x3261e673 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x86b76a21 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2cba4679 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x59cafe53 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x66890230 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x67264180 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xaee1a8df nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb81f1eb6 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf523b027 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x007718cf nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04228043 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09593b61 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bea3344 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f40eca4 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f70849f nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f70fa5b nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1008afb2 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x116ea35e nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x156dc6e9 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15a7721f nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1834ef2a nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a8c62f6 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c1cbc8c nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1daee32b nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1eb04a85 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x231df1e8 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24d054f6 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27ba0890 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a4a2b31 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2da1aceb nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e466907 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3119b799 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x321a80a2 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32900bef nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x361afc0d nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d71bdb2 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f13680b nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418957af nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4189db2e register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41de2ed7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42fb9b15 nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x430ed2b5 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43fd2fbb nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45967a6c nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46449086 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46bec06e nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b4b3f2e nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e3d78ba nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f00d241 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fd225bf nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53254bbd nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53be6368 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5701e5a2 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x571a6217 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5db910bd nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dd2a35c nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60f866f9 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6271e4f6 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x634c93d9 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x646bfe53 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6814d741 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ab12dd2 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c6fc418 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d207907 nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6dcb5210 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6dd8e1e0 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fc7363d nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72ccfedb nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x763afb1d nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7693a9b5 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x769fdd46 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7732e04c nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x778a9e07 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77c6f31f nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a6ddda5 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ea788f3 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80e761ae nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86a59fb0 __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86b188ad nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8701522f nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a17b311 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d602d20 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8dc1682c nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9315e0c0 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93dfd3ad nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bbe06a2 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bfb9b42 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c8ee70c nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f28a72f nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa09cdaa1 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2b0b895 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa71cd068 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7c3d989 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa99f0f93 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab00be0b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaba57840 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabdfe842 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf019bc0 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0cd9207 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb77f71dc alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7cf96c0 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc0b2e82 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdd0bd61 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfb0d99a nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc139e2e6 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5429903 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5db0bb4 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc94d1c0e nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca1c7361 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd116e971 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd14dade3 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd289dbf1 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd57d71cc nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd77c6c79 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd78e8ab5 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7b3742f nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9504024 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb3648e7 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdba4a6ec nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbc3e525 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc8095c2 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe113e21b nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe18bba12 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1a92c89 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5ac2fde nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6ba7662 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6e8d7f1 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea28b83e nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb6b4c43 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec9ca884 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xece92266 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf075c3b4 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0a2e27c nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1cea4c6 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1e1f109 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4b3f04d nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf617cdab nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf766a9a7 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf84cb6f3 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff2049bb nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xb91eb6db nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x022f6198 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03cc12d8 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0549b63b pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x055d4fc0 pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0717763b pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x073ebc62 __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a186834 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1039e5d1 pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x121133e9 __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x136003b8 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1607de7f pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19552c33 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ac8b33e nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1eaca01e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20026b5b pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25bdc8ed pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27840e70 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2a11bcf5 __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2fc37aad pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3072931f nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32d3b224 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x331c513e pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37f233b4 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3bfde76c nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f457c02 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f4a6b3f pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fa082bc nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x403d8b3c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4055d213 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4271f16e nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x46311cfe pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x469f5804 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4aee1b70 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4c1c8e97 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d0296d6 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51568ac6 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x535240aa nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5373e44b pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e0123cb pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67c4a977 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b2e2bef pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ef2b2fb pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73928666 __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c881658 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f1b7c5a __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7fcd5874 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80e7db51 __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x843074ca __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8482a37a nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a29fb12 nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90b9cf21 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9856e5f9 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d545f3a nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e6c4246 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa63ad00c nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8208c2d nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae3d11de pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae5746fa pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafce4b03 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6eb8976 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8513e14 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb223bc7 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc257b8a __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0f0bdd3 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2eca0c7 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc61672b5 __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc67b39f0 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1f32e8d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5932a5b nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8a1c395 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc53db81 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd533d5e pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde2503cd __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe0a50b0a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6121224 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe661cb52 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeecd5f43 nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf05d452c nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf6698263 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfacd8937 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe5259a2 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x09b887fa opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x30d18432 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x592d4e53 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5fe17aa0 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x6f6a7718 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687a5acd o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6b4d2fe7 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9e443989 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9f3e5e69 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd8023423 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe7ed0b9c o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf06536e4 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x48327e0a dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x987624da dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa420db81 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xce446950 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd1074200 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xf1e17a6b dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7ec674a9 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa65b7e55 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xac1f1ae4 ocfs2_kset +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd7f8e474 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x43cc3d4b pstore_blk_get_config +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x941c79d7 unregister_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0x96d760c6 register_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xb32bf368 register_pstore_blk +EXPORT_SYMBOL_GPL fs/pstore/pstore_blk 0xc3d2aed6 unregister_pstore_device +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x4055bb6e unregister_pstore_zone +EXPORT_SYMBOL_GPL fs/pstore/pstore_zone 0x53c447d5 register_pstore_zone +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xce980922 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xcfb60d8c _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf2e873e8 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x0c303f52 bch_encode +EXPORT_SYMBOL_GPL lib/bch 0x0d3e3481 bch_free +EXPORT_SYMBOL_GPL lib/bch 0x1a267fa8 bch_init +EXPORT_SYMBOL_GPL lib/bch 0x860a2eab bch_decode +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0xeaf3cb23 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xbc3b5e35 poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xd7219de2 poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xf3945fcd poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x567810c9 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x591a2145 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x1803a6ed raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x2b30f429 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xe4b051cf raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x1d29b9e1 decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x561835eb init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xa32f3d9e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x000e1cb1 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xb302feaa lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x31549988 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x7be33699 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x83de19e7 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8d77e699 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x933ee054 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xd1b15140 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x4fb4ee2b mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x62bba8e1 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x72617f5e mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x7da23a7c mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd9fdf078 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf7cb69a9 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x8829b561 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xba977d9c stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x5035b4b9 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xec2be369 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x35f5803a ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x109a28e6 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x12b4e849 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1566b20e l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2beace4f l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x63064014 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x874c7a7a l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x919bd3c7 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xae66e8ad l2cap_chan_list +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd7f9604b l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/hidp/hidp 0x17b502d9 hidp_hid_driver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0bcd918a br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1bbd4c72 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1bc677f8 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2bcb1497 br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3aad320c br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x50bbcae7 br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6058b333 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x747a160f br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0x780cda25 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7c1fd6f4 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7ee7ea54 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8895c03b br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd66fa306 br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd88a23b4 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd9983421 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0xda6ebbf0 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe845fe9a br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xef2f1d3e br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/core/failover 0x7c2d974d failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x82eed421 failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xce685547 failover_register +EXPORT_SYMBOL_GPL net/dccp/dccp 0x014e50a1 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0444180d dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x101335b9 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b31317c dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b9b4797 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ce6f014 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33ccdecc dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36dd8132 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e91c5ec dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4217ca16 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4373c00f dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x442858fd dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x445821c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50c2bbd5 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x528bf03b dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d46c4f9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5dcd0150 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x60b59e0f dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6314dfed dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6cb077ae dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x746b7914 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x773e6c69 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ee924c5 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87b16dc9 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ddacee5 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x960339f4 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a5db2eb dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa293a4a1 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa4439038 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa729cb18 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xadc25c89 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb7569bc7 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd65b356 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc730f438 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcbc9eee4 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf61ccf3d dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x192fb280 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x78f7a139 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x82c848fa dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb8746d89 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xba65e120 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf8720920 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0131efb9 dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1ca71dac dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1cee15a9 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x20437559 dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x28128063 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x28141d3b dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x43b766b9 dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4faecad9 dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5c5bb8ee unregister_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x6394b617 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x6998fbeb dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x8d490e5f call_dsa_notifiers +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xab4c57e1 dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xaf9acaef dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb058690f dsa_switch_suspend +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb05d2176 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb84cbb6f dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbb3d8377 dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbc7f70b2 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbcd12888 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xccf6e25f dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd2c9caf8 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd95ed9ef dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe5a10492 dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf86039e0 register_dsa_notifier +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x2b0aed08 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x698731e7 dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x72043bf3 dsa_8021q_xmit +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x855e374d dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x96dc17af dsa_port_setup_8021q_tagging +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xa2c84791 dsa_8021q_rx_vid_subvlan +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf8247cc3 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x587ec8f2 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6c415750 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6c6fb947 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xb9293979 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x807d3d01 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xccef7924 ife_encode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x8f910ab4 esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xced92aa7 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xfc9fa971 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0xad38453a gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd7c52cdd gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0d338db7 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x20057fb4 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x270e9dda inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x434dad73 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9332408e inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xacd25504 inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc7063f1f inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcba527b3 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf1a8a41d inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xb4c9b393 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x03bc1db6 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1ce0abb5 ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x241f1f23 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x276ee39b ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x28d85c50 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x584cee2f ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5a399e55 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5d01c72c ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5f17057d ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x733fe583 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7e240a6c __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7f168ce5 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x828fedf2 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x93a3f363 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb0c655d2 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc3f745bb ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc84fac8f ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x3752de09 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x191cbd2a ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x07a8487d nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xc35f9fcc nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4a86407a nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x566c87fa nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x56aad31a nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x60907372 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd8e3e864 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0xd0b3cd21 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x13489dfd nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x4ca6ed74 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x4eadb11d nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xc1c357ca nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xfb205e28 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0f73fc8d tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x18bc11db tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa93a264e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcec751c6 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf1745c93 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0055d0bd udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x2594c709 udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x713a9740 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x7a66c0d9 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xa878279f udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb51c0439 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xea69f46c udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf3dd1ca5 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x360fcda4 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x6574a8af esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xaf1da4d6 esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4992ac3d ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9f3487f9 ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xcb84f39d ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x9b74cbf1 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xef08e1db udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xf3004a6a ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xa0fc6931 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xbe49b625 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x204bfd69 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3c23849a nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x7fe6baac nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x87a6e971 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x995a819f nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xeafeec11 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x57d46c48 nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x30a69317 nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xb9fde7a0 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xffe78dbb nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x6091485f nft_fib6_eval +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xd5ca45de nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0a70ef54 l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x11091e18 l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3f6a6f6e l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x43382a34 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4729ccf6 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x489cae76 l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4b40ca2b l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5e8a3947 l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x71c6f300 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9ed1389f l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa8a734e8 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xad3f3c0b l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb5793de9 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc845a207 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd8b1294b l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdf693c3b l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf85e0ebe l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x1fe056d9 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0a017efb ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0c6732c4 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3d24c6e2 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4dd8fa0e ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5765176a ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x647253f8 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x831103c5 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x97087a7f ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x981d8b77 ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x98ce53b2 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb0e5a2bd ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5e96065 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdc7bd201 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xde0b128f ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe5c83827 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf7bb64b6 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfadcc0ee ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfc99b0f9 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x1c36b526 mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x546f2a67 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x6b033b23 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xc261df5f mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xee107245 mpls_output_possible +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x047b6426 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x08dd03fb ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0c528533 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x115e4c7f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1a80fc87 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2d59bcf6 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x343e00f5 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3b565496 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x52f47d38 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x90aa4f73 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa9c774c9 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb2ff2db5 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbec73da4 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc9c7f5cb ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcee694a1 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd1ed1199 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd3920cf6 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd78e3176 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf18b1fa7 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x597dd7ad ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x62aaa55e ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb0b9e061 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf33c8336 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x162e96f1 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x496ff3b7 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x661f0c8a nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xd7cd88e4 nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xef61dcd8 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xf2728e70 nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xf8ccb000 nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01fcc604 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x075e184e nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07d852a9 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0823ac68 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14bec9b1 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1501b5e2 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18f79261 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b4c231b nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e54ba8a nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e72f36c nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ee727f4 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x22a9e23d nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x266673f4 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28c25b9d nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29e4a1ce nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e7df95e nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x319823f0 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3375a0be nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34c201a9 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34fc2332 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x375c7557 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e6a11d1 nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4642a678 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a878f2a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c7df232 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51f0e448 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x529f1c46 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x579a48e8 nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x587a3855 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dc47db7 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61130ba8 nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x625a22d2 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x692ff18b nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c3f2ef1 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6df234a6 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71e5dab4 nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7269d128 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b287d3a nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7bd16410 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x807d5fce nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x846b54c3 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x859bc673 nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b1c7884 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e61f430 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f3a0a91 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9086a150 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94892a3c nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9fae4bbe nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa19fc4f4 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a76da2 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9834954 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaba61c63 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xacecf206 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaefb3ce8 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafa06016 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4ac6f80 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb91b2d0d nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb71c1b0 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1aef38d nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7b20889 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc822e285 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8abcaec nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8c75c21 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb229769 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb84dd48 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdd59b87 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcee07c16 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd06dbfff nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6d09404 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda50795e nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb1dda00 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe076af99 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1d651eb nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3c4bc2e nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5274f14 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5c28f52 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb847a8a nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeebad536 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf50632cb nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf615c331 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfacc4d77 nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb36e950 nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9fef6452 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x44f5ae86 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x233331cd nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x04251bb1 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x55c55625 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5c44a842 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x69faf544 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbd43f8ba set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbe99805e nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd0aa25c1 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xefaaf8d2 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf1a0252b nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf38bd875 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xdfbae772 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x282a0d1d nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2ba64262 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2c13ce11 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x87ac140c nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x10f6954f ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3fbbe7ec ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5ba98200 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6474d753 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa714f50a ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbe6a6e16 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfd270069 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xd3362d71 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xb6e97f89 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x213d8a86 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x4a53c683 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x9daa0fed nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0160e319 flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0d1d17d6 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0f769560 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0fe75f49 flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x154c3756 nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1e4dbc46 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x38a73b8c nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8541e897 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x85b5b494 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x898dc371 nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x90d06461 flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xa12622fc flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb6b5afb2 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xc496d8b1 flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xd0b53a81 nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe0aec1ef nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf27bab36 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x166d1f2d nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x917871e4 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa09cf243 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xbfcd2c60 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xdc375bdd nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xea32c7b4 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x09303218 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x12c9d2fc nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x203203d4 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2f4359f5 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4fd5f94a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x542a851a nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x67191f4a nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x722dc6ed nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x76b853bf nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x81503235 nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8bf6640b nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x98b892bd nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd1055e2f nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe59eaa2f nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf1f6812b nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf4046ba2 nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x21fff240 synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x945c2567 synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x9ce2615f nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x9fddb645 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca8788fa ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xcb311d67 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdd73c527 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdd842a48 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdebbfd52 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xed549f9b synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xff2b7a82 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0b8e700b nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0e50e07b nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x11b44b8d nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c3b7930 nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31464f2a nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x341b1d1e nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3d46a099 nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4382a96e nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46a17efd nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4d7e7082 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x51a284a3 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5d396024 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x61b5747e nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6260dbef nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6361ad6d __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6402b389 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x777175a8 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7c7301e5 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x847399cc nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8c9437a1 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x95fb42ff nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x96e19764 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa4722d9a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb1fe5b7b nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb44152e7 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc7b489a6 nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcab76159 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd4c81bf6 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdfba2b53 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe6581251 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf006d6af nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf2e1bc1c nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf3dff7da nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf766e6f8 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf929c757 nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfb6436d5 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4ac29c26 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x63d577f6 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7d24644e nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8850e35a nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc9d27a02 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdad5e75a nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x288c5e70 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbdfcb732 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe92f2504 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x963a7223 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xe8d5b91b nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x041de308 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x227213ca nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xd71d55bb nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xe1112176 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x65e1fc82 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa593c702 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xfeb08ad8 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x02ca922a xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0573a45f xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0e2be714 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1941e1dc xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1a4c1f1a xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a9e8878 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3edde7e9 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x47e7b119 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x56ebede9 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5e3f0e96 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x72ced28c xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bc25528 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x857ffd1c xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x887ca9d7 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9e7fee3f xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xabcf7a86 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc6ce3030 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcf0df797 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf43dc132 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf790af43 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf80c5be9 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf9f2aa7d xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x0539bc67 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x38af1c6c xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x1f1ce9a3 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x913167a5 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xf769e262 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x277b9afa nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x559d2c44 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x6f7a0520 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nsh/nsh 0x5c7cd6e7 nsh_pop +EXPORT_SYMBOL_GPL net/nsh/nsh 0xc6596abc nsh_push +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x79eb7036 ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9d761c1d ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaa6d748a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbc9fad61 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xca6cca18 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xfffb9507 ovs_netdev_link +EXPORT_SYMBOL_GPL net/psample/psample 0x04e08bf0 psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0x32b00f23 psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0xa5cbb9a6 psample_group_put +EXPORT_SYMBOL_GPL net/psample/psample 0xb5174d8d psample_group_take +EXPORT_SYMBOL_GPL net/qrtr/ns 0x636a2832 qrtr_ns_init +EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x0e550a9f qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x16583d7a qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x21692880 qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x04f10f45 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x0a1eda40 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x1a6f3d93 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2338becf rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2f59f7c5 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x3362d649 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x43ef37bd rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x4e595b00 rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x5e65d61c rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x637d0db9 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x64d57fad rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x6c9bf984 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x6fbbb44c rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x710f53fa rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x791db4b2 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x809cea95 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9c4819c1 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa2dcaf95 rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xace3c6ef rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xb4d41f58 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xb6a342a0 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xbb500813 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc196424d rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc2e5e61a rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xcb042c8a rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xdf92421b rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0xee41973e rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xef4b97dc rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xf922bcc7 rds_connect_path_complete +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x0197e073 pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xea618419 pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get +EXPORT_SYMBOL_GPL net/sctp/sctp 0x118b6ba4 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0x53daae5b sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x9e8288ab sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0xc8ec3896 sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/smc/smc 0x02bc8330 smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0x20910dec smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x47ad97ce smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0x66158e8e smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x6c3f65c8 smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x7b0b61fb smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xc2e5505f smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xd32ff6bd smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0xdb71d753 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xdc9e7385 smcd_handle_irq +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3e005d9e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6c01848d svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x78eadf23 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa7939340 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00156ac3 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0185b0c4 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x020707e9 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02942e3e svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x036a8ed4 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04239eae rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04791e6e xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06f555bd rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07617adf svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c18c571 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c689869 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c6fff76 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10de8d26 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12588f0e xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1277fa21 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x157d04ba svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1645ca80 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17cfcf7c rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18108613 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19409700 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aebbe7b xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b933420 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cb862bd rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d103a61 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d735acd svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e17bba4 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e3e039e xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ea8ff04 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20d9cd47 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21818626 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22b6b679 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23a0d4f0 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23dc5be2 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24cf5680 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2517043a xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2590ed7e rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2686ad3b svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x280ff097 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2832d62e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28e42144 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bd096f8 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f440798 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f626935 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x310d2d66 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31ac313f svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32fe1a96 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x335f0b58 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3399146a rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34c25cc9 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x351af62c svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38cc69f5 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3aa08a1c sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b837014 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c97bd63 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eb6ebc1 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x404e5d4e xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42fb178a xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43132a1b xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4428697c xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4524060a rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4526d2ec rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45394104 svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x459cf66d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46c9ccd0 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x470f7c5b rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47c7b030 cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47eabc54 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d8683e3 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e3ff3de xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f2428cf write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fffd17d xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50812677 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x516acf57 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5183deac sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x545b750a rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5506f273 svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x551c03c5 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55500d35 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5840db81 rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x587ace0e put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5911e837 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5931bbf0 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a1b0885 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c543c40 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c6ab2b4 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ec92771 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f475808 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x612bb213 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6160c588 rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61e316e8 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62877ce9 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62acfaf4 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65bfa326 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6719c668 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a179a56 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6aab5a95 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e06ff35 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f09e005 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71967458 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74370da8 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75b9a3fc rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77995f15 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a25ef74 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a61984e rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7af266b6 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7afd92a4 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b46a02f svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d7cd645 xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ea3088c rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f386ad4 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x800ecd06 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808b12f6 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83a2b7bb xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83a30833 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85423a8f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a5ec445 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b6c0adf rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ba66b3d unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c71e2ff rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d48b194 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e44b8ec svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ec2c7e0 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93c8e2c0 cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95feac40 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96eba2e1 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96f3736c xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97029210 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x977eec91 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x985349a4 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9981cf6a rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b41dcce rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bcd4921 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d17d277 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9da1164a sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0dd4431 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa17d60d4 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa25e13a0 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2dd92d9 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6040d07 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa60d45d7 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa61e762f svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa982b892 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabe56f2a xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacf4ac73 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae593fe2 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0716eda svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb17e1eea xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb45dc0f3 sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb49ad3c1 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5acb89f rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb610bf9a rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb65c8cd2 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8fd118c auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbad19400 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb5dc166 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbc9141a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe24638f bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbee512dc rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9c7b1a rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc25d0c4a xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2dae028 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6891f74 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7c1faf8 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8bfa90e svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc987828e rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcaff74b4 rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb9fd288 rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc404009 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc8d8d1a svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd380651 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd595481 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd13810 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf8e3cc1 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf9b47c1 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0044011 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1182ba4 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd286bd4d __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd308ee5f rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4075289 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5801f55 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5eb2441 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6c8b93f rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7233f2e svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9d89547 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda45a655 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdabd712f xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc8e6869 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcc6aaf5 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde694d1c rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc5f417 svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe04aae35 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe30af7b8 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3d67049 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe78a4043 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7d5bb30 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9fe7227 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea2048f7 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeadbdfbc rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaf67695 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeba89551 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec640284 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed3206b1 xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed4df6dd xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0f70a17 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2e6f6c0 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf376e50f rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3dd354d svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5fbdbf8 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6360a0e sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf66c753e rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf83b76c8 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf868e817 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8a5fb64 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf95e5f24 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf99f71ff rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa5091d4 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa8b46c9 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb286c10 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfba814ca xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbd73e57 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc8da637 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfda9d38e rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe26476e rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe502e5a rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe707ab8 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff0b91e5 rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff92717d read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffcc2460 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/tls/tls 0x3cfec174 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x6696fcb6 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0x8ddc8c93 tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0xd6bd3996 tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0090517f virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1cde12d3 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x23257289 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2b7095f6 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2d04c9f2 virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x393df37f virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x3a350c8d virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x40a4fecf virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4b18bca5 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x56a528f3 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x598303a3 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5eb95ec8 virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5ec19775 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x64dd4f48 virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x653e525f virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x67b0ecc5 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x68153222 virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x789373e6 virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x80c1c136 virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x86954f68 virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8f650b85 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8fbcc851 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x909899ff virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa1c47bba virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe4604c0f virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe4964612 virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe4d7e5ce virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe581f5c8 virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe9dbedb0 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf00b58d0 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfb4b320d virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x09642a9a vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0ebc8173 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15a5732a vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x17cc1050 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1890cec4 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2d1aba26 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2fda0afe vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x34d83a73 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3ceb1b99 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5000cc0d vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6cc2d29a vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7eafe75e vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x86cf3084 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8e59381d vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x949b5542 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9b8c400e vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa289d8d7 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb0e91b00 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe56e4e02 vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf44d4e76 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfc936fe4 vsock_core_register +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2126d908 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2378c3ca wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2475ef8b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2aec61c2 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x417005bf wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x479e18eb wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6a5e09d8 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7055b9c0 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8540b54f wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd0b1f672 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd90f6916 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe2c6110d wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf4e2f579 wimax_msg_data +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x02f6b823 cfg80211_pmsr_complete +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x13277653 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1786f4f6 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x221460e9 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x37616f2e cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3ae75ade cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x49942ab8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x51f7fce0 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x536e8eab cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x67fd302b cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa01dd148 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaf3d4a22 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5e7350e cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb81d03fe cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcf0481dd cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf4245e91 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x518b556b ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x693172ff ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa5d0726c ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf7c53496 ipcomp_output +EXPORT_SYMBOL_GPL sound/ac97_bus 0x267b9e26 snd_ac97_reset +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xadb51cff snd_seq_client_ioctl_unlock +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq 0xe50413d7 snd_seq_client_ioctl_lock +EXPORT_SYMBOL_GPL sound/core/snd 0x3a9bfa84 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x3d1ef5ef snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x485d7163 snd_device_get_state +EXPORT_SYMBOL_GPL sound/core/snd 0x4d783740 snd_card_disconnect_sync +EXPORT_SYMBOL_GPL sound/core/snd 0x6098ee98 snd_ctl_apply_vmaster_slaves +EXPORT_SYMBOL_GPL sound/core/snd 0x7aec6417 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x96bf83ec snd_card_ref +EXPORT_SYMBOL_GPL sound/core/snd 0x9fe1f63a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xa4ddc9bf snd_card_rw_proc_new +EXPORT_SYMBOL_GPL sound/core/snd 0xac2698e3 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xb0760cb1 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xb3b4741e snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x01bce4f4 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4e211bd1 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x634cbe5b snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6a8b3101 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7d3e8e49 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x80eb9a27 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8d864069 snd_pcm_rate_range_to_bits +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa73a1c5d snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbf5fd8a4 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xc98418f2 snd_pcm_hw_constraint_eld +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf0669aa8 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x03f4f3b4 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x181d1190 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2fa79238 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x34702cff snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3f33d50f snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x493ad072 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5a3de512 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5d6cfd0d snd_dmaengine_pcm_refine_runtime_hwparams +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5fede474 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb68f6622 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc90cd0c5 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdcbce0f7 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x359f862f __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd-seq-device 0x4f1e6a79 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x2b9eb1aa amdtp_domain_destroy +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x3089138f amdtp_domain_stop +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x438def97 amdtp_domain_stream_pcm_ack +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x521c52c6 amdtp_am824_set_midi_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x54785d6e amdtp_domain_stream_pcm_pointer +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x58231055 amdtp_am824_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x66ec8ce5 amdtp_am824_midi_trigger +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x7850e2c9 amdtp_domain_start +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x850a8186 amdtp_domain_add_stream +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0x8c287399 amdtp_am824_set_pcm_position +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xc8c01951 amdtp_am824_add_pcm_hw_constraints +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xf953c256 amdtp_domain_init +EXPORT_SYMBOL_GPL sound/firewire/snd-firewire-lib 0xfeb534ee amdtp_am824_set_parameters +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x055ce5b8 snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05621a83 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x127ffe93 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14c79df4 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x17af528b snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19b765d9 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a9914ec snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1d71f173 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e11729b snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23abe713 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2419e2ef snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25c7cade snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x293656cf snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x307b7f27 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30f0a20f snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33c9d294 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x348d068e snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3525f3cc snd_hdac_bus_parse_capabilities +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x362e4ccf snd_hdac_acomp_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3896bf50 snd_hdac_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x38a8cf1f snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3bd544c2 snd_hdac_get_active_channels +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ee47794 snd_hdac_get_stream +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42181b84 snd_hdac_codec_write +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4921b988 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c7ec4b6 snd_hdac_get_ch_alloc_from_ca +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5154d5bd snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x54ef7c4d snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x55a0e7bd snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5631a0ea snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5bec5209 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c07cb49 snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62dca42b snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6482813a snd_hdac_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64f44905 snd_hdac_acomp_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x67bfe791 snd_hdac_spk_to_chmap +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7446fb27 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74ede3c9 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x767dc0a2 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77749574 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77c754a8 snd_hdac_chmap_to_spk_mask +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d67d6b9 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x806c0a3c snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84ace708 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x851f42c0 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x869e508a snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a404f33 snd_hdac_setup_channel_mapping +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a75761c snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9ca83f28 snd_hdac_sync_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d946da0 snd_hdac_register_chmap_ops +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0c707d5 snd_hdac_get_stream_stripe_ctl +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa35af9df snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa50311e3 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa790adad snd_hdac_regmap_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7d32bf4 snd_hdac_acomp_get_eld +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa809f3a3 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa816a1b2 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaa7a448a snd_hdac_device_set_chip_name +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xada12afb snd_hdac_regmap_update_raw_once +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf7cf17b snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc21106c1 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc34c9979 snd_hdac_check_power_state +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc657f177 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc74803d9 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc8f7ff82 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcae25a05 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcca5ae60 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5248303 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda6e7b9e snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdcd4772c snd_hdac_bus_reset_link +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe19e5427 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2f4e556 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3ffdf6e snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe462eb3b snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4e07754 snd_hdac_print_channel_allocation +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe5f32f58 snd_hdac_sync_audio_rate +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe61fa9bc snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe90b1a10 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea02fdfd snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf27504b5 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf33af7af snd_hdac_codec_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3c7101f hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5b76e40 snd_hdac_codec_modalias +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf700989c snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfe8befad snd_hdac_acomp_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfefdf2bd snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-intel-dspcfg 0xf8f6d004 snd_intel_dsp_driver_probe +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2242f338 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x4a447d0d snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5d1fca97 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbe540ea1 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xdbd88b81 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf9b1c854 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0106d5d1 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0257ce37 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05bcb95c snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05f7f680 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x07d2b341 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a1df77e snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b3518ee snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b3edc54 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0bb083d4 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e5381df snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14a3f0a5 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x158a2b86 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15fe5569 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c054fd1 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c2bab61 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f199c55 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f281506 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x204f8cad snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x208e0479 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24529d9f snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x267e5a37 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27686b1d azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27865d49 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2833690b snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c66e513 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2dbf498d snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x319bade7 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x31a2c3fb snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32e3999e snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x353ce7c2 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35d874b4 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3793b680 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dde519c snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fe98253 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x427b1514 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x486ccb55 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49a8ee6f azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49dbe8a2 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50c80494 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5173521e snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52376a05 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x556578dc __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56a382e0 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5beac5d1 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c9ceac2 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5db14aad snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e0291e5 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61f6e8d9 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64167570 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x670b9f61 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x690e2c5e snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ad50d95 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b075946 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b1d8bd8 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6be299b1 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6edec642 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7292f561 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73398eb3 snd_hda_jack_add_kctl_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74077606 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x756ab0a4 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75dfa517 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77e3c44c snd_hda_get_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a9f7deb snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e33d708 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e9d71a8 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f5e93d3 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80f20910 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82d237dc snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x855cc8a3 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x858af40a snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x870be9a9 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x873e00ff snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x882ec62d snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c063b15 snd_hda_codec_device_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8efac0d5 snd_hda_jack_detect_enable_callback_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f193598 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91f3dbfa snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91f76593 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x998001d2 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d4f211a snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa04968dc snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3fdfb83 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa407448e query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa96cb4b1 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac3d7332 snd_hda_jack_tbl_get_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac3f5dc5 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb08da67f snd_hda_codec_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0f24d7b snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2883419 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb434946f snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb43d778f snd_hda_get_num_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4c0aff6 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7b271da snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7f71413 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbf47cad snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf6fa851 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc417d559 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc44bc025 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc53a5e02 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc877a1ce snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcacd9cc7 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc83b9c5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd047025b snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd18b32aa snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd957f01a azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda6890cf snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaf2f803 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdead6c56 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0572332 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe05b1b82 snd_hda_jack_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe126f14f snd_hda_jack_detect_state_mst +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7b1c28a snd_hda_codec_parse_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeca50cbd snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef8dd055 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefd78f86 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf15284ca snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf83cdafe snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8c4cecd snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbd05996 snd_hda_set_dev_select +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcf58ee6 snd_hda_codec_set_name +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff376a4d snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffcf3c60 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x013ba09f snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x040c2adb snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x14034478 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1708f565 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x32513590 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3f176f01 snd_hda_gen_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x45130f63 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x470e0127 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x56d9262c snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x63619c81 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x76dc6871 hda_main_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x919e5ecc snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x95a152c9 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x97e158c0 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9ccbc69b snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa0577f7e snd_hda_gen_add_mute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbe25184f snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd1a85f06 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeaffec10 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf05f3278 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1b05a4c snd_hda_gen_add_micmute_led_cdev +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf7d29b05 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xff48c69a snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau-utils 0xae620be9 adau_calc_pll_cfg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0x1f7a81f6 adau1761_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau1761 0xae305e50 adau1761_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x08d76a9b adau17x1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x2d5a93cd adau17x1_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x31577743 adau17x1_add_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x3b4c8847 adau17x1_precious_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x52ee7543 adau17x1_add_widgets +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x550f895b adau17x1_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x65dbc346 adau17x1_set_micbias_voltage +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x78b019ff adau17x1_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0x95e9d1f0 adau17x1_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau17x1 0xb0c78b2b adau17x1_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-adau7118 0x122be459 adau7118_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x4cd55701 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x99ec403b cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x6176cab5 cs42l51_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x8a77434d cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x9e1ebe9a cs42l51_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xc14d0533 cs42l51_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xf57b4822 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x17f5be9c cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x5b804261 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x97f1cb36 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xb3bc0002 da7219_aad_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xbe6fcc7f da7219_aad_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-da7219 0xead8d47a da7219_aad_jack_det +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x8dfa12a8 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x90641110 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-hdmi-codec 0xbcc05f39 hdmi_codec_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-nau8824 0xb24a0a42 nau8824_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x15b508e3 pcm1789_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0x18fc69d8 pcm1789_common_exit +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm1789-codec 0xfd960b72 pcm1789_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0x168e688e pcm179x_common_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm179x-codec 0xfa26a75a pcm179x_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x113ac587 pcm186x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm186x 0x658a0dcb pcm186x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x43996358 pcm3168a_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x4a19c643 pcm3168a_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0x5b8224bd pcm3168a_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm3168a 0xc6e8e556 pcm3168a_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x1a27eabd pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4a5d8b75 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x609a6007 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd77942b8 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x5dc92cdf rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x8d7fa148 rl6231_get_pre_div +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x5df0dab2 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8ae7e0a5 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x019d8158 rt5682_apply_patch_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x03ffe924 rt5682_soc_component_dev +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x25193d08 rt5682_aif1_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x28730696 rt5682_supply_names +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x495b1729 rt5682_volatile_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x59d3d967 rt5682_jack_detect_handler +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x84f4309a rt5682_parse_dt +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0x91d2e2bb rt5682_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xa8cc469b rt5682_readable_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xb897de56 rt5682_reg +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xbc43a40b rt5682_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xc6c4f328 rt5682_headset_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xcb416ba2 rt5682_calibrate +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5682 0xce2e860b rt5682_aif2_dai_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1dd198be devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3855bbf7 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x56cb4de8 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6f14076a sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7bae0006 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x5e958e72 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-regmap 0xa7fa431b devm_sigmadsp_init_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x681a4602 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x7fc5e0b5 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tlv320aic32x4 0x2bad5357 aic32x4_register_clocks +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x7d55f6a7 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3e4b962a wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x552dd11a wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x89099e62 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xefa8c126 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x2506ee76 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xa45e2243 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x8ecdcf3c fsl_asrc_component +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-easrc 0x644fa228 fsl_easrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-imx-audmux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x11ff6637 asoc_simple_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x238a4741 asoc_simple_clean_reference +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x2b4dc60b asoc_simple_be_hw_params_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x323247b9 asoc_simple_init_priv +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3344ad6e asoc_simple_init_jack +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3525e0eb asoc_simple_hw_params +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3d56697b asoc_simple_parse_convert +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x3d77cbe1 asoc_simple_parse_clk +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x54f31a59 asoc_simple_parse_pin_switches +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x587b1ada asoc_simple_shutdown +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0x921af135 asoc_simple_parse_routing +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xad0914ea asoc_simple_set_dailink_name +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xb936a1e3 asoc_simple_parse_widgets +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xd56504bc asoc_simple_dai_init +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe15cc5f3 asoc_simple_canonicalize_platform +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xe970217d asoc_simple_canonicalize_cpu +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf3bafb75 asoc_simple_convert_fixup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xf55881f3 asoc_simple_startup +EXPORT_SYMBOL_GPL sound/soc/generic/snd-soc-simple-card-utils 0xfa7e321b asoc_simple_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x006fbbf8 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00a8802c snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00c556d6 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02d0a3bd snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0370fd02 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058ba666 snd_soc_tplg_widget_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x070d3ceb snd_soc_of_put_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07d08e1f snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08c92072 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08f16248 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x098275a8 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b3967f5 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b819754 snd_soc_component_set_jack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c668afc snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c79f79e snd_soc_tplg_component_load +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d5aeee6 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fc97ddf snd_soc_get_dai_id +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10b22409 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10b95397 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x113ffc30 snd_soc_card_add_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x121c1b0e snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12a00581 snd_soc_component_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14604e3c snd_soc_of_parse_node_prefix +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1808a9a2 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18af0ec1 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c63c7eb snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c99fd5f snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fd41a0c snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22928f97 snd_soc_component_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25f8f922 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28394007 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2894024b snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b51c828 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b538a14 snd_soc_find_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b8728b4 snd_soc_tplg_widget_remove_all +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c359ff7 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e8e1e13 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ec8a265 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f2a25d2 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f67968e snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30506ef0 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x327ee625 snd_soc_dai_compr_pointer +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x336b2c0b snd_soc_component_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34385846 snd_soc_dai_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36db3be1 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x377b89e8 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37847cd4 snd_soc_dai_compr_get_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x379cf37e snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38529ed5 snd_soc_dai_link_set_capabilities +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ac8f87b snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3afdd8f3 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b6bc226 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3eca2af4 snd_soc_dapm_update_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fa2dbd2 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ffd22b1 snd_soc_component_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42013ea0 snd_soc_tplg_component_remove +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x431d4aa5 snd_soc_component_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x443b2665 snd_soc_link_compr_startup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44c42c0e snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44eea0fc snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45540838 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a7b2c41 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cd4d366 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f0c1857 snd_soc_runtime_calc_hw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x503668df snd_soc_free_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x549716fe snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57ebd6c0 snd_soc_add_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58ebbaa2 snd_soc_dai_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59f07772 snd_soc_card_remove_dai_link +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59fcb8af snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a3dc900 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a826355 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b29c3b7 snd_soc_dai_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c423f21 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cc16eb3 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dfac0ce snd_soc_lookup_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62d4ce82 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63b9eead devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66ad2f76 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x681bce23 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a7986d5 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b12f3de snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cf26f31 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e832b64 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71fb3b1b snd_soc_dapm_stream_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72b03d37 snd_soc_component_read32 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x739578bc snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7438f027 snd_soc_link_compr_shutdown +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7469abca snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76813405 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x776d89c6 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7818089e snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ae1fdf2 snd_soc_close_delayed_work +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c06add5 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7c4013b4 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb08304 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb15524 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cd806ca snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e549774 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fb10f7a snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fd144a2 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8026418e snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81d1a895 snd_soc_new_ac97_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x824e504d snd_soc_rtdcom_lookup +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82f749e5 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x838fb764 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x869a12dd snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88082ab0 snd_soc_dai_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a2b98aa snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ba997e2 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8cbf602b snd_soc_find_dai_with_mutex +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9061eb84 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x912c65ff snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x922d0829 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93848f95 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93f50dbf snd_soc_dai_compr_ack +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94705774 snd_soc_add_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x948ebd77 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9744fc5e snd_soc_link_compr_set_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x980d0003 snd_soc_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99b03909 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a9c3580 snd_soc_of_get_slot_mask +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b952053 snd_soc_dai_compr_get_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c426862 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa155ff78 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa31c760d snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5084a40 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa61b2142 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7f44d03 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa91e5646 snd_soc_tplg_widget_bind_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9305e8c snd_soc_runtime_action +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaac8d6bc null_dailink_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabee1558 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaef321c0 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb007a4bc snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0449048 snd_soc_component_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb071cd46 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb359dab3 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4333380 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb442ba2d snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb808485e snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9d9f406 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd8472ba snd_soc_component_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3689d4f dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3ed78df snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3f8a08b snd_soc_component_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3f9f18d snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc40945ce snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4252185 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5de889f snd_soc_dai_compr_set_metadata +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc638fe3c snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca2e3727 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb0b600c snd_soc_dapm_kcontrol_widget +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc40af54 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc82c3d1 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccaa11dd snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd18977e snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd2f599f snd_soc_unregister_component_by_driver +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd10d963f snd_soc_dai_active +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd10e3d2d snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd13c8606 snd_soc_dai_get_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5f381f9 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6085a41 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd87d02d0 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb077f8e snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb68750a dapm_pinctrl_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xded2151a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf3cd857 snd_soc_component_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf7cc399 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe09bb5ef snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0b24871 snd_soc_dapm_new_control +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43829d9 snd_soc_component_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5a1ddb1 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe85e5c76 snd_soc_lookup_component_nolocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9432443 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea5a9e94 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeeec0607 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3c30eb4 snd_soc_remove_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7ad046d snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf87517f7 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb9fc11b snd_soc_dpcm_runtime_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd0438d5 snd_soc_dai_compr_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd1ca3f3 snd_soc_dapm_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe9db264 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfec6840c devm_snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff50c66c snd_soc_component_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffd2b3c5 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x0b5b4b24 snd_sof_dbg_init +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x4f2b90e8 snd_sof_debugfs_buf_item +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0x54ac36e1 snd_sof_free_debug +EXPORT_SYMBOL_GPL sound/soc/sof/snd-sof 0xd3aebe2c snd_sof_debugfs_io_item +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0fa88d46 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0fe34ef0 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x12b712f1 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1aa88989 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1abd41a7 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2eb33e63 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x45849c23 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x690dd739 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x896fac7c line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x948c7fe5 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9a5f827d line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd0cad801 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd87ab98f line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe3f0b21b line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe694feaf line6_read_data +EXPORT_SYMBOL_GPL vmlinux 0x0001cf94 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x000b0eaf crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0x00263f0a vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x003cdc3b of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x005d9f71 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x006ef384 xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00748817 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x00764e90 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x007c5299 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x008539f0 klp_shadow_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0097c63c regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x00bc02af tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x00c53490 usb_amd_pt_check_port +EXPORT_SYMBOL_GPL vmlinux 0x00c9b083 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x010bc467 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x010c7563 input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x0124dd30 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x013dc33c relay_open +EXPORT_SYMBOL_GPL vmlinux 0x0146590d __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x0159be53 mbox_flush +EXPORT_SYMBOL_GPL vmlinux 0x0159c819 usb_bus_idr +EXPORT_SYMBOL_GPL vmlinux 0x0179fc8b iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x017a2ba6 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL vmlinux 0x0183f196 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0x01866a57 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x018b6146 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x01907648 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x01977512 kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x01c55c3a thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01eda9b4 gov_attr_set_init +EXPORT_SYMBOL_GPL vmlinux 0x0202090f serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x021860c9 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x021cfd31 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x021d780e of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0224628a of_mm_gpiochip_add_data +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x0249bbd5 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x025f0b77 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0262c142 vfio_add_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x026c5d84 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x027208f0 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x02781cbe md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x02ab4d40 radix_kvm_prefetch_workaround +EXPORT_SYMBOL_GPL vmlinux 0x02ade722 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x02afc577 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup +EXPORT_SYMBOL_GPL vmlinux 0x03165183 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0317d7ec pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x031f2b0d iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x03210f95 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03242a08 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345a1f6 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x03619616 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x0370c447 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x037b083c fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x03915ecb __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0x03915fed devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x039eb5a1 platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x03ae1e57 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x03be23e2 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03ca5b12 strp_done +EXPORT_SYMBOL_GPL vmlinux 0x03cc8861 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x03d85c0d scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04059f9e cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x040f7d7f bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0x0411c5ca __of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x041384d4 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x041ca1ec pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x041d3ca5 pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0x041e8b10 xas_find +EXPORT_SYMBOL_GPL vmlinux 0x041ec506 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x04258796 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x042a5cf7 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x04590fdd dev_pm_opp_of_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x0459abe9 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x04654e14 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x046f359e of_overlay_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049136f5 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x0493c2c4 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x04a022a8 usb_of_get_companion_dev +EXPORT_SYMBOL_GPL vmlinux 0x04a159b2 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c866cd device_move +EXPORT_SYMBOL_GPL vmlinux 0x04cc91db dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x04cec723 serial8250_do_set_divisor +EXPORT_SYMBOL_GPL vmlinux 0x04cf9bcc phy_validate +EXPORT_SYMBOL_GPL vmlinux 0x04d120bc fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x04d292ff fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x04d3becc inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x04df8fb0 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04f5633b rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0509be67 fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x051ae0f7 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0521ae68 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x053476a8 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x053622b2 vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05573be7 pinmux_generic_remove_function +EXPORT_SYMBOL_GPL vmlinux 0x0558ab4a freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0559f0ed fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0x055b0238 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x055b2a13 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x055e4013 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x05610897 of_changeset_destroy +EXPORT_SYMBOL_GPL vmlinux 0x056b029c of_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0577af44 of_reserved_mem_lookup +EXPORT_SYMBOL_GPL vmlinux 0x057e50a3 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059733b7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x0597d67f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x05aba5cf unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x05c998f5 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x05d018fa kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x05d60ea7 divider_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x060ab49a ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x06100262 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06285d2a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x063e52e4 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x063eb776 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06425784 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x0643edc7 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x064517c1 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x068c0b14 fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x068dd2a2 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x06a05781 crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x06a8cb3f irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x06af11cd serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x06b67d35 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06cdbd02 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x06deb518 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x06e1398d phy_driver_is_genphy +EXPORT_SYMBOL_GPL vmlinux 0x06e40b74 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x06e43bca cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x06f438a1 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x070063f2 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x0708ef65 dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x070b4456 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x07277094 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x07398ead regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x073c8c92 bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x07617f98 spi_controller_resume +EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x0765c3ba kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x076de290 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x07723860 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x077245af __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x0773b56a pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0x0773fb55 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x078d7563 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x0799fd8e ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x07a624e7 wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b95d9b serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07bfd826 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x07bfed0d usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x07c04d6d of_platform_device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x07c37c6b em_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0x07dc28f3 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x07e8dfe7 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ead2f6 dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x081b52df clk_hw_rate_is_protected +EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time +EXPORT_SYMBOL_GPL vmlinux 0x082ef69d clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x083e20a8 ata_sas_tport_delete +EXPORT_SYMBOL_GPL vmlinux 0x084b2abf ata_ncq_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0850305f pm_genpd_opp_to_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x0879e7bb of_icc_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x087bd533 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match +EXPORT_SYMBOL_GPL vmlinux 0x088506e3 bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x08903e1d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x0892bdd2 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08a63db7 xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0x08af9ba4 devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x08d28828 spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x08f123d3 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093786cf synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0x093b4b13 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x09403e84 cxl_afu_put +EXPORT_SYMBOL_GPL vmlinux 0x0941fa3f extcon_set_state_sync +EXPORT_SYMBOL_GPL vmlinux 0x094af376 xas_load +EXPORT_SYMBOL_GPL vmlinux 0x09770358 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x098a1de7 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x099b8061 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x09b179e8 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x09b23f74 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0x09b4fc9f devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09be9bc1 scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x09c5bab0 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09f8e93c user_update +EXPORT_SYMBOL_GPL vmlinux 0x0a13e197 __clk_hw_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x0a15ca98 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x0a246472 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x0a4f32bb regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a57cdfa __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0a59458c virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0a5b4622 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a7ae285 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0a9776b6 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x0ab2b854 kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x0ac9c854 pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x0ae1515c gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0aeb4e63 __xive_vm_h_ipi +EXPORT_SYMBOL_GPL vmlinux 0x0aebb197 pci_ecam_free +EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0x0af4798b usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b09e040 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x0b16f3dc usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b18b7de __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b28afbb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b2e711e __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0b34fd11 blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0x0b357a2b pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0b37f774 akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0b5c0d9a pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0b6d5f47 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x0b773bd8 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0b8a7278 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0ba59188 skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x0bbe35e6 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x0bc6cbcc dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x0bc8c527 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x0bd17662 devm_spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x0bdec8de elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x0be75a56 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x0bfd935e reset_control_get_count +EXPORT_SYMBOL_GPL vmlinux 0x0c018ef8 iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x0c2513b3 crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x0c26ad27 nvdimm_cmd_mask +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c30a317 wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x0c402cac replay_system_reset +EXPORT_SYMBOL_GPL vmlinux 0x0c407695 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x0c62c14c scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0c660192 usb_asmedia_modifyflowcontrol +EXPORT_SYMBOL_GPL vmlinux 0x0c6c829c vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x0c7beed7 iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0x0c7d3efb of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x0c93f0ed devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x0ca7ad48 iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0ca9224e cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cd0ced1 gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0x0cd5a84a dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0ceac2fb dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0cf33978 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x0d03a446 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x0d0cf00c of_devfreq_cooling_register_power +EXPORT_SYMBOL_GPL vmlinux 0x0d125ab6 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4eac7e cpufreq_dbs_governor_limits +EXPORT_SYMBOL_GPL vmlinux 0x0d64c381 pnv_pci_set_tunnel_bar +EXPORT_SYMBOL_GPL vmlinux 0x0d65589b uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0x0d6d8e04 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x0d798e73 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0d86a475 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0x0d94b66a dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x0dab0c2c wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0dc180db regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0dc373ab wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0x0dd340c4 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddc254e unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e240e44 of_detach_node +EXPORT_SYMBOL_GPL vmlinux 0x0e27fd6c cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x0e2aa6a7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x0e2da4c3 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0e3afd4a regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x0e412fee set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0e4e2eeb ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0e4e47d9 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e521b82 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x0e54cd0f get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x0e5a967e hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x0e6f01ad __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0x0e88fb26 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x0e9c8c29 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x0ea2a72b usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x0ea88436 do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0x0eb0bbf9 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0ed15084 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x0ede0b14 of_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x0ee8e400 kvmppc_h_set_xdabr +EXPORT_SYMBOL_GPL vmlinux 0x0f097e24 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f1caabb mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0x0f3add46 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0f3ce25f pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x0f45ac2a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x0f538ee6 xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0f5a58a4 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x0f70f5dd pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x0faf37d5 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align +EXPORT_SYMBOL_GPL vmlinux 0x0fc5faeb pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x0fc7808d tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x0ff22095 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0ff8a6e1 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1047ffee each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x10541419 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x1062aa27 power_supply_batinfo_ocv2cap +EXPORT_SYMBOL_GPL vmlinux 0x10718202 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x10a3943f tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x10a442ab od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x10a4c9d9 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10d25b3e lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x10d93867 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x10e1fb72 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x10e7181f of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x10e77a5a __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x10e99b75 devm_thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f15f66 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x10fe219a __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x11030369 dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0x11056801 devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x11182181 devm_led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x11192a79 noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x111b3b7b crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x111e6dfc pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x11638a69 xive_native_alloc_vp_block +EXPORT_SYMBOL_GPL vmlinux 0x1167a9d4 ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x11782900 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x117aee65 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x11899153 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x118b539e blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0x119e6911 devm_of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11a50148 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x11ad2f31 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11c7abde arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x11de24f0 dev_pm_opp_of_add_table +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x11ec4e88 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x11eedcdc __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x11f6e26c pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x11f9052d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x1217d8de irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0x1218ec97 of_reserved_mem_device_init_by_idx +EXPORT_SYMBOL_GPL vmlinux 0x121d60dc debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x121dedcb pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x1222b251 __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0x122a9b69 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x123b1296 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1251a96a proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126e837f pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x127da8b7 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x12911b4c fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0x12b125e1 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x12bbfb82 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x12c100b5 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x12cc6c1e crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12e5e54c scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x1317ab20 badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131f4d69 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x1346de0c extcon_sync +EXPORT_SYMBOL_GPL vmlinux 0x134de715 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x13539266 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136cbb36 __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x1376982c __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x1383e119 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x13a939f6 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x13b3b4b0 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x13b664bb cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x13ba3615 disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x13bd200b devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13be6d32 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x13c2947f crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x13c6f191 mmc_regulator_set_vqmmc +EXPORT_SYMBOL_GPL vmlinux 0x13c71c96 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x13ca899a perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d2ca0c dev_pm_opp_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x13f4f146 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x13f5e30b devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0x13f8efab ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x1410f3cf devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0x14160969 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x141bca15 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x142d01d7 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x142e18b1 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x14389892 securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x14411b01 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x14457fb9 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x14516c59 led_classdev_notify_brightness_hw_changed +EXPORT_SYMBOL_GPL vmlinux 0x14615e7a sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x14691240 cpufreq_cpu_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x147a3c11 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x148ebb97 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x1490596f blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x149c9a53 devm_phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x14a91b45 device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val +EXPORT_SYMBOL_GPL vmlinux 0x14dfbf6e debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x14ebc305 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x14ee2a62 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x14f95733 ethnl_cable_test_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1525ca69 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x15338e91 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x1537c7f2 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x1552c709 hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x1556d45e blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x1562ebb7 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x156a6587 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x157eb3f3 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x15867f56 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0x158f9fb3 dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0x159e032f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x15a14816 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x15a7a700 devm_hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0x15b1202b devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15c94680 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x15ca27f3 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15f7a2c8 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0x15febf7f devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x160a5799 fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0x163401d7 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x16363183 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x16369a27 xive_native_sync_queue +EXPORT_SYMBOL_GPL vmlinux 0x163efe14 fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0x16403d67 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1652f225 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x167d74b8 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0x167e1f61 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x168d6ef4 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x169bcc8b vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x16b067db ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x16b1841a iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0x16c277ac handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0x16c56a86 of_get_named_gpio_flags +EXPORT_SYMBOL_GPL vmlinux 0x16d2855d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x16d8b321 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16eb2186 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x17022b2a cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x1724d3ed devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0x1725068a device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x1731f6cd pnv_ocxl_map_xsl_regs +EXPORT_SYMBOL_GPL vmlinux 0x174659d6 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x17528d89 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x176740d9 bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0x1768ea49 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x176eee9c rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1789eaae of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x178b68ff regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x179ba34b pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x17c2cbfc hash__alloc_context_id +EXPORT_SYMBOL_GPL vmlinux 0x17ef6f4a nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x17fa03b0 dev_pm_opp_of_get_opp_desc_node +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x1802a434 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x180b2bff iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0x180b3fe8 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1827cb03 __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1828737f devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x1837205e platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x183ef8cc scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x1843e540 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x1846b10a of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x18654dea trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x18728552 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x1872e1e7 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x187a6b11 fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x188cdd7b __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18a39d34 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0x18b3a856 dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18bbea67 devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0x18cab165 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x18d0b0c0 serial8250_em485_start_tx +EXPORT_SYMBOL_GPL vmlinux 0x18d1ad20 virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1901f9e4 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0x1909e409 platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x191e785f led_blink_set +EXPORT_SYMBOL_GPL vmlinux 0x192b694b perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x192fbe1e of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x193a4722 __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0x193dfdf6 klp_get_prev_state +EXPORT_SYMBOL_GPL vmlinux 0x1962a06b ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x196f0c8b badrange_init +EXPORT_SYMBOL_GPL vmlinux 0x197274be __put_net +EXPORT_SYMBOL_GPL vmlinux 0x1973de63 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x198b5b40 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x1994fbee soc_device_match +EXPORT_SYMBOL_GPL vmlinux 0x199cb67d of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19c20269 soc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x19c3626a tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x19c5bcf5 bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x19cfff0a __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x19edbeb3 pinctrl_generic_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19f71ae9 clk_mux_val_to_index +EXPORT_SYMBOL_GPL vmlinux 0x1a051ad7 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1a0543b4 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x1a085bd0 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1a08cf06 sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a11470b mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string +EXPORT_SYMBOL_GPL vmlinux 0x1a1c8bc3 dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x1a242a60 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x1a266e56 ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x1a2c1b2f agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x1a3ed4e2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x1a47ea8c da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1a5b5a1b hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x1a5e5cdb sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1a6ff323 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x1a77903a of_alias_get_alias_list +EXPORT_SYMBOL_GPL vmlinux 0x1a781b24 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a9c20b1 xive_cleanup_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x1a9cfb95 copy_mc_generic +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1adae6aa mctrl_gpio_init +EXPORT_SYMBOL_GPL vmlinux 0x1ae75cde dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x1aed98a8 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1b1214e4 devm_rtc_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0x1b122ab6 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b320af7 pnv_pci_get_presence_state +EXPORT_SYMBOL_GPL vmlinux 0x1b35f297 kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0x1b457436 icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x1b50dfc6 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1b5338c7 encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x1b637a5f devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x1b689415 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9bff8b tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x1baab394 sdio_retune_crc_enable +EXPORT_SYMBOL_GPL vmlinux 0x1bad8403 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x1bbd2f6a tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bc85c79 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0x1be55ea4 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1c0611a9 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x1c0f2bc7 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1c3a6d66 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x1c3eacca cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x1c4b31ea subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1c4d6f9a devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x1c4f88f5 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c58eb63 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c62e34d opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x1c67f8e8 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x1c6d9a5f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x1c768907 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c7df74c kvm_hv_vm_activated +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8bca8d emulate_vsx_store +EXPORT_SYMBOL_GPL vmlinux 0x1ca1896b dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0x1ca366a2 __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x1cb2b936 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1cb8203f usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1ce9ae59 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x1cee0601 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create +EXPORT_SYMBOL_GPL vmlinux 0x1d028466 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x1d04aa89 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x1d077d87 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d2410cb usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1d270fd1 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x1d2c86d8 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x1d4651cd wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1d5342c8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d87f4fd pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d93b926 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1d978ee9 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x1daae9c7 virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x1db85d47 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1dc4427b usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1dddaae9 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1ddf446f led_trigger_read +EXPORT_SYMBOL_GPL vmlinux 0x1de83227 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x1df33284 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0cf235 opal_get_sensor_data_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1e178f09 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0x1e199023 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x1e580a78 md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x1e758291 nvmem_cell_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8ab7b1 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1e8fac8e wireless_nlevent_flush +EXPORT_SYMBOL_GPL vmlinux 0x1e936098 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x1eb02c93 power_supply_put_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x1eb4288f uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec8bafe iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0x1edac5c3 xive_native_enable_vp +EXPORT_SYMBOL_GPL vmlinux 0x1ee7fa16 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x1ef7e5e8 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f050e36 pnv_pci_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x1f07045c devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f1541c9 cpufreq_dbs_governor_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f1dc688 blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x1f21efe1 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x1f28b3f2 bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0x1f302a8d of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms +EXPORT_SYMBOL_GPL vmlinux 0x1f484fd2 fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f5d1d06 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0x1f676ea9 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1f6f9444 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8d97d2 fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0x1f9ff9a1 kvmppc_check_need_tlb_flush +EXPORT_SYMBOL_GPL vmlinux 0x1fa0790f dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x1fa0c34f bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fa617e5 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x1fb0527b bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0x1fb48dab pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x1fb95f2f edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x1fbfced4 bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0x1fc18994 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x1fc409ba virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0x1fc4b892 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x1fdb2659 proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x2004d91e __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x2006a3cd ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2026da48 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x20292319 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x2029a7d7 synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x20399c0e __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x20733d3e blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x2080954c key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x2083fbf0 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x20930acc clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x2095bc6d tpm_tis_core_init +EXPORT_SYMBOL_GPL vmlinux 0x20b90432 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21039a0c find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x2104d088 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x210be30e raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x210c900a devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211c7550 __xive_vm_h_xirr +EXPORT_SYMBOL_GPL vmlinux 0x21303a75 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x213c88cf fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x219ff88a tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21ad0b2a regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x21aeaee9 clk_hw_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x21d78b12 xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x21d99717 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x21e480cc devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21e93321 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2203207c clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221d4182 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x22252d30 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x22390efe dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x223f8bc5 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x225b42b2 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x2271b409 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x22946e09 security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0x229b0eb9 devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x22b7cdd8 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x22c97f7d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x22cb95b2 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x22d93291 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22daf7c7 thermal_zone_get_offset +EXPORT_SYMBOL_GPL vmlinux 0x22de4ec9 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x22e6c545 pm_clk_remove_clk +EXPORT_SYMBOL_GPL vmlinux 0x22fddea5 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x23021c65 dev_pm_opp_put_clkname +EXPORT_SYMBOL_GPL vmlinux 0x23166e05 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x2318baea devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x231c6a5e nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x23268db1 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x23275498 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x2343028b device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x2358af18 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0x2361796a call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x236a26ab usb_phy_roothub_suspend +EXPORT_SYMBOL_GPL vmlinux 0x23791025 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23b9d4da __tracepoint_vfio_pci_npu2_mmap +EXPORT_SYMBOL_GPL vmlinux 0x23bb75a0 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0x23c95a43 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x23d0ab45 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x23e67640 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x23ebb59e uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x23ed8d57 devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23f1627b power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x23f6abd4 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x2401b348 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2421626f devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0x24233f4b pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x242c1032 power_supply_get_battery_info +EXPORT_SYMBOL_GPL vmlinux 0x242eb5a9 mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0x2431882c xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x243fe250 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x2443aa68 pci_find_bus_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2458312a msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x245f5f93 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x2468dfb2 rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a52cf4 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x24a5fa3b gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0x24a66104 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24b9f356 mmu_partition_table_set_entry +EXPORT_SYMBOL_GPL vmlinux 0x24c14aa9 mmc_abort_tuning +EXPORT_SYMBOL_GPL vmlinux 0x24c64343 device_create +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x24dbb340 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x24e58b8c net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f63dcf ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x25148b59 seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0x2522d148 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem +EXPORT_SYMBOL_GPL vmlinux 0x25309111 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253dfa83 gov_attr_set_put +EXPORT_SYMBOL_GPL vmlinux 0x2548fc88 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x2559d24d kvmppc_h_set_dabr +EXPORT_SYMBOL_GPL vmlinux 0x255c2b4d rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x257465d6 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x257870e9 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x257ea4f2 spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2587be45 phy_save_page +EXPORT_SYMBOL_GPL vmlinux 0x258920a0 edac_pci_add_device +EXPORT_SYMBOL_GPL vmlinux 0x25897796 rio_local_set_device_id +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x25b92703 regulator_set_pull_down_regmap +EXPORT_SYMBOL_GPL vmlinux 0x25bf2de5 iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0x25cb68be pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x25ccfb89 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x25dd9836 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x25f42d5e rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x26273cde cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0x262830f0 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x262ac5c3 percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0x26371aa9 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2656fe58 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x26750124 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x267bdfd8 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26814d76 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x26918054 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26b1bc68 dax_inode +EXPORT_SYMBOL_GPL vmlinux 0x26bcd6c8 dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0x26c01e2b uart_get_rs485_mode +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cbce2a kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x27232340 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0x2725f466 dev_pm_opp_put +EXPORT_SYMBOL_GPL vmlinux 0x273c2108 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x27426e00 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x27657645 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x278a9317 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x278be0cc bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x278f5edf bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x279003ee freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x27a113a6 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0x27a4465f clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x27b020b7 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x27b05e53 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x27b6769d blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x27bf6406 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x27cdf72e devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x27ce3ec0 cpu_latency_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fef04c preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2808be99 __xive_vm_h_eoi +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x284ffe1f ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x285ec388 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x28625b61 sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x2873f05c pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x287ce29f pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x288410b9 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x28a8f935 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x28a92693 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x28b030d2 of_overlay_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28b41d84 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x28b4737b __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x28b533e8 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x28eab0ce ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x28ef1b13 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x2911c76d gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x29255691 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0x293228d6 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2937e8bd sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x293ed2d6 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x2940032d pnv_pci_get_power_state +EXPORT_SYMBOL_GPL vmlinux 0x294b9791 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x2968c5bd crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x29748f64 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x2986e853 iommu_tce_kill +EXPORT_SYMBOL_GPL vmlinux 0x298cba57 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x299a076c d_exchange +EXPORT_SYMBOL_GPL vmlinux 0x29a96e78 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29aa48d0 radix__flush_tlb_lpid_page +EXPORT_SYMBOL_GPL vmlinux 0x29cdbc7b irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x29cef68a cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x29d69ff6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x29e6d51f usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL vmlinux 0x2a336698 opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0x2a367dd0 devm_clk_bulk_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x2a3cd83f relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x2a6092ae phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a6659aa mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67a19f fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x2a775646 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x2a7a0163 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x2aafaca8 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x2ab49a56 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ab80a8d sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0x2ade9be1 extcon_register_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x2ae5a7bb usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x2af3d3dd synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x2b05df18 spi_take_timestamp_pre +EXPORT_SYMBOL_GPL vmlinux 0x2b1bae0e cpu_to_core_id +EXPORT_SYMBOL_GPL vmlinux 0x2b1fba0f xive_native_disable_queue +EXPORT_SYMBOL_GPL vmlinux 0x2b2164c8 rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0x2b24963c tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b5e1bdc task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple +EXPORT_SYMBOL_GPL vmlinux 0x2b6d2045 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x2b6e8d48 sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2b80b6cd perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bacf6d0 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x2bb8d485 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2bb9095f radix__flush_pwc_lpid +EXPORT_SYMBOL_GPL vmlinux 0x2bc45d47 of_find_spi_device_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2bd8e5e1 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2be24d4c dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x2bf2b193 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c240ec9 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c43aeab dev_pm_opp_of_register_em +EXPORT_SYMBOL_GPL vmlinux 0x2c519852 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2c5334bd spi_split_transfers_maxsize +EXPORT_SYMBOL_GPL vmlinux 0x2c54332a debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x2c5deabe nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c6d3f22 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x2c717b2f gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2c7d2c22 pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9ccfa2 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x2ca3845a debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x2ca60846 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x2caef975 devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0x2cb339a4 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x2cbce7bf invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x2cd5df3a opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2ceb2648 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2ceb815a clk_hw_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x2d048f66 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x2d0dae43 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d21471b dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d37ccad tps65912_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x2d3a7d0d pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0x2d3fc3e4 crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d5f0686 dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2d653a82 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2d669cdb devm_regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2d74f60f sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2d7586d6 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x2d792163 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x2d83b43f regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x2d9df220 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x2da31e31 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2dc1a97a genphy_c45_read_pma +EXPORT_SYMBOL_GPL vmlinux 0x2dd9076a skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x2df75e27 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e0a6509 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x2e16d562 dev_pm_opp_set_regulators +EXPORT_SYMBOL_GPL vmlinux 0x2e218f45 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e370c2e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2e3ab556 devm_fwnode_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2e3d9345 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x2e5178e1 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x2e64439d register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2e654837 alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0x2e6f0143 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x2e8afb4f vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL vmlinux 0x2ea5ffd7 spi_controller_dma_map_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x2ea9243a serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebc159b mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec28364 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ee1ada5 dev_pm_opp_is_turbo +EXPORT_SYMBOL_GPL vmlinux 0x2eea4a07 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x2efafc3b regmap_get_raw_read_max +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f43c305 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x2f49d16c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x2f50e8cb __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x2f51d36a dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x2f598eea iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x2f59f13a sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x2f767beb crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x2f8328e7 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x2f8a2db0 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x2f9e2d1c tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0x2f9f303e virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x2fb296c0 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x2fb4b33a memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0x2fbba4b3 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x2fc0335a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x2fc25a17 ethnl_cable_test_step +EXPORT_SYMBOL_GPL vmlinux 0x2fc3eef3 clk_hw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2fe344c6 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0x2fe3e035 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x2ff0039e inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x2ffa4aec sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x2ffbd18c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x301a3e51 tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0x30358448 regulator_bulk_set_supply_names +EXPORT_SYMBOL_GPL vmlinux 0x303d4c1f scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x30468d0b srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0x30603719 policy_has_boost_freq +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x30675ef8 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x306f5576 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x30767dbb ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x30949e9c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3095d1d0 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x3099a82d switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x309e8829 copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x309fb838 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x30ae6b10 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30cd2122 pm_clk_create +EXPORT_SYMBOL_GPL vmlinux 0x30ceb038 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0x30dc5309 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x30ec54c6 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30f3ea46 fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x310a0792 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x31176bad iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3137c239 netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x31619abb serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x3163ab6b fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0x3175c48c regulator_is_equal +EXPORT_SYMBOL_GPL vmlinux 0x31800e19 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x3183e8f1 __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x319b79e7 tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31bee91d of_changeset_action +EXPORT_SYMBOL_GPL vmlinux 0x31c2f724 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d4045a rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x31d96fd4 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x31e08158 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x320750fa perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x321a3c00 rio_add_net +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x325167e4 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x3253db8f led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x325e3e01 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0x326dad40 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x32804d31 dev_pm_opp_of_cpumask_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x32863013 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x32949274 pstore_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3298911b nvdimm_badblocks_populate +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32ab48c7 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x32b09ce5 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x32b8b077 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d097e0 pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x32e39c0c pinmux_generic_get_function_count +EXPORT_SYMBOL_GPL vmlinux 0x32e70dc2 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x32fbaba4 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x33087a60 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x33274171 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x3328864a hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x333824ff usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x333eba6e to_software_node +EXPORT_SYMBOL_GPL vmlinux 0x3346372e hwmon_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335d2932 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x335daffc crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x335f07ba regulator_set_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3365898f ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x33744569 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x338dbe78 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x339166c7 remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x33a68fb6 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x33a88f1f usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x33bc59b2 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x33c6208a ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x33cd08fd shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0x33d91a04 pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x33deaf29 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0x33efc8c8 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x340809bb __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x3426392d regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x342ffd08 dev_pm_opp_set_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x345ae105 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x3472e552 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x347ab653 __rtc_register_device +EXPORT_SYMBOL_GPL vmlinux 0x347f080f __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x34836905 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x348467cc __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x348ad3ac devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x34990200 balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x349a6b78 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x349ad7cc serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x34a4b71b __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x34aa051c crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x34bab869 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x34d3443c pm_genpd_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x34d8c007 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x34df20f6 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x34f3e710 fixed_phy_change_carrier +EXPORT_SYMBOL_GPL vmlinux 0x34f78c3c compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0x34fd92bb regulator_suspend_disable +EXPORT_SYMBOL_GPL vmlinux 0x351ce8bf rdev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x352aab93 gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0x352b3813 maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35357857 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x3535ef91 of_property_read_u64_index +EXPORT_SYMBOL_GPL vmlinux 0x3538c27f rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x353ae4ef edac_pci_del_device +EXPORT_SYMBOL_GPL vmlinux 0x3544ce42 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x3553eb1e tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x355ea755 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL vmlinux 0x35747223 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a12943 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x35aa6e73 tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0x35aed3bf pinctrl_count_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0x35bcb61e devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x35e477b0 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x35e4929a dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x35e6568a pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0x35f31c54 arch_set_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360c4375 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x360fd402 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x3622d107 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x363f02a2 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x363f9e53 mm_iommu_is_devmem +EXPORT_SYMBOL_GPL vmlinux 0x366212df vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0x367ade78 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x367ebc5d dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x3680161f dev_pm_opp_set_prop_name +EXPORT_SYMBOL_GPL vmlinux 0x368ed367 pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x369185d3 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3699047c fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0x369beb17 __devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a7d044 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x36b3430c devm_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x36b70b1b srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0x36c314a0 wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x36d05a3b dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x36d45251 device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0x36ea9ac6 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x36ed9c9f usb_string +EXPORT_SYMBOL_GPL vmlinux 0x36f939fa devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x37110142 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x37204abd phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0x3743578b blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0x3751e369 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3773e731 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state +EXPORT_SYMBOL_GPL vmlinux 0x378c315c regulator_get_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0x37b297c6 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x37bd8543 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x37d4f34b dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x37d5eaf0 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x37d8ce63 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x37ee4d26 sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x3808facb blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x380b6012 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x3813b14d nvdimm_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x382afe81 dma_request_chan_by_mask +EXPORT_SYMBOL_GPL vmlinux 0x382ec4dc sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x38416945 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x3844edb2 devm_pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x384c7b5f irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x3856377b save_stack_trace_regs +EXPORT_SYMBOL_GPL vmlinux 0x385d38db irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x385e99d4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3860a039 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write +EXPORT_SYMBOL_GPL vmlinux 0x388e7f1e crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x3893ba3a mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x38a39b70 extcon_unregister_notifier_all +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38b35d05 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x38c0c615 icc_set_bw +EXPORT_SYMBOL_GPL vmlinux 0x38cdc0df pm_clk_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x38d23562 badrange_add +EXPORT_SYMBOL_GPL vmlinux 0x38df8392 platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38edffc0 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x38fa1fbb of_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x39070c9b regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3907cf4d of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x39110f64 blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x3917388d __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x39260837 dev_pm_genpd_set_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x392c6bcb sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x392fb07d devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39516662 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x39584528 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x395bbb56 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x397bc259 crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x397f5e10 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x398397b4 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0x3985397a led_set_brightness_nopm +EXPORT_SYMBOL_GPL vmlinux 0x399533e0 platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0x39953b21 debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39b4dc93 rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0x39c3a2f2 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ee8af1 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x39fa9ca4 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3a002a13 i2c_match_id +EXPORT_SYMBOL_GPL vmlinux 0x3a02baa2 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x3a128786 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a32bb32 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x3a450713 gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x3a4520c1 tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a579da6 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x3a61280c spi_mem_adjust_op_size +EXPORT_SYMBOL_GPL vmlinux 0x3a61854f xhci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3a6a35f9 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0x3a72ebcf sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x3a7e26ed pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x3a99010d cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aa24c4a pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x3aa43d4b bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0x3ab5527e regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x3abd7045 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x3ac2afa9 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3ac72b1e __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ae67757 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3b0310b7 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b035f21 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x3b0de930 clk_hw_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x3b16a015 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b1ee5b4 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x3b4c240a display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0x3b5ee099 kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x3b5febad edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x3b6339aa gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x3b67be8a device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x3b74e2d9 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x3b89905c crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x3b8d4caa ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x3b8daeec platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0x3b94a65a sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x3b95f543 klp_shadow_free +EXPORT_SYMBOL_GPL vmlinux 0x3b9adceb ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3b9e0f69 cpufreq_dbs_governor_start +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3baf6939 i2c_dw_prepare_clk +EXPORT_SYMBOL_GPL vmlinux 0x3bbd2937 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x3bc94f9f regulator_set_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c0af187 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3c0f633e __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x3c13995e class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3c15e6f4 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c219227 irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0x3c26c5ce aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3c2a73a6 eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0x3c2b68f7 of_changeset_apply +EXPORT_SYMBOL_GPL vmlinux 0x3c361bfd __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x3c384c39 bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0x3c3db240 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3c56bad0 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x3c5a9cc4 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x3c5f30ab rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3c602ac2 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c6f270d dev_pm_opp_get_suspend_opp_freq +EXPORT_SYMBOL_GPL vmlinux 0x3c84a24e devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c868368 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3c901765 iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0x3c944641 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x3c94e191 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3c9633f2 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3cfb796d kvmppc_save_tm_hv +EXPORT_SYMBOL_GPL vmlinux 0x3cfca60a bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x3d1b3364 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x3d25a2bb devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x3d299dfb static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3d2b2267 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3d318a08 i2c_dw_validate_speed +EXPORT_SYMBOL_GPL vmlinux 0x3d37ad23 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x3d37c72c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d415aeb ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d555349 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d7a2a43 spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x3d867dd0 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x3d9143a2 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x3d9a6241 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0x3db7cc4d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dcb3b6a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3dd94f5b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3dd9964a trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3de656b7 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df8a56a fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x3e0fbd73 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3e10f7ce usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3e22181e regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3e23c1e9 pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0x3e38aa66 pnv_ocxl_get_actag +EXPORT_SYMBOL_GPL vmlinux 0x3e3bc1bd pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x3e45d63f tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x3e472956 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0x3e4e9191 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x3e5b832d rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x3e629564 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x3e6c9e13 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e82ea52 ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0x3e92744e dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x3ecdaa2b __find_linux_pte +EXPORT_SYMBOL_GPL vmlinux 0x3edcf893 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efbb03a ref_module +EXPORT_SYMBOL_GPL vmlinux 0x3efcab1f class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3f083a32 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x3f1cfc9d wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3f26d4e0 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x3f2fca68 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x3f305ffd rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x3f761e7d gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3f8f7659 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x3fa57276 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x3fab0f1b debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0x3fcd3272 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x3fcdb2df ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL vmlinux 0x3fe4b1f5 sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0x3fe5fc27 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x3fe66e90 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x401b574b device_del +EXPORT_SYMBOL_GPL vmlinux 0x401c8d1e skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x4025346b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x402eeb4a pm_genpd_remove +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40440c26 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x40458b8f spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x40473cd0 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x405058a1 perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x40532dee uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x4053614f crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x4056e4d8 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x40585ed8 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x406062b8 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40688a83 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0x40692360 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x407673c9 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x40794d79 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4084f301 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x408615d4 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a3919d blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x40b547e8 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x40b5be99 xive_native_populate_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x40b84e91 bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x40fdee73 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4100a662 clk_get_scaled_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x410b0dd2 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0x411688e8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x412a588d gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4147c73c tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x414d119a videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x414d7aae xive_native_get_queue_state +EXPORT_SYMBOL_GPL vmlinux 0x4169c698 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL vmlinux 0x4197dfe4 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41af58ab irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41c3d188 __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x41d4b524 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x41e19495 ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0x41e8f6c9 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41fc81ee syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x420539e9 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x42129015 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x42187a4e of_pm_clk_add_clks +EXPORT_SYMBOL_GPL vmlinux 0x421fd72c sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags +EXPORT_SYMBOL_GPL vmlinux 0x426c2b1c bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x426cf2dd debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bcd5c1 tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0x42d63664 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x42e052b6 skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42ef0bc4 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs +EXPORT_SYMBOL_GPL vmlinux 0x42fad91b clk_hw_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x42ff54d4 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0x42ffafb3 perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0x4304b865 cpufreq_enable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x430b7152 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x430fa2bb devres_get +EXPORT_SYMBOL_GPL vmlinux 0x431cdae9 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x43283c32 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4329b7e8 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x432ebfa4 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4331b04b class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x433ae120 of_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0x433ae21c user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x433dfb9d irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x43468cbb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4353395c driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x4355cb83 clk_gate_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4362247b aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4362f4ed inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x43749854 fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x43865b38 led_trigger_write +EXPORT_SYMBOL_GPL vmlinux 0x43a91e4d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43d166d5 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x43db8d0d edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x43dfa2b5 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x43e451f2 serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x43eb902d ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x43eff079 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x43f12552 icc_get_name +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4414e4dc platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x441f4234 __xive_vm_h_ipoll +EXPORT_SYMBOL_GPL vmlinux 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL vmlinux 0x44385ff7 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x443a9c19 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x444b8849 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x4450a2f6 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4451a070 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x446109b6 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x44688a64 dev_pm_opp_register_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x446d4d19 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x4476b319 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0x44784055 irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x447f237f pnv_ocxl_unmap_xsl_regs +EXPORT_SYMBOL_GPL vmlinux 0x44841604 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449211fe srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x4499a29a __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x449d7fb2 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x449fa45d btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x44a0a02b pci_hp_remove_devices +EXPORT_SYMBOL_GPL vmlinux 0x44a93cf4 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44add70f pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0x44ae16f9 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x44b09de0 iommu_tce_check_ioba +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44e6104a crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x44f6bb34 pinmux_generic_add_function +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x4525146e screen_pos +EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x453d1dc1 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x4543933d phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x45444615 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4545bab6 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x457175b7 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45856a02 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x45afe434 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0x45b53e6c gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x45c11188 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x45d6c150 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x45ed8cf0 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x45f92820 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f10e4 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x46181cf8 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x462b23d2 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x463301c9 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x46457829 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x464cbccd __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x464eb69d iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x465d9bc8 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x4669ba93 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x4671c199 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x468513af driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468afe91 of_device_request_module +EXPORT_SYMBOL_GPL vmlinux 0x468c8557 serial8250_em485_destroy +EXPORT_SYMBOL_GPL vmlinux 0x468eb179 kvmppc_update_dirty_map +EXPORT_SYMBOL_GPL vmlinux 0x46908857 of_usb_get_dr_mode_by_phy +EXPORT_SYMBOL_GPL vmlinux 0x46a314ac transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x46b1a05f crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x46ca54ee regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x46e465de klist_init +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x4705c76c trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x470a8535 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x470deba2 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x4712b587 xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4728bb82 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x4741be12 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x4746ec38 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x475d8f58 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x47607fbe sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476fad97 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x477e3835 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x477f8c22 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x478119ff fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478d396e regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x478f9d3f __hwspin_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4792c8f4 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x479d922e fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b3c3a5 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x47b70978 edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x47c6b2f6 kill_device +EXPORT_SYMBOL_GPL vmlinux 0x47cc5c7a rio_free_net +EXPORT_SYMBOL_GPL vmlinux 0x47d65823 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f6375d ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x47f86c95 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x47fa7afb iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x4803e942 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x480eff40 pci_add_device_node_info +EXPORT_SYMBOL_GPL vmlinux 0x4813bf65 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4816a622 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x481c3c5f devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x48202c39 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x4834cbd4 fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x484b1f8c gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x484bc083 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x485436a1 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x48558e30 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x485e7b05 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x485f99ef cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x486858b3 gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x486f8227 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x48755f37 static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x487ac245 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x487d91ee devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0x488f2cd5 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x48987b55 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0x48a3d20b mctrl_gpio_get +EXPORT_SYMBOL_GPL vmlinux 0x48a45444 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x48a9c0d4 generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0x48ab2073 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x48bcf1d9 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x48bed2e1 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x48d01171 __regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x48df5d89 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x48e58dd5 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x48f02155 iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x49383052 rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x493bab5b inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x493c8b85 crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x498eedb8 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a109bc is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0x49a36abf ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0x49b52b9c mctrl_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x49c48cc8 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x49c93d03 spi_mem_dirmap_write +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f3b073 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0x49f3e2cb iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0x49ff8d81 fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a197ecb crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x4a1f0728 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4a24e8ed access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x4a735a53 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x4a81d90c dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x4a87fd6c pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x4a886be6 pci_host_common_remove +EXPORT_SYMBOL_GPL vmlinux 0x4a92f144 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x4a93001d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4a976cd6 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x4a9e4bc6 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0x4a9ec59a regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x4a9f047a tm_enable +EXPORT_SYMBOL_GPL vmlinux 0x4aa560cc unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x4aaa6cb7 __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4ab5d943 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x4abd8e8c tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x4abe04e6 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4abe4a9b of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4ac52b22 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x4ae1320c sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x4ae6937e pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x4af00fb7 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x4af44c22 of_mm_gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4b3dc2ae __clk_hw_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x4b483e2c gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x4b51f26c key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x4b598bb2 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x4b60d63a ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x4b619b46 ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0x4b62fda2 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4b6474e2 vas_init_tx_win_attr +EXPORT_SYMBOL_GPL vmlinux 0x4b693f96 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0x4b6da28a devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4b9cf215 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x4ba26df3 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x4bb905fc pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0x4bbb4312 dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0x4bc5a057 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bcb6fac pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x4bd05db0 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x4be2e8c8 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x4bef0884 pgtable_cache_add +EXPORT_SYMBOL_GPL vmlinux 0x4c0c64f1 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x4c23e6a4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c26966c pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0x4c30af76 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x4c3a5c61 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x4c492093 cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4c501f8f ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x4c56ac6f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4c73b5bb spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x4c8a0c5a sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0x4c96954f usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x4cb15ff4 raw_abort +EXPORT_SYMBOL_GPL vmlinux 0x4cb70af1 device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x4cbebf13 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4cc4d3e9 dev_pm_opp_put_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0x4cd1b8a7 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x4cf194f5 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d033020 fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0x4d20c90f pm_genpd_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d4f4a32 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d638618 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x4d664d6c blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d7c17c9 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x4d86460c dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL vmlinux 0x4dc52c09 pnv_power9_force_smt4_catch +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df33477 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4df9f03c serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0x4e1195d6 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x4e17c613 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4e1f9fd2 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4e440465 dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0x4e53f752 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x4e58f23b mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x4e5eeb28 dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x4e6ecc9c public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x4e73001b regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4e7f2191 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x4e8152b5 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x4e917fd1 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x4ea27a54 of_usb_update_otg_caps +EXPORT_SYMBOL_GPL vmlinux 0x4ea691fa phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4ee5a759 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4eed06f6 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x4eee1e59 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4ef2c26e kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef80b6c rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x4f12a322 fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0x4f39de4e __module_address +EXPORT_SYMBOL_GPL vmlinux 0x4f50f820 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4f546793 usb_of_get_interface_node +EXPORT_SYMBOL_GPL vmlinux 0x4f5f22d4 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x4f75951f udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x4f94af4c sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x4f9a4e4d wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4fa312b2 dev_pm_domain_attach_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4fa938ba dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x4fb4e785 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4fc5b377 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff56656 nvmem_device_find +EXPORT_SYMBOL_GPL vmlinux 0x4ffb21fd __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x500910cc raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x500b49af fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x5018ad9f icc_put +EXPORT_SYMBOL_GPL vmlinux 0x503acd6b io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x504a2062 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x5050425c inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x50616358 validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x507ce77a pnv_ocxl_get_xsl_irq +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x508377eb xive_native_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50ae6d90 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x50b3c3d3 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x50c38eb4 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x50dd1af5 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x50df866e iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0x50e3eead bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f954bd led_set_brightness_nosleep +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51057a79 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0x51122969 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x512dc5a6 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x51319fd0 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0x51363070 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x513d314a palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x514de05d ping_close +EXPORT_SYMBOL_GPL vmlinux 0x516c419f cpufreq_dbs_governor_init +EXPORT_SYMBOL_GPL vmlinux 0x516d9665 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x5182c2e0 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x51917dcd regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x519afee5 crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x51a8cf28 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c4c79d devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51c8fcb0 devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x51c96198 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51d52c7a devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x51e2dcfd vfio_group_get_external_user +EXPORT_SYMBOL_GPL vmlinux 0x51fe176d netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x520cfefa regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x52198665 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x521cc8d6 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x52264b34 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x52364206 of_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x5236497d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x524f80d8 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0x526ea100 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x527187d0 serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0x528cd883 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x528d5ca3 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x52a0d909 fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52b90155 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x52bd7a3d unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52c4168f clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x52cb73da ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x52ce8b8e sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52e6af9e iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x52f5b248 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x530e866c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x53128681 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x53175a02 dev_pm_opp_remove_table +EXPORT_SYMBOL_GPL vmlinux 0x531ff40f iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x53291f6d iommu_tce_table_put +EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0x532ee53d crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x532ff3d1 pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5343f1cf blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x5355fef1 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x535d64e5 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x53730602 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x53800e32 vas_unregister_coproc_api +EXPORT_SYMBOL_GPL vmlinux 0x5381d07d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x53884839 kvmhv_load_host_pmu +EXPORT_SYMBOL_GPL vmlinux 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL vmlinux 0x5393e61a dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x53b07f73 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x53cac1df __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x53cad47a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x53cbfb6f clk_hw_unregister_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x53d41655 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0x53d57545 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x53d9f73a sensor_group_enable +EXPORT_SYMBOL_GPL vmlinux 0x53e06c0c power_supply_find_ocv2cap_table +EXPORT_SYMBOL_GPL vmlinux 0x53ea8f6e metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x53ffebb6 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x5405cd5d regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x541b3cd9 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x541bc6b4 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541e93c1 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x542b3fdd iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x54455603 nvmem_cell_read_u32 +EXPORT_SYMBOL_GPL vmlinux 0x545025e5 nvmem_add_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x545ba8fd register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x546ae18b iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0x546b7e5b rio_add_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x546e7e72 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x54782b30 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5484fd3a regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x5494a780 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c94c89 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x54d4df38 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x54f5872f eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x55153f08 pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x551a9bbd dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x552bb1b6 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x553a7be3 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5549de24 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x555701b5 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x55576e44 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5571e4b0 iommu_tce_xchg_no_kill +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557d98ab devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x558a791b rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x559ca8e8 devm_regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x559d7c1c i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x55c76a23 ksys_sync_helper +EXPORT_SYMBOL_GPL vmlinux 0x55cad999 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x55d277aa devm_reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x55e44c94 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x55e577cf pci_traverse_device_nodes +EXPORT_SYMBOL_GPL vmlinux 0x55eb4b8b spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f093a9 opal_write_oppanel_async +EXPORT_SYMBOL_GPL vmlinux 0x55f95ba1 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x55ffcdac anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x560cfc0a xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x5617af4e fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x561a733b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x5620596f __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562c0ebb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56438887 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x564b06c2 dev_pm_opp_put_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x5663395e dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x567de956 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5688ac05 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x568a6e01 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x56973016 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x56b8540c bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0x56b95f3d led_classdev_register_ext +EXPORT_SYMBOL_GPL vmlinux 0x56bf62e2 fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0x56bf9b4b virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x5701a348 pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0x570f3aaa __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0x571fd231 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x57254d7e platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x5736a330 mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x57581f2e ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x575b03fb fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0x5775c714 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x577c3e9d genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57949ef0 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aa8a6b devm_hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x57ad4be0 opal_int_eoi +EXPORT_SYMBOL_GPL vmlinux 0x57b7a635 platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x57c16ace led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c6a591 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0x57e16c42 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x57f132d3 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x57f6408c spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57ff6bd2 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x5808dcfc crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x580eea58 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x582f24bf tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x58373d71 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x583ea2b5 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x58424480 vfio_del_group_dev +EXPORT_SYMBOL_GPL vmlinux 0x584f938f wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x585d4233 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x5864c4ff rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5868d272 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x586cdea1 device_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x587bff39 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589cc0cd power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x58b00973 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0x58b5244d hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x58bd05af iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x58c19b74 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x58d1c745 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x58d63d40 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x59075387 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x5909fc18 opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0x590f4a35 xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x593cd326 icc_disable +EXPORT_SYMBOL_GPL vmlinux 0x594bf8b4 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x595388ab kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x5962a985 pcibios_free_controller_deferred +EXPORT_SYMBOL_GPL vmlinux 0x5964e23a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x596530f3 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0x59758888 devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x599725fb scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x59a25f6f thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b65db9 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x59b6dc5d badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0x59bd7757 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x59be22bc kvmhv_save_guest_pmu +EXPORT_SYMBOL_GPL vmlinux 0x59d7b08d devm_irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x59f821d3 rtc_nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x5a0aba88 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x5a10b50f cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a226398 blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0x5a29c556 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a57dc70 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x5a65cd08 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a754b8e rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a919a46 clock_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0x5a98a6e3 skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner +EXPORT_SYMBOL_GPL vmlinux 0x5ad5c0b2 sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x5adb6022 devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0x5aea27db early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x5aefda41 dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x5b11468e pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0x5b1c73fe gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x5b21549e pinmux_generic_get_function +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b33fbe1 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL vmlinux 0x5b4a0c3c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x5b4ce288 inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5b4d77b2 tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0x5b527659 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5b5b81aa __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b70c4b9 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x5b7c19fc skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x5b80bfaa __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5b8bdae7 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5b9dab95 led_init_core +EXPORT_SYMBOL_GPL vmlinux 0x5ba22663 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x5ba39e84 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0x5ba8d98c thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x5bb35b42 fsl8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x5bb7461f nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd3c261 devm_mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfd3ad5 devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x5bfd82a0 dma_async_device_channel_register +EXPORT_SYMBOL_GPL vmlinux 0x5c022590 pinctrl_generic_get_group_count +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c32bd70 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x5c38c3a6 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x5c3db232 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x5c45560c pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x5c574940 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5c788c __reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x5c5d1797 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5c6a4037 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5c816993 __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple +EXPORT_SYMBOL_GPL vmlinux 0x5cb99d97 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x5cbce2d6 nd_blk_memremap_flags +EXPORT_SYMBOL_GPL vmlinux 0x5cc07668 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0x5ccdb2e2 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x5cd02eea sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x5cd305ed digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5cff6946 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x5d0c41b9 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x5d17a4ca PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x5d285420 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0x5d393d87 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x5d6ad818 devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d6dbea7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x5d7bc90e task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x5d7f3371 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d85aa91 icc_set_tag +EXPORT_SYMBOL_GPL vmlinux 0x5d8d652f sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x5d914762 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5da62805 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da795ab nl_table +EXPORT_SYMBOL_GPL vmlinux 0x5db4389f cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5db825f3 __device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5dc147e9 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5dca9bc7 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x5dcc40f2 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5dce2c64 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x5e00aea4 ucall_norets +EXPORT_SYMBOL_GPL vmlinux 0x5e0c2ea5 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x5e0e0a80 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x5e0ea1ab to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x5e0ed1d0 alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x5e253c39 iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5e305385 __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x5e32e733 pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x5e3f2820 noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5e49c04a da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51b089 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e534e9a devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5e5f86ec iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5e60c0db rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5e6715e3 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5e696a4f extcon_get_property_capability +EXPORT_SYMBOL_GPL vmlinux 0x5e7141bf __hwspin_lock_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5e7618b2 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e84122a __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5ea09750 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5eb9d573 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5ebb9454 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ed0cff6 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5ed0da6c tm_disable +EXPORT_SYMBOL_GPL vmlinux 0x5f0ba1e1 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x5f17a81b synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x5f20ab6f devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f395f8e ethnl_cable_test_amplitude +EXPORT_SYMBOL_GPL vmlinux 0x5f422e28 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5f469c52 add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0x5f5330a4 __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f78c18b crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5f9d07f5 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5fa49d8d iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x5fb3ebb2 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x5fc50118 pnv_npu2_map_lpar_dev +EXPORT_SYMBOL_GPL vmlinux 0x5fc8f85f ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x5fd1dcc8 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x5ff84a4e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL vmlinux 0x6000187c opal_check_token +EXPORT_SYMBOL_GPL vmlinux 0x60004123 pm_clk_suspend +EXPORT_SYMBOL_GPL vmlinux 0x60026071 devm_nvdimm_memremap +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600cc455 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0x60181723 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x60233479 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x60236936 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x60295618 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6038aaaf disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x603e6821 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x60407642 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6041d6ae synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0x60456af1 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x60456b55 regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0x60647f50 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0x606b9ba9 devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x607f5da8 pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0x6081884a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x60835da0 crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x60907d81 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6091ac58 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a634c4 vfio_info_cap_add +EXPORT_SYMBOL_GPL vmlinux 0x60c77ea0 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x60d5dbb1 blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0x60d7f010 kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0x60e2b217 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60f1e2e7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x60f5a41a rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x612e745b sdio_signal_irq +EXPORT_SYMBOL_GPL vmlinux 0x6145813f sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x61494bc1 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x614adcb7 of_overlay_remove_all +EXPORT_SYMBOL_GPL vmlinux 0x6168433c irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x616d58d4 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x61707650 devm_thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x6171c569 serial8250_rpm_get_tx +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x618a1459 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x6196220e generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x619a8194 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x61abbd65 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0x61af7370 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0x61b4e207 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0x61b85971 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x61ba73cc trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x61bbbdac serial8250_rpm_put_tx +EXPORT_SYMBOL_GPL vmlinux 0x61bf86a0 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x61cb5ea6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x61f192d1 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x61fd3d2a regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x621c054e uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x623a5f1f trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x6254cff8 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x6257dda7 clk_rate_exclusive_get +EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context +EXPORT_SYMBOL_GPL vmlinux 0x6274feb2 bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x628148be _kvmppc_restore_tm_pr +EXPORT_SYMBOL_GPL vmlinux 0x628c6dc3 dev_pm_domain_start +EXPORT_SYMBOL_GPL vmlinux 0x62956bb7 d_walk +EXPORT_SYMBOL_GPL vmlinux 0x62a06963 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x62a1614c pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62bec5fd class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x62c379ea __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x62d2aabe devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62dd91cb powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x633475c7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x63381557 icc_std_aggregate +EXPORT_SYMBOL_GPL vmlinux 0x633c6897 pm_clk_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6347e9e1 of_map_rid +EXPORT_SYMBOL_GPL vmlinux 0x634e2d7c synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0x63687106 udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x6369e57d free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x63706b8e sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0x63757e9c irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0x6386d8fa kick_process +EXPORT_SYMBOL_GPL vmlinux 0x639b91dc eeh_pe_mark_isolated +EXPORT_SYMBOL_GPL vmlinux 0x63af6ec1 vfio_virqfd_disable +EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c83203 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x63d7c3eb dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x63e633e2 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0x63f7fe96 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x640a3650 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x640c6019 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x6431f18c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x6443b087 pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0x644dafb3 of_property_read_variable_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x645042fc tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x6452e065 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x646dc596 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x64801327 wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x6483d25e dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x6488024d serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x648b461c devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x649383c4 fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x6493a2df rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x6496fcae __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x64a9e140 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x64c94924 skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0x64d564fe fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x64db2f8f i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64f1dc27 sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64f43243 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x64fcde80 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x652b3942 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x652f2c25 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6545435a kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0x655169d4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x655600c7 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x6567b2b5 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x656ce0b6 devm_spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0x657b442b scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x6595bdc3 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x65ab1fa8 dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x65ab5ecb usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x65ca13ca mmc_cmdq_disable +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d81433 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x65e386da task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x65eac411 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x65f13f91 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x65f79b7a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x66051d5b gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0x6608f4bd devm_namespace_enable +EXPORT_SYMBOL_GPL vmlinux 0x660de7eb zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x66143624 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6629d042 pci_host_common_probe +EXPORT_SYMBOL_GPL vmlinux 0x663213f3 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x6634d77c of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6634dc6e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x663bdeff adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x663e846e __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x664090a9 sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0x664562ad thermal_remove_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0x664a1947 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x666573f8 usb_phy_set_charger_state +EXPORT_SYMBOL_GPL vmlinux 0x66663a5a lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0x66774b62 dev_pm_opp_get_max_clock_latency +EXPORT_SYMBOL_GPL vmlinux 0x6682a9f0 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668f67e2 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x6693bc90 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x66ad39e3 __devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b36955 copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66d66c93 shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x67002768 pci_generic_ecam_ops +EXPORT_SYMBOL_GPL vmlinux 0x6700a449 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x6720eb78 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x673efac8 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x67436294 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x674fc3a4 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x6768dc36 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6799aa37 iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x67aa1e05 mmc_pwrseq_register +EXPORT_SYMBOL_GPL vmlinux 0x67b013f3 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x67d2e763 tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67eae82a pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x68146f66 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x68254ac1 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x682d8957 extcon_set_property_sync +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x685c45df ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x686ea64d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x68774b0b of_genpd_parse_idle_states +EXPORT_SYMBOL_GPL vmlinux 0x68786f2e xive_native_configure_queue +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x68b36787 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x68c06849 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68c0a5f5 of_css +EXPORT_SYMBOL_GPL vmlinux 0x68da6341 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x68e752ad gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x68e80238 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x6909a38b opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x6913865a trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x691f6f21 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6928269b xive_native_disable_vp +EXPORT_SYMBOL_GPL vmlinux 0x692ff560 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0x694906ea sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x695e34b5 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x696f2b63 of_changeset_init +EXPORT_SYMBOL_GPL vmlinux 0x697a199b inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69957df5 mm_iommu_newdev +EXPORT_SYMBOL_GPL vmlinux 0x69b05eea i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x69b17e8f vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x69b48019 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x69db77e8 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x69e1f309 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high +EXPORT_SYMBOL_GPL vmlinux 0x69fcf0bc flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x6a05b65b fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a24a7d3 __devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a4274a6 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x6a427a90 iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a478129 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x6a63f6a8 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6a6b5262 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x6a6c1e1a devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9f7548 regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6aa33f54 serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x6ab4260a tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x6ab94c0e inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x6abdee99 dev_pm_opp_put_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6ad4dcff usb_of_has_combined_node +EXPORT_SYMBOL_GPL vmlinux 0x6b09364e pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x6b0b22ac validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0x6b16f76d led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x6b1d7e1d pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2a637b set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x6b2cc25d clk_hw_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x6b3097da led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x6b406ed0 virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b4822fa ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x6b660ff6 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x6b66b1e8 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x6b7d6338 pm_genpd_init +EXPORT_SYMBOL_GPL vmlinux 0x6b7e6c10 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b81ebc2 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x6b95d725 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x6ba7df84 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x6ba8d304 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x6bce0a5a xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6beed43e fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0x6c01d871 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6c0550ae vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6c243e21 debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6c34523e ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c53b328 pseries_eeh_init_edev_recursive +EXPORT_SYMBOL_GPL vmlinux 0x6c57ee07 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6c63a084 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6c69c4b3 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x6c727a54 dev_pm_domain_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x6c751a0d debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x6c840444 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6c868e3a path_noexec +EXPORT_SYMBOL_GPL vmlinux 0x6ca3b1e2 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbeb4a1 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6ccf140c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x6ce50ccd spi_mem_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d0ae550 pinctrl_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x6d25b094 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d35d64b ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6d3d658e dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x6d6fcecb __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d7d521d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d8b820b tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x6d8d503d cpu_latency_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x6d95665a power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x6d9df151 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dd52a12 is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x6de06c45 crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x6de72eff __nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x6df5e0f6 pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x6df8316f i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL vmlinux 0x6dfc78f1 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x6dfdac64 nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x6e05478a __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6e28ca34 pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x6e4087db udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0x6e488e6d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free +EXPORT_SYMBOL_GPL vmlinux 0x6e4c97c4 nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x6e6a2fdf aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0x6e6be62b cpufreq_dbs_governor_stop +EXPORT_SYMBOL_GPL vmlinux 0x6e6ef469 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8a98ce ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x6e8e6c3e sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0x6e9faf35 clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x6ea2982b hwspin_lock_request +EXPORT_SYMBOL_GPL vmlinux 0x6eab3c77 of_irq_get_byname +EXPORT_SYMBOL_GPL vmlinux 0x6eab7dd3 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ebf79d3 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6ec2b119 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6ec4a89d pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x6ee1a2cb perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6efcd9e5 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6f0088d9 xive_native_sync_source +EXPORT_SYMBOL_GPL vmlinux 0x6f105da7 do_truncate +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f1d164d pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0x6f2080c3 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x6f2e0ce9 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x6f5c9052 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x6f858947 pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0x6f93c6ae pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6faa6700 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x6fb76dc1 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffb3b7e __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6ffea85b ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x700283b9 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x7023d907 md_start +EXPORT_SYMBOL_GPL vmlinux 0x70268524 __xive_vm_h_cppr +EXPORT_SYMBOL_GPL vmlinux 0x70280218 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0x7035dd2f debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x704ae08b devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x704d62d0 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x704f24ae kvmppc_restore_tm_hv +EXPORT_SYMBOL_GPL vmlinux 0x7053b1b2 dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x705a5794 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x7067d02d iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x70681770 xhci_ext_cap_init +EXPORT_SYMBOL_GPL vmlinux 0x70689780 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL vmlinux 0x70742d28 extcon_get_property +EXPORT_SYMBOL_GPL vmlinux 0x70805862 iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x709254dd __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0x709e9ae6 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x70a06d11 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x70b06f5a usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x70c2a531 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70c6d827 mc146818_set_time +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70cf1aa0 gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x70d12f6d ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x70fb0eb7 nvdimm_has_cache +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7112c5fe sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x7123c7ec iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x712c5fb1 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x712d19bc dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x71316503 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x714d3f69 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x71501923 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x71549330 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x71852c6f thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x7197f9e7 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71bc9f79 pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0x71c1acfb sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x71f69a1b sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0x71fb180a power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x7245b07e device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x724ac899 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x725a3a09 regulator_suspend_enable +EXPORT_SYMBOL_GPL vmlinux 0x7267f4d9 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x726c3ceb ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728cce92 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x72a81a1d regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x72ac5ae0 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0x72b26ff0 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x72bf7bcb set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x72ce6f94 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0x72d6ed16 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x72e5ad87 devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x72e6dbb4 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x72ef8560 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x72f23bc8 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7313b4ac spi_delay_to_ns +EXPORT_SYMBOL_GPL vmlinux 0x73224fe1 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x7378ca41 xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73db3d5b crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x73e1f127 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x73e424e8 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x73ef4d24 spi_controller_suspend +EXPORT_SYMBOL_GPL vmlinux 0x73fe5ccc nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x740ba9f3 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x74199b26 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0x741f307f hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x743f0b41 serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0x745d7a97 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x746df108 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0x747fde02 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x749582f7 serial8250_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c0d59c blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x74dd409f devm_reset_control_array_get +EXPORT_SYMBOL_GPL vmlinux 0x74ed644f kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x750abb1f led_get_default_pattern +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75214135 kvmppc_find_table +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753e8a61 devm_regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0x754ba823 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x754f9bee bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x755840be devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x756ba6cb dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0x7573426c rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x757cfe35 xive_native_get_vp_info +EXPORT_SYMBOL_GPL vmlinux 0x75833bd2 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x759139cb of_pci_check_probe_only +EXPORT_SYMBOL_GPL vmlinux 0x75b6de52 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x75bafeb6 regulator_get_error_flags +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d4e345 mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0x75dd4ebe of_overlay_remove +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x760553d9 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x76104bd5 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x76433683 component_add +EXPORT_SYMBOL_GPL vmlinux 0x7646c675 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7695b12d serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0x76ab7a9f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x76ad4309 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x76ba86e9 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x76c0b918 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x76c657c2 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76cb3efa sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76dd5ed3 devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x76ecf547 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76f2abe0 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x76f56e2e ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x7708a901 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773806e1 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x773f708e sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x77510f41 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x775799af dev_pm_opp_of_find_icc_paths +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7769af2e ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x778053a3 dmaengine_desc_set_metadata_len +EXPORT_SYMBOL_GPL vmlinux 0x778f3db7 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x7791235d mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x7792084a __clk_hw_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x779bbccb extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x77a10510 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x77b65544 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x77bcb43e ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x77c3dfc8 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x77de627d rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77e88876 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x77f5adbb kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x77fa2709 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0x77ff8434 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x78041b8f byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x78043c43 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x7806ab4a vfio_iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x7814b2b3 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x781524fe linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0x781974d4 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x781ab9fa phy_led_triggers_register +EXPORT_SYMBOL_GPL vmlinux 0x7829071d virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x783831b9 bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x78486dae sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x785115e3 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x786bdf15 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x7874eb53 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78810d92 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x7883cb5b pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x7892f786 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x78ba5f6e iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x78bf6d66 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x78c4874b of_irq_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x78e58a4e xive_native_has_single_escalation +EXPORT_SYMBOL_GPL vmlinux 0x78ecc56b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x78f72d94 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x78fc9339 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x78fd9e99 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0x79002114 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x790e524b usb_urb_ep_type_check +EXPORT_SYMBOL_GPL vmlinux 0x79146d68 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x79288e79 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7932ba30 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x793990fc sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x793f0c82 dev_pm_opp_unregister_set_opp_helper +EXPORT_SYMBOL_GPL vmlinux 0x79428963 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794cb4c4 i2c_new_client_device +EXPORT_SYMBOL_GPL vmlinux 0x796d702d alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0x79854ffa verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7986b78a max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x79a104fa usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x79a79580 clock_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x79a89274 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x79b6da43 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x79bd9a4f bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x79d52a77 iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0x79db4c29 dma_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e039a0 of_get_required_opp_performance_state +EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x79fd8be5 iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7a40ca40 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7a6ae1f5 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a98f4b4 copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x7a9e4c23 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x7ab634fc devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x7abc4fe7 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x7abf441b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x7ac1fb09 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL vmlinux 0x7acd81e3 regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ae3cbbf usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x7af214a7 bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0x7af4e58c xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x7b0213c3 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0x7b1df89f pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x7b283e9d crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x7b3123b1 serial8250_em485_config +EXPORT_SYMBOL_GPL vmlinux 0x7b395a70 tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x7b436998 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0x7b4ff8f4 badrange_forget +EXPORT_SYMBOL_GPL vmlinux 0x7b5207c3 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b67ac45 crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0x7b71bfe5 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x7b783824 ppc_breakpoint_available +EXPORT_SYMBOL_GPL vmlinux 0x7b8181db of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x7b856860 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b9072d3 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x7b91e06d ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x7b94d1ce wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7ba19838 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7bb412e3 iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0x7bc74926 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x7beb6f9b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x7bec7f53 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0x7c1b4cea serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x7c36128d fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c3a9608 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x7c4ac24e usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c57421b x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7c5855e2 virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7c73a9e0 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x7c785346 of_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca992dd devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7cbf10ee wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x7cc1416e lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0x7cc48015 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7c203 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x7cddbfe7 cs47l24_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceb1f4d usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x7cecd9a0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x7cef90cf ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0x7cf62ac6 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d053ecb file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x7d191cfb device_add +EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x7d27a2d9 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x7d2ca554 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x7d3c88b1 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7d3d5f89 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a0587 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0x7d5d1aaa get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x7d5f41dc xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0x7d6b0cb2 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x7d7995c9 skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x7d7ee0a2 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7d9011b5 sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0x7d906d20 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x7da31158 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x7db50ade blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x7dc1f783 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x7dcb4e74 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x7dccef38 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7dcd3dfc bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddd5fd4 idr_find +EXPORT_SYMBOL_GPL vmlinux 0x7ddd9f43 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x7de4dd9e dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7de650da tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x7df1951e get_physical_package_id +EXPORT_SYMBOL_GPL vmlinux 0x7dfbdd90 put_device +EXPORT_SYMBOL_GPL vmlinux 0x7dff2a0c kvmhv_load_guest_pmu +EXPORT_SYMBOL_GPL vmlinux 0x7e089f4e devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e0a9ed0 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x7e13c98a clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x7e1e1bd3 iommu_tce_check_gpa +EXPORT_SYMBOL_GPL vmlinux 0x7e1e1c44 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0x7e419b8a pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x7e45e5ce pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7e4e4aad skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x7e4ea9c6 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e8e4c7f regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x7e938588 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x7eabb635 scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ebc3cde led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7ed0720c sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x7ed0d670 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x7edcd385 user_read +EXPORT_SYMBOL_GPL vmlinux 0x7ede7af7 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7eee5bfa __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x7efad5c7 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x7efd9023 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x7f152385 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x7f1ab27b i2c_adapter_depth +EXPORT_SYMBOL_GPL vmlinux 0x7f1bb688 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7f226275 serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7f27cb6b cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x7f287a4c blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x7f3af52f kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x7f3e8540 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x7f43b366 devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0x7f4ceb4c __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x7f5882d3 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f758cff init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7fa9b7dd to_nvdimm_bus_dev +EXPORT_SYMBOL_GPL vmlinux 0x7fad8855 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7fafdec9 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x7fbead39 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x7fc1dd59 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x7fd28b20 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x7fda28a8 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x7fe5b31e gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x7fea5d53 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x7fed4cee bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x7ff473c3 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x7ff82d93 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x801fd2cb class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x80204cf8 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x804c4e64 phy_configure +EXPORT_SYMBOL_GPL vmlinux 0x804f9002 devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x80584815 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x80768da3 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a55b00 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x80c3c25e tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cc1aa1 skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x80d1c5ec ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d84b13 devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x80db414a crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x80ea8e46 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x81006070 of_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x810865ac direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0x810b7060 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81334ef5 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x8141a4ad pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0x814d1eea edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8152ebfc blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x81674f78 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits +EXPORT_SYMBOL_GPL vmlinux 0x818bfd0d bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0x819e8632 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x81b6b474 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x81b8d44c soc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x81bc769e rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x81cf5d77 vfs_write +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81dcce5f inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x81fbe951 ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0x8212f8e8 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings +EXPORT_SYMBOL_GPL vmlinux 0x823b7f8d scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x8244e438 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x82524f38 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x826275c0 fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x826e3354 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x82702b9a mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x82716fee dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x82741519 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x827ce56e user_describe +EXPORT_SYMBOL_GPL vmlinux 0x828c5626 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x828f4105 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x828f7fea iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x82a90883 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x82a9b475 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x82ae7639 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x82b535ac pm_wakeup_dev_event +EXPORT_SYMBOL_GPL vmlinux 0x82cdb0b1 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f1be33 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x82fe0760 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x830f1591 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x8331150b usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x833b4b82 __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x833e693e __mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0x835c8cd4 spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x83670af3 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83743837 hash__has_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x8382a0e7 icc_node_create +EXPORT_SYMBOL_GPL vmlinux 0x83ba5588 dw8250_setup_port +EXPORT_SYMBOL_GPL vmlinux 0x83c464e0 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x83d64e01 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0x83e6cf6f iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x83fd136d handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x83ff67d5 mmu_feature_keys +EXPORT_SYMBOL_GPL vmlinux 0x840f6f03 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x84191217 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x8428c34d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x842c6ec5 devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x843073dc __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0x8431fda2 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x8434d309 regulator_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8437e73e md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x843eba2e scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x84445c17 dev_pm_opp_of_add_table_indexed +EXPORT_SYMBOL_GPL vmlinux 0x844c2f3d vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x8459dc56 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x846b6294 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x84755827 __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0x8479412b spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0x8488f271 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0x84a7c170 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x84a8d0eb of_changeset_revert +EXPORT_SYMBOL_GPL vmlinux 0x84d4d8e8 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x84df9e7e ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x84edcad3 device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x84f0e287 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x84f8cce3 iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8505e01b irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8514bb81 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate +EXPORT_SYMBOL_GPL vmlinux 0x851faf04 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x852b7a08 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x852ba987 mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0x8530443c pwm_apply_state +EXPORT_SYMBOL_GPL vmlinux 0x853b9110 __kvmhv_vcpu_entry_p9 +EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put +EXPORT_SYMBOL_GPL vmlinux 0x8558f8d7 fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0x85590eae ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x85710c77 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x85753020 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x859035be perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85b4f55e xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0x85b67113 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x85b9177f of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x85cb4f89 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x85d1ea5c crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x85e5d047 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x85ec4c23 iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x86018d37 tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0x8603f68a phy_led_trigger_change_speed +EXPORT_SYMBOL_GPL vmlinux 0x860dda96 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x86121522 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x861244e1 tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862bb17b linear_range_values_in_range_array +EXPORT_SYMBOL_GPL vmlinux 0x86350395 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x863c86dc dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x864643da rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x867ba495 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x867c9318 pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868dd681 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x869c0a2c ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x869d2633 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x86aa572e switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x86ab2672 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x86abc421 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x86b427ce clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0x86bd0266 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86cb472a ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x86d9466e set_thread_tidr +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x870d2915 pnv_ocxl_alloc_xive_irq +EXPORT_SYMBOL_GPL vmlinux 0x871e0259 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x87284b6a __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x8729703d ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x872cc674 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x873afe1c cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8747d6a8 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table +EXPORT_SYMBOL_GPL vmlinux 0x875914c9 fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x87653dc1 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x87681d40 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x876c61c1 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x876d55f0 synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0x878b9e7e dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x878e349d crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x8796190b pcibios_free_controller +EXPORT_SYMBOL_GPL vmlinux 0x879787b0 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x879f269e ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x87b5e542 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0x87c4a289 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87e46487 serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x87e52cc8 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x87f8b576 wakeup_sources_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x8830082c unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x8843f131 __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8854a088 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x885fae40 power_supply_set_input_current_limit_from_supplier +EXPORT_SYMBOL_GPL vmlinux 0x887d616e dev_pm_opp_get_sharing_cpus +EXPORT_SYMBOL_GPL vmlinux 0x88843f36 account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x888bde36 __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88aec2b4 fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x88afea86 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88b8991a of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x88ca9fae hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x88cc8080 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x88f01a0d usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x88f38e78 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x88fee029 blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x89066466 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x890bf244 __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892a8b57 nvmem_register +EXPORT_SYMBOL_GPL vmlinux 0x8935247d irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x893bed52 fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895589f8 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x895d593a synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x8964424e regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8965505b crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x896bf1bf paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x8996decb of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x899e58dc sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x89ac3a87 clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x89b5da45 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d9ec09 gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x89de6566 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x89fc820c housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x8a05924f pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0x8a192738 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x8a2e30d1 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8a2f0c1d irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low +EXPORT_SYMBOL_GPL vmlinux 0x8a3fae23 dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0x8a4184bf crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8a4510cd pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a7d025f sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0x8a99db2c pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x8a9bbfb4 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x8a9dbcad opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8aa36c9e reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x8aa69efe kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x8ab65dae ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abf6bcb debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x8acb2a16 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x8ae79c78 gen10g_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0x8ae7e1d0 of_devfreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x8afc7612 devm_namespace_disable +EXPORT_SYMBOL_GPL vmlinux 0x8b0f7c1a regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b1ee696 tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b24065a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x8b263a03 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8b2a6b49 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8b37331d pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x8b393cf1 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x8b4896fa of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8b4fcef5 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x8b512a1b ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x8b514c52 generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0x8b5d1fd1 devm_hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0x8b6c761a __xive_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8b7c6bac gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x8b818cc0 devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0x8ba0f3cc to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x8ba7ff9f of_i2c_get_board_info +EXPORT_SYMBOL_GPL vmlinux 0x8bb6d827 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x8bbe618e strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x8bcf7012 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x8bd48868 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x8bdd1b35 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06308b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8c0df489 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x8c243d5f __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8c3a1fa7 devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x8c416637 of_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x8c41d75d fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c513fff spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x8c5c9190 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x8c5fde2e pnv_pci_get_slot_id +EXPORT_SYMBOL_GPL vmlinux 0x8c65981c kvmppc_host_rm_ops_hv +EXPORT_SYMBOL_GPL vmlinux 0x8c673ec4 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x8c678924 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c77229f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0x8c775bc6 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x8c7a14e3 blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8c84a81e pinctrl_generic_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8c8cd8a4 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c8e3325 devm_request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x8c9480aa devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0x8cad950d kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0x8cc4ce02 blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x8cc638b8 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x8cce5118 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8cd94f86 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x8cf0c64f blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0x8cf5fb28 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d327e6b pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0x8d4e3045 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x8d5d737f spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL vmlinux 0x8d6d4214 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0x8d6dc201 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x8d6f0e79 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x8d7508e9 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x8d7767e8 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x8d7e8ddb virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x8d8e03e8 sec_irq_init +EXPORT_SYMBOL_GPL vmlinux 0x8dabed18 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x8db77cd9 proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dc5b4b1 scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8dc7db14 regulator_desc_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x8dcbf764 bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0x8dcf5047 genphy_c45_read_link +EXPORT_SYMBOL_GPL vmlinux 0x8dd457a4 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8df21be0 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x8df51555 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8dfcb579 fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x8e008598 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x8e0dc16e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8e1621cf fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x8e1ce4b4 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0x8e20bc4d devlink_free +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e2f5317 nvdimm_region_notify +EXPORT_SYMBOL_GPL vmlinux 0x8e3e4f5a pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e4f9415 kthread_func +EXPORT_SYMBOL_GPL vmlinux 0x8e58c26b trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x8e5ba181 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x8e7313b0 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8e737d59 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e85ef8e stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x8e9094db udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x8e91c166 phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0x8e952b63 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8e9ac7e3 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e9e7a6c spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x8ea949da tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x8eae8dfd usb_find_common_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x8eb9de2c __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x8ec0c74c adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8ecd35b8 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ed19e06 clk_hw_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0x8ed2dff8 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x8ed8724d usb_bus_idr_lock +EXPORT_SYMBOL_GPL vmlinux 0x8ed8c6c8 fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0x8edbe404 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x8ee3763d devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x8ee98ade kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1bdc74 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0x8f21792a mmc_cmdq_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f438305 perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0x8f5b5de4 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f6b4cd1 devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f87244d ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8f877bc1 pnv_npu2_unmap_lpar_dev +EXPORT_SYMBOL_GPL vmlinux 0x8f8e79db stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8f923129 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x8fb04d68 pnv_ocxl_spa_release +EXPORT_SYMBOL_GPL vmlinux 0x8fbce566 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x8fc9e9e5 bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x8fca73a3 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8fffd0c6 gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0x900db9b7 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x9033b6b5 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90519afb ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x9058f55c mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x908addc9 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x9090cb7a crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x909a029e of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0x90d546a5 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x90e82bbb lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x90f61df7 of_property_read_variable_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x90f7e9c0 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0x9111c0a6 serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0x911d18ae dev_pm_opp_of_cpumask_add_table +EXPORT_SYMBOL_GPL vmlinux 0x912824ed pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x912a0bf8 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x91434269 genpd_dev_pm_attach_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9145616c component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x914865b2 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x914ccbc0 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9158e04d machine_check_print_event_info +EXPORT_SYMBOL_GPL vmlinux 0x916cacfb usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0x916f9271 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x919a748c gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91b7a84f relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x91b8e5de l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91bd4726 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c8a28c device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x91cd32fe blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x91e43f85 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x91f1a7cc iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0x91fa0d36 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x9218f010 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x92238bcb xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0x923d9dba pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924c868e gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x924fc9ae fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x9258e5b0 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x926742e0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x927abc5d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x9289df75 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x92a13e8e __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x92a6674a ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x92aee10d trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x92c925fb xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92de2990 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x92f0aa28 opal_tpo_write +EXPORT_SYMBOL_GPL vmlinux 0x93163bc2 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x931f82c8 firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9327c693 freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array +EXPORT_SYMBOL_GPL vmlinux 0x93304466 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x93473195 security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0x934a0aee kvmppc_subcore_exit_guest +EXPORT_SYMBOL_GPL vmlinux 0x935a601d i2c_dw_adjust_bus_speed +EXPORT_SYMBOL_GPL vmlinux 0x9360b6e5 regmap_field_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0x937b25d2 gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0x93821546 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x9394aa9f gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x939cf277 __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x93abe252 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x93acabc0 net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x93bb626f of_property_read_variable_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x93d69400 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x93d9648a pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x93e2fba2 gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x93eb4cca __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x93ee0f48 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x93f5eebb __regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x93f65e1c fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x93fcd8d2 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x93ffef0f __class_create +EXPORT_SYMBOL_GPL vmlinux 0x94031d71 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x940331bb fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94096ad0 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x9409a7a8 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x941307dc __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9420d656 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x94289f99 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x942a3f42 dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x94338287 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0x944407bb i2c_new_ancillary_device +EXPORT_SYMBOL_GPL vmlinux 0x944be37b usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x9497787f iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x949a1ca3 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x949df044 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a204c7 sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0x94c1b76d regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x94cf04fd bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x94d1c3dd ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x94d34da2 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x94ddce44 iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x94de85db fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f008ad usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x94f226f9 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950a33b0 of_genpd_add_provider_simple +EXPORT_SYMBOL_GPL vmlinux 0x950a8df8 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x951f93bc iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0x952381f7 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x95327967 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954d0f6d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x95771e2c perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0x957ce04a device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x95ac0299 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95addb22 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x95b6fec4 xive_native_free_vp_block +EXPORT_SYMBOL_GPL vmlinux 0x95b7efab serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c5db69 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x95c8aa24 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x95d316f1 usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x95e44df0 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0x95efa1db pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x95f8479f __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x95ff00c1 tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0x9600ce14 scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0x96049204 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x96096169 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x963f3672 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x964c29e4 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x965230ce pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9661f5b1 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x96693cbb edac_device_handle_ue_count +EXPORT_SYMBOL_GPL vmlinux 0x9690c873 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x969832b1 pm_clk_add +EXPORT_SYMBOL_GPL vmlinux 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL vmlinux 0x96a057ba cpu_feature_keys +EXPORT_SYMBOL_GPL vmlinux 0x96a26c26 __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x96a907a4 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x96b774a8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x96ca63f5 __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x96cc48b9 xive_native_default_eq_shift +EXPORT_SYMBOL_GPL vmlinux 0x96cd37fa devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x96cd8e48 dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x96ce6811 hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0x96efe540 clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0x96f825ce gov_update_cpu_data +EXPORT_SYMBOL_GPL vmlinux 0x96fcbdf8 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x97053efa smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x970d9423 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x97103dae skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x97315539 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x973da60d gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x97410696 __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x97435a83 strp_init +EXPORT_SYMBOL_GPL vmlinux 0x975418d6 led_compose_name +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97627d3c nvdimm_bus_add_badrange +EXPORT_SYMBOL_GPL vmlinux 0x976738f5 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x97695068 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9777b942 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9785a2db iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0x97a89392 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x97af1aa3 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x97b2f5ee proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0x97b3702a inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x97c619c9 devfreq_get_devfreq_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x97caf7f8 led_set_brightness_sync +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97f20811 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x97f9b24b iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0x980661e6 dbs_update +EXPORT_SYMBOL_GPL vmlinux 0x980a2861 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x9810bb1e __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9818da00 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x9828c583 gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x982f3e9f gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983f8e2e btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x9845669b usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x984592e3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985331f6 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9855a697 opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0x98598441 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x985d947f mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x987520e2 usb_find_common_endpoints_reverse +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x98a0fbc6 sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x98acb5c6 spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0x98b6d0ed crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x98df2dac scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0x98e8a79b crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x98ea53f3 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x99122ae3 i2c_dw_configure_master +EXPORT_SYMBOL_GPL vmlinux 0x99139a5f divider_ro_round_rate_parent +EXPORT_SYMBOL_GPL vmlinux 0x9919849e ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x991c6792 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x992338cb fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x99339a08 pinctrl_generic_get_group +EXPORT_SYMBOL_GPL vmlinux 0x9937c75f icc_get +EXPORT_SYMBOL_GPL vmlinux 0x993bd300 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x994ff700 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x9952eeb2 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x9953ab8b ata_host_put +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9967e870 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x9979ab93 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x99895bd9 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x999d0558 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x99a54382 uart_console_device +EXPORT_SYMBOL_GPL vmlinux 0x99a6d635 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x99c92917 spi_res_alloc +EXPORT_SYMBOL_GPL vmlinux 0x99ebc7be tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x99f43c8d pci_hp_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x99f8174d __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x9a05faac pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a170932 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9a1eb46f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x9a2527f5 rio_map_outb_region +EXPORT_SYMBOL_GPL vmlinux 0x9a26713a pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x9a3bb1fa pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x9a3c64d3 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a437458 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x9a4b0d09 pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0x9a4c2d15 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9a89e5c7 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9a8c46e9 devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x9a959e3e regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9a987b1f check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad146e1 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x9adcae53 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af4f033 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9af70bab acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b1c0453 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9b32cff9 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x9b422cfa ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x9b44b701 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b8804e0 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9b92d16e pinctrl_gpio_set_config +EXPORT_SYMBOL_GPL vmlinux 0x9b99af59 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9baf7c7c tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9bb09abc rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9bbe023e devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x9bc42fbd sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9bd2f0ed devm_of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x9bde79bc xive_tima_os +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c1af7f7 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x9c3e22a5 pci_iomap_wc_range +EXPORT_SYMBOL_GPL vmlinux 0x9c405b13 pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0x9c40e32c ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x9c663403 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on +EXPORT_SYMBOL_GPL vmlinux 0x9c937ced devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0x9ca6bba0 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x9caa6a8a devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x9caf3531 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x9cbb5083 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x9cbcf111 dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc84a0c xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x9cd12f48 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x9ce87af6 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x9cf37c44 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbfbd ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9d211218 pinconf_generic_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x9d2cef3e thermal_zone_of_get_sensor_id +EXPORT_SYMBOL_GPL vmlinux 0x9d3248b3 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9d340c7a hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9d375071 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9d523dcf phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9d6966e0 sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0x9d6cbaa1 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x9d6e97e0 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9d79f142 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9d7af179 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x9d7d6d13 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x9d82e9a4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d92ef35 get_device +EXPORT_SYMBOL_GPL vmlinux 0x9d94a6bb security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9dad1d65 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0x9dad4fc6 iommu_tce_table_get +EXPORT_SYMBOL_GPL vmlinux 0x9dc29646 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x9dc46233 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0x9dc8917d cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x9dd08a2d handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x9dd1c619 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x9de62a16 memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x9df0cff4 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x9df34ec7 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9df58956 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x9e035e4e usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e078a97 crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x9e097d0b blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9e1e5f47 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4d9e65 gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9e4f2243 crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0x9e63e434 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x9e76d561 __mdiobus_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0x9e7dc24f bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x9e9f50de cpufreq_table_index_unsorted +EXPORT_SYMBOL_GPL vmlinux 0x9e9fee9e wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x9ea27fb8 acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0x9eab2d36 fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x9eae2c58 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x9eaeaa81 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x9ec1f364 kvmppc_subcore_enter_guest +EXPORT_SYMBOL_GPL vmlinux 0x9ecd7fae devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef1b5fe usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ef44b1f regmap_mmio_attach_clk +EXPORT_SYMBOL_GPL vmlinux 0x9ef58bc5 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9ef66a3f __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0x9efaa688 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9f1d70ac mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x9f6c3d19 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f86b75c vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f9387bd nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x9f96e78e fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0x9f9b54e6 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x9fa334cb pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x9fb31622 rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x9fbf0807 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fce983f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa000bf26 pinctrl_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xa00a7a79 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0xa03f3ac9 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa06141a2 pwm_adjust_config +EXPORT_SYMBOL_GPL vmlinux 0xa0629643 extcon_set_property_capability +EXPORT_SYMBOL_GPL vmlinux 0xa068bf17 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa069271a dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0xa070a010 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xa076c4e7 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xa081aa69 sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xa084038c __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xa092d7aa spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xa0aa01c9 net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa0d02457 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0ee131d trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xa1022b70 dev_pm_opp_get_max_volt_latency +EXPORT_SYMBOL_GPL vmlinux 0xa10e40ac usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xa141ed51 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xa142f9d6 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa146c17e subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa14d1a82 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa1554027 proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0xa17c9eb1 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0xa198a9a5 dev_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xa19fc870 set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa1ac35b9 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0xa1c4449a perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0xa1cb2b46 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xa1d70a03 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xa1d8004a videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xa1e449fe dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa1ed4e4f tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f01216 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xa1fcb45a regulator_list_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xa206df02 clk_divider_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa2171606 device_register +EXPORT_SYMBOL_GPL vmlinux 0xa2214c4c __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xa2303cb4 dev_pm_opp_remove_all_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xa24482f1 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa2599382 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa275d13d phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0xa2855745 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xa28b004e tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xa295afd5 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa298af95 xive_native_get_queue_info +EXPORT_SYMBOL_GPL vmlinux 0xa2ab2599 cxl_update_properties +EXPORT_SYMBOL_GPL vmlinux 0xa2bbaa28 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xa2bd016d tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0xa2d57ff4 blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0xa2e0d211 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa2eb3ec1 iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0xa2f4efb6 usb_intf_get_dma_device +EXPORT_SYMBOL_GPL vmlinux 0xa2f6946b inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL vmlinux 0xa2fea9c0 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xa3027c02 wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0xa307c9bb open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0xa30f6dc0 blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xa3165da5 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xa319200f device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xa321624f led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0xa3224af3 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa322f228 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xa3234065 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa32e8f85 __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0xa33079c4 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xa33468a0 dev_pm_opp_get_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xa3356a28 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xa33d91a8 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xa35a2d94 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xa379e43f metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0xa37fb869 of_pci_dma_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3a52296 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa3b56555 hpte_page_sizes +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3da8e68 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xa3e687a6 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa3f6d87c eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0xa404ad85 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xa4104a4a hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa415a4d8 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa41d4574 gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0xa42f79a4 __tracepoint_vfio_pci_nvgpu_mmap +EXPORT_SYMBOL_GPL vmlinux 0xa434b411 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0xa43c918f crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa44d40d8 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4519b61 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa4628226 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa47d3cc7 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa482b2c1 l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4c09f6b sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xa4c29e32 clk_hw_get_name +EXPORT_SYMBOL_GPL vmlinux 0xa4d22181 sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xa4e210ce iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xa4e833c1 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa5092428 kvm_alloc_hpt_cma +EXPORT_SYMBOL_GPL vmlinux 0xa50c359e dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xa516e222 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context +EXPORT_SYMBOL_GPL vmlinux 0xa53585a2 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xa5396c55 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xa54b0380 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa554f9a3 dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xa556c0d0 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xa561c3cf devm_clk_hw_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa56fb062 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xa57499dc fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa57f16aa dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xa58bbd45 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0xa591c3b9 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xa5a260ca nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b80c6e fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0xa5b9e123 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xa5bc71a0 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xa5d7c388 pstore_type_to_name +EXPORT_SYMBOL_GPL vmlinux 0xa5de7707 fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0xa5edda58 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f19ae3 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa60839bf __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa61b4384 cpufreq_policy_transition_delay_us +EXPORT_SYMBOL_GPL vmlinux 0xa61d8a8a phy_start_machine +EXPORT_SYMBOL_GPL vmlinux 0xa626c6b3 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xa62ae3ed pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xa62d67f1 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xa634900c regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa65f9e40 nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xa66033c5 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa6719e25 phy_speed_up +EXPORT_SYMBOL_GPL vmlinux 0xa684bac9 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0xa68f18e6 iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b45025 genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0xa6b7c008 vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xa6c2782d spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xa6c648bd blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0xa6cf5680 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0xa6d1e06f splpar_spin_yield +EXPORT_SYMBOL_GPL vmlinux 0xa6e01da6 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa714e80e ethnl_cable_test_result +EXPORT_SYMBOL_GPL vmlinux 0xa7217efd percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xa724c63a bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0xa72c84ce cxl_afu_get +EXPORT_SYMBOL_GPL vmlinux 0xa72d8d1e crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0xa735ec92 iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0xa741b6e8 thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xa74e71a8 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa76193ba rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0xa77651d1 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xa782cef5 __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xa7ab5415 vas_register_coproc_api +EXPORT_SYMBOL_GPL vmlinux 0xa7b67ff8 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa7b7c248 wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0xa7eb1240 tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0xa7ec9b5c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xa7f1a885 blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xa7f5f739 of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0xa7f7353a posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa7f965b6 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa808b51f serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xa8162ccf virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0xa82b0a21 pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa82ba7be gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87f5f63 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa889d2f7 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xa8b75327 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xa8bc1596 led_colors +EXPORT_SYMBOL_GPL vmlinux 0xa8f1bde4 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xa906b4d0 nvdimm_flush +EXPORT_SYMBOL_GPL vmlinux 0xa92e2c4a devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa9302106 pci_ecam_map_bus +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9347a64 usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xa93c9792 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xa93d60b0 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa945f23c usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa971f577 edac_pci_handle_pe +EXPORT_SYMBOL_GPL vmlinux 0xa979ecbe security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0xa98e69a1 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xa999327d of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a0ee26 pnv_pci_get_device_tree +EXPORT_SYMBOL_GPL vmlinux 0xa9b8ba70 xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0xa9bdd5c1 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xa9c715d1 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9d4ab1f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e7647e sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0xa9e943d4 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xa9ec0985 blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0xaa1758c5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xaa1884a0 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xaa1cf655 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xaa1f05a3 sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa2862b9 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xaa330892 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0xaa3af4e4 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xaa46c070 dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa981b81 gov_attr_set_get +EXPORT_SYMBOL_GPL vmlinux 0xaaa50d92 irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa5ec9 cpu_latency_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xaab11399 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xaabdb8ae dmaengine_desc_get_metadata_ptr +EXPORT_SYMBOL_GPL vmlinux 0xaac693d8 gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0xaad0265a fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xaadc21b4 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xaae866c9 pinmux_generic_get_function_groups +EXPORT_SYMBOL_GPL vmlinux 0xaaf8228f ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xab0c30f2 iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0xab0daeda dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xab1a517c regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xab1efe7b phy_speed_down +EXPORT_SYMBOL_GPL vmlinux 0xab2f8494 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xab4b0566 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xab64e0e5 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xab6cb0ff subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xab72e25f irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0xab94d854 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xabb0b3d0 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc6cc65 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xabd26c0e crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xabeda6a0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL vmlinux 0xabfc0d91 wm8998_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xac00a55e strp_process +EXPORT_SYMBOL_GPL vmlinux 0xac01d152 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0xac035cdb device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xac0624b4 vfio_spapr_iommu_eeh_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xac367e7b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xac4a82fa sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xac845bb3 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0xac89d536 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xac8aac3f gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xaca2ca4f phy_select_page +EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put +EXPORT_SYMBOL_GPL vmlinux 0xacb68e38 devm_clk_bulk_get_all +EXPORT_SYMBOL_GPL vmlinux 0xacd2b1fd peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0xace9034b devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xacf234f2 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xacf9c08f apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad066a20 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xad0ce2a1 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xad12bb7a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xad32d316 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xad35fe33 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xad4140e8 dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0xad44971a fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xad47f1db of_pm_clk_add_clk +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad66ceac regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xad7ab3b4 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xad7c8915 __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xad7ffbc4 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0xad8225f6 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xad829b01 ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0xad83e646 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xad876160 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xad90a4b1 pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae04aa24 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xae07f35f rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xae241442 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xae26356d regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xae2bf5bc nvdimm_clear_poison +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae319e4c ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xae31d277 srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae4334c1 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xae43692c of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xae442152 dawr_force_enable +EXPORT_SYMBOL_GPL vmlinux 0xae47fff7 __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae772064 vfio_external_group_match_file +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7d7e92 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xae7e5c7a xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xae87cad0 memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xae8f45d9 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaec127a5 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaecaabb8 is_xive_irq +EXPORT_SYMBOL_GPL vmlinux 0xaece37f0 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xaed28ea1 cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0xaf07d84d gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xaf0c8e59 update_time +EXPORT_SYMBOL_GPL vmlinux 0xaf1ce667 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xaf1e10da opal_int_set_mfrr +EXPORT_SYMBOL_GPL vmlinux 0xaf1f70dd usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xaf20a7f0 pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0xaf2cbe01 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xaf3ab090 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check +EXPORT_SYMBOL_GPL vmlinux 0xaf592888 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xaf5d1ba8 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xaf65a9ac get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xaf6b625d kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xaf81e93e clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0xaf82f3ae regmap_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xaf88b086 regulator_set_voltage_rdev +EXPORT_SYMBOL_GPL vmlinux 0xaf9ee020 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0xafb769ad skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0xafba0eef ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafc4f39a dev_pm_opp_set_rate +EXPORT_SYMBOL_GPL vmlinux 0xafca4412 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xafdea92b rio_mport_initialize +EXPORT_SYMBOL_GPL vmlinux 0xaffad695 bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0xb006ab07 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xb0298b45 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb02a98b2 crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb02e08f2 vmalloc_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xb0326b94 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xb03fed40 fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0xb042e3c9 irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xb04e3b2c pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xb0539d48 net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0xb05ed89b usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xb06634ec opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb079b982 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0xb07eb779 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xb081db61 rio_del_mport_pw_handler +EXPORT_SYMBOL_GPL vmlinux 0xb08f0a96 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xb0a4cccb sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xb0a4ffad adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb0b027c4 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bb18bb crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb0bd14de sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0db4833 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb0dbf66b switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0xb0e2c8e8 setfl +EXPORT_SYMBOL_GPL vmlinux 0xb0ecc0b6 pci_parse_request_of_pci_ranges +EXPORT_SYMBOL_GPL vmlinux 0xb0f73f8e __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb0fe5efe xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb10a71b3 gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb13c113c fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1492175 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xb14d56eb of_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xb151ffab is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xb154e00a pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb17e0c1f irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0xb1832d90 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0xb183aee5 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1a02942 icc_nodes_remove +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c96c4d tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb1cbf2f9 regulator_set_active_discharge_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb1d45f26 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xb1d9f10b sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e6cbc5 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xb1fa0559 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xb2071a66 __spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xb21dfa21 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb225c3ea nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xb22b0a2c tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb254be96 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb25603b8 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xb2586b1a mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0xb264dd6f bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xb2668e89 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb282d287 mmc_sanitize +EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xb2a1c8bf static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb2a653fc confirm_error_lock +EXPORT_SYMBOL_GPL vmlinux 0xb2b8813d sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb2bfc425 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2dc434c shared_processor +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ed7cd4 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0xb2eef755 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb304844c __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb316b13a strp_stop +EXPORT_SYMBOL_GPL vmlinux 0xb33053d8 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb3516927 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xb35ff1d9 nf_route +EXPORT_SYMBOL_GPL vmlinux 0xb3623225 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb3697565 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xb37d098c ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0xb3874151 scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0xb39aca9f blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb39ee41a l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb3a90931 devm_clk_hw_register +EXPORT_SYMBOL_GPL vmlinux 0xb3b515eb ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xb3c97dc3 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xb3da753a __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xb3eab344 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xb3fa789f device_match_name +EXPORT_SYMBOL_GPL vmlinux 0xb3fdbaa2 serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb41b3664 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0xb41b7fb5 nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0xb42697bb devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb43af545 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb43bc2e8 of_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb44ee4aa pnv_ocxl_free_xive_irq +EXPORT_SYMBOL_GPL vmlinux 0xb486a212 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0xb49a41b7 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bcc673 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4cff9e6 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0xb503c439 clk_hw_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xb50a59db pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb5131e9f unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xb51b95a3 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5219b2a tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xb529a1cb hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb53df2e3 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xb5421b83 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0xb55ba96e scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xb5784fae serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb57acff0 crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5ac0ba0 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5c4ddb6 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xb5cc3b2e pinctrl_parse_index_with_args +EXPORT_SYMBOL_GPL vmlinux 0xb5df288b kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xb5f61a3e ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xb5f8c4a5 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xb6053fdf blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb61b2322 crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0xb624d149 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63c682b phy_modify +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb6490b11 pnv_power9_force_smt4_release +EXPORT_SYMBOL_GPL vmlinux 0xb64f9964 net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb65af0cb __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb65ce27a phy_calibrate +EXPORT_SYMBOL_GPL vmlinux 0xb6723851 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb6888188 klp_shadow_get_or_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6a4afa9 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb6a4e7c2 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0xb6b52713 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xb6b83982 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xb6c3fd6c __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xb6cb1cef phy_reset +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6f22721 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xb6fbd250 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xb71616a5 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xb71ca131 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb733ec86 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups +EXPORT_SYMBOL_GPL vmlinux 0xb7373c5d pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xb77a7ea2 blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xb77b9a49 clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xb78cc0d3 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb790a68c trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0xb79922e9 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7a4f509 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7d17fa0 pgtable_cache +EXPORT_SYMBOL_GPL vmlinux 0xb7e34509 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xb7fa8659 extcon_get_state +EXPORT_SYMBOL_GPL vmlinux 0xb802d90f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xb81f89df __xas_next +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb825336e badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0xb82d43d3 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb82f6e90 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xb8319fc2 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xb8505e11 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL vmlinux 0xb855bfe9 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb86ab98e netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xb86ed5ec debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xb8755719 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xb87b2f28 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xb87e4486 store_sampling_rate +EXPORT_SYMBOL_GPL vmlinux 0xb888cedc sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8a46529 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xb8a93ed9 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xb8b026a7 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3e55 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb8eaf5a0 __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xb8ec6cb7 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xb8edffe3 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xb9176847 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xb923fa45 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xb9319ce1 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xb94cd6b3 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb95875ba xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0xb95b0ce1 do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0xb96354b7 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb98b1c02 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0xb995a7bb pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb99df747 xive_native_has_queue_state_support +EXPORT_SYMBOL_GPL vmlinux 0xb9a44a23 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb9a5877c of_msi_configure +EXPORT_SYMBOL_GPL vmlinux 0xb9a8eae8 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bfee1a pnv_ocxl_get_pasid_count +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d8c630 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xb9ecac50 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb9f6cbde is_pnv_opal_msi +EXPORT_SYMBOL_GPL vmlinux 0xba04c3ff device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xba0edb65 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba1c7e85 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL vmlinux 0xba3ae5f3 ata_scsi_dma_need_drain +EXPORT_SYMBOL_GPL vmlinux 0xba569bae dm_put +EXPORT_SYMBOL_GPL vmlinux 0xba5712c5 fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0xba8c19e4 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xbaa3c425 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad63de1 phy_restore_page +EXPORT_SYMBOL_GPL vmlinux 0xbad9d1d7 pci_remove_device_node_info +EXPORT_SYMBOL_GPL vmlinux 0xbaf6800d of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbafa6beb gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb115736 sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0xbb1d1fac crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbb47053a extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xbb494709 usb_of_get_device_node +EXPORT_SYMBOL_GPL vmlinux 0xbb6242c4 mctrl_gpio_init_noauto +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb8102eb device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xbb895a2d power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xbb93eee7 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xbb9b3298 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbbc77e78 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0xbbd1168e tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xbbd9b421 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xbbe93d1c pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0xbbeb82be bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbbf671a8 spi_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xbc00cede unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xbc1ba90a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xbc1fdefe regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbc311b2c __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xbc3cf2f4 scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xbc49a320 component_del +EXPORT_SYMBOL_GPL vmlinux 0xbc4b57ea usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xbc4cfb1b sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xbc508107 usb_phy_set_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xbc6a0a4e gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc7d4580 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xbc8eef2f ata_qc_get_active +EXPORT_SYMBOL_GPL vmlinux 0xbc954220 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdb3381 dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0xbcdcd0b5 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce013d1 tps65912_device_init +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd13c3b9 devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbd1e4fa7 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbd2d8f02 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xbd2f9586 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xbd3b662e driver_find +EXPORT_SYMBOL_GPL vmlinux 0xbd3fcbdd rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4a5c98 component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0xbd4b74e4 memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0xbd59f2be __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xbd5d3058 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xbd6b2226 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xbd71ba3e pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd723a9d thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbd761ac7 find_module +EXPORT_SYMBOL_GPL vmlinux 0xbd76cc05 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0xbd777fec exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbd7a8a01 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbd95cb00 serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0xbd999bb4 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbd9b14cc serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0xbd9f0625 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xbda4c054 crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0xbdaf77ee sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xbdbb8362 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xbdbc9d2e debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xbdc9c76d pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xbdd75893 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbe02dbf2 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xbe0d19ac tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xbe119212 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbe1f21f3 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xbe2c94f2 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xbe3428ca shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xbe35c52c klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0xbe361f89 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xbe49bb39 __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0xbe63b5e5 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7931f9 l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbe8137f3 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xbe851293 pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea259a6 clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0xbea42aed fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea63e77 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xbea93574 devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xbeb94759 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xbebc66c2 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbec0e6b0 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xbed322ce platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbee8e9d4 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xbef67ea3 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xbef7ab7c ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0xbf01ef43 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf297bfa blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0xbf349b59 kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0xbf42536f clock_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf447ba7 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf4c7b51 irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0xbf530f59 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf8f0d19 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xbfba0b9b iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0xbfbb3108 i2c_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbca9fa __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xbfbee6bb nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xbfd08bef addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0xbfd4f9a4 iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0xbfe072fc cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfedf46b __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0xbfef3024 blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0041935 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xc0130c0b edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xc01513d0 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xc03dfb17 stmpe811_adc_common_init +EXPORT_SYMBOL_GPL vmlinux 0xc0587e20 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xc05c1819 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06d0d79 __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc07301c6 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc07c0a93 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xc0861f58 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xc087b284 nvdimm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc092881d of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0a9a680 vfio_virqfd_enable +EXPORT_SYMBOL_GPL vmlinux 0xc0b64a4f led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xc0c91068 devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0xc0e44cad dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f3dad1 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc1304ec4 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc14ab1b8 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xc1510fde phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc16ae93a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17a048e i2c_parse_fw_timings +EXPORT_SYMBOL_GPL vmlinux 0xc1870d68 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xc1963297 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc19bb426 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc19ea620 report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0xc1d06e29 spi_mem_dirmap_create +EXPORT_SYMBOL_GPL vmlinux 0xc1d64b3c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL vmlinux 0xc1e0de9a skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0xc1e90f7e pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc1ed9c89 cpu_latency_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xc1eeef3b sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xc1f05a37 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc1f0ab84 __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0xc2072c56 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xc20c8773 devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc21cec6c iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0xc2261bc4 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc238e5dd debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc24095ed iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc245a39d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc254e189 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xc25f7ee2 do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0xc2638c60 blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0xc267cbf0 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc2754e9e cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc27ae0e3 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2842d7c devm_of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xc289e46d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc28ac942 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0xc299ada1 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0xc29bb4f8 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xc29e30ff __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc29e6d8b of_i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL vmlinux 0xc2a39acb regulator_set_soft_start_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2aa338c perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xc2af1d87 phy_modify_changed +EXPORT_SYMBOL_GPL vmlinux 0xc2b17bb8 clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0xc2b3d34b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xc2b61e40 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc2bf78b9 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0xc2c275ff opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xc2dada4a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc3106fef lochnagar_update_config +EXPORT_SYMBOL_GPL vmlinux 0xc310b9f6 rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0xc319e155 klp_get_state +EXPORT_SYMBOL_GPL vmlinux 0xc31cfcf0 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xc332fc3b virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc3944258 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xc3b3e57d extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3c69d88 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc3cfc96d led_update_brightness +EXPORT_SYMBOL_GPL vmlinux 0xc3d44350 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e17af2 regmap_fields_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3f07e11 vas_paste_crb +EXPORT_SYMBOL_GPL vmlinux 0xc3fa9407 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc402e25e dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc412fdf3 radix__flush_all_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc426c51f klp_shadow_free_all +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43e95e0 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc44238b2 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc44eae24 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4550f63 gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc46324f6 dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0xc46b5e00 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xc4712df3 crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc489aa09 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL vmlinux 0xc4a55226 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xc4a610d6 sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0xc4a72936 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xc4b6e2a7 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc4e7c425 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xc4eafea9 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc50da9b4 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xc50e65c7 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xc52ff4dd ethnl_cable_test_pulse +EXPORT_SYMBOL_GPL vmlinux 0xc53e1b79 iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL vmlinux 0xc5604800 clk_set_rate_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc565f5cd ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xc569d8ce __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0xc56e6931 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array +EXPORT_SYMBOL_GPL vmlinux 0xc5798c9a fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xc57e1634 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0xc58515d4 devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0xc58574c7 irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc5996c8c pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0xc59c9461 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0xc5a90ab4 spi_mem_exec_op +EXPORT_SYMBOL_GPL vmlinux 0xc5be77b2 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0xc5cb4521 pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xc5e3d65f cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc5edf41c regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc5ef2207 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xc5f45562 iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0xc5fa40e9 device_match_any +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617593d crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc637b285 udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0xc6462a44 housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc65d3ce1 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc67899a2 devm_mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68afddf init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xc693b919 nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xc69617e7 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69cbbe6 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6acce3f devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc6cf11d0 vas_win_close +EXPORT_SYMBOL_GPL vmlinux 0xc6d45011 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xc6deb3a2 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc6f47826 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc6f8ab0e uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xc6fcf592 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0xc6fdab7c ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xc70ce0c6 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc734e392 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xc7400c94 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc74143a4 dev_pm_opp_of_remove_table +EXPORT_SYMBOL_GPL vmlinux 0xc74b272d vas_tx_win_open +EXPORT_SYMBOL_GPL vmlinux 0xc75200dd wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xc75cebad crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xc75dfc04 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0xc76fb2dc blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xc7790278 cs47l24_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc77c57c9 pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0xc784b0d8 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xc7880a2a pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xc7896247 decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a9e2de dev_pm_domain_set +EXPORT_SYMBOL_GPL vmlinux 0xc7b3344e blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0xc7c5f296 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xc7cef02c dev_pm_opp_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc7d29e86 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xc7d42600 devm_pinctrl_register_and_init +EXPORT_SYMBOL_GPL vmlinux 0xc7e376d4 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc7e3aaa0 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xc7e3afc6 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xc7f0002d iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc8059f97 dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0xc80ac5b1 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xc820b712 clk_hw_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc82ce091 sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0xc84e928f __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0xc8594d3d reset_control_acquire +EXPORT_SYMBOL_GPL vmlinux 0xc862fada sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0xc86fa402 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xc8762fe0 pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0xc87f2074 spi_mem_default_supports_op +EXPORT_SYMBOL_GPL vmlinux 0xc88e9542 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0xc8932714 bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8b88d9b __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0xc8c4d96f perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0xc8cf7591 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xc8d54bd7 pm_clk_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc8d60489 cpufreq_driver_resolve_freq +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e0bc57 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xc8e79147 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0xc8e96602 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xc90ef84b blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc919bedc ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xc9275ee7 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init +EXPORT_SYMBOL_GPL vmlinux 0xc9426f98 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xc943c741 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc947d8bc md_run +EXPORT_SYMBOL_GPL vmlinux 0xc94bbf6f crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95929b6 dev_attr_ncq_prio_enable +EXPORT_SYMBOL_GPL vmlinux 0xc95a7d18 dev_pm_qos_update_user_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xc95b6e02 kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc968db11 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0xc97ebcca get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc989073a dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xc9928d2a static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0xc9a8093d rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc9bce040 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xc9c6a27a xive_native_set_queue_state +EXPORT_SYMBOL_GPL vmlinux 0xc9e78a23 fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f8833a dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xca058f7f __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xca12e5f5 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xca1a80e1 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xca4b5c51 idr_remove +EXPORT_SYMBOL_GPL vmlinux 0xca4c1cf3 blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0xca564b71 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xca61ec5e gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xca67cbee phy_set_mode_ext +EXPORT_SYMBOL_GPL vmlinux 0xca7bd88f sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca7e02a8 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xca83219c pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xca939fa0 cpufreq_driver_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0xca94bf41 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xcaa6ea29 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xcaa9fe2c firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0xcab6d4d6 tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xcaba6d95 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac81d6c arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xcacc4bc1 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xcadab7df blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0xcaedf664 skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xcb0bb61b led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1e1225 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcb34ccb9 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcb418b85 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xcb42e147 of_clk_hw_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xcb535924 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb676992 serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0xcb8d750e dev_pm_opp_set_clkname +EXPORT_SYMBOL_GPL vmlinux 0xcb965b3b perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0xcba17ded tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0xcbb76284 fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0xcbbe9928 ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcbbff6e8 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xcbdf3f2e sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbf973bf ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xcc0045c6 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0xcc0d097b cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc20de18 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xcc25798c vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc3984f3 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc3edd8f eeh_pe_state_mark +EXPORT_SYMBOL_GPL vmlinux 0xcc5a0014 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcc5eb573 thermal_zone_get_slope +EXPORT_SYMBOL_GPL vmlinux 0xcc6ebdce iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0xcc765276 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xcc88e4d7 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xcc8ff820 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xcca778b7 dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccc3d884 sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0xcce278f1 dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xcd08789d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xcd1d79b7 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd29b1e0 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xcd340b79 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd3c26a1 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xcd40e9ae devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xcd5e3575 of_property_read_variable_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd7250b5 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xcd7608a2 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xcd7c45a3 tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcd7e9b73 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb6c859 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xcdbe21da find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0xcdc5dc3d gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd1a841 xive_tima +EXPORT_SYMBOL_GPL vmlinux 0xcde17893 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xcde65f43 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xcdf9248b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xcdfb62ee crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0xce1f2184 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xce27ae5e pinctrl_generic_get_group_name +EXPORT_SYMBOL_GPL vmlinux 0xce360355 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xce4f90c7 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0xce5f974b pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce78f3a9 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0xce7ab4de of_genpd_remove_last +EXPORT_SYMBOL_GPL vmlinux 0xce88a5d7 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0xce8ae7f3 blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xce93032b ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xce976aef devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xce9ed24e tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xceb4b99c klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xcebcb11f kvmppc_inject_interrupt_hv +EXPORT_SYMBOL_GPL vmlinux 0xcecf6e1a edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0xced2138c edac_device_handle_ce_count +EXPORT_SYMBOL_GPL vmlinux 0xced73e63 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee4c843 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xcee88e7a of_overlay_fdt_apply +EXPORT_SYMBOL_GPL vmlinux 0xcef11a1a l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0xcef21162 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xcf084676 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xcf160269 fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0xcf1abf87 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xcf28f55e trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xcf406fdd tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xcf4e4538 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xcf4f937e dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf58ab2f serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0xcf59f91c kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xcf5ee11b __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xcf6e4772 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xcf882b36 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0xcf8b5a34 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xcf8dcef4 i2c_new_scanned_device +EXPORT_SYMBOL_GPL vmlinux 0xcfa90fa8 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcfae5c66 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xcfc1d61f lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfd66601 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xcfecc12e irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xcfef1cf2 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xcff6f1c2 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd00a1f4f devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xd03a43bd badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0xd03c930d pin_get_name +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd0565ee4 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xd05aba8e call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xd05c3581 bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0xd05d6699 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd08af968 tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0xd09d6e47 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd0ae63ca __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xd0ae872a devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xd0bea361 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c22ef9 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd0d4ae6e ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0eac674 of_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xd0eeaeec set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0xd1118e44 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd1197ef6 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd129e31a of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xd1356f4a device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xd13610ab __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd13b45c1 gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xd13eb606 of_reserved_mem_device_init_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd16329a0 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd16420a3 l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd164379f virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd172474f mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xd17a71f4 tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xd188a2ac eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0xd191223e devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0xd1ba8d07 tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0xd1bc1ee7 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xd1bdf043 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd216cd4b dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd2296121 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xd243a52c inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xd2455f66 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xd24dd23a __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd2640fd4 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xd265d42e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xd26ab327 devfreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2794a74 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd2a472af device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0xd2a81143 i2c_new_dummy_device +EXPORT_SYMBOL_GPL vmlinux 0xd2ac3e16 balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xd2ae0458 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2b6b8dd dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0xd2caf7bf sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL vmlinux 0xd2f1e984 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xd2fa1b91 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd2fdb089 mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0xd314f5d0 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd31edd5b fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0xd327f486 sdio_retune_release +EXPORT_SYMBOL_GPL vmlinux 0xd339a8db spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xd355bd9f __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xd35614fa devm_irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd359c04a console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd362b9aa tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xd38f724e dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd39ce6ef pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0xd39e8406 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3a3124c pwm_capture +EXPORT_SYMBOL_GPL vmlinux 0xd3a5e9f8 xas_pause +EXPORT_SYMBOL_GPL vmlinux 0xd3b22dbd vas_init_rx_win_attr +EXPORT_SYMBOL_GPL vmlinux 0xd3c27ffb pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0xd3c5be7a transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xd3c8fe5f tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0xd3e3f922 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd3ea6c2c crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40e955f nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xd422fc47 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xd4359deb dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd46a563f extcon_get_edev_name +EXPORT_SYMBOL_GPL vmlinux 0xd479e1aa gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xd47e9db4 devm_thermal_add_hwmon_sysfs +EXPORT_SYMBOL_GPL vmlinux 0xd483dcde clk_multiplier_ops +EXPORT_SYMBOL_GPL vmlinux 0xd4a3b65e pnv_ocxl_spa_setup +EXPORT_SYMBOL_GPL vmlinux 0xd4b3c5d4 devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c8ed8e sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd50047ba register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xd5067306 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xd5069203 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xd51df697 __usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd52bb276 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value +EXPORT_SYMBOL_GPL vmlinux 0xd54131ec regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd55a4f2a __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55c30b1 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL vmlinux 0xd5ad2e6f mmc_send_status +EXPORT_SYMBOL_GPL vmlinux 0xd5afa49b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xd5cc3d16 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0xd5d227f0 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd5e6befa aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0xd5f724a5 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd5fc2755 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0xd62b92a4 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd62fdcc7 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd641d248 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd64851c0 __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd653b126 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xd670899d genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd679649e irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xd696d7f1 pm_clk_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd6970a61 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xd69be626 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6abdad8 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd6b8bfc5 dev_pm_opp_get_of_node +EXPORT_SYMBOL_GPL vmlinux 0xd6bf625a btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xd6cbf181 pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0xd6e6f469 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xd6e88206 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xd6fa3add gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd70963e8 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd70f08fa rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xd712ace9 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd719fd18 devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0xd71b312b pnv_ocxl_get_tl_cap +EXPORT_SYMBOL_GPL vmlinux 0xd7211b04 scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0xd7483bd9 md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xd74a1806 iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0xd75443af kvm_free_hpt_cma +EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76b5cac sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd76e4a35 ioremap_phb +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd779fcc7 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xd77ba710 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd77f9e22 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0xd7a02ea2 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xd7cc4417 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7ce7508 irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7d0da74 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xd7d25ba2 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd7ed3b4f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xd7ed8b86 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd7f7d81a xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xd7fd649e bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd81b87b4 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd8428f85 mmc_pwrseq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd8513192 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd85339a1 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd8665b45 vas_rx_win_open +EXPORT_SYMBOL_GPL vmlinux 0xd870d3a1 nvdimm_in_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xd8721e7d br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0xd87f315a sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd882b1fd regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xd88d2afa pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xd88f1a0c nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0xd892eefa device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xd8942643 ata_pci_shutdown_one +EXPORT_SYMBOL_GPL vmlinux 0xd8988e7b tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xd899b573 devm_thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd8a98ce3 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xd8b16a40 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0xd8c0731d ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd8c64adc pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd90f808b ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd9177190 genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL vmlinux 0xd91a6324 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xd91d4f4e pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xd91e744e fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xd925be1e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xd941cf54 trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0xd94c6d4d sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9736fdc devres_find +EXPORT_SYMBOL_GPL vmlinux 0xd975bf3a __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xd97c653a irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xd98b92c4 nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0xd98df72d crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xd98f8bff skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0xd99dc7b9 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xd9a28981 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xd9b35d9a screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0xd9bd2a03 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xd9bffda2 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd9e0df15 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9f54d18 of_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xd9fad3dd devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xda05ce24 pinmux_generic_get_function_name +EXPORT_SYMBOL_GPL vmlinux 0xda20c40f security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0xda2fcbc7 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda447f96 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xda484429 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xda50fd9d devm_pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xda5ab4e1 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xda7d7618 pinconf_generic_parse_dt_config +EXPORT_SYMBOL_GPL vmlinux 0xda80e5fb crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdaa08f9f blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xdaa85b39 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdade3004 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdaf8d4eb platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xdafccbee regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdb10dd9a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xdb14eb56 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb36a535 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xdb3794ce emulate_vsx_load +EXPORT_SYMBOL_GPL vmlinux 0xdb3f25b5 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xdb4473c8 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xdb53af61 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xdb5b7333 __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0xdb5fcf10 fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0xdb61857d srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb92b5eb get_dev_pagemap +EXPORT_SYMBOL_GPL vmlinux 0xdb9b49fa phy_check_downshift +EXPORT_SYMBOL_GPL vmlinux 0xdba24cf9 split_page +EXPORT_SYMBOL_GPL vmlinux 0xdbba7a9d perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0xdbc2e744 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xdbc72ac2 xive_native_alloc_irq_on_chip +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc092c6e hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xdc0b2b5b opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xdc0e3a76 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xdc203eea dev_pm_opp_detach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xdc34a927 __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work +EXPORT_SYMBOL_GPL vmlinux 0xdc4ad1dc apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xdc4ba1d4 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xdc4c0f65 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xdc531b5e blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xdc5391be serial8250_do_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc950cc3 __regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9950e7 icc_link_create +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca70c6e gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0xdccec5ce da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xdce384cb xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xdce40b96 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0xdcece47a pm_genpd_add_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xdd021f21 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd161ae1 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0xdd29400e of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xdd2db446 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd6d6c6c devm_of_icc_get +EXPORT_SYMBOL_GPL vmlinux 0xdd85fa85 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd8e9a2b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xdd94b810 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc365c5 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xdded6672 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xde0a431c edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xde130d28 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xde1650a1 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xde2631b6 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xde373432 __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xde3cb365 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xde742efc crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0xde75ed73 memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0xde8569dc ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xde901311 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0xde972256 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xde999c62 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeb4651f crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0xdedbcbb3 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xdee38120 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdeff025f debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xdeffa0a7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xdf02c579 nvdimm_has_flush +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1e9cfa btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf344011 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xdf3dc4f5 pm_genpd_remove_subdomain +EXPORT_SYMBOL_GPL vmlinux 0xdf48fa63 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xdf4ba9ca pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xdf53d35e led_blink_set_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xdf5fdf02 kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0xdf696cd4 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0xdf6aa011 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xdf8d9167 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdf9f29d6 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xdfacf71e nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0xdfb2e374 dmaengine_desc_attach_metadata +EXPORT_SYMBOL_GPL vmlinux 0xdfc60b43 blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set +EXPORT_SYMBOL_GPL vmlinux 0xdfd09d43 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdfdad1f9 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0xdff50025 nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xdff568cb klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe0168e37 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe016cb5d __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0xe036e450 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe0440fe0 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xe049f191 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xe04a8d1a devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xe04e23ac hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe06cdb7d crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0xe079a91b __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xe07c2499 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08bc8ff ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xe099c0ae gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0xe09b0f71 of_clk_hw_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b5279b __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe0b68a3a sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xe0cc050e blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0xe0d77dce nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0d8709a regulator_map_voltage_pickable_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xe0f53e28 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe108d302 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xe1126039 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0xe117ec02 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xe12a7323 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xe130c850 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe152969a debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe157ed8f idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe161b07b trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xe1680ebe blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0xe16a2510 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0xe1709dc2 devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0xe174e9a4 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1798b36 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe196c508 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xe1a595e2 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c0b8dc perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0xe1c3b340 governor_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1c453ce crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1d24c3b hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0xe1d4005c regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xe1f38f8d strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0xe2049878 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xe20baeb3 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xe20fbdd6 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xe2214603 dev_pm_opp_get_max_transition_latency +EXPORT_SYMBOL_GPL vmlinux 0xe224a770 __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xe2308956 dev_pm_opp_put_prop_name +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe24009a2 fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0xe263d74c pinctrl_generic_add_group +EXPORT_SYMBOL_GPL vmlinux 0xe287683a serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe29026e5 dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0xe2aa0dd5 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xe2acfe74 devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe2ae82eb mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2b8e027 blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0xe2b98332 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xe2cd57af sdio_retune_hold_now +EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0xe2daa7b3 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xe2dd65a6 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe2f28a53 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31af757 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xe323f621 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe3299c07 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe3533460 crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xe36906de crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe36af055 dev_pm_opp_find_level_exact +EXPORT_SYMBOL_GPL vmlinux 0xe37655a2 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xe3868973 irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0xe38b81cc tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe3967035 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3aeaa03 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3d348b5 pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xe3dcf208 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xe3df6a06 genphy_c45_read_mdix +EXPORT_SYMBOL_GPL vmlinux 0xe3ed80d2 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xe3f2f921 of_phandle_iterator_next +EXPORT_SYMBOL_GPL vmlinux 0xe4089576 kvmppc_set_msr_hv +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe40e9020 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4549511 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xe48364db __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a40aac pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xe4aac9ee driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe4acdac1 bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL vmlinux 0xe4c2c66c rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0xe4e46f17 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL vmlinux 0xe4ea17e8 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xe4ebd671 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0xe4edb2b5 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe4f7b6af thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5083c61 spi_res_release +EXPORT_SYMBOL_GPL vmlinux 0xe50a0b9b n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xe549963f is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0xe570d119 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe570f8ec class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe57421e9 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5917508 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xe5939b5d ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe5939b84 devm_hwspin_lock_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xe598c0af nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0xe5a12479 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xe5b59203 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0xe5ba6a3c pinctrl_utils_free_map +EXPORT_SYMBOL_GPL vmlinux 0xe5e68bd7 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xe5ec503b __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xe5ef533f usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe5ef5b7e da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe60d1f6b of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xe61f4132 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe624f566 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6261936 regmap_add_irq_chip_np +EXPORT_SYMBOL_GPL vmlinux 0xe628702c genphy_c45_read_lpa +EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe63d71bb cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xe64eec66 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL vmlinux 0xe6518c9a raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe6523aa5 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xe65c226c ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6658b50 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xe67703ce ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0xe681f946 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe68625bf blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xe68ae4d2 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xe68cf5f0 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xe69742c3 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0xe69933d9 hwspin_lock_free +EXPORT_SYMBOL_GPL vmlinux 0xe6a13e7d xive_native_configure_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6b1a2a8 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe6cd1e8b sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xe6ce1579 pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xe6d1196c dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe6f9c14b irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe6fabaca napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xe70789ca __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0xe70f708d clk_hw_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0xe71241ce devm_spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe718217d usb_phy_roothub_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe71fe38a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xe723d114 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0xe724cb5d of_icc_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe7297f63 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe72c2f84 hwspin_lock_register +EXPORT_SYMBOL_GPL vmlinux 0xe737a3cf __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe7490564 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77c0f4e wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe78782e9 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xe798efb6 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xe79ba66d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe79bf0c4 klp_shadow_get +EXPORT_SYMBOL_GPL vmlinux 0xe7a7937d ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xe7a98a2c mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xe7c7e52e sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xe7d0c1c1 bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xe7d34db2 opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7ed2b27 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe8124954 nvdimm_security_setup_events +EXPORT_SYMBOL_GPL vmlinux 0xe8140ea7 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe8154c8d of_genpd_add_provider_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81d244e devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe83be53d mm_iommu_new +EXPORT_SYMBOL_GPL vmlinux 0xe84b9656 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xe84eb353 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8699a1d pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0xe87ab439 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe87f0c52 fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0xe8a74756 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe8b115bb clk_hw_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xe8b4b30b fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xe8c697c4 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe8f20697 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe8f3c242 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0xe909eee3 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe957bf9f alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe95f7490 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe95ff2f0 devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0xe97752b3 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xe991951e bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xe996311e elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0xe9c3ba7b ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d2727c fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xe9e1ab85 devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xe9e54af1 icc_node_add +EXPORT_SYMBOL_GPL vmlinux 0xe9f3a188 icc_provider_del +EXPORT_SYMBOL_GPL vmlinux 0xea017114 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xea09ef55 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea214c12 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea3bcb44 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xea40abaf genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL vmlinux 0xea430972 extcon_set_property +EXPORT_SYMBOL_GPL vmlinux 0xea589420 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xea7086d1 do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0xea7e60e3 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xea88c866 copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xea918f7e irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0xea9d624a tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xeaa71be7 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0xeaad3d46 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xeab71dbd skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0xead486fd crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xead8ecfe rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xeadf72e1 tm_abort +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeae86586 usb_phy_get_charger_current +EXPORT_SYMBOL_GPL vmlinux 0xeaf9e3ee __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0xeafe07b8 clk_bulk_prepare +EXPORT_SYMBOL_GPL vmlinux 0xeb158176 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xeb16f919 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xeb1a4f29 opal_error_code +EXPORT_SYMBOL_GPL vmlinux 0xeb20a687 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xeb2c0229 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xeb30b67e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0xeb32587e usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xeb3c8d73 wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0xeb45d156 scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0xeb49f785 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xeb4cef70 vfio_iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0xeb503b28 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xeb597461 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb67c88b fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0xeb69e003 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb796b7f perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb7cd059 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xeb94a84a power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xeba39c77 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xebbf1aa2 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xebc6c9e8 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep +EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms +EXPORT_SYMBOL_GPL vmlinux 0xebf28a43 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xebfc68f7 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0xec0e8335 __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0xec1612ff ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xec20dd93 of_clk_add_hw_provider +EXPORT_SYMBOL_GPL vmlinux 0xec356c53 msr_check_and_set +EXPORT_SYMBOL_GPL vmlinux 0xec3d3609 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xec4a0099 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xec51b3b7 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec58085a edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL vmlinux 0xec59434b of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xec63d699 __tracepoint_vfio_pci_nvgpu_mmap_fault +EXPORT_SYMBOL_GPL vmlinux 0xec68ba70 clk_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xec699e31 regulator_get_voltage_sel_pickable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xec6a142e cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xec6f3f4d of_hwspin_lock_get_id_byname +EXPORT_SYMBOL_GPL vmlinux 0xec72c3b1 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xec84bfb9 opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0xec872437 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xecaf8277 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xecb6909d virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xecc13485 pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xeccc7df4 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xecf0559f simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xecf3b489 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xed0caf1a usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0xed17d121 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xed4891ae devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xed494c61 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xed5836ce pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xed9289f3 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xedafc22d virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xedafe851 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xedbf0a62 create_signature +EXPORT_SYMBOL_GPL vmlinux 0xedd214e8 syscon_regmap_lookup_by_phandle_args +EXPORT_SYMBOL_GPL vmlinux 0xee0ce2dd __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0xee13a4d7 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0xee1a4c1d fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xee33325c seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee4beb18 fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee725f67 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xeeb1b987 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeeba29c2 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xeebf06cc pci_ecam_create +EXPORT_SYMBOL_GPL vmlinux 0xeec50af6 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xeed7a908 icc_provider_add +EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeef72651 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xef05dd2a devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xef17cf47 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put +EXPORT_SYMBOL_GPL vmlinux 0xef2adcec ethnl_cable_test_free +EXPORT_SYMBOL_GPL vmlinux 0xef2c6250 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xef2e6317 _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xef393094 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xef3db336 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef484771 fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0xef53012d sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xef59d51d usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xef5c2d8e genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xef6439ea device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xef668245 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d0376 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0xef6d8ae8 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xef793bba subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xef8424e2 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xef870d25 devm_memremap_pages +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb93d9e of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xefbc28c1 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xefe3a6bb i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xefea9eb1 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs +EXPORT_SYMBOL_GPL vmlinux 0xefeb8e89 security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xefebdde1 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xefee6835 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeff0b14a power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xeff4a4df find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf01628d7 alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0xf01d1dd0 of_pci_get_max_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xf020ac89 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xf03d23af devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf04c99e4 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf055e628 __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0xf05995da fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0xf0639d1b md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xf0652be2 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xf066d1a1 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0xf0804c5c fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0xf0835094 __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xf086051a kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0xf086dacc static_key_count +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf091ed06 dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xf099defd dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0xf0a67a62 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL vmlinux 0xf0ae2e26 regmap_update_bits_base +EXPORT_SYMBOL_GPL vmlinux 0xf0c1f0f7 icc_node_del +EXPORT_SYMBOL_GPL vmlinux 0xf0c8a49c fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0xf0ddf0ac devm_nvmem_device_put +EXPORT_SYMBOL_GPL vmlinux 0xf0dfdb2f ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0xf0e0847b _copy_from_iter_flushcache +EXPORT_SYMBOL_GPL vmlinux 0xf0f2a3ef crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0xf10c715e __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xf11b1daa get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf136c667 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xf13c8cf1 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xf159b84e crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xf164a827 _copy_mc_to_iter +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a0297e badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1a6431a cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1e8b409 extcon_find_edev_by_node +EXPORT_SYMBOL_GPL vmlinux 0xf2179a22 iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf25a42e8 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xf26531af register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf278885a rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xf28a1fa5 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0xf28ecd5e tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2a1461a unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf2b5850c iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xf2d96f55 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xf2f0b73a xive_native_get_vp_state +EXPORT_SYMBOL_GPL vmlinux 0xf2f336b8 fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0xf2f6ffd9 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xf3046a2a bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0xf319c605 vas_copy_crb +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf338747e ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xf33b22f7 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf3539dc2 iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3573885 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xf3588f5c dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0xf35b2395 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xf37647d8 call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf398bc85 find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xf3b2e524 pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3d402cc i2c_client_type +EXPORT_SYMBOL_GPL vmlinux 0xf3e0b26c balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0xf3e917b9 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf3ea0beb clk_hw_is_prepared +EXPORT_SYMBOL_GPL vmlinux 0xf401dfa0 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xf4034ff7 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4037821 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf40897fb get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xf41076c6 devm_hwmon_device_register_with_info +EXPORT_SYMBOL_GPL vmlinux 0xf4260e2f dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf44c7d77 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xf4677ac9 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf46f7c73 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf48767e5 devm_hwspin_lock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf4a6d26f sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4b5577d blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf4d9d870 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4e90f31 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0xf4f36525 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xf4f51d46 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xf4f9a317 fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0xf5053558 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf521265a relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0xf5241e9f crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xf53c1a81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf54445c2 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54d7d43 xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5579b7d regmap_noinc_write +EXPORT_SYMBOL_GPL vmlinux 0xf5623d0f sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0xf565958f iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf569d88c fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0xf56acee1 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xf57eb91a dev_coredumpsg +EXPORT_SYMBOL_GPL vmlinux 0xf5826eb9 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xf58518f3 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf589b813 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xf59ce052 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bacad3 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xf5c7e03c dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0xf5cd3243 pnv_ocxl_spa_remove_pe_from_cache +EXPORT_SYMBOL_GPL vmlinux 0xf5d78413 phy_modify_mmd_changed +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf6027db1 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf60818b9 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0xf60e451f fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xf60f28f2 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xf61ad5af kernstart_virt_addr +EXPORT_SYMBOL_GPL vmlinux 0xf61ec742 skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xf621067c usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf6248c32 crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0xf638df60 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0xf64f231d __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf65a54ca sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf65dedde netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf682aced regulator_lock +EXPORT_SYMBOL_GPL vmlinux 0xf6a09102 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xf6ad2d9b sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xf6bc5dd5 xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xf6c379c5 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xf6c8c606 bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e71637 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf6f47cc6 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xf6fa1c93 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf7133422 led_put +EXPORT_SYMBOL_GPL vmlinux 0xf7259488 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf7518fbc devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0xf75ec665 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf76acc52 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0xf79ee1ea gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf7a2687e user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xf7a4daef lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0xf7a64e50 crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7c2d1d9 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf7cb064d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite +EXPORT_SYMBOL_GPL vmlinux 0xf7e60779 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xf7f51d05 bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0xf80ede9f devm_of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xf82706a7 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf82b1ff9 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf836308c devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0xf8472f7a crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xf8491c6c crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL vmlinux 0xf84f187b rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf8529d7f cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xf85f6b55 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0xf860cab5 input_class +EXPORT_SYMBOL_GPL vmlinux 0xf8703ecf fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf8843dc5 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xf884ee8c phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL vmlinux 0xf89a9712 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf8c5d32b ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xf8d6736d inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf8e0a1bc devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fcdb0e pnv_ocxl_set_tl_conf +EXPORT_SYMBOL_GPL vmlinux 0xf900d94e sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf907ffef __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xf90f481e wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xf9214cf6 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xf9258ce3 device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xf9275ea9 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0xf92d7163 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9361a29 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf94d12ec phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL vmlinux 0xf94f9564 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf96149d6 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf97471ef opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0xf975a2b1 irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf989a283 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf99b1daa rio_alloc_net +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a3d76e tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf9c66d59 sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xf9ca9f74 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf9da3f15 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xf9e3f36b phy_led_triggers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9f43dca device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfa077a52 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfa17a484 pm_clk_init +EXPORT_SYMBOL_GPL vmlinux 0xfa19d24f pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xfa1b8e46 blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa22c836 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfa4738b4 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0xfa64d1a0 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa74a021 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xfa7efd7d wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xfa816cda of_phandle_iterator_init +EXPORT_SYMBOL_GPL vmlinux 0xfa8265d5 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0xfa903797 fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0xfa93de74 spi_take_timestamp_post +EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line +EXPORT_SYMBOL_GPL vmlinux 0xfab54ed5 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xfabb6aff opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0xfad10ff8 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xfad96238 spi_set_cs_timing +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfaddae6b cs47l24_patch +EXPORT_SYMBOL_GPL vmlinux 0xfadf6ff1 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfaf0c059 cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xfaf3e1b1 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xfafd3a50 eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0xfafdbc5a mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xfb15335e of_platform_default_populate +EXPORT_SYMBOL_GPL vmlinux 0xfb31a411 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb459e5f rio_unmap_outb_region +EXPORT_SYMBOL_GPL vmlinux 0xfb64df53 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb71ad4b pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfb738290 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xfb7f8928 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfb885edd page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0xfba0f298 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc447ff crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xfbcf5add of_led_get +EXPORT_SYMBOL_GPL vmlinux 0xfbecb0b0 copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0b1bdc inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc1670eb fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc20877a nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xfc2243b2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xfc234177 _kvmppc_save_tm_pr +EXPORT_SYMBOL_GPL vmlinux 0xfc2dbe88 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xfc35b531 serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfc35fd25 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xfc4fb26f tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0xfc5b29a6 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfc5c0c04 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xfc5e6718 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc683b45 has_big_cores +EXPORT_SYMBOL_GPL vmlinux 0xfc77f6d0 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xfc843596 clk_gate_restore_context +EXPORT_SYMBOL_GPL vmlinux 0xfc97a603 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xfca8b051 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xfca983b8 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfcaf49b0 trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0xfcb0c269 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcd156cb ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xfcd60fc4 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcde4fd2 tpm_tis_remove +EXPORT_SYMBOL_GPL vmlinux 0xfcde943a of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xfcf0da11 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xfcf59a9c irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xfd16b3a1 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xfd324b18 sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfd33209f sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xfd346c69 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfd3b430c dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xfd3c9d6a ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xfd614b7c sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0xfd628c40 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xfd6e36f7 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xfd780b0e icc_enable +EXPORT_SYMBOL_GPL vmlinux 0xfd7e1b40 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xfd7faf5a wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd8a7ed5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xfd93bb5e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xfda1beea hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfda4efa5 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xfdadd316 serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0xfdafea24 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xfdb0086c kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdc6037d gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0xfdd47d43 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0xfddf5fd7 bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0xfded4202 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfe2c3286 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe5895ae handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0xfe5a9568 skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xfe62074b skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0xfe670f86 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe69786d i2c_dw_probe_master +EXPORT_SYMBOL_GPL vmlinux 0xfe826b35 fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0xfe877fd5 xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe946cac tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9c96dd regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xfeaa1558 opal_async_wait_response_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xfecaa39a mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed9d073 iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0xfedc7286 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xfef282f7 sdio_retune_crc_disable +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0778ea virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3d1773 devm_led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xff3fcaae iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xff49f1ca devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xff50fdcf mmput +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5d04fd blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0xff6602f4 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff884efa __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xff8bfa84 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xff99094b i2c_of_match_device +EXPORT_SYMBOL_GPL vmlinux 0xff9ad4de relay_close +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffc47c7a rio_del_device +EXPORT_SYMBOL_GPL vmlinux 0xffd1123f save_stack_trace +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux +LTC2497 EXPORT_SYMBOL 0x1a07dfa4 ltc2497core_probe drivers/iio/adc/ltc2497-core +LTC2497 EXPORT_SYMBOL 0x58fb6d1f ltc2497core_remove drivers/iio/adc/ltc2497-core +MCB EXPORT_SYMBOL_GPL 0x05fef2be mcb_unregister_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x26e8068c __mcb_register_driver drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x2a92e668 mcb_get_resource drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0x32b1b927 mcb_alloc_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xa041130e mcb_bus_get drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xb2361a81 mcb_release_bus drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xb32bd37b mcb_alloc_dev drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xb57faa85 mcb_request_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xbcdc147b mcb_bus_put drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xde6a211b mcb_device_register drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xdf9d782c chameleon_parse_cells drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb15c0af mcb_get_irq drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xeb2c8905 mcb_release_mem drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf1a00b20 mcb_bus_add_devices drivers/mcb/mcb +MCB EXPORT_SYMBOL_GPL 0xf3ae3d50 mcb_free_dev drivers/mcb/mcb +USB_STORAGE EXPORT_SYMBOL_GPL 0x1bc3edc2 usb_stor_sense_invalidCDB drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x246492e9 usb_stor_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x25424190 usb_stor_adjust_quirks drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x5048813d usb_stor_pre_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x52d23f6d usb_stor_set_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x665f0206 usb_stor_ctrl_transfer drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x66eb0e42 usb_stor_probe1 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6edd9634 usb_stor_Bulk_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x6efe1f90 usb_stor_control_msg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x733f055c usb_stor_CB_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7944be52 usb_stor_CB_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x7fdbc7b6 usb_stor_disconnect drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x8abef4d1 usb_stor_transparent_scsi_command drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x8e90b41f usb_stor_Bulk_transport drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0x9e461a82 usb_stor_clear_halt drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbb57d1c9 usb_stor_post_reset drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbc5acd3f usb_stor_host_template_init drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xbd169c1e usb_stor_bulk_transfer_sg drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xc5113c0c usb_stor_access_xfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe0d22359 usb_stor_bulk_srb drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe2022e64 usb_stor_probe2 drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xe8951536 usb_stor_reset_resume drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xeb1ca5e8 fill_inquiry_response drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xf54c75e9 usb_stor_bulk_transfer_buf drivers/usb/storage/usb-storage +USB_STORAGE EXPORT_SYMBOL_GPL 0xfea06f44 usb_stor_suspend drivers/usb/storage/usb-storage --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/ppc64el/generic.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/ppc64el/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/ppc64el/generic.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/ppc64el/generic.modules @@ -0,0 +1,5426 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_aspeed_vuart +8250_dw +8250_exar +8250_men_mcb +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pg86x +88pm800 +88pm800-regulator +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x-ts +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870-regulator +aat2870_bl +ab3100 +ab3100-otp +abp060mg +ac97_bus +acard-ahci +acecad +acenic +acp_audio_dma +act8865-regulator +act8945a +act8945a-regulator +act8945a_charger +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5272 +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5592r +ad5592r-base +ad5593r +ad5624r_spi +ad5686 +ad5686-spi +ad5696-i2c +ad5755 +ad5758 +ad5761 +ad5764 +ad5770r +ad5791 +ad5820 +ad5933 +ad7091r-base +ad7091r5 +ad7124 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7192 +ad7266 +ad7280a +ad7291 +ad7292 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7606_par +ad7606_spi +ad7746 +ad7766 +ad7768-1 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad7949 +ad799x +ad8366 +ad8801 +ad9389b +ad9467 +ad9523 +ad9832 +ad9834 +ad_sigma_delta +adc-keys +adc128d818 +adcxx +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2032 +addi_apci_2200 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +addi_watchdog +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adf4371 +adf7242 +adfs +adi +adi-axi-adc +adiantum +adin +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16209 +adis16240 +adis16260 +adis16400 +adis16460 +adis16475 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1177 +adm1275 +adm8211 +adm9240 +adp1653 +adp5061 +adp5520-keys +adp5520_bl +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adux1020 +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adv7393 +adv748x +adv7511_drm +adv7604 +adv7842 +adv_pci1710 +adv_pci1720 +adv_pci1723 +adv_pci1724 +adv_pci1760 +adv_pci_dio +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxl372 +adxl372_i2c +adxl372_spi +adxrs450 +aegis128 +aes_ti +af9013 +af9033 +af_alg +af_key +af_packet_diag +afe4403 +afe4404 +affs +ah4 +ah6 +ahci +ahci_ceva +ahci_platform +ahci_qoriq +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airspy +ak7375 +ak881x +ak8974 +ak8975 +al3010 +al3320a +alcor +alcor_pci +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera-cvp +altera-freeze-bridge +altera-msgdma +altera-pr-ip-core +altera-pr-ip-core-plat +altera-ps-spi +altera-stapl +altera_jtaguart +altera_ps2 +altera_tse +altera_uart +alx +am2315 +am53c974 +amc6821 +amd +amd5536udc_pci +amd8111e +amdgpu +amlogic-gxl-crypto +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams-iaq-core +ams369fg06 +analog +analogix-anx6345 +analogix-anx78xx +analogix_dp +ansi_cprng +anubis +anybuss_core +aoe +apbps2 +apds9300 +apds9802als +apds990x +apds9960 +apple-mfi-fastcharge +appledisplay +appletalk +appletouch +applicom +aptina-pll +aqc111 +aquantia +ar1021_i2c +ar5523 +ar7part +ar9331 +arasan-nand-controller +arc-rawmode +arc-rimi +arc4 +arc_ps2 +arc_uart +arcmsr +arcnet +arcpgu +arcx-anybus +arcxcnn_bl +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arp_tables +arpt_mangle +arptable_filter +as102_fe +as370-hwmon +as3711-regulator +as3711_bl +as3722-regulator +as3935 +as5011 +asc7621 +ascot2e +ashmem_linux +asix +aspeed-pwm-tacho +aspeed-video +ast +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +ata_generic +ata_piix +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath10k_sdio +ath10k_usb +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ath9k_pci_owl_loader +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas-ezo-sensor +atlas-sensor +atm +atmel +atmel-ecc +atmel-flexcom +atmel-hlcdc +atmel-i2c +atmel-sha204a +atmel_captouch +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo-pixcir-ts +auth_rpcgss +authenc +authencesn +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796b +axi-fan-control +axis-fifo +axp20x +axp20x-i2c +axp20x-pek +axp20x-regulator +axp20x_ac_power +axp20x_adc +axp20x_battery +axp20x_usb_power +axp288_adc +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +b53_common +b53_mdio +b53_mmap +b53_serdes +b53_spi +b53_srab +bareudp +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm-keypad +bcm-phy-lib +bcm-sf2 +bcm203x +bcm3510 +bcm54140 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bd70528-charger +bd70528-regulator +bd70528_wdt +bd71828-regulator +bd718x7-regulator +bd9571mwv +bd9571mwv-regulator +bd99954-charger +bdc +be2iscsi +be2net +befs +bel-pfe +belkin_sa +bfa +bfq +bfs +bfusb +bh1750 +bh1770glc +bh1780 +binder_linux +binfmt_misc +blake2b_generic +blake2s_generic +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma220_spi +bma400_core +bma400_i2c +bmc150-accel-core +bmc150-accel-i2c +bmc150-accel-spi +bmc150_magn +bmc150_magn_i2c +bmc150_magn_spi +bme680_core +bme680_i2c +bme680_spi +bmg160_core +bmg160_i2c +bmg160_spi +bmi160_core +bmi160_i2c +bmi160_spi +bmp280 +bmp280-i2c +bmp280-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bnxt_en +bnxt_re +bochs-drm +bonding +bpa10x +bpck +bpfilter +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27xxx_battery +bq27xxx_battery_hdq +bq27xxx_battery_i2c +br2684 +br_netfilter +brcmfmac +brcmsmac +brcmutil +brd +bridge +broadcom +bsd_comp +bsr +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btmtksdio +btmtkuart +btqca +btrfs +btrsi +btrtl +btsdio +bttv +btusb +bu21013_ts +bu21029_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c67x00 +c6xdigio +c_can +c_can_pci +c_can_platform +ca8210 +cachefiles +cadence-nand-controller +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia_generic +can +can-bcm +can-dev +can-gw +can-j1939 +can-raw +cap11xx +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cavium_ptp +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +ccm +ccree +ccs811 +cdc-acm +cdc-phonet +cdc-wdm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc_subset +cdns-csi2rx +cdns-csi2tx +cdns-dphy +cdns-dsi +cdns-pltfrm +cdns3 +cec +ceph +cfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +ch9200 +chacha20poly1305 +chacha_generic +chaoskey +charlcd +chcr +chipone_icn8318 +chipreg +chnl_net +chrontel-ch7033 +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_tegra +ci_hdrc_usb2 +cicada +cifs +cirrus +cirrusfb +clip +clk-bd718x7 +clk-cdce706 +clk-cdce925 +clk-cs2000-cp +clk-lochnagar +clk-max77686 +clk-max9485 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si514 +clk-si5341 +clk-si5351 +clk-si544 +clk-si570 +clk-twl6040 +clk-versaclock5 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm3605 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmm +cmtp +cnic +cobra +coda +colibri-vf50-ts +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +contec_pci_dio +cordic +core +cortina +counter +cp210x +cpc925_edac +cpcap-adc +cpcap-battery +cpcap-pwrbutton +cpcap-regulator +cpia2 +cqhci +cramfs +crc-itu-t +crc-vpmsum_test +crc32_generic +crc32c-vpmsum +crc4 +crc64 +crc7 +crc8 +crct10dif-vpmsum +cryptd +crypto_engine +crypto_safexcel +crypto_user +cryptoloop +cs3308 +cs5345 +cs53l32a +csiostor +curve25519-generic +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cw2015_battery +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx8800 +cx8802 +cx88xx +cxacru +cxd2099 +cxd2820r +cxd2841er +cxd2880 +cxd2880-spi +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxgbit +cxl +cxlflash +cy8ctma140 +cy8ctmg110_ts +cyapatp +cyber2000fb +cyberjack +cyclades +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da280 +da311 +da9030_battery +da9034-ts +da903x-regulator +da903x_bl +da9052-battery +da9052-hwmon +da9052-regulator +da9052_bl +da9052_onkey +da9052_tsi +da9052_wdt +da9055-hwmon +da9055-regulator +da9055_onkey +da9055_wdt +da9062-core +da9062-regulator +da9062-thermal +da9062_wdt +da9063-regulator +da9063_onkey +da9063_wdt +da9150-charger +da9150-core +da9150-fg +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +dax_pmem +dax_pmem_compat +dax_pmem_core +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +ddbridge-dummy-fe +de2104x +de4x5 +decnet +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +device_dax +dfl +dfl-afu +dfl-fme +dfl-fme-br +dfl-fme-mgr +dfl-fme-region +dfl-pci +dht11 +diag +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +display-connector +dl2k +dlci +dlhl60d +dlink-dir685-touchkeys +dlm +dln2 +dln2-adc +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dm1105 +dm9601 +dmard06 +dmard09 +dmard10 +dmfe +dmm32at +dmx3191d +dn_rtmsg +dnet +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +dpot-dac +dps310 +drbd +drivetemp +drm +drm_kms_helper +drm_mipi_dbi +drm_panel_orientation_quirks +drm_ttm_helper +drm_vram_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1803 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds4424 +ds620 +dsa_core +dsbr100 +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +dummy_stm +dvb-as102 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-af9005 +dvb-usb-af9005-remote +dvb-usb-af9015 +dvb-usb-af9035 +dvb-usb-anysee +dvb-usb-au6610 +dvb-usb-az6007 +dvb-usb-az6027 +dvb-usb-ce6230 +dvb-usb-cinergyT2 +dvb-usb-cxusb +dvb-usb-dib0700 +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-dibusb-mc-common +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-gl861 +dvb-usb-gp8psk +dvb-usb-lmedm04 +dvb-usb-m920x +dvb-usb-mxl111sf +dvb-usb-nova-t-usb2 +dvb-usb-opera +dvb-usb-pctv452e +dvb-usb-rtl28xxu +dvb-usb-technisat-usb2 +dvb-usb-ttusb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +dvb_dummy_fe +dvb_usb_v2 +dw-axi-dmac-platform +dw-edma +dw-edma-pcie +dw-hdmi +dw-hdmi-ahb-audio +dw-hdmi-cec +dw-hdmi-i2s-audio +dw-i3c-master +dw9714 +dw9807-vcm +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_wdt +dwc-xlgmac +dwc2_pci +dwc3 +dwc3-haps +dwc3-of-simple +dwmac-dwc-qos-eth +dwmac-generic +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ec100 +ecc +ecdh_generic +echainiv +echo +ecrdsa_generic +edt-ft5x06 +ee1004 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efa +efs +egalax_ts +egalax_ts_serial +ehci-fsl +ehci-platform +ehset +ektf2127 +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +em_canid +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +emc1403 +emc2103 +emc6w201 +emi26 +emi62 +empeg +ems_pci +ems_usb +emu10k1-gp +ena +enc28j60 +enclosure +encx24j600 +encx24j600-regmap +eni +enic +envelope-detector +epat +epia +epic100 +eql +erofs +esas2r +esd_usb2 +esp4 +esp4_offload +esp6 +esp6_offload +esp_scsi +essiv +et1011c +et131x +et8ek8 +ethoc +evbug +exc3000 +exfat +extcon-adc-jack +extcon-arizona +extcon-fsa9480 +extcon-gpio +extcon-max14577 +extcon-max3355 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-ptn5150 +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +f81534 +f81601 +failover +fakelb +fan53555 +farsync +faulty +fb_agm1264k-fl +fb_bd663474 +fb_ddc +fb_hx8340bn +fb_hx8347d +fb_hx8353d +fb_hx8357d +fb_ili9163 +fb_ili9320 +fb_ili9325 +fb_ili9340 +fb_ili9341 +fb_ili9481 +fb_ili9486 +fb_pcd8544 +fb_ra8875 +fb_s6d02a1 +fb_s6d1121 +fb_seps525 +fb_sh1106 +fb_ssd1289 +fb_ssd1305 +fb_ssd1306 +fb_ssd1325 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_st7789v +fb_sys_fops +fb_tinylcd +fb_tls8204 +fb_uc1611 +fb_uc1701 +fb_upd161704 +fb_watterott +fbtft +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_pci +fdp +fdp_i2c +fealnx +ff-memless +fhci +fieldbus_dev +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +flexcan +floppy +fm10k +fm801-gp +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +fou6 +fpga-bridge +fpga-mgr +fpga-region +freevxfs +friq +frpw +fscache +fsi-core +fsi-master-aspeed +fsi-master-gpio +fsi-master-hub +fsi-occ +fsi-sbefifo +fsi-scom +fsia6b +fsl-edma +fsl-edma-common +fsl-enetc +fsl-enetc-mdio +fsl-enetc-ptp +fsl-enetc-vf +fsl-mph-dr-of +fsl_linflexuart +fsl_lpuart +fsl_pq_mdio +fsl_ucc_hdlc +ftdi-elan +ftdi_sio +ftl +ftm-quaddec +ftsteutates +fujitsu_ts +fusb302 +fxas21002c_core +fxas21002c_i2c +fxas21002c_spi +fxos8700_core +fxos8700_i2c +fxos8700_spi +g450_pll +g760a +g762 +g_acm_ms +g_audio +g_cdc +g_dbgp +g_ether +g_ffs +g_hid +g_mass_storage +g_midi +g_ncm +g_nokia +g_printer +g_serial +g_webcam +g_zero +gadgetfs +gamecon +gameport +garmin_gps +garp +gateworks-gsc +gb-audio-apbridgea +gb-audio-gb +gb-audio-manager +gb-bootrom +gb-es2 +gb-firmware +gb-gbphy +gb-gpio +gb-hid +gb-i2c +gb-light +gb-log +gb-loopback +gb-power-supply +gb-pwm +gb-raw +gb-sdio +gb-spi +gb-spilib +gb-uart +gb-usb +gb-vibrator +gdmtty +gdmulte +gdth +gemini +gen_probe +generic +generic-adc-battery +generic_bl +genet +geneve +genwqe_card +gf2k +gfs2 +gianfar_driver +gl518sm +gl520sm +gl620a +gluebi +gm12u320 +gnss +gnss-mtk +gnss-serial +gnss-sirf +gnss-ubx +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002 +gp2ap020a00f +gp8psk-fe +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-aggregator +gpio-altera +gpio-amd-fch +gpio-arizona +gpio-bd70528 +gpio-bd71828 +gpio-bd9571mwv +gpio-beeper +gpio-cadence +gpio-charger +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-exar +gpio-fan +gpio-grgpio +gpio-gw-pld +gpio-hlwd +gpio-ir-recv +gpio-ir-tx +gpio-janz-ttl +gpio-kempld +gpio-logicvc +gpio-lp3943 +gpio-lp873x +gpio-lp87565 +gpio-madera +gpio-max3191x +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-max77620 +gpio-max77650 +gpio-mb86s7x +gpio-mc33880 +gpio-menz127 +gpio-moxtet +gpio-pca953x +gpio-pcf857x +gpio-pci-idio-16 +gpio-pcie-idio-24 +gpio-pisosr +gpio-rdc321x +gpio-regulator +gpio-sama5d2-piobu +gpio-siox +gpio-syscon +gpio-tpic2810 +gpio-tps65086 +gpio-tps65218 +gpio-tps65912 +gpio-tqmx86 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-vibra +gpio-viperboard +gpio-wcd934x +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xra1403 +gpio_backlight +gpio_decoder +gpio_keys +gpio_keys_polled +gpio_mouse +gpio_wdt +gpu-sched +gr_udc +grace +grcan +gre +greybus +grip +grip_mp +gs1662 +gs_fpga +gs_usb +gsc-hwmon +gsc_hpdi +gspca_benq +gspca_conex +gspca_cpia1 +gspca_dtcs033 +gspca_etoms +gspca_finepix +gspca_gl860 +gspca_jeilinj +gspca_jl2005bcd +gspca_kinect +gspca_konica +gspca_m5602 +gspca_main +gspca_mars +gspca_mr97310a +gspca_nw80x +gspca_ov519 +gspca_ov534 +gspca_ov534_9 +gspca_pac207 +gspca_pac7302 +gspca_pac7311 +gspca_se401 +gspca_sn9c2028 +gspca_sn9c20x +gspca_sonixb +gspca_sonixj +gspca_spca1528 +gspca_spca500 +gspca_spca501 +gspca_spca505 +gspca_spca506 +gspca_spca508 +gspca_spca561 +gspca_sq905 +gspca_sq905c +gspca_sq930x +gspca_stk014 +gspca_stk1135 +gspca_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_touptek +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +gtp +guillemot +gunze +gve +habanalabs +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_nokia +hci_uart +hci_vhci +hd3ss3220 +hd44780 +hdc100x +hdlc +hdlc_cisco +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdlcdrv +hdma +hdma_mgmt +hdpvr +he +helene +hexium_gemini +hexium_orion +hfcmulti +hfcpci +hfcsusb +hfs +hfsplus +hi311x +hi556 +hi6210-i2s +hi6421-pmic-core +hi6421-regulator +hi6421v530-regulator +hi8435 +hid +hid-a4tech +hid-accutouch +hid-alps +hid-apple +hid-appleir +hid-asus +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-bigbenff +hid-cherry +hid-chicony +hid-cmedia +hid-corsair +hid-cougar +hid-cp2112 +hid-creative-sb0540 +hid-cypress +hid-dr +hid-elan +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gembird +hid-generic +hid-gfrm +hid-glorious +hid-gt683r +hid-gyration +hid-holtek-kbd +hid-holtek-mouse +hid-holtekff +hid-icade +hid-ite +hid-jabra +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-led +hid-lenovo +hid-lg-g15 +hid-logitech +hid-logitech-dj +hid-logitech-hidpp +hid-macally +hid-magicmouse +hid-maltron +hid-mcp2221 +hid-mf +hid-microsoft +hid-monterey +hid-multitouch +hid-nti +hid-ntrig +hid-ortek +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +hid-redragon +hid-retrode +hid-rmi +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-konepure +hid-roccat-kovaplus +hid-roccat-lua +hid-roccat-pyra +hid-roccat-ryos +hid-roccat-savu +hid-saitek +hid-samsung +hid-sensor-accel-3d +hid-sensor-als +hid-sensor-custom +hid-sensor-gyro-3d +hid-sensor-hub +hid-sensor-humidity +hid-sensor-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-temperature +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steam +hid-steelseries +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-u2fzero +hid-uclogic +hid-udraw-ps3 +hid-viewsonic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hideep +hidp +hih6130 +hmc425a +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hms-profinet +hopper +horus3a +hostap +hostap_pci +hostap_plx +hp03 +hp206c +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +ht16k33 +htc-pasic3 +hts221 +hts221_i2c +hts221_spi +htu21 +huawei_cdc_ncm +hvcs +hvcserver +hwmon-vid +hwpoison-inject +hx711 +hx8357 +hx8357d +hyperbus-core +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-cbus-gpio +i2c-demux-pinctrl +i2c-designware-pci +i2c-diolan-u2c +i2c-dln2 +i2c-fsi +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-gpmux +i2c-mux-ltc4306 +i2c-mux-mlxcpld +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mux-reg +i2c-nforce2 +i2c-nvidia-gpu +i2c-ocores +i2c-parport +i2c-pca-platform +i2c-piix4 +i2c-rk3x +i2c-robotfuzz-osif +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i3c +i3c-master-cdns +i40e +i40iw +i5k_amb +i6300esb +i740fb +iavf +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +ibm-cffps +ibmaem +ibmpex +ibmpowernv +ibmveth +ibmvfc +ibmvmc +ibmvnic +ibmvscsi +ibmvscsis +ice +ice40-spi +icom +icp +icp10100 +icp_multi +icplus +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idt_89hpesx +idt_gen2 +idt_gen3 +idtcps +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +ifcvf +ife +ifi_canfd +iforce +iforce-serio +iforce-usb +igb +igbvf +igc +igorplugusb +iguanair +ii_pci20kc +iio-mux +iio-rescale +iio-trig-hrtimer +iio-trig-interrupt +iio-trig-loop +iio-trig-sysfs +iio_dummy +iio_hwmon +ila +ili210x +ili9225 +ili922x +ili9320 +ili9341 +ili9486 +img-ascii-lcd +img-i2s-in +img-i2s-out +img-parallel-out +img-spdif-in +img-spdif-out +imm +imon +imon_raw +ims-pcu +imx214 +imx219 +imx258 +imx274 +imx290 +imx319 +imx355 +imx6ul_tsc +ina209 +ina2xx +ina2xx-adc +ina3221 +industrialio +industrialio-buffer-cb +industrialio-buffer-dma +industrialio-buffer-dmaengine +industrialio-configfs +industrialio-hw-consumer +industrialio-sw-device +industrialio-sw-trigger +industrialio-triggered-buffer +industrialio-triggered-event +inet_diag +inexio +inftl +initio +input-leds +input-polldev +inspur-ipsps +int51x1 +intel-xway +intel_th +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +intel_vr_nor +interact +inv-mpu6050 +inv-mpu6050-i2c +inv-mpu6050-spi +io_edgeport +io_ti +ionic +iowarrior +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipack +ipaq +ipcomp +ipcomp6 +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_powernv +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +ipw +ipw2100 +ipw2200 +iqs269a +iqs5xx +iqs620at-temp +iqs621-als +iqs624-pos +iqs62x +iqs62x-keys +ir-hix5hd2 +ir-imon-decoder +ir-jvc-decoder +ir-kbd-i2c +ir-mce_kbd-decoder +ir-nec-decoder +ir-rc5-decoder +ir-rc6-decoder +ir-rcmm-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +ir-spi +ir-usb +ir-xmp-decoder +ir35221 +ir38064 +irps5401 +irq-madera +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl29501 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl68137 +isl9305 +isofs +isp116x-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_cm +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcm +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +keywrap +kfifo_buf +khazad +kheaders +kl5kusb105 +kmem +kmx61 +kobil_sct +komeda +kpc2000 +kpc2000_i2c +kpc2000_spi +kpc_dma +ks0108 +ks0127 +ks7010 +ks8842 +ks8851 +ks8851_mll +ksz8795 +ksz8795_spi +ksz884x +ksz9477 +ksz9477_i2c +ksz9477_spi +ksz_common +ktti +kvaser_pci +kvaser_pciefd +kvaser_usb +kvm +kvm-hv +kvm-pr +kxcjk-1013 +kxsd9 +kxsd9-i2c +kxsd9-spi +kxtj9 +kyber-iosched +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lan743x +lan78xx +lan9303-core +lan9303_i2c +lan9303_mdio +lanai +lantiq_gswip +lapb +lapbether +lattice-ecp3-config +lcd +ldusb +lec +led-class-flash +led_bl +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-an30259a +leds-as3645a +leds-aw2013 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-cpcap +leds-cr0014114 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-el15203000 +leds-gpio +leds-is31fl319x +leds-is31fl32xx +leds-ktd2692 +leds-lm3530 +leds-lm3532 +leds-lm3533 +leds-lm355x +leds-lm3601x +leds-lm36274 +leds-lm3642 +leds-lm3692x +leds-lm3697 +leds-lp3944 +leds-lp3952 +leds-lp5521 +leds-lp5523 +leds-lp5562 +leds-lp55xx-common +leds-lp8501 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77650 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-mlxreg +leds-mt6323 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-powernv +leds-pwm +leds-regulator +leds-sgm3140 +leds-spi-byte +leds-tca6507 +leds-ti-lmu-common +leds-tlc591xx +leds-tps6105x +leds-wm831x-status +leds-wm8350 +ledtrig-activity +ledtrig-audio +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-netdev +ledtrig-oneshot +ledtrig-pattern +ledtrig-timer +ledtrig-transient +ledtrig-usbport +lego_ev3_battery +legousbtower +lg-vl600 +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gl5 +lgs8gxx +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcomposite +libcrc32c +libcurve25519 +libcurve25519-generic +libcxgb +libcxgbi +libdes +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libpoly1305 +libsas +lightning +lineage-pem +linear +liquidio +liquidio_vf +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +lkkbd +ll_temac +llc +llc2 +lm25066 +lm3533-als +lm3533-core +lm3533-ctrlbank +lm3533_bl +lm3560 +lm3630a_bl +lm3639_bl +lm363x-regulator +lm3646 +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmp91000 +lms283gf05 +lms501kf03 +lnbh25 +lnbh29 +lnbp21 +lnbp22 +lochnagar-hwmon +lochnagar-regulator +lockd +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp873x +lp873x-regulator +lp8755 +lp87565 +lp87565-regulator +lp8788-buck +lp8788-charger +lp8788-ldo +lp8788_adc +lp8788_bl +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +lt3651-charger +ltc1660 +ltc2471 +ltc2485 +ltc2496 +ltc2497 +ltc2497-core +ltc2632 +ltc2941-battery-gauge +ltc2945 +ltc2947-core +ltc2947-i2c +ltc2947-spi +ltc2978 +ltc2983 +ltc2990 +ltc3589 +ltc3676 +ltc3815 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lv0104cs +lv5207lp +lvds-codec +lvstest +lxt +lz4 +lz4hc +lz4hc_compress +m2m-deinterlace +m52790 +m5mols +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +m_can +m_can_platform +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +mac80211 +mac80211_hwsim +mac802154 +mac802154_hwsim +mac_hid +macb +macb_pci +machxo2-spi +macsec +macvlan +macvtap +madera +madera-i2c +madera-spi +mag3110 +magellan +mailbox-altera +mailbox-test +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +marvell10g +matrix-keymap +matrix_keypad +matrox_w1 +matroxfb_DAC1064 +matroxfb_Ti3026 +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +max1027 +max11100 +max1111 +max1118 +max11801_ts +max1241 +max1363 +max14577-regulator +max14577_charger +max14656_charger_detector +max1586 +max16064 +max16065 +max1619 +max16601 +max1668 +max17040_battery +max17042_battery +max1721x_battery +max197 +max20730 +max20751 +max2165 +max2175 +max30100 +max30102 +max3100 +max31722 +max31730 +max31785 +max31790 +max31856 +max3420_udc +max3421-hcd +max34440 +max44000 +max44009 +max517 +max5432 +max5481 +max5487 +max5821 +max63xx_wdt +max6621 +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77620-regulator +max77620_thermal +max77620_wdt +max77650 +max77650-charger +max77650-onkey +max77650-regulator +max77686-regulator +max77693-haptic +max77693-regulator +max77693_charger +max77802-regulator +max77826-regulator +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925-regulator +max8925_bl +max8925_onkey +max8925_power +max8952 +max8973-regulator +max8997-regulator +max8997_charger +max8997_haptic +max8998 +max8998_charger +max9611 +maxim_thermocouple +mb1232 +mb862xxfb +mb86a16 +mb86a20s +mc +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc3230 +mc44s803 +mcam-core +mcb +mcb-lpc +mcb-pci +mcba_usb +mceusb +mchp23k256 +mcp16502 +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp3911 +mcp4018 +mcp41010 +mcp4131 +mcp4531 +mcp4725 +mcp4922 +mcr20a +mcs5000_ts +mcs7830 +mcs_touchkey +mct_u232 +md-cluster +md4 +md5-ppc +mdc800 +mdev +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-cavium +mdio-gpio +mdio-hisi-femac +mdio-i2c +mdio-ipq4019 +mdio-ipq8064 +mdio-mscc-miim +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-mux-multiplexer +mdio-mvusb +mdio-octeon +mdio-thunder +mdio-xpcs +me4000 +me_daq +megachips-stdpxxxx-ge-b850v3-fw +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +melfas_mip4 +memory-notifier-error-inject +memstick +men_z135_uart +men_z188_adc +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +menz69_wdt +metro-usb +metronomefb +mf6x4 +mgag200 +mhi +mi0283qt +michael_mic +micrel +microchip +microchip_t1 +microread +microread_i2c +microtek +mii +minix +mip6 +mite +mk712 +mkiss +ml86v7667 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mlx90632 +mlxfw +mlxsw_core +mlxsw_i2c +mlxsw_minimal +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +mma7455_core +mma7455_i2c +mma7455_spi +mma7660 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88443x +mn88472 +mn88473 +mos7720 +mos7840 +most_cdev +most_core +most_dim2 +most_i2c +most_net +most_sound +most_usb +most_video +motorola-cpcap +moxa +moxtet +mp2629 +mp2629_adc +mp2629_charger +mp5416 +mp8859 +mp886x +mpc624 +mpl115 +mpl115_i2c +mpl115_spi +mpl3115 +mpls_gso +mpls_iptunnel +mpls_router +mpoa +mpq7920 +mpr121_touchkey +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms5637 +ms_block +ms_sensors_i2c +mscc +mscc_ocelot_common +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt6311-regulator +mt6323-regulator +mt6358-regulator +mt6360-core +mt6397 +mt6397-regulator +mt7530 +mt76 +mt76-usb +mt7601u +mt7603e +mt7615-common +mt7615e +mt7663u +mt76x0-common +mt76x02-lib +mt76x02-usb +mt76x0e +mt76x0u +mt76x2-common +mt76x2e +mt76x2u +mt7915e +mt9m001 +mt9m032 +mt9m111 +mt9p031 +mt9t001 +mt9t112 +mt9v011 +mt9v032 +mt9v111 +mtd +mtd_blkdevs +mtd_dataflash +mtdblock +mtdblock_ro +mtdoops +mtdpstore +mtdram +mtdswap +mtip32xx +mtk-pmic-keys +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mux-adg792a +mux-adgs1408 +mux-core +mux-gpio +mux-mmio +mv88e6060 +mv88e6xxx +mv_u3d_core +mv_udc +mvmdio +mvsas +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxc4005 +mxc6255 +mxic_nand +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxl5xx +mxser +mxsfb +mxuport +myrb +myri10ge +myrs +n5pf +n_gsm +n_hdlc +n_tracerouter +n_tracesink +nand +nand_ecc +nandcore +nandsim +national +natsemi +nau7802 +navman +nb8800 +nbd +nci +nci_spi +nci_uart +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +nd_virtio +ne2k-pci +neofb +net1080 +net2272 +net2280 +net_failover +netconsole +netdevsim +netjet +netlink_diag +netrom +netup-unidvb +netxen_nic +newtonkbd +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfc +nfc_digital +nfcmrvl +nfcmrvl_i2c +nfcmrvl_spi +nfcmrvl_uart +nfcmrvl_usb +nfcsim +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfp +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nftl +ngene +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +nhpoly1305 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +ni_labpc_isadma +ni_labpc_pci +ni_pcidio +ni_pcimio +ni_routing +ni_tio +ni_tiocmd +ni_usb6501 +nicpf +nicstar +nicvf +nilfs2 +niu +nixge +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +noa1305 +noon010pc30 +nosy +notifier-error-inject +nouveau +nozomi +npcm750-pwm-fan +nps_enet +ns +ns558 +ns83820 +nsh +ntb +ntb_hw_idt +ntb_hw_switchtec +ntb_netdev +ntb_perf +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +null_blk +nvidiafb +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmem-rave-sp-eeprom +nvmem-reboot-mode +nvmem_qcom-spmi-sdam +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +nwl-dsi +nx-compress +nx-compress-powernv +nx-compress-pseries +nxp-nci +nxp-nci_i2c +nxp-ptn3460 +nxp-tja11xx +nxt200x +nxt6000 +objagg +ocelot_vsc7514 +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ocrdma +ocxl +of-fpga-region +of_mmc_spi +of_pmem +of_xilinx_wdt +ofb +ofpart +ohci-platform +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opal-prd +opencores-kbd +openvswitch +oprofile +opt3001 +opticon +option +or51132 +or51211 +orangefs +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +oti6858 +otm3225a +ov13858 +ov2640 +ov2659 +ov2680 +ov2685 +ov2740 +ov5640 +ov5645 +ov5647 +ov5670 +ov5675 +ov5695 +ov6650 +ov7251 +ov7640 +ov7670 +ov772x +ov7740 +ov8856 +ov9640 +ov9650 +overlay +oxu210hp-hcd +p54common +p54pci +p54spi +p54usb +p8022 +pa12203001 +palmas-pwrbutton +palmas-regulator +palmas_gpadc +pandora_bl +panel +panel-arm-versatile +panel-asus-z00t-tm5p5-n35596 +panel-boe-himax8279d +panel-boe-tv101wum-nl6 +panel-elida-kd35t133 +panel-feixin-k101-im2ba02 +panel-feiyang-fy07024di26a30d +panel-ilitek-ili9322 +panel-ilitek-ili9881c +panel-innolux-p079zca +panel-jdi-lt070me05000 +panel-kingdisplay-kd097d04 +panel-leadtek-ltk050h3146w +panel-leadtek-ltk500hd1829 +panel-lg-lb035q02 +panel-lg-lg4573 +panel-lvds +panel-nec-nl8048hl11 +panel-novatek-nt35510 +panel-novatek-nt39016 +panel-olimex-lcd-olinuxino +panel-orisetech-otm8009a +panel-osd-osd101t2587-53ts +panel-panasonic-vvx10f034n00 +panel-raspberrypi-touchscreen +panel-raydium-rm67191 +panel-raydium-rm68200 +panel-rocktech-jh057n00900 +panel-ronbo-rb070d30 +panel-samsung-ld9040 +panel-samsung-s6d16d0 +panel-samsung-s6e3ha2 +panel-samsung-s6e63j0x03 +panel-samsung-s6e63m0 +panel-samsung-s6e88a0-ams452ef01 +panel-samsung-s6e8aa0 +panel-seiko-43wvf1g +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-sharp-ls043t1le01 +panel-simple +panel-sitronix-st7701 +panel-sitronix-st7789v +panel-sony-acx424akp +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +panel-tpo-tpg110 +panel-truly-nt35597 +panel-visionox-rm69299 +panel-xinpeng-xpp055c272 +papr_scm +parade-ps8622 +parade-ps8640 +paride +parkbd +parman +parport +parport_ax88796 +parport_pc +parport_serial +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_it8213 +pata_it821x +pata_jmicron +pata_legacy +pata_marvell +pata_mpiix +pata_netcell +pata_ninja32 +pata_ns87410 +pata_ns87415 +pata_of_platform +pata_oldpiix +pata_opti +pata_optidma +pata_pdc2027x +pata_pdc202xx_old +pata_piccolo +pata_platform +pata_radisys +pata_rdc +pata_rz1000 +pata_sch +pata_serverworks +pata_sil680 +pata_sis +pata_sl82c105 +pata_triflex +pata_via +pblk +pc300too +pcap-regulator +pcap_keys +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci-pf-stub +pci-stub +pci200syn +pcips2 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_pciefd +peak_usb +pegasus +pegasus_notetaker +penmount +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-cadence-salvo +phy-cadence-sierra +phy-cadence-torrent +phy-cpcap-usb +phy-exynos-usb2 +phy-fsl-imx8-mipi-dphy +phy-fsl-imx8mq-usb +phy-generic +phy-gpio-vbus-usb +phy-isp1301 +phy-mapphone-mdm6600 +phy-ocelot-serdes +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-usb-hs +phy-qcom-usb-hsic +phy-tahvo +phy-tusb1210 +phylink +physmap +pi3usb30532 +pi433 +pinctrl-axp209 +pinctrl-da9062 +pinctrl-lochnagar +pinctrl-madera +pinctrl-max77620 +pinctrl-mcp23s08 +pinctrl-mcp23s08_i2c +pinctrl-mcp23s08_spi +pinctrl-rk805 +pinctrl-stmfx +ping +pistachio-internal-dac +pixcir_i2c_ts +pkcs7_test_key +pkcs8_key_parser +pktcdvd +pktgen +pl2303 +plat-ram +plat_nand +platform_lcd +platform_mhu +plip +plusb +pluto2 +plx_dma +plx_pci +pm-notifier-error-inject +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pms7003 +pn532_uart +pn533 +pn533_i2c +pn533_usb +pn544 +pn544_i2c +pn_pep +pnv-php +poly1305_generic +port100 +powermate +powernv-op-panel +powernv-rng +powernv_flash +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +ppp_synctty +pppoatm +pppoe +pppox +pps-gpio +pps-ldisc +pps_parport +pptp +pretimeout_panic +prism2_usb +ps2-gpio +ps2mult +psample +pseries-rng +pseries_energy +psmouse +psnap +pstore_blk +pstore_zone +psxpad-spi +pt +ptp-qoriq +ptp_clockmatrix +ptp_idt82p33 +ptp_ines +pulse8-cec +pulsedlight-lidar-lite-v2 +pv88060-regulator +pv88080-regulator +pv88090-regulator +pvpanic +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm-fan +pwm-fsl-ftm +pwm-iqs620a +pwm-ir-tx +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pwm-vibra +pwm_bl +pwrseq_emmc +pwrseq_sd8787 +pwrseq_simple +pxa27x_udc +pxe1610 +pxrc +qca8k +qca_7k_common +qcaspi +qcauart +qcaux +qcom-cpr +qcom-emac +qcom-spmi-adc5 +qcom-spmi-iadc +qcom-spmi-vadc +qcom-vadc-common +qcom-wled +qcom_glink +qcom_glink_rpm +qcom_spmi-regulator +qcserial +qed +qede +qedf +qedi +qedr +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1b0004 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qrtr +qrtr-mhi +qrtr-smd +qrtr-tun +qsemi +qt1010 +qt1050 +qt1070 +qt2160 +qtnfmac +qtnfmac_pcie +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723bs +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si470x-common +radio-si470x-i2c +radio-si470x-usb +radio-si476x +radio-tea5764 +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +rainshadow-cec +ramoops +rave-sp +rave-sp-backlight +rave-sp-pwrbutton +rave-sp-wdt +raw +raw_diag +raw_gadget +raydium_i2c_ts +rbd +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-astrometa-t2hybrid +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-beelink-gs1 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-d680-dmb +rc-delock-61959 +rc-dib0700-nec +rc-dib0700-rc5 +rc-digitalnow-tinytwin +rc-digittrade +rc-dm1105-nec +rc-dntv-live-dvb-t +rc-dntv-live-dvbt-pro +rc-dtt200u +rc-dvbsky +rc-dvico-mce +rc-dvico-portable +rc-em-terratec +rc-encore-enltv +rc-encore-enltv-fm53 +rc-encore-enltv2 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-geekbox +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-hisi-poplar +rc-hisi-tv-demo +rc-imon-mce +rc-imon-pad +rc-imon-rsc +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-khadas +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-odroid +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-reddo +rc-snapstream-firefly +rc-streamzap +rc-su3000 +rc-tango +rc-tanix-tx3mini +rc-tanix-tx5max +rc-tbs-nec +rc-technisat-ts35 +rc-technisat-usb2 +rc-terratec-cinergy-c-pci +rc-terratec-cinergy-s2-hd +rc-terratec-cinergy-xs +rc-terratec-slim +rc-terratec-slim-2 +rc-tevii-nec +rc-tivo +rc-total-media-in-hand +rc-total-media-in-hand-02 +rc-trekstor +rc-tt-1500 +rc-twinhan-dtv-cab-ci +rc-twinhan1027 +rc-vega-s9x +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-videostrong-kii-pro +rc-wetek-hub +rc-wetek-play2 +rc-winfast +rc-winfast-usbii-deluxe +rc-x96max +rc-xbox-dvd +rc-zx-irdec +rc5t583-regulator +rcar_dw_hdmi +rcuperf +rdc321x-southbridge +rdma_cm +rdma_rxe +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +realtek-smi +reboot-mode +redboot +redrat3 +reed_solomon +regmap-i3c +regmap-sccb +regmap-sdw +regmap-slimbus +regmap-spmi +regmap-w1 +regulator-haptic +reiserfs +repaper +reset-ti-syscon +resistive-adc-touch +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd77402 +rfd_ftl +rfkill-gpio +rio-scan +rio_cm +rio_mport_cdev +rionet +rivafb +rj54n1cb0c +rk805-pwrkey +rk808 +rk808-regulator +rm3100-core +rm3100-i2c +rm3100-spi +rmd128 +rmd160 +rmd256 +rmd320 +rmi_core +rmi_i2c +rmi_smbus +rmi_spi +rmnet +rn5t618 +rn5t618-adc +rn5t618-regulator +rn5t618_wdt +rnbd-client +rnbd-server +rndis_host +rndis_wlan +rockchip +rocker +rocket +rohm-bd70528 +rohm-bd71828 +rohm-bd718x7 +rohm-regulator +rohm_bu21023 +roles +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcrdma +rpcsec_gss_krb5 +rpmsg_char +rpmsg_core +rpr0521 +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033-regulator +rt5033_battery +rt61pci +rt73usb +rt9455_charger +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab-b5ze-s3 +rtc-ab-eoz9 +rtc-ab3100 +rtc-abx80x +rtc-as3722 +rtc-bd70528 +rtc-bq32k +rtc-bq4802 +rtc-cadence +rtc-cmos +rtc-cpcap +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +rtc-ds1302 +rtc-ds1305 +rtc-ds1307 +rtc-ds1343 +rtc-ds1347 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1685 +rtc-ds1742 +rtc-ds2404 +rtc-ds3232 +rtc-em3027 +rtc-fm3130 +rtc-ftrtc010 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12026 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max6916 +rtc-max77686 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf85363 +rtc-pcf8563 +rtc-pcf8583 +rtc-r7301 +rtc-r9701 +rtc-rc5t583 +rtc-rc5t619 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3028 +rtc-rv3029c2 +rtc-rv8803 +rtc-rx4581 +rtc-rx6110 +rtc-rx8010 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-sd3078 +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtc-zynqmp +rtc_cmos_setup +rtd520 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtl8188ee +rtl818x_pci +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192ee +rtl8192se +rtl8723-common +rtl8723ae +rtl8723be +rtl8821ae +rtl8xxxu +rtl_pci +rtl_usb +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rtrs-client +rtrs-core +rtrs-server +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rtw88_8723d +rtw88_8723de +rtw88_8822b +rtw88_8822be +rtw88_8822c +rtw88_8822ce +rtw88_core +rtw88_pci +rx51_battery +rxrpc +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s3fwrn5 +s3fwrn5_i2c +s526 +s5c73m3 +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5k4ecgx +s5k5baf +s5k6a3 +s5k6aa +s5m8767 +s626 +s6sy761 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7706h +safe_serial +salsa20_generic +sample-trace-array +samsung-keypad +samsung-sxgbe +sata_dwc_460ex +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savagefb +sbp_target +sbs-battery +sbs-charger +sbs-manager +sc16is7xx +sc92031 +sca3000 +scanlog +sch_atm +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +sctp +sctp_diag +sd_adc_modulator +sdhci +sdhci-cadence +sdhci-milbeaut +sdhci-of-arasan +sdhci-of-aspeed +sdhci-of-at91 +sdhci-of-dwcmshc +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-omap +sdhci-pci +sdhci-pltfm +sdhci-xenon-driver +sdhci_am654 +sdhci_f_sdh30 +sdio_uart +seed +sensorhub +serial_ir +serio_raw +sermouse +serpent_generic +serport +ses +sf-pdma +sfc +sfc-falcon +sfp +sgi_w1 +sgp30 +sha1-powerpc +sha3_generic +shark2 +shiftfs +sht15 +sht21 +sht3x +shtc1 +si1133 +si1145 +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sifive +sii902x +sii9234 +sil-sii8620 +sil164 +silead +simple-bridge +siox-bus-gpio +siox-core +sir_ir +sirf-audio-codec +sis190 +sis5595 +sis900 +sis_i2c +sisfb +sisusbvga +sit +siw +sja1000 +sja1000_isa +sja1000_platform +sja1105 +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slg51000-regulator +slicoss +slim-qcom-ctrl +slimbus +slip +slram +sm3_generic +sm4_generic +sm501 +sm501fb +sm712fb +sm750fb +sm_common +sm_ftl +smartpqi +smb347-charger +smc +smc_diag +smiapp +smiapp-pll +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-aloop +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-ens1370 +snd-ens1371 +snd-fireface +snd-firewire-digi00x +snd-firewire-lib +snd-firewire-motu +snd-firewire-tascam +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-generic +snd-hda-codec-hdmi +snd-hda-codec-idt +snd-hda-codec-realtek +snd-hda-codec-si3054 +snd-hda-codec-via +snd-hda-core +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hrtimer +snd-hwdep +snd-i2c +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +snd-intel-dspcfg +snd-intel8x0 +snd-intel8x0m +snd-isight +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-mia +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-63xx +snd-soc-ac97 +snd-soc-acp-da7219mx98357-mach +snd-soc-acp-rt5645-mach +snd-soc-adau-utils +snd-soc-adau1701 +snd-soc-adau1761 +snd-soc-adau1761-i2c +snd-soc-adau1761-spi +snd-soc-adau17x1 +snd-soc-adau7002 +snd-soc-adau7118 +snd-soc-adau7118-hw +snd-soc-adau7118-i2c +snd-soc-ak4104 +snd-soc-ak4118 +snd-soc-ak4458 +snd-soc-ak4554 +snd-soc-ak4613 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-ak5558 +snd-soc-alc5623 +snd-soc-audio-graph-card +snd-soc-bd28623 +snd-soc-bt-sco +snd-soc-core +snd-soc-cpcap +snd-soc-cs35l32 +snd-soc-cs35l33 +snd-soc-cs35l34 +snd-soc-cs35l35 +snd-soc-cs35l36 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +snd-soc-cs42l42 +snd-soc-cs42l51 +snd-soc-cs42l51-i2c +snd-soc-cs42l52 +snd-soc-cs42l56 +snd-soc-cs42l73 +snd-soc-cs42xx8 +snd-soc-cs42xx8-i2c +snd-soc-cs43130 +snd-soc-cs4341 +snd-soc-cs4349 +snd-soc-cs53l30 +snd-soc-cx2072x +snd-soc-da7213 +snd-soc-da7219 +snd-soc-dmic +snd-soc-es7134 +snd-soc-es7241 +snd-soc-es8316 +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-fsl-asrc +snd-soc-fsl-audmix +snd-soc-fsl-easrc +snd-soc-fsl-esai +snd-soc-fsl-micfil +snd-soc-fsl-mqs +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-gtm601 +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-inno-rk3036 +snd-soc-lochnagar-sc +snd-soc-max9759 +snd-soc-max98088 +snd-soc-max98357a +snd-soc-max98373 +snd-soc-max98390 +snd-soc-max98504 +snd-soc-max9860 +snd-soc-max9867 +snd-soc-max98927 +snd-soc-mikroe-proto +snd-soc-msm8916-analog +snd-soc-msm8916-digital +snd-soc-mt6351 +snd-soc-mt6358 +snd-soc-mt6660 +snd-soc-nau8540 +snd-soc-nau8810 +snd-soc-nau8822 +snd-soc-nau8824 +snd-soc-pcm1681 +snd-soc-pcm1789-codec +snd-soc-pcm1789-i2c +snd-soc-pcm179x-codec +snd-soc-pcm179x-i2c +snd-soc-pcm179x-spi +snd-soc-pcm186x +snd-soc-pcm186x-i2c +snd-soc-pcm186x-spi +snd-soc-pcm3060 +snd-soc-pcm3060-i2c +snd-soc-pcm3060-spi +snd-soc-pcm3168a +snd-soc-pcm3168a-i2c +snd-soc-pcm3168a-spi +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rk3328 +snd-soc-rl6231 +snd-soc-rt1308-sdw +snd-soc-rt5616 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5682 +snd-soc-rt5682-sdw +snd-soc-rt700 +snd-soc-rt711 +snd-soc-rt715 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-sigmadsp-regmap +snd-soc-simple-amplifier +snd-soc-simple-card +snd-soc-simple-card-utils +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2305 +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-sti-sas +snd-soc-tas2552 +snd-soc-tas2562 +snd-soc-tas2770 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tas5720 +snd-soc-tas6424 +snd-soc-tda7419 +snd-soc-tfa9879 +snd-soc-tlv320adcx140 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic32x4-i2c +snd-soc-tlv320aic32x4-spi +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-tscs42xx +snd-soc-tscs454 +snd-soc-uda1334 +snd-soc-wcd9335 +snd-soc-wcd934x +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8524 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8960 +snd-soc-wm8962 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8985 +snd-soc-wsa881x +snd-soc-xlnx-formatter-pcm +snd-soc-xlnx-i2s +snd-soc-xlnx-spdif +snd-soc-xtfpga-i2s +snd-soc-zl38060 +snd-soc-zx-aud96p22 +snd-sof +snd-sof-of +snd-sof-pci +snd-timer +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-usbmidi-lib +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx-lib +snd-vx222 +snd-ymfpci +snic +snps_udc_core +snps_udc_plat +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +soundwire-bus +soundwire-qcom +sp2 +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_dectlk +speakup_dummy +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +speedfax +speedtch +spi-altera +spi-amd +spi-axi-spi-engine +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-dw-pci +spi-fsi +spi-gpio +spi-lm70llp +spi-loopback-test +spi-mux +spi-mxic +spi-nor +spi-nxp-fspi +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-sifive +spi-slave-system-control +spi-slave-time +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spi_ks8995 +spidev +spinand +spl +spmi +sprd_serial +sps30 +sr030pc30 +sr9700 +sr9800 +srf04 +srf08 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st-mipid02 +st-nci +st-nci_i2c +st-nci_spi +st1232 +st21nfca_hci +st21nfca_i2c +st7586 +st7735r +st95hf +st_accel +st_accel_i2c +st_accel_spi +st_drv +st_gyro +st_gyro_i2c +st_gyro_spi +st_lsm6dsx +st_lsm6dsx_i2c +st_lsm6dsx_i3c +st_lsm6dsx_spi +st_magn +st_magn_i2c +st_magn_spi +st_pressure +st_pressure_i2c +st_pressure_spi +st_sensors +st_sensors_i2c +st_sensors_spi +st_uvis25_core +st_uvis25_i2c +st_uvis25_spi +starfire +stb0899 +stb6000 +stb6100 +ste10Xp +stex +stinger +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stmfts +stmfx +stmmac +stmmac-pci +stmmac-platform +stmpe-adc +stmpe-keypad +stmpe-ts +stowaway +stp +stpmic1 +stpmic1_onkey +stpmic1_regulator +stpmic1_wdt +streamzap +streebog_generic +stts751 +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv0910 +stv6110 +stv6110x +stv6111 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +surface3_spi +svgalib +switchtec +sx8 +sx8654 +sx9310 +sx9500 +sy8106a-regulator +sy8824x +sym53c8xx +symbolserial +synaptics_i2c +synaptics_usb +synclink +synclink_gt +synclinkmp +syscon-reboot-mode +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +tag_8021q +tag_ar9331 +tag_brcm +tag_dsa +tag_edsa +tag_gswip +tag_ksz +tag_lan9303 +tag_mtk +tag_ocelot +tag_qca +tag_sja1105 +tag_trailer +tap +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc-dwc-g210 +tc-dwc-g210-pci +tc-dwc-g210-pltfrm +tc358743 +tc358764 +tc358767 +tc358768 +tc3589x-keypad +tc654 +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcan4x5x +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcpci +tcpci_rt1711h +tcpm +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18250 +tda18271 +tda18271c2dd +tda1997x +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda9950 +tda998x +tdfxfb +tdo24m +tea +tea575x +tea5761 +tea5767 +tea6415c +tea6420 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tehuti +teranetics +test_blackhole_dev +test_bpf +test_power +tg3 +tgr192 +thc63lvd1024 +thermal-generic-adc +thermal_mmio +thmc50 +ths7303 +ths8200 +thunder_bgx +thunder_xcv +thunderbolt +thunderbolt-net +ti-adc081c +ti-adc0832 +ti-adc084s021 +ti-adc108s102 +ti-adc12138 +ti-adc128s052 +ti-adc161s626 +ti-ads1015 +ti-ads124s08 +ti-ads7950 +ti-ads8344 +ti-ads8688 +ti-dac082s085 +ti-dac5571 +ti-dac7311 +ti-dac7612 +ti-lmu +ti-sn65dsi86 +ti-tfp410 +ti-tlc4541 +ti-tpd12s015 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_usb_3410_5052 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +tlan +tls +tlv320aic23b +tm2-touchkey +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp007 +tmp102 +tmp103 +tmp108 +tmp401 +tmp421 +tmp513 +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpl0102 +tpm_atmel +tpm_key_parser +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tpm_tis_spi +tpm_vtpm_proxy +tps40422 +tps51632-regulator +tps53679 +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65086 +tps65086-regulator +tps65090-charger +tps65090-regulator +tps65132-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps6598x +tps80031-regulator +tqmx86 +trace-printk +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +ts_fsm +ts_kmp +tsc2004 +tsc2005 +tsc2007 +tsc200x-core +tsc40 +tsi568 +tsi57x +tsl2550 +tsl2563 +tsl2583 +tsl2772 +tsl4531 +tsys01 +tsys02d +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +ttynull +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw2804 +tw5864 +tw68 +tw686x +tw9903 +tw9906 +tw9910 +twidjoy +twl-regulator +twl4030-madc +twl4030-pwrbutton +twl4030-vibra +twl4030_charger +twl4030_keypad +twl4030_madc_battery +twl4030_wdt +twl6030-gpadc +twl6030-regulator +twl6040-vibra +twofish_common +twofish_generic +typec +typec_displayport +typec_nvidia +typec_ucsi +typhoon +u132-hcd +uPD60620 +u_audio +u_ether +u_serial +uacce +uartlite +uas +ubi +ubifs +ubuntu-host +ucan +ucb1400_core +ucb1400_ts +ucc_uart +ucd9000 +ucd9200 +ucs1002_power +ucsi_ccg +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufshcd-core +ufshcd-dwc +ufshcd-pci +ufshcd-pltfrm +uhid +uio +uio_aec +uio_cif +uio_dmem_genirq +uio_fsl_elbc_gpcm +uio_mf624 +uio_netx +uio_pci_generic +uio_pdrv_genirq +uio_pruss +uio_sercos3 +uleds +uli526x +ulpi +umem +ums-alauda +ums-cypress +ums-datafab +ums-eneub6250 +ums-freecom +ums-isd200 +ums-jumpshot +ums-karma +ums-onetouch +ums-realtek +ums-sddr09 +ums-sddr55 +ums-usbat +unix_diag +upd64031a +upd64083 +upd78f0730 +us5182d +usb-conn-gpio +usb-serial-simple +usb-storage +usb251xb +usb3503 +usb4604 +usb8xxx +usb_8dev +usb_debug +usb_f_acm +usb_f_ecm +usb_f_ecm_subset +usb_f_eem +usb_f_fs +usb_f_hid +usb_f_mass_storage +usb_f_midi +usb_f_ncm +usb_f_obex +usb_f_phonet +usb_f_printer +usb_f_rndis +usb_f_serial +usb_f_ss_lb +usb_f_tcm +usb_f_uac1 +usb_f_uac1_legacy +usb_f_uac2 +usb_f_uvc +usb_wwan +usbatm +usbdux +usbduxfast +usbduxsigma +usbhid +usbip-core +usbip-host +usbip-vudc +usbkbd +usblcd +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usdhi6rol0 +userio +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-dv-timings +v4l2-flash-led-class +v4l2-fwnode +v4l2-mem2mem +v4l2-tpg +vcan +vcnl3020 +vcnl4000 +vcnl4035 +vctrl-regulator +vdpa +vdpa_sim +veml6030 +veml6070 +ves1820 +ves1x93 +veth +vf610_adc +vf610_dac +vfio_mdev +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vdpa +vhost_vsock +via-rhine +via-sdmmc +via-velocity +via686a +vicodec +video-i2c +video-mux +videobuf-core +videobuf-dma-sg +videobuf-vmalloc +videobuf2-common +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-v4l2 +videobuf2-vmalloc +videodev +vim2m +vimc +viperboard +viperboard_adc +virt-dma +virt_wifi +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_pmem +virtio_rpmsg_bus +virtio_scsi +virtio_vdpa +virtiofs +virtual +visor +vitesse +vitesse-vsc73xx-core +vitesse-vsc73xx-platform +vitesse-vsc73xx-spi +vivid +vkms +vl53l0x-i2c +vl6180 +vmac +vme_fake +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vmx-crypto +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vrf +vringh +vs6624 +vsock +vsock_diag +vsock_loopback +vsockmon +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxcan +vxge +vxlan +vz89x +w1-gpio +w1_ds2405 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2430 +w1_ds2431 +w1_ds2433 +w1_ds2438 +w1_ds250x +w1_ds2780 +w1_ds2781 +w1_ds2805 +w1_ds28e04 +w1_ds28e17 +w1_smem +w1_therm +w5100 +w5100-spi +w5300 +w6692 +w83773g +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcd934x +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +wfx +whiteheat +wil6210 +wilc1000 +wilc1000-sdio +wilc1000-spi +wimax +winbond-840 +windfarm_core +wire +wireguard +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x-ts +wm831x_backup +wm831x_bl +wm831x_power +wm831x_wdt +wm8350-hwmon +wm8350-regulator +wm8350_power +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +x_tables +xbox_remote +xc4000 +xc5000 +xcbc +xdpe12284 +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xhci-pci +xhci-pci-renesas +xhci-plat-hcd +xilinx-pr-decoupler +xilinx-spi +xilinx-tpg +xilinx-video +xilinx-vtc +xilinx-xadc +xilinx_emac +xilinx_gmii2rgmii +xilinx_ps2 +xilinx_sdfec +xilinx_uartps +xillybus_core +xillybus_of +xillybus_pcie +xlnx_vcu +xor +xpad +xsens_mt +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LED +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xtkbd +xusbatm +xxhash_generic +xz_dec_test +yam +yealink +yellowfin +yurex +z3fold +zaurus +zavl +zcommon +zd1201 +zd1211rw +zd1301 +zd1301_demod +zet6223 +zforce_ts +zfs +zhenhua +ziirave_wdt +zl10036 +zl10039 +zl10353 +zl6100 +zlua +znvpair +zonefs +zopt2201 +zpa2326 +zpa2326_i2c +zpa2326_spi +zr364xx +zram +zstd +zunicode +zx-tdm --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/ppc64el/generic.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/ppc64el/generic.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/s390x/generic +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/s390x/generic @@ -0,0 +1,13064 @@ +EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 +EXPORT_SYMBOL crypto/ecc 0x1a5faa3a vli_mod_inv +EXPORT_SYMBOL crypto/ecc 0x4c281912 vli_is_zero +EXPORT_SYMBOL crypto/ecc 0x671f7aa5 ecc_is_key_valid +EXPORT_SYMBOL crypto/ecc 0x7c0fbb00 vli_mod_mult_slow +EXPORT_SYMBOL crypto/ecc 0x9263b417 ecc_point_mult_shamir +EXPORT_SYMBOL crypto/ecc 0x92668805 vli_cmp +EXPORT_SYMBOL crypto/ecc 0x9f6efabd vli_sub +EXPORT_SYMBOL crypto/ecc 0xa76b31a2 crypto_ecdh_shared_secret +EXPORT_SYMBOL crypto/ecc 0xd6315f31 ecc_gen_privkey +EXPORT_SYMBOL crypto/ecc 0xde867c29 ecc_is_pubkey_valid_partial +EXPORT_SYMBOL crypto/ecc 0xeac9b99a vli_from_le64 +EXPORT_SYMBOL crypto/ecc 0xed4ae15e ecc_make_pub_key +EXPORT_SYMBOL crypto/nhpoly1305 0x05d9de98 crypto_nhpoly1305_setkey +EXPORT_SYMBOL crypto/nhpoly1305 0x73f47ae6 crypto_nhpoly1305_final +EXPORT_SYMBOL crypto/nhpoly1305 0x7811a918 crypto_nhpoly1305_update +EXPORT_SYMBOL crypto/nhpoly1305 0x8370a931 crypto_nhpoly1305_final_helper +EXPORT_SYMBOL crypto/nhpoly1305 0xd2f04c0e crypto_nhpoly1305_init +EXPORT_SYMBOL crypto/nhpoly1305 0xec1cb070 crypto_nhpoly1305_update_helper +EXPORT_SYMBOL crypto/sha3_generic 0x540afe95 crypto_sha3_final +EXPORT_SYMBOL crypto/sha3_generic 0x5b74cb29 crypto_sha3_update +EXPORT_SYMBOL crypto/sha3_generic 0xf1ff5ea9 crypto_sha3_init +EXPORT_SYMBOL crypto/sm3_generic 0x1870479c crypto_sm3_update +EXPORT_SYMBOL crypto/sm3_generic 0xe46caea0 crypto_sm3_finup +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/gpu/drm/drm 0x022fe008 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02fab4c5 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03156232 __drm_get_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c7cc76 drm_invalid_op +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05454327 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07081932 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070b28aa drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0712e21d drm_edid_get_monitor_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0719309a drm_panel_unprepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x072fb602 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07358a75 drm_gem_shmem_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07ecad05 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07f88521 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a996b3 drm_gem_shmem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x091e112e drm_plane_create_zpos_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bc0ab08 drm_atomic_normalize_zpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c9c3d4b drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d481339 drm_hdmi_avi_infoframe_bars +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d5621e3 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dee1c9a drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e28b663 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ecd5d24 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ee311a5 drm_atomic_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f0f456f drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f852145 drm_release_noglobal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10058e44 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10487b1c drm_mode_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10c62b61 __drm_printfn_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1155b97d drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1161e9e0 drm_syncobj_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11944c55 drm_atomic_set_fence_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x128fc1a4 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x132e7bfe drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e14103 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a0383e drm_client_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1557022c drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15d8aa41 __drm_printfn_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16ac2597 drm_printf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x172597f7 drm_gem_map_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17a9f07f drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x186255d5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18d9e6a1 drm_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a310ace drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411479 drm_syncobj_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1abdc77e drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1adcfcf4 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b132945 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ca32c8f drm_writeback_queue_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1da20406 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1efa8be9 drm_syncobj_get_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f302c23 drm_crtc_vblank_helper_get_vblank_timestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2155ff4d drm_modeset_lock_single_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2183c08c drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23ede52b drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x243bb9fd drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24ca578b drm_crtc_vblank_helper_get_vblank_timestamp_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2532689b drm_mode_is_420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x258a5b9e drm_connector_set_link_status_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25daad93 __drm_mm_interval_first +EXPORT_SYMBOL drivers/gpu/drm/drm 0x271f0a22 drm_syncobj_add_point +EXPORT_SYMBOL drivers/gpu/drm/drm 0x272529b9 drm_bridge_chain_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2754dad8 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x275ce71b drm_send_event_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28872458 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28c86af2 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28f30434 drm_plane_create_alpha_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f078d1 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6048f2 drm_client_rotation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a962499 drm_mm_scan_init_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af3314d drm_is_current_master +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b627997 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bc9b9f8 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f97d8b2 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe74cd2 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3018bf6a drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x304013a1 drm_crtc_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x305c6548 drm_atomic_private_obj_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x315bc43e drm_gem_unlock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x318476b5 drm_mode_object_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31b8a5e3 __drm_set_edid_firmware_path +EXPORT_SYMBOL drivers/gpu/drm/drm 0x323d7ab5 drm_gem_prime_import_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32df2e21 drm_hdcp_update_content_protection +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34144df7 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34f9444a drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34fc058d drm_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3503d682 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35742b4b drm_plane_create_color_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35afae24 __drm_puts_seq_file +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36ddec95 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3768f844 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x378d294c drm_mode_is_420_also +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38804f60 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x397f3ea7 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39f8aae2 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a0a37f5 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a9c8386 drm_send_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba17eab drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bf13853 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cc3ac54 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dc04c21 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dc69544 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eeba81f drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f389eac drm_gem_shmem_create_with_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fbf3c5f drm_gem_shmem_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403b0458 drm_dev_enter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40b0e48b drm_client_dev_hotplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41ddd285 drm_any_plane_has_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4302691a drm_event_reserve_init_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4326ab44 drm_gem_shmem_purge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4347d8d5 drm_dev_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4365579f drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43674f9e drm_atomic_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43748907 drm_client_framebuffer_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4423f170 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4611a90d drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46b9dcfc drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46ff6354 drm_connector_list_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474156b5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4744d973 drm_bridge_chain_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47831126 drm_hdmi_infoframe_set_hdr_metadata +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47a8f266 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47f985aa drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x484036de drm_connector_attach_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48527c3e drm_mode_validate_driver +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48ce9350 drm_writeback_signal_completion +EXPORT_SYMBOL drivers/gpu/drm/drm 0x492992c1 drm_dev_unplug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4951cdc9 drm_writeback_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49dedc82 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a2b3424 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a887555 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a8c0666 drm_connector_attach_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ac44834 __drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b7ebf95 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c2cbc64 drm_mode_put_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c500e16 drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cd22ae3 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d05cfde drm_connector_attach_content_protection_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d59685a drm_connector_init_with_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e095f11 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e7a2eaa drm_atomic_get_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4eb411f8 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4efd6854 drm_gem_shmem_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f1248cd drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f18a150 __drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50674de7 drm_timeout_abs_to_jiffies +EXPORT_SYMBOL drivers/gpu/drm/drm 0x506c998d drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e61d93 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52ea4819 drm_atomic_nonblocking_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x538b7ee5 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5432d2ba drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55074423 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55420ed8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55fc9dde drm_client_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56445ab1 drm_color_lut_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0x569440c1 drm_atomic_get_new_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56a94b11 drm_connector_list_iter_end +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c658f6 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56c6e828 drm_mode_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5728d6be drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57698a50 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b98d40 drm_client_framebuffer_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57fc8908 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x583f7ad2 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58b902ce drm_print_regset32 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e9412d drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59056243 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59521a88 drmm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59d0cfd7 drm_gem_object_put_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a1c11ea drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a4705ed drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a5ed873 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c01abed drmm_add_final_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1e857c drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e02ffca drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e462931 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e7ee466 drm_gem_lock_reservations +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f4c8274 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f7985a5 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f9d998e drm_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62193f58 drm_gem_dmabuf_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62434654 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e0b8f4 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e4dfc0 drm_framebuffer_plane_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x637cac19 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6391d526 drm_event_cancel_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63a228ff drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63f0ab41 drm_connector_list_iter_begin +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63fb93bb drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x648ad6cc drm_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66551bc7 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6747fcba drm_writeback_get_out_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6805d8d6 drm_client_modeset_probe +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68187ca3 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x686204d9 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x688da1c2 drm_state_dump +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c0b8c6 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b032354 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b29c1b8 drm_gem_unmap_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ce1055a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6de47884 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f32ca59 drm_mode_validate_ycbcr420 +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7062d653 drm_gem_map_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x708ea7d0 drm_ioctl_kernel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71ae093d drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x722ff37e drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72d77cb0 drm_panel_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72e9b363 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72ffc2ac drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74966539 drm_mode_create_dp_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74d5d4bb drm_property_replace_global_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76101b39 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7624e930 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7760a072 drm_client_modeset_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790fe167 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ac97dd6 drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b536928 drm_crtc_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c25d0b2 drm_syncobj_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cebd129 drm_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d38fa52 drm_hdmi_avi_infoframe_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d47bd08 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7edc546f drm_mm_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fce0953 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x801e0fed drm_crtc_enable_color_mgmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8108949d drm_mode_equal_no_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81992424 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x826c7f70 drm_crtc_vblank_waitqueue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8514203c drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x854ce2dd drm_crtc_arm_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8563a554 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x893c4c0e drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a274d16 drm_gem_dma_resv_wait +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c322b69 drm_atomic_get_old_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4fd37c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d308586 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d3d9aa1 drm_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d513863 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d7ca65d drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8da5a7b7 __devm_drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ea5f210 drm_property_blob_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ef9b53c drm_atomic_private_obj_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90de1c1a drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x916f2452 drm_client_buffer_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91774ddf drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91af0dd4 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9213f5c3 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92fa7611 drm_writeback_cleanup_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9373a490 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x937514cb drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93a55fc0 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x949fd06f drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95255591 __drmm_add_action +EXPORT_SYMBOL drivers/gpu/drm/drm 0x955d9f87 drm_client_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95dbc76d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x972bb54d drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x977ddaf1 drm_syncobj_get_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x978020d2 drm_client_modeset_commit_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97aa8c87 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9812be5b drm_connector_set_panel_orientation +EXPORT_SYMBOL drivers/gpu/drm/drm 0x982698bd drm_mode_match +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9866f707 drm_master_internal_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x988f5bf4 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x995b355a drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fd20aa drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0ab703 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a11b45d drm_plane_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a187ee9 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a695e38 drm_gem_dmabuf_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b8a53f5 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c679271 drm_syncobj_replace_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9defb652 drm_client_modeset_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e7cd2ee drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ea8fa60 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ee88b9a drm_atomic_add_encoder_bridges +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ef506c6 drm_gem_shmem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fef63c0 drm_crtc_accurate_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa002fd9a drm_connector_attach_max_bpc_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0713087 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2954581 drm_property_blob_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3015425 __drmm_add_action_or_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa30b79c5 drm_atomic_get_old_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4239e99 drm_atomic_get_new_connector_for_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa461d651 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa469a797 drm_mode_create_hdmi_colorspace_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa606ba58 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa659502e drmm_kmalloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa715c009 drm_connector_attach_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa829174e drm_mode_create_tv_margin_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8ad5d01 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8c08831 drm_gem_fence_array_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa948efb2 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa957482b drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9f514a8 drm_gem_object_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac39ff3 __drm_printfn_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc8ce44 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc9b195 drm_atomic_get_bridge_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabd8ebc7 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac0abab4 drm_gem_map_dma_buf +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac33cec4 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac3825bb drm_mode_create_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac5252c5 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xace69d00 drm_ioctl_permit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad4e902b drm_color_ctm_s31_32_to_qm_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad75518d drm_connector_attach_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad86bf29 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae277372 __drm_crtc_commit_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf777bb8 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafe1ee18 drm_add_override_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xafe51fea drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb052b7c8 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0909974 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0b05ff5 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0be6b0f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb11ac7a7 __drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb234afc2 drm_hdmi_avi_infoframe_colorspace +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb28bcd98 drm_atomic_get_new_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2de40e0 drm_panel_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4032484 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb434a2fc drm_gem_shmem_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4b28e53 drm_modeset_lock_all_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4bb226c drm_dev_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4f24bd8 drm_gem_dmabuf_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51d7719 drm_bridge_chain_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a32ac4 drm_atomic_get_old_private_obj_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6127243 drm_need_swiotlb +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6f5f5b3 drm_atomic_bridge_chain_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb853833f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8bdb3f5 drm_puts +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8df57fc drm_vblank_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9cad492 __drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f56e22 drm_format_info_block_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba7348c5 drm_event_reserve_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb20a5b9 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb33ee7b drm_default_rgb_quant_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb83cbd0 drm_master_internal_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe32c24 drm_sysfs_connector_status_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd3446fa __drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe4e95b0 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf17a320 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc03a08c0 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0bee958 drm_framebuffer_plane_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0c509a9 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc15f3852 drm_property_replace_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1bb492f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2c36138 drm_mode_is_420_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2eefb89 drm_gem_shmem_purge_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc324efb9 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc461c729 drm_connector_attach_content_type_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc596a44a drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5992401 __drm_puts_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6a8eb32 drm_driver_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc74d4a21 drm_bridge_chain_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7a58466 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7f0f027 drm_format_info_min_pitch +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc83a33fe drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8b58bbc drm_get_edid_switcheroo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9096ee3 drm_dev_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9112745 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc985d5db drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca0cf84d drm_panel_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca499f88 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca987bff drm_connector_has_possible_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb2340b8 drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc4e65d5 drm_gem_shmem_pin +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0b1791 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcec6a474 drm_gem_shmem_madvise +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf11a549 drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf616c6e drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf77d7c0 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd00940ef drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd13f9985 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2136f37 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd26ca35b drm_modeset_lock_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29d7517 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2e95765 drm_dev_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3bc8bc3 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd48c86a0 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4b60131 drm_crtc_set_max_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5495492 drm_gem_prime_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5637bdd drm_gem_objects_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5c9e896 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd60c4cda drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd680a377 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd682e965 drmm_kfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a2e4d1 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd833845d drm_hdmi_avi_infoframe_content_type +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8558897 drm_dev_has_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd87e7542 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd96b425a __drm_printfn_coredump +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaf5599d drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb6241d5 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc3e83bd drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc64c9a3 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd3afee9 drm_connector_set_vrr_capable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde185ba8 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde425812 drm_panel_get_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde909cd3 drm_plane_create_zpos_immutable_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdee0fb74 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf3f760d drm_mm_scan_color_evict +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfb98857 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1595d70 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3d94eb3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe407db3d drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe454876d drm_atomic_bridge_chain_check +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe68316a6 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe68a657c drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe79b453e drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe817eb01 __drm_printfn_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a034df drm_dev_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9310283 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9b5f452 drm_writeback_prepare_job +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea063233 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea433c93 drm_gem_fence_array_add_implicit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeafd07a9 drm_get_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec12af74 __drm_dbg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed18e23d drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeda315e3 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee10f14b drm_syncobj_find_fence +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee22c9c8 drm_atomic_bridge_chain_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef14d8c drm_format_info_block_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0517d7a drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0ec7133 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1371d97 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1dd6836 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf28ed338 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf33280c3 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf375a81a drm_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf37b323c drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf406e46a drm_get_connector_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf64077ac drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf753c380 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826786c drm_format_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9ca3b24 drm_crtc_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa3f8754 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa7cd4d2 devm_drm_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfadc02ca drm_connector_set_panel_orientation_with_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb084119 drm_bridge_chain_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb3bc572 drm_gem_dmabuf_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbcddb5f drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc994406 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcc0e044 drm_client_buffer_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd0de52d drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd3600fb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdd6c6a8 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe0dfedd drm_plane_create_blend_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed795af drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff8de91d drm_print_bits +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff90a292 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x013e4805 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01a01a8a drm_fb_swab16 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028bf31a drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x028f03ed drm_fb_xrgb8888_to_rgb565_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05af763d drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06c49551 drm_dp_dsc_sink_line_buf_depth +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0767fc17 drm_atomic_helper_commit_cleanup_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0781625e drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x084424c2 drm_scdc_set_high_tmds_clock_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08bb8d3d drm_gem_fb_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b6dcd5b drm_fb_helper_alloc_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b87aca0 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b923351 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0efff27f drm_dp_remote_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f0c1f12 drm_atomic_helper_commit_tail +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f8c1d13 drm_dp_mst_topology_state_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0fdb9036 drm_dp_vsc_sdp_log +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11826ddd drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x141cc8e9 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x157ca4c9 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18bfc9d7 drm_dp_dual_mode_set_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18ca2145 drm_fb_helper_sys_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x193cd958 devm_drm_panel_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19705bfe drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b58a134 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bc13d2e drm_atomic_helper_wait_for_dependencies +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1c283df0 __drm_atomic_helper_plane_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ca72601 drm_self_refresh_helper_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e629dcc drm_atomic_helper_page_flip_target +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a4b9b1 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24adbe37 drm_dp_mst_atomic_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25b7d779 drm_helper_probe_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26815dbc drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2772565c drm_atomic_helper_fake_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bd22112 drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d4a1942 drm_dp_get_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f6847fa drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x339ad3c7 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34c3511f drm_atomic_helper_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35f392d9 drm_dp_downstream_id +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3604e9b1 drm_atomic_helper_disable_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38b47b84 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39de7326 drm_dp_start_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a479bb4 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8063f3 drm_dp_dsc_sink_supported_input_bpcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b22da7f drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b721b36 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c48465a drm_plane_enable_fb_damage_clips +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d391e5a drm_fb_helper_cfb_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d3c55f8 drm_atomic_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d55bdcd drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3dcf0245 drm_dp_mst_connector_early_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3dd2790f drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ded6430 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f917bd1 drm_simple_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41e4fd7d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x428ee0fe drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42941f6c devm_drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43052b81 drm_fb_helper_deferred_io +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43e55a48 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44ab4f28 drm_simple_display_pipe_attach_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x489d4a63 __drm_atomic_helper_connector_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48a73e9b drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b62a57 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4959b9bb drm_fbdev_generic_setup +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49d168cd drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a3e6000 drm_atomic_helper_connector_tv_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cb88f30 drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4def44f4 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e346319 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x508ab4da drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50abea2e __drm_atomic_helper_bridge_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5137c15a drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53bb7a75 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5407ae9e drm_dp_get_dual_mode_type_name +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x548d0df1 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55819276 drm_atomic_helper_commit_hw_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5704cf34 drm_dp_downstream_debug +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x582f248e drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58714a95 __drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d8fcaa drm_dsc_pps_payload_pack +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59dc4ec8 drm_fb_memcpy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4734d1 drm_kms_helper_is_poll_worker +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c499607 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f67b6dd drm_fb_helper_cfb_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fbafad6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x619dd289 drm_atomic_helper_damage_merged +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61c2a312 drm_atomic_helper_dirtyfb +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x632b216c drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x641e6d20 drm_fb_helper_sys_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x648d953b drm_dsc_dp_pps_header_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6615069e drm_dp_dsc_sink_max_slice_count +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x663d692a drm_fb_helper_unregister_fbi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6775dd2d drm_panel_bridge_add_typed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67e85f68 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68793796 drm_scdc_get_scrambling_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a47b438 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b5c2b06 drm_atomic_helper_damage_iter_next +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6bcb06d3 drm_self_refresh_helper_alter_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c945fc8 drm_lspcon_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e9d00e2 drm_atomic_helper_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x704acece drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7062f7c2 drm_dp_send_power_updown_phy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70d531d3 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73011db0 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73ae8703 drm_atomic_helper_setup_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x741d6c5b drm_gem_fb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75403e50 drm_dp_mst_dsc_aux_for_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75feed9f __drm_atomic_helper_bridge_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e86174 drm_fb_memcpy_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x798583f3 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b0819fc drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7beb6153 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c0a4edd drm_dp_mst_connector_late_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d95dfae drm_dp_dual_mode_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e247090 drm_atomic_helper_check_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x828de959 drm_helper_force_disable_all +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82c4734d drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x830a89fc drm_fb_helper_fill_info +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x849dcc53 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x865d02f9 drm_panel_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x873c2b25 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87f2302b drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x880a237d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88187ea0 drm_dp_set_phy_test_pattern +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x881c592e drm_dp_send_real_edid_checksum +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x890772ea drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x894b1f57 drm_dp_get_adjust_request_post_cursor +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89e44d40 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ca2d9e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d4e59b1 drm_dp_dual_mode_max_tmds_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d701329 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fbacdc3 drm_atomic_helper_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x922bd0a3 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92340566 drm_fb_xrgb8888_to_rgb565 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92d6455a drm_fb_xrgb8888_to_gray8 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x937757e9 drm_scdc_set_scrambling +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x950c47ca drm_dp_mst_get_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x959075fd drm_dp_atomic_release_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9642a1bc drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x982b9dc3 drm_dp_stop_crc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99ed340f drm_dp_mst_add_affected_dsc_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a08aa42 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a52b12e __drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bb2ef98 drm_dp_mst_put_port_malloc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bb32d57 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa16dd318 drm_atomic_helper_bridge_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1fefe6a drm_dp_psr_setup_time +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5c65b drm_dp_get_edid_quirks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa39aad75 __drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa46e9a06 drm_dp_read_desc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5403a09 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5a61d76 drm_fb_helper_sys_imageblit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6ff9496 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8e5cb5f drm_dp_dual_mode_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab0e7cd4 drm_fb_helper_modinit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabbf80a7 drm_dp_get_vc_payload_bw +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac3eec9d drm_atomic_helper_commit_tail_rpm +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafbb4244 drm_atomic_helper_commit_duplicated_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafd9b334 drm_fb_helper_set_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2649960 drm_fb_helper_set_suspend_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb32d6921 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb401473b drm_lspcon_get_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb61b6e36 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7b5fa30 drm_fb_helper_sys_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb804e29b drm_dp_aux_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbe7aa6a drm_scdc_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc3a973c drm_fb_helper_lastclose +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd9c4544 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfab936a drm_atomic_helper_damage_iter_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0020308 drm_dp_dual_mode_get_tmds_output +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0164d44 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0d51a51 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc14c9103 __drm_atomic_helper_private_obj_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3b43a66 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc426cfab drm_fb_helper_cfb_fillrect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4999910 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5c99a79 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc84e4510 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc892b665 drm_atomic_helper_wait_for_fences +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc946488d __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb02f26a drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb20a96c drm_dp_mst_atomic_enable_dsc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbf00679 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc86997a drm_atomic_helper_async_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd041beaf drm_atomic_helper_legacy_gamma_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd10f1adc drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd13eda44 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd180c755 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd22b1ae8 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3851587 drm_atomic_helper_shutdown +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4913dd9 drm_atomic_get_mst_topology_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5ee5e8b drm_fb_xrgb8888_to_rgb888_dstclip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd729e3ae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd85ef509 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda3eba0f drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbf1778c __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdcc707e4 drm_self_refresh_helper_update_avg_times +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdeaa25c9 drm_atomic_helper_wait_for_flip_done +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe02abfbb drm_dp_downstream_max_bpc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0e16815 drm_gem_fb_create_handle +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe42cb1db drm_panel_bridge_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4a7acbd drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4f876b2 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe64cc46d drm_fb_helper_output_poll_changed +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6a441d5 drm_atomic_helper_bridge_propagate_bus_fmt +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6d73302 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6f173ce drm_dp_dual_mode_detect +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe84254a2 __drm_atomic_helper_crtc_state_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9357097 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeabc6214 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb43bdc1 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb7bc123 drm_mode_config_helper_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedcf81ce drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedee1e7d drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee154679 drm_dp_atomic_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeec2811c drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1375fb9 drm_mode_config_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2329e89 drm_dp_downstream_max_clock +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3af578e drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf583d280 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf66b0c63 drm_self_refresh_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf673a7df drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6a69fe8 drm_simple_display_pipe_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7cb5533 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf84eeaa6 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa0c637f drm_atomic_helper_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa8283e0 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd94be23 drm_fb_helper_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff3881c3 drm_scdc_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff5f1456 drm_fb_helper_sys_copyarea +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfffdd0b0 drm_atomic_helper_check_plane_damage +EXPORT_SYMBOL drivers/gpu/drm/drm_panel_orientation_quirks 0x2e439142 drm_get_panel_orientation_quirk +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x06390286 drm_gem_ttm_print_info +EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0xd53a2674 drm_gem_ttm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x098766fe drm_vram_helper_release_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x2d1e2f69 drm_gem_vram_pin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x3fd245d0 drm_gem_vram_vunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x53c2fad2 drm_gem_vram_simple_display_pipe_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x56ad84fe drm_gem_vram_put +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x65532c6b drm_gem_vram_kunmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x6a0acc2c drm_vram_helper_mode_valid +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0x70712eb5 drm_vram_mm_debugfs_init +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xad21bfa7 drm_gem_vram_fill_create_dumb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb2019b77 drm_gem_vram_simple_display_pipe_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xb9e28eb7 drm_gem_vram_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd507909b drm_vram_helper_alloc_mm +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xd7c4d951 drm_gem_vram_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xdf235e70 drm_gem_vram_plane_helper_cleanup_fb +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xdf452412 drm_gem_vram_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe1f3b558 drm_gem_vram_vmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe41f3756 drm_gem_vram_driver_dumb_create +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xe510e058 drm_gem_vram_kmap +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xed42df31 drm_gem_vram_driver_dumb_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xeebc0c83 drm_gem_vram_unpin +EXPORT_SYMBOL drivers/gpu/drm/drm_vram_helper 0xf8114dd4 drm_gem_vram_plane_helper_prepare_fb +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x023caa5e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03072b09 ttm_bo_vm_open +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b2b6758 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0fe20036 ttm_bo_vm_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x165bee99 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18abb1a9 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19c7153a ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19e9a822 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x208503ef ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23453b70 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23ba47c3 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b186596 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3cfdd0b9 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4720151b ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49da53c5 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e87adc8 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50444687 ttm_check_under_lowerlimit +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50e86cff ttm_bo_eviction_valuable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50ead1d1 ttm_bo_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x53586c2a ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x538a7565 ttm_bo_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x573845a6 ttm_bo_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59ca1276 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5f12cd04 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6131e259 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x678b4d22 ttm_mem_glob +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a89746f ttm_bo_mem_compat +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6cf16c67 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6eda5558 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7270fee7 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x780af539 ttm_bo_init_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c37b05a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x81b7e1f0 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8912555f ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x894a8e43 ttm_sg_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cfca670 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9005f56c ttm_bo_pipeline_move +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90eb460f ttm_bo_vm_close +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92dc7a2e ttm_populate_and_map_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96ab338b ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ddd7433 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac0e50d1 ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad8aa2fe ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaec81554 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2f44eb0 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb0b22bd ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb8a7b55 ttm_bo_move_to_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2cd6ba3 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc50233c0 ttm_bo_swapout +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc0d3f6f ttm_bo_vm_fault +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5f89a28 ttm_bo_vm_access +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8dfb063 ttm_get_kernel_zone_memory_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb18789f ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdb5f6c76 ttm_bo_vm_fault_reserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0152e87 ttm_bo_bulk_move_lru_tail +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9f3f026 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeee1f1cb ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xef3fd541 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf454151c ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5702e56 ttm_unmap_and_unpopulate_pages +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff305b88 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff98d118 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x075b7a6f i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3329617e i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x86220243 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/i2c-core 0x0b42265e i2c_smbus_read_word_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x0fd76db1 i2c_smbus_read_byte +EXPORT_SYMBOL drivers/i2c/i2c-core 0x15e83a50 i2c_smbus_write_word_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x16135780 __i2c_transfer +EXPORT_SYMBOL drivers/i2c/i2c-core 0x1dbddee1 i2c_del_adapter +EXPORT_SYMBOL drivers/i2c/i2c-core 0x3e9c7a51 i2c_verify_client +EXPORT_SYMBOL drivers/i2c/i2c-core 0x42571725 i2c_smbus_write_block_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x4a3a38a3 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x6fd55aec __i2c_smbus_xfer +EXPORT_SYMBOL drivers/i2c/i2c-core 0x77545c6f i2c_add_adapter +EXPORT_SYMBOL drivers/i2c/i2c-core 0x789872e2 i2c_smbus_write_byte +EXPORT_SYMBOL drivers/i2c/i2c-core 0x7ff564aa i2c_transfer_buffer_flags +EXPORT_SYMBOL drivers/i2c/i2c-core 0x91be2be3 i2c_smbus_read_byte_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x931f4a91 i2c_smbus_read_block_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0x9449ffb3 i2c_smbus_xfer +EXPORT_SYMBOL drivers/i2c/i2c-core 0x961fc00b i2c_put_adapter +EXPORT_SYMBOL drivers/i2c/i2c-core 0xa4e86666 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0xac706b42 i2c_transfer +EXPORT_SYMBOL drivers/i2c/i2c-core 0xbfd7a51a i2c_register_driver +EXPORT_SYMBOL drivers/i2c/i2c-core 0xc5c8c37d i2c_verify_adapter +EXPORT_SYMBOL drivers/i2c/i2c-core 0xdd8d06a2 i2c_smbus_write_byte_data +EXPORT_SYMBOL drivers/i2c/i2c-core 0xe0acfed3 i2c_clients_command +EXPORT_SYMBOL drivers/i2c/i2c-core 0xf358fbbd i2c_del_driver +EXPORT_SYMBOL drivers/i2c/i2c-core 0xf73ae846 i2c_smbus_read_i2c_block_data_or_emulated +EXPORT_SYMBOL drivers/i2c/i2c-core 0xf979c766 i2c_get_adapter +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x11abaf74 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1d2b0669 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4f161144 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x50d1632b ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x550deb9b ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6a636d16 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa6608bea ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xabaf1122 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb2a6808f ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb341b939 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb35e92e5 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb5e60cd5 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb9c1b455 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbcc85a99 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcca12a18 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe825b196 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x012b8156 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0158cd9d ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02071c36 ib_get_net_dev_by_params +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0307e61a ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05d40018 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06830b9a ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x092387ce rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c70cce9 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c79baf0 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d96a94c rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10175ed2 ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x151991c9 ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16804195 __ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16cb33f4 ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19f07a67 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a226422 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c746411 ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1db13418 rdma_read_gid_hw_context +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1f53078a ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fe7a80b ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21530b5c ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21987edd ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21b3b38e rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26ede105 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27406f45 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2745473c ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28714d0f rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a91bb33 ib_cache_gid_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ba30f54 ib_destroy_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c99001a rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d307f10 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2daeca6e ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f2fb18f ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x318433d0 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34972590 rdma_nl_put_driver_u64_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x354554cd rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x358e133f ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39c729a5 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a7209a5 ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3aeb39ed ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b650d96 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f9672d2 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fcc87bb ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40aa5dc0 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41905ffc ib_sg_to_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42004ebf ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43d16e77 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44166a5f _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44637f04 ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x493daa84 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b176c01 rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bb9683f ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c8dccbd ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dc89548 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e0a1a8f ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e1d1dcb rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f5feae4 roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f91f975 rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4feb302c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x514997a9 ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52312706 rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5441337c __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x546d107b ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54a499bb ib_alloc_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54e950fc ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x550c52c6 rdma_copy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x554b0acc rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55fc0ee6 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56eb2cc4 ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x582a0575 rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59ae66d6 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bf3f56f ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bfa7c65 rdma_read_gid_l2_fields +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d70c0d4 ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5da779c7 rdma_user_mmap_io +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f30f8fd ib_device_get_by_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x622a171b __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65e99c7a ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x665d7611 rdma_copy_src_l2_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c412559 ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d4f3993 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d9e96e2 ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6db94877 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6dc9d199 rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6dda1252 ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x708aeaa5 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70c3e457 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7136dc82 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x729875a3 rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x730672b5 rdma_restrack_uadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74d16507 rdma_restrack_kadd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78d0868c ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cb9f2b3 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cd7c2f6 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ceaa143 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7daeb489 ib_rdmacg_try_charge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ff9cc54 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x820b0fd9 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82c3da52 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8332aa55 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85089886 ib_alloc_mr_integrity +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86eea42a ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87259380 ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88228698 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89fed0ec ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ac6cab5 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ada9476 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ed6900e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fd19b15 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x914c51f9 ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x918239eb rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x921fa525 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92d988e2 rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95afb8b4 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b60142d ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e219b2b ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ec466bd ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa06d7594 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa25ed83f ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2c58192 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa37d36c7 rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5a201a2 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6115295 rdma_restrack_set_task +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8d21919 rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa911f8a2 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa88b59a rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaabbd87b ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab21acb0 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab2b3688 ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac04b170 ib_destroy_qp_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaee38518 rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb000d631 ib_get_gids_from_rdma_hdr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb134cf55 ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb14091e8 ib_create_rwq_ind_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb26ff3ce ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4eb629d ib_map_mr_sg_pi +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb50893e8 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb74318f7 __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7ea495e ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8c52997 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8eea7bb rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaebd9a2 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc9d0014 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd62e6ed ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe4e4eae ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf61b7c3 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfe44886 ib_destroy_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2fa2f71 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc301a893 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc322fc1a rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3f55c13 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5c37e79 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5dc5c67 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6012ced rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc62848d5 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9003a5e ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb6b8bf9 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc062d37 rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc37c47e rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdf24d8e rdma_nl_put_driver_string +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1e4e627 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3cc8344 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd499176b ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4d378cc __ib_alloc_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4da778b ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e65d77 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7a7dbca ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd83d4779 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd93d9e21 rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb88575d rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc873fd0 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd0967bf ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd176171 rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0539cbb ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe10a9a0c ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1320528 ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe277ff2d ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe45d7af4 rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe66d2cac rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe66e6a8f ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe877f20b rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8d78377 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9ceb556 ib_get_rdma_header_version +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e82ea7 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeefe4b18 ib_drain_sq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0bf7d25 ib_sa_sendonly_fullmem_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf38fcb89 rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8927592 rdma_restrack_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8a572f8 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf96fc9de ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfeaf5c6c rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff3e42ff ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x08d23dcb _uverbs_get_const +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0fb9359b uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x15cf1f93 uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x17649b4c ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1845a594 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1e84c66f uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x205b7da3 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x237513e0 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2996d8a8 flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x30e9a370 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x407ad5b7 _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x430db1ec ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4908a3d8 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5218d479 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x53f71e62 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5bd96743 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6869016b uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x72fe57de ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7ade4dcf uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7ae6671f ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7b2af67d ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x8f95a1fb ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x90d8696a ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x917e2693 ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xcbfcec2c ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe64b3f45 ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe78c9b3a flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xfcae203e ib_uverbs_flow_resources_free +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2bcc26a3 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x34d37da7 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x35ad9fec iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x63cce6f6 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x763dc7fd iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x83fb0149 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9eb7ea98 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbe63b6c3 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x131a3351 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18f6fdfd rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x486e6861 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48f5f491 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4e11412b rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5cfe91fd rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5e7fa5d2 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x69aa5ddf rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70418dfd rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7614d87b rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7bf8c4aa rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x80017a29 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x802aa98c rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x81af69ff rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x83074249 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8325704c rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8e88962b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8f74253a rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9ffbdb64 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa17366d1 __rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa88128a7 __rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa9ecc913 __rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb99ff743 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbfc45c4b rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd05ca027 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd2eeeb5f rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd6e8f185 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf25d5fb5 rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfb45a082 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x06da5812 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x3b196af9 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x501f598d rtrs_permit_to_pdu +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x7b688a09 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x8a35a15f rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xc91157c7 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xd4b65ec7 rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x2c4eaec5 rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x54ea1ef5 rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x99b7caed sockaddr_to_str +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xc28750dd rtrs_addr_to_sockaddr +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xe717f13e rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xeae18176 rtrs_ib_dev_put +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x12515622 rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x69980668 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x6a312b5e rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xa1d92bed rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xb02f252a rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xe6a9aa7c rtrs_srv_get_sess_name +EXPORT_SYMBOL drivers/md/dm-log 0x03be7001 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x47e952e8 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xbc50faa5 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xcb64be70 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0440be99 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4349e589 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5cca94c6 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7cf9d2d4 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9440523d dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfce60171 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x69a22a29 r5c_journal_mode_set +EXPORT_SYMBOL drivers/md/raid456 0xc5a0f540 raid5_set_cache_size +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03096245 mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x043546d6 mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1af864d4 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20cdcdb6 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x253db002 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25cc5fa8 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2998a9dc mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ef12bcb mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f698a20 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30437039 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31487552 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35891445 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a378cbc mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x403409cd mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b36b7a7 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bbbfa6a mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f338421 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x578c9cbd mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61f679df mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x627cab28 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d0eab6a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dd00bc3 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8054a8ae mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81507062 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84b13ff8 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8930c122 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94cc82ae mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96b67981 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c61ccf9 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad497ab9 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb49fa9a2 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8eedcd8 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1aacf08 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb4eeb74 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3e9e1e3 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4293064 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdeb8ad79 get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf7be220 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3141ae4 mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe44e7602 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6b8b85e mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe86d905c mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec171593 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb99b1fc mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x017380e0 mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x021a13b3 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x039321d6 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x071fc033 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08b4e784 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x094c14af mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0aecea54 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c2fb9f0 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x14403db0 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x175aec21 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x175c539d mlx5_rl_remove_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x182b4f21 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x197cc44b mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f309b98 mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20be80dd mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21a9c83b mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23b627aa mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27bf1c32 mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27fa4d63 __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a89e3dc mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ca9b544 mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cf99808 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x314e693e mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32705594 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3661af3e mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37651b47 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x394f441f mlx5_lag_is_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e19e5e3 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e960390 __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3ea04049 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x417e0ac6 mlx5_eswitch_register_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x422ae559 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46150cf1 __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46691fa3 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ca4b981 mlx5_core_destroy_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e3669eb mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e3ac280 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ff441b6 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50ddbd7c mlx5_cmd_set_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54566626 mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x559b321f mlx5_core_modify_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55d9a778 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cb5903f mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e5619ad mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61a73734 mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x649894bc mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x655c1aca mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6730f6ce mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b64d3dc mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c531f93 mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6cb561ea mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e633c3f mlx5_lag_get_slave_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6f11f2fe mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74adb61b mlx5_nic_vport_disable_roce +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75bbcf2a mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7741a213 mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a39594f mlx5_query_port_ib_proto_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a9e3a7d mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c504a5b mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e377caf mlx5_fpga_sbu_conn_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e82e648 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81d4e959 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x85833310 mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8630389d mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87a25e22 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88cc800b mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ab9e13d mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b34bf41 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b86d5ae mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eeefaa0 __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x940add4c mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97fd9867 mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9905d844 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99dff2f2 mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a578dc5 mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b15170d mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d1e5209 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e67ead7 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e6bf51e mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9fb9a915 mlx5_create_auto_grouped_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4cede66 mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa60b9912 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa76696e9 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7a84f04 mlx5_create_lag_demux_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8698dd0 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa99debbb mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa6f6259 mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xade9417d mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae052a36 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae9ea383 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf04c9d8 mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb060f0d1 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2114037 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3ac8daf mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3d5b147 mlx5_del_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaeb5372 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc63b763 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf70acc3 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1eff815 mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2e57c97 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc48f599b mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6ef1794 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcaaf1c11 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb0d4133 mlx5_eq_destroy_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb88f202 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf1e9e7c mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf690ec5 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd06e0d9c mlx5_eq_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd68effe2 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd695e2b5 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe03add1a mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2eab2fb mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4892c1d mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe52f4bfc mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7b8d6f0 mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeaa39656 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee751870 mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef01bb32 __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf013c093 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2b4dfaf mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf407d0c1 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8bfd68c mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe519f1a mlx5_core_dealloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x2ac3c728 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02998acf mlxsw_afa_block_append_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0689df5e mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0b395ea4 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0dd8caa3 mlxsw_reg_trans_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e2b5842 mlxsw_afa_block_append_vlan_modify +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1871571f mlxsw_core_rx_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c211c41 mlxsw_core_trap_state_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2decde87 mlxsw_core_fw_flash_start +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2f2c4887 mlxsw_afa_block_append_qos_switch_prio +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3b75ed1d mlxsw_core_skb_receive +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x3f123442 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x41055a45 mlxsw_core_event_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47fd6eee mlxsw_core_fw_flash_end +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4e2424ee mlxsw_reg_trans_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x56e94df9 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cec189b mlxsw_core_bus_device_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x615ef5fc mlxsw_afa_block_append_qos_dscp +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x632314f1 mlxsw_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x63874d4c mlxsw_core_port_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65481720 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x65e16da4 mlxsw_afk_key_info_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x692ac04e mlxsw_afk_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x71e1d813 mlxsw_core_port_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x73cf1d7a mlxsw_core_res_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x749556a2 mlxsw_afk_key_info_subset +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x76a65e3b mlxsw_core_port_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77768221 mlxsw_core_module_max_width +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x77d83398 mlxsw_core_read_frc_l +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8d811fa4 mlxsw_core_trap_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x94559f33 mlxsw_core_port_eth_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x963cfb6a mlxsw_core_resources_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa3d0d2b6 mlxsw_afa_block_append_fwd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa448aa7d mlxsw_core_rx_listener_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7ccb62a mlxsw_afa_block_append_qos_dsfield +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0717797 mlxsw_afa_block_append_fid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb28eabcc mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb2f24677 mlxsw_core_res_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xc9c2e4cc mlxsw_core_lag_mapping_clear +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcd9a40a4 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd45b9f9e mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeff4950 mlxsw_core_event_listener_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdf9384ff mlxsw_core_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe68557a8 mlxsw_afa_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf7fbba9f mlxsw_afa_block_append_qos_ecn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xffd8b1c3 mlxsw_core_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xb3d072d0 mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xbfce67e6 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x5c6336c1 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/phy/libphy 0x0090f65a phy_request_interrupt +EXPORT_SYMBOL drivers/net/phy/libphy 0x01d4ba1d phy_start_cable_test +EXPORT_SYMBOL drivers/net/phy/libphy 0x091e5771 phy_start_cable_test_tdr +EXPORT_SYMBOL drivers/net/phy/libphy 0x0a1bad96 mdio_device_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x0adb3643 phy_do_ioctl +EXPORT_SYMBOL drivers/net/phy/libphy 0x120bfcf0 genphy_restart_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0x14f69f7a mdio_driver_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x166276cf genphy_c37_config_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0x166d8053 mdio_driver_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0x178a6679 genphy_read_mmd_unsupported +EXPORT_SYMBOL drivers/net/phy/libphy 0x19f56063 phy_start_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0x208da07c phy_device_create +EXPORT_SYMBOL drivers/net/phy/libphy 0x2355e3f3 __mdiobus_write +EXPORT_SYMBOL drivers/net/phy/libphy 0x24b84a6d phy_register_fixup +EXPORT_SYMBOL drivers/net/phy/libphy 0x2e5da97b phy_reset_after_clk_enable +EXPORT_SYMBOL drivers/net/phy/libphy 0x2f3e1bd9 genphy_c37_read_status +EXPORT_SYMBOL drivers/net/phy/libphy 0x31692f36 phy_free_interrupt +EXPORT_SYMBOL drivers/net/phy/libphy 0x3220d924 phy_attached_print +EXPORT_SYMBOL drivers/net/phy/libphy 0x39496d95 phy_set_max_speed +EXPORT_SYMBOL drivers/net/phy/libphy 0x394a1e11 phy_sfp_attach +EXPORT_SYMBOL drivers/net/phy/libphy 0x394d8fd4 phy_find_first +EXPORT_SYMBOL drivers/net/phy/libphy 0x3cc67a5b phy_aneg_done +EXPORT_SYMBOL drivers/net/phy/libphy 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL drivers/net/phy/libphy 0x3f900c33 genphy_soft_reset +EXPORT_SYMBOL drivers/net/phy/libphy 0x41876af5 phy_sfp_probe +EXPORT_SYMBOL drivers/net/phy/libphy 0x41c5eae4 genphy_write_mmd_unsupported +EXPORT_SYMBOL drivers/net/phy/libphy 0x43359f8a phy_ethtool_ksettings_get +EXPORT_SYMBOL drivers/net/phy/libphy 0x43990c8d phy_ethtool_get_wol +EXPORT_SYMBOL drivers/net/phy/libphy 0x45b5a938 phy_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/phy/libphy 0x4c6d70a0 phy_attach +EXPORT_SYMBOL drivers/net/phy/libphy 0x500bf0a1 phy_read_paged +EXPORT_SYMBOL drivers/net/phy/libphy 0x544f212f phy_set_sym_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0x544fd95f mdio_device_free +EXPORT_SYMBOL drivers/net/phy/libphy 0x54bd5fc8 mdiobus_write_nested +EXPORT_SYMBOL drivers/net/phy/libphy 0x55b009bd genphy_check_and_restart_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0x568694cb mdiobus_free +EXPORT_SYMBOL drivers/net/phy/libphy 0x5840e470 __phy_write_mmd +EXPORT_SYMBOL drivers/net/phy/libphy 0x5968a994 phy_ethtool_ksettings_set +EXPORT_SYMBOL drivers/net/phy/libphy 0x59e0ecfe phy_disconnect +EXPORT_SYMBOL drivers/net/phy/libphy 0x5a207d20 genphy_update_link +EXPORT_SYMBOL drivers/net/phy/libphy 0x5a644737 phy_read_mmd +EXPORT_SYMBOL drivers/net/phy/libphy 0x5c9c8f10 phy_driver_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x5ede05f5 phy_mac_interrupt +EXPORT_SYMBOL drivers/net/phy/libphy 0x62e31458 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/phy/libphy 0x63398306 mdio_find_bus +EXPORT_SYMBOL drivers/net/phy/libphy 0x64fc2bbc phy_get_eee_err +EXPORT_SYMBOL drivers/net/phy/libphy 0x6938fe56 phy_write_paged +EXPORT_SYMBOL drivers/net/phy/libphy 0x7343a4cc phy_remove_link_mode +EXPORT_SYMBOL drivers/net/phy/libphy 0x77eceb21 genphy_aneg_done +EXPORT_SYMBOL drivers/net/phy/libphy 0x7e8d0289 mdio_device_remove +EXPORT_SYMBOL drivers/net/phy/libphy 0x7f4a0e1e phy_attached_info_irq +EXPORT_SYMBOL drivers/net/phy/libphy 0x84249c61 phy_support_asym_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0x845aa076 mdiobus_scan +EXPORT_SYMBOL drivers/net/phy/libphy 0x885c5deb phy_device_register +EXPORT_SYMBOL drivers/net/phy/libphy 0x8c90d499 phy_ethtool_set_wol +EXPORT_SYMBOL drivers/net/phy/libphy 0x8c91838a mdiobus_register_device +EXPORT_SYMBOL drivers/net/phy/libphy 0x8d34ecfc genphy_read_status_fixed +EXPORT_SYMBOL drivers/net/phy/libphy 0x8d60722c phy_ethtool_nway_reset +EXPORT_SYMBOL drivers/net/phy/libphy 0x8ea4483c mdiobus_get_phy +EXPORT_SYMBOL drivers/net/phy/libphy 0x91f26a68 mdiobus_read_nested +EXPORT_SYMBOL drivers/net/phy/libphy 0x92a62906 phy_attached_info +EXPORT_SYMBOL drivers/net/phy/libphy 0x96c139b3 __phy_resume +EXPORT_SYMBOL drivers/net/phy/libphy 0x980355b6 __phy_read_mmd +EXPORT_SYMBOL drivers/net/phy/libphy 0x98daf86d mdio_bus_type +EXPORT_SYMBOL drivers/net/phy/libphy 0x9999ce5c genphy_resume +EXPORT_SYMBOL drivers/net/phy/libphy 0x9b2a14b4 phy_register_fixup_for_uid +EXPORT_SYMBOL drivers/net/phy/libphy 0x9c9ac6aa mdiobus_alloc_size +EXPORT_SYMBOL drivers/net/phy/libphy 0x9ca7e680 phy_validate_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0x9cbbc38b genphy_setup_forced +EXPORT_SYMBOL drivers/net/phy/libphy 0x9db0dce0 phy_suspend +EXPORT_SYMBOL drivers/net/phy/libphy 0x9e351c9f phy_print_status +EXPORT_SYMBOL drivers/net/phy/libphy 0x9e4f0184 phy_init_hw +EXPORT_SYMBOL drivers/net/phy/libphy 0xa0c5fd65 phy_drivers_register +EXPORT_SYMBOL drivers/net/phy/libphy 0xa2b395ea phy_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/libphy 0xa9bc8caf phy_ethtool_get_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xaf25e00f genphy_read_lpa +EXPORT_SYMBOL drivers/net/phy/libphy 0xaf50fa19 phy_connect_direct +EXPORT_SYMBOL drivers/net/phy/libphy 0xaff09bf3 mdio_device_reset +EXPORT_SYMBOL drivers/net/phy/libphy 0xb04c3329 mdiobus_is_registered_device +EXPORT_SYMBOL drivers/net/phy/libphy 0xb2260923 phy_stop +EXPORT_SYMBOL drivers/net/phy/libphy 0xb3e14bcc phy_init_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xb55e1edf phy_drivers_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL drivers/net/phy/libphy 0xb94afca2 __mdiobus_register +EXPORT_SYMBOL drivers/net/phy/libphy 0xbe1a287e phy_loopback +EXPORT_SYMBOL drivers/net/phy/libphy 0xc1a41527 get_phy_device +EXPORT_SYMBOL drivers/net/phy/libphy 0xc2a22d6e phy_queue_state_machine +EXPORT_SYMBOL drivers/net/phy/libphy 0xc4754fcc phy_get_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL drivers/net/phy/libphy 0xcbee55a0 genphy_loopback +EXPORT_SYMBOL drivers/net/phy/libphy 0xcf692b76 phy_write_mmd +EXPORT_SYMBOL drivers/net/phy/libphy 0xd00b8608 mdiobus_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0xd4d97d05 phy_ethtool_set_eee +EXPORT_SYMBOL drivers/net/phy/libphy 0xd52f0d1b phy_advertise_supported +EXPORT_SYMBOL drivers/net/phy/libphy 0xd6e73b80 phy_register_fixup_for_id +EXPORT_SYMBOL drivers/net/phy/libphy 0xd6ee7a46 mdio_device_create +EXPORT_SYMBOL drivers/net/phy/libphy 0xd738ca1b phy_unregister_fixup_for_uid +EXPORT_SYMBOL drivers/net/phy/libphy 0xdb901e45 phy_set_asym_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0xdc988e2a genphy_read_abilities +EXPORT_SYMBOL drivers/net/phy/libphy 0xe0cf2c3f mdiobus_unregister_device +EXPORT_SYMBOL drivers/net/phy/libphy 0xe0faa844 phy_start +EXPORT_SYMBOL drivers/net/phy/libphy 0xe3f20ec2 phy_modify_paged_changed +EXPORT_SYMBOL drivers/net/phy/libphy 0xe73ae3b5 phy_device_remove +EXPORT_SYMBOL drivers/net/phy/libphy 0xe8f33e9e mdiobus_write +EXPORT_SYMBOL drivers/net/phy/libphy 0xea19a87a phy_driver_unregister +EXPORT_SYMBOL drivers/net/phy/libphy 0xebddaa9f phy_connect +EXPORT_SYMBOL drivers/net/phy/libphy 0xed0a1802 phy_do_ioctl_running +EXPORT_SYMBOL drivers/net/phy/libphy 0xed1211c1 phy_device_free +EXPORT_SYMBOL drivers/net/phy/libphy 0xeecb684d phy_resume +EXPORT_SYMBOL drivers/net/phy/libphy 0xef25e94a __mdiobus_read +EXPORT_SYMBOL drivers/net/phy/libphy 0xef8996f0 mdiobus_read +EXPORT_SYMBOL drivers/net/phy/libphy 0xefe28216 phy_detach +EXPORT_SYMBOL drivers/net/phy/libphy 0xf0e38c3f phy_attach_direct +EXPORT_SYMBOL drivers/net/phy/libphy 0xf11189e0 phy_support_sym_pause +EXPORT_SYMBOL drivers/net/phy/libphy 0xf2b2d922 genphy_read_status +EXPORT_SYMBOL drivers/net/phy/libphy 0xf3ed62a8 __genphy_config_aneg +EXPORT_SYMBOL drivers/net/phy/libphy 0xf777aeb4 genphy_suspend +EXPORT_SYMBOL drivers/net/phy/libphy 0xf83c3cea phy_modify_paged +EXPORT_SYMBOL drivers/net/phy/libphy 0xfee0fd66 genphy_config_eee_advert +EXPORT_SYMBOL drivers/net/team/team 0x0aefebbd team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x0b22232f team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x17935c56 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x5f447617 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xa20629f4 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xd6be6f38 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xf98efe65 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xffc50a52 team_modeop_port_enter +EXPORT_SYMBOL drivers/pps/pps_core 0x0091a814 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x06797a4c pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x59dbae47 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x8177aba0 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x04acff7e ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x0db98a54 ptp_find_pin_unlocked +EXPORT_SYMBOL drivers/ptp/ptp 0x48cace62 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x58e79785 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x72bfdb0a ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x901b4d52 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xa8306b78 scaled_ppm_to_ppb +EXPORT_SYMBOL drivers/ptp/ptp 0xa9b3422a ptp_cancel_worker_sync +EXPORT_SYMBOL drivers/ptp/ptp 0xfb60cc65 ptp_schedule_worker +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x005b51d5 dasd_default_erp_postaction +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x04d60bb7 dasd_add_request_head +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x0e1ecc11 dasd_fmalloc_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x0e362dc3 dasd_schedule_block_bh +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x127c187b dasd_sleep_on_interruptible +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x147d5d3f dasd_int_handler +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x16f279cc dasd_debug_area +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x28a58f1f dasd_smalloc_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x2c83190a dasd_set_feature +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x30f0f7f4 dasd_block_set_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x494d240d dasd_add_request_tail +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x49af335d dasd_term_IO +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x4e92f73f dasd_diag_discipline_pointer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x50ad7914 dasd_ffree_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0x52342614 dasd_device_set_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xa871893a dasd_reload_device +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xa99c06d8 dasd_log_sense +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb164b980 dasd_start_IO +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xb4dcb5de dasd_sleep_on_queue +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xc134caac dasd_sleep_on_queue_interruptible +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xc6c5fb63 dasd_sleep_on_immediatly +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xc985b251 dasd_device_clear_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xc9ec70d0 dasd_sfree_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xcad72eae dasd_kick_device +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xd00a0b23 dasd_sleep_on +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xd089a167 dasd_schedule_requeue +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xd1574105 dasd_block_clear_timer +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xd8b55dc4 dasd_eer_write +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xdfd43eb9 dasd_free_erp_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xe6cc2508 dasd_alloc_erp_request +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xedf3061b dasd_schedule_device_bh +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xf0f15f58 dasd_set_target_state +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xf33debdf dasd_enable_device +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xf55a7737 dasd_default_erp_action +EXPORT_SYMBOL drivers/s390/block/dasd_mod 0xfd6f8011 dasd_log_sense_dbf +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x08e57a2c hmcdrv_ftp_do +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x3198b5cb hmcdrv_ftp_startup +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0x83a6e87f hmcdrv_ftp_probe +EXPORT_SYMBOL drivers/s390/char/hmcdrv 0xba68949c hmcdrv_ftp_shutdown +EXPORT_SYMBOL drivers/s390/char/tape 0x00c9d342 tape_std_mtbsf +EXPORT_SYMBOL drivers/s390/char/tape 0x02429c23 tape_std_mterase +EXPORT_SYMBOL drivers/s390/char/tape 0x193ba8d4 tape_do_io_interruptible +EXPORT_SYMBOL drivers/s390/char/tape 0x1df19bcd tape_core_dbf +EXPORT_SYMBOL drivers/s390/char/tape 0x2546c415 tape_state_verbose +EXPORT_SYMBOL drivers/s390/char/tape 0x25fd45aa tape_std_unassign +EXPORT_SYMBOL drivers/s390/char/tape 0x27a4e3c6 tape_std_mtbsfm +EXPORT_SYMBOL drivers/s390/char/tape 0x345f7124 tape_std_mtcompression +EXPORT_SYMBOL drivers/s390/char/tape 0x3835f2f3 tape_std_mtsetblk +EXPORT_SYMBOL drivers/s390/char/tape 0x3ddecd03 tape_std_mtunload +EXPORT_SYMBOL drivers/s390/char/tape 0x49b65437 tape_alloc_request +EXPORT_SYMBOL drivers/s390/char/tape 0x515ffb0d tape_std_mtfsf +EXPORT_SYMBOL drivers/s390/char/tape 0x5d9447bb tape_std_display +EXPORT_SYMBOL drivers/s390/char/tape 0x5ede9675 tape_std_mtrew +EXPORT_SYMBOL drivers/s390/char/tape 0x6016743b tape_med_state_set +EXPORT_SYMBOL drivers/s390/char/tape 0x64dc4646 tape_dump_sense_dbf +EXPORT_SYMBOL drivers/s390/char/tape 0x66deb66c tape_op_verbose +EXPORT_SYMBOL drivers/s390/char/tape 0x6798936e tape_std_mtoffl +EXPORT_SYMBOL drivers/s390/char/tape 0x71d676c2 tape_state_set +EXPORT_SYMBOL drivers/s390/char/tape 0x8a03e425 tape_do_io +EXPORT_SYMBOL drivers/s390/char/tape 0x90e1fd27 tape_std_mtload +EXPORT_SYMBOL drivers/s390/char/tape 0x92294590 tape_get_device +EXPORT_SYMBOL drivers/s390/char/tape 0x98b40bf5 tape_generic_online +EXPORT_SYMBOL drivers/s390/char/tape 0x9ca8955f tape_std_mtreten +EXPORT_SYMBOL drivers/s390/char/tape 0x9e1449ba tape_std_mtbsr +EXPORT_SYMBOL drivers/s390/char/tape 0xa5597c0d tape_std_process_eov +EXPORT_SYMBOL drivers/s390/char/tape 0xaea1f852 tape_std_read_block +EXPORT_SYMBOL drivers/s390/char/tape 0xaf3f813d tape_std_mtweof +EXPORT_SYMBOL drivers/s390/char/tape 0xb5cf2500 tape_generic_offline +EXPORT_SYMBOL drivers/s390/char/tape 0xb944dc5d tape_std_write_block +EXPORT_SYMBOL drivers/s390/char/tape 0xbe7e3399 tape_cancel_io +EXPORT_SYMBOL drivers/s390/char/tape 0xc019889e tape_do_io_async +EXPORT_SYMBOL drivers/s390/char/tape 0xc19629ef tape_std_mtfsfm +EXPORT_SYMBOL drivers/s390/char/tape 0xc5785116 tape_generic_probe +EXPORT_SYMBOL drivers/s390/char/tape 0xc871c37b tape_mtop +EXPORT_SYMBOL drivers/s390/char/tape 0xca1fb81a tape_std_mteom +EXPORT_SYMBOL drivers/s390/char/tape 0xccbc4f97 tape_std_mtreset +EXPORT_SYMBOL drivers/s390/char/tape 0xcf8261f5 tape_std_mtfsr +EXPORT_SYMBOL drivers/s390/char/tape 0xe3978a1e tape_std_assign +EXPORT_SYMBOL drivers/s390/char/tape 0xe5ca0d17 tape_std_read_backward +EXPORT_SYMBOL drivers/s390/char/tape 0xef9f42ce tape_std_mtnop +EXPORT_SYMBOL drivers/s390/char/tape 0xefe0127f tape_generic_remove +EXPORT_SYMBOL drivers/s390/char/tape 0xf38bcbda tape_std_read_block_id +EXPORT_SYMBOL drivers/s390/char/tape 0xf6f2fcb9 tape_generic_pm_suspend +EXPORT_SYMBOL drivers/s390/char/tape 0xf9475727 tape_free_request +EXPORT_SYMBOL drivers/s390/char/tape 0xff679e0c tape_put_device +EXPORT_SYMBOL drivers/s390/char/tape_34xx 0x0afff710 tape_34xx_dbf +EXPORT_SYMBOL drivers/s390/char/tape_3590 0xc7220142 tape_3590_dbf +EXPORT_SYMBOL drivers/s390/char/tape_class 0x9f7d3c94 register_tape_dev +EXPORT_SYMBOL drivers/s390/char/tape_class 0xbffa0d49 unregister_tape_dev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x13849998 ccwgroup_set_online +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x1d738521 ccwgroup_probe_ccwdev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x43bb7f9f ccwgroup_remove_ccwdev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x48900364 ccwgroup_driver_register +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x5ebf04a1 ccwgroup_create_dev +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0x93985792 ccwgroup_driver_unregister +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xcd6e5c39 ccwgroup_set_offline +EXPORT_SYMBOL drivers/s390/cio/ccwgroup 0xe4c77a9d dev_is_ccwgroup +EXPORT_SYMBOL drivers/s390/cio/qdio 0x288b429b qdio_get_next_buffers +EXPORT_SYMBOL drivers/s390/cio/qdio 0xa5053f2d qdio_stop_irq +EXPORT_SYMBOL drivers/s390/cio/qdio 0xabe7cd23 qdio_start_irq +EXPORT_SYMBOL drivers/s390/cio/vfio_ccw 0x7b591170 __tracepoint_vfio_ccw_fsm_async_request +EXPORT_SYMBOL drivers/s390/cio/vfio_ccw 0x907b9e79 __tracepoint_vfio_ccw_chp_event +EXPORT_SYMBOL drivers/s390/cio/vfio_ccw 0xbf79ad6b __tracepoint_vfio_ccw_fsm_event +EXPORT_SYMBOL drivers/s390/cio/vfio_ccw 0xf32da969 __tracepoint_vfio_ccw_fsm_io_request +EXPORT_SYMBOL drivers/s390/crypto/pkey 0xa2396123 pkey_keyblob2pkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x06d23eca zcrypt_queue_alloc +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x0f717bb5 cca_check_secaescipherkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x170d6b33 cca_sec2protkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x2274ccb9 zcrypt_queue_unregister +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x271b6d43 zcrypt_card_alloc +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x274ee02a ep11_findcard2 +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x2be1f6aa ep11_key2protkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x2dc30fe9 cca_findcard +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x437855d4 zcrypt_queue_put +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x47c5a451 cca_findcard2 +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x4aad03c0 cca_gencipherkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x4bb8a363 __tracepoint_s390_zcrypt_rep +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x52a39222 __tracepoint_s390_zcrypt_req +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x547280f5 zcrypt_msgtype +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x5e050fdf cca_genseckey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x5eaa99ae zcrypt_send_cprb +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x63dd2934 cca_check_secaeskeytoken +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x67cedaeb zcrypt_rescan_req +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x6b78f8e7 zcrypt_card_unregister +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x73262971 zcrypt_card_register +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x7dd52fc2 ep11_clr2keyblob +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x9032dd84 zcrypt_device_status_mask_ext +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x9992a66f cca_clr2seckey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x9baaa676 zcrypt_card_put +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0x9d0890f7 zcrypt_card_get +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xa54284be zcrypt_device_status_ext +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xa979625d zcrypt_card_free +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xb282926b cca_get_info +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xb53b5b93 zcrypt_queue_free +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xbfacc9a3 zcrypt_queue_register +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xc0c976b6 ep11_get_domain_info +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xc20af440 cca_query_crypto_facility +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xc23843b6 ep11_genaeskey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xc3ee9fa0 cca_cipher2protkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xc6a8cdd0 ep11_check_aeskeyblob +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xd13cb570 zcrypt_queue_get +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xea54d73e cca_clr2cipherkey +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xee077284 ep11_get_card_info +EXPORT_SYMBOL drivers/s390/crypto/zcrypt 0xfa128312 zcrypt_send_ep11_cprb +EXPORT_SYMBOL drivers/s390/net/ctcm 0x40b3051a ctc_mpc_dealloc_ch +EXPORT_SYMBOL drivers/s390/net/ctcm 0x56f42138 ctc_mpc_alloc_channel +EXPORT_SYMBOL drivers/s390/net/ctcm 0x812fa936 ctc_mpc_establish_connectivity +EXPORT_SYMBOL drivers/s390/net/ctcm 0xf5440dc6 ctc_mpc_flow_control +EXPORT_SYMBOL drivers/s390/net/fsm 0x28d3cbe9 fsm_settimer +EXPORT_SYMBOL drivers/s390/net/fsm 0x30ab97c9 fsm_modtimer +EXPORT_SYMBOL drivers/s390/net/fsm 0x39209ed5 kfree_fsm +EXPORT_SYMBOL drivers/s390/net/fsm 0x4947f4b3 fsm_deltimer +EXPORT_SYMBOL drivers/s390/net/fsm 0x5bbdc3d4 init_fsm +EXPORT_SYMBOL drivers/s390/net/fsm 0x75223679 fsm_getstate_str +EXPORT_SYMBOL drivers/s390/net/fsm 0xe8ae8e7a fsm_addtimer +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0x4c8ba8b1 qeth_osn_deregister +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0x72560f34 qeth_osn_register +EXPORT_SYMBOL drivers/s390/net/qeth_l2 0x9f897e23 qeth_osn_assist +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3589d0f0 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3c1a6eac fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4b34d16e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4da11dd9 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x525adac9 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5459b033 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8c469acf fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x91bded5b fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xca193403 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf23d6911 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf654f48e fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0142c131 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x02d571a6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x077d4752 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08bc9215 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0d4056bf fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19144fa2 fc_exch_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x19a7224e fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b3c2c97 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ff49f19 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x242a3af9 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2745a56b fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29697e73 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2aa4b92b fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x30ad64fe fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x33d7d2ce fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a566574 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42c5680c fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46af4aac fc_seq_set_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4a2a1e71 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b7440da fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5fd835df fc_lport_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x63f40b3f fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64452333 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66003b59 fc_seq_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69219e2a fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6c99ebc9 fc_rport_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6ca49c94 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x73521667 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x739a8f76 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77a22add fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f3407a7 fc_seq_start_next +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x811811e0 fc_exch_done +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a93678e fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96d97619 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d50ed7e fc_rport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e06c5ee fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1bcd198 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1d64f12 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa388b361 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38df985 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3bcccab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa862ae5 fc_seq_assign +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab41c2c3 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab782307 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0ddd5a1 fc_rport_flush_queue +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb1d2c7f9 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3ee2aa1 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb4c3a22c fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3653d4e fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc55aa038 fc_rport_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf72649f fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1e2b432 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd70acde3 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7e26a77 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xda5df33c fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb315f85 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfb1f54d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7e6531e fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8b7dfe2 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe95efdbf fc_rport_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9a123ad fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeccebbc5 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8a96a1e fc_rport_recv_req +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9cfc747 fc_rport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4667d1 fc_seq_release +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4a8e3d34 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x541d7fe8 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x980d7e0e sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf32d1917 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/raid_class 0x216bb618 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x6ab3fdf7 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xaaeb04cb raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x098a98ca fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0edcf8d1 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x22a98f41 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x375f8bbd fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3c38020b fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x405ed148 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4d2020b8 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x743841e0 fc_eh_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9ae0db8b fc_host_fpin_rcv +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb5301e5b fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb62851c6 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc16439f4 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc6356923 fc_block_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd00db939 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd4eca79a fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe49f7f69 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe7bb1bc3 fc_host_post_fc_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0080e74d sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x07676ea0 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0de73715 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1667ab98 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c4a68d5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1d330fc5 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x288dde03 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x328690bb sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x435ad5a9 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x43f98636 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44e2f246 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64506b19 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x72de9c27 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7cc1f1ef sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81380413 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88c0ba26 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88c48040 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x927f4fe3 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab378e71 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab6a76c7 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb1a199e5 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb61a3709 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb90f5386 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbab51aea sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcbcd839a sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce05fa49 sas_get_address +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3e3f2d6 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd4a32f48 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe009f628 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1c489e47 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x44ba0038 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8214276f spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa19edf46 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa8228cdb spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0806797d srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0e833ca3 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x5e87768f srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xbd77a44a srp_timed_out +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf30f1a37 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09ca1368 iscsit_response_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x16b1a5bf iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b865bff iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2151ffc4 iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2a6b7381 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3db4b475 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e43c0c9 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3f40acf7 iscsit_build_r2ts_for_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x445e97a7 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x524a388f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5db963b9 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x602ca2d6 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x65570b99 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6c2918f7 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x708fbad8 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x71c06ce4 __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x731a112a iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7323a991 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7537a5fd iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7669b5b1 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79f47e47 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7e603a6b iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8515fac2 iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x94150635 iscsi_target_check_login_request +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95345b15 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9a539d8c iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa1d72479 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa7efc7ad iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa980c96f iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xabc8cfaa iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb1406f4d iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb224f932 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb6910bfd iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbb6252fb iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf7c7c83 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc0f1bfed iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xce8311c2 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2338b7a iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2f026a7 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe352a1c1 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe52c2c34 iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf07c4c99 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfc43cc53 iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfcfdefee iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/target_core_mod 0x00b215f2 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x0605abc7 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0962dd8e transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b6a641c core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b7d1141 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x12e6356e target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x137c6c8c sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x158eca35 target_show_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x15fdbb04 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x188ac452 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x20eae25d transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x23b701e5 target_to_linux_sector +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b5b02af target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f18a601 passthrough_pr_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x311a6efa target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x328cf88e transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x332808eb core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x3592bfe9 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d8949ac spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x408b4709 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x42ad0b3e transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x42b18d76 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x48d3b772 target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x494734fe target_put_nacl +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c2fb447 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f18042a transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x52acd8c6 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x53ac5a1d target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5918fdf5 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6120bd90 transport_copy_sense_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x62222a78 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x65b93c6d transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x6741c85e transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ea6c051 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x7180dfe7 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x771a15d9 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a86ffb4 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b1ee3d8 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x819aa00a transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x82878a86 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x853275e7 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x875f9fb9 target_cmd_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x88bb81e8 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d17b3a0 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x90d37339 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x93ee7781 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x94888ddd target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x969bc484 target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x97bc0072 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x99739889 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b4d3862 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa228d129 target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8c85f84 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9ae9e80 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbee8a76 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc19f6c6 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xbeace007 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6e85725 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8b9c5ff transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0377c02 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd19f29e3 core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0xd387beae target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc0d80ca transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xdea1af02 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xe08b2716 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0d18337 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1955883 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe42db80d target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6769e22 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe91f2e5b target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe99fbd4a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7038b6b transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9111e57 target_lun_is_rdonly +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x10cac30e uart_unregister_driver +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x13832af4 uart_update_timeout +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x3741579d uart_add_one_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x46a47b55 uart_match_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x62bf8705 uart_register_driver +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x63fb7513 uart_remove_one_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x6bd48dca uart_get_divisor +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x8d727129 uart_write_wakeup +EXPORT_SYMBOL drivers/tty/serial/serial_core 0x97dc2f9c uart_get_baud_rate +EXPORT_SYMBOL drivers/tty/serial/serial_core 0xb78cf6a3 uart_suspend_port +EXPORT_SYMBOL drivers/tty/serial/serial_core 0xc26da26e uart_resume_port +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x109651a6 mdev_parent_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x2aee8f05 mdev_set_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x40819e32 mdev_set_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x5f4499df mdev_unregister_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x67a224a3 mdev_uuid +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x69d89652 mdev_get_iommu_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x7eccc49d mdev_register_device +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x7ed2e9d8 mdev_get_drvdata +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x8083ca2a mdev_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xd8d0a895 mdev_register_driver +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xf5728612 mdev_from_dev +EXPORT_SYMBOL drivers/vfio/mdev/mdev 0xfa150c62 mdev_unregister_device +EXPORT_SYMBOL drivers/vfio/vfio 0x3b1a6d99 vfio_register_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0x4232a0c3 vfio_info_cap_shift +EXPORT_SYMBOL drivers/vfio/vfio 0x48a81d7e vfio_group_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x704e3d8c vfio_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0x7834defd vfio_group_unpin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xa0174901 vfio_dma_rw +EXPORT_SYMBOL drivers/vfio/vfio 0xaf8a4a7f vfio_set_irqs_validate_and_prepare +EXPORT_SYMBOL drivers/vfio/vfio 0xc634c850 vfio_unregister_notifier +EXPORT_SYMBOL drivers/vfio/vfio 0xe60c76f5 vfio_pin_pages +EXPORT_SYMBOL drivers/vfio/vfio 0xf3411eb8 vfio_info_add_capability +EXPORT_SYMBOL drivers/vhost/vhost 0x9a633fb4 vhost_chr_write_iter +EXPORT_SYMBOL drivers/vhost/vhost 0xf8bd5cdf vhost_chr_poll +EXPORT_SYMBOL drivers/video/fbdev/core/cfbcopyarea 0x9729188e cfb_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/cfbfillrect 0x4c45eb37 cfb_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/cfbimgblt 0xff06d677 cfb_imageblit +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x7b4a348d sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xa026c734 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x21231777 sys_imageblit +EXPORT_SYMBOL fs/fscache/fscache 0x084c306d __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0b6309e1 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0d84e559 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x12585cb9 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x14f892f2 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1898ac2f fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x18ad33a4 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x1bd09a9c fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x2966f850 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2dc531d2 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x3eeda2d9 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x445369d6 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x471801f1 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x4a5b7afe __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x5f06d1dd fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x5f5df306 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6246d450 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6388864c __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x64509f03 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x656a28bf __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x65b2adec __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x696efb1a __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x6993526a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x6a13d68e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6bd5b22a fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x6ee432ae __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x8ad533c0 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x8c8f3b02 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9031a12a __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x91e4f96c __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x94dd7e4a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xb60cb708 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xc42e637c __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xcbb860ae fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xd5348360 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xdf22bf4d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xdf79ea2f fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe7c07e3d fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xeac14fe9 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xedb192de fscache_obtained_object +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x374717e7 qtree_get_next_id +EXPORT_SYMBOL fs/quota/quota_tree 0x4dbfc894 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x71aa9a43 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc077d025 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc1c7597c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc50155e7 qtree_release_dquot +EXPORT_SYMBOL lib/crc-itu-t 0xd819a524 crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xdf59602c crc_itu_t +EXPORT_SYMBOL lib/crc7 0x65aaf037 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc7 0xc440541c crc7_be +EXPORT_SYMBOL lib/crc8 0xaa8106bc crc8_populate_msb +EXPORT_SYMBOL lib/crc8 0xc3cd034d crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xfa0da958 crc8 +EXPORT_SYMBOL lib/crypto/libarc4 0x2bb32ad1 arc4_setkey +EXPORT_SYMBOL lib/crypto/libarc4 0xcd47fcc4 arc4_crypt +EXPORT_SYMBOL lib/crypto/libblake2s 0x2fd09944 blake2s_update +EXPORT_SYMBOL lib/crypto/libblake2s 0x8da0a315 blake2s256_hmac +EXPORT_SYMBOL lib/crypto/libblake2s 0xadae6df8 blake2s_final +EXPORT_SYMBOL lib/crypto/libblake2s-generic 0xa6e9c670 blake2s_compress_generic +EXPORT_SYMBOL lib/crypto/libchacha 0xcec122d7 chacha_crypt_generic +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x09315bb1 xchacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x35142bf2 xchacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x5cff4121 chacha20poly1305_decrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0x637307c6 chacha20poly1305_encrypt +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xa3883e62 chacha20poly1305_encrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libchacha20poly1305 0xff3141e0 chacha20poly1305_decrypt_sg_inplace +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x12627f15 curve25519_generic +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x4a5a8811 curve25519_null_point +EXPORT_SYMBOL lib/crypto/libcurve25519-generic 0x7e6fdbfc curve25519_base_point +EXPORT_SYMBOL lib/crypto/libpoly1305 0x021f3700 poly1305_core_blocks +EXPORT_SYMBOL lib/crypto/libpoly1305 0x4dba97c6 poly1305_core_setkey +EXPORT_SYMBOL lib/crypto/libpoly1305 0xbcb90cb3 poly1305_core_emit +EXPORT_SYMBOL lib/libcrc32c 0x89a0cd52 crc32c_impl +EXPORT_SYMBOL lib/libcrc32c 0xb15b4109 crc32c +EXPORT_SYMBOL lib/lru_cache 0x0f6f0fdb lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x17641dea lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x17c6b1e1 lc_del +EXPORT_SYMBOL lib/lru_cache 0x23db7180 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x52857213 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x6f1d0c3b lc_try_lock +EXPORT_SYMBOL lib/lru_cache 0x7869961b lc_set +EXPORT_SYMBOL lib/lru_cache 0x79c87149 lc_get +EXPORT_SYMBOL lib/lru_cache 0x88713f97 lc_create +EXPORT_SYMBOL lib/lru_cache 0x955d4873 lc_committed +EXPORT_SYMBOL lib/lru_cache 0xbbc7a78d lc_put +EXPORT_SYMBOL lib/lru_cache 0xc1a43316 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0xc3a4ca05 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xe4a98afa lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xebae3022 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xff3f1db8 lc_find +EXPORT_SYMBOL lib/lru_cache 0xffb12208 lc_is_used +EXPORT_SYMBOL lib/lz4/lz4_compress 0x4f4d78c5 LZ4_compress_default +EXPORT_SYMBOL lib/lz4/lz4_compress 0x5bc92e85 LZ4_compress_destSize +EXPORT_SYMBOL lib/lz4/lz4_compress 0x6004858d LZ4_compress_fast +EXPORT_SYMBOL lib/lz4/lz4_compress 0x635ff76d LZ4_saveDict +EXPORT_SYMBOL lib/lz4/lz4_compress 0x749849d8 LZ4_loadDict +EXPORT_SYMBOL lib/lz4/lz4_compress 0xf9eced44 LZ4_compress_fast_continue +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x0f3dcf29 LZ4_loadDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x7f7bbb7e LZ4_saveDictHC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xddf86133 LZ4_compress_HC +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0xe06ae6d6 LZ4_compress_HC_continue +EXPORT_SYMBOL lib/math/cordic 0x7e431c15 cordic_calc_iq +EXPORT_SYMBOL lib/objagg 0x0363233d objagg_obj_raw +EXPORT_SYMBOL lib/objagg 0x23865923 objagg_destroy +EXPORT_SYMBOL lib/objagg 0x24ca5ca9 objagg_obj_root_priv +EXPORT_SYMBOL lib/objagg 0x342aefe2 objagg_obj_delta_priv +EXPORT_SYMBOL lib/objagg 0x352633f4 objagg_hints_stats_get +EXPORT_SYMBOL lib/objagg 0x38e157a7 objagg_create +EXPORT_SYMBOL lib/objagg 0x3c58e78f objagg_hints_put +EXPORT_SYMBOL lib/objagg 0x6691f29d objagg_obj_put +EXPORT_SYMBOL lib/objagg 0xb17ab162 objagg_obj_get +EXPORT_SYMBOL lib/objagg 0xdaa3ee68 objagg_stats_get +EXPORT_SYMBOL lib/objagg 0xf5511527 objagg_stats_put +EXPORT_SYMBOL lib/objagg 0xfaa9d1a8 objagg_hints_get +EXPORT_SYMBOL lib/parman 0x0f518717 parman_prio_init +EXPORT_SYMBOL lib/parman 0x7b03d378 parman_item_add +EXPORT_SYMBOL lib/parman 0x8b7e26f5 parman_item_remove +EXPORT_SYMBOL lib/parman 0xc3e2d892 parman_create +EXPORT_SYMBOL lib/parman 0xc6a3d260 parman_prio_fini +EXPORT_SYMBOL lib/parman 0xca39ae6a parman_destroy +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0b2c64a3 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x17f54263 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x59a2712d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xc8e3332b raid6_gflog +EXPORT_SYMBOL lib/raid6/raid6_pq 0xcc4ee841 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd91319d6 raid6_gfmul +EXPORT_SYMBOL lib/zstd/zstd_compress 0x00441ef6 ZSTD_compressStream +EXPORT_SYMBOL lib/zstd/zstd_compress 0x040c92d1 ZSTD_CCtxWorkspaceBound +EXPORT_SYMBOL lib/zstd/zstd_compress 0x065b14f3 ZSTD_getBlockSizeMax +EXPORT_SYMBOL lib/zstd/zstd_compress 0x0b9a9379 ZSTD_initCCtx +EXPORT_SYMBOL lib/zstd/zstd_compress 0x17823f99 ZSTD_compress_usingCDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0x1ffb27f1 ZSTD_initCStream_usingCDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0x2411b496 ZSTD_CStreamOutSize +EXPORT_SYMBOL lib/zstd/zstd_compress 0x273a39e7 ZSTD_compressCCtx +EXPORT_SYMBOL lib/zstd/zstd_compress 0x35adbdc6 ZSTD_compress_usingDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0x48bfae8e ZSTD_flushStream +EXPORT_SYMBOL lib/zstd/zstd_compress 0x50d289a3 ZSTD_resetCStream +EXPORT_SYMBOL lib/zstd/zstd_compress 0x515ab572 ZSTD_compressBegin +EXPORT_SYMBOL lib/zstd/zstd_compress 0x57b1012f ZSTD_compressBegin_usingDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0x66a8b7ab ZSTD_CStreamInSize +EXPORT_SYMBOL lib/zstd/zstd_compress 0x785d10c3 ZSTD_endStream +EXPORT_SYMBOL lib/zstd/zstd_compress 0x84e61bae ZSTD_CDictWorkspaceBound +EXPORT_SYMBOL lib/zstd/zstd_compress 0x8f2f596d ZSTD_compressBound +EXPORT_SYMBOL lib/zstd/zstd_compress 0x97b3b7ca ZSTD_compressEnd +EXPORT_SYMBOL lib/zstd/zstd_compress 0xa4c8127c ZSTD_maxCLevel +EXPORT_SYMBOL lib/zstd/zstd_compress 0xa88b0af5 ZSTD_compressBegin_usingCDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0xc2d4374c ZSTD_CStreamWorkspaceBound +EXPORT_SYMBOL lib/zstd/zstd_compress 0xc83660bd ZSTD_getParams +EXPORT_SYMBOL lib/zstd/zstd_compress 0xd1ad98e7 ZSTD_compressContinue +EXPORT_SYMBOL lib/zstd/zstd_compress 0xd967de6d ZSTD_getCParams +EXPORT_SYMBOL lib/zstd/zstd_compress 0xdc157266 ZSTD_adjustCParams +EXPORT_SYMBOL lib/zstd/zstd_compress 0xdfb596f8 ZSTD_copyCCtx +EXPORT_SYMBOL lib/zstd/zstd_compress 0xe02d4179 ZSTD_initCStream +EXPORT_SYMBOL lib/zstd/zstd_compress 0xe14f9e35 ZSTD_compressBlock +EXPORT_SYMBOL lib/zstd/zstd_compress 0xebe6a8a6 ZSTD_checkCParams +EXPORT_SYMBOL lib/zstd/zstd_compress 0xf2068346 ZSTD_initCDict +EXPORT_SYMBOL lib/zstd/zstd_compress 0xff471430 ZSTD_compressBegin_advanced +EXPORT_SYMBOL net/802/p8022 0x4184b618 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x53de15a0 register_8022_client +EXPORT_SYMBOL net/802/psnap 0x0a52c148 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfeab7ecf unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00530fa1 p9_req_put +EXPORT_SYMBOL net/9p/9pnet 0x022075c6 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x087495a9 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x08f1dd4a p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x0ccd5e47 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x17183707 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x193d2822 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x268c627b p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2ed92f0f p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2f800ffb p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x37f9abd8 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3e5d7ded p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x43898b6f p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x50ccb2f9 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x5102be62 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x518f3d6a p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x53054491 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x573b9640 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x635beb34 p9_show_client_options +EXPORT_SYMBOL net/9p/9pnet 0x65bff526 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x6b3e8cb4 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x762c0e0d p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x76eb1615 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x797bae10 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x79bd63f1 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x82ca163a p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x88e79193 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x898902b6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x9dbfd05c p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa2b37aa1 p9_client_read_once +EXPORT_SYMBOL net/9p/9pnet 0xaf71f0d4 p9_fcall_fini +EXPORT_SYMBOL net/9p/9pnet 0xb4bd5930 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xb5ef6dd6 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xb5f1e093 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xbdb007a5 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xc50e1c61 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc6ae7fa1 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xd1a8e902 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xd384c683 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xd560873f v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xd5ffc38c p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd87970be p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xe10bb2dc p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe26438c0 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf1003fb0 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf10792aa p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xfd557775 p9_client_remove +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x32efda9a ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa9f466ce ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbeb4cf6f ebt_register_table +EXPORT_SYMBOL net/ceph/libceph 0x01ed2e0b osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x038b0c76 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x0470e567 ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0x06008c63 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x063431fc ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x081508f6 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x0a06750b osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x0ce74839 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0ebf64a5 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x142118cb ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x15d1d4f4 osd_req_op_extent_osd_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x165a692b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x184b5a64 ceph_osdc_clear_abort_err +EXPORT_SYMBOL net/ceph/libceph 0x18b55eac osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x1fedd6cd ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy +EXPORT_SYMBOL net/ceph/libceph 0x240e1dc3 ceph_pg_to_acting_primary +EXPORT_SYMBOL net/ceph/libceph 0x26fa3666 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0x28cdbf3e ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0x293ac735 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x2b2bdc98 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0x2b8478fc ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x2b8e8711 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0x2ef51ea0 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x320bb8dc ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x33c0a163 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x34d23332 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x3524c308 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x35b656c2 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x36de6849 ceph_pg_pool_flags +EXPORT_SYMBOL net/ceph/libceph 0x3746c25c ceph_oloc_destroy +EXPORT_SYMBOL net/ceph/libceph 0x38cf07bb ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents +EXPORT_SYMBOL net/ceph/libceph 0x3933d74a ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects +EXPORT_SYMBOL net/ceph/libceph 0x4037a861 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x40775f59 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0x40b452a5 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x40c4e3c7 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4965dbd3 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x4994fa5b osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4f6cdfc7 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x51c1a041 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x52e131f0 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x53c88f4a ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf +EXPORT_SYMBOL net/ceph/libceph 0x5ec22b9d ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5f00c1a8 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x60db2613 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x65a7c6c0 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x68c5fe51 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x6904a6dd ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x6b4f7873 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x6e3e471d ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0x6f2e33ee ceph_auth_add_authorizer_challenge +EXPORT_SYMBOL net/ceph/libceph 0x7358e4c4 ceph_alloc_options +EXPORT_SYMBOL net/ceph/libceph 0x76141274 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x76737dec ceph_osdc_alloc_messages +EXPORT_SYMBOL net/ceph/libceph 0x76a8d9ed osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x7790a91c ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x795718bb ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x7faed640 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x80492064 ceph_osdc_copy_from +EXPORT_SYMBOL net/ceph/libceph 0x80789169 ceph_monc_get_version +EXPORT_SYMBOL net/ceph/libceph 0x81d82bea ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x831d4627 ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0x8375650f ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x847347e3 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x8ad7ec2b ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x8b73ac2a ceph_osdc_call +EXPORT_SYMBOL net/ceph/libceph 0x9203654e ceph_osdc_update_epoch_barrier +EXPORT_SYMBOL net/ceph/libceph 0x97537e7a ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x97b095af ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x984edc9e osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x999690f7 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9e3d8d5a ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0xa0068e5e ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa376f5df ceph_pagelist_alloc +EXPORT_SYMBOL net/ceph/libceph 0xa462a9f4 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xa6385e99 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers +EXPORT_SYMBOL net/ceph/libceph 0xa6f2cf83 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xaae21a95 ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0xac99ea76 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xacdea2ee ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xad9541ff ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0e9066c osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb2752300 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb42fc933 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb57f5507 ceph_osdc_notify +EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xbc98cee2 ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbd8c1313 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xbe387b22 ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0xbf09fa63 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xbf5d88b3 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0xbfa0a955 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc29035f6 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc6f113ea ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0xca3d8357 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xca42a10b ceph_msg_new2 +EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file +EXPORT_SYMBOL net/ceph/libceph 0xcbf21c7e ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xd0395314 ceph_osdc_unwatch +EXPORT_SYMBOL net/ceph/libceph 0xd055fc0a ceph_object_locator_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xd16199e0 ceph_monc_blacklist_add +EXPORT_SYMBOL net/ceph/libceph 0xd1620966 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr +EXPORT_SYMBOL net/ceph/libceph 0xd77b51e5 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0xd899c07e ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xdd08f1ec ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xdeddd368 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf +EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name +EXPORT_SYMBOL net/ceph/libceph 0xe0cebd83 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xe6500308 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe85108a4 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xec47ed1e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xed1fbadb osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string +EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents +EXPORT_SYMBOL net/ceph/libceph 0xefc3e8c3 ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0xf3b22dc7 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xf3d3845d ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xf5b32a9f ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfc7f74eb ceph_monc_got_map +EXPORT_SYMBOL net/ceph/libceph 0xfdc3ee3b osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xfe6d8e02 ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0xffe2f970 ceph_osdc_put_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x3af8f302 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xda55a593 dccp_req_err +EXPORT_SYMBOL net/ipv4/fou 0x3899cd11 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x4e04984a __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xc3589595 __fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xdef70806 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/gre 0x8e7363e5 gre_parse_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6ccb72df ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x72e9c7ac ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa2538dbc ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc6f3b6a2 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x31b75b08 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x68076e19 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x92df2971 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6fb4e644 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xac5629a1 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xc114aa0c ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xdd723c65 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf5113bd6 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/tunnel4 0x0fd966b4 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x9db04cc4 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xb95014c1 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x312b9939 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3456dcd5 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9fdd0d3c ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xa54531d7 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc15b196f ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc2e0d3b3 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd2f888d9 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xda2ea5aa ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe9b600ee ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x13517236 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x628a8744 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x80a213cd ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x996a858b ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9b70a0f0 ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/tunnel6 0xaa866977 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xeb58bd5f xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1169f08b xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x525f042f xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/l2tp/l2tp_core 0x6a74e348 l2tp_recv_common +EXPORT_SYMBOL net/l2tp/l2tp_core 0xc5fd1af2 l2tp_tunnel_free +EXPORT_SYMBOL net/l2tp/l2tp_ip 0x1c5b7f9d l2tp_ioctl +EXPORT_SYMBOL net/llc/llc 0x087bd54b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x38e26e80 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x41fc2f25 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x577aeaaf llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x8e7604b2 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xb7fc9bff llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xcd1a5a11 llc_mac_hdr_init +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0da7dfaf ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3e0a4c17 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x71cbf8e4 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x78783d75 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x887936cd ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8cb2adaa unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa34b4341 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba76add2 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbfd1edcb register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc010e2fa ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc7b40d65 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5f5922e ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda4fa6b7 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xea7cbbda register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf60b909c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x06c7794c nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3398a13e nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x4f3673b3 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6a096788 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x75c2c518 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xf2590560 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nft_fib 0xe8203072 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x3784853d xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks +EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name +EXPORT_SYMBOL net/netfilter/x_tables 0x4e70984e xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xaba61c31 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb4433073 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb5088736 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb9f4f3b5 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xbc22e984 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc227f27c xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc +EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf9e3a3d5 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset +EXPORT_SYMBOL net/rxrpc/rxrpc 0x07f8c8ca rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1621cec3 rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0x1f63187d rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x2651495d rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id +EXPORT_SYMBOL net/rxrpc/rxrpc 0x373ef8e7 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x4fef102d rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x583287da rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0x66092dd8 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6f466086 rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x7d2d8876 rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0x83c34661 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x95cf7017 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0xba2f31de key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd0507f04 rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0xda59f9b8 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe437e8a0 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe71d0921 rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xfb478852 rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/sctp/sctp 0x67109513 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x0000e51f gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x7732b0dc gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x96daf733 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5c159e3f svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x903dda91 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xf17fa090 xdr_restrict_buflen +EXPORT_SYMBOL net/tipc/tipc 0x03b429be tipc_nl_sk_walk +EXPORT_SYMBOL net/tipc/tipc 0x67178da0 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0xa2cd5050 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0xfb98d558 tipc_dump_done +EXPORT_SYMBOL net/tls/tls 0xffa4bfb1 tls_get_record +EXPORT_SYMBOL vmlinux 0x00104838 netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x001a7c49 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x002e39a5 tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x003028dc kernel_param_lock +EXPORT_SYMBOL vmlinux 0x005992dd ip6tun_encaps +EXPORT_SYMBOL vmlinux 0x005db676 ccw_device_tm_start_timeout_key +EXPORT_SYMBOL vmlinux 0x009beae5 deactivate_super +EXPORT_SYMBOL vmlinux 0x009f9793 cdev_del +EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00cd72e5 __debug_sprintf_exception +EXPORT_SYMBOL vmlinux 0x00dc9758 hdmi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x00e20dcf jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x00eb1c3a radix_tree_delete +EXPORT_SYMBOL vmlinux 0x00f4a223 _ebc_toupper +EXPORT_SYMBOL vmlinux 0x00fdae31 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0104e293 tcp_sock_set_keepidle +EXPORT_SYMBOL vmlinux 0x0118412f netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x012ee592 seq_lseek +EXPORT_SYMBOL vmlinux 0x014716eb hdmi_vendor_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x0147812c kblockd_mod_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0150aa20 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x01553371 vm_brk_flags +EXPORT_SYMBOL vmlinux 0x015af7f4 system_state +EXPORT_SYMBOL vmlinux 0x015b17ec security_path_mkdir +EXPORT_SYMBOL vmlinux 0x01757935 rdmacg_register_device +EXPORT_SYMBOL vmlinux 0x017de3d5 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x0181c2b1 simple_link +EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete +EXPORT_SYMBOL vmlinux 0x0192fe23 csum_and_copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x019dd2fe elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x01a17d0b qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x01b0bbf9 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note +EXPORT_SYMBOL vmlinux 0x01cdd1e2 seq_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x01d178f4 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x01da9ba1 scsi_partsize +EXPORT_SYMBOL vmlinux 0x01e1ec00 utf8_strncasecmp_folded +EXPORT_SYMBOL vmlinux 0x01ef6af7 page_pool_destroy +EXPORT_SYMBOL vmlinux 0x01f05497 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc +EXPORT_SYMBOL vmlinux 0x02192ae8 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x02259ccb blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x0228b02f raw3270_request_add_data +EXPORT_SYMBOL vmlinux 0x022d109c tty_lock +EXPORT_SYMBOL vmlinux 0x023fc5c9 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x025483b1 set_current_groups +EXPORT_SYMBOL vmlinux 0x0257a9ae down_read_trylock +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027eb7b0 free_task +EXPORT_SYMBOL vmlinux 0x0283db23 sock_no_getname +EXPORT_SYMBOL vmlinux 0x0286c20a bit_waitqueue +EXPORT_SYMBOL vmlinux 0x0290b895 __breadahead +EXPORT_SYMBOL vmlinux 0x02966004 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x0296695f refcount_warn_saturate +EXPORT_SYMBOL vmlinux 0x02971d92 vfs_fsync +EXPORT_SYMBOL vmlinux 0x029b9c41 nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02ca22a8 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x02cc6d4e xsk_clear_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02f034a1 xz_dec_run +EXPORT_SYMBOL vmlinux 0x02fa5f23 blk_mq_run_hw_queue +EXPORT_SYMBOL vmlinux 0x030c96da revert_creds +EXPORT_SYMBOL vmlinux 0x0311a2ed netif_carrier_off +EXPORT_SYMBOL vmlinux 0x031bb834 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x032d4b3b __skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x032e516a security_inode_invalidate_secctx +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0336440c flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x03582950 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x03597003 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036bfc46 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x037577f3 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0388b2ca icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x0391b54e sock_set_keepalive +EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x03d1d07f nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x03d2240c add_virt_timer_periodic +EXPORT_SYMBOL vmlinux 0x03d412a4 security_dentry_create_files_as +EXPORT_SYMBOL vmlinux 0x03d5a903 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ff7c60 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x04099c0a gro_cells_receive +EXPORT_SYMBOL vmlinux 0x043f8514 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0456ae21 __tracepoint_s390_cio_xsch +EXPORT_SYMBOL vmlinux 0x04683b5e sock_pfree +EXPORT_SYMBOL vmlinux 0x047d4602 __sb_start_write +EXPORT_SYMBOL vmlinux 0x04822be5 d_alloc +EXPORT_SYMBOL vmlinux 0x049faf96 flow_rule_match_ct +EXPORT_SYMBOL vmlinux 0x04bd5b40 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x04cd721d ap_queue_init_state +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x050e92e2 console_stop +EXPORT_SYMBOL vmlinux 0x0517f03f sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x051cc27b blk_register_region +EXPORT_SYMBOL vmlinux 0x052251fc sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x05235893 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05352ab7 register_framebuffer +EXPORT_SYMBOL vmlinux 0x053f5f3d __sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x0540e345 dev_get_flags +EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x0563bf2a bio_clone_fast +EXPORT_SYMBOL vmlinux 0x056c1d83 ether_setup +EXPORT_SYMBOL vmlinux 0x056f5cef radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x05782498 unregister_nls +EXPORT_SYMBOL vmlinux 0x05830e7c qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0x05a10dc0 qdisc_reset +EXPORT_SYMBOL vmlinux 0x05c398d9 page_pool_release_page +EXPORT_SYMBOL vmlinux 0x05dc4f84 md_integrity_register +EXPORT_SYMBOL vmlinux 0x05e089a9 iget5_locked +EXPORT_SYMBOL vmlinux 0x05ee6760 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x05f89aa1 pci_read_config_word +EXPORT_SYMBOL vmlinux 0x06062007 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x0609c3d3 pcie_print_link_status +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0623cde1 tcp_fastopen_defer_connect +EXPORT_SYMBOL vmlinux 0x062b9b20 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06419233 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x065c07c6 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x065eea67 jbd2_journal_inode_ranged_wait +EXPORT_SYMBOL vmlinux 0x067d73b4 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0x06912cac clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x06acaa98 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x06b7775e __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x06ba77c2 blk_queue_flag_set +EXPORT_SYMBOL vmlinux 0x06bbf7e2 read_cache_pages +EXPORT_SYMBOL vmlinux 0x06bddbb3 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x06bf03e9 pci_match_id +EXPORT_SYMBOL vmlinux 0x06fb28b5 bio_copy_data_iter +EXPORT_SYMBOL vmlinux 0x06fdd7cc __xa_store +EXPORT_SYMBOL vmlinux 0x07297511 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x07376991 mutex_lock +EXPORT_SYMBOL vmlinux 0x0762d155 finalize_exec +EXPORT_SYMBOL vmlinux 0x077c5eae unload_nls +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07beeb44 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07dd502a s390_arch_random_generate +EXPORT_SYMBOL vmlinux 0x07e28914 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace +EXPORT_SYMBOL vmlinux 0x0802e3fc simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x0803bb95 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x0823f696 mark_buffer_write_io_error +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x0843ee4f unregister_key_type +EXPORT_SYMBOL vmlinux 0x08456553 match_string +EXPORT_SYMBOL vmlinux 0x084837cd con_is_bound +EXPORT_SYMBOL vmlinux 0x084af693 vfs_ioctl +EXPORT_SYMBOL vmlinux 0x0873fe08 blk_queue_flag_clear +EXPORT_SYMBOL vmlinux 0x0877f8b0 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x08879ef6 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x088c96f6 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x088d6aef iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x08c30ede tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0x08e1e0cc remap_pfn_range +EXPORT_SYMBOL vmlinux 0x08fc0cf0 devm_pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x090875e5 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0x0922134a dev_driver_string +EXPORT_SYMBOL vmlinux 0x093a4933 d_move +EXPORT_SYMBOL vmlinux 0x094ba27a pci_request_irq +EXPORT_SYMBOL vmlinux 0x094effa5 __iucv_message_receive +EXPORT_SYMBOL vmlinux 0x095c4d48 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x095de968 bio_advance +EXPORT_SYMBOL vmlinux 0x095e2189 put_tty_driver +EXPORT_SYMBOL vmlinux 0x0967d367 devm_alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x096e1f05 rt_dst_alloc +EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09aa6e1f tcp_parse_options +EXPORT_SYMBOL vmlinux 0x09bd26db unregister_filesystem +EXPORT_SYMBOL vmlinux 0x09bf6fbe ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09f13925 fs_param_is_fd +EXPORT_SYMBOL vmlinux 0x09f2044c kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x0a18bce0 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3b7036 dma_fence_chain_find_seqno +EXPORT_SYMBOL vmlinux 0x0a3db1f0 sget +EXPORT_SYMBOL vmlinux 0x0a440419 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x0a4e1ffc prepare_to_swait_exclusive +EXPORT_SYMBOL vmlinux 0x0a6b40ec ccw_device_dma_zalloc +EXPORT_SYMBOL vmlinux 0x0a6d7670 stream_open +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a8077f7 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace +EXPORT_SYMBOL vmlinux 0x0aacd352 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x0ac73110 dquot_alloc +EXPORT_SYMBOL vmlinux 0x0ae60c27 utf8_normalize +EXPORT_SYMBOL vmlinux 0x0aecb09a nvm_alloc_dev +EXPORT_SYMBOL vmlinux 0x0b00e77d dst_discard_out +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b24bf68 unpin_user_pages +EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0x0b37b380 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x0b3be741 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x0b41c2a7 drop_super +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7e1282 fs_lookup_param +EXPORT_SYMBOL vmlinux 0x0b8c1180 dma_resv_reserve_shared +EXPORT_SYMBOL vmlinux 0x0b8d11cf swake_up_one +EXPORT_SYMBOL vmlinux 0x0b9e00ee param_set_int +EXPORT_SYMBOL vmlinux 0x0bc2f36e dquot_disable +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd0790a t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x0bd0b0de tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x0bf03e09 km_state_expired +EXPORT_SYMBOL vmlinux 0x0bf835b1 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x0bfa2b7d block_truncate_page +EXPORT_SYMBOL vmlinux 0x0bfe97ac tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x0c06cdb0 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x0c17a68e zlib_dfltcc_support +EXPORT_SYMBOL vmlinux 0x0c193111 ccw_device_set_offline +EXPORT_SYMBOL vmlinux 0x0c1d17b7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x0c1e1a9c mini_qdisc_pair_init +EXPORT_SYMBOL vmlinux 0x0c1f5052 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x0c2435d0 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x0c25ec48 secure_tcpv6_seq +EXPORT_SYMBOL vmlinux 0x0c62c27f get_vm_area +EXPORT_SYMBOL vmlinux 0x0c6ccf20 s390_isolate_bp +EXPORT_SYMBOL vmlinux 0x0c7cf7c6 zero_page_mask +EXPORT_SYMBOL vmlinux 0x0c9c0c0e finish_swait +EXPORT_SYMBOL vmlinux 0x0cb264a1 security_lock_kernel_down +EXPORT_SYMBOL vmlinux 0x0cba0b14 flow_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x0cc0f4c5 __genradix_prealloc +EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive +EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch +EXPORT_SYMBOL vmlinux 0x0ced6361 param_ops_uint +EXPORT_SYMBOL vmlinux 0x0d006499 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x0d05e9ae xa_extract +EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x0d33f579 lookup_positive_unlocked +EXPORT_SYMBOL vmlinux 0x0d38f25e fscrypt_get_encryption_info +EXPORT_SYMBOL vmlinux 0x0d3e0e16 __xa_insert +EXPORT_SYMBOL vmlinux 0x0d3f6830 tcf_chain_get_by_act +EXPORT_SYMBOL vmlinux 0x0d41dccf locks_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d74d164 pci_resize_resource +EXPORT_SYMBOL vmlinux 0x0d829263 sock_set_rcvbuf +EXPORT_SYMBOL vmlinux 0x0d845943 vif_device_init +EXPORT_SYMBOL vmlinux 0x0d95d1a7 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x0db37f55 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x0dbc6d8d filp_close +EXPORT_SYMBOL vmlinux 0x0dc75a05 md_error +EXPORT_SYMBOL vmlinux 0x0dd0c391 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x0dd2cc32 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x0dd6d390 netdev_adjacent_change_abort +EXPORT_SYMBOL vmlinux 0x0de243e2 inet_frag_reasm_prepare +EXPORT_SYMBOL vmlinux 0x0ded0e25 __check_sticky +EXPORT_SYMBOL vmlinux 0x0dfe8eee set_disk_ro +EXPORT_SYMBOL vmlinux 0x0e007a6d __pci_register_driver +EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 +EXPORT_SYMBOL vmlinux 0x0e19190a tcf_exts_terse_dump +EXPORT_SYMBOL vmlinux 0x0e1ecfb7 unregister_adapter_interrupt +EXPORT_SYMBOL vmlinux 0x0e2f0920 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x0e39e16f empty_aops +EXPORT_SYMBOL vmlinux 0x0e4b302f fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x0e5e5d2d register_shrinker +EXPORT_SYMBOL vmlinux 0x0e67f347 __lock_buffer +EXPORT_SYMBOL vmlinux 0x0e6c5fec fb_pan_display +EXPORT_SYMBOL vmlinux 0x0e7dd936 release_sock +EXPORT_SYMBOL vmlinux 0x0e90e984 param_set_charp +EXPORT_SYMBOL vmlinux 0x0ea2de23 inet_offloads +EXPORT_SYMBOL vmlinux 0x0ea763c3 sclp_sync_wait +EXPORT_SYMBOL vmlinux 0x0eab56fa __kfifo_max_r +EXPORT_SYMBOL vmlinux 0x0ead1d65 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x0ebeb31c dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x0ed0336c ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x0ed67678 neigh_update +EXPORT_SYMBOL vmlinux 0x0ee24f97 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x0f51e09a compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0f59acca __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x0f6e22e8 filemap_check_errors +EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x0f8ee51e ZSTD_resetDStream +EXPORT_SYMBOL vmlinux 0x0fa38685 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x0faa28fd xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbd63a4 mutex_is_locked +EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create +EXPORT_SYMBOL vmlinux 0x0ffc9609 ap_recv +EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm +EXPORT_SYMBOL vmlinux 0x100fbe69 vm_zone_stat +EXPORT_SYMBOL vmlinux 0x10112f05 ZSTD_DStreamInSize +EXPORT_SYMBOL vmlinux 0x1013470f d_exact_alias +EXPORT_SYMBOL vmlinux 0x1013dc67 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x101b1af7 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x102de70c tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region +EXPORT_SYMBOL vmlinux 0x103781fa ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x10497616 memweight +EXPORT_SYMBOL vmlinux 0x104e47d4 idr_replace +EXPORT_SYMBOL vmlinux 0x10564f46 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x10588a80 write_inode_now +EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe +EXPORT_SYMBOL vmlinux 0x1070ddbf security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108ef893 tcp_check_req +EXPORT_SYMBOL vmlinux 0x109903b1 sock_wfree +EXPORT_SYMBOL vmlinux 0x109ae454 xfrm6_rcv_tnl +EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x10cea616 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x10d595e8 d_invalidate +EXPORT_SYMBOL vmlinux 0x10d7640d alloc_pages_vma +EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x10f999e1 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x10fd7e58 proc_set_size +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x113563b7 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x113d5572 dmam_alloc_attrs +EXPORT_SYMBOL vmlinux 0x113f9189 no_seek_end_llseek +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116c730d _dev_alert +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118d84a6 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x1196da18 single_release +EXPORT_SYMBOL vmlinux 0x11a13e38 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x11abed78 security_socket_socketpair +EXPORT_SYMBOL vmlinux 0x11b31df2 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x11bab181 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg +EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic +EXPORT_SYMBOL vmlinux 0x11f0f083 kernel_cpumcf_avail +EXPORT_SYMBOL vmlinux 0x11f6db5f unregister_netdev +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fb83cb on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x12026e7e tc_setup_cb_replace +EXPORT_SYMBOL vmlinux 0x1204deb3 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120c139f gen_pool_dma_zalloc +EXPORT_SYMBOL vmlinux 0x120ddcc2 get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0x1216172e default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1239fc2d sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x1251a12e console_mode +EXPORT_SYMBOL vmlinux 0x125b36e0 down_write_killable +EXPORT_SYMBOL vmlinux 0x12641250 get_phys_clock +EXPORT_SYMBOL vmlinux 0x127be0b3 skb_push +EXPORT_SYMBOL vmlinux 0x129d17a0 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bf46ea param_set_bool +EXPORT_SYMBOL vmlinux 0x12c1b63d pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x12c307b2 d_splice_alias +EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 +EXPORT_SYMBOL vmlinux 0x12cc5e5d xa_find +EXPORT_SYMBOL vmlinux 0x12d7236c fsync_bdev +EXPORT_SYMBOL vmlinux 0x12e00a91 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x12fa14a8 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x12fe638d diag_stat_inc_norecursion +EXPORT_SYMBOL vmlinux 0x13110126 request_resource +EXPORT_SYMBOL vmlinux 0x131ee4b9 pcie_get_width_cap +EXPORT_SYMBOL vmlinux 0x131f41ed tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge +EXPORT_SYMBOL vmlinux 0x13610162 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x136608b2 __tracepoint_s390_cio_csch +EXPORT_SYMBOL vmlinux 0x136d755c discard_new_inode +EXPORT_SYMBOL vmlinux 0x13730361 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x13759b6e xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x137f3c6a __cpuhp_remove_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x1394b8c2 seq_hex_dump +EXPORT_SYMBOL vmlinux 0x13a1304d pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e9cb2f vlan_vid_add +EXPORT_SYMBOL vmlinux 0x14189fce path_get +EXPORT_SYMBOL vmlinux 0x14340de7 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x143a3748 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x1459e7a5 map_kernel_range_noflush +EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc +EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table +EXPORT_SYMBOL vmlinux 0x146821f1 skb_ext_add +EXPORT_SYMBOL vmlinux 0x1473cad5 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x147656c7 sock_no_bind +EXPORT_SYMBOL vmlinux 0x149efd09 ccw_device_clear_options +EXPORT_SYMBOL vmlinux 0x14b1bd1c nvm_register +EXPORT_SYMBOL vmlinux 0x14c5e5b3 segment_warning +EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled +EXPORT_SYMBOL vmlinux 0x14e6a7e3 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x14f41e94 scsi_print_result +EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x1504f06e seg6_hmac_net_init +EXPORT_SYMBOL vmlinux 0x150983e1 ZSTD_DStreamOutSize +EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x1544fd8a devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x154b0106 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x156f00f3 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x1572a6db jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x15b6af3a dev_alert_hash +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bc9ebc iput +EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial +EXPORT_SYMBOL vmlinux 0x15c24ad9 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x15c42df8 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x15f5df91 get_pgste +EXPORT_SYMBOL vmlinux 0x15f63c1b sk_alloc +EXPORT_SYMBOL vmlinux 0x160a6e28 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string +EXPORT_SYMBOL vmlinux 0x1632193b balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x163a3cd2 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x165d0303 inet_del_offload +EXPORT_SYMBOL vmlinux 0x16646b26 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x166a5997 cdev_add +EXPORT_SYMBOL vmlinux 0x166c95c2 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x167ccc4e page_pool_put_page +EXPORT_SYMBOL vmlinux 0x167de5c1 should_remove_suid +EXPORT_SYMBOL vmlinux 0x16843bcd kthread_associate_blkcg +EXPORT_SYMBOL vmlinux 0x169f57a9 uv_info +EXPORT_SYMBOL vmlinux 0x16b048a9 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x16b4d344 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x16c5465c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait +EXPORT_SYMBOL vmlinux 0x16fe733e mark_page_accessed +EXPORT_SYMBOL vmlinux 0x16ff56fc jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x17036f15 tso_count_descs +EXPORT_SYMBOL vmlinux 0x17262ac3 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x1736305d posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x1758d356 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x176c8e97 xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x176e4603 vfs_llseek +EXPORT_SYMBOL vmlinux 0x17b6009a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x17c4cb08 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x1801ad21 simple_release_fs +EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace +EXPORT_SYMBOL vmlinux 0x186455eb udp_seq_start +EXPORT_SYMBOL vmlinux 0x186ad371 done_path_create +EXPORT_SYMBOL vmlinux 0x18772fab blk_queue_split +EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1897e8be mempool_create +EXPORT_SYMBOL vmlinux 0x189b6bac memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x18ab465e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x18b87cca sclp_deactivate +EXPORT_SYMBOL vmlinux 0x18c742fb dma_resv_copy_fences +EXPORT_SYMBOL vmlinux 0x18cc5a52 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x18cf555f ap_driver_register +EXPORT_SYMBOL vmlinux 0x18cf9e95 iov_iter_init +EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x190ad815 __tracepoint_s390_cio_stsch +EXPORT_SYMBOL vmlinux 0x1924618e dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x192b283f path_has_submounts +EXPORT_SYMBOL vmlinux 0x19466b32 security_sctp_sk_clone +EXPORT_SYMBOL vmlinux 0x197c3287 pin_user_pages +EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x198e2f7b freezing_slow_path +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a328fe udp_prot +EXPORT_SYMBOL vmlinux 0x19af0f24 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19cdb852 bd_finish_claiming +EXPORT_SYMBOL vmlinux 0x19d31484 disk_start_io_acct +EXPORT_SYMBOL vmlinux 0x19e324fc generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x19ee5b30 ccw_device_start_key +EXPORT_SYMBOL vmlinux 0x19f50efa unlock_buffer +EXPORT_SYMBOL vmlinux 0x1a0207c8 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x1a14dcaf elv_rb_find +EXPORT_SYMBOL vmlinux 0x1a1d7276 sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x1a28add2 radix_tree_iter_delete +EXPORT_SYMBOL vmlinux 0x1a58576e fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x1a6df959 may_umount_tree +EXPORT_SYMBOL vmlinux 0x1a7a0ee9 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0x1a92d133 dma_resv_fini +EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x1a9baa0a proc_create_mount_point +EXPORT_SYMBOL vmlinux 0x1accfc57 kern_path_create +EXPORT_SYMBOL vmlinux 0x1ad9e976 dump_page +EXPORT_SYMBOL vmlinux 0x1ae4c079 flow_rule_match_vlan +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b1f04b7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b63e3a0 dma_set_coherent_mask +EXPORT_SYMBOL vmlinux 0x1b667c6f kernel_sendpage +EXPORT_SYMBOL vmlinux 0x1b711b2f inet6_del_offload +EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device +EXPORT_SYMBOL vmlinux 0x1b883d51 datagram_poll +EXPORT_SYMBOL vmlinux 0x1ba04458 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc +EXPORT_SYMBOL vmlinux 0x1bca36a5 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1bca589f tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x1bd53671 tcf_idr_search +EXPORT_SYMBOL vmlinux 0x1be92083 tty_port_init +EXPORT_SYMBOL vmlinux 0x1bf301c3 __wake_up +EXPORT_SYMBOL vmlinux 0x1bfe5690 __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0x1c080dde netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1c32054a get_tree_nodev +EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat +EXPORT_SYMBOL vmlinux 0x1c3980b0 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x1c49f426 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x1c4ac59f udp6_set_csum +EXPORT_SYMBOL vmlinux 0x1c5f242e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x1c62a1f1 md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x1c6f2b3b dquot_resume +EXPORT_SYMBOL vmlinux 0x1c74d2fa ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c8baa0a input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x1c8f6c94 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x1c9dac1f tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x1ca078b5 vfs_get_tree +EXPORT_SYMBOL vmlinux 0x1cb2c6d8 kvasprintf +EXPORT_SYMBOL vmlinux 0x1cea3a12 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x1cea7c32 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d3e2765 iucv_path_quiesce +EXPORT_SYMBOL vmlinux 0x1d43739b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x1d449b90 dfltcc_can_deflate +EXPORT_SYMBOL vmlinux 0x1d498124 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x1d7e8fa6 bdev_dax_pgoff +EXPORT_SYMBOL vmlinux 0x1dadd920 __kmalloc +EXPORT_SYMBOL vmlinux 0x1db1de2d netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x1dbcf3bc flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x1dbdaa0a ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key +EXPORT_SYMBOL vmlinux 0x1dc94e52 skb_tx_error +EXPORT_SYMBOL vmlinux 0x1dcad06d d_rehash +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x1de21a35 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x1df51dc4 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x1df58ca0 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x1df9a8c8 param_set_ushort +EXPORT_SYMBOL vmlinux 0x1dfea8f2 page_get_link +EXPORT_SYMBOL vmlinux 0x1e02ce48 fc_mount +EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x1e19a7a3 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0x1e4374b3 ccw_device_set_options +EXPORT_SYMBOL vmlinux 0x1e43ade2 tcp_close +EXPORT_SYMBOL vmlinux 0x1e5272b5 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x1e5494ce lru_cache_add +EXPORT_SYMBOL vmlinux 0x1e5e31d1 pci_release_regions +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e705e20 downgrade_write +EXPORT_SYMBOL vmlinux 0x1e767b90 call_fib_notifiers +EXPORT_SYMBOL vmlinux 0x1e811ae0 bdevname +EXPORT_SYMBOL vmlinux 0x1e859f86 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x1e8a161a crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb30b94 elv_rb_del +EXPORT_SYMBOL vmlinux 0x1ed89d5f netdev_features_change +EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 +EXPORT_SYMBOL vmlinux 0x1ede54f2 proc_do_large_bitmap +EXPORT_SYMBOL vmlinux 0x1ee2c6ad pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x1ee375fb __ip_select_ident +EXPORT_SYMBOL vmlinux 0x1ef3d88d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x1ef5277b fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x1f03a062 nf_log_trace +EXPORT_SYMBOL vmlinux 0x1f0ad6b7 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x1f17a2ba netdev_bind_sb_channel_queue +EXPORT_SYMBOL vmlinux 0x1f302990 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x1f43db09 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x1f560f67 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x1f57822e krealloc +EXPORT_SYMBOL vmlinux 0x1f72f161 page_symlink +EXPORT_SYMBOL vmlinux 0x1f8a1a32 lockref_put_return +EXPORT_SYMBOL vmlinux 0x1f9b4fe3 skb_seq_read +EXPORT_SYMBOL vmlinux 0x1fb27078 tcw_get_tccb +EXPORT_SYMBOL vmlinux 0x1fb868d9 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc4b84c remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x1fc95c6a fb_find_mode +EXPORT_SYMBOL vmlinux 0x1fda8755 __memset32 +EXPORT_SYMBOL vmlinux 0x1fe37181 dquot_get_next_dqblk +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ffb4de5 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20006fcc pci_release_region +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2011ba5e dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x20262570 nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0x20301975 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x204af5b5 netlbl_audit_start +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x20687cd7 dma_fence_signal +EXPORT_SYMBOL vmlinux 0x206d8efe security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x206ff8d7 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2075a2f9 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x20802bce iget_locked +EXPORT_SYMBOL vmlinux 0x20973b94 segment_unload +EXPORT_SYMBOL vmlinux 0x2097affd generic_permission +EXPORT_SYMBOL vmlinux 0x20a0e3c8 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ac5f49 xp_dma_map +EXPORT_SYMBOL vmlinux 0x20b00efc from_kuid_munged +EXPORT_SYMBOL vmlinux 0x20b7f240 tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0x20c587cc utf8nagemin +EXPORT_SYMBOL vmlinux 0x20cc4fd8 ccw_device_get_mdc +EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x20ea5d47 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x20ee076e itcw_add_tidaw +EXPORT_SYMBOL vmlinux 0x20ff45f5 __sk_mem_raise_allocated +EXPORT_SYMBOL vmlinux 0x210219bd dm_table_get_md +EXPORT_SYMBOL vmlinux 0x21059cd7 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x21184749 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x212b98c4 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x213d85e8 dst_destroy +EXPORT_SYMBOL vmlinux 0x215d5234 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x2171afc5 tcp_mss_to_mtu +EXPORT_SYMBOL vmlinux 0x2180f5f3 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x2186b69f nvm_end_io +EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x2199ee07 md_write_end +EXPORT_SYMBOL vmlinux 0x21a23cb1 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x21b91b99 follow_pfn +EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance +EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21c85e35 pci_iomap +EXPORT_SYMBOL vmlinux 0x21cb4243 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21e5fde0 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x21e8e668 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x21ef76e5 km_new_mapping +EXPORT_SYMBOL vmlinux 0x2204a486 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x221887fa mr_mfc_find_parent +EXPORT_SYMBOL vmlinux 0x2220a119 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x228f89ee send_sig +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d3dd01 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x22dd6d51 tccb_init +EXPORT_SYMBOL vmlinux 0x22e4c96c xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x2301111b inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x23440cfb sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x236c8c64 memcpy +EXPORT_SYMBOL vmlinux 0x237e81b6 ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x237f573b param_get_ulong +EXPORT_SYMBOL vmlinux 0x238c920b __devm_release_region +EXPORT_SYMBOL vmlinux 0x23ad6a76 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23bcf1fd redraw_screen +EXPORT_SYMBOL vmlinux 0x23c11526 pin_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242ed760 page_cache_next_miss +EXPORT_SYMBOL vmlinux 0x242f3562 irq_subclass_register +EXPORT_SYMBOL vmlinux 0x24467f38 fs_context_for_reconfigure +EXPORT_SYMBOL vmlinux 0x24587924 iucv_root +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x247246ba jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x2473f47e dm_table_get_size +EXPORT_SYMBOL vmlinux 0x24785f0f __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x247a3fe4 LZ4_decompress_fast_continue +EXPORT_SYMBOL vmlinux 0x2480d0be raw3270_start_locked +EXPORT_SYMBOL vmlinux 0x248e45b2 blk_put_request +EXPORT_SYMBOL vmlinux 0x24c47fff __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer +EXPORT_SYMBOL vmlinux 0x24d597f7 flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x24d86bbc sock_setsockopt +EXPORT_SYMBOL vmlinux 0x24df6c79 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x24fe115e crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x25045fcf tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x25069369 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x250e3a1b commit_creds +EXPORT_SYMBOL vmlinux 0x25293a22 audit_log +EXPORT_SYMBOL vmlinux 0x252cf375 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x253cb82f dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x253f69f6 skb_trim +EXPORT_SYMBOL vmlinux 0x2548c032 __cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x256be799 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2572a8cd tty_name +EXPORT_SYMBOL vmlinux 0x257c908a raw3270_add_view +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation +EXPORT_SYMBOL vmlinux 0x259988dc param_ops_long +EXPORT_SYMBOL vmlinux 0x259ebf0b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x25af3d9e cad_pid +EXPORT_SYMBOL vmlinux 0x25b24d70 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x25c96f10 zero_fill_bio_iter +EXPORT_SYMBOL vmlinux 0x25de2d1f seg6_hmac_net_exit +EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ec1b28 strlen +EXPORT_SYMBOL vmlinux 0x25f1e7a7 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x260bb9c2 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x26124966 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x2630669c gen_pool_free_owner +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2641a1c6 diag224 +EXPORT_SYMBOL vmlinux 0x265836e2 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x267180c7 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x26744044 kill_block_super +EXPORT_SYMBOL vmlinux 0x267c5f9d rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x26847533 dm_put_device +EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc +EXPORT_SYMBOL vmlinux 0x26a37788 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x26a5b938 sclp_pci_configure +EXPORT_SYMBOL vmlinux 0x26ac1a67 pci_enable_atomic_ops_to_root +EXPORT_SYMBOL vmlinux 0x26b82096 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x26bb96fc __skb_pad +EXPORT_SYMBOL vmlinux 0x26d5e2d9 dma_direct_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e9ad3c kbd_ioctl +EXPORT_SYMBOL vmlinux 0x270b9709 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x2716f76c remove_arg_zero +EXPORT_SYMBOL vmlinux 0x271ec0ea unpin_user_pages_dirty_lock +EXPORT_SYMBOL vmlinux 0x272870ff __sock_create +EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x27418353 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0x2744c022 xsk_umem_complete_tx +EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp +EXPORT_SYMBOL vmlinux 0x2759a7e0 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x275c24a7 kvfree_sensitive +EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check +EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command +EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string +EXPORT_SYMBOL vmlinux 0x277ad4ad xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x27817afc inet_add_offload +EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x2785c9de simple_rmdir +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27874d97 account_page_redirty +EXPORT_SYMBOL vmlinux 0x2790eb22 ihold +EXPORT_SYMBOL vmlinux 0x279bcae4 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2600f blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource +EXPORT_SYMBOL vmlinux 0x27eb9cd1 tcw_set_intrg +EXPORT_SYMBOL vmlinux 0x27ff370f config_item_set_name +EXPORT_SYMBOL vmlinux 0x2809ac8a dquot_quota_on +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281e1ffe generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x282394a5 flow_rule_match_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x2830db94 __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x28568bd1 pagevec_lookup_range +EXPORT_SYMBOL vmlinux 0x2866a9f8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x286e5b48 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x288382ef _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2887fac9 udp_seq_stop +EXPORT_SYMBOL vmlinux 0x28a83f8f skb_flow_dissect_meta +EXPORT_SYMBOL vmlinux 0x28ce81fd kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x28f13d07 sk_dst_check +EXPORT_SYMBOL vmlinux 0x28fc4c81 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x291e8b4d blk_queue_max_write_zeroes_sectors +EXPORT_SYMBOL vmlinux 0x29391e7d vm_munmap +EXPORT_SYMBOL vmlinux 0x293c40e0 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x294b9ea1 on_each_cpu +EXPORT_SYMBOL vmlinux 0x2956cf37 sclp_remove_processed +EXPORT_SYMBOL vmlinux 0x29789394 empty_zero_page +EXPORT_SYMBOL vmlinux 0x2981d709 devm_pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x29d6f8f4 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x29e454fc __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x29eec1ac __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x2a224da7 del_gendisk +EXPORT_SYMBOL vmlinux 0x2a25c004 nf_log_packet +EXPORT_SYMBOL vmlinux 0x2a41d203 dql_init +EXPORT_SYMBOL vmlinux 0x2a53de5d nf_log_unset +EXPORT_SYMBOL vmlinux 0x2a5c1dab blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x2a805563 __kernel_cpumcf_end +EXPORT_SYMBOL vmlinux 0x2a881b2f config_group_init +EXPORT_SYMBOL vmlinux 0x2a942cdc keyring_clear +EXPORT_SYMBOL vmlinux 0x2aa27cc7 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x2aad62d0 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x2ad46b8d dev_printk_emit +EXPORT_SYMBOL vmlinux 0x2ae4445e __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x2af3f454 ssch +EXPORT_SYMBOL vmlinux 0x2b13c1db __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x2b4238da tcf_action_exec +EXPORT_SYMBOL vmlinux 0x2b457d09 kern_unmount_array +EXPORT_SYMBOL vmlinux 0x2b50e83d sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x2b631017 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer +EXPORT_SYMBOL vmlinux 0x2b746361 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x2b860369 netdev_adjacent_change_prepare +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba115bf xsk_umem_consume_tx_done +EXPORT_SYMBOL vmlinux 0x2bb27e5d compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2bb77c1f secure_tcpv6_ts_off +EXPORT_SYMBOL vmlinux 0x2bbd5942 tcp_prot +EXPORT_SYMBOL vmlinux 0x2bbe76f4 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2bd26a50 padata_do_serial +EXPORT_SYMBOL vmlinux 0x2bf0b7b1 skb_dequeue +EXPORT_SYMBOL vmlinux 0x2bf3f440 flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0x2bf68886 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x2c0f1582 lockref_get +EXPORT_SYMBOL vmlinux 0x2c0f2fb3 mempool_alloc +EXPORT_SYMBOL vmlinux 0x2c0f79f5 ip_sock_set_mtu_discover +EXPORT_SYMBOL vmlinux 0x2c1be3dd pci_save_state +EXPORT_SYMBOL vmlinux 0x2c1cf773 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2c252b48 ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c29a995 __strnlen_user +EXPORT_SYMBOL vmlinux 0x2c3d4590 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x2c596168 open_exec +EXPORT_SYMBOL vmlinux 0x2c6ab1fd vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x2c71aac7 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x2cb1cab2 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x2cbd23af trace_print_hex_dump_seq +EXPORT_SYMBOL vmlinux 0x2cbdef7d radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x2cc1f8c7 filemap_range_has_page +EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top +EXPORT_SYMBOL vmlinux 0x2cec656d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x2d00da51 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x2d038358 component_match_add_typed +EXPORT_SYMBOL vmlinux 0x2d0d4cc4 d_instantiate_anon +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3195e4 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup +EXPORT_SYMBOL vmlinux 0x2d3d7311 inode_init_always +EXPORT_SYMBOL vmlinux 0x2d4233a7 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0x2d630002 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x2d78f97f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x2d813d95 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x2d84d54d __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr +EXPORT_SYMBOL vmlinux 0x2d9aa7ad jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x2dc35a61 __register_chrdev +EXPORT_SYMBOL vmlinux 0x2e01a65c __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x2e29ad73 __block_write_full_page +EXPORT_SYMBOL vmlinux 0x2e41cf9a raw_copy_in_user +EXPORT_SYMBOL vmlinux 0x2e43356b config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0x2e5aa840 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e75821f dquot_scan_active +EXPORT_SYMBOL vmlinux 0x2ea1ce92 filemap_fdatawait_keep_errors +EXPORT_SYMBOL vmlinux 0x2ebac868 sock_no_accept +EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set +EXPORT_SYMBOL vmlinux 0x2edcab17 ZSTD_initDStream_usingDDict +EXPORT_SYMBOL vmlinux 0x2ef5661d segment_modify_shared +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f163b52 eth_get_headlen +EXPORT_SYMBOL vmlinux 0x2f27e197 dev_load +EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f358dc4 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x2f471b39 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x2f5d1ac7 fasync_helper +EXPORT_SYMBOL vmlinux 0x2f647cf2 netlink_capable +EXPORT_SYMBOL vmlinux 0x2f6ad2d8 netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2f7d1fdd jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x2f866c2d __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x2fa5a500 memcmp +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe00e61 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe8f688 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x2fed4932 eth_header_cache +EXPORT_SYMBOL vmlinux 0x2ffffb6f _ebc_tolower +EXPORT_SYMBOL vmlinux 0x3004487e dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0x300c14f3 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x3031340f ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x3041d196 load_nls +EXPORT_SYMBOL vmlinux 0x304a4b19 simple_empty +EXPORT_SYMBOL vmlinux 0x30544738 sock_no_listen +EXPORT_SYMBOL vmlinux 0x305dd240 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x306494b9 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x306828dc iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x306b77c1 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x306ed143 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x308683e4 pmdp_xchg_direct +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 +EXPORT_SYMBOL vmlinux 0x30c299d8 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x30c7a2fe _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x30c7ac99 tcf_get_next_proto +EXPORT_SYMBOL vmlinux 0x30e1d113 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x30e471c9 dev_close +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30e9f952 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x30ec5e50 __inc_node_page_state +EXPORT_SYMBOL vmlinux 0x30ec7361 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 +EXPORT_SYMBOL vmlinux 0x312b0052 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x31376318 ccw_device_resume +EXPORT_SYMBOL vmlinux 0x31447ce5 inet_gro_receive +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x31452cfa dev_mc_add +EXPORT_SYMBOL vmlinux 0x31886db8 inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x31953806 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0x319dd27b __sk_mem_reduce_allocated +EXPORT_SYMBOL vmlinux 0x31a294f4 inet_frags_init +EXPORT_SYMBOL vmlinux 0x31b6c9e8 param_set_invbool +EXPORT_SYMBOL vmlinux 0x31c53a58 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x31d3deb6 noop_fsync +EXPORT_SYMBOL vmlinux 0x31e7b349 key_create_or_update +EXPORT_SYMBOL vmlinux 0x31ea2f3b elevator_alloc +EXPORT_SYMBOL vmlinux 0x31eb2c96 lockref_put_not_zero +EXPORT_SYMBOL vmlinux 0x31edc11e ip_setsockopt +EXPORT_SYMBOL vmlinux 0x31edf249 find_inode_rcu +EXPORT_SYMBOL vmlinux 0x32030c81 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x32074a47 input_match_device_id +EXPORT_SYMBOL vmlinux 0x32394a65 tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x3244380f __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3248665a sock_no_connect +EXPORT_SYMBOL vmlinux 0x324d2977 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x3253c5d3 blackhole_netdev +EXPORT_SYMBOL vmlinux 0x32690898 security_sb_remount +EXPORT_SYMBOL vmlinux 0x326ffa9e ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x3275689f smp_ctl_set_bit +EXPORT_SYMBOL vmlinux 0x32816d91 register_cdrom +EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state +EXPORT_SYMBOL vmlinux 0x32ae0796 do_wait_intr +EXPORT_SYMBOL vmlinux 0x32beadcf inode_get_bytes +EXPORT_SYMBOL vmlinux 0x32c6a2d8 _ebcasc_500 +EXPORT_SYMBOL vmlinux 0x32cca160 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x32e060b1 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x3319aeab pci_dev_get +EXPORT_SYMBOL vmlinux 0x332c063a jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x33498c71 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x335d469b proc_remove +EXPORT_SYMBOL vmlinux 0x335e6c51 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x338bbef8 __ndelay +EXPORT_SYMBOL vmlinux 0x338d8c8d configfs_depend_item_unlocked +EXPORT_SYMBOL vmlinux 0x339ed741 dma_resv_add_excl_fence +EXPORT_SYMBOL vmlinux 0x33a11450 dma_fence_get_stub +EXPORT_SYMBOL vmlinux 0x33b77306 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x33b7f536 dev_uc_del +EXPORT_SYMBOL vmlinux 0x33bbb126 vmemmap +EXPORT_SYMBOL vmlinux 0x33c8e87b netdev_has_upper_dev_all_rcu +EXPORT_SYMBOL vmlinux 0x33d5306d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x33d9a01c blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x33daaab1 iptun_encaps +EXPORT_SYMBOL vmlinux 0x33e19a89 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x33e3cb87 inet_select_addr +EXPORT_SYMBOL vmlinux 0x33e639ce idr_for_each +EXPORT_SYMBOL vmlinux 0x33f74de3 _ascebc_500 +EXPORT_SYMBOL vmlinux 0x340816ac udplite_prot +EXPORT_SYMBOL vmlinux 0x340d6801 tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x341ee801 init_net +EXPORT_SYMBOL vmlinux 0x34243ba1 napi_consume_skb +EXPORT_SYMBOL vmlinux 0x34248f4d netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x3439009a ccw_device_clear +EXPORT_SYMBOL vmlinux 0x34449d85 skb_unlink +EXPORT_SYMBOL vmlinux 0x3447d421 blk_get_request +EXPORT_SYMBOL vmlinux 0x34500c66 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x3450a29f shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x3456107f km_policy_expired +EXPORT_SYMBOL vmlinux 0x3462a49f path_is_under +EXPORT_SYMBOL vmlinux 0x346d6622 blk_mq_queue_stopped +EXPORT_SYMBOL vmlinux 0x346d6b03 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x34894ee2 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x349071a0 do_splice_direct +EXPORT_SYMBOL vmlinux 0x3490a3cf scsi_scan_host +EXPORT_SYMBOL vmlinux 0x349ac524 __tracepoint_dma_fence_emit +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34c73865 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x34da13ca nonseekable_open +EXPORT_SYMBOL vmlinux 0x34e5624d xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f497a7 ida_free +EXPORT_SYMBOL vmlinux 0x3505e3ee get_ccwdev_by_busid +EXPORT_SYMBOL vmlinux 0x350942ed fb_set_var +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351e2c4d con_is_visible +EXPORT_SYMBOL vmlinux 0x351f7437 cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x35203512 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x35249dc4 dev_err_hash +EXPORT_SYMBOL vmlinux 0x352e46da dev_get_port_parent_id +EXPORT_SYMBOL vmlinux 0x353b3369 seq_release_private +EXPORT_SYMBOL vmlinux 0x353c02e9 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x3548b1fc dev_addr_flush +EXPORT_SYMBOL vmlinux 0x35491384 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x3550ed3f set_user_nice +EXPORT_SYMBOL vmlinux 0x3596ea06 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x359d45cf jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ae5e21 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x35d96476 simple_get_link +EXPORT_SYMBOL vmlinux 0x3602aba9 raw3270_register_notifier +EXPORT_SYMBOL vmlinux 0x3618e8a6 register_qdisc +EXPORT_SYMBOL vmlinux 0x36500338 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const +EXPORT_SYMBOL vmlinux 0x3665825d blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x3670aa12 tty_port_open +EXPORT_SYMBOL vmlinux 0x36c04e67 pagevec_lookup_range_nr_tag +EXPORT_SYMBOL vmlinux 0x36c069cf xp_can_alloc +EXPORT_SYMBOL vmlinux 0x36d45576 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x36db8edf scsi_print_command +EXPORT_SYMBOL vmlinux 0x36db9710 dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0x36e74c04 devm_pci_remap_cfg_resource +EXPORT_SYMBOL vmlinux 0x3719fba1 dma_fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x371fd679 blk_mq_tagset_busy_iter +EXPORT_SYMBOL vmlinux 0x3738d29d scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x373c35af vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x3740b7df submit_bio_wait +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL vmlinux 0x3764a487 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x3776395a xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37be8927 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37bf5974 tcp_peek_len +EXPORT_SYMBOL vmlinux 0x37e85134 configfs_undepend_item +EXPORT_SYMBOL vmlinux 0x37ff4a45 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x3800fe19 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38214b08 locks_init_lock +EXPORT_SYMBOL vmlinux 0x3831dce5 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x3832522f __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3835f112 param_set_ulong +EXPORT_SYMBOL vmlinux 0x383bc37f blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x3843a98d jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3855b670 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x385cc433 __fs_parse +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x38a54ac3 __sk_queue_drop_skb +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38c9fb28 __inet_hash +EXPORT_SYMBOL vmlinux 0x38ca010d vfs_setpos +EXPORT_SYMBOL vmlinux 0x38e00141 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x38e14ac9 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x38e92a0f __post_watch_notification +EXPORT_SYMBOL vmlinux 0x3920e266 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x395bdacc debug_hex_ascii_view +EXPORT_SYMBOL vmlinux 0x39753219 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x3977b9ea freeze_bdev +EXPORT_SYMBOL vmlinux 0x398a935d tty_write_room +EXPORT_SYMBOL vmlinux 0x399738db xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39a70476 ip6_xmit +EXPORT_SYMBOL vmlinux 0x39a99c84 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39c60ac5 ZSTD_decompressBegin +EXPORT_SYMBOL vmlinux 0x39e2ce80 lookup_one_len +EXPORT_SYMBOL vmlinux 0x3a136f16 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x3a13f54a sgl_alloc +EXPORT_SYMBOL vmlinux 0x3a1733d0 dfltcc_inflate +EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x3a476b07 super_setup_bdi +EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized +EXPORT_SYMBOL vmlinux 0x3a500066 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x3a6a1b82 kmem_cache_alloc_bulk +EXPORT_SYMBOL vmlinux 0x3a6c6881 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x3a6f0cf0 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x3a8f7e2a unregister_service_level +EXPORT_SYMBOL vmlinux 0x3aa566ba vfs_iter_write +EXPORT_SYMBOL vmlinux 0x3aa5af36 dma_direct_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x3aaf242a configfs_unregister_subsystem +EXPORT_SYMBOL vmlinux 0x3ab51553 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer +EXPORT_SYMBOL vmlinux 0x3ac1bd8d __breadahead_gfp +EXPORT_SYMBOL vmlinux 0x3ac8938b enable_sacf_uaccess +EXPORT_SYMBOL vmlinux 0x3adea2a2 kthread_bind +EXPORT_SYMBOL vmlinux 0x3b07f53c jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x3b176ce7 release_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0x3b25fb3e devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x3b3fe43f elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b756f6a crc32_le +EXPORT_SYMBOL vmlinux 0x3b885402 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x3b909dff xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x3ba29ea8 unlock_page +EXPORT_SYMBOL vmlinux 0x3bbd94cc __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x3bbf4d42 tcp_sock_set_nodelay +EXPORT_SYMBOL vmlinux 0x3bc670e6 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x3bce3b73 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x3be3767f flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3be8e31f dquot_commit +EXPORT_SYMBOL vmlinux 0x3c048089 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x3c0b4eee __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x3c168d46 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link +EXPORT_SYMBOL vmlinux 0x3c19d728 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x3c210482 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x3c2bd895 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x3c2ed18d genl_unregister_family +EXPORT_SYMBOL vmlinux 0x3c31af6a PageMovable +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf +EXPORT_SYMBOL vmlinux 0x3c3ffcc1 migrate_page_move_mapping +EXPORT_SYMBOL vmlinux 0x3c44ba71 dma_direct_map_page +EXPORT_SYMBOL vmlinux 0x3c518d3b tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c94165c xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3cae6e34 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x3cb03209 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3ccda202 vm_insert_page +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cec0e5f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x3cf77eb7 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x3cfbb55f skb_flow_get_icmp_tci +EXPORT_SYMBOL vmlinux 0x3d117a60 itcw_calc_size +EXPORT_SYMBOL vmlinux 0x3d2510e2 dma_fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x3d296a6f skb_copy_bits +EXPORT_SYMBOL vmlinux 0x3d2c2e9d pci_ep_cfs_add_epc_group +EXPORT_SYMBOL vmlinux 0x3d36b539 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0x3d43eca1 __icmp_send +EXPORT_SYMBOL vmlinux 0x3d4e5c0c blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload +EXPORT_SYMBOL vmlinux 0x3d5c5afe fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x3d6b3755 empty_name +EXPORT_SYMBOL vmlinux 0x3d6e3b9f scsi_host_busy +EXPORT_SYMBOL vmlinux 0x3d7b4d97 mpage_writepage +EXPORT_SYMBOL vmlinux 0x3d83adb5 noop_llseek +EXPORT_SYMBOL vmlinux 0x3da3a2f1 fscrypt_decrypt_bio +EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key +EXPORT_SYMBOL vmlinux 0x3dad4dbc input_set_min_poll_interval +EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x3daf043f xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x3db3b5a6 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcc73d3 fbcon_update_vcs +EXPORT_SYMBOL vmlinux 0x3dce0fe0 vc_resize +EXPORT_SYMBOL vmlinux 0x3de3f6b6 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e01d2ca thaw_super +EXPORT_SYMBOL vmlinux 0x3e03bed5 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x3e06c207 ap_driver_unregister +EXPORT_SYMBOL vmlinux 0x3e0b407f fb_get_mode +EXPORT_SYMBOL vmlinux 0x3e0c7852 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x3e144a5a dquot_initialize_needed +EXPORT_SYMBOL vmlinux 0x3e277b25 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x3e2b0ba6 groups_alloc +EXPORT_SYMBOL vmlinux 0x3e3a1a46 posix_acl_update_mode +EXPORT_SYMBOL vmlinux 0x3e4a3c9f __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x3e4b4e7d xfrm_unregister_type_offload +EXPORT_SYMBOL vmlinux 0x3e5d467f netif_skb_features +EXPORT_SYMBOL vmlinux 0x3e6caace scsi_host_get +EXPORT_SYMBOL vmlinux 0x3e6d0e68 sock_i_ino +EXPORT_SYMBOL vmlinux 0x3e732c9f reset_guest_reference_bit +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92c77b netif_device_attach +EXPORT_SYMBOL vmlinux 0x3eaa49a9 ccw_device_set_online +EXPORT_SYMBOL vmlinux 0x3eafe773 dma_virt_ops +EXPORT_SYMBOL vmlinux 0x3eb94250 itcw_add_dcw +EXPORT_SYMBOL vmlinux 0x3eb97d31 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x3edc9065 devm_free_irq +EXPORT_SYMBOL vmlinux 0x3ef8b53a cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x3f0985a8 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x3f17a5fa dev_addr_add +EXPORT_SYMBOL vmlinux 0x3f205ea6 sock_from_file +EXPORT_SYMBOL vmlinux 0x3f2550b4 pci_get_device +EXPORT_SYMBOL vmlinux 0x3f278f71 dst_init +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f57d247 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x3f75e0a7 inode_insert5 +EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access +EXPORT_SYMBOL vmlinux 0x3fa913da strspn +EXPORT_SYMBOL vmlinux 0x3fadb213 ZSTD_getFrameParams +EXPORT_SYMBOL vmlinux 0x3fb0b9e3 __udelay +EXPORT_SYMBOL vmlinux 0x3fd78f3b register_chrdev_region +EXPORT_SYMBOL vmlinux 0x3ffbf96a netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x4000ce1e key_move +EXPORT_SYMBOL vmlinux 0x4022abee tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x4024c1c3 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x402a960a jiffies_64 +EXPORT_SYMBOL vmlinux 0x402e9e75 pci_irq_vector +EXPORT_SYMBOL vmlinux 0x404452ca inode_set_bytes +EXPORT_SYMBOL vmlinux 0x407cb7eb bmap +EXPORT_SYMBOL vmlinux 0x408b91b6 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409b18d8 sock_alloc +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40ed0c1c d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x40fd0123 bio_chain +EXPORT_SYMBOL vmlinux 0x4126a4cd __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4149b396 s390_isolate_bp_guest +EXPORT_SYMBOL vmlinux 0x415c1b36 seq_escape +EXPORT_SYMBOL vmlinux 0x41804cf1 ns_capable_noaudit +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4198ca95 __do_once_done +EXPORT_SYMBOL vmlinux 0x41ce0ae4 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x41da33dc __d_lookup_done +EXPORT_SYMBOL vmlinux 0x41e460b7 migrate_page_copy +EXPORT_SYMBOL vmlinux 0x41f9493a simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x42083d7b pci_scan_bus +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x4247405f dev_printk_hash +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x4249dabf locks_delete_block +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4272e1b7 setattr_copy +EXPORT_SYMBOL vmlinux 0x42952006 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x429991e1 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x42a4ce24 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x42a9725f inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x42bd6456 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x42f76591 ccw_device_halt +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4389f8d3 __neigh_create +EXPORT_SYMBOL vmlinux 0x439e3615 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x43a08113 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x43a4938f vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x43ab16fb page_mapped +EXPORT_SYMBOL vmlinux 0x43bdfa20 console_irq +EXPORT_SYMBOL vmlinux 0x43c5027b sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x43cf3bc3 dql_completed +EXPORT_SYMBOL vmlinux 0x43d03039 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x43d07c46 set_cached_acl +EXPORT_SYMBOL vmlinux 0x43d4d6fd blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x43f18315 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x440a73a9 __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x440d11c0 blkdev_compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0x441b7618 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x442465ab pci_read_config_dword +EXPORT_SYMBOL vmlinux 0x4439fe9e remove_conflicting_pci_framebuffers +EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table +EXPORT_SYMBOL vmlinux 0x4448c631 vm_map_pages +EXPORT_SYMBOL vmlinux 0x4485113a pci_ep_cfs_remove_epf_group +EXPORT_SYMBOL vmlinux 0x4485834e softnet_data +EXPORT_SYMBOL vmlinux 0x4495be77 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x449acbfa jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x44a03cca input_set_max_poll_interval +EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x44b30fb5 csch +EXPORT_SYMBOL vmlinux 0x44c9bf66 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x44cba013 _copy_from_iter_full +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f930bd dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x44f97b96 netdev_txq_to_tc +EXPORT_SYMBOL vmlinux 0x45006cee default_red +EXPORT_SYMBOL vmlinux 0x450bd19a ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x452d7d58 address_space_init_once +EXPORT_SYMBOL vmlinux 0x4534fd9c tcp_filter +EXPORT_SYMBOL vmlinux 0x453c8087 input_close_device +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x455716c2 param_get_uint +EXPORT_SYMBOL vmlinux 0x455ebb6b md_unregister_thread +EXPORT_SYMBOL vmlinux 0x45771bcf migrate_page +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457fed05 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0x458392e3 scsi_vpd_tpg_id +EXPORT_SYMBOL vmlinux 0x4592a302 page_pool_update_nid +EXPORT_SYMBOL vmlinux 0x45956d1f pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x45a14d6d remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x45c92313 VMALLOC_END +EXPORT_SYMBOL vmlinux 0x45d32db1 md_bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x45d39ffb page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x45d3c773 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x46045dd7 kstrtou8 +EXPORT_SYMBOL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL vmlinux 0x4618d801 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x461b2552 fscrypt_has_permitted_context +EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents +EXPORT_SYMBOL vmlinux 0x461dfcf2 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x46263563 xfrm_input +EXPORT_SYMBOL vmlinux 0x4632258d add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x463ba69d inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x463d0710 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x463d9a81 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x4648dfc3 free_cgroup_ns +EXPORT_SYMBOL vmlinux 0x4657b795 completion_done +EXPORT_SYMBOL vmlinux 0x46605a6b neigh_ifdown +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467ef17d input_grab_device +EXPORT_SYMBOL vmlinux 0x4690c6f1 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x46aaafba scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x46b17d5e netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x46ba04d9 try_lookup_one_len +EXPORT_SYMBOL vmlinux 0x46cd8fce iucv_message_send +EXPORT_SYMBOL vmlinux 0x46d59f7d smp_cpu_mt_shift +EXPORT_SYMBOL vmlinux 0x46de8157 kernel_bind +EXPORT_SYMBOL vmlinux 0x46e319aa tcw_set_data +EXPORT_SYMBOL vmlinux 0x46ec81d6 register_fib_notifier +EXPORT_SYMBOL vmlinux 0x470b7cfa mount_subtree +EXPORT_SYMBOL vmlinux 0x4717b40e vfs_get_link +EXPORT_SYMBOL vmlinux 0x471b74a1 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x471face6 mr_mfc_find_any_parent +EXPORT_SYMBOL vmlinux 0x47297054 unregister_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x472e65d6 gro_cells_init +EXPORT_SYMBOL vmlinux 0x473736f7 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x4737c650 unregister_console +EXPORT_SYMBOL vmlinux 0x47392e76 sclp_ocf_cpc_name_copy +EXPORT_SYMBOL vmlinux 0x47589de4 iterate_dir +EXPORT_SYMBOL vmlinux 0x476031fe __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x47669047 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x4771cea9 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x477e323f hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x478f3665 vfs_getattr +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47b3ca03 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x47c0e7e9 sync_filesystem +EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0x47cb6209 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x47e10360 netdev_update_features +EXPORT_SYMBOL vmlinux 0x47ff7303 file_remove_privs +EXPORT_SYMBOL vmlinux 0x481aa15d dquot_destroy +EXPORT_SYMBOL vmlinux 0x4823819e raw3270_buffer_address +EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work +EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 +EXPORT_SYMBOL vmlinux 0x4854a167 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x486ae7a0 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x4895357b truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x489a6449 __tracepoint_s390_cio_tpi +EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim +EXPORT_SYMBOL vmlinux 0x48a2caa8 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x48a91171 string_get_size +EXPORT_SYMBOL vmlinux 0x48ada7be set_fs +EXPORT_SYMBOL vmlinux 0x48bb6e0c copy_string_kernel +EXPORT_SYMBOL vmlinux 0x48c42d2b __nla_put +EXPORT_SYMBOL vmlinux 0x48d82ab8 init_special_inode +EXPORT_SYMBOL vmlinux 0x48fa8391 set_pgste_bits +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490fbc30 get_super +EXPORT_SYMBOL vmlinux 0x49181825 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x4923dc87 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x4924de97 kthread_blkcg +EXPORT_SYMBOL vmlinux 0x4925e451 mr_mfc_seq_next +EXPORT_SYMBOL vmlinux 0x492fb031 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x4936fd83 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x493c2b4c netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x495990f3 hdmi_audio_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x49b0f445 kobject_add +EXPORT_SYMBOL vmlinux 0x49b32b8c neigh_destroy +EXPORT_SYMBOL vmlinux 0x49f90a87 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x4a2cdbc4 tcf_idr_cleanup +EXPORT_SYMBOL vmlinux 0x4a34623a pudp_xchg_direct +EXPORT_SYMBOL vmlinux 0x4a3976ec netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x4a3a0639 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x4a51b06e vm_map_ram +EXPORT_SYMBOL vmlinux 0x4a6d3526 iucv_if +EXPORT_SYMBOL vmlinux 0x4a6edcfb del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x4a7276a5 ccw_device_get_id +EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest +EXPORT_SYMBOL vmlinux 0x4a97b539 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x4aa94f0c fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x4ac4fbde scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x4ac6d877 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x4acc8f60 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x4b2933f0 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x4b3e545f __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x4b4aea8e create_empty_buffers +EXPORT_SYMBOL vmlinux 0x4b5f7602 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6ca816 nf_register_net_hook +EXPORT_SYMBOL vmlinux 0x4ba09c0c dquot_drop +EXPORT_SYMBOL vmlinux 0x4bb333ab md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4be24520 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x4bfee64f put_cmsg_scm_timestamping64 +EXPORT_SYMBOL vmlinux 0x4c3a5f73 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast +EXPORT_SYMBOL vmlinux 0x4c4c956e nla_memcmp +EXPORT_SYMBOL vmlinux 0x4c66f54e pci_restore_state +EXPORT_SYMBOL vmlinux 0x4c688ada logfc +EXPORT_SYMBOL vmlinux 0x4c693826 vfs_mkobj +EXPORT_SYMBOL vmlinux 0x4c7cc9e4 debug_raw_view +EXPORT_SYMBOL vmlinux 0x4c7d245c mod_node_page_state +EXPORT_SYMBOL vmlinux 0x4cbcfdc0 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x4cbfb08f xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x4cd31fa4 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x4cfa49a3 dquot_file_open +EXPORT_SYMBOL vmlinux 0x4d004c45 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x4d1579cb vfs_dedupe_file_range_one +EXPORT_SYMBOL vmlinux 0x4d2f17d4 param_get_charp +EXPORT_SYMBOL vmlinux 0x4d4f3ae6 flow_rule_match_eth_addrs +EXPORT_SYMBOL vmlinux 0x4d5d9e0c iov_iter_discard +EXPORT_SYMBOL vmlinux 0x4d65cbd5 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x4d96d03e udp_gro_complete +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dabf269 dst_dev_put +EXPORT_SYMBOL vmlinux 0x4dc354af dqput +EXPORT_SYMBOL vmlinux 0x4dda726b match_strlcpy +EXPORT_SYMBOL vmlinux 0x4ddcfd48 block_write_end +EXPORT_SYMBOL vmlinux 0x4de382bd jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x4dea1053 memchr +EXPORT_SYMBOL vmlinux 0x4df1e474 kernel_sendpage_locked +EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read +EXPORT_SYMBOL vmlinux 0x4dfe972c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x4e0a0ed4 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x4e12d400 flow_indr_block_cb_alloc +EXPORT_SYMBOL vmlinux 0x4e15cd41 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x4e166938 padata_alloc_shell +EXPORT_SYMBOL vmlinux 0x4e224675 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e386ad0 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x4e4924ea init_virt_timer +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9b851a gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x4ea823da kobject_put +EXPORT_SYMBOL vmlinux 0x4eada8f7 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x4eb61247 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x4ebbbc53 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4ec5f965 pci_set_vpd_size +EXPORT_SYMBOL vmlinux 0x4ed7b3b5 hex2bin +EXPORT_SYMBOL vmlinux 0x4ee6b680 __tracepoint_s390_cio_rsch +EXPORT_SYMBOL vmlinux 0x4eec9dab arch_spin_lock_wait +EXPORT_SYMBOL vmlinux 0x4eef9c5a flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x4ef8809a sock_no_sendpage_locked +EXPORT_SYMBOL vmlinux 0x4ef96045 nla_put +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2cd1b5 __cpcmd +EXPORT_SYMBOL vmlinux 0x4f46a0ce inode_set_flags +EXPORT_SYMBOL vmlinux 0x4f5aa9f9 nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x4f61a4c8 dev_change_flags +EXPORT_SYMBOL vmlinux 0x4f820320 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x4f962262 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x4f9cd74b current_time +EXPORT_SYMBOL vmlinux 0x4faec757 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x4fc07b22 ip_tunnel_parse_protocol +EXPORT_SYMBOL vmlinux 0x4fe29905 dma_fence_remove_callback +EXPORT_SYMBOL vmlinux 0x4fe3ef9f security_binder_set_context_mgr +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5009c71d glob_match +EXPORT_SYMBOL vmlinux 0x502f4500 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x50302215 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x5030f56b tcp_init_sock +EXPORT_SYMBOL vmlinux 0x5035cbcf xa_get_mark +EXPORT_SYMBOL vmlinux 0x50360d8b ccw_device_start +EXPORT_SYMBOL vmlinux 0x50456fa9 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x50464d75 irq_domain_set_info +EXPORT_SYMBOL vmlinux 0x504f854d tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x5061ecaf airq_iv_free +EXPORT_SYMBOL vmlinux 0x50624917 sha1_init +EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free +EXPORT_SYMBOL vmlinux 0x507b25d0 kstrndup +EXPORT_SYMBOL vmlinux 0x507d6239 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x50803031 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x50993cde secpath_set +EXPORT_SYMBOL vmlinux 0x509a09bd sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x50a53fe7 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x50b29185 bio_uninit +EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security +EXPORT_SYMBOL vmlinux 0x50c13ec5 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x50d348be __seq_open_private +EXPORT_SYMBOL vmlinux 0x50dfee2c xsk_set_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x50e0a893 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x51152fa3 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x5143ce65 radix_tree_iter_resume +EXPORT_SYMBOL vmlinux 0x51473316 __cpu_present_mask +EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend +EXPORT_SYMBOL vmlinux 0x518bb9e6 diag204 +EXPORT_SYMBOL vmlinux 0x5191a256 seq_puts +EXPORT_SYMBOL vmlinux 0x51a79301 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x51cb42d4 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x51cc5ebf watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x51d5ceff inet_protos +EXPORT_SYMBOL vmlinux 0x51f3f855 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x522c733e wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x522fb673 prepare_to_swait_event +EXPORT_SYMBOL vmlinux 0x522fba1d raw3270_reset +EXPORT_SYMBOL vmlinux 0x52355e07 tcf_classify_ingress +EXPORT_SYMBOL vmlinux 0x523821b8 __skb_recv_udp +EXPORT_SYMBOL vmlinux 0x524c5f02 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x52642487 eth_platform_get_mac_address +EXPORT_SYMBOL vmlinux 0x5279df79 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x52819990 kernel_cpumcf_alert +EXPORT_SYMBOL vmlinux 0x52881c28 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x52889430 has_capability +EXPORT_SYMBOL vmlinux 0x52942c22 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x529bd183 fput +EXPORT_SYMBOL vmlinux 0x529ea893 xfrm_parse_spi +EXPORT_SYMBOL vmlinux 0x52a17010 flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x52c369f7 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init +EXPORT_SYMBOL vmlinux 0x52e069dc fscrypt_free_inode +EXPORT_SYMBOL vmlinux 0x52e90509 xfrm_state_free +EXPORT_SYMBOL vmlinux 0x52ed3b86 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x52fbcefd __ClearPageMovable +EXPORT_SYMBOL vmlinux 0x530176b5 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0x532f329e invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x5333a890 kmem_cache_create_usercopy +EXPORT_SYMBOL vmlinux 0x533ab788 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x53446a57 inet_ioctl +EXPORT_SYMBOL vmlinux 0x535d4814 vfs_iocb_iter_read +EXPORT_SYMBOL vmlinux 0x536c2be6 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x53753e1b filemap_map_pages +EXPORT_SYMBOL vmlinux 0x5394f609 ip6_fraglist_init +EXPORT_SYMBOL vmlinux 0x53ab69b0 __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0x53b3ad53 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x53d07a9e ccw_device_get_path_mask +EXPORT_SYMBOL vmlinux 0x53d6561a set_groups +EXPORT_SYMBOL vmlinux 0x53de7be6 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x53e7e9e1 vc_cons +EXPORT_SYMBOL vmlinux 0x540862e2 diag14 +EXPORT_SYMBOL vmlinux 0x540caa61 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x5410fc2b mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5424b33b padata_start +EXPORT_SYMBOL vmlinux 0x542c8896 __page_symlink +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5445feab __irq_regs +EXPORT_SYMBOL vmlinux 0x5458f09c jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x547a05df __nla_put_64bit +EXPORT_SYMBOL vmlinux 0x5486d714 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x5494357d nf_log_set +EXPORT_SYMBOL vmlinux 0x549a29c4 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x54a5e010 blk_set_queue_depth +EXPORT_SYMBOL vmlinux 0x54a7e250 generic_file_open +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54ac7f36 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x54afbb6d blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x54cdc43a km_state_notify +EXPORT_SYMBOL vmlinux 0x54dfb6b7 padata_free +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e89f07 xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55300a42 simple_setattr +EXPORT_SYMBOL vmlinux 0x553fbf21 neigh_lookup +EXPORT_SYMBOL vmlinux 0x55417cd6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x554a384a __siphash_aligned +EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched +EXPORT_SYMBOL vmlinux 0x554b0990 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x554cdb8b vfs_get_fsid +EXPORT_SYMBOL vmlinux 0x55792179 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x557f6d48 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x55a3f3e0 sclp_add_request +EXPORT_SYMBOL vmlinux 0x55bb40f4 tcp_sock_set_cork +EXPORT_SYMBOL vmlinux 0x55c850af lock_page_memcg +EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 +EXPORT_SYMBOL vmlinux 0x55eccdf5 mod_virt_timer +EXPORT_SYMBOL vmlinux 0x55fbaf1d smsg_unregister_callback +EXPORT_SYMBOL vmlinux 0x561a6cf5 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x561cbce2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x562b9be5 ap_test_config_ctrl_domain +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563d9505 ip6_fraglist_prepare +EXPORT_SYMBOL vmlinux 0x564405cb __cpu_online_mask +EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk +EXPORT_SYMBOL vmlinux 0x56684ecf inet_bind +EXPORT_SYMBOL vmlinux 0x567ccd1e inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0x568d010a xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x569b9fff mdiobus_setup_mdiodev_from_board_info +EXPORT_SYMBOL vmlinux 0x56a44190 ip_frag_init +EXPORT_SYMBOL vmlinux 0x56adf654 simple_recursive_removal +EXPORT_SYMBOL vmlinux 0x56c32444 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x56c3f8c1 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56ca2996 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x56ca422a raw3270_start +EXPORT_SYMBOL vmlinux 0x56d37419 tcf_classify +EXPORT_SYMBOL vmlinux 0x56d47bc0 ptep_xchg_lazy +EXPORT_SYMBOL vmlinux 0x56d78870 chsc +EXPORT_SYMBOL vmlinux 0x56f7e976 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x56f8c371 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x56fc2b09 xfrm_trans_queue_net +EXPORT_SYMBOL vmlinux 0x570d345e gen_pool_has_addr +EXPORT_SYMBOL vmlinux 0x57327b3b generic_pipe_buf_try_steal +EXPORT_SYMBOL vmlinux 0x5749374b vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5777690a proc_create_single_data +EXPORT_SYMBOL vmlinux 0x578a1876 tun_xdp_to_ptr +EXPORT_SYMBOL vmlinux 0x57bba5a5 device_add_disk +EXPORT_SYMBOL vmlinux 0x57f16392 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x57ff05d4 skb_find_text +EXPORT_SYMBOL vmlinux 0x58174d4e eth_header +EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x581a9dc6 d_alloc_name +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582b1306 inc_node_page_state +EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb +EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info +EXPORT_SYMBOL vmlinux 0x58aff5a5 I_BDEV +EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58cd1b54 string_escape_mem +EXPORT_SYMBOL vmlinux 0x58d22e92 dev_open +EXPORT_SYMBOL vmlinux 0x58db91b0 input_register_handler +EXPORT_SYMBOL vmlinux 0x58dd8a01 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io +EXPORT_SYMBOL vmlinux 0x5907b9b5 nla_append +EXPORT_SYMBOL vmlinux 0x5907bb8a cdrom_dummy_generic_packet +EXPORT_SYMBOL vmlinux 0x594db168 get_ipc_ns_exported +EXPORT_SYMBOL vmlinux 0x59588850 vsscanf +EXPORT_SYMBOL vmlinux 0x596c41d7 inet_frag_find +EXPORT_SYMBOL vmlinux 0x598022a9 param_get_long +EXPORT_SYMBOL vmlinux 0x59860f60 dm_register_target +EXPORT_SYMBOL vmlinux 0x59972489 mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0x59a9d8ca param_ops_string +EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x59b75df7 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x59d38788 ccw_device_start_timeout +EXPORT_SYMBOL vmlinux 0x59e8f97d blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x5a0a3ac2 param_ops_short +EXPORT_SYMBOL vmlinux 0x5a0ad3ad dump_skip +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a0e411f skb_copy_and_hash_datagram_iter +EXPORT_SYMBOL vmlinux 0x5a10f98e del_virt_timer +EXPORT_SYMBOL vmlinux 0x5a232540 gnet_stats_copy_basic_hw +EXPORT_SYMBOL vmlinux 0x5a2fb601 flow_block_cb_priv +EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle +EXPORT_SYMBOL vmlinux 0x5a5861ed __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x5a5e7ea3 simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x5a6502c2 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x5a7f5e67 pci_request_regions +EXPORT_SYMBOL vmlinux 0x5aaa21e6 bio_endio +EXPORT_SYMBOL vmlinux 0x5acbb49a register_gifconf +EXPORT_SYMBOL vmlinux 0x5accc2b5 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5acfc965 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x5ad033ba kmem_cache_size +EXPORT_SYMBOL vmlinux 0x5adac370 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x5af413ee register_console +EXPORT_SYMBOL vmlinux 0x5afc7748 flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0x5b009f09 mr_mfc_seq_idx +EXPORT_SYMBOL vmlinux 0x5b2a9743 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x5b2b28ab tcw_add_tidaw +EXPORT_SYMBOL vmlinux 0x5b36c63e filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax +EXPORT_SYMBOL vmlinux 0x5b4ab812 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x5b604bd1 segment_type +EXPORT_SYMBOL vmlinux 0x5b675945 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create +EXPORT_SYMBOL vmlinux 0x5bd5d591 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub +EXPORT_SYMBOL vmlinux 0x5c0414ef register_netdevice +EXPORT_SYMBOL vmlinux 0x5c0655ee set_anon_super_fc +EXPORT_SYMBOL vmlinux 0x5c0c3a4d __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x5c2d456c utf8_strncmp +EXPORT_SYMBOL vmlinux 0x5c3345ff vfs_ioc_fssetxattr_check +EXPORT_SYMBOL vmlinux 0x5c3b283b netdev_emerg +EXPORT_SYMBOL vmlinux 0x5c3f6c6f param_set_short +EXPORT_SYMBOL vmlinux 0x5c4265f6 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x5c51fe8d lease_modify +EXPORT_SYMBOL vmlinux 0x5c57163a kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x5c8534f7 pgste_perform_essa +EXPORT_SYMBOL vmlinux 0x5c923848 s390_epoch_delta_notifier +EXPORT_SYMBOL vmlinux 0x5c941631 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x5c957d5b clear_nlink +EXPORT_SYMBOL vmlinux 0x5c98d830 register_quota_format +EXPORT_SYMBOL vmlinux 0x5cb0fd2a dcb_getapp +EXPORT_SYMBOL vmlinux 0x5cb8d752 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cdaea31 posix_lock_file +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfc1e9a inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry +EXPORT_SYMBOL vmlinux 0x5d4eacbe fs_param_is_bool +EXPORT_SYMBOL vmlinux 0x5d614bdf ccw_device_is_multipath +EXPORT_SYMBOL vmlinux 0x5d65f6dd netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x5d739bcf bd_set_size +EXPORT_SYMBOL vmlinux 0x5d78a8f6 vm_node_stat +EXPORT_SYMBOL vmlinux 0x5d7dee6b strscpy_pad +EXPORT_SYMBOL vmlinux 0x5d830297 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x5db89344 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x5dc35964 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x5dcebdb1 pci_read_config_byte +EXPORT_SYMBOL vmlinux 0x5dd3cedf gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x5de51316 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x5df756d7 __crypto_memneq +EXPORT_SYMBOL vmlinux 0x5dfcb9c1 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform +EXPORT_SYMBOL vmlinux 0x5e20d0e0 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0x5e21cb82 ap_send +EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe +EXPORT_SYMBOL vmlinux 0x5e420e29 eth_header_parse +EXPORT_SYMBOL vmlinux 0x5e5b76f8 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x5e61f774 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x5e6bddc6 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x5e86171d raw3270_unregister_notifier +EXPORT_SYMBOL vmlinux 0x5e88feb2 filemap_fdatawait_range_keep_errors +EXPORT_SYMBOL vmlinux 0x5e8995f7 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9fdfd4 class3270 +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebd7a79 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x5ec37631 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr +EXPORT_SYMBOL vmlinux 0x5ecd1530 idr_destroy +EXPORT_SYMBOL vmlinux 0x5ecfeec6 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5ed9d20c eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0x5efe7928 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0ea28d nvm_dev_dma_free +EXPORT_SYMBOL vmlinux 0x5f1498f1 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x5f24c2ee inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5f29d575 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x5f4e6d56 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5f5ff1b4 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5f65b7c4 block_read_full_page +EXPORT_SYMBOL vmlinux 0x5f71be93 sock_no_sendmsg_locked +EXPORT_SYMBOL vmlinux 0x5f78002c fs_param_is_enum +EXPORT_SYMBOL vmlinux 0x5f7e6975 refcount_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5f916578 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x5f98bdb6 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0x5fa70a88 km_report +EXPORT_SYMBOL vmlinux 0x5fb1c8d7 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x5fb3536a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x5fb85802 security_sock_graft +EXPORT_SYMBOL vmlinux 0x5fca6205 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x5fd2298e strnstr +EXPORT_SYMBOL vmlinux 0x5fda0adb ZSTD_DDictWorkspaceBound +EXPORT_SYMBOL vmlinux 0x5ff231ed scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6018c9ea __nla_reserve +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60351b98 __nla_validate +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x607ee40e generic_iommu_put_resv_regions +EXPORT_SYMBOL vmlinux 0x6089d0be ipv6_dev_mc_inc +EXPORT_SYMBOL vmlinux 0x608d249b proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x6091b333 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60ad4db5 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x60b5c8dd register_external_irq +EXPORT_SYMBOL vmlinux 0x60d95f12 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x60ef30e8 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x60fca4ba _dev_notice +EXPORT_SYMBOL vmlinux 0x6101ed65 nmi_panic +EXPORT_SYMBOL vmlinux 0x6106148e flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0x61287323 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61333027 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x6147ab89 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set +EXPORT_SYMBOL vmlinux 0x61621dd7 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x616864dc netif_napi_del +EXPORT_SYMBOL vmlinux 0x616e24f0 dma_direct_unmap_sg +EXPORT_SYMBOL vmlinux 0x6172e44b pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x619061a7 netif_device_detach +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final +EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62350c80 d_obtain_root +EXPORT_SYMBOL vmlinux 0x624c45c1 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x626e5a90 __cgroup_bpf_run_filter_skb +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a60c52 param_set_uint +EXPORT_SYMBOL vmlinux 0x62a99b36 tcp_set_rcvlowat +EXPORT_SYMBOL vmlinux 0x62ad90cd jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin +EXPORT_SYMBOL vmlinux 0x62e0e9db netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0x630a6219 input_open_device +EXPORT_SYMBOL vmlinux 0x6312c31d ip_ct_attach +EXPORT_SYMBOL vmlinux 0x63180592 tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631af468 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x63210000 fscrypt_put_encryption_info +EXPORT_SYMBOL vmlinux 0x63416b63 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x634bf7e4 percpu_counter_add_batch +EXPORT_SYMBOL vmlinux 0x6356f3b1 set_security_override +EXPORT_SYMBOL vmlinux 0x6371e098 cio_irb +EXPORT_SYMBOL vmlinux 0x63851553 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b99347 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63cbc93b file_open_root +EXPORT_SYMBOL vmlinux 0x63d6dbd9 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x63e6533b xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63eda67c dqget +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64174999 ccw_device_tm_start_key +EXPORT_SYMBOL vmlinux 0x64180c08 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x643d9ba1 groups_free +EXPORT_SYMBOL vmlinux 0x6464c669 pci_write_config_dword +EXPORT_SYMBOL vmlinux 0x646e20df cpumask_any_and_distribute +EXPORT_SYMBOL vmlinux 0x647b4e51 netdev_has_any_upper_dev +EXPORT_SYMBOL vmlinux 0x647d9eab misc_register +EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 +EXPORT_SYMBOL vmlinux 0x648ab269 inet_sendpage +EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu +EXPORT_SYMBOL vmlinux 0x64ac9599 tcf_register_action +EXPORT_SYMBOL vmlinux 0x64b639a3 __tracepoint_s390_cio_hsch +EXPORT_SYMBOL vmlinux 0x64cf5780 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x64d57e69 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x64d63a8e netif_rx +EXPORT_SYMBOL vmlinux 0x64d779ee flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0x64fac9ab md_bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x6506828c simple_lookup +EXPORT_SYMBOL vmlinux 0x65068bc5 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651881c8 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652032cb mac_pton +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6570ef93 dev_deactivate +EXPORT_SYMBOL vmlinux 0x657a0b6b nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x657aa5e7 bdi_alloc +EXPORT_SYMBOL vmlinux 0x65851ff3 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset +EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc +EXPORT_SYMBOL vmlinux 0x65badec6 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x65c2f50b debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x65d15595 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x65d92134 file_update_time +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e585ba napi_get_frags +EXPORT_SYMBOL vmlinux 0x65ec2698 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x65f3654d pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x660c46cb get_watch_queue +EXPORT_SYMBOL vmlinux 0x660c9571 md_write_inc +EXPORT_SYMBOL vmlinux 0x660f83b8 single_open +EXPORT_SYMBOL vmlinux 0x66348f07 bh_submit_read +EXPORT_SYMBOL vmlinux 0x6646262c cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt +EXPORT_SYMBOL vmlinux 0x666d2bb3 udp_poll +EXPORT_SYMBOL vmlinux 0x66713a00 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset +EXPORT_SYMBOL vmlinux 0x6677b236 xp_free +EXPORT_SYMBOL vmlinux 0x6677ebba vfs_mknod +EXPORT_SYMBOL vmlinux 0x66b56d5c tty_kref_put +EXPORT_SYMBOL vmlinux 0x66b98575 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x66d29e23 nla_put_64bit +EXPORT_SYMBOL vmlinux 0x66d2ebec nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0x66e69897 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x670b341f pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x672144bd strlcpy +EXPORT_SYMBOL vmlinux 0x6721e5a4 down_killable +EXPORT_SYMBOL vmlinux 0x672660a6 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x672d75ad __blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x672e2cec cdev_init +EXPORT_SYMBOL vmlinux 0x67372ba4 cdev_set_parent +EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x67641d50 dma_cache_sync +EXPORT_SYMBOL vmlinux 0x6764da8a raw3270_request_set_data +EXPORT_SYMBOL vmlinux 0x6773bcd4 vfs_copy_file_range +EXPORT_SYMBOL vmlinux 0x677c397f md_write_start +EXPORT_SYMBOL vmlinux 0x677e6d06 console_start +EXPORT_SYMBOL vmlinux 0x6781496b flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0x6785687a __next_node_in +EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x678c62eb cpu_all_bits +EXPORT_SYMBOL vmlinux 0x679b6324 vfs_fadvise +EXPORT_SYMBOL vmlinux 0x67aa55a9 security_sk_clone +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d1101b nvm_unregister +EXPORT_SYMBOL vmlinux 0x67dbc240 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x67e3f1eb genlmsg_put +EXPORT_SYMBOL vmlinux 0x67fcea98 import_iovec +EXPORT_SYMBOL vmlinux 0x68167c43 xfrm_lookup_with_ifid +EXPORT_SYMBOL vmlinux 0x68173d50 vfs_create_mount +EXPORT_SYMBOL vmlinux 0x681d4b31 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x684a18e5 wait_on_page_bit_killable +EXPORT_SYMBOL vmlinux 0x684ae04d param_set_byte +EXPORT_SYMBOL vmlinux 0x6854863e fb_class +EXPORT_SYMBOL vmlinux 0x685e31ca groups_sort +EXPORT_SYMBOL vmlinux 0x687173de ZSTD_findDecompressedSize +EXPORT_SYMBOL vmlinux 0x6893b4d6 ida_alloc_range +EXPORT_SYMBOL vmlinux 0x68963aea netlink_net_capable +EXPORT_SYMBOL vmlinux 0x68a90b51 get_default_font +EXPORT_SYMBOL vmlinux 0x68b97bc1 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x68f17ae7 set_nlink +EXPORT_SYMBOL vmlinux 0x68fe9e66 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x6906c5ec remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x69097457 crc32_be +EXPORT_SYMBOL vmlinux 0x690bc29b qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x6936ea22 key_revoke +EXPORT_SYMBOL vmlinux 0x69493b1a kstrtos16 +EXPORT_SYMBOL vmlinux 0x694dc390 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x69514b85 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x695702c8 fs_bio_set +EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x6976daec down_write +EXPORT_SYMBOL vmlinux 0x69a35121 stop_tty +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c05dc4 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x69c834d4 ipv4_specific +EXPORT_SYMBOL vmlinux 0x69cf77c8 ZSTD_getDictID_fromDict +EXPORT_SYMBOL vmlinux 0x69d85c34 gen_pool_create +EXPORT_SYMBOL vmlinux 0x69f69f26 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a37d074 vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0x6a3b5c2a devm_iounmap +EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a730cb4 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x6a925401 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order +EXPORT_SYMBOL vmlinux 0x6aa23803 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x6ab487c4 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x6abf91d3 sock_efree +EXPORT_SYMBOL vmlinux 0x6ac05443 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x6ac08241 hash_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x6ac435c5 generic_parse_monolithic +EXPORT_SYMBOL vmlinux 0x6ad07c10 udp_seq_next +EXPORT_SYMBOL vmlinux 0x6aed99f6 udp_disconnect +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b19cd03 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b308e8a mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x6b329b55 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x6b3efc81 PDE_DATA +EXPORT_SYMBOL vmlinux 0x6b463ab1 dquot_get_state +EXPORT_SYMBOL vmlinux 0x6b4c7446 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable +EXPORT_SYMBOL vmlinux 0x6b6654b1 d_tmpfile +EXPORT_SYMBOL vmlinux 0x6b731c23 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x6b7b9f0c napi_gro_frags +EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval +EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list +EXPORT_SYMBOL vmlinux 0x6ba8dc55 input_enable_softrepeat +EXPORT_SYMBOL vmlinux 0x6bac671b __crc32c_le +EXPORT_SYMBOL vmlinux 0x6baca297 __tracepoint_s390_cio_chsc +EXPORT_SYMBOL vmlinux 0x6bbf3f7c input_register_device +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bfe1653 iucv_message_receive +EXPORT_SYMBOL vmlinux 0x6c04565e vfs_rmdir +EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x6c2acdd5 kobject_get_unless_zero +EXPORT_SYMBOL vmlinux 0x6c2ede31 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6c3bb5f6 kthread_create_worker +EXPORT_SYMBOL vmlinux 0x6c595a73 __register_nls +EXPORT_SYMBOL vmlinux 0x6c5b33c2 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x6c60994e remove_wait_queue +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c902607 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x6c9119e4 rtnl_notify +EXPORT_SYMBOL vmlinux 0x6c9b9c96 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk +EXPORT_SYMBOL vmlinux 0x6cb82290 napi_disable +EXPORT_SYMBOL vmlinux 0x6cc710ff gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x6ccb48c1 sync_inode +EXPORT_SYMBOL vmlinux 0x6ccc34dd sort +EXPORT_SYMBOL vmlinux 0x6cd4087f dquot_load_quota_sb +EXPORT_SYMBOL vmlinux 0x6cd40e12 netpoll_setup +EXPORT_SYMBOL vmlinux 0x6cd4500c follow_down +EXPORT_SYMBOL vmlinux 0x6cf62166 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x6d0a27cc pid_task +EXPORT_SYMBOL vmlinux 0x6d108924 dquot_release +EXPORT_SYMBOL vmlinux 0x6d1bde8a pci_write_vpd +EXPORT_SYMBOL vmlinux 0x6d1ea6ec strlcat +EXPORT_SYMBOL vmlinux 0x6d1fcf1e inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2aad75 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x6d2eef2b posix_test_lock +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d3b672d bio_devname +EXPORT_SYMBOL vmlinux 0x6d3ba023 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x6d3be6f1 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x6d55c3ad pci_free_irq +EXPORT_SYMBOL vmlinux 0x6d68f651 d_alloc_anon +EXPORT_SYMBOL vmlinux 0x6d768b7a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x6d79c5bc d_instantiate +EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut +EXPORT_SYMBOL vmlinux 0x6d935ee1 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x6d939ba4 md_bitmap_unplug +EXPORT_SYMBOL vmlinux 0x6dab0254 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x6daea280 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x6db9eee8 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x6dc04689 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null +EXPORT_SYMBOL vmlinux 0x6dec6ff5 _dev_emerg +EXPORT_SYMBOL vmlinux 0x6df0f400 wake_up_process +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e00b8cb _ebcasc +EXPORT_SYMBOL vmlinux 0x6e019034 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x6e1ce32d blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x6e1f4424 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x6e48048a netdev_set_sb_channel +EXPORT_SYMBOL vmlinux 0x6e4f851a iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x6e5cbc5a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e86b753 flow_rule_match_ip +EXPORT_SYMBOL vmlinux 0x6e89de5e mpage_readahead +EXPORT_SYMBOL vmlinux 0x6e9ad290 cpu_have_feature +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6ec0fa3e call_fib_notifier +EXPORT_SYMBOL vmlinux 0x6ec11ae1 configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x6ecb030a key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x6ed8a5fc hdmi_drm_infoframe_check +EXPORT_SYMBOL vmlinux 0x6eece112 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x6ef84303 kvmalloc_node +EXPORT_SYMBOL vmlinux 0x6f05bff1 skb_flow_dissect_tunnel_info +EXPORT_SYMBOL vmlinux 0x6f0c0bb8 netdev_err +EXPORT_SYMBOL vmlinux 0x6f19abb6 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x6f1dc1c0 md_reload_sb +EXPORT_SYMBOL vmlinux 0x6f1ee1a7 fscrypt_decrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x6f336f4b pci_set_mwi +EXPORT_SYMBOL vmlinux 0x6f365e44 ZSTD_decompressContinue +EXPORT_SYMBOL vmlinux 0x6f5ef93d memchr_inv +EXPORT_SYMBOL vmlinux 0x6f689943 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x6f6a5961 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x6f8420a3 ZSTD_findFrameCompressedSize +EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func +EXPORT_SYMBOL vmlinux 0x6f9daef4 inet_getname +EXPORT_SYMBOL vmlinux 0x6f9deaa8 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0x6fa5bb93 flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fbad262 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x6fc2745c radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 +EXPORT_SYMBOL vmlinux 0x6fe9c5f6 key_validate +EXPORT_SYMBOL vmlinux 0x6fecb682 debug_register +EXPORT_SYMBOL vmlinux 0x6ff51d1e generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 +EXPORT_SYMBOL vmlinux 0x702cc045 inode_nohighmem +EXPORT_SYMBOL vmlinux 0x702ef51a dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x702f4acf udp_table +EXPORT_SYMBOL vmlinux 0x703de11b d_lookup +EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x708cadf7 kernel_connect +EXPORT_SYMBOL vmlinux 0x708ee855 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x709de958 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x70d5ed93 ida_destroy +EXPORT_SYMBOL vmlinux 0x70f8bc89 elv_bio_merge_ok +EXPORT_SYMBOL vmlinux 0x70f9c767 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x711fba6a vmap +EXPORT_SYMBOL vmlinux 0x7120f9bd LZ4_setStreamDecode +EXPORT_SYMBOL vmlinux 0x712135d6 proc_dostring +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713d8b47 sk_stream_error +EXPORT_SYMBOL vmlinux 0x71426f0d dst_release_immediate +EXPORT_SYMBOL vmlinux 0x7145aef0 segment_load +EXPORT_SYMBOL vmlinux 0x71466059 dma_get_sgtable_attrs +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717da3b9 free_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0x71811533 pci_clear_master +EXPORT_SYMBOL vmlinux 0x718bf5fc tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71df609c mempool_destroy +EXPORT_SYMBOL vmlinux 0x71e63df7 tcp_child_process +EXPORT_SYMBOL vmlinux 0x71eee064 nf_log_register +EXPORT_SYMBOL vmlinux 0x71f4649d tcp_poll +EXPORT_SYMBOL vmlinux 0x71fb1c8d udp_seq_ops +EXPORT_SYMBOL vmlinux 0x72228441 pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x722ae5a9 default_llseek +EXPORT_SYMBOL vmlinux 0x724072e7 bioset_exit +EXPORT_SYMBOL vmlinux 0x7242e96d strnchr +EXPORT_SYMBOL vmlinux 0x72473689 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported +EXPORT_SYMBOL vmlinux 0x725b3af5 get_guest_storage_key +EXPORT_SYMBOL vmlinux 0x725f4bcc netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x72618303 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x72727e13 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x727a66cf simple_fill_super +EXPORT_SYMBOL vmlinux 0x729e4615 input_flush_device +EXPORT_SYMBOL vmlinux 0x72a21c63 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x72b42dfa tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn +EXPORT_SYMBOL vmlinux 0x72d29a16 __get_hash_from_flowi6 +EXPORT_SYMBOL vmlinux 0x72d2a635 sg_miter_start +EXPORT_SYMBOL vmlinux 0x72e15ad4 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x72e449ea __xa_set_mark +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f02478 idr_get_next_ul +EXPORT_SYMBOL vmlinux 0x72fac27b inet6_csk_route_req +EXPORT_SYMBOL vmlinux 0x730b096c ap_apqn_in_matrix_owned_by_def_drv +EXPORT_SYMBOL vmlinux 0x731610d0 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7323737a bdget +EXPORT_SYMBOL vmlinux 0x73249f47 unix_attach_fds +EXPORT_SYMBOL vmlinux 0x7363471a vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x7374b1c2 km_query +EXPORT_SYMBOL vmlinux 0x73773174 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x7380dffa argv_split +EXPORT_SYMBOL vmlinux 0x73869f30 __tracepoint_s390_cio_ssch +EXPORT_SYMBOL vmlinux 0x7389706a __memset16 +EXPORT_SYMBOL vmlinux 0x739bf68a seq_open_private +EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range +EXPORT_SYMBOL vmlinux 0x73bf20c6 _ascebc +EXPORT_SYMBOL vmlinux 0x73c10f85 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x73ce9079 kthread_destroy_worker +EXPORT_SYMBOL vmlinux 0x73ce95d8 reuseport_alloc +EXPORT_SYMBOL vmlinux 0x73d1db8a find_lock_entry +EXPORT_SYMBOL vmlinux 0x73d2070d tty_port_close_end +EXPORT_SYMBOL vmlinux 0x73d41be9 _dev_info_hash +EXPORT_SYMBOL vmlinux 0x73d82b80 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x73da1276 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x73dc7365 file_check_and_advance_wb_err +EXPORT_SYMBOL vmlinux 0x73e162b0 fwnode_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x73f05c12 request_key_rcu +EXPORT_SYMBOL vmlinux 0x73f17491 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7404d15f seq_file_path +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74119e19 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x741f70a9 debug_stop_all +EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x74477ec4 seq_open +EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx +EXPORT_SYMBOL vmlinux 0x746bea2e xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x7470b01a tsb_init +EXPORT_SYMBOL vmlinux 0x748d49a4 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c284c7 fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x74ca3239 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x74d5f91e pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x74d858a7 on_each_cpu_cond_mask +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7504903f blk_mq_delay_run_hw_queues +EXPORT_SYMBOL vmlinux 0x752492fd jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x75399955 __devm_request_region +EXPORT_SYMBOL vmlinux 0x755bcb30 padata_free_shell +EXPORT_SYMBOL vmlinux 0x756aabf2 __scsi_execute +EXPORT_SYMBOL vmlinux 0x756cd753 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x7583ced9 poll_initwait +EXPORT_SYMBOL vmlinux 0x75855d0c pci_bus_claim_resources +EXPORT_SYMBOL vmlinux 0x759a0416 __memset64 +EXPORT_SYMBOL vmlinux 0x759a9f2d refcount_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x75a4d65d put_cmsg_scm_timestamping +EXPORT_SYMBOL vmlinux 0x75ac0197 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x75b9cf29 hsch +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump +EXPORT_SYMBOL vmlinux 0x75deff25 __filemap_set_wb_err +EXPORT_SYMBOL vmlinux 0x75fb54fc xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x75fcdd6f panic_notifier_list +EXPORT_SYMBOL vmlinux 0x75fe607c input_get_poll_interval +EXPORT_SYMBOL vmlinux 0x7603a01c __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760a3eca ZSTD_decompressStream +EXPORT_SYMBOL vmlinux 0x761c0975 write_cache_pages +EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired +EXPORT_SYMBOL vmlinux 0x763c236f ip_options_compile +EXPORT_SYMBOL vmlinux 0x7644828b handle_edge_irq +EXPORT_SYMBOL vmlinux 0x76462b0f tcp_ioctl +EXPORT_SYMBOL vmlinux 0x7646bf6c tso_build_hdr +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x765c7cb3 sclp +EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x7671e001 xa_store_range +EXPORT_SYMBOL vmlinux 0x76758ddf __pagevec_release +EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76c28c42 input_set_capability +EXPORT_SYMBOL vmlinux 0x76c729b9 dquot_get_next_id +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76f04017 fqdir_init +EXPORT_SYMBOL vmlinux 0x77247c5e ap_bus_force_rescan +EXPORT_SYMBOL vmlinux 0x7726e3f9 reuseport_select_sock +EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource +EXPORT_SYMBOL vmlinux 0x7757550b __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0x77724e33 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x777ce460 sk_net_capable +EXPORT_SYMBOL vmlinux 0x77820677 kill_pgrp +EXPORT_SYMBOL vmlinux 0x7786a402 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x7788bc3a vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x7798a1a3 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b0d41e tcp_read_sock +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d019fb __mutex_init +EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt +EXPORT_SYMBOL vmlinux 0x77ebacc6 ipmr_rule_default +EXPORT_SYMBOL vmlinux 0x77fc9d40 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle +EXPORT_SYMBOL vmlinux 0x7817c595 raw3270_request_alloc +EXPORT_SYMBOL vmlinux 0x7819aea9 __kmalloc_node +EXPORT_SYMBOL vmlinux 0x782acba5 crc_t10dif +EXPORT_SYMBOL vmlinux 0x784d1a82 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x7872b9b9 tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788c3b7e dentry_path_raw +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789f8541 param_ops_bool +EXPORT_SYMBOL vmlinux 0x78a0e487 udplite_table +EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt +EXPORT_SYMBOL vmlinux 0x78a5bc37 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x78bf7405 register_service_level +EXPORT_SYMBOL vmlinux 0x78c5019a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x78c647c3 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x78deaa88 dma_fence_match_context +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78ed7423 mempool_create_node +EXPORT_SYMBOL vmlinux 0x7918ae6c nf_ct_attach +EXPORT_SYMBOL vmlinux 0x792d7f0f down +EXPORT_SYMBOL vmlinux 0x794c8ce4 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x795a2a26 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x796c10f0 cont_write_begin +EXPORT_SYMBOL vmlinux 0x798f4a0a register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x79904fa8 __sb_end_write +EXPORT_SYMBOL vmlinux 0x799fbac7 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c6842c tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x79cacc4d rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x79d575cd __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x79de8d15 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x79ed36b7 cdrom_release +EXPORT_SYMBOL vmlinux 0x79ff586c gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute +EXPORT_SYMBOL vmlinux 0x7a0c0fc9 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4fa208 ccw_device_dma_free +EXPORT_SYMBOL vmlinux 0x7a5d9a71 ZSTD_DStreamWorkspaceBound +EXPORT_SYMBOL vmlinux 0x7a63f89e padata_stop +EXPORT_SYMBOL vmlinux 0x7a657b47 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x7a65cd89 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x7a7d60e6 iucv_register +EXPORT_SYMBOL vmlinux 0x7a90d212 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9b37e8 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4b8a5 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7afdea3b tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7b0192da kstrtou16 +EXPORT_SYMBOL vmlinux 0x7b043908 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x7b248c41 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x7b2ffa9a ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x7b3343d3 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x7b5a7137 strncat +EXPORT_SYMBOL vmlinux 0x7b5ace4c gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b6a8047 kobject_del +EXPORT_SYMBOL vmlinux 0x7b80c85c dget_parent +EXPORT_SYMBOL vmlinux 0x7b86c9b9 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7b98190b string_escape_mem_ascii +EXPORT_SYMBOL vmlinux 0x7bb018d2 pci_write_config_word +EXPORT_SYMBOL vmlinux 0x7bbabc84 __hsiphash_aligned +EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids +EXPORT_SYMBOL vmlinux 0x7bca7d21 unregister_mii_timestamper +EXPORT_SYMBOL vmlinux 0x7bd7dfd0 ap_test_config_usage_domain +EXPORT_SYMBOL vmlinux 0x7bd8a477 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7be75856 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c385047 get_bitmap_from_slot +EXPORT_SYMBOL vmlinux 0x7c57aa4b kernel_accept +EXPORT_SYMBOL vmlinux 0x7c5d4a3a sclp_reactivate +EXPORT_SYMBOL vmlinux 0x7c70539a simple_write_begin +EXPORT_SYMBOL vmlinux 0x7c71d553 sg_miter_next +EXPORT_SYMBOL vmlinux 0x7c8de480 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet +EXPORT_SYMBOL vmlinux 0x7cb943ed gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x7cc2af5f udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x7cc44788 dump_emit +EXPORT_SYMBOL vmlinux 0x7cd865c5 pci_find_bus +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf0658c register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x7cf174bc make_kprojid +EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d1d64ab ccw_device_tm_start_timeout +EXPORT_SYMBOL vmlinux 0x7d3732da netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7d39c797 security_path_rename +EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit +EXPORT_SYMBOL vmlinux 0x7d806e54 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x7d8abbb1 ip_sock_set_freebind +EXPORT_SYMBOL vmlinux 0x7d99cba9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x7da78dcb __vfs_removexattr +EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning +EXPORT_SYMBOL vmlinux 0x7ddd0fe4 kobject_set_name +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df4a3ac dma_direct_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x7e305de4 param_get_bool +EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x7e5299c2 kthread_create_worker_on_cpu +EXPORT_SYMBOL vmlinux 0x7e821ba1 crc_ccitt +EXPORT_SYMBOL vmlinux 0x7e8c6690 fqdir_exit +EXPORT_SYMBOL vmlinux 0x7ec4afc8 dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x7ec4eed1 tty_throttle +EXPORT_SYMBOL vmlinux 0x7eee7ff8 nvm_submit_io +EXPORT_SYMBOL vmlinux 0x7ef784f2 rename_lock +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table +EXPORT_SYMBOL vmlinux 0x7f071c0e __skb_ext_del +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f29073d kernel_sock_ip_overhead +EXPORT_SYMBOL vmlinux 0x7f364eaf fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x7f52071a net_dim +EXPORT_SYMBOL vmlinux 0x7f543a10 sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table +EXPORT_SYMBOL vmlinux 0x7f698459 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable +EXPORT_SYMBOL vmlinux 0x7f9c34d4 get_acl +EXPORT_SYMBOL vmlinux 0x7fa2792c generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x7fb8a14e skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x7fbaa88a pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x7fc8aed7 timestamp_truncate +EXPORT_SYMBOL vmlinux 0x7fd2eb7f xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fee68c0 skb_queue_head +EXPORT_SYMBOL vmlinux 0x80124dae iov_iter_advance +EXPORT_SYMBOL vmlinux 0x801629d0 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x8023005b devm_of_iomap +EXPORT_SYMBOL vmlinux 0x802a3ee1 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0x80318b30 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x805485ab __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x80574139 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x8067a6c1 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x806f2c92 tcw_set_tccb +EXPORT_SYMBOL vmlinux 0x8093aeef pcie_bandwidth_available +EXPORT_SYMBOL vmlinux 0x80a26ce7 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x80be3617 release_pages +EXPORT_SYMBOL vmlinux 0x80c2337d request_firmware_into_buf +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cdef98 rtnl_kfree_skbs +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d7f717 sg_zero_buffer +EXPORT_SYMBOL vmlinux 0x80def29a sock_rfree +EXPORT_SYMBOL vmlinux 0x80e1cb92 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x80f83c43 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x812739e8 simple_unlink +EXPORT_SYMBOL vmlinux 0x8128c039 smsg_register_callback +EXPORT_SYMBOL vmlinux 0x812f78eb xxh64_update +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81776d65 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information +EXPORT_SYMBOL vmlinux 0x81844c9d vmemdup_user +EXPORT_SYMBOL vmlinux 0x819f6f4f pci_scan_root_bus_bridge +EXPORT_SYMBOL vmlinux 0x81a1b7c4 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ea9f5e xp_dma_sync_for_device_slow +EXPORT_SYMBOL vmlinux 0x81fed543 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x8202fa2b input_inject_event +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8217143c dma_fence_add_callback +EXPORT_SYMBOL vmlinux 0x822746f3 pcim_iomap +EXPORT_SYMBOL vmlinux 0x8244f2b9 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x82519608 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x82665214 ping_prot +EXPORT_SYMBOL vmlinux 0x827412c1 input_set_keycode +EXPORT_SYMBOL vmlinux 0x827e5c1b dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82a484e3 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x82aa249d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x82b06d57 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x82b5a8ec pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x82c2f005 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x82c79abd inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes +EXPORT_SYMBOL vmlinux 0x82cfb5ea devm_request_resource +EXPORT_SYMBOL vmlinux 0x82da0670 skb_copy_header +EXPORT_SYMBOL vmlinux 0x82e15def simple_nosetlease +EXPORT_SYMBOL vmlinux 0x8301a276 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x830c2e35 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x83244661 textsearch_register +EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL vmlinux 0x8378e2a2 dma_direct_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x8389d6e5 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 +EXPORT_SYMBOL vmlinux 0x83995812 dcb_ieee_getapp_prio_dscp_mask_map +EXPORT_SYMBOL vmlinux 0x839c2252 fscrypt_inherit_context +EXPORT_SYMBOL vmlinux 0x83b82960 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c8fcb5 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x83e1438d raw3270_request_reset +EXPORT_SYMBOL vmlinux 0x83eaf2b2 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x84012d6e reuseport_detach_prog +EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free +EXPORT_SYMBOL vmlinux 0x841030a1 mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0x84109fa9 make_kuid +EXPORT_SYMBOL vmlinux 0x8425628d pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x843efed0 gen_pool_dma_zalloc_align +EXPORT_SYMBOL vmlinux 0x84582ecc dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x845c31ba get_user_pages_remote +EXPORT_SYMBOL vmlinux 0x845ed60e dev_add_offload +EXPORT_SYMBOL vmlinux 0x845ed8f5 complete_and_exit +EXPORT_SYMBOL vmlinux 0x847bf357 ap_perms_mutex +EXPORT_SYMBOL vmlinux 0x848d22b6 finish_wait +EXPORT_SYMBOL vmlinux 0x84bb3dfc __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x84c18f4f ZSTD_decompress_usingDDict +EXPORT_SYMBOL vmlinux 0x84c66a4d __tracepoint_s390_diagnose +EXPORT_SYMBOL vmlinux 0x84d4c8cc crc16 +EXPORT_SYMBOL vmlinux 0x84d69b5a block_write_full_page +EXPORT_SYMBOL vmlinux 0x85064e35 vfs_create +EXPORT_SYMBOL vmlinux 0x8518df74 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x851ee2e2 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x8540b7e8 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x85532eb1 __tracepoint_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856e6cb6 dma_fence_chain_walk +EXPORT_SYMBOL vmlinux 0x8580c6a2 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x85970952 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x85a3026f __wake_up_bit +EXPORT_SYMBOL vmlinux 0x85a7af2a register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x85abc85f strncmp +EXPORT_SYMBOL vmlinux 0x85baae79 _dev_crit +EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region +EXPORT_SYMBOL vmlinux 0x85d14264 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86081758 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x860b21ef simple_pin_fs +EXPORT_SYMBOL vmlinux 0x86237388 arch_read_lock_wait +EXPORT_SYMBOL vmlinux 0x863a276a color_table +EXPORT_SYMBOL vmlinux 0x864d0da8 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86838a09 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x8689d3f6 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86b25ff7 raw3270_request_set_idal +EXPORT_SYMBOL vmlinux 0x86c4cf8d scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x86c73aed _copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant +EXPORT_SYMBOL vmlinux 0x86e3b369 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x86ee8493 skb_store_bits +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fbce61 mutex_trylock +EXPORT_SYMBOL vmlinux 0x870bab9e utf8ncursor +EXPORT_SYMBOL vmlinux 0x870f929c sync_blockdev +EXPORT_SYMBOL vmlinux 0x8721db1f generic_read_dir +EXPORT_SYMBOL vmlinux 0x872850c5 __ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x874d6dcf dev_emerg_hash +EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed +EXPORT_SYMBOL vmlinux 0x87638396 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x87702389 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x877589cb sk_stop_timer +EXPORT_SYMBOL vmlinux 0x878bdd11 configfs_unregister_group +EXPORT_SYMBOL vmlinux 0x87a94858 request_firmware +EXPORT_SYMBOL vmlinux 0x87ae2605 get_tree_single +EXPORT_SYMBOL vmlinux 0x87af4bf5 dma_supported +EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87b907d4 add_to_pipe +EXPORT_SYMBOL vmlinux 0x87c9369b cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x87fa1f46 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x8824f429 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x8833bc7e __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x883ef038 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x883f9805 fs_param_is_string +EXPORT_SYMBOL vmlinux 0x8845d89a __kmalloc_track_caller +EXPORT_SYMBOL vmlinux 0x886b1e51 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0x88878c62 netdev_lower_state_changed +EXPORT_SYMBOL vmlinux 0x889f073f input_unregister_device +EXPORT_SYMBOL vmlinux 0x88ae4153 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x88b35657 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x88b993b0 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x88bafbf3 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x88bca366 begin_new_exec +EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size +EXPORT_SYMBOL vmlinux 0x88e05482 vfs_clone_file_range +EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free +EXPORT_SYMBOL vmlinux 0x88e7abc8 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x88ec1abe ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x89034372 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x89125229 dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x89181ae3 __vfs_setxattr +EXPORT_SYMBOL vmlinux 0x89262ab6 pcie_relaxed_ordering_enabled +EXPORT_SYMBOL vmlinux 0x893eb0a1 pci_write_config_byte +EXPORT_SYMBOL vmlinux 0x8947fbb9 netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x8950d5df dma_set_mask +EXPORT_SYMBOL vmlinux 0x89621b96 __genradix_iter_peek +EXPORT_SYMBOL vmlinux 0x8967ae71 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x899f07c3 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x89a27f03 inet6_bind +EXPORT_SYMBOL vmlinux 0x89b9a76a dma_resv_init +EXPORT_SYMBOL vmlinux 0x89bec898 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x89ceb14a flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x89ec6ecb pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x89edd037 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x8a113557 netdev_pick_tx +EXPORT_SYMBOL vmlinux 0x8a3d07e5 start_tty +EXPORT_SYMBOL vmlinux 0x8a5be544 unregister_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0x8a66ab61 component_match_add_release +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7e83c2 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x8a924bfd ip_sock_set_recverr +EXPORT_SYMBOL vmlinux 0x8a948f27 __nla_parse +EXPORT_SYMBOL vmlinux 0x8a96a453 debug_sprintf_view +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation +EXPORT_SYMBOL vmlinux 0x8aeeeb63 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x8af00d98 debug_register_mode +EXPORT_SYMBOL vmlinux 0x8afba4b6 nobh_write_end +EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict +EXPORT_SYMBOL vmlinux 0x8b028a48 __ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x8b0da5b9 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x8b55fd4f hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b65b47c ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x8b6849db dev_add_pack +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8a4be5 netdev_printk +EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx +EXPORT_SYMBOL vmlinux 0x8bac3d69 write_one_page +EXPORT_SYMBOL vmlinux 0x8bae0300 unlock_rename +EXPORT_SYMBOL vmlinux 0x8bc124de from_kgid +EXPORT_SYMBOL vmlinux 0x8beebdce ip_defrag +EXPORT_SYMBOL vmlinux 0x8bffe234 mntput +EXPORT_SYMBOL vmlinux 0x8c0c8730 dump_align +EXPORT_SYMBOL vmlinux 0x8c1cb972 simple_open +EXPORT_SYMBOL vmlinux 0x8c33f3b0 napi_complete_done +EXPORT_SYMBOL vmlinux 0x8c431c29 proc_create +EXPORT_SYMBOL vmlinux 0x8c5fb6e2 mempool_init_node +EXPORT_SYMBOL vmlinux 0x8c61a1b6 get_tree_bdev +EXPORT_SYMBOL vmlinux 0x8c625e2f sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x8c6592fc hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x8c6bf651 flow_block_cb_is_busy +EXPORT_SYMBOL vmlinux 0x8c875be0 tcw_init +EXPORT_SYMBOL vmlinux 0x8c9e7697 generic_fillattr +EXPORT_SYMBOL vmlinux 0x8cb062a8 iucv_message_reply +EXPORT_SYMBOL vmlinux 0x8cb28711 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x8cb544df __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8cb81999 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x8cb85f0f gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8cba889c iov_iter_revert +EXPORT_SYMBOL vmlinux 0x8cd293b5 cond_set_guest_storage_key +EXPORT_SYMBOL vmlinux 0x8cecd5b4 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x8cf90a84 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x8cfdfc2c raw_copy_to_user +EXPORT_SYMBOL vmlinux 0x8d001091 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8d1519c7 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x8d3d6f78 netdev_warn +EXPORT_SYMBOL vmlinux 0x8d46a251 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x8d4c78f3 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d63971b arp_xmit +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d785bb1 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x8db13695 dev_addr_del +EXPORT_SYMBOL vmlinux 0x8db61b3e skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout +EXPORT_SYMBOL vmlinux 0x8def9eed netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null +EXPORT_SYMBOL vmlinux 0x8dfe7138 setup_new_exec +EXPORT_SYMBOL vmlinux 0x8e3f59ba pci_enable_device +EXPORT_SYMBOL vmlinux 0x8e4c43fb seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0x8e59d599 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x8e7a04df memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x8e80e736 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x8e93bd24 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x8e9eab61 check_zeroed_user +EXPORT_SYMBOL vmlinux 0x8eb2fe91 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x8ec7f250 dma_fence_free +EXPORT_SYMBOL vmlinux 0x8eead37a can_nice +EXPORT_SYMBOL vmlinux 0x8f00f894 kill_litter_super +EXPORT_SYMBOL vmlinux 0x8f0eebe9 tcf_em_register +EXPORT_SYMBOL vmlinux 0x8f43a55a file_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8f5b0eb7 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x8f636d23 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x8f96fdf4 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode +EXPORT_SYMBOL vmlinux 0x8fa03af3 fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0x8fa25973 send_sig_mceerr +EXPORT_SYMBOL vmlinux 0x8fcc3bfe pci_bus_type +EXPORT_SYMBOL vmlinux 0x8ff2371d cdev_alloc +EXPORT_SYMBOL vmlinux 0x8ff63471 dm_get_device +EXPORT_SYMBOL vmlinux 0x8ff73cef inet6_release +EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit +EXPORT_SYMBOL vmlinux 0x8ffbdba9 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x9029cd4e bd_abort_claiming +EXPORT_SYMBOL vmlinux 0x902ec785 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x9054ee54 ethtool_intersect_link_masks +EXPORT_SYMBOL vmlinux 0x9087fe4a tcf_block_get +EXPORT_SYMBOL vmlinux 0x9099bb25 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0x90ab22b9 put_fs_context +EXPORT_SYMBOL vmlinux 0x90aedbe4 inode_permission +EXPORT_SYMBOL vmlinux 0x90d298ef __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x90e12690 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x90e2563e mmput_async +EXPORT_SYMBOL vmlinux 0x90f155f8 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x910c7a0c alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x9111a6c0 dma_direct_map_resource +EXPORT_SYMBOL vmlinux 0x9114817a dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x9116b417 save_fpu_regs +EXPORT_SYMBOL vmlinux 0x912778e9 pci_alloc_host_bridge +EXPORT_SYMBOL vmlinux 0x917886d6 inet_release +EXPORT_SYMBOL vmlinux 0x917e2bb6 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x9190eedc __dquot_transfer +EXPORT_SYMBOL vmlinux 0x919c43c7 mutex_unlock +EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 +EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x91b68a74 generic_write_checks +EXPORT_SYMBOL vmlinux 0x91beaf90 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x91befc6e pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x91c00dea raw3270_del_view +EXPORT_SYMBOL vmlinux 0x91e0aa6d always_delete_dentry +EXPORT_SYMBOL vmlinux 0x91fa841e free_netdev +EXPORT_SYMBOL vmlinux 0x9208e082 kern_path +EXPORT_SYMBOL vmlinux 0x921c9f90 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x921fc1c9 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear +EXPORT_SYMBOL vmlinux 0x9233b953 tty_do_resize +EXPORT_SYMBOL vmlinux 0x923b17ec bio_list_copy_data +EXPORT_SYMBOL vmlinux 0x924f8a19 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x925b8a57 truncate_setsize +EXPORT_SYMBOL vmlinux 0x926da5e3 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x928d99b1 get_task_exe_file +EXPORT_SYMBOL vmlinux 0x92962f90 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x92ce56d5 kill_pid +EXPORT_SYMBOL vmlinux 0x92d691d1 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x92d6ea76 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x92d7c4d4 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92f3ceb0 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x92ff66f4 configfs_register_subsystem +EXPORT_SYMBOL vmlinux 0x92ffd2a4 lock_rename +EXPORT_SYMBOL vmlinux 0x9305bf68 find_next_and_bit +EXPORT_SYMBOL vmlinux 0x932c2539 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x933079e8 inet_addr_type +EXPORT_SYMBOL vmlinux 0x933f5dc3 mr_fill_mroute +EXPORT_SYMBOL vmlinux 0x934b9c90 mr_dump +EXPORT_SYMBOL vmlinux 0x936442a9 debug_exception_common +EXPORT_SYMBOL vmlinux 0x936b820f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x937278d1 __napi_schedule +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bfb7bd down_write_trylock +EXPORT_SYMBOL vmlinux 0x93c1992f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x93cddacf keyring_search +EXPORT_SYMBOL vmlinux 0x93d9875f eth_type_trans +EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn +EXPORT_SYMBOL vmlinux 0x942a6bab input_unregister_handle +EXPORT_SYMBOL vmlinux 0x942f4c5c iucv_message_reject +EXPORT_SYMBOL vmlinux 0x9431a990 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x943ba256 debug_dflt_header_fn +EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages +EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked +EXPORT_SYMBOL vmlinux 0x945775a5 segment_save +EXPORT_SYMBOL vmlinux 0x94596142 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x948699ab ip_frag_next +EXPORT_SYMBOL vmlinux 0x9495ce9a scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x9499fd7a sock_kfree_s +EXPORT_SYMBOL vmlinux 0x94bf03ca utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x94dc5ef2 update_region +EXPORT_SYMBOL vmlinux 0x94f31333 dump_fpu +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951a2dfe iucv_path_accept +EXPORT_SYMBOL vmlinux 0x953adc3b dma_fence_get_status +EXPORT_SYMBOL vmlinux 0x953b9d47 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9542faf7 sclp_unregister +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc +EXPORT_SYMBOL vmlinux 0x954f099c idr_preload +EXPORT_SYMBOL vmlinux 0x954f1de7 ccw_driver_unregister +EXPORT_SYMBOL vmlinux 0x9562dfb6 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x956c90f1 vfs_statx_fd +EXPORT_SYMBOL vmlinux 0x956efd33 framebuffer_release +EXPORT_SYMBOL vmlinux 0x9573c36d register_sysctl +EXPORT_SYMBOL vmlinux 0x9573e197 ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x9581ea62 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0x959158d7 register_key_type +EXPORT_SYMBOL vmlinux 0x95a06eb1 dma_fence_default_wait +EXPORT_SYMBOL vmlinux 0x95b38ccc resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x95ceb864 key_update +EXPORT_SYMBOL vmlinux 0x95e63ced prot_virt_host +EXPORT_SYMBOL vmlinux 0x95f55427 seq_printf +EXPORT_SYMBOL vmlinux 0x95f57d45 __ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x95fcd441 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x960f2ad5 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x9612cfc1 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9632c227 lookup_bdev +EXPORT_SYMBOL vmlinux 0x96404e39 itcw_set_data +EXPORT_SYMBOL vmlinux 0x966c6c3c tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x9674236c module_refcount +EXPORT_SYMBOL vmlinux 0x96749f20 down_read_killable +EXPORT_SYMBOL vmlinux 0x968e8c38 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x9690e715 fs_context_for_submount +EXPORT_SYMBOL vmlinux 0x969775c0 sock_gettstamp +EXPORT_SYMBOL vmlinux 0x969fbe13 flush_signals +EXPORT_SYMBOL vmlinux 0x96b1cc80 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96da3e40 __module_get +EXPORT_SYMBOL vmlinux 0x96e0c1b6 iucv_bus +EXPORT_SYMBOL vmlinux 0x96ee9b99 pskb_extract +EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top +EXPORT_SYMBOL vmlinux 0x9711df72 _copy_to_iter +EXPORT_SYMBOL vmlinux 0x97228cc8 pci_enable_wake +EXPORT_SYMBOL vmlinux 0x972faf8c input_event +EXPORT_SYMBOL vmlinux 0x973427ca key_invalidate +EXPORT_SYMBOL vmlinux 0x973a62c8 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x973b6552 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x974d0924 __kernel_cpumcf_begin +EXPORT_SYMBOL vmlinux 0x9757badb no_seek_end_llseek_size +EXPORT_SYMBOL vmlinux 0x976019a4 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x9788a908 sock_init_data +EXPORT_SYMBOL vmlinux 0x978c92ce unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x978e230e unix_destruct_scm +EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync +EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x97b9b859 param_ops_int +EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97eac67f wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x9826d47c inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x985cd742 inet_listen +EXPORT_SYMBOL vmlinux 0x987b2a7a page_mapping +EXPORT_SYMBOL vmlinux 0x988ad4c8 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x98bd7e7e icmp6_send +EXPORT_SYMBOL vmlinux 0x98c24034 tty_vhangup +EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x98ca179e pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x98d83f0a __SetPageMovable +EXPORT_SYMBOL vmlinux 0x98de1c15 snprintf +EXPORT_SYMBOL vmlinux 0x98e2be88 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning +EXPORT_SYMBOL vmlinux 0x9907e1b1 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x9910f1e3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x992fe3a4 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x9937b117 rdmacg_uncharge +EXPORT_SYMBOL vmlinux 0x993a1b7b iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x9942ec77 itcw_finalize +EXPORT_SYMBOL vmlinux 0x99483b0f register_nexthop_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x995331aa drop_super_exclusive +EXPORT_SYMBOL vmlinux 0x9966c3ce security_path_mknod +EXPORT_SYMBOL vmlinux 0x99901245 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x9992045f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x999af794 mount_nodev +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b82ff0 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x99bb54fc mem_cgroup_from_task +EXPORT_SYMBOL vmlinux 0x99ce5a48 kset_unregister +EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f33923 compat_import_iovec +EXPORT_SYMBOL vmlinux 0x99fd9da6 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a4d89bb neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk +EXPORT_SYMBOL vmlinux 0x9a593532 dquot_load_quota_inode +EXPORT_SYMBOL vmlinux 0x9a8109f9 fscrypt_ioctl_set_policy +EXPORT_SYMBOL vmlinux 0x9a906daf memscan +EXPORT_SYMBOL vmlinux 0x9a9531e7 __invalidate_device +EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns +EXPORT_SYMBOL vmlinux 0x9ab6c6bb skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9ad64ecb mount_single +EXPORT_SYMBOL vmlinux 0x9ae10792 inet_sk_set_state +EXPORT_SYMBOL vmlinux 0x9aea7eff ccw_device_is_pathgroup +EXPORT_SYMBOL vmlinux 0x9aeb3209 kern_unmount +EXPORT_SYMBOL vmlinux 0x9af30b96 dquot_operations +EXPORT_SYMBOL vmlinux 0x9afbbdad inet_del_protocol +EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3b4f99 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9b3b6bc7 qdisc_watchdog_init_clockid +EXPORT_SYMBOL vmlinux 0x9b42ef0f dfltcc_reset +EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b61f23e kbd_alloc +EXPORT_SYMBOL vmlinux 0x9b8d07aa strnlen +EXPORT_SYMBOL vmlinux 0x9b91de42 skb_dump +EXPORT_SYMBOL vmlinux 0x9b99da41 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9b9be15f linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x9bab805a proto_unregister +EXPORT_SYMBOL vmlinux 0x9bacead3 __debug_sprintf_event +EXPORT_SYMBOL vmlinux 0x9bb725b2 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x9bba0279 security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0x9bd09d7e pci_request_region +EXPORT_SYMBOL vmlinux 0x9bd2cd1f set_guest_storage_key +EXPORT_SYMBOL vmlinux 0x9be98ef5 pipe_unlock +EXPORT_SYMBOL vmlinux 0x9becc435 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x9bfd0338 dcache_readdir +EXPORT_SYMBOL vmlinux 0x9c0821ea vsnprintf +EXPORT_SYMBOL vmlinux 0x9c13c687 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x9c5fc982 get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x9c7e20d6 netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x9c87d7d2 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x9c8fabad raw3270_request_free +EXPORT_SYMBOL vmlinux 0x9c939396 cred_fscmp +EXPORT_SYMBOL vmlinux 0x9c97e06e __netif_schedule +EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce02561 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x9ce38c9f free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9d01b0a2 pci_ep_cfs_remove_epc_group +EXPORT_SYMBOL vmlinux 0x9d0684ee proc_symlink +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d0db1c1 _dev_info +EXPORT_SYMBOL vmlinux 0x9d12365d dev_set_mac_address_user +EXPORT_SYMBOL vmlinux 0x9d2e7707 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x9d509dca init_opal_dev +EXPORT_SYMBOL vmlinux 0x9d72d2a8 netdev_notice +EXPORT_SYMBOL vmlinux 0x9d97ab2c audit_log_object_context +EXPORT_SYMBOL vmlinux 0x9daa6b7a genl_register_family +EXPORT_SYMBOL vmlinux 0x9dc055ab xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x9dc59f3a ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x9dcac2a4 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x9dd4c858 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x9ddf89c0 mr_table_dump +EXPORT_SYMBOL vmlinux 0x9df81db4 ___ratelimit +EXPORT_SYMBOL vmlinux 0x9e0a5b87 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 +EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL vmlinux 0x9e2aa3be dev_mc_flush +EXPORT_SYMBOL vmlinux 0x9e33a21c xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x9e39b893 tcp_seq_next +EXPORT_SYMBOL vmlinux 0x9e3f7be1 __xa_clear_mark +EXPORT_SYMBOL vmlinux 0x9e3ff2d5 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5b7244 blkdev_get +EXPORT_SYMBOL vmlinux 0x9e605472 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x9e61087b scsi_add_device +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6712a3 block_write_begin +EXPORT_SYMBOL vmlinux 0x9e8fe626 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission +EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9eaee72d pci_claim_resource +EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 +EXPORT_SYMBOL vmlinux 0x9ecdb207 sock_create_lite +EXPORT_SYMBOL vmlinux 0x9edff942 nvm_register_tgt_type +EXPORT_SYMBOL vmlinux 0x9ee50f50 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x9ee60cfe seq_release +EXPORT_SYMBOL vmlinux 0x9ef7898e free_buffer_head +EXPORT_SYMBOL vmlinux 0x9f02463a fs_param_is_blockdev +EXPORT_SYMBOL vmlinux 0x9f0c626f filemap_flush +EXPORT_SYMBOL vmlinux 0x9f18c495 __free_pages +EXPORT_SYMBOL vmlinux 0x9f305300 blk_get_queue +EXPORT_SYMBOL vmlinux 0x9f31205b tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict +EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy +EXPORT_SYMBOL vmlinux 0x9f5d9393 utf8nagemax +EXPORT_SYMBOL vmlinux 0x9f6d5254 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x9f705c7c bdi_put +EXPORT_SYMBOL vmlinux 0x9f78cf59 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x9f801738 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa07a7a vfs_rename +EXPORT_SYMBOL vmlinux 0x9fa15e1a udp_gro_receive +EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x9fab59d4 __destroy_inode +EXPORT_SYMBOL vmlinux 0x9fb1d0ed uuid_is_valid +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe2b4b8 param_get_byte +EXPORT_SYMBOL vmlinux 0x9fe888bc dst_alloc +EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce +EXPORT_SYMBOL vmlinux 0x9ff298fb tty_devnum +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa009d5fe file_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa00e515d kill_anon_super +EXPORT_SYMBOL vmlinux 0xa01ad17f sock_no_linger +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa054e8ed iucv_unregister +EXPORT_SYMBOL vmlinux 0xa0554664 security_path_unlink +EXPORT_SYMBOL vmlinux 0xa058ad41 flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0xa06e587a release_firmware +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa091b73a task_work_add +EXPORT_SYMBOL vmlinux 0xa095e02e generic_check_addressable +EXPORT_SYMBOL vmlinux 0xa099ee1c simple_rename +EXPORT_SYMBOL vmlinux 0xa09cf93f param_array_ops +EXPORT_SYMBOL vmlinux 0xa0a15b49 smp_call_function_many +EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c31e37 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xa0c87d8c netlink_ack +EXPORT_SYMBOL vmlinux 0xa0d331a1 inet_put_port +EXPORT_SYMBOL vmlinux 0xa0d3d560 ksize +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e123e2 pin_user_pages_remote +EXPORT_SYMBOL vmlinux 0xa0eae826 smp_call_function +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10a0439 kmalloc_order +EXPORT_SYMBOL vmlinux 0xa116a645 seq_read_iter +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa126c93f __xa_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xa13c9739 do_wait_intr_irq +EXPORT_SYMBOL vmlinux 0xa143bead vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0xa1576ef6 sock_create_kern +EXPORT_SYMBOL vmlinux 0xa15b3fc1 fs_param_is_u64 +EXPORT_SYMBOL vmlinux 0xa1898d44 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa19cceb1 make_bad_inode +EXPORT_SYMBOL vmlinux 0xa1a8cc6c crc_ccitt_false +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c89199 dma_pool_create +EXPORT_SYMBOL vmlinux 0xa1d5979b find_first_bit_inv +EXPORT_SYMBOL vmlinux 0xa1e8aa56 key_put +EXPORT_SYMBOL vmlinux 0xa1ec8f1c __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa1f4e674 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0xa1fee353 tcw_set_tsb +EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp +EXPORT_SYMBOL vmlinux 0xa21e7f02 dec_node_page_state +EXPORT_SYMBOL vmlinux 0xa223d501 get_disk_and_module +EXPORT_SYMBOL vmlinux 0xa238a147 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module +EXPORT_SYMBOL vmlinux 0xa252e862 netif_napi_add +EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte +EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer +EXPORT_SYMBOL vmlinux 0xa26837f7 touch_buffer +EXPORT_SYMBOL vmlinux 0xa2873661 get_fs_type +EXPORT_SYMBOL vmlinux 0xa28770a6 config_item_init_type_name +EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active +EXPORT_SYMBOL vmlinux 0xa292a73f init_task +EXPORT_SYMBOL vmlinux 0xa2bc7b3e put_disk +EXPORT_SYMBOL vmlinux 0xa2e2fa7a input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xa2e63172 pci_release_resource +EXPORT_SYMBOL vmlinux 0xa2e71d0c key_type_keyring +EXPORT_SYMBOL vmlinux 0xa2fc75e7 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xa2fe17a0 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xa30a0a53 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xa3175a7d audit_log_start +EXPORT_SYMBOL vmlinux 0xa3395198 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xa33f7c7c nla_strlcpy +EXPORT_SYMBOL vmlinux 0xa33fffa5 hdmi_drm_infoframe_unpack_only +EXPORT_SYMBOL vmlinux 0xa37e1357 fget_raw +EXPORT_SYMBOL vmlinux 0xa39045c4 seg6_push_hmac +EXPORT_SYMBOL vmlinux 0xa39509b4 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xa39c203e bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xa3a5be95 memmove +EXPORT_SYMBOL vmlinux 0xa3ad50bd vmf_insert_mixed_mkwrite +EXPORT_SYMBOL vmlinux 0xa3e2f1d2 __sk_receive_skb +EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final +EXPORT_SYMBOL vmlinux 0xa4051bf6 LZ4_decompress_safe_continue +EXPORT_SYMBOL vmlinux 0xa416c8e9 arch_write_lock_wait +EXPORT_SYMBOL vmlinux 0xa424f5c9 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa42af456 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xa43658c4 remove_watch_from_object +EXPORT_SYMBOL vmlinux 0xa43a3bf9 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xa441361d framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xa443812f blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xa44b520a __scsi_format_command +EXPORT_SYMBOL vmlinux 0xa458396a bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xa45c9018 vfs_link +EXPORT_SYMBOL vmlinux 0xa467ce61 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xa473dcb8 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xa47ae648 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xa47cf578 compat_ptr_ioctl +EXPORT_SYMBOL vmlinux 0xa4a36b87 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4abaefb pcim_iounmap +EXPORT_SYMBOL vmlinux 0xa4b428e2 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xa4e188e7 strscpy +EXPORT_SYMBOL vmlinux 0xa4f4c3d5 unix_detach_fds +EXPORT_SYMBOL vmlinux 0xa50483fe __ksize +EXPORT_SYMBOL vmlinux 0xa519ef26 param_get_short +EXPORT_SYMBOL vmlinux 0xa51daeb2 fscrypt_free_bounce_page +EXPORT_SYMBOL vmlinux 0xa52ae5a8 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0xa53af1ea filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa54e270c skb_pull +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55e779b skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0xa5607d87 __inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa563faee flow_indr_dev_setup_offload +EXPORT_SYMBOL vmlinux 0xa57eecc7 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xa5808745 node_data +EXPORT_SYMBOL vmlinux 0xa59158b0 xa_load +EXPORT_SYMBOL vmlinux 0xa597bf61 inet_addr_type_table +EXPORT_SYMBOL vmlinux 0xa5ad83ee dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa5bf303d bioset_init +EXPORT_SYMBOL vmlinux 0xa5d973c7 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xa5e2dc89 tso_start +EXPORT_SYMBOL vmlinux 0xa5ecc472 skb_split +EXPORT_SYMBOL vmlinux 0xa60050eb tcf_block_netif_keep_dst +EXPORT_SYMBOL vmlinux 0xa608d1d8 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0xa634b4db mroute6_is_socket +EXPORT_SYMBOL vmlinux 0xa63eb43e skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xa65cd44b inc_nlink +EXPORT_SYMBOL vmlinux 0xa66f7c29 pci_disable_device +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6841fb6 tun_ptr_to_xdp +EXPORT_SYMBOL vmlinux 0xa695d373 tcf_block_put +EXPORT_SYMBOL vmlinux 0xa69a310b kmalloc_caches +EXPORT_SYMBOL vmlinux 0xa6a60f8f posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xa6ac4e14 dev_notice_hash +EXPORT_SYMBOL vmlinux 0xa6d582a2 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xa6d63ce0 proc_mkdir +EXPORT_SYMBOL vmlinux 0xa6e3e9b2 ccw_device_start_timeout_key +EXPORT_SYMBOL vmlinux 0xa6e71e4d netlbl_calipso_ops_register +EXPORT_SYMBOL vmlinux 0xa70910f5 utf8len +EXPORT_SYMBOL vmlinux 0xa70ea6d7 ZSTD_DCtxWorkspaceBound +EXPORT_SYMBOL vmlinux 0xa72cd7ce pci_get_class +EXPORT_SYMBOL vmlinux 0xa737bcf7 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xa73ceb04 tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0xa73e1340 __mod_node_page_state +EXPORT_SYMBOL vmlinux 0xa7416284 get_tree_keyed +EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock +EXPORT_SYMBOL vmlinux 0xa7600c59 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xa7663add skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xa77950e0 vmf_insert_pfn_prot +EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier +EXPORT_SYMBOL vmlinux 0xa7a9cfe0 iucv_message_send2way +EXPORT_SYMBOL vmlinux 0xa7b88ac5 bio_add_page +EXPORT_SYMBOL vmlinux 0xa7ca96c2 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xa7cdbdf2 down_read +EXPORT_SYMBOL vmlinux 0xa7cf6d88 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xa7d5287a __tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xa7dff153 dev_trans_start +EXPORT_SYMBOL vmlinux 0xa7e38f12 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xa7f883ff qdisc_put +EXPORT_SYMBOL vmlinux 0xa80c8b11 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0xa81e52a5 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa836b46d xp_dma_unmap +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox +EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xa87178f3 simple_write_end +EXPORT_SYMBOL vmlinux 0xa8736988 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xa897812f lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa8b05bc0 genl_notify +EXPORT_SYMBOL vmlinux 0xa8e0b234 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0xa8e2ca4c ip6_frag_next +EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work +EXPORT_SYMBOL vmlinux 0xa9176cf3 skb_put +EXPORT_SYMBOL vmlinux 0xa9193fde __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value +EXPORT_SYMBOL vmlinux 0xa985e06c submit_bh +EXPORT_SYMBOL vmlinux 0xa9866d10 get_user_pages +EXPORT_SYMBOL vmlinux 0xa9a74af7 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xa9abd161 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa9b1dc6c down_timeout +EXPORT_SYMBOL vmlinux 0xa9c29049 noop_qdisc +EXPORT_SYMBOL vmlinux 0xa9ccbd2d xfrm_register_type +EXPORT_SYMBOL vmlinux 0xa9d891f2 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xa9ed619a set_device_ro +EXPORT_SYMBOL vmlinux 0xa9f162f7 config_item_put +EXPORT_SYMBOL vmlinux 0xa9f421e6 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xa9f82a0c d_make_root +EXPORT_SYMBOL vmlinux 0xaa1e246a xxh32_update +EXPORT_SYMBOL vmlinux 0xaa371aaf follow_up +EXPORT_SYMBOL vmlinux 0xaa3822e9 tcf_idr_check_alloc +EXPORT_SYMBOL vmlinux 0xaa447bfc bd_start_claiming +EXPORT_SYMBOL vmlinux 0xaa64d48a nvm_dev_dma_alloc +EXPORT_SYMBOL vmlinux 0xaa65aa47 __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0xaa7187c2 udp_set_csum +EXPORT_SYMBOL vmlinux 0xaa72255c posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xaa8a5716 drop_nlink +EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaaad7e18 may_umount +EXPORT_SYMBOL vmlinux 0xaacd250b zpci_report_error +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad321b4 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xaad67ae3 ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0xaad8c7d6 default_wake_function +EXPORT_SYMBOL vmlinux 0xaaf70bf2 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaaff94ea mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0xab02f8e3 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xab03ae85 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init +EXPORT_SYMBOL vmlinux 0xab3bb343 dq_data_lock +EXPORT_SYMBOL vmlinux 0xab484377 init_pseudo +EXPORT_SYMBOL vmlinux 0xab53a5fa xa_find_after +EXPORT_SYMBOL vmlinux 0xab63baa5 unregister_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xab67be4d dm_io +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab844b35 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xab93c86f down_read_interruptible +EXPORT_SYMBOL vmlinux 0xaba81805 xps_rxqs_needed +EXPORT_SYMBOL vmlinux 0xabc96858 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xabd7fe1c inet_sendmsg +EXPORT_SYMBOL vmlinux 0xabe1431b trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0xac0308c0 ccw_device_tm_intrg +EXPORT_SYMBOL vmlinux 0xac16064d tcp_enter_quickack_mode +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0xac48e77e __skb_checksum +EXPORT_SYMBOL vmlinux 0xac56b6d3 __tracepoint_s390_cio_msch +EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton +EXPORT_SYMBOL vmlinux 0xac64c00f request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xac75158a pci_dev_put +EXPORT_SYMBOL vmlinux 0xac7b2422 pagevec_lookup_range_tag +EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac8a5364 input_reset_device +EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf +EXPORT_SYMBOL vmlinux 0xac96fe26 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xac99879d key_link +EXPORT_SYMBOL vmlinux 0xaca5fa3d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc7d3f6 rt_dst_clone +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacee7d57 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad046f3d dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xad0be000 xsk_umem_consume_tx +EXPORT_SYMBOL vmlinux 0xad10662c cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xad4aee39 strncpy +EXPORT_SYMBOL vmlinux 0xad5b72bd __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xad6c8a67 xattr_full_name +EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xada09ad2 dfltcc_can_inflate +EXPORT_SYMBOL vmlinux 0xada2e116 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xadaf6787 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xadaffe79 fiemap_prep +EXPORT_SYMBOL vmlinux 0xadc4a3d2 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xadc61559 ap_get_qdev +EXPORT_SYMBOL vmlinux 0xadc71a9f tty_port_hangup +EXPORT_SYMBOL vmlinux 0xadc819de input_setup_polling +EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xadd46aa7 bio_init +EXPORT_SYMBOL vmlinux 0xadd91080 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xadf66fa0 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc +EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0xae319efc radix_tree_insert +EXPORT_SYMBOL vmlinux 0xae39b1c2 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xae418bd6 ap_flush_queue +EXPORT_SYMBOL vmlinux 0xae5778bd __sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xae5fb720 vm_mmap +EXPORT_SYMBOL vmlinux 0xae78ffd7 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xae7d646b dev_get_stats +EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid +EXPORT_SYMBOL vmlinux 0xaec322ae inet_pton_with_scope +EXPORT_SYMBOL vmlinux 0xaf027df4 pipe_lock +EXPORT_SYMBOL vmlinux 0xaf0ef3b5 __frontswap_load +EXPORT_SYMBOL vmlinux 0xaf1355d1 single_open_size +EXPORT_SYMBOL vmlinux 0xaf2d5975 pci_find_capability +EXPORT_SYMBOL vmlinux 0xaf38bcd4 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4730fd set_anon_super +EXPORT_SYMBOL vmlinux 0xaf5952d6 input_set_poll_interval +EXPORT_SYMBOL vmlinux 0xaf5d0def __bread_gfp +EXPORT_SYMBOL vmlinux 0xaf602c4c skb_vlan_push +EXPORT_SYMBOL vmlinux 0xaf60bd0a module_layout +EXPORT_SYMBOL vmlinux 0xaf652caa __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xafa4da75 rdmacg_try_charge +EXPORT_SYMBOL vmlinux 0xafb4a109 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xafb9a7d3 d_genocide +EXPORT_SYMBOL vmlinux 0xafd3ca2d airq_iv_create +EXPORT_SYMBOL vmlinux 0xafd4d6ce sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xafe09175 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xafe82e10 strcspn +EXPORT_SYMBOL vmlinux 0xafec09c0 disable_sacf_uaccess +EXPORT_SYMBOL vmlinux 0xaffc0d7d is_bad_inode +EXPORT_SYMBOL vmlinux 0xb00bc9d5 d_add +EXPORT_SYMBOL vmlinux 0xb016493d arch_spin_relax +EXPORT_SYMBOL vmlinux 0xb01ba0cf ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xb03154bb __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xb033b1f9 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xb0447429 generic_listxattr +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb071ffaf sg_miter_skip +EXPORT_SYMBOL vmlinux 0xb0929080 jbd2_transaction_committed +EXPORT_SYMBOL vmlinux 0xb09ddac2 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb0a5e059 proc_dointvec +EXPORT_SYMBOL vmlinux 0xb0b1e8f2 __tty_insert_flip_char +EXPORT_SYMBOL vmlinux 0xb0baed3d mini_qdisc_pair_block_init +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eda7e7 iucv_path_sever +EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0xb1203bb8 ap_perms +EXPORT_SYMBOL vmlinux 0xb128ea21 cpumask_any_but +EXPORT_SYMBOL vmlinux 0xb129c0a2 fget +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1345e2e dev_uc_add +EXPORT_SYMBOL vmlinux 0xb141ed1e finish_no_open +EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0xb17a194e fd_install +EXPORT_SYMBOL vmlinux 0xb18da651 nvm_submit_io_sync +EXPORT_SYMBOL vmlinux 0xb192afbc scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xb1a5ab8c on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xb1b8f0bc gen_pool_alloc_algo_owner +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cd76bf blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xb1e14b84 sock_set_priority +EXPORT_SYMBOL vmlinux 0xb1e214ac tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xb206c160 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xb23450a0 module_put +EXPORT_SYMBOL vmlinux 0xb234c354 kbd_free +EXPORT_SYMBOL vmlinux 0xb25bb698 rt6_lookup +EXPORT_SYMBOL vmlinux 0xb2660450 mr_table_alloc +EXPORT_SYMBOL vmlinux 0xb2739d73 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xb2768f32 generic_perform_write +EXPORT_SYMBOL vmlinux 0xb2866984 iov_iter_for_each_range +EXPORT_SYMBOL vmlinux 0xb29343e4 dma_fence_array_create +EXPORT_SYMBOL vmlinux 0xb293c18f gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0xb29b95e7 udp_ioctl +EXPORT_SYMBOL vmlinux 0xb29f5f54 d_delete +EXPORT_SYMBOL vmlinux 0xb2b0d772 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0xb2b22fab sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb2bdc0bb sk_wait_data +EXPORT_SYMBOL vmlinux 0xb2cdd966 swake_up_locked +EXPORT_SYMBOL vmlinux 0xb2d47ee9 scsi_device_put +EXPORT_SYMBOL vmlinux 0xb2d5997a tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xb2dece30 generic_remap_file_range_prep +EXPORT_SYMBOL vmlinux 0xb2e2a8f0 file_ns_capable +EXPORT_SYMBOL vmlinux 0xb2fafd17 mempool_resize +EXPORT_SYMBOL vmlinux 0xb2fcb56d queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0xb308c97d wait_woken +EXPORT_SYMBOL vmlinux 0xb31223f1 input_release_device +EXPORT_SYMBOL vmlinux 0xb3198d53 debug_register_view +EXPORT_SYMBOL vmlinux 0xb31a3d8c blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one +EXPORT_SYMBOL vmlinux 0xb328549d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xb3488e69 iov_iter_pipe +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb358e83c dquot_initialize +EXPORT_SYMBOL vmlinux 0xb36378bb pci_iomap_wc +EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xb373a0ca blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb381fe9b bpf_prog_get_type_path +EXPORT_SYMBOL vmlinux 0xb3b04a10 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xb3b28163 debug_set_level +EXPORT_SYMBOL vmlinux 0xb3bd68cc security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0xb3c687e2 dev_mc_del +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f727e6 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fda6f2 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xb3ff1f69 free_pages_exact +EXPORT_SYMBOL vmlinux 0xb4132b39 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xb41362ba inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42edfad alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb4357a70 md_flush_request +EXPORT_SYMBOL vmlinux 0xb46ae3c2 sie64a +EXPORT_SYMBOL vmlinux 0xb4726d08 km_policy_notify +EXPORT_SYMBOL vmlinux 0xb47b5aff netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts +EXPORT_SYMBOL vmlinux 0xb49c26de netdev_reset_tc +EXPORT_SYMBOL vmlinux 0xb4c35dc9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xb4cfe844 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb4e035d7 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xb4e6d7ef put_watch_queue +EXPORT_SYMBOL vmlinux 0xb4f13d2a abort +EXPORT_SYMBOL vmlinux 0xb50cc9cb ZSTD_isFrame +EXPORT_SYMBOL vmlinux 0xb534f61f __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xb5395072 pcie_get_speed_cap +EXPORT_SYMBOL vmlinux 0xb55e2e68 revalidate_disk +EXPORT_SYMBOL vmlinux 0xb55f4f49 bprm_change_interp +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57f51c6 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a71646 put_disk_and_module +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d774a9 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xb61a957c path_is_mountpoint +EXPORT_SYMBOL vmlinux 0xb61c2c2f __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xb6261f3b neigh_table_init +EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable +EXPORT_SYMBOL vmlinux 0xb63b9353 lookup_one_len_unlocked +EXPORT_SYMBOL vmlinux 0xb6400adc blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xb645874d xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0xb66129a4 fscrypt_decrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xb676b082 blk_rq_init +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67956fb flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0xb67baae2 nla_reserve +EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor +EXPORT_SYMBOL vmlinux 0xb67ea262 eth_header_parse_protocol +EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b0e5be finish_open +EXPORT_SYMBOL vmlinux 0xb6bcdaa5 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xb6bfb60a tty_port_close +EXPORT_SYMBOL vmlinux 0xb6d67490 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xb6fbeefe xxh64 +EXPORT_SYMBOL vmlinux 0xb7016a2f scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb706fd3f touch_atime +EXPORT_SYMBOL vmlinux 0xb72b8895 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xb733a906 keyring_alloc +EXPORT_SYMBOL vmlinux 0xb733dd4c get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xb73a86ae seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0xb7468d30 kernel_read +EXPORT_SYMBOL vmlinux 0xb763d3d5 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb775bc69 __tcf_idr_release +EXPORT_SYMBOL vmlinux 0xb7775104 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb7801bbb ipv6_mc_check_icmpv6 +EXPORT_SYMBOL vmlinux 0xb7829702 sock_i_uid +EXPORT_SYMBOL vmlinux 0xb788803a vfs_ioc_setflags_prepare +EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict +EXPORT_SYMBOL vmlinux 0xb7908d05 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xb7b507ea utf8nlen +EXPORT_SYMBOL vmlinux 0xb7b6932a kernel_sendmsg_locked +EXPORT_SYMBOL vmlinux 0xb7c2085f register_filesystem +EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags +EXPORT_SYMBOL vmlinux 0xb7df37a0 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0xb7ee2a2c diag26c +EXPORT_SYMBOL vmlinux 0xb8153684 netlink_unicast +EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key +EXPORT_SYMBOL vmlinux 0xb87f3f4e md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xb88f1736 bio_reset +EXPORT_SYMBOL vmlinux 0xb89346f0 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse +EXPORT_SYMBOL vmlinux 0xb8ab4926 dev_pick_tx_cpu_id +EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link +EXPORT_SYMBOL vmlinux 0xb8c8ff53 configfs_unregister_default_group +EXPORT_SYMBOL vmlinux 0xb8cb6c69 complete_all +EXPORT_SYMBOL vmlinux 0xb8fe586c sock_no_mmap +EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xb906cbb0 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max +EXPORT_SYMBOL vmlinux 0xb915ceca itcw_init +EXPORT_SYMBOL vmlinux 0xb9194512 poll_freewait +EXPORT_SYMBOL vmlinux 0xb928aa45 netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xb929e9be dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb93b4d55 inet_gro_complete +EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xb94f4d5d __kmalloc_node_track_caller +EXPORT_SYMBOL vmlinux 0xb95417fb pci_map_rom +EXPORT_SYMBOL vmlinux 0xb95780d9 security_inode_copy_up +EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb975e111 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xb97bdc7a vm_insert_pages +EXPORT_SYMBOL vmlinux 0xb982463c pneigh_lookup +EXPORT_SYMBOL vmlinux 0xb99f383c try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xb9a704fa flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xb9b9ef7b bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xb9df5c0d ZSTD_nextSrcSizeToDecompress +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba07c43b unix_get_socket +EXPORT_SYMBOL vmlinux 0xba39ff72 tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba63af12 elv_rb_add +EXPORT_SYMBOL vmlinux 0xba6bb978 fscrypt_zeroout_range +EXPORT_SYMBOL vmlinux 0xba73e683 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xba815c0a devm_ioremap +EXPORT_SYMBOL vmlinux 0xba8590d9 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xbaa5b812 __var_waitqueue +EXPORT_SYMBOL vmlinux 0xbacba9f2 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xbacc77df xsk_umem_uses_need_wakeup +EXPORT_SYMBOL vmlinux 0xbad229a5 dev_addr_init +EXPORT_SYMBOL vmlinux 0xbadcaade blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xbae5ac0e nf_reinject +EXPORT_SYMBOL vmlinux 0xbaeab489 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xbaf507c1 gen_pool_dma_alloc_algo +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3f9797 scsi_device_get +EXPORT_SYMBOL vmlinux 0xbb40d7fe devm_register_netdev +EXPORT_SYMBOL vmlinux 0xbb478946 ptep_xchg_direct +EXPORT_SYMBOL vmlinux 0xbb4f235b xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0xbb62e23b param_get_ushort +EXPORT_SYMBOL vmlinux 0xbb62fc47 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xbb6b4316 import_single_range +EXPORT_SYMBOL vmlinux 0xbb6e6f8e tcf_idr_create +EXPORT_SYMBOL vmlinux 0xbb9d0dc5 bin2hex +EXPORT_SYMBOL vmlinux 0xbbcd377f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xbbcd68fe udp6_seq_ops +EXPORT_SYMBOL vmlinux 0xbbe04bca end_page_writeback +EXPORT_SYMBOL vmlinux 0xbbe74090 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xbc183af8 qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0xbc25f7cc free_contig_range +EXPORT_SYMBOL vmlinux 0xbc271c98 arp_send +EXPORT_SYMBOL vmlinux 0xbc278c47 generic_writepages +EXPORT_SYMBOL vmlinux 0xbc3bdd36 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0xbc5f1944 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xbc7b42a5 tty_hangup +EXPORT_SYMBOL vmlinux 0xbc7bede7 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xbc99b11c key_reject_and_link +EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf +EXPORT_SYMBOL vmlinux 0xbcb71c08 scsi_alloc_sgtables +EXPORT_SYMBOL vmlinux 0xbcbb976e iunique +EXPORT_SYMBOL vmlinux 0xbcbdf60f kstrtos8 +EXPORT_SYMBOL vmlinux 0xbd05c697 do_clone_file_range +EXPORT_SYMBOL vmlinux 0xbd62a024 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xbd74bab6 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0xbd8a79e5 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xbd8d583e blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xbd935f38 mempool_init +EXPORT_SYMBOL vmlinux 0xbd998893 inet_shutdown +EXPORT_SYMBOL vmlinux 0xbd9a6acc proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xbd9f8e84 tcp_time_wait +EXPORT_SYMBOL vmlinux 0xbdbe015a tso_build_data +EXPORT_SYMBOL vmlinux 0xbdce27bc input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xbdfcb297 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xbe3b0c57 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state +EXPORT_SYMBOL vmlinux 0xbe61f3bd try_to_release_page +EXPORT_SYMBOL vmlinux 0xbe72514d vm_event_states +EXPORT_SYMBOL vmlinux 0xbe8bf5cd _copy_from_iter +EXPORT_SYMBOL vmlinux 0xbe8ea2a5 zap_page_range +EXPORT_SYMBOL vmlinux 0xbe975025 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xbe9ff464 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0xbead8496 passthru_features_check +EXPORT_SYMBOL vmlinux 0xbeb04605 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xbebc9ab1 devm_memunmap +EXPORT_SYMBOL vmlinux 0xbee810d5 ___pskb_trim +EXPORT_SYMBOL vmlinux 0xbef3bd9a down_trylock +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef53f33 scnprintf +EXPORT_SYMBOL vmlinux 0xbf159a86 skb_checksum +EXPORT_SYMBOL vmlinux 0xbf1ac1ff get_super_exclusive_thawed +EXPORT_SYMBOL vmlinux 0xbf216b40 posix_acl_valid +EXPORT_SYMBOL vmlinux 0xbf41ca0c unregister_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xbf45d17c sock_create +EXPORT_SYMBOL vmlinux 0xbf57f412 alloc_file_pseudo +EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init +EXPORT_SYMBOL vmlinux 0xbf8ee1ee inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xbf90062c pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfad395e ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff1fb3f sock_bindtoindex +EXPORT_SYMBOL vmlinux 0xbffdf2ed xfrm_register_type_offload +EXPORT_SYMBOL vmlinux 0xbffe7219 xa_clear_mark +EXPORT_SYMBOL vmlinux 0xc003c637 __strncpy_from_user +EXPORT_SYMBOL vmlinux 0xc025016c flow_keys_dissector +EXPORT_SYMBOL vmlinux 0xc034b555 raw3270_start_irq +EXPORT_SYMBOL vmlinux 0xc0386ac6 skb_append +EXPORT_SYMBOL vmlinux 0xc04ecc4b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xc06f0724 ZSTD_initDCtx +EXPORT_SYMBOL vmlinux 0xc0732d30 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0xc08a03e7 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xc08ae39a inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xc096e23d hdmi_drm_infoframe_init +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 +EXPORT_SYMBOL vmlinux 0xc0d5feee vfs_statx +EXPORT_SYMBOL vmlinux 0xc0e5ac87 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xc0e5e4e6 itcw_get_tcw +EXPORT_SYMBOL vmlinux 0xc0fd237c xxh32 +EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup +EXPORT_SYMBOL vmlinux 0xc107cac2 generic_setlease +EXPORT_SYMBOL vmlinux 0xc120caa6 diag_stat_inc +EXPORT_SYMBOL vmlinux 0xc1288e6a cdev_device_add +EXPORT_SYMBOL vmlinux 0xc129dd34 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xc1394dbd mod_virt_timer_periodic +EXPORT_SYMBOL vmlinux 0xc148b29f pcie_set_mps +EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq +EXPORT_SYMBOL vmlinux 0xc15cfe8b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict +EXPORT_SYMBOL vmlinux 0xc165ec22 dump_truncate +EXPORT_SYMBOL vmlinux 0xc1685013 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xc168d63e pci_free_host_bridge +EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xc17d6a4f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xc17f35fe xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xc18a0b4d block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc1a64320 __tracepoint_s390_cio_tsch +EXPORT_SYMBOL vmlinux 0xc1b6c9e4 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xc1cb44dc insert_inode_locked +EXPORT_SYMBOL vmlinux 0xc1cf53a4 __bforget +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1ec5ff5 sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0xc212f2ab prandom_bytes +EXPORT_SYMBOL vmlinux 0xc2336209 unix_gc_lock +EXPORT_SYMBOL vmlinux 0xc23d6149 __ip_options_compile +EXPORT_SYMBOL vmlinux 0xc2a03673 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xc2b6db74 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xc2b9116e __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc2dfde48 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2ec521d ip_fraglist_prepare +EXPORT_SYMBOL vmlinux 0xc2f24f87 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xc2f547bc find_vma +EXPORT_SYMBOL vmlinux 0xc306c3a8 page_frag_alloc +EXPORT_SYMBOL vmlinux 0xc30ea53e udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xc30f6d97 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr +EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc336a985 dqstats +EXPORT_SYMBOL vmlinux 0xc34268fb tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xc34cffe2 kstrtobool_from_user +EXPORT_SYMBOL vmlinux 0xc3505b5f __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc35e9288 devm_pci_remap_cfgspace +EXPORT_SYMBOL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer +EXPORT_SYMBOL vmlinux 0xc39b2574 nf_register_net_hooks +EXPORT_SYMBOL vmlinux 0xc39f88c3 dev_set_group +EXPORT_SYMBOL vmlinux 0xc3c28946 generic_fadvise +EXPORT_SYMBOL vmlinux 0xc3dfcc43 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xc3e45c23 tcp_req_err +EXPORT_SYMBOL vmlinux 0xc3ed6881 do_SAK +EXPORT_SYMBOL vmlinux 0xc3f51725 load_nls_default +EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xc43f5fc0 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc440a232 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc441cacb tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc470c1c6 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc47b60ac sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xc494dd4c pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0xc4ab8cd5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xc4b89140 tcp_connect +EXPORT_SYMBOL vmlinux 0xc4bd2be3 reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0xc4eee7d2 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xc4f254e9 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc4fe73e3 try_module_get +EXPORT_SYMBOL vmlinux 0xc5078337 input_free_device +EXPORT_SYMBOL vmlinux 0xc5128cc2 ip_sock_set_tos +EXPORT_SYMBOL vmlinux 0xc52c3618 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xc52fa09e md_bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xc537c9e1 jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0xc54657f7 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xc5521d50 sclp_register +EXPORT_SYMBOL vmlinux 0xc556a60f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xc562ed27 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xc57b41f2 ZSTD_decompress_usingDict +EXPORT_SYMBOL vmlinux 0xc57b8611 diag210 +EXPORT_SYMBOL vmlinux 0xc5850110 printk +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc599ad77 dma_fence_init +EXPORT_SYMBOL vmlinux 0xc59aac24 proto_register +EXPORT_SYMBOL vmlinux 0xc59fcdb8 build_skb_around +EXPORT_SYMBOL vmlinux 0xc5ad93b8 sie_exit +EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on +EXPORT_SYMBOL vmlinux 0xc5bd36a2 __frontswap_test +EXPORT_SYMBOL vmlinux 0xc5bead4b input_set_timestamp +EXPORT_SYMBOL vmlinux 0xc5d89c78 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0xc5e4d21d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource +EXPORT_SYMBOL vmlinux 0xc5ea039b sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xc5ed5990 tty_register_driver +EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last +EXPORT_SYMBOL vmlinux 0xc602c30d ll_rw_block +EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const +EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus +EXPORT_SYMBOL vmlinux 0xc61145a4 file_path +EXPORT_SYMBOL vmlinux 0xc6160ae8 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xc61e606e dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xc622ea97 stsi +EXPORT_SYMBOL vmlinux 0xc626606a flow_rule_alloc +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc65f46e4 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0xc66d919f dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xc67b891e dput +EXPORT_SYMBOL vmlinux 0xc687f0bf dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xc68d1057 netdev_alert +EXPORT_SYMBOL vmlinux 0xc6996f36 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xc6ae4bc6 mempool_exit +EXPORT_SYMBOL vmlinux 0xc6b443e8 up +EXPORT_SYMBOL vmlinux 0xc6c26aab abort_creds +EXPORT_SYMBOL vmlinux 0xc6c3f944 seq_putc +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6dcaa29 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key +EXPORT_SYMBOL vmlinux 0xc6fa94d6 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xc70a1a05 d_drop +EXPORT_SYMBOL vmlinux 0xc724a253 dentry_open +EXPORT_SYMBOL vmlinux 0xc7255bd7 tcp_mmap +EXPORT_SYMBOL vmlinux 0xc730a752 blk_mq_tagset_wait_completed_request +EXPORT_SYMBOL vmlinux 0xc74400d6 sk_capable +EXPORT_SYMBOL vmlinux 0xc74b2307 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xc77decf6 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7884d33 sk_common_release +EXPORT_SYMBOL vmlinux 0xc793df9b clear_inode +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c2745 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc7a24d76 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b5bc9e sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xc7bf988a ccw_device_tm_start +EXPORT_SYMBOL vmlinux 0xc7c1011d clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe +EXPORT_SYMBOL vmlinux 0xc7c89a3d qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xc8021fae alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xc816dad9 generic_update_time +EXPORT_SYMBOL vmlinux 0xc81e91a8 napi_busy_loop +EXPORT_SYMBOL vmlinux 0xc81f0fbd reuseport_add_sock +EXPORT_SYMBOL vmlinux 0xc8315e6a security_binder_transaction +EXPORT_SYMBOL vmlinux 0xc8315f78 ethtool_rx_flow_rule_create +EXPORT_SYMBOL vmlinux 0xc83e9361 dev_mc_init +EXPORT_SYMBOL vmlinux 0xc83f7bda kset_register +EXPORT_SYMBOL vmlinux 0xc840f71a d_find_alias +EXPORT_SYMBOL vmlinux 0xc8436317 inet_proto_csum_replace_by_diff +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc858a614 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc866c35b vlan_for_each +EXPORT_SYMBOL vmlinux 0xc86a6174 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xc86cc572 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals +EXPORT_SYMBOL vmlinux 0xc88a8918 down_interruptible +EXPORT_SYMBOL vmlinux 0xc88dc119 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8943c31 get_task_cred +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b705a9 sock_release +EXPORT_SYMBOL vmlinux 0xc8ba00a5 file_modified +EXPORT_SYMBOL vmlinux 0xc8d4f5ac sock_register +EXPORT_SYMBOL vmlinux 0xc9000363 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xc9137b9d rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xc9159f98 dma_fence_chain_init +EXPORT_SYMBOL vmlinux 0xc91a7738 fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0xc91c2329 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xc94fdebf __genradix_ptr +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc972449f mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0xc973079b __put_user_ns +EXPORT_SYMBOL vmlinux 0xc980c51e netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0xc98281d4 generic_write_end +EXPORT_SYMBOL vmlinux 0xc9a39434 xp_alloc +EXPORT_SYMBOL vmlinux 0xc9b58bf1 md_bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xc9c23ce1 freeze_super +EXPORT_SYMBOL vmlinux 0xc9ca7896 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xc9e60ada tcp_seq_stop +EXPORT_SYMBOL vmlinux 0xca07c4e2 input_register_handle +EXPORT_SYMBOL vmlinux 0xca0ef630 dev_uc_init +EXPORT_SYMBOL vmlinux 0xca16bcbc netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xca1ea2c7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free +EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function +EXPORT_SYMBOL vmlinux 0xca900837 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa267ad xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xcaa4280f jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xcaac2820 new_inode +EXPORT_SYMBOL vmlinux 0xcaae8207 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xcab80079 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xcad93254 __dec_node_page_state +EXPORT_SYMBOL vmlinux 0xcae3a07a sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xcaeaddeb dev_base_lock +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb006f86 set_posix_acl +EXPORT_SYMBOL vmlinux 0xcb2f6514 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xcb34a6e7 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xcb44e3d2 __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xcb56d1b6 xa_store +EXPORT_SYMBOL vmlinux 0xcb75580c genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xcb89d574 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xcb99eed8 d_set_d_op +EXPORT_SYMBOL vmlinux 0xcba4abe3 list_sort +EXPORT_SYMBOL vmlinux 0xcba755d7 blk_put_queue +EXPORT_SYMBOL vmlinux 0xcbb15b17 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xcbbe7950 sk_free +EXPORT_SYMBOL vmlinux 0xcbbec2c7 seg6_hmac_info_add +EXPORT_SYMBOL vmlinux 0xcbc7a09c tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbe7ff0c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xcc103b64 register_netdev +EXPORT_SYMBOL vmlinux 0xcc140173 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class +EXPORT_SYMBOL vmlinux 0xcc3dd611 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc460738 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xcc4b7dc4 __find_get_block +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc52d39a __quota_error +EXPORT_SYMBOL vmlinux 0xcc5c7ada param_ops_byte +EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock +EXPORT_SYMBOL vmlinux 0xcc619cbb pci_disable_msix +EXPORT_SYMBOL vmlinux 0xcc6c953c xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xcc833e90 kernel_write +EXPORT_SYMBOL vmlinux 0xcc92226c seq_pad +EXPORT_SYMBOL vmlinux 0xcca94125 kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0xccb0f97e xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xccb491e8 bsearch +EXPORT_SYMBOL vmlinux 0xccbc6132 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc4001d gen_pool_fixed_alloc +EXPORT_SYMBOL vmlinux 0xccc758d8 nla_policy_len +EXPORT_SYMBOL vmlinux 0xcccdb0cc dev_set_alias +EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xcce7b3c7 pci_get_slot +EXPORT_SYMBOL vmlinux 0xcce8f048 igrab +EXPORT_SYMBOL vmlinux 0xcced28f8 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics +EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd0ab589 dev_printk +EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd462bc0 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xcd46a52a security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0xcd6e6f26 register_md_personality +EXPORT_SYMBOL vmlinux 0xcd7220d6 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xcd8d6d43 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xcd9332a9 security_inet_conn_established +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev +EXPORT_SYMBOL vmlinux 0xce0c1f34 dfltcc_deflate +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6fd352 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xce7bfe70 vm_brk +EXPORT_SYMBOL vmlinux 0xce8b41eb mem_section +EXPORT_SYMBOL vmlinux 0xce90dd03 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xcea1255b notify_change +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcebc7523 page_cache_prev_miss +EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xcef11951 from_kprojid +EXPORT_SYMBOL vmlinux 0xcf000c7e hdmi_infoframe_check +EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xcf295f6a complete_request_key +EXPORT_SYMBOL vmlinux 0xcf428306 simple_statfs +EXPORT_SYMBOL vmlinux 0xcf467bac consume_skb +EXPORT_SYMBOL vmlinux 0xcf4b8a45 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xcf4e5ad1 follow_down_one +EXPORT_SYMBOL vmlinux 0xcf63c77b pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xcf662d68 iterate_fd +EXPORT_SYMBOL vmlinux 0xcf6f9c35 tcf_block_put_ext +EXPORT_SYMBOL vmlinux 0xcf83b268 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xcf8bf0ce dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0xcf90dd35 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xcf9694df eth_gro_receive +EXPORT_SYMBOL vmlinux 0xcfb20994 lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcfc87cde end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xcfe5e6f0 mpage_readpage +EXPORT_SYMBOL vmlinux 0xd0152d01 migrate_page_states +EXPORT_SYMBOL vmlinux 0xd02f30a2 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xd0326e2b arp_create +EXPORT_SYMBOL vmlinux 0xd032bbb1 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xd03f6119 take_dentry_name_snapshot +EXPORT_SYMBOL vmlinux 0xd042475c qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xd04bed72 peernet2id +EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net +EXPORT_SYMBOL vmlinux 0xd0511fbb sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function +EXPORT_SYMBOL vmlinux 0xd0661fb3 vscnprintf +EXPORT_SYMBOL vmlinux 0xd06698e3 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0xd06e4839 arch_spin_trylock_retry +EXPORT_SYMBOL vmlinux 0xd0782c49 param_get_int +EXPORT_SYMBOL vmlinux 0xd07bc88c scsi_ioctl +EXPORT_SYMBOL vmlinux 0xd07d6b16 inet6_protos +EXPORT_SYMBOL vmlinux 0xd0859beb pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xd0a08451 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0e03b14 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xd0f67b36 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0xd1277fb6 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xd138953a neigh_app_ns +EXPORT_SYMBOL vmlinux 0xd13cdbb3 read_cache_page +EXPORT_SYMBOL vmlinux 0xd1470ff7 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xd1782ede fs_param_is_blob +EXPORT_SYMBOL vmlinux 0xd17de455 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1a97b8c xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xd1b4b419 tcw_get_intrg +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1f152ad kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0xd1fcc1f6 __frontswap_store +EXPORT_SYMBOL vmlinux 0xd221d7b5 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd2232450 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xd229b7de soft_cursor +EXPORT_SYMBOL vmlinux 0xd248b8de dma_direct_unmap_page +EXPORT_SYMBOL vmlinux 0xd25846c7 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd261244b from_kuid +EXPORT_SYMBOL vmlinux 0xd2632533 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xd273a05e debug_unregister_view +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2ace015 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xd2d814fc generic_copy_file_range +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd34d2b82 scmd_printk +EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0xd3561352 swake_up_all +EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xd35dd7f3 vprintk_emit +EXPORT_SYMBOL vmlinux 0xd35e2e5d register_netdevice_notifier_net +EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 +EXPORT_SYMBOL vmlinux 0xd39cb3ee open_with_fake_path +EXPORT_SYMBOL vmlinux 0xd3a73aac tty_register_device +EXPORT_SYMBOL vmlinux 0xd3ae96fa fs_param_is_path +EXPORT_SYMBOL vmlinux 0xd3af979c memdup_user +EXPORT_SYMBOL vmlinux 0xd3b25035 super_setup_bdi_name +EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear +EXPORT_SYMBOL vmlinux 0xd3fdffc1 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd402d8e2 thaw_bdev +EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xd40f6f36 __jhash_string +EXPORT_SYMBOL vmlinux 0xd41f5402 cpumask_next +EXPORT_SYMBOL vmlinux 0xd4442037 configfs_depend_item +EXPORT_SYMBOL vmlinux 0xd462d7f1 give_up_console +EXPORT_SYMBOL vmlinux 0xd46d54c0 devm_register_reboot_notifier +EXPORT_SYMBOL vmlinux 0xd48f69c8 tcw_get_tsb +EXPORT_SYMBOL vmlinux 0xd4952cc0 cpumask_next_wrap +EXPORT_SYMBOL vmlinux 0xd4a10570 fs_param_is_s32 +EXPORT_SYMBOL vmlinux 0xd4a40f67 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xd4a7ea9e bdgrab +EXPORT_SYMBOL vmlinux 0xd4b01091 node_states +EXPORT_SYMBOL vmlinux 0xd4b8acb7 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd4bf9a13 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xd4c19593 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xd4c8c54e dma_fence_chain_ops +EXPORT_SYMBOL vmlinux 0xd4f751a7 mini_qdisc_pair_swap +EXPORT_SYMBOL vmlinux 0xd4f88a20 inode_init_owner +EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xd50642f2 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xd518b841 register_mii_tstamp_controller +EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd53a9084 put_cmsg +EXPORT_SYMBOL vmlinux 0xd5402a0c show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0xd54f1b83 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xd5545cde __close_fd +EXPORT_SYMBOL vmlinux 0xd5635a78 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd58e1890 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xd59b638f simple_readpage +EXPORT_SYMBOL vmlinux 0xd59cc718 _dev_warn +EXPORT_SYMBOL vmlinux 0xd5a63cd7 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xd5b2002d netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state +EXPORT_SYMBOL vmlinux 0xd5d54ea3 vfs_symlink +EXPORT_SYMBOL vmlinux 0xd5d790f2 bdev_read_only +EXPORT_SYMBOL vmlinux 0xd5e0076e adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xd5e90454 ap_domain_index +EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL vmlinux 0xd607ba64 user_path_create +EXPORT_SYMBOL vmlinux 0xd61d452a pci_find_resource +EXPORT_SYMBOL vmlinux 0xd63286fa user_revoke +EXPORT_SYMBOL vmlinux 0xd6632689 override_creds +EXPORT_SYMBOL vmlinux 0xd666a588 smp_ctl_clear_bit +EXPORT_SYMBOL vmlinux 0xd66be194 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd6872e7b set_wb_congested +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68a01b8 xa_erase +EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource +EXPORT_SYMBOL vmlinux 0xd69b3c98 utf8_strncasecmp +EXPORT_SYMBOL vmlinux 0xd69d0f51 kbd_ascebc +EXPORT_SYMBOL vmlinux 0xd69d1f4f kfree_skb +EXPORT_SYMBOL vmlinux 0xd6cd39f1 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd6e8a587 kobject_get +EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f61cb2 __register_binfmt +EXPORT_SYMBOL vmlinux 0xd6f9562a pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xd6fb8a7c ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced +EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe +EXPORT_SYMBOL vmlinux 0xd71941d1 page_readlink +EXPORT_SYMBOL vmlinux 0xd733570f rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd74fa0d5 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xd756fadd skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xd773dedf inet6_getname +EXPORT_SYMBOL vmlinux 0xd783a877 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xd790bd5d pcim_set_mwi +EXPORT_SYMBOL vmlinux 0xd7a066c8 __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0xd7b4eed9 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0xd7c09c7a compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xd7c9378a end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xd7cd002a kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete +EXPORT_SYMBOL vmlinux 0xd7d9624a blk_integrity_register +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7f5a54c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd81621cf raw3270_deactivate_view +EXPORT_SYMBOL vmlinux 0xd827fff3 memremap +EXPORT_SYMBOL vmlinux 0xd830a53d bdi_register +EXPORT_SYMBOL vmlinux 0xd83849e2 ZSTD_getDictID_fromFrame +EXPORT_SYMBOL vmlinux 0xd83e5d90 pci_iomap_wc_range +EXPORT_SYMBOL vmlinux 0xd84c3c5f proc_create_data +EXPORT_SYMBOL vmlinux 0xd84fb196 dquot_transfer +EXPORT_SYMBOL vmlinux 0xd8602b6a tun_is_xdp_frame +EXPORT_SYMBOL vmlinux 0xd86382d1 dns_query +EXPORT_SYMBOL vmlinux 0xd8827a7c inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8e74857 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xd8ead41b inet_accept +EXPORT_SYMBOL vmlinux 0xd8fcda72 cpcmd +EXPORT_SYMBOL vmlinux 0xd90e3db2 submit_bio +EXPORT_SYMBOL vmlinux 0xd915fba5 param_get_ullong +EXPORT_SYMBOL vmlinux 0xd9189274 put_ipc_ns +EXPORT_SYMBOL vmlinux 0xd91e7071 bioset_init_from_src +EXPORT_SYMBOL vmlinux 0xd923bf8a invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd926e599 __xa_erase +EXPORT_SYMBOL vmlinux 0xd94b6609 scsi_host_put +EXPORT_SYMBOL vmlinux 0xd952c500 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xd96a3578 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xd96de8cb __sysfs_match_string +EXPORT_SYMBOL vmlinux 0xd9773e9e mount_bdev +EXPORT_SYMBOL vmlinux 0xd9819d4a blk_execute_rq +EXPORT_SYMBOL vmlinux 0xd983e0f5 config_item_get +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99035de __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xd9b3f97d console_devno +EXPORT_SYMBOL vmlinux 0xd9ce437b request_key_tag +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox +EXPORT_SYMBOL vmlinux 0xd9f315dd alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xda02dc7b d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda48e902 ap_queue_message +EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType +EXPORT_SYMBOL vmlinux 0xda746e26 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xda7be261 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xda872864 security_locked_down +EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve +EXPORT_SYMBOL vmlinux 0xda92a282 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xdaa3e3f5 irq_set_chip +EXPORT_SYMBOL vmlinux 0xdaa90d98 add_watch_to_object +EXPORT_SYMBOL vmlinux 0xdaad5b0a compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xdabe5729 inet6_offloads +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac97957 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xdad1117a tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xdad355f2 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xdad92143 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xdae162cb string_unescape +EXPORT_SYMBOL vmlinux 0xdb0702c2 tcf_idrinfo_destroy +EXPORT_SYMBOL vmlinux 0xdb2a1813 __put_page +EXPORT_SYMBOL vmlinux 0xdb4ede98 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7c69a0 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xdbbad0bd arp_tbl +EXPORT_SYMBOL vmlinux 0xdbd3fb2d iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource +EXPORT_SYMBOL vmlinux 0xdbf9b339 __dev_set_mtu +EXPORT_SYMBOL vmlinux 0xdc0c6f97 fscrypt_fname_disk_to_usr +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1a59a2 nvm_unregister_tgt_type +EXPORT_SYMBOL vmlinux 0xdc1fd080 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv +EXPORT_SYMBOL vmlinux 0xdc4fa154 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xdc56ed5d locks_free_lock +EXPORT_SYMBOL vmlinux 0xdc6ff2c7 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xdc80f44c would_dump +EXPORT_SYMBOL vmlinux 0xdc810293 xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0xdc97bb8a sock_bind_add +EXPORT_SYMBOL vmlinux 0xdca71bcd dma_direct_map_sg +EXPORT_SYMBOL vmlinux 0xdcb7e693 check_disk_change +EXPORT_SYMBOL vmlinux 0xdd1cdbcb add_wait_queue +EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create +EXPORT_SYMBOL vmlinux 0xdd38b521 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xdd4bffbf gen_pool_add_owner +EXPORT_SYMBOL vmlinux 0xdd69a95a starget_for_each_device +EXPORT_SYMBOL vmlinux 0xdd6f5eb0 current_in_userns +EXPORT_SYMBOL vmlinux 0xdd6f8a6e param_ops_charp +EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd8c3113 sock_set_sndtimeo +EXPORT_SYMBOL vmlinux 0xddab6a01 registered_fb +EXPORT_SYMBOL vmlinux 0xdde61929 skb_flow_dissect_ct +EXPORT_SYMBOL vmlinux 0xddfb80da vfs_unlink +EXPORT_SYMBOL vmlinux 0xde07b65a netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xde0bdcff memset +EXPORT_SYMBOL vmlinux 0xde10f536 proc_douintvec +EXPORT_SYMBOL vmlinux 0xde2d28f3 param_ops_bint +EXPORT_SYMBOL vmlinux 0xde30edc7 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats +EXPORT_SYMBOL vmlinux 0xde639e79 param_set_copystring +EXPORT_SYMBOL vmlinux 0xde6aa47c send_sig_info +EXPORT_SYMBOL vmlinux 0xde73eadc tcp_seq_start +EXPORT_SYMBOL vmlinux 0xde8a415c xor_block_xc +EXPORT_SYMBOL vmlinux 0xdeb41158 netdev_crit +EXPORT_SYMBOL vmlinux 0xdeba631a flow_block_cb_free +EXPORT_SYMBOL vmlinux 0xdebe5754 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xdeda2ae2 tcw_get_data +EXPORT_SYMBOL vmlinux 0xdee26594 __lock_page +EXPORT_SYMBOL vmlinux 0xdef61811 proc_set_user +EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4928ea dquot_acquire +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf6f6001 scsi_vpd_lun_id +EXPORT_SYMBOL vmlinux 0xdf702668 __d_drop +EXPORT_SYMBOL vmlinux 0xdf768bbc _dev_err +EXPORT_SYMBOL vmlinux 0xdf8b6dd7 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies +EXPORT_SYMBOL vmlinux 0xdf95bf5c read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xdf98871d airq_iv_release +EXPORT_SYMBOL vmlinux 0xdf99ff37 find_get_pages_range_tag +EXPORT_SYMBOL vmlinux 0xdfa9acca smp_cpu_mtid +EXPORT_SYMBOL vmlinux 0xdfadd3a4 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xdfb44182 filp_open +EXPORT_SYMBOL vmlinux 0xdfb95d02 input_get_timestamp +EXPORT_SYMBOL vmlinux 0xdfc01958 ns_capable +EXPORT_SYMBOL vmlinux 0xdfcc992c current_work +EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi +EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes +EXPORT_SYMBOL vmlinux 0xe0158858 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xe0241c04 raw3270_activate_view +EXPORT_SYMBOL vmlinux 0xe02f4e13 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xe03232ad tty_port_close_start +EXPORT_SYMBOL vmlinux 0xe038e2ce blkdev_put +EXPORT_SYMBOL vmlinux 0xe038e784 dma_mmap_attrs +EXPORT_SYMBOL vmlinux 0xe055aa68 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xe059f75c blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xe07279e8 blk_mq_rq_cpu +EXPORT_SYMBOL vmlinux 0xe0875eb1 kstrtobool +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bc4fb2 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xe0e4ce93 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xe0eaa6c8 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xe0fbba91 build_skb +EXPORT_SYMBOL vmlinux 0xe100f6f2 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xe10d06b8 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xe123a70f netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xe123f3d9 dma_fence_release +EXPORT_SYMBOL vmlinux 0xe129a5b9 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xe12d7afc dst_release +EXPORT_SYMBOL vmlinux 0xe139a352 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xe13af26f sclp_pci_deconfigure +EXPORT_SYMBOL vmlinux 0xe146b6b8 neigh_xmit +EXPORT_SYMBOL vmlinux 0xe146d251 debug_unregister +EXPORT_SYMBOL vmlinux 0xe1593f3a inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe1a41658 d_instantiate_new +EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1bfe25a sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1e7e40c rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xe1f724f0 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xe237e56a sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe251bdb2 __alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe255e728 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xe257d3f3 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xe259ea2c tcp_splice_read +EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0xe2740e56 ZSTD_getFrameContentSize +EXPORT_SYMBOL vmlinux 0xe28a21ca skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xe28da80b tccb_add_dcw +EXPORT_SYMBOL vmlinux 0xe290e9db input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe298ff79 neigh_carrier_down +EXPORT_SYMBOL vmlinux 0xe29d2d02 __genradix_ptr_alloc +EXPORT_SYMBOL vmlinux 0xe2add629 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2fd1870 vm_map_pages_zero +EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init +EXPORT_SYMBOL vmlinux 0xe30be315 hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe320f2d6 ilookup5 +EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest +EXPORT_SYMBOL vmlinux 0xe338693e xdp_get_umem_from_qid +EXPORT_SYMBOL vmlinux 0xe347fd64 vfs_dedupe_file_range +EXPORT_SYMBOL vmlinux 0xe3518862 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xe3520d9f neigh_seq_start +EXPORT_SYMBOL vmlinux 0xe35fb609 kmemdup +EXPORT_SYMBOL vmlinux 0xe37ec6cb sk_ns_capable +EXPORT_SYMBOL vmlinux 0xe3844159 bio_free_pages +EXPORT_SYMBOL vmlinux 0xe3bc3b3a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xe3d70645 raw3270_request_set_cmd +EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0xe3ec3247 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 +EXPORT_SYMBOL vmlinux 0xe402eca3 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe40777ea nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xe411fee1 kobject_init +EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 +EXPORT_SYMBOL vmlinux 0xe43d9ab2 slash_name +EXPORT_SYMBOL vmlinux 0xe43de194 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe441e95a refcount_dec_not_one +EXPORT_SYMBOL vmlinux 0xe44ef1d7 tcf_idr_create_from_flags +EXPORT_SYMBOL vmlinux 0xe45454ec make_kgid +EXPORT_SYMBOL vmlinux 0xe45aa266 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xe4a250b6 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0xe4a6c97d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xe4afcdb2 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xe4b0680d buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xe4dd11d8 seq_write +EXPORT_SYMBOL vmlinux 0xe5094832 page_table_allocate_pgste +EXPORT_SYMBOL vmlinux 0xe50ae128 xa_set_mark +EXPORT_SYMBOL vmlinux 0xe5158830 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe524e3e2 bcmp +EXPORT_SYMBOL vmlinux 0xe5328e43 udp_skb_destructor +EXPORT_SYMBOL vmlinux 0xe53f2d0e alloc_pages_current +EXPORT_SYMBOL vmlinux 0xe5554bb1 dup_iter +EXPORT_SYMBOL vmlinux 0xe55ca574 dma_resv_add_shared_fence +EXPORT_SYMBOL vmlinux 0xe56b0d0f stsch +EXPORT_SYMBOL vmlinux 0xe5768a47 inet_gso_segment +EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet +EXPORT_SYMBOL vmlinux 0xe583c517 airq_iv_scan +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end +EXPORT_SYMBOL vmlinux 0xe59c3b73 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xe5bf95b7 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ea6124 ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0xe5eca3fb d_add_ci +EXPORT_SYMBOL vmlinux 0xe5fc4bfa netlink_set_err +EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any +EXPORT_SYMBOL vmlinux 0xe61ac89d dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe61b7f5f register_adapter_interrupt +EXPORT_SYMBOL vmlinux 0xe61c2bfb flow_rule_match_enc_ports +EXPORT_SYMBOL vmlinux 0xe61f1732 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xe643d453 tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0xe656ad1e rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xe6576c94 simple_getattr +EXPORT_SYMBOL vmlinux 0xe6589ee0 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe65fe815 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xe67b96ff __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0xe6a3e2ed dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xe6c4dd71 set_blocksize +EXPORT_SYMBOL vmlinux 0xe6eed674 md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xe6f1486d dql_reset +EXPORT_SYMBOL vmlinux 0xe709eac7 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0xe713a97a irq_subclass_unregister +EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf +EXPORT_SYMBOL vmlinux 0xe75d2b95 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xe78d2dad config_group_find_item +EXPORT_SYMBOL vmlinux 0xe7952242 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xe796f19a hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe798236d jiffies +EXPORT_SYMBOL vmlinux 0xe7c83575 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xe7c8a644 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xe7d3c4c1 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d4f85f ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xe7e7064b bio_split +EXPORT_SYMBOL vmlinux 0xe7f77d2e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xe7fa2b45 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xe8061d4b sock_edemux +EXPORT_SYMBOL vmlinux 0xe8109520 set_page_dirty +EXPORT_SYMBOL vmlinux 0xe827742d xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xe845537f nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0xe846eb19 __close_fd_get_file +EXPORT_SYMBOL vmlinux 0xe85c28f1 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xe861eef7 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xe8812810 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xe8b59502 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xe8ba125d kmemdup_nul +EXPORT_SYMBOL vmlinux 0xe8bce928 cdev_device_del +EXPORT_SYMBOL vmlinux 0xe8bdcf9d configfs_register_default_group +EXPORT_SYMBOL vmlinux 0xe8c2513b pci_enable_msi +EXPORT_SYMBOL vmlinux 0xe8cec629 bio_put +EXPORT_SYMBOL vmlinux 0xe8d13ebd seq_vprintf +EXPORT_SYMBOL vmlinux 0xe8d499d1 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xe8de8a80 dma_fence_signal_locked +EXPORT_SYMBOL vmlinux 0xe8e96d11 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xe9020709 trace_seq_hex_dump +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe944aa2c security_d_instantiate +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95ca039 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0xe9a25908 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe9c58a09 tcw_finalize +EXPORT_SYMBOL vmlinux 0xe9e864db kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0xe9ea62ba udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xe9ec4711 tty_set_operations +EXPORT_SYMBOL vmlinux 0xe9f390f1 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea156a0e dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xea17194a dma_free_attrs +EXPORT_SYMBOL vmlinux 0xea1b8cf5 mpage_writepages +EXPORT_SYMBOL vmlinux 0xea2c127f tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0xea3471e4 skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int +EXPORT_SYMBOL vmlinux 0xea4d7c80 dev_get_by_napi_id +EXPORT_SYMBOL vmlinux 0xea6c2eef __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled +EXPORT_SYMBOL vmlinux 0xea80dfe1 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xea872313 find_next_bit_inv +EXPORT_SYMBOL vmlinux 0xea8fa3e8 scsi_compat_ioctl +EXPORT_SYMBOL vmlinux 0xea94b763 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xeac025dc dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xeac3b1ed locks_remove_posix +EXPORT_SYMBOL vmlinux 0xeacaee7e inode_init_once +EXPORT_SYMBOL vmlinux 0xead58fb9 print_hex_dump +EXPORT_SYMBOL vmlinux 0xeadc3727 __block_write_begin +EXPORT_SYMBOL vmlinux 0xeadead63 param_set_ullong +EXPORT_SYMBOL vmlinux 0xeadeeecc padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xeae7ddac delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xeaf268af configfs_register_group +EXPORT_SYMBOL vmlinux 0xeaf5ebcb inode_needs_sync +EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeb033c87 dev_warn_hash +EXPORT_SYMBOL vmlinux 0xeb0a849b compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xeb28ac06 complete +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb6768de dev_activate +EXPORT_SYMBOL vmlinux 0xeb6f43a6 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xeb966c2f register_mii_timestamper +EXPORT_SYMBOL vmlinux 0xeb9dc55b ap_owned_by_def_drv +EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order +EXPORT_SYMBOL vmlinux 0xebbf1dba strncasecmp +EXPORT_SYMBOL vmlinux 0xebc2017b scsi_register_driver +EXPORT_SYMBOL vmlinux 0xebcb2554 raw3270_wait_queue +EXPORT_SYMBOL vmlinux 0xebe3cfe8 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xebfb7207 ap_parse_mask_str +EXPORT_SYMBOL vmlinux 0xec122c83 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xec1dbcba md_bitmap_sync_with_cluster +EXPORT_SYMBOL vmlinux 0xec237e4f xps_needed +EXPORT_SYMBOL vmlinux 0xec27c4d1 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xec4177ad dev_change_proto_down +EXPORT_SYMBOL vmlinux 0xec461831 fb_blank +EXPORT_SYMBOL vmlinux 0xec579ce6 __blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xec58d09b netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xec6113f1 up_read +EXPORT_SYMBOL vmlinux 0xec61c614 xa_destroy +EXPORT_SYMBOL vmlinux 0xec6d13b3 pmdp_xchg_lazy +EXPORT_SYMBOL vmlinux 0xec9702e8 brioctl_set +EXPORT_SYMBOL vmlinux 0xec97d4c1 config_group_init_type_name +EXPORT_SYMBOL vmlinux 0xeca52c6e input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xecd5817f __cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xecd923e3 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece9a6a4 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xecef209a nobh_writepage +EXPORT_SYMBOL vmlinux 0xecf3285c __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xecf4fb88 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xecfc63e5 no_llseek +EXPORT_SYMBOL vmlinux 0xecfd9c31 block_commit_write +EXPORT_SYMBOL vmlinux 0xed583171 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xed62a108 md_done_sync +EXPORT_SYMBOL vmlinux 0xed6575cc tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xed665b48 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xed6b6800 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0xed789183 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xeda23940 ccw_device_set_options_mask +EXPORT_SYMBOL vmlinux 0xeda26c80 fwnode_irq_get +EXPORT_SYMBOL vmlinux 0xedb80e91 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbeb619 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc31441 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xedc4b0df pci_assign_resource +EXPORT_SYMBOL vmlinux 0xedd29d44 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xede434c8 ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0xede9d4ad d_path +EXPORT_SYMBOL vmlinux 0xedf13823 vfs_parse_fs_param +EXPORT_SYMBOL vmlinux 0xee08cada iucv_message_purge +EXPORT_SYMBOL vmlinux 0xee1825c3 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode +EXPORT_SYMBOL vmlinux 0xee596ade cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9db006 pci_iounmap +EXPORT_SYMBOL vmlinux 0xeeec5f67 qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0xeeefc484 bdput +EXPORT_SYMBOL vmlinux 0xeef09cb8 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xeef264cc jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xef3f2e44 seq_read +EXPORT_SYMBOL vmlinux 0xef45d32c __kfifo_init +EXPORT_SYMBOL vmlinux 0xef52127e __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xef64c92b security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xef7c3319 vmf_insert_pfn +EXPORT_SYMBOL vmlinux 0xef9bd1e3 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xefa09e53 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xefa6ad50 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xefabc9b2 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xefaf2e4f tcf_queue_work +EXPORT_SYMBOL vmlinux 0xefc5b8cd __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xefc67050 __cpu_active_mask +EXPORT_SYMBOL vmlinux 0xefd30512 __cpuhp_setup_state +EXPORT_SYMBOL vmlinux 0xeff0fe4c kbd_keycode +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init +EXPORT_SYMBOL vmlinux 0xf012acae fb_set_suspend +EXPORT_SYMBOL vmlinux 0xf021d489 device_get_mac_address +EXPORT_SYMBOL vmlinux 0xf03427f8 up_write +EXPORT_SYMBOL vmlinux 0xf039e793 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf047c244 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xf04cf205 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xf05c64f8 iucv_path_connect +EXPORT_SYMBOL vmlinux 0xf07f912a fb_show_logo +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf092c50f f_setown +EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf0b0d670 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xf0f08113 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xf0fc9aa8 sclp_cpi_set_data +EXPORT_SYMBOL vmlinux 0xf101e08d prepare_creds +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf1176539 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf13143f2 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf14b6c93 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xf15f3b41 idr_get_next +EXPORT_SYMBOL vmlinux 0xf1707b5a devm_release_resource +EXPORT_SYMBOL vmlinux 0xf172b124 get_mem_cgroup_from_page +EXPORT_SYMBOL vmlinux 0xf1863a4b devm_memremap +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19db21b napi_gro_receive +EXPORT_SYMBOL vmlinux 0xf19e7338 unregister_external_irq +EXPORT_SYMBOL vmlinux 0xf1ca5aac fs_param_is_u32 +EXPORT_SYMBOL vmlinux 0xf1d00628 __cpuhp_remove_state +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e046cc panic +EXPORT_SYMBOL vmlinux 0xf1e7ac42 netdev_change_features +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ef1124 pci_choose_state +EXPORT_SYMBOL vmlinux 0xf1ef6e3e udp_pre_connect +EXPORT_SYMBOL vmlinux 0xf1f591a2 ccw_device_get_ciw +EXPORT_SYMBOL vmlinux 0xf1f5b850 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xf20af3d9 refcount_dec_and_lock +EXPORT_SYMBOL vmlinux 0xf20b325b md_check_recovery +EXPORT_SYMBOL vmlinux 0xf220997e seg6_hmac_validate_skb +EXPORT_SYMBOL vmlinux 0xf2215f74 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xf2231394 security_cred_getsecid +EXPORT_SYMBOL vmlinux 0xf224ad48 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf245bd51 set_bh_page +EXPORT_SYMBOL vmlinux 0xf249d081 path_put +EXPORT_SYMBOL vmlinux 0xf25c027b md_cluster_ops +EXPORT_SYMBOL vmlinux 0xf26413c9 sock_cmsg_send +EXPORT_SYMBOL vmlinux 0xf2656ffb path_nosuid +EXPORT_SYMBOL vmlinux 0xf266d1a9 tcp_sock_set_quickack +EXPORT_SYMBOL vmlinux 0xf280df4c pci_select_bars +EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 +EXPORT_SYMBOL vmlinux 0xf2910761 disk_end_io_acct +EXPORT_SYMBOL vmlinux 0xf2a038be setattr_prepare +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c60018 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xf2c608ed bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts +EXPORT_SYMBOL vmlinux 0xf2eaba55 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xf2fd53a8 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update +EXPORT_SYMBOL vmlinux 0xf312c130 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf316111b pagecache_write_end +EXPORT_SYMBOL vmlinux 0xf31c0d52 ioremap +EXPORT_SYMBOL vmlinux 0xf32866d1 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0xf32d0516 __scm_destroy +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3440075 kthread_stop +EXPORT_SYMBOL vmlinux 0xf34581d0 pci_pme_active +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349ef12 tty_check_change +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf353ade8 vfs_get_super +EXPORT_SYMBOL vmlinux 0xf3661288 dev_get_mac_address +EXPORT_SYMBOL vmlinux 0xf367cc3a md_handle_request +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest +EXPORT_SYMBOL vmlinux 0xf3b74f79 __iucv_message_send +EXPORT_SYMBOL vmlinux 0xf3b8afab get_cached_acl +EXPORT_SYMBOL vmlinux 0xf3cec0e8 __scm_send +EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf4076cf2 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xf408f68e pin_user_pages_locked +EXPORT_SYMBOL vmlinux 0xf417f0a4 unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0xf425eaeb __nla_reserve_64bit +EXPORT_SYMBOL vmlinux 0xf4285d0b mutex_trylock_recursive +EXPORT_SYMBOL vmlinux 0xf42a3dc4 tty_port_put +EXPORT_SYMBOL vmlinux 0xf4307158 tcp_ld_RTO_revert +EXPORT_SYMBOL vmlinux 0xf43725fb s390_arch_random_counter +EXPORT_SYMBOL vmlinux 0xf43e29e6 __kfree_skb +EXPORT_SYMBOL vmlinux 0xf44a904a net_ns_barrier +EXPORT_SYMBOL vmlinux 0xf4546c5f blk_queue_virt_boundary +EXPORT_SYMBOL vmlinux 0xf46870f4 __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48a8a64 skb_copy +EXPORT_SYMBOL vmlinux 0xf49d84b8 vfs_tmpfile +EXPORT_SYMBOL vmlinux 0xf4b2b86e cgroup_bpf_enabled_key +EXPORT_SYMBOL vmlinux 0xf4b3d297 ns_capable_setid +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4bea299 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xf4c9af4c inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xf4d3a9d1 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4dc0493 vfs_iter_read +EXPORT_SYMBOL vmlinux 0xf4e08eef pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f1d73f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xf4fc4d9f get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xf531ab51 fscrypt_ioctl_get_policy +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf542f290 raw_copy_from_user +EXPORT_SYMBOL vmlinux 0xf55059e6 page_pool_alloc_pages +EXPORT_SYMBOL vmlinux 0xf550909d utf8_validate +EXPORT_SYMBOL vmlinux 0xf550a29e blk_mq_delay_run_hw_queue +EXPORT_SYMBOL vmlinux 0xf552f3a4 dma_dummy_ops +EXPORT_SYMBOL vmlinux 0xf581b36e ilookup +EXPORT_SYMBOL vmlinux 0xf5888b65 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xf598d580 __break_lease +EXPORT_SYMBOL vmlinux 0xf59a5417 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0xf5a54b0b raw3270_find_view +EXPORT_SYMBOL vmlinux 0xf5b06991 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 +EXPORT_SYMBOL vmlinux 0xf5f2c541 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xf5f91f8f wait_for_completion +EXPORT_SYMBOL vmlinux 0xf5f96fd5 seq_dentry +EXPORT_SYMBOL vmlinux 0xf6042bbd inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xf60ffa57 dcb_setapp +EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 +EXPORT_SYMBOL vmlinux 0xf656431e fscrypt_encrypt_pagecache_blocks +EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module +EXPORT_SYMBOL vmlinux 0xf67ae62d key_alloc +EXPORT_SYMBOL vmlinux 0xf680a3b4 ap_queue_init_reply +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf683e9be tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf685cc71 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0xf699f364 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xf6ae148f ap_cancel_message +EXPORT_SYMBOL vmlinux 0xf6b72c67 netdev_info +EXPORT_SYMBOL vmlinux 0xf6c25147 msi_desc_to_pci_dev +EXPORT_SYMBOL vmlinux 0xf6dfbf5c iget_failed +EXPORT_SYMBOL vmlinux 0xf6eb3245 proc_create_seq_private +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier +EXPORT_SYMBOL vmlinux 0xf739f061 __f_setown +EXPORT_SYMBOL vmlinux 0xf74300d7 arch_vcpu_is_preempted +EXPORT_SYMBOL vmlinux 0xf74d82c4 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76de5c1 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xf76f042a watchdog_register_governor +EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check +EXPORT_SYMBOL vmlinux 0xf7a3df6d inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xf7a596de ZSTD_initDDict +EXPORT_SYMBOL vmlinux 0xf7a6e088 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xf7b92217 utf8_casefold +EXPORT_SYMBOL vmlinux 0xf7bb49e1 kill_fasync +EXPORT_SYMBOL vmlinux 0xf7c64b4c vfs_iocb_iter_write +EXPORT_SYMBOL vmlinux 0xf7cee613 page_pool_create +EXPORT_SYMBOL vmlinux 0xf7d69bff __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf7d71918 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0xf7d8a85c compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xf7e0b830 neigh_for_each +EXPORT_SYMBOL vmlinux 0xf7f10c32 key_unlink +EXPORT_SYMBOL vmlinux 0xf7fe820d scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf830b5d3 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xf83ba732 blk_rq_append_bio +EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key +EXPORT_SYMBOL vmlinux 0xf8789745 dev_lstats_read +EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table +EXPORT_SYMBOL vmlinux 0xf88be830 md_register_thread +EXPORT_SYMBOL vmlinux 0xf88e75f9 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xf899a76e dev_alloc_name +EXPORT_SYMBOL vmlinux 0xf89b286f setup_arg_pages +EXPORT_SYMBOL vmlinux 0xf89cfde7 VMALLOC_START +EXPORT_SYMBOL vmlinux 0xf8a9f4c3 tty_unlock +EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 +EXPORT_SYMBOL vmlinux 0xf8d963cf sock_wake_async +EXPORT_SYMBOL vmlinux 0xf8e54848 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xf8e71d3d key_task_permission +EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var +EXPORT_SYMBOL vmlinux 0xf915179e refcount_dec_if_one +EXPORT_SYMBOL vmlinux 0xf92a26b7 set_binfmt +EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xf9500d2f sort_r +EXPORT_SYMBOL vmlinux 0xf9764e64 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0xf9899157 bdget_disk +EXPORT_SYMBOL vmlinux 0xf990a9c9 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9f50b92 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfa0548d7 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xfa08f4b8 __tracepoint_dma_fence_signaled +EXPORT_SYMBOL vmlinux 0xfa0e2b12 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xfa1371f4 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0xfa23a4e4 security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0xfa53f664 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xfa56182e unpin_user_page +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed +EXPORT_SYMBOL vmlinux 0xfa888381 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0xfa8b36b9 param_set_long +EXPORT_SYMBOL vmlinux 0xfa9076ed find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xfa9b865b skb_clone +EXPORT_SYMBOL vmlinux 0xfa9cb512 cdrom_open +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae13c79 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xfae6d74e xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xfaebf052 __brelse +EXPORT_SYMBOL vmlinux 0xfb0e6ec1 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf +EXPORT_SYMBOL vmlinux 0xfb4694b4 __init_swait_queue_head +EXPORT_SYMBOL vmlinux 0xfb481954 vprintk +EXPORT_SYMBOL vmlinux 0xfb489652 find_inode_by_ino_rcu +EXPORT_SYMBOL vmlinux 0xfb4f8017 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7438f2 iov_iter_gap_alignment +EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 +EXPORT_SYMBOL vmlinux 0xfba9a2e7 flow_block_cb_decref +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xfbb4702c ccw_driver_register +EXPORT_SYMBOL vmlinux 0xfbbcc17a inet_csk_complete_hashdance +EXPORT_SYMBOL vmlinux 0xfbbf5679 netdev_state_change +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd65759 param_get_string +EXPORT_SYMBOL vmlinux 0xfbeafb82 sync_file_create +EXPORT_SYMBOL vmlinux 0xfbf82c35 md_bitmap_free +EXPORT_SYMBOL vmlinux 0xfc09bf75 md_update_sb +EXPORT_SYMBOL vmlinux 0xfc0fb386 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xfc24b020 mntget +EXPORT_SYMBOL vmlinux 0xfc26008e __page_frag_cache_drain +EXPORT_SYMBOL vmlinux 0xfc399557 utf8_load +EXPORT_SYMBOL vmlinux 0xfc4a152e neigh_seq_next +EXPORT_SYMBOL vmlinux 0xfc53e7aa filemap_fault +EXPORT_SYMBOL vmlinux 0xfc65611e md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xfcc4efc5 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check +EXPORT_SYMBOL vmlinux 0xfcd1b080 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf29c1b crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xfcf86979 __put_cred +EXPORT_SYMBOL vmlinux 0xfd3a1e31 gen_pool_dma_zalloc_algo +EXPORT_SYMBOL vmlinux 0xfd4e82ad scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xfd51a6f7 hdmi_drm_infoframe_pack +EXPORT_SYMBOL vmlinux 0xfd58c81a get_super_thawed +EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 +EXPORT_SYMBOL vmlinux 0xfdb4de2d mempool_free +EXPORT_SYMBOL vmlinux 0xfdb5b996 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xfdc64b5f skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display +EXPORT_SYMBOL vmlinux 0xfdf45996 lowcore_ptr +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe06d10f dev_crit_hash +EXPORT_SYMBOL vmlinux 0xfe0e828e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xfe193e65 __xa_alloc +EXPORT_SYMBOL vmlinux 0xfe3378cb kernel_listen +EXPORT_SYMBOL vmlinux 0xfe39ab7b is_subdir +EXPORT_SYMBOL vmlinux 0xfe3b4bd2 seq_path +EXPORT_SYMBOL vmlinux 0xfe412925 generic_make_request +EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe4ca819 inode_io_list_del +EXPORT_SYMBOL vmlinux 0xfe532290 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe69fc0f pci_set_master +EXPORT_SYMBOL vmlinux 0xfe763c8a skb_queue_purge +EXPORT_SYMBOL vmlinux 0xfe7940d5 vfs_readlink +EXPORT_SYMBOL vmlinux 0xfe8f6612 reuseport_attach_prog +EXPORT_SYMBOL vmlinux 0xfea190a9 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xfea26f38 __udp_disconnect +EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeee1ba5 debug_event_common +EXPORT_SYMBOL vmlinux 0xfef29898 param_set_bint +EXPORT_SYMBOL vmlinux 0xfefa31de io_uring_get_socket +EXPORT_SYMBOL vmlinux 0xfefb547f __alloc_skb +EXPORT_SYMBOL vmlinux 0xff0c5c37 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff1f0ae2 add_virt_timer +EXPORT_SYMBOL vmlinux 0xff2082e7 input_get_keycode +EXPORT_SYMBOL vmlinux 0xff5a37f5 airq_iv_alloc +EXPORT_SYMBOL vmlinux 0xff5beed6 irq_to_desc +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff71aa15 flow_indr_dev_register +EXPORT_SYMBOL vmlinux 0xff8bc792 vfs_statfs +EXPORT_SYMBOL vmlinux 0xff9f3a13 device_add_disk_no_queue_reg +EXPORT_SYMBOL vmlinux 0xffb74164 misc_deregister +EXPORT_SYMBOL vmlinux 0xffc89bc5 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xffdffcb6 sget_fc +EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn +EXPORT_SYMBOL_GPL arch/s390/crypto/sha_common 0x183765cf s390_sha_final +EXPORT_SYMBOL_GPL arch/s390/crypto/sha_common 0x69cf4839 s390_sha_update +EXPORT_SYMBOL_GPL arch/s390/net/pnet 0xee095344 pnet_id_by_dev_port +EXPORT_SYMBOL_GPL crypto/af_alg 0x0287dc39 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x14023077 af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x16969613 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x1f4b90c2 af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0x2e291ab8 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3d356667 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x55933f9c af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0x5aeb02f9 af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0x9a9c4a94 af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xa040fb20 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xaf4a959f af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0xcbf43ef4 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xccabba89 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xce67fd30 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0xd16c4e8d af_alg_free_resources +EXPORT_SYMBOL_GPL crypto/af_alg 0xd60d39f0 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xdabc0e45 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xe195557c af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0xd10dc3f2 asym_tpm_subtype +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xc9695cb0 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x62d4c3f5 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xcbcf4c45 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x18797f52 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf404e5ec async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1d16b644 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x876f8ce1 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xfcb803f4 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x59f893ec async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x868a91f0 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x2479193e crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x17f97ae9 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x188d9d26 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef81a4af __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xfe04e8f2 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x21ee63f9 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x3dbae082 __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xcfce512f __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd76a5716 __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x5609ce41 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0x5b17be06 cast_s4 +EXPORT_SYMBOL_GPL crypto/cast_common 0xb9cba57f cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xbd3e7542 cast_s1 +EXPORT_SYMBOL_GPL crypto/cryptd 0x628be013 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6ad5c4fc cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6d7aced9 cryptd_free_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x73e47280 cryptd_skcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x86c878d0 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x87f22c5d cryptd_alloc_skcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x8eb74d35 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x90ce5bac cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x9f96dba0 cryptd_aead_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xa009dde4 cryptd_skcipher_queued +EXPORT_SYMBOL_GPL crypto/cryptd 0xbc1b9525 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xe412801b cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xe5ebfba6 cryptd_ahash_queued +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x15413c0d crypto_transfer_hash_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x27372007 crypto_finalize_aead_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4c6a877f crypto_engine_alloc_init +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4d7a9e3b crypto_finalize_hash_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x4eab9ede crypto_engine_start +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x50fc758f crypto_engine_exit +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x647fcd98 crypto_finalize_akcipher_request +EXPORT_SYMBOL_GPL crypto/crypto_engine 0x84e666c1 crypto_transfer_akcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc0b294a7 crypto_transfer_skcipher_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xc36b077a crypto_engine_stop +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xf8d951c2 crypto_engine_alloc_init_and_set +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xffae11fc crypto_transfer_aead_request_to_engine +EXPORT_SYMBOL_GPL crypto/crypto_engine 0xffc39077 crypto_finalize_skcipher_request +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x515ba532 crypto_ecdh_decode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0x7a395d76 crypto_ecdh_encode_key +EXPORT_SYMBOL_GPL crypto/ecdh_generic 0xd5a29505 crypto_ecdh_key_len +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x4eb4c55e __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ce20f2c serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbcc074f3 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xd4c9681a __serpent_setkey +EXPORT_SYMBOL_GPL crypto/sm3_generic 0x0bddca87 sm3_zero_message_hash +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x04af5f5f crypto_sm4_encrypt +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x09a89410 crypto_sm4_expand_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x3b18ebdd crypto_sm4_set_key +EXPORT_SYMBOL_GPL crypto/sm4_generic 0x7706d239 crypto_sm4_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0xb480d114 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe22b7787 __twofish_setkey +EXPORT_SYMBOL_GPL drivers/dax/device_dax 0x645dc3da dev_dax_probe +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0x29d47af3 alt_pr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/altera-pr-ip-core 0xe4ef4295 alt_pr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x043f7bac fpga_mgr_free +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x06a2aee9 fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x181b241b devm_fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x1f4efd2e fpga_mgr_unlock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x2a27fffb fpga_mgr_lock +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x37ac7c04 fpga_mgr_register +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x67b7cc47 fpga_image_info_alloc +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0x7cb0d7cb of_fpga_mgr_get +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc3ab81a5 fpga_mgr_put +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc68cd26e fpga_mgr_load +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xc72ef50c fpga_mgr_unregister +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xdc56d6b3 fpga_mgr_create +EXPORT_SYMBOL_GPL drivers/fpga/fpga-mgr 0xe2bffd16 fpga_image_info_free +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x599152fb bgpio_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0058ba7f drm_bridge_detect +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x04bd6655 drm_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d91e8c2 drm_bridge_hpd_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x221c1d3e drm_bridge_hpd_notify +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x252301a5 drm_gem_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x270031b6 drm_bridge_hpd_enable +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3684f6c6 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x693e8934 drmm_kstrdup +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6d220abe drm_gem_shmem_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x79ebb42d drm_crtc_add_crc_entry +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x900117c0 drm_gem_shmem_get_pages_sgt +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc094b1fc drm_gem_shmem_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc274a705 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7d403a8 drm_hdcp_check_ksvs_revoked +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdc117d93 drm_bridge_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe172a93f drm_gem_shmem_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe32af357 drm_gem_shmem_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf10536e7 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf93b24db drm_bridge_get_modes +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfbcaf27d drm_gem_shmem_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xfd2f717b drm_gem_shmem_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x41a6a9d9 drm_gem_fb_prepare_fb +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x43525e30 drm_bridge_connector_disable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x545ef8cf drm_gem_fb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x782dd4ba drm_gem_fb_create_with_dirty +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x86d6069f drm_gem_fb_create_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x9447c67f drm_bridge_connector_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x94f59419 drm_gem_fb_init_with_funcs +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xa7051ef5 drm_bridge_connector_enable_hpd +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xba0a25f8 drm_gem_fb_afbc_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xfbe434f4 drm_gem_fb_get_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1c0a5713 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x25e4411b ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8e3f3406 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x1076728b intel_th_set_output +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x44430412 intel_th_output_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x52b96b56 intel_th_trace_enable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x57589fdc intel_th_trace_disable +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x636c8aec intel_th_driver_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6d89219f intel_th_free +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x6dce8ead intel_th_alloc +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0x93c43313 intel_th_driver_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th 0xd32cce2d intel_th_trace_switch +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x350b54db intel_th_msu_buffer_register +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0x6ae813d6 intel_th_msu_buffer_unregister +EXPORT_SYMBOL_GPL drivers/hwtracing/intel_th/intel_th_msu 0xd9a52d16 intel_th_msc_window_unlock +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x0069c2d0 stm_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x07efa75e stm_source_unregister_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x6f4b95e3 stm_register_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x8b68de6a stm_data_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0x96fa215e stm_source_register_device +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xa826196c stm_unregister_protocol +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xaf197ef2 stm_source_write +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xbbdba905 to_pdrv_policy_node +EXPORT_SYMBOL_GPL drivers/hwtracing/stm/stm_core 0xfda4401d stm_register_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x03ade274 i2c_new_ancillary_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x12076d5c i2c_parse_fw_timings +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x261f11ec i2c_new_dummy_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x40998b0f i2c_new_scanned_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x42041512 i2c_get_dma_safe_msg_buf +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x4da5a497 i2c_recover_bus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x4dae16e4 i2c_put_dma_safe_msg_buf +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x544f8ab0 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x5aa33a66 i2c_new_smbus_alert_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x5bc5449c i2c_get_device_id +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0x9c794fb1 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xac7e0c86 devm_i2c_new_dummy_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xae634d27 i2c_handle_smbus_host_notify +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xbbeeca65 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xc088aa6b i2c_unregister_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xc72ab326 i2c_match_id +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xc86c3dbb i2c_new_client_device +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xd2cc313b i2c_adapter_depth +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xd5ea6e29 i2c_client_type +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xdbb18954 i2c_for_each_dev +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xead5d491 i2c_bus_type +EXPORT_SYMBOL_GPL drivers/i2c/i2c-core 0xee9ad008 i2c_adapter_type +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x18b44ddb i2c_mux_del_adapters +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x488157fa i2c_mux_alloc +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x90be3462 i2c_mux_add_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf9fa2471 i2c_root_adapter +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x1dd76e75 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x25c694e2 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x6698c398 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x734c1849 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x7af06f3b rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x8c3e73ae rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xa43739df rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xab577b7e rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb090089e rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xbc8541e8 rtrs_iu_alloc +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xcc65cf31 rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xe6d38bdc rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf431d32b rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x15b97715 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x19b88bec __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2307b422 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b46c4b6 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2b793afb __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fbf8560 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33554606 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x414c7765 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x5f6a4a3e __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65fb81f0 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6b1045c7 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7260fb66 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x748968f6 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7574c715 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c8a33fe __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x96bf5dba __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa353964f __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa4682eff __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xab4c5652 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb22f8879 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbf53dc9d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc00185bc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc13b483f __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc36e201d __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc8feefc9 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd8da0f0e __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9f20dee __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe9c4d700 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xee603d81 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5d8bf62 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf8502c64 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0b350acc dm_bio_prison_free_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x107ecda9 dm_bio_prison_alloc_cell_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x183aa333 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x3348f04a dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4260981c dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x69a25e31 dm_cell_unlock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7184f664 dm_cell_get_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7ab6736b dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x93b5e131 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9cb79ecc dm_cell_quiesce_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xace9b57b dm_bio_prison_destroy_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbcb22ed3 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd99e003d dm_bio_prison_create_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe5090bc2 dm_cell_put_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xeb923f66 dm_cell_lock_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xeb97da3b dm_cell_lock_promote_v2 +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf3603fcd dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf47f40cc dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf86094e9 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x111ab12a dm_bufio_mark_partial_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x24772bfe dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x2e0774dc dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aebce95 dm_bufio_issue_discard +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x867e87eb dm_bufio_get_dm_io_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb04f56ab dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb2438d54 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc0d7df85 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc90df7e5 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcd2ba798 dm_bufio_forget +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd991e3b9 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xea8bae0d dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xed3283a4 dm_bufio_set_sector_offset +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xf241a6eb dm_bufio_forget_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0efbca4c btracker_promotion_already_present +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x29cf8d44 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5adc2807 btracker_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5de611a9 btracker_nr_writebacks_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x796a703b dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x87bee547 btracker_queue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa2365f44 btracker_issue +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa7eadcb5 btracker_complete +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xab4ebf05 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbf1a2968 btracker_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xccfe6409 btracker_nr_demotions_queued +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd638ed27 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe1bb31c4 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe756dac6 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe8c5320d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xe27de0bb dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf47f1449 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2be2d14b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38972f23 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x57e16c3e dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f4a6e61 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5f7393d7 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d5e1815 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xab4650b8 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc42f973b dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcdc15a6c dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xeae06162 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf92b8a3d dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00f5a3c8 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x09cc81fa dm_btree_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0a7e77f3 dm_btree_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0ae4d696 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b25f6bc dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0b36102c dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0be67537 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0e198232 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x10e6ccea dm_bitset_clear_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x16af9071 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x23ebd5fb dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2417c5c4 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2adee13f dm_btree_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2f40da68 dm_bm_set_read_write +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x34d45c77 dm_btree_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3646e38f dm_tm_issue_prefetches +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36a34e58 dm_array_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x36b84cda dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3a797d19 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x432b8178 dm_array_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4557b425 dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48d1c7dc dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x48e323be dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49081644 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4a4cb558 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5475ba9e dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b0c22d dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6af8a872 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6bb4bf8f dm_array_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6e1e3821 dm_array_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x6f2fe3c4 dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7485935a dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x764567c8 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7ade1071 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7b047bd9 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x87c934be dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88295b96 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x885b0024 dm_array_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89783bda dm_array_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x95a52abd dm_bm_is_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x97263968 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x98db2687 dm_bitset_cursor_end +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e798e22 dm_bm_set_read_only +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9e98460e dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa2ea5542 dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa3cc1157 dm_btree_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa51fbedc dm_bitset_new +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa8d9df84 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa9c4fc6b dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaab0ef04 dm_bitset_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb11cd6c1 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb500e95b dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb6949944 dm_array_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbb461fb7 dm_bitset_cursor_begin +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbbb5df05 dm_array_cursor_skip +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc248bde2 dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcbba75fc dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xcedfc878 dm_bitset_cursor_get_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd2d4ded2 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd6711a58 dm_bitset_cursor_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd7016b22 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe781f874 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf398644f dm_btree_lookup_next +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf3b16444 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf551114d dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0b52993f st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x518a2137 st_register +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01fe3726 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x036a547f mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x042348c0 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0859e1f2 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b07519 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b520e9 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c8aa9d6 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0daba2da mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e057cd7 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12859597 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13a86049 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1552e6ca mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x157769c0 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16b0c57f mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a3f0f10 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a87261a mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab86cba mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ce37ed5 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1db27c9b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x216791b0 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21cc41cd mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24890186 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2680de55 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27441fea mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b0cad99 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f58a28a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x311d31fe mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31bdebb0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36c24d3c mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38762e18 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3916f4b0 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x392dd2b0 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d58113c mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d7fad87 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ee5cffb mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f02bfe3 mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x437817ce mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x449d7f9e mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4593bfb5 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47080214 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x486bfbc6 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d95fc0c mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fac9e58 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x519c8d76 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5736bb7e mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bb0f55b mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62635285 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63a479ca mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x652fddff mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65780809 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x674c31f1 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68ee9f0d mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x690108be mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e19fa76 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72974a84 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x780b2d43 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a97685d mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b507750 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x806309ab mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x809cbad7 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8351ac09 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8400caec mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x854a5f05 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87f967d5 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ae36389 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b5d6b76 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c40bd0b mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cd947c5 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d05bc2f mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f9a281d __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90e5af5b mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97471b68 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9872bbff mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x998ad5c5 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a9ee624 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b8e48b1 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bd4e44d mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c5b4e99 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9eb164e6 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa071f393 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2a7c0c2 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8ed9438 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaec27bec mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb36c4607 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4735a06 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7e09e19 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb834895d mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba6f1feb mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbaf8dd3 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc023c55 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc027e51 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc88f94c mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbca0f819 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0b63aed mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc172f2f9 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc290f3b8 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3495cdb mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc39d983c mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdf9dd03 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd26c1d6a mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd317b4e9 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3655aad mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd54d475c mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6bc24b9 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda7a395b mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd3487ab mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd3ddd8b __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1a5d0d6 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2b38eee mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe337c8d8 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3e21b99 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9468b2c mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe97ee599 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec490ef9 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee84c9f3 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeec9ab76 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0bca2ca mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf60bf3f9 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf829c7a3 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc22dda7 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffbc163a mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x031274f7 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04094a42 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06e198a8 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x092ae313 mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x104f58f5 mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11f9c26d mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ad96701 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c02eaf3 mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1de53c0a mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2308f8ab mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x276a3ffe mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29eb134d mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cbed791 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2d535b43 mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31f0d13c mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3618b5cd mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36a0ca95 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3b64a436 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fe13fcb mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46320752 mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x478b0a52 mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e2cf41c mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50245fda mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50ed37e3 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51e3ba20 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x521e949e mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53e0de87 mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55d45698 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a61efdd mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d17ea8b mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63e2e9d1 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65592e04 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x673cb975 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c57f861 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e6f6393 mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x706457a0 mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74e177ae mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x780deca6 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d4fa9c0 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dc9a89b mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x829a2208 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8391ace2 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83d0bd79 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93dc8357 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x983c5cee mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ccc4593 mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f6a31f6 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1d1690f mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa25cde67 mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa76d3447 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7fbe436 mlx5_query_nic_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa93047b6 mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaaea7f13 mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb45ad98e mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbae8a78d mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1ead5d8 mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc71c0488 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb552a63 mlx5_set_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd381ce82 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3bd5052 mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd78adb4e mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7f5ce21 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd808d8f5 mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc7adc4b mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd2dc9c1 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe39ef197 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7e2b00d mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1d66398 mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf291b613 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf492f279 mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfda1c4a5 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/geneve 0x3b939766 geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x0e58682e ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x339421d2 ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x8d6802c1 ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xd8fc7875 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xf6700c7d ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/macsec 0x626e86ad macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2cbd568f macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x68880b45 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7fc949d3 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xad5af2ab macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x6b4f4a95 net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0xdb2c46e5 net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x00a8bc33 bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x00e3f34b bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x08e423fd __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0c137901 __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x14fbddc9 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x23963d62 __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2ebabd18 bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x305aa35a bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3d38dd22 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6b43f388 bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7ce14774 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7d360870 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7db9ead7 bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7dd060b2 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x865a64ef __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8c280157 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9044ff91 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9079bb34 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x92b430ca bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9b63259b bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9e1fc10b bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa0b30dd8 bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa68f6232 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xaaa1a2de bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xaf346528 bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc1602f57 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc604ba22 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xce8faa05 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd070ed00 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd48ff076 bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd5c88553 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xef664112 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf3aa4904 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0x5516839c fixed_phy_register +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0x7f5f4c14 fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0x9334b4bd fixed_phy_change_carrier +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0xdc5e9322 fixed_phy_unregister +EXPORT_SYMBOL_GPL drivers/net/phy/fixed_phy 0xe87458f8 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x0114d77a mdiobus_modify +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x06209f49 phy_lookup_setting +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x08826925 genphy_c45_an_disable_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x0b7b7d16 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x0fc782f9 phy_start_machine +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x11642f25 phy_resolve_aneg_pause +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x18e4f8aa swphy_read_reg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x190ef4e2 devm_mdiobus_free +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x195efd56 devm_phy_package_join +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x20eac120 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x29343a6c __mdiobus_modify_changed +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x2a0a40fa mdio_bus_init +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x33dcb882 phy_package_leave +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x3f4632cd phy_10gbit_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x3ffc2957 phy_check_downshift +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x4239435f genphy_c45_restart_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x442d89c5 phy_10gbit_fec_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x44beaf47 genphy_c45_aneg_done +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x44c1dae4 genphy_c45_pma_read_abilities +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x4b9ab929 phy_speed_down +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x538d073d phy_duplex_to_str +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x5713b2a2 genphy_c45_an_config_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x5ffc0a16 phy_10gbit_full_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x65d0edda genphy_c45_read_link +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x6fdb96f0 phy_restore_page +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x7073c04f phy_10_100_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x743f3100 genphy_c45_config_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x7694d10b phy_modify_changed +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x7ac722bd phy_all_ports_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x7ca5c5a7 __phy_modify_mmd_changed +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x7e4215e3 genphy_c45_pma_setup_forced +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x811e81fa genphy_c45_read_mdix +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x8382a24a genphy_c45_read_pma +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x86bac6c0 __phy_modify +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x8d5fd735 phy_gbit_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x906bfa36 gen10g_config_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x91832368 phy_save_page +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x932b3e7c phy_modify +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x95c75749 phy_resolve_aneg_linkmode +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x95d1b2b5 __phy_modify_mmd +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0x9bc6f062 phy_select_page +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xa2f812f9 phy_10gbit_fec_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xa4c7758d phy_restart_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xb2794a2e phy_speed_up +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xb854bd8e phy_basic_t1_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xba2bd125 phy_gbit_fibre_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xbaa64a67 genphy_c45_check_and_restart_aneg +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xbbb95935 genphy_c45_read_lpa +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xc55ff962 phy_basic_t1_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xd2dd4812 phy_basic_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xd3543110 phy_package_join +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xd59a1587 linkmode_resolve_pause +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xd81108a8 phy_driver_is_genphy +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xe4b818c3 phy_speed_to_str +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xe4e48b12 swphy_validate_state +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xe6ad973e phy_modify_mmd_changed +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xeedd987e phy_10gbit_features_array +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xf84ed30c phy_gbit_all_ports_features +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xfa1e4672 genphy_c45_read_status +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xfab30dc0 mdio_bus_exit +EXPORT_SYMBOL_GPL drivers/net/phy/libphy 0xfaf9bf86 phy_modify_mmd +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-i2c 0x818be13f mdio_i2c_alloc +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x061af847 phylink_mii_c22_pcs_set_advertisement +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x1162b00e phylink_ethtool_ksettings_get +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x377c9bf0 phylink_mii_c45_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x44699bc0 phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x47c52bdf phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x5fb6b35f phylink_helper_basex_speed +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x62104126 phylink_ethtool_set_wol +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x6fa426d2 phylink_ethtool_nway_reset +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x86ff345f phylink_ethtool_ksettings_set +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x8d643aff phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xa41895d8 phylink_add_pcs +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xb5aeeeee phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xd86fdfd6 phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam +EXPORT_SYMBOL_GPL drivers/net/tap 0x0c458448 tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0x1e414259 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x358ba828 tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x39c49fe4 tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x6d0b748c tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x75275eae tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xa7c9e077 tap_del_queues +EXPORT_SYMBOL_GPL drivers/net/tap 0xbc5b2fca tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xd0fbcee1 tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x11c7c36e vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x41be99b7 vxlan_fdb_clear_offload +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7904b28e vxlan_fdb_replay +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xde09045a vxlan_dev_create +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x17313fcf nvme_start_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2d443c56 nvme_set_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x2fa55ced nvme_sec_submit +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x333f96f0 nvme_start_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x360bdde8 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x461e25e0 nvme_wait_freeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x49224181 nvme_reset_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4a805218 nvme_set_queue_count +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x4f3223b3 nvme_sync_io_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x54085d0d __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x5a8a7143 nvme_stop_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x61af2755 nvme_cancel_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x64b62862 nvme_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6510e63c __nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x65e98169 nvme_alloc_request +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x6dbb7e0b nvme_disable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x70e31b6f nvme_wait_freeze_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x7d565fa0 nvme_uninit_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x813cf212 nvme_io_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x913b12f1 nvme_delete_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9e160ba8 nvme_complete_async_event +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9e51683b nvme_shutdown_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0x9f7cd828 nvme_enable_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xac52670a nvme_init_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xb4e352db nvme_sync_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc020959b nvme_stop_keep_alive +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc1cfd55e nvme_try_sched_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xc438fe9e nvme_start_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcaae4160 nvme_reset_ctrl_sync +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xcc22cc3d nvme_cancel_admin_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd45434ee admin_timeout +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd4d5ffdb nvme_kill_queues +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd58bbbcb nvme_delete_wq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xd8d4b9c1 nvme_cancel_tagset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xdbecd06f nvme_stop_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe0b1a9e8 nvme_get_features +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe1b39376 nvme_setup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe20b763d nvme_init_identify +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe41d3f4d nvme_unfreeze +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xe9b57496 nvme_change_ctrl_state +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xedb9894c nvme_wait_reset +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf1ddb58c nvme_complete_rq +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf57af83f nvme_remove_namespaces +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf77f6a35 nvme_cleanup_cmd +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-core 0xf95064af nvme_reset_ctrl +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x04d424b3 __nvmf_check_ready +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x0cb0055b nvmf_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x26fa311c nvmf_connect_io_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x4da94cce nvmf_fail_nonready_command +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x54c6d8b0 nvmf_should_reconnect +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x659d66d7 nvmf_connect_admin_queue +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x67722205 nvmf_reg_read32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x71e6a977 nvmf_reg_read64 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x7418f73a nvmf_reg_write32 +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0x9e01bf82 nvmf_get_address +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xbc8156e5 nvmf_free_options +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xdebbb95f nvmf_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fabrics 0xeeb111e4 nvmf_ip_options_match +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x0d12e564 nvme_fc_register_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x6a695143 nvme_fc_register_localport +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x0c5822b2 nvmet_req_free_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x327bd42c nvmet_ctrl_fatal_error +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x44ebc3ab nvmet_req_alloc_sgls +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x81a5c385 nvmet_sq_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xb3554cc7 nvmet_check_transfer_len +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xbcbd2845 nvmet_sq_destroy +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xc7f2cac2 nvmet_unregister_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xe2594b95 nvmet_req_uninit +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xece2e3c5 nvmet_req_complete +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xfaf7e412 nvmet_req_init +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0xfd2b42ac nvmet_register_transport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x0b98123d nvmet_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x1048b92a nvmet_fc_rcv_fcp_req +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x231e0e06 nvmet_fc_register_targetport +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x4a013682 nvmet_fc_invalidate_host +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x7fa5302a nvmet_fc_rcv_fcp_abort +EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet-fc 0x9ef76d99 nvmet_fc_unregister_targetport +EXPORT_SYMBOL_GPL drivers/pci/switch/switchtec 0xa393cc26 switchtec_class +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x03a67566 dasd_generic_remove +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x082bb4ba dasd_generic_shutdown +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x097d9946 dasd_generic_last_path_gone +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x19227556 dasd_nopav +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x31be6bd8 dasd_generic_space_exhaust +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x3f1886cb dasd_generic_handle_state_change +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x4941622a dasd_generic_set_online +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x5a95fab2 dasd_get_sense +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x60339ae6 dasd_generic_probe +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x6883428c dasd_generic_notify +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x6fd8f372 dasd_alloc_block +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x737ca413 dasd_device_remove_stop_bits +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x79a9fee9 dasd_generic_path_event +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x81d5c2fc dasd_flush_device_queue +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x8afe9e18 dasd_generic_space_avail +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x8b47da99 dasd_generic_restore_device +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x909962f5 dasd_generic_free_discipline +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0x9c84292a dasd_generic_verify_path +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xa4c9323b dasd_generic_uc_handler +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xa682f457 dasd_wakeup_cb +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xae6bbfe7 dasd_device_is_ro +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xb38fe028 dasd_page_cache +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xbd3cb790 dasd_biodasdinfo +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xd59a1a9f dasd_device_set_stop_bits +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xdc1e4a36 dasd_generic_set_offline +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xe31b3595 dasd_generic_path_operational +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xec3ac990 dasd_generic_read_dev_chars +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xed68dfcd dasd_put_device_wake +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xf15784f5 dasd_nofcx +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xf4b0e8b2 dasd_generic_pm_freeze +EXPORT_SYMBOL_GPL drivers/s390/block/dasd_mod 0xf80301b7 dasd_free_block +EXPORT_SYMBOL_GPL drivers/s390/cio/ccwgroup 0x635ddf9e get_ccwgroupdev_by_busid +EXPORT_SYMBOL_GPL drivers/s390/cio/eadm_sch 0x85d9d140 eadm_start_aob +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x23c0e637 qdio_alloc_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x27488bbc qdio_reset_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x3b7f2874 qdio_establish +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x3ca458b3 qdio_allocate +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x3fe45770 qdio_shutdown +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x40809794 qdio_release_aob +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x854b27cc qdio_get_ssqd_desc +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0x944a07cb qdio_activate +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xa04bb255 qdio_free_buffers +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xa158b0af do_QDIO +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xd55ffb57 qdio_free +EXPORT_SYMBOL_GPL drivers/s390/cio/qdio 0xd762fef9 qdio_inspect_queue +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x027d9f57 qeth_dbf_longtext +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x0d327e27 qeth_core_hardsetup_card +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x1ca82006 qeth_threads_running +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x1ef00309 qeth_notify_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x223db728 qeth_set_allowed_threads +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2ab6ecb9 qeth_do_send_packet +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x2cd9e4cc qeth_core_header_cache +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3753d70a qeth_print_status_message +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x37920c25 qeth_qdio_clear_card +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x39ee6d89 qeth_drain_output_queues +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x3cd38d89 qeth_send_simple_setassparms_prot +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x415f228a qeth_setassparms_cb +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x486132a4 qeth_features_check +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x48e66a6b qeth_stop_channel +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x48f56758 qeth_set_offline +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x4c65799b qeth_prepare_ipa_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x4c66d67e qeth_configure_cq +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x555e820f qeth_set_features +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x5acdbd7b qeth_clear_ipacmd_list +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x6a9cb6ca qeth_vm_request_mac +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x6ae95d95 qeth_count_elements +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x75213b96 qeth_setadp_promisc_mode +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x806c9cf2 qeth_setup_netdev +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x868fa7a7 qeth_tx_timeout +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x87b7be4d qeth_trace_features +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x89bd9c1f qeth_get_stats64 +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x8cac7f6b qeth_device_attr_group +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x93c09d76 qeth_poll +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x94215c51 qeth_device_blkt_group +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x958dfc78 qeth_alloc_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x9818874b qeth_get_priority_queue +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0x98f14f1b qeth_send_ipa_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa01ec40f qeth_resize_buffer_pool +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa4799073 qeth_put_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa951332e qeth_generic_devtype +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa95552cf qeth_get_card_by_busid +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xa9a8aea7 qeth_dbf +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xad619399 qeth_setadpparms_change_macaddr +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xb0673cbc qeth_flush_local_addrs +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xb11d138a qeth_enable_hw_features +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xb2800d08 qeth_get_diag_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xb4197152 qeth_fix_features +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xc19efbd6 qeth_ipa_alloc_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xcabf5da8 qeth_iqd_select_queue +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xd48a08a2 qeth_stop +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xdf6a0f14 qeth_clear_working_pool_list +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xe0f2a975 qeth_get_setassparms_cmd +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xed6fe6e5 qeth_xmit +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xf9ca651a qeth_open +EXPORT_SYMBOL_GPL drivers/s390/net/qeth 0xfec7d2d1 qeth_do_ioctl +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l2 0xa1b58548 qeth_l2_discipline +EXPORT_SYMBOL_GPL drivers/s390/net/qeth_l3 0xdd4d0253 qeth_l3_discipline +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0200e820 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x10f12fb1 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x30575034 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3a0428b4 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4e653c76 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5dae8bc2 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x686a84f7 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6cfb6002 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x77628f9a fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x845f983c fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x851d13e9 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa84af774 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa91e601d fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbac58840 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc76ba660 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd944534 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe3d039d2 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf167cb7a fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf1fefece fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x05f64f5b iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1181b2a9 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x14be77f8 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x22814ca5 iscsi_boot_create_acpitbl +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xab92cc66 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbd764a54 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xef607b76 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libfc/libfc 0x48561353 fc_seq_els_rsp_send +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x03e9bd1f iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1dfde43f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1ec65200 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f7bd2bb iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2877bef6 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c62fd68 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x358c8540 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x399851df iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ce394f0 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3cf9535d iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3df24f87 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e25d68a iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e9075d2 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43502511 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c25a4fd iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55e33e2a iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5aa801d4 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ebcd60e iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67e017ae iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a956d95 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6dfe8a0f iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72391021 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72cafe59 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79c367ae iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8530b217 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86bf9a73 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86cfa378 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d3366cb iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b1a2236 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f7f8fdc iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb07f0ba8 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2109f87 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7d7897e iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe16116e __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca9d226c iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe2764c1c iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe28995fb __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3067b4e iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3c6ac1b iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe583cbc4 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf9cdcb5e iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa8ddce4 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x04d0809f iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x11745dc3 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x21427512 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2181d7e6 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4ca84f50 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5fb6403a iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74267c0f iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x826068b3 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9283b62f iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x959c99ea iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9700b959 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb5694a4d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7340fef iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd6dfff82 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xde589a5b iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe123a6bd iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf14cc488 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x17027d45 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1df52189 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x26f2a7ab sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x292caa70 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3c765191 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4a98a85f sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x593e8a1c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6795fcd9 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6be18c56 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80fa1a21 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8f528b7a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb38014ba sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb99f7efa sas_eh_target_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbcd5308f sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf4e8432 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc9442efb sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf23aa8b sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd212f1f2 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf23d6bf7 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf26d783f dev_attr_phy_event_threshold +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf2e46b83 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf33297a8 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfe6c164a sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0151e23a iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c8779c3 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18f74dcb iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x19d6ffb1 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1c574ebe iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24769d73 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29641863 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3133dc5c __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x360ba1fb iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x381edc4b iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45ab85e4 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47867762 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x552bdfb8 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d656e2b iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x66c54c1b iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69f3eca1 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e6cded4 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f471fa2 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x721e8d1d iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75d2dc73 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7a6a874c iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7fbf22ea iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91b0e68c iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93f74ced iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9751e6ec iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9889e1d3 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaac3519d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaea92c90 __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb114943a iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb1479b3c iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb3e9d872 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb61350b5 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc2c9b33 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe04d0b9 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd1d0df2d iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd25079cd iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4697d5b __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda8c5644 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5ab78fc iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe81ad4b0 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee559462 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0b9d967 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfbb4b708 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfd411070 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa262e5ca sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xafdd28fe sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xf25287e5 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xfa9dd20e sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x9e1fa4d1 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0d009cac srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1902178a srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1a0317af srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x45684d65 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x52d6ea27 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x965719d7 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa2ae0705 srp_rport_add +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x46eb4314 siox_master_unregister +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x61d24bbf __siox_driver_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x64080edb siox_device_synced +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x6e6e6fc0 siox_device_connected +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0x82e39280 siox_master_register +EXPORT_SYMBOL_GPL drivers/siox/siox-core 0xe681ad04 siox_master_alloc +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x00cefb58 slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x0b6bd2b1 slim_register_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x313dfc55 slim_read +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3a3ac1d5 slim_stream_prepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3a432b29 slim_get_logical_addr +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x3e99e9ce slimbus_bus +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x425d7f5b slim_msg_response +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x52a6c4d7 slim_xfer_msg +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x534f3570 of_slim_get_device +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x80805b91 slim_free_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0x888c205c slim_unregister_controller +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xace1cdc1 slim_report_absent +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xae8bf0f5 slim_device_report_present +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xafaa7686 __slim_driver_register +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xb0afb5f4 slim_write +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xbe56d4ec slim_stream_free +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xc2db0db6 slim_ctrl_clk_pause +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xcecb62fa slim_stream_enable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd19018d7 slim_readb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xd4a768ea slim_do_transfer +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xe5b35b3d slim_stream_unprepare +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xeff1cb3c slim_alloc_txn_tid +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf035d88b slim_stream_allocate +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf993327c slim_stream_disable +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xf9efa8c6 slim_writeb +EXPORT_SYMBOL_GPL drivers/slimbus/slimbus 0xffc3e47a slim_driver_unregister +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x2e82fd26 uart_get_rs485_mode +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x4e173df9 uart_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x7ec90f3f uart_handle_cts_change +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0x9096de24 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0xc836eb53 uart_insert_char +EXPORT_SYMBOL_GPL drivers/tty/serial/serial_core 0xea55b927 uart_console_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x0d4ef01e __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x19f335ae uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x584251f1 __devm_uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb3b3be2d uio_unregister_device +EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0xd000d5d4 mdev_bus_type +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x1700d3f3 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x32e3ce5d vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x342c0d8f vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x490f49cc vfio_group_get_external_user_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x529db99e vfio_info_cap_add +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x5b35c4f9 vfio_group_set_kvm +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x95258207 vfio_device_data +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x969c73d9 vfio_device_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa5f3dfcd vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc1d989c5 vfio_external_check_extension +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc4913442 vfio_group_put_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xc7bd1224 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe59efb23 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf2130803 vfio_iommu_group_put +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf532bf5d vfio_external_group_match_file +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xff012e9d vfio_iommu_group_get +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x282d9fb7 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xbef2573c vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x020516e6 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0bfb645a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x17f1ef32 vhost_dequeue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f9c3ec7 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x228505e1 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x24eb9c84 vq_meta_prefetch +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26bda790 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26e86bef vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x31876435 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x338ab4fa vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3599fa9f vhost_new_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3afab4ce vhost_vq_is_setup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3d70dcf1 vhost_exceeds_weight +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x442b3d9f vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x54bb89fa vhost_has_work +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x622d8e60 vhost_chr_read_iter +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x673b01e4 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6e406090 vhost_enqueue_msg +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x79a79cf2 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7d923f00 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x87265c26 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8886454c vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ce3dd45 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e494b94 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8f3d5c13 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8fed13ce vhost_vq_avail_empty +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9110e92f vhost_init_device_iotlb +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93c81c53 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa0d0923b vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa909cfc5 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xad5cbdfe vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbba7593d vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc0a4ead3 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc39ef84f vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc64c789e vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd20309d5 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd9847026 vhost_vq_init_access +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdbc4fc87 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeb7df074 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf994d8d5 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2b3e45 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x38ff875f vhost_iotlb_add_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x514d0e6a vhost_iotlb_itree_first +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x5f4e5249 vhost_iotlb_reset +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x6bec0e66 vhost_iotlb_del_range +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0x7579334f vhost_iotlb_itree_next +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xa24517eb vhost_iotlb_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xad111707 vhost_iotlb_map_free +EXPORT_SYMBOL_GPL drivers/vhost/vhost_iotlb 0xc577832d vhost_iotlb_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x5f99818e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x60b1afa7 fb_sys_read +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4a32ade5 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4b62826c dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x647d6170 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x89cd9c64 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcd224e1d dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf34a16f0 dlm_posix_get +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d5d2a3f nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x57caaa40 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6ae4fd00 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7e67e5fb lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa08db211 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd75fc684 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf7b6ac1f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04697b19 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x048e06f9 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x077f2ef4 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08101c59 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08cbb65c nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x098b30e4 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11a4e6f2 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12cc19ac nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1632835b nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18f611b9 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a339f44 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a7fdb5a nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c1ccdde nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c4a377a nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c817a66 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ec54a7b nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f8e7482 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21465076 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x219bc23b nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22798142 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23d538d5 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2424a95b nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2782c171 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28f57685 nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x292744ed nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cb65abf nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dfb18bd nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31aecf55 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32bcab10 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x357b71f3 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35a57d5c nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x378d0ada nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38433b9a nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4284dd85 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45952d54 nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46cc543b nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x480f7393 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49a7c6ea nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e644d35 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x525c19d3 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54f73875 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56644065 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5741cb6d nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b2c499b nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d5940d8 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d5ae419 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e20b92c nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61f67eb3 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x637ce6e4 nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63bf4d62 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65636c2f nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66752269 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x680b033e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x685fba05 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a2cb055 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ec776de nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f44d37b nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7151ec05 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7249b958 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7446cae6 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x756f56a4 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x759f4a27 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c35da92 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ca0f569 nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e6dc30b nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e8e756f nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f6a03f3 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f75878f nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8197f577 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8b08e822 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c7f6599 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e8055f6 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x911c6544 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x916ea57b nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x933a60b8 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95078d4d nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x950cf7f9 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97a6603d nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98af6465 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bc23f6c nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2dd8f3f nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2fd95a0 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa548885b nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8abcded __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabe40942 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaca27ae8 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf4f748a nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf886253 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf8fc783 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb18122b1 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb18fcbf9 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb243c5d8 nfs_file_fsync +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3923ef7 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb54e4db0 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f5c91f __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6b2c88 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd0bd72d nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbec13f2e nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf04d045 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0a05273 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0c089fd nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc05b05f nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc08e8ae nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce6ed6b4 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcea13510 nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfd1682a nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1f0d855 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2b04efb nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd358d5b6 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd73562e1 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9ac5b21 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9b94a60 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdfa067d1 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0796476 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe151b7e5 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe19fc7ee nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1c68612 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1ccd48a nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5e4defa nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5fc04c3 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9cdd9ed nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb66b0ee nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec336d26 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeda3e613 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf125ec86 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf29086af nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5ddcc1e nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf72f0b85 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa5c4c91 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd6a1f68 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff92bc1b nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffdb72e2 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x5441220b nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x075ea8b2 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09aae20b pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a08dbb9 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a89066d pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0ade27ae __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cdfb6f5 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x163831c3 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x167c610b nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cdde079 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x208f5c30 __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22101d55 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24a8e283 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x291650e6 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2993fe53 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2afe9b15 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d8d826b pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f9cfa70 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x32bea1a4 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3890472e pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3988f23b nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39ac52fe __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c2223fb pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c7d84cc __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dcc15c5 pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ddd742f nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfdc977 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e440870 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ff1a42e pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40013e52 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40bc3c6d __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42d03246 nfs42_ssc_open +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x44ac1b83 nfs42_ssc_close +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x486cdb41 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4b6cdddd pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bf4eea0 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x55be6a06 pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x584d858b pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fbf25c5 pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68061552 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7112a830 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x74432065 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78ecf37b __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7aa90497 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8513b8eb nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96b602bf pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9bbfcbe0 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cbd7502 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa319bfee __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8edccfd pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa029a74 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad160a02 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf2e2701 nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafb5e37b nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb28a5a87 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb73efeb9 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7c1e0ca nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9a30e93 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb4206b3 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc021a848 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3331772 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc37688a5 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc513bdf5 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc631c544 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc67ca91b pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8ad1719 pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb59d1e8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd7cb56a pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd11d9af7 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1c51686 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd6ed7dda __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7fa82c9 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb113150 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc29230a __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf05942f __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf45bd83 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe90f7fd1 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeaeb91f0 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee960d9f __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf03da035 nfs4_test_session_trunk +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf05fc674 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf36eed0b nfs42_proc_layouterror +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf83e435e pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x46eb4b81 opens_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x518062c1 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xa56fbf92 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x07529fba nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x27a02fb1 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfsd/nfsd 0x5b388f0f inter_copy_offload_enable +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x093f3662 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x13518b99 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x328289f8 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa6760e38 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xad9adcde o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdb5ca429 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xef5492e2 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfa83d357 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x01be3525 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x144e13d3 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x477f0c68 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4f8ec61a dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x587c45b4 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa267e9a6 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1475f64b ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3583dc6a ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5826c759 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x76f40744 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9507547f ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa0af6656 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaf969565 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc5196999 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc9fae756 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xcafdd707 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd344e4ee ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd806a273 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe61d36f0 ocfs2_kset +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x1f5eac57 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x3ff9be11 torture_online +EXPORT_SYMBOL_GPL kernel/torture 0x447d9c95 torture_offline +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5a12a7da torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6c3ff11a torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc94a93e3 torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0xca5f4d45 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe2430307 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0xe55038d8 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0xcf048a91 sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0xa4adedf1 sw842_decompress +EXPORT_SYMBOL_GPL lib/crc4 0x696b3a5a crc4 +EXPORT_SYMBOL_GPL lib/crc64 0x1b0f70f3 crc64_be +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x0105b595 des_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x574eda34 des3_ede_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0x856a5ef3 des3_ede_encrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa6aa9857 des_decrypt +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa77b3b62 des3_ede_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libdes 0xa8fb743d des_expand_key +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xbc3b5e35 poly1305_init_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xd7219de2 poly1305_update_generic +EXPORT_SYMBOL_GPL lib/crypto/libpoly1305 0xf3945fcd poly1305_final_generic +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x36f982dd notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xad3a368b notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x18efd32f raid6_datap_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x391d9714 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0xa51bfd9f raid6_2data_recov +EXPORT_SYMBOL_GPL net/802/garp 0x25c410a5 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x6c247cb2 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x7a0fa9b5 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xb8fbd767 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xc282c87e garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xd0e400c4 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x17a51e30 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x8aba38d5 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xabd0b7f6 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xac097f16 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xd72f6623 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xe63e76c8 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x481c9443 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x4c662f14 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x7b0db75c p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc1877ad8 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/bridge/bridge 0x148430bd br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x151c7e8e nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x25fe4a30 br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2a7422e6 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x50240851 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x752365bb br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0x849438a1 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9d0a1b88 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa581274c br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xaa23874b br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0xaadded6c br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xca9bbdfe br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcdb49991 br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd740d949 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdb002a8c br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdd58cf11 br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdedc1aa9 br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfa3aa32f br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/core/failover 0x3ff950ff failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x422e3240 failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0xe90b9654 failover_register +EXPORT_SYMBOL_GPL net/dccp/dccp 0x05927ea5 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ac366ba dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1099984e dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19f7956f dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1fb220ea dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x246d7e0f dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2bd7b1a6 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x30da610e dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35d283c4 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3a1e58e5 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3a9c0ad5 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44bd76c3 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50af7f23 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x535c843c dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x54de49c4 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x578eeffb dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d88800d dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68508128 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74203431 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c7b8894 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8603649b compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8699c4d5 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88d0f272 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9330b2e0 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9613ce75 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9819be27 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9f5c591c compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1375491 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xad4a880f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf9374c0 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb31365ee dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb78ee43e dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4fca6ae dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe35262c0 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xec9dda9e dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf5d3b019 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x27f959fd dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x68c36591 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7072d39c dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x77c4d766 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x90ae6a13 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xffeb74f7 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ife/ife 0x0c8382c9 ife_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next +EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode +EXPORT_SYMBOL_GPL net/ife/ife 0xf0e7c10e ife_encode +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x46760a4d esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x7b92ac57 esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0xf54e5668 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd8582e8e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe61db1a5 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x069558a6 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x183d5855 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1f8cae8d inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5f3858b4 inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6df80a12 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x81cf4689 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x92876f19 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa1829764 inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfa5340d1 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xae7b3429 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x023f9fda ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1f33620b ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2318a4dd ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x29ed7882 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x33ee03eb ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5595a5a9 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x60edcc25 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x68608767 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x98514dad ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9c7eea11 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9ceed9f9 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa02e6573 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa1cb8faf ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa55cf99e ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xba5a81e8 ip_tunnel_delete_nets +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc7928b4 ip_tunnel_ctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfa3d0d7f __ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x26ffeefe arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xd4103043 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xacd9a311 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0xcf7d163d nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0e5877c9 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x341dbc6e nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x64a7411c nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x71fdb83d nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfe713b1c nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0xd4724b1d nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x25d05d4e nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xcf8f9611 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0xec400800 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x8edd71c9 nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0xda356561 nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0444c3f1 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x302464dc tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x34466cf3 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x51fe4a5a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x82a50c1b tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0efa923b udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x4556138e udp_tunnel_push_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6051dbe1 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x60be2fd0 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x749bbaf9 udp_tunnel_drop_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x76f43ddd udp_tunnel_notify_del_rx_port +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8b696687 udp_tun_rx_dst +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb6ab47e3 udp_tunnel_notify_add_rx_port +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x8e6e15bf esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xb2b8ba7a esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xb495c17d esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x45b18389 ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4930ecac ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4d663b30 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x2ecf1b0a udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xe3a18529 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x71b575cc ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6e10652d nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0xdf7d228e nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x8138adf1 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0d0e411b nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2ddc82e5 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4f611cf7 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xfc5b0a2e nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xfdf96844 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x5315ea74 nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x6094652e nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xafd244d2 nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xc2f02a93 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x32f4402b nft_fib6_eval +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x678a57e7 nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x038ce8db l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x057618d7 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x18ed788b l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x503e1d70 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x61aca4c1 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x815774a7 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x816a2b25 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa5b45d3a l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbfdc2a02 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc49a59f6 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc504ea0e __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc9eee59b l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd662bd39 l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe5e6ce6f l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe854ad7b l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf0644d99 l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf2ab3e02 l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xdb07346d l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x1d9d4f07 mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x6f7a6098 nla_put_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x8c067bc8 mpls_output_possible +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xd166643b mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xe413b0a4 nla_get_labels +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xef13a02f mpls_dev_mtu +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0b2310aa ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0d13020c ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0ef621b4 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x16bd3364 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x17c8dc01 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1ab09a7f ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1fc66636 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x462ebd36 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x58ff2be0 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5e70f5cb ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6bdd3370 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8ba0a1a1 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb113bd12 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca963413 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcf1c4d92 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd18f874d ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd68c235a ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe495a737 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe598f9de ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf1d5a018 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x083b0a2d register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1f7ebc1d ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa7815b67 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa98d15b9 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x2ad589ca nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3f85489c nf_conncount_list_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x4af54be0 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6a80b4d8 nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6c5897bd nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8cf217e0 nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xcb5635e4 nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0162b9cb nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x021b512b nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07c31085 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ce2dcf3 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e1f5777 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e24c289 nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x125e96f2 nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1caf1693 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e380d99 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23f90e39 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24fd0db7 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27ea58c9 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a6471ac nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b5d8b4f nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fd9d9b0 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3025b945 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3cc808cf nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d9c5086 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40437042 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4087e2a0 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4334bca7 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44acd9ef nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4759c8d3 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47a98618 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50b4ece1 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x536ecb67 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5484e7b8 nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x592bfeda nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x594ae7dc nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59ad30b6 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e17bfac nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fc232d4 nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6362b59f nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66a2362e nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67fbe65f nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6b25d29a nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d09766b __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d648b75 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f477f75 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x703acdbf nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x720e7d8e nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7611f9fd nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7846a8a3 nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ae26cb8 nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ae4e79d nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7da80b2e nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ed43932 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88f50908 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b035833 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8cc768dc nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d2eb6b7 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9042e362 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90f5d734 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92a91001 nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98e79de4 nf_ct_expect_iterate_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9dd3c1e5 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1b9fd4c nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa526e188 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa73c14b7 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae539c0e nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3877dff nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7549775 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb99bad09 nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xba8c0fc8 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbbfa4976 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbcd93871 nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe1f5bf0 nf_conntrack_helpers_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc11161ef nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6dcda50 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc34b13d nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1eb1338 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd518bc23 nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda2ab917 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf44e21e nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4102d34 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe778264c nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe8add976 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea653f55 nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee0b7a31 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf19e9d76 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5ba0edd nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf62130c3 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc56fff1 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffc4a155 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfff1028f nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x0e0b1971 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x3cbeabfc nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x8db6e9de nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x06733a33 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0b764b1b set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1fd61d33 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5639cce2 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x771434c1 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x79ae2382 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa935ac1b set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa97bb3db nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcb56636d nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe86d588d set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x47dc2b62 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8e1e70d1 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x96b2f1c5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9ef97ede nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc026593d nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0a4bd229 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0f811ce5 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2e14b4bb nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x31e24147 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x34098bab ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7f660502 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8c180e45 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8d843a0f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x540409fd nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x187a4818 nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x5ce7e2f7 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x8304dd37 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x42c48827 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x57d02ed6 nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x63dacec2 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6a071e6c flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6f19b5a0 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x88194378 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8b382f3c flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8ece8293 flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x9ba60aed nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xa93f7fc6 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xdd7d36b7 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xddb9a623 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe4c14eb6 nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe62a9041 nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf9d06a7d flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xfc9ee207 nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xfe93cf1e flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x052dc0fb nf_log_dump_vlan +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x30533e80 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5b5b209a nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6a6340a0 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8184bea9 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8daf9ac0 nf_log_l2packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x175108df nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x25970d4a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x497c89cd nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4d5534f9 nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4db26724 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5c8007ff nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5d03a701 nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6ceba4be nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6d4a8c4d nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7819cea0 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8eaa95f4 nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xceef4168 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd891017b nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xde5427f3 nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf4e164c4 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf7b421f6 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x10ef5c7c synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1c8ac1fb synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2cea8818 nf_synproxy_ipv6_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5526b8f6 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x79bb0a8e synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x9fdc5dad synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa59b7935 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xafde17df synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb1651801 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc8a928ef nf_synproxy_ipv4_fini +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xe34cb1c8 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0a898737 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c999af0 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e14bfcf nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2047880a nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x22e82ab3 __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x23956d5b nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2db65952 nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f7e84d9 nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x33df5c2e nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36e926f5 nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3a7fd65d nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x422bc3ba nft_obj_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x43f84056 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x502eed3d nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x50c52b36 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5965d2e5 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x59f3d3ae nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5e42bcb5 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5e531276 nft_set_lookup_global +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7c7f62b6 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7fcb51a9 nft_data_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85430a76 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x92f05740 nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9d67fb5c nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7580bbd nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xac5ce47c nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbb515b9d nft_chain_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbd39497c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc0588acf nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf3854e5 nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd0e64e81 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd6d20249 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdfbef52e nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe0ca0346 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe568c3d1 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe8b6b06b nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfa6456ed nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x39df7a74 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc61e504f nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xcfe075e3 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd457ef66 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xede6544f nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfa4ebdc3 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9486d701 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xa9d9c011 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xc90fbe81 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x1a7e7f08 nf_osf_find +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xb1d59832 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x684269b3 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x68c3bdf7 nft_fib_store_result +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x7eaf0f6c nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xead8e336 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x105b07e2 nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x5ff629c8 nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x99cc3b00 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xcf61456c nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x059f272a xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x05a9dd9a xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x14dfc8b3 xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2034d2b2 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x225d3fc0 xt_request_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x24c8e482 xt_copy_counters_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x56a20b05 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6661d85c xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x67380674 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6ce4d951 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x82dd75ec xt_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8500b9d6 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x93ef82c2 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x97362d99 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9f8badec xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa6937e74 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa89139ef xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb6c0fb57 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbb1a6ba8 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc383a6ce xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3a4163a xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xda2783c6 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x28768e5d xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4ef7c567 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nsh/nsh 0x77308b42 nsh_push +EXPORT_SYMBOL_GPL net/nsh/nsh 0xc0bb8a83 nsh_pop +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x00423cc8 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x55b0619c ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xad5f6132 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbeb5d365 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc1ffc08f ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xca02646f ovs_vport_alloc +EXPORT_SYMBOL_GPL net/psample/psample 0x791691f5 psample_group_get +EXPORT_SYMBOL_GPL net/psample/psample 0x8e2095d5 psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0xaf683040 psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0xf0208e72 psample_group_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0667b127 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x12ad7c2c rds_conn_path_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x135a4461 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x1689a58d rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x1c6f4337 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x1d6a7a8a rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x33817d13 rds_send_path_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3430c531 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x38708924 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x3d3722dc rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp +EXPORT_SYMBOL_GPL net/rds/rds 0x48213fd0 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x60962361 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x67b48ff5 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x797e632f rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x8c117a08 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x9401a47b rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x9a31b75e rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x9a97c6d3 rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0x9d3193f1 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xb78af5cf rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc48ab605 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc5708428 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xca6ce124 rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0xd7c7698a rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xe1f174b4 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xeddecaa3 rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf1bbab74 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xf84568fe rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xfd9eb4bc rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xfdeb4a3d rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x49ec89e9 pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xd706c96c pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x3aef7c97 taprio_offload_get +EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x3dff2951 taprio_offload_free +EXPORT_SYMBOL_GPL net/sctp/sctp 0x20cb21ef sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/sctp/sctp 0x41fd3b7b sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x8e678d71 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0x9e4f0313 sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/smc/smc 0x050d62ad smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x08338153 smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x1eeaf54b smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0x21fa5d03 smc_unhash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0x2dc4a3ad smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0x461147c6 smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0x5dbe6164 smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0x7959b4e7 smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x983b43d9 smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xec39f85c smc_hash_sk +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7ad7960b gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9e5fa837 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcaf8bd6c svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xdb349ee4 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00281174 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00baaa6d rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01d404a8 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02572cf0 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x053ff615 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0837a151 rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x091642a0 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d166f41 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f622dfb rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12d1ca54 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1372c83b rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x138dff7f xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13908aaf gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13ace00a xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14c54e03 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x155f6dd3 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1710f1f8 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x194f3ce6 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1953ba42 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a081dab rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a602f58 rpc_max_bc_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b3e927f xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cbe371e xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1dae55be rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1db81540 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e61c2ee xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e6cb206 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e9844b9 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ef6a43d svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21f1edf6 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x226b81e4 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x229aa64a xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22ae2996 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23d13ce2 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244874d3 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244a365f xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2469776b rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2715df2b xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27b3a42a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x292d9260 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x296421ae sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29bb5dff svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a28efea rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b29f5e1 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b91bf7b rpc_num_bc_slots +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ba6f82b rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c50a5c4 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cd2a630 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d54e132 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e7aef9d rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f6f0715 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30b2a2cf rpc_prepare_reply_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3124bd3e rpc_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31cc657d svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31fb0785 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x323821df cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33aeb150 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33d52323 xprt_force_disconnect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34e9ffbc rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35469a55 cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x355f9b90 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3612613a svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36a18692 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37d95263 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x380ae4be rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38ca9c13 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a37d23c xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e4aa679 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4029e21b rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41e2b4d3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46021a6b xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46641331 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x468af73e rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x479aae2f xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47bd2eab rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x488e56fa auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4905812e xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49babbf6 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ad8cc8e xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ef5112b svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f71f70d sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fd33b19 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5055d882 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5095f7ea rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x519ef565 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52576ecc rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52e4e660 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5322b1e8 xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53e375fa svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54ff77f2 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x568fd8c0 svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56c6be96 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5818c6bd csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x591670e4 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c6097b2 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cfd1906 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e4ca7dd __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6109b351 sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6391534c xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63f12f0c xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66f9d1f9 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68b78617 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd2696d unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d89d541 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73e7f85d rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x769f14c1 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76c76280 xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c27e0b5 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f7c8f3b rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8024048b xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83b3599e xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8481092d svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84d110e3 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8538b161 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a7e96d7 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b2c9b14 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x923d56a9 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93877ba6 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93f8bdc4 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9472e08a rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x956c426f svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95ad8a10 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97021ce3 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9715e49d svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x978fa11f rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97cc5c81 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x980ac34c rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98ebb3f5 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9920d79c rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x995084e2 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a8c03ea xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab9467c svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e60132c svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ec364c7 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f94158a xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1b076b7 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2e11c99 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5ab4ebc rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f24037 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa80c13ef xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9d6ddcb xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaad851d6 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaba28a37 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac2778e1 rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafc50d89 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaffd11f1 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb41e5676 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4c67fee xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6649b06 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6b6f434 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6fcec6a rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbba68535 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbd5d71c rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc1e49a0 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc5cc85b xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd67594c rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe318352 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe35912a rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe7660cd xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfac4eac cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfb00be7 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfbfafcd svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfe362a5 xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbff5b594 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc17dfe5f rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1ca745c svc_encode_read_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1f06b4a rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2cbf57f rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2ccaad2 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2ddbdf8 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3f1a5d2 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc579f37c rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc66040c4 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc73a7fb8 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e9de51 xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf3fa2d3 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0292812 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2b44558 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3ed21da xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd42b2fbc svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd437a847 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd598a9e5 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd62a7f95 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd62f8026 xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6a9910f rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd73d92ca rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd813a080 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd845aa43 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd4ca1a6 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddd250b8 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde745c7f sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde7c8224 svc_generic_rpcbind_set +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdede56a4 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfabf6aa sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0f99594 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe361b587 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe382070a xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe39bd921 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3fdc9ca svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4098582 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4ea9f38 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe63d8740 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe87c9363 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe88daf9d svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9479cc7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea3e2b7a xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb7d4473 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec0002cd svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec82c504 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefc74425 xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefe3ded0 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf007c471 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf209c4f5 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf229acee rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3179b1c svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4afaff8 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6408800 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6d34353 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf722924a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf76ad406 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf887805d svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8b7ea22 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9ae2667 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbcd97eb xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc4144be svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc49e0b4 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd227114 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdf02789 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe9e6f63 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/tls/tls 0x5efb37d9 tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xb3359872 tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0xe64894ac tls_offload_tx_resync_request +EXPORT_SYMBOL_GPL net/tls/tls 0xf563b066 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0ca5a23d virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0f66669f virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x124f2b1c virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x1b75ad69 virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2957098b virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x38c844fa virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x42631ff4 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x516e4e9b virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x51bbd5e1 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x583b90b6 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6379e12e virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6707827b virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x6dc54adf virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x71558c7e virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x758bf521 virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7a476a0b virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8642ac3c virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8804e427 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x8c553b52 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x90b24eed virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9cff087a virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa01715de virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa1294c12 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb5516d52 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb98a08c9 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbc6a8838 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbfe11aff virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xce0c9767 virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdbcdd5fb virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdf653fc2 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe30e70f4 virtio_transport_notify_send_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x07698a5d vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x16d59d22 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x175a067d vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x28356c98 vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x302d6d5c vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x369c13ee vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3e717028 vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x40270376 vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4644c45f vsock_core_unregister +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4c20a0b6 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x50a07bd1 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5375a6e3 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x560cfeba vsock_remove_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6d072340 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6e96c61d vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7282fe2c vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73879664 vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa0c178e5 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa12324a5 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb64d00f4 vsock_table_lock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb8b55476 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc346e1a3 vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd22a06bd vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x37a02412 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5c699441 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x72395dc1 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaab23340 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x62583a20 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x96e11af5 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa9b8ccef ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc7ef9a0f ipcomp_output +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x3fe35aea irq_bypass_unregister_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x418873cc irq_bypass_register_producer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL virt/lib/irqbypass 0xf6e772c3 irq_bypass_unregister_producer +EXPORT_SYMBOL_GPL vmlinux 0x001f4c4f crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00513f58 get_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x007a5770 fsnotify_add_mark +EXPORT_SYMBOL_GPL vmlinux 0x008516f9 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x00b457fe iomap_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x00c4724a gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x00e25a77 fwnode_property_get_reference_args +EXPORT_SYMBOL_GPL vmlinux 0x00e55522 crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x010a2431 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x013bd439 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x01413c5f css_schedule_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x0158ac1a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x015f308d __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x015fd5f0 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x0181a417 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0197d0c6 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x01a96c2c bio_clone_blkg_association +EXPORT_SYMBOL_GPL vmlinux 0x01aac216 iommu_aux_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x01f5b168 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x01f88377 sbitmap_queue_min_shallow_depth +EXPORT_SYMBOL_GPL vmlinux 0x02191fde __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x024128b7 devlink_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0251f24c pcie_port_find_device +EXPORT_SYMBOL_GPL vmlinux 0x027a79d9 idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0x027bb631 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x027eee0e request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x029eca4c wbt_disable_default +EXPORT_SYMBOL_GPL vmlinux 0x029f25a5 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x02d01dc3 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x02e08d12 direct_make_request +EXPORT_SYMBOL_GPL vmlinux 0x02e62798 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x02ff25ef pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x03135778 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x034dbee9 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x03952887 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x03965fb3 iommu_unregister_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x03a86167 gmap_unmap_segment +EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present +EXPORT_SYMBOL_GPL vmlinux 0x03d08c39 crypto_comp_decompress +EXPORT_SYMBOL_GPL vmlinux 0x03ddc20f class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x03e9590e sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041bdbcc mmu_interval_notifier_remove +EXPORT_SYMBOL_GPL vmlinux 0x042d9fb9 iommu_fwspec_free +EXPORT_SYMBOL_GPL vmlinux 0x0444dd97 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x049b3762 tcp_get_syncookie_mss +EXPORT_SYMBOL_GPL vmlinux 0x04a6fee6 software_node_register +EXPORT_SYMBOL_GPL vmlinux 0x04bb7848 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c604a5 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x04ea8706 __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x04f51964 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x050c29ca __get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0558eff2 blk_mq_quiesce_queue_nowait +EXPORT_SYMBOL_GPL vmlinux 0x055dd2db ip_valid_fib_dump_req +EXPORT_SYMBOL_GPL vmlinux 0x0583b387 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x058584c9 __iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058f9df9 s390_reset_cmma +EXPORT_SYMBOL_GPL vmlinux 0x059f3f9a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x05a256b6 crypto_unregister_acomps +EXPORT_SYMBOL_GPL vmlinux 0x05a5856b __tracepoint_neigh_cleanup_and_release +EXPORT_SYMBOL_GPL vmlinux 0x05e9dc43 crypto_cipher_encrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x05ed372d gmap_pmdp_invalidate +EXPORT_SYMBOL_GPL vmlinux 0x05f953ca crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x0604e923 fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x061a6a17 rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0x061b8aad user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x062eb949 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0695034b dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x06ba0ce7 trace_get_event_file +EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x06ccdf21 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x06e6b4f4 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x07171f0d bpf_map_put +EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax +EXPORT_SYMBOL_GPL vmlinux 0x0757eede stack_trace_snprint +EXPORT_SYMBOL_GPL vmlinux 0x0772b375 pci_epc_get_first_free_bar +EXPORT_SYMBOL_GPL vmlinux 0x07763e0a task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x079c148a crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x07b0a03c fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x07bf29cd get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x07cb7afb sfp_parse_port +EXPORT_SYMBOL_GPL vmlinux 0x07ccad46 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x07d259f8 skb_mpls_push +EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache +EXPORT_SYMBOL_GPL vmlinux 0x08436119 klp_shadow_alloc +EXPORT_SYMBOL_GPL vmlinux 0x084ce4e4 iommu_sva_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x086fbe5f __wake_up_locked_key_bookmark +EXPORT_SYMBOL_GPL vmlinux 0x08748c84 iommu_device_sysfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x087d1599 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x08948c6f fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x08ba2930 pci_debug_msg_id +EXPORT_SYMBOL_GPL vmlinux 0x08bcfbcf devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x08c489ce is_hash_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0940d327 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x094e69c5 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x096b2418 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x09753b7c alloc_skb_for_msg +EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09c907b6 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x09d85284 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x09e737b3 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x0a2c58e5 fsnotify_put_group +EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x0a6ce1cc sfp_select_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a72aff9 crypto_skcipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0a7eb1c5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x0a848144 virtqueue_get_used_addr +EXPORT_SYMBOL_GPL vmlinux 0x0ace538f noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1500ef strp_process +EXPORT_SYMBOL_GPL vmlinux 0x0b1bb9f9 synchronize_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource +EXPORT_SYMBOL_GPL vmlinux 0x0b5dbeae bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b68d791 sbitmap_del_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x0b6ff5dd scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x0b74c0f3 __devm_irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x0b86a51d get_net_ns +EXPORT_SYMBOL_GPL vmlinux 0x0bc5481b clock_comparator_max +EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0c57e547 bpf_offload_dev_netdev_register +EXPORT_SYMBOL_GPL vmlinux 0x0c717d86 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x0c79055d dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x0c7c95e2 crypto_comp_compress +EXPORT_SYMBOL_GPL vmlinux 0x0c7ccce4 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c7f3206 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x0c92096c sfp_bus_find_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x0cb604c1 pci_epc_get +EXPORT_SYMBOL_GPL vmlinux 0x0cbbbf94 crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x0cbc7af5 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0cc24bcf __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0x0cdb613f pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x0cddcfee bpf_trace_run11 +EXPORT_SYMBOL_GPL vmlinux 0x0ce9bb63 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0d1d8d08 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x0d39af1e trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4a047c devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x0d631223 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x0d7bbce9 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x0d9e6783 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0db02d26 devlink_dpipe_entry_ctx_close +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df91681 gmap_shadow_r2t +EXPORT_SYMBOL_GPL vmlinux 0x0e1163e9 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x0e2ee0e7 pci_epc_start +EXPORT_SYMBOL_GPL vmlinux 0x0e31c3ca blk_mq_quiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x0e4f20ef devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x0e518ff2 fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0x0e541f71 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x0e7ae911 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x0e7f3102 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x0e920c23 __netdev_watchdog_up +EXPORT_SYMBOL_GPL vmlinux 0x0ec4b915 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0eff5544 blkg_rwstat_init +EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f1e69ad klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x0f1f6a9e is_transparent_hugepage +EXPORT_SYMBOL_GPL vmlinux 0x0f2664b4 crypto_enqueue_request_head +EXPORT_SYMBOL_GPL vmlinux 0x0f342cb0 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0f62baa6 crypto_unregister_scomps +EXPORT_SYMBOL_GPL vmlinux 0x0f7a5d4f ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x0f812799 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x0f90f636 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x0f951934 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x0f9ae7b6 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x0fa0ac09 devm_device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x0fa8c267 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x0fe7617c __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ff4b59c sk_msg_free_nocharge +EXPORT_SYMBOL_GPL vmlinux 0x10074e54 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101d2142 vmf_insert_pfn_pmd_prot +EXPORT_SYMBOL_GPL vmlinux 0x102414af pci_epc_set_bar +EXPORT_SYMBOL_GPL vmlinux 0x1070f642 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x1078e33e __pci_epf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x10bd9ee2 __vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x10c2e75a kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x10c30ae6 netdev_is_rx_handler_busy +EXPORT_SYMBOL_GPL vmlinux 0x10fa7c35 __vfs_removexattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x10fd1f4b clean_acked_data_disable +EXPORT_SYMBOL_GPL vmlinux 0x113986d9 tracing_cond_snapshot_data +EXPORT_SYMBOL_GPL vmlinux 0x1156e57f shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x11587b0c __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x116f033d kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x1171f176 crypto_register_scomps +EXPORT_SYMBOL_GPL vmlinux 0x1182e6ab devm_gpiod_get_from_of_node +EXPORT_SYMBOL_GPL vmlinux 0x118414ff iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x11851cbd ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x11859e55 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len +EXPORT_SYMBOL_GPL vmlinux 0x11b92d5d scsi_register_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x1255affd inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x12705eae wbc_attach_and_unlock_inode +EXPORT_SYMBOL_GPL vmlinux 0x128ada64 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x12b9ed1c inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x12bddfb6 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x12d899b6 cio_start +EXPORT_SYMBOL_GPL vmlinux 0x12dbc8f6 percpu_ref_switch_to_atomic_sync +EXPORT_SYMBOL_GPL vmlinux 0x12f54530 kthread_data +EXPORT_SYMBOL_GPL vmlinux 0x12f65a57 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x1307f612 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x131c86a6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x131ced89 sched_show_task +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132d460a ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x1330fd47 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x13539a67 enable_cmf +EXPORT_SYMBOL_GPL vmlinux 0x135e7ebd firmware_request_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled +EXPORT_SYMBOL_GPL vmlinux 0x138f3036 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x13bd9631 serdev_device_write_room +EXPORT_SYMBOL_GPL vmlinux 0x13d27486 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1409ee06 tracing_snapshot_cond_disable +EXPORT_SYMBOL_GPL vmlinux 0x1418238a __tracepoint_cpu_frequency +EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x1445cda1 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x144ebe3e pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x144f7eba crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x14b1f289 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x14bbeaf5 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x14bc1b5d devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x153643d8 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put +EXPORT_SYMBOL_GPL vmlinux 0x1568b7fb tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x156cdac8 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x156d032d crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x157bc422 s390_enable_skey +EXPORT_SYMBOL_GPL vmlinux 0x15f49df8 fwnode_graph_get_endpoint_by_id +EXPORT_SYMBOL_GPL vmlinux 0x163df0a5 follow_pte +EXPORT_SYMBOL_GPL vmlinux 0x164b1903 crypto_unregister_kpp +EXPORT_SYMBOL_GPL vmlinux 0x16656490 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x166d6443 __tracepoint_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x166f73f7 tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x168287db digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x169314b7 security_path_link +EXPORT_SYMBOL_GPL vmlinux 0x169cf462 security_inode_permission +EXPORT_SYMBOL_GPL vmlinux 0x16b69bc8 zpci_store +EXPORT_SYMBOL_GPL vmlinux 0x16cede5c dax_finish_sync_fault +EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16deffcf blk_steal_bios +EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 +EXPORT_SYMBOL_GPL vmlinux 0x17149987 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x1722f676 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x1742104c scsi_unregister_device_handler +EXPORT_SYMBOL_GPL vmlinux 0x176031a7 devlink_fmsg_string_put +EXPORT_SYMBOL_GPL vmlinux 0x176abce9 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x176ceb35 pci_platform_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x1779893a freq_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x17858ee2 security_path_rmdir +EXPORT_SYMBOL_GPL vmlinux 0x1787c86a pci_epc_add_epf +EXPORT_SYMBOL_GPL vmlinux 0x178ebe0d blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x17987a72 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0x179ccd8e nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x17a3993f __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x17ac9bf8 nfnl_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x17c49441 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x17eb9ff1 __scsi_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x18008c59 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x182edf13 serdev_controller_alloc +EXPORT_SYMBOL_GPL vmlinux 0x184224e3 vfs_readf +EXPORT_SYMBOL_GPL vmlinux 0x18456ccd iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x1880f2ed balloon_page_list_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x18ba9b0b crypto_unregister_acomp +EXPORT_SYMBOL_GPL vmlinux 0x18dd5bc5 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x18ef34de security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x191e050f __inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x193bd82f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x193dfdf6 klp_get_prev_state +EXPORT_SYMBOL_GPL vmlinux 0x19674100 devm_gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x196c1e22 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x197b7338 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x1980604f devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0x198d6da2 fscrypt_ioctl_remove_key_all_users +EXPORT_SYMBOL_GPL vmlinux 0x19941441 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x19946fde idr_find +EXPORT_SYMBOL_GPL vmlinux 0x1996562d ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x19ada7b9 bpf_trace_run8 +EXPORT_SYMBOL_GPL vmlinux 0x19b7d7dc devm_gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x19c0513e sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x19dc1eb3 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x19e2f4cf debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x19e475b3 __bdev_dax_supported +EXPORT_SYMBOL_GPL vmlinux 0x19f462ab kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x19f672c9 device_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x19fcca64 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x1a099b50 device_get_match_data +EXPORT_SYMBOL_GPL vmlinux 0x1a10c32b crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x1a150b32 rtnl_delete_link +EXPORT_SYMBOL_GPL vmlinux 0x1a1976c2 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1a4abdb1 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1a5b9f4f pci_epc_linkup +EXPORT_SYMBOL_GPL vmlinux 0x1a69c911 find_module +EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1ab2968c __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x1abd0edf fib6_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x1ac458a1 public_key_signature_free +EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x1ada0770 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1adc9e02 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x1ae5af90 xdp_convert_zc_to_xdp_frame +EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow +EXPORT_SYMBOL_GPL vmlinux 0x1b012738 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x1b0946d8 idr_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b1f5ad0 gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x1b291ed8 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1b3afec1 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0x1b57d31d ccw_device_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1b6c5a67 chsc_error_from_response +EXPORT_SYMBOL_GPL vmlinux 0x1b709f40 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x1b7dc297 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x1ba0c4a7 evict_inodes +EXPORT_SYMBOL_GPL vmlinux 0x1bb8032d sysfs_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x1bc7b8bd software_node_register_nodes +EXPORT_SYMBOL_GPL vmlinux 0x1bd47f4d nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x1be50664 fscrypt_ioctl_add_key +EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x1c0c7289 bpf_verifier_log_write +EXPORT_SYMBOL_GPL vmlinux 0x1c243e28 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c63d275 dax_layout_busy_page +EXPORT_SYMBOL_GPL vmlinux 0x1c6a54a6 nf_checksum +EXPORT_SYMBOL_GPL vmlinux 0x1c79cc57 vcpu_put +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca3b129 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x1cba4a66 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x1cbab206 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off +EXPORT_SYMBOL_GPL vmlinux 0x1cf5ed11 tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d332b9b dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x1d370243 xas_find_marked +EXPORT_SYMBOL_GPL vmlinux 0x1d69a163 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x1d69a4d8 balloon_page_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7d0e0e user_describe +EXPORT_SYMBOL_GPL vmlinux 0x1d7ee21a driver_find +EXPORT_SYMBOL_GPL vmlinux 0x1d8cdb99 gmap_mprotect_notify +EXPORT_SYMBOL_GPL vmlinux 0x1d8f9198 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x1dcae597 irq_domain_set_hwirq_and_chip +EXPORT_SYMBOL_GPL vmlinux 0x1df48003 fib_new_table +EXPORT_SYMBOL_GPL vmlinux 0x1dfa2cba blkdev_nr_zones +EXPORT_SYMBOL_GPL vmlinux 0x1dfc0023 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1e06e074 devlink_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e51452f tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1e51dabb __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e5398b4 sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1e675f6b kvm_vcpu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8da3ba devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x1e90e0f0 task_cputime_adjusted +EXPORT_SYMBOL_GPL vmlinux 0x1e91ea5e dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0x1eb76482 crypto_stats_kpp_set_secret +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ebfb4b0 bsg_job_get +EXPORT_SYMBOL_GPL vmlinux 0x1ec80456 perf_aux_output_begin +EXPORT_SYMBOL_GPL vmlinux 0x1ee0f376 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x1ee7310e netdev_walk_all_lower_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1f088366 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare +EXPORT_SYMBOL_GPL vmlinux 0x1f1ea1af cio_disable_subchannel +EXPORT_SYMBOL_GPL vmlinux 0x1f245ff4 serdev_device_get_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x1f376796 freq_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f47ba96 devm_platform_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x1f4cdd14 blk_queue_set_zoned +EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv +EXPORT_SYMBOL_GPL vmlinux 0x1f5a2a87 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x1f616df8 kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f88428f trace_array_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x1fa9aa5c gpiod_get_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x1fabe337 crypto_stats_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x1fafdde7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x1fce1faf crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs +EXPORT_SYMBOL_GPL vmlinux 0x1feec469 trace_array_printk +EXPORT_SYMBOL_GPL vmlinux 0x202a4c8a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x206152ce pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x2061970d iomap_seek_data +EXPORT_SYMBOL_GPL vmlinux 0x20674efd kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame +EXPORT_SYMBOL_GPL vmlinux 0x20ba4597 sbitmap_queue_init_node +EXPORT_SYMBOL_GPL vmlinux 0x20bddb8d pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x20ce772e class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x20d833b4 serdev_device_add +EXPORT_SYMBOL_GPL vmlinux 0x20dc59b8 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x20e6f928 tnum_strn +EXPORT_SYMBOL_GPL vmlinux 0x20ea4d98 devlink_params_register +EXPORT_SYMBOL_GPL vmlinux 0x2122336b fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x212a3662 ncsi_vlan_rx_kill_vid +EXPORT_SYMBOL_GPL vmlinux 0x214f31d6 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio +EXPORT_SYMBOL_GPL vmlinux 0x217781fa dm_put +EXPORT_SYMBOL_GPL vmlinux 0x21779137 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x21a9d793 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x22054553 fwnode_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str +EXPORT_SYMBOL_GPL vmlinux 0x221df3a7 lwtunnel_encap_del_ops +EXPORT_SYMBOL_GPL vmlinux 0x2235df21 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x223fe31d register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2246b4dd __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x22536628 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x2255fba7 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0x225f8171 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x22829157 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x229951a0 gmap_fault +EXPORT_SYMBOL_GPL vmlinux 0x22ae335f input_ff_flush +EXPORT_SYMBOL_GPL vmlinux 0x22b53134 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x22bc2872 devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x22c96790 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x22d290cd dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22da62bf trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x22e20b10 chsc_siosl +EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x22ffb177 device_register +EXPORT_SYMBOL_GPL vmlinux 0x2326717e gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x233f5316 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x23794217 blk_mq_virtio_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2388c8da netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x239670f4 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x23b47611 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x23d0b31a tty_set_ldisc +EXPORT_SYMBOL_GPL vmlinux 0x23dd8722 dax_writeback_mapping_range +EXPORT_SYMBOL_GPL vmlinux 0x241eb9f4 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x24291574 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x242b9e0c devm_kstrdup_const +EXPORT_SYMBOL_GPL vmlinux 0x243f0b4b crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x2444d49d peernet2id_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2460d79f fuse_get_unique +EXPORT_SYMBOL_GPL vmlinux 0x246834fe pcie_has_flr +EXPORT_SYMBOL_GPL vmlinux 0x2474581f gmap_shadow_pgt_lookup +EXPORT_SYMBOL_GPL vmlinux 0x248f0ea1 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x2499e8a4 get_device +EXPORT_SYMBOL_GPL vmlinux 0x24b95bf0 udp_abort +EXPORT_SYMBOL_GPL vmlinux 0x24c63e31 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x24c6beee nr_iowait +EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended +EXPORT_SYMBOL_GPL vmlinux 0x25072162 handle_untracked_irq +EXPORT_SYMBOL_GPL vmlinux 0x25292902 dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x2550aa68 fwnode_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x25767607 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk +EXPORT_SYMBOL_GPL vmlinux 0x259bf6ea srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x25b0c454 device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x25c9cd20 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x25f44dae dax_copy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x26025222 devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x264f0a35 fuse_kill_sb_anon +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2654c19f tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x26564d18 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x265bbef9 kexec_crash_loaded +EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x26863258 dw_pcie_host_deinit +EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x26c622ee percpu_ref_switch_to_percpu +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26dcf033 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x26ea97f9 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270b86d0 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x271d4ff4 do_splice_from +EXPORT_SYMBOL_GPL vmlinux 0x27310b65 disable_cmf +EXPORT_SYMBOL_GPL vmlinux 0x27402916 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x274b73ff rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x2751eabd raw_abort +EXPORT_SYMBOL_GPL vmlinux 0x2753042a devlink_trap_groups_register +EXPORT_SYMBOL_GPL vmlinux 0x27545244 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2768c3ca watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x278e1861 fwnode_get_next_available_child_node +EXPORT_SYMBOL_GPL vmlinux 0x27af9ceb scsi_dh_activate +EXPORT_SYMBOL_GPL vmlinux 0x27b64afd rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0x27c15e9d posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x27c62673 device_match_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x27e039f8 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x27ebfef3 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x27f45068 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28009183 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x28089956 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x280b0be7 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0x281ce8dc device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x2826a734 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x2843aac3 dst_blackhole_redirect +EXPORT_SYMBOL_GPL vmlinux 0x284fe794 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x289c32fa class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x28a65702 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x28b4fab4 devm_fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x28d8b49a chsc_scm_info +EXPORT_SYMBOL_GPL vmlinux 0x28de51e2 xdp_attachment_setup +EXPORT_SYMBOL_GPL vmlinux 0x28fc8f7c fib_nh_common_init +EXPORT_SYMBOL_GPL vmlinux 0x29047729 fwnode_handle_get +EXPORT_SYMBOL_GPL vmlinux 0x2918c818 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x29252e74 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x292fd5c7 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2976b080 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x29c9dd8a virtqueue_get_vring +EXPORT_SYMBOL_GPL vmlinux 0x29ce0374 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x29eba37f current_is_async +EXPORT_SYMBOL_GPL vmlinux 0x2a0546e6 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x2a069bea devlink_dpipe_entry_ctx_append +EXPORT_SYMBOL_GPL vmlinux 0x2a1289a7 sbitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x2a1538ca lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x2a2d2e95 blk_mq_alloc_request_hctx +EXPORT_SYMBOL_GPL vmlinux 0x2a377265 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x2a4d2890 tcp_leave_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x2a50744c of_css +EXPORT_SYMBOL_GPL vmlinux 0x2a515321 pci_epc_get_msix +EXPORT_SYMBOL_GPL vmlinux 0x2a5d99e9 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x2a62cb3a ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2a7e1ded gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2a852e86 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x2a92b1db tty_port_register_device_serdev +EXPORT_SYMBOL_GPL vmlinux 0x2a96c6ed gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x2abfa3c6 devlink_flash_update_status_notify +EXPORT_SYMBOL_GPL vmlinux 0x2acae2ac crypto_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x2ae09681 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x2aec8e3f fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x2afcc38f debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x2afd5ca6 pci_epc_map_addr +EXPORT_SYMBOL_GPL vmlinux 0x2b260a74 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update +EXPORT_SYMBOL_GPL vmlinux 0x2b4540ec klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0x2b51a913 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2b7bf30d gmap_shadow_page +EXPORT_SYMBOL_GPL vmlinux 0x2b83cbec pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x2b8f1879 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x2b9a21cb skcipher_walk_atomise +EXPORT_SYMBOL_GPL vmlinux 0x2bf32bc2 bio_associate_blkg +EXPORT_SYMBOL_GPL vmlinux 0x2c11852a rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x2c258ea1 blk_mq_sched_mark_restart_hctx +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c432077 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c4656f4 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x2c7256dc synth_event_add_field +EXPORT_SYMBOL_GPL vmlinux 0x2c7d13e2 __ioread32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8f2a7d gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x2cd25b53 dm_bio_from_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x2cd80ba5 skb_segment_list +EXPORT_SYMBOL_GPL vmlinux 0x2ce13f42 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf2b906 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4a4996 pcie_aspm_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2d634978 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x2d876b39 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x2d91adfa fwnode_graph_get_remote_port_parent +EXPORT_SYMBOL_GPL vmlinux 0x2daa2177 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x2dd02360 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x2dd3a933 cio_tm_start_key +EXPORT_SYMBOL_GPL vmlinux 0x2dd8418e __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x2de05de4 device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x2de4e094 mmu_notifier_get_locked +EXPORT_SYMBOL_GPL vmlinux 0x2ded9aab device_match_devt +EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x2e1d43cf lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e24e086 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2e3fa6c7 gpiochip_line_is_persistent +EXPORT_SYMBOL_GPL vmlinux 0x2e5c8fd4 tcp_sendmsg_locked +EXPORT_SYMBOL_GPL vmlinux 0x2e729486 decrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x2e7f0499 seq_buf_printf +EXPORT_SYMBOL_GPL vmlinux 0x2e8fc0df tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x2eacd05a register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x2eadace3 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec71b67 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2ecd0fc8 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x2ed8d943 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x2ede26e9 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0x2eec2805 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x2efdddcf pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x2efefc65 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2f04e090 pin_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2f231259 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x2f3f19e6 badblocks_check +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x2f4f67c3 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x2f58667c xas_load +EXPORT_SYMBOL_GPL vmlinux 0x2f840fab preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2fb8b529 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3018481d virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x30314959 gpiochip_relres_irq +EXPORT_SYMBOL_GPL vmlinux 0x305a5f89 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x30686beb rtnl_register_module +EXPORT_SYMBOL_GPL vmlinux 0x306fdf92 generic_device_group +EXPORT_SYMBOL_GPL vmlinux 0x3079ce2a bus_register +EXPORT_SYMBOL_GPL vmlinux 0x3087280d dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x30aacf9d disk_has_partitions +EXPORT_SYMBOL_GPL vmlinux 0x30bd8cbf kernel_read_file_from_path +EXPORT_SYMBOL_GPL vmlinux 0x30ed911c tpm1_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x30ee341a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x30f2cdf9 sched_setscheduler_nocheck +EXPORT_SYMBOL_GPL vmlinux 0x311aadad bpf_trace_run12 +EXPORT_SYMBOL_GPL vmlinux 0x31238914 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3128a646 fib_nexthop_info +EXPORT_SYMBOL_GPL vmlinux 0x3129f501 dma_need_sync +EXPORT_SYMBOL_GPL vmlinux 0x314e5aee pci_epf_unbind +EXPORT_SYMBOL_GPL vmlinux 0x3154decf register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3159ccd4 devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x31640ae9 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x3169201f input_class +EXPORT_SYMBOL_GPL vmlinux 0x317104a1 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0x31769571 dw_pcie_read_dbi +EXPORT_SYMBOL_GPL vmlinux 0x31785f08 __tracepoint_br_fdb_add +EXPORT_SYMBOL_GPL vmlinux 0x31949eeb fwnode_get_next_parent +EXPORT_SYMBOL_GPL vmlinux 0x31997875 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x31a8bf90 devlink_dpipe_action_put +EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x31c3a1d3 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x31d3337c fuse_request_end +EXPORT_SYMBOL_GPL vmlinux 0x31d3a3e3 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x31dd2ea0 crypto_cipher_setkey +EXPORT_SYMBOL_GPL vmlinux 0x31efb53a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x31f6cba7 trace_array_destroy +EXPORT_SYMBOL_GPL vmlinux 0x31fc65ae sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl +EXPORT_SYMBOL_GPL vmlinux 0x325c21e6 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x328585e2 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3285e516 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x328f46f4 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x3291ad4b unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x32a287fe gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x32a7cc8c dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x32ab06cc irq_percpu_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c6c604 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x32cf649f blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x32f367a3 virtqueue_add_inbuf_ctx +EXPORT_SYMBOL_GPL vmlinux 0x32f609e5 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x33050a77 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x334d502f blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x33505b29 serdev_controller_remove +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335da3c3 devm_platform_get_and_ioremap_resource +EXPORT_SYMBOL_GPL vmlinux 0x335dd2ab __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x33782be5 gmap_convert_to_secure +EXPORT_SYMBOL_GPL vmlinux 0x338857ab gpiochip_generic_config +EXPORT_SYMBOL_GPL vmlinux 0x338ac1c6 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x33964d29 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x339e26a0 zpci_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x33c63c34 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x33c78170 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x33ce5deb alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x33d67fb1 call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x33efc8c8 trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x3418615d iommu_dev_feature_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3421ca7c __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x34259deb mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x343c1cad kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x343ef80f fwnode_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash +EXPORT_SYMBOL_GPL vmlinux 0x3451868d __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3459a3ed skb_zerocopy_iter_stream +EXPORT_SYMBOL_GPL vmlinux 0x34723185 pci_epc_unmap_addr +EXPORT_SYMBOL_GPL vmlinux 0x348c4cb4 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x349843d1 scm_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0x349f10cd fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x34a5e980 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x34be3fcd tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x34c460a4 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x34d0b4ed add_swap_extent +EXPORT_SYMBOL_GPL vmlinux 0x3516c4b4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy +EXPORT_SYMBOL_GPL vmlinux 0x353aaa71 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x353cd453 crypto_hash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3570b729 devlink_port_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x3575d688 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x35761178 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x35aa6bf0 sysfs_update_groups +EXPORT_SYMBOL_GPL vmlinux 0x35b1ee39 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x35d0d734 css_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x35dbfa1e set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x35f85ef7 cgroup_rstat_updated +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3607c5d7 sthyi_fill +EXPORT_SYMBOL_GPL vmlinux 0x360fcab7 devm_device_add_group +EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process +EXPORT_SYMBOL_GPL vmlinux 0x36496e9e devlink_resources_unregister +EXPORT_SYMBOL_GPL vmlinux 0x364da378 devlink_port_attrs_pci_vf_set +EXPORT_SYMBOL_GPL vmlinux 0x365a6d74 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x367aeb6f tpm_default_chip +EXPORT_SYMBOL_GPL vmlinux 0x368b10fd gmap_pmdp_csp +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36cf1ac3 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x36f3df24 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x36f79b82 fwnode_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x37083ecb devlink_alloc +EXPORT_SYMBOL_GPL vmlinux 0x372aebea kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x372d3517 blk_mq_unquiesce_queue +EXPORT_SYMBOL_GPL vmlinux 0x373f3bb5 debugfs_create_file_unsafe +EXPORT_SYMBOL_GPL vmlinux 0x3756d7d4 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3757e2aa __unwind_start +EXPORT_SYMBOL_GPL vmlinux 0x377e0ebd kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x3787968c pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x379b5418 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x37b4d44b crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x37ea659f add_memory +EXPORT_SYMBOL_GPL vmlinux 0x37ec4111 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x3801a183 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3807a483 blk_mq_sched_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x3821cfad d_walk +EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection +EXPORT_SYMBOL_GPL vmlinux 0x384c83c3 fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x385db95d screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x3873e4b8 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x3890e68c tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count +EXPORT_SYMBOL_GPL vmlinux 0x389d4295 kthread_flush_worker +EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0x38b4f881 msi_desc_to_pci_sysdata +EXPORT_SYMBOL_GPL vmlinux 0x38f7e2bf ccw_device_pnso +EXPORT_SYMBOL_GPL vmlinux 0x390b2825 setfl +EXPORT_SYMBOL_GPL vmlinux 0x393ffa6f asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x39579087 sfp_may_have_phy +EXPORT_SYMBOL_GPL vmlinux 0x3957eeb0 shmem_zero_setup +EXPORT_SYMBOL_GPL vmlinux 0x39587ae7 l3mdev_link_scope_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3963b83c tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0x3970a1f0 kvm_s390_gisc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout +EXPORT_SYMBOL_GPL vmlinux 0x39ad64f5 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x39c757b4 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x39ded098 rdma_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f11af1 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x39fd83db halt_poll_ns_shrink +EXPORT_SYMBOL_GPL vmlinux 0x3a287c79 __gmap_translate +EXPORT_SYMBOL_GPL vmlinux 0x3a2b6faa devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0x3a2cad4b irq_chip_mask_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb +EXPORT_SYMBOL_GPL vmlinux 0x3a3f64e4 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3a3fc09d blk_queue_max_discard_segments +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked +EXPORT_SYMBOL_GPL vmlinux 0x3a57d09d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3a61fce1 device_connection_find_match +EXPORT_SYMBOL_GPL vmlinux 0x3a8cdc5c __hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ac1a8e8 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x3b00603f iterate_mounts +EXPORT_SYMBOL_GPL vmlinux 0x3b0e1f78 to_software_node +EXPORT_SYMBOL_GPL vmlinux 0x3b164baa dev_nit_active +EXPORT_SYMBOL_GPL vmlinux 0x3b2dd76c pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x3b30d6cc kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x3b4c3d99 aead_exit_geniv +EXPORT_SYMBOL_GPL vmlinux 0x3b569d16 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x3b6c3b5f inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x3b7f0ba4 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x3b95f543 klp_shadow_free +EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3babbf4d gpiochip_generic_request +EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check +EXPORT_SYMBOL_GPL vmlinux 0x3c29310c devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3c2eff31 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c693875 pci_d3cold_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c6d685b exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x3c8f9e71 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x3c9a87f1 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x3cc60807 evm_set_key +EXPORT_SYMBOL_GPL vmlinux 0x3cce9b92 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d006d95 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x3d026222 sock_zerocopy_put +EXPORT_SYMBOL_GPL vmlinux 0x3d16ee7b gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x3d337033 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x3d34a29b sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check +EXPORT_SYMBOL_GPL vmlinux 0x3d521236 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3d743bfd netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3d74dbbf alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x3d872429 gpiochip_irq_map +EXPORT_SYMBOL_GPL vmlinux 0x3dc88b2c bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df13b0c srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x3e17d157 wbt_enable_default +EXPORT_SYMBOL_GPL vmlinux 0x3e25a5fb devlink_dpipe_table_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e279df6 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x3e3efaf2 ipl_info +EXPORT_SYMBOL_GPL vmlinux 0x3e3f243d dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x3e5f3e18 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e8e0db1 wbc_detach_inode +EXPORT_SYMBOL_GPL vmlinux 0x3eb32993 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x3ec439ae crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x3ed260aa rhashtable_walk_peek +EXPORT_SYMBOL_GPL vmlinux 0x3ee03d0f gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3f3e60ca device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3f7d9ff4 percpu_down_write +EXPORT_SYMBOL_GPL vmlinux 0x3f83b99c __sbitmap_queue_get +EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive +EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put +EXPORT_SYMBOL_GPL vmlinux 0x3fb88776 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3fef6f19 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x4003c1b5 dw_pcie_upconfig_setup +EXPORT_SYMBOL_GPL vmlinux 0x400e51b2 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4011ec25 fwnode_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x403fa8d5 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x4048d7e0 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x40621ae7 __bio_crypt_clone +EXPORT_SYMBOL_GPL vmlinux 0x406abd71 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free +EXPORT_SYMBOL_GPL vmlinux 0x40a4d95d crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0x40bb4f45 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x40c491d2 ncsi_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x40cc59e5 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x40d304ad tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x40d5970b skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped +EXPORT_SYMBOL_GPL vmlinux 0x40f8bd4e klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x410f47ef scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x4122d449 debugfs_lookup +EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x416da7fc crypto_grab_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x417d8076 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41984d83 xas_store +EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop +EXPORT_SYMBOL_GPL vmlinux 0x41aacc4c ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x41b200f9 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x41cd74db kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x41d0ee9b gpiochip_line_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x41d2948d property_entries_dup +EXPORT_SYMBOL_GPL vmlinux 0x41d91bbe kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x41e57ffe devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41fb68cb copy_from_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0x421158ed crypto_grab_shash +EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x42548360 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x425ebe26 lwtunnel_encap_add_ops +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4294eb3f __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x42b560c8 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x42bf7236 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x42c3b7f2 gmap_discard +EXPORT_SYMBOL_GPL vmlinux 0x42c7b994 mmu_notifier_put +EXPORT_SYMBOL_GPL vmlinux 0x42d7396f __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x42f18c31 bpf_prog_add +EXPORT_SYMBOL_GPL vmlinux 0x42f51902 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x42f7b057 devlink_net +EXPORT_SYMBOL_GPL vmlinux 0x430fa18b cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x43186cd1 __devm_create_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x433745f1 platform_msi_domain_alloc_irqs +EXPORT_SYMBOL_GPL vmlinux 0x4347ccb8 __bio_add_page +EXPORT_SYMBOL_GPL vmlinux 0x4362cb2d bpf_prog_create_from_user +EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4386ffb0 cio_halt +EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43c33665 isc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43de4f24 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x440be4b9 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x4412a6ec kthread_use_mm +EXPORT_SYMBOL_GPL vmlinux 0x4414e764 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x44178841 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x442073c2 virtqueue_get_desc_addr +EXPORT_SYMBOL_GPL vmlinux 0x44250e16 user_update +EXPORT_SYMBOL_GPL vmlinux 0x446aa422 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x44784ea7 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44886e75 gmap_register_pte_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44957dba kthread_unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x449983f9 vfs_writef +EXPORT_SYMBOL_GPL vmlinux 0x44b08008 gpiochip_get_desc +EXPORT_SYMBOL_GPL vmlinux 0x44ba8d3f tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str +EXPORT_SYMBOL_GPL vmlinux 0x44df18c4 sock_diag_destroy +EXPORT_SYMBOL_GPL vmlinux 0x44ffd893 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen +EXPORT_SYMBOL_GPL vmlinux 0x450f8f8b sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0x45145987 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x451bf97a blk_stat_enable_accounting +EXPORT_SYMBOL_GPL vmlinux 0x451c328f bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0x4536226a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x455a6a67 ccw_device_force_console +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4585c2bd fsl_mc_device_group +EXPORT_SYMBOL_GPL vmlinux 0x458f9cf5 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x45a05750 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x45bee52b nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0x45e19e87 tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46035f74 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x462c1c23 pci_set_host_bridge_release +EXPORT_SYMBOL_GPL vmlinux 0x46508626 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x4654e596 security_file_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4661257d bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x468627a6 dw_pcie_link_set_n_fts +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469d63c2 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x46cc16f2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x46d0f9bf platform_get_irq_byname_optional +EXPORT_SYMBOL_GPL vmlinux 0x46e163dd virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x46eb55f0 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put +EXPORT_SYMBOL_GPL vmlinux 0x46f47cf8 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x4713cea0 virtio_max_dma_size +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47388826 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x47463fa9 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47736f1f PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x47755659 percpu_free_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x477f0b20 __vfs_setxattr_noperm +EXPORT_SYMBOL_GPL vmlinux 0x4783f5f1 tty_release_struct +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a89953 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x47ba77ef css_sch_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47c2f080 devm_ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0x47dbb957 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x47e59ded vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x47f5c623 perf_trace_buf_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4809b725 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x4812e842 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x48234a5a gmap_disable +EXPORT_SYMBOL_GPL vmlinux 0x4847b09f get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x4856e696 bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x48783237 freq_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x489f4b52 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x48a7cab3 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x48b1bf32 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x48bbf525 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x48e79875 tty_kopen +EXPORT_SYMBOL_GPL vmlinux 0x48f668f3 devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node +EXPORT_SYMBOL_GPL vmlinux 0x4949093d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x494d4f6a gmap_shadow +EXPORT_SYMBOL_GPL vmlinux 0x4963e812 fat_truncate_time +EXPORT_SYMBOL_GPL vmlinux 0x49755d88 pci_hp_destroy +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499d69ba fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x49a6e8bd gpiochip_populate_parent_fwspec_fourcell +EXPORT_SYMBOL_GPL vmlinux 0x49d97d9e kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x49db5c64 __tracepoint_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x49dc9c0c simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ef8d6c devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x4a0b3236 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x4a0e591b __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0x4a0f2486 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a24b08e inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x4a2e1dae gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0x4a65d001 __xas_prev +EXPORT_SYMBOL_GPL vmlinux 0x4a6d1106 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x4a6e0fb3 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x4a72ebc1 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x4a840be8 nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x4ac6527e sched_trace_rq_avg_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ac70ebc rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x4aefd8bb sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x4b02f6a5 pci_msi_mask_irq +EXPORT_SYMBOL_GPL vmlinux 0x4b3d64a7 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x4b74a6f5 crypto_grab_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4b7c03e7 iomap_writepages +EXPORT_SYMBOL_GPL vmlinux 0x4b93bd46 sock_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x4ba0da02 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x4ba88dcb chsc_sgib +EXPORT_SYMBOL_GPL vmlinux 0x4bd162cd nvm_get_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x4bd89c5a css_chsc_characteristics +EXPORT_SYMBOL_GPL vmlinux 0x4beae578 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x4bf95e4b iomap_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4c0fdfca fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0x4c14d7ee inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x4c2023e2 inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4c330518 skb_clone_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x4c33a4c4 switchdev_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x4c6a22d8 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x4ca184ff anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4cc3e037 irq_chip_get_parent_state +EXPORT_SYMBOL_GPL vmlinux 0x4cd7cda4 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x4ceb3851 cio_tm_intrg +EXPORT_SYMBOL_GPL vmlinux 0x4cf21748 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d4d7b79 blk_mq_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x4d53a388 dst_cache_get_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x4d6d0bbc iommu_group_ref_get +EXPORT_SYMBOL_GPL vmlinux 0x4d7acdbb dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x4d7c5fad css_sch_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x4d91c1fd subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x4daf2802 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x4db8c599 iomap_dio_rw +EXPORT_SYMBOL_GPL vmlinux 0x4dd48832 irq_chip_mask_parent +EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x4dde2541 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4de5e6b5 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x4de7dd66 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x4df59580 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x4e19913a hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e202170 devlink_params_publish +EXPORT_SYMBOL_GPL vmlinux 0x4e3fd1b4 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x4e4043ce transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x4e51b4b3 get_device_system_crosststamp +EXPORT_SYMBOL_GPL vmlinux 0x4e6e24eb devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e702d74 crypto_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x4e9fc425 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt +EXPORT_SYMBOL_GPL vmlinux 0x4ec153c6 nr_running +EXPORT_SYMBOL_GPL vmlinux 0x4ec5f6d2 fscrypt_match_name +EXPORT_SYMBOL_GPL vmlinux 0x4eda64e8 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ee151f6 kthread_cancel_delayed_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f1e656f cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x4f3ea717 set_selection_kernel +EXPORT_SYMBOL_GPL vmlinux 0x4f46a0eb hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x4f5e2a37 fs_dax_get_by_bdev +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f74cdab __tcp_bpf_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x4fc9735f sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ffa8877 nvm_set_chunk_meta +EXPORT_SYMBOL_GPL vmlinux 0x5018d4ad pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x504e1837 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5068868d irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x506bc156 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x507ebc7d fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509eeddd attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x50a63f93 __tracepoint_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x50ab9516 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x50dec11b fib_rule_matchall +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5ca92 blk_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x512539e0 blk_queue_can_use_dma_map_merging +EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x51420b2e dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x51518763 kvm_read_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0x51570721 sfp_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x5158f542 software_node_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x517a7975 rsa_parse_pub_key +EXPORT_SYMBOL_GPL vmlinux 0x51b5d967 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x51d7b042 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51d9ddc5 pci_epc_write_header +EXPORT_SYMBOL_GPL vmlinux 0x51e18e02 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x51ecba3a scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x520e827c __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x521118e9 update_time +EXPORT_SYMBOL_GPL vmlinux 0x52121118 __tracepoint_non_standard_event +EXPORT_SYMBOL_GPL vmlinux 0x521229f0 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x5218d9f2 ftrace_ops_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x522b5f13 security_kernel_post_read_file +EXPORT_SYMBOL_GPL vmlinux 0x5236497d trace_clock +EXPORT_SYMBOL_GPL vmlinux 0x5252bb54 dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0x5259d050 devlink_port_params_register +EXPORT_SYMBOL_GPL vmlinux 0x5259e5d2 devm_gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x526ab881 devm_serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x52779576 fscrypt_file_open +EXPORT_SYMBOL_GPL vmlinux 0x5281d361 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x5284fb16 blk_mq_freeze_queue_wait +EXPORT_SYMBOL_GPL vmlinux 0x52864b89 __devm_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x52865daa posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52aa2195 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x52abe9e1 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags +EXPORT_SYMBOL_GPL vmlinux 0x52b320f2 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x52bbda02 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put +EXPORT_SYMBOL_GPL vmlinux 0x52deb1ba perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0x52e1be1d kset_find_obj +EXPORT_SYMBOL_GPL vmlinux 0x52eebcf9 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x53014062 ip6_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x53146943 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x532346a6 gpiod_set_config +EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x5365b878 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x53699a56 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5392d247 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x5395ca1e kvm_vcpu_map +EXPORT_SYMBOL_GPL vmlinux 0x5396f43f get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x539e747a mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x53a5fe85 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x5418113d subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54297303 crypto_cipher_decrypt_one +EXPORT_SYMBOL_GPL vmlinux 0x5432d368 devlink_dpipe_table_register +EXPORT_SYMBOL_GPL vmlinux 0x543eb1ad gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x54892731 sock_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a8481a blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x54c0a529 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x55011cd3 crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0x5502ed2c fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput +EXPORT_SYMBOL_GPL vmlinux 0x5537eff9 dma_buf_unpin +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5564d7ec attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x556cd102 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x558a5231 __synth_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x55948f19 iomap_zero_range +EXPORT_SYMBOL_GPL vmlinux 0x55c22b3a srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x55c92da1 pci_epf_bind +EXPORT_SYMBOL_GPL vmlinux 0x55ce58d3 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x55eecff4 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55f2580b __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x55f91924 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x560f3038 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x561cf350 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x568b41b8 blk_mq_bio_list_merge +EXPORT_SYMBOL_GPL vmlinux 0x569eab3b __sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x56b862d5 trace_array_put +EXPORT_SYMBOL_GPL vmlinux 0x56cceba6 skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x56d79f5a bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0x5708ea86 md_start +EXPORT_SYMBOL_GPL vmlinux 0x572f8272 devm_gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x574747f7 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x575b9e44 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x5761d053 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x57718ea9 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5774504a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x578a265e page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579dc389 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57e92e43 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x57f7fb12 appldata_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x5809ac00 pci_debug_err_id +EXPORT_SYMBOL_GPL vmlinux 0x581844aa __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x58392769 blk_queue_required_elevator_features +EXPORT_SYMBOL_GPL vmlinux 0x583b5675 tpm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5844d116 nf_queue_entry_free +EXPORT_SYMBOL_GPL vmlinux 0x58555f5b perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0x585cf846 sched_trace_rq_avg_dl +EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info +EXPORT_SYMBOL_GPL vmlinux 0x58836ebf simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x58985e90 verify_pkcs7_signature +EXPORT_SYMBOL_GPL vmlinux 0x58a3ea4b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x58ab2490 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x58b9e71c gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x58c087f3 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x58c4dd5f xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0x58d03a44 gpiochip_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x58def6ca sfp_module_remove +EXPORT_SYMBOL_GPL vmlinux 0x58f33545 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x58fdfee7 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5901d51c vtime_account_irq_enter +EXPORT_SYMBOL_GPL vmlinux 0x590f57a6 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x59359708 gmap_shadow_r3t +EXPORT_SYMBOL_GPL vmlinux 0x5939429d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5951dfba strp_done +EXPORT_SYMBOL_GPL vmlinux 0x598d142b strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x598d2f2f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x598e0d36 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x59e640c0 halt_poll_ns +EXPORT_SYMBOL_GPL vmlinux 0x59f71ece do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x59fbab0f kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL vmlinux 0x59ffdb89 appldata_unregister_ops +EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle +EXPORT_SYMBOL_GPL vmlinux 0x5a2f8b2c vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x5a3f919b crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x5a512763 tracepoint_srcu +EXPORT_SYMBOL_GPL vmlinux 0x5a545e73 platform_find_device_by_driver +EXPORT_SYMBOL_GPL vmlinux 0x5a5e0597 blk_mq_queue_inflight +EXPORT_SYMBOL_GPL vmlinux 0x5a5fecb3 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a675f11 devlink_region_snapshot_id_get +EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a83a7d8 md_bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x5abc74fe proc_create_net_single_write +EXPORT_SYMBOL_GPL vmlinux 0x5ad167a0 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5adbafb8 udp6_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b3787d6 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment +EXPORT_SYMBOL_GPL vmlinux 0x5b73f9ee __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x5b99a070 perf_event_pause +EXPORT_SYMBOL_GPL vmlinux 0x5b9d7126 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x5ba63bef property_entries_free +EXPORT_SYMBOL_GPL vmlinux 0x5bb2f872 ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5bb79ce3 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x5bc74d84 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfe808f rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c0b5787 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action +EXPORT_SYMBOL_GPL vmlinux 0x5c40ca23 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5c422095 vring_create_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5c8ef198 blk_ksm_init +EXPORT_SYMBOL_GPL vmlinux 0x5cba7f85 fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0x5cbf2dff cdrom_multisession +EXPORT_SYMBOL_GPL vmlinux 0x5cc93d57 open_related_ns +EXPORT_SYMBOL_GPL vmlinux 0x5cd48b93 pci_get_dsn +EXPORT_SYMBOL_GPL vmlinux 0x5d32c829 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x5d744739 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d80a74c dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5d891f88 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5d98046c pci_epc_remove_epf +EXPORT_SYMBOL_GPL vmlinux 0x5da3bdef component_add +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db89aba tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x5db931d3 fscrypt_set_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0x5dba9d1f badblocks_exit +EXPORT_SYMBOL_GPL vmlinux 0x5dbed86d pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5dc00b22 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x5dd59a29 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x5dff4eaa mm_account_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0x5e0f0b5b tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e671785 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0x5e6f50e3 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x5e97c925 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5eae92a4 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x5ecfc5e3 trace_array_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x5f10901f iomap_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x5f23be45 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5f23e3fa insert_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f35555d sk_psock_tls_strp_read +EXPORT_SYMBOL_GPL vmlinux 0x5f6b4015 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private +EXPORT_SYMBOL_GPL vmlinux 0x5f99c29e iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x5f9d4c7b pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0x5f9e69d4 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5fb41a5a sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL vmlinux 0x5fcf215f sk_set_peek_off +EXPORT_SYMBOL_GPL vmlinux 0x5feb3acc scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x601ba3eb __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x601f5d79 raw_v4_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0x60228160 scsi_dh_attach +EXPORT_SYMBOL_GPL vmlinux 0x60271fd0 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6029efd5 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x606356ff inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put +EXPORT_SYMBOL_GPL vmlinux 0x608f50d2 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60ad4f8d vfs_write +EXPORT_SYMBOL_GPL vmlinux 0x60cc8958 ima_file_hash +EXPORT_SYMBOL_GPL vmlinux 0x60cc8b04 irq_create_fwspec_mapping +EXPORT_SYMBOL_GPL vmlinux 0x60d5646b sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x60ed55df virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x60fe255a relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x6102cb38 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x6113fbe0 perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status +EXPORT_SYMBOL_GPL vmlinux 0x614b00c5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x616b30c7 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x61c80e9d tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x61d115af pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x61d932df pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x61f84b30 dw_pcie_ep_linkup +EXPORT_SYMBOL_GPL vmlinux 0x6202cf2b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x621baa2a crypto_stats_kpp_generate_public_key +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6246a629 synchronize_rcu_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0x624eeb1f init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x625f83dc dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0x62a8043c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift +EXPORT_SYMBOL_GPL vmlinux 0x62bc3247 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x62cc1328 serdev_device_write_buf +EXPORT_SYMBOL_GPL vmlinux 0x62d17755 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x62e0e1e6 fwnode_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x62f7999f iommu_sva_unbind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x62fd0204 xas_nomem +EXPORT_SYMBOL_GPL vmlinux 0x631ba529 software_node_unregister_node_group +EXPORT_SYMBOL_GPL vmlinux 0x63550cd6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x637c214b vtime_account_kernel +EXPORT_SYMBOL_GPL vmlinux 0x639b0e49 paste_selection +EXPORT_SYMBOL_GPL vmlinux 0x63acdc33 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0x63b1b4a8 cdrom_read_tocentry +EXPORT_SYMBOL_GPL vmlinux 0x63de7ecf tty_port_default_client_ops +EXPORT_SYMBOL_GPL vmlinux 0x63fb0417 perf_event_sysfs_show +EXPORT_SYMBOL_GPL vmlinux 0x6405e224 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x640ab48f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x640c9b03 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x641a6a92 access_process_vm +EXPORT_SYMBOL_GPL vmlinux 0x64232354 __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x6442ee1e dev_queue_xmit_nit +EXPORT_SYMBOL_GPL vmlinux 0x644fb370 mmu_interval_notifier_insert_locked +EXPORT_SYMBOL_GPL vmlinux 0x6472a2e7 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x64735080 iommu_device_unlink +EXPORT_SYMBOL_GPL vmlinux 0x6479c6d1 iomap_ioend_try_merge +EXPORT_SYMBOL_GPL vmlinux 0x647f2aee dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x64c8915a call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x64d73f63 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete +EXPORT_SYMBOL_GPL vmlinux 0x64ecf4eb gmap_pmdp_idte_global +EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0x6515c441 bpf_prog_inc +EXPORT_SYMBOL_GPL vmlinux 0x6519a677 dma_get_merge_boundary +EXPORT_SYMBOL_GPL vmlinux 0x651d2e15 devm_gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0x6531108f crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x6531bd4d gpiod_get_array_value +EXPORT_SYMBOL_GPL vmlinux 0x655c35cd devm_request_pci_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x655ebc3f gpiochip_reqres_irq +EXPORT_SYMBOL_GPL vmlinux 0x6567c7e5 skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x65786309 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x659e63f8 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x65a071ad ncsi_unregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x65a9339c pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e8485c bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0x65f0ed64 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x66071469 __netpoll_free +EXPORT_SYMBOL_GPL vmlinux 0x6611dc8e crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6625c2cd blk_mq_pci_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end +EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register +EXPORT_SYMBOL_GPL vmlinux 0x6657c464 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x666b755a __tracepoint_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6691c637 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x669fa270 net_ns_get_ownership +EXPORT_SYMBOL_GPL vmlinux 0x66a2b27b scsi_host_block +EXPORT_SYMBOL_GPL vmlinux 0x66a6c061 tracepoint_probe_register_prio +EXPORT_SYMBOL_GPL vmlinux 0x66b74f9d bsg_scsi_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f617e0 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x67016a3d dst_blackhole_mtu +EXPORT_SYMBOL_GPL vmlinux 0x670ad722 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x675d55b7 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x67904c40 __udp_enqueue_schedule_skb +EXPORT_SYMBOL_GPL vmlinux 0x6791f57b xas_find_conflict +EXPORT_SYMBOL_GPL vmlinux 0x6792e25a __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x67931889 devlink_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0x679392ad virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679e4817 fib_add_nexthop +EXPORT_SYMBOL_GPL vmlinux 0x67a8bca7 dax_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x67b710af driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67ebf647 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0x67f1b95b devlink_trap_policers_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68058d14 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x682eff49 blkg_lookup_slowpath +EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6844f41d iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x68575bbe bdi_dev_name +EXPORT_SYMBOL_GPL vmlinux 0x685d09ac __kprobe_event_gen_cmd_start +EXPORT_SYMBOL_GPL vmlinux 0x6871d5c4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6892e3c3 kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x68ae9a5b iommu_device_register +EXPORT_SYMBOL_GPL vmlinux 0x68b34923 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x68c5cd0b debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x68d74ee0 iommu_dev_enable_feature +EXPORT_SYMBOL_GPL vmlinux 0x68f8396e udp_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x69086442 devlink_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6910001f dma_can_mmap +EXPORT_SYMBOL_GPL vmlinux 0x6913865a trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a2654 software_node_find_by_name +EXPORT_SYMBOL_GPL vmlinux 0x698baafe verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x698e7e26 sbitmap_queue_clear +EXPORT_SYMBOL_GPL vmlinux 0x69b0a035 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x69dd3696 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x69e45adb irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen +EXPORT_SYMBOL_GPL vmlinux 0x69fdd27e kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x6a008077 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a2a3c32 unwind_get_return_address +EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a734696 ip6_pol_route +EXPORT_SYMBOL_GPL vmlinux 0x6a7b0b15 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a858949 sk_free_unlock_clone +EXPORT_SYMBOL_GPL vmlinux 0x6abee30a synth_event_trace_start +EXPORT_SYMBOL_GPL vmlinux 0x6ac3c0e1 __gmap_zap +EXPORT_SYMBOL_GPL vmlinux 0x6aca7237 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x6adeee2f blk_req_needs_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0x6b1c6704 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x6b22926b irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b2c0063 pernet_ops_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down +EXPORT_SYMBOL_GPL vmlinux 0x6b523d43 irq_chip_release_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x6b64524c tpm2_get_tpm_pt +EXPORT_SYMBOL_GPL vmlinux 0x6b67398c cio_cancel_halt_clear +EXPORT_SYMBOL_GPL vmlinux 0x6b7da1a3 report_iommu_fault +EXPORT_SYMBOL_GPL vmlinux 0x6bce89df add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save +EXPORT_SYMBOL_GPL vmlinux 0x6bdd7c2c serdev_device_write +EXPORT_SYMBOL_GPL vmlinux 0x6c04b604 uprobe_register_refctr +EXPORT_SYMBOL_GPL vmlinux 0x6c1c72f0 irq_chip_eoi_parent +EXPORT_SYMBOL_GPL vmlinux 0x6c398272 synth_event_trace_end +EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen +EXPORT_SYMBOL_GPL vmlinux 0x6c3f7ca0 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x6c5b5bc2 cio_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c69686d generic_online_page +EXPORT_SYMBOL_GPL vmlinux 0x6c93643f fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ce8435d pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6d0db697 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6d222bcd tpm2_get_cc_attrs_tbl +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d5ce483 sfp_module_insert +EXPORT_SYMBOL_GPL vmlinux 0x6d620590 nf_queue_nf_hook_drop +EXPORT_SYMBOL_GPL vmlinux 0x6d624b8e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6d753679 fsnotify_get_group +EXPORT_SYMBOL_GPL vmlinux 0x6d7e951e rcu_exp_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x6d952e1e pci_epc_get_msi +EXPORT_SYMBOL_GPL vmlinux 0x6d973d8a put_pid +EXPORT_SYMBOL_GPL vmlinux 0x6d98e80c perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6d9ee2a0 __request_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x6db19d81 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6dd2ddb0 sock_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6df8111d device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6e1991dc tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6e223907 iommu_device_link +EXPORT_SYMBOL_GPL vmlinux 0x6e3475c4 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x6e58e228 tcp_reno_undo_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x6e5fce9e clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ed7be4f ip_route_output_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom +EXPORT_SYMBOL_GPL vmlinux 0x6ef419e6 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6f0000d2 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x6f03e5b4 device_move +EXPORT_SYMBOL_GPL vmlinux 0x6f11538d noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 +EXPORT_SYMBOL_GPL vmlinux 0x6f12e69a serdev_device_set_parity +EXPORT_SYMBOL_GPL vmlinux 0x6f19c13a debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x6f34ff7e xfrm_state_mtu +EXPORT_SYMBOL_GPL vmlinux 0x6f39fd5e irq_chip_ack_parent +EXPORT_SYMBOL_GPL vmlinux 0x6f668ded dw_pcie_write_dbi +EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x6fa89784 irq_chip_disable_parent +EXPORT_SYMBOL_GPL vmlinux 0x6fbfed92 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x6fdfa484 iomap_fiemap +EXPORT_SYMBOL_GPL vmlinux 0x6febe676 devm_gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x6ff0b66c sbitmap_finish_wait +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions +EXPORT_SYMBOL_GPL vmlinux 0x702e42d3 bpf_trace_run4 +EXPORT_SYMBOL_GPL vmlinux 0x704c927e subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x706204ba gmap_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0x70754f2c bpf_sk_storage_diag_put +EXPORT_SYMBOL_GPL vmlinux 0x707ced00 sfp_register_socket +EXPORT_SYMBOL_GPL vmlinux 0x709a8ae8 iommu_aux_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x70c52dc5 nf_skb_duplicated +EXPORT_SYMBOL_GPL vmlinux 0x70db05d4 dax_region_put +EXPORT_SYMBOL_GPL vmlinux 0x70f89d53 rsa_parse_priv_key +EXPORT_SYMBOL_GPL vmlinux 0x70fc9028 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x713a7ec9 dw_pcie_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71650819 add_bootloader_randomness +EXPORT_SYMBOL_GPL vmlinux 0x716d74e4 platform_get_irq_optional +EXPORT_SYMBOL_GPL vmlinux 0x7179c31c zpci_iomap_start +EXPORT_SYMBOL_GPL vmlinux 0x71bcd9ac kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x71c43737 __kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x71e886e1 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x71f69a66 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71fb6572 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x71ff06fd fwnode_create_software_node +EXPORT_SYMBOL_GPL vmlinux 0x7218b57c tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x721afd58 xdp_attachment_query +EXPORT_SYMBOL_GPL vmlinux 0x721cf3fe tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x722522b4 serdev_device_set_flow_control +EXPORT_SYMBOL_GPL vmlinux 0x72295598 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x72475517 serdev_device_set_tiocm +EXPORT_SYMBOL_GPL vmlinux 0x726539a0 inet_hashinfo2_init_mod +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72849c90 irq_domain_create_hierarchy +EXPORT_SYMBOL_GPL vmlinux 0x72a33b6b virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x72bba2db debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x72c1aeeb __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x72ea56d6 kernfs_path_from_node +EXPORT_SYMBOL_GPL vmlinux 0x72fae42c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72fcc3a2 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7301cb8c bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x730258e9 pkcs7_verify +EXPORT_SYMBOL_GPL vmlinux 0x734dab7d do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x735b5e7c sbitmap_queue_wake_up +EXPORT_SYMBOL_GPL vmlinux 0x73771976 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x737c5286 sbitmap_get +EXPORT_SYMBOL_GPL vmlinux 0x73ad9aab fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x73bc03db iomap_seek_hole +EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap +EXPORT_SYMBOL_GPL vmlinux 0x73d52e0e sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x73e575d2 devm_pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0x73ef0a36 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x74100398 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x74129468 gmap_make_secure +EXPORT_SYMBOL_GPL vmlinux 0x7413f70b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x743a5053 blk_req_zone_write_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7445c919 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x7480cfc9 ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x74afa368 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c5d069 ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x74d83a83 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x74edb7f7 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x74f2c9a3 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75302996 crypto_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0x754bad7b proc_create_net_data_write +EXPORT_SYMBOL_GPL vmlinux 0x7554b896 zs_huge_class_size +EXPORT_SYMBOL_GPL vmlinux 0x7555dfaf crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7560b6dc tracing_snapshot_cond +EXPORT_SYMBOL_GPL vmlinux 0x75621049 crypto_stats_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x757867a3 cgroup_path_ns +EXPORT_SYMBOL_GPL vmlinux 0x7587a81c eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x758b0e81 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x758ee795 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness +EXPORT_SYMBOL_GPL vmlinux 0x75d0dd66 relay_late_setup_files +EXPORT_SYMBOL_GPL vmlinux 0x75d25e7e __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x75e37ea6 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled +EXPORT_SYMBOL_GPL vmlinux 0x75edf7b3 copy_from_kernel_nofault +EXPORT_SYMBOL_GPL vmlinux 0x75fda9a7 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x76059809 addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0x7612f095 firmware_request_cache +EXPORT_SYMBOL_GPL vmlinux 0x764e8616 tty_save_termios +EXPORT_SYMBOL_GPL vmlinux 0x765f2f1b cgroup_get_from_fd +EXPORT_SYMBOL_GPL vmlinux 0x7661d41d class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key +EXPORT_SYMBOL_GPL vmlinux 0x769aa96c kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x76dbcc11 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x76e0480d _proc_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x76edd4ef srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x76fe1444 iomap_page_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77371b2d ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x773aa517 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x7743d252 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7745df6e iommu_sva_bind_device +EXPORT_SYMBOL_GPL vmlinux 0x7762dc59 pci_hp_add +EXPORT_SYMBOL_GPL vmlinux 0x777149f1 badblocks_clear +EXPORT_SYMBOL_GPL vmlinux 0x77749bc5 sk_psock_drop +EXPORT_SYMBOL_GPL vmlinux 0x7791e066 dw_pcie_read +EXPORT_SYMBOL_GPL vmlinux 0x7797ddc4 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x779a0ccb ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x779f9389 pci_epf_destroy +EXPORT_SYMBOL_GPL vmlinux 0x77b12e30 __generic_fsdax_supported +EXPORT_SYMBOL_GPL vmlinux 0x77d8a091 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put +EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key +EXPORT_SYMBOL_GPL vmlinux 0x77f5857a irq_domain_free_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0x78041b8f byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x78241fa6 iommu_sva_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0x7826d5dd user_read +EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available +EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot +EXPORT_SYMBOL_GPL vmlinux 0x789cddd5 __udp_gso_segment +EXPORT_SYMBOL_GPL vmlinux 0x78ac359b crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x78c1ef2b fscrypt_get_symlink +EXPORT_SYMBOL_GPL vmlinux 0x78cc894b skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x78cdaa56 akcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x78d5bf98 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x78e8f313 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x78e93caf bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7905a5f7 dw_pcie_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7951df8a net_dm_hw_report +EXPORT_SYMBOL_GPL vmlinux 0x797f63eb freq_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x79910a0d perf_get_aux +EXPORT_SYMBOL_GPL vmlinux 0x79c2fd57 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e7bb6a crypto_req_done +EXPORT_SYMBOL_GPL vmlinux 0x7a08deef hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x7a508557 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x7a65a605 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7a71af77 add_memory_driver_managed +EXPORT_SYMBOL_GPL vmlinux 0x7a7dcd9f xas_find +EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a874aae sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a92eba7 fsnotify_destroy_mark +EXPORT_SYMBOL_GPL vmlinux 0x7afe324e halt_poll_ns_grow +EXPORT_SYMBOL_GPL vmlinux 0x7b179e47 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x7b17e33b dst_cache_set_ip4 +EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b65df5b firmware_request_platform +EXPORT_SYMBOL_GPL vmlinux 0x7b93087c pci_msi_create_irq_domain +EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x7b9f18ea crypto_register_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x7ba82060 crypto_stats_rng_generate +EXPORT_SYMBOL_GPL vmlinux 0x7bdee056 dw_pcie_msi_init +EXPORT_SYMBOL_GPL vmlinux 0x7bf481ab dw_pcie_setup_rc +EXPORT_SYMBOL_GPL vmlinux 0x7bfc4919 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x7c0943e4 irq_domain_free_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x7c09b967 serdev_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7c0e27d8 set_capacity_revalidate_and_notify +EXPORT_SYMBOL_GPL vmlinux 0x7c25e365 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x7c2d392d trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7c3378b3 pkcs7_parse_message +EXPORT_SYMBOL_GPL vmlinux 0x7c33c0d4 irq_chip_request_resources_parent +EXPORT_SYMBOL_GPL vmlinux 0x7c35e60a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x7c47ec5a blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c7f5094 pci_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x7c94c99a kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7ca57491 sbitmap_queue_resize +EXPORT_SYMBOL_GPL vmlinux 0x7cabd7de sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cb2cdbc skb_gso_validate_network_len +EXPORT_SYMBOL_GPL vmlinux 0x7cb2d2b9 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x7cbd5570 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats +EXPORT_SYMBOL_GPL vmlinux 0x7cde3f09 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ced73ea dw_pcie_ep_init +EXPORT_SYMBOL_GPL vmlinux 0x7cf1340e virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cf8f1d3 devm_gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x7d0180d8 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x7d2e6988 skcipher_walk_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x7d60a863 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x7d6153cb __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x7d7a14ee crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7d9c9acf __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x7d9dd40b sbitmap_show +EXPORT_SYMBOL_GPL vmlinux 0x7da1233b shash_free_singlespawn_instance +EXPORT_SYMBOL_GPL vmlinux 0x7db9a2e2 balloon_aops +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddb2718 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x7dde4281 devm_gpiod_unhinge +EXPORT_SYMBOL_GPL vmlinux 0x7de6cc23 io_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x7def1579 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x7e315e78 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x7e3e51de account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0x7e7b129d init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7e883f79 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x7e88b534 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7eb66d98 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu +EXPORT_SYMBOL_GPL vmlinux 0x7ed06d53 device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0x7ed43e0b crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x7edfdb92 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7f04b1c5 cio_clear +EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata +EXPORT_SYMBOL_GPL vmlinux 0x7f906a43 kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL vmlinux 0x7f913db3 metadata_dst_free +EXPORT_SYMBOL_GPL vmlinux 0x7f9c234c serdev_controller_add +EXPORT_SYMBOL_GPL vmlinux 0x7fb5c074 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x7fb665fa inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x7fd92708 metadata_dst_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x8018dd30 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x801beb36 is_current_mnt_ns +EXPORT_SYMBOL_GPL vmlinux 0x803f7fa6 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put +EXPORT_SYMBOL_GPL vmlinux 0x8062bd8b sched_trace_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0x807fdcc4 call_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0x80826da1 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x80853edf device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8094815e sysfs_group_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x80999370 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x809ca65f devlink_dpipe_match_put +EXPORT_SYMBOL_GPL vmlinux 0x809f824a class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80a46aa0 sysfs_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x80b109d4 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x80bb0819 pci_epc_raise_irq +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cc4885 inet6_hash +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80fb44b1 software_node_register_node_group +EXPORT_SYMBOL_GPL vmlinux 0x812d7ec4 pci_epf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x812ea476 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x8149f984 put_device +EXPORT_SYMBOL_GPL vmlinux 0x81555ed5 xas_init_marks +EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8163eefd br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x8180667e pktgen_xfrm_outer_mode_output +EXPORT_SYMBOL_GPL vmlinux 0x81d7c5b7 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x81e6e00e pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x824b95fe xfrm_state_afinfo_get_rcu +EXPORT_SYMBOL_GPL vmlinux 0x824ed2d5 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x826494ed fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x826eae76 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x8272f230 tcp_enter_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0x8281f3fe dynevent_create +EXPORT_SYMBOL_GPL vmlinux 0x829654bb __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x82a36215 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x82c2bad0 netdev_walk_all_lower_dev +EXPORT_SYMBOL_GPL vmlinux 0x82cc542c tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82d85ca2 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x83094746 pci_sriov_configure_simple +EXPORT_SYMBOL_GPL vmlinux 0x8337b47b fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x8348e4f0 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x837213bb kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x839dfdc0 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x83aa84da ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x83b238f2 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0x83bdc76f fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x83d079f5 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x83dc1676 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x83eec2d3 perf_aux_output_flag +EXPORT_SYMBOL_GPL vmlinux 0x83f446a6 kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x840cd009 gpiochip_get_data +EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv +EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype +EXPORT_SYMBOL_GPL vmlinux 0x842a49f1 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno +EXPORT_SYMBOL_GPL vmlinux 0x84513dca check_move_unevictable_pages +EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x84604625 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x846110b9 virtqueue_get_avail_addr +EXPORT_SYMBOL_GPL vmlinux 0x846fe246 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x84a0ef8f xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x84d6e351 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x84d9cb2d gpiod_set_transitory +EXPORT_SYMBOL_GPL vmlinux 0x84ffd326 xdp_return_frame +EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x850c10de blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x85162656 create_signature +EXPORT_SYMBOL_GPL vmlinux 0x85169605 sysfs_create_link_nowarn +EXPORT_SYMBOL_GPL vmlinux 0x8517f118 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x853a250a iommu_dev_has_feature +EXPORT_SYMBOL_GPL vmlinux 0x853b0096 nf_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x854bf932 nf_checksum_partial +EXPORT_SYMBOL_GPL vmlinux 0x855786cc unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x857db3b7 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x858b618d blk_mq_force_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0x85911611 pci_epf_match_device +EXPORT_SYMBOL_GPL vmlinux 0x85a33397 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x85a49dc7 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0x85b38978 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0x85b51667 kvm_vcpu_gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x85bcf9a7 __sbitmap_queue_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x85c2f118 pci_ats_supported +EXPORT_SYMBOL_GPL vmlinux 0x85fb8b8a do_tcp_sendpages +EXPORT_SYMBOL_GPL vmlinux 0x8606328c skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x86248ec5 __audit_log_nfcfg +EXPORT_SYMBOL_GPL vmlinux 0x862a9644 inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x86568272 irq_domain_free_irqs_common +EXPORT_SYMBOL_GPL vmlinux 0x86585a33 devlink_fmsg_obj_nest_start +EXPORT_SYMBOL_GPL vmlinux 0x86752bc8 scsi_host_busy_iter +EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0x867e692c inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86b0b6ba zpci_barrier +EXPORT_SYMBOL_GPL vmlinux 0x86c961b3 __set_dax_synchronous +EXPORT_SYMBOL_GPL vmlinux 0x86ec1652 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x86ee4603 security_file_permission +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue +EXPORT_SYMBOL_GPL vmlinux 0x8703a18a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x871418f1 pci_epc_put +EXPORT_SYMBOL_GPL vmlinux 0x871dd237 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x87311352 gpiochip_irqchip_add_key +EXPORT_SYMBOL_GPL vmlinux 0x8743d151 iommu_sva_bind_gpasid +EXPORT_SYMBOL_GPL vmlinux 0x875992e4 sbitmap_get_shallow +EXPORT_SYMBOL_GPL vmlinux 0x877130df bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x87745fd1 freq_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x8792aa8a virtio_config_enable +EXPORT_SYMBOL_GPL vmlinux 0x8792ed42 __wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x87a72fe3 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x87be8106 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x87c4a5fb cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x87d06dbe md_bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x87d27573 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x87de8055 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x87f45f6c gmap_shadow_pgt +EXPORT_SYMBOL_GPL vmlinux 0x87f593ce bpf_redirect_info +EXPORT_SYMBOL_GPL vmlinux 0x87ff92a5 ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0x8801ef19 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x8843736b fwnode_get_name +EXPORT_SYMBOL_GPL vmlinux 0x8852e85f dw_pcie_wait_for_link +EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x8867688e crypto_stats_init +EXPORT_SYMBOL_GPL vmlinux 0x886d9fc4 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x88707558 sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x889120af kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x8895c491 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x889c27dd strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x88a67e43 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x88c407dd tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x88dfb079 xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x88f58bdf security_kernel_load_data +EXPORT_SYMBOL_GPL vmlinux 0x88f94ef7 crypto_unregister_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x8902caac bpf_offload_dev_netdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8913adab blk_mq_init_queue_data +EXPORT_SYMBOL_GPL vmlinux 0x89237aef crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892bb843 screen_pos +EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894af7e7 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x89981329 dm_per_bio_data +EXPORT_SYMBOL_GPL vmlinux 0x89c1803b lwtunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x89c2b6f4 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x89c2ea7c platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x89d6cab0 bsg_job_put +EXPORT_SYMBOL_GPL vmlinux 0x89ef14fd __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x89f1cb28 pci_host_probe +EXPORT_SYMBOL_GPL vmlinux 0x8a0a994f tty_ldisc_release +EXPORT_SYMBOL_GPL vmlinux 0x8a0fae20 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8a16d44a rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a3c970e xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x8a3d0f6b cgrp_dfl_root +EXPORT_SYMBOL_GPL vmlinux 0x8a5045ac udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x8a615a20 __kprobe_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a63bf7a gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x8a7214ae serdev_device_open +EXPORT_SYMBOL_GPL vmlinux 0x8a88db1f gpiod_get_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8aa0d025 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x8aa7e63a platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8ab04063 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad917d2 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b0a5646 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x8b1095d4 inode_dax +EXPORT_SYMBOL_GPL vmlinux 0x8b155800 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x8b1641fd xas_create_range +EXPORT_SYMBOL_GPL vmlinux 0x8b34bcae elv_rqhash_del +EXPORT_SYMBOL_GPL vmlinux 0x8b440079 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x8b7fa44a __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8b96669d device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8bb89e52 gmap_put +EXPORT_SYMBOL_GPL vmlinux 0x8bded20f zpci_load +EXPORT_SYMBOL_GPL vmlinux 0x8bfc383f irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c1ee869 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x8c479745 __cpuhp_state_remove_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c522546 scsi_internal_device_unblock_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8c5a112c register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8c772c76 synth_event_gen_cmd_array_start +EXPORT_SYMBOL_GPL vmlinux 0x8c78bde0 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x8c886e1c fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x8ca2693d sbitmap_init_node +EXPORT_SYMBOL_GPL vmlinux 0x8cab82d3 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8cda64bd serdev_device_wait_until_sent +EXPORT_SYMBOL_GPL vmlinux 0x8ce29d25 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x8cee2460 __percpu_down_read +EXPORT_SYMBOL_GPL vmlinux 0x8d10cc98 serdev_device_set_baudrate +EXPORT_SYMBOL_GPL vmlinux 0x8d1549aa bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8d154c9f trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x8d1607de pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d3e5b33 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8d428154 xdp_attachment_flags_ok +EXPORT_SYMBOL_GPL vmlinux 0x8d67001d ip_fib_metrics_init +EXPORT_SYMBOL_GPL vmlinux 0x8d7a857d bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8d8dc84a fwnode_graph_get_remote_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x8db7902b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x8de2c0f5 md_run +EXPORT_SYMBOL_GPL vmlinux 0x8e11e289 ccw_device_get_schid +EXPORT_SYMBOL_GPL vmlinux 0x8e16a6c6 sfp_bus_add_upstream +EXPORT_SYMBOL_GPL vmlinux 0x8e23d58f offline_and_remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x8e25b6de platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x8e4eb451 bpf_sk_storage_diag_free +EXPORT_SYMBOL_GPL vmlinux 0x8e4f8d80 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8e7707fb __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x8e95654e fuse_dev_alloc_install +EXPORT_SYMBOL_GPL vmlinux 0x8ea5ec48 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x8ec49502 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x8eccea42 __fscrypt_prepare_link +EXPORT_SYMBOL_GPL vmlinux 0x8ee0cb79 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f087161 device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x8f088f66 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x8f38d4db dax_iomap_rw +EXPORT_SYMBOL_GPL vmlinux 0x8f4fb1c0 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x8f5bf523 __zpci_load +EXPORT_SYMBOL_GPL vmlinux 0x8f5e9ea2 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0x8f803cfb pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x8fb742a6 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x8fba5d14 tcp_register_ulp +EXPORT_SYMBOL_GPL vmlinux 0x8fd49d5b fwnode_graph_get_remote_port +EXPORT_SYMBOL_GPL vmlinux 0x8fdba33e dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x8fe8f775 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x8fed8941 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x901cdf12 linear_hugepage_index +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x904be057 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x9051df79 blk_mq_make_request +EXPORT_SYMBOL_GPL vmlinux 0x90680e0e crypto_register_acomp +EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put +EXPORT_SYMBOL_GPL vmlinux 0x9075cecd blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x90896f02 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x908f30a1 skcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x90907c6a __kthread_init_worker +EXPORT_SYMBOL_GPL vmlinux 0x9095f42f net_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x9099d4d9 cio_update_schib +EXPORT_SYMBOL_GPL vmlinux 0x90a1c2bc proc_douintvec_minmax +EXPORT_SYMBOL_GPL vmlinux 0x90b50576 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x90eed8f0 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x90fc70c3 devlink_net_set +EXPORT_SYMBOL_GPL vmlinux 0x91320455 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x9132ff9f call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x914628d9 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x914db15b switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x915f9ff3 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x916c3725 nexthop_for_each_fib6_nh +EXPORT_SYMBOL_GPL vmlinux 0x9182f728 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x918ae9aa pci_status_get_and_clear_errors +EXPORT_SYMBOL_GPL vmlinux 0x91a55068 public_key_free +EXPORT_SYMBOL_GPL vmlinux 0x91a92096 sock_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x91d7a077 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x91dfebeb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x91eb518d klist_init +EXPORT_SYMBOL_GPL vmlinux 0x9211b962 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9258c06c wbc_account_cgroup_owner +EXPORT_SYMBOL_GPL vmlinux 0x92674fc1 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x9286784a cmf_readall +EXPORT_SYMBOL_GPL vmlinux 0x928c68bc devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x92a03234 skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0x92a675f1 switchdev_handle_port_obj_add +EXPORT_SYMBOL_GPL vmlinux 0x92a8c268 kthread_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x92b5bb1f tty_ldisc_receive_buf +EXPORT_SYMBOL_GPL vmlinux 0x92cdf69b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x92da914d fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work +EXPORT_SYMBOL_GPL vmlinux 0x92f1c767 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x92f6c4ca pci_aer_clear_nonfatal_status +EXPORT_SYMBOL_GPL vmlinux 0x92fa9d63 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x930576c3 do_truncate +EXPORT_SYMBOL_GPL vmlinux 0x930eca5e bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x93170790 blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x9319a80e gpiod_toggle_active_low +EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x93725986 __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x937668d0 validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x938e9501 wait_on_page_writeback +EXPORT_SYMBOL_GPL vmlinux 0x93922111 get_compat_bpf_fprog +EXPORT_SYMBOL_GPL vmlinux 0x93bc1bbb napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x93bd9d12 chp_get_sch_opm +EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report +EXPORT_SYMBOL_GPL vmlinux 0x94019aca devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x94123ecb xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x94328e6a ip6_dst_lookup_tunnel +EXPORT_SYMBOL_GPL vmlinux 0x94406a1a arch_make_page_accessible +EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x94943717 rhashtable_walk_enter +EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create +EXPORT_SYMBOL_GPL vmlinux 0x94b4ad08 blkcg_root_css +EXPORT_SYMBOL_GPL vmlinux 0x94c140f1 device_connection_add +EXPORT_SYMBOL_GPL vmlinux 0x94c52ff7 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x94d83a19 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x94ecc155 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f3ff68 tun_get_tx_ring +EXPORT_SYMBOL_GPL vmlinux 0x94f86601 crypto_unregister_scomp +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950e4490 io_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x951a2773 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956633db perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959ec5f5 call_rcu_tasks +EXPORT_SYMBOL_GPL vmlinux 0x959fde82 gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x95bd7071 devm_free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x95da3db5 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x95da5123 pkcs7_free_message +EXPORT_SYMBOL_GPL vmlinux 0x96031395 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x960675be pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x96080d2d sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x96251a70 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x962761f6 pkcs7_get_content_data +EXPORT_SYMBOL_GPL vmlinux 0x962e6f36 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965758d0 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9666f130 gmap_unregister_pte_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9672989a cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x96a028ff skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x96ad4eec platform_unregister_drivers +EXPORT_SYMBOL_GPL vmlinux 0x96c3afb6 xdp_rxq_info_unreg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x96ce943a ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x96d18b28 devm_gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x97012521 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x970368ed blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x974e5107 gmap_translate +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9756e1bc device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x97980cfe l3mdev_master_ifindex_rcu +EXPORT_SYMBOL_GPL vmlinux 0x979fc133 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x97a408e8 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x97be6050 blk_mq_rdma_map_queues +EXPORT_SYMBOL_GPL vmlinux 0x97c523e5 hrtimer_sleeper_start_expires +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x97fde273 skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x97ff91d9 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x98030cab handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x981f7c9e badblocks_init +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9861830b housekeeping_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988ac130 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str +EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fecc00 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x9926af02 securityfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9950511f blk_mq_sched_request_inserted +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9961c198 proc_create_net_data +EXPORT_SYMBOL_GPL vmlinux 0x996caf2b debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x998819f5 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x99a15319 scsi_host_unblock +EXPORT_SYMBOL_GPL vmlinux 0x99b1dd65 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x99e203df bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x99e8566c transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at +EXPORT_SYMBOL_GPL vmlinux 0x99fd84a9 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0x9a0f4001 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a17504e kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x9a1f7f01 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a446b50 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x9a759f4d crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0x9a791dd3 gpiochip_irqchip_add_domain +EXPORT_SYMBOL_GPL vmlinux 0x9a817328 fib_rules_dump +EXPORT_SYMBOL_GPL vmlinux 0x9ae2da16 sbitmap_add_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af8cbd8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x9afb253b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x9b0d3882 kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x9b2f128e ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9b5da71f devlink_port_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b6ac7cf encrypt_blob +EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x9b718868 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x9b896724 devlink_param_value_str_fill +EXPORT_SYMBOL_GPL vmlinux 0x9b9071cb get_old_itimerspec32 +EXPORT_SYMBOL_GPL vmlinux 0x9bc77923 __tracepoint_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf7e791 debugfs_write_file_bool +EXPORT_SYMBOL_GPL vmlinux 0x9c07c257 __ndisc_fill_addr_option +EXPORT_SYMBOL_GPL vmlinux 0x9c2063c6 devm_gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x9c292f4c dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c3557c9 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c4fafc6 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x9c50b8a9 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9c60b14a kvm_map_gfn +EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x9c86e62c s390_pci_dma_ops +EXPORT_SYMBOL_GPL vmlinux 0x9c9f71de devlink_port_register +EXPORT_SYMBOL_GPL vmlinux 0x9cd75dba watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x9cde4b7c sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x9cfe841c fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x9d06e990 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9d09e8ae ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9d3fa8f9 dw_pcie_link_set_max_speed +EXPORT_SYMBOL_GPL vmlinux 0x9d52004d fib_nl_newrule +EXPORT_SYMBOL_GPL vmlinux 0x9d5da2df proc_create_net_single +EXPORT_SYMBOL_GPL vmlinux 0x9d6f732d relay_close +EXPORT_SYMBOL_GPL vmlinux 0x9d7a4a7b pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x9d87ca34 bpf_trace_run2 +EXPORT_SYMBOL_GPL vmlinux 0x9d8e5821 __fscrypt_encrypt_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9d976aa0 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x9da17926 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x9dab019d xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x9de43cb2 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x9de81a5d alloc_empty_file +EXPORT_SYMBOL_GPL vmlinux 0x9ded285d tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9e08d700 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x9e26e101 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x9e442674 mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e650260 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x9e691c7e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9e6e2591 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x9e7c7214 devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0x9e8ded7a path_noexec +EXPORT_SYMBOL_GPL vmlinux 0x9ec054d5 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x9ecc05f2 fsverity_ioctl_enable +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee14bb8 zpci_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x9ef3e66b devlink_traps_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f1603ff fib6_new_table +EXPORT_SYMBOL_GPL vmlinux 0x9f24be87 srcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x9f2cafcb do_xdp_generic +EXPORT_SYMBOL_GPL vmlinux 0x9f36457e __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f49b8e4 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9fc2b65c md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff64f16 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xa0397277 cio_enable_subchannel +EXPORT_SYMBOL_GPL vmlinux 0xa041142f rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0547ac0 metadata_dst_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa05e7fea get_ccwdev_by_dev_id +EXPORT_SYMBOL_GPL vmlinux 0xa05f3b7a blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xa08e3b90 page_endio +EXPORT_SYMBOL_GPL vmlinux 0xa0b9f791 gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xa0bf3e40 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa0c98dde pci_msi_unmask_irq +EXPORT_SYMBOL_GPL vmlinux 0xa0d3456d nr_swap_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0e74f9b blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xa0eff6af bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xa0f0f394 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa0f1f3da transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa10afe0d platform_irq_count +EXPORT_SYMBOL_GPL vmlinux 0xa1651e93 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xa16a441e unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xa16dc0d1 synth_event_add_next_val +EXPORT_SYMBOL_GPL vmlinux 0xa171caa0 pci_hp_del +EXPORT_SYMBOL_GPL vmlinux 0xa177aa2c devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0xa1972716 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa1c3cfd7 __fscrypt_prepare_rename +EXPORT_SYMBOL_GPL vmlinux 0xa1c4231f kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0xa1cd4d9e vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa219da51 loop_backing_file +EXPORT_SYMBOL_GPL vmlinux 0xa2504024 ip6_input +EXPORT_SYMBOL_GPL vmlinux 0xa26bed8e bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2ab46e4 debugfs_real_fops +EXPORT_SYMBOL_GPL vmlinux 0xa2b0377d relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xa2b57a72 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa2c3364e fat_update_time +EXPORT_SYMBOL_GPL vmlinux 0xa2d39a5e tpm_is_tpm2 +EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers +EXPORT_SYMBOL_GPL vmlinux 0xa30803d2 metadata_dst_alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0xa3138213 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xa3270c0c bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xa3334847 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xa339c677 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3568b2b acomp_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa35adbcb validate_xmit_xfrm +EXPORT_SYMBOL_GPL vmlinux 0xa35b6265 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xa35c7ed1 iomap_finish_ioends +EXPORT_SYMBOL_GPL vmlinux 0xa3659b5f __tracepoint_devlink_hwerr +EXPORT_SYMBOL_GPL vmlinux 0xa368a50c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xa3916a2a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xa3b8cce2 __pci_hp_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3bb327d bpf_offload_dev_create +EXPORT_SYMBOL_GPL vmlinux 0xa3e424dc irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0xa400e6ce driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa411bfac percpu_up_write +EXPORT_SYMBOL_GPL vmlinux 0xa4263b2c skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xa42a9fbb s390_reset_acc +EXPORT_SYMBOL_GPL vmlinux 0xa42dcd8f sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print +EXPORT_SYMBOL_GPL vmlinux 0xa471982d dm_table_set_type +EXPORT_SYMBOL_GPL vmlinux 0xa476626a fwnode_device_is_available +EXPORT_SYMBOL_GPL vmlinux 0xa498d895 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0xa4d6a41e pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xa4e50315 devres_alloc_node +EXPORT_SYMBOL_GPL vmlinux 0xa4e77d4e perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xa4f25856 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa5126531 tpm_chip_stop +EXPORT_SYMBOL_GPL vmlinux 0xa512a1a2 split_page +EXPORT_SYMBOL_GPL vmlinux 0xa515a739 irq_domain_translate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xa521ff6e fsverity_verify_bio +EXPORT_SYMBOL_GPL vmlinux 0xa5341904 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa53b36e2 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xa5745f0c gmap_mark_unmergeable +EXPORT_SYMBOL_GPL vmlinux 0xa57d3420 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa5a7649f pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xa5c8645b css_general_characteristics +EXPORT_SYMBOL_GPL vmlinux 0xa5c95e90 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa5ed32e0 alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0xa5eee841 dma_resv_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa604eb5f sk_msg_free +EXPORT_SYMBOL_GPL vmlinux 0xa61068c8 fscrypt_show_test_dummy_encryption +EXPORT_SYMBOL_GPL vmlinux 0xa6216333 nexthop_find_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa62fd1ee fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xa65fac73 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xa6824f3f __tracepoint_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xa69ea80a bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0xa6bdb43f iomap_migrate_page +EXPORT_SYMBOL_GPL vmlinux 0xa6d09bfc kill_pid_usb_asyncio +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ee5de8 bpf_trace_run3 +EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa71af192 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xa71e6088 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa730eeb1 devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0xa75dbf2d pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xa7c8d525 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xa7e4b534 sbitmap_queue_show +EXPORT_SYMBOL_GPL vmlinux 0xa7ee8203 iommu_aux_get_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa7fe2927 fscrypt_ioctl_remove_key +EXPORT_SYMBOL_GPL vmlinux 0xa8337951 bpf_map_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xa83eb0f0 rhltable_init +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85656fe debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xa868d9da mddev_init_writes_pending +EXPORT_SYMBOL_GPL vmlinux 0xa8aff70e seg6_do_srh_encap +EXPORT_SYMBOL_GPL vmlinux 0xa8b1d8cf platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa8bd0cef module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa8d29927 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xa91445eb sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0xa91a6984 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xa9220d2c sysfs_unbreak_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xa92f4a84 device_add +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa95ca257 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa97c422e __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xa98ec453 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9b6b1d5 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xa9c435b5 fuse_fill_super_common +EXPORT_SYMBOL_GPL vmlinux 0xa9d0ab1f trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xa9d3aee0 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ff15b9 s390_enable_sie +EXPORT_SYMBOL_GPL vmlinux 0xaa12a8ef tcp_is_ulp_esp +EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xaa25eb48 fork_usermode_blob +EXPORT_SYMBOL_GPL vmlinux 0xaa326c62 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xaa61de11 irq_stat +EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush +EXPORT_SYMBOL_GPL vmlinux 0xaa858a5c generic_file_buffered_read +EXPORT_SYMBOL_GPL vmlinux 0xaa97a81b crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xaa9c21a5 iommu_page_response +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac323cb xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xaac5f5ec l3mdev_fib_table_by_index +EXPORT_SYMBOL_GPL vmlinux 0xaaea2e53 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xab04a968 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xab100371 devlink_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0xab19cd10 crypto_unregister_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xab2b6fee kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xab4c7f0d irq_domain_alloc_irqs_parent +EXPORT_SYMBOL_GPL vmlinux 0xab6b76a5 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xab6e99f2 thp_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xab815c97 pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xab97a97d s390_handle_mcck +EXPORT_SYMBOL_GPL vmlinux 0xab992d18 query_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xabac10b7 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd2207f blk_mq_sched_try_insert_merge +EXPORT_SYMBOL_GPL vmlinux 0xac2640d5 bio_release_pages +EXPORT_SYMBOL_GPL vmlinux 0xac280b77 synth_event_trace_array +EXPORT_SYMBOL_GPL vmlinux 0xac457dc3 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xac545d91 devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xac5a789c trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0xac91ef8f ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0xaca7b9b2 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xacc9e72d dax_iomap_fault +EXPORT_SYMBOL_GPL vmlinux 0xacd23e6f zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xacdc343b ncsi_start_dev +EXPORT_SYMBOL_GPL vmlinux 0xace4af27 fsverity_cleanup_inode +EXPORT_SYMBOL_GPL vmlinux 0xad1bb874 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xad3b1547 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xad3dfa13 lgr_info_log +EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad4ff316 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xad8e06db devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0xad9943e0 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadaaa3ae diag308 +EXPORT_SYMBOL_GPL vmlinux 0xaddca446 blk_queue_flag_test_and_set +EXPORT_SYMBOL_GPL vmlinux 0xadf9699b pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xae17db4b irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xae237341 __fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae2d4d20 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xae3b3418 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xae3cb114 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae772d50 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae87f118 devlink_resource_register +EXPORT_SYMBOL_GPL vmlinux 0xae8d13d6 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xae9b5817 css_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaea1d7f2 pci_epc_get_features +EXPORT_SYMBOL_GPL vmlinux 0xaeb6f0be __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0xaebc534f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xaee0da62 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xaee7ea73 __serdev_device_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xaf22dcfb crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xaf55b778 bio_disassociate_blkg +EXPORT_SYMBOL_GPL vmlinux 0xaf69b6d5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaf905c8c rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xafc421da bpf_prog_sub +EXPORT_SYMBOL_GPL vmlinux 0xafc8f6ec blkdev_zone_mgmt +EXPORT_SYMBOL_GPL vmlinux 0xafd48691 sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0xafd6c285 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xafe7d7e8 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xb010689a gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb01a8ebb sk_msg_memcopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xb01d1c45 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xb029a0a7 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xb0304aaf fwnode_graph_get_port_parent +EXPORT_SYMBOL_GPL vmlinux 0xb046ff5c gpiochip_irqchip_irq_valid +EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress +EXPORT_SYMBOL_GPL vmlinux 0xb08ac84a gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xb094b70c vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xb0952ca0 serdev_device_remove +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b87443 serdev_device_close +EXPORT_SYMBOL_GPL vmlinux 0xb0c77635 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb0d9d992 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e8307e gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb0eb40a0 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xb0eb923f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb10d964d devlink_fmsg_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xb115deaa iomap_file_buffered_write +EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number +EXPORT_SYMBOL_GPL vmlinux 0xb13dd716 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14ebdd3 xas_set_mark +EXPORT_SYMBOL_GPL vmlinux 0xb1537373 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xb15b552a sfp_parse_support +EXPORT_SYMBOL_GPL vmlinux 0xb15c2557 pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put +EXPORT_SYMBOL_GPL vmlinux 0xb16c4d0c set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xb182db8a pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xb19f152e klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb1c5ca42 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb1c90e9e ptep_test_and_clear_uc +EXPORT_SYMBOL_GPL vmlinux 0xb1d0a8fc __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb1dabc1e unregister_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ef6733 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xb205ed37 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xb21e67bd pci_epf_free_space +EXPORT_SYMBOL_GPL vmlinux 0xb2345e9e ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq +EXPORT_SYMBOL_GPL vmlinux 0xb25b369c fuse_simple_background +EXPORT_SYMBOL_GPL vmlinux 0xb263d014 skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2838de3 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb2843516 devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xb28bb602 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb2a95336 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait +EXPORT_SYMBOL_GPL vmlinux 0xb2c35889 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xb2c7b818 kthread_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xb307c909 devlink_fmsg_u64_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xb322da17 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xb38b612b crypto_shash_tfm_digest +EXPORT_SYMBOL_GPL vmlinux 0xb3b1949d ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xb3b48d4d md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xb3b5bd0c dax_inode +EXPORT_SYMBOL_GPL vmlinux 0xb3b87020 debugfs_read_file_bool +EXPORT_SYMBOL_GPL vmlinux 0xb3c226ed tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xb3ea3b22 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xb3fa7720 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xb401ba6f sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb407c1df percpu_ref_switch_to_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb40f2227 blk_mq_sched_free_hctx_data +EXPORT_SYMBOL_GPL vmlinux 0xb42476a2 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb4293d26 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xb42bab3d klp_get_state +EXPORT_SYMBOL_GPL vmlinux 0xb43cbaa1 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xb43f9365 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xb44ab713 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb453595f register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xb4697fd8 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb46fbe0b klp_shadow_get_or_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb499a5cb replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xb4a428cc pci_proc_domain +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c6c37d mm_unaccount_pinned_pages +EXPORT_SYMBOL_GPL vmlinux 0xb4dd7f5d fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb4eda0da ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0xb4f9ab80 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0xb4fcdead gpiochip_line_is_open_source +EXPORT_SYMBOL_GPL vmlinux 0xb5317c05 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xb553588c device_connection_remove +EXPORT_SYMBOL_GPL vmlinux 0xb55cfb88 __raw_v4_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb573e699 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb5a0c5a7 component_del +EXPORT_SYMBOL_GPL vmlinux 0xb5a76e31 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xb5b74cf1 gpiochip_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5c10b51 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c5eef3 device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0xb5cfa586 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xb5d4542d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xb5f4f62a desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xb5fd6adf dw_pcie_ep_init_complete +EXPORT_SYMBOL_GPL vmlinux 0xb6158be9 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6451bab tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb654bf34 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb679e320 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb67d985d smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0xb67de8d1 devlink_resource_size_get +EXPORT_SYMBOL_GPL vmlinux 0xb6a01152 devlink_flash_update_begin_notify +EXPORT_SYMBOL_GPL vmlinux 0xb6adb4ba perf_aux_output_end +EXPORT_SYMBOL_GPL vmlinux 0xb6c88dd9 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xb7044912 kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xb70a29c7 irq_chip_set_parent_state +EXPORT_SYMBOL_GPL vmlinux 0xb733ef26 fixup_user_fault +EXPORT_SYMBOL_GPL vmlinux 0xb7459ee8 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xb775cdb0 balloon_page_list_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xb786df2a tcp_set_keepalive +EXPORT_SYMBOL_GPL vmlinux 0xb78b252a vfs_getxattr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude +EXPORT_SYMBOL_GPL vmlinux 0xb7a56f2f irq_chip_enable_parent +EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb7ddc8c7 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xb80506b4 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb80f9bdb tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb8212341 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xb8512cc5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xb862439c devm_gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xb86e0f71 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xb87b2271 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb88cb771 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb8b571f4 dw_pcie_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb8ba1431 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable +EXPORT_SYMBOL_GPL vmlinux 0xb9398972 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb93a6a2e zpci_write_block +EXPORT_SYMBOL_GPL vmlinux 0xb95559bc housekeeping_any_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb95b6fce sched_trace_cfs_rq_path +EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush +EXPORT_SYMBOL_GPL vmlinux 0xb97a2bfc strp_init +EXPORT_SYMBOL_GPL vmlinux 0xb980c536 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb982f858 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xb98a055f sbitmap_queue_wake_all +EXPORT_SYMBOL_GPL vmlinux 0xb9a798df tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xb9a9dd33 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9df0c26 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb9e152b5 kvm_s390_gisc_register +EXPORT_SYMBOL_GPL vmlinux 0xba1e41be device_change_owner +EXPORT_SYMBOL_GPL vmlinux 0xba394a02 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xba4b9277 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0xba60108c sysfs_break_active_protection +EXPORT_SYMBOL_GPL vmlinux 0xba659095 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xba823a37 bpfilter_ops +EXPORT_SYMBOL_GPL vmlinux 0xba8332cb mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xba8349eb udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0xbaa684d4 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xbaaa8716 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xbaaaf135 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xbae833ab dma_buf_move_notify +EXPORT_SYMBOL_GPL vmlinux 0xbae8efd0 tty_kclose +EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed +EXPORT_SYMBOL_GPL vmlinux 0xbb05e5f9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1493e3 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb2ca7cb iommu_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb3e8e0a lwtunnel_input +EXPORT_SYMBOL_GPL vmlinux 0xbb5170c5 irq_get_percpu_devid_partition +EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn +EXPORT_SYMBOL_GPL vmlinux 0xbb73a366 skb_mpls_pop +EXPORT_SYMBOL_GPL vmlinux 0xbb7b3f80 chp_ssd_get_mask +EXPORT_SYMBOL_GPL vmlinux 0xbb7e1544 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xbb82b09a iommu_alloc_resv_region +EXPORT_SYMBOL_GPL vmlinux 0xbb8edc48 scm_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbba7151 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xbbc40a71 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0xbbd105ba __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xbbd9b6cc device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xbc2a7d3d tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xbc46b3d1 xas_clear_mark +EXPORT_SYMBOL_GPL vmlinux 0xbc4c4bcc trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xbc5cf45d input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xbc67b872 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xbc6cb6b0 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xbc85c254 xdp_rxq_info_reg +EXPORT_SYMBOL_GPL vmlinux 0xbca529ff blkg_rwstat_exit +EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xbcc9d30c blk_mq_update_nr_hw_queues +EXPORT_SYMBOL_GPL vmlinux 0xbccd35ac tpm_chip_start +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xbd14362b alloc_dax_region +EXPORT_SYMBOL_GPL vmlinux 0xbd1cd32e sk_msg_free_partial +EXPORT_SYMBOL_GPL vmlinux 0xbd1eda6f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd40fb3d acomp_request_free +EXPORT_SYMBOL_GPL vmlinux 0xbd45e0b7 iomap_releasepage +EXPORT_SYMBOL_GPL vmlinux 0xbd4c2250 device_link_del +EXPORT_SYMBOL_GPL vmlinux 0xbd67ba7a badblocks_store +EXPORT_SYMBOL_GPL vmlinux 0xbde3a3a3 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xbdf25e2b iommu_fwspec_add_ids +EXPORT_SYMBOL_GPL vmlinux 0xbdf6f97a ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xbe067ea7 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xbe4bc009 irq_create_mapping_affinity +EXPORT_SYMBOL_GPL vmlinux 0xbe4cde85 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7ba022 fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb71263 skcipher_walk_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xbee01542 kstrdup_quotable_cmdline +EXPORT_SYMBOL_GPL vmlinux 0xbeec10e8 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xbef0324a blk_drop_partitions +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf13e1e4 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0xbf4e88f4 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0xbf6abbe7 housekeeping_enabled +EXPORT_SYMBOL_GPL vmlinux 0xbf7e1bfe platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0xbf89050a srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xbfc0bb1b param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xbfd12ef9 free_fib_info +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc0019341 fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0xc007d55d crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc00d43f1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc03dc515 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xc05160fe rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xc0535153 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xc09eb478 component_add_typed +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b5eb0a sk_msg_return +EXPORT_SYMBOL_GPL vmlinux 0xc0c044a4 fsnotify_init_mark +EXPORT_SYMBOL_GPL vmlinux 0xc0de85f2 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0xc0e647b1 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc0f0458a ip_tunnel_unneed_metadata +EXPORT_SYMBOL_GPL vmlinux 0xc0f1b9f1 badblocks_set +EXPORT_SYMBOL_GPL vmlinux 0xc1086e0c sysrq_toggle_support +EXPORT_SYMBOL_GPL vmlinux 0xc10fddb8 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xc11416a1 crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xc1423023 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xc1763a3b blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xc1766f75 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xc1779f5d gmap_remove +EXPORT_SYMBOL_GPL vmlinux 0xc184fbe3 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xc1c2c179 gpiod_set_consumer_name +EXPORT_SYMBOL_GPL vmlinux 0xc1d01db8 devlink_trap_policers_register +EXPORT_SYMBOL_GPL vmlinux 0xc1e94c0c crypto_register_acomps +EXPORT_SYMBOL_GPL vmlinux 0xc209410d iomap_writepage +EXPORT_SYMBOL_GPL vmlinux 0xc20a866b dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0xc22315ee perf_aux_output_skip +EXPORT_SYMBOL_GPL vmlinux 0xc2273045 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2395927 __raw_v6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc29efb69 shash_no_setkey +EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure +EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc2ca6189 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xc2fcdec6 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xc30ec04b devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0xc339bb39 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34d55be ipv6_bpf_stub +EXPORT_SYMBOL_GPL vmlinux 0xc3510a78 crypto_register_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xc3521202 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc390ebb6 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xc3a7daf2 blk_set_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0xc3d5c7ba anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc3e0effd skb_zerocopy_iter_dgram +EXPORT_SYMBOL_GPL vmlinux 0xc3e2ff26 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3f1f6bd pci_epc_multi_mem_init +EXPORT_SYMBOL_GPL vmlinux 0xc40f4e07 __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0xc414ec68 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc41a0c51 chsc_ssqd +EXPORT_SYMBOL_GPL vmlinux 0xc426c51f klp_shadow_free_all +EXPORT_SYMBOL_GPL vmlinux 0xc438c417 __fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0xc4456f91 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xc445c23f ksm_madvise +EXPORT_SYMBOL_GPL vmlinux 0xc464d7f4 device_create +EXPORT_SYMBOL_GPL vmlinux 0xc480eb84 appldata_diag +EXPORT_SYMBOL_GPL vmlinux 0xc481715e pin_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xc486df48 pci_epf_create +EXPORT_SYMBOL_GPL vmlinux 0xc48731c6 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc48f7eb5 is_binary_blacklisted +EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xc4b01dce xdp_rxq_info_unreg +EXPORT_SYMBOL_GPL vmlinux 0xc4c2102a sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xc4c9c75a synth_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xc4d536b7 irq_domain_pop_irq +EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xc4f3124d iommu_map_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc4fa4847 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4fcb9ec iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xc513d7d9 debugfs_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xc5553b99 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xc5557271 irq_domain_push_irq +EXPORT_SYMBOL_GPL vmlinux 0xc56c6e82 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc592da83 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xc59e8c30 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc5b22084 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xc5ba8461 srcu_torture_stats_print +EXPORT_SYMBOL_GPL vmlinux 0xc5c36827 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc5d8ec96 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xc5dc4d38 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc614af23 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc62c4daa strp_stop +EXPORT_SYMBOL_GPL vmlinux 0xc63ad137 iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0xc63ce768 pci_epc_mem_alloc_addr +EXPORT_SYMBOL_GPL vmlinux 0xc644b774 gpiochip_line_is_irq +EXPORT_SYMBOL_GPL vmlinux 0xc653aaf6 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc654d3f4 lwtunnel_valid_encap_type +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67154cb pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xc684cfca hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6917101 fuse_free_conn +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a193eb blk_revalidate_disk_zones +EXPORT_SYMBOL_GPL vmlinux 0xc6bdb5e2 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc6d09aec sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xc6e13bc3 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field +EXPORT_SYMBOL_GPL vmlinux 0xc728a532 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xc755c93f trace_handle_return +EXPORT_SYMBOL_GPL vmlinux 0xc77f81e2 fuse_dev_fiq_ops +EXPORT_SYMBOL_GPL vmlinux 0xc78bb65d irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a7d473 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xc7d38819 fib6_check_nexthop +EXPORT_SYMBOL_GPL vmlinux 0xc7eabbe9 blk_queue_write_cache +EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc80acfca chsc_sadc +EXPORT_SYMBOL_GPL vmlinux 0xc819bbf8 get_user_pages_fast_only +EXPORT_SYMBOL_GPL vmlinux 0xc81ee3a5 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xc821e11f device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xc83e9a65 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xc84c4023 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xc8500d1f gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc862283e kvm_vcpu_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xc863c72a sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc86674d2 dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc87938f7 watchdog_set_restart_priority +EXPORT_SYMBOL_GPL vmlinux 0xc881e5e5 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xc88818b2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc88b1525 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xc89ac24e nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0xc8a0891f blk_ksm_register +EXPORT_SYMBOL_GPL vmlinux 0xc8a6e09b inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xc8cad695 gmap_pmdp_idte_local +EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e68b01 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc9164ab3 dm_post_suspending +EXPORT_SYMBOL_GPL vmlinux 0xc9166858 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xc931f62f iomap_readpage +EXPORT_SYMBOL_GPL vmlinux 0xc93461f9 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc935a9db class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc957cd81 dst_cache_get_ip6 +EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base +EXPORT_SYMBOL_GPL vmlinux 0xc9850c9f pci_ioremap_wc_bar +EXPORT_SYMBOL_GPL vmlinux 0xc985c31e securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc985e554 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xc99a6672 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xc9b3466c balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xc9b70b64 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc9cb468a __blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xc9e4d43d fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f2cfc9 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xc9f40f18 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xca0a11a8 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xca10a265 crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xca19a285 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xca365a83 fscrypt_drop_inode +EXPORT_SYMBOL_GPL vmlinux 0xca541308 trusted_tpm_send +EXPORT_SYMBOL_GPL vmlinux 0xca574293 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xca689e26 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca84480c crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0xcacd88a0 __tracepoint_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xcb0d11b3 kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xcb14b8f6 ncsi_stop_dev +EXPORT_SYMBOL_GPL vmlinux 0xcb21bc50 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xcb5a258e rtm_getroute_parse_ip_proto +EXPORT_SYMBOL_GPL vmlinux 0xcb759538 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xcb7ddb7b blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0xcb98764d kthread_func +EXPORT_SYMBOL_GPL vmlinux 0xcba7104c crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xcbbf3028 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xcbc0e1c3 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xcbd54b2f gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcc10a105 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap +EXPORT_SYMBOL_GPL vmlinux 0xcc54f894 virtio_config_disable +EXPORT_SYMBOL_GPL vmlinux 0xcc6bfb7f irq_chip_unmask_parent +EXPORT_SYMBOL_GPL vmlinux 0xcc79fe98 dax_supported +EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc +EXPORT_SYMBOL_GPL vmlinux 0xccd5762d devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xccda0a30 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xcce3e804 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xcceedce9 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccf3907f __class_register +EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start +EXPORT_SYMBOL_GPL vmlinux 0xcd23135b cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd3708a2 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0xcd39b722 bpf_event_output +EXPORT_SYMBOL_GPL vmlinux 0xcd3a39e5 rtnl_get_net_ns_capable +EXPORT_SYMBOL_GPL vmlinux 0xcd3b50ce kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xcd60a9b5 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0xcd84a7a6 lwtunnel_cmp_encap +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbe89be synth_event_add_field_str +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcbc129 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xcde25675 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xcde298c0 device_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xce064e74 fsverity_file_open +EXPORT_SYMBOL_GPL vmlinux 0xce189660 shmem_file_setup_with_mnt +EXPORT_SYMBOL_GPL vmlinux 0xce2400f0 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0xce30177d l3mdev_update_flow +EXPORT_SYMBOL_GPL vmlinux 0xce3efc0a platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xce4e241e ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xce549e96 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xcebcec73 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcecf6edb __blk_req_zone_write_lock +EXPORT_SYMBOL_GPL vmlinux 0xcee2a3f6 cio_commit_config +EXPORT_SYMBOL_GPL vmlinux 0xcf0afbfb copy_to_user_nofault +EXPORT_SYMBOL_GPL vmlinux 0xcf127b3c do_splice_to +EXPORT_SYMBOL_GPL vmlinux 0xcf28f55e trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xcf2f9484 __percpu_init_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xcf3b862c crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf7b95e2 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xcf808167 lwtunnel_get_encap_size +EXPORT_SYMBOL_GPL vmlinux 0xcf836012 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xcf9269c6 vc_scrolldelta_helper +EXPORT_SYMBOL_GPL vmlinux 0xcf9b07ea dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xcf9f50ed fuse_dev_install +EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace +EXPORT_SYMBOL_GPL vmlinux 0xcfd49dc8 gmap_shadow_valid +EXPORT_SYMBOL_GPL vmlinux 0xd031b589 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd069ac31 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd07190e1 kvm_get_running_vcpu +EXPORT_SYMBOL_GPL vmlinux 0xd083be63 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xd09288cd driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax +EXPORT_SYMBOL_GPL vmlinux 0xd0e6e114 ccw_device_get_util_str +EXPORT_SYMBOL_GPL vmlinux 0xd0f4d3b2 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0xd10ccfac device_match_name +EXPORT_SYMBOL_GPL vmlinux 0xd12d13a3 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xd1353110 udp4_lib_lookup_skb +EXPORT_SYMBOL_GPL vmlinux 0xd141a07b crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd14d4cc2 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xd174af92 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xd1816cb1 __platform_register_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd18328cb handle_bad_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1900d61 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xd1901df7 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xd1a2af3a tpm1_getcap +EXPORT_SYMBOL_GPL vmlinux 0xd1a5c1a2 crypto_register_scomp +EXPORT_SYMBOL_GPL vmlinux 0xd1be0a99 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xd1e32c91 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd1e40fec fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd2360d82 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0xd260ce8e fwnode_find_reference +EXPORT_SYMBOL_GPL vmlinux 0xd26c2074 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd286dc9f fscrypt_ioctl_get_nonce +EXPORT_SYMBOL_GPL vmlinux 0xd29a275f security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xd2abe077 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xd2bea90b tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xd2c46d5c get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xd2c8ae77 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2e79416 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xd301d7e5 iomap_file_unshare +EXPORT_SYMBOL_GPL vmlinux 0xd302f50f tpm2_flush_context +EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xd3243ae8 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xd32488f1 fsverity_prepare_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd3423119 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xd3450324 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xd348bd75 handle_fasteoi_nmi +EXPORT_SYMBOL_GPL vmlinux 0xd34be1da fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd37aaad5 tpm_try_get_ops +EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 +EXPORT_SYMBOL_GPL vmlinux 0xd3be1a92 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xd3c27c98 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xd3d0dd6a cio_start_key +EXPORT_SYMBOL_GPL vmlinux 0xd3dda812 skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0xd3efb072 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xd3f59c36 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xd3f8f3f4 page_poisoning_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40965d0 watchdog_notify_pretimeout +EXPORT_SYMBOL_GPL vmlinux 0xd41259e7 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xd4460388 crypto_alloc_acomp +EXPORT_SYMBOL_GPL vmlinux 0xd46a311f gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xd46ddc31 switchdev_handle_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0xd4742749 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xd48715e5 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0xd4914c76 iommu_fwspec_init +EXPORT_SYMBOL_GPL vmlinux 0xd4a4a118 bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0xd4a8d24c clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d67104 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd524056c xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xd52fbf2e gmap_map_segment +EXPORT_SYMBOL_GPL vmlinux 0xd534e4c7 mmu_interval_read_begin +EXPORT_SYMBOL_GPL vmlinux 0xd5569b6c rhashtable_walk_start_check +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd55e1470 crypto_stats_skcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xd55f3eee css_sched_sch_todo +EXPORT_SYMBOL_GPL vmlinux 0xd56e134a devlink_dpipe_table_resource_set +EXPORT_SYMBOL_GPL vmlinux 0xd591b254 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0xd5ad357f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0xd5af7133 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xd5b53332 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd5eb2720 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xd60629a3 unwind_next_frame +EXPORT_SYMBOL_GPL vmlinux 0xd618e58a relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6292ba6 fib6_get_table +EXPORT_SYMBOL_GPL vmlinux 0xd63c3aa2 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p +EXPORT_SYMBOL_GPL vmlinux 0xd653b126 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0xd66e8733 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd688846d virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6a2b83c crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd6b93870 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xd6ddffbe skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xd6e131a7 crypto_alloc_sync_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd6f6e6b7 vcpu_load +EXPORT_SYMBOL_GPL vmlinux 0xd70ec1a5 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xd714cccd crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xd7165ab9 ccw_device_siosl +EXPORT_SYMBOL_GPL vmlinux 0xd71688af fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xd71f41b1 device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0xd720245e devlink_free +EXPORT_SYMBOL_GPL vmlinux 0xd72bf8b8 xdp_return_frame_rx_napi +EXPORT_SYMBOL_GPL vmlinux 0xd75cdd2e generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xd774957d mpi_write_to_sgl +EXPORT_SYMBOL_GPL vmlinux 0xd7dc8b86 devlink_reload_disable +EXPORT_SYMBOL_GPL vmlinux 0xd7dfded1 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd7f425c6 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xd81c07da skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xd8420e3f pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xd84375f3 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xd87354e3 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xd88d3be7 __blk_req_zone_write_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd891d890 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xd894a048 devm_gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd8b9aad5 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xd8cce435 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0xd8e99ec0 trace_put_event_file +EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xd9071733 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xd918c182 devlink_dpipe_entry_ctx_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd92d804e xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0xd93a01f3 strp_check_rcv +EXPORT_SYMBOL_GPL vmlinux 0xd943baa0 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xd9463443 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd9566ea6 mmput +EXPORT_SYMBOL_GPL vmlinux 0xd96009b8 sched_trace_cfs_rq_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd9607c09 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9b7fefb dma_max_mapping_size +EXPORT_SYMBOL_GPL vmlinux 0xd9c1b849 gpiochip_line_is_open_drain +EXPORT_SYMBOL_GPL vmlinux 0xd9d91ee8 pci_epc_clear_bar +EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9e2cabf aead_init_geniv +EXPORT_SYMBOL_GPL vmlinux 0xd9fed72f dma_buf_pin +EXPORT_SYMBOL_GPL vmlinux 0xda26404b __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start +EXPORT_SYMBOL_GPL vmlinux 0xda3f3e8a isc_register +EXPORT_SYMBOL_GPL vmlinux 0xda43746d debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xda4cd84d bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xda730463 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xda736f8c skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xda946b19 vfs_submount +EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xdab782f4 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafcdc3a ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xdb0b7594 blk_clear_pm_only +EXPORT_SYMBOL_GPL vmlinux 0xdb15ea4f blk_ksm_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdb25af26 ptep_notify +EXPORT_SYMBOL_GPL vmlinux 0xdb25da3e irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb29681b __account_locked_vm +EXPORT_SYMBOL_GPL vmlinux 0xdb3af81d devprop_gpiochip_set_names +EXPORT_SYMBOL_GPL vmlinux 0xdb55b321 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xdb636519 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xdb6bab57 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xdb7a8b6b vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9995c4 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0xdbbc9bb8 iptunnel_metadata_reply +EXPORT_SYMBOL_GPL vmlinux 0xdbd8b16a blk_mq_start_stopped_hw_queue +EXPORT_SYMBOL_GPL vmlinux 0xdbdef089 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xdbf29726 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc31ebe9 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xdc4d19b6 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdc5207ce devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdc69193b synth_event_add_fields +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc1096e bpf_map_inc_with_uref +EXPORT_SYMBOL_GPL vmlinux 0xdcce51c7 gmap_read_table +EXPORT_SYMBOL_GPL vmlinux 0xdccff36d scsi_internal_device_block_nowait +EXPORT_SYMBOL_GPL vmlinux 0xdce18876 fsverity_ioctl_measure +EXPORT_SYMBOL_GPL vmlinux 0xdce2dfe9 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xdcfa2e66 virtio_add_status +EXPORT_SYMBOL_GPL vmlinux 0xdd010822 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xdd060504 kernel_read_file_from_fd +EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc +EXPORT_SYMBOL_GPL vmlinux 0xdd09ff7e xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xdd0f50fc unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xdd1701a5 devm_init_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xdd36baed stack_type_name +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args +EXPORT_SYMBOL_GPL vmlinux 0xdd7f0765 __tracepoint_powernv_throttle +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc94931 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xde0e69e6 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xde44c311 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xde5aa0b4 crypto_stats_akcipher_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xde5d2de0 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xde612917 debugfs_file_get +EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 +EXPORT_SYMBOL_GPL vmlinux 0xdea9919b kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdeb4720b platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xdec3e1cc debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xdf0ce1e6 gmap_sync_dirty_log_pmd +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1e31fe xas_get_mark +EXPORT_SYMBOL_GPL vmlinux 0xdf223247 __tracepoint_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xdf46e500 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0xdf4de27b iommu_map_sg_atomic +EXPORT_SYMBOL_GPL vmlinux 0xdf5636e4 iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0xdf70cbf6 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0xdf7a700d kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xdfff8cb5 sched_trace_rq_avg_rt +EXPORT_SYMBOL_GPL vmlinux 0xe012fe15 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xe01a6e85 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe02fd1cf crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe06388fd add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xe0786bb0 netlink_strict_get_check +EXPORT_SYMBOL_GPL vmlinux 0xe0cd42ee kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xe0d44022 gmap_shadow_sgt +EXPORT_SYMBOL_GPL vmlinux 0xe10a082c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xe10a67a6 noop_direct_IO +EXPORT_SYMBOL_GPL vmlinux 0xe11e6bc0 skb_defer_rx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xe12bf765 irq_chip_set_type_parent +EXPORT_SYMBOL_GPL vmlinux 0xe1568554 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xe166decd gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1b3c4c4 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx +EXPORT_SYMBOL_GPL vmlinux 0xe1d48d58 __tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xe1e8c004 gpiochip_set_nested_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xe1f70387 pci_epc_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1fc5913 sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0xe20bdede disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe20d9286 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0xe26cb09f kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe2829f07 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0xe2a2b375 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xe2b15eef debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2bf0e93 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xe2dbdcac bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xe2fc784b serdev_device_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe307205a bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe30a8a51 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xe30b1d7b trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xe317b273 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xe32d6b13 __irq_domain_alloc_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xe35255ff fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe395243d __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete +EXPORT_SYMBOL_GPL vmlinux 0xe3c005d3 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xe3e0e70a rcu_read_unlock_trace_special +EXPORT_SYMBOL_GPL vmlinux 0xe3edc6b4 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv +EXPORT_SYMBOL_GPL vmlinux 0xe417bdd0 gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe43f26e3 iommu_report_device_fault +EXPORT_SYMBOL_GPL vmlinux 0xe4874aef __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe4929717 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe498150b tcp_sendpage_locked +EXPORT_SYMBOL_GPL vmlinux 0xe4afc7bd dax_copy_to_iter +EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xe4b90060 vfs_read +EXPORT_SYMBOL_GPL vmlinux 0xe4c4a433 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xe4d104b5 inet_ehash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xe50906af driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe51eb4af sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xe51fd3a3 irq_domain_translate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe527e570 __page_mapcount +EXPORT_SYMBOL_GPL vmlinux 0xe53491ba devm_release_action +EXPORT_SYMBOL_GPL vmlinux 0xe553fc2e nf_route +EXPORT_SYMBOL_GPL vmlinux 0xe55e61f7 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xe5666227 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5c2c645 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5c7a355 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xe5c82ac6 devm_platform_ioremap_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe5daf3ce l3mdev_fib_table_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe5de6536 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0xe5ed648d transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5f0822a fwnode_get_parent +EXPORT_SYMBOL_GPL vmlinux 0xe6092d5d tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xe61740d7 virtqueue_get_buf_ctx +EXPORT_SYMBOL_GPL vmlinux 0xe618b3fa pci_epc_set_msi +EXPORT_SYMBOL_GPL vmlinux 0xe62937be scm_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe661d293 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xe670fcce fscrypt_ioctl_get_key_status +EXPORT_SYMBOL_GPL vmlinux 0xe67bcf60 device_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xe6a1cc4c klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe6b76655 fwnode_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq +EXPORT_SYMBOL_GPL vmlinux 0xe7043996 security_path_chmod +EXPORT_SYMBOL_GPL vmlinux 0xe70e9546 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xe722b553 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xe72e844b __rht_bucket_nested +EXPORT_SYMBOL_GPL vmlinux 0xe7507474 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end +EXPORT_SYMBOL_GPL vmlinux 0xe75c1726 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xe75d4cb4 iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xe765bdc3 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7833a5d blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit +EXPORT_SYMBOL_GPL vmlinux 0xe7842375 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xe7848dc0 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe79bf0c4 klp_shadow_get +EXPORT_SYMBOL_GPL vmlinux 0xe7b718df chsc_determine_channel_path_desc +EXPORT_SYMBOL_GPL vmlinux 0xe7d0a160 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xe7d0a353 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe809cffb ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe81a5991 xas_pause +EXPORT_SYMBOL_GPL vmlinux 0xe81ddad6 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0xe86d76b9 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe8aa8c04 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xe8b40f33 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xe8e71802 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xe938fa54 dev_fill_metadata_dst +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94ed92a tpm_transmit_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe94eead5 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xe956f135 scsi_check_sense +EXPORT_SYMBOL_GPL vmlinux 0xe957fd30 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe96c9e1f __kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0xe975e95a blk_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xe978cdf5 sbitmap_prepare_to_wait +EXPORT_SYMBOL_GPL vmlinux 0xe984d6f2 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xe9a1597f inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe9a84f85 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xe9d3ef0d device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0xe9e9d46f pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe9f57154 devlink_port_type_clear +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea23874b pci_d3cold_enable +EXPORT_SYMBOL_GPL vmlinux 0xea2589a8 __wake_up_locked_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xea38036f ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0xea3979f2 dst_blackhole_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xea52183e trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xea79d6ba security_path_truncate +EXPORT_SYMBOL_GPL vmlinux 0xea835647 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0xeaa9a879 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xeaba16bd inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xeac7a9e9 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0xead77419 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0xead80220 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush +EXPORT_SYMBOL_GPL vmlinux 0xeae20d6b kvm_arch_crypto_clear_masks +EXPORT_SYMBOL_GPL vmlinux 0xeb398de6 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xeb3b8c3a device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xeb54bb49 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xeb6aaf36 kernel_read_file_from_path_initns +EXPORT_SYMBOL_GPL vmlinux 0xeb7219b8 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xeb7ecafd devlink_dpipe_headers_register +EXPORT_SYMBOL_GPL vmlinux 0xeb907eeb __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0xebbae2ba platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xebd011c2 gpiochip_irq_unmap +EXPORT_SYMBOL_GPL vmlinux 0xebe98f29 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xec0a8cfb show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xec13c83c si_swapinfo +EXPORT_SYMBOL_GPL vmlinux 0xec1de755 dw_pcie_ep_init_notify +EXPORT_SYMBOL_GPL vmlinux 0xec393e51 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xec4f0a56 scsi_free_sgtables +EXPORT_SYMBOL_GPL vmlinux 0xec660cd3 __tracepoint_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecc3b052 lwtunnel_fill_encap +EXPORT_SYMBOL_GPL vmlinux 0xece1605a __fput_sync +EXPORT_SYMBOL_GPL vmlinux 0xece38951 __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0xececead3 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xed2243af ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xed2eff8f find_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xed48a163 __zpci_store_block +EXPORT_SYMBOL_GPL vmlinux 0xed8885d2 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0xed953011 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xed9eee2c device_match_any +EXPORT_SYMBOL_GPL vmlinux 0xedb563eb crypto_stats_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xedb68683 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xedf55abb zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xee1eece4 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xee2d4c55 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee5ef072 dma_resv_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xee7aa138 __nf_ip6_route +EXPORT_SYMBOL_GPL vmlinux 0xee7d0f10 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xeea834c0 kprobe_event_cmd_init +EXPORT_SYMBOL_GPL vmlinux 0xeeb17848 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xeeb765a2 tpm_put_ops +EXPORT_SYMBOL_GPL vmlinux 0xeebd8fff gmap_get +EXPORT_SYMBOL_GPL vmlinux 0xeecf1627 fsnotify_put_mark +EXPORT_SYMBOL_GPL vmlinux 0xeedfcec3 task_work_run +EXPORT_SYMBOL_GPL vmlinux 0xeeffcc4e sched_trace_rd_span +EXPORT_SYMBOL_GPL vmlinux 0xeeffedbb pcie_flr +EXPORT_SYMBOL_GPL vmlinux 0xef13106c nr_threads +EXPORT_SYMBOL_GPL vmlinux 0xef181c0b gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xef447bfe kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb4c963 crypto_unregister_ahashes +EXPORT_SYMBOL_GPL vmlinux 0xefc991e3 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf000abf6 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf0079bcf scsi_host_complete_all_commands +EXPORT_SYMBOL_GPL vmlinux 0xf00e465d devlink_trap_groups_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf012b334 kvm_unmap_gfn +EXPORT_SYMBOL_GPL vmlinux 0xf042253f kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xf0495b46 tcpv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xf0574346 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf05e3c0c devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream +EXPORT_SYMBOL_GPL vmlinux 0xf0c69634 is_software_node +EXPORT_SYMBOL_GPL vmlinux 0xf0e7d8bf nf_queue +EXPORT_SYMBOL_GPL vmlinux 0xf0ebb7fc cmf_read +EXPORT_SYMBOL_GPL vmlinux 0xf0efff25 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xf0f2d8f1 software_node_unregister_nodes +EXPORT_SYMBOL_GPL vmlinux 0xf0fc9839 kvm_vcpu_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf11929ef subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf130e47e vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xf1361941 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xf184ccec crypto_stats_rng_seed +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf189a777 crypto_stats_decompress +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d2d358 crypto_aead_decrypt +EXPORT_SYMBOL_GPL vmlinux 0xf1e0074e screen_glyph_unicode +EXPORT_SYMBOL_GPL vmlinux 0xf1e77144 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xf1ebcc47 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf1f86f11 d_exchange +EXPORT_SYMBOL_GPL vmlinux 0xf207acea scsi_device_from_queue +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22dbbd4 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0xf2368787 irqchip_fwnode_ops +EXPORT_SYMBOL_GPL vmlinux 0xf25e4003 security_path_symlink +EXPORT_SYMBOL_GPL vmlinux 0xf260eaf0 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0xf27e5551 mmu_interval_notifier_insert +EXPORT_SYMBOL_GPL vmlinux 0xf28ffbee device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf29094c9 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf2967796 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0xf2ab24f3 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xf2ccfb00 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xf2e3bc22 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for +EXPORT_SYMBOL_GPL vmlinux 0xf31729f1 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf34a926f posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0xf352a611 cio_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf353e135 gmap_create +EXPORT_SYMBOL_GPL vmlinux 0xf35abe8a __devm_pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0xf36e0ec8 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf37d5905 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf39469c8 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xf3e12c57 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf4082b9b iommu_unmap_fast +EXPORT_SYMBOL_GPL vmlinux 0xf42c7a33 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf4605ff9 __dax_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xf480961f devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xf481aea7 serdev_device_write_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf485d7a6 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf488a0ca bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xf48c843e debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xf4920dfe devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xf4a2397c simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal +EXPORT_SYMBOL_GPL vmlinux 0xf4c52599 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf4da71b3 public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf4ef4f51 pci_epc_set_msix +EXPORT_SYMBOL_GPL vmlinux 0xf5093d90 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf5146340 skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0xf51f4331 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf5210a78 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xf535be17 iomap_dio_iopoll +EXPORT_SYMBOL_GPL vmlinux 0xf53d9663 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xf544d9c8 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5455e68 blk_mq_freeze_queue_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf568bc71 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf597a92d bio_associate_blkg_from_css +EXPORT_SYMBOL_GPL vmlinux 0xf5a4a3ab fib_nh_common_release +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5ae76b0 kill_device +EXPORT_SYMBOL_GPL vmlinux 0xf5bd0fda gpiochip_add_data_with_key +EXPORT_SYMBOL_GPL vmlinux 0xf5cd4165 __netif_set_xps_queue +EXPORT_SYMBOL_GPL vmlinux 0xf5d7eb5a register_ftrace_export +EXPORT_SYMBOL_GPL vmlinux 0xf5d9ea65 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf5dbfea4 kstrdup_quotable_file +EXPORT_SYMBOL_GPL vmlinux 0xf5e8f186 ccw_device_get_chp_desc +EXPORT_SYMBOL_GPL vmlinux 0xf5edb8e9 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node +EXPORT_SYMBOL_GPL vmlinux 0xf5fdaac9 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf6054fbf kvm_arch_crypto_set_masks +EXPORT_SYMBOL_GPL vmlinux 0xf63027f3 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xf65461f8 lwtunnel_valid_encap_type_attr +EXPORT_SYMBOL_GPL vmlinux 0xf657be8f __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xf687044e gmap_enable +EXPORT_SYMBOL_GPL vmlinux 0xf694cacd pci_epc_mem_init +EXPORT_SYMBOL_GPL vmlinux 0xf69e3a25 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf6b7e0a4 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6f16c56 rcu_barrier_tasks +EXPORT_SYMBOL_GPL vmlinux 0xf6f1e250 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf701171c lwtunnel_state_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf725c62f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf7370a4f synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0xf738dc92 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf7455c16 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0xf749debc md5_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xf75b7a41 __pci_epc_create +EXPORT_SYMBOL_GPL vmlinux 0xf77b74df pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xf7877d72 xdp_rxq_info_unused +EXPORT_SYMBOL_GPL vmlinux 0xf7af0549 iommu_device_sysfs_add +EXPORT_SYMBOL_GPL vmlinux 0xf7bc95b0 devlink_fmsg_pair_nest_start +EXPORT_SYMBOL_GPL vmlinux 0xf7d1756f apply_to_existing_page_range +EXPORT_SYMBOL_GPL vmlinux 0xf7dd1d1e clean_acked_data_enable +EXPORT_SYMBOL_GPL vmlinux 0xf7dddeb0 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf7e04fa6 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0xf7e8b288 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf80ee2fe gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf821d52d blk_ksm_reprogram_all_keys +EXPORT_SYMBOL_GPL vmlinux 0xf824f568 sock_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0xf82d7162 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf834c26d housekeeping_test_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf855ccce __zpci_store +EXPORT_SYMBOL_GPL vmlinux 0xf861f527 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xf8754732 device_connection_find +EXPORT_SYMBOL_GPL vmlinux 0xf880cf6b sk_psock_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf8be840b hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xf8c99d46 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xf8cbc4c4 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf8cdd3ce ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xf8eef63d pci_epc_stop +EXPORT_SYMBOL_GPL vmlinux 0xf8f2bfdd vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xf91ab2ed __tracepoint_arm_event +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf956a126 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0xf9a0021f __xas_next +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bed445 iomap_bmap +EXPORT_SYMBOL_GPL vmlinux 0xf9d2cf44 lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0xfa18694e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa37e6b1 bdev_disk_changed +EXPORT_SYMBOL_GPL vmlinux 0xfa6276d4 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node +EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name +EXPORT_SYMBOL_GPL vmlinux 0xfa8683ac console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xfa89d2e4 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xfa974d15 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xfaa48b19 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xfac5834f fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax +EXPORT_SYMBOL_GPL vmlinux 0xfaea4179 md_bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xfaeb86ff irq_find_matching_fwspec +EXPORT_SYMBOL_GPL vmlinux 0xfb062e51 blkdev_report_zones +EXPORT_SYMBOL_GPL vmlinux 0xfb2bb52b fsnotify_find_mark +EXPORT_SYMBOL_GPL vmlinux 0xfb2d89f3 compat_only_sysfs_link_entry_to_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3ddd3d skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb42600c crypto_stats_get +EXPORT_SYMBOL_GPL vmlinux 0xfb515460 fscrypt_ioctl_get_policy_ex +EXPORT_SYMBOL_GPL vmlinux 0xfb5b6fbd pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xfbb15733 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbffd601 net_prio_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc053f9f gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xfc14bb2e dm_get_dev_t +EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key +EXPORT_SYMBOL_GPL vmlinux 0xfc1c7cba get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xfc27d53e fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xfc3002c0 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xfc391f3b pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xfc5e35f1 udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0xfc615476 devlink_flash_update_end_notify +EXPORT_SYMBOL_GPL vmlinux 0xfc88a37c iommu_dev_disable_feature +EXPORT_SYMBOL_GPL vmlinux 0xfc8db919 mutex_lock_io +EXPORT_SYMBOL_GPL vmlinux 0xfc9ec317 crypto_alloc_kpp +EXPORT_SYMBOL_GPL vmlinux 0xfca15601 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xfca1685a netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xfcb7d916 blk_mq_debugfs_rq_show +EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfcd37b1c security_path_chown +EXPORT_SYMBOL_GPL vmlinux 0xfcf50cbe iommu_cache_invalidate +EXPORT_SYMBOL_GPL vmlinux 0xfd25f7a9 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xfd2a481e lzorle1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0xfd8ccc73 page_cache_readahead_unbounded +EXPORT_SYMBOL_GPL vmlinux 0xfda19664 irq_chip_set_affinity_parent +EXPORT_SYMBOL_GPL vmlinux 0xfdb075d0 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xfdd1ed7d iommu_register_device_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xfdf637af dm_table_device_name +EXPORT_SYMBOL_GPL vmlinux 0xfe2c61cf pci_epf_alloc_space +EXPORT_SYMBOL_GPL vmlinux 0xfe31c6a4 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xfe39a9c6 badblocks_show +EXPORT_SYMBOL_GPL vmlinux 0xfe3b05c7 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xfe3b11eb tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe5574a0 pci_epc_mem_exit +EXPORT_SYMBOL_GPL vmlinux 0xfe69325f percpu_ref_resurrect +EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfebec15a __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xfed1e88e __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xfefa2adb input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff061622 irq_chip_set_wake_parent +EXPORT_SYMBOL_GPL vmlinux 0xff13d8c6 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xff31e2c2 debugfs_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xff403774 region_intersects +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5d068e __vfs_setxattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xff6f7f3d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xff7c07df trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xff81487d gpiod_remove_lookup_table +EXPORT_SYMBOL_GPL vmlinux 0xff8a3579 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0xff9e5998 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xffc98bd4 devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0xffcdc4a9 tod_clock_base +EXPORT_SYMBOL_GPL vmlinux 0xffe249fe devlink_sb_register +EXPORT_SYMBOL_GPL vmlinux 0xffec0d24 device_del +FIRMWARE_LOADER_PRIVATE EXPORT_SYMBOL_GPL 0xd3ae7756 fw_fallback_config vmlinux --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/s390x/generic.compiler +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/s390x/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 10.2.0-13ubuntu1) 10.2.0 --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/s390x/generic.modules +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/s390x/generic.modules @@ -0,0 +1,993 @@ +8021q +842 +842_compress +842_decompress +9p +9pnet +9pnet_rdma +9pnet_virtio +act_bpf +act_connmark +act_csum +act_ct +act_ctinfo +act_gact +act_gate +act_ipt +act_mirred +act_mpls +act_nat +act_pedit +act_police +act_sample +act_simple +act_skbedit +act_skbmod +act_tunnel_key +act_vlan +adiantum +adin +aegis128 +aes_s390 +aes_ti +af_alg +af_iucv +af_key +af_packet_diag +ah4 +ah6 +algif_aead +algif_hash +algif_rng +algif_skcipher +altera-cvp +altera-pr-ip-core +amd +amlogic-gxl-crypto +ansi_cprng +anubis +appldata_mem +appldata_net_sum +appldata_os +aquantia +arc4 +arp_tables +arpt_mangle +arptable_filter +asym_tpm +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +aufs +auth_rpcgss +authenc +authencesn +bcache +bcm-phy-lib +bcm54140 +bcm7xxx +bcm87xx +bfq +binfmt_misc +blake2b_generic +blake2s_generic +blocklayoutdriver +blowfish_common +blowfish_generic +bochs-drm +bonding +bpfilter +br_netfilter +brd +bridge +broadcom +btrfs +cachefiles +camellia_generic +cast5_generic +cast6_generic +cast_common +ccm +ccwgroup +ceph +cfb +cfbcopyarea +cfbfillrect +cfbimgblt +ch +chacha20poly1305 +chacha_generic +chsc_sch +cicada +cifs +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_matchall +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cmac +coda +cordic +cortina +crc-itu-t +crc32-vx_s390 +crc32_generic +crc4 +crc64 +crc7 +crc8 +cryptd +crypto_engine +crypto_user +ctcm +curve25519-generic +cuse +dasd_diag_mod +dasd_eckd_mod +dasd_fba_mod +dasd_mod +davicom +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dcssblk +deflate +des_generic +des_s390 +device_dax +diag +diag288_wdt +dlm +dm-bio-prison +dm-bufio +dm-cache +dm-cache-smq +dm-clone +dm-crypt +dm-delay +dm-ebs +dm-era +dm-flakey +dm-historical-service-time +dm-integrity +dm-log +dm-log-userspace +dm-log-writes +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-switch +dm-thin-pool +dm-unstripe +dm-verity +dm-writecache +dm-zero +dm-zoned +dp83640 +dp83822 +dp83848 +dp83867 +dp83869 +dp83tc811 +drbd +drm +drm_kms_helper +drm_panel_orientation_quirks +drm_ttm_helper +drm_vram_helper +dummy +dummy_stm +dwc-xlgmac +eadm_sch +ebt_802_3 +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ecc +ecdh_generic +echainiv +ecrdsa_generic +em_cmp +em_ipset +em_ipt +em_meta +em_nbyte +em_text +em_u32 +eql +erofs +esp4 +esp4_offload +esp6 +esp6_offload +essiv +et1011c +failover +faulty +fb_sys_fops +fcoe +fcrypt +fixed_phy +fou +fou6 +fpga-mgr +fs3270 +fscache +fsm +garp +geneve +genwqe_card +gfs2 +ghash_s390 +gpio-aggregator +gpio-bt8xx +gpio-generic +gpio-pci-idio-16 +gpio-pcie-idio-24 +grace +gre +gtp +hangcheck-timer +hmcdrv +i2c-algo-bit +i2c-core +i2c-dev +i2c-mux +i2c-stub +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mthca +ib_srp +ib_srpt +ib_umad +ib_uverbs +icp +icplus +ifb +ife +ila +inet_diag +intel-xway +intel_th +intel_th_gth +intel_th_msu +intel_th_msu_sink +intel_th_pci +intel_th_pti +intel_th_sth +ip6_gre +ip6_tables +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ip6t_NPT +ip6t_REJECT +ip6t_SYNPROXY +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_rpfilter +ip6t_rt +ip6t_srh +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6table_security +ip_gre +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipmac +ip_set_hash_ipmark +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_mac +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netnet +ip_set_hash_netport +ip_set_hash_netportnet +ip_set_list_set +ip_tables +ip_tunnel +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_mh +ip_vs_nq +ip_vs_ovf +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipcomp +ipcomp6 +ipip +ipt_CLUSTERIP +ipt_ECN +ipt_REJECT +ipt_SYNPROXY +ipt_ah +ipt_rpfilter +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +iptable_security +ipvlan +ipvtap +irqbypass +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +ism +isofs +iw_cm +kafs +kcm +keywrap +khazad +kheaders +kmem +kyber-iosched +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +lcs +libarc4 +libblake2s +libblake2s-generic +libceph +libchacha +libchacha20poly1305 +libcrc32c +libcurve25519 +libcurve25519-generic +libdes +libfc +libfcoe +libiscsi +libiscsi_tcp +libphy +libpoly1305 +libsas +linear +llc +lockd +lru_cache +lrw +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macsec +macvlan +macvtap +marvell +marvell10g +md-cluster +md4 +mdev +mdio-i2c +memory-notifier-error-inject +mena21_wdt +michael_mic +micrel +microchip +microchip_t1 +mip6 +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlxfw +mlxsw_core +mlxsw_pci +mlxsw_spectrum +mlxsw_switchib +mlxsw_switchx2 +monreader +monwriter +mpls_gso +mpls_iptunnel +mpls_router +mpt3sas +mrp +mscc +msdos +national +nb8800 +nbd +net_failover +netconsole +netdevsim +netiucv +netlink_diag +nf_conncount +nf_conntrack +nf_conntrack_amanda +nf_conntrack_bridge +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_dup_ipv4 +nf_dup_ipv6 +nf_dup_netdev +nf_flow_table +nf_flow_table_inet +nf_flow_table_ipv4 +nf_flow_table_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_log_netdev +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_irc +nf_nat_pptp +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nf_reject_ipv4 +nf_reject_ipv6 +nf_socket_ipv4 +nf_socket_ipv6 +nf_synproxy_core +nf_tables +nf_tproxy_ipv4 +nf_tproxy_ipv6 +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_osf +nfnetlink_queue +nfs +nfs_acl +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsd +nfsv2 +nfsv3 +nfsv4 +nft_chain_nat +nft_compat +nft_connlimit +nft_counter +nft_ct +nft_dup_ipv4 +nft_dup_ipv6 +nft_dup_netdev +nft_fib +nft_fib_inet +nft_fib_ipv4 +nft_fib_ipv6 +nft_fib_netdev +nft_flow_offload +nft_fwd_netdev +nft_hash +nft_limit +nft_log +nft_masq +nft_meta_bridge +nft_nat +nft_numgen +nft_objref +nft_osf +nft_queue +nft_quota +nft_redir +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +nft_socket +nft_synproxy +nft_tproxy +nft_tunnel +nft_xfrm +nhpoly1305 +nilfs2 +nlmon +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +notifier-error-inject +nsh +ntfs +null_blk +nvme +nvme-core +nvme-fabrics +nvme-fc +nvme-loop +nvme-rdma +nvme-tcp +nvmet +nvmet-fc +nvmet-rdma +nvmet-tcp +objagg +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stack_o2cb +ocfs2_stack_user +ocfs2_stackglue +ofb +openvswitch +oprofile +orangefs +overlay +p8022 +paes_s390 +parman +pblk +pcbc +pci-pf-stub +pci-stub +pcrypt +phylink +pkcs7_test_key +pkcs8_key_parser +pkey +pktgen +pnet +poly1305_generic +pps_core +pretimeout_panic +prng +psample +psnap +ptp +ptp_clockmatrix +ptp_ines +qdio +qeth +qeth_l2 +qeth_l3 +qsemi +quota_tree +quota_v1 +quota_v2 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid_class +raw_diag +rbd +rcuperf +rdma_cm +rdma_rxe +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +rmd128 +rmd160 +rmd256 +rmd320 +rnbd-client +rnbd-server +rockchip +rpcrdma +rpcsec_gss_krb5 +rtrs-client +rtrs-core +rtrs-server +rxrpc +s390-trng +salsa20_generic +sample-trace-array +sch_cake +sch_cbq +sch_cbs +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_etf +sch_ets +sch_fq +sch_fq_codel +sch_fq_pie +sch_gred +sch_hfsc +sch_hhf +sch_htb +sch_ingress +sch_mqprio +sch_multiq +sch_netem +sch_pie +sch_plug +sch_prio +sch_qfq +sch_red +sch_sfb +sch_sfq +sch_skbprio +sch_taprio +sch_tbf +sch_teql +scm_block +scsi_debug +scsi_dh_alua +scsi_dh_emc +scsi_dh_hp_sw +scsi_dh_rdac +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_srp +sctp +sctp_diag +seed +serial_core +serpent_generic +sfp +sha1_s390 +sha256_s390 +sha3_256_s390 +sha3_512_s390 +sha3_generic +sha512_s390 +sha_common +shiftfs +siox-bus-gpio +siox-core +sit +siw +slicoss +slim-qcom-ctrl +slimbus +sm3_generic +sm4_generic +smc +smc_diag +smsc +smsgiucv_app +softdog +spl +st +st_drv +ste10Xp +stm_console +stm_core +stm_ftrace +stm_heartbeat +stm_p_basic +stm_p_sys-t +stp +streebog_generic +sunrpc +switchtec +syscopyarea +sysfillrect +sysimgblt +tap +tape +tape_34xx +tape_3590 +tape_class +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tcm_fc +tcm_loop +tcp_bbr +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_nv +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tea +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +teranetics +test_blackhole_dev +test_bpf +tgr192 +tipc +tls +torture +tpm_key_parser +tpm_vtpm_proxy +trace-printk +ts_bm +ts_fsm +ts_kmp +ttm +ttynull +tunnel4 +tunnel6 +twofish_common +twofish_generic +uPD60620 +uartlite +ubuntu-host +udf +udp_diag +udp_tunnel +uio +unix_diag +veth +vfio +vfio-pci +vfio_ap +vfio_ccw +vfio_iommu_type1 +vfio_mdev +vfio_virqfd +vhost +vhost_iotlb +vhost_net +vhost_scsi +vhost_vsock +virtio-gpu +virtio-rng +virtio_blk +virtio_crypto +virtio_input +virtio_net +virtio_scsi +virtiofs +vitesse +vmac +vmlogrdr +vmur +vmw_vsock_virtio_transport +vmw_vsock_virtio_transport_common +vport-geneve +vport-gre +vport-vxlan +vrf +vsock +vsock_diag +vsock_loopback +vsockmon +vxlan +wireguard +wp512 +x_tables +xcbc +xfrm4_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_interface +xfrm_ipcomp +xfrm_user +xfs +xilinx_emac +xilinx_gmii2rgmii +xlnx_vcu +xor +xsk_diag +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_CONNSECMARK +xt_CT +xt_DSCP +xt_HL +xt_HMARK +xt_IDLETIMER +xt_LOG +xt_MASQUERADE +xt_NETMAP +xt_NFLOG +xt_NFQUEUE +xt_RATEEST +xt_REDIRECT +xt_SECMARK +xt_TCPMSS +xt_TCPOPTSTRIP +xt_TEE +xt_TPROXY +xt_TRACE +xt_addrtype +xt_bpf +xt_cgroup +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_conntrack +xt_cpu +xt_dccp +xt_devgroup +xt_dscp +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_ipcomp +xt_iprange +xt_ipvs +xt_l2tp +xt_length +xt_limit +xt_mac +xt_mark +xt_multiport +xt_nat +xt_nfacct +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_realm +xt_recent +xt_sctp +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_tcpudp +xt_time +xt_u32 +xxhash_generic +z3fold +zavl +zcommon +zcrypt +zcrypt_cex2a +zcrypt_cex2c +zcrypt_cex4 +zfcp +zfs +zlua +znvpair +zonefs +zram +zstd +zstd_compress +zunicode --- linux-5.8.0.orig/debian.master/abi/5.8.0-54.61/s390x/generic.retpoline +++ linux-5.8.0/debian.master/abi/5.8.0-54.61/s390x/generic.retpoline @@ -0,0 +1 @@ +# RETPOLINE NOT ENABLED --- linux-5.8.0.orig/debian.master/changelog +++ linux-5.8.0/debian.master/changelog @@ -0,0 +1,18752 @@ +linux (5.8.0-55.62) groovy; urgency=medium + + * groovy/linux: 5.8.0-55.62 -proposed tracker (LP: #1930379) + + * [Potential Regression] Unable to create KVM with uvtool on Groovy ARM64 + (LP: #1929925) + - SAUCE: KVM: arm64: Assign kvm_ipa_limit + + -- Stefan Bader Tue, 01 Jun 2021 09:57:09 +0200 + +linux (5.8.0-54.61) groovy; urgency=medium + + * groovy/linux: 5.8.0-54.61 -proposed tracker (LP: #1927592) + + * Introduce the 465 driver series, fabric-manager, and libnvidia-nscq + (LP: #1925522) + - debian/dkms-versions -- add NVIDIA 465 and migrate 450 to 460 + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: fix incorrect mnt_id of files opened from map_files + + * netfilter: x_tables: fix compat match/target pad out-of-bound write + (LP: #1927682) + - netfilter: x_tables: fix compat match/target pad out-of-bound write + + * Groovy update: upstream stable patchset 2021-05-04 (LP: #1927150) + - mt76: fix tx skb error handling in mt76_dma_tx_queue_skb + - net: fec: ptp: avoid register access when ipg clock is disabled + - powerpc/4xx: Fix build errors from mfdcr() + - atm: eni: dont release is never initialized + - atm: lanai: dont run lanai_dev_close if not open + - Revert "r8152: adjust the settings about MAC clock speed down for RTL8153" + - ALSA: hda: ignore invalid NHLT table + - ixgbe: Fix memleak in ixgbe_configure_clsu32 + - scsi: ufs: ufs-qcom: Disable interrupt in reset path + - blk-cgroup: Fix the recursive blkg rwstat + - net: tehuti: fix error return code in bdx_probe() + - net: intel: iavf: fix error return code of iavf_init_get_resources() + - sun/niu: fix wrong RXMAC_BC_FRM_CNT_COUNT count + - cifs: ask for more credit on async read/write code paths + - gfs2: fix use-after-free in trans_drain + - cpufreq: blacklist Arm Vexpress platforms in cpufreq-dt-platdev + - gpiolib: acpi: Add missing IRQF_ONESHOT + - nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default + - NFS: Correct size calculation for create reply length + - net: hisilicon: hns: fix error return code of hns_nic_clear_all_rx_fetch() + - net: wan: fix error return code of uhdlc_init() + - net: davicom: Use platform_get_irq_optional() + - net: enetc: set MAC RX FIFO to recommended value + - atm: uPD98402: fix incorrect allocation + - atm: idt77252: fix null-ptr-dereference + - cifs: change noisy error message to FYI + - irqchip/ingenic: Add support for the JZ4760 + - kbuild: add image_name to no-sync-config-targets + - kbuild: dummy-tools: fix inverted tests for gcc + - umem: fix error return code in mm_pci_probe() + - sparc64: Fix opcode filtering in handling of no fault loads + - habanalabs: Call put_pid() when releasing control device + - staging: rtl8192e: fix kconfig dependency on CRYPTO + - u64_stats,lockdep: Fix u64_stats_init() vs lockdep + - regulator: qcom-rpmh: Correct the pmic5_hfsmps515 buck + - block: Fix REQ_OP_ZONE_RESET_ALL handling + - drm/amd/display: Revert dram_clock_change_latency for DCN2.1 + - drm/amdgpu: fb BO should be ttm_bo_type_device + - drm/radeon: fix AGP dependency + - nvme: add NVME_REQ_CANCELLED flag in nvme_cancel_request() + - nvme-fc: set NVME_REQ_CANCELLED in nvme_fc_terminate_exchange() + - nvme-fc: return NVME_SC_HOST_ABORTED_CMD when a command has been aborted + - nvme-rdma: Fix a use after free in nvmet_rdma_write_data_done + - nvme-pci: add the DISABLE_WRITE_ZEROES quirk for a Samsung PM1725a + - nfs: we don't support removing system.nfs4_acl + - block: Suppress uevent for hidden device when removed + - ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls + - ia64: fix ptrace(PTRACE_SYSCALL_INFO_EXIT) sign + - netsec: restore phy power state after controller reset + - platform/x86: intel-vbtn: Stop reporting SW_DOCK events + - psample: Fix user API breakage + - z3fold: prevent reclaim/free race for headless pages + - squashfs: fix inode lookup sanity checks + - squashfs: fix xattr id and id lookup sanity checks + - hugetlb_cgroup: fix imbalanced css_get and css_put pair for shared mappings + - kasan: fix per-page tags for non-page_alloc pages + - gcov: fix clang-11+ support + - ACPI: video: Add missing callback back for Sony VPCEH3U1E + - ACPICA: Always create namespace nodes using acpi_ns_create_node() + - arm64: dts: ls1046a: mark crypto engine dma coherent + - arm64: dts: ls1012a: mark crypto engine dma coherent + - arm64: dts: ls1043a: mark crypto engine dma coherent + - ARM: dts: at91: sam9x60: fix mux-mask for PA7 so it can be set to A, B and C + - ARM: dts: at91: sam9x60: fix mux-mask to match product's datasheet + - ARM: dts: at91-sama5d27_som1: fix phy address to 7 + - integrity: double check iint_cache was initialized + - drm/amd/pm: workaround for audio noise issue + - drm/i915: Fix the GT fence revocation runtime PM logic + - dm verity: fix DM_VERITY_OPTS_MAX value + - dm ioctl: fix out of bounds array access when no devices + - bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD + - ARM: OMAP2+: Fix smartreflex init regression after dropping legacy data + - soc: ti: omap-prm: Fix occasional abort on reset deassert for dra7 iva + - veth: Store queue_mapping independently of XDP prog presence + - libbpf: Fix INSTALL flag order + - net/mlx5e: RX, Mind the MPWQE gaps when calculating offsets + - net/mlx5e: When changing XDP program without reset, take refs for XSK RQs + - net/mlx5e: Don't match on Geneve options in case option masks are all zero + - ipv6: fix suspecious RCU usage warning + - macvlan: macvlan_count_rx() needs to be aware of preemption + - net: sched: validate stab values + - net: dsa: bcm_sf2: Qualify phydev->dev_flags based on port + - igc: reinit_locked() should be called with rtnl_lock + - igc: Fix Pause Frame Advertising + - igc: Fix Supported Pause Frame Link Setting + - igc: Fix igc_ptp_rx_pktstamp() + - e1000e: add rtnl_lock() to e1000_reset_task + - e1000e: Fix error handling in e1000_set_d0_lplu_state_82571 + - net/qlcnic: Fix a use after free in qlcnic_83xx_get_minidump_template + - net: phy: broadcom: Add power down exit reset state delay + - ftgmac100: Restart MAC HW once + - clk: qcom: gcc-sc7180: Use floor ops for the correct sdcc1 clk + - net: ipa: terminate message handler arrays + - net: qrtr: fix a kernel-infoleak in qrtr_recvmsg() + - flow_dissector: fix byteorder of dissected ICMP ID + - selftests/bpf: Set gopt opt_class to 0 if get tunnel opt failed + - netfilter: ctnetlink: fix dump of the expect mask attribute + - net: hdlc_x25: Prevent racing between "x25_close" and "x25_xmit"/"x25_rx" + - tcp: relookup sock for RST+ACK packets handled by obsolete req sock + - can: peak_usb: add forgotten supported devices + - can: flexcan: flexcan_chip_freeze(): fix chip freeze for missing bitrate + - can: kvaser_pciefd: Always disable bus load reporting + - can: c_can_pci: c_can_pci_remove(): fix use-after-free + - can: c_can: move runtime PM enable/disable to c_can_platform + - can: m_can: m_can_do_rx_poll(): fix extraneous msg loss warning + - can: m_can: m_can_rx_peripheral(): fix RX being blocked by errors + - mac80211: fix rate mask reset + - mac80211: Allow HE operation to be longer than expected. + - selftests/net: fix warnings on reuseaddr_ports_exhausted + - nfp: flower: add ipv6 bit to pre_tunnel control message + - nfp: flower: fix pre_tun mask id allocation + - ftrace: Fix modify_ftrace_direct. + - ionic: linearize tso skb with too many frags + - netfilter: nftables: report EOPNOTSUPP on unsupported flowtable flags + - netfilter: nftables: allow to update flowtable flags + - netfilter: flowtable: Make sure GC works periodically in idle system + - libbpf: Use SOCK_CLOEXEC when opening the netlink socket + - ipv6: weaken the v4mapped source check + - octeontx2-af: Formatting debugfs entry rsrc_alloc. + - octeontx2-af: Fix irq free in rvu teardown + - octeontx2-pf: Clear RSS enable flag on interace down + - octeontx2-af: fix infinite loop in unmapping NPC counter + - net: check all name nodes in __dev_alloc_name + - net: cdc-phonet: fix data-interface release on probe failure + - r8152: limit the RX buffer size of RTL8153A for USB 2.0 + - net: stmmac: dwmac-sun8i: Provide TX and RX fifo sizes + - selinux: vsock: Set SID for socket returned by accept() + - selftests: forwarding: vxlan_bridge_1d: Fix vxlan ecn decapsulate value + - libbpf: Fix BTF dump of pointer-to-array-of-struct + - drm/msm: fix shutdown hook in case GPU components failed to bind + - arm64: kdump: update ppos when reading elfcorehdr + - PM: runtime: Defer suspending suppliers + - net/mlx5: Add back multicast stats for uplink representor + - net/mlx5e: Allow to match on MPLS parameters only for MPLS over UDP + - net/mlx5e: Fix error path for ethtool set-priv-flag + - PM: EM: postpone creating the debugfs dir till fs_initcall + - net: bridge: don't notify switchdev for local FDB addresses + - octeontx2-af: Fix memory leak of object buf + - RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening + server + - bpf: Don't do bpf_cgroup_storage_set() for kuprobe/tp programs + - net: Consolidate common blackhole dst ops + - net, bpf: Fix ip6ip6 crash with collect_md populated skbs + - net: phy: introduce phydev->port + - net: phy: broadcom: Avoid forward for bcm54xx_config_clock_delay() + - net: phy: broadcom: Set proper 1000BaseX/SGMII interface mode for BCM54616S + - net: phy: broadcom: Fix RGMII delays for BCM50160 and BCM50610M + - dm table: Fix zoned model check and zone sectors check + - mm/mmu_notifiers: ensure range_end() is paired with range_start() + - ACPI: scan: Rearrange memory allocation in acpi_device_add() + - ACPI: scan: Use unique number for instance_no + - perf auxtrace: Fix auxtrace queue conflict + - perf synthetic events: Avoid write of uninitialized memory when generating + PERF_RECORD_MMAP* records + - block: recalculate segment count for multi-segment discards correctly + - scsi: Revert "qla2xxx: Make sure that aborted commands are freed" + - scsi: qedi: Fix error return code of qedi_alloc_global_queues() + - scsi: mpt3sas: Fix error return code of mpt3sas_base_attach() + - smb3: fix cached file size problems in duplicate extents (reflink) + - locking/mutex: Fix non debug version of mutex_lock_io_nested() + - x86/mem_encrypt: Correct physical address calculation in __set_clr_pte_enc() + - can: dev: Move device back to init netns on owning netns delete + - net: dsa: b53: VLAN filtering is global to all users + - mac80211: fix double free in ibss_leave + - ext4: add reclaim checks to xattr code + - can: peak_usb: Revert "can: peak_usb: add forgotten supported devices" + - xen-blkback: don't leak persistent grants from xen_blkbk_map() + - arm64: mm: correct the inside linear map range during hotplug check + - ext4: shrink race window in ext4_should_retry_alloc() + - ext4: fix bh ref count on error paths + - fs: nfsd: fix kconfig dependency warning for NFSD_V4 + - rpc: fix NULL dereference on kmalloc failure + - iomap: Fix negative assignment to unsigned sis->pages in + iomap_swapfile_activate + - ASoC: rt1015: fix i2c communication error + - ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10 + - ASoC: rt5651: Fix dac- and adc- vol-tlv values being off by a factor of 10 + - ASoC: sgtl5000: set DAP_AVC_CTRL register to correct default value on probe + - ASoC: es8316: Simplify adc_pga_gain_tlv table + - ASoC: soc-core: Prevent warning if no DMI table is present + - ASoC: cs42l42: Fix Bitclock polarity inversion + - ASoC: cs42l42: Fix channel width support + - ASoC: cs42l42: Fix mixer volume control + - ASoC: cs42l42: Always wait at least 3ms after reset + - NFSD: fix error handling in NFSv4.0 callbacks + - kernel: freezer should treat PF_IO_WORKER like PF_KTHREAD for freezing + - vhost: Fix vhost_vq_reset() + - io_uring: fix ->flags races by linked timeouts + - scsi: st: Fix a use after free in st_open() + - scsi: qla2xxx: Fix broken #endif placement + - staging: comedi: cb_pcidas: fix request_irq() warn + - staging: comedi: cb_pcidas64: fix request_irq() warn + - ASoC: rt5659: Update MCLK rate in set_sysclk() + - ASoC: rt711: add snd_soc_component remove callback + - thermal/core: Add NULL pointer check before using cooling device stats + - locking/ww_mutex: Simplify use_ww_ctx & ww_ctx handling + - locking/ww_mutex: Fix acquire/release imbalance in + ww_acquire_init()/ww_acquire_fini() + - nvmet-tcp: fix kmap leak when data digest in use + - ext4: do not iput inode under running transaction in ext4_rename() + - net: mvpp2: fix interrupt mask/unmask skip condition + - flow_dissector: fix TTL and TOS dissection on IPv4 fragments + - can: dev: move driver related infrastructure into separate subdir + - net: introduce CAN specific pointer in the struct net_device + - can: tcan4x5x: fix max register value + - brcmfmac: clear EAP/association status bits on linkdown events + - netdevsim: dev: Initialize FIB module after debugfs + - iwlwifi: pcie: don't disable interrupts for reg_lock + - ath10k: hold RCU lock when calling ieee80211_find_sta_by_ifaddr() + - net: ethernet: aquantia: Handle error cleanup of start on open + - appletalk: Fix skb allocation size in loopback case + - net: ipa: remove two unused register definitions + - net: ipa: fix register write command validation + - net: wan/lmc: unregister device when no matching device is found + - net: 9p: advance iov on empty read + - bpf: Remove MTU check in __bpf_skb_max_len + - ACPI: tables: x86: Reserve memory occupied by ACPI tables + - ACPI: processor: Fix CPU0 wakeup in acpi_idle_play_dead() + - ALSA: usb-audio: Apply sample rate quirk to Logitech Connect + - ALSA: hda: Re-add dropped snd_poewr_change_state() calls + - ALSA: hda: Add missing sanity checks in PM prepare/complete callbacks + - ALSA: hda/realtek: fix a determine_headset_type issue for a Dell AIO + - ALSA: hda/realtek: call alc_update_headset_mode() in hp_automute_hook + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 640 G8 + - xtensa: fix uaccess-related livelock in do_page_fault + - xtensa: move coprocessor_flush to the .text section + - PM: runtime: Fix race getting/putting suppliers at probe + - PM: runtime: Fix ordering in pm_runtime_get_suppliers() + - tracing: Fix stack trace event size + - mm: fix race by making init_zero_pfn() early_initcall + - drm/amdkfd: dqm fence memory corruption + - drm/amdgpu: fix offset calculation in amdgpu_vm_bo_clear_mappings() + - drm/amdgpu: check alignment on CPU page for bo map + - reiserfs: update reiserfs_xattrs_initialized() condition + - drm/tegra: dc: Restore coupling of display controllers + - drm/tegra: sor: Grab runtime PM reference across reset + - vfio/nvlink: Add missing SPAPR_TCE_IOMMU depends + - pinctrl: rockchip: fix restore error in resume + - extcon: Add stubs for extcon_register_notifier_all() functions + - extcon: Fix error handling in extcon_dev_register + - usb: dwc3: pci: Enable dis_uX_susphy_quirk for Intel Merrifield + - video: hyperv_fb: Fix a double free in hvfb_probe + - firewire: nosy: Fix a use-after-free bug in nosy_ioctl() + - usbip: vhci_hcd fix shift out-of-bounds in vhci_hub_control() + - USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem + - usb: musb: Fix suspend with devices connected for a64 + - usb: xhci-mtk: fix broken streams issue on 0.96 xHCI + - cdc-acm: fix BREAK rx code path adding necessary calls + - USB: cdc-acm: untangle a circular dependency between callback and softint + - USB: cdc-acm: downgrade message to debug + - USB: cdc-acm: fix double free on probe failure + - USB: cdc-acm: fix use-after-free after probe failure + - usb: gadget: udc: amd5536udc_pci fix null-ptr-dereference + - usb: dwc2: Fix HPRT0.PrtSusp bit setting for HiKey 960 board. + - usb: dwc2: Prevent core suspend when port connection flag is 0 + - staging: rtl8192e: Fix incorrect source in memcpy() + - staging: rtl8192e: Change state information from u16 to u8 + - drivers: video: fbcon: fix NULL dereference in fbcon_cursor() + - Revert "kernel: freezer should treat PF_IO_WORKER like PF_KTHREAD for + freezing" + - ARM: dts: am33xx: add aliases for mmc interfaces + - bus: ti-sysc: Fix warning on unbind if reset is not deasserted + - platform/x86: intel-hid: Support Lenovo ThinkPad X1 Tablet Gen 2 + - bpf, x86: Use kvmalloc_array instead kmalloc_array in bpf_jit_comp + - net/mlx5e: Enforce minimum value check for ICOSQ size + - net: pxa168_eth: Fix a potential data race in pxa168_eth_remove + - kunit: tool: Fix a python tuple typing error + - mISDN: fix crash in fritzpci + - mac80211: Check crypto_aead_encrypt for errors + - mac80211: choose first enabled channel for monitor + - drm/msm/adreno: a5xx_power: Don't apply A540 lm_setup to other GPUs + - drm/msm: Ratelimit invalid-fence message + - netfilter: conntrack: Fix gre tunneling over ipv6 + - netfilter: nftables: skip hook overlap logic if flowtable is stale + - net: ipa: fix init header command validation + - platform/x86: thinkpad_acpi: Allow the FnLock LED to change state + - x86/build: Turn off -fcf-protection for realmode targets + - platform/x86: intel_pmc_core: Ignore GBE LTR on Tiger Lake platforms + - scsi: target: pscsi: Clean up after failure in pscsi_map_sg() + - selftests/vm: fix out-of-tree build + - ia64: mca: allocate early mca with GFP_ATOMIC + - ia64: fix format strings for err_inject + - cifs: revalidate mapping when we open files for SMB1 POSIX + - cifs: Silently ignore unknown oplock break handle + - init/Kconfig: make COMPILE_TEST depend on !S390 + - init/Kconfig: make COMPILE_TEST depend on HAS_IOMEM + - nvme-mpath: replace direct_make_request with generic_make_request + + * Enable CIFS GCM256 (LP: #1921916) + - smb3: add defines for new crypto algorithms + - smb3.1.1: add new module load parm require_gcm_256 + - smb3.1.1: add new module load parm enable_gcm_256 + - smb3.1.1: print warning if server does not support requested encryption type + - smb3.1.1: rename nonces used for GCM and CCM encryption + - smb3.1.1: set gcm256 when requested + - cifs: Adjust key sizes and key generation routines for AES256 encryption + + * locking/qrwlock: Fix ordering in queued_write_lock_slowpath() (LP: #1926184) + - locking/qrwlock: Fix ordering in queued_write_lock_slowpath() + + * Make AMD gpus choose YCbCr420 encoding automatically when required for 4k + 60Hz output (LP: #1922754) + - drm/amd/display: Try YCbCr420 color when YCbCr444 fails + + * [Ubuntu 21.04] net/mlx5: Fix HW spec violation configuring uplink + (LP: #1925452) + - net/mlx5: Fix HW spec violation configuring uplink + + * Groovy update: upstream stable patchset 2021-04-27 (LP: #1926360) + - crypto: aesni - Use TEST %reg,%reg instead of CMP $0,%reg + - crypto: x86/aes-ni-xts - use direct calls to and 4-way stride + - RDMA/srp: Fix support for unpopulated and unbalanced NUMA nodes + - fuse: fix live lock in fuse_iget() + - ALSA: usb-audio: Don't avoid stopping the stream at disconnection + - net: dsa: b53: Support setting learning on port + - KVM: arm64: nvhe: Save the SPE context early + - drm/i915/gvt: Set SNOOP for PAT3 on BXT/APL to workaround GPU BB hang + - drm/i915/gvt: Fix mmio handler break on BXT/APL. + - drm/i915/gvt: Fix virtual display setup for BXT/APL + - drm/i915/gvt: Fix vfio_edid issue for BXT/APL + - ASoC: ak4458: Add MODULE_DEVICE_TABLE + - ASoC: ak5558: Add MODULE_DEVICE_TABLE + - ALSA: dice: fix null pointer dereference when node is disconnected + - ALSA: hda/realtek: apply pin quirk for XiaomiNotebook Pro + - ALSA: hda: generic: Fix the micmute led init state + - ALSA: hda/realtek: Apply headset-mic quirks for Xiaomi Redmibook Air + - s390/pci: refactor zpci_create_device() + - s390/pci: remove superfluous zdev->zbus check + - s390/pci: fix leak of PCI device structure + - zonefs: Fix O_APPEND async write handling + - zonefs: prevent use of seq files as swap file + - btrfs: fix race when cloning extent buffer during rewind of an old root + - btrfs: fix slab cache flags for free space tree bitmap + - vhost-vdpa: set v->config_ctx to NULL if eventfd_ctx_fdget() fails + - ASoC: fsl_ssi: Fix TDM slot setup for I2S mode + - ASoC: Intel: bytcr_rt5640: Fix HP Pavilion x2 10-p0XX OVCD current threshold + - ASoC: SOF: Intel: unregister DMIC device on probe error + - ASoC: SOF: intel: fix wrong poll bits in dsp power down + - ASoC: qcom: sdm845: Fix array out of bounds access + - ASoC: qcom: sdm845: Fix array out of range on rx slim channels + - ASoC: codecs: wcd934x: add a sanity check in set channel map + - ASoC: qcom: lpass-cpu: Fix lpass dai ids parse + - ASoC: simple-card-utils: Do not handle device clock + - afs: Fix accessing YFS xattrs on a non-YFS server + - afs: Stop listxattr() from listing "afs.*" attributes + - nvme: fix Write Zeroes limitations + - nvme-tcp: fix misuse of __smp_processor_id with preemption enabled + - nvme-tcp: fix possible hang when failing to set io queues + - nvme-tcp: fix a NULL deref when receiving a 0-length r2t PDU + - nvmet: don't check iosqes,iocqes for discovery controllers + - nfsd: Don't keep looking up unhashed files in the nfsd file cache + - nfsd: don't abort copies early + - NFSD: Repair misuse of sv_lock in 5.10.16-rt30. + - NFSD: fix dest to src mount in inter-server COPY + - svcrdma: disable timeouts on rdma backchannel + - vfio: IOMMU_API should be selected + - sunrpc: fix refcount leak for rpc auth modules + - i915/perf: Start hrtimer only if sampling the OA buffer + - pstore: Fix warning in pstore_kill_sb() + - net/qrtr: fix __netdev_alloc_skb call + - kbuild: Fix for empty SUBLEVEL or PATCHLEVEL again + - cifs: fix allocation size on newly created files + - riscv: Correct SPARSEMEM configuration + - scsi: lpfc: Fix some error codes in debugfs + - scsi: myrs: Fix a double free in myrs_cleanup() + - RISC-V: correct enum sbi_ext_rfence_fid + - counter: stm32-timer-cnt: Report count function when SLAVE_MODE_DISABLED + - nvme-rdma: fix possible hang when failing to set io queues + - ibmvnic: add some debugs + - ibmvnic: serialize access to work queue on remove + - tty: serial: stm32-usart: Remove set but unused 'cookie' variables + - serial: stm32: fix DMA initialization error handling + - bpf: Declare __bpf_free_used_maps() unconditionally + - RDMA/rtrs: Remove unnecessary argument dir of rtrs_iu_free + - RDMA/rtrs-srv: Jump to dereg_mr label if allocate iu fails + - RDMA/rtrs: Introduce rtrs_post_send + - RDMA/rtrs: Fix KASAN: stack-out-of-bounds bug + - module: merge repetitive strings in module_sig_check() + - module: avoid *goto*s in module_sig_check() + - module: harden ELF info handling + - scsi: pm80xx: Fix pm8001_mpi_get_nvmd_resp() race condition + - RDMA/mlx5: Allow creating all QPs even when non RDMA profile is used + - i40e: Fix endianness conversions + - net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ8081 + - MIPS: compressed: fix build with enabled UBSAN + - media: cedrus: h264: Support profile controls + - ibmvnic: remove excessive irqsave + - s390/qeth: integrate RX refill worker with NAPI + - s390/qeth: schedule TX NAPI on QAOB completion + - drm/amd/pm: fulfill the Polaris implementation for + get_clock_by_type_with_latency() + - gfs2: Add common helper for holding and releasing the freeze glock + - gfs2: move freeze glock outside the make_fs_rw and _ro functions + - gfs2: bypass signal_our_withdraw if no journal + - powerpc: Force inlining of cpu_has_feature() to avoid build failure + - usb-storage: Add quirk to defeat Kindle's automatic unload + - usbip: Fix incorrect double assignment to udc->ud.tcp_rx + - usb: gadget: configfs: Fix KASAN use-after-free + - usb: typec: Remove vdo[3] part of tps6598x_rx_identity_reg struct + - usb: typec: tcpm: Invoke power_supply_changed for tcpm-source-psy- + - thunderbolt: Initialize HopID IDAs in tb_switch_alloc() + - iio:adc:stm32-adc: Add HAS_IOMEM dependency + - iio:adc:qcom-spmi-vadc: add default scale to LR_MUX2_BAT_ID channel + - iio: adis16400: Fix an error code in adis16400_initial_setup() + - iio: gyro: mpu3050: Fix error handling in mpu3050_trigger_handler + - iio: adc: ab8500-gpadc: Fix off by 10 to 3 + - iio: adc: ad7949: fix wrong ADC result due to incorrect bit mask + - iio: adc: adi-axi-adc: add proper Kconfig dependencies + - iio: hid-sensor-humidity: Fix alignment issue of timestamp channel + - iio: hid-sensor-prox: Fix scale not correct issue + - iio: hid-sensor-temperature: Fix issues of timestamp channel + - counter: stm32-timer-cnt: fix ceiling write max value + - counter: stm32-timer-cnt: fix ceiling miss-alignment with reload register + - PCI: rpadlpar: Fix potential drc_name corruption in store functions + - perf/x86/intel: Fix a crash caused by zero PEBS status + - x86/ioapic: Ignore IRQ2 again + - kernel, fs: Introduce and use set_restart_fn() and arch_set_restart_data() + - x86: Move TS_COMPAT back to asm/thread_info.h + - x86: Introduce TS_COMPAT_RESTART to fix get_nr_restart_syscall() + - efivars: respect EFI_UNSUPPORTED return from firmware + - ext4: fix error handling in ext4_end_enable_verity() + - ext4: find old entry again if failed to rename whiteout + - ext4: do not try to set xattr into ea_inode if value is empty + - ext4: fix potential error in ext4_do_update_inode + - MAINTAINERS: move some real subsystems off of the staging mailing list + - MAINTAINERS: move the staging subsystem to lists.linux.dev + - efi: use 32-bit alignment for efi_guid_t literals + - firmware/efi: Fix a use after bug in efi_mem_reserve_persistent + - genirq: Disable interrupts for force threaded handlers + - x86/apic/of: Fix CPU devicetree-node lookups + - cifs: Fix preauth hash corruption + - USB: replace hardcode maximum usb string length by definition + + * Groovy update: upstream stable patchset 2021-04-20 (LP: #1925259) + - uapi: nfnetlink_cthelper.h: fix userspace compilation error + - powerpc/perf: Fix handling of privilege level checks in perf interrupt + context + - powerpc/pseries: Don't enforce MSI affinity with kdump + - crypto: mips/poly1305 - enable for all MIPS processors + - ath9k: fix transmitting to stations in dynamic SMPS mode + - net: Fix gro aggregation for udp encaps with zero csum + - net: check if protocol extracted by virtio_net_hdr_set_proto is correct + - net: avoid infinite loop in mpls_gso_segment when mpls_hlen == 0 + - can: skb: can_skb_set_owner(): fix ref counting if socket was closed before + setting skb ownership + - can: flexcan: assert FRZ bit in flexcan_chip_freeze() + - can: flexcan: enable RX FIFO after FRZ/HALT valid + - can: flexcan: invoke flexcan_chip_freeze() to enter freeze mode + - can: tcan4x5x: tcan4x5x_init(): fix initialization - clear MRAM before + entering Normal Mode + - tcp: Fix sign comparison bug in getsockopt(TCP_ZEROCOPY_RECEIVE) + - tcp: add sanity tests to TCP_QUEUE_SEQ + - netfilter: nf_nat: undo erroneous tcp edemux lookup + - netfilter: x_tables: gpf inside xt_find_revision() + - net: always use icmp{,v6}_ndo_send from ndo_start_xmit + - net: phy: fix save wrong speed and duplex problem if autoneg is on + - selftests/bpf: No need to drop the packet when there is no geneve opt + - selftests/bpf: Mask bpf_csum_diff() return value to 16 bits in test_verifier + - samples, bpf: Add missing munmap in xdpsock + - libbpf: Clear map_info before each bpf_obj_get_info_by_fd + - ibmvnic: always store valid MAC address + - mt76: dma: do not report truncated frames to mac80211 + - powerpc/603: Fix protection of user pages mapped with PROT_NONE + - mount: fix mounting of detached mounts onto targets that reside on shared + mounts + - cifs: return proper error code in statfs(2) + - Revert "mm, slub: consider rest of partial list if acquire_slab() fails" + - sh_eth: fix TRSCER mask for SH771x + - net: enetc: don't overwrite the RSS indirection table when initializing + - net: enetc: take the MDIO lock only once per NAPI poll cycle + - net: enetc: fix incorrect TPID when receiving 802.1ad tagged packets + - net: enetc: don't disable VLAN filtering in IFF_PROMISC mode + - net: enetc: remove bogus write to SIRXIDR from enetc_setup_rxbdr + - net: enetc: keep RX ring consumer index in sync with hardware + - net: ethernet: mtk-star-emac: fix wrong unmap in RX handling + - net/mlx4_en: update moderation when config reset + - net: stmmac: fix incorrect DMA channel intr enable setting of EQoS v4.10 + - nexthop: Do not flush blackhole nexthops when loopback goes down + - net: sched: avoid duplicates in classes dump + - net: dsa: sja1105: fix SGMII PCS being forced to SPEED_UNKNOWN instead of + SPEED_10 + - net: usb: qmi_wwan: allow qmimux add/del with master up + - netdevsim: init u64 stats for 32bit hardware + - cipso,calipso: resolve a number of problems with the DOI refcounts + - net: stmmac: Fix VLAN filter delete timeout issue in Intel mGBE SGMII + - stmmac: intel: Fixes clock registration error seen for multiple interfaces + - net: lapbether: Remove netif_start_queue / netif_stop_queue + - net: davicom: Fix regulator not turned off on failed probe + - net: davicom: Fix regulator not turned off on driver removal + - net: enetc: allow hardware timestamping on TX queues with tc-etf enabled + - net: qrtr: fix error return code of qrtr_sendmsg() + - s390/qeth: fix memory leak after failed TX Buffer allocation + - r8169: fix r8168fp_adjust_ocp_cmd function + - ixgbe: fail to create xfrm offload of IPsec tunnel mode SA + - perf build: Fix ccache usage in $(CC) when generating arch errno table + - net: stmmac: stop each tx channel independently + - net: stmmac: fix watchdog timeout during suspend/resume stress test + - net: stmmac: fix wrongly set buffer2 valid when sph unsupport + - ethtool: fix the check logic of at least one channel for RX/TX + - selftests: forwarding: Fix race condition in mirror installation + - perf traceevent: Ensure read cmdlines are null terminated. + - perf report: Fix -F for branch & mem modes + - net: hns3: fix query vlan mask value error for flow director + - net: hns3: fix bug when calculating the TCAM table info + - s390/cio: return -EFAULT if copy_to_user() fails again + - bnxt_en: reliably allocate IRQ table on reset to avoid crash + - gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk + - gpiolib: acpi: Allow to find GpioInt() resource by name and index + - gpio: pca953x: Set IRQ type when handle Intel Galileo Gen 2 + - gpio: fix gpio-device list corruption + - drm/compat: Clear bounce structures + - drm/amd/display: Add a backlight module option + - drm/amdgpu/display: use GFP_ATOMIC in dcn21_validate_bandwidth_fp() + - drm/amd/display: Fix nested FPU context in dcn21_validate_bandwidth() + - drm/amd/pm: bug fix for pcie dpm + - drm/amdgpu/display: simplify backlight setting + - drm/amdgpu/display: don't assert in set backlight function + - drm/amdgpu/display: handle aux backlight in backlight_get_brightness + - drm/shmem-helper: Check for purged buffers in fault handler + - drm/shmem-helper: Don't remove the offset in vm_area_struct pgoff + - drm: Use USB controller's DMA mask when importing dmabufs + - drm: meson_drv add shutdown function + - drm/shmem-helpers: vunmap: Don't put pages for dma-buf + - s390/cio: return -EFAULT if copy_to_user() fails + - s390/crypto: return -EFAULT if copy_to_user() fails + - qxl: Fix uninitialised struct field head.surface_id + - sh_eth: fix TRSCER mask for R7S9210 + - media: usbtv: Fix deadlock on suspend + - media: rkisp1: params: fix wrong bits settings + - media: v4l: vsp1: Fix uif null pointer access + - media: v4l: vsp1: Fix bru null pointer access + - media: rc: compile rc-cec.c into rc-core + - [Packaging] update modules for rc-cec + - cifs: fix credit accounting for extra channel + - net: hns3: fix error mask definition of flow director + - s390/qeth: don't replace a fully completed async TX buffer + - s390/qeth: remove QETH_QDIO_BUF_HANDLED_DELAYED state + - s390/qeth: improve completion of pending TX buffers + - s390/qeth: fix notification for pending buffers during teardown + - net: dsa: tag_ksz: don't allocate additional memory for padding/tagging + - net: dsa: trailer: don't allocate additional memory for padding/tagging + - net: dsa: tag_qca: let DSA core deal with TX reallocation + - net: dsa: tag_ocelot: let DSA core deal with TX reallocation + - net: dsa: tag_mtk: let DSA core deal with TX reallocation + - net: dsa: tag_lan9303: let DSA core deal with TX reallocation + - net: dsa: tag_edsa: let DSA core deal with TX reallocation + - net: dsa: tag_brcm: let DSA core deal with TX reallocation + - net: dsa: tag_dsa: let DSA core deal with TX reallocation + - net: dsa: tag_gswip: let DSA core deal with TX reallocation + - net: dsa: tag_ar9331: let DSA core deal with TX reallocation + - net: dsa: tag_mtk: fix 802.1ad VLAN egress + - ath11k: peer delete synchronization with firmware + - i2c: rcar: faster irq code to minimize HW race condition + - i2c: rcar: optimize cacheline to minimize HW race condition + - scsi: ufs: WB is only available on LUN #0 to #7 + - udf: fix silent AED tagLocation corruption + - iommu/vt-d: Clear PRQ overflow only when PRQ is empty + - mmc: mxs-mmc: Fix a resource leak in an error handling path in + 'mxs_mmc_probe()' + - mmc: mediatek: fix race condition between msdc_request_timeout and irq + - mmc: sdhci-iproc: Add ACPI bindings for the RPi + - Platform: OLPC: Fix probe error handling + - powerpc/pci: Add ppc_md.discover_phbs() + - spi: stm32: make spurious and overrun interrupts visible + - powerpc: improve handling of unrecoverable system reset + - powerpc/perf: Record counter overflow always if SAMPLE_IP is unset + - HID: logitech-dj: add support for the new lightspeed connection iteration + - powerpc/64: Fix stack trace not displaying final frame + - iommu/amd: Fix performance counter initialization + - clk: qcom: gdsc: Implement NO_RET_PERIPH flag + - sparc32: Limit memblock allocation to low memory + - sparc64: Use arch_validate_flags() to validate ADI flag + - Input: applespi - don't wait for responses to commands indefinitely. + - PCI: xgene-msi: Fix race in installing chained irq handler + - PCI: mediatek: Add missing of_node_put() to fix reference leak + - drivers/base: build kunit tests without structleak plugin + - PCI/LINK: Remove bandwidth notification + - [Config] updateconfigs for PCIE_BW + - kbuild: clamp SUBLEVEL to 255 + - PCI: Fix pci_register_io_range() memory leak + - i40e: Fix memory leak in i40e_probe + - s390/smp: __smp_rescan_cpus() - move cpumask away from stack + - drivers/base/memory: don't store phys_device in memory blocks + - sysctl.c: fix underflow value setting risk in vm_table + - scsi: libiscsi: Fix iscsi_prep_scsi_cmd_pdu() error handling + - scsi: target: core: Add cmd length set before cmd complete + - scsi: target: core: Prevent underflow for service actions + - clk: qcom: gpucc-msm8998: Add resets, cxc, fix flags on gpu_gx_gdsc + - mmc: sdhci: Update firmware interface API + - ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler + - ARM: assembler: introduce adr_l, ldr_l and str_l macros + - ARM: efistub: replace adrl pseudo-op with adr_l macro invocation + - ALSA: usb: Add Plantronics C320-M USB ctrl msg delay quirk + - ALSA: hda/hdmi: Cancel pending works before suspend + - ALSA: hda/conexant: Add quirk for mute LED control on HP ZBook G5 + - ALSA: hda/ca0132: Add Sound BlasterX AE-5 Plus support + - ALSA: hda: Drop the BATCH workaround for AMD controllers + - ALSA: hda: Flush pending unsolicited events before suspend + - ALSA: hda: Avoid spurious unsol event handling during S3/S4 + - ALSA: usb-audio: Fix "cannot get freq eq" errors on Dell AE515 sound bar + - ALSA: usb-audio: Apply the control quirk to Plantronics headsets + - arm64: kasan: fix page_alloc tagging with DEBUG_VIRTUAL + - s390/dasd: fix hanging DASD driver unbind + - s390/dasd: fix hanging IO request during DASD driver unbind + - software node: Fix node registration + - xen/events: reset affinity of 2-level event when tearing it down + - mmc: mmci: Add MMC_CAP_NEED_RSP_BUSY for the stm32 variants + - mmc: core: Fix partition switch time for eMMC + - mmc: cqhci: Fix random crash when remove mmc module/card + - cifs: do not send close in compound create+close requests + - Goodix Fingerprint device is not a modem + - USB: gadget: u_ether: Fix a configfs return code + - usb: gadget: f_uac2: always increase endpoint max_packet_size by one audio + slot + - usb: gadget: f_uac1: stop playback on function disable + - usb: dwc3: qcom: Add missing DWC3 OF node refcount decrement + - usb: dwc3: qcom: add URS Host support for sdm845 ACPI boot + - usb: dwc3: qcom: add ACPI device id for sc8180x + - usb: dwc3: qcom: Honor wakeup enabled/disabled state + - USB: usblp: fix a hang in poll() if disconnected + - usb: renesas_usbhs: Clear PIPECFG for re-enabling pipe with other EPNUM + - usb: xhci: do not perform Soft Retry for some xHCI hosts + - xhci: Improve detection of device initiated wake signal. + - usb: xhci: Fix ASMedia ASM1042A and ASM3242 DMA addressing + - xhci: Fix repeated xhci wake after suspend due to uncleared internal wake + state + - USB: serial: io_edgeport: fix memory leak in edge_startup + - USB: serial: ch341: add new Product ID + - USB: serial: cp210x: add ID for Acuity Brands nLight Air Adapter + - USB: serial: cp210x: add some more GE USB IDs + - usbip: fix stub_dev to check for stream socket + - usbip: fix vhci_hcd to check for stream socket + - usbip: fix vudc to check for stream socket + - usbip: fix vhci_hcd attach_store() races leading to gpf + - usbip: fix vudc usbip_sockfd_store races leading to gpf + - misc/pvpanic: Export module FDT device table + - staging: rtl8192u: fix ->ssid overflow in r8192_wx_set_scan() + - staging: rtl8188eu: prevent ->ssid overflow in rtw_wx_set_scan() + - staging: rtl8712: unterminated string leads to read overflow + - staging: rtl8188eu: fix potential memory corruption in + rtw_check_beacon_data() + - staging: ks7010: prevent buffer overflow in ks_wlan_set_scan() + - staging: rtl8712: Fix possible buffer overflow in r8712_sitesurvey_cmd + - staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan + - staging: comedi: addi_apci_1032: Fix endian problem for COS sample + - staging: comedi: addi_apci_1500: Fix endian problem for command sample + - staging: comedi: adv_pci1710: Fix endian problem for AI command data + - staging: comedi: das6402: Fix endian problem for AI command data + - staging: comedi: das800: Fix endian problem for AI command data + - staging: comedi: dmm32at: Fix endian problem for AI command data + - staging: comedi: me4000: Fix endian problem for AI command data + - staging: comedi: pcl711: Fix endian problem for AI command data + - staging: comedi: pcl818: Fix endian problem for AI command data + - sh_eth: fix TRSCER mask for R7S72100 + - arm64/mm: Fix pfn_valid() for ZONE_DEVICE based memory + - SUNRPC: Set memalloc_nofs_save() for sync tasks + - NFS: Don't revalidate the directory permissions on a lookup failure + - NFS: Don't gratuitously clear the inode cache when lookup failed + - NFSv4.2: fix return value of _nfs4_get_security_label() + - block: rsxx: fix error return code of rsxx_pci_probe() + - configfs: fix a use-after-free in __configfs_open_file + - arm64: mm: use a 48-bit ID map when possible on 52-bit VA builds + - hrtimer: Update softirq_expires_next correctly after + __hrtimer_get_next_event() + - powerpc/64s/exception: Clean up a missed SRR specifier + - stop_machine: mark helpers __always_inline + - include/linux/sched/mm.h: use rcu_dereference in in_vfork() + - zram: fix return value on writeback_store + - linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP* + - sched/membarrier: fix missing local execution of ipi_sync_rq_state() + - efi: stub: omit SetVirtualAddressMap() if marked unsupported in RT_PROP + table + - powerpc/64s: Fix instruction encoding for lis in ppc_function_entry() + - powerpc: Fix inverted SET_FULL_REGS bitop + - powerpc: Fix missing declaration of [en/dis]able_kernel_vsx() + - binfmt_misc: fix possible deadlock in bm_register_write + - x86/unwind/orc: Disable KASAN checking in the ORC unwinder, part 2 + - KVM: kvmclock: Fix vCPUs > 64 can't be online/hotpluged + - KVM: arm64: Reject VM creation when the default IPA size is unsupported + - KVM: arm64: Fix exclusive limit for IPA size + - mm/userfaultfd: fix memory corruption due to writeprotect + - mm/page_alloc.c: refactor initialization of struct page for holes in memory + layout + - xen/events: don't unmask an event channel when an eoi is pending + - xen/events: avoid handling the same event on two cpus at the same time + + * Groovy update: upstream stable patchset 2021-04-12 (LP: #1923493) + - net: usb: qmi_wwan: support ZTE P685M modem + - drm/virtio: use kvmalloc for large allocations + - x86/build: Treat R_386_PLT32 relocation as R_386_PC32 + - JFS: more checks for invalid superblock + - sched/core: Allow try_invoke_on_locked_down_task() with irqs disabled + - udlfb: Fix memory leak in dlfb_usb_probe + - media: mceusb: sanity check for prescaler value + - erofs: fix shift-out-of-bounds of blkszbits + - media: v4l2-ctrls.c: fix shift-out-of-bounds in std_validate + - xfs: Fix assert failure in xfs_setattr_size() + - net/af_iucv: remove WARN_ONCE on malformed RX packets + - smackfs: restrict bytes count in smackfs write functions + - tomoyo: ignore data race while checking quota + - net: fix up truesize of cloned skb in skb_prepare_for_shift() + - nbd: handle device refs for DESTROY_ON_DISCONNECT properly + - mm/hugetlb.c: fix unnecessary address expansion of pmd sharing + - RDMA/rtrs: Do not signal for heatbeat + - RDMA/rtrs-clt: Use bitmask to check sess->flags + - RDMA/rtrs-srv: Do not signal REG_MR + - tcp: fix tcp_rmem documentation + - net: bridge: use switchdev for port flags set through sysfs too + - net: ag71xx: remove unnecessary MTU reservation + - net: hsr: add support for EntryForgetTime + - net: psample: Fix netlink skb length with tunnel info + - net: fix dev_ifsioc_locked() race condition + - dt-bindings: ethernet-controller: fix fixed-link specification + - dt-bindings: net: btusb: DT fix s/interrupt-name/interrupt-names/ + - rsi: Fix TX EAPOL packet handling against iwlwifi AP + - rsi: Move card interrupt handling to RX thread + - EDAC/amd64: Do not load on family 0x15, model 0x13 + - staging: fwserial: Fix error handling in fwserial_create + - x86/reboot: Add Zotac ZBOX CI327 nano PCI reboot quirk + - vt/consolemap: do font sum unsigned + - wlcore: Fix command execute failure 19 for wl12xx + - Bluetooth: hci_h5: Set HCI_QUIRK_SIMULTANEOUS_DISCOVERY for btrtl + - Bluetooth: btusb: fix memory leak on suspend and resume + - mt76: mt7615: reset token when mac_reset happens + - pktgen: fix misuse of BUG_ON() in pktgen_thread_worker() + - ath10k: fix wmi mgmt tx queue full due to race condition + - net: sfp: add mode quirk for GPON module Ubiquiti U-Fiber Instant + - Bluetooth: Add new HCI_QUIRK_NO_SUSPEND_NOTIFIER quirk + - Bluetooth: Fix null pointer dereference in amp_read_loc_assoc_final_data + - staging: most: sound: add sanity check for function argument + - staging: bcm2835-audio: Replace unsafe strcpy() with strscpy() + - brcmfmac: Add DMI nvram filename quirk for Predia Basic tablet + - brcmfmac: Add DMI nvram filename quirk for Voyo winpad A15 tablet + - drm/hisilicon: Fix use-after-free + - crypto: tcrypt - avoid signed overflow in byte count + - fs: make unlazy_walk() error handling consistent + - drm/amdgpu: Add check to prevent IH overflow + - PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse + - ASoC: Intel: bytcr_rt5640: Add new BYT_RT5640_NO_SPEAKERS quirk-flag + - drm/amd/display: Guard against NULL pointer deref when get_i2c_info fails + - media: uvcvideo: Allow entities with no pads + - f2fs: handle unallocated section and zone on pinned/atgc + - f2fs: fix to set/clear I_LINKABLE under i_lock + - nvme-core: add cancel tagset helpers + - nvme-rdma: add clean action for failed reconnection + - nvme-tcp: add clean action for failed reconnection + - ASoC: Intel: Add DMI quirk table to soc_intel_is_byt_cr() + - btrfs: fix error handling in commit_fs_roots + - perf/x86/kvm: Add Cascade Lake Xeon steppings to isolation_ucodes[] + - ASoC: Intel: sof_sdw: detect DMIC number based on mach params + - parisc: Bump 64-bit IRQ stack size to 64 KB + - sched/features: Fix hrtick reprogramming + - ASoC: Intel: bytcr_rt5640: Add quirk for the Estar Beauty HD MID 7316R + tablet + - ASoC: Intel: bytcr_rt5640: Add quirk for the Voyo Winpad A15 tablet + - ASoC: Intel: bytcr_rt5651: Add quirk for the Jumper EZpad 7 tablet + - ASoC: Intel: bytcr_rt5640: Add quirk for the Acer One S1002 tablet + - Xen/gnttab: handle p2m update errors on a per-slot basis + - xen-netback: respect gnttab_map_refs()'s return value + - zsmalloc: account the number of compacted pages correctly + - swap: fix swapfile read/write offset + - media: v4l: ioctl: Fix memory leak in video_usercopy + - ALSA: hda/realtek: Apply dual codec quirks for MSI Godlike X570 board + - net: sfp: VSOL V2801F / CarlitoxxPro CPGOS03-0490 v2.0 workaround + - net: sfp: add workaround for Realtek RTL8672 and RTL9601C chips + - nvme-pci: refactor nvme_unmap_data + - nvme-pci: fix error unwind in nvme_map_data + - ALSA: hda/realtek: Enable headset mic of Acer SWIFT with ALC256 + - ALSA: usb-audio: use Corsair Virtuoso mapping for Corsair Virtuoso SE + - ALSA: usb-audio: Drop bogus dB range in too low level + - tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality() + - tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality() + - btrfs: avoid double put of block group when emptying cluster + - btrfs: fix raid6 qstripe kmap + - btrfs: fix race between writes to swap files and scrub + - btrfs: fix stale data exposure after cloning a hole with NO_HOLES enabled + - btrfs: fix race between extent freeing/allocation when using bitmaps + - btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl + - btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata + - btrfs: unlock extents in btrfs_zero_range in case of quota reservation + errors + - btrfs: fix warning when creating a directory with smack enabled + - io_uring: ignore double poll add on the same waitqueue head + - dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size + - dm verity: fix FEC for RS roots unaligned to block size + - drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie + - crypto - shash: reduce minimum alignment of shash_desc structure + - arm64: mm: Move reserve_crashkernel() into mem_init() + - arm64: mm: Move zone_dma_bits initialization into zone_sizes_init() + - of/address: Introduce of_dma_get_max_cpu_address() + - of: unittest: Add test for of_dma_get_max_cpu_address() + - arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges + - arm64: mm: Set ZONE_DMA size based on early IORT scan + - mm: Remove examples from enum zone_type comment + - ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits + - RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep + - RDMA/rxe: Fix missing kconfig dependency on CRYPTO + - IB/mlx5: Add missing error code + - ALSA: hda: intel-nhlt: verify config type + - ftrace: Have recordmcount use w8 to read relp->r_info in + arm64_is_fake_mcount + - rsxx: Return -EFAULT if copy_to_user() fails + - iommu/vt-d: Fix status code for Allocate/Free PASID command + - Revert "arm64: dts: amlogic: add missing ethernet reset ID" + - of: unittest: Fix build on architectures without CONFIG_OF_ADDRESS + - tomoyo: recognize kernel threads correctly + - r8169: fix resuming from suspend on RTL8105e if machine runs on battery + - ACPICA: Fix race in generic_serial_bus (I2C) and GPIO op_region parameter + handling + - ASoC: SOF: Intel: broadwell: fix mutual exclusion with catpt driver + - nvme-pci: mark Kingston SKC2000 as not supporting the deepest power state + - parisc: Enable -mlong-calls gcc option with CONFIG_COMPILE_TEST + - arm64: Make CPU_BIG_ENDIAN depend on ld.bfd or ld.lld 13.0.0+ + - iommu/amd: Fix sleeping in atomic in increase_address_space() + - Bluetooth: btqca: Add valid le states quirk + - mwifiex: pcie: skip cancel_work_sync() on reset failure path + - ASoC: Intel: sof_sdw: add quirk for new TigerLake-SDCA device + - bus: ti-sysc: Implement GPMC debug quirk to drop platform data + - platform/x86: acer-wmi: Cleanup ACER_CAP_FOO defines + - platform/x86: acer-wmi: Cleanup accelerometer device handling + - platform/x86: acer-wmi: Add new force_caps module parameter + - platform/x86: acer-wmi: Add ACER_CAP_SET_FUNCTION_MODE capability flag + - platform/x86: acer-wmi: Add support for SW_TABLET_MODE on Switch devices + - platform/x86: acer-wmi: Add ACER_CAP_KBD_DOCK quirk for the Aspire Switch + 10E SW3-016 + - HID: mf: add support for 0079:1846 Mayflash/Dragonrise USB Gamecube Adapter + - media: cx23885: add more quirks for reset DMA on some AMD IOMMU + - ACPI: video: Add DMI quirk for GIGABYTE GB-BXBT-2807 + - ASoC: Intel: bytcr_rt5640: Add quirk for ARCHOS Cesium 140 + - PCI: Add function 1 DMA alias quirk for Marvell 9215 SATA controller + - ASoC: Intel: sof_sdw: add missing TGL_HDMI quirk for Dell SKU 0A32 + - scsi: ufs: Add a quirk to permit overriding UniPro defaults + - misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom + - scsi: ufs: Introduce a quirk to allow only page-aligned sg entries + - drm/msm/a5xx: Remove overwriting A5XX_PC_DBG_ECO_CNTL register + - mmc: sdhci-of-dwcmshc: set SDHCI_QUIRK2_PRESET_VALUE_BROKEN + - HID: i2c-hid: Add I2C_HID_QUIRK_NO_IRQ_AFTER_RESET for ITE8568 EC on Voyo + Winpad A15 + - scsi: ufs: Fix a duplicate dev quirk number + - KVM: SVM: Clear the CR4 register on reset + - nvme-pci: mark Seagate Nytro XM1440 as QUIRK_NO_NS_DESC_LIST. + - nvme-pci: add quirks for Lexar 256GB SSD + - dm table: fix iterate_devices based device capability checks + - dm table: fix DAX iterate_devices based device capability checks + - dm table: fix zoned iterate_devices based device capability checks + + * [SRU][F:OEM-5.10/G/H] add realtek 8852 bluetooth support (LP: #1924207) + - Bluetooth: btusb: btrtl: Add support for RTL8852A + - Bluetooth: btrtl: Enable central-peripheral role + - Bluetooth: btrtl: Enable WBS for the specific Realtek devices + + * Backport mlx5e fix for tunnel offload (LP: #1921769) + - net/mlx5e: Check tunnel offload is required before setting SWP + + * crash utility fails on arm64 with cannot determine VA_BITS_ACTUAL + (LP: #1919275) + - arm64/crash_core: Export TCR_EL1.T1SZ in vmcoreinfo + + -- Stefan Bader Fri, 07 May 2021 14:54:13 +0200 + +linux (5.8.0-53.60) groovy; urgency=medium + + * CVE-2021-3491 + - io_uring: fix provide_buffers sign extension + - io_uring: fix overflows checks in provide buffers + - SAUCE: proc: Avoid mixing integer types in mem_rw() + - SAUCE: io_uring: truncate lengths larger than MAX_RW_COUNT on provide + buffers + + * CVE-2021-3490 + - bpf: Fix a verifier failure with xor + - SAUCE: bpf: verifier: fix ALU32 bounds tracking with bitwise ops + + * CVE-2021-3489 + - SAUCE: bpf: ringbuf: deny reserve of buffers larger than ringbuf + - SAUCE: bpf: prevent writable memory-mapping of read-only ringbuf pages + + -- Stefan Bader Thu, 06 May 2021 07:43:20 +0200 + +linux (5.8.0-52.59) groovy; urgency=medium + + * groovy/linux: 5.8.0-52.59 -proposed tracker (LP: #1926730) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * hangup01 from pty in ubuntu_ltp_stable failed on G-5.8 (LP: #1925290) + - SAUCE: Revert "tty: implement read_iter" + - SAUCE: Revert "tty: convert tty_ldisc_ops 'read()' function to take a kernel + pointer" + + -- Kleber Sacilotto de Souza Fri, 30 Apr 2021 14:42:32 +0200 + +linux (5.8.0-51.57) groovy; urgency=medium + + * groovy/linux: 5.8.0-51.57 -proposed tracker (LP: #1923754) + + * CVE-2021-28375 + - misc: fastrpc: restrict user apps from sending kernel RPC messages + + * CVE-2021-29646 + - tipc: better validate user input in tipc_nl_retrieve_key() + + * SND_PCI_QUIRK for Clevo NH55RZQ and Intel NUC10 (LP: #1922759) + - ALSA: hda/realtek: Add quirk for Intel NUC 10 + - ALSA: hda/realtek: Add quirk for Clevo NH55RZQ + + * CVE-2021-29650 + - Revert "netfilter: x_tables: Update remaining dereference to RCU" + - Revert "netfilter: x_tables: Switch synchronization to RCU" + - netfilter: x_tables: Use correct memory barriers. + + * LRMv4: switch to signing nvidia modules via the Ubuntu Modules signing key + (LP: #1918134) + - [Packaging] dkms-build{,--nvidia-N} sync back from LRMv4 + + * CVE-2021-29266 + - vhost-vdpa: fix use-after-free of v->config_ctx + + * CVE-2021-29264 + - gianfar: fix jumbo packets+napi+rx overrun crash + + * CVE-2021-29265 + - usbip: fix stub_dev usbip_sockfd_store() races leading to gpf + + * Bcache bypasse writeback on caching device with fragmentation (LP: #1900438) + - bcache: consider the fragmentation when update the writeback rate + + * Fix implicit declaration warnings for kselftests/memfd test on newer + releases (LP: #1910323) + - selftests/memfd: Fix implicit declaration warnings + + * net/mlx5e: Add missing capability check for uplink follow (LP: #1921104) + - net/mlx5e: Add missing capability check for uplink follow + + * [UBUNUT 21.04] s390/vtime: fix increased steal time accounting + (LP: #1921498) + - s390/vtime: fix increased steal time accounting + + * Groovy update: upstream stable patchset 2021-03-30 (LP: #1921960) + - vmlinux.lds.h: add DWARF v5 sections + - debugfs: be more robust at handling improper input in debugfs_lookup() + - debugfs: do not attempt to create a new file before the filesystem is + initalized + - scsi: libsas: docs: Remove notify_ha_event() + - scsi: qla2xxx: Fix mailbox Ch erroneous error + - kdb: Make memory allocations more robust + - PCI: qcom: Use PHY_REFCLK_USE_PAD only for ipq8064 + - PCI: Decline to resize resources if boot config must be preserved + - virt: vbox: Do not use wait_event_interruptible when called from kernel + context + - bfq: Avoid false bfq queue merging + - ALSA: usb-audio: Fix PCM buffer allocation in non-vmalloc mode + - MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section + - random: fix the RNDRESEEDCRNG ioctl + - ALSA: pcm: Call sync_stop at disconnection + - ALSA: pcm: Assure sync with the pending stop operation at suspend + - ALSA: pcm: Don't call sync_stop if it hasn't been stopped + - drm/i915/gt: One more flush for Baytrail clear residuals + - ath10k: Fix error handling in case of CE pipe init failure + - Bluetooth: btqcomsmd: Fix a resource leak in error handling paths in the + probe function + - Bluetooth: hci_uart: Fix a race for write_work scheduling + - Bluetooth: Fix initializing response id after clearing struct + - ARM: dts: exynos: correct PMIC interrupt trigger level on Artik 5 + - ARM: dts: exynos: correct PMIC interrupt trigger level on Monk + - ARM: dts: exynos: correct PMIC interrupt trigger level on Rinato + - ARM: dts: exynos: correct PMIC interrupt trigger level on Spring + - ARM: dts: exynos: correct PMIC interrupt trigger level on Arndale Octa + - ARM: dts: exynos: correct PMIC interrupt trigger level on Odroid XU3 family + - arm64: dts: exynos: correct PMIC interrupt trigger level on TM2 + - arm64: dts: exynos: correct PMIC interrupt trigger level on Espresso + - memory: mtk-smi: Fix PM usage counter unbalance in mtk_smi ops + - Bluetooth: hci_qca: Fix memleak in qca_controller_memdump + - arm64: dts: qcom: msm8916-samsung-a5u: Fix iris compatible + - net: stmmac: dwmac-meson8b: fix enabling the timing-adjustment clock + - bpf: Add bpf_patch_call_args prototype to include/linux/bpf.h + - bpf: Avoid warning when re-casting __bpf_call_base into __bpf_call_base_args + - arm64: dts: allwinner: A64: properly connect USB PHY to port 0 + - arm64: dts: allwinner: H6: properly connect USB PHY to port 0 + - arm64: dts: allwinner: Drop non-removable from SoPine/LTS SD card + - arm64: dts: allwinner: H6: Allow up to 150 MHz MMC bus frequency + - arm64: dts: allwinner: A64: Limit MMC2 bus frequency to 150 MHz + - cpufreq: brcmstb-avs-cpufreq: Free resources in error path + - cpufreq: brcmstb-avs-cpufreq: Fix resource leaks in ->remove() + - arm64: dts: rockchip: rk3328: Add clock_in_out property to gmac2phy node + - ACPICA: Fix exception code class checks + - usb: gadget: u_audio: Free requests only after callback + - arm64: dts: qcom: sdm845-db845c: Fix reset-pin of ov8856 node + - soc: ti: pm33xx: Fix some resource leak in the error handling paths of the + probe function + - staging: media: atomisp: Fix size_t format specifier in hmm_alloc() debug + statemenet + - Bluetooth: drop HCI device reference before return + - Bluetooth: Put HCI device if inquiry procedure interrupts + - memory: ti-aemif: Drop child node when jumping out loop + - ARM: dts: Configure missing thermal interrupt for 4430 + - usb: dwc2: Do not update data length if it is 0 on inbound transfers + - usb: dwc2: Abort transaction after errors with unknown reason + - usb: dwc2: Make "trimming xfer length" a debug message + - staging: rtl8723bs: wifi_regd.c: Fix incorrect number of regulatory rules + - ARM: dts: armada388-helios4: assign pinctrl to LEDs + - ARM: dts: armada388-helios4: assign pinctrl to each fan + - arm64: dts: armada-3720-turris-mox: rename u-boot mtd partition to + a53-firmware + - opp: Correct debug message in _opp_add_static_v2() + - Bluetooth: btusb: Fix memory leak in btusb_mtk_wmt_recv + - soc: qcom: ocmem: don't return NULL in of_get_ocmem + - arm64: dts: msm8916: Fix reserved and rfsa nodes unit address + - arm64: dts: meson: fix broken wifi node for Khadas VIM3L + - ARM: s3c: fix fiq for clang IAS + - ARM: at91: use proper asm syntax in pm_suspend + - ath10k: Fix suspicious RCU usage warning in + ath10k_wmi_tlv_parse_peer_stats_info() + - ath10k: Fix lockdep assertion warning in ath10k_sta_statistics + - soc: aspeed: snoop: Add clock control logic + - bpf_lru_list: Read double-checked variable once without lock + - ath9k: fix data bus crash when setting nf_override via debugfs + - ibmvnic: Set to CLOSED state even on error + - bnxt_en: reverse order of TX disable and carrier off + - xen/netback: fix spurious event detection for common event case + - net/mlx5e: Don't change interrupt moderation params when DIM is enabled + - net/mlx5e: Change interrupt moderation channel params also when channels are + closed + - net/mlx5e: Replace synchronize_rcu with synchronize_net + - net/mlx5e: kTLS, Use refcounts to free kTLS RX priv context + - net/mlx5: Disable devlink reload for multi port slave device + - net/mlx5: Disallow RoCE on multi port slave device + - net/mlx5: Disallow RoCE on lag device + - net/mlx5: Disable devlink reload for lag devices + - mac80211: fix potential overflow when multiplying to u32 integers + - libbpf: Ignore non function pointer member in struct_ops + - bpf: Fix an unitialized value in bpf_iter + - bpf, devmap: Use GFP_KERNEL for xdp bulk queue allocation + - bpf: Fix bpf_fib_lookup helper MTU check for SKB ctx + - tcp: fix SO_RCVLOWAT related hangs under mem pressure + - net: axienet: Handle deferred probe on clock properly + - cxgb4/chtls/cxgbit: Keeping the max ofld immediate data size same in cxgb4 + and ulds + - b43: N-PHY: Fix the update of coef for the PHY revision >= 3case + - bpf: Clear subreg_def for global function return values + - ibmvnic: add memory barrier to protect long term buffer + - ibmvnic: skip send_request_unmap for timeout reset + - net: dsa: felix: perform teardown in reverse order of setup + - net: phy: mscc: adding LCPLL reset to VSC8514 + - net: amd-xgbe: Reset the PHY rx data path when mailbox command timeout + - net: amd-xgbe: Fix NETDEV WATCHDOG transmit queue timeout warning + - net: amd-xgbe: Reset link when the link never comes back + - net: amd-xgbe: Fix network fluctuations when using 1G BELFUSE SFP + - net: mvneta: Remove per-cpu queue mapping for Armada 3700 + - tty: convert tty_ldisc_ops 'read()' function to take a kernel pointer + - tty: implement read_iter + - fbdev: aty: SPARC64 requires FB_ATY_CT + - drm/gma500: Fix error return code in psb_driver_load() + - gma500: clean up error handling in init + - drm/fb-helper: Add missed unlocks in setcmap_legacy() + - crypto: sun4i-ss - linearize buffers content must be kept + - crypto: sun4i-ss - fix kmap usage + - crypto: arm64/aes-ce - really hide slower algos when faster ones are enabled + - media: allegro: Fix use after free on error + - drm: rcar-du: Fix PM reference leak in rcar_cmm_enable() + - drm: rcar-du: Fix crash when using LVDS1 clock for CRTC + - drm: rcar-du: Fix the return check of of_parse_phandle and + of_find_device_by_node + - drm/amdgpu: Fix macro name _AMDGPU_TRACE_H_ in preprocessor if condition + - MIPS: c-r4k: Fix section mismatch for loongson2_sc_init + - MIPS: lantiq: Explicitly compare LTQ_EBU_PCC_ISTAT against 0 + - drm/virtio: make sure context is created in gem open + - media: ipu3-cio2: Build only for x86 + - media: i2c: ov5670: Fix PIXEL_RATE minimum value + - media: imx: Unregister csc/scaler only if registered + - media: imx: Fix csc/scaler unregister + - media: mtk-vcodec: fix error return code in vdec_vp9_decode() + - media: camss: missing error code in msm_video_register() + - media: vsp1: Fix an error handling path in the probe function + - media: em28xx: Fix use-after-free in em28xx_alloc_urbs + - media: media/pci: Fix memleak in empress_init + - media: tm6000: Fix memleak in tm6000_start_stream + - media: aspeed: fix error return code in aspeed_video_setup_video() + - ASoC: cs42l56: fix up error handling in probe + - ASoC: qcom: qdsp6: Move frontend AIFs to q6asm-dai + - evm: Fix memleak in init_desc + - crypto: bcm - Rename struct device_private to bcm_device_private + - sched/fair: Avoid stale CPU util_est value for schedutil in task dequeue + - drm/sun4i: tcon: fix inverted DCLK polarity + - media: imx7: csi: Fix regression for parallel cameras on i.MX6UL + - media: imx7: csi: Fix pad link validation + - MIPS: properly stop .eh_frame generation + - MIPS: Compare __SYNC_loongson3_war against 0 + - drm/tegra: Fix reference leak when pm_runtime_get_sync() fails + - drm/amdgpu: toggle on DF Cstate after finishing xgmi injection + - bsg: free the request before return error code + - drm/amd/display: Fix 10/12 bpc setup in DCE output bit depth reduction. + - drm/amd/display: Fix HDMI deep color output for DCE 6-11. + - media: software_node: Fix refcounts in software_node_get_next_child() + - media: lmedm04: Fix misuse of comma + - media: atomisp: Fix a buffer overflow in debug code + - media: qm1d1c0042: fix error return code in qm1d1c0042_init() + - media: cx25821: Fix a bug when reallocating some dma memory + - media: pxa_camera: declare variable when DEBUG is defined + - media: uvcvideo: Accept invalid bFormatIndex and bFrameIndex values + - sched/eas: Don't update misfit status if the task is pinned + - f2fs: compress: fix potential deadlock + - ASoC: SOF: Intel: hda: cancel D0i3 work during runtime suspend + - mtd: parser: imagetag: fix error codes in + bcm963xx_parse_imagetag_partitions() + - crypto: talitos - Work around SEC6 ERRATA (AES-CTR mode data size error) + - crypto: talitos - Fix ctr(aes) on SEC1 + - drm/nouveau: bail out of nouveau_channel_new if channel init fails + - mm: proc: Invalidate TLB after clearing soft-dirty page state + - ata: ahci_brcm: Add back regulators management + - ASoC: cpcap: fix microphone timeslot mask + - ASoC: codecs: add missing max_register in regmap config + - mtd: parsers: afs: Fix freeing the part name memory in failure + - f2fs: fix to avoid inconsistent quota data + - drm/amdgpu: Prevent shift wrapping in amdgpu_read_mask() + - f2fs: fix a wrong condition in __submit_bio + - KVM: nSVM: Don't strip host's C-bit from guest's CR3 when reading PDPTRs + - drm/mediatek: Check if fb is null + - Drivers: hv: vmbus: Avoid use-after-free in vmbus_onoffer_rescind() + - ASoC: Intel: sof_sdw: add missing TGL_HDMI quirk for Dell SKU 0A5E + - locking/lockdep: Avoid unmatched unlock + - ASoC: rt5682: Fix panic in rt5682_jack_detect_handler happening during + system shutdown + - ASoC: SOF: debug: Fix a potential issue on string buffer termination + - btrfs: clarify error returns values in __load_free_space_cache + - btrfs: fix double accounting of ordered extent for subpage case in + btrfs_invalidapge + - KVM: x86: Restore all 64 bits of DR6 and DR7 during RSM on x86-64 + - drm/lima: fix reference leak in lima_pm_busy + - drm/dp_mst: Don't cache EDIDs for physical ports + - hwrng: timeriomem - Fix cooldown period calculation + - crypto: ecdh_helper - Ensure 'len >= secret.len' in decode_key() + - nvmet-tcp: fix receive data digest calculation for multiple h2cdata PDUs + - nvmet-tcp: fix potential race of tcp socket closing accept_work + - nvmet: remove extra variable in identify ns + - nvmet: set status to 0 in case for invalid nsid + - ASoC: SOF: sof-pci-dev: add missing Up-Extreme quirk + - ima: Free IMA measurement buffer on error + - ima: Free IMA measurement buffer after kexec syscall + - ASoC: simple-card-utils: Fix device module clock + - fs/jfs: fix potential integer overflow on shift of a int + - jffs2: fix use after free in jffs2_sum_write_data() + - ubifs: Fix memleak in ubifs_init_authentication + - ubifs: replay: Fix high stack usage, again + - ubifs: Fix error return code in alloc_wbufs() + - irqchip/imx: IMX_INTMUX should not default to y, unconditionally + - smp: Process pending softirqs in flush_smp_call_function_from_idle() + - drm/amdgpu/display: remove hdcp_srm sysfs on device removal + - HSI: Fix PM usage counter unbalance in ssi_hw_init + - power: supply: cpcap: Add missing IRQF_ONESHOT to fix regression + - clk: meson: clk-pll: fix initializing the old rate (fallback) for a PLL + - clk: meson: clk-pll: make "ret" a signed integer + - clk: meson: clk-pll: propagate the error from meson_clk_pll_set_rate() + - regulator: qcom-rpmh-regulator: add pm8009-1 chip revision + - quota: Fix memory leak when handling corrupted quota file + - i2c: iproc: handle only slave interrupts which are enabled + - i2c: iproc: update slave isr mask (ISR_MASK_SLAVE) + - i2c: iproc: handle master read request + - spi: cadence-quadspi: Abort read if dummy cycles required are too many + - clk: sunxi-ng: h6: Fix CEC clock + - HID: core: detect and skip invalid inputs to snto32() + - RDMA/siw: Fix handling of zero-sized Read and Receive Queues. + - dmaengine: fsldma: Fix a resource leak in the remove function + - dmaengine: fsldma: Fix a resource leak in an error handling path of the + probe function + - dmaengine: owl-dma: Fix a resource leak in the remove function + - dmaengine: hsu: disable spurious interrupt + - mfd: bd9571mwv: Use devm_mfd_add_devices() + - power: supply: cpcap-charger: Fix missing power_supply_put() + - power: supply: cpcap-battery: Fix missing power_supply_put() + - power: supply: cpcap-charger: Fix power_supply_put on null battery pointer + - fdt: Properly handle "no-map" field in the memory region + - of/fdt: Make sure no-map does not remove already reserved regions + - RDMA/rtrs: Extend ibtrs_cq_qp_create + - RDMA/rtrs-srv: Release lock before call into close_sess + - RDMA/rtrs-srv: Use sysfs_remove_file_self for disconnect + - RDMA/rtrs-clt: Set mininum limit when create QP + - RDMA/rtrs: Call kobject_put in the failure path + - RDMA/rtrs-srv: Fix missing wr_cqe + - RDMA/rtrs-clt: Refactor the failure cases in alloc_clt + - RDMA/rtrs-srv: Init wr_cnt as 1 + - power: reset: at91-sama5d2_shdwc: fix wkupdbc mask + - rtc: s5m: select REGMAP_I2C + - dmaengine: idxd: set DMA channel to be private + - power: supply: fix sbs-charger build, needs REGMAP_I2C + - clocksource/drivers/ixp4xx: Select TIMER_OF when needed + - clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined + - RDMA/mlx5: Use the correct obj_id upon DEVX TIR creation + - IB/mlx5: Add mutex destroy call to cap_mask_mutex mutex + - clk: sunxi-ng: h6: Fix clock divider range on some clocks + - regulator: axp20x: Fix reference cout leak + - watch_queue: Drop references to /dev/watch_queue + - certs: Fix blacklist flag type confusion + - regulator: s5m8767: Fix reference count leak + - spi: atmel: Put allocated master before return + - regulator: s5m8767: Drop regulators OF node reference + - power: supply: axp20x_usb_power: Init work before enabling IRQs + - regulator: core: Avoid debugfs: Directory ... already present! error + - isofs: release buffer head before return + - watchdog: intel-mid_wdt: Postpone IRQ handler registration till SCU is ready + - auxdisplay: ht16k33: Fix refresh rate handling + - objtool: Fix error handling for STD/CLD warnings + - objtool: Fix ".cold" section suffix check for newer versions of GCC + - iommu: Switch gather->end to the inclusive end + - IB/umad: Return EIO in case of when device disassociated + - IB/umad: Return EPOLLERR in case of when device disassociated + - KVM: PPC: Make the VMX instruction emulation routines static + - powerpc/47x: Disable 256k page size + - powerpc/time: Enable sched clock for irqtime + - mmc: owl-mmc: Fix a resource leak in an error handling path and in the + remove function + - mmc: sdhci-sprd: Fix some resource leaks in the remove function + - mmc: usdhi6rol0: Fix a resource leak in the error handling path of the probe + - mmc: renesas_sdhi_internal_dmac: Fix DMA buffer alignment from 8 to + 128-bytes + - ARM: 9046/1: decompressor: Do not clear SCTLR.nTLSMD for ARMv7+ cores + - i2c: qcom-geni: Store DMA mapping data in geni_i2c_dev struct + - amba: Fix resource leak for drivers without .remove + - iommu: Move iotlb_sync_map out from __iommu_map + - iommu: Properly pass gfp_t in _iommu_map() to avoid atomic sleeping + - IB/mlx5: Return appropriate error code instead of ENOMEM + - IB/cm: Avoid a loop when device has 255 ports + - tracepoint: Do not fail unregistering a probe due to memory failure + - rtc: zynqmp: depend on HAS_IOMEM + - perf tools: Fix DSO filtering when not finding a map for a sampled address + - perf vendor events arm64: Fix Ampere eMag event typo + - RDMA/rxe: Fix coding error in rxe_recv.c + - RDMA/rxe: Fix coding error in rxe_rcv_mcast_pkt + - RDMA/rxe: Correct skb on loopback path + - spi: stm32: properly handle 0 byte transfer + - mfd: wm831x-auxadc: Prevent use after free in wm831x_auxadc_read_irq() + - powerpc/pseries/dlpar: handle ibm, configure-connector delay status + - powerpc/8xx: Fix software emulation interrupt + - clk: qcom: gcc-msm8998: Fix Alpha PLL type for all GPLLs + - kunit: tool: fix unit test cleanup handling + - kselftests: dmabuf-heaps: Fix Makefile's inclusion of the kernel's + usr/include dir + - RDMA/hns: Fixed wrong judgments in the goto branch + - RDMA/siw: Fix calculation of tx_valid_cpus size + - RDMA/hns: Fix type of sq_signal_bits + - RDMA/hns: Disable RQ inline by default + - clk: divider: fix initialization with parent_hw + - spi: pxa2xx: Fix the controller numbering for Wildcat Point + - powerpc/uaccess: Avoid might_fault() when user access is enabled + - powerpc/kuap: Restore AMR after replaying soft interrupts + - regulator: qcom-rpmh: fix pm8009 ldo7 + - clk: aspeed: Fix APLL calculate formula from ast2600-A2 + - regulator: bd718x7, bd71828, Fix dvs voltage levels + - nfsd: register pernet ops last, unregister first + - ceph: fix flush_snap logic after putting caps + - RDMA/hns: Fixes missing error code of CMDQ + - RDMA/ucma: Fix use-after-free bug in ucma_create_uevent + - RDMA/rtrs-srv: Fix stack-out-of-bounds + - RDMA/rtrs: Only allow addition of path to an already established session + - RDMA/rtrs-srv: fix memory leak by missing kobject free + - RDMA/rtrs-srv-sysfs: fix missing put_device + - RDMA/rtrs-srv: Do not pass a valid pointer to PTR_ERR() + - Input: sur40 - fix an error code in sur40_probe() + - perf intel-pt: Fix missing CYC processing in PSB + - perf intel-pt: Fix premature IPC + - perf intel-pt: Fix IPC with CYC threshold + - perf test: Fix unaligned access in sample parsing test + - Input: elo - fix an error code in elo_connect() + - sparc64: only select COMPAT_BINFMT_ELF if BINFMT_ELF is set + - sparc: fix led.c driver when PROC_FS is not enabled + - ARM: 9065/1: OABI compat: fix build when EPOLL is not enabled + - misc: eeprom_93xx46: Fix module alias to enable module autoprobe + - phy: rockchip-emmc: emmc_phy_init() always return 0 + - misc: eeprom_93xx46: Add module alias to avoid breaking support for non + device tree users + - PCI: rcar: Always allocate MSI addresses in 32bit space + - soundwire: cadence: fix ACK/NAK handling + - pwm: rockchip: Enable APB clock during register access while probing + - pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare() + - pwm: rockchip: Eliminate potential race condition when probing + - VMCI: Use set_page_dirty_lock() when unregistering guest memory + - PCI: Align checking of syscall user config accessors + - mei: hbm: call mei_set_devstate() on hbm stop response + - drm/msm/dsi: Correct io_start for MSM8994 (20nm PHY) + - drm/msm/mdp5: Fix wait-for-commit for cmd panels + - drm/msm: Fix race of GPU init vs timestamp power management. + - drm/msm: Fix races managing the OOB state for timestamp vs timestamps. + - vfio/iommu_type1: Populate full dirty when detach non-pinned group + - vfio/iommu_type1: Fix some sanity checks in detach group + - ext4: fix potential htree index checksum corruption + - nvmem: core: Fix a resource leak on error in nvmem_add_cells_from_of() + - nvmem: core: skip child nodes not matching binding + - soundwire: bus: use sdw_update_no_pm when initializing a device + - soundwire: export sdw_write/read_no_pm functions + - soundwire: bus: fix confusion on device used by pm_runtime + - misc: fastrpc: fix incorrect usage of dma_map_sgtable + - regmap: sdw: use _no_pm functions in regmap_read/write + - ext: EXT4_KUNIT_TESTS should depend on EXT4_FS instead of selecting it + - mailbox: sprd: correct definition of SPRD_OUTBOX_FIFO_FULL + - PCI: pci-bridge-emul: Fix array overruns, improve safety + - i40e: Fix flow for IPv6 next header (extension header) + - i40e: Add zero-initialization of AQ command structures + - i40e: Fix overwriting flow control settings during driver loading + - i40e: Fix addition of RX filters after enabling FW LLDP agent + - i40e: Fix VFs not created + - Take mmap lock in cacheflush syscall + - i40e: Fix add TC filter for IPv6 + - octeontx2-af: Fix an off by one in rvu_dbg_qsize_write() + - vfio/type1: Use follow_pte() + - ice: report correct max number of TCs + - ice: Account for port VLAN in VF max packet size calculation + - ice: Fix state bits on LLDP mode switch + - ice: update the number of available RSS queues + - net: stmmac: fix CBS idleslope and sendslope calculation + - net/mlx4_core: Add missed mlx4_free_cmd_mailbox() + - vxlan: move debug check after netdev unregister + - wireguard: device: do not generate ICMP for non-IP packets + - wireguard: kconfig: use arm chacha even with no neon + - ocfs2: fix a use after free on error + - mm: memcontrol: fix NR_ANON_THPS accounting in charge moving + - mm/memory.c: fix potential pte_unmap_unlock pte error + - mm/hugetlb: fix potential double free in hugetlb_register_node() error path + - mm/hugetlb: suppress wrong warning info when alloc gigantic page + - mm/compaction: fix misbehaviors of fast_find_migrateblock() + - r8169: fix jumbo packet handling on RTL8168e + - arm64: Add missing ISB after invalidating TLB in __primary_switch + - i2c: brcmstb: Fix brcmstd_send_i2c_cmd condition + - i2c: exynos5: Preserve high speed master code + - mm,thp,shmem: make khugepaged obey tmpfs mount flags + - mm/rmap: fix potential pte_unmap on an not mapped pte + - proc: use kvzalloc for our kernel buffer + - scsi: bnx2fc: Fix Kconfig warning & CNIC build errors + - ide/falconide: Fix module unload + - scsi: sd: Fix Opal support + - blk-settings: align max_sectors on "logical_block_size" boundary + - soundwire: intel: fix possible crash when no device is detected + - ACPI: property: Fix fwnode string properties matching + - ACPI: configfs: add missing check after configfs_register_default_group() + - cpufreq: ACPI: Set cpuinfo.max_freq directly if max boost is known + - HID: logitech-dj: add support for keyboard events in eQUAD step 4 Gaming + - HID: wacom: Ignore attempts to overwrite the touch_max value from HID + - Input: raydium_ts_i2c - do not send zero length + - Input: xpad - add support for PowerA Enhanced Wired Controller for Xbox + Series X|S + - Input: joydev - prevent potential read overflow in ioctl + - Input: i8042 - add ASUS Zenbook Flip to noselftest list + - media: mceusb: Fix potential out-of-bounds shift + - USB: serial: option: update interface mapping for ZTE P685M + - usb: musb: Fix runtime PM race in musb_queue_resume_work + - USB: serial: ftdi_sio: fix FTX sub-integer prescaler + - USB: serial: pl2303: fix line-speed handling on newer chips + - USB: serial: mos7840: fix error code in mos7840_write() + - USB: serial: mos7720: fix error code in mos7720_write() + - phy: lantiq: rcu-usb2: wait after clock enable + - ALSA: fireface: fix to parse sync status register of latter protocol + - ALSA: hda: Add another CometLake-H PCI ID + - ALSA: hda/hdmi: Drop bogus check at closing a stream + - ALSA: hda/realtek: modify EAPD in the ALC886 + - ALSA: hda/realtek: Quirk for HP Spectre x360 14 amp setup + - MIPS: Ingenic: Disable HPTLB for D0 XBurst CPUs too + - MIPS: Support binutils configured with --enable-mips-fix-loongson3-llsc=yes + - MIPS: VDSO: Use CLANG_FLAGS instead of filtering out '--target=' + - Revert "MIPS: Octeon: Remove special handling of + CONFIG_MIPS_ELF_APPENDED_DTB=y" + - Revert "bcache: Kill btree_io_wq" + - bcache: Give btree_io_wq correct semantics again + - bcache: Move journal work to new flush wq + - Revert "drm/amd/display: Update NV1x SR latency values" + - drm/amd/display: Add FPU wrappers to dcn21_validate_bandwidth() + - drm/amd/display: Add vupdate_no_lock interrupts for DCN2.1 + - drm/amdkfd: Fix recursive lock warnings + - drm/amdgpu: Set reference clock to 100Mhz on Renoir (v2) + - drm/nouveau/kms: handle mDP connectors + - drm/modes: Switch to 64bit maths to avoid integer overflow + - drm/sched: Cancel and flush all outstanding jobs before finish. + - drm/panel: kd35t133: allow using non-continuous dsi clock + - drm/rockchip: Require the YTR modifier for AFBC + - ASoC: siu: Fix build error by a wrong const prefix + - selinux: fix inconsistency between inode_getxattr and inode_listsecurity + - erofs: initialized fields can only be observed after bit is set + - tpm_tis: Fix check_locality for correct locality acquisition + - tpm_tis: Clean up locality release + - KEYS: trusted: Fix incorrect handling of tpm_get_random() + - KEYS: trusted: Fix migratable=1 failing + - KEYS: trusted: Reserve TPM for seal and unseal operations + - btrfs: do not cleanup upper nodes in btrfs_backref_cleanup_node + - btrfs: do not warn if we can't find the reloc root when looking up backref + - btrfs: add asserts for deleting backref cache nodes + - btrfs: abort the transaction if we fail to inc ref in btrfs_copy_root + - btrfs: fix reloc root leak with 0 ref reloc roots on recovery + - btrfs: splice remaining dirty_bg's onto the transaction dirty bg list + - btrfs: handle space_info::total_bytes_pinned inside the delayed ref itself + - btrfs: account for new extents being deleted in total_bytes_pinned + - btrfs: fix extent buffer leak on failure to copy root + - drm/i915/gt: Flush before changing register state + - drm/i915/gt: Correct surface base address for renderclear + - crypto: arm64/sha - add missing module aliases + - crypto: aesni - prevent misaligned buffers on the stack + - crypto: michael_mic - fix broken misalignment handling + - crypto: sun4i-ss - checking sg length is not sufficient + - crypto: sun4i-ss - handle BigEndian for cipher + - crypto: sun4i-ss - initialize need_fallback + - soc: samsung: exynos-asv: don't defer early on not-supported SoCs + - soc: samsung: exynos-asv: handle reading revision register error + - seccomp: Add missing return in non-void function + - arm64: ptrace: Fix seccomp of traced syscall -1 (NO_SYSCALL) + - misc: rtsx: init of rts522a add OCP power off when no card is present + - drivers/misc/vmw_vmci: restrict too big queue size in qp_host_alloc_queue + - pstore: Fix typo in compression option name + - dts64: mt7622: fix slow sd card access + - arm64: dts: agilex: fix phy interface bit shift for gmac1 and gmac2 + - staging/mt7621-dma: mtk-hsdma.c->hsdma-mt7621.c + - staging: gdm724x: Fix DMA from stack + - staging: rtl8188eu: Add Edimax EW-7811UN V2 to device table + - media: ipu3-cio2: Fix mbus_code processing in cio2_subdev_set_fmt() + - media: smipcie: fix interrupt handling and IR timeout + - x86/virt: Eat faults on VMXOFF in reboot flows + - x86/reboot: Force all cpus to exit VMX root if VMX is supported + - x86/fault: Fix AMD erratum #91 errata fixup for user code + - x86/entry: Fix instrumentation annotation + - powerpc/prom: Fix "ibm,arch-vec-5-platform-support" scan + - rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers + - rcu/nocb: Perform deferred wake up before last idle's need_resched() check + - arm64: Extend workaround for erratum 1024718 to all versions of Cortex-A55 + - arm64: kexec_file: fix memory leakage in create_dtb() when fdt_open_into() + fails + - arm64: uprobe: Return EOPNOTSUPP for AARCH32 instruction probing + - arm64 module: set plt* section addresses to 0x0 + - arm64: spectre: Prevent lockdep splat on v4 mitigation enable path + - riscv: Disable KSAN_SANITIZE for vDSO + - watchdog: qcom: Remove incorrect usage of QCOM_WDT_ENABLE_IRQ + - watchdog: mei_wdt: request stop on unregister + - coresight: etm4x: Handle accesses to TRCSTALLCTLR + - mtd: spi-nor: sfdp: Fix last erase region marking + - mtd: spi-nor: sfdp: Fix wrong erase type bitmask for overlaid region + - mtd: spi-nor: core: Fix erase type discovery for overlaid region + - mtd: spi-nor: core: Add erase size check for erase command initialization + - mtd: spi-nor: hisi-sfc: Put child node np on error path + - fs/affs: release old buffer head on error path + - seq_file: document how per-entry resources are managed. + - x86: fix seq_file iteration for pat/memtype.c + - mm: memcontrol: fix swap undercounting in cgroup2 + - hugetlb: fix update_and_free_page contig page struct assumption + - hugetlb: fix copy_huge_page_from_user contig page struct assumption + - mm/vmscan: restore zone_reclaim_mode ABI + - mm, compaction: make fast_isolate_freepages() stay within zone + - nvmem: qcom-spmi-sdam: Fix uninitialized pdev pointer + - module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for undefined symbols + - mmc: sdhci-esdhc-imx: fix kernel panic when remove module + - powerpc/32s: Add missing call to kuep_lock on syscall entry + - spmi: spmi-pmic-arb: Fix hw_irq overflow + - mei: me: emmitsburg workstation DID + - mei: me: add adler lake point S DID + - mei: me: add adler lake point LP DID + - gpio: pcf857x: Fix missing first interrupt + - mfd: gateworks-gsc: Fix interrupt type + - printk: fix deadlock when kernel panic + - exfat: fix shift-out-of-bounds in exfat_fill_super() + - zonefs: Fix file size of zones in full condition + - [Config] updateconfigs for KCMP + - kcmp: Support selection of SYS_kcmp without CHECKPOINT_RESTORE + - thermal: cpufreq_cooling: freq_qos_update_request() returns < 0 on error + - cpufreq: intel_pstate: Change intel_pstate_get_hwp_max() argument + - cpufreq: intel_pstate: Get per-CPU max freq via MSR_HWP_CAPABILITIES if + available + - proc: don't allow async path resolution of /proc/thread-self components + - s390/vtime: fix inline assembly clobber list + - virtio/s390: implement virtio-ccw revision 2 correctly + - um: mm: check more comprehensively for stub changes + - um: defer killing userspace on page table update failures + - irqchip/loongson-pch-msi: Use bitmap_zalloc() to allocate bitmap + - f2fs: fix out-of-repair __setattr_copy() + - f2fs: enforce the immutable flag on open files + - f2fs: flush data when enabling checkpoint back + - sparc32: fix a user-triggerable oops in clear_user() + - spi: fsl: invert spisel_boot signal on MPC8309 + - spi: spi-synquacer: fix set_cs handling + - gfs2: fix glock confusion in function signal_our_withdraw + - gfs2: Don't skip dlm unlock if glock has an lvb + - gfs2: Lock imbalance on error path in gfs2_recover_one + - gfs2: Recursive gfs2_quota_hold in gfs2_iomap_end + - dm: fix deadlock when swapping to encrypted device + - dm writecache: fix performance degradation in ssd mode + - dm writecache: return the exact table values that were set + - dm writecache: fix writing beyond end of underlying device when shrinking + - dm era: Recover committed writeset after crash + - dm era: Update in-core bitset after committing the metadata + - dm era: Verify the data block size hasn't changed + - dm era: Fix bitset memory leaks + - dm era: Use correct value size in equality function of writeset tree + - dm era: Reinitialize bitset cache before digesting a new writeset + - dm era: only resize metadata in preresume + - drm/i915: Reject 446-480MHz HDMI clock on GLK + - kgdb: fix to kill breakpoints on initmem after boot + - wireguard: selftests: test multiple parallel streams + - wireguard: queueing: get rid of per-peer ring buffers + - net: sched: fix police ext initialization + - net: qrtr: Fix memory leak in qrtr_tun_open + - ARM: dts: aspeed: Add LCLK to lpc-snoop + - ipv6: icmp6: avoid indirect call for icmpv6_send() + + * Mute/Mic-mute LEDs are not work on HP 850/840/440 G8 Laptops (LP: #1920030) + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 840 G8 + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 440 G8 + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 850 G8 + + * Groovy update: upstream stable patchset 2021-03-19 (LP: #1920571) + - af_key: relax availability checks for skb size calculation + - regulator: core: avoid regulator_resolve_supply() race condition + - ASoC: wm_adsp: Fix control name parsing for multi-fw + - mac80211: 160MHz with extended NSS BW in CSA + - ASoC: Intel: Skylake: Zero snd_ctl_elem_value + - chtls: Fix potential resource leak + - pNFS/NFSv4: Try to return invalid layout in pnfs_layout_process() + - pNFS/NFSv4: Improve rejection of out-of-order layouts + - ALSA: hda: intel-dsp-config: add PCI id for TGL-H + - ASoC: ak4458: correct reset polarity + - ASoC: Intel: sof_sdw: set proper flags for Dell TGL-H SKU 0A5E + - iwlwifi: mvm: skip power command when unbinding vif during CSA + - iwlwifi: mvm: take mutex for calling iwl_mvm_get_sync_time() + - iwlwifi: pcie: add a NULL check in iwl_pcie_txq_unmap + - iwlwifi: pcie: fix context info memory leak + - iwlwifi: mvm: invalidate IDs of internal stations at mvm start + - iwlwifi: pcie: add rules to match Qu with Hr2 + - iwlwifi: mvm: guard against device removal in reprobe + - SUNRPC: Move simple_get_bytes and simple_get_netobj into private header + - SUNRPC: Handle 0 length opaque XDR object data properly + - i2c: mediatek: Move suspend and resume handling to NOIRQ phase + - blk-cgroup: Use cond_resched() when destroy blkgs + - regulator: Fix lockdep warning resolving supplies + - bpf: Fix verifier jmp32 pruning decision logic + - bpf: Fix verifier jsgt branch analysis on max bound + - drm/i915: Fix ICL MG PHY vswing handling + - drm/i915: Skip vswing programming for TBT + - nilfs2: make splice write available again + - squashfs: avoid out of bounds writes in decompressors + - squashfs: add more sanity checks in id lookup + - squashfs: add more sanity checks in inode lookup + - squashfs: add more sanity checks in xattr id lookup + - gpio: mxs: GPIO_MXS should not default to y unconditionally + - gpio: ep93xx: fix BUG_ON port F usage + - gpio: ep93xx: Fix single irqchip with multi gpiochips + - tracing: Do not count ftrace events in top level enable output + - tracing: Check length before giving out the filter buffer + - drm/i915: Fix overlay frontbuffer tracking + - arm/xen: Don't probe xenbus as part of an early initcall + - cgroup: fix psi monitor for root cgroup + - drm/i915/tgl+: Make sure TypeC FIA is powered up when initializing it + - drm/dp_mst: Don't report ports connected if nothing is attached to them + - dmaengine: move channel device_node deletion to driver + - soc: ti: omap-prm: Fix boot time errors for rst_map_012 bits 0 and 1 + - arm64: dts: rockchip: Fix PCIe DT properties on rk3399 + - arm64: dts: qcom: sdm845: Reserve LPASS clocks in gcc + - ARM: OMAP2+: Fix suspcious RCU usage splats for omap_enter_idle_coupled + - arm64: dts: rockchip: remove interrupt-names property from rk3399 vdec node + - platform/x86: hp-wmi: Disable tablet-mode reporting by default + - ovl: perform vfs_getxattr() with mounter creds + - cap: fix conversions on getxattr + - ovl: skip getxattr of security labels + - scsi: lpfc: Fix EEH encountering oops with NVMe traffic + - x86/split_lock: Enable the split lock feature on Sapphire Rapids and Alder + Lake CPUs + - x86/split_lock: Enable the split lock feature on another Alder Lake CPU + - nvme-pci: ignore the subsysem NQN on Phison E16 + - drm/amd/display: Fix DPCD translation for LTTPR AUX_RD_INTERVAL + - drm/amd/display: Add more Clock Sources to DCN2.1 + - drm/amd/display: Release DSC before acquiring + - drm/amd/display: Fix dc_sink kref count in emulated_link_detect + - drm/amd/display: Free atomic state after drm_atomic_commit + - drm/amd/display: Decrement refcount of dc_sink before reassignment + - riscv: virt_addr_valid must check the address belongs to linear mapping + - ARM: dts: lpc32xx: Revert set default clock rate of HCLK PLL + - kallsyms: fix nonconverging kallsyms table with lld + - ARM: ensure the signal page contains defined contents + - ARM: kexec: fix oops after TLB are invalidated + - ubsan: implement __ubsan_handle_alignment_assumption + - x86/efi: Remove EFI PGD build time checks + - lkdtm: don't move ctors to .rodata + - cgroup-v1: add disabled controller check in cgroup1_parse_param() + - mt76: dma: fix a possible memory leak in mt76_add_fragment() + - drm/vc4: hvs: Fix buffer overflow with the dlist handling + - bpf: Unbreak BPF_PROG_TYPE_KPROBE when kprobe is called via do_int3 + - bpf: Check for integer overflow when using roundup_pow_of_two() + - netfilter: xt_recent: Fix attempt to update deleted entry + - netfilter: nftables: fix possible UAF over chains from packet path in netns + - netfilter: flowtable: fix tcp and udp header checksum update + - xen/netback: avoid race in xenvif_rx_ring_slots_available() + - net: hdlc_x25: Return meaningful error code in x25_open + - net: ipa: set error code in gsi_channel_setup() + - hv_netvsc: Reset the RSC count if NVSP_STAT_FAIL in netvsc_receive() + - net: enetc: initialize the RFS and RSS memories + - selftests: txtimestamp: fix compilation issue + - net: stmmac: set TxQ mode back to DCB after disabling CBS + - ibmvnic: Clear failover_pending if unable to schedule + - netfilter: conntrack: skip identical origin tuple in same zone only + - scsi: scsi_debug: Fix a memory leak + - x86/build: Disable CET instrumentation in the kernel for 32-bit too + - net: hns3: add a check for queue_id in hclge_reset_vf_queue() + - net: hns3: add a check for tqp_index in hclge_get_ring_chain_from_mbx() + - net: hns3: add a check for index in hclge_get_rss_key() + - firmware_loader: align .builtin_fw to 8 + - drm/sun4i: tcon: set sync polarity for tcon1 channel + - drm/sun4i: dw-hdmi: always set clock rate + - drm/sun4i: Fix H6 HDMI PHY configuration + - drm/sun4i: dw-hdmi: Fix max. frequency for H6 + - clk: sunxi-ng: mp: fix parent rate change flag check + - i2c: stm32f7: fix configuration of the digital filter + - h8300: fix PREEMPTION build, TI_PRE_COUNT undefined + - scripts: set proper OpenSSL include dir also for sign-file + - rxrpc: Fix clearance of Tx/Rx ring when releasing a call + - udp: fix skb_copy_and_csum_datagram with odd segment sizes + - net: dsa: call teardown method on probe failure + - cpufreq: ACPI: Extend frequency tables to cover boost frequencies + - cpufreq: ACPI: Update arch scale-invariance max perf ratio if CPPC is not + there + - net: gro: do not keep too many GRO packets in napi->rx_list + - net: fix iteration for sctp transport seq_files + - net/vmw_vsock: fix NULL pointer dereference + - net/vmw_vsock: improve locking in vsock_connect_timeout() + - net: watchdog: hold device global xmit lock during tx disable + - bridge: mrp: Fix the usage of br_mrp_port_switchdev_set_state + - switchdev: mrp: Remove SWITCHDEV_ATTR_ID_MRP_PORT_STAT + - vsock/virtio: update credit only if socket is not closed + - vsock: fix locking in vsock_shutdown() + - net/rds: restrict iovecs length for RDS_CMSG_RDMA_ARGS + - net/qrtr: restrict user-controlled length in qrtr_tun_write_iter() + - ovl: expand warning in ovl_d_real() + - kcov, usb: only collect coverage from __usb_hcd_giveback_urb in softirq + - usb: dwc3: ulpi: fix checkpatch warning + - net: qrtr: Fix port ID for control messages + - mptcp: skip to next candidate if subflow has unacked data + - mt76: mt7915: fix endian issues + - mt76: mt7615: fix rdd mcu cmd endianness + - net: sched: incorrect Kconfig dependencies on Netfilter modules + - net: openvswitch: fix TTL decrement exception action execution + - net: bridge: Fix a warning when del bridge sysfs + - net: fix proc_fs init handling in af_packet and tls + - Xen/x86: don't bail early from clear_foreign_p2m_mapping() + - Xen/x86: also check kernel mapping in set_foreign_p2m_mapping() + - Xen/gntdev: correct dev_bus_addr handling in gntdev_map_grant_pages() + - Xen/gntdev: correct error checking in gntdev_map_grant_pages() + - xen/arm: don't ignore return errors from set_phys_to_machine + - xen-blkback: don't "handle" error by BUG() + - xen-netback: don't "handle" error by BUG() + - xen-scsiback: don't "handle" error by BUG() + - xen-blkback: fix error handling in xen_blkbk_map() + - tty: protect tty_write from odd low-level tty disciplines + - btrfs: fix backport of 2175bf57dc952 in 5.10.13 + - media: pwc: Use correct device for DMA + - HID: make arrays usage and value to be the same + - RDMA: Lift ibdev_to_node from rds to common code + - nvme-rdma: Use ibdev_to_node instead of dereferencing ->dma_device + - USB: quirks: sort quirk entries + - usb: quirks: add quirk to start video capture on ELMO L-12F document camera + reliable + - ceph: downgrade warning from mdsmap decode to debug + - ntfs: check for valid standard information attribute + - Bluetooth: btusb: Some Qualcomm Bluetooth adapters stop working + - arm64: tegra: Add power-domain for Tegra210 HDA + - hwmon: (dell-smm) Add XPS 15 L502X to fan control blacklist + - mm: unexport follow_pte_pmd + - mm: simplify follow_pte{,pmd} + - KVM: do not assume PTE is writable after follow_pfn + - mm: provide a saner PTE walking API for modules + - KVM: Use kvm_pfn_t for local PFN variable in hva_to_pfn_remapped() + - NET: usb: qmi_wwan: Adding support for Cinterion MV31 + - cxgb4: Add new T6 PCI device id 0x6092 + - kbuild: fix CONFIG_TRIM_UNUSED_KSYMS build for ppc64 + - scripts/recordmcount.pl: support big endian for ARCH sh + + * Groovy update: upstream stable patchset 2021-03-12 (LP: #1918987) + - net: fec: put child node on error path + - net: octeontx2: Make sure the buffer is 128 byte aligned + - stmmac: intel: Configure EHL PSE0 GbE and PSE1 GbE to 32 bits DMA addressing + - net: dsa: bcm_sf2: put device node before return + - net: switchdev: don't set port_obj_info->handled true when -EOPNOTSUPP + - ibmvnic: Ensure that CRQ entry read are correctly ordered + - iommu/io-pgtable-arm: Support coherency for Mali LPAE + - drm/panfrost: Support cache-coherent integrations + - arm64: dts: meson: Describe G12b GPU as coherent + - arm64: Fix kernel address detection of __is_lm_address() + - arm64: Do not pass tagged addresses to __is_lm_address() + - ARM: 9025/1: Kconfig: CPU_BIG_ENDIAN depends on !LD_IS_LLD + - iommu/vt-d: Do not use flush-queue when caching-mode is on + - phy: cpcap-usb: Fix warning for missing regulator_disable + - tools/power/x86/intel-speed-select: Set scaling_max_freq to base_frequency + - tools/power/x86/intel-speed-select: Set higher of cpuinfo_max_freq or + base_frequency + - platform/x86: touchscreen_dmi: Add swap-x-y quirk for Goodix touchscreen on + Estar Beauty HD tablet + - platform/x86: intel-vbtn: Support for tablet mode on Dell Inspiron 7352 + - locking/lockdep: Avoid noinstr warning for DEBUG_LOCKDEP + - x86: __always_inline __{rd,wr}msr() + - scsi: scsi_transport_srp: Don't block target in failfast state + - scsi: libfc: Avoid invoking response handler twice if ep is already + completed + - scsi: fnic: Fix memleak in vnic_dev_init_devcmd2 + - ALSA: hda - add Intel DG1 PCI and HDMI ids + - ALSA: hda: Add Alderlake-S PCI ID and HDMI codec vid + - ALSA: hda: Add AlderLake-P PCI ID and HDMI codec vid + - objtool: Don't add empty symbols to the rbtree + - mac80211: fix incorrect strlen of .write in debugfs + - mac80211: fix fast-rx encryption check + - scsi: ibmvfc: Set default timeout to avoid crash during migration + - i2c: tegra: Create i2c_writesl_vi() to use with VI I2C for filling TX FIFO + - udf: fix the problem that the disc content is not displayed + - nvme: check the PRINFO bit before deciding the host buffer length + - nvme-rdma: avoid request double completion for concurrent nvme_rdma_timeout + - nvme-tcp: avoid request double completion for concurrent nvme_tcp_timeout + - nvme-pci: allow use of cmb on v1.4 controllers + - nvmet: set right status on error in id-ns handler + - platform/x86: thinkpad_acpi: Add P53/73 firmware to fan_quirk_table for dual + fan control + - selftests/powerpc: Only test lwm/stmw on big endian + - drm/amd/display: Update dram_clock_change_latency for DCN2.1 + - drm/amd/display: Change function decide_dp_link_settings to avoid infinite + looping + - drm/amd/display: Use hardware sequencer functions for PG control + - objtool: Don't fail the kernel build on fatal errors + - x86/cpu: Add Lakefield, Alder Lake and Rocket Lake models to the to Intel + CPU family + - x86/cpu: Add another Alder Lake CPU to the Intel family + - kthread: Extract KTHREAD_IS_PER_CPU + - workqueue: Restrict affinity change to rescuer + - Revert "Revert "block: end bio with BLK_STS_AGAIN in case of non-mq devs and + REQ_NOWAIT"" + - ACPI: thermal: Do not call acpi_thermal_check() directly + - USB: serial: cp210x: add pid/vid for WSDA-200-USB + - USB: serial: cp210x: add new VID/PID for supporting Teraoka AD2000 + - USB: serial: option: Adding support for Cinterion MV31 + - usb: host: xhci-plat: add priv quirk for skip PHY initialization + - usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720 + - USB: gadget: legacy: fix an error code in eth_bind() + - usb: gadget: aspeed: add missing of_node_put + - USB: usblp: don't call usb_set_interface if there's a single alt + - usb: renesas_usbhs: Clear pipe running flag in usbhs_pkt_pop() + - usb: dwc2: Fix endpoint direction check in ep_from_windex + - usb: dwc3: fix clock issue during resume in OTG mode + - usb: xhci-mtk: fix unreleased bandwidth data + - usb: xhci-mtk: skip dropping bandwidth of unchecked endpoints + - usb: xhci-mtk: break loop when find the endpoint to drop + - ARM: OMAP1: OSK: fix ohci-omap breakage + - arm64: dts: qcom: c630: keep both touchpad devices enabled + - arm64: dts: amlogic: meson-g12: Set FL-adj property value + - arm64: dts: rockchip: fix vopl iommu irq on px30 + - arm64: dts: rockchip: Use only supported PCIe link speed on Pinebook Pro + - ARM: dts: stm32: Connect card-detect signal on DHCOM + - ARM: dts: stm32: Disable WP on DHCOM uSD slot + - um: virtio: free vu_dev only with the contained struct device + - arm64: dts: meson: switch TFLASH_VDD_EN pin to open drain on Odroid-C4 + - r8169: work around RTL8125 UDP hw bug + - rxrpc: Fix deadlock around release of dst cached on udp tunnel + - arm64: dts: ls1046a: fix dcfg address range + - SUNRPC: Fix NFS READs that start at non-page-aligned offsets + - igc: set the default return value to -IGC_ERR_NVM in igc_write_nvm_srwr + - igc: check return value of ret_val in igc_config_fc_after_link_up + - i40e: Revert "i40e: don't report link up for a VF who hasn't enabled queues" + - ibmvnic: device remove has higher precedence over reset + - net/mlx5: Fix leak upon failure of rule creation + - net/mlx5e: Update max_opened_tc also when channels are closed + - net/mlx5e: Release skb in case of failure in tc update skb + - net: lapb: Copy the skb before sending a packet + - net: mvpp2: TCAM entry enable should be written after SRAM data + - r8169: fix WoL on shutdown if CONFIG_DEBUG_SHIRQ is set + - net: ipa: pass correct dma_handle to dma_free_coherent() + - ARM: dts: sun7i: a20: bananapro: Fix ethernet phy-mode + - nvmet-tcp: fix out-of-bounds access when receiving multiple h2cdata PDUs + - memblock: do not start bottom-up allocations with kernel_end + - ovl: fix dentry leak in ovl_get_redirect + - mac80211: fix station rate table updates on assoc + - gpiolib: free device name on error path to fix kmemleak + - fgraph: Initialize tracing_graph_pause at task creation + - tracing/kprobe: Fix to support kretprobe events on unloaded modules + - kretprobe: Avoid re-registration of the same kretprobe earlier + - tracing: Use pause-on-trace with the latency tracers + - libnvdimm/namespace: Fix visibility of namespace resource attribute + - libnvdimm/dimm: Avoid race between probe and available_slots_show() + - genirq: Prevent [devm_]irq_alloc_desc from returning irq 0 + - genirq/msi: Activate Multi-MSI early when MSI_FLAG_ACTIVATE_EARLY is set + - scripts: use pkg-config to locate libcrypto + - xhci: fix bounce buffer usage for non-sg list case + - RISC-V: Define MAXPHYSMEM_1GB only for RV32 + - cifs: report error instead of invalid when revalidating a dentry fails + - iommu: Check dev->iommu in dev_iommu_priv_get() before dereferencing it + - smb3: Fix out-of-bounds bug in SMB2_negotiate() + - smb3: fix crediting for compounding when only one request in flight + - mmc: sdhci-pltfm: Fix linking err for sdhci-brcmstb + - mmc: core: Limit retries when analyse of SDIO tuples fails + - Fix unsynchronized access to sev members through svm_register_enc_region + - drm/i915/display: Prevent double YUV range correction on HDR planes + - drm/i915: Extract intel_ddi_power_up_lanes() + - drm/i915: Power up combo PHY lanes for for HDMI as well + - drm/amd/display: Revert "Fix EDID parsing after resume from suspend" + - nvme-pci: avoid the deepest sleep state on Kingston A2000 SSDs + - KVM: SVM: Treat SVM as unsupported when running as an SEV guest + - KVM: x86: Allow guests to see MSR_IA32_TSX_CTRL even if tsx=off + - KVM: x86: fix CPUID entries returned by KVM_GET_CPUID2 ioctl + - KVM: x86: Update emulator context mode if SYSENTER xfers to 64-bit mode + - DTS: ARM: gta04: remove legacy spi-cs-high to make display work again + - ARM: dts; gta04: SPI panel chip select is active low + - ARM: footbridge: fix dc21285 PCI configuration accessors + - mm: hugetlbfs: fix cannot migrate the fallocated HugeTLB page + - mm: hugetlb: fix a race between freeing and dissolving the page + - mm: hugetlb: fix a race between isolating and freeing page + - mm: hugetlb: remove VM_BUG_ON_PAGE from page_huge_active + - mm, compaction: move high_pfn to the for loop scope + - mm: thp: fix MADV_REMOVE deadlock on shmem THP + - mm/filemap: add missing mem_cgroup_uncharge() to + __add_to_page_cache_locked() + - x86/build: Disable CET instrumentation in the kernel + - x86/debug: Fix DR6 handling + - x86/debug: Prevent data breakpoints on __per_cpu_offset + - x86/debug: Prevent data breakpoints on cpu_dr7 + - x86/apic: Add extra serialization for non-serializing MSRs + - Input: goodix - add support for Goodix GT9286 chip + - Input: xpad - sync supported devices with fork on GitHub + - Input: ili210x - implement pressure reporting for ILI251x + - md: Set prev_flush_start and flush_bio in an atomic way + - neighbour: Prevent a dead entry from updating gc_list + - net: ip_tunnel: fix mtu calculation + - udp: ipv4: manipulate network header of NATed UDP GRO fraglist + - net: dsa: mv88e6xxx: override existent unicast portvec in port_fdb_add + - net: sched: replaced invalid qdisc tree flush helper in qdisc_replace + - iwlwifi: mvm: don't send RFH_QUEUE_CONFIG_CMD with no queues + + * power off stress test will hang on the TGL machines (LP: #1919930) + - [Config] set SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 to n + + * eeh-basic.sh from powerpc in ubuntu_kernel_selftests failed with unexpected + operator on F-5.8 (LP: #1909428) + - selftests/powerpc: Make the test check in eeh-basic.sh posix compliant + + -- Stefan Bader Wed, 14 Apr 2021 15:23:21 +0200 + +linux (5.8.0-50.56) groovy; urgency=medium + + * overlayfs calls vfs_setxattr without cap_convert_nscap + - vfs: move cap_convert_nscap() call into vfs_setxattr() + + * CVE-2021-3492 + - SAUCE: shiftfs: free allocated memory in shiftfs_btrfs_ioctl_fd_replace() + error paths + - SAUCE: shiftfs: handle copy_to_user() return values correctly + + * CVE-2021-29154 + - SAUCE: bpf, x86: Validate computation of branch displacements for x86-64 + - SAUCE: bpf, x86: Validate computation of branch displacements for x86-32 + + -- Stefan Bader Mon, 12 Apr 2021 17:02:49 +0200 + +linux (5.8.0-49.55) groovy; urgency=medium + + * groovy/linux: 5.8.0-49.55 -proposed tracker (LP: #1921053) + + * selftests: bpf verifier fails after sanitize_ptr_alu fixes (LP: #1920995) + - bpf: Simplify alu_limit masking for pointer arithmetic + - bpf: Add sanity check for upper ptr_limit + - bpf, selftests: Fix up some test_verifier cases for unprivileged + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * improper memcg accounting causes NULL pointer derefs (LP: #1918668) + - SAUCE: Revert "mm: memcg/slab: optimize objcg stock draining" + + * kernel: Enable CONFIG_BPF_LSM on Ubuntu (LP: #1905975) + - [Config] Enable CONFIG_BPF_LSM + + * Groovy update: upstream stable patchset 2021-03-10 (LP: #1918516) + - gpio: mvebu: fix pwm .get_state period calculation + - HID: wacom: Correct NULL dereference on AES pen proximity + - media: v4l2-subdev.h: BIT() is not available in userspace + - RDMA/vmw_pvrdma: Fix network_hdr_type reported in WC + - kernel/io_uring: cancel io_uring before task works + - io_uring: dont kill fasync under completion_lock + - objtool: Don't fail on missing symbol table + - mm/page_alloc: add a missing mm_page_alloc_zone_locked() tracepoint + - mm: fix a race on nr_swap_pages + - tools: Factor HOSTCC, HOSTLD, HOSTAR definitions + - iwlwifi: provide gso_type to GSO packets + - tty: avoid using vfs_iocb_iter_write() for redirected console writes + - ACPI: sysfs: Prefer "compatible" modalias + - kernel: kexec: remove the lock operation of system_transition_mutex + - ALSA: hda/realtek: Enable headset of ASUS B1400CEPE with ALC256 + - ALSA: hda/via: Apply the workaround generically for Clevo machines + - parisc: Enable -mlong-calls gcc option by default when !CONFIG_MODULES + - media: cec: add stm32 driver + - media: hantro: Fix reset_raw_fmt initialization + - media: rc: fix timeout handling after switch to microsecond durations + - media: rc: ite-cir: fix min_timeout calculation + - media: rc: ensure that uevent can be read directly after rc device register + - ARM: dts: tbs2910: rename MMC node aliases + - ARM: dts: ux500: Reserve memory carveouts + - ARM: dts: imx6qdl-gw52xx: fix duplicate regulator naming + - wext: fix NULL-ptr-dereference with cfg80211's lack of commit() + - ASoC: AMD Renoir - refine DMI entries for some Lenovo products + - drm/i915: Always flush the active worker before returning from the wait + - drm/i915/gt: Always try to reserve GGTT address 0x0 + - drivers/nouveau/kms/nv50-: Reject format modifiers for cursor planes + - net: usb: qmi_wwan: added support for Thales Cinterion PLSx3 modem family + - s390: uv: Fix sysfs max number of VCPUs reporting + - s390/vfio-ap: No need to disable IRQ after queue reset + - PM: hibernate: flush swap writer after marking + - x86/entry: Emit a symbol for register restoring thunk + - efi/apple-properties: Reinstate support for boolean properties + - drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs + - drivers: soc: atmel: add null entry at the end of at91_soc_allowed_list[] + - btrfs: fix possible free space tree corruption with online conversion + - KVM: x86/pmu: Fix HW_REF_CPU_CYCLES event pseudo-encoding in + intel_arch_events[] + - KVM: x86/pmu: Fix UBSAN shift-out-of-bounds warning in intel_pmu_refresh() + - KVM: nVMX: Sync unsync'd vmcs02 state to vmcs12 on migration + - KVM: x86: get smi pending status correctly + - KVM: Forbid the use of tagged userspace addresses for memslots + - xen: Fix XenStore initialisation for XS_LOCAL + - leds: trigger: fix potential deadlock with libata + - arm64: dts: broadcom: Fix USB DMA address translation for Stingray + - mt7601u: fix kernel crash unplugging the device + - mt7601u: fix rx buffer refcounting + - iwlwifi: Fix IWL_SUBDEVICE_NO_160 macro to use the correct bit. + - drm/i915/gt: Clear CACHE_MODE prior to clearing residuals + - drm/i915/pmu: Don't grab wakeref when enabling events + - net/mlx5e: Fix IPSEC stats + - ARM: dts: imx6qdl-kontron-samx6i: fix pwms for lcd-backlight + - drm/nouveau/svm: fail NOUVEAU_SVM_INIT ioctl on unsupported devices + - drm/i915: Check for all subplatform bits + - drm/i915/selftest: Fix potential memory leak + - uapi: fix big endian definition of ipv6_rpl_sr_hdr + - KVM: Documentation: Fix spec for KVM_CAP_ENABLE_CAP_VM + - tee: optee: replace might_sleep with cond_resched + - xen-blkfront: allow discard-* nodes to be optional + - clk: mmp2: fix build without CONFIG_PM + - clk: qcom: gcc-sm250: Use floor ops for sdcc clks + - ARM: imx: build suspend-imx6.S with arm instruction set + - ARM: zImage: atags_to_fdt: Fix node names on added root nodes + - netfilter: nft_dynset: add timeout extension to template + - Revert "RDMA/mlx5: Fix devlink deadlock on net namespace deletion" + - xfrm: Fix oops in xfrm_replay_advance_bmp + - xfrm: fix disable_xfrm sysctl when used on xfrm interfaces + - xfrm: Fix wraparound in xfrm_policy_addr_delta() + - arm64: dts: ls1028a: fix the offset of the reset register + - ARM: dts: imx6qdl-kontron-samx6i: fix i2c_lcd/cam default status + - ARM: dts: imx6qdl-sr-som: fix some cubox-i platforms + - arm64: dts: imx8mp: Correct the gpio ranges of gpio3 + - firmware: imx: select SOC_BUS to fix firmware build + - RDMA/cxgb4: Fix the reported max_recv_sge value + - ASoC: Intel: Skylake: skl-topology: Fix OOPs ib skl_tplg_complete + - pNFS/NFSv4: Fix a layout segment leak in pnfs_layout_process() + - pNFS/NFSv4: Update the layout barrier when we schedule a layoutreturn + - iwlwifi: pcie: set LTR on more devices + - iwlwifi: pcie: use jiffies for memory read spin time limit + - iwlwifi: pcie: reschedule in long-running memory reads + - mac80211: pause TX while changing interface type + - ice: fix FDir IPv6 flexbyte + - ice: Implement flow for IPv6 next header (extension header) + - ice: update dev_addr in ice_set_mac_address even if HW filter exists + - ice: Don't allow more channels than LAN MSI-X available + - ice: Fix MSI-X vector fallback logic + - i40e: acquire VSI pointer only after VF is initialized + - igc: fix link speed advertising + - net/mlx5: Fix memory leak on flow table creation error flow + - net/mlx5e: E-switch, Fix rate calculation for overflow + - net/mlx5e: free page before return + - net/mlx5e: Reduce tc unsupported key print level + - net/mlx5e: Disable hw-tc-offload when MLX5_CLS_ACT config is disabled + - net/mlx5e: Fix CT rule + encap slow path offload and deletion + - net/mlx5e: Correctly handle changing the number of queues when the interface + is down + - net/mlx5e: Revert parameters on errors when changing trust state without + reset + - net/mlx5e: Revert parameters on errors when changing MTU and LRO state + without reset + - can: dev: prevent potential information leak in can_fill_info() + - ACPI/IORT: Do not blindly trust DMA masks from firmware + - iommu/amd: Use IVHD EFR for early initialization of IOMMU features + - iommu/vt-d: Correctly check addr alignment in qi_flush_dev_iotlb_pasid() + - nvme-multipath: Early exit if no path is available + - selftests: forwarding: Specify interface when invoking mausezahn + - rxrpc: Fix memory leak in rxrpc_lookup_local + - NFC: fix resource leak when target index is invalid + - NFC: fix possible resource leak + - ASoC: topology: Properly unregister DAI on removal + - ASoC: topology: Fix memory corruption in soc_tplg_denum_create_values() + - team: protect features update by RCU to avoid deadlock + - tcp: make TCP_USER_TIMEOUT accurate for zero window probes + - tcp: fix TLP timer not set when CA_STATE changes from DISORDER to OPEN + - ICMPv6: Add ICMPv6 Parameter Problem, code 3 definition + - IPv6: reply ICMP error if the first fragment don't include all headers + - iommu/vt-d: Gracefully handle DMAR units with no supported address widths + + * xfrm_policy.sh in net from ubuntu_kernel_selftests passed with failed sub- + cases (LP: #1909647) + - selftests: xfrm: fix test return value override issue in xfrm_policy.sh + + * CVE-2021-3347 + - futex: Remove put_futex_key() + - futex: Remove needless goto's + - futex: Replace pointless printk in fixup_owner() + - futex: Ensure the correct return value from futex_lock_pi() + - futex: Provide and use pi_state_update_owner() + - rtmutex: Remove unused argument from rt_mutex_proxy_unlock() + - futex: Use pi_state_update_owner() in put_pi_state() + - futex: Simplify fixup_pi_state_owner() + - futex: Handle faults correctly for PI futexes + + * CVE-2021-3348 + - nbd: freeze the queue while we're adding connections + + * [Regression] ubuntu_bpf failed to build on Groovy (LP: #1917609) + - SAUCE: partially revert "bpf: Zero-fill re-used per-cpu map element" + + * alsa/hda: the hdmi audio dosn't work on TGL machines (LP: #1917829) + - ALSA: hda/hdmi: let new platforms assign the pcm slot dynamically + + * Groovy update: upstream stable patchset 2021-03-05 (LP: #1917964) + - mtd: rawnand: gpmi: fix dst bit offset when extracting raw payload + - i2c: bpmp-tegra: Ignore unknown I2C_M flags + - platform/x86: i2c-multi-instantiate: Don't create platform device for + INT3515 ACPI nodes + - platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634 + - ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info() + - ALSA: hda/realtek - Limit int mic boost on Acer Aspire E5-575T + - ALSA: hda/via: Add minimum mute flag + - dm crypt: fix copy and paste bug in crypt_alloc_req_aead + - ACPI: scan: Make acpi_bus_get_device() clear return pointer on error + - btrfs: don't get an EINTR during drop_snapshot for reloc + - btrfs: do not double free backref nodes on error + - btrfs: fix lockdep splat in btrfs_recover_relocation + - btrfs: don't clear ret in btrfs_start_dirty_block_groups + - btrfs: send: fix invalid clone operations when cloning from the same file + and root + - writeback: Drop I_DIRTY_TIME_EXPIRE + - fs: fix lazytime expiration handling in __writeback_single_inode() + - pinctrl: ingenic: Fix JZ4760 support + - mmc: core: don't initialize block size from ext_csd if not present + - mmc: sdhci-of-dwcmshc: fix rpmb access + - mmc: sdhci-xenon: fix 1.8v regulator stabilization + - mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend + - dm: avoid filesystem lookup in dm_get_dev_t() + - dm integrity: fix a crash if "recalculate" used without "internal_hash" + - dm integrity: conditionally disable "recalculate" feature + - drm/atomic: put state on error path + - drm/syncobj: Fix use-after-free + - drm/amdgpu: remove gpu info firmware of green sardine + - drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case + - drm/i915/gt: Prevent use of engine->wa_ctx after error + - ASoC: Intel: haswell: Add missing pm_ops + - ASoC: rt711: mutex between calibration and power state changes + - SUNRPC: Handle TCP socket sends with kernel_sendpage() again + - HID: sony: select CONFIG_CRC32 + - dm integrity: select CRYPTO_SKCIPHER + - scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback + - scsi: qedi: Correct max length of CHAP secret + - scsi: scsi_debug: Fix memleak in scsi_debug_init() + - scsi: sd: Suppress spurious errors when WRITE SAME is being disabled + - riscv: Fix kernel time_init() + - riscv: Fix sifive serial driver + - riscv: Enable interrupts during syscalls with M-Mode + - HID: logitech-dj: add the G602 receiver + - HID: Ignore battery for Elan touchscreen on ASUS UX550 + - clk: tegra30: Add hda clock default rates to clock driver + - ALSA: hda/tegra: fix tegra-hda on tegra30 soc + - arm64: make atomic helpers __always_inline + - xen: Fix event channel callback via INTX/GSI + - x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery + - dts: phy: fix missing mdio device and probe failure of vsc8541-01 device + - riscv: defconfig: enable gpio support for HiFive Unleashed + - drm/amdgpu/psp: fix psp gfx ctrl cmds + - drm/amd/display: disable dcn10 pipe split by default + - HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode + - drm/amd/display: Fix to be able to stop crc calculation + - drm/nouveau/bios: fix issue shadowing expansion ROMs + - drm/nouveau/privring: ack interrupts the same way as RM + - drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields + - drm/nouveau/mmu: fix vram heap sizing + - drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0 + - io_uring: flush timeouts that should already have expired + - libperf tests: If a test fails return non-zero + - libperf tests: Fail when failing to get a tracepoint id + - RISC-V: Set current memblock limit + - RISC-V: Fix maximum allowed phsyical memory for RV32 + - pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting + - pinctrl: mediatek: Fix fallback call path + - scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression + - scsi: ufs: ufshcd-pltfrm depends on HAS_IOMEM + - crypto: omap-sham - Fix link error without crypto-engine + - powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S + - powerpc: Fix alignment bug within the init sections + - arm64: entry: remove redundant IRQ flag tracing + - drm/amdkfd: Fix out-of-bounds read in kdf_create_vcrat_image_cpu() + - i2c: octeon: check correct size of maximum RECV_LEN packet + - platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow- + list + - platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND + errors + - gpio: sifive: select IRQ_DOMAIN_HIERARCHY rather than depend on it + - selftests: net: fib_tests: remove duplicate log test + - can: dev: can_restart: fix use after free bug + - can: vxcan: vxcan_xmit: fix use after free bug + - can: peak_usb: fix use after free bugs + - perf evlist: Fix id index for heterogeneous systems + - i2c: sprd: depend on COMMON_CLK to fix compile tests + - iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread + - iio: ad5504: Fix setting power-down state + - counter:ti-eqep: remove floor + - cifs: do not fail __smb_send_rqst if non-fatal signals are pending + - irqchip/mips-cpu: Set IPI domain parent chip + - x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state + - x86/topology: Make __max_die_per_package available unconditionally + - x86/mmx: Use KFPU_387 for MMX string operations + - proc_sysctl: fix oops caused by incorrect command parameters + - mm: memcg/slab: optimize objcg stock draining + - io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state + - intel_th: pci: Add Alder Lake-S support + - intel_th: pci: Add Alder Lake CPU support + - intel_th: pci: Add Alder Lake-P support + - stm class: Fix module init return on allocation failure + - serial: mvebu-uart: fix tx lost characters at power off + - ehci: fix EHCI host controller initialization sequence + - USB: ehci: fix an interrupt calltrace error + - usb: gadget: aspeed: fix stop dma register setting. + - USB: gadget: dummy-hcd: Fix errors in port-reset handling + - usb: udc: core: Use lock when write to soft_connect + - [Config] updateconfigs for USB_BDC_PCI + - usb: bdc: Make bdc pci driver depend on BROKEN + - usb: cdns3: imx: fix writing read-only memory issue + - usb: cdns3: imx: fix can't create core device the second time issue + - xhci: make sure TRB is fully written before giving it to the controller + - xhci: tegra: Delay for disabling LFPS detector + - driver core: Extend device_is_dependent() + - x86/cpu/amd: Set __max_die_per_package on AMD + - cls_flower: call nla_ok() before nla_next() + - netfilter: rpfilter: mask ecn bits before fib lookup + - sh: dma: fix kconfig dependency for G2_DMA + - ASoC: SOF: Intel: fix page fault at probe if i915 init fails + - octeontx2-af: Fix missing check bugs in rvu_cgx.c + - net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext + - sh_eth: Fix power down vs. is_opened flag ordering + - cachefiles: Drop superfluous readpages aops NULL check + - lightnvm: fix memory leak when submit fails + - skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too + - kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow + - kasan: fix incorrect arguments passing in kasan_add_zero_shadow + - tcp: fix TCP socket rehash stats mis-accounting + - net_sched: gen_estimator: support large ewma log + - udp: mask TOS bits in udp_v4_early_demux() + - ipv6: create multicast route with RTPROT_KERNEL + - net_sched: avoid shift-out-of-bounds in tcindex_set_parms() + - net_sched: reject silly cell_log in qdisc_get_rtab() + - ipv6: set multicast flag on the multicast route + - net: mscc: ocelot: allow offloading of bridge on top of LAG + - net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled + - net: dsa: b53: fix an off by one in checking "vlan->vid" + - tcp: do not mess with cloned skbs in tcp_add_backlog() + - tcp: fix TCP_USER_TIMEOUT with zero window + - net: core: devlink: use right genl user_ptr when handling port param get/set + - pinctrl: qcom: Allow SoCs to specify a GPIO function that's not 0 + - pinctrl: qcom: No need to read-modify-write the interrupt status + - pinctrl: qcom: Properly clear "intr_ack_high" interrupts when unmasking + - pinctrl: qcom: Don't clear pending interrupts when enabling + - tty: implement write_iter + - tty: fix up hung_up_tty_write() conversion + - drm/i915/hdcp: Get conn while content_type changed + - seq_file: add seq_read_iter + - kernfs: implement ->read_iter + - kernfs: implement ->write_iter + - kernfs: wire up ->splice_read and ->splice_write + - fs/pipe: allow sendfile() to pipe again + - Commit 9bb48c82aced ("tty: implement write_iter") converted the tty layer to + use write_iter. Fix the redirected_tty_write declaration also in n_tty and + change the comparisons to use write_iter instead of write. also in n_tty and + change the comparisons to use write_iter instead of write. + + * Enforce CONFIG_DRM_BOCHS=m (LP: #1916290) + - [Config] Enforce CONFIG_DRM_BOCHS=m + + * Groovy update: upstream stable patchset 2021-02-25 (LP: #1916960) + - btrfs: reloc: fix wrong file extent type check to avoid false ENOENT + - btrfs: prevent NULL pointer dereference in extent_io_tree_panic + - ALSA: doc: Fix reference to mixart.rst + - ASoC: AMD Renoir - add DMI entry for Lenovo ThinkPad X395 + - ASoC: dapm: remove widget from dirty list on free + - x86/hyperv: check cpu mask after interrupt has been disabled + - drm/amdgpu: add green_sardine device id (v2) + - drm/amdgpu: fix DRM_INFO flood if display core is not supported (bug 210921) + - drm/amdgpu: add Green_Sardine APU flag + - drm/amdgpu: add green_sardine support for gpu_info and ip block setting (v2) + - drm/amdgpu: add soc15 common ip block support for green_sardine (v3) + - drm/amdgpu: add new device id for Renior + - drm/i915/gt: Limit VFE threads based on GT + - drm/i915/backlight: fix CPU mode backlight takeover on LPT + - drm/bridge: sii902x: Refactor init code into separate function + - dt-bindings: display: sii902x: Add supply bindings + - tracing/kprobes: Do the notrace functions check without kprobes on ftrace + - ext4: fix bug for rename with RENAME_WHITEOUT + - cifs: check pointer before freeing + - cifs: fix interrupted close commands + - riscv: return -ENOSYS for syscall -1 + - riscv: Fixup CONFIG_GENERIC_TIME_VSYSCALL + - mips: fix Section mismatch in reference + - mips: lib: uncached: fix non-standard usage of variable 'sp' + - MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB + - MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps + - MIPS: relocatable: fix possible boot hangup with KASLR enabled + - RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd() + - ACPI: scan: Harden acpi_device_add() against device ID overflows + - xen/privcmd: allow fetching resource sizes + - compiler.h: Raise minimum version of GCC to 5.1 for arm64 + - mm/hugetlb: fix potential missing huge page size info + - mm/process_vm_access.c: include compat.h + - dm raid: fix discard limits for raid1 + - dm snapshot: flush merged data before committing metadata + - dm integrity: fix flush with external metadata device + - dm integrity: fix the maximum number of arguments + - dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq + - stmmac: intel: change all EHL/TGL to auto detect phy addr + - r8152: Add Lenovo Powered USB-C Travel Hub + - btrfs: tree-checker: check if chunk item end overflows + - ext4: don't leak old mountpoint samples + - ARC: build: remove non-existing bootpImage from KBUILD_IMAGE + - ARC: build: add uImage.lzma to the top-level target + - ARC: build: add boot_targets to PHONY + - ARC: build: move symlink creation to arch/arc/Makefile to avoid race + - ARM: omap2: pmic-cpcap: fix maximum voltage to be consistent with defaults + on xt875 + - ath11k: fix crash caused by NULL rx_channel + - netfilter: ipset: fixes possible oops in mtype_resize + - btrfs: fix async discard stall + - btrfs: merge critical sections of discard lock in workfn + - btrfs: fix transaction leak and crash after RO remount caused by qgroup + rescan + - regulator: bd718x7: Add enable times + - ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram + - habanalabs/gaudi: retry loading TPC f/w on -EINTR + - habanalabs: register to pci shutdown callback + - habanalabs: Fix memleak in hl_device_reset + - hwmon: (pwm-fan) Ensure that calculation doesn't discard big period values + - lib/raid6: Let $(UNROLL) rules work with macOS userland + - spi: fix the divide by 0 error when calculating xfer waiting time + - arch/arc: add copy_user_page() to to fix build error on ARC + - misdn: dsp: select CONFIG_BITREVERSE + - net: ethernet: fs_enet: Add missing MODULE_LICENSE + - nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN + - nvme: avoid possible double fetch in handling CQE + - nvmet-rdma: Fix list_del corruption on queue establishment failure + - drm/amd/display: fix sysfs amdgpu_current_backlight_pwm NULL pointer issue + - drm/amdgpu: fix a GPU hang issue when remove device + - drm/amd/pm: fix the failure when change power profile for renoir + - drm/amdgpu: fix potential memory leak during navi12 deinitialization + - usb: typec: Fix copy paste error for NVIDIA alt-mode description + - iommu/vt-d: Fix lockdep splat in sva bind()/unbind() + - ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI + - drm/msm: Call msm_init_vram before binding the gpu + - ARM: picoxcell: fix missing interrupt-parent properties + - poll: fix performance regression due to out-of-line __put_user() + - bpf: Simplify task_file_seq_get_next() + - bpf: Save correct stopping point in file seq iteration + - cfg80211: select CONFIG_CRC32 + - iommu/vt-d: Update domain geometry in iommu_ops.at(de)tach_dev + - net/mlx5: Fix passing zero to 'PTR_ERR' + - net/mlx5: E-Switch, fix changing vf VLANID + - mm: don't put pinned pages into the swap cache + - perf intel-pt: Fix 'CPU too large' error + - dump_common_audit_data(): fix racy accesses to ->d_name + - ASoC: meson: axg-tdm-interface: fix loopback + - ASoC: meson: axg-tdmin: fix axg skew offset + - ASoC: Intel: fix error code cnl_set_dsp_D0() + - nvmet-rdma: Fix NULL deref when setting pi_enable and traddr INADDR_ANY + - nvme: don't intialize hwmon for discovery controllers + - nvme-tcp: fix possible data corruption with bio merges + - nvme-tcp: Fix warning with CONFIG_DEBUG_PREEMPT + - NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock + - pNFS: We want return-on-close to complete when evicting the inode + - pNFS: Mark layout for return if return-on-close was not sent + - pNFS: Stricter ordering of layoutget and layoutreturn + - NFS: Adjust fs_context error logging + - NFS/pNFS: Don't call pnfs_free_bucket_lseg() before removing the request + - NFS/pNFS: Don't leak DS commits in pnfs_generic_retry_commit() + - NFS/pNFS: Fix a leak of the layout 'plh_outstanding' counter + - NFS: nfs_delegation_find_inode_server must first reference the superblock + - NFS: nfs_igrab_and_active must first reference the superblock + - scsi: ufs: Fix possible power drain during system suspend + - ext4: fix superblock checksum failure when setting password salt + - RDMA/restrack: Don't treat as an error allocation ID wrapping + - RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp + - bnxt_en: Improve stats context resource accounting with RDMA driver loaded. + - RDMA/mlx5: Fix wrong free of blue flame register on error + - IB/mlx5: Fix error unwinding when set_has_smi_cap fails + - dm zoned: select CONFIG_CRC32 + - drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is + no reset-deassert MIPI-sequence + - drm/i915/icl: Fix initing the DSI DSC power refcount during HW readout + - drm/i915/gt: Restore clear-residual mitigations for Ivybridge, Baytrail + - mm, slub: consider rest of partial list if acquire_slab() fails + - iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev() + - net: sunrpc: interpret the return value of kstrtou32 correctly + - selftests: netfilter: Pass family parameter "-f" to conntrack tool + - dm: eliminate potential source of excessive kernel log noise + - ALSA: fireface: Fix integer overflow in transmit_midi_msg() + - ALSA: firewire-tascam: Fix integer overflow in midi_port_work() + - netfilter: conntrack: fix reading nf_conntrack_buckets + - netfilter: nf_nat: Fix memleak in nf_nat_init + - netfilter: nft_compat: remove flush counter optimization + - kbuild: enforce -Werror=return-type + - [Config] updateconfigs for KPROBE_EVENTS_ON_NOTRACE + - x86/hyperv: Initialize clockevents after LAPIC is initialized + - bpf: Fix signed_{sub,add32}_overflows type handling + - nfsd4: readdirplus shouldn't return parent of export + - bpf: Don't leak memory in bpf getsockopt when optlen == 0 + - bpf: Support PTR_TO_MEM{,_OR_NULL} register spilling + - bpf: Fix helper bpf_map_peek_elem_proto pointing to wrong callback + - net: ipa: modem: add missing SET_NETDEV_DEV() for proper sysfs links + - net: fix use-after-free when UDP GRO with shared fraglist + - udp: Prevent reuseport_select_sock from reading uninitialized socks + - netxen_nic: fix MSI/MSI-x interrupts + - net: ipv6: Validate GSO SKB before finish IPv6 processing + - tipc: fix NULL deref in tipc_link_xmit() + - mlxsw: core: Add validation of transceiver temperature thresholds + - mlxsw: core: Increase critical threshold for ASIC thermal zone + - net: mvpp2: Remove Pause and Asym_Pause support + - rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request + - esp: avoid unneeded kmap_atomic call + - net: dcb: Validate netlink message in DCB handler + - net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands + - rxrpc: Call state should be read with READ_ONCE() under some circumstances + - i40e: fix potential NULL pointer dereferencing + - net: stmmac: Fixed mtu channged by cache aligned + - net: sit: unregister_netdevice on newlink's error path + - net: stmmac: fix taprio schedule configuration + - net: stmmac: fix taprio configuration when base_time is in the past + - net: avoid 32 x truesize under-estimation for tiny skbs + - rxrpc: Fix handling of an unsupported token type in rxrpc_read() + - net: stmmac: use __napi_schedule() for PREEMPT_RT + - drm/panel: otm8009a: allow using non-continuous dsi clock + - mac80211: do not drop tx nulldata packets on encrypted links + - mac80211: check if atf has been disabled in __ieee80211_schedule_txq + - net: dsa: unbind all switches from tree when DSA master unbinds + - cxgb4/chtls: Fix tid stuck due to wrong update of qid + - spi: fsl: Fix driver breakage when SPI_CS_HIGH is not set in spi->mode + - spi: cadence: cache reference clock rate during probe + - usb: ohci: Make distrust_firmware param default to false + - elfcore: fix building with clang + - spi: npcm-fiu: simplify the return expression of npcm_fiu_probe() + - spi: npcm-fiu: Disable clock in probe error path + + * CVE-2021-20239 + - net, sctp, filter: remap copy_from_user failure error + + -- Stefan Bader Wed, 24 Mar 2021 10:27:36 +0100 + +linux (5.8.0-48.54) groovy; urgency=medium + + * CVE-2020-27170 + - bpf: Fix off-by-one for area size in creating mask to left + + * CVE-2020-27171 + - bpf: Prohibit alu ops for pointer types not defining ptr_limit + + -- Kleber Sacilotto de Souza Fri, 19 Mar 2021 14:26:30 +0100 + +linux (5.8.0-47.53) groovy; urgency=medium + + * binary assembly failures with CONFIG_MODVERSIONS present (LP: #1919315) + - [Packaging] quiet (nomially) benign errors in BUILD script + + * CVE-2021-3444 + - bpf: Fix 32 bit src register truncation on div/mod + - bpf: Fix truncation handling for mod32 dst reg wrt zero + + * CVE-2021-27365 + - scsi: iscsi: Verify lengths on passthrough PDUs + - sysfs: Add sysfs_emit and sysfs_emit_at to format sysfs output + - scsi: iscsi: Ensure sysfs attributes are limited to PAGE_SIZE + + * CVE-2021-27363 // CVE-2021-27364 + - scsi: iscsi: Restrict sessions and handles to admin capabilities + + -- Stefan Bader Wed, 17 Mar 2021 10:19:07 +0100 + +linux (5.8.0-45.51) groovy; urgency=medium + + * groovy/linux: 5.8.0-45.51 -proposed tracker (LP: #1916143) + + * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716) + - [Config] enable CONFIG_MODVERSIONS=y + - [Packaging] build canonical-certs.pem from branch/arch certs + - [Config] add Canonical Livepatch Service key to SYSTEM_TRUSTED_KEYS + - [Config] add ubuntu-drivers key to SYSTEM_TRUSTED_KEYS + - [Config] Allow ASM_MODVERSIONS and MODULE_REL_CRCS + + * CVE-2021-20194 + - bpf, cgroup: Fix optlen WARN_ON_ONCE toctou + - bpf, cgroup: Fix problematic bounds check + + * Missing device id for Intel TGL-H ISH [8086:43fc] in intel-ish-hid driver + (LP: #1914543) + - HID: intel-ish-hid: ipc: Add Tiger Lake H PCI device ID + + * Prevent thermal shutdown during boot process (LP: #1906168) + - thermal/core: Emit a warning if the thermal zone is updated without ops + - thermal/core: Add critical and hot ops + - thermal/drivers/acpi: Use hot and critical ops + - thermal/drivers/rcar: Remove notification usage + - thermal: int340x: Fix unexpected shutdown at critical temperature + - thermal: intel: pch: Fix unexpected shutdown at critical temperature + + * geneve overlay network on vlan interface broken with offload enabled + (LP: #1914447) + - net/mlx5e: Fix SWP offsets when vlan inserted by driver + + * Groovy update: upstream stable patchset 2021-02-11 (LP: #1915473) + - net: cdc_ncm: correct overhead in delayed_ndp_size + - net: hns3: fix the number of queues actually used by ARQ + - net: hns3: fix a phy loopback fail issue + - net: stmmac: dwmac-sun8i: Balance internal PHY resource references + - net: stmmac: dwmac-sun8i: Balance internal PHY power + - net: vlan: avoid leaks on register_vlan_dev() failures + - net/sonic: Fix some resource leaks in error handling paths + - net: ipv6: fib: flush exceptions when purging route + - tools: selftests: add test for changing routes with PTMU exceptions + - net: fix pmtu check in nopmtudisc mode + - net: ip: always refragment ip defragmented packets + - octeontx2-af: fix memory leak of lmac and lmac->name + - nexthop: Fix off-by-one error in error path + - nexthop: Unlink nexthop group entry in error path + - s390/qeth: fix L2 header access in qeth_l3_osa_features_check() + - net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE + - net/mlx5: Use port_num 1 instead of 0 when delete a RoCE address + - net/mlx5e: ethtool, Fix restriction of autoneg with 56G + - chtls: Fix hardware tid leak + - chtls: Remove invalid set_tcb call + - chtls: Fix panic when route to peer not configured + - chtls: Replace skb_dequeue with skb_peek + - chtls: Added a check to avoid NULL pointer dereference + - chtls: Fix chtls resources release sequence + - HID: wacom: Fix memory leakage caused by kfifo_alloc + - ARM: OMAP2+: omap_device: fix idling of devices during probe + - i2c: sprd: use a specific timeout to avoid system hang up issue + - dmaengine: dw-edma: Fix use after free in dw_edma_alloc_chunk() + - can: tcan4x5x: fix bittiming const, use common bittiming from m_can driver + - can: m_can: m_can_class_unregister(): remove erroneous m_can_clk_stop() + - can: kvaser_pciefd: select CONFIG_CRC32 + - cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get() + - spi: stm32: FIFO threshold level - fix align packet size + - i2c: i801: Fix the i2c-mux gpiod_lookup_table not being properly terminated + - dmaengine: mediatek: mtk-hsdma: Fix a resource leak in the error handling + path of the probe function + - dmaengine: xilinx_dma: check dma_async_device_register return value + - dmaengine: xilinx_dma: fix incompatible param warning in _child_probe() + - dmaengine: xilinx_dma: fix mixed_enum_type coverity warning + - qed: select CONFIG_CRC32 + - wil6210: select CONFIG_CRC32 + - block: rsxx: select CONFIG_CRC32 + - lightnvm: select CONFIG_CRC32 + - iommu/intel: Fix memleak in intel_irq_remapping_alloc + - bpftool: Fix compilation failure for net.o with older glibc + - net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups + - net/mlx5e: Fix two double free cases + - regmap: debugfs: Fix a memory leak when calling regmap_attach_dev + - wan: ds26522: select CONFIG_BITREVERSE + - regulator: qcom-rpmh-regulator: correct hfsmps515 definition + - net: mvpp2: disable force link UP during port init procedure + - KVM: arm64: Don't access PMCR_EL0 when no PMU is available + - block: fix use-after-free in disk_part_iter_next + - net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed + packet + - regmap: debugfs: Fix a reversed if statement in regmap_debugfs_init() + - drm/panfrost: Don't corrupt the queue mutex on open/close + - scsi: ufs: Fix -Wsometimes-uninitialized warning + - btrfs: skip unnecessary searches for xattrs when logging an inode + - net: stmmac: dwmac-sun8i: Fix probe error handling + - net: stmmac: dwmac-sun8i: Balance syscon (de)initialization + - net: bareudp: add missing error handling for bareudp_link_config() + - ptp: ptp_ines: prevent build when HAS_IOMEM is not set + - chtls: Avoid unnecessary freeing of oreq pointer + - nexthop: Bounce NHA_GATEWAY in FDB nexthop groups + - net/mlx5e: In skb build skip setting mark in switchdev mode + - ionic: start queues before announcing link up + - fanotify: Fix sys_fanotify_mark() on native x86-32 + - spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case + - i2c: mediatek: Fix apdma and i2c hand-shake timeout + - interconnect: imx: Add a missing of_node_put after of_device_is_available + - dmaengine: milbeaut-xdmac: Fix a resource leak in the error handling path of + the probe function + - arm64: mm: Fix ARCH_LOW_ADDRESS_LIMIT when !CONFIG_ZONE_DMA + - phy: dp83640: select CONFIG_CRC32 + - zonefs: select CONFIG_CRC32 + - iommu/vt-d: Fix misuse of ALIGN in qi_flush_piotlb() + - nvme-tcp: Fix possible race of io_work and direct send + - arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST + - drm/i915/dp: Track pm_qos per connector + - net: mvneta: fix error message when MTU too large for XDP + - selftests: fib_nexthops: Fix wrong mausezahn invocation + - block/rnbd-clt: avoid module unload race with close confirmation + - drm/panfrost: Remove unused variables in panfrost_job_close() + - tools headers UAPI: Sync linux/fscrypt.h with the kernel sources + + * Fix the video can't output through WD19TB connected on TGL's Type-C port + during cold-boot (LP: #1913372) + - drm/dp/mst: Export drm_dp_get_vc_payload_bw() + - drm/i915: Fix the MST PBN divider calculation + + * Fix regression introduced by codec PM change (LP: #1912676) + - ASoC: SOF: Intel: hda: Resume codec to do jack detection + - ASoC: SOF: Intel: hda: Modify existing helper to disable WAKEEN + - ASoC: SOF: Intel: hda: Avoid checking jack on system suspend + - ALSA: hda: Balance runtime/system PM if direct-complete is disabled + + * Restore palm ejection on multi-input devices (LP: #1913520) + - HID: multitouch: Apply MT_QUIRK_CONFIDENCE quirk for multi-input devices + + * intel-hid is not loaded on new Intel platform (LP: #1907160) + - platform/x86: intel-hid: add Rocket Lake ACPI device ID + + * Remove scary stack trace from Realtek WiFi driver (LP: #1913263) + - rtw88: reduce the log level for failure of tx report + + * Groovy update: upstream stable patchset 2021-02-05 (LP: #1914832) + - i40e: Fix Error I40E_AQ_RC_EINVAL when removing VFs + - iavf: fix double-release of rtnl_lock + - net/sched: sch_taprio: ensure to reset/destroy all child qdiscs + - net: mvpp2: Add TCAM entry to drop flow control pause frames + - net: mvpp2: prs: fix PPPoE with ipv6 packet parse + - net: systemport: set dev->max_mtu to UMAC_MAX_MTU_SIZE + - ethernet: ucc_geth: fix use-after-free in ucc_geth_remove() + - ethernet: ucc_geth: set dev->max_mtu to 1518 + - ionic: account for vlan tag len in rx buffer len + - atm: idt77252: call pci_disable_device() on error path + - net: mvpp2: Fix GoP port 3 Networking Complex Control configurations + - ibmvnic: fix login buffer memory leak + - ibmvnic: continue fatal error reset after passive init + - net: ethernet: mvneta: Fix error handling in mvneta_probe + - virtio_net: Fix recursive call to cpus_read_lock() + - net/ncsi: Use real net-device for response handler + - net: ethernet: Fix memleak in ethoc_probe + - net-sysfs: take the rtnl lock when storing xps_cpus + - net-sysfs: take the rtnl lock when accessing xps_cpus_map and num_tc + - net-sysfs: take the rtnl lock when storing xps_rxqs + - net-sysfs: take the rtnl lock when accessing xps_rxqs_map and num_tc + - net: ethernet: ti: cpts: fix ethtool output when no ptp_clock registered + - tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS + - bnxt_en: Check TQM rings for maximum supported value. + - net: mvpp2: fix pkt coalescing int-threshold configuration + - bnxt_en: Fix AER recovery. + - ipv4: Ignore ECN bits for fib lookups in fib_compute_spec_dst() + - net: sched: prevent invalid Scell_log shift count + - net: hns: fix return value check in __lb_other_process() + - erspan: fix version 1 check in gre_parse_header() + - net: hdlc_ppp: Fix issues when mod_timer is called while timer is running + - bareudp: set NETIF_F_LLTX flag + - bareudp: Fix use of incorrect min_headroom size + - vhost_net: fix ubuf refcount incorrectly when sendmsg fails + - r8169: work around power-saving bug on some chip versions + - net: dsa: lantiq_gswip: Enable GSWIP_MII_CFG_EN also for internal PHYs + - net: dsa: lantiq_gswip: Fix GSWIP_MII_CFG(p) register access + - CDC-NCM: remove "connected" log message + - ibmvnic: fix: NULL pointer dereference. + - net: usb: qmi_wwan: add Quectel EM160R-GL + - stmmac: intel: Add PCI IDs for TGL-H platform + - workqueue: Kick a worker based on the actual activation of delayed works + - scsi: ufs: Fix wrong print message in dev_err() + - scsi: ufs-pci: Fix restore from S4 for Intel controllers + - scsi: ufs-pci: Ensure UFS device is in PowerDown mode for suspend-to-disk + ->poweroff() + - scsi: ufs-pci: Fix recovery from hibernate exit errors for Intel controllers + - blk-mq: remove the BLK_MQ_REQ_INTERNAL flag + - scsi: block: Introduce BLK_MQ_REQ_PM + - scsi: ide: Do not set the RQF_PREEMPT flag for sense requests + - scsi: ide: Mark power management requests with RQF_PM instead of RQF_PREEMPT + - scsi: scsi_transport_spi: Set RQF_PM for domain validation commands + - scsi: core: Only process PM requests if rpm_status != RPM_ACTIVE + - local64.h: make mandatory + - lib/genalloc: fix the overflow when size is too big + - depmod: handle the case of /sbin/depmod without /sbin in PATH + - scsi: ufs: Clear UAC for FFU and RPMB LUNs + - kbuild: don't hardcode depmod path + - Bluetooth: revert: hci_h5: close serdev device and free hu in h5_close + - scsi: block: Remove RQF_PREEMPT and BLK_MQ_REQ_PREEMPT + - scsi: block: Do not accept any requests while suspended + - crypto: ecdh - avoid buffer overflow in ecdh_set_secret() + - crypto: asym_tpm: correct zero out potential secrets + - powerpc: Handle .text.{hot,unlikely}.* in linker script + - Staging: comedi: Return -EFAULT if copy_to_user() fails + - staging: mt7621-dma: Fix a resource leak in an error handling path + - usb: gadget: enable super speed plus + - USB: cdc-acm: blacklist another IR Droid device + - USB: cdc-wdm: Fix use after free in service_outstanding_interrupt(). + - usb: dwc3: meson-g12a: disable clk on error handling path in probe + - usb: dwc3: gadget: Clear wait flag on dequeue + - usb: dwc3: ulpi: Use VStsDone to detect PHY regs access completion + - usb: dwc3: ulpi: Replace CPU-based busyloop with Protocol-based one + - usb: dwc3: ulpi: Fix USB2.0 HS/FS/LS PHY suspend regression + - usb: chipidea: ci_hdrc_imx: add missing put_device() call in + usbmisc_get_init_data() + - USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set + - usb: usbip: vhci_hcd: protect shift size + - usb: uas: Add PNY USB Portable SSD to unusual_uas + - USB: serial: iuu_phoenix: fix DMA from stack + - USB: serial: option: add LongSung M5710 module support + - USB: serial: option: add Quectel EM160R-GL + - USB: yurex: fix control-URB timeout handling + - USB: usblp: fix DMA to stack + - ALSA: usb-audio: Fix UBSAN warnings for MIDI jacks + - usb: gadget: select CONFIG_CRC32 + - USB: Gadget: dummy-hcd: Fix shift-out-of-bounds bug + - usb: gadget: f_uac2: reset wMaxPacketSize + - usb: gadget: function: printer: Fix a memory leak for interface descriptor + - usb: gadget: u_ether: Fix MTU size mismatch with RX packet size + - USB: gadget: legacy: fix return error code in acm_ms_bind() + - usb: gadget: Fix spinlock lockup on usb_function_deactivate + - usb: gadget: configfs: Preserve function ordering after bind failure + - usb: gadget: configfs: Fix use-after-free issue with udc_name + - USB: serial: keyspan_pda: remove unused variable + - hwmon: (amd_energy) fix allocation of hwmon_channel_info config + - mm: make wait_on_page_writeback() wait for multiple pending writebacks + - x86/mm: Fix leak of pmd ptlock + - kvm: check tlbs_dirty directly + - task_work: cleanup notification modes + - x86/resctrl: Use an IPI instead of task_work_add() to update PQR_ASSOC MSR + - x86/resctrl: Don't move a task to the same resource group + - blk-iocost: fix NULL iocg deref from racing against initialization + - ALSA: hda/via: Fix runtime PM for Clevo W35xSS + - ALSA: hda/conexant: add a new hda codec CX11970 + - ALSA: hda/realtek - Fix speaker volume control on Lenovo C940 + - ALSA: hda/realtek: Add mute LED quirk for more HP laptops + - ALSA: hda/realtek: Add two "Intel Reference board" SSID in the ALC256. + - iommu/vt-d: Move intel_iommu info from struct intel_svm to struct + intel_svm_dev + - btrfs: send: fix wrong file path when there is an inode with a pending rmdir + - Revert "device property: Keep secondary firmware node secondary by type" + - dmabuf: fix use-after-free of dmabuf's file->f_inode + - arm64: link with -z norelro for LLD or aarch64-elf + - drm/i915: clear the shadow batch + - netfilter: x_tables: Update remaining dereference to RCU + - netfilter: ipset: fix shift-out-of-bounds in htable_bits() + - netfilter: xt_RATEEST: reject non-null terminated string from userspace + - netfilter: nft_dynset: report EOPNOTSUPP on missing set feature + - dmaengine: idxd: off by one in cleanup code + - x86/mtrr: Correct the range check before performing MTRR type lookups + - KVM: x86: fix shift out of bounds reported by UBSAN + - rtlwifi: rise completion at the last step of firmware callback + + * Groovy update: upstream stable patchset 2021-02-03 (LP: #1914472) + - net/sched: sch_taprio: reset child qdiscs before freeing them + - mptcp: fix security context on server socket + - ethtool: fix error paths in ethnl_set_channels() + - ethtool: fix string set id check + - md/raid10: initialize r10_bio->read_slot before use. + - drm/amd/display: Add get_dig_frontend implementation for DCEx + - io_uring: close a small race gap for files cancel + - jffs2: Allow setting rp_size to zero during remounting + - jffs2: Fix NULL pointer dereference in rp_size fs option parsing + - scsi: block: Fix a race in the runtime power management code + - mm/hugetlb: fix deadlock in hugetlb_cow error path + - mm: memmap defer init doesn't work as expected + - lib/zlib: fix inflating zlib streams on s390 + - uapi: move constants from to + - tools headers UAPI: Sync linux/const.h with the kernel headers + - cgroup: Fix memory leak when parsing multiple source parameters + - zlib: move EXPORT_SYMBOL() and MODULE_LICENSE() out of dfltcc_syms.c + - scsi: cxgb4i: Fix TLS dependency + - Bluetooth: hci_h5: close serdev device and free hu in h5_close + - fbcon: Disable accelerated scrolling + - reiserfs: add check for an invalid ih_entry_count + - misc: vmw_vmci: fix kernel info-leak by initializing dbells in + vmci_ctx_get_chkpt_doorbells() + - media: gp8psk: initialize stats at power control logic + - f2fs: fix shift-out-of-bounds in sanity_check_raw_super() + - ALSA: seq: Use bool for snd_seq_queue internal flags + - ALSA: rawmidi: Access runtime->avail always in spinlock + - bfs: don't use WARNING: string when it's just info. + - ext4: check for invalid block size early when mounting a file system + - fcntl: Fix potential deadlock in send_sig{io, urg}() + - rtc: sun6i: Fix memleak in sun6i_rtc_clk_init + - module: set MODULE_STATE_GOING state when a module fails to load + - quota: Don't overflow quota file offsets + - rtc: pl031: fix resource leak in pl031_probe + - powerpc: sysdev: add missing iounmap() on error in mpic_msgr_probe() + - i3c master: fix missing destroy_workqueue() on error in i3c_master_register + - NFSv4: Fix a pNFS layout related use-after-free race when freeing the inode + - f2fs: avoid race condition for shrinker count + - module: delay kobject uevent until after module init call + - fs/namespace.c: WARN if mnt_count has become negative + - watchdog: rti-wdt: fix reference leak in rti_wdt_probe + - um: random: Register random as hwrng-core device + - um: ubd: Submit all data segments atomically + - ceph: fix inode refcount leak when ceph_fill_inode on non-I_NEW inode fails + - drm/amd/display: updated wm table for Renoir + - tick/sched: Remove bogus boot "safety" check + - s390: always clear kernel stack backchain before calling functions + - io_uring: remove racy overflow list fast checks + - ALSA: pcm: Clear the full allocated memory at hw_params + - dm verity: skip verity work if I/O error when system is shutting down + - rtc: pcf2127: move watchdog initialisation to a separate function + - rtc: pcf2127: only use watchdog when explicitly available + - dt-bindings: rtc: add reset-source property + - kdev_t: always inline major/minor helper functions + - ALSA: hda/realtek - Modify Dell platform name + - scsi: ufs: Allow an error return value from ->device_reset() + - scsi: ufs: Re-enable WriteBooster after device reset + - RDMA/siw,rxe: Make emulated devices virtual in the device tree + - fuse: fix bad inode + - rwsem: Implement down_read_killable_nested + - rwsem: Implement down_read_interruptible + - exec: Transform exec_update_mutex into a rw_semaphore + - mwifiex: Fix possible buffer overflows in mwifiex_cmd_802_11_ad_hoc_start + + -- Stefan Bader Fri, 19 Feb 2021 10:59:43 +0100 + +linux (5.8.0-44.50) groovy; urgency=medium + + * groovy/linux: 5.8.0-44.50 -proposed tracker (LP: #1914805) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - update dkms package versions + + * Introduce the new NVIDIA 460-server series and update the 460 series + (LP: #1913200) + - [Config] dkms-versions -- drop NVIDIA 435 455 and 440-server + - [Config] dkms-versions -- add the 460-server nvidia driver + + * [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541) + - Revert "UBUNTU: SAUCE: e1000e: bump up timeout to wait when ME un-configure + ULP mode" + - e1000e: Only run S0ix flows if shutdown succeeded + - Revert "e1000e: disable s0ix entry and exit flows for ME systems" + - e1000e: Export S0ix flags to ethtool + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) // + [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541) + - e1000e: bump up timeout to wait when ME un-configures ULP mode + + * Cannot probe sata disk on sata controller behind VMD: ata1.00: failed to + IDENTIFY (I/O error, err_mask=0x4) (LP: #1894778) + - PCI: vmd: Offset Client VMD MSI-X vectors + + * Enable mute and micmute LED on HP EliteBook 850 G7 (LP: #1910102) + - ALSA: hda/realtek: Enable mute and micmute LED on HP EliteBook 850 G7 + + * SYNA30B4:00 06CB:CE09 Mouse on HP EliteBook 850 G7 not working at all + (LP: #1908992) + - HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device + + * HD Audio Device PCI ID for the Intel Cometlake-R platform (LP: #1912427) + - SAUCE: ALSA: hda: Add Cometlake-R PCI ID + + * switch to an autogenerated nvidia series based core via dkms-versions + (LP: #1912803) + - [Packaging] nvidia -- use dkms-versions to define versions built + - [Packaging] update-version-dkms -- maintain flags fields + - [Config] dkms-versions -- add transitional/skip information for nvidia + packages + + * udpgro.sh in net from ubuntu_kernel_selftests seems not reflecting sub-test + result (LP: #1908499) + - selftests: fix the return value for UDP GRO test + + * [UBUNTU 21.04] vfio: pass DMA availability information to userspace + (LP: #1907421) + - vfio/type1: Refactor vfio_iommu_type1_ioctl() + - vfio iommu: Add dma available capability + + * qede: Kubernetes Internal DNS Failure due to QL41xxx NIC not supporting IPIP + tx csum offload (LP: #1909062) + - qede: fix offload for IPIP tunnel packets + + * Use DCPD to control HP DreamColor panel (LP: #1911001) + - SAUCE: drm/dp: Another HP DreamColor panel brigntness fix + + * Fix right sounds and mute/micmute LEDs for HP ZBook Fury 15/17 G7 Mobile + Workstation (LP: #1910561) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines + + * Ubuntu 20.04 - multicast counter is not increased in ip -s (LP: #1901842) + - net/mlx5e: Fix multicast counter not up-to-date in "ip -s" + + * eeh-basic.sh in powerpc from ubuntu_kernel_selftests timeout with 5.4 P8 / + P9 (LP: #1882503) + - selftests/powerpc/eeh: disable kselftest timeout setting for eeh-basic + + * DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639) + - Input: i8042 - unbreak Pegatron C15B + + * update ENA driver, incl. new ethtool stats (LP: #1910291) + - net: ena: ethtool: convert stat_offset to 64 bit resolution + - net: ena: ethtool: Add new device statistics + - net: ena: ethtool: add stats printing to XDP queues + - net: ena: xdp: add queue counters for xdp actions + - net: ena: Change license into format to SPDX in all files + - net: ena: Change log message to netif/dev function + - net: ena: Remove redundant print of placement policy + - net: ena: Change RSS related macros and variables names + - net: ena: Fix all static chekers' warnings + - drivers/net/ethernet: remove incorrectly formatted doc + - net: ena: Capitalize all log strings and improve code readability + + * Groovy update: upstream stable patchset 2021-01-15 (LP: #1912027) + - net: ipconfig: Avoid spurious blank lines in boot log + - x86/split-lock: Avoid returning with interrupts enabled + - exfat: Avoid allocating upcase table using kcalloc() + - soc/tegra: fuse: Fix index bug in get_process_id + - usb: mtu3: fix memory corruption in mtu3_debugfs_regset() + - USB: serial: option: add interface-number sanity check to flag handling + - USB: gadget: f_acm: add support for SuperSpeed Plus + - USB: gadget: f_midi: setup SuperSpeed Plus descriptors + - usb: gadget: f_fs: Re-use SS descriptors for SuperSpeedPlus + - USB: gadget: f_rndis: fix bitrate for SuperSpeed and above + - usb: chipidea: ci_hdrc_imx: Pass DISABLE_DEVICE_STREAMING flag to imx6ul + - ARM: dts: exynos: fix roles of USB 3.0 ports on Odroid XU + - ARM: dts: exynos: fix USB 3.0 VBUS control and over-current pins on + Exynos5410 + - ARM: dts: exynos: fix USB 3.0 pins supply being turned off on Odroid XU + - coresight: tmc-etf: Fix NULL ptr dereference in tmc_enable_etf_sink_perf() + - coresight: tmc-etr: Check if page is valid before dma_map_page() + - coresight: tmc-etr: Fix barrier packet insertion for perf buffer + - coresight: etb10: Fix possible NULL ptr dereference in etb_enable_perf() + - f2fs: fix to seek incorrect data offset in inline data file + - scsi: megaraid_sas: Check user-provided offsets + - HID: i2c-hid: add Vero K147 to descriptor override + - serial_core: Check for port state when tty is in error state + - fscrypt: remove kernel-internal constants from UAPI header + - fscrypt: rename DCACHE_ENCRYPTED_NAME to DCACHE_NOKEY_NAME + - fscrypt: add fscrypt_is_nokey_name() + - ubifs: prevent creating duplicate encrypted filenames + - ext4: prevent creating duplicate encrypted filenames + - f2fs: prevent creating duplicate encrypted filenames + - Bluetooth: Fix slab-out-of-bounds read in hci_le_direct_adv_report_evt() + - quota: Sanity-check quota file headers on load + - fs: quota: fix array-index-out-of-bounds bug by passing correct argument to + vfs_cleanup_quota_inode() + - media: msi2500: assign SPI bus number dynamically + - crypto: af_alg - avoid undefined behavior accessing salg_name + - nl80211: validate key indexes for cfg80211_registered_device + - md: fix a warning caused by a race between concurrent md_ioctl()s + - drm/gma500: fix double free of gma_connector + - drm/aspeed: Fix Kconfig warning & subsequent build errors + - drm/mcde: Fix handling of platform_get_irq() error + - drm/tve200: Fix handling of platform_get_irq() error + - arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node + - arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node + - soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains() + - soc: mediatek: Check if power domains can be powered on at boot time + - arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value + - arm64: dts: ipq6018: update the reserved-memory node + - soc: qcom: geni: More properly switch to DMA mode + - Revert "i2c: i2c-qcom-geni: Fix DMA transfer race" + - RDMA/bnxt_re: Set queue pair state when being queried + - rtc: pcf2127: fix pcf2127_nvmem_read/write() returns + - selinux: fix error initialization in inode_doinit_with_dentry() + - ARM: dts: aspeed-g6: Fix the GPIO memory size + - ARM: dts: aspeed: s2600wf: Fix VGA memory region location + - RDMA/core: Fix error return in _ib_modify_qp() + - RDMA/rxe: Compute PSN windows correctly + - x86/mm/ident_map: Check for errors from ident_pud_init() + - ARM: p2v: fix handling of LPAE translation in BE mode + - RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed + - RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established + - RDMA/rtrs-srv: Don't guard the whole __alloc_srv with srv_mutex + - x86/apic: Fix x2apic enablement without interrupt remapping + - sched/deadline: Fix sched_dl_global_validate() + - sched: Reenable interrupts in do_sched_yield() + - drm/amdgpu: fix incorrect enum type + - crypto: talitos - Endianess in current_desc_hdr() + - crypto: talitos - Fix return type of current_desc_hdr() + - crypto: inside-secure - Fix sizeof() mismatch + - ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode + - ARM: dts: aspeed: tiogapass: Remove vuart + - drm/amdgpu: fix build_coefficients() argument + - powerpc/64: Set up a kernel stack for secondaries before cpu_restore() + - spi: img-spfi: fix reference leak in img_spfi_resume + - f2fs: call f2fs_get_meta_page_retry for nat page + - RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr() + - drm/msm/dsi_pll_10nm: restore VCO rate during restore_state + - spi: spi-mem: fix reference leak in spi_mem_access_start + - scsi: aacraid: Improve compat_ioctl handlers + - ASoC: pcm: DRAIN support reactivation + - drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe + - crypto: arm64/poly1305-neon - reorder PAC authentication with SP update + - selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling + - spi: stm32: fix reference leak in stm32_spi_resume + - x86/mce: Correct the detection of invalid notifier priorities + - drm/edid: Fix uninitialized variable in drm_cvt_modes() + - ath11k: Initialize complete alpha2 for regulatory change + - ath11k: Fix number of rules in filtered ETSI regdomain + - brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free} + - arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7 + - arm64: dts: exynos: Correct psci compatible used on Exynos7 + - drm/panel: simple: Add flags to boe_nv133fhm_n61 + - Bluetooth: Fix null pointer dereference in hci_event_packet() + - Bluetooth: hci_h5: fix memory leak in h5_close + - spi: stm32-qspi: fix reference leak in stm32 qspi operations + - spi: spi-ti-qspi: fix reference leak in ti_qspi_setup + - spi: mt7621: fix missing clk_disable_unprepare() on error in + mt7621_spi_probe + - spi: tegra20-slink: fix reference leak in slink ops of tegra20 + - spi: tegra20-sflash: fix reference leak in tegra_sflash_resume + - spi: tegra114: fix reference leak in tegra spi ops + - spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in + bcm63xx_hsspi_resume + - ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of() + - mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure + - selftest/bpf: Add missed ip6ip6 test back + - ASoC: wm8994: Fix PM disable depth imbalance on error + - ASoC: wm8998: Fix PM disable depth imbalance on error + - spi: sprd: fix reference leak in sprd_spi_remove + - ASoC: arizona: Fix a wrong free in wm8997_probe + - RDMa/mthca: Work around -Wenum-conversion warning + - ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG + - arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node + - MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA + - drm/amdgpu: fix compute queue priority if num_kcq is less than 4 + - soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted + - crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager + - crypto: qat - fix status check in qat_hal_put_rel_rd_xfer() + - drm/udl: Fix missing error code in udl_handle_damage() + - staging: greybus: codecs: Fix reference counter leak in error handling + - staging: gasket: interrupt: fix the missed eventfd_ctx_put() in + gasket_interrupt.c + - drm/amdkfd: Put ACPI table after using it + - media: tm6000: Fix sizeof() mismatches + - media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm() + - media: mtk-vcodec: add missing put_device() call in + mtk_vcodec_release_dec_pm() + - media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm() + - media: v4l2-fwnode: Return -EINVAL for invalid bus-type + - media: staging: rkisp1: cap: fix runtime PM imbalance on error + - media: cedrus: fix reference leak in cedrus_start_streaming + - media: platform: add missing put_device() call in mtk_jpeg_probe() and + mtk_jpeg_remove() + - media: venus: core: change clk enable and disable order in resume and + suspend + - media: venus: core: vote for video-mem path + - media: venus: core: vote with average bandwidth and peak bandwidth as zero + - RDMA/cma: Add missing error handling of listen_id + - ASoC: meson: fix COMPILE_TEST error + - scsi: core: Fix VPD LUN ID designator priorities + - media: venus: put dummy vote on video-mem path after last session release + - media: solo6x10: fix missing snd_card_free in error handling case + - video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init() + - mmc: sdhci: tegra: fix wrong unit with busy_timeout + - drm/omap: dmm_tiler: fix return error code in omap_dmm_probe() + - drm/meson: Free RDMA resources after tearing down DRM + - drm/meson: Unbind all connectors on module removal + - drm/meson: dw-hdmi: Register a callback to disable the regulator + - drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP + registers + - iommu/vt-d: include conditionally on CONFIG_INTEL_IOMMU_SVM + - Input: ads7846 - fix race that causes missing releases + - Input: ads7846 - fix integer overflow on Rt calculation + - Input: ads7846 - fix unaligned access on 7845 + - bus: mhi: core: Remove double locking from mhi_driver_remove() + - bus: mhi: core: Fix null pointer access when parsing MHI configuration + - usb/max3421: fix return error code in max3421_probe() + - spi: mxs: fix reference leak in mxs_spi_probe + - selftests/bpf: Fix broken riscv build + - powerpc: Avoid broken GCC __attribute__((optimize)) + - powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32 + - ARM: dts: tacoma: Fix node vs reg mismatch for flash memory + - Revert "powerpc/pseries/hotplug-cpu: Remove double free in error path" + - mfd: htc-i2cpld: Add the missed i2c_put_adapter() in + htcpld_register_chip_i2c() + - EDAC/mce_amd: Use struct cpuinfo_x86.cpu_die_id for AMD NodeId + - scsi: ufs: Avoid to call REQ_CLKS_OFF to CLKS_OFF + - scsi: ufs: Fix clkgating on/off + - rcu: Allow rcu_irq_enter_check_tick() from NMI + - rcu,ftrace: Fix ftrace recursion + - crypto: crypto4xx - Replace bitwise OR with logical OR in crypto4xx_build_pd + - crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe + - spi: fix resource leak for drivers without .remove callback + - drm/meson: dw-hdmi: Disable clocks on driver teardown + - drm/meson: dw-hdmi: Enable the iahb clock early enough + - PCI: Disable MSI for Pericom PCIe-USB adapter + - PCI: brcmstb: Initialize "tmp" before use + - soc: ti: knav_qmss: fix reference leak in knav_queue_probe + - soc: ti: Fix reference imbalance in knav_dma_probe + - drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe + - soc: qcom: initialize local variable + - arm64: dts: qcom: sm8250: correct compatible for sm8250-mtp + - arm64: dts: qcom: msm8916-samsung-a2015: Disable muic i2c pin bias + - Input: omap4-keypad - fix runtime PM error handling + - clk: meson: Kconfig: fix dependency for G12A + - ath11k: Fix the rx_filter flag setting for peer rssi stats + - RDMA/cxgb4: Validate the number of CQEs + - soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute + - memstick: fix a double-free bug in memstick_check + - ARM: dts: at91: sam9x60: add pincontrol for USB Host + - ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host + - ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host + - mmc: pxamci: Fix error return code in pxamci_probe + - brcmfmac: fix error return code in brcmf_cfg80211_connect() + - orinoco: Move context allocation after processing the skb + - qtnfmac: fix error return code in qtnf_pcie_probe() + - rsi: fix error return code in rsi_reset_card() + - cw1200: fix missing destroy_workqueue() on error in cw1200_init_common + - dmaengine: mv_xor_v2: Fix error return code in mv_xor_v2_probe() + - arm64: dts: qcom: sdm845: Limit ipa iommu streams + - leds: netxbig: add missing put_device() call in netxbig_leds_get_of_pdata() + - arm64: tegra: Fix DT binding for IO High Voltage entry + - RDMA/cma: Fix deadlock on &lock in rdma_cma_listen_on_all() error unwind + - media: siano: fix memory leak of debugfs members in smsdvb_hotplug + - platform/x86: mlx-platform: Remove PSU EEPROM from default platform + configuration + - platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform + configuration + - arm64: dts: qcom: sc7180: limit IPA iommu streams + - RDMA/hns: Avoid setting loopback indicator when smac is same as dmac + - serial: 8250-mtk: Fix reference leak in mtk8250_probe + - samples: bpf: Fix lwt_len_hist reusing previous BPF map + - media: imx214: Fix stop streaming + - mips: cdmm: fix use-after-free in mips_cdmm_bus_discover + - media: max2175: fix max2175_set_csm_mode() error code + - slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI + - drm/mediatek: Use correct aliases name for ovl + - HSI: omap_ssi: Don't jump to free ID in ssi_add_controller() + - ARM: dts: Remove non-existent i2c1 from 98dx3236 + - arm64: dts: armada-3720-turris-mox: update ethernet-phy handle name + - power: supply: bq25890: Use the correct range for IILIM register + - arm64: dts: rockchip: Set dr_mode to "host" for OTG on rk3328-roc-cc + - power: supply: max17042_battery: Fix current_{avg,now} hiding with no + current sense + - power: supply: axp288_charger: Fix HP Pavilion x2 10 DMI matching + - power: supply: bq24190_charger: fix reference leak + - genirq/irqdomain: Don't try to free an interrupt that has no mapping + - arm64: dts: ls1028a: fix ENETC PTP clock input + - arm64: dts: ls1028a: fix FlexSPI clock input + - arm64: dts: freescale: sl28: combine SPI MTD partitions + - phy: tegra: xusb: Fix usb_phy device driver field + - arm64: dts: qcom: c630: Polish i2c-hid devices + - arm64: dts: qcom: c630: Fix pinctrl pins properties + - PCI: Bounds-check command-line resource alignment requests + - PCI: Fix overflow in command-line resource alignment requests + - PCI: iproc: Fix out-of-bound array accesses + - PCI: iproc: Invalidate correct PAXB inbound windows + - arm64: dts: meson: fix spi-max-frequency on Khadas VIM2 + - arm64: dts: meson-sm1: fix typo in opp table + - soc: amlogic: canvas: add missing put_device() call in meson_canvas_get() + - scsi: pm80xx: Do not sleep in atomic context + - spi: spi-fsl-dspi: Use max_native_cs instead of num_chipselect to set + SPI_MCR + - ARM: dts: at91: at91sam9rl: fix ADC triggers + - RDMA/hns: Fix 0-length sge calculation error + - RDMA/hns: Bugfix for calculation of extended sge + - platform/x86: dell-smbios-base: Fix error return code in dell_smbios_init + - media: i2c: imx219: Selection compliance fixes + - ath11k: Fix an error handling path + - ath10k: Fix the parsing error in service available event + - ath10k: Fix an error handling path + - ath10k: Release some resources in an error handling path + - SUNRPC: rpc_wake_up() should wake up tasks in the correct order + - NFSv4.2: condition READDIR's mask for security label based on LSM state + - SUNRPC: xprt_load_transport() needs to support the netid "rdma6" + - NFSv4: Fix the alignment of page data in the getdeviceinfo reply + - net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs' + - lockd: don't use interval-based rebinding over TCP + - NFS: switch nfsiod to be an UNBOUND workqueue. + - selftests/seccomp: Update kernel config + - vfio-pci: Use io_remap_pfn_range() for PCI IO memory + - hwmon: (ina3221) Fix PM usage counter unbalance in ina3221_write_enable + - media: tvp5150: Fix wrong return value of tvp5150_parse_dt() + - media: saa7146: fix array overflow in vidioc_s_audio() + - powerpc/perf: Fix crash with is_sier_available when pmu is not set + - powerpc/64: Fix an EMIT_BUG_ENTRY in head_64.S + - powerpc/xmon: Fix build failure for 8xx + - powerpc/perf: Fix the PMU group constraints for threshold events in power10 + - clocksource/drivers/orion: Add missing clk_disable_unprepare() on error path + - clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent() + - clocksource/drivers/ingenic: Fix section mismatch + - iio: hrtimer-trigger: Mark hrtimer to expire in hard interrupt context + - libbpf: Sanitise map names before pinning + - ARM: dts: at91: sam9x60ek: remove bypass property + - ARM: dts: at91: sama5d2: map securam as device + - bpf: Fix bpf_put_raw_tracepoint()'s use of __module_address() + - selftests/bpf: Fix invalid use of strncat in test_sockmap + - pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe() + - arm64: dts: rockchip: Fix UART pull-ups on rk3328 + - memstick: r592: Fix error return in r592_probe() + - MIPS: Don't round up kernel sections size for memblock_add() + - mt76: mt7915: set fops_sta_stats.owner to THIS_MODULE + - mt76: set fops_tx_stats.owner to THIS_MODULE + - net/mlx5: Properly convey driver version to firmware + - mt76: fix memory leak if device probing fails + - mt76: fix tkip configuration for mt7615/7663 devices + - ASoC: jz4740-i2s: add missed checks for clk_get() + - dm ioctl: fix error return code in target_message + - ASoC: cros_ec_codec: fix uninitialized memory read + - ASoC: qcom: fix QDSP6 dependencies, attempt #3 + - phy: renesas: rcar-gen3-usb2: disable runtime pm in case of failure + - memory: jz4780_nemc: Fix potential NULL dereference in jz4780_nemc_probe() + - clocksource/drivers/arm_arch_timer: Use stable count reader in erratum sne + - clocksource/drivers/arm_arch_timer: Correct fault programming of + CNTKCTL_EL1.EVNTI + - cpufreq: ap806: Add missing MODULE_DEVICE_TABLE + - cpufreq: highbank: Add missing MODULE_DEVICE_TABLE + - cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE + - cpufreq: qcom: Add missing MODULE_DEVICE_TABLE + - cpufreq: st: Add missing MODULE_DEVICE_TABLE + - cpufreq: sun50i: Add missing MODULE_DEVICE_TABLE + - cpufreq: loongson1: Add missing MODULE_ALIAS + - cpufreq: scpi: Add missing MODULE_ALIAS + - cpufreq: vexpress-spc: Add missing MODULE_ALIAS + - Bluetooth: btusb: Add the missed release_firmware() in + btusb_mtk_setup_firmware() + - Bluetooth: btmtksdio: Add the missed release_firmware() in + mtk_setup_firmware() + - block/rnbd-clt: Dynamically alloc buffer for pathname & blk_symlink_name + - block/rnbd: fix a null pointer dereference on dev->blk_symlink_name + - Bluetooth: btusb: Fix detection of some fake CSR controllers with a + bcdDevice val of 0x0134 + - mtd: spi-nor: sst: fix BPn bits for the SST25VF064C + - mtd: spi-nor: ignore errors in spi_nor_unlock_all() + - mtd: spi-nor: atmel: remove global protection flag + - mtd: spi-nor: atmel: fix unlock_all() for AT25FS010/040 + - arm64: dts: meson: g12b: odroid-n2: fix PHY deassert timing requirements + - arm64: dts: meson: fix PHY deassert timing requirements + - ARM: dts: meson: fix PHY deassert timing requirements + - arm64: dts: meson: g12a: x96-max: fix PHY deassert timing requirements + - arm64: dts: meson: g12b: w400: fix PHY deassert timing requirements + - clk: fsl-sai: fix memory leak + - scsi: qedi: Fix missing destroy_workqueue() on error in __qedi_probe + - scsi: pm80xx: Fix error return in pm8001_pci_probe() + - scsi: iscsi: Fix inappropriate use of put_device() + - seq_buf: Avoid type mismatch for seq_buf_init + - scsi: fnic: Fix error return code in fnic_probe() + - platform/x86: mlx-platform: Fix item counter assignment for MSN2700, MSN24xx + systems + - platform/x86: mlx-platform: Fix item counter assignment for MSN2700/ComEx + system + - ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel + mode + - powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops + - powerpc/pseries/hibernation: remove redundant cacheinfo update + - powerpc/powermac: Fix low_sleep_handler with CONFIG_VMAP_STACK + - drm/mediatek: avoid dereferencing a null hdmi_phy on an error message + - ASoC: amd: change clk_get() to devm_clk_get() and add missed checks + - ASoC: max98390: Fix error codes in max98390_dsm_init() + - powerpc/mm: sanity_check_fault() should work for all, not only BOOK3S + - usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe + - usb: oxu210hp-hcd: Fix memory leak in oxu_create + - speakup: fix uninitialized flush_lock + - nfsd: Fix message level for normal termination + - NFSD: Fix 5 seconds delay when doing inter server copy + - nfs_common: need lock during iterate through the list + - x86/kprobes: Restore BTF if the single-stepping is cancelled + - scsi: qla2xxx: Fix N2N and NVMe connect retry failure + - platform/chrome: cros_ec_spi: Don't overwrite spi::mode + - misc: pci_endpoint_test: fix return value of error branch + - bus: fsl-mc: fix error return code in fsl_mc_object_allocate() + - s390/cio: fix use-after-free in ccw_device_destroy_console + - iwlwifi: dbg-tlv: fix old length in is_trig_data_contained() + - iwlwifi: mvm: hook up missing RX handlers + - erofs: avoid using generic_block_bmap + - can: m_can: m_can_config_endisable(): remove double clearing of clock stop + request bit + - powerpc/sstep: Emulate prefixed instructions only when CPU_FTR_ARCH_31 is + set + - powerpc/sstep: Cover new VSX instructions under CONFIG_VSX + - slimbus: qcom: fix potential NULL dereference in qcom_slim_prg_slew() + - RDMA/core: Do not indicate device ready when device enablement fails + - remoteproc: q6v5-mss: fix error handling in q6v5_pds_enable + - remoteproc: qcom: fix reference leak in adsp_start + - remoteproc: qcom: pas: fix error handling in adsp_pds_enable + - remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio() + - clk: qcom: gcc-sc7180: Use floor ops for sdcc clks + - clk: tegra: Fix duplicated SE clock entry + - mtd: rawnand: gpmi: fix reference count leak in gpmi ops + - mtd: rawnand: meson: Fix a resource leak in init + - mtd: rawnand: gpmi: Fix the random DMA timeout issue + - samples/bpf: Fix possible hang in xdpsock with multiple threads + - fs: Handle I_DONTCACHE in iput_final() instead of generic_drop_inode() + - extcon: max77693: Fix modalias string + - crypto: atmel-i2c - select CONFIG_BITREVERSE + - mac80211: don't set set TDLS STA bandwidth wider than possible + - ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control() + - irqchip/alpine-msi: Fix freeing of interrupts on allocation error path + - RDMA/hns: Limit the length of data copied between kernel and userspace + - gpiolib: irq hooks: fix recursion in gpiochip_irq_unmask + - irqchip/qcom-pdc: Fix phantom irq when changing between rising/falling + - watchdog: armada_37xx: Add missing dependency on HAS_IOMEM + - watchdog: sirfsoc: Add missing dependency on HAS_IOMEM + - watchdog: sprd: remove watchdog disable from resume fail path + - watchdog: sprd: check busy bit before new loading rather than after that + - watchdog: Fix potential dereferencing of null pointer + - ubifs: Fix error return code in ubifs_init_authentication() + - um: Monitor error events in IRQ controller + - um: tty: Fix handling of close in tty lines + - um: chan_xterm: Fix fd leak + - sunrpc: fix xs_read_xdr_buf for partial pages receive + - RDMA/mlx5: Fix MR cache memory leak + - RDMA/cma: Don't overwrite sgid_attr after device is released + - nfc: s3fwrn5: Release the nfc firmware + - powerpc/perf: Fix Threshold Event Counter Multiplier width for P10 + - powerpc/ps3: use dma_mapping_error() + - mm/gup: combine put_compound_head() and unpin_user_page() + - mm/rmap: always do TTU_IGNORE_ACCESS + - sparc: fix handling of page table constructor failure + - mm/vmalloc: Fix unlock order in s_stop() + - mm/vmalloc.c: fix kasan shadow poisoning size + - mm,memory_failure: always pin the page in madvise_inject_error + - hugetlb: fix an error code in hugetlb_reserve_pages() + - mm: don't wake kswapd prematurely when watermark boosting is disabled + - proc: fix lookup in /proc/net subdirectories after setns(2) + - checkpatch: fix unescaped left brace + - s390/test_unwind: fix CALL_ON_STACK tests + - lan743x: fix rx_napi_poll/interrupt ping-pong + - ice, xsk: clear the status bits for the next_to_use descriptor + - i40e, xsk: clear the status bits for the next_to_use descriptor + - net: dsa: qca: ar9331: fix sleeping function called from invalid context bug + - net: bcmgenet: Fix a resource leak in an error handling path in the probe + functin + - net: allwinner: Fix some resources leak in the error handling path of the + probe and in the remove function + - block/rnbd-clt: Get rid of warning regarding size argument in strlcpy + - block/rnbd-clt: Fix possible memleak + - NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read() + - net: korina: fix return value + - libnvdimm/label: Return -ENXIO for no slot in __blk_label_update + - powerpc/32s: Fix cleanup_cpu_mmu_context() compile bug + - watchdog: qcom: Avoid context switch in restart handler + - watchdog: coh901327: add COMMON_CLK dependency + - clk: ti: Fix memleak in ti_fapll_synth_setup + - pwm: zx: Add missing cleanup in error path + - pwm: lp3943: Dynamically allocate PWM chip base + - pwm: imx27: Fix overflow for bigger periods + - pwm: sun4i: Remove erroneous else branch + - tools build: Add missing libcap to test-all.bin target + - perf record: Fix memory leak when using '--user-regs=?' to list registers + - qlcnic: Fix error code in probe + - nfp: move indirect block cleanup to flower app stop callback + - virtio_ring: Cut and paste bugs in vring_create_virtqueue_packed() + - virtio_net: Fix error code in probe() + - virtio_ring: Fix two use after free bugs + - vhost scsi: fix error return code in vhost_scsi_set_endpoint() + - epoll: check for events when removing a timed out thread from the wait queue + - clk: at91: sam9x60: remove atmel,osc-bypass support + - clk: s2mps11: Fix a resource leak in error handling paths in the probe + function + - clk: sunxi-ng: Make sure divider tables have sentinel + - kconfig: fix return value of do_error_if() + - powerpc/smp: Add __init to init_big_cores() + - ARM: 9044/1: vfp: use undef hook for VFP support detection + - perf probe: Fix memory leak when synthesizing SDT probes + - io_uring: cancel reqs shouldn't kill overflow list + - Smack: Handle io_uring kernel thread privileges + - io_uring: fix io_cqring_events()'s noflush + - vfio/pci: Move dummy_resources_list init in vfio_pci_probe() + - vfio/pci/nvlink2: Do not attempt NPU2 setup on POWER8NVL NPU + - media: gspca: Fix memory leak in probe + - io_uring: fix io_wqe->work_list corruption + - io_uring: fix 0-iov read buffer select + - io_uring: fix ignoring xa_store errors + - io_uring: make ctx cancel on exit targeted to actual ctx + - media: sunxi-cir: ensure IR is handled when it is continuous + - media: netup_unidvb: Don't leak SPI master in probe error path + - media: ipu3-cio2: Remove traces of returned buffers + - media: ipu3-cio2: Return actual subdev format + - media: ipu3-cio2: Serialise access to pad format + - media: ipu3-cio2: Validate mbus format in setting subdev format + - media: ipu3-cio2: Make the field on subdev format V4L2_FIELD_NONE + - Input: cyapa_gen6 - fix out-of-bounds stack access + - ALSA: hda/ca0132 - Change Input Source enum strings. + - Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources + walks" + - ACPI: PNP: compare the string length in the matching_id() + - ALSA: hda: Fix regressions on clear and reconfig sysfs + - ALSA: hda/ca0132 - Fix AE-5 rear headphone pincfg. + - ALSA: hda/realtek: make bass spk volume adjustable on a yoga laptop + - ALSA: hda/realtek - Enable headset mic of ASUS X430UN with ALC256 + - ALSA: hda/realtek - Enable headset mic of ASUS Q524UQK with ALC255 + - ALSA: hda/realtek - Add supported for more Lenovo ALC285 Headset Button + - ALSA: pcm: oss: Fix a few more UBSAN fixes + - ALSA/hda: apply jack fixup for the Acer Veriton N4640G/N6640G/N2510G + - ALSA: hda/realtek: Add quirk for MSI-GP73 + - ALSA: hda/realtek: Apply jack fixup for Quanta NL3 + - ALSA: hda/realtek: Remove dummy lineout on Acer TravelMate P648/P658 + - ALSA: hda/realtek - Supported Dell fixed type headset + - ALSA: usb-audio: Add VID to support native DSD reproduction on FiiO devices + - ALSA: usb-audio: Disable sample read check if firmware doesn't give back + - ALSA: core: memalloc: add page alignment for iram + - s390/smp: perform initial CPU reset also for SMT siblings + - s390/kexec_file: fix diag308 subcode when loading crash kernel + - s390/idle: add missing mt_cycles calculation + - s390/idle: fix accounting with machine checks + - s390/dasd: fix hanging device offline processing + - s390/dasd: prevent inconsistent LCU device data + - s390/dasd: fix list corruption of pavgroup group list + - s390/dasd: fix list corruption of lcu list + - binder: add flag to clear buffer on txn complete + - ASoC: cx2072x: Fix doubly definitions of Playback and Capture streams + - ASoC: AMD Renoir - add DMI table to avoid the ACP mic probe (broken BIOS) + - ASoC: AMD Raven/Renoir - fix the PCI probe (PCI revision) + - staging: comedi: mf6x4: Fix AI end-of-conversion detection + - z3fold: simplify freeing slots + - z3fold: stricter locking and more careful reclaim + - perf/x86/intel: Add event constraint for CYCLE_ACTIVITY.STALLS_MEM_ANY + - perf/x86/intel: Fix rtm_abort_event encoding on Ice Lake + - powerpc/perf: Exclude kernel samples while counting events in user space. + - cpufreq: intel_pstate: Use most recent guaranteed performance values + - crypto: ecdh - avoid unaligned accesses in ecdh_set_secret() + - crypto: arm/aes-ce - work around Cortex-A57/A72 silion errata + - m68k: Fix WARNING splat in pmac_zilog driver + - EDAC/i10nm: Use readl() to access MMIO registers + - EDAC/amd64: Fix PCI component registration + - cpuset: fix race between hotplug work and later CPU offline + - USB: serial: mos7720: fix parallel-port state restore + - USB: serial: digi_acceleport: fix write-wakeup deadlocks + - USB: serial: keyspan_pda: fix dropped unthrottle interrupts + - USB: serial: keyspan_pda: fix write deadlock + - USB: serial: keyspan_pda: fix stalled writes + - USB: serial: keyspan_pda: fix write-wakeup use-after-free + - USB: serial: keyspan_pda: fix tx-unthrottle use-after-free + - USB: serial: keyspan_pda: fix write unthrottling + - btrfs: do not shorten unpin len for caching block groups + - btrfs: update last_byte_to_unpin in switch_commit_roots + - btrfs: fix race when defragmenting leads to unnecessary IO + - ext4: fix a memory leak of ext4_free_data + - ext4: fix deadlock with fs freezing and EA inodes + - ext4: don't remount read-only with errors=continue on reboot + - arm64: dts: ti: k3-am65: mark dss as dma-coherent + - KVM: arm64: Introduce handling of AArch32 TTBCR2 traps + - KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits + - KVM: SVM: Remove the call to sev_platform_status() during setup + - ARM: dts: pandaboard: fix pinmux for gpio user button of Pandaboard ES + - ARM: dts: at91: sama5d2: fix CAN message ram offset and size + - ARM: tegra: Populate OPP table for Tegra20 Ventana + - xprtrdma: Fix XDRBUF_SPARSE_PAGES support + - powerpc/32: Fix vmap stack - Properly set r1 before activating MMU on + syscall too + - powerpc: Fix incorrect stw{, ux, u, x} instructions in __set_pte_at + - powerpc/rtas: Fix typo of ibm,open-errinjct in RTAS filter + - powerpc/bitops: Fix possible undefined behaviour with fls() and fls64() + - powerpc/feature: Add CPU_FTR_NOEXECUTE to G2_LE + - powerpc/xmon: Change printk() to pr_cont() + - powerpc/8xx: Fix early debug when SMC1 is relocated + - powerpc/mm: Fix verification of MMU_FTR_TYPE_44x + - powerpc/powernv/npu: Do not attempt NPU2 setup on POWER8NVL NPU + - powerpc/powernv/memtrace: Don't leak kernel memory to user space + - powerpc/powernv/memtrace: Fix crashing the kernel when enabling concurrently + - ima: Don't modify file descriptor mode on the fly + - um: Remove use of asprinf in umid.c + - um: Fix time-travel mode + - ceph: fix race in concurrent __ceph_remove_cap invocations + - SMB3: avoid confusing warning message on mount to Azure + - SMB3.1.1: remove confusing mount warning when no SPNEGO info on negprot rsp + - SMB3.1.1: do not log warning message if server doesn't populate salt + - ubifs: wbuf: Don't leak kernel memory to flash + - jffs2: Fix GC exit abnormally + - jffs2: Fix ignoring mounting options problem during remounting + - jfs: Fix array index bounds check in dbAdjTree + - drm/panfrost: Fix job timeout handling + - platform/x86: mlx-platform: remove an unused variable + - drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor() + - drm/i915: Fix mismatch between misplaced vma check and vma insert + - iio: ad_sigma_delta: Don't put SPI transfer buffer on the stack + - spi: pxa2xx: Fix use-after-free on unbind + - spi: spi-sh: Fix use-after-free on unbind + - spi: atmel-quadspi: Fix use-after-free on unbind + - spi: spi-mtk-nor: Don't leak SPI master in probe error path + - spi: ar934x: Don't leak SPI master in probe error path + - spi: davinci: Fix use-after-free on unbind + - spi: fsl: fix use of spisel_boot signal on MPC8309 + - spi: gpio: Don't leak SPI master in probe error path + - spi: mxic: Don't leak SPI master in probe error path + - spi: npcm-fiu: Disable clock in probe error path + - spi: pic32: Don't leak DMA channels in probe error path + - spi: rb4xx: Don't leak SPI master in probe error path + - spi: sc18is602: Don't leak SPI master in probe error path + - spi: spi-geni-qcom: Fix use-after-free on unbind + - spi: spi-qcom-qspi: Fix use-after-free on unbind + - spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path + - spi: synquacer: Disable clock in probe error path + - spi: mt7621: Disable clock in probe error path + - spi: mt7621: Don't leak SPI master in probe error path + - spi: atmel-quadspi: Disable clock in probe error path + - spi: atmel-quadspi: Fix AHB memory accesses + - soc: qcom: smp2p: Safely acquire spinlock without IRQs + - mtd: parser: cmdline: Fix parsing of part-names with colons + - mtd: core: Fix refcounting for unpartitioned MTDs + - mtd: rawnand: qcom: Fix DMA sync on FLASH_STATUS register read + - mtd: rawnand: meson: fix meson_nfc_dma_buffer_release() arguments + - scsi: qla2xxx: Fix crash during driver load on big endian machines + - scsi: lpfc: Fix invalid sleeping context in lpfc_sli4_nvmet_alloc() + - scsi: lpfc: Re-fix use after free in lpfc_rq_buf_free() + - openat2: reject RESOLVE_BENEATH|RESOLVE_IN_ROOT + - iio: buffer: Fix demux update + - iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in + rockchip_saradc_resume + - iio: imu: st_lsm6dsx: fix edge-trigger interrupts + - iio:light:rpr0521: Fix timestamp alignment and prevent data leak. + - iio:light:st_uvis25: Fix timestamp alignment and prevent data leak. + - iio:magnetometer:mag3110: Fix alignment and data leak issues. + - iio:pressure:mpl3115: Force alignment of buffer + - iio:imu:bmi160: Fix too large a buffer. + - iio:imu:bmi160: Fix alignment and data leak issues + - iio:adc:ti-ads124s08: Fix buffer being too long. + - iio:adc:ti-ads124s08: Fix alignment and data leak issues. + - md/cluster: block reshape with remote resync job + - md/cluster: fix deadlock when node is doing resync job + - pinctrl: sunxi: Always call chained_irq_{enter, exit} in + sunxi_pinctrl_irq_handler + - clk: ingenic: Fix divider calculation with div tables + - clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9 + - clk: tegra: Do not return 0 on failure + - device-dax/core: Fix memory leak when rmmod dax.ko + - dma-buf/dma-resv: Respect num_fences when initializing the shared fence + list. + - driver: core: Fix list corruption after device_del() + - xen-blkback: set ring->xenblkd to NULL after kthread_stop() + - xen/xenbus: Allow watches discard events before queueing + - xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path() + - xen/xenbus/xen_bus_type: Support will_handle watch callback + - xen/xenbus: Count pending messages for each watch + - xenbus/xenbus_backend: Disallow pending watch messages + - libnvdimm/namespace: Fix reaping of invalidated block-window-namespace + labels + - platform/x86: intel-vbtn: Allow switch events on Acer Switch Alpha 12 + - tracing: Disable ftrace selftests when any tracer is running + - mt76: add back the SUPPORTS_REORDERING_BUFFER flag + - of: fix linker-section match-table corruption + - PCI: Fix pci_slot_release() NULL pointer dereference + - regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x + - remoteproc: sysmon: Ensure remote notification ordering + - thermal/drivers/cpufreq_cooling: Update cpufreq_state only if state has + changed + - rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time + - Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS" + - null_blk: Fix zone size initialization + - null_blk: Fail zone append to conventional zones + - drm/edid: fix objtool warning in drm_cvt_modes() + - x86/CPU/AMD: Save AMD NodeId as cpu_die_id + - ARM: dts: sun7i: bananapi: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun8i: r40: bananapi-m2-berry: Fix dcdc1 regulator + - ARM: dts: sun8i: v40: bananapi-m2-berry: Fix ethernet node + - pinctrl: merrifield: Set default bias in case no particular value given + - pinctrl: baytrail: Avoid clearing debounce value when turning it off + - ARM: dts: sun8i: v3s: fix GIC node memory range + - ARM: dts: sun7i: pcduino3-nano: enable RGMII RX/TX delay on PHY + - ARM: dts: imx6qdl-wandboard-revd1: Remove PAD_GPIO_6 from enetgrp + - ARM: dts: imx6qdl-kontron-samx6i: fix I2C_PM scl pin + - gpio: zynq: fix reference leak in zynq_gpio functions + - gpio: mvebu: fix potential user-after-free on probe + - scsi: bnx2i: Requires MMU + - xsk: Replace datagram_poll by sock_poll_wait + - can: softing: softing_netdev_open(): fix error handling + - clk: renesas: r9a06g032: Drop __packed for portability + - pinctrl: aspeed: Fix GPIO requests on pass-through banks + - netfilter: x_tables: Switch synchronization to RCU + - netfilter: nft_compat: make sure xtables destructors have run + - netfilter: nft_dynset: fix timeouts later than 23 days + - afs: Fix memory leak when mounting with multiple source parameters + - gpio: eic-sprd: break loop when getting NULL device resource + - netfilter: nft_ct: Remove confirmation check for NFT_CT_ID + - selftests/bpf/test_offload.py: Reset ethtool features after failed setting + - RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait + - i40e: optimise prefetch page refcount + - i40e: avoid premature Rx buffer reuse + - ixgbe: avoid premature Rx buffer reuse + - selftests: fix poll error in udpgro.sh + - net: mvpp2: add mvpp2_phylink_to_port() helper + - drm/tegra: replace idr_init() by idr_init_base() + - kernel/cpu: add arch override for clear_tasks_mm_cpumask() mm handling + - drm/tegra: sor: Disable clocks on error in tegra_sor_init() + - habanalabs: put devices before driver removal + - arm64: syscall: exit userspace before unmasking exceptions + - vxlan: Add needed_headroom for lower device + - vxlan: Copy needed_tailroom from lowerdev + - scsi: mpt3sas: Increase IOCInit request timeout to 30s + - dm table: Remove BUG_ON(in_interrupt()) + - iwlwifi: pcie: add one missing entry for AX210 + - drm/amd/display: Init clock value by current vbios CLKs + - perf/x86/intel: Check PEBS status correctly + - kbuild: avoid split lines in .mod files + - ARM: sunxi: Add machine match for the Allwinner V3 SoC + - cfg80211: initialize rekey_data + - fix namespaced fscaps when !CONFIG_SECURITY + - lwt: Disable BH too in run_lwt_bpf() + - drm/amd/display: Prevent bandwidth overflow + - drm/amdkfd: Fix leak in dmabuf import + - Input: cros_ec_keyb - send 'scancodes' in addition to key events + - initramfs: fix clang build failure + - Input: goodix - add upside-down quirk for Teclast X98 Pro tablet + + * Groovy update: upstream stable patchset 2021-01-13 (LP: #1911476) + - Kbuild: do not emit debug info for assembly with LLVM_IAS=1 + - mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING + - [Config] updateconfigs for ZSMALLOC_PGTABLE_MAPPING + - kprobes: Remove NMI context check + - kprobes: Tell lockdep about kprobe nesting + - ASoC: Intel: bytcr_rt5640: Fix HP Pavilion x2 Detachable quirks + - tools/bootconfig: Fix to check the write failure correctly + - net, xsk: Avoid taking multiple skbuff references + - bpftool: Fix error return value in build_btf_type_table + - vhost-vdpa: fix page pinning leakage in error path (rework) + - powerpc/64s: Fix hash ISA v3.0 TLBIEL instruction generation + - batman-adv: Consider fragmentation for needed_headroom + - batman-adv: Reserve needed_*room for fragments + - batman-adv: Don't always reallocate the fragmentation skb head + - ipvs: fix possible memory leak in ip_vs_control_net_init + - ibmvnic: handle inconsistent login with reset + - ibmvnic: stop free_all_rwi on failed reset + - ibmvnic: avoid memset null scrq msgs + - ibmvnic: delay next reset if hard reset fails + - ibmvnic: track pending login + - ibmvnic: send_login should check for crq errors + - ibmvnic: reduce wait for completion time + - drm/rockchip: Avoid uninitialized use of endpoint id in LVDS + - drm/panel: sony-acx565akm: Fix race condition in probe + - can: m_can: tcan4x5x_can_probe(): fix error path: remove erroneous + clk_disable_unprepare() + - can: sja1000: sja1000_err(): don't count arbitration lose as an error + - can: sun4i_can: sun4i_can_err(): don't count arbitration lose as an error + - can: c_can: c_can_power_up(): fix error handling + - can: kvaser_pciefd: kvaser_pciefd_open(): fix error handling + - samples/ftrace: Mark my_tramp[12]? global + - scsi: storvsc: Fix error return in storvsc_probe() + - net: broadcom CNIC: requires MMU + - iwlwifi: pcie: invert values of NO_160 device config entries + - perf/x86/intel: Fix a warning on x86_pmu_stop() with large PEBS + - zlib: export S390 symbols for zlib modules + - phy: usb: Fix incorrect clearing of tca_drv_sel bit in SETUP reg for 7211 + - arm64: dts: rockchip: Remove system-power-controller from pmic on Odroid Go + Advance + - iwlwifi: pcie: limit memory read spin time + - arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399 boards. + - arm64: dts: rockchip: Reorder LED triggers from mmc devices on rk3399-roc- + pc. + - iwlwifi: sta: set max HE max A-MPDU according to HE capa + - iwlwifi: pcie: set LTR to avoid completion timeout + - iwlwifi: mvm: fix kernel panic in case of assert during CSA + - powerpc: Drop -me200 addition to build flags + - arm64: dts: broadcom: clear the warnings caused by empty dma-ranges + - ARC: stack unwinding: don't assume non-current task is sleeping + - scsi: ufs: Fix unexpected values from ufshcd_read_desc_param() + - scsi: ufs: Make sure clk scaling happens only when HBA is runtime ACTIVE + - interconnect: qcom: msm8916: Remove rpm-ids from non-RPM nodes + - interconnect: qcom: qcs404: Remove GPU and display RPM IDs + - ibmvnic: skip tx timeout reset while in resetting + - irqchip/gic-v3-its: Unconditionally save/restore the ITS state on suspend + - drm/exynos: depend on COMMON_CLK to fix compile tests + - spi: spi-nxp-fspi: fix fspi panic by unexpected interrupts + - arm-smmu-qcom: Ensure the qcom_scm driver has finished probing + - btrfs: do nofs allocations when adding and removing qgroup relations + - btrfs: fix lockdep splat when enabling and disabling qgroups + - soc: fsl: dpio: Get the cpumask through cpumask_of(cpu) + - intel_idle: Fix intel_idle() vs tracing + - arm64: tegra: Disable the ACONNECT for Jetson TX2 + - platform/x86: thinkpad_acpi: add P1 gen3 second fan support + - platform/x86: thinkpad_acpi: Do not report SW_TABLET_MODE on Yoga 11e + - platform/x86: thinkpad_acpi: Add BAT1 is primary battery quirk for Thinkpad + Yoga 11e 4th gen + - platform/x86: thinkpad_acpi: Whitelist P15 firmware for dual fan control + - platform/x86: acer-wmi: add automatic keyboard background light toggle key + as KEY_LIGHTS_TOGGLE + - platform/x86: intel-vbtn: Support for tablet mode on HP Pavilion 13 x360 PC + - platform/x86: touchscreen_dmi: Add info for the Predia Basic tablet + - platform/x86: touchscreen_dmi: Add info for the Irbis TW118 tablet + - can: m_can: m_can_dev_setup(): add support for bosch mcan version 3.3.0 + - s390: fix irq state tracing + - intel_idle: Build fix + - media: pulse8-cec: fix duplicate free at disconnect or probe error + - media: pulse8-cec: add support for FW v10 and up + - mmc: mediatek: Extend recheck_sdio_irq fix to more variants + - ktest.pl: Fix incorrect reboot for grub2bls + - xen: add helpers for caching grant mapping pages + - Input: cm109 - do not stomp on control URB + - Input: i8042 - add Acer laptops to the i8042 reset list + - pinctrl: jasperlake: Fix HOSTSW_OWN offset + - mmc: sdhci-of-arasan: Fix clock registration error for Keem Bay SOC + - mmc: block: Fixup condition for CMD13 polling for RPMB requests + - drm/amdgpu/disply: set num_crtc earlier + - drm/i915/gem: Propagate error from cancelled submit due to context closure + - drm/i915/display/dp: Compute the correct slice count for VDSC on DP + - drm/i915/gt: Declare gen9 has 64 mocs entries! + - drm/i915/gt: Ignore repeated attempts to suspend request flow across reset + - drm/i915/gt: Cancel the preemption timeout on responding to it + - kbuild: avoid static_assert for genksyms + - proc: use untagged_addr() for pagemap_read addresses + - zonefs: fix page reference and BIO leak + - scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()" + - x86/mm/mem_encrypt: Fix definition of PMD_FLAGS_DEC_WP + - x86/membarrier: Get rid of a dubious optimization + - x86/apic/vector: Fix ordering in vector assignment + - x86/kprobes: Fix optprobe to detect INT3 padding correctly + - compiler.h: fix barrier_data() on clang + - ptrace: Prevent kernel-infoleak in ptrace_get_syscall_info() + - net/sched: fq_pie: initialize timer earlier in fq_pie_init() + - net: ipa: pass the correct size when freeing DMA memory + - ipv4: fix error return code in rtm_to_fib_config() + - mac80211: mesh: fix mesh_pathtbl_init() error path + - net: bridge: vlan: fix error return code in __vlan_add() + - vrf: packets with lladdr src needs dst at input with orig_iif when needs + strict + - net: hns3: remove a misused pragma packed + - udp: fix the proto value passed to ip_protocol_deliver_rcu for the segments + - enetc: Fix reporting of h/w packet counters + - bridge: Fix a deadlock when enabling multicast snooping + - mptcp: print new line in mptcp_seq_show() if mptcp isn't in use + - net: stmmac: dwmac-meson8b: fix mask definition of the m250_sel mux + - net: stmmac: start phylink instance before stmmac_hw_setup() + - net: stmmac: free tx skb buffer in stmmac_resume() + - net: stmmac: delete the eee_ctrl_timer after napi disabled + - net: stmmac: overwrite the dma_cap.addr64 according to HW design + - net: ll_temac: Fix potential NULL dereference in temac_probe() + - tcp: select sane initial rcvq_space.space for big MSS + - e1000e: fix S0ix flow to allow S0i3.2 subset entry + - ethtool: fix stack overflow in ethnl_parse_bitset() + - tcp: fix cwnd-limited bug for TSO deferral where we send nothing + - net: flow_offload: Fix memory leak for indirect flow block + - net/mlx4_en: Avoid scheduling restart task if it is already running + - net/mlx4_en: Handle TX error CQE + - net: sched: Fix dump of MPLS_OPT_LSE_LABEL attribute in cls_flower + - ch_ktls: fix build warning for ipv4-only config + - lan743x: fix for potential NULL pointer dereference with bare card + - net: stmmac: increase the timeout for dma reset + - net: tipc: prevent possible null deref of link + - ktest.pl: If size of log is too big to email, email error message + - USB: dummy-hcd: Fix uninitialized array use in init() + - USB: add RESET_RESUME quirk for Snapscan 1212 + - ALSA: usb-audio: Fix potential out-of-bounds shift + - ALSA: usb-audio: Fix control 'access overflow' errors from chmap + - xhci: Give USB2 ports time to enter U3 in bus suspend + - xhci-pci: Allow host runtime PM as default for Intel Alpine Ridge LP + - xhci-pci: Allow host runtime PM as default for Intel Maple Ridge xHCI + - USB: UAS: introduce a quirk to set no_write_same + - USB: sisusbvga: Make console support depend on BROKEN + - [Config] updateconfigs for USB_SISUSBVGA_CON + - ALSA: pcm: oss: Fix potential out-of-bounds shift + - serial: 8250_omap: Avoid FIFO corruption caused by MDR1 access + - KVM: mmu: Fix SPTE encoding of MMIO generation upper half + - membarrier: Explicitly sync remote cores when SYNC_CORE is requested + - x86/resctrl: Remove unused struct mbm_state::chunks_bw + - x86/resctrl: Fix incorrect local bandwidth when mba_sc is enabled + + * MSFT Touchpad not working on Lenovo Legion-5 15ARH05 (LP: #1887190) // + Groovy update: upstream stable patchset 2021-01-13 (LP: #1911476) + - pinctrl: amd: remove debounce filter setting in IRQ type setting + + * Groovy update: upstream stable patchset 2021-01-12 (LP: #1911235) + - powerpc: Only include kup-radix.h for 64-bit Book3S + - leds: lm3697: Fix out-of-bound access + - Input: sunkbd - avoid use-after-free in teardown paths + - mac80211: always wind down STA state + - can: proc: can_remove_proc(): silence remove_proc_entry warning + - powerpc/smp: Call rcu_cpu_starting() earlier + - KVM: x86: clflushopt should be treated as a no-op by emulation + - ACPI: GED: fix -Wformat + - net: lantiq: Add locking for TX DMA channel + - ah6: fix error return code in ah6_input() + - atm: nicstar: Unmap DMA on send error + - bnxt_en: read EEPROM A2h address using page 0 + - devlink: Add missing genlmsg_cancel() in devlink_nl_sb_port_pool_fill() + - enetc: Workaround for MDIO register access issue + - Exempt multicast addresses from five-second neighbor lifetime + - inet_diag: Fix error path to cancel the meseage in inet_req_diag_fill() + - ipv6: Fix error path to cancel the meseage + - lan743x: fix issue causing intermittent kernel log warnings + - lan743x: prevent entire kernel HANG on open, for some platforms + - mlxsw: core: Use variable timeout for EMAD retries + - net: b44: fix error return code in b44_init_one() + - net: bridge: add missing counters to ndo_get_stats64 callback + - netdevsim: set .owner to THIS_MODULE + - net: dsa: mv88e6xxx: Avoid VTU corruption on 6097 + - net: ethernet: mtk-star-emac: fix error return code in mtk_star_enable() + - net: ethernet: mtk-star-emac: return ok when xmit drops + - net: ethernet: ti: am65-cpts: update ret when ptp_clock is ERROR + - net: ethernet: ti: cpsw: fix cpts irq after suspend + - net: ethernet: ti: cpsw: fix error return code in cpsw_probe() + - net: ftgmac100: Fix crash when removing driver + - net: Have netpoll bring-up DSA management interface + - net: ipa: lock when freeing transaction + - netlabel: fix our progress tracking in netlbl_unlabel_staticlist() + - netlabel: fix an uninitialized warning in netlbl_unlabel_staticlist() + - net: lantiq: Wait for the GPHY firmware to be ready + - net/mlx4_core: Fix init_hca fields offset + - net/mlx5e: Fix refcount leak on kTLS RX resync + - net/ncsi: Fix netlink registration + - net: phy: mscc: remove non-MACSec compatible phy + - net: qualcomm: rmnet: Fix incorrect receive packet handling during cleanup + - net/smc: fix direct access to ib_gid_addr->ndev in smc_ib_determine_gid() + - net: stmmac: Use rtnl_lock/unlock on netif_set_real_num_rx_queues() call + - net/tls: fix corrupted data in recvmsg + - net: x25: Increase refcnt of "struct x25_neigh" in x25_rx_call_request + - page_frag: Recover from memory pressure + - qed: fix error return code in qed_iwarp_ll2_start() + - qed: fix ILT configuration of SRC block + - qlcnic: fix error return code in qlcnic_83xx_restart_hw() + - sctp: change to hold/put transport for proto_unreach_timer + - tcp: only postpone PROBE_RTT if RTT is < current min_rtt estimate + - vsock: forward all packets to the host when no H2G is registered + - net/mlx5e: Fix check if netdev is bond slave + - net/mlx5: Add handling of port type in rule deletion + - net/mlx5: Clear bw_share upon VF disable + - net/mlx5: Disable QoS when min_rates on all VFs are zero + - PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter + - net: fec: Fix reference count leak in fec series ops + - net/tls: Fix wrong record sn in async mode of device resync + - net: usb: qmi_wwan: Set DTR quirk for MR400 + - Revert "Revert "gpio: omap: Fix lost edge wake-up interrupts"" + - tools, bpftool: Avoid array index warnings. + - habanalabs/gaudi: mask WDT error in QMAN + - pinctrl: rockchip: enable gpio pclk for rockchip_gpio_to_irq + - scsi: ufs: Fix unbalanced scsi_block_reqs_cnt caused by ufshcd_hold() + - scsi: ufs: Try to save power mode change and UIC cmd completion timeout + - pinctrl: mcp23s08: Print error message when regmap init fails + - selftests: kvm: Fix the segment descriptor layout to match the actual layout + - ACPI: button: Add DMI quirk for Medion Akoya E2228T + - arm64: errata: Fix handling of 1418040 with late CPU onlining + - arm64: psci: Avoid printing in cpu_psci_cpu_die() + - arm64: smp: Tell RCU about CPUs that fail to come online + - vfs: remove lockdep bogosity in __sb_start_write + - gfs2: fix possible reference leak in gfs2_check_blk_type + - hwmon: (pwm-fan) Fix RPM calculation + - gfs2: Fix case in which ail writes are done to jdata holes + - arm64: Add MIDR value for KRYO2XX gold/silver CPU cores + - arm64: kpti: Add KRYO2XX gold/silver CPU cores to kpti safelist + - arm64: cpu_errata: Apply Erratum 845719 to KRYO2XX Silver + - arm64: dts: allwinner: beelink-gs1: Enable both RGMII RX/TX delay + - arm64: dts: allwinner: Pine H64: Enable both RGMII RX/TX delay + - arm64: dts: allwinner: a64: OrangePi Win: Fix ethernet node + - arm64: dts: allwinner: a64: Pine64 Plus: Fix ethernet node + - arm64: dts: allwinner: h5: OrangePi PC2: Fix ethernet node + - ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix ethernet node + - Revert "arm: sun8i: orangepi-pc-plus: Set EMAC activity LEDs to active high" + - ARM: dts: sun6i: a31-hummingbird: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun7i: cubietruck: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun7i: bananapi-m1-plus: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun8i: h3: orangepi-plus2e: Enable RGMII RX/TX delay on Ethernet + PHY + - ARM: dts: sun8i: a83t: Enable both RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun9i: Enable both RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sunxi: bananapi-m2-plus: Enable RGMII RX/TX delay on Ethernet PHY + - arm64: dts: allwinner: h5: libretech-all-h5-cc: Enable RGMII RX/TX delay on + PHY + - arm64: dts: allwinner: a64: bananapi-m64: Enable RGMII RX/TX delay on PHY + - Input: adxl34x - clean up a data type in adxl34x_probe() + - MIPS: export has_transparent_hugepage() for modules + - dmaengine: idxd: fix wq config registers offset programming + - arm64: dts: allwinner: h5: OrangePi Prime: Fix ethernet node + - arm64: dts: imx8mm-beacon-som: Fix Choppy BT audio + - arm64: dts imx8mn: Remove non-existent USB OTG2 + - arm: dts: imx6qdl-udoo: fix rgmii phy-mode for ksz9031 phy + - ARM: dts: vf610-zii-dev-rev-b: Fix MDIO over clocking + - swiotlb: using SIZE_MAX needs limits.h included + - tee: amdtee: fix memory leak due to reset of global shm list + - tee: amdtee: synchronize access to shm list + - dmaengine: xilinx_dma: Fix usage of xilinx_aximcdma_tx_segment + - dmaengine: xilinx_dma: Fix SG capability check for MCDMA + - ARM: dts: stm32: Fix TA3-GPIO-C key on STM32MP1 DHCOM PDK2 + - ARM: dts: stm32: Fix LED5 on STM32MP1 DHCOM PDK2 + - ARM: dts: stm32: Define VIO regulator supply on DHCOM + - ARM: dts: stm32: Enable thermal sensor support on stm32mp15xx-dhcor + - ARM: dts: stm32: Keep VDDA LDO1 always on on DHCOM + - arm64: dts: imx8mm: fix voltage for 1.6GHz CPU operating point + - ARM: dts: imx50-evk: Fix the chip select 1 IOMUX + - dmaengine: ti: omap-dma: Block PM if SDMA is busy to fix audio + - kunit: tool: unmark test_data as binary blobs + - rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled + - spi: fix client driver breakages when using GPIO descriptors + - Input: resistive-adc-touch - fix kconfig dependency on IIO_BUFFER + - rfkill: Fix use-after-free in rfkill_resume() + - RDMA/pvrdma: Fix missing kfree() in pvrdma_register_device() + - [Config] update config for INFINIBAND_VIRT_DMA + - RMDA/sw: Don't allow drivers using dma_virt_ops on highmem configs + - perf lock: Correct field name "flags" + - perf lock: Don't free "lock_seq_stat" if read_count isn't zero + - SUNRPC: Fix oops in the rpc_xdr_buf event class + - drm: bridge: dw-hdmi: Avoid resetting force in the detect function + - tools, bpftool: Add missing close before bpftool net attach exit + - IB/hfi1: Fix error return code in hfi1_init_dd() + - ip_tunnels: Set tunnel option flag when tunnel metadata is present + - can: af_can: prevent potential access of uninitialized member in can_rcv() + - can: af_can: prevent potential access of uninitialized member in canfd_rcv() + - can: dev: can_restart(): post buffer from the right context + - can: ti_hecc: Fix memleak in ti_hecc_probe + - can: mcba_usb: mcba_usb_start_xmit(): first fill skb, then pass to + can_put_echo_skb() + - can: peak_usb: fix potential integer overflow on shift of a int + - can: flexcan: fix failure handling of pm_runtime_get_sync() + - can: tcan4x5x: replace depends on REGMAP_SPI with depends on SPI + - can: tcan4x5x: tcan4x5x_can_probe(): add missing error checking for + devm_regmap_init() + - can: tcan4x5x: tcan4x5x_can_remove(): fix order of deregistration + - can: m_can: m_can_handle_state_change(): fix state change + - can: m_can: m_can_class_free_dev(): introduce new function + - can: m_can: Fix freeing of can device from peripherials + - can: m_can: m_can_stop(): set device to software init mode before closing + - dmaengine: idxd: fix mapping of portal size + - ASoC: qcom: lpass-platform: Fix memory leak + - selftests/bpf: Fix error return code in run_getsockopt_test() + - MIPS: Alchemy: Fix memleak in alchemy_clk_setup_cpu + - drm/sun4i: dw-hdmi: fix error return code in sun8i_dw_hdmi_bind() + - net/mlx5: E-Switch, Fail mlx5_esw_modify_vport_rate if qos disabled + - bpf, sockmap: Fix partial copy_page_to_iter so progress can still be made + - bpf, sockmap: Ensure SO_RCVBUF memory is observed on ingress redirect + - can: kvaser_pciefd: Fix KCAN bittiming limits + - can: kvaser_usb: kvaser_usb_hydra: Fix KCAN bittiming limits + - dmaengine: fix error codes in channel_register() + - iommu/vt-d: Move intel_iommu_gfx_mapped to Intel IOMMU header + - iommu/vt-d: Avoid panic if iommu init fails in tboot system + - can: flexcan: flexcan_chip_start(): fix erroneous + flexcan_transceiver_enable() during bus-off recovery + - can: m_can: process interrupt only when not runtime suspended + - xfs: fix the minrecs logic when dealing with inode root child blocks + - xfs: strengthen rmap record flags checking + - xfs: directory scrub should check the null bestfree entries too + - xfs: ensure inobt record walks always make forward progress + - xfs: return corresponding errcode if xfs_initialize_perag() fail + - ASOC: Intel: kbl_rt5663_rt5514_max98927: Do not try to disable disabled + clock + - regulator: ti-abb: Fix array out of bound read access on the first + transition + - libbpf: Fix VERSIONED_SYM_COUNT number parsing + - lib/strncpy_from_user.c: Mask out bytes after NUL terminator. + - fail_function: Remove a redundant mutex unlock + - xfs: revert "xfs: fix rmap key and record comparison functions" + - bpf, sockmap: Skb verdict SK_PASS to self already checked rmem limits + - bpf, sockmap: On receive programs try to fast track SK_PASS ingress + - bpf, sockmap: Use truesize with sk_rmem_schedule() + - bpf, sockmap: Avoid returning unneeded EAGAIN when redirecting to self + - efi/arm: set HSCTLR Thumb2 bit correctly for HVC calls from HYP + - counter/ti-eqep: Fix regmap max_register + - efi/x86: Free efi_pgd with free_pages() + - sched/fair: Fix overutilized update in enqueue_task_fair() + - sched: Fix data-race in wakeup + - sched: Fix rq->nr_iowait ordering + - libfs: fix error cast of negative value in simple_attr_write() + - afs: Fix speculative status fetch going out of order wrt to modifications + - HID: logitech-hidpp: Add PID for MX Anywhere 2 + - HID: mcp2221: Fix GPIO output handling + - HID: logitech-dj: Handle quad/bluetooth keyboards with a builtin trackpad + - HID: logitech-dj: Fix Dinovo Mini when paired with a MX5x00 receiver + - speakup: Do not let the line discipline be used several times + - ALSA: firewire: Clean up a locking issue in copy_resp_to_buf() + - ALSA: usb-audio: Add delay quirk for all Logitech USB devices + - ALSA: ctl: fix error path at adding user-defined element set + - ALSA: mixart: Fix mutex deadlock + - ALSA: hda/realtek - Add supported for Lenovo ThinkPad Headset Button + - ALSA: hda/realtek - Add supported mute Led for HP + - ALSA: hda/realtek: Add some Clove SSID in the ALC293(ALC1220) + - ALSA: hda/realtek - HP Headset Mic can't detect after boot + - tty: serial: imx: fix potential deadlock + - tty: serial: imx: keep console clocks always on + - HID: logitech-dj: Fix an error in mse_bluetooth_descriptor + - efivarfs: fix memory leak in efivarfs_create() + - staging: rtl8723bs: Add 024c:0627 to the list of SDIO device-ids + - staging: mt7621-pci: avoid to request pci bus resources + - iio: light: fix kconfig dependency bug for VCNL4035 + - ext4: fix bogus warning in ext4_update_dx_flag() + - xfs: fix forkoff miscalculation related to XFS_LITINO(mp) + - ACPI: fan: Initialize performance state sysfs attribute + - iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum + - iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet- + mode + - iio: adc: mediatek: fix unset field + - iio: cros_ec: Use default frequencies when EC returns invalid information + - iio: imu: st_lsm6dsx: set 10ms as min shub slave timeout + - iio/adc: ingenic: Fix battery VREF for JZ4770 SoC + - iio: adc: stm32-adc: fix a regression when using dma and irq + - serial: ar933x_uart: disable clk on error handling path in probe + - arm64: dts: agilex/stratix10: Fix qspi node compatible + - spi: lpspi: Fix use-after-free on unbind + - spi: Introduce device-managed SPI controller allocation + - spi: npcm-fiu: Don't leak SPI master in probe error path + - spi: bcm2835aux: Fix use-after-free on unbind + - regulator: pfuze100: limit pfuze-support-disable-sw to pfuze{100,200} + - regulator: fix memory leak with repeated set_machine_constraints() + - regulator: avoid resolve_supply() infinite recursion + - regulator: workaround self-referent regulators + - gfs2: Fix regression in freeze_go_sync + - xtensa: fix TLBTEMP area placement + - xtensa: disable preemption around cache alias management calls + - mac80211: minstrel: remove deferred sampling code + - mac80211: minstrel: fix tx status processing corner case + - mac80211: free sta in sta_info_insert_finish() on errors + - s390: fix system call exit path + - s390/cpum_sf.c: fix file permission for cpum_sfb_size + - s390/dasd: fix null pointer dereference for ERP requests + - Drivers: hv: vmbus: Allow cleanup of VMBUS_CONNECT_CPU if disconnected + - drm/amd/display: Add missing pflip irq for dcn2.0 + - drm/i915: Handle max_bpc==16 + - mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel + controllers + - mmc: sdhci-of-arasan: Allow configuring zero tap values + - mmc: sdhci-of-arasan: Use Mask writes for Tap delays + - mmc: sdhci-of-arasan: Issue DLL reset explicitly + - ptrace: Set PF_SUPERPRIV when checking capability + - seccomp: Set PF_SUPERPRIV when checking capability + - x86/microcode/intel: Check patch signature before saving microcode for early + loading + - mm: fix readahead_page_batch for retry entries + - mm: memcg/slab: fix root memcg vmstats + - mm/userfaultfd: do not access vma->vm_mm after calling handle_userfault() + - io_uring: get an active ref_node from files_data + - io_uring: order refnode recycling + - spi: bcm-qspi: Fix use-after-free on unbind + - spi: bcm2835: Fix use-after-free on unbind + - ipv4: use IS_ENABLED instead of ifdef + - IB/hfi1: Ensure correct mm is used at all times + - RDMA/i40iw: Address an mmap handler exploit in i40iw + - btrfs: tree-checker: add missing return after error in root_item + - btrfs: tree-checker: add missing returns after data_ref alignment checks + - btrfs: don't access possibly stale fs_info data for printing duplicate + device + - btrfs: fix lockdep splat when reading qgroup config on mount + - mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback) + - smb3: Call cifs reconnect from demultiplex thread + - smb3: Avoid Mid pending list corruption + - smb3: Handle error case during offload read path + - cifs: fix a memleak with modefromsid + - powerpc/64s: Fix KVM system reset handling when CONFIG_PPC_PSERIES=y + - powerpc/64s/exception: KVM Fix for host DSI being taken in HPT guest MMU + context + - KVM: PPC: Book3S HV: XIVE: Fix possible oops when accessing ESB page + - KVM: arm64: vgic-v3: Drop the reporting of GICR_TYPER.Last for userspace + - KVM: x86: handle !lapic_in_kernel case in kvm_cpu_*_extint + - KVM: x86: Fix split-irqchip vs interrupt injection window request + - iommu/vt-d: Don't read VCCAP register unless it exists + - firmware: xilinx: Use hash-table for api feature check + - trace: fix potenial dangerous pointer + - arm64: pgtable: Fix pte_accessible() + - arm64: pgtable: Ensure dirty bit is preserved across pte_wrprotect() + - drm/amd/amdgpu: fix null pointer in runtime pm + - drm/amd/display: Avoid HDCP initialization in devices without output + - HID: uclogic: Add ID for Trust Flex Design Tablet + - HID: ite: Replace ABS_MISC 120/121 events with touchpad on/off keypresses + - HID: cypress: Support Varmilo Keyboards' media hotkeys + - HID: add support for Sega Saturn + - Input: i8042 - allow insmod to succeed on devices without an i8042 + controller + - HID: hid-sensor-hub: Fix issue with devices with no report ID + - staging: ralink-gdma: fix kconfig dependency bug for DMA_RALINK + - HID: add HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE for Gamevice devices + - dmaengine: xilinx_dma: use readl_poll_timeout_atomic variant + - x86/xen: don't unbind uninitialized lock_kicker_irq + - kunit: fix display of failed expectations for strings + - HID: logitech-hidpp: Add HIDPP_CONSUMER_VENDOR_KEYS quirk for the Dinovo + Edge + - HID: Add Logitech Dinovo Edge battery quirk + - proc: don't allow async path resolution of /proc/self components + - nvme: free sq/cq dbbuf pointers when dbbuf set fails + - net: stmmac: dwmac_lib: enlarge dma reset timeout + - vdpasim: fix "mac_pton" undefined error + - vhost: add helper to check if a vq has been setup + - vhost scsi: alloc cmds per vq instead of session + - vhost scsi: fix cmd completion race + - cpuidle: tegra: Annotate tegra_pm_set_cpu_in_lp2() with RCU_NONIDLE + - dmaengine: pl330: _prep_dma_memcpy: Fix wrong burst size + - scsi: libiscsi: Fix NOP race condition + - scsi: target: iscsi: Fix cmd abort fabric stop race + - perf/x86: fix sysfs type mismatches + - xtensa: uaccess: Add missing __user to strncpy_from_user() prototype + - x86/dumpstack: Do not try to access user space code of other tasks + - net: dsa: mv88e6xxx: Wait for EEPROM done after HW reset + - bus: ti-sysc: Fix reset status check for modules with quirks + - bus: ti-sysc: Fix bogus resetdone warning on enable for cpsw + - ARM: OMAP2+: Manage MPU state properly for omap_enter_idle_coupled() + - phy: tegra: xusb: Fix dangling pointer on probe failure + - iwlwifi: mvm: use the HOT_SPOT_CMD to cancel an AUX ROC + - iwlwifi: mvm: properly cancel a session protection for P2P + - iwlwifi: mvm: write queue_sync_state only for sync + - KVM: s390: pv: Mark mm as protected after the set secure parameters and + improve cleanup + - batman-adv: set .owner to THIS_MODULE + - usb: cdns3: gadget: fix some endian issues + - usb: cdns3: gadget: calculate TD_SIZE based on TD + - phy: qualcomm: usb: Fix SuperSpeed PHY OF dependency + - phy: qualcomm: Fix 28 nm Hi-Speed USB PHY OF dependency + - arch: pgtable: define MAX_POSSIBLE_PHYSMEM_BITS where needed + - bus: ti-sysc: suppress err msg for timers used as clockevent/source + - ARM: dts: dra76x: m_can: fix order of clocks + - scsi: ufs: Fix race between shutdown and runtime resume flow + - bnxt_en: fix error return code in bnxt_init_one() + - bnxt_en: fix error return code in bnxt_init_board() + - video: hyperv_fb: Fix the cache type when mapping the VRAM + - bnxt_en: Release PCI regions when DMA mask setup fails during probe. + - block/keyslot-manager: prevent crash when num_slots=1 + - cxgb4: fix the panic caused by non smac rewrite + - dpaa2-eth: select XGMAC_MDIO for MDIO bus support + - s390/qeth: make af_iucv TX notification call more robust + - s390/qeth: fix af_iucv notification race + - s390/qeth: fix tear down of async TX buffers + - drm/mediatek: dsi: Modify horizontal front/back porch byte formula + - bonding: wait for sysfs kobject destruction before freeing struct slave + - ibmvnic: fix call_netdevice_notifiers in do_reset + - ibmvnic: notify peers when failover and migration happen + - powerpc/64s: Fix allnoconfig build since uaccess flush + - iommu: Check return of __iommu_attach_device() + - IB/mthca: fix return value of error branch in mthca_init_cq() + - i40e: Fix removing driver while bare-metal VFs pass traffic + - firmware: xilinx: Fix SD DLL node reset issue + - io_uring: fix shift-out-of-bounds when round up cq size + - nfc: s3fwrn5: use signed integer for parsing GPIO numbers + - net: ena: handle bad request id in ena_netdev + - net: ena: set initial DMA width to avoid intel iommu issue + - net: ena: fix packet's addresses for rx_offset feature + - ibmvnic: fix NULL pointer dereference in reset_sub_crq_queues + - ibmvnic: fix NULL pointer dereference in ibmvic_reset_crq + - ibmvnic: enhance resetting status check during module exit + - optee: add writeback to valid memory type + - x86/tboot: Don't disable swiotlb when iommu is forced on + - arm64: tegra: Wrong AON HSP reg property size + - efi/efivars: Set generic ops before loading SSDT + - efivarfs: revert "fix memory leak in efivarfs_create()" + - efi: EFI_EARLYCON should depend on EFI + - riscv: Explicitly specify the build id style in vDSO Makefile again + - RISC-V: Add missing jump label initialization + - RISC-V: fix barrier() use in + - net: stmmac: fix incorrect merge of patch upstream + - enetc: Let the hardware auto-advance the taprio base-time of 0 + - drm/nouveau: fix relocations applying logic and a double-free + - can: gs_usb: fix endianess problem with candleLight firmware + - platform/x86: thinkpad_acpi: Send tablet mode switch at wakeup time + - platform/x86: toshiba_acpi: Fix the wrong variable assignment + - RDMA/hns: Fix wrong field of SRQ number the device supports + - RDMA/hns: Fix retry_cnt and rnr_cnt when querying QP + - RDMA/hns: Bugfix for memory window mtpt configuration + - can: m_can: m_can_open(): remove IRQF_TRIGGER_FALLING from + request_threaded_irq()'s flags + - can: m_can: fix nominal bitiming tseg2 min for version >= 3.1 + - perf record: Synthesize cgroup events only if needed + - perf stat: Use proper cpu for shadow stats + - perf probe: Fix to die_entrypc() returns error correctly + - spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe + - USB: core: Change %pK for __user pointers to %px + - usb: gadget: f_midi: Fix memleak in f_midi_alloc + - USB: core: Fix regression in Hercules audio card + - USB: quirks: Add USB_QUIRK_DISCONNECT_SUSPEND quirk for Lenovo A630Z TIO + built-in usb-audio card + - usb: gadget: Fix memleak in gadgetfs_fill_super + - irqchip/exiu: Fix the index of fwspec for IRQ type + - x86/mce: Do not overwrite no_way_out if mce_end() fails + - x86/speculation: Fix prctl() when spectre_v2_user={seccomp,prctl},ibpb + - x86/resctrl: Remove superfluous kernfs_get() calls to prevent refcount leak + - x86/resctrl: Add necessary kernfs_put() calls to prevent refcount leak + - devlink: Hold rtnl lock while reading netdev attributes + - devlink: Make sure devlink instance and port are in same net namespace + - ipv6: addrlabel: fix possible memory leak in ip6addrlbl_net_init + - net/af_iucv: set correct sk_protocol for child sockets + - net: openvswitch: fix TTL decrement action netlink message format + - net/tls: missing received data after fast remote close + - net/tls: Protect from calling tls_dev_del for TLS RX twice + - rose: Fix Null pointer dereference in rose_send_frame() + - sock: set sk_err to ee_errno on dequeue from errq + - tcp: Set INET_ECN_xmit configuration in tcp_reinit_congestion_control + - tun: honor IOCB_NOWAIT flag + - usbnet: ipheth: fix connectivity with iOS 14 + - vsock/virtio: discard packets only when socket is really closed + - net/packet: fix packet receive on L3 devices without visible hard header + - netfilter: bridge: reset skb->pkt_type after NF_INET_POST_ROUTING traversal + - ipv4: Fix tos mask in inet_rtm_getroute() + - dt-bindings: net: correct interrupt flags in examples + - chelsio/chtls: fix panic during unload reload chtls + - ibmvnic: Ensure that SCRQ entry reads are correctly ordered + - ibmvnic: Fix TX completion error handling + - tipc: fix incompatible mtu of transmission + - inet_ecn: Fix endianness of checksum update when setting ECT(1) + - net: ip6_gre: set dev->hard_header_len when using header_ops + - dpaa_eth: copy timestamp fields to new skb in A-050385 workaround + - net/x25: prevent a couple of overflows + - cxgb3: fix error return code in t3_sge_alloc_qset() + - net: pasemi: fix error return code in pasemi_mac_open() + - vxlan: fix error return code in __vxlan_dev_create() + - chelsio/chtls: fix a double free in chtls_setkey() + - net: mvpp2: Fix error return code in mvpp2_open() + - net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl + - net: openvswitch: ensure LSE is pullable before reading it + - net/sched: act_mpls: ensure LSE is pullable before reading it + - net/mlx5: DR, Proper handling of unsupported Connect-X6DX SW steering + - net/mlx5: Fix wrong address reclaim when command interface is down + - net: mlx5e: fix fs_tcp.c build when IPV6 is not enabled + - ALSA: usb-audio: US16x08: fix value count for level meters + - Input: xpad - support Ardwiino Controllers + - tracing: Fix alignment of static buffer + - tracing: Remove WARN_ON in start_thread() + - uapi: fix statx attribute value overlap for DAX & MOUNT_ROOT + - drm/i915/gt: Fixup tgl mocs for PTE tracking + - usb: gadget: f_fs: Use local copy of descriptors for userspace copy + - USB: serial: kl5kusb105: fix memleak on open + - USB: serial: ch341: add new Product ID for CH341A + - USB: serial: ch341: sort device-id entries + - USB: serial: option: add Fibocom NL668 variants + - USB: serial: option: add support for Thales Cinterion EXS82 + - USB: serial: option: fix Quectel BG96 matching + - tty: Fix ->pgrp locking in tiocspgrp() + - tty: Fix ->session locking + - speakup: Reject setting the speakup line discipline outside of speakup + - ALSA: hda/realtek: Fix bass speaker DAC assignment on Asus Zephyrus G14 + - ALSA: hda/realtek: Add mute LED quirk to yet another HP x360 model + - ALSA: hda/realtek: Enable headset of ASUS UX482EG & B9400CEA with ALC294 + - ALSA: hda/realtek - Add new codec supported for ALC897 + - ALSA: hda/realtek - Fixed Dell AIO wrong sound tone + - ALSA: hda/generic: Add option to enforce preferred_dacs pairs + - ftrace: Fix updating FTRACE_FL_TRAMP + - ftrace: Fix DYNAMIC_FTRACE_WITH_DIRECT_CALLS dependency + - cifs: allow syscalls to be restarted in __smb_send_rqst() + - cifs: fix potential use-after-free in cifs_echo_request() + - cifs: refactor create_sd_buf() and and avoid corrupting the buffer + - gfs2: Upgrade shared glocks for atime updates + - gfs2: Fix deadlock between gfs2_{create_inode,inode_lookup} and + delete_work_func + - s390/pci: fix CPU address in MSI for directed IRQ + - i2c: imx: Fix reset of I2SR_IAL flag + - i2c: imx: Check for I2SR_IAL after every byte + - i2c: imx: Don't generate STOP condition if arbitration has been lost + - tracing: Fix userstacktrace option for instances + - thunderbolt: Fix use-after-free in remove_unplugged_switch() + - drm/omap: sdi: fix bridge enable/disable + - drm/i915/gt: Retain default context state across shrinking + - drm/i915/gt: Limit frequency drop to RPe on parking + - drm/i915/gt: Program mocs:63 for cache eviction on gen9 + - KVM: PPC: Book3S HV: XIVE: Fix vCPU id sanity check + - scsi: mpt3sas: Fix ioctl timeout + - io_uring: fix recvmsg setup with compat buf-select + - dm writecache: advance the number of arguments when reporting max_age + - dm writecache: fix the maximum number of arguments + - powerpc/64s/powernv: Fix memory corruption when saving SLB entries on MCE + - genirq/irqdomain: Add an irq_create_mapping_affinity() function + - powerpc/pseries: Pass MSI affinity to irq_create_mapping() + - dm: fix bug with RCU locking in dm_blk_report_zones + - dm: fix double RCU unlock in dm_dax_zero_page_range() error path + - dm: remove invalid sparse __acquires and __releases annotations + - x86/uprobes: Do not use prefixes.nbytes when looping over prefixes.bytes + - coredump: fix core_pattern parse error + - mm: list_lru: set shrinker map bit when child nr_items is not zero + - mm/swapfile: do not sleep with a spin lock held + - hugetlb_cgroup: fix offline of hugetlb cgroup with reservations + - Revert "amd/amdgpu: Disable VCN DPG mode for Picasso" + - iommu/amd: Set DTE[IntTabLen] to represent 512 IRTEs + - lib/syscall: fix syscall registers retrieval on 32-bit platforms + - can: af_can: can_rx_unregister(): remove WARN() statement from list + operation sanity check + - gfs2: check for empty rgrp tree in gfs2_ri_update + - netfilter: ipset: prevent uninit-value in hash_ip6_add + - tipc: fix a deadlock when flushing scheduled work + - ASoC: wm_adsp: fix error return code in wm_adsp_load() + - gfs2: Fix deadlock dumping resource group glocks + - gfs2: Don't freeze the file system during unmount + - rtw88: debug: Fix uninitialized memory in debugfs code + - i2c: qcom: Fix IRQ error misassignement + - i2c: qup: Fix error return code in qup_i2c_bam_schedule_desc() + - dm writecache: remove BUG() and fail gracefully instead + - Input: i8042 - fix error return code in i8042_setup_aux() + - netfilter: nf_tables: avoid false-postive lockdep splat + - netfilter: nftables_offload: set address type in control dissector + - netfilter: nftables_offload: build mask based from the matching bytes + - x86/insn-eval: Use new for_each_insn_prefix() macro to loop over prefixes + bytes + - bpf: Fix propagation of 32-bit signed bounds from 64-bit bounds. + + * dep-8 ubuntu-regression-suite tests are not run for all linux-hwe-* kernels + (LP: #1908529) + - [dep-8] Allow all hwe kernels + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: Clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF seftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * selftests: test_vxlan_under_vrf: mute unnecessary error message + (LP: #1908342) + - selftests: test_vxlan_under_vrf: mute unnecessary error message + + * Groovy update: upstream stable patchset 2020-12-17 (LP: #1908555) + - drm/i915: Hold onto an explicit ref to i915_vma_work.pinned + - drm/i915/gem: Flush coherency domains on first set-domain-ioctl + - mm: memcg: link page counters to root if use_hierarchy is false + - nbd: don't update block size after device is started + - KVM: arm64: Force PTE mapping on fault resulting in a device mapping + - ASoC: Intel: kbl_rt5663_max98927: Fix kabylake_ssp_fixup function + - genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY + - hv_balloon: disable warning when floor reached + - net: xfrm: fix a race condition during allocing spi + - ASoC: codecs: wsa881x: add missing stream rates and format + - irqchip/sifive-plic: Fix broken irq_set_affinity() callback + - kunit: Fix kunit.py --raw_output option + - kunit: Don't fail test suites if one of them is empty + - usb: gadget: fsl: fix null pointer checking + - selftests: filter kselftest headers from command in lib.mk + - ASoC: codecs: wcd934x: Set digital gain range correctly + - ASoC: codecs: wcd9335: Set digital gain range correctly + - mtd: spi-nor: Fix address width on flash chips > 16MB + - xfs: set xefi_discard when creating a deferred agfl free log intent item + - mac80211: don't require VHT elements for HE on 2.4 GHz + - netfilter: nftables: fix netlink report logic in flowtable and genid + - netfilter: use actual socket sk rather than skb sk when routing harder + - netfilter: nf_tables: missing validation from the abort path + - netfilter: ipset: Update byte and packet counters regardless of whether they + match + - irqchip/sifive-plic: Fix chip_data access within a hierarchy + - powerpc/eeh_cache: Fix a possible debugfs deadlock + - drm/vc4: bo: Add a managed action to cleanup the cache + - IB/srpt: Fix memory leak in srpt_add_one + - mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical memcg + - drm/panfrost: rename error labels in device_init + - drm/panfrost: move devfreq_init()/fini() in device + - drm/panfrost: Fix module unload + - perf trace: Fix segfault when trying to trace events by cgroup + - perf tools: Add missing swap for ino_generation + - perf tools: Add missing swap for cgroup events + - ALSA: hda: prevent undefined shift in snd_hdac_ext_bus_get_link() + - iommu/vt-d: Fix a bug for PDP check in prq_event_thread + - afs: Fix warning due to unadvanced marshalling pointer + - afs: Fix incorrect freeing of the ACL passed to the YFS ACL store op + - vfio/pci: Implement ioeventfd thread handler for contended memory lock + - can: rx-offload: don't call kfree_skb() from IRQ context + - can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ + context + - can: dev: __can_get_echo_skb(): fix real payload length return value for RTR + frames + - can: can_create_echo_skb(): fix echo skb generation: always use skb_clone() + - can: j1939: swap addr and pgn in the send example + - can: j1939: j1939_sk_bind(): return failure if netdev is down + - can: ti_hecc: ti_hecc_probe(): add missed clk_disable_unprepare() in error + path + - can: xilinx_can: handle failure cases of pm_runtime_get_sync + - can: peak_usb: add range checking in decode operations + - can: peak_usb: peak_usb_get_ts_time(): fix timestamp wrapping + - can: peak_canfd: pucan_handle_can_rx(): fix echo management when loopback is + on + - can: flexcan: remove FLEXCAN_QUIRK_DISABLE_MECR quirk for LS1021A + - can: flexcan: flexcan_remove(): disable wakeup completely + - xfs: flush new eof page on truncate to avoid post-eof corruption + - xfs: fix missing CoW blocks writeback conversion retry + - xfs: fix scrub flagging rtinherit even if there is no rt device + - spi: fsl-dspi: fix wrong pointer in suspend/resume + - ceph: add check_session_state() helper and make it global + - ceph: check the sesion state and return false in case it is closed + - ceph: check session state after bumping session->s_seq + - x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always- + on STIBP + - kbuild: explicitly specify the build id style + - RISC-V: Fix the VDSO symbol generaton for binutils-2.35+ + - USB: apple-mfi-fastcharge: fix reference leak in apple_mfi_fc_set_property + - tpm: efi: Don't create binary_bios_measurements file for an empty log + - KVM: arm64: ARM_SMCCC_ARCH_WORKAROUND_1 doesn't return + SMCCC_RET_NOT_REQUIRED + - ath9k_htc: Use appropriate rs_datalen type + - ASoC: qcom: sdm845: set driver name correctly + - ASoC: cs42l51: manage mclk shutdown delay + - ASoC: SOF: loader: handle all SOF_IPC_EXT types + - usb: dwc3: pci: add support for the Intel Alder Lake-S + - opp: Reduce the size of critical section in _opp_table_kref_release() + - usb: gadget: goku_udc: fix potential crashes in probe + - usb: raw-gadget: fix memory leak in gadget_setup + - selftests: pidfd: fix compilation errors due to wait.h + - x86/boot/compressed/64: Introduce sev_status + - gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free + - gfs2: Add missing truncate_inode_pages_final for sd_aspace + - gfs2: check for live vs. read-only file system in gfs2_fitrim + - scsi: hpsa: Fix memory leak in hpsa_init_one() + - drm/amdgpu: perform srbm soft reset always on SDMA resume + - drm/amd/pm: correct the baco reset sequence for CI ASICs + - drm/amd/pm: perform SMC reset on suspend/hibernation + - drm/amd/pm: do not use ixFEATURE_STATUS for checking smc running + - mac80211: fix use of skb payload instead of header + - cfg80211: initialize wdev data earlier + - cfg80211: regulatory: Fix inconsistent format argument + - wireguard: selftests: check that route_me_harder packets use the right sk + - tracing: Fix the checking of stackidx in __ftrace_trace_stack + - ARC: [plat-hsdk] Remap CCMs super early in asm boot trampoline + - scsi: scsi_dh_alua: Avoid crash during alua_bus_detach() + - scsi: mpt3sas: Fix timeouts observed while reenabling IRQ + - nvme: introduce nvme_sync_io_queues + - nvme-rdma: avoid race between time out and tear down + - nvme-tcp: avoid race between time out and tear down + - nvme-rdma: avoid repeated request completion + - nvme-tcp: avoid repeated request completion + - iommu/amd: Increase interrupt remapping table limit to 512 entries + - s390/smp: move rcu_cpu_starting() earlier + - vfio: platform: fix reference leak in vfio_platform_open + - vfio/pci: Bypass IGD init in case of -ENODEV + - i2c: mediatek: move dma reset before i2c reset + - iomap: clean up writeback state logic on writepage error + - selftests: proc: fix warning: _GNU_SOURCE redefined + - arm64: kexec_file: try more regions if loading segments fails + - riscv: Set text_offset correctly for M-Mode + - i2c: sh_mobile: implement atomic transfers + - i2c: designware: call i2c_dw_read_clear_intrbits_slave() once + - i2c: designware: slave should do WRITE_REQUESTED before WRITE_RECEIVED + - tpm_tis: Disable interrupts on ThinkPad T490s + - spi: bcm2835: remove use of uninitialized gpio flags variable + - mfd: sprd: Add wakeup capability for PMIC IRQ + - pinctrl: intel: Fix 2 kOhm bias which is 833 Ohm + - pinctrl: intel: Set default bias in case no particular value given + - gpio: aspeed: fix ast2600 bank properties + - ARM: 9019/1: kprobes: Avoid fortify_panic() when copying optprobe template + - bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE + - libbpf, hashmap: Fix undefined behavior in hash_bits + - pinctrl: mcp23s08: Use full chunk of memory for regmap configuration + - pinctrl: aspeed: Fix GPI only function problem. + - net/mlx5e: Fix modify header actions memory leak + - net/mlx5e: Protect encap route dev from concurrent release + - net/mlx5e: Use spin_lock_bh for async_icosq_lock + - net/mlx5: Fix deletion of duplicate rules + - net/mlx5e: Fix incorrect access of RCU-protected xdp_prog + - SUNRPC: Fix general protection fault in trace_rpc_xdr_overflow() + - NFSD: Fix use-after-free warning when doing inter-server copy + - NFSD: fix missing refcount in nfsd4_copy by nfsd4_do_async_copy + - tools/bpftool: Fix attaching flow dissector + - bpf: Zero-fill re-used per-cpu map element + - r8169: fix potential skb double free in an error path + - r8169: disable hw csum for short packets on all chip versions + - pinctrl: qcom: Move clearing pending IRQ to .irq_request_resources callback + - pinctrl: qcom: sm8250: Specify PDC map + - nbd: fix a block_device refcount leak in nbd_release + - selftest: fix flower terse dump tests + - i40e: Fix MAC address setting for a VF via Host/VM + - igc: Fix returning wrong statistics + - lan743x: correctly handle chips with internal PHY + - net: phy: realtek: support paged operations on RTL8201CP + - xfs: fix flags argument to rmap lookup when converting shared file rmaps + - xfs: set the unwritten bit in rmap lookup flags in xchk_bmap_get_rmapextents + - xfs: fix rmap key and record comparison functions + - xfs: fix brainos in the refcount scrubber's rmap fragment processor + - lan743x: fix "BUG: invalid wait context" when setting rx mode + - xfs: fix a missing unlock on error in xfs_fs_map_blocks + - of/address: Fix of_node memory leak in of_dma_is_coherent + - ch_ktls: Update cheksum information + - ch_ktls: tcb update fails sometimes + - cosa: Add missing kfree in error path of cosa_write + - hwmon: (applesmc) Re-work SMC comms + - vrf: Fix fast path output packet handling with async Netfilter rules + - lan743x: fix use of uninitialized variable + - arm64/mm: Validate hotplug range before creating linear mapping + - kernel/watchdog: fix watchdog_allowed_mask not used warning + - mm: memcontrol: fix missing wakeup polling thread + - afs: Fix afs_write_end() when called with copied == 0 [ver #3] + - perf: Fix get_recursion_context() + - nvme: factor out a nvme_configure_metadata helper + - nvme: freeze the queue over ->lba_shift updates + - nvme: fix incorrect behavior when BLKROSET is called by the user + - perf: Simplify group_sched_in() + - perf: Fix event multiplexing for exclusive groups + - firmware: xilinx: fix out-of-bounds access + - erofs: fix setting up pcluster for temporary pages + - erofs: derive atime instead of leaving it empty + - ext4: correctly report "not supported" for {usr,grp}jquota when + !CONFIG_QUOTA + - ext4: unlock xattr_sem properly in ext4_inline_data_truncate() + - btrfs: fix potential overflow in cluster_pages_for_defrag on 32bit arch + - btrfs: ref-verify: fix memory leak in btrfs_ref_tree_mod + - btrfs: fix min reserved size calculation in merge_reloc_root + - btrfs: dev-replace: fail mount if we don't have replace item with target + device + - KVM: arm64: Don't hide ID registers from userspace + - speakup: Fix var_id_t values and thus keymap + - speakup ttyio: Do not schedule() in ttyio_in_nowait + - speakup: Fix clearing selection in safe context + - thunderbolt: Fix memory leak if ida_simple_get() fails in + enumerate_services() + - thunderbolt: Add the missed ida_simple_remove() in ring_request_msix() + - block: add a return value to set_capacity_revalidate_and_notify + - loop: Fix occasional uevent drop + - uio: Fix use-after-free in uio_unregister_device() + - usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode + - usb: typec: ucsi: Report power supply changes + - xhci: hisilicon: fix refercence leak in xhci_histb_probe + - virtio: virtio_console: fix DMA memory allocation for rproc serial + - mei: protect mei_cl_mtu from null dereference + - futex: Don't enable IRQs unconditionally in put_pi_state() + - jbd2: fix up sparse warnings in checkpoint code + - bootconfig: Extend the magic check range to the preceding 3 bytes + - mm/compaction: count pages and stop correctly during page isolation + - mm/compaction: stop isolation if too many pages are isolated and we have + pages to migrate + - mm/slub: fix panic in slab_alloc_node() + - mm/vmscan: fix NR_ISOLATED_FILE corruption on 64-bit + - mm/gup: use unpin_user_pages() in __gup_longterm_locked() + - Revert "kernel/reboot.c: convert simple_strtoul to kstrtoint" + - reboot: fix overflow parsing reboot cpu number + - hugetlbfs: fix anon huge page migration race + - ocfs2: initialize ip_next_orphan + - selinux: Fix error return code in sel_ib_pkey_sid_slow() + - io_uring: round-up cq size before comparing with rounded sq size + - gpio: sifive: Fix SiFive gpio probe + - gpio: pcie-idio-24: Fix irq mask when masking + - gpio: pcie-idio-24: Fix IRQ Enable Register value + - gpio: pcie-idio-24: Enable PEX8311 interrupts + - mmc: sdhci-of-esdhc: Handle pulse width detection erratum for more SoCs + - mmc: renesas_sdhi_core: Add missing tmio_mmc_host_free() at remove + - don't dump the threads that had been already exiting when zapped. + - drm/i915: Correctly set SFC capability for video engines + - drm/gma500: Fix out-of-bounds access to struct drm_device.vblank[] + - pinctrl: amd: use higher precision for 512 RtcClk + - pinctrl: amd: fix incorrect way to disable debounce filter + - swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb" + - cpufreq: Introduce governor flags + - cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET + - cpufreq: Add strict_target to struct cpufreq_policy + - ethtool: netlink: add missing netdev_features_change() call + - IPv6: Set SIT tunnel hard_header_len to zero + - net/af_iucv: fix null pointer dereference on shutdown + - net: udp: fix IP header access and skb lookup on Fast/frag0 UDP GRO + - net: udp: fix UDP header access on Fast/frag0 UDP GRO + - net: Update window_clamp if SOCK_RCVBUF is set + - net/x25: Fix null-ptr-deref in x25_connect + - tipc: fix memory leak in tipc_topsrv_start() + - powerpc/603: Always fault when _PAGE_ACCESSED is not set + - null_blk: Fix scheduling in atomic with zoned mode + - perf scripting python: Avoid declaring function pointers with a visibility + attribute + - coresight: etm: perf: Sink selection using sysfs is deprecated + - coresight: Fix uninitialised pointer bug in etm_setup_aux() + - Convert trailing spaces and periods in path components + - random32: make prandom_u32() output unpredictable + - amd/amdgpu: Disable VCN DPG mode for Picasso + + * [SRU][F/G/H/U/OEM-5.6] Fix i2c report error on elan trackpoint + (LP: #1908335) + - Input: elan_i2c - add support for high resolution reports + - Input: elan_i2c - add new trackpoint report type 0x5F + - Input: elantech - fix protocol errors for some trackpoints in SMBus mode + + * [SRU][OEM-5.6] UBUNTU: SAUCE: Fix brightness control on BOE 2270 panel + (LP: #1904991) + - drm/i915: Force DPCD backlight mode for BOE 2270 panel + + * rtwpci driver blocks the system to enter PC10, stuck at PC3 (LP: #1907200) + - SAUCE: rtw88: 8723de: let cpu enter c10 + + * Touchpad not detected on ByteSpeed C15B laptop (LP: #1906128) + - Input: i8042 - add ByteSpeed touchpad to noloop table + + * Fix reading speed and duplex sysfs on igc device (LP: #1906851) + - SAUCE: igc: Report speed and duplex as unknown when device is runtime + suspended + + * Groovy update: upstream stable patchset 2020-12-15 (LP: #1908323) + - tipc: fix use-after-free in tipc_bcast_get_mode + - drm/i915/gem: Avoid implicit vmap for highmem on x86-32 + - drm/i915/gem: Prevent using pgprot_writecombine() if PAT is not supported + - drm/i915/gem: Always test execution status on closing the context + - drm/i915/gt: Always send a pulse down the engine after disabling heartbeat + - drm/i915: Break up error capture compression loops with cond_resched() + - drm/i915: Cancel outstanding work after disabling heartbeats on an engine + - drm/i915: Avoid mixing integer types during batch copies + - drm/i915/gt: Initialize reserved and unspecified MOCS indices + - drm/i915/gt: Undo forced context restores after trivial preemptions + - drm/i915: Drop runtime-pm assert from vgpu io accessors + - drm/i915: Exclude low pages (128KiB) of stolen from use + - drm/i915: Use the active reference on the vma while capturing + - drm/i915: Reject 90/270 degree rotated initial fbs + - drm/i915: Restore ILK-M RPS support + - drm/nouveau/device: fix changing endianess code to work on older GPUs + - ptrace: fix task_join_group_stop() for the case when current is traced + - cadence: force nonlinear buffers to be cloned + - chelsio/chtls: fix memory leaks caused by a race + - chelsio/chtls: fix always leaking ctrl_skb + - dpaa_eth: update the buffer layout for non-A050385 erratum scenarios + - dpaa_eth: fix the RX headroom size alignment + - gianfar: Replace skb_realloc_headroom with skb_cow_head for PTP + - gianfar: Account for Tx PTP timestamp in the skb headroom + - ionic: check port ptr before use + - ip_tunnel: fix over-mtu packet send fail without TUNNEL_DONT_FRAGMENT flags + - net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement + - net: usb: qmi_wwan: add Telit LE910Cx 0x1230 composition + - powerpc/vnic: Extend "failover pending" window + - sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms + - sfp: Fix error handing in sfp_probe() + - ip6_tunnel: set inner ipproto before ip6_tnl_encap + - net: fec: fix MDIO probing for some FEC hardware blocks + - r8169: work around short packet hw bug on RTL8125 + - drm/nouveau/kms/nv50-: Get rid of bogus nouveau_conn_mode_valid() + - drm/nouveau/kms/nv50-: Fix clock checking algorithm in nv50_dp_mode_valid() + - Fonts: Replace discarded const qualifier + - ALSA: hda/realtek - Fixed HP headset Mic can't be detected + - ALSA: hda/realtek - Enable headphone for ASUS TM420 + - ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2 + - ALSA: usb-audio: add usb vendor id as DSD-capable for Khadas devices + - ALSA: usb-audio: Add implicit feedback quirk for Qu-16 + - ALSA: usb-audio: Add implicit feedback quirk for MODX + - hugetlb_cgroup: fix reservation accounting + - mm: mempolicy: fix potential pte_unmap_unlock pte error + - lib/crc32test: remove extra local_irq_disable/enable + - kthread_worker: prevent queuing delayed work from timer_fn when it is being + canceled + - mm: always have io_remap_pfn_range() set pgprot_decrypted() + - perf hists browser: Increase size of 'buf' in perf_evsel__hists_browse() + - gfs2: Wake up when sd_glock_disposal becomes zero + - gfs2: Don't call cancel_delayed_work_sync from within delete work function + - ring-buffer: Fix recursion protection transitions between interrupt context + - iommu/vt-d: Fix kernel NULL pointer dereference in find_domain() + - mtd: spi-nor: Don't copy self-pointing struct around + - ftrace: Fix recursion check for NMI test + - ftrace: Handle tracing when switching between context + - regulator: defer probe when trying to get voltage from unresolved supply + - spi: bcm2835: fix gpio cs level inversion + - tracing: Fix out of bounds write in get_trace_buf + - futex: Handle transient "ownerless" rtmutex state correctly + - x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S + - ARM: dts: sun4i-a10: fix cpu_alert temperature + - arm64: dts: meson: add missing g12 rng clock + - arm64: dts: amlogic: meson-g12: use the G12A specific dwmac compatible + - x86/kexec: Use up-to-dated screen_info copy to fill boot params + - hyperv_fb: Update screen_info after removing old framebuffer + - arm64: dts: amlogic: add missing ethernet reset ID + - io_uring: don't miss setting IO_WQ_WORK_CONCURRENT + - of: Fix reserved-memory overlap detection + - ARM: dts: mmp3: Add power domain for the camera + - drm/sun4i: frontend: Rework a bit the phase data + - drm/sun4i: frontend: Reuse the ch0 phase for RGB formats + - drm/sun4i: frontend: Fix the scaler phase on A33 + - drm/v3d: Fix double free in v3d_submit_cl_ioctl() + - blk-cgroup: Fix memleak on error path + - blk-cgroup: Pre-allocate tree node on blkg_conf_prep + - btrfs: drop the path before adding qgroup items when enabling qgroups + - btrfs: add a helper to read the tree_root commit root for backref lookup + - scsi: core: Don't start concurrent async scan on same host + - drm/amdgpu: disable DCN and VCN for navi10 blockchain SKU(v3) + - drm/amdgpu: add DID for navi10 blockchain SKU + - scsi: ibmvscsi: Fix potential race after loss of transport + - vsock: use ns_capable_noaudit() on socket create + - nvme-rdma: handle unexpected nvme completion data length + - nvmet: fix a NULL pointer dereference when tracing the flush command + - drm/vc4: drv: Add error handding for bind + - ACPI: NFIT: Fix comparison to '-ENXIO' + - usb: cdns3: gadget: suspicious implicit sign extension + - drm/nouveau/nouveau: fix the start/end range for migration + - drm/nouveau/gem: fix "refcount_t: underflow; use-after-free" + - arm64/smp: Move rcu_cpu_starting() earlier + - tty: fix crash in release_tty if tty->port is not set + - fork: fix copy_process(CLONE_PARENT) race with the exiting ->real_parent + - s390/mm: make pmd/pud_deref() large page aware + - s390/pkey: fix paes selftest failure with paes and pkey static build + - powerpc/8xx: Always fault when _PAGE_ACCESSED is not set + - powerpc/40x: Always fault when _PAGE_ACCESSED is not set + - serial: 8250_mtk: Fix uart_get_baud_rate warning + - serial: txx9: add missing platform_driver_unregister() on error in + serial_txx9_init + - USB: serial: cyberjack: fix write-URB completion race + - USB: serial: option: add Quectel EC200T module support + - USB: serial: option: add LE910Cx compositions 0x1203, 0x1230, 0x1231 + - USB: serial: option: add Telit FN980 composition 0x1055 + - usb: dwc3: ep0: Fix delay status handling + - USB: Add NO_LPM quirk for Kingston flash drive + - usb: mtu3: fix panic in mtu3_gadget_stop() + - io_uring: fix link lookup racing with link timeout + - drm/panfrost: Fix a deadlock between the shrinker and madvise path + - ARC: stack unwinding: avoid indefinite looping + - PM: runtime: Drop runtime PM references to supplier on link removal + - PM: runtime: Drop pm_runtime_clean_up_links() + - PM: runtime: Resume the device earlier in __device_release_driver() + - drm/i915/gt: Use the local HWSP offset during submission + - perf/core: Fix a memory leak in perf_event_parse_addr_filter() + - Revert "coresight: Make sysfs functional on topologies with per core sink" + + * Groovy update: upstream stable patchset 2020-12-14 (LP: #1908150) + - xen/events: avoid removing an event channel while handling it + - xen/events: add a proper barrier to 2-level uevent unmasking + - xen/events: fix race in evtchn_fifo_unmask() + - xen/events: add a new "late EOI" evtchn framework + - xen/blkback: use lateeoi irq binding + - xen/netback: use lateeoi irq binding + - xen/scsiback: use lateeoi irq binding + - xen/pvcallsback: use lateeoi irq binding + - xen/pciback: use lateeoi irq binding + - xen/events: switch user event channels to lateeoi model + - xen/events: use a common cpu hotplug hook for event channels + - xen/events: defer eoi in case of excessive number of events + - xen/events: block rogue events for some time + - firmware: arm_scmi: Fix ARCH_COLD_RESET + - firmware: arm_scmi: Expand SMC/HVC message pool to more than one + - tee: client UUID: Skip REE kernel login method as well + - firmware: arm_scmi: Add missing Rx size re-initialisation + - x86/unwind/orc: Fix inactive tasks with stack pointer in %sp on GCC 10 + compiled kernels + - x86/alternative: Don't call text_poke() in lazy TLB mode + - ionic: no rx flush in deinit + - RDMA/mlx5: Fix devlink deadlock on net namespace deletion + - mlxsw: core: Fix use-after-free in mlxsw_emad_trans_finish() + - tracing, synthetic events: Replace buggy strcat() with seq_buf operations + - afs: Fix a use after free in afs_xattr_get_acl() + - afs: Fix afs_launder_page to not clear PG_writeback + - RDMA/qedr: Fix memory leak in iWARP CM + - ata: sata_nv: Fix retrieving of active qcs + - arm64: efi: increase EFI PE/COFF header padding to 64 KB + - afs: Fix to take ref on page when PG_private is set + - afs: Fix page leak on afs_write_begin() failure + - afs: Fix where page->private is set during write + - afs: Wrap page->private manipulations in inline functions + - afs: Alter dirty range encoding in page->private + - mm: add thp_order + - mm: add thp_size + - afs: Fix afs_invalidatepage to adjust the dirty region + - afs: Fix dirty-region encoding on ppc32 with 64K pages + - interconnect: qcom: sdm845: Enable keepalive for the MM1 BCM + - usb: host: ehci-tegra: Fix error handling in tegra_ehci_probe() + - futex: Fix incorrect should_fail_futex() handling + - powerpc/vmemmap: Fix memory leak with vmemmap list allocation failures. + - powerpc/powernv/smp: Fix spurious DBG() warning + - RDMA/core: Change how failing destroy is handled during uobj abort + - f2fs: allocate proper size memory for zstd decompress + - powerpc/watchpoint/ptrace: Fix SETHWDEBUG when CONFIG_HAVE_HW_BREAKPOINT=N + - [Config] update config for ARCH_WANT_IRQS_OFF_ACTIVATE_MM + - mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race + - powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM + - sparc64: remove mm_cpumask clearing to fix kthread_use_mm race + - f2fs: add trace exit in exception path + - f2fs: do sanity check on zoned block device path + - f2fs: fix uninit-value in f2fs_lookup + - f2fs: fix to check segment boundary during SIT page readahead + - s390/startup: avoid save_area_sync overflow + - f2fs: compress: fix to disallow enabling compress on non-empty file + - um: change sigio_spinlock to a mutex + - f2fs: handle errors of f2fs_get_meta_page_nofail + - afs: Don't assert on unpurgeable server records + - powerpc/64s: handle ISA v3.1 local copy-paste context switches + - ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses + - NFS4: Fix oops when copy_file_range is attempted with NFS4.0 source + - xfs: Set xfs_buf type flag when growing summary/bitmap files + - xfs: Set xfs_buf's b_ops member when zeroing bitmap/summary files + - xfs: log new intent items created as part of finishing recovered intent + items + - power: supply: bq27xxx: report "not charging" on all types + - xfs: change the order in which child and parent defer ops are finished + - xfs: fix realtime bitmap/summary file truncation when growing rt volume + - ath10k: fix retry packets update in station dump + - x86/kaslr: Initialize mem_limit to the real maximum address + - drm/ast: Separate DRM driver from PCI code + - drm/amdgpu: restore ras flags when user resets eeprom(v2) + - video: fbdev: pvr2fb: initialize variables + - ath10k: start recovery process when payload length exceeds max htc length + for sdio + - ath10k: fix VHT NSS calculation when STBC is enabled + - drm/scheduler: Scheduler priority fixes (v2) + - drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working + correctly + - ASOC: SOF: Intel: hda-codec: move unused label to correct position + - ASoC: SOF: fix a runtime pm issue in SOF when HDMI codec doesn't work + - selftests/x86/fsgsbase: Reap a forgotten child + - drm/bridge_connector: Set default status connected for eDP connectors + - media: videodev2.h: RGB BT2020 and HSV are always full range + - ASoC: AMD: Clean kernel log from deferred probe error messages + - misc: fastrpc: fix common struct sg_table related issues + - staging: wfx: fix potential use before init + - media: platform: Improve queue set up flow for bug fixing + - usb: typec: tcpm: During PR_SWAP, source caps should be sent only after + tSwapSourceStart + - media: tw5864: check status of tw5864_frameinterval_get + - drm/vkms: avoid warning in vkms_get_vblank_timestamp + - media: imx274: fix frame interval handling + - mmc: via-sdmmc: Fix data race bug + - drm/bridge/synopsys: dsi: add support for non-continuous HS clock + - brcmfmac: increase F2 watermark for BCM4329 + - arm64: topology: Stop using MPIDR for topology information + - printk: reduce LOG_BUF_SHIFT range for H8300 + - ia64: kprobes: Use generic kretprobe trampoline handler + - kgdb: Make "kgdbcon" work properly with "kgdb_earlycon" + - bpf: Permit map_ptr arithmetic with opcode add and offset 0 + - drm: exynos: fix common struct sg_table related issues + - xen: gntdev: fix common struct sg_table related issues + - drm: lima: fix common struct sg_table related issues + - drm: panfrost: fix common struct sg_table related issues + - media: uvcvideo: Fix dereference of out-of-bound list iterator + - nfc: s3fwrn5: Add missing CRYPTO_HASH dependency + - selftests/bpf: Define string const as global for test_sysctl_prog.c + - selinux: access policycaps with READ_ONCE/WRITE_ONCE + - samples/bpf: Fix possible deadlock in xdpsock + - drm/amd/display: Check clock table return + - riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO + - cpufreq: sti-cpufreq: add stih418 support + - USB: adutux: fix debugging + - uio: free uio id after uio file node is freed + - coresight: Make sysfs functional on topologies with per core sink + - drm/amdgpu: No sysfs, not an error condition + - mac80211: add missing queue/hash initialization to 802.3 xmit + - usb: xhci: omit duplicate actions when suspending a runtime suspended host. + - SUNRPC: Mitigate cond_resched() in xprt_transmit() + - cpuidle: tegra: Correctly handle result of arm_cpuidle_simple_enter() + - arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE + - can: flexcan: disable clocks during stop mode + - habanalabs: remove security from ARB_MST_QUIET register + - xfs: don't free rt blocks when we're doing a REMAP bunmapi call + - xfs: avoid LR buffer overrun due to crafted h_len + - ACPI: Add out of bounds and numa_off protections to pxm_to_node() + - octeontx2-af: fix LD CUSTOM LTYPE aliasing + - brcmfmac: Fix warning message after dongle setup failed + - ath11k: Use GFP_ATOMIC instead of GFP_KERNEL in ath11k_dp_htt_get_ppdu_desc + - ath11k: fix warning caused by lockdep_assert_held + - ath11k: change to disable softirqs for ath11k_regd_update to solve deadlock + - drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values + - usb: dwc3: core: do not queue work if dr_mode is not USB_DR_MODE_OTG + - bus: mhi: core: Abort suspends due to outgoing pending packets + - bus/fsl_mc: Do not rely on caller to provide non NULL mc_io + - ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3 + - power: supply: test_power: add missing newlines when printing parameters by + sysfs + - drm/amd/display: HDMI remote sink need mode validation for Linux + - drm/amd/display: Avoid set zero in the requested clk + - ARC: [dts] fix the errors detected by dtbs_check + - block: Consider only dispatched requests for inflight statistic + - btrfs: fix replace of seed device + - md/bitmap: md_bitmap_get_counter returns wrong blocks + - f2fs: fix to set SBI_NEED_FSCK flag for inconsistent inode + - bnxt_en: Log unknown link speed appropriately. + - rpmsg: glink: Use complete_all for open states + - PCI/ACPI: Add Ampere Altra SOC MCFG quirk + - clk: ti: clockdomain: fix static checker warning + - nfsd: rename delegation related tracepoints to make them less confusing + - net: 9p: initialize sun_server.sun_path to have addr's value only when addr + is valid + - ceph: encode inodes' parent/d_name in cap reconnect message + - drivers: watchdog: rdc321x_wdt: Fix race condition bugs + - jbd2: avoid transaction reuse after reformatting + - ext4: Detect already used quota file early + - KVM: PPC: Book3S HV: Do not allocate HPT for a nested guest + - scsi: core: Clean up allocation and freeing of sgtables + - gfs2: call truncate_inode_pages_final for address space glocks + - gfs2: Fix NULL pointer dereference in gfs2_rgrp_dump + - gfs2: use-after-free in sysfs deregistration + - gfs2: add validation checks for size of superblock + - Handle STATUS_IO_TIMEOUT gracefully + - cifs: handle -EINTR in cifs_setattr + - arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes + - ARM: dts: omap4: Fix sgx clock rate for 4430 + - memory: emif: Remove bogus debugfs error handling + - ARM: dts: s5pv210: Enable audio on Aries boards + - ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema + warnings + - ARM: dts: s5pv210: move fixed clocks under root node + - ARM: dts: s5pv210: move PMU node out of clock controller + - ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node + - ARM: dts: s5pv210: add RTC 32 KHz clock in Aries family + - ARM: dts: s5pv210: align SPI GPIO node name with dtschema in Aries + - soc: qcom: rpmh-rsc: Sleep waiting for tcs slots to be free + - firmware: arm_scmi: Move scmi bus init and exit calls into the driver + - nbd: make the config put is called before the notifying the waiter + - sgl_alloc_order: fix memory leak + - nvme-rdma: fix crash when connect rejected + - vmlinux.lds.h: Add PGO and AutoFDO input sections + - irqchip/loongson-htvec: Fix initial interrupt clearing + - md: fix the checking of wrong work queue + - md/raid5: fix oops during stripe resizing + - mmc: sdhci: Add LTR support for some Intel BYT based controllers + - mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN + - seccomp: Make duplicate listener detection non-racy + - selftests/x86/fsgsbase: Test PTRACE_PEEKUSER for GSBASE with invalid LDT GS + - perf/x86/intel: Fix Ice Lake event constraint table + - perf/x86/amd: Fix sampling Large Increment per Cycle events + - perf/amd/uncore: Set all slices and threads to restore perf stat -a + behaviour + - perf/x86/amd/ibs: Don't include randomized bits in get_ibs_op_count() + - perf/x86/amd/ibs: Fix raw sample data accumulation + - spi: spi-mtk-nor: fix timeout calculation overflow + - spi: sprd: Release DMA channel also on probe deferral + - extcon: ptn5150: Fix usage of atomic GPIO with sleeping GPIO chips + - leds: bcm6328, bcm6358: use devres LED registering function + - hwmon: (pmbus/max34440) Fix OC fault limits + - media: uvcvideo: Fix uvc_ctrl_fixup_xu_info() not having any effect + - fs: Don't invalidate page buffers in block_write_full_page() + - ACPI: configfs: Add missing config_item_put() to fix refcount leak + - NFS: fix nfs_path in case of a rename retry + - ACPI: button: fix handling lid state changes when input device closed + - ACPI / extlog: Check for RDMSR failure + - ACPI: debug: don't allow debugging when ACPI is disabled + - PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI + - ACPI: EC: PM: Flush EC work unconditionally after wakeup + - ACPI: EC: PM: Drop ec_no_wakeup check from acpi_ec_dispatch_gpe() + - acpi-cpufreq: Honor _PSD table setting on new AMD CPUs + - io-wq: assign NUMA node locality if appropriate + - w1: mxc_w1: Fix timeout resolution problem leading to bus error + - fs/kernel_read_file: Remove FIRMWARE_PREALLOC_BUFFER enum + - scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() + - scsi: qla2xxx: Fix MPI reset needed message + - scsi: qla2xxx: Fix reset of MPI firmware + - scsi: qla2xxx: Fix crash on session cleanup with unload + - PM: runtime: Remove link state checks in rpm_get/put_supplier() + - btrfs: qgroup: fix wrong qgroup metadata reserve for delayed inode + - btrfs: improve device scanning messages + - btrfs: qgroup: fix qgroup meta rsv leak for subvolume operations + - btrfs: sysfs: init devices outside of the chunk_mutex + - btrfs: tracepoints: output proper root owner for trace_find_free_extent() + - btrfs: reschedule if necessary when logging directory items + - btrfs: send, orphanize first all conflicting inodes when processing + references + - btrfs: send, recompute reference path after orphanization of a directory + - btrfs: use kvzalloc() to allocate clone_roots in btrfs_ioctl_send() + - btrfs: tree-checker: fix false alert caused by legacy btrfs root item + - btrfs: reschedule when cloning lots of extents + - btrfs: cleanup cow block on error + - btrfs: skip devices without magic signature when mounting + - btrfs: tree-checker: validate number of chunk stripes and parity + - btrfs: fix use-after-free on readahead extent after failure to create it + - btrfs: fix readahead hang and use-after-free after removing a device + - btrfs: drop the path before adding block group sysfs files + - usb: dwc3: pci: Allow Elkhart Lake to utilize DSM method for PM + functionality + - usb: dwc3: ep0: Fix ZLP for OUT ep0 requests + - usb: dwc3: gadget: Check MPS of the request length + - usb: dwc3: gadget: Reclaim extra TRBs after request completion + - usb: dwc3: core: add phy cleanup for probe error handling + - usb: dwc3: core: don't trigger runtime pm when remove driver + - usb: dwc3: gadget: Resume pending requests after CLEAR_STALL + - usb: dwc3: gadget: END_TRANSFER before CLEAR_STALL command + - usb: cdns3: gadget: improve the set_configuration handling + - usb: cdns3: Fix on-chip memory overflow issue + - usb: cdc-acm: fix cooldown mechanism + - usb: typec: tcpm: reset hard_reset_count for any disconnect + - usb: host: fsl-mph-dr-of: check return of dma_set_mask() + - usbcore: Check both id_table and match() when both available + - USB: apple-mfi-fastcharge: don't probe unhandled devices + - drm/i915: Force VT'd workarounds when running as a guest OS + - vt: keyboard, simplify vt_kdgkbsent + - vt: keyboard, extend func_buf_lock to readers + - HID: wacom: Avoid entering wacom_wac_pen_report for pad / battery + - x86/mce: Allow for copy_mc_fragile symbol checksum to be generated + - tty: serial: 21285: fix lockup on open + - tty: serial: fsl_lpuart: LS1021A has a FIFO size of 16 words, like LS1028A + - Revert "vhost-vdpa: fix page pinning leakage in error path" + - powerpc: Fix random segfault when freeing hugetlb range + - udf: Fix memory leak when mounting + - dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status + - vdpa_sim: Fix DMA mask + - iio: ltc2983: Fix of_node refcounting + - iio: adc: at91-sama5d2_adc: fix DMA conversion crash + - iio:imu:inv_mpu6050 Fix dma and ts alignment and data leak issues. + - iio:imu:st_lsm6dsx: check st_lsm6dsx_shub_read_output return + - iio:light:si1145: Fix timestamp alignment and prevent data leak. + - iio: adc: gyroadc: fix leak of device node iterator + - iio: ad7292: Fix of_node refcounting + - iio:adc:ti-adc0832 Fix alignment issue with timestamp + - iio:adc:ti-adc12138 Fix alignment issue with timestamp + - iio:imu:st_lsm6dsx Fix alignment and data leak issues + - iio:gyro:itg3200: Fix timestamp alignment and prevent data leak. + - powerpc/drmem: Make lmb_size 64 bit + - rcu-tasks: Fix grace-period/unlock race in RCU Tasks Trace + - rcu-tasks: Fix low-probability task_struct leak + - rcu-tasks: Enclose task-list scan in rcu_read_lock() + - MIPS: DEC: Restore bootmem reservation for firmware working memory area + - MIPS: configs: lb60: Fix defconfig not selecting correct board + - s390/stp: add locking to sysfs functions + - powerpc: Warn about use of smt_snooze_delay + - powerpc/memhotplug: Make lmb size 64bit + - powerpc/powernv/elog: Fix race while processing OPAL error log event. + - powerpc/powermac: Fix low_sleep_handler with KUAP and KUEP + - powerpc/mce: Avoid nmi_enter/exit in real mode on pseries hash + - powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct + - powerpc/32: Fix vmap stack - Properly set r1 before activating MMU + - block: advance iov_iter on bio_add_hw_page failure + - io_uring: use type appropriate io_kiocb handler for double poll + - gfs2: Make sure we don't miss any delayed withdraws + - gfs2: Only access gl_delete for iopen glocks + - NFSv4: Wait for stateid updates after CLOSE/OPEN_DOWNGRADE + - NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag + - NFSD: Add missing NFSv2 .pc_func methods + - ubifs: dent: Fix some potential memory leaks while iterating entries + - ubifs: xattr: Fix some potential memory leaks while iterating entries + - ubifs: journal: Make sure to not dirty twice for auth nodes + - ubifs: Fix a memleak after dumping authentication mount options + - ubifs: Don't parse authentication mount options in remount process + - ubifs: mount_ubifs: Release authentication resource in error handling path + - perf vendor events amd: Add L2 Prefetch events for zen1 + - perf python scripting: Fix printable strings in python3 scripts + - ARC: perf: redo the pct irq missing in device-tree handling + - ubi: check kthread_should_stop() after the setting of task state + - ia64: fix build error with !COREDUMP + - rtc: rx8010: don't modify the global rtc ops + - i2c: imx: Fix external abort on interrupt in exit paths + - drm/amdgpu: don't map BO in reserved region + - drm/amd/display: Fix incorrect backlight register offset for DCN + - drm/amd/display: Increase timeout for DP Disable + - drm/amdgpu/vcn1.0: fix no previous prototype for functions + - drm/amdgpu: vcn and jpeg ring synchronization + - drm/amdgpu: correct the gpu reset handling for job != NULL case + - drm/amdkfd: Use same SQ prefetch setting as amdgpu + - drm/amd/display: Avoid MST manager resource leak. + - drm/amdgpu: increase the reserved VM size to 2MB + - drm/amd/display: Don't invoke kgdb_breakpoint() unconditionally + - drm/amd/display: Fix kernel panic by dal_gpio_open() error + - ceph: promote to unsigned long long before shifting + - libceph: clear con->out_msg on Policy::stateful_server faults + - 9P: Cast to loff_t before multiplying + - net/sunrpc: Fix return value for sysctl sunrpc.transports + - PCI: qcom: Make sure PCIe is reset before init for rev 2.1.0 + - ring-buffer: Return 0 on success from ring_buffer_resize() + - intel_idle: Ignore _CST if control cannot be taken from the platform + - intel_idle: Fix max_cstate for processor models without C-state tables + - cpufreq: Introduce CPUFREQ_NEED_UPDATE_LIMITS driver flag + - vringh: fix __vringh_iov() when riov and wiov are different + - ext4: fix leaking sysfs kobject after failed mount + - ext4: fix error handling code in add_new_gdb + - ext4: fix invalid inode checksum + - ext4: clear buffer verified flag if read meta block from disk + - ext4: fix bdev write error check failed when mount fs with ro + - ext4: fix bs < ps issue reported with dioread_nolock mount opt + - ext4: do not use extent after put_bh + - drm/ttm: fix eviction valuable range check. + - mmc: sdhci-of-esdhc: make sure delay chain locked for HS400 + - mmc: sdhci-of-esdhc: set timeout to max before tuning + - mmc: sdhci: Use Auto CMD Auto Select only when v4_mode is true + - memory: tegra: Remove GPU from DRM IOMMU group + - memory: brcmstb_dpfe: Fix memory leak + - futex: Adjust absolute futex timeouts with per time namespace offset + - drm/amd/pm: increase mclk switch threshold to 200 us + - tty: make FONTX ioctl use the tty pointer they were actually passed + - arm64: berlin: Select DW_APB_TIMER_OF + - [Config] update annotations for DW_APB_TIMER + - cachefiles: Handle readpage error correctly + - hil/parisc: Disable HIL driver when it gets stuck + - arm: dts: mt7623: add missing pause for switchport + - ARM: aspeed: g5: Do not set sirq polarity + - ARM: dts: s5pv210: fix pinctrl property of "vibrator-en" regulator in Aries + - ARM: config: aspeed: Fix selection of media drivers + - ARM: samsung: fix PM debug build with DEBUG_LL but !MMU + - ARM: s3c24xx: fix missing system reset + - arm64: Change .weak to SYM_FUNC_START_WEAK_PI for arch/arm64/lib/mem*.S + - arm64: dts: marvell: espressobin: Add ethernet switch aliases + - null_blk: synchronization fix for zoned device + - coresight: cti: Initialize dynamic sysfs attributes + - device property: Keep secondary firmware node secondary by type + - device property: Don't clear secondary pointer for shared primary firmware + node + - KVM: arm64: Fix AArch32 handling of DBGD{CCINT,SCRext} and DBGVCR + - staging: fieldbus: anybuss: jump to correct label in an error path + - staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice + - staging: octeon: repair "fixed-link" support + - staging: octeon: Drop on uncorrectable alignment or FCS error + - cpufreq: Introduce cpufreq_driver_test_flags() + - cpufreq: schedutil: Always call driver if CPUFREQ_NEED_UPDATE_LIMITS is set + - time: Prevent undefined behaviour in timespec64_to_ns() + - block: add capacity field to zone descriptors + - null_blk: introduce zone capacity for zoned device + - null_blk: Fix zone reset all tracing + - null_blk: Fix locking in zoned mode + - usb: dwc2: Avoid leaving the error_debugfs label unused + + * [HP 635] Radeon 6310 brightness control does not work (LP: #1894667) // + Groovy update: upstream stable patchset 2020-12-14 (LP: #1908150) + - ACPI: video: use ACPI backlight for HP 635 Notebook + + * CVE-2020-28974 + - vt: Disable KD_FONT_OP_COPY + + * stack trace in kernel (LP: #1903596) + - net: napi: remove useless stack trace + + * Refresh ACPI wakeup power to make Thunderbolt hotplug detection work + (LP: #1906229) + - PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup() + - PM: ACPI: Refresh wakeup device power configuration every time + + * CVE-2020-27777 + - powerpc/rtas: Restrict RTAS requests from userspace + - [Config]: Set CONFIG_PPC_RTAS_FILTER + + * NULL pointer dereference when configuring multi-function with devfn != 0 + before devfn == 0 (LP: #1903682) + - s390/pci: fix hot-plug of PCI function missing bus + + * [UBUNTU 20.10] Applications runing in QEMU/KVM get translation faults + (LP: #1906255) + - s390: fix fpu restore in entry.S + + * Add dpcd backlight control for 0x4c83 0x4f41 (LP: #1905663) + - SAUCE: drm/dp: Add dpcd backlight control for 0x4c83 0x4f41 + + -- Ian May Mon, 08 Feb 2021 18:58:55 -0600 + +linux (5.8.0-43.49) groovy; urgency=medium + + * groovy/linux: 5.8.0-43.49 -proposed tracker (LP: #1914689) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Exploitable vulnerabilities in AF_VSOCK implementation (LP: #1914668) + - vsock: fix the race conditions in multi-transport support + + -- Khalid Elmously Thu, 04 Feb 2021 21:41:23 -0500 + +linux (5.8.0-41.46) groovy; urgency=medium + + * groovy/linux: 5.8.0-41.46 -proposed tracker (LP: #1912219) + + * Groovy update: upstream stable patchset 2020-12-17 (LP: #1908555) // nvme + drive fails after some time (LP: #1910866) + - Revert "nvme-pci: remove last_sq_tail" + + * initramfs unpacking failed (LP: #1835660) + - SAUCE: lib/decompress_unlz4.c: correctly handle zero-padding around initrds. + + * overlay: permission regression in 5.4.0-51.56 due to patches related to + CVE-2020-16120 (LP: #1900141) + - ovl: do not fail because of O_NOATIME + + -- Kleber Sacilotto de Souza Mon, 18 Jan 2021 17:01:08 +0100 + +linux (5.8.0-40.45) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Kleber Sacilotto de Souza Fri, 15 Jan 2021 11:10:22 +0100 + +linux (5.8.0-38.43) groovy; urgency=medium + + * groovy/linux: 5.8.0-38.43 -proposed tracker (LP: #1911143) + + * CVE-2020-28374 + - SAUCE: target: fix XCOPY NAA identifier lookup + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Kleber Sacilotto de Souza Tue, 12 Jan 2021 12:40:28 +0100 + +linux (5.8.0-36.40) groovy; urgency=medium + + * debian/scripts/file-downloader does not handle positive failures correctly + (LP: #1878897) + - [Packaging] file-downloader not handling positive failures correctly + + -- Thadeu Lima de Souza Cascardo Tue, 05 Jan 2021 17:57:31 -0300 + +linux (5.8.0-35.39) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * CVE-2021-1052 // CVE-2021-1053 + - [Packaging] NVIDIA -- Add the NVIDIA 460 driver + + -- Thadeu Lima de Souza Cascardo Tue, 05 Jan 2021 12:39:03 -0300 + +linux (5.8.0-34.37) groovy; urgency=medium + + * groovy/linux: 5.8.0-34.37 -proposed tracker (LP: #1907576) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [Ubuntu 21.04 FEAT] mpt3sas: Request to include the patch set which supports + topology where zoning is enabled in expander (LP: #1899802) + - scsi: mpt3sas: Define hba_port structure + - scsi: mpt3sas: Allocate memory for hba_port objects + - scsi: mpt3sas: Rearrange _scsih_mark_responding_sas_device() + - scsi: mpt3sas: Update hba_port's sas_address & phy_mask + - scsi: mpt3sas: Get device objects using sas_address & portID + - scsi: mpt3sas: Rename transport_del_phy_from_an_existing_port() + - scsi: mpt3sas: Get sas_device objects using device's rphy + - scsi: mpt3sas: Update hba_port objects after host reset + - scsi: mpt3sas: Set valid PhysicalPort in SMPPassThrough + - scsi: mpt3sas: Handling HBA vSES device + - scsi: mpt3sas: Add bypass_dirty_port_flag parameter + - scsi: mpt3sas: Handle vSES vphy object during HBA reset + - scsi: mpt3sas: Add module parameter multipath_on_hba + - scsi: mpt3sas: Bump driver version to 35.101.00.00 + + * CVE-2020-12912 + - hwmon: (amd_energy) modify the visibility of the counters + + * Intel Tiger Lake IDs supplement (LP: #1904521) + - mtd: spi-nor: intel-spi: Add support for Intel Tiger Lake-H SPI serial flash + - pinctrl: tigerlake: Add support for Tiger Lake-H + + * [i915] Noise-like lines of graphics corruption when moving windows in Xorg + sessions (LP: #1896091) + - Revert "UBUNTU: SAUCE: drm/i915: Synchronize active and retire callbacks" + + * Fix no headset sound after S3 on Intel HDA (LP: #1904595) + - ALSA: hda: Refactor codec PM to use direct-complete optimization + - ALSA: hda: Separate runtime and system suspend + - ALSA: hda: Reinstate runtime_allow() for all hda controllers + + * Ask 8821C Bluetooth controller to drop old firmware (LP: #1904221) + - Bluetooth: btrtl: Ask 8821C to drop old firmware + - Bluetooth: btrtl: fix incorrect skb allocation failure check + + * Use ACPI S5 for reboot (LP: #1904225) + - PM: ACPI: reboot: Use S5 for reboot + + * Groovy update: v5.8.18 upstream stable release (LP: #1904941) + - netfilter: nftables_offload: KASAN slab-out-of-bounds Read in + nft_flow_rule_create + - io_uring: don't run task work on an exiting task + - io_uring: allow timeout/poll/files killing to take task into account + - io_uring: move dropping of files into separate helper + - io_uring: stash ctx task reference for SQPOLL + - io_uring: unconditionally grab req->task + - io_uring: return cancelation status from poll/timeout/files handlers + - io_uring: enable task/files specific overflow flushing + - io_uring: don't rely on weak ->files references + - io_uring: reference ->nsproxy for file table commands + - io_wq: Make io_wqe::lock a raw_spinlock_t + - io-wq: fix use-after-free in io_wq_worker_running + - io_uring: no need to call xa_destroy() on empty xarray + - io_uring: Fix use of XArray in __io_uring_files_cancel + - io_uring: Fix XArray usage in io_uring_add_task_file + - io_uring: Convert advanced XArray uses to the normal API + - scripts/setlocalversion: make git describe output more reliable + - efi/arm64: libstub: Deal gracefully with EFI_RNG_PROTOCOL failure + - fs/kernel_read_file: Remove FIRMWARE_EFI_EMBEDDED enum + - arm64: Run ARCH_WORKAROUND_1 enabling code on all CPUs + - arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs + - arm64: link with -z norelro regardless of CONFIG_RELOCATABLE + - x86/PCI: Fix intel_mid_pci.c build error when ACPI is not enabled + - x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}() + - [Config] update config for ARCH_HAS_COPY_MC + - x86/copy_mc: Introduce copy_mc_enhanced_fast_string() + - bnxt_en: Check abort error state in bnxt_open_nic(). + - bnxt_en: Fix regression in workqueue cleanup logic in bnxt_remove_one(). + - bnxt_en: Invoke cancel_delayed_work_sync() for PFs also. + - bnxt_en: Re-write PCI BARs after PCI fatal error. + - bnxt_en: Send HWRM_FUNC_RESET fw command unconditionally. + - chelsio/chtls: fix deadlock issue + - chelsio/chtls: fix memory leaks in CPL handlers + - chelsio/chtls: fix tls record info to user + - cxgb4: set up filter action after rewrites + - gtp: fix an use-before-init in gtp_newlink() + - ibmveth: Fix use of ibmveth in a bridge. + - ibmvnic: fix ibmvnic_set_mac + - mlxsw: core: Fix memory leak on module removal + - netem: fix zero division in tabledist + - net: hns3: Clear the CMDQ registers before unmapping BAR region + - net: ipa: command payloads already mapped + - net/sched: act_mpls: Add softdep on mpls_gso.ko + - r8169: fix issue with forced threading in combination with shared interrupts + - ravb: Fix bit fields checking in ravb_hwtstamp_get() + - tcp: Prevent low rmem stalls with SO_RCVLOWAT. + - tipc: fix memory leak caused by tipc_buf_append() + - net: protect tcf_block_unbind with block lock + - erofs: avoid duplicated permission check for "trusted." xattrs + - arch/x86/amd/ibs: Fix re-arming IBS Fetch + - x86/traps: Fix #DE Oops message regression + - x86/xen: disable Firmware First mode for correctable memory errors + - PCI: aardvark: Fix initialization with old Marvell's Arm Trusted Firmware + - ata: ahci: mvebu: Make SATA PHY optional for Armada 3720 + - fuse: fix page dereference after free + - bpf: Fix comment for helper bpf_current_task_under_cgroup() + - evm: Check size of security.evm before using it + - p54: avoid accessing the data mapped to streaming DMA + - cxl: Rework error message for incompatible slots + - RDMA/addr: Fix race with netevent_callback()/rdma_addr_cancel() + - mtd: lpddr: Fix bad logic in print_drs_error + - drm/i915/gem: Serialise debugfs i915_gem_objects with ctx->mutex + - serial: qcom_geni_serial: To correct QUP Version detection logic + - serial: pl011: Fix lockdep splat when handling magic-sysrq interrupt + - PM: runtime: Fix timer_expires data type on 32-bit arches + - ata: sata_rcar: Fix DMA boundary mask + - xen/gntdev.c: Mark pages as dirty + - openrisc: Fix issue with get_user for 64-bit values + - misc: rtsx: do not setting OC_POWER_DOWN reg in rtsx_pci_init_ocp() + - phy: marvell: comphy: Convert internal SMCC firmware return codes to errno + - Linux 5.8.18 + + * linux-riscv 5.8.0-9-generic (all 5.8 kernels) fail to boot in qemu + (LP: #1904912) + - riscv: Fixup bootup failure with HARDENED_USERCOPY + + * Bionic: btrfs: kernel BUG at /build/linux- + eTBZpZ/linux-4.15.0/fs/btrfs/ctree.c:3233! (LP: #1902254) + - btrfs: tree-checker: fix incorrect printk format + + -- Stefan Bader Thu, 10 Dec 2020 18:42:54 +0100 + +linux (5.8.0-33.36) groovy; urgency=medium + + * groovy/linux: 5.8.0-33.36 -proposed tracker (LP: #1907408) + + * raid10: discard leads to corrupted file system (LP: #1907262) + - Revert "dm raid: remove unnecessary discard limits for raid10" + - Revert "dm raid: fix discard limits for raid1 and raid10" + - Revert "md/raid10: improve discard request for far layout" + - Revert "md/raid10: improve raid10 discard request" + - Revert "md/raid10: pull codes that wait for blocked dev into one function" + - Revert "md/raid10: extend r10bio devs to raid disks" + - Revert "md: add md_submit_discard_bio() for submitting discard bio" + + -- Khalid Elmously Wed, 09 Dec 2020 03:56:47 -0500 + +linux (5.8.0-31.33) groovy; urgency=medium + + * groovy/linux: 5.8.0-31.33 -proposed tracker (LP: #1905299) + + * Groovy 5.8 kernel hangs on boot on CPUs with eLLC (LP: #1903397) + - drm/i915: Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup + during fbdev init + + * CVE-2020-4788 + - selftests/powerpc: rfi_flush: disable entry flush if present + - powerpc/64s: flush L1D on kernel entry + - powerpc/64s: flush L1D after user accesses + - selftests/powerpc: entry flush test + + -- Thadeu Lima de Souza Cascardo Mon, 23 Nov 2020 15:03:08 -0300 + +linux (5.8.0-30.32) groovy; urgency=medium + + * groovy/linux: 5.8.0-30.32 -proposed tracker (LP: #1903194) + + * Update kernel packaging to support forward porting kernels (LP: #1902957) + - [Debian] Update for leader included in BACKPORT_SUFFIX + + * Avoid double newline when running insertchanges (LP: #1903293) + - [Packaging] insertchanges: avoid double newline + + * EFI: Fails when BootCurrent entry does not exist (LP: #1899993) + - efivarfs: Replace invalid slashes with exclamation marks in dentries. + + * raid10: Block discard is very slow, causing severe delays for mkfs and + fstrim operations (LP: #1896578) + - md: add md_submit_discard_bio() for submitting discard bio + - md/raid10: extend r10bio devs to raid disks + - md/raid10: pull codes that wait for blocked dev into one function + - md/raid10: improve raid10 discard request + - md/raid10: improve discard request for far layout + - dm raid: fix discard limits for raid1 and raid10 + - dm raid: remove unnecessary discard limits for raid10 + + * Bionic: btrfs: kernel BUG at /build/linux- + eTBZpZ/linux-4.15.0/fs/btrfs/ctree.c:3233! (LP: #1902254) + - btrfs: extent_io: do extra check for extent buffer read write functions + - btrfs: extent-tree: kill BUG_ON() in __btrfs_free_extent() + - btrfs: extent-tree: kill the BUG_ON() in insert_inline_extent_backref() + - btrfs: ctree: check key order before merging tree blocks + + * Tiger Lake PMC core driver fixes (LP: #1899883) + - platform/x86: intel_pmc_core: update TGL's LPM0 reg bit map name + - platform/x86: intel_pmc_core: fix bound check in pmc_core_mphy_pg_show() + - platform/x86: pmc_core: Use descriptive names for LPM registers + - platform/x86: intel_pmc_core: Fix TigerLake power gating status map + - platform/x86: intel_pmc_core: Fix the slp_s0 counter displayed value + + * drm/i915/dp_mst - System would hang during the boot up. (LP: #1902469) + - Revert "UBUNTU: SAUCE: drm/i915/display: Fix null deref in + intel_psr_atomic_check()" + - drm/i915: Fix encoder lookup during PSR atomic check + + * Undetected Data corruption in MPI workloads that use VSX for reductions on + POWER9 DD2.1 systems (LP: #1902694) + - powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation + - selftests/powerpc: Make alignment handler test P9N DD2.1 vector CI load + workaround + + * [20.04 FEAT] Support/enhancement of NVMe IPL (LP: #1902179) + - s390/ipl: support NVMe IPL kernel parameters + + * uvcvideo: add mapping for HEVC payloads (LP: #1895803) + - media: uvcvideo: Add mapping for HEVC payloads + + * risc-v 5.8 kernel oops on ftrace tests (LP: #1894613) + - stop_machine, rcu: Mark functions as notrace + + * Groovy update: v5.8.17 upstream stable release (LP: #1902137) + - xgb4: handle 4-tuple PEDIT to NAT mode translation + - ibmveth: Switch order of ibmveth_helper calls. + - ibmveth: Identify ingress large send packets. + - ipv4: Restore flowi4_oif update before call to xfrm_lookup_route + - mlx4: handle non-napi callers to napi_poll + - net: dsa: microchip: fix race condition + - net: fec: Fix phy_device lookup for phy_reset_after_clk_enable() + - net: fec: Fix PHY init after phy_reset_after_clk_enable() + - net: fix pos incrementment in ipv6_route_seq_next + - net: ipa: skip suspend/resume activities if not set up + - net: mptcp: make DACK4/DACK8 usage consistent among all subflows + - net: sched: Fix suspicious RCU usage while accessing tcf_tunnel_info + - net/smc: fix use-after-free of delayed events + - net/smc: fix valid DMBE buffer sizes + - net/tls: sendfile fails with ktls offload + - net: usb: qmi_wwan: add Cellient MPL200 card + - tipc: fix the skb_unshare() in tipc_buf_append() + - socket: fix option SO_TIMESTAMPING_NEW + - socket: don't clear SOCK_TSTAMP_NEW when SO_TIMESTAMPNS is disabled + - can: m_can_platform: don't call m_can_class_suspend in runtime suspend + - can: j1935: j1939_tp_tx_dat_new(): fix missing initialization of skbcnt + - net: j1939: j1939_session_fresh_new(): fix missing initialization of skbcnt + - net/ipv4: always honour route mtu during forwarding + - net_sched: remove a redundant goto chain check + - r8169: fix data corruption issue on RTL8402 + - binder: fix UAF when releasing todo list + - ALSA: bebob: potential info leak in hwdep_read() + - ALSA: hda/hdmi: fix incorrect locking in hdmi_pcm_close + - tipc: re-configure queue limit for broadcast link + - tipc: fix incorrect setting window for bcast link + - chelsio/chtls: fix socket lock + - chelsio/chtls: correct netdevice for vlan interface + - chelsio/chtls: fix panic when server is on ipv6 + - chelsio/chtls: Fix panic when listen on multiadapter + - chelsio/chtls: correct function return and return type + - chelsio/chtls: fix writing freed memory + - ibmvnic: save changed mac address to adapter->mac_addr + - icmp: randomize the global rate limiter + - mptcp: initialize mptcp_options_received's ahmac + - net: ftgmac100: Fix Aspeed ast2600 TX hang issue + - net: hdlc: In hdlc_rcv, check to make sure dev is an HDLC device + - net: hdlc_raw_eth: Clear the IFF_TX_SKB_SHARING flag after calling + ether_setup + - net: Properly typecast int values to set sk_max_pacing_rate + - net/sched: act_ct: Fix adding udp port mangle operation + - net/sched: act_tunnel_key: fix OOB write in case of IPv6 ERSPAN tunnels + - nexthop: Fix performance regression in nexthop deletion + - nfc: Ensure presence of NFC_ATTR_FIRMWARE_NAME attribute in + nfc_genl_fw_download() + - r8169: fix operation under forced interrupt threading + - selftests: forwarding: Add missing 'rp_filter' configuration + - tcp: fix to update snd_wl1 in bulk receiver fast path + - net: ethernet: mtk-star-emac: select REGMAP_MMIO + - net/sched: act_gate: Unlock ->tcfa_lock in tc_setup_flow_action() + - ALSA: hda - Don't register a cb func if it is registered already + - ALSA: hda - Fix the return value if cb func is already registered + - ALSA: usb-audio: Line6 Pod Go interface requires static clock rate quirk + - ALSA: hda/realtek - set mic to auto detect on a HP AIO machine + - ALSA: hda/realtek - Add mute Led support for HP Elitebook 845 G7 + - ALSA: hda/realtek: Enable audio jacks of ASUS D700SA with ALC887 + - cifs: remove bogus debug code + - cifs: Return the error from crypt_message when enc/dec key not found. + - SMB3: Resolve data corruption of TCP server info fields + - SMB3.1.1: Fix ids returned in POSIX query dir + - smb3: do not try to cache root directory if dir leases not supported + - smb3: fix stat when special device file and mounted with modefromsid + - arm64: Make use of ARCH_WORKAROUND_1 even when KVM is not enabled + - KVM: nVMX: Morph notification vector IRQ on nested VM-Enter to pending PI + - KVM: nVMX: Reset the segment cache when stuffing guest segs + - KVM: nVMX: Reload vmcs01 if getting vmcs12's pages fails + - KVM: x86/mmu: Commit zap of remaining invalid pages when recovering lpages + - KVM: x86: Intercept LA57 to inject #GP fault when it's reserved + - KVM: SVM: Initialize prev_ga_tag before use + - ima: Don't ignore errors from crypto_shash_update() + - crypto: algif_aead - Do not set MAY_BACKLOG on the async path + - crypto: caam/qi - add fallback for XTS with more than 8B IV + - crypto: caam/qi - add support for more XTS key lengths + - RAS/CEC: Fix cec_init() prototype + - sched/fair: Fix wrong negative conversion in find_energy_efficient_cpu() + - microblaze: fix kbuild redundant file warning + - EDAC/i5100: Fix error handling order in i5100_init_one() + - EDAC/aspeed: Fix handling of platform_get_irq() error + - EDAC/ti: Fix handling of platform_get_irq() error + - perf/x86/intel/ds: Fix x86_pmu_stop warning for large PEBS + - x86/fpu: Allow multiple bits in clearcpuid= parameter + - arm64: kprobe: add checks for ARMv8.3-PAuth combined instructions + - drivers/perf: xgene_pmu: Fix uninitialized resource struct + - drivers/perf: thunderx2_pmu: Fix memory resource error handling + - sched/fair: Fix wrong cpu selecting from isolated domain + - sched/fair: Use dst group while checking imbalance for NUMA balancer + - arm64: perf: Add missing ISB in armv8pmu_enable_counter() + - perf/x86/intel/uncore: Update Ice Lake uncore units + - perf/x86/intel/uncore: Reduce the number of CBOX counters + - perf/x86/intel/uncore: Fix the scale of the IMC free-running events + - x86/nmi: Fix nmi_handle() duration miscalculation + - x86/events/amd/iommu: Fix sizeof mismatch + - pinctrl: qcom: Set IRQCHIP_SET_TYPE_MASKED and IRQCHIP_MASK_ON_SUSPEND flags + - pinctrl: qcom: Use return value from irq_set_wake() call + - perf/x86: Fix n_pair for cancelled txn + - perf/core: Fix race in the perf_mmap_close() function + - crypto: algif_skcipher - EBUSY on aio should be an error + - crypto: mediatek - Fix wrong return value in mtk_desc_ring_alloc() + - crypto: ixp4xx - Fix the size used in a 'dma_free_coherent()' call + - crypto: picoxcell - Fix potential race condition bug + - media: vivid: Fix global-out-of-bounds read in precalculate_color() + - media: tuner-simple: fix regression in simple_set_radio_freq + - crypto: ccree - fix runtime PM imbalance on error + - media: Revert "media: exynos4-is: Add missed check for + pinctrl_lookup_state()" + - media: hantro: h264: Get the correct fallback reference buffer + - media: hantro: postproc: Fix motion vector space allocation + - media: ov5640: Correct Bit Div register in clock tree diagram + - media: m5mols: Check function pointer in m5mols_sensor_power + - fscrypt: restrict IV_INO_LBLK_32 to ino_bits <= 32 + - media: uvcvideo: Set media controller entity functions + - media: uvcvideo: Silence shift-out-of-bounds warning + - media: staging/intel-ipu3: css: Correctly reset some memory + - media: omap3isp: Fix memleak in isp_probe + - media: i2c: ov5640: Remain in power down for DVP mode unless streaming + - media: i2c: ov5640: Separate out mipi configuration from s_power + - media: i2c: ov5640: Enable data pins on poweron for DVP mode + - media: rcar_drif: Fix fwnode reference leak when parsing DT + - media: rcar_drif: Allocate v4l2_async_subdev dynamically + - media: rcar-csi2: Allocate v4l2_async_subdev dynamically + - spi: fsi: Handle 9 to 15 byte transfers lengths + - spi: fsi: Fix use of the bneq+ sequencer instruction + - spi: fsi: Implement restricted size for certain controllers + - spi: dw-pci: free previously allocated IRQs if desc->setup() fails + - crypto: omap-sham - fix digcnt register handling with export/import + - hwmon: (pmbus/max34440) Fix status register reads for MAX344{51,60,61} + - hwmon: (w83627ehf) Fix a resource leak in probe + - cypto: mediatek - fix leaks in mtk_desc_ring_alloc + - crypto: stm32/crc32 - Avoid lock if hardware is already used + - crypto: sun8i-ce - handle endianness of t_common_ctl + - media: mx2_emmaprp: Fix memleak in emmaprp_probe + - media: tc358743: initialize variable + - media: tc358743: cleanup tc358743_cec_isr + - media: rcar-vin: Fix a reference count leak. + - media: rockchip/rga: Fix a reference count leak. + - media: platform: fcp: Fix a reference count leak. + - media: camss: Fix a reference count leak. + - media: s5p-mfc: Fix a reference count leak + - media: stm32-dcmi: Fix a reference count leak + - media: ti-vpe: Fix a missing check and reference count leak + - regulator: resolve supply after creating regulator + - pinctrl: bcm: fix kconfig dependency warning when !GPIOLIB + - spi: spi-s3c64xx: swap s3c64xx_spi_set_cs() and s3c64xx_enable_datapath() + - spi: spi-s3c64xx: Check return values + - hwmon: (bt1-pvt) Test sensor power supply on probe + - hwmon: (bt1-pvt) Cache current update timeout + - hwmon: (bt1-pvt) Wait for the completion with timeout + - btrfs: add owner and fs_info to alloc_state io_tree + - blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue + - ath10k: provide survey info as accumulated data + - drm/vkms: fix xrgb on compute crc + - Bluetooth: hci_uart: Cancel init work before unregistering + - drm/amd/display: Fix wrong return value in dm_update_plane_state() + - drm/vgem: add missing platform_device_unregister() in vgem_init() + - drm/vkms: add missing platform_device_unregister() in vkms_init() + - drm: panel: Fix bus format for OrtusTech COM43H4M85ULC panel + - ath6kl: prevent potential array overflow in ath6kl_add_new_sta() + - ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb() + - ath10k: Fix the size used in a 'dma_free_coherent()' call in an error + handling path + - wcn36xx: Fix reported 802.11n rx_highest rate wcn3660/wcn3680 + - ASoC: qcom: lpass-platform: fix memory leak + - ASoC: qcom: lpass-cpu: fix concurrency issue + - ath11k: Fix possible memleak in ath11k_qmi_init_service + - brcmfmac: check ndev pointer + - mwifiex: Do not use GFP_KERNEL in atomic context + - staging: rtl8192u: Do not use GFP_KERNEL in atomic context + - drm/amd/display: fix potential integer overflow when shifting 32 bit + variable bl_pwm + - selftests/bpf: Fix test_vmlinux test to use bpf_probe_read_user() + - drm/gma500: fix error check + - scsi: qla4xxx: Fix an error handling path in 'qla4xxx_get_host_stats()' + - scsi: qla2xxx: Fix the size used in a 'dma_free_coherent()' call + - scsi: qla2xxx: Fix wrong return value in qlt_chk_unresolv_exchg() + - scsi: qla2xxx: Fix wrong return value in qla_nvme_register_hba() + - scsi: csiostor: Fix wrong return value in csio_hw_prep_fw() + - libbpf: Fix unintentional success return code in bpf_object__load + - wilc1000: Fix memleak in wilc_sdio_probe + - wilc1000: Fix memleak in wilc_bus_probe + - rtw88: don't treat NULL pointer as an array + - backlight: sky81452-backlight: Fix refcount imbalance on error + - staging: emxx_udc: Fix passing of NULL to dma_alloc_coherent() + - VMCI: check return value of get_user_pages_fast() for errors + - mm/error_inject: Fix allow_error_inject function signatures. + - drm: panel: Fix bpc for OrtusTech COM43H4M85ULC panel + - samples/bpf: Fix to xdpsock to avoid recycling frames + - drm/crc-debugfs: Fix memleak in crc_control_write + - Bluetooth: Clear suspend tasks on unregister + - selftests: vm: add fragment CONFIG_GUP_BENCHMARK + - scsi: ufs: Make ufshcd_print_trs() consider UFSHCD_QUIRK_PRDT_BYTE_GRAN + - binder: Remove bogus warning on failed same-process transaction + - tty: serial: earlycon dependency + - pty: do tty_flip_buffer_push without port->lock in pty_write + - pwm: lpss: Fix off by one error in base_unit math in pwm_lpss_prepare() + - pwm: lpss: Add range limit check for the base_unit register value + - drivers/virt/fsl_hypervisor: Fix error handling path + - ath11k: fix a double free and a memory leak + - video: fbdev: vga16fb: fix setting of pixclock because a pass-by-value error + - video: fbdev: sis: fix null ptr dereference + - video: fbdev: radeon: Fix memleak in radeonfb_pci_register + - ASoC: fsl: imx-es8328: add missing put_device() call in imx_es8328_probe() + - scsi: ufs: ufs-mediatek: Fix HOST_PA_TACTIVATE quirk + - HID: roccat: add bounds checking in kone_sysfs_write_settings() + - drm/msm: Avoid div-by-zero in dpu_crtc_atomic_check() + - drm/panfrost: Ensure GPU quirks are always initialised + - iomap: Clear page error before beginning a write + - iomap: Mark read blocks uptodate in write_begin + - selftests/lkdtm: Use "comm" instead of "diff" for dmesg + - Bluetooth: Re-order clearing suspend tasks + - pinctrl: mcp23s08: Fix mcp23x17_regmap initialiser + - pinctrl: mcp23s08: Fix mcp23x17 precious range + - pinctrl: devicetree: Keep deferring even on timeout + - drm/msm/adreno: fix probe without iommu + - net/mlx5: Fix uninitialized variable warning + - net/mlx5: Don't call timecounter cyc2time directly from 1PPS flow + - scsi: mpt3sas: Fix sync irqs + - net: stmmac: Fix incorrect location to set real_num_rx|tx_queues + - net: stmmac: use netif_tx_start|stop_all_queues() function + - xfs: force the log after remapping a synchronous-writes file + - cpufreq: armada-37xx: Add missing MODULE_DEVICE_TABLE + - drm: mxsfb: check framebuffer pitch + - ima: Fix NULL pointer dereference in ima_file_hash + - ASoC: topology: disable size checks for bytes_ext controls if needed + - ASoC: tlv320adcx140: Fix digital gain range + - coresight: etm4x: Fix etm4_count race by moving cpuhp callbacks to init + - coresight: fix offset by one error in counting ports + - coresight: cti: disclaim device only when it's claimed + - coresight: cti: remove pm_runtime_get_sync() from CPU hotplug + - coresight: etm4x: Ensure default perf settings filter user/kernel + - coresight: etm4x: Fix issues within reset interface of sysfs + - coresight: cti: Write regsiters directly in cti_enable_hw() + - coresight: etm4x: Handle unreachable sink in perf mode + - coresight: etm4x: Fix issues on trcseqevr access + - nvmem: core: fix missing of_node_put() in of_nvmem_device_get() + - selftests: mptcp: interpret \n as a new line + - selftests/bpf: Fix endianness issue in sk_assign + - selftests/bpf: Fix endianness issue in test_sockopt_sk + - xhci: don't create endpoint debugfs entry before ring buffer is set. + - net: dsa: rtl8366: Check validity of passed VLANs + - net: dsa: rtl8366: Refactor VLAN/PVID init + - net: dsa: rtl8366: Skip PVID setting if not requested + - net: wilc1000: clean up resource in error path of init mon interface + - ASoC: tas2770: Fix calling reset in probe + - ASoC: tas2770: Add missing bias level power states + - ASoC: tas2770: Fix required DT properties in the code + - ASoC: tas2770: Fix error handling with update_bits + - ASoC: tlv320aic32x4: Fix bdiv clock rate derivation + - net: dsa: rtl8366rb: Support all 4096 VLANs + - ASoC: SOF: control: add size checks for ext_bytes control .put() + - ASoC: tas2770: Fix unbalanced calls to pm_runtime + - spi: omap2-mcspi: Improve performance waiting for CHSTAT + - ath11k: Add checked value for ath11k_ahb_remove + - ath6kl: wmi: prevent a shift wrapping bug in ath6kl_wmi_delete_pstream_cmd() + - drm: rcar-du: Put reference to VSP device + - phy: rockchip-dphy-rx0: Include linux/delay.h + - dmaengine: dmatest: Check list for emptiness before access its last entry + - ASoC: cros_ec_codec: fix kconfig dependency warning for + SND_SOC_CROS_EC_CODEC + - misc: mic: scif: Fix error handling path + - ALSA: seq: oss: Avoid mutex lock for a long-time ioctl + - usb: dwc2: Fix parameter type in function pointer prototype + - usb: dwc3: core: Properly default unspecified speed + - usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails + - rtw88: Fix probe error handling race with firmware loading + - rtw88: Fix potential probe error handling race with wow firmware loading + - mt76: mt7915: fix possible memory leak in mt7915_mcu_add_beacon + - quota: clear padding in v2r1_mem2diskdqb() + - slimbus: core: check get_addr before removing laddr ida + - slimbus: core: do not enter to clock pause mode in core + - slimbus: qcom-ngd-ctrl: disable ngd in qmi server down callback + - ASoC: fsl_sai: Instantiate snd_soc_dai_driver + - HID: hid-input: fix stylus battery reporting + - tty: hvc: fix link error with CONFIG_SERIAL_CORE_CONSOLE=n + - nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell() + - hv: clocksource: Add notrace attribute to read_hv_sched_clock_*() functions + - nl80211: fix OBSS PD min and max offset validation + - iomap: Use kzalloc to allocate iomap_page + - coresight: etm: perf: Fix warning caused by etm_setup_aux failure + - coresight: cti: Fix remove sysfs link error + - coresight: cti: Fix bug clearing sysfs links on callback + - coresight: etm4x: Fix save and restore of TRCVMIDCCTLR1 register + - ibmvnic: set up 200GBPS speed + - bpf: disallow attaching modify_return tracing functions to other BPF + programs + - selftests: Remove fmod_ret from test_overhead + - qtnfmac: fix resource leaks on unsupported iftype error return path + - pinctrl: aspeed: Use the right pinconf mask + - iommu/qcom: add missing put_device() call in qcom_iommu_of_xlate() + - iio: adc: stm32-adc: fix runtime autosuspend delay when slow polling + - net: enic: Cure the enic api locking trainwreck + - mfd: sm501: Fix leaks in probe() + - ASoC: wm_adsp: Pass full name to snd_ctl_notify + - iwlwifi: mvm: split a print to avoid a WARNING in ROC + - iwlwifi: dbg: remove no filter condition + - iwlwifi: dbg: run init_cfg function once per driver load + - usb: gadget: f_ncm: fix ncm_bitrate for SuperSpeed and above. + - usb: gadget: u_serial: clear suspended flag when disconnecting + - usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well + - bus: mhi: core: Fix the building of MHI module + - ocxl: fix kconfig dependency warning for OCXL + - nl80211: fix non-split wiphy information + - usb: dwc2: Fix INTR OUT transfers in DDMA mode. + - scsi: target: tcmu: Fix warning: 'page' may be used uninitialized + - scsi: be2iscsi: Fix a theoretical leak in beiscsi_create_eqs() + - dmaengine: ioat: Allocate correct size for descriptor chunk + - ipmi_si: Fix wrong return value in try_smi_init() + - tracing: Fix parse_synth_field() error handling + - platform/x86: mlx-platform: Remove PSU EEPROM configuration + - mwifiex: fix double free + - drm/panfrost: increase readl_relaxed_poll_timeout values + - ipvs: clear skb->tstamp in forwarding path + - bpf, sockmap: Remove skb_orphan and let normal skb_kfree do cleanup + - net: korina: fix kfree of rx/tx descriptor array + - netfilter: nf_log: missing vlan offload tag and proto + - mm/swapfile.c: fix potential memory leak in sys_swapon + - mm/memcg: fix device private memcg accounting + - mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary + - fs: fix NULL dereference due to data race in prepend_path() + - selftests/ftrace: Change synthetic event name for inter-event-combined test + - tracing: Handle synthetic event array field type checking correctly + - i3c: master add i3c_master_attach_boardinfo to preserve boardinfo + - IB/mlx4: Fix starvation in paravirt mux/demux + - IB/mlx4: Adjust delayed work when a dup is observed + - powerpc/pseries: Fix missing of_node_put() in rng_init() + - powerpc/icp-hv: Fix missing of_node_put() in success path + - rcu/tree: Force quiescent state on callback overload + - rcutorture: Properly set rcu_fwds for OOM handling + - RDMA/ucma: Fix locking for ctx->events_reported + - RDMA/ucma: Add missing locking around rdma_leave_multicast() + - mtd: lpddr: fix excessive stack usage with clang + - RDMA/hns: Add a check for current state before modifying QP + - RDMA/umem: Fix signature of stub ib_umem_find_best_pgsz() + - powerpc/pseries: explicitly reschedule during drmem_lmb list traversal + - pseries/drmem: don't cache node id in drmem_lmb struct + - RDMA/mlx5: Fix potential race between destroy and CQE poll + - mtd: mtdoops: Don't write panic data twice + - perf tools: Make GTK2 support opt-in + - tools feature: Add missing -lzstd to the fast path feature detection + - ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values + - xfs: fix finobt btree block recovery ordering + - m68knommu: include SDHC support only when hardware has it + - arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER + - ida: Free allocated bitmap in error path + - xfs: limit entries returned when counting fsmap records + - xfs: fix deadlock and streamline xfs_getfsmap performance + - nfs: add missing "posix" local_lock constant table definition + - xfs: fix high key handling in the rt allocator's query_range function + - RDMA/rtrs-srv: Incorporate ib_register_client into rtrs server init + - RDMA/core: Delete function indirection for alloc/free kernel CQ + - RDMA: Allow fail of destroy CQ + - RDMA/umem: Fix ib_umem_find_best_pgsz() for mappings that cross a page + boundary + - RDMA/umem: Prevent small pages from being returned by + ib_umem_find_best_pgsz() + - RDMA/qedr: Fix qp structure memory leak + - RDMA/qedr: Fix doorbell setting + - RDMA/qedr: Fix use of uninitialized field + - RDMA/qedr: Fix return code if accept is called on a destroyed qp + - RDMA/qedr: Fix inline size returned for iWARP + - powerpc/pseries/svm: Allocate SWIOTLB buffer anywhere in memory + - powerpc/watchpoint: Fix quadword instruction handling on p10 predecessors + - powerpc/watchpoint: Fix handling of vector instructions + - powerpc/watchpoint: Add hw_len wherever missing + - powerpc/book3s64/hash/4k: Support large linear mapping range with 4K + - powerpc/tau: Use appropriate temperature sample interval + - powerpc/tau: Convert from timer to workqueue + - powerpc/tau: Remove duplicated set_thresholds() call + - powerpc/tau: Check processor type before enabling TAU interrupt + - powerpc/tau: Disable TAU between measurements + - powerpc/kasan: Fix CONFIG_KASAN_VMALLOC for 8xx + - powerpc/64s/radix: Fix mm_cpumask trimming race vs kthread_use_mm + - RDMA/cma: Combine cma_ndev_work with cma_work + - RDMA/cma: Remove dead code for kernel rdmacm multicast + - RDMA/cma: Consolidate the destruction of a cma_multicast in one place + - RDMA/cma: Fix use after free race in roce multicast join + - perf intel-pt: Fix "context_switch event has no tid" error + - RDMA/qedr: Fix resource leak in qedr_create_qp + - RDMA/hns: Set the unsupported wr opcode + - RDMA/mlx5: Use set_mkc_access_pd_addr_fields() in reg_create() + - RDMA/mlx5: Make mkeys always owned by the kernel's PD when not enabled + - RDMA/mlx5: Disable IB_DEVICE_MEM_MGT_EXTENSIONS if IB_WR_REG_MR can't work + - i40iw: Add support to make destroy QP synchronous + - perf stat: Skip duration_time in setup_system_wide + - RDMA/hns: Add check for the validity of sl configuration + - RDMA/hns: Solve the overflow of the calc_pg_sz() + - RDMA/hns: Fix the wrong value of rnr_retry when querying qp + - RDMA/hns: Fix configuration of ack_req_freq in QPC + - RDMA/hns: Fix missing sq_sig_type when querying QP + - mtd: hyperbus: hbmc-am654: Fix direct mapping setup flash access + - mtd: rawnand: stm32_fmc2: fix a buffer overflow + - mtd: rawnand: vf610: disable clk on error handling path in probe + - mtd: spinand: gigadevice: Only one dummy byte in QUADIO + - mtd: spinand: gigadevice: Add QE Bit + - mtd: rawnand: ams-delta: Fix non-OF build warning + - kdb: Fix pager search for multi-line strings + - overflow: Include header file with SIZE_MAX declaration + - RDMA/ipoib: Set rtnl_link_ops for ipoib interfaces + - powerpc/64: fix irq replay missing preempt + - powerpc/64: fix irq replay pt_regs->softe value + - powerpc/perf: Exclude pmc5/6 from the irrelevant PMU group constraints + - powerpc/perf/hv-gpci: Fix starting index value + - perf stat: Fix out of bounds CPU map access when handling armv8_pmu events + - i3c: master: Fix error return in cdns_i3c_master_probe() + - powerpc/papr_scm: Add PAPR command family to pass-through command-set + - cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_reboot_notifier + - IB/rdmavt: Fix sizeof mismatch + - RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt() + - f2fs: reject CASEFOLD inode flag without casefold feature + - um: vector: Use GFP_ATOMIC under spin lock + - um: time-travel: Fix IRQ handling in time_travel_handle_message() + - maiblox: mediatek: Fix handling of platform_get_irq() error + - perf trace: Fix off by ones in memset() after realloc() in arches using + libaudit + - selftests/powerpc: Fix eeh-basic.sh exit codes + - f2fs: wait for sysfs kobject removal before freeing f2fs_sb_info + - afs: Fix rapid cell addition/removal by not using RCU on cells tree + - afs: Fix cell refcounting by splitting the usage counter + - afs: Fix cell purging with aliases + - afs: Fix cell removal + - RDMA/rxe: Handle skb_clone() failure in rxe_recv.c + - mm/page_owner: change split_page_owner to take a count + - lib/crc32.c: fix trivial typo in preprocessor condition + - ramfs: fix nommu mmap with gaps in the page cache + - rapidio: fix error handling path + - rapidio: fix the missed put_device() for rio_mport_add_riodev + - mailbox: avoid timer start from callback + - clk: meson: axg-audio: separate axg and g12a regmap tables + - rtc: ds1307: Clear OSF flag on DS1388 when setting time + - i2c: rcar: Auto select RESET_CONTROLLER + - clk: meson: g12a: mark fclk_div2 as critical + - PCI: designware-ep: Fix the Header Type check + - PCI: aardvark: Fix compilation on s390 + - PCI: aardvark: Check for errors from pci_bridge_emul_init() call + - PCI: iproc: Set affinity mask on MSI interrupts + - rpmsg: smd: Fix a kobj leak in in qcom_smd_parse_edge() + - rpmsg: Avoid double-free in mtk_rpmsg_register_device + - PCI/IOV: Mark VFs as not implementing PCI_COMMAND_MEMORY + - vfio: add a singleton check for vfio_group_pin_pages + - s390/pci: Mark all VFs as not implementing PCI_COMMAND_MEMORY + - vfio/pci: Decouple PCI_COMMAND_MEMORY bit checks from is_virtfn + - vfio: fix a missed vfio group put in vfio_pin_pages + - vfio/type1: fix dirty bitmap calculation in vfio_dma_rw + - clk: qcom: gcc-sdm660: Fix wrong parent_map + - clk: keystone: sci-clk: fix parsing assigned-clock data during probe + - pwm: rockchip: Keep enabled PWMs running while probing + - pwm: img: Fix null pointer access in probe + - remoteproc/mediatek: fix null pointer dereference on null scp pointer + - PCI: hv: Fix hibernation in case interrupts are not re-created + - clk: rockchip: Initialize hw to error to avoid undefined behavior + - clk: mediatek: add UART0 clock support + - module: statically initialize init section freeing data + - clk: at91: clk-main: update key before writing AT91_CKGR_MOR + - clk: bcm2835: add missing release if devm_clk_hw_register fails + - kbuild: deb-pkg: do not build linux-headers package if CONFIG_MODULES=n + - watchdog: Fix memleak in watchdog_cdev_register + - watchdog: Use put_device on error + - watchdog: sp5100: Fix definition of EFCH_PM_DECODEEN3 + - svcrdma: fix bounce buffers for unaligned offsets and multiple pages + - ext4: fix dead loop in ext4_mb_new_blocks + - ext4: discard preallocations before releasing group lock + - ext4: disallow modifying DAX inode flag if inline_data has been set + - ext4: limit entries returned when counting fsmap records + - vfio/pci: Clear token on bypass registration failure + - vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages + - clk: imx8mq: Fix usdhc parents order + - SUNRPC: fix copying of multiple pages in gss_read_proxy_verf() + - platform/chrome: cros_ec_lightbar: Reduce ligthbar get version command + - Input: elants_i2c - fix typo for an attribute to show calibration count + - Input: imx6ul_tsc - clean up some errors in imx6ul_tsc_resume() + - Input: stmfts - fix a & vs && typo + - Input: ep93xx_keypad - fix handling of platform_get_irq() error + - Input: omap4-keypad - fix handling of platform_get_irq() error + - Input: twl4030_keypad - fix handling of platform_get_irq() error + - Input: sun4i-ps2 - fix handling of platform_get_irq() error + - KVM: x86: emulating RDPID failure shall return #UD rather than #GP + - scsi: bfa: Fix error return in bfad_pci_init() + - arm64: mm: use single quantity to represent the PA to VA translation + - netfilter: conntrack: connection timeout after re-register + - netfilter: ebtables: Fixes dropping of small packets in bridge nat + - netsec: ignore 'phy-mode' device property on ACPI systems + - netfilter: nf_fwd_netdev: clear timestamp in forwarding path + - soc: xilinx: Fix error code in zynqmp_pm_probe() + - arm64: dts: meson: vim3: correct led polarity + - ARM: dts: imx6sl: fix rng node + - ARM: at91: pm: of_node_put() after its usage + - ARM: s3c24xx: fix mmc gpio lookup tables + - ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix dcdc1 regulator + - arm64: dts: allwinner: h5: remove Mali GPU PMU module + - memory: omap-gpmc: Fix a couple off by ones + - memory: omap-gpmc: Fix build error without CONFIG_OF + - arm64: dts: qcom: sc7180: Fix the LLCC base register size + - memory: fsl-corenet-cf: Fix handling of platform_get_irq() error + - firmware: arm_scmi: Fix NULL pointer dereference in mailbox_chan_free + - arm64: dts: imx8mq: Add missing interrupts to GPC + - arm64: dts: qcom: sc7180: Drop flags on mdss irqs + - soc: qcom: pdr: Fixup array type of get_domain_list_resp message + - arm64: dts: qcom: msm8916: Remove one more thermal trip point unit name + - arm64: dts: qcom: pm8916: Remove invalid reg size from wcd_codec + - arm64: dts: qcom: msm8916: Fix MDP/DSI interrupts + - soc: qcom: apr: Fixup the error displayed on lookup failure + - dt-bindings: crypto: Specify that allwinner, sun8i-a33-crypto needs reset + - arm64: dts: renesas: r8a77990: Fix MSIOF1 DMA channels + - arm64: dts: renesas: r8a774c0: Fix MSIOF1 DMA channels + - arm64: dts: mt8173: elm: Fix nor_flash node property + - arm64: dts: actions: limit address range for pinctrl node + - ARM: dts: owl-s500: Fix incorrect PPI interrupt specifiers + - soc: fsl: qbman: Fix return value on success + - ARM: OMAP2+: Restore MPU power domain if cpu_cluster_pm_enter() fails + - ARM: dts: stm32: Fix sdmmc2 pins on AV96 + - ARM: dts: stm32: lxa-mc1: Fix kernel warning about PHY delays + - ARM: dts: stm32: Move ethernet PHY into DH SoM DT + - ARM: dts: stm32: Swap PHY reset GPIO and TSC2004 IRQ on DHCOM SOM + - ARM: dts: stm32: Fix DH PDK2 display PWM channel + - ARM: dts: iwg20d-q7-common: Fix touch controller probe failure + - soc: mediatek: cmdq: add clear option in cmdq_pkt_wfe api + - drm/mediatek: reduce clear event + - arm64: dts: zynqmp: Remove additional compatible string for i2c IPs + - ARM: dts: meson8: remove two invalid interrupt lines from the GPU node + - lightnvm: fix out-of-bounds write to array devices->info[] + - powerpc/powernv/dump: Fix race while processing OPAL dump + - powerpc/pseries: Avoid using addr_to_pfn in real mode + - nvmet: fix uninitialized work for zero kato + - KVM: ioapic: break infinite recursion on lazy EOI + - NTB: hw: amd: fix an issue about leak system resources + - ntb: intel: Fix memleak in intel_ntb_pci_probe + - sched/features: Fix !CONFIG_JUMP_LABEL case + - perf: correct SNOOPX field offset + - i2c: core: Restore acpi_walk_dep_device_list() getting called after + registering the ACPI i2c devs + - md/bitmap: fix memory leak of temporary bitmap + - block: ratelimit handle_bad_sector() message + - x86/dumpstack: Fix misleading instruction pointer error message + - crypto: ccp - fix error handling + - x86/asm: Replace __force_order with a memory clobber + - x86/mce: Add Skylake quirk for patrol scrub reported errors + - media: firewire: fix memory leak + - media: ati_remote: sanity check for both endpoints + - media: st-delta: Fix reference count leak in delta_run_work + - media: sti: Fix reference count leaks + - media: exynos4-is: Fix several reference count leaks due to + pm_runtime_get_sync + - media: exynos4-is: Fix a reference count leak due to pm_runtime_get_sync + - media: exynos4-is: Fix a reference count leak + - media: vsp1: Fix runtime PM imbalance on error + - media: platform: s3c-camif: Fix runtime PM imbalance on error + - media: platform: sti: hva: Fix runtime PM imbalance on error + - media: bdisp: Fix runtime PM imbalance on error + - media: media/pci: prevent memory leak in bttv_probe + - x86/mce: Annotate mce_rd/wrmsrl() with noinstr + - crypto: hisilicon - fixed memory allocation error + - spi: fsi: Fix clock running too fast + - x86/mce: Make mce_rdmsrl() panic on an inaccessible MSR + - media: uvcvideo: Ensure all probed info is returned to v4l2 + - mmc: sdio: Check for CISTPL_VERS_1 buffer size + - media: saa7134: avoid a shift overflow + - media: atomisp: fix memleak in ia_css_stream_create + - media: venus: fixes for list corruption + - fs: dlm: fix configfs memory leak + - media: venus: core: Fix error handling in probe + - media: venus: core: Fix runtime PM imbalance in venus_probe + - ntfs: add check for mft record size in superblock + - ip_gre: set dev->hard_header_len and dev->needed_headroom properly + - mac80211: handle lack of sband->bitrates in rates + - staging: wfx: fix handling of MMIC error + - libbpf: Close map fd if init map slots failed + - bpf: Use raw_spin_trylock() for pcpu_freelist_push/pop in NMI + - PM: hibernate: remove the bogus call to get_gendisk() in software_resume() + - scsi: mvumi: Fix error return in mvumi_io_attach() + - scsi: target: core: Add CONTROL field for trace events + - mic: vop: copy data to kernel space then write to io memory + - misc: vop: add round_up(x,4) for vring_size to avoid kernel panic + - usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc + - usb: gadget: function: printer: fix use-after-free in __lock_acquire + - udf: Limit sparing table size + - udf: Avoid accessing uninitialized data on failed inode read + - rtw88: increse the size of rx buffer size + - USB: cdc-acm: handle broken union descriptors + - usb: dwc3: simple: add support for Hikey 970 + - habanalabs: cast to u64 before shift > 31 bits + - can: flexcan: flexcan_chip_stop(): add error handling and propagate error + value + - HID: multitouch: Lenovo X1 Tablet Gen3 trackpoint and buttons + - ath9k: hif_usb: fix race condition between usb_get_urb() and + usb_kill_anchored_urbs() + - drm/panfrost: add Amlogic GPU integration quirks + - drm/panfrost: add amlogic reset quirk callback + - drm/panfrost: add support for vendor quirk + - bpf: Limit caller's stack depth 256 for subprogs with tailcalls + - misc: rtsx: Fix memory leak in rtsx_pci_probe + - reiserfs: only call unlock_new_inode() if I_NEW + - opp: Prevent memory leak in dev_pm_opp_attach_genpd() + - xfs: make sure the rt allocator doesn't run off the end + - usb: ohci: Default to per-port over-current protection + - drm: fix double free for gbo in drm_gem_vram_init and drm_gem_vram_create + - Bluetooth: Only mark socket zapped after unlocking + - drm/msm/a6xx: fix a potential overflow issue + - iomap: fix WARN_ON_ONCE() from unprivileged users + - scsi: ibmvfc: Fix error return in ibmvfc_probe() + - scsi: qla2xxx: Warn if done() or free() are called on an already freed srb + - selftests/bpf: Fix test_sysctl_loop{1, 2} failure due to clang change + - brcmsmac: fix memory leak in wlc_phy_attach_lcnphy + - rtl8xxxu: prevent potential memory leak + - Fix use after free in get_capset_info callback. + - HID: ite: Add USB id match for Acer One S1003 keyboard dock + - scsi: qedf: Return SUCCESS if stale rport is encountered + - scsi: qedi: Mark all connections for recovery on link down event + - scsi: qedi: Protect active command list to avoid list corruption + - scsi: qedi: Fix list_del corruption while removing active I/O + - fbmem: add margin check to fb_check_caps() + - tty: ipwireless: fix error handling + - Bluetooth: btusb: Fix memleak in btusb_mtk_submit_wmt_recv_urb + - ipvs: Fix uninit-value in do_ip_vs_set_ctl() + - reiserfs: Fix memory leak in reiserfs_parse_options() + - s390/qeth: strictly order bridge address events + - mwifiex: don't call del_timer_sync() on uninitialized timer + - ALSA: hda/ca0132 - Add AE-7 microphone selection commands. + - ALSA: hda/ca0132 - Add new quirk ID for SoundBlaster AE-7. + - ASoC: SOF: Add topology filename override based on dmi data match + - ASoC: Intel: sof_rt5682: override quirk data for tgl_max98373_rt5682 + - scsi: smartpqi: Avoid crashing kernel for controller issues + - brcm80211: fix possible memleak in brcmf_proto_msgbuf_attach + - usb: core: Solve race condition in anchor cleanup functions + - scsi: ufs: ufs-qcom: Fix race conditions caused by ufs_qcom_testbus_config() + - drm/amd/display: Screen corruption on dual displays (DP+USB-C) + - dmaengine: dw: Add DMA-channels mask cell support + - dmaengine: dw: Activate FIFO-mode for memory peripherals only + - ath10k: check idx validity in __ath10k_htt_rx_ring_fill_n() + - net: korina: cast KSEG0 address to pointer in kfree + - s390/qeth: don't let HW override the configured port role + - tty: serial: lpuart: fix lpuart32_write usage + - tty: serial: fsl_lpuart: fix lpuart32_poll_get_char + - usb: gadget: bcm63xx_udc: fix up the error of undeclared usb_debug_root + - usb: cdc-acm: add quirk to blacklist ETAS ES58X devices + - USB: cdc-wdm: Make wdm_flush() interruptible and add wdm_fsync(). + - usb: cdns3: gadget: free interrupt after gadget has deleted + - eeprom: at25: set minimum read/write access stride to 1 + - usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets. + - Linux 5.8.17 + + * RTL8822BE [10ec:b822] network driver rtl_wifi crashes on boot in Focal Fossa + 20.04 - 5.4.0-21-generic and mainline 5.7.0-050700rc1-generic + (LP: #1872984) // Groovy update: v5.8.17 upstream stable release + (LP: #1902137) + - rtw88: pci: Power cycle device during shutdown + + * Groovy update: v5.8.16 upstream stable release (LP: #1902132) + - crypto: bcm - Verify GCM/CCM key length in setkey + - crypto: qat - check cipher length for aead AES-CBC-HMAC-SHA + - Bluetooth: Disconnect if E0 is used for Level 4 + - media: usbtv: Fix refcounting mixup + - USB: serial: option: add Cellient MPL200 card + - USB: serial: option: Add Telit FT980-KS composition + - staging: comedi: check validity of wMaxPacketSize of usb endpoints found + - USB: serial: pl2303: add device-id for HP GC device + - USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters + - reiserfs: Initialize inode keys properly + - reiserfs: Fix oops during mount + - Linux 5.8.16 + + * Groovy update: v5.8.15 upstream stable release (LP: #1902130) + - fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h + - Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts + - fbcon: Fix global-out-of-bounds read in fbcon_get_font() + - Revert "ravb: Fixed to be able to unload modules" + - crypto: arm64: Use x16 with indirect branch to bti_c + - exfat: fix use of uninitialized spinlock on error path + - net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key() + - drm/nouveau/mem: guard against NULL pointer access in mem_del + - partitions/ibm: fix non-DASD devices + - block/scsi-ioctl: Fix kernel-infoleak in scsi_put_cdrom_generic_arg() + - vhost: Don't call access_ok() when using IOTLB + - vhost: Use vhost_get_used_size() in vhost_vring_set_addr() + - usermodehelper: reset umask to default before executing user process + - splice: teach splice pipe reading about empty pipe buffers + - Platform: OLPC: Fix memleak in olpc_ec_probe + - platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on the HP + Pavilion 11 x360 + - platform/x86: thinkpad_acpi: initialize tp_nvram_state variable + - platform/x86: asus-wmi: Fix SW_TABLET_MODE always reporting 1 on many + different models + - bpf: Fix sysfs export of empty BTF section + - bpf: Prevent .BTF section elimination + - r8169: consider that PHY reset may still be in progress after applying + firmware + - platform/x86: intel-vbtn: Switch to an allow-list for SW_TABLET_MODE + reporting + - platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse + - nvme-core: put ctrl ref when module ref get fail + - macsec: avoid use-after-free in macsec_handle_frame() + - RISC-V: Make sure memblock reserves the memory containing DT + - gpiolib: Disable compat ->read() code in UML case + - mm/khugepaged: fix filemap page_to_pgoff(page) != offset + - net: introduce helper sendpage_ok() in include/linux/net.h + - tcp: use sendpage_ok() to detect misused .sendpage + - nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage() + - xfrmi: drop ignore_df check before updating pmtu + - espintcp: restore IP CB before handing the packet to xfrm + - cifs: Fix incomplete memory allocation on setxattr path + - i2c: meson: fix clock setting overwrite + - i2c: meson: keep peripheral clock enabled + - i2c: meson: fixup rate calculation with filter delay + - i2c: owl: Clear NACK and BUS error bits + - sctp: fix sctp_auth_init_hmacs() error path + - team: set dev->needed_headroom in team_setup_by_port() + - net: team: fix memory leak in __team_options_register + - openvswitch: handle DNAT tuple collision + - drm/amdgpu: prevent double kfree ttm->sg + - btrfs: move btrfs_scratch_superblocks into btrfs_dev_replace_finishing + - io_uring: fix potential ABBA deadlock in ->show_fdinfo() + - drm/amd/pm: Removed fixed clock in auto mode DPM + - drm/amd/display: fix return value check for hdcp_work + - btrfs: move btrfs_rm_dev_replace_free_srcdev outside of all locks + - iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb() + - xfrm: clone XFRMA_SET_MARK in xfrm_do_migrate + - xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate + - xfrm: clone XFRMA_SEC_CTX in xfrm_do_migrate + - xfrm: clone whole liftime_cur structure in xfrm_do_migrate + - xsk: Do not discard packet when NETDEV_TX_BUSY + - net: stmmac: removed enabling eee in EEE set callback + - platform/x86: fix kconfig dependency warning for LG_LAPTOP + - platform/x86: fix kconfig dependency warning for FUJITSU_LAPTOP + - hinic: add log in exception handling processes + - hinic: fix wrong return value of mac-set cmd + - net: dsa: felix: convert TAS link speed based on phylink speed + - xfrm: Use correct address family in xfrm_state_find + - iavf: use generic power management + - iavf: Fix incorrect adapter get in iavf_resume + - ice: fix memory leak if register_netdev_fails + - ice: fix memory leak in ice_vsi_setup + - vmxnet3: fix cksum offload issues for non-udp tunnels + - net: stmmac: Fix clock handling on remove path + - net: ethernet: cavium: octeon_mgmt: use phy_start and phy_stop + - bonding: set dev->needed_headroom in bond_setup_by_slave() + - mdio: fix mdio-thunder.c dependency & build error + - mlxsw: spectrum_acl: Fix mlxsw_sp_acl_tcam_group_add()'s error path + - r8169: fix RTL8168f/RTL8411 EPHY config + - net: usb: ax88179_178a: fix missing stop entry in driver_info + - virtio-net: don't disable guest csum when disable LRO + - net: phy: realtek: fix rtl8211e rx/tx delay config + - octeontx2-af: Fix enable/disable of default NPC entries + - octeontx2-pf: Fix TCP/UDP checksum offload for IPv6 frames + - octeontx2-pf: Fix the device state on error + - octeontx2-pf: Fix synchnorization issue in mbox + - pipe: Fix memory leaks in create_pipe_files() + - net/mlx5: Fix a race when moving command interface to polling mode + - net/mlx5: Avoid possible free of command entry while timeout comp handler + - net/mlx5: poll cmd EQ in case of command timeout + - net/mlx5: Add retry mechanism to the command entry index allocation + - net/mlx5: Fix request_irqs error flow + - net/mlx5e: Add resiliency in Striding RQ mode for packets larger than MTU + - net/mlx5e: Fix return status when setting unsupported FEC mode + - net/mlx5e: Fix VLAN cleanup flow + - net/mlx5e: Fix VLAN create flow + - net/mlx5e: Fix race condition on nhe->n pointer in neigh update + - net: stmmac: Modify configuration method of EEE timers + - net: hinic: fix DEVLINK build errors + - vhost-vdpa: fix vhost_vdpa_map() on error condition + - vhost-vdpa: fix page pinning leakage in error path + - net: mvneta: fix double free of txq->buf + - rxrpc: Fix rxkad token xdr encoding + - rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read() + - rxrpc: Fix some missing _bh annotations on locking conn->state_lock + - rxrpc: The server keyring isn't network-namespaced + - rxrpc: Fix server keyring leak + - net: mscc: ocelot: rename ocelot_board.c to ocelot_vsc7514.c + - [Packaging] module ocelot_board rename + - net: mscc: ocelot: split writes to pause frame enable bit and to thresholds + - net: mscc: ocelot: extend watermark encoding function + - net: mscc: ocelot: divide watermark value by 60 when writing to SYS_ATOP + - afs: Fix deadlock between writeback and truncate + - perf: Fix task_function_call() error handling + - mmc: core: don't set limits.discard_granularity as 0 + - mm: validate inode in mapping_set_error() + - mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected + by khugepaged + - tcp: fix receive window update in tcp_add_backlog() + - netlink: fix policy dump leak + - net/core: check length before updating Ethertype in skb_mpls_{push,pop} + - net: bridge: fdb: don't flush ext_learn entries + - net/tls: race causes kernel panic + - net/mlx5e: Fix driver's declaration to support GRE offload + - tty/vt: Do not warn when huge selection requested + - Input: ati_remote2 - add missing newlines when printing module parameters + - net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails + - net: qrtr: ns: Protect radix_tree_deref_slot() using rcu read locks + - net_sched: defer tcf_idr_insert() in tcf_action_init_1() + - net_sched: commit action insertions together + - Linux 5.8.15 + + * Fix non-working Intel NVMe after S3 (LP: #1900847) + - SAUCE: PCI: Enable ACS quirk on all CML root ports + + * Improve descriptions for XFAIL cases in kselftests/net/psock_snd + (LP: #1900088) + - selftests/net: improve descriptions for XFAIL cases in psock_snd.sh + + * alsa/hda/realtek - The front Mic on a HP machine doesn't work (LP: #1899508) + - ALSA: hda/realtek - The front Mic on a HP machine doesn't work + + * kci_test_encap_fou() in rtnetlink.sh from kselftests/net failed with "FAIL: + can't add fou port 7777, skipping test" (LP: #1891421) + - selftests: rtnetlink: load fou module for kci_test_encap_fou() test + + * linux-aws: fold test_bpf SAUCE to linux/master (LP: #1900855) + - SAUCE: selftests: net: don't fail test_bpf when module is not present + + * Fix broken MSI interrupt after HDA controller was suspended (LP: #1899586) + - ALSA: hda: fix jack detection with Realtek codecs when in D3 + + -- Stefan Bader Mon, 09 Nov 2020 16:23:07 +0100 + +linux (5.8.0-29.31) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Stefan Bader Fri, 06 Nov 2020 12:17:24 +0100 + +linux (5.8.0-28.30) groovy; urgency=medium + + * CVE-2020-27194 + - bpf: Fix scalar32_min_max_or bounds tracking + + -- Thadeu Lima de Souza Cascardo Wed, 04 Nov 2020 22:02:24 -0300 + +linux (5.8.0-27.29) groovy; urgency=medium + + * CVE-2020-8694 + - powercap: make attributes only readable by root + + -- Kleber Sacilotto de Souza Thu, 29 Oct 2020 11:28:11 +0100 + +linux (5.8.0-26.27) groovy; urgency=medium + + * groovy/linux: 5.8.0-26.27 -proposed tracker (LP: #1900896) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Introduce the new NVIDIA 455 series (LP: #1897751) + - [Packaging] NVIDIA -- Add signed modules for the 455 driver + + -- Seth Forshee Wed, 21 Oct 2020 15:35:59 -0500 + +linux (5.8.0-25.26) groovy; urgency=medium + + * groovy/linux: 5.8.0-25.26 -proposed tracker (LP: #1899940) + + * CVE-2020-12351 + - Bluetooth: L2CAP: Fix calling sk_filter on non-socket based channel + + * CVE-2020-12352 + - Bluetooth: A2MP: Fix not initializing all members + + * CVE-2020-12351 // CVE-2020-12352 // CVE-2020-24490 + - Bluetooth: Disable High Speed by default + - Bluetooth: MGMT: Fix not checking if BT_HS is enabled + - [Config] Disable BlueZ highspeed support + + * ec2-hibinit-agent needs to properly initialize swap file (LP: #1892728) + - ext4: implement swap_activate aops using iomap + + -- Andrea Righi Thu, 15 Oct 2020 12:09:24 +0200 + +linux (5.8.0-24.25) groovy; urgency=medium + + * groovy/linux: 5.8.0-24.25 -proposed tracker (LP: #1899804) + + * Fix system reboot when disconnecting WiFi (LP: #1899726) + - iwlwifi: msix: limit max RX queues for 9000 family + + * ceph: fix inode number handling on arches with 32-bit ino_t (LP: #1899582) + - ceph: fix inode number handling on arches with 32-bit ino_t + + * booting linux-generic-lpae armhf kernel under qemu results in relocation out + of range, and thus no modules can be loaded (LP: #1899519) + - [Config] armhf: ARM_MODULE_PLTS=y + + -- Seth Forshee Wed, 14 Oct 2020 10:12:57 -0500 + +linux (5.8.0-23.24) groovy; urgency=medium + + * CVE-2020-16119 + - SAUCE: dccp: avoid double free of ccid on child socket + + -- Seth Forshee Fri, 09 Oct 2020 10:21:12 -0500 + +linux (5.8.0-22.23) groovy; urgency=medium + + * groovy/linux: 5.8.0-22.23 -proposed tracker (LP: #1899099) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * oops in nvkm_udevice_info() [nouveau] (LP: #1898130) + - drm/nouveau/device: return error for unknown chipsets + + * python3-venv is gone (LP: #1896801) + - SAUCE: doc: remove python3-venv dependency + + * *-tools-common packages descriptions have typo "PGKVER" (LP: #1898903) + - [Packaging] Fix typo in -tools template s/PGKVER/PKGVER/ + + * Enable brightness control on HP DreamColor panel (LP: #1898865) + - SAUCE: drm/i915/dpcd_bl: Skip testing control capability with force DPCD + quirk + - SAUCE: drm/dp: HP DreamColor panel brigntness fix + + * Groovy update: v5.8.14 upstream stable release (LP: #1898853) + - io_uring: always delete double poll wait entry on match + - btrfs: fix filesystem corruption after a device replace + - mmc: sdhci: Workaround broken command queuing on Intel GLK based IRBIS + models + - USB: gadget: f_ncm: Fix NDP16 datagram validation + - Revert "usbip: Implement a match function to fix usbip" + - usbcore/driver: Fix specific driver selection + - usbcore/driver: Fix incorrect downcast + - usbcore/driver: Accommodate usbip + - gpio: siox: explicitly support only threaded irqs + - gpio: mockup: fix resource leak in error path + - gpio: tc35894: fix up tc35894 interrupt configuration + - gpio: amd-fch: correct logic of GPIO_LINE_DIRECTION + - clk: samsung: Keep top BPLL mux on Exynos542x enabled + - clk: socfpga: stratix10: fix the divider for the emac_ptp_free_clk + - scsi: iscsi: iscsi_tcp: Avoid holding spinlock while calling getpeername() + - i2c: i801: Exclude device from suspend direct complete optimization + - Input: i8042 - add nopnp quirk for Acer Aspire 5 A515 + - iio: adc: qcom-spmi-adc5: fix driver name + - ftrace: Move RCU is watching check after recursion check + - tracing: Fix trace_find_next_entry() accounting of temp buffer size + - memstick: Skip allocating card when removing host + - drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config + - xen/events: don't use chip_data for legacy IRQs + - clocksource/drivers/timer-gx6605s: Fixup counter reload + - vboxsf: Fix the check for the old binary mount-arguments struct + - mt76: mt7915: use ieee80211_free_txskb to free tx skbs + - libbpf: Remove arch-specific include path in Makefile + - drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices + - Revert "wlcore: Adding suppoprt for IGTK key in wlcore driver" + - drm/sun4i: mixer: Extend regmap max_register + - hv_netvsc: Cache the current data path to avoid duplicate call and message + - net: dec: de2104x: Increase receive ring size for Tulip + - rndis_host: increase sleep time in the query-response loop + - nvme-pci: disable the write zeros command for Intel 600P/P3100 + - nvme-core: get/put ctrl and transport module in nvme_dev_open/release() + - fuse: fix the ->direct_IO() treatment of iov_iter + - drivers/net/wan/lapbether: Make skb->protocol consistent with the header + - drivers/net/wan/hdlc: Set skb->protocol before transmitting + - mac80211: Fix radiotap header channel flag for 6GHz band + - mac80211: do not allow bigger VHT MPDUs than the hardware supports + - tracing: Make the space reserved for the pid wider + - tools/io_uring: fix compile breakage + - io_uring: mark statx/files_update/epoll_ctl as non-SQPOLL + - cpuidle: psci: Fix suspicious RCU usage + - spi: fsl-espi: Only process interrupts for expected events + - net: dsa: felix: fix some key offsets for IP4_TCP_UDP VCAP IS2 entries + - nvme-pci: fix NULL req in completion handler + - nvme-fc: fail new connections to a deleted host or remote port + - scripts/kallsyms: skip ppc compiler stub *.long_branch.* / *.plt_branch.* + - gpio: sprd: Clear interrupt when setting the type as edge + - phy: ti: am654: Fix a leak in serdes_am654_probe() + - pinctrl: mvebu: Fix i2c sda definition for 98DX3236 + - nfs: Fix security label length not being reset + - NFSv4.2: fix client's attribute cache management for copy_file_range + - pNFS/flexfiles: Ensure we initialise the mirror bsizes correctly on read + - clk: tegra: Always program PLL_E when enabled + - clk: tegra: Fix missing prototype for tegra210_clk_register_emc() + - dmaengine: dmatest: Prevent to run on misconfigured channel + - clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED + - scsi: target: Fix lun lookup for TARGET_SCF_LOOKUP_LUN_FROM_TAG case + - iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate() + - gpio: pca953x: Fix uninitialized pending variable + - gpio/aspeed-sgpio: enable access to all 80 input & output sgpios + - gpio/aspeed-sgpio: don't enable all interrupts by default + - gpio: aspeed: fix ast2600 bank properties + - i2c: cpm: Fix i2c_ram structure + - i2c: npcm7xx: Clear LAST bit after a failed transaction. + - Input: trackpoint - enable Synaptics trackpoints + - blk-mq: call commit_rqs while list empty but error happen + - scripts/dtc: only append to HOST_EXTRACFLAGS instead of overwriting + - autofs: use __kernel_write() for the autofs pipe writing + - pinctrl: qcom: sm8250: correct sdc2_clk + - pinctrl: mediatek: check mtk_is_virt_gpio input parameter + - gpio: pca953x: Correctly initialize registers 6 and 7 for PCA957x + - iommu/amd: Fix the overwritten field in IVMD header + - pipe: remove pipe_wait() and fix wakeup race with splice + - random32: Restore __latent_entropy attribute on net_rand_state + - gpiolib: Fix line event handling in syscall compatible mode + - drm/i915/gvt: Fix port number for BDW on EDID region setup + - scsi: sd: sd_zbc: Fix handling of host-aware ZBC disks + - scsi: sd: sd_zbc: Fix ZBC disk initialization + - epoll: do not insert into poll queues until all sanity checks are done + - epoll: replace ->visited/visited_list with generation count + - epoll: EPOLL_CTL_ADD: close the race in decision to take fast path + - ep_create_wakeup_source(): dentry name can change under you... + - Linux 5.8.14 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: check for do_sys_openat2 in user-memory test + - SAUCE: doc: Disable extension incompatible with Sphinx 3 + - Add ubuntu-host module + - CONFIG_UBUNTU_HOST=m + - SAUCE: Revert "UBUNTU: SAUCE: IB/umem: Fix the Peer flow to handle pinned + pages properly" + - SAUCE: Revert "UBUNTU: SAUCE: IB/mlx5: Use peer client page_shift" + - SAUCE: Revert "UBUNTU: SAUCE: fixup! RDMA/core: Introduce peer memory + interface" + - SAUCE: Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + - SAUCE: apparmor: drop prefixing abs root labels with '=' + - SAUCE: apparmor: disable showing the mode as part of a secid to secctx + - SAUCE: apparmor: rename aa_sock() to aa_unix_sk() + - SAUCE: apparmor: LSM stacking: switch from SK_CTX() to aa_sock() + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Create and manage the lsmblob data structure. + - SAUCE: LSM: Use lsmblob in security_audit_rule_match + - SAUCE: LSM: Use lsmblob in security_kernel_act_as + - SAUCE: net: Prepare UDS for security module stacking + - SAUCE: LSM: Use lsmblob in security_secctx_to_secid + - SAUCE: LSM: Use lsmblob in security_secid_to_secctx + - SAUCE: LSM: Use lsmblob in security_ipc_getsecid + - SAUCE: LSM: Use lsmblob in security_task_getsecid + - SAUCE: LSM: Use lsmblob in security_inode_getsecid + - SAUCE: LSM: Use lsmblob in security_cred_getsecid + - SAUCE: IMA: Change internal interfaces to use lsmblobs + - SAUCE: LSM: Specify which LSM to display + - SAUCE: LSM: Ensure the correct LSM context releaser + - SAUCE: LSM: Use lsmcontext in security_secid_to_secctx + - SAUCE: LSM: Use lsmcontext in security_inode_getsecctx + - SAUCE: LSM: security_secid_to_secctx in netlink netfilter + - SAUCE: NET: Store LSM netlabel data in a lsmblob + - SAUCE: LSM: Verify LSM display sanity in binder + - SAUCE: Audit: Add new record for multiple process LSM attributes + - SAUCE: Audit: Add a new record for multiple object LSM + - SAUCE: LSM: Add /proc attr entry for full LSM context + - SAUCE: AppArmor: Remove the exclusive flag + - SAUCE: Audit: Fix for missing NULL check + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] Temporarily disable building doc package + contents" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add support for mapping secids and + using secctxes"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Use an IDR to allocate apparmor + secids"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fixup secid map conversion to using + IDR"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Add a wildcard secid"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Parse secmark policy"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Allow filtering based on secmark + policy"" + - Revert "UBUNTU: SAUCE: Fix-up af_unix mediation for sock infrastructure + management" + - Revert "UBUNTU: SAUCE: LSM: Infrastructure management of the sock security" + - Revert "UBUNTU: SAUCE: apparmor: update flags to no longer be exclusive" + - Revert "UBUNTU: SAUCE: apparmor: add an apparmorfs entry to access current + attrs" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add the ability to get a task's + secid"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Add support for audit rule + filtering"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: modify audit rule support to + support profile stacks"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fix bad debug check in + apparmor_secid_to_secctx()"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add #ifdef checks for secmark + filtering"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fix checkpatch error in Parse + secmark policy"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute"" + + -- Seth Forshee Thu, 08 Oct 2020 17:17:19 -0500 + +linux (5.8.0-21.22) groovy; urgency=medium + + * groovy/linux: 5.8.0-21.22 -proposed tracker (LP: #1898150) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix broken e1000e device after S3 (LP: #1897755) + - SAUCE: e1000e: Increase polling timeout on MDIC ready bit + + * EFA: add support for 0xefa1 devices (LP: #1896791) + - RDMA/efa: Expose maximum TX doorbell batch + - RDMA/efa: Expose minimum SQ size + - RDMA/efa: User/kernel compatibility handshake mechanism + - RDMA/efa: Add EFA 0xefa1 PCI ID + + * Groovy update: v5.8.13 upstream stable release (LP: #1898076) + - device_cgroup: Fix RCU list debugging warning + - ASoC: pcm3168a: ignore 0 Hz settings + - ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811 + - ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions + - ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN Converter9 2-in-1 + - clk: versatile: Add of_node_put() before return statement + - RISC-V: Take text_mutex in ftrace_init_nop() + - i2c: aspeed: Mask IRQ status to relevant bits + - s390/init: add missing __init annotations + - lockdep: fix order in trace_hardirqs_off_caller() + - EDAC/ghes: Check whether the driver is on the safe list correctly + - drm/amdkfd: fix a memory leak issue + - drm/amd/display: Don't use DRM_ERROR() for DTM add topology + - drm/amd/display: update nv1x stutter latencies + - drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is + - drm/amd/display: Don't log hdcp module warnings in dmesg + - objtool: Fix noreturn detection for ignored functions + - i2c: mediatek: Send i2c master code at more than 1MHz + - riscv: Fix Kendryte K210 device tree + - ieee802154: fix one possible memleak in ca8210_dev_com_init + - ieee802154/adf7242: check status of adf7242_read_reg + - clocksource/drivers/h8300_timer8: Fix wrong return value in + h8300_8timer_init() + - batman-adv: bla: fix type misuse for backbone_gw hash indexing + - libbpf: Fix build failure from uninitialized variable warning + - atm: eni: fix the missed pci_disable_device() for eni_init_one() + - batman-adv: mcast/TT: fix wrongly dropped or rerouted packets + - netfilter: ctnetlink: add a range check for l3/l4 protonum + - netfilter: ctnetlink: fix mark based dump filtering regression + - netfilter: conntrack: nf_conncount_init is failing with IPv6 disabled + - netfilter: nft_meta: use socket user_ns to retrieve skuid and skgid + - mac802154: tx: fix use-after-free + - bpf: Fix clobbering of r2 in bpf_gen_ld_abs + - tools/libbpf: Avoid counting local symbols in ABI check + - drm/vc4/vc4_hdmi: fill ASoC card owner + - net: qed: Disable aRFS for NPAR and 100G + - net: qede: Disable aRFS for NPAR and 100G + - net: qed: RDMA personality shouldn't fail VF load + - igc: Fix wrong timestamp latency numbers + - igc: Fix not considering the TX delay for timestamps + - drm/sun4i: sun8i-csc: Secondary CSC register correction + - hv_netvsc: Switch the data path at the right time during hibernation + - spi: spi-fsl-dspi: use XSPI mode instead of DMA for DPAA2 SoCs + - RDMA/core: Fix ordering of CQ pool destruction + - batman-adv: Add missing include for in_interrupt() + - xsk: Fix number of pinned pages/umem size discrepancy + - nvme-tcp: fix kconfig dependency warning when !CRYPTO + - batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN + - batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh + - batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh + - bpf: Fix a rcu warning for bpffs map pretty-print + - lib80211: fix unmet direct dependendices config warning when !CRYPTO + - mac80211: do not disable HE if HT is missing on 2.4 GHz + - cfg80211: fix 6 GHz channel conversion + - mac80211: fix 80 MHz association to 160/80+80 AP on 6 GHz + - ALSA: asihpi: fix iounmap in error handler + - io_uring: fix openat/openat2 unified prep handling + - SUNRPC: Fix svc_flush_dcache() + - regmap: fix page selection for noinc reads + - regmap: fix page selection for noinc writes + - net/mlx5e: mlx5e_fec_in_caps() returns a boolean + - MIPS: Loongson-3: Fix fp register access if MSA enabled + - PM / devfreq: tegra30: Disable clock on error in probe + - MIPS: Add the missing 'CPU_1074K' into __get_cpu_type() + - regulator: axp20x: fix LDO2/4 description + - spi: bcm-qspi: Fix probe regression on iProc platforms + - KVM: x86: Reset MMU context if guest toggles CR4.SMAP or CR4.PKE + - KVM: SVM: Add a dedicated INVD intercept routine + - mm: validate pmd after splitting + - arch/x86/lib/usercopy_64.c: fix __copy_user_flushcache() cache writeback + - x86/irq: Make run_on_irqstack_cond() typesafe + - x86/ioapic: Unbreak check_timer() + - scsi: lpfc: Fix initial FLOGI failure due to BBSCN not supported + - ALSA: usb-audio: Add delay quirk for H570e USB headsets + - ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged + - ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation + P520 + - lib/string.c: implement stpcpy + - tracing: fix double free + - s390/dasd: Fix zero write for FBA devices + - mt76: mt7615: use v1 MCU API on MT7615 to fix issues with adding/removing + stations + - lib/bootconfig: Fix a bug of breaking existing tree nodes + - lib/bootconfig: Fix to remove tailing spaces after value + - kprobes: Fix to check probe enabled before disarm_kprobe_ftrace() + - kprobes: tracing/kprobes: Fix to kill kprobes on initmem after boot + - btrfs: fix put of uninitialized kobject after seed device delete + - btrfs: fix overflow when copying corrupt csums for a message + - media: cec-adap.c: don't use flush_scheduled_work() + - MIPS: Loongson2ef: Disable Loongson MMI instructions + - dmabuf: fix NULL pointer dereference in dma_buf_release() + - mm, THP, swap: fix allocating cluster for swapfile by mistake + - mm: replace memmap_context by meminit_context + - mm: don't rely on system state to detect hot-plug operations + - s390/zcrypt: Fix ZCRYPT_PERDEV_REQCNT ioctl + - io_uring: ensure open/openat2 name is cleaned on cancelation + - KVM: arm64: Assume write fault on S1PTW permission fault on instruction + fetch + - dm: fix bio splitting and its bio completion order for regular IO + - clocksource/drivers/timer-ti-dm: Do reset before enable + - Linux 5.8.13 + + * HP Zbook Studio G7 boots into corrupted screen with PSR featured panel + (LP: #1897501) + - SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk + - SAUCE: drm/dp: add DP_QUIRK_FORCE_PSR_CHIP_DEFAULT quirk to CMN prod-ID + 19-15 + + * mwifiex stops working after kernel upgrade (LP: #1897299) + - mwifiex: Increase AES key storage size to 256 bits + + * Oops and hang when starting LVM snapshots on 5.4.0-47 (LP: #1894780) + - SAUCE: Revert "mm: memcg/slab: fix memory leak at non-root kmem_cache + destroy" + + * mm/slub kernel oops on focal kernel 5.4.0-45 (LP: #1895109) + - SAUCE: Revert "mm/slub: fix a memory leak in sysfs_slab_add()" + + * Remove NVMe suspend-to-idle workaround (LP: #1897227) + - Revert "UBUTU: SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3" + - Revert "UBUNTU: SAUCE: pci: prevent sk hynix nvme from entering D3" + + * [UBUNTU 20.04.1] qemu (secure guest) crash due to gup_fast / dynamic page + table folding issue (LP: #1896726) + - mm/gup: fix gup_fast with dynamic page table folding + + * backport tls-rx to ubuntu 5.8 (LP: #1895947) + - net/mlx5: kTLS, Improve TLS params layout structures + - net/mlx5e: Turn XSK ICOSQ into a general asynchronous one + - net/mlx5e: Refactor build channel params + - net/mlx5e: API to manipulate TTC rules destinations + - net/mlx5e: Receive flow steering framework for accelerated TCP flows + - net/mlx5e: Accel, Expose flow steering API for rules add/del + - net/mlx5e: kTLS, Improve TLS feature modularity + - net/mlx5e: kTLS, Use kernel API to extract private offload context + - net/mlx5e: kTLS, Add kTLS RX HW offload support + - Revert "net/tls: Add force_resync for driver resync" + - net/tls: Add asynchronous resync + - net/mlx5e: kTLS, Add kTLS RX resync support + - net/mlx5e: kTLS, Add kTLS RX stats + - net/mlx5e: Increase Async ICO SQ size + - net/mlx5e: kTLS, Cleanup redundant capability check + - net/mlx5e: kTLS, Improve rx handler function call + - net/mlx5e: kTLS, Fix napi sync and possible use-after-free + - net/mlx5e: fix memory leak of tls + - net/mlx5e: Fix build break when CONFIG_XPS is not set + - net/mlx5e: kTLS, Add missing dma_unmap in RX resync + - net/mlx5e: kTLS, Fix leak on resync error flow + - net/mlx5e: kTLS, Avoid kzalloc(GFP_KERNEL) under spinlock + + * Groovy update: v5.8.12 upstream stable release (LP: #1897550) + - ibmvnic fix NULL tx_pools and rx_tools issue at do_reset + - ibmvnic: add missing parenthesis in do_reset() + - act_ife: load meta modules before tcf_idr_check_alloc() + - bnxt_en: Avoid sending firmware messages when AER error is detected. + - bnxt_en: Fix NULL ptr dereference crash in bnxt_fw_reset_task() + - cxgb4: fix memory leak during module unload + - cxgb4: Fix offset when clearing filter byte counters + - geneve: add transport ports in route lookup for geneve + - hdlc_ppp: add range checks in ppp_cp_parse_cr() + - hinic: bump up the timeout of SET_FUNC_STATE cmd + - ip: fix tos reflection in ack and reset packets + - ipv4: Initialize flowi4_multipath_hash in data path + - ipv4: Update exception handling for multipath routes via same device + - ipv6: avoid lockdep issue in fib6_del() + - net: bridge: br_vlan_get_pvid_rcu() should dereference the VLAN group under + RCU + - net: DCB: Validate DCB_ATTR_DCB_BUFFER argument + - net: dsa: rtl8366: Properly clear member config + - net: Fix bridge enslavement failure + - net: ipv6: fix kconfig dependency warning for IPV6_SEG6_HMAC + - net/mlx5: Fix FTE cleanup + - net: phy: call phy_disable_interrupts() in phy_attach_direct() instead + - net: sched: initialize with 0 before setting erspan md->u + - net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc + - net: sctp: Fix IPv6 ancestor_size calc in sctp_copy_descendant + - nfp: use correct define to return NONE fec + - taprio: Fix allowing too small intervals + - tipc: Fix memory leak in tipc_group_create_member() + - tipc: fix shutdown() of connection oriented socket + - tipc: use skb_unshare() instead in tipc_buf_append() + - net/mlx5e: Enable adding peer miss rules only if merged eswitch is supported + - net/mlx5e: TLS, Do not expose FPGA TLS counter if not supported + - bnxt_en: Use memcpy to copy VPD field info. + - bnxt_en: return proper error codes in bnxt_show_temp + - bnxt_en: Protect bnxt_set_eee() and bnxt_set_pauseparam() with mutex. + - net: lantiq: Wake TX queue again + - net: lantiq: use netif_tx_napi_add() for TX NAPI + - net: lantiq: Use napi_complete_done() + - net: lantiq: Disable IRQs only if NAPI gets scheduled + - net: phy: Avoid NPD upon phy_detach() when driver is unbound + - net: phy: Do not warn in phy_stop() on PHY_DOWN + - net: qrtr: check skb_put_padto() return value + - net: add __must_check to skb_put_padto() + - net: ethernet: ti: cpsw_new: fix suspend/resume + - wireguard: noise: take lock when removing handshake entry from table + - wireguard: peerlookup: take lock before checking hash in replace operation + - net: ipa: fix u32_replace_bits by u32p_xxx version + - net/mlx5e: Fix memory leak of tunnel info when rule under multipath not + ready + - hinic: fix rewaking txq after netif_tx_disable + - hv_netvsc: Fix hibernation for mlx5 VF driver + - net: dsa: link interfaces with the DSA master to get rid of lockdep warnings + - net: dsa: microchip: ksz8795: really set the correct number of ports + - net: macb: fix for pause frame receive enable bit + - Revert "netns: don't disable BHs when locking "nsid_lock"" + - net/mlx5e: Use RCU to protect rq->xdp_prog + - net/mlx5e: Use synchronize_rcu to sync with NAPI + - net/mlx5e: Fix endianness when calculating pedit mask first bit + - Linux 5.8.12 + + * Groovy update: v5.8.11 upstream stable release (LP: #1896795) + - RDMA/bnxt_re: Restrict the max_gids to 256 + - dt-bindings: spi: Fix spi-bcm-qspi compatible ordering + - mptcp: sendmsg: reset iter on error + - net: handle the return value of pskb_carve_frag_list() correctly + - dt-bindings: PCI: intel,lgm-pcie: Fix matching on all snps,dw-pcie instances + - hv_netvsc: Remove "unlikely" from netvsc_select_queue + - loop: Set correct device size when using LOOP_CONFIGURE + - firmware_loader: fix memory leak for paged buffer + - xprtrdma: Release in-flight MRs on disconnect + - NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall + - phy: omap-usb2-phy: disable PHY charger detect + - habanalabs: prevent user buff overflow + - habanalabs: fix report of RAZWI initiator coordinates + - scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort + - scsi: libfc: Fix for double free() + - scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery + - scsi: lpfc: Extend the RDF FPIN Registration descriptor for additional + events + - regulator: pwm: Fix machine constraints application + - spi: spi-loopback-test: Fix out-of-bounds read + - interconnect: Show bandwidth for disabled paths as zero in debugfs + - NFS: Zero-stateid SETATTR should first return delegation + - SUNRPC: stop printk reading past end of string + - rapidio: Replace 'select' DMAENGINES 'with depends on' + - cifs: fix DFS mount with cifsacl/modefromsid + - openrisc: Fix cache API compile issue when not inlining + - nvme-fc: cancel async events before freeing event struct + - nvme-rdma: cancel async events before freeing event struct + - nvme-tcp: cancel async events before freeing event struct + - block: only call sched requeue_request() for scheduled requests + - f2fs: fix indefinite loop scanning for free nid + - f2fs: Return EOF on unaligned end of file DIO read + - i2c: algo: pca: Reapply i2c bus settings after reset + - spi: Fix memory leak on splited transfers + - KVM: MIPS: Change the definition of kvm type + - clk: davinci: Use the correct size when allocating memory + - clk: rockchip: Fix initialization of mux_pll_src_4plls_p + - ASoC: Intel: skl_hda_dsp_generic: Fix NULLptr dereference in autosuspend + delay + - ASoC: qcom: Set card->owner to avoid warnings + - ASoC: rt1308-sdw: Fix return check for devm_regmap_init_sdw() + - ASoC: rt711: Fix return check for devm_regmap_init_sdw() + - ASoC: rt715: Fix return check for devm_regmap_init_sdw() + - ASoC: rt700: Fix return check for devm_regmap_init_sdw() + - ASoC: qcom: common: Fix refcount imbalance on error + - drm/mediatek: dsi: Fix scrolling of panel with small hfp or hbp + - powerpc/book3s64/radix: Fix boot failure with large amount of guest memory + - ASoC: soc-core: add snd_soc_find_dai_with_mutex() + - ASoC: meson: axg-toddr: fix channel order on g12 platforms + - ASoC: tlv320adcx140: Fix accessing uninitialized adcx140->dev + - ASoC: Intel: haswell: Fix power transition refactor + - ASoC: core: Do not cleanup uninitialized dais on soc_pcm_open failure + - Drivers: hv: vmbus: hibernation: do not hang forever in vmbus_bus_resume() + - scsi: libsas: Fix error path in sas_notify_lldd_dev_found() + - arm64: Allow CPUs unffected by ARM erratum 1418040 to come in late + - Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload + - perf test: Fix the "signal" test inline assembly + - perf record: Don't clear event's period if set by a term + - MIPS: SNI: Fix MIPS_L1_CACHE_SHIFT + - perf test: Free aliases for PMU event map aliases test + - perf metric: Fix some memory leaks + - perf evlist: Fix cpu/thread map leak + - perf parse-event: Fix memory leak in evsel->unit + - perf test: Free formats for perf pmu parse test + - drm/i915/gem: Reduce context termination list iteration guard to RCU + - fbcon: Fix user font detection test at fbcon_resize(). + - MIPS: SNI: Fix spurious interrupts + - drm/mediatek: Use CPU when fail to get cmdq event + - drm/mediatek: Add missing put_device() call in mtk_ddp_comp_init() + - drm/mediatek: Add exception handing in mtk_drm_probe() if component init + fail + - drm/mediatek: Add missing put_device() call in mtk_drm_kms_init() + - drm/mediatek: Add missing put_device() call in mtk_hdmi_dt_parse_pdata() + - arm64: bpf: Fix branch offset in JIT + - iommu/amd: Fix potential @entry null deref + - iommu/amd: Restore IRTE.RemapEn bit for amd_iommu_activate_guest_mode + - kconfig: qconf: use delete[] instead of delete to free array (again) + - i2c: mediatek: Fix generic definitions for bus frequency + - i2c: mxs: use MXS_DMA_CTRL_WAIT4END instead of DMA_CTRL_ACK + - riscv: Add sfence.vma after early page table changes + - locking/lockdep: Fix "USED" <- "IN-NMI" inversions + - efi: efibc: check for efivars write capability + - locking/percpu-rwsem: Use this_cpu_{inc,dec}() for read_count + - x86/unwind/fp: Fix FP unwinding in ret_from_fork + - drm/kfd: fix a system crash issue during GPU recovery + - drm/i915/gem: Delay tracking the GEM context until it is registered + - drm/i915: Filter wake_flags passed to default_wake_function + - USB: quirks: Add USB_QUIRK_IGNORE_REMOTE_WAKEUP quirk for BYD zhaoxin + notebook + - USB: UAS: fix disconnect by unplugging a hub + - usblp: fix race between disconnect() and read() + - usb: typec: ucsi: acpi: Increase command completion timeout value + - usb: typec: ucsi: Prevent mode overrun + - i2c: i801: Fix resume bug + - Revert "ALSA: hda - Fix silent audio output and corrupted input on MSI + X570-A PRO" + - ALSA: hda: fixup headset for ASUS GX502 laptop + - ALSA: hda/realtek - The Mic on a RedmiBook doesn't work + - percpu: fix first chunk size calculation for populated bitmap + - Input: trackpoint - add new trackpoint variant IDs + - Input: i8042 - add Entroware Proteus EL07R4 to nomux and reset lists + - serial: 8250_pci: Add Realtek 816a and 816b + - serial: core: fix port-lock initialisation + - serial: core: fix console port-lock regression + - x86/boot/compressed: Disable relocation relaxation + - ksm: reinstate memcg charge on copied pages + - kprobes: fix kill kprobe which has been marked as gone + - mm/thp: fix __split_huge_pmd_locked() for migration PMD + - s390: add 3f program exception handler + - s390/zcrypt: fix kmalloc 256k failure + - ehci-hcd: Move include to keep CRC stable + - arm64: paravirt: Initialize steal time when cpu is online + - powerpc/dma: Fix dma_map_ops::get_required_mask + - selftests/vm: fix display of page size in map_hugetlb + - dm/dax: Fix table reference counts + - mm/memory_hotplug: drain per-cpu pages again during memory offline + - dm: Call proper helper to determine dax support + - dax: Fix compilation for CONFIG_DAX && !CONFIG_FS_DAX + - mm: memcg: fix memcg reclaim soft lockup + - nvme-loop: set ctrl state connecting after init + - Linux 5.8.11 + + * Miscellaneous Ubuntu changes + - SAUCE: drm/i915/display: Fix null deref in intel_psr_atomic_check() + - SAUCE: RDMA/core: Introduce peer memory interface + - SAUCE: fixup! RDMA/core: Introduce peer memory interface + - SAUCE: IB/mlx5: Use peer client page_shift + - SAUCE: IB/umem: Fix the Peer flow to handle pinned pages properly + - [Config] GCC version update + + -- Paolo Pisati Fri, 02 Oct 2020 10:46:22 +0200 + +linux (5.8.0-20.21) groovy; urgency=medium + + * groovy/linux: 5.8.0-20.21 -proposed tracker (LP: #1896668) + + * Lenovo ThinkBook 14-IML Touchpad not showing up in /proc/bus/input/devices + (LP: #1853277) + - i2c: core: Call i2c_acpi_install_space_handler() before + i2c_acpi_register_devices() + + * Enable LTR for endpoints behind VMD (LP: #1896598) + - SAUCE: PCI/ASPM: Enable LTR for endpoints behind VMD + + * Remove duplicated code in ip_defrag.sh of kselftests/net (LP: #1894062) + - Revert "UBUNTU: SAUCE: selftests: net: ip_defrag: modprobe missing + nf_defrag_ipv6 support" + + * [SRU] [Focal/OEM-5.6/Groovy]Fix AMD usb host controller lost after stress S3 + (LP: #1893914) + - SAUCE: xhci: workaround for S3 issue on AMD SNPS 3.0 xHC + + * debian/rules editconfigs does not work on s390x to change s390x only configs + (LP: #1863116) + - [Packaging] kernelconfig -- only update/edit configurations on architectures + we have compiler support + + * [Ubuntu 20.10] zPCI DMA tables and bitmap leak on hard unplug (PCI Event + 0x0304) (LP: #1896216) + - s390/pci: fix leak of DMA tables on hard unplug + + * md: improve IO accounting (LP: #1891151) + - md: improve io stats accounting + + * Groovy update: v5.8.10 upstream stable release (LP: #1896078) + - ARM: OMAP2+: Fix an IS_ERR() vs NULL check in _get_pwrdm() + - ARM: dts: logicpd-torpedo-baseboard: Fix broken audio + - ARM: dts: logicpd-som-lv-baseboard: Fix broken audio + - ARM: dts: logicpd-som-lv-baseboard: Fix missing video + - regulator: push allocation in regulator_ena_gpio_request() out of lock + - regulator: remove superfluous lock in regulator_resolve_coupling() + - ARM: dts: socfpga: fix register entry for timer3 on Arria10 + - ARM: dts: omap5: Fix DSI base address and clocks + - ARM: dts: ls1021a: fix QuadSPI-memory reg range + - ARM: dts: imx7ulp: Correct gpio ranges + - arm64: dts: imx: Add missing imx8mm-beacon-kit.dtb to build + - ARM: dts: imx7d-zii-rmu2: fix rgmii phy-mode for ksz9031 phy + - RDMA/rtrs-srv: Replace device_register with device_initialize and device_add + - RDMA/rxe: Fix memleak in rxe_mem_init_user + - RDMA/rxe: Drop pointless checks in rxe_init_ports + - RDMA/rxe: Fix panic when calling kmem_cache_create() + - RDMA/bnxt_re: Do not report transparent vlan from QP1 + - RDMA/bnxt_re: Fix the qp table indexing + - RDMA/bnxt_re: Static NQ depth allocation + - RDMA/bnxt_re: Fix driver crash on unaligned PSN entry address + - RDMA/bnxt_re: Remove the qp from list only if the qp destroy succeeds + - drm/sun4i: add missing put_device() call in sun8i_r40_tcon_tv_set_mux() + - arm64: dts: imx8mq: Fix TMU interrupt property + - drm/sun4i: Fix dsi dcs long write function + - scsi: qla2xxx: Fix regression on sparc64 + - scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA + - drm/virtio: fix unblank + - RDMA/core: Fix unsafe linked list traversal after failing to allocate CQ + - RDMA/core: Fix reported speed and width + - scsi: megaraid_sas: Don't call disable_irq from process IRQ poll + - scsi: mpt3sas: Don't call disable_irq from IRQ poll handler + - soundwire: fix double free of dangling pointer + - Revert "kbuild: use -flive-patching when CONFIG_LIVEPATCH is enabled" + - interconnect: qcom: Fix small BW votes being truncated to zero + - padata: fix possible padata_works_lock deadlock + - drm/sun4i: Fix DE2 YVU handling + - drm/sun4i: backend: Support alpha property on lowest plane + - drm/sun4i: backend: Disable alpha on the lowest plane on the A20 + - KVM: arm64: Update page shift if stage 2 block mapping not supported + - ARM: dts: imx6sx: fix the pad QSPI1B_SCLK mux mode for uart3 + - mmc: sdhci-acpi: Clear amd_sdhci_host on reset + - mmc: sdhci-msm: Add retries when all tuning phases are found valid + - spi: stm32: Rate-limit the 'Communication suspended' message + - btrfs: fix NULL pointer dereference after failure to create snapshot + - i2c: npcm7xx: Fix timeout calculation + - block: restore a specific error code in bdev_del_partition + - seccomp: don't leak memory when filter install races + - nvme-fabrics: allow to queue requests for live queues + - spi: stm32: fix pm_runtime_get_sync() error checking + - block: Set same_page to false in __bio_try_merge_page if ret is false + - RDMA/rtrs-srv: Set .release function for rtrs srv device during device init + - IB/isert: Fix unaligned immediate-data handling + - ARM: dts: bcm: HR2: Fixed QSPI compatible string + - ARM: dts: NSP: Fixed QSPI compatible string + - ARM: dts: BCM5301X: Fixed QSPI compatible string + - arm64: dts: ns2: Fixed QSPI compatible string + - KVM: nVMX: Fix the update value of nested load IA32_PERF_GLOBAL_CTRL control + - KVM: x86: always allow writing '0' to MSR_KVM_ASYNC_PF_EN + - ARC: HSDK: wireup perf irq + - dmaengine: acpi: Put the CSRT table after using it + - MIPS: Loongson64: Do not override watch and ejtag feature + - netfilter: conntrack: allow sctp hearbeat after connection re-use + - netfilter: nft_set_rbtree: Detect partial overlap with start endpoint match + - drivers/net/wan/lapbether: Added needed_tailroom + - NFC: st95hf: Fix memleak in st95hf_in_send_cmd + - firestream: Fix memleak in fs_open + - scsi: qedf: Fix null ptr reference in qedf_stag_change_work + - ALSA: hda: Fix 2 channel swapping for Tegra + - ALSA: hda/tegra: Program WAKEEN register for Tegra + - drivers/dma/dma-jz4780: Fix race condition between probe and irq handler + - net: hns3: Fix for geneve tx checksum bug + - xfs: fix off-by-one in inode alloc block reservation calculation + - drivers/net/wan/lapbether: Set network_header before transmitting + - wireless: fix wrong 160/80+80 MHz setting + - mac80211: reduce packet loss event false positives + - cfg80211: Adjust 6 GHz frequency to channel conversion + - xfs: initialize the shortform attr header padding entry + - ARC: show_regs: fix r12 printing and simplify + - irqchip/eznps: Fix build error for !ARC700 builds + - media: gpio-ir-tx: spinlock is not needed to disable interrupts + - nvmet-tcp: Fix NULL dereference when a connect data comes in h2cdata pdu + - nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance + - nvme: have nvme_wait_freeze_timeout return if it timed out + - nvme-tcp: serialize controller teardown sequences + - nvme-tcp: fix timeout handler + - nvme-tcp: fix reset hang if controller died in the middle of a reset + - nvme-rdma: serialize controller teardown sequences + - nvme-rdma: fix timeout handler + - nvme-rdma: fix reset hang if controller died in the middle of a reset + - nvme-pci: cancel nvme device request before disabling + - HID: quirks: Set INCREMENT_USAGE_ON_DUPLICATE for all Saitek X52 devices + - HID: microsoft: Add rumble support for the 8bitdo SN30 Pro+ controller + - drivers/net/wan/hdlc_cisco: Add hard_header_len + - HID: elan: Fix memleak in elan_input_configured + - ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id + - cpufreq: intel_pstate: Refuse to turn off with HWP enabled + - cpufreq: intel_pstate: Fix intel_pstate_get_hwp_max() for turbo disabled + - arm64/module: set trampoline section flags regardless of + CONFIG_DYNAMIC_FTRACE + - ALSA: hda: hdmi - add Rocketlake support + - ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled + - ALSA: hda: use consistent HDAudio spelling in comments/docs + - drivers/net/wan/hdlc: Change the default of hard_header_len to 0 + - drm/amdgpu: Fix bug in reporting voltage for CIK + - iommu/amd: Do not force direct mapping when SME is active + - iommu/amd: Do not use IOMMUv2 functionality when SME is active + - gcov: Disable gcov build with GCC 10 + - iio: adc: mcp3422: fix locking scope + - iio: adc: mcp3422: fix locking on error path + - iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set + - iio: cros_ec: Set Gyroscope default frequency to 25Hz + - iio:light:ltr501 Fix timestamp alignment issue. + - iio:proximity:mb1232: Fix timestamp alignment and prevent data leak. + - iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak. + - iio:adc:ti-adc084s021 Fix alignment and data leak issues. + - iio:adc:ina2xx Fix timestamp alignment issue. + - iio:adc:max1118 Fix alignment of timestamp and data leak issues + - iio:adc:ti-adc081c Fix alignment and data leak issues + - iio:magnetometer:ak8975 Fix alignment and data leak issues. + - iio:light:max44000 Fix timestamp alignment and prevent data leak. + - iio:chemical:ccs811: Fix timestamp alignment and prevent data leak. + - iio: accel: kxsd9: Fix alignment of local buffer. + - iio:accel:mma7455: Fix timestamp alignment and prevent data leak. + - iio:accel:mma8452: Fix timestamp alignment and prevent data leak. + - staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb() + - btrfs: require only sector size alignment for parent eb bytenr + - btrfs: fix lockdep splat in add_missing_dev + - btrfs: free data reloc tree on failed mount + - btrfs: fix wrong address when faulting in pages in the search ioctl + - thunderbolt: Disable ports that are not implemented + - kobject: Restore old behaviour of kobject_del(NULL) + - regulator: push allocation in regulator_init_coupling() outside of lock + - regulator: push allocations in create_regulator() outside of lock + - regulator: push allocation in set_consumer_device_supply() out of lock + - regulator: plug of_node leak in regulator_register()'s error path + - regulator: core: Fix slab-out-of-bounds in regulator_unlock_recursive() + - misc: eeprom: at24: register nvmem only after eeprom is ready to use + - scsi: target: iscsi: Fix data digest calculation + - scsi: lpfc: Fix setting IRQ affinity with an empty CPU mask + - scsi: target: iscsi: Fix hang in iscsit_access_np() when getting + tpg->np_login_sem + - drm/tve200: Stabilize enable/disable + - drm/msm: Split the a5xx preemption record + - drm/msm: Disable preemption on all 5xx targets + - drm/msm: Disable the RPTR shadow + - mmc: sdio: Use mmc_pre_req() / mmc_post_req() + - mmc: sdhci-of-esdhc: Don't walk device-tree on every interrupt + - nvme: Revert: Fix controller creation races with teardown flow + - rbd: require global CAP_SYS_ADMIN for mapping and unmapping + - RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars + - RDMA/mlx4: Read pkey table length instead of hardcoded value + - fbcon: remove soft scrollback code + - fbcon: remove now unusued 'softback_lines' cursor() argument + - vgacon: remove software scrollback support + - KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit + - KVM: arm64: Do not try to map PUDs when they are folded into PMD + - kvm x86/mmu: use KVM_REQ_MMU_SYNC to sync when needed + - KVM: fix memory leak in kvm_io_bus_unregister_dev() + - Revert "usb: dwc3: meson-g12a: fix shared reset control use" + - debugfs: Fix module state check condition + - test_firmware: Test platform fw loading on non-EFI systems + - arm64: dts: imx8mp: correct sdma1 clk setting + - ARM: dts: vfxxx: Add syscon compatible with OCOTP + - video: fbdev: fix OOB read in vga_8planes_imageblit() + - staging: greybus: audio: fix uninitialized value issue + - phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init + - usb: core: fix slab-out-of-bounds Read in read_descriptors + - USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter + - USB: serial: option: support dynamic Quectel USB compositions + - USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules + - usb: Fix out of sync data toggle if a configured device is reconfigured + - usb: typec: ucsi: acpi: Check the _DEP dependencies + - usb: typec: intel_pmc_mux: Un-register the USB role switch + - usb: typec: intel_pmc_mux: Do not configure Altmode HPD High + - usb: typec: intel_pmc_mux: Do not configure SBU and HSL Orientation in + Alternate modes + - drm/msm/gpu: make ringbuffer readonly + - gcov: add support for GCC 10.1 + - Linux 5.8.10 + - [Config] GCC version update + - [Config] updateconfigs following v5.8.10 import + + * Wakeup the system by touching the touchpad (LP: #1888331) + - HID: i2c-hid: Enable wakeup capability from Suspend-to-Idle + + * Fix non-working NVMe after S3 (LP: #1895718) + - SAUCE: PCI: Enable ACS quirk on CML root port + + * Thunderbolt3 daisy chain sometimes doesn't work (LP: #1895606) + - thunderbolt: Retry DROM read once if parsing fails + + * Groovy update: v5.8.9 upstream stable release (LP: #1895634) + - io_uring: fix cancel of deferred reqs with ->files + - io_uring: fix linked deferred ->files cancellation + - RDMA/cma: Simplify DEVICE_REMOVAL for internal_id + - RDMA/cma: Using the standard locking pattern when delivering the removal + event + - RDMA/cma: Remove unneeded locking for req paths + - RDMA/cma: Execute rdma_cm destruction from a handler properly + - ipv4: Silence suspicious RCU usage warning + - ipv6: Fix sysctl max for fib_multipath_hash_policy + - netlabel: fix problems with mapping removal + - net: usb: dm9601: Add USB ID of Keenetic Plus DSL + - sctp: not disable bh in the whole sctp_get_port_local() + - taprio: Fix using wrong queues in gate mask + - tipc: fix shutdown() of connectionless socket + - tipc: fix using smp_processor_id() in preemptible + - net: disable netpoll on fresh napis + - mptcp: free acked data before waiting for more memory + - Linux 5.8.9 + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "selftests/bpf: Fix btf_dump test cases on 32-bit arches" + - [Config] annotations: remove VGACON_SOFT_SCROLLBACK + - packaging: arm64: add a 64KB mem pages flavour called 'generic-64k' + - packaging: arm64: generic-64k: skip ABI, modules and retpoline checks + + * Miscellaneous upstream changes + - tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup() + + -- Seth Forshee Tue, 22 Sep 2020 15:13:52 -0500 + +linux (5.8.0-19.20) groovy; urgency=medium + + * groovy/linux: 5.8.0-19.20 -proposed tracker (LP: #1895120) + + * Please switch default, hwe, oem kernel flavours governor to + CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y , such that advanced userspace + utilities such as game-mode can be later used to rev-up to to performance, + or rev-down to powersave. (LP: #1885730) + - [Config] Set the default CPU governor to ONDEMAND + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update variants + + * [WD19TB] external DP failed with DRM error message (LP: #1886165) + - drm/i915/tgl+: Use the correct DP_TP_* register instances in MST encoders + - drm/i915/tgl+: Fix TBT DPLL fractional divider for 38.4MHz ref clock + + * Groovy update: v5.8.8 upstream stable release (LP: #1895097) + - hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_1 telemetry for RAA228228 + - HID: quirks: Always poll three more Lenovo PixArt mice + - drm/msm/dpu: Fix reservation failures in modeset + - drm/msm/dpu: Fix scale params in plane validation + - drm/msm/dpu: fix unitialized variable error + - tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup + - drm/msm: add shutdown support for display platform_driver + - hwmon: (applesmc) check status earlier. + - nvmet: Disable keep-alive timer when kato is cleared to 0h + - drm/msm: enable vblank during atomic commits + - habanalabs: unmap PCI bars upon iATU failure + - habanalabs: validate packet id during CB parse + - habanalabs: set clock gating according to mask + - habanalabs: proper handling of alloc size in coresight + - habanalabs: set max power according to card type + - habanalabs: validate FW file size + - habanalabs: check correct vmalloc return code + - drm/msm/a6xx: fix gmu start on newer firmware + - gfs2: add some much needed cleanup for log flushes that fail + - hv_utils: return error if host timesysnc update is stale + - hv_utils: drain the timesync packets on onchannelcallback + - ceph: don't allow setlease on cephfs + - i2c: iproc: Fix shifting 31 bits + - drm/omap: fix incorrect lock state + - irqchip/ingenic: Leave parent IRQ unmasked on suspend + - cpuidle: Fixup IRQ state + - nbd: restore default timeout when setting it to zero + - s390: don't trace preemption in percpu macros + - drm/amd/display: should check error using DC_OK + - drm/amd/display: Reject overlay plane configurations in multi-display + scenarios + - drivers: gpu: amd: Initialize amdgpu_dm_backlight_caps object to 0 in + amdgpu_dm_update_backlight_caps + - drm/amd/display: Revert HDCP disable sequence change + - drm/amd/display: Fix passive dongle mistaken as active dongle in EDID + emulation + - drm/amd/display: Keep current gain when ABM disable immediately + - drm/amd/display: Retry AUX write when fail occurs + - drm/amd/display: Fix memleak in amdgpu_dm_mode_config_init + - xen/xenbus: Fix granting of vmalloc'd memory + - fsldma: fix very broken 32-bit ppc ioread64 functionality + - dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling + - batman-adv: Avoid uninitialized chaddr when handling DHCP + - batman-adv: Fix own OGM check in aggregated OGMs + - batman-adv: bla: use netif_rx_ni when not in interrupt context + - dmaengine: at_hdmac: check return value of of_find_device_by_node() in + at_dma_xlate() + - dmaengine: at_hdmac: add missing put_device() call in at_dma_xlate() + - dmaengine: at_hdmac: add missing kfree() call in at_dma_xlate() + - rxrpc: Keep the ACK serial in a var in rxrpc_input_ack() + - rxrpc: Fix loss of RTT samples due to interposed ACK + - rxrpc: Make rxrpc_kernel_get_srtt() indicate validity + - MIPS: mm: BMIPS5000 has inclusive physical caches + - MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores + - mmc: sdhci-acpi: Fix HS400 tuning for AMDI0040 + - perf sched timehist: Fix use of CPU list with summary option + - perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set + - netfilter: nf_tables: add NFTA_SET_USERDATA if not null + - netfilter: nf_tables: incorrect enum nft_list_attributes definition + - netfilter: nf_tables: fix destination register zeroing + - net: hns: Fix memleak in hns_nic_dev_probe + - net: systemport: Fix memleak in bcm_sysport_probe + - ravb: Fixed to be able to unload modules + - net: arc_emac: Fix memleak in arc_mdio_probe + - bpf: Fix a buffer out-of-bound access when filling raw_tp link_info + - dmaengine: pl330: Fix burst length if burst size is smaller than bus width + - dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg + - gtp: add GTPA_LINK info to msg sent to userspace + - net: ethernet: ti: cpsw: fix clean up of vlan mc entries for host port + - net: ethernet: ti: cpsw_new: fix clean up of vlan mc entries for host port + - bnxt_en: Don't query FW when netif_running() is false. + - bnxt_en: Check for zero dir entries in NVRAM. + - bnxt_en: Fix ethtool -S statitics with XDP or TCs enabled. + - bnxt_en: Fix PCI AER error recovery flow + - bnxt_en: Fix possible crash in bnxt_fw_reset_task(). + - bnxt_en: fix HWRM error when querying VF temperature + - xfs: finish dfops on every insert range shift iteration + - xfs: fix boundary test in xfs_attr_shortform_verify + - bnxt: don't enable NAPI until rings are ready + - media: vicodec: add missing v4l2_ctrl_request_hdl_put() + - media: cedrus: Add missing v4l2_ctrl_request_hdl_put() + - net: ethernet: ti: cpsw_new: fix error handling in + cpsw_ndo_vlan_rx_kill_vid() + - media: i2c: imx214: select V4L2_FWNODE + - selftests/bpf: Fix massive output from test_maps + - net: dsa: mt7530: fix advertising unsupported 1000baseT_Half + - netfilter: nfnetlink: nfnetlink_unicast() reports EAGAIN instead of ENOBUFS + - nvmet-fc: Fix a missed _irqsave version of spin_lock in + 'nvmet_fc_fod_op_done()' + - nvme: fix controller instance leak + - netfilter: conntrack: do not auto-delete clash entries on reply + - opp: Don't drop reference for an OPP table that was never parsed + - cxgb4: fix thermal zone device registration + - net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode + - MIPS: perf: Fix wrong check condition of Loongson event IDs + - block: fix locking in bdev_del_partition + - perf top/report: Fix infinite loop in the TUI for grouped events + - perf cs-etm: Fix corrupt data after perf inject from + - perf intel-pt: Fix corrupt data after perf inject from + - perf tools: Correct SNOOPX field offset + - net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init() + - fix regression in "epoll: Keep a reference on files added to the check list" + - net: bcmgenet: fix mask check in bcmgenet_validate_flow() + - net: gemini: Fix another missing clk_disable_unprepare() in probe + - nfp: flower: fix ABI mismatch between driver and firmware + - net: dp83867: Fix WoL SecureOn password + - MIPS: add missing MSACSR and upper MSA initialization + - MIPS: SNI: Fix SCSI interrupt + - xfs: fix xfs_bmap_validate_extent_raw when checking attr fork of rt files + - perf jevents: Fix suspicious code in fixregex() + - perf stat: Turn off summary for interval mode by default + - perf bench: The do_run_multi_threaded() function must use + IS_ERR(perf_session__new()) + - tg3: Fix soft lockup when tg3_reset_task() fails. + - x86, fakenuma: Fix invalid starting node ID + - iommu/vt-d: Serialize IOMMU GCMD register modifications + - thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430 + - thermal: qcom-spmi-temp-alarm: Don't suppress negative temp + - iommu/amd: Restore IRTE.RemapEn bit after programming IRTE + - iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE + - include/linux/log2.h: add missing () around n in roundup_pow_of_two() + - iommu/vt-d: Handle 36bit addressing for x86-32 + - tracing/kprobes, x86/ptrace: Fix regs argument order for i386 + - x86/entry: Fix AC assertion + - x86/debug: Allow a single level of #DB recursion + - ext2: don't update mtime on COW faults + - xfs: don't update mtime on COW faults + - ARC: perf: don't bail setup if pct irq missing in device-tree + - arc: fix memory initialization for systems with two memory banks + - btrfs: drop path before adding new uuid tree entry + - btrfs: fix potential deadlock in the search ioctl + - btrfs: allocate scrub workqueues outside of locks + - btrfs: set the correct lockdep class for new nodes + - btrfs: set the lockdep class for log tree extent buffers + - btrfs: block-group: fix free-space bitmap threshold + - btrfs: tree-checker: fix the error message for transid error + - Bluetooth: Return NOTIFY_DONE for hci_suspend_notifier + - x86/mm/32: Bring back vmalloc faulting on x86_32 + - Revert "ALSA: hda: Add support for Loongson 7A1000 controller" + - ALSA: ca0106: fix error code handling + - ALSA: usb-audio: Add basic capture support for Pioneer DJ DJM-250MK2 + - ALSA: usb-audio: Add implicit feedback quirk for UR22C + - ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check + - ALSA: hda/hdmi: always check pin power status in i915 pin fixup + - ALSA: firewire-digi00x: exclude Avid Adrenaline from detection + - ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO + - ALSA; firewire-tascam: exclude Tascam FE-8 from detection + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion NT950XCJ-X716A + - ALSA: hda/realtek - Improved routing for Thinkpad X1 7th/8th Gen + - arm64: dts: mt7622: add reset node for mmc device + - mmc: mediatek: add optional module reset property + - mmc: dt-bindings: Add resets/reset-names for Mediatek MMC bindings + - mmc: sdhci-pci: Fix SDHCI_RESET_ALL for CQHCI for Intel GLK-based + controllers + - media: rc: do not access device via sysfs after rc_unregister_device() + - media: rc: uevent sysfs file races with rc_unregister_device() + - affs: fix basic permission bits to actually work + - block: allow for_each_bvec to support zero len bvec + - block: ensure bdi->io_pages is always initialized + - io_uring: set table->files[i] to NULL when io_sqe_file_register failed + - io_uring: fix removing the wrong file in __io_sqe_files_update() + - s390: fix GENERIC_LOCKBREAK dependency typo in Kconfig + - libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks + - mips/oprofile: Fix fallthrough placement + - blk-iocost: ioc_pd_free() shouldn't assume irq disabled + - blk-stat: make q->stats->lock irqsafe + - dmaengine: dw-edma: Fix scatter-gather address calculation + - drm/i915: Fix sha_text population code + - drm/amd/pm: avoid false alarm due to confusing softwareshutdowntemp setting + - drm/amdgpu: Specify get_argument function for ci_smu_funcs + - dm writecache: handle DAX to partitions on persistent memory correctly + - dm mpath: fix racey management of PG initialization + - dm integrity: fix error reporting in bitmap mode after creation + - dm crypt: Initialize crypto wait structures + - dm cache metadata: Avoid returning cmd->bm wild pointer on error + - dm thin metadata: Avoid returning cmd->bm wild pointer on error + - dm thin metadata: Fix use-after-free in dm_bm_set_read_only + - mm: slub: fix conversion of freelist_corrupted() + - mm: track page table modifications in __apply_to_page_range() + - mm: madvise: fix vma user-after-free + - mm/rmap: fixup copying of soft dirty and uffd ptes + - io_uring: no read/write-retry on -EAGAIN error and O_NONBLOCK marked file + - perf record: Correct the help info of option "--no-bpf-event" + - kconfig: streamline_config.pl: check defined(ENV variable) before using it + - sdhci: tegra: Add missing TMCLK for data timeout + - checkpatch: fix the usage of capture group ( ... ) + - mm/migrate: fixup setting UFFD_WP flag + - mm/hugetlb: try preferred node first when alloc gigantic page from cma + - mm/hugetlb: fix a race between hugetlb sysctl handlers + - mm/khugepaged.c: fix khugepaged's request size in collapse_file + - cfg80211: regulatory: reject invalid hints + - net: usb: Fix uninit-was-stored issue in asix_read_phy_addr() + - Linux 5.8.8 + + * Groovy update: v5.8.7 upstream stable release (LP: #1894959) + - HID: core: Correctly handle ReportSize being zero + - HID: core: Sanitize event code and type when mapping input + - netfilter: nft_set_rbtree: Handle outcomes of tree rotations in overlap + detection + - mm: fix pin vs. gup mismatch with gate pages + - selftests/x86/test_vsyscall: Improve the process_vm_readv() test + - perf record/stat: Explicitly call out event modifiers in the documentation + - media: media/v4l2-core: Fix kernel-infoleak in video_put_user() + - KVM: arm64: Add kvm_extable for vaxorcism code + - KVM: arm64: Survive synchronous exceptions caused by AT instructions + - dt-bindings: mmc: tegra: Add tmclk for Tegra210 and later + - arm64: tegra: Add missing timeout clock to Tegra194 SDMMC nodes + - arm64: tegra: Add missing timeout clock to Tegra186 SDMMC nodes + - arm64: tegra: Add missing timeout clock to Tegra210 SDMMC + - sdhci: tegra: Remove SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK for Tegra210 + - sdhci: tegra: Remove SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK for Tegra186 + - nl80211: fix NL80211_ATTR_HE_6GHZ_CAPABILITY usage + - scsi: target: tcmu: Optimize use of flush_dcache_page + - Linux 5.8.7 + + * Groovy update: v5.8.6 upstream stable release (LP: #1894956) + - Revert "UBUNTU: SAUCE: Revert "ARM64: vdso32: Install vdso32 from + vdso_install"" + - khugepaged: khugepaged_test_exit() check mmget_still_valid() + - ASoC: intel/skl/hda - fix probe regression on systems without i915 + - ALSA: pci: delete repeated words in comments + - drm/amdgpu: fix RAS memory leak in error case + - EDAC/mc: Call edac_inc_ue_error() before panic + - ASoC: img: Fix a reference count leak in img_i2s_in_set_fmt + - ASoC: img-parallel-out: Fix a reference count leak + - ASoC: tegra: Fix reference count leaks. + - mfd: intel-lpss: Add Intel Emmitsburg PCH PCI IDs + - arm64: dts: qcom: msm8916: Pull down PDM GPIOs during sleep + - powerpc/xive: Ignore kmemleak false positives + - media: pci: ttpci: av7110: fix possible buffer overflow caused by bad DMA + value in debiirq() + - gcc-plugins/stackleak: Don't instrument itself + - blktrace: ensure our debugfs dir exists + - staging: rts5208: fix memleaks on error handling paths in probe + - scsi: target: tcmu: Fix crash on ARM during cmd completion + - mfd: intel-lpss: Add Intel Tiger Lake PCH-H PCI IDs + - iommu/iova: Don't BUG on invalid PFNs + - platform/chrome: cros_ec_sensorhub: Fix EC timestamp overflow + - drm/amdkfd: Fix reference count leaks. + - drm/radeon: fix multiple reference count leak + - drm/amdgpu: fix ref count leak in amdgpu_driver_open_kms + - drm/amd/display: fix ref count leak in amdgpu_drm_ioctl + - drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config + - drm/amdgpu/display: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/fence: fix ref count leak when pm_runtime_get_sync fails + - drm/amdkfd: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/pm: fix ref count leak when pm_runtime_get_sync fails + - scsi: lpfc: Fix shost refcount mismatch when deleting vport + - xfs: Don't allow logging of XFS_ISTALE inodes + - scsi: target: Fix xcopy sess release leak + - selftests/powerpc: Purge extra count_pmc() calls of ebb selftests + - f2fs: remove write attribute of main_blkaddr sysfs node + - f2fs: fix error path in do_recover_data() + - MIPS: KVM: Limit Trap-and-Emulate to MIPS32R2 only + - omapfb: fix multiple reference count leaks due to pm_runtime_get_sync + - PCI: Fix pci_create_slot() reference count leak + - ARM: dts: ls1021a: output PPS signal on FIPER2 + - rtlwifi: rtl8192cu: Prevent leaking urb + - mips/vdso: Fix resource leaks in genvdso.c + - ALSA: hda: Add support for Loongson 7A1000 controller + - gpu: host1x: Put gather's BO on pinning error + - cec-api: prevent leaking memory through hole in structure + - ASoC: Intel: sof_sdw_rt711: remove properties in card remove + - HID: quirks: add NOGET quirk for Logitech GROUP + - f2fs: fix use-after-free issue + - drm/nouveau/drm/noveau: fix reference count leak in nouveau_fbcon_open + - drm/nouveau: fix reference count leak in nv50_disp_atomic_commit + - drm/nouveau: Fix reference count leak in nouveau_connector_detect + - locking/lockdep: Fix overflow in presentation of average lock-time + - btrfs: file: reserve qgroup space after the hole punch range is locked + - btrfs: make btrfs_qgroup_check_reserved_leak take btrfs_inode + - scsi: iscsi: Do not put host in iscsi_set_flashnode_param() + - netfilter: nf_tables: report EEXIST on overlaps + - ceph: fix potential mdsc use-after-free crash + - ceph: do not access the kiocb after aio requests + - scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del() + - i2c: i801: Add support for Intel Tiger Lake PCH-H + - EDAC/ie31200: Fallback if host bridge device is already initialized + - hugetlbfs: prevent filesystem stacking of hugetlbfs + - media: davinci: vpif_capture: fix potential double free + - media: i2c: imx290: fix reset GPIO pin handling + - drm/amd/display: change global buffer to local buffer + - drm/amd/display: fix compilation error on allmodconfig + - KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe + - powerpc/spufs: add CONFIG_COREDUMP dependency + - dmaengine: idxd: fix PCI_MSI build errors + - USB: sisusbvga: Fix a potential UB casued by left shifting a negative value + - mmc: sdhci-of-arasan: fix timings allocation code + - brcmfmac: Set timeout value when configuring power save + - pinctrl: mediatek: avoid virtual gpio trying to set reg + - pinctrl: mediatek: fix build for tristate changes + - efi: provide empty efi_enter_virtual_mode implementation + - arm64: Fix __cpu_logical_map undefined issue + - net: openvswitch: introduce common code for flushing flows + - PCI: qcom: Add missing ipq806x clocks in PCIe driver + - PCI: qcom: Change duplicate PCI reset to phy reset + - PCI: qcom: Add missing reset for ipq806x + - PM / devfreq: Fix the wrong end with semicolon + - cpufreq: intel_pstate: Fix EPP setting via sysfs in active mode + - ALSA: usb-audio: Add capture support for Saffire 6 (USB 1.1) + - nfsd: fix oops on mixed NFSv4/NFSv3 client access + - block: respect queue limit of max discard segment + - block: virtio_blk: fix handling single range discard request + - drm/msm/adreno: fix updating ring fence + - block: Fix page_is_mergeable() for compound pages + - bfq: fix blkio cgroup leakage v4 + - hwmon: (nct7904) Correct divide by 0 + - blk-mq: insert request not through ->queue_rq into sw/scheduler queue + - blkcg: fix memleak for iolatency + - nvmet: fix a memory leak + - nvme-fc: Fix wrong return value in __nvme_fc_init_request() + - nvme: multipath: round-robin: fix single non-optimized path case + - null_blk: fix passing of REQ_FUA flag in null_handle_rq + - habanalabs: Fix memory corruption in debugfs + - drm/etnaviv: always start/stop scheduler in timeout processing + - i2c: core: Don't fail PRP0001 enumeration when no ID table exist + - i2c: rcar: in slave mode, clear NACK earlier + - vdpa: ifcvf: return err when fail to request config irq + - vdpa: ifcvf: free config irq in ifcvf_free_irq() + - usb: gadget: f_tcm: Fix some resource leaks in some error paths + - video: fbdev: controlfb: Fix build for COMPILE_TEST=y && PPC_PMAC=n + - spi: stm32: clear only asserted irq flags on interrupt + - jbd2: make sure jh have b_transaction set in refile/unfile_buffer + - ext4: don't BUG on inconsistent journal feature + - ext4: handle read only external journal device + - ext4: skip non-loaded groups at cr=0/1 when scanning for good groups + - drm/virtio: fix memory leak in virtio_gpu_cleanup_object() + - ext4: abort the filesystem if failed to async write metadata buffer + - jbd2: abort journal if free a async write error metadata buffer + - ext4: handle option set by mount flags correctly + - ext4: handle error of ext4_setup_system_zone() on remount + - ext4: correctly restore system zone info when remount fails + - fs: prevent BUG_ON in submit_bh_wbc() + - spi: stm32h7: fix race condition at end of transfer + - spi: stm32: fix fifo threshold level in case of short transfer + - spi: stm32: fix stm32_spi_prepare_mbr in case of odd clk_rate + - spi: stm32: always perform registers configuration prior to transfer + - drm/amd/powerplay: correct Vega20 cached smu feature state + - drm/amd/powerplay: correct UVD/VCE PG state on custom pptable uploading + - drm/amd/display: Fix LFC multiplier changing erratically + - drm/amd/display: Switch to immediate mode for updating infopackets + - selftests/bpf: Fix segmentation fault in test_progs + - netfilter: avoid ipv6 -> nf_defrag_ipv6 module dependency + - libbpf: Prevent overriding errno when logging errors + - tools/bpftool: Fix compilation warnings in 32-bit mode + - selftest/bpf: Fix compilation warnings in 32-bit mode + - selftests/bpf: Fix btf_dump test cases on 32-bit arches + - selftests/bpf: Correct various core_reloc 64-bit assumptions + - can: j1939: transport: j1939_xtp_rx_dat_one(): compare own packets to detect + corruptions + - dma-pool: fix coherent pool allocations for IOMMU mappings + - dma-pool: Only allocate from CMA when in same memory zone + - drivers/net/wan/hdlc_x25: Added needed_headroom and a skb->len check + - ALSA: hda/realtek: Add model alc298-samsung-headphone + - s390/cio: add cond_resched() in the slow_eval_known_fn() loop + - ASoC: wm8994: Avoid attempts to read unreadable registers + - ALSA: usb-audio: ignore broken processing/extension unit + - selftests: disable rp_filter for icmp_redirect.sh + - scsi: fcoe: Fix I/O path allocation + - scsi: ufs: Fix possible infinite loop in ufshcd_hold + - scsi: ufs: Improve interrupt handling for shared interrupts + - scsi: ufs: Clean up completed request without interrupt notification + - scsi: scsi_debug: Fix scp is NULL errors + - scsi: qla2xxx: Flush all sessions on zone disable + - scsi: qla2xxx: Flush I/O on zone disable + - scsi: qla2xxx: Indicate correct supported speeds for Mezz card + - scsi: qla2xxx: Fix login timeout + - scsi: qla2xxx: Check if FW supports MQ before enabling + - scsi: qla2xxx: Fix null pointer access during disconnect from subsystem + - Revert "scsi: qla2xxx: Fix crash on qla2x00_mailbox_command" + - macvlan: validate setting of multiple remote source MAC addresses + - net: gianfar: Add of_node_put() before goto statement + - drm/amdgpu: fix NULL pointer access issue when unloading driver + - drm/amdkfd: fix the wrong sdma instance query for renoir + - bpf: Fix a rcu_sched stall issue with bpf task/task_file iterator + - bpf: Avoid visit same object multiple times + - ext4: limit the length of per-inode prealloc list + - powerpc/perf: Fix soft lockups due to missed interrupt accounting + - libbpf: Fix map index used in error message + - bpf: selftests: global_funcs: Check err_str before strstr + - arm64: Move handling of erratum 1418040 into C code + - arm64: Allow booting of late CPUs affected by erratum 1418040 + - hwmon: (gsc-hwmon) Scale temperature to millidegrees + - block: fix get_max_io_size() + - block: loop: set discard granularity and alignment for block device backed + loop + - blk-mq: order adding requests to hctx->dispatch and checking SCHED_RESTART + - btrfs: reset compression level for lzo on remount + - btrfs: check the right error variable in btrfs_del_dir_entries_in_log + - btrfs: fix space cache memory leak after transaction abort + - btrfs: detect nocow for swap after snapshot delete + - fbcon: prevent user font height or width change from causing potential out- + of-bounds access + - USB: lvtest: return proper error code in probe + - vt: defer kfree() of vc_screenbuf in vc_do_resize() + - vt_ioctl: change VT_RESIZEX ioctl to check for error return from vc_resize() + - serial: samsung: Removes the IRQ not found warning + - serial: pl011: Fix oops on -EPROBE_DEFER + - serial: pl011: Don't leak amba_ports entry on driver register error + - serial: stm32: avoid kernel warning on absence of optional IRQ + - serial: 8250_exar: Fix number of ports for Commtech PCIe cards + - serial: 8250: change lock order in serial8250_do_startup() + - io_uring: clear req->result on IOPOLL re-issue + - writeback: Protect inode->i_io_list with inode->i_lock + - writeback: Avoid skipping inode writeback + - writeback: Fix sync livelock due to b_dirty_time processing + - XEN uses irqdesc::irq_data_common::handler_data to store a per interrupt XEN + data pointer which contains XEN specific information. + - usb: renesas-xhci: remove version check + - usb: host: xhci-tegra: otg usb2/usb3 port init + - usb: host: xhci-tegra: fix tegra_xusb_get_phy() + - usb: host: xhci: fix ep context print mismatch in debugfs + - xhci: Always restore EP_SOFT_CLEAR_TOGGLE even if ep reset failed + - io-wq: fix hang after cancelling pending hashed work + - KVM: arm64: Set HCR_EL2.PTW to prevent AT taking synchronous exception + - arm64: vdso32: make vdso32 install conditional + - PM: sleep: core: Fix the handling of pending runtime resume requests + - powerpc/32s: Disable VMAP stack which CONFIG_ADB_PMU + - powerpc/perf: Fix crashes with generic_compat_pmu & BHRB + - device property: Fix the secondary firmware node handling in + set_primary_fwnode() + - crypto: af_alg - Work around empty control messages without MSG_MORE + - usbip: Implement a match function to fix usbip + - genirq/matrix: Deal with the sillyness of for_each_cpu() on UP + - irqchip/stm32-exti: Avoid losing interrupts due to clearing pending bits by + mistake + - x86/irq: Unbreak interrupt affinity setting + - x86/hotplug: Silence APIC only after all interrupts are migrated + - drm/i915: Fix cmd parser desc matching with masks + - drm/etnaviv: fix external abort seen on GC600 rev 0x19 + - drm/dp_mst: Don't return error code when crtc is null + - drm/modeset-lock: Take the modeset BKL for legacy drivers + - drm/amdgpu: Fix buffer overflow in INFO ioctl + - drm/amd/display: use correct scale for actual_brightness + - drm/amdgpu/gfx10: refine mgcg setting + - drm/amd/powerplay: Fix hardmins not being sent to SMU for RV + - drm/amd/pm: correct Vega10 swctf limit setting + - drm/amd/pm: correct Vega12 swctf limit setting + - drm/amd/pm: correct Vega20 swctf limit setting + - drm/amd/pm: correct the thermal alert temperature limit settings + - USB: yurex: Fix bad gfp argument + - usb: uas: Add quirk for PNY Pro Elite + - USB: quirks: Ignore duplicate endpoint on Sound Devices MixPre-D + - USB: Ignore UAS for JMicron JMS567 ATA/ATAPI Bridge + - usb: host: ohci-exynos: Fix error handling in exynos_ohci_probe() + - USB: gadget: u_f: add overflow checks to VLA macros + - USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb() + - USB: gadget: u_f: Unbreak offset calculation in VLAs + - usb: dwc3: gadget: Don't setup more than requested + - usb: dwc3: gadget: Fix handling ZLP + - usb: dwc3: gadget: Handle ZLP for sg requests + - USB: cdc-acm: rework notification_buffer resizing + - usb: storage: Add unusual_uas entry for Sony PSZ drives + - USB: Also match device drivers using the ->match vfunc + - USB: Fix device driver race + - usb: typec: ucsi: Fix AB BA lock inversion + - usb: typec: ucsi: Fix 2 unlocked ucsi_run_command calls + - usb: typec: ucsi: Rework ppm_lock handling + - usb: typec: ucsi: Hold con->lock for the entire duration of + ucsi_register_port() + - usb: typec: tcpm: Fix Fix source hard reset response for TDA 2.3.1.1 and TDA + 2.3.1.2 failures + - io_uring: don't recurse on tsk->sighand->siglock with signalfd + - io_uring: don't use poll handler if file can't be nonblocking read/written + - io_uring: make offset == -1 consistent with preadv2/pwritev2 + - drm/atomic-helper: reset vblank on crtc reset + - fbmem: pull fbcon_update_vcs() out of fb_set_var() + - mm/page_counter: fix various data races at memsw + - HID: hiddev: Fix slab-out-of-bounds write in hiddev_ioctl_usage() + - drm/vmwgfx/stdu: Use drm_mode_config_reset + - drm/vmwgfx/sou: Use drm_mode_config_reset + - drm/vmwgfx/ldu: Use drm_mode_config_reset + - dma-pool: Fix an uninitialized variable bug in atomic_pool_expand() + - ALSA: usb-audio: Update documentation comment for MS2109 quirk + - Linux 5.8.6 + - [Config] GCC version update + + * DELL LATITUDE 5491 touchscreen doesn't work (LP: #1889446) // Groovy update: + v5.8.6 upstream stable release (LP: #1894956) + - USB: quirks: Add no-lpm quirk for another Raydium touchscreen + + * [NUC8CCHK][HDA-Intel - HDA Intel PCH, playback] No sound at all + (LP: #1875199) // Groovy update: v5.8.6 upstream stable release + (LP: #1894956) + - ALSA: hda/realtek: Fix pin default on Intel NUC 8 Rugged + + * CVE-2020-14386 + - net/packet: fix overflow in tpacket_rcv + + * dkms-build: downloads fail in private PPAs (LP: #1883874) + - dkms-build: apt-cache policy elides username:password information + + * Groovy update: v5.8.5 upstream stable release (LP: #1893237) + - gre6: Fix reception with IP6_TNL_F_RCV_DSCP_COPY + - net: Fix potential wrong skb->protocol in skb_vlan_untag() + - net: nexthop: don't allow empty NHA_GROUP + - net: qrtr: fix usage of idr in port assignment to socket + - net/sched: act_ct: Fix skb double-free in tcf_ct_handle_fragments() error + flow + - net: sctp: Fix negotiation of the number of data streams. + - net/smc: Prevent kernel-infoleak in __smc_diag_dump() + - tipc: call rcu_read_lock() in tipc_aead_encrypt_done() + - tipc: fix uninit skb->data in tipc_nl_compat_dumpit() + - net: ena: Make missed_tx stat incremental + - ethtool: Fix preserving of wanted feature bits in netlink interface + - ethtool: Account for hw_features in netlink interface + - ethtool: Don't omit the netlink reply if no features were changed + - netlink: fix state reallocation in policy export + - io_uring: fix missing ->mm on exit + - binfmt_flat: revert "binfmt_flat: don't offset the data start" + - Linux 5.8.5 + + * Miscellaneous Ubuntu changes + - [Config] Re-enable UEFI signing for arm64 + - SAUCE: Revert "UBUNTU: SAUCE: export __get_vm_area_caller() and + map_kernel_range()" + + -- Paolo Pisati Thu, 10 Sep 2020 22:15:09 +0200 + +linux (5.8.0-18.19) groovy; urgency=medium + + * groovy/linux: 5.8.0-18.19 -proposed tracker (LP: #1893047) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Groovy update: v5.8.4 upstream stable release (LP: #1893048) + - drm/vgem: Replace opencoded version of drm_gem_dumb_map_offset() + - drm/panel-simple: Fix inverted V/H SYNC for Frida FRD350H54004 panel + - drm/ast: Remove unused code paths for AST 1180 + - drm/ast: Initialize DRAM type before posting GPU + - khugepaged: adjust VM_BUG_ON_MM() in __khugepaged_enter() + - ALSA: hda: avoid reset of sdo_limit + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Flex Book + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion + - can: j1939: transport: j1939_session_tx_dat(): fix use-after-free read in + j1939_tp_txtimer() + - can: j1939: socket: j1939_sk_bind(): make sure ml_priv is allocated + - spi: Prevent adding devices below an unregistering controller + - io_uring: find and cancel head link async work on files exit + - mm/vunmap: add cond_resched() in vunmap_pmd_range + - romfs: fix uninitialized memory leak in romfs_dev_read() + - kernel/relay.c: fix memleak on destroy relay channel + - uprobes: __replace_page() avoid BUG in munlock_vma_page() + - squashfs: avoid bio_alloc() failure with 1Mbyte blocks + - mm: include CMA pages in lowmem_reserve at boot + - mm, page_alloc: fix core hung in free_pcppages_bulk() + - ASoC: amd: renoir: restore two more registers during resume + - RDMA/hfi1: Correct an interlock issue for TID RDMA WRITE request + - opp: Enable resources again if they were disabled earlier + - opp: Put opp table in dev_pm_opp_set_rate() for empty tables + - opp: Put opp table in dev_pm_opp_set_rate() if _set_opp_bw() fails + - ext4: do not block RWF_NOWAIT dio write on unallocated space + - ext4: fix checking of directory entry validity for inline directories + - jbd2: add the missing unlock_buffer() in the error path of + jbd2_write_superblock() + - scsi: zfcp: Fix use-after-free in request timeout handlers + - selftests: kvm: Use a shorter encoding to clear RAX + - s390/pci: fix zpci_bus_link_virtfn() + - s390/pci: re-introduce zpci_remove_device() + - s390/pci: fix PF/VF linking on hot plug + - s390/pci: ignore stale configuration request event + - mm/memory.c: skip spurious TLB flush for retried page fault + - drm: amdgpu: Use the correct size when allocating memory + - drm/amdgpu/display: use GFP_ATOMIC in dcn20_validate_bandwidth_internal + - drm/amd/display: Fix incorrect backlight register offset for DCN + - drm/amd/display: Fix EDID parsing after resume from suspend + - drm/amd/display: Blank stream before destroying HDCP session + - drm/amd/display: Fix DFPstate hang due to view port changed + - drm/amd/display: fix pow() crashing when given base 0 + - drm/i915/pmu: Prefer drm_WARN_ON over WARN_ON + - drm/i915: Provide the perf pmu.module + - scsi: ufs: Add DELAY_BEFORE_LPM quirk for Micron devices + - scsi: target: tcmu: Fix crash in tcmu_flush_dcache_range on ARM + - media: budget-core: Improve exception handling in budget_register() + - media: coda: jpeg: add NULL check after kmalloc + - f2fs: fix to check page dirty status before writeback + - rtc: goldfish: Enable interrupt in set_alarm() when necessary + - media: vpss: clean up resources in init + - f2fs: should avoid inode eviction in synchronous path + - Input: psmouse - add a newline when printing 'proto' by sysfs + - MIPS: Fix unable to reserve memory for Crash kernel + - m68knommu: fix overwriting of bits in ColdFire V3 cache control + - svcrdma: Fix another Receive buffer leak + - xfs: fix inode quota reservation checks + - drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access + - riscv: Fixup static_obj() fail + - jffs2: fix UAF problem + - ceph: fix use-after-free for fsc->mdsc + - swiotlb-xen: use vmalloc_to_page on vmalloc virt addresses + - cpufreq: intel_pstate: Fix cpuinfo_max_freq when MSR_TURBO_RATIO_LIMIT is 0 + - scsi: libfc: Free skb in fc_disc_gpn_id_resp() for valid cases + - virtio_ring: Avoid loop when vq is broken in virtqueue_poll + - media: camss: fix memory leaks on error handling paths in probe + - tools/testing/selftests/cgroup/cgroup_util.c: cg_read_strcmp: fix null + pointer dereference + - xfs: Fix UBSAN null-ptr-deref in xfs_sysfs_init + - alpha: fix annotation of io{read,write}{16,32}be() + - fat: fix fat_ra_init() for data clusters == 0 + - fs/signalfd.c: fix inconsistent return codes for signalfd4 + - ext4: fix potential negative array index in do_split() + - drm/virtio: fix missing dma_fence_put() in virtio_gpu_execbuffer_ioctl() + - ext4: don't allow overlapping system zones + - ext4: check journal inode extents more carefully + - netfilter: nf_tables: nft_exthdr: the presence return value should be + little-endian + - spi: stm32: fixes suspend/resume management + - ASoC: q6afe-dai: mark all widgets registers as SND_SOC_NOPM + - ASoC: q6routing: add dummy register read/write function + - tools/bpftool: Make skeleton code C++17-friendly by dropping typeof() + - bpf: sock_ops ctx access may stomp registers in corner case + - bpf: sock_ops sk access may stomp registers when dst_reg = src_reg + - libbpf: Fix BTF-defined map-in-map initialization on 32-bit host arches + - can: j1939: fix kernel-infoleak in j1939_sk_sock2sockaddr_can() + - can: j1939: transport: j1939_simple_recv(): ignore local J1939 messages send + not by J1939 stack + - can: j1939: transport: add j1939_session_skb_find_by_offset() function + - igc: Fix PTP initialization + - i40e: Set RX_ONLY mode for unicast promiscuous on VLAN + - i40e: Fix crash during removing i40e driver + - net: fec: correct the error path for regulator disable in probe + - bonding: show saner speed for broadcast mode + - can: j1939: fix support for multipacket broadcast message + - can: j1939: cancel rxtimer on multipacket broadcast session complete + - can: j1939: abort multipacket broadcast session when timeout occurs + - can: j1939: add rxtimer for multipacket broadcast session + - bonding: fix a potential double-unregister + - ipvlan: fix device features + - s390/runtime_instrumentation: fix storage key handling + - s390/ptrace: fix storage key handling + - ASoC: msm8916-wcd-analog: fix register Interrupt offset + - ASoC: intel: Fix memleak in sst_media_open + - watch_queue: Limit the number of watches a user can hold + - vfio-pci: Avoid recursive read-lock usage + - vfio/type1: Add proper error unwind for vfio_iommu_replay() + - arch/ia64: Restore arch-specific pgd_offset_k implementation + - kvm: x86: Toggling CR4.SMAP does not load PDPTEs in PAE mode + - kvm: x86: Toggling CR4.PKE does not load PDPTEs in PAE mode + - scsi: ufs: ti-j721e-ufs: Fix error return in ti_j721e_ufs_probe() + - scsi: ufs: Add quirk to fix mishandling utrlclr/utmrlclr + - scsi: ufs: Add quirk to disallow reset of interrupt aggregation + - scsi: ufs: Add quirk to enable host controller without hce + - scsi: ufs: Introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk + - scsi: ufs: Add quirk to fix abnormal ocs fatal error + - scsi: ufs-pci: Add quirk for broken auto-hibernate for Intel EHL + - scsi: ufs: Fix interrupt error message for shared interrupts + - Revert "scsi: qla2xxx: Disable T10-DIF feature with FC-NVMe during probe" + - kconfig: qconf: do not limit the pop-up menu to the first row + - kconfig: qconf: fix signal connection to invalid slots + - efi: avoid error message when booting under Xen + - Fix build error when CONFIG_ACPI is not set/enabled: + - RDMA/bnxt_re: Do not add user qps to flushlist + - Revert "RDMA/hns: Reserve one sge in order to avoid local length error" + - afs: Fix key ref leak in afs_put_operation() + - kconfig: qconf: remove qInfo() to get back Qt4 support + - afs: Fix NULL deref in afs_dynroot_depopulate() + - ARM64: vdso32: Install vdso32 from vdso_install + - powerpc/fixmap: Fix the size of the early debug area + - bpf: Use get_file_rcu() instead of get_file() for task_file iterator + - powerpc/pseries/hotplug-cpu: wait indefinitely for vCPU death + - bonding: fix active-backup failover for current ARP slave + - net: ena: Prevent reset after device destruction + - net: ena: Change WARN_ON expression in ena_del_napi_in_range() + - net: gemini: Fix missing free_netdev() in error path of + gemini_ethernet_port_probe() + - selftests/bpf: Remove test_align leftovers + - hv_netvsc: Fix the queue_mapping in netvsc_vf_xmit() + - net: dsa: b53: check for timeout + - epoll: Keep a reference on files added to the check list + - powerpc: Fix P10 PVR revision in /proc/cpuinfo for SMT4 cores + - powerpc/pseries: Do not initiate shutdown when system is running on UPS + - EDAC/{i7core,sb,pnd2,skx}: Fix error event severity + - efi/x86: Mark kernel rodata non-executable for mixed mode + - efi: add missed destroy_workqueue when efisubsys_init fails + - efi/libstub: Stop parsing arguments at "--" + - efi/libstub: Handle NULL cmdline + - efi/libstub: Handle unterminated cmdline + - do_epoll_ctl(): clean the failure exits up a bit + - KVM: Pass MMU notifier range flags to kvm_unmap_hva_range() + - KVM: arm64: Only reschedule if MMU_NOTIFIER_RANGE_BLOCKABLE is not set + - Revert "drm/amd/display: Improve DisplayPort monitor interop" + - Linux 5.8.4 + - [Config] Update configs following 5.8.4 stable update + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "ARM64: vdso32: Install vdso32 from vdso_install" + + -- Seth Forshee Wed, 26 Aug 2020 10:00:11 -0500 + +linux (5.8.0-17.18) groovy; urgency=medium + + * groovy/linux: 5.8.0-17.18 -proposed tracker (LP: #1892959) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * [Hyper-V] VSS and File Copy daemons intermittently fails to start + (LP: #1891224) + - [Packaging] Bind hv_vss_daemon startup to hv_vss device + - [Packaging] bind hv_fcopy_daemon startup to hv_fcopy device + + * Fix non-working USB devices plugged during system sleep (LP: #1892678) + - xhci: Do warm-reset when both CAS and XDEV_RESUME are set + + * ASPM not enabled on child devices behind VMD controller (LP: #1889384) + - SAUCE: PCI/ASPM: Enable ASPM for links under VMD domain + + * Groovy update: v5.8.3 upstream stable release (LP: #1892774) + - [Config] update config for ARMADA_AP_CPU_CLK + - ALSA: hda/realtek - Fix unused variable warning + - smb3: warn on confusing error scenario with sec=krb5 + - SMB3: Fix mkdir when idsfromsid configured on mount + - genirq/affinity: Make affinity setting if activated opt-in + - genirq: Unlock irq descriptor after errors + - genirq/PM: Always unlock IRQ descriptor in rearm_wake_irq() + - PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context() + - PCI/ATS: Add pci_pri_supported() to check device or associated PF + - PCI: Add device even if driver attach failed + - PCI: qcom: Define some PARF params needed for ipq8064 SoC + - PCI: qcom: Add support for tx term offset for rev 2.1.0 + - btrfs: allow use of global block reserve for balance item deletion + - btrfs: free anon block device right after subvolume deletion + - btrfs: don't allocate anonymous block device for user invisible roots + - btrfs: preallocate anon block device at first phase of snapshot creation + - btrfs: ref-verify: fix memory leak in add_block_entry + - btrfs: only commit the delayed inode when doing a full fsync + - btrfs: stop incremening log_batch for the log root tree when syncing log + - btrfs: only commit delayed items at fsync if we are logging a directory + - btrfs: remove no longer needed use of log_writers for the log root tree + - btrfs: don't traverse into the seed devices in show_devname + - btrfs: pass checksum type via BTRFS_IOC_FS_INFO ioctl + - btrfs: open device without device_list_mutex + - btrfs: move the chunk_mutex in btrfs_read_chunk_tree + - btrfs: relocation: review the call sites which can be interrupted by signal + - btrfs: add missing check for nocow and compression inode flags + - btrfs: avoid possible signal interruption of btrfs_drop_snapshot() on + relocation tree + - btrfs: return EROFS for BTRFS_FS_STATE_ERROR cases + - btrfs: sysfs: use NOFS for device creation + - btrfs: don't WARN if we abort a transaction with EROFS + - btrfs: fix race between page release and a fast fsync + - btrfs: don't show full path of bind mounts in subvol= + - btrfs: fix messages after changing compression level by remount + - btrfs: only search for left_info if there is no right_info in + try_merge_free_space + - btrfs: inode: fix NULL pointer dereference if inode doesn't need compression + - btrfs: fix memory leaks after failure to lookup checksums during inode + logging + - btrfs: trim: fix underflow in trim length to prevent access beyond device + boundary + - btrfs: make sure SB_I_VERSION doesn't get unset by remount + - btrfs: fix return value mixup in btrfs_get_extent + - btrfs: check correct variable after allocation in btrfs_backref_iter_alloc + - arm64: dts: qcom: sc7180: Drop the unused non-MSA SID + - arm64: perf: Correct the event index in sysfs + - dt-bindings: iio: io-channel-mux: Fix compatible string in example code + - iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw() + - iio: imu: st_lsm6dsx: reset hw ts after resume + - xtensa: add missing exclusive access state management + - xtensa: fix xtensa_pmu_setup prototype + - cifs: Fix leak when handling lease break for cached root fid + - powerpc/ptdump: Fix build failure in hashpagetable.c + - powerpc: Allow 4224 bytes of stack expansion for the signal frame + - powerpc: Fix circular dependency between percpu.h and mmu.h + - pinctrl: ingenic: Enhance support for IRQ_TYPE_EDGE_BOTH + - pinctrl: ingenic: Properly detect GPIO direction when configured for IRQ + - media: venus: fix multiple encoder crash + - media: vsp1: dl: Fix NULL pointer dereference on unbind + - net: ethernet: stmmac: Disable hardware multicast filter + - net: stmmac: dwmac1000: provide multicast filter fallback + - irqchip/loongson-liointc: Fix misuse of gc->mask_cache + - irqchip/gic-v4.1: Ensure accessing the correct RD when writing INVALLR + - pidfd: Add missing sock updates for pidfd_getfd() + - net/compat: Add missing sock updates for SCM_RIGHTS + - selftests/seccomp: Set NNP for TSYNC ESRCH flag test + - md/raid5: Fix Force reconstruct-write io stuck in degraded raid5 + - bcache: allocate meta data pages as compound pages + - bcache: fix overflow in offset_to_stripe() + - bcache: avoid nr_stripes overflow in bcache_device_init() + - bcache: fix bio_{start,end}_io_acct with proper device + - bcache: use disk_{start,end}_io_acct() to count I/O for bcache device + - mac80211: fix misplaced while instead of if + - appletalk: Fix atalk_proc_init() return path + - driver core: Avoid binding drivers to dead devices + - MIPS: CPU#0 is not hotpluggable + - MIPS: qi_lb60: Fix routing to audio amplifier + - MIPS: SGI-IP27: always enable NUMA in Kconfig + - ext2: fix missing percpu_counter_inc + - khugepaged: collapse_pte_mapped_thp() flush the right range + - mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible + - khugepaged: collapse_pte_mapped_thp() protect the pmd lock + - khugepaged: retract_page_tables() remember to test exit + - hugetlbfs: remove call to huge_pte_alloc without i_mmap_rwsem + - mm/shuffle: don't move pages between zones and don't read garbage memmaps + - mm: fix kthread_use_mm() vs TLB invalidate + - ocfs2: change slot number type s16 to u16 + - mm/page_counter.c: fix protection usage propagation + - cma: don't quit at first error when activating reserved areas + - mm/memory_hotplug: fix unpaired mem_hotplug_begin/done + - ftrace: Setup correct FTRACE_FL_REGS flags for module + - kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler + - tracing/hwlat: Honor the tracing_cpumask + - tracing: Use trace_sched_process_free() instead of exit() for pid tracing + - watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in + watchdog_info.options + - watchdog: f71808e_wdt: remove use of wrong watchdog_info option + - watchdog: f71808e_wdt: clear watchdog timeout occurred flag + - ceph: set sec_context xattr on symlink creation + - ceph: handle zero-length feature mask in session messages + - pseries: Fix 64 bit logical memory block panic + - dm ebs: Fix incorrect checking for REQ_OP_FLUSH + - dm: don't call report zones for more than the user requested + - module: Correctly truncate sysfs sections output + - bootconfig: Fix to find the initargs correctly + - perf probe: Fix wrong variable warning when the probe point is not found + - perf probe: Fix memory leakage when the probe point is not found + - perf intel-pt: Fix FUP packet state + - perf intel-pt: Fix duplicate branch after CBR + - gfs2: Fix refcount leak in gfs2_glock_poke + - gfs2: Never call gfs2_block_zero_range with an open transaction + - remoteproc: qcom: q6v5: Update running state before requesting stop + - remoteproc: qcom_q6v5_mss: Validate MBA firmware size before load + - remoteproc: qcom_q6v5_mss: Validate modem blob firmware size before load + - libnvdimm: Validate command family indices + - drm/imx: imx-ldb: Disable both channels for split mode in enc->disable() + - drm/ingenic: Fix incorrect assumption about plane->index + - crypto: algif_aead - Only wake up when ctx->more is zero + - mfd: arizona: Ensure 32k clock is put on driver unbind and error + - octeontx2-af: change (struct qmem)->entry_sz from u8 to u16 + - mtd: rawnand: fsl_upm: Remove unused mtd var + - mtd: rawnand: brcmnand: ECC error handling on EDU transfers + - platform/chrome: cros_ec_ishtp: Fix a double-unlock issue + - drm/amdgpu/debugfs: fix memory leak when pm_runtime_get_sync failed + - RDMA/ipoib: Return void from ipoib_ib_dev_stop() + - RDMA/ipoib: Fix ABBA deadlock with ipoib_reap_ah() + - rtc: cpcap: fix range + - media: staging: rkisp1: remove macro RKISP1_DIR_SINK_SRC + - media: staging: rkisp1: rename macros 'RKISP1_DIR_*' to 'RKISP1_ISP_SD_*' + - media: staging: rkisp1: rsz: set default format if the given format is not + RKISP1_ISP_SD_SRC + - media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic + - media: rockchip: rga: Only set output CSC mode for RGB input + - IB/uverbs: Set IOVA on IB MR in uverbs layer + - sched/uclamp: Protect uclamp fast path code with static key + - selftests/bpf: Test_progs indicate to shell on non-actions + - bpf: selftests: Restore netns after each test + - selftests/bpf: test_progs use another shell exit on non-actions + - selftests/bpf: test_progs avoid minus shell exit codes + - USB: serial: ftdi_sio: make process-packet buffer unsigned + - USB: serial: ftdi_sio: clean up receive processing + - crypto: af_alg - Fix regression on empty requests + - devres: keep both device name and resource name in pretty name + - RDMA/counter: Only bind user QPs in auto mode + - RDMA/counter: Allow manually bind QPs with different pids to same counter + - mmc: renesas_sdhi_internal_dmac: clean up the code for dma complete + - rtw88: pci: disable aspm for platform inter-op with module parameter + - rtc: pl031: fix set_alarm by adding back call to alarm_irq_enable + - crypto: caam - Remove broken arc4 support + - gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers + - gpu: ipu-v3: image-convert: Wait for all EOFs before completing a tile + - dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue() + - ima: Fail rule parsing when appraise_flag=blacklist is unsupportable + - f2fs: compress: fix to avoid memory leak on cc->cpages + - clk: actions: Fix h_clk for Actions S500 SoC + - selftests/powerpc: ptrace-pkey: Rename variables to make it easier to follow + code + - selftests/powerpc: ptrace-pkey: Update the test to mark an invalid pkey + correctly + - selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value + - iommu/omap: Check for failure of a call to omap_iommu_dump_ctx + - clk: qcom: gcc: fix sm8150 GPU and NPU clocks + - clk: qcom: clk-alpha-pll: remove unused/incorrect PLL_CAL_VAL + - iommu/vt-d: Handle non-page aligned address + - iommu/vt-d: Enforce PASID devTLB field mask + - iommu/vt-d: Warn on out-of-range invalidation address + - iommu/vt-d: Disable multiple GPASID-dev bind + - i2c: rcar: slave: only send STOP event when we have been addressed + - f2fs: compress: fix to update isize when overwriting compressed file + - clk: qcom: gcc-sdm660: Fix up gcc_mss_mnoc_bimc_axi_clk + - clk: clk-atlas6: fix return value check in atlas6_clk_init() + - nvme: fix deadlock in disconnect during scan_work and/or ana_work + - sched/uclamp: Fix a deadlock when enabling uclamp static key + - pwm: bcm-iproc: handle clk_get_rate() return + - perf tools: Fix term parsing for raw syntax + - tools build feature: Use CC and CXX from parent + - i2c: rcar: avoid race when unregistering slave + - nfs: ensure correct writeback errors are returned on close() + - ubi: fastmap: Don't produce the initial next anchor PEB when fastmap is + disabled + - ubi: fastmap: Free fastmap next anchor peb during detach + - ubifs: Fix wrong orphan node deletion in ubifs_jnl_update|rename + - [Config] update config for CLK_HSDK + - clk: hsdk: Fix bad dependency on IOMEM + - clk: bcm2835: Do not use prediv with bcm2711's PLLs + - libnvdimm/security: fix a typo + - libnvdimm/security: ensure sysfs poll thread woke up and fetch updated attr + - openrisc: Fix oops caused when dumping stack + - perf evsel: Don't set sample_regs_intr/sample_regs_user for dummy event + - scsi: lpfc: nvmet: Avoid hang / use-after-free again when destroying + targetport + - nfs: nfs_file_write() should check for writeback errors + - watchdog: initialize device before misc_register + - watchdog: rti-wdt: balance pm runtime enable calls + - md-cluster: Fix potential error pointer dereference in resize_bitmaps() + - kprobes: Fix compiler warning for !CONFIG_KPROBES_ON_FTRACE + - x86/tsr: Fix tsc frequency enumeration bug on Lightning Mountain SoC + - x86/bugs/multihit: Fix mitigation reporting when VMX is not in use + - selftests/bpf: Prevent runqslower from racing on building bpftool + - Input: sentelic - fix error return when fsp_reg_write fails + - perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set + - selftests/bpf: Fix silent Makefile output + - vdpa_sim: init iommu lock + - recordmcount: Fix build failure on non arm64 + - vdpa: Fix pointer math bug in vdpasim_get_config() + - drm/vmwgfx: Use correct vmw_legacy_display_unit pointer + - drm/vmwgfx: Fix two list_for_each loop exit tests + - s390/test_unwind: fix possible memleak in test_unwind() + - s390/Kconfig: add missing ZCRYPT dependency to VFIO_AP + - net: qcom/emac: add missed clk_disable_unprepare in error path of + emac_clks_phase1_init + - nfs: Fix getxattr kernel panic and memory overflow + - NFS: Fix flexfiles read failover + - lib/test_lockup.c: fix return value of test_lockup_init() + - fs/minix: set s_maxbytes correctly + - fs/minix: fix block limit check for V1 filesystems + - fs/minix: remove expected error message in block_to_path() + - fs/ufs: avoid potential u32 multiplication overflow + - test_kmod: avoid potential double free in trigger_config_run_type() + - i2c: iproc: fix race between client unreg and isr + - mfd: dln2: Run event handler loop under spinlock + - crypto: algif_aead - fix uninitialized ctx->init + - ALSA: echoaudio: Fix potential Oops in snd_echo_resume() + - perf bench mem: Always memset source before memcpy + - tools build feature: Quote CC and CXX for their arguments + - perf/x86/rapl: Fix missing psys sysfs attributes + - sh: landisk: Add missing initialization of sh_io_port_base + - sh: fault: Fix duplicate printing of "PC:" + - drm/i915/gt: Force the GT reset on shutdown + - drm/panfrost: Use kvfree() to free bo->sgts + - drm/dp_mst: Fix the DDC I2C device registration of an MST port + - drm/dp_mst: Fix timeout handling of MST down messages + - drm/dp_mst: Fix the DDC I2C device unregistration of an MST port + - drm/omap: force runtime PM suspend on system suspend + - drm/tidss: fix modeset init for DPI panels + - drm: Added orientation quirk for ASUS tablet model T103HAF + - drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi + - drm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume + - drm/amd/display: Fix dmesg warning from setting abm level + - drm/amd/display: dchubbub p-state warning during surface planes switch + - Linux 5.8.3 + + * update ENA driver for LLQ acceleration mode, new hw support (LP: #1890845) + - ena_netdev: use generic power management + - net: ena: Fix using plain integer as NULL pointer in ena_init_napi_in_range + - net: ena: avoid unnecessary rearming of interrupt vector when busy-polling + - net: ena: add reserved PCI device ID + - net: ena: cosmetic: satisfy gcc warning + - net: ena: cosmetic: change ena_com_stats_admin stats to u64 + - net: ena: add support for traffic mirroring + - net: ena: enable support of rss hash key and function changes + - net: ena: move llq configuration from ena_probe to ena_device_init() + - net: ena: support new LLQ acceleration mode + + * DMA config issues on Synquacer ARM64 platform cause SATA configuration + failures on boot (LP: #1892138) + - of/address: check for invalid range.cpu_addr + + * [SRU] Fix acpi backlight issue on some thinkpads (LP: #1892010) + - platform/x86: thinkpad_acpi: not loading brightness_init when _BCL invalid + + * Fix non-working Goodix touchpad after system sleep (LP: #1891998) + - HID: i2c-hid: Always sleep 60ms after I2C_HID_PWR_ON commands + + * Groovy update: v5.8.2 upstream stable release (LP: #1892215) + - tracepoint: Mark __tracepoint_string's __used + - kunit: capture stderr on all make subprocess calls + - io_uring: abstract out task work running + - HID: input: Fix devices that return multiple bytes in battery report + - ARM: dts: stm32: fix uart nodes ordering in stm32mp15-pinctrl + - ARM: dts: stm32: fix uart7_pins_a comments in stm32mp15-pinctrl + - x86/mce/inject: Fix a wrong assignment of i_mce.status + - perf/x86/intel/uncore: Fix oops when counting IMC uncore events on some TGL + - x86, sched: check for counters overflow in frequency invariant accounting + - x86, sched: Bail out of frequency invariance if turbo frequency is unknown + - x86, sched: Bail out of frequency invariance if turbo_freq/base_freq gives 0 + - sched/fair: Fix NOHZ next idle balance + - sched: correct SD_flags returned by tl->sd_flags() + - arm64: dts: rockchip: fix rk3368-lion gmac reset gpio + - arm64: dts: rockchip: fix rk3399-puma vcc5v0-host gpio + - arm64: dts: rockchip: fix rk3399-puma gmac reset gpio + - EDAC: Fix reference count leaks + - crc-t10dif: Fix potential crypto notify dead-lock + - arm64: dts: qcom: msm8916: Replace invalid bias-pull-none property + - memory: tegra: Fix an error handling path in tegra186_emc_probe() + - soc: qcom: rpmh-rsc: Don't use ktime for timeout in write_tcs_reg_sync() + - crypto: ccree - fix resource leak on error path + - ARM: exynos: MCPM: Restore big.LITTLE cpuidle support + - rcu/tree: Repeat the monitor if any free channel is busy + - firmware: arm_scmi: Fix SCMI genpd domain probing + - arm64: dts: sun50i-pinephone: dldo4 must not be >= 1.8V + - arm64: dts: exynos: Fix silent hang after boot on Espresso + - sched/uclamp: Fix initialization of struct uclamp_rq + - crypto: qat - allow xts requests not multiple of block + - clk: scmi: Fix min and max rate when registering clocks with discrete rates + - m68k: mac: Don't send IOP message until channel is idle + - m68k: mac: Fix IOP status/control register writes + - platform/x86: intel-hid: Fix return value check in check_acpi_dev() + - platform/x86: intel-vbtn: Fix return value check in check_acpi_dev() + - ARM: dts: gose: Fix ports node name for adv7180 + - arm64: dts: renesas: Fix SD Card/eMMC interface device node names + - ARM: dts: gose: Fix ports node name for adv7612 + - ARM: at91: pm: add missing put_device() call in at91_pm_sram_init() + - ARM: dts: exynos: Disable frequency scaling for FSYS bus on Odroid XU3 + family + - reset: intel: fix a compile warning about REG_OFFSET redefined + - ARM: dts: at91: sama5d3_xplained: change phy-mode + - ARM: dts: sunxi: bananapi-m2-plus-v1.2: Add regulator supply to all CPU + cores + - ARM: dts: sunxi: bananapi-m2-plus-v1.2: Fix CPU supply voltages + - ARM: dts: stm32: Fix spi4 pins in stm32mp15-pinctrl + - spi: dw-dma: Fix Tx DMA channel working too fast + - spi: lantiq: fix: Rx overflow error in full duplex mode + - crypto: x86/crc32c - fix building with clang ias + - tpm: Require that all digests are present in TCG_PCR_EVENT2 structures + - recordmcount: only record relocation of type R_AARCH64_CALL26 on arm64. + - regulator: fix memory leak on error path of regulator_register() + - io_uring: fix sq array offset calculation + - arm64: dts: meson: misc fixups for w400 dtsi + - arm64: dts: meson: fix mmc0 tuning error on Khadas VIM3 + - soc: qcom: pdr: Reorder the PD state indication ack + - spi: rockchip: Fix error in SPI slave pio read + - ARM: socfpga: PM: add missing put_device() call in + socfpga_setup_ocram_self_refresh() + - iocost: Fix check condition of iocg abs_vdebt + - scripts/selinux/mdp: fix initial SID handling + - irqchip/ti-sci-inta: Fix return value about devm_ioremap_resource() + - seccomp: Fix ioctl number for SECCOMP_IOCTL_NOTIF_ID_VALID + - md: raid0/linear: fix dereference before null check on pointer mddev + - irqchip/loongson-htvec: Fix potential resource leak + - irqchip/loongson-htvec: Check return value of irq_domain_translate_onecell() + - irqchip/loongson-pch-pic: Check return value of + irq_domain_translate_twocell() + - irqchip/loongson-liointc: Fix potential dead lock + - kunit: tool: fix broken default args in unit tests + - kunit: tool: fix improper treatment of file location + - irqchip/irq-bcm7038-l1: Guard uses of cpu_logical_map + - irqchip/gic-v4.1: Use GFP_ATOMIC flag in allocate_vpe_l1_table() + - nvme-tcp: fix controller reset hang during traffic + - nvme-rdma: fix controller reset hang during traffic + - nvme-multipath: fix logic for non-optimized paths + - nvme-multipath: do not fall back to __nvme_find_path() for non-optimized + paths + - irqchip/loongson-pch-pic: Fix the misused irq flow handler + - block: don't do revalidate zones on invalid devices + - drm/tilcdc: fix leak & null ref in panel_connector_get_modes + - soc: qcom: rpmh-rsc: Set suppress_bind_attrs flag + - net: mscc: ocelot: fix encoding destination ports into multicast IPv4 + address + - ARM: exynos: clear L310_AUX_CTRL_FULL_LINE_ZERO in default l2c_aux_val + - Bluetooth: add a mutex lock to avoid UAF in do_enale_set + - loop: be paranoid on exit and prevent new additions / removals + - io_uring: fix req->work corruption + - fs/btrfs: Add cond_resched() for try_release_extent_mapping() stalls + - drm/amdgpu: avoid dereferencing a NULL pointer + - drm/radeon: Fix reference count leaks caused by pm_runtime_get_sync + - crypto: aesni - Fix build with LLVM_IAS=1 + - video: fbdev: savage: fix memory leak on error handling path in probe + - video: fbdev: neofb: fix memory leak in neo_scan_monitor() + - bus: ti-sysc: Add missing quirk flags for usb_host_hs + - md-cluster: fix wild pointer of unlock_all_bitmaps() + - rtw88: 8822ce: add support for device ID 0xc82f + - drm/nouveau/kms/nv50-: Fix disabling dithering + - arm64: dts: hisilicon: hikey: fixes to comply with adi, adv7533 DT binding + - drm/etnaviv: fix ref count leak via pm_runtime_get_sync + - ionic: rearrange reset and bus-master control + - memory: samsung: exynos5422-dmc: Do not ignore return code of regmap_read() + - drm/nouveau: fix reference count leak in nouveau_debugfs_strap_peek + - drm/nouveau: fix multiple instances of reference count leaks + - mmc: sdhci-cadence: do not use hardware tuning for SD mode + - btrfs: fix lockdep splat from btrfs_dump_space_info + - usb: mtu3: clear dual mode of u3port when disable device + - drm: msm: a6xx: fix gpu failure after system resume + - drm/msm: Fix a null pointer access in msm_gem_shrinker_count() + - drm/debugfs: fix plain echo to connector "force" attribute + - drm/radeon: disable AGP by default + - net: phy: mscc: restore the base page in vsc8514/8584_config_init + - irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock + - mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls + - drm/amd/display: Improve DisplayPort monitor interop + - drm/amdgpu/debugfs: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/display bail early in dm_pp_get_static_clocks + - drm/amdgpu/display: properly guard the calls to swSMU functions + - drm/amd/display: allow query ddc data over aux to be read only operation + - drm/amd/powerplay: fix compile error with ARCH=arc + - bpf: Fix fds_example SIGSEGV error + - Bluetooth: hci_qca: Bug fixes for SSR + - brcmfmac: keep SDIO watchdog running when console_interval is non-zero + - brcmfmac: To fix Bss Info flag definition Bug + - brcmfmac: set state of hanger slot to FREE when flushing PSQ + - platform/x86: asus-nb-wmi: add support for ASUS ROG Zephyrus G14 and G15 + - iwlegacy: Check the return value of pcie_capability_read_*() + - gpu: host1x: debug: Fix multiple channels emitting messages simultaneously + - drm/amd/powerplay: suppress compile error around BUG_ON + - ionic: update eid test for overflow + - x86/uaccess: Make __get_user_size() Clang compliant on 32-bit + - mmc: sdhci-pci-o2micro: Bug fix for O2 host controller Seabird1 + - usb: gadget: net2280: fix memory leak on probe error handling paths + - bdc: Fix bug causing crash after multiple disconnects + - usb: bdc: Halt controller on suspend + - dyndbg: fix a BUG_ON in ddebug_describe_flags + - bcache: fix super block seq numbers comparision in register_cache_set() + - btrfs: allow btrfs_truncate_block() to fallback to nocow for data space + reservation + - btrfs: qgroup: free per-trans reserved space when a subvolume gets dropped + - ACPICA: Do not increment operation_region reference counts for field units + - io_uring: fix racy overflow count reporting + - io_uring: fix stalled deferred requests + - crypto: caam - silence .setkey in case of bad key length + - drm/msm: ratelimit crtc event overflow error + - drm/gem: Fix a leak in drm_gem_objects_lookup() + - drm/bridge: ti-sn65dsi86: Clear old error bits before AUX transfers + - drm/bridge: ti-sn65dsi86: Fix off-by-one error in clock choice + - drm/amdgpu: use the unlocked drm_gem_object_put + - agp/intel: Fix a memory leak on module initialisation failure + - mwifiex: Fix firmware filename for sd8977 chipset + - mwifiex: Fix firmware filename for sd8997 chipset + - btmrvl: Fix firmware filename for sd8977 chipset + - btmrvl: Fix firmware filename for sd8997 chipset + - video: fbdev: sm712fb: fix an issue about iounmap for a wrong address + - console: newport_con: fix an issue about leak related system resources + - video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call + - Bluetooth: hci_qca: Fix an error pointer dereference + - drm/mm: fix hole size comparison + - Bluetooth: hci_qca: Only remove TX clock vote after TX is completed + - Bluetooth: Allow suspend even when preparation has failed + - ath10k: Acquire tx_lock in tx error paths + - Bluetooth: hci_qca: Bug fix during SSR timeout + - Bluetooth: hci_qca: Increase SoC idle timeout to 200ms + - iio: improve IIO_CONCENTRATION channel type description + - iio: amplifiers: ad8366: Change devm_gpiod_get() to optional and add the + missed check + - scsi: ufs: Fix imprecise load calculation in devfreq window + - drm/etnaviv: Fix error path on failure to enable bus clk + - drm/panfrost: Fix inbalance of devfreq record_busy/idle() + - drm/arm: fix unintentional integer overflow on left shift + - clk: bcm63xx-gate: fix last clock availability + - powerpc/mm: Fix typo in IS_ENABLED() + - powerpc/fixmap: Fix FIX_EARLY_DEBUG_BASE when page size is 256k + - leds: lm355x: avoid enum conversion warning + - ASoC: fsl_easrc: Fix uninitialized scalar variable in + fsl_easrc_set_ctx_format + - Bluetooth: btusb: fix up firmware download sequence + - Bluetooth: btmtksdio: fix up firmware download sequence + - media: cxusb-analog: fix V4L2 dependency + - media: marvell-ccic: Add missed v4l2_async_notifier_cleanup() + - media: omap3isp: Add missed v4l2_ctrl_handler_free() for + preview_init_entities() + - staging: most: avoid null pointer dereference when iface is null + - dpaa2-eth: fix condition for number of buffer acquire retries + - ASoC: SOF: nocodec: add missing .owner field + - ASoC: Intel: cml_rt1011_rt5682: add missing .owner field + - ASoC: Intel: sof_sdw: add missing .owner field + - ASoC: Intel: bxt_rt298: add missing .owner field + - ASoC: Intel: Boards: cml_rt1011_rt5682: use statically define codec config + - net: atlantic: MACSec offload statistics checkpatch fix + - scsi: cumana_2: Fix different dev_id between request_irq() and free_irq() + - scsi: ufs: Disable WriteBooster capability for non-supported UFS devices + - drm/mipi: use dcs write for mipi_dsi_dcs_set_tear_scanline + - cxl: Fix kobject memleak + - lkdtm: Avoid more compiler optimizations for bad writes + - selftests/lkdtm: Reset WARN_ONCE to avoid false negatives + - lkdtm: Make arch-specific tests always available + - net: ethernet: ti: am65-cpsw-nuss: restore vlan configuration while down/up + - tracing: Move pipe reference to trace array instead of current_tracer + - scsi: qla2xxx: Make __qla2x00_alloc_iocbs() initialize 32 bits of + request_t.handle + - drm/amdgpu/debugfs: fix memory leak when amdgpu_virt_enable_access_debugfs + failed + - drm/amdgpu: ensure 0 is returned for success in jpeg_v2_5_wait_for_idle + - drm/radeon: fix array out-of-bounds read and write issues + - staging: vchiq_arm: Add a matching unregister call + - iavf: fix error return code in iavf_init_get_resources() + - iavf: Fix updating statistics + - dma-buf: fix dma-fence-chain out of order test + - RDMA/core: Fix bogus WARN_ON during ib_unregister_device_queued() + - scsi: powertec: Fix different dev_id between request_irq() and free_irq() + - scsi: eesox: Fix different dev_id between request_irq() and free_irq() + - ipvs: allow connection reuse for unconfirmed conntrack + - media: firewire: Using uninitialized values in node_probe() + - media: allegro: Fix some NULL vs IS_ERR() checks in probe + - media: staging: rkisp1: rsz: supported formats are the isp's src formats, + not sink formats + - media: staging: rkisp1: rsz: fix resolution limitation on sink pad + - media: tvp5150: Add missed media_entity_cleanup() + - media: exynos4-is: Add missed check for pinctrl_lookup_state() + - media: cros-ec-cec: do not bail on device_init_wakeup failure + - xfs: preserve rmapbt swapext block reservation from freed blocks + - xfs: don't eat an EIO/ENOSPC writeback error when scrubbing data fork + - xfs: fix reflink quota reservation accounting error + - RDMA/rxe: Skip dgid check in loopback mode + - PCI: Fix pci_cfg_wait queue locking problem + - samples: bpf: Fix bpf programs with kprobe/sys_connect event + - drm/stm: repair runtime power management + - kobject: Avoid premature parent object freeing in kobject_cleanup() + - leds: core: Flush scheduled work for system suspend + - drm: panel: simple: Fix bpc for LG LB070WV8 panel + - phy: cadence: salvo: fix wrong bit definition + - dt-bindings: phy: uniphier: Fix incorrect clocks and clock-names for PXs3 + usb3-hsphy + - phy: exynos5-usbdrd: Calibrating makes sense only for USB2.0 PHY + - mmc: sdhci-of-arasan: Add missed checks for devm_clk_register() + - drm/bridge: sil_sii8620: initialize return of sii8620_readb + - scsi: scsi_debug: Add check for sdebug_max_queue during module init + - bpfilter: Initialize pos variable + - mwifiex: Prevent memory corruption handling keys + - kernfs: do not call fsnotify() with name without a parent + - powerpc/pseries: remove cede offline state for CPUs + - powerpc/rtas: don't online CPUs for partition suspend + - powerpc/vdso: Fix vdso cpu truncation + - Bluetooth: Fix update of connection state in `hci_encrypt_cfm` + - RDMA/qedr: SRQ's bug fixes + - RDMA/qedr: Add EDPM mode type for user-fw compatibility + - RDMA/qedr: Add EDPM max size to alloc ucontext response + - RDMA/rxe: Prevent access to wr->next ptr afrer wr is posted to send queue + - ima: Have the LSM free its audit rule + - ima: Free the entire rule when deleting a list of rules + - ima: Free the entire rule if it fails to parse + - ima: Fail rule parsing when buffer hook functions have an invalid action + - ima: Fail rule parsing when the KEXEC_CMDLINE hook is combined with an + invalid cond + - ima: Fail rule parsing when the KEY_CHECK hook is combined with an invalid + cond + - staging: rtl8192u: fix a dubious looking mask before a shift + - ASoC: meson: fixes the missed kfree() for axg_card_add_tdm_loopback + - PCI/ASPM: Add missing newline in sysfs 'policy' + - go7007: add sanity checking for endpoints + - media: s5p-g2d: Fix a memory leak in an error handling path in 'g2d_probe()' + - phy: renesas: rcar-gen3-usb2: move irq registration to init + - powerpc/mm/radix: Free PUD table when freeing pagetable + - powerpc/book3s64/pkeys: Use PVR check instead of cpu feature + - drm/imx: fix use after free + - drm/imx: tve: fix regulator_disable error path + - gpu: ipu-v3: Restore RGB32, BGR32 + - spi: lantiq-ssc: Fix warning by using WQ_MEM_RECLAIM + - PCI: loongson: Use DECLARE_PCI_FIXUP_EARLY for bridge_class_quirk() + - USB: serial: iuu_phoenix: fix led-activity helpers + - clk: qcom: gcc: Make disp gpll0 branch aon for sc7180/sdm845 + - usb: core: fix quirks_param_set() writing to a const pointer + - thermal: ti-soc-thermal: Fix reversed condition in + ti_thermal_expose_sensor() + - coresight: etmv4: Fix resource selector constant + - coresight: etmv4: Counter values not saved on disable + - coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb() + - coresight: etm4x: Fix save/restore during cpu idle + - powerpc/perf: Fix missing is_sier_aviable() during build + - mt76: mt7663u: fix memory leak in set key + - mt76: mt7663u: fix potential memory leak in mcu message handler + - mt76: mt7615: fix potential memory leak in mcu message handler + - mt76: mt7915: potential array overflow in mt7915_mcu_tx_rate_report() + - mt76: mt7915: add missing CONFIG_MAC80211_DEBUGFS + - mt76: mt7615: fix possible memory leak in mt7615_mcu_wtbl_sta_add + - phy: armada-38x: fix NETA lockup when repeatedly switching speeds + - s390/bpf: Use brcl for jumping to exit_ip if necessary + - s390/bpf: Tolerate not converging code shrinking + - tools/bpftool: Fix error handing in do_skeleton() + - ASoC: tas2770: Fix reset gpio property name + - qed: Fix ILT and XRCD bitmap memory leaks + - ASoC: hdac_hda: fix deadlock after PCM open error + - powerpc/spufs: Fix the type of ret in spufs_arch_write_note + - PCI: rcar: Fix runtime PM imbalance on error + - MIPS: OCTEON: add missing put_device() call in dwc3_octeon_device_init() + - thermal: int340x: processor_thermal: fix: update Jasper Lake PCI id + - usb: dwc3: meson-g12a: fix shared reset control use + - usb: dwc2: Fix error path in gadget registration + - usb: gadget: f_uac2: fix AC Interface Header Descriptor wTotalLength + - scsi: megaraid_sas: Clear affinity hint + - scsi: mesh: Fix panic after host or bus reset + - scsi: core: Add missing scsi_device_put() in scsi_host_block() + - net: dsa: mv88e6xxx: MV88E6097 does not support jumbo configuration + - bpf: Fix pos computation for bpf_iter seq_ops->start() + - powerpc/watchpoint: Fix 512 byte boundary limit + - powerpc/watchpoint: Fix DAWR exception constraint + - powerpc/watchpoint: Fix DAWR exception for CACHEOP + - macintosh/via-macii: Access autopoll_devs when inside lock + - gpio: regmap: fix type clash + - PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path + - PCI: cadence: Fix updating Vendor ID and Subsystem Vendor ID register + - RDMA/core: Fix return error value in _ib_modify_qp() to negative + - Smack: fix another vsscanf out of bounds + - Smack: prevent underflow in smk_set_cipso() + - power: supply: check if calc_soc succeeded in pm860x_init_battery + - Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers + - Bluetooth: hci_h5: Set HCI_UART_RESET_ON_INIT to correct flags + - Bluetooth: hci_serdev: Only unregister device if it was registered + - bpf: Fix bpf_ringbuf_output() signature to return long + - Bluetooth: Fix suspend notifier race + - Bluetooth: hci_qca: Stop collecting memdump again for command timeout during + SSR + - net: dsa: rtl8366: Fix VLAN semantics + - net: dsa: rtl8366: Fix VLAN set-up + - xfs: fix inode allocation block res calculation precedence + - xfs: clear XFS_DQ_FREEING if we can't lock the dquot buffer to flush + - selftests/powerpc: Squash spurious errors due to device removal + - powerpc/32s: Fix CONFIG_BOOK3S_601 uses + - powerpc/boot: Fix CONFIG_PPC_MPC52XX references + - selftests/powerpc: Fix CPU affinity for child process + - nvmem: sprd: Fix return value of sprd_efuse_probe() + - RDMA/rtrs-clt: add an additional random 8 seconds before reconnecting + - RDMA/rtrs: remove WQ_MEM_RECLAIM for rtrs_wq + - RDMA/netlink: Remove CAP_NET_RAW check when dump a raw QP + - PCI: Release IVRS table in AMD ACS quirk + - cpufreq: ap806: fix cpufreq driver needs ap cpu clk + - powerpc/pseries/hotplug-cpu: Remove double free in error path + - selftests/powerpc: Fix online CPU selection + - RDMA/hns: Fix error during modify qp RTS2RTS + - RDMA/hns: Fix the unneeded process when getting a general type of CQE error + - ASoC: meson: axg-tdm-interface: fix link fmt setup + - ASoC: meson: axg-tdmin: fix g12a skew + - ASoC: meson: axg-tdm-formatters: fix sclk inversion + - ASoC: soc-core: Fix regression causing sysfs entries to disappear + - net: ll_temac: Use devm_platform_ioremap_resource_byname() + - drm/msm/dpu: don't use INTF_INPUT_CTRL feature on sdm845 + - libbpf: Fix register in PT_REGS MIPS macros + - MIPS: only register FTLBPar exception handler for supported models + - ASoC: core: use less strict tests for dailink capabilities + - ASoC: meson: cards: deal dpcm flag change + - ASoC: fsl_sai: Fix value of FSL_SAI_CR1_RFW_MASK + - s390/qeth: tolerate pre-filled RX buffer + - s390/qeth: don't process empty bridge port events + - ice: Clear and free XLT entries on reset + - ice: Graceful error handling in HW table calloc failure + - netfilter: nft_meta: fix iifgroup matching + - rtw88: fix LDPC field for RA info + - rtw88: fix short GI capability based on current bandwidth + - rtw88: coex: only skip coex triggered by BT info + - qtnfmac: Missing platform_device_unregister() on error in + qtnf_core_mac_alloc() + - wl1251: fix always return 0 error + - tools, build: Propagate build failures from tools/build/Makefile.build + - tools, bpftool: Fix wrong return value in do_dump() + - net/mlx5: DR, Change push vlan action sequence + - net/mlx5: Delete extra dump stack that gives nothing + - net: mvpp2: fix memory leak in mvpp2_rx + - net: ethernet: aquantia: Fix wrong return value + - liquidio: Fix wrong return value in cn23xx_get_pf_num() + - net: sgi: ioc3-eth: Fix the size used in some 'dma_free_coherent()' calls + - net: spider_net: Fix the size used in a 'dma_free_coherent()' call + - fsl/fman: use 32-bit unsigned integer + - fsl/fman: fix dereference null return value + - fsl/fman: fix unreachable code + - fsl/fman: check dereferencing null pointer + - fsl/fman: fix eth hash table allocation + - gpio: don't use same lockdep class for all devm_gpiochip_add_data users + - net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task() + - net: macb: Properly handle phylink on at91sam9x + - dpaa2-eth: Fix passing zero to 'PTR_ERR' warning + - hv_netvsc: do not use VF device if link is down + - Revert "vxlan: fix tos value before xmit" + - net: thunderx: initialize VF's mailbox mutex before first usage + - media: mtk-mdp: Fix a refcounting bug on error in init + - dlm: Fix kobject memleak + - ocfs2: fix unbalanced locking + - pinctrl-single: fix pcs_parse_pinconf() return value + - mtd: rawnand: brcmnand: Don't default to edu transfer + - svcrdma: Fix page leak in svc_rdma_recv_read_chunk() + - nfsd: avoid a NULL dereference in __cld_pipe_upcall() + - x86/fsgsbase/64: Fix NULL deref in 86_fsgsbase_read_task + - crypto: aesni - add compatibility with IAS + - af_packet: TPACKET_V3: fix fill status rwlock imbalance + - drivers/net/wan/lapbether: Added needed_headroom and a skb->len check + - net: Fix potential memory leak in proto_register() + - net/nfc/rawsock.c: add CAP_NET_RAW check. + - net: phy: fix memory leak in device-create error path + - net: Set fput_needed iff FDPUT_FPUT is set + - net/tls: Fix kmap usage + - vmxnet3: use correct tcp hdr length when packet is encapsulated + - net: refactor bind_bucket fastreuse into helper + - net: initialize fastreuse on inet_inherit_port + - vsock: fix potential null pointer dereference in vsock_poll() + - net: phy: marvell10g: fix null pointer dereference + - r8152: Use MAC address from correct device tree node + - USB: serial: cp210x: re-enable auto-RTS on open + - USB: serial: cp210x: enable usb generic throttle/unthrottle + - usb: cdns3: gadget: always zeroed TRB buffer when enable endpoint + - iommu/vt-d: Skip TE disabling on quirky gfx dedicated iommu + - vdpasim: protect concurrent access to iommu iotlb + - ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO + - ALSA: hda - reverse the setting value in the micmute_led_set + - ALSA: usb-audio: Creative USB X-Fi Pro SB1095 volume knob support + - ALSA: usb-audio: fix overeager device match for MacroSilicon MS2109 + - ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109 + - ALSA: usb-audio: add quirk for Pioneer DDJ-RB + - tpm: Unify the mismatching TPM space buffer sizes + - pstore: Fix linking when crypto API disabled + - crypto: hisilicon - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not + specified + - crypto: qat - fix double free in qat_uclo_create_batch_init_list + - crypto: ccp - Fix use of merged scatterlists + - crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified + - tick/nohz: Narrow down noise while setting current task's tick dependency + - bitfield.h: don't compile-time validate _val in FIELD_FIT + - fs/minix: check return value of sb_getblk() + - fs/minix: don't allow getting deleted inodes + - fs/minix: reject too-large maximum file size + - kvm: x86: replace kvm_spec_ctrl_test_value with runtime test on the host + - 9p: Fix memory leak in v9fs_mount + - driver core: Fix probe_count imbalance in really_probe() + - media: media-request: Fix crash if memory allocation fails + - drm/ttm/nouveau: don't call tt destroy callback on alloc failure. + - io_uring: set ctx sq/cq entry count earlier + - io_uring: use TWA_SIGNAL for task_work uncondtionally + - io_uring: fail poll arm on queue proc failure + - io_uring: sanitize double poll handling + - NFS: Don't move layouts to plh_return_segs list while in use + - NFS: Don't return layout segments that are in use + - cpufreq: Fix locking issues with governors + - cpufreq: dt: fix oops on armada37xx + - MIPS: VZ: Only include loongson_regs.h for CPU_LOONGSON64 + - include/asm-generic/vmlinux.lds.h: align ro_after_init + - PM / devfreq: rk3399_dmc: Fix kernel oops when rockchip,pmu is absent + - PM / devfreq: Fix indentaion of devfreq_summary debugfs node + - spi: spidev: Align buffers for DMA + - mtd: rawnand: qcom: avoid write to unavailable register + - mtd: spi-nor: intel-spi: Simulate WRDI command + - erofs: fix extended inode could cross boundary + - Revert "mm/vmstat.c: do not show lowmem reserve protection information of + empty zone" + - Revert "parisc: Improve interrupt handling in arch_spin_lock_flags()" + - Revert "parisc: Drop LDCW barrier in CAS code when running UP" + - Revert "parisc: Use ldcw instruction for SMP spinlock release barrier" + - Revert "parisc: Revert "Release spinlocks using ordered store"" + - parisc: Do not use an ordered store in pa_tlb_lock() + - parisc: Implement __smp_store_release and __smp_load_acquire barriers + - parisc: mask out enable and reserved bits from sba imask + - ARM: dts: exynos: Extend all Exynos5800 A15's OPPs with max voltage data + - ARM: 8992/1: Fix unwind_frame for clang-built kernels + - firmware: qcom_scm: Fix legacy convention SCM accessors + - irqdomain/treewide: Free firmware node after domain removal + - firmware_loader: EFI firmware loader must handle pre-allocated buffer + - xen/balloon: fix accounting in alloc_xenballooned_pages error path + - xen/balloon: make the balloon wait interruptible + - xen/gntdev: Fix dmabuf import with non-zero sgt offset + - drm/xen-front: Fix misused IS_ERR_OR_NULL checks + - s390/dasd: fix inability to use DASD with DIAG driver + - s390/numa: set node distance to LOCAL_DISTANCE + - s390/gmap: improve THP splitting + - io_uring: Fix NULL pointer dereference in loop_rw_iter() + - io_uring: hold 'ctx' reference around task_work queue + execute + - io_uring: add missing REQ_F_COMP_LOCKED for nested requests + - io_uring: enable lookup of links holding inflight files + - task_work: only grab task signal lock when needed + - Linux 5.8.2 + + * Regression on NFS: unable to handle page fault in mempool_alloc_slab + (LP: #1886277) // Groovy update: v5.8.2 upstream stable release + (LP: #1892215) + - SUNRPC: Fix ("SUNRPC: Add "@len" parameter to gss_unwrap()") + + * Groovy update: v5.8.2 upstream stable release (LP: #1892215) // + CVE-2019-19770 which shows this issue is not a core debugfs issue, but + - blktrace: fix debugfs use after free + + * Fix missing HDMI Audio on another HP Desktop (LP: #1891617) + - ALSA: hda/hdmi: Use force connectivity quirk on another HP desktop + + * alsa/sof: support 1 and 3 dmics (LP: #1891585) + - SAUCE: ASoC: SOF: intel: hda: support also devices with 1 and 3 dmics + + * fix ftrace pid filtering on linux 5.8 (LP: #1891528) + - ftrace: Fix ftrace_trace_task return value + + * Fix false-negative return value for rtnetlink.sh in kselftests/net + (LP: #1890136) + - selftests: rtnetlink: correct the final return value for the test + - selftests: rtnetlink: make kci_test_encap() return sub-test result + + * Disable Lenovo P620 Rear line-in volume control (LP: #1891281) + - ALSA: usb-audio: Disable Lenovo P620 Rear line-in volume control + + * tcp_fastopen_backup_key.sh from net in ubuntu_kernel_selftests failed on + Eoan LPAR (LP: #1869134) + - tcp: correct read of TFO keys on big endian systems + + * Groovy update: v5.8.1 upstream stable release (LP: #1891647) + - scsi: ufs: Fix and simplify setup_xfer_req variant operation + - USB: serial: qcserial: add EM7305 QDL product ID + - USB: iowarrior: fix up report size handling for some devices + - usb: xhci: define IDs for various ASMedia host controllers + - usb: xhci: Fix ASMedia ASM1142 DMA addressing + - Revert "ALSA: hda: call runtime_allow() for all hda controllers" + - ALSA: hda/realtek: Add alc269/alc662 pin-tables for Loongson-3 laptops + - ALSA: hda/ca0132 - Add new quirk ID for Recon3D. + - ALSA: hda/ca0132 - Fix ZxR Headphone gain control get value. + - ALSA: hda/ca0132 - Fix AE-5 microphone selection commands. + - ALSA: seq: oss: Serialize ioctls + - staging: android: ashmem: Fix lockdep warning for write operation + - staging: rtl8712: handle firmware load failure + - Staging: rtl8188eu: rtw_mlme: Fix uninitialized variable authmode + - Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt() + - Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt() + - Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt() + - omapfb: dss: Fix max fclk divider for omap36xx + - binder: Prevent context manager from incrementing ref 0 + - Smack: fix use-after-free in smk_write_relabel_self() + - scripts: add dummy report mode to add_namespace.cocci + - lkdtm/heap: Avoid edge and middle of slabs + - vgacon: Fix for missing check in scrollback handling + - mtd: properly check all write ioctls for permissions + - leds: wm831x-status: fix use-after-free on unbind + - leds: lm36274: fix use-after-free on unbind + - leds: da903x: fix use-after-free on unbind + - leds: lm3533: fix use-after-free on unbind + - leds: 88pm860x: fix use-after-free on unbind + - gpio: max77620: Fix missing release of interrupt + - xattr: break delegations in {set,remove}xattr + - Revert "powerpc/kasan: Fix shadow pages allocation failure" + - powerpc/kasan: Fix shadow pages allocation failure + - PCI: tegra: Revert tegra124 raw_violation_fixup + - ima: move APPRAISE_BOOTPARAM dependency on ARCH_POLICY to runtime + - random32: move the pseudo-random 32-bit definitions to prandom.h + - random: random.h should include archrandom.h, not the other way around + - arm64: kaslr: Use standard early random function + - Linux 5.8.1 + - [Config] Update annotations for changes in v5.8.1 + + * bcache by-uuid links disappear after mounting bcache0 (LP: #1861941) + - SAUCE: Revert "UBUNTU: SAUCE: (no-up) bcache: decouple emitting a cached_dev + CHANGE uevent" + + * Miscellaneous upstream changes + - Revert "ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs" + + -- Seth Forshee Tue, 25 Aug 2020 20:19:14 -0500 + +linux (5.8.0-16.17) groovy; urgency=medium + + * groovy/linux: 5.8.0-16.17 -proposed tracker (LP: #1891233) + + * Miscellaneous Ubuntu changes + - hio -- Update to use bio_{start,end}_io_acct with 5.8+ + - Enable hio driver + - [Packaging] Temporarily disable building doc package contents + + -- Seth Forshee Tue, 11 Aug 2020 15:32:58 -0500 + +linux (5.8.0-15.16) groovy; urgency=medium + + * groovy/linux: 5.8.0-15.16 -proposed tracker (LP: #1891177) + + * Miscellaneous Ubuntu changes + - SAUCE: Documentation: import error c_funcptr_sig_re, c_sig_re (sphinx- + doc/sphinx@0f49e30c) + + -- Seth Forshee Tue, 11 Aug 2020 09:29:58 -0500 + +linux (5.8.0-14.15) groovy; urgency=medium + + * groovy/linux: 5.8.0-14.15 -proposed tracker (LP: #1891085) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * msg_zerocopy.sh in net from ubuntu_kernel_selftests failed (LP: #1812620) + - selftests/net: relax cpu affinity requirement in msg_zerocopy test + + * Fix missing HDMI/DP Audio on an HP Desktop (LP: #1890441) + - ALSA: hda/hdmi: Add quirk to force connectivity + + * Add initial audio support for Lenovo ThinkStation P620 (LP: #1890317) + - ALSA: usb-audio: Add support for Lenovo ThinkStation P620 + + * Fix IOMMU error on AMD Radeon Pro W5700 (LP: #1890306) + - PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken + + * Enlarge hisi_sec2 capability (LP: #1890222) + - crypto: hisilicon - update SEC driver module parameter + + * Miscellaneous Ubuntu changes + - [Config] Re-enable signing for ppc64el + + -- Seth Forshee Mon, 10 Aug 2020 15:26:46 -0500 + +linux (5.8.0-13.14) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Remove i386 configs + - SAUCE: apply a workaround to re-enable CONFIG_CRYPTO_AEGIS128_SIMD + - SAUCE: export __get_vm_area_caller() and map_kernel_range() + - [Config] drop CONFIG_BINFMT_AOUT enforcement + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD" + + [ Upstream Kernel Changes ] + + * Rebase to v5.8 + + -- Andrea Righi Tue, 04 Aug 2020 09:51:50 +0200 + +linux (5.8.0-12.13) groovy; urgency=medium + + * groovy/linux: 5.8.0-12.13 -proposed tracker (LP: #1889481) + + * Fix right speaker of HP laptop (LP: #1889375) + - SAUCE: hda/realtek: Fix right speaker of HP laptop + + * blk_update_request error when mount nvme partition (LP: #1872383) + - SAUCE: nvme-pci: prevent SK hynix PC400 from using Write Zeroes command + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - Revert "UBUNTU: SAUCE: net: atlantic: Add support for firmware v4" + - net: atlantic: align return value of ver_match function with function name + - net: atlantic: add support for FW 4.x + + * Miscellaneous Ubuntu changes + - [Debian] Fix debian/tests for linux-5.8 -> linux rename + - SAUCE: selftests/powerpc: return skip code for spectre_v2 + + -- Seth Forshee Wed, 29 Jul 2020 16:58:47 -0500 + +linux (5.8.0-11.12) groovy; urgency=medium + + * groovy/linux: 5.8.0-11.12 -proposed tracker (LP: #1889336) + + * Miscellaneous Ubuntu changes + - [Packaging] dwarves is not required for linux-libc-dev or stage1 + + -- Seth Forshee Tue, 28 Jul 2020 22:33:24 -0500 + +linux (5.8.0-10.11) groovy; urgency=medium + + * groovy/linux: 5.8.0-10.11 -proposed tracker (LP: #1889316) + + * Miscellaneous Ubuntu changes + - [Packaging] Add more packages to Build-Depends-Indep for docs + - [Debian] Specify python executable in kmake + - [Debian] Don't treat warnings as errors during perf builds + - [Config] Disable signing for ppc64el + + -- Seth Forshee Tue, 28 Jul 2020 17:09:52 -0500 + +linux (5.8.0-9.10) groovy; urgency=medium + + * groovy/linux: 5.8.0-9.10 -proposed tracker (LP: #1889140) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: Fix s390x compile error on F32 utils/stat-display.c + - [Packaging] Add python3-venv to Build-Depends-Indep + + -- Seth Forshee Mon, 27 Jul 2020 21:01:46 -0500 + +linux (5.8.0-8.9) groovy; urgency=medium + + * groovy/linux: 5.8.0-8.9 -proposed tracker (LP: #1889104) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update variants + + * Introduce the new NVIDIA 450-server and the 450 UDA series (LP: #1887674) + - [Packaging] NVIDIA -- Add signed modules for 450 450-server + + * Introduce the new NVIDIA 418-server and 440-server series, and update the + current NVIDIA drivers (LP: #1881137) + - [packaging] add signed modules for the 418-server and the 440-server + flavours + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "radix-tree: Use local_lock for protection" + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + - [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD + - [Config] Enable nvidia dkms build + + * Miscellaneous upstream changes + - usbip: tools: fix build error for multiple definition + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc7 + + -- Seth Forshee Mon, 27 Jul 2020 11:18:12 -0500 + +linux (5.8.0-7.8) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Mon, 27 Jul 2020 09:22:19 +0200 + +linux-5.8 (5.8.0-7.8) groovy; urgency=medium + + * soc/amd/renoir: detect dmic from acpi table (LP: #1887734) + - ASoC: amd: add logic to check dmic hardware runtime + - ASoC: amd: add ACPI dependency check + - ASoC: amd: fixed kernel warnings + + * linux 4.15.0-109-generic network DoS regression vs -108 (LP: #1886668) + - SAUCE: Revert "netprio_cgroup: Fix unlimited memory leak of v2 cgroups" + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - SAUCE: net: atlantic: Add support for firmware v4 + + * MGA G200e doesn't work under GDM Wayland (LP: #1886140) + - drm/mgag200: Remove HW cursor + - drm/mgag200: Clean up mga_set_start_address() + - drm/mgag200: Clean up mga_crtc_do_set_base() + - drm/mgag200: Move mode-setting code into separate helper function + - drm/mgag200: Split MISC register update into PLL selection, SYNC and I/O + - drm/mgag200: Update mode registers after plane registers + - drm/mgag200: Set pitch in a separate helper function + - drm/mgag200: Set primary plane's format in separate helper function + - drm/mgag200: Move TAGFIFO reset into separate function + - drm/mgag200: Move hiprilvl setting into separate functions + - drm/mgag200: Move register initialization into separate function + - drm/mgag200: Remove out-commented suspend/resume helpers + - drm/mgag200: Use simple-display data structures + - drm/mgag200: Convert to simple KMS helper + - drm/mgag200: Replace VRAM helpers with SHMEM helpers + + * Miscellaneous Ubuntu changes + - SAUCE: s390/bpf: fix sign extension in branch_ku + - SAUCE: selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support + - SAUCE: selftests: fib_nexthop_multiprefix: fix cleanup() netns deletion + - [packaging] debhelper-compat (= 10) (and retire debian/compat) + - [Config] Update configs after rebase to 5.8-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc6 + + -- Andrea Righi Mon, 20 Jul 2020 09:55:47 +0200 + +linux-5.8 (5.8.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1 + (LP: #1887397) + - SAUCE: libtraceevent: Strip symbol version from nm output + + -- Seth Forshee Mon, 13 Jul 2020 14:07:53 -0500 + +linux-5.8 (5.8.0-5.6) groovy; urgency=medium + + * linux-libc-dev broken for crossbuilding, Multi-Arch:same violation + (LP: #1886188) + - [Packaging] Produce linux-libc-deb package for riscv64 + - [Debian] Disallow building linux-libc-dev from linux-riscv + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: test_bpf: remove expected fail for Ctx heavy + transformations test on s390" + - SAUCE: Revert "test_bpf: flag tests that cannot be jited on s390" + - [Config] Update configs (gcc update) + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc5 + + -- Andrea Righi Mon, 13 Jul 2020 08:42:14 +0200 + +linux-5.8 (5.8.0-4.5) groovy; urgency=medium + + * Add generic LED class support for audio LED (LP: #1885896) + - ALSA: hda: generic: Always call led-trigger for mic mute LED + - ALSA: hda: generic: Add a helper for mic-mute LED with LED classdev + - ALSA: hda/realtek: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/conexant: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/sigmatel: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda: generic: Drop unused snd_hda_gen_fixup_micmute_led() + - ALSA: hda: generic: Drop the old mic-mute LED hook + - ALSA: hda: generic: Add vmaster mute LED helper + - ALSA: hda/realtek: Use the new vmaster mute LED helper + - ALSA: hda/conexant: Use the new vmaster mute LED helper + - ALSA: hda/sigmatel: Use the new vmaster mute LED helper + - ALSA: hda/realtek: Unify LED helper code + - ALSA: hda: Let LED cdev handling suspend/resume + + * seccomp_bpf fails on powerpc (LP: #1885757) + - SAUCE: selftests/seccomp: fix ptrace tests on powerpc + + * CVE-2020-11935 + - SAUCE: aufs: do not call i_readcount_inc() + + * Miscellaneous Ubuntu changes + - SAUCE: Update aufs to 5.x-rcN 20200622 + - [Config] Update configs to set CONFIG_SND_HDA_GENERIC_LEDS value + - [Config] CONFIG_SECURITY_DMESG_RESTRICT=y + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc4 + + -- Seth Forshee Mon, 06 Jul 2020 08:14:28 -0500 + +linux-5.8 (5.8.0-3.4) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * lxc 1:4.0.2-0ubuntu1 ADT test failure with linux-5.8 5.8.0-1.2 + (LP: #1884635) + - SAUCE: overlayfs: fix faulty rebase + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: prevent ESTALE for LOOKUP_JUMP lookups + + * shiftfs: fix btrfs regression (LP: #1884767) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: fix dentry revalidation" + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=y + - SAUCE: regulator: rename da903x to da903x-regulator + - [Config] Add da903x to modules.ignore + - [Config] Update configs for rebase to 5.8-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc3 + + -- Seth Forshee Mon, 29 Jun 2020 08:48:25 -0500 + +linux-5.8 (5.8.0-2.3) groovy; urgency=medium + + * Support Audio Mute LED for two new HP laptops (LP: #1884251) + - ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems + + * CVE-2019-16089 + - SAUCE: nbd_genl_status: null check for nla_nest_start + + * tpm: fix TIS locality timeout problems (LP: #1881710) + - SAUCE: tpm: fix TIS locality timeout problems + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: security,perf: Allow further restriction of perf_event_open + - [Config] CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y + - [Config] Update configs and annotations for 5.8-rc2 + - [Config] Enable zfs + - [Config] Enable CONFIG_DEBUG_INFO_BTF + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc2 + + -- Seth Forshee Mon, 22 Jun 2020 15:05:54 -0500 + +linux-5.8 (5.8.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Debian] Support linux-x.y in udeb package names + - [Packaging] Use SRCPKGNAME for udeb packages + + -- Seth Forshee Wed, 17 Jun 2020 19:34:32 -0500 + +linux-5.8 (5.8.0-0.1) groovy; urgency=medium + + * Docker registry doesn't stay up and keeps restarting (LP: #1879690) + - Revert "UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay" + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Update source package name to linux-5.8 + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + - SAUCE: Import aufs driver + - [Config] Update configs for v5.8-rc1 + - [Config] Update annotations for v5.8-rc1 config changes + - SAUCE: shiftfs -- Fix build errors from missing fiemap definitions + - Disable hio driver + + * Miscellaneous upstream changes + - acpi: disallow loading configfs acpi tables when locked down + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc1 + + -- Seth Forshee Wed, 17 Jun 2020 11:54:24 -0500 + +linux-5.8 (5.8.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Sun, 14 Jun 2020 22:40:35 -0500 + +linux-5.7 (5.7.0-8.9) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enforce all config annotations (LP: #1879327) + - [Config]: do not enforce CONFIG_VERSION_SIGNATURE + - [Config]: prepare to enforce all + - [Config]: enforce all config options + + * Miscellaneous Ubuntu changes + - [Config]: annotations review after 5.7 rebase + - [Config] annotations: IXP4XX* depends on ARCH_IXP4XX + - [Config] THERMAL_GOV_POWER_ALLOCATOR=y + - [Config] annotations: SOC_CAMERA is marked as BROKEN + - [Config] annotations: NFSD_V4_2_INTER_SSC depends on NFS_FS=y + - [Config] annotations: CRYPTO_DEV_CHELSIO_TLS depends on legacy (and largely + unmantained) TLS_TOE + - [Config] annotations: SERIO_OLPC_APSP depends on ARCH_MMP + - [Config] RTW88_DEBUG=y + - [Config] annotations: ISDN_CAPI is a bool, and BT_CMTP depends on it + - [Config] annotations SND_SOC_SOF_DEVELOPER_SUPPORT depends on + SND_SOC_SOF_DEVELOPER_SUPPORT + - [Config] annotations: SND_SOC_SOF_BAYTRAIL_SUPPORT is mutually exclusive + with SND_SST_ATOM_HIFI2_PLATFORM_ACPI + - [Config] annotations: DEBUG_IMX_UART_PORT is defined only any + DEBUG_IMX*_UART is enabled + - [Config] annotations: HW_RANDOM_IMX_RNGC depends on SOC_IMX25 + - [Config] annotations: armhf: VIRTUALIZATION support was removed for arm32 + - [Config] annotations: arm64: remove DEBUG_ALIGN_RODATA + - [Config] annotations: ppc64: DATA_SHIFT defaults to PPC_PAGE_SHIFT + - [Config] arm64: enforce ARM64_USE_LSE_ATOMICS + - [Config] s390x: MOST is not set + - [Config] s390x: BCM84881_PHY is not set + - [Config] s390x: XILINX_LL_TEMAC is not set + - [Config] s390x: PHY_INTEL_EMMC requires GENERIC_PHY (off by default on + s390x) + - [Config] s390x: CHECK_STACK conflicts with VMAP_STACK + - [Config] annotations: s390x: NODES_SHIFT=1 + - [Config] annotations: import new symbols + - [Config] annotations: remove unmatched menu and options + + -- Paolo Pisati Fri, 12 Jun 2020 12:03:01 +0200 + +linux-5.7 (5.7.0-7.8) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update helper scripts + + * [UBUNTU 20.04] s390x/pci: fix linking between PF and VF for multifunction + devices (LP: #1879704) + - PCI/IOV: Introduce pci_iov_sysfs_link() function + - s390/pci: create links between PFs and VFs + + * Miscellaneous Ubuntu changes + - [Config] Disable UEFI signing for arm64 + - Rebase to v5.7.1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7.1 + + -- Paolo Pisati Mon, 08 Jun 2020 11:16:58 +0200 + +linux-5.7 (5.7.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * shiftfs: fix btrfs snapshot deletion (LP: #1879688) + - SAUCE: shiftfs: let userns root destroy subvolumes from other users + + * seccomp_benchmark times out on eoan (LP: #1881576) + - SAUCE: selftests/seccomp: use 90s as timeout + + * Realtek 8723DE [10ec:d723] subsystem [10ec:d738] disconnects unsolicitedly + when Bluetooth is paired: Reason: 23=IEEE8021X_FAILED (LP: #1878147) + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: Move driver IQK to set channel before + association for 11N chip" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: fix rate for a while after being + connected" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: No retry and report for auth and assoc" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: 8723d: Add coex support" + - rtw88: 8723d: Add coex support + - SAUCE: rtw88: coex: 8723d: set antanna control owner + - SAUCE: rtw88: coex: 8723d: handle BT inquiry cases + - SAUCE: rtw88: fix EAPOL 4-way failure by finish IQK earlier + + * ASoC/amd: add audio driver for amd renoir (LP: #1881046) + - ASoC: amd: add Renoir ACP3x IP register header + - ASoC: amd: add Renoir ACP PCI driver + - ASoC: amd: add acp init/de-init functions + - ASoC: amd: create acp3x pdm platform device + - ASoC: amd: add ACP3x PDM platform driver + - ASoC: amd: irq handler changes for ACP3x PDM dma driver + - ASoC: amd: add acp3x pdm driver dma ops + - ASoC: amd: add ACP PDM DMA driver dai ops + - ASoC: amd: add Renoir ACP PCI driver PM ops + - ASoC: amd: add ACP PDM DMA driver pm ops + - ASoC: amd: enable Renoir acp3x drivers build + - ASoC: amd: create platform devices for Renoir + - ASoC: amd: RN machine driver using dmic + - ASoC: amd: enable build for RN machine driver + - ASoC: amd: fix kernel warning + - ASoC: amd: refactoring dai_hw_params() callback + - ASoC: amd: return error when acp de-init fails + - [Config]: enable amd renoir ASoC audio + + * Slow send speed with Intel I219-V on Ubuntu 18.04.1 (LP: #1802691) + - e1000e: Disable TSO for buffer overrun workaround + + * Fix incorrect speed/duplex when I210 device is runtime suspended + (LP: #1880656) + - igb: Report speed and duplex as unknown when device is runtime suspended + + * Fix Pericom USB controller OHCI/EHCI PME# defect (LP: #1879321) + - serial: 8250_pci: Move Pericom IDs to pci_ids.h + - PCI: Avoid Pericom USB controller OHCI/EHCI PME# defect + + * [UBUNTU 20.04] s390x/pci: enumerate pci functions per physical adapter + (LP: #1874056) + - s390/pci: Expose new port attribute for PCIe functions + - s390/pci: adaptation of iommu to multifunction + - s390/pci: define kernel parameters for PCI multifunction + - s390/pci: define RID and RID available + - s390/pci: create zPCI bus + - s390/pci: adapt events for zbus + - s390/pci: Handling multifunctions + - s390/pci: Do not disable PF when VFs exist + - s390/pci: Documentation for zPCI + - s390/pci: removes wrong PCI multifunction assignment + + * add 16-bit width registers support for EEPROM at24 device (LP: #1876699) + - regmap-i2c: add 16-bit width registers support + + * Miscellaneous Ubuntu changes + - [Config] Enable virtualbox guest and shared-folder modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.7 + + -- Seth Forshee Mon, 01 Jun 2020 16:11:24 -0500 + +linux-5.7 (5.7.0-5.6) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [UBUNTU 20.04] PSI generates overhead on s390x (LP: #1876044) + - Ubuntu: [Config] CONFIG_PSI is enabled by default, but creates additional + overhead on s390x, hence should be disabled by default on s390x only. + + * Miscellaneous Ubuntu changes + - Rebase to v5.7-rc7 + - [Config] ppc64el: disable STRICT_KERNEL_RWX + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc7 + + -- Paolo Pisati Mon, 25 May 2020 11:44:09 +0200 + +linux-5.7 (5.7.0-4.5) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * update-initramfs complains of missing amdgpu firmware files (LP: #1873325) + - SAUCE: drm/amdgpu: Remove unreleased arcturus and navi12 firmware from + modinfo + + * Support DMIC micmute LED on HP platforms (LP: #1876859) + - ALSA: hda/realtek - Introduce polarity for micmute LED GPIO + - ALSA: hda/realtek - Enable micmute LED on and HP system + - ALSA: hda/realtek - Add LED class support for micmute LED + - ALSA: hda/realtek - Fix unused variable warning w/o + CONFIG_LEDS_TRIGGER_AUDIO + - ASoC: SOF: Update correct LED status at the first time usage of + update_mute_led() + + * Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW), + REV=0x354 [8086:a0f0] subsystem id [1a56:1651] wireless adapter not found + due to firmware crash (LP: #1874685) + - SAUCE: iwlwifi: pcie: handle QuZ configs with killer NICs as well + + * rtkit-daemon[*]: Failed to make ourselves RT: Operation not permitted after + upgrade to 20.04 (LP: #1875665) + - [Config] Turn off CONFIG_RT_GROUP_SCHED everywhere + + * Unable to handle kernel pointer dereference in virtual kernel address space + on Eoan (LP: #1876645) + - SAUCE: overlayfs: fix shitfs special-casing + + * Miscellaneous Ubuntu changes + - SAUCE: skip building selftest 'runqslower' if kernel not built + - Rebase to v5.7-rc6 + - [Config] updateconfigs after 5.7-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc6 + + -- Paolo Pisati Mon, 18 May 2020 11:27:25 +0200 + +linux-5.7 (5.7.0-3.4) groovy; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc5 + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * getitimer returns it_value=0 erroneously (LP: #1349028) + - [Config] CONTEXT_TRACKING_FORCE policy should be unset + + * lockdown on power (LP: #1855668) // Ubuntu Kernel Support for OpenPOWER NV + Secure & Trusted Boot (LP: #1866909) + - [Config] Enable configs for OpenPOWER NV Secure & Trusted Boot + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] annotations: remove SND_SOC_SOF_HDA_COMMON_HDMI_CODEC + - [Config] Remove CONFIG_SND_HDA_INTEL_DETECT_DMIC from annotations + - [Debian] final-checks -- Do not remove ~* from abi + - [Config] Enable 5-level page table support for x86 + - [Config] updateconfigs after 5.7-rc5 rebase + + -- Paolo Pisati Mon, 11 May 2020 10:25:42 +0200 + +linux-5.7 (5.7.0-2.3) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update helper scripts + + * ASUS T100HAN boots to a blank screen with a cursor [i965: Failed to submit + batchbuffer: Input/output error] (LP: #1860754) + - [Config] CONFIG_PMIC_OPREGION=y and CONFIG_GPIO_CRYSTAL_COVE=y for amd64 + + * ubuntu/focal64 fails to mount Vagrant shared folders (LP: #1873506) + - [Packaging] Move virtualbox modules to linux-modules + - [Packaging] Remove vbox and zfs modules from generic.inclusion-list + + * built-using constraints preventing uploads (LP: #1875601) + - temporarily drop Built-Using data + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] autoreconstruct -- manage executable debian files + - [packaging] handle downloads from the librarian better + + * Add signed modules for the 435 NVIDIA driver (LP: #1875888) + - [Packaging] NVIDIA -- add signed modules for the 435 NVIDIA driver + + * [Selftests] Apply various fixes and improvements (LP: #1870543) + - SAUCE: selftests/seccomp -- Disable timeout for seccomp tests + + * [17.04 FEAT] Integrate kernel message catalogue for s390x into Ubuntu + distribution (LP: #1628889) + - SAUCE: s390: kernel message catalog + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * [ICL] TC port in legacy/static mode can't be detected due TCCOLD + (LP: #1868936) + - drm/i915/display: Move out code to return the digital_port of the aux ch + - drm/i915/display: Add intel_legacy_aux_to_power_domain() + - drm/i915/display: Split hsw_power_well_enable() into two + - drm/i915/tc/icl: Implement TC cold sequences + - drm/i915/tc: Skip ref held check for TC legacy aux power wells + - drm/i915/tc/tgl: Implement TC cold sequences + - drm/i915/tc: Catch TC users accessing FIA registers without enable aux + - drm/i915/tc: Do not warn when aux power well of static TC ports timeout + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + + * 'Elan touchpad' not detected on 'Lenovo ThinkBook 15 IIL' (LP: #1861610) + - SAUCE: Input: elan_i2c - add more hardware ID for Lenovo laptop + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay + + * alsa/sof: kernel oops on the machine without Intel hdmi audio codec (a + regression in the asoc machine driver) (LP: #1874359) + - ASoC: intel/skl/hda - fix oops on systems without i915 audio codec + + * Add debian/rules targets to compile/run kernel selftests (LP: #1874286) + - [Packaging] add support to compile/run selftests + + * 5.4.0-24.28 does not seem to apply rtprio, whereas -21 does. (LP: #1873315) + - [Config] lowlatency: turn off RT_GROUP_SCHED + + * alsa/sof: external mic can't be deteced on Lenovo and HP laptops + (LP: #1872569) + - SAUCE: ASoC: intel/skl/hda - set autosuspend timeout for hda codecs + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: fix dentry revalidation + + * shiftfs: broken shiftfs nesting (LP: #1872094) + - SAUCE: shiftfs: record correct creator credentials + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + + * Fix authentication fail on Realtek WiFi 8723de (LP: #1871300) + - SAUCE: rtw88: No retry and report for auth and assoc + - SAUCE: rtw88: fix rate for a while after being connected + - SAUCE: rtw88: Move driver IQK to set channel before association for 11N chip + + * Miscellaneous Ubuntu changes + - SAUCE: rtw88: fix 'const' mismatch in power suequence hooks + - SAUCE: rtw88: fix 'const' mismatch in + __priority_queue_cfg_legacy()/__priority_queue_cfg() + - [Config] RTW88=m + - SAUCE: (lockdown) Revert carried-forward lockdown patches + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] Add back CONFIG_LOCK_DOWN_IN_SECURE_BOOT annotation for ppc64el + - [Config] CONFIG_RT_GROUP_SCHED=y + - [Packaging] Include modules.builtin.modinfo in linux-modules + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - Update dropped.txt for restored apparmor patches + - Remove lockdown patches from dropped.txt + - SAUCE: powerpc/ima: require IMA module signatures only if MODULE_SIG is not + enabled + - SAUCE: selftests/ftrace: Use printf instead of echo in kprobe syntax error + tests + - SAUCE: selftests/net -- disable l2tp.sh test + - SAUCE: selftests/net -- disable timeout + - SAUCE: tools: hv: Update shebang to use python3 instead of python + - Remove dropped.txt + - [Packaging] move linux-doc and linux-libc-dev stubs to debian.master + - [Debian] Support generating configs for riscv64 + - [Config] CONFIG_KMSG_IDS=y for s390x + - [Packaging] add libcap-dev dependency + - [Config] CONFIG_AD5770R=m + - [Config] CONFIG_AL3010=m + - [Config] CONFIG_APPLE_MFI_FASTCHARGE=m + - [Config] CONFIG_BAREUDP=m + - [Config] CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m + - [Config] CONFIG_CRYPTO_DEV_ZYNQMP_AES=m + - [Config] CONFIG_DRM_DISPLAY_CONNECTOR=m + - [Config] CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m + - [Config] CONFIG_DRM_PANEL_ELIDA_KD35T133=m + - [Config] CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m + - [Config] CONFIG_DRM_PANEL_NOVATEK_NT35510=m + - [Config] CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m + - [Config] CONFIG_DRM_PARADE_PS8640=m + - [Config] CONFIG_DRM_SIMPLE_BRIDGE=m + - [Config] CONFIG_DRM_TIDSS=m + - [Config] CONFIG_DRM_TI_TPD12S015=m + - [Config] CONFIG_DRM_TOSHIBA_TC358768=m + - [Config] CONFIG_EDAC_DMC520=m + - [Config] CONFIG_EXFAT_FS=m + - [Config] CONFIG_GP2AP002=m + - [Config] CONFIG_GPIO_MLXBF2=m + - [Config] CONFIG_HID_GLORIOUS=m + - [Config] CONFIG_HID_MCP2221=m + - [Config] CONFIG_HMC425=m + - [Config] CONFIG_ICP10100=m + - [Config] CONFIG_IMX8MM_THERMAL=m + - [Config] CONFIG_IMX_SC_THERMAL=m + - [Config] CONFIG_INTERCONNECT_QCOM_OSM_L3=m + - [Config] CONFIG_INTERCONNECT_QCOM_SC7180=m + - [Config] CONFIG_K3_RTI_WATCHDOG=m + - [Config] CONFIG_MDIO_IPQ8064=m + - [Config] CONFIG_MDIO_MVUSB=m + - [Config] CONFIG_MHI_BUS=m + - [Config] CONFIG_OCTEONTX2_VF=m + - [Config] CONFIG_PHY_CADENCE_TORRENT=m + - [Config] CONFIG_PHY_QCOM_USB_HS_28NM=m + - [Config] CONFIG_PHY_QCOM_USB_SS=m + - [Config] CONFIG_PINCTRL_DA9062=m + - [Config] CONFIG_PINCTRL_IPQ6018=m + - [Config] CONFIG_PTP_1588_CLOCK_IDT82P33=m + - [Config] CONFIG_PTP_1588_CLOCK_VMW=m + - [Config] CONFIG_QCOM_IPA=m + - [Config] CONFIG_REGULATOR_MP5416=m + - [Config] CONFIG_REGULATOR_MP886X=m + - [Config] CONFIG_RN5T618_ADC=m + - [Config] CONFIG_RTC_DRV_MT2712=m + - [Config] CONFIG_RTC_DRV_RC5T619=m + - [Config] CONFIG_SC_MSS_7180=m + - [Config] CONFIG_SENSORS_AXI_FAN_CONTROL=m + - [Config] CONFIG_SM_GCC_8250=m + - [Config] CONFIG_SND_BCM63XX_I2S_WHISTLER=m + - [Config] CONFIG_SND_MESON_AIU=m + - [Config] CONFIG_SND_MESON_G12A_TOACODEC=m + - [Config] CONFIG_SND_MESON_GX_SOUND_CARD=m + - [Config] CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m + - [Config] CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m + - [Config] CONFIG_SND_SOC_MESON_T9015=m + - [Config] CONFIG_SND_SOC_RT5682_SDW=m + - [Config] CONFIG_SND_SOC_TLV320ADCX140=m + - [Config] CONFIG_SPI_FSI=m + - [Config] CONFIG_SPI_MTK_NOR=m + - [Config] CONFIG_SPI_MUX=m + - [Config] CONFIG_SPRD_THERMAL=m + - [Config] CONFIG_SURFACE_3_POWER_OPREGION=m + - [Config] CONFIG_TINYDRM_ILI9486=m + - [Config] CONFIG_TI_K3_AM65_CPSW_NUSS=m + - [Config] CONFIG_TYPEC_MUX_INTEL_PMC=m + - [Config] CONFIG_UACCE=m + - [Config] CONFIG_UNIPHIER_XDMAC=m + - [Config] CONFIG_USB_MAX3420_UDC=m + - [Config] CONFIG_USB_RAW_GADGET=m + - [Config] CONFIG_VHOST_VDPA=m + - [Config] CONFIG_VIDEO_IMX219=m + - [Config] CONFIG_VIDEO_SUN8I_ROTATE=m + - [Config] CONFIG_VIRTIO_VDPA=m + - [Config] CONFIG_MOST_COMPONENTS=m + - [Config] CONFIG_MFD_IQS62X=m + - packaging: getabis: switch to ckt-ppa:bootstrap/linux-5.7 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask" + - Revert "UBUNTU: SAUCE: drm/i915/fbc: disable framebuffer compression on + IceLake" + - Revert "UBUNTU: SAUCE: platform/x86: dell-uart-backlight: move retry block" + + -- Paolo Pisati Mon, 04 May 2020 10:48:48 +0200 + +linux-5.7 (5.7.0-1.2) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: hio: pass make_request ptr directly to blk_alloc_queue() + - SAUCE: hio: locally define disk_map_sector_rcu() + - SAUCE: hio: Revert "block: unexport disk_map_sector_rcu" + - SAUCE: hio: include + - [Config] amd64: i386: HIO=m + - [Config] updateconfigs after 5.7-rc3 rebase + + -- Paolo Pisati Mon, 27 Apr 2020 11:31:38 +0200 + +linux-5.7 (5.7.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.7-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc1 + * Rebase to v5.7-rc2 + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.7 (5.7.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.6 (5.6.0-7.7) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Kernel Oops - general protection fault: 0000 [#1] SMP PTI after + disconnecting thunderbolt docking station (LP: #1864754) + - SAUCE: ptp: free ptp clock properly + + * swap storms kills interactive use (LP: #1861359) + - SAUCE: mm/page_alloc.c: disable memory reclaim watermark boosting by default + + * sysfs: incorrect network device permissions on network namespace change + (LP: #1865359) + - sysfs: add sysfs_file_change_owner() + - sysfs: add sysfs_link_change_owner() + - sysfs: add sysfs_group{s}_change_owner() + - sysfs: add sysfs_change_owner() + - device: add device_change_owner() + - drivers/base/power: add dpm_sysfs_change_owner() + - net-sysfs: add netdev_change_owner() + - net-sysfs: add queue_change_owner() + - net: fix sysfs permssions when device changes network namespace + - sysfs: fix static inline declaration of sysfs_groups_change_owner() + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6 + + -- Andrea Righi Tue, 31 Mar 2020 10:45:09 +0200 + +linux-5.6 (5.6.0-6.6) focal; urgency=medium + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * Make Dell WD19 dock more reliable after suspend (LP: #1868217) + - xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3 + - xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0 + - xhci: Finetune host initiated USB3 rootport link suspend and resume + + * update-version-dkms doesn't add a BugLink (LP: #1867790) + - [Packaging] Add BugLink to update-version-dkms commit + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add regulatory process strategy for different chipset + - SAUCE: rtw88: support dynamic user regulatory setting + - SAUCE: rtw88: Use secondary channel offset enumeration + - SAUCE: rtw88: 8822c: modify rf protection setting + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: Revert "rtw88: disable TX-AMSDU on 2.4G band" + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: rtw88: remove unused parameter vif in rtw_lps_pg_info_get() + - SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask + - SAUCE: rtw88: pci: 8822c should set clock delay to zero + - SAUCE: rtw88: move rtw_enter_ips() to the last when config + - SAUCE: rtw88: avoid holding mutex for cancel_delayed_work_sync() + - SAUCE: rtw88: add ciphers to suppress error message + - SAUCE: rtw88: 8822c: update power sequence to v16 + - SAUCE: rtw88: Fix incorrect beamformee role setting + - SAUCE: rtw88: don't hold all IRQs disabled for PS operations + - SAUCE: rtw88: extract alloc rsvd_page and h2c skb routines + - SAUCE: rtw88: associate reserved pages with each vif + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: 8723d: Add basic chip capabilities + - SAUCE: rtw88: 8723d: add beamform wrapper functions + - SAUCE: rtw88: 8723d: Add power sequence + - SAUCE: rtw88: 8723d: Add RF read/write ops + - SAUCE: rtw88: 8723d: Add mac/bb/rf/agc/power_limit tables + - SAUCE: rtw88: 8723d: Add cfg_ldo25 to control LDO25 + - SAUCE: rtw88: 8723d: Add new chip op efuse_grant() to control efuse access + - SAUCE: rtw88: 8723d: Add read_efuse to recognize efuse info from map + - SAUCE: rtw88: add legacy firmware download for 8723D devices + - SAUCE: rtw88: no need to send additional information to legacy firmware + - SAUCE: rtw88: 8723d: Add mac power-on/-off function + - SAUCE: rtw88: decompose while(1) loop of power sequence polling command + - SAUCE: rtw88: 8723d: 11N chips don't support H2C queue + - SAUCE: rtw88: 8723d: implement set_tx_power_index ops + - SAUCE: rtw88: 8723d: Organize chip TX/RX FIFO + - SAUCE: rtw88: 8723d: initialize mac/bb/rf basic functions + - SAUCE: rtw88: 8723d: Add DIG parameter + - SAUCE: rtw88: 8723d: Add query_rx_desc + - SAUCE: rtw88: 8723d: Add set_channel + - SAUCE: rtw88: handle C2H_CCX_TX_RPT to know if packet TX'ed successfully + - SAUCE: rtw88: 8723d: 11N chips don't support LDPC + - SAUCE: rtw88: set default port to firmware + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: add SAR of TX power limit + - SAUCE: rtw88: sar: Load static SAR table from ACPI WRDS method + - SAUCE: rtw88: sar: Load dynamic SAR table from ACPI methods + - SAUCE: rtw88: sar: apply dynamic SAR table to tx power limit + - SAUCE: rtw88: sar: add sar_work to poll if dynamic SAR table is changed + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: Add chip_ops::false_alarm_statistics + - SAUCE: rtw88: 8723d: Set IG register for CCK rate + - SAUCE: rtw88: 8723d: add interface configurations table + - SAUCE: rtw88: 8723d: Add LC calibration + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: fill zeros to words 0x06 and 0x07 of security cam entry + - SAUCE: rtw88: 8723d: Add 8723DE to Kconfig and Makefile + - [Config] CONFIG_RTW88_8723DE=y + + * [Ubuntu 20.04] Unset HIBERNATION and PM kernel config options for focal + (LP: #1867753) + - [Config] CONFIG_HIBERNATION=n and CONFIG_PM=n for s390x + + * [20.04 FEAT] Base KVM setup for secure guests - kernel part (LP: #1835531) + - s390/protvirt: introduce host side setup + - s390/protvirt: add ultravisor initialization + - s390/mm: provide memory management functions for protected KVM guests + - s390/mm: add (non)secure page access exceptions handlers + - s390/protvirt: Add sysfs firmware interface for Ultravisor information + - KVM: s390/interrupt: do not pin adapter interrupt pages + - KVM: s390: protvirt: Add UV debug trace + - KVM: s390: add new variants of UV CALL + - KVM: s390: protvirt: Add initial vm and cpu lifecycle handling + - KVM: s390: protvirt: Secure memory is not mergeable + - KVM: s390/mm: Make pages accessible before destroying the guest + - KVM: s390: protvirt: Handle SE notification interceptions + - KVM: s390: protvirt: Instruction emulation + - KVM: s390: protvirt: Implement interrupt injection + - KVM: s390: protvirt: Add SCLP interrupt handling + - KVM: s390: protvirt: Handle spec exception loops + - KVM: s390: protvirt: Add new gprs location handling + - KVM: S390: protvirt: Introduce instruction data area bounce buffer + - KVM: s390: protvirt: handle secure guest prefix pages + - KVM: s390/mm: handle guest unpin events + - KVM: s390: protvirt: Write sthyi data to instruction data area + - KVM: s390: protvirt: STSI handling + - KVM: s390: protvirt: disallow one_reg + - KVM: s390: protvirt: Do only reset registers that are accessible + - KVM: s390: protvirt: Only sync fmt4 registers + - KVM: s390: protvirt: Add program exception injection + - KVM: s390: protvirt: UV calls in support of diag308 0, 1 + - KVM: s390: protvirt: Report CPU state to Ultravisor + - KVM: s390: protvirt: Support cmd 5 operation state + - KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 + - KVM: s390: protvirt: do not inject interrupts after start + - KVM: s390: protvirt: Add UV cpu reset calls + - DOCUMENTATION: Protected virtual machine introduction and IPL + - KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED + - KVM: s390: protvirt: Add KVM api documentation + - mm/gup/writeback: add callbacks for inaccessible pages + + * All PS/2 ports on PS/2 Serial add-in bracket are not working after S3 + (LP: #1866734) + - SAUCE: Input: i8042 - fix the selftest retry logic + + * Sys oopsed with sysfs test in ubuntu_stress_smoke_test on X-hwe ARM64 + (LP: #1866772) + - ACPI: sysfs: copy ACPI data using io memory copying + + * Miscellaneous Ubuntu changes + - hio -- remove duplicated MODULE_DEVICE_TABLE declaration + - SAUCE: r8169: disable ASPM L1.1 + - [Config] update annotations from configs + - [Config] update configs after annotation file review + - SAUCE: Revert "tools/power turbostat: Fix 32-bit capabilities warning" + + * Miscellaneous upstream changes + - drm/i915: Fix eDP DPCD aux max backlight calculations + - drm/dp: Introduce EDID-based quirks + - drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED panel + - drm/i915: Force DPCD backlight mode for some Dell CML 2020 panels + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc7 + + -- Andrea Righi Wed, 25 Mar 2020 18:09:13 +0100 + +linux-5.6 (5.6.0-5.5) focal; urgency=medium + + * please help enable CONFIG_EROFS_FS_ZIP (LP: #1867099) + - [Config] CONFIG_EROFS_FS_ZIP=y + - [Config] CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1 + + * Miscellaneous Ubuntu changes + - Config: Fix SND_HDA_PREALLOC_SIZE annotations + - Config: Fix DATA_SHIFT annotations + - Config: remove ANDROID_VSOC from annotations + - Config: remove arm arch from annotations + - Config: Update SOC_R8A7796X annotations + - Config: Update CLK_R8A7796X annotations + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc6 + + -- Andrea Righi Wed, 18 Mar 2020 17:25:30 +0100 + +linux-5.6 (5.6.0-4.4) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * Add sysfs attribute to show remapped NVMe (LP: #1863621) + - SAUCE: ata: ahci: Add sysfs attribute to show remapped NVMe device count + + * [20.04 FEAT] Compression improvements in Linux kernel (LP: #1830208) + - [Config] Introducing s390x specific kernel config option CONFIG_ZLIB_DFLTCC + + * [UBUNTU 20.04] s390x/pci: increase CONFIG_PCI_NR_FUNCTIONS to 512 in kernel + config (LP: #1866056) + - [Config] Increase CONFIG_PCI_NR_FUNCTIONS from 64 to 512 starting with focal + on s390x + + * CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set (LP: #1865332) + - [Config] CONFIG_IP_MROUTE_MULTIPLE_TABLES=y + + * [UBUNTU 20.04] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x + starting with focal (LP: #1865452) + - [Config] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x starting + with focal + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: blk/core: Gracefully handle unset + make_request_fn" + - [Packaging] prevent duplicated entries in modules.ignore + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc5 + + -- Andrea Righi Mon, 09 Mar 2020 09:42:06 +0100 + +linux-5.6 (5.6.0-3.3) focal; urgency=medium + + * nsleep-lat / set-timer-lat / inconsistency-check / raw_skew from timer in + ubuntu_kernel_selftests timeout on 5.3 / 5.4 (LP: #1864626) + - selftests/timers: Turn off timeout setting + + * Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU for focal + (LP: #1864198) + - Ubuntu: [Config] Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU + + * alsa/hda/realtek: fix a mute led regression on Lenovo X1 Carbon + (LP: #1864576) + - SAUCE: ALSA: hda/realtek - Fix a regression for mute led on Lenovo Carbon X1 + + * r8152 init may take up to 40 seconds at initialization with Dell WD19/WD19DC + during hotplug (LP: #1864284) + - UBUNTU SAUCE: r8151: check disconnect status after long sleep + + * Another Dell AIO backlight issue (LP: #1863880) + - SAUCE: platform/x86: dell-uart-backlight: move retry block + + * Backport GetFB2 ioctl (LP: #1863874) + - SAUCE: drm: Add getfb2 ioctl + + * Focal Fossa (20.04) feature request - Enable CONFIG_X86_UV (LP: #1863810) + - [Config] CONFIG_X86_UV=y + + * Miscellaneous Ubuntu changes + - debian: remove snapdragon config, rules and flavour + - remove snapdragon abi files + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc4 + + * Miscellaneous upstream changes + - updateconfigs following snapdragon removal + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc4 + + -- Andrea Righi Wed, 04 Mar 2020 08:21:10 +0100 + +linux-5.6 (5.6.0-2.2) focal; urgency=medium + + * Sometimes can't adjust brightness on Dell AIO (LP: #1862885) + - SAUCE: platform/x86: dell-uart-backlight: increase retry times + + * Dell XPS 13 (7390) Display Flickering - 19.10 (LP: #1849947) + - SAUCE: drm/i915: Disable PSR by default on all platforms + + * Miscellaneous Ubuntu changes + - [debian] ignore missing wireguard module + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390/ipl: lockdown kernel when booted + secure" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + -- Andrea Righi Mon, 24 Feb 2020 18:57:22 +0100 + +linux-5.6 (5.6.0-1.1) focal; urgency=medium + + * Integrate Intel SGX driver into linux-azure (LP: #1844245) + - [Packaging] Add systemd service to load intel_sgx + + * QAT drivers for C3XXX and C62X not included as modules (LP: #1845959) + - [Config] CRYPTO_DEV_QAT_C3XXX=m, CRYPTO_DEV_QAT_C62X=m and + CRYPTO_DEV_QAT_DH895xCC=m + + * 5.4.0-11 crash on cryptsetup open (LP: #1860231) + - SAUCE: blk/core: Gracefully handle unset make_request_fn + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Use kernel specific layout + + * Miscellaneous Ubuntu changes + - update dkms package versions + - update dropped.txt after rebase to v5.6-rc1 + - [Config] updateconfigs after rebase to 5.6-rc1 + - hio -- proc_create() requires a "struct proc_ops" in 5.6 + - SAUCE: arm: fix build error in kvm tracepoint + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Disable the uselib system call" + - Revert "UBUNTU: [Config] Disable legacy PTY naming" + - Revert "UBUNTU: [Config] Enforce filtered access to iomem" + - Revert "UBUNTU: [Config] Enable notifier call chain validations" + - Revert "UBUNTU: [Config] Enable scatterlist validation" + - Revert "UBUNTU: [Config] Enable cred sanity checks" + - Revert "UBUNTU: [Config] Enable linked list manipulation checks" + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc1 + + -- Andrea Righi Thu, 13 Feb 2020 17:20:27 +0100 + +linux-5.6 (5.6.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Andrea Righi Mon, 10 Feb 2020 11:06:18 +0100 + +linux-5.5 (5.5.0-7.8) focal; urgency=medium + + * CONFIG_USELIB should be disabled (LP: #1855341) + - [Config] Disable the uselib system call + + * CONFIG_LEGACY_PTYS should be disabled (LP: #1855339) + - [Config] Disable legacy PTY naming + + * CONFIG_IO_STRICT_DEVMEM should be enabled (LP: #1855338) + - [Config] Enforce filtered access to iomem + + * CONFIG_DEBUG_NOTIFIERS should be enabled (LP: #1855337) + - [Config] Enable notifier call chain validations + + * CONFIG_DEBUG_SG should be enabled (LP: #1855336) + - [Config] Enable scatterlist validation + + * CONFIG_DEBUG_CREDENTIALS should be enabled (LP: #1855335) + - [Config] Enable cred sanity checks + + * CONFIG_DEBUG_LIST should be enabled (LP: #1855334) + - [Config] Enable linked list manipulation checks + + * shiftfs: prevent lower dentries from going negative during unlink + (LP: #1860041) + - SAUCE: shiftfs: prevent lower dentries from going negative during unlink + + * [SRU][B/OEM-B/OEM-OSP1/D/E/Unstable] UBUNTU: SAUCE: Use native backlight on + Lenovo E41-25/45 (LP: #1859561) + - SAUCE: ACPI: video: Use native backlight on Lenovo E41-25/45 + + * USB key cannot be detected by hotplug on Sunix USB Type-A 3.1 Gen 2 card + [1b21:2142] (LP: #1858988) + - SAUCE: PCI: Avoid ASMedia XHCI USB PME# from D0 defect + + * Dell AIO can't adjust brightness (LP: #1858761) + - SAUCE: platform/x86: dell-uart-backlight: add retry for get scalar status + + * Miscellaneous Ubuntu changes + - [Config] Fix typo in annotations file + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5 + + -- Andrea Righi Mon, 27 Jan 2020 11:39:38 +0100 + +linux-5.5 (5.5.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] Update ubuntu-regression-suite dependency to python2 + - [Packaging] Fix ubuntu-regression-suite python dependency for hwe kernel + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc7 + + -- Andrea Righi Mon, 20 Jan 2020 10:16:01 +0100 + +linux-5.5 (5.5.0-5.6) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc6 + + -- Andrea Righi Mon, 13 Jan 2020 15:50:12 +0100 + +linux-5.5 (5.5.0-4.5) focal; urgency=medium + + * linux build and autopkg tests need to use python2 instead of python + (LP: #1858487) + - [Packaging] Remove python-dev build dependency + + -- Andrea Righi Wed, 08 Jan 2020 16:00:26 +0100 + +linux-5.5 (5.5.0-3.4) focal; urgency=medium + + * [SRU][B/OEM-B/OEM-OSP1/D/E/F] Add LG I2C touchscreen multitouch support + (LP: #1857541) + - SAUCE: HID: multitouch: Add LG MELF0410 I2C touchscreen support + + * Make vfio-pci built-in or xhci_hcd optional (LP: #1770845) + - [Config]: built-in VFIO_PCI for amd64 + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Link to wiki with guidance on multi-zone RAID0 layout + migration + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package to linux-5.5 + - [Packaging] Don't use SRCPKGNAME for linux-libc-dev + - [Packaging] Remove linux-source-3 Provides: from linux-source + - [Packaging] Fix linux-doc in linux-image Suggests: + - [Debian] Read variants list into a variable + - [Packaging] Generate linux-libc-dev package only for primary variant + - [Packaging] Generate linux-doc for only the primary variant + - [Debian] Update linux source package name in debian/tests/* + - update dkms package versions + - [Config] updateconfigs after rebase to 5.5-rc3 + - [Config] disable PCI_MESON + - [Config] Add pinctrl-equilibrium to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc5 + + -- Andrea Righi Wed, 08 Jan 2020 11:28:43 +0100 + +linux-5.5 (5.5.0-2.3) focal; urgency=medium + + * Empty entry. + + -- Seth Forshee Tue, 17 Dec 2019 22:33:59 -0600 + +linux (5.5.0-2.3) focal; urgency=medium + + * Support DPCD aux brightness control (LP: #1856134) + - SAUCE: drm/i915: Fix eDP DPCD aux max backlight calculations + - SAUCE: drm/i915: Assume 100% brightness when not in DPCD control mode + - SAUCE: drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight() + - SAUCE: drm/i915: Auto detect DPCD backlight support by default + - SAUCE: drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED + panel + - USUNTU: SAUCE: drm/i915: Force DPCD backlight mode on Dell Precision 4K sku + + * change kconfig of the soundwire bus driver from y to m (LP: #1855685) + - [Config]: SOUNDWIRE=m + + * Fix unusable USB hub on Dell TB16 after S3 (LP: #1855312) + - SAUCE: USB: core: Make port power cycle a seperate helper function + - SAUCE: USB: core: Attempt power cycle port when it's in eSS.Disabled state + + * Miscellaneous Ubuntu changes + - [Debian] add python depends to ubuntu-regression-suite + - SAUCE: selftests: net: tls: remove recv_rcvbuf test + - update dkms package versions + + * Miscellaneous upstream changes + - [Config] updateconfigs after rebase to 5.5-rc2 + + -- Andrea Righi Tue, 17 Dec 2019 16:02:43 +0100 + +linux (5.5.0-1.2) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Config] disable zfs dkms build + - update dropped.txt after rebase to v5.5-rc1 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - update dkms package versions + + -- Andrea Righi Thu, 12 Dec 2019 16:54:41 +0100 + +linux (5.5.0-0.1) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.5-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc1 + + -- Andrea Righi Mon, 09 Dec 2019 19:03:35 +0100 + +linux (5.5.0-0.0) focal; urgency=medium + + * Dummy entry. + + -- Andrea Righi Mon, 09 Dec 2019 15:14:37 +0100 + +linux (5.4.0-8.11) focal; urgency=medium + + * focal/linux: 5.4.0-8.9 -proposed tracker (LP: #1855448) + + * update ENA driver for DIMLIB dynamic interrupt moderation (LP: #1853180) + - SAUCE: net: ena: fix issues in setting interrupt moderation params in + ethtool + - SAUCE: net: ena: fix too long default tx interrupt moderation interval + + * Kernel build log filled with "/bin/bash: line 5: warning: command + substitution: ignored null byte in input" (LP: #1853843) + - [Debian] Fix warnings when checking for modules signatures + + * hwe-edge kernel 5.3.0-23.25 kernel does not boot on Precision 5720 AIO + (LP: #1852581) + - [Packaging] Fix module signing with older modinfo + + * Fix MST support on Ice Lake (LP: #1854432) + - drm/i915: fix port checks for MST support on gen >= 11 + + * headphone has noise as not mute on dell machines with alc236/256 + (LP: #1854401) + - SAUCE: ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236 + + * [CML-S62] Need enable intel_pmc_core driver patch for Comet lake- S 6+2 + (LP: #1847450) + - SAUCE: platform/x86: intel_pmc_core: Add Comet Lake (CML) platform support + to intel_pmc_core driver + + * CVE-2019-14901 + - SAUCE: mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame() + + * CVE-2019-14896 // CVE-2019-14897 + - SAUCE: libertas: Fix two buffer overflows at parsing bss descriptor + + * CVE-2019-14895 + - SAUCE: mwifiex: fix possible heap overflow in mwifiex_process_country_ie() + + * [CML-S62] Need enable intel_rapl patch support for Comet lake- S 6+2 + (LP: #1847454) + - powercap/intel_rapl: add support for CometLake Mobile + - powercap/intel_rapl: add support for Cometlake desktop + + * External microphone can't work on some dell machines with the codec alc256 + or alc236 (LP: #1853791) + - SAUCE: ALSA: hda/realtek - Move some alc256 pintbls to fallback table + - SAUCE: ALSA: hda/realtek - Move some alc236 pintbls to fallback table + + * remount of multilower moved pivoted-root overlayfs root, results in I/O + errors on some modified files (LP: #1824407) + - SAUCE: ovl: fix lookup failure on multi lower squashfs + + * [CML-S62] Need enable turbostat patch support for Comet lake- S 6+2 + (LP: #1847451) + - SAUCE: tools/power turbostat: Add Cometlake support + + * CONFIG_ARCH_ROCKCHIP is not set in ubuntu 18.04 aarch64,arm64 (LP: #1825222) + - [Config] Enable ROCKCHIP support for arm64 + + * [broadwell-rt286, playback] Since Linux 5.2rc2 audio playback no longer + works on Dell Venue 11 Pro 7140 (LP: #1846539) + - SAUCE: ASoC: SOF: Intel: Broadwell: clarify mutual exclusion with legacy + driver + + * i40e: general protection fault in i40e_config_vf_promiscuous_mode + (LP: #1852663) + - SAUCE: i40e Fix GPF when deleting VMs + + * libbpf check_abi fails on ppc64el (LP: #1854974) + - libbpf: Fix readelf output parsing on powerpc with recent binutils + + * CVE-2019-19050 + - crypto: user - fix memory leak in crypto_reportstat + + * Make hotplugging docking station to Thunderbolt port more reliable + (LP: #1853991) + - PCI/PM: Add pcie_wait_for_link_delay() + - PCI/PM: Add missing link delays required by the PCIe spec + + * i915: Display flickers (monitor loses signal briefly) during "flickerfree" + boot, while showing the BIOS logo on a black background (LP: #1836858) + - [Config] FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y + + * [CML] New device id's for CMP-H (LP: #1846335) + - i2c: i801: Add support for Intel Comet Lake PCH-H + - mtd: spi-nor: intel-spi: Add support for Intel Comet Lake-H SPI serial flash + - mfd: intel-lpss: Add Intel Comet Lake PCH-H PCI IDs + + * Focal update: v5.4.2 upstream stable release (LP: #1855326) + - io_uring: async workers should inherit the user creds + - net: separate out the msghdr copy from ___sys_{send,recv}msg() + - net: disallow ancillary data for __sys_{send,recv}msg_file() + - crypto: inside-secure - Fix stability issue with Macchiatobin + - driver core: platform: use the correct callback type for bus_find_device + - usb: dwc2: use a longer core rest timeout in dwc2_core_reset() + - staging: wilc1000: fix illegal memory access in wilc_parse_join_bss_param() + - staging: rtl8192e: fix potential use after free + - staging: rtl8723bs: Drop ACPI device ids + - staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids + - USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P + - mei: bus: prefix device names on bus with the bus name + - mei: me: add comet point V device id + - thunderbolt: Power cycle the router if NVM authentication fails + - x86/fpu: Don't cache access to fpu_fpregs_owner_ctx + - gve: Fix the queue page list allocated pages count + - macvlan: schedule bc_work even if error + - mdio_bus: don't use managed reset-controller + - net: dsa: sja1105: fix sja1105_parse_rgmii_delays() + - net: macb: add missed tasklet_kill + - net: psample: fix skb_over_panic + - net: sched: fix `tc -s class show` no bstats on class with nolock subqueues + - openvswitch: fix flow command message size + - sctp: Fix memory leak in sctp_sf_do_5_2_4_dupcook + - slip: Fix use-after-free Read in slip_open + - sctp: cache netns in sctp_ep_common + - openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() + - openvswitch: remove another BUG_ON() + - net/tls: take into account that bpf_exec_tx_verdict() may free the record + - net/tls: free the record on encryption error + - net: skmsg: fix TLS 1.3 crash with full sk_msg + - selftests/tls: add a test for fragmented messages + - net/tls: remove the dead inplace_crypto code + - net/tls: use sg_next() to walk sg entries + - selftests: bpf: test_sockmap: handle file creation failures gracefully + - selftests: bpf: correct perror strings + - tipc: fix link name length check + - selftests: pmtu: use -oneline for ip route list cache + - r8169: fix jumbo configuration for RTL8168evl + - r8169: fix resume on cable plug-in + - ext4: add more paranoia checking in ext4_expand_extra_isize handling + - Revert "jffs2: Fix possible null-pointer dereferences in + jffs2_add_frag_to_fragtree()" + - crypto: talitos - Fix build error by selecting LIB_DES + - HID: core: check whether Usage Page item is after Usage ID items + - platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer + - platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size + - Linux 5.4.2 + + * no HDMI video output since GDM greeter after linux-oem-osp1 version + 5.0.0-1026 (LP: #1852386) + - drm/i915: Add new CNL PCH ID seen on a CML platform + - SAUCE: drm/i915: Fix detection for a CMP-V PCH + + * Please add patch fixing RK818 ID detection (LP: #1853192) + - SAUCE: mfd: rk808: Fix RK818 ID template + + * Raydium Touchscreen on ThinkPad L390 does not work (LP: #1849721) + - HID: i2c-hid: fix no irq after reset on raydium 3118 + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + - lib: devres: add a helper function for ioremap_uc + - mfd: intel-lpss: Use devm_ioremap_uc for MMIO + + * Lenovo dock MAC Address pass through doesn't work in Ubuntu (LP: #1827961) + - r8152: Add macpassthru support for ThinkPad Thunderbolt 3 Dock Gen 2 + + * Disable unreliable HPET on CFL-H system (LP: #1852216) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake H platforms + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] Enable virtualbox dkms build + - [Config] update annotations to match current configs + - SAUCE: Add exfat module to signature inclusion list + + * Miscellaneous upstream changes + - Bluetooth: Fix invalid-free in bcsp_close() + - ath9k_hw: fix uninitialized variable data + - ath10k: Fix a NULL-ptr-deref bug in ath10k_usb_alloc_urb_from_pipe + - ath10k: Fix HOST capability QMI incompatibility + - ath10k: restore QCA9880-AR1A (v1) detection + - Revert "Bluetooth: hci_ll: set operational frequency earlier" + - Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues" + - md/raid10: prevent access of uninitialized resync_pages offset + - x86/insn: Fix awk regexp warnings + - x86/speculation: Fix incorrect MDS/TAA mitigation status + - x86/speculation: Fix redundant MDS mitigation message + - nbd: prevent memory leak + - x86/stackframe/32: Repair 32-bit Xen PV + - x86/xen/32: Make xen_iret_crit_fixup() independent of frame layout + - x86/xen/32: Simplify ring check in xen_iret_crit_fixup() + - x86/doublefault/32: Fix stack canaries in the double fault handler + - x86/pti/32: Size initial_page_table correctly + - x86/cpu_entry_area: Add guard page for entry stack on 32bit + - x86/entry/32: Fix IRET exception + - x86/entry/32: Use %ss segment where required + - x86/entry/32: Move FIXUP_FRAME after pushing %fs in SAVE_ALL + - x86/entry/32: Unwind the ESPFIX stack earlier on exception entry + - x86/entry/32: Fix NMI vs ESPFIX + - selftests/x86/mov_ss_trap: Fix the SYSENTER test + - selftests/x86/sigreturn/32: Invalidate DS and ES when abusing the kernel + - x86/pti/32: Calculate the various PTI cpu_entry_area sizes correctly, make + the CPU_ENTRY_AREA_PAGES assert precise + - x86/entry/32: Fix FIXUP_ESPFIX_STACK with user CR3 + - futex: Prevent robust futex exit race + - ALSA: usb-audio: Fix NULL dereference at parsing BADD + - ALSA: usb-audio: Fix Scarlett 6i6 Gen 2 port data + - media: vivid: Set vid_cap_streaming and vid_out_streaming to true + - media: vivid: Fix wrong locking that causes race conditions on streaming + stop + - media: usbvision: Fix invalid accesses after device disconnect + - media: usbvision: Fix races among open, close, and disconnect + - cpufreq: Add NULL checks to show() and store() methods of cpufreq + - futex: Move futex exit handling into futex code + - futex: Replace PF_EXITPIDONE with a state + - exit/exec: Seperate mm_release() + - futex: Split futex_mm_release() for exit/exec + - futex: Set task::futex_state to DEAD right after handling futex exit + - futex: Mark the begin of futex exit explicitly + - futex: Sanitize exit state handling + - futex: Provide state handling for exec() as well + - futex: Add mutex around futex exit + - futex: Provide distinct return value when owner is exiting + - futex: Prevent exit livelock + - media: uvcvideo: Fix error path in control parsing failure + - media: b2c2-flexcop-usb: add sanity checking + - media: cxusb: detect cxusb_ctrl_msg error in query + - media: imon: invalid dereference in imon_touch_event + - media: mceusb: fix out of bounds read in MCE receiver buffer + - ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs + - USBIP: add config dependency for SGL_ALLOC + - usbip: tools: fix fd leakage in the function of read_attr_usbip_status + - usbip: Fix uninitialized symbol 'nents' in stub_recv_cmd_submit() + - usb-serial: cp201x: support Mark-10 digital force gauge + - USB: chaoskey: fix error case of a timeout + - appledisplay: fix error handling in the scheduled work + - USB: serial: mos7840: add USB ID to support Moxa UPort 2210 + - USB: serial: mos7720: fix remote wakeup + - USB: serial: mos7840: fix remote wakeup + - USB: serial: option: add support for DW5821e with eSIM support + - USB: serial: option: add support for Foxconn T77W968 LTE modules + - staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error + - powerpc/book3s64: Fix link stack flush on context switch + - KVM: PPC: Book3S HV: Flush link stack on guest exit to host kernel + - Linux 5.4.1 + + -- Seth Forshee Fri, 06 Dec 2019 15:53:53 -0600 + +linux (5.4.0-7.8) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: Comment out BPF_CORE_READ's which cause clang to + segfault + - Update nvidia-430 to nvidia-440 + - [Config] Enable nvidia dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4 + + -- Andrea Righi Mon, 25 Nov 2019 15:02:30 +0100 + +linux (5.4.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc8 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Andrea Righi Mon, 18 Nov 2019 12:08:01 +0100 + +linux (5.4.0-5.6) focal; urgency=medium + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15793 + - SAUCE: shiftfs: Correct id translation for lower fs operations + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15792 + - SAUCE: shiftfs: prevent type confusion + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15791 + - SAUCE: shiftfs: Fix refcount underflow in btrfs ioctl handling + + * Some EFI systems fail to boot in efi_init() when booted via maas + (LP: #1851810) + - SAUCE: efi: efi_get_memory_map -- increase map headroom + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: rework define for SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: avoid overflow in implicit constant conversion + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] dkms -- try launchpad librarian for pool downloads + - [Packaging] dkms -- dkms-build quieten wget verbiage + + * tsc marked unstable after entered PC10 on Intel CoffeeLake (LP: #1840239) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake platforms + - SAUCE: x86/intel: Disable HPET on Intel Ice Lake platforms + + * shiftfs: prevent exceeding project quotas (LP: #1849483) + - SAUCE: shiftfs: drop CAP_SYS_RESOURCE from effective capabilities + + * shiftfs: fix fallocate() (LP: #1849482) + - SAUCE: shiftfs: setup correct s_maxbytes limit + + * The alsa hda driver is not loaded due to the missing of PCIID for Comet + Lake-S [8086:a3f0] (LP: #1852070) + - SAUCE: ALSA: hda: Add Cometlake-S PCI ID + + * Can't adjust brightness on DELL UHD dGPU AIO (LP: #1813877) + - SAUCE: platform/x86: dell-uart-backlight: add missing status command + - SAUCE: platform/x86: dell-uart-backlight: load driver by scalar status + - SAUCE: platform/x86: dell-uart-backlight: add force parameter + - SAUCE: platform/x86: dell-uart-backlight: add quirk for old platforms + + * s_iflags overlap prevents unprivileged overlayfs mounts (LP: #1851677) + - SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags + + * ubuntu-aufs-modified mmap_region() breaks refcounting in overlayfs/shiftfs + error path (LP: #1850994) // CVE-2019-15794 + - SAUCE: shiftfs: Restore vm_file value when lower fs mmap fails + - SAUCE: ovl: Restore vm_file value when lower fs mmap fails + + * Miscellaneous Ubuntu changes + - [Debian] Convert update-aufs.sh to use aufs5 + - SAUCE: import aufs driver + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Seth Forshee Wed, 13 Nov 2019 11:56:35 -0800 + +linux (5.4.0-4.5) focal; urgency=medium + + * High power consumption using 5.0.0-25-generic (LP: #1840835) + - PCI: Add a helper to check Power Resource Requirements _PR3 existence + - ALSA: hda: Allow HDA to be runtime suspended when dGPU is not bound to a + driver + - PCI: Fix missing inline for pci_pr3_present() + + * Fix signing of staging modules in eoan (LP: #1850234) + - [Packaging] Leave unsigned modules unsigned after adding .gnu_debuglink + + * [20.04 FEAT] Set Architecture Level (ALS) to z13 (LP: #1837525) + - [Config] s390x bump march to z13, with tune to z15 + + * Miscellaneous Ubuntu changes + - [Debian]: do not skip tests for linux-hwe-edge + - update dkms package versions + - [Config] re-enable zfs + - [Config] rename module virtio_fs to virtiofs + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc6 + + -- Andrea Righi Mon, 04 Nov 2019 15:12:02 +0100 + +linux (5.4.0-3.4) focal; urgency=medium + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test + + * cloudimg: no iavf/i40evf module so no network available with SR-IOV enabled + cloud (LP: #1848481) + - [Packaging] include iavf/i40evf in generic + + * CVE-2019-17666 + - SAUCE: rtlwifi: Fix potential overflow on P2P code + + * Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x from yes + to no (LP: #1848492) + - [Config] Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x + from yes to no + + * Add Intel Comet Lake ethernet support (LP: #1848555) + - SAUCE: e1000e: Add support for Comet Lake + + * seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE (LP: #1847744) + - SAUCE: seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: test SECCOMP_USER_NOTIF_FLAG_CONTINUE + + * drm/i915: Fix the issue of "azx_get_response timeout" for hdmi audio on ICL + platforms (LP: #1847192) + - SAUCE: drm/i915: Fix audio power up sequence for gen10+ display + - SAUCE: drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms + + * PM / hibernate: fix potential memory corruption (LP: #1847118) + - SAUCE: PM / hibernate: memory_bm_find_bit -- tighten node optimisation + + * [regression] NoNewPrivileges incompatible with Apparmor (LP: #1844186) + - SAUCE: apparmor: fix nnp subset test for unconfined + + * overlayfs: allow with shiftfs as underlay (LP: #1846272) + - SAUCE: overlayfs: allow with shiftfs as underlay + + * eoan: alsa/sof: Enable SOF_HDA link and codec (LP: #1848490) + - [Config] Fix SOF Kconfig options + + * linux won't build when new virtualbox version is present on the archive + (LP: #1848788) + - [Packaging]: download virtualbox from sources + + * Miscellaneous Ubuntu changes + - [Config] update annotations from configs + - [Config] updateconfigs after rebase to 5.4-rc5 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc5 + + -- Seth Forshee Tue, 29 Oct 2019 12:01:27 -0500 + +linux (5.4.0-2.3) eoan; urgency=medium + + * Add installer support for iwlmvm adapters (LP: #1848236) + - d-i: Add iwlmvm to nic-modules + + * shiftfs: rework how shiftfs opens files (LP: #1846265) + - SAUCE: shiftfs: rework how shiftfs opens files + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc4 + + -- Andrea Righi Mon, 21 Oct 2019 17:31:26 +0200 + +linux (5.4.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc3 + - [Config] add flexfb, fbtft_device and rio500 to modules.ignore + - [Config] amd64: ignore fbtft and all dependent modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc3 + + -- Andrea Righi Mon, 14 Oct 2019 19:48:52 +0200 + +linux (5.4.0-0.1) eoan; urgency=medium + + * Enable the Dragonboards out of Eoan/master arm64 kernel (LP: #1846704) + - [Packaging] arm64: snapdragon: introduce a snapdragon flavour + - [Packaging] arm64: snapdragon: switch kernel format to Image + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8994=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8996=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8998=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_RPMH=y + - [Config] arm64: snapdragon: CONFIG_QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA=y + - [Config] arm64: snapdragon: CONFIG_COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_RPMH=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8916=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8994=y + - [Config] arm64: snapdragon: CONFIG_MSM_MMCC_8996=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8998=y + - [Config] arm64: snapdragon: CONFIG_HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_GLINK_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_GENI_SE=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMEM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMP2P=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMSM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_QFPROM=y + - [Config] arm64: snapdragon: CONFIG_SERIAL_QCOM_GENI=y + - [Config] arm64: snapdragon: CONFIG_QCOM_TSENS=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: CONFIG_MFD_QCOM_RPM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFS_HISI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_PLTFM=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_MSM=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_QMP=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_UFS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HSIC=y + - [Config] arm64: snapdragon: CONFIG_USB_CHIPIDEA_OF=y + - [Config] arm64: snapdragon: CONFIG_USB_EHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_EXTCON_USB_GPIO=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: CONFIG_LEDS_GPIO=y + - [Config] arm64: snapdragon: CONFIG_USB_HSIC_USB3503=y + - [Config] arm64: snapdragon: CONFIG_USB_NET_DRIVERS=y + - [Config] arm64: snapdragon: CONFIG_USB_OTG=y + - [Config] arm64: snapdragon: CONFIG_USB_XHCI_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_OHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_MUSB_HDRC=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_PCI=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_OF_SIMPLE=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_QCOM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_PWM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_HEARTBEAT=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + - [Config] arm64: snapdragon: CONFIG_QCOM_A53PLL=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_APCS_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_NLS_ISO8859_1=y + - [Config] arm64: snapdragon: CONFIG_USB_USBNET=y + - [Config] arm64: snapdragon: CONFIG_CRYPTO_DEV_QCOM_RNG=y + - [Config] arm64: snapdragon: CONFIG_POWER_RESET_QCOM_PON=y + - [Config] arm64: snapdragon: CONFIG_INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: CONFIG_KEYBOARD_GPIO=y + - [Config] arm64: snapdragon: CONFIG_RTC_DRV_PM8XXX=y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.4-rc2 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] enable aufs + - update dkms package versions + - [Config] disable zfs + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Debian] Generate stub reconstruct for -rc kernels + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Forbid unprivileged mounting + when device is opened for writing" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add module parameter to enable user + namespace mounts" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add support for unprivileged mounts + from user namespaces" + - Revert "UBUNTU: SAUCE: (namespace) mtd: Check permissions towards mtd block + device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Check permissions towards + block device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Support checking inode + permissions in lookup_bdev()" + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc2 + + -- Seth Forshee Fri, 11 Oct 2019 16:42:41 -0500 + +linux (5.4.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 08 Oct 2019 09:59:00 -0500 + +linux (5.3.0-17.18) eoan; urgency=medium + + * eoan/linux: 5.3.0-17.18 -proposed tracker (LP: #1846641) + + * CVE-2019-17056 + - nfc: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17055 + - mISDN: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17054 + - appletalk: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17053 + - ieee802154: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17052 + - ax25: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-15098 + - ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe() + + * xHCI on AMD Stoney Ridge cannot detect USB 2.0 or 1.1 devices. + (LP: #1846470) + - x86/PCI: Avoid AMD FCH XHCI USB PME# from D0 defect + + * Re-enable linux-libc-dev build on i386 (LP: #1846508) + - [Packaging] Build only linux-libc-dev for i386 + - [Debian] final-checks -- ignore archtictures with no binaries + + * arm64: loop on boot after installing linux-generic-hwe-18.04-edge/bionic- + proposed (LP: #1845820) + - [Config] Disable CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT + + * Revert ESE DASD discard support (LP: #1846219) + - SAUCE: Revert "s390/dasd: Add discard support for ESE volumes" + + * Miscellaneous Ubuntu changes + - update dkms package versions + + -- Seth Forshee Thu, 03 Oct 2019 16:57:05 -0500 + +linux (5.3.0-16.17) eoan; urgency=medium + + * eoan/linux: 5.3.0-16.17 -proposed tracker (LP: #1846204) + + * zfs fails to build on s390x with debug symbols enabled (LP: #1846143) + - SAUCE: s390: Mark atomic const ops always inline + + -- Seth Forshee Tue, 01 Oct 2019 07:46:43 -0500 + +linux (5.3.0-15.16) eoan; urgency=medium + + * eoan/linux: 5.3.0-15.16 -proposed tracker (LP: #1845987) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Packaging] Remove x32 arch references from control files + - [Debian] final-checks -- Get arch list from debian/control + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian] Fix conditional for setting zfs debug package path + + * Use pyhon3-sphinx instead of python-sphinx for building html docs + (LP: #1845808) + - [Packaging] Update sphinx build dependencies to python3 packages + + * Kernel panic with 19.10 beta image (LP: #1845454) + - efi/tpm: Don't access event->count when it isn't mapped. + - efi/tpm: don't traverse an event log with no events + - efi/tpm: only set efi_tpm_final_log_size after successful event log parsing + + -- Seth Forshee Mon, 30 Sep 2019 11:57:20 -0500 + +linux (5.3.0-14.15) eoan; urgency=medium + + * eoan/linux: 5.3.0-14.15 -proposed tracker (LP: #1845728) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Debian] Remove support for producing i386 kernels + - [Debian] Don't use CROSS_COMPILE for i386 configs + + * udevadm trigger will fail when trying to add /sys/devices/vio/ + (LP: #1845572) + - SAUCE: powerpc/vio: drop bus_type from parent device + + * Trying to online dasd drive results in invalid input/output from the kernel + on z/VM (LP: #1845323) + - SAUCE: s390/dasd: Fix error handling during online processing + + * intel-lpss driver conflicts with write-combining MTRR region (LP: #1845584) + - SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 2-in-1 + + * Support Hi1620 zip hw accelerator (LP: #1845355) + - [Config] Enable HiSilicon QM/ZIP as modules + - crypto: hisilicon - add queue management driver for HiSilicon QM module + - crypto: hisilicon - add hardware SGL support + - crypto: hisilicon - add HiSilicon ZIP accelerator support + - crypto: hisilicon - add SRIOV support for ZIP + - Documentation: Add debugfs doc for hisi_zip + - crypto: hisilicon - add debugfs for ZIP and QM + - MAINTAINERS: add maintainer for HiSilicon QM and ZIP controller driver + - crypto: hisilicon - fix kbuild warnings + - crypto: hisilicon - add dependency for CRYPTO_DEV_HISI_ZIP + - crypto: hisilicon - init curr_sgl_dma to fix compile warning + - crypto: hisilicon - add missing single_release + - crypto: hisilicon - fix error handle in hisi_zip_create_req_q + - crypto: hisilicon - Fix warning on printing %p with dma_addr_t + - crypto: hisilicon - Fix return value check in hisi_zip_acompress() + - crypto: hisilicon - avoid unused function warning + + * SafeSetID LSM should be built but disabled by default (LP: #1845391) + - LSM: SafeSetID: Stop releasing uninitialized ruleset + - [Config] Build SafeSetID LSM but don't enable it by default + + * CONFIG_LSM should not specify loadpin since it is not built (LP: #1845383) + - [Config] loadpin shouldn't be in CONFIG_LSM + + * Add new pci-id's for CML-S, ICL (LP: #1845317) + - drm/i915/icl: Add missing device ID + - drm/i915/cml: Add Missing PCI IDs + + * Thunderbolt support for ICL (LP: #1844680) + - thunderbolt: Correct path indices for PCIe tunnel + - thunderbolt: Move NVM upgrade support flag to struct icm + - thunderbolt: Use 32-bit writes when writing ring producer/consumer + - thunderbolt: Do not fail adding switch if some port is not implemented + - thunderbolt: Hide switch attributes that are not set + - thunderbolt: Expose active parts of NVM even if upgrade is not supported + - thunderbolt: Add support for Intel Ice Lake + - ACPI / property: Add two new Thunderbolt property GUIDs to the list + + * Ubuntu 19.10 - Additional PCI patch and fix (LP: #1844668) + - s390/pci: fix MSI message data + + * Enhanced Hardware Support - Finalize Naming (LP: #1842774) + - s390: add support for IBM z15 machines + - [Config] CONFIG_MARCH_Z15=n, CONFIG_TUNE_Z15=n + + * Eoan update: v5.3.1 upstream stable release (LP: #1845642) + - USB: usbcore: Fix slab-out-of-bounds bug during device reset + - media: tm6000: double free if usb disconnect while streaming + - phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current + - ip6_gre: fix a dst leak in ip6erspan_tunnel_xmit + - net/sched: fix race between deactivation and dequeue for NOLOCK qdisc + - net_sched: let qdisc_put() accept NULL pointer + - udp: correct reuseport selection with connected sockets + - xen-netfront: do not assume sk_buff_head list is empty in error handling + - net: dsa: Fix load order between DSA drivers and taggers + - net: stmmac: Hold rtnl lock in suspend/resume callbacks + - KVM: coalesced_mmio: add bounds checking + - Documentation: sphinx: Add missing comma to list of strings + - firmware: google: check if size is valid when decoding VPD data + - serial: sprd: correct the wrong sequence of arguments + - tty/serial: atmel: reschedule TX after RX was started + - nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds + - Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}" + - ovl: fix regression caused by overlapping layers detection + - phy: qcom-qmp: Correct ready status, again + - floppy: fix usercopy direction + - media: technisat-usb2: break out of loop at end of buffer + - Linux 5.3.1 + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian]: Remove hardcoded $(pkgdir) in debug symbols handling + - [Debian]: Handle debug symbols for modules in extras too + - [Debian]: Check/link modules with debug symbols after DKMS modules + - [Debian]: Warn about modules without debug symbols + - [Debian]: dkms-build: new parameter for debug package directory + - [Debian]: dkms-build: zfs: support for debug symbols + - [Debian]: dkms-build: Avoid executing post-processor scripts twice + - [Debian]: dkms-build: Move zfs special-casing into configure script + + * /proc/self/maps paths missing on live session (was vlc won't start; eoan + 19.10 & bionic 18.04 ubuntu/lubuntu/kubuntu/xubuntu/ubuntu-mate dailies) + (LP: #1842382) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: enable overlayfs on shiftfs" + + -- Seth Forshee Fri, 27 Sep 2019 16:08:06 -0500 + +linux (5.3.0-13.14) eoan; urgency=medium + + * eoan/linux: 5.3.0-13.14 -proposed tracker (LP: #1845105) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - [Debian] Remove binutils-dev build dependency + + -- Seth Forshee Mon, 23 Sep 2019 19:26:43 -0500 + +linux (5.3.0-12.13) eoan; urgency=medium + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Packaging] Add lz4 build dependency for s390x + + * Miscellaneous Ubuntu changes + - SAUCE: Remove spl and zfs source + + -- Seth Forshee Tue, 17 Sep 2019 13:36:26 +0200 + +linux (5.3.0-11.12) eoan; urgency=medium + + * eoan/linux: 5.3.0-11.12 -proposed tracker (LP: #1844144) + + * Suspend to RAM(S3) does not wake up for latest megaraid and mpt3sas + adapters(SAS3.5 onwards) (LP: #1838751) + - PCI: Restore Resizable BAR size bits correctly for 1MB BARs + + * s390/setup: Actually init kernel lock down (LP: #1843961) + - SAUCE: (lockdown) s390/setup: Actually init kernel lock down + + * cherrypick has_sipl fix (LP: #1843960) + - SAUCE: s390/sclp: Fix bit checked for has_sipl + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config]: Switch kernel compression from LZO to LZ4 on s390x + + * Installation fails on eoan/PowerVM : missing /dev/nvram (LP: #1837726) + - [Config] CONFIG_NVRAM=y for ppc64el + + * Miscellaneous Ubuntu changes + - [Config]: remove nvram from ppc64el modules ABI + - [Config] Update annotations for recent config changes + - SAUCE: sched: Add __ASSEMBLY__ guards around struct clone_args + - SAUCE: i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 + - SAUCE: arm64: dts: qcom: Add Lenovo Yoga C630 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3 + + -- Paolo Pisati Mon, 16 Sep 2019 16:18:27 +0200 + +linux (5.3.0-10.11) eoan; urgency=medium + + * eoan/linux: 5.3.0-10.11 -proposed tracker (LP: #1843232) + + * No sound inputs from the external microphone and headset on a Dell machine + (LP: #1842265) + - SAUCE: ALSA: hda - Expand pin_match function to match upcoming new tbls + - SAUCE: ALSA: hda - Define a fallback_pin_fixup_tbl for alc269 family + + * Horizontal corrupted line at top of screen caused by framebuffer compression + (LP: #1840236) + - SAUCE: drm/i915/fbc: disable framebuffer compression on IceLake + + * Add bpftool to linux-tools-common (LP: #1774815) + - [Debian] package bpftool in linux-tools-common + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc8 + + -- Paolo Pisati Mon, 09 Sep 2019 10:00:41 +0200 + +linux (5.3.0-9.10) eoan; urgency=medium + + * eoan/linux: 5.3.0-9.10 -proposed tracker (LP: #1842393) + + * shiftfs: mark kmem_cache as reclaimable (LP: #1842059) + - SAUCE: shiftfs: mark slab objects SLAB_RECLAIM_ACCOUNT + + * shiftfs: drop entries from cache on unlink (LP: #1841977) + - SAUCE: shiftfs: fix buggy unlink logic + + * Fix touchpad IRQ storm after S3 (LP: #1841396) + - pinctrl: intel: remap the pin number to gpio offset for irq enabled pin + + * Please include DTBs for arm64 laptops (LP: #1842050) + - arm64: dts: qcom: Add Lenovo Miix 630 + - arm64: dts: qcom: Add HP Envy x2 + - arm64: dts: qcom: Add Asus NovaGo TP370QL + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging]: ignore vbox modules when vbox is disabled + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc7 + + -- Paolo Pisati Tue, 03 Sep 2019 10:27:33 +0200 + +linux (5.3.0-8.9) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config] change kernel compression method to improve boot speed + - [Packaging] add build dependencies for compression algorithms + + * realtek r8822be kernel module fails after update to linux kernel-headers + 5.0.0-21 (LP: #1838133) + - rtw88: Fix misuse of GENMASK macro + - rtw88: pci: Rearrange the memory usage for skb in RX ISR + - rtw88: pci: Use DMA sync instead of remapping in RX ISR + - rtw88: debug: dump tx power indexes in use + - rtw88: use txpwr_lmt_cfg_pair struct, not arrays + - rtw88: pci: remove set but not used variable 'ip_sel' + - rtw88: allow c2h operation in irq context + - rtw88: enclose c2h cmd handle with mutex + - rtw88: add BT co-existence support + - SAUCE: rtw88: pci: enable MSI interrupt + + * VIMC module not available (CONFIG_VIDEO_VIMC not set) (LP: #1831482) + - [Config] Enable VIMC module + + * Goodix touchpad may drop first input event (LP: #1840075) + - Revert "UBUNTU: SAUCE: i2c: designware: add G3 3590 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c + quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: Add disable runtime pm quirk" + - mfd: intel-lpss: Remove D3cold delay + + * Include Sunix serial/parallel driver (LP: #1826716) + - serial: 8250_pci: Add support for Sunix serial boards + - parport: parport_serial: Add support for Sunix Multi I/O boards + + * enable lockdown on s390x when Secure IPL is performed (LP: #1839622) + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - Ubuntu: [Config] Enable CONFIG_LOCK_DOWN_KERNEL on s390x. + + * UBUNTU: SAUCE: shiftfs: pass correct point down (LP: #1837231) + - SAUCE: shiftfs: pass correct point down + + * shiftfs: add O_DIRECT support (LP: #1837223) + - SAUCE: shiftfs: add O_DIRECT support + + * Miscellaneous Ubuntu changes + - [Config] enable secureboot signing on s390x + - [Config] CONFIG_TEST_BLACKHOLE_DEV=m + - SAUCE: selftests: fib_tests: assign address to dummy1 for rp_filter tests + - [Debian] disable dkms builds for autopktest rebuilds + - update dkms package versions + - [Config] updateconfigs after v5.3-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 26 Aug 2019 10:09:42 +0200 + +linux (5.3.0-7.8) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after v5.3-rc5 rebase + - remove missing module after updateconfigs + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 19 Aug 2019 15:31:24 +0200 + +linux (5.3.0-6.7) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: prevent headers to be compiled as C code + + -- Seth Forshee Wed, 14 Aug 2019 13:25:01 -0500 + +linux (5.3.0-5.6) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] enable zfs build + + -- Seth Forshee Tue, 13 Aug 2019 09:16:06 -0500 + +linux (5.3.0-4.5) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * bcache: bch_allocator_thread(): hung task timeout (LP: #1784665) // Tight + timeout for bcache removal causes spurious failures (LP: #1796292) + - SAUCE: bcache: fix deadlock in bcache_allocator + + * shiftfs: allow overlayfs (LP: #1838677) + - SAUCE: shiftfs: enable overlayfs on shiftfs + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "kbuild: modpost: do not parse unnecessary rules for vmlinux + modpost" + - update dkms package versions + - enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc4 + + -- Seth Forshee Mon, 12 Aug 2019 10:41:27 -0500 + +linux (5.3.0-3.4) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] add mux-* to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc3 + + -- Paolo Pisati Mon, 05 Aug 2019 18:17:09 +0200 + +linux (5.3.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] add build dependincy on fontconfig + + -- Seth Forshee Mon, 29 Jul 2019 12:18:46 -0400 + +linux (5.3.0-1.2) eoan; urgency=medium + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * Please enable CONFIG_SCSI_UFS_QCOM as a module on arm64 (LP: #1837332) + - [Config] Enable CONFIG_SCSI_UFS_QCOM as a module on arm64. + + * Add arm64 CONFIG_ARCH_MESON=y and related configs Edit (LP: #1820530) + - [Config] enable ARCH_MESON + - remove missing module + - [Config] update annotations after enabling ARCH_MESON for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: KVM: PPC: comment implicit fallthrough + - update dkms package versions + - [Config] enable vbox dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc2 + + -- Seth Forshee Sun, 28 Jul 2019 23:10:16 -0400 + +linux (5.3.0-0.1) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - [Config] disable zfs dkms build + - [Config] disable nvidia dkms build + - [Config] disable vbox dkms build + - SAUCE: perf diff: use llabs for s64 vaules + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc1 + + -- Seth Forshee Tue, 23 Jul 2019 21:45:44 -0500 + +linux (5.3.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Mon, 22 Jul 2019 10:19:04 -0500 + +linux (5.2.0-9.10) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * input/mouse: alps trackpoint-only device doesn't work (LP: #1836752) + - SAUCE: Input: alps - don't handle ALPS cs19 trackpoint-only device + - SAUCE: Input: alps - fix a mismatch between a condition check and its + comment + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * alsa/hdmi: add icelake hdmi audio support for a Dell machine (LP: #1836916) + - SAUCE: ALSA: hda/hdmi - Remove duplicated define + - SAUCE: ALSA: hda/hdmi - Fix i915 reverse port/pin mapping + + * First click on Goodix touchpad doesn't be recognized after runtime suspended + (LP: #1836836) + - SAUCE: i2c: designware: add G3 3590 into i2c quirk + + * ixgbe{vf} - Physical Function gets IRQ when VF checks link state + (LP: #1836760) + - ixgbevf: Use cached link state instead of re-reading the value for ethtool + + * Doing multiple squashfs (and other loop?) mounts in parallel breaks + (LP: #1836914) + - SAUCE: Revert "loop: Don't change loop device under exclusive opener" + + * hibmc-drm Causes Unreadable Display for Huawei amd64 Servers (LP: #1762940) + - SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64 + - [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only + - [Config] add hibmc-drm to modules.ignore + + * hda/realtek: can't detect external mic on a Dell machine (LP: #1836755) + - ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine + + * Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + (LP: #1835054) + - [Config] Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + + * Unhide Nvidia HDA audio controller (LP: #1836308) + - PCI: Enable NVIDIA HDA controllers + + * Intel ethernet I219 may wrongly detect connection speed as 10Mbps + (LP: #1836177) + - e1000e: Make watchdog use delayed work + + * Sometimes touchpad(goodix) can't use tap function (LP: #1836020) + - SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c quirk + - SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk + + * Intel ethernet I219 has slow RX speed (LP: #1836152) + - e1000e: add workaround for possible stalled packet + - e1000e: disable force K1-off feature + + * bcache: risk of data loss on I/O errors in backing or caching devices + (LP: #1829563) + - Revert "bcache: set CACHE_SET_IO_DISABLE in bch_cached_dev_error()" + + * bnx2x driver causes 100% CPU load (LP: #1832082) + - bnx2x: Prevent ptp_task to be rescheduled indefinitely + + * fcf-protection=none patch with new version + - Revert "UBUNTU: SAUCE: kbuild: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none when using retpoline flags + + * CVE-2019-12614 + - powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() + + * Eoan update: v5.2.1 upstream stable release (LP: #1836622) + - crypto: lrw - use correct alignmask + - crypto: talitos - rename alternative AEAD algos. + - fscrypt: don't set policy for a dead directory + - udf: Fix incorrect final NOT_ALLOCATED (hole) extent length + - media: stv0297: fix frequency range limit + - ALSA: usb-audio: Fix parse of UAC2 Extension Units + - ALSA: hda/realtek - Headphone Mic can't record after S3 + - tpm: Actually fail on TPM errors during "get random" + - tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations + - block: fix .bi_size overflow + - block, bfq: NULL out the bic when it's no longer valid + - perf intel-pt: Fix itrace defaults for perf script + - perf auxtrace: Fix itrace defaults for perf script + - perf intel-pt: Fix itrace defaults for perf script intel-pt documentation + - perf pmu: Fix uncore PMU alias list for ARM64 + - perf thread-stack: Fix thread stack return from kernel for kernel-only case + - perf header: Assign proper ff->ph in perf_event__synthesize_features() + - x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg() + - x86/tls: Fix possible spectre-v1 in do_get_thread_area() + - Documentation: Add section about CPU vulnerabilities for Spectre + - Documentation/admin: Remove the vsyscall=native documentation + - mwifiex: Don't abort on small, spec-compliant vendor IEs + - USB: serial: ftdi_sio: add ID for isodebug v1 + - USB: serial: option: add support for GosunCn ME3630 RNDIS mode + - Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled" + - p54usb: Fix race between disconnect and firmware loading + - usb: gadget: f_fs: data_len used before properly set + - usb: gadget: ether: Fix race between gether_disconnect and rx_submit + - usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset() + - usb: renesas_usbhs: add a workaround for a race condition of workqueue + - drivers/usb/typec/tps6598x.c: fix portinfo width + - drivers/usb/typec/tps6598x.c: fix 4CC cmd write + - p54: fix crash during initialization + - staging: comedi: dt282x: fix a null pointer deref on interrupt + - staging: wilc1000: fix error path cleanup in wilc_wlan_initialize() + - staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate() + - staging: comedi: amplc_pci230: fix null pointer deref on interrupt + - staging: mt7621-pci: fix PCIE_FTS_NUM_LO macro + - HID: Add another Primax PIXART OEM mouse quirk + - lkdtm: support llvm-objcopy + - binder: fix memory leak in error path + - binder: return errors from buffer copy functions + - iio: adc: stm32-adc: add missing vdda-supply + - coresight: Potential uninitialized variable in probe() + - coresight: etb10: Do not call smp_processor_id from preemptible + - coresight: tmc-etr: Do not call smp_processor_id() from preemptible + - coresight: tmc-etr: alloc_perf_buf: Do not call smp_processor_id from + preemptible + - coresight: tmc-etf: Do not call smp_processor_id from preemptible + - carl9170: fix misuse of device driver API + - Revert "x86/build: Move _etext to actual end of .text" + - VMCI: Fix integer overflow in VMCI handle arrays + - staging: vchiq_2835_arm: revert "quit using custom down_interruptible()" + - staging: vchiq: make wait events interruptible + - staging: vchiq: revert "switch to wait_for_completion_killable" + - staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work + - staging: bcm2835-camera: Replace spinlock protecting context_map with mutex + - staging: bcm2835-camera: Ensure all buffers are returned on disable + - staging: bcm2835-camera: Remove check of the number of buffers supplied + - staging: bcm2835-camera: Handle empty EOS buffers whilst streaming + - staging: rtl8712: reduce stack usage, again + - Linux 5.2.1 + - [Config] updateconfigs after v5.2.1 stable update + + * fcf-protection=none patch with upstream version + - Revert "UBUNTU: SAUCE: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none to retpoline flags + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: avoid failure when trying to probe a notrace + function + - SAUCE: selftests/powerpc/ptrace: fix build failure + - update dkms package versions + - [Packaging] add zlua to zfs-modules.ignore + - update dkms package versions + + -- Seth Forshee Fri, 19 Jul 2019 15:04:45 -0500 + +linux (5.2.0-8.9) eoan; urgency=medium + + * linux: 5.2.0-8.9 -proposed tracker (LP: #1835700) + + * Miscellaneous Ubuntu changes + - [Packaging] replace zfs and spl build with zfs 0.8.1-1ubuntu1 + - SAUCE: test_bpf: remove expected fail for Ctx heavy transformations test on + s390 + - SAUCE: add -fcf-protection=none to retpoline flags + - SAUCE: usbip: ensure strings copied using strncpy are null-terminated + - SAUCE: usbip: add -Wno-address-of-packed-member to EXTRA_CFLAGS + - SAUCE: perf jvmti: ensure strncpy result is null-terminated + - update dkms package versions + - add removed zfs modules to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.2 + + -- Seth Forshee Mon, 08 Jul 2019 07:13:41 -0500 + +linux (5.2.0-7.8) eoan; urgency=medium + + * Kernel panic upon resetting ixgbe SR-IOV VFIO virtual function using 5.0 + kernel (LP: #1829652) + - SAUCE: ixgbe: Avoid NULL pointer dereference with VF on non-IPsec hw + + * Hi1620 driver updates from upstream 5.2 merge window (LP: #1830815) + - net: hns3: initialize CPU reverse mapping + - net: hns3: refine the flow director handle + - net: hns3: add aRFS support for PF + - net: hns3: fix for FEC configuration + - RDMA/hns: Remove unnecessary print message in aeq + - RDMA/hns: Update CQE specifications + - RDMA/hns: Move spin_lock_irqsave to the correct place + - RDMA/hns: Remove jiffies operation in disable interrupt context + - RDMA/hns: Replace magic numbers with #defines + - net: hns3: fix compile warning without CONFIG_RFS_ACCEL + - net: hns3: fix for HNS3_RXD_GRO_SIZE_M macro + - net: hns3: add support for dump firmware statistics by debugfs + - net: hns3: use HCLGE_STATE_NIC_REGISTERED to indicate PF NIC client has + registered + - net: hns3: use HCLGE_STATE_ROCE_REGISTERED to indicate PF ROCE client has + registered + - net: hns3: use HCLGEVF_STATE_NIC_REGISTERED to indicate VF NIC client has + registered + - net: hns3: modify hclge_init_client_instance() + - net: hns3: modify hclgevf_init_client_instance() + - net: hns3: add handshake with hardware while doing reset + - net: hns3: stop schedule reset service while unloading driver + - net: hns3: adjust hns3_uninit_phy()'s location in the hns3_client_uninit() + - net: hns3: fix a memory leak issue for hclge_map_unmap_ring_to_vf_vector + - RDMA/hns: Bugfix for posting multiple srq work request + - net: hns3: remove redundant core reset + - net: hns3: don't configure new VLAN ID into VF VLAN table when it's full + - net: hns3: fix VLAN filter restore issue after reset + - net: hns3: set the port shaper according to MAC speed + - net: hns3: add a check to pointer in error_detected and slot_reset + - net: hns3: set ops to null when unregister ad_dev + - net: hns3: add handling of two bits in MAC tunnel interrupts + - net: hns3: remove setting bit of reset_requests when handling mac tunnel + interrupts + - net: hns3: add opcode about query and clear RAS & MSI-X to special opcode + - net: hns3: delay and separate enabling of NIC and ROCE HW errors + - RDMA/hns: fix inverted logic of readl read and shift + - RDMA/hns: Bugfix for filling the sge of srq + - net: hns3: log detail error info of ROCEE ECC and AXI errors + - net: hns3: fix wrong size of mailbox responding data + - net: hns3: make HW GRO handling compliant with SW GRO + - net: hns3: replace numa_node_id with numa_mem_id for buffer reusing + - net: hns3: refactor hns3_get_new_int_gl function + - net: hns3: trigger VF reset if a VF has an over_8bd_nfe_err + - net: hns3: delete the redundant user NIC codes + - net: hns3: small changes for magic numbers + - net: hns3: use macros instead of magic numbers + - net: hns3: refactor PF/VF RSS hash key configuration + - net: hns3: some modifications to simplify and optimize code + - net: hns3: fix some coding style issues + - net: hns3: delay setting of reset level for hw errors until slot_reset is + called + - net: hns3: fix avoid unnecessary resetting for the H/W errors which do not + require reset + - net: hns3: process H/W errors occurred before HNS dev initialization + - net: hns3: add recovery for the H/W errors occurred before the HNS dev + initialization + - net: hns3: some changes of MSI-X bits in PPU(RCB) + - net: hns3: extract handling of mpf/pf msi-x errors into functions + - net: hns3: clear restting state when initializing HW device + - net: hns3: free irq when exit from abnormal branch + - net: hns3: fix for dereferencing before null checking + - net: hns3: fix for skb leak when doing selftest + - net: hns3: delay ring buffer clearing during reset + - net: hns3: some variable modification + - net: hns3: fix dereference of ae_dev before it is null checked + - scsi: hisi_sas: Delete PHY timers when rmmod or probe failed + - scsi: hisi_sas: Fix the issue of argument mismatch of printing ecc errors + - scsi: hisi_sas: Reduce HISI_SAS_SGE_PAGE_CNT in size + - scsi: hisi_sas: Change the type of some numbers to unsigned + - scsi: hisi_sas: Ignore the error code between phy down to phy up + - scsi: hisi_sas: Disable stash for v3 hw + - net: hns3: Add missing newline at end of file + - RDMa/hns: Don't stuck in endless timeout loop + + * Sometimes touchpad automatically trigger double click (LP: #1833484) + - SAUCE: i2c: designware: Add disable runtime pm quirk + + * Add pointstick support on HP ZBook 17 G5 (LP: #1833387) + - Revert "HID: multitouch: Support ALPS PTP stick with pid 0x120A" + + * depmod may prefer unsigned l-r-m nvidia modules to signed modules + (LP: #1834479) + - [Packaging] dkms-build--nvidia-N -- clean up unsigned ko files + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/powerpc: disable signal_fuzzer test + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc7 + + -- Seth Forshee Mon, 01 Jul 2019 07:22:18 -0500 + +linux (5.2.0-6.7) eoan; urgency=medium + + * hinic: fix oops due to race in set_rx_mode (LP: #1832048) + - hinic: fix a bug in set rx mode + + * Miscellaneous Ubuntu changes + - rebase to v5.2-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc6 + + -- Seth Forshee Sun, 23 Jun 2019 23:36:11 -0500 + +linux (5.2.0-5.6) eoan; urgency=medium + + * QCA9377 isn't being recognized sometimes (LP: #1757218) + - SAUCE: USB: Disable USB2 LPM at shutdown + + * shiftfs: allow changing ro/rw for subvolumes (LP: #1832316) + - SAUCE: shiftfs: allow changing ro/rw for subvolumes + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Packaging] replace nvidia-418 dkms build with nvidia-430 + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc5 + + -- Seth Forshee Mon, 17 Jun 2019 15:04:12 -0500 + +linux (5.2.0-4.5) eoan; urgency=medium + + * arm64: cma_alloc errors at boot (LP: #1823753) + - [Config] Bump CMA_SIZE_MBYTES to 32 on arm64 + - dma-contiguous: add dma_{alloc,free}_contiguous() helpers + - dma-contiguous: use fallback alloc_pages for single pages + - dma-contiguous: fix !CONFIG_DMA_CMA version of dma_{alloc, + free}_contiguous() + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_MFD_TQMX86=n for s390x + - [Config] CONFIG_GPIO_AMD_FCH=n for s390x + - [Config] CONFIG_BACKLIGHT_CLASS_DEVICE=n on s390x + - [Config] CONFIG_LCD_CLASS_DEVICE=n for s390x + - [Config] CONFIG_DRM_ETNAVIV=m for armhf generic-lpae + - [Config] CONFIG_DRM_NOUVEAU_SVM=n + - [Config] CONFIG_HWMON=n for s390x + - [Config] CONFIG_NEW_LEDS=n for s390x + - [Config] CONFIG_MTD_NAND_OMAP2=y for armhf + - [Config] CONFIG_VOP_BUS=n for non-amd64 arches + - [Config] CONFIG_TI_CPSW_PHY_SEL=n + - [Config] CONFIG_INTERCONNECT=n for s390x + - [Config] CONFIG_SCSI_GDTH=n for s390x + - [Config] CONFIG_PACKING=n for s390x + - [Config] CONFIG_ARCH_MILBEAUT=y for armhf + - [Config] update annotations following config review + - update dkms package versions + - [Config] enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc4 + + -- Seth Forshee Mon, 10 Jun 2019 07:00:11 -0500 + +linux (5.2.0-3.4) eoan; urgency=medium + + * [18.04/18.10] File libperf-jvmti.so is missing in linux-tools-common deb on + Ubuntu (LP: #1761379) + - [Packaging] Support building libperf-jvmti.so + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "bpf, selftest: test global data/bss/rodata sections" + - update dkms package versions + - [Config] enable zfs + - rebase to v5.2-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc3 + + -- Seth Forshee Sun, 02 Jun 2019 21:48:50 -0500 + +linux (5.2.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: perf arm64: Fix mksyscalltbl when system kernel headers are ahead of + the kernel + + -- Seth Forshee Tue, 28 May 2019 07:12:39 -0500 + +linux (5.2.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_INTEGRITY_PLATFORM_KEYRING=y + - update dkms package versions + - [Config] enable vbox dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc2 + + -- Seth Forshee Mon, 27 May 2019 21:11:27 -0500 + +linux (5.2.0-0.1) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - update dkms package versions + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - update dkms package versions + - [Config] disable vbox build + - SAUCE: s390: mark __cpacf_check_opcode() and cpacf_query_func() as + __always_inline + - SAUCE: IB/mlx5: use size_t instead of u64 when dividing + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc1 + + -- Seth Forshee Tue, 21 May 2019 11:18:43 -0500 + +linux (5.2.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 21 May 2019 07:34:43 -0500 + +linux (5.1.0-2.2) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Eoan update: v5.1.2 upstream stable release (LP: #1829050) + - x86/msr-index: Cleanup bit defines + - x86/speculation: Consolidate CPU whitelists + - x86/speculation/mds: Add basic bug infrastructure for MDS + - x86/speculation/mds: Add BUG_MSBDS_ONLY + - x86/kvm: Expose X86_FEATURE_MD_CLEAR to guests + - x86/speculation/mds: Add mds_clear_cpu_buffers() + - x86/speculation/mds: Clear CPU buffers on exit to user + - x86/kvm/vmx: Add MDS protection when L1D Flush is not active + - x86/speculation/mds: Conditionally clear CPU buffers on idle entry + - x86/speculation/mds: Add mitigation control for MDS + - x86/speculation/mds: Add sysfs reporting for MDS + - x86/speculation/mds: Add mitigation mode VMWERV + - Documentation: Move L1TF to separate directory + - Documentation: Add MDS vulnerability documentation + - x86/speculation/mds: Add mds=full,nosmt cmdline option + - x86/speculation: Move arch_smt_update() call to after mitigation decisions + - x86/speculation/mds: Add SMT warning message + - x86/speculation/mds: Fix comment + - x86/speculation/mds: Print SMT vulnerable on MSBDS with mitigations off + - cpu/speculation: Add 'mitigations=' cmdline option + - x86/speculation: Support 'mitigations=' cmdline option + - powerpc/speculation: Support 'mitigations=' cmdline option + - s390/speculation: Support 'mitigations=' cmdline option + - x86/speculation/mds: Add 'mitigations=' support for MDS + - x86/mds: Add MDSUM variant to the MDS documentation + - Documentation: Correct the possible MDS sysfs values + - x86/speculation/mds: Fix documentation typo + - Linux 5.1.2 + + * Eoan update: v5.1.1 upstream stable release (LP: #1829046) + - Drivers: hv: vmbus: Remove the undesired put_cpu_ptr() in hv_synic_cleanup() + - ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings + - staging: greybus: power_supply: fix prop-descriptor request size + - staging: wilc1000: Avoid GFP_KERNEL allocation from atomic context. + - staging: most: cdev: fix chrdev_region leak in mod_exit + - staging: most: sound: pass correct device when creating a sound card + - usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON + - usb: dwc3: Fix default lpm_nyet_threshold value + - USB: serial: f81232: fix interrupt worker not stop + - USB: cdc-acm: fix unthrottle races + - usb-storage: Set virt_boundary_mask to avoid SG overflows + - genirq: Prevent use-after-free and work list corruption + - intel_th: pci: Add Comet Lake support + - iio: adc: qcom-spmi-adc5: Fix of-based module autoloading + - cpufreq: armada-37xx: fix frequency calculation for opp + - ACPI / LPSS: Use acpi_lpss_* instead of acpi_subsys_* functions for + hibernate + - soc: sunxi: Fix missing dependency on REGMAP_MMIO + - scsi: lpfc: change snprintf to scnprintf for possible overflow + - scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines + - scsi: qla2xxx: Set remote port devloss timeout to 0 + - scsi: qla2xxx: Fix device staying in blocked state + - Bluetooth: hidp: fix buffer overflow + - Bluetooth: Align minimum encryption key size for LE and BR/EDR connections + - Bluetooth: Fix not initializing L2CAP tx_credits + - Bluetooth: hci_bcm: Fix empty regulator supplies for Intel Macs + - UAS: fix alignment of scatter/gather segments + - ASoC: Intel: avoid Oops if DMA setup fails + - i3c: Fix a shift wrap bug in i3c_bus_set_addr_slot_status() + - locking/futex: Allow low-level atomic operations to return -EAGAIN + - arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP + - Linux 5.1.1 + + * shiftfs: lock security sensitive superblock flags (LP: #1827122) + - SAUCE: shiftfs: lock down certain superblock flags + + * Please package libbpf (which is done out of the kernel src) in Debian [for + 19.10] (LP: #1826410) + - SAUCE: tools -- fix add ability to disable libbfd + + * ratelimit cma_alloc messages (LP: #1828092) + - SAUCE: cma: ratelimit cma_alloc error messages + + * Headphone jack switch sense is inverted: plugging in headphones disables + headphone output (LP: #1824259) + - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board + + * There are 4 HDMI/Displayport audio output listed in sound setting without + attach any HDMI/DP monitor (LP: #1827967) + - ALSA: hda/hdmi - Read the pin sense from register when repolling + - ALSA: hda/hdmi - Consider eld_valid when reporting jack event + + * CONFIG_LOG_BUF_SHIFT set to 14 is too low on arm64 (LP: #1824864) + - [Config] CONFIG_LOG_BUF_SHIFT=18 on all 64bit arches + + * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error + Checking for all LINUX clients for devops4p10 (LP: #1766201) + - SAUCE: integrity: downgrade error to warning + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [SRU] Please sync vbox modules from virtualbox 6.0.6 on next kernel update + (LP: #1825210) + - vbox-update: updates for renamed makefiles + - ubuntu: vbox -- update to 6.0.6-dfsg-1 + + * autofs kernel module missing (LP: #1824333) + - [Config] Update autofs4 path in inclusion list + + * The Realtek card reader does not enter PCIe 1.1/1.2 (LP: #1825487) + - SAUCE: misc: rtsx: Fixed rts5260 power saving parameter and sd glitch + + * CVE-2019-3874 + - sctp: implement memory accounting on tx path + - sctp: implement memory accounting on rx path + + * apparmor does not start in Disco LXD containers (LP: #1824812) + - SAUCE: shiftfs: use separate llseek method for directories + + * Miscellaneous Ubuntu changes + - [Packaging] autoreconstruct -- remove for -rc kernels + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - [Config] (efi-lockdown): update configs after efi lockdown patch refresh + - [Packaging] don't delete efi_parser.c + - vbox-update -- do not fix up KERN_DIR or KBUILD_EXTMOD + - ubuntu: vbox -- update to 6.0.6-dfsg-2 + - add nvidia-418 dkms build + - remove virtualbox guest drivers + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - [Config] update configs for v5.1(-rc7)? rebase + - update dkms package versions + - Add the ability to lock down access to the running kernel image + - Enforce module signatures if the kernel is locked down + - Restrict /dev/{mem,kmem,port} when the kernel is locked down + - kexec_load: Disable at runtime if the kernel is locked down + - Copy secure_boot flag in boot params across kexec reboot + - kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE + - kexec_file: Restrict at runtime if the kernel is locked down + - hibernate: Disable when the kernel is locked down + - uswsusp: Disable when the kernel is locked down + - PCI: Lock down BAR access when the kernel is locked down + - x86: Lock down IO port access when the kernel is locked down + - x86/msr: Restrict MSR access when the kernel is locked down + - ACPI: Limit access to custom_method when the kernel is locked down + - acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down + - acpi: Disable ACPI table override if the kernel is locked down + - acpi: Disable APEI error injection if the kernel is locked down + - Prohibit PCMCIA CIS storage when the kernel is locked down + - Lock down TIOCSSERIAL + - Lock down module params that specify hardware parameters (eg. ioport) + - x86/mmiotrace: Lock down the testmmiotrace module + - Lock down /proc/kcore + - Lock down kprobes + - bpf: Restrict kernel image access functions when the kernel is locked down + - Lock down perf + - debugfs: Restrict debugfs when the kernel is locked down + - lockdown: Print current->comm in restriction messages + - kexec: Allow kexec_file() with appropriate IMA policy when locked down + - Make get_cert_list() not complain about cert lists that aren't present. + - Add efi_status_to_str() and rework efi_status_to_err(). + - Make get_cert_list() use efi_status_to_str() to print error messages. + - efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - efi: Lock down the kernel if booted in secure boot mode + - KEYS: Make use of platform keyring for module signature verify + + * Miscellaneous upstream changes + - ALSA: hdea/realtek - Headset fixup for System76 Gazelle (gaze14) + + -- Seth Forshee Tue, 14 May 2019 12:32:56 -0500 + +linux (5.1.0-1.1) eoan; urgency=medium + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging]: really drop snapdragon + + * Miscellaneous Ubuntu changes + - SAUCE: fix vbox use of MAP_SHARED + - SAUCE: fix vbox use of vm_fault_t + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - SAUCE: perf annotate: Fix build on 32 bit for BPF annotation + - [Config]: updateconfig after rebase to v5.1-rc + - [Config]: build ETNAVIV only on arm platforms + - [Config]: Disable CMA on non-arm platforms + - [Config]: MMC_CQHCI is needed by some built-in drivers + - [Config]: a.out support has been deprecated + - [Config]: R3964 was marked as BROKEN + - [Config]: Add SENSIRION_SGP30 module + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tools: lib/bpf -- add generated headers to search + path" + - Revert "UBUNTU: SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK" + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 10:03:25 -0300 + +linux (5.1.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 09:49:47 -0300 + +linux (5.0.0-13.14) disco; urgency=medium + + * linux: 5.0.0-13.14 -proposed tracker (LP: #1824819) + + * Display only has 640x480 (LP: #1824677) + - Revert "UBUNTU: SAUCE: drm/nouveau: Disable nouveau driver by default" + + * shiftfs: use after free when checking mount options (LP: #1824735) + - SAUCE: shiftfs: prevent use-after-free when verifying mount options + + -- Seth Forshee Mon, 15 Apr 2019 09:11:23 -0500 + +linux (5.0.0-12.13) disco; urgency=medium + + * linux: 5.0.0-12.13 -proposed tracker (LP: #1824726) + + * Linux 5.0 black screen on boot, display flickers (i915 regression with + certain laptop panels) (LP: #1824216) + - drm/i915/dp: revert back to max link rate and lane count on eDP + + * kernel BUG at fs/attr.c:287 when using shiftfs (LP: #1824717) + - SAUCE: shiftfs: fix passing of attrs to underaly for setattr + + -- Seth Forshee Sun, 14 Apr 2019 13:38:05 -0500 + +linux (5.0.0-11.12) disco; urgency=medium + + * linux: 5.0.0-11.12 -proposed tracker (LP: #1824383) + + * hns3: PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found [error status=0x1] + (LP: #1824194) + - net: hns3: fix for not calculating tx bd num correctly + + * disco: unable to use iptables/enable ufw under -virtual kernel + (LP: #1823862) + - [Packaging] add bpfilter to linux-modules + + * Make shiftfs a module rather than built-in (LP: #1824354) + - [Config] CONFIG_SHIFT_FS=m + + * shiftfs: chown sets untranslated ids in lower fs (LP: #1824350) + - SAUCE: shiftfs: use translated ids when chaning lower fs attrs + + * [Hyper-V] KVP daemon fails to start on first boot of disco VM (LP: #1820063) + - [Packaging] bind hv_kvp_daemon startup to hv_kvp device + + -- Seth Forshee Thu, 11 Apr 2019 10:17:19 -0500 + +linux (5.0.0-10.11) disco; urgency=medium + + * linux: 5.0.0-10.11 -proposed tracker (LP: #1823936) + + * Apparmor enforcement failure in lxc selftests (LP: #1823379) + - SAUCE: apparmor: Restore Y/N in /sys for apparmor's "enabled" + + * systemd cause kernel trace "BUG: unable to handle kernel paging request at + 6db23a14" on Cosmic i386 (LP: #1813244) + - openvswitch: fix flow actions reallocation + + -- Seth Forshee Tue, 09 Apr 2019 08:30:38 -0500 + +linux (5.0.0-9.10) disco; urgency=medium + + * linux: 5.0.0-9.10 -proposed tracker (LP: #1823228) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] update helper scripts + - [Packaging] resync retpoline extraction + + * Huawei Hi1822 NIC has poor performance (LP: #1820187) + - net-next/hinic: replace disable_irq_nosync/enable_irq + + * Add uid shifting overlay filesystem (shiftfs) (LP: #1823186) + - shiftfs: uid/gid shifting bind mount + - shiftfs: rework and extend + - shiftfs: support some btrfs ioctls + - [Config] enable shiftfs + + * Cannot boot or install - have to use nomodeset (LP: #1821820) + - Revert "drm/i915/fbdev: Actually configure untiled displays" + + * Disco update: v5.0.6 upstream stable release (LP: #1823060) + - netfilter: nf_tables: fix set double-free in abort path + - dccp: do not use ipv6 header for ipv4 flow + - genetlink: Fix a memory leak on error path + - gtp: change NET_UDP_TUNNEL dependency to select + - ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL + - mac8390: Fix mmio access size probe + - mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S + - net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 + - net: datagram: fix unbounded loop in __skb_try_recv_datagram() + - net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec + - net: phy: meson-gxl: fix interrupt support + - net: rose: fix a possible stack overflow + - net: stmmac: fix memory corruption with large MTUs + - net-sysfs: call dev_hold if kobject_init_and_add success + - net: usb: aqc111: Extend HWID table by QNAP device + - packets: Always register packet sk in the same order + - rhashtable: Still do rehash when we get EEXIST + - sctp: get sctphdr by offset in sctp_compute_cksum + - sctp: use memdup_user instead of vmemdup_user + - tcp: do not use ipv6 header for ipv4 flow + - tipc: allow service ranges to be connect()'ed on RDM/DGRAM + - tipc: change to check tipc_own_id to return in tipc_net_stop + - tipc: fix cancellation of topology subscriptions + - tun: properly test for IFF_UP + - vrf: prevent adding upper devices + - vxlan: Don't call gro_cells_destroy() before device is unregistered + - thunderx: enable page recycling for non-XDP case + - thunderx: eliminate extra calls to put_page() for pages held for recycling + - net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode + - net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() + helper + - net: phy: don't clear BMCR in genphy_soft_reset + - r8169: fix cable re-plugging issue + - ila: Fix rhashtable walker list corruption + - tun: add a missing rcu_read_unlock() in error path + - powerpc/fsl: Fix the flush of branch predictor. + - Btrfs: fix incorrect file size after shrinking truncate and fsync + - btrfs: remove WARN_ON in log_dir_items + - btrfs: don't report readahead errors and don't update statistics + - btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks + - btrfs: Avoid possible qgroup_rsv_size overflow in + btrfs_calculate_inode_block_rsv_size + - Btrfs: fix assertion failure on fsync with NO_HOLES enabled + - locks: wake any locks blocked on request before deadlock check + - tracing: initialize variable in create_dyn_event() + - ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time + - powerpc: bpf: Fix generation of load/store DW instructions + - vfio: ccw: only free cp on final interrupt + - NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() + - NFS: fix mount/umount race in nlmclnt. + - NFSv4.1 don't free interrupted slot on open + - net: dsa: qca8k: remove leftover phy accessors + - ALSA: rawmidi: Fix potential Spectre v1 vulnerability + - ALSA: seq: oss: Fix Spectre v1 vulnerability + - ALSA: pcm: Fix possible OOB access in PCM oss plugins + - ALSA: pcm: Don't suspend stream in unrecoverable PCM state + - ALSA: hda/realtek - Fixed Headset Mic JD not stable + - ALSA: hda/realtek: merge alc_fixup_headset_jack to alc295_fixup_chromebook + - ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO + - ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB + - ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286 + - ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286 + - ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset mic + - ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256 + - ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256 + - ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with ALC256 + - ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen laptops + - kbuild: modversions: Fix relative CRC byte order interpretation + - fs/open.c: allow opening only regular files during execve() + - ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock + - scsi: sd: Fix a race between closing an sd device and sd I/O + - scsi: sd: Quiesce warning if device does not report optimal I/O size + - scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host + - scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP + devices + - drm/rockchip: vop: reset scale mode when win is disabled + - tty/serial: atmel: Add is_half_duplex helper + - tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped + - tty: mxs-auart: fix a potential NULL pointer dereference + - tty: atmel_serial: fix a potential NULL pointer dereference + - tty: serial: qcom_geni_serial: Initialize baud in qcom_geni_console_setup + - staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest + - staging: olpc_dcon_xo_1: add missing 'const' qualifier + - staging: speakup_soft: Fix alternate speech with other synths + - staging: vt6655: Remove vif check from vnt_interrupt + - staging: vt6655: Fix interrupt race condition on device start up. + - staging: erofs: fix to handle error path of erofs_vmap() + - staging: erofs: fix error handling when failed to read compresssed data + - staging: erofs: keep corrupted fs from crashing kernel in erofs_readdir() + - serial: max310x: Fix to avoid potential NULL pointer dereference + - serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference + - serial: sh-sci: Fix setting SCSCR_TIE while transferring data + - USB: serial: cp210x: add new device id + - USB: serial: ftdi_sio: add additional NovaTech products + - USB: serial: mos7720: fix mos_parport refcount imbalance on error path + - USB: serial: option: set driver_info for SIM5218 and compatibles + - USB: serial: option: add support for Quectel EM12 + - USB: serial: option: add Olicard 600 + - ACPI / CPPC: Fix guaranteed performance handling + - Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc + - fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links + - drivers/block/zram/zram_drv.c: fix idle/writeback string compare + - blk-mq: fix sbitmap ws_active for shared tags + - cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency + - cpufreq: scpi: Fix use after free + - drm/vgem: fix use-after-free when drm_gem_handle_create() fails + - drm/vkms: fix use-after-free when drm_gem_handle_create() fails + - drm/i915: Mark AML 0x87CA as ULX + - drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check + - drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro + - gpio: exar: add a check for the return value of ida_simple_get fails + - gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input + - phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs + - usb: mtu3: fix EXTCON dependency + - USB: gadget: f_hid: fix deadlock in f_hidg_write() + - usb: common: Consider only available nodes for dr_mode + - mm/memory.c: fix modifying of page protection by insert_pfn() + - usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk + - xhci: Fix port resume done detection for SS ports with LPM enabled + - usb: xhci: dbc: Don't free all memory with spinlock held + - xhci: Don't let USB3 ports stuck in polling state prevent suspend + - usb: cdc-acm: fix race during wakeup blocking TX traffic + - usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps + - usb: typec: Fix unchecked return value + - mm/hotplug: fix offline undo_isolate_page_range() + - mm: add support for kmem caches in DMA32 zone + - iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging + - mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified + - mm/debug.c: fix __dump_page when mapping->host is not set + - mm/memory_hotplug.c: fix notification in offline error path + - mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate() + - mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate + - perf pmu: Fix parser error for uncore event alias + - perf intel-pt: Fix TSC slip + - objtool: Query pkg-config for libelf location + - powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes + - powerpc/64: Fix memcmp reading past the end of src/dest + - powerpc/pseries/mce: Fix misleading print for TLB mutlihit + - watchdog: Respect watchdog cpumask on CPU hotplug + - cpu/hotplug: Prevent crash when CPU bringup fails on CONFIG_HOTPLUG_CPU=n + - x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y + - KVM: Reject device ioctls from processes other than the VM's creator + - KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts + - KVM: x86: update %rip after emulating IO + - bpf: do not restore dst_reg when cur_state is freed + - mt76x02u: use usb_bulk_msg to upload firmware + - Linux 5.0.6 + + * RDMA/hns updates for disco (LP: #1822897) + - RDMA/hns: Fix the bug with updating rq head pointer when flush cqe + - RDMA/hns: Bugfix for the scene without receiver queue + - RDMA/hns: Add constraint on the setting of local ACK timeout + - RDMA/hns: Modify the pbl ba page size for hip08 + - RDMA/hns: RDMA/hns: Assign rq head pointer when enable rq record db + - RDMA/hns: Add the process of AEQ overflow for hip08 + - RDMA/hns: Add SCC context allocation support for hip08 + - RDMA/hns: Add SCC context clr support for hip08 + - RDMA/hns: Add timer allocation support for hip08 + - RDMA/hns: Remove set but not used variable 'rst' + - RDMA/hns: Make some function static + - RDMA/hns: Fix the Oops during rmmod or insmod ko when reset occurs + - RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset + - RDMA/hns: Fix the chip hanging caused by sending doorbell during reset + - RDMA/hns: Limit minimum ROCE CQ depth to 64 + - RDMA/hns: Fix the state of rereg mr + - RDMA/hns: Set allocated memory to zero for wrid + - RDMA/hns: Delete useful prints for aeq subtype event + - RDMA/hns: Configure capacity of hns device + - RDMA/hns: Modify qp&cq&pd specification according to UM + - RDMA/hns: Bugfix for set hem of SCC + - RDMA/hns: Use GFP_ATOMIC in hns_roce_v2_modify_qp + + * autopkgtests run too often, too much and don't skip enough (LP: #1823056) + - Set +x on rebuild testcase. + - Skip rebuild test, for regression-suite deps. + - Make ubuntu-regression-suite skippable on unbootable kernels. + - make rebuild use skippable error codes when skipping. + - Only run regression-suite, if requested to. + + * touchpad not working on lenovo yoga 530 (LP: #1787775) + - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI" + - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base" + - i2c: add extra check to safe DMA buffer helper + - i2c: Add drivers for the AMD PCIe MP2 I2C controller + - [Config] Update config for AMD MP2 I2C driver + + * Detect SMP PHY control command errors (LP: #1822680) + - scsi: libsas: Check SMP PHY control function result + + * disable a.out support (LP: #1818552) + - [Config] Disable a.out support + - [Config] remove binfmt_aout from abi for i386 lowlatency + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging] remove snapdragon flavour support + - Revert "UBUNTU: SAUCE: (snapdragon) drm/msm/adv7511: wrap hacks under + CONFIG_ADV7511_SNAPDRAGON_HACKS #ifdefs" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: skip address change if dt + addr == default addr" + - Revert "UBUNTU: SAUCE: (snapdragon) DT: leds: Add Qualcomm Light Pulse + Generator binding" + - Revert "UBUNTU: SAUCE: (snapdragon) MAINTAINERS: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) dt-bindings: media: Binding document for + Qualcomm Camera Control Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) leds: Add driver for Qualcomm LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/adv7511: Don't rely on + interrupts for EDID parsing" + - Revert "UBUNTU: SAUCE: (snapdragon) drm/bridge/adv7511: Delay clearing of + HPD interrupt status" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: Fix I2C address" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix I2C address bug" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix run queue completion + timeout" + - Revert "UBUNTU: SAUCE: (snapdragon) camss: Do not register if no cameras are + present" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) ov5645: I2C address change" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Allow + REGULATOR_QCOM_SMD_RPM=m" + - Revert "UBUNTU: SAUCE: (snapdragon) cpufreq: Add apq8016 to cpufreq-dt- + platdev blacklist" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Add a helper to get an opp + regulator for device" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: HACK: Allow to set regulator + without opp_list" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Drop RCU usage in + dev_pm_opp_adjust_voltage()" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Support adjusting OPP voltages + at runtime" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Add floor and corner + operations" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Register with cpufreq- + dt" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: fix with new + reg_sequence structures" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Use raw mem access for + qfprom" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: Add support for CPR (Core + Power Reduction)" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/iommu: Remove runtime_put + calls in map/unmap" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable LEDS_QCOM_LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'BBR' TCP + congestion algorithm" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'fq' and + 'fq_codel' qdiscs" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable + 'schedutil' CPUfreq governor" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: set USB_CONFIG_F_FS in + distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CONFIG_USB_CONFIGFS_F_FS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add freq stat to sysfs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: Enable camera drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: disable ANALOG_TV and + DIGITAL_TV" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add more USB net + drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable BT_QCOMSMD" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CFG80211_DEFAULT_PS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) Force the SMD regulator driver to be + compiled-in" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: enable dm_mod and + dm_crypt" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: Enable a53/apcs and + avs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable QCOM Venus" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable debug + friendly USB network adpater" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable WCN36xx" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs; add distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable QCOM audio + drivers for APQ8016 and DB410c" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable REMOTEPROC" + - [Config] fix abi for remove i2c-qcom-cci module + - [Config] update annotations + - [Config] update configs following snapdragon removal + + * Disco update: v5.0.5 upstream stable release (LP: #1822671) + - Revert "ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec" + - ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist + - ALSA: firewire-motu: use 'version' field of unit directory to identify model + - mmc: pxamci: fix enum type confusion + - mmc: alcor: fix DMA reads + - mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" + - mmc: renesas_sdhi: limit block count to 16 bit for old revisions + - drm/amdgpu: fix invalid use of change_bit + - drm/vmwgfx: Don't double-free the mode stored in par->set_mode + - drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's + - iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE + - iommu/iova: Fix tracking of recently failed iova address + - libceph: wait for latest osdmap in ceph_monc_blacklist_add() + - udf: Fix crash on IO error during truncate + - mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. + - MIPS: Ensure ELF appended dtb is relocated + - MIPS: Fix kernel crash for R6 in jump label branch function + - powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 + - powerpc/security: Fix spectre_v2 reporting + - net/mlx5: Fix DCT creation bad flow + - scsi: core: Avoid that a kernel warning appears during system resume + - scsi: qla2xxx: Fix FC-AL connection target discovery + - scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton + - scsi: ibmvscsi: Fix empty event pool access during host removal + - futex: Ensure that futex address is aligned in handle_futex_death() + - perf probe: Fix getting the kernel map + - objtool: Move objtool_file struct off the stack + - irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp + - clocksource/drivers/riscv: Fix clocksource mask + - ALSA: ac97: Fix of-node refcount unbalance + - ext4: fix NULL pointer dereference while journal is aborted + - ext4: fix data corruption caused by unaligned direct AIO + - ext4: brelse all indirect buffer in ext4_ind_remove_space() + - media: v4l2-ctrls.c/uvc: zero v4l2_event + - Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() + - Bluetooth: Fix decrementing reference count twice in releasing socket + - Bluetooth: hci_ldisc: Initialize hci_dev before open() + - Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in + hci_uart_set_proto() + - drm/vkms: Fix flush_work() without INIT_WORK(). + - RDMA/cma: Rollback source IP address if failing to acquire device + - f2fs: fix to avoid deadlock of atomic file operations + - aio: simplify - and fix - fget/fput for io_submit() + - netfilter: ebtables: remove BUGPRINT messages + - loop: access lo_backing_file only when the loop device is Lo_bound + - x86/unwind: Handle NULL pointer calls better in frame unwinder + - x86/unwind: Add hardcoded ORC entry for NULL + - locking/lockdep: Add debug_locks check in __lock_downgrade() + - ALSA: hda - Record the current power state before suspend/resume calls + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - Linux 5.0.5 + + * hisi_sas updates for disco (LP: #1822385) + - scsi: hisi_sas: send primitive NOTIFY to SSP situation only + - scsi: hisi_sas: shutdown axi bus to avoid exception CQ returned + - scsi: hisi_sas: remove the check of sas_dev status in + hisi_sas_I_T_nexus_reset() + - scsi: hisi_sas: Remove unused parameter of function hisi_sas_alloc() + - scsi: hisi_sas: Reject setting programmed minimum linkrate > 1.5G + - scsi: hisi_sas: Fix losing directly attached disk when hot-plug + - scsi: hisi_sas: Correct memory allocation size for DQ debugfs + - scsi: hisi_sas: Some misc tidy-up + - scsi: hisi_sas: Fix to only call scsi_get_prot_op() for non-NULL scsi_cmnd + - scsi: hisi_sas: Add missing seq_printf() call in hisi_sas_show_row_32() + - scsi: hisi_sas: Add support for DIX feature for v3 hw + - scsi: hisi_sas: Add manual trigger for debugfs dump + - scsi: hisi_sas: change queue depth from 512 to 4096 + - scsi: hisi_sas: Issue internal abort on all relevant queues + - scsi: hisi_sas: Use pci_irq_get_affinity() for v3 hw as experimental + - scsi: hisi_sas: Do some more tidy-up + - scsi: hisi_sas: Change return variable type in phy_up_v3_hw() + - scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO + - scsi: hisi_sas: print PHY RX errors count for later revision of v3 hw + - scsi: hisi_sas: Set PHY linkrate when disconnected + - scsi: hisi_sas: Send HARD RESET to clear the previous affiliation of STP + target port + - scsi: hisi_sas: Change SERDES_CFG init value to increase reliability of + HiLink + - scsi: hisi_sas: Add softreset in hisi_sas_I_T_nexus_reset() + + * [Patch][Raven 2] kernel 5.0.0 cannot boot because of psp response + (LP: #1822267) + - drm/amdgpu/psp: Fix can't detect psp INVOKE command failed + - drm/amdgpu/psp: ignore psp response status + + * 3b080b2564287be91605bfd1d5ee985696e61d3c in ubuntu_btrfs_kernel_fixes + triggers system hang on i386 (LP: #1812845) + - btrfs: raid56: properly unmap parity page in finish_parity_scrub() + + * enable CONFIG_DRM_BOCHS (LP: #1795857) + - [Config] Reenable DRM_BOCHS as module + + * [Dell Precision 7530/5530 with Nvidia Quadro P1000] Live USB freezes or + cannot complete install when nouveau driver is loaded (crashing in GP100 + code) (LP: #1822026) + - SAUCE: drm/nouveau: Disable nouveau driver by default + + * Need to add Intel CML related pci-id's (LP: #1821863) + - drm/i915/cml: Add CML PCI IDS + - drm/i915/cml: Introduce Comet Lake PCH + + * ARM: Add support for the SDEI interface (LP: #1822005) + - ACPI / APEI: Don't wait to serialise with oops messages when panic()ing + - ACPI / APEI: Remove silent flag from ghes_read_estatus() + - ACPI / APEI: Switch estatus pool to use vmalloc memory + - ACPI / APEI: Make hest.c manage the estatus memory pool + - ACPI / APEI: Make estatus pool allocation a static size + - ACPI / APEI: Don't store CPER records physical address in struct ghes + - ACPI / APEI: Remove spurious GHES_TO_CLEAR check + - ACPI / APEI: Don't update struct ghes' flags in read/clear estatus + - ACPI / APEI: Generalise the estatus queue's notify code + - ACPI / APEI: Don't allow ghes_ack_error() to mask earlier errors + - ACPI / APEI: Move NOTIFY_SEA between the estatus-queue and NOTIFY_NMI + - ACPI / APEI: Switch NOTIFY_SEA to use the estatus queue + - KVM: arm/arm64: Add kvm_ras.h to collect kvm specific RAS plumbing + - arm64: KVM/mm: Move SEA handling behind a single 'claim' interface + - ACPI / APEI: Move locking to the notification helper + - ACPI / APEI: Let the notification helper specify the fixmap slot + - ACPI / APEI: Pass ghes and estatus separately to avoid a later copy + - ACPI / APEI: Make GHES estatus header validation more user friendly + - ACPI / APEI: Split ghes_read_estatus() to allow a peek at the CPER length + - ACPI / APEI: Only use queued estatus entry during in_nmi_queue_one_entry() + - ACPI / APEI: Use separate fixmap pages for arm64 NMI-like notifications + - firmware: arm_sdei: Add ACPI GHES registration helper + - ACPI / APEI: Add support for the SDEI GHES Notification type + + * CVE-2019-9857 + - inotify: Fix fsnotify_mark refcount leak in inotify_update_existing_watch() + + * scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery (LP: #1821408) + - scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery + + * Qualcomm Atheros QCA9377 wireless does not work (LP: #1818204) + - platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list + + * Lenovo ideapad 330-15ICH Wifi rfkill hard blocked (LP: #1811815) + - platform/x86: ideapad: Add ideapad 330-15ICH to no_hw_rfkill + + * hid-sensor-hub spamming dmesg in 4.20 (LP: #1818547) + - HID: Increase maximum report size allowed by hid_field_extract() + + * [disco] [5.0.0-7.8] can't mount guest cifs share (LP: #1821053) + - cifs: allow guest mounts to work for smb3.11 + - SMB3: Fix SMB3.1.1 guest mounts to Samba + + * Add HiSilicon SoC quirk for cpufreq (LP: #1821620) + - ACPI / CPPC: Add a helper to get desired performance + - cpufreq / cppc: Work around for Hisilicon CPPC cpufreq + + * Disco update: v5.0.4 upstream stable release (LP: #1821607) + - 9p: use inode->i_lock to protect i_size_write() under 32-bit + - 9p/net: fix memory leak in p9_client_create + - ASoC: fsl_esai: fix register setting issue in RIGHT_J mode + - ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() + - ASoC: codecs: pcm186x: Fix energysense SLEEP bit + - iio: adc: exynos-adc: Fix NULL pointer exception on unbind + - iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 + - mei: hbm: clean the feature flags on link reset + - mei: bus: move hw module get/put to probe/release + - stm class: Prevent division by zero + - stm class: Fix an endless loop in channel allocation + - crypto: caam - fix hash context DMA unmap size + - crypto: ccree - fix missing break in switch statement + - crypto: caam - fixed handling of sg list + - crypto: caam - fix DMA mapping of stack memory + - crypto: ccree - fix free of unallocated mlli buffer + - crypto: ccree - unmap buffer before copying IV + - crypto: ccree - don't copy zero size ciphertext + - crypto: cfb - add missing 'chunksize' property + - crypto: cfb - remove bogus memcpy() with src == dest + - crypto: ofb - fix handling partial blocks and make thread-safe + - crypto: ahash - fix another early termination in hash walk + - crypto: rockchip - fix scatterlist nents error + - crypto: rockchip - update new iv to device in multiple operations + - dax: Flush partial PMDs correctly + - nfit: Fix nfit_intel_shutdown_status() command submission + - nfit: acpi_nfit_ctl(): Check out_obj->type in the right place + - acpi/nfit: Fix bus command validation + - nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot + - nfit/ars: Attempt short-ARS even in the no_init_ars case + - libnvdimm/label: Clear 'updating' flag after label-set update + - libnvdimm, pfn: Fix over-trim in trim_pfn_device() + - libnvdimm/pmem: Honor force_raw for legacy pmem regions + - libnvdimm: Fix altmap reservation size calculation + - fix cgroup_do_mount() handling of failure exits + - crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: aegis - fix handling chunked inputs + - crypto: arm/crct10dif - revert to C code for short inputs + - crypto: arm64/aes-neonbs - fix returning final keystream block + - crypto: arm64/crct10dif - revert to C code for short inputs + - crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: morus - fix handling chunked inputs + - crypto: pcbc - remove bogus memcpy()s with src == dest + - crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: testmgr - skip crc32c context test for ahash algorithms + - crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP + - crypto: x86/aesni-gcm - fix crash on empty plaintext + - crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP + - crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling + - crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine + - CIFS: Fix leaking locked VFS cache pages in writeback retry + - CIFS: Do not reset lease state to NONE on lease break + - CIFS: Do not skip SMB2 message IDs on send failures + - CIFS: Fix read after write for files with read caching + - smb3: make default i/o size for smb3 mounts larger + - tracing: Use strncpy instead of memcpy for string keys in hist triggers + - tracing: Do not free iter->trace in fail path of tracing_open_pipe() + - tracing/perf: Use strndup_user() instead of buggy open-coded version + - vmw_balloon: release lock on error in vmballoon_reset() + - xen: fix dom0 boot on huge systems + - ACPI / device_sysfs: Avoid OF modalias creation for removed device + - mmc: sdhci-esdhc-imx: fix HS400 timing issue + - mmc: renesas_sdhi: Fix card initialization failure in high speed mode + - mmc:fix a bug when max_discard is 0 + - spi: ti-qspi: Fix mmap read when more than one CS in use + - spi: pxa2xx: Setup maximum supported DMA transfer length + - spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch + - spi: spi-gpio: fix SPI_CS_HIGH capability + - regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 + - regulator: max77620: Initialize values for DT properties + - regulator: s2mpa01: Fix step values for some LDOs + - mt76: fix corrupted software generated tx CCMP PN + - clocksource/drivers/exynos_mct: Move one-shot check from tick clear to ISR + - clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown + - clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer + instability + - s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem + - s390/setup: fix early warning messages + - s390/virtio: handle find on invalid queue gracefully + - scsi: virtio_scsi: don't send sc payload with tmfs + - scsi: aacraid: Fix performance issue on logical drives + - scsi: sd: Optimal I/O size should be a multiple of physical block size + - scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock + - scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by firmware + - scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not + supported + - scsi: qla2xxx: Use complete switch scan for RSCN events + - fs/devpts: always delete dcache dentry-s in dput() + - splice: don't merge into linked buffers + - ovl: During copy up, first copy up data and then xattrs + - ovl: Do not lose security.capability xattr over metadata file copy-up + - m68k: Add -ffreestanding to CFLAGS + - Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() + - Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl + - btrfs: scrub: fix circular locking dependency warning + - btrfs: drop the lock on error in btrfs_dev_replace_cancel + - btrfs: ensure that a DUP or RAID1 block group has exactly two stripes + - btrfs: init csum_list before possible free + - Btrfs: fix corruption reading shared and compressed extents after hole + punching + - Btrfs: fix deadlock between clone/dedupe and rename + - soc: qcom: rpmh: Avoid accessing freed memory from batch API + - libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer + - irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table + - irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code + - x86/kprobes: Prohibit probing on optprobe template code + - cpufreq: kryo: Release OPP tables on module removal + - cpufreq: tegra124: add missing of_node_put() + - cpufreq: pxa2xx: remove incorrect __init annotation + - ext4: fix check of inode in swap_inode_boot_loader + - ext4: cleanup pagecache before swap i_data + - mm: hwpoison: fix thp split handing in soft_offline_in_use_page() + - mm/vmalloc: fix size check for remap_vmalloc_range_partial() + - mm/memory.c: do_fault: avoid usage of stale vm_area_struct + - kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv + - nvmem: core: don't check the return value of notifier chain call + - device property: Fix the length used in PROPERTY_ENTRY_STRING() + - intel_th: Don't reference unassigned outputs + - parport_pc: fix find_superio io compare code, should use equal test. + - i2c: tegra: fix maximum transfer size + - i2c: tegra: update maximum transfer size + - media: i2c: ov5640: Fix post-reset delay + - gpio: pca953x: Fix dereference of irq data in shutdown + - ext4: update quota information while swapping boot loader inode + - ext4: add mask of ext4 flags to swap + - ext4: fix crash during online resizing + - dma: Introduce dma_max_mapping_size() + - swiotlb: Introduce swiotlb_max_mapping_size() + - swiotlb: Add is_swiotlb_active() function + - PCI/ASPM: Use LTR if already enabled by platform + - PCI/DPC: Fix print AER status in DPC event handling + - PCI: qcom: Don't deassert reset GPIO during probe + - PCI: dwc: skip MSI init if MSIs have been explicitly disabled + - PCI: pci-bridge-emul: Create per-bridge copy of register behavior + - PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags + - IB/hfi1: Close race condition on user context disable and close + - IB/rdmavt: Fix loopback send with invalidate ordering + - IB/rdmavt: Fix concurrency panics in QP post_send and modify to error + - cxl: Wrap iterations over afu slices inside 'afu_list_lock' + - ext2: Fix underflow in ext2_max_size() + - clk: uniphier: Fix update register for CPU-gear + - clk: clk-twl6040: Fix imprecise external abort for pdmclk + - clk: samsung: exynos5: Fix possible NULL pointer exception on + platform_device_alloc() failure + - clk: samsung: exynos5: Fix kfree() of const memory on setting + driver_override + - clk: ingenic: Fix round_rate misbehaving with non-integer dividers + - clk: ingenic: Fix doc of ingenic_cgu_div_info + - usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() + - usb: typec: tps6598x: handle block writes separately with plain-I2C adapters + - dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit + - serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO + - serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart + - serial: 8250_pci: Fix number of ports for ACCES serial cards + - serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 + chip use the pci_pericom_setup() + - jbd2: clear dirty flag when revoking a buffer from an older transaction + - jbd2: fix compile warning when using JBUFFER_TRACE + - selinux: add the missing walk_size + len check in selinux_sctp_bind_connect + - security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock + - powerpc/32: Clear on-stack exception marker upon exception return + - powerpc/wii: properly disable use of BATs when requested. + - powerpc/powernv: Make opal log only readable by root + - powerpc/83xx: Also save/restore SPRG4-7 during suspend + - powerpc/kvm: Save and restore host AMR/IAMR/UAMOR + - powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit + - powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. instruction + - powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest + - powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning + - powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR + configuration + - powerpc/smp: Fix NMI IPI timeout + - powerpc/smp: Fix NMI IPI xmon timeout + - powerpc/traps: fix recoverability of machine check handling on book3s/32 + - powerpc/traps: Fix the message printed when stack overflows + - ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify + - arm64: Fix HCR.TGE status for NMI contexts + - arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals + - arm64: debug: Ensure debug handlers check triggering exception level + - arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 + - Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" + - ipmi_si: Fix crash when using hard-coded device + - ipmi_si: fix use-after-free of resource->name + - dm: fix to_sector() for 32bit + - dm integrity: limit the rate of error messages + - media: cx25840: mark pad sig_types to fix cx231xx init + - mfd: sm501: Fix potential NULL pointer dereference + - cpcap-charger: generate events for userspace + - cpuidle: governor: Add new governors to cpuidle_governors again + - NFS: Fix I/O request leakages + - NFS: Fix an I/O request leakage in nfs_do_recoalesce + - NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() + - nfsd: fix performance-limiting session calculation + - nfsd: fix memory corruption caused by readdir + - nfsd: fix wrong check in write_v4_end_grace() + - NFSv4.1: Reinitialise sequence results before retransmitting a request + - svcrpc: fix UDP on servers with lots of threads + - PM / wakeup: Rework wakeup source timer cancellation + - PM / OPP: Update performance state when freq == old_freq + - bcache: treat stale && dirty keys as bad keys + - bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata + - stable-kernel-rules.rst: add link to networking patch queue + - vt: perform safe console erase in the right order + - x86/unwind/orc: Fix ORC unwind table alignment + - perf intel-pt: Fix CYC timestamp calculation after OVF + - perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols + - perf auxtrace: Define auxtrace record alignment + - perf intel-pt: Fix overlap calculation for padding + - perf/x86/intel/uncore: Fix client IMC events return huge result + - perf intel-pt: Fix divide by zero when TSC is not available + - md: Fix failed allocation of md_register_thread + - x86/kvmclock: set offset for kvm unstable clock + - x86/ftrace: Fix warning and considate ftrace_jmp_replace() and + ftrace_call_replace() + - tpm/tpm_crb: Avoid unaligned reads in crb_recv() + - tpm: Unify the send callback behaviour + - rcu: Do RCU GP kthread self-wakeup from softirq and interrupt + - media: imx: prpencvf: Stop upstream before disabling IDMA channel + - media: lgdt330x: fix lock status reporting + - media: sun6i: Fix CSI regmap's max_register + - media: uvcvideo: Avoid NULL pointer dereference at the end of streaming + - media: vimc: Add vimc-streamer for stream control + - media: imx-csi: Input connections to CSI should be optional + - media: imx: csi: Disable CSI immediately after last EOF + - media: imx: csi: Stop upstream before disabling IDMA channel + - drm/fb-helper: generic: Fix drm_fbdev_client_restore() + - drm/radeon/evergreen_cs: fix missing break in switch statement + - drm/amd/powerplay: correct power reading on fiji + - drm/amd/display: don't call dm_pp_ function from an fpu block + - KVM: Call kvm_arch_memslots_updated() before updating memslots + - KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run + - KVM: VMX: Zero out *all* general purpose registers after VM-Exit + - KVM: x86/mmu: Detect MMIO generation wrap in any address space + - KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux + - KVM: nVMX: Sign extend displacements of VMX instr's mem operands + - KVM: nVMX: Apply addr size mask to effective address for VMX instructions + - KVM: nVMX: Ignore limit checks on VMX instructions using flat segments + - KVM: nVMX: Check a single byte for VMCS "launched" in nested early checks + - net: dsa: lantiq_gswip: fix use-after-free on failed probe + - net: dsa: lantiq_gswip: fix OF child-node lookups + - s390/setup: fix boot crash for machine without EDAT-1 + - SUNRPC: Prevent thundering herd when the socket is not connected + - SUNRPC: Fix up RPC back channel transmission + - SUNRPC: Respect RPC call timeouts when retrying transmission + - Linux 5.0.4 + - [Config] update configs for 5.0.4 stable update + + * New Intel Wireless-AC 9260 [8086:2526] card not correctly probed in Ubuntu + system (LP: #1821271) + - iwlwifi: add new card for 9260 series + + * [CONFIG] please enable highdpi font FONT_TER16x32 (LP: #1819881) + - [Config]: enable highdpi Terminus 16x32 font support + + * [SRU][B/B-OEM/C/D] Fix AMD IOMMU NULL dereference (LP: #1820990) + - iommu/amd: Fix NULL dereference bug in match_hid_uid + + * some codecs stop working after S3 (LP: #1820930) + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - ALSA: hda - Don't trigger jackpoll_work in azx_resume + + * tcm_loop.ko: move from modules-extra into main modules package + (LP: #1817786) + - [Packaging] move tcm_loop.lo to main linux-modules package + + * C++ demangling support missing from perf (LP: #1396654) + - [Packaging] fix a mistype + + * r8169 doesn't get woken up by ethernet cable plugging, no PME generated + (LP: #1817676) + - PCI: pciehp: Disable Data Link Layer State Changed event on suspend + + * Disco update: v5.0.3 upstream stable release (LP: #1821074) + - connector: fix unsafe usage of ->real_parent + - fou, fou6: avoid uninit-value in gue_err() and gue6_err() + - gro_cells: make sure device is up in gro_cells_receive() + - ipv4/route: fail early when inet dev is missing + - l2tp: fix infoleak in l2tp_ip6_recvmsg() + - lan743x: Fix RX Kernel Panic + - lan743x: Fix TX Stall Issue + - net: hsr: fix memory leak in hsr_dev_finalize() + - net/hsr: fix possible crash in add_timer() + - net: sit: fix UBSAN Undefined behaviour in check_6rd + - net/x25: fix use-after-free in x25_device_event() + - net/x25: reset state in x25_connect() + - pptp: dst_release sk_dst_cache in pptp_sock_destruct + - ravb: Decrease TxFIFO depth of Q3 and Q2 to one + - route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race + - rxrpc: Fix client call queueing, waiting for channel + - sctp: remove sched init from sctp_stream_init + - tcp: do not report TCP_CM_INQ of 0 for closed connections + - tcp: Don't access TCP_SKB_CB before initializing it + - tcp: handle inet_csk_reqsk_queue_add() failures + - vxlan: Fix GRO cells race condition between receive and link delete + - vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() + - net/mlx4_core: Fix reset flow when in command polling mode + - net/mlx4_core: Fix locking in SRIOV mode when switching between events and + polling + - net/mlx4_core: Fix qp mtt size calculation + - net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports + - vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock + - net: sched: flower: insert new filter to idr after setting its mask + - f2fs: wait on atomic writes to count F2FS_CP_WB_DATA + - perf/x86: Fixup typo in stub functions + - ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against + Liquid Saffire 56 + - ALSA: firewire-motu: fix construction of PCM frame for capture direction + - ALSA: hda: Extend i915 component bind timeout + - ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 + - ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 + - ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone + - ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with + ALC255 + - perf/x86/intel: Fix memory corruption + - perf/x86/intel: Make dev_attr_allow_tsx_force_abort static + - It's wrong to add len to sector_nr in raid10 reshape twice + - drm: Block fb changes for async plane updates + - Linux 5.0.3 + + * Disco update: v5.0.2 upstream stable release (LP: #1820318) + - media: uvcvideo: Fix 'type' check leading to overflow + - Input: wacom_serial4 - add support for Wacom ArtPad II tablet + - Input: elan_i2c - add id for touchpad found in Lenovo s21e-20 + - iscsi_ibft: Fix missing break in switch statement + - scsi: aacraid: Fix missing break in switch statement + - x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub + - arm64: dts: zcu100-revC: Give wifi some time after power-on + - arm64: dts: hikey: Give wifi some time after power-on + - arm64: dts: hikey: Revert "Enable HS200 mode on eMMC" + - ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid X2/U3 + - ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU + - ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4 + - drm: disable uncached DMA optimization for ARM and arm64 + - media: Revert "media: rc: some events are dropped by userspace" + - Revert "PCI/PME: Implement runtime PM callbacks" + - bpf: Stop the psock parser before canceling its work + - gfs2: Fix missed wakeups in find_insert_glock + - staging: erofs: keep corrupted fs from crashing kernel in erofs_namei() + - staging: erofs: compressed_pages should not be accessed again after freed + - scripts/gdb: replace flags (MS_xyz -> SB_xyz) + - ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom + - perf/x86/intel: Make cpuc allocations consistent + - perf/x86/intel: Generalize dynamic constraint creation + - x86: Add TSX Force Abort CPUID/MSR + - perf/x86/intel: Implement support for TSX Force Abort + - Linux 5.0.2 + + * Linux security module stacking support + - LSM: Introduce LSM_FLAG_LEGACY_MAJOR + - LSM: Provide separate ordered initialization + - LSM: Plumb visibility into optional "enabled" state + - LSM: Lift LSM selection out of individual LSMs + - LSM: Build ordered list of LSMs to initialize + - LSM: Introduce CONFIG_LSM + - LSM: Introduce "lsm=" for boottime LSM selection + - LSM: Tie enabling logic to presence in ordered list + - LSM: Prepare for reorganizing "security=" logic + - LSM: Refactor "security=" in terms of enable/disable + - LSM: Separate idea of "major" LSM from "exclusive" LSM + - apparmor: Remove SECURITY_APPARMOR_BOOTPARAM_VALUE + - selinux: Remove SECURITY_SELINUX_BOOTPARAM_VALUE + - LSM: Add all exclusive LSMs to ordered initialization + - LSM: Split LSM preparation from initialization + - LoadPin: Initialize as ordered LSM + - Yama: Initialize as ordered LSM + - LSM: Introduce enum lsm_order + - capability: Initialize as LSM_ORDER_FIRST + - procfs: add smack subdir to attrs + - Smack: Abstract use of cred security blob + - SELinux: Abstract use of cred security blob + - SELinux: Remove cred security blob poisoning + - SELinux: Remove unused selinux_is_enabled + - AppArmor: Abstract use of cred security blob + - TOMOYO: Abstract use of cred security blob + - Infrastructure management of the cred security blob + - SELinux: Abstract use of file security blob + - Smack: Abstract use of file security blob + - LSM: Infrastructure management of the file security + - SELinux: Abstract use of inode security blob + - Smack: Abstract use of inode security blob + - LSM: Infrastructure management of the inode security + - LSM: Infrastructure management of the task security + - SELinux: Abstract use of ipc security blobs + - Smack: Abstract use of ipc security blobs + - LSM: Infrastructure management of the ipc security blob + - TOMOYO: Update LSM flags to no longer be exclusive + - LSM: generalize flag passing to security_capable + - LSM: Make lsm_early_cred() and lsm_early_task() local functions. + - LSM: Make some functions static + - apparmor: Adjust offset when accessing task blob. + - LSM: Ignore "security=" when "lsm=" is specified + - LSM: Update list of SECURITYFS users in Kconfig + - apparmor: delete the dentry in aafs_remove() to avoid a leak + - apparmor: fix double free when unpack of secmark rules fails + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Limit calls to certain module hooks + - SAUCE: LSM: Special handling for secctx lsm hooks + - SAUCE: LSM: Specify which LSM to display with /proc/self/attr/display + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute" + - SAUCE: Revert "apparmor: fix checkpatch error in Parse secmark policy" + - SAUCE: Revert "apparmor: add #ifdef checks for secmark filtering" + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fix bad debug check in apparmor_secid_to_secctx()" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: Fix memory leak of rule on error exit path" + - SAUCE: Revert "apparmor: modify audit rule support to support profile + stacks" + - SAUCE: Revert "apparmor: Add support for audit rule filtering" + - SAUCE: Revert "apparmor: add the ability to get a task's secid" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - SAUCE: apparmor: add proc subdir to attrs + - SAUCE: apparmor: add an apparmorfs entry to access current attrs + - SAUCE: apparmor: update flags to no longer be exclusive + - SAUCE: update configs and annotations for LSM stacking + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_EARLY_PRINTK_USB_XDBC=y + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - [Config] CONFIG_RANDOM_TRUST_CPU=y + - [Config] refresh annotations for recent config changes + - ubuntu: vbox -- update to 6.0.4-dfsg-7 + - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for + upcoming platform" + + -- Seth Forshee Thu, 04 Apr 2019 14:49:59 -0500 + +linux (5.0.0-8.9) disco; urgency=medium + + * linux: 5.0.0-8.9 -proposed tracker (LP: #1819759) + + * hisi_sas: add debugfs support (LP: #1819500) + - scsi: hisi_sas: Create root and device debugfs directories + - scsi: hisi_sas: Alloc debugfs snapshot buffer memory for all registers + - scsi: hisi_sas: Take debugfs snapshot for all regs + - scsi: hisi_sas: Debugfs global register create file and add file operations + - scsi: hisi_sas: Add debugfs for port registers + - scsi: hisi_sas: Add debugfs CQ file and add file operations + - scsi: hisi_sas: Add debugfs DQ file and add file operations + - scsi: hisi_sas: Add debugfs IOST file and add file operations + - scsi: hisi_sas: No need to check return value of debugfs_create functions + - scsi: hisi_sas: Fix type casting and missing static qualifier in debugfs + code + - scsi: hisi_sas: Add debugfs ITCT file and add file operations + + * [disco] hns driver updates from 5.1 merge window (LP: #1819535) + - net: hns: Use struct_size() in devm_kzalloc() + - net: hns3: modify enet reinitialization interface + - net: hns3: remove unused member in struct hns3_enet_ring + - net: hns3: remove unnecessary hns3_adjust_tqps_num + - net: hns3: reuse reinitialization interface in the hns3_set_channels + - net: hns3: add interface hclge_tm_bp_setup + - net: hns3: modify parameter checks in the hns3_set_channels + - net: hns3: remove redundant codes in hclge_knic_setup + - net: hns3: fix user configuration loss for ethtool -L + - net: hns3: adjust the use of alloc_tqps and num_tqps + - net: hns3: fix wrong combined count returned by ethtool -l + - net: hns3: do reinitialization while ETS configuration changed + - net: hns3: add HNAE3_RESTORE_CLIENT interface in enet module + - net: hns3: add calling roce callback function when link status change + - net: hns3: add rx multicast packets statistic + - net: hns3: refactor the statistics updating for netdev + - net: hns3: fix rss configuration lost problem when setting channel + - net: hns3: fix for shaper not setting when TC num changes + - net: hns3: fix bug of ethtool_ops.get_channels for VF + - net: hns3: clear param in ring when free ring + - net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED + - net: hns3: do not return GE PFC setting err when initializing + - net: hns3: add ETS TC weight setting in SSU module + - net: hns3: add statistics for PFC frames and MAC control frames + - net: hns3: fix PFC not setting problem for DCB module + - net: hns3: don't update packet statistics for packets dropped by hardware + - net: hns3: clear pci private data when unload hns3 driver + - net: hns3: add error handling in hclge_ieee_setets + - net: hns3: fix return value handle issue for hclge_set_loopback() + - net: hns3: fix broadcast promisc issue for revision 0x20 + - net: hns3: After setting the loopback, add the status of getting MAC + - net: hns3: do reinitialization while mqprio configuration changed + - net: hns3: remove dcb_ops->map_update in hclge_dcb + - net: hns3: call hns3_nic_set_real_num_queue with netdev down + - net: hns3: add 8 BD limit for tx flow + - net: hns3: add initialization for nic state + - net: hns3: don't allow vf to enable promisc mode + - net: hns3: reuse the definition of l3 and l4 header info union + - net: hns3: fix VF dump register issue + - net: hns3: use the correct interface to stop|open port + - net: hns3: change hnae3_register_ae_dev() to int + - net: hns3: only support tc 0 for VF + - net: hns3: Fix NULL deref when unloading driver + - net: hns3: fix netif_napi_del() not do problem when unloading + - net: hns3: fix for rss result nonuniform + - net: hns3: fix improper error handling in the hclge_init_ae_dev() + - net: hns3: fix an issue for hclgevf_ae_get_hdev + - net: hns3: stop sending keep alive msg to PF when VF is resetting + - net: hns3: keep flow director state unchanged when reset + - net: hns3: Check for allocation failure + - net: hns3: fix a code style issue for hns3_update_new_int_gl() + - net: hns3: fix an issue for hns3_update_new_int_gl + - net: hns3: Modify parameter type from int to bool in set_gro_en + - net: hns3: code optimization for hclge_rx_buffer_calc + - net: hns3: add hclge_cmd_check_retval() to parse comman's return value + - net: hns3: move some set_bit statement into hclge_prepare_mac_addr + - net: hns3: fix a wrong checking in the hclge_tx_buffer_calc() + - net: hns3: fix the problem that the supported port is empty + - net: hns3: optimize the maximum TC macro + - net: hns3: don't allow user to change vlan filter state + - net: hns3: modify the upper limit judgment condition + - net: hns3: MAC table entry count function increases operation 0 value + protection measures + - net: hns3: make function hclge_set_all_vf_rst() static + - net: hns3: add pointer checking at the beginning of the exported functions. + - net: hns3: Check variable is valid before assigning it to another + - net: hns3: convert mac advertize and supported from u32 to link mode + - net: hns3: fix port info query issue for copper port + - net: hns3: modify print message of ssu common ecc errors + - net: hns3: some bugfix of ppu(rcb) ras errors + - net: hns3: enable 8~11th bit of mac common msi-x error + - net: hns3: fix 6th bit of ppp mpf abnormal errors + - net: hns3: Record VF unicast and multicast tables + - net: hns3: Record VF vlan tables + - net: hns3: uninitialize command queue while unloading PF driver + - net: hns3: clear command queue's registers when unloading VF driver + - net: hns3: add xps setting support for hns3 driver + - net: hns3: avoid mult + div op in critical data path + - net: hns3: limit some variable scope in critical data path + - net: hns3: remove some ops in struct hns3_nic_ops + - net: hns3: add unlikely for error handling in data path + - net: hns3: replace hnae3_set_bit and hnae3_set_field in data path + - net: hns3: remove hnae3_get_bit in data path + - net: hns3: add support to config depth for tx|rx ring separately + - net: hns3: enable VF VLAN filter for each VF when initializing + - net: hns3: fix get VF RSS issue + - net: hns3: fix setting of the hns reset_type for rdma hw errors + - net: hns3: fix improper error handling for hns3_client_start + - net: hns: use struct_size() in devm_kzalloc() + - net: hns3: Fix a logical vs bitwise typo + - net: hns3: add dma_rmb() for rx description + - net: hns3: fix to stop multiple HNS reset due to the AER changes + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms-build -- support building against packages in PPAs + - [Packaging] dkms-build: do not redownload files on subsequent passes + - [Packaging] dkms-build -- elide partial Built-Using information + - [Packaging] dkms-build -- remove retpoline data from final binary packages + - [Packaging] dkms-build--nvidia* -- check gcc version against primary build + - [Packaging] dkms-build -- add support for unversioned overrides + - [Packaging] dkms-build--nvidia-* -- convert to generic -N form + - [Packaging] fix-filenames -- handle exact string removal + - [Packaging] dkms-build--nvidia-N -- remove GCC versions + + * Disco update: v5.0.1 upstream stable release (LP: #1819515) + - cpufreq: Use struct kobj_attribute instead of struct global_attr + - staging: erofs: fix mis-acted TAIL merging behavior + - binder: create node flag to request sender's security context + - USB: serial: option: add Telit ME910 ECM composition + - USB: serial: cp210x: add ID for Ingenico 3070 + - USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485 + - driver core: Postpone DMA tear-down until after devres release + - staging: erofs: fix fast symlink w/o xattr when fs xattr is on + - staging: erofs: fix memleak of inode's shared xattr array + - staging: erofs: fix race of initializing xattrs of a inode at the same time + - staging: erofs: fix illegal address access under memory pressure + - staging: comedi: ni_660x: fix missing break in switch statement + - staging: wilc1000: fix to set correct value for 'vif_num' + - staging: android: ion: fix sys heap pool's gfp_flags + - staging: android: ashmem: Don't call fallocate() with ashmem_mutex held. + - staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex + held. + - ip6mr: Do not call __IP6_INC_STATS() from preemptible context + - net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for new + DSA framework + - net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in + mv88e6xxx_port_set_duplex + - net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family + - net: mscc: Enable all ports in QSGMII + - net: sched: put back q.qlen into a single location + - net-sysfs: Fix mem leak in netdev_register_kobject + - qmi_wwan: Add support for Quectel EG12/EM12 + - sctp: call iov_iter_revert() after sending ABORT + - team: Free BPF filter when unregistering netdev + - tipc: fix RDM/DGRAM connect() regression + - x86/CPU/AMD: Set the CPB bit unconditionally on F17h + - x86/boot/compressed/64: Do not read legacy ROM on EFI system + - tracing: Fix event filters and triggers to handle negative numbers + - xhci: tegra: Prevent error pointer dereference + - usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on + INTEL_SUNRISEPOINT_LP_XHCI + - applicom: Fix potential Spectre v1 vulnerabilities + - alpha: wire up io_pgetevents system call + - MIPS: irq: Allocate accurate order pages for irq stack + - aio: Fix locking in aio_poll() + - xtensa: fix get_wchan + - gnss: sirf: fix premature wakeup interrupt enable + - USB: serial: cp210x: fix GPIO in autosuspend + - Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK to + config" + - Revert "selftests: firmware: remove use of non-standard diff -Z option" + - selftests: firmware: fix verify_reqs() return value + - Bluetooth: btrtl: Restore old logic to assume firmware is already loaded + - Bluetooth: Fix locking in bt_accept_enqueue() for BH context + - Linux 5.0.1 + + * sky2 ethernet card doesn't work after returning from suspend + (LP: #1807259) // sky2 ethernet card link not up after suspend + (LP: #1809843) // Disco update: v5.0.1 upstream stable release + (LP: #1819515) + - sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 + + * tls selftest failures/hangs on i386 (LP: #1813607) + - [Config] CONFIG_TLS=n for i386 + + * CVE-2019-8980 + - exec: Fix mem leak in kernel_read_file + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Use 'ipproto ipv6-icmp' to match ICMPv6 headers + - [Config] enable nvidia build + - [Config] update gcc version to 8.3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: selftests: pmtu: disable accept_dad for tests" + + -- Thadeu Lima de Souza Cascardo Tue, 12 Mar 2019 16:15:44 -0300 + +linux (5.0.0-7.8) disco; urgency=medium + + * linux: 5.0.0-7.8 -proposed tracker (LP: #1818519) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * unnecessary request_queue freeze (LP: #1815733) + - block: avoid setting nr_requests to current value + - block: avoid setting none scheduler if it's already none + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on xfail + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0 + + -- Seth Forshee Mon, 04 Mar 2019 08:46:10 -0600 + +linux (5.0.0-6.7) disco; urgency=medium + + * linux: 5.0.0-6.7 -proposed tracker (LP: #1817585) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - [Packaging] resync getabis + + * installer does not support iSCSI iBFT (LP: #1817321) + - d-i: add iscsi_ibft to scsi-modules + + * Silent "Unknown key" message when pressing keyboard backlight hotkey + (LP: #1817063) + - platform/x86: dell-wmi: Ignore new keyboard backlight change event + + * Fix I219 doesn't get woken up after plugging ethernet cable (LP: #1817058) + - e1000e: Disable runtime PM on CNP+ + + * efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted (LP: #1814982) + - efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted + + * CVE-2019-3460 + - Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt + + * CVE-2019-3459 + - Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer + + * kernel net tls selftest fails on 5.0 (LP: #1816716) + - SAUCE: Revert "selftests/tls: Add test for recv(PEEK) spanning across + multiple records" + + * Please enable CONFIG_DMA_CMA=y on arm64 (LP: #1803206) + - [Config] annotations -- enforce CONFIG_DMA_CMA and update notes + + * [19.04 FEAT] [LS1801] PCI Virtual function enablement (LP: #1814684) + - s390/pci: map IOV resources + - s390/pci: improve bar check + + * glibc 2.28-0ubuntu1 ADT test failure with linux 5.0.0-1.2 (LP: #1813060) + - SAUCE: prevent a glibc test failure when looking for obsolete types on + headers + + * Miscellaneous Ubuntu changes + - [Config] Enforce CONFIG_ZCRYPT_MULTIDEVNODES in annotations + - SAUCE: selftests: pmtu: disable accept_dad for tests + - SAUCE: arm64: add kernel config option to lock down when in Secure Boot mode + - SAUCE: selftests: net: Make test for VXLAN underlay in non-default VRF an + expected failure + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc8 + + -- Seth Forshee Mon, 25 Feb 2019 09:37:36 -0600 + +linux (5.0.0-5.6) disco; urgency=medium + + * [ALSA] [PATCH] System76 darp5 and oryp5 fixups (LP: #1815831) + - ALSA: hda/realtek - Headset microphone and internal speaker support for + System76 oryp5 + + * Miscellaneous Ubuntu changes + - [Config] Fix aufs menus in annotations file + - [Config] CONFIG_SAMPLE_TRACE_PRINTK=m + - [Config] Update annotations based on configs + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc7 + + -- Seth Forshee Mon, 18 Feb 2019 10:04:11 +0100 + +linux (5.0.0-4.5) disco; urgency=medium + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [Packaging] Allow overlay of config annotations (LP: #1752072) + - [Packaging] config-check: Add an include directive + + * Miscellaneous Ubuntu changes + - hio -- stub out BIOVEC_PHYS_MERGEABLE for 4.20+ + - hio -- replace use of do_gettimeofday() + - hio -- part_round_stats() removed in 5.0 + - hio -- device_add_disk() grew a 'groups' argument in 4.20 + - enable hio build + - Revert "UBUNTU: [Packaging] autoreconstruct -- base tag is always primary + mainline version" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc6 + + -- Seth Forshee Tue, 12 Feb 2019 08:15:32 -0600 + +linux (5.0.0-3.4) disco; urgency=medium + + * CONFIG_TEST_BPF is disabled (LP: #1813955) + - [Config]: Reenable TEST_BPF + + * Ignore "incomplete report" from Elan touchpanels (LP: #1813733) + - HID: i2c-hid: Ignore input report if there's no data present on Elan + touchpanels + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: fix "from" match test in fib_rule_tests.sh + - [Config] CONFIG_PCMCIA=n for arm64 and s390x + - [Config] CONFIG_SERIAL_SC16IS7XX=n for s390x + - [Config] disable I2C TPM drivers for s390x + - [Config] CONFIG_RAPIDIO=n for s390x + - [Config] CONFIG_DMADEVICES=n for s390x + - [Config] disable gpio drivers for s390x + - [Config] CONFIG_SENSORS_OCC_P8_I2C=m for ppc64el + - [Config] disable I2C hardware drivers for s390x + - [Config] CONFIG_I3C=n for s390x + - [Config] CONFIG_SERIO=n for s390x + - [Config] disable misc drivers for s390x + - [Config] disable EEPROM drivers for s390x + - [Config] disable MFD drivers for s390x + - [Config] CONFIG_NVMEM=n for s390x + - [Config] CONFIG_MLXSW_I2C=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROCHIP=n for s390x + - [Config] CONFIG_PPP=n for s390x + - [Config] CONFIG_PCCARD=n for s390x + - [Config] CONFIG_PCI_MESON=y + - [Config] CONFIG_SCSI_MYRB=n for s390x + - [Config] CONFIG_REGULATOR=n for s390x + - [Config] CONFIG_ZIIRAVE_WATCHDOG=n for s390x + - [Config] CONFIG_NCSI_OEM_CMD_GET_MAC=y + - [Config] update annotations following config review + - [Packaging] remove handoff check for uefi signing + - [Packaging] decompress gzipped efi images in signing tarball + - vbox-update: allow leading whitespace when fixing up KERN_DIR + - ubuntu: vbox -- update to 6.0.4-dfsg-3 + - vbox: remove remount check in sf_read_super_aux() + - enable vbox build + - [Config] CONFIG_ANDROID_BINDER_DEVICES="" + - SAUCE: import aufs driver + - [Config]: Enable aufs + - [Config] relocate aufs annotations to menu + - [Config] remove unmatched configs from annotations + - [Config] fix up abi for removed modules + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - SAUCE: (efi-lockdown) Move EFI signature blob parser to shared location + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - [Config] (efi-lockdown) enable importing of efi certificates for module sig + verification + + * Miscellaneous upstream changes + - binder: fix CONFIG_ANDROID_BINDER_DEVICES + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc5 + + -- Seth Forshee Tue, 05 Feb 2019 14:26:12 -0600 + +linux (5.0.0-2.3) disco; urgency=medium + + * kernel oops in bcache module (LP: #1793901) + - SAUCE: bcache: never writeback a discard operation + + * Enable sound card power saving by default (LP: #1804265) + - [Config] CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: selftests: disable some failing networking tests" + - SAUCE: ashmem: turn into module + - SAUCE: binder: turn into module + - SAUCE: binder: give binder_alloc its own debug mask file + - [Config] enable binder and ashmem as modules + - SAUCE: selftests: net: replace AF_MAX with INT_MAX in socket.c + - SAUCE: selftests/ftrace: Fix tab expansion in trace_marker snapshot trigger + test + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc4 + + -- Seth Forshee Tue, 29 Jan 2019 06:57:32 -0600 + +linux (5.0.0-1.2) disco; urgency=medium + + * Fix non-working QCA Rome Bluetooth after S3 (LP: #1812812) + - USB: Add new USB LPM helpers + - USB: Consolidate LPM checks to avoid enabling LPM twice + + * bluetooth controller not detected with 4.15 kernel (LP: #1810797) + - SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK + - [Config] arm64: snapdragon: BT_QCOMSMD_HACK=y + + * [19.04 FEAT| Enable virtio-gpu for s390x (LP: #1799467) + - [Config] enable virtio-gpu for s390x + + * Crash on "ip link add foo type ipip" (LP: #1811803) + - SAUCE: fan: Fix NULL pointer dereference + + * Fix not working Goodix touchpad (LP: #1811929) + - HID: i2c-hid: Disable runtime PM on Goodix touchpad + + * Miscellaneous Ubuntu changes + - update dkms package versions + - enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc3 + + -- Seth Forshee Tue, 22 Jan 2019 13:56:17 -0600 + +linux (5.0.0-0.1) disco; urgency=medium + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms -- add per package post-process step + - [Packaging] dkms -- switch to a consistent build prefix length and strip + - [Packaging] nvidia -- build and sign nvidia packages and ship signatures + - [Packaging] nvidia -- make nvidia package version explicit + + * Add support for ALC3277 codec on new Dell edge gateways (LP: #1807334) + - [Config] CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m + + * RTL8822BE WiFi Disabled in Kernel 4.18.0-12 (LP: #1806472) + - [Config] CONFIG_RTLWIFI_DEBUG_ST=n + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + - SAUCE: import aufs driver + - update dkms package versions + - [Config] disable aufs config options + - [Config] disable nvidia build + - update dropped.txt + - [Packaging] disable nvidia dkms builds for mainline + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - [Config] set config options for efi lockdown + - Revert "UBUNTU: SAUCE: import aufs driver" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc2 + + -- Seth Forshee Thu, 17 Jan 2019 12:31:29 -0600 + +linux (5.0.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Wed, 16 Jan 2019 14:48:05 -0600 + +linux (4.20.0-2.3) disco; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.20 + + -- Seth Forshee Thu, 03 Jan 2019 12:11:43 -0600 + +linux (4.20.0-1.2) disco; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Power leakage at S5 with Qualcomm Atheros QCA9377 802.11ac Wireless Network + Adapter (LP: #1805607) + - SAUCE: ath10k: provide reset function for QCA9377 chip + + * zfs/spl build in conjunction with the kernel from DKMS source (LP: #1807378) + - [Packaging] dkms -- dkms package build packaging support + - [Packaging] dkms -- save build objects artifacts for validation + - [Packaging] dkms -- add general Built-Using: support + - [Packaging] simplify Provides comma handling + - [Packaging] zfs/spl -- remove packaging support for incorporated source + - [Packaging] zfs/spl -- remove incorporated source + - [Packaging] zfs/spl -- build via dkms + - [Packaging] zfs/spl -- make zfs package version explicit + - [Packaging] update-version-dkms -- sync archive versions to package + + * Miscellaneous Ubuntu changes + - [Packaging] update-version-dkms -- fix getting distrbution from changelog + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc6 + + -- Seth Forshee Tue, 11 Dec 2018 11:33:08 -0600 + +linux (4.20.0-0.1) disco; urgency=medium + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - Revert "ovl: relax permission checking on underlying layers" + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.22-dfsg-2 + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc5 + + -- Seth Forshee Fri, 07 Dec 2018 07:13:42 -0600 + +linux (4.20.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 06 Dec 2018 10:20:19 -0600 + +linux (4.19.0-8.9) disco; urgency=medium + + * linux: 4.19.0-8.9 -proposed tracker (LP: #1806952) + + * Workaround CSS timeout on AMD SNPS 3.0 xHC (LP: #1806838) + - xhci: workaround CSS timeout on AMD SNPS 3.0 xHC + + * Fix Intel I210 doesn't work when ethernet cable gets plugged (LP: #1806818) + - igb: Fix an issue that PME is not enabled during runtime suspend + + * The line-out on the Dell Dock station can't work (LP: #1806532) + - ALSA: usb-audio: Add vendor and product name for Dell WD19 Dock + + * CVE-2018-19407 + - KVM: X86: Fix scan ioapic use-before-initialization + + * PC SN720 NVMe WDC 256GB consumes more power in S2Idle than during long idle + (LP: #1805775) + - SAUCE: pci/nvme: prevent WDC PC SN720 NVMe from entering D3 and being + disabled + + * Disco update: 4.19.6 upstream stable release (LP: #1806909) + - HID: steam: remove input device when a hid client is running. + - efi/libstub: arm: support building with clang + - usb: core: Fix hub port connection events lost + - usb: dwc3: gadget: fix ISOC TRB type on unaligned transfers + - usb: dwc3: gadget: Properly check last unaligned/zero chain TRB + - usb: dwc3: core: Clean up ULPI device + - usb: dwc3: Fix NULL pointer exception in dwc3_pci_remove() + - xhci: Fix leaking USB3 shared_hcd at xhci removal + - xhci: handle port status events for removed USB3 hcd + - xhci: Add check for invalid byte size error when UAS devices are connected. + - usb: xhci: fix uninitialized completion when USB3 port got wrong status + - usb: xhci: fix timeout for transition from RExit to U0 + - xhci: Add quirk to workaround the errata seen on Cavium Thunder-X2 Soc + - usb: xhci: Prevent bus suspend if a port connect change or polling state is + detected + - ALSA: oss: Use kvzalloc() for local buffer allocations + - MAINTAINERS: Add Sasha as a stable branch maintainer + - Documentation/security-bugs: Clarify treatment of embargoed information + - Documentation/security-bugs: Postpone fix publication in exceptional cases + - mmc: sdhci-pci: Try "cd" for card-detect lookup before using NULL + - mmc: sdhci-pci: Workaround GLK firmware failing to restore the tuning value + - gpio: don't free unallocated ida on gpiochip_add_data_with_key() error path + - iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE + - iwlwifi: mvm: support sta_statistics() even on older firmware + - iwlwifi: mvm: fix regulatory domain update when the firmware starts + - iwlwifi: mvm: don't use SAR Geo if basic SAR is not used + - brcmfmac: fix reporting support for 160 MHz channels + - opp: ti-opp-supply: Dynamically update u_volt_min + - opp: ti-opp-supply: Correct the supply in _get_optimal_vdd_voltage call + - tools/power/cpupower: fix compilation with STATIC=true + - v9fs_dir_readdir: fix double-free on p9stat_read error + - selinux: Add __GFP_NOWARN to allocation at str_read() + - Input: synaptics - avoid using uninitialized variable when probing + - bfs: add sanity check at bfs_fill_super() + - sctp: clear the transport of some out_chunk_list chunks in + sctp_assoc_rm_peer + - gfs2: Don't leave s_fs_info pointing to freed memory in init_sbd + - llc: do not use sk_eat_skb() + - mm: don't warn about large allocations for slab + - mm/memory.c: recheck page table entry with page table lock held + - tcp: do not release socket ownership in tcp_close() + - drm/fb-helper: Blacklist writeback when adding connectors to fbdev + - drm/amdgpu: Add missing firmware entry for HAINAN + - drm/vc4: Set ->legacy_cursor_update to false when doing non-async updates + - drm/amdgpu: Fix oops when pp_funcs->switch_power_profile is unset + - drm/i915: Disable LP3 watermarks on all SNB machines + - drm/ast: change resolution may cause screen blurred + - drm/ast: fixed cursor may disappear sometimes + - drm/ast: Remove existing framebuffers before loading driver + - can: flexcan: Unlock the MB unconditionally + - can: dev: can_get_echo_skb(): factor out non sending code to + __can_get_echo_skb() + - can: dev: __can_get_echo_skb(): replace struct can_frame by canfd_frame to + access frame length + - can: dev: __can_get_echo_skb(): Don't crash the kernel if can_priv::echo_skb + is accessed out of bounds + - can: dev: __can_get_echo_skb(): print error message, if trying to echo non + existing skb + - can: rx-offload: introduce can_rx_offload_get_echo_skb() and + can_rx_offload_queue_sorted() functions + - can: rx-offload: rename can_rx_offload_irq_queue_err_skb() to + can_rx_offload_queue_tail() + - can: flexcan: use can_rx_offload_queue_sorted() for flexcan_irq_bus_*() + - can: flexcan: handle tx-complete CAN frames via rx-offload infrastructure + - can: raw: check for CAN FD capable netdev in raw_sendmsg() + - can: hi311x: Use level-triggered interrupt + - can: flexcan: Always use last mailbox for TX + - can: flexcan: remove not needed struct flexcan_priv::tx_mb and struct + flexcan_priv::tx_mb_idx + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - IB/hfi1: Eliminate races in the SDMA send error path + - fsnotify: generalize handling of extra event flags + - fanotify: fix handling of events on child sub-directory + - pinctrl: meson: fix pinconf bias disable + - pinctrl: meson: fix gxbb ao pull register bits + - pinctrl: meson: fix gxl ao pull register bits + - pinctrl: meson: fix meson8 ao pull register bits + - pinctrl: meson: fix meson8b ao pull register bits + - tools/testing/nvdimm: Fix the array size for dimm devices. + - scsi: lpfc: fix remoteport access + - scsi: hisi_sas: Remove set but not used variable 'dq_list' + - KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE + - cpufreq: imx6q: add return value check for voltage scale + - rtc: cmos: Do not export alarm rtc_ops when we do not support alarms + - rtc: pcf2127: fix a kmemleak caused in pcf2127_i2c_gather_write + - crypto: simd - correctly take reqsize of wrapped skcipher into account + - floppy: fix race condition in __floppy_read_block_0() + - powerpc/io: Fix the IO workarounds code to work with Radix + - sched/fair: Fix cpu_util_wake() for 'execl' type workloads + - perf/x86/intel/uncore: Add more IMC PCI IDs for KabyLake and CoffeeLake CPUs + - block: copy ioprio in __bio_clone_fast() and bounce + - SUNRPC: Fix a bogus get/put in generic_key_to_expire() + - riscv: add missing vdso_install target + - RISC-V: Silence some module warnings on 32-bit + - drm/amdgpu: fix bug with IH ring setup + - kdb: Use strscpy with destination buffer size + - NFSv4: Fix an Oops during delegation callbacks + - powerpc/numa: Suppress "VPHN is not supported" messages + - efi/arm: Revert deferred unmap of early memmap mapping + - z3fold: fix possible reclaim races + - mm, memory_hotplug: check zone_movable in has_unmovable_pages + - tmpfs: make lseek(SEEK_DATA/SEK_HOLE) return ENXIO with a negative offset + - mm, page_alloc: check for max order in hot path + - dax: Avoid losing wakeup in dax_lock_mapping_entry + - include/linux/pfn_t.h: force '~' to be parsed as an unary operator + - tty: wipe buffer. + - tty: wipe buffer if not echoing data + - gfs2: Fix iomap buffer head reference counting bug + - rcu: Make need_resched() respond to urgent RCU-QS needs + - media: ov5640: Re-work MIPI startup sequence + - media: ov5640: Fix timings setup code + - media: ov5640: fix exposure regression + - media: ov5640: fix auto gain & exposure when changing mode + - media: ov5640: fix wrong binning value in exposure calculation + - media: ov5640: fix auto controls values when switching to manual mode + - Linux 4.19.6 + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] limit preparation to linux-libc-dev in headers + - [Packaging] commonise debhelper invocation + - [Packaging] ABI -- accumulate abi information at the end of the build + - [Packaging] buildinfo -- add basic build information + - [Packaging] buildinfo -- add firmware information to the flavour ABI + - [Packaging] buildinfo -- add compiler information to the flavour ABI + - [Packaging] buildinfo -- add buildinfo support to getabis + - [Packaging] getabis -- handle all known package combinations + - [Packaging] getabis -- support parsing a simple version + + * linux packages should own /usr/lib/linux/triggers (LP: #1770256) + - [Packaging] own /usr/lib/linux/triggers + + * Miscellaneous upstream changes + - blk-mq: fix corruption with direct issue + + -- Seth Forshee Wed, 05 Dec 2018 09:18:30 -0600 + +linux (4.19.0-7.8) disco; urgency=medium + + * linux: 4.19.0-7.8 -proposed tracker (LP: #1805465) + + * Fix and issue that LG I2C touchscreen stops working after reboot + (LP: #1805085) + - HID: i2c-hid: Disable runtime PM for LG touchscreen + + * click/pop noise in the headphone on several lenovo laptops (LP: #1805079) // + click/pop noise in the headphone on several lenovo laptops (LP: #1805079) + - ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops + + * Regression: hinic performance degrades over time (LP: #1805248) + - Revert "net-next/hinic: add checksum offload and TSO support" + + * Disco update: 4.19.5 upstream stable release (LP: #1805461) + - drm/i915: Replace some PAGE_SIZE with I915_GTT_PAGE_SIZE + - cifs: don't dereference smb_file_target before null check + - cifs: fix return value for cifs_listxattr + - arm64: kprobe: make page to RO mode when allocate it + - block: brd: associate with queue until adding disk + - net: hns3: bugfix for rtnl_lock's range in the hclgevf_reset() + - net: hns3: bugfix for rtnl_lock's range in the hclge_reset() + - net: hns3: bugfix for handling mailbox while the command queue reinitialized + - net: hns3: bugfix for the initialization of command queue's spin lock + - ixgbe: fix MAC anti-spoofing filter after VFLR + - reiserfs: propagate errors from fill_with_dentries() properly + - hfs: prevent btree data loss on root split + - hfsplus: prevent btree data loss on root split + - perf unwind: Take pgoff into account when reporting elf to libdwfl + - um: Give start_idle_thread() a return code + - drm/edid: Add 6 bpc quirk for BOE panel. + - afs: Handle EIO from delivery function + - platform/x86: intel_telemetry: report debugfs failure + - clk: fixed-rate: fix of_node_get-put imbalance + - perf symbols: Set PLT entry/header sizes properly on Sparc + - fs/exofs: fix potential memory leak in mount option parsing + - clk: samsung: exynos5420: Enable PERIS clocks for suspend + - apparmor: Fix uninitialized value in aa_split_fqname + - x86/earlyprintk: Add a force option for pciserial device + - platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 + - clk: meson-axg: pcie: drop the mpll3 clock parent + - arm64: percpu: Initialize ret in the default case + - clk: meson: clk-pll: drop CLK_GET_RATE_NOCACHE where unnecessary + - clk: renesas: r9a06g032: Fix UART34567 clock rate + - clk: ti: fix OF child-node lookup + - serial: sh-sci: Fix receive on SCIFA/SCIFB variants with DMA + - netfilter: ipv6: fix oops when defragmenting locally generated fragments + - netfilter: bridge: define INT_MIN & INT_MAX in userspace + - s390/decompressor: add missing FORCE to build targets + - s390/vdso: add missing FORCE to build targets + - HID: i2c-hid: Add a small delay after sleep command for Raydium touchpanel + - Revert "HID: add NOGET quirk for Eaton Ellipse MAX UPS" + - HID: alps: allow incoming reports when only the trackstick is opened + - Revert "netfilter: nft_numgen: add map lookups for numgen random operations" + - netfilter: ipset: list:set: Decrease refcount synchronously on deletion and + replace + - netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net + - netfilter: ipset: fix ip_set_list allocation failure + - s390/mm: fix mis-accounting of pgtable_bytes + - s390/mm: Fix ERROR: "__node_distance" undefined! + - bpf: fix bpf_prog_get_info_by_fd to return 0 func_lens for unpriv + - netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() + - netfilter: xt_IDLETIMER: add sysfs filename checking routine + - netfilter: ipset: Fix calling ip_set() macro at dumping + - netfilter: nft_compat: ebtables 'nat' table is normal chain type + - s390/qeth: fix HiperSockets sniffer + - s390/qeth: unregister netdevice only when registered + - net: hns3: Fix for out-of-bounds access when setting pfc back pressure + - hwmon: (ibmpowernv) Remove bogus __init annotations + - ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node + - ARM: dts: fsl: Fix improperly quoted stdout-path values + - Revert "drm/exynos/decon5433: implement frame counter" + - arm64: dts: renesas: r8a7795: add missing dma-names on hscif2 + - arm64: dts: renesas: condor: switch from EtherAVB to GEther + - xen/grant-table: Fix incorrect gnttab_dma_free_pages() pr_debug message + - clk: fixed-factor: fix of_node_get-put imbalance + - mtd: nand: Fix nanddev_pos_next_page() kernel-doc header + - lib/raid6: Fix arm64 test build + - drm/amd/display: Stop leaking planes + - block: Clear kernel memory before copying to user + - drm/amd/display: Drop reusing drm connector for MST + - drm/amd/amdgpu/dm: Fix dm_dp_create_fake_mst_encoder() + - s390/perf: Change CPUM_CF return code in event init function + - ceph: quota: fix null pointer dereference in quota check + - of/device: Really only set bus DMA mask when appropriate + - nvme: make sure ns head inherits underlying device limits + - i2c: omap: Enable for ARCH_K3 + - i2c: qcom-geni: Fix runtime PM mismatch with child devices + - sched/core: Take the hotplug lock in sched_init_smp() + - perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so + - perf tools: Do not zero sample_id_all for group members + - ice: Fix dead device link issue with flow control + - ice: Fix the bytecount sent to netdev_tx_sent_queue + - ice: Change req_speeds to be u16 + - i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features + - qed: Fix memory/entry leak in qed_init_sp_request() + - qed: Fix blocking/unlimited SPQ entries leak + - qed: Fix SPQ entries not returned to pool in error flows + - qed: Fix potential memory corruption + - net: stmmac: Fix RX packet size > 8191 + - net: aquantia: fix potential IOMMU fault after driver unbind + - net: aquantia: fixed enable unicast on 32 macvlan + - net: aquantia: invalid checksumm offload implementation + - kbuild: deb-pkg: fix too low build version number + - Revert "scripts/setlocalversion: git: Make -dirty check more robust" + - SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() + - x86/mm: Move LDT remap out of KASLR region on 5-level paging + - x86/ldt: Unmap PTEs for the slot before freeing LDT pages + - x86/ldt: Remove unused variable in map_ldt_struct() + - media: v4l: event: Add subscription to list before calling "add" operation + - MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver + - RISC-V: Fix raw_copy_{to,from}_user() + - uio: Fix an Oops on load + - ALSA: hda/realtek - Add quirk entry for HP Pavilion 15 + - ALSA: hda/ca0132 - Call pci_iounmap() instead of iounmap() + - can: kvaser_usb: Fix accessing freed memory in kvaser_usb_start_xmit() + - can: kvaser_usb: Fix potential uninitialized variable use + - usb: cdc-acm: add entry for Hiro (Conexant) modem + - USB: Wait for extra delay time after USB_PORT_FEAT_RESET for quirky hub + - usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB + - misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data + - USB: misc: appledisplay: add 20" Apple Cinema Display + - gnss: serial: fix synchronous write timeout + - gnss: sirf: fix synchronous write timeout + - mtd: rawnand: atmel: fix OF child-node lookup + - drivers/misc/sgi-gru: fix Spectre v1 vulnerability + - ACPI / platform: Add SMB0001 HID to forbidden_id_list + - HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges + - HID: Add quirk for Primax PIXART OEM mice + - HID: Add quirk for Microsoft PIXART OEM mouse + - libceph: fall back to sendmsg for slab pages + - mt76x0: run vco calibration for each channel configuration + - Linux 4.19.5 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: Build signed kernels for arm64" + + -- Seth Forshee Tue, 27 Nov 2018 10:38:34 -0600 + +linux (4.19.0-6.7) disco; urgency=medium + + * linux: 4.19.0-6.7 -proposed tracker (LP: #1805195) + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Add pointstick support for Cirque Touchpad (LP: #1805081) + - HID: multitouch: Add pointstick support for Cirque Touchpad + + * Power consumption during s2idle is higher than long idle (Intel SSDPEKKF) + (LP: #1804588) + - SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: 4.19.4 upstream stable release (LP: #1805159) + - flow_dissector: do not dissect l4 ports for fragments + - ibmvnic: fix accelerated VLAN handling + - ip_tunnel: don't force DF when MTU is locked + - ipv6: fix a dst leak when removing its exception + - ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF + - net: bcmgenet: protect stop from timeout + - net-gro: reset skb->pkt_type in napi_reuse_skb() + - sctp: not allow to set asoc prsctp_enable by sockopt + - tcp: Fix SOF_TIMESTAMPING_RX_HARDWARE to use the latest timestamp during TCP + coalescing + - tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths + - tipc: don't assume linear buffer when reading ancillary data + - tipc: fix lockdep warning when reinitilaizing sockets + - tuntap: fix multiqueue rx + - net: systemport: Protect stop from timeout + - net/sched: act_pedit: fix memory leak when IDR allocation fails + - net: sched: cls_flower: validate nested enc_opts_policy to avoid warning + - tipc: fix link re-establish failure + - net/mlx5e: Don't match on vlan non-existence if ethertype is wildcarded + - net/mlx5e: Claim TC hw offloads support only under a proper build config + - net/mlx5e: Adjust to max number of channles when re-attaching + - net/mlx5e: RX, verify received packet size in Linear Striding RQ + - Revert "sctp: remove sctp_transport_pmtu_check" + - net/mlx5e: Always use the match level enum when parsing TC rule match + - net/mlx5e: Fix selftest for small MTUs + - net/mlx5e: Removed unnecessary warnings in FEC caps query + - inet: frags: better deal with smp races + - l2tp: fix a sock refcnt leak in l2tp_tunnel_register + - net/mlx5: IPSec, Fix the SA context hash key + - net/mlx5e: IPoIB, Reset QP after channels are closed + - net: dsa: mv88e6xxx: Fix clearing of stats counters + - net: phy: realtek: fix RTL8201F sysfs name + - sctp: define SCTP_SS_DEFAULT for Stream schedulers + - net: qualcomm: rmnet: Fix incorrect assignment of real_dev + - net: dsa: microchip: initialize mutex before use + - sctp: fix strchange_flags name for Stream Change Event + - net: phy: mdio-gpio: Fix working over slow can_sleep GPIOs + - sctp: not increase stream's incnt before sending addstrm_in request + - mlxsw: spectrum: Fix IP2ME CPU policer configuration + - net: smsc95xx: Fix MTU range + - rxrpc: Fix lockup due to no error backoff after ack transmit error + - usbnet: smsc95xx: disable carrier check while suspending + - Revert "x86/speculation: Enable cross-hyperthread spectre v2 STIBP + mitigation" + - Linux 4.19.4 + + * Disco update: 4.19.3 upstream stable release (LP: #1805158) + - powerpc/traps: restore recoverability of machine_check interrupts + - powerpc/64/module: REL32 relocation range check + - powerpc/mm: Fix page table dump to work on Radix + - powerpc/mm: fix always true/false warning in slice.c + - drm/amd/display: fix bug of accessing invalid memory + - Input: wm97xx-ts - fix exit path + - powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS + - powerpc/eeh: Fix possible null deref in eeh_dump_dev_log() + - tty: check name length in tty_find_polling_driver() + - tracing/kprobes: Check the probe on unloaded module correctly + - drm/nouveau/secboot/acr: fix memory leak + - drm/amdgpu/powerplay: fix missing break in switch statements + - ARM: imx_v6_v7_defconfig: Select CONFIG_TMPFS_POSIX_ACL + - powerpc/nohash: fix undefined behaviour when testing page size support + - drm/msm/gpu: fix parameters in function msm_gpu_crashstate_capture + - drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type' + - drm/msm: dpu: Allow planes to extend past active display + - powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak + - drm/omap: fix memory barrier bug in DMM driver + - drm/amd/display: Raise dispclk value for dce120 by 15% + - drm/amd/display: fix gamma not being applied + - drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer + - media: pci: cx23885: handle adding to list failure + - media: coda: don't overwrite h.264 profile_idc on decoder instance + - MIPS: kexec: Mark CPU offline before disabling local IRQ + - powerpc/boot: Ensure _zimage_start is a weak symbol + - powerpc/memtrace: Remove memory in chunks + - MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS + - staging: erofs: fix a missing endian conversion + - serial: 8250_of: Fix for lack of interrupt support + - sc16is7xx: Fix for multi-channel stall + - media: tvp5150: fix width alignment during set_selection() + - powerpc/selftests: Wait all threads to join + - staging:iio:ad7606: fix voltage scales + - drm: rcar-du: Update Gen3 output limitations + - drm/amdgpu: Fix SDMA TO after GPU reset v3 + - staging: most: video: fix registration of an empty comp core_component + - 9p locks: fix glock.client_id leak in do_lock + - udf: Prevent write-unsupported filesystem to be remounted read-write + - ARM: dts: imx6ull: keep IMX6UL_ prefix for signals on both i.MX6UL and + i.MX6ULL + - media: ov5640: fix mode change regression + - 9p: clear dangling pointers in p9stat_free + - drm/amdgpu: fix integer overflow test in amdgpu_bo_list_create() + - media: ov5640: fix restore of last mode set + - cdrom: fix improper type cast, which can leat to information leak. + - ovl: fix error handling in ovl_verify_set_fh() + - ovl: fix recursive oi->lock in ovl_link() + - ovl: check whiteout in ovl_create_over_whiteout() + - ovl: automatically enable redirect_dir on metacopy=on + - serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout + - scsi: qla2xxx: Fix incorrect port speed being set for FC adapters + - scsi: qla2xxx: Fix process response queue for ISP26XX and above + - scsi: qla2xxx: Remove stale debug trace message from tcm_qla2xxx + - scsi: qla2xxx: Fix early srb free on abort + - scsi: qla2xxx: shutdown chip if reset fail + - scsi: qla2xxx: Reject bsg request if chip is down. + - scsi: qla2xxx: Fix re-using LoopID when handle is in use + - scsi: qla2xxx: Fix for double free of SRB structure + - scsi: qla2xxx: Fix NVMe session hang on unload + - scsi: qla2xxx: Fix NVMe Target discovery + - scsi: qla2xxx: Fix duplicate switch database entries + - scsi: qla2xxx: Fix driver hang when FC-NVMe LUNs are configured + - vfs: fix FIGETBSZ ioctl on an overlayfs file + - fuse: Fix use-after-free in fuse_dev_do_read() + - fuse: Fix use-after-free in fuse_dev_do_write() + - fuse: fix blocked_waitq wakeup + - fuse: set FR_SENT while locked + - drm/msm: fix OF child-node lookup + - arm64: dts: stratix10: Support Ethernet Jumbo frame + - arm64: dts: stratix10: fix multicast filtering + - clk: meson-gxbb: set fclk_div3 as CLK_IS_CRITICAL + - clk: meson: axg: mark fdiv2 and fdiv3 as critical + - zram: close udev startup race condition as default groups + - MIPS: Loongson-3: Fix CPU UART irq delivery problem + - MIPS: Loongson-3: Fix BRIDGE irq delivery problem + - xtensa: add NOTES section to the linker script + - xtensa: make sure bFLT stack is 16 byte aligned + - xtensa: fix boot parameters address translation + - um: Drop own definition of PTRACE_SYSEMU/_SINGLESTEP + - clk: s2mps11: Fix matching when built as module and DT node contains + compatible + - clk: at91: Fix division by zero in PLL recalc_rate() + - clk: sunxi-ng: h6: fix bus clocks' divider position + - clk: rockchip: fix wrong mmc sample phase shift for rk3328 + - clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call + - libceph: bump CEPH_MSG_MAX_DATA_LEN + - Revert "ceph: fix dentry leak in splice_dentry()" + - thermal: core: Fix use-after-free in thermal_cooling_device_destroy_sysfs + - mach64: fix display corruption on big endian machines + - mach64: fix image corruption due to reading accelerator registers + - acpi/nfit, x86/mce: Handle only uncorrectable machine checks + - acpi/nfit, x86/mce: Validate a MCE's address before using it + - acpi, nfit: Fix ARS overflow continuation + - reset: hisilicon: fix potential NULL pointer dereference + - crypto: hisilicon - Fix NULL dereference for same dst and src + - crypto: hisilicon - Fix reference after free of memories on error path + - vhost/scsi: truncate T10 PI iov_iter to prot_bytes + - scsi: qla2xxx: Initialize port speed to avoid setting lower speed + - SCSI: fix queue cleanup race before queue initialization is done + - Revert "powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for + CONFIG_SWAP" + - soc: ti: QMSS: Fix usage of irq_set_affinity_hint + - ocfs2: fix a misuse a of brelse after failing ocfs2_check_dir_entry + - ocfs2: free up write context when direct IO failed + - mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings + - memory_hotplug: cond_resched in __remove_pages + - netfilter: conntrack: fix calculation of next bucket number in early_drop + - ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm + - bonding/802.3ad: fix link_failure_count tracking + - mtd: spi-nor: cadence-quadspi: Return error code in + cqspi_direct_read_execute() + - mtd: nand: Fix nanddev_neraseblocks() + - mtd: docg3: don't set conflicting BCH_CONST_PARAMS option + - hwmon: (core) Fix double-free in __hwmon_device_register() + - perf cs-etm: Correct CPU mode for samples + - perf stat: Handle different PMU names with common prefix + - perf callchain: Honour the ordering of PERF_CONTEXT_{USER,KERNEL,etc} + - perf intel-pt/bts: Calculate cpumode for synthesized samples + - perf intel-pt: Insert callchain context into synthesized callchains + - of, numa: Validate some distance map rules + - x86/cpu/vmware: Do not trace vmware_sched_clock() + - x86/hyper-v: Enable PIT shutdown quirk + - termios, tty/tty_baudrate.c: fix buffer overrun + - arch/alpha, termios: implement BOTHER, IBSHIFT and termios2 + - watchdog/core: Add missing prototypes for weak functions + - btrfs: fix pinned underflow after transaction aborted + - Btrfs: fix missing data checksums after a ranged fsync (msync) + - Btrfs: fix cur_offset in the error case for nocow + - Btrfs: fix infinite loop on inode eviction after deduplication of eof block + - Btrfs: fix data corruption due to cloning of eof block + - btrfs: tree-checker: Fix misleading group system information + - clockevents/drivers/i8253: Add support for PIT shutdown quirk + - ext4: add missing brelse() update_backups()'s error path + - ext4: add missing brelse() in set_flexbg_block_bitmap()'s error path + - ext4: add missing brelse() add_new_gdb_meta_bg()'s error path + - ext4: avoid potential extra brelse in setup_new_flex_group_blocks() + - ext4: missing !bh check in ext4_xattr_inode_write() + - ext4: fix possible inode leak in the retry loop of ext4_resize_fs() + - ext4: avoid buffer leak on shutdown in ext4_mark_iloc_dirty() + - ext4: avoid buffer leak in ext4_orphan_add() after prior errors + - ext4: fix missing cleanup if ext4_alloc_flex_bg_array() fails while resizing + - ext4: avoid possible double brelse() in add_new_gdb() on error path + - ext4: fix possible leak of sbi->s_group_desc_leak in error path + - ext4: fix possible leak of s_journal_flag_rwsem in error path + - ext4: fix buffer leak in ext4_xattr_get_block() on error path + - ext4: release bs.bh before re-using in ext4_xattr_block_find() + - ext4: fix buffer leak in ext4_xattr_move_to_block() on error path + - ext4: fix buffer leak in ext4_expand_extra_isize_ea() on error path + - ext4: fix buffer leak in __ext4_read_dirblock() on error path + - mount: Prevent MNT_DETACH from disconnecting locked mounts + - mnt: fix __detach_mounts infinite loop + - uapi: fix linux/kfd_ioctl.h userspace compilation errors + - ARM: cpuidle: Don't register the driver when back-end init returns -ENXIO + - kdb: use correct pointer when 'btc' calls 'btt' + - kdb: print real address of pointers instead of hashed addresses + - sunrpc: correct the computation for page_ptr when truncating + - NFSv4: Don't exit the state manager without clearing + NFS4CLNT_MANAGER_RUNNING + - nfsd: COPY and CLONE operations require the saved filehandle to be set + - rtc: hctosys: Add missing range error reporting + - fuse: fix use-after-free in fuse_direct_IO() + - fuse: fix leaked notify reply + - fuse: fix possibly missed wake-up after abort + - selinux: check length properly in SCTP bind hook + - gfs2: Put bitmap buffers in put_super + - gfs2: Fix metadata read-ahead during truncate (2) + - libata: blacklist SAMSUNG MZ7TD256HAFV-000L9 SSD + - crypto: user - fix leaking uninitialized memory to userspace + - lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn + - hugetlbfs: fix kernel BUG at fs/hugetlbfs/inode.c:444! + - mm/swapfile.c: use kvzalloc for swap_info_struct allocation + - efi/arm/libstub: Pack FDT after populating it + - mm: don't reclaim inodes with many attached pages + - scripts/spdxcheck.py: make python3 compliant + - drm/rockchip: Allow driver to be shutdown on reboot/kexec + - drm/amdgpu: Fix typo in amdgpu_vmid_mgr_init + - drm/amdgpu: add missing CHIP_HAINAN in amdgpu_ucode_get_load_type + - drm/amdgpu: Suppress keypresses from ACPI_VIDEO events + - drm/nouveau: Check backlight IDs are >= 0, not > 0 + - drm/nouveau: Fix nv50_mstc->best_encoder() + - drm/amd/powerplay: Enable/Disable NBPSTATE on On/OFF of UVD + - drm/etnaviv: fix bogus fence complete check in timeout handler + - drm/dp_mst: Check if primary mstb is null + - drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003) + - drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit + panel's native mode + - drm/i915: Use the correct crtc when sanitizing plane mapping + - drm/i915: Restore vblank interrupts earlier + - drm/i915: Don't unset intel_connector->mst_port + - drm/i915: Skip vcpi allocation for MSTB ports that are gone + - drm/i915: Large page offsets for pread/pwrite + - drm/i915/dp: Fix link retraining comment in intel_dp_long_pulse() + - drm/i915/dp: Restrict link retrain workaround to external monitors + - drm/i915/icl: Fix the macros for DFLEXDPMLE register bits + - drm/i915/hdmi: Add HDMI 2.0 audio clock recovery N values + - drm/i915: Mark up GTT sizes as u64 + - drm/i915: Fix error handling for the NV12 fb dimensions check + - drm/i915: Fix ilk+ watermarks when disabling pipes + - drm/i915: Compare user's 64b GTT offset even on 32b + - drm/i915: Don't oops during modeset shutdown after lpe audio deinit + - drm/i915: Mark pin flags as u64 + - drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5 + - drm/i915/execlists: Force write serialisation into context image vs + execution + - drm/i915: Fix possible race in intel_dp_add_mst_connector() + - drm/i915: Fix NULL deref when re-enabling HPD IRQs on systems with MST + - drm/i915: Fix hpd handling for pins with two encoders + - CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM + - Revert "ACPICA: AML interpreter: add region addresses in global list during + initialization" + - Linux 4.19.3 + + * glibc 2.28-0ubuntu1 ADT test failure with linux 4.19.0-5.6 (LP: #1805154) + - SAUCE: Revert "x86: vdso: Use $LD instead of $CC to link" + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.12-1ubuntu1, zfs to 0.7.12-1ubuntu1 + + -- Seth Forshee Mon, 26 Nov 2018 11:44:00 -0600 + +linux (4.19.0-5.6) disco; urgency=medium + + * crash in ENA driver on removing an interface (LP: #1802341) + - SAUCE: net: ena: fix crash during ena_remove() + + * Ubuntu 18.04.1 - [s390x] Kernel panic while stressing network bonding + (LP: #1797367) + - s390/qeth: sanitize strings in debug messages + + * Disco update: 4.19.2 upstream stable release (LP: #1803410) + - bpf: fix partial copy of map_ptr when dst is scalar + - MIPS: VDSO: Reduce VDSO_RANDOMIZE_SIZE to 64MB for 64bit + - gpio: mxs: Get rid of external API call + - mtd: rawnand: marvell: fix the IRQ handler complete() condition + - mtd: maps: gpio-addr-flash: Fix ioremapped size + - mtd: spi-nor: fsl-quadspi: fix read error for flash size larger than 16MB + - mtd: spi-nor: intel-spi: Add support for Intel Ice Lake SPI serial flash + - mtd: spi-nor: fsl-quadspi: Don't let -EINVAL on the bus + - spi: spi-mem: Adjust op len based on message/transfer size limitations + - spi: bcm-qspi: switch back to reading flash using smaller chunks + - spi: bcm-qspi: fix calculation of address length + - bcache: trace missed reading by cache_missed + - bcache: fix ioctl in flash device + - bcache: correct dirty data statistics + - bcache: fix miss key refill->end in writeback + - hwmon: (pmbus) Fix page count auto-detection. + - jffs2: free jffs2_sb_info through jffs2_kill_sb() + - block: setup bounce bio_sets properly + - block: make sure discard bio is aligned with logical block size + - block: make sure writesame bio is aligned with logical block size + - cpufreq: conservative: Take limits changes into account properly + - dma-mapping: fix panic caused by passing empty cma command line argument + - pcmcia: Implement CLKRUN protocol disabling for Ricoh bridges + - ACPI / OSL: Use 'jiffies' as the time bassis for acpi_os_get_timer() + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - ACPICA: AML Parser: fix parse loop to correctly skip erroneous extended + opcodes + - acpi, nfit: Fix Address Range Scrub completion tracking + - kprobes/x86: Use preempt_enable() in optimized_callback() + - mailbox: PCC: handle parse error + - parisc: Fix address in HPMC IVA + - parisc: Fix map_pages() to not overwrite existing pte entries + - parisc: Fix exported address of os_hpmc handler + - ALSA: hda - Add quirk for ASUS G751 laptop + - ALSA: hda - Fix headphone pin config for ASUS G751 + - ALSA: hda - Add mic quirk for the Lenovo G50-30 (17aa:3905) + - ALSA: hda: Add 2 more models to the power_save blacklist + - ALSA: ca0106: Disable IZD on SB0570 DAC to fix audio pops + - ALSA: hda - Fix incorrect clearance of thinkpad_acpi hooks + - x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation + - x86/xen: Fix boot loader version reported for PVH guests + - x86/corruption-check: Fix panic in memory_corruption_check() when boot + option without value is provided + - x86/kvm/nVMX: allow bare VMXON state migration + - x86/mm/pat: Disable preemption around __flush_tlb_all() + - x86/numa_emulation: Fix uniform-split numa emulation + - ARM: dts: exynos: Disable pull control for MAX8997 interrupts on Origen + - net: socionext: Reset tx queue in ndo_stop + - net: loopback: clear skb->tstamp before netif_rx() + - locking/lockdep: Fix debug_locks off performance problem + - netfilter: xt_nat: fix DNAT target for shifted portmap ranges + - ataflop: fix error handling during setup + - swim: fix cleanup on setup error + - arm64: cpufeature: ctr: Fix cpu capability check for late CPUs + - hv_netvsc: fix vf serial matching with pci slot info + - nfp: devlink port split support for 1x100G CXP NIC + - tun: Consistently configure generic netdev params via rtnetlink + - s390/sthyi: Fix machine name validity indication + - hwmon: (pwm-fan) Set fan speed to 0 on suspend + - lightnvm: pblk: fix race on sysfs line state + - lightnvm: pblk: fix two sleep-in-atomic-context bugs + - lightnvm: pblk: fix race condition on metadata I/O + - spi: spi-ep93xx: Use dma_data_direction for ep93xx_spi_dma_{finish,prepare} + - perf tools: Free temporary 'sys' string in read_event_files() + - perf tools: Cleanup trace-event-info 'tdata' leak + - perf tools: Free 'printk' string in parse_ftrace_printk() + - perf strbuf: Match va_{add,copy} with va_end + - cpupower: Fix coredump on VMWare + - bcache: Populate writeback_rate_minimum attribute + - mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 + - sdhci: acpi: add free_slot callback + - mtd: rawnand: denali: set SPARE_AREA_SKIP_BYTES register to 8 if unset + - iwlwifi: pcie: avoid empty free RB queue + - iwlwifi: mvm: clear HW_RESTART_REQUESTED when stopping the interface + - iwlwifi: mvm: check for n_profiles validity in EWRD ACPI + - x86/olpc: Indicate that legacy PC XO-1 platform should not register RTC + - wlcore: Fix BUG with clear completion on timeout + - ACPI/PPTT: Handle architecturally unknown cache types + - ACPI / PM: LPIT: Register sysfs attributes based on FADT + - ACPI / processor: Fix the return value of acpi_processor_ids_walk() + - cpufreq: dt: Try freeing static OPPs only if we have added them + - x86/intel_rdt: Show missing resctrl mount options + - mtd: rawnand: atmel: Fix potential NULL pointer dereference + - nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O + - ath10k: fix tx status flag setting for management frames + - signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack + - ice: fix changing of ring descriptor size (ethtool -G) + - ice: update fw version check logic + - net: hns3: Fix for packet buffer setting bug + - Bluetooth: btbcm: Add entry for BCM4335C0 UART bluetooth + - Bluetooth: hci_qca: Remove hdev dereference in qca_close(). + - x86: boot: Fix EFI stub alignment + - net: hns3: Add nic state check before calling netif_tx_wake_queue + - net: hns3: Fix ets validate issue + - pinctrl: sunxi: fix 'pctrl->functions' allocation in + sunxi_pinctrl_build_state + - pinctrl: qcom: spmi-mpp: Fix err handling of pmic_mpp_set_mux + - brcmfmac: fix for proper support of 160MHz bandwidth + - net: hns3: Check hdev state when getting link status + - net: hns3: Set STATE_DOWN bit of hdev state when stopping net + - net: phy: phylink: ensure the carrier is off when starting phylink + - block, bfq: correctly charge and reset entity service in all cases + - arm64: entry: Allow handling of undefined instructions from EL1 + - kprobes: Return error if we fail to reuse kprobe instead of BUG_ON() + - spi: gpio: No MISO does not imply no RX + - ACPI / LPSS: Add alternative ACPI HIDs for Cherry Trail DMA controllers + - pinctrl: qcom: spmi-mpp: Fix drive strength setting + - bpf/verifier: fix verifier instability + - failover: Add missing check to validate 'slave_dev' in + net_failover_slave_unregister + - perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo + - pinctrl: spmi-mpp: Fix pmic_mpp_config_get() to be compliant + - pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant + - net: hns3: Preserve vlan 0 in hardware table + - net: hns3: Fix ping exited problem when doing lp selftest + - net: hns3: Fix for vf vlan delete failed problem + - net: dsa: mv88e6xxx: Fix writing to a PHY page. + - mt76x2u: run device cleanup routine if resume fails + - rsi: fix memory alignment issue in ARM32 platforms + - libertas_tf: prevent underflow in process_cmdrequest() + - iwlwifi: mvm: fix BAR seq ctrl reporting + - gpio: brcmstb: allow 0 width GPIO banks + - ixgbe: disallow IPsec Tx offload when in SR-IOV mode + - ixgbevf: VF2VF TCP RSS + - wil6210: fix RX buffers release and unmap + - ath10k: schedule hardware restart if WMI command times out + - libata: Apply NOLPM quirk for SAMSUNG MZ7TD256HAFV-000L9 + - thermal: rcar_thermal: Prevent doing work after unbind + - thermal: da9062/61: Prevent hardware access during system suspend + - cifs: fix a credits leak for compund commands + - cgroup, netclassid: add a preemption point to write_classid + - net: stmmac: dwmac-sun8i: fix OF child-node lookup + - f2fs: fix to account IO correctly for cgroup writeback + - MD: Memory leak when flush bio size is zero + - md: fix memleak for mempool + - of: Add missing exports of node name compare functions + - scsi: esp_scsi: Track residual for PIO transfers + - scsi: ufs: Schedule clk gating work on correct queue + - UAPI: ndctl: Fix g++-unsupported initialisation in headers + - KVM: nVMX: Clear reserved bits of #DB exit qualification + - scsi: megaraid_sas: fix a missing-check bug + - RDMA/core: Do not expose unsupported counters + - RDMA/cm: Respect returned status of cm_init_av_by_path + - IB/ipoib: Clear IPCB before icmp_send + - RDMA/bnxt_re: Avoid accessing nq->bar_reg_iomem in failure case + - RDMA/bnxt_re: Fix recursive lock warning in debug kernel + - usb: host: ohci-at91: fix request of irq for optional gpio + - PCI: mediatek: Fix mtk_pcie_find_port() endpoint/port matching logic + - PCI: cadence: Use AXI region 0 to signal interrupts from EP + - usb: typec: tcpm: Report back negotiated PPS voltage and current + - tpm: suppress transmit cmd error logs when TPM 1.2 is disabled/deactivated + - f2fs: clear PageError on the read path + - Drivers: hv: vmbus: Use cpumask_var_t for on-stack cpu mask + - VMCI: Resource wildcard match fixed + - PCI / ACPI: Enable wake automatically for power managed bridges + - xprtrdma: Reset credit grant properly after a disconnect + - irqchip/pdc: Setup all edge interrupts as rising edge at GIC + - usb: dwc2: fix call to vbus supply exit routine, call it unlocked + - usb: dwc2: fix a race with external vbus supply + - usb: gadget: udc: atmel: handle at91sam9rl PMC + - ext4: fix argument checking in EXT4_IOC_MOVE_EXT + - MD: fix invalid stored role for a disk + - PCI: cadence: Correct probe behaviour when failing to get PHY + - nvmem: check the return value of nvmem_add_cells() + - xhci: Avoid USB autosuspend when resuming USB2 ports. + - scsi: qla2xxx: Fix recursive mailbox timeout + - f2fs: fix to recover inode's crtime during POR + - f2fs: fix to recover inode's i_flags during POR + - PCI/MSI: Warn and return error if driver enables MSI/MSI-X twice + - coresight: etb10: Fix handling of perf mode + - PCI: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode + - crypto: caam - fix implicit casts in endianness helpers + - usb: chipidea: Prevent unbalanced IRQ disable + - Smack: ptrace capability use fixes + - driver/dma/ioat: Call del_timer_sync() without holding prep_lock + - ASoC: AMD: Fix capture unstable in beginning for some runs + - firmware: coreboot: Unmap ioregion after device population + - IB/ipoib: Use dev_port to expose network interface port numbers + - IB/mlx5: Allow transition of DCI QP to reset + - uio: ensure class is registered before devices + - scsi: lpfc: Correct soft lockup when running mds diagnostics + - scsi: lpfc: Correct race with abort on completion path + - f2fs: avoid sleeping under spin_lock + - f2fs: report error if quota off error during umount + - signal: Always deliver the kernel's SIGKILL and SIGSTOP to a pid namespace + init + - f2fs: fix to flush all dirty inodes recovered in readonly fs + - mfd: menelaus: Fix possible race condition and leak + - dmaengine: dma-jz4780: Return error if not probed from DT + - IB/rxe: fix for duplicate request processing and ack psns + - ALSA: hda: Check the non-cached stream buffers more explicitly + - cpupower: Fix AMD Family 0x17 msr_pstate size + - Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" + - f2fs: fix missing up_read + - f2fs: fix to recover cold bit of inode block during POR + - f2fs: fix to account IO correctly + - OPP: Free OPP table properly on performance state irregularities + - ARM: dts: exynos: Convert exynos5250.dtsi to opp-v2 bindings + - ARM: dts: exynos: Mark 1 GHz CPU OPP as suspend OPP on Exynos5250 + - xen-swiotlb: use actually allocated size on check physical continuous + - tpm: Restore functionality to xen vtpm driver. + - xen/blkfront: avoid NULL blkfront_info dereference on device removal + - xen/balloon: Support xend-based toolstack + - xen: fix race in xen_qlock_wait() + - xen: make xen_qlock_wait() nestable + - xen/pvh: increase early stack size + - xen/pvh: don't try to unplug emulated devices + - libertas: don't set URB_ZERO_PACKET on IN USB transfer + - usbip:vudc: BUG kmalloc-2048 (Not tainted): Poison overwritten + - usb: typec: tcpm: Fix APDO PPS order checking to be based on voltage + - usb: gadget: udc: renesas_usb3: Fix b-device mode for "workaround" + - mt76: mt76x2: fix multi-interface beacon configuration + - iwlwifi: mvm: check return value of rs_rate_from_ucode_rate() + - net/ipv4: defensive cipso option parsing + - dmaengine: ppc4xx: fix off-by-one build failure + - scsi: sched/wait: Add wait_event_lock_irq_timeout for TASK_UNINTERRUPTIBLE + usage + - scsi: target: Fix target_wait_for_sess_cmds breakage with active signals + - libnvdimm: Hold reference on parent while scheduling async init + - libnvdimm, region: Fail badblocks listing for inactive regions + - libnvdimm, pmem: Fix badblocks population for 'raw' namespaces + - ASoC: intel: skylake: Add missing break in skl_tplg_get_token() + - ASoC: sta32x: set ->component pointer in private struct + - IB/mlx5: Fix MR cache initialization + - IB/rxe: Revise the ib_wr_opcode enum + - jbd2: fix use after free in jbd2_log_do_checkpoint() + - gfs2_meta: ->mount() can get NULL dev_name + - ext4: fix EXT4_IOC_SWAP_BOOT + - ext4: initialize retries variable in ext4_da_write_inline_data_begin() + - ext4: fix setattr project check in fssetxattr ioctl + - ext4: propagate error from dquot_initialize() in EXT4_IOC_FSSETXATTR + - ext4: fix use-after-free race in ext4_remount()'s error path + - selinux: fix mounting of cgroup2 under older policies + - HID: wacom: Work around HID descriptor bug in DTK-2451 and DTH-2452 + - HID: hiddev: fix potential Spectre v1 + - EDAC, amd64: Add Family 17h, models 10h-2fh support + - EDAC, {i7core,sb,skx}_edac: Fix uncorrected error counting + - EDAC, skx_edac: Fix logical channel intermediate decoding + - ARM: dts: dra7: Fix up unaligned access setting for PCIe EP + - PCI/ASPM: Fix link_state teardown on device removal + - PCI: Add Device IDs for Intel GPU "spurious interrupt" quirk + - signal/GenWQE: Fix sending of SIGKILL + - signal: Guard against negative signal numbers in copy_siginfo_from_user32 + - crypto: lrw - Fix out-of bounds access on counter overflow + - crypto: tcrypt - fix ghash-generic speed test + - crypto: aesni - don't use GFP_ATOMIC allocation if the request doesn't cross + a page in gcm + - crypto: morus/generic - fix for big endian systems + - crypto: aegis/generic - fix for big endian systems + - crypto: speck - remove Speck + - mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range() + - userfaultfd: disable irqs when taking the waitqueue lock + - ima: fix showing large 'violations' or 'runtime_measurements_count' + - ima: open a new file instance if no read permissions + - hugetlbfs: dirty pages as they are added to pagecache + - mm/rmap: map_pte() was not handling private ZONE_DEVICE page properly + - mm/hmm: fix race between hmm_mirror_unregister() and mmu_notifier callback + - KVM: arm/arm64: Ensure only THP is candidate for adjustment + - KVM: arm64: Fix caching of host MDCR_EL2 value + - kbuild: fix kernel/bounds.c 'W=1' warning + - iio: ad5064: Fix regulator handling + - iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs() + - iio: adc: at91: fix acking DRDY irq on simple conversions + - iio: adc: at91: fix wrong channel number in triggered buffer mode + - w1: omap-hdq: fix missing bus unregister at removal + - smb3: allow stats which track session and share reconnects to be reset + - smb3: do not attempt cifs operation in smb3 query info error path + - smb3: on kerberos mount if server doesn't specify auth type use krb5 + - printk: Fix panic caused by passing log_buf_len to command line + - genirq: Fix race on spurious interrupt detection + - tpm: fix response size validation in tpm_get_random() + - NFC: nfcmrvl_uart: fix OF child-node lookup + - NFSv4.1: Fix the r/wsize checking + - nfs: Fix a missed page unlock after pg_doio() + - nfsd: correctly decrement odstate refcount in error path + - nfsd: Fix an Oops in free_session() + - lockd: fix access beyond unterminated strings in prints + - dm ioctl: harden copy_params()'s copy_from_user() from malicious users + - dm zoned: fix metadata block ref counting + - dm zoned: fix various dmz_get_mblock() issues + - media: ov7670: make "xclk" clock optional + - fsnotify: Fix busy inodes during unmount + - powerpc64/module elfv1: Set opd addresses after module relocation + - powerpc/msi: Fix compile error on mpc83xx + - powerpc/tm: Fix HFSCR bit for no suspend case + - powerpc/64s/hash: Do not use PPC_INVALIDATE_ERAT on CPUs before POWER9 + - MIPS: OCTEON: fix out of bounds array access on CN68XX + - rtc: ds1307: fix ds1339 wakealarm support + - rtc: cmos: Fix non-ACPI undefined reference to `hpet_rtc_interrupt' + - rtc: cmos: Remove the `use_acpi_alarm' module parameter for !ACPI + - power: supply: twl4030-charger: fix OF sibling-node lookup + - ocxl: Fix access to the AFU Descriptor Data + - iommu/arm-smmu: Ensure that page-table updates are visible before TLBI + - TC: Set DMA masks for devices + - net: bcmgenet: fix OF child-node lookup + - media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD + - Revert "media: dvbsky: use just one mutex for serializing device R/W ops" + - kgdboc: Passing ekgdboc to command line causes panic + - remoteproc: qcom: q6v5: Propagate EPROBE_DEFER + - media: cec: make cec_get_edid_spa_location() an inline function + - media: cec: integrate cec_validate_phys_addr() in cec-api.c + - xen: fix xen_qlock_wait() + - xen: remove size limit of privcmd-buf mapping interface + - xen-blkfront: fix kernel panic with negotiate_mq error path + - media: cec: add new tx/rx status bits to detect aborts/timeouts + - media: cec: fix the Signal Free Time calculation + - media: cec: forgot to cancel delayed work + - media: em28xx: use a default format if TRY_FMT fails + - media: tvp5150: avoid going past array on v4l2_querymenu() + - media: em28xx: fix input name for Terratec AV 350 + - media: em28xx: make v4l2-compliance happier by starting sequence on zero + - media: em28xx: fix handler for vidioc_s_input() + - media: adv7604: when the EDID is cleared, unconfigure CEC as well + - media: adv7842: when the EDID is cleared, unconfigure CEC as well + - drm/mediatek: fix OF sibling-node lookup + - media: media colorspaces*.rst: rename AdobeRGB to opRGB + - media: replace ADOBERGB by OPRGB + - media: hdmi.h: rename ADOBE_RGB to OPRGB and ADOBE_YCC to OPYCC + - arm64: lse: remove -fcall-used-x0 flag + - rpmsg: smd: fix memory leak on channel create + - Cramfs: fix abad comparison when wrap-arounds occur + - ARM: dts: socfpga: Fix SDRAM node address for Arria10 + - arm64: dts: stratix10: Correct System Manager register size + - soc: qcom: rmtfs-mem: Validate that scm is available + - soc/tegra: pmc: Fix child-node lookup + - selftests/ftrace: Fix synthetic event test to delete event correctly + - selftests/powerpc: Fix ptrace tm failure + - tracing: Return -ENOENT if there is no target synthetic event + - btrfs: qgroup: Avoid calling qgroup functions if qgroup is not enabled + - btrfs: Handle owner mismatch gracefully when walking up tree + - btrfs: locking: Add extra check in btrfs_init_new_buffer() to avoid deadlock + - btrfs: fix error handling in free_log_tree + - btrfs: fix error handling in btrfs_dev_replace_start + - btrfs: Enhance btrfs_trim_fs function to handle error better + - btrfs: Ensure btrfs_trim_fs can trim the whole filesystem + - btrfs: iterate all devices during trim, instead of fs_devices::alloc_list + - btrfs: don't attempt to trim devices that don't support it + - btrfs: keep trim from interfering with transaction commits + - btrfs: wait on caching when putting the bg cache + - Btrfs: don't clean dirty pages during buffered writes + - btrfs: release metadata before running delayed refs + - btrfs: protect space cache inode alloc with GFP_NOFS + - btrfs: reset max_extent_size on clear in a bitmap + - btrfs: make sure we create all new block groups + - Btrfs: fix warning when replaying log after fsync of a tmpfile + - Btrfs: fix wrong dentries after fsync of file that got its parent replaced + - btrfs: qgroup: Dirty all qgroups before rescan + - Btrfs: fix null pointer dereference on compressed write path error + - Btrfs: fix assertion on fsync of regular file when using no-holes feature + - Btrfs: fix deadlock when writing out free space caches + - btrfs: reset max_extent_size properly + - btrfs: set max_extent_size properly + - btrfs: don't use ctl->free_space for max_extent_size + - btrfs: only free reserved extent if we didn't insert it + - btrfs: fix insert_reserved error handling + - btrfs: don't run delayed_iputs in commit + - btrfs: move the dio_sem higher up the callchain + - Btrfs: fix use-after-free during inode eviction + - Btrfs: fix use-after-free when dumping free space + - net: sched: Remove TCA_OPTIONS from policy + - vt: fix broken display when running aptitude + - bpf: wait for running BPF programs when updating map-in-map + - vga_switcheroo: Fix missing gpu_bound call at audio client registration + - MD: fix invalid stored role for a disk - try2 + - Linux 4.19.2 + + * [FEAT] Guest-dedicated Crypto Adapters (LP: #1787405) + - KVM: s390: vsie: simulate VCPU SIE entry/exit + - KVM: s390: introduce and use KVM_REQ_VSIE_RESTART + - KVM: s390: refactor crypto initialization + - s390: vfio-ap: base implementation of VFIO AP device driver + - s390: vfio-ap: register matrix device with VFIO mdev framework + - s390: vfio-ap: sysfs interfaces to configure adapters + - s390: vfio-ap: sysfs interfaces to configure domains + - s390: vfio-ap: sysfs interfaces to configure control domains + - s390: vfio-ap: sysfs interface to view matrix mdev matrix + - KVM: s390: interface to clear CRYCB masks + - s390: vfio-ap: implement mediated device open callback + - s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl + - s390: vfio-ap: zeroize the AP queues + - s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl + - KVM: s390: Clear Crypto Control Block when using vSIE + - KVM: s390: vsie: Do the CRYCB validation first + - KVM: s390: vsie: Make use of CRYCB FORMAT2 clear + - KVM: s390: vsie: Allow CRYCB FORMAT-2 + - KVM: s390: vsie: allow CRYCB FORMAT-1 + - KVM: s390: vsie: allow CRYCB FORMAT-0 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1 + - KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-2 + - KVM: s390: device attrs to enable/disable AP interpretation + - KVM: s390: CPU model support for AP virtualization + - s390: doc: detailed specifications for AP virtualization + - KVM: s390: fix locking for crypto setting error path + - KVM: s390: Tracing APCB changes + - s390: vfio-ap: setup APCB mask using KVM dedicated function + - [Config:] Enable CONFIG_S390_AP_IOMMU and set CONFIG_VFIO_AP to module. + + * Bypass of mount visibility through userns + mount propagation (LP: #1789161) + - mount: Retest MNT_LOCKED in do_umount + - mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts + + * CVE-2018-18955: nested user namespaces with more than five extents + incorrectly grant privileges over inode (LP: #1801924) // CVE-2018-18955 + - userns: also map extents in the reverse map to kernel IDs + + * kdump fail due to an IRQ storm (LP: #1797990) + - SAUCE: x86/PCI: Export find_cap() to be used in early PCI code + - SAUCE: x86/quirks: Add parameter to clear MSIs early on boot + - SAUCE: x86/quirks: Scan all busses for early PCI quirks + + * Disable LPM for Raydium Touchscreens (LP: #1802248) + - USB: quirks: Add no-lpm quirk for Raydium touchscreens + + * Power consumption during s2idle is higher than long idle(sk hynix) + (LP: #1801875) + - SAUCE: pci: prevent sk hynix nvme from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: v4.19.1 upstream stable release (LP: #1801739) + - bridge: do not add port to router list when receives query with source + 0.0.0.0 + - ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are + called + - net/mlx5e: fix csum adjustments caused by RXFCS + - net: sched: gred: pass the right attribute to gred_change_table_def() + - net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules + - net: udp: fix handling of CHECKSUM_COMPLETE packets + - Revert "net: simplify sock_poll_wait" + - rtnetlink: Disallow FDB configuration for non-Ethernet device + - vhost: Fix Spectre V1 vulnerability + - bonding: fix length of actor system + - openvswitch: Fix push/pop ethernet validation + - net/ipv6: Allow onlink routes to have a device mismatch if it is the default + route + - net/smc: fix smc_buf_unuse to use the lgr pointer + - mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs + - mlxsw: core: Fix devlink unregister flow + - net: drop skb on failure in ip_check_defrag() + - net: Properly unlink GRO packets on overflow. + - r8169: fix broken Wake-on-LAN from S5 (poweroff) + - Revert "be2net: remove desc field from be_eq_obj" + - sctp: check policy more carefully when getting pr status + - sparc64: Export __node_distance. + - sparc64: Make corrupted user stacks more debuggable. + - sparc64: Wire up compat getpeername and getsockname. + - net: bridge: remove ipv6 zero address check in mcast queries + - Linux 4.19.1 + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.11-1ubuntu1, zfs to 0.7.11-3ubuntu1 + - [Config] updateconfigs after 4.19.2 stable update + - [Config] Disable unneded options for s390 + - [Config] Update annotations for 4.19 + + -- Seth Forshee Thu, 15 Nov 2018 09:55:37 -0800 + +linux (4.19.0-4.5) disco; urgency=medium + + * Add checksum offload and TSO support for HiNIC adapters (LP: #1800664) + - net-next/hinic: add checksum offload and TSO support + + * [Bionic][Cosmic] Fix to ipmi to support vendor specific messages greater + than 255 bytes (LP: #1799794) + - ipmi:ssif: Add support for multi-part transmit messages > 2 parts + + * Packaging resync (LP: #1786013) + - [Package] add support for specifying the primary makefile + + * Update ENA driver to version 2.0.1K (LP: #1798182) + - net: ena: minor performance improvement + - net: ena: complete host info to match latest ENA spec + - net: ena: introduce Low Latency Queues data structures according to ENA spec + - net: ena: add functions for handling Low Latency Queues in ena_com + - net: ena: add functions for handling Low Latency Queues in ena_netdev + - net: ena: use CSUM_CHECKED device indication to report skb's checksum status + - net: ena: explicit casting and initialization, and clearer error handling + - net: ena: limit refill Rx threshold to 256 to avoid latency issues + - net: ena: change rx copybreak default to reduce kernel memory pressure + - net: ena: remove redundant parameter in ena_com_admin_init() + - net: ena: update driver version to 2.0.1 + - net: ena: fix indentations in ena_defs for better readability + - net: ena: Fix Kconfig dependency on X86 + - net: ena: enable Low Latency Queues + - net: ena: fix compilation error in xtensa architecture + + * [Bionic][Cosmic] ipmi: Fix timer race with module unload (LP: #1799281) + - ipmi: Fix timer race with module unload + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * not able to unwind the stack from within __kernel_clock_gettime in the Linux + vDSO (LP: #1797963) + - powerpc/vdso: Correct call frame information + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Don't print secure boot state + from the efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() not complain + about cert lists that aren't present." + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable + to be suppressed" + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI + Secure Boot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add EFI signature data types" + - Revert "UBUNTU: SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time + addition of keys to secondary keyring" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Copy secure_boot flag in boot params + across kexec reboot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down perf" + - Revert "UBUNTU: SAUCE: (efi-lockdown) bpf: Restrict kernel image access + functions when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down kprobes" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down /proc/kcore" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the + testmmiotrace module" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down module params that specify + hardware parameters (eg. ioport)" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down TIOCSSERIAL" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable APEI error injection if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable ACPI table override if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param + when the kernel has been locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) ACPI: Limit access to custom_method + when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86: Lock down IO port access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) PCI: Lock down BAR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) hibernate: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Enforce module signatures if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add the ability to lock down access to + the running kernel image" + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi/x86: Call efi_parse_options() from efi_main() + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - [Packaging] generate Vcs-Git url from changelog + - [Config] CONFIG_SCSI_MQ_DEFAULT=y + + -- Seth Forshee Fri, 02 Nov 2018 14:22:55 -0500 + +linux (4.19.0-3.4) cosmic; urgency=medium + + * Support Edge Gateway's Bluetooth LED (LP: #1798332) + - SAUCE: Bluetooth: Support for LED on Edge Gateways + + * Support Edge Gateway's WIFI LED (LP: #1798330) + - SAUCE: mwifiex: Switch WiFi LED state according to the device status + + [ Upstream Kernel Changes ] + + * Rebase to v4.19 + + -- Seth Forshee Mon, 22 Oct 2018 09:13:39 -0500 + +linux (4.19.0-2.3) cosmic; urgency=medium + + * fscache: bad refcounting in fscache_op_complete leads to OOPS (LP: #1797314) + - SAUCE: fscache: Fix race in decrementing refcount of op->npages + + * Provide mode where all vCPUs on a core must be the same VM (LP: #1792957) + - KVM: PPC: Book3S HV: Provide mode where all vCPUs on a core must be the same + VM + + * The front MIC can't work on the Lenovo M715 (LP: #1797292) + - ALSA: hda/realtek - Fix the problem of the front MIC on the Lenovo M715 + + * arm64: snapdragon: WARNING: CPU: 0 PID: 1 at drivers/irqchip/irq-gic.c:1016 + gic_irq_domain_translate (LP: #1797143) + - SAUCE: arm64: dts: msm8916: camms: fix gic_irq_domain_translate warnings + + * Dell new AIO requires a new uart backlight driver (LP: #1727235) + - SAUCE: platform/x86: dell-uart-backlight: new backlight driver for DELL AIO + - updateconfigs for Dell UART backlight driver + + * Please make CONFIG_PWM_LPSS_PCI and CONFIG_PWM_LPSS_PLATFORM built in to + make brightness adjustment working on various BayTrail/CherryTrail-based + devices (LP: #1783964) + - [Config]: Make PWM_LPSS_* built-in + + * check and fix zkey required kernel modules locations in debs, udebs, and + initramfs (LP: #1794346) + - [Config] add s390 crypto modules to crypt-modules udeb + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_VBOXGUEST=n + - ubuntu: vbox -- update to 5.2.18-dfsg-2 + - ubuntu: enable vbox build + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc8 + + -- Seth Forshee Mon, 15 Oct 2018 10:52:04 -0500 + +linux (4.19.0-1.2) cosmic; urgency=medium + + * Page leaking in cachefiles_read_backing_file while vmscan is active + (LP: #1793430) + - SAUCE: cachefiles: Page leaking in cachefiles_read_backing_file while vmscan + is active + + * SRU: Enable middle button of touchpad on ThinkPad P72 (LP: #1793463) + - Input: elantech - enable middle button of touchpad on ThinkPad P72 + + * Improvements to the kernel source package preparation (LP: #1793461) + - [Packaging] startnewrelease: add support for backport kernels + + * Fix unusable NVIDIA GPU after S3 (LP: #1793338) + - SAUCE: PCI: Reprogram bridge prefetch registers on resume + + * Error reported when creating ZFS pool with "-t" option, despite successful + pool creation (LP: #1769937) + - SAUCE: (noup) Update zfs to 0.7.9-3ubuntu6 + + * device hotplug of vfio devices can lead to deadlock in vfio_pci_release + (LP: #1792099) + - SAUCE: vfio -- release device lock before userspace requests + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline -- fix temporary filenaming + - CONFIG_BCH_CONST_PARAMS=n + - Packaging: final-checks: remove trailing backport suffix + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc5 + + -- Seth Forshee Tue, 25 Sep 2018 16:32:24 -0500 + +linux (4.19.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: Import aufs driver + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc3 + + -- Seth Forshee Thu, 13 Sep 2018 07:54:47 -0500 + +linux (4.19.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 13 Sep 2018 06:44:09 -0500 + +linux (4.18.0-8.9) cosmic; urgency=medium + + * linux: 4.18.0-8.9 -proposed tracker (LP: #1791663) + + * Cosmic update to v4.18.7 stable release (LP: #1791660) + - rcu: Make expedited GPs handle CPU 0 being offline + - net: 6lowpan: fix reserved space for single frames + - net: mac802154: tx: expand tailroom if necessary + - 9p/net: Fix zero-copy path in the 9p virtio transport + - spi: davinci: fix a NULL pointer dereference + - spi: pxa2xx: Add support for Intel Ice Lake + - spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe + - spi: cadence: Change usleep_range() to udelay(), for atomic context + - mmc: block: Fix unsupported parallel dispatch of requests + - mmc: renesas_sdhi_internal_dmac: mask DMAC interrupts + - mmc: renesas_sdhi_internal_dmac: fix #define RST_RESERVED_BITS + - readahead: stricter check for bdi io_pages + - block: fix infinite loop if the device loses discard capability + - block: blk_init_allocated_queue() set q->fq as NULL in the fail case + - block: really disable runtime-pm for blk-mq + - blkcg: Introduce blkg_root_lookup() + - block: Introduce blk_exit_queue() + - block: Ensure that a request queue is dissociated from the cgroup controller + - apparmor: fix bad debug check in apparmor_secid_to_secctx() + - dma-buf: Move BUG_ON from _add_shared_fence to _add_shared_inplace + - libertas: fix suspend and resume for SDIO connected cards + - media: Revert "[media] tvp5150: fix pad format frame height" + - mailbox: xgene-slimpro: Fix potential NULL pointer dereference + - Replace magic for trusting the secondary keyring with #define + - Fix kexec forbidding kernels signed with keys in the secondary keyring to + boot + - powerpc/fadump: handle crash memory ranges array index overflow + - powerpc/64s: Fix page table fragment refcount race vs speculative references + - powerpc/pseries: Fix endianness while restoring of r3 in MCE handler. + - powerpc/pkeys: Give all threads control of their key permissions + - powerpc/pkeys: Deny read/write/execute by default + - powerpc/pkeys: key allocation/deallocation must not change pkey registers + - powerpc/pkeys: Save the pkey registers before fork + - powerpc/pkeys: Fix calculation of total pkeys. + - powerpc/pkeys: Preallocate execute-only key + - powerpc/nohash: fix pte_access_permitted() + - powerpc64/ftrace: Include ftrace.h needed for enable/disable calls + - powerpc/powernv/pci: Work around races in PCI bridge enabling + - cxl: Fix wrong comparison in cxl_adapter_context_get() + - IB/mlx5: Honor cnt_set_id_valid flag instead of set_id + - IB/mlx5: Fix leaking stack memory to userspace + - IB/srpt: Fix srpt_cm_req_recv() error path (1/2) + - IB/srpt: Fix srpt_cm_req_recv() error path (2/2) + - IB/srpt: Support HCAs with more than two ports + - overflow.h: Add arithmetic shift helper + - RDMA/mlx5: Fix shift overflow in mlx5_ib_create_wq + - ib_srpt: Fix a use-after-free in srpt_close_ch() + - ib_srpt: Fix a use-after-free in __srpt_close_all_ch() + - RDMA/rxe: Set wqe->status correctly if an unexpected response is received + - 9p: fix multiple NULL-pointer-dereferences + - fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed + - 9p/virtio: fix off-by-one error in sg list bounds check + - net/9p/client.c: version pointer uninitialized + - net/9p/trans_fd.c: fix race-condition by flushing workqueue before the + kfree() + - dm integrity: change 'suspending' variable from bool to int + - dm thin: stop no_space_timeout worker when switching to write-mode + - dm cache metadata: save in-core policy_hint_size to on-disk superblock + - dm cache metadata: set dirty on all cache blocks after a crash + - dm crypt: don't decrease device limits + - dm writecache: fix a crash due to reading past end of dirty_bitmap + - uart: fix race between uart_put_char() and uart_shutdown() + - Drivers: hv: vmbus: Fix the offer_in_progress in vmbus_process_offer() + - Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind() + - iio: sca3000: Fix missing return in switch + - iio: ad9523: Fix displayed phase + - iio: ad9523: Fix return value for ad952x_store() + - extcon: Release locking when sending the notification of connector state + - eventpoll.h: wrap casts in () properly + - vmw_balloon: fix inflation of 64-bit GFNs + - vmw_balloon: do not use 2MB without batching + - vmw_balloon: VMCI_DOORBELL_SET does not check status + - vmw_balloon: fix VMCI use when balloon built into kernel + - rtc: omap: fix resource leak in registration error path + - rtc: omap: fix potential crash on power off + - tracing: Do not call start/stop() functions when tracing_on does not change + - tracing/blktrace: Fix to allow setting same value + - printk/tracing: Do not trace printk_nmi_enter() + - livepatch: Validate module/old func name length + - uprobes: Use synchronize_rcu() not synchronize_sched() + - mfd: hi655x: Fix regmap area declared size for hi655x + - ovl: fix wrong use of impure dir cache in ovl_iterate() + - ACPICA: AML Parser: skip opcodes that open a scope upon parse failure + - ACPICA: Clear status of all events when entering sleep states + - drivers/block/zram/zram_drv.c: fix bug storing backing_dev + - sched: idle: Avoid retaining the tick when it has been stopped + - cpuidle: menu: Handle stopped tick more aggressively + - cpufreq: governor: Avoid accessing invalid governor_data + - PM / sleep: wakeup: Fix build error caused by missing SRCU support + - ALSA: ac97: fix device initialization in the compat layer + - ALSA: ac97: fix check of pm_runtime_get_sync failure + - ALSA: ac97: fix unbalanced pm_runtime_enable + - i2c: designware: Re-init controllers with pm_disabled set on resume + - KVM: VMX: fixes for vmentry_l1d_flush module parameter + - KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages + - xtensa: limit offsets in __loop_cache_{all,page} + - xtensa: increase ranges in ___invalidate_{i,d}cache_all + - block, bfq: return nbytes and not zero from struct cftype .write() method + - pnfs/blocklayout: off by one in bl_map_stripe() + - nfsd: fix leaked file lock with nfs exported overlayfs + - NFSv4 client live hangs after live data migration recovery + - NFSv4: Fix locking in pnfs_generic_recover_commit_reqs + - NFSv4: Fix a sleep in atomic context in nfs4_callback_sequence() + - ARM: tegra: Fix Tegra30 Cardhu PCA954x reset + - ARM: dts: am57xx-idk: Enable dual role for USB2 port + - pwm: omap-dmtimer: Return -EPROBE_DEFER if no dmtimer platform data + - mm/tlb: Remove tlb_remove_table() non-concurrent condition + - iommu/ipmmu-vmsa: Don't register as BUS IOMMU if machine doesn't have IPMMU- + VMSA + - iommu/vt-d: Add definitions for PFSID + - iommu/vt-d: Fix dev iotlb pfsid use + - sys: don't hold uts_sem while accessing userspace memory + - userns: move user access out of the mutex + - ubifs: Fix memory leak in lprobs self-check + - Revert "UBIFS: Fix potential integer overflow in allocation" + - ubifs: Check data node size before truncate + - ubifs: xattr: Don't operate on deleted inodes + - ubifs: Fix directory size calculation for symlinks + - ubifs: Fix synced_i_size calculation for xattr inodes + - pwm: tiehrpwm: Don't use emulation mode bits to control PWM output + - pwm: tiehrpwm: Fix disabling of output of PWMs + - fb: fix lost console when the user unplugs a USB adapter + - udlfb: fix semaphore value leak + - udlfb: fix display corruption of the last line + - udlfb: don't switch if we are switching to the same videomode + - udlfb: set optimal write delay + - udlfb: make a local copy of fb_ops + - udlfb: handle allocation failure + - udlfb: set line_length in dlfb_ops_set_par + - getxattr: use correct xattr length + - libnvdimm: Use max contiguous area for namespace size + - libnvdimm: fix ars_status output length calculation + - bcache: release dc->writeback_lock properly in bch_writeback_thread() + - kconfig: fix "Can't open ..." in parallel build + - perf auxtrace: Fix queue resize + - crypto: vmx - Fix sleep-in-atomic bugs + - crypto: aesni - Use unaligned loads from gcm_context_data + - crypto: arm64/sm4-ce - check for the right CPU feature bit + - crypto: caam - fix DMA mapping direction for RSA forms 2 & 3 + - crypto: caam/jr - fix descriptor DMA unmapping + - crypto: caam/qi - fix error path in xts setkey + - fs/quota: Fix spectre gadget in do_quotactl + - udf: Fix mounting of Win7 created UDF filesystems + - cpuidle: menu: Retain tick when shallow state is selected + - arm64: mm: always enable CONFIG_HOLES_IN_ZONE + - Linux 4.18.7 + + * CVE-2017-5715 + - s390: detect etoken facility + - KVM: s390: add etoken support for guests + + * Missing Intel GPU pci-id's (LP: #1789924) + - drm/i915/whl: Introducing Whiskey Lake platform + - drm/i915/aml: Introducing Amber Lake platform + - drm/i915/cfl: Add a new CFL PCI ID. + + * [18.10 FEAT] Add kernel config options for SMC-R/D (LP: #1789934) + - s390/ism: add device driver for internal shared memory + - CONFIG_ISM=y for s390 + + * Cosmic update to v4.18.6 stable release (LP: #1791105) + - PATCH scripts/kernel-doc + - scripts/kernel-doc: Escape all literal braces in regexes + - scsi: libsas: dynamically allocate and free ata host + - xprtrdma: Fix disconnect regression + - mei: don't update offset in write + - cifs: add missing support for ACLs in SMB 3.11 + - CIFS: fix uninitialized ptr deref in smb2 signing + - cifs: add missing debug entries for kconfig options + - cifs: use a refcount to protect open/closing the cached file handle + - cifs: check kmalloc before use + - smb3: enumerating snapshots was leaving part of the data off end + - smb3: Do not send SMB3 SET_INFO if nothing changed + - smb3: don't request leases in symlink creation and query + - smb3: fill in statfs fsid and correct namelen + - btrfs: use correct compare function of dirty_metadata_bytes + - btrfs: don't leak ret from do_chunk_alloc + - Btrfs: fix mount failure after fsync due to hard link recreation + - Btrfs: fix btrfs_write_inode vs delayed iput deadlock + - Btrfs: fix send failure when root has deleted files still open + - Btrfs: send, fix incorrect file layout after hole punching beyond eof + - hwmon: (k10temp) 27C Offset needed for Threadripper2 + - bpf, arm32: fix stack var offset in jit + - regulator: arizona-ldo1: Use correct device to get enable GPIO + - iommu/arm-smmu: Error out only if not enough context interrupts + - printk: Split the code for storing a message into the log buffer + - printk: Create helper function to queue deferred console handling + - printk/nmi: Prevent deadlock when accessing the main log buffer in NMI + - kprobes/arm64: Fix %p uses in error messages + - arm64: Fix mismatched cache line size detection + - arm64: Handle mismatched cache type + - arm64: mm: check for upper PAGE_SHIFT bits in pfn_valid() + - arm64: dts: rockchip: corrected uart1 clock-names for rk3328 + - KVM: arm/arm64: Fix potential loss of ptimer interrupts + - KVM: arm/arm64: Fix lost IRQs from emulated physcial timer when blocked + - KVM: arm/arm64: Skip updating PMD entry if no change + - KVM: arm/arm64: Skip updating PTE entry if no change + - s390/kvm: fix deadlock when killed by oom + - perf kvm: Fix subcommands on s390 + - stop_machine: Reflow cpu_stop_queue_two_works() + - stop_machine: Atomically queue and wake stopper threads + - ext4: check for NUL characters in extended attribute's name + - ext4: use ext4_warning() for sb_getblk failure + - ext4: sysfs: print ext4_super_block fields as little-endian + - ext4: reset error code in ext4_find_entry in fallback + - ext4: fix race when setting the bitmap corrupted flag + - x86/gpu: reserve ICL's graphics stolen memory + - platform/x86: wmi: Do not mix pages and kmalloc + - platform/x86: ideapad-laptop: Apply no_hw_rfkill to Y20-15IKBM, too + - mm: move tlb_table_flush to tlb_flush_mmu_free + - mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE + - x86/speculation/l1tf: Fix overflow in l1tf_pfn_limit() on 32bit + - x86/speculation/l1tf: Fix off-by-one error when warning that system has too + much RAM + - x86/speculation/l1tf: Suggest what to do on systems with too much RAM + - x86/vdso: Fix vDSO build if a retpoline is emitted + - x86/process: Re-export start_thread() + - KVM: x86: ensure all MSRs can always be KVM_GET/SET_MSR'd + - KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled + - fuse: Don't access pipe->buffers without pipe_lock() + - fuse: fix initial parallel dirops + - fuse: fix double request_end() + - fuse: fix unlocked access to processing queue + - fuse: umount should wait for all requests + - fuse: Fix oops at process_init_reply() + - fuse: Add missed unlock_page() to fuse_readpages_fill() + - lib/vsprintf: Do not handle %pO[^F] as %px + - udl-kms: change down_interruptible to down + - udl-kms: handle allocation failure + - udl-kms: fix crash due to uninitialized memory + - udl-kms: avoid division + - b43legacy/leds: Ensure NUL-termination of LED name string + - b43/leds: Ensure NUL-termination of LED name string + - ASoC: dpcm: don't merge format from invalid codec dai + - ASoC: zte: Fix incorrect PCM format bit usages + - ASoC: sirf: Fix potential NULL pointer dereference + - ASoC: wm_adsp: Correct DSP pointer for preloader control + - soc: qcom: rmtfs-mem: fix memleak in probe error paths + - pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() + - scsi: qla2xxx: Fix stalled relogin + - x86/vdso: Fix lsl operand order + - x86/nmi: Fix NMI uaccess race against CR3 switching + - x86/irqflags: Mark native_restore_fl extern inline + - x86/spectre: Add missing family 6 check to microcode check + - x86/speculation/l1tf: Increase l1tf memory limit for Nehalem+ + - hwmon: (nct6775) Fix potential Spectre v1 + - x86/entry/64: Wipe KASAN stack shadow before rewind_stack_do_exit() + - x86: Allow generating user-space headers without a compiler + - s390/mm: fix addressing exception after suspend/resume + - s390/lib: use expoline for all bcr instructions + - s390: fix br_r1_trampoline for machines without exrl + - s390/qdio: reset old sbal_state flags + - s390/numa: move initial setup of node_to_cpumask_map + - s390/purgatory: Fix crash with expoline enabled + - s390/purgatory: Add missing FORCE to Makefile targets + - kprobes: Show blacklist addresses as same as kallsyms does + - kprobes: Replace %p with other pointer types + - kprobes/arm: Fix %p uses in error messages + - kprobes: Make list and blacklist root user read only + - MIPS: Correct the 64-bit DSP accumulator register size + - MIPS: memset.S: Fix byte_fixup for MIPSr6 + - MIPS: Always use -march=, not - shortcuts + - MIPS: Change definition of cpu_relax() for Loongson-3 + - MIPS: lib: Provide MIPS64r6 __multi3() for GCC < 7 + - tpm: Return the actual size when receiving an unsupported command + - tpm: separate cmd_ready/go_idle from runtime_pm + - scsi: mpt3sas: Fix calltrace observed while running IO & reset + - scsi: mpt3sas: Fix _transport_smp_handler() error path + - scsi: sysfs: Introduce sysfs_{un,}break_active_protection() + - scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock + - iscsi target: fix session creation failure handling + - mtd: rawnand: hynix: Use ->exec_op() in hynix_nand_reg_write_op() + - mtd: rawnand: fsmc: Stop using chip->read_buf() + - mtd: rawnand: marvell: add suspend and resume hooks + - mtd: rawnand: qcom: wait for desc completion in all BAM channels + - clk: rockchip: fix clk_i2sout parent selection bits on rk3399 + - clk: npcm7xx: fix memory allocation + - PM / clk: signedness bug in of_pm_clk_add_clks() + - power: generic-adc-battery: fix out-of-bounds write when copying channel + properties + - power: generic-adc-battery: check for duplicate properties copied from iio + channels + - watchdog: Mark watchdog touch functions as notrace + - cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status + - x86/dumpstack: Don't dump kernel memory based on usermode RIP + - Linux 4.18.6 + - updateconfigs after v4.18.6 stable update + + * random oopses on s390 systems using NVMe devices (LP: #1790480) + - s390/pci: fix out of bounds access during irq setup + + * [18.10 FEAT] zcrypt DD: introduce APQN tags to support deterministic driver + binding (LP: #1784331) + - s390/zcrypt: code beautify + - s390/zcrypt: AP bus support for alternate driver(s) + - s390/zcrypt: hex string mask improvements for apmask and aqmask. + + * performance drop with ATS enabled (LP: #1788097) + - powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage + + * Fix MCE handling for user access of poisoned device-dax mapping + (LP: #1774366) + - device-dax: Convert to vmf_insert_mixed and vm_fault_t + - device-dax: Enable page_mapping() + - device-dax: Set page->index + - filesystem-dax: Set page->index + - mm, madvise_inject_error: Disable MADV_SOFT_OFFLINE for ZONE_DEVICE pages + - mm, dev_pagemap: Do not clear ->mapping on final put + - mm, madvise_inject_error: Let memory_failure() optionally take a page + reference + - mm, memory_failure: Collect mapping size in collect_procs() + - filesystem-dax: Introduce dax_lock_mapping_entry() + - mm, memory_failure: Teach memory_failure() about dev_pagemap pages + - x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses + - x86/memory_failure: Introduce {set, clear}_mce_nospec() + - libnvdimm, pmem: Restore page attributes when clearing errors + + * Reconcile hns3 SAUCE patches with upstream (LP: #1787477) + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix comments for + hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for using wrong mask and + shift in hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for reset_level default + assignment probelm" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unnecessary ring + configuration operation while resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet" + - Revert "UBUNTU: SAUCE: net: hns3: Fix for phy link issue when using marvell + phy driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: separate roce from nic when + resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: correct reset event status + register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent to request reset + frequently" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: reset net device with rtnl_lock" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify the order of initializeing + command queue register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent sending command during + global or core reset" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Use roce handle when calling roce + callback function" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the warning when clear + reset cause" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix get_vector ops in + hclgevf_main module" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix warning bug when doing lp + selftest" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add configure for mac minimal + frame size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mailbox message truncated + problem" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for l4 checksum offload bug" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for waterline not setting + correctly" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mac pause not disable in + pfc mode" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix tc setup when netdev is first + up" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add calling roce callback + function when link status change" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: optimize the process of notifying + roce client" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused struct member and + definition" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix mislead parameter name" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify inconsistent bit mask + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use decimal for bit offset + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix unreasonable code comments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove extra space and brackets" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: standardize the handle of return + value" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify hnae_ to hnae3_" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead + of kzalloc/dma_map_single" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: give default option while + dependency HNS3 set" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some unused members of + some structures" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove a redundant + hclge_cmd_csq_done" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: using modulo for cyclic counters + in hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove useless code in + hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused + hclge_ring_to_dma_dir" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use lower_32_bits and + upper_32_bits" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove back in struct hclge_hw" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add unlikely for error check" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the Redundant put_vector + in hns3_client_uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: print the ret value in error + information" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: extraction an interface for state + state init|uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused head file in + hnae3.c" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add l4_type check for both ipv4 + and ipv6" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add vector status check before + free vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: rename the interface for + init_client_instance and uninit_client_instance" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove hclge_get_vector_index + from hclge_bind_ring_with_vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: RX BD information valid only in + last BD except VLD bit and buffer size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add support for serdes loopback + selftest" + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: remove hclge_get_vector_index from hclge_bind_ring_with_vector + - net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - net: hns3: add vector status check before free vector + - net: hns3: add l4_type check for both ipv4 and ipv6 + - net: hns3: add unlikely for error check + - net: hns3: remove unused head file in hnae3.c + - net: hns3: extraction an interface for state init|uninit + - net: hns3: print the ret value in error information + - net: hns3: remove the Redundant put_vector in hns3_client_uninit + - net: hns3: remove back in struct hclge_hw + - net: hns3: use lower_32_bits and upper_32_bits + - net: hns3: remove unused hclge_ring_to_dma_dir + - net: hns3: remove useless code in hclge_cmd_send + - net: hns3: remove some redundant assignments + - net: hns3: simplify hclge_cmd_csq_clean + - net: hns3: remove a redundant hclge_cmd_csq_done + - net: hns3: remove some unused members of some structures + - net: hns3: give default option while dependency HNS3 set + - net: hns3: use dma_zalloc_coherent instead of kzalloc/dma_map_single + - net: hns3: modify hnae_ to hnae3_ + - net: hns3: Fix tc setup when netdev is first up + - net: hns3: Fix for mac pause not disable in pfc mode + - net: hns3: Fix for waterline not setting correctly + - net: hns3: Fix for l4 checksum offload bug + - net: hns3: Fix for mailbox message truncated problem + - net: hns3: Add configure for mac minimal frame size + - net: hns3: Fix warning bug when doing lp selftest + - net: hns3: Fix get_vector ops in hclgevf_main module + - net: hns3: Remove the warning when clear reset cause + - net: hns3: Prevent sending command during global or core reset + - net: hns3: Modify the order of initializing command queue register + - net: hns3: Reset net device with rtnl_lock + - net: hns3: Prevent to request reset frequently + - net: hns3: Correct reset event status register + - net: hns3: Fix return value error in hns3_reset_notify_down_enet + - net: hns3: remove unnecessary ring configuration operation while resetting + - net: hns3: Fix for reset_level default assignment probelm + - net: hns3: Fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - net: hns3: Fix comments for hclge_get_ring_chain_from_mbx + - net: hns3: Remove some redundant assignments + - net: hns3: Standardize the handle of return value + - net: hns3: Remove extra space and brackets + - net: hns3: Correct unreasonable code comments + - net: hns3: Use decimal for bit offset macros + - net: hns3: Modify inconsistent bit mask macros + - net: hns3: Fix misleading parameter name + - net: hns3: Remove unused struct member and definition + - net: hns3: Add SPDX tags to HNS3 PF driver + - net: hns3: Add support for serdes loopback selftest + - net: hns3: Fix for phy link issue when using marvell phy driver + + * [Regression] kernel crashdump fails on arm64 (LP: #1786878) + - arm64: export memblock_reserve()d regions via /proc/iomem + - drivers: acpi: add dependency of EFI for arm64 + - efi/arm: preserve early mapping of UEFI memory map longer for BGRT + - efi/arm: map UEFI memory map even w/o runtime services enabled + - arm64: acpi: fix alignment fault in accessing ACPI + - [Config] CONFIG_ARCH_SUPPORTS_ACPI=y + - arm64: fix ACPI dependencies + - ACPI: fix menuconfig presentation of ACPI submenu + + * TB 16 issue on Dell Lattitude 7490 with large amount of data (LP: #1785780) + - r8152: disable RX aggregation on new Dell TB16 dock + + * Support Power Management for Thunderbolt Controller (LP: #1789358) + - thunderbolt: Use 64-bit DMA mask if supported by the platform + - thunderbolt: Do not unnecessarily call ICM get route + - thunderbolt: No need to take tb->lock in domain suspend/complete + - thunderbolt: Use correct ICM commands in system suspend + - thunderbolt: Add support for runtime PM + + * Enable AMD PCIe MP2 for AMDI0011 (LP: #1773940) + - SAUCE: i2c:amd I2C Driver based on PCI Interface for upcoming platform + - SAUCE: i2c:amd move out pointer in union i2c_event_base + - SAUCE: i2c:amd Depends on ACPI + - [Config] i2c: CONFIG_I2C_AMD_MP2=y on x86 + + * Microphone cannot be detected with front panel audio combo jack on HP Z8-G4 + machine (LP: #1789145) + - ALSA: hda/realtek - Fix HP Headset Mic can't record + + * Please enable CONFIG_PAGE_POISONING (LP: #1783651) + - [Config] Enable CONFIG_PAGE_POISONING configs + + * Tango platform uses __initcall without further checks (LP: #1787945) + - [Config] disable ARCH_TANGO + + * [18.10 FEAT] SMC-Direct (LP: #1786902) + - net/smc: determine port attributes independent from pnet table + - net/smc: add pnetid support + - net/smc: add base infrastructure for SMC-D and ISM + - net/smc: add pnetid support for SMC-D and ISM + - net/smc: add SMC-D support in CLC messages + - net/smc: add SMC-D support in data transfer + - net/smc: add SMC-D support in af_smc + - net/smc: add SMC-D diag support + - net/smc: provide smc mode in smc_diag.c + - net/smc: eliminate cursor read and write calls + - net/smc: add function to get link group from link + - net/smc: use DECLARE_BITMAP for rtokens_used_mask + - net/smc: remove local variable page in smc_rx_splice() + - net/smc: Remove a WARN_ON() statement + - net/smc: Simplify ib_post_(send|recv|srq_recv)() calls + - net/smc: fewer parameters for smc_llc_send_confirm_link() + - net/smc: use correct vlan gid of RoCE device + - net/smc: provide fallback reason code + - net/smc: improve delete link processing + - net: simplify sock_poll_wait + - net/smc: send response to test link signal + + * Miscellaneous Ubuntu changes + - [Config] update annotations for CONFIG_CRYPTO_SPECK_NEON + - [Config] fix up annotatios for CONFIG_CRYPTO_SPECK + + -- Seth Forshee Mon, 10 Sep 2018 07:08:38 -0500 + +linux (4.18.0-7.8) cosmic; urgency=medium + + * linux: 4.18.0-7.8 -proposed tracker (LP: #1789459) + + * pmtu.sh fails on 4.18 kernel (LP: #1789436) + - SAUCE: Revert "vti6: fix PMTU caching and reporting on xmit" + + -- Seth Forshee Tue, 28 Aug 2018 11:08:51 -0500 + +linux (4.18.0-6.7) cosmic; urgency=medium + + * linux: 4.18.0-6.7 -proposed tracker (LP: #1788881) + + * systemd 237-3ubuntu10 ADT test failure with linux 4.18.0-5.6 (LP: #1787440) + - Config: Disable BPF_JIT_ALWAYS_ON on i386 + + * execveat03 in ubuntu_ltp_syscalls failed on X/B (LP: #1786729) + - cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias() + + * Cosmic update to v4.18.5 stable release (LP: #1788874) + - EDAC: Add missing MEM_LRDDR4 entry in edac_mem_types[] + - pty: fix O_CLOEXEC for TIOCGPTPEER + - mm: Allow non-direct-map arguments to free_reserved_area() + - x86/mm/init: Pass unconverted symbol addresses to free_init_pages() + - x86/mm/init: Add helper for freeing kernel image pages + - x86/mm/init: Remove freed kernel image areas from alias mapping + - powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 + - ext4: fix spectre gadget in ext4_mb_regular_allocator() + - drm/i915/kvmgt: Fix potential Spectre v1 + - drm/amdgpu/pm: Fix potential Spectre v1 + - parisc: Remove unnecessary barriers from spinlock.h + - parisc: Remove ordered stores from syscall.S + - PCI: Restore resized BAR state on resume + - PCI / ACPI / PM: Resume all bridges on suspend-to-RAM + - PCI: hotplug: Don't leak pci_slot on registration failure + - PCI: aardvark: Size bridges before resources allocation + - PCI: Skip MPS logic for Virtual Functions (VFs) + - PCI: pciehp: Fix use-after-free on unplug + - PCI: pciehp: Fix unprotected list iteration in IRQ handler + - i2c: core: ACPI: Properly set status byte to 0 for multi-byte writes + - i2c: imx: Fix race condition in dma read + - reiserfs: fix broken xattr handling (heap corruption, bad retval) + - Linux 4.18.5 + + * [18.10 FEAT] Add kernel config option "CONFIG_SCLP_OFB" (LP: #1787898) + - [Config] CONFIG_SCLP_OFB=y for s390x + + * errors when scanning partition table of corrupted AIX disk (LP: #1787281) + - partitions/aix: fix usage of uninitialized lv_info and lvname structures + - partitions/aix: append null character to print data from disk + + * Apply NVMe bugfix from Google that bjf asked for (LP: #1787635) + - nvme-pci: add a memory barrier to nvme_dbbuf_update_and_check_event + + * ThinkPad systems have no HDMI sound when using the nvidia GPU (LP: #1787058) + - ACPI / OSI: Add OEM _OSI string to enable NVidia HDMI audio + + * Cosmic update to v4.18.4 stable release (LP: #1788454) + - l2tp: use sk_dst_check() to avoid race on sk->sk_dst_cache + - net_sched: fix NULL pointer dereference when delete tcindex filter + - net_sched: Fix missing res info when create new tc_index filter + - r8169: don't use MSI-X on RTL8168g + - ALSA: hda - Sleep for 10ms after entering D3 on Conexant codecs + - ALSA: hda - Turn CX8200 into D3 as well upon reboot + - ALSA: vx222: Fix invalid endian conversions + - ALSA: virmidi: Fix too long output trigger loop + - ALSA: cs5535audio: Fix invalid endian conversion + - ALSA: dice: fix wrong copy to rx parameters for Alesis iO26 + - ALSA: hda: Correct Asrock B85M-ITX power_save blacklist entry + - ALSA: memalloc: Don't exceed over the requested size + - ALSA: vxpocket: Fix invalid endian conversions + - ALSA: seq: Fix poll() error return + - media: gl861: fix probe of dvb_usb_gl861 + - USB: serial: sierra: fix potential deadlock at close + - USB: serial: pl2303: add a new device id for ATEN + - USB: option: add support for DW5821e + - ACPI / PM: save NVS memory for ASUS 1025C laptop + - tty: serial: 8250: Revert NXP SC16C2552 workaround + - serial: 8250_exar: Read INT0 from slave device, too + - serial: 8250_dw: always set baud rate in dw8250_set_termios + - serial: 8250_dw: Add ACPI support for uart on Broadcom SoC + - uio: fix wrong return value from uio_mmap() + - misc: sram: fix resource leaks in probe error path + - Revert "uio: use request_threaded_irq instead" + - Bluetooth: avoid killing an already killed socket + - isdn: Disable IIOCDBGVAR + - net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd() + - hv/netvsc: Fix NULL dereference at single queue mode fallback + - r8169: don't use MSI-X on RTL8106e + - ip_vti: fix a null pointer deferrence when create vti fallback tunnel + - net: ethernet: mvneta: Fix napi structure mixup on armada 3700 + - net: mvneta: fix mvneta_config_rss on armada 3700 + - cls_matchall: fix tcf_unbind_filter missing + - Linux 4.18.4 + + * Cosmic update to v4.18.3 stable release (LP: #1788453) + - x86/speculation/l1tf: Exempt zeroed PTEs from inversion + - Linux 4.18.3 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) + - x86/l1tf: Fix build error seen if CONFIG_KVM_INTEL is disabled + - x86: i8259: Add missing include file + - x86/hyper-v: Check for VP_INVAL in hyperv_flush_tlb_others() + - x86/platform/UV: Mark memblock related init code and data correctly + - x86/mm/pti: Clear Global bit more aggressively + - xen/pv: Call get_cpu_address_sizes to set x86_virt/phys_bits + - x86/mm: Disable ioremap free page handling on x86-PAE + - kbuild: verify that $DEPMOD is installed + - crypto: ccree - fix finup + - crypto: ccree - fix iv handling + - crypto: ccp - Check for NULL PSP pointer at module unload + - crypto: ccp - Fix command completion detection race + - crypto: x86/sha256-mb - fix digest copy in sha256_mb_mgr_get_comp_job_avx2() + - crypto: vmac - require a block cipher with 128-bit block size + - crypto: vmac - separate tfm and request context + - crypto: blkcipher - fix crash flushing dcache in error path + - crypto: ablkcipher - fix crash flushing dcache in error path + - crypto: skcipher - fix aligning block size in skcipher_copy_iv() + - crypto: skcipher - fix crash flushing dcache in error path + - ioremap: Update pgtable free interfaces with addr + - x86/mm: Add TLB purge to free pmd/pte page interfaces + - Linux 4.18.2 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) // CVE-2018-9363 + - Bluetooth: hidp: buffer overflow in hidp_process_report + + * linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before + walinuxagent.service (LP: #1739107) + - [Debian] hyper-v -- Ensure that hv-kvp-daemon.service starts before + walinuxagent.service + + * Miscellaneous Ubuntu changes + - SAUCE: ipvs: remove nbsp characters from Kconfig + - [Config] CONFIG_MPROFILE_KERNEL=y for ppc64el + - [Config] CONFIG_DRM_RCAR_LVDS=m for snapdragon + - [Config] CONFIG_MDIO_MSCC_MIIM=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROSEMI=n, CONFIG_NET_VENDOR_NI=n for s390x + - [Config] update annotations following config review + - [Debian] set CROSS_COMPILE when generating kernel configs + - [Config] Disable the Speck cipher + + -- Seth Forshee Fri, 24 Aug 2018 14:18:15 -0500 + +linux (4.18.0-5.6) cosmic; urgency=medium + + * Cosmic update to v4.18.1 stable release (LP: #1787264) + - x86/paravirt: Fix spectre-v2 mitigations for paravirt guests + - x86/speculation: Protect against userspace-userspace spectreRSB + - kprobes/x86: Fix %p uses in error messages + - x86/irqflags: Provide a declaration for native_save_fl + - x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT + - x86/speculation/l1tf: Change order of offset/type in swap entry + - x86/speculation/l1tf: Protect swap entries against L1TF + - x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation + - x86/speculation/l1tf: Make sure the first page is always reserved + - x86/speculation/l1tf: Add sysfs reporting for l1tf + - x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings + - x86/speculation/l1tf: Limit swap file size to MAX_PA/2 + - x86/bugs: Move the l1tf function and define pr_fmt properly + - sched/smt: Update sched_smt_present at runtime + - x86/smp: Provide topology_is_primary_thread() + - x86/topology: Provide topology_smt_supported() + - cpu/hotplug: Make bringup/teardown of smp threads symmetric + - cpu/hotplug: Split do_cpu_down() + - cpu/hotplug: Provide knobs to control SMT + - x86/cpu: Remove the pointless CPU printout + - x86/cpu/AMD: Remove the pointless detect_ht() call + - x86/cpu/common: Provide detect_ht_early() + - x86/cpu/topology: Provide detect_extended_topology_early() + - x86/cpu/intel: Evaluate smp_num_siblings early + - x86/CPU/AMD: Do not check CPUID max ext level before parsing SMP info + - x86/cpu/AMD: Evaluate smp_num_siblings early + - x86/apic: Ignore secondary threads if nosmt=force + - x86/speculation/l1tf: Extend 64bit swap file size limit + - x86/cpufeatures: Add detection of L1D cache flush support. + - x86/CPU/AMD: Move TOPOEXT reenablement before reading smp_num_siblings + - x86/speculation/l1tf: Protect PAE swap entries against L1TF + - x86/speculation/l1tf: Fix up pte->pfn conversion for PAE + - Revert "x86/apic: Ignore secondary threads if nosmt=force" + - cpu/hotplug: Boot HT siblings at least once + - x86/KVM: Warn user if KVM is loaded SMT and L1TF CPU bug being present + - x86/KVM/VMX: Add module argument for L1TF mitigation + - x86/KVM/VMX: Add L1D flush algorithm + - x86/KVM/VMX: Add L1D MSR based flush + - x86/KVM/VMX: Add L1D flush logic + - x86/KVM/VMX: Split the VMX MSR LOAD structures to have an host/guest numbers + - x86/KVM/VMX: Add find_msr() helper function + - x86/KVM/VMX: Separate the VMX AUTOLOAD guest/host number accounting + - x86/KVM/VMX: Extend add_atomic_switch_msr() to allow VMENTER only MSRs + - x86/KVM/VMX: Use MSR save list for IA32_FLUSH_CMD if required + - cpu/hotplug: Online siblings when SMT control is turned on + - x86/litf: Introduce vmx status variable + - x86/kvm: Drop L1TF MSR list approach + - x86/l1tf: Handle EPT disabled state proper + - x86/kvm: Move l1tf setup function + - x86/kvm: Add static key for flush always + - x86/kvm: Serialize L1D flush parameter setter + - x86/kvm: Allow runtime control of L1D flush + - cpu/hotplug: Expose SMT control init function + - cpu/hotplug: Set CPU_SMT_NOT_SUPPORTED early + - x86/bugs, kvm: Introduce boot-time control of L1TF mitigations + - Documentation: Add section about CPU vulnerabilities + - x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures + - x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content + - Documentation/l1tf: Fix typos + - cpu/hotplug: detect SMT disabled by BIOS + - x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() + - x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond' + - x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush() + - x86/irq: Demote irq_cpustat_t::__softirq_pending to u16 + - x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d + - x86: Don't include linux/irq.h from asm/hardirq.h + - x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d + - x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr() + - Documentation/l1tf: Remove Yonah processors from not vulnerable list + - x86/speculation: Simplify sysfs report of VMX L1TF vulnerability + - x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry + - KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry + - cpu/hotplug: Fix SMT supported evaluation + - x86/speculation/l1tf: Invert all not present mappings + - x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert + - x86/mm/pat: Make set_memory_np() L1TF safe + - x86/mm/kmmio: Make the tracer robust against L1TF + - tools headers: Synchronise x86 cpufeatures.h for L1TF additions + - x86/microcode: Allow late microcode loading with SMT disabled + - x86/smp: fix non-SMP broken build due to redefinition of + apic_id_is_primary_thread + - cpu/hotplug: Non-SMP machines do not make use of booted_once + - x86/init: fix build with CONFIG_SWAP=n + - Linux 4.18.1 + - [Config] updateconfigs after v4.18.1 stable update + + * Consider enabling CONFIG_NETWORK_PHY_TIMESTAMPING (LP: #1785816) + - [Config] Enable timestamping in network PHY devices + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SYSCTL_SYSCALL=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.18 + + -- Seth Forshee Wed, 15 Aug 2018 14:20:59 -0500 + +linux (4.18.0-4.5) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc8 + + -- Seth Forshee Mon, 06 Aug 2018 13:54:02 -0500 + +linux (4.18.0-3.4) cosmic; urgency=medium + + * Suspend fails in Ubuntu and Kubuntu 18.04 but works fine in Ubuntu and + Kubuntu 17.10 (and on Kubuntu 18.04 using kernel 4.14.47) (LP: #1774950) + - ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation + + * hinic interfaces aren't getting predictable names (LP: #1783138) + - hinic: Link the logical network device to the pci device in sysfs + + * libvirtd is unable to configure bridge devices inside of LXD containers + (LP: #1784501) + - kernfs: allow creating kernfs objects with arbitrary uid/gid + - sysfs, kobject: allow creating kobject belonging to arbitrary users + - kobject: kset_create_and_add() - fetch ownership info from parent + - driver core: set up ownership of class devices in sysfs + - net-sysfs: require net admin in the init ns for setting tx_maxrate + - net-sysfs: make sure objects belong to container's owner + - net: create reusable function for getting ownership info of sysfs inodes + - bridge: make sure objects belong to container's owner + - sysfs: Fix regression when adding a file to an existing group + + * locking sockets broken due to missing AppArmor socket mediation patches + (LP: #1780227) + - UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets + + * Update2 for ocxl driver (LP: #1781436) + - ocxl: Fix page fault handler in case of fault on dying process + + * HDMI/DP audio can't work on the laptop of Dell Latitude 5495 (LP: #1782689) + - ALSA: hda: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA + - vga_switcheroo: set audio client id according to bound GPU id + + * Allow Raven Ridge's audio controller to be runtime suspended (LP: #1782540) + - ALSA: hda: Add AZX_DCAPS_PM_RUNTIME for AMD Raven Ridge + + * Invoking obsolete 'firmware_install' target breaks snap build (LP: #1782166) + - snapcraft.yaml: stop invoking the obsolete (and non-existing) + 'firmware_install' target + + * snapcraft.yaml: missing ubuntu-retpoline-extract-one script breaks the build + (LP: #1782116) + - snapcraft.yaml: copy retpoline-extract-one to scripts before build + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc7 + + -- Seth Forshee Wed, 01 Aug 2018 08:49:40 -0500 + +linux (4.18.0-2.3) cosmic; urgency=medium + + * Kernel error "task zfs:pid blocked for more than 120 seconds" (LP: #1781364) + - SAUCE: (noup) zfs to 0.7.9-3ubuntu4 + + * [Regression] EXT4-fs error (device sda1): ext4_validate_inode_bitmap:99: + comm stress-ng: Corrupt inode bitmap (LP: #1780137) + - SAUCE: ext4: fix ext4_validate_inode_bitmap: comm stress-ng: Corrupt inode + bitmap + + * Cloud-init causes potentially huge boot delays with 4.15 kernels + (LP: #1780062) + - random: Make getrandom() ready earlier + + * hisi_sas_v3_hw: internal task abort: timeout and not done. (LP: #1777736) + - scsi: hisi_sas: Update a couple of register settings for v3 hw + + * hisi_sas: Add missing PHY spinlock init (LP: #1777734) + - scsi: hisi_sas: Add missing PHY spinlock init + + * hisi_sas: improve read performance by pre-allocating slot DMA buffers + (LP: #1777727) + - scsi: hisi_sas: Use dmam_alloc_coherent() + - scsi: hisi_sas: Pre-allocate slot DMA buffers + + * hisi_sas: Failures during host reset (LP: #1777696) + - scsi: hisi_sas: Only process broadcast change in phy_bcast_v3_hw() + - scsi: hisi_sas: Fix the conflict between dev gone and host reset + - scsi: hisi_sas: Adjust task reject period during host reset + - scsi: hisi_sas: Add a flag to filter PHY events during reset + - scsi: hisi_sas: Release all remaining resources in clear nexus ha + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu2, zfs to 0.7.9-3ubuntu3 + - SAUCE: mm: Fix exports that inadvertently make put_page() EXPORT_SYMBOL_GPL + - Enable zfs build + - SAUCE: Import aufs driver + - Revert "UBUNTU: [Config]: set CONFIG_EDAC_DEBUG=y for ARM64" + - [Config] retpoline -- review and accept retpoline changes + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc5 + * Rebase to v4.18-rc6 + + -- Seth Forshee Tue, 24 Jul 2018 08:41:22 -0500 + +linux (4.18.0-1.2) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc4 + + -- Seth Forshee Mon, 09 Jul 2018 07:36:31 -0500 + +linux (4.18.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) ima: require secure_boot rules in lockdown mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) lockdown: fix coordination of kernel module signature + verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + - SAUCE: Import aufs driver + - Update dropped.txt + - [Config] updateconfigs after 4.18-rc3 rebase + - SAUCE: (no-up): ASoC: Intel: bytcr-rt5660: Remove snd_soc_codec use for 4.18 + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc3 + + -- Seth Forshee Fri, 06 Jul 2018 10:46:37 -0500 + +linux (4.18.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 03 Jul 2018 11:10:33 -0500 + +linux (4.17.0-4.5) cosmic; urgency=medium + + * linux: 4.17.0-4.5 -proposed tracker (LP: #1779399) + + * Update to ocxl driver for 18.04.1 (LP: #1775786) + - powerpc: Add TIDR CPU feature for POWER9 + - powerpc: Use TIDR CPU feature to control TIDR allocation + - powerpc: use task_pid_nr() for TID allocation + - ocxl: Rename pnv_ocxl_spa_remove_pe to clarify it's action + - ocxl: Expose the thread_id needed for wait on POWER9 + - ocxl: Add an IOCTL so userspace knows what OCXL features are available + - ocxl: Document new OCXL IOCTLs + - ocxl: Fix missing unlock on error in afu_ioctl_enable_p9_wait() + + * Please include ax88179_178a and r8152 modules in d-i udeb (LP: #1771823) + - [Config:] d-i: Add ax88179_178a and r8152 to nic-modules + + * glibc pkeys test fail on powerpc (LP: #1776967) + - [Config] Temporarily disable CONFIG_PPC_MEM_KEYS + + * After update to 4.13-43 Intel Graphics are Laggy (LP: #1773520) + - Revert "drm/i915/edp: Allow alternate fixed mode for eDP if available." + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu1, zfs to 0.7.9-3ubuntu1 + + -- Seth Forshee Fri, 29 Jun 2018 13:37:52 -0500 + +linux (4.17.0-3.4) cosmic; urgency=medium + + * linux: 4.17.0-3.4 -proposed tracker (LP: #1779124) + + * Cosmic update to v4.17.3 stable release (LP: #1778997) + - net: aquantia: fix unsigned numvecs comparison with less than zero + - bonding: re-evaluate force_primary when the primary slave name changes + - cdc_ncm: avoid padding beyond end of skb + - ipv6: allow PMTU exceptions to local routes + - net: dsa: add error handling for pskb_trim_rcsum + - net: phy: dp83822: use BMCR_ANENABLE instead of BMSR_ANEGCAPABLE for DP83620 + - net/sched: act_simple: fix parsing of TCA_DEF_DATA + - tcp: verify the checksum of the first data segment in a new connection + - tls: fix use-after-free in tls_push_record + - tls: fix waitall behavior in tls_sw_recvmsg + - socket: close race condition between sock_close() and sockfs_setattr() + - udp: fix rx queue len reported by diag and proc interface + - net: in virtio_net_hdr only add VLAN_HLEN to csum_start if payload holds + vlan + - hv_netvsc: Fix a network regression after ifdown/ifup + - ACPICA: AML parser: attempt to continue loading table after error + - ext4: fix hole length detection in ext4_ind_map_blocks() + - ext4: update mtime in ext4_punch_hole even if no blocks are released + - ext4: do not allow external inodes for inline data + - ext4: bubble errors from ext4_find_inline_data_nolock() up to ext4_iget() + - ext4: correctly handle a zero-length xattr with a non-zero e_value_offs + - ext4: fix fencepost error in check for inode count overflow during resize + - driver core: Don't ignore class_dir_create_and_add() failure. + - Btrfs: allow empty subvol= again + - Btrfs: fix clone vs chattr NODATASUM race + - Btrfs: fix memory and mount leak in btrfs_ioctl_rm_dev_v2() + - btrfs: return error value if create_io_em failed in cow_file_range + - btrfs: scrub: Don't use inode pages for device replace + - ALSA: usb-audio: Disable the quirk for Nura headset + - ALSA: hda/conexant - Add fixup for HP Z2 G4 workstation + - ALSA: hda - Handle kzalloc() failure in snd_hda_attach_pcm_stream() + - ALSA: hda: add dock and led support for HP EliteBook 830 G5 + - ALSA: hda: add dock and led support for HP ProBook 640 G4 + - x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read() + - smb3: fix various xid leaks + - smb3: on reconnect set PreviousSessionId field + - CIFS: 511c54a2f69195b28afb9dd119f03787b1625bb4 adds a check for session + expiry + - cifs: For SMB2 security informaion query, check for minimum sized security + descriptor instead of sizeof FileAllInformation class + - nbd: fix nbd device deletion + - nbd: update size when connected + - nbd: use bd_set_size when updating disk size + - blk-mq: reinit q->tag_set_list entry only after grace period + - bdi: Move cgroup bdi_writeback to a dedicated low concurrency workqueue + - cpufreq: Fix new policy initialization during limits updates via sysfs + - cpufreq: ti-cpufreq: Fix an incorrect error return value + - cpufreq: governors: Fix long idle detection logic in load calculation + - libata: zpodd: small read overflow in eject_tray() + - libata: Drop SanDisk SD7UB3Q*G1001 NOLPM quirk + - nvme/pci: Sync controller reset for AER slot_reset + - w1: mxc_w1: Enable clock before calling clk_get_rate() on it + - x86/vector: Fix the args of vector_alloc tracepoint + - x86/apic/vector: Prevent hlist corruption and leaks + - x86/apic: Provide apic_ack_irq() + - x86/ioapic: Use apic_ack_irq() + - x86/platform/uv: Use apic_ack_irq() + - irq_remapping: Use apic_ack_irq() + - genirq/generic_pending: Do not lose pending affinity update + - genirq/affinity: Defer affinity setting if irq chip is busy + - genirq/migration: Avoid out of line call if pending is not set + - x86/intel_rdt: Enable CMT and MBM on new Skylake stepping + - media: uvcvideo: Prevent setting unavailable flags + - media: rc: ensure input/lirc device can be opened after register + - iwlwifi: fw: harden page loading code + - orangefs: set i_size on new symlink + - orangefs: report attributes_mask and attributes for statx + - HID: intel_ish-hid: ipc: register more pm callbacks to support hibernation + - HID: wacom: Correct logical maximum Y for 2nd-gen Intuos Pro large + - vhost: fix info leak due to uninitialized memory + - mm, page_alloc: do not break __GFP_THISNODE by zonelist reset + - Linux 4.17.3 + + * Use-after-free in sk_peer_label (LP: #1778646) + - SAUCE: apparmor: fix use after free in sk_peer_label + + * kernel: Fix memory leak on CCA and EP11 CPRB processing. (LP: #1775390) + - s390/zcrypt: Fix CCA and EP11 CPRB processing failure memory leak. + + * Various fixes for CXL kernel module (LP: #1774471) + - cxl: Configure PSL to not use APC virtual machines + - cxl: Disable prefault_mode in Radix mode + + * Bluetooth not working (LP: #1764645) + - Bluetooth: btusb: Apply QCA Rome patches for some ATH3012 models + + * Fake SAS addresses for SATA disks on HiSilicon D05 are non-unique + (LP: #1776750) + - scsi: hisi_sas: make SAS address of SATA disks unique + + * linux-snapdragon: wcn36xx: mac address generation on boot (LP: #1776491) + - [Config] arm64: snapdragon: WCN36XX_SNAPDRAGON_HACKS=y + - SAUCE: wcn36xx: read MAC from file or randomly generate one + + * Lenovo V330 needs patch in ideapad_laptop module for rfkill (LP: #1774636) + - SAUCE: Add Lenovo V330 to the ideapad_laptop rfkill blacklist + + * register on binfmt_misc may overflow and crash the system (LP: #1775856) + - fs/binfmt_misc.c: do not allow offset overflow + + * Network installs fail on SocioNext board (LP: #1775884) + - net: socionext: reset hardware in ndo_stop + - net: netsec: enable tx-irq during open callback + + * Fix several bugs in RDMA/hns driver (LP: #1770974) + - RDMA/hns: Drop local zgid in favor of core defined variable + - RDMA/hns: Add 64KB page size support for hip08 + - RDMA/hns: Rename the idx field of db + - RDMA/hns: Modify uar allocation algorithm to avoid bitmap exhaust + - RDMA/hns: Increase checking CMQ status timeout value + - RDMA/hns: Add reset process for RoCE in hip08 + - RDMA/hns: Fix the illegal memory operation when cross page + - RDMA/hns: Implement the disassociate_ucontext API + + * powerpc/livepatch: Implement reliable stack tracing for the consistency + model (LP: #1771844) + - powerpc/livepatch: Implement reliable stack tracing for the consistency + model + + * Adding back alx WoL feature (LP: #1772610) + - SAUCE: Revert "alx: remove WoL support" + - SAUCE: alx: add enable_wol paramenter + + * Lancer A0 Asic HBA's won't boot with 18.04 (LP: #1768103) + - scsi: lpfc: Fix WQ/CQ creation for older asic's. + - scsi: lpfc: Fix 16gb hbas failing cq create. + + * [LTCTest][OPAL][OP920] cpupower idle-info is not listing stop4 and stop5 + idle states when all CORES are guarded (LP: #1771780) + - powerpc/powernv/cpuidle: Init all present cpus for deep states + + * Huawei 25G/100G Network Adapters Unsupported (LP: #1770970) + - net-next/hinic: add pci device ids for 25ge and 100ge card + + * Expose arm64 CPU topology to userspace (LP: #1770231) + - drivers: base: cacheinfo: move cache_setup_of_node() + - drivers: base: cacheinfo: setup DT cache properties early + - cacheinfo: rename of_node to fw_token + - arm64/acpi: Create arch specific cpu to acpi id helper + - ACPI/PPTT: Add Processor Properties Topology Table parsing + - [Config] CONFIG_ACPI_PPTT=y + - ACPI: Enable PPTT support on ARM64 + - drivers: base cacheinfo: Add support for ACPI based firmware tables + - arm64: Add support for ACPI based firmware tables + - arm64: topology: rename cluster_id + - arm64: topology: enable ACPI/PPTT based CPU topology + - ACPI: Add PPTT to injectable table list + - arm64: topology: divorce MC scheduling domain from core_siblings + + * Vcs-Git header on bionic linux source package points to zesty git tree + (LP: #1766055) + - [Packaging]: Update Vcs-Git + + * Request to revert SAUCE patches in the 18.04 SRU and update with upstream + version (LP: #1768431) + - scsi: cxlflash: Handle spurious interrupts + - scsi: cxlflash: Remove commmands from pending list on timeout + - scsi: cxlflash: Synchronize reset and remove ops + - SAUCE: (no-up) cxlflash: OCXL diff between v2 and v3 + + * hisi_sas robustness fixes (LP: #1774466) + - scsi: hisi_sas: delete timer when removing hisi_sas driver + - scsi: hisi_sas: print device id for errors + - scsi: hisi_sas: Add some checks to avoid free'ing a sas_task twice + - scsi: hisi_sas: check host frozen before calling "done" function + - scsi: hisi_sas: check sas_dev gone earlier in hisi_sas_abort_task() + - scsi: hisi_sas: stop controller timer for reset + - scsi: hisi_sas: update PHY linkrate after a controller reset + - scsi: hisi_sas: change slot index allocation mode + - scsi: hisi_sas: Change common allocation mode of device id + - scsi: hisi_sas: Reset disks when discovered + - scsi: hisi_sas: Create a scsi_host_template per HW module + - scsi: hisi_sas: Init disks after controller reset + - scsi: hisi_sas: Try wait commands before before controller reset + - scsi: hisi_sas: Include TMF elements in struct hisi_sas_slot + - scsi: hisi_sas: Add v2 hw force PHY function for internal ATA command + - scsi: hisi_sas: Terminate STP reject quickly for v2 hw + - scsi: hisi_sas: Fix return value when get_free_slot() failed + - scsi: hisi_sas: Mark PHY as in reset for nexus reset + + * hisi_sas: Support newer v3 hardware (LP: #1774467) + - scsi: hisi_sas: update RAS feature for later revision of v3 HW + - scsi: hisi_sas: check IPTT is valid before using it for v3 hw + - scsi: hisi_sas: fix PI memory size + - scsi: hisi_sas: config ATA de-reset as an constrained command for v3 hw + - scsi: hisi_sas: remove redundant handling to event95 for v3 + - scsi: hisi_sas: add readl poll timeout helper wrappers + - scsi: hisi_sas: workaround a v3 hw hilink bug + - scsi: hisi_sas: Add LED feature for v3 hw + + * hisi_sas: improve performance by optimizing DQ locking (LP: #1774472) + - scsi: hisi_sas: optimise the usage of DQ locking + - scsi: hisi_sas: relocate smp sg map + - scsi: hisi_sas: make return type of prep functions void + - scsi: hisi_sas: allocate slot buffer earlier + - scsi: hisi_sas: Don't lock DQ for complete task sending + - scsi: hisi_sas: Use device lock to protect slot alloc/free + - scsi: hisi_sas: add check of device in hisi_sas_task_exec() + - scsi: hisi_sas: fix a typo in hisi_sas_task_prep() + + * FS-Cache: Assertion failed: FS-Cache: 6 == 5 is false (LP: #1774336) + - SAUCE: CacheFiles: fix a read_waiter/read_copier race + + * enable mic-mute hotkey and led on Lenovo M820z and M920z (LP: #1774306) + - ALSA: hda/realtek - Enable mic-mute hotkey for several Lenovo AIOs + + * hns3 driver updates (LP: #1768670) + - net: hns3: Remove error log when getting pfc stats fails + - net: hns3: fix to correctly fetch l4 protocol outer header + - net: hns3: Fixes the out of bounds access in hclge_map_tqp + - net: hns3: Fixes the error legs in hclge_init_ae_dev function + - net: hns3: fix for phy_addr error in hclge_mac_mdio_config + - net: hns3: Fix to support autoneg only for port attached with phy + - net: hns3: fix a dead loop in hclge_cmd_csq_clean + - net: hns3: Fix for packet loss due wrong filter config in VLAN tbls + - net: hns3: Remove packet statistics in the range of 8192~12287 + - net: hns3: Add support of hardware rx-vlan-offload to HNS3 VF driver + - net: hns3: Fix for setting mac address when resetting + - net: hns3: remove add/del_tunnel_udp in hns3_enet module + - net: hns3: fix for cleaning ring problem + - net: hns3: refactor the loopback related function + - net: hns3: Fix for deadlock problem occurring when unregistering ae_algo + - net: hns3: Fix for the null pointer problem occurring when initializing + ae_dev failed + - net: hns3: Add a check for client instance init state + - net: hns3: Change return type of hnae3_register_ae_dev + - net: hns3: Change return type of hnae3_register_ae_algo + - net: hns3: Change return value in hnae3_register_client + - net: hns3: Fixes the back pressure setting when sriov is enabled + - net: hns3: Fix for fiber link up problem + - net: hns3: Add support of .sriov_configure in HNS3 driver + - net: hns3: Fixes the missing PCI iounmap for various legs + - net: hns3: Fixes error reported by Kbuild and internal review + - net: hns3: Fixes API to fetch ethernet header length with kernel default + - net: hns3: cleanup of return values in hclge_init_client_instance() + - net: hns3: Fix the missing client list node initialization + - net: hns3: Fix for hns3 module is loaded multiple times problem + - net: hns3: Use enums instead of magic number in hclge_is_special_opcode + - net: hns3: Fix for netdev not running problem after calling net_stop and + net_open + - net: hns3: Fixes kernel panic issue during rmmod hns3 driver + - net: hns3: Fix for CMDQ and Misc. interrupt init order problem + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: Add support for tx_accept_tag2 and tx_accept_untag2 config + - net: hns3: Add STRP_TAGP field support for hardware revision 0x21 + - net: hns3: Add support to enable TX/RX promisc mode for H/W rev(0x21) + - net: hns3: Fix for PF mailbox receving unknown message + - net: hns3: Fixes the state to indicate client-type initialization + - net: hns3: Fixes the init of the VALID BD info in the descriptor + - net: hns3: Removes unnecessary check when clearing TX/RX rings + - net: hns3: Clear TX/RX rings when stopping port & un-initializing client + - net: hns3: Remove unused led control code + - net: hns3: Adds support for led locate command for copper port + - net: hns3: Fixes initalization of RoCE handle and makes it conditional + - net: hns3: Disable vf vlan filter when vf vlan table is full + - net: hns3: Add support for IFF_ALLMULTI flag + - net: hns3: Add repeat address checking for setting mac address + - net: hns3: Fix setting mac address error + - net: hns3: Fix for service_task not running problem after resetting + - net: hns3: Fix for hclge_reset running repeatly problem + - net: hns3: Fix for phy not link up problem after resetting + - net: hns3: Add missing break in misc_irq_handle + - net: hns3: Fix for vxlan tx checksum bug + - net: hns3: Optimize the PF's process of updating multicast MAC + - net: hns3: Optimize the VF's process of updating multicast MAC + - SAUCE: {topost} net: hns3: add support for serdes loopback selftest + - SAUCE: {topost} net: hns3: RX BD information valid only in last BD except + VLD bit and buffer size + - SAUCE: {topost} net: hns3: remove hclge_get_vector_index from + hclge_bind_ring_with_vector + - SAUCE: {topost} net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - SAUCE: {topost} net: hns3: add vector status check before free vector + - SAUCE: {topost} net: hns3: add l4_type check for both ipv4 and ipv6 + - SAUCE: {topost} net: hns3: remove unused head file in hnae3.c + - SAUCE: {topost} net: hns3: extraction an interface for state state + init|uninit + - SAUCE: {topost} net: hns3: print the ret value in error information + - SAUCE: {topost} net: hns3: remove the Redundant put_vector in + hns3_client_uninit + - SAUCE: {topost} net: hns3: add unlikely for error check + - SAUCE: {topost} net: hns3: remove back in struct hclge_hw + - SAUCE: {topost} net: hns3: use lower_32_bits and upper_32_bits + - SAUCE: {topost} net: hns3: remove unused hclge_ring_to_dma_dir + - SAUCE: {topost} net: hns3: remove useless code in hclge_cmd_send + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean + - SAUCE: {topost} net: hns3: using modulo for cyclic counters in + hclge_cmd_send + - SAUCE: {topost} net: hns3: remove a redundant hclge_cmd_csq_done + - SAUCE: {topost} net: hns3: remove some unused members of some structures + - SAUCE: {topost} net: hns3: give default option while dependency HNS3 set + - SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead of + kzalloc/dma_map_single + - SAUCE: {topost} net: hns3: modify hnae_ to hnae3_ + - SAUCE: {topost} net: hns3: fix unused function warning in VF driver + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: standardize the handle of return value + - SAUCE: {topost} net: hns3: remove extra space and brackets + - SAUCE: {topost} net: hns3: fix unreasonable code comments + - SAUCE: {topost} net: hns3: use decimal for bit offset macros + - SAUCE: {topost} net: hns3: modify inconsistent bit mask macros + - SAUCE: {topost} net: hns3: fix mislead parameter name + - SAUCE: {topost} net: hns3: remove unused struct member and definition + - SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver + - SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE + - SAUCE: {topost} net: hns3: optimize the process of notifying roce client + - SAUCE: {topost} net: hns3: Add calling roce callback function when link + status change + - SAUCE: {topost} net: hns3: fix tc setup when netdev is first up + - SAUCE: {topost} net: hns3: fix for mac pause not disable in pfc mode + - SAUCE: {topost} net: hns3: fix for waterline not setting correctly + - SAUCE: {topost} net: hns3: fix for l4 checksum offload bug + - SAUCE: {topost} net: hns3: fix for mailbox message truncated problem + - SAUCE: {topost} net: hns3: Add configure for mac minimal frame size + - SAUCE: {topost} net: hns3: fix warning bug when doing lp selftest + - SAUCE: {topost} net: hns3: fix get_vector ops in hclgevf_main module + - SAUCE: {topost} net: hns3: remove the warning when clear reset cause + - SAUCE: {topost} net: hns3: Use roce handle when calling roce callback + function + - SAUCE: {topost} net: hns3: prevent sending command during global or core + reset + - SAUCE: {topost} net: hns3: modify the order of initializeing command queue + register + - SAUCE: {topost} net: hns3: reset net device with rtnl_lock + - SAUCE: {topost} net: hns3: prevent to request reset frequently + - SAUCE: {topost} net: hns3: correct reset event status register + - SAUCE: {topost} net: hns3: separate roce from nic when resetting + - SAUCE: net: hns3: Fix for phy link issue when using marvell phy driver + - SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet + - SAUCE: {topost} net: hns3: remove unnecessary ring configuration operation + while resetting + - SAUCE: {topost} net: hns3: fix for reset_level default assignment probelm + - SAUCE: {topost} net: hns3: fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - SAUCE: {topost} net: hns3: fix comments for hclge_get_ring_chain_from_mbx + - SAUCE: net: hns3: Fix for VF mailbox cannot receiving PF response + - SAUCE: net: hns3: Fix for VF mailbox receiving unknown message + - SAUCE: net: hns3: Optimize PF CMDQ interrupt switching process + + * CVE-2018-7755 + - SAUCE: floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl + + * Incorrect blacklist of bcm2835_wdt (LP: #1766052) + - [Packaging] Fix missing watchdog for Raspberry Pi + + * kernel: Fix arch random implementation (LP: #1775391) + - s390/archrandom: Rework arch random implementation. + + * [Ubuntu 1804][boston][ixgbe] EEH causes kernel BUG at /build/linux- + jWa1Fv/linux-4.15.0/drivers/pci/msi.c:352 (i2S) (LP: #1776389) + - ixgbe/ixgbevf: Free IRQ when PCI error recovery removes the device + + * Cosmic update to v4.17.2 stable release (LP: #1779117) + - crypto: chelsio - request to HW should wrap + - blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers + - KVM: X86: Fix reserved bits check for MOV to CR3 + - KVM: x86: introduce linear_{read,write}_system + - kvm: fix typo in flag name + - kvm: nVMX: Enforce cpl=0 for VMX instructions + - KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and + kvm_write_guest_virt_system + - kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access + - staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy + - NFC: pn533: don't send USB data off of the stack + - usbip: vhci_sysfs: fix potential Spectre v1 + - usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver + - usb-storage: Add compatibility quirk flags for G-Technologies G-Drive + - Input: xpad - add GPD Win 2 Controller USB IDs + - phy: qcom-qusb2: Fix crash if nvmem cell not specified + - usb: core: message: remove extra endianness conversion in + usb_set_isoch_delay + - usb: typec: wcove: Remove dependency on HW FSM + - usb: gadget: function: printer: avoid wrong list handling in printer_write() + - usb: gadget: udc: renesas_usb3: fix double phy_put() + - usb: gadget: udc: renesas_usb3: should remove debugfs + - usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add + udc + - usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc + - usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error + - usb: gadget: udc: renesas_usb3: disable the controller's irqs for + reconnecting + - serial: sh-sci: Stop using printk format %pCr + - tty/serial: atmel: use port->name as name in request_irq() + - serial: samsung: fix maxburst parameter for DMA transactions + - serial: 8250: omap: Fix idling of clocks for unused uarts + - vmw_balloon: fixing double free when batching mode is off + - doc: fix sysfs ABI documentation + - arm64: defconfig: Enable CONFIG_PINCTRL_MT7622 by default + - tty: pl011: Avoid spuriously stuck-off interrupts + - crypto: ccree - correct host regs offset + - Input: goodix - add new ACPI id for GPD Win 2 touch screen + - Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID + - crypto: caam - strip input zeros from RSA input buffer + - crypto: caam - fix DMA mapping dir for generated IV + - crypto: caam - fix IV DMA mapping and updating + - crypto: caam/qi - fix IV DMA mapping and updating + - crypto: caam - fix size of RSA prime factor q + - crypto: cavium - Fix fallout from CONFIG_VMAP_STACK + - crypto: cavium - Limit result reading attempts + - crypto: vmx - Remove overly verbose printk from AES init routines + - crypto: vmx - Remove overly verbose printk from AES XTS init + - crypto: omap-sham - fix memleak + - Linux 4.17.2 + + * Cosmic update to v4.17.1 stable release (LP: #1779116) + - netfilter: nf_flow_table: attach dst to skbs + - bnx2x: use the right constant + - ip6mr: only set ip6mr_table from setsockopt when ip6mr_new_table succeeds + - ipv6: omit traffic class when calculating flow hash + - l2tp: fix refcount leakage on PPPoL2TP sockets + - netdev-FAQ: clarify DaveM's position for stable backports + - net: metrics: add proper netlink validation + - net/packet: refine check for priv area size + - rtnetlink: validate attributes in do_setlink() + - sctp: not allow transport timeout value less than HZ/5 for hb_timer + - team: use netdev_features_t instead of u32 + - vrf: check the original netdevice for generating redirect + - net: dsa: b53: Fix for brcm tag issue in Cygnus SoC + - ipmr: fix error path when ipmr_new_table fails + - PCI: hv: Do not wait forever on a device that has disappeared + - Linux 4.17.1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: crypto: thunderx_zip: Fix fallout from + CONFIG_VMAP_STACK" + - Revert "UBUNTU: SAUCE: cred: Add clone_cred() interface" + - SAUCE: apparmor: userspace queries + - SAUCE: apparmor: patch to provide compatibility with v2.x net rules + - SAUCE: apparmor: af_unix mediation + + -- Seth Forshee Thu, 28 Jun 2018 08:03:32 -0500 + +linux (4.17.0-2.3) cosmic; urgency=medium + + * linux: 4.17.0-2.3 -proposed tracker (LP: #1776276) + + * Miscellaneous Ubuntu changes + - Config: remove IrDA from annotations + - Config: remove scsi drivers from annotations + - Config: remove BT_HCIBTUART from annotations + - Config: pstore zlib support was renamed + - Config: disable NVRAM for armhf on annotations + - Config: Disable VT on s390x + - Config: Update SSB and B43/B44 options + - Config: some options not supported on some arches anymore + - Config: renamed and removed options + - Config: TCG_CRB is required for IMA on ACPI systems + - Config: EXTCON_AXP288 depends on X86 + - Config: CONFIG_FSI depends on OF + - Config: DRM_RCAR_LVDS now depends on DRM + - CONFIG: Allow CONFIG_LEDS_MLXCPLD for i386 + - Config: Enable HINIC on arm64 + - Config: Set PPS and PTP_1588_CLOCK as y + - Config: Some NF_TABLES options are built-in now + - Config: GENERIC_CPU for ppc64el + - Config: KEXEC_FILE=n for s390x + - Config: CRYPTO_DEFLATE is needed by PSTORE_DEFLATE_COMPRESS + - Config: Disable STM32 support + - Config: Enable FORTIFY_SOURCE for armhf + - Config: use STRONG instead of AUTO for CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * Rebase to v4.17 + + -- Thadeu Lima de Souza Cascardo Mon, 11 Jun 2018 15:22:10 -0300 + +linux (4.17.0-1.2) cosmic; urgency=medium + + [ Seth Forshee ] + * [Config] enable EDAC_DEBUG on ARM64 (LP: #1772516) + - [Config]: set CONFIG_EDAC_DEBUG=y for ARM64 + + * Ubuntu 18.04 kernel crashed while in degraded mode (LP: #1770849) + - SAUCE: powerpc/perf: Fix memory allocation for core-imc based on + num_possible_cpus() + + * Integrated Webcam Realtek Integrated_Webcam_HD (0bda:58f4) not working in + DELL XPS 13 9370 with firmware 1.50 (LP: #1763748) + - SAUCE: media: uvcvideo: Support realtek's UVC 1.5 device + + * Switch Build-Depends: transfig to fig2dev (LP: #1770770) + - [Config] update Build-Depends: transfig to fig2dev + + * update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware fails + to load (LP: #1728238) + - Revert "UBUNTU: SAUCE: (no-up) i915: Remove MODULE_FIRMWARE statements for + unreleased firmware" + + * No driver for Huawei network adapters on arm64 (LP: #1769899) + - net-next/hinic: add arm64 support + + * linux-snapdragon: reduce EPROBEDEFER noise during boot (LP: #1768761) + - [Config] snapdragon: DRM_I2C_ADV7511=y + + * Add d-i support for Huawei NICs (LP: #1767490) + - d-i: add hinic to nic-modules udeb + + * Acer Swift sf314-52 power button not managed (LP: #1766054) + - SAUCE: platform/x86: acer-wmi: add another KEY_POWER keycode + + * Include nfp driver in linux-modules (LP: #1768526) + - [Config] Add nfp.ko to generic inclusion list + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - [Config] CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y + - SAUCE: (efi-lockdown) really lock down kernel under EFI secure boot + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu3, zfs to 0.7.5-1ubuntu17 + - enable zfs build + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) ima: require secure_boot rules in + lockdown mode" + - Rebased to v4.17-rc6 + + -- Thadeu Lima de Souza Cascardo Tue, 22 May 2018 14:48:13 -0300 + +linux (4.17.0-0.1) bionic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.17-rc4 + + -- Thadeu Lima de Souza Cascardo Tue, 08 May 2018 16:38:51 -0300 + +linux (4.17.0-0.0) bionic; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Fri, 27 Apr 2018 11:01:13 -0300 + +linux (4.16.0-4.5) bionic; urgency=medium + + * [18.04 FEAT] Add kvm_stat from kernel tree (LP: #1734130) + - tools/kvm_stat: Fix python3 syntax + - tools/kvm_stat: Don't use deprecated file() + - tools/kvm_stat: Remove unused function + - [Packaging] Add linux-tools-host package for VM host tools + - [Config] do_tools_host=true for amd64 + + * [Featire] CNL: Enable RAPL support (LP: #1685712) + - powercap: RAPL: Add support for Cannon Lake + + * Bionic update to v4.16.2 stable release (LP: #1763388) + - sparc64: Oracle DAX driver depends on SPARC64 + - arp: fix arp_filter on l3slave devices + - net: dsa: Discard frames from unused ports + - net/ipv6: Increment OUTxxx counters after netfilter hook + - net/sched: fix NULL dereference in the error path of tcf_bpf_init() + - pptp: remove a buggy dst release in pptp_connect() + - sctp: do not leak kernel memory to user space + - sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6 + - vlan: also check phy_driver ts_info for vlan's real device + - net: fool proof dev_valid_name() + - ip_tunnel: better validate user provided tunnel names + - ipv6: sit: better validate user provided tunnel names + - ip6_gre: better validate user provided tunnel names + - ip6_tunnel: better validate user provided tunnel names + - vti6: better validate user provided tunnel names + - net_sched: fix a missing idr_remove() in u32_delete_key() + - nfp: use full 40 bits of the NSP buffer address + - Linux 4.16.2 + + * sky2 gigabit ethernet driver sometimes stops working after lid-open resume + from sleep (88E8055) (LP: #1758507) // Bionic update to v4.16.2 stable + release (LP: #1763388) + - sky2: Increase D3 delay to sky2 stops working after suspend + + * Merge the linux-snapdragon kernel into bionic master/snapdragon + (LP: #1763040) + - arm64: defconfig: enable REMOTEPROC + - arm64: defconfig: enable QCOM audio drivers for APQ8016 and DB410c + - kernel: configs; add distro.config + - arm64: configs: enable WCN36xx + - kernel: distro.config: enable debug friendly USB network adpater + - arm64: configs: enable QCOM Venus + - arm64: defconfig: Enable a53/apcs and avs + - arm64: defconfig: enable ondemand governor as default + - arm64: defconfig: enable QCOM_TSENS + - kernel: configs: enable dm_mod and dm_crypt + - Force the SMD regulator driver to be compiled-in + - arm64: defconfig: enable CFG80211_DEFAULT_PS by default + - arm64: configs: enable BT_QCOMSMD + - kernel: configs: add more USB net drivers + - arm64: defconfig: disable ANALOG_TV and DIGITAL_TV + - arm64: configs: Enable camera drivers + - kernel: configs: add freq stat to sysfs + - arm64: defconfig: enable CONFIG_USB_CONFIGFS_F_FS by default + - arm64: defconfig: Enable QRTR features + - kernel: configs: set USB_CONFIG_F_FS in distro.config + - kernel: distro.config: enable 'schedutil' CPUfreq governor + - kernel: distro.config: enable 'fq' and 'fq_codel' qdiscs + - kernel: distro.config: enable 'BBR' TCP congestion algorithm + - arm64: defconfig: enable LEDS_QCOM_LPG + - HACK: drm/msm/iommu: Remove runtime_put calls in map/unmap + - power: avs: Add support for CPR (Core Power Reduction) + - power: avs: cpr: Use raw mem access for qfprom + - power: avs: cpr: fix with new reg_sequence structures + - power: avs: cpr: Register with cpufreq-dt + - regulator: smd: Add floor and corner operations + - PM / OPP: Support adjusting OPP voltages at runtime + - PM / OPP: Drop RCU usage in dev_pm_opp_adjust_voltage() + - PM / OPP: HACK: Allow to set regulator without opp_list + - PM / OPP: Add a helper to get an opp regulator for device + - cpufreq: Add apq8016 to cpufreq-dt-platdev blacklist + - regulator: smd: Allow REGULATOR_QCOM_SMD_RPM=m + - ov5645: I2C address change + - i2c: Add Qualcomm Camera Control Interface driver + - camss: vfe: Skip first four frames from sensor + - camss: Do not register if no cameras are present + - i2c-qcom-cci: Fix run queue completion timeout + - i2c-qcom-cci: Fix I2C address bug + - media: ov5645: Fix I2C address + - drm/bridge/adv7511: Delay clearing of HPD interrupt status + - HACK: drm/msm/adv7511: Don't rely on interrupts for EDID parsing + - leds: Add driver for Qualcomm LPG + - wcn36xx: Fix warning due to duplicate scan_completed notification + - arm64: dts: Add CPR DT node for msm8916 + - arm64: dts: add spmi-regulator nodes + - arm64: dts: msm8916: Add cpufreq support + - arm64: dts: msm8916: Add a shared CPU opp table + - arm64: dts: msm8916: Add cpu cooling maps + - arm64: dts: pm8916: Mark the s2 regulator as always-on + - arm64: dts: qcom: msm8916: Add msm8916 A53 PLL DT node + - arm64: dts: qcom: msm8916: Use the new APCS mailbox driver + - arm64: dts: qcom: msm8916: Add clock properties to the APCS node + - dt-bindings: media: Binding document for Qualcomm Camera Control Interface + driver + - MAINTAINERS: Add Qualcomm Camera Control Interface driver + - DT: leds: Add Qualcomm Light Pulse Generator binding + - arm64: dts: qcom: msm8996: Add mpp and lpg blocks + - arm64: dts: qcom: Add pwm node for pm8916 + - arm64: dts: qcom: Add user LEDs on db820c + - arm64: dts: qcom: Add WiFI/BT LEDs on db820c + - ARM: dts: qcom: Add LPG node to pm8941 + - ARM: dts: qcom: honami: Add LPG node and RGB LED + - arm64: dts: qcom: Add Camera Control Interface support + - arm64: dts: qcom: Add apps_iommu vfe child node + - arm64: dts: qcom: Add camss device node + - arm64: dts: qcom: Add ov5645 device nodes + - arm64: dts: msm8916: Fix camera sensors I2C addresses + - arm: dts: qcom: db410c: Enable PWM signal on MPP4 + - packaging: arm64: add a uboot flavour - part1 + - packaging: arm64: add a uboot flavour - part2 + - packaging: arm64: add a uboot flavour - part3 + - packaging: arm64: add a uboot flavour - part4 + - packaging: arm64: add a uboot flavour - part5 + - packaging: arm64: rename uboot flavour to snapdragon + - [Config] updateconfigs after qcomlt import + - [Config] arm64: snapdragon: COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: MSM_GCC_8916=y + - [Config] arm64: snapdragon: REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: SPMI=y, SPMI_MSM_PMIC_ARB=y + - [Config] arm64: snapdragon: REGMAP_SPMI=y, PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: MFD_SPMI_PMIC=y + - [Config] arm64: snapdragon: QCOM_SMEM=y + - [Config] arm64: snapdragon: RPMSG=y, RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: QCOM_SMD_RPM=y, REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: QCOM_HIDMA=y, QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: QCOM_CPR=y + - [Config] arm64: snapdragon: QCOM_QFPROM=y, QCOM_TSENS=y + - [Config] arm64: snapdragon: MMC_SDHCI=y, MMC_SDHCI_PLTFM=y, MMC_SDHCI_MSM=y + - [Config] turn off DRM_MSM_REGISTER_LOGGING + - [Config] arm64: snapdragon: I2C_QUP=y + - [Config] arm64: snapdragon: SPI_QUP=y + - [Config] arm64: snapdragon: USB_ULPI_BUS=y, PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_CTRL=y + - [Config] arm64: snapdragon: QCOM_SMSM=y + - [Config] arm64: snapdragon: QCOM_SMP2P=y + - [Config] arm64: snapdragon: DRM_MSM=y + - [Config] arm64: snapdragon: SND_SOC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_PIL=m + - [Config] arm64: snapdragon: INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: MEDIA_SUBDRV_AUTOSELECT=y, VIDEO_OV5645=m + - [Config] arm64: snapdragon: SND_SOC_APQ8016_SBC=y, SND_SOC_LPASS_APQ8016=y + - [Config] arm64: snapdragon: SND_SOC_MSM8916_WCD_ANALOG=y, + SND_SOC_MSM8916_WCD_DIGITAL=y + - SAUCE: media: ov5645: skip address change if dt addr == default addr + - SAUCE: drm/msm/adv7511: wrap hacks under CONFIG_ADV7511_SNAPDRAGON_HACKS + #ifdefs + - [Config] arm64: snapdragon: ADV7511_SNAPDRAGON_HACKS=y + - [Packaging] fix up snapdragon abi paths + + * LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: Manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: Manage task security blobs + - SAUCE: LSM stacking: LSM: Manage remaining security blobs + - SAUCE: LSM stacking: LSM: General stacking + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: add apparmor and selinux proc dirs + - SAUCE: LSM stacking: remove procfs context interface + + * linux 4.13.0-13.14 ADT test failure with linux 4.13.0-13.14 + (LP: #1720779) // LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: check for invalid zero sized writes + + * Support cq/rq record doorbell for RDMA on HSilicon hip08 systems + (LP: #1762755) + - RDMA/hns: Support rq record doorbell for the user space + - RDMA/hns: Support cq record doorbell for the user space + - RDMA/hns: Support rq record doorbell for kernel space + - RDMA/hns: Support cq record doorbell for kernel space + - RDMA/hns: Fix cqn type and init resp + - RDMA/hns: Fix init resp when alloc ucontext + - RDMA/hns: Fix cq record doorbell enable in kernel + + * Replace LPC patchset with upstream version (LP: #1762758) + - Revert "UBUNTU: SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver" + - Revert "UBUNTU: SAUCE: HISI LPC: Add ACPI support" + - Revert "UBUNTU: SAUCE: ACPI / scan: do not enumerate Indirect IO host + children" + - Revert "UBUNTU: SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT + bindings" + - Revert "UBUNTU: SAUCE: OF: Add missing I/O range exception for indirect-IO + devices" + - Revert "UBUNTU: SAUCE: PCI: Apply the new generic I/O management on PCI IO + hosts" + - Revert "UBUNTU: SAUCE: PCI: Add fwnode handler as input param of + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: PCI: Remove unused __weak attribute in + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: LIB: Introduce a generic PIO mapping method" + - lib: Add generic PIO mapping method + - PCI: Remove __weak tag from pci_register_io_range() + - PCI: Add fwnode handler as input param of pci_register_io_range() + - PCI: Apply the new generic I/O management on PCI IO hosts + - of: Add missing I/O range exception for indirect-IO devices + - HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use + - ACPI / scan: Do not enumerate Indirect IO host children + - HISI LPC: Add ACPI support + - MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver + + * Enable Tunneled Operations on POWER9 (LP: #1762448) + - powerpc/powernv: Enable tunneled operations + - cxl: read PHB indications from the device tree + + * PSL traces reset after PERST for debug AFU image (LP: #1762462) + - cxl: Enable NORST bit in PSL_DEBUG register for PSL9 + + * NFS + sec=krb5 is broken (LP: #1759791) + - sunrpc: remove incorrect HMAC request initialization + + * Raspberry Pi 3 microSD support missing from the installer (LP: #1729128) + - d-i: add bcm2835 to block-modules + + * Backport USB core quirks (LP: #1762695) + - usb: core: Add "quirks" parameter for usbcore + - usb: core: Copy parameter string correctly and remove superfluous null check + - usb: core: Add USB_QUIRK_DELAY_CTRL_MSG to usbcore quirks + + * [Ubuntu 18.04] cryptsetup: 'device-mapper: reload ioctl on failed' when + setting up a second end-to-end encrypted disk (LP: #1762353) + - SAUCE: s390/crypto: Adjust s390 aes and paes cipher + + * System Z {kernel} UBUNTU18.04 wrong kernel config (LP: #1762719) + - s390: move nobp parameter functions to nospec-branch.c + - s390: add automatic detection of the spectre defense + - s390: report spectre mitigation via syslog + - s390: add sysfs attributes for spectre + - [Config] CONFIG_EXPOLINE_AUTO=y, CONFIG_KERNEL_NOBP=n for s390 + - s390: correct nospec auto detection init order + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 + - powerpc/64s: Wire up cpu_show_spectre_v2() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5753 + - powerpc/64s: Wire up cpu_show_spectre_v1() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5754 + - powerpc/rfi-flush: Move the logic to avoid a redo into the debugfs code + - powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again + - powerpc/rfi-flush: Always enable fallback flush on pseries + - powerpc/rfi-flush: Differentiate enabled and patched flush types + - powerpc/rfi-flush: Call setup_rfi_flush() after LPM migration + - powerpc/64s: Move cpu_show_meltdown() + - powerpc/64s: Enhance the information in cpu_show_meltdown() + - powerpc/powernv: Use the security flags in pnv_setup_rfi_flush() + - powerpc/pseries: Use the security flags in pseries_setup_rfi_flush() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 // + CVE-2017-5753 // CVE-2017-5754 + - powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags + - powerpc: Add security feature flags for Spectre/Meltdown + - powerpc/pseries: Set or clear security feature flags + - powerpc/powernv: Set or clear security feature flags + + * Hisilicon network subsystem 3 support (LP: #1761610) + - net: hns3: export pci table of hclge and hclgevf to userspace + - d-i: Add hns3 drivers to nic-modules + + * "ip a" command on a guest VM shows UNKNOWN status (LP: #1761534) + - virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS + + * perf vendor events arm64: Enable JSON events for ThunderX2 B0 (LP: #1760712) + - perf vendor events: Drop incomplete multiple mapfile support + - perf vendor events: Fix error code in json_events() + - perf vendor events: Drop support for unused topic directories + - perf vendor events: Add support for pmu events vendor subdirectory + - perf vendor events arm64: Relocate ThunderX2 JSON to cavium subdirectory + - perf vendor events arm64: Relocate Cortex A53 JSONs to arm subdirectory + - perf vendor events: Add support for arch standard events + - perf vendor events arm64: Add armv8-recommended.json + - perf vendor events arm64: Fixup ThunderX2 to use recommended events + - perf vendor events arm64: fixup A53 to use recommended events + - perf vendor events arm64: add HiSilicon hip08 JSON file + - perf vendor events arm64: Enable JSON events for ThunderX2 B0 + + * Warning "cache flush timed out!" seen when unloading the cxl driver + (LP: #1762367) + - cxl: Check if PSL data-cache is available before issue flush request + + * Bionic update to v4.16.1 stable release (LP: #1763170) + - bitmap: fix memset optimization on big-endian systems + - USB: serial: ftdi_sio: add RT Systems VX-8 cable + - USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator + - USB: serial: cp210x: add ELDAT Easywave RX09 id + - serial: 8250: Add Nuvoton NPCM UART + - mei: remove dev_err message on an unsupported ioctl + - /dev/mem: Avoid overwriting "err" in read_mem() + - media: usbtv: prevent double free in error case + - parport_pc: Add support for WCH CH382L PCI-E single parallel port card. + - crypto: lrw - Free rctx->ext with kzfree + - crypto: ccp - Fill the result buffer only on digest, finup, and final ops + - crypto: talitos - don't persistently map req_ctx->hw_context and + req_ctx->buf + - crypto: inside-secure - fix clock management + - crypto: testmgr - Fix incorrect values in PKCS#1 test vector + - crypto: talitos - fix IPsec cipher in length + - crypto: ahash - Fix early termination in hash walk + - crypto: caam - Fix null dereference at error path + - crypto: ccp - return an actual key size from RSA max_size callback + - crypto: arm,arm64 - Fix random regeneration of S_shipped + - crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one + - Bluetooth: hci_bcm: Add 6 new ACPI HIDs + - Btrfs: fix unexpected cow in run_delalloc_nocow + - siox: fix possible buffer overflow in device_add_store + - staging: comedi: ni_mio_common: ack ai fifo error interrupts. + - Revert "base: arch_topology: fix section mismatch build warnings" + - Input: ALPS - fix TrackStick detection on Thinkpad L570 and Latitude 7370 + - Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list + - Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad + - vt: change SGR 21 to follow the standards + - Fix slab name "biovec-(1<<(21-12))" + - signal: Correct the offset of si_pkey and si_lower in struct siginfo on m68k + - Linux 4.16.1 + + * [18.04][config] regression: nvme and nvme_core couldn't be built as modules + starting 4.15-rc2 (LP: #1759893) + - SAUCE: Revert "lightnvm: include NVM Express driver if OCSSD is selected for + build" + - [Config] CONFIG_BLK_DEV_NMVE=m + + * FFe: Enable configuring resume offset via sysfs (LP: #1760106) + - PM / hibernate: Make passing hibernate offsets more friendly + + * Ubuntu18.04:POWER9:DD2.2 - Unable to start a KVM guest with default machine + type(pseries-bionic) complaining "KVM implementation does not support + Transactional Memory, try cap-htm=off" (kvm) (LP: #1752026) + - powerpc: Use feature bit for RTC presence rather than timebase presence + - powerpc: Book E: Remove unused CPU_FTR_L2CSR bit + - powerpc: Free up CPU feature bits on 64-bit machines + - powerpc: Add CPU feature bits for TM bug workarounds on POWER9 v2.2 + - powerpc/powernv: Provide a way to force a core into SMT4 mode + - KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9 + - KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode + - KVM: PPC: Book3S HV: Work around TEXASR bug in fake suspend state + + * [Feature][CFL][ICL] [CNL]Thunderbolt support (Titan Ridge) (LP: #1730775) + - thunderbolt: Resume control channel after hibernation image is created + - thunderbolt: Serialize PCIe tunnel creation with PCI rescan + - thunderbolt: Handle connecting device in place of host properly + - thunderbolt: Do not overwrite error code when domain adding fails + - thunderbolt: Wait a bit longer for root switch config space + - thunderbolt: Wait a bit longer for ICM to authenticate the active NVM + - thunderbolt: Handle rejected Thunderbolt devices + - thunderbolt: Factor common ICM add and update operations out + - thunderbolt: Correct function name in kernel-doc comment + - thunderbolt: Add tb_switch_get() + - thunderbolt: Add tb_switch_find_by_route() + - thunderbolt: Add tb_xdomain_find_by_route() + - thunderbolt: Add constant for approval timeout + - thunderbolt: Move driver ready handling to struct icm + - thunderbolt: Add 'boot' attribute for devices + - thunderbolt: Add support for preboot ACL + - thunderbolt: Introduce USB only (SL4) security level + - thunderbolt: Add support for Intel Titan Ridge + + * QCA9377 requires more IRAM banks for its new firmware (LP: #1748345) + - ath10k: update the IRAM bank number for QCA9377 + + * Fix an issue that when system in S3, USB keyboard can't wake up the system. + (LP: #1759511) + - ACPI / PM: Allow deeper wakeup power states with no _SxD nor _SxW + + * cxl: Fix timebase synchronization status on POWER9 missing (CAPI) + (LP: #1757228) + - cxl: Fix timebase synchronization status on P9 + + * [Feature]Update Ubuntu 18.04 lpfc FC driver with 32/64GB HBA support and bug + fixes (LP: #1752182) + - scsi: lpfc: Fix frequency of Release WQE CQEs + - scsi: lpfc: Increase CQ and WQ sizes for SCSI + - scsi: lpfc: move placement of target destroy on driver detach + - scsi: lpfc: correct debug counters for abort + - scsi: lpfc: Add WQ Full Logic for NVME Target + - scsi: lpfc: Fix PRLI handling when topology type changes + - scsi: lpfc: Fix IO failure during hba reset testing with nvme io. + - scsi: lpfc: Fix RQ empty firmware trap + - scsi: lpfc: Allow set of maximum outstanding SCSI cmd limit for a target + - scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing + - scsi: lpfc: Fix issue_lip if link is disabled + - scsi: lpfc: Indicate CONF support in NVMe PRLI + - scsi: lpfc: Fix SCSI io host reset causing kernel crash + - scsi: lpfc: Validate adapter support for SRIU option + - scsi: lpfc: Fix header inclusion in lpfc_nvmet + - scsi: lpfc: Treat SCSI Write operation Underruns as an error + - scsi: lpfc: Fix nonrecovery of NVME controller after cable swap. + - scsi: lpfc: update driver version to 11.4.0.7 + - scsi: lpfc: Update 11.4.0.7 modified files for 2018 Copyright + - scsi: lpfc: Rework lpfc to allow different sli4 cq and eq handlers + - scsi: lpfc: Rework sli4 doorbell infrastructure + - scsi: lpfc: Add SLI-4 if_type=6 support to the code base + - scsi: lpfc: Add push-to-adapter support to sli4 + - scsi: lpfc: Add PCI Ids for if_type=6 hardware + - scsi: lpfc: Add 64G link speed support + - scsi: lpfc: Add if_type=6 support for cycling valid bits + - scsi: lpfc: Enable fw download on if_type=6 devices + - scsi: lpfc: Add embedded data pointers for enhanced performance + - scsi: lpfc: Fix nvme embedded io length on new hardware + - scsi: lpfc: Work around NVME cmd iu SGL type + - scsi: lpfc: update driver version to 12.0.0.0 + - scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 + - scsi: lpfc: use __raw_writeX on DPP copies + - scsi: lpfc: Add missing unlock in WQ full logic + + * /dev/bcache/by-uuid links not created after reboot (LP: #1729145) + - SAUCE: (no-up) bcache: decouple emitting a cached_dev CHANGE uevent + + * DKMS driver builds fail with: Cannot use CONFIG_STACK_VALIDATION=y, please + install libelf-dev, libelf-devel or elfutils-libelf-devel (LP: #1760876) + - [Packaging] include the retpoline extractor in the headers + + * Use med_with_dipm SATA LPM to save more power for mobile platforms + (LP: #1759547) + - [Config] CONFIG_SATA_MOBILE_LPM_POLICY=3 + + * Miscellaneous Ubuntu changes + - [Packaging] Only install cloud init files when do_tools_common=true + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + -- Seth Forshee Thu, 12 Apr 2018 09:30:56 -0500 + +linux (4.16.0-3.4) bionic; urgency=medium + + * Allow multiple mounts of zfs datasets (LP: #1759848) + - SAUCE: Allow mounting datasets more than once (LP: #1759848) + + * zfs system process hung on container stop/delete (LP: #1754584) + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + - Revert "UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)" + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + + * ubuntu_zram_smoke test will cause soft lockup on Artful ThunderX ARM64 + (LP: #1755073) + - SAUCE: crypto: thunderx_zip: Fix fallout from CONFIG_VMAP_STACK + + * CAPI Flash (cxlflash) update (LP: #1752672) + - SAUCE: cxlflash: Preserve number of interrupts for master contexts + - SAUCE: cxlflash: Avoid clobbering context control register value + - SAUCE: cxlflash: Add argument identifier names + - SAUCE: cxlflash: Introduce OCXL backend + - SAUCE: cxlflash: Hardware AFU for OCXL + - SAUCE: cxlflash: Read host function configuration + - SAUCE: cxlflash: Setup function acTag range + - SAUCE: cxlflash: Read host AFU configuration + - SAUCE: cxlflash: Setup AFU acTag range + - SAUCE: cxlflash: Setup AFU PASID + - SAUCE: cxlflash: Adapter context support for OCXL + - SAUCE: cxlflash: Use IDR to manage adapter contexts + - SAUCE: cxlflash: Support adapter file descriptors for OCXL + - SAUCE: cxlflash: Support adapter context discovery + - SAUCE: cxlflash: Support image reload policy modification + - SAUCE: cxlflash: MMIO map the AFU + - SAUCE: cxlflash: Support starting an adapter context + - SAUCE: cxlflash: Support process specific mappings + - SAUCE: cxlflash: Support AFU state toggling + - SAUCE: cxlflash: Support reading adapter VPD data + - SAUCE: cxlflash: Setup function OCXL link + - SAUCE: cxlflash: Setup OCXL transaction layer + - SAUCE: cxlflash: Support process element lifecycle + - SAUCE: cxlflash: Support AFU interrupt management + - SAUCE: cxlflash: Support AFU interrupt mapping and registration + - SAUCE: cxlflash: Support starting user contexts + - SAUCE: cxlflash: Support adapter context polling + - SAUCE: cxlflash: Support adapter context reading + - SAUCE: cxlflash: Support adapter context mmap and release + - SAUCE: cxlflash: Support file descriptor mapping + - SAUCE: cxlflash: Introduce object handle fop + - SAUCE: cxlflash: Setup LISNs for user contexts + - SAUCE: cxlflash: Setup LISNs for master contexts + - SAUCE: cxlflash: Update synchronous interrupt status bits + - SAUCE: cxlflash: Introduce OCXL context state machine + - SAUCE: cxlflash: Register for translation errors + - SAUCE: cxlflash: Support AFU reset + - SAUCE: cxlflash: Enable OCXL operations + + * [Artful][Wyse 3040] System hang when trying to enable an offlined CPU core + (LP: #1736393) + - SAUCE: drm/i915:Don't set chip specific data + - SAUCE: drm/i915: make previous commit affects Wyse 3040 only + + * zed process consuming 100% cpu (LP: #1751796) + - SAUCE: Fix ioctl loop-spin in zed (LP: #1751796) + + * Ubuntu18.04:PowerPC - Set Transparent Huge Pages (THP) by default to + "always" (LP: #1753708) + - Config: Set TRANSPARENT_HUGEPAGE_ALWAYS=y on ppc64el + + * retpoline hints: primary infrastructure and initial hints (LP: #1758856) + - [Packaging] retpoline -- add safe usage hint support + - [Packaging] retpoline-check -- only report additions + - [Packaging] retpoline -- widen indirect call/jmp detection + - [Packaging] retpoline -- elide %rip relative indirections + - [Packaging] retpoline -- clear hint information from packages + - SAUCE: apm -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: EFI -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: early/late -- annotate indirect calls in early/late initialisation + code + - SAUCE: vga_set_mode -- avoid jump tables + - [Config] retpoine -- switch to new format + + * Miscellaneous Ubuntu changes + - [Packaging] final-checks -- remove check for empty retpoline files + - [Packaging] skip cloud tools packaging when not building package + + [ Upstream Kernel Changes ] + + * Rebase to v4.16 + + -- Seth Forshee Mon, 02 Apr 2018 16:15:36 -0500 + +linux (4.16.0-2.3) bionic; urgency=medium + + * devpts: handle bind-mounts (LP: #1755857) + - SAUCE: devpts: hoist out check for DEVPTS_SUPER_MAGIC + - SAUCE: devpts: resolve devpts bind-mounts + - SAUCE: devpts: comment devpts_mntget() + - SAUCE: selftests: add devpts selftests + + * [bionic][arm64] d-i: add hisi_sas_v3_hw to scsi-modules (LP: #1756103) + - d-i: add hisi_sas_v3_hw to scsi-modules + + * [Bionic][ARM64] PCI and SAS driver patches for hip08 SoCs (LP: #1756094) + - SAUCE: scsi: hisi_sas: config for hip08 ES + - SAUCE: scsi: hisi_sas: export device table of v3 hw to userspace + + * s390/crypto: Fix kernel crash on aes_s390 module remove (LP: #1753424) + - SAUCE: s390/crypto: Fix kernel crash on aes_s390 module remove. + + * Fix ARC hit rate (LP: #1755158) + - SAUCE: Fix ARC hit rate (LP: #1755158) + + * ZFS setgid broken on 0.7 (LP: #1753288) + - SAUCE: Fix ZFS setgid + + * CONFIG_EFI=y on armhf (LP: #1726362) + - [Config] CONFIG_EFI=y on armhf, reconcile secureboot EFI settings + + * [Feature] Add xHCI debug device support in the driver (LP: #1730832) + - [Config] CONFIG_USB_XHCI_DBGCAP=y + + * retpoline: ignore %cs:0xNNN constant indirections (LP: #1752655) + - [Packaging] retpoline -- elide %cs:0xNNNN constants on i386 + - [Config] retpoline -- clean up i386 retpoline files + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline-extract: flag *0xNNN(%reg) branches + - [Config] fix up retpoline abi files + - [Config] fix up retpoline abi files + - d-i: Add netsec to nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc6 + + -- Seth Forshee Mon, 19 Mar 2018 14:09:49 -0500 + +linux (4.16.0-1.2) bionic; urgency=medium + + * Driver not found in Ubuntu kernel does not detect interface (LP: #1745927) + - d-i: add cxgb4 to nic-modules + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_INDIRECT_PIO=y + - SAUCE: LIB: Introduce a generic PIO mapping method + - SAUCE: PCI: Remove unused __weak attribute in pci_register_io_range() + - SAUCE: PCI: Add fwnode handler as input param of pci_register_io_range() + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - SAUCE: ACPI / scan: do not enumerate Indirect IO host children + - SAUCE: HISI LPC: Add ACPI support + - SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver + + * Miscellaneous Ubuntu changes + - SAUCE: tools: use CC for linking acpi tools + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc3 + + -- Seth Forshee Wed, 28 Feb 2018 10:17:23 -0600 + +linux (4.16.0-0.1) bionic; urgency=medium + + * retpoline abi files are empty on i386 (LP: #1751021) + - [Packaging] retpoline-extract -- instantiate retpoline files for i386 + - [Packaging] final-checks -- sanity checking ABI contents + - [Packaging] final-checks -- check for empty retpoline files + + * Miscellaneous upstream changes + - disable vbox build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc2 + + -- Seth Forshee Thu, 22 Feb 2018 08:58:57 -0600 + +linux (4.16.0-0.0) bionic; urgency=medium + + * Dummy entry + + -- Seth Forshee Wed, 21 Feb 2018 14:33:13 -0600 + +linux (4.15.0-10.11) bionic; urgency=medium + + * linux: 4.15.0-10.11 -proposed tracker (LP: #1749250) + + * "swiotlb: coherent allocation failed" dmesg spam with linux 4.15.0-9.10 + (LP: #1749202) + - swiotlb: suppress warning when __GFP_NOWARN is set + - drm/ttm: specify DMA_ATTR_NO_WARN for huge page pools + + * linux-tools: perf incorrectly linking libbfd (LP: #1748922) + - SAUCE: tools -- add ability to disable libbfd + - [Packaging] correct disablement of libbfd + + * [Artful] Realtek ALC225: 2 secs noise when a headset plugged in + (LP: #1744058) + - ALSA: hda/realtek - update ALC225 depop optimize + + * [Artful] Support headset mode for DELL WYSE (LP: #1723913) + - SAUCE: ALSA: hda/realtek - Add support headset mode for DELL WYSE + + * headset mic can't be detected on two Dell machines (LP: #1748807) + - ALSA: hda/realtek - Support headset mode for ALC215/ALC285/ALC289 + - ALSA: hda - Fix headset mic detection problem for two Dell machines + + * Bionic update to v4.15.3 stable release (LP: #1749191) + - ip6mr: fix stale iterator + - net: igmp: add a missing rcu locking section + - qlcnic: fix deadlock bug + - qmi_wwan: Add support for Quectel EP06 + - r8169: fix RTL8168EP take too long to complete driver initialization. + - tcp: release sk_frag.page in tcp_disconnect + - vhost_net: stop device during reset owner + - ipv6: addrconf: break critical section in addrconf_verify_rtnl() + - ipv6: change route cache aging logic + - Revert "defer call to mem_cgroup_sk_alloc()" + - net: ipv6: send unsolicited NA after DAD + - rocker: fix possible null pointer dereference in + rocker_router_fib_event_work + - tcp_bbr: fix pacing_gain to always be unity when using lt_bw + - cls_u32: add missing RCU annotation. + - ipv6: Fix SO_REUSEPORT UDP socket with implicit sk_ipv6only + - soreuseport: fix mem leak in reuseport_add_sock() + - net_sched: get rid of rcu_barrier() in tcf_block_put_ext() + - net: sched: fix use-after-free in tcf_block_put_ext + - media: mtk-vcodec: add missing MODULE_LICENSE/DESCRIPTION + - media: soc_camera: soc_scale_crop: add missing + MODULE_DESCRIPTION/AUTHOR/LICENSE + - media: tegra-cec: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: uniphier: fix mismatch between license text and MODULE_LICENSE + - crypto: tcrypt - fix S/G table for test_aead_speed() + - Linux 4.15.3 + + * bnx2x_attn_int_deasserted3:4323 MC assert! (LP: #1715519) // + CVE-2018-1000026 + - net: create skb_gso_validate_mac_len() + - bnx2x: disable GSO where gso_size is too big for hardware + + * ethtool -p fails to light NIC LED on HiSilicon D05 systems (LP: #1748567) + - net: hns: add ACPI mode support for ethtool -p + + * CVE-2017-5715 (Spectre v2 Intel) + - [Packaging] retpoline files must be sorted + - [Packaging] pull in retpoline files + + * [Feature] PXE boot with Intel Omni-Path (LP: #1712031) + - d-i: Add hfi1 to nic-modules + + * CVE-2017-5715 (Spectre v2 retpoline) + - [Packaging] retpoline -- add call site validation + - [Config] disable retpoline checks for first upload + + * Do not duplicate changelog entries assigned to more than one bug or CVE + (LP: #1743383) + - [Packaging] git-ubuntu-log -- handle multiple bugs/cves better + + -- Seth Forshee Tue, 13 Feb 2018 11:33:58 -0600 + +linux (4.15.0-9.10) bionic; urgency=medium + + * linux: 4.15.0-9.10 -proposed tracker (LP: #1748244) + + * Miscellaneous Ubuntu changes + - [Debian] tests -- remove gcc-multilib dependency for arm64 + + -- Seth Forshee Thu, 08 Feb 2018 11:25:04 -0600 + +linux (4.15.0-8.9) bionic; urgency=medium + + * linux: 4.15.0-8.9 -proposed tracker (LP: #1748075) + + * Bionic update to v4.15.2 stable release (LP: #1748072) + - KVM: x86: Make indirect calls in emulator speculation safe + - KVM: VMX: Make indirect call speculation safe + - module/retpoline: Warn about missing retpoline in module + - x86/cpufeatures: Add CPUID_7_EDX CPUID leaf + - x86/cpufeatures: Add Intel feature bits for Speculation Control + - x86/cpufeatures: Add AMD feature bits for Speculation Control + - x86/msr: Add definitions for new speculation control MSRs + - x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown + - x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes + - x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support + - x86/alternative: Print unadorned pointers + - x86/nospec: Fix header guards names + - x86/bugs: Drop one "mitigation" from dmesg + - x86/cpu/bugs: Make retpoline module warning conditional + - x86/cpufeatures: Clean up Spectre v2 related CPUID flags + - x86/retpoline: Simplify vmexit_fill_RSB() + - x86/speculation: Simplify indirect_branch_prediction_barrier() + - auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - iio: adc/accel: Fix up module licenses + - pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - ASoC: pcm512x: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - KVM: nVMX: Eliminate vmcs02 pool + - KVM: VMX: introduce alloc_loaded_vmcs + - objtool: Improve retpoline alternative handling + - objtool: Add support for alternatives at the end of a section + - objtool: Warn on stripped section symbol + - x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP + - x86/spectre: Check CONFIG_RETPOLINE in command line parser + - x86/entry/64: Remove the SYSCALL64 fast path + - x86/entry/64: Push extra regs right away + - x86/asm: Move 'status' from thread_struct to thread_info + - Documentation: Document array_index_nospec + - array_index_nospec: Sanitize speculative array de-references + - x86: Implement array_index_mask_nospec + - x86: Introduce barrier_nospec + - x86: Introduce __uaccess_begin_nospec() and uaccess_try_nospec + - x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end} + - x86/uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec + - x86/get_user: Use pointer masking to limit speculation + - x86/syscall: Sanitize syscall table de-references under speculation + - vfs, fdtable: Prevent bounds-check bypass via speculative execution + - nl80211: Sanitize array index in parse_txq_params + - x86/spectre: Report get_user mitigation for spectre_v1 + - x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable" + - x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel + - x86/speculation: Use Indirect Branch Prediction Barrier in context switch + - x86/paravirt: Remove 'noreplace-paravirt' cmdline option + - KVM: VMX: make MSR bitmaps per-VCPU + - x86/kvm: Update spectre-v1 mitigation + - x86/retpoline: Avoid retpolines for built-in __init functions + - x86/spectre: Simplify spectre_v2 command line parsing + - x86/pti: Mark constant arrays as __initconst + - x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL + - KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX + - KVM/x86: Add IBPB support + - KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES + - KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL + - KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL + - serial: core: mark port as initialized after successful IRQ change + - fpga: region: release of_parse_phandle nodes after use + - Linux 4.15.2 + + * Add support for the NIC on SynQuacer E-Series boards (LP: #1747792) + - net: phy: core: remove now uneeded disabling of interrupts + - [Config] CONFIG_NET_VENDOR_SOCIONEXT=y & CONFIG_SNI_NETSEC=m + - net: socionext: Add Synquacer NetSec driver + - net: socionext: include linux/io.h to fix build + - net: socionext: Fix error return code in netsec_netdev_open() + + * [Artful/Bionic] [Config] enable EDAC_GHES for ARM64 (LP: #1747746) + - [Config] CONFIG_EDAC_GHES=y + + * support thunderx2 vendor pmu events (LP: #1747523) + - perf pmu: Pass pmu as a parameter to get_cpuid_str() + - perf tools arm64: Add support for get_cpuid_str function. + - perf pmu: Add helper function is_pmu_core to detect PMU CORE devices + - perf vendor events arm64: Add ThunderX2 implementation defined pmu core + events + - perf pmu: Add check for valid cpuid in perf_pmu__find_map() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Miscellaneous Ubuntu changes + - [Config] Fix CONFIG_PROFILE_ALL_BRANCHES annotations + + -- Seth Forshee Wed, 07 Feb 2018 21:13:27 -0600 + +linux (4.15.0-7.8) bionic; urgency=medium + + * Bionic update to v4.15.1 stable release (LP: #1747169) + - Bluetooth: hci_serdev: Init hci_uart proto_lock to avoid oops + - tools/gpio: Fix build error with musl libc + - gpio: stmpe: i2c transfer are forbiden in atomic context + - gpio: Fix kernel stack leak to userspace + - ALSA: hda - Reduce the suspend time consumption for ALC256 + - crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH + - crypto: aesni - handle zero length dst buffer + - crypto: aesni - fix typo in generic_gcmaes_decrypt + - crypto: aesni - add wrapper for generic gcm(aes) + - crypto: aesni - Fix out-of-bounds access of the data buffer in generic-gcm- + aesni + - crypto: aesni - Fix out-of-bounds access of the AAD buffer in generic-gcm- + aesni + - crypto: inside-secure - fix hash when length is a multiple of a block + - crypto: inside-secure - avoid unmapping DMA memory that was not mapped + - crypto: sha3-generic - fixes for alignment and big endian operation + - crypto: af_alg - whitelist mask and type + - HID: wacom: EKR: ensure devres groups at higher indexes are released + - HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) events + - power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE + - mtd: nand: denali_pci: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - igb: Free IRQs when device is hotplugged + - ima/policy: fix parsing of fsuuid + - scsi: aacraid: Fix udev inquiry race condition + - scsi: aacraid: Fix hang in kdump + - scsi: storvsc: missing error code in storvsc_probe() + - staging: lustre: separate a connection destroy from free struct kib_conn + - staging: ccree: NULLify backup_info when unused + - staging: ccree: fix fips event irq handling build + - tty: fix data race between tty_init_dev and flush of buf + - usb: option: Add support for FS040U modem + - USB: serial: pl2303: new device id for Chilitag + - USB: cdc-acm: Do not log urb submission errors on disconnect + - CDC-ACM: apply quirk for card reader + - USB: serial: io_edgeport: fix possible sleep-in-atomic + - usbip: prevent bind loops on devices attached to vhci_hcd + - usbip: list: don't list devices attached to vhci_hcd + - USB: serial: simple: add Motorola Tetra driver + - usb: f_fs: Prevent gadget unbind if it is already unbound + - usb: uas: unconditionally bring back host after reset + - usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc() + - ANDROID: binder: remove waitqueue when thread exits. + - android: binder: use VM_ALLOC to get vm area + - mei: me: allow runtime pm for platform with D0i3 + - serial: 8250_of: fix return code when probe function fails to get reset + - serial: 8250_uniphier: fix error return code in uniphier_uart_probe() + - serial: 8250_dw: Revert "Improve clock rate setting" + - serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS + - spi: imx: do not access registers while clocks disabled + - iio: adc: stm32: fix scan of multiple channels with DMA + - iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels + - test_firmware: fix missing unlock on error in config_num_requests_store() + - Input: synaptics-rmi4 - unmask F03 interrupts when port is opened + - Input: synaptics-rmi4 - do not delete interrupt memory too early + - x86/efi: Clarify that reset attack mitigation needs appropriate userspace + - Linux 4.15.1 + + * Dell XPS 13 9360 bluetooth (Atheros) won't connect after resume + (LP: #1744712) + - Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" + - Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" + version + + * apparmor profile load in stacked policy container fails (LP: #1746463) + - SAUCE: apparmor: fix display of .ns_name for containers + + -- Seth Forshee Sun, 04 Feb 2018 11:56:32 +0100 + +linux (4.15.0-6.7) bionic; urgency=low + + * upload urgency should be medium by default (LP: #1745338) + - [Packaging] update urgency to medium by default + + * Shutdown hang on 16.04 with iscsi targets (LP: #1569925) + - scsi: libiscsi: Allow sd_shutdown on bad transport + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu1, zfs to 0.7.5-1ubuntu1 + - Revert "UBUNTU: SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM" + - Revert "UBUNTU: SAUCE: mm: disable vma based swap readahead by default" + + [ Upstream Kernel Changes ] + + * Rebase to v4.15 + + -- Seth Forshee Mon, 29 Jan 2018 08:47:07 -0600 + +linux (4.15.0-5.6) bionic; urgency=low + + * $(LOCAL_ENV_CC) and $(LOCAL_ENV_DISTCC_HOSTS) should be properly quoted + (LP: #1744077) + - [Debian] pass LOCAL_ENV_CC and LOCAL_ENV_DISTCC_HOSTS properly + + * Missing install-time driver for QLogic QED 25/40/100Gb Ethernet NIC + (LP: #1743638) + - [d-i] Add qede to nic-modules udeb + + * boot failure on AMD Raven + WesternXT (LP: #1742759) + - SAUCE: drm/amdgpu: add atpx quirk handling (v2) + + * Unable to handle kernel NULL pointer dereference at isci_task_abort_task + (LP: #1726519) + - SAUCE: Revert "scsi: libsas: allow async aborts" + + * Update Ubuntu-4.15.0 config to support Intel Atom devices (LP: #1739939) + - [Config] CONFIG_SERIAL_DEV_BUS=y, CONFIG_SERIAL_DEV_CTRL_TTYPORT=y + + * Miscellaneous Ubuntu changes + - Rebase to v4.15-rc7 + - [Config] CONFIG_CPU_ISOLATION=y + - [Config] Update annotations following config review + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.6-dfsg-1 + - ubuntu: vbox: build fixes for 4.15 + - ubuntu: vbox -- update to 5.2.6-dfsg-2 + - hio: updates for timer api changes in 4.15 + - enable hio build + - Rebase to v4.15-rc9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc9 + + -- Seth Forshee Mon, 22 Jan 2018 10:16:05 -0600 + +linux (4.15.0-4.5) bionic; urgency=low + + * [0cf3:e010] QCA6174A XR failed to pair with bt 4.0 device (LP: #1741166) + - SAUCE: Bluetooth: btusb: Add support for 0cf3:e010 + + * External HDMI monitor failed to show screen on Lenovo X1 series + (LP: #1738523) + - SAUCE: drm/i915: Disable writing of TMDS_OE on Lenovo ThinkPad X1 series + + * Miscellaneous Ubuntu changes + - [Debian] autoreconstruct - add resoration of execute permissions + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Wed, 10 Jan 2018 10:24:22 -0600 + +linux (4.15.0-3.4) bionic; urgency=low + + * ubuntu/xr-usb-serial didn't get built in zesty and artful (LP: #1733281) + - SAUCE: make sure ubuntu/xr-usb-serial builds for x86 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc6 + + -- Seth Forshee Wed, 03 Jan 2018 20:20:43 -0600 + +linux (4.15.0-2.3) bionic; urgency=low + + * nvidia-graphics-drivers-384 384.90-0ubuntu6 ADT test failure with linux + 4.15.0-1.2 (LP: #1737752) + - x86/mm: Unbreak modules that use the DMA API + + * Ubuntu 17.10 corrupting BIOS - many LENOVO laptops models (LP: #1734147) + - [Config] CONFIG_SPI_INTEL_SPI_*=n + + * power: commonise configs IBMVETH/IBMVSCSI and ensure both are in linux-image + and udebs (LP: #1521712) + - [Config] Include ibmvnic in nic-modules + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] Enable support for emulation of deprecated ARMv8 instructions + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl with 4.15 compat fix (LP:#1737761) + - Enable zfs build + - [Debian] add icp to zfs-modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Mon, 18 Dec 2017 09:27:13 -0600 + +linux (4.15.0-1.2) bionic; urgency=low + + * Disabling zfs does not always disable module checks for the zfs modules + (LP: #1737176) + - [Packaging] disable zfs module checks when zfs is disabled + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_UNWINDER_FRAME_POINTER=y for amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc3 + + -- Seth Forshee Sun, 10 Dec 2017 22:07:19 -0600 + +linux (4.15.0-0.1) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.2.2-dfsg-2 + - ubuntu: vbox: build fixes for 4.15 + - disable hio build + - [Config] Update kernel lockdown options to fix build errors + - Disable zfs build + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc2 + + -- Seth Forshee Fri, 08 Dec 2017 13:55:42 -0600 + +linux (4.14.0-11.13) bionic; urgency=low + + * linux: 4.14.0-11.13 -proposed tracker (LP: #1736168) + + * CVE-2017-1000405 + - mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Bionic update to v4.14.3 stable release (LP: #1735843) + - s390: fix transactional execution control register handling + - s390/noexec: execute kexec datamover without DAT + - s390/runtime instrumention: fix possible memory corruption + - s390/guarded storage: fix possible memory corruption + - s390/disassembler: add missing end marker for e7 table + - s390/disassembler: increase show_code buffer size + - ACPI / PM: Fix acpi_pm_notifier_lock vs flush_workqueue() deadlock + - ACPI / EC: Fix regression related to triggering source of EC event handling + - cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq + - serdev: fix registration of second slave + - sched: Make resched_cpu() unconditional + - lib/mpi: call cond_resched() from mpi_powm() loop + - x86/boot: Fix boot failure when SMP MP-table is based at 0 + - x86/decoder: Add new TEST instruction pattern + - x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing + - x86/entry/64: Add missing irqflags tracing to native_load_gs_index() + - perf/x86/intel: Hide TSX events when RTM is not supported + - arm64: Implement arch-specific pte_access_permitted() + - ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE + - ARM: 8721/1: mm: dump: check hardware RO bit for LPAE + - uapi: fix linux/tls.h userspace compilation error + - uapi: fix linux/rxrpc.h userspace compilation errors + - MIPS: cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN don't work for 32-bit SMP + - MIPS: ralink: Fix MT7628 pinmux + - MIPS: ralink: Fix typo in mt7628 pinmux function + - net: mvneta: fix handling of the Tx descriptor counter + - nbd: wait uninterruptible for the dead timeout + - nbd: don't start req until after the dead connection logic + - PM / OPP: Add missing of_node_put(np) + - PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time + - PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD + - PCI: hv: Use effective affinity mask + - PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF + - PCI: Apply Cavium ThunderX ACS quirk to more Root Ports + - ALSA: hda: Add Raven PCI ID + - dm integrity: allow unaligned bv_offset + - dm cache: fix race condition in the writeback mode overwrite_bio + optimisation + - dm crypt: allow unaligned bv_offset + - dm zoned: ignore last smaller runt zone + - dm mpath: remove annoying message of 'blk_get_request() returned -11' + - dm bufio: fix integer overflow when limiting maximum cache size + - ovl: Put upperdentry if ovl_check_origin() fails + - dm: allocate struct mapped_device with kvzalloc + - sched/rt: Simplify the IPI based RT balancing logic + - MIPS: pci: Remove KERN_WARN instance inside the mt7620 driver + - dm: fix race between dm_get_from_kobject() and __dm_destroy() + - dm: discard support requires all targets in a table support discards + - MIPS: Fix odd fp register warnings with MIPS64r2 + - MIPS: Fix MIPS64 FP save/restore on 32-bit kernels + - MIPS: dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry + - MIPS: Fix an n32 core file generation regset support regression + - MIPS: BCM47XX: Fix LED inversion for WRT54GSv1 + - MIPS: math-emu: Fix final emulation phase for certain instructions + - rt2x00usb: mark device removed when get ENOENT usb error + - mm/z3fold.c: use kref to prevent page free/compact race + - autofs: don't fail mount for transient error + - nilfs2: fix race condition that causes file system corruption + - fscrypt: lock mutex before checking for bounce page pool + - eCryptfs: use after free in ecryptfs_release_messaging() + - libceph: don't WARN() if user tries to add invalid key + - bcache: check ca->alloc_thread initialized before wake up it + - fs: guard_bio_eod() needs to consider partitions + - fanotify: fix fsnotify_prepare_user_wait() failure + - isofs: fix timestamps beyond 2027 + - btrfs: change how we decide to commit transactions during flushing + - f2fs: expose some sectors to user in inline data or dentry case + - NFS: Fix typo in nomigration mount option + - NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" + - nfs: Fix ugly referral attributes + - NFS: Avoid RCU usage in tracepoints + - NFS: revalidate "." etc correctly on "open". + - nfsd: deal with revoked delegations appropriately + - rtlwifi: rtl8192ee: Fix memory leak when loading firmware + - rtlwifi: fix uninitialized rtlhal->last_suspend_sec time + - iwlwifi: fix firmware names for 9000 and A000 series hw + - md: fix deadlock error in recent patch. + - md: don't check MD_SB_CHANGE_CLEAN in md_allow_write + - Bluetooth: btqcomsmd: Add support for BD address setup + - md/bitmap: revert a patch + - fsnotify: clean up fsnotify_prepare/finish_user_wait() + - fsnotify: pin both inode and vfsmount mark + - fsnotify: fix pinning group in fsnotify_prepare_user_wait() + - ata: fixes kernel crash while tracing ata_eh_link_autopsy event + - ext4: fix interaction between i_size, fallocate, and delalloc after a crash + - ext4: prevent data corruption with inline data + DAX + - ext4: prevent data corruption with journaling + DAX + - ALSA: pcm: update tstamp only if audio_tstamp changed + - ALSA: usb-audio: Add sanity checks to FE parser + - ALSA: usb-audio: Fix potential out-of-bound access at parsing SU + - ALSA: usb-audio: Add sanity checks in v2 clock parsers + - ALSA: timer: Remove kernel warning at compat ioctl error paths + - ALSA: hda/realtek - Fix ALC275 no sound issue + - ALSA: hda: Fix too short HDMI/DP chmap reporting + - ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization + - ALSA: hda/realtek - Fix ALC700 family no sound issue + - ASoC: sun8i-codec: Invert Master / Slave condition + - ASoC: sun8i-codec: Fix left and right channels inversion + - ASoC: sun8i-codec: Set the BCLK divider + - mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method + - fix a page leak in vhost_scsi_iov_to_sgl() error recovery + - 9p: Fix missing commas in mount options + - fs/9p: Compare qid.path in v9fs_test_inode + - net/9p: Switch to wait_event_killable() + - scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() + - scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() + - scsi: lpfc: fix pci hot plug crash in timer management routines + - scsi: lpfc: fix pci hot plug crash in list_add call + - scsi: lpfc: Fix crash receiving ELS while detaching driver + - scsi: lpfc: Fix FCP hba_wqidx assignment + - scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails + - iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref + - iscsi-target: Fix non-immediate TMR reference leak + - target: fix null pointer regression in core_tmr_drain_tmr_list + - target: fix buffer offset in core_scsi3_pri_read_full_status + - target: Fix QUEUE_FULL + SCSI task attribute handling + - target: Fix caw_sem leak in transport_generic_request_failure + - target: Fix quiese during transport_write_pending_qf endless loop + - target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK + - mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid + - mtd: nand: Export nand_reset() symbol + - mtd: nand: atmel: Actually use the PM ops + - mtd: nand: omap2: Fix subpage write + - mtd: nand: Fix writing mtdoops to nand flash. + - mtd: nand: mtk: fix infinite ECC decode IRQ issue + - mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence + - p54: don't unregister leds when they are not initialized + - block: Fix a race between blk_cleanup_queue() and timeout handling + - raid1: prevent freeze_array/wait_all_barriers deadlock + - genirq: Track whether the trigger type has been set + - irqchip/gic-v3: Fix ppi-partitions lookup + - lockd: double unregister of inetaddr notifiers + - KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not + enabled + - KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + - KVM: SVM: obey guest PAT + - kvm: vmx: Reinstate support for CPUs without virtual NMI + - dax: fix PMD faults on zero-length files + - dax: fix general protection fault in dax_alloc_inode + - SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status + - clk: ti: dra7-atl-clock: fix child-node lookups + - libnvdimm, dimm: clear 'locked' status on successful DIMM enable + - libnvdimm, pfn: make 'resource' attribute only readable by root + - libnvdimm, namespace: fix label initialization to use valid seq numbers + - libnvdimm, region : make 'resource' attribute only readable by root + - libnvdimm, namespace: make 'resource' attribute only readable by root + - svcrdma: Preserve CB send buffer across retransmits + - IB/srpt: Do not accept invalid initiator port names + - IB/cm: Fix memory corruption in handling CM request + - IB/hfi1: Fix incorrect available receive user context count + - IB/srp: Avoid that a cable pull can trigger a kernel crash + - IB/core: Avoid crash on pkey enforcement failed in received MADs + - IB/core: Only maintain real QPs in the security lists + - NFC: fix device-allocation error return + - spi-nor: intel-spi: Fix broken software sequencing codes + - i40e: Use smp_rmb rather than read_barrier_depends + - igb: Use smp_rmb rather than read_barrier_depends + - igbvf: Use smp_rmb rather than read_barrier_depends + - ixgbevf: Use smp_rmb rather than read_barrier_depends + - i40evf: Use smp_rmb rather than read_barrier_depends + - fm10k: Use smp_rmb rather than read_barrier_depends + - ixgbe: Fix skb list corruption on Power systems + - parisc: Fix validity check of pointer size argument in new CAS + implementation + - powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX + - powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX + - powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id() + - powerpc/signal: Properly handle return value from uprobe_deny_signal() + - powerpc/64s: Fix masking of SRR1 bits on instruction fault + - powerpc/64s/radix: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix 512T hint detection to use >= 128T + - powerpc/64s/hash: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix fork() with 512TB process address space + - powerpc/64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary + - media: Don't do DMA on stack for firmware upload in the AS102 driver + - media: rc: check for integer overflow + - media: rc: nec decoder should not send both repeat and keycode + - cx231xx-cards: fix NULL-deref on missing association descriptor + - media: v4l2-ctrl: Fix flags field on Control events + - media: venus: fix wrong size on dma_free + - media: venus: venc: fix bytesused v4l2_plane field + - media: venus: reimplement decoder stop command + - ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory + zone + - iwlwifi: fix wrong struct for a000 device + - iwlwifi: add a new a000 device + - iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons + - iwlwifi: add new cards for a000 series + - iwlwifi: add new cards for 8265 series + - iwlwifi: add new cards for 8260 series + - iwlwifi: fix PCI IDs and configuration mapping for 9000 series + - iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command + - e1000e: Fix error path in link detection + - e1000e: Fix return value test + - e1000e: Separate signaling for link check/link up + - e1000e: Avoid receiver overrun interrupt bursts + - e1000e: fix buffer overrun while the I219 is processing DMA transactions + - Linux 4.14.3 + + * Miscellaneous Ubuntu changes + - SAUCE: s390/topology: don't inline cpu_to_node + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 04 Dec 2017 09:08:07 -0600 + +linux (4.14.0-10.12) bionic; urgency=low + + * linux: 4.14.0-10.12 -proposed tracker (LP: #1734901) + + * Miscellaneous Ubuntu changes + - SAUCE: Enable the ACPI kernel debugger and acpidbg tool + - [Packaging] Include arch/arm64/kernel/ftrace-mod.o in headers package + + -- Seth Forshee Tue, 28 Nov 2017 08:46:49 -0600 + +linux (4.14.0-9.11) bionic; urgency=low + + * linux: 4.14.0-9.11 -proposed tracker (LP: #1734728) + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to + 0.7.3-1ubuntu1" + + -- Seth Forshee Mon, 27 Nov 2017 12:44:48 -0600 + +linux (4.14.0-8.10) bionic; urgency=low + + * linux: 4.14.0-8.10 -proposed tracker (LP: #1734695) + + * Bionic update to v4.14.2 stable release (LP: #1734694) + - bio: ensure __bio_clone_fast copies bi_partno + - af_netlink: ensure that NLMSG_DONE never fails in dumps + - vxlan: fix the issue that neigh proxy blocks all icmpv6 packets + - net: cdc_ncm: GetNtbFormat endian fix + - fealnx: Fix building error on MIPS + - net/sctp: Always set scope_id in sctp_inet6_skb_msgname + - ima: do not update security.ima if appraisal status is not INTEGRITY_PASS + - serial: omap: Fix EFR write on RTS deassertion + - serial: 8250_fintek: Fix finding base_port with activated SuperIO + - tpm-dev-common: Reject too short writes + - rcu: Fix up pending cbs check in rcu_prepare_for_idle + - mm/pagewalk.c: report holes in hugetlb ranges + - ocfs2: fix cluster hang after a node dies + - ocfs2: should wait dio before inode lock in ocfs2_setattr() + - ipmi: fix unsigned long underflow + - mm/page_alloc.c: broken deferred calculation + - mm/page_ext.c: check if page_ext is not prepared + - coda: fix 'kernel memory exposure attempt' in fsync + - ipmi: Prefer ACPI system interfaces over SMBIOS ones + - Linux 4.14.2 + + * Bionic update to v4.14.1 stable release (LP: #1734693) + - EDAC, sb_edac: Don't create a second memory controller if HA1 is not present + - dmaengine: dmatest: warn user when dma test times out + - media: imon: Fix null-ptr-deref in imon_probe + - media: dib0700: fix invalid dvb_detach argument + - crypto: dh - Fix double free of ctx->p + - crypto: dh - Don't permit 'p' to be 0 + - crypto: dh - Don't permit 'key' or 'g' size longer than 'p' + - crypto: brcm - Explicity ACK mailbox message + - USB: early: Use new USB product ID and strings for DbC device + - USB: usbfs: compute urb->actual_length for isochronous + - USB: Add delay-init quirk for Corsair K70 LUX keyboards + - usb: gadget: f_fs: Fix use-after-free in ffs_free_inst + - USB: serial: metro-usb: stop I/O after failed open + - USB: serial: Change DbC debug device binding ID + - USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update + - USB: serial: garmin_gps: fix I/O after failed probe and remove + - USB: serial: garmin_gps: fix memory leak on probe errors + - selftests/x86/protection_keys: Fix syscall NR redefinition warnings + - x86/MCE/AMD: Always give panic severity for UC errors in kernel context + - platform/x86: peaq-wmi: Add DMI check before binding to the WMI interface + - platform/x86: peaq_wmi: Fix missing terminating entry for peaq_dmi_table + - HID: cp2112: add HIDRAW dependency + - HID: wacom: generic: Recognize WACOM_HID_WD_PEN as a type of pen collection + - rpmsg: glink: Add missing MODULE_LICENSE + - staging: wilc1000: Fix bssid buffer offset in Txq + - staging: sm750fb: Fix parameter mistake in poke32 + - staging: ccree: fix 64 bit scatter/gather DMA ops + - staging: greybus: spilib: fix use-after-free after deregistration + - staging: rtl8188eu: Revert 4 commits breaking ARP + - spi: fix use-after-free at controller deregistration + - sparc32: Add cmpxchg64(). + - sparc64: mmu_context: Add missing include files + - sparc64: Fix page table walk for PUD hugepages + - Linux 4.14.1 + + * Set PANIC_TIMEOUT=10 on Power Systems (LP: #1730660) + - [Config]: Set PANIC_TIMEOUT=10 on ppc64el + + * enable CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH easily confuse users + (LP: #1732627) + - [Config] CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH=n + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 27 Nov 2017 07:43:44 -0600 + +linux (4.14.0-7.9) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: add base infastructure for socket mediation + - SAUCE: apparmor: af_unix mediation + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: manage task security blobs + - SAUCE: LSM stacking: LSM: Infrastructure management of the remaining blobs + - SAUCE: LSM stacking: LSM: general but not extreme module stacking + - SAUCE: LSM stacking: LSM: Complete task_alloc hook + - SAUCE: LSM stacking: fixup procsfs: add smack subdir to attrs + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: check for invalid zero sized writes + - [Config] Run updateconfigs after merging LSM stacking + - [Config] CONFIG_AMD_MEM_ENCRYPT=y + + [ Upstream Kernel Changes ] + + * Rebase to v4.14 + + -- Seth Forshee Mon, 13 Nov 2017 08:12:08 -0600 + +linux (4.14.0-6.8) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: add workarounds to enable ZFS for 4.14 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc8 + + -- Seth Forshee Mon, 06 Nov 2017 11:39:00 -0600 + +linux (4.14.0-5.7) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Fix invocation of dh_prep for dbgsym packages + + -- Seth Forshee Tue, 31 Oct 2017 07:07:23 -0500 + +linux (4.14.0-4.5) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Packaging] virtualbox -- reduce in kernel module versions + - vbox-update: Fix up KERN_DIR definitions + - ubuntu: vbox -- update to 5.2.0-dfsg-2 + - [Config] CONFIG_AMD_MEM_ENCRYPT=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc7 + + -- Seth Forshee Mon, 30 Oct 2017 13:29:20 -0500 + +linux (4.14.0-3.4) artful; urgency=low + + * Touchpad and TrackPoint Dose Not Work on Lenovo X1C6 and X280 (LP: #1723986) + - SAUCE: Input: synaptics-rmi4 - RMI4 can also use SMBUS version 3 + - SAUCE: Input: synaptics - Lenovo X1 Carbon 5 should use SMBUS/RMI + - SAUCE: Input: synaptics - add Intertouch support on X1 Carbon 6th and X280 + + * powerpc/64s: Add workaround for P9 vector CI load issuenext (LP: #1721070) + - powerpc/64s: Add workaround for P9 vector CI load issue + + * Miscellaneous Ubuntu changes + - SAUCE: staging: vboxvideo: Fix reporting invalid suggested-offset-properties + - [Config] CONFIG_DRM_VBOXVIDEO=m + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] Reorder annotations file after enabling aufs + - vbox-update: Disable imported vboxvideo module + - ubuntu: vbox -- update to 5.1.30-dfsg-1 + - Enable vbox + - hio: Use correct sizes when initializing ssd_index_bits* arrays + - hio: Update io stat accounting for 4.14 + - Enable hio + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc5 + * Rebase to v4.14-rc6 + + -- Seth Forshee Mon, 23 Oct 2017 13:53:52 -0500 + +linux (4.14.0-2.3) artful; urgency=low + + * [Bug] USB controller failed to respond on Denverton after loading + intel_th_pci module (LP: #1715833) + - SAUCE: PCI: Disable broken RTIT_BAR of Intel TH + + * CONFIG_DEBUG_FS is not enabled by "make zfcpdump_defconfig" with Ubuntu + 17.10 (kernel 4.13) (LP: #1719290) + - SAUCE: s390: update zfcpdump_defconfig + + * Add installer support for Broadcom BCM573xx network drivers. (LP: #1720466) + - d-i: Add bnxt_en to nic-modules. + + * Miscellaneous Ubuntu changes + - [Config] Update annotations for 4.14-rc2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc3 + * Rebase to v4.14-rc4 + + -- Seth Forshee Wed, 11 Oct 2017 16:04:27 -0500 + +linux (4.14.0-1.2) artful; urgency=low + + * [Bug] USB 3.1 Gen2 works as 5Gbps (LP: #1720045) + - xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor + + * Please make linux-libc-dev Provide: aufs-dev (LP: #1716091) + - [Packaging] Add aufs-dev to the Provides: for linux-libc-dev + + * Upgrade to 4.13.0-11.12 in artful amd64 VM breaks display on wayland + (LP: #1718679) + - [Config] CONFIG_DRM_VBOXVIDEO=n + + * ipmmu-vmsa driver breaks arm64 boots (LP: #1718734) + - [Config] Disable CONFIG_IPMMU_VMSA on arm64 + + * autopkgtest profile fails to build on armhf (LP: #1717920) + - [Packaging] autopkgtest -- disable d-i when dropping flavours + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_I2C_XLP9XX=m + - [Packaging] Use SRCPKGNAME rather than hard-coding the source package name + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc2 + + -- Seth Forshee Fri, 29 Sep 2017 09:09:11 -0400 + +linux (4.14.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable vbox build + - Disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc1 + + -- Seth Forshee Tue, 19 Sep 2017 20:22:29 -0500 + +linux (4.13.0-11.12) artful; urgency=low + + * linux: 4.13.0-11.12 -proposed tracker (LP: #1716699) + + * kernel panic -not syncing: Fatal exception: panic_on_oops (LP: #1708399) + - s390/mm: fix local TLB flushing vs. detach of an mm address space + - s390/mm: fix race on mm->context.flush_mm + + * CVE-2017-1000251 + - Bluetooth: Properly check L2CAP config option output buffer length + + -- Seth Forshee Tue, 12 Sep 2017 10:18:38 -0500 + +linux (4.13.0-10.11) artful; urgency=low + + * linux: 4.13.0-10.11 -proposed tracker (LP: #1716287) + + * please add aufs-dkms to the Provides: for the kernel packages (LP: #1716093) + - [Packaging] Add aufs-dkms to the Provides: for kernel packages + + * Artful update to v4.13.1 stable release (LP: #1716284) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + - USB: serial: option: add support for D-Link DWM-157 C1 + - usb: Add device quirk for Logitech HD Pro Webcam C920-C + - usb:xhci:Fix regression when ATI chipsets detected + - USB: musb: fix external abort on suspend + - ANDROID: binder: add padding to binder_fd_array_object. + - ANDROID: binder: add hwbinder,vndbinder to BINDER_DEVICES. + - USB: core: Avoid race of async_completed() w/ usbdev_release() + - staging/rts5208: fix incorrect shift to extract upper nybble + - staging: ccree: save ciphertext for CTS IV + - staging: fsl-dpaa2/eth: fix off-by-one FD ctrl bitmaks + - iio: adc: ti-ads1015: fix incorrect data rate setting update + - iio: adc: ti-ads1015: fix scale information for ADS1115 + - iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set + - iio: adc: ti-ads1015: avoid getting stale result after runtime resume + - iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks + - iio: adc: ti-ads1015: add adequate wait time to get correct conversion + - driver core: bus: Fix a potential double free + - HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage + - binder: free memory on error + - crypto: caam/qi - fix compilation with CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y + - crypto: caam/qi - fix compilation with DEBUG enabled + - thunderbolt: Fix reset response_type + - fpga: altera-hps2fpga: fix multiple init of l3_remap_lock + - intel_th: pci: Add Cannon Lake PCH-H support + - intel_th: pci: Add Cannon Lake PCH-LP support + - ath10k: fix memory leak in rx ring buffer allocation + - drm/vgem: Pin our pages for dmabuf exports + - drm/ttm: Fix accounting error when fail to get pages for pool + - drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly + - rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter + - Bluetooth: Add support of 13d3:3494 RTL8723BE device + - iwlwifi: pci: add new PCI ID for 7265D + - dlm: avoid double-free on error path in dlm_device_{register,unregister} + - mwifiex: correct channel stat buffer overflows + - MCB: add support for SC31 to mcb-lpc + - s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs + - drm/nouveau/pci/msi: disable MSI on big-endian platforms by default + - drm/nouveau: Fix error handling in nv50_disp_atomic_commit + - workqueue: Fix flag collision + - ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme + - cs5536: add support for IDE controller variant + - scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE + - scsi: sg: recheck MMAP_IO request length with lock held + - of/device: Prevent buffer overflow in of_device_modalias() + - rtlwifi: Fix memory leak when firmware request fails + - rtlwifi: Fix fallback firmware loading + - Linux 4.13.1 + + * Kernel has trouble recognizing Corsair Strafe RGB keyboard (LP: #1678477) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + + * SRIOV: warning if unload VFs (LP: #1715073) + - PCI: Disable VF decoding before pcibios_sriov_disable() updates resources + + * [Patch] network-i40e:NVM bug fixes (cherrypick from 4.14) (LP: #1715578) + - i40e: avoid NVM acquire deadlock during NVM update + - i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq + + * [P9,POwer NV] Perf PMU event : pm_br_2path and pm_ld_miss_l1 is counted + twice when perf stat is done (perf:) (LP: #1714571) + - perf vendor events powerpc: Remove duplicate events + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Include vmd in storage-core-modules udeb + + * 17.10 fails to boot on POWER9 DD2.0 with Deep stop states (LP: #1715064) + - powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle + - powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug + - SAUCE: powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state + offline + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Support glibc 2.26 siginfo_t.h + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + + -- Seth Forshee Sun, 10 Sep 2017 17:48:59 -0500 + +linux (4.13.0-9.10) artful; urgency=low + + * linux: 4.13.0-9.10 -proposed tracker (LP: #1715145) + + * EDAC sbridge: Failed to register device with error -22. (LP: #1714112) + - [Config] CONFIG_EDAC_GHES=n + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13 + + -- Seth Forshee Tue, 05 Sep 2017 07:51:19 -0500 + +linux (4.13.0-8.9) artful; urgency=low + + * snapd 2.27.3+17.10 ADT test failure with linux 4.13.0-6.7 (LP: #1713103) + - SAUCE: apparmor: fix apparmorfs DAC access, permissions + + * enable ARCH_SUNXI (and friends) in arm64 kernel .config (LP: #1701137) + - [Config] Enable CONFIG_ARCH_SUNXI and related options for arm64 + + * [Bug] Harrisonville: pnd2_edac always fail to load on B1 stepping + Harrisonville SDP (LP: #1709257) + - EDAC, pnd2: Build in a minimal sideband driver for Apollo Lake + - EDAC, pnd2: Mask off the lower four bits of a BAR + - EDAC, pnd2: Conditionally unhide/hide the P2SB PCI device to read BAR + - EDAC, pnd2: Properly toggle hidden state for P2SB PCI device + - SAUCE: i2c: i801: Restore the presence state of P2SB PCI device after + reading BAR + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - SAUCE: selftests/powerpc: Disable some ptrace selftests + - [Config] CONFIG_CRYPTO_DEV_NITROX_CNN55XX=n for s390x + - [Config] CONFIG_I2C_SLAVE=n for amd64, i386, ppc64el + - [Config] Disable CONFIG_MDIO_* options for s390x + - [Config] CONFIG_SCSI_MQ_DEFAULT=n for s390x + - [Config] Update annotations for 4.13 + + -- Seth Forshee Thu, 31 Aug 2017 14:27:09 -0500 + +linux (4.13.0-7.8) artful; urgency=low + + * linux 4.12.0-11.12 ADT test failure with linux 4.12.0-11.12 (LP: #1710904) + - SAUCE: selftests/powerpc: Use snprintf to construct DSCR sysfs interface + paths + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: seccomp: log actions even when audit is disabled" + + * Miscellaneous upstream changes + - seccomp: Provide matching filter for introspection + - seccomp: Sysctl to display available actions + - seccomp: Operation for checking if an action is available + - seccomp: Sysctl to configure actions that are allowed to be logged + - seccomp: Selftest for detection of filter flag support + - seccomp: Filter flag to log all actions except SECCOMP_RET_ALLOW + - seccomp: Action to log before allowing + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc7 + + -- Seth Forshee Mon, 28 Aug 2017 08:12:24 -0500 + +linux (4.13.0-6.7) artful; urgency=low + + * HID: multitouch: Support ALPS PTP Stick and Touchpad devices (LP: #1712481) + - SAUCE: HID: multitouch: Support ALPS PTP stick with pid 0x120A + + * sort ABI files with C.UTF-8 locale (LP: #1712345) + - [Packaging] sort ABI files with C.UTF-8 locale + + * igb: Support using Broadcom 54616 as PHY (LP: #1712024) + - SAUCE: igb: add support for using Broadcom 54616 as PHY + + * RPT related fixes missing in Ubuntu 16.04.3 (LP: #1709220) + - powerpc/mm/radix: Improve _tlbiel_pid to be usable for PWC flushes + - powerpc/mm/radix: Improve TLB/PWC flushes + - powerpc/mm/radix: Avoid flushing the PWC on every flush_tlb_range + + * Linux 4.12 refuses to load self-signed modules under Secure Boot with + properly enrolled keys (LP: #1712168) + - SAUCE: (efi-lockdown) MODSIGN: Fix module signature verification + + * [17.10 FEAT] Enable NVMe driver - kernel (LP: #1708432) + - [Config] CONFIG_BLK_DEV_NVME=m for s390 + + * Artful: 4.12.0-11.12: Boot panic in vlv2_plat_configure_clock+0x3b/0xa0 + (LP: #1711298) + - [Config] CONFIG_INTEL_ATOMISP=n + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: af_unix mediation + + * Miscellaneous upstream changes + - apparmor: Fix shadowed local variable in unpack_trans_table() + - apparmor: Fix logical error in verify_header() + - apparmor: Fix an error code in aafs_create() + - apparmor: Redundant condition: prev_ns. in [label.c:1498] + - apparmor: add the ability to mediate signals + - apparmor: add mount mediation + - apparmor: cleanup conditional check for label in label_print + - apparmor: add support for absolute root view based labels + - apparmor: make policy_unpack able to audit different info messages + - apparmor: add more debug asserts to apparmorfs + - apparmor: add base infastructure for socket mediation + - apparmor: move new_null_profile to after profile lookup fns() + - apparmor: fix race condition in null profile creation + - apparmor: ensure unconfined profiles have dfas initialized + - apparmor: fix incorrect type assignment when freeing proxies + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc6 + + -- Seth Forshee Wed, 23 Aug 2017 08:10:38 -0500 + +linux (4.13.0-5.6) artful; urgency=low + + * Ubuntu17.10 - perf: Update Power9 PMU event JSON files (LP: #1708630) + - perf pmu-events: Support additional POWER8+ PVR in mapfile + - perf vendor events: Add POWER9 PMU events + - perf vendor events: Add POWER9 PVRs to mapfile + - SAUCE: perf vendor events powerpc: remove suffix in mapfile + - SAUCE: perf vendor events powerpc: Update POWER9 events + + * Disable CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE (LP: #1709171) + - [Config] CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=n for ppc64el + + * Please only recommend or suggest initramfs-tools | linux-initramfs-tool for + kernels able to boot without initramfs (LP: #1700972) + - [Debian] Don't depend on initramfs-tools + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - SAUCE: aufs -- Add missing argument to loop_switch() call + - [Config] Enable aufs + - SAUCE: (noup) Update spl to 0.6.5.11-ubuntu1, zfs to 0.6.5.11-1ubuntu3 + - Enable zfs build + - SAUCE: powerpc: Always initialize input array when calling epapr_hypercall() + - [Packaging] switch up to debhelper 9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc5 + + -- Seth Forshee Tue, 15 Aug 2017 09:24:16 -0500 + +linux (4.13.0-4.5) artful; urgency=low + + * Lenovo Yoga 910 Sensors (LP: #1708120) + - SAUCE: (no-up) HID: Add quirk for Lenovo Yoga 910 with ITE Chips + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Add vmd driver to generic inclusion list + + * Set CONFIG_SATA_HIGHBANK=y on armhf (LP: #1703430) + - [Config] CONFIG_SATA_HIGHBANK=y + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-1 + - SAUCE: hio: Build fixes for 4.13 + - Enable hio build + - SAUCE: (noup) Update spl to 0.6.5.11-1, zfs to 0.6.5.11-1ubuntu1 + - [debian] use all rather than amd64 dkms debs for sync + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc4 + + -- Seth Forshee Tue, 08 Aug 2017 11:31:48 -0500 + +linux (4.13.0-3.4) artful; urgency=low + + * Adt tests of src:linux time out often on armhf lxc containers (LP: #1705495) + - [Packaging] tests -- reduce rebuild test to one flavour + - [Packaging] tests -- reduce rebuild test to one flavour -- use filter + + * snapd 2.26.8+17.10 ADT test failure with linux 4.12.0-6.7 (LP: #1704158) + - SAUCE: virtio_net: Revert mergeable buffer handling rework + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc3 + + -- Seth Forshee Mon, 31 Jul 2017 10:08:16 -0500 + +linux (4.13.0-2.3) artful; urgency=low + + * Change CONFIG_IBMVETH to module (LP: #1704479) + - [Config] CONFIG_IBMVETH=m + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc2 + + -- Seth Forshee Mon, 24 Jul 2017 13:58:08 -0500 + +linux (4.13.0-1.2) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Support sphinx-based kernel documentation + + -- Seth Forshee Thu, 20 Jul 2017 09:18:33 -0500 + +linux (4.13.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable hio + - Disable zfs build + - ubuntu: vbox -- update to 5.1.24-dfsg-1 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc1 + + -- Seth Forshee Wed, 19 Jul 2017 15:09:31 -0500 + +linux (4.12.0-7.8) artful; urgency=low + + * ThunderX: soft lockup on 4.8+ kernels when running qemu-efi with vhost=on + (LP: #1673564) + - arm64: Add a facility to turn an ESR syndrome into a sysreg encoding + - KVM: arm/arm64: vgic-v3: Add accessors for the ICH_APxRn_EL2 registers + - KVM: arm64: Make kvm_condition_valid32() accessible from EL2 + - KVM: arm64: vgic-v3: Add hook to handle guest GICv3 sysreg accesses at EL2 + - KVM: arm64: vgic-v3: Add ICV_BPR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_EOIR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler + - KVM: arm64: vgic-v3: Enable trapping of Group-1 system registers + - KVM: arm64: Enable GICv3 Group-1 sysreg trapping via command-line + - KVM: arm64: vgic-v3: Add ICV_BPR0_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGNREN0_EL1 handler + - KVM: arm64: vgic-v3: Add misc Group-0 handlers + - KVM: arm64: vgic-v3: Enable trapping of Group-0 system registers + - KVM: arm64: Enable GICv3 Group-0 sysreg trapping via command-line + - arm64: Add MIDR values for Cavium cn83XX SoCs + - arm64: Add workaround for Cavium Thunder erratum 30115 + - KVM: arm64: vgic-v3: Add ICV_DIR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_RPR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_CTLR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_PMR_EL1 handler + - KVM: arm64: Enable GICv3 common sysreg trapping via command-line + - KVM: arm64: vgic-v3: Log which GICv3 system registers are trapped + - KVM: arm64: Log an error if trapping a read-from-write-only GICv3 access + - KVM: arm64: Log an error if trapping a write-to-read-only GICv3 access + + * hns: under heavy load, NIC may fail and require reboot (LP: #1704146) + - net: hns: Bugfix for Tx timeout handling in hns driver + + * New ACPI identifiers for ThunderX SMMU (LP: #1703437) + - iommu/arm-smmu: Plumb in new ACPI identifiers + + * Transparent hugepages should default to enabled=madvise (LP: #1703742) + - SAUCE: use CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y as default + + * Artful update to v4.12.1 stable release (LP: #1703858) + - driver core: platform: fix race condition with driver_override + - RDMA/uverbs: Check port number supplied by user verbs cmds + - usb: dwc3: replace %p with %pK + - USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick + - usb: usbip: set buffer pointers to NULL after free + - Add USB quirk for HVR-950q to avoid intermittent device resets + - usb: Fix typo in the definition of Endpoint[out]Request + - USB: core: fix device node leak + - USB: serial: option: add two Longcheer device ids + - USB: serial: qcserial: new Sierra Wireless EM7305 device ID + - xhci: Limit USB2 port wake support for AMD Promontory hosts + - gfs2: Fix glock rhashtable rcu bug + - Add "shutdown" to "struct class". + - tpm: Issue a TPM2_Shutdown for TPM2 devices. + - tpm: fix a kernel memory leak in tpm-sysfs.c + - powerpc/powernv: Fix CPU_HOTPLUG=n idle.c compile error + - x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings + - sched/fair, cpumask: Export for_each_cpu_wrap() + - sched/core: Implement new approach to scale select_idle_cpu() + - sched/numa: Use down_read_trylock() for the mmap_sem + - sched/numa: Override part of migrate_degrades_locality() when idle balancing + - sched/fair: Simplify wake_affine() for the single socket case + - sched/numa: Implement NUMA node level wake_affine() + - sched/fair: Remove effective_load() + - sched/numa: Hide numa_wake_affine() from UP build + - xen: avoid deadlock in xenbus driver + - crypto: drbg - Fixes panic in wait_for_completion call + - Linux 4.12.1 + + * cxlflash update request in the Xenial SRU stream (LP: #1702521) + - scsi: cxlflash: Combine the send queue locks + - scsi: cxlflash: Update cxlflash_afu_sync() to return errno + - scsi: cxlflash: Reset hardware queue context via specified register + - scsi: cxlflash: Schedule asynchronous reset of the host + - scsi: cxlflash: Handle AFU sync failures + - scsi: cxlflash: Track pending scsi commands in each hardware queue + - scsi: cxlflash: Flush pending commands in cleanup path + - scsi: cxlflash: Add scsi command abort handler + - scsi: cxlflash: Create character device to provide host management interface + - scsi: cxlflash: Separate AFU internal command handling from AFU sync + specifics + - scsi: cxlflash: Introduce host ioctl support + - scsi: cxlflash: Refactor AFU capability checking + - scsi: cxlflash: Support LUN provisioning + - scsi: cxlflash: Support AFU debug + - scsi: cxlflash: Support WS16 unmap + - scsi: cxlflash: Remove zeroing of private command data + - scsi: cxlflash: Update TMF command processing + - scsi: cxlflash: Avoid double free of character device + - scsi: cxlflash: Update send_tmf() parameters + - scsi: cxlflash: Update debug prints in reset handlers + + * make snap-pkg support (LP: #1700747) + - make snap-pkg support + + * Quirk for non-compliant PCI bridge on HiSilicon D05 board (LP: #1698706) + - SAUCE: PCI: Support hibmc VGA cards behind a misbehaving HiSilicon bridge + + * arm64: fix crash reading /proc/kcore (LP: #1702749) + - fs/proc: kcore: use kcore_list type to check for vmalloc/module address + - arm64: mm: select CONFIG_ARCH_PROC_KCORE_TEXT + + * Opal and POWER9 DD2 (LP: #1702159) + - SAUCE: powerpc/powernv: Tell OPAL about our MMU mode on POWER9 + + * Data corruption with hio driver (LP: #1701316) + - SAUCE: hio: Fix incorrect use of enum req_opf values + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.10-1, zfs to 0.6.5.10-1ubuntu2 + - snapcraft.yaml: Sync with xenial + - [Config] CONFIG_CAVIUM_ERRATUM_30115=y + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and + MokSBState" + + -- Seth Forshee Fri, 14 Jul 2017 15:25:41 -0500 + +linux (4.12.0-6.7) artful; urgency=low + + * update ENA driver to 1.2.0k from net-next (LP: #1701575) + - net: ena: change return value for unsupported features unsupported return + value + - net: ena: add hardware hints capability to the driver + - net: ena: change sizeof() argument to be the type pointer + - net: ena: add reset reason for each device FLR + - net: ena: add support for out of order rx buffers refill + - net: ena: allow the driver to work with small number of msix vectors + - net: ena: use napi_schedule_irqoff when possible + - net: ena: separate skb allocation to dedicated function + - net: ena: use lower_32_bits()/upper_32_bits() to split dma address + - net: ena: update driver's rx drop statistics + - net: ena: update ena driver to version 1.2.0 + + * APST gets enabled against explicit kernel option (LP: #1699004) + - nvme: explicitly disable APST on quirked devices + + * Miscellaneous Ubuntu changes + - SAUCE: hio: Update to Huawei ES3000_V2 (2.1.0.40) + - SAUCE: hio updates for 4.12 + - SAUCE: Enable hio build + + -- Seth Forshee Wed, 05 Jul 2017 14:23:20 -0500 + +linux (4.12.0-5.6) artful; urgency=low + + * ERAT invalidate on context switch removal (LP: #1700819) + - powerpc: Only do ERAT invalidate on radix context switch on P9 DD1 + + * powerpc: Invalidate ERAT on powersave wakeup for POWER9 (LP: #1700521) + - SAUCE: powerpc: Invalidate ERAT on powersave wakeup for POWER9 + + * Miscellaneous Ubuntu changes + - d-i: Move qcom-emac from arm64 to shared nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.12 + + -- Seth Forshee Mon, 03 Jul 2017 07:52:02 -0500 + +linux (4.12.0-4.5) artful; urgency=low + + * aacraid driver may return uninitialized stack data to userspace + (LP: #1700077) + - SAUCE: scsi: aacraid: Don't copy uninitialized stack memory to userspace + + * KILLER1435-S[0489:e0a2] BT cannot search BT 4.0 device (LP: #1699651) + - Bluetooth: btusb: Add support for 0489:e0a2 QCA_ROME device + + * AACRAID for power9 platform (LP: #1689980) + - scsi: aacraid: Remove __GFP_DMA for raw srb memory + - scsi: aacraid: Fix DMAR issues with iommu=pt + - scsi: aacraid: Added 32 and 64 queue depth for arc natives + - scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks + - scsi: aacraid: Remove reset support from check_health + - scsi: aacraid: Change wait time for fib completion + - scsi: aacraid: Log count info of scsi cmds before reset + - scsi: aacraid: Print ctrl status before eh reset + - scsi: aacraid: Using single reset mask for IOP reset + - scsi: aacraid: Rework IOP reset + - scsi: aacraid: Add periodic checks to see IOP reset status + - scsi: aacraid: Rework SOFT reset code + - scsi: aacraid: Rework aac_src_restart + - scsi: aacraid: Use correct function to get ctrl health + - scsi: aacraid: Make sure ioctl returns on controller reset + - scsi: aacraid: Enable ctrl reset for both hba and arc + - scsi: aacraid: Add reset debugging statements + - scsi: aacraid: Remove reference to Series-9 + - scsi: aacraid: Update driver version to 50834 + + * hibmc driver does not include "pci:" prefix in bus ID (LP: #1698700) + - SAUCE: drm: hibmc: Use set_busid function from drm core + + * HiSilicon D05: installer doesn't appear on VGA (LP: #1698954) + - d-i: Add hibmc-drm to kernel-image udeb + + * Fix /proc/cpuinfo revision for POWER9 DD2 (LP: #1698844) + - SAUCE: powerpc: Fix /proc/cpuinfo revision for POWER9 DD2 + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SATA_MV=n and CONFIG_GENERIC_PHY=n for s390x + - [Config] CONFIG_ATA=n for s390x + - [Config] Update annotations for 4.12 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc7 + + -- Seth Forshee Mon, 26 Jun 2017 11:27:29 -0500 + +linux (4.12.0-3.4) artful; urgency=low + + * Miscellaneous upstream changes + - ufs: fix the logics for tail relocation + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc6 + + -- Seth Forshee Mon, 19 Jun 2017 14:50:39 -0500 + +linux (4.12.0-2.3) artful; urgency=low + + * CVE-2014-9900 + - SAUCE: (no-up) net: Zeroing the structure ethtool_wolinfo in + ethtool_get_wol() + + * System doesn't boot properly on Gigabyte AM4 motherboards (AMD Ryzen) + (LP: #1671360) + - pinctrl/amd: Use regular interrupt instead of chained + + * extend-diff-ignore should use exact matches (LP: #1693504) + - [Packaging] exact extend-diff-ignore matches + + * Miscellaneous Ubuntu changes + - SAUCE: efi: Don't print secure boot state from the efi stub + - ubuntu: vbox -- Update to 5.1.22-dfsg-1 + - SAUCE: vbox fixes for 4.12 + - Re-enable virtualbox build + - [Config] CONFIG_ORANGEFS_FS=m + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu2, zfs to 0.6.5.9-5ubuntu7 + - Enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc4 + * Rebase to v4.12-rc5 + + -- Seth Forshee Sun, 11 Jun 2017 22:25:13 -0500 + +linux (4.12.0-1.2) artful; urgency=low + + * Enable Matrox driver for Ubuntu 16.04.3 (LP: #1693337) + - [Config] Enable CONFIG_DRM_MGAG200 as module + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_LIBIO=y on arm64 only + - SAUCE: LIBIO: Introduce a generic PIO mapping method + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: LPC: Support the device-tree LPC host on Hip06/Hip07 + - SAUCE: LIBIO: Support the dynamically logical PIO registration of ACPI host + I/O + - SAUCE: LPC: Add the ACPI LPC support + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: PCI: Restore codepath for !CONFIG_LIBIO + + * POWER9: Additional patches for TTY and CPU_IDLE (LP: #1674325) + - SAUCE: tty: Fix ldisc crash on reopened tty + + * Miscellaneous Ubuntu changes + - [Debian] Add build-dep on libnuma-dev to enable 'perf bench numa' + - Rebase to v4.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc3 + + -- Seth Forshee Mon, 29 May 2017 20:56:29 -0500 + +linux (4.12.0-0.1) artful; urgency=low + + * please enable CONFIG_ARM64_LSE_ATOMICS (LP: #1691614) + - [Config] CONFIG_ARM64_LSE_ATOMICS=y + + * [Regression] NUMA_BALANCING disabled on arm64 (LP: #1690914) + - [Config] CONFIG_NUMA_BALANCING{,_DEFAULT_ENABLED}=y on arm64 + + * exec'ing a setuid binary from a threaded program sometimes fails to setuid + (LP: #1672819) + - SAUCE: exec: ensure file system accounting in check_unsafe_exec is correct + + * Miscellaneous Ubuntu changes + - Update find-missing-sauce.sh to compare to artful + - Update dropped.txt + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Disable virtualbox build + - Disable hio build + - SAUCE: securityfs: Replace CURRENT_TIME with current_time() + - Disable zfs build + - [Debian] Work out upstream tag for use with gen-auto-reconstruct + - SAUCE: Import aufs driver + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + - [Config] Enable aufs + - SAUCE: perf callchain: Include errno.h on x86 unconditinally + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc2 + + -- Seth Forshee Sun, 21 May 2017 23:44:44 -0500 + +linux (4.11.0-3.8) artful; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1690999 + + * apparmor_parser hangs indefinitely when called by multiple threads + (LP: #1645037) + - SAUCE: apparmor: fix lock ordering for mkdir + + * apparmor leaking securityfs pin count (LP: #1660846) + - SAUCE: apparmor: fix leak on securityfs pin count + + * apparmor reference count leak when securityfs_setup_d_inode\ () fails + (LP: #1660845) + - SAUCE: apparmor: fix reference count leak when securityfs_setup_d_inode() + fails + + * apparmor not checking error if security_pin_fs() fails (LP: #1660842) + - SAUCE: apparmor: fix not handling error case when securityfs_pin_fs() fails + + * libvirt profile is blocking global setrlimit despite having no rlimit rule + (LP: #1679704) + - SAUCE: apparmor: fix complain mode failure for rlimit mediation + - apparmor: update auditing of rlimit check to provide capability information + + * apparmor: does not provide a way to detect policy updataes (LP: #1678032) + - SAUCE: apparmor: add policy revision file interface + + * apparmor does not make support of query data visible (LP: #1678023) + - SAUCE: apparmor: add label data availability to the feature set + + * apparmor query interface does not make supported query info available + (LP: #1678030) + - SAUCE: apparmor: add information about the query inteface to the feature set + + * change_profile incorrect when using namespaces with a compound stack + (LP: #1677959) + - SAUCE: apparmor: fix label parse for stacked labels + + * Regression in 4.4.0-65-generic causes very frequent system crashes + (LP: #1669611) + - apparmor: sync of apparmor 3.6+ (17.04) + + * Artful update to 4.11.1 stable release (LP: #1690814) + - dm ioctl: prevent stack leak in dm ioctl call + - drm/sti: fix GDP size to support up to UHD resolution + - power: supply: lp8788: prevent out of bounds array access + - brcmfmac: Ensure pointer correctly set if skb data location changes + - brcmfmac: Make skb header writable before use + - sparc64: fix fault handling in NGbzero.S and GENbzero.S + - refcount: change EXPORT_SYMBOL markings + - net: macb: fix phy interrupt parsing + - tcp: fix access to sk->sk_state in tcp_poll() + - geneve: fix incorrect setting of UDP checksum flag + - bpf: enhance verifier to understand stack pointer arithmetic + - bpf, arm64: fix jit branch offset related to ldimm64 + - tcp: fix wraparound issue in tcp_lp + - net: ipv6: Do not duplicate DAD on link up + - net: usb: qmi_wwan: add Telit ME910 support + - tcp: do not inherit fastopen_req from parent + - ipv4, ipv6: ensure raw socket message is big enough to hold an IP header + - rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string + - ipv6: initialize route null entry in addrconf_init() + - ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf + - tcp: randomize timestamps on syncookies + - bnxt_en: allocate enough space for ->ntp_fltr_bmap + - bpf: don't let ldimm64 leak map addresses on unprivileged + - net: mdio-mux: bcm-iproc: call mdiobus_free() in error path + - f2fs: sanity check segment count + - xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..." + - xen: Revert commits da72ff5bfcb0 and 72a9b186292d + - block: get rid of blk_integrity_revalidate() + - Linux 4.11.1 + + * Module signing exclusion for staging drivers does not work properly + (LP: #1690908) + - SAUCE: Fix module signing exclusion in package builds + + * perf: qcom: Add L3 cache PMU driver (LP: #1689856) + - [Config] CONFIG_QCOM_L3_PMU=y + - perf: qcom: Add L3 cache PMU driver + + * No PMU support for ACPI-based arm64 systems (LP: #1689661) + - drivers/perf: arm_pmu: rework per-cpu allocation + - drivers/perf: arm_pmu: manage interrupts per-cpu + - drivers/perf: arm_pmu: split irq request from enable + - drivers/perf: arm_pmu: remove pointless PMU disabling + - drivers/perf: arm_pmu: define armpmu_init_fn + - drivers/perf: arm_pmu: fold init into alloc + - drivers/perf: arm_pmu: factor out pmu registration + - drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() + - drivers/perf: arm_pmu: handle no platform_device + - drivers/perf: arm_pmu: rename irq request/free functions + - drivers/perf: arm_pmu: split cpu-local irq request/free + - drivers/perf: arm_pmu: move irq request/free into probe + - drivers/perf: arm_pmu: split out platform device probe logic + - arm64: add function to get a cpu's MADT GICC table + - [Config] CONFIG_ARM_PMU_ACPI=y + - drivers/perf: arm_pmu: add ACPI framework + - arm64: pmuv3: handle !PMUv3 when probing + - arm64: pmuv3: use arm_pmu ACPI framework + + * Fix NVLINK2 TCE route (LP: #1690155) + - powerpc/powernv: Fix TCE kill on NVLink2 + + * CVE-2017-0605 + - tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() + + * Miscellaneous Ubuntu changes + - [Config] Restore powerpc arch to annotations file + - [Config] Disable runtime testing modules + - [Config] Disable drivers not needed on s390x + - [Config] Update annotations for 4.11 + - [Config] updateconfigs after apparmor updates + + * Miscellaneous upstream changes + - apparmor: use SHASH_DESC_ON_STACK + - apparmor: fix invalid reference to index variable of iterator line 836 + - apparmor: fix parameters so that the permission test is bypassed at boot + - apparmor: Make path_max parameter readonly + - apparmorfs: Combine two function calls into one in aa_fs_seq_raw_abi_show() + - apparmorfs: Use seq_putc() in two functions + - apparmor: provide information about path buffer size at boot + - apparmor: add/use fns to print hash string hex value + + -- Seth Forshee Tue, 16 May 2017 00:39:13 -0500 + +linux (4.11.0-2.7) artful; urgency=low + + * kernel-wedge fails in artful due to leftover squashfs-modules d-i files + (LP: #1688259) + - Remove squashfs-modules files from d-i + - [Config] as squashfs-modules is builtin kernel-image must Provides: it + + * [Zesty] d-i: replace msm_emac with qcom_emac (LP: #1677297) + - Revert "UBUNTU: d-i: initrd needs msm_emac on amberwing platform." + - d-i: initrd needs qcom_emac on amberwing platform. + + * update for V3 kernel bits and improved multiple fan slice support + (LP: #1470091) + - SAUCE: fan: tunnel multiple mapping mode (v3) + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu1, zfs to 0.6.5.9-5ubuntu5 + - Enable zfs + - SAUCE: fan: add VXLAN implementation + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Add EFI signature data types + - SAUCE: (efi-lockdown) Add an EFI signature blob parser and key loader. + - SAUCE: (efi-lockdown) KEYS: Add a system blacklist keyring + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Support not importing certs from db + - SAUCE: (efi-lockdown) MODSIGN: Don't try secure boot if EFI runtime is + disabled + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * rebase to v4.11 + + -- Seth Forshee Fri, 05 May 2017 07:43:14 -0500 + +linux (4.11.0-1.6) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Use default compression for all packages + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) fs: Allow superblock owner to change ownership of inodes + - SAUCE: (namespace) fs: Don't remove suid for CAP_FSETID for userns root + - SAUCE: (namespace) fs: Allow superblock owner to access do_remount_sb() + - SAUCE: (namespace) capabilities: Allow privileged user in s_user_ns to set + security.* xattrs + - SAUCE: (namespace) fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw + filesystems + - SAUCE: (namespace) fuse: Add support for pid namespaces + - SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace + or a descendant + - SAUCE: (namespace) fuse: Allow user namespace mounts + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) evm: Don't update hmacs in user ns mounts + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + + -- Seth Forshee Wed, 26 Apr 2017 10:08:29 -0500 + +linux (4.11.0-0.5) artful; urgency=low + + * [Hyper-V][SAUCE] pci-hyperv: Use only 16 bit integer for PCI domain + (LP: #1684971) + - SAUCE: pci-hyperv: Use only 16 bit integer for PCI domain + + * [Hyper-V] Ubuntu 14.04.2 LTS Generation 2 SCSI Errors on VSS Based Backups + (LP: #1470250) + - SAUCE: Tools: hv: vss: Thaw the filesystem and continue after freeze fails + + * Enable virtual scsi server driver for Power (LP: #1615665) + - SAUCE: Return TCMU-generated sense data to fabric module + + * include/linux/security.h header syntax error with !CONFIG_SECURITYFS + (LP: #1630990) + - SAUCE: (no-up) include/linux/security.h -- fix syntax error with + CONFIG_SECURITYFS=n + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Debian] Add script to update virtualbox + - ubuntu: vbox -- Update to 5.1.20-dfsg-2 + - Enable vbox + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc8 + + -- Seth Forshee Tue, 25 Apr 2017 13:42:54 -0500 + +linux (4.11.0-0.4) zesty; urgency=low + + * POWER9: Improve performance on memory management (LP: #1681429) + - SAUCE: powerpc/mm/radix: Don't do page walk cache flush when doing full mm + flush + - SAUCE: powerpc/mm/radix: Remove unnecessary ptesync + + * Miscellaneous Ubuntu changes + - find-missing-sauce.sh + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc7 + + -- Seth Forshee Tue, 18 Apr 2017 08:19:43 -0500 + +linux (4.11.0-0.3) zesty; urgency=low + + * Disable CONFIG_HVC_UDBG on ppc64el (LP: #1680888) + - [Config] Disable CONFIG_HVC_UDBG on ppc64el + + * smartpqi driver needed in initram disk and installer (LP: #1680156) + - [Config] Add smartpqi to d-i + + * Disable CONFIG_SECURITY_SELINUX_DISABLE (LP: #1680315) + - [Config] CONFIG_SECURITY_SELINUX_DISABLE=n + + * Miscellaneous Ubuntu changes + - [Config] flash-kernel should be a Breaks + - [Config] drop the info directory + - [Config] drop NOTES as obsolete + - [Config] drop changelog.historical as obsolete + - rebase to v4.11-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc6 + + -- Tim Gardner Tue, 11 Apr 2017 07:16:52 -0600 + +linux (4.11.0-0.2) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc5 + + -- Tim Gardner Mon, 03 Apr 2017 08:26:07 +0100 + +linux (4.11.0-0.1) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc4 + - LP: #1591053 + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 + +linux (4.11.0-0.0) zesty; urgency=low + + * dummy entry + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 --- linux-5.8.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-5.8.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,656 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_DEBUGGER=y +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_AD525X_DPOT=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ANDROID=y +CONFIG_APDS9802ALS=m +CONFIG_APPLICOM=m +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCNET=m +CONFIG_ATA=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=y +CONFIG_ATM=m +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_AX88796B_PHY=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BAREUDP=m +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCM84881_PHY=y +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0" +CONFIG_CDROM_PKTCDVD=m +# CONFIG_CLOCK_THERMAL is not set +# CONFIG_CMA is not set +CONFIG_CMDLINE_PARTITION=y +CONFIG_COMMON_CLK=y +CONFIG_COUNTER=m +CONFIG_CRAMFS=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMADEVICES=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +CONFIG_DNET=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DP_AUX_CHARDEV=y +CONFIG_DRM_DP_CEC=y +# CONFIG_DRM_ETNAVIV is not set +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA9950=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_QXL=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VKMS=m +CONFIG_DS1682=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_EE1004=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFS_FS=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +# CONFIG_EVM_LOAD_X509 is not set +CONFIG_EXFAT_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB_3DFX=m +CONFIG_FB_ARK=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_I740=m +# CONFIG_FB_IBM_GXT4500 is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MATROX=m +CONFIG_FB_MB862XX=m +CONFIG_FB_METRONOME=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_OPENCORES=m +CONFIG_FB_PM2=m +CONFIG_FB_PM3=m +CONFIG_FB_RADEON=m +CONFIG_FB_RIVA=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SM712=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIXED_PHY=y +CONFIG_FPGA_BRIDGE=m +CONFIG_FPGA_DFL=m +CONFIG_FRAME_WARN=1024 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GNSS=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD_FCH=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SIOX=m +CONFIG_GPIO_TPIC2810=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_XILINX=y +CONFIG_GREYBUS=m +CONFIG_HABANA_AI=m +CONFIG_HAMACHI=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATION=y +CONFIG_HID=m +CONFIG_HIO=m +CONFIG_HMC6352=m +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_SHPC=y +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HWSPINLOCK=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +# CONFIG_HZ_100 is not set +CONFIG_I2C=y +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_AMD_MP2=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_EMEV2 is not set +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_MLXCPLD=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +# CONFIG_I2C_SLAVE is not set +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I3C=m +CONFIG_I6300ESB_WDT=m +CONFIG_ICS932S401=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_IMA_ARCH_POLICY is not set +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_READ_POLICY is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +# CONFIG_IMA_SIG_TEMPLATE is not set +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INTERCONNECT=y +CONFIG_IOMMU_IOVA=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_IRQ_BYPASS_MANAGER=y +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +# CONFIG_KERNEL_GZIP is not set +CONFIG_KERNEL_LZ4=y +CONFIG_KEXEC_FILE=y +CONFIG_KVM=m +CONFIG_LAPB=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_LZ4_COMPRESS=y +CONFIG_MAC_PARTITION=y +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS=y +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_THUNDER=m +CONFIG_MDIO_XPCS=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y +CONFIG_MEMSTICK=m +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_IQS62X=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MP2629=m +CONFIG_MFD_MT6360=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WCD934X=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM8994=m +CONFIG_MHI_BUS=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_CQHCI=m +# CONFIG_MMC_HSQ is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MOST=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_NAND_ECC_SW_HAMMING=m +CONFIG_MTD_RAW_NAND=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFP=m +CONFIG_NODES_SHIFT=10 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=8192 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_NVMEM=y +CONFIG_NVRAM=m +CONFIG_N_GSM=m +# CONFIG_OF is not set +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKING=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PANIC_TIMEOUT=0 +CONFIG_PARAVIRT=y +CONFIG_PARPORT=m +CONFIG_PATA_SIS=y +CONFIG_PC104=y +CONFIG_PCCARD=m +CONFIG_PCIEPORTBUS=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCMCIA=m +CONFIG_PGTABLE_LEVELS=5 +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PINCTRL=y +CONFIG_PMIC_OPREGION=y +CONFIG_PM_DEVFREQ=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PSI_DEFAULT_DISABLED is not set +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_QRTR=m +CONFIG_RAPIDIO=y +CONFIG_RAVE_SP_CORE=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RC_CORE=m +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_REMOTEPROC=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_RMI4_CORE=m +CONFIG_ROMFS_FS=m +CONFIG_RPMSG_VIRTIO=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_PCF8523=m +CONFIG_S2IO=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SFC_FALCON=m +CONFIG_SGI_PARTITION=y +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HDA_PREALLOC_SIZE=0 +CONFIG_SND_PCM=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +# CONFIG_SPI_ROCKCHIP is not set +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +# CONFIG_STANDALONE is not set +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_THERMAL=y +CONFIG_TIFM_CORE=m +CONFIG_TOUCHSCREEN_ELAN=y +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACE_SINK=m +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TTY_PRINTK=y +CONFIG_UACCE=m +CONFIG_UFS_FS=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB4=m +CONFIG_USB_DWC2_PCI=m +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_ROLE_SWITCH=m +CONFIG_USB_SUPPORT=y +CONFIG_VDPA=m +CONFIG_VFIO=y +CONFIG_VFIO_IOMMU_TYPE1=y +CONFIG_VFIO_PCI=y +CONFIG_VFIO_VIRQFD=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +CONFIG_VOP_BUS=m +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_XEN=y +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILINX_SDFEC=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YELLOWFIN=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_ZSTD_COMPRESS=y --- linux-5.8.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-5.8.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-5.8.0.orig/debian.master/config/amd64/config.flavour.lowlatency +++ linux-5.8.0/debian.master/config/amd64/config.flavour.lowlatency @@ -0,0 +1,10 @@ +# +# Config options for config.flavour.lowlatency automatically generated by splitconfig.pl +# +CONFIG_HZ=1000 +CONFIG_HZ_1000=y +# CONFIG_HZ_250 is not set +CONFIG_IRQ_FORCED_THREADING_DEFAULT=y +CONFIG_LATENCYTOP=y +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-5.8.0.orig/debian.master/config/annotations +++ linux-5.8.0/debian.master/config/annotations @@ -0,0 +1,13714 @@ +# Menu: HEADER +# FORMAT: 2 +# ARCH: x86 arm arm64 s390 powerpc + +# Mark debugging symbols. +# exceptions +CONFIG_DEBUG_FS note +CONFIG_DEBUG_KERNEL note + +# Menu: ROOT +CONFIG_LIVEPATCH policy<{'amd64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECCOMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_COMPAT policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZONE_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 's390x': 'y'}> +# +CONFIG_SECCOMP mark +CONFIG_ZONE_DMA note + +# Menu: ACPI (Advanced Configuration and Power Interface) Support +CONFIG_ACPI policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_DEBUGGER policy<{'amd64': 'y', 'arm64': 'n'}> +CONFIG_ACPI_DEBUGGER_USER policy<{'amd64': 'y'}> +CONFIG_ACPI_SPCR_TABLE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_PROCFS_POWER policy<{'amd64': 'n'}> +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE policy<{'amd64': 'y'}> +CONFIG_ACPI_EC_DEBUGFS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ACPI_AC policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_BATTERY policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_BUTTON policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_VIDEO policy<{'amd64': 'm'}> +CONFIG_ACPI_FAN policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_TAD policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ACPI_DOCK policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_PROCESSOR policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_IPMI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ACPI_PROCESSOR_AGGREGATOR policy<{'amd64': 'm'}> +CONFIG_ACPI_THERMAL policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_CUSTOM_DSDT_FILE policy<{'amd64': '""'}> +CONFIG_ACPI_TABLE_UPGRADE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_DEBUG policy<{'amd64': 'y', 'arm64': 'n'}> +CONFIG_ACPI_PCI_SLOT policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_CONTAINER policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_HOTPLUG_MEMORY policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_SBS policy<{'amd64': 'm'}> +CONFIG_ACPI_HED policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_CUSTOM_METHOD policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ACPI_BGRT policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_REDUCED_HARDWARE_ONLY policy<{'amd64': 'n', 'arm64': 'y'}> +CONFIG_ACPI_NFIT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_NFIT_SECURITY_DEBUG policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ACPI_NUMA policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_HMAT policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_DPTF_POWER policy<{'amd64': 'm'}> +CONFIG_ACPI_EXTLOG policy<{'amd64': 'm'}> +CONFIG_ACPI_CONFIGFS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_TPS68470_PMIC_OPREGION policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_X86_PM_TIMER policy<{'amd64': 'y'}> +# +CONFIG_ACPI_PROCFS_POWER flag +CONFIG_ACPI_CUSTOM_METHOD mark note +CONFIG_ACPI_CUSTOM_DSDT_FILE note + +# Menu: ACPI (Advanced Configuration and Power Interface) Support >> ACPI Platform Error Interface (APEI) +CONFIG_ACPI_APEI policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_APEI_GHES policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_APEI_PCIEAER policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_APEI_MEMORY_FAILURE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ACPI_APEI_EINJ policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ACPI_APEI_ERST_DEBUG policy<{'amd64': 'n', 'arm64': 'n'}> + +# Menu: ACPI (Advanced Configuration and Power Interface) Support >> PMIC (Power Management Integrated Circuit) operation region support +CONFIG_PMIC_OPREGION policy<{'amd64': 'y', 'arm64': 'n'}> +CONFIG_BYTCRC_PMIC_OPREGION policy<{'amd64': 'y'}> +CONFIG_CHTCRC_PMIC_OPREGION policy<{'amd64': 'y'}> +CONFIG_XPOWER_PMIC_OPREGION policy<{'amd64': 'y'}> +CONFIG_BXT_WC_PMIC_OPREGION policy<{'amd64': 'y'}> +CONFIG_CHT_WC_PMIC_OPREGION policy<{'amd64': 'y'}> +CONFIG_CHT_DC_TI_PMIC_OPREGION policy<{'amd64': 'y'}> + +# Menu: ARM Accelerated Cryptographic Algorithms +CONFIG_CRYPTO_CHACHA20_NEON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_NHPOLY1305_NEON policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: ARM Accelerated Cryptographic Algorithms >> Architecture: arm +CONFIG_ARM_CRYPTO policy<{'armhf': 'y'}> +CONFIG_CRYPTO_SHA1_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA1_ARM_NEON policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA1_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA2_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA256_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_SHA512_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM_BS policy<{'armhf': 'm'}> +CONFIG_CRYPTO_AES_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_GHASH_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_CRCT10DIF_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_CRC32_ARM_CE policy<{'armhf': 'm'}> +CONFIG_CRYPTO_POLY1305_ARM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_CURVE25519_NEON policy<{'armhf': 'm'}> + +# Menu: ARM64 Accelerated Cryptographic Algorithms + +# Menu: ARM64 Accelerated Cryptographic Algorithms >> Architecture: arm64 +CONFIG_ARM64_CRYPTO policy<{'arm64': 'y'}> +CONFIG_CRYPTO_SHA256_ARM64 policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SHA512_ARM64 policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SHA1_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SHA2_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SHA512_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SHA3_ARM64 policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SM3_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_SM4_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_GHASH_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_CRCT10DIF_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64 policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64_CE_CCM policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64_CE_BLK policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64_NEON_BLK policy<{'arm64': 'm'}> +CONFIG_CRYPTO_POLY1305_NEON policy<{'arm64': 'm'}> +CONFIG_CRYPTO_AES_ARM64_BS policy<{'arm64': 'm'}> + +# Menu: Advanced setup >> Architecture: powerpc + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options +CONFIG_PHYSICAL_START policy<{'amd64': '0x1000000', 'ppc64el': '0x00000000'}> + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options >> Architecture: powerpc +CONFIG_PAGE_OFFSET policy<{'armhf': '0xC0000000', 'ppc64el': '0xc000000000000000'}> +CONFIG_KERNEL_START policy<{'ppc64el': '0xc000000000000000'}> + +# Menu: Architecture: arm +CONFIG_ARM_DMA_IOMMU_ALIGNMENT policy<{'armhf': '8'}> +CONFIG_ARM_PATCH_PHYS_VIRT policy<{'armhf': 'y'}> + +# Menu: Architecture: arm64 +CONFIG_ZONE_DMA32 policy<{'amd64': 'y', 'arm64': 'y'}> + +# Menu: Architecture: powerpc +CONFIG_PPC64 policy<{'ppc64el': 'y'}> +CONFIG_NR_IRQS policy<{'ppc64el': '512'}> + +# Menu: Architecture: s390 +CONFIG_KMSG_IDS policy<{'s390x': 'y'}> + +# Menu: Architecture: x86 +CONFIG_64BIT policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Binary Emulations >> Architecture: x86 +CONFIG_IA32_EMULATION policy<{'amd64': 'y'}> +CONFIG_IA32_AOUT policy<{'amd64': '-'}> +CONFIG_X86_X32 policy<{'amd64': 'y'}> +# +CONFIG_IA32_AOUT mark note + +# Menu: Boot options +CONFIG_CMDLINE policy<{'arm64': '"console=ttyAMA0"', 'armhf': '""', 'ppc64el': '""'}> +CONFIG_CMDLINE_FORCE policy<{'arm64': 'n'}> +CONFIG_EFI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_KEXEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRASH_DUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_CRASH_DUMP mark note +CONFIG_EFI flag + +# Menu: Boot options >> Architecture: arm +CONFIG_USE_OF policy<{'armhf': 'y'}> +CONFIG_ATAGS policy<{'armhf': 'y'}> +CONFIG_DEPRECATED_PARAM_STRUCT policy<{'armhf': 'n'}> +CONFIG_ZBOOT_ROM_TEXT policy<{'armhf': '0x0'}> +CONFIG_ZBOOT_ROM_BSS policy<{'armhf': '0x0'}> +CONFIG_ARM_APPENDED_DTB policy<{'armhf': 'y'}> +CONFIG_ARM_ATAG_DTB_COMPAT policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ATAGS_PROC policy<{'armhf': 'y'}> +CONFIG_AUTO_ZRELADDR policy<{'armhf': 'y'}> +# +CONFIG_ARM_ATAG_DTB_COMPAT flag + +# Menu: Boot options >> Architecture: arm64 +CONFIG_ARM64_ACPI_PARKING_PROTOCOL policy<{'arm64': 'y'}> + +# Menu: Boot options >> Kernel command line type + +# Menu: Boot options >> Kernel command line type >> Architecture: arm +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER policy<{'armhf-generic': 'n'}> +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND policy<{'armhf-generic': 'y'}> + +# Menu: Bus options + +# Menu: Bus options (PCI etc.) + +# Menu: Bus options (PCI etc.) >> Architecture: x86 +CONFIG_ISA_BUS policy<{'amd64': 'y'}> +CONFIG_ISA_DMA_API policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_X86_SYSFB policy<{'amd64': 'n'}> +CONFIG_PCI_MMCONFIG policy<{'amd64': 'y'}> +CONFIG_PCI_CNB20LE_QUIRK policy<{'amd64': 'n'}> +# +CONFIG_X86_SYSFB flag + +# Menu: Bus options (PCI etc.) >> PCI access mode >> Architecture: x86 + +# Menu: Bus options >> Architecture: powerpc +CONFIG_FSL_LBC policy<{'ppc64el': 'y'}> + +# Menu: Bus support >> Architecture: arm +CONFIG_ARM_ERRATA_814220 policy<{'armhf': 'y'}> + +# Menu: Cryptographic API +CONFIG_CRYPTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_MANAGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_NULL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_PCRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRYPTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_AUTHENC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RSA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_ECDH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ECRDSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CURVE25519 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CURVE25519_X86 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_GCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CHACHA20POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_AEGIS128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_AEGIS128_SIMD policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SEQIV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_ECHAINIV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CBC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_ECB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_LRW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_OFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_PCBC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_XTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_KEYWRAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_NHPOLY1305_SSE2 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_NHPOLY1305_AVX2 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_ADIANTUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ESSIV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_HMAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_XCBC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_VMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRC32C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CRC32C_INTEL policy<{'amd64': 'y'}> +CONFIG_CRYPTO_CRC32C_VPMSUM policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_CRC32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CRC32_PCLMUL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_XXHASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLAKE2B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLAKE2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLAKE2S_X86 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CRCT10DIF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_CRCT10DIF_PCLMUL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CRCT10DIF_VPMSUM policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_VPMSUM_TESTER policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_GHASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_POLY1305_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_MD4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_MD5 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_MD5_PPC policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_MICHAEL_MIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD256 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_RMD320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_SHA1_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA256_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA512_SSSE3 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SHA1_PPC policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_SHA256 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_SHA512 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_SHA3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SM3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_STREEBOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TGR192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_WP512 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_AES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_AES_TI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_AES_NI_INTEL policy<{'amd64': 'm'}> +CONFIG_CRYPTO_ANUBIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ARC4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLOWFISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_BLOWFISH_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAMELLIA_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAST5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAST5_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_CAST6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CAST6_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_DES3_EDE_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_FCRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_KHAZAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SALSA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CHACHA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_CHACHA20_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SERPENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_SERPENT_SSE2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SERPENT_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SERPENT_AVX2_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_SM4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TEA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TWOFISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_TWOFISH_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY policy<{'amd64': 'm'}> +CONFIG_CRYPTO_TWOFISH_AVX_X86_64 policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEFLATE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_CRYPTO_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LZ4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LZ4HC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ZSTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_ANSI_CPRNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_JITTERENTROPY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_USER_API_HASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_SKCIPHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_RNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_USER_API_AEAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_LIB_BLAKE2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LIB_CHACHA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LIB_CURVE25519 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LIB_POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_LIB_CHACHA20POLY1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS flag +CONFIG_CRYPTO_TEST flag +CONFIG_CRYPTO_SHA512 note + +# Menu: Cryptographic API >> Asymmetric (public-key cryptographic) key type +CONFIG_ASYMMETRIC_KEY_TYPE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_X509_CERTIFICATE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PKCS8_PRIVATE_KEY_PARSER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TPM_KEY_PARSER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PKCS7_MESSAGE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PKCS7_TEST_KEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SIGNED_PE_FILE_VERIFICATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_ASYMMETRIC_KEY_TYPE note +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE note +CONFIG_X509_CERTIFICATE_PARSER note + +# Menu: Cryptographic API >> Certificates for signature checking +CONFIG_MODULE_SIG_KEY policy<{'amd64': '"certs/signing_key.pem"', 'arm64': '"certs/signing_key.pem"', 'armhf': '"certs/signing_key.pem"', 'ppc64el': '"certs/signing_key.pem"', 's390x': '"certs/signing_key.pem"'}> +CONFIG_SYSTEM_BLACKLIST_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSTEM_BLACKLIST_HASH_LIST policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +# +CONFIG_SYSTEM_BLACKLIST_KEYRING mark + +# Menu: Cryptographic API >> Certificates for signature checking >> Provide system-wide ring of trusted keys +CONFIG_SYSTEM_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSTEM_TRUSTED_KEYS policy<{'amd64': '"debian/canonical-certs.pem"', 'arm64': '"debian/canonical-certs.pem"', 'armhf': '"debian/canonical-certs.pem"', 'ppc64el': '"debian/canonical-certs.pem"', 's390x': '"debian/canonical-certs.pem"'}> +CONFIG_SYSTEM_EXTRA_CERTIFICATE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE policy<{'amd64': '4096', 'arm64': '4096', 'armhf': '4096', 'ppc64el': '4096', 's390x': '4096'}> +CONFIG_SECONDARY_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Cryptographic API >> Hardware crypto devices +CONFIG_CRYPTO_HW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DEV_PADLOCK policy<{'amd64': 'y'}> +CONFIG_CRYPTO_DEV_PADLOCK_AES policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_PADLOCK_SHA policy<{'amd64': 'm'}> +CONFIG_ZCRYPT policy<{'s390x': 'm'}> +CONFIG_ZCRYPT_MULTIDEVNODES policy<{'s390x': 'y'}> +CONFIG_PKEY policy<{'s390x': 'm'}> +CONFIG_CRYPTO_PAES_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA1_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA256_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA512_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA3_256_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_SHA3_512_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_DES_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_AES_S390 policy<{'s390x': 'm'}> +CONFIG_S390_PRNG policy<{'s390x': 'm'}> +CONFIG_CRYPTO_GHASH_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_CRC32_S390 policy<{'s390x': 'm'}> +CONFIG_CRYPTO_DEV_HIFN_795X policy<{'armhf-generic': 'm'}> +CONFIG_CRYPTO_DEV_HIFN_795X_RNG policy<{'armhf-generic': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG policy<{'arm64': 'n', 'armhf-generic': 'n'}> +CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SAHARA policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_CRYPTO_DEV_EXYNOS_RNG policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_S5P policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_NX policy<{'ppc64el': 'y'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_ATMEL_ECC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRYPTO_DEV_ATMEL_SHA204A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRYPTO_DEV_CCP policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_CRYPTO_DEV_CCP_DD policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SP_CCP policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_CRYPTO_DEV_CCP_CRYPTO policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SP_PSP policy<{'amd64': 'y'}> +CONFIG_CRYPTO_DEV_CCP_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_CRYPTO_DEV_MXS_DCP policy<{'arm64': 'n', 'armhf-generic': 'n'}> +CONFIG_CRYPTO_DEV_QAT_DH895xCC policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_QAT_C3XXX policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_QAT_C62X policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_QAT_C3XXXVF policy<{'amd64': 'm'}> +CONFIG_CRYPTO_DEV_QAT_C62XVF policy<{'amd64': 'm'}> +CONFIG_CAVIUM_CPT policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_NITROX_CNN55XX policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRYPTO_DEV_MARVELL_CESA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OCTEONTX_CPT policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_CAVIUM_ZIP policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_QCE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_DEV_QCE_SW_MAX_LEN policy<{'arm64': '512', 'armhf': '512'}> +CONFIG_CRYPTO_DEV_QCOM_RNG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_DEV_VMX policy<{'ppc64el': 'y'}> +CONFIG_CRYPTO_DEV_VMX_ENCRYPT policy<{'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CRYPTO_DEV_ZYNQMP_AES policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_MEDIATEK policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_CHELSIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_IPSEC_INLINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_TLS_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CRYPTO_DEV_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_DEV_BCM_SPU policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SAFEXCEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRYPTO_DEV_ARTPEC6 policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_CCREE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CRYPTO_DEV_HISI_SEC policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_HISI_SEC2 policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_HISI_ZIP policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_HISI_HPRE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_AMLOGIC_GXL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_CRYPTO_DEV_HISI_ZIP mark +CONFIG_ZCRYPT_MULTIDEVNODES mark note + +# Menu: Cryptographic API >> Hardware crypto devices >> Algorithms enabled for QCE acceleration +CONFIG_CRYPTO_DEV_QCE_ENABLE_ALL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CRYPTO_DEV_QCE_ENABLE_SKCIPHER policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_CRYPTO_DEV_QCE_ENABLE_SHA policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Cryptographic API >> Hardware crypto devices >> Freescale CAAM Job Ring driver backend +CONFIG_CRYPTO_DEV_FSL_CAAM_JR policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE policy<{'arm64': '9', 'armhf-generic': '9'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD policy<{'arm64': '255', 'armhf-generic': '255'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD policy<{'arm64': '2048', 'armhf-generic': '2048'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI policy<{'arm64': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API policy<{'arm64': 'y', 'armhf-generic': 'y'}> + +# Menu: Cryptographic API >> Hardware crypto devices >> Support for Allwinner cryptographic offloader +CONFIG_CRYPTO_DEV_ALLWINNER policy<{'arm64': 'y'}> +CONFIG_CRYPTO_DEV_SUN4I_SS policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG policy<{'arm64': 'y'}> +CONFIG_CRYPTO_DEV_SUN8I_CE policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG policy<{'arm64': 'n'}> +CONFIG_CRYPTO_DEV_SUN8I_SS policy<{'arm64': 'm'}> +CONFIG_CRYPTO_DEV_SUN8I_SS_DEBUG policy<{'arm64': 'n'}> + +# Menu: Cryptographic API >> Hardware crypto devices >> Support for OMAP crypto HW accelerators +CONFIG_CRYPTO_DEV_OMAP policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OMAP_SHAM policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OMAP_AES policy<{'armhf': 'm'}> +CONFIG_CRYPTO_DEV_OMAP_DES policy<{'armhf': 'm'}> + +# Menu: Cryptographic API >> NIST SP800-90A DRBG +CONFIG_CRYPTO_DRBG_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DRBG_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRYPTO_DRBG_CTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers +CONFIG_RANDOM_TRUST_CPU policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RANDOM_TRUST_BOOTLOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEDIA_CEC_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CEC_PIN_ERROR_INJ policy<{'amd64-lowlatency': 'n', 'arm64': 'n'}> +CONFIG_PANEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARLCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TEE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_UNISYS_VISORBUS policy<{'amd64': 'm'}> +CONFIG_MOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) +CONFIG_IDE policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Accessibility support +CONFIG_ACCESSIBILITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_ACCESSIBILITY flag + +# Menu: Device Drivers >> Adaptive Voltage Scaling class support +CONFIG_POWER_AVS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_QCOM_CPR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ROCKCHIP_IODOMAIN policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Android +CONFIG_ANDROID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Device Drivers >> Android >> Android Binder IPC Driver +CONFIG_ANDROID_BINDER_IPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ANDROID_BINDERFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ANDROID_BINDER_DEVICES policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""'}> +CONFIG_ANDROID_BINDER_IPC_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Auxiliary Display support +CONFIG_ARM_CHARLCD policy<{'armhf': 'y'}> +CONFIG_AUXDISPLAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HD44780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IMG_ASCII_LCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HT16K33 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PANEL_CHANGE_MESSAGE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Auxiliary Display support >> Backlight initial state +CONFIG_CHARLCD_BL_OFF policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CHARLCD_BL_ON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CHARLCD_BL_FLASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Auxiliary Display support >> KS0108 LCD Controller +CONFIG_KS0108 policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KS0108_PORT policy<{'amd64': '0x378', 'armhf': '0x378', 'ppc64el': '0x378'}> +CONFIG_KS0108_DELAY policy<{'amd64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_CFAG12864B policy<{'amd64': 'm'}> +CONFIG_CFAG12864B_RATE policy<{'amd64': '20'}> + +# Menu: Device Drivers >> Auxiliary Display support >> Parallel port LCD/Keypad Panel support +CONFIG_PARPORT_PANEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PANEL_PARPORT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_PANEL_PROFILE policy<{'amd64': '5', 'arm64': '5', 'armhf': '5', 'ppc64el': '5'}> + +# Menu: Device Drivers >> Auxiliary Display support >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) + +# Menu: Device Drivers >> Auxiliary Display support >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) >> LCD communication mode (0=parallel 8 bits, 1=serial) + +# Menu: Device Drivers >> Block devices +CONFIG_BLK_DEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_NULL_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_FD policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_BLK_DEV_PCIESSD_MTIP32XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ZRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZRAM_WRITEBACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZRAM_MEMORY_TRACKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_UMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_LOOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_LOOP_MIN_COUNT policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8', 's390x': '8'}> +CONFIG_BLK_DEV_CRYPTOLOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_DRBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DRBD_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BLK_DEV_NBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_SKD policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_SX8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_RAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_RAM_COUNT policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'ppc64el': '16', 's390x': '16'}> +CONFIG_BLK_DEV_RAM_SIZE policy<{'amd64': '65536', 'arm64': '65536', 'armhf': '65536', 'ppc64el': '65536', 's390x': '65536'}> +CONFIG_CDROM_PKTCDVD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CDROM_PKTCDVD_BUFFERS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_CDROM_PKTCDVD_WCACHE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATA_OVER_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_XPRAM policy<{'s390x': 'n'}> +CONFIG_DCSSBLK policy<{'s390x': 'm'}> +CONFIG_SCM_BLOCK policy<{'s390x': 'm'}> +CONFIG_XEN_BLKDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_BLKDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_VIRTIO_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_RBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_RSXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BLK_DEV_RNBD_CLIENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_RNBD_SERVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_BLK_DEV_UMEM note +CONFIG_CDROM_PKTCDVD_WCACHE mark +CONFIG_XEN_BLKDEV_FRONTEND note +CONFIG_VIRTIO_BLK note +CONFIG_BLK_DEV_RAM note +CONFIG_BLK_DEV_RAM_SIZE mark note flag + +# Menu: Device Drivers >> Block devices >> Parallel port IDE device support +CONFIG_PARIDE policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PD policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PCD policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PF policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PT policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_PG policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ATEN policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_BPCK policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_BPCK6 policy<{'armhf': 'm'}> +CONFIG_PARIDE_COMM policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_DSTR policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FIT2 policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FIT3 policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_EPAT policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_EPATC8 policy<{'amd64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PARIDE_EPIA policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FRIQ policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_FRPW policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_KBIC policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_KTTI policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ON20 policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARIDE_ON26 policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Block devices >> Support for DASD devices +CONFIG_DASD policy<{'s390x': 'm'}> +CONFIG_DASD_PROFILE policy<{'s390x': 'y'}> +CONFIG_DASD_ECKD policy<{'s390x': 'm'}> +CONFIG_DASD_FBA policy<{'s390x': 'm'}> +CONFIG_DASD_DIAG policy<{'s390x': 'm'}> +CONFIG_DASD_EER policy<{'s390x': 'y'}> + +# Menu: Device Drivers >> Board level reset or power off +CONFIG_POWER_RESET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_POWER_RESET_AS3722 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_AXXIA policy<{'armhf-generic-lpae': 'y'}> +CONFIG_POWER_RESET_BRCMKONA policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_BRCMSTB policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_POWER_RESET_GPIO policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_GPIO_RESTART policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_HISI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_MSM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_QCOM_PON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_POWER_RESET_LTC2952 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_MT6323 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_QNAP policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_RESTART policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_POWER_RESET_VERSATILE policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VEXPRESS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_XGENE policy<{'arm64': 'n'}> +CONFIG_POWER_RESET_SYSCON policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_SYSCON_POWEROFF policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_RMOBILE policy<{'armhf': 'm'}> +CONFIG_SYSCON_REBOOT_MODE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_POWER_RESET_SC27XX policy<{'arm64': 'm'}> +CONFIG_NVMEM_REBOOT_MODE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Broadcom specific AMBA +CONFIG_BCMA_HOST_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BCMA_HOST_SOC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_SFLASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_GMAC_CMN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DRIVER_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BCMA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Bus devices +CONFIG_BRCMSTB_GISB_ARB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MOXTET policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HISILICON_LPC policy<{'arm64': 'y'}> +CONFIG_IMX_WEIM policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_OMAP_INTERCONNECT policy<{'armhf': 'y'}> +CONFIG_OMAP_OCP2SCP policy<{'armhf': 'm'}> +CONFIG_QCOM_EBI2 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SIMPLE_PM_BUS policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SUN50I_DE2_BUS policy<{'arm64': 'y'}> +CONFIG_SUNXI_RSB policy<{'arm64': 'm'}> +CONFIG_TEGRA_GMI policy<{'armhf-generic': 'm'}> +CONFIG_TI_SYSC policy<{'armhf': 'y'}> +CONFIG_UNIPHIER_SYSTEM_BUS policy<{'armhf': 'y'}> +CONFIG_VEXPRESS_CONFIG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_FSL_MC_BUS policy<{'arm64': 'y', 'armhf-generic': 'n'}> +CONFIG_MHI_BUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Character devices +CONFIG_DEVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEVKMEM policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TTY_PRINTK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TTY_PRINTK_LEVEL policy<{'amd64': '6', 'arm64': '6', 'armhf': '6', 'ppc64el': '6'}> +CONFIG_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LP_CONSOLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PPDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIRTIO_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IBM_BSR policy<{'ppc64el': 'm'}> +CONFIG_POWERNV_OP_PANEL policy<{'ppc64el': 'm'}> +CONFIG_ASPEED_KCS_IPMI_BMC policy<{'armhf': 'm'}> +CONFIG_NPCM7XX_KCS_IPMI_BMC policy<{'armhf': 'm'}> +CONFIG_ASPEED_BT_IPMI_BMC policy<{'armhf': 'm'}> +CONFIG_IPMB_DEVICE_INTERFACE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NVRAM policy<{'amd64': 'm', 'ppc64el': 'y'}> +CONFIG_APPLICOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MWAVE policy<{'amd64': 'm'}> +CONFIG_RAW_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MAX_RAW_DEVS policy<{'amd64': '256', 'arm64': '256', 'armhf': '256', 'ppc64el': '256'}> +CONFIG_HPET policy<{'amd64': 'y'}> +CONFIG_HPET_MMAP policy<{'amd64': 'y'}> +CONFIG_HPET_MMAP_DEFAULT policy<{'amd64': 'y'}> +CONFIG_HANGCHECK_TIMER policy<{'amd64': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_UV_MMTIMER policy<{'amd64': 'm'}> +CONFIG_TELCLOCK policy<{'amd64': 'm'}> +CONFIG_DEVPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TN3270 policy<{'s390x': 'y'}> +CONFIG_TN3270_TTY policy<{'s390x': 'y'}> +CONFIG_TN3270_FS policy<{'s390x': 'm'}> +CONFIG_TN3270_CONSOLE policy<{'s390x': 'y'}> +CONFIG_TN3215 policy<{'s390x': 'y'}> +CONFIG_TN3215_CONSOLE policy<{'s390x': 'y'}> +CONFIG_SCLP_TTY policy<{'s390x': 'y'}> +CONFIG_SCLP_CONSOLE policy<{'s390x': 'y'}> +CONFIG_SCLP_VT220_TTY policy<{'s390x': 'y'}> +CONFIG_SCLP_VT220_CONSOLE policy<{'s390x': 'y'}> +CONFIG_HMC_DRV policy<{'s390x': 'm'}> +CONFIG_SCLP_OFB policy<{'s390x': 'y'}> +CONFIG_S390_TAPE policy<{'s390x': 'm'}> +CONFIG_S390_TAPE_34XX policy<{'s390x': 'm'}> +CONFIG_S390_TAPE_3590 policy<{'s390x': 'm'}> +CONFIG_VMLOGRDR policy<{'s390x': 'm'}> +CONFIG_VMCP policy<{'s390x': 'y'}> +CONFIG_VMCP_CMA_SIZE policy<{'s390x': '4'}> +CONFIG_MONREADER policy<{'s390x': 'm'}> +CONFIG_MONWRITER policy<{'s390x': 'm'}> +CONFIG_S390_VMUR policy<{'s390x': 'm'}> +CONFIG_XILLYBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_XILLYBUS_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XILLYBUS_OF policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_DEVKMEM mark note +CONFIG_NVRAM mark note +CONFIG_SCLP_OFB mark note + +# Menu: Device Drivers >> Character devices >> Enable TTY +CONFIG_HVC_CONSOLE policy<{'ppc64el': 'y'}> +CONFIG_HVC_OLD_HVSI policy<{'ppc64el': 'y'}> +CONFIG_HVC_OPAL policy<{'ppc64el': 'y'}> +CONFIG_HVC_RTAS policy<{'ppc64el': 'y'}> +CONFIG_HVC_IUCV policy<{'s390x': 'y'}> +CONFIG_HVC_XEN policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_HVC_XEN_FRONTEND policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_HVC_UDBG policy<{'ppc64el': 'n'}> +CONFIG_HVC_DCC policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_HVCS policy<{'ppc64el': 'm'}> +CONFIG_TTY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CONSOLE_TRANSLATIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VT_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VT_HW_CONSOLE_BINDING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UNIX98_PTYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LEGACY_PTYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LEGACY_PTY_COUNT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_NOZOMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_N_GSM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TRACE_ROUTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TRACE_SINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PPC_EPAPR_HV_BYTECHAN policy<{'ppc64el': 'n'}> +CONFIG_NULL_TTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LDISC_AUTOLOAD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_HVC_UDBG mark note +CONFIG_N_GSM note + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Non-standard serial port support +CONFIG_SERIAL_NONSTANDARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ROCKETPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CYCLADES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CYZ_INTR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MOXA_INTELLIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOXA_SMARTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINK policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINKMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SYNCLINK_GT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ISI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_N_HDLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers +CONFIG_SERIAL_AMBA_PL010 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIAL_AMBA_PL011 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_AMBA_PL011_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_KGDB_NMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_MESON policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_MESON_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_SERIAL_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SERIAL_TEGRA_TCU policy<{'armhf-generic': 'm'}> +CONFIG_SERIAL_MAX3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_MAX310X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_IMX policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_SERIAL_IMX_CONSOLE policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_SERIAL_UARTLITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SERIAL_UARTLITE_NR_UARTS policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1', 's390x': '1'}> +CONFIG_SERIAL_ICOM policy<{'ppc64el': 'm'}> +CONFIG_SERIAL_JSM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_MSM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_MSM_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_QCOM_GENI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIAL_QCOM_GENI_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_OMAP policy<{'armhf': 'y'}> +CONFIG_SERIAL_OMAP_CONSOLE policy<{'armhf': 'y'}> +CONFIG_SERIAL_SIFIVE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_LANTIQ policy<{'amd64': 'm'}> +CONFIG_SERIAL_QE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_SCCNXP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SERIAL_SCCNXP_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_SC16IS7XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_SC16IS7XX_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_SC16IS7XX_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_BCM63XX policy<{'armhf': 'm'}> +CONFIG_SERIAL_ALTERA_JTAGUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_IFX6X60 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_XILINX_PS_UART policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_ARC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_ARC_NR_PORTS policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1'}> +CONFIG_SERIAL_RP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_RP2_NR_UARTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32'}> +CONFIG_SERIAL_FSL_LPUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_FSL_LINFLEXUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_CONEXANT_DIGICOLOR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_ST_ASC policy<{'armhf': 'm'}> +CONFIG_SERIAL_MEN_Z135 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_SPRD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_MVEBU_UART policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_MVEBU_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_OWL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_OWL_CONSOLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_RDA policy<{'armhf': 'y'}> +CONFIG_SERIAL_RDA_CONSOLE policy<{'armhf': 'y'}> +CONFIG_SERIAL_MILBEAUT_USIO policy<{'armhf': 'm'}> +CONFIG_SERIAL_MILBEAUT_USIO_PORTS policy<{'armhf': '4'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> 8250/16550 and compatible serial support +CONFIG_SERIAL_8250 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_8250_PNP policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_SERIAL_8250_16550A_VARIANTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_FINTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_8250_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_EXAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_8250_CS policy<{'amd64': 'm'}> +CONFIG_SERIAL_8250_MEN_MCB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_8250_NR_UARTS policy<{'amd64': '48', 'arm64': '48', 'armhf': '48', 'ppc64el': '48'}> +CONFIG_SERIAL_8250_RUNTIME_UARTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32'}> +CONFIG_SERIAL_8250_ASPEED_VUART policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_8250_DW policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_8250_EM policy<{'armhf': 'n'}> +CONFIG_SERIAL_8250_RT288X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_OMAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIAL_8250_MT6577 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SERIAL_8250_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_SERIAL_8250_LPSS policy<{'amd64': 'm'}> +CONFIG_SERIAL_8250_MID policy<{'amd64': 'm'}> +CONFIG_SERIAL_8250_TEGRA policy<{'armhf-generic': 'y'}> +CONFIG_SERIAL_OF_PLATFORM policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options +CONFIG_SERIAL_8250_EXTENDED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_SHARE_IRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_DETECT_IRQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SERIAL_8250_RSA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIAL_8250_BCM2835AUX policy<{'arm64': 'n'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options >> Support more than 4 legacy serial ports +CONFIG_SERIAL_8250_MANY_PORTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> AT91 on-chip serial port support + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> Altera UART support +CONFIG_SERIAL_ALTERA_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SERIAL_ALTERA_UART_MAXPORTS policy<{'amd64': '4', 'arm64': '4', 'armhf': '4', 'ppc64el': '4'}> +CONFIG_SERIAL_ALTERA_UART_BAUDRATE policy<{'amd64': '115200', 'arm64': '115200', 'armhf': '115200', 'ppc64el': '115200'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> SuperH SCI(F) serial port support +CONFIG_SERIAL_SH_SCI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIAL_SH_SCI_NR_UARTS policy<{'arm64': '2', 'armhf': '2'}> +CONFIG_SERIAL_SH_SCI_DMA policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Serial drivers >> TMPTX39XX/49XX SIO support + +# Menu: Device Drivers >> Character devices >> Hardware Random Number Generator Core support +CONFIG_HW_RANDOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HW_RANDOM_TIMERIOMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HW_RANDOM_INTEL policy<{'amd64': 'm'}> +CONFIG_HW_RANDOM_AMD policy<{'amd64': 'm'}> +CONFIG_HW_RANDOM_BCM2835 policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_IPROC_RNG200 policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_VIA policy<{'amd64': 'm'}> +CONFIG_HW_RANDOM_OMAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_OMAP3_ROM policy<{'armhf-generic': 'm'}> +CONFIG_HW_RANDOM_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HW_RANDOM_PSERIES policy<{'ppc64el': 'm'}> +CONFIG_HW_RANDOM_POWERNV policy<{'ppc64el': 'm'}> +CONFIG_HW_RANDOM_HISI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_HISI_V2 policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_XGENE policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_CAVIUM policy<{'arm64': 'm'}> +CONFIG_HW_RANDOM_MTK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_S390 policy<{'s390x': 'm'}> +CONFIG_HW_RANDOM_EXYNOS policy<{'armhf': 'm'}> +CONFIG_HW_RANDOM_OPTEE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HW_RANDOM_NPCM policy<{'armhf': 'm'}> +CONFIG_HW_RANDOM_CCTRNG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Character devices >> IPMI top-level message handler +CONFIG_IPMI_HANDLER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IPMI_PANIC_EVENT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IPMI_DEVICE_INTERFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_SI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_SSIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_POWERNV policy<{'ppc64el': 'm'}> +CONFIG_IPMI_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPMI_POWEROFF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Character devices >> PCMCIA character devices +CONFIG_SYNCLINK_CS policy<{'amd64': 'm'}> +CONFIG_CARDMAN_4000 policy<{'amd64': 'm'}> +CONFIG_CARDMAN_4040 policy<{'amd64': 'm'}> +CONFIG_SCR24X policy<{'amd64': 'm'}> +CONFIG_IPWIRELESS policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Character devices >> Serial device bus +CONFIG_SERIAL_DEV_BUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SERIAL_DEV_CTRL_TTYPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SERIAL_DEV_BUS note +CONFIG_SERIAL_DEV_CTRL_TTYPORT note + +# Menu: Device Drivers >> Character devices >> TPM Hardware Support +CONFIG_TCG_TPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HW_RANDOM_TPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCG_TIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TCG_TIS_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_TIS_SPI_CR50 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TCG_TIS_I2C_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TCG_TIS_I2C_INFINEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TCG_TIS_I2C_NUVOTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TCG_NSC policy<{'amd64': 'm'}> +CONFIG_TCG_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_TCG_INFINEON policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_TCG_IBMVTPM policy<{'ppc64el': 'y'}> +CONFIG_TCG_XEN policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_TCG_CRB policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_TCG_VTPM_PROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCG_FTPM_TEE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TCG_TIS_ST33ZP24_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TCG_TIS_ST33ZP24_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_TCG_TPM note +CONFIG_TCG_TIS_I2C_ATMEL note +CONFIG_TCG_TIS_I2C_INFINEON note +CONFIG_TCG_TIS_I2C_NUVOTON note + +# Menu: Device Drivers >> Clock Source drivers +CONFIG_DW_APB_TIMER policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_TIMER policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARMADA_370_XP_TIMER policy<{'armhf': 'y'}> +CONFIG_MESON6_TIMER policy<{'armhf': 'y'}> +CONFIG_ORION_TIMER policy<{'armhf': 'y'}> +CONFIG_OWL_TIMER policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RDA_TIMER policy<{'armhf': 'y'}> +CONFIG_TEGRA_TIMER policy<{'armhf-generic': 'y'}> +CONFIG_NPCM7XX_TIMER policy<{'armhf': 'y'}> +CONFIG_CLKSRC_TI_32K policy<{'armhf': 'y'}> +CONFIG_ARM_ARCH_TIMER_EVTSTREAM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_FSL_ERRATUM_A008585 policy<{'arm64': 'y'}> +CONFIG_HISILICON_ERRATUM_161010101 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_858921 policy<{'arm64': 'y'}> +CONFIG_SUN50I_ERRATUM_UNKNOWN1 policy<{'arm64': 'y'}> +CONFIG_ARM_GLOBAL_TIMER policy<{'armhf': 'y'}> +CONFIG_ARM_TIMER_SP804 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLKSRC_EXYNOS_MCT policy<{'armhf': 'y'}> +CONFIG_MTK_TIMER policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SPRD_TIMER policy<{'arm64': 'y'}> +CONFIG_SH_TIMER_CMT policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SH_TIMER_MTU2 policy<{'armhf': 'y'}> +CONFIG_RENESAS_OSTM policy<{'armhf': 'y'}> +CONFIG_SH_TIMER_TMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_EM_TIMER_STI policy<{'armhf': 'y'}> +CONFIG_CLKSRC_QCOM policy<{'armhf': 'y'}> +CONFIG_CLKSRC_VERSATILE policy<{'armhf': 'y'}> +CONFIG_CLKSRC_IMX_GPT policy<{'armhf-generic': 'y'}> +CONFIG_CLKSRC_IMX_TPM policy<{'armhf-generic': 'y'}> +CONFIG_TIMER_IMX_SYS_CTR policy<{'arm64': 'y'}> +CONFIG_MILBEAUT_TIMER policy<{'armhf': 'y'}> +CONFIG_MICROCHIP_PIT64B policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_ARM64_ERRATUM_858921 mark note + +# Menu: Device Drivers >> Common Clock Framework +CONFIG_COMMON_CLK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_COMMON_CLK_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CLK_HSDK policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_COMMON_CLK_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_MAX9485 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_HI655X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_SCMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_SCPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_SI5341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_SI5351 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_SI514 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_SI544 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_SI570 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_BM1880 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_CDCE706 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_CDCE925 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_CS2000_CP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_FSL_SAI policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_ASPEED policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_S2MPS11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CLK_TWL6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CLK_QORIQ policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_LS1028A_PLLDIG policy<{'arm64': 'm'}> +CONFIG_COMMON_CLK_XGENE policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_LOCHNAGAR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_VC5 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_BD718XX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_FIXED_MMIO policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CLK_BCM2835 policy<{'arm64': 'y'}> +CONFIG_CLK_BCM_NS2 policy<{'arm64': 'y'}> +CONFIG_CLK_BCM_SR policy<{'arm64': 'y'}> +CONFIG_CLK_RASPBERRYPI policy<{'arm64': 'm'}> +CONFIG_COMMON_CLK_HI3516CV300 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_HI3519 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_HI3660 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_HI3670 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_HI3798CV200 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_HI6220 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_HISI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_STUB_CLK_HI6220 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_STUB_CLK_HI3660 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_IMX8MM policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CLK_IMX8MN policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CLK_IMX8MP policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CLK_IMX8MQ policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_CLK_IMX8QXP policy<{'arm64': 'y'}> +CONFIG_TI_SCI_CLK policy<{'arm64': 'm'}> +CONFIG_TI_SCI_CLK_PROBE_FROM_FW policy<{'arm64': 'n'}> +CONFIG_TI_SYSCON_CLK policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_AXG_AUDIO policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_CLK_SAMSUNG policy<{'armhf': 'y'}> +CONFIG_EXYNOS_AUDSS_CLK_CON policy<{'armhf': 'm'}> +CONFIG_SPRD_COMMON_CLK policy<{'arm64': 'm'}> +CONFIG_SPRD_SC9860_CLK policy<{'arm64': 'm'}> +CONFIG_SPRD_SC9863A_CLK policy<{'arm64': 'm'}> +CONFIG_COMMON_CLK_TI_ADPLL policy<{'armhf': 'y'}> +CONFIG_CLK_UNIPHIER policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_ZYNQMP policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for ARM Reference designs +CONFIG_ICST policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_SP810 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_VEXPRESS_OSC policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for Actions Semi SoCs +CONFIG_CLK_ACTIONS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_OWL_S500 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_OWL_S700 policy<{'arm64': 'y'}> +CONFIG_CLK_OWL_S900 policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC +CONFIG_COMMON_CLK_MT7629 policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_MT7629_ETHSYS policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_MT7629_HIFSYS policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_MT8135 policy<{'armhf': 'y'}> +CONFIG_COMMON_CLK_MT8173 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT8173_MMSYS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT8516 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT8516_AUDSYS policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT2701 +CONFIG_COMMON_CLK_MT2701 policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT2712 +CONFIG_COMMON_CLK_MT2712 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_BDPSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_IMGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_JPGDECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_MFGCFG policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_MMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_VDECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT2712_VENCSYS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT6765 +CONFIG_COMMON_CLK_MT6765 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_AUDIOSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_CAMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_GCESYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_IMGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_VCODECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MFGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI0ASYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI0BSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI1ASYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI1BSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI2ASYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6765_MIPI2BSYS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT6779 +CONFIG_COMMON_CLK_MT6779 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_MMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_IMGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_IPESYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_CAMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_VDECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_VENCSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_MFGCFG policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6779_AUDSYS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT6797 +CONFIG_COMMON_CLK_MT6797 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6797_MMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6797_IMGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6797_VDECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT6797_VENCSYS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT7622 +CONFIG_COMMON_CLK_MT7622 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT7622_ETHSYS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT7622_HIFSYS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_COMMON_CLK_MT7622_AUDSYS policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock driver for MediaTek SoC >> Clock driver for MediaTek MT8183 +CONFIG_COMMON_CLK_MT8183 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_AUDIOSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_CAMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_IMGSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_IPU_CORE0 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_IPU_CORE1 policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_IPU_ADL policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_IPU_CONN policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_MFGCFG policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_MMSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_VDECSYS policy<{'arm64': 'y'}> +CONFIG_COMMON_CLK_MT8183_VENCSYS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Clock support for Allwinner SoCs +CONFIG_SUNXI_CCU policy<{'arm64': 'y'}> +CONFIG_SUN50I_A64_CCU policy<{'arm64': 'y'}> +CONFIG_SUN50I_H6_CCU policy<{'arm64': 'y'}> +CONFIG_SUN50I_H6_R_CCU policy<{'arm64': 'y'}> +CONFIG_SUN8I_A83T_CCU policy<{'arm64': 'y'}> +CONFIG_SUN8I_H3_CCU policy<{'arm64': 'y'}> +CONFIG_SUN8I_DE2_CCU policy<{'arm64': 'y'}> +CONFIG_SUN8I_R_CCU policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Ingenic SoCs drivers + +# Menu: Device Drivers >> Common Clock Framework >> Legacy clock support for Allwinner SoCs +CONFIG_CLK_SUNXI policy<{'arm64': 'y'}> +CONFIG_CLK_SUNXI_CLOCKS policy<{'arm64': 'y'}> +CONFIG_CLK_SUNXI_PRCM_SUN6I policy<{'arm64': 'y'}> +CONFIG_CLK_SUNXI_PRCM_SUN8I policy<{'arm64': 'y'}> +CONFIG_CLK_SUNXI_PRCM_SUN9I policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> Renesas SoC clock support +CONFIG_CLK_RENESAS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_EMEV2 policy<{'armhf': 'y'}> +CONFIG_CLK_RZA1 policy<{'armhf': 'y'}> +CONFIG_CLK_R7S9210 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7740 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7742 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7743 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7745 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A77470 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A774A1 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A774B1 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A774C0 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A7778 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7779 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7790 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7791 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7792 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7794 policy<{'armhf': 'y'}> +CONFIG_CLK_R8A7795 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77960 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77961 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77965 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77970 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77980 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77990 policy<{'arm64': 'y'}> +CONFIG_CLK_R8A77995 policy<{'arm64': 'y'}> +CONFIG_CLK_R9A06G032 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_SH73A0 policy<{'armhf': 'y'}> +CONFIG_CLK_RCAR_GEN2_CPG policy<{'armhf': 'y'}> +CONFIG_CLK_RCAR_GEN3_CPG policy<{'arm64': 'y'}> +CONFIG_CLK_RCAR_USB2_CLOCK_SEL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_RENESAS_CPG_MSSR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CLK_RENESAS_CPG_MSTP policy<{'armhf': 'y'}> +CONFIG_CLK_RENESAS_DIV6 policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework >> SiFive SoC driver support + +# Menu: Device Drivers >> Common Clock Framework >> Support for Qualcomm's clock controllers +CONFIG_COMMON_CLK_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_A53PLL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_CLK_APCS_MSM8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_CLK_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_CLK_SMD_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_CLK_RPMH policy<{'arm64': 'm'}> +CONFIG_APQ_GCC_8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_APQ_MMCC_8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_GCC_4019 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_GCC_6018 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_GCC_806X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_LCC_806X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IPQ_GCC_8074 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8939 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_LCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MDM_GCC_9615 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MDM_LCC_9615 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8974 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8974 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8994 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8996 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8996 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GCC_8998 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_GPUCC_8998 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MSM_MMCC_8998 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCS_GCC_404 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC_DISPCC_7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC_GCC_7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC_GPUCC_7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC_MSS_7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC_VIDEOCC_7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_CAMCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_GCC_660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCS_TURING_404 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCS_Q6SSTOP_404 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_GCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_GPUCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_VIDEOCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_DISPCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SDM_LPASSCC_845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SM_GCC_8150 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SM_GCC_8250 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPMI_PMIC_CLKDIV policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_HFPLL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_KPSS_XCC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_KRAITCC policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Connector - unified userspace <-> kernelspace linker +CONFIG_CONNECTOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> Counter support +CONFIG_COUNTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_104_QUAD_8 policy<{'amd64': 'm'}> +CONFIG_TI_EQEP policy<{'armhf-generic': 'm'}> +CONFIG_FTM_QUADDEC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> DAX: direct access to differentiated memory +CONFIG_DAX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEV_DAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DEV_DAX_PMEM policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_DEV_DAX_HMEM policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_DEV_DAX_KMEM policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DEV_DAX_PMEM_COMPAT policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> DMA Engine support +CONFIG_DMADEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DMADEVICES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ALTERA_MSGDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AMBA_PL08X policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_AXI_DMAC policy<{'arm64': 'm'}> +CONFIG_BCM_SBA_RAID policy<{'arm64': 'm'}> +CONFIG_DMA_BCM2835 policy<{'arm64': 'y'}> +CONFIG_DMA_SUN6I policy<{'arm64': 'm'}> +CONFIG_DW_AXI_DMAC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_EDMA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_QDMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HISI_DMA policy<{'arm64': 'm'}> +CONFIG_IMX_DMA policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX_SDMA policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_INTEL_IDMA64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INTEL_IDXD policy<{'amd64': 'm'}> +CONFIG_INTEL_IOATDMA policy<{'amd64': 'm'}> +CONFIG_INTEL_MIC_X100_DMA policy<{'amd64': 'm'}> +CONFIG_K3_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MILBEAUT_HDMAC policy<{'armhf': 'm'}> +CONFIG_MILBEAUT_XDMAC policy<{'armhf': 'm'}> +CONFIG_MV_XOR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MV_XOR_V2 policy<{'arm64': 'y'}> +CONFIG_MXS_DMA policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_MX3_IPU policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_MX3_IPU_IRQS policy<{'arm64': '4', 'armhf-generic': '4'}> +CONFIG_NBPFAXI_DMA policy<{'armhf': 'm'}> +CONFIG_OWL_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PL330_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PLX_DMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPRD_DMA policy<{'arm64': 'm'}> +CONFIG_TEGRA20_APB_DMA policy<{'armhf-generic': 'y'}> +CONFIG_UNIPHIER_MDMAC policy<{'armhf': 'm'}> +CONFIG_UNIPHIER_XDMAC policy<{'armhf': 'm'}> +CONFIG_XGENE_DMA policy<{'arm64': 'm'}> +CONFIG_XILINX_DMA policy<{'arm64': 'm'}> +CONFIG_XILINX_ZYNQMP_DMA policy<{'arm64': 'm'}> +CONFIG_MTK_HSDMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTK_CQDMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTK_UART_APDMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_BAM_DMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_HIDMA_MGMT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_HIDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DW_DMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DW_DMAC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DW_EDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DW_EDMA_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SF_PDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RCAR_DMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RENESAS_USB_DMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TI_CPPI41 policy<{'armhf': 'm'}> +CONFIG_TI_EDMA policy<{'armhf': 'y'}> +CONFIG_DMA_OMAP policy<{'armhf': 'y'}> +CONFIG_TI_K3_UDMA policy<{'arm64': 'y'}> +CONFIG_TI_K3_UDMA_GLUE_LAYER policy<{'arm64': 'y'}> +CONFIG_FSL_DPAA2_QDMA policy<{'arm64': 'm'}> +CONFIG_ASYNC_TX_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DMATEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_DMATEST flag + +# Menu: Device Drivers >> DMABUF options +CONFIG_SYNC_FILE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SW_SYNC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UDMABUF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DMABUF_MOVE_NOTIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DMABUF_SELFTESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> DMABUF options >> DMA-BUF Userland Memory Heaps +CONFIG_DMABUF_HEAPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DMABUF_HEAPS_SYSTEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DMABUF_HEAPS_CMA policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Dallas's 1-wire support +CONFIG_W1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_W1_CON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Bus Masters +CONFIG_W1_MASTER_MATROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_DS2490 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_DS2482 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_MXC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_W1_MASTER_DS1WM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_MASTER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDQ_MASTER_OMAP policy<{'armhf': 'm'}> +CONFIG_W1_MASTER_SGI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Slaves +CONFIG_W1_SLAVE_THERM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_SMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2405 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2408 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2408_READBACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_W1_SLAVE_DS2413 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2406 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2423 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2805 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2430 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2431 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2433 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2433_CRC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_W1_SLAVE_DS2438 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS250X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS2781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS28E04 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_W1_SLAVE_DS28E17 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Device Tree and Open Firmware support +CONFIG_OF policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_OF_UNITTEST policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_OF_DYNAMIC policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_OF_OVERLAY policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_OF_UNITTEST flag + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting +CONFIG_EDAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_EDAC_LEGACY_SYSFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_EDAC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_EDAC_DECODE_MCE policy<{'amd64': 'm'}> +CONFIG_EDAC_GHES policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_EDAC_AMD64 policy<{'amd64': 'm'}> +CONFIG_EDAC_AMD64_ERROR_INJECTION policy<{'amd64': 'n'}> +CONFIG_EDAC_E752X policy<{'amd64': 'm'}> +CONFIG_EDAC_I82975X policy<{'amd64': 'm'}> +CONFIG_EDAC_I3000 policy<{'amd64': 'm'}> +CONFIG_EDAC_I3200 policy<{'amd64': 'm'}> +CONFIG_EDAC_IE31200 policy<{'amd64': 'm'}> +CONFIG_EDAC_X38 policy<{'amd64': 'm'}> +CONFIG_EDAC_I5400 policy<{'amd64': 'm'}> +CONFIG_EDAC_I7CORE policy<{'amd64': 'm'}> +CONFIG_EDAC_I5000 policy<{'amd64': 'm'}> +CONFIG_EDAC_I5100 policy<{'amd64': 'm'}> +CONFIG_EDAC_I7300 policy<{'amd64': 'm'}> +CONFIG_EDAC_SBRIDGE policy<{'amd64': 'm'}> +CONFIG_EDAC_SKX policy<{'amd64': 'm'}> +CONFIG_EDAC_I10NM policy<{'amd64': 'm'}> +CONFIG_EDAC_PND2 policy<{'amd64': 'm'}> +CONFIG_EDAC_LAYERSCAPE policy<{'arm64': 'm'}> +CONFIG_EDAC_CPC925 policy<{'ppc64el': 'm'}> +CONFIG_EDAC_HIGHBANK_MC policy<{'armhf': 'm'}> +CONFIG_EDAC_HIGHBANK_L2 policy<{'armhf': 'm'}> +CONFIG_EDAC_THUNDERX policy<{'arm64': 'm'}> +CONFIG_EDAC_ARMADA_XP policy<{'armhf': 'y'}> +CONFIG_EDAC_SYNOPSYS policy<{'arm64': 'm'}> +CONFIG_EDAC_XGENE policy<{'arm64': 'm'}> +CONFIG_EDAC_TI policy<{'armhf': 'm'}> +CONFIG_EDAC_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_EDAC_BLUEFIELD policy<{'arm64': 'm'}> +CONFIG_EDAC_DMC520 policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting >> Altera SOCFPGA ECC +CONFIG_EDAC_ALTERA policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_SDRAM policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_OCRAM policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_ETHERNET policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_NAND policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_USB policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_QSPI policy<{'arm64': 'y'}> +CONFIG_EDAC_ALTERA_SDMMC policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> EISA support +CONFIG_EISA policy<{'amd64': 'y'}> +CONFIG_EISA_VLB_PRIMING policy<{'amd64': 'y'}> +CONFIG_EISA_PCI_EISA policy<{'amd64': 'y'}> +CONFIG_EISA_VIRTUAL_ROOT policy<{'amd64': 'y'}> +CONFIG_EISA_NAMES policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> Eckelmann SIOX Support +CONFIG_SIOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SIOX_BUS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> External Connector Class (extcon) support +CONFIG_EXTCON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EXTCON_ADC_JACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_ARIZONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_AXP288 policy<{'amd64': 'm'}> +CONFIG_EXTCON_FSA9480 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_INTEL_INT3496 policy<{'amd64': 'm'}> +CONFIG_EXTCON_INTEL_CHT_WC policy<{'amd64': 'm'}> +CONFIG_EXTCON_INTEL_MRFLD policy<{'amd64': 'm'}> +CONFIG_EXTCON_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX3355 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX77843 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_PTN5150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_QCOM_SPMI_MISC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_EXTCON_RT8973A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_SM5502 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_USB_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXTCON_USBC_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> FPGA Configuration Framework +CONFIG_FPGA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ALTERA_PR_IP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ALTERA_PR_IP_CORE_PLAT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_MGR_ALTERA_PS_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_MGR_ALTERA_CVP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FPGA_MGR_STRATIX10_SOC policy<{'arm64': 'm'}> +CONFIG_FPGA_MGR_XILINX_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_MGR_ICE40_SPI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_MGR_MACHXO2_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_MGR_ZYNQMP_FPGA policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> FPGA Configuration Framework >> FPGA Bridge Framework +CONFIG_FPGA_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ALTERA_FREEZE_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XILINX_PR_DECOUPLER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_REGION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_OF_FPGA_REGION policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> FPGA Configuration Framework >> FPGA Device Feature List (DFL) support +CONFIG_FPGA_DFL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FPGA_DFL_AFU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_DFL_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> FPGA Configuration Framework >> FPGA Device Feature List (DFL) support >> FPGA DFL FME Driver +CONFIG_FPGA_DFL_FME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_DFL_FME_MGR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_DFL_FME_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FPGA_DFL_FME_REGION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> FSI support +CONFIG_FSI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_NEW_DEV_NODE policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FSI_MASTER_GPIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_MASTER_HUB policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_MASTER_AST_CF policy<{'armhf': 'm'}> +CONFIG_FSI_MASTER_ASPEED policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_SCOM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_SBEFIFO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSI_OCC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Fusion MPT device support +CONFIG_FUSION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FUSION_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128'}> +CONFIG_FUSION_CTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_LAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FUSION_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> GNSS receiver support +CONFIG_GNSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GNSS_MTK_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GNSS_SIRF_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GNSS_UBX_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> GPIO Support +CONFIG_GPIOLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GPIOLIB_FASTPATH_LIMIT policy<{'amd64': '512', 'arm64': '512', 'armhf': '512', 'ppc64el': '512', 's390x': '512'}> +CONFIG_DEBUG_GPIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_GPIO_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GPIO_AGGREGATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GPIO_MOCKUP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> GPIO Support >> I2C GPIO expanders +CONFIG_GPIO_ADP5588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_ADNP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_GW_PLD policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX7300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_MAX732X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_PCA953X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_PCA953X_IRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_PCF857X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_TPIC2810 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_TS4900 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> GPIO Support >> MFD GPIO expanders +CONFIG_GPIO_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ARIZONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_BD70528 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_BD71828 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_BD9571MWV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_CRYSTAL_COVE policy<{'amd64': 'y'}> +CONFIG_GPIO_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HTC_EGPIO policy<{'armhf': 'y'}> +CONFIG_GPIO_JANZ_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_LP873X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_LP87565 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MADERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX77620 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX77650 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MSIC policy<{'amd64': 'y'}> +CONFIG_GPIO_PALMAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_RC5T583 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_STMPE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TC3589X policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TPS65086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TPS65218 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TPS6586X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TPS65910 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_TPS65912 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TPS68470 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_GPIO_TQMX86 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_GPIO_TWL6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_GPIO_UCB1400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WHISKEY_COVE policy<{'amd64': 'm'}> +CONFIG_GPIO_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_GPIO_TWL4030 mark note + +# Menu: Device Drivers >> GPIO Support >> Memory mapped GPIO drivers +CONFIG_GPIO_74XX_MMIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ALTERA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_AMDPT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_GPIO_ASPEED policy<{'armhf': 'm'}> +CONFIG_GPIO_ASPEED_SGPIO policy<{'armhf': 'y'}> +CONFIG_GPIO_RASPBERRYPI_EXP policy<{'arm64': 'm'}> +CONFIG_GPIO_BCM_XGS_IPROC policy<{'arm64': 'm'}> +CONFIG_GPIO_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_GPIO_CADENCE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_DAVINCI policy<{'arm64': 'y'}> +CONFIG_GPIO_DWAPB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_EIC_SPRD policy<{'arm64': 'm'}> +CONFIG_GPIO_EM policy<{'armhf': 'n'}> +CONFIG_GPIO_EXAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_FTGPIO010 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_GENERIC_PLATFORM policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GPIO_GRGPIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_HLWD policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_ICH policy<{'amd64': 'm'}> +CONFIG_GPIO_LOGICVC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MB86S7X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_MENZ127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MPC8XXX policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_GPIO_OMAP policy<{'armhf': 'y'}> +CONFIG_GPIO_PL061 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_GPIO_PMIC_EIC_SPRD policy<{'arm64': 'm'}> +CONFIG_GPIO_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_GPIO_RDA policy<{'armhf': 'y'}> +CONFIG_GPIO_SAMA5D2_PIOBU policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_SIFIVE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GPIO_SIOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GPIO_SPRD policy<{'arm64': 'm'}> +CONFIG_GPIO_SYSCON policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_TEGRA policy<{'armhf-generic': 'y'}> +CONFIG_GPIO_TS4800 policy<{'armhf-generic': 'm'}> +CONFIG_GPIO_THUNDERX policy<{'arm64': 'm'}> +CONFIG_GPIO_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_GPIO_VX855 policy<{'amd64': 'm'}> +CONFIG_GPIO_WCD934X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_XGENE policy<{'arm64': 'y'}> +CONFIG_GPIO_XGENE_SB policy<{'arm64': 'm'}> +CONFIG_GPIO_XILINX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_GPIO_XLP policy<{'arm64': 'm'}> +CONFIG_GPIO_ZEVIO policy<{'armhf': 'y'}> +CONFIG_GPIO_ZYNQ policy<{'arm64': 'm'}> +CONFIG_GPIO_AMD_FCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_GPIO_EM note + +# Menu: Device Drivers >> GPIO Support >> PCI GPIO expanders +CONFIG_GPIO_AMD8111 policy<{'amd64': 'm'}> +CONFIG_GPIO_BT8XX policy<{'s390x': 'm'}> +CONFIG_GPIO_MLXBF policy<{'arm64': 'm'}> +CONFIG_GPIO_MLXBF2 policy<{'arm64': 'm'}> +CONFIG_GPIO_ML_IOH policy<{'amd64': 'm'}> +CONFIG_GPIO_PCI_IDIO_16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GPIO_PCIE_IDIO_24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GPIO_RDC321X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> GPIO Support >> Port-mapped I/O GPIO drivers +CONFIG_GPIO_104_DIO_48E policy<{'amd64': 'm'}> +CONFIG_GPIO_104_IDIO_16 policy<{'amd64': 'm'}> +CONFIG_GPIO_104_IDI_48 policy<{'amd64': 'm'}> +CONFIG_GPIO_F7188X policy<{'amd64': 'm'}> +CONFIG_GPIO_GPIO_MM policy<{'amd64': 'm'}> +CONFIG_GPIO_IT87 policy<{'amd64': 'm'}> +CONFIG_GPIO_SCH policy<{'amd64': 'm'}> +CONFIG_GPIO_SCH311X policy<{'amd64': 'm'}> +CONFIG_GPIO_WINBOND policy<{'amd64': 'm'}> +CONFIG_GPIO_WS16C48 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> GPIO Support >> SPI GPIO expanders +CONFIG_GPIO_74X164 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX3191X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MAX7301 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MC33880 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_PISOSR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_XRA1403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_MOXTET policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> GPIO Support >> USB GPIO expanders +CONFIG_GPIO_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic Driver Options +CONFIG_UEVENT_HELPER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UEVENT_HELPER_PATH policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_DEVTMPFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEVTMPFS_MOUNT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STANDALONE policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PREVENT_FIRMWARE_BUILD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ALLOW_DEV_COREDUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_DRIVER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_DEVRES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_TEST_DRIVER_REMOVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_ASYNC_DRIVER_PROBE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DMA_FENCE_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_DEVTMPFS note note +CONFIG_DEVTMPFS_MOUNT note note + +# Menu: Device Drivers >> Generic Driver Options >> Firmware loader + +# Menu: Device Drivers >> Generic Driver Options >> Firmware loader >> Firmware loading facility +CONFIG_FW_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXTRA_FIRMWARE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_FW_LOADER_USER_HELPER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FW_LOADER_USER_HELPER_FALLBACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FW_LOADER_COMPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FW_CACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_FW_LOADER_USER_HELPER_FALLBACK mark note + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support +CONFIG_PM_DEVFREQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_POWERSAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_USERSPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_GOV_PASSIVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ARM_EXYNOS_BUS_DEVFREQ policy<{'armhf': 'y'}> +CONFIG_ARM_IMX_BUS_DEVFREQ policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_ARM_IMX8M_DDRC_DEVFREQ policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_ARM_TEGRA_DEVFREQ policy<{'armhf-generic': 'm'}> +CONFIG_ARM_TEGRA20_DEVFREQ policy<{'armhf-generic': 'm'}> +CONFIG_ARM_RK3399_DMC_DEVFREQ policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support >> DEVFREQ-Event device Support +CONFIG_PM_DEVFREQ_EVENT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_EVENT_EXYNOS_NOCP policy<{'armhf': 'y'}> +CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU policy<{'armhf': 'y'}> +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Generic Target Core Mod (TCM) and ConfigFS Infrastructure +CONFIG_TARGET_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_IBLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_FILEIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_PSCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_USER2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LOOPBACK_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCM_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ISCSI_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ISCSI_TARGET_CXGB4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SBP_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Generic powercap sysfs driver +CONFIG_POWERCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_INTEL_RAPL policy<{'amd64': 'm'}> +CONFIG_IDLE_INJECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support +CONFIG_VGA_ARB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VGA_ARB_MAX_GPUS policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'ppc64el': '16'}> +CONFIG_VGA_SWITCHEROO policy<{'amd64': 'y'}> +CONFIG_TEGRA_HOST1X policy<{'armhf-generic': 'm'}> +CONFIG_TEGRA_HOST1X_FIREWALL policy<{'armhf-generic': 'y'}> +CONFIG_IMX_IPUV3_CORE policy<{'armhf': 'm'}> +CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DRM_XEN policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_DRM_XEN_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> + +# Menu: Device Drivers >> Graphics support >> /dev/agpgart (AGP Support) +CONFIG_AGP policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_AGP_AMD64 policy<{'amd64': 'y'}> +CONFIG_AGP_INTEL policy<{'amd64': 'y'}> +CONFIG_AGP_SIS policy<{'amd64': 'm'}> +CONFIG_AGP_VIA policy<{'amd64': 'y'}> +# +CONFIG_AGP note flag + +# Menu: Device Drivers >> Graphics support >> ARM devices +CONFIG_DRM_HDLCD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_HDLCD_SHOW_UNDERRUN policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_DRM_MALI_DISPLAY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_KOMEDA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel Backlight controls +CONFIG_BACKLIGHT_CLASS_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_BACKLIGHT_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_CARILLO_RANCH policy<{'amd64': 'm'}> +CONFIG_BACKLIGHT_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_APPLE policy<{'amd64': 'm'}> +CONFIG_BACKLIGHT_QCOM_WLED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_SAHARA policy<{'amd64': 'm'}> +CONFIG_BACKLIGHT_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP8860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ADP8870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_AAT2870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3630A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LM3639 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LP855X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_PANDORA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_TPS65217 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_BACKLIGHT_AS3711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LV5207LP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_BD6107 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_ARCXCNN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_RAVE_SP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BACKLIGHT_LED policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel LCD controls +CONFIG_LCD_CLASS_DEVICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_LCD_L4F00242T03 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LMS283GF05 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LTV350QV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_ILI922X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_ILI9320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_TDO24M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_VGG2432A4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_AMS369FG06 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_LMS501KF03 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_HX8357 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LCD_OTM3225A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Bootup logo +CONFIG_LOGO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Console display driver support +CONFIG_VGA_CONSOLE policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_DUMMY_CONSOLE_COLUMNS policy<{'amd64': '80', 'arm64': '80', 'ppc64el': '80', 's390x': '80'}> +CONFIG_DUMMY_CONSOLE_ROWS policy<{'amd64': '25', 'arm64': '25', 'ppc64el': '25', 's390x': '25'}> + +# Menu: Device Drivers >> Graphics support >> Console display driver support >> Framebuffer Console support +CONFIG_FRAMEBUFFER_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) +CONFIG_DRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DRM_DP_AUX_CHARDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DRM_DEBUG_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DRM_FBDEV_EMULATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DRM_FBDEV_OVERALLOC policy<{'amd64': '100', 'arm64': '100', 'armhf': '100', 'ppc64el': '100', 's390x': '100'}> +CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DRM_LOAD_EDID_FIRMWARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DRM_DP_CEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DRM_RADEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_RADEON_USERPTR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_VGEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_VKMS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_VMWGFX policy<{'amd64': 'm'}> +CONFIG_DRM_VMWGFX_FBCON policy<{'amd64': 'y'}> +CONFIG_DRM_UDL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_AST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_MGAG200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_ARMADA policy<{'armhf': 'm'}> +CONFIG_DRM_ATMEL_HLCDC policy<{'armhf': 'm'}> +CONFIG_DRM_RCAR_DU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_RCAR_CMM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_RCAR_DW_HDMI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_RCAR_LVDS policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'n'}> +CONFIG_DRM_RCAR_VSP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_OMAP policy<{'armhf': 'n'}> +CONFIG_DRM_TILCDC policy<{'armhf': 'm'}> +CONFIG_DRM_QXL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_BOCHS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DRM_VIRTIO_GPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DRM_FSL_DCU policy<{'armhf': 'm'}> +CONFIG_DRM_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_DRM_TEGRA_DEBUG policy<{'armhf-generic': 'n'}> +CONFIG_DRM_TEGRA_STAGING policy<{'armhf-generic': 'y'}> +CONFIG_DRM_STM policy<{'armhf': 'm'}> +CONFIG_DRM_STM_DSI policy<{'armhf': 'm'}> +CONFIG_DRM_STI policy<{'armhf': 'n'}> +CONFIG_DRM_VC4 policy<{'arm64': 'm'}> +CONFIG_DRM_VC4_HDMI_CEC policy<{'arm64': 'y'}> +CONFIG_DRM_ETNAVIV policy<{'amd64': 'n', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DRM_ETNAVIV_THERMAL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_ARCPGU policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_HISI_HIBMC policy<{'arm64': 'm'}> +CONFIG_DRM_HISI_KIRIN policy<{'arm64': 'm'}> +CONFIG_DRM_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_MEDIATEK_HDMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_MXSFB policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_MESON_DW_HDMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_CIRRUS_QEMU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_GM12U320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_HX8357D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_ILI9225 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_ILI9341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_ILI9486 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_MI0283QT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_REPAPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_ST7586 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TINYDRM_ST7735R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PL111 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_TVE200 policy<{'armhf': 'm'}> +CONFIG_DRM_VBOXVIDEO policy<{'amd64': 'm'}> +CONFIG_DRM_LIMA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_PANFROST policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DRM_ASPEED_GFX policy<{'armhf': 'm'}> +CONFIG_DRM_MCDE policy<{'armhf': 'm'}> +CONFIG_DRM_TIDSS policy<{'arm64': 'm', 'armhf': 'm'}> +# +CONFIG_DRM_MGAG200 note +CONFIG_DRM_STI note +CONFIG_DRM_VBOXVIDEO note flag +CONFIG_DRM_HISI_HIBMC mark note +CONFIG_DRM_BOCHS mark note note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> AMD GPU +CONFIG_DRM_AMDGPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_AMDGPU_SI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_AMDGPU_CIK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_AMDGPU_USERPTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_AMDGPU_GART_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_HSA_AMD policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +# +CONFIG_DRM_AMDGPU_CIK note +CONFIG_DRM_AMDGPU_CIK note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> AMD GPU >> ACP (Audio CoProcessor) Configuration +CONFIG_DRM_AMD_ACP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> AMD GPU >> Display Engine Configuration +CONFIG_DRM_AMD_DC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_AMD_DC_HDCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEBUG_KERNEL_DC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Allwinner A10 Display Engine +CONFIG_DRM_SUN4I policy<{'arm64': 'm'}> +CONFIG_DRM_SUN4I_HDMI policy<{'arm64': 'm'}> +CONFIG_DRM_SUN4I_HDMI_CEC policy<{'arm64': 'y'}> +CONFIG_DRM_SUN4I_BACKEND policy<{'arm64': 'm'}> +CONFIG_DRM_SUN6I_DSI policy<{'arm64': 'm'}> +CONFIG_DRM_SUN8I_DW_HDMI policy<{'arm64': 'm'}> +CONFIG_DRM_SUN8I_MIXER policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Freescale i.MX +CONFIG_DRM_IMX policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_PARALLEL_DISPLAY policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_TVE policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_LDB policy<{'armhf': 'm'}> +CONFIG_DRM_IMX_HDMI policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Rockchip +CONFIG_DRM_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ROCKCHIP_ANALOGIX_DP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_CDN_DP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_DW_HDMI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_DW_MIPI_DSI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_INNO_HDMI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_LVDS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_RGB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_RK3066_HDMI policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC Exynos Series +CONFIG_DRM_EXYNOS policy<{'armhf': 'm'}> +CONFIG_DRM_EXYNOS_FIMD policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS5433_DECON policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS7_DECON policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_MIXER policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_VIDI policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_DSI policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_HDMI policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_MIC policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_FIMC policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_ROTATOR policy<{'armhf': 'y'}> +CONFIG_DRM_EXYNOS_SCALER policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Interface Bridges +CONFIG_DRM_CDNS_DSI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_CHRONTEL_CH7033 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_DISPLAY_CONNECTOR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_LVDS_CODEC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_NWL_MIPI_DSI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_NXP_PTN3460 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PARADE_PS8622 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PARADE_PS8640 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SIL_SII8620 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SII902X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SII9234 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_SIMPLE_BRIDGE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_THINE_THC63LVD1024 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TOSHIBA_TC358764 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TOSHIBA_TC358767 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TOSHIBA_TC358768 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TI_TFP410 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TI_SN65DSI86 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_TI_TPD12S015 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_ANALOGIX_ANX6345 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_ANALOGIX_ANX78XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_I2C_ADV7511 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_I2C_ADV7511_AUDIO policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_I2C_ADV7511_CEC policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_DW_HDMI_AHB_AUDIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_DW_HDMI_I2S_AUDIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_DW_HDMI_CEC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Panels +CONFIG_DRM_PANEL_ARM_VERSATILE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_BOE_HIMAX8279D policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LVDS policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SIMPLE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ELIDA_KD35T133 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ILITEK_IL9322 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ILITEK_ILI9881C policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_INNOLUX_P079ZCA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_JDI_LT070ME05000 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_LD9040 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LG_LB035Q02 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_LG_LG4573 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_NEC_NL8048HL11 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_NOVATEK_NT35510 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_NOVATEK_NT39016 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ORISETECH_OTM8009A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_RAYDIUM_RM67191 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_RAYDIUM_RM68200 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_ROCKTECH_JH057N00900 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_RONBO_RB070D30 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SEIKO_43WVF1G policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SHARP_LS037V7DW01 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SHARP_LS043T1LE01 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SITRONIX_ST7701 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SITRONIX_ST7789V policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SONY_ACX424AKP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_SONY_ACX565AKM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_TPO_TD028TTEC1 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_TPO_TD043MTEA1 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_TPO_TPG110 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_VISIONOX_RM69299 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRM_PANEL_XINPENG_XPP055C272 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Enable legacy drivers (DANGEROUS) +CONFIG_DRM_LEGACY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_DRM_LEGACY flag note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> I2C encoder or helper chips +CONFIG_DRM_I2C_CH7006 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_I2C_SIL164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_I2C_NXP_TDA998X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DRM_I2C_NXP_TDA9950 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics +CONFIG_DRM_I915 policy<{'amd64': 'm'}> +CONFIG_DRM_I915_FORCE_PROBE policy<{'amd64': '""'}> +CONFIG_DRM_I915_CAPTURE_ERROR policy<{'amd64': 'y'}> +CONFIG_DRM_I915_COMPRESS_ERROR policy<{'amd64': 'y'}> +CONFIG_DRM_I915_USERPTR policy<{'amd64': 'y'}> +CONFIG_DRM_I915_GVT policy<{'amd64': 'y'}> +CONFIG_DRM_I915_GVT_KVMGT policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics >> drm/i915 Debugging +CONFIG_DRM_I915_WERROR policy<{'amd64': 'n'}> +CONFIG_DRM_I915_DEBUG policy<{'amd64': 'n'}> +CONFIG_DRM_I915_DEBUG_MMIO policy<{'amd64': 'n'}> +CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS policy<{'amd64': 'n'}> +CONFIG_DRM_I915_SW_FENCE_CHECK_DAG policy<{'amd64': 'n'}> +CONFIG_DRM_I915_DEBUG_GUC policy<{'amd64': 'n'}> +CONFIG_DRM_I915_SELFTEST policy<{'amd64': 'n'}> +CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS policy<{'amd64': 'n'}> +CONFIG_DRM_I915_DEBUG_VBLANK_EVADE policy<{'amd64': 'n'}> +CONFIG_DRM_I915_DEBUG_RUNTIME_PM policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics >> drm/i915 Debugging >> Insert extra checks into the GEM internals + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics >> drm/i915 Profile Guided Optimisation +CONFIG_DRM_I915_FENCE_TIMEOUT policy<{'amd64': '10000'}> +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND policy<{'amd64': '250'}> +CONFIG_DRM_I915_HEARTBEAT_INTERVAL policy<{'amd64': '2500'}> +CONFIG_DRM_I915_PREEMPT_TIMEOUT policy<{'amd64': '640'}> +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT policy<{'amd64': '8000'}> +CONFIG_DRM_I915_STOP_TIMEOUT policy<{'amd64': '100'}> +CONFIG_DRM_I915_TIMESLICE_DURATION policy<{'amd64': '1'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics >> drm/i915 Unstable Evolution + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel GMA5/600 KMS Framebuffer +CONFIG_DRM_GMA500 policy<{'amd64': 'm'}> +CONFIG_DRM_GMA600 policy<{'amd64': 'y'}> +CONFIG_DRM_GMA3600 policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM +CONFIG_DRM_MSM policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> +CONFIG_DRM_MSM_REGISTER_LOGGING policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_DRM_MSM_GPU_SUDO policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_DRM_MSM_HDMI_HDCP policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> MSM DRM >> Enable DSI support in MSM DRM driver +CONFIG_DRM_MSM_DSI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_PLL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_28NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_20NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_28NM_8960_PHY policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_14NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DRM_MSM_DSI_10NM_PHY policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Nouveau (NVIDIA) cards +CONFIG_DRM_NOUVEAU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NOUVEAU_PLATFORM_DRIVER policy<{'armhf-generic': 'y'}> +CONFIG_NOUVEAU_DEBUG policy<{'amd64': '5', 'arm64': '5', 'armhf': '5', 'ppc64el': '5'}> +CONFIG_NOUVEAU_DEBUG_DEFAULT policy<{'amd64': '3', 'arm64': '3', 'armhf': '3', 'ppc64el': '3'}> +CONFIG_NOUVEAU_DEBUG_MMU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DRM_NOUVEAU_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DRM_NOUVEAU_SVM policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n'}> +# +CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT flag note +CONFIG_DRM_NOUVEAU_SVM flag + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> OMAP2+ Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> OMAPDRM External Display Device Drivers + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Marvell MMP Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices +CONFIG_FB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FIRMWARE_EDID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FB_MODE_HELPERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FB_TILEBLITTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FB_CIRRUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_PM2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_PM2_FIFO_DISCONNECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ARMCLCD policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_FB_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_FB_CYBER2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_CYBER2000_DDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ARC policy<{'amd64': 'm'}> +CONFIG_FB_OF policy<{'ppc64el': 'y'}> +CONFIG_FB_ASILIANT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FB_IMSTT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FB_VGA16 policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_FB_UVESA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_VESA policy<{'amd64': 'y'}> +CONFIG_FB_EFI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_FB_N411 policy<{'amd64': 'm'}> +CONFIG_FB_HGA policy<{'amd64': 'm'}> +CONFIG_FB_OPENCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_S1D13XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_I740 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_LE80578 policy<{'amd64': 'm'}> +CONFIG_FB_CARILLO_RANCH policy<{'amd64': 'm'}> +CONFIG_FB_INTEL policy<{'amd64': 'm'}> +CONFIG_FB_INTEL_DEBUG policy<{'amd64': 'n'}> +CONFIG_FB_INTEL_I2C policy<{'amd64': 'y'}> +CONFIG_FB_ATY128 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_ATY128_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_S3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_S3_DDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SAVAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_SAVAGE_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SAVAGE_ACCEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_SIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_SIS_300 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_SIS_315 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_VIA policy<{'amd64': 'm'}> +CONFIG_FB_VIA_DIRECT_PROCFS policy<{'amd64': 'n'}> +CONFIG_FB_VIA_X_COMPATIBILITY policy<{'amd64': 'y'}> +CONFIG_FB_NEOMAGIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_KYRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_3DFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_3DFX_ACCEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_3DFX_I2C policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_VOODOO1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_VT8623 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_TRIDENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_ARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_PM3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_CARMINE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_SH_MOBILE_LCDC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_FB_TMIO policy<{'armhf': 'm'}> +CONFIG_FB_TMIO_ACCELL policy<{'armhf': 'y'}> +CONFIG_FB_SM501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SMSCUFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_UDL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_IBM_GXT4500 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FB_XILINX policy<{'arm64': 'm'}> +CONFIG_FB_DA8XX policy<{'armhf-generic': 'm'}> +CONFIG_FB_VIRTUAL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XEN_FBDEV_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_FB_METRONOME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_MB862XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_MB862XX_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MX3 policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_FB_HYPERV policy<{'amd64': 'm'}> +CONFIG_FB_SIMPLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FB_SSD1307 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SM712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_FB_VIRTUAL flag + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> AMD Geode family framebuffer support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Mach64 display support +CONFIG_FB_ATY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_ATY_CT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ATY_GENERIC_LCD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_ATY_GX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_ATY_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Radeon display support +CONFIG_FB_RADEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_RADEON_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RADEON_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RADEON_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Amiga native chipset support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> DRAM timing +CONFIG_FB_CARMINE_DRAM_EVAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CARMINE_DRAM_CUSTOM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support +CONFIG_FB_FOREIGN_ENDIAN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support >> Choice endianness support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> GDC variant +CONFIG_FB_MB862XX_PCI_GDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MB862XX_LIME policy<{'ppc64el': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Matrox acceleration +CONFIG_FB_MATROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_MATROX_MILLENIUM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_MYSTIQUE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_MATROX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_MATROX_MAVEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> OMAP frame buffer support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> OMAP2+ frame buffer support +CONFIG_FB_OMAP2 policy<{'armhf': 'm'}> +CONFIG_FB_OMAP2_DEBUG_SUPPORT policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_NUM_FBS policy<{'armhf': '3'}> +CONFIG_FB_OMAP2_DSS_DEBUG policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_DSS_DEBUGFS policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_DSS_DPI policy<{'armhf': 'y'}> +CONFIG_FB_OMAP2_DSS_VENC policy<{'armhf': 'y'}> +CONFIG_FB_OMAP4_DSS_HDMI policy<{'armhf': 'y'}> +CONFIG_FB_OMAP5_DSS_HDMI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_DSS_SDI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_DSS_DSI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_DSS_MIN_FCK_PER_PCK policy<{'armhf': '0'}> +CONFIG_FB_OMAP2_DSS_SLEEP_AFTER_VENC_RESET policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> OMAP2+ frame buffer support >> OMAPFB Panel and Encoder Drivers +CONFIG_FB_OMAP2_ENCODER_OPA362 policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_ENCODER_TFP410 policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_ENCODER_TPD12S015 policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_CONNECTOR_DVI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_CONNECTOR_HDMI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_CONNECTOR_ANALOG_TV policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_PANEL_DPI policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_PANEL_DSI_CM policy<{'armhf': 'n'}> +CONFIG_FB_OMAP2_PANEL_LGPHILIPS_LB035Q02 policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> PXA LCD framebuffer support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> SBUS and UPA framebuffers + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Framebuffer Support +CONFIG_FB_NVIDIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_NVIDIA_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_NVIDIA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_NVIDIA_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Riva support +CONFIG_FB_RIVA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FB_RIVA_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FB_RIVA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FB_RIVA_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Greybus support +CONFIG_GREYBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GREYBUS_ES2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HDMI CEC drivers +CONFIG_MEDIA_CEC_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CEC_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CEC_MESON_AO policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CEC_MESON_G12A_AO policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CEC_GPIO policy<{'amd64-lowlatency': 'm'}> +CONFIG_CEC_SAMSUNG_S5P policy<{'armhf': 'm'}> +CONFIG_CEC_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_CEC_SECO policy<{'amd64': 'm'}> +CONFIG_CEC_SECO_RC policy<{'amd64': 'y'}> +CONFIG_USB_PULSE8_CEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RAINSHADOW_CEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support + +# Menu: Device Drivers >> HID support >> HID bus support +CONFIG_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HID_BATTERY_STRENGTH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HIDRAW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UHID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers +CONFIG_HID_A4TECH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ACCUTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ACRUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ACRUX_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_APPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_APPLEIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ASUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_AUREAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BELKIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BETOP_FF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_BIGBEN_FF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CHERRY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CHICONY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CORSAIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_COUGAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MACALLY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PRODIKEYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CMEDIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CP2112 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CREATIVE_SB0540 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_CYPRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_DRAGONRISE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DRAGONRISE_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_EMS_FF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ELAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ELECOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ELO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_EZKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GEMBIRD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GFRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GLORIOUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_HOLTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HOLTEK_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_GOOGLE_HAMMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_HID_GT683R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KEYTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KYE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_UCLOGIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_WALTOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_VIEWSONIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GYRATION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ICADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_JABRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_TWINHAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_KENSINGTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LCPOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LENOVO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MAGICMOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MALTRON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MAYFLASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_REDRAGON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MICROSOFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MONTEREY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MULTITOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_NTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_NTRIG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ORTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PANTHERLORD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PANTHERLORD_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PENMOUNT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PETALYNX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PLANTRONICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PRIMAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_RETRODE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ROCCAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SAITEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SAMSUNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SONY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SONY_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_SPEEDLINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_STEAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_STEELSERIES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SUNPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_RMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_GREENASIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREENASIA_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_HYPERV_MOUSE policy<{'amd64': 'm'}> +CONFIG_HID_SMARTJOYPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SMARTJOYPLUS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_TIVO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_TOPSEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_THINGM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_THRUSTMASTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_THRUSTMASTER_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_UDRAW_PS3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_U2FZERO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_WACOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_WIIMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_XINMO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ZEROPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZEROPLUS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_ZYDACRON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_HUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_CUSTOM_SENSOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_ALPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_MCP2221 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> Logitech devices +CONFIG_HID_LOGITECH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LOGITECH_DJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_LOGITECH_HIDPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LOGITECH_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIRUMBLEPAD2_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIG940_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LOGIWHEELS_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> PicoLCD (graphic version) +CONFIG_HID_PICOLCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PICOLCD_FB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_BACKLIGHT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_LCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HID_PICOLCD_CIR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> I2C HID support +CONFIG_I2C_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> HID support >> Intel ISH HID support +CONFIG_INTEL_ISH_HID policy<{'amd64': 'm'}> +CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> HID support >> USB HID support +CONFIG_USB_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_PID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_HIDDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID Boot Protocol drivers +CONFIG_USB_KBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HSI support +CONFIG_HSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMAP_SSI policy<{'armhf-generic': 'm'}> +CONFIG_NOKIA_MODEM policy<{'armhf-generic': 'm'}> +CONFIG_CMT_SPEECH policy<{'armhf-generic': 'm'}> +CONFIG_SSI_PROTOCOL policy<{'armhf-generic': 'm'}> +CONFIG_HSI_CHAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> HW tracing support + +# Menu: Device Drivers >> HW tracing support >> Intel(R) Trace Hub controller +CONFIG_INTEL_TH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_INTEL_TH_GTH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_STH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_MSU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_PTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_TH_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> HW tracing support >> System Trace Module devices +CONFIG_STM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_PROTO_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_PROTO_SYS_T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_SOURCE_CONSOLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_SOURCE_HEARTBEAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STM_SOURCE_FTRACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Hardware Monitoring support +CONFIG_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HWMON_DEBUG_CHIP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_ABITUGURU policy<{'amd64': 'm'}> +CONFIG_SENSORS_ABITUGURU3 policy<{'amd64': 'm'}> +CONFIG_SENSORS_AD7314 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AD7414 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AD7418 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1025 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1026 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1029 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1177 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM9240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7410 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7411 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7462 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7470 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADT7475 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AS370 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ASC7621 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AXI_FAN_CONTROL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_K8TEMP policy<{'amd64': 'm'}> +CONFIG_SENSORS_K10TEMP policy<{'amd64': 'm'}> +CONFIG_SENSORS_FAM15H_POWER policy<{'amd64': 'm'}> +CONFIG_SENSORS_AMD_ENERGY policy<{'amd64': 'm'}> +CONFIG_SENSORS_APPLESMC policy<{'amd64': 'm'}> +CONFIG_SENSORS_ARM_SCMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_ARM_SCPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_ASB100 policy<{'amd64': 'm'}> +CONFIG_SENSORS_ASPEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ATXP1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DRIVETEMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DS620 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DS1621 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DELL_SMM policy<{'amd64': 'm'}> +CONFIG_SENSORS_DA9052_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_I5K_AMB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_F71805F policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_F71882FG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_F75375S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GSC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MC13783_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_FSCHMD policy<{'amd64': 'm'}> +CONFIG_SENSORS_FTSTEUTATES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GL518SM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GL520SM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_G760A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_G762 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_GPIO_FAN policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HIH6130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMAEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMPEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBMPOWERNV policy<{'ppc64el': 'm'}> +CONFIG_SENSORS_IIO_HWMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_I5500 policy<{'amd64': 'm'}> +CONFIG_SENSORS_CORETEMP policy<{'amd64': 'm'}> +CONFIG_SENSORS_IT87 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_JC42 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_POWR1220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LINEAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LOCHNAGAR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2945 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2947_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2947_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2990 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4151 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4215 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4222 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4245 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4260 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC4261 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX16065 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1619 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX1668 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX197 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX31722 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX31730 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6621 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6639 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6650 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX6697 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX31790 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MCP3021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MLXREG_FAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_TC654 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MENF21BMC_HWMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADCXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM63 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM70 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM73 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM75 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM77 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM78 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM80 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM83 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM85 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM87 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM90 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM92 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95234 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95241 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM95245 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PC87360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_PC87427 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_NTC_THERMISTOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_NCT6683 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_NCT6775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_NCT7802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_NCT7904 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_NPCM7XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_OCC_P8_I2C policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_SENSORS_OCC_P9_SBE policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_SENSORS_PCF8591 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PWM_FAN policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_RASPBERRYPI_HWMON policy<{'arm64': 'm'}> +CONFIG_SENSORS_SHT15 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHT21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHT3x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SHTC1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SIS5595 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_DME1737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_EMC1403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_EMC2103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_EMC6W201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SMSC47M1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_SMSC47M192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SMSC47B397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_SCH5627 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_SCH5636 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_STTS751 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_SMM665 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADC128D818 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADS7828 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADS7871 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_AMC6821 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INA209 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INA2XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INA3221 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TC74 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_THMC50 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP108 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TMP513 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_VEXPRESS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_VIA_CPUTEMP policy<{'amd64': 'm'}> +CONFIG_SENSORS_VIA686A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_VT1211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_VT8231 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83773G policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83781D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83791D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83792D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83793 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83795 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83795_FANCTRL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_W83L785TS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83L786NG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_W83627HF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_W83627EHF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SENSORS_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_XGENE policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_SENSORS_ACPI_POWER policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_SENSORS_ATK0110 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Hardware Monitoring support >> PMBus support +CONFIG_PMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ADM1275 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_BEL_PFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IBM_CFFPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_INSPUR_IPSPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IR35221 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IR38064 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_IRPS5401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ISL68137 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM25066 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2978 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LTC2978_REGULATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SENSORS_LTC3815 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX16064 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX16601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX20730 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX20751 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX31785 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX34440 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_MAX8688 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_PXE1610 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TPS40422 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TPS53679 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_UCD9000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_UCD9200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_XDPE122 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ZL6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Hardware Spinlock drivers +CONFIG_HWSPINLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HWSPINLOCK_OMAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HWSPINLOCK_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HWSPINLOCK_SPRD policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> I2C support + +# Menu: Device Drivers >> I2C support >> I2C support +CONFIG_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_ACPI_I2C_OPREGION policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_I2C_COMPAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_I2C_CHARDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_I2C_MUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_I2C_HELPER_AUTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_I2C_SMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_STUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_I2C_SLAVE policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_I2C_SLAVE_EEPROM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_DEBUG_CORE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_I2C_DEBUG_ALGO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_I2C_DEBUG_BUS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_I2C_CHARDEV note + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms +CONFIG_I2C_ALGOBIT policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_I2C_ALGOPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support +CONFIG_I2C_ALI1535 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_ALI1563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_ALI15X3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_AMD756 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_AMD756_S4882 policy<{'amd64': 'm'}> +CONFIG_I2C_AMD8111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_AMD_MP2 policy<{'amd64': 'm', 'arm64': 'n'}> +CONFIG_I2C_HIX5HD2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_I801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_ISCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_ISMT policy<{'amd64': 'm'}> +CONFIG_I2C_PIIX4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_CHT_WC policy<{'amd64': 'm'}> +CONFIG_I2C_NFORCE2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_NFORCE2_S4985 policy<{'amd64': 'm'}> +CONFIG_I2C_NVIDIA_GPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_SIS5595 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_SIS630 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_SIS96X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_VIAPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_SCMI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_I2C_ASPEED policy<{'armhf': 'm'}> +CONFIG_I2C_AXXIA policy<{'armhf-generic-lpae': 'm'}> +CONFIG_I2C_BCM2835 policy<{'arm64': 'm'}> +CONFIG_I2C_BCM_IPROC policy<{'arm64': 'm'}> +CONFIG_I2C_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_I2C_CADENCE policy<{'arm64': 'n'}> +CONFIG_I2C_CBUS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_DESIGNWARE_SLAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_I2C_DESIGNWARE_PLATFORM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_I2C_DESIGNWARE_BAYTRAIL policy<{'amd64': 'y'}> +CONFIG_I2C_DESIGNWARE_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_EMEV2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'm', 'ppc64el': 'n'}> +CONFIG_I2C_EXYNOS5 policy<{'armhf': 'm'}> +CONFIG_I2C_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_GPIO_FAULT_INJECTOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_I2C_IMX policy<{'arm64': 'm', 'armhf-generic': 'y'}> +CONFIG_I2C_IMX_LPI2C policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_I2C_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_MPC policy<{'ppc64el': 'm'}> +CONFIG_I2C_MT65XX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_MV64XXX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_NOMADIK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_NPCM7XX policy<{'armhf': 'm'}> +CONFIG_I2C_OCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_OMAP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_I2C_OWL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_PCA_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_PXA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_PXA_SLAVE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_I2C_QCOM_CCI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_QCOM_GENI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_QUP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_RIIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_RK3X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_S3C2410 policy<{'armhf': 'y'}> +CONFIG_I2C_SH_MOBILE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_SIMTEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_SPRD policy<{'arm64': 'y'}> +CONFIG_I2C_SYNQUACER policy<{'arm64': 'm'}> +CONFIG_I2C_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_I2C_TEGRA_BPMP policy<{'armhf-generic': 'm'}> +CONFIG_I2C_UNIPHIER policy<{'armhf': 'n'}> +CONFIG_I2C_UNIPHIER_F policy<{'armhf': 'n'}> +CONFIG_I2C_VERSATILE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_THUNDERX policy<{'arm64': 'm'}> +CONFIG_I2C_XILINX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_XLP9XX policy<{'arm64': 'm'}> +CONFIG_I2C_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_DIOLAN_U2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_ROBOTFUZZ_OSIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_TAOS_EVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_TINY_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MLXCPLD policy<{'amd64': 'm'}> +CONFIG_I2C_CROS_EC_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_I2C_XGENE_SLIMPRO policy<{'arm64': 'm'}> +CONFIG_I2C_OPAL policy<{'ppc64el': 'y'}> +CONFIG_I2C_FSI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> Multiplexer I2C Chip support +CONFIG_I2C_ARB_GPIO_CHALLENGE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_MUX_GPMUX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_LTC4306 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_MUX_PCA9541 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_MUX_PCA954x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_MUX_PINCTRL policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_REG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_I2C_DEMUX_PINCTRL policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_MUX_MLXCPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> I3C support +CONFIG_I3C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CDNS_I3C_MASTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DW_I3C_MASTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support +CONFIG_FIREWIRE_NOSY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support >> FireWire driver stack +CONFIG_FIREWIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FIREWIRE_OHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_SBP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IOMMU Hardware Support +CONFIG_IOMMU_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IOMMU_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IOMMU_DEFAULT_PASSTHROUGH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MSM_IOMMU policy<{'armhf': 'n'}> +CONFIG_AMD_IOMMU policy<{'amd64': 'y'}> +CONFIG_AMD_IOMMU_V2 policy<{'amd64': 'm'}> +CONFIG_IRQ_REMAP policy<{'amd64': 'y'}> +CONFIG_OMAP_IOMMU policy<{'armhf': 'y'}> +CONFIG_OMAP_IOMMU_DEBUG policy<{'armhf': 'n'}> +CONFIG_ROCKCHIP_IOMMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SUN50I_IOMMU policy<{'arm64': 'y'}> +CONFIG_TEGRA_IOMMU_GART policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA_IOMMU_SMMU policy<{'armhf-generic': 'y'}> +CONFIG_EXYNOS_IOMMU policy<{'armhf': 'y'}> +CONFIG_EXYNOS_IOMMU_DEBUG policy<{'armhf': 'n'}> +CONFIG_IPMMU_VMSA policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_SPAPR_TCE_IOMMU policy<{'ppc64el': 'y'}> +CONFIG_ARM_SMMU policy<{'arm64': 'y', 'armhf': 'n'}> +CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS policy<{'arm64': 'n'}> +CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT policy<{'arm64': 'n'}> +CONFIG_ARM_SMMU_V3 policy<{'arm64': 'y'}> +CONFIG_S390_CCW_IOMMU policy<{'s390x': 'y'}> +CONFIG_S390_AP_IOMMU policy<{'s390x': 'y'}> +CONFIG_MTK_IOMMU policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_MTK_IOMMU_V1 policy<{'armhf': 'n'}> +CONFIG_QCOM_IOMMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_HYPERV_IOMMU policy<{'amd64': 'y'}> +CONFIG_VIRTIO_IOMMU policy<{'arm64': 'y'}> +# +CONFIG_IPMMU_VMSA note +CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT mark note +CONFIG_IOMMU_DEBUGFS mark note + +# Menu: Device Drivers >> IOMMU Hardware Support >> Generic IOMMU Pagetable Support +CONFIG_IOMMU_IO_PGTABLE_LPAE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_IOMMU_IO_PGTABLE_ARMV7S policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Device Drivers >> IOMMU Hardware Support >> Support for Intel IOMMU using DMA Remapping Devices +CONFIG_INTEL_IOMMU policy<{'amd64': 'y'}> +CONFIG_INTEL_IOMMU_SVM policy<{'amd64': 'y'}> +CONFIG_INTEL_IOMMU_DEFAULT_ON policy<{'amd64': 'n'}> +CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON policy<{'amd64': 'n'}> +# +CONFIG_INTEL_IOMMU_DEFAULT_ON note flag + +# Menu: Device Drivers >> IRQ chip support +CONFIG_AL_FIC policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RENESAS_INTC_IRQPIN policy<{'armhf': 'y'}> +CONFIG_RENESAS_IRQC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RENESAS_RZA1_IRQC policy<{'armhf': 'y'}> +CONFIG_TS4800_IRQ policy<{'armhf-generic': 'm'}> +CONFIG_QCOM_IRQ_COMBINER policy<{'arm64': 'y'}> +CONFIG_IRQ_UNIPHIER_AIDET policy<{'armhf': 'y'}> +CONFIG_MESON_IRQ_GPIO policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_QCOM_PDC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_IMX_IRQSTEER policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_EXYNOS_IRQ_COMBINER policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> ISDN support +CONFIG_ISDN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> ISDN support >> Modular ISDN driver +CONFIG_MISDN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_DSP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_L1OIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCMULTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_HFCUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_AVMFRITZ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_SPEEDFAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_INFINEON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_W6692 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MISDN_NETJET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support +CONFIG_IIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IIO_CONFIGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_TRIGGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IIO_CONSUMERS_PER_TRIGGER policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_IIO_SW_DEVICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SW_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_CROS_EC_SENSORS_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_IIO_CROS_EC_SENSORS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Accelerometers +CONFIG_ADIS16201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16209 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADXL372_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADXL372_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMA220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMA400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMC150_ACCEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DMARD06 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DMARD09 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DMARD10 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_ACCEL_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_CROS_EC_ACCEL_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_IIO_ST_ACCEL_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KXSD9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KXSD9_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KXSD9_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KXCJK1013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MC3230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA7455_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA7455_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA7660 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA8452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA9551 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMA9553 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MXC4005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MXC6255 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCA3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STK8312 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STK8BA50 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Amplifiers +CONFIG_AD8366 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HMC425 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Analog Front Ends +CONFIG_IIO_RESCALE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Analog to digital converters +CONFIG_AD7091R5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7124 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7192 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7266 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7291 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7292 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7298 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7476 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7606_IFACE_PARALLEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7606_IFACE_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7766 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7768_1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7791 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7793 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7887 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7923 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7949 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD799X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD9467 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADI_AXI_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ASPEED_ADC policy<{'armhf': 'm'}> +CONFIG_AXP20X_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AXP288_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BCM_IPROC_ADC policy<{'arm64': 'm'}> +CONFIG_BERLIN2_ADC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CC10001_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CPCAP_ADC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA9150_GPADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DLN2_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ENVELOPE_DETECTOR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EXYNOS_ADC policy<{'armhf': 'm'}> +CONFIG_HI8435 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HX711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INA2XX_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INTEL_MRFLD_ADC policy<{'amd64': 'm'}> +CONFIG_IMX7D_ADC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_LP8788_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2471 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2485 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2496 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2497 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX11100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1118 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1241 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX1363 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX9611 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP320X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP3422 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP3911 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIATEK_MT6577_AUXADC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MEN_Z188_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MESON_SARADC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MP2629_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NAU7802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NPCM_ADC policy<{'armhf': 'm'}> +CONFIG_PALMAS_GPADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_PM8XXX_XOADC policy<{'armhf': 'm'}> +CONFIG_QCOM_SPMI_IADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_SPMI_VADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_SPMI_ADC5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RCAR_GYRO_ADC policy<{'armhf': 'm'}> +CONFIG_RN5T618_ADC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ROCKCHIP_SARADC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SC27XX_ADC policy<{'arm64': 'm'}> +CONFIG_SD_ADC_MODULATOR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STMPE_ADC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STX104 policy<{'amd64': 'm'}> +CONFIG_SUN4I_GPADC policy<{'arm64': 'n'}> +CONFIG_TI_ADC081C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC0832 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC084S021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC12138 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC108S102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC128S052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADC161S626 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADS1015 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADS7950 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADS8344 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADS8688 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_ADS124S08 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_AM335X_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_TLC4541 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TWL4030_MADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TWL6030_GPADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VF610_ADC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIPERBOARD_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XILINX_XADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Chemical Sensors +CONFIG_ATLAS_PH_SENSOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATLAS_EZO_SENSOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BME680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CCS811 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IAQCORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PMS7003 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSIRION_SGP30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPS30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VZ89X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital gyroscope sensors +CONFIG_ADIS16080 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16136 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16260 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADXRS450 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMG160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FXAS21002C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_GYRO_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MPU3050_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_GYRO_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ITG3200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital potentiometers +CONFIG_AD5272 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DS1803 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX5432 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX5481 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX5487 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4018 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4131 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4531 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP41010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TPL0102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital potentiostats +CONFIG_LMP91000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Digital to analog converters +CONFIG_AD5064 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5380 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5446 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5449 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5592R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5593R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5504 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5624R_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5686_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5696_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5755 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5758 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5761 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5764 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5770R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD5791 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD8801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CIO_DAC policy<{'amd64': 'm'}> +CONFIG_DPOT_DAC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DS4424 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC1660 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2632 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_M62332 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX517 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX5821 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4725 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCP4922 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_DAC082S085 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_DAC5571 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_DAC7311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TI_DAC7612 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VF610_DAC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Enable buffer support within IIO +CONFIG_IIO_BUFFER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IIO_BUFFER_CB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_BUFFER_HW_CONSUMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_KFIFO_BUF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Clock Generator/Distribution +CONFIG_AD9523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Phase-Locked Loop (PLL) frequency synthesizers +CONFIG_ADF4350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADF4371 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Health Sensors + +# Menu: Device Drivers >> Industrial I/O support >> Health Sensors >> Heart Rate Monitors +CONFIG_AFE4403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AFE4404 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX30100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX30102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Hid Sensor IIO Common +CONFIG_HID_SENSOR_IIO_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_IIO_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Humidity sensors +CONFIG_AM2315 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DHT11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDC100X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_HUMIDITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HTS221 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HTU21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SI7005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SI7020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> IIO dummy driver +CONFIG_IIO_SIMPLE_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SIMPLE_DUMMY_EVENTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IIO_SIMPLE_DUMMY_BUFFER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_IIO_SIMPLE_DUMMY_EVENTS note +CONFIG_IIO_SIMPLE_DUMMY_BUFFER note + +# Menu: Device Drivers >> Industrial I/O support >> Inclinometer sensors +CONFIG_HID_SENSOR_INCLINOMETER_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_DEVICE_ROTATION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Inertial measurement units +CONFIG_ADIS16400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16460 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16475 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16480 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMI160_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMI160_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FXOS8700_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FXOS8700_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KMX61 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INV_MPU6050_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INV_MPU6050_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_LSM6DSX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Light sensors +CONFIG_ACPI_ALS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ADJD_S311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADUX1020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AL3010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AL3320A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_APDS9300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_APDS9960 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BH1750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BH1780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CM32181 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CM3232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CM3323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CM3605 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CM36651 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_CROS_EC_LIGHT_PROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_GP2AP002 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GP2AP020A00F policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IQS621_ALS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ISL29018 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_ISL29028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ISL29125 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_ALS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_PROX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JSA1212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RPR0521 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTR501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LV0104CS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX44000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX44009 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NOA1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_OPT3001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PA12203001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SI1133 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SI1145 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STK3310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ST_UVIS25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TCS3414 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TCS3472 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_TSL2563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TSL2583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TSL2772 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TSL4531 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_US5182D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VCNL4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VCNL4035 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VEML6030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VEML6070 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VL6180 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZOPT2201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Lightning sensors +CONFIG_AS3935 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Linear and angular position sensors +CONFIG_IQS624_POS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Magnetometer sensors +CONFIG_AK8974 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AK8975 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AK09911 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMC150_MAGN_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMC150_MAGN_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAG3110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_MAGNETOMETER_3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC35240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_MAGN_3AXIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HMC5843_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_HMC5843_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_RM3100_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_RM3100_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Multiplexers +CONFIG_IIO_MUX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Pressure sensors +CONFIG_ABP060MG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BMP280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_CROS_EC_BARO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_DLHL60D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DPS310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_PRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HP03 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ICP10100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MPL115_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MPL115_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MPL3115 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MS5611_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MS5637 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_ST_PRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_T5403 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HP206C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZPA2326 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Proximity and distance sensors +CONFIG_ISL29501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIDAR_LITE_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MB1232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RFD77402 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SRF04 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SX9310 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SX9500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SRF08 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VCNL3020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VL53L0X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Resolver to digital converters +CONFIG_AD2S1200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD2S90 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> SSP Sensor Common +CONFIG_IIO_SSP_SENSORS_COMMONS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SSP_SENSORHUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Temperature sensors +CONFIG_IQS620AT_TEMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTC2983 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAXIM_THERMOCOUPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HID_SENSOR_TEMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MLX90614 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MLX90632 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TMP006 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TMP007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TSYS01 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TSYS02D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX31856 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Industrial I/O support >> Triggers - standalone +CONFIG_IIO_HRTIMER_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_INTERRUPT_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_TIGHTLOOP_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IIO_SYSFS_TRIGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> IndustryPack bus support +CONFIG_IPACK_BUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BOARD_TPCI200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIAL_IPOCTAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> InfiniBand support +CONFIG_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_USER_MAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ON_DEMAND_PAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INFINIBAND_IPOIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_IPOIB_CM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INFINIBAND_IPOIB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INFINIBAND_OPA_VNIC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> InfiniBand support >> InfiniBand userspace access (verbs and CM) +CONFIG_INFINIBAND_USER_ACCESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INFINIBAND_MTHCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_MTHCA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INFINIBAND_QIB policy<{'amd64': 'm'}> +CONFIG_INFINIBAND_QIB_DCA policy<{'amd64': 'y'}> +CONFIG_INFINIBAND_EFA policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_INFINIBAND_I40IW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_OCRDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm'}> +CONFIG_INFINIBAND_USNIC policy<{'amd64': 'm'}> +CONFIG_INFINIBAND_HNS policy<{'arm64': 'm'}> +CONFIG_INFINIBAND_HNS_HIP06 policy<{'arm64': 'y'}> +CONFIG_INFINIBAND_HNS_HIP08 policy<{'arm64': 'y'}> +CONFIG_INFINIBAND_BNXT_RE policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INFINIBAND_HFI1 policy<{'amd64': 'm'}> +CONFIG_HFI1_DEBUG_SDMA_ORDER policy<{'amd64': 'n'}> +CONFIG_SDMA_VERBOSITY policy<{'amd64': 'n'}> +CONFIG_INFINIBAND_QEDR policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_INFINIBAND_RDMAVT policy<{'amd64': 'm'}> +CONFIG_RDMA_RXE policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDMA_SIW policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> InfiniBand support >> RDMA/CM +CONFIG_INFINIBAND_ADDR_TRANS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INFINIBAND_CXGB4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INFINIBAND_SRP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_SRPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ISER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_ISERT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_RTRS_CLIENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INFINIBAND_RTRS_SERVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Input device support + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) +CONFIG_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INPUT_LEDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_FF_MEMLESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INPUT_POLLDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INPUT_SPARSEKMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INPUT_MATRIXKMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INPUT_JOYDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INPUT_EVBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Joysticks/Gamepads +CONFIG_INPUT_JOYSTICK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_JOYSTICK_ANALOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_A3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_ADI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_COBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GF2K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GRIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GRIP_MP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GUILLEMOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_INTERACT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SIDEWINDER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TMDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_IFORCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_IFORCE_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_IFORCE_232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_WARRIOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_MAGELLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SPACEORB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_SPACEBALL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_STINGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TWIDJOY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_ZHENHUA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_DB9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_GAMECON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_TURBOGRAFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_AS5011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_JOYDUMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_XPAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_XPAD_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_XPAD_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_WALKERA0701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_PSXPAD_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_PSXPAD_SPI_FF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JOYSTICK_PXRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JOYSTICK_FSIA6B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards +CONFIG_INPUT_KEYBOARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KEYBOARD_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ADP5588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_ADP5589 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_APPLESPI policy<{'amd64': 'm'}> +CONFIG_KEYBOARD_ATKBD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KEYBOARD_QT1050 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_QT1070 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_QT2160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_DLINK_DIR685 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LKKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_GPIO_POLLED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TCA6416 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TCA8418 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MATRIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LM8323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_LM8333 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MAX7359 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MCS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MPR121 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SNVS_PWRKEY policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_KEYBOARD_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_KEYBOARD_IMX_SC_KEY policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_KEYBOARD_NEWTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_OPENCORES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_PMIC8XXX policy<{'armhf': 'm'}> +CONFIG_KEYBOARD_SAMSUNG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_STOWAWAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SUNKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_STMPE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_SUN4I_LRADC policy<{'arm64': 'n'}> +CONFIG_KEYBOARD_IQS62X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_OMAP4 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TC3589X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TM2_TOUCHKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_XTKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_KEYBOARD_CAP11XX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_BCM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KEYBOARD_MTK_PMIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice +CONFIG_INPUT_MOUSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MOUSE_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_APPLETOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_BCM5974 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_CYAPA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_ELAN_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_ELAN_I2C_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_ELAN_I2C_SMBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_VSXXXAA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_SYNAPTICS_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_SYNAPTICS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_MOUSE_INPORT note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice >> PS/2 mouse +CONFIG_MOUSE_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOUSE_PS2_ALPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_BYD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_LOGIPS2PP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_SYNAPTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_CYPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_LIFEBOOK policy<{'amd64': 'y'}> +CONFIG_MOUSE_PS2_TRACKPOINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_ELANTECH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_ELANTECH_SMBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_SENTELIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_TOUCHKIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_FOCALTECH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MOUSE_PS2_VMMOUSE policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Miscellaneous devices +CONFIG_INPUT_MISC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_INPUT_88PM860X_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_88PM80X_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AD714X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ARIZONA_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ATMEL_CAPTOUCH policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_BMA150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_E3X0_BUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCSPKR policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PM8941_PWRKEY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INPUT_PM8XXX_VIBRATOR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INPUT_PMIC8XXX_PWRKEY policy<{'armhf': 'm'}> +CONFIG_INPUT_MAX77650_ONKEY policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MAX77693_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MAX8925_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MAX8997_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MC13783_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_MMA8450 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_APANEL policy<{'amd64': 'm'}> +CONFIG_INPUT_GPIO_BEEPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CPCAP_PWRBUTTON policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ATLAS_BTNS policy<{'amd64': 'm'}> +CONFIG_INPUT_ATI_REMOTE2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_KEYSPAN_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_KXTJ9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_POWERMATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_YEALINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CM109 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_REGULATOR_HAPTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_RETU_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TPS65218_PWRBUTTON policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_AXP20X_PEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL4030_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL4030_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_TWL6040_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_UINPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_PALMAS_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCF50633_PMU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCF8574 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PWM_BEEPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PWM_VIBRA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_RK805_PWRKEY policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_GPIO_ROTARY_ENCODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9052_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9055_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DA9063_ONKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_WM831X_ON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_ADXL34X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_IMS_PCU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_IQS269A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CMA3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_CMA3000_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_XEN_KBDDEV_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_INPUT_IDEAPAD_SLIDEBAR policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_SOC_BUTTON_ARRAY policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_INPUT_DRV260X_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DRV2665_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_DRV2667_HAPTICS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_HISI_POWERKEY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INPUT_RAVE_SP_PWRBUTTON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_INPUT_SC27XX_VIBRA policy<{'arm64': 'm'}> +CONFIG_INPUT_STPMIC1_ONKEY policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_INPUT_UINPUT mark note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mouse interface +CONFIG_INPUT_MOUSEDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_INPUT_MOUSEDEV_PSAUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_INPUT_MOUSEDEV_SCREEN_X policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'ppc64el': '1024'}> +CONFIG_INPUT_MOUSEDEV_SCREEN_Y policy<{'amd64': '768', 'arm64': '768', 'armhf': '768', 'ppc64el': '768'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Synaptics RMI4 bus support +CONFIG_RMI4_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_RMI4_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RMI4_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RMI4_SMB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RMI4_F03 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F11 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F12 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F30 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F34 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F54 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RMI4_F55 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Tablets +CONFIG_INPUT_TABLET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TABLET_USB_ACECAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_AIPTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_GTCO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_HANWANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_KBTAB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_USB_PEGASUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TABLET_SERIAL_WACOM4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens +CONFIG_INPUT_TOUCHSCREEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TOUCHSCREEN_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ADS7846 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7877 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AD7879_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_AR1021_I2C policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ATMEL_MXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_AUO_PIXCIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_BU21013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_BU21029 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_TOUCHSCREEN_CY8CTMA140 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CY8CTMG110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_CYTTSP4_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DA9034 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_DYNAPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_HAMPSHIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EETI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EGALAX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EGALAX_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EXC3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_FUJITSU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_GOODIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_HIDEEP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ILI210X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_IPROC policy<{'arm64': 'm'}> +CONFIG_TOUCHSCREEN_S6SY761 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_GUNZE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EKTF2127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ELAN policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ELO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WACOM_W8001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WACOM_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MAX11801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MCS5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MMS114 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MELFAS_MIP4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_IMX6UL_TSC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_INEXIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MK712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_PENMOUNT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_EDT_FT5X06 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_RASPBERRYPI_FW policy<{'arm64': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHRIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHWIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TI_AM335X_TSC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_UCB1400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_PIXCIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WDT87XX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TOUCHIT213 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TS4800 policy<{'armhf-generic': 'm'}> +CONFIG_TOUCHSCREEN_TSC_SERIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2004 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TSC2007_IIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_RM_TS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SILEAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SIS_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ST1232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_STMFTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_STMPE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SUN4I policy<{'arm64': 'n'}> +CONFIG_TOUCHSCREEN_SUR40 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SURFACE3_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_SX8654 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ZET6223 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ZFORCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_COLIBRI_VF50 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_ROHM_BU21023 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_IQS5XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_TOUCHSCREEN_ELAN mark note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> Support for WM97xx AC97 touchscreen controllers +CONFIG_TOUCHSCREEN_WM97XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_WM9705 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_WM9712 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_WM9713 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> USB Touchscreen Driver +CONFIG_TOUCHSCREEN_USB_COMPOSITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TOUCHSCREEN_USB_EGALAX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_PANJIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_3M policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ITM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ETURBO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GUNZE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_DMC_TSC10 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_IRTOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_IDEALTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_GOTOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_JASTEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ELO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_E2I policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ZYTRONIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_NEXIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TOUCHSCREEN_USB_EASYTOUCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Gameport support +CONFIG_GAMEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GAMEPORT_NS558 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_L4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_EMU10K1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GAMEPORT_FM801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Serial I/O support +CONFIG_SERIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SERIO_I8042 policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_SERIO_SERPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_CT82C710 policy<{'amd64': 'm'}> +CONFIG_SERIO_PARKBD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_AMBAKMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SERIO_PCIPS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_LIBPS2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SERIO_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_XILINX_XPS_PS2 policy<{'ppc64el': 'm'}> +CONFIG_SERIO_ALTERA_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_PS2MULT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_ARC_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SERIO_APBPS2 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HYPERV_KEYBOARD policy<{'amd64': 'm'}> +CONFIG_SERIO_SUN4I_PS2 policy<{'arm64': 'n'}> +CONFIG_SERIO_GPIO_PS2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USERIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support +CONFIG_NEW_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LEDS_LP55XX_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support +CONFIG_LEDS_CLASS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_BRIGHTNESS_HW_CHANGED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_AN30259A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_APU policy<{'amd64': 'm'}> +CONFIG_LEDS_AW2013 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BCM6328 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BCM6358 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_CR0014114 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_EL15203000 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3530 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3692X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MT6323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PCA9532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PCA9532_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP3944 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP3952 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5521 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP5562 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LP8860 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_CLEVO_MAIL policy<{'amd64': 'm'}> +CONFIG_LEDS_PCA955X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PCA955X_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_PCA963X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_WM831X_STATUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_DAC124S085 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_REGULATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_BD2802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_INTEL_SS4200 policy<{'amd64': 'm'}> +CONFIG_LEDS_LT3593 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_ADP5520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_NS2 policy<{'armhf': 'm'}> +CONFIG_LEDS_ASIC3 policy<{'armhf': 'y'}> +CONFIG_LEDS_TCA6507 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TLC591XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MAX77650 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM355x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MENF21BMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_IS31FL319X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_IS31FL32XX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_SC27XX_BLTC policy<{'arm64': 'm'}> +CONFIG_LEDS_BLINKM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_POWERNV policy<{'ppc64el': 'm'}> +CONFIG_LEDS_SYSCON policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_PM8058 policy<{'armhf': 'm'}> +CONFIG_LEDS_MLXCPLD policy<{'amd64': 'm'}> +CONFIG_LEDS_MLXREG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_NIC78BX policy<{'amd64': 'm'}> +CONFIG_LEDS_SPI_BYTE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TI_LMU_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3697 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM36274 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TPS6105X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Flash Class Support +CONFIG_LEDS_CLASS_FLASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_AAT1290 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_AS3645A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_LM3601X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_MAX77693 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_KTD2692 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_SGM3140 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Trigger support +CONFIG_LEDS_TRIGGERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_TIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_ONESHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_DISK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_MTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_HEARTBEAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_BACKLIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_CPU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_ACTIVITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_DEFAULT_ON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_TRANSIENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_CAMERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_PANIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LEDS_TRIGGER_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_PATTERN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LEDS_TRIGGER_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> MCB support +CONFIG_MCB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MCB_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MCB_LPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> MIPS Platform Specific Device Drivers + +# Menu: Device Drivers >> MMC/SD/SDIO card support +CONFIG_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PWRSEQ_EMMC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWRSEQ_SD8787 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWRSEQ_SIMPLE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_BLOCK policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MMC_BLOCK_MINORS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_SDIO_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_ARMMMCI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MMC_QCOM_DML policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MMC_STM32_SDMMC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MMC_MESON_GX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_MESON_MX_SDHC policy<{'armhf': 'm'}> +CONFIG_MMC_MESON_MX_SDIO policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_OMAP policy<{'armhf': 'm'}> +CONFIG_MMC_OMAP_HS policy<{'armhf': 'y'}> +CONFIG_MMC_WBSD policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_ALCOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_MXC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_MMC_TIFM_SD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_MVSDIO policy<{'armhf': 'm'}> +CONFIG_MMC_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDRICOH_CS policy<{'amd64': 'm'}> +CONFIG_MMC_TMIO policy<{'armhf': 'm'}> +CONFIG_MMC_SDHI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_SDHI_SYS_DMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_SDHI_INTERNAL_DMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_MMC_CB710 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_VIA_SDMMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_CAVIUM_THUNDERX policy<{'arm64': 'm'}> +CONFIG_MMC_SH_MMCIF policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_VUB300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_USHC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_USDHI6ROL0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_REALTEK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SUNXI policy<{'arm64': 'm'}> +CONFIG_MMC_CQHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_HSQ policy<{'amd64': 'n', 'arm64': 'm', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MMC_TOSHIBA_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_BCM2835 policy<{'arm64': 'm'}> +CONFIG_MMC_MTK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_OWL policy<{'arm64': 'm', 'armhf': 'm'}> +# +CONFIG_MMC_BLOCK note +CONFIG_MMC_TEST flag +CONFIG_MMC_OMAP_HS note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Samsung S3C SD/MMC transfer code + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support +CONFIG_MMC_SDHCI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_RICOH_MMC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MMC_SDHCI_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_MMC_SDHCI_S3C policy<{'armhf': 'm'}> +CONFIG_MMC_SDHCI_S3C_DMA policy<{'armhf': 'y'}> +# +CONFIG_MMC_SDHCI note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support >> SDHCI platform and OF driver helper +CONFIG_MMC_SDHCI_PLTFM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_ARASAN policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_ASPEED policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_AT91 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_ESDHC policy<{'arm64': 'm', 'armhf-generic': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_HLWD policy<{'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OF_DWCMSHC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_CADENCE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_ESDHC_IMX policy<{'arm64': 'm', 'armhf-generic': 'y'}> +CONFIG_MMC_SDHCI_DOVE policy<{'armhf': 'm'}> +CONFIG_MMC_SDHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_MMC_SDHCI_PXAV3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_SDHCI_F_SDH30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_MILBEAUT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_IPROC policy<{'arm64': 'm'}> +CONFIG_MMC_SDHCI_MSM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_SDHCI_SPRD policy<{'arm64': 'm'}> +CONFIG_MMC_SDHCI_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_MMC_SDHCI_XENON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_OMAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MMC_SDHCI_AM654 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_MMC_SDHCI_PLTFM note + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Synopsys DesignWare Memory Card Interface +CONFIG_MMC_DW policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_PLTFM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_BLUEFIELD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_EXYNOS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_HI3798CV200 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_K3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_PCI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MMC_DW_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers +CONFIG_MACINTOSH_DRIVERS policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_MAC_EMUMOUSEBTN policy<{'amd64': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers >> Apple Desktop Bus (ADB) support + +# Menu: Device Drivers >> Macintosh device drivers >> New PowerMac thermal control infrastructure +CONFIG_WINDFARM policy<{'ppc64el': 'm'}> + +# Menu: Device Drivers >> Macintosh device drivers >> Support for PMU based PowerMacs and PowerBooks + +# Menu: Device Drivers >> Mailbox Hardware Support +CONFIG_MAILBOX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARM_MHU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IMX_MBOX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_PLATFORM_MHU policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PL320_MBOX policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARMADA_37XX_RWTM_MBOX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_OMAP2PLUS_MBOX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_OMAP_MBOX_KFIFO_SIZE policy<{'arm64': '256', 'armhf': '256'}> +CONFIG_ROCKCHIP_MBOX policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCC policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ALTERA_MBOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BCM2835_MBOX policy<{'arm64': 'y'}> +CONFIG_TI_MESSAGE_MANAGER policy<{'arm64': 'y'}> +CONFIG_HI3660_MBOX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HI6220_MBOX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MAILBOX_TEST policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_APCS_IPC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TEGRA_HSP_MBOX policy<{'armhf-generic': 'y'}> +CONFIG_XGENE_SLIMPRO_MBOX policy<{'arm64': 'm'}> +CONFIG_BCM_PDC_MBOX policy<{'arm64': 'm'}> +CONFIG_BCM_FLEXRM_MBOX policy<{'arm64': 'm'}> +CONFIG_MTK_CMDQ_MBOX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ZYNQMP_IPI_MBOX policy<{'arm64': 'y'}> +CONFIG_SUN6I_MSGBOX policy<{'arm64': 'y'}> +CONFIG_SPRD_MBOX policy<{'arm64': 'm'}> +CONFIG_QCOM_IPCC policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Memory Controller drivers +CONFIG_MEMORY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARM_PL172_MPMC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TI_EMIF policy<{'armhf': 'm'}> +CONFIG_OMAP_GPMC_DEBUG policy<{'armhf': 'n'}> +CONFIG_TI_EMIF_SRAM policy<{'armhf-generic': 'm'}> +CONFIG_MVEBU_DEVBUS policy<{'armhf': 'y'}> +CONFIG_PL353_SMC policy<{'armhf': 'm'}> +CONFIG_SAMSUNG_MC policy<{'armhf': 'y'}> +CONFIG_EXYNOS5422_DMC policy<{'armhf': 'm'}> +CONFIG_EXYNOS_SROM policy<{'armhf': 'y'}> +CONFIG_TEGRA_MC policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA20_EMC policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA30_EMC policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA124_EMC policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support +CONFIG_MTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MTD_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MTD_BLOCK_RO policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFTL_RW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_INFTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RFD_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SSFDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SM_FTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_OOPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PSTORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SWAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PARTITIONED_MASTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_SPI_NAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_MTD note +CONFIG_MTD_BLOCK note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Enable UBI - Unsorted block images +CONFIG_MTD_UBI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_UBI_WL_THRESHOLD policy<{'amd64': '4096', 'arm64': '4096', 'armhf': '4096', 'ppc64el': '4096'}> +CONFIG_MTD_UBI_BEB_LIMIT policy<{'amd64': '20', 'arm64': '20', 'armhf': '20', 'ppc64el': '20'}> +CONFIG_MTD_UBI_FASTMAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_UBI_GLUEBI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_UBI_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> HyperBus support +CONFIG_MTD_HYPERBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HBMC_AM654 policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> LPDDR & LPDDR2 PCM memory drivers +CONFIG_MTD_LPDDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_QINFO_PROBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_LPDDR2_NVM policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access +CONFIG_MTD_AMD76XROM policy<{'amd64': 'm'}> +CONFIG_MTD_ICHXROM policy<{'amd64': 'm'}> +CONFIG_MTD_ESB2ROM policy<{'amd64': 'm'}> +CONFIG_MTD_CK804XROM policy<{'amd64': 'm'}> +CONFIG_MTD_SCB2_FLASH policy<{'amd64': 'm'}> +CONFIG_MTD_NETtel policy<{'amd64': 'm'}> +CONFIG_MTD_L440GX policy<{'amd64': 'm'}> +CONFIG_MTD_IMPA7 policy<{'armhf': 'm'}> +CONFIG_MTD_INTEL_VR_NOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PLATRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Flash device in physical memory map +CONFIG_MTD_PHYSMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PHYSMAP_GPIO_ADDR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Flash device in physical memory map >> Memory device in physical memory map based on OF description +CONFIG_MTD_PHYSMAP_OF policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_PHYSMAP_VERSATILE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n'}> +CONFIG_MTD_PHYSMAP_GEMINI policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n'}> +CONFIG_MTD_PHYSMAP_IXP4XX policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Flash device in physical memory map >> Physmap compat support +CONFIG_MTD_PHYSMAP_COMPAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Maximum mappable memory available for flash IO + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access >> Support non-linear mappings of flash chips +CONFIG_MTD_COMPLEX_MAPPINGS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_SBC_GXX policy<{'amd64': 'm'}> +CONFIG_MTD_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PCMCIA policy<{'amd64': 'm'}> +CONFIG_MTD_PCMCIA_ANONYMOUS policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> OneNAND Device Support +CONFIG_MTD_ONENAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ONENAND_VERIFY_WRITE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_ONENAND_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ONENAND_OMAP2 policy<{'armhf-generic': 'm'}> +CONFIG_MTD_ONENAND_OTP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_ONENAND_2X_PROGRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_MTD_ONENAND_VERIFY_WRITE note +CONFIG_MTD_ONENAND_OTP flag + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Partition parsers +CONFIG_MTD_CMDLINE_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MTD_OF_PARTS policy<{'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MTD_AR7_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_AFS_PARTS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_SHARPSL_PARTS policy<{'armhf': 'm'}> +# +CONFIG_MTD_CMDLINE_PARTS flag +CONFIG_MTD_OF_PARTS note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Partition parsers >> RedBoot partition table parsing +CONFIG_MTD_REDBOOT_PARTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK policy<{'amd64': '-1', 'arm64': '-1', 'armhf': '-1', 'ppc64el': '-1'}> +CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_REDBOOT_PARTS_READONLY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers +CONFIG_MTD_CFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_JEDECPROBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_INTELEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_AMDSTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_CFI_STAA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_RAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_ABSENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options +CONFIG_MTD_CFI_ADV_OPTIONS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options >> Flash cmd/query data swapping + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options >> Specific CFI Flash geometry selection +CONFIG_MTD_MAP_BANK_WIDTH_1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MAP_BANK_WIDTH_2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MAP_BANK_WIDTH_4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_CFI_I1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_CFI_I2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Raw/Parallel NAND Device Support +CONFIG_MTD_RAW_NAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_ECC_SW_BCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_NAND_DENALI_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DENALI_DT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_OMAP2 policy<{'armhf': 'y'}> +CONFIG_MTD_NAND_OMAP_BCH policy<{'armhf': 'y'}> +CONFIG_MTD_NAND_CAFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_ORION policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_MARVELL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_TMIO policy<{'armhf': 'm'}> +CONFIG_MTD_NAND_BRCMNAND policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_GPMI_NAND policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_MTD_NAND_FSL_IFC policy<{'arm64': 'm'}> +CONFIG_MTD_NAND_VF610_NFC policy<{'armhf-generic': 'n'}> +CONFIG_MTD_NAND_MXC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_MTD_NAND_SUNXI policy<{'arm64': 'n'}> +CONFIG_MTD_NAND_HISI504 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_MTK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_MXIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_MTD_NAND_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTD_NAND_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_CADENCE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_ARASAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_NANDSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_RICOH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DISKONCHIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_MTD_RAW_NAND note +CONFIG_MTD_NAND_OMAP2 note +CONFIG_MTD_NAND_OMAP_BCH note +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Raw/Parallel NAND Device Support >> JZ4780 NAND controller + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> SPI NOR device support +CONFIG_MTD_SPI_NOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_ASPEED_SMC policy<{'armhf': 'm'}> +CONFIG_SPI_CADENCE_QUADSPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_HISI_SFC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_INTEL_SPI_PCI policy<{'amd64': 'n'}> +CONFIG_SPI_INTEL_SPI_PLATFORM policy<{'amd64': 'n'}> +# +CONFIG_SPI_INTEL_SPI_PCI mark note +CONFIG_SPI_INTEL_SPI_PLATFORM mark note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Self-contained MTD device drivers +CONFIG_MTD_PMC551 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PMC551_BUGFIX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_PMC551_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_DATAFLASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_DATAFLASH_WRITE_VERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MTD_DATAFLASH_OTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MTD_MCHP23K256 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_SST25L policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_BCM47XXSFLASH policy<{'armhf': 'm'}> +CONFIG_MTD_SLRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_PHRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_MTDRAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTDRAM_TOTAL_SIZE policy<{'amd64': '4096', 'arm64': '4096', 'armhf': '4096', 'ppc64el': '4096'}> +CONFIG_MTDRAM_ERASE_SIZE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128'}> +CONFIG_MTD_BLOCK2MTD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTD_POWERNV_FLASH policy<{'ppc64el': 'm'}> +CONFIG_MTD_DOCG3 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_MTD_DOCG3 mark note + +# Menu: Device Drivers >> Microsoft Hyper-V guest support +CONFIG_HYPERV policy<{'amd64': 'm'}> +CONFIG_HYPERV_UTILS policy<{'amd64': 'm'}> +CONFIG_HYPERV_BALLOON policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Misc devices +CONFIG_AD525X_DPOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AD525X_DPOT_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD525X_DPOT_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DUMMY_IRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IBM_ASM policy<{'amd64': 'm'}> +CONFIG_IBMVMC policy<{'ppc64el': 'm'}> +CONFIG_PHANTOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TIFM_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TIFM_7XX1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ICS932S401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ENCLOSURE_SERVICES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SGI_XP policy<{'amd64': 'm'}> +CONFIG_HP_ILO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QCOM_COINCELL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_FASTRPC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SGI_GRU policy<{'amd64': 'm'}> +CONFIG_SGI_GRU_DEBUG policy<{'amd64': 'n'}> +CONFIG_APDS9802ALS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ISL29003 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ISL29020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SENSORS_TSL2550 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SENSORS_BH1770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SENSORS_APDS990X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HMC6352 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DS1682 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_VMWARE_BALLOON policy<{'amd64': 'm'}> +CONFIG_LATTICE_ECP3_CONFIG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCI_ENDPOINT_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XILINX_SDFEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PVPANIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CB710_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CB710_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SENSORS_LIS3_SPI policy<{'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SENSORS_LIS3_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ALTERA_STAPL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INTEL_MEI policy<{'amd64': 'm'}> +CONFIG_INTEL_MEI_ME policy<{'amd64': 'm'}> +CONFIG_INTEL_MEI_TXE policy<{'amd64': 'm'}> +CONFIG_INTEL_MEI_HDCP policy<{'amd64': 'm'}> +CONFIG_VMWARE_VMCI policy<{'amd64': 'm'}> +CONFIG_ECHO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CXL policy<{'ppc64el': 'm'}> +CONFIG_OCXL policy<{'ppc64el': 'm'}> +CONFIG_MISC_ALCOR_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MISC_RTSX_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MISC_RTSX_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HABANA_AI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UACCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_CS5535_MFGPT note + +# Menu: Device Drivers >> Misc devices >> EEPROM support +CONFIG_EEPROM_AT24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_AT25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_MAX6875 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_93CX6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_93XX46 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_EEPROM_IDT_89HPESX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EEPROM_EE1004 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Misc devices >> GenWQE PCIe Accelerator +CONFIG_GENWQE policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY policy<{'amd64': '0', 'arm64': '0', 'ppc64el': '0', 's390x': '0'}> + +# Menu: Device Drivers >> Misc devices >> Intel MIC & related support +CONFIG_INTEL_MIC_BUS policy<{'amd64': 'm'}> +CONFIG_SCIF_BUS policy<{'amd64': 'm'}> +CONFIG_SCIF policy<{'amd64': 'm'}> +CONFIG_MIC_COSM policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Misc devices >> Intel MIC & related support >> VOP Bus Driver +CONFIG_VOP_BUS policy<{'amd64': 'm', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INTEL_MIC_HOST policy<{'amd64': 'm'}> +CONFIG_INTEL_MIC_CARD policy<{'amd64': 'm'}> +CONFIG_VOP policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Misc devices >> Silicon Labs C2 port support +CONFIG_C2PORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_C2PORT_DURAMAR_2150 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Misc devices >> Texas Instruments shared transport line discipline +CONFIG_TI_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Multifunction device drivers +CONFIG_MFD_ALTERA_SYSMGR policy<{'arm64': 'y'}> +CONFIG_MFD_ACT8945A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_SUN4I_GPADC policy<{'arm64': 'm'}> +CONFIG_MFD_AS3711 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_AS3722 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PMIC_ADP5520 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_AAT2870_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_ATMEL_FLEXCOM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_ATMEL_HLCDC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_BCM590XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_BD9571MWV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_AC100 policy<{'arm64': 'n'}> +CONFIG_MFD_AXP20X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_AXP20X_RSB policy<{'arm64': 'm'}> +CONFIG_MFD_CROS_EC_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_MFD_ASIC3 policy<{'armhf': 'y'}> +CONFIG_PMIC_DA903X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9052_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9052_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9055 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_DA9062 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_DA9063 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_DA9150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_EXYNOS_LPASS policy<{'armhf': 'm'}> +CONFIG_MFD_GATEWORKS_GSC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MC13XXX_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MC13XXX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MP2629 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_HI6421_PMIC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_HI655X_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HTC_PASIC3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HTC_I2CPLD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_INTEL_QUARK_I2C_GPIO policy<{'amd64': 'm'}> +CONFIG_LPC_ICH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_LPC_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_INTEL_SOC_PMIC policy<{'amd64': 'y'}> +CONFIG_INTEL_SOC_PMIC_BXTWC policy<{'amd64': 'm'}> +CONFIG_INTEL_SOC_PMIC_CHTWC policy<{'amd64': 'y'}> +CONFIG_INTEL_SOC_PMIC_CHTDC_TI policy<{'amd64': 'm'}> +CONFIG_INTEL_SOC_PMIC_MRFLD policy<{'amd64': 'm'}> +CONFIG_MFD_INTEL_LPSS_ACPI policy<{'amd64': 'm'}> +CONFIG_MFD_INTEL_LPSS_PCI policy<{'amd64': 'm'}> +CONFIG_MFD_INTEL_MSIC policy<{'amd64': 'y'}> +CONFIG_MFD_INTEL_PMC_BXT policy<{'amd64': 'm'}> +CONFIG_MFD_IQS62X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_JANZ_CMODIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_KEMPLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_88PM800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_88PM805 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_88PM860X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX14577 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_MAX77620 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX77650 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MAX77686 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX77693 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_MAX77843 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MAX8925 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8997 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MAX8998 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_MT6360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MENF21BMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EZX_PCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_VIPERBOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RETU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PCF50633_ADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCF50633_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_UCB1400_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_PM8XXX policy<{'armhf': 'm'}> +CONFIG_MFD_QCOM_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MFD_SPMI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MFD_RDC321X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_RC5T583 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_RN5T618 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_SEC_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SI476X_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_SM501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_SM501_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_SMSC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SC27XX_PMIC policy<{'arm64': 'm'}> +CONFIG_ABX500_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AB3100_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_AB3100_OTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_STMPE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_SUN6I_PRCM policy<{'arm64': 'y'}> +CONFIG_MFD_SYSCON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_TI_AM335X_TSCADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_LP8788 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TI_LMU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_OMAP_USB_HOST policy<{'armhf': 'y'}> +CONFIG_MFD_PALMAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TPS6105X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TPS65010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_TPS65086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_TPS65090 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65217 policy<{'arm64': 'm', 'armhf': 'y', 'ppc64el': 'n'}> +CONFIG_MFD_TPS68470 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_MFD_TI_LP873X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_TI_LP87565 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TPS65218 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_TPS6586X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65910 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS65912_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MFD_TPS65912_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_TPS80031 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TWL4030_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TWL4030_POWER policy<{'armhf': 'y'}> +CONFIG_MFD_TWL4030_AUDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_TWL6040_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WL1273_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_LM3533 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_TC3589X policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_T7L66XB policy<{'armhf': 'y'}> +CONFIG_MFD_TC6387XB policy<{'armhf': 'y'}> +CONFIG_MFD_TC6393XB policy<{'armhf': 'y'}> +CONFIG_MFD_TQMX86 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_VX855 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_LOCHNAGAR policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_ARIZONA_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_ARIZONA_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_CS47L24 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM5102 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM5110 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8997 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8998 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8400 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM831X_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM831X_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8350_I2C policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_ROHM_BD718XX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_ROHM_BD70528 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_ROHM_BD71828 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_STPMIC1 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_STMFX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_WCD934X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_VEXPRESS_SYSREG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RAVE_SP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_MFD_SM501 note +CONFIG_MFD_TPS65217 mark note + +# Menu: Device Drivers >> Multifunction device drivers >> Cirrus Logic Madera codecs +CONFIG_MFD_MADERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MFD_MADERA_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_MADERA_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MFD_CS47L15 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CS47L35 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CS47L85 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CS47L90 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MFD_CS47L92 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multifunction device drivers >> Multimedia Capabilities Port drivers + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE Interface Drivers +CONFIG_STMPE_I2C policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_STMPE_SPI policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support +CONFIG_MEDIA_SUPPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEDIA_SUPPORT_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_SUBDRV_AUTOSELECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Digital TV options +CONFIG_DVB_MMAP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_NET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_MAX_ADAPTERS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_DVB_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_DEMUX_SECTION_LOSS_LOG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_ULE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_DVB_ULE_DEBUG flag + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers +CONFIG_DVB_DUMMY_FE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IR_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_DVB_DUMMY_FE note + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Audio decoders, processors and mixers +CONFIG_VIDEO_TVAUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TDA7432 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TDA9840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TDA1997X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TEA6415C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TEA6420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MSP3400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CS3308 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CS5345 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CS53L32A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TLV320AIC23B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_UDA1342 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_WM8775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_WM8739 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VP27SMPX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SONY_BTF_MPX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Audio/Video compression chips +CONFIG_VIDEO_SAA6752HS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Camera sensor devices +CONFIG_VIDEO_HI556 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX214 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX219 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX258 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX274 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX290 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX319 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IMX355 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV2640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV2659 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV2680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV2685 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV2740 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5640 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5645 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5647 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV6650 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5670 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5675 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV5695 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7251 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV772X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7670 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV7740 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV8856 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV9640 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV9650 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OV13858 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VS6624 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9M001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9M032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9M111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9P031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9T001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9T112 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9V011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9V032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MT9V111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SR030PC30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_NOON010PC30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_M5MOLS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_RJ54N1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_S5K6AA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_S5K6A3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_S5K4ECGX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_S5K5BAF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SMIAPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ET8EK8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_S5C73M3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Customise DVB Frontends +CONFIG_DVB_STB0899 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STB6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV090x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV6110x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV6111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MXL5XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_M88DS3103 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRXK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA18271C2DD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI2165 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MN88472 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MN88473 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24123 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MT312 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10036 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10039 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0288 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STB6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0299 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV6110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA8083 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA8261 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_VES1X93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_ITD1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_CX24113 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA826X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUA6100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24116 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24117 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX24120 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI21XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TS2020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DS3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MB86A16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10071 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP8870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP887X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX22700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CX22702 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1432 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRXD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_L64781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA1004X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NXT6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MT352 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZL10353 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB3000MB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB3000MC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB7000M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB7000P policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB9000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10048 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AF9013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_EC100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0367 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2820R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2841ER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2832 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_RTL2832_SDR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SI2168 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ZD1301_DEMOD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2880 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_VES1820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10021 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA10023 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_STV0297 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NXT200X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_OR51211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_OR51132 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BCM3510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT330X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT3305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGDT3306A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LG2160 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1409 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AU8522_DTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AU8522_V4L policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S5H1411 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_S921 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DIB8000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MB86A20S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TC90522 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MN88443X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PLL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_DIB0070 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TUNER_DIB0090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DRX39XYJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBH25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBH29 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBP21 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LNBP22 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6405 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6421 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ISL6423 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_A8293 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGS8GL5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_LGS8GXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ATBM8830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TDA665x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_IX2505V policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_M88RS2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AF9033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_HORUS3A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_ASCOT2E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_HELENE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_CXD2099 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_SP2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Customize TV tuners +CONFIG_MEDIA_TUNER_SIMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18250 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA8290 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA827X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18271 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA9887 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TEA5761 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TEA5767 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MSI001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT20XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2266 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MT2131 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_QT1010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC2028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_XC4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL5005S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL5007T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MC44S803 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MAX2165 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18218 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0011 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0012 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC0013 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TDA18212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_E4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_FC2580 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_M88RS6000T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_TUA9001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_SI2157 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_IT913X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_R820T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_MXL301RF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_QM1D1C0042 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_TUNER_QM1D1B0004 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Flash devices +CONFIG_VIDEO_ADP1653 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_LM3560 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_LM3646 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Lens drivers +CONFIG_VIDEO_AD5820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AK7375 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_DW9714 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_DW9807_VCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Media SPI Adapters +CONFIG_CXD2880_SPI_DRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Miscellaneous helper chips +CONFIG_VIDEO_THS7303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_M52790 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ST_MIPID02 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> RDS decoders +CONFIG_VIDEO_SAA6588 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> SDR tuner chips +CONFIG_SDR_MAX2175 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> SPI helper chips +CONFIG_VIDEO_GS1662 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Video decoders +CONFIG_VIDEO_ADV7180 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7183 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV748X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7604 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7604_CEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_ADV7842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7842_CEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_BT819 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_BT856 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_BT866 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_KS0127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ML86V7667 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA711X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TC358743 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TC358743_CEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_TVP514X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TVP5150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TVP7002 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW2804 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW9903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW9906 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW9910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VPX3220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA717X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Video encoders +CONFIG_VIDEO_SAA7127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7185 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7170 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7175 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7343 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7393 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_ADV7511 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ADV7511_CEC policy<{'amd64': 'y'}> +CONFIG_VIDEO_AD9389B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AK881X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_THS8200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media ancillary drivers >> Video improvement chips +CONFIG_VIDEO_UPD64031A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_UPD64083 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media controller options +CONFIG_MEDIA_CONTROLLER_DVB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media core support +CONFIG_VIDEO_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_CONTROLLER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media device types +CONFIG_MEDIA_CAMERA_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_ANALOG_TV_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_DIGITAL_TV_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_RADIO_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_SDR_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_PLATFORM_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MEDIA_TEST_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers +CONFIG_SMS_SDIO_DRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_FIREDTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SMS_SIANO_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SMS_SIANO_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> DVB platform devices +CONFIG_DVB_PLATFORM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_C8SECTPFE policy<{'armhf': 'n'}> +# +CONFIG_DVB_C8SECTPFE flag + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media PCI Adapters +CONFIG_VIDEO_PCI_SKELETON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MEDIA_PCI_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_MEYE policy<{'amd64': 'm'}> +CONFIG_VIDEO_SOLO6X10 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW5864 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW68 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TW686X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_HEXIUM_GEMINI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_HEXIUM_ORION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MXB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_DT3155 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX18 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX18_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX23885 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEDIA_ALTERA_CI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25821 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX25821_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_BT848 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BT8XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_COBALT policy<{'amd64': 'm'}> +CONFIG_DVB_AV7110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_AV7110_OSD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_B2C2_FLEXCOP_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_PLUTO2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DM1105 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PT1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_PT3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MANTIS_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_MANTIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_HOPPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NGENE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DDBRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_DDBRIDGE_MSIENABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_SMIPCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_NETUP_UNIDVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IPU3_CIO2 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media PCI Adapters >> Conexant 2388x (bt878 successor) support +CONFIG_VIDEO_CX88 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_BLACKBIRD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX88_ENABLE_VP3054 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media PCI Adapters >> Conexant cx23416/cx23415 MPEG encoder/decoder support +CONFIG_VIDEO_IVTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_IVTV_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_FB_IVTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_FB_IVTV_FORCE_PAT policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media PCI Adapters >> Philips SAA7134 support +CONFIG_VIDEO_SAA7134 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_SAA7134_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAA7134_GO7007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media PCI Adapters >> SAA7146 DVB cards (aka Budget, Nova-PCI) +CONFIG_DVB_BUDGET_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_CI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_AV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_BUDGET_PATCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters +CONFIG_MEDIA_USB_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_VIDEO_CLASS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_PWC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PWC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_PWC_INPUT_EVDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CPIA2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ZR364XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STKWEBCAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_S2255 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_USBTV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_PVRUSB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_PVRUSB2_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_PVRUSB2_DVB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_PVRUSB2_DEBUGIFC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_HDPVR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_STK1160_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_LOADER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_GO7007_USB_S2250_BOARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AU0828 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_AU0828_V4L2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_AU0828_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_TM6000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TM6000_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_TM6000_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TTUSB_BUDGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_TTUSB_DEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SMS_USB_DRV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_AS102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AIRSPY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HACKRF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MSI2500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters >> Conexant cx231xx USB video capture support +CONFIG_VIDEO_CX231XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX231XX_RC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CX231XX_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CX231XX_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters >> Empia EM28xx USB devices support +CONFIG_VIDEO_EM28XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_V4L2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_ALSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_DVB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_EM28XX_RC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters >> GSPCA based webcams +CONFIG_USB_GSPCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_M5602 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STV06XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GL860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_BENQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_CONEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_CPIA1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_DTCS033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_ETOMS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_FINEPIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_JEILINJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_JL2005BCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_KINECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_KONICA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_MARS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_MR97310A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_NW80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV519 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV534 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_OV534_9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC207 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC7302 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_PAC7311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SE401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SN9C2028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SN9C20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SONIXB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SONIXJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA505 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA506 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA508 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA561 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SPCA1528 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ905 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ905C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SQ930X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STK014 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STK1135 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_STV0680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_SUNPLUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_T613 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TOPRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TOUPTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_TV8532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_VC032X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_VICAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_XIRLINK_CIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GSPCA_ZC3XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters >> Support for various USB DVB devices +CONFIG_DVB_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_USB_A800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIBUSB_MB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIBUSB_MB_FAULTY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DVB_USB_DIBUSB_MC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIB0700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_UMT_010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CXUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CXUSB_ANALOG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DVB_USB_M920X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DIGITV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_VP7045 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_VP702X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_GP8PSK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_NOVA_T_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_TTUSB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DTT200U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_OPERA1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9005 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9005_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_PCTV452E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DW2102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CINERGY_T2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DTV5100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AZ6027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_TECHNISAT_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Media USB Adapters >> Support for various USB DVB devices v2 +CONFIG_DVB_USB_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9015 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AF9035 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_ANYSEE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AU6610 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_AZ6007 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_CE6230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_EC168 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_GL861 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_LME2510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_MXL111SF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_RTL28XXU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_DVBSKY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DVB_USB_ZD1301 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Memory-to-memory multimedia devices +CONFIG_V4L_MEM2MEM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CODA policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_VIDEO_IMX_PXP policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_VIDEO_MEDIATEK_VPU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_MEM2MEM_DEINTERLACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_G2D policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_JPEG policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_S5P_MFC policy<{'armhf': 'm'}> +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC policy<{'armhf': 'm'}> +CONFIG_VIDEO_RENESAS_FDP1 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_RENESAS_JPU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_RENESAS_FCP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_RENESAS_VSP1 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_ROCKCHIP_RGA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_TI_VPE policy<{'armhf': 'm'}> +CONFIG_VIDEO_TI_VPE_DEBUG policy<{'armhf': 'n'}> +CONFIG_VIDEO_QCOM_VENUS policy<{'arm64': 'm'}> +CONFIG_VIDEO_SUN8I_DEINTERLACE policy<{'arm64': 'm'}> +CONFIG_VIDEO_SUN8I_ROTATE policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Radio Adapters +CONFIG_RADIO_ADAPTERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RADIO_SI470X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SI470X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SI470X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SI476X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MR800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DSBR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_MAXIRADIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SHARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SHARK2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_KEENE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RAREMONO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MA901 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_TEA5764 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_SAA7706H policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_TEF6862 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_WL1273 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RADIO_WL128X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Radio Adapters >> ISA radio devices + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> Radio Adapters >> Silicon Labs Si4713 FM Radio with RDS Transmitter support +CONFIG_RADIO_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PLATFORM_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I2C_SI4713 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> SDR platform devices +CONFIG_SDR_PLATFORM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_RCAR_DRIF policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> V4L platform devices +CONFIG_V4L_PLATFORM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CAFE_CCIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VIA_CAMERA policy<{'amd64': 'm'}> +CONFIG_VIDEO_CADENCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_CADENCE_CSI2RX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_CADENCE_CSI2TX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OMAP2_VOUT policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_ASPEED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_MUX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_OMAP3 policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_OMAP3_DEBUG policy<{'armhf-generic': 'n'}> +CONFIG_VIDEO_QCOM_CAMSS policy<{'arm64': 'm'}> +CONFIG_VIDEO_RENESAS_CEU policy<{'armhf': 'm'}> +CONFIG_VIDEO_XILINX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_XILINX_TPG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_XILINX_VTC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_RCAR_CSI2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_RCAR_VIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_SUN4I_CSI policy<{'arm64': 'm'}> +CONFIG_VIDEO_SUN6I_CSI policy<{'arm64': 'm'}> +CONFIG_VIDEO_TI_CAL policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> V4L platform devices >> Samsung S5P/EXYNOS4 SoC series Camera Subsystem driver +CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Media drivers >> V4L test drivers +CONFIG_V4L_TEST_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_VIMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VIVID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VIVID_CEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_VIVID_MAX_DEVS policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'ppc64el': '64'}> +CONFIG_VIDEO_VIM2M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIDEO_VICODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_VIDEO_VIMC note + +# Menu: Device Drivers >> Multimedia support >> Video4Linux options +CONFIG_VIDEO_ADV_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_FIXED_MINOR_RANGES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_VIDEO_V4L2_SUBDEV_API policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_V4L2_FLASH_LED_CLASS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) +CONFIG_MD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Block device as cache +CONFIG_BCACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BCACHE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BCACHE_CLOSURES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BCACHE_ASYNC_REGISTRAION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support +CONFIG_BLK_DEV_DM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_DM_UNSTRIPED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CRYPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_SNAPSHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_THIN_PROVISIONING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CACHE_SMQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_WRITECACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_EBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_ERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_CLONE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MIRROR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_LOG_USERSPACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_RAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_ZERO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_DELAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_DUST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DM_INIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_UEVENT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_FLAKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_VERITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DM_VERITY_FEC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DM_SWITCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_LOG_WRITES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_INTEGRITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_ZONED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_BLK_DEV_DM mark note + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support >> Multipath target +CONFIG_DM_MULTIPATH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH_QL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DM_MULTIPATH_HST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> RAID support +CONFIG_BLK_DEV_MD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MD_AUTODETECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MD_LINEAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID10 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_RAID456 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_MULTIPATH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_MD_FAULTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MD_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Multiplexer drivers +CONFIG_MUX_ADG792A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MUX_ADGS1408 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MUX_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MUX_MMIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> NVDIMM (Non-Volatile Memory Device) Support +CONFIG_LIBNVDIMM policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_BLK_DEV_PMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_ND_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_BTT policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'y'}> +CONFIG_NVDIMM_PFN policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_NVDIMM_DAX policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_OF_PMEM policy<{'arm64': 'm', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> NVME Support +CONFIG_BLK_DEV_NVME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_MULTIPATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NVME_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NVME_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_BLK_DEV_NVME mark note + +# Menu: Device Drivers >> NVME Support >> NVMe Target support +CONFIG_NVME_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_TARGET_LOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_TARGET_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_TARGET_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVME_TARGET_FCLOOP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NVME_TARGET_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> NVMEM Support +CONFIG_NVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NVMEM_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NVMEM_IMX_IIM policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_NVMEM_IMX_OCOTP policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_NVMEM_IMX_OCOTP_SCU policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_MTK_EFUSE policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_QCOM_QFPROM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NVMEM_SPMI_SDAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ROCKCHIP_EFUSE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ROCKCHIP_OTP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NVMEM_BCM_OCOTP policy<{'arm64': 'm'}> +CONFIG_NVMEM_SUNXI_SID policy<{'arm64': 'm'}> +CONFIG_UNIPHIER_EFUSE policy<{'armhf': 'm'}> +CONFIG_NVMEM_VF610_OCOTP policy<{'armhf-generic': 'n'}> +CONFIG_MESON_EFUSE policy<{'arm64-generic': 'm'}> +CONFIG_MESON_MX_EFUSE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NVMEM_SNVS_LPGPR policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RAVE_SP_EEPROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SC27XX_EFUSE policy<{'arm64': 'm'}> +CONFIG_NVMEM_ZYNQMP policy<{'arm64': 'y'}> +CONFIG_SPRD_EFUSE policy<{'arm64': 'm'}> +# +CONFIG_NVMEM flag note + +# Menu: Device Drivers >> Network device support +CONFIG_NETDEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HIPPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_QCOM_IPA policy<{'arm64': 'm'}> +CONFIG_NET_SB1000 policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_MICREL_KS8995MA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XEN_NETDEV_FRONTEND policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_NETDEV_BACKEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64-generic': 'm', 'armhf': 'm', 's390x': 'n'}> +CONFIG_FUJITSU_ES policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_USB4_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HYPERV_NET policy<{'amd64': 'm'}> +CONFIG_NETDEVSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FAILOVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_HIPPI note +CONFIG_XEN_NETDEV_FRONTEND note + +# Menu: Device Drivers >> Network device support >> ARCnet support +CONFIG_ARCNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ARCNET_1201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_1051 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_CAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM90xx policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM90xxIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_RIM_I policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> ARCnet support >> ARCnet COM20020 chipset driver +CONFIG_ARCNET_COM20020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM20020_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCNET_COM20020_CS policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Network device support >> ATM drivers +CONFIG_ATM_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATM_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_LANAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_ENI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_ENI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_FIRESTREAM policy<{'amd64': 'm'}> +CONFIG_ATM_ZATM policy<{'amd64': 'm'}> +CONFIG_ATM_ZATM_DEBUG policy<{'amd64': 'n'}> +CONFIG_ATM_NICSTAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_NICSTAR_USE_SUNI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_NICSTAR_USE_IDT77105 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_IDT77252 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_IDT77252_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_IDT77252_RCV_ALL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_AMBASSADOR policy<{'amd64': 'm'}> +CONFIG_ATM_AMBASSADOR_DEBUG policy<{'amd64': 'n'}> +CONFIG_ATM_HORIZON policy<{'amd64': 'm'}> +CONFIG_ATM_HORIZON_DEBUG policy<{'amd64': 'n'}> +CONFIG_ATM_IA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_IA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_HE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_HE_USE_SUNI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATM_SOLOS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_ATM_NICSTAR_USE_IDT77105 flag + +# Menu: Device Drivers >> Network device support >> ATM drivers >> FORE Systems 200E-series +CONFIG_ATM_FORE200E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_FORE200E_USE_TASKLET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_FORE200E_TX_RETRY policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'ppc64el': '16'}> +CONFIG_ATM_FORE200E_DEBUG policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Network device support >> ATM drivers >> Fine-tune burst settings +CONFIG_ATM_ENI_TUNE_BURST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> CAIF transport drivers +CONFIG_CAIF_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CAIF_TTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_SPI_SLAVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_SPI_SYNC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CAIF_HSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers +CONFIG_NET_DSA_BCM_SF2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_LOOP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NET_DSA_LANTIQ_GSWIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MT7530 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MV88E6060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MV88E6XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MV88E6XXX_GLOBAL2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_DSA_MV88E6XXX_PTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_DSA_MSCC_FELIX policy<{'arm64': 'm', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NET_DSA_AR9331 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_SJA1105 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_SJA1105_PTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_DSA_SJA1105_TAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_DSA_SJA1105_VL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_DSA_QCA8K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_REALTEK_SMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_SMSC_LAN9303_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_SMSC_LAN9303_MDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_VITESSE_VSC73XX_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_NET_DSA_LOOP flag + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers >> Broadcom BCM53xx managed switch support +CONFIG_B53 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B53_SPI_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B53_MDIO_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B53_MMAP_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B53_SRAB_DRIVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B53_SERDES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers >> Microchip KSZ8795 series switch support +CONFIG_NET_DSA_MICROCHIP_KSZ8795 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MICROCHIP_KSZ8795_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers >> Microchip KSZ9477 series switch support +CONFIG_NET_DSA_MICROCHIP_KSZ9477 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support +CONFIG_ETHERNET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_VENDOR_ADAPTEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ADAPTEC_STARFIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_AGERE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ET131X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_ALACRITECH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLICOSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_VENDOR_ALLWINNER policy<{'arm64': 'y'}> +CONFIG_SUN4I_EMAC policy<{'arm64': 'n'}> +CONFIG_NET_VENDOR_ALTEON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ACENIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ACENIC_OMIT_TIGON_I policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ALTERA_TSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_AMAZON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ENA_ETHERNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_XGENE policy<{'arm64': 'm'}> +CONFIG_NET_XGENE_V2 policy<{'arm64': 'm'}> +CONFIG_NET_VENDOR_AQUANTIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AQTION policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_NET_VENDOR_ARC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EMAC_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NET_VENDOR_AURORA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AURORA_NB8800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_VENDOR_BROCADE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_BNA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_CADENCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MACB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MACB_USE_HWSTAMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MACB_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_CALXEDA_XGMAC policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_CISCO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ENIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_CORTINA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GEMINI_ETHERNET policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CX_ECAT policy<{'amd64': 'm'}> +CONFIG_DM9000 policy<{'armhf': 'm'}> +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL policy<{'armhf': 'n'}> +CONFIG_DNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_DEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_DLINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DL2K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SUNDANCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SUNDANCE_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_EMULEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_EZCHIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_FARADAY policy<{'armhf': 'y'}> +CONFIG_FTMAC100 policy<{'armhf': 'm'}> +CONFIG_FTGMAC100 policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_FUJITSU policy<{'amd64': 'y'}> +CONFIG_PCMCIA_FMVJ18X policy<{'amd64': 'm'}> +CONFIG_NET_VENDOR_GOOGLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_GVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_HUAWEI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HINIC policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_JME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_MEDIATEK policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_NET_VENDOR_MICROSEMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MSCC_OCELOT_SWITCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MSCC_OCELOT_SWITCH_OCELOT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_MYRI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MYRI10GE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MYRI10GE_DCA policy<{'amd64': 'y'}> +CONFIG_FEALNX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_NETERION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_S2IO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_VXGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_VXGE_DEBUG_TRACE_ALL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_NETRONOME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_VENDOR_NI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NI_XGE_MANAGEMENT_ENET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_NVIDIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_FORCEDETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_OKI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ETHOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_PACKET_ENGINES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HAMACHI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_YELLOWFIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NET_VENDOR_PENSANDO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IONIC policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_RDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_R6040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_RENESAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SH_ETH policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RAVB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_NET_VENDOR_ROCKER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ROCKER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SAMSUNG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SXGBE_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SEEQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_SOLARFLARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SFC_FALCON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SFC_FALCON_MTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NET_VENDOR_SILAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SC92031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SIS900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SIS190 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_SOCIONEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SNI_AVE policy<{'armhf': 'm'}> +CONFIG_SNI_NETSEC policy<{'arm64': 'm'}> +CONFIG_NET_VENDOR_STMICRO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NET_VENDOR_SYNOPSYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DWC_XLGMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DWC_XLGMAC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_VENDOR_TEHUTI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TEHUTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_VIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VIA_RHINE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIA_RHINE_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIA_VELOCITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_WIZNET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_WIZNET_W5100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WIZNET_W5300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WIZNET_W5100_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_VENDOR_XIRCOM policy<{'amd64': 'y'}> +CONFIG_PCMCIA_XIRC2PS policy<{'amd64': 'm'}> +# +CONFIG_NET_VENDOR_EMULEX note + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> 3Com devices +CONFIG_NET_VENDOR_3COM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EL3 policy<{'amd64': 'm'}> +CONFIG_PCMCIA_3C574 policy<{'amd64': 'm'}> +CONFIG_PCMCIA_3C589 policy<{'amd64': 'm'}> +CONFIG_VORTEX policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_TYPHOON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> AMD devices +CONFIG_NET_VENDOR_AMD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AMD8111_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCNET32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_NMCLAN policy<{'amd64': 'm'}> +CONFIG_AMD_XGBE policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_AMD_XGBE_DCB policy<{'amd64': 'y', 'arm64': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Apple devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Atheros devices +CONFIG_NET_VENDOR_ATHEROS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATL2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATL1C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ALX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Broadcom devices +CONFIG_NET_VENDOR_BROADCOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_B44 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BCMGENET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BNX2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TIGON3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TIGON3_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BNX2X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BNX2X_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BGMAC_PLATFORM policy<{'arm64': 'y'}> +CONFIG_SYSTEMPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_TIGON3 flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Broadcom devices >> Broadcom NetXtreme-C/E support +CONFIG_BNXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BNXT_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BNXT_FLOWER_OFFLOAD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BNXT_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BNXT_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cavium ethernet drivers +CONFIG_NET_VENDOR_CAVIUM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_THUNDER_NIC_PF policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_THUNDER_NIC_VF policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_THUNDER_NIC_BGX policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_THUNDER_NIC_RGX policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_CAVIUM_PTP policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_LIQUIDIO policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_LIQUIDIO_VF policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Chelsio devices +CONFIG_NET_VENDOR_CHELSIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CHELSIO_T1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T1_1G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHELSIO_T4_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T4_FCOE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CHELSIO_T4VF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cirrus devices +CONFIG_NET_VENDOR_CIRRUS policy<{'amd64': 'y', 'armhf': 'y'}> +CONFIG_CS89x0 policy<{'amd64': 'm', 'armhf': 'm'}> +CONFIG_CS89x0_PLATFORM policy<{'amd64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices +CONFIG_NET_TULIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DE2104X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DE2104X_DSL policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_DE4X5 policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_WINBOND_840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DM9102 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ULI526X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_XIRCOM policy<{'amd64': 'm', 'arm64': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices >> DECchip Tulip (dc2114x) PCI support +CONFIG_TULIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TULIP_MWI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_TULIP_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_TULIP_NAPI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_TULIP_NAPI flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices +CONFIG_NET_VENDOR_FREESCALE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FEC policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_FSL_FMAN policy<{'arm64': 'y'}> +CONFIG_FSL_PQ_MDIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_XGMAC_MDIO policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GIANFAR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_DPAA_ETH policy<{'arm64': 'm'}> +CONFIG_FSL_DPAA2_ETH policy<{'arm64': 'm'}> +CONFIG_FSL_DPAA2_ETH_DCB policy<{'arm64': 'y'}> +CONFIG_FSL_DPAA2_PTP_CLOCK policy<{'arm64': 'm'}> +CONFIG_FSL_ENETC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_ENETC_VF policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_ENETC_MDIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_ENETC_PTP_CLOCK policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_ENETC_QOS policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices >> Freescale Ethernet Driver + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Hisilicon devices +CONFIG_NET_VENDOR_HISILICON policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_HIX5HD2_GMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HISI_FEMAC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HIP04_ETH policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HI13X1_GMAC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_HNS_DSAF policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HNS_ENET policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HNS3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HNS3_HCLGE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HNS3_DCB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_HNS3_HCLGEVF policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_HNS3_ENET policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices +CONFIG_NET_VENDOR_IBM policy<{'ppc64el': 'y'}> +CONFIG_IBMVETH policy<{'ppc64el': 'm'}> +CONFIG_IBMVNIC policy<{'ppc64el': 'm'}> +# +CONFIG_IBMVNIC mark note + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices >> IBM EMAC Ethernet support + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel (82586/82593/82596) devices +CONFIG_NET_VENDOR_I825XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices +CONFIG_NET_VENDOR_INTEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_E100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_E1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_E1000E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_E1000E_HWTS policy<{'amd64': 'y'}> +CONFIG_IGB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IGB_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IGB_DCA policy<{'amd64': 'y'}> +CONFIG_IGBVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IXGB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IXGBEVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IXGBEVF_IPSEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_I40E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_I40E_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_I40EVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FM10K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IGC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) 10GbE PCI Express adapters support +CONFIG_IXGBE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IXGBE_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IXGBE_DCA policy<{'amd64': 'y'}> +CONFIG_IXGBE_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IXGBE_IPSEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Marvell devices +CONFIG_NET_VENDOR_MARVELL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MV643XX_ETH policy<{'armhf': 'm'}> +CONFIG_MVMDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MVNETA_BM_ENABLE policy<{'armhf': 'n'}> +CONFIG_MVNETA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MVPP2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PXA168_ETH policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SKGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SKGE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SKGE_GENESIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SKY2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SKY2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_OCTEONTX2_AF policy<{'arm64': 'm'}> +CONFIG_NDC_DIS_DYNAMIC_CACHING policy<{'arm64': 'y'}> +CONFIG_OCTEONTX2_PF policy<{'arm64': 'm'}> +CONFIG_OCTEONTX2_VF policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Mellanox devices +CONFIG_NET_VENDOR_MELLANOX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_EN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX4_EN_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX4_CORE_GEN2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLX5_FPGA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_FPGA_IPSEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_EN_IPSEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_FPGA_TLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLXFW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Mellanox devices >> Mellanox 5th generation network adapters (ConnectX series) Ethernet support +CONFIG_MLX5_CORE_EN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_EN_ARFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_EN_RXNFC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_MPFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_ESWITCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_CLS_ACT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_TC_CT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_CORE_EN_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_CORE_IPOIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_TLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_EN_TLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MLX5_SW_STEERING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Mellanox devices >> Mellanox Technologies Switch ASICs support +CONFIG_MLXSW_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_CORE_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MLXSW_CORE_THERMAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MLXSW_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MLXSW_MINIMAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Mellanox devices >> Mellanox Technologies Switch ASICs support >> PCI bus implementation for Mellanox Technologies Switch ASICs +CONFIG_MLXSW_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_SWITCHIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_SWITCHX2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_SPECTRUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MLXSW_SPECTRUM_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Micrel devices +CONFIG_NET_VENDOR_MICREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KS8842 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KS8851 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KS8851_MLL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KSZ884X_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Microchip devices +CONFIG_NET_VENDOR_MICROCHIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ENC28J60 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ENC28J60_WRITEVERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ENCX24J600 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LAN743X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semiconductor 8390 devices +CONFIG_NET_VENDOR_8390 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PCMCIA_AXNET policy<{'amd64': 'm'}> +CONFIG_AX88796 policy<{'armhf': 'm'}> +CONFIG_AX88796_93CX6 policy<{'armhf': 'n'}> +CONFIG_NE2K_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_PCNET policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semiconductor devices +CONFIG_NET_VENDOR_NATSEMI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_NATSEMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NS83820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Netronome(R) NFP4000/NFP6000 NIC driver +CONFIG_NFP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NFP_APP_FLOWER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NFP_APP_ABM_NIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NFP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices +CONFIG_NET_VENDOR_QLOGIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_QLA3XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NETXEN_NIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QED_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_QEDE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices >> QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support +CONFIG_QLCNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QLCNIC_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_QLCNIC_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_QLCNIC_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Qualcomm devices +CONFIG_NET_VENDOR_QUALCOMM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_QCA7000_SPI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCA7000_UART policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QCOM_EMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RMNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices +CONFIG_NET_VENDOR_REALTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATP policy<{'amd64': 'm'}> +CONFIG_8139CP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_R8169 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices >> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support +CONFIG_8139TOO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_8139TOO_PIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_8139TOO_TUNE_TWISTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_8139TOO_8129 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_8139_OLD_RX_RESET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_8139TOO_TUNE_TWISTER flag + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> SMC (SMSC)/Western Digital devices +CONFIG_NET_VENDOR_SMSC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SMC91X policy<{'arm64': 'y', 'armhf': 'm'}> +CONFIG_PCMCIA_SMC91C92 policy<{'amd64': 'm'}> +CONFIG_EPIC100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SMC911X policy<{'armhf': 'm'}> +CONFIG_SMSC911X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SMSC9420 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> STMicroelectronics Multi-Gigabit Ethernet driver +CONFIG_STMMAC_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_STMMAC_SELFTESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DWMAC_INTEL policy<{'amd64': 'm'}> +CONFIG_STMMAC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> STMicroelectronics Multi-Gigabit Ethernet driver >> STMMAC Platform bus support +CONFIG_STMMAC_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_DWC_QOS_ETH policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DWMAC_IPQ806X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DWMAC_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DWMAC_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DWMAC_QCOM_ETHQOS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DWMAC_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DWMAC_SOCFPGA policy<{'arm64': 'm'}> +CONFIG_DWMAC_SUNXI policy<{'arm64': 'n'}> +CONFIG_DWMAC_SUN8I policy<{'arm64': 'm'}> +CONFIG_DWMAC_IMX8 policy<{'arm64': 'm', 'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> ServerEngines' 10Gbps NIC - BladeEngine +CONFIG_BE2NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BE2NET_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BE2NET_BE2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BE2NET_BE3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BE2NET_LANCER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BE2NET_SKYHAWK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Solarflare SFC9000/SFC9100-family support +CONFIG_SFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SFC_MTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_MCDI_MON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_SRIOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SFC_MCDI_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Sun devices +CONFIG_NET_VENDOR_SUN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HAPPYMEAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SUNGEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CASSINI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NIU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Texas Instruments (TI) devices +CONFIG_NET_VENDOR_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TI_DAVINCI_EMAC policy<{'armhf-generic': 'm'}> +CONFIG_TI_DAVINCI_MDIO policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_TI_CPSW_PHY_SEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_TI_CPSW policy<{'armhf': 'y'}> +CONFIG_TI_CPSW_SWITCHDEV policy<{'armhf': 'm'}> +CONFIG_TI_CPTS policy<{'armhf': 'y'}> +CONFIG_TI_K3_AM65_CPSW_NUSS policy<{'arm64': 'm'}> +CONFIG_TI_K3_AM65_CPTS policy<{'arm64': 'm'}> +CONFIG_TI_AM65_CPSW_TAS policy<{'arm64': 'y'}> +CONFIG_TLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Toshiba devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> WIZnet interface mode +CONFIG_WIZNET_BUS_DIRECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_WIZNET_BUS_INDIRECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_WIZNET_BUS_ANY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Xilinx devices +CONFIG_NET_VENDOR_XILINX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XILINX_AXI_EMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XILINX_LL_TEMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Network device support >> FDDI driver support +CONFIG_FDDI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_DEFXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DEFXX_MMIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SKFP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_DEFXX_MMIO flag + +# Menu: Device Drivers >> Network device support >> IEEE 802.15.4 drivers +CONFIG_IEEE802154_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_FAKELB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_AT86RF230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_AT86RF230_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IEEE802154_MRF24J40 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_CC2520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_ATUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_ADF7242 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_CA8210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_CA8210_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IEEE802154_MCR20A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_HWSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> MDIO bus device drivers +CONFIG_MDIO_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MDIO_ASPEED policy<{'armhf': 'm'}> +CONFIG_MDIO_BCM_IPROC policy<{'arm64': 'n'}> +CONFIG_MDIO_BCM_UNIMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MDIO_BITBANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MDIO_BUS_MUX_BCM_IPROC policy<{'arm64': 'y'}> +CONFIG_MDIO_BUS_MUX_GPIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_BUS_MUX_MESON_G12A policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MDIO_BUS_MUX_MMIOREG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_BUS_MUX_MULTIPLEXER policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_HISI_FEMAC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_IPQ4019 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_IPQ8064 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_MSCC_MIIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MDIO_MVUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_OCTEON policy<{'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_MDIO_SUN4I policy<{'arm64': 'n'}> +CONFIG_MDIO_THUNDER policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MDIO_XGENE policy<{'arm64': 'm'}> +CONFIG_MDIO_XPCS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> Network device support >> Network core driver support +CONFIG_NET_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BONDING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_WIREGUARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_WIREGUARD_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_EQUALIZER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MACVLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MACVTAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPVLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPVTAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VXLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GENEVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BAREUDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_GTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MACSEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETCONSOLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETCONSOLE_DYNAMIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NTB_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RIONET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RIONET_TX_SIZE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128'}> +CONFIG_RIONET_RX_SIZE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128'}> +CONFIG_TUN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TUN_VNET_CROSS_LE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_VETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VIRTIO_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_VRF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VSOCKMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_VIRTIO_NET note flag + +# Menu: Device Drivers >> Network device support >> Network core driver support >> Ethernet team driver support +CONFIG_NET_TEAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_BROADCAST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_ROUNDROBIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_RANDOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TEAM_MODE_LOADBALANCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> PHY Device support and infrastructure +CONFIG_PHYLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_LED_TRIGGER_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SFP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ADIN_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AMD_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AQUANTIA_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AX88796B_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BCM7XXX_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BCM87XX_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BROADCOM_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BCM54140_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BCM84881_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CICADA_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CORTINA_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DAVICOM_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DP83822_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DP83TC811_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DP83848_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DP83867_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DP83869_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FIXED_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_ICPLUS_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INTEL_XWAY_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LSI_ET1011C_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LXT_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MARVELL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MARVELL_10G_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MESON_GXL_PHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MICREL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MICROCHIP_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MICROCHIP_T1_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MICROSEMI_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NATIONAL_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NXP_TJA11XX_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AT803X_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QSEMI_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_REALTEK_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RENESAS_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ROCKCHIP_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SMSC_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STE10XP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TERANETICS_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VITESSE_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XILINX_GMII2RGMII policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Network device support >> PPP (point-to-point protocol) support +CONFIG_PPP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PPP_BSDCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_DEFLATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PPP_MPPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_MULTILINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PPPOATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPPOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPPOL2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_ASYNC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPP_SYNC_TTY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers +CONFIG_LCS policy<{'s390x': 'm'}> +CONFIG_CTCM policy<{'s390x': 'm'}> +CONFIG_NETIUCV policy<{'s390x': 'm'}> +CONFIG_SMSGIUCV policy<{'s390x': 'y'}> +CONFIG_SMSGIUCV_EVENT policy<{'s390x': 'm'}> +CONFIG_ISM policy<{'s390x': 'm'}> +# +CONFIG_ISM mark note + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers >> Gigabit Ethernet device support +CONFIG_QETH policy<{'s390x': 'm'}> +CONFIG_QETH_L2 policy<{'s390x': 'm'}> +CONFIG_QETH_L3 policy<{'s390x': 'm'}> +CONFIG_QETH_OSN policy<{'s390x': 'y'}> +CONFIG_QETH_OSX policy<{'s390x': 'y'}> + +# Menu: Device Drivers >> Network device support >> SLIP (serial line) support +CONFIG_SLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SLIP_COMPRESSED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SLIP_SMART policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SLIP_MODE_SLIP6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters +CONFIG_USB_NET_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CATC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_KAWETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PEGASUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RTL8150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RTL8152 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LAN78XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IPHETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework +CONFIG_USB_USBNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_AX8817X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_AX88179_178A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDCETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_EEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_HUAWEI_CDC_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CDC_MBIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_DM9601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SR9700 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SR9800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SMSC75XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_SMSC95XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_GL620A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_NET1080 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_PLUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_MCS7830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_RNDIS_HOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_ZAURUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CX82310_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_KALMIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_QMI_WWAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_INT51X1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CDC_PHONET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SIERRA_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_VL600 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_CH9200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_AQC111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework >> Simple USB Network Links (CDC Ethernet subset) +CONFIG_USB_NET_CDC_SUBSET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ALI_M5632 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_AN2720 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_BELKIN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ARMLINUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EPSON2888 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_KC2190 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wan interfaces support +CONFIG_WAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LANMEDIA policy<{'amd64': 'm'}> +CONFIG_SLIC_DS26522 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_DLCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DLCI_MAX policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_LAPBETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_X25_ASY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SBNI policy<{'amd64': 'm'}> +CONFIG_SBNI_MULTILINE policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wan interfaces support >> Generic HDLC layer +CONFIG_HDLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_RAW_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_CISCO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_FR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_PPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HDLC_X25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCI200SYN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WANXL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PC300TOO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FARSYNC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FSL_UCC_HDLC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> WiMAX Wireless Broadband devices +CONFIG_WIMAX_I2400M_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WIMAX_I2400M_DEBUG_LEVEL policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN +CONFIG_WLAN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WIRELESS_WDS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_WLAN_VENDOR_ADMTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ADM8211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLAN_VENDOR_ATMEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCI_ATMEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_ATMEL policy<{'amd64': 'm'}> +CONFIG_AT76C50X_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLAN_VENDOR_CISCO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_AIRO policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_AIRO_CS policy<{'amd64': 'm'}> +CONFIG_WLAN_VENDOR_RALINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WLAN_VENDOR_RSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WLAN_VENDOR_ST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CW1200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CW1200_WLAN_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CW1200_WLAN_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLAN_VENDOR_ZYDAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ZD1201 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZD1211RW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZD1211RW_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_WLAN_VENDOR_QUANTENNA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_QTNFMAC_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_RAYCS policy<{'amd64': 'm'}> +CONFIG_PCMCIA_WL3501 policy<{'amd64': 'm'}> +CONFIG_MAC80211_HWSIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET_RNDIS_WLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIRT_WIFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices +CONFIG_WLAN_VENDOR_ATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATH5K_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_BTCOEX_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_HTC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH9K_HTC_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_COMMON_SPECTRAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_AR5523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WCN36XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WCN36XX_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Atheros 5xxx wireless cards support +CONFIG_ATH5K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH5K_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATH5K_TRACER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Atheros 802.11ac wireless cards support +CONFIG_ATH10K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_AHB policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH10K_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH10K_SNOC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ATH10K_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATH10K_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH10K_SPECTRAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH10K_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Atheros 802.11n wireless cards support +CONFIG_ATH9K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH9K_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_AHB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_STATION_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_DYNACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATH9K_WOW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_RFKILL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_CHANNEL_CONTEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_PCOEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATH9K_PCI_NO_EEPROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH9K_HWRNG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Atheros mobile chipsets support +CONFIG_ATH6KL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATH6KL_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATH6KL_TRACING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Linux Community AR9170 802.11n USB support +CONFIG_CARL9170 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CARL9170_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CARL9170_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CARL9170_HWRNG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Qualcomm Technologies 802.11ax chipset support +CONFIG_ATH11K policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ATH11K_DEBUG policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_ATH11K_DEBUGFS policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_ATH11K_TRACING policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros/Qualcomm devices >> Wilocity 60g WiFi card wil6210 support +CONFIG_WIL6210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WIL6210_ISR_COR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WIL6210_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WIL6210_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom devices +CONFIG_WLAN_VENDOR_BROADCOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B43LEGACY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BRCMSMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BRCM_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMDBG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_BRCMDBG flag + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom devices >> Broadcom 43xx wireless support (mac80211 stack) +CONFIG_B43 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_B43_SDIO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_B43_PHY_G policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_N policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_LP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43_PHY_HT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom devices >> Broadcom 43xx wireless support (mac80211 stack) >> Supported bus types +CONFIG_B43_BUSES_BCMA_AND_SSB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43_BUSES_BCMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_B43_BUSES_SSB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom devices >> Broadcom 43xx-legacy data transfer mode +CONFIG_B43LEGACY_DMA_AND_PIO_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_B43LEGACY_DMA_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_B43LEGACY_PIO_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom devices >> Broadcom FullMAC WLAN driver +CONFIG_BRCMFMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BRCMFMAC_SDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMFMAC_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BRCMFMAC_PCIE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel devices +CONFIG_WLAN_VENDOR_INTEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPW2100_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2100_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_LIBIPW_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IWL4965 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IWL3945 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel devices >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection +CONFIG_IPW2200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IPW2200_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_RADIOTAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_PROMISCUOUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_QOS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IPW2200_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel devices >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) +CONFIG_IWLWIFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IWLDVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IWLMVM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IWLWIFI_BCAST_FILTERING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel devices >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) >> Debugging Options +CONFIG_IWLWIFI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IWLWIFI_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IWLWIFI_DEVICE_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel devices >> iwl3945 / iwl4965 Debugging Options +CONFIG_IWLEGACY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IWLEGACY_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intersil devices +CONFIG_WLAN_VENDOR_INTERSIL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PRISM54 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intersil devices >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) +CONFIG_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HERMES_PRISM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_HERMES_CACHE_FW_ON_INIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PLX_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TMD_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NORTEL_HERMES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PCMCIA_HERMES policy<{'amd64': 'm'}> +CONFIG_PCMCIA_SPECTRUM policy<{'amd64': 'm'}> +CONFIG_ORINOCO_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intersil devices >> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) +CONFIG_HOSTAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_FIRMWARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HOSTAP_FIRMWARE_NVRAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_HOSTAP_PLX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HOSTAP_CS policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intersil devices >> Softmac Prism54 support +CONFIG_P54_COMMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_P54_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_P54_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_P54_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_P54_SPI_DEFAULT_EEPROM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell devices +CONFIG_WLAN_VENDOR_MARVELL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LIBERTAS_THINFIRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_THINFIRM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_LIBERTAS_THINFIRM_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MWL8K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell devices >> Marvell 8xxx Libertas WLAN driver support +CONFIG_LIBERTAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_CS policy<{'amd64': 'm'}> +CONFIG_LIBERTAS_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIBERTAS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_LIBERTAS_MESH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell devices >> Marvell WiFi-Ex Driver +CONFIG_MWIFIEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_PCIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MWIFIEX_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> MediaTek devices +CONFIG_WLAN_VENDOR_MEDIATEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MT7601U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT76x0U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT76x0E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT76x2E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT76x2U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT7603E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT7615E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT7622_WMAC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MT7663U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MT7915E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support +CONFIG_RT2X00 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2400PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2500PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT61PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2500USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT73USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2X00_LIB_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RT2X00_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support +CONFIG_RT2800PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2800PCI_RT33XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT35XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT53XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800PCI_RT3290 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (USB) support +CONFIG_RT2800USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RT2800USB_RT33XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT35XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT3573 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT53XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_RT55XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RT2800USB_UNKNOWN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek devices +CONFIG_WLAN_VENDOR_REALTEK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTL8180 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8187 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8XXXU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8XXXU_UNTESTED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek devices >> Realtek 802.11ac wireless chips support +CONFIG_RTW88 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTW88_8822BE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTW88_8822CE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTW88_8723DE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTW88_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTW88_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek devices >> Realtek rtlwifi family of devices +CONFIG_RTL_CARDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192CE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192SE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192DE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8723AE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8723BE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8188EE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192EE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8821AE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192CU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTLWIFI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Redpine Signals Inc 91x WLAN driver support +CONFIG_RSI_91X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RSI_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RSI_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RSI_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RSI_COEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Texas Instrument devices +CONFIG_WLAN_VENDOR_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_WL1251 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WL1251_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WL1251_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WL12XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WL18XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE_SPI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WLCORE_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WILINK_PLATFORM_DATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Non-Transparent Bridge support +CONFIG_NTB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NTB_MSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NTB_AMD policy<{'amd64': 'n'}> +CONFIG_NTB_IDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_INTEL policy<{'amd64': 'm'}> +CONFIG_NTB_SWITCHTEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_PINGPONG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_TOOL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_PERF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NTB_MSI_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NTB_TRANSPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> On-Chip Interconnect management support +CONFIG_INTERCONNECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Device Drivers >> On-Chip Interconnect management support >> Qualcomm Network-on-Chip interconnect drivers +CONFIG_INTERCONNECT_QCOM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_INTERCONNECT_QCOM_MSM8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INTERCONNECT_QCOM_MSM8974 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INTERCONNECT_QCOM_OSM_L3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INTERCONNECT_QCOM_QCS404 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_INTERCONNECT_QCOM_SC7180 policy<{'arm64': 'm'}> +CONFIG_INTERCONNECT_QCOM_SDM845 policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> On-Chip Interconnect management support >> i.MX interconnect drivers +CONFIG_INTERCONNECT_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_INTERCONNECT_IMX8MM policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_INTERCONNECT_IMX8MN policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_INTERCONNECT_IMX8MQ policy<{'arm64': 'm', 'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Open-Channel SSD target support +CONFIG_NVM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NVM_PBLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NVM_PBLK_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> PCCard (PCMCIA/CardBus) support +CONFIG_PCCARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CARDBUS policy<{'amd64': 'y', 'arm64': 'y'}> + +# Menu: Device Drivers >> PCCard (PCMCIA/CardBus) support >> 16-bit PCMCIA support +CONFIG_PCMCIA policy<{'amd64': 'm', 'arm64': 'n'}> +CONFIG_PCMCIA_LOAD_CIS policy<{'amd64': 'y'}> +CONFIG_PD6729 policy<{'amd64': 'm'}> +CONFIG_I82092 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> PCCard (PCMCIA/CardBus) support >> CardBus yenta-compatible bridge support +CONFIG_YENTA policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_YENTA_O2 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_YENTA_RICOH policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_YENTA_TI policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_YENTA_ENE_TUNE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_YENTA_TOSHIBA policy<{'amd64': 'y', 'arm64': 'y'}> + +# Menu: Device Drivers >> PCI support +CONFIG_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIEASPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIE_PTM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_MSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_QUIRKS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCI_REALLOC_ENABLE_AUTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_STUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PCI_PF_STUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XEN_PCIDEV_FRONTEND policy<{'amd64': 'm'}> +CONFIG_PCI_IOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_PRI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCI_PASID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PCI_P2PDMA policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n'}> +CONFIG_PCI_HYPERV policy<{'amd64': 'm'}> +# +CONFIG_PCI_P2PDMA flag + +# Menu: Device Drivers >> PCI support >> Default ASPM policy +CONFIG_PCIEASPM_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIEASPM_POWERSAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIEASPM_POWER_SUPERSAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIEASPM_PERFORMANCE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_PCIEASPM_DEFAULT note + +# Menu: Device Drivers >> PCI support >> PCI Endpoint +CONFIG_PCI_ENDPOINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_ENDPOINT_CONFIGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_EPF_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> PCI support >> PCI Express Port Bus support +CONFIG_PCIEPORTBUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_PCIE policy<{'amd64': 'y', 'arm64': 'y', 's390x': 'y'}> +# +CONFIG_PCIEPORTBUS mark note +CONFIG_HOTPLUG_PCI_PCIE mark note + +# Menu: Device Drivers >> PCI support >> PCI Express Port Bus support >> PCI Express Advanced Error Reporting support +CONFIG_PCIEAER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'y'}> +CONFIG_PCIEAER_INJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 's390x': 'n'}> +CONFIG_PCIE_ECRC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 's390x': 'n'}> +CONFIG_PCIE_DPC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'y'}> +CONFIG_PCIE_EDR policy<{'amd64': 'n', 'arm64': 'n'}> +# +CONFIG_PCIEAER_INJECT flag + +# Menu: Device Drivers >> PCI support >> PCI controller drivers +CONFIG_PCI_MVEBU policy<{'armhf': 'y'}> +CONFIG_PCI_AARDVARK policy<{'arm64': 'y'}> +CONFIG_PCIE_XILINX_NWL policy<{'arm64': 'y'}> +CONFIG_PCI_FTPCI100 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PCI_TEGRA policy<{'armhf-generic': 'y'}> +CONFIG_PCI_RCAR_GEN2 policy<{'armhf': 'y'}> +CONFIG_PCIE_RCAR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_RCAR_HOST policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_RCAR_EP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCI_HOST_GENERIC policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PCIE_XILINX policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PCI_XGENE policy<{'arm64': 'y'}> +CONFIG_PCI_XGENE_MSI policy<{'arm64': 'y'}> +CONFIG_PCI_V3_SEMI policy<{'armhf': 'y'}> +CONFIG_PCIE_IPROC_PLATFORM policy<{'arm64': 'm'}> +CONFIG_PCIE_IPROC_MSI policy<{'arm64': 'y'}> +CONFIG_PCIE_ALTERA policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_ALTERA_MSI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCI_HOST_THUNDER_PEM policy<{'arm64': 'y'}> +CONFIG_PCI_HOST_THUNDER_ECAM policy<{'arm64': 'y'}> +CONFIG_PCIE_ROCKCHIP_HOST policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PCIE_ROCKCHIP_EP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_MEDIATEK policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_VMD policy<{'amd64': 'm'}> +CONFIG_PCIE_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_PCI_HYPERV_INTERFACE policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> PCI support >> PCI controller drivers >> Cadence PCIe controllers support +CONFIG_PCIE_CADENCE_PLAT_HOST policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PCIE_CADENCE_PLAT_EP policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> PCI support >> PCI controller drivers >> DesignWare PCI Core Support +CONFIG_PCI_DRA7XX_HOST policy<{'armhf': 'y'}> +CONFIG_PCI_DRA7XX_EP policy<{'armhf': 'y'}> +CONFIG_PCIE_DW_PLAT_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCIE_DW_PLAT_EP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCI_IMX6 policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_PCI_KEYSTONE_HOST policy<{'arm64': 'y'}> +CONFIG_PCI_KEYSTONE_EP policy<{'arm64': 'y'}> +CONFIG_PCI_LAYERSCAPE policy<{'arm64': 'y', 'armhf': 'n'}> +CONFIG_PCI_LAYERSCAPE_EP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCI_HISI policy<{'arm64': 'y'}> +CONFIG_PCIE_QCOM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_ARMADA_8K policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCIE_KIRIN policy<{'arm64': 'y'}> +CONFIG_PCIE_HISI_STB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PCI_MESON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PCIE_UNIPHIER policy<{'armhf': 'y'}> +CONFIG_PCIE_UNIPHIER_EP policy<{'armhf': 'y'}> +CONFIG_PCIE_AL policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> PCI support >> PCI controller drivers >> Mobiveil PCIe Core Support +CONFIG_PCIE_MOBIVEIL_PLAT policy<{'arm64': 'n'}> +CONFIG_PCIE_LAYERSCAPE_GEN4 policy<{'arm64': 'n'}> + +# Menu: Device Drivers >> PCI support >> PCI switch controller drivers +CONFIG_PCI_SW_SWITCHTEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> PCI support >> Support for PCI Hotplug +CONFIG_HOTPLUG_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_ACPI policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_HOTPLUG_PCI_ACPI_IBM policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_HOTPLUG_PCI_CPCI policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_PCI_CPCI_ZT5550 policy<{'amd64': 'm'}> +CONFIG_HOTPLUG_PCI_CPCI_GENERIC policy<{'amd64': 'm'}> +CONFIG_HOTPLUG_PCI_SHPC policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HOTPLUG_PCI_POWERNV policy<{'ppc64el': 'm'}> +CONFIG_HOTPLUG_PCI_RPA policy<{'ppc64el': 'm'}> +CONFIG_HOTPLUG_PCI_RPA_DLPAR policy<{'ppc64el': 'm'}> +CONFIG_HOTPLUG_PCI_S390 policy<{'s390x': 'y'}> +# +CONFIG_HOTPLUG_PCI_SHPC note + +# Menu: Device Drivers >> PHY Subsystem +CONFIG_GENERIC_PHY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PHY_XGENE policy<{'arm64': 'y'}> +CONFIG_PHY_SUN4I_USB policy<{'arm64': 'm'}> +CONFIG_PHY_SUN6I_MIPI_DPHY policy<{'arm64': 'm'}> +CONFIG_PHY_SUN9I_USB policy<{'arm64': 'n'}> +CONFIG_PHY_SUN50I_USB3 policy<{'arm64': 'm'}> +CONFIG_PHY_MESON8B_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MESON_GXL_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MESON_G12A_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MESON_G12A_USB3_PCIE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MESON_AXG_PCIE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PHY_BCM_SR_USB policy<{'arm64': 'm'}> +CONFIG_BCM_KONA_USB2_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_BCM_NS_USB2 policy<{'arm64': 'm'}> +CONFIG_PHY_BCM_NS_USB3 policy<{'arm64': 'm'}> +CONFIG_PHY_NS2_PCIE policy<{'arm64': 'y'}> +CONFIG_PHY_NS2_USB_DRD policy<{'arm64': 'm'}> +CONFIG_PHY_BRCM_SATA policy<{'arm64': 'y'}> +CONFIG_PHY_BRCM_USB policy<{'arm64': 'm'}> +CONFIG_PHY_BCM_SR_PCIE policy<{'arm64': 'm'}> +CONFIG_PHY_CADENCE_TORRENT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_CADENCE_DPHY policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_CADENCE_SIERRA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_CADENCE_SALVO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_FSL_IMX8MQ_USB policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_MIXEL_MIPI_DPHY policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_HI6220_USB policy<{'arm64': 'm'}> +CONFIG_PHY_HI3660_USB policy<{'arm64': 'm'}> +CONFIG_PHY_HISTB_COMBPHY policy<{'arm64': 'm'}> +CONFIG_PHY_HISI_INNO_USB2 policy<{'arm64': 'm'}> +CONFIG_PHY_HIX5HD2_SATA policy<{'armhf': 'm'}> +CONFIG_PHY_BERLIN_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_BERLIN_USB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MVEBU_A3700_COMPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MVEBU_A3700_UTMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MVEBU_A38X_COMPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MVEBU_CP110_COMPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_PXA_28NM_HSIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_PXA_28NM_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHY_MTK_TPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MTK_UFS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_MTK_XSPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_CPCAP_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_MAPPHONE_MDM6600 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_OCELOT_SERDES policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_QCOM_APQ8064_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_IPQ4019_USB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_IPQ806X_SATA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_PCIE2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_QMP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_QUSB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_UFS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_USB_HS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_USB_HSIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_QCOM_USB_HS_28NM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_QCOM_USB_SS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_RCAR_GEN2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_RCAR_GEN3_PCIE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_RCAR_GEN3_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_RCAR_GEN3_USB3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_DP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_EMMC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_INNO_HDMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_INNO_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_PCIE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_TYPEC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_ROCKCHIP_USB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PHY_EXYNOS_DP_VIDEO policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS_MIPI_VIDEO policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS_PCIE policy<{'armhf': 'y'}> +CONFIG_PHY_SAMSUNG_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PHY_EXYNOS5_USBDRD policy<{'armhf': 'm'}> +CONFIG_PHY_EXYNOS5250_SATA policy<{'armhf': 'y'}> +CONFIG_PHY_UNIPHIER_USB2 policy<{'armhf': 'm'}> +CONFIG_PHY_UNIPHIER_USB3 policy<{'armhf': 'm'}> +CONFIG_PHY_UNIPHIER_PCIE policy<{'armhf': 'm'}> +CONFIG_PHY_TEGRA_XUSB policy<{'armhf-generic': 'm'}> +CONFIG_PHY_DM816X_USB policy<{'armhf': 'm'}> +CONFIG_PHY_AM654_SERDES policy<{'arm64': 'm'}> +CONFIG_PHY_J721E_WIZ policy<{'arm64': 'm'}> +CONFIG_OMAP_CONTROL_PHY policy<{'armhf': 'm'}> +CONFIG_OMAP_USB2 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TI_PIPE3 policy<{'armhf': 'm'}> +CONFIG_PHY_TUSB1210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TWL4030_USB policy<{'armhf': 'm'}> +CONFIG_PHY_INTEL_EMMC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> PPS support +CONFIG_PPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_PPS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PPS_CLIENT_KTIMER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PPS_CLIENT_LDISC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PPS_CLIENT_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PPS_CLIENT_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_PPS_CLIENT_KTIMER flag +CONFIG_PPS flag + +# Menu: Device Drivers >> PTP clock support + +# Menu: Device Drivers >> PTP clock support >> PTP clock support +CONFIG_PTP_1588_CLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_PTP_1588_CLOCK_DTE policy<{'arm64': 'm'}> +CONFIG_PTP_1588_CLOCK_QORIQ policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DP83640_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PTP_1588_CLOCK_INES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PTP_1588_CLOCK_KVM policy<{'amd64': 'm'}> +CONFIG_PTP_1588_CLOCK_IDT82P33 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PTP_1588_CLOCK_IDTCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PTP_1588_CLOCK_VMW policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Parallel port support +CONFIG_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PARPORT_AX88796 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_1284 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Parallel port support >> PC-style hardware +CONFIG_PARPORT_PC policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_SERIAL policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PARPORT_PC_FIFO policy<{'amd64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PARPORT_PC_SUPERIO policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PARPORT_PC_PCMCIA policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Performance monitor support +CONFIG_ARM_CCI_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_CCI400_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_CCI5xx_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_CCN policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_PMU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_SMMU_V3_PMU policy<{'arm64': 'm'}> +CONFIG_ARM_DSU_PMU policy<{'arm64': 'm'}> +CONFIG_FSL_IMX8_DDR_PMU policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_HISI_PMU policy<{'arm64': 'y'}> +CONFIG_QCOM_L2_PMU policy<{'arm64': 'y'}> +CONFIG_QCOM_L3_PMU policy<{'arm64': 'y'}> +CONFIG_THUNDERX2_PMU policy<{'arm64': 'm'}> +CONFIG_XGENE_PMU policy<{'arm64': 'y'}> +CONFIG_ARM_SPE_PMU policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Pin controllers +CONFIG_PINCTRL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PINMUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCONF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEBUG_PINCTRL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PINCTRL_AS3722 policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCTRL_AXP209 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_AMD policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_PINCTRL_BM1880 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_DA9062 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_MCP23S08 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_RZA1 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_RZA2 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_RZN1 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_SINGLE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCTRL_SX150X policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCTRL_STMFX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_MAX77620 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_PALMAS policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCTRL_RK805 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PINCTRL_OCELOT policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PINCTRL_OWL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_S700 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_S900 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_ASPEED_G6 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_BCM2835 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_IPROC_GPIO policy<{'arm64': 'y'}> +CONFIG_PINCTRL_NS2_MUX policy<{'arm64': 'y'}> +CONFIG_PINCTRL_AS370 policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_BERLIN_BG4CT policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_IMX50 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX51 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6Q policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6SL policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6SLL policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6SX policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX6UL policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX7D policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX7ULP policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX8MM policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX8MN policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX8MP policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX8MQ policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_PINCTRL_IMX8QM policy<{'arm64': 'y'}> +CONFIG_PINCTRL_IMX8QXP policy<{'arm64': 'y'}> +CONFIG_PINCTRL_IMX8DXL policy<{'arm64': 'y'}> +CONFIG_PINCTRL_VF610 policy<{'armhf-generic': 'y'}> +CONFIG_PINCTRL_BAYTRAIL policy<{'amd64': 'y'}> +CONFIG_PINCTRL_CHERRYVIEW policy<{'amd64': 'y'}> +CONFIG_PINCTRL_LYNXPOINT policy<{'amd64': 'm'}> +CONFIG_PINCTRL_BROXTON policy<{'amd64': 'm'}> +CONFIG_PINCTRL_CANNONLAKE policy<{'amd64': 'm'}> +CONFIG_PINCTRL_CEDARFORK policy<{'amd64': 'm'}> +CONFIG_PINCTRL_DENVERTON policy<{'amd64': 'm'}> +CONFIG_PINCTRL_GEMINILAKE policy<{'amd64': 'm'}> +CONFIG_PINCTRL_ICELAKE policy<{'amd64': 'm'}> +CONFIG_PINCTRL_JASPERLAKE policy<{'amd64': 'm'}> +CONFIG_PINCTRL_LEWISBURG policy<{'amd64': 'm'}> +CONFIG_PINCTRL_SUNRISEPOINT policy<{'amd64': 'm'}> +CONFIG_PINCTRL_TIGERLAKE policy<{'amd64': 'm'}> +CONFIG_PINCTRL_NPCM7XX policy<{'armhf': 'y'}> +CONFIG_PINCTRL_APQ8064 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_APQ8084 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_IPQ4019 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_IPQ8064 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_IPQ8074 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_IPQ6018 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8960 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MDM9615 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8X74 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8916 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8976 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8994 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8996 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_MSM8998 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_QCS404 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_QDF2XXX policy<{'arm64': 'm'}> +CONFIG_PINCTRL_QCOM_SPMI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_QCOM_SSBI_PMIC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_SC7180 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_SDM660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_SDM845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_SM8150 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_SM8250 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PINCTRL_EXYNOS policy<{'armhf': 'y'}> +CONFIG_PINCTRL_EXYNOS_ARM policy<{'armhf': 'y'}> +CONFIG_PINCTRL_SH_PFC policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_PFC_EMEV2 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7740 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7742 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7743 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7744 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7745 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A77470 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A774A1 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A774B1 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A774C0 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A7778 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7779 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7790 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7791 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7792 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7793 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A7794 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_PFC_R8A77950 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77951 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77960 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77961 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77965 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77970 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77980 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77990 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_R8A77995 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_PFC_SH73A0 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_SPRD_SC9860 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN4I_A10 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN5I policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN6I_A31 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN6I_A31_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_A23 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_A33 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_A83T policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_A83T_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_A23_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_H3 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_H3_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN8I_V3S policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN9I_A80 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN9I_A80_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN50I_A64 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN50I_A64_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN50I_H5 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN50I_H6 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_SUN50I_H6_R policy<{'arm64': 'y'}> +CONFIG_PINCTRL_TI_IODELAY policy<{'armhf': 'y'}> +CONFIG_PINCTRL_LOCHNAGAR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_PINCTRL_CHERRYVIEW mark note + +# Menu: Device Drivers >> Pin controllers >> Amlogic SoC pinctrl drivers +CONFIG_PINCTRL_MESON policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_MESON8 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MESON8B policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MESON_GXBB policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MESON_GXL policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MESON_AXG policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MESON_G12A policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MESON_A1 policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Pin controllers >> MediaTek pinctrl drivers +CONFIG_EINT_MTK policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_PINCTRL_MT2701 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MT7623 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MT7629 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MT8135 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MT8127 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_MT2712 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT6765 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT6797 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT7622 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT8173 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT8183 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT8516 policy<{'arm64': 'y'}> +CONFIG_PINCTRL_MT6397 policy<{'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_PINCTRL_MT8135 flag +CONFIG_PINCTRL_MT8127 flag + +# Menu: Device Drivers >> Pin controllers >> UniPhier SoC pinctrl drivers +CONFIG_PINCTRL_UNIPHIER policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_LD4 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_PRO4 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_SLD8 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_PRO5 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_PXS2 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_LD6B policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_LD11 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_LD20 policy<{'armhf': 'y'}> +CONFIG_PINCTRL_UNIPHIER_PXS3 policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Platform support for Chrome hardware +CONFIG_CHROME_PLATFORMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_CHROMEOS_LAPTOP policy<{'amd64': 'm'}> +CONFIG_CHROMEOS_PSTORE policy<{'amd64': 'm'}> +CONFIG_CHROMEOS_TBMC policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_CROS_KBD_LED_BACKLIGHT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_CROS_EC_CHARDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_LIGHTBAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_VBC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_DEBUGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_SENSORHUB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_SYSFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_TYPEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_USBPD_LOGGER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_USBPD_NOTIFY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Platform support for Chrome hardware >> ChromeOS Embedded Controller +CONFIG_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_RPMSG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_ISHTP policy<{'amd64': 'm'}> +CONFIG_CROS_EC_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CROS_EC_LPC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Platform support for Chrome hardware >> ChromeOS Embedded Controller >> ChromeOS Wilco Embedded Controller +CONFIG_WILCO_EC policy<{'amd64': 'm'}> +CONFIG_WILCO_EC_DEBUGFS policy<{'amd64': 'm'}> +CONFIG_WILCO_EC_EVENTS policy<{'amd64': 'm'}> +CONFIG_WILCO_EC_TELEMETRY policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Platform support for Goldfish virtual devices +CONFIG_GOLDFISH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> Platform support for Mellanox hardware +CONFIG_MELLANOX_PLATFORM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_MLXREG_HOTPLUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_MLXREG_IO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_MLXBF_TMFIFO policy<{'arm64': 'm'}> +CONFIG_MLXBF_BOOTCTL policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Platform support for OLPC XO 1.75 hardware + +# Menu: Device Drivers >> Plug and Play support +CONFIG_PNP policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_PNP_DEBUG_MESSAGES policy<{'amd64': 'n', 'arm64': 'n'}> + +# Menu: Device Drivers >> Power supply class support +CONFIG_POWER_SUPPLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_POWER_SUPPLY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_POWER_SUPPLY_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PDA_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GENERIC_ADC_BATTERY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAX8925_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WM831X_BACKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WM831X_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WM8350_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TEST_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_ADP5061 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_ACT8945A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_CW2015 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2780 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2781 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DS2782 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_LEGO_EV3 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_SBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_SBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MANAGER_SBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27XXX_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27XXX_HDQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BATTERY_DA9030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_DA9150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_DA9150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_AXP20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_AXP20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AXP20X_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AXP288_CHARGER policy<{'amd64': 'm'}> +CONFIG_AXP288_FUEL_GAUGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_MAX17040 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_MAX17042 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_MAX1721X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_TWL4030_MADC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_RX51 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_CPCAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CHARGER_ISP1704 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_LP8727 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MANAGER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CHARGER_LT3651 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_DETECTOR_MAX14656 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX77650 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_MP2629 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_QCOM_SMBB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CHARGER_BQ2415X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24190 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24257 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ24735 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BQ25890 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_SMB347 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_TPS65090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_TPS65217 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_BATTERY_GAUGE_LTC2941 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BATTERY_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_RT9455 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_CROS_USBPD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_CHARGER_SC2731 policy<{'arm64': 'm'}> +CONFIG_FUEL_GAUGE_SC27XX policy<{'arm64': 'm'}> +CONFIG_CHARGER_UCS1002 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BD70528 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_BD99954 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CHARGER_WILCO policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Pulse-Width Modulation (PWM) Support +CONFIG_PWM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PWM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PWM_ATMEL_HLCDC_PWM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_BCM_IPROC policy<{'arm64': 'm'}> +CONFIG_PWM_BCM2835 policy<{'arm64': 'm'}> +CONFIG_PWM_BERLIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_PWM_CRC policy<{'amd64': 'y'}> +CONFIG_PWM_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_FSL_FTM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_HIBVT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_IMX1 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_PWM_IMX27 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_PWM_IMX_TPM policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_PWM_IQS620A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_LP3943 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_LPSS_PCI policy<{'amd64': 'y'}> +CONFIG_PWM_LPSS_PLATFORM policy<{'amd64': 'y'}> +CONFIG_PWM_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_MTK_DISP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_OMAP_DMTIMER policy<{'armhf': 'm'}> +CONFIG_PWM_PCA9685 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_RENESAS_TPU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_PWM_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_PWM_SPRD policy<{'arm64': 'm'}> +CONFIG_PWM_STMPE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PWM_SUN4I policy<{'arm64': 'm'}> +CONFIG_PWM_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_PWM_TIECAP policy<{'arm64': 'm', 'armhf-generic': 'm', 'armhf-generic-lpae': 'n'}> +CONFIG_PWM_TIEHRPWM policy<{'arm64': 'm', 'armhf-generic': 'm', 'armhf-generic-lpae': 'n'}> +CONFIG_PWM_TWL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PWM_TWL_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> RapidIO support +CONFIG_RAPIDIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_RAPIDIO_TSI721 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_RAPIDIO_DISC_TIMEOUT policy<{'amd64': '30', 'arm64': '30', 'armhf': '30', 'ppc64el': '30'}> +CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RAPIDIO_DMA_ENGINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RAPIDIO_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RAPIDIO_CHMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_MPORT_CDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> RapidIO support >> Enumeration method +CONFIG_RAPIDIO_ENUM_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> RapidIO support >> RapidIO Switch drivers +CONFIG_RAPIDIO_TSI57X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_CPS_XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_TSI568 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_CPS_GEN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RAPIDIO_RXS_GEN3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Real Time Clock +CONFIG_RTC_CLASS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_HCTOSYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_HCTOSYS_DEVICE policy<{'amd64': '"rtc0"', 'arm64': '"rtc0"', 'armhf': '"rtc0"', 'ppc64el': '"rtc0"'}> +CONFIG_RTC_SYSTOHC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_SYSTOHC_DEVICE policy<{'amd64': '"rtc0"', 'arm64': '"rtc0"', 'armhf': '"rtc0"', 'ppc64el': '"rtc0"'}> +CONFIG_RTC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_NVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_PROC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_DEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_INTF_DEV_UIE_EMUL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_88PM860X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_88PM80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ABB5ZES3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ABEOZ9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ABX80X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_RTC_DRV_AS3722 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1307 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1307_CENTURY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_DS1374 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1374_WDT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_DS1672 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_HYM8563 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX6900 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RS5C372 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL1208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL12022 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_ISL12026 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_X1205 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF85063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF85363 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8563 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF8583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T80 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T80_WDT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_BD70528 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_BQ32K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TWL4030 policy<{'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS6586X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS65910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_TPS80031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RC5T583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RC5T619 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_S35390A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_FM3130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX8010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX8581 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX8025 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_EM3027 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RV3028 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RV8803 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_S5M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_SD3078 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T93 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M41T94 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1302 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1343 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1347 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1390 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX6916 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_R9701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX4581 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RX6110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RS5C348 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MAX6902 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCF2123 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MCP795 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS3232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS3232_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_PCF2127 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RV3029C2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RV3029_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_CMOS policy<{'amd64': 'y', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1286 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1511 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1553 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1685_FAMILY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS1742 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DS2404 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_DA9063 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_EFI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RTC_DRV_STK17TA8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T86 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T35 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_M48T59 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MSM6242 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_BQ4802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RP5C01 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_V3020 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_SC27XX policy<{'arm64': 'm'}> +CONFIG_RTC_DRV_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_AB3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_OPAL policy<{'ppc64el': 'y'}> +CONFIG_RTC_DRV_ZYNQMP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_CROS_EC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_IMXDI policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RTC_DRV_FSL_FTM_ALARM policy<{'arm64': 'm'}> +CONFIG_RTC_DRV_MESON policy<{'armhf': 'm'}> +CONFIG_RTC_DRV_MESON_VRTC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_OMAP policy<{'armhf': 'y'}> +CONFIG_RTC_DRV_S3C policy<{'armhf': 'y'}> +CONFIG_RTC_DRV_SH policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_PL030 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_PL031 policy<{'arm64': 'm', 'armhf': 'y'}> +CONFIG_RTC_DRV_GENERIC policy<{'ppc64el': 'y'}> +CONFIG_RTC_DRV_SUN6I policy<{'arm64': 'y'}> +CONFIG_RTC_DRV_MV policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RTC_DRV_ARMADA38X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_CADENCE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_FTRTC010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MC13XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_PM8XXX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_RTC_DRV_MXC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RTC_DRV_MXC_V2 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RTC_DRV_SNVS policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RTC_DRV_IMX_SC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RTC_DRV_MT2712 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_MT7622 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RTC_DRV_XGENE policy<{'arm64': 'y'}> +CONFIG_RTC_DRV_R7301 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_RTD119X policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RTC_DRV_ASPEED policy<{'armhf': 'm'}> +CONFIG_RTC_DRV_HID_SENSOR_TIME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTC_DRV_WILCO_EC policy<{'amd64': 'm'}> +# +CONFIG_RTC_DRV_TEST flag +CONFIG_RTC_DRV_CMOS note +CONFIG_RTC_DRV_EFI note +CONFIG_RTC_DRV_TWL4030 note + +# Menu: Device Drivers >> Real Time Clock >> Subtype +CONFIG_RTC_DRV_DS1685 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTC_DRV_DS1689 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17285 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17485 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_RTC_DRV_DS17885 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Reliability, Availability and Serviceability (RAS) features +CONFIG_RAS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RAS_CEC policy<{'amd64': 'y'}> +CONFIG_RAS_CEC_DEBUG policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Remote Controller support +CONFIG_RC_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_RC_MAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LIRC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Remote Controller support >> Remote Controller devices +CONFIG_RC_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RC_ATI_REMOTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_ENE policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_IR_HIX5HD2 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IMON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IMON_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_MCEUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_ITE_CIR policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_IR_FINTEK policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_IR_MESON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IR_MTK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IR_NUVOTON policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_IR_REDRAT3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SPI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_STREAMZAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_WINBOND_CIR policy<{'amd64': 'm'}> +CONFIG_IR_IGORPLUGUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IGUANA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_TTUSBIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RX51 policy<{'armhf': 'm'}> +CONFIG_RC_LOOPBACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_GPIO_CIR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_GPIO_TX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_PWM_TX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SUNXI policy<{'arm64': 'm'}> +CONFIG_IR_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SERIAL_TRANSMITTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IR_SIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RC_XBOX_DVD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Remote Controller support >> Remote Controller devices >> Hardware decoder + +# Menu: Device Drivers >> Remote Controller support >> Remote controller decoders +CONFIG_RC_DECODERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_IR_NEC_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RC5_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RC6_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_JVC_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SONY_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SANYO_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_SHARP_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_MCE_KBD_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_XMP_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_IMON_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IR_RCMM_DECODER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Remoteproc drivers + +# Menu: Device Drivers >> Remoteproc drivers >> Support for Remote Processor subsystem +CONFIG_REMOTEPROC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IMX_REMOTEPROC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_MTK_SCP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_OMAP_REMOTEPROC policy<{'armhf': 'm'}> +CONFIG_OMAP_REMOTEPROC_WATCHDOG policy<{'armhf': 'n'}> +CONFIG_WKUP_M3_RPROC policy<{'armhf-generic': 'm'}> +CONFIG_QCOM_Q6V5_ADSP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_Q6V5_MSS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_Q6V5_PAS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_Q6V5_WCSS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SYSMON policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_WCNSS_PIL policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Device Drivers >> Reset Controller Support +CONFIG_RESET_CONTROLLER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_RESET_BERLIN policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_RESET_BRCMSTB_RESCAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RESET_IMX7 policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_RESET_INTEL_GW policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RESET_MESON policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_MESON_AUDIO_ARB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RESET_NPCM policy<{'armhf': 'y'}> +CONFIG_RESET_QCOM_AOSS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_QCOM_PDC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RESET_SCMI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RESET_SIMPLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_RESET_SUNXI policy<{'arm64': 'y'}> +CONFIG_RESET_TI_SCI policy<{'arm64': 'm'}> +CONFIG_RESET_TI_SYSCON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RESET_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_RESET_UNIPHIER_GLUE policy<{'armhf': 'm'}> +CONFIG_COMMON_RESET_HI3660 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_COMMON_RESET_HI6220 policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Rpmsg drivers +CONFIG_RPMSG_CHAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RPMSG_MTK_SCP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RPMSG_QCOM_GLINK_RPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RPMSG_QCOM_GLINK_SMEM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RPMSG_QCOM_SMD policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> +CONFIG_RPMSG_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> + +# Menu: Device Drivers >> SCSI device support +CONFIG_RAID_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support +CONFIG_SCSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_SD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CHR_DEV_ST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BLK_DEV_SR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CHR_DEV_SG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CHR_DEV_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_ENCLOSURE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_CONSTANTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_LOGGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_SCAN_ASYNC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SCSI flag +CONFIG_CHR_DEV_SG note +CONFIG_BLK_DEV_SD mark note +CONFIG_BLK_DEV_SR mark note + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Device Handlers +CONFIG_SCSI_DH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_DH_RDAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_HP_SW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_EMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_DH_ALUA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Transports +CONFIG_SCSI_SPI_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_FC_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_ISCSI_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_LIBSAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SAS_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_SAS_HOST_SMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCSI_SRP_ATTRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers +CONFIG_SCSI_LOWLEVEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ISCSI_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ISCSI_BOOT_SYSFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_CXGB3_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_CXGB4_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BNX2_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BNX2X_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BE2ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CXLFLASH policy<{'ppc64el': 'm'}> +CONFIG_BLK_DEV_3W_XXXX_RAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_HPSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_3W_9XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_3W_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_ACARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AHA1740 policy<{'amd64': 'm'}> +CONFIG_SCSI_AACRAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AIC94XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC94XX_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_HISI_SAS policy<{'arm64': 'm'}> +CONFIG_SCSI_HISI_SAS_PCI policy<{'arm64': 'm'}> +CONFIG_SCSI_MVSAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MVSAS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MVSAS_TASKLET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_MVUMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_DPT_I2O policy<{'amd64': 'm'}> +CONFIG_SCSI_ADVANSYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_ARCMSR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_ESAS2R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEGARAID_NEWGEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MEGARAID_MM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEGARAID_MAILBOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEGARAID_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEGARAID_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MPT3SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_MPT2SAS_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128', 's390x': '128'}> +CONFIG_SCSI_MPT3SAS_MAX_SGE policy<{'amd64': '128', 'arm64': '128', 'armhf': '128', 'ppc64el': '128', 's390x': '128'}> +CONFIG_SCSI_MPT2SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SMARTPQI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_TI_J721E policy<{'arm64': 'm'}> +CONFIG_SCSI_HPTIOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BUSLOGIC policy<{'amd64': 'm'}> +CONFIG_SCSI_FLASHPOINT policy<{'amd64': 'y'}> +CONFIG_SCSI_MYRB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_MYRS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VMWARE_PVSCSI policy<{'amd64': 'm'}> +CONFIG_XEN_SCSI_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_HYPERV_STORAGE policy<{'amd64': 'm'}> +CONFIG_LIBFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_SNIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_SNIC_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_DMX3191D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_FDOMAIN_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_GDTH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_ISCI policy<{'amd64': 'm'}> +CONFIG_SCSI_IPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_IBMVSCSI policy<{'ppc64el': 'm'}> +CONFIG_SCSI_IBMVSCSIS policy<{'ppc64el': 'm'}> +CONFIG_SCSI_IBMVFC policy<{'ppc64el': 'm'}> +CONFIG_SCSI_IBMVFC_TRACE policy<{'ppc64el': 'y'}> +CONFIG_SCSI_INITIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_INIA100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_PPA policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IMM policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IZIP_EPP16 policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_IZIP_SLOW_CTR policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_STEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_IPR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_IPR_TRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_IPR_DUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_QLOGIC_1280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_QLA_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_TCM_QLA2XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TCM_QLA2XXX_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_QLA_ISCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QEDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_LPFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_LPFC_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCSI_SIM710 policy<{'amd64': 'm'}> +CONFIG_SCSI_DC395x policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_AM53C974 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_NSP32 policy<{'armhf': 'm'}> +CONFIG_SCSI_WD719X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_DEBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZFCP policy<{'s390x': 'm'}> +CONFIG_SCSI_PMCRAID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_PM8001 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_BFA_FC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCSI_CHELSIO_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_SCSI_IPR_TRACE note +CONFIG_SCSI_IPR_DUMP note +CONFIG_SCSI_VIRTIO note + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC79xx U320 support +CONFIG_SCSI_AIC79XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC79XX_CMDS_PER_DEVICE policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32'}> +CONFIG_AIC79XX_RESET_DELAY_MS policy<{'amd64': '5000', 'arm64': '5000', 'armhf': '5000', 'ppc64el': '5000'}> +CONFIG_AIC79XX_DEBUG_ENABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_AIC79XX_DEBUG_MASK policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_AIC79XX_REG_PRETTY_PRINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC7xxx Fast -> U160 support +CONFIG_SCSI_AIC7XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_AIC7XXX_CMDS_PER_DEVICE policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_AIC7XXX_RESET_DELAY_MS policy<{'amd64': '5000', 'arm64': '5000', 'armhf': '5000', 'ppc64el': '5000'}> +CONFIG_AIC7XXX_DEBUG_ENABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_AIC7XXX_DEBUG_MASK policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_AIC7XXX_REG_PRETTY_PRINT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> LibFCoE module +CONFIG_LIBFCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FCOE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FCOE_FNIC policy<{'amd64': 'm'}> +CONFIG_QEDF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> PCMCIA SCSI adapter support +CONFIG_SCSI_LOWLEVEL_PCMCIA policy<{'amd64': 'y'}> +CONFIG_PCMCIA_AHA152X policy<{'amd64': 'm'}> +CONFIG_PCMCIA_FDOMAIN policy<{'amd64': 'm'}> +CONFIG_PCMCIA_QLOGIC policy<{'amd64': 'm'}> +CONFIG_PCMCIA_SYM53C500 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> SYM53C8XX Version 2 SCSI support +CONFIG_SCSI_SYM53C8XX_2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1'}> +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS policy<{'amd64': '16', 'arm64': '16', 'armhf': '16', 'ppc64el': '16'}> +CONFIG_SCSI_SYM53C8XX_MAX_TAGS policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'ppc64el': '64'}> +CONFIG_SCSI_SYM53C8XX_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Universal Flash Storage Controller Driver Core +CONFIG_SCSI_UFSHCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SCSI_UFSHCD_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_DWC_TC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_BSG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Universal Flash Storage Controller Driver Core >> Platform bus based UFS Controller support +CONFIG_SCSI_UFSHCD_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_CDNS_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_DWC_TC_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SCSI_UFS_QCOM policy<{'arm64': 'm', 'armhf': 'n'}> +CONFIG_SCSI_UFS_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SCSI_UFS_HISI policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Zalon SCSI support + +# Menu: Device Drivers >> SLIMbus support +CONFIG_SLIMBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SLIM_QCOM_CTRL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SLIM_QCOM_NGD_CTRL policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers +CONFIG_OWL_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ROCKCHIP_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_TEGRA_2x_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_3x_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_114_SOC policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_TEGRA_124_SOC policy<{'armhf-generic': 'y'}> +CONFIG_SOC_TEGRA20_VOLTAGE_COUPLER policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_K3_AM6_SOC policy<{'arm64': 'y'}> +CONFIG_SOC_TEGRA30_VOLTAGE_COUPLER policy<{'armhf-generic': 'y'}> +CONFIG_ARCH_K3_J721E_SOC policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Amlogic SoC drivers +CONFIG_MESON_CANVAS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MESON_CLK_MEASURE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MESON_GX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MESON_GX_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MESON_EE_PM_DOMAINS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64-generic': 'y'}> +CONFIG_MESON_MX_SOCINFO policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Aspeed SoC drivers +CONFIG_ASPEED_LPC_CTRL policy<{'armhf': 'm'}> +CONFIG_ASPEED_LPC_SNOOP policy<{'armhf': 'm'}> +CONFIG_ASPEED_P2A_CTRL policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Broadcom SoC drivers +CONFIG_BCM2835_POWER policy<{'arm64': 'y'}> +CONFIG_RASPBERRYPI_POWER policy<{'arm64': 'y'}> +CONFIG_SOC_BRCMSTB policy<{'arm64': 'y', 'armhf': 'n'}> +CONFIG_BRCMSTB_PM policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> IXP4xx SoC drivers + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> MediaTek SoC drivers +CONFIG_MTK_CMDQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTK_INFRACFG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MTK_PMIC_WRAP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MTK_SCPSYS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MTK_MMSYS policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> NXP/Freescale QorIQ SoC drivers +CONFIG_QUICC_ENGINE policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_FSL_MC_DPIO policy<{'arm64': 'm'}> +CONFIG_DPAA2_CONSOLE policy<{'arm64': 'm'}> +CONFIG_FSL_RCPM policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> NXP/Freescale QorIQ SoC drivers >> QorIQ DPAA1 framework support +CONFIG_FSL_DPAA policy<{'arm64': 'y'}> +CONFIG_FSL_DPAA_CHECKING policy<{'arm64': 'y'}> +CONFIG_FSL_BMAN_TEST policy<{'arm64': 'm'}> +CONFIG_FSL_BMAN_TEST_API policy<{'arm64': 'n'}> +CONFIG_FSL_QMAN_TEST policy<{'arm64': 'n'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Qualcomm SoC drivers +CONFIG_QCOM_AOSS_QMP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_COMMAND_DB policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_QCOM_GENI_SE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_GSBI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_LLCC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_OCMEM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_RMTFS_MEM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_RPMH policy<{'arm64': 'y'}> +CONFIG_QCOM_RPMHPD policy<{'arm64': 'y'}> +CONFIG_QCOM_RPMPD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SMD_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_WCNSS_CTRL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_APR policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Qualcomm SoC drivers >> Qualcomm Shared Memory Manager (SMEM) +CONFIG_QCOM_SMEM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SMP2P policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SMSM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SOCINFO policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Renesas SoC driver support +CONFIG_SOC_RENESAS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_EMEV2 policy<{'armhf': 'y'}> +CONFIG_ARCH_R7S72100 policy<{'armhf': 'y'}> +CONFIG_ARCH_R7S9210 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A73A4 policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7740 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7742 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7743 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7744 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7745 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A77470 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7778 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7779 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7790 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7791 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7792 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7793 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7794 policy<{'armhf': 'y'}> +CONFIG_ARCH_R9A06G032 policy<{'armhf': 'y'}> +CONFIG_ARCH_SH73A0 policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A774A1 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A774B1 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A774C0 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77950 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77951 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77960 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77961 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77965 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77970 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77980 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77990 policy<{'arm64': 'y'}> +CONFIG_ARCH_R8A77995 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A7742 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7743 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7745 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A77470 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A774A1 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A774B1 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A774C0 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A7779 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7790 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7791 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7792 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7794 policy<{'armhf': 'y'}> +CONFIG_SYSC_R8A7795 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77960 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77961 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77965 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77970 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77980 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77990 policy<{'arm64': 'y'}> +CONFIG_SYSC_R8A77995 policy<{'arm64': 'y'}> +CONFIG_RST_RCAR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SYSC_RCAR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SYSC_RMOBILE policy<{'armhf': 'y'}> +# +CONFIG_ARCH_R8A73A4 flag + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Samsung SoC driver support +CONFIG_SOC_SAMSUNG policy<{'armhf': 'y'}> +CONFIG_EXYNOS_ASV policy<{'armhf': 'y'}> +CONFIG_EXYNOS_ASV_ARM policy<{'armhf': 'y'}> +CONFIG_EXYNOS_CHIPID policy<{'armhf': 'y'}> +CONFIG_EXYNOS_PMU policy<{'armhf': 'y'}> +CONFIG_EXYNOS_PMU_ARM_DRIVERS policy<{'armhf': 'y'}> +CONFIG_EXYNOS_PM_DOMAINS policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> TI SOC drivers support +CONFIG_SOC_TI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_WKUP_M3_IPC policy<{'armhf-generic': 'n'}> +CONFIG_TI_SCI_PM_DOMAINS policy<{'arm64': 'm'}> +CONFIG_TI_K3_RINGACC policy<{'arm64': 'y'}> +# +CONFIG_SOC_TI flag + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> Xilinx SoC drivers +CONFIG_XILINX_VCU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZYNQMP_POWER policy<{'arm64': 'y'}> +CONFIG_ZYNQMP_PM_DOMAINS policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> ZTE SoC driver support + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> i.MX SoC drivers +CONFIG_IMX_GPCV2_PM_DOMAINS policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_IMX_SCU_SOC policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_SOC_IMX8M policy<{'arm64': 'y', 'armhf-generic': 'n'}> + +# Menu: Device Drivers >> SPI support +CONFIG_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SPI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SPI_MEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_ALTERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_ARMADA_3700 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_AXI_SPI_ENGINE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_BCM2835 policy<{'arm64': 'm'}> +CONFIG_SPI_BCM2835AUX policy<{'arm64': 'm'}> +CONFIG_SPI_BCM_QSPI policy<{'arm64': 'm'}> +CONFIG_SPI_BITBANG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_BUTTERFLY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_CADENCE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DLN2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_FSI policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_FSL_LPSPI policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SPI_FSL_QUADSPI policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SPI_HISI_SFC_V3XX policy<{'arm64': 'm'}> +CONFIG_SPI_NXP_FLEXSPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SPI_LM70_LLP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_FSL_SPI policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_FSL_DSPI policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SPI_MESON_SPICC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_MESON_SPIFC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_MT65XX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_MTK_NOR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_NPCM_FIU policy<{'armhf': 'm'}> +CONFIG_SPI_NPCM_PSPI policy<{'armhf': 'm'}> +CONFIG_SPI_OC_TINY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_OMAP24XX policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SPI_TI_QSPI policy<{'armhf': 'm'}> +CONFIG_SPI_ORION policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_PL022 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_PXA2XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_ROCKCHIP policy<{'amd64': 'n', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'n'}> +CONFIG_SPI_RSPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_QCOM_QSPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_QUP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_QCOM_GENI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_S3C64XX policy<{'armhf': 'm'}> +CONFIG_SPI_SC18IS602 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SH_MSIOF policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_SH_HSPI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_SIFIVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SLAVE_MT27XX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SPI_SPRD policy<{'arm64': 'm'}> +CONFIG_SPI_SPRD_ADI policy<{'arm64': 'm'}> +CONFIG_SPI_SUN4I policy<{'arm64': 'n'}> +CONFIG_SPI_SUN6I policy<{'arm64': 'm'}> +CONFIG_SPI_SYNQUACER policy<{'arm64': 'm'}> +CONFIG_SPI_MXIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_TEGRA114 policy<{'armhf-generic': 'm'}> +CONFIG_SPI_TEGRA20_SFLASH policy<{'armhf-generic': 'm'}> +CONFIG_SPI_TEGRA20_SLINK policy<{'armhf-generic': 'm'}> +CONFIG_SPI_THUNDERX policy<{'arm64': 'm'}> +CONFIG_SPI_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_SPI_XCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_XILINX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SPI_XLP policy<{'arm64': 'm'}> +CONFIG_SPI_ZYNQMP_GQSPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_AMD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_MUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SPIDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_LOOPBACK_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_TLE62X0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SLAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_SLAVE_TIME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_SLAVE_SYSTEM_CONTROL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> SPI support >> DesignWare SPI controller core support +CONFIG_SPI_DESIGNWARE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DW_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SPI_DW_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPI_DW_MMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> SPMI support +CONFIG_SPMI policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SPMI_MSM_PMIC_ARB policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) +CONFIG_ATA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATA_VERBOSE_ERROR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_FORCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_ACPI policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_SATA_ZPODD policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_SATA_PMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SATA_AHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_MOBILE_LPM_POLICY policy<{'amd64': '3', 'arm64': '3', 'armhf': '3', 'ppc64el': '3'}> +CONFIG_SATA_AHCI_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_AHCI_BRCM policy<{'arm64': 'm'}> +CONFIG_AHCI_DM816 policy<{'armhf': 'm'}> +CONFIG_AHCI_IMX policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_AHCI_CEVA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AHCI_MTK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_AHCI_MVEBU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_AHCI_SUNXI policy<{'arm64': 'n'}> +CONFIG_AHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_AHCI_XGENE policy<{'arm64': 'm'}> +CONFIG_AHCI_QORIQ policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_AHCI_SEATTLE policy<{'arm64': 'm'}> +CONFIG_SATA_INIC162X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_ACARD_AHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SIL24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_SATA_AHCI_PLATFORM note + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) +CONFIG_ATA_SFF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PDC_ADMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_QSTOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SX4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CMD640_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_MPIIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NS87410 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OPTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PCMCIA policy<{'amd64': 'm'}> +CONFIG_PATA_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OF_PLATFORM policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_RZ1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_LEGACY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) >> ATA BMDMA support +CONFIG_ATA_BMDMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ATA_PIIX policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_DWC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_DWC_OLD_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SATA_DWC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SATA_HIGHBANK policy<{'armhf': 'y'}> +CONFIG_SATA_MV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_NV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_PROMISE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SATA_SIL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_SVW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_ULI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_VITESSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ALI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_AMD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ARTOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ATIIXP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ATP867X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CMD64X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_CYPRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_EFAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT366 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT37X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X2N policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_HPT3X3_DMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PATA_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_PATA_IT8213 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_IT821X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_JMICRON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_MARVELL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NETCELL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NINJA32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_NS87415 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OLDPIIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_OPTIDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PDC2027X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_PDC_OLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_RADISYS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_RDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SERVERWORKS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SIL680 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_SIS policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_TOSHIBA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_TRIFLEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_WINBOND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_ATA_GENERIC policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_SATA_HIGHBANK mark note +CONFIG_PATA_HPT3X3_DMA note +CONFIG_ATA_PIIX mark note + +# Menu: Device Drivers >> Sonics Silicon Backplane support +CONFIG_SSB_PCIHOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SSB_PCMCIAHOST policy<{'amd64': 'n'}> +CONFIG_SSB_SDIOHOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SSB_DRIVER_PCICORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SSB_DRIVER_GPIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sony MemoryStick card support +CONFIG_MEMSTICK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MEMSTICK_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MEMSTICK_UNSAFE_RESUME policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MSPRO_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MS_BLOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_TIFM_MS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_JMICRON_38X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_R592 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_REALTEK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MEMSTICK_REALTEK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support +CONFIG_SOUND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_SOUND note +CONFIG_SOUND_OSS_CORE_PRECLAIM mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture +CONFIG_SND policy<{'amd64': 'm', 'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_SND_OSSEMUL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_MIXER_OSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PCM_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SND_PCM_TIMER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HRTIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_MAX_CARDS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32'}> +CONFIG_SND_SUPPORT_OLD_API policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_VERBOSE_PROCFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_VERBOSE_PRINTK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SND_HDA_PREALLOC_SIZE policy<{'amd64': '0', 'arm64': '64', 'armhf': '64', 'ppc64el': '64'}> +CONFIG_SND_XEN_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> +# +CONFIG_SND note +CONFIG_SND_PCM_OSS note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support +CONFIG_SND_SOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AMD_ACP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AMD_CZ_RT5645_MACH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AMD_ACP3x policy<{'amd64': 'm'}> +CONFIG_SND_SOC_AMD_RV_RT5682_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_AMD_RENOIR policy<{'amd64': 'm'}> +CONFIG_SND_SOC_AMD_RENOIR_MACH policy<{'amd64': 'm'}> +CONFIG_SND_BCM2835_SOC_I2S policy<{'arm64': 'm'}> +CONFIG_SND_BCM63XX_I2S_WHISTLER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DESIGNWARE_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DESIGNWARE_PCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_I2S_HI6210_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_KIRKWOOD_SOC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT2701 policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_SND_SOC_MT6797 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT6797_MT6351 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT8183 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MT8183_DA7219_MAX98357A policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MTK_BTCVSD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_STORM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_APQ8016_SBC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_QDSP6 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MSM8996 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_SDM845 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_SPRD policy<{'arm64': 'm'}> +CONFIG_SND_SOC_SPRD_MCDT policy<{'arm64': 'm'}> +CONFIG_SND_SOC_XILINX_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_XILINX_SPDIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_XTFPGA_I2S policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ZX_TDM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SIMPLE_CARD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AUDIO_GRAPH_CARD policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC note +CONFIG_SND_SOC_AMD_RENOIR mark note +CONFIG_SND_SOC_AMD_RENOIR_MACH mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Amlogic platforms +CONFIG_SND_MESON_AIU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_FRDDR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_TODDR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_TDMIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_TDMOUT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_SOUND_CARD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_SPDIFOUT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_SPDIFIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_AXG_PDM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_GX_SOUND_CARD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_G12A_TOACODEC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_MESON_G12A_TOHDMITX policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_MESON_T9015 policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Mediatek MT8173 chip +CONFIG_SND_SOC_MT8173 policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Rockchip +CONFIG_SND_SOC_ROCKCHIP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_ROCKCHIP_I2S policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_ROCKCHIP_PDM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_ROCKCHIP_SPDIF policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_ROCKCHIP_MAX98090 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_ROCKCHIP_RT5645 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_RK3288_HDMI_ANALOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_RK3399_GRU_SOUND policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Samsung +CONFIG_SND_SOC_SAMSUNG policy<{'armhf': 'm'}> +CONFIG_SND_SAMSUNG_PCM policy<{'armhf': 'm'}> +CONFIG_SND_SAMSUNG_SPDIF policy<{'armhf': 'm'}> +CONFIG_SND_SAMSUNG_I2S policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994 policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SMDK_WM8994_PCM policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SNOW policy<{'armhf': 'm'}> +CONFIG_SND_SOC_ODROID policy<{'armhf': 'm'}> +CONFIG_SND_SOC_ARNDALE policy<{'armhf': 'm'}> +CONFIG_SND_SOC_SAMSUNG_TM2_WM5110 policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for UniPhier +CONFIG_SND_SOC_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_SND_SOC_UNIPHIER_AIO policy<{'armhf': 'm'}> +CONFIG_SND_SOC_UNIPHIER_LD11 policy<{'armhf': 'm'}> +CONFIG_SND_SOC_UNIPHIER_PXS2 policy<{'armhf': 'm'}> +CONFIG_SND_SOC_UNIPHIER_EVEA_CODEC policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Allwinner SoC Audio support +CONFIG_SND_SUN4I_CODEC policy<{'arm64': 'n'}> +CONFIG_SND_SUN8I_CODEC policy<{'arm64': 'm'}> +CONFIG_SND_SUN8I_CODEC_ANALOG policy<{'arm64': 'm'}> +CONFIG_SND_SUN50I_CODEC_ANALOG policy<{'arm64': 'm'}> +CONFIG_SND_SUN4I_I2S policy<{'arm64': 'n'}> +CONFIG_SND_SUN4I_SPDIF policy<{'arm64': 'n'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Audio support for Imagination Technologies designs +CONFIG_SND_SOC_IMG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_SOC_IMG_I2S_IN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMG_I2S_OUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMG_PARALLEL_OUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMG_SPDIF_IN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMG_SPDIF_OUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMG_PISTACHIO_INTERNAL_DAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Audio support for Texas Instruments SoCs +CONFIG_SND_SOC_DAVINCI_MCASP policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_OMAP_DMIC policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_OMAP_MCBSP policy<{'armhf': 'm'}> +CONFIG_SND_SOC_OMAP_MCPDM policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_NOKIA_RX51 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_OMAP3_PANDORA policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_OMAP3_TWL4030 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_OMAP_ABE_TWL6040 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Audio support for Texas Instruments SoCs >> DM365 codec select + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> CODEC drivers +CONFIG_SND_SOC_AC97_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU1701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU1761_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU1761_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU7002 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU7118_HW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ADAU7118_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4104 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4118 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4458 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4554 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4613 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK4642 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK5386 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_AK5558 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ALC5623 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_BD28623 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_BT_SCO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CROS_EC_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_CS35L32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS35L33 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS35L34 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS35L35 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS35L36 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L42 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L51_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L52 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L56 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42L73 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4265 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4270 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4271_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4271_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS42XX8_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS43130 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS4349 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CS53L30 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_CX2072X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_DA7213 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_DMIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES7134 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES7241 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES8316 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES8328_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ES8328_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_GTM601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_INNO_RK3036 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_LOCHNAGAR_SC policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98088 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98357A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98504 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX9867 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98927 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98373 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX98390 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX9860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MSM8916_WCD_ANALOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MSM8916_WCD_DIGITAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM1681 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM1789_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM179X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM179X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM186X_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM186X_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM3060_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM3060_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM3168A_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM3168A_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM512x_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_PCM512x_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RK3328 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT1308_SDW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT5616 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT5631 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT5682_SDW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT700_SDW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT711_SDW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_RT715_SDW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SGTL5000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SIMPLE_AMPLIFIER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SIRF_AUDIO_CODEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SPDIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM2305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM2602_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM2602_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SSM4567 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STA32X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STA350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_STI_SAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS2552 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS2562 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS2770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS5086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS571X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS5720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TAS6424 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TDA7419 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TFA9879 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC23_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC23_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC31XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC32X4_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC32X4_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320AIC3X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TLV320ADCX140 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TS3A227E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TSCS42XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TSCS454 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_UDA1334 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WCD9335 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WCD934X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8510 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8523 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8524 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8580 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8728 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8731 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8741 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8753 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8776 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8782 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8804_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8804_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8903 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8904 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8960 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8962 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8974 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8978 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WM8985 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_WSA881X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ZL38060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_ZX_AUD96P22 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MAX9759 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MT6351 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MT6358 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MT6660 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_NAU8540 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_NAU8810 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_NAU8822 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_NAU8824 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_TPA6130A2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC_SGTL5000 flag + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Intel ASoC SST drivers +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL policy<{'amd64': 'y'}> +CONFIG_SND_SOC_INTEL_HASWELL policy<{'amd64': 'm'}> +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI policy<{'amd64': 'm'}> +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SKYLAKE policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_SKL policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_APL policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_GLK policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CNL policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_CFL policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_CML_H policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_CML_LP policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC policy<{'amd64': 'n'}> +# +CONFIG_SND_SOC_INTEL_SKYLAKE mark note +CONFIG_SND_SOC_INTEL_CNL mark note +CONFIG_SND_SOC_INTEL_CFL mark note +CONFIG_SND_SOC_INTEL_CML_H mark note +CONFIG_SND_SOC_INTEL_CML_LP mark note +CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Intel ASoC SST drivers >> Intel Machine drivers +CONFIG_SND_SOC_INTEL_MACH policy<{'amd64': 'y'}> +CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_HASWELL_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BROADWELL_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH policy<{'amd64': 'n'}> +CONFIG_SND_SOC_INTEL_SKL_RT286_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_BXT_RT298_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH policy<{'amd64': 'm'}> +CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> STMicroelectronics STM32 SOC audio support + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs +CONFIG_SND_SOC_FSL_ASRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_MQS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_AUDMIX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_SPDIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_ESAI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_MICFIL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_FSL_EASRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_IMX_AUDMUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +# +CONFIG_SND_SOC_FSL_SSI flag +CONFIG_SND_SOC_IMX_AUDMUX flag + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs >> SoC Audio for Freescale PowerPC CPUs + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs >> SoC Audio for Freescale i.MX CPUs +CONFIG_SND_IMX_SOC policy<{'arm64': 'm', 'armhf-generic': 'y'}> +CONFIG_SND_SOC_EUKREA_TLV320 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_ES8328 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_SGTL5000 policy<{'arm64': 'm', 'armhf-generic': 'y'}> +CONFIG_SND_SOC_IMX_SPDIF policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_MC13783 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_FSL_ASOC_CARD policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_SND_SOC_IMX_AUDMIX policy<{'arm64': 'm', 'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale MXS CPUs + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Atmel System-on-Chip +CONFIG_SND_ATMEL_SOC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_MIKROE_PROTO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Intel PXA2xx chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Tegra System-on-Chip +CONFIG_SND_SOC_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA20_AC97 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA20_DAS policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA20_I2S policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA20_SPDIF policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA30_AHUB policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA30_I2S policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_RT5640 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM8753 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM8903 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_WM9712 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_TRIMSLICE policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_ALC5632 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_MAX98090 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_RT5677 policy<{'armhf-generic': 'm'}> +CONFIG_SND_SOC_TEGRA_SGTL5000 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for Renesas SoCs +CONFIG_SND_SOC_SH4_FSI policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_SND_SOC_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for Ux500 platform + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for the Cirrus Logic EP93xx series + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Sound Open Firmware Support +CONFIG_SND_SOC_SOF_TOPLEVEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_SOC_SOF_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SOF_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_SND_SOC_SOF_OF policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SOC_SOF_DEBUG_PROBES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SND_SOC_SOF_IMX_TOPLEVEL policy<{'arm64': 'y'}> +CONFIG_SND_SOC_SOF_IMX8_SUPPORT policy<{'arm64': 'y'}> +CONFIG_SND_SOC_SOF_IMX8M_SUPPORT policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Sound Open Firmware Support >> SOF developer options support +CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Sound Open Firmware Support >> SOF developer options support >> SOF debugging features + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> Sound Open Firmware Support >> SOF support for Intel audio DSPs +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_MERRIFIELD_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_APOLLOLAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_GEMINILAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_CANNONLAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_COFFEELAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_ICELAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_COMETLAKE_LP_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_TIGERLAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_ELKHARTLAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_JASPERLAKE_SUPPORT policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_HDA_LINK policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC policy<{'amd64': 'y'}> +CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 policy<{'amd64': 'n'}> +# +CONFIG_SND_SOC_SOF_HDA_LINK mark note +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC mark note +CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ARM sound devices +CONFIG_SND_ARM policy<{'armhf': 'y'}> +CONFIG_SND_ARMAACI policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Apple Onboard Audio driver + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Atmel devices (AT91) + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Debug +CONFIG_SND_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices +CONFIG_SND_FIREWIRE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_DICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_OXFW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ISIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREWORKS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BEBOB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREWIRE_DIGI00X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREWIRE_TASCAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREWIRE_MOTU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FIREFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> GSC sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Generic sound devices +CONFIG_SND_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_PCSP policy<{'amd64': 'm'}> +CONFIG_SND_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALOOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIRMIDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MTPAV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MTS64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SERIAL_U16550 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MPU401 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PORTMAN2X4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AC97_POWER_SAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_AC97_POWER_SAVE_DEFAULT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio +CONFIG_SND_HDA_INTEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_SND_HDA_HWDEP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_RECONFIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_INPUT_BEEP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_INPUT_BEEP_MODE policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_SND_HDA_PATCH_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_CODEC_REALTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_ANALOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_SIGMATEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_VIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_HDMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CIRRUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CONEXANT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0110 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0132 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_CA0132_DSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDA_CODEC_CMEDIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_CODEC_SI3054 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDA_POWER_SAVE_DEFAULT policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1'}> +# +CONFIG_SND_HDA_RECONFIG note +CONFIG_SND_HDA_POWER_SAVE_DEFAULT note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ISA sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> MIPS sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCI sound devices +CONFIG_SND_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_AD1889 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALS300 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ALS4000 policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ALI5451 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ASIHPI policy<{'amd64': 'm'}> +CONFIG_SND_ATIIXP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ATIIXP_MODEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8810 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8820 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AU8830 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AW2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_AZT3328 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_BT87X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BT87X_OVERCLOCK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SND_CA0106 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CMIPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_OXYGEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS4281 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS46XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_CS46XX_NEW_DSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_CTXFI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DARLA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_GINA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LAYLA20 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_DARLA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_GINA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LAYLA24 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MONA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ECHO3G policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGOIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGODJ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGOIOX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INDIGODJX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_EMU10K1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_EMU10K1X policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ENS1370 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ENS1371 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ES1938 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ES1968 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ES1968_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_SND_ES1968_RADIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_SND_FM801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_FM801_TEA575X_BOOL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_HDSP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_HDSPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_ICE1712 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_ICE1724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INTEL8X0 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_INTEL8X0M policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_KORG1212 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LOLA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_LX6464ES policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_SND_MAESTRO3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_MAESTRO3_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_SND_MIXART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_NM256 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_PCXHR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RIPTIDE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME96 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_RME9652 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SONICVIBES policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_TRIDENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm'}> +CONFIG_SND_VIA82XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIA82XX_MODEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VIRTUOSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_VX222 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_YMFPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCMCIA sound devices +CONFIG_SND_PCMCIA policy<{'amd64': 'y'}> +CONFIG_SND_VXPOCKET policy<{'amd64': 'm'}> +CONFIG_SND_PDAUDIOCF policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PowerPC sound devices +CONFIG_SND_PPC policy<{'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SPI sound devices +CONFIG_SND_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SUPERH sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Sequencer support +CONFIG_SND_SEQUENCER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SEQ_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_SEQUENCER_OSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SND_SEQ_HRTIMER_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> Sparc sound devices + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> USB sound devices +CONFIG_SND_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_USB_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_UA101 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_USX2Y policy<{'amd64': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_CAIAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_CAIAQ_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SND_USB_US122L policy<{'amd64': 'm'}> +CONFIG_SND_USB_6FIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_HIFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_BCD2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_POD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_PODHD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_TONEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SND_USB_VARIAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> X86 sound devices +CONFIG_SND_X86 policy<{'amd64': 'y'}> +CONFIG_HDMI_LPE_AUDIO policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> SoundWire support +CONFIG_SOUNDWIRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SOUNDWIRE_INTEL policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_SOUNDWIRE_QCOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_SOUNDWIRE mark note + +# Menu: Device Drivers >> Staging drivers +CONFIG_STAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PRISM2_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8723BS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_R8712U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_R8188EU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_88EU_AP_MODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RTS5208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VT6655 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VT6656 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_SM750 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMXX policy<{'arm64': 'm', 'armhf': 'y'}> +CONFIG_STAGING_BOARD policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_LTE_GDM724X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FIREWIRE_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FWTTY_MAX_TOTAL_PORTS policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'ppc64el': '64'}> +CONFIG_FWTTY_MAX_CARD_PORTS policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32'}> +CONFIG_GS_FPGABOOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMMON_CLK_XLNX_CLKWZRD policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_FSL_DPAA2 policy<{'arm64': 'y'}> +CONFIG_FSL_DPAA2_ETHSW policy<{'arm64': 'm'}> +CONFIG_WILC1000_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WILC1000_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WILC1000_HW_OOB_INTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KS7010 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_BOOTROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_FIRMWARE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_LIGHT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_LOOPBACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_POWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_VIBRATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PI433 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XIL_AXIS_FIFO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QLGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WFX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_STAGING flag + +# Menu: Device Drivers >> Staging drivers >> Android +CONFIG_ASHMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Android >> Ion Memory Manager +CONFIG_ION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> Broadcom VideoCore support +CONFIG_BCM_VIDEOCORE policy<{'arm64': 'm'}> +CONFIG_BCM2835_VCHIQ policy<{'arm64': 'm'}> +CONFIG_SND_BCM2835 policy<{'arm64': 'm'}> +CONFIG_VIDEO_BCM2835 policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Daktronics KPC Device support +CONFIG_KPC2000 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KPC2000_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KPC2000_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KPC2000_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_KPC2000_DMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) +CONFIG_COMEDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB policy<{'amd64': '2048', 'arm64': '2048', 'armhf': '2048', 'ppc64el': '2048'}> +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB policy<{'amd64': '20480', 'arm64': '20480', 'armhf': '20480', 'ppc64el': '20480'}> +CONFIG_COMEDI_8255_SA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_KCOMEDILIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi ISA and PC/104 drivers +CONFIG_COMEDI_ISA_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_COMEDI_PCL711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL726 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL730 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL812 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL816 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCL818 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCM3724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_DIO200_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC236_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC263_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTI800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTI802 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAC02 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS16M1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS08_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS1800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS6402 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2801 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2811 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2814 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2815 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT2817 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT282X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DMM32AT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_FL512 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AIO_AIO12_8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AIO_IIRO_16 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_II_PCI20KC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_C6XDIGIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MPC624 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADQ12B policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_AT_A2150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_AT_AO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_ATMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_ATMIO16D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_LABPC_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMDA12 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PCMUIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MULTIQ3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_S526 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCI drivers +CONFIG_COMEDI_PCI_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_8255_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1500 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1516 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_1564 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_16XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_2032 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_2200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3120 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADDI_APCI_3XXX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI6208 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI7X3X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI8164 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI9111 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADL_PCI9118 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1710 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1723 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1724 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI1760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ADV_PCI_DIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_DIO200_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC236_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PC263_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PCI224 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_AMPLC_PCI230 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CONTEC_PCI_DIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAS08_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT3000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DYNA_PCI10XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_GSC_HPDI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_MF6X4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ICP_MULTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DAQBOARD2000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_JR3_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_KE_COUNTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDAS64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIDDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIMDAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_CB_PCIMDDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ME4000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_ME_DAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_6527 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_65XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_660X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_670X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_LABPC_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_PCIDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_PCIMIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_RTD520 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_S626 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCMCIA drivers +CONFIG_COMEDI_PCMCIA_DRIVERS policy<{'amd64': 'm'}> +CONFIG_COMEDI_CB_DAS16_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_DAS08_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_NI_DAQ_700_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_NI_DAQ_DIO24_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_NI_LABPC_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_NI_MIO_CS policy<{'amd64': 'm'}> +CONFIG_COMEDI_QUATECH_DAQP_CS policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi USB drivers +CONFIG_COMEDI_USB_DRIVERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_DT9812 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_NI_USB6501 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUXFAST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_USBDUXSIGMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_VMK80XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi misc drivers +CONFIG_COMEDI_MISC_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_COMEDI_BOND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_COMEDI_PARPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Fieldbus Device Support +CONFIG_FIELDBUS_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HMS_ANYBUSS_BUS policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ARCX_ANYBUS_CONTROLLER policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HMS_PROFINET policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Gasket devices +CONFIG_STAGING_GASKET_FRAMEWORK policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_STAGING_APEX_DRIVER policy<{'amd64': 'm', 'arm64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Greybus Bridged PHY Class drivers +CONFIG_GREYBUS_BRIDGED_PHY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GREYBUS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Accelerometers +CONFIG_ADIS16203 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADIS16240 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Active energy metering IC +CONFIG_ADE7854 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7854_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADE7854_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog digital bi-direction converters +CONFIG_ADT7316 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADT7316_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ADT7316_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog to digital converters +CONFIG_AD7816 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Capacitance to digital converters +CONFIG_AD7150 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD7746 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Direct Digital Synthesis +CONFIG_AD9832 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AD9834 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Network Analyzer, Impedance Converters +CONFIG_AD5933 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Resolver to digital converters +CONFIG_AD2S1210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> MOST support +CONFIG_MOST_COMPONENTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_CDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_SOUND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_VIDEO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_DIM2 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MOST_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers +CONFIG_STAGING_MEDIA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIDEO_ALLEGRO_DVT policy<{'arm64': 'm'}> +CONFIG_VIDEO_HANTRO policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_HANTRO_IMX8M policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_VIDEO_HANTRO_ROCKCHIP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_VIDEO_IMX_MEDIA policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_MESON_VDEC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_OMAP4 policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_ROCKCHIP_VDEC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_SUNXI policy<{'arm64': 'y'}> +CONFIG_VIDEO_SUNXI_CEDRUS policy<{'arm64': 'm'}> +CONFIG_TEGRA_VDE policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_IPU3_IMGU policy<{'amd64': 'm'}> +CONFIG_PHY_ROCKCHIP_DPHY_RX0 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_ROCKCHIP_ISP1 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VIDEO_USBVISION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> Enable support to Intel Atom ISP camera drivers +CONFIG_INTEL_ATOMISP policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> Enable support to Intel Atom ISP camera drivers >> Intel Atom Image Signal Processor Driver +CONFIG_VIDEO_ATOMISP policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_ISP2401 policy<{'amd64': 'n'}> +CONFIG_VIDEO_ATOMISP_OV5693 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_OV2722 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_GC2235 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_MSRLIST_HELPER policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_MT9M114 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_GC0310 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_OV2680 policy<{'amd64': 'm'}> +CONFIG_VIDEO_ATOMISP_LM3554 policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> SoC camera support + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> i.MX5/6/7 Media Sub devices +CONFIG_VIDEO_IMX_CSI policy<{'armhf-generic': 'm'}> +CONFIG_VIDEO_IMX7_CSI policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> NV Tegra Embedded Controller SMBus Interface +CONFIG_MFD_NVEC policy<{'armhf-generic': 'm'}> +CONFIG_KEYBOARD_NVEC policy<{'armhf-generic': 'm'}> +CONFIG_SERIO_NVEC_PS2 policy<{'armhf-generic': 'm'}> +CONFIG_NVEC_POWER policy<{'armhf-generic': 'm'}> +CONFIG_NVEC_PAZ00 policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech >> Speakup core +CONFIG_SPEAKUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_ACNTSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_APOLLO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_AUDPTR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_BNS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DECTLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DECEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_LTLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_SOFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_SPKOUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_TXPRT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPEAKUP_SYNTH_DUMMY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Support for rtllib wireless devices +CONFIG_RTLLIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_CCMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_TKIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTLLIB_CRYPTO_WEP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_RTL8192E policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Support for small TFT LCD display modules +CONFIG_FB_TFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_AGM1264K_FL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_BD663474 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8340BN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8347D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8353D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_HX8357D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9163 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9320 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9325 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9340 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9481 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ILI9486 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_PCD8544 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_RA8875 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_S6D02A1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_S6D1121 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SH1106 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1289 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1306 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1331 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SSD1351 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ST7735R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_ST7789V policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_TINYLCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_TLS8204 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UC1611 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UC1701 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_UPD161704 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_WATTEROTT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_FB_TFT_SEPS525 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Staging drivers >> Unisys SPAR driver support +CONFIG_UNISYSSPAR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UNISYS_VISORNIC policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORINPUT policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORHBA policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> TEE drivers +CONFIG_OPTEE policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_OPTEE_SHM_NUM_PRIV_PAGES policy<{'arm64': '1', 'armhf': '1'}> +CONFIG_AMDTEE policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> TI VLYNQ + +# Menu: Device Drivers >> Thermal drivers +CONFIG_THERMAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_THERMAL_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_THERMAL_HWMON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_WRITABLE_TRIPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_FAIR_SHARE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_STEP_WISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_BANG_BANG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_USER_SPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_POWER_ALLOCATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CLOCK_THERMAL policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_DEVFREQ_THERMAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_EMULATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_MMIO policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_HISI_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_IMX_THERMAL policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX_SC_THERMAL policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX8MM_THERMAL policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_K3_THERMAL policy<{'arm64': 'm'}> +CONFIG_MAX77620_THERMAL policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SUN8I_THERMAL policy<{'arm64': 'm'}> +CONFIG_ROCKCHIP_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RCAR_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RCAR_GEN3_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_DOVE_THERMAL policy<{'armhf': 'm'}> +CONFIG_ARMADA_THERMAL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_DA9062_THERMAL policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MTK_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_AMLOGIC_THERMAL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_GENERIC_ADC_THERMAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SPRD_THERMAL policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> APIs to parse thermal data out of device tree +CONFIG_THERMAL_OF policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_THERMAL policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_THERMAL policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_THERMAL policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_QORIQ_THERMAL policy<{'arm64': 'm'}> +CONFIG_UNIPHIER_THERMAL policy<{'armhf': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> Broadcom thermal drivers +CONFIG_BCM2711_THERMAL policy<{'arm64': 'm'}> +CONFIG_BCM2835_THERMAL policy<{'arm64': 'm'}> +CONFIG_BRCMSTB_THERMAL policy<{'arm64': 'm'}> +CONFIG_BCM_NS_THERMAL policy<{'arm64': 'm'}> +CONFIG_BCM_SR_THERMAL policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> Default Thermal governor +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> Thermal drivers >> Intel thermal drivers +CONFIG_INTEL_POWERCLAMP policy<{'amd64': 'm'}> +CONFIG_X86_PKG_TEMP_THERMAL policy<{'amd64': 'm'}> +CONFIG_INTEL_SOC_DTS_THERMAL policy<{'amd64': 'm'}> +CONFIG_INTEL_BXT_PMIC_THERMAL policy<{'amd64': 'm'}> +CONFIG_INTEL_PCH_THERMAL policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> Intel thermal drivers >> ACPI INT340X thermal drivers +CONFIG_INT340X_THERMAL policy<{'amd64': 'm'}> +CONFIG_INT3406_THERMAL policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> NVIDIA Tegra thermal drivers +CONFIG_TEGRA_SOCTHERM policy<{'armhf-generic': 'n'}> +CONFIG_TEGRA_BPMP_THERMAL policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> Qualcomm thermal drivers +CONFIG_QCOM_TSENS policy<{'arm64-generic': 'm', 'arm64-generic-64k': 'm', 'armhf': 'm'}> +CONFIG_QCOM_SPMI_TEMP_ALARM policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> Thermal drivers >> STMicroelectronics thermal drivers + +# Menu: Device Drivers >> Thermal drivers >> Samsung thermal drivers +CONFIG_EXYNOS_THERMAL policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Thermal drivers >> Texas Instruments thermal drivers + +# Menu: Device Drivers >> Thermal drivers >> Texas Instruments thermal drivers >> Texas Instruments SoCs temperature sensor driver +CONFIG_TI_SOC_THERMAL policy<{'arm64': 'n', 'armhf': 'm', 'ppc64el': 'n'}> +CONFIG_TI_THERMAL policy<{'armhf': 'y'}> +CONFIG_OMAP3_THERMAL policy<{'armhf-generic': 'n'}> +CONFIG_OMAP4_THERMAL policy<{'armhf-generic': 'y'}> +CONFIG_DRA752_THERMAL policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> USB support +CONFIG_USB_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_USB_LED_TRIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ULPI_BUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CONN_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_UHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ROLE_SWITCH policy<{'amd64': 'm', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_USB_ROLES_INTEL_XHCI policy<{'amd64': 'm'}> +# +CONFIG_USB_UHCI_HCD mark note flag + +# Menu: Device Drivers >> USB support >> ChipIdea Highspeed Dual Role Controller +CONFIG_USB_CHIPIDEA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_UDC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CHIPIDEA_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CHIPIDEA_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_MSM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_IMX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHIPIDEA_TEGRA policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB +CONFIG_USB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ANNOUNCE_NEW_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DEFAULT_PERSIST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DYNAMIC_MINORS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OTG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OTG_WHITELIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_OTG_BLACKLIST_HUB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_LEDS_TRIGGER_USBPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AUTOSUSPEND_DELAY policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_USB_MON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_C67X00_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_BRCMSTB policy<{'arm64': 'm'}> +CONFIG_USB_OXU210HP_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISP116X_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FOTG210_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MAX3421_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FHCI_HCD policy<{'ppc64el': 'm'}> +CONFIG_FHCI_DEBUG policy<{'ppc64el': 'n'}> +CONFIG_USB_U132_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SL811_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SL811_HCD_ISO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SL811_CS policy<{'amd64': 'm'}> +CONFIG_USB_R8A66597_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RENESAS_USBHS_HCD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_IMX21_HCD policy<{'armhf-generic': 'm'}> +CONFIG_USB_HCD_BCMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'n', 'ppc64el': 'm'}> +CONFIG_USB_HCD_SSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'n', 'ppc64el': 'm'}> +CONFIG_USB_HCD_TEST_MODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_RENESAS_USBHS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_ACM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_WDM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MDC800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MICROTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MTU3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_MTU3_DEBUG policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_USB_ISP1760 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_USS720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMI62 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EMI26 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ADUTUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SEVSEG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LEGOTOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CYPRESS_CY7C63 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CYTHERM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IDMOUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FTDI_ELAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_APPLEDISPLAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_APPLE_MFI_FASTCHARGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SISUSBVGA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TRANCEVIBRATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_IOWARRIOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EHSET_TEST_FIXTURE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ISIGHTFW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_YUREX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EZUSB_FX2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HUB_USB251XB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HSIC_USB3503 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_HSIC_USB4604 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_LINK_LAYER_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CHAOSKEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_USB_OTG note +CONFIG_USB_OTG_WHITELIST note +CONFIG_USB_OTG_BLACKLIST_HUB note +CONFIG_USB_HCD_BCMA note +CONFIG_USB_HCD_SSB note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Cadence USB3 Dual-Role Controller +CONFIG_USB_CDNS3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CDNS3_GADGET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CDNS3_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CDNS3_PCI_WRAP policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_USB_CDNS3_TI policy<{'arm64': 'm'}> +CONFIG_USB_CDNS3_IMX policy<{'arm64': 'm', 'armhf-generic': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support +CONFIG_USB_DWC2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_USB_DWC2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC2_TRACK_MISSED_SOFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support >> DWC2 Mode Selection +CONFIG_USB_DWC2_HOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PERIPHERAL policy<{'armhf': 'n'}> +CONFIG_USB_DWC2_DUAL_ROLE policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support +CONFIG_USB_DWC3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DWC3_ULPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC3_OMAP policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_EXYNOS policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_PCI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_USB_DWC3_HAPS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DWC3_KEYSTONE policy<{'arm64': 'm'}> +CONFIG_USB_DWC3_MESON_G12A policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_DWC3_OF_SIMPLE policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_DWC3_QCOM policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support >> DWC3 Mode Selection +CONFIG_USB_DWC3_HOST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC3_GADGET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_DWC3_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> EHCI HCD (USB 2.0) support +CONFIG_USB_EHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_ROOT_HUB_TT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_TT_NEWSCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_EHCI_FSL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EHCI_MXC policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_USB_EHCI_HCD_NPCM7XX policy<{'armhf': 'm'}> +CONFIG_USB_EHCI_HCD_OMAP policy<{'armhf': 'm'}> +CONFIG_USB_EHCI_HCD_ORION policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_USB_EHCI_TEGRA policy<{'armhf-generic': 'm'}> +CONFIG_USB_EHCI_HCD_PPC_OF policy<{'ppc64el': 'y'}> +CONFIG_USB_EHCI_EXYNOS policy<{'armhf': 'y'}> +CONFIG_USB_EHCI_HCD_PLATFORM policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'n', 'ppc64el': 'm'}> +# +CONFIG_USB_EHCI_HCD_PLATFORM mark note flag +CONFIG_USB_EHCI_HCD mark note flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> ISP1760 Mode Selection +CONFIG_USB_ISP1760_HOST_ROLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ISP1760_GADGET_ROLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ISP1760_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller +CONFIG_USB_MUSB_HDRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_USB_MUSB_SUNXI policy<{'arm64': 'm'}> +CONFIG_USB_MUSB_TUSB6010 policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_OMAP2PLUS policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_AM35X policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_DSPS policy<{'armhf': 'm'}> +CONFIG_USB_MUSB_MEDIATEK policy<{'arm64': 'm', 'armhf': 'm'}> +# +CONFIG_USB_MUSB_HDRC note flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller >> Disable DMA (always use PIO) +CONFIG_MUSB_PIO_ONLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller >> MUSB Mode Selection +CONFIG_USB_MUSB_HOST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_MUSB_GADGET policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_MUSB_DUAL_ROLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> MTU3 Mode Selection +CONFIG_USB_MTU3_HOST policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_USB_MTU3_GADGET policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_USB_MTU3_DUAL_ROLE policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> OHCI HCD (USB 1.1) support +CONFIG_USB_OHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OHCI_HCD_OMAP3 policy<{'armhf-generic': 'm'}> +CONFIG_USB_OHCI_HCD_PPC_OF_BE policy<{'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PPC_OF_LE policy<{'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_OHCI_EXYNOS policy<{'armhf': 'y'}> +CONFIG_USB_OHCI_HCD_PLATFORM policy<{'amd64': 'y', 'arm64': 'm', 'armhf-generic': 'm', 'armhf-generic-lpae': 'n', 'ppc64el': 'm'}> +# +CONFIG_USB_OHCI_HCD marknote +CONFIG_USB_OHCI_HCD_PPC_OF_LE flag + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB DSL modem support +CONFIG_USB_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SPEEDTOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CXACRU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_UEAGLEATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_XUSBATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Mass Storage support +CONFIG_USB_STORAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_STORAGE_REALTEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REALTEK_AUTOPM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_STORAGE_DATAFAB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_FREECOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ISD200 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_USBAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_SDDR09 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_SDDR55 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_JUMPSHOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ALAUDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ONETOUCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_KARMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_CYPRESS_ATACB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_STORAGE_ENE_UB6250 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_UAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support +CONFIG_USB_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_GENERIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_SIMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_AIRCABLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_ARK3116 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_BELKIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CH341 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_WHITEHEAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_DIGI_ACCELEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CP210X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CYPRESS_M8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EMPEG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_FTDI_SIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_VISOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IPAQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EDGEPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_EDGEPORT_TI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_F81232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_F8153X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_GARMIN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IPW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_IUU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KEYSPAN_PDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KLSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KOBIL_SCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MCT_U232 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_METRO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MOS7720 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MOS7715_PARPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_SERIAL_MOS7840 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_MXUPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_NAVMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_PL2303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OTI6858 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QCAUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QUALCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SPCP8X5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SAFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SAFE_PADDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_SERIAL_SIERRAWIRELESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SYMBOL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_TI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_CYBERJACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_XIRCOM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OPTION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OMNINET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_OPTICON policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_XSENS_MT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_WISHBONE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_SSU100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_QT2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_UPD78F0730 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_DEBUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SERIAL_KEYSPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_USB_SERIAL_DEBUG note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB/IP support +CONFIG_USBIP_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_VHCI_HCD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_VHCI_HC_PORTS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> +CONFIG_USBIP_VHCI_NR_HCS policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1'}> +CONFIG_USBIP_HOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_VUDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USBIP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> xHCI HCD (USB 3.0) support +CONFIG_USB_XHCI_HCD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_XHCI_DBGCAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_XHCI_PCI_RENESAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_XHCI_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_XHCI_HISTB policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_XHCI_MTK policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_XHCI_MVEBU policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_XHCI_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_XHCI_TEGRA policy<{'armhf-generic': 'm'}> +# +CONFIG_USB_XHCI_HCD mark note flag +CONFIG_USB_XHCI_DBGCAP note + +# Menu: Device Drivers >> USB support >> USB Gadget Support +CONFIG_USB_GADGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_DEBUG_FILES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_GADGET_VBUS_DRAW policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_U_SERIAL_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget functions configurable through configfs +CONFIG_USB_CONFIGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CONFIGFS_SERIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ACM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_OBEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_NCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ECM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_ECM_SUBSET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_EEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_PHONET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_MASS_STORAGE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_LB_SS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UAC1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UAC2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_MIDI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_HID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_UVC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_PRINTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_CONFIGFS_F_TCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget precomposed configurations +CONFIG_USB_ZERO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AUDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GADGET_UAC1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_GADGET_UAC1_LEGACY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_ETH_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ETH_EEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_G_NCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGETFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MASS_STORAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_TARGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_SERIAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MIDI_GADGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_PRINTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_CDC_COMPOSITE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_NOKIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_ACM_MS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_MULTI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'm', 'ppc64el': 'n'}> +CONFIG_USB_G_MULTI_RNDIS policy<{'armhf': 'y'}> +CONFIG_USB_G_MULTI_CDC policy<{'armhf': 'y'}> +CONFIG_USB_G_HID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_DBGP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_G_WEBCAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RAW_GADGET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget precomposed configurations >> EHCI Debug Device mode +CONFIG_USB_G_DBGP_PRINTK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_G_DBGP_SERIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget precomposed configurations >> Function Filesystem +CONFIG_USB_FUNCTIONFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_FUNCTIONFS_ETH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_FUNCTIONFS_RNDIS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_FUNCTIONFS_GENERIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller +CONFIG_USB_FSL_USB2 policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_USB_FUSB300 policy<{'armhf-generic': 'm'}> +CONFIG_USB_FOTG210_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GR_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_R8A66597 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_RENESAS_USBHS_UDC policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_RENESAS_USB3 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_USB_PXA27X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MV_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MV_U3D policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_SNP_UDC_PLAT policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_M66592 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_USB_BDC_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_AMD5536UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET2272 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_NET2272_DMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_NET2280 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GOKU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_EG20T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_XILINX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MAX3420_UDC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_TEGRA_XUDC policy<{'armhf-generic': 'm'}> +CONFIG_USB_ASPEED_VHUB policy<{'armhf': 'm'}> +CONFIG_USB_DUMMY_HCD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_USB_M66592 note +CONFIG_USB_DUMMY_HCD flag + +# Menu: Device Drivers >> USB support >> USB Physical Layer drivers +CONFIG_NOP_USB_XCEIV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_AM335X_PHY_USB policy<{'armhf': 'm'}> +CONFIG_TWL6030_USB policy<{'armhf': 'm'}> +CONFIG_USB_GPIO_VBUS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TAHVO_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TAHVO_USB_HOST_BY_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_USB_ISP1301 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_USB_MXS_PHY policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_USB_TEGRA_PHY policy<{'armhf-generic': 'm'}> +CONFIG_USB_ULPI policy<{'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_NOP_USB_XCEIV note + +# Menu: Device Drivers >> USB support >> USB Type-C Support +CONFIG_TYPEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_UCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_UCSI_CCG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_UCSI_ACPI policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_TYPEC_HD3SS3220 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_TPS6598X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> USB Type-C Support >> USB Type-C Alternate Mode drivers +CONFIG_TYPEC_DP_ALTMODE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_NVIDIA_ALTMODE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> USB support >> USB Type-C Support >> USB Type-C Multiplexer/DeMultiplexer Switch support +CONFIG_TYPEC_MUX_PI3USB30532 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_MUX_INTEL_PMC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> USB support >> USB Type-C Support >> USB Type-C Port Controller Manager +CONFIG_TYPEC_TCPM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_TCPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_RT1711H policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_FUSB302 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TYPEC_WCOVE policy<{'amd64': 'n'}> + +# Menu: Device Drivers >> Userspace I/O drivers +CONFIG_UIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_UIO_CIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_PDRV_GENIRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_DMEM_GENIRQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_AEC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_SERCOS3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_PCI_GENERIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_NETX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_FSL_ELBC_GPCM policy<{'ppc64el': 'm'}> +CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 policy<{'ppc64el': 'n'}> +CONFIG_UIO_PRUSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_MF624 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UIO_HV_GENERIC policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework +CONFIG_VFIO policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_VFIO_NOIOMMU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VFIO_PCI policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'y', 's390x': 'm'}> +CONFIG_VFIO_PCI_VGA policy<{'amd64': 'y'}> +CONFIG_VFIO_PCI_IGD policy<{'amd64': 'y'}> +CONFIG_VFIO_MDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VFIO_MDEV_DEVICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_VFIO marknote +CONFIG_VFIO_PCI marknote + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework >> VFIO support for platform devices +CONFIG_VFIO_PLATFORM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_AMBA policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_PLATFORM_AMDXGBE_RESET policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_VFIO_PLATFORM_BCMFLEXRM_RESET policy<{'arm64': 'm'}> + +# Menu: Device Drivers >> VHOST drivers +CONFIG_VHOST_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VHOST_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VHOST_SCSI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VHOST_VSOCK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VHOST_VDPA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VHOST_CROSS_ENDIAN_LEGACY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> VME bridge support +CONFIG_VME_BUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VME_CA91CX42 policy<{'amd64': 'm'}> +CONFIG_VME_TSI148 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VME_FAKE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VMIVME_7805 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VME_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Virtio drivers +CONFIG_VIRTIO_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_PCI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_PCI_LEGACY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_VDPA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_VIRTIO_PMEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_VIRTIO_BALLOON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VIRTIO_MEM policy<{'amd64': 'm'}> +CONFIG_VIRTIO_INPUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VIRTIO_MMIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_VIRTIO_PCI flag +CONFIG_VIRTIO_MMIO note + +# Menu: Device Drivers >> Virtualization drivers +CONFIG_VIRT_DRIVERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VBOXGUEST policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Voltage and Current Regulator Support +CONFIG_REGULATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_REGULATOR_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_REGULATOR_FIXED_VOLTAGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> +CONFIG_REGULATOR_VIRTUAL_CONSUMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_USERSPACE_CONSUMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_88PG86X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_88PM800 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_88PM8607 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ACT8865 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ACT8945A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AD5398 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ANATOP policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_REGULATOR_AAT2870 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AB3100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ARIZONA_LDO1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ARIZONA_MICSUPP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AS3711 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AS3722 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_AXP20X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BCM590XX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BD70528 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BD71828 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BD718XX policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_BD9571MWV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_CPCAP policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA903X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9052 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9055 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9062 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9063 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9210 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_DA9211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_FAN53555 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_HI6421 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_HI6421V530 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_HI655X policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_ISL9305 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_ISL6271A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LM363X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LOCHNAGAR policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP3971 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP3972 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP872X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP873X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP8755 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP87565 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LP8788 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LTC3589 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_LTC3676 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX14577 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX1586 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77620 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77650 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8649 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8660 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8907 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8925 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8952 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8973 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8997 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX8998 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77686 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77693 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77802 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MAX77826 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MC13783 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MC13892 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MCP16502 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MP5416 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MP8859 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MP886X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MPQ7920 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6311 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6358 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_MT6380 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_MT6397 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PALMAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PBIAS policy<{'armhf': 'm'}> +CONFIG_REGULATOR_PCAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PCF50633 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PFUZE100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PV88060 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PV88080 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PV88090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_PWM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_QCOM_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_QCOM_RPMH policy<{'arm64': 'm'}> +CONFIG_REGULATOR_QCOM_SMD_RPM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_QCOM_SPMI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RC5T583 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RK808 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RN5T618 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_RT5033 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S2MPA01 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S2MPS11 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_S5M8767 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_SC2731 policy<{'arm64': 'm'}> +CONFIG_REGULATOR_SKY81452 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_SLG51000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_STPMIC1 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TI_ABB policy<{'armhf': 'y'}> +CONFIG_REGULATOR_SY8106A policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_SY8824X policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS51632 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6105X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS62360 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65023 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6507X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65086 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65090 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65132 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65217 policy<{'arm64': 'm', 'armhf': 'y'}> +CONFIG_REGULATOR_TPS65218 policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6524X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS6586X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65910 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS65912 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TPS80031 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_UNIPHIER policy<{'armhf': 'm'}> +CONFIG_REGULATOR_VCTRL policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_VEXPRESS policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_VQMMC_IPQ4019 policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_REGULATOR_WM831X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8350 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8400 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_REGULATOR_WM8994 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +# +CONFIG_REGULATOR_FIXED_VOLTAGE note +CONFIG_REGULATOR_TWL4030 mark note +CONFIG_REGULATOR_TPS65217 mark note + +# Menu: Device Drivers >> Watchdog Timer Support +CONFIG_WATCHDOG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_NOWAYOUT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_OPEN_TIMEOUT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_WATCHDOG_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SOFT_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SOFT_WATCHDOG_PRETIMEOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BD70528_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA9052_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA9055_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA9063_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DA9062_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_GPIO_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MENF21BMC_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MENZ069_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WDAT_WDT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_WM831X_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_WM8350_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_XILINX_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ZIIRAVE_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_RAVE_SP_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MLX_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SP805_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SBSA_WATCHDOG policy<{'arm64': 'm'}> +CONFIG_ARMADA_37XX_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CADENCE_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_FTWDT010_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_S3C2410_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_DW_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMAP_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_K3_RTI_WATCHDOG policy<{'arm64': 'm'}> +CONFIG_ORION_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_RN5T618_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SUNXI_WATCHDOG policy<{'arm64': 'm'}> +CONFIG_NPCM7XX_WATCHDOG policy<{'armhf': 'y'}> +CONFIG_TWL4030_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TS4800_WATCHDOG policy<{'armhf-generic': 'm'}> +CONFIG_MAX63XX_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MAX77620_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IMX2_WDT policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX_SC_WDT policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX7ULP_WDT policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_RETU_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_TEGRA_WATCHDOG policy<{'armhf-generic': 'm'}> +CONFIG_QCOM_WDT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MESON_GXBB_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MESON_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_MEDIATEK_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SMC_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RENESAS_WDT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_RENESAS_RZAWDT policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ASPEED_WATCHDOG policy<{'armhf': 'y'}> +CONFIG_STPMIC1_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_UNIPHIER_WATCHDOG policy<{'armhf': 'm'}> +CONFIG_RTD119X_WATCHDOG policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SPRD_WATCHDOG policy<{'arm64': 'm'}> +CONFIG_PM8916_WATCHDOG policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ACQUIRE_WDT policy<{'amd64': 'm'}> +CONFIG_ADVANTECH_WDT policy<{'amd64': 'm'}> +CONFIG_ALIM1535_WDT policy<{'amd64': 'm'}> +CONFIG_ALIM7101_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EBC_C384_WDT policy<{'amd64': 'm'}> +CONFIG_F71808E_WDT policy<{'amd64': 'm'}> +CONFIG_SP5100_TCO policy<{'amd64': 'm'}> +CONFIG_SBC_FITPC2_WATCHDOG policy<{'amd64': 'm'}> +CONFIG_EUROTECH_WDT policy<{'amd64': 'm'}> +CONFIG_IB700_WDT policy<{'amd64': 'm'}> +CONFIG_IBMASR policy<{'amd64': 'm'}> +CONFIG_WAFER_WDT policy<{'amd64': 'm'}> +CONFIG_I6300ESB_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IE6XX_WDT policy<{'amd64': 'm'}> +CONFIG_ITCO_WDT policy<{'amd64': 'm'}> +CONFIG_ITCO_VENDOR_SUPPORT policy<{'amd64': 'y'}> +CONFIG_IT8712F_WDT policy<{'amd64': 'm'}> +CONFIG_IT87_WDT policy<{'amd64': 'm'}> +CONFIG_HP_WATCHDOG policy<{'amd64': 'm'}> +CONFIG_HPWDT_NMI_DECODING policy<{'amd64': 'y'}> +CONFIG_KEMPLD_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_SC1200_WDT policy<{'amd64': 'm'}> +CONFIG_PC87413_WDT policy<{'amd64': 'm'}> +CONFIG_NV_TCO policy<{'amd64': 'm'}> +CONFIG_60XX_WDT policy<{'amd64': 'm'}> +CONFIG_CPU5_WDT policy<{'amd64': 'm'}> +CONFIG_SMSC_SCH311X_WDT policy<{'amd64': 'm'}> +CONFIG_SMSC37B787_WDT policy<{'amd64': 'm'}> +CONFIG_TQMX86_WDT policy<{'amd64': 'm'}> +CONFIG_VIA_WDT policy<{'amd64': 'm'}> +CONFIG_W83627HF_WDT policy<{'amd64': 'm'}> +CONFIG_W83877F_WDT policy<{'amd64': 'm'}> +CONFIG_W83977F_WDT policy<{'amd64': 'm'}> +CONFIG_MACHZ_WDT policy<{'amd64': 'm'}> +CONFIG_SBC_EPX_C3_WATCHDOG policy<{'amd64': 'm'}> +CONFIG_INTEL_MEI_WDT policy<{'amd64': 'm'}> +CONFIG_NI903X_WDT policy<{'amd64': 'm'}> +CONFIG_NIC7018_WDT policy<{'amd64': 'm'}> +CONFIG_BCM2835_WDT policy<{'arm64': 'm'}> +CONFIG_BCM7038_WDT policy<{'arm64': 'm'}> +CONFIG_MEN_A21_WDT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_WATCHDOG_RTAS policy<{'ppc64el': 'm'}> +CONFIG_DIAG288_WATCHDOG policy<{'s390x': 'm'}> +CONFIG_XEN_WDT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_PCIPCWATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_WDTPCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_USBPCWATCHDOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Watchdog Timer Support >> Enable watchdog pretimeout governors +CONFIG_WATCHDOG_PRETIMEOUT_GOV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Device Drivers >> Watchdog Timer Support >> Enable watchdog pretimeout governors >> Default Watchdog Pretimeout Governor +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers +CONFIG_X86_PLATFORM_DEVICES policy<{'amd64': 'y'}> +CONFIG_ACERHDF policy<{'amd64': 'm'}> +CONFIG_ACER_WIRELESS policy<{'amd64': 'm'}> +CONFIG_APPLE_GMUX policy<{'amd64': 'm'}> +CONFIG_ASUS_LAPTOP policy<{'amd64': 'm'}> +CONFIG_ASUS_WIRELESS policy<{'amd64': 'm'}> +CONFIG_EEEPC_LAPTOP policy<{'amd64': 'm'}> +CONFIG_DCDBAS policy<{'amd64': 'm'}> +CONFIG_DELL_RBTN policy<{'amd64': 'm'}> +CONFIG_DELL_RBU policy<{'amd64': 'm'}> +CONFIG_DELL_SMO8800 policy<{'amd64': 'm'}> +CONFIG_AMILO_RFKILL policy<{'amd64': 'm'}> +CONFIG_DELL_UART_BACKLIGHT policy<{'amd64': 'm'}> +CONFIG_FUJITSU_LAPTOP policy<{'amd64': 'm'}> +CONFIG_FUJITSU_TABLET policy<{'amd64': 'm'}> +CONFIG_GPD_POCKET_FAN policy<{'amd64': 'm'}> +CONFIG_HP_ACCEL policy<{'amd64': 'm'}> +CONFIG_HP_WIRELESS policy<{'amd64': 'm'}> +CONFIG_IBM_RTL policy<{'amd64': 'm'}> +CONFIG_SENSORS_HDAPS policy<{'amd64': 'm'}> +CONFIG_INTEL_CHT_INT33FE policy<{'amd64': 'm'}> +CONFIG_INTEL_HID_EVENT policy<{'amd64': 'm'}> +CONFIG_INTEL_INT0002_VGPIO policy<{'amd64': 'm'}> +CONFIG_INTEL_MENLOW policy<{'amd64': 'm'}> +CONFIG_INTEL_OAKTRAIL policy<{'amd64': 'm'}> +CONFIG_INTEL_VBTN policy<{'amd64': 'm'}> +CONFIG_SURFACE_3_BUTTON policy<{'amd64': 'm'}> +CONFIG_SURFACE_3_POWER_OPREGION policy<{'amd64': 'm'}> +CONFIG_SURFACE_PRO3_BUTTON policy<{'amd64': 'm'}> +CONFIG_MSI_LAPTOP policy<{'amd64': 'm'}> +CONFIG_PCENGINES_APU2 policy<{'amd64': 'm'}> +CONFIG_SAMSUNG_LAPTOP policy<{'amd64': 'm'}> +CONFIG_SAMSUNG_Q10 policy<{'amd64': 'm'}> +CONFIG_TOSHIBA_BT_RFKILL policy<{'amd64': 'm'}> +CONFIG_TOSHIBA_HAPS policy<{'amd64': 'm'}> +CONFIG_ACPI_CMPC policy<{'amd64': 'm'}> +CONFIG_COMPAL_LAPTOP policy<{'amd64': 'm'}> +CONFIG_PANASONIC_LAPTOP policy<{'amd64': 'm'}> +CONFIG_SONY_LAPTOP policy<{'amd64': 'm'}> +CONFIG_SONYPI_COMPAT policy<{'amd64': 'y'}> +CONFIG_SYSTEM76_ACPI policy<{'amd64': 'm'}> +CONFIG_TOPSTAR_LAPTOP policy<{'amd64': 'm'}> +CONFIG_I2C_MULTI_INSTANTIATE policy<{'amd64': 'm'}> +CONFIG_MLX_PLATFORM policy<{'amd64': 'm'}> +CONFIG_TOUCHSCREEN_DMI policy<{'amd64': 'y'}> +CONFIG_INTEL_IPS policy<{'amd64': 'm'}> +CONFIG_INTEL_RST policy<{'amd64': 'm'}> +CONFIG_INTEL_SMARTCONNECT policy<{'amd64': 'm'}> +CONFIG_INTEL_TURBO_MAX_3 policy<{'amd64': 'y'}> +CONFIG_INTEL_UNCORE_FREQ_CONTROL policy<{'amd64': 'm'}> +CONFIG_INTEL_BXTWC_PMIC_TMU policy<{'amd64': 'm'}> +CONFIG_INTEL_CHTDC_TI_PWRBTN policy<{'amd64': 'm'}> +CONFIG_INTEL_MFLD_THERMAL policy<{'amd64': 'm'}> +CONFIG_INTEL_MID_POWER_BUTTON policy<{'amd64': 'm'}> +CONFIG_INTEL_MRFLD_PWRBTN policy<{'amd64': 'm'}> +CONFIG_INTEL_PMC_CORE policy<{'amd64': 'y'}> +CONFIG_INTEL_PUNIT_IPC policy<{'amd64': 'm'}> +CONFIG_INTEL_SCU_PCI policy<{'amd64': 'y'}> +CONFIG_INTEL_SCU_PLATFORM policy<{'amd64': 'm'}> +CONFIG_INTEL_SCU_IPC_UTIL policy<{'amd64': 'm'}> +CONFIG_INTEL_TELEMETRY policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> Dell SMBIOS driver +CONFIG_DELL_SMBIOS policy<{'amd64': 'm'}> +CONFIG_DELL_SMBIOS_WMI policy<{'amd64': 'y'}> +CONFIG_DELL_SMBIOS_SMM policy<{'amd64': 'y'}> +CONFIG_DELL_LAPTOP policy<{'amd64': 'm'}> +CONFIG_DELL_WMI policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> Intel Speed Select Technology interface support +CONFIG_INTEL_SPEED_SELECT_INTERFACE policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> ThinkPad ACPI Laptop Extras +CONFIG_THINKPAD_ACPI policy<{'amd64': 'm'}> +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT policy<{'amd64': 'y'}> +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES policy<{'amd64': 'y'}> +CONFIG_THINKPAD_ACPI_DEBUG policy<{'amd64': 'n'}> +CONFIG_THINKPAD_ACPI_UNSAFE_LEDS policy<{'amd64': 'n'}> +CONFIG_THINKPAD_ACPI_VIDEO policy<{'amd64': 'y'}> +CONFIG_THINKPAD_ACPI_HOTKEY_POLL policy<{'amd64': 'y'}> + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> WMI +CONFIG_ACPI_WMI policy<{'amd64': 'm'}> +CONFIG_WMI_BMOF policy<{'amd64': 'm'}> +CONFIG_ALIENWARE_WMI policy<{'amd64': 'm'}> +CONFIG_HUAWEI_WMI policy<{'amd64': 'm'}> +CONFIG_INTEL_WMI_SBL_FW_UPDATE policy<{'amd64': 'm'}> +CONFIG_INTEL_WMI_THUNDERBOLT policy<{'amd64': 'm'}> +CONFIG_MXM_WMI policy<{'amd64': 'm'}> +CONFIG_PEAQ_WMI policy<{'amd64': 'm'}> +CONFIG_XIAOMI_WMI policy<{'amd64': 'm'}> +CONFIG_ACER_WMI policy<{'amd64': 'm'}> +CONFIG_ASUS_WMI policy<{'amd64': 'm'}> +CONFIG_ASUS_NB_WMI policy<{'amd64': 'm'}> +CONFIG_EEEPC_WMI policy<{'amd64': 'm'}> +CONFIG_DELL_WMI_AIO policy<{'amd64': 'm'}> +CONFIG_DELL_WMI_LED policy<{'amd64': 'm'}> +CONFIG_HP_WMI policy<{'amd64': 'm'}> +CONFIG_IDEAPAD_LAPTOP policy<{'amd64': 'm'}> +CONFIG_SURFACE3_WMI policy<{'amd64': 'm'}> +CONFIG_MSI_WMI policy<{'amd64': 'm'}> +CONFIG_ACPI_TOSHIBA policy<{'amd64': 'm'}> +CONFIG_TOSHIBA_WMI policy<{'amd64': 'n'}> +CONFIG_LG_LAPTOP policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> Xen driver support +CONFIG_XEN_BALLOON policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT policy<{'amd64': '512'}> +CONFIG_XEN_SCRUB_PAGES_DEFAULT policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_DEV_EVTCHN policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_XENFS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_XEN_COMPAT_XENFS policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_SYS_HYPERVISOR policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_GNTDEV policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_XEN_GNTDEV_DMABUF policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_GRANT_DEV_ALLOC policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_XEN_GRANT_DMA_ALLOC policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_PVCALLS_FRONTEND policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_XEN_ACPI_PROCESSOR policy<{'amd64': 'y'}> +CONFIG_XEN_MCE_LOG policy<{'amd64': 'y'}> +CONFIG_XEN_SYMS policy<{'amd64': 'y'}> +# +CONFIG_XEN_ACPI_PROCESSOR mark note + +# Menu: Device Drivers >> Xen driver support >> Backend driver support +CONFIG_XEN_BACKEND policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_PCIDEV_BACKEND policy<{'amd64': 'm'}> +CONFIG_XEN_PVCALLS_BACKEND policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_XEN_SCSI_BACKEND policy<{'amd64': 'm', 'arm64': 'm'}> + +# Menu: Device Drivers >> vDPA drivers +CONFIG_VDPA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_VDPA_SIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IFCVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Dump support +# + +# Menu: Dump support >> Architecture: s390 + +# Menu: Enable loadable module support +CONFIG_MODULES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_FORCE_LOAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_UNLOAD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_FORCE_UNLOAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODVERSIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_SRCVERSION_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_UNUSED_SYMBOLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_MODVERSIONS mark note + +# Menu: Enable loadable module support >> Compression algorithm + +# Menu: Enable loadable module support >> Module signature verification +CONFIG_MODULE_SIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MODULE_SIG_FORCE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Enable loadable module support >> Module signature verification >> Which hash algorithm should modules be signed with? +CONFIG_MODULE_SIG_SHA1 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA224 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA256 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA384 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MODULE_SIG_SHA512 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Enable the block layer +CONFIG_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_BSG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_BSGLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_INTEGRITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_ZONED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_THROTTLING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEV_THROTTLING_LOW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BLK_CMDLINE_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_WBT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_CGROUP_IOLATENCY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BLK_CGROUP_IOCOST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_WBT_MQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_DEBUG_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_SED_OPAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_INLINE_ENCRYPTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_BLK_DEV_THROTTLING note + +# Menu: Enable the block layer >> IO Schedulers +CONFIG_MQ_IOSCHED_DEADLINE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MQ_IOSCHED_KYBER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IOSCHED_BFQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BFQ_GROUP_IOSCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BFQ_CGROUP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Enable the block layer >> Partition Types + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection +CONFIG_PARTITION_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AIX_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_OSF_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_AMIGA_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ATARI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IBM_PARTITION policy<{'s390x': 'y'}> +CONFIG_MAC_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LDM_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_LDM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SGI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ULTRIX_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SUN_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KARMA_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EFI_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSV68_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CMDLINE_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +# +CONFIG_PARTITION_ADVANCED flag + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> Acorn partition support +CONFIG_ACORN_PARTITION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> PC BIOS (MSDOS partition tables) support +CONFIG_MSDOS_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BSD_DISKLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_MINIX_SUBPARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SOLARIS_X86_PARTITION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_UNIXWARE_DISKLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> + +# Menu: Endianness selection +CONFIG_CPU_BIG_ENDIAN policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_CPU_LITTLE_ENDIAN policy<{'arm64': 'y', 'ppc64el': 'y'}> + +# Menu: Endianness selection >> Architecture: powerpc + +# Menu: Executable file formats +CONFIG_BINFMT_ELF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BINFMT_ELF_FDPIC policy<{'armhf': 'y'}> +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BINFMT_SCRIPT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BINFMT_MISC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_COREDUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_BINFMT_SCRIPT mark note + +# Menu: Executable file formats >> Kernel support for flat binaries +CONFIG_BINFMT_FLAT policy<{'armhf': 'y'}> +CONFIG_BINFMT_FLAT_OLD policy<{'armhf': 'y'}> +CONFIG_BINFMT_ZFLAT policy<{'armhf': 'y'}> +CONFIG_BINFMT_SHARED_FLAT policy<{'armhf': 'y'}> + +# Menu: File systems +CONFIG_VALIDATE_FS_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT2_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_EXT3_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_JBD2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_GFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GFS2_FS_LOCKING_DLM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NILFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZONEFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FS_DAX policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXPORTFS_BLOCK_OPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FILE_LOCKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MANDATORY_FILE_LOCKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FS_ENCRYPTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FS_VERITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FS_VERITY_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FS_VERITY_BUILTIN_SIGNATURES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DNOTIFY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INOTIFY_USER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FANOTIFY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FANOTIFY_ACCESS_PERMISSIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_QUOTA_NETLINK_INTERFACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUTOFS4_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_AUTOFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'y'}> +CONFIG_FUSE_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CUSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VIRTIO_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SHIFT_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SHIFT_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UNICODE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UNICODE_NORMALIZATION_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_EXT2_FS note +CONFIG_EXT3_FS note +CONFIG_FUSE_FS note flag + +# Menu: File systems >> Btrfs filesystem support +CONFIG_BTRFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BTRFS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BTRFS_FS_CHECK_INTEGRITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_FS_RUN_SANITY_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_ASSERT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BTRFS_FS_REF_VERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> CD-ROM/DVD Filesystems +CONFIG_ISO9660_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_JOLIET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZISOFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UDF_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: File systems >> Caches +CONFIG_CACHEFILES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CACHEFILES_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CACHEFILES_HISTOGRAM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Caches >> General filesystem local caching manager +CONFIG_FSCACHE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FSCACHE_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FSCACHE_HISTOGRAM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FSCACHE_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FSCACHE_OBJECT_LIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> DOS/FAT/EXFAT/NT Filesystems +CONFIG_MSDOS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_EXFAT_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EXFAT_DEFAULT_IOCHARSET policy<{'amd64': '"utf8"', 'arm64': '"utf8"', 'armhf': '"utf8"', 'ppc64el': '"utf8"'}> +CONFIG_NTFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NTFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NTFS_RW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> + +# Menu: File systems >> DOS/FAT/EXFAT/NT Filesystems >> VFAT (Windows-95) fs support +CONFIG_VFAT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FAT_DEFAULT_CODEPAGE policy<{'amd64': '437', 'arm64': '437', 'armhf': '437', 'ppc64el': '437', 's390x': '437'}> +CONFIG_FAT_DEFAULT_IOCHARSET policy<{'amd64': '"iso8859-1"', 'arm64': '"iso8859-1"', 'armhf': '"iso8859-1"', 'ppc64el': '"iso8859-1"', 's390x': '"iso8859-1"'}> +CONFIG_FAT_DEFAULT_UTF8 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_VFAT_FS mark note + +# Menu: File systems >> Distributed Lock Manager (DLM) +CONFIG_DLM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DLM_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> F2FS filesystem support +CONFIG_F2FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_F2FS_STAT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_CHECK_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_F2FS_IO_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_F2FS_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> F2FS filesystem support >> F2FS compression feature +CONFIG_F2FS_FS_COMPRESSION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_LZ4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_ZSTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_F2FS_FS_LZORLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> JFS filesystem support +CONFIG_JFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_JFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFS_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems +CONFIG_MISC_FILESYSTEMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ORANGEFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ADFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ADFS_FS_RW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_AFFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ECRYPT_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ECRYPT_FS_MESSAGING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HFSPLUS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BEFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BEFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_EFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRAMFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CRAMFS_BLOCKDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CRAMFS_MTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VXFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MINIX_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_OMFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_HPFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX4FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX6FS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QNX6FS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ROMFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_SYSV_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_UFS_FS_WRITE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_UFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_VBOXSF_FS policy<{'amd64': 'm'}> +# +CONFIG_ECRYPT_FS mark note + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support +CONFIG_AUFS_BR_FUSE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BR_HFSPLUS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_AUFS_BR_RAMFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_DIRREN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUFS_EXPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUFS_FHSM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AUFS_HNOTIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_RDU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_SHWH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_AUFS_EXPORT note + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support >> Maximum number of branches +CONFIG_AUFS_BRANCH_MAX_1023 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BRANCH_MAX_127 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUFS_BRANCH_MAX_32767 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AUFS_BRANCH_MAX_511 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> Aufs (Advanced multi layered unification filesystem) support >> method + +# Menu: File systems >> Miscellaneous filesystems >> Default pstore compression algorithm +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> EROFS filesystem support +CONFIG_EROFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_EROFS_FS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_EROFS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EROFS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EROFS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EROFS_FS_ZIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1', 's390x': '1'}> + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support +CONFIG_JFFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_JFFS2_FS_DEBUG policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> +CONFIG_JFFS2_FS_WRITEBUFFER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_WBUF_VERIFY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_SUMMARY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 +CONFIG_JFFS2_COMPRESSION_OPTIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_RTIME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_JFFS2_RUBIN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 >> JFFS2 default compression mode +CONFIG_JFFS2_CMODE_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_PRIORITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_JFFS2_CMODE_FAVOURLZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> Persistent store support +CONFIG_PSTORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PSTORE_DEFLATE_COMPRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PSTORE_LZO_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_LZ4_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_LZ4HC_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_842_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_ZSTD_COMPRESS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_CONSOLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'ppc64el': 'n'}> +CONFIG_PSTORE_PMSG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_FTRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PSTORE_RAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'ppc64el': 'm'}> + +# Menu: File systems >> Miscellaneous filesystems >> Persistent store support >> Log panic/oops to a block device +CONFIG_PSTORE_BLK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_PSTORE_BLK_BLKDEV policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""'}> +CONFIG_PSTORE_BLK_KMSG_SIZE policy<{'amd64': '64', 'arm64': '64', 'armhf': '64', 'ppc64el': '64'}> +CONFIG_PSTORE_BLK_MAX_REASON policy<{'amd64': '2', 'arm64': '2', 'armhf': '2', 'ppc64el': '2'}> +CONFIG_PSTORE_BLK_CONSOLE_SIZE policy<{'armhf': '64'}> + +# Menu: File systems >> Miscellaneous filesystems >> RomFS backing stores +CONFIG_ROMFS_BACKED_BY_BLOCK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ROMFS_BACKED_BY_MTD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ROMFS_BACKED_BY_BOTH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support +CONFIG_SQUASHFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_LZ4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_XZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_ZSTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_4K_DEVBLK_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_EMBEDDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE policy<{'amd64': '3', 'arm64': '3', 'armhf': '3', 'ppc64el': '3', 's390x': '3'}> +# +CONFIG_SQUASHFS_4K_DEVBLK_SIZE note +CONFIG_SQUASHFS mark note + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> Decompressor parallelisation options +CONFIG_SQUASHFS_DECOMP_SINGLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SQUASHFS_DECOMP_MULTI policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> File decompression options +CONFIG_SQUASHFS_FILE_CACHE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SQUASHFS_FILE_DIRECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> UBIFS file system support +CONFIG_UBIFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_UBIFS_ATIME_SUPPORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_UBIFS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UBIFS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UBIFS_FS_AUTHENTICATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Miscellaneous filesystems >> UBIFS file system support >> Advanced compression options +CONFIG_UBIFS_FS_ADVANCED_COMPR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_UBIFS_FS_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UBIFS_FS_ZLIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UBIFS_FS_ZSTD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> Native language support +CONFIG_NLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NLS_DEFAULT policy<{'amd64': '"utf8"', 'arm64': '"utf8"', 'armhf': '"utf8"', 'ppc64el': '"utf8"', 's390x': '"utf8"'}> +CONFIG_NLS_CODEPAGE_437 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NLS_CODEPAGE_737 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_775 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_850 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_852 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_855 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_857 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_860 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_861 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_862 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_863 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_864 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_865 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_866 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_869 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_936 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_950 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_932 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_949 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_874 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_1250 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_CODEPAGE_1251 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ASCII policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_7 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_9 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_13 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_14 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_ISO8859_15 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_KOI8_R policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_KOI8_U policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ROMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CELTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CENTEURO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CROATIAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_CYRILLIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_GAELIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_GREEK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ICELAND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_INUIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_ROMANIAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_MAC_TURKISH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NLS_UTF8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_NLS note + +# Menu: File systems >> Network File Systems +CONFIG_NETWORK_FILESYSTEMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFSD_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_V3_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RPCSEC_GSS_KRB5 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SUNRPC_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SUNRPC_XPRT_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CODA_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: File systems >> Network File Systems >> Andrew File System support (AFS) +CONFIG_AFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AFS_DEBUG_CURSOR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Network File Systems >> Ceph distributed file system +CONFIG_CEPH_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CEPH_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CEPH_FS_SECURITY_LABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> NFS client support +CONFIG_NFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_V3_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFS_SWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_USE_LEGACY_DNS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NFS_DISABLE_UDP_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> NFS client support >> NFS client support for NFSv4.1 +CONFIG_NFS_V4_1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4_2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN policy<{'amd64': '"kernel.org"', 'arm64': '"kernel.org"', 'armhf': '"kernel.org"', 'ppc64el': '"kernel.org"', 's390x': '"kernel.org"'}> +CONFIG_NFS_V4_1_MIGRATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> NFS server support for NFS version 4 +CONFIG_NFSD_V4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_BLOCKLAYOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_SCSILAYOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_FLEXFILELAYOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_V4_SECURITY_LABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_9P_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_9P_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_9P_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_9P_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Network File Systems >> SMB3 and CIFS support (advanced network filesystem) +CONFIG_CIFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CIFS_STATS2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_ALLOW_INSECURE_LEGACY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_WEAK_PW_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_UPCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_POSIX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_DEBUG2 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_DEBUG_DUMP_KEYS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_DFS_UPCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CIFS_SMB_DIRECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CIFS_FSCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_CIFS_ALLOW_INSECURE_LEGACY flag + +# Menu: File systems >> OCFS2 file system support +CONFIG_OCFS2_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_O2CB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_USERSPACE_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OCFS2_FS_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OCFS2_DEBUG_MASKLOG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OCFS2_DEBUG_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> Overlay filesystem support +CONFIG_OVERLAY_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OVERLAY_FS_REDIRECT_DIR policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OVERLAY_FS_INDEX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_OVERLAY_FS_XINO_AUTO policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_OVERLAY_FS_METACOPY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_OVERLAY_FS_METACOPY flag + +# Menu: File systems >> Pseudo filesystems +CONFIG_PROC_CHILDREN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TMPFS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HUGETLBFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CONFIGFS_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EFIVAR_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +# +CONFIG_CONFIGFS_FS flag +CONFIG_EFIVAR_FS note +CONFIG_TMPFS_POSIX_ACL mark note + +# Menu: File systems >> Pseudo filesystems >> /proc file system support +CONFIG_PROC_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_KCORE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_VMCORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_VMCORE_DEVICE_DUMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_SYSCTL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_PAGE_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: File systems >> Quota support +CONFIG_QUOTA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PRINT_QUOTA_WARNING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_QUOTA_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_QFMT_V1 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_QFMT_V2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: File systems >> Reiserfs support +CONFIG_REISERFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_REISERFS_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_REISERFS_PROC_INFO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_REISERFS_FS_XATTR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_REISERFS_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_REISERFS_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: File systems >> The Extended 4 (ext4) filesystem +CONFIG_EXT4_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_USE_FOR_EXT2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_FS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_FS_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EXT4_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: File systems >> XFS filesystem support +CONFIG_XFS_FS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFS_QUOTA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_POSIX_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_RT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XFS_ONLINE_SCRUB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFS_WARN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Firmware Drivers +CONFIG_ARM_SCMI_PROTOCOL policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_SCMI_POWER_DOMAIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SCPI_PROTOCOL policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SCPI_POWER_DOMAIN policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_SDE_INTERFACE policy<{'arm64': 'y'}> +CONFIG_EDD policy<{'amd64': 'y'}> +CONFIG_EDD_OFF policy<{'amd64': 'y'}> +CONFIG_FIRMWARE_MEMMAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DMIID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DMI_SYSFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_ISCSI_IBFT_FIND policy<{'amd64': 'y'}> +CONFIG_ISCSI_IBFT policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_RASPBERRYPI_FIRMWARE policy<{'arm64': 'y'}> +CONFIG_FW_CFG_SYSFS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_FW_CFG_SYSFS_CMDLINE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_INTEL_STRATIX10_SERVICE policy<{'arm64': 'm'}> +CONFIG_INTEL_STRATIX10_RSU policy<{'arm64': 'm'}> +CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_TI_SCI_PROTOCOL policy<{'arm64': 'y'}> +CONFIG_TRUSTED_FOUNDATIONS policy<{'armhf': 'y'}> +CONFIG_TURRIS_MOX_RWTM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_TEE_BNXT_FW policy<{'arm64': 'm'}> +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_IMX_DSP policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_IMX_SCU policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_IMX_SCU_PD policy<{'arm64': 'y', 'armhf-generic': 'y'}> +CONFIG_ARM_PSCI_CHECKER policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Firmware Drivers >> EFI (Extensible Firmware Interface) Support +CONFIG_EFI_VARS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_EFI_VARS_PSTORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n'}> +CONFIG_EFI_RUNTIME_MAP policy<{'amd64': 'y'}> +CONFIG_EFI_FAKE_MEMMAP policy<{'amd64': 'n'}> +CONFIG_EFI_SOFT_RESERVE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_EFI_ARMSTUB_DTB_LOADER policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_EFI_BOOTLOADER_CONTROL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_EFI_CAPSULE_LOADER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_EFI_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm'}> +CONFIG_APPLE_PROPERTIES policy<{'amd64': 'y'}> +CONFIG_RESET_ATTACK_MITIGATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_EFI_RCI2_TABLE policy<{'amd64': 'y'}> +CONFIG_EFI_DISABLE_PCI_DMA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n'}> +# +CONFIG_EFI_VARS mark note + +# Menu: Firmware Drivers >> Google Firmware Drivers +CONFIG_GOOGLE_FIRMWARE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n'}> + +# Menu: Firmware Drivers >> Google Firmware Drivers >> Coreboot Table Access + +# Menu: Firmware Drivers >> Tegra firmware driver +CONFIG_TEGRA_IVC policy<{'armhf-generic': 'y'}> +CONFIG_TEGRA_BPMP policy<{'armhf-generic': 'y'}> + +# Menu: Firmware Drivers >> Zynq MPSoC Firmware Drivers +CONFIG_ZYNQMP_FIRMWARE policy<{'arm64': 'y'}> +CONFIG_ZYNQMP_FIRMWARE_DEBUG policy<{'arm64': 'n'}> + +# Menu: Floating point emulation >> Architecture: arm +CONFIG_VFP policy<{'armhf': 'y'}> +CONFIG_NEON policy<{'armhf': 'y'}> +CONFIG_KERNEL_MODE_NEON policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: General architecture-dependent options +CONFIG_OPROFILE policy<{'amd64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPROFILE_EVENT_MULTIPLEX policy<{'amd64': 'n'}> +CONFIG_KPROBES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_JUMP_LABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STATIC_KEYS_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_STACKPROTECTOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_STACKPROTECTOR_STRONG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ARCH_MMAP_RND_BITS policy<{'amd64': '28', 'arm64': '18', 'armhf': '8', 'ppc64el': '28'}> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS policy<{'amd64': '8', 'arm64': '11', 'ppc64el': '8'}> +CONFIG_COMPAT_32BIT_TIME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VMAP_STACK policy<{'amd64': 'y', 'arm64': 'y', 's390x': 'y'}> +CONFIG_STRICT_KERNEL_RWX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': '-', 's390x': 'y'}> +CONFIG_STRICT_MODULE_RWX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'y'}> +CONFIG_LOCK_EVENT_COUNTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_JUMP_LABEL flag +CONFIG_STRICT_KERNEL_RWX mark +CONFIG_STRICT_MODULE_RWX mark + +# Menu: General architecture-dependent options >> Architecture: arm + +# Menu: General architecture-dependent options >> Architecture: arm64 + +# Menu: General architecture-dependent options >> Architecture: powerpc + +# Menu: General architecture-dependent options >> Architecture: s390 + +# Menu: General architecture-dependent options >> Architecture: x86 + +# Menu: General architecture-dependent options >> GCC plugins + +# Menu: General architecture-dependent options >> GCOV-based kernel profiling +CONFIG_GCOV_KERNEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup +CONFIG_COMPILE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCALVERSION policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_LOCALVERSION_AUTO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BUILD_SALT policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_DEFAULT_INIT policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_DEFAULT_HOSTNAME policy<{'amd64': '"(none)"', 'arm64': '"(none)"', 'armhf': '"(none)"', 'ppc64el': '"(none)"', 's390x': '"(none)"'}> +CONFIG_VERSION_SIGNATURE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_SWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSVIPC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_POSIX_MQUEUE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WATCH_QUEUE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CROSS_MEMORY_ATTACH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USELIB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AUDIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CPU_ISOLATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IKCONFIG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IKHEADERS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LOG_BUF_SHIFT policy<{'amd64': '18', 'arm64': '18', 'armhf': '17', 'ppc64el': '18', 's390x': '18'}> +CONFIG_LOG_CPU_MAX_BUF_SHIFT policy<{'amd64': '12', 'arm64': '12', 'armhf': '12', 'ppc64el': '12', 's390x': '12'}> +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT policy<{'amd64': '13', 'arm64': '13', 'armhf': '13', 'ppc64el': '13', 's390x': '13'}> +CONFIG_NUMA_BALANCING policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CHECKPOINT_RESTORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCHED_AUTOGROUP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS_DEPRECATED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RELAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BOOT_CONFIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LD_DEAD_CODE_DATA_ELIMINATION policy<{'ppc64el': 'n'}> +CONFIG_BPF_LSM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_JIT_ALWAYS_ON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USERFAULTFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EMBEDDED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_COMPAT_BRK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLAB_MERGE_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLAB_FREELIST_RANDOM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLAB_FREELIST_HARDENED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SHUFFLE_PAGE_ALLOCATOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLUB_CPU_PARTIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROFILING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SYSFS_DEPRECATED mark note +CONFIG_COMPAT_BRK mark note +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED note +CONFIG_BPF_JIT_ALWAYS_ON flag +CONFIG_LOCALVERSION_AUTO mark note + +# Menu: General setup >> CPU/Task time and stats accounting +CONFIG_IRQ_TIME_ACCOUNTING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SCHED_THERMAL_PRESSURE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BSD_PROCESS_ACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BSD_PROCESS_ACCT_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASKSTATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_DELAY_ACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_XACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TASK_IO_ACCOUNTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PSI_DEFAULT_DISABLED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +# +CONFIG_PSI_DEFAULT_DISABLED note + +# Menu: General setup >> CPU/Task time and stats accounting >> Cputime accounting +CONFIG_TICK_CPU_ACCOUNTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE policy<{'ppc64el': 'n', 's390x': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_GEN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: General setup >> Choose SLAB allocator +CONFIG_SLAB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLOB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> Compiler optimization level +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CC_OPTIMIZE_FOR_SIZE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> Configure standard kernel features (expert users) +CONFIG_EXPERT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UID16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'y'}> +CONFIG_MULTIUSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SGETMASK_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYSFS_SYSCALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FHANDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_POSIX_TIMERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PRINTK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ELF_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PCSPKR_PLATFORM policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_BASE_FULL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUTEX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EPOLL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SIGNALFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIMERFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVENTFD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SHMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IO_URING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ADVISE_SYSCALLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMBARRIER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KALLSYMS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KALLSYMS_ALL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RSEQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_RSEQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PC104 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_VM_EVENT_COUNTERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLUB_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SLUB_MEMCG_SYSFS_ON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_FHANDLE mark note +CONFIG_SLUB_MEMCG_SYSFS_ON flag + +# Menu: General setup >> Control Group support +CONFIG_CGROUPS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMCG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BLK_CGROUP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_PIDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_RDMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_FREEZER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_HUGETLB policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CPUSETS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROC_PID_CPUSET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_CPUACCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_PERF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_BPF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> Control Group support >> CPU controller +CONFIG_CGROUP_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FAIR_GROUP_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CFS_BANDWIDTH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RT_GROUP_SCHED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_UCLAMP_TASK_GROUP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_RT_GROUP_SCHED mark note note note + +# Menu: General setup >> IRQ subsystem +CONFIG_IRQ_FORCED_THREADING_DEFAULT policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SPARSE_IRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GENERIC_IRQ_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support +CONFIG_BLK_DEV_INITRD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_GZIP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_BZIP2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_XZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RD_LZ4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support >> Initramfs source file(s) +CONFIG_INITRAMFS_SOURCE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support >> Initramfs source file(s) >> Built-in initramfs compression mode + +# Menu: General setup >> Kernel Performance Events And Counters +CONFIG_PERF_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_PERF_USE_VMALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 's390x': 'n'}> + +# Menu: General setup >> Kernel compression mode +CONFIG_KERNEL_GZIP policy<{'amd64': 'n', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_KERNEL_BZIP2 policy<{'amd64': 'n', 's390x': 'n'}> +CONFIG_KERNEL_LZMA policy<{'amd64': 'n', 'armhf': 'n', 's390x': 'n'}> +CONFIG_KERNEL_XZ policy<{'amd64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_KERNEL_LZO policy<{'amd64': 'n', 'armhf': 'n', 's390x': 'n'}> +CONFIG_KERNEL_LZ4 policy<{'amd64': 'y', 'armhf': 'n', 's390x': 'y'}> +CONFIG_KERNEL_UNCOMPRESSED policy<{'s390x': 'n'}> + +# Menu: General setup >> Namespaces support +CONFIG_NAMESPACES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UTS_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIME_NS policy<{'amd64': 'y'}> +CONFIG_IPC_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_USER_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PID_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_NS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: General setup >> Preemption Model +CONFIG_PREEMPT_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_PREEMPT_VOLUNTARY policy<{'amd64-generic': 'y', 'amd64-lowlatency': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_PREEMPT policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_PREEMPT_NONE note + +# Menu: General setup >> RCU Subsystem +# XXX + +# Menu: General setup >> RCU Subsystem >> Make expert-level adjustments to RCU configuration +CONFIG_RCU_EXPERT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_RCU_EXPERT flag + +# Menu: General setup >> Scheduler features +CONFIG_UCLAMP_TASK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_UCLAMP_BUCKETS_COUNT policy<{'amd64': '5', 'arm64': '5', 'armhf': '5', 'ppc64el': '5'}> +# +CONFIG_UCLAMP_TASK flag + +# Menu: General setup >> Timers subsystem +CONFIG_NO_HZ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CONTEXT_TRACKING_FORCE policy<{'amd64': '-', 'arm64': '-', 'armhf': '-', 'ppc64el': '-', 's390x': '-'}> +CONFIG_HIGH_RES_TIMERS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_CONTEXT_TRACKING_FORCE note mark + +# Menu: General setup >> Timers subsystem >> Timer tick handling +CONFIG_HZ_PERIODIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NO_HZ_IDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NO_HZ_FULL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_NO_HZ_IDLE note + +# Menu: I/O subsystem >> Architecture: s390 +CONFIG_QDIO policy<{'s390x': 'm'}> +CONFIG_CHSC_SCH policy<{'s390x': 'm'}> +CONFIG_SCM_BUS policy<{'s390x': 'y'}> +CONFIG_EADM_SCH policy<{'s390x': 'm'}> +CONFIG_VFIO_CCW policy<{'s390x': 'm'}> +CONFIG_VFIO_AP policy<{'s390x': 'm'}> +CONFIG_PCI_NR_FUNCTIONS policy<{'s390x': '512'}> +# +CONFIG_PCI_NR_FUNCTIONS mark note + +# Menu: Kernel hacking +CONFIG_DEBUG_TIMEKEEPING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_STACKTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_WARN_ALL_UNSEEDED_RANDOM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PROVIDE_OHCI1394_DMA_INIT policy<{'amd64': 'n'}> +CONFIG_STRICT_DEVMEM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IO_STRICT_DEVMEM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_STRICT_DEVMEM mark + +# Menu: Kernel hacking >> $(SRCARCH) Debugging +CONFIG_PID_IN_CONTEXTIDR policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_DEBUG_WX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_EARLY_PRINTK policy<{'amd64': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Architecture: arm +CONFIG_DEBUG_USER policy<{'armhf': 'n'}> +CONFIG_DEBUG_VF_UART_PORT policy<{'armhf-generic': '1'}> +CONFIG_ARM_KPROBES_TEST policy<{'armhf': 'm'}> +CONFIG_ARM_PTDUMP_DEBUGFS policy<{'armhf': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Architecture: arm64 +CONFIG_DEBUG_EFI policy<{'arm64': 'n'}> +CONFIG_ARM64_RELOC_TEST policy<{'arm64': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Architecture: powerpc +CONFIG_PPC_DISABLE_WERROR policy<{'ppc64el': 'n'}> +CONFIG_HCALL_STATS policy<{'ppc64el': 'n'}> +CONFIG_PPC_EMULATED_STATS policy<{'ppc64el': 'n'}> +CONFIG_JUMP_LABEL_FEATURE_CHECKS policy<{'ppc64el': 'y'}> +CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG policy<{'ppc64el': 'n'}> +CONFIG_PPC_IRQ_SOFT_MASK_DEBUG policy<{'ppc64el': 'n'}> +CONFIG_BOOTX_TEXT policy<{'ppc64el': 'n'}> +CONFIG_PPC_EARLY_DEBUG policy<{'ppc64el': 'n'}> +CONFIG_PRINT_STACK_DEPTH policy<{'ppc64el': '64'}> +CONFIG_CODE_PATCHING_SELFTEST policy<{'ppc64el': 'n'}> +CONFIG_FTR_FIXUP_SELFTEST policy<{'ppc64el': 'n'}> +CONFIG_MSI_BITMAP_SELFTEST policy<{'ppc64el': 'n'}> +CONFIG_PPC_PTDUMP policy<{'ppc64el': 'n'}> +CONFIG_PPC_FAST_ENDIAN_SWITCH policy<{'ppc64el': 'n'}> +# +CONFIG_PPC_DISABLE_WERROR flag + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Architecture: s390 +CONFIG_S390_PTDUMP policy<{'s390x': 'y'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Architecture: x86 +CONFIG_X86_VERBOSE_BOOTUP policy<{'amd64': 'n'}> +CONFIG_EFI_PGT_DUMP policy<{'amd64': 'n'}> +CONFIG_PUNIT_ATOM_DEBUG policy<{'amd64': 'm'}> +CONFIG_EARLY_PRINTK_DBGP policy<{'amd64': 'y'}> +CONFIG_EARLY_PRINTK_USB_XDBC policy<{'amd64': 'y'}> +CONFIG_DEBUG_TLBFLUSH policy<{'amd64': 'n'}> +CONFIG_IOMMU_DEBUG policy<{'amd64': 'n'}> +CONFIG_X86_DECODER_SELFTEST policy<{'amd64': 'n'}> +CONFIG_DEBUG_BOOT_PARAMS policy<{'amd64': 'n'}> +CONFIG_CPA_DEBUG policy<{'amd64': 'n'}> +CONFIG_DEBUG_ENTRY policy<{'amd64': 'n'}> +CONFIG_DEBUG_NMI_SELFTEST policy<{'amd64': 'n'}> +CONFIG_X86_DEBUG_FPU policy<{'amd64': 'y'}> +# +CONFIG_PUNIT_ATOM_DEBUG flag +CONFIG_X86_DECODER_SELFTEST flag +CONFIG_X86_DEBUG_FPU flag + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Choose kernel unwinder +CONFIG_UNWINDER_FRAME_POINTER policy<{'amd64': 'y', 'armhf': 'y'}> +# +CONFIG_UNWINDER_FRAME_POINTER mark note + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Choose kernel unwinder >> Architecture: arm + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Choose kernel unwinder >> Architecture: x86 +CONFIG_UNWINDER_ORC policy<{'amd64': 'n'}> +CONFIG_UNWINDER_GUESS policy<{'amd64': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> CoreSight Tracing Support +CONFIG_CORESIGHT policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> CoreSight Tracing Support >> CoreSight Link and Sink drivers + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Early debugging console >> Architecture: powerpc + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> IO delay type >> Architecture: x86 +CONFIG_IO_DELAY_0X80 policy<{'amd64': 'n'}> +CONFIG_IO_DELAY_0XED policy<{'amd64': 'y'}> +CONFIG_IO_DELAY_UDELAY policy<{'amd64': 'n'}> +CONFIG_IO_DELAY_NONE policy<{'amd64': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Include xmon kernel debugger >> Architecture: powerpc +CONFIG_XMON policy<{'ppc64el': 'y'}> +CONFIG_XMON_DEFAULT policy<{'ppc64el': 'n'}> +CONFIG_XMON_DISASSEMBLY policy<{'ppc64el': 'y'}> +CONFIG_XMON_DEFAULT_RO_MODE policy<{'ppc64el': 'y'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Kernel low-level debugging functions (read help!) + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Kernel low-level debugging functions (read help!) >> Architecture: arm +CONFIG_DEBUG_LL policy<{'armhf': 'n'}> + +# Menu: Kernel hacking >> $(SRCARCH) Debugging >> Kernel low-level debugging functions (read help!) >> Kernel low-level debugging port >> Architecture: arm + +# Menu: Kernel hacking >> Compile-time checks and compiler options +CONFIG_ENABLE_MUST_CHECK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FRAME_WARN policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'ppc64el': '2048', 's390x': '1024'}> +CONFIG_STRIP_ASM_SYMS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_READABLE_ASM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HEADERS_INSTALL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SECTION_MISMATCH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECTION_MISMATCH_WARN_ONLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRAME_POINTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_STACK_VALIDATION policy<{'amd64': 'y'}> +CONFIG_DEBUG_FORCE_WEAK_PER_CPU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_STACK_VALIDATION mark note + +# Menu: Kernel hacking >> Compile-time checks and compiler options >> Compile the kernel with debug info +CONFIG_DEBUG_INFO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_INFO_REDUCED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_INFO_COMPRESSED policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_INFO_SPLIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_INFO_DWARF4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_INFO_BTF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_GDB_SCRIPTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_DEBUG_INFO mark note +CONFIG_DEBUG_INFO_SPLIT note +CONFIG_DEBUG_INFO_BTF flag note + +# Menu: Kernel hacking >> Debug Oops, Lockups and Hangs +CONFIG_PANIC_ON_OOPS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PANIC_TIMEOUT policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '10', 's390x': '0'}> +CONFIG_SOFTLOCKUP_DETECTOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_HARDLOCKUP_DETECTOR policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC policy<{'amd64': 'n', 'ppc64el': 'n'}> +CONFIG_DETECT_HUNG_TASK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT policy<{'amd64': '120', 'arm64': '120', 'armhf': '120', 'ppc64el': '120', 's390x': '120'}> +CONFIG_BOOTPARAM_HUNG_TASK_PANIC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_WQ_WATCHDOG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LOCKUP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_PANIC_ON_OOPS note + +# Menu: Kernel hacking >> Debug kernel data structures +CONFIG_BUG_ON_DATA_CORRUPTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_LIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_PLIST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_NOTIFIERS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_BUG_ON_DATA_CORRUPTION flag + +# Menu: Kernel hacking >> Generic Kernel Debugging Instruments +CONFIG_MAGIC_SYSRQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE policy<{'amd64': '0x01b6', 'arm64': '0x01b6', 'armhf': '0x01b6', 'ppc64el': '0x01b6', 's390x': '0x01b6'}> +CONFIG_MAGIC_SYSRQ_SERIAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE policy<{'amd64': '""', 'arm64': '""', 'armhf': '""', 'ppc64el': '""', 's390x': '""'}> +CONFIG_DEBUG_FS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# + +# Menu: Kernel hacking >> Generic Kernel Debugging Instruments >> KGDB: kernel debugger +CONFIG_KGDB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KGDB_SERIAL_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KGDB_TESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_KGDB_LOW_LEVEL_TRAP policy<{'amd64': 'y'}> +# +CONFIG_KGDB flag +CONFIG_KGDB_SERIAL_CONSOLE note + +# Menu: Kernel hacking >> Generic Kernel Debugging Instruments >> KGDB: kernel debugger >> KGDB_KDB: include kdb frontend for kgdb +CONFIG_KGDB_KDB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KDB_DEFAULT_ENABLE policy<{'amd64': '0x1', 'arm64': '0x1', 'armhf': '0x1', 'ppc64el': '0x1'}> +CONFIG_KDB_KEYBOARD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KDB_CONTINUE_CATASTROPHIC policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> + +# Menu: Kernel hacking >> Generic Kernel Debugging Instruments >> Undefined behaviour sanity checker +CONFIG_UBSAN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage +CONFIG_MEMTEST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HYPERV_TESTING policy<{'amd64': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> Code coverage for fuzzing +CONFIG_KCOV policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> Fault-injection framework +CONFIG_FAULT_INJECTION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> Fault-injection framework >> Debugfs entries for fault-injection capabilities + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> KUnit - Enable support for unit tests +CONFIG_KUNIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> Notifier error injection +CONFIG_NOTIFIER_ERROR_INJECTION policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PM_NOTIFIER_ERROR_INJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_NETDEV_NOTIFIER_ERROR_INJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Kernel Testing and Coverage >> Runtime Testing +CONFIG_RUNTIME_TESTING_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LKDTM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LIST_SORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_MIN_HEAP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_SORT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_KPROBES_SANITY_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BACKTRACE_SELF_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RBTREE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_REED_SOLOMON_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INTERVAL_TREE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PERCPU_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ATOMIC64_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ASYNC_RAID6_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_HEXDUMP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_STRING_HELPERS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_STRSCPY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_KSTRTOX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_PRINTF policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_BITMAP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_BITFIELD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_UUID policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_XARRAY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_OVERFLOW policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_RHASHTABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_HASH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_IDA policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_PARMAN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LKM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_BITOPS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_VMALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_USER_COPY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TEST_BLACKHOLE_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_FIND_BIT_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_FIRMWARE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_SYSCTL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_UDELAY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_STATIC_KEYS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_KMOD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_MEMCAT_P policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_LIVEPATCH policy<{'amd64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_OBJAGG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_STACKINIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_MEMINIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TEST_HMM policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n'}> +# +CONFIG_RUNTIME_TESTING_MENU flag +CONFIG_LKDTM flag flag +CONFIG_TEST_LIST_SORT flag +CONFIG_TEST_SORT flag +CONFIG_KPROBES_SANITY_TEST flag +CONFIG_BACKTRACE_SELF_TEST flag +CONFIG_RBTREE_TEST flag +CONFIG_INTERVAL_TREE_TEST flag +CONFIG_PERCPU_TEST flag +CONFIG_ATOMIC64_SELFTEST flag +CONFIG_ASYNC_RAID6_TEST flag +CONFIG_TEST_HEXDUMP flag +CONFIG_TEST_STRING_HELPERS flag +CONFIG_TEST_STRSCPY flag +CONFIG_TEST_KSTRTOX flag +CONFIG_TEST_PRINTF flag +CONFIG_TEST_BITMAP flag +CONFIG_TEST_BITFIELD flag +CONFIG_TEST_UUID flag +CONFIG_TEST_XARRAY flag +CONFIG_TEST_OVERFLOW flag +CONFIG_TEST_RHASHTABLE flag +CONFIG_TEST_HASH flag +CONFIG_TEST_IDA flag +CONFIG_TEST_PARMAN flag +CONFIG_TEST_LKM flag +CONFIG_TEST_BITOPS flag +CONFIG_TEST_VMALLOC flag +CONFIG_TEST_USER_COPY flag +CONFIG_TEST_BPF flag +CONFIG_TEST_BLACKHOLE_DEV flag note +CONFIG_FIND_BIT_BENCHMARK flag +CONFIG_TEST_FIRMWARE flag +CONFIG_TEST_SYSCTL flag +CONFIG_TEST_UDELAY flag +CONFIG_TEST_STATIC_KEYS flag +CONFIG_TEST_KMOD flag +CONFIG_TEST_MEMCAT_P flag +CONFIG_TEST_LIVEPATCH flag +CONFIG_TEST_OBJAGG flag +CONFIG_TEST_STACKINIT flag +CONFIG_TEST_MEMINIT flag +CONFIG_TEST_HMM flag + +# Menu: Kernel hacking >> Kernel debugging +CONFIG_DEBUG_KERNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_MISC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_SHIRQ policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_PREEMPT policy<{'amd64-lowlatency': 'n'}> +CONFIG_DEBUG_KOBJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_CREDENTIALS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_WQ_FORCE_RR_CPU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_BLOCK_EXT_DEVT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CPU_HOTPLUG_STATE_CONTROL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LATENCYTOP policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_LATENCYTOP mark note + +# Menu: Kernel hacking >> Kernel debugging >> KCSAN: dynamic data race detector + +# Menu: Kernel hacking >> Lock Debugging (spinlocks, mutexes, etc...) +CONFIG_PROVE_LOCKING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCK_STAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_RT_MUTEXES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_SPINLOCK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_MUTEXES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_WW_MUTEX_SLOWPATH policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_RWSEMS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_LOCK_ALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_ATOMIC_SLEEP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_LOCKING_API_SELFTESTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCK_TORTURE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_WW_MUTEX_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging +CONFIG_PAGE_EXTENSION policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_PAGEALLOC policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PAGE_OWNER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PAGE_POISONING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PAGE_POISONING_NO_SANITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PAGE_POISONING_ZERO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_PAGE_REF policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_RODATA_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 's390x': 'n'}> +CONFIG_PTDUMP_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_SLUB_DEBUG_ON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SLUB_STATS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_STACK_USAGE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCHED_STACK_END_CHECK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_VM_PGTABLE policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_VIRTUAL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DEBUG_MEMORY_INIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_DEBUG_PER_CPU_MAPS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEBUG_HIGHMEM policy<{'armhf': 'n'}> +CONFIG_DEBUG_STACKOVERFLOW policy<{'ppc64el': 'n'}> +# +CONFIG_PAGE_POISONING mark note +CONFIG_PAGE_POISONING_ZERO mark note +CONFIG_PAGE_POISONING_NO_SANITY mark note + +# Menu: Kernel hacking >> Memory Debugging >> Debug VM +CONFIG_DEBUG_VM policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> Debug object operations +CONFIG_DEBUG_OBJECTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> KASAN: runtime memory debugger +CONFIG_KASAN policy<{'amd64': 'n', 'arm64': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Memory Debugging >> KASAN: runtime memory debugger >> Instrumentation type + +# Menu: Kernel hacking >> Memory Debugging >> KASAN: runtime memory debugger >> KASAN mode + +# Menu: Kernel hacking >> Memory Debugging >> Kernel memory leak detector +CONFIG_DEBUG_KMEMLEAK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> RCU Debugging +CONFIG_RCU_PERF_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RCU_TORTURE_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RCU_CPU_STALL_TIMEOUT policy<{'amd64': '60', 'arm64': '60', 'armhf': '60', 'ppc64el': '21', 's390x': '21'}> +CONFIG_RCU_TRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RCU_EQS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_RCU_CPU_STALL_TIMEOUT flag + +# Menu: Kernel hacking >> Sample kernel code +CONFIG_SAMPLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SAMPLE_AUXDISPLAY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_TRACE_EVENTS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_TRACE_PRINTK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SAMPLE_FTRACE_DIRECT policy<{'amd64': 'm'}> +CONFIG_SAMPLE_TRACE_ARRAY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SAMPLE_KOBJECT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_KPROBES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_HW_BREAKPOINT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SAMPLE_KFIFO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_KDB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SAMPLE_QMI_CLIENT policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_SAMPLE_RPMSG_CLIENT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_SAMPLE_LIVEPATCH policy<{'amd64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_CONFIGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_VFIO_MDEV_MTTY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_VFIO_MDEV_MDPY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_VFIO_MDEV_MDPY_FB policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_VFIO_MDEV_MBOCHS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SAMPLE_WATCHDOG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_SAMPLE_TRACE_PRINTK mark note + +# Menu: Kernel hacking >> Scheduler Debugging +CONFIG_SCHED_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCHEDSTATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Kernel hacking >> Tracers +CONFIG_FTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BOOTTIME_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STACK_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IRQSOFF_TRACER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_PREEMPT_TRACER policy<{'amd64-lowlatency': 'n'}> +CONFIG_SCHED_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HWLAT_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MMIOTRACE policy<{'amd64': 'y'}> +CONFIG_FTRACE_SYSCALLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACER_SNAPSHOT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_BLK_DEV_IO_TRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KPROBE_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KPROBE_EVENTS_ON_NOTRACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_UPROBE_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_KPROBE_OVERRIDE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_SYNTH_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HIST_TRIGGERS policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACE_EVENT_INJECT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRACEPOINT_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RING_BUFFER_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_TRACE_EVAL_MAP_FILE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FTRACE_STARTUP_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RING_BUFFER_STARTUP_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MMIOTRACE_TEST policy<{'amd64': 'n'}> +CONFIG_PREEMPTIRQ_DELAY_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SYNTH_EVENT_GEN_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_KPROBE_EVENT_GEN_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HIST_TRIGGERS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_FTRACE_STARTUP_TEST flag +CONFIG_MMIOTRACE_TEST flag +CONFIG_RING_BUFFER_BENCHMARK flag +CONFIG_RING_BUFFER_STARTUP_TEST flag +CONFIG_TRACE_EVAL_MAP_FILE flag + +# Menu: Kernel hacking >> Tracers >> Branch Profiling +CONFIG_BRANCH_PROFILE_NONE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PROFILE_ANNOTATED_BRANCHES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Kernel hacking >> Tracers >> Kernel Function Tracer +CONFIG_FUNCTION_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUNCTION_GRAPH_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DYNAMIC_FTRACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FUNCTION_PROFILER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Kernel hacking >> printk and dmesg options +CONFIG_PRINTK_TIME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PRINTK_CALLER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CONSOLE_LOGLEVEL_DEFAULT policy<{'amd64': '7', 'arm64': '7', 'armhf': '7', 'ppc64el': '7', 's390x': '7'}> +CONFIG_CONSOLE_LOGLEVEL_QUIET policy<{'amd64': '4', 'arm64': '4', 'armhf': '4', 'ppc64el': '4', 's390x': '4'}> +CONFIG_MESSAGE_LOGLEVEL_DEFAULT policy<{'amd64': '4', 'arm64': '4', 'armhf': '4', 'ppc64el': '4', 's390x': '4'}> +CONFIG_BOOT_PRINTK_DELAY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DYNAMIC_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DYNAMIC_DEBUG_CORE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYMBOLIC_ERRNAME policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEBUG_BUGVERBOSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Library routines +CONFIG_RAID6_PQ_BENCHMARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PACKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_CORDIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_PRIME_NUMBERS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INDIRECT_PIO policy<{'arm64': 'y'}> +CONFIG_CRC_CCITT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC_T10DIF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC_ITU_T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC32 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC32_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC7 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LIBCRC32C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CRC8 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RANDOM32_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZLIB_DFLTCC policy<{'s390x': 'y'}> +CONFIG_DMA_API_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CPUMASK_OFFSTACK policy<{'amd64': 'y'}> +CONFIG_GLOB_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IRQ_POLL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PARMAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OBJAGG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_STRING_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_ZLIB_DFLTCC mark note + +# Menu: Library routines >> CRC32 implementation +CONFIG_CRC32_SLICEBY8 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CRC32_SLICEBY4 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC32_SARWATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CRC32_BIT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Library routines >> DMA Contiguous Memory Allocator +CONFIG_DMA_CMA policy<{'amd64': '-', 'arm64': 'y', 'armhf': 'y', 's390x': 'n'}> +CONFIG_CMA_SIZE_MBYTES policy<{'arm64': '32', 'armhf': '32'}> +CONFIG_CMA_ALIGNMENT policy<{'arm64': '8', 'armhf': '8'}> +# +CONFIG_DMA_CMA mark note note +CONFIG_CMA_SIZE_MBYTES mark note + +# Menu: Library routines >> DMA Contiguous Memory Allocator >> Selected region size +CONFIG_CMA_SIZE_SEL_MBYTES policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_CMA_SIZE_SEL_PERCENTAGE policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_CMA_SIZE_SEL_MIN policy<{'arm64': 'n', 'armhf': 'n'}> +CONFIG_CMA_SIZE_SEL_MAX policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Library routines >> Select compiled-in fonts +CONFIG_FONTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FONT_8x8 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FONT_8x16 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FONT_6x11 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_7x14 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_PEARL_8x8 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_ACORN_8x8 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FONT_MINI_4x6 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_6x10 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FONT_10x18 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_SUN8x16 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_SUN12x22 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FONT_TER16x32 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Library routines >> XZ decompression support +CONFIG_XZ_DEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XZ_DEC_X86 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_POWERPC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_IA64 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_ARM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_ARMTHUMB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_SPARC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_XZ_DEC_TEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +# +CONFIG_XZ_DEC note flag + +# Menu: Memory Management options +CONFIG_SPARSEMEM_VMEMMAP policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMORY_HOTPLUG policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_MEMORY_HOTREMOVE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BALLOON_COMPACTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_COMPACTION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PAGE_REPORTING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MIGRATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BOUNCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'n'}> +CONFIG_KSM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_MMAP_MIN_ADDR policy<{'amd64': '65536', 'arm64': '32768', 'armhf': '32768', 'ppc64el': '65536', 's390x': '65536'}> +CONFIG_MEMORY_FAILURE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_HWPOISON_INJECT policy<{'amd64': 'm', 'arm64': 'm', 'ppc64el': 'm'}> +CONFIG_TRANSPARENT_HUGEPAGE policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CLEANCACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FRONTSWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MEM_SOFT_DIRTY policy<{'amd64': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_ZPOOL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZBUD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_Z3FOLD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ZSMALLOC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZSMALLOC_STAT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFERRED_STRUCT_PAGE_INIT policy<{'amd64': 'n', 'arm64': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IDLE_PAGE_TRACKING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZONE_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_DEVICE_PRIVATE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_PERCPU_STATS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_GUP_BENCHMARK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_READ_ONLY_THP_FOR_FS policy<{'amd64': 'n', 'arm64': 'n', 'armhf-generic-lpae': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_DEFAULT_MMAP_MIN_ADDR mark note +CONFIG_TRANSPARENT_HUGEPAGE flag +CONFIG_MEM_SOFT_DIRTY flag +CONFIG_IDLE_PAGE_TRACKING flag note +CONFIG_PERCPU_STATS flag +CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE mark note + +# Menu: Memory Management options >> Compressed cache for swap pages (EXPERIMENTAL) +CONFIG_ZSWAP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZSWAP_DEFAULT_ON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Memory Management options >> Compressed cache for swap pages (EXPERIMENTAL) >> Compressed cache for swap pages default allocator +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Memory Management options >> Compressed cache for swap pages (EXPERIMENTAL) >> Compressed cache for swap pages default compressor +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Memory Management options >> Contiguous Memory Allocator +CONFIG_CMA policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CMA_DEBUG policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CMA_DEBUGFS policy<{'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CMA_AREAS policy<{'arm64': '7', 'armhf': '7', 'ppc64el': '7', 's390x': '7'}> +# +CONFIG_CMA mark note note + +# Menu: Memory Management options >> Memory model +CONFIG_FLATMEM_MANUAL policy<{'armhf': 'n'}> +CONFIG_SPARSEMEM_MANUAL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Memory Management options >> Transparent Hugepage Support sysfs defaults +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS policy<{'amd64': 'n', 'arm64': 'n', 'armhf-generic-lpae': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'ppc64el': 'n', 's390x': 'y'}> + +# Menu: Memory setup >> Architecture: s390 +CONFIG_MAX_PHYSMEM_BITS policy<{'s390x': '46'}> +CONFIG_PACK_STACK policy<{'s390x': 'y'}> +CONFIG_WARN_DYNAMIC_STACK policy<{'s390x': 'n'}> + +# Menu: Networking support +CONFIG_NET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AF_KCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_LIB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CEPH_LIB_PRETTYDEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CEPH_LIB_USE_DNS_RESOLVER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PSAMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IFE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_LWTUNNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LWTUNNEL_BPF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_FAILOVER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_ETHTOOL_NETLINK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Amateur Radio support +CONFIG_HAMRADIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol +CONFIG_AX25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_AX25_DAMA_SLAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_NETROM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ROSE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol >> AX.25 network device drivers +CONFIG_MKISS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6PACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BPQETHER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_SER_FDX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_SER_HDX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_PAR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BAYCOM_EPP policy<{'armhf': 'm'}> +CONFIG_YAM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Bluetooth subsystem support +CONFIG_BT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_LE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_MSFTEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_SELFTEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth Classic (BR/EDR) features +CONFIG_BT_BREDR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_RFCOMM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_RFCOMM_TTY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_BNEP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_BNEP_MC_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_BNEP_PROTO_FILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_CMTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HIDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_BT_HS mark note + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers +CONFIG_BT_HCIBTSDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIUART_LL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIBCM203X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBPA10X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBFUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIDTL1 policy<{'amd64': 'm'}> +CONFIG_BT_HCIBT3C policy<{'amd64': 'm'}> +CONFIG_BT_HCIBLUECARD policy<{'amd64': 'm'}> +CONFIG_BT_HCIVHCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MRVL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MRVL_SDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MTKSDIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_MTKUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_QCOMSMD policy<{'arm64': 'm', 'armhf': 'm'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI UART driver +CONFIG_BT_HCIUART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIUART_H4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_NOKIA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIUART_BCSP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_ATH3K policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_3WIRE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_INTEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_BCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_RTL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_QCA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_AG6XX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIUART_MRVL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI USB driver +CONFIG_BT_HCIBTUSB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_BT_HCIBTUSB_AUTOSUSPEND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIBTUSB_BCM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIBTUSB_MTK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_HCIBTUSB_RTL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BT_ATH3K policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAIF support +CONFIG_CAIF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CAIF_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CAIF_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAIF_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support +CONFIG_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CAN_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_BCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_GW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_J1939 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers +CONFIG_CAN_VCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_VXCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SLCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_DEBUG_DEVICES policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support +CONFIG_CAN_DEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CALC_BITTIMING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CAN_FLEXCAN policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_GRCAN policy<{'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_JANZ_ICAN3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_KVASER_PCIEFD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_TI_HECC policy<{'armhf': 'm'}> +CONFIG_CAN_XILINXCAN policy<{'arm64': 'm'}> +CONFIG_CAN_IFI_CANFD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_M_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_M_CAN_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_M_CAN_TCAN4X5X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_MSCAN policy<{'ppc64el': 'm'}> +CONFIG_CAN_PEAK_PCIEFD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_RCAR policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CAN_RCAR_CANFD policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_CAN_SOFTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SOFTING_CS policy<{'amd64': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch CC770 and Intel AN82527 devices +CONFIG_CAN_CC770 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CC770_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_CC770_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch C_CAN/D_CAN devices +CONFIG_CAN_C_CAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_C_CAN_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_C_CAN_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN SPI interfaces +CONFIG_CAN_HI311X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_MCP251X policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN USB interfaces +CONFIG_CAN_8DEV_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_EMS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_ESD_USB2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_GS_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_KVASER_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_MCBA_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_UCAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Philips/NXP SJA1000 devices +CONFIG_CAN_SJA1000 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_EMS_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_EMS_PCMCIA policy<{'amd64': 'm'}> +CONFIG_CAN_F81601 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_KVASER_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_PEAK_PCIEC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CAN_PEAK_PCMCIA policy<{'amd64': 'm'}> +CONFIG_CAN_PLX_PCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SJA1000_ISA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_CAN_SJA1000_PLATFORM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> NFC subsystem support +CONFIG_NFC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_NFC_DIGITAL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NCI_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NCI_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_HCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_SHDLC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices +CONFIG_NFC_TRF7970A policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MEI_PHY policy<{'amd64': 'm'}> +CONFIG_NFC_SIM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PORT100 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_FDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_FDP_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN544_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN544_MEI policy<{'amd64': 'm'}> +CONFIG_NFC_PN533_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN533_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_PN532_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MICROREAD_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MICROREAD_MEI policy<{'amd64': 'm'}> +CONFIG_NFC_MRVL_USB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MRVL_UART policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MRVL_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_MRVL_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST21NFCA_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST_NCI_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST_NCI_SPI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NXP_NCI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_NXP_NCI_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_S3FWRN5_I2C policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NFC_ST95HF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options +CONFIG_PACKET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PACKET_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_UNIX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_UNIX_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TLS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TLS_DEVICE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TLS_TOE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFRM_USER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFRM_INTERFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XFRM_SUB_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFRM_MIGRATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_XFRM_STATISTICS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_KEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_KEY_MIGRATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IUCV policy<{'s390x': 'y'}> +CONFIG_AFIUCV policy<{'s390x': 'm'}> +CONFIG_SMC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SMC_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_XDP_SOCKETS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_XDP_SOCKETS_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETWORK_SECMARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETWORK_PHY_TIMESTAMPING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VLAN_8021Q policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VLAN_8021Q_GVRP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_VLAN_8021Q_MVRP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DECNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_DECNET_ROUTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_LLC2 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ATALK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_X25 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_LAPB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_PHONET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_MAC802154 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_DCB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DNS_RESOLVER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETLINK_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_NSH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HSR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_CGROUP_NET_PRIO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_CGROUP_NET_CLASSID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_JIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SMC mark note +CONFIG_SMC_DIAG mark note +CONFIG_NETWORK_PHY_TIMESTAMPING mark note + +# Menu: Networking support >> Networking options >> 6LoWPAN Support +CONFIG_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_6LOWPAN_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> 6LoWPAN Support >> Next Header and Generic Header Compression Support +CONFIG_6LOWPAN_NHC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_DEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_FRAGMENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_HOP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_MOBILITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_ROUTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_NHC_UDP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_6LOWPAN_GHC_EXT_HDR_HOP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_6LOWPAN_GHC_UDP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_6LOWPAN_GHC_ICMPV6 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_6LOWPAN_GHC_EXT_HDR_DEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> 802.1d Ethernet Bridging +CONFIG_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_IGMP_SNOOPING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BRIDGE_VLAN_FILTERING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BRIDGE_MRP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> Appletalk interfaces support +CONFIG_DEV_APPLETALK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_LTPC policy<{'amd64': 'm'}> +CONFIG_COPS policy<{'amd64': 'm'}> +CONFIG_COPS_DAYNA policy<{'amd64': 'y'}> +CONFIG_COPS_TANGENT policy<{'amd64': 'y'}> +CONFIG_IPDDP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_IPDDP mark note + +# Menu: Networking support >> Networking options >> Asynchronous Transfer Mode (ATM) +CONFIG_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_ATM_CLIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_CLIP_NO_ICMP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_ATM_LANE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_MPOA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_BR2684 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_ATM_BR2684_IPFILTER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> B.A.T.M.A.N. Advanced Meshing Protocol +CONFIG_BATMAN_ADV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_BATMAN_ADV_BATMAN_V policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BATMAN_ADV_BLA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_DAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_NC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_MCAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_DEBUGFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BATMAN_ADV_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_BATMAN_ADV_SYSFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_BATMAN_ADV_TRACING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Networking options >> Distributed Switch Architecture +CONFIG_NET_DSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_AR9331 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_BRCM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_BRCM_PREPEND policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_GSWIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_DSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_EDSA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_MTK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_KSZ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_OCELOT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_QCA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_LAN9303 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_SJA1105 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_DSA_TAG_TRAILER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support +CONFIG_IEEE802154 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_IEEE802154_NL802154_EXPERIMENTAL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_IEEE802154_SOCKET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_IEEE802154_6LOWPAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> MultiProtocol Label Switching +CONFIG_MPLS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_MPLS_GSO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MPLS_ROUTING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_MPLS_IPTUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) +CONFIG_NETFILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETFILTER_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BRIDGE_NETFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration +CONFIG_NETFILTER_INGRESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETFILTER_NETLINK_ACCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_QUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_OSF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_FLOW_TABLE_INET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter Xtables support (required for ip_tables) +CONFIG_NETFILTER_XTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_AUDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CHECKSUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CLASSIFY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_CT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_DSCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_HMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_IDLETIMER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_LED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NETFILTER_XT_TARGET_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NETMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NFLOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NFQUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_NOTRACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NETFILTER_XT_TARGET_RATEEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_MASQUERADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TEE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TRACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_SECMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TCPMSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CLUSTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_COMMENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNBYTES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNLABEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CONNTRACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_CPU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DCCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DEVGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_DSCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HELPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPRANGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_IPVS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_L2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_LENGTH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_MULTIPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_NFACCT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_OSF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_OWNER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_POLICY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_PHYSDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_PKTTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_QUOTA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_RATEEST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_REALM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_RECENT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_SCTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_SOCKET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STATISTIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_STRING policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_TCPMSS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_TIME policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_XT_MATCH_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter connection tracking support +CONFIG_NF_CONNTRACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_MARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_SECMARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_ZONES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_PROCFS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NF_CONNTRACK_EVENTS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_TIMEOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_TIMESTAMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_LABELS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CT_PROTO_DCCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CT_PROTO_SCTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CT_PROTO_UDPLITE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_CONNTRACK_AMANDA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_FTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_H323 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_IRC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_NETBIOS_NS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SNMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_PPTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SANE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_SIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CONNTRACK_TFTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK_TIMEOUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_CT_NETLINK_HELPER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NETFILTER_NETLINK_GLUE_CT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_NF_CONNTRACK_PROCFS flag + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support +CONFIG_NF_TABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_INET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFT_NUMGEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FLOW_OFFLOAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_COUNTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_CONNLIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_MASQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REDIR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_OBJREF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_QUEUE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_QUOTA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_COMPAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_HASH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FIB_INET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_XFRM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_SOCKET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_OSF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_TPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_SYNPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_FLOW_TABLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support >> Netfilter nf_tables netdev tables support +CONFIG_NF_TABLES_NETDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_DUP_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_DUP_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FWD_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FIB_NETDEV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> DECnet: Netfilter Configuration +CONFIG_DECNET_NF_GRABULATOR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge nf_tables support +CONFIG_NF_TABLES_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_BRIDGE_META policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_BRIDGE_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_BRIDGE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge tables (ebtables) support +CONFIG_BRIDGE_NF_EBTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_BROUTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_T_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_T_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_802_3 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_AMONG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_IP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_LIMIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_MARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_PKTTYPE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_STP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_VLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_ARPREPLY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_DNAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_MARK_T policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_SNAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_LOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_BRIDGE_EBT_NFLOG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP set support +CONFIG_IP_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_MAX policy<{'amd64': '256', 'arm64': '256', 'armhf': '256', 'ppc64el': '256', 's390x': '256'}> +CONFIG_IP_SET_BITMAP_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_BITMAP_IPMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_BITMAP_PORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORTIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPPORTNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_IPMAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_MAC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETPORTNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETNET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETPORT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_HASH_NETIFACE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_SET_LIST_SET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP virtual server support +CONFIG_IP_VS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_VS_TAB_BITS policy<{'amd64': '12', 'arm64': '12', 'armhf': '12', 'ppc64el': '12', 's390x': '12'}> +CONFIG_IP_VS_PROTO_TCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_UDP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_ESP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_AH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PROTO_SCTP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_RR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_WRR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_WLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_FO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_OVF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LBLC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_LBLCR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_DH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_MH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_NQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_SH_TAB_BITS policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8', 's390x': '8'}> +CONFIG_IP_VS_MH_TAB_INDEX policy<{'amd64': '12', 'arm64': '12', 'armhf': '12', 'ppc64el': '12', 's390x': '12'}> +CONFIG_IP_VS_FTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_VS_NFCT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_VS_PE_SIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration +CONFIG_NF_SOCKET_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TPROXY_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_ARP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NF_FLOW_TABLE_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_DUP_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_REJECT_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_ARP_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_NAT_SNMP_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_IPV4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFT_DUP_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FIB_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) +CONFIG_IP_NF_IPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_RPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_MATCH_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_SYNPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_SECURITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> Packet mangling +CONFIG_IP_NF_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_CLUSTERIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_ECN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_TTL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> iptables NAT support +CONFIG_IP_NF_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_MASQUERADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_NETMAP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP_NF_TARGET_REDIRECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration +CONFIG_NF_SOCKET_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TPROXY_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_FLOW_TABLE_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_DUP_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_REJECT_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_LOG_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_TABLES_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFT_DUP_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NFT_FIB_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IP6 tables support (required for filtering) +CONFIG_IP6_NF_IPTABLES policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_EUI64 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_FRAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_OPTS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_IPV6HEADER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_MH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_RPFILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_RT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MATCH_SRH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_HL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_FILTER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_REJECT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_SYNPROXY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_MANGLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_RAW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_SECURITY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_MASQUERADE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IP6_NF_TARGET_NPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Network testing +CONFIG_NET_PKTGEN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_DROP_MONITOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_NET_DROP_MONITOR note + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing +CONFIG_NET_SCHED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_SCH_CBQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HTB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HFSC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_ATM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_SCH_PRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_MULTIQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_RED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_SFB policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_SFQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_TEQL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_TBF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CBS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_ETF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_TAPRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_GRED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_DSMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_NETEM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_DRR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_MQPRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_SKBPRIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CHOKE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_QFQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CODEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_FQ_CODEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_CAKE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_FQ policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_HHF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_PIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_FQ_PIE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_INGRESS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_PLUG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_SCH_ETS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_BASIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_TCINDEX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_ROUTE4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_CLS_U32_PERF policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_CLS_U32_MARK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_CLS_RSVP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_RSVP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FLOW policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_CGROUP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_FLOWER policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_CLS_MATCHALL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Actions +CONFIG_NET_CLS_ACT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_ACT_POLICE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_GACT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_GACT_PROB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_ACT_MIRRED policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SAMPLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_IPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_NAT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_PEDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SIMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SKBEDIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CSUM policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_MPLS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_VLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_BPF policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CONNMARK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CTINFO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_SKBMOD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_TUNNEL_KEY policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_CT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_ACT_GATE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_TC_SKB_EXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Actions >> Inter-FE action based on IETF ForCES InterFE LFB +CONFIG_NET_ACT_IFE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Allow override default queue discipline +CONFIG_NET_SCH_DEFAULT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Allow override default queue discipline >> Default queuing discipline + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Extended Matches +CONFIG_NET_EMATCH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_EMATCH_STACK policy<{'amd64': '32', 'arm64': '32', 'armhf': '32', 'ppc64el': '32', 's390x': '32'}> +CONFIG_NET_EMATCH_CMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_NBYTE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_U32 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_META policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_TEXT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_CANID policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NET_EMATCH_IPSET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_EMATCH_IPT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Qualcomm IPC Router support +CONFIG_QRTR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_QRTR_SMD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QRTR_TUN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_QRTR_MHI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking +CONFIG_INET policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MULTICAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_IPIP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE_DEMUX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_IPGRE_BROADCAST policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SYN_COOKIES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_IPVTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FOU policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_FOU_IP_TUNNELS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INET_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_ESP_OFFLOAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_ESPINTCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INET_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_MD5SIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NETLABEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MPTCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MPTCP_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_MPTCP_HMAC_TEST policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_NET_SWITCHDEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_L3_MASTER_DEV policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NET_NCSI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NCSI_OEM_CMD_GET_MAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPF_STREAM_PARSER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SYN_COOKIES mark +CONFIG_NET_SWITCHDEV mark note +CONFIG_NET_SWITCHDEV mark note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> BPF based packet filtering framework (BPFILTER) +CONFIG_BPFILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_BPFILTER_UMH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> INET: socket monitoring interface +CONFIG_INET_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_UDP_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_RAW_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET_DIAG_DESTROY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: advanced router +CONFIG_IP_ADVANCED_ROUTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_FIB_TRIE_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_ROUTE_MULTIPATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_ROUTE_VERBOSE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: kernel level autoconfiguration +CONFIG_IP_PNP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_IP_PNP note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: multicast routing +CONFIG_IP_MROUTE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_MROUTE_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_PIMSM_V1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IP_PIMSM_V2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Layer Two Tunneling Protocol (L2TP) +CONFIG_L2TP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_DEBUGFS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_L2TP_IP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_L2TP_ETH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Open vSwitch +CONFIG_OPENVSWITCH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_GRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_VXLAN policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_OPENVSWITCH_GENEVE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control +CONFIG_TCP_CONG_ADVANCED policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCP_CONG_BIC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_CUBIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TCP_CONG_WESTWOOD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HSTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_HYBLA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_VEGAS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_NV policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_SCALABLE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_LP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_VENO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_YEAH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_ILLINOIS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_DCTCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_CDG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TCP_CONG_BBR policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control >> Default TCP congestion control +CONFIG_DEFAULT_CUBIC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_RENO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol +CONFIG_IP_DCCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP CCIDs Configuration +CONFIG_IP_DCCP_CCID2_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IP_DCCP_CCID3 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_IP_DCCP_CCID3_DEBUG policy<{'s390x': 'n'}> +# +CONFIG_IP_DCCP_CCID3 flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP Kernel Hacking +CONFIG_IP_DCCP_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The IPv6 protocol +CONFIG_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_ROUTER_PREF policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_ROUTE_INFO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_OPTIMISTIC_DAD policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_INET6_AH policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_ESP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_ESP_OFFLOAD policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_INET6_ESPINTCP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INET6_IPCOMP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_MIP6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_ILA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_VTI policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_SIT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_SIT_6RD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_TUNNEL policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_GRE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_IPV6_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_SUBTREES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_MROUTE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_PIMSM_V2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_SEG6_LWTUNNEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_SEG6_HMAC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IPV6_RPL_LWTUNNEL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_IPV6_OPTIMISTIC_DAD flag +CONFIG_IPV6 mark note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The Reliable Datagram Sockets Protocol +CONFIG_RDS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_TCP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_RDS_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol +CONFIG_IP_SCTP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_SCTP_DBG_OBJCNT policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCTP_COOKIE_HMAC_MD5 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCTP_COOKIE_HMAC_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SCTP_DBG_OBJCNT flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol >> Default SCTP cookie HMAC encoding +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The TIPC Protocol +CONFIG_TIPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_TIPC_MEDIA_IB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIPC_MEDIA_UDP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIPC_CRYPTO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TIPC_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> + +# Menu: Networking support >> Networking options >> Virtual Socket protocol +CONFIG_VSOCKETS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VSOCKETS_DIAG policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VSOCKETS_LOOPBACK policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_VMWARE_VMCI_VSOCKETS policy<{'amd64': 'm'}> +CONFIG_VIRTIO_VSOCKETS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_HYPERV_VSOCKETS policy<{'amd64': 'm'}> + +# Menu: Networking support >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_NET_9P policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_9P_VIRTIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_9P_XEN policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_NET_9P_RDMA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NET_9P_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_NET_9P note + +# Menu: Networking support >> RF switch subsystem support +CONFIG_RFKILL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_RFKILL_INPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_RFKILL_GPIO policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> + +# Menu: Networking support >> RxRPC session sockets +CONFIG_AF_RXRPC policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_AF_RXRPC_IPV6 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_AF_RXRPC_INJECT_LOSS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_AF_RXRPC_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_RXKAD policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Networking support >> WiMAX Wireless Broadband support +CONFIG_WIMAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'n'}> +CONFIG_WIMAX_DEBUG_LEVEL policy<{'amd64': '8', 'arm64': '8', 'armhf': '8', 'ppc64el': '8'}> + +# Menu: Networking support >> Wireless +CONFIG_WIRELESS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_LIB80211_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) +CONFIG_MAC80211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_MAC80211_RC_MINSTREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_MESH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_LEDS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_MAC80211_MESSAGE_TRACING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Default rate control algorithm +CONFIG_MAC80211_RC_DEFAULT_MINSTREL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Select mac80211 debugging features +CONFIG_MAC80211_DEBUG_MENU policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_MAC80211_STA_HASH_MAX_SIZE policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0'}> + +# Menu: Networking support >> Wireless >> cfg80211 - wireless configuration API +CONFIG_CFG80211 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> +CONFIG_NL80211_TESTMODE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_DEVELOPER_WARNINGS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_DEFAULT_PS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_DEBUGFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_CRDA_SUPPORT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_WEXT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +# +CONFIG_CFG80211_WEXT flag + +# Menu: Networking support >> Wireless >> cfg80211 - wireless configuration API >> cfg80211 certification onus +CONFIG_CFG80211_CERTIFICATION_ONUS policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> + +# Menu: Platform selection +CONFIG_ARCH_ACTIONS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_SUNXI policy<{'arm64': 'y', 'armhf': 'n'}> +CONFIG_ARCH_ALPINE policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_ARCH_BCM2835 policy<{'arm64': 'y'}> +CONFIG_ARCH_BERLIN policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_BRCMSTB policy<{'arm64': 'y'}> +CONFIG_ARCH_EXYNOS policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_ARCH_HISI policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_MEDIATEK policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_MESON policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_MVEBU policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_MXC policy<{'arm64': 'y', 'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_QCOM policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_REALTEK policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_RENESAS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_ROCKCHIP policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_TEGRA policy<{'arm64': 'n', 'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_UNIPHIER policy<{'arm64': 'n', 'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_ZX policy<{'arm64': 'n', 'armhf': 'n'}> +# +CONFIG_ARCH_ROCKCHIP note +CONFIG_ARCH_ZX note + +# Menu: Platform selection >> Architecture: arm64 +CONFIG_ARCH_AGILEX policy<{'arm64': 'y'}> +CONFIG_ARCH_BCM_IPROC policy<{'arm64': 'y'}> +CONFIG_ARCH_BITMAIN policy<{'arm64': 'y'}> +CONFIG_ARCH_K3 policy<{'arm64': 'y'}> +CONFIG_ARCH_LAYERSCAPE policy<{'arm64': 'y'}> +CONFIG_ARCH_LG1K policy<{'arm64': 'y'}> +CONFIG_ARCH_S32 policy<{'arm64': 'y'}> +CONFIG_ARCH_SEATTLE policy<{'arm64': 'y'}> +CONFIG_ARCH_STRATIX10 policy<{'arm64': 'y'}> +CONFIG_ARCH_SYNQUACER policy<{'arm64': 'y'}> +CONFIG_ARCH_SPRD policy<{'arm64': 'y'}> +CONFIG_ARCH_THUNDER policy<{'arm64': 'y'}> +CONFIG_ARCH_THUNDER2 policy<{'arm64': 'y'}> +CONFIG_ARCH_XGENE policy<{'arm64': 'y'}> +CONFIG_ARCH_ZYNQMP policy<{'arm64': 'y'}> + +# Menu: Power management and ACPI options +CONFIG_SUSPEND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SUSPEND_FREEZER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_SUSPEND_SKIP_SYNC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_HIBERNATION policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'y', 'ppc64el': 'n'}> +CONFIG_HIBERNATION_SNAPSHOT_DEV policy<{'amd64': 'y', 'armhf': 'y'}> +CONFIG_PM_STD_PARTITION policy<{'amd64': '""', 'armhf': '""'}> +CONFIG_PM_AUTOSLEEP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_PM_WAKELOCKS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PM_WAKELOCKS_LIMIT policy<{'amd64': '100', 'arm64': '100', 'armhf': '100', 'ppc64el': '100'}> +CONFIG_PM_WAKELOCKS_GC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TRACE_RTC policy<{'amd64': 'y'}> +CONFIG_APM_EMULATION policy<{'armhf': 'n'}> +CONFIG_WQ_POWER_EFFICIENT_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ENERGY_MODEL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_KVM_GUEST policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_SFI policy<{'amd64': 'y'}> +CONFIG_INTEL_IDLE policy<{'amd64': 'y'}> +# +CONFIG_HIBERNATION flag +CONFIG_HIBERNATION mark note +CONFIG_PM mark note + +# Menu: Power management and ACPI options >> 512x-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> 52xx-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> 82xx-based boards (PQ II) >> Architecture: powerpc + +# Menu: Power management and ACPI options >> 83xx-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> 86xx-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> 8xx Machine Type >> Architecture: powerpc + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support +# + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> ACPI Platform Error Interface (APEI) + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> PMIC (Power Management Integrated Circuit) operation region support + +# Menu: Power management and ACPI options >> APM (Advanced Power Management) BIOS support >> Architecture: x86 +# +CONFIG_APM flag + +# Menu: Power management and ACPI options >> Architecture: arm + +# Menu: Power management and ACPI options >> Architecture: arm64 + +# Menu: Power management and ACPI options >> Architecture: powerpc +CONFIG_SCOM_DEBUGFS policy<{'ppc64el': 'y'}> +CONFIG_EPAPR_PARAVIRT policy<{'ppc64el': 'y'}> +CONFIG_PPC_OF_BOOT_TRAMPOLINE policy<{'ppc64el': 'y'}> +CONFIG_PPC_DT_CPU_FTRS policy<{'ppc64el': 'y'}> +CONFIG_UDBG_RTAS_CONSOLE policy<{'ppc64el': 'n'}> +CONFIG_MPIC_MSGR policy<{'ppc64el': 'n'}> +CONFIG_RTAS_PROC policy<{'ppc64el': 'y'}> +CONFIG_RTAS_FLASH policy<{'ppc64el': 'm'}> +CONFIG_QE_GPIO policy<{'ppc64el': 'y'}> +CONFIG_GEN_RTC policy<{'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> Architecture: x86 + +# Menu: Power management and ACPI options >> CPU Frequency scaling + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling +CONFIG_CPU_FREQ policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_STAT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_PERFORMANCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_POWERSAVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_USERSPACE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_ONDEMAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_CONSERVATIVE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_GOV_SCHEDUTIL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_X86_INTEL_PSTATE policy<{'amd64': 'y'}> +CONFIG_X86_PCC_CPUFREQ policy<{'amd64': 'y'}> +CONFIG_X86_SPEEDSTEP_CENTRINO policy<{'amd64': 'y'}> +CONFIG_X86_P4_CLOCKMOD policy<{'amd64': 'm'}> +CONFIG_ACPI_CPPC_CPUFREQ policy<{'arm64': 'm'}> +CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM policy<{'arm64': 'm'}> +CONFIG_ARM_SCPI_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ policy<{'armhf': 'm'}> +CONFIG_ARM_BRCMSTB_AVS_CPUFREQ policy<{'arm64': 'm'}> +CONFIG_ARM_IMX6Q_CPUFREQ policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_ARM_MEDIATEK_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_OMAP2PLUS_CPUFREQ policy<{'armhf': 'y'}> +CONFIG_ARM_QCOM_CPUFREQ_NVMEM policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_QCOM_CPUFREQ_HW policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_RASPBERRYPI_CPUFREQ policy<{'arm64': 'm'}> +CONFIG_ARM_SCMI_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_TEGRA186_CPUFREQ policy<{'armhf-generic': 'm'}> +CONFIG_ARM_TI_CPUFREQ policy<{'armhf': 'y'}> +CONFIG_POWERNV_CPUFREQ policy<{'ppc64el': 'y'}> +CONFIG_QORIQ_CPUFREQ policy<{'arm64': 'm'}> +# +CONFIG_CPU_FREQ_STAT note +CONFIG_CPU_FREQ_GOV_PERFORMANCE note +CONFIG_CPU_FREQ_GOV_POWERSAVE note +CONFIG_CPU_FREQ_GOV_USERSPACE note +CONFIG_CPU_FREQ_GOV_ONDEMAND note +CONFIG_CPU_FREQ_GOV_CONSERVATIVE note +CONFIG_X86_PCC_CPUFREQ note +CONFIG_X86_SPEEDSTEP_CENTRINO note +CONFIG_X86_SPEEDSTEP_ICH note +CONFIG_X86_SPEEDSTEP_SMI note +CONFIG_X86_CPUFREQ_NFORCE2 note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> ACPI Processor P-States driver +CONFIG_X86_ACPI_CPUFREQ policy<{'amd64': 'y'}> +CONFIG_X86_ACPI_CPUFREQ_CPB policy<{'amd64': 'y'}> +CONFIG_X86_POWERNOW_K8 policy<{'amd64': 'y'}> +CONFIG_X86_AMD_FREQ_SENSITIVITY policy<{'amd64': 'm'}> +# +CONFIG_X86_ACPI_CPUFREQ note +CONFIG_X86_POWERNOW_K8 note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> CPUfreq driver for Samsung S3C24XX series CPUs (EXPERIMENTAL) + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> Default CPUFreq governor +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE note + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> Generic DT based cpufreq driver +CONFIG_CPUFREQ_DT policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_ARM_ARMADA_37XX_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_ARMADA_8K_CPUFREQ policy<{'arm64': 'm', 'armhf': 'm'}> +CONFIG_ARM_HIGHBANK_CPUFREQ policy<{'armhf': 'm'}> +CONFIG_ARM_IMX_CPUFREQ_DT policy<{'arm64': 'm', 'armhf-generic': 'm'}> +CONFIG_ARM_TEGRA20_CPUFREQ policy<{'armhf-generic': 'y'}> +CONFIG_ARM_TEGRA124_CPUFREQ policy<{'armhf-generic': 'y'}> +# +CONFIG_CPUFREQ_DT note + +# Menu: Power management and ACPI options >> CPU Idle + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support +CONFIG_CPU_IDLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_LADDER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_MENU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_TEO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_IDLE_GOV_HALTPOLL policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_HALTPOLL_CPUIDLE policy<{'amd64': 'm'}> + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +CONFIG_ARM_CPUIDLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_PSCI_CPUIDLE policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARM_BIG_LITTLE_CPUIDLE policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_ARM_EXYNOS_CPUIDLE policy<{'armhf': 'y'}> +CONFIG_ARM_MVEBU_V7_CPUIDLE policy<{'armhf': 'y'}> +CONFIG_ARM_TEGRA_CPUIDLE policy<{'armhf-generic': 'n'}> +CONFIG_ARM_QCOM_SPM_CPUIDLE policy<{'armhf': 'y'}> +# +CONFIG_ARM_HIGHBANK_CPUIDLE note + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> MIPS CPU Idle Drivers + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> POWERPC CPU Idle Drivers +CONFIG_PSERIES_CPUIDLE policy<{'ppc64el': 'y'}> +CONFIG_POWERNV_CPUIDLE policy<{'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> CPUIdle driver >> Architecture: powerpc + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +# + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> MIPS CPU Idle Drivers + +# Menu: Power management and ACPI options >> CPUIdle driver >> CPU Idle >> CPU idle PM support >> POWERPC CPU Idle Drivers + +# Menu: Power management and ACPI options >> Cell Broadband Engine options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Embedded 6xx/7xx/7xxx-based boards >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Freescale Book-E Machine Type >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Freescale Ethernet driver platform-specific options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Freescale Ethernet driver platform-specific options >> Second Ethernet channel >> Architecture: powerpc + +# Menu: Power management and ACPI options >> IBM PowerNV (Non-Virtualized) platform support >> Architecture: powerpc +CONFIG_PPC_POWERNV policy<{'ppc64el': 'y'}> +CONFIG_OPAL_PRD policy<{'ppc64el': 'm'}> +CONFIG_PPC_MEMTRACE policy<{'ppc64el': 'y'}> +CONFIG_PPC_VAS policy<{'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> IBM pSeries & new (POWER5-based) iSeries +CONFIG_CMM policy<{'ppc64el': 'm', 's390x': 'y'}> +# +CONFIG_CMM flag + +# Menu: Power management and ACPI options >> IBM pSeries & new (POWER5-based) iSeries >> Architecture: powerpc +CONFIG_PPC_PSERIES policy<{'ppc64el': 'y'}> +CONFIG_PPC_SPLPAR policy<{'ppc64el': 'y'}> +CONFIG_DTL policy<{'ppc64el': 'y'}> +CONFIG_PSERIES_ENERGY policy<{'ppc64el': 'm'}> +CONFIG_SCANLOG policy<{'ppc64el': 'm'}> +CONFIG_IO_EVENT_IRQ policy<{'ppc64el': 'y'}> +CONFIG_LPARCFG policy<{'ppc64el': 'y'}> +CONFIG_PPC_SMLPAR policy<{'ppc64el': 'y'}> +CONFIG_HV_PERF_CTRS policy<{'ppc64el': 'y'}> +CONFIG_PAPR_SCM policy<{'ppc64el': 'm'}> +CONFIG_PPC_SVM policy<{'ppc64el': 'y'}> + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> 8xx advanced setup >> Architecture: powerpc + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> 8xx advanced setup >> Pinned Kernel TLBs >> Architecture: powerpc + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> MPC8xx CPM Options >> Microcode patch selection >> Architecture: powerpc + +# Menu: Power management and ACPI options >> PA Semi PWRficient options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> PS3 Platform Options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> PS3 Platform Options >> PS3 Advanced configuration options >> Architecture: powerpc + +# Menu: Power management and ACPI options >> Power Management Debug Support +CONFIG_PM_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PM_ADVANCED_DEBUG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TEST_SUSPEND policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +CONFIG_DPM_WATCHDOG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n'}> +# +CONFIG_PM_DEBUG flag + +# Menu: Power management and ACPI options >> Support for 47x variant >> Architecture: powerpc + +# Menu: Processor support +CONFIG_SMP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NR_CPUS policy<{'amd64': '8192', 'arm64': '256', 'armhf': '4', 'ppc64el': '2048', 's390x': '512'}> +# +CONFIG_NR_CPUS note + +# Menu: Processor support >> Architecture: powerpc +CONFIG_ALTIVEC policy<{'ppc64el': 'y'}> +CONFIG_VSX policy<{'ppc64el': 'y'}> +CONFIG_PPC_RADIX_MMU policy<{'ppc64el': 'y'}> +CONFIG_PPC_RADIX_MMU_DEFAULT policy<{'ppc64el': 'y'}> +CONFIG_PPC_KUEP policy<{'ppc64el': 'y'}> +CONFIG_PPC_KUAP policy<{'ppc64el': 'y'}> +CONFIG_PPC_KUAP_DEBUG policy<{'ppc64el': 'n'}> +CONFIG_PMU_SYSFS policy<{'ppc64el': 'n'}> + +# Menu: Processor support >> CPU selection +CONFIG_GENERIC_CPU policy<{'amd64': 'y', 'ppc64el': 'y'}> + +# Menu: Processor support >> CPU selection >> Architecture: powerpc +CONFIG_POWER7_CPU policy<{'ppc64el': 'n'}> +CONFIG_POWER8_CPU policy<{'ppc64el': 'n'}> +CONFIG_POWER9_CPU policy<{'ppc64el': 'n'}> + +# Menu: Processor support >> Processor Type >> Architecture: powerpc +CONFIG_PPC_BOOK3S_64 policy<{'ppc64el': 'y'}> +CONFIG_PPC_BOOK3E_64 policy<{'ppc64el': 'n'}> + +# Menu: Processor type and features +CONFIG_KEXEC_FILE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_ARCH_RANDOM policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RELOCATABLE policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_RANDOMIZE_BASE policy<{'amd64': 'y', 'arm64': 'y', 's390x': 'y'}> +CONFIG_SCHED_MC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 's390x': 'y'}> +CONFIG_SCHED_SMT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HOTPLUG_CPU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NUMA policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NODES_SHIFT policy<{'amd64': '10', 'arm64': '6', 'ppc64el': '8', 's390x': '1'}> +CONFIG_PARAVIRT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n'}> +CONFIG_PARAVIRT_TIME_ACCOUNTING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n'}> +CONFIG_KEXEC_SIG policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n'}> +CONFIG_HARDEN_BRANCH_PREDICTOR policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_HIGHPTE policy<{'armhf': 'y'}> +CONFIG_CMDLINE_BOOL policy<{'amd64': 'n', 'ppc64el': 'n'}> +CONFIG_HIGHMEM policy<{'armhf': 'y'}> +CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64-generic': '13', 'arm64-generic-64k': '14', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'ppc64el': '9', 's390x': '9'}> +CONFIG_COMPAT_VDSO policy<{'amd64': 'n'}> +# +CONFIG_RELOCATABLE flag +CONFIG_HOTPLUG_CPU flag +CONFIG_NUMA note +CONFIG_COMPAT_VDSO mark + +# Menu: Processor type and features >> ARM errata workarounds via the alternatives framework >> Architecture: arm64 +CONFIG_ARM64_ERRATUM_826319 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_827319 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_824069 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_819472 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_832075 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_834220 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_845719 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_843419 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1024718 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1418040 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1165522 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1530923 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1286807 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1319367 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1463225 policy<{'arm64': 'y'}> +CONFIG_ARM64_ERRATUM_1542419 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_ERRATUM_22375 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_ERRATUM_23144 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_ERRATUM_23154 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_ERRATUM_27456 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_ERRATUM_30115 policy<{'arm64': 'y'}> +CONFIG_CAVIUM_TX2_ERRATUM_219 policy<{'arm64': 'y'}> +CONFIG_QCOM_FALKOR_ERRATUM_1003 policy<{'arm64': 'y'}> +CONFIG_QCOM_FALKOR_ERRATUM_1009 policy<{'arm64': 'y'}> +CONFIG_QCOM_QDF2400_ERRATUM_0065 policy<{'arm64': 'y'}> +CONFIG_SOCIONEXT_SYNQUACER_PREITS policy<{'arm64': 'y'}> +CONFIG_HISILICON_ERRATUM_161600802 policy<{'arm64': 'y'}> +CONFIG_QCOM_FALKOR_ERRATUM_E1041 policy<{'arm64': 'y'}> +CONFIG_FUJITSU_ERRATUM_010001 policy<{'arm64': 'y'}> +# +CONFIG_ARM64_ERRATUM_843419 mark note +CONFIG_QCOM_QDF2400_ERRATUM_0065 mark note + +# Menu: Processor type and features >> ARMv8.1 architectural features >> Architecture: arm64 +CONFIG_ARM64_HW_AFDBM policy<{'arm64': 'y'}> +CONFIG_ARM64_PAN policy<{'arm64': 'y'}> +CONFIG_ARM64_USE_LSE_ATOMICS policy<{'arm64': 'y'}> +CONFIG_ARM64_VHE policy<{'arm64': 'y'}> +# +CONFIG_ARM64_USE_LSE_ATOMICS mark note + +# Menu: Processor type and features >> ARMv8.2 architectural features >> Architecture: arm64 +CONFIG_ARM64_UAO policy<{'arm64': 'y'}> +CONFIG_ARM64_PMEM policy<{'arm64': 'y'}> +CONFIG_ARM64_RAS_EXTN policy<{'arm64': 'y'}> +CONFIG_ARM64_CNP policy<{'arm64': 'y'}> + +# Menu: Processor type and features >> ARMv8.3 architectural features >> Architecture: arm64 +CONFIG_ARM64_PTR_AUTH policy<{'arm64': 'y'}> + +# Menu: Processor type and features >> ARMv8.4 architectural features >> Architecture: arm64 +CONFIG_ARM64_AMU_EXTN policy<{'arm64': 'y'}> + +# Menu: Processor type and features >> ARMv8.5 architectural features + +# Menu: Processor type and features >> ARMv8.5 architectural features >> Architecture: arm64 +CONFIG_ARM64_BTI policy<{'arm64': 'y'}> +CONFIG_ARM64_BTI_KERNEL policy<{'arm64': 'y'}> +CONFIG_ARM64_E0PD policy<{'arm64': 'y'}> + +# Menu: Processor type and features >> Architecture: arm +CONFIG_HAVE_ARM_ARCH_TIMER policy<{'armhf': 'y'}> +CONFIG_ARM_PSCI policy<{'armhf': 'y'}> +CONFIG_THUMB2_KERNEL policy<{'armhf': 'n'}> +CONFIG_ARM_PATCH_IDIV policy<{'armhf': 'y'}> +CONFIG_AEABI policy<{'armhf': 'y'}> +CONFIG_OABI_COMPAT policy<{'armhf': 'n'}> +CONFIG_CPU_SW_DOMAIN_PAN policy<{'armhf-generic': 'y'}> +CONFIG_ARM_MODULE_PLTS policy<{'armhf': 'y'}> +CONFIG_UACCESS_WITH_MEMCPY policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Architecture: arm64 +CONFIG_KEXEC_IMAGE_VERIFY_SIG policy<{'arm64': 'n'}> +CONFIG_UNMAP_KERNEL_AT_EL0 policy<{'arm64': 'y'}> +CONFIG_HARDEN_EL2_VECTORS policy<{'arm64': 'y'}> +CONFIG_ARM64_SSBD policy<{'arm64': 'y'}> +CONFIG_RODATA_FULL_DEFAULT_ENABLED policy<{'arm64': 'y'}> +CONFIG_ARM64_SW_TTBR0_PAN policy<{'arm64': 'y'}> +CONFIG_ARM64_TAGGED_ADDR_ABI policy<{'arm64': 'y'}> +CONFIG_ARM64_SVE policy<{'arm64': 'y'}> +CONFIG_ARM64_MODULE_PLTS policy<{'arm64': 'y'}> +CONFIG_ARM64_PSEUDO_NMI policy<{'arm64': 'y'}> +CONFIG_ARM64_DEBUG_PRIORITY_MASKING policy<{'arm64': 'n'}> +CONFIG_RANDOMIZE_MODULE_REGION_FULL policy<{'arm64': 'y'}> +# +CONFIG_KEXEC_IMAGE_VERIFY_SIG flag + +# Menu: Processor type and features >> Architecture: powerpc +CONFIG_PPC_TRANSACTIONAL_MEM policy<{'ppc64el': 'y'}> +CONFIG_PPC_UV policy<{'ppc64el': 'y'}> +CONFIG_LD_HEAD_STUB_CATCH policy<{'ppc64el': 'n'}> +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE policy<{'ppc64el': 'y'}> +CONFIG_RELOCATABLE_TEST policy<{'ppc64el': 'n'}> +CONFIG_FA_DUMP policy<{'ppc64el': 'y'}> +CONFIG_OPAL_CORE policy<{'ppc64el': 'n'}> +CONFIG_IRQ_ALL_CPUS policy<{'ppc64el': 'y'}> +CONFIG_THREAD_SHIFT policy<{'ppc64el': '14'}> +CONFIG_DATA_SHIFT policy<{'ppc64el': '16'}> +CONFIG_PPC_SUBPAGE_PROT policy<{'ppc64el': 'y'}> +CONFIG_PPC_DENORMALISATION policy<{'ppc64el': 'y'}> +CONFIG_EXTRA_TARGETS policy<{'ppc64el': '""'}> +CONFIG_PPC_MEM_KEYS policy<{'ppc64el': 'n'}> +CONFIG_PPC_SECURE_BOOT policy<{'ppc64el': 'y'}> +CONFIG_PPC_SECVAR_SYSFS policy<{'ppc64el': 'y'}> +CONFIG_PPC_RTAS_FILTER policy<{'ppc64el': 'y'}> +# +CONFIG_FA_DUMP note +CONFIG_PPC_MEM_KEYS flag note +CONFIG_PPC_SECURE_BOOT mark note note +CONFIG_PPC_SECVAR_SYSFS mark note +CONFIG_PPC_RTAS_FILTER mark note + +# Menu: Processor type and features >> Architecture: s390 +CONFIG_KERNEL_NOBP policy<{'s390x': 'n'}> +CONFIG_EXPOLINE policy<{'s390x': 'y'}> +CONFIG_SCHED_TOPOLOGY policy<{'s390x': 'y'}> + +# Menu: Processor type and features >> Architecture: x86 +CONFIG_X86_FEATURE_NAMES policy<{'amd64': 'y'}> +CONFIG_X86_X2APIC policy<{'amd64': 'y'}> +CONFIG_X86_MPPARSE policy<{'amd64': 'y'}> +CONFIG_RETPOLINE policy<{'amd64': 'y'}> +CONFIG_X86_CPU_RESCTRL policy<{'amd64': 'y'}> +CONFIG_X86_EXTENDED_PLATFORM policy<{'amd64': 'y'}> +CONFIG_X86_INTEL_LPSS policy<{'amd64': 'y'}> +CONFIG_X86_AMD_PLATFORM_DEVICE policy<{'amd64': 'y'}> +CONFIG_IOSF_MBI policy<{'amd64': 'y'}> +CONFIG_IOSF_MBI_DEBUG policy<{'amd64': 'y'}> +CONFIG_SCHED_OMIT_FRAME_POINTER policy<{'amd64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HPET_TIMER policy<{'amd64': 'y'}> +CONFIG_GART_IOMMU policy<{'amd64': 'y'}> +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS policy<{'amd64': 'y'}> +CONFIG_X86_16BIT policy<{'amd64': 'y'}> +CONFIG_X86_VSYSCALL_EMULATION policy<{'amd64': 'y'}> +CONFIG_X86_IOPL_IOPERM policy<{'amd64': 'y'}> +CONFIG_I8K policy<{'amd64': 'm'}> +CONFIG_X86_MSR policy<{'amd64': 'm'}> +CONFIG_X86_CPUID policy<{'amd64': 'm'}> +CONFIG_X86_5LEVEL policy<{'amd64': 'y'}> +CONFIG_X86_CPA_STATISTICS policy<{'amd64': 'n'}> +CONFIG_AMD_MEM_ENCRYPT policy<{'amd64': 'y'}> +CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT policy<{'amd64': 'n'}> +CONFIG_ARCH_MEMORY_PROBE policy<{'amd64': 'y', 'ppc64el': 'y'}> +CONFIG_X86_PMEM_LEGACY policy<{'amd64': 'y'}> +CONFIG_X86_CHECK_BIOS_CORRUPTION policy<{'amd64': 'y'}> +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK policy<{'amd64': 'y'}> +CONFIG_X86_RESERVE_LOW policy<{'amd64': '64'}> +CONFIG_MTRR policy<{'amd64': 'y'}> +CONFIG_MTRR_SANITIZER policy<{'amd64': 'y'}> +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT policy<{'amd64': '1'}> +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT policy<{'amd64': '1'}> +CONFIG_X86_PAT policy<{'amd64': 'y'}> +CONFIG_X86_SMAP policy<{'amd64': 'y'}> +CONFIG_X86_UMIP policy<{'amd64': 'y'}> +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS policy<{'amd64': 'y'}> +CONFIG_EFI_STUB policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_EFI_MIXED policy<{'amd64': 'y'}> +CONFIG_KEXEC_SIG_FORCE policy<{'amd64': 'n'}> +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG policy<{'amd64': 'y'}> +CONFIG_KEXEC_JUMP policy<{'amd64': 'y'}> +CONFIG_PHYSICAL_ALIGN policy<{'amd64': '0x200000'}> +CONFIG_RANDOMIZE_MEMORY policy<{'amd64': 'y'}> +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING policy<{'amd64': '0xa'}> +CONFIG_BOOTPARAM_HOTPLUG_CPU0 policy<{'amd64': 'n'}> +CONFIG_DEBUG_HOTPLUG_CPU0 policy<{'amd64': 'n'}> +CONFIG_MODIFY_LDT_SYSCALL policy<{'amd64': 'y'}> +# +CONFIG_X86_LEGACY_VM86 note +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG flag note +CONFIG_MODIFY_LDT_SYSCALL flag note + +# Menu: Processor type and features >> CPU microcode loading support >> Architecture: x86 +CONFIG_MICROCODE policy<{'amd64': 'y'}> +CONFIG_MICROCODE_INTEL policy<{'amd64': 'y'}> +CONFIG_MICROCODE_AMD policy<{'amd64': 'y'}> +CONFIG_MICROCODE_OLD_INTERFACE policy<{'amd64': 'y'}> +# +CONFIG_MICROCODE_OLD_INTERFACE flag + +# Menu: Processor type and features >> Endianness + +# Menu: Processor type and features >> Endianness >> Architecture: arm64 + +# Menu: Processor type and features >> Expoline default >> Architecture: s390 +CONFIG_EXPOLINE_OFF policy<{'s390x': 'n'}> +CONFIG_EXPOLINE_AUTO policy<{'s390x': 'y'}> +CONFIG_EXPOLINE_FULL policy<{'s390x': 'n'}> + +# Menu: Processor type and features >> High Memory Support >> Architecture: x86 + +# Menu: Processor type and features >> Kernel command line type + +# Menu: Processor type and features >> Kernel command line type >> Architecture: powerpc + +# Menu: Processor type and features >> Kernel support for 32-bit EL0 +CONFIG_KUSER_HELPERS policy<{'arm64': 'y', 'armhf': 'y'}> +# + +# Menu: Processor type and features >> Kernel support for 32-bit EL0 >> Architecture: arm64 + +# Menu: Processor type and features >> Kernel support for 32-bit EL0 >> Emulate deprecated/obsolete ARMv8 instructions >> Architecture: arm64 +CONFIG_ARMV8_DEPRECATED policy<{'arm64': 'y'}> +CONFIG_SWP_EMULATION policy<{'arm64': 'y'}> +CONFIG_CP15_BARRIER_EMULATION policy<{'arm64': 'y'}> +CONFIG_SETEND_EMULATION policy<{'arm64': 'y'}> +# +CONFIG_ARMV8_DEPRECATED mark note +CONFIG_SWP_EMULATION mark note +CONFIG_CP15_BARRIER_EMULATION mark note +CONFIG_SETEND_EMULATION mark note + +# Menu: Processor type and features >> Linux guest support >> Architecture: x86 +CONFIG_HYPERVISOR_GUEST policy<{'amd64': 'y'}> +CONFIG_ARCH_CPUIDLE_HALTPOLL policy<{'amd64': 'y'}> +CONFIG_PVH policy<{'amd64': 'y'}> +CONFIG_JAILHOUSE_GUEST policy<{'amd64': 'y'}> +CONFIG_ACRN_GUEST policy<{'amd64': 'y'}> + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Architecture: x86 +CONFIG_PARAVIRT_DEBUG policy<{'amd64': 'n'}> +CONFIG_PARAVIRT_SPINLOCKS policy<{'amd64': 'y'}> + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Xen guest support + +# Menu: Processor type and features >> Linux guest support >> Enable paravirtualization code >> Xen guest support >> Architecture: x86 +CONFIG_XEN_PV policy<{'amd64': 'y'}> +CONFIG_XEN_DOM0 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_XEN_PVHVM policy<{'amd64': 'y'}> +CONFIG_XEN_512GB policy<{'amd64': 'y'}> +CONFIG_XEN_DEBUG_FS policy<{'amd64': 'n'}> +CONFIG_XEN_PVH policy<{'amd64': 'y'}> +# +CONFIG_XEN_512GB flag note + +# Menu: Processor type and features >> Machine Check / overheating reporting >> Architecture: x86 +CONFIG_X86_MCE policy<{'amd64': 'y'}> +CONFIG_X86_MCELOG_LEGACY policy<{'amd64': 'y'}> +CONFIG_X86_MCE_INTEL policy<{'amd64': 'y'}> +CONFIG_X86_MCE_AMD policy<{'amd64': 'y'}> +CONFIG_X86_MCE_INJECT policy<{'amd64': 'm'}> + +# Menu: Processor type and features >> Math emulation options >> Architecture: powerpc + +# Menu: Processor type and features >> Memory split +CONFIG_VMSPLIT_3G policy<{'armhf': 'y'}> +CONFIG_VMSPLIT_3G_OPT policy<{'armhf-generic': 'n'}> +CONFIG_VMSPLIT_2G policy<{'armhf': 'n'}> +CONFIG_VMSPLIT_1G policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Memory split >> Architecture: arm + +# Menu: Processor type and features >> Memory split >> Architecture: x86 + +# Menu: Processor type and features >> Page size >> Architecture: arm64 +CONFIG_ARM64_4K_PAGES policy<{'arm64-generic': 'y', 'arm64-generic-64k': 'n'}> +CONFIG_ARM64_16K_PAGES policy<{'arm64': 'n'}> +CONFIG_ARM64_64K_PAGES policy<{'arm64-generic': 'n', 'arm64-generic-64k': 'y'}> + +# Menu: Processor type and features >> Page size >> Architecture: powerpc +CONFIG_PPC_4K_PAGES policy<{'ppc64el': 'n'}> +CONFIG_PPC_64K_PAGES policy<{'ppc64el': 'y'}> + +# Menu: Processor type and features >> Performance monitoring >> Architecture: x86 +CONFIG_PERF_EVENTS_INTEL_UNCORE policy<{'amd64': 'y'}> +CONFIG_PERF_EVENTS_INTEL_RAPL policy<{'amd64': 'm'}> +CONFIG_PERF_EVENTS_INTEL_CSTATE policy<{'amd64': 'm'}> +CONFIG_PERF_EVENTS_AMD_POWER policy<{'amd64': 'n'}> + +# Menu: Processor type and features >> Physical address space size >> Architecture: arm64 +CONFIG_ARM64_PA_BITS_48 policy<{'arm64': 'y'}> +CONFIG_ARM64_PA_BITS_52 policy<{'arm64-generic-64k': 'n'}> + +# Menu: Processor type and features >> Power Management Debug Support +# + +# Menu: Processor type and features >> Processor family + +# Menu: Processor type and features >> Processor family >> Architecture: x86 +CONFIG_MK8 policy<{'amd64': 'n'}> +CONFIG_MPSC policy<{'amd64': 'n'}> +CONFIG_MCORE2 policy<{'amd64': 'n'}> +CONFIG_MATOM policy<{'amd64': 'n'}> + +# Menu: Processor type and features >> Processor type >> Architecture: s390 +CONFIG_MARCH_Z900 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z990 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z9_109 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z10 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z196 policy<{'s390x': 'n'}> +CONFIG_MARCH_ZEC12 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z13 policy<{'s390x': 'y'}> +CONFIG_MARCH_Z14 policy<{'s390x': 'n'}> +CONFIG_MARCH_Z15 policy<{'s390x': 'n'}> + +# Menu: Processor type and features >> Support for extended (non-PC) x86 platforms >> Architecture: x86 +CONFIG_X86_NUMACHIP policy<{'amd64': 'y'}> +CONFIG_X86_VSMP policy<{'amd64': 'n'}> +CONFIG_X86_UV policy<{'amd64': 'y'}> +CONFIG_X86_GOLDFISH policy<{'amd64': 'n'}> +CONFIG_X86_INTEL_MID policy<{'amd64': 'n'}> +# +CONFIG_X86_UV mark note + +# Menu: Processor type and features >> Supported processor vendors >> Architecture: x86 +CONFIG_PROCESSOR_SELECT policy<{'amd64': 'y'}> +CONFIG_CPU_SUP_INTEL policy<{'amd64': 'y'}> +CONFIG_CPU_SUP_AMD policy<{'amd64': 'y'}> +CONFIG_CPU_SUP_HYGON policy<{'amd64': 'y'}> +CONFIG_CPU_SUP_CENTAUR policy<{'amd64': 'y'}> +CONFIG_CPU_SUP_ZHAOXIN policy<{'amd64': 'y'}> + +# Menu: Processor type and features >> Symmetric Multi-Processing +# + +# Menu: Processor type and features >> Symmetric Multi-Processing >> Architecture: arm +CONFIG_SMP_ON_UP policy<{'armhf': 'y'}> +CONFIG_ARM_CPU_TOPOLOGY policy<{'armhf': 'y'}> +CONFIG_MCPM policy<{'armhf': 'y'}> +CONFIG_BIG_LITTLE policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER_DUMMY_IF policy<{'armhf': 'm'}> +CONFIG_STACKPROTECTOR_PER_TASK policy<{'arm64': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support +# + +# Menu: Processor type and features >> Symmetric multi-processing support >> Architecture: x86 +CONFIG_MAXSMP policy<{'amd64': 'y'}> +CONFIG_SCHED_MC_PRIO policy<{'amd64': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support >> NUMA Memory Allocation and Scheduler Support +# + +# Menu: Processor type and features >> Symmetric multi-processing support >> NUMA Memory Allocation and Scheduler Support >> Architecture: x86 +CONFIG_NUMA_EMU policy<{'amd64': 'n'}> +CONFIG_AMD_NUMA policy<{'amd64': 'y'}> +CONFIG_X86_64_ACPI_NUMA policy<{'amd64': 'y'}> +# +CONFIG_NUMA_EMU note mark +CONFIG_NUMA_EMU note + +# Menu: Processor type and features >> TSX enable mode >> Architecture: x86 +CONFIG_X86_INTEL_TSX_MODE_OFF policy<{'amd64': 'y'}> +CONFIG_X86_INTEL_TSX_MODE_ON policy<{'amd64': 'n'}> +CONFIG_X86_INTEL_TSX_MODE_AUTO policy<{'amd64': 'n'}> + +# Menu: Processor type and features >> Timer frequency +CONFIG_HZ_100 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_HZ_250 policy<{'amd64-generic': 'y', 'amd64-lowlatency': 'n', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_HZ_300 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_HZ_1000 policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Processor type and features >> Timer frequency >> Architecture: arm +CONFIG_HZ_200 policy<{'armhf': 'n'}> +CONFIG_HZ_500 policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Tune code generation >> Architecture: s390 +CONFIG_TUNE_DEFAULT policy<{'s390x': 'n'}> +CONFIG_TUNE_Z900 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z990 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z9_109 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z10 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z196 policy<{'s390x': 'n'}> +CONFIG_TUNE_ZEC12 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z13 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z14 policy<{'s390x': 'n'}> +CONFIG_TUNE_Z15 policy<{'s390x': 'y'}> + +# Menu: Processor type and features >> Virtual address space size >> Architecture: arm64 +CONFIG_ARM64_VA_BITS_39 policy<{'arm64-generic': 'n'}> +CONFIG_ARM64_VA_BITS_42 policy<{'arm64-generic-64k': 'n'}> +CONFIG_ARM64_VA_BITS_48 policy<{'arm64': 'y'}> +CONFIG_ARM64_VA_BITS_52 policy<{'arm64-generic-64k': 'n'}> +# +CONFIG_ARM64_VA_BITS_48 mark note + +# Menu: Processor type and features >> vsyscall table for legacy applications >> Architecture: x86 +CONFIG_LEGACY_VSYSCALL_EMULATE policy<{'amd64': 'n'}> +CONFIG_LEGACY_VSYSCALL_XONLY policy<{'amd64': 'y'}> +CONFIG_LEGACY_VSYSCALL_NONE policy<{'amd64': 'n'}> +# +CONFIG_LEGACY_VSYSCALL_XONLY flag + +# Menu: Security options +CONFIG_SECURITY_DMESG_RESTRICT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_PERF_EVENTS_RESTRICT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITYFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PAGE_TABLE_ISOLATION policy<{'amd64': 'y'}> +CONFIG_INTEL_TXT policy<{'amd64': 'y'}> +CONFIG_HARDENED_USERCOPY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HARDENED_USERCOPY_FALLBACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_HARDENED_USERCOPY_PAGESPAN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_FORTIFY_SOURCE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_STATIC_USERMODEHELPER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LSM policy<{'amd64': '"lockdown,yama,integrity,apparmor"', 'arm64': '"lockdown,yama,integrity,apparmor"', 'armhf': '"lockdown,yama,integrity,apparmor"', 'ppc64el': '"lockdown,yama,integrity,apparmor"', 's390x': '"lockdown,yama,integrity,apparmor"'}> +# +CONFIG_SECURITY_DMESG_RESTRICT mark +CONFIG_LSM mark + +# Menu: Security options >> Enable access key retention support +CONFIG_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KEYS_REQUEST_CACHE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_PERSISTENT_KEYRINGS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_TRUSTED_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ENCRYPTED_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KEY_DH_OPERATIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_KEY_NOTIFICATIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Enable different security models +CONFIG_SECURITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_NETWORK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_INFINIBAND policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_NETWORK_XFRM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_PATH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LSM_MMAP_MIN_ADDR policy<{'amd64': '0', 'arm64': '0', 'armhf': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_SECURITY_LOADPIN policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_YAMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SAFESETID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_LOCKDOWN_LSM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LOCK_DOWN_IN_SECURE_BOOT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SECURITY mark +CONFIG_LSM_MMAP_MIN_ADDR mark flag +CONFIG_SECURITY_YAMA mark +CONFIG_SECURITY_SAFESETID mark note +CONFIG_SECURITY_LOCKDOWN_LSM mark +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY mark +CONFIG_LOCK_DOWN_IN_SECURE_BOOT mark + +# Menu: Security options >> Enable different security models >> AppArmor support +CONFIG_SECURITY_APPARMOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_HASH policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_APPARMOR_DEBUG policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem +CONFIG_INTEGRITY policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_SIGNATURE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_AUDIT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> EVM support +CONFIG_EVM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_ATTR_FSUUID policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_EXTRA_SMACK_XATTRS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_ADD_XATTRS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_EVM_LOAD_X509 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_EVM_X509_PATH policy<{'ppc64el': '"/etc/keys/x509_evm.der"'}> +# +CONFIG_EVM note +CONFIG_EVM_ATTR_FSUUID note +CONFIG_EVM_LOAD_X509 note +CONFIG_EVM_X509_PATH note + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Enable asymmetric keys support +CONFIG_INTEGRITY_ASYMMETRIC_KEYS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INTEGRITY_PLATFORM_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LOAD_PPC_KEYS policy<{'ppc64el': 'y'}> +CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_INTEGRITY_PLATFORM_KEYRING mark note +CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY mark note +CONFIG_LOAD_PPC_KEYS mark note + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) +CONFIG_IMA policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_KEXEC policy<{'ppc64el': 'y'}> +CONFIG_IMA_WRITE_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_READ_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +# +CONFIG_IMA mark note +CONFIG_IMA_KEXEC mark note +CONFIG_IMA_WRITE_POLICY mark note +CONFIG_IMA_READ_POLICY mark note note + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Appraise integrity measurements +CONFIG_IMA_APPRAISE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_ARCH_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IMA_APPRAISE_BOOTPARAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_APPRAISE_MODSIG policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_TRUSTED_KEYRING policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_IMA_BLACKLIST_KEYRING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_LOAD_X509 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IMA_X509_PATH policy<{'ppc64el': '"/etc/keys/x509_ima.der"'}> +CONFIG_IMA_APPRAISE_SIGNED_INIT policy<{'ppc64el': 'n'}> +# +CONFIG_IMA_APPRAISE mark note +CONFIG_IMA_TRUSTED_KEYRING mark note +CONFIG_IMA_BLACKLIST_KEYRING mark note +CONFIG_IMA_LOAD_X509 mark note +CONFIG_IMA_X509_PATH mark note +CONFIG_IMA_APPRAISE_SIGNED_INIT mark note +CONFIG_IMA_ARCH_POLICY mark note + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Appraise integrity measurements >> IMA build time configured policy rules +CONFIG_IMA_APPRAISE_BUILD_POLICY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default integrity hash algorithm +CONFIG_IMA_DEFAULT_HASH_SHA1 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_IMA_DEFAULT_HASH_SHA256 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_IMA_DEFAULT_HASH_SHA512 policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +# +CONFIG_IMA_DEFAULT_HASH_SHA256 note + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default template +CONFIG_IMA_TEMPLATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_IMA_NG_TEMPLATE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'n', 's390x': 'y'}> +CONFIG_IMA_SIG_TEMPLATE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'y', 's390x': 'n'}> +# +CONFIG_IMA_SIG_TEMPLATE note + +# Menu: Security options >> Enable different security models >> Kernel default lockdown mode +CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Enable different security models >> NSA SELinux Support +CONFIG_SECURITY_SELINUX policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_BOOTPARAM policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> +CONFIG_SECURITY_SELINUX_DISABLE policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_SELINUX_DEVELOP policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_AVC_STATS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE policy<{'amd64': '1', 'arm64': '1', 'armhf': '1', 'ppc64el': '1', 's390x': '1'}> +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS policy<{'amd64': '9', 'arm64': '9', 'armhf': '9', 'ppc64el': '9', 's390x': '9'}> +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE policy<{'amd64': '256', 'arm64': '256', 'armhf': '256', 'ppc64el': '256', 's390x': '256'}> +# +CONFIG_SECURITY_SELINUX mark +CONFIG_SECURITY_SELINUX_DISABLE marknote + +# Menu: Security options >> Enable different security models >> Simplified Mandatory Access Control Kernel Support +CONFIG_SECURITY_SMACK policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SMACK_BRINGUP policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_SMACK_NETFILTER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_SMACK_APPEND_SIGNALS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_SECURITY_SMACK mark + +# Menu: Security options >> Enable different security models >> TOMOYO Linux Support +CONFIG_SECURITY_TOMOYO policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY policy<{'amd64': '2048', 'arm64': '2048', 'armhf': '2048', 'ppc64el': '2048', 's390x': '2048'}> +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'ppc64el': '1024', 's390x': '1024'}> +CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_SECURITY_TOMOYO_POLICY_LOADER policy<{'amd64': '"/sbin/tomoyo-init"', 'arm64': '"/sbin/tomoyo-init"', 'armhf': '"/sbin/tomoyo-init"', 'ppc64el': '"/sbin/tomoyo-init"', 's390x': '"/sbin/tomoyo-init"'}> +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER policy<{'amd64': '"/sbin/init"', 'arm64': '"/sbin/init"', 'armhf': '"/sbin/init"', 'ppc64el': '"/sbin/init"', 's390x': '"/sbin/init"'}> +CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> First legacy 'major LSM' to be initialized +CONFIG_DEFAULT_SECURITY_SELINUX policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_SMACK policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_TOMOYO policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_DEFAULT_SECURITY_APPARMOR policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_DEFAULT_SECURITY_DAC policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Kernel hardening options + +# Menu: Security options >> Kernel hardening options >> Memory initialization +CONFIG_INIT_ON_ALLOC_DEFAULT_ON policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_INIT_ON_FREE_DEFAULT_ON policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> + +# Menu: Security options >> Kernel hardening options >> Memory initialization >> Initialize kernel stack variables at function entry +CONFIG_INIT_STACK_NONE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> + +# Menu: Security options >> Kernel hardening options >> Memory initialization >> Poison kernel stack before returning from syscalls + +# Menu: Selftests >> Architecture: s390 +CONFIG_S390_UNWIND_SELFTEST policy<{'s390x': 'n'}> + +# Menu: System Type +# + +# Menu: System Type >> ARM Ltd. Integrator family >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Integrator family >> Support Integrator/AP and Integrator/PP2 platforms >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Integrator family >> Support Integrator/CP platform >> Architecture: arm + +# Menu: System Type >> ARM Ltd. RealView family >> Architecture: arm +CONFIG_ARCH_REALVIEW policy<{'armhf': 'n'}> + +# Menu: System Type >> ARM Ltd. RealView family >> Support RealView(R) Emulation Baseboard >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Versatile Express family + +# Menu: System Type >> ARM Ltd. Versatile Express family >> Architecture: arm +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_DCSCB policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_SPC policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_TC2_PM policy<{'armhf': 'y'}> + +# Menu: System Type >> ARM system type >> Architecture: arm +CONFIG_ARCH_MULTIPLATFORM policy<{'armhf': 'y'}> +CONFIG_ARCH_EBSA110 policy<{'armhf': 'n'}> +CONFIG_ARCH_EP93XX policy<{'armhf': 'n'}> +CONFIG_ARCH_FOOTBRIDGE policy<{'armhf': 'n'}> +CONFIG_ARCH_IOP32X policy<{'armhf': 'n'}> +CONFIG_ARCH_IXP4XX policy<{'armhf': 'n'}> +CONFIG_ARCH_DOVE policy<{'armhf': 'n'}> +CONFIG_ARCH_PXA policy<{'armhf': 'n'}> +CONFIG_ARCH_RPC policy<{'armhf': 'n'}> +CONFIG_ARCH_SA1100 policy<{'armhf': 'n'}> +CONFIG_ARCH_S3C24XX policy<{'armhf': 'n'}> +CONFIG_ARCH_OMAP1 policy<{'armhf': 'n'}> + +# Menu: System Type >> AT91/Microchip SoCs >> Architecture: arm +CONFIG_ARCH_AT91 policy<{'armhf': 'n'}> + +# Menu: System Type >> Allwinner SoCs + +# Menu: System Type >> Allwinner SoCs >> Architecture: arm + +# Menu: System Type >> Altera SOCFPGA family >> Architecture: arm +CONFIG_ARCH_SOCFPGA policy<{'armhf': 'n'}> + +# Menu: System Type >> Amlogic Meson SoCs + +# Menu: System Type >> Amlogic Meson SoCs >> Architecture: arm +CONFIG_MACH_MESON6 policy<{'armhf': 'y'}> +CONFIG_MACH_MESON8 policy<{'armhf': 'y'}> + +# Menu: System Type >> Architecture: arm +CONFIG_DEBUG_ALIGN_RODATA policy<{'armhf': 'y'}> +CONFIG_ARCH_VIRT policy<{'armhf': 'y'}> +CONFIG_ARCH_AXXIA policy<{'armhf-generic-lpae': 'y'}> +CONFIG_ARCH_DIGICOLOR policy<{'armhf': 'n'}> +CONFIG_ARCH_HIGHBANK policy<{'armhf': 'y'}> +CONFIG_ARCH_KEYSTONE policy<{'armhf': 'n'}> +CONFIG_ARCH_RDA policy<{'armhf': 'y'}> +CONFIG_ARCH_S5PV210 policy<{'armhf': 'n'}> +CONFIG_ARCH_TANGO policy<{'armhf': 'n'}> +CONFIG_ARCH_WM8850 policy<{'armhf': 'n'}> +CONFIG_ARCH_ZYNQ policy<{'armhf': 'n'}> +CONFIG_ARM_THUMB policy<{'armhf': 'y'}> +CONFIG_ARM_THUMBEE policy<{'armhf': 'y'}> +CONFIG_SWP_EMULATE policy<{'armhf': 'y'}> +CONFIG_CPU_ICACHE_DISABLE policy<{'armhf': 'n'}> +CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND policy<{'armhf': 'y'}> +CONFIG_CPU_BPREDICT_DISABLE policy<{'armhf': 'n'}> +CONFIG_CACHE_FEROCEON_L2 policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH policy<{'armhf': 'n'}> +CONFIG_CACHE_TAUROS2 policy<{'armhf': 'y'}> +CONFIG_CACHE_UNIPHIER policy<{'armhf': 'y'}> +CONFIG_ARM_DMA_MEM_BUFFERABLE policy<{'armhf': 'y'}> +CONFIG_IWMMXT policy<{'armhf': 'y'}> +CONFIG_PJ4B_ERRATA_4742 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_430973 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_643719 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_720789 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754322 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754327 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_764369 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_775420 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_798181 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_773022 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_818325_852422 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_821420 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_825619 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_857271 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_852421 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_852423 policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_857272 policy<{'armhf': 'y'}> +# +CONFIG_ARCH_TANGO mark note + +# Menu: System Type >> Aspeed BMC architectures >> Architecture: arm +CONFIG_ARCH_ASPEED policy<{'armhf': 'y'}> +CONFIG_MACH_ASPEED_G6 policy<{'armhf': 'y'}> + +# Menu: System Type >> Axis Communications ARM based ARTPEC SoCs >> Architecture: arm +CONFIG_ARCH_ARTPEC policy<{'armhf': 'y'}> +CONFIG_MACH_ARTPEC6 policy<{'armhf': 'n'}> + +# Menu: System Type >> Broadcom SoC Support + +# Menu: System Type >> Broadcom SoC Support >> Architecture: arm +CONFIG_ARCH_BCM policy<{'armhf': 'n'}> + +# Menu: System Type >> CSR SiRF >> Architecture: arm +CONFIG_ARCH_SIRF policy<{'armhf': 'n'}> + +# Menu: System Type >> Cavium Networks CNS3XXX family >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Enable the L2x0 outer cache controller >> Architecture: arm +CONFIG_CACHE_L2X0 policy<{'armhf': 'y'}> +CONFIG_CACHE_L2X0_PMU policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_588369 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_727915 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_753970 policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_769419 policy<{'armhf': 'y'}> + +# Menu: System Type >> Footbridge Implementations >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family + +# Menu: System Type >> Freescale i.MX family >> Architecture: arm +CONFIG_SOC_IMX50 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX51 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX53 policy<{'armhf-generic': 'n'}> +CONFIG_SOC_IMX6Q policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6SL policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6SLL policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6SX policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX6UL policy<{'armhf-generic': 'y'}> +CONFIG_SOC_LS1021A policy<{'armhf-generic': 'n'}> +CONFIG_SOC_IMX7D policy<{'armhf-generic': 'y'}> +CONFIG_SOC_IMX7ULP policy<{'armhf-generic': 'y'}> +CONFIG_SOC_VF610 policy<{'armhf-generic': 'y'}> + +# Menu: System Type >> Freescale i.MX family >> Clocksource for scheduler clock >> Architecture: arm +CONFIG_VF_USE_ARM_GLOBAL_TIMER policy<{'armhf-generic': 'y'}> +CONFIG_VF_USE_PIT_TIMER policy<{'armhf-generic': 'n'}> + +# Menu: System Type >> Hisilicon platform type >> Architecture: arm +CONFIG_ARCH_HI3xxx policy<{'armhf': 'y'}> +CONFIG_ARCH_HIP01 policy<{'armhf': 'n'}> +CONFIG_ARCH_HIP04 policy<{'armhf': 'y'}> +CONFIG_ARCH_HIX5HD2 policy<{'armhf': 'y'}> + +# Menu: System Type >> IOP32x Implementation Options >> Architecture: arm + +# Menu: System Type >> Intel IXP4xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Gumstix Carrier/Expansion Board >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> Motorola EZX Platform >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Keith und Koep Trizeps DIMM-Modules >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Keith und Koep Trizeps DIMM-Modules >> Select base board for Trizeps module >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Palm PDAs >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> PXA based Toshiba e-series PDAs >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models >> Architecture: arm + +# Menu: System Type >> Intel PXA2xx/PXA3xx Implementations >> display on pcm990 >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Architecture: arm +CONFIG_MMU policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_ARM_LPAE policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_VDSO policy<{'armhf': 'y'}> + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Marvell Orion >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support >> ST-Ericsson U300 Series >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support >> ST-Ericsson U8500 Series >> Architecture: arm +CONFIG_ARCH_U8500 policy<{'armhf': 'n'}> + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Set flash/sdram size and base addr >> Architecture: arm + +# Menu: System Type >> MOXA ART SoC >> Architecture: arm + +# Menu: System Type >> Marvell Berlin SoCs + +# Menu: System Type >> Marvell Berlin SoCs >> Architecture: arm +CONFIG_MACH_BERLIN_BG2 policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2CD policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2Q policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell Dove Implementations >> Architecture: arm + +# Menu: System Type >> Marvell Engineering Business Unit (MVEBU) SoCs + +# Menu: System Type >> Marvell Engineering Business Unit (MVEBU) SoCs >> Architecture: arm +CONFIG_MACH_ARMADA_370 policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_375 policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_38X policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_39X policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_XP policy<{'armhf': 'y'}> +CONFIG_MACH_DOVE policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell MV78xx0 >> Architecture: arm + +# Menu: System Type >> Marvell PXA168/910/MMP2/MMP3 >> Architecture: arm +CONFIG_ARCH_MMP policy<{'armhf': 'n'}> + +# Menu: System Type >> Marvell PXA168/910/MMP2/MMP3 >> Marvell PXA168/910/MMP2 Implementations >> Architecture: arm + +# Menu: System Type >> MediaTek SoC Support + +# Menu: System Type >> MediaTek SoC Support >> Architecture: arm +CONFIG_MACH_MT2701 policy<{'armhf': 'y'}> +CONFIG_MACH_MT6589 policy<{'armhf': 'y'}> +CONFIG_MACH_MT6592 policy<{'armhf': 'y'}> +CONFIG_MACH_MT7623 policy<{'armhf': 'y'}> +CONFIG_MACH_MT7629 policy<{'armhf': 'y'}> +CONFIG_MACH_MT8127 policy<{'armhf': 'y'}> +CONFIG_MACH_MT8135 policy<{'armhf': 'y'}> + +# Menu: System Type >> Multiple platform selection >> Architecture: arm +CONFIG_ARCH_MULTI_V6 policy<{'armhf': 'n'}> +CONFIG_ARCH_MULTI_V7 policy<{'armhf': 'y'}> + +# Menu: System Type >> Nuvoton NPCM Architecture >> Architecture: arm +CONFIG_ARCH_NPCM policy<{'armhf': 'y'}> +CONFIG_ARCH_NPCM7XX policy<{'armhf': 'y'}> + +# Menu: System Type >> Oxford Semiconductor OXNAS Family SoCs >> Architecture: arm + +# Menu: System Type >> Qualcomm Support + +# Menu: System Type >> Qualcomm Support >> Architecture: arm +CONFIG_ARCH_IPQ40XX policy<{'armhf': 'n'}> +CONFIG_ARCH_MSM8X60 policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8960 policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8974 policy<{'armhf': 'y'}> +CONFIG_ARCH_MDM9615 policy<{'armhf': 'y'}> + +# Menu: System Type >> SA11x0 Implementations >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Cerf Flash available >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> Architecture: arm +CONFIG_PLAT_SPEAR policy<{'armhf': 'n'}> + +# Menu: System Type >> ST SPEAr Family >> ST SPEAr13xx >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> ST SPEAr13xx >> ST SPEAr3xx >> Architecture: arm + +# Menu: System Type >> ST-Ericsson Nomadik >> Architecture: arm + +# Menu: System Type >> STMicroelectronics Consumer Electronics SOCs >> Architecture: arm +CONFIG_ARCH_STI policy<{'armhf': 'n'}> + +# Menu: System Type >> STMicroelectronics STM32 family >> Architecture: arm +CONFIG_ARCH_STM32 policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung Common options >> Architecture: arm + +# Menu: System Type >> Samsung Exynos + +# Menu: System Type >> Samsung Exynos >> Architecture: arm +CONFIG_ARCH_EXYNOS3 policy<{'armhf': 'n'}> +CONFIG_ARCH_EXYNOS4 policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung Exynos >> Samsung Exynos5 >> Architecture: arm +CONFIG_ARCH_EXYNOS5 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5250 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5260 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5410 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5420 policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5800 policy<{'armhf': 'y'}> + +# Menu: System Type >> Samsung S3C24XX SoCs Support >> Architecture: arm + +# Menu: System Type >> Samsung S3C24XX SoCs Support >> Samsung S3C2410 >> Architecture: arm + +# Menu: System Type >> Samsung S3C24XX SoCs Support >> Samsung S3C2412 >> Architecture: arm + +# Menu: System Type >> Samsung S3C24XX SoCs Support >> Samsung S3C2440 >> Architecture: arm + +# Menu: System Type >> Samsung S3C64XX >> Architecture: arm + +# Menu: System Type >> Samsung S3C64XX >> SMDK6410 >> Architecture: arm + +# Menu: System Type >> Samsung S3C64XX >> SMDK6410 >> SMDK6410 MMC/SD slot setup >> Architecture: arm + +# Menu: System Type >> Socionext Milbeaut SoCs >> Architecture: arm +CONFIG_ARCH_MILBEAUT policy<{'armhf': 'y'}> +CONFIG_ARCH_MILBEAUT_M10V policy<{'armhf': 'y'}> + +# Menu: System Type >> TI DaVinci >> Architecture: arm + +# Menu: System Type >> TI DaVinci >> DA850/OMAP-L138/AM18x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci >> DA850/OMAP-L138/AM18x based system >> Select peripherals connected to expander on UI board >> Architecture: arm + +# Menu: System Type >> TI DaVinci >> DaVinci 644x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci >> Select DA830/OMAP-L137/AM17x UI board peripheral >> Architecture: arm + +# Menu: System Type >> TI OMAP Common Features >> Architecture: arm +CONFIG_POWER_AVS_OMAP policy<{'armhf-generic': 'y'}> +CONFIG_POWER_AVS_OMAP_CLASS3 policy<{'armhf-generic': 'y'}> +CONFIG_OMAP_RESET_CLOCKS policy<{'armhf': 'y'}> +CONFIG_OMAP_32K_TIMER policy<{'armhf': 'y'}> +CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE policy<{'armhf-generic': 'n'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> Architecture: arm +CONFIG_ARCH_OMAP3 policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_OMAP4 policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_OMAP5 policy<{'armhf': 'n'}> +CONFIG_SOC_AM33XX policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_AM43XX policy<{'armhf': 'n'}> +CONFIG_SOC_DRA7XX policy<{'armhf': 'y'}> +CONFIG_OMAP5_ERRATA_801819 policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> TI OMAP2/3/4 Specific Features >> Architecture: arm +CONFIG_ARCH_OMAP2PLUS_TYPICAL policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_OMAP2_SDRC policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_REALTIME_COUNTER policy<{'armhf': 'y'}> +CONFIG_SOC_OMAP3430 policy<{'armhf-generic': 'y'}> +CONFIG_SOC_TI81XX policy<{'armhf-generic': 'y'}> +CONFIG_MACH_OMAP3517EVM policy<{'armhf-generic': 'n'}> +CONFIG_MACH_OMAP3_PANDORA policy<{'armhf-generic': 'y'}> +CONFIG_OMAP3_SDRC_AC_TIMING policy<{'armhf-generic': 'n'}> + +# Menu: System Type >> TI OMAP1 specific features >> Architecture: arm + +# Menu: System Type >> TI OMAP1 specific features >> OMAP15xx Based System >> Architecture: arm + +# Menu: System Type >> TI OMAP1 specific features >> OMAP16xx Based System >> Architecture: arm +CONFIG_MACH_OMAP_GENERIC policy<{'armhf': 'y'}> + +# Menu: Ubuntu Supplied Third-Party Device Drivers +CONFIG_HIO policy<{'amd64': 'm', 'arm64': 'n', 'armhf': 'n', 'ppc64el': 'n', 's390x': 'n'}> +CONFIG_UBUNTU_HOST policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +# +CONFIG_HIO mark note + +# Menu: Virtualization +CONFIG_VIRTUALIZATION policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# + +# Menu: Virtualization >> Architecture: powerpc +CONFIG_KVM_BOOK3S_64 policy<{'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_HV policy<{'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_PR policy<{'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_HV_EXIT_TIMING policy<{'ppc64el': 'n'}> +CONFIG_KVM_XICS policy<{'ppc64el': 'y'}> + +# Menu: Virtualization >> Architecture: s390 +CONFIG_PROTECTED_VIRTUALIZATION_GUEST policy<{'s390x': 'y'}> +CONFIG_PFAULT policy<{'s390x': 'y'}> +CONFIG_CMM_IUCV policy<{'s390x': 'y'}> +CONFIG_S390_HYPFS_FS policy<{'s390x': 'y'}> +CONFIG_S390_GUEST policy<{'s390x': 'y'}> + +# Menu: Virtualization >> Architecture: x86 +CONFIG_KVM_WERROR policy<{'amd64': 'y'}> + +# Menu: Virtualization >> KVM +CONFIG_KVM policy<{'amd64': 'm', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> +# +CONFIG_KVM note + +# Menu: Virtualization >> KVM >> Architecture: s390 +CONFIG_KVM_S390_UCONTROL policy<{'s390x': 'n'}> + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support +# + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support >> Architecture: arm64 +CONFIG_KVM_ARM_PMU policy<{'arm64': 'y'}> + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support >> Architecture: x86 +CONFIG_KVM_INTEL policy<{'amd64': 'm'}> +CONFIG_KVM_AMD policy<{'amd64': 'm'}> +CONFIG_KVM_AMD_SEV policy<{'amd64': 'y'}> +CONFIG_KVM_MMU_AUDIT policy<{'amd64': 'n'}> + +# Menu: Virtualization >> Linux - VM Monitor Stream, base infrastructure >> Architecture: s390 +CONFIG_APPLDATA_BASE policy<{'s390x': 'y'}> +CONFIG_APPLDATA_MEM policy<{'s390x': 'm'}> +CONFIG_APPLDATA_OS policy<{'s390x': 'm'}> +CONFIG_APPLDATA_NET_SUM policy<{'s390x': 'm'}> + +# Menu: FOOTER + +# temporarily disabled options -- build failures. + +#CONFIG_TI_CPSW p policy<(arch armel armhf &/ value n) | value m> flag +#CONFIG_USB_MUSB_DSPS p policy<(arch armel armhf &/ value n) | value m> flag +#CONFIG_LIS3L02DQ p policy<(arch armhf &/ value n) | value m> flag +#CONFIG_EZX_PCAP p policy<(arch armhf &/ value n) | value y> flag +#CONFIG_TOUCHSCREEN_EGALAX p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_TOUCHSCREEN_EETI p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_SENSORS_AK8975 p policy<(arch armel armhf &/ value n) | value m> flag note +#CONFIG_PPC_EPAPR_HV_BYTECHAN n flag note + +# +# --- linux-5.8.0.orig/debian.master/config/arm64/config.common.arm64 +++ linux-5.8.0/debian.master/config/arm64/config.common.arm64 @@ -0,0 +1,690 @@ +# +# Config options for config.common.arm64 automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_AD525X_DPOT=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ANDROID=y +CONFIG_APDS9802ALS=m +CONFIG_APPLICOM=m +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_EXYNOS is not set +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_ARCH_MXC=y +CONFIG_ARCH_SUNXI=y +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_UNIPHIER is not set +CONFIG_ARCNET=m +CONFIG_ARM_SMMU=y +CONFIG_ATA=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_AX88796B_PHY=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BAREUDP=m +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCM84881_PHY=y +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Ubuntu 10.2.0-8ubuntu1) 10.2.0" +CONFIG_CDROM_PKTCDVD=m +CONFIG_CLOCK_THERMAL=y +CONFIG_CMA=y +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_CMDLINE_PARTITION=y +CONFIG_COMMON_CLK=y +CONFIG_COUNTER=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRAMFS=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMADEVICES=y +CONFIG_DMA_CMA=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_DM_DEBUG is not set +CONFIG_DNET=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DP_AUX_CHARDEV=y +CONFIG_DRM_DP_CEC=y +CONFIG_DRM_ETNAVIV=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA9950=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_QXL=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_RCAR_LVDS=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VKMS=m +CONFIG_DS1682=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_EE1004=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFS_FS=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +# CONFIG_EVM_LOAD_X509 is not set +CONFIG_EXFAT_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB_3DFX=m +CONFIG_FB_ARK=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_I740=m +# CONFIG_FB_IBM_GXT4500 is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MATROX=m +CONFIG_FB_MB862XX=m +CONFIG_FB_METRONOME=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_OPENCORES=m +CONFIG_FB_PM2=m +CONFIG_FB_PM3=m +CONFIG_FB_RADEON=m +CONFIG_FB_RIVA=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SM712=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIXED_PHY=y +CONFIG_FPGA_BRIDGE=m +CONFIG_FPGA_DFL=m +CONFIG_FRAME_WARN=1024 +CONFIG_FSL_MC_BUS=y +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GNSS=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD_FCH=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SIOX=m +CONFIG_GPIO_TPIC2810=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_XILINX=y +CONFIG_GREYBUS=m +CONFIG_HABANA_AI=m +CONFIG_HAMACHI=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HIBERNATION is not set +CONFIG_HID=m +# CONFIG_HIO is not set +CONFIG_HMC6352=m +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_SHPC=y +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HWSPINLOCK=y +CONFIG_HW_RANDOM_CCTRNG=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +# CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_EMEV2 is not set +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID=m +CONFIG_I2C_I801=m +CONFIG_I2C_IMX=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_MLXCPLD=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I3C=m +CONFIG_I6300ESB_WDT=m +CONFIG_ICS932S401=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +# CONFIG_IMA_ARCH_POLICY is not set +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_READ_POLICY is not set +# CONFIG_IMA_SIG_TEMPLATE is not set +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INTERCONNECT=y +CONFIG_IOMMU_IOVA=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMMU_VMSA is not set +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_IRQ_BYPASS_MANAGER=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC_FILE=y +CONFIG_KVM=y +CONFIG_LAPB=m +# CONFIG_LATENCYTOP is not set +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_LZ4_COMPRESS=y +CONFIG_MAC_PARTITION=y +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS=y +CONFIG_MDIO_BUS_MUX=y +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_THUNDER=m +CONFIG_MDIO_XPCS=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y +CONFIG_MEMSTICK=m +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_IQS62X=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MP2629=m +CONFIG_MFD_MT6360=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WCD934X=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM8994=m +CONFIG_MHI_BUS=m +CONFIG_MII=y +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_CQHCI=m +CONFIG_MMC_HSQ=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_ESDHC_IMX=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MOST=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_NAND_ECC_SW_HAMMING=m +CONFIG_MTD_OF_PARTS=m +CONFIG_MTD_PHYSMAP_GEMINI=y +CONFIG_MTD_PHYSMAP_VERSATILE=y +CONFIG_MTD_RAW_NAND=m +CONFIG_NET_DSA_MSCC_FELIX=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFP=m +CONFIG_NODES_SHIFT=6 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=256 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_NVMEM=y +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKING=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PANIC_TIMEOUT=0 +CONFIG_PARAVIRT=y +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +CONFIG_PC104=y +CONFIG_PCCARD=m +CONFIG_PCIEPORTBUS=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_LAYERSCAPE=y +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCMCIA is not set +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_TI_GMII_SEL=m +CONFIG_PINCTRL=y +# CONFIG_PMIC_OPREGION is not set +CONFIG_PM_DEVFREQ=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PWM=y +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_QRTR=m +CONFIG_RAPIDIO=y +CONFIG_RAVE_SP_CORE=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RC_CORE=m +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TPS65217=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_REMOTEPROC=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_RMI4_CORE=m +CONFIG_ROMFS_FS=m +CONFIG_RPMSG_VIRTIO=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_S2IO=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFS_QCOM=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SFC_FALCON=m +CONFIG_SGI_PARTITION=y +CONFIG_SLIP=m +CONFIG_SMC91X=y +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_IMX_SOC=m +CONFIG_SND_PCM=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_IMX_PCM_DMA=m +CONFIG_SND_SOC_IMX_SGTL5000=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_BRCMSTB=y +CONFIG_SOC_IMX8M=y +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_THERMAL=y +CONFIG_TIFM_CORE=m +# CONFIG_TI_SOC_THERMAL is not set +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACE_SINK=m +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TTY_PRINTK=y +CONFIG_UACCE=m +CONFIG_UFS_FS=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB4=m +CONFIG_USB_DWC2_PCI=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_EMXX=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_ROLE_SWITCH=y +CONFIG_USB_SUPPORT=y +CONFIG_VDPA=m +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_VIRQFD=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +# CONFIG_VOP_BUS is not set +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_XEN=y +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILINX_SDFEC=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YELLOWFIN=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_ZSTD_COMPRESS=y --- linux-5.8.0.orig/debian.master/config/arm64/config.flavour.generic +++ linux-5.8.0/debian.master/config/arm64/config.flavour.generic @@ -0,0 +1,12 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_ARCH_MMAP_RND_BITS_MAX=33 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_CONT_SHIFT=4 +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_PGTABLE_LEVELS=4 --- linux-5.8.0.orig/debian.master/config/arm64/config.flavour.generic-64k +++ linux-5.8.0/debian.master/config/arm64/config.flavour.generic-64k @@ -0,0 +1,12 @@ +# +# Config options for config.flavour.generic-64k automatically generated by splitconfig.pl +# +CONFIG_ARCH_MMAP_RND_BITS_MAX=29 +CONFIG_ARCH_MMAP_RND_BITS_MIN=14 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=7 +# CONFIG_ARM64_4K_PAGES is not set +CONFIG_ARM64_64K_PAGES=y +CONFIG_ARM64_CONT_SHIFT=5 +CONFIG_ARM64_PAGE_SHIFT=16 +CONFIG_FORCE_MAX_ZONEORDER=14 +CONFIG_PGTABLE_LEVELS=3 --- linux-5.8.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-5.8.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,666 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=y +CONFIG_AD525X_DPOT=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ANDROID=y +CONFIG_APDS9802ALS=m +CONFIG_APPLICOM=m +CONFIG_ARCH_ALPINE=y +CONFIG_ARCH_EXYNOS=y +CONFIG_ARCH_MMAP_RND_BITS=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +# CONFIG_ARCH_SUNXI is not set +CONFIG_ARCH_UNIPHIER=y +CONFIG_ARCNET=m +# CONFIG_ARM_SMMU is not set +CONFIG_ATA=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_AX88796B_PHY=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BAREUDP=m +CONFIG_BATMAN_ADV=m +CONFIG_BCH=y +CONFIG_BCM84881_PHY=y +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BOUNCE=y +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_VERSION_TEXT="arm-linux-gnueabihf-gcc (Ubuntu 10.2.0-8ubuntu1) 10.2.0" +CONFIG_CDROM_PKTCDVD=m +CONFIG_CLOCK_THERMAL=y +CONFIG_CMA=y +CONFIG_CMDLINE="" +CONFIG_CMDLINE_PARTITION=y +CONFIG_COMMON_CLK=y +CONFIG_COUNTER=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRAMFS=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMADEVICES=y +CONFIG_DMA_CMA=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_DM_DEBUG is not set +CONFIG_DNET=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DP_AUX_CHARDEV=y +CONFIG_DRM_DP_CEC=y +CONFIG_DRM_ETNAVIV=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA9950=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_QXL=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_RCAR_LVDS=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VKMS=m +CONFIG_DS1682=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_EE1004=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFS_FS=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +# CONFIG_EVM_LOAD_X509 is not set +CONFIG_EXFAT_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB_3DFX=m +CONFIG_FB_ARK=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_I740=m +# CONFIG_FB_IBM_GXT4500 is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MATROX=m +CONFIG_FB_MB862XX=m +CONFIG_FB_METRONOME=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_OPENCORES=m +CONFIG_FB_PM2=m +CONFIG_FB_PM3=m +CONFIG_FB_RADEON=m +CONFIG_FB_RIVA=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SM712=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIXED_PHY=y +CONFIG_FPGA_BRIDGE=m +CONFIG_FPGA_DFL=m +CONFIG_FRAME_WARN=1024 +# CONFIG_FSL_MC_BUS is not set +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GNSS=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD_FCH=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SIOX=m +CONFIG_GPIO_TPIC2810=m +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_TWL6040=y +CONFIG_GPIO_XILINX=y +CONFIG_GREYBUS=m +CONFIG_HABANA_AI=m +CONFIG_HAMACHI=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +CONFIG_HIBERNATION=y +CONFIG_HID=m +# CONFIG_HIO is not set +CONFIG_HMC6352=m +# CONFIG_HOTPLUG_PCI is not set +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HWSPINLOCK=y +CONFIG_HW_RANDOM_CCTRNG=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_EMEV2=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID=m +CONFIG_I2C_I801=m +CONFIG_I2C_IMX=y +CONFIG_I2C_ISCH=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_MLXCPLD=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I3C=m +CONFIG_I6300ESB_WDT=m +CONFIG_ICS932S401=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +# CONFIG_IMA_ARCH_POLICY is not set +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_READ_POLICY is not set +# CONFIG_IMA_SIG_TEMPLATE is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INTERCONNECT=y +CONFIG_IOMMU_IOVA=m +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +CONFIG_IPMMU_VMSA=y +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_IRQ_BYPASS_MANAGER=m +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_JFS_FS=m +CONFIG_JME=m +# CONFIG_JUMP_LABEL is not set +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZ4 is not set +CONFIG_LAPB=m +# CONFIG_LATENCYTOP is not set +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_LZ4_COMPRESS=y +CONFIG_MAC_PARTITION=y +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS=y +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_XPCS=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +CONFIG_MEMSTICK=m +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_IQS62X=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MP2629=m +CONFIG_MFD_MT6360=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65217=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WCD934X=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM8994=m +CONFIG_MHI_BUS=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +# CONFIG_MMC_HSQ is not set +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MOST=m +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_NAND_CORE=y +CONFIG_MTD_NAND_ECC_SW_HAMMING=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_PHYSMAP_GEMINI=y +CONFIG_MTD_PHYSMAP_VERSATILE=y +CONFIG_MTD_RAW_NAND=y +# CONFIG_NET_DSA_MSCC_FELIX is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFP=m +CONFIG_NOP_USB_XCEIV=y +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=4 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NVMEM=y +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKING=y +CONFIG_PAGE_EXTENSION=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_PARAVIRT is not set +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +CONFIG_PC104=y +# CONFIG_PCCARD is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PCIPCWATCHDOG=m +# CONFIG_PCI_LAYERSCAPE is not set +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_TI_GMII_SEL=y +CONFIG_PINCTRL=y +CONFIG_PM_DEVFREQ=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_QRTR=m +CONFIG_RAPIDIO=y +CONFIG_RAVE_SP_CORE=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RC_CORE=m +CONFIG_REED_SOLOMON=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_TPS65217=y +CONFIG_REISERFS_FS=m +CONFIG_REMOTEPROC=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_RMI4_CORE=m +CONFIG_ROMFS_FS=m +CONFIG_RPMSG_VIRTIO=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_TWL4030=y +CONFIG_S2IO=m +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +# CONFIG_SCSI_UFS_QCOM is not set +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SFC_FALCON=m +CONFIG_SGI_PARTITION=y +CONFIG_SLIP=m +CONFIG_SMC91X=m +CONFIG_SND=y +CONFIG_SND_COMPRESS_OFFLOAD=y +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_IMX_SOC=y +CONFIG_SND_PCM=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_IMX_PCM_DMA=y +CONFIG_SND_SOC_IMX_SGTL5000=y +CONFIG_SND_TIMER=y +# CONFIG_SOC_BRCMSTB is not set +# CONFIG_SOC_IMX8M is not set +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI=y +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_THERMAL=y +CONFIG_TIFM_CORE=m +CONFIG_TI_SOC_THERMAL=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACE_SINK=m +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TTY_PRINTK=y +CONFIG_UACCE=m +CONFIG_UFS_FS=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB4=m +CONFIG_USB_DWC2_PCI=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_EMXX=y +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_ROLE_SWITCH=y +CONFIG_USB_SUPPORT=y +CONFIG_VDPA=m +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_VIRQFD=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VME_BUS=y +CONFIG_VMXNET3=m +# CONFIG_VOP_BUS is not set +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +# CONFIG_XEN is not set +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILINX_SDFEC=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YELLOWFIN=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_ZSTD_COMPRESS=y --- linux-5.8.0.orig/debian.master/config/armhf/config.flavour.generic +++ linux-5.8.0/debian.master/config/armhf/config.flavour.generic @@ -0,0 +1,22 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# +CONFIG_ARCH_MXC=y +CONFIG_ARCH_OMAP3=y +CONFIG_ARCH_OMAP4=y +CONFIG_ARCH_TEGRA=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +# CONFIG_ARM_HIGHBANK_CPUIDLE is not set +# CONFIG_ARM_LPAE is not set +CONFIG_FORCE_MAX_ZONEORDER=12 +CONFIG_MMC_CQHCI=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_REGULATOR_TWL4030=y +CONFIG_RTC_DRV_PCF8523=y +CONFIG_SND_SOC_FSL_SSI=y +CONFIG_SND_SOC_IMX_AUDMUX=y +CONFIG_SND_SOC_SGTL5000=y +CONFIG_SOC_AM33XX=y +CONFIG_USB_OHCI_HCD_PLATFORM=m --- linux-5.8.0.orig/debian.master/config/armhf/config.flavour.generic-lpae +++ linux-5.8.0/debian.master/config/armhf/config.flavour.generic-lpae @@ -0,0 +1,22 @@ +# +# Config options for config.flavour.generic-lpae automatically generated by splitconfig.pl +# +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARM_ATAG_DTB_COMPAT is not set +CONFIG_ARM_HIGHBANK_CPUIDLE=y +CONFIG_ARM_LPAE=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_MMC_CQHCI=m +CONFIG_PGTABLE_LEVELS=3 +# CONFIG_PWM_TIECAP is not set +# CONFIG_PWM_TIEHRPWM is not set +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_SGTL5000=m +# CONFIG_SOC_AM33XX is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set --- linux-5.8.0.orig/debian.master/config/config.common.ports +++ linux-5.8.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-5.8.0.orig/debian.master/config/config.common.ubuntu +++ linux-5.8.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,11952 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_104_QUAD_8=m +CONFIG_60XX_WDT=m +CONFIG_64BIT=y +# CONFIG_6LOWPAN_DEBUGFS is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set +# CONFIG_6LOWPAN_GHC_ICMPV6 is not set +# CONFIG_6LOWPAN_GHC_UDP is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +CONFIG_6PACK=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m +CONFIG_88EU_AP_MODE=y +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_AB3100_CORE=y +CONFIG_AB3100_OTP=m +CONFIG_ABP060MG=m +# CONFIG_ACCESSIBILITY is not set +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACERHDF=m +CONFIG_ACER_WIRELESS=m +CONFIG_ACER_WMI=m +# CONFIG_ACORN_PARTITION is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=y +CONFIG_ACPI_ADXL=y +CONFIG_ACPI_ALS=m +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_EINJ=m +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_SEA=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BGRT=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_CCA_REQUIRED=y +CONFIG_ACPI_CMPC=m +CONFIG_ACPI_CONFIGFS=m +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_CPPC_CPUFREQ=m +CONFIG_ACPI_CPPC_LIB=y +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_METHOD is not set +CONFIG_ACPI_DEBUGGER_USER=y +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_EXTLOG=m +CONFIG_ACPI_FAN=y +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_GTDT=y +CONFIG_ACPI_HED=y +CONFIG_ACPI_HMAT=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_ACPI_IORT=y +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_MCFG=y +CONFIG_ACPI_NFIT=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_PPTT=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TAD=m +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_THERMAL_REL=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_WATCHDOG=y +CONFIG_ACPI_WMI=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACRN_GUEST=y +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5272=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5504=m +CONFIG_AD5592R=m +CONFIG_AD5592R_BASE=m +CONFIG_AD5593R=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +CONFIG_AD5755=m +CONFIG_AD5758=m +CONFIG_AD5761=m +CONFIG_AD5764=m +CONFIG_AD5770R=m +CONFIG_AD5791=m +CONFIG_AD5933=m +CONFIG_AD7091R5=m +CONFIG_AD7124=m +CONFIG_AD7150=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7292=m +CONFIG_AD7298=m +CONFIG_AD7303=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7746=m +CONFIG_AD7766=m +CONFIG_AD7768_1=m +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD7949=m +CONFIG_AD799X=m +CONFIG_AD8366=m +CONFIG_AD8801=m +CONFIG_AD9467=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADF4350=m +CONFIG_ADF4371=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIN_PHY=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16209=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADIS16460=m +CONFIG_ADIS16475=m +CONFIG_ADIS16480=m +CONFIG_ADI_AXI_ADC=m +CONFIG_ADJD_S311=m +CONFIG_ADM8211=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +CONFIG_ADUX1020=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVISE_SYSCALLS=y +CONFIG_ADXL372=m +CONFIG_ADXL372_I2C=m +CONFIG_ADXL372_SPI=m +CONFIG_ADXRS450=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AEABI=y +CONFIG_AFE4403=m +CONFIG_AFE4404=m +CONFIG_AFIUCV=m +# CONFIG_AFS_DEBUG is not set +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_KCM=m +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +CONFIG_AF_RXRPC_IPV6=y +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=m +CONFIG_AGP_VIA=y +CONFIG_AHCI_BRCM=m +CONFIG_AHCI_CEVA=m +CONFIG_AHCI_DM816=m +CONFIG_AHCI_IMX=y +CONFIG_AHCI_MTK=m +CONFIG_AHCI_MVEBU=m +CONFIG_AHCI_QORIQ=m +# CONFIG_AHCI_SUNXI is not set +CONFIG_AHCI_TEGRA=m +CONFIG_AHCI_XGENE=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIO=y +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_AK09911=m +CONFIG_AK8974=m +CONFIG_AK8975=m +CONFIG_AL3010=m +CONFIG_AL3320A=m +CONFIG_ALIENWARE_WMI=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALIM1535_WDT=m +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_ALPINE_MSI=y +CONFIG_ALTERA_FREEZE_BRIDGE=m +CONFIG_ALTERA_MBOX=m +CONFIG_ALTERA_MSGDMA=m +CONFIG_ALTERA_PR_IP_CORE=m +CONFIG_ALTERA_PR_IP_CORE_PLAT=m +CONFIG_ALTIVEC=y +CONFIG_ALX=m +CONFIG_AL_FIC=y +CONFIG_AM2315=m +CONFIG_AM335X_CONTROL_USB=m +CONFIG_AM335X_PHY_USB=m +CONFIG_AMBA_PL08X=y +CONFIG_AMD8111_ETH=m +CONFIG_AMDTEE=m +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_AMD_MEM_ENCRYPT=y +# CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT is not set +CONFIG_AMD_NB=y +CONFIG_AMD_NUMA=y +CONFIG_AMD_PHY=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_AMILO_RFKILL=m +CONFIG_AMLOGIC_THERMAL=m +CONFIG_ANDROID_BINDERFS=m +CONFIG_ANDROID_BINDER_DEVICES="" +CONFIG_ANDROID_BINDER_IPC=m +# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set +CONFIG_APDS9300=m +CONFIG_APDS9960=m +# CONFIG_APM_EMULATION is not set +CONFIG_APPLDATA_BASE=y +CONFIG_APPLDATA_MEM=m +CONFIG_APPLDATA_NET_SUM=m +CONFIG_APPLDATA_OS=m +CONFIG_APPLE_GMUX=m +CONFIG_APPLE_MFI_FASTCHARGE=m +CONFIG_APPLE_PROPERTIES=y +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m +CONFIG_AQTION=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AR5523=m +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_ARCH_ACTIONS=y +CONFIG_ARCH_AGILEX=y +CONFIG_ARCH_ARTPEC=y +CONFIG_ARCH_ASPEED=y +# CONFIG_ARCH_AT91 is not set +CONFIG_ARCH_AXXIA=y +# CONFIG_ARCH_BCM is not set +CONFIG_ARCH_BCM2835=y +CONFIG_ARCH_BCM_IPROC=y +CONFIG_ARCH_BERLIN=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_BITMAIN=y +CONFIG_ARCH_BRCMSTB=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_ARCH_CPU_PROBE_RELEASE=y +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +CONFIG_ARCH_EMEV2=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_EXYNOS3 is not set +# CONFIG_ARCH_EXYNOS4 is not set +CONFIG_ARCH_EXYNOS5=y +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ARCH_HAS_ADD_PAGES=y +CONFIG_ARCH_HAS_BANDGAP=y +CONFIG_ARCH_HAS_BINFMT_FLAT=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_COPY_MC=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +CONFIG_ARCH_HAS_DEBUG_WX=y +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y +CONFIG_ARCH_HAS_EARLY_DEBUG=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_HAS_HUGEPD=y +CONFIG_ARCH_HAS_KCOV=y +CONFIG_ARCH_HAS_KEEPINITRD=y +CONFIG_ARCH_HAS_KEXEC_PURGATORY=y +CONFIG_ARCH_HAS_MEMBARRIER_CALLBACKS=y +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_ARCH_HAS_MEMREMAP_COMPAT_ALIGN=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_ARCH_HAS_MMIOWB=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_PHYS_TO_DMA=y +CONFIG_ARCH_HAS_PKEYS=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_PTE_DEVMAP=y +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_ARCH_HAS_RELR=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_ARCH_HAS_SCALED_CPUTIME=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HAVE_ELF_PROT=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HI3xxx=y +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HIGHBANK=y +# CONFIG_ARCH_HIP01 is not set +CONFIG_ARCH_HIP04=y +CONFIG_ARCH_HISI=y +CONFIG_ARCH_HIX5HD2=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_TRYLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_TRYLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IPQ40XX is not set +# CONFIG_ARCH_IXP4XX is not set +CONFIG_ARCH_K3=y +CONFIG_ARCH_K3_AM6_SOC=y +CONFIG_ARCH_K3_J721E_SOC=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +# CONFIG_ARCH_KEYSTONE is not set +CONFIG_ARCH_LAYERSCAPE=y +CONFIG_ARCH_LG1K=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MDM9615=y +CONFIG_ARCH_MEDIATEK=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_MESON=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_MILBEAUT=y +CONFIG_ARCH_MILBEAUT_M10V=y +# CONFIG_ARCH_MMP is not set +CONFIG_ARCH_MSM8960=y +CONFIG_ARCH_MSM8974=y +CONFIG_ARCH_MSM8X60=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y +CONFIG_ARCH_NPCM=y +CONFIG_ARCH_NPCM7XX=y +CONFIG_ARCH_NR_GPIO=1024 +CONFIG_ARCH_OMAP=y +# CONFIG_ARCH_OMAP1 is not set +CONFIG_ARCH_OMAP2PLUS=y +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_PXA is not set +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_R7S72100=y +CONFIG_ARCH_R7S9210=y +# CONFIG_ARCH_R8A73A4 is not set +CONFIG_ARCH_R8A7740=y +CONFIG_ARCH_R8A7742=y +CONFIG_ARCH_R8A7743=y +CONFIG_ARCH_R8A7744=y +CONFIG_ARCH_R8A7745=y +CONFIG_ARCH_R8A77470=y +CONFIG_ARCH_R8A774A1=y +CONFIG_ARCH_R8A774B1=y +CONFIG_ARCH_R8A774C0=y +CONFIG_ARCH_R8A7778=y +CONFIG_ARCH_R8A7779=y +CONFIG_ARCH_R8A7790=y +CONFIG_ARCH_R8A7791=y +CONFIG_ARCH_R8A7792=y +CONFIG_ARCH_R8A7793=y +CONFIG_ARCH_R8A7794=y +CONFIG_ARCH_R8A77950=y +CONFIG_ARCH_R8A77951=y +CONFIG_ARCH_R8A77960=y +CONFIG_ARCH_R8A77961=y +CONFIG_ARCH_R8A77965=y +CONFIG_ARCH_R8A77970=y +CONFIG_ARCH_R8A77980=y +CONFIG_ARCH_R8A77990=y +CONFIG_ARCH_R8A77995=y +CONFIG_ARCH_R9A06G032=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_RCAR_GEN1=y +CONFIG_ARCH_RCAR_GEN2=y +CONFIG_ARCH_RCAR_GEN3=y +CONFIG_ARCH_RDA=y +CONFIG_ARCH_REALTEK=y +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_RENESAS=y +CONFIG_ARCH_RMOBILE=y +CONFIG_ARCH_ROCKCHIP=y +# CONFIG_ARCH_RPC is not set +CONFIG_ARCH_RZN1=y +CONFIG_ARCH_S32=y +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +CONFIG_ARCH_SEATTLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SH73A0=y +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_SOCFPGA is not set +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPRD=y +CONFIG_ARCH_STACKWALK=y +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_STM32 is not set +CONFIG_ARCH_STRATIX10=y +CONFIG_ARCH_SUPPORTS_ACPI=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_NONZERO_CPU=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_SYNQUACER=y +# CONFIG_ARCH_TANGO is not set +CONFIG_ARCH_TEGRA_114_SOC=y +CONFIG_ARCH_TEGRA_124_SOC=y +CONFIG_ARCH_TEGRA_2x_SOC=y +CONFIG_ARCH_TEGRA_3x_SOC=y +CONFIG_ARCH_THUNDER=y +CONFIG_ARCH_THUNDER2=y +# CONFIG_ARCH_U8500 is not set +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_USE_GNU_PROPERTY=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y +CONFIG_ARCH_VEXPRESS_DCSCB=y +CONFIG_ARCH_VEXPRESS_SPC=y +CONFIG_ARCH_VEXPRESS_TC2_PM=y +CONFIG_ARCH_VIRT=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y +# CONFIG_ARCH_WM8850 is not set +CONFIG_ARCH_XGENE=y +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQ is not set +CONFIG_ARCH_ZYNQMP=y +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCX_ANYBUS_CONTROLLER=m +CONFIG_ARC_EMAC_CORE=m +CONFIG_ARM=y +CONFIG_ARM64=y +# CONFIG_ARM64_16K_PAGES is not set +CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y +CONFIG_ARM64_AMU_EXTN=y +CONFIG_ARM64_BTI=y +CONFIG_ARM64_BTI_KERNEL=y +CONFIG_ARM64_CNP=y +CONFIG_ARM64_CRYPTO=y +# CONFIG_ARM64_DEBUG_PRIORITY_MASKING is not set +CONFIG_ARM64_E0PD=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_834220=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_858921=y +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_MODULE_PLTS=y +CONFIG_ARM64_PAN=y +CONFIG_ARM64_PA_BITS=48 +CONFIG_ARM64_PA_BITS_48=y +# CONFIG_ARM64_PA_BITS_52 is not set +CONFIG_ARM64_PMEM=y +CONFIG_ARM64_PSEUDO_NMI=y +CONFIG_ARM64_PTR_AUTH=y +CONFIG_ARM64_RAS_EXTN=y +# CONFIG_ARM64_RELOC_TEST is not set +CONFIG_ARM64_SSBD=y +CONFIG_ARM64_SVE=y +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARM64_UAO=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +CONFIG_ARM64_VA_BITS=48 +# CONFIG_ARM64_VA_BITS_39 is not set +# CONFIG_ARM64_VA_BITS_42 is not set +CONFIG_ARM64_VA_BITS_48=y +# CONFIG_ARM64_VA_BITS_52 is not set +CONFIG_ARM64_VHE=y +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARMADA375_USBCLUSTER_PHY=y +CONFIG_ARMADA_370_CLK=y +CONFIG_ARMADA_370_XP_IRQ=y +CONFIG_ARMADA_370_XP_TIMER=y +CONFIG_ARMADA_375_CLK=y +CONFIG_ARMADA_37XX_CLK=y +CONFIG_ARMADA_37XX_RWTM_MBOX=m +CONFIG_ARMADA_37XX_WATCHDOG=m +CONFIG_ARMADA_38X_CLK=y +CONFIG_ARMADA_39X_CLK=y +CONFIG_ARMADA_AP806_SYSCON=y +CONFIG_ARMADA_AP_CPU_CLK=y +CONFIG_ARMADA_AP_CP_HELPER=y +CONFIG_ARMADA_CP110_SYSCON=y +CONFIG_ARMADA_THERMAL=y +CONFIG_ARMADA_XP_CLK=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM=m +CONFIG_ARM_AMBA=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_ARM_ARMADA_37XX_CPUFREQ=m +CONFIG_ARM_ARMADA_8K_CPUFREQ=m +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set +CONFIG_ARM_BIG_LITTLE_CPUIDLE=y +CONFIG_ARM_BRCMSTB_AVS_CPUFREQ=m +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y +CONFIG_ARM_CCI400_PORT_CTRL=y +CONFIG_ARM_CCI5xx_PMU=y +CONFIG_ARM_CCI_PMU=y +CONFIG_ARM_CCN=y +CONFIG_ARM_CHARLCD=y +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_DMA_USE_IOMMU=y +CONFIG_ARM_DSU_PMU=m +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_643719=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754322=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_ERRATA_773022=y +CONFIG_ARM_ERRATA_775420=y +CONFIG_ARM_ERRATA_798181=y +CONFIG_ARM_ERRATA_814220=y +CONFIG_ARM_ERRATA_818325_852422=y +CONFIG_ARM_ERRATA_821420=y +CONFIG_ARM_ERRATA_825619=y +CONFIG_ARM_ERRATA_852421=y +CONFIG_ARM_ERRATA_852423=y +CONFIG_ARM_ERRATA_857271=y +CONFIG_ARM_ERRATA_857272=y +CONFIG_ARM_EXYNOS_BUS_DEVFREQ=y +CONFIG_ARM_EXYNOS_CPUIDLE=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_FSL_MC=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +CONFIG_ARM_GLOBAL_TIMER=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_ARM_HIGHBANK_CPUFREQ=m +CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_ARM_IMX8M_DDRC_DEVFREQ=m +CONFIG_ARM_IMX_BUS_DEVFREQ=m +CONFIG_ARM_IMX_CPUFREQ_DT=m +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=7 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_L1_CACHE_SHIFT_7=y +CONFIG_ARM_MEDIATEK_CPUFREQ=m +CONFIG_ARM_MHU=m +CONFIG_ARM_MODULE_PLTS=y +CONFIG_ARM_MVEBU_V7_CPUIDLE=y +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_IDIV=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_PL172_MPMC=m +CONFIG_ARM_PMU=y +CONFIG_ARM_PMU_ACPI=y +CONFIG_ARM_PSCI=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_FW=y +CONFIG_ARM_PTDUMP_CORE=y +# CONFIG_ARM_PTDUMP_DEBUGFS is not set +CONFIG_ARM_QCOM_CPUFREQ_HW=m +CONFIG_ARM_QCOM_CPUFREQ_NVMEM=m +CONFIG_ARM_QCOM_SPM_CPUIDLE=y +CONFIG_ARM_RASPBERRYPI_CPUFREQ=m +CONFIG_ARM_RK3399_DMC_DEVFREQ=m +CONFIG_ARM_SBSA_WATCHDOG=m +CONFIG_ARM_SCMI_CPUFREQ=m +CONFIG_ARM_SCMI_POWER_DOMAIN=m +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCPI_CPUFREQ=m +CONFIG_ARM_SCPI_POWER_DOMAIN=m +CONFIG_ARM_SCPI_PROTOCOL=m +CONFIG_ARM_SDE_INTERFACE=y +CONFIG_ARM_SMC_WATCHDOG=m +# CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT is not set +# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set +CONFIG_ARM_SMMU_V3=y +CONFIG_ARM_SMMU_V3_PMU=m +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_SPE_PMU=m +CONFIG_ARM_TEGRA124_CPUFREQ=y +CONFIG_ARM_TEGRA186_CPUFREQ=m +CONFIG_ARM_TEGRA20_CPUFREQ=y +CONFIG_ARM_TEGRA20_DEVFREQ=m +# CONFIG_ARM_TEGRA_CPUIDLE is not set +CONFIG_ARM_TEGRA_DEVFREQ=m +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_TI_CPUFREQ=y +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ=m +CONFIG_ARM_VIRT_EXT=y +CONFIG_AS3935=m +CONFIG_ASHMEM=m +CONFIG_ASM_MODVERSIONS=y +CONFIG_ASN1=y +CONFIG_ASPEED_ADC=m +CONFIG_ASPEED_BT_IPMI_BMC=m +CONFIG_ASPEED_KCS_IPMI_BMC=m +CONFIG_ASPEED_LPC_CTRL=m +CONFIG_ASPEED_LPC_SNOOP=m +CONFIG_ASPEED_P2A_CTRL=m +CONFIG_ASPEED_WATCHDOG=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ASUS_WMI=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +# CONFIG_ASYNC_RAID6_TEST is not set +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_ASYNC_XOR=m +CONFIG_AS_AVX512=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +CONFIG_AS_HAS_PAC=y +CONFIG_AS_SHA1_NI=y +CONFIG_AS_SHA256_NI=y +CONFIG_AS_TPAUSE=y +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=m +CONFIG_ATAGS=y +CONFIG_ATAGS_PROC=y +CONFIG_ATA_ACPI=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_FORCE=y +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATH10K=m +CONFIG_ATH10K_AHB=y +CONFIG_ATH10K_CE=y +# CONFIG_ATH10K_DEBUG is not set +CONFIG_ATH10K_DEBUGFS=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_SDIO=m +CONFIG_ATH10K_SNOC=m +CONFIG_ATH10K_SPECTRAL=y +CONFIG_ATH10K_TRACING=y +CONFIG_ATH10K_USB=m +CONFIG_ATH11K=m +# CONFIG_ATH11K_DEBUG is not set +# CONFIG_ATH11K_DEBUGFS is not set +# CONFIG_ATH11K_TRACING is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH5K_PCI=y +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH6KL=m +# CONFIG_ATH6KL_DEBUG is not set +CONFIG_ATH6KL_SDIO=m +# CONFIG_ATH6KL_TRACING is not set +CONFIG_ATH6KL_USB=m +CONFIG_ATH9K=m +CONFIG_ATH9K_AHB=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_COMMON_DEBUG=y +CONFIG_ATH9K_COMMON_SPECTRAL=y +CONFIG_ATH9K_DEBUGFS=y +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_HWRNG=y +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_PCI_NO_EEPROM=m +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_STATION_STATISTICS=y +CONFIG_ATH9K_WOW=y +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATL1=m +CONFIG_ATL1C=m +CONFIG_ATL1E=m +CONFIG_ATL2=m +CONFIG_ATLAS_EZO_SENSOR=m +CONFIG_ATLAS_PH_SENSOR=m +CONFIG_ATMEL=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_ARCH=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y +CONFIG_AUDIT_GENERIC=y +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BR_FUSE is not set +CONFIG_AUFS_BR_HFSPLUS=y +# CONFIG_AUFS_BR_RAMFS is not set +# CONFIG_AUFS_DEBUG is not set +CONFIG_AUFS_DIRREN=y +CONFIG_AUFS_EXPORT=y +# CONFIG_AUFS_FHSM is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_INO_T_64=y +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +CONFIG_AUFS_XATTR=y +CONFIG_AURORA_NB8800=m +CONFIG_AUTO_ZRELADDR=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +CONFIG_AXI_DMAC=m +CONFIG_AXP20X_ADC=m +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_ADC=m +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +CONFIG_B43=m +CONFIG_B43LEGACY=m +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +CONFIG_B43LEGACY_HWRNG=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PIO=y +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_B43_BCMA=y +CONFIG_B43_BCMA_PIO=y +# CONFIG_B43_BUSES_BCMA is not set +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_SSB is not set +# CONFIG_B43_DEBUG is not set +CONFIG_B43_HWRNG=y +CONFIG_B43_LEDS=y +CONFIG_B43_PCICORE_AUTOSELECT=y +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PIO=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_SSB=y +CONFIG_B44=m +CONFIG_B44_PCI=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B53=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SERDES=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_ARCXCNN=m +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LED=m +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_LP8788=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_PCF50633=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_QCOM_WLED=m +CONFIG_BACKLIGHT_RAVE_SP=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_SKY81452=m +CONFIG_BACKLIGHT_TPS65217=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BALLOON_COMPACTION=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_DEBUG is not set +# CONFIG_BATMAN_ADV_DEBUGFS is not set +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATMAN_ADV_SYSFS=y +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_BATTERY_88PM860X=m +CONFIG_BATTERY_ACT8945A=m +CONFIG_BATTERY_AXP20X=m +CONFIG_BATTERY_BQ27XXX=m +# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set +CONFIG_BATTERY_BQ27XXX_HDQ=m +CONFIG_BATTERY_BQ27XXX_I2C=m +CONFIG_BATTERY_CPCAP=m +CONFIG_BATTERY_CW2015=m +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_BATTERY_DA9150=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_LEGO_EV3=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_MAX1721X=m +CONFIG_BATTERY_RT5033=m +CONFIG_BATTERY_RX51=m +CONFIG_BATTERY_SBS=m +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCACHE=m +CONFIG_BCACHE_ASYNC_REGISTRAION=y +# CONFIG_BCACHE_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_DEBUG is not set +CONFIG_BCM2711_THERMAL=m +CONFIG_BCM2835_MBOX=y +CONFIG_BCM2835_POWER=y +CONFIG_BCM2835_THERMAL=m +CONFIG_BCM2835_VCHIQ=m +CONFIG_BCM2835_WDT=m +CONFIG_BCM54140_PHY=m +CONFIG_BCM7038_L1_IRQ=y +CONFIG_BCM7038_WDT=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_BCMA_DRIVER_PCI=y +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA_SFLASH=y +CONFIG_BCMGENET=m +CONFIG_BCM_FLEXRM_MBOX=m +CONFIG_BCM_IPROC_ADC=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_BCM_NS_THERMAL=m +CONFIG_BCM_PDC_MBOX=m +CONFIG_BCM_SBA_RAID=m +CONFIG_BCM_SR_THERMAL=m +CONFIG_BCM_VIDEOCORE=m +CONFIG_BD70528_WATCHDOG=m +CONFIG_BE2NET=m +CONFIG_BE2NET_BE2=y +CONFIG_BE2NET_BE3=y +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_LANCER=y +CONFIG_BE2NET_SKYHAWK=y +# CONFIG_BEFS_DEBUG is not set +CONFIG_BERLIN2_ADC=m +# CONFIG_BFQ_CGROUP_DEBUG is not set +CONFIG_BFQ_GROUP_IOSCHED=y +CONFIG_BGMAC=y +CONFIG_BGMAC_PLATFORM=y +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_BIG_LITTLE=y +CONFIG_BINARY_PRINTF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_ELF_FDPIC=y +CONFIG_BINFMT_FLAT=y +CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y +CONFIG_BINFMT_FLAT_OLD=y +CONFIG_BINFMT_MISC=m +CONFIG_BINFMT_SCRIPT=y +CONFIG_BINFMT_SHARED_FLAT=y +CONFIG_BINFMT_ZFLAT=y +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CGROUP_IOCOST=y +# CONFIG_BLK_CGROUP_IOLATENCY is not set +CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CMDLINE_PARSER=y +CONFIG_BLK_DEBUG_FS=y +CONFIG_BLK_DEBUG_FS_ZONED=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_INTEGRITY_T10=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_MD=y +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NULL_BLK=m +CONFIG_BLK_DEV_NVME=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_RNBD=y +CONFIG_BLK_DEV_RNBD_CLIENT=m +CONFIG_BLK_DEV_RNBD_SERVER=m +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_BLK_DEV_THROTTLING_LOW is not set +# CONFIG_BLK_DEV_XPRAM is not set +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y +CONFIG_BLK_MQ_PCI=y +CONFIG_BLK_MQ_RDMA=y +CONFIG_BLK_MQ_VIRTIO=y +CONFIG_BLK_PM=y +CONFIG_BLK_RQ_ALLOC_TIME=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_SED_OPAL=y +CONFIG_BLK_WBT=y +CONFIG_BLK_WBT_MQ=y +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BL_SWITCHER=y +CONFIG_BL_SWITCHER_DUMMY_IF=m +CONFIG_BMA220=m +CONFIG_BMA400=m +CONFIG_BMA400_I2C=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +CONFIG_BMC150_MAGN=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_BME680=m +CONFIG_BME680_I2C=m +CONFIG_BME680_SPI=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +CONFIG_BMI160=m +CONFIG_BMI160_I2C=m +CONFIG_BMI160_SPI=m +CONFIG_BMP280=m +CONFIG_BMP280_I2C=m +CONFIG_BMP280_SPI=m +CONFIG_BNA=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_BNXT=m +CONFIG_BNXT_DCB=y +CONFIG_BNXT_FLOWER_OFFLOAD=y +CONFIG_BNXT_HWMON=y +CONFIG_BNXT_SRIOV=y +CONFIG_BOARD_TPCI200=m +CONFIG_BONDING=m +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_BOOTTIME_TRACING=y +# CONFIG_BOOTX_TEXT is not set +CONFIG_BOOT_CONFIG=y +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_BPF=y +CONFIG_BPFILTER=y +CONFIG_BPFILTER_UMH=m +CONFIG_BPF_EVENTS=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y +CONFIG_BPF_KPROBE_OVERRIDE=y +CONFIG_BPF_LSM=y +CONFIG_BPF_STREAM_PARSER=y +CONFIG_BPF_SYSCALL=y +CONFIG_BPQETHER=m +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMDBG is not set +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PCIE=y +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_BRCMSTB_L2_IRQ=y +CONFIG_BRCMSTB_PM=y +CONFIG_BRCMSTB_THERMAL=m +CONFIG_BRCMUTIL=m +CONFIG_BRCM_TRACING=y +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_MRP=y +CONFIG_BRIDGE_NETFILTER=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BROADCOM_PHY=m +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BTREE=y +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_DEBUG is not set +CONFIG_BTRFS_FS=m +# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_REF_VERIFY is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +CONFIG_BTT=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_ATH3K=m +CONFIG_BT_BCM=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_BREDR=y +CONFIG_BT_CMTP=m +CONFIG_BT_DEBUGFS=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIRSI=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIUART_NOKIA=m +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +# CONFIG_BT_HS is not set +CONFIG_BT_INTEL=m +CONFIG_BT_LE=y +CONFIG_BT_LEDS=y +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_MSFTEXT=y +CONFIG_BT_MTKSDIO=m +CONFIG_BT_MTKUART=m +CONFIG_BT_QCA=m +CONFIG_BT_QCOMSMD=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_RTL=m +# CONFIG_BT_SELFTEST is not set +CONFIG_BUG=y +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_BUILD_BIN2C=y +CONFIG_BUILD_SALT="" +CONFIG_BXT_WC_PMIC_OPREGION=y +CONFIG_BYTCRC_PMIC_OPREGION=y +CONFIG_C2PORT_DURAMAR_2150=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +CONFIG_CACHE_FEROCEON_L2=y +# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set +CONFIG_CACHE_L2X0=y +CONFIG_CACHE_L2X0_PMU=y +CONFIG_CACHE_TAUROS2=y +CONFIG_CACHE_UNIPHIER=y +# CONFIG_CAIF_DEBUG is not set +CONFIG_CAIF_DRIVERS=y +CONFIG_CAIF_HSI=m +CONFIG_CAIF_NETDEV=m +CONFIG_CAIF_SPI_SLAVE=m +# CONFIG_CAIF_SPI_SYNC is not set +CONFIG_CAIF_TTY=m +CONFIG_CAIF_USB=m +CONFIG_CAIF_VIRTIO=m +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_BCM=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_C_CAN_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_F81601=m +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_GRCAN=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_GW=m +CONFIG_CAN_HI311X=m +CONFIG_CAN_IFI_CANFD=m +CONFIG_CAN_J1939=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_KVASER_PCIEFD=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_MCBA_USB=m +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MSCAN=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_M_CAN_PLATFORM=m +CONFIG_CAN_M_CAN_TCAN4X5X=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_RAW=m +CONFIG_CAN_RCAR=m +CONFIG_CAN_RCAR_CANFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m +CONFIG_CAN_TI_HECC=m +CONFIG_CAN_UCAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_XILINXCAN=m +CONFIG_CAPI_TRACE=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CARL9170=m +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_HWRNG=y +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_CASSINI=m +CONFIG_CAVIUM_CPT=m +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23144=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_PTP=m +CONFIG_CAVIUM_TX2_ERRATUM_219=y +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_CC10001_ADC=m +CONFIG_CCS811=m +CONFIG_CCW=y +CONFIG_CCWGROUP=m +CONFIG_CCW_CONSOLE=y +CONFIG_CC_CAN_LINK=y +CONFIG_CC_CAN_LINK_STATIC=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_CC_HAS_STACKPROTECTOR_NONE=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CC_IS_GCC=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDNS_I3C_MASTER=m +CONFIG_CDROM=y +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CEC_CORE=m +CONFIG_CEC_CROS_EC=m +CONFIG_CEC_GPIO=m +CONFIG_CEC_MESON_AO=m +CONFIG_CEC_MESON_G12A_AO=m +CONFIG_CEC_NOTIFIER=y +CONFIG_CEC_PIN=y +# CONFIG_CEC_PIN_ERROR_INJ is not set +CONFIG_CEC_SAMSUNG_S5P=m +CONFIG_CEC_SECO=m +CONFIG_CEC_SECO_RC=y +CONFIG_CEC_TEGRA=m +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_FS_SECURITY_LABEL=y +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_CFG80211=m +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_ADP5061=m +CONFIG_CHARGER_AXP20X=m +CONFIG_CHARGER_BD70528=m +CONFIG_CHARGER_BD99954=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_CPCAP=m +CONFIG_CHARGER_CROS_USBPD=m +CONFIG_CHARGER_DA9150=m +CONFIG_CHARGER_DETECTOR_MAX14656=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_LT3651=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77650=m +CONFIG_CHARGER_MAX77693=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_MP2629=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_QCOM_SMBB=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_SBS=m +CONFIG_CHARGER_SC2731=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +CONFIG_CHARGER_TPS65217=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHARGER_UCS1002=m +CONFIG_CHARGER_WILCO=m +CONFIG_CHARLCD=m +CONFIG_CHARLCD_BL_FLASH=y +# CONFIG_CHARLCD_BL_OFF is not set +# CONFIG_CHARLCD_BL_ON is not set +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CHELSIO_IPSEC_INLINE=y +CONFIG_CHELSIO_LIB=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHELSIO_TLS_DEVICE=y +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROMEOS_TBMC=m +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHSC_SCH=m +CONFIG_CHTCRC_PMIC_OPREGION=y +CONFIG_CHT_DC_TI_PMIC_OPREGION=y +CONFIG_CHT_WC_PMIC_OPREGION=y +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_SMB_DIRECT is not set +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CIO_DAC=m +CONFIG_CLANG_VERSION=0 +CONFIG_CLEANCACHE=y +CONFIG_CLKBLD_I8253=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y +CONFIG_CLKSRC_EXYNOS_MCT=y +CONFIG_CLKSRC_IMX_GPT=y +CONFIG_CLKSRC_IMX_TPM=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_QCOM=y +CONFIG_CLKSRC_TI_32K=y +CONFIG_CLKSRC_VERSATILE=y +CONFIG_CLK_ACTIONS=y +CONFIG_CLK_BCM2835=y +CONFIG_CLK_BCM_NS2=y +CONFIG_CLK_BCM_SR=y +CONFIG_CLK_EMEV2=y +# CONFIG_CLK_HSDK is not set +CONFIG_CLK_IMX8MM=y +CONFIG_CLK_IMX8MN=y +CONFIG_CLK_IMX8MP=y +CONFIG_CLK_IMX8MQ=y +CONFIG_CLK_IMX8QXP=y +CONFIG_CLK_LS1028A_PLLDIG=m +CONFIG_CLK_OWL_S500=y +CONFIG_CLK_OWL_S700=y +CONFIG_CLK_OWL_S900=y +CONFIG_CLK_QORIQ=y +CONFIG_CLK_R7S9210=y +CONFIG_CLK_R8A7740=y +CONFIG_CLK_R8A7742=y +CONFIG_CLK_R8A7743=y +CONFIG_CLK_R8A7745=y +CONFIG_CLK_R8A77470=y +CONFIG_CLK_R8A774A1=y +CONFIG_CLK_R8A774B1=y +CONFIG_CLK_R8A774C0=y +CONFIG_CLK_R8A7778=y +CONFIG_CLK_R8A7779=y +CONFIG_CLK_R8A7790=y +CONFIG_CLK_R8A7791=y +CONFIG_CLK_R8A7792=y +CONFIG_CLK_R8A7794=y +CONFIG_CLK_R8A7795=y +CONFIG_CLK_R8A77960=y +CONFIG_CLK_R8A77961=y +CONFIG_CLK_R8A77965=y +CONFIG_CLK_R8A77970=y +CONFIG_CLK_R8A77980=y +CONFIG_CLK_R8A77990=y +CONFIG_CLK_R8A77995=y +CONFIG_CLK_R9A06G032=y +CONFIG_CLK_RASPBERRYPI=m +CONFIG_CLK_RCAR_GEN2_CPG=y +CONFIG_CLK_RCAR_GEN3_CPG=y +CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y +CONFIG_CLK_RENESAS=y +CONFIG_CLK_RENESAS_CPG_MSSR=y +CONFIG_CLK_RENESAS_CPG_MSTP=y +CONFIG_CLK_RENESAS_DIV6=y +CONFIG_CLK_RZA1=y +CONFIG_CLK_SH73A0=y +CONFIG_CLK_SP810=y +CONFIG_CLK_SUNXI=y +CONFIG_CLK_SUNXI_CLOCKS=y +CONFIG_CLK_SUNXI_PRCM_SUN6I=y +CONFIG_CLK_SUNXI_PRCM_SUN8I=y +CONFIG_CLK_SUNXI_PRCM_SUN9I=y +CONFIG_CLK_TEGRA_BPMP=y +CONFIG_CLK_TWL6040=m +CONFIG_CLK_UNIPHIER=y +CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CLONE_BACKWARDS2=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +CONFIG_CM3605=m +CONFIG_CM36651=m +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_SIZE_MBYTES=32 +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_CMDLINE_FORCE is not set +CONFIG_CMM_IUCV=y +CONFIG_CMT_SPEECH=m +CONFIG_CNIC=m +CONFIG_CODA_FS=m +# CONFIG_CODE_PATCHING_SELFTEST is not set +CONFIG_COMEDI=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADDI_WATCHDOG=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1720=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI1760=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAC02=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DAS800=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_ISADMA=m +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_MULTIQ3=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_NI_LABPC_ISADMA=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_NI_ROUTING=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_TIOCMD=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMMON_CLK_ASPEED=y +CONFIG_COMMON_CLK_AXG=y +CONFIG_COMMON_CLK_AXG_AUDIO=m +CONFIG_COMMON_CLK_BD718XX=m +CONFIG_COMMON_CLK_BM1880=y +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_COMMON_CLK_CDCE925=m +CONFIG_COMMON_CLK_CS2000_CP=m +CONFIG_COMMON_CLK_FIXED_MMIO=y +CONFIG_COMMON_CLK_FSL_SAI=y +CONFIG_COMMON_CLK_G12A=y +CONFIG_COMMON_CLK_GXBB=y +CONFIG_COMMON_CLK_HI3516CV300=m +CONFIG_COMMON_CLK_HI3519=m +CONFIG_COMMON_CLK_HI3660=y +CONFIG_COMMON_CLK_HI3670=y +CONFIG_COMMON_CLK_HI3798CV200=m +CONFIG_COMMON_CLK_HI6220=y +CONFIG_COMMON_CLK_HI655X=m +CONFIG_COMMON_CLK_IPROC=y +CONFIG_COMMON_CLK_LOCHNAGAR=m +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_MAX9485=m +CONFIG_COMMON_CLK_MEDIATEK=y +CONFIG_COMMON_CLK_MESON8B=y +CONFIG_COMMON_CLK_MESON_AO_CLKC=y +CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y +CONFIG_COMMON_CLK_MESON_DUALDIV=y +CONFIG_COMMON_CLK_MESON_EE_CLKC=y +CONFIG_COMMON_CLK_MESON_MPLL=y +CONFIG_COMMON_CLK_MESON_PHASE=m +CONFIG_COMMON_CLK_MESON_PLL=y +CONFIG_COMMON_CLK_MESON_REGMAP=y +CONFIG_COMMON_CLK_MESON_SCLK_DIV=m +CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=y +# CONFIG_COMMON_CLK_MT2701 is not set +CONFIG_COMMON_CLK_MT2712=y +CONFIG_COMMON_CLK_MT2712_BDPSYS=y +CONFIG_COMMON_CLK_MT2712_IMGSYS=y +CONFIG_COMMON_CLK_MT2712_JPGDECSYS=y +CONFIG_COMMON_CLK_MT2712_MFGCFG=y +CONFIG_COMMON_CLK_MT2712_MMSYS=y +CONFIG_COMMON_CLK_MT2712_VDECSYS=y +CONFIG_COMMON_CLK_MT2712_VENCSYS=y +CONFIG_COMMON_CLK_MT6765=y +CONFIG_COMMON_CLK_MT6765_AUDIOSYS=y +CONFIG_COMMON_CLK_MT6765_CAMSYS=y +CONFIG_COMMON_CLK_MT6765_GCESYS=y +CONFIG_COMMON_CLK_MT6765_IMGSYS=y +CONFIG_COMMON_CLK_MT6765_MFGSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI0ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI0BSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI1ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI1BSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI2ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI2BSYS=y +CONFIG_COMMON_CLK_MT6765_MMSYS=y +CONFIG_COMMON_CLK_MT6765_VCODECSYS=y +CONFIG_COMMON_CLK_MT6779=y +CONFIG_COMMON_CLK_MT6779_AUDSYS=y +CONFIG_COMMON_CLK_MT6779_CAMSYS=y +CONFIG_COMMON_CLK_MT6779_IMGSYS=y +CONFIG_COMMON_CLK_MT6779_IPESYS=y +CONFIG_COMMON_CLK_MT6779_MFGCFG=y +CONFIG_COMMON_CLK_MT6779_MMSYS=y +CONFIG_COMMON_CLK_MT6779_VDECSYS=y +CONFIG_COMMON_CLK_MT6779_VENCSYS=y +CONFIG_COMMON_CLK_MT6797=y +CONFIG_COMMON_CLK_MT6797_IMGSYS=y +CONFIG_COMMON_CLK_MT6797_MMSYS=y +CONFIG_COMMON_CLK_MT6797_VDECSYS=y +CONFIG_COMMON_CLK_MT6797_VENCSYS=y +CONFIG_COMMON_CLK_MT7622=y +CONFIG_COMMON_CLK_MT7622_AUDSYS=y +CONFIG_COMMON_CLK_MT7622_ETHSYS=y +CONFIG_COMMON_CLK_MT7622_HIFSYS=y +CONFIG_COMMON_CLK_MT7629=y +CONFIG_COMMON_CLK_MT7629_ETHSYS=y +CONFIG_COMMON_CLK_MT7629_HIFSYS=y +CONFIG_COMMON_CLK_MT8135=y +CONFIG_COMMON_CLK_MT8173=y +CONFIG_COMMON_CLK_MT8173_MMSYS=y +CONFIG_COMMON_CLK_MT8183=y +CONFIG_COMMON_CLK_MT8183_AUDIOSYS=y +CONFIG_COMMON_CLK_MT8183_CAMSYS=y +CONFIG_COMMON_CLK_MT8183_IMGSYS=y +CONFIG_COMMON_CLK_MT8183_IPU_ADL=y +CONFIG_COMMON_CLK_MT8183_IPU_CONN=y +CONFIG_COMMON_CLK_MT8183_IPU_CORE0=y +CONFIG_COMMON_CLK_MT8183_IPU_CORE1=y +CONFIG_COMMON_CLK_MT8183_MFGCFG=y +CONFIG_COMMON_CLK_MT8183_MMSYS=y +CONFIG_COMMON_CLK_MT8183_VDECSYS=y +CONFIG_COMMON_CLK_MT8183_VENCSYS=y +CONFIG_COMMON_CLK_MT8516=y +CONFIG_COMMON_CLK_MT8516_AUDSYS=y +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_COMMON_CLK_QCOM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_COMMON_CLK_SAMSUNG=y +CONFIG_COMMON_CLK_SCMI=m +CONFIG_COMMON_CLK_SCPI=m +CONFIG_COMMON_CLK_SI514=m +CONFIG_COMMON_CLK_SI5341=m +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_SI544=m +CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_TI_ADPLL=y +CONFIG_COMMON_CLK_VC5=m +CONFIG_COMMON_CLK_WM831X=m +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +CONFIG_COMMON_CLK_ZYNQMP=y +CONFIG_COMMON_RESET_HI3660=m +CONFIG_COMMON_RESET_HI6220=m +CONFIG_COMPACTION=y +CONFIG_COMPAL_LAPTOP=m +CONFIG_COMPAT=y +CONFIG_COMPAT_32=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_COMPAT_BINFMT_ELF=y +# CONFIG_COMPAT_BRK is not set +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_COMPAT_OLD_SIGACTION=y +# CONFIG_COMPAT_VDSO is not set +# CONFIG_COMPILE_TEST is not set +CONFIG_CONFIGFS_FS=y +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_CONTIG_ALLOC=y +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +# CONFIG_CORESIGHT is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_CORTINA_PHY=m +CONFIG_CP15_BARRIER_EMULATION=y +# CONFIG_CPA_DEBUG is not set +CONFIG_CPCAP_ADC=m +CONFIG_CPU5_WDT=m +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y +CONFIG_CPUMASK_OFFSTACK=y +CONFIG_CPUSETS=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_CPU_HAS_ASID=y +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_ICACHE_MISMATCH_WORKAROUND=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_HALTPOLL=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_GOV_TEO=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_IDLE_THERMAL=y +CONFIG_CPU_ISOLATION=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PJ4=y +CONFIG_CPU_PJ4B=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_SPECTRE=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_THUMB_CAPABLE=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRAMFS_BLOCKDEV=y +CONFIG_CRAMFS_MTD=y +CONFIG_CRASH_CORE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRC16=y +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC4=m +CONFIG_CRC64=m +CONFIG_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=y +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CROS_EC=m +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_DEBUGFS=m +CONFIG_CROS_EC_I2C=m +CONFIG_CROS_EC_ISHTP=m +CONFIG_CROS_EC_LIGHTBAR=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CROS_EC_RPMSG=m +CONFIG_CROS_EC_SENSORHUB=m +CONFIG_CROS_EC_SPI=m +CONFIG_CROS_EC_SYSFS=m +CONFIG_CROS_EC_TYPEC=m +CONFIG_CROS_EC_VBC=m +CONFIG_CROS_KBD_LED_BACKLIGHT=m +CONFIG_CROS_USBPD_LOGGER=m +CONFIG_CROS_USBPD_NOTIFY=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_AEGIS128_SIMD=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRYPTO_AES_ARM64=m +CONFIG_CRYPTO_AES_ARM64_BS=m +CONFIG_CRYPTO_AES_ARM64_CE=m +CONFIG_CRYPTO_AES_ARM64_CE_BLK=m +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRYPTO_AES_ARM_CE=m +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_AES_S390=m +CONFIG_CRYPTO_AES_TI=m +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_ANSI_CPRNG=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m +CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_BLAKE2B=m +CONFIG_CRYPTO_BLAKE2S=m +CONFIG_CRYPTO_BLAKE2S_X86=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CFB=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CHACHA20_NEON=m +CONFIG_CRYPTO_CHACHA20_X86_64=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +CONFIG_CRYPTO_CRC32C_VPMSUM=m +CONFIG_CRYPTO_CRC32_ARM_CE=m +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_CRC32_S390=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m +CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_CRCT10DIF_VPMSUM=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_CURVE25519=m +CONFIG_CRYPTO_CURVE25519_NEON=m +CONFIG_CRYPTO_CURVE25519_X86=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_DES_S390=m +CONFIG_CRYPTO_DEV_ALLWINNER=y +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set +CONFIG_CRYPTO_DEV_ARTPEC6=m +CONFIG_CRYPTO_DEV_ATMEL_I2C=m +CONFIG_CRYPTO_DEV_BCM_SPU=m +CONFIG_CRYPTO_DEV_CAVIUM_ZIP=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_CCP_DD=m +# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +CONFIG_CRYPTO_DEV_CCREE=m +CONFIG_CRYPTO_DEV_CHELSIO=m +CONFIG_CRYPTO_DEV_CPT=m +CONFIG_CRYPTO_DEV_EXYNOS_RNG=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=m +CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y +# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 +CONFIG_CRYPTO_DEV_FSL_CAAM_JR=m +CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y +CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_HISI_HPRE=m +CONFIG_CRYPTO_DEV_HISI_QM=m +CONFIG_CRYPTO_DEV_HISI_SEC=m +CONFIG_CRYPTO_DEV_HISI_SEC2=m +CONFIG_CRYPTO_DEV_HISI_ZIP=m +CONFIG_CRYPTO_DEV_MARVELL=m +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +CONFIG_CRYPTO_DEV_MEDIATEK=m +# CONFIG_CRYPTO_DEV_MXS_DCP is not set +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NX=y +CONFIG_CRYPTO_DEV_NX_COMPRESS=m +CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV=m +CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES=m +CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m +CONFIG_CRYPTO_DEV_OMAP=m +CONFIG_CRYPTO_DEV_OMAP_AES=m +CONFIG_CRYPTO_DEV_OMAP_DES=m +CONFIG_CRYPTO_DEV_OMAP_SHAM=m +CONFIG_CRYPTO_DEV_PADLOCK=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_QCE_ENABLE_ALL=y +# CONFIG_CRYPTO_DEV_QCE_ENABLE_SHA is not set +# CONFIG_CRYPTO_DEV_QCE_ENABLE_SKCIPHER is not set +CONFIG_CRYPTO_DEV_QCE_SHA=y +CONFIG_CRYPTO_DEV_QCE_SKCIPHER=y +CONFIG_CRYPTO_DEV_QCE_SW_MAX_LEN=512 +CONFIG_CRYPTO_DEV_QCOM_RNG=m +CONFIG_CRYPTO_DEV_ROCKCHIP=m +CONFIG_CRYPTO_DEV_S5P=m +CONFIG_CRYPTO_DEV_SAHARA=m +CONFIG_CRYPTO_DEV_SP_CCP=y +CONFIG_CRYPTO_DEV_SP_PSP=y +CONFIG_CRYPTO_DEV_SUN4I_SS=m +CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y +CONFIG_CRYPTO_DEV_SUN8I_CE=m +# CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set +CONFIG_CRYPTO_DEV_SUN8I_SS=m +# CONFIG_CRYPTO_DEV_SUN8I_SS_DEBUG is not set +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_CRYPTO_DEV_VMX=y +CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m +CONFIG_CRYPTO_DEV_ZYNQMP_AES=m +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ECC=m +CONFIG_CRYPTO_ECDH=m +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_ECRDSA=m +CONFIG_CRYPTO_ENGINE=m +CONFIG_CRYPTO_ESSIV=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +CONFIG_CRYPTO_GHASH_S390=m +CONFIG_CRYPTO_GLUE_HELPER_X86=m +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_KEYWRAP=m +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_BLAKE2S=m +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=m +CONFIG_CRYPTO_LIB_CHACHA=m +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m +CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_POLY1305=m +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MD5_PPC=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NHPOLY1305=m +CONFIG_CRYPTO_NHPOLY1305_AVX2=m +CONFIG_CRYPTO_NHPOLY1305_NEON=m +CONFIG_CRYPTO_NHPOLY1305_SSE2=m +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_OFB=m +CONFIG_CRYPTO_PAES_S390=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_POLY1305_ARM=m +CONFIG_CRYPTO_POLY1305_NEON=m +CONFIG_CRYPTO_POLY1305_X86_64=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_SHA1_ARM_CE=m +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_SHA1_PPC=m +CONFIG_CRYPTO_SHA1_S390=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM=m +CONFIG_CRYPTO_SHA256_ARM64=m +CONFIG_CRYPTO_SHA256_S390=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_SHA3_256_S390=m +CONFIG_CRYPTO_SHA3_512_S390=m +CONFIG_CRYPTO_SHA3_ARM64=m +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM=m +CONFIG_CRYPTO_SHA512_ARM64=m +CONFIG_CRYPTO_SHA512_ARM64_CE=m +CONFIG_CRYPTO_SHA512_S390=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SIMD=m +CONFIG_CRYPTO_SKCIPHER=y +CONFIG_CRYPTO_SKCIPHER2=y +CONFIG_CRYPTO_SM3=m +CONFIG_CRYPTO_SM3_ARM64_CE=m +CONFIG_CRYPTO_SM4=m +CONFIG_CRYPTO_SM4_ARM64_CE=m +CONFIG_CRYPTO_STATS=y +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_AEAD=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_VMAC=m +CONFIG_CRYPTO_VPMSUM_TESTER=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_XXHASH=m +CONFIG_CRYPTO_ZSTD=m +CONFIG_CS89x0=m +CONFIG_CS89x0_PLATFORM=y +CONFIG_CTCM=m +CONFIG_CUSE=m +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_CXD2880_SPI_DRV=m +CONFIG_CXL=m +CONFIG_CXLFLASH=m +CONFIG_CXL_BASE=y +CONFIG_CX_ECAT=m +CONFIG_CYCLADES=m +CONFIG_CYPRESS_FIRMWARE=m +# CONFIG_CYZ_INTR is not set +CONFIG_DA280=m +CONFIG_DA311=m +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9062_THERMAL=m +CONFIG_DA9062_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9150_GPADC=m +CONFIG_DASD=m +CONFIG_DASD_DIAG=m +CONFIG_DASD_ECKD=m +CONFIG_DASD_EER=y +CONFIG_DASD_FBA=m +CONFIG_DASD_PROFILE=y +CONFIG_DATA_SHIFT=16 +CONFIG_DAVICOM_PHY=m +CONFIG_DAX=y +CONFIG_DAX_DRIVER=y +CONFIG_DCA=m +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DCB=y +CONFIG_DCDBAS=m +CONFIG_DCSSBLK=m +CONFIG_DDR=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_DE4X5=m +CONFIG_DEBUGGER=y +CONFIG_DEBUG_ALIGN_RODATA=y +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_EFI is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_HOTPLUG_CPU0 is not set +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_BTF=y +# CONFIG_DEBUG_INFO_COMPRESSED is not set +CONFIG_DEBUG_INFO_DWARF4=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KERNEL_DC is not set +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_LL is not set +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEBUG_MISC=y +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_RSEQ is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_DEBUG_USER is not set +CONFIG_DEBUG_VF_UART_PORT=1 +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +CONFIG_DEBUG_WX=y +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_DEFAULT_INIT="" +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_DEFXX=m +# CONFIG_DEFXX_MMIO is not set +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBTN=m +CONFIG_DELL_RBU=m +CONFIG_DELL_SMBIOS=m +CONFIG_DELL_SMBIOS_SMM=y +CONFIG_DELL_SMBIOS_WMI=y +CONFIG_DELL_SMO8800=m +CONFIG_DELL_UART_BACKLIGHT=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_DESCRIPTOR=m +CONFIG_DELL_WMI_LED=m +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEVFREQ_EVENT_EXYNOS_NOCP=y +CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU=y +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=m +CONFIG_DEVFREQ_GOV_PASSIVE=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_DEVICE_PRIVATE=y +# CONFIG_DEVKMEM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DEV_COREDUMP=y +CONFIG_DEV_DAX=m +CONFIG_DEV_DAX_HMEM=m +CONFIG_DEV_DAX_KMEM=m +CONFIG_DEV_DAX_PMEM=m +CONFIG_DEV_DAX_PMEM_COMPAT=m +CONFIG_DEV_PAGEMAP_OPS=y +CONFIG_DHT11=m +CONFIG_DIAG288_WATCHDOG=m +CONFIG_DIMLIB=y +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLHL60D=m +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DLN2_ADC=m +CONFIG_DM9000=m +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +CONFIG_DM9102=m +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_CMA=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +# CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_SELFTESTS is not set +# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMARD06=m +CONFIG_DMARD09=m +CONFIG_DMARD10=m +CONFIG_DMAR_TABLE=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ACPI=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_BCM2835=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_ENGINE_RAID=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_OF=y +CONFIG_DMA_OMAP=y +CONFIG_DMA_REMAP=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_SUN6I=m +CONFIG_DMA_VIRT_OPS=y +CONFIG_DMI=y +CONFIG_DMIID=y +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_DMI_SYSFS=m +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_BUFIO=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_CLONE=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_DELAY=m +# CONFIG_DM_DUST is not set +CONFIG_DM_EBS=m +CONFIG_DM_ERA=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_INIT=y +CONFIG_DM_INTEGRITY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_HST=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_RAID=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_SWITCH=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_UEVENT=y +CONFIG_DM_UNSTRIPED=m +CONFIG_DM_VERITY=m +# CONFIG_DM_VERITY_FEC is not set +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_WRITECACHE=m +CONFIG_DM_ZERO=m +CONFIG_DM_ZONED=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DOVE_CLK=y +CONFIG_DOVE_THERMAL=m +CONFIG_DP83640_PHY=m +CONFIG_DP83822_PHY=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +CONFIG_DP83869_PHY=m +CONFIG_DP83TC811_PHY=m +CONFIG_DPAA2_CONSOLE=m +CONFIG_DPAA_ERRATUM_A050385=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_DPOT_DAC=m +CONFIG_DPS310=m +CONFIG_DPTF_POWER=m +CONFIG_DQL=y +CONFIG_DRA752_THERMAL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +CONFIG_DRM_AMDGPU_CIK=y +# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_USERPTR=y +CONFIG_DRM_AMD_ACP=y +CONFIG_DRM_AMD_DC=y +CONFIG_DRM_AMD_DC_DCN=y +CONFIG_DRM_AMD_DC_HDCP=y +CONFIG_DRM_ANALOGIX_ANX6345=m +CONFIG_DRM_ANALOGIX_DP=m +CONFIG_DRM_ARCPGU=m +CONFIG_DRM_ARMADA=m +CONFIG_DRM_ASPEED_GFX=m +CONFIG_DRM_ATMEL_HLCDC=m +CONFIG_DRM_BOCHS=m +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_CDNS_DSI=m +CONFIG_DRM_CHRONTEL_CH7033=m +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_DW_HDMI=m +CONFIG_DRM_DW_HDMI_AHB_AUDIO=m +CONFIG_DRM_DW_HDMI_CEC=m +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +CONFIG_DRM_DW_MIPI_DSI=m +CONFIG_DRM_ETNAVIV_THERMAL=y +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS5433_DECON=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_EXYNOS_DSI=y +CONFIG_DRM_EXYNOS_FIMC=y +# CONFIG_DRM_EXYNOS_FIMD is not set +CONFIG_DRM_EXYNOS_HDMI=y +CONFIG_DRM_EXYNOS_IPP=y +CONFIG_DRM_EXYNOS_MIC=y +CONFIG_DRM_EXYNOS_MIXER=y +CONFIG_DRM_EXYNOS_ROTATOR=y +CONFIG_DRM_EXYNOS_SCALER=y +# CONFIG_DRM_EXYNOS_VIDI is not set +CONFIG_DRM_FBDEV_EMULATION=y +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_FSL_DCU=m +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_GM12U320=m +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_HDLCD=m +# CONFIG_DRM_HDLCD_SHOW_UNDERRUN is not set +CONFIG_DRM_HISI_HIBMC=m +CONFIG_DRM_HISI_KIRIN=m +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_ADV7511_AUDIO=y +CONFIG_DRM_I2C_ADV7511_CEC=y +CONFIG_DRM_I915=m +CONFIG_DRM_I915_CAPTURE_ERROR=y +CONFIG_DRM_I915_COMPRESS_ERROR=y +# CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_DEBUG_GUC is not set +# CONFIG_DRM_I915_DEBUG_MMIO is not set +# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set +CONFIG_DRM_I915_FENCE_TIMEOUT=10000 +CONFIG_DRM_I915_FORCE_PROBE="" +CONFIG_DRM_I915_GVT=y +CONFIG_DRM_I915_GVT_KVMGT=m +CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500 +# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 +CONFIG_DRM_I915_PREEMPT_TIMEOUT=640 +# CONFIG_DRM_I915_SELFTEST is not set +CONFIG_DRM_I915_STOP_TIMEOUT=100 +# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set +CONFIG_DRM_I915_TIMESLICE_DURATION=1 +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 +CONFIG_DRM_I915_USERPTR=y +# CONFIG_DRM_I915_WERROR is not set +CONFIG_DRM_IMX=m +CONFIG_DRM_IMX_HDMI=m +CONFIG_DRM_IMX_LDB=m +CONFIG_DRM_IMX_PARALLEL_DISPLAY=m +CONFIG_DRM_IMX_TVE=m +CONFIG_DRM_KMS_CMA_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_KOMEDA=m +# CONFIG_DRM_LEGACY is not set +CONFIG_DRM_LIMA=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_LVDS_CODEC=m +CONFIG_DRM_MALI_DISPLAY=m +CONFIG_DRM_MCDE=m +CONFIG_DRM_MEDIATEK=m +CONFIG_DRM_MEDIATEK_HDMI=m +CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW=m +CONFIG_DRM_MESON=m +CONFIG_DRM_MESON_DW_HDMI=m +CONFIG_DRM_MIPI_DBI=m +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_MSM=m +CONFIG_DRM_MSM_DSI=y +CONFIG_DRM_MSM_DSI_10NM_PHY=y +CONFIG_DRM_MSM_DSI_14NM_PHY=y +CONFIG_DRM_MSM_DSI_20NM_PHY=y +CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y +CONFIG_DRM_MSM_DSI_28NM_PHY=y +CONFIG_DRM_MSM_DSI_PLL=y +CONFIG_DRM_MSM_GPU_STATE=y +# CONFIG_DRM_MSM_GPU_SUDO is not set +CONFIG_DRM_MSM_HDMI_HDCP=y +# CONFIG_DRM_MSM_REGISTER_LOGGING is not set +CONFIG_DRM_MXS=y +CONFIG_DRM_MXSFB=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_NOUVEAU_SVM is not set +CONFIG_DRM_NWL_MIPI_DSI=m +CONFIG_DRM_NXP_PTN3460=m +# CONFIG_DRM_OMAP is not set +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_ARM_VERSATILE=m +CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596=m +CONFIG_DRM_PANEL_BOE_HIMAX8279D=m +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=m +CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m +CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m +CONFIG_DRM_PANEL_ILITEK_IL9322=m +CONFIG_DRM_PANEL_ILITEK_ILI9881C=m +CONFIG_DRM_PANEL_INNOLUX_P079ZCA=m +CONFIG_DRM_PANEL_JDI_LT070ME05000=m +CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m +CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W=m +CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829=m +CONFIG_DRM_PANEL_LG_LB035Q02=m +CONFIG_DRM_PANEL_LG_LG4573=m +CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_PANEL_NEC_NL8048HL11=m +CONFIG_DRM_PANEL_NOVATEK_NT35510=m +CONFIG_DRM_PANEL_NOVATEK_NT39016=m +CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m +CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=m +CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM67191=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m +CONFIG_DRM_PANEL_ROCKTECH_JH057N00900=m +CONFIG_DRM_PANEL_RONBO_RB070D30=m +CONFIG_DRM_PANEL_SAMSUNG_LD9040=m +CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=m +CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0=m +CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m +CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m +CONFIG_DRM_PANEL_SEIKO_43WVF1G=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SHARP_LS037V7DW01=m +CONFIG_DRM_PANEL_SHARP_LS043T1LE01=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PANEL_SITRONIX_ST7701=m +CONFIG_DRM_PANEL_SITRONIX_ST7789V=m +CONFIG_DRM_PANEL_SONY_ACX424AKP=m +CONFIG_DRM_PANEL_SONY_ACX565AKM=m +CONFIG_DRM_PANEL_TPO_TD028TTEC1=m +CONFIG_DRM_PANEL_TPO_TD043MTEA1=m +CONFIG_DRM_PANEL_TPO_TPG110=m +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m +CONFIG_DRM_PANEL_VISIONOX_RM69299=m +CONFIG_DRM_PANEL_XINPENG_XPP055C272=m +CONFIG_DRM_PANFROST=m +CONFIG_DRM_PARADE_PS8622=m +CONFIG_DRM_PARADE_PS8640=m +CONFIG_DRM_PL111=m +# CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_RCAR_CMM=m +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_DW_HDMI=m +CONFIG_DRM_RCAR_VSP=y +CONFIG_DRM_RCAR_WRITEBACK=y +CONFIG_DRM_ROCKCHIP=m +CONFIG_DRM_SCHED=m +CONFIG_DRM_SII902X=m +CONFIG_DRM_SII9234=m +CONFIG_DRM_SIL_SII8620=m +CONFIG_DRM_SIMPLE_BRIDGE=m +# CONFIG_DRM_STI is not set +CONFIG_DRM_STM=m +CONFIG_DRM_STM_DSI=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN4I_BACKEND=m +CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I_HDMI_CEC=y +CONFIG_DRM_SUN6I_DSI=m +CONFIG_DRM_SUN8I_DW_HDMI=m +CONFIG_DRM_SUN8I_MIXER=m +CONFIG_DRM_SUN8I_TCON_TOP=m +CONFIG_DRM_TEGRA=m +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_STAGING=y +CONFIG_DRM_THINE_THC63LVD1024=m +CONFIG_DRM_TIDSS=m +CONFIG_DRM_TILCDC=m +CONFIG_DRM_TI_SN65DSI86=m +CONFIG_DRM_TI_TFP410=m +CONFIG_DRM_TI_TPD12S015=m +CONFIG_DRM_TOSHIBA_TC358764=m +CONFIG_DRM_TOSHIBA_TC358767=m +CONFIG_DRM_TOSHIBA_TC358768=m +CONFIG_DRM_TTM=m +CONFIG_DRM_TTM_DMA_PAGE_POOL=y +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_TVE200=m +CONFIG_DRM_UDL=m +CONFIG_DRM_VBOXVIDEO=m +CONFIG_DRM_VC4=m +CONFIG_DRM_VC4_HDMI_CEC=y +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y +CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=m +CONFIG_DS1803=m +CONFIG_DS4424=m +CONFIG_DST_CACHE=y +CONFIG_DTC=y +CONFIG_DTL=y +CONFIG_DT_IDLE_STATES=y +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_AS102=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET_PATCH=m +# CONFIG_DVB_C8SECTPFE is not set +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_CXD2099=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_CXD2880=m +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_DM1105=m +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_DRXK=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_DUMMY_FE=m +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MB86A20S=m +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_MN88443X=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_NET=y +CONFIG_DVB_NETUP_UNIDVB=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_DVB_PLL=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_S921=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_SP2=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m +CONFIG_DVB_TC90522=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA18271C2DD=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m +CONFIG_DVB_TUNER_ITD1000=m +# CONFIG_DVB_ULE_DEBUG is not set +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_CXUSB_ANALOG=y +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DWC_XLGMAC=m +CONFIG_DWC_XLGMAC_PCI=m +CONFIG_DWMAC_DWC_QOS_ETH=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_IMX8=m +CONFIG_DWMAC_INTEL=m +CONFIG_DWMAC_IPQ806X=m +CONFIG_DWMAC_MEDIATEK=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_QCOM_ETHQOS=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SOCFPGA=m +CONFIG_DWMAC_SUN8I=m +# CONFIG_DWMAC_SUNXI is not set +CONFIG_DW_APB_ICTL=y +CONFIG_DW_APB_TIMER=y +CONFIG_DW_APB_TIMER_OF=y +CONFIG_DW_AXI_DMAC=m +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC_PCI=m +CONFIG_DW_EDMA=m +CONFIG_DW_EDMA_PCIE=m +CONFIG_DW_I3C_MASTER=m +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_DYNAMIC_MEMORY_LAYOUT=y +CONFIG_DYNAMIC_PHYSICAL_MASK=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_EADM_SCH=m +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_USB=y +CONFIG_EARLY_PRINTK_USB_XDBC=y +CONFIG_EBC_C384_WDT=m +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_EDAC=y +CONFIG_EDAC_ALTERA=y +CONFIG_EDAC_ALTERA_ETHERNET=y +CONFIG_EDAC_ALTERA_NAND=y +CONFIG_EDAC_ALTERA_OCRAM=y +CONFIG_EDAC_ALTERA_QSPI=y +CONFIG_EDAC_ALTERA_SDMMC=y +CONFIG_EDAC_ALTERA_SDRAM=y +CONFIG_EDAC_ALTERA_USB=y +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_ARMADA_XP=y +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_BLUEFIELD=m +CONFIG_EDAC_CPC925=m +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_DMC520=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_GHES=y +CONFIG_EDAC_HIGHBANK_L2=m +CONFIG_EDAC_HIGHBANK_MC=m +CONFIG_EDAC_I10NM=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_LAYERSCAPE=m +# CONFIG_EDAC_LEGACY_SYSFS is not set +CONFIG_EDAC_PND2=m +CONFIG_EDAC_QCOM=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SKX=m +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC_SYNOPSYS=m +CONFIG_EDAC_THUNDERX=m +CONFIG_EDAC_TI=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_XGENE=m +CONFIG_EDD=y +CONFIG_EDD_OFF=y +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +CONFIG_EEH=y +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT25=m +CONFIG_EFI=y +CONFIG_EFIVAR_FS=y +# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set +CONFIG_EFI_BOOTLOADER_CONTROL=m +CONFIG_EFI_CAPSULE_LOADER=m +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +CONFIG_EFI_DEV_PATH_PARSER=y +# CONFIG_EFI_DISABLE_PCI_DMA is not set +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_EMBEDDED_FIRMWARE=y +CONFIG_EFI_ESRT=y +# CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_GENERIC_STUB=y +CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y +CONFIG_EFI_MIXED=y +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_PARTITION=y +# CONFIG_EFI_PGT_DUMP is not set +CONFIG_EFI_RCI2_TABLE=y +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_SOFT_RESERVE=y +CONFIG_EFI_STUB=y +CONFIG_EFI_TEST=m +CONFIG_EFI_VARS=y +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EINT_MTK=y +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EISA_PCI_EISA=y +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_EL3=m +CONFIG_ELFCORE=y +CONFIG_ELF_CORE=y +CONFIG_EMAC_ROCKCHIP=m +# CONFIG_EMBEDDED is not set +CONFIG_EM_TIMER_STI=y +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_ENA_ETHERNET=m +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCRYPTED_KEYS=y +CONFIG_ENCX24J600=m +CONFIG_ENERGY_MODEL=y +CONFIG_ENIC=m +CONFIG_ENVELOPE_DETECTOR=m +CONFIG_EPAPR_BOOT=y +CONFIG_EPAPR_PARAVIRT=y +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_EROFS_FS=m +CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1 +# CONFIG_EROFS_FS_DEBUG is not set +CONFIG_EROFS_FS_POSIX_ACL=y +CONFIG_EROFS_FS_SECURITY=y +CONFIG_EROFS_FS_XATTR=y +CONFIG_EROFS_FS_ZIP=y +CONFIG_ET131X=m +CONFIG_ETHERNET=y +CONFIG_ETHTOOL_NETLINK=y +CONFIG_EUROTECH_WDT=m +CONFIG_EVENTFD=y +CONFIG_EVENT_TRACING=y +CONFIG_EVM=y +CONFIG_EVM_ADD_XATTRS=y +CONFIG_EVM_ATTR_FSUUID=y +CONFIG_EVM_EXTRA_SMACK_XATTRS=y +CONFIG_EVM_X509_PATH="/etc/keys/x509_evm.der" +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_EXPERT=y +CONFIG_EXPOLINE=y +CONFIG_EXPOLINE_AUTO=y +# CONFIG_EXPOLINE_FULL is not set +# CONFIG_EXPOLINE_OFF is not set +CONFIG_EXPORTFS=y +CONFIG_EXPORTFS_BLOCK_OPS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_FSA9480=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_CHT_WC=m +CONFIG_EXTCON_INTEL_INT3496=m +CONFIG_EXTCON_INTEL_MRFLD=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX3355=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX77843=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_PTN5150=m +CONFIG_EXTCON_QCOM_SPMI_MISC=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USBC_CROS_EC=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS5422_DMC=m +CONFIG_EXYNOS_ADC=m +CONFIG_EXYNOS_ASV=y +CONFIG_EXYNOS_ASV_ARM=y +CONFIG_EXYNOS_AUDSS_CLK_CON=m +CONFIG_EXYNOS_CHIPID=y +CONFIG_EXYNOS_CPU_SUSPEND=y +CONFIG_EXYNOS_IOMMU=y +# CONFIG_EXYNOS_IOMMU_DEBUG is not set +CONFIG_EXYNOS_IRQ_COMBINER=y +CONFIG_EXYNOS_MCPM=y +CONFIG_EXYNOS_PMU=y +CONFIG_EXYNOS_PMU_ARM_DRIVERS=y +CONFIG_EXYNOS_PM_DOMAINS=y +CONFIG_EXYNOS_SROM=y +CONFIG_EXYNOS_THERMAL=y +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=m +CONFIG_EZX_PCAP=y +# CONFIG_F2FS_CHECK_FS is not set +# CONFIG_F2FS_FAULT_INJECTION is not set +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZO=y +CONFIG_F2FS_FS_LZORLE=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_ZSTD=y +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_F2FS_STAT_FS=y +CONFIG_F71808E_WDT=m +CONFIG_FAILOVER=m +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +CONFIG_FAT_FS=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_FA_DUMP=y +CONFIG_FB=y +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_3DFX_I2C is not set +CONFIG_FB_ARC=m +CONFIG_FB_ARMCLCD=y +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_BACKLIGHT=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y +CONFIG_FB_CMDLINE=y +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_DA8XX=m +CONFIG_FB_DDC=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_HYPERV=m +CONFIG_FB_IMX=m +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_LE80578=m +CONFIG_FB_MACMODES=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_MB862XX_LIME is not set +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_MX3=y +CONFIG_FB_N411=m +CONFIG_FB_NOTIFY=y +CONFIG_FB_NVIDIA_BACKLIGHT=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_OF=y +CONFIG_FB_OMAP2=m +# CONFIG_FB_OMAP2_CONNECTOR_ANALOG_TV is not set +# CONFIG_FB_OMAP2_CONNECTOR_DVI is not set +# CONFIG_FB_OMAP2_CONNECTOR_HDMI is not set +# CONFIG_FB_OMAP2_DEBUG_SUPPORT is not set +CONFIG_FB_OMAP2_DSS=m +# CONFIG_FB_OMAP2_DSS_DEBUG is not set +# CONFIG_FB_OMAP2_DSS_DEBUGFS is not set +CONFIG_FB_OMAP2_DSS_DPI=y +# CONFIG_FB_OMAP2_DSS_DSI is not set +CONFIG_FB_OMAP2_DSS_HDMI_COMMON=y +CONFIG_FB_OMAP2_DSS_INIT=y +CONFIG_FB_OMAP2_DSS_MIN_FCK_PER_PCK=0 +# CONFIG_FB_OMAP2_DSS_SDI is not set +CONFIG_FB_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_FB_OMAP2_DSS_VENC=y +# CONFIG_FB_OMAP2_ENCODER_OPA362 is not set +# CONFIG_FB_OMAP2_ENCODER_TFP410 is not set +# CONFIG_FB_OMAP2_ENCODER_TPD12S015 is not set +CONFIG_FB_OMAP2_NUM_FBS=3 +# CONFIG_FB_OMAP2_PANEL_DPI is not set +# CONFIG_FB_OMAP2_PANEL_DSI_CM is not set +# CONFIG_FB_OMAP2_PANEL_LGPHILIPS_LB035Q02 is not set +CONFIG_FB_OMAP4_DSS_HDMI=y +# CONFIG_FB_OMAP5_DSS_HDMI is not set +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RIVA_BACKLIGHT=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S3_DDC=y +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SH_MOBILE_LCDC=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM750=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m +CONFIG_FB_TFT_ILI9163=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SEPS525=m +CONFIG_FB_TFT_SH1106=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1305=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_ST7789V=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_UDL=m +CONFIG_FB_VESA=y +CONFIG_FB_VGA16=m +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_XILINX=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_FEC=y +CONFIG_FHANDLE=y +# CONFIG_FHCI_DEBUG is not set +CONFIG_FIB_RULES=y +CONFIG_FIELDBUS_DEV=m +CONFIG_FILE_LOCKING=y +# CONFIG_FIND_BIT_BENCHMARK is not set +CONFIG_FIQ=y +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_SERIAL=m +CONFIG_FIRMWARE_EDID=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIX_EARLYCON_MEM=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_FM10K=m +CONFIG_FONTS=y +# CONFIG_FONT_10x18 is not set +CONFIG_FONT_6x10=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_SUN8x16 is not set +CONFIG_FONT_SUPPORT=y +CONFIG_FONT_TER16x32=y +CONFIG_FORCEDETH=m +CONFIG_FORCE_PCI=y +CONFIG_FORCE_SMP=y +CONFIG_FORTIFY_SOURCE=y +CONFIG_FPGA=m +CONFIG_FPGA_DFL_AFU=m +CONFIG_FPGA_DFL_FME=m +CONFIG_FPGA_DFL_FME_BRIDGE=m +CONFIG_FPGA_DFL_FME_MGR=m +CONFIG_FPGA_DFL_FME_REGION=m +CONFIG_FPGA_DFL_PCI=m +CONFIG_FPGA_MGR_ALTERA_CVP=m +CONFIG_FPGA_MGR_ALTERA_PS_SPI=m +CONFIG_FPGA_MGR_ICE40_SPI=m +CONFIG_FPGA_MGR_MACHXO2_SPI=m +CONFIG_FPGA_MGR_STRATIX10_SOC=m +CONFIG_FPGA_MGR_XILINX_SPI=m +CONFIG_FPGA_MGR_ZYNQMP_FPGA=m +CONFIG_FPGA_REGION=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAME_POINTER=y +CONFIG_FRAME_VECTOR=y +CONFIG_FREEZER=y +CONFIG_FRONTSWAP=y +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_DEBUG is not set +# CONFIG_FSCACHE_HISTOGRAM is not set +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_FSCACHE_STATS=y +CONFIG_FSI=m +CONFIG_FSI_MASTER_ASPEED=m +CONFIG_FSI_MASTER_AST_CF=m +CONFIG_FSI_MASTER_GPIO=m +CONFIG_FSI_MASTER_HUB=m +# CONFIG_FSI_NEW_DEV_NODE is not set +CONFIG_FSI_OCC=m +CONFIG_FSI_SBEFIFO=m +CONFIG_FSI_SCOM=m +CONFIG_FSL_BMAN_TEST=m +# CONFIG_FSL_BMAN_TEST_API is not set +CONFIG_FSL_DPAA=y +CONFIG_FSL_DPAA2=y +CONFIG_FSL_DPAA2_ETH=m +CONFIG_FSL_DPAA2_ETHSW=m +CONFIG_FSL_DPAA2_ETH_DCB=y +CONFIG_FSL_DPAA2_PTP_CLOCK=m +CONFIG_FSL_DPAA2_QDMA=m +CONFIG_FSL_DPAA_CHECKING=y +CONFIG_FSL_DPAA_ETH=m +CONFIG_FSL_EDMA=m +CONFIG_FSL_ENETC=m +CONFIG_FSL_ENETC_MDIO=m +CONFIG_FSL_ENETC_PTP_CLOCK=m +CONFIG_FSL_ENETC_QOS=y +CONFIG_FSL_ENETC_VF=m +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_FSL_FMAN=y +CONFIG_FSL_GTM=y +CONFIG_FSL_GUTS=y +CONFIG_FSL_IFC=y +CONFIG_FSL_IMX8_DDR_PMU=m +CONFIG_FSL_LBC=y +CONFIG_FSL_MC_DPIO=m +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_QDMA=m +# CONFIG_FSL_QMAN_TEST is not set +CONFIG_FSL_RCPM=y +CONFIG_FSL_UCC_HDLC=m +CONFIG_FSL_XGMAC_MDIO=y +CONFIG_FSNOTIFY=y +CONFIG_FS_DAX=y +CONFIG_FS_DAX_LIMITED=y +CONFIG_FS_DAX_PMD=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_IOMAP=y +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FS_VERITY=y +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +# CONFIG_FS_VERITY_DEBUG is not set +CONFIG_FTGMAC100=m +CONFIG_FTL=m +CONFIG_FTMAC100=m +CONFIG_FTM_QUADDEC=m +CONFIG_FTRACE=y +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_SYSCALLS=y +# CONFIG_FTR_FIXUP_SELFTEST is not set +CONFIG_FTWDT010_WATCHDOG=m +CONFIG_FUEL_GAUGE_SC27XX=m +CONFIG_FUJITSU_ERRATUM_010001=y +CONFIG_FUJITSU_ES=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_FUNCTION_ERROR_INJECTION=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUSE_FS=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_FWTTY_MAX_CARD_PORTS=32 +CONFIG_FWTTY_MAX_TOTAL_PORTS=64 +CONFIG_FW_CACHE=y +CONFIG_FW_CFG_SYSFS=m +# CONFIG_FW_CFG_SYSFS_CMDLINE is not set +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_FXAS21002C=m +CONFIG_FXAS21002C_I2C=m +CONFIG_FXAS21002C_SPI=m +CONFIG_FXOS8700=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +CONFIG_GACT_PROB=y +CONFIG_GADGET_UAC1=y +# CONFIG_GADGET_UAC1_LEGACY is not set +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GARP=m +CONFIG_GART_IOMMU=y +CONFIG_GCC_VERSION=100200 +# CONFIG_GCOV_KERNEL is not set +CONFIG_GDB_SCRIPTS=y +CONFIG_GEMINI_ETHERNET=m +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_GENERIC_ADC_THERMAL=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ARCH_TOPOLOGY=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_CPU=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_CHIP=y +# CONFIG_GENERIC_IRQ_DEBUGFS is not set +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y +CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_MSI_IRQ=y +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y +CONFIG_GENERIC_PINCONF=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y +CONFIG_GENERIC_PTDUMP=y +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_TRACER=y +CONFIG_GENERIC_VDSO_32=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_GENEVE=m +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 +CONFIG_GEN_RTC=y +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIANFAR=m +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_GNSS_SERIAL=m +CONFIG_GNSS_SIRF_SERIAL=m +CONFIG_GNSS_UBX_SERIAL=m +# CONFIG_GOLDFISH is not set +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_GP2AP002=m +CONFIG_GP2AP020A00F=m +CONFIG_GPD_POCKET_FAN=m +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_104_DIO_48E=m +CONFIG_GPIO_104_IDIO_16=m +CONFIG_GPIO_104_IDI_48=m +CONFIG_GPIO_74X164=m +CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_AMDPT=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_ASPEED=m +CONFIG_GPIO_ASPEED_SGPIO=y +CONFIG_GPIO_BCM_XGS_IPROC=m +CONFIG_GPIO_BD70528=m +CONFIG_GPIO_BD71828=m +CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_BRCMSTB=m +CONFIG_GPIO_BT8XX=m +CONFIG_GPIO_CADENCE=m +CONFIG_GPIO_CRYSTAL_COVE=y +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DAVINCI=y +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_EIC_SPRD=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_EXAR=m +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_FTGPIO010=y +CONFIG_GPIO_GPIO_MM=m +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_GW_PLD=m +CONFIG_GPIO_HLWD=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_IT87=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LOGICVC=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_LP873X=m +CONFIG_GPIO_LP87565=m +CONFIG_GPIO_MADERA=m +CONFIG_GPIO_MAX3191X=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX77620=m +CONFIG_GPIO_MAX77650=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MENZ127=m +CONFIG_GPIO_MLXBF=m +CONFIG_GPIO_MLXBF2=m +CONFIG_GPIO_ML_IOH=m +# CONFIG_GPIO_MOCKUP is not set +CONFIG_GPIO_MOXTET=m +CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_MSIC=y +CONFIG_GPIO_MVEBU=y +CONFIG_GPIO_MXC=y +CONFIG_GPIO_OMAP=y +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCIE_IDIO_24=m +CONFIG_GPIO_PCI_IDIO_16=m +CONFIG_GPIO_PISOSR=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_PMIC_EIC_SPRD=m +CONFIG_GPIO_RASPBERRYPI_EXP=m +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RCAR=m +CONFIG_GPIO_RDA=y +CONFIG_GPIO_SAMA5D2_PIOBU=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_SIFIVE=y +CONFIG_GPIO_SPRD=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SYSCON=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TEGRA=y +CONFIG_GPIO_THUNDERX=m +CONFIG_GPIO_TPS65086=m +CONFIG_GPIO_TPS65218=m +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_TPS68470=y +CONFIG_GPIO_TQMX86=m +CONFIG_GPIO_TS4800=m +CONFIG_GPIO_TS4900=m +CONFIG_GPIO_UCB1400=m +CONFIG_GPIO_UNIPHIER=m +CONFIG_GPIO_VF610=y +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WATCHDOG=m +CONFIG_GPIO_WCD934X=m +CONFIG_GPIO_WHISKEY_COVE=m +CONFIG_GPIO_WINBOND=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_WS16C48=m +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=m +CONFIG_GPIO_XLP=m +CONFIG_GPIO_XRA1403=m +CONFIG_GPIO_ZEVIO=y +CONFIG_GPIO_ZYNQ=m +CONFIG_GRACE_PERIOD=m +CONFIG_GREENASIA_FF=y +CONFIG_GREYBUS_AUDIO=m +CONFIG_GREYBUS_BOOTROM=m +CONFIG_GREYBUS_BRIDGED_PHY=m +CONFIG_GREYBUS_ES2=m +CONFIG_GREYBUS_FIRMWARE=m +CONFIG_GREYBUS_GPIO=m +CONFIG_GREYBUS_HID=m +CONFIG_GREYBUS_I2C=m +CONFIG_GREYBUS_LIGHT=m +CONFIG_GREYBUS_LOG=m +CONFIG_GREYBUS_LOOPBACK=m +CONFIG_GREYBUS_POWER=m +CONFIG_GREYBUS_PWM=m +CONFIG_GREYBUS_RAW=m +CONFIG_GREYBUS_SDIO=m +CONFIG_GREYBUS_SPI=m +CONFIG_GREYBUS_UART=m +CONFIG_GREYBUS_USB=m +CONFIG_GREYBUS_VIBRATOR=m +CONFIG_GRO_CELLS=y +CONFIG_GS_FPGABOOT=m +CONFIG_GTP=m +# CONFIG_GUP_BENCHMARK is not set +CONFIG_GVE=m +CONFIG_HALTPOLL_CPUIDLE=m +CONFIG_HAMRADIO=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_FALLBACK=y +# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_HARDEN_EL2_VECTORS=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_ARCH_COMPILER_H=y +CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_HAVE_ARCH_NVRAM_OPS=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y +CONFIG_HAVE_ARCH_USERFAULTFD_WP=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_COPY_THREAD_TLS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_BUGVERBOSE=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_EISA=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUTEX_CMPXCHG=y +CONFIG_HAVE_GCC_PLUGINS=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_ARCH=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_IMA_KEXEC=y +CONFIG_HAVE_IMX_ANATOP=y +CONFIG_HAVE_IMX_GPC=y +CONFIG_HAVE_IMX_MMDC=y +CONFIG_HAVE_IMX_SRC=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_UNCOMPRESSED=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_KVM_INVALID_WAKEUPS=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL=y +CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y +CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y +CONFIG_HAVE_LIVEPATCH=y +CONFIG_HAVE_MARCH_Z10_FEATURES=y +CONFIG_HAVE_MARCH_Z13_FEATURES=y +CONFIG_HAVE_MARCH_Z196_FEATURES=y +CONFIG_HAVE_MARCH_Z900_FEATURES=y +CONFIG_HAVE_MARCH_Z990_FEATURES=y +CONFIG_HAVE_MARCH_Z9_109_FEATURES=y +CONFIG_HAVE_MARCH_ZEC12_FEATURES=y +CONFIG_HAVE_MEMBLOCK_PHYS_MAP=y +CONFIG_HAVE_MEMORYLESS_NODES=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_NMI_WATCHDOG=y +CONFIG_HAVE_NOP_MCOUNT=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_HAVE_PCI=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_PNETID=m +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_S3C2410_I2C=y +CONFIG_HAVE_S3C2410_WATCHDOG=y +CONFIG_HAVE_S3C_RTC=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_STACKPROTECTOR=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_TIF_NOHZ=y +CONFIG_HAVE_UID16=y +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HBMC_AM654=m +# CONFIG_HCALL_STATS is not set +CONFIG_HD44780=m +CONFIG_HDC100X=m +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_X25=m +CONFIG_HDMI=y +CONFIG_HDMI_LPE_AUDIO=m +CONFIG_HDQ_MASTER_OMAP=m +# CONFIG_HEADERS_INSTALL is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +# CONFIG_HERMES_PRISM is not set +# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set +CONFIG_HI13X1_GMAC=y +CONFIG_HI3660_MBOX=m +CONFIG_HI6220_MBOX=m +CONFIG_HI8435=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_HIDRAW=y +CONFIG_HID_A4TECH=m +CONFIG_HID_ACCUTOUCH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_ALPS=m +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CORSAIR=m +CONFIG_HID_COUGAR=m +CONFIG_HID_CP2112=m +CONFIG_HID_CREATIVE_SB0540=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_ELAN=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GENERIC=m +CONFIG_HID_GFRM=m +CONFIG_HID_GLORIOUS=m +CONFIG_HID_GOOGLE_HAMMER=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GT683R=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=m +CONFIG_HID_JABRA=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_HID_MACALLY=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MALTRON=m +CONFIG_HID_MAYFLASH=m +CONFIG_HID_MCP2221=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTI=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PID=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_REDRAGON=m +CONFIG_HID_RETRODE=m +CONFIG_HID_RMI=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_HUMIDITY=m +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_HID_SENSOR_PRESS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_HID_SENSOR_TEMP=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_U2FZERO=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_UDRAW_PS3=m +CONFIG_HID_VIEWSONIC=m +CONFIG_HID_WACOM=m +CONFIG_HID_WALTOP=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_HINIC=m +CONFIG_HIP04_ETH=m +# CONFIG_HIPPI is not set +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_HISILICON_IRQ_MBIGEN=y +CONFIG_HISILICON_LPC=y +CONFIG_HISI_DMA=m +CONFIG_HISI_FEMAC=m +CONFIG_HISI_PMU=y +CONFIG_HISI_THERMAL=m +CONFIG_HIST_TRIGGERS=y +# CONFIG_HIST_TRIGGERS_DEBUG is not set +CONFIG_HIX5HD2_GMAC=m +CONFIG_HMC425=m +CONFIG_HMC_DRV=m +CONFIG_HMEM_REPORTING=y +CONFIG_HMM_MIRROR=y +CONFIG_HMS_ANYBUSS_BUS=m +CONFIG_HMS_PROFINET=m +CONFIG_HNS=m +CONFIG_HNS3=m +CONFIG_HNS3_DCB=y +CONFIG_HNS3_ENET=m +CONFIG_HNS3_HCLGE=m +CONFIG_HNS3_HCLGEVF=m +CONFIG_HNS_DSAF=m +CONFIG_HNS_ENET=m +CONFIG_HNS_MDIO=m +CONFIG_HOLES_IN_ZONE=y +CONFIG_HOLTEK_FF=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_POWERNV=m +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HOTPLUG_PCI_S390=y +CONFIG_HOTPLUG_SMT=y +CONFIG_HP03=m +CONFIG_HP206C=m +CONFIG_HPET=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HPET_TIMER=y +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_HP_ACCEL=m +CONFIG_HP_WATCHDOG=m +CONFIG_HP_WIRELESS=m +CONFIG_HP_WMI=m +CONFIG_HSA_AMD=y +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HSU_DMA=m +CONFIG_HT16K33=m +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HTS221=m +CONFIG_HTS221_I2C=m +CONFIG_HTS221_SPI=m +CONFIG_HTU21=m +CONFIG_HUAWEI_WMI=m +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y +CONFIG_HVCS=m +CONFIG_HVC_CONSOLE=y +# CONFIG_HVC_DCC is not set +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_IUCV=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +# CONFIG_HVC_UDBG is not set +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HV_PERF_CTRS=y +CONFIG_HWLAT_TRACER=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HWPOISON_INJECT=m +CONFIG_HWSPINLOCK_OMAP=m +CONFIG_HWSPINLOCK_QCOM=m +CONFIG_HWSPINLOCK_SPRD=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_CAVIUM=m +CONFIG_HW_RANDOM_EXYNOS=m +CONFIG_HW_RANDOM_HISI=m +CONFIG_HW_RANDOM_HISI_V2=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_IPROC_RNG200=m +CONFIG_HW_RANDOM_MESON=m +CONFIG_HW_RANDOM_MTK=m +CONFIG_HW_RANDOM_NPCM=m +CONFIG_HW_RANDOM_OMAP=m +CONFIG_HW_RANDOM_OMAP3_ROM=m +CONFIG_HW_RANDOM_OPTEE=m +CONFIG_HW_RANDOM_POWERNV=m +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_S390=m +CONFIG_HW_RANDOM_TPM=y +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XGENE=m +CONFIG_HX711=m +CONFIG_HYPERV=m +CONFIG_HYPERVISOR_GUEST=y +CONFIG_HYPERV_BALLOON=m +CONFIG_HYPERV_IOMMU=y +CONFIG_HYPERV_KEYBOARD=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_STORAGE=m +# CONFIG_HYPERV_TESTING is not set +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=m +CONFIG_HYPERV_VSOCKETS=m +# CONFIG_HZ_200 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +CONFIG_HZ_FIXED=0 +# CONFIG_HZ_PERIODIC is not set +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_ASPEED=m +CONFIG_I2C_AXXIA=m +CONFIG_I2C_BCM2835=m +CONFIG_I2C_BCM_IPROC=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_BRCMSTB=m +# CONFIG_I2C_CADENCE is not set +CONFIG_I2C_CHT_WC=m +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CROS_EC_TUNNEL=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DEMUX_PINCTRL=m +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_CORE=y +# CONFIG_I2C_DESIGNWARE_SLAVE is not set +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +CONFIG_I2C_EXYNOS5=m +CONFIG_I2C_FSI=m +# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HIX5HD2=m +CONFIG_I2C_IMX_LPI2C=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_MESON=m +CONFIG_I2C_MLXCPLD=m +CONFIG_I2C_MPC=m +CONFIG_I2C_MT65XX=m +CONFIG_I2C_MULTI_INSTANTIATE=m +CONFIG_I2C_MUX=m +CONFIG_I2C_MUX_GPMUX=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MV64XXX=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NOMADIK=m +CONFIG_I2C_NPCM7XX=m +CONFIG_I2C_OMAP=y +CONFIG_I2C_OPAL=y +CONFIG_I2C_OWL=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PXA=m +CONFIG_I2C_PXA_SLAVE=y +CONFIG_I2C_QCOM_CCI=m +CONFIG_I2C_QCOM_GENI=m +CONFIG_I2C_QUP=m +CONFIG_I2C_RCAR=m +CONFIG_I2C_RIIC=m +CONFIG_I2C_RK3X=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_S3C2410=y +CONFIG_I2C_SCMI=m +CONFIG_I2C_SH_MOBILE=m +CONFIG_I2C_SI470X=m +CONFIG_I2C_SI4713=m +CONFIG_I2C_SLAVE_EEPROM=m +CONFIG_I2C_SMBUS=m +CONFIG_I2C_SPRD=y +CONFIG_I2C_STUB=m +CONFIG_I2C_SYNQUACER=m +CONFIG_I2C_TEGRA=m +CONFIG_I2C_TEGRA_BPMP=m +CONFIG_I2C_THUNDERX=m +CONFIG_I2C_TINY_USB=m +# CONFIG_I2C_UNIPHIER is not set +# CONFIG_I2C_UNIPHIER_F is not set +CONFIG_I2C_VERSATILE=m +CONFIG_I2C_VIPERBOARD=m +CONFIG_I2C_XGENE_SLIMPRO=m +CONFIG_I2C_XLP9XX=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_I40E_DCB=y +CONFIG_I82092=m +CONFIG_I8253_LOCK=y +CONFIG_I8K=m +CONFIG_IA32_EMULATION=y +CONFIG_IA32_FEAT_CTL=y +CONFIG_IAQCORE=m +CONFIG_IAVF=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMVETH=m +CONFIG_IBMVIO=y +CONFIG_IBMVMC=m +CONFIG_IBMVNIC=m +CONFIG_IBM_ASM=m +CONFIG_IBM_BSR=m +CONFIG_IBM_PARTITION=y +CONFIG_IBM_RTL=m +CONFIG_ICE=m +CONFIG_ICP10100=m +CONFIG_ICPLUS_PHY=m +CONFIG_ICST=y +# CONFIG_IDE is not set +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_IDLE_INJECT=y +CONFIG_IDLE_PAGE_TRACKING=y +CONFIG_IE6XX_WDT=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_ADF7242=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_AT86RF230_DEBUGFS=y +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_CA8210=m +CONFIG_IEEE802154_CA8210_DEBUGFS=y +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_HWSIM=m +CONFIG_IEEE802154_MCR20A=m +CONFIG_IEEE802154_MRF24J40=m +# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set +CONFIG_IEEE802154_SOCKET=m +CONFIG_IFB=m +CONFIG_IFCVF=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IGB_DCA=y +CONFIG_IGB_HWMON=y +CONFIG_IGC=m +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +CONFIG_IIO_BUFFER_DMA=m +CONFIG_IIO_BUFFER_DMAENGINE=m +CONFIG_IIO_BUFFER_HW_CONSUMER=m +CONFIG_IIO_CONFIGFS=m +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m +CONFIG_IIO_CROS_EC_BARO=m +CONFIG_IIO_CROS_EC_LIGHT_PROX=m +CONFIG_IIO_CROS_EC_SENSORS=m +CONFIG_IIO_CROS_EC_SENSORS_CORE=m +CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_MS_SENSORS_I2C=m +CONFIG_IIO_MUX=m +CONFIG_IIO_RESCALE=m +CONFIG_IIO_SIMPLE_DUMMY=m +# CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +# CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM6DSX_I2C=m +CONFIG_IIO_ST_LSM6DSX_I3C=m +CONFIG_IIO_ST_LSM6DSX_SPI=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_IIO_ST_PRESS=m +CONFIG_IIO_ST_PRESS_I2C=m +CONFIG_IIO_ST_PRESS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_SW_DEVICE=m +CONFIG_IIO_SW_TRIGGER=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_TIGHTLOOP_TRIGGER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_TRIGGERED_BUFFER=m +CONFIG_IIO_TRIGGERED_EVENT=m +# CONFIG_IKCONFIG is not set +CONFIG_IKHEADERS=m +CONFIG_IMA=y +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_APPRAISE_BOOTPARAM=y +# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set +CONFIG_IMA_APPRAISE_MODSIG=y +# CONFIG_IMA_APPRAISE_SIGNED_INIT is not set +# CONFIG_IMA_BLACKLIST_KEYRING is not set +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +CONFIG_IMA_KEXEC=y +# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set +CONFIG_IMA_LSM_RULES=y +CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y +# CONFIG_IMA_TEMPLATE is not set +CONFIG_IMA_TRUSTED_KEYRING=y +# CONFIG_IMA_WRITE_POLICY is not set +CONFIG_IMA_X509_PATH="/etc/keys/x509_ima.der" +CONFIG_IMG_ASCII_LCD=m +CONFIG_IMX2_WDT=m +CONFIG_IMX7D_ADC=m +CONFIG_IMX7ULP_WDT=m +CONFIG_IMX8MM_THERMAL=m +CONFIG_IMX_DMA=m +CONFIG_IMX_DSP=m +CONFIG_IMX_GPCV2=y +CONFIG_IMX_GPCV2_PM_DOMAINS=y +CONFIG_IMX_INTMUX=y +CONFIG_IMX_IPUV3_CORE=m +CONFIG_IMX_IRQSTEER=y +CONFIG_IMX_MBOX=m +CONFIG_IMX_REMOTEPROC=m +CONFIG_IMX_SCU=y +CONFIG_IMX_SCU_PD=y +CONFIG_IMX_SCU_SOC=y +CONFIG_IMX_SC_THERMAL=m +CONFIG_IMX_SC_WDT=m +CONFIG_IMX_SDMA=m +CONFIG_IMX_THERMAL=m +CONFIG_IMX_WEIM=y +CONFIG_INA2XX_ADC=m +CONFIG_INDIRECT_PIO=y +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESPINTCP=y +CONFIG_INET6_ESP_OFFLOAD=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_INET_ESP=m +CONFIG_INET_ESPINTCP=y +CONFIG_INET_ESP_OFFLOAD=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_SCTP_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EFA=m +# CONFIG_INFINIBAND_EXP_LEGACY_VERBS_NEW_UAPI is not set +CONFIG_INFINIBAND_HFI1=m +CONFIG_INFINIBAND_HNS=m +CONFIG_INFINIBAND_HNS_HIP06=y +CONFIG_INFINIBAND_HNS_HIP08=y +CONFIG_INFINIBAND_I40IW=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_OPA_VNIC=m +CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +CONFIG_INFINIBAND_RDMAVT=m +CONFIG_INFINIBAND_RTRS=m +CONFIG_INFINIBAND_RTRS_CLIENT=m +CONFIG_INFINIBAND_RTRS_SERVER=m +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFINIBAND_VIRT_DMA=y +CONFIG_INFINIBAND_VMWARE_PVRDMA=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_INIT_STACK_NONE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_TRYLOCK=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_TRYLOCK=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_INOTIFY_USER=y +CONFIG_INPUT=y +CONFIG_INPUT_88PM80X_ONKEY=m +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATMEL_CAPTOUCH=m +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_CPCAP_PWRBUTTON=m +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_VIBRA=m +CONFIG_INPUT_HISI_POWERKEY=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_IMS_PCU=m +CONFIG_INPUT_IQS269A=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_MAX77650_ONKEY=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_PALMAS_PWRBUTTON=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_PM8941_PWRKEY=m +CONFIG_INPUT_PM8XXX_VIBRATOR=m +CONFIG_INPUT_PMIC8XXX_PWRKEY=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_RAVE_SP_PWRBUTTON=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_INPUT_SC27XX_VIBRA=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_STPMIC1_ONKEY=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m +CONFIG_INPUT_YEALINK=m +CONFIG_INSTRUCTION_DECODER=y +CONFIG_INT3406_THERMAL=m +CONFIG_INT340X_THERMAL=m +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_INTEGRITY_PLATFORM_KEYRING=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEGRITY_TRUSTED_KEYRING=y +CONFIG_INTEL_ATOMISP=y +CONFIG_INTEL_BXTWC_PMIC_TMU=m +CONFIG_INTEL_BXT_PMIC_THERMAL=m +CONFIG_INTEL_CHTDC_TI_PWRBTN=m +CONFIG_INTEL_CHT_INT33FE=m +CONFIG_INTEL_GTT=y +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_IDLE=y +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IDXD=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_SVM=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=m +CONFIG_INTEL_ISH_HID=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_HDCP=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_WDT=m +CONFIG_INTEL_MENLOW=m +CONFIG_INTEL_MFLD_THERMAL=m +CONFIG_INTEL_MIC_BUS=m +CONFIG_INTEL_MIC_CARD=m +CONFIG_INTEL_MIC_HOST=m +CONFIG_INTEL_MIC_X100_DMA=m +CONFIG_INTEL_MID_POWER_BUTTON=m +CONFIG_INTEL_MRFLD_ADC=m +CONFIG_INTEL_MRFLD_PWRBTN=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_PCH_THERMAL=m +CONFIG_INTEL_PMC_CORE=y +CONFIG_INTEL_POWERCLAMP=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RAPL_CORE=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SCU=y +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_INTEL_SCU_PCI=y +CONFIG_INTEL_SCU_PLATFORM=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_SOC_PMIC_BXTWC=m +CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m +CONFIG_INTEL_SOC_PMIC_CHTWC=y +CONFIG_INTEL_SOC_PMIC_MRFLD=m +CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +CONFIG_INTEL_STRATIX10_RSU=m +CONFIG_INTEL_STRATIX10_SERVICE=m +CONFIG_INTEL_TELEMETRY=m +CONFIG_INTEL_TH=m +CONFIG_INTEL_TH_ACPI=m +# CONFIG_INTEL_TH_DEBUG is not set +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_PTI=m +CONFIG_INTEL_TH_STH=m +CONFIG_INTEL_TURBO_MAX_3=y +CONFIG_INTEL_TXT=y +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_WMI_SBL_FW_UPDATE=m +CONFIG_INTEL_WMI_THUNDERBOLT=m +CONFIG_INTEL_XWAY_PHY=m +CONFIG_INTERCONNECT_IMX=m +CONFIG_INTERCONNECT_IMX8MM=m +CONFIG_INTERCONNECT_IMX8MN=m +CONFIG_INTERCONNECT_IMX8MQ=m +CONFIG_INTERCONNECT_QCOM=y +CONFIG_INTERCONNECT_QCOM_BCM_VOTER=m +CONFIG_INTERCONNECT_QCOM_MSM8916=m +CONFIG_INTERCONNECT_QCOM_MSM8974=m +CONFIG_INTERCONNECT_QCOM_OSM_L3=m +CONFIG_INTERCONNECT_QCOM_QCS404=m +CONFIG_INTERCONNECT_QCOM_RPMH=m +CONFIG_INTERCONNECT_QCOM_SC7180=m +CONFIG_INTERCONNECT_QCOM_SDM845=m +CONFIG_INTERCONNECT_QCOM_SMD_RPM=m +CONFIG_INTERVAL_TREE=y +# CONFIG_INTERVAL_TREE_TEST is not set +CONFIG_INV_MPU6050_I2C=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_INV_MPU6050_SPI=m +CONFIG_IOASID=y +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUG is not set +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_DMA=y +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_IO_PGTABLE=y +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +CONFIG_IOMMU_SUPPORT=y +# CONFIG_ION is not set +CONFIG_IONIC=m +CONFIG_IOSCHED_BFQ=m +CONFIG_IOSF_MBI=y +CONFIG_IOSF_MBI_DEBUG=y +# CONFIG_IO_DELAY_0X80 is not set +CONFIG_IO_DELAY_0XED=y +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_IO_DELAY_UDELAY is not set +CONFIG_IO_EVENT_IRQ=y +# CONFIG_IO_STRICT_DEVMEM is not set +CONFIG_IO_URING=y +CONFIG_IO_WQ=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IPC_NS=y +# CONFIG_IPDDP is not set +CONFIG_IPMB_DEVICE_INTERFACE=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_KCS_BMC=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_PLAT_DATA=y +CONFIG_IPMI_POWERNV=m +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPQ_GCC_4019=m +CONFIG_IPQ_GCC_6018=m +CONFIG_IPQ_GCC_806X=m +CONFIG_IPQ_GCC_8074=m +CONFIG_IPQ_LCC_806X=m +CONFIG_IPV6=y +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_ILA=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +# CONFIG_IPV6_RPL_LWTUNNEL is not set +CONFIG_IPV6_SEG6_BPF=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPVLAN=m +CONFIG_IPVLAN_L3S=y +CONFIG_IPVTAP=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPWIRELESS=m +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_CLASSID=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_IPV6=y +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_MH_TAB_INDEX=12 +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SH_TAB_BITS=8 +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IQS620AT_TEMP=m +CONFIG_IQS621_ALS=m +CONFIG_IQS624_POS=m +CONFIG_IRQCHIP=y +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_ALL_CPUS=y +CONFIG_IRQ_CROSSBAR=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_MSI_IOMMU=y +CONFIG_IRQ_POLL=y +CONFIG_IRQ_REMAP=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_UNIPHIER_AIDET=y +CONFIG_IRQ_WORK=y +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_GPIO_TX=m +CONFIG_IR_HIX5HD2=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_MESON=m +CONFIG_IR_MTK=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_PWM_TX=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_RCMM_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_RX51=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SIR=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SPI=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_SUNXI=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_XMP_DECODER=m +CONFIG_ISA_BUS=y +CONFIG_ISA_BUS_API=y +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ISCSI_IBFT=m +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TARGET_CXGB4=m +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISI=m +CONFIG_ISL29125=m +CONFIG_ISL29501=m +CONFIG_ISM=m +CONFIG_ISO9660_FS=m +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_ITCO_WDT=m +CONFIG_ITG3200=m +CONFIG_IUCV=y +CONFIG_IWL3945=m +CONFIG_IWL4965=m +CONFIG_IWLDVM=m +CONFIG_IWLEGACY=m +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLEGACY_DEBUGFS=y +CONFIG_IWLMVM=m +CONFIG_IWLWIFI=m +# CONFIG_IWLWIFI_BCAST_FILTERING is not set +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLWIFI_OPMODE_MODULAR=y +CONFIG_IWMMXT=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBEVF_IPSEC=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_IPSEC=y +CONFIG_JAILHOUSE_GUEST=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_FSIA6B=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_PSXPAD_SPI=m +CONFIG_JOYSTICK_PSXPAD_SPI_FF=y +CONFIG_JOYSTICK_PXRC=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JSA1212=m +CONFIG_JUMP_LABEL_FEATURE_CHECKS=y +# CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is not set +CONFIG_K3_DMA=m +CONFIG_K3_RTI_WATCHDOG=m +CONFIG_K3_THERMAL=m +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_BASE_RELATIVE=y +# CONFIG_KASAN is not set +CONFIG_KASAN_STACK=1 +CONFIG_KCMP=y +# CONFIG_KCOV is not set +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_DEFAULT_ENABLE=0x1 +CONFIG_KDB_KEYBOARD=y +CONFIG_KEMPLD_WDT=m +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y +# CONFIG_KERNEL_NOBP is not set +CONFIG_KERNEL_START=0xc000000000000000 +# CONFIG_KERNEL_UNCOMPRESSED is not set +# CONFIG_KERNEL_XZ is not set +CONFIG_KERNFS=y +CONFIG_KEXEC=y +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_KEXEC_CORE=y +CONFIG_KEXEC_ELF=y +# CONFIG_KEXEC_IMAGE_VERIFY_SIG is not set +CONFIG_KEXEC_JUMP=y +CONFIG_KEXEC_SIG=y +# CONFIG_KEXEC_SIG_FORCE is not set +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_APPLESPI=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_BCM=m +CONFIG_KEYBOARD_CAP11XX=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_DLINK_DIR685=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_IMX=m +CONFIG_KEYBOARD_IMX_SC_KEY=m +CONFIG_KEYBOARD_IQS62X=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MCS=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_MTK_PMIC=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_NVEC=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_PMIC8XXX=m +CONFIG_KEYBOARD_QT1050=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_SNVS_PWRKEY=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +# CONFIG_KEYBOARD_SUN4I_LRADC is not set +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TEGRA=m +CONFIG_KEYBOARD_TM2_TOUCHKEY=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_REQUEST_CACHE=y +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_KEY_NOTIFICATIONS=y +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KGDB_LOW_LEVEL_TRAP=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KMSG_IDS=y +CONFIG_KMX61=m +CONFIG_KPC2000=y +CONFIG_KPC2000_CORE=m +CONFIG_KPC2000_DMA=m +CONFIG_KPC2000_I2C=m +CONFIG_KPC2000_SPI=m +CONFIG_KPROBES=y +CONFIG_KPROBES_ON_FTRACE=y +# CONFIG_KPROBES_SANITY_TEST is not set +CONFIG_KPROBE_EVENTS=y +# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +CONFIG_KPSS_XCC=m +CONFIG_KRAITCC=m +CONFIG_KRAIT_CLOCKS=y +CONFIG_KRAIT_L2_ACCESSORS=y +CONFIG_KRETPROBES=y +CONFIG_KS0108=m +CONFIG_KS0108_DELAY=2 +CONFIG_KS0108_PORT=0x378 +CONFIG_KS7010=m +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KSM=y +CONFIG_KSZ884X_PCI=m +# CONFIG_KUNIT is not set +CONFIG_KUSER_HELPERS=y +CONFIG_KVM_AMD=m +CONFIG_KVM_AMD_SEV=y +CONFIG_KVM_ARM_PMU=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_KVM_ASYNC_PF_SYNC=y +CONFIG_KVM_BOOK3S_64=m +CONFIG_KVM_BOOK3S_64_HANDLER=y +CONFIG_KVM_BOOK3S_64_HV=m +CONFIG_KVM_BOOK3S_64_PR=m +CONFIG_KVM_BOOK3S_HANDLER=y +# CONFIG_KVM_BOOK3S_HV_EXIT_TIMING is not set +CONFIG_KVM_BOOK3S_HV_POSSIBLE=y +CONFIG_KVM_BOOK3S_PR_POSSIBLE=y +CONFIG_KVM_COMPAT=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INDIRECT_VECTORS=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_MMIO=y +# CONFIG_KVM_MMU_AUDIT is not set +# CONFIG_KVM_S390_UCONTROL is not set +CONFIG_KVM_VFIO=y +CONFIG_KVM_WERROR=y +CONFIG_KVM_XICS=y +CONFIG_KVM_XIVE=y +CONFIG_KXCJK1013=m +CONFIG_KXSD9=m +CONFIG_KXSD9_I2C=m +CONFIG_KXSD9_SPI=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_ETH=m +CONFIG_L2TP_IP=m +CONFIG_L2TP_V3=y +CONFIG_LAN743X=m +CONFIG_LANMEDIA=m +CONFIG_LAPBETHER=m +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_OTM3225A=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCS=m +CONFIG_LDISC_AUTOLOAD=y +# CONFIG_LDM_DEBUG is not set +# CONFIG_LD_DEAD_CODE_DATA_ELIMINATION is not set +# CONFIG_LD_HEAD_STUB_CATCH is not set +CONFIG_LD_VERSION=235010000 +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_AAT1290=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_AN30259A=m +CONFIG_LEDS_APU=m +CONFIG_LEDS_AS3645A=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_AW2013=m +CONFIG_LEDS_BCM6328=m +CONFIG_LEDS_BCM6358=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_CPCAP=m +CONFIG_LEDS_CR0014114=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_EL15203000=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_IS31FL319X=m +CONFIG_LEDS_IS31FL32XX=m +CONFIG_LEDS_KTD2692=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3532=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3601X=m +CONFIG_LEDS_LM36274=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LM3692X=m +CONFIG_LEDS_LM3697=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP3952=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP5562=m +CONFIG_LEDS_LP55XX_COMMON=m +CONFIG_LEDS_LP8501=m +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX77650=m +CONFIG_LEDS_MAX77693=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_MENF21BMC=m +CONFIG_LEDS_MLXCPLD=m +CONFIG_LEDS_MLXREG=m +CONFIG_LEDS_MT6323=m +CONFIG_LEDS_NIC78BX=m +CONFIG_LEDS_NS2=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA955X_GPIO=y +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_PM8058=m +CONFIG_LEDS_POWERNV=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_SC27XX_BLTC=m +CONFIG_LEDS_SGM3140=m +CONFIG_LEDS_SPI_BYTE=m +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TI_LMU_COMMON=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_TPS6105X=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_ACTIVITY=m +CONFIG_LEDS_TRIGGER_AUDIO=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_PATTERN=m +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_USER=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LED_TRIGGER_PHY=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +# CONFIG_LEGACY_VSYSCALL_EMULATE is not set +# CONFIG_LEGACY_VSYSCALL_NONE is not set +CONFIG_LEGACY_VSYSCALL_XONLY=y +CONFIG_LG_LAPTOP=m +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +CONFIG_LIB80211_CRYPT_WEP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_LIBCRC32C=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_CS=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_LIBFDT=y +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIDAR_LITE_V2=m +CONFIG_LINEAR_RANGES=y +CONFIG_LIQUIDIO=m +CONFIG_LIQUIDIO_VF=m +CONFIG_LIRC=y +CONFIG_LIVEPATCH=y +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LMP91000=m +CONFIG_LOAD_IPL_KEYS=y +CONFIG_LOAD_PPC_KEYS=y +CONFIG_LOAD_UEFI_KEYS=y +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_LOCK_DEBUGGING_SUPPORT=y +CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y +# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set +# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set +CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y +# CONFIG_LOCK_EVENT_COUNTS is not set +CONFIG_LOCK_SPIN_ON_OWNER=y +# CONFIG_LOCK_STAT is not set +# CONFIG_LOCK_TORTURE_TEST is not set +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +# CONFIG_LOGO is not set +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_LOOPBACK_TARGET=m +CONFIG_LP8788_ADC=m +CONFIG_LPARCFG=y +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LSM="lockdown,yama,integrity,apparmor" +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LS_EXTIRQ=y +CONFIG_LS_SCFG_MSI=y +CONFIG_LTC1660=m +CONFIG_LTC2471=m +CONFIG_LTC2485=m +CONFIG_LTC2496=m +CONFIG_LTC2497=m +CONFIG_LTC2632=m +CONFIG_LTC2983=m +CONFIG_LTE_GDM724X=m +CONFIG_LTPC=m +CONFIG_LTR501=m +CONFIG_LV0104CS=m +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_LXT_PHY=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_M62332=m +CONFIG_MAC80211=m +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_MAC80211_HAS_RC=y +CONFIG_MAC80211_HWSIM=m +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC80211_MESSAGE_TRACING=y +CONFIG_MAC80211_RC_DEFAULT="minstrel_ht" +CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACB_PCI=m +CONFIG_MACB_USE_HWSTAMP=y +CONFIG_MACHZ_WDT=m +CONFIG_MACH_ARMADA_370=y +CONFIG_MACH_ARMADA_375=y +CONFIG_MACH_ARMADA_38X=y +CONFIG_MACH_ARMADA_39X=y +CONFIG_MACH_ARMADA_XP=y +# CONFIG_MACH_ARTPEC6 is not set +CONFIG_MACH_ASPEED_G6=y +CONFIG_MACH_BERLIN_BG2=y +CONFIG_MACH_BERLIN_BG2CD=y +CONFIG_MACH_BERLIN_BG2Q=y +CONFIG_MACH_DOVE=y +CONFIG_MACH_MESON6=y +CONFIG_MACH_MESON8=y +CONFIG_MACH_MT2701=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT7623=y +CONFIG_MACH_MT7629=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +CONFIG_MACH_MVEBU_ANY=y +CONFIG_MACH_MVEBU_V7=y +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACSEC=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MADERA_IRQ=m +CONFIG_MAG3110=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_MAILBOX_TEST=m +CONFIG_MANAGER_SBS=m +CONFIG_MANDATORY_FILE_LOCKING=y +CONFIG_MANTIS_CORE=m +CONFIG_MAPPING_DIRTY_HELPERS=y +# CONFIG_MARCH_Z10 is not set +CONFIG_MARCH_Z13=y +# CONFIG_MARCH_Z14 is not set +# CONFIG_MARCH_Z15 is not set +CONFIG_MARCH_Z15_TUNE=y +# CONFIG_MARCH_Z196 is not set +# CONFIG_MARCH_Z900 is not set +# CONFIG_MARCH_Z990 is not set +# CONFIG_MARCH_Z9_109 is not set +# CONFIG_MARCH_ZEC12 is not set +CONFIG_MARVELL_10G_PHY=m +CONFIG_MARVELL_PHY=m +# CONFIG_MATOM is not set +CONFIG_MAX1027=m +CONFIG_MAX11100=m +CONFIG_MAX1118=m +CONFIG_MAX1241=m +CONFIG_MAX1363=m +CONFIG_MAX30100=m +CONFIG_MAX30102=m +CONFIG_MAX31856=m +CONFIG_MAX44000=m +CONFIG_MAX44009=m +CONFIG_MAX517=m +CONFIG_MAX5432=m +CONFIG_MAX5481=m +CONFIG_MAX5487=m +CONFIG_MAX5821=m +CONFIG_MAX77620_THERMAL=m +CONFIG_MAX77620_WATCHDOG=m +CONFIG_MAX8925_POWER=m +CONFIG_MAX9611=m +CONFIG_MAXIM_THERMOCOUPLE=m +CONFIG_MAXSMP=y +CONFIG_MAX_PHYSMEM_BITS=46 +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MB1232=m +CONFIG_MC3230=m +CONFIG_MCB_LPC=m +CONFIG_MCB_PCI=m +# CONFIG_MCORE2 is not set +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP3911=m +CONFIG_MCP4018=m +CONFIG_MCP41010=m +CONFIG_MCP4131=m +CONFIG_MCP4531=m +CONFIG_MCP4725=m +CONFIG_MCP4922=m +CONFIG_MCPM=y +CONFIG_MCPM_QUAD_CLUSTER=y +CONFIG_MD=y +CONFIG_MDIO=m +CONFIG_MDIO_ASPEED=m +# CONFIG_MDIO_BCM_IPROC is not set +CONFIG_MDIO_BUS_MUX_BCM_IPROC=y +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_BUS_MUX_MESON_G12A=m +CONFIG_MDIO_BUS_MUX_MMIOREG=m +CONFIG_MDIO_BUS_MUX_MULTIPLEXER=m +CONFIG_MDIO_CAVIUM=m +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_HISI_FEMAC=m +CONFIG_MDIO_I2C=m +CONFIG_MDIO_IPQ4019=m +CONFIG_MDIO_IPQ8064=m +CONFIG_MDIO_MVUSB=m +CONFIG_MDIO_OCTEON=m +# CONFIG_MDIO_SUN4I is not set +CONFIG_MDIO_XGENE=m +CONFIG_MDM_GCC_9615=m +CONFIG_MDM_LCC_9615=m +CONFIG_MD_AUTODETECT=y +CONFIG_MD_CLUSTER=m +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MEDIATEK_MT6577_AUXADC=m +CONFIG_MEDIATEK_WATCHDOG=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_CEC_RC=y +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_MEDIA_COMMON_OPTIONS=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_CONTROLLER_DVB=y +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_TEST_SUPPORT=y +CONFIG_MEDIA_TUNER=m +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MELLANOX_PLATFORM=y +CONFIG_MEMBARRIER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMFD_CREATE=y +CONFIG_MEMORY_BALLOON=y +CONFIG_MEMORY_FAILURE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +CONFIG_MEMREGION=y +# CONFIG_MEMSTICK_DEBUG is not set +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_PCI=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_MEMSTICK_TIFM_MS=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MEMTEST=y +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_MENZ069_WATCHDOG=m +CONFIG_MEN_A21_WDT=m +CONFIG_MEN_Z188_ADC=m +CONFIG_MESON6_TIMER=y +CONFIG_MESON_CANVAS=m +CONFIG_MESON_CLK_MEASURE=y +CONFIG_MESON_EE_PM_DOMAINS=y +CONFIG_MESON_EFUSE=m +CONFIG_MESON_GXBB_WATCHDOG=m +CONFIG_MESON_GXL_PHY=m +CONFIG_MESON_GX_PM_DOMAINS=y +CONFIG_MESON_GX_SOCINFO=y +CONFIG_MESON_IRQ_GPIO=y +CONFIG_MESON_MX_EFUSE=m +CONFIG_MESON_MX_SOCINFO=y +CONFIG_MESON_SARADC=m +CONFIG_MESON_SECURE_PM_DOMAINS=y +CONFIG_MESON_SM=y +CONFIG_MESON_WATCHDOG=m +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +# CONFIG_MFD_AC100 is not set +CONFIG_MFD_ACT8945A=m +CONFIG_MFD_ALTERA_SYSMGR=y +CONFIG_MFD_ARIZONA=y +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_AS3722=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_ATMEL_FLEXCOM=m +CONFIG_MFD_ATMEL_HLCDC=m +CONFIG_MFD_AXP20X=m +CONFIG_MFD_AXP20X_RSB=m +CONFIG_MFD_CORE=y +CONFIG_MFD_CPCAP=m +CONFIG_MFD_CROS_EC=m +CONFIG_MFD_CROS_EC_DEV=m +CONFIG_MFD_CS47L15=y +CONFIG_MFD_CS47L24=y +CONFIG_MFD_CS47L35=y +CONFIG_MFD_CS47L85=y +CONFIG_MFD_CS47L90=y +CONFIG_MFD_CS47L92=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DLN2=m +CONFIG_MFD_EXYNOS_LPASS=m +CONFIG_MFD_GATEWORKS_GSC=m +CONFIG_MFD_HI6421_PMIC=m +CONFIG_MFD_HI655X_PMIC=m +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_MSIC=y +CONFIG_MFD_INTEL_PMC_BXT=m +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m +CONFIG_MFD_LOCHNAGAR=y +CONFIG_MFD_LP8788=y +CONFIG_MFD_MADERA_I2C=m +CONFIG_MFD_MADERA_SPI=m +CONFIG_MFD_MAX77620=y +CONFIG_MFD_MAX77650=m +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77843=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_NVEC=m +CONFIG_MFD_OMAP_USB_HOST=y +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PM8XXX=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RK808=m +CONFIG_MFD_RN5T618=m +CONFIG_MFD_ROHM_BD70528=m +CONFIG_MFD_ROHM_BD71828=m +CONFIG_MFD_ROHM_BD718XX=m +CONFIG_MFD_SC27XX_PMIC=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SMSC=y +CONFIG_MFD_SPMI_PMIC=m +CONFIG_MFD_STMFX=m +CONFIG_MFD_STMPE=y +CONFIG_MFD_STPMIC1=m +CONFIG_MFD_SUN4I_GPADC=m +CONFIG_MFD_SUN6I_PRCM=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TI_LP87565=m +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65218=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS68470=y +CONFIG_MFD_TPS80031=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_WM5102=y +CONFIG_MFD_WM5110=y +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8400=y +CONFIG_MFD_WM8997=y +CONFIG_MFD_WM8998=y +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCHIP_PIT64B=y +CONFIG_MICROCHIP_T1_PHY=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MICROSEMI_PHY=m +CONFIG_MIC_COSM=m +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MIGRATION=y +CONFIG_MILBEAUT_HDMAC=m +CONFIG_MILBEAUT_TIMER=y +CONFIG_MILBEAUT_XDMAC=m +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISC_RTSX=m +CONFIG_MISC_RTSX_USB=m +CONFIG_MISDN=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_HDLC=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m +CONFIG_MISDN_L1OIP=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_W6692=m +# CONFIG_MK8 is not set +CONFIG_MKISS=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_CORE_GEN2=y +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_ACCEL=y +CONFIG_MLX5_CLS_ACT=y +CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_CORE_EN_DCB=y +CONFIG_MLX5_CORE_IPOIB=y +CONFIG_MLX5_EN_ARFS=y +CONFIG_MLX5_EN_IPSEC=y +CONFIG_MLX5_EN_RXNFC=y +CONFIG_MLX5_EN_TLS=y +CONFIG_MLX5_ESWITCH=y +CONFIG_MLX5_FPGA=y +CONFIG_MLX5_FPGA_IPSEC=y +CONFIG_MLX5_FPGA_TLS=y +CONFIG_MLX5_INFINIBAND=m +CONFIG_MLX5_MPFS=y +CONFIG_MLX5_SW_STEERING=y +CONFIG_MLX5_TC_CT=y +CONFIG_MLX5_TLS=y +CONFIG_MLX90614=m +CONFIG_MLX90632=m +CONFIG_MLXBF_BOOTCTL=m +CONFIG_MLXBF_TMFIFO=m +CONFIG_MLXFW=m +CONFIG_MLXREG_HOTPLUG=m +CONFIG_MLXREG_IO=m +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_CORE_HWMON=y +CONFIG_MLXSW_CORE_THERMAL=y +CONFIG_MLXSW_MINIMAL=m +CONFIG_MLXSW_PCI=m +CONFIG_MLXSW_SPECTRUM=m +CONFIG_MLXSW_SPECTRUM_DCB=y +CONFIG_MLXSW_SWITCHIB=m +CONFIG_MLXSW_SWITCHX2=m +CONFIG_MLX_PLATFORM=m +CONFIG_MLX_WDT=m +CONFIG_MMA7455=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +CONFIG_MMA9551=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9553=m +CONFIG_MMC35240=m +CONFIG_MMCONF_FAM10H=y +CONFIG_MMC_ALCOR=m +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BCM2835=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_CAVIUM_THUNDERX=m +CONFIG_MMC_CB710=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_DW=m +CONFIG_MMC_DW_BLUEFIELD=m +CONFIG_MMC_DW_EXYNOS=m +CONFIG_MMC_DW_HI3798CV200=m +CONFIG_MMC_DW_K3=m +CONFIG_MMC_DW_PCI=m +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_MMC_MESON_GX=m +CONFIG_MMC_MESON_MX_SDHC=m +CONFIG_MMC_MESON_MX_SDIO=m +CONFIG_MMC_MTK=m +CONFIG_MMC_MVSDIO=m +CONFIG_MMC_MXC=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_OWL=m +CONFIG_MMC_QCOM_DML=y +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_AM654=m +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y +CONFIG_MMC_SDHCI_BRCMSTB=m +CONFIG_MMC_SDHCI_CADENCE=m +CONFIG_MMC_SDHCI_DOVE=m +CONFIG_MMC_SDHCI_EXTERNAL_DMA=y +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_IPROC=m +CONFIG_MMC_SDHCI_MILBEAUT=m +CONFIG_MMC_SDHCI_MSM=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_ASPEED=m +CONFIG_MMC_SDHCI_OF_AT91=m +CONFIG_MMC_SDHCI_OF_DWCMSHC=m +CONFIG_MMC_SDHCI_OF_ESDHC=m +CONFIG_MMC_SDHCI_OF_HLWD=m +CONFIG_MMC_SDHCI_OMAP=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MMC_SDHCI_S3C=m +CONFIG_MMC_SDHCI_S3C_DMA=y +CONFIG_MMC_SDHCI_SPRD=m +CONFIG_MMC_SDHCI_TEGRA=m +CONFIG_MMC_SDHCI_XENON=m +CONFIG_MMC_SDHI=m +CONFIG_MMC_SDHI_INTERNAL_DMAC=m +CONFIG_MMC_SDHI_SYS_DMAC=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_SH_MMCIF=m +CONFIG_MMC_SPI=m +CONFIG_MMC_STM32_SDMMC=y +CONFIG_MMC_SUNXI=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_TMIO=m +CONFIG_MMC_TMIO_CORE=m +CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_UNIPHIER=m +CONFIG_MMC_USDHI6ROL0=m +CONFIG_MMC_USHC=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_WBSD=m +CONFIG_MMIOTRACE=y +# CONFIG_MMIOTRACE_TEST is not set +CONFIG_MMIOWB=y +CONFIG_MMU=y +CONFIG_MMU_GATHER_NO_GATHER=y +CONFIG_MMU_GATHER_PAGE_SIZE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_NOTIFIER=y +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_MODULES=y +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MODULES_USE_ELF_RELA=y +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_REL_CRCS=y +CONFIG_MODULE_SIG=y +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_FORMAT=y +CONFIG_MODULE_SIG_HASH="sha512" +CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" +# CONFIG_MODULE_SIG_SHA1 is not set +# CONFIG_MODULE_SIG_SHA224 is not set +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +CONFIG_MODULE_SIG_SHA512=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MONREADER=m +CONFIG_MONWRITER=m +CONFIG_MOST_CDEV=m +CONFIG_MOST_COMPONENTS=m +CONFIG_MOST_DIM2=m +CONFIG_MOST_I2C=m +CONFIG_MOST_NET=m +CONFIG_MOST_SOUND=m +CONFIG_MOST_USB=m +CONFIG_MOST_VIDEO=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_MOXTET=m +CONFIG_MP2629_ADC=m +CONFIG_MPIC=y +# CONFIG_MPIC_MSGR is not set +CONFIG_MPILIB=y +CONFIG_MPL115=m +CONFIG_MPL115_I2C=m +CONFIG_MPL115_SPI=m +CONFIG_MPL3115=m +CONFIG_MPLS=y +CONFIG_MPLS_IPTUNNEL=m +CONFIG_MPLS_ROUTING=m +CONFIG_MPROFILE_KERNEL=y +# CONFIG_MPSC is not set +CONFIG_MPTCP=y +# CONFIG_MPTCP_HMAC_TEST is not set +CONFIG_MPTCP_IPV6=y +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=m +CONFIG_MRP=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=m +CONFIG_MS5637=m +CONFIG_MSCC_OCELOT_SWITCH=m +CONFIG_MSCC_OCELOT_SWITCH_OCELOT=m +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +CONFIG_MSM_GCC_8660=m +CONFIG_MSM_GCC_8916=m +CONFIG_MSM_GCC_8939=m +CONFIG_MSM_GCC_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_GCC_8994=m +CONFIG_MSM_GCC_8996=m +CONFIG_MSM_GCC_8998=m +CONFIG_MSM_GPUCC_8998=m +# CONFIG_MSM_IOMMU is not set +CONFIG_MSM_LCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_MMCC_8974=m +CONFIG_MSM_MMCC_8996=m +CONFIG_MSM_MMCC_8998=m +CONFIG_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=m +CONFIG_MT7601U=m +CONFIG_MT7603E=m +CONFIG_MT7615E=m +CONFIG_MT7615_COMMON=m +CONFIG_MT7622_WMAC=y +CONFIG_MT7663U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76_USB=m +CONFIG_MT76x02_LIB=m +CONFIG_MT76x02_USB=m +CONFIG_MT76x0E=m +CONFIG_MT76x0U=m +CONFIG_MT76x0_COMMON=m +CONFIG_MT76x2E=m +CONFIG_MT76x2U=m +CONFIG_MT76x2_COMMON=m +CONFIG_MT7915E=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BCM47XXSFLASH=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_OTP=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DOCG3 is not set +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_HYPERBUS=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_IMPA7=m +CONFIG_MTD_INTEL_VR_NOR=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_LPDDR=m +CONFIG_MTD_LPDDR2_NVM=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_MCHP23K256=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND_ARASAN=m +CONFIG_MTD_NAND_BRCMNAND=m +CONFIG_MTD_NAND_CADENCE=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_DT=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_ECC_SW_BCH=y +# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set +CONFIG_MTD_NAND_FSL_IFC=m +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_GPMI_NAND=m +CONFIG_MTD_NAND_HISI504=m +CONFIG_MTD_NAND_MARVELL=m +CONFIG_MTD_NAND_MESON=m +CONFIG_MTD_NAND_MTK=m +CONFIG_MTD_NAND_MXC=m +CONFIG_MTD_NAND_MXIC=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +CONFIG_MTD_NAND_OMAP_BCH_BUILD=y +CONFIG_MTD_NAND_ORION=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_QCOM=m +CONFIG_MTD_NAND_RICOH=m +# CONFIG_MTD_NAND_SUNXI is not set +CONFIG_MTD_NAND_TEGRA=m +CONFIG_MTD_NAND_TMIO=m +# CONFIG_MTD_NAND_VF610_NFC is not set +CONFIG_MTD_NETtel=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_GENERIC=m +CONFIG_MTD_ONENAND_OMAP2=m +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_OOPS=m +# CONFIG_MTD_PARTITIONED_MASTER is not set +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_GPIO_ADDR=y +CONFIG_MTD_PHYSMAP_IXP4XX=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_POWERNV_FLASH=m +CONFIG_MTD_PSTORE=m +CONFIG_MTD_QINFO_PROBE=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SHARPSL_PARTS=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_SPI_NAND=m +CONFIG_MTD_SPI_NOR=m +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +CONFIG_MTD_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTK_CMDQ=m +CONFIG_MTK_CMDQ_MBOX=m +CONFIG_MTK_CQDMA=m +# CONFIG_MTK_EFUSE is not set +CONFIG_MTK_HSDMA=m +CONFIG_MTK_INFRACFG=y +# CONFIG_MTK_IOMMU is not set +# CONFIG_MTK_IOMMU_V1 is not set +CONFIG_MTK_MMSYS=y +CONFIG_MTK_PMIC_WRAP=m +CONFIG_MTK_SCP=m +CONFIG_MTK_SCPSYS=y +CONFIG_MTK_SMI=y +CONFIG_MTK_THERMAL=m +CONFIG_MTK_TIMER=y +CONFIG_MTK_UART_APDMA=m +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_MULTIPLEXER=m +CONFIG_MULTIUSER=y +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MUX_ADG792A=m +CONFIG_MUX_ADGS1408=m +CONFIG_MUX_GPIO=m +CONFIG_MUX_MMIO=m +CONFIG_MV643XX_ETH=m +CONFIG_MVEBU_CLK_COMMON=y +CONFIG_MVEBU_CLK_COREDIV=y +CONFIG_MVEBU_CLK_CPU=y +CONFIG_MVEBU_DEVBUS=y +CONFIG_MVEBU_GICP=y +CONFIG_MVEBU_ICU=y +CONFIG_MVEBU_MBUS=y +CONFIG_MVEBU_ODMI=y +CONFIG_MVEBU_PIC=y +CONFIG_MVEBU_SEI=y +CONFIG_MVMDIO=m +CONFIG_MVNETA=m +# CONFIG_MVNETA_BM_ENABLE is not set +CONFIG_MVPP2=m +CONFIG_MV_XOR=y +CONFIG_MV_XOR_V2=y +CONFIG_MWAVE=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_MX3_IPU=y +CONFIG_MX3_IPU_IRQS=4 +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_MXC_CLK=y +CONFIG_MXC_CLK_SCU=y +CONFIG_MXC_TZIC=y +CONFIG_MXM_WMI=m +CONFIG_MXS_DMA=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=m +CONFIG_NATSEMI=m +CONFIG_NAU7802=m +CONFIG_NBPFAXI_DMA=m +CONFIG_NCSI_OEM_CMD_GET_MAC=y +CONFIG_NDC_DIS_DYNAMIC_CACHING=y +CONFIG_ND_BLK=m +CONFIG_ND_BTT=m +CONFIG_ND_CLAIM=y +CONFIG_ND_PFN=m +CONFIG_NE2K_PCI=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETDEVSIM=m +# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETIUCV=m +CONFIG_NETLABEL=y +CONFIG_NETLINK_DIAG=m +CONFIG_NETPOLL=y +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETXEN_NIC=m +CONFIG_NET_9P=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NET_9P_RDMA=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_XEN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_CT=m +CONFIG_NET_ACT_CTINFO=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_GATE=m +# CONFIG_NET_ACT_IFE is not set +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_MPLS=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_SKBMOD=m +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CORE=y +CONFIG_NET_DEVLINK=y +CONFIG_NET_DROP_MONITOR=y +CONFIG_NET_DSA=m +CONFIG_NET_DSA_AR9331=m +CONFIG_NET_DSA_BCM_SF2=m +CONFIG_NET_DSA_LANTIQ_GSWIP=m +# CONFIG_NET_DSA_LOOP is not set +CONFIG_NET_DSA_MICROCHIP_KSZ8795=m +CONFIG_NET_DSA_MICROCHIP_KSZ8795_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m +CONFIG_NET_DSA_MT7530=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y +CONFIG_NET_DSA_MV88E6XXX_PTP=y +CONFIG_NET_DSA_QCA8K=m +CONFIG_NET_DSA_REALTEK_SMI=m +CONFIG_NET_DSA_SJA1105=m +CONFIG_NET_DSA_SJA1105_PTP=y +CONFIG_NET_DSA_SJA1105_TAS=y +CONFIG_NET_DSA_SJA1105_VL=y +CONFIG_NET_DSA_SMSC_LAN9303=m +CONFIG_NET_DSA_SMSC_LAN9303_I2C=m +CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m +CONFIG_NET_DSA_TAG_8021Q=m +CONFIG_NET_DSA_TAG_AR9331=m +CONFIG_NET_DSA_TAG_BRCM=m +CONFIG_NET_DSA_TAG_BRCM_COMMON=m +CONFIG_NET_DSA_TAG_BRCM_PREPEND=m +CONFIG_NET_DSA_TAG_DSA=m +CONFIG_NET_DSA_TAG_EDSA=m +CONFIG_NET_DSA_TAG_GSWIP=m +CONFIG_NET_DSA_TAG_KSZ=m +CONFIG_NET_DSA_TAG_LAN9303=m +CONFIG_NET_DSA_TAG_MTK=m +CONFIG_NET_DSA_TAG_OCELOT=m +CONFIG_NET_DSA_TAG_QCA=m +CONFIG_NET_DSA_TAG_SJA1105=m +CONFIG_NET_DSA_TAG_TRAILER=m +CONFIG_NET_DSA_VITESSE_VSC73XX=m +CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM=m +CONFIG_NET_DSA_VITESSE_VSC73XX_SPI=m +CONFIG_NET_EGRESS=y +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_FAILOVER=m +CONFIG_NET_FC=y +CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_NET_IFE=m +CONFIG_NET_INGRESS=y +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPIP=m +CONFIG_NET_IPVTI=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_NET_MPLS_GSO=m +CONFIG_NET_NCSI=y +CONFIG_NET_NS=y +CONFIG_NET_NSH=m +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NET_REDIRECT=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_CODEL=m +# CONFIG_NET_SCH_DEFAULT is not set +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_ETS=m +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_FQ_PIE=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_SKBPRIO=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SOCK_MSG=y +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_TC_SKB_EXT=y +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TULIP=y +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ALACRITECH=y +CONFIG_NET_VENDOR_ALLWINNER=y +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_NET_VENDOR_AURORA=y +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_CORTINA=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +# CONFIG_NET_VENDOR_MEDIATEK is not set +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_NETERION=y +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NET_VENDOR_PACKET_ENGINES=y +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_NET_VENDOR_SYNOPSYS=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NET_VRF=m +CONFIG_NET_XGENE=m +CONFIG_NET_XGENE_V2=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_HCI=m +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MICROREAD_MEI=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_MRVL_SPI=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=m +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_PN532_UART=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN533_I2C=m +CONFIG_NFC_PN533_USB=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_SIM=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST95HF=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +CONFIG_NFC_TRF7970A=m +# CONFIG_NFIT_SECURITY_DEBUG is not set +CONFIG_NFP_APP_ABM_NIC=y +CONFIG_NFP_APP_FLOWER=y +# CONFIG_NFP_DEBUG is not set +CONFIG_NFSD=m +CONFIG_NFSD_BLOCKLAYOUT=y +CONFIG_NFSD_FLEXFILELAYOUT=y +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_SCSILAYOUT=y +CONFIG_NFSD_V2_ACL=y +CONFIG_NFSD_V3=y +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_V4_SECURITY_LABEL=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +CONFIG_NFS_FS=m +CONFIG_NFS_FSCACHE=y +CONFIG_NFS_SWAP=y +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_NFS_V4_1_MIGRATION=y +CONFIG_NFS_V4_2=y +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CT=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_HASH=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_NAT=m +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_OSF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_XFRM=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE_IPV4=m +CONFIG_NF_FLOW_TABLE_IPV6=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_BRIDGE=m +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_LOG_NETDEV=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_IPV4=y +CONFIG_NF_TABLES_IPV6=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=m +CONFIG_NI_XGE_MANAGEMENT_ENET=m +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NLATTR=y +CONFIG_NLMON=m +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_NMI_IPI=y +CONFIG_NOA1305=m +CONFIG_NOKIA_MODEM=m +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NOP_TRACER=y +CONFIG_NORTEL_HERMES=m +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +CONFIG_NO_HZ=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_NO_IOPORT_MAP=y +CONFIG_NPCM7XX_KCS_IPMI_BMC=m +CONFIG_NPCM7XX_TIMER=y +CONFIG_NPCM7XX_WATCHDOG=y +CONFIG_NPCM_ADC=m +CONFIG_NR_CPUS_DEFAULT=8192 +CONFIG_NR_CPUS_RANGE_BEGIN=8192 +CONFIG_NR_CPUS_RANGE_END=8192 +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +# CONFIG_NTB_AMD is not set +CONFIG_NTB_IDT=m +CONFIG_NTB_INTEL=m +CONFIG_NTB_MSI=y +# CONFIG_NTB_MSI_TEST is not set +CONFIG_NTB_NETDEV=m +CONFIG_NTB_PERF=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_SWITCHTEC=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_TRANSPORT=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +CONFIG_NULL_TTY=m +CONFIG_NUMA=y +CONFIG_NUMA_BALANCING=y +# CONFIG_NUMA_EMU is not set +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_NVDIMM_DAX=y +CONFIG_NVDIMM_KEYS=y +CONFIG_NVDIMM_PFN=y +CONFIG_NVEC_PAZ00=m +CONFIG_NVEC_POWER=m +CONFIG_NVM=y +CONFIG_NVMEM_BCM_OCOTP=m +CONFIG_NVMEM_IMX_IIM=m +CONFIG_NVMEM_IMX_OCOTP=m +CONFIG_NVMEM_IMX_OCOTP_SCU=m +CONFIG_NVMEM_REBOOT_MODE=m +CONFIG_NVMEM_SNVS_LPGPR=m +CONFIG_NVMEM_SPMI_SDAM=m +CONFIG_NVMEM_SUNXI_SID=m +CONFIG_NVMEM_SYSFS=y +# CONFIG_NVMEM_VF610_OCOTP is not set +CONFIG_NVMEM_ZYNQMP=y +CONFIG_NVME_CORE=m +CONFIG_NVME_FABRICS=m +CONFIG_NVME_FC=m +CONFIG_NVME_HWMON=y +CONFIG_NVME_MULTIPATH=y +CONFIG_NVME_RDMA=m +CONFIG_NVME_TARGET=m +CONFIG_NVME_TARGET_FC=m +# CONFIG_NVME_TARGET_FCLOOP is not set +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_TCP=m +CONFIG_NVME_TCP=m +CONFIG_NVM_PBLK=m +# CONFIG_NVM_PBLK_DEBUG is not set +CONFIG_NV_TCO=m +CONFIG_NXP_TJA11XX_PHY=m +CONFIG_N_HDLC=m +# CONFIG_OABI_COMPAT is not set +CONFIG_OBJAGG=m +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_OCFS2_DEBUG_MASKLOG=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCTEONTX2_AF=m +CONFIG_OCTEONTX2_MBOX=m +CONFIG_OCTEONTX2_PF=m +CONFIG_OCTEONTX2_VF=m +CONFIG_OCXL=m +CONFIG_OCXL_BASE=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_DMA_DEFAULT_COHERENT=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_FPGA_REGION=m +CONFIG_OF_GPIO=y +CONFIG_OF_IOMMU=y +CONFIG_OF_IRQ=y +CONFIG_OF_KOBJ=y +CONFIG_OF_MDIO=y +CONFIG_OF_NET=y +CONFIG_OF_NUMA=y +CONFIG_OF_OVERLAY=y +CONFIG_OF_PMEM=m +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OMAP2PLUS_MBOX=m +CONFIG_OMAP2_VRFB=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +# CONFIG_OMAP3_SDRC_AC_TIMING is not set +# CONFIG_OMAP3_THERMAL is not set +CONFIG_OMAP4_THERMAL=y +CONFIG_OMAP5_ERRATA_801819=y +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_CONTROL_PHY=m +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_GPMC=y +# CONFIG_OMAP_GPMC_DEBUG is not set +CONFIG_OMAP_INTERCONNECT=y +CONFIG_OMAP_INTERCONNECT_BARRIER=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOMMU_DEBUG is not set +CONFIG_OMAP_IRQCHIP=y +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_OMAP_OCP2SCP=m +CONFIG_OMAP_PACKAGE_CBB=y +CONFIG_OMAP_REMOTEPROC=m +# CONFIG_OMAP_REMOTEPROC_WATCHDOG is not set +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_SSI=m +CONFIG_OMAP_USB2=m +CONFIG_OMAP_WATCHDOG=m +# CONFIG_OPAL_CORE is not set +CONFIG_OPAL_PRD=m +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPROFILE=m +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OPT3001=m +CONFIG_OPTEE=m +CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1 +CONFIG_OPTPROBES=y +CONFIG_ORANGEFS_FS=m +CONFIG_ORINOCO_USB=m +CONFIG_ORION_IRQCHIP=y +CONFIG_ORION_TIMER=y +CONFIG_ORION_WATCHDOG=m +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_INDEX is not set +# CONFIG_OVERLAY_FS_METACOPY is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_XINO_AUTO=y +CONFIG_OWL_DMA=m +CONFIG_OWL_PM_DOMAINS=y +CONFIG_OWL_PM_DOMAINS_HELPER=y +CONFIG_OWL_TIMER=y +CONFIG_P54_COMMON=m +CONFIG_P54_LEDS=y +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_USB=m +CONFIG_PA12203001=m +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_PACK_STACK=y +CONFIG_PADATA=y +CONFIG_PAGE_COUNTER=y +# CONFIG_PAGE_OWNER is not set +CONFIG_PAGE_POISONING=y +CONFIG_PAGE_POISONING_NO_SANITY=y +CONFIG_PAGE_POISONING_ZERO=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_REPORTING=y +CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_PALMAS_GPADC=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_PANEL=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_PAPR_SCM=m +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_XXL=y +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARMAN=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_AX88796=m +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PANEL=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PARTITION_PERCPU=y +CONFIG_PATA_ACPI=m +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IMX=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OF_PLATFORM=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_PLATFORM=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TIMINGS=y +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PC300TOO=m +CONFIG_PC87413_WDT=m +CONFIG_PCC=y +CONFIG_PCCARD_NONSTATIC=y +CONFIG_PCENGINES_APU2=m +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +CONFIG_PCIE_AL=y +CONFIG_PCIE_ALTERA=y +CONFIG_PCIE_ALTERA_MSI=y +CONFIG_PCIE_ARMADA_8K=y +CONFIG_PCIE_BRCMSTB=m +CONFIG_PCIE_CADENCE=y +CONFIG_PCIE_CADENCE_EP=y +CONFIG_PCIE_CADENCE_HOST=y +CONFIG_PCIE_CADENCE_PLAT=y +CONFIG_PCIE_CADENCE_PLAT_EP=y +CONFIG_PCIE_CADENCE_PLAT_HOST=y +CONFIG_PCIE_DPC=y +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_EP=y +CONFIG_PCIE_DW_HOST=y +CONFIG_PCIE_DW_PLAT=y +CONFIG_PCIE_DW_PLAT_EP=y +CONFIG_PCIE_DW_PLAT_HOST=y +# CONFIG_PCIE_ECRC is not set +# CONFIG_PCIE_EDR is not set +CONFIG_PCIE_HISI_STB=y +CONFIG_PCIE_IPROC=m +CONFIG_PCIE_IPROC_MSI=y +CONFIG_PCIE_IPROC_PLATFORM=m +CONFIG_PCIE_KIRIN=y +# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set +CONFIG_PCIE_MEDIATEK=y +# CONFIG_PCIE_MOBIVEIL_PLAT is not set +CONFIG_PCIE_PME=y +CONFIG_PCIE_PTM=y +CONFIG_PCIE_QCOM=y +CONFIG_PCIE_RCAR=y +CONFIG_PCIE_RCAR_EP=y +CONFIG_PCIE_RCAR_HOST=y +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_EP=y +CONFIG_PCIE_ROCKCHIP_HOST=m +CONFIG_PCIE_UNIPHIER=y +CONFIG_PCIE_UNIPHIER_EP=y +CONFIG_PCIE_XILINX=y +CONFIG_PCIE_XILINX_NWL=y +CONFIG_PCI_AARDVARK=y +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +CONFIG_PCI_BRIDGE_EMUL=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_DRA7XX=y +CONFIG_PCI_DRA7XX_EP=y +CONFIG_PCI_DRA7XX_HOST=y +CONFIG_PCI_ECAM=y +CONFIG_PCI_ENDPOINT=y +CONFIG_PCI_ENDPOINT_CONFIGFS=y +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_PCI_EPF_TEST is not set +CONFIG_PCI_FTPCI100=y +CONFIG_PCI_HISI=y +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_HOST_THUNDER_ECAM=y +CONFIG_PCI_HOST_THUNDER_PEM=y +CONFIG_PCI_HYPERV=m +CONFIG_PCI_HYPERV_INTERFACE=m +CONFIG_PCI_IMX6=y +CONFIG_PCI_IOV=y +CONFIG_PCI_KEYSTONE=y +CONFIG_PCI_KEYSTONE_EP=y +CONFIG_PCI_KEYSTONE_HOST=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_LAYERSCAPE_EP=y +CONFIG_PCI_LOCKLESS_CONFIG=y +# CONFIG_PCI_MESON is not set +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_MVEBU=y +CONFIG_PCI_NR_FUNCTIONS=512 +# CONFIG_PCI_P2PDMA is not set +CONFIG_PCI_PF_STUB=m +CONFIG_PCI_RCAR_GEN2=y +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_SW_SWITCHTEC=m +CONFIG_PCI_SYSCALL=y +CONFIG_PCI_TEGRA=y +CONFIG_PCI_V3_SEMI=y +CONFIG_PCI_XEN=y +CONFIG_PCI_XGENE=y +CONFIG_PCI_XGENE_MSI=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PCSPKR_PLATFORM=y +CONFIG_PD6729=m +CONFIG_PDA_POWER=m +CONFIG_PDC_ADMA=m +CONFIG_PEAQ_WMI=m +# CONFIG_PERCPU_STATS is not set +# CONFIG_PERCPU_TEST is not set +CONFIG_PERF_EVENTS=y +# CONFIG_PERF_EVENTS_AMD_POWER is not set +CONFIG_PERF_EVENTS_INTEL_CSTATE=m +CONFIG_PERF_EVENTS_INTEL_RAPL=m +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PFAULT=y +CONFIG_PGSTE=y +CONFIG_PHYLINK=m +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PHY_AM654_SERDES=m +CONFIG_PHY_BCM_NS_USB2=m +CONFIG_PHY_BCM_NS_USB3=m +CONFIG_PHY_BCM_SR_PCIE=m +CONFIG_PHY_BCM_SR_USB=m +CONFIG_PHY_BERLIN_SATA=m +CONFIG_PHY_BERLIN_USB=m +CONFIG_PHY_BRCM_SATA=y +CONFIG_PHY_BRCM_USB=m +CONFIG_PHY_CADENCE_DPHY=m +CONFIG_PHY_CADENCE_SALVO=m +CONFIG_PHY_CADENCE_SIERRA=m +CONFIG_PHY_CADENCE_TORRENT=m +CONFIG_PHY_CPCAP_USB=m +CONFIG_PHY_DM816X_USB=m +CONFIG_PHY_EXYNOS5250_SATA=y +CONFIG_PHY_EXYNOS5250_USB2=y +CONFIG_PHY_EXYNOS5_USBDRD=m +CONFIG_PHY_EXYNOS_DP_VIDEO=y +CONFIG_PHY_EXYNOS_MIPI_VIDEO=y +CONFIG_PHY_EXYNOS_PCIE=y +CONFIG_PHY_FSL_IMX8MQ_USB=m +CONFIG_PHY_HI3660_USB=m +CONFIG_PHY_HI6220_USB=m +CONFIG_PHY_HISI_INNO_USB2=m +CONFIG_PHY_HISTB_COMBPHY=m +CONFIG_PHY_HIX5HD2_SATA=m +CONFIG_PHY_INTEL_EMMC=m +CONFIG_PHY_J721E_WIZ=m +CONFIG_PHY_MAPPHONE_MDM6600=m +CONFIG_PHY_MESON8B_USB2=m +CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=y +CONFIG_PHY_MESON_AXG_PCIE=y +CONFIG_PHY_MESON_G12A_USB2=m +CONFIG_PHY_MESON_G12A_USB3_PCIE=m +CONFIG_PHY_MESON_GXL_USB2=m +CONFIG_PHY_MIXEL_MIPI_DPHY=m +CONFIG_PHY_MTK_TPHY=m +CONFIG_PHY_MTK_UFS=m +CONFIG_PHY_MTK_XSPHY=m +CONFIG_PHY_MVEBU_A3700_COMPHY=m +CONFIG_PHY_MVEBU_A3700_UTMI=m +CONFIG_PHY_MVEBU_A38X_COMPHY=m +CONFIG_PHY_MVEBU_CP110_COMPHY=m +CONFIG_PHY_MVEBU_SATA=y +CONFIG_PHY_NS2_PCIE=y +CONFIG_PHY_NS2_USB_DRD=m +CONFIG_PHY_OCELOT_SERDES=m +CONFIG_PHY_QCOM_APQ8064_SATA=m +CONFIG_PHY_QCOM_IPQ4019_USB=m +CONFIG_PHY_QCOM_IPQ806X_SATA=m +CONFIG_PHY_QCOM_PCIE2=m +CONFIG_PHY_QCOM_QMP=m +CONFIG_PHY_QCOM_QUSB2=m +CONFIG_PHY_QCOM_UFS=m +CONFIG_PHY_QCOM_UFS_14NM=m +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m +CONFIG_PHY_QCOM_USB_HS_28NM=m +CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m +CONFIG_PHY_QCOM_USB_SS=m +CONFIG_PHY_RCAR_GEN2=m +CONFIG_PHY_RCAR_GEN3_PCIE=m +CONFIG_PHY_RCAR_GEN3_USB2=m +CONFIG_PHY_RCAR_GEN3_USB3=m +CONFIG_PHY_ROCKCHIP_DP=m +CONFIG_PHY_ROCKCHIP_DPHY_RX0=m +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_INNO_HDMI=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=m +CONFIG_PHY_ROCKCHIP_PCIE=m +CONFIG_PHY_ROCKCHIP_TYPEC=m +CONFIG_PHY_ROCKCHIP_USB=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN50I_USB3=m +CONFIG_PHY_SUN6I_MIPI_DPHY=m +# CONFIG_PHY_SUN9I_USB is not set +CONFIG_PHY_TEGRA_XUSB=m +CONFIG_PHY_TUSB1210=m +CONFIG_PHY_UNIPHIER_PCIE=m +CONFIG_PHY_UNIPHIER_USB2=m +CONFIG_PHY_UNIPHIER_USB3=m +CONFIG_PHY_XGENE=y +CONFIG_PI433=m +# CONFIG_PID_IN_CONTEXTIDR is not set +CONFIG_PID_NS=y +CONFIG_PINCONF=y +CONFIG_PINCTRL_AMD=y +CONFIG_PINCTRL_APQ8064=m +CONFIG_PINCTRL_APQ8084=m +CONFIG_PINCTRL_ARMADA_370=y +CONFIG_PINCTRL_ARMADA_375=y +CONFIG_PINCTRL_ARMADA_37XX=y +CONFIG_PINCTRL_ARMADA_38X=y +CONFIG_PINCTRL_ARMADA_39X=y +CONFIG_PINCTRL_ARMADA_AP806=y +CONFIG_PINCTRL_ARMADA_CP110=y +CONFIG_PINCTRL_ARMADA_XP=y +CONFIG_PINCTRL_AS370=y +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_ASPEED=y +CONFIG_PINCTRL_ASPEED_G6=y +CONFIG_PINCTRL_AXP209=m +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BCM2835=y +CONFIG_PINCTRL_BERLIN=y +CONFIG_PINCTRL_BERLIN_BG2=y +CONFIG_PINCTRL_BERLIN_BG2CD=y +CONFIG_PINCTRL_BERLIN_BG2Q=y +CONFIG_PINCTRL_BERLIN_BG4CT=y +CONFIG_PINCTRL_BM1880=y +CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_CANNONLAKE=m +CONFIG_PINCTRL_CEDARFORK=m +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_CS47L15=y +CONFIG_PINCTRL_CS47L35=y +CONFIG_PINCTRL_CS47L85=y +CONFIG_PINCTRL_CS47L90=y +CONFIG_PINCTRL_CS47L92=y +CONFIG_PINCTRL_DA9062=m +CONFIG_PINCTRL_DENVERTON=m +CONFIG_PINCTRL_DOVE=y +CONFIG_PINCTRL_EXYNOS=y +CONFIG_PINCTRL_EXYNOS_ARM=y +CONFIG_PINCTRL_GEMINILAKE=m +CONFIG_PINCTRL_ICELAKE=m +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX50=y +CONFIG_PINCTRL_IMX51=y +CONFIG_PINCTRL_IMX6Q=y +CONFIG_PINCTRL_IMX6SL=y +CONFIG_PINCTRL_IMX6SLL=y +CONFIG_PINCTRL_IMX6SX=y +CONFIG_PINCTRL_IMX6UL=y +CONFIG_PINCTRL_IMX7D=y +CONFIG_PINCTRL_IMX7ULP=y +CONFIG_PINCTRL_IMX8DXL=y +CONFIG_PINCTRL_IMX8MM=y +CONFIG_PINCTRL_IMX8MN=y +CONFIG_PINCTRL_IMX8MP=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_PINCTRL_IMX8QM=y +CONFIG_PINCTRL_IMX8QXP=y +CONFIG_PINCTRL_IMX_SCU=y +CONFIG_PINCTRL_INTEL=m +CONFIG_PINCTRL_IPQ4019=m +CONFIG_PINCTRL_IPQ6018=m +CONFIG_PINCTRL_IPQ8064=m +CONFIG_PINCTRL_IPQ8074=m +CONFIG_PINCTRL_IPROC_GPIO=y +CONFIG_PINCTRL_JASPERLAKE=m +CONFIG_PINCTRL_LEWISBURG=m +CONFIG_PINCTRL_LOCHNAGAR=m +CONFIG_PINCTRL_LYNXPOINT=m +CONFIG_PINCTRL_MADERA=m +CONFIG_PINCTRL_MAX77620=m +CONFIG_PINCTRL_MCP23S08=m +CONFIG_PINCTRL_MCP23S08_I2C=m +CONFIG_PINCTRL_MCP23S08_SPI=m +CONFIG_PINCTRL_MDM9615=m +CONFIG_PINCTRL_MESON=y +CONFIG_PINCTRL_MESON8=y +CONFIG_PINCTRL_MESON8B=y +CONFIG_PINCTRL_MESON8_PMX=y +CONFIG_PINCTRL_MESON_A1=y +CONFIG_PINCTRL_MESON_AXG=y +CONFIG_PINCTRL_MESON_AXG_PMX=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_PINCTRL_MESON_GXBB=y +CONFIG_PINCTRL_MESON_GXL=y +CONFIG_PINCTRL_MSM=y +CONFIG_PINCTRL_MSM8660=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_PINCTRL_MSM8976=m +CONFIG_PINCTRL_MSM8994=m +CONFIG_PINCTRL_MSM8996=m +CONFIG_PINCTRL_MSM8998=m +CONFIG_PINCTRL_MSM8X74=m +CONFIG_PINCTRL_MT2701=y +CONFIG_PINCTRL_MT2712=y +CONFIG_PINCTRL_MT6397=y +CONFIG_PINCTRL_MT6765=y +CONFIG_PINCTRL_MT6797=y +CONFIG_PINCTRL_MT7622=y +CONFIG_PINCTRL_MT7623=y +CONFIG_PINCTRL_MT7629=y +CONFIG_PINCTRL_MT8127=y +CONFIG_PINCTRL_MT8135=y +CONFIG_PINCTRL_MT8173=y +CONFIG_PINCTRL_MT8183=y +CONFIG_PINCTRL_MT8516=y +CONFIG_PINCTRL_MTK=y +CONFIG_PINCTRL_MTK_MOORE=y +CONFIG_PINCTRL_MTK_PARIS=y +CONFIG_PINCTRL_MTK_V2=y +CONFIG_PINCTRL_MVEBU=y +CONFIG_PINCTRL_NPCM7XX=y +CONFIG_PINCTRL_NS2_MUX=y +CONFIG_PINCTRL_OCELOT=y +CONFIG_PINCTRL_OWL=y +CONFIG_PINCTRL_PALMAS=y +CONFIG_PINCTRL_PFC_EMEV2=y +CONFIG_PINCTRL_PFC_R8A7740=y +CONFIG_PINCTRL_PFC_R8A7742=y +CONFIG_PINCTRL_PFC_R8A7743=y +CONFIG_PINCTRL_PFC_R8A7744=y +CONFIG_PINCTRL_PFC_R8A7745=y +CONFIG_PINCTRL_PFC_R8A77470=y +CONFIG_PINCTRL_PFC_R8A774A1=y +CONFIG_PINCTRL_PFC_R8A774B1=y +CONFIG_PINCTRL_PFC_R8A774C0=y +CONFIG_PINCTRL_PFC_R8A7778=y +CONFIG_PINCTRL_PFC_R8A7779=y +CONFIG_PINCTRL_PFC_R8A7790=y +CONFIG_PINCTRL_PFC_R8A7791=y +CONFIG_PINCTRL_PFC_R8A7792=y +CONFIG_PINCTRL_PFC_R8A7793=y +CONFIG_PINCTRL_PFC_R8A7794=y +CONFIG_PINCTRL_PFC_R8A77950=y +CONFIG_PINCTRL_PFC_R8A77951=y +CONFIG_PINCTRL_PFC_R8A77960=y +CONFIG_PINCTRL_PFC_R8A77961=y +CONFIG_PINCTRL_PFC_R8A77965=y +CONFIG_PINCTRL_PFC_R8A77970=y +CONFIG_PINCTRL_PFC_R8A77980=y +CONFIG_PINCTRL_PFC_R8A77990=y +CONFIG_PINCTRL_PFC_R8A77995=y +CONFIG_PINCTRL_PFC_SH73A0=y +CONFIG_PINCTRL_QCOM_SPMI_PMIC=m +CONFIG_PINCTRL_QCOM_SSBI_PMIC=m +CONFIG_PINCTRL_QCS404=m +CONFIG_PINCTRL_QDF2XXX=m +CONFIG_PINCTRL_RK805=m +CONFIG_PINCTRL_ROCKCHIP=y +CONFIG_PINCTRL_RZA1=y +CONFIG_PINCTRL_RZA2=y +CONFIG_PINCTRL_RZN1=y +CONFIG_PINCTRL_S700=y +CONFIG_PINCTRL_S900=y +CONFIG_PINCTRL_SAMSUNG=y +CONFIG_PINCTRL_SC7180=m +CONFIG_PINCTRL_SDM660=m +CONFIG_PINCTRL_SDM845=m +CONFIG_PINCTRL_SH_PFC=y +CONFIG_PINCTRL_SH_PFC_GPIO=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_SM8150=m +CONFIG_PINCTRL_SM8250=m +CONFIG_PINCTRL_SPRD=y +CONFIG_PINCTRL_SPRD_SC9860=y +CONFIG_PINCTRL_STMFX=m +CONFIG_PINCTRL_SUN4I_A10=y +CONFIG_PINCTRL_SUN50I_A64=y +CONFIG_PINCTRL_SUN50I_A64_R=y +CONFIG_PINCTRL_SUN50I_H5=y +CONFIG_PINCTRL_SUN50I_H6=y +CONFIG_PINCTRL_SUN50I_H6_R=y +CONFIG_PINCTRL_SUN5I=y +CONFIG_PINCTRL_SUN6I_A31=y +CONFIG_PINCTRL_SUN6I_A31_R=y +CONFIG_PINCTRL_SUN8I_A23=y +CONFIG_PINCTRL_SUN8I_A23_R=y +CONFIG_PINCTRL_SUN8I_A33=y +CONFIG_PINCTRL_SUN8I_A83T=y +CONFIG_PINCTRL_SUN8I_A83T_R=y +CONFIG_PINCTRL_SUN8I_H3=y +CONFIG_PINCTRL_SUN8I_H3_R=y +CONFIG_PINCTRL_SUN8I_V3S=y +CONFIG_PINCTRL_SUN9I_A80=y +CONFIG_PINCTRL_SUN9I_A80_R=y +CONFIG_PINCTRL_SUNRISEPOINT=m +CONFIG_PINCTRL_SUNXI=y +CONFIG_PINCTRL_SX150X=y +CONFIG_PINCTRL_TEGRA=y +CONFIG_PINCTRL_TEGRA114=y +CONFIG_PINCTRL_TEGRA124=y +CONFIG_PINCTRL_TEGRA20=y +CONFIG_PINCTRL_TEGRA30=y +CONFIG_PINCTRL_TEGRA_XUSB=y +CONFIG_PINCTRL_TIGERLAKE=m +CONFIG_PINCTRL_TI_IODELAY=y +CONFIG_PINCTRL_UNIPHIER=y +CONFIG_PINCTRL_UNIPHIER_LD11=y +CONFIG_PINCTRL_UNIPHIER_LD20=y +CONFIG_PINCTRL_UNIPHIER_LD4=y +CONFIG_PINCTRL_UNIPHIER_LD6B=y +CONFIG_PINCTRL_UNIPHIER_PRO4=y +CONFIG_PINCTRL_UNIPHIER_PRO5=y +CONFIG_PINCTRL_UNIPHIER_PXS2=y +CONFIG_PINCTRL_UNIPHIER_PXS3=y +CONFIG_PINCTRL_UNIPHIER_SLD8=y +CONFIG_PINCTRL_VF610=y +CONFIG_PING=m +CONFIG_PINMUX=y +CONFIG_PJ4B_ERRATA_4742=y +CONFIG_PKCS7_MESSAGE_PARSER=y +CONFIG_PKCS7_TEST_KEY=m +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_PKEY=m +CONFIG_PL310_ERRATA_588369=y +CONFIG_PL310_ERRATA_727915=y +CONFIG_PL310_ERRATA_753970=y +CONFIG_PL310_ERRATA_769419=y +CONFIG_PL320_MBOX=y +CONFIG_PL330_DMA=m +CONFIG_PL353_SMC=m +CONFIG_PLATFORM_MHU=m +CONFIG_PLATFORM_SI4713=m +CONFIG_PLAT_ORION=y +CONFIG_PLAT_SAMSUNG=y +# CONFIG_PLAT_SPEAR is not set +CONFIG_PLAT_VERSATILE=y +CONFIG_PLIP=m +CONFIG_PLX_DMA=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PM8916_WATCHDOG=m +CONFIG_PMBUS=m +CONFIG_PMC_ATOM=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +CONFIG_PMS7003=m +# CONFIG_PMU_SYSFS is not set +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +CONFIG_PM_OPP=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_DEBUG=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_SLEEP_SMP_NONZERO_CPU=y +CONFIG_PM_STD_PARTITION="" +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_POSIX_TIMERS=y +# CONFIG_POWER7_CPU is not set +# CONFIG_POWER8_CPU is not set +# CONFIG_POWER9_CPU is not set +CONFIG_POWERNV_CPUFREQ=y +CONFIG_POWERNV_CPUIDLE=y +CONFIG_POWERNV_OP_PANEL=m +CONFIG_POWER_AVS_OMAP=y +CONFIG_POWER_AVS_OMAP_CLASS3=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_AS3722=y +CONFIG_POWER_RESET_AXXIA=y +CONFIG_POWER_RESET_BRCMKONA=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_HISI=y +CONFIG_POWER_RESET_LTC2952=y +CONFIG_POWER_RESET_MSM=y +CONFIG_POWER_RESET_MT6323=y +CONFIG_POWER_RESET_QCOM_PON=m +# CONFIG_POWER_RESET_QNAP is not set +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_RMOBILE=m +CONFIG_POWER_RESET_SC27XX=m +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_POWER_RESET_VERSATILE=y +CONFIG_POWER_RESET_VEXPRESS=y +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +CONFIG_PPC=y +CONFIG_PPC64=y +CONFIG_PPC64_BOOT_WRAPPER=y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +CONFIG_PPC_BARRIER_NOSPEC=y +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S=y +CONFIG_PPC_BOOK3S_64=y +CONFIG_PPC_BOOK3S_IDLE=y +CONFIG_PPC_COPRO_BASE=y +CONFIG_PPC_DAWR=y +CONFIG_PPC_DENORMALISATION=y +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_DOORBELL=y +CONFIG_PPC_DT_CPU_FTRS=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +# CONFIG_PPC_FAST_ENDIAN_SWITCH is not set +CONFIG_PPC_FPU=y +CONFIG_PPC_HAVE_KUAP=y +CONFIG_PPC_HAVE_KUEP=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +CONFIG_PPC_INDIRECT_PIO=y +# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set +CONFIG_PPC_KUAP=y +# CONFIG_PPC_KUAP_DEBUG is not set +CONFIG_PPC_KUEP=y +CONFIG_PPC_MEMTRACE=y +# CONFIG_PPC_MEM_KEYS is not set +CONFIG_PPC_MM_SLICES=y +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_NATIVE=y +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_PAGE_SHIFT=16 +CONFIG_PPC_PERF_CTRS=y +CONFIG_PPC_POWERNV=y +CONFIG_PPC_PSERIES=y +# CONFIG_PPC_PTDUMP is not set +CONFIG_PPC_RADIX_MMU=y +CONFIG_PPC_RADIX_MMU_DEFAULT=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_RTAS_DAEMON=y +CONFIG_PPC_RTAS_FILTER=y +CONFIG_PPC_SECURE_BOOT=y +CONFIG_PPC_SECVAR_SYSFS=y +CONFIG_PPC_SMLPAR=y +CONFIG_PPC_SMP_MUXED_IPI=y +CONFIG_PPC_SPLPAR=y +CONFIG_PPC_SUBPAGE_PROT=y +CONFIG_PPC_SVM=y +CONFIG_PPC_TRANSACTIONAL_MEM=y +CONFIG_PPC_UDBG_16550=y +CONFIG_PPC_UV=y +CONFIG_PPC_VAS=y +CONFIG_PPC_WATCHDOG=y +CONFIG_PPC_WERROR=y +CONFIG_PPC_XICS=y +CONFIG_PPC_XIVE=y +CONFIG_PPC_XIVE_NATIVE=y +CONFIG_PPC_XIVE_SPAPR=y +CONFIG_PPDEV=m +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +CONFIG_PREEMPTION=y +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PREEMPT_RCU=y +# CONFIG_PREEMPT_TRACER is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_PRIME_NUMBERS is not set +CONFIG_PRINTER=m +CONFIG_PRINTK=y +# CONFIG_PRINTK_CALLER is not set +CONFIG_PRINTK_NMI=y +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_PRINTK_TIME=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_PRINT_STACK_DEPTH=64 +CONFIG_PRISM2_USB=m +# CONFIG_PRISM54 is not set +CONFIG_PROBE_EVENTS=y +CONFIG_PROCESSOR_SELECT=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_CPU_RESCTRL=y +CONFIG_PROC_EVENTS=y +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_ARCH_STATUS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_THERMAL_MMIO_RAPL=y +CONFIG_PROC_VMCORE=y +CONFIG_PROC_VMCORE_DEVICE_DUMP=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +CONFIG_PROTECTED_VIRTUALIZATION_GUEST=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +CONFIG_PSAMPLE=m +CONFIG_PSERIES_CPUIDLE=y +CONFIG_PSERIES_ENERGY=m +CONFIG_PSI=y +# CONFIG_PSTORE_842_COMPRESS is not set +CONFIG_PSTORE_BLK=m +CONFIG_PSTORE_BLK_BLKDEV="" +CONFIG_PSTORE_BLK_CONSOLE_SIZE=64 +CONFIG_PSTORE_BLK_KMSG_SIZE=64 +CONFIG_PSTORE_BLK_MAX_REASON=2 +CONFIG_PSTORE_COMPRESS=y +CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" +CONFIG_PSTORE_DEFLATE_COMPRESS=y +CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y +# CONFIG_PSTORE_FTRACE is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PSTORE_ZONE=m +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PTDUMP_CORE=y +# CONFIG_PTDUMP_DEBUGFS is not set +CONFIG_PTP_1588_CLOCK_DTE=m +CONFIG_PTP_1588_CLOCK_IDTCM=m +CONFIG_PTP_1588_CLOCK_INES=m +CONFIG_PTP_1588_CLOCK_KVM=m +CONFIG_PTP_1588_CLOCK_QORIQ=m +CONFIG_PTP_1588_CLOCK_VMW=m +CONFIG_PUNIT_ATOM_DEBUG=m +CONFIG_PVH=y +CONFIG_PVPANIC=m +CONFIG_PWM_ATMEL_HLCDC_PWM=m +CONFIG_PWM_BCM2835=m +CONFIG_PWM_BCM_IPROC=m +CONFIG_PWM_BERLIN=m +CONFIG_PWM_BRCMSTB=m +CONFIG_PWM_CRC=y +CONFIG_PWM_CROS_EC=m +# CONFIG_PWM_DEBUG is not set +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_HIBVT=m +CONFIG_PWM_IMX1=m +CONFIG_PWM_IMX27=m +CONFIG_PWM_IMX_TPM=m +CONFIG_PWM_IQS620A=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_LPSS=y +CONFIG_PWM_LPSS_PCI=y +CONFIG_PWM_LPSS_PLATFORM=y +CONFIG_PWM_MEDIATEK=m +CONFIG_PWM_MESON=m +CONFIG_PWM_MTK_DISP=m +CONFIG_PWM_OMAP_DMTIMER=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_RCAR=m +CONFIG_PWM_RENESAS_TPU=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_PWM_SAMSUNG=m +CONFIG_PWM_SPRD=m +CONFIG_PWM_STMPE=y +CONFIG_PWM_SUN4I=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +CONFIG_PWRSEQ_EMMC=m +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PXA168_ETH=m +CONFIG_QCA7000=m +CONFIG_QCA7000_SPI=m +CONFIG_QCA7000_UART=m +CONFIG_QCOM_A53PLL=m +CONFIG_QCOM_AOSS_QMP=m +CONFIG_QCOM_APCS_IPC=m +CONFIG_QCOM_APR=m +CONFIG_QCOM_BAM_DMA=m +CONFIG_QCOM_CLK_APCS_MSM8916=m +CONFIG_QCOM_CLK_RPM=m +CONFIG_QCOM_CLK_RPMH=m +CONFIG_QCOM_CLK_SMD_RPM=m +CONFIG_QCOM_COINCELL=m +CONFIG_QCOM_COMMAND_DB=y +CONFIG_QCOM_CPR=m +CONFIG_QCOM_EBI2=y +CONFIG_QCOM_EMAC=m +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_QCOM_FASTRPC=m +CONFIG_QCOM_GDSC=y +CONFIG_QCOM_GENI_SE=m +CONFIG_QCOM_GSBI=m +CONFIG_QCOM_HFPLL=m +CONFIG_QCOM_HIDMA=m +CONFIG_QCOM_HIDMA_MGMT=m +CONFIG_QCOM_IOMMU=y +CONFIG_QCOM_IPA=m +CONFIG_QCOM_IPCC=y +CONFIG_QCOM_IRQ_COMBINER=y +CONFIG_QCOM_L2_PMU=y +CONFIG_QCOM_L3_PMU=y +CONFIG_QCOM_LLCC=m +CONFIG_QCOM_MDT_LOADER=m +CONFIG_QCOM_OCMEM=m +CONFIG_QCOM_PDC=y +CONFIG_QCOM_PDR_HELPERS=m +CONFIG_QCOM_PM8XXX_XOADC=m +CONFIG_QCOM_Q6V5_ADSP=m +CONFIG_QCOM_Q6V5_COMMON=m +CONFIG_QCOM_Q6V5_IPA_NOTIFY=m +CONFIG_QCOM_Q6V5_MSS=m +CONFIG_QCOM_Q6V5_PAS=m +CONFIG_QCOM_Q6V5_WCSS=m +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_QFPROM=m +CONFIG_QCOM_QMI_HELPERS=m +CONFIG_QCOM_RMTFS_MEM=m +CONFIG_QCOM_RPMCC=y +CONFIG_QCOM_RPMH=y +CONFIG_QCOM_RPMHPD=y +CONFIG_QCOM_RPMPD=m +CONFIG_QCOM_RPROC_COMMON=m +CONFIG_QCOM_SCM=y +# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set +CONFIG_QCOM_SMD_RPM=m +CONFIG_QCOM_SMEM=m +CONFIG_QCOM_SMEM_STATE=y +CONFIG_QCOM_SMP2P=m +CONFIG_QCOM_SMSM=m +CONFIG_QCOM_SOCINFO=m +CONFIG_QCOM_SPMI_ADC5=m +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QCOM_SYSMON=m +CONFIG_QCOM_TSENS=m +CONFIG_QCOM_VADC_COMMON=m +CONFIG_QCOM_WCNSS_CTRL=m +# CONFIG_QCOM_WCNSS_PIL is not set +CONFIG_QCOM_WDT=m +CONFIG_QCS_GCC_404=m +CONFIG_QCS_Q6SSTOP_404=m +CONFIG_QCS_TURING_404=m +CONFIG_QDIO=m +CONFIG_QED=m +CONFIG_QEDE=m +CONFIG_QEDF=m +CONFIG_QEDI=m +CONFIG_QED_FCOE=y +CONFIG_QED_ISCSI=y +CONFIG_QED_LL2=y +CONFIG_QED_OOO=y +CONFIG_QED_RDMA=y +CONFIG_QED_SRIOV=y +CONFIG_QETH=m +CONFIG_QETH_L2=m +CONFIG_QETH_L3=m +CONFIG_QETH_OSN=y +CONFIG_QETH_OSX=y +CONFIG_QE_GPIO=y +CONFIG_QE_TDM=y +CONFIG_QE_USB=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLGE=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QORIQ_CPUFREQ=m +CONFIG_QORIQ_THERMAL=m +CONFIG_QRTR_MHI=m +CONFIG_QRTR_SMD=m +CONFIG_QRTR_TUN=m +CONFIG_QSEMI_PHY=m +CONFIG_QTNFMAC=m +CONFIG_QTNFMAC_PCIE=m +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_QUICC_ENGINE=y +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_QUOTA_TREE=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8188EU=m +CONFIG_R8712U=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_SI476X=m +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +CONFIG_RAID6_PQ=m +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_RAID_ATTRS=m +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_RANDOMIZE_BASE=y +CONFIG_RANDOMIZE_MEMORY=y +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +CONFIG_RANDOM_TRUST_BOOTLOADER=y +CONFIG_RANDOM_TRUST_CPU=y +CONFIG_RAPIDIO_CHMAN=m +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_CPS_XX=m +# CONFIG_RAPIDIO_DEBUG is not set +CONFIG_RAPIDIO_DISC_TIMEOUT=30 +CONFIG_RAPIDIO_DMA_ENGINE=y +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_ENUM_BASIC=m +CONFIG_RAPIDIO_MPORT_CDEV=m +CONFIG_RAPIDIO_RXS_GEN3=m +CONFIG_RAPIDIO_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +CONFIG_RAPIDIO_TSI721=m +CONFIG_RAS=y +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_RASPBERRYPI_POWER=y +CONFIG_RAS_CEC=y +# CONFIG_RAS_CEC_DEBUG is not set +CONFIG_RATIONAL=y +CONFIG_RAVB=m +CONFIG_RAVE_SP_EEPROM=m +CONFIG_RAVE_SP_WATCHDOG=m +# CONFIG_RBTREE_TEST is not set +CONFIG_RCAR_DMAC=m +CONFIG_RCAR_GEN3_THERMAL=m +CONFIG_RCAR_GYRO_ADC=m +CONFIG_RCAR_THERMAL=m +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_RCU_EXPERT is not set +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_PERF_TEST=m +CONFIG_RCU_STALL_COMMON=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_DECODERS=y +CONFIG_RC_DEVICES=y +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=m +CONFIG_RC_XBOX_DVD=m +CONFIG_RDA_INTC=y +CONFIG_RDA_TIMER=y +CONFIG_RDMA_RXE=m +CONFIG_RDMA_SIW=m +CONFIG_RDS=m +# CONFIG_RDS_DEBUG is not set +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +CONFIG_RD_BZIP2=y +CONFIG_RD_GZIP=y +CONFIG_RD_LZ4=y +CONFIG_RD_LZMA=y +CONFIG_RD_LZO=y +CONFIG_RD_XZ=y +# CONFIG_READABLE_ASM is not set +# CONFIG_READ_ONLY_THP_FOR_FS is not set +CONFIG_REALTEK_AUTOPM=y +CONFIG_REALTEK_PHY=m +CONFIG_REBOOT_MODE=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +# CONFIG_REED_SOLOMON_TEST is not set +CONFIG_REGMAP=y +CONFIG_REGMAP_AC97=m +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_I3C=m +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_SCCB=m +CONFIG_REGMAP_SLIMBUS=m +CONFIG_REGMAP_SOUNDWIRE=m +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGMAP_W1=m +CONFIG_REGULATOR_88PG86X=m +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_ACT8945A=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARIZONA_LDO1=m +CONFIG_REGULATOR_ARIZONA_MICSUPP=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_BD70528=m +CONFIG_REGULATOR_BD71828=m +CONFIG_REGULATOR_BD718XX=m +CONFIG_REGULATOR_BD9571MWV=m +CONFIG_REGULATOR_CPCAP=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m +CONFIG_REGULATOR_DA9063=m +CONFIG_REGULATOR_DA9210=m +CONFIG_REGULATOR_DA9211=m +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_HI6421=m +CONFIG_REGULATOR_HI6421V530=m +CONFIG_REGULATOR_HI655X=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_LM363X=m +CONFIG_REGULATOR_LOCHNAGAR=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP873X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP87565=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +CONFIG_REGULATOR_LTC3676=m +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77620=m +CONFIG_REGULATOR_MAX77650=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77802=m +CONFIG_REGULATOR_MAX77826=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8907=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8973=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_MCP16502=m +CONFIG_REGULATOR_MP5416=m +CONFIG_REGULATOR_MP8859=m +CONFIG_REGULATOR_MP886X=m +CONFIG_REGULATOR_MPQ7920=m +CONFIG_REGULATOR_MT6311=m +CONFIG_REGULATOR_MT6323=m +CONFIG_REGULATOR_MT6358=m +CONFIG_REGULATOR_MT6380=m +CONFIG_REGULATOR_MT6397=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PBIAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_PV88060=m +CONFIG_REGULATOR_PV88080=m +CONFIG_REGULATOR_PV88090=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_RPMH=m +CONFIG_REGULATOR_QCOM_SMD_RPM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_ROHM=m +CONFIG_REGULATOR_RT5033=m +CONFIG_REGULATOR_S2MPA01=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_SC2731=m +CONFIG_REGULATOR_SKY81452=m +CONFIG_REGULATOR_SLG51000=m +CONFIG_REGULATOR_STPMIC1=m +CONFIG_REGULATOR_SY8106A=m +CONFIG_REGULATOR_SY8824X=m +CONFIG_REGULATOR_TI_ABB=y +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65086=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_TPS65218=m +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TPS80031=m +CONFIG_REGULATOR_UNIPHIER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VCTRL=m +CONFIG_REGULATOR_VEXPRESS=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_VQMMC_IPQ4019=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +# CONFIG_RELOCATABLE_TEST is not set +CONFIG_RENESAS_DMA=y +CONFIG_RENESAS_INTC_IRQPIN=y +CONFIG_RENESAS_IRQC=y +CONFIG_RENESAS_OSTM=y +CONFIG_RENESAS_PHY=m +CONFIG_RENESAS_RZA1_IRQC=y +CONFIG_RENESAS_RZAWDT=m +CONFIG_RENESAS_USB_DMAC=m +CONFIG_RENESAS_WDT=m +CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_RESET_BERLIN=y +CONFIG_RESET_BRCMSTB=m +CONFIG_RESET_BRCMSTB_RESCAL=y +CONFIG_RESET_HISI=y +CONFIG_RESET_IMX7=y +CONFIG_RESET_INTEL_GW=y +CONFIG_RESET_MESON=y +CONFIG_RESET_MESON_AUDIO_ARB=m +CONFIG_RESET_NPCM=y +CONFIG_RESET_QCOM_AOSS=y +CONFIG_RESET_QCOM_PDC=m +CONFIG_RESET_SCMI=m +CONFIG_RESET_SIMPLE=y +CONFIG_RESET_SUNXI=y +CONFIG_RESET_TEGRA_BPMP=y +CONFIG_RESET_TI_SCI=m +CONFIG_RESET_TI_SYSCON=m +CONFIG_RESET_UNIPHIER=m +CONFIG_RESET_UNIPHIER_GLUE=m +CONFIG_RETPOLINE=y +CONFIG_RETU_WATCHDOG=m +CONFIG_RFD77402=m +CONFIG_RFD_FTL=m +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFS_ACCEL=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +CONFIG_RIONET=m +CONFIG_RIONET_RX_SIZE=128 +CONFIG_RIONET_TX_SIZE=128 +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F54=y +CONFIG_RMI4_F55=y +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_SPI=m +CONFIG_RMNET=m +CONFIG_RN5T618_ADC=m +CONFIG_RN5T618_WATCHDOG=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_EFUSE=m +CONFIG_ROCKCHIP_GRF=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_IODOMAIN=m +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_MBOX=y +CONFIG_ROCKCHIP_OTP=m +CONFIG_ROCKCHIP_PHY=m +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_RGB=y +CONFIG_ROCKCHIP_RK3066_HDMI=y +CONFIG_ROCKCHIP_SARADC=m +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_ROCKCHIP_TIMER=y +CONFIG_ROCKER=m +CONFIG_ROCKETPORT=m +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPMSG=m +CONFIG_RPMSG_CHAR=m +CONFIG_RPMSG_MTK_SCP=m +CONFIG_RPMSG_QCOM_GLINK=m +CONFIG_RPMSG_QCOM_GLINK_RPM=m +CONFIG_RPMSG_QCOM_GLINK_SMEM=m +CONFIG_RPMSG_QCOM_SMD=m +CONFIG_RPR0521=m +CONFIG_RPS=y +CONFIG_RSEQ=y +CONFIG_RSI_91X=m +CONFIG_RSI_COEX=y +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RST_RCAR=y +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT2500USB=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00=m +# CONFIG_RT2X00_DEBUG is not set +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_CRYPTO=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_LEDS=y +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT61PCI=m +CONFIG_RT73USB=m +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_RTAS_FLASH=m +CONFIG_RTAS_PROC=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_88PM860X=m +CONFIG_RTC_DRV_AB3100=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_ABEOZ9=m +CONFIG_RTC_DRV_ABX80X=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RTC_DRV_AS3722=m +CONFIG_RTC_DRV_ASPEED=m +CONFIG_RTC_DRV_BD70528=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_BRCMSTB=m +CONFIG_RTC_DRV_CADENCE=m +CONFIG_RTC_DRV_CPCAP=m +CONFIG_RTC_DRV_CROS_EC=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1307_CENTURY=y +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS1685=y +CONFIG_RTC_DRV_DS1685_FAMILY=m +# CONFIG_RTC_DRV_DS1689 is not set +# CONFIG_RTC_DRV_DS17285 is not set +CONFIG_RTC_DRV_DS1742=m +# CONFIG_RTC_DRV_DS17485 is not set +# CONFIG_RTC_DRV_DS17885 is not set +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3232_HWMON=y +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_FSL_FTM_ALARM=m +CONFIG_RTC_DRV_FTRTC010=m +CONFIG_RTC_DRV_GENERIC=y +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_IMXDI=m +CONFIG_RTC_DRV_IMX_SC=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12026=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_LP8788=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_MAX6916=m +CONFIG_RTC_DRV_MAX77686=m +CONFIG_RTC_DRV_MAX8907=m +CONFIG_RTC_DRV_MAX8925=m +CONFIG_RTC_DRV_MAX8997=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_DRV_MESON=m +CONFIG_RTC_DRV_MESON_VRTC=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_MT2712=m +CONFIG_RTC_DRV_MT6397=m +CONFIG_RTC_DRV_MT7622=m +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_DRV_MXC=m +CONFIG_RTC_DRV_MXC_V2=m +CONFIG_RTC_DRV_OMAP=y +CONFIG_RTC_DRV_OPAL=y +CONFIG_RTC_DRV_PALMAS=m +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF50633=m +CONFIG_RTC_DRV_PCF85063=m +CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_R7301=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RC5T619=m +CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RTD119X=y +CONFIG_RTC_DRV_RV3028=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV3029_HWMON=y +CONFIG_RTC_DRV_RV8803=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RX6110=m +CONFIG_RTC_DRV_RX8010=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_S3C=y +CONFIG_RTC_DRV_S5M=m +CONFIG_RTC_DRV_SC27XX=m +CONFIG_RTC_DRV_SD3078=m +CONFIG_RTC_DRV_SH=m +CONFIG_RTC_DRV_SNVS=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_TEGRA=m +# CONFIG_RTC_DRV_TEST is not set +CONFIG_RTC_DRV_TPS6586X=m +CONFIG_RTC_DRV_TPS65910=m +CONFIG_RTC_DRV_TPS80031=m +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_WILCO_EC=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_XGENE=y +CONFIG_RTC_DRV_ZYNQMP=m +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_I2C_AND_SPI=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_RTC_NVMEM=y +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +CONFIG_RTD119X_WATCHDOG=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL8188EE=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192DE=m +CONFIG_RTL8192E=m +CONFIG_RTL8192EE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192U=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8723BS=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTL8821AE=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTLBTCOEXIST=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +CONFIG_RTLWIFI=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTL_CARDS=m +CONFIG_RTS5208=m +CONFIG_RTW88=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_DEBUG=y +CONFIG_RTW88_DEBUGFS=y +CONFIG_RTW88_PCI=m +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RT_MUTEXES=y +CONFIG_RUNTIME_TESTING_MENU=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_RXKAD=y +CONFIG_S390=y +CONFIG_S390_AP_IOMMU=y +CONFIG_S390_CCW_IOMMU=y +CONFIG_S390_GUEST=y +CONFIG_S390_HYPFS_FS=y +CONFIG_S390_IOMMU=y +CONFIG_S390_PRNG=m +CONFIG_S390_PTDUMP=y +CONFIG_S390_TAPE=m +CONFIG_S390_TAPE_34XX=m +CONFIG_S390_TAPE_3590=m +# CONFIG_S390_UNWIND_SELFTEST is not set +CONFIG_S390_VMUR=m +CONFIG_S3C2410_WATCHDOG=m +CONFIG_S5P_DEV_MFC=y +CONFIG_SAMPLES=y +# CONFIG_SAMPLE_AUXDISPLAY is not set +# CONFIG_SAMPLE_CONFIGFS is not set +CONFIG_SAMPLE_FTRACE_DIRECT=m +# CONFIG_SAMPLE_HW_BREAKPOINT is not set +# CONFIG_SAMPLE_KDB is not set +# CONFIG_SAMPLE_KFIFO is not set +# CONFIG_SAMPLE_KOBJECT is not set +# CONFIG_SAMPLE_KPROBES is not set +# CONFIG_SAMPLE_LIVEPATCH is not set +# CONFIG_SAMPLE_QMI_CLIENT is not set +# CONFIG_SAMPLE_RPMSG_CLIENT is not set +CONFIG_SAMPLE_TRACE_ARRAY=m +# CONFIG_SAMPLE_TRACE_EVENTS is not set +CONFIG_SAMPLE_TRACE_PRINTK=m +# CONFIG_SAMPLE_VFIO_MDEV_MBOCHS is not set +# CONFIG_SAMPLE_VFIO_MDEV_MDPY is not set +# CONFIG_SAMPLE_VFIO_MDEV_MDPY_FB is not set +# CONFIG_SAMPLE_VFIO_MDEV_MTTY is not set +# CONFIG_SAMPLE_WATCHDOG is not set +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_MC=y +CONFIG_SAMSUNG_Q10=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_AHCI_SEATTLE=m +CONFIG_SATA_DWC=m +# CONFIG_SATA_DWC_DEBUG is not set +CONFIG_SATA_DWC_OLD_DMA=y +CONFIG_SATA_HIGHBANK=y +CONFIG_SATA_HOST=y +CONFIG_SATA_INIC162X=m +CONFIG_SATA_MOBILE_LPM_POLICY=3 +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PMP=y +CONFIG_SATA_PROMISE=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_RCAR=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIL24=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_SX4=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_ZPODD=y +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_SBITMAP=y +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SBP_TARGET=m +CONFIG_SC1200_WDT=m +CONFIG_SC27XX_ADC=m +CONFIG_SC27XX_EFUSE=m +CONFIG_SC92031=m +CONFIG_SCA3000=m +CONFIG_SCANLOG=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_BOOK=y +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_DRAWER=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_INFO=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_MC_PRIO=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_STACK_END_CHECK=y +# CONFIG_SCHED_THERMAL_PRESSURE is not set +CONFIG_SCHED_TOPOLOGY=y +CONFIG_SCHED_TRACER=y +CONFIG_SCIF=m +CONFIG_SCIF_BUS=m +CONFIG_SCLP_CONSOLE=y +CONFIG_SCLP_OFB=y +CONFIG_SCLP_TTY=y +CONFIG_SCLP_VT220_CONSOLE=y +CONFIG_SCLP_VT220_TTY=y +CONFIG_SCM_BLOCK=m +CONFIG_SCM_BUS=y +CONFIG_SCOM_DEBUGFS=y +CONFIG_SCR24X=m +CONFIG_SCSI=y +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_ALUA=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DMA=y +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FDOMAIN=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_SCSI_HISI_SAS=m +CONFIG_SCSI_HISI_SAS_PCI=m +CONFIG_SCSI_IBMVFC=m +CONFIG_SCSI_IBMVFC_TRACE=y +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SCSI_IBMVSCSIS=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_MOD=y +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MYRS=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SMARTPQI=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFS_CDNS_PLATFORM=m +CONFIG_SCSI_UFS_DWC_TC_PCI=m +CONFIG_SCSI_UFS_DWC_TC_PLATFORM=m +CONFIG_SCSI_UFS_HISI=m +CONFIG_SCSI_UFS_MEDIATEK=m +CONFIG_SCSI_UFS_TI_J721E=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCTP_COOKIE_HMAC_MD5=y +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +CONFIG_SC_DISPCC_7180=m +CONFIG_SC_GCC_7180=m +CONFIG_SC_GPUCC_7180=m +CONFIG_SC_MSS_7180=m +CONFIG_SC_VIDEOCC_7180=m +CONFIG_SDIO_UART=m +# CONFIG_SDMA_VERBOSITY is not set +CONFIG_SDM_CAMCC_845=m +CONFIG_SDM_DISPCC_845=m +CONFIG_SDM_GCC_660=m +CONFIG_SDM_GCC_845=m +CONFIG_SDM_GPUCC_845=m +CONFIG_SDM_LPASSCC_845=m +CONFIG_SDM_VIDEOCC_845=m +CONFIG_SDR_MAX2175=m +CONFIG_SDR_PLATFORM_DRIVERS=y +CONFIG_SD_ADC_MODULATOR=m +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_SECONDARY_TRUSTED_KEYRING=y +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_APPARMOR=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_SECURITY_INFINIBAND=y +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_LOCKDOWN_LSM=y +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y +CONFIG_SECURITY_SAFESETID=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_DISABLE is not set +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SMACK=y +CONFIG_SECURITY_SMACK_APPEND_SIGNALS=y +# CONFIG_SECURITY_SMACK_BRINGUP is not set +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +# CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING is not set +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_YAMA=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSIRION_SGP30=m +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1177=m +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_AMD_ENERGY=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ARM_SCMI=m +CONFIG_SENSORS_ARM_SCPI=m +CONFIG_SENSORS_AS370=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ASPEED=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_AXI_FAN_CONTROL=m +CONFIG_SENSORS_BEL_PFE=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_GSC=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IBMPOWERNV=m +CONFIG_SENSORS_IBM_CFFPS=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_INA3221=m +CONFIG_SENSORS_INSPUR_IPSPS=m +CONFIG_SENSORS_IR35221=m +CONFIG_SENSORS_IR38064=m +CONFIG_SENSORS_IRPS5401=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_SENSORS_ISL68137=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_LIS3_SPI=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM3533=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_LOCHNAGAR=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2947=m +CONFIG_SENSORS_LTC2947_I2C=m +CONFIG_SENSORS_LTC2947_SPI=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC2990=m +CONFIG_SENSORS_LTC3815=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX16601=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX20730=m +CONFIG_SENSORS_MAX20751=m +CONFIG_SENSORS_MAX31722=m +CONFIG_SENSORS_MAX31730=m +CONFIG_SENSORS_MAX31785=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX6621=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_MENF21BMC_HWMON=m +CONFIG_SENSORS_MLXREG_FAN=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +CONFIG_SENSORS_NTC_THERMISTOR=m +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_OCC_P9_SBE is not set +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_PXE1610=m +CONFIG_SENSORS_RASPBERRYPI_HWMON=m +CONFIG_SENSORS_RM3100=m +CONFIG_SENSORS_RM3100_I2C=m +CONFIG_SENSORS_RM3100_SPI=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_TC654=m +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP108=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP513=m +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_VEXPRESS=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_XGENE=m +CONFIG_SENSORS_ZL6100=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +CONFIG_SERIAL_8250_ASPEED_VUART=m +# CONFIG_SERIAL_8250_BCM2835AUX is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_DWLIB=y +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_LPSS=m +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_MEN_MCB=m +CONFIG_SERIAL_8250_MID=m +CONFIG_SERIAL_8250_MT6577=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_OMAP=m +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_RT288X=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_TEGRA=y +CONFIG_SERIAL_8250_UNIPHIER=m +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_AMBA_PL010=m +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_BCM63XX=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y +CONFIG_SERIAL_ICOM=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_KGDB_NMI=y +CONFIG_SERIAL_LANTIQ=m +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_MESON=y +CONFIG_SERIAL_MESON_CONSOLE=y +CONFIG_SERIAL_MILBEAUT_USIO=m +CONFIG_SERIAL_MILBEAUT_USIO_PORTS=4 +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_MVEBU_CONSOLE=y +CONFIG_SERIAL_MVEBU_UART=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_OWL=y +CONFIG_SERIAL_OWL_CONSOLE=y +CONFIG_SERIAL_QCOM_GENI=m +CONFIG_SERIAL_QCOM_GENI_CONSOLE=y +CONFIG_SERIAL_QE=m +CONFIG_SERIAL_RDA=y +CONFIG_SERIAL_RDA_CONSOLE=y +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_SAMSUNG=m +CONFIG_SERIAL_SAMSUNG_UARTS=4 +CONFIG_SERIAL_SAMSUNG_UARTS_4=y +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SH_SCI=m +CONFIG_SERIAL_SH_SCI_DMA=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=2 +CONFIG_SERIAL_SIFIVE=m +CONFIG_SERIAL_SPRD=m +CONFIG_SERIAL_ST_ASC=m +CONFIG_SERIAL_TEGRA=m +CONFIG_SERIAL_TEGRA_TCU=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_UARTLITE_NR_UARTS=1 +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_GPIO_PS2=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_NVEC_PS2=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_SUN4I_PS2 is not set +CONFIG_SERIO_XILINX_XPS_PS2=m +CONFIG_SETEND_EMULATION=y +CONFIG_SFC_FALCON_MTD=y +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SFI=y +CONFIG_SFP=m +CONFIG_SF_PDMA=m +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_SGI_XP=m +CONFIG_SGL_ALLOC=y +CONFIG_SG_POOL=y +CONFIG_SG_SPLIT=y +CONFIG_SHIFT_FS=m +CONFIG_SHIFT_FS_POSIX_ACL=y +CONFIG_SHMEM=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +CONFIG_SH_ETH=m +CONFIG_SH_TIMER_CMT=y +CONFIG_SH_TIMER_MTU2=y +CONFIG_SH_TIMER_TMU=y +CONFIG_SI1133=m +CONFIG_SI1145=m +CONFIG_SI7005=m +CONFIG_SI7020=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +CONFIG_SIGNED_PE_FILE_VERIFICATION=y +CONFIG_SIMPLE_PM_BUS=y +CONFIG_SIOX=m +CONFIG_SIOX_BUS_GPIO=m +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SKB_EXTENSIONS=y +CONFIG_SKFP=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +# CONFIG_SLAB is not set +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_MERGE_DEFAULT=y +CONFIG_SLHC=y +CONFIG_SLICOSS=m +CONFIG_SLIC_DS26522=m +CONFIG_SLIMBUS=m +CONFIG_SLIM_QCOM_CTRL=m +CONFIG_SLIM_QCOM_NGD_CTRL=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +# CONFIG_SLOB is not set +CONFIG_SLUB=y +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +CONFIG_SLUB_MEMCG_SYSFS_ON=y +# CONFIG_SLUB_STATS is not set +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SMC=m +CONFIG_SMC911X=m +CONFIG_SMC_DIAG=m +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SMSC37B787_WDT=m +CONFIG_SMSC911X=m +CONFIG_SMSC9420=m +CONFIG_SMSC_PHY=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSGIUCV=y +CONFIG_SMSGIUCV_EVENT=m +CONFIG_SMS_SDIO_DRV=m +CONFIG_SMS_SIANO_DEBUGFS=y +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +CONFIG_SMS_USB_DRV=m +CONFIG_SM_FTL=m +CONFIG_SM_GCC_8150=m +CONFIG_SM_GCC_8250=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALOOP=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_ATMEL_SOC=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AUDIO_GRAPH_CARD=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BCD2000=m +CONFIG_SND_BCM2835=m +CONFIG_SND_BCM2835_SOC_I2S=m +CONFIG_SND_BCM63XX_I2S_WHISTLER=m +CONFIG_SND_BEBOB=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_DARLA24=m +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DESIGNWARE_PCM=y +CONFIG_SND_DICE=m +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_ECHO3G=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FIREFACE=m +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_FIREWIRE_MOTU=m +CONFIG_SND_FIREWIRE_TASCAM=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_GINA20=m +CONFIG_SND_GINA24=m +CONFIG_SND_HDA=m +CONFIG_SND_HDA_ALIGNED_MMIO=y +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_GENERIC_LEDS=y +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_TEGRA=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_HWDEP=m +CONFIG_SND_I2S_HI6210_I2S=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_INTEL_DSP_CONFIG=m +CONFIG_SND_INTEL_NHLT=y +CONFIG_SND_ISIGHT=m +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_KIRKWOOD_SOC=m +CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_MESON_AIU=m +CONFIG_SND_MESON_AXG_FIFO=m +CONFIG_SND_MESON_AXG_FRDDR=m +CONFIG_SND_MESON_AXG_PDM=m +CONFIG_SND_MESON_AXG_SOUND_CARD=m +CONFIG_SND_MESON_AXG_SPDIFIN=m +CONFIG_SND_MESON_AXG_SPDIFOUT=m +CONFIG_SND_MESON_AXG_TDMIN=m +CONFIG_SND_MESON_AXG_TDMOUT=m +CONFIG_SND_MESON_AXG_TDM_FORMATTER=m +CONFIG_SND_MESON_AXG_TDM_INTERFACE=m +CONFIG_SND_MESON_AXG_TODDR=m +CONFIG_SND_MESON_CARD_UTILS=m +CONFIG_SND_MESON_CODEC_GLUE=m +CONFIG_SND_MESON_G12A_TOACODEC=m +CONFIG_SND_MESON_G12A_TOHDMITX=m +CONFIG_SND_MESON_GX_SOUND_CARD=m +CONFIG_SND_MIA=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MONA=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_OXFW=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_PCI=y +CONFIG_SND_PCMCIA=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_PCSP=m +CONFIG_SND_PCXHR=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_PPC=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SAMSUNG_I2S=m +CONFIG_SND_SAMSUNG_PCM=m +CONFIG_SND_SAMSUNG_SPDIF=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SIMPLE_CARD_UTILS=m +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ACPI=m +CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_ADAU1761=m +CONFIG_SND_SOC_ADAU1761_I2C=m +CONFIG_SND_SOC_ADAU1761_SPI=m +CONFIG_SND_SOC_ADAU17X1=m +CONFIG_SND_SOC_ADAU7002=m +CONFIG_SND_SOC_ADAU7118=m +CONFIG_SND_SOC_ADAU7118_HW=m +CONFIG_SND_SOC_ADAU7118_I2C=m +CONFIG_SND_SOC_ADAU_UTILS=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4118=m +CONFIG_SND_SOC_AK4458=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_AK5558=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_ALC5632=m +CONFIG_SND_SOC_AMD_ACP=m +CONFIG_SND_SOC_AMD_ACP3x=m +CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m +CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m +CONFIG_SND_SOC_AMD_RENOIR=m +CONFIG_SND_SOC_AMD_RENOIR_MACH=m +CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m +CONFIG_SND_SOC_APQ8016_SBC=m +CONFIG_SND_SOC_ARIZONA=m +CONFIG_SND_SOC_ARNDALE=m +CONFIG_SND_SOC_BD28623=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_COMPRESS=y +CONFIG_SND_SOC_CPCAP=m +CONFIG_SND_SOC_CROS_EC_CODEC=m +CONFIG_SND_SOC_CS35L32=m +CONFIG_SND_SOC_CS35L33=m +CONFIG_SND_SOC_CS35L34=m +CONFIG_SND_SOC_CS35L35=m +CONFIG_SND_SOC_CS35L36=m +CONFIG_SND_SOC_CS4265=m +CONFIG_SND_SOC_CS4270=m +CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS4271_I2C=m +CONFIG_SND_SOC_CS4271_SPI=m +CONFIG_SND_SOC_CS42L42=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L51_I2C=m +CONFIG_SND_SOC_CS42L52=m +CONFIG_SND_SOC_CS42L56=m +CONFIG_SND_SOC_CS42L73=m +CONFIG_SND_SOC_CS42XX8=m +CONFIG_SND_SOC_CS42XX8_I2C=m +CONFIG_SND_SOC_CS43130=m +CONFIG_SND_SOC_CS4341=m +CONFIG_SND_SOC_CS4349=m +CONFIG_SND_SOC_CS53L30=m +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_DA7219=m +CONFIG_SND_SOC_DAVINCI_MCASP=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_ES7134=m +CONFIG_SND_SOC_ES7241=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m +CONFIG_SND_SOC_EUKREA_TLV320=m +CONFIG_SND_SOC_FSL_ASOC_CARD=m +CONFIG_SND_SOC_FSL_ASRC=m +CONFIG_SND_SOC_FSL_AUDMIX=m +CONFIG_SND_SOC_FSL_EASRC=m +CONFIG_SND_SOC_FSL_ESAI=m +CONFIG_SND_SOC_FSL_MICFIL=m +CONFIG_SND_SOC_FSL_MQS=m +CONFIG_SND_SOC_FSL_SAI=m +CONFIG_SND_SOC_FSL_SPDIF=m +CONFIG_SND_SOC_FSL_UTILS=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_GTM601=m +CONFIG_SND_SOC_HDAC_HDA=m +CONFIG_SND_SOC_HDAC_HDMI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_IMG=y +CONFIG_SND_SOC_IMG_I2S_IN=m +CONFIG_SND_SOC_IMG_I2S_OUT=m +CONFIG_SND_SOC_IMG_PARALLEL_OUT=m +CONFIG_SND_SOC_IMG_PISTACHIO_INTERNAL_DAC=m +CONFIG_SND_SOC_IMG_SPDIF_IN=m +CONFIG_SND_SOC_IMG_SPDIF_OUT=m +CONFIG_SND_SOC_IMX_AUDMIX=m +CONFIG_SND_SOC_IMX_ES8328=m +CONFIG_SND_SOC_IMX_MC13783=m +CONFIG_SND_SOC_IMX_PCM_FIQ=y +CONFIG_SND_SOC_IMX_SPDIF=m +CONFIG_SND_SOC_IMX_SSI=m +CONFIG_SND_SOC_INNO_RK3036=m +CONFIG_SND_SOC_INTEL_APL=m +CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_COMMON=m +CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH=m +# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set +# CONFIG_SND_SOC_INTEL_CFL is not set +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +# CONFIG_SND_SOC_INTEL_CML_H is not set +# CONFIG_SND_SOC_INTEL_CML_LP is not set +CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m +# CONFIG_SND_SOC_INTEL_CNL is not set +CONFIG_SND_SOC_INTEL_DA7219_MAX98357A_GENERIC=m +CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m +CONFIG_SND_SOC_INTEL_GLK=m +CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_HASWELL=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_KBL=m +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_KBL_RT5663_RT5514_MAX98927_MACH=m +CONFIG_SND_SOC_INTEL_MACH=y +CONFIG_SND_SOC_INTEL_SKL=m +CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m +CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m +# CONFIG_SND_SOC_INTEL_SKYLAKE is not set +CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m +CONFIG_SND_SOC_INTEL_SKYLAKE_FAMILY=m +# CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC is not set +CONFIG_SND_SOC_INTEL_SKYLAKE_SSP_CLK=m +CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_DA7219_MAX98373_MACH=m +CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m +CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH=m +CONFIG_SND_SOC_INTEL_SST=m +CONFIG_SND_SOC_INTEL_SST_ACPI=m +CONFIG_SND_SOC_INTEL_SST_FIRMWARE=m +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y +# CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES is not set +CONFIG_SND_SOC_LOCHNAGAR_SC=m +CONFIG_SND_SOC_LPASS_APQ8016=m +CONFIG_SND_SOC_LPASS_CPU=m +CONFIG_SND_SOC_LPASS_IPQ806X=m +CONFIG_SND_SOC_LPASS_PLATFORM=m +CONFIG_SND_SOC_MAX9759=m +CONFIG_SND_SOC_MAX98088=m +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX98357A=m +CONFIG_SND_SOC_MAX98373=m +CONFIG_SND_SOC_MAX98390=m +CONFIG_SND_SOC_MAX98504=m +CONFIG_SND_SOC_MAX9860=m +CONFIG_SND_SOC_MAX9867=m +CONFIG_SND_SOC_MAX98927=m +CONFIG_SND_SOC_MC13783=m +CONFIG_SND_SOC_MEDIATEK=m +CONFIG_SND_SOC_MESON_T9015=m +CONFIG_SND_SOC_MIKROE_PROTO=m +CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m +CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m +CONFIG_SND_SOC_MSM8996=m +# CONFIG_SND_SOC_MT2701 is not set +CONFIG_SND_SOC_MT6351=m +CONFIG_SND_SOC_MT6358=m +CONFIG_SND_SOC_MT6660=m +CONFIG_SND_SOC_MT6797=m +CONFIG_SND_SOC_MT6797_MT6351=m +# CONFIG_SND_SOC_MT8173 is not set +CONFIG_SND_SOC_MT8183=m +CONFIG_SND_SOC_MT8183_DA7219_MAX98357A=m +CONFIG_SND_SOC_MT8183_MT6358_TS3A227E_MAX98357A=m +CONFIG_SND_SOC_MTK_BTCVSD=m +CONFIG_SND_SOC_NAU8540=m +CONFIG_SND_SOC_NAU8810=m +CONFIG_SND_SOC_NAU8822=m +CONFIG_SND_SOC_NAU8824=m +CONFIG_SND_SOC_NAU8825=m +CONFIG_SND_SOC_NOKIA_RX51=m +CONFIG_SND_SOC_ODROID=m +CONFIG_SND_SOC_OMAP3_PANDORA=m +CONFIG_SND_SOC_OMAP3_TWL4030=m +CONFIG_SND_SOC_OMAP_ABE_TWL6040=m +CONFIG_SND_SOC_OMAP_DMIC=m +CONFIG_SND_SOC_OMAP_MCBSP=m +CONFIG_SND_SOC_OMAP_MCPDM=m +CONFIG_SND_SOC_PCM1681=m +CONFIG_SND_SOC_PCM1789=m +CONFIG_SND_SOC_PCM1789_I2C=m +CONFIG_SND_SOC_PCM179X=m +CONFIG_SND_SOC_PCM179X_I2C=m +CONFIG_SND_SOC_PCM179X_SPI=m +CONFIG_SND_SOC_PCM186X=m +CONFIG_SND_SOC_PCM186X_I2C=m +CONFIG_SND_SOC_PCM186X_SPI=m +CONFIG_SND_SOC_PCM3060=m +CONFIG_SND_SOC_PCM3060_I2C=m +CONFIG_SND_SOC_PCM3060_SPI=m +CONFIG_SND_SOC_PCM3168A=m +CONFIG_SND_SOC_PCM3168A_I2C=m +CONFIG_SND_SOC_PCM3168A_SPI=m +CONFIG_SND_SOC_PCM512x=m +CONFIG_SND_SOC_PCM512x_I2C=m +CONFIG_SND_SOC_PCM512x_SPI=m +CONFIG_SND_SOC_QCOM=m +CONFIG_SND_SOC_QCOM_COMMON=m +CONFIG_SND_SOC_QDSP6=m +CONFIG_SND_SOC_QDSP6_ADM=m +CONFIG_SND_SOC_QDSP6_AFE=m +CONFIG_SND_SOC_QDSP6_AFE_DAI=m +CONFIG_SND_SOC_QDSP6_ASM=m +CONFIG_SND_SOC_QDSP6_ASM_DAI=m +CONFIG_SND_SOC_QDSP6_COMMON=m +CONFIG_SND_SOC_QDSP6_CORE=m +CONFIG_SND_SOC_QDSP6_ROUTING=m +CONFIG_SND_SOC_RCAR=m +CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m +CONFIG_SND_SOC_RK3328=m +CONFIG_SND_SOC_RK3399_GRU_SOUND=m +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_I2S=m +CONFIG_SND_SOC_ROCKCHIP_MAX98090=m +CONFIG_SND_SOC_ROCKCHIP_PDM=m +CONFIG_SND_SOC_ROCKCHIP_RT5645=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_RT1011=m +CONFIG_SND_SOC_RT1015=m +CONFIG_SND_SOC_RT1308_SDW=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT298=m +CONFIG_SND_SOC_RT5514=m +CONFIG_SND_SOC_RT5514_SPI=m +CONFIG_SND_SOC_RT5616=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5651=m +CONFIG_SND_SOC_RT5660=m +CONFIG_SND_SOC_RT5663=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_RT5682=m +CONFIG_SND_SOC_RT5682_I2C=m +CONFIG_SND_SOC_RT5682_SDW=m +CONFIG_SND_SOC_RT700=m +CONFIG_SND_SOC_RT700_SDW=m +CONFIG_SND_SOC_RT711=m +CONFIG_SND_SOC_RT711_SDW=m +CONFIG_SND_SOC_RT715=m +CONFIG_SND_SOC_RT715_SDW=m +CONFIG_SND_SOC_SAMSUNG=m +CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m +CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m +CONFIG_SND_SOC_SAMSUNG_TM2_WM5110=m +CONFIG_SND_SOC_SDM845=m +CONFIG_SND_SOC_SH4_FSI=m +CONFIG_SND_SOC_SI476X=m +CONFIG_SND_SOC_SIGMADSP=m +CONFIG_SND_SOC_SIGMADSP_I2C=m +CONFIG_SND_SOC_SIGMADSP_REGMAP=m +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m +CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m +CONFIG_SND_SOC_SMDK_WM8994_PCM=m +CONFIG_SND_SOC_SNOW=m +CONFIG_SND_SOC_SOF=m +CONFIG_SND_SOC_SOF_ACPI=m +CONFIG_SND_SOC_SOF_APOLLOLAKE=m +CONFIG_SND_SOC_SOF_APOLLOLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_CANNONLAKE=m +CONFIG_SND_SOC_SOF_CANNONLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_COFFEELAKE=m +CONFIG_SND_SOC_SOF_COFFEELAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_COMETLAKE=m +CONFIG_SND_SOC_SOF_COMETLAKE_LP_SUPPORT=y +CONFIG_SND_SOC_SOF_COMETLAKE_SUPPORT=y +# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set +# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set +CONFIG_SND_SOC_SOF_ELKHARTLAKE=m +CONFIG_SND_SOC_SOF_ELKHARTLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_GEMINILAKE=m +CONFIG_SND_SOC_SOF_GEMINILAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_HDA=m +# CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 is not set +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y +CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_LINK=y +CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_ICELAKE=m +CONFIG_SND_SOC_SOF_ICELAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_IMX8=m +CONFIG_SND_SOC_SOF_IMX8M=m +CONFIG_SND_SOC_SOF_IMX8M_SUPPORT=y +CONFIG_SND_SOC_SOF_IMX8_SUPPORT=y +CONFIG_SND_SOC_SOF_IMX_OF=m +CONFIG_SND_SOC_SOF_IMX_TOPLEVEL=y +CONFIG_SND_SOC_SOF_INTEL_ACPI=m +CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m +CONFIG_SND_SOC_SOF_INTEL_COMMON=m +CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m +CONFIG_SND_SOC_SOF_INTEL_PCI=m +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y +CONFIG_SND_SOC_SOF_JASPERLAKE=m +CONFIG_SND_SOC_SOF_JASPERLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_MERRIFIELD=m +CONFIG_SND_SOC_SOF_MERRIFIELD_SUPPORT=y +CONFIG_SND_SOC_SOF_OF=m +CONFIG_SND_SOC_SOF_PCI=m +CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_TIGERLAKE=m +CONFIG_SND_SOC_SOF_TIGERLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_XTENSA=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SPRD=m +CONFIG_SND_SOC_SPRD_MCDT=m +CONFIG_SND_SOC_SSM2305=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_SSM2602_I2C=m +CONFIG_SND_SOC_SSM2602_SPI=m +CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m +CONFIG_SND_SOC_STORM=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS2562=m +CONFIG_SND_SOC_TAS2770=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TAS5720=m +CONFIG_SND_SOC_TAS6424=m +CONFIG_SND_SOC_TDA7419=m +CONFIG_SND_SOC_TEGRA=m +CONFIG_SND_SOC_TEGRA20_AC97=m +CONFIG_SND_SOC_TEGRA20_DAS=m +CONFIG_SND_SOC_TEGRA20_I2S=m +CONFIG_SND_SOC_TEGRA20_SPDIF=m +CONFIG_SND_SOC_TEGRA30_AHUB=m +CONFIG_SND_SOC_TEGRA30_I2S=m +CONFIG_SND_SOC_TEGRA_ALC5632=m +CONFIG_SND_SOC_TEGRA_MAX98090=m +CONFIG_SND_SOC_TEGRA_RT5640=m +CONFIG_SND_SOC_TEGRA_RT5677=m +CONFIG_SND_SOC_TEGRA_SGTL5000=m +CONFIG_SND_SOC_TEGRA_TRIMSLICE=m +CONFIG_SND_SOC_TEGRA_WM8753=m +CONFIG_SND_SOC_TEGRA_WM8903=m +CONFIG_SND_SOC_TEGRA_WM9712=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TI_EDMA_PCM=m +CONFIG_SND_SOC_TI_SDMA_PCM=m +CONFIG_SND_SOC_TI_UDMA_PCM=m +CONFIG_SND_SOC_TLV320ADCX140=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m +CONFIG_SND_SOC_TLV320AIC31XX=m +CONFIG_SND_SOC_TLV320AIC32X4=m +CONFIG_SND_SOC_TLV320AIC32X4_I2C=m +CONFIG_SND_SOC_TLV320AIC32X4_SPI=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TOPOLOGY=y +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_TSCS42XX=m +CONFIG_SND_SOC_TSCS454=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_UDA1334=m +CONFIG_SND_SOC_UNIPHIER=m +CONFIG_SND_SOC_UNIPHIER_AIO=m +CONFIG_SND_SOC_UNIPHIER_EVEA_CODEC=m +CONFIG_SND_SOC_UNIPHIER_LD11=m +CONFIG_SND_SOC_UNIPHIER_PXS2=m +CONFIG_SND_SOC_WCD9335=m +CONFIG_SND_SOC_WCD934X=m +CONFIG_SND_SOC_WM5110=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8524=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8904=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8974=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_WM8994=m +CONFIG_SND_SOC_WM9712=m +CONFIG_SND_SOC_WM_ADSP=m +CONFIG_SND_SOC_WM_HUBS=m +CONFIG_SND_SOC_WSA881X=m +CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=m +CONFIG_SND_SOC_XILINX_I2S=m +CONFIG_SND_SOC_XILINX_SPDIF=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SOC_ZL38060=m +CONFIG_SND_SOC_ZX_AUD96P22=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m +CONFIG_SND_SST_IPC=m +CONFIG_SND_SST_IPC_ACPI=m +CONFIG_SND_SST_IPC_PCI=m +# CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set +# CONFIG_SND_SUN4I_SPDIF is not set +CONFIG_SND_SUN50I_CODEC_ANALOG=m +CONFIG_SND_SUN8I_ADDA_PR_REGMAP=m +CONFIG_SND_SUN8I_CODEC=m +CONFIG_SND_SUN8I_CODEC_ANALOG=m +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_SYNTH_EMUX=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_VARIAX=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VMASTER=y +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_X86=y +CONFIG_SND_XEN_FRONTEND=m +CONFIG_SND_YMFPCI=m +CONFIG_SNI_AVE=m +CONFIG_SNI_NETSEC=m +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_SOCK_VALIDATE_XMIT=y +# CONFIG_SOC_AM43XX is not set +CONFIG_SOC_ASPEED=y +CONFIG_SOC_BUS=y +CONFIG_SOC_DRA7XX=y +CONFIG_SOC_EXYNOS5250=y +CONFIG_SOC_EXYNOS5260=y +CONFIG_SOC_EXYNOS5410=y +CONFIG_SOC_EXYNOS5420=y +CONFIG_SOC_EXYNOS5800=y +CONFIG_SOC_HAS_OMAP2_SDRC=y +CONFIG_SOC_HAS_REALTIME_COUNTER=y +CONFIG_SOC_IMX5=y +CONFIG_SOC_IMX50=y +CONFIG_SOC_IMX51=y +# CONFIG_SOC_IMX53 is not set +CONFIG_SOC_IMX6=y +CONFIG_SOC_IMX6Q=y +CONFIG_SOC_IMX6SL=y +CONFIG_SOC_IMX6SLL=y +CONFIG_SOC_IMX6SX=y +CONFIG_SOC_IMX6UL=y +CONFIG_SOC_IMX7D=y +CONFIG_SOC_IMX7D_CA7=y +CONFIG_SOC_IMX7ULP=y +# CONFIG_SOC_LS1021A is not set +CONFIG_SOC_OMAP3430=y +# CONFIG_SOC_OMAP5 is not set +CONFIG_SOC_RENESAS=y +CONFIG_SOC_SAMSUNG=y +CONFIG_SOC_TEGRA20_VOLTAGE_COUPLER=y +CONFIG_SOC_TEGRA30_VOLTAGE_COUPLER=y +CONFIG_SOC_TEGRA_FLOWCTRL=y +CONFIG_SOC_TEGRA_FUSE=y +CONFIG_SOC_TEGRA_PMC=y +CONFIG_SOC_TEGRA_POWERGATE_BPMP=y +CONFIG_SOC_TI81XX=y +CONFIG_SOC_VF610=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOFT_WATCHDOG_PRETIMEOUT=y +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_FF=y +CONFIG_SONY_LAPTOP=m +CONFIG_SOUNDWIRE=m +CONFIG_SOUNDWIRE_CADENCE=m +CONFIG_SOUNDWIRE_INTEL=m +CONFIG_SOUNDWIRE_QCOM=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SP5100_TCO=m +CONFIG_SPAPR_TCE_IOMMU=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSE_IRQ=y +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPI_ALTERA=m +CONFIG_SPI_AMD=m +CONFIG_SPI_ARMADA_3700=m +CONFIG_SPI_ASPEED_SMC=m +CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_BCM_QSPI=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_CADENCE=m +CONFIG_SPI_CADENCE_QUADSPI=m +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DLN2=m +CONFIG_SPI_DW_DMA=y +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_DYNAMIC=y +CONFIG_SPI_FSI=m +CONFIG_SPI_FSL_DSPI=m +CONFIG_SPI_FSL_LIB=y +CONFIG_SPI_FSL_LPSPI=m +CONFIG_SPI_FSL_QUADSPI=m +CONFIG_SPI_FSL_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_HISI_SFC=m +CONFIG_SPI_HISI_SFC_V3XX=m +CONFIG_SPI_IMX=m +# CONFIG_SPI_INTEL_SPI_PCI is not set +# CONFIG_SPI_INTEL_SPI_PLATFORM is not set +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_LOOPBACK_TEST=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y +CONFIG_SPI_MESON_SPICC=m +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_MT65XX=m +CONFIG_SPI_MTK_NOR=m +CONFIG_SPI_MUX=m +CONFIG_SPI_MXIC=m +CONFIG_SPI_NPCM_FIU=m +CONFIG_SPI_NPCM_PSPI=m +CONFIG_SPI_NXP_FLEXSPI=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=y +CONFIG_SPI_ORION=m +CONFIG_SPI_PL022=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPI_QCOM_GENI=m +CONFIG_SPI_QCOM_QSPI=m +CONFIG_SPI_QUP=m +CONFIG_SPI_RSPI=m +CONFIG_SPI_S3C64XX=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SH_HSPI=m +CONFIG_SPI_SH_MSIOF=m +CONFIG_SPI_SIFIVE=m +CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_MT27XX=m +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m +CONFIG_SPI_SLAVE_TIME=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_SPRD=m +CONFIG_SPI_SPRD_ADI=m +# CONFIG_SPI_SUN4I is not set +CONFIG_SPI_SUN6I=m +CONFIG_SPI_SYNQUACER=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_TEGRA20_SLINK=m +CONFIG_SPI_THUNDERX=m +CONFIG_SPI_TI_QSPI=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_UNIPHIER=m +CONFIG_SPI_XCOMM=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPI_XLP=m +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPMI_MSM_PMIC_ARB=m +CONFIG_SPMI_PMIC_CLKDIV=m +CONFIG_SPRD_COMMON_CLK=m +CONFIG_SPRD_DMA=m +CONFIG_SPRD_EFUSE=m +CONFIG_SPRD_MBOX=m +CONFIG_SPRD_SC9860_CLK=m +CONFIG_SPRD_SC9863A_CLK=m +CONFIG_SPRD_THERMAL=m +CONFIG_SPRD_TIMER=y +CONFIG_SPRD_WATCHDOG=m +CONFIG_SPS30=m +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_EMBEDDED is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_SRAM_EXEC=y +CONFIG_SRCU=y +CONFIG_SRF04=m +CONFIG_SRF08=m +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SPROM=y +CONFIG_SSFDC=m +CONFIG_SSI_PROTOCOL=m +CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_PER_TASK=y +CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STACK_TRACER=y +CONFIG_STACK_VALIDATION=y +CONFIG_STAGING_APEX_DRIVER=m +# CONFIG_STAGING_BOARD is not set +CONFIG_STAGING_GASKET_FRAMEWORK=m +CONFIG_STAGING_MEDIA=y +# CONFIG_STATIC_KEYS_SELFTEST is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_STE10XP=m +CONFIG_STK3310=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +CONFIG_STM=m +CONFIG_STMMAC_ETH=m +CONFIG_STMMAC_PCI=m +CONFIG_STMMAC_PLATFORM=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMPE_ADC=m +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STMP_DEVICE=y +CONFIG_STM_DUMMY=m +CONFIG_STM_PROTO_BASIC=m +CONFIG_STM_PROTO_SYS_T=m +CONFIG_STM_SOURCE_CONSOLE=m +CONFIG_STM_SOURCE_FTRACE=m +CONFIG_STM_SOURCE_HEARTBEAT=m +CONFIG_STP=m +CONFIG_STPMIC1_WATCHDOG=m +CONFIG_STREAM_PARSER=y +CONFIG_STRICT_DEVMEM=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_STRICT_MODULE_RWX=y +# CONFIG_STRING_SELFTEST is not set +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_STUB_CLK_HI3660=y +CONFIG_STUB_CLK_HI6220=y +CONFIG_STX104=m +CONFIG_ST_UVIS25=m +CONFIG_ST_UVIS25_I2C=m +CONFIG_ST_UVIS25_SPI=m +# CONFIG_SUN4I_EMAC is not set +# CONFIG_SUN4I_GPADC is not set +CONFIG_SUN50I_A64_CCU=y +CONFIG_SUN50I_DE2_BUS=y +CONFIG_SUN50I_ERRATUM_UNKNOWN1=y +CONFIG_SUN50I_H6_CCU=y +CONFIG_SUN50I_H6_R_CCU=y +CONFIG_SUN50I_IOMMU=y +CONFIG_SUN6I_MSGBOX=y +CONFIG_SUN8I_A83T_CCU=y +CONFIG_SUN8I_DE2_CCU=y +CONFIG_SUN8I_H3_CCU=y +CONFIG_SUN8I_R_CCU=y +CONFIG_SUN8I_THERMAL=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNGEM_PHY=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_DEBUG=y +# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_SWAP=y +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUNXI_CCU=y +CONFIG_SUNXI_RSB=m +CONFIG_SUNXI_SRAM=y +CONFIG_SUNXI_WATCHDOG=m +CONFIG_SURFACE3_WMI=m +CONFIG_SURFACE_3_BUTTON=m +CONFIG_SURFACE_3_POWER_OPREGION=m +CONFIG_SURFACE_PRO3_BUTTON=m +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SWPHY=y +CONFIG_SWP_EMULATE=y +CONFIG_SWP_EMULATION=y +CONFIG_SW_SYNC=y +CONFIG_SX9310=m +CONFIG_SX9500=m +CONFIG_SXGBE_ETH=m +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYNC_FILE=y +CONFIG_SYNTH_EVENTS=y +# CONFIG_SYNTH_EVENT_GEN_TEST is not set +CONFIG_SYN_COOKIES=y +CONFIG_SYSCON_REBOOT_MODE=m +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSC_R8A7742=y +CONFIG_SYSC_R8A7743=y +CONFIG_SYSC_R8A7745=y +CONFIG_SYSC_R8A77470=y +CONFIG_SYSC_R8A774A1=y +CONFIG_SYSC_R8A774B1=y +CONFIG_SYSC_R8A774C0=y +CONFIG_SYSC_R8A7779=y +CONFIG_SYSC_R8A7790=y +CONFIG_SYSC_R8A7791=y +CONFIG_SYSC_R8A7792=y +CONFIG_SYSC_R8A7794=y +CONFIG_SYSC_R8A7795=y +CONFIG_SYSC_R8A77960=y +CONFIG_SYSC_R8A77961=y +CONFIG_SYSC_R8A77965=y +CONFIG_SYSC_R8A77970=y +CONFIG_SYSC_R8A77980=y +CONFIG_SYSC_R8A77990=y +CONFIG_SYSC_R8A77995=y +CONFIG_SYSC_RCAR=y +CONFIG_SYSC_RMOBILE=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_SYSTEM76_ACPI=m +CONFIG_SYSTEMPORT=m +CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" +CONFIG_SYSTEM_BLACKLIST_KEYRING=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +CONFIG_SYSTEM_EXTRA_CERTIFICATE=y +CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_SYS_SUPPORTS_EM_STI=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_SYS_SUPPORTS_SH_CMT=y +CONFIG_SYS_SUPPORTS_SH_MTU2=y +CONFIG_SYS_SUPPORTS_SH_TMU=y +CONFIG_T5403=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_GTCO=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TAHVO_USB=m +CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y +CONFIG_TAP=m +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_TASK_XACCT=y +CONFIG_TCG_ATMEL=m +CONFIG_TCG_CRB=y +CONFIG_TCG_FTPM_TEE=m +CONFIG_TCG_IBMVTPM=y +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TIS=y +CONFIG_TCG_TIS_CORE=y +CONFIG_TCG_TIS_SPI=m +CONFIG_TCG_TIS_SPI_CR50=y +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TCG_TPM=y +CONFIG_TCG_VTPM_PROXY=m +CONFIG_TCG_XEN=m +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set +CONFIG_TCM_USER2=m +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BBR=m +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_MD5SIG=y +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_TEE=m +CONFIG_TEE_BNXT_FW=m +CONFIG_TEGRA124_EMC=y +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA20_EMC=y +CONFIG_TEGRA30_EMC=y +CONFIG_TEGRA_AHB=y +CONFIG_TEGRA_BPMP=y +CONFIG_TEGRA_BPMP_THERMAL=m +CONFIG_TEGRA_CLK_DFLL=y +CONFIG_TEGRA_GMI=m +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y +CONFIG_TEGRA_HSP_MBOX=y +CONFIG_TEGRA_IOMMU_GART=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEGRA_IVC=y +CONFIG_TEGRA_MC=y +# CONFIG_TEGRA_SOCTHERM is not set +CONFIG_TEGRA_TIMER=y +CONFIG_TEGRA_VDE=m +CONFIG_TEGRA_WATCHDOG=m +CONFIG_TEHUTI=m +CONFIG_TELCLOCK=m +CONFIG_TERANETICS_PHY=m +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +# CONFIG_TEST_BITFIELD is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_BITOPS is not set +CONFIG_TEST_BLACKHOLE_DEV=m +CONFIG_TEST_BPF=m +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_HMM is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_LIVEPATCH is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_LOCKUP is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_MIN_HEAP is not set +# CONFIG_TEST_OBJAGG is not set +# CONFIG_TEST_OVERFLOW is not set +# CONFIG_TEST_PARMAN is not set +CONFIG_TEST_POWER=m +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_SORT is not set +# CONFIG_TEST_STACKINIT is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_VMALLOC is not set +# CONFIG_TEST_XARRAY is not set +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_EMULATION=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_MMIO=m +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_STATISTICS=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +# CONFIG_THINKPAD_ACPI_DEBUG is not set +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THP_SWAP=y +CONFIG_THREAD_INFO_IN_TASK=y +CONFIG_THREAD_SHIFT=14 +CONFIG_THRUSTMASTER_FF=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_THUNDERX2_PMU=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_RGX=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TICK_ONESHOT=y +CONFIG_TIFM_7XX1=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_TIMERFD=y +CONFIG_TIMER_ACPI=y +CONFIG_TIMER_IMX_SYS_CTR=y +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_TIME_NS=y +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_ST7586=m +CONFIG_TINYDRM_ST7735R=m +CONFIG_TIPC=m +CONFIG_TIPC_CRYPTO=y +CONFIG_TIPC_DIAG=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC0832=m +CONFIG_TI_ADC084S021=m +CONFIG_TI_ADC108S102=m +CONFIG_TI_ADC12138=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_ADC161S626=m +CONFIG_TI_ADS1015=m +CONFIG_TI_ADS124S08=m +CONFIG_TI_ADS7950=m +CONFIG_TI_ADS8344=m +CONFIG_TI_ADS8688=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_AM65_CPSW_TAS=y +CONFIG_TI_CPPI41=m +CONFIG_TI_CPSW=y +# CONFIG_TI_CPSW_PHY_SEL is not set +CONFIG_TI_CPSW_SWITCHDEV=m +CONFIG_TI_CPTS=y +CONFIG_TI_DAC082S085=m +CONFIG_TI_DAC5571=m +CONFIG_TI_DAC7311=m +CONFIG_TI_DAC7612=m +CONFIG_TI_DAVINCI_EMAC=m +CONFIG_TI_DAVINCI_MDIO=y +CONFIG_TI_DMA_CROSSBAR=y +CONFIG_TI_EDMA=y +CONFIG_TI_EMIF=m +CONFIG_TI_EMIF_SRAM=m +CONFIG_TI_EQEP=m +CONFIG_TI_K3_AM65_CPSW_NUSS=m +CONFIG_TI_K3_AM65_CPTS=m +CONFIG_TI_K3_PSIL=y +CONFIG_TI_K3_RINGACC=y +CONFIG_TI_K3_UDMA=y +CONFIG_TI_K3_UDMA_GLUE_LAYER=y +CONFIG_TI_MESSAGE_MANAGER=y +CONFIG_TI_PIPE3=m +CONFIG_TI_PWMSS=y +CONFIG_TI_SCI_CLK=m +# CONFIG_TI_SCI_CLK_PROBE_FROM_FW is not set +CONFIG_TI_SCI_INTA_IRQCHIP=y +CONFIG_TI_SCI_INTA_MSI_DOMAIN=y +CONFIG_TI_SCI_INTR_IRQCHIP=y +CONFIG_TI_SCI_PM_DOMAINS=m +CONFIG_TI_SCI_PROTOCOL=y +CONFIG_TI_ST=m +CONFIG_TI_SYSC=y +CONFIG_TI_SYSCON_CLK=y +CONFIG_TI_THERMAL=y +CONFIG_TI_TLC4541=m +CONFIG_TLAN=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_TMD_HERMES=m +CONFIG_TMP006=m +CONFIG_TMP007=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TN3215=y +CONFIG_TN3215_CONSOLE=y +CONFIG_TN3270=y +CONFIG_TN3270_CONSOLE=y +CONFIG_TN3270_FS=m +CONFIG_TN3270_TTY=y +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_TORTURE_TEST=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +# CONFIG_TOSHIBA_WMI is not set +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADC=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AR1021_I2C=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ATMEL_MXT_T37=y +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_BU21029=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8505=m +CONFIG_TOUCHSCREEN_COLIBRI_VF50=m +CONFIG_TOUCHSCREEN_CY8CTMA140=m +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP4_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP4_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP4_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_DA9034=m +CONFIG_TOUCHSCREEN_DA9052=m +CONFIG_TOUCHSCREEN_DMI=y +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m +CONFIG_TOUCHSCREEN_EKTF2127=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_EXC3000=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_HIDEEP=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_IMX6UL_TSC=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_IPROC=m +CONFIG_TOUCHSCREEN_IQS5XX=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=m +CONFIG_TOUCHSCREEN_MELFAS_MIP4=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_PROPERTIES=y +CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m +CONFIG_TOUCHSCREEN_RM_TS=m +CONFIG_TOUCHSCREEN_ROHM_BU21023=m +CONFIG_TOUCHSCREEN_S6SY761=m +CONFIG_TOUCHSCREEN_SILEAD=m +CONFIG_TOUCHSCREEN_SIS_I2C=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMFTS=m +CONFIG_TOUCHSCREEN_STMPE=m +# CONFIG_TOUCHSCREEN_SUN4I is not set +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_TS4800=m +CONFIG_TOUCHSCREEN_TSC2004=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC2007_IIO=y +CONFIG_TOUCHSCREEN_TSC200X_CORE=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_UCB1400=m +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_ZET6223=m +CONFIG_TOUCHSCREEN_ZFORCE=m +CONFIG_TPL0102=m +CONFIG_TPM_KEY_PARSER=m +CONFIG_TPS68470_PMIC_OPREGION=y +CONFIG_TQMX86_WDT=m +CONFIG_TRACEPOINTS=y +# CONFIG_TRACEPOINT_BENCHMARK is not set +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_TRACE_CLOCK=y +# CONFIG_TRACE_EVAL_MAP_FILE is not set +CONFIG_TRACE_EVENT_INJECT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACING=y +CONFIG_TRACING_MAP=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TREE_RCU=y +CONFIG_TREE_SRCU=y +CONFIG_TRUSTED_FOUNDATIONS=y +CONFIG_TRUSTED_KEYS=y +CONFIG_TS4800_IRQ=m +CONFIG_TS4800_WATCHDOG=m +CONFIG_TSL2583=m +CONFIG_TSL2772=m +CONFIG_TSL4531=m +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +CONFIG_TTPCI_EEPROM=m +CONFIG_TTY=y +CONFIG_TTY_PRINTK_LEVEL=6 +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=y +# CONFIG_TUNE_DEFAULT is not set +# CONFIG_TUNE_Z10 is not set +# CONFIG_TUNE_Z13 is not set +# CONFIG_TUNE_Z14 is not set +CONFIG_TUNE_Z15=y +# CONFIG_TUNE_Z196 is not set +# CONFIG_TUNE_Z900 is not set +# CONFIG_TUNE_Z990 is not set +# CONFIG_TUNE_Z9_109 is not set +# CONFIG_TUNE_ZEC12 is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_TURRIS_MOX_RWTM=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_USB=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6030_GPADC=m +CONFIG_TWL6030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_TYPEC=m +CONFIG_TYPEC_DP_ALTMODE=m +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_HD3SS3220=m +CONFIG_TYPEC_MUX_INTEL_PMC=m +CONFIG_TYPEC_MUX_PI3USB30532=m +CONFIG_TYPEC_NVIDIA_ALTMODE=m +CONFIG_TYPEC_RT1711H=m +CONFIG_TYPEC_TCPCI=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TPS6598X=m +CONFIG_TYPEC_UCSI=m +# CONFIG_TYPEC_WCOVE is not set +CONFIG_TYPHOON=m +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_AUTHENTICATION=y +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_SECURITY=y +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# CONFIG_UBSAN is not set +CONFIG_UBUNTU_HOST=m +CONFIG_UCB1400_CORE=m +CONFIG_UCC=y +CONFIG_UCC_FAST=y +CONFIG_UCC_SLOW=y +CONFIG_UCLAMP_BUCKETS_COUNT=5 +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_UCS2_STRING=y +CONFIG_UCSI_ACPI=m +CONFIG_UCSI_CCG=m +# CONFIG_UDBG_RTAS_CONSOLE is not set +CONFIG_UDF_FS=m +CONFIG_UDMABUF=y +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_ARM=y +CONFIG_UEFI_CPER_X86=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UHID=m +CONFIG_UID16=y +CONFIG_UIO=m +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set +CONFIG_UIO_HV_GENERIC=m +CONFIG_ULI526X=m +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNICODE=y +# CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_UNIPHIER_EFUSE=m +CONFIG_UNIPHIER_MDMAC=m +CONFIG_UNIPHIER_SYSTEM_BUS=y +CONFIG_UNIPHIER_THERMAL=m +CONFIG_UNIPHIER_WATCHDOG=m +CONFIG_UNIPHIER_XDMAC=m +CONFIG_UNISYSSPAR=y +CONFIG_UNISYS_VISORBUS=m +CONFIG_UNISYS_VISORHBA=m +CONFIG_UNISYS_VISORINPUT=m +CONFIG_UNISYS_VISORNIC=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX_DIAG=m +CONFIG_UNIX_SCM=y +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_UNWINDER_FRAME_POINTER=y +# CONFIG_UNWINDER_GUESS is not set +# CONFIG_UNWINDER_ORC is not set +CONFIG_UPROBES=y +CONFIG_UPROBE_EVENTS=y +CONFIG_US5182D=m +CONFIG_USB=y +CONFIG_USB4_NET=m +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=8 +CONFIG_USBIP_VHCI_NR_HCS=1 +CONFIG_USBIP_VUDC=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACM=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AN2720=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ASPEED_VHUB=m +CONFIG_USB_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_BDC_UDC=m +CONFIG_USB_BELKIN=y +CONFIG_USB_BRCMSTB=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CDNS3=m +CONFIG_USB_CDNS3_GADGET=y +CONFIG_USB_CDNS3_HOST=y +CONFIG_USB_CDNS3_IMX=m +CONFIG_USB_CDNS3_PCI_WRAP=m +CONFIG_USB_CDNS3_TI=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_GENERIC=m +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_IMX=m +CONFIG_USB_CHIPIDEA_MSM=m +CONFIG_USB_CHIPIDEA_PCI=m +CONFIG_USB_CHIPIDEA_TEGRA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_COMMON=y +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_CONFIGFS_F_TCM=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONN_GPIO=m +CONFIG_USB_CXACRU=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_DUAL_ROLE is not set +CONFIG_USB_DWC2_HOST=y +# CONFIG_USB_DWC2_PERIPHERAL is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_DUAL_ROLE=y +CONFIG_USB_DWC3_EXYNOS=m +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_HAPS=m +# CONFIG_USB_DWC3_HOST is not set +CONFIG_USB_DWC3_KEYSTONE=m +CONFIG_USB_DWC3_MESON_G12A=m +CONFIG_USB_DWC3_OF_SIMPLE=m +CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_DWC3_QCOM=m +CONFIG_USB_DWC3_ULPI=y +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EG20T=m +CONFIG_USB_EHCI_BRCMSTB=m +CONFIG_USB_EHCI_EXYNOS=y +CONFIG_USB_EHCI_FSL=m +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_NPCM7XX=m +CONFIG_USB_EHCI_HCD_OMAP=m +CONFIG_USB_EHCI_HCD_ORION=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_MXC=m +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TEGRA=m +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FHCI_HCD=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FSL_USB2=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_FS=m +CONFIG_USB_F_HID=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_PRINTER=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_TCM=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC1_LEGACY=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_XILINX=m +CONFIG_USB_GL860=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GR_UDC=m +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_DBGP=m +# CONFIG_USB_G_DBGP_PRINTK is not set +CONFIG_USB_G_DBGP_SERIAL=y +CONFIG_USB_G_HID=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_MULTI_RNDIS=y +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HACKRF=m +# CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSIC_USB4604=m +CONFIG_USB_HSO=m +CONFIG_USB_HUB_USB251XB=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IMX21_HCD=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_DUAL_ROLE=y +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_HCD=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +CONFIG_USB_ISP1761_UDC=y +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_LED_TRIG=y +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_M5602=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_MA901=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MAX3420_UDC=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MON=m +CONFIG_USB_MOUSE=m +CONFIG_USB_MR800=m +CONFIG_USB_MSI2500=m +CONFIG_USB_MTU3=m +# CONFIG_USB_MTU3_DEBUG is not set +CONFIG_USB_MTU3_DUAL_ROLE=y +# CONFIG_USB_MTU3_GADGET is not set +# CONFIG_USB_MTU3_HOST is not set +CONFIG_USB_MUSB_AM35X=m +CONFIG_USB_MUSB_DSPS=m +CONFIG_USB_MUSB_DUAL_ROLE=y +# CONFIG_USB_MUSB_GADGET is not set +# CONFIG_USB_MUSB_HOST is not set +CONFIG_USB_MUSB_MEDIATEK=m +CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_MUSB_SUNXI=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_MV_U3D=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_MXS_PHY=y +CONFIG_USB_NET2272=m +CONFIG_USB_NET2272_DMA=y +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AQC111=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_DRIVERS=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_OHCI_EXYNOS=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_OMAP3=m +CONFIG_USB_OHCI_HCD_PCI=y +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PCI=y +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHY=y +CONFIG_USB_PRINTER=m +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_PXA27X=m +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RAINSHADOW_CEC=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_RAW_GADGET=m +CONFIG_USB_RENESAS_USB3=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_ROLES_INTEL_XHCI=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_S2255=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SI470X=m +CONFIG_USB_SI4713=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_SNP_CORE=m +CONFIG_USB_SNP_UDC_PLAT=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STV06XX=m +CONFIG_USB_TEGRA_PHY=m +CONFIG_USB_TEGRA_XUDC=m +CONFIG_USB_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_UAS=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_UHCI_ASPEED=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_UHCI_PLATFORM=y +CONFIG_USB_UHCI_SUPPORT_NON_PCI_HC=y +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_U_AUDIO=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_VL600=m +CONFIG_USB_WDM=m +CONFIG_USB_XHCI_DBGCAP=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_HISTB=m +CONFIG_USB_XHCI_MTK=m +CONFIG_USB_XHCI_MVEBU=m +CONFIG_USB_XHCI_PCI=m +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_RCAR=m +CONFIG_USB_XHCI_TEGRA=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YUREX=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZERO=m +CONFIG_USB_ZR364XX=m +CONFIG_USELIB=y +CONFIG_USERFAULTFD=y +CONFIG_USERIO=m +CONFIG_USER_NS=y +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_USE_OF=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_UTS_NS=y +CONFIG_UV_MMTIMER=m +CONFIG_U_SERIAL_CONSOLE=y +CONFIG_V4L2_FLASH_LED_CLASS=m +CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_H264=m +CONFIG_V4L2_JPEG_HELPER=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VALIDATE_FS_PARSER=y +CONFIG_VBOXGUEST=m +CONFIG_VBOXSF_FS=m +CONFIG_VCNL3020=m +CONFIG_VCNL4000=m +CONFIG_VCNL4035=m +CONFIG_VDPA_SIM=m +CONFIG_VDSO=y +CONFIG_VEML6030=m +CONFIG_VEML6070=m +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VEXPRESS_CONFIG=y +CONFIG_VF610_ADC=m +CONFIG_VF610_DAC=m +CONFIG_VFAT_FS=y +CONFIG_VFIO_AMBA=m +CONFIG_VFIO_AP=m +CONFIG_VFIO_CCW=m +CONFIG_VFIO_IOMMU_SPAPR_TCE=y +CONFIG_VFIO_MDEV=m +CONFIG_VFIO_MDEV_DEVICE=m +CONFIG_VFIO_NOIOMMU=y +CONFIG_VFIO_PCI_IGD=y +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_NVLINK2=y +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PLATFORM=m +CONFIG_VFIO_PLATFORM_AMDXGBE_RESET=m +CONFIG_VFIO_PLATFORM_BCMFLEXRM_RESET=m +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=m +CONFIG_VFIO_SPAPR_EEH=y +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_VF_USE_ARM_GLOBAL_TIMER=y +# CONFIG_VF_USE_PIT_TIMER is not set +CONFIG_VGASTATE=m +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VGA_CONSOLE=y +CONFIG_VGA_SWITCHEROO=y +CONFIG_VHOST=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set +CONFIG_VHOST_IOTLB=m +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_RING=m +CONFIG_VHOST_SCSI=m +CONFIG_VHOST_VDPA=m +CONFIG_VHOST_VSOCK=m +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_VIA_WDT=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_VIDEO_AD5820=m +CONFIG_VIDEO_AD9389B=m +CONFIG_VIDEO_ADP1653=m +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7343=m +CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_ADV748X=m +CONFIG_VIDEO_ADV7511=m +CONFIG_VIDEO_ADV7511_CEC=y +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7604_CEC=y +CONFIG_VIDEO_ADV7842=m +CONFIG_VIDEO_ADV7842_CEC=y +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AK7375=m +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_ALLEGRO_DVT=m +CONFIG_VIDEO_APTINA_PLL=m +CONFIG_VIDEO_ASPEED=m +CONFIG_VIDEO_ATOMISP=m +CONFIG_VIDEO_ATOMISP_GC0310=m +CONFIG_VIDEO_ATOMISP_GC2235=m +# CONFIG_VIDEO_ATOMISP_ISP2401 is not set +CONFIG_VIDEO_ATOMISP_LM3554=m +CONFIG_VIDEO_ATOMISP_MSRLIST_HELPER=m +CONFIG_VIDEO_ATOMISP_MT9M114=m +CONFIG_VIDEO_ATOMISP_OV2680=m +CONFIG_VIDEO_ATOMISP_OV2722=m +CONFIG_VIDEO_ATOMISP_OV5693=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_BCM2835=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_CADENCE=y +CONFIG_VIDEO_CADENCE_CSI2RX=m +CONFIG_VIDEO_CADENCE_CSI2TX=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_COBALT=m +CONFIG_VIDEO_CODA=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_CX23885=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DT3155=m +CONFIG_VIDEO_DW9714=m +CONFIG_VIDEO_DW9807_VCM=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_ET8EK8=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_FB_IVTV_FORCE_PAT=y +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_GS1662=m +CONFIG_VIDEO_HANTRO=m +CONFIG_VIDEO_HANTRO_IMX8M=y +CONFIG_VIDEO_HANTRO_ROCKCHIP=y +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HI556=m +CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_IMX214=m +CONFIG_VIDEO_IMX219=m +CONFIG_VIDEO_IMX258=m +CONFIG_VIDEO_IMX274=m +CONFIG_VIDEO_IMX290=m +CONFIG_VIDEO_IMX319=m +CONFIG_VIDEO_IMX355=m +CONFIG_VIDEO_IMX7_CSI=m +CONFIG_VIDEO_IMX_CSI=m +CONFIG_VIDEO_IMX_MEDIA=m +CONFIG_VIDEO_IMX_PXP=m +CONFIG_VIDEO_IMX_VDOA=m +CONFIG_VIDEO_IPU3_CIO2=m +CONFIG_VIDEO_IPU3_IMGU=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +# CONFIG_VIDEO_IVTV_DEPRECATED_IOCTLS is not set +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_LM3560=m +CONFIG_VIDEO_LM3646=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_M5MOLS=m +CONFIG_VIDEO_MEDIATEK_VPU=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MESON_VDEC=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_ML86V7667=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9M001=m +CONFIG_VIDEO_MT9M032=m +CONFIG_VIDEO_MT9M111=m +CONFIG_VIDEO_MT9P031=m +CONFIG_VIDEO_MT9T001=m +CONFIG_VIDEO_MT9T112=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MT9V032=m +CONFIG_VIDEO_MT9V111=m +CONFIG_VIDEO_MUX=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_NOON010PC30=m +CONFIG_VIDEO_OMAP2_VOUT=m +CONFIG_VIDEO_OMAP2_VOUT_VRFB=y +CONFIG_VIDEO_OMAP3=m +# CONFIG_VIDEO_OMAP3_DEBUG is not set +CONFIG_VIDEO_OMAP4=m +CONFIG_VIDEO_OV13858=m +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV2659=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV2685=m +CONFIG_VIDEO_OV2740=m +CONFIG_VIDEO_OV5640=m +CONFIG_VIDEO_OV5645=m +CONFIG_VIDEO_OV5647=m +CONFIG_VIDEO_OV5670=m +CONFIG_VIDEO_OV5675=m +CONFIG_VIDEO_OV5695=m +CONFIG_VIDEO_OV6650=m +CONFIG_VIDEO_OV7251=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_OV772X=m +CONFIG_VIDEO_OV7740=m +CONFIG_VIDEO_OV8856=m +CONFIG_VIDEO_OV9640=m +CONFIG_VIDEO_OV9650=m +# CONFIG_VIDEO_PCI_SKELETON is not set +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_QCOM_CAMSS=m +CONFIG_VIDEO_QCOM_VENUS=m +CONFIG_VIDEO_RCAR_CSI2=m +CONFIG_VIDEO_RCAR_DRIF=m +CONFIG_VIDEO_RCAR_VIN=m +CONFIG_VIDEO_RENESAS_CEU=m +CONFIG_VIDEO_RENESAS_FCP=m +CONFIG_VIDEO_RENESAS_FDP1=m +CONFIG_VIDEO_RENESAS_JPU=m +CONFIG_VIDEO_RENESAS_VSP1=m +CONFIG_VIDEO_RJ54N1=m +CONFIG_VIDEO_ROCKCHIP_ISP1=m +CONFIG_VIDEO_ROCKCHIP_RGA=m +CONFIG_VIDEO_ROCKCHIP_VDEC=m +CONFIG_VIDEO_S5C73M3=m +CONFIG_VIDEO_S5K4ECGX=m +CONFIG_VIDEO_S5K5BAF=m +CONFIG_VIDEO_S5K6A3=m +CONFIG_VIDEO_S5K6AA=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA6752HS=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_GO7007=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SAA7164=m +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_SAA7185=m +# CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS is not set +CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m +CONFIG_VIDEO_SAMSUNG_S5P_G2D=m +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m +CONFIG_VIDEO_SMIAPP=m +CONFIG_VIDEO_SMIAPP_PLL=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_SR030PC30=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_ST_MIPID02=m +CONFIG_VIDEO_SUN4I_CSI=m +CONFIG_VIDEO_SUN6I_CSI=m +CONFIG_VIDEO_SUN8I_DEINTERLACE=m +CONFIG_VIDEO_SUN8I_ROTATE=m +CONFIG_VIDEO_SUNXI=y +CONFIG_VIDEO_SUNXI_CEDRUS=m +CONFIG_VIDEO_TC358743=m +CONFIG_VIDEO_TC358743_CEC=y +CONFIG_VIDEO_TDA1997X=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TEGRA=m +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_THS8200=m +CONFIG_VIDEO_TI_CAL=m +CONFIG_VIDEO_TI_CSC=m +CONFIG_VIDEO_TI_SC=m +CONFIG_VIDEO_TI_VPDMA=m +CONFIG_VIDEO_TI_VPE=m +# CONFIG_VIDEO_TI_VPE_DEBUG is not set +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW5864=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW686X=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_TW9910=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_V4L2_TPG=m +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VICODEC=m +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VIMC=m +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VIVID_CEC=y +CONFIG_VIDEO_VIVID_MAX_DEVS=64 +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_VS6624=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_XILINX=m +CONFIG_VIDEO_XILINX_TPG=m +CONFIG_VIDEO_XILINX_VTC=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_FS=m +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_IOMMU=y +CONFIG_VIRTIO_MEM=m +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_PMEM=m +CONFIG_VIRTIO_VDPA=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS_COMMON=m +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VIRT_WIFI=m +CONFIG_VITESSE_PHY=m +CONFIG_VL53L0X_I2C=m +CONFIG_VL6180=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_VMAP_STACK=y +CONFIG_VMCP=y +CONFIG_VMCP_CMA_SIZE=4 +CONFIG_VMD=m +CONFIG_VME_CA91CX42=m +CONFIG_VME_FAKE=m +CONFIG_VME_TSI148=m +CONFIG_VME_USER=m +CONFIG_VMIVME_7805=m +CONFIG_VMLOGRDR=m +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +CONFIG_VMWARE_BALLOON=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_VMWARE_VMCI=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VOP=m +CONFIG_VORTEX=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VSOCKMON=m +CONFIG_VSX=y +CONFIG_VT=y +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_VXLAN=m +CONFIG_VZ89X=m +CONFIG_W1_CON=y +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_MXC=m +CONFIG_W1_MASTER_SGI=m +CONFIG_W1_SLAVE_DS2405=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2430=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2438=m +CONFIG_W1_SLAVE_DS250X=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS2805=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_DS28E17=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_WANXL=m +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_WARN_DYNAMIC_STACK is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP=y +# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC is not set +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m +CONFIG_WATCHDOG_RTAS=m +CONFIG_WATCHDOG_SYSFS=y +CONFIG_WATCH_QUEUE=y +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WDAT_WDT=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WFX=m +CONFIG_WIL6210=m +CONFIG_WIL6210_DEBUGFS=y +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +CONFIG_WILC1000=m +CONFIG_WILC1000_HW_OOB_INTR=y +CONFIG_WILC1000_SDIO=m +CONFIG_WILC1000_SPI=m +CONFIG_WILCO_EC=m +CONFIG_WILCO_EC_DEBUGFS=m +CONFIG_WILCO_EC_EVENTS=m +CONFIG_WILCO_EC_TELEMETRY=m +CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WINBOND_840=m +CONFIG_WINDFARM=m +CONFIG_WIREGUARD=m +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +# CONFIG_WIRELESS_WDS is not set +CONFIG_WIZNET_BUS_ANY=y +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5100_SPI=m +CONFIG_WIZNET_W5300=m +# CONFIG_WKUP_M3_IPC is not set +CONFIG_WKUP_M3_RPROC=m +CONFIG_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_WLAN_VENDOR_ATH=y +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_WLAN_VENDOR_CISCO=y +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_WLAN_VENDOR_QUANTENNA=y +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_WLAN_VENDOR_ST=y +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WMI_BMOF=m +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +CONFIG_X25_ASY=m +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_X86=y +CONFIG_X86_16BIT=y +CONFIG_X86_5LEVEL=y +CONFIG_X86_64=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_64_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG64=y +# CONFIG_X86_CPA_STATISTICS is not set +CONFIG_X86_CPUID=m +CONFIG_X86_CPU_RESCTRL=y +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_X86_DEBUG_FPU=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DIRECT_GBPAGES=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_EXTENDED_PLATFORM=y +CONFIG_X86_FEATURE_NAMES=y +# CONFIG_X86_GOLDFISH is not set +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +# CONFIG_X86_INTEL_MID is not set +CONFIG_X86_INTEL_PSTATE=y +# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set +CONFIG_X86_INTEL_TSX_MODE_OFF=y +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_IOPL_IOPERM=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_MCE=y +CONFIG_X86_MCELOG_LEGACY=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=m +CONFIG_X86_NEED_RELOCS=y +CONFIG_X86_NUMACHIP=y +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_PAT=y +CONFIG_X86_PCC_CPUFREQ=y +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_X86_PMEM_LEGACY=y +CONFIG_X86_PMEM_LEGACY_DEVICE=y +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_X86_SMAP=y +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_SYSFB is not set +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_UMIP=y +CONFIG_X86_UV=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_X86_VMX_FEATURE_NAMES=y +# CONFIG_X86_VSMP is not set +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_X2APIC=y +CONFIG_X86_X32=y +CONFIG_XARRAY_MULTI=y +CONFIG_XDP_SOCKETS=y +CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_XENFS=m +CONFIG_XEN_512GB=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_ACPI_PROCESSOR=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_BACKEND=y +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_COMPAT_XENFS=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_DOM0=y +CONFIG_XEN_EFI=y +CONFIG_XEN_FBDEV_FRONTEND=m +CONFIG_XEN_FRONT_PGDIR_SHBUF=m +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GNTDEV_DMABUF=y +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_GRANT_DMA_ALLOC=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_HAVE_VPMU=y +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_PV=y +# CONFIG_XEN_PVCALLS_BACKEND is not set +CONFIG_XEN_PVCALLS_FRONTEND=m +CONFIG_XEN_PVH=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_PV_SMP=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCRUB_PAGES_DEFAULT=y +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_XEN_SYMS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_WDT=m +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XFRM=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_ESPINTCP=y +CONFIG_XFRM_INTERFACE=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_STATISTICS=y +# CONFIG_XFRM_SUB_POLICY is not set +CONFIG_XFRM_USER=m +# CONFIG_XFS_DEBUG is not set +CONFIG_XFS_FS=m +# CONFIG_XFS_ONLINE_SCRUB is not set +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +# CONFIG_XFS_WARN is not set +CONFIG_XGENE_DMA=m +CONFIG_XGENE_PMU=y +CONFIG_XGENE_SLIMPRO_MBOX=m +CONFIG_XIAOMI_WMI=m +CONFIG_XILINX_AXI_EMAC=m +CONFIG_XILINX_DMA=m +CONFIG_XILINX_GMII2RGMII=m +CONFIG_XILINX_PR_DECOUPLER=m +CONFIG_XILINX_VCU=m +CONFIG_XILINX_XADC=m +CONFIG_XILINX_ZYNQMP_DMA=m +CONFIG_XILLYBUS_OF=m +CONFIG_XILLYBUS_PCIE=m +CONFIG_XIL_AXIS_FIFO=m +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DEFAULT_RO_MODE=y +CONFIG_XMON_DISASSEMBLY=y +CONFIG_XOR_BLOCKS=m +CONFIG_XPOWER_PMIC_OPREGION=y +CONFIG_XPS=y +CONFIG_XXHASH=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_YAM=m +CONFIG_YENTA=m +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_Z3FOLD=m +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBUD=y +CONFIG_ZCRYPT=m +CONFIG_ZCRYPT_MULTIDEVNODES=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZFCP=m +CONFIG_ZISOFS=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_DFLTCC=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONEFS_FS=m +CONFIG_ZONE_DEVICE=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZOPT2201=m +CONFIG_ZPA2326=m +CONFIG_ZPA2326_I2C=m +CONFIG_ZPA2326_SPI=m +CONFIG_ZPOOL=y +CONFIG_ZRAM=m +CONFIG_ZRAM_MEMORY_TRACKING=y +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_ZSWAP=y +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set +# CONFIG_ZSWAP_DEFAULT_ON is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" +# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set +CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y +# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set +CONFIG_ZX_TDM=m +CONFIG_ZYNQMP_FIRMWARE=y +# CONFIG_ZYNQMP_FIRMWARE_DEBUG is not set +CONFIG_ZYNQMP_IPI_MBOX=y +CONFIG_ZYNQMP_PM_DOMAINS=y +CONFIG_ZYNQMP_POWER=y --- linux-5.8.0.orig/debian.master/config/ppc64el/config.common.ppc64el +++ linux-5.8.0/debian.master/config/ppc64el/config.common.ppc64el @@ -0,0 +1,665 @@ +# +# Config options for config.common.ppc64el automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +CONFIG_ABX500_CORE=y +CONFIG_AC97_BUS=m +CONFIG_AD525X_DPOT=m +CONFIG_ADFS_FS=m +CONFIG_AFFS_FS=m +CONFIG_AIX_PARTITION=y +CONFIG_ALIM7101_WDT=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_AMIGA_PARTITION=y +CONFIG_ANDROID=y +CONFIG_APDS9802ALS=m +CONFIG_APPLICOM=m +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=29 +CONFIG_ARCH_MMAP_RND_BITS_MIN=14 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=13 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=7 +CONFIG_ARCNET=m +CONFIG_ATA=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_PIIX=m +CONFIG_ATM=m +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AUXDISPLAY=y +CONFIG_AX88796B_PHY=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BAREUDP=m +CONFIG_BATMAN_ADV=m +CONFIG_BCH=m +CONFIG_BCM84881_PHY=y +CONFIG_BCMA=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BE2ISCSI=m +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BSD_DISKLABEL=y +CONFIG_C2PORT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +CONFIG_CAN=m +CONFIG_CB710_CORE=m +CONFIG_CC_VERSION_TEXT="powerpc64le-linux-gnu-gcc (Ubuntu 10.2.0-8ubuntu1) 10.2.0" +CONFIG_CDROM_PKTCDVD=m +CONFIG_CLOCK_THERMAL=y +CONFIG_CMA=y +CONFIG_CMDLINE="" +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMM=m +CONFIG_COMMON_CLK=y +CONFIG_COUNTER=m +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRAMFS=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +CONFIG_DECNET=m +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMADEVICES=y +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_DM_DEBUG is not set +CONFIG_DNET=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_AST=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DP_AUX_CHARDEV=y +CONFIG_DRM_DP_CEC=y +# CONFIG_DRM_ETNAVIV is not set +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA9950=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m +CONFIG_DRM_QXL=m +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RCAR_LVDS is not set +CONFIG_DRM_VGEM=m +CONFIG_DRM_VKMS=m +CONFIG_DS1682=m +CONFIG_DUMMY_IRQ=m +CONFIG_DW_WATCHDOG=m +CONFIG_ECHO=m +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_EE1004=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFS_FS=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ETHOC=m +CONFIG_EVM_LOAD_X509=y +CONFIG_EXFAT_FS=m +CONFIG_EXTCON=y +CONFIG_F2FS_FS=m +CONFIG_FB_3DFX=m +CONFIG_FB_ARK=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_I740=m +CONFIG_FB_IBM_GXT4500=y +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MATROX=m +CONFIG_FB_MB862XX=m +CONFIG_FB_METRONOME=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_OPENCORES=m +CONFIG_FB_PM2=m +CONFIG_FB_PM3=m +CONFIG_FB_RADEON=m +CONFIG_FB_RIVA=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SM712=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIXED_PHY=y +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FPGA_BRIDGE=m +CONFIG_FPGA_DFL=m +CONFIG_FRAME_WARN=2048 +CONFIG_FUSION=y +CONFIG_GAMEPORT=m +CONFIG_GENERIC_PHY=y +CONFIG_GNSS=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_AMD_FCH=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SIOX=m +CONFIG_GPIO_TPIC2810=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_XILINX=y +CONFIG_GREYBUS=m +CONFIG_HABANA_AI=m +CONFIG_HAMACHI=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HIBERNATION is not set +CONFIG_HID=m +# CONFIG_HIO is not set +CONFIG_HMC6352=m +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HPFS_FS=m +CONFIG_HP_ILO=m +CONFIG_HSI=m +CONFIG_HSR=m +CONFIG_HTC_PASIC3=m +CONFIG_HWMON=y +CONFIG_HWSPINLOCK=y +# CONFIG_HW_RANDOM_CCTRNG is not set +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_I2C_EMEV2 is not set +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID=m +CONFIG_I2C_I801=m +CONFIG_I2C_ISCH=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_MLXCPLD=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +# CONFIG_I2C_SLAVE is not set +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I3C=m +CONFIG_I6300ESB_WDT=m +CONFIG_ICS932S401=m +CONFIG_IEEE802154=m +CONFIG_IIO=m +CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000 +CONFIG_IMA_ARCH_POLICY=y +CONFIG_IMA_DEFAULT_HASH="sha256" +# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set +CONFIG_IMA_DEFAULT_HASH_SHA256=y +CONFIG_IMA_DEFAULT_TEMPLATE="ima-sig" +CONFIG_IMA_LOAD_X509=y +# CONFIG_IMA_NG_TEMPLATE is not set +CONFIG_IMA_READ_POLICY=y +CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT=y +CONFIG_IMA_SIG_TEMPLATE=y +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INTERCONNECT=y +CONFIG_IPACK_BUS=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IP_DCCP_CCID3 is not set +CONFIG_IRQ_BYPASS_MANAGER=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_JFS_FS=m +CONFIG_JME=m +CONFIG_JUMP_LABEL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_GZIP=y +CONFIG_KEXEC_FILE=y +CONFIG_KVM=y +CONFIG_LAPB=m +# CONFIG_LATENCYTOP is not set +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LDM_PARTITION=y +CONFIG_LIBNVDIMM=y +CONFIG_LLC2=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_LZ4_COMPRESS=y +CONFIG_MAC_PARTITION=y +CONFIG_MAILBOX=y +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MCB=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS=y +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_THUNDER=m +CONFIG_MDIO_XPCS=m +CONFIG_MD_MULTIPATH=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +CONFIG_MEMORY=y +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +CONFIG_MEMSTICK=m +# CONFIG_MEM_SOFT_DIRTY is not set +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_IQS62X=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MP2629=m +CONFIG_MFD_MT6360=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_PCF50633=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TPS65086=m +# CONFIG_MFD_TPS65217 is not set +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WCD934X=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM8994=m +CONFIG_MHI_BUS=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_CQHCI=m +# CONFIG_MMC_HSQ is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MOST=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_NAND_ECC_SW_HAMMING=m +CONFIG_MTD_OF_PARTS=m +# CONFIG_MTD_PHYSMAP_GEMINI is not set +# CONFIG_MTD_PHYSMAP_VERSATILE is not set +CONFIG_MTD_RAW_NAND=m +# CONFIG_NET_DSA_MSCC_FELIX is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFP=m +CONFIG_NODES_SHIFT=8 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NOZOMI=m +CONFIG_NR_CPUS=2048 +CONFIG_NTB=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_NVMEM=y +CONFIG_NVRAM=y +CONFIG_N_GSM=m +CONFIG_OF=y +CONFIG_OMFS_FS=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKING=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PANIC_TIMEOUT=10 +CONFIG_PARPORT=m +CONFIG_PATA_SIS=m +CONFIG_PC104=y +# CONFIG_PCCARD is not set +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PINCTRL=y +CONFIG_PM_DEVFREQ=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_SUPPLY=y +CONFIG_PPP=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_CLIENT_LDISC=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +CONFIG_PSTORE=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PWM=y +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +CONFIG_QRTR=m +CONFIG_RAPIDIO=y +CONFIG_RAVE_SP_CORE=m +CONFIG_RAW_DRIVER=m +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_RC_CORE=m +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REISERFS_FS=m +CONFIG_REMOTEPROC=y +CONFIG_RESET_CONTROLLER=y +CONFIG_RFKILL=y +CONFIG_RMI4_CORE=m +CONFIG_ROMFS_FS=m +CONFIG_RPMSG_VIRTIO=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_S2IO=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SNIC=m +CONFIG_SCSI_SRP_ATTRS=y +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_WD719X=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIO=y +CONFIG_SFC=m +CONFIG_SFC_FALCON=m +CONFIG_SGI_PARTITION=y +CONFIG_SLIP=m +CONFIG_SND=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_PCM=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOC_TI=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPI=y +# CONFIG_SPI_ROCKCHIP is not set +CONFIG_SPMI=m +CONFIG_SRAM=y +CONFIG_SSB=m +CONFIG_STAGING=y +CONFIG_STANDALONE=y +CONFIG_SUN_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSV_FS=m +CONFIG_TCG_TIS_I2C_ATMEL=y +CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_TCG_TIS_I2C_NUVOTON=y +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_THERMAL=y +CONFIG_TIFM_CORE=m +# CONFIG_TI_SOC_THERMAL is not set +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACE_SINK=m +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TTY_PRINTK=y +CONFIG_UACCE=m +CONFIG_UFS_FS=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_MF624=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB4=m +CONFIG_USB_DWC2_PCI=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_ROLE_SWITCH=m +CONFIG_USB_SUPPORT=y +CONFIG_VDPA=m +CONFIG_VFIO=y +CONFIG_VFIO_PCI=y +CONFIG_VFIO_VIRQFD=y +CONFIG_VIRTIO_MMIO=y +# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set +CONFIG_VME_BUS=y +# CONFIG_VOP_BUS is not set +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +CONFIG_W1=m +CONFIG_WAN=y +CONFIG_WDTPCI=m +CONFIG_WIMAX=m +CONFIG_X25=m +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILINX_SDFEC=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YELLOWFIN=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_ZSTD_COMPRESS=y --- linux-5.8.0.orig/debian.master/config/ppc64el/config.flavour.generic +++ linux-5.8.0/debian.master/config/ppc64el/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-5.8.0.orig/debian.master/config/s390x/config.common.s390x +++ linux-5.8.0/debian.master/config/s390x/config.common.s390x @@ -0,0 +1,593 @@ +# +# Config options for config.common.s390x automatically generated by splitconfig.pl +# +# CONFIG_6LOWPAN is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ANDROID is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_APPLICOM is not set +# CONFIG_ARCNET is not set +# CONFIG_ATA is not set +# CONFIG_ATALK is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_ATM is not set +CONFIG_AUTOFS4_FS=y +CONFIG_AUTOFS_FS=y +# CONFIG_AUXDISPLAY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# CONFIG_BAREUDP is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCMA is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BOUNCE is not set +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_C2PORT is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_CAIF is not set +# CONFIG_CAN is not set +# CONFIG_CB710_CORE is not set +CONFIG_CC_VERSION_TEXT="s390x-linux-gnu-gcc (Ubuntu 10.2.0-8ubuntu1) 10.2.0" +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_CMA=y +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_CMM=y +# CONFIG_COMMON_CLK is not set +# CONFIG_COUNTER is not set +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CRAMFS is not set +CONFIG_CRYPTO_DEFLATE=m +# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set +# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +# CONFIG_DECNET is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DMADEVICES is not set +# CONFIG_DMA_CMA is not set +CONFIG_DM_DEBUG=y +# CONFIG_DNET is not set +# CONFIG_DRM_AMDGPU is not set +# CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_AST is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DP_CEC is not set +# CONFIG_DRM_ETNAVIV is not set +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_NXP_TDA9950 is not set +# CONFIG_DRM_I2C_NXP_TDA998X is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_MGAG200 is not set +# CONFIG_DRM_NOUVEAU is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m +# CONFIG_DRM_QXL is not set +# CONFIG_DRM_RADEON is not set +# CONFIG_DRM_VGEM is not set +# CONFIG_DRM_VKMS is not set +# CONFIG_DS1682 is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_ECHO is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_EE1004 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EFS_FS is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_ETHOC is not set +# CONFIG_EVM_LOAD_X509 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_EXTCON is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_CARMINE is not set +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_SM712 is not set +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_UVESA is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FDDI is not set +# CONFIG_FEALNX is not set +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +CONFIG_FIXED_PHY=m +CONFIG_FORCE_MAX_ZONEORDER=9 +# CONFIG_FPGA_BRIDGE is not set +# CONFIG_FPGA_DFL is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_FUSION is not set +# CONFIG_GAMEPORT is not set +# CONFIG_GENERIC_PHY is not set +# CONFIG_GNSS is not set +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_AMD_FCH is not set +# CONFIG_GPIO_DWAPB is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_MB86S7X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_RDC321X is not set +# CONFIG_GPIO_SIOX is not set +# CONFIG_GPIO_TPIC2810 is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GREYBUS is not set +# CONFIG_HABANA_AI is not set +# CONFIG_HAMACHI is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HID is not set +# CONFIG_HIO is not set +# CONFIG_HMC6352 is not set +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HPFS_FS is not set +# CONFIG_HP_ILO is not set +# CONFIG_HSI is not set +# CONFIG_HSR is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HWMON is not set +# CONFIG_HWSPINLOCK is not set +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_250 is not set +CONFIG_I2C=m +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_CBUS_GPIO is not set +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HID is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_LTC4306 is not set +# CONFIG_I2C_MUX_MLXCPLD is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_REG is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NVIDIA_GPU is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_XILINX is not set +# CONFIG_I3C is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_ICS932S401 is not set +# CONFIG_IEEE802154 is not set +# CONFIG_IIO is not set +# CONFIG_IMA_ARCH_POLICY is not set +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_READ_POLICY is not set +# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set +# CONFIG_IMA_SIG_TEMPLATE is not set +# CONFIG_INFINIBAND_BNXT_RE is not set +# CONFIG_INFINIBAND_OCRDMA is not set +# CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MATRIXKMAP is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_IP_DCCP_CCID3=y +CONFIG_IRQ_BYPASS_MANAGER=m +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_JFS_FS is not set +# CONFIG_JME is not set +CONFIG_JUMP_LABEL=y +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KERNEL_GZIP is not set +CONFIG_KERNEL_LZ4=y +# CONFIG_KEXEC_FILE is not set +CONFIG_KVM=y +# CONFIG_LAPB is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_LIBNVDIMM is not set +# CONFIG_LLC2 is not set +CONFIG_LOG_BUF_SHIFT=18 +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +CONFIG_LZ4_COMPRESS=m +# CONFIG_MAC_PARTITION is not set +# CONFIG_MAILBOX is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_MCB is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_MDIO_BUS=m +# CONFIG_MDIO_MSCC_MIIM is not set +# CONFIG_MDIO_THUNDER is not set +# CONFIG_MDIO_XPCS is not set +CONFIG_MD_MULTIPATH=y +# CONFIG_MEDIA_SUPPORT is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_MEMORY is not set +# CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE is not set +# CONFIG_MEMSTICK is not set +CONFIG_MEM_SOFT_DIRTY=y +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_AXP20X_I2C is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_BD9571MWV is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_IQS62X is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_MP2629 is not set +# CONFIG_MFD_MT6360 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_TI_LP873X is not set +# CONFIG_MFD_TPS65086 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_WCD934X is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MHI_BUS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_MLXSW_I2C is not set +# CONFIG_MMC is not set +# CONFIG_MOST is not set +# CONFIG_MTD is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_NFC is not set +# CONFIG_NFP is not set +CONFIG_NODES_SHIFT=1 +# CONFIG_NOZOMI is not set +CONFIG_NR_CPUS=512 +# CONFIG_NTB is not set +CONFIG_NTFS_RW=y +# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set +# CONFIG_NVMEM is not set +# CONFIG_N_GSM is not set +# CONFIG_OF is not set +# CONFIG_OMFS_FS is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_PACKING is not set +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_PARPORT is not set +# CONFIG_PC104 is not set +# CONFIG_PCCARD is not set +CONFIG_PCIEPORTBUS=y +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_QUIRKS is not set +CONFIG_PGTABLE_LEVELS=5 +# CONFIG_PHANTOM is not set +# CONFIG_PHONET is not set +CONFIG_PHYLIB=m +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PINCTRL is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_POWERCAP is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_PPP is not set +CONFIG_PPS=m +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PSI_DEFAULT_DISABLED=y +# CONFIG_PSTORE is not set +CONFIG_PTP_1588_CLOCK=m +# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set +# CONFIG_PWM is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_QRTR is not set +# CONFIG_RAPIDIO is not set +# CONFIG_RAVE_SP_CORE is not set +# CONFIG_RAW_DRIVER is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RC_CORE is not set +# CONFIG_REGULATOR is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REMOTEPROC is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_RFKILL is not set +# CONFIG_RMI4_CORE is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_RPMSG_VIRTIO is not set +# CONFIG_S2IO is not set +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_BFA_FC is not set +# CONFIG_SCSI_BNX2X_FCOE is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_SCSI_CHELSIO_FCOE is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_SNIC is not set +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_CORE=m +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIO is not set +# CONFIG_SFC is not set +# CONFIG_SFC_FALCON is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_SLIP is not set +# CONFIG_SOC_TI is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_SOUND is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_SRAM is not set +# CONFIG_SSB is not set +# CONFIG_STAGING is not set +CONFIG_STANDALONE=y +# CONFIG_SUN_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_SYSV_FS is not set +# CONFIG_TCG_TIS_I2C_ATMEL is not set +# CONFIG_TCG_TIS_I2C_INFINEON is not set +# CONFIG_TCG_TIS_I2C_NUVOTON is not set +# CONFIG_TCG_TIS_ST33ZP24_I2C is not set +# CONFIG_THERMAL is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_TRACE_SINK is not set +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_UACCE is not set +# CONFIG_UFS_FS is not set +# CONFIG_UIO_AEC is not set +# CONFIG_UIO_CIF is not set +# CONFIG_UIO_DMEM_GENIRQ is not set +# CONFIG_UIO_MF624 is not set +# CONFIG_UIO_NETX is not set +# CONFIG_UIO_PCI_GENERIC is not set +# CONFIG_UIO_PDRV_GENIRQ is not set +# CONFIG_UIO_PRUSS is not set +# CONFIG_UIO_SERCOS3 is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_USB4 is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_VDPA is not set +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_VIRQFD=m +# CONFIG_VIRTIO_MMIO is not set +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y +# CONFIG_VME_BUS is not set +# CONFIG_VMXNET3 is not set +# CONFIG_VOP_BUS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_VXGE is not set +# CONFIG_W1 is not set +# CONFIG_WAN is not set +# CONFIG_WDTPCI is not set +# CONFIG_WIMAX is not set +# CONFIG_X25 is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +CONFIG_ZSTD_COMPRESS=m --- linux-5.8.0.orig/debian.master/config/s390x/config.flavour.generic +++ linux-5.8.0/debian.master/config/s390x/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-5.8.0.orig/debian.master/config/x32/config.common.x32 +++ linux-5.8.0/debian.master/config/x32/config.common.x32 @@ -0,0 +1,74 @@ +# nothing here yet +CONFIG_USB_DWC2_DUAL_ROLE=y +CONFIG_USB_DWC2_PCI=m +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_ETH_EEM=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BDC_UDC=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_DWC2=m +CONFIG_USB_DWC3=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_ETH=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_XILINX=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GR_UDC=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_DBGP=m +CONFIG_USB_G_HID=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_M66592=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MV_U3D=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_NET2272=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PXA27X=m +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_MULTI_RNDIS=y --- linux-5.8.0.orig/debian.master/config/x32/config.flavour.generic +++ linux-5.8.0/debian.master/config/x32/config.flavour.generic @@ -0,0 +1,74 @@ +# nothing here yet +CONFIG_USB_DWC2_DUAL_ROLE=y +CONFIG_USB_DWC2_PCI=m +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_ETH_EEM=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BDC_UDC=m +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_DWC2=m +CONFIG_USB_DWC3=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_ETH=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_GADGET_XILINX=m +CONFIG_USB_GOKU=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_USB_GR_UDC=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_DBGP=m +CONFIG_USB_G_HID=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_NCM=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_M66592=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MV_U3D=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_NET2272=m +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PXA27X=m +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_MULTI_RNDIS=y --- linux-5.8.0.orig/debian.master/control.d/flavour-control.stub +++ linux-5.8.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,152 @@ +# Items that get replaced: +# FLAVOUR +# DESC +# ARCH +# SUPPORTED +# TARGET +# BOOTLOADER +# =PROVIDES= +# +# Items marked with =FOO= are optional +# +# This file describes the template for packages that are created for each flavour +# in debian/control.d/vars.* +# +# This file gets edited in a couple of places. See the debian/control.stub rule in +# debian/rules. PGGVER, ABINUM, and SRCPKGNAME are all converted in the +# process of creating debian/control. +# +# The flavour specific strings (ARCH, DESC, etc) are converted using values from the various +# flavour files in debian/control.d/vars.* +# +# XXX: Leave the blank line before the first package!! + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, aufs-dkms, =PROVIDES=${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-PKGVER-ABINUM-FLAVOUR +Recommends: BOOTLOADER, initramfs-tools | linux-initramfs-tool +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image=SIGN-PEER-PKG=-PKGVER-ABINUM-FLAVOUR +Suggests: fdutils, linux-doc | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR +Description: Linux kernel image for version PKGVER on DESC + This package contains the=SIGN-ME-TXT= Linux kernel image for version PKGVER on + DESC. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version PKGVER on DESC + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR | linux-image-unsigned-PKGVER-ABINUM-FLAVOUR, crda | wireless-crda +Description: Linux kernel extra modules for version PKGVER on DESC + This package contains the Linux kernel extra modules for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-PKGVER-ABINUM/debian.README.gz for details. + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR-dbgsym +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version PKGVER on DESC + This package provides the=SIGN-ME-TXT= kernel debug image for version PKGVER on + DESC. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-tools-PKGVER-ABINUM +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + +Package: linux-cloud-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Description: Linux kernel version specific cloud tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version PKGVER-ABINUM on + =HUMAN=. + +Package: SRCPKGNAME-udebs-FLAVOUR +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: ARCH +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + --- linux-5.8.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-5.8.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,257 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/powerpc/kvm/kvm-hv.ko +arch/powerpc/kvm/kvm-pr.ko +arch/powerpc/kvm/vfio.ko +arch/powerpc/platforms/powernv/opal-prd.ko +arch/s390/* +arch/x86/kvm/kvm-amd.ko +arch/x86/kvm/kvm-intel.ko +crypto/* +drivers/acpi/* +drivers/ata/acard-ahci.ko +drivers/ata/ahci.ko +drivers/ata/ahci_platform.ko +drivers/ata/ata_generic.ko +drivers/ata/libahci.ko +drivers/ata/libahci_platform.ko +drivers/block/brd.ko +drivers/block/cryptoloop.ko +drivers/block/floppy.ko +drivers/block/loop.ko +drivers/block/nbd.ko +drivers/block/rbd.ko +drivers/block/virtio_blk.ko +drivers/block/xen-blkfront.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/powernv-rng.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/ipmi/* +drivers/char/ipmi/ipmi_msghandler.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/char/virtio_console.ko +drivers/crypto/nx/* +drivers/crypto/vmx/vmx-crypto.ko +drivers/firmware/efi/* +drivers/firmware/iscsi_ibft.ko +drivers/gpu/drm/ast/ast.ko +drivers/gpu/drm/drm_kms_helper.ko +drivers/gpu/drm/drm.ko +drivers/gpu/drm/ttm/ttm.ko +drivers/gpu/drm/vboxvideo/vboxvideo.ko +drivers/hid/hid-generic.ko +drivers/hid/hid-hyperv.ko +drivers/hid/hid.ko +drivers/hid/usbhid/usbhid.ko +drivers/hv/* +drivers/hwmon/ibmpowernv.ko +drivers/infiniband/core/ib_addr.ko +drivers/infiniband/core/ib_cm.ko +drivers/infiniband/core/ib_core.ko +drivers/infiniband/core/ib_mad.ko +drivers/infiniband/core/ib_sa.ko +drivers/infiniband/core/iw_cm.ko +drivers/infiniband/core/rdma_cm.ko +drivers/infiniband/ulp/iser/ib_iser.ko +drivers/infiniband/ulp/isert/ib_isert.ko +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/input-leds.ko +drivers/input/joydev.ko +drivers/input/misc/xen-kbdfront.ko +drivers/input/mouse/psmouse.ko +drivers/input/serio/hyperv-keyboard.ko +drivers/input/serio/serio_raw.ko +drivers/input/serio/serport.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/leds/leds-powernv.ko +drivers/md/* +drivers/message/fusion* +drivers/misc/cxl/* +drivers/misc/eeprom/at24.ko +drivers/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/mtd/cmdlinepart.ko +drivers/mtd/devices/powernv_flash.ko +drivers/mtd/ofpart.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/caif/caif_virtio.ko +drivers/net/dummy.ko +drivers/net/eql.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/ethernet/amazon/ena/ena.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/ethernet/broadcom/bnx2x/* +drivers/net/ethernet/broadcom/tg3.ko +drivers/net/ethernet/dec/tulip/* +drivers/net/ethernet/emulex/benet/* +drivers/net/ethernet/ibm/* +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/ethernet/intel/i40e/* +drivers/net/ethernet/intel/iavf/iavf.ko +drivers/net/ethernet/intel/igb/* +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbe/* +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/ethernet/mellanox/* +drivers/net/ethernet/netronome/nfp/nfp.ko +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/fddi/* +drivers/net/geneve.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ifb.ko +drivers/net/ipvlan/* +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/mii.ko +drivers/net/netconsole.ko +drivers/net/ppp/* +drivers/net/ppp/bsd_comp.ko +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/virtio_net.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/wireguard/wireguard.ko +drivers/net/xen-netback/* +drivers/net/xen-netfront.ko +drivers/nvme/host/nvme.ko +drivers/nvmem/nvmem_core.ko +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pci/host/vmd.ko +drivers/platform/x86/pvpanic.ko +drivers/pps/pps_core.ko +drivers/ptp/ptp.ko +drivers/s390/* +drivers/s390/block/xpram.ko +drivers/scsi/aacraid/* +drivers/scsi/BusLogic.ko +drivers/scsi/cxlflash/* +drivers/scsi/device_handler/scsi_dh_alua.ko +drivers/scsi/device_handler/scsi_dh_emc.ko +drivers/scsi/device_handler/scsi_dh_hp_sw.ko +drivers/scsi/device_handler/scsi_dh_rdac.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/ibmvscsi/* +drivers/scsi/ipr.ko +drivers/scsi/iscsi_boot_sysfs.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +drivers/scsi/lpfc/* +drivers/scsi/megaraid/* +drivers/scsi/mpt3sas/* +drivers/scsi/osd/libosd.ko +drivers/scsi/osd/osd.ko +drivers/scsi/qla1280.ko +drivers/scsi/qla2xxx/* +drivers/scsi/raid_class.ko +drivers/scsi/scsi_transport_fc.ko +drivers/scsi/scsi_transport_iscsi.ko +drivers/scsi/scsi_transport_sas.ko +drivers/scsi/scsi_transport_spi.ko +drivers/scsi/sd_mod.ko +drivers/scsi/sr_mod.ko +drivers/scsi/virtio_scsi.ko +drivers/scsi/vmw_pvscsi.ko +drivers/target/target_core*.ko +drivers/target/loopback/tcm_loop.ko +drivers/tty/serial/jsm/* +drivers/uio/uio.ko +drivers/uio/uio_pdrv_genirq.ko +drivers/usb/host/* +drivers/usb/storage/uas.ko +drivers/usb/storage/usb-storage.ko +drivers/vfio/* +drivers/vhost/* +drivers/video/fbdev/* +drivers/video/vgastate.ko +drivers/virt/vboxguest/vboxguest.ko +drivers/virtio/* +drivers/watchdog/softdog.ko +drivers/xen/* +! find sound/core -name oss -prune -o -name *.ko -print +fs/9p/* +fs/aufs/aufs.ko +fs/autofs/autofs4.ko +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/cifs/* +fs/configfs/* +fs/dlm/dlm.ko +fs/ecryptfs/* +fs/efivarfs/* +fs/exofs/libore.ko +fs/ext4/* +fs/fat/* +fs/fscache/* +fs/fuse/* +fs/isofs/* +fs/lockd/* +fs/nfs/* +fs/nfs_common/* +fs/nfsd/* +fs/nls/nls_cp437.ko +fs/nls/nls_iso8859-1.ko +fs/overlayfs/* +fs/shiftfs.ko +fs/squashfs/* +fs/udf/* +fs/ufs/* +fs/vboxsf/vboxsf.ko +fs/xfs/* +lib/* +net/6lowpan/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bpfilter/* +net/bridge/* +net/can/* +net/ceph/libceph.ko +net/core/* +net/dccp/* +net/decnet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netlink/netlink_diag.ko +net/netrom/* +net/openvswitch/* +net/packet/af_packet_diag.ko +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko +net/sunrpc/sunrpc.ko +net/tipc/* +net/unix/unix_diag.ko +net/vmw_vsock/* +net/x25/* +net/xfrm/* +sound/drivers/pcsp/snd-pcsp.ko +sound/pci/snd-ens1370.ko +sound/soundcore.ko +ubuntu/ubuntu-host/ubuntu-host.ko --- linux-5.8.0.orig/debian.master/control.d/linux-doc.stub +++ linux-5.8.0/debian.master/control.d/linux-doc.stub @@ -0,0 +1,12 @@ +Package: linux-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Description: Linux kernel specific documentation for version PKGVER + This package provides the various documents in the PKGVER kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/SRCPKGNAME-doc/00-INDEX for a list of what is + contained in each file. --- linux-5.8.0.orig/debian.master/control.d/linux-libc-dev.stub +++ linux-5.8.0/debian.master/control.d/linux-libc-dev.stub @@ -0,0 +1,12 @@ +Package: linux-libc-dev +Architecture: amd64 armhf arm64 i386 ppc64el riscv64 s390x +Depends: ${misc:Depends} +Conflicts: linux-kernel-headers +Replaces: linux-kernel-headers +Provides: linux-kernel-headers, aufs-dev +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use SRCPKGNAME-headers-* packages for that. --- linux-5.8.0.orig/debian.master/control.d/vars.generic +++ linux-5.8.0/debian.master/control.d/vars.generic @@ -0,0 +1,6 @@ +arch="amd64 armhf arm64 ppc64el s390x" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | lilo [amd64] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64]" --- linux-5.8.0.orig/debian.master/control.d/vars.generic-64k +++ linux-5.8.0/debian.master/control.d/vars.generic-64k @@ -0,0 +1,6 @@ +arch="arm64" +supported="Generic 64K pages" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="flash-kernel [arm64]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-5.8.0.orig/debian.master/control.d/vars.generic-lpae +++ linux-5.8.0/debian.master/control.d/vars.generic-lpae @@ -0,0 +1,6 @@ +arch="armhf" +supported="Generic LPAE" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="flash-kernel [armhf]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-5.8.0.orig/debian.master/control.d/vars.lowlatency +++ linux-5.8.0/debian.master/control.d/vars.lowlatency @@ -0,0 +1,6 @@ +arch="amd64" +supported="Lowlatency" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | lilo [amd64] | flash-kernel [armhf arm64]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64]" --- linux-5.8.0.orig/debian.master/control.stub.in +++ linux-5.8.0/debian.master/control.stub.in @@ -0,0 +1,157 @@ +Source: SRCPKGNAME +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper-compat (= 10), + dh-systemd, + cpio, + kernel-wedge, + kmod , + makedumpfile [amd64] , + libcap-dev , + libelf-dev , + libnewt-dev , + libiberty-dev , + default-jdk-headless , + java-common , + rsync , + libdw-dev , + libpci-dev , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf ppc64el] , + liblzma-dev , + openssl , + libssl-dev , + libaudit-dev , + bc , + gawk , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , + libnuma-dev [amd64 arm64 ppc64el s390x] , + dkms , + curl , + lz4 [amd64 s390x] , + dwarves [amd64 arm64 armhf ppc64el s390x] , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + fig2dev , + bzip2 , + sharutils , + asciidoc , + python3-sphinx , + python3-sphinx-rtd-theme , + fontconfig , + python3-docutils , + imagemagick , + graphviz , + dvipng , + fonts-noto-cjk , + latexmk , + librsvg2-bin , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/=SERIES= +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-PKGVER +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: linux-source +Depends: ${misc:Depends}, binutils, bzip2, coreutils +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version PKGVER with Ubuntu patches + This package provides the source code for the Linux kernel version + PKGVER. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends}, lsb-release +Description: Linux kernel version specific tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER. + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + You probably want to install linux-tools-PKGVER-ABINUM-. + +Package: SRCPKGNAME-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version PKGVER. + +Package: SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version PKGVER-ABINUM on + =HUMAN=. + You probably want to install linux-cloud-tools-PKGVER-ABINUM-. + +Package: SRCPKGNAME-tools-host +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends}, python3 +Description: Linux kernel VM host tools + This package provides kernel tools useful for VM hosts. + --- linux-5.8.0.orig/debian.master/copyright +++ linux-5.8.0/debian.master/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + 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. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-5.8.0.orig/debian.master/d-i/firmware/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/amd64/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/amd64/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/amd64/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/amd64/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/amd64/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/amd64/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/arm64/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/arm64/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/arm64/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/arm64/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/arm64/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/arm64/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/armhf/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/armhf/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/i386/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/i386/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/i386/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/i386/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/i386/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/i386/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/nic-modules @@ -0,0 +1,14 @@ +e100/d101m_ucode.bin ? +e100/d101s_ucode.bin ? +e100/d102e_ucode.bin ? +bnx2/bnx2-mips-09-6.2.1b.fw ? +bnx2/bnx2-rv2p-06-6.0.15.fw ? +bnx2/bnx2-mips-06-6.2.3.fw ? +bnx2/bnx2-rv2p-09-6.0.17.fw ? +bnx2/bnx2-rv2p-09ax-6.0.17.fw ? +bnx2x/bnx2x-e1h-7.12.30.0.fw ? +bnx2x/bnx2x-e1-7.12.30.0.fw ? +bnx2x/bnx2x-e2-7.12.30.0.fw ? +tigon/tg3_tso5.bin ? +tigon/tg3_tso.bin ? +tigon/tg3.bin ? --- linux-5.8.0.orig/debian.master/d-i/firmware/powerpc/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/powerpc/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/powerpc/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/powerpc/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/powerpc/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/powerpc/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/ppc64el/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/ppc64el/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/ppc64el/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/ppc64el/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/ppc64el/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/ppc64el/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/s390x/README.txt +++ linux-5.8.0/debian.master/d-i/firmware/s390x/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-5.8.0.orig/debian.master/d-i/firmware/s390x/nic-modules +++ linux-5.8.0/debian.master/d-i/firmware/s390x/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/s390x/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/s390x/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-5.8.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin ? +qlogic/12160.bin ? +qlogic/1280.bin ? --- linux-5.8.0.orig/debian.master/d-i/kernel-versions +++ linux-5.8.0/debian.master/d-i/kernel-versions @@ -0,0 +1,17 @@ +# arch version flavour installedname suffix bdep +amd64 - generic - - - + +i386 - generic - - - + +armhf - generic - - - +armhf - generic-lpae - - - + +arm64 - generic - - - +arm64 - generic-64k - - - + +ppc64el - generic - - - + +s390x - generic - - - + +# Ports +# arch version flavour installedname suffix bdep --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/block-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/fb-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/fb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/floppy-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/md-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/message-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/serial-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/serial-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64-virtual/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64-virtual/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/block-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/fb-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/fb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/firewire-core-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/firewire-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/floppy-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/input-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/input-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/ipmi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/amd64/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/md-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/message-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/nic-pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/nic-pcmcia-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/nic-usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/pata-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/pata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/pcmcia-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/pcmcia-storage-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/pcmcia-storage-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/plip-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/ppp-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/sata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/serial-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/serial-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/speakup-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/speakup-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/usb-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/amd64/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/amd64/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/block-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/input-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/input-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/ipmi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/arm64/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/md-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/message-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/nic-usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/plip-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/ppp-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/sata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/speakup-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/speakup-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/usb-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/arm64/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/arm64/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/block-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/input-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/input-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/ipmi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/armhf/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/md-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/nic-usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/plip-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/ppp-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/sata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/speakup-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/speakup-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/usb-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/armhf/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/armhf/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/block-modules +++ linux-5.8.0/debian.master/d-i/modules/block-modules @@ -0,0 +1,43 @@ +aoe ? +aten ? +bcm2835 ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +hio ? +kbic ? +ktti ? +nbd ? +nvme ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sdhci-tegra ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? +mmc_block ? +sdhci ? +sdhci-pci ? +sdhci-acpi ? +tifm_sd ? +dw_mmc ? +dw_mmc_pltfm ? --- linux-5.8.0.orig/debian.master/d-i/modules/block-modules.powerpc +++ linux-5.8.0/debian.master/d-i/modules/block-modules.powerpc @@ -0,0 +1,31 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +kbic ? +ktti ? +nbd ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +ps3disk ? +ps3vram ? +pt ? +sx8 ? +umem ? +virtio_blk ? --- linux-5.8.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/crypto-modules @@ -0,0 +1,78 @@ +aesni-intel ? +aes-x86_64 ? +af_alg ? +algif_hash ? +algif_skcipher ? +ansi_cprng ? +anubis ? +arc4 ? +async_memcpy ? +async_pq ? +async_raid6_recov ? +async_tx ? +async_xor ? +authenc ? +authencesn ? +blowfish_common ? +blowfish_generic ? +blowfish-x86_64 ? +camellia ? +cast5 ? +cast6 ? +ccm ? +crc32_generic ? +crc32c_generic ? +crc32-vx_s390 ? +cryptd ? +cryptoloop ? +crypto_null ? +crypto_user ? +ctr ? +cts ? +des_generic ? +fcrypt ? +gcm ? +gf128mul ? +ghash-clmulni-intel ? +ghash-generic ? +khazad ? +lrw ? +lzo ? +md4 ? +michael_mic ? +padlock-aes ? +padlock-sha ? +paes_s390 ? +pcbc ? +pcrypt ? +pkey ? +raid6test ? +rmd128 ? +rmd160 ? +rmd256 ? +rmd320 ? +salsa20_generic ? +salsa20-x86_64 ? +seed ? +seqiv ? +serpent_generic ? +serpent-sse2-x86_64 ? +sha1-ssse3 ? +sha512_generic ? +tcrypt ? +tea ? +tgr192 ? +twofish_common ? +twofish_generic ? +twofish-x86_64 ? +twofish-x86_64-3way ? +vmac ? +wp512 ? +xcbc ? +xor ? +xts ? +zcrypt ? +zcrypt_cex2a ? +zcrypt_cex4 ? +zcrypt_pcixcc ? +zlib ? --- linux-5.8.0.orig/debian.master/d-i/modules/dasd-extra-modules.s390x +++ linux-5.8.0/debian.master/d-i/modules/dasd-extra-modules.s390x @@ -0,0 +1 @@ +dasd_diag_mod ? --- linux-5.8.0.orig/debian.master/d-i/modules/dasd-modules.s390x +++ linux-5.8.0/debian.master/d-i/modules/dasd-modules.s390x @@ -0,0 +1,3 @@ +dasd_mod ? +dasd_fba_mod ? +dasd_eckd_mod ? --- linux-5.8.0.orig/debian.master/d-i/modules/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-5.8.0.orig/debian.master/d-i/modules/fb-modules +++ linux-5.8.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-5.8.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-5.8.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-5.8.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-5.8.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,6 @@ +ext2 ? +ext4 ? +jfs ? +reiserfs ? +xfs ? +zfs ? --- linux-5.8.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/block-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/fb-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/fb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/floppy-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/md-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/message-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/serial-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/serial-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386-virtual/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/i386-virtual/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/block-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/fb-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/fb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/firewire-core-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/firewire-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/floppy-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/input-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/input-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/ipmi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/i386/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/md-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/message-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/mouse-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/nic-pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/nic-pcmcia-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/nic-usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/pata-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/pata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/pcmcia-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/pcmcia-storage-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/pcmcia-storage-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/plip-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/ppp-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/sata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/i386/serial-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/serial-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/speakup-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/speakup-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/usb-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/i386/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/i386/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/input-modules +++ linux-5.8.0/debian.master/d-i/modules/input-modules @@ -0,0 +1,71 @@ +hid ? +hid-a4tech ? +hid-apple ? +hid-appleir ? +hid-aureal ? +hid-belkin ? +hid-bright ? +hid-cherry ? +hid-chicony ? +hid-corsair ? +hid-cp2112 ? +hid-cypress ? +hid-dell ? +hid-elecom ? +hid-elo ? +hid-ezkey ? +hid-generic ? +hid-gfrm ? +hid-gt683r ? +hid-gyration ? +hid-holtek-kbd ? +hid-holtek-mouse ? +hid-hyperv ? +hid-kensington ? +hid-keytouch ? +hid-kye ? +hid-lcpower ? +hid-lenovo ? +hid-logitech ? +hid-logitech-dj ? +hid-logitech-hidpp ? +hid-magicmouse ? +hid-microsoft ? +hid-monterey ? +hid-multitouch ? +hid-ntrig ? +hid-ortek ? +hid-penmount ? +hid-petalynx ? +hid-picolcd ? +hid-pl ? +hid-plantronics ? +hid-primax ? +hid-rmi ? +hid-roccat ? +hid-roccat-arvo ? +hid-roccat-common ? +hid-roccat-isku ? +hid-roccat-kone ? +hid-roccat-koneplus ? +hid-roccat-konepure ? +hid-roccat-kovaplus ? +hid-roccat-lua ? +hid-roccat-pyra ? +hid-roccat-ryos ? +hid-roccat-savu ? +hid-samsung ? +hid-sony ? +hid-speedlink ? +hid-sunplus ? +hid-thingm ? +hid-tivo ? +hid-topseed ? +hid-twinhan ? +hid-uclogic ? +hid-waltop ? +hid-wiimote ? +hid-xinmo ? +hid-zydacron ? +uhid ? +usbhid ? --- linux-5.8.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-5.8.0.orig/debian.master/d-i/modules/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/kernel-image @@ -0,0 +1,31 @@ +ast ? +gpio-pca953x ? +gpio-regulator ? +hibmc-drm ? +i2c-mux ? +i2c-mux-pinctrl ? +i2c-tegra ? +max8907 ? +max8907-regulator ? +nvec ? +nvec_kbd ? +nvec_paz00 ? +nvec_power ? +nvec_ps2 ? +palmas-regulator ? +rtc-em3027 ? +rtc-max8907 ? +rtc-palmas ? +rtc-tps6586x ? +rtc-tps65910 ? +tps51632-regulator ? +tps62360-regulator ? +tps65090-charger ? +tps65090-regulator ? +tps6586x-regulator ? +tps65910-regulator ? +host1x ? +tegra-drm ? +pwm_bl ? +pwm-tegra ? +panel-simple ? --- linux-5.8.0.orig/debian.master/d-i/modules/md-modules +++ linux-5.8.0/debian.master/d-i/modules/md-modules @@ -0,0 +1,16 @@ +dm-crypt ? +dm-mirror ? +dm-raid ? +dm-snapshot ? +dm-zero ? +faulty ? +linear ? +multipath ? +raid0 ? +raid1 ? +raid10 ? +raid456 ? + +# Extras +dm-raid45 ? +dm-loop ? --- linux-5.8.0.orig/debian.master/d-i/modules/message-modules +++ linux-5.8.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,9 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mpt3sas ? +mptscsih ? +mptspi ? --- linux-5.8.0.orig/debian.master/d-i/modules/message-modules.powerpc +++ linux-5.8.0/debian.master/d-i/modules/message-modules.powerpc @@ -0,0 +1,7 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi --- linux-5.8.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-5.8.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-5.8.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,4 @@ +dm-multipath ? +dm-round-robin ? +dm-service-time ? +dm-queue-length ? --- linux-5.8.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,6 @@ +nfs ? +nfs_acl ? +nfsv3 ? +lockd ? +sunrpc ? +cifs ? --- linux-5.8.0.orig/debian.master/d-i/modules/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,209 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +amd-xgbe ? +aquantia ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +bcm87xx ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bnxt_en ? +bonding ? +brcmfmac ? +brcmsmac ? +broadcom ? +xgmac ? +cassini ? +ccwgroup ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +ctcm ? +cxgb4 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +enic ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +fsm ? +ibmveth ? +ibmvnic ? +igb ? +ps3_gelic ? +hamachi ? +hclge ? +hermes ? +hfi1 ? +hinic ? +hns_dsaf ? +hns_enet_drv ? +hns_mdio ? +hns3 ? +hp ? +hp100 ? +hp-plus ? +i40e ? +i40evf ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwldvm ? +iwlmvm ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lcs ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +marvell ? +mdio-thunder ? +mlx4_core ? +mlx4_en ? +mlx5_core ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netiucv ? +netsec ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +nicpf ? +nicvf ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +qcom-emac ? +qede ? +qeth ? +qeth_l2 ? +qeth_l3 ? +qlcnic ? +r815x ? +r8169 ? +rate_control ? +realtek ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2400pci ? +rt2500 ? +rt2500pci ? +rt2800pci ? +rt61pci ? +s2io ? +sfc ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? +vmxnet3 ? +xen-netfront ? +xgene-enet ? --- linux-5.8.0.orig/debian.master/d-i/modules/nic-modules.powerpc +++ linux-5.8.0/debian.master/d-i/modules/nic-modules.powerpc @@ -0,0 +1,152 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +atl1 ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +bcm43xx ? +bcm43xx-mac80211 ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +ibmtr ? +ibmveth ? +ipddp ? +ipw2100 ? +ipw2200 ? +ipw3945 ? +ixgb ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +ps3_gelic ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2500 ? +rt61pci ? +s2io ? +shaper ? +sis190 ? +sis900 ? +spidernet ? +skfp ? +skge ? +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire ? +strip ? +sunbmac ? +sundance ? +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +sunvnet ? +tg3 ? +tlan ? +tms380tr ? +tmspci ? +tulip ? +tun ? +typhoon ? +uli526x ? +via-rhine ? +via-velocity ? +virtio_net ? +wavelan ? +wd ? +winbond-840 ? +yellowfin ? +znet ? --- linux-5.8.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/nic-pcmcia-modules @@ -0,0 +1,19 @@ +3c574_cs ? +3c589_cs ? +airo_cs ? +atmel_cs ? +axnet_cs ? +com20020_cs ? +fmvj18x_cs ? +ibmtr_cs ? +netwave_cs ? +nmclan_cs ? +orinoco_cs ? +pcnet_cs ? +ray_cs ? +smc91c92_cs ? +wavelan_cs ? +wl3501_cs ? +xirc2ps_cs ? +xircom_cb ? +xircom_tulip_cb ? --- linux-5.8.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/nic-shared-modules @@ -0,0 +1,26 @@ +# PHY +8390 ? +mii ? + +# CRC modules +crc-ccitt ? +crc-itu-t ? +libcrc32c ? + +# mac80211 stuff +mac80211 ? +cfg80211 ? + +# rt2x00 lib (since rt2x00 is split across usb/pci/cb +rt2x00lib ? +rt2800lib ? + +# Atheros library (since drivers are split across nic-modules/nic-usb-modules) +ath ? + +# Wireless 802.11 modules +lib80211 ? +cfg80211 ? +lib80211_crypt_ccmp ? +lib80211_crypt_tkip ? +lib80211_crypt_wep ? --- linux-5.8.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/nic-usb-modules @@ -0,0 +1,34 @@ +ax88179_178a ? +catc ? +kaweth ? +pegasus ? +prism2_usb ? +rtl8150 ? +usbnet ? +zd1211rw ? +zd1201 ? +rt2500usb ? +rt73usb ? +rt2570 ? +rt2800usb ? +rt2x00usb ? +cdc_ether ? +asix ? +cdc_eem ? +cdc_ether ? +cdc-phonet ? +cdc_subset ? +dm9601 ? +gl620a ? +hso ? +int51x1 ? +mcs7830 ? +net1080 ? +plusb ? +rndis_host ? +r8152 ? +smsc95xx ? +zaurus ? +carl9170 ? +smsc75xx ? +smsc95xx ? --- linux-5.8.0.orig/debian.master/d-i/modules/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-5.8.0.orig/debian.master/d-i/modules/pata-modules +++ linux-5.8.0/debian.master/d-i/modules/pata-modules @@ -0,0 +1,47 @@ +pata_ali.ko ? +pata_amd.ko ? +pata_artop.ko ? +pata_atiixp.ko ? +pata_atp867x.ko ? +pata_cmd640.ko ? +pata_cmd64x.ko ? +pata_cs5520.ko ? +pata_cs5530.ko ? +pata_cs5535.ko ? +pata_cs5536.ko ? +pata_cypress.ko ? +pata_efar.ko ? +pata_hpt366.ko ? +pata_hpt37x.ko ? +pata_hpt3x2n.ko ? +pata_hpt3x3.ko ? +pata_isapnp.ko ? +pata_it8213.ko ? +pata_it821x.ko ? +pata_jmicron.ko ? +pata_legacy.ko ? +pata_macio.ko ? +pata_marvell.ko ? +pata_mpiix.ko ? +pata_netcell.ko ? +pata_ninja32.ko ? +pata_ns87410.ko ? +pata_ns87415.ko ? +pata_oldpiix.ko ? +pata_optidma.ko ? +pata_opti.ko ? +pata_pcmcia.ko ? +pata_pdc2027x.ko ? +pata_pdc202xx_old.ko ? +pata_qdi.ko ? +pata_radisys.ko ? +pata_rdc.ko ? +pata_rz1000.ko ? +pata_sc1200.ko ? +pata_sch.ko ? +pata_serverworks.ko ? +pata_sil680.ko ? +pata_sl82c105.ko ? +pata_triflex.ko ? +pata_via.ko ? +pata_winbond.ko ? --- linux-5.8.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-5.8.0/debian.master/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-5.8.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-5.8.0/debian.master/d-i/modules/pcmcia-storage-modules @@ -0,0 +1,6 @@ +pata_pcmcia ? +qlogic_cs ? +fdomain_cs ? +aha152x_cs ? +nsp_cs ? +sym53c500_cs ? --- linux-5.8.0.orig/debian.master/d-i/modules/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/block-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/crypto-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/floppy-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/floppy-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/input-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/input-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/ipmi-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/ipmi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/md-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/message-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/message-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/nic-usb-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/nic-usb-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/parport-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/parport-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/plip-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/plip-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/ppp-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/sata-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/scsi-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/storage-core-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppc64el/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/ppc64el/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-5.8.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/block-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/block-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/crypto-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/crypto-modules @@ -0,0 +1,2 @@ +#include +deflate ? --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/dasd-extra-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/dasd-extra-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/dasd-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/dasd-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/fat-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/fat-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/fs-core-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/fs-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/fs-secondary-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/fs-secondary-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/kernel-image +++ linux-5.8.0/debian.master/d-i/modules/s390x/kernel-image @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/md-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/md-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/multipath-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/multipath-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/nfs-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/nfs-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/nic-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/nic-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/nic-shared-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/nic-shared-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/scsi-modules @@ -0,0 +1,2 @@ +#include +ipr ? --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/storage-core-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/virtio-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/s390x/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/s390x/vlan-modules @@ -0,0 +1 @@ +#include --- linux-5.8.0.orig/debian.master/d-i/modules/sata-modules +++ linux-5.8.0/debian.master/d-i/modules/sata-modules @@ -0,0 +1,18 @@ +sata_inic162x.ko ? +sata_mv.ko ? +sata_nv.ko ? +sata_promise.ko ? +sata_qstor.ko ? +sata_sil24.ko ? +sata_sil.ko ? +sata_sis.ko ? +sata_svw.ko ? +sata_sx4.ko ? +sata_uli.ko ? +sata_via.ko ? +sata_vsc.ko ? +ahci_platform ? +ahci ? +acard-ahci ? +libahci ? +ahci_xgene ? --- linux-5.8.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-5.8.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,137 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +sr_mod ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +pm80xx ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +fnic ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsi ? +ibmvfc ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +vmw_pvscsi ? +ums-cypress ? +be2iscsi ? +3w-sas ? +isci ? +mlx4_ib ? +mlx5_ib ? +zfcp ? +sd_mod ? +hisi_sas_v2_hw ? +hisi_sas_v3_hw ? +iscsi_ibft ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? + +smartpqi ? --- linux-5.8.0.orig/debian.master/d-i/modules/scsi-modules.powerpc +++ linux-5.8.0/debian.master/d-i/modules/scsi-modules.powerpc @@ -0,0 +1,118 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +ibmvfc ? +ibmvscsi ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsic ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +sr_mod ? +sd_mod ? --- linux-5.8.0.orig/debian.master/d-i/modules/serial-modules +++ linux-5.8.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,4 @@ +generic_serial ? +serial_cs ? +synclink_cs ? +hyperv-keyboard ? --- linux-5.8.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-5.8.0/debian.master/d-i/modules/speakup-modules @@ -0,0 +1,16 @@ +speakup ? +speakup_acntpc ? +speakup_acntsa ? +speakup_apollo ? +speakup_audptr ? +speakup_bns ? +speakup_decext ? +speakup_dectlk ? +speakup_dtlk ? +speakup_dummy ? +speakup_keypc ? +speakup_ltlk ? +speakup_soft ? +speakup_spkout ? +speakup_txprt ? +speakup_decpc ? --- linux-5.8.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-5.8.0/debian.master/d-i/modules/storage-core-modules @@ -0,0 +1,15 @@ +# Core stacks +usb-storage ? + +# Block level +ata_piix ? +ata_generic ? + +# Loop modules +cryptoloop ? + +# Needs to be here for better cdrom initrd layout +isofs ? + +# Needed for NVMe disks under VMD PCIe domains +vmd ? --- linux-5.8.0.orig/debian.master/d-i/modules/storage-core-modules.powerpc +++ linux-5.8.0/debian.master/d-i/modules/storage-core-modules.powerpc @@ -0,0 +1,13 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop + +# Needs to be here for better cdrom initrd layout +isofs + +ps3stor_lib ? +ps3rom ? --- linux-5.8.0.orig/debian.master/d-i/modules/usb-modules +++ linux-5.8.0/debian.master/d-i/modules/usb-modules @@ -0,0 +1,15 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? +xhci-plat-hcd ? +ehci-tegra ? +ehci-msm ? +ehci-platform ? +uas ? --- linux-5.8.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-5.8.0/debian.master/d-i/modules/virtio-modules @@ -0,0 +1,11 @@ +virtio_balloon ? +virtio_pci ? +virtio_ring ? +virtio-rng ? +virtio_scsi ? +hv_vmbus ? +hv_utils ? +hv_netvsc ? +hv_mouse ? +hv_storvsc ? +hv_balloon ? --- linux-5.8.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-5.8.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-5.8.0.orig/debian.master/d-i/package-list +++ linux-5.8.0/debian.master/d-i/package-list @@ -0,0 +1,203 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules, squashfs-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules, squashfs-modules +Provides_s390x: ext3-modules, ext4-modules, ppp-modules, squashfs-modules +Description: kernel image and system map + +Package: dasd-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: DASD storage support + +Package: dasd-extra-modules +Depends: dasd-modules +Priority: extra +Description: DASD storage support -- extras + +Package: fat-modules +Depends: kernel-image +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: fb-modules +Depends: kernel-image +Priority: standard +Description: Framebuffer modules + +Package: firewire-core-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: floppy-modules +Depends: kernel-image +Priority: standard +Description: Floppy driver support + +Package: fs-core-modules +Depends: kernel-image +Priority: standard +Provides: ext2-modules, jfs-modules, reiserfs-modules, xfs-modules +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules +Depends: kernel-image, fat-modules +Priority: standard +Provides: btrfs-modules, ntfs-modules, hfs-modules +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: input-modules +Depends: kernel-image, usb-modules +Priority: standard +Description: Support for various input methods + +Package: md-modules +Depends: kernel-image +Priority: standard +Provides: crypto-dm-modules +Description: Multi-device support (raid, device-mapper, lvm) + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, virtio-modules +Priority: standard +Description: Network interface support + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules +Priority: standard +Description: PCMCIA network interface support + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, usb-modules +Priority: standard +Description: USB network interface support + +Package: nic-shared-modules +Depends: kernel-image, crypto-modules +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: parport-modules +Depends: kernel-image +Priority: standard +Description: Parallel port support + +Package: pata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: PATA support modules + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: PCMCIA Modules + +Package: pcmcia-storage-modules +Depends: kernel-image, scsi-modules +Priority: standard +Description: PCMCIA storage support + +Package: plip-modules +Depends: kernel-image, nic-shared-modules, parport-modules +Priority: standard +Description: PLIP (parallel port) networking support + +Package: ppp-modules +Depends: kernel-image, nic-shared-modules, serial-modules +Priority: standard +Description: PPP (serial port) networking support + +Package: sata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SATA storage support + +Package: scsi-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SCSI storage support + +Package: serial-modules +Depends: kernel-image +Priority: standard +Description: Serial port support + +Package: storage-core-modules +Depends: kernel-image +Priority: standard +Provides: loop-modules +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: usb-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Core USB support + +Package: nfs-modules +Priority: standard +Depends: kernel-image +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: block-modules +Priority: standard +Provides: nbd-modules +Depends: kernel-image, storage-core-modules, parport-modules, virtio-modules +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules +Priority: standard +Depends: kernel-image, storage-core-modules, scsi-modules +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: crypto-modules +Priority: extra +Depends: kernel-image +Description: crypto modules + This package contains crypto modules. + +Package: virtio-modules +Priority: standard +Depends: kernel-image +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: socket-modules +Depends: kernel-image +Priority: standard +Description: Unix socket support + +Package: mouse-modules +Depends: kernel-image, input-modules, usb-modules +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: vlan-modules +Depends: kernel-image +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules +Depends: kernel-image +Priority: standard +Description: ipmi modules + +Package: multipath-modules +Depends: kernel-image +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + --- linux-5.8.0.orig/debian.master/etc/getabis +++ linux-5.8.0/debian.master/etc/getabis @@ -0,0 +1,18 @@ +repo_list=( + "http://archive.ubuntu.com/ubuntu/pool/main/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/main/l/linux" + "http://archive.ubuntu.com/ubuntu/pool/universe/l/linux" + "http://ports.ubuntu.com/ubuntu-ports/pool/universe/l/linux" + "http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu/pool/main/l/linux" + "http://ppa.launchpad.net/canonical-kernel-team/unstable/ubuntu/pool/main/l/linux" + "http://ppa.launchpad.net/canonical-kernel-team/bootstrap/ubuntu/pool/main/l/linux" +) + +package_prefixes linux-buildinfo + +getall armhf generic +getall armhf generic-lpae +getall amd64 generic lowlatency +getall arm64 generic generic-64k +getall ppc64el generic +getall s390x generic --- linux-5.8.0.orig/debian.master/etc/kernelconfig +++ linux-5.8.0/debian.master/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 armhf arm64 ppc64el s390x" + family='ubuntu' +fi --- linux-5.8.0.orig/debian.master/modprobe.d/common.conf +++ linux-5.8.0/debian.master/modprobe.d/common.conf @@ -0,0 +1,3 @@ +# LP:1434842 -- disable OSS drivers by default to allow pulseaudio to emulate +blacklist snd-mixer-oss +blacklist snd-pcm-oss --- linux-5.8.0.orig/debian.master/reconstruct +++ linux-5.8.0/debian.master/reconstruct @@ -0,0 +1,70 @@ +# Recreate any symlinks created since the orig. +# Remove any files deleted from the orig. +rm -f 'arch/alpha/include/asm/local64.h' +rm -f 'arch/ia64/include/asm/local64.h' +rm -f 'arch/powerpc/lib/memcpy_mcsafe_64.S' +rm -f 'arch/powerpc/platforms/pseries/offline_states.h' +rm -f 'arch/x86/include/asm/local64.h' +rm -f 'arch/x86/include/asm/mcsafe_test.h' +rm -f 'drivers/net/can/dev.c' +rm -f 'drivers/net/can/rx-offload.c' +rm -f 'drivers/net/ethernet/mscc/ocelot_board.c' +rm -f 'drivers/pci/pcie/bw_notification.c' +rm -f 'drivers/staging/mt7621-dma/mtk-hsdma.c' +rm -f 'kernel/elfcore.c' +rm -f 'lib/zlib_dfltcc/dfltcc_syms.c' +rm -f 'tools/arch/x86/include/asm/mcsafe_test.h' +rm -f 'tools/perf/bench/mem-memcpy-x86-64-lib.c' +rm -f 'tools/testing/kunit/.gitattributes' +chmod +x 'arch/riscv/kernel/vdso/so2s.sh' +chmod +x 'debian/cloud-tools/hv_get_dhcp_info' +chmod +x 'debian/cloud-tools/hv_get_dns_info' +chmod +x 'debian/cloud-tools/hv_set_ifconfig' +chmod +x 'debian/rules' +chmod +x 'debian/scripts/abi-check' +chmod +x 'debian/scripts/config-check' +chmod +x 'debian/scripts/control-create' +chmod +x 'debian/scripts/dkms-build' +chmod +x 'debian/scripts/dkms-build--nvidia-N' +chmod +x 'debian/scripts/file-downloader' +chmod +x 'debian/scripts/helpers/close' +chmod +x 'debian/scripts/helpers/open' +chmod +x 'debian/scripts/helpers/rebase' +chmod +x 'debian/scripts/link-headers' +chmod +x 'debian/scripts/misc/final-checks' +chmod +x 'debian/scripts/misc/find-missing-sauce.sh' +chmod +x 'debian/scripts/misc/find-obsolete-firmware' +chmod +x 'debian/scripts/misc/fw-to-ihex.sh' +chmod +x 'debian/scripts/misc/gen-auto-reconstruct' +chmod +x 'debian/scripts/misc/get-firmware' +chmod +x 'debian/scripts/misc/getabis' +chmod +x 'debian/scripts/misc/git-ubuntu-log' +chmod +x 'debian/scripts/misc/insert-changes.pl' +chmod +x 'debian/scripts/misc/insert-mainline-changes' +chmod +x 'debian/scripts/misc/insert-ubuntu-changes' +chmod +x 'debian/scripts/misc/kernel-wedge-arch.pl' +chmod +x 'debian/scripts/misc/kernelconfig' +chmod +x 'debian/scripts/misc/retag' +chmod +x 'debian/scripts/misc/splitconfig.pl' +chmod +x 'debian/scripts/misc/tristate.sh' +chmod +x 'debian/scripts/misc/update-aufs.sh' +chmod +x 'debian/scripts/module-check' +chmod +x 'debian/scripts/module-inclusion' +chmod +x 'debian/scripts/retpoline-check' +chmod +x 'debian/scripts/retpoline-extract' +chmod +x 'debian/scripts/retpoline-extract-one' +chmod +x 'debian/templates/extra.postinst.in' +chmod +x 'debian/templates/extra.postrm.in' +chmod +x 'debian/templates/headers.postinst.in' +chmod +x 'debian/templates/image.postinst.in' +chmod +x 'debian/templates/image.postrm.in' +chmod +x 'debian/templates/image.preinst.in' +chmod +x 'debian/templates/image.prerm.in' +chmod +x 'debian/tests-build/check-aliases' +chmod +x 'debian/tests/rebuild' +chmod +x 'debian/tests/ubuntu-regression-suite' +chmod +x 'samples/bpf/lwt_len_hist.sh' +chmod +x 'samples/bpf/test_lwt_bpf.sh' +chmod +x 'scripts/kmsg-doc' +chmod +x 'update-version-dkms' +exit 0 --- linux-5.8.0.orig/debian.master/rules.d/amd64.mk +++ linux-5.8.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,24 @@ +human_arch = 64 bit x86 +build_arch = x86 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic lowlatency +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_perf_jvmti = true +do_tools_bpftool = true +do_tools_x86 = true +do_tools_hyperv = true +do_tools_host = true +do_extras_package = true +do_tools_common = true +do_tools_acpidbg = true +do_zfs = true --- linux-5.8.0.orig/debian.master/rules.d/arm64.mk +++ linux-5.8.0/debian.master/rules.d/arm64.mk @@ -0,0 +1,25 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = arm64 +defconfig = defconfig +flavours = generic generic-64k +build_image_generic = Image.gz +kernel_file_generic = arch/$(build_arch)/boot/Image.gz +build_image_generic-64k = Image.gz +kernel_file_generic-64k = arch/$(build_arch)/boot/Image.gz +install_file = vmlinuz +no_dumpfile = true +uefi_signed = true + +loader = grub +vdso = vdso_install + +do_extras_package = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_perf_jvmti = true +do_tools_bpftool = true + +do_dtbs = true +do_zfs = true --- linux-5.8.0.orig/debian.master/rules.d/armhf.mk +++ linux-5.8.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,19 @@ +human_arch = ARM (hard float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = generic generic-lpae +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_perf_jvmti = true +do_tools_bpftool = true + +do_dtbs = true --- linux-5.8.0.orig/debian.master/rules.d/hooks.mk +++ linux-5.8.0/debian.master/rules.d/hooks.mk @@ -0,0 +1 @@ +do_enforce_all = true --- linux-5.8.0.orig/debian.master/rules.d/i386.mk +++ linux-5.8.0/debian.master/rules.d/i386.mk @@ -0,0 +1,19 @@ +human_arch = 32 bit x86 +build_arch = i386 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic lowlatency +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +do_flavour_image_package = false +do_tools = false +do_tools_common = false +do_extras_package = false +do_source_package = false +do_doc_package = false +do_flavour_header_package = false +do_common_headers_indep = false --- linux-5.8.0.orig/debian.master/rules.d/ppc64el.mk +++ linux-5.8.0/debian.master/rules.d/ppc64el.mk @@ -0,0 +1,21 @@ +human_arch = PowerPC 64el +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pseries_le_defconfig +flavours = generic +build_image = vmlinux.strip +kernel_file = arch/powerpc/boot/vmlinux.strip +install_file = vmlinux +no_dumpfile = true +vdso = vdso_install +loader = grub +do_extras_package = true +opal_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_perf_jvmti = true +do_tools_bpftool = true + +#do_flavour_image_package = false +do_zfs = true --- linux-5.8.0.orig/debian.master/rules.d/riscv64.mk +++ linux-5.8.0/debian.master/rules.d/riscv64.mk @@ -0,0 +1,21 @@ +human_arch = RISC-V +build_arch = riscv +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic +build_image = Image +kernel_file = arch/$(build_arch)/boot/Image +install_file = vmlinuz + +loader = grub +vdso = vdso_install +no_dumpfile = true + +do_flavour_image_package = false +do_tools = false +do_tools_common = false +do_extras_package = false +do_source_package = false +do_doc_package = false +do_flavour_header_package = false +do_common_headers_indep = false --- linux-5.8.0.orig/debian.master/rules.d/s390x.mk +++ linux-5.8.0/debian.master/rules.d/s390x.mk @@ -0,0 +1,21 @@ +human_arch = System 390x +build_arch = s390 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz + +vdso = vdso_install +no_dumpfile = true + +do_extras_package = true +sipl_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_perf_jvmti = true +do_tools_bpftool = true + +do_zfs = true --- linux-5.8.0.orig/debian.master/rules.d/x32.mk +++ linux-5.8.0/debian.master/rules.d/x32.mk @@ -0,0 +1,14 @@ +human_arch = 64 bit x86 (32 bit userspace) +build_arch = x86 +header_arch = $(build_arch) +defconfig = defconfig +flavours = +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true + +do_flavour_image_package = false --- linux-5.8.0.orig/debian.master/tracking-bug +++ linux-5.8.0/debian.master/tracking-bug @@ -0,0 +1 @@ +1930379 --- linux-5.8.0.orig/debian.master/upstream-stable +++ linux-5.8.0/debian.master/upstream-stable @@ -0,0 +1,6 @@ +# The following upstream stable releases have been ported: +[upstream-stable] + linux-5.4.y = v5.4.111 + linux-5.8.y = v5.8.18 + linux-5.9.y = v5.9.16 + linux-5.10.y = v5.10.29 --- linux-5.8.0.orig/debian.master/variants +++ linux-5.8.0/debian.master/variants @@ -0,0 +1,3 @@ +-- +-hwe-20.04 +-hwe-20.04-edge --- linux-5.8.0.orig/debian/canonical-certs.pem +++ linux-5.8.0/debian/canonical-certs.pem @@ -0,0 +1,246 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + c7:7e:51:6a:1c:25:cd:40 + Signature Algorithm: sha512WithRSAEncryption + Issuer: CN = Canonical Ltd. Live Patch Signing + Validity + Not Before: Jul 18 23:41:27 2016 GMT + Not After : Jul 16 23:41:27 2026 GMT + Subject: CN = Canonical Ltd. Live Patch Signing + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (4096 bit) + Modulus: + 00:bd:74:ee:72:b3:4a:ab:e6:31:e8:29:24:c2:bd: + 46:98:32:c0:39:ee:a3:fb:8a:ad:fe:ab:1a:5b:a3: + 2e:a1:80:db:79:61:9e:47:79:2c:75:57:a2:21:f0: + 93:f6:87:f2:9b:4b:9d:2f:b3:58:61:28:3c:41:70: + 13:16:a1:72:90:c9:d5:16:71:7c:e0:30:f9:28:5e: + 48:20:36:00:69:b7:59:9f:a3:ec:a8:eb:55:41:9f: + 38:1e:22:4a:57:20:f4:83:59:49:c5:00:93:d3:33: + 02:92:d1:fc:f0:84:3b:4a:5b:8f:b6:73:9a:89:fa: + 30:1e:e6:2a:68:f2:91:ef:59:57:3d:dc:1c:52:6f: + 5e:e6:9b:b5:b8:7c:98:c9:13:d1:39:68:01:67:91: + e0:d3:67:72:16:0a:5e:16:83:45:31:4f:b5:2b:b3: + f6:40:86:89:3a:84:6e:6f:16:61:bc:70:84:be:5a: + 13:36:7b:82:ea:07:19:fc:18:c1:16:c6:32:0b:7d: + 2c:6b:c4:21:b9:38:6b:31:dc:d9:0c:ad:56:40:68: + 7c:e3:c6:64:8e:bf:1c:e0:72:3e:6c:db:d2:73:79: + da:d7:c5:2f:5d:04:7d:b0:07:1e:95:dd:2a:47:5e: + bf:3e:3a:c8:66:f6:67:0f:d4:2a:f1:e2:71:59:d2: + 6c:7b:a0:37:ac:e6:97:80:30:13:97:48:d5:74:fc: + 38:68:e4:57:cb:99:69:5a:84:27:ac:98:51:e4:64: + bd:91:62:e8:58:27:06:2a:b9:0b:b8:08:e5:e5:b4: + 51:a7:a2:10:df:4e:07:6c:a0:3b:96:f2:6e:df:75: + 8c:97:1e:64:a0:9a:86:9b:98:26:f9:d8:b7:de:5b: + 21:b7:af:89:01:a3:f7:98:6b:da:19:ba:86:ef:ef: + f1:ce:bb:2f:89:ed:c0:b6:1b:e5:5b:f8:90:11:9a: + 52:93:e9:be:f7:35:b9:08:cb:ba:c3:ed:2f:73:af: + cc:96:07:55:b5:de:f6:03:f6:f1:89:f9:21:40:76: + c1:69:f2:61:cc:9a:94:df:9c:ec:6a:65:38:be:d1: + 4e:2a:87:c7:2f:3e:53:ae:8b:9f:54:a1:09:59:64: + 25:aa:a9:d8:44:a9:a8:a0:71:e1:32:aa:4c:32:fd: + 44:28:cc:9c:6f:8e:db:81:7e:6f:fa:00:56:c5:e5: + 03:46:63:fb:8e:71:8d:e3:13:91:9f:ac:60:3e:64: + f3:df:25:34:09:fa:2d:96:9f:16:05:ea:93:f5:e6: + 00:08:27:32:7b:3c:bd:ee:70:24:6c:3b:55:e9:db: + f4:10:2d:20:06:b4:ca:e9:29:65:55:ad:f6:52:54: + 5f:e5:a3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Key Usage: + Digital Signature + X509v3 Subject Key Identifier: + 14:DF:34:D1:A8:7C:F3:76:25:AB:EC:03:9E:F2:BF:52:12:49:B9:69 + X509v3 Authority Key Identifier: + keyid:14:DF:34:D1:A8:7C:F3:76:25:AB:EC:03:9E:F2:BF:52:12:49:B9:69 + + Signature Algorithm: sha512WithRSAEncryption + 30:e7:48:02:37:e9:28:cf:04:a2:4d:5c:fa:d8:4e:c9:76:c7: + 14:3f:bd:2c:51:3d:33:f0:1a:bc:49:f1:47:95:8f:69:d8:a9: + 54:14:44:6c:4d:9f:55:82:08:1e:c6:5b:d5:91:d9:bc:2e:b0: + af:d6:25:65:74:96:aa:36:de:ae:31:a8:11:f2:a4:2c:5a:e1: + 4f:73:f8:4a:c3:35:b0:76:96:71:f2:b5:7d:4b:75:ee:5d:bf: + 86:a5:ba:0b:a9:52:cb:ec:ab:e5:23:4b:f2:74:55:28:17:1e: + b3:ac:27:ad:45:13:6e:69:b3:5a:be:42:36:29:48:db:e7:5c: + 22:58:a0:90:82:2c:2a:21:2b:db:f4:64:b7:91:5d:1f:2c:48: + a4:1a:85:e3:86:a5:aa:19:cd:19:e8:a5:fb:a3:7b:94:77:48: + 25:a4:cf:a0:cf:71:82:5c:6f:71:22:7c:d6:97:a0:53:bb:ec: + 30:f6:cb:16:fb:7b:fd:16:94:7a:53:6e:bd:04:64:a2:01:10: + 9f:f0:5b:b5:a6:73:41:9d:5f:6f:45:73:0d:05:f7:30:6d:39: + 90:b6:7d:55:7d:4c:2f:ae:5f:38:56:2f:8b:df:f4:bf:12:06: + 93:6e:0d:02:23:bf:71:91:57:88:e8:bd:62:72:99:00:40:29: + 1e:c9:13:11:da:7e:8e:e1:d2:a5:0d:bf:f7:d6:ec:01:0d:89: + 41:cd:d5:dc:d2:f7:5f:33:0d:4c:2f:85:b7:85:b7:81:e4:17: + 29:f0:74:cf:0e:15:8c:1a:50:0b:08:63:1a:91:4f:e7:76:97: + f1:d4:3b:7e:72:d4:c5:45:58:0c:6a:e9:0d:f2:85:d8:91:1e: + 37:bd:78:e3:39:4d:2e:fd:85:31:c1:a6:3b:6a:cc:2c:53:72: + 1d:8e:7b:f0:e6:76:86:09:6f:1a:f3:e4:a1:e2:dd:76:5f:b0: + 8c:e2:2a:54:5d:c1:88:49:90:10:15:42:7d:05:24:53:8c:54: + ff:48:18:1a:36:e3:31:d3:54:32:78:0d:fe:f2:3d:aa:0d:37: + 15:84:b4:36:47:31:e8:85:6e:0b:58:38:ff:21:91:09:c9:a8: + 43:a3:ea:60:cb:7e:ed:f7:41:6f:4e:91:c1:fd:77:46:e7:d4: + e7:86:c0:1b:fd:50:6c:aa:be:00:b3:63:02:ff:4e:c7:a5:57: + 6e:29:64:e9:54:d5:30:63:38:5f:2d:5a:db:49:5f:14:14:22: + d2:81:1f:61:9e:ee:ee:16:66:d6:bc:bd:ac:1b:5c:fb:38:31: + 95:33:2e:84:6e:7a:de:ee:b9:fc:97:17:06:13:bf:70:1c:6e: + 76:ed:66:38:e2:70:08:00 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIJAMd+UWocJc1AMA0GCSqGSIb3DQEBDQUAMCwxKjAoBgNV +BAMMIUNhbm9uaWNhbCBMdGQuIExpdmUgUGF0Y2ggU2lnbmluZzAeFw0xNjA3MTgy +MzQxMjdaFw0yNjA3MTYyMzQxMjdaMCwxKjAoBgNVBAMMIUNhbm9uaWNhbCBMdGQu +IExpdmUgUGF0Y2ggU2lnbmluZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAL107nKzSqvmMegpJMK9RpgywDnuo/uKrf6rGlujLqGA23lhnkd5LHVXoiHw +k/aH8ptLnS+zWGEoPEFwExahcpDJ1RZxfOAw+SheSCA2AGm3WZ+j7KjrVUGfOB4i +Slcg9INZScUAk9MzApLR/PCEO0pbj7Zzmon6MB7mKmjyke9ZVz3cHFJvXuabtbh8 +mMkT0TloAWeR4NNnchYKXhaDRTFPtSuz9kCGiTqEbm8WYbxwhL5aEzZ7guoHGfwY +wRbGMgt9LGvEIbk4azHc2QytVkBofOPGZI6/HOByPmzb0nN52tfFL10EfbAHHpXd +Kkdevz46yGb2Zw/UKvHicVnSbHugN6zml4AwE5dI1XT8OGjkV8uZaVqEJ6yYUeRk +vZFi6FgnBiq5C7gI5eW0UaeiEN9OB2ygO5bybt91jJceZKCahpuYJvnYt95bIbev +iQGj95hr2hm6hu/v8c67L4ntwLYb5Vv4kBGaUpPpvvc1uQjLusPtL3OvzJYHVbXe +9gP28Yn5IUB2wWnyYcyalN+c7GplOL7RTiqHxy8+U66Ln1ShCVlkJaqp2ESpqKBx +4TKqTDL9RCjMnG+O24F+b/oAVsXlA0Zj+45xjeMTkZ+sYD5k898lNAn6LZafFgXq +k/XmAAgnMns8ve5wJGw7Venb9BAtIAa0yukpZVWt9lJUX+WjAgMBAAGjXTBbMAwG +A1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBQU3zTRqHzzdiWr7AOe +8r9SEkm5aTAfBgNVHSMEGDAWgBQU3zTRqHzzdiWr7AOe8r9SEkm5aTANBgkqhkiG +9w0BAQ0FAAOCAgEAMOdIAjfpKM8Eok1c+thOyXbHFD+9LFE9M/AavEnxR5WPadip +VBREbE2fVYIIHsZb1ZHZvC6wr9YlZXSWqjberjGoEfKkLFrhT3P4SsM1sHaWcfK1 +fUt17l2/hqW6C6lSy+yr5SNL8nRVKBces6wnrUUTbmmzWr5CNilI2+dcIligkIIs +KiEr2/Rkt5FdHyxIpBqF44alqhnNGeil+6N7lHdIJaTPoM9xglxvcSJ81pegU7vs +MPbLFvt7/RaUelNuvQRkogEQn/BbtaZzQZ1fb0VzDQX3MG05kLZ9VX1ML65fOFYv +i9/0vxIGk24NAiO/cZFXiOi9YnKZAEApHskTEdp+juHSpQ2/99bsAQ2JQc3V3NL3 +XzMNTC+Ft4W3geQXKfB0zw4VjBpQCwhjGpFP53aX8dQ7fnLUxUVYDGrpDfKF2JEe +N7144zlNLv2FMcGmO2rMLFNyHY578OZ2hglvGvPkoeLddl+wjOIqVF3BiEmQEBVC +fQUkU4xU/0gYGjbjMdNUMngN/vI9qg03FYS0Nkcx6IVuC1g4/yGRCcmoQ6PqYMt+ +7fdBb06Rwf13RufU54bAG/1QbKq+ALNjAv9Ox6VXbilk6VTVMGM4Xy1a20lfFBQi +0oEfYZ7u7hZm1ry9rBtc+zgxlTMuhG563u65/JcXBhO/cBxudu1mOOJwCAA= +-----END CERTIFICATE----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + e9:df:13:0f:92:92:a9:b7 + Signature Algorithm: sha512WithRSAEncryption + Issuer: C = GB, ST = Isle of Man, L = Douglas, O = Canonical Ltd., CN = Canonical Ltd. Kernel Module Signing + Validity + Not Before: May 31 16:06:09 2016 GMT + Not After : May 29 16:06:09 2026 GMT + Subject: C = GB, ST = Isle of Man, L = Douglas, O = Canonical Ltd., CN = Canonical Ltd. Kernel Module Signing + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (4096 bit) + Modulus: + 00:b3:b0:4f:c6:0a:77:8b:f9:d1:53:33:34:d2:80: + b5:63:6f:e1:f6:a2:83:99:d5:b6:b1:e4:99:91:fa: + 6c:19:c6:d0:91:2a:b9:7d:b5:98:a6:0d:28:01:b8: + 7c:8e:aa:38:ec:51:37:33:96:f0:b0:9b:8d:86:5f: + 67:23:69:2f:d7:c2:f3:fb:c5:d7:f9:04:ff:f2:e5: + 61:68:b7:29:b9:c6:8e:4b:4d:2d:8f:92:0c:00:b3: + a3:d2:5a:08:64:cd:f2:09:0b:a5:0e:e6:64:75:d5: + 41:f4:4d:49:3a:0d:dc:b9:27:8e:c4:d6:b1:df:8f: + 6c:f0:e4:f7:31:cb:a9:04:a1:f9:a7:aa:15:da:59: + 03:4d:46:14:d0:dd:bf:e0:f5:9e:f0:71:0c:70:78: + 2b:08:fb:e0:b6:68:a4:74:12:9d:f7:f2:64:88:17: + 2a:8a:ed:1a:91:b5:6c:13:bd:4c:10:0a:0b:72:0b: + 90:db:7d:f3:78:44:4c:d2:a5:41:f7:1c:77:7d:5a: + 8a:54:bc:8f:fe:b7:ee:e1:bc:59:37:c4:d4:e8:14: + d0:5b:42:9b:04:00:8e:6d:83:8a:25:21:5b:08:c4: + 7b:b2:d9:99:52:c9:5e:59:6d:c4:aa:52:59:e2:e4: + 2f:7e:7e:ac:05:01:99:bf:13:72:b7:45:c5:17:da: + 8a:d5:3e:71:73:2e:d8:aa:e6:eb:5a:d0:9a:c4:93: + f3:be:eb:d2:47:25:34:16:29:fa:dd:9a:2f:b1:20: + e5:41:4e:ed:ea:51:7c:23:80:ba:3d:b5:3a:0b:8c: + 9c:85:48:6c:3c:8b:29:2f:2f:12:c7:52:34:02:ea: + 0f:ac:53:23:3c:f8:3e:40:1b:30:63:e9:2d:e6:f6: + 58:cc:51:f9:eb:08:4a:b4:c7:16:80:d1:8b:c2:64: + 6a:71:a9:70:31:a4:a7:3a:c0:93:99:1b:0e:42:c1: + 00:6d:43:27:99:6c:e5:fd:23:16:c1:8e:b5:66:17: + 2b:4c:53:5a:6d:1e:96:16:13:6a:c6:d4:85:5b:74: + 2e:ce:7c:45:2f:ad:cb:75:9e:5e:91:bd:9a:6a:86: + 1a:06:bd:39:be:a3:50:56:ea:e1:f6:e3:95:69:d7: + 31:e4:66:f7:36:b5:51:c2:22:b4:9c:74:9c:44:0b: + 0e:16:5f:53:f0:23:c6:b9:40:bd:d6:b8:7d:1b:f6: + 73:f6:27:e7:c0:e3:65:a0:58:ab:5c:59:b7:80:8c: + 8c:04:b4:a9:ae:a0:51:40:10:3b:63:59:49:87:d1: + 9b:df:a3:8c:c4:2e:eb:70:c1:0a:18:1f:cb:22:c2: + f2:4a:65:0d:e5:81:74:d8:ce:72:c6:35:be:ba:63: + 72:c4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Key Usage: + Digital Signature + X509v3 Subject Key Identifier: + 88:F7:52:E5:60:A1:E0:73:7E:31:16:3A:46:6A:D7:B7:0A:85:0C:19 + X509v3 Authority Key Identifier: + keyid:88:F7:52:E5:60:A1:E0:73:7E:31:16:3A:46:6A:D7:B7:0A:85:0C:19 + + Signature Algorithm: sha512WithRSAEncryption + 04:85:16:27:58:ba:71:28:57:86:7b:c2:83:db:e5:72:6f:1e: + b2:1c:63:b0:db:ad:c0:42:96:c0:4f:65:f6:35:4d:c0:07:0d: + 46:be:d3:1e:ec:f1:22:18:2a:18:5d:bb:69:a6:a6:d4:0d:c3: + 57:03:b9:e7:45:49:28:ca:6d:98:17:68:97:cb:7b:36:81:0a: + 37:9e:34:79:f3:e1:0e:5b:77:43:bb:5a:a5:45:b7:16:50:86: + fd:12:a4:96:0f:15:19:09:1c:e1:fa:80:a5:80:09:be:bb:c8: + 26:0b:3e:de:03:d2:c2:18:a4:8d:0d:de:c5:32:82:0b:fb:75: + 55:66:1a:2a:bb:e4:bd:25:91:20:15:d4:be:b8:3f:53:e3:fb: + a8:c3:55:e3:d5:e7:82:18:95:df:39:09:a7:fc:89:6e:b4:1c: + aa:2d:e8:67:c2:0d:34:34:3e:f9:fa:0b:ce:81:92:11:ae:12: + 0a:fe:35:63:ce:46:29:c4:2b:4f:cb:4e:05:0a:a1:11:e2:35: + f6:5a:5d:b5:e8:d2:6f:4c:fc:3d:24:a6:03:4b:dd:98:6b:f2: + 71:58:16:1d:a5:25:ef:d9:06:7c:e8:db:7b:88:6a:89:5c:59: + 01:92:64:db:44:08:63:6c:7c:32:d6:55:98:63:09:26:61:67: + 0a:fe:5d:ee:fd:23:59:b3:4d:91:c1:4d:41:8b:cd:20:58:fa: + 2d:45:e5:bd:1d:69:5c:03:a0:49:a6:97:54:13:b6:c9:e0:f8: + 56:83:a1:2a:c3:f4:6c:fd:ab:20:ca:3d:9c:95:c0:cf:04:bb: + 46:39:cf:34:81:65:45:27:64:01:7d:62:b3:b8:72:ea:10:d5: + 0f:53:7d:39:88:25:09:6f:8c:bc:e0:49:bb:39:e2:0e:8d:cf: + 56:4d:c1:82:6d:87:d2:e7:fc:c0:9f:a7:65:60:d2:6c:65:18: + 59:38:6e:d0:9c:d7:c3:81:9a:9a:29:8f:83:84:c3:b5:44:ff: + 28:ac:13:17:64:f2:26:13:d9:55:06:b7:69:68:7c:bf:ec:d1: + 8c:ef:b7:da:76:e1:07:73:c6:31:62:31:cb:b6:e1:e7:7f:0c: + c3:f7:4c:52:be:25:36:8e:a1:bb:60:02:c3:cb:3e:6f:29:fc: + 7f:6a:fa:f8:ec:0a:df:49:e2:57:0e:bc:bd:93:c3:1b:d5:36: + 8a:ff:d8:1b:17:c7:1f:cb:69:00:d2:54:9e:ad:61:89:92:95: + 11:f8:ea:17:83:9f:9b:09:7d:b8:94:a4:ea:f5:ae:ea:dc:dd: + 62:b9:9e:68:9c:18:ec:19:c4:13:08:c8:b1:62:ab:8e:84:69: + 11:3c:da:ea:0d:b7:22:bd +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIJAOnfEw+Skqm3MA0GCSqGSIb3DQEBDQUAMH0xCzAJBgNV +BAYTAkdCMRQwEgYDVQQIDAtJc2xlIG9mIE1hbjEQMA4GA1UEBwwHRG91Z2xhczEX +MBUGA1UECgwOQ2Fub25pY2FsIEx0ZC4xLTArBgNVBAMMJENhbm9uaWNhbCBMdGQu +IEtlcm5lbCBNb2R1bGUgU2lnbmluZzAeFw0xNjA1MzExNjA2MDlaFw0yNjA1Mjkx +NjA2MDlaMH0xCzAJBgNVBAYTAkdCMRQwEgYDVQQIDAtJc2xlIG9mIE1hbjEQMA4G +A1UEBwwHRG91Z2xhczEXMBUGA1UECgwOQ2Fub25pY2FsIEx0ZC4xLTArBgNVBAMM +JENhbm9uaWNhbCBMdGQuIEtlcm5lbCBNb2R1bGUgU2lnbmluZzCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBALOwT8YKd4v50VMzNNKAtWNv4faig5nVtrHk +mZH6bBnG0JEquX21mKYNKAG4fI6qOOxRNzOW8LCbjYZfZyNpL9fC8/vF1/kE//Ll +YWi3KbnGjktNLY+SDACzo9JaCGTN8gkLpQ7mZHXVQfRNSToN3LknjsTWsd+PbPDk +9zHLqQSh+aeqFdpZA01GFNDdv+D1nvBxDHB4Kwj74LZopHQSnffyZIgXKortGpG1 +bBO9TBAKC3ILkNt983hETNKlQfccd31ailS8j/637uG8WTfE1OgU0FtCmwQAjm2D +iiUhWwjEe7LZmVLJXlltxKpSWeLkL35+rAUBmb8TcrdFxRfaitU+cXMu2Krm61rQ +msST877r0kclNBYp+t2aL7Eg5UFO7epRfCOAuj21OguMnIVIbDyLKS8vEsdSNALq +D6xTIzz4PkAbMGPpLeb2WMxR+esISrTHFoDRi8JkanGpcDGkpzrAk5kbDkLBAG1D +J5ls5f0jFsGOtWYXK0xTWm0elhYTasbUhVt0Ls58RS+ty3WeXpG9mmqGGga9Ob6j +UFbq4fbjlWnXMeRm9za1UcIitJx0nEQLDhZfU/AjxrlAvda4fRv2c/Yn58DjZaBY +q1xZt4CMjAS0qa6gUUAQO2NZSYfRm9+jjMQu63DBChgfyyLC8kplDeWBdNjOcsY1 +vrpjcsT5AgMBAAGjXTBbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMB0GA1Ud +DgQWBBSI91LlYKHgc34xFjpGate3CoUMGTAfBgNVHSMEGDAWgBSI91LlYKHgc34x +FjpGate3CoUMGTANBgkqhkiG9w0BAQ0FAAOCAgEABIUWJ1i6cShXhnvCg9vlcm8e +shxjsNutwEKWwE9l9jVNwAcNRr7THuzxIhgqGF27aaam1A3DVwO550VJKMptmBdo +l8t7NoEKN540efPhDlt3Q7tapUW3FlCG/RKklg8VGQkc4fqApYAJvrvIJgs+3gPS +whikjQ3exTKCC/t1VWYaKrvkvSWRIBXUvrg/U+P7qMNV49XnghiV3zkJp/yJbrQc +qi3oZ8INNDQ++foLzoGSEa4SCv41Y85GKcQrT8tOBQqhEeI19lpdtejSb0z8PSSm +A0vdmGvycVgWHaUl79kGfOjbe4hqiVxZAZJk20QIY2x8MtZVmGMJJmFnCv5d7v0j +WbNNkcFNQYvNIFj6LUXlvR1pXAOgSaaXVBO2yeD4VoOhKsP0bP2rIMo9nJXAzwS7 +RjnPNIFlRSdkAX1is7hy6hDVD1N9OYglCW+MvOBJuzniDo3PVk3Bgm2H0uf8wJ+n +ZWDSbGUYWThu0JzXw4GamimPg4TDtUT/KKwTF2TyJhPZVQa3aWh8v+zRjO+32nbh +B3PGMWIxy7bh538Mw/dMUr4lNo6hu2ACw8s+byn8f2r6+OwK30niVw68vZPDG9U2 +iv/YGxfHH8tpANJUnq1hiZKVEfjqF4Ofmwl9uJSk6vWu6tzdYrmeaJwY7BnEEwjI +sWKrjoRpETza6g23Ir0= +-----END CERTIFICATE----- --- linux-5.8.0.orig/debian/certs/canonical-livepatch-all.pem +++ linux-5.8.0/debian/certs/canonical-livepatch-all.pem @@ -0,0 +1,121 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + c7:7e:51:6a:1c:25:cd:40 + Signature Algorithm: sha512WithRSAEncryption + Issuer: CN = Canonical Ltd. Live Patch Signing + Validity + Not Before: Jul 18 23:41:27 2016 GMT + Not After : Jul 16 23:41:27 2026 GMT + Subject: CN = Canonical Ltd. Live Patch Signing + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (4096 bit) + Modulus: + 00:bd:74:ee:72:b3:4a:ab:e6:31:e8:29:24:c2:bd: + 46:98:32:c0:39:ee:a3:fb:8a:ad:fe:ab:1a:5b:a3: + 2e:a1:80:db:79:61:9e:47:79:2c:75:57:a2:21:f0: + 93:f6:87:f2:9b:4b:9d:2f:b3:58:61:28:3c:41:70: + 13:16:a1:72:90:c9:d5:16:71:7c:e0:30:f9:28:5e: + 48:20:36:00:69:b7:59:9f:a3:ec:a8:eb:55:41:9f: + 38:1e:22:4a:57:20:f4:83:59:49:c5:00:93:d3:33: + 02:92:d1:fc:f0:84:3b:4a:5b:8f:b6:73:9a:89:fa: + 30:1e:e6:2a:68:f2:91:ef:59:57:3d:dc:1c:52:6f: + 5e:e6:9b:b5:b8:7c:98:c9:13:d1:39:68:01:67:91: + e0:d3:67:72:16:0a:5e:16:83:45:31:4f:b5:2b:b3: + f6:40:86:89:3a:84:6e:6f:16:61:bc:70:84:be:5a: + 13:36:7b:82:ea:07:19:fc:18:c1:16:c6:32:0b:7d: + 2c:6b:c4:21:b9:38:6b:31:dc:d9:0c:ad:56:40:68: + 7c:e3:c6:64:8e:bf:1c:e0:72:3e:6c:db:d2:73:79: + da:d7:c5:2f:5d:04:7d:b0:07:1e:95:dd:2a:47:5e: + bf:3e:3a:c8:66:f6:67:0f:d4:2a:f1:e2:71:59:d2: + 6c:7b:a0:37:ac:e6:97:80:30:13:97:48:d5:74:fc: + 38:68:e4:57:cb:99:69:5a:84:27:ac:98:51:e4:64: + bd:91:62:e8:58:27:06:2a:b9:0b:b8:08:e5:e5:b4: + 51:a7:a2:10:df:4e:07:6c:a0:3b:96:f2:6e:df:75: + 8c:97:1e:64:a0:9a:86:9b:98:26:f9:d8:b7:de:5b: + 21:b7:af:89:01:a3:f7:98:6b:da:19:ba:86:ef:ef: + f1:ce:bb:2f:89:ed:c0:b6:1b:e5:5b:f8:90:11:9a: + 52:93:e9:be:f7:35:b9:08:cb:ba:c3:ed:2f:73:af: + cc:96:07:55:b5:de:f6:03:f6:f1:89:f9:21:40:76: + c1:69:f2:61:cc:9a:94:df:9c:ec:6a:65:38:be:d1: + 4e:2a:87:c7:2f:3e:53:ae:8b:9f:54:a1:09:59:64: + 25:aa:a9:d8:44:a9:a8:a0:71:e1:32:aa:4c:32:fd: + 44:28:cc:9c:6f:8e:db:81:7e:6f:fa:00:56:c5:e5: + 03:46:63:fb:8e:71:8d:e3:13:91:9f:ac:60:3e:64: + f3:df:25:34:09:fa:2d:96:9f:16:05:ea:93:f5:e6: + 00:08:27:32:7b:3c:bd:ee:70:24:6c:3b:55:e9:db: + f4:10:2d:20:06:b4:ca:e9:29:65:55:ad:f6:52:54: + 5f:e5:a3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Key Usage: + Digital Signature + X509v3 Subject Key Identifier: + 14:DF:34:D1:A8:7C:F3:76:25:AB:EC:03:9E:F2:BF:52:12:49:B9:69 + X509v3 Authority Key Identifier: + keyid:14:DF:34:D1:A8:7C:F3:76:25:AB:EC:03:9E:F2:BF:52:12:49:B9:69 + + Signature Algorithm: sha512WithRSAEncryption + 30:e7:48:02:37:e9:28:cf:04:a2:4d:5c:fa:d8:4e:c9:76:c7: + 14:3f:bd:2c:51:3d:33:f0:1a:bc:49:f1:47:95:8f:69:d8:a9: + 54:14:44:6c:4d:9f:55:82:08:1e:c6:5b:d5:91:d9:bc:2e:b0: + af:d6:25:65:74:96:aa:36:de:ae:31:a8:11:f2:a4:2c:5a:e1: + 4f:73:f8:4a:c3:35:b0:76:96:71:f2:b5:7d:4b:75:ee:5d:bf: + 86:a5:ba:0b:a9:52:cb:ec:ab:e5:23:4b:f2:74:55:28:17:1e: + b3:ac:27:ad:45:13:6e:69:b3:5a:be:42:36:29:48:db:e7:5c: + 22:58:a0:90:82:2c:2a:21:2b:db:f4:64:b7:91:5d:1f:2c:48: + a4:1a:85:e3:86:a5:aa:19:cd:19:e8:a5:fb:a3:7b:94:77:48: + 25:a4:cf:a0:cf:71:82:5c:6f:71:22:7c:d6:97:a0:53:bb:ec: + 30:f6:cb:16:fb:7b:fd:16:94:7a:53:6e:bd:04:64:a2:01:10: + 9f:f0:5b:b5:a6:73:41:9d:5f:6f:45:73:0d:05:f7:30:6d:39: + 90:b6:7d:55:7d:4c:2f:ae:5f:38:56:2f:8b:df:f4:bf:12:06: + 93:6e:0d:02:23:bf:71:91:57:88:e8:bd:62:72:99:00:40:29: + 1e:c9:13:11:da:7e:8e:e1:d2:a5:0d:bf:f7:d6:ec:01:0d:89: + 41:cd:d5:dc:d2:f7:5f:33:0d:4c:2f:85:b7:85:b7:81:e4:17: + 29:f0:74:cf:0e:15:8c:1a:50:0b:08:63:1a:91:4f:e7:76:97: + f1:d4:3b:7e:72:d4:c5:45:58:0c:6a:e9:0d:f2:85:d8:91:1e: + 37:bd:78:e3:39:4d:2e:fd:85:31:c1:a6:3b:6a:cc:2c:53:72: + 1d:8e:7b:f0:e6:76:86:09:6f:1a:f3:e4:a1:e2:dd:76:5f:b0: + 8c:e2:2a:54:5d:c1:88:49:90:10:15:42:7d:05:24:53:8c:54: + ff:48:18:1a:36:e3:31:d3:54:32:78:0d:fe:f2:3d:aa:0d:37: + 15:84:b4:36:47:31:e8:85:6e:0b:58:38:ff:21:91:09:c9:a8: + 43:a3:ea:60:cb:7e:ed:f7:41:6f:4e:91:c1:fd:77:46:e7:d4: + e7:86:c0:1b:fd:50:6c:aa:be:00:b3:63:02:ff:4e:c7:a5:57: + 6e:29:64:e9:54:d5:30:63:38:5f:2d:5a:db:49:5f:14:14:22: + d2:81:1f:61:9e:ee:ee:16:66:d6:bc:bd:ac:1b:5c:fb:38:31: + 95:33:2e:84:6e:7a:de:ee:b9:fc:97:17:06:13:bf:70:1c:6e: + 76:ed:66:38:e2:70:08:00 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIJAMd+UWocJc1AMA0GCSqGSIb3DQEBDQUAMCwxKjAoBgNV +BAMMIUNhbm9uaWNhbCBMdGQuIExpdmUgUGF0Y2ggU2lnbmluZzAeFw0xNjA3MTgy +MzQxMjdaFw0yNjA3MTYyMzQxMjdaMCwxKjAoBgNVBAMMIUNhbm9uaWNhbCBMdGQu +IExpdmUgUGF0Y2ggU2lnbmluZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAL107nKzSqvmMegpJMK9RpgywDnuo/uKrf6rGlujLqGA23lhnkd5LHVXoiHw +k/aH8ptLnS+zWGEoPEFwExahcpDJ1RZxfOAw+SheSCA2AGm3WZ+j7KjrVUGfOB4i +Slcg9INZScUAk9MzApLR/PCEO0pbj7Zzmon6MB7mKmjyke9ZVz3cHFJvXuabtbh8 +mMkT0TloAWeR4NNnchYKXhaDRTFPtSuz9kCGiTqEbm8WYbxwhL5aEzZ7guoHGfwY +wRbGMgt9LGvEIbk4azHc2QytVkBofOPGZI6/HOByPmzb0nN52tfFL10EfbAHHpXd +Kkdevz46yGb2Zw/UKvHicVnSbHugN6zml4AwE5dI1XT8OGjkV8uZaVqEJ6yYUeRk +vZFi6FgnBiq5C7gI5eW0UaeiEN9OB2ygO5bybt91jJceZKCahpuYJvnYt95bIbev +iQGj95hr2hm6hu/v8c67L4ntwLYb5Vv4kBGaUpPpvvc1uQjLusPtL3OvzJYHVbXe +9gP28Yn5IUB2wWnyYcyalN+c7GplOL7RTiqHxy8+U66Ln1ShCVlkJaqp2ESpqKBx +4TKqTDL9RCjMnG+O24F+b/oAVsXlA0Zj+45xjeMTkZ+sYD5k898lNAn6LZafFgXq +k/XmAAgnMns8ve5wJGw7Venb9BAtIAa0yukpZVWt9lJUX+WjAgMBAAGjXTBbMAwG +A1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMB0GA1UdDgQWBBQU3zTRqHzzdiWr7AOe +8r9SEkm5aTAfBgNVHSMEGDAWgBQU3zTRqHzzdiWr7AOe8r9SEkm5aTANBgkqhkiG +9w0BAQ0FAAOCAgEAMOdIAjfpKM8Eok1c+thOyXbHFD+9LFE9M/AavEnxR5WPadip +VBREbE2fVYIIHsZb1ZHZvC6wr9YlZXSWqjberjGoEfKkLFrhT3P4SsM1sHaWcfK1 +fUt17l2/hqW6C6lSy+yr5SNL8nRVKBces6wnrUUTbmmzWr5CNilI2+dcIligkIIs +KiEr2/Rkt5FdHyxIpBqF44alqhnNGeil+6N7lHdIJaTPoM9xglxvcSJ81pegU7vs +MPbLFvt7/RaUelNuvQRkogEQn/BbtaZzQZ1fb0VzDQX3MG05kLZ9VX1ML65fOFYv +i9/0vxIGk24NAiO/cZFXiOi9YnKZAEApHskTEdp+juHSpQ2/99bsAQ2JQc3V3NL3 +XzMNTC+Ft4W3geQXKfB0zw4VjBpQCwhjGpFP53aX8dQ7fnLUxUVYDGrpDfKF2JEe +N7144zlNLv2FMcGmO2rMLFNyHY578OZ2hglvGvPkoeLddl+wjOIqVF3BiEmQEBVC +fQUkU4xU/0gYGjbjMdNUMngN/vI9qg03FYS0Nkcx6IVuC1g4/yGRCcmoQ6PqYMt+ +7fdBb06Rwf13RufU54bAG/1QbKq+ALNjAv9Ox6VXbilk6VTVMGM4Xy1a20lfFBQi +0oEfYZ7u7hZm1ry9rBtc+zgxlTMuhG563u65/JcXBhO/cBxudu1mOOJwCAA= +-----END CERTIFICATE----- --- linux-5.8.0.orig/debian/certs/ubuntu-drivers-all.pem +++ linux-5.8.0/debian/certs/ubuntu-drivers-all.pem @@ -0,0 +1,125 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + e9:df:13:0f:92:92:a9:b7 + Signature Algorithm: sha512WithRSAEncryption + Issuer: C = GB, ST = Isle of Man, L = Douglas, O = Canonical Ltd., CN = Canonical Ltd. Kernel Module Signing + Validity + Not Before: May 31 16:06:09 2016 GMT + Not After : May 29 16:06:09 2026 GMT + Subject: C = GB, ST = Isle of Man, L = Douglas, O = Canonical Ltd., CN = Canonical Ltd. Kernel Module Signing + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (4096 bit) + Modulus: + 00:b3:b0:4f:c6:0a:77:8b:f9:d1:53:33:34:d2:80: + b5:63:6f:e1:f6:a2:83:99:d5:b6:b1:e4:99:91:fa: + 6c:19:c6:d0:91:2a:b9:7d:b5:98:a6:0d:28:01:b8: + 7c:8e:aa:38:ec:51:37:33:96:f0:b0:9b:8d:86:5f: + 67:23:69:2f:d7:c2:f3:fb:c5:d7:f9:04:ff:f2:e5: + 61:68:b7:29:b9:c6:8e:4b:4d:2d:8f:92:0c:00:b3: + a3:d2:5a:08:64:cd:f2:09:0b:a5:0e:e6:64:75:d5: + 41:f4:4d:49:3a:0d:dc:b9:27:8e:c4:d6:b1:df:8f: + 6c:f0:e4:f7:31:cb:a9:04:a1:f9:a7:aa:15:da:59: + 03:4d:46:14:d0:dd:bf:e0:f5:9e:f0:71:0c:70:78: + 2b:08:fb:e0:b6:68:a4:74:12:9d:f7:f2:64:88:17: + 2a:8a:ed:1a:91:b5:6c:13:bd:4c:10:0a:0b:72:0b: + 90:db:7d:f3:78:44:4c:d2:a5:41:f7:1c:77:7d:5a: + 8a:54:bc:8f:fe:b7:ee:e1:bc:59:37:c4:d4:e8:14: + d0:5b:42:9b:04:00:8e:6d:83:8a:25:21:5b:08:c4: + 7b:b2:d9:99:52:c9:5e:59:6d:c4:aa:52:59:e2:e4: + 2f:7e:7e:ac:05:01:99:bf:13:72:b7:45:c5:17:da: + 8a:d5:3e:71:73:2e:d8:aa:e6:eb:5a:d0:9a:c4:93: + f3:be:eb:d2:47:25:34:16:29:fa:dd:9a:2f:b1:20: + e5:41:4e:ed:ea:51:7c:23:80:ba:3d:b5:3a:0b:8c: + 9c:85:48:6c:3c:8b:29:2f:2f:12:c7:52:34:02:ea: + 0f:ac:53:23:3c:f8:3e:40:1b:30:63:e9:2d:e6:f6: + 58:cc:51:f9:eb:08:4a:b4:c7:16:80:d1:8b:c2:64: + 6a:71:a9:70:31:a4:a7:3a:c0:93:99:1b:0e:42:c1: + 00:6d:43:27:99:6c:e5:fd:23:16:c1:8e:b5:66:17: + 2b:4c:53:5a:6d:1e:96:16:13:6a:c6:d4:85:5b:74: + 2e:ce:7c:45:2f:ad:cb:75:9e:5e:91:bd:9a:6a:86: + 1a:06:bd:39:be:a3:50:56:ea:e1:f6:e3:95:69:d7: + 31:e4:66:f7:36:b5:51:c2:22:b4:9c:74:9c:44:0b: + 0e:16:5f:53:f0:23:c6:b9:40:bd:d6:b8:7d:1b:f6: + 73:f6:27:e7:c0:e3:65:a0:58:ab:5c:59:b7:80:8c: + 8c:04:b4:a9:ae:a0:51:40:10:3b:63:59:49:87:d1: + 9b:df:a3:8c:c4:2e:eb:70:c1:0a:18:1f:cb:22:c2: + f2:4a:65:0d:e5:81:74:d8:ce:72:c6:35:be:ba:63: + 72:c4:f9 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:FALSE + X509v3 Key Usage: + Digital Signature + X509v3 Subject Key Identifier: + 88:F7:52:E5:60:A1:E0:73:7E:31:16:3A:46:6A:D7:B7:0A:85:0C:19 + X509v3 Authority Key Identifier: + keyid:88:F7:52:E5:60:A1:E0:73:7E:31:16:3A:46:6A:D7:B7:0A:85:0C:19 + + Signature Algorithm: sha512WithRSAEncryption + 04:85:16:27:58:ba:71:28:57:86:7b:c2:83:db:e5:72:6f:1e: + b2:1c:63:b0:db:ad:c0:42:96:c0:4f:65:f6:35:4d:c0:07:0d: + 46:be:d3:1e:ec:f1:22:18:2a:18:5d:bb:69:a6:a6:d4:0d:c3: + 57:03:b9:e7:45:49:28:ca:6d:98:17:68:97:cb:7b:36:81:0a: + 37:9e:34:79:f3:e1:0e:5b:77:43:bb:5a:a5:45:b7:16:50:86: + fd:12:a4:96:0f:15:19:09:1c:e1:fa:80:a5:80:09:be:bb:c8: + 26:0b:3e:de:03:d2:c2:18:a4:8d:0d:de:c5:32:82:0b:fb:75: + 55:66:1a:2a:bb:e4:bd:25:91:20:15:d4:be:b8:3f:53:e3:fb: + a8:c3:55:e3:d5:e7:82:18:95:df:39:09:a7:fc:89:6e:b4:1c: + aa:2d:e8:67:c2:0d:34:34:3e:f9:fa:0b:ce:81:92:11:ae:12: + 0a:fe:35:63:ce:46:29:c4:2b:4f:cb:4e:05:0a:a1:11:e2:35: + f6:5a:5d:b5:e8:d2:6f:4c:fc:3d:24:a6:03:4b:dd:98:6b:f2: + 71:58:16:1d:a5:25:ef:d9:06:7c:e8:db:7b:88:6a:89:5c:59: + 01:92:64:db:44:08:63:6c:7c:32:d6:55:98:63:09:26:61:67: + 0a:fe:5d:ee:fd:23:59:b3:4d:91:c1:4d:41:8b:cd:20:58:fa: + 2d:45:e5:bd:1d:69:5c:03:a0:49:a6:97:54:13:b6:c9:e0:f8: + 56:83:a1:2a:c3:f4:6c:fd:ab:20:ca:3d:9c:95:c0:cf:04:bb: + 46:39:cf:34:81:65:45:27:64:01:7d:62:b3:b8:72:ea:10:d5: + 0f:53:7d:39:88:25:09:6f:8c:bc:e0:49:bb:39:e2:0e:8d:cf: + 56:4d:c1:82:6d:87:d2:e7:fc:c0:9f:a7:65:60:d2:6c:65:18: + 59:38:6e:d0:9c:d7:c3:81:9a:9a:29:8f:83:84:c3:b5:44:ff: + 28:ac:13:17:64:f2:26:13:d9:55:06:b7:69:68:7c:bf:ec:d1: + 8c:ef:b7:da:76:e1:07:73:c6:31:62:31:cb:b6:e1:e7:7f:0c: + c3:f7:4c:52:be:25:36:8e:a1:bb:60:02:c3:cb:3e:6f:29:fc: + 7f:6a:fa:f8:ec:0a:df:49:e2:57:0e:bc:bd:93:c3:1b:d5:36: + 8a:ff:d8:1b:17:c7:1f:cb:69:00:d2:54:9e:ad:61:89:92:95: + 11:f8:ea:17:83:9f:9b:09:7d:b8:94:a4:ea:f5:ae:ea:dc:dd: + 62:b9:9e:68:9c:18:ec:19:c4:13:08:c8:b1:62:ab:8e:84:69: + 11:3c:da:ea:0d:b7:22:bd +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIJAOnfEw+Skqm3MA0GCSqGSIb3DQEBDQUAMH0xCzAJBgNV +BAYTAkdCMRQwEgYDVQQIDAtJc2xlIG9mIE1hbjEQMA4GA1UEBwwHRG91Z2xhczEX +MBUGA1UECgwOQ2Fub25pY2FsIEx0ZC4xLTArBgNVBAMMJENhbm9uaWNhbCBMdGQu +IEtlcm5lbCBNb2R1bGUgU2lnbmluZzAeFw0xNjA1MzExNjA2MDlaFw0yNjA1Mjkx +NjA2MDlaMH0xCzAJBgNVBAYTAkdCMRQwEgYDVQQIDAtJc2xlIG9mIE1hbjEQMA4G +A1UEBwwHRG91Z2xhczEXMBUGA1UECgwOQ2Fub25pY2FsIEx0ZC4xLTArBgNVBAMM +JENhbm9uaWNhbCBMdGQuIEtlcm5lbCBNb2R1bGUgU2lnbmluZzCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBALOwT8YKd4v50VMzNNKAtWNv4faig5nVtrHk +mZH6bBnG0JEquX21mKYNKAG4fI6qOOxRNzOW8LCbjYZfZyNpL9fC8/vF1/kE//Ll +YWi3KbnGjktNLY+SDACzo9JaCGTN8gkLpQ7mZHXVQfRNSToN3LknjsTWsd+PbPDk +9zHLqQSh+aeqFdpZA01GFNDdv+D1nvBxDHB4Kwj74LZopHQSnffyZIgXKortGpG1 +bBO9TBAKC3ILkNt983hETNKlQfccd31ailS8j/637uG8WTfE1OgU0FtCmwQAjm2D +iiUhWwjEe7LZmVLJXlltxKpSWeLkL35+rAUBmb8TcrdFxRfaitU+cXMu2Krm61rQ +msST877r0kclNBYp+t2aL7Eg5UFO7epRfCOAuj21OguMnIVIbDyLKS8vEsdSNALq +D6xTIzz4PkAbMGPpLeb2WMxR+esISrTHFoDRi8JkanGpcDGkpzrAk5kbDkLBAG1D +J5ls5f0jFsGOtWYXK0xTWm0elhYTasbUhVt0Ls58RS+ty3WeXpG9mmqGGga9Ob6j +UFbq4fbjlWnXMeRm9za1UcIitJx0nEQLDhZfU/AjxrlAvda4fRv2c/Yn58DjZaBY +q1xZt4CMjAS0qa6gUUAQO2NZSYfRm9+jjMQu63DBChgfyyLC8kplDeWBdNjOcsY1 +vrpjcsT5AgMBAAGjXTBbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMB0GA1Ud +DgQWBBSI91LlYKHgc34xFjpGate3CoUMGTAfBgNVHSMEGDAWgBSI91LlYKHgc34x +FjpGate3CoUMGTANBgkqhkiG9w0BAQ0FAAOCAgEABIUWJ1i6cShXhnvCg9vlcm8e +shxjsNutwEKWwE9l9jVNwAcNRr7THuzxIhgqGF27aaam1A3DVwO550VJKMptmBdo +l8t7NoEKN540efPhDlt3Q7tapUW3FlCG/RKklg8VGQkc4fqApYAJvrvIJgs+3gPS +whikjQ3exTKCC/t1VWYaKrvkvSWRIBXUvrg/U+P7qMNV49XnghiV3zkJp/yJbrQc +qi3oZ8INNDQ++foLzoGSEa4SCv41Y85GKcQrT8tOBQqhEeI19lpdtejSb0z8PSSm +A0vdmGvycVgWHaUl79kGfOjbe4hqiVxZAZJk20QIY2x8MtZVmGMJJmFnCv5d7v0j +WbNNkcFNQYvNIFj6LUXlvR1pXAOgSaaXVBO2yeD4VoOhKsP0bP2rIMo9nJXAzwS7 +RjnPNIFlRSdkAX1is7hy6hDVD1N9OYglCW+MvOBJuzniDo3PVk3Bgm2H0uf8wJ+n +ZWDSbGUYWThu0JzXw4GamimPg4TDtUT/KKwTF2TyJhPZVQa3aWh8v+zRjO+32nbh +B3PGMWIxy7bh538Mw/dMUr4lNo6hu2ACw8s+byn8f2r6+OwK30niVw68vZPDG9U2 +iv/YGxfHH8tpANJUnq1hiZKVEfjqF4Ofmwl9uJSk6vWu6tzdYrmeaJwY7BnEEwjI +sWKrjoRpETza6g23Ir0= +-----END CERTIFICATE----- --- linux-5.8.0.orig/debian/changelog +++ linux-5.8.0/debian/changelog @@ -0,0 +1,18752 @@ +linux (5.8.0-55.62) groovy; urgency=medium + + * groovy/linux: 5.8.0-55.62 -proposed tracker (LP: #1930379) + + * [Potential Regression] Unable to create KVM with uvtool on Groovy ARM64 + (LP: #1929925) + - SAUCE: KVM: arm64: Assign kvm_ipa_limit + + -- Stefan Bader Tue, 01 Jun 2021 09:57:09 +0200 + +linux (5.8.0-54.61) groovy; urgency=medium + + * groovy/linux: 5.8.0-54.61 -proposed tracker (LP: #1927592) + + * Introduce the 465 driver series, fabric-manager, and libnvidia-nscq + (LP: #1925522) + - debian/dkms-versions -- add NVIDIA 465 and migrate 450 to 460 + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: fix incorrect mnt_id of files opened from map_files + + * netfilter: x_tables: fix compat match/target pad out-of-bound write + (LP: #1927682) + - netfilter: x_tables: fix compat match/target pad out-of-bound write + + * Groovy update: upstream stable patchset 2021-05-04 (LP: #1927150) + - mt76: fix tx skb error handling in mt76_dma_tx_queue_skb + - net: fec: ptp: avoid register access when ipg clock is disabled + - powerpc/4xx: Fix build errors from mfdcr() + - atm: eni: dont release is never initialized + - atm: lanai: dont run lanai_dev_close if not open + - Revert "r8152: adjust the settings about MAC clock speed down for RTL8153" + - ALSA: hda: ignore invalid NHLT table + - ixgbe: Fix memleak in ixgbe_configure_clsu32 + - scsi: ufs: ufs-qcom: Disable interrupt in reset path + - blk-cgroup: Fix the recursive blkg rwstat + - net: tehuti: fix error return code in bdx_probe() + - net: intel: iavf: fix error return code of iavf_init_get_resources() + - sun/niu: fix wrong RXMAC_BC_FRM_CNT_COUNT count + - cifs: ask for more credit on async read/write code paths + - gfs2: fix use-after-free in trans_drain + - cpufreq: blacklist Arm Vexpress platforms in cpufreq-dt-platdev + - gpiolib: acpi: Add missing IRQF_ONESHOT + - nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default + - NFS: Correct size calculation for create reply length + - net: hisilicon: hns: fix error return code of hns_nic_clear_all_rx_fetch() + - net: wan: fix error return code of uhdlc_init() + - net: davicom: Use platform_get_irq_optional() + - net: enetc: set MAC RX FIFO to recommended value + - atm: uPD98402: fix incorrect allocation + - atm: idt77252: fix null-ptr-dereference + - cifs: change noisy error message to FYI + - irqchip/ingenic: Add support for the JZ4760 + - kbuild: add image_name to no-sync-config-targets + - kbuild: dummy-tools: fix inverted tests for gcc + - umem: fix error return code in mm_pci_probe() + - sparc64: Fix opcode filtering in handling of no fault loads + - habanalabs: Call put_pid() when releasing control device + - staging: rtl8192e: fix kconfig dependency on CRYPTO + - u64_stats,lockdep: Fix u64_stats_init() vs lockdep + - regulator: qcom-rpmh: Correct the pmic5_hfsmps515 buck + - block: Fix REQ_OP_ZONE_RESET_ALL handling + - drm/amd/display: Revert dram_clock_change_latency for DCN2.1 + - drm/amdgpu: fb BO should be ttm_bo_type_device + - drm/radeon: fix AGP dependency + - nvme: add NVME_REQ_CANCELLED flag in nvme_cancel_request() + - nvme-fc: set NVME_REQ_CANCELLED in nvme_fc_terminate_exchange() + - nvme-fc: return NVME_SC_HOST_ABORTED_CMD when a command has been aborted + - nvme-rdma: Fix a use after free in nvmet_rdma_write_data_done + - nvme-pci: add the DISABLE_WRITE_ZEROES quirk for a Samsung PM1725a + - nfs: we don't support removing system.nfs4_acl + - block: Suppress uevent for hidden device when removed + - ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls + - ia64: fix ptrace(PTRACE_SYSCALL_INFO_EXIT) sign + - netsec: restore phy power state after controller reset + - platform/x86: intel-vbtn: Stop reporting SW_DOCK events + - psample: Fix user API breakage + - z3fold: prevent reclaim/free race for headless pages + - squashfs: fix inode lookup sanity checks + - squashfs: fix xattr id and id lookup sanity checks + - hugetlb_cgroup: fix imbalanced css_get and css_put pair for shared mappings + - kasan: fix per-page tags for non-page_alloc pages + - gcov: fix clang-11+ support + - ACPI: video: Add missing callback back for Sony VPCEH3U1E + - ACPICA: Always create namespace nodes using acpi_ns_create_node() + - arm64: dts: ls1046a: mark crypto engine dma coherent + - arm64: dts: ls1012a: mark crypto engine dma coherent + - arm64: dts: ls1043a: mark crypto engine dma coherent + - ARM: dts: at91: sam9x60: fix mux-mask for PA7 so it can be set to A, B and C + - ARM: dts: at91: sam9x60: fix mux-mask to match product's datasheet + - ARM: dts: at91-sama5d27_som1: fix phy address to 7 + - integrity: double check iint_cache was initialized + - drm/amd/pm: workaround for audio noise issue + - drm/i915: Fix the GT fence revocation runtime PM logic + - dm verity: fix DM_VERITY_OPTS_MAX value + - dm ioctl: fix out of bounds array access when no devices + - bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD + - ARM: OMAP2+: Fix smartreflex init regression after dropping legacy data + - soc: ti: omap-prm: Fix occasional abort on reset deassert for dra7 iva + - veth: Store queue_mapping independently of XDP prog presence + - libbpf: Fix INSTALL flag order + - net/mlx5e: RX, Mind the MPWQE gaps when calculating offsets + - net/mlx5e: When changing XDP program without reset, take refs for XSK RQs + - net/mlx5e: Don't match on Geneve options in case option masks are all zero + - ipv6: fix suspecious RCU usage warning + - macvlan: macvlan_count_rx() needs to be aware of preemption + - net: sched: validate stab values + - net: dsa: bcm_sf2: Qualify phydev->dev_flags based on port + - igc: reinit_locked() should be called with rtnl_lock + - igc: Fix Pause Frame Advertising + - igc: Fix Supported Pause Frame Link Setting + - igc: Fix igc_ptp_rx_pktstamp() + - e1000e: add rtnl_lock() to e1000_reset_task + - e1000e: Fix error handling in e1000_set_d0_lplu_state_82571 + - net/qlcnic: Fix a use after free in qlcnic_83xx_get_minidump_template + - net: phy: broadcom: Add power down exit reset state delay + - ftgmac100: Restart MAC HW once + - clk: qcom: gcc-sc7180: Use floor ops for the correct sdcc1 clk + - net: ipa: terminate message handler arrays + - net: qrtr: fix a kernel-infoleak in qrtr_recvmsg() + - flow_dissector: fix byteorder of dissected ICMP ID + - selftests/bpf: Set gopt opt_class to 0 if get tunnel opt failed + - netfilter: ctnetlink: fix dump of the expect mask attribute + - net: hdlc_x25: Prevent racing between "x25_close" and "x25_xmit"/"x25_rx" + - tcp: relookup sock for RST+ACK packets handled by obsolete req sock + - can: peak_usb: add forgotten supported devices + - can: flexcan: flexcan_chip_freeze(): fix chip freeze for missing bitrate + - can: kvaser_pciefd: Always disable bus load reporting + - can: c_can_pci: c_can_pci_remove(): fix use-after-free + - can: c_can: move runtime PM enable/disable to c_can_platform + - can: m_can: m_can_do_rx_poll(): fix extraneous msg loss warning + - can: m_can: m_can_rx_peripheral(): fix RX being blocked by errors + - mac80211: fix rate mask reset + - mac80211: Allow HE operation to be longer than expected. + - selftests/net: fix warnings on reuseaddr_ports_exhausted + - nfp: flower: add ipv6 bit to pre_tunnel control message + - nfp: flower: fix pre_tun mask id allocation + - ftrace: Fix modify_ftrace_direct. + - ionic: linearize tso skb with too many frags + - netfilter: nftables: report EOPNOTSUPP on unsupported flowtable flags + - netfilter: nftables: allow to update flowtable flags + - netfilter: flowtable: Make sure GC works periodically in idle system + - libbpf: Use SOCK_CLOEXEC when opening the netlink socket + - ipv6: weaken the v4mapped source check + - octeontx2-af: Formatting debugfs entry rsrc_alloc. + - octeontx2-af: Fix irq free in rvu teardown + - octeontx2-pf: Clear RSS enable flag on interace down + - octeontx2-af: fix infinite loop in unmapping NPC counter + - net: check all name nodes in __dev_alloc_name + - net: cdc-phonet: fix data-interface release on probe failure + - r8152: limit the RX buffer size of RTL8153A for USB 2.0 + - net: stmmac: dwmac-sun8i: Provide TX and RX fifo sizes + - selinux: vsock: Set SID for socket returned by accept() + - selftests: forwarding: vxlan_bridge_1d: Fix vxlan ecn decapsulate value + - libbpf: Fix BTF dump of pointer-to-array-of-struct + - drm/msm: fix shutdown hook in case GPU components failed to bind + - arm64: kdump: update ppos when reading elfcorehdr + - PM: runtime: Defer suspending suppliers + - net/mlx5: Add back multicast stats for uplink representor + - net/mlx5e: Allow to match on MPLS parameters only for MPLS over UDP + - net/mlx5e: Fix error path for ethtool set-priv-flag + - PM: EM: postpone creating the debugfs dir till fs_initcall + - net: bridge: don't notify switchdev for local FDB addresses + - octeontx2-af: Fix memory leak of object buf + - RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening + server + - bpf: Don't do bpf_cgroup_storage_set() for kuprobe/tp programs + - net: Consolidate common blackhole dst ops + - net, bpf: Fix ip6ip6 crash with collect_md populated skbs + - net: phy: introduce phydev->port + - net: phy: broadcom: Avoid forward for bcm54xx_config_clock_delay() + - net: phy: broadcom: Set proper 1000BaseX/SGMII interface mode for BCM54616S + - net: phy: broadcom: Fix RGMII delays for BCM50160 and BCM50610M + - dm table: Fix zoned model check and zone sectors check + - mm/mmu_notifiers: ensure range_end() is paired with range_start() + - ACPI: scan: Rearrange memory allocation in acpi_device_add() + - ACPI: scan: Use unique number for instance_no + - perf auxtrace: Fix auxtrace queue conflict + - perf synthetic events: Avoid write of uninitialized memory when generating + PERF_RECORD_MMAP* records + - block: recalculate segment count for multi-segment discards correctly + - scsi: Revert "qla2xxx: Make sure that aborted commands are freed" + - scsi: qedi: Fix error return code of qedi_alloc_global_queues() + - scsi: mpt3sas: Fix error return code of mpt3sas_base_attach() + - smb3: fix cached file size problems in duplicate extents (reflink) + - locking/mutex: Fix non debug version of mutex_lock_io_nested() + - x86/mem_encrypt: Correct physical address calculation in __set_clr_pte_enc() + - can: dev: Move device back to init netns on owning netns delete + - net: dsa: b53: VLAN filtering is global to all users + - mac80211: fix double free in ibss_leave + - ext4: add reclaim checks to xattr code + - can: peak_usb: Revert "can: peak_usb: add forgotten supported devices" + - xen-blkback: don't leak persistent grants from xen_blkbk_map() + - arm64: mm: correct the inside linear map range during hotplug check + - ext4: shrink race window in ext4_should_retry_alloc() + - ext4: fix bh ref count on error paths + - fs: nfsd: fix kconfig dependency warning for NFSD_V4 + - rpc: fix NULL dereference on kmalloc failure + - iomap: Fix negative assignment to unsigned sis->pages in + iomap_swapfile_activate + - ASoC: rt1015: fix i2c communication error + - ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10 + - ASoC: rt5651: Fix dac- and adc- vol-tlv values being off by a factor of 10 + - ASoC: sgtl5000: set DAP_AVC_CTRL register to correct default value on probe + - ASoC: es8316: Simplify adc_pga_gain_tlv table + - ASoC: soc-core: Prevent warning if no DMI table is present + - ASoC: cs42l42: Fix Bitclock polarity inversion + - ASoC: cs42l42: Fix channel width support + - ASoC: cs42l42: Fix mixer volume control + - ASoC: cs42l42: Always wait at least 3ms after reset + - NFSD: fix error handling in NFSv4.0 callbacks + - kernel: freezer should treat PF_IO_WORKER like PF_KTHREAD for freezing + - vhost: Fix vhost_vq_reset() + - io_uring: fix ->flags races by linked timeouts + - scsi: st: Fix a use after free in st_open() + - scsi: qla2xxx: Fix broken #endif placement + - staging: comedi: cb_pcidas: fix request_irq() warn + - staging: comedi: cb_pcidas64: fix request_irq() warn + - ASoC: rt5659: Update MCLK rate in set_sysclk() + - ASoC: rt711: add snd_soc_component remove callback + - thermal/core: Add NULL pointer check before using cooling device stats + - locking/ww_mutex: Simplify use_ww_ctx & ww_ctx handling + - locking/ww_mutex: Fix acquire/release imbalance in + ww_acquire_init()/ww_acquire_fini() + - nvmet-tcp: fix kmap leak when data digest in use + - ext4: do not iput inode under running transaction in ext4_rename() + - net: mvpp2: fix interrupt mask/unmask skip condition + - flow_dissector: fix TTL and TOS dissection on IPv4 fragments + - can: dev: move driver related infrastructure into separate subdir + - net: introduce CAN specific pointer in the struct net_device + - can: tcan4x5x: fix max register value + - brcmfmac: clear EAP/association status bits on linkdown events + - netdevsim: dev: Initialize FIB module after debugfs + - iwlwifi: pcie: don't disable interrupts for reg_lock + - ath10k: hold RCU lock when calling ieee80211_find_sta_by_ifaddr() + - net: ethernet: aquantia: Handle error cleanup of start on open + - appletalk: Fix skb allocation size in loopback case + - net: ipa: remove two unused register definitions + - net: ipa: fix register write command validation + - net: wan/lmc: unregister device when no matching device is found + - net: 9p: advance iov on empty read + - bpf: Remove MTU check in __bpf_skb_max_len + - ACPI: tables: x86: Reserve memory occupied by ACPI tables + - ACPI: processor: Fix CPU0 wakeup in acpi_idle_play_dead() + - ALSA: usb-audio: Apply sample rate quirk to Logitech Connect + - ALSA: hda: Re-add dropped snd_poewr_change_state() calls + - ALSA: hda: Add missing sanity checks in PM prepare/complete callbacks + - ALSA: hda/realtek: fix a determine_headset_type issue for a Dell AIO + - ALSA: hda/realtek: call alc_update_headset_mode() in hp_automute_hook + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 640 G8 + - xtensa: fix uaccess-related livelock in do_page_fault + - xtensa: move coprocessor_flush to the .text section + - PM: runtime: Fix race getting/putting suppliers at probe + - PM: runtime: Fix ordering in pm_runtime_get_suppliers() + - tracing: Fix stack trace event size + - mm: fix race by making init_zero_pfn() early_initcall + - drm/amdkfd: dqm fence memory corruption + - drm/amdgpu: fix offset calculation in amdgpu_vm_bo_clear_mappings() + - drm/amdgpu: check alignment on CPU page for bo map + - reiserfs: update reiserfs_xattrs_initialized() condition + - drm/tegra: dc: Restore coupling of display controllers + - drm/tegra: sor: Grab runtime PM reference across reset + - vfio/nvlink: Add missing SPAPR_TCE_IOMMU depends + - pinctrl: rockchip: fix restore error in resume + - extcon: Add stubs for extcon_register_notifier_all() functions + - extcon: Fix error handling in extcon_dev_register + - usb: dwc3: pci: Enable dis_uX_susphy_quirk for Intel Merrifield + - video: hyperv_fb: Fix a double free in hvfb_probe + - firewire: nosy: Fix a use-after-free bug in nosy_ioctl() + - usbip: vhci_hcd fix shift out-of-bounds in vhci_hub_control() + - USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem + - usb: musb: Fix suspend with devices connected for a64 + - usb: xhci-mtk: fix broken streams issue on 0.96 xHCI + - cdc-acm: fix BREAK rx code path adding necessary calls + - USB: cdc-acm: untangle a circular dependency between callback and softint + - USB: cdc-acm: downgrade message to debug + - USB: cdc-acm: fix double free on probe failure + - USB: cdc-acm: fix use-after-free after probe failure + - usb: gadget: udc: amd5536udc_pci fix null-ptr-dereference + - usb: dwc2: Fix HPRT0.PrtSusp bit setting for HiKey 960 board. + - usb: dwc2: Prevent core suspend when port connection flag is 0 + - staging: rtl8192e: Fix incorrect source in memcpy() + - staging: rtl8192e: Change state information from u16 to u8 + - drivers: video: fbcon: fix NULL dereference in fbcon_cursor() + - Revert "kernel: freezer should treat PF_IO_WORKER like PF_KTHREAD for + freezing" + - ARM: dts: am33xx: add aliases for mmc interfaces + - bus: ti-sysc: Fix warning on unbind if reset is not deasserted + - platform/x86: intel-hid: Support Lenovo ThinkPad X1 Tablet Gen 2 + - bpf, x86: Use kvmalloc_array instead kmalloc_array in bpf_jit_comp + - net/mlx5e: Enforce minimum value check for ICOSQ size + - net: pxa168_eth: Fix a potential data race in pxa168_eth_remove + - kunit: tool: Fix a python tuple typing error + - mISDN: fix crash in fritzpci + - mac80211: Check crypto_aead_encrypt for errors + - mac80211: choose first enabled channel for monitor + - drm/msm/adreno: a5xx_power: Don't apply A540 lm_setup to other GPUs + - drm/msm: Ratelimit invalid-fence message + - netfilter: conntrack: Fix gre tunneling over ipv6 + - netfilter: nftables: skip hook overlap logic if flowtable is stale + - net: ipa: fix init header command validation + - platform/x86: thinkpad_acpi: Allow the FnLock LED to change state + - x86/build: Turn off -fcf-protection for realmode targets + - platform/x86: intel_pmc_core: Ignore GBE LTR on Tiger Lake platforms + - scsi: target: pscsi: Clean up after failure in pscsi_map_sg() + - selftests/vm: fix out-of-tree build + - ia64: mca: allocate early mca with GFP_ATOMIC + - ia64: fix format strings for err_inject + - cifs: revalidate mapping when we open files for SMB1 POSIX + - cifs: Silently ignore unknown oplock break handle + - init/Kconfig: make COMPILE_TEST depend on !S390 + - init/Kconfig: make COMPILE_TEST depend on HAS_IOMEM + - nvme-mpath: replace direct_make_request with generic_make_request + + * Enable CIFS GCM256 (LP: #1921916) + - smb3: add defines for new crypto algorithms + - smb3.1.1: add new module load parm require_gcm_256 + - smb3.1.1: add new module load parm enable_gcm_256 + - smb3.1.1: print warning if server does not support requested encryption type + - smb3.1.1: rename nonces used for GCM and CCM encryption + - smb3.1.1: set gcm256 when requested + - cifs: Adjust key sizes and key generation routines for AES256 encryption + + * locking/qrwlock: Fix ordering in queued_write_lock_slowpath() (LP: #1926184) + - locking/qrwlock: Fix ordering in queued_write_lock_slowpath() + + * Make AMD gpus choose YCbCr420 encoding automatically when required for 4k + 60Hz output (LP: #1922754) + - drm/amd/display: Try YCbCr420 color when YCbCr444 fails + + * [Ubuntu 21.04] net/mlx5: Fix HW spec violation configuring uplink + (LP: #1925452) + - net/mlx5: Fix HW spec violation configuring uplink + + * Groovy update: upstream stable patchset 2021-04-27 (LP: #1926360) + - crypto: aesni - Use TEST %reg,%reg instead of CMP $0,%reg + - crypto: x86/aes-ni-xts - use direct calls to and 4-way stride + - RDMA/srp: Fix support for unpopulated and unbalanced NUMA nodes + - fuse: fix live lock in fuse_iget() + - ALSA: usb-audio: Don't avoid stopping the stream at disconnection + - net: dsa: b53: Support setting learning on port + - KVM: arm64: nvhe: Save the SPE context early + - drm/i915/gvt: Set SNOOP for PAT3 on BXT/APL to workaround GPU BB hang + - drm/i915/gvt: Fix mmio handler break on BXT/APL. + - drm/i915/gvt: Fix virtual display setup for BXT/APL + - drm/i915/gvt: Fix vfio_edid issue for BXT/APL + - ASoC: ak4458: Add MODULE_DEVICE_TABLE + - ASoC: ak5558: Add MODULE_DEVICE_TABLE + - ALSA: dice: fix null pointer dereference when node is disconnected + - ALSA: hda/realtek: apply pin quirk for XiaomiNotebook Pro + - ALSA: hda: generic: Fix the micmute led init state + - ALSA: hda/realtek: Apply headset-mic quirks for Xiaomi Redmibook Air + - s390/pci: refactor zpci_create_device() + - s390/pci: remove superfluous zdev->zbus check + - s390/pci: fix leak of PCI device structure + - zonefs: Fix O_APPEND async write handling + - zonefs: prevent use of seq files as swap file + - btrfs: fix race when cloning extent buffer during rewind of an old root + - btrfs: fix slab cache flags for free space tree bitmap + - vhost-vdpa: set v->config_ctx to NULL if eventfd_ctx_fdget() fails + - ASoC: fsl_ssi: Fix TDM slot setup for I2S mode + - ASoC: Intel: bytcr_rt5640: Fix HP Pavilion x2 10-p0XX OVCD current threshold + - ASoC: SOF: Intel: unregister DMIC device on probe error + - ASoC: SOF: intel: fix wrong poll bits in dsp power down + - ASoC: qcom: sdm845: Fix array out of bounds access + - ASoC: qcom: sdm845: Fix array out of range on rx slim channels + - ASoC: codecs: wcd934x: add a sanity check in set channel map + - ASoC: qcom: lpass-cpu: Fix lpass dai ids parse + - ASoC: simple-card-utils: Do not handle device clock + - afs: Fix accessing YFS xattrs on a non-YFS server + - afs: Stop listxattr() from listing "afs.*" attributes + - nvme: fix Write Zeroes limitations + - nvme-tcp: fix misuse of __smp_processor_id with preemption enabled + - nvme-tcp: fix possible hang when failing to set io queues + - nvme-tcp: fix a NULL deref when receiving a 0-length r2t PDU + - nvmet: don't check iosqes,iocqes for discovery controllers + - nfsd: Don't keep looking up unhashed files in the nfsd file cache + - nfsd: don't abort copies early + - NFSD: Repair misuse of sv_lock in 5.10.16-rt30. + - NFSD: fix dest to src mount in inter-server COPY + - svcrdma: disable timeouts on rdma backchannel + - vfio: IOMMU_API should be selected + - sunrpc: fix refcount leak for rpc auth modules + - i915/perf: Start hrtimer only if sampling the OA buffer + - pstore: Fix warning in pstore_kill_sb() + - net/qrtr: fix __netdev_alloc_skb call + - kbuild: Fix for empty SUBLEVEL or PATCHLEVEL again + - cifs: fix allocation size on newly created files + - riscv: Correct SPARSEMEM configuration + - scsi: lpfc: Fix some error codes in debugfs + - scsi: myrs: Fix a double free in myrs_cleanup() + - RISC-V: correct enum sbi_ext_rfence_fid + - counter: stm32-timer-cnt: Report count function when SLAVE_MODE_DISABLED + - nvme-rdma: fix possible hang when failing to set io queues + - ibmvnic: add some debugs + - ibmvnic: serialize access to work queue on remove + - tty: serial: stm32-usart: Remove set but unused 'cookie' variables + - serial: stm32: fix DMA initialization error handling + - bpf: Declare __bpf_free_used_maps() unconditionally + - RDMA/rtrs: Remove unnecessary argument dir of rtrs_iu_free + - RDMA/rtrs-srv: Jump to dereg_mr label if allocate iu fails + - RDMA/rtrs: Introduce rtrs_post_send + - RDMA/rtrs: Fix KASAN: stack-out-of-bounds bug + - module: merge repetitive strings in module_sig_check() + - module: avoid *goto*s in module_sig_check() + - module: harden ELF info handling + - scsi: pm80xx: Fix pm8001_mpi_get_nvmd_resp() race condition + - RDMA/mlx5: Allow creating all QPs even when non RDMA profile is used + - i40e: Fix endianness conversions + - net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ8081 + - MIPS: compressed: fix build with enabled UBSAN + - media: cedrus: h264: Support profile controls + - ibmvnic: remove excessive irqsave + - s390/qeth: integrate RX refill worker with NAPI + - s390/qeth: schedule TX NAPI on QAOB completion + - drm/amd/pm: fulfill the Polaris implementation for + get_clock_by_type_with_latency() + - gfs2: Add common helper for holding and releasing the freeze glock + - gfs2: move freeze glock outside the make_fs_rw and _ro functions + - gfs2: bypass signal_our_withdraw if no journal + - powerpc: Force inlining of cpu_has_feature() to avoid build failure + - usb-storage: Add quirk to defeat Kindle's automatic unload + - usbip: Fix incorrect double assignment to udc->ud.tcp_rx + - usb: gadget: configfs: Fix KASAN use-after-free + - usb: typec: Remove vdo[3] part of tps6598x_rx_identity_reg struct + - usb: typec: tcpm: Invoke power_supply_changed for tcpm-source-psy- + - thunderbolt: Initialize HopID IDAs in tb_switch_alloc() + - iio:adc:stm32-adc: Add HAS_IOMEM dependency + - iio:adc:qcom-spmi-vadc: add default scale to LR_MUX2_BAT_ID channel + - iio: adis16400: Fix an error code in adis16400_initial_setup() + - iio: gyro: mpu3050: Fix error handling in mpu3050_trigger_handler + - iio: adc: ab8500-gpadc: Fix off by 10 to 3 + - iio: adc: ad7949: fix wrong ADC result due to incorrect bit mask + - iio: adc: adi-axi-adc: add proper Kconfig dependencies + - iio: hid-sensor-humidity: Fix alignment issue of timestamp channel + - iio: hid-sensor-prox: Fix scale not correct issue + - iio: hid-sensor-temperature: Fix issues of timestamp channel + - counter: stm32-timer-cnt: fix ceiling write max value + - counter: stm32-timer-cnt: fix ceiling miss-alignment with reload register + - PCI: rpadlpar: Fix potential drc_name corruption in store functions + - perf/x86/intel: Fix a crash caused by zero PEBS status + - x86/ioapic: Ignore IRQ2 again + - kernel, fs: Introduce and use set_restart_fn() and arch_set_restart_data() + - x86: Move TS_COMPAT back to asm/thread_info.h + - x86: Introduce TS_COMPAT_RESTART to fix get_nr_restart_syscall() + - efivars: respect EFI_UNSUPPORTED return from firmware + - ext4: fix error handling in ext4_end_enable_verity() + - ext4: find old entry again if failed to rename whiteout + - ext4: do not try to set xattr into ea_inode if value is empty + - ext4: fix potential error in ext4_do_update_inode + - MAINTAINERS: move some real subsystems off of the staging mailing list + - MAINTAINERS: move the staging subsystem to lists.linux.dev + - efi: use 32-bit alignment for efi_guid_t literals + - firmware/efi: Fix a use after bug in efi_mem_reserve_persistent + - genirq: Disable interrupts for force threaded handlers + - x86/apic/of: Fix CPU devicetree-node lookups + - cifs: Fix preauth hash corruption + - USB: replace hardcode maximum usb string length by definition + + * Groovy update: upstream stable patchset 2021-04-20 (LP: #1925259) + - uapi: nfnetlink_cthelper.h: fix userspace compilation error + - powerpc/perf: Fix handling of privilege level checks in perf interrupt + context + - powerpc/pseries: Don't enforce MSI affinity with kdump + - crypto: mips/poly1305 - enable for all MIPS processors + - ath9k: fix transmitting to stations in dynamic SMPS mode + - net: Fix gro aggregation for udp encaps with zero csum + - net: check if protocol extracted by virtio_net_hdr_set_proto is correct + - net: avoid infinite loop in mpls_gso_segment when mpls_hlen == 0 + - can: skb: can_skb_set_owner(): fix ref counting if socket was closed before + setting skb ownership + - can: flexcan: assert FRZ bit in flexcan_chip_freeze() + - can: flexcan: enable RX FIFO after FRZ/HALT valid + - can: flexcan: invoke flexcan_chip_freeze() to enter freeze mode + - can: tcan4x5x: tcan4x5x_init(): fix initialization - clear MRAM before + entering Normal Mode + - tcp: Fix sign comparison bug in getsockopt(TCP_ZEROCOPY_RECEIVE) + - tcp: add sanity tests to TCP_QUEUE_SEQ + - netfilter: nf_nat: undo erroneous tcp edemux lookup + - netfilter: x_tables: gpf inside xt_find_revision() + - net: always use icmp{,v6}_ndo_send from ndo_start_xmit + - net: phy: fix save wrong speed and duplex problem if autoneg is on + - selftests/bpf: No need to drop the packet when there is no geneve opt + - selftests/bpf: Mask bpf_csum_diff() return value to 16 bits in test_verifier + - samples, bpf: Add missing munmap in xdpsock + - libbpf: Clear map_info before each bpf_obj_get_info_by_fd + - ibmvnic: always store valid MAC address + - mt76: dma: do not report truncated frames to mac80211 + - powerpc/603: Fix protection of user pages mapped with PROT_NONE + - mount: fix mounting of detached mounts onto targets that reside on shared + mounts + - cifs: return proper error code in statfs(2) + - Revert "mm, slub: consider rest of partial list if acquire_slab() fails" + - sh_eth: fix TRSCER mask for SH771x + - net: enetc: don't overwrite the RSS indirection table when initializing + - net: enetc: take the MDIO lock only once per NAPI poll cycle + - net: enetc: fix incorrect TPID when receiving 802.1ad tagged packets + - net: enetc: don't disable VLAN filtering in IFF_PROMISC mode + - net: enetc: remove bogus write to SIRXIDR from enetc_setup_rxbdr + - net: enetc: keep RX ring consumer index in sync with hardware + - net: ethernet: mtk-star-emac: fix wrong unmap in RX handling + - net/mlx4_en: update moderation when config reset + - net: stmmac: fix incorrect DMA channel intr enable setting of EQoS v4.10 + - nexthop: Do not flush blackhole nexthops when loopback goes down + - net: sched: avoid duplicates in classes dump + - net: dsa: sja1105: fix SGMII PCS being forced to SPEED_UNKNOWN instead of + SPEED_10 + - net: usb: qmi_wwan: allow qmimux add/del with master up + - netdevsim: init u64 stats for 32bit hardware + - cipso,calipso: resolve a number of problems with the DOI refcounts + - net: stmmac: Fix VLAN filter delete timeout issue in Intel mGBE SGMII + - stmmac: intel: Fixes clock registration error seen for multiple interfaces + - net: lapbether: Remove netif_start_queue / netif_stop_queue + - net: davicom: Fix regulator not turned off on failed probe + - net: davicom: Fix regulator not turned off on driver removal + - net: enetc: allow hardware timestamping on TX queues with tc-etf enabled + - net: qrtr: fix error return code of qrtr_sendmsg() + - s390/qeth: fix memory leak after failed TX Buffer allocation + - r8169: fix r8168fp_adjust_ocp_cmd function + - ixgbe: fail to create xfrm offload of IPsec tunnel mode SA + - perf build: Fix ccache usage in $(CC) when generating arch errno table + - net: stmmac: stop each tx channel independently + - net: stmmac: fix watchdog timeout during suspend/resume stress test + - net: stmmac: fix wrongly set buffer2 valid when sph unsupport + - ethtool: fix the check logic of at least one channel for RX/TX + - selftests: forwarding: Fix race condition in mirror installation + - perf traceevent: Ensure read cmdlines are null terminated. + - perf report: Fix -F for branch & mem modes + - net: hns3: fix query vlan mask value error for flow director + - net: hns3: fix bug when calculating the TCAM table info + - s390/cio: return -EFAULT if copy_to_user() fails again + - bnxt_en: reliably allocate IRQ table on reset to avoid crash + - gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk + - gpiolib: acpi: Allow to find GpioInt() resource by name and index + - gpio: pca953x: Set IRQ type when handle Intel Galileo Gen 2 + - gpio: fix gpio-device list corruption + - drm/compat: Clear bounce structures + - drm/amd/display: Add a backlight module option + - drm/amdgpu/display: use GFP_ATOMIC in dcn21_validate_bandwidth_fp() + - drm/amd/display: Fix nested FPU context in dcn21_validate_bandwidth() + - drm/amd/pm: bug fix for pcie dpm + - drm/amdgpu/display: simplify backlight setting + - drm/amdgpu/display: don't assert in set backlight function + - drm/amdgpu/display: handle aux backlight in backlight_get_brightness + - drm/shmem-helper: Check for purged buffers in fault handler + - drm/shmem-helper: Don't remove the offset in vm_area_struct pgoff + - drm: Use USB controller's DMA mask when importing dmabufs + - drm: meson_drv add shutdown function + - drm/shmem-helpers: vunmap: Don't put pages for dma-buf + - s390/cio: return -EFAULT if copy_to_user() fails + - s390/crypto: return -EFAULT if copy_to_user() fails + - qxl: Fix uninitialised struct field head.surface_id + - sh_eth: fix TRSCER mask for R7S9210 + - media: usbtv: Fix deadlock on suspend + - media: rkisp1: params: fix wrong bits settings + - media: v4l: vsp1: Fix uif null pointer access + - media: v4l: vsp1: Fix bru null pointer access + - media: rc: compile rc-cec.c into rc-core + - [Packaging] update modules for rc-cec + - cifs: fix credit accounting for extra channel + - net: hns3: fix error mask definition of flow director + - s390/qeth: don't replace a fully completed async TX buffer + - s390/qeth: remove QETH_QDIO_BUF_HANDLED_DELAYED state + - s390/qeth: improve completion of pending TX buffers + - s390/qeth: fix notification for pending buffers during teardown + - net: dsa: tag_ksz: don't allocate additional memory for padding/tagging + - net: dsa: trailer: don't allocate additional memory for padding/tagging + - net: dsa: tag_qca: let DSA core deal with TX reallocation + - net: dsa: tag_ocelot: let DSA core deal with TX reallocation + - net: dsa: tag_mtk: let DSA core deal with TX reallocation + - net: dsa: tag_lan9303: let DSA core deal with TX reallocation + - net: dsa: tag_edsa: let DSA core deal with TX reallocation + - net: dsa: tag_brcm: let DSA core deal with TX reallocation + - net: dsa: tag_dsa: let DSA core deal with TX reallocation + - net: dsa: tag_gswip: let DSA core deal with TX reallocation + - net: dsa: tag_ar9331: let DSA core deal with TX reallocation + - net: dsa: tag_mtk: fix 802.1ad VLAN egress + - ath11k: peer delete synchronization with firmware + - i2c: rcar: faster irq code to minimize HW race condition + - i2c: rcar: optimize cacheline to minimize HW race condition + - scsi: ufs: WB is only available on LUN #0 to #7 + - udf: fix silent AED tagLocation corruption + - iommu/vt-d: Clear PRQ overflow only when PRQ is empty + - mmc: mxs-mmc: Fix a resource leak in an error handling path in + 'mxs_mmc_probe()' + - mmc: mediatek: fix race condition between msdc_request_timeout and irq + - mmc: sdhci-iproc: Add ACPI bindings for the RPi + - Platform: OLPC: Fix probe error handling + - powerpc/pci: Add ppc_md.discover_phbs() + - spi: stm32: make spurious and overrun interrupts visible + - powerpc: improve handling of unrecoverable system reset + - powerpc/perf: Record counter overflow always if SAMPLE_IP is unset + - HID: logitech-dj: add support for the new lightspeed connection iteration + - powerpc/64: Fix stack trace not displaying final frame + - iommu/amd: Fix performance counter initialization + - clk: qcom: gdsc: Implement NO_RET_PERIPH flag + - sparc32: Limit memblock allocation to low memory + - sparc64: Use arch_validate_flags() to validate ADI flag + - Input: applespi - don't wait for responses to commands indefinitely. + - PCI: xgene-msi: Fix race in installing chained irq handler + - PCI: mediatek: Add missing of_node_put() to fix reference leak + - drivers/base: build kunit tests without structleak plugin + - PCI/LINK: Remove bandwidth notification + - [Config] updateconfigs for PCIE_BW + - kbuild: clamp SUBLEVEL to 255 + - PCI: Fix pci_register_io_range() memory leak + - i40e: Fix memory leak in i40e_probe + - s390/smp: __smp_rescan_cpus() - move cpumask away from stack + - drivers/base/memory: don't store phys_device in memory blocks + - sysctl.c: fix underflow value setting risk in vm_table + - scsi: libiscsi: Fix iscsi_prep_scsi_cmd_pdu() error handling + - scsi: target: core: Add cmd length set before cmd complete + - scsi: target: core: Prevent underflow for service actions + - clk: qcom: gpucc-msm8998: Add resets, cxc, fix flags on gpu_gx_gdsc + - mmc: sdhci: Update firmware interface API + - ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler + - ARM: assembler: introduce adr_l, ldr_l and str_l macros + - ARM: efistub: replace adrl pseudo-op with adr_l macro invocation + - ALSA: usb: Add Plantronics C320-M USB ctrl msg delay quirk + - ALSA: hda/hdmi: Cancel pending works before suspend + - ALSA: hda/conexant: Add quirk for mute LED control on HP ZBook G5 + - ALSA: hda/ca0132: Add Sound BlasterX AE-5 Plus support + - ALSA: hda: Drop the BATCH workaround for AMD controllers + - ALSA: hda: Flush pending unsolicited events before suspend + - ALSA: hda: Avoid spurious unsol event handling during S3/S4 + - ALSA: usb-audio: Fix "cannot get freq eq" errors on Dell AE515 sound bar + - ALSA: usb-audio: Apply the control quirk to Plantronics headsets + - arm64: kasan: fix page_alloc tagging with DEBUG_VIRTUAL + - s390/dasd: fix hanging DASD driver unbind + - s390/dasd: fix hanging IO request during DASD driver unbind + - software node: Fix node registration + - xen/events: reset affinity of 2-level event when tearing it down + - mmc: mmci: Add MMC_CAP_NEED_RSP_BUSY for the stm32 variants + - mmc: core: Fix partition switch time for eMMC + - mmc: cqhci: Fix random crash when remove mmc module/card + - cifs: do not send close in compound create+close requests + - Goodix Fingerprint device is not a modem + - USB: gadget: u_ether: Fix a configfs return code + - usb: gadget: f_uac2: always increase endpoint max_packet_size by one audio + slot + - usb: gadget: f_uac1: stop playback on function disable + - usb: dwc3: qcom: Add missing DWC3 OF node refcount decrement + - usb: dwc3: qcom: add URS Host support for sdm845 ACPI boot + - usb: dwc3: qcom: add ACPI device id for sc8180x + - usb: dwc3: qcom: Honor wakeup enabled/disabled state + - USB: usblp: fix a hang in poll() if disconnected + - usb: renesas_usbhs: Clear PIPECFG for re-enabling pipe with other EPNUM + - usb: xhci: do not perform Soft Retry for some xHCI hosts + - xhci: Improve detection of device initiated wake signal. + - usb: xhci: Fix ASMedia ASM1042A and ASM3242 DMA addressing + - xhci: Fix repeated xhci wake after suspend due to uncleared internal wake + state + - USB: serial: io_edgeport: fix memory leak in edge_startup + - USB: serial: ch341: add new Product ID + - USB: serial: cp210x: add ID for Acuity Brands nLight Air Adapter + - USB: serial: cp210x: add some more GE USB IDs + - usbip: fix stub_dev to check for stream socket + - usbip: fix vhci_hcd to check for stream socket + - usbip: fix vudc to check for stream socket + - usbip: fix vhci_hcd attach_store() races leading to gpf + - usbip: fix vudc usbip_sockfd_store races leading to gpf + - misc/pvpanic: Export module FDT device table + - staging: rtl8192u: fix ->ssid overflow in r8192_wx_set_scan() + - staging: rtl8188eu: prevent ->ssid overflow in rtw_wx_set_scan() + - staging: rtl8712: unterminated string leads to read overflow + - staging: rtl8188eu: fix potential memory corruption in + rtw_check_beacon_data() + - staging: ks7010: prevent buffer overflow in ks_wlan_set_scan() + - staging: rtl8712: Fix possible buffer overflow in r8712_sitesurvey_cmd + - staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan + - staging: comedi: addi_apci_1032: Fix endian problem for COS sample + - staging: comedi: addi_apci_1500: Fix endian problem for command sample + - staging: comedi: adv_pci1710: Fix endian problem for AI command data + - staging: comedi: das6402: Fix endian problem for AI command data + - staging: comedi: das800: Fix endian problem for AI command data + - staging: comedi: dmm32at: Fix endian problem for AI command data + - staging: comedi: me4000: Fix endian problem for AI command data + - staging: comedi: pcl711: Fix endian problem for AI command data + - staging: comedi: pcl818: Fix endian problem for AI command data + - sh_eth: fix TRSCER mask for R7S72100 + - arm64/mm: Fix pfn_valid() for ZONE_DEVICE based memory + - SUNRPC: Set memalloc_nofs_save() for sync tasks + - NFS: Don't revalidate the directory permissions on a lookup failure + - NFS: Don't gratuitously clear the inode cache when lookup failed + - NFSv4.2: fix return value of _nfs4_get_security_label() + - block: rsxx: fix error return code of rsxx_pci_probe() + - configfs: fix a use-after-free in __configfs_open_file + - arm64: mm: use a 48-bit ID map when possible on 52-bit VA builds + - hrtimer: Update softirq_expires_next correctly after + __hrtimer_get_next_event() + - powerpc/64s/exception: Clean up a missed SRR specifier + - stop_machine: mark helpers __always_inline + - include/linux/sched/mm.h: use rcu_dereference in in_vfork() + - zram: fix return value on writeback_store + - linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP* + - sched/membarrier: fix missing local execution of ipi_sync_rq_state() + - efi: stub: omit SetVirtualAddressMap() if marked unsupported in RT_PROP + table + - powerpc/64s: Fix instruction encoding for lis in ppc_function_entry() + - powerpc: Fix inverted SET_FULL_REGS bitop + - powerpc: Fix missing declaration of [en/dis]able_kernel_vsx() + - binfmt_misc: fix possible deadlock in bm_register_write + - x86/unwind/orc: Disable KASAN checking in the ORC unwinder, part 2 + - KVM: kvmclock: Fix vCPUs > 64 can't be online/hotpluged + - KVM: arm64: Reject VM creation when the default IPA size is unsupported + - KVM: arm64: Fix exclusive limit for IPA size + - mm/userfaultfd: fix memory corruption due to writeprotect + - mm/page_alloc.c: refactor initialization of struct page for holes in memory + layout + - xen/events: don't unmask an event channel when an eoi is pending + - xen/events: avoid handling the same event on two cpus at the same time + + * Groovy update: upstream stable patchset 2021-04-12 (LP: #1923493) + - net: usb: qmi_wwan: support ZTE P685M modem + - drm/virtio: use kvmalloc for large allocations + - x86/build: Treat R_386_PLT32 relocation as R_386_PC32 + - JFS: more checks for invalid superblock + - sched/core: Allow try_invoke_on_locked_down_task() with irqs disabled + - udlfb: Fix memory leak in dlfb_usb_probe + - media: mceusb: sanity check for prescaler value + - erofs: fix shift-out-of-bounds of blkszbits + - media: v4l2-ctrls.c: fix shift-out-of-bounds in std_validate + - xfs: Fix assert failure in xfs_setattr_size() + - net/af_iucv: remove WARN_ONCE on malformed RX packets + - smackfs: restrict bytes count in smackfs write functions + - tomoyo: ignore data race while checking quota + - net: fix up truesize of cloned skb in skb_prepare_for_shift() + - nbd: handle device refs for DESTROY_ON_DISCONNECT properly + - mm/hugetlb.c: fix unnecessary address expansion of pmd sharing + - RDMA/rtrs: Do not signal for heatbeat + - RDMA/rtrs-clt: Use bitmask to check sess->flags + - RDMA/rtrs-srv: Do not signal REG_MR + - tcp: fix tcp_rmem documentation + - net: bridge: use switchdev for port flags set through sysfs too + - net: ag71xx: remove unnecessary MTU reservation + - net: hsr: add support for EntryForgetTime + - net: psample: Fix netlink skb length with tunnel info + - net: fix dev_ifsioc_locked() race condition + - dt-bindings: ethernet-controller: fix fixed-link specification + - dt-bindings: net: btusb: DT fix s/interrupt-name/interrupt-names/ + - rsi: Fix TX EAPOL packet handling against iwlwifi AP + - rsi: Move card interrupt handling to RX thread + - EDAC/amd64: Do not load on family 0x15, model 0x13 + - staging: fwserial: Fix error handling in fwserial_create + - x86/reboot: Add Zotac ZBOX CI327 nano PCI reboot quirk + - vt/consolemap: do font sum unsigned + - wlcore: Fix command execute failure 19 for wl12xx + - Bluetooth: hci_h5: Set HCI_QUIRK_SIMULTANEOUS_DISCOVERY for btrtl + - Bluetooth: btusb: fix memory leak on suspend and resume + - mt76: mt7615: reset token when mac_reset happens + - pktgen: fix misuse of BUG_ON() in pktgen_thread_worker() + - ath10k: fix wmi mgmt tx queue full due to race condition + - net: sfp: add mode quirk for GPON module Ubiquiti U-Fiber Instant + - Bluetooth: Add new HCI_QUIRK_NO_SUSPEND_NOTIFIER quirk + - Bluetooth: Fix null pointer dereference in amp_read_loc_assoc_final_data + - staging: most: sound: add sanity check for function argument + - staging: bcm2835-audio: Replace unsafe strcpy() with strscpy() + - brcmfmac: Add DMI nvram filename quirk for Predia Basic tablet + - brcmfmac: Add DMI nvram filename quirk for Voyo winpad A15 tablet + - drm/hisilicon: Fix use-after-free + - crypto: tcrypt - avoid signed overflow in byte count + - fs: make unlazy_walk() error handling consistent + - drm/amdgpu: Add check to prevent IH overflow + - PCI: Add a REBAR size quirk for Sapphire RX 5600 XT Pulse + - ASoC: Intel: bytcr_rt5640: Add new BYT_RT5640_NO_SPEAKERS quirk-flag + - drm/amd/display: Guard against NULL pointer deref when get_i2c_info fails + - media: uvcvideo: Allow entities with no pads + - f2fs: handle unallocated section and zone on pinned/atgc + - f2fs: fix to set/clear I_LINKABLE under i_lock + - nvme-core: add cancel tagset helpers + - nvme-rdma: add clean action for failed reconnection + - nvme-tcp: add clean action for failed reconnection + - ASoC: Intel: Add DMI quirk table to soc_intel_is_byt_cr() + - btrfs: fix error handling in commit_fs_roots + - perf/x86/kvm: Add Cascade Lake Xeon steppings to isolation_ucodes[] + - ASoC: Intel: sof_sdw: detect DMIC number based on mach params + - parisc: Bump 64-bit IRQ stack size to 64 KB + - sched/features: Fix hrtick reprogramming + - ASoC: Intel: bytcr_rt5640: Add quirk for the Estar Beauty HD MID 7316R + tablet + - ASoC: Intel: bytcr_rt5640: Add quirk for the Voyo Winpad A15 tablet + - ASoC: Intel: bytcr_rt5651: Add quirk for the Jumper EZpad 7 tablet + - ASoC: Intel: bytcr_rt5640: Add quirk for the Acer One S1002 tablet + - Xen/gnttab: handle p2m update errors on a per-slot basis + - xen-netback: respect gnttab_map_refs()'s return value + - zsmalloc: account the number of compacted pages correctly + - swap: fix swapfile read/write offset + - media: v4l: ioctl: Fix memory leak in video_usercopy + - ALSA: hda/realtek: Apply dual codec quirks for MSI Godlike X570 board + - net: sfp: VSOL V2801F / CarlitoxxPro CPGOS03-0490 v2.0 workaround + - net: sfp: add workaround for Realtek RTL8672 and RTL9601C chips + - nvme-pci: refactor nvme_unmap_data + - nvme-pci: fix error unwind in nvme_map_data + - ALSA: hda/realtek: Enable headset mic of Acer SWIFT with ALC256 + - ALSA: usb-audio: use Corsair Virtuoso mapping for Corsair Virtuoso SE + - ALSA: usb-audio: Drop bogus dB range in too low level + - tpm, tpm_tis: Decorate tpm_tis_gen_interrupt() with request_locality() + - tpm, tpm_tis: Decorate tpm_get_timeouts() with request_locality() + - btrfs: avoid double put of block group when emptying cluster + - btrfs: fix raid6 qstripe kmap + - btrfs: fix race between writes to swap files and scrub + - btrfs: fix stale data exposure after cloning a hole with NO_HOLES enabled + - btrfs: fix race between extent freeing/allocation when using bitmaps + - btrfs: validate qgroup inherit for SNAP_CREATE_V2 ioctl + - btrfs: free correct amount of space in btrfs_delayed_inode_reserve_metadata + - btrfs: unlock extents in btrfs_zero_range in case of quota reservation + errors + - btrfs: fix warning when creating a directory with smack enabled + - io_uring: ignore double poll add on the same waitqueue head + - dm bufio: subtract the number of initial sectors in dm_bufio_get_device_size + - dm verity: fix FEC for RS roots unaligned to block size + - drm/amdgpu: fix parameter error of RREG32_PCIE() in amdgpu_regs_pcie + - crypto - shash: reduce minimum alignment of shash_desc structure + - arm64: mm: Move reserve_crashkernel() into mem_init() + - arm64: mm: Move zone_dma_bits initialization into zone_sizes_init() + - of/address: Introduce of_dma_get_max_cpu_address() + - of: unittest: Add test for of_dma_get_max_cpu_address() + - arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges + - arm64: mm: Set ZONE_DMA size based on early IORT scan + - mm: Remove examples from enum zone_type comment + - ALSA: ctxfi: cthw20k2: fix mask on conf to allow 4 bits + - RDMA/cm: Fix IRQ restore in ib_send_cm_sidr_rep + - RDMA/rxe: Fix missing kconfig dependency on CRYPTO + - IB/mlx5: Add missing error code + - ALSA: hda: intel-nhlt: verify config type + - ftrace: Have recordmcount use w8 to read relp->r_info in + arm64_is_fake_mcount + - rsxx: Return -EFAULT if copy_to_user() fails + - iommu/vt-d: Fix status code for Allocate/Free PASID command + - Revert "arm64: dts: amlogic: add missing ethernet reset ID" + - of: unittest: Fix build on architectures without CONFIG_OF_ADDRESS + - tomoyo: recognize kernel threads correctly + - r8169: fix resuming from suspend on RTL8105e if machine runs on battery + - ACPICA: Fix race in generic_serial_bus (I2C) and GPIO op_region parameter + handling + - ASoC: SOF: Intel: broadwell: fix mutual exclusion with catpt driver + - nvme-pci: mark Kingston SKC2000 as not supporting the deepest power state + - parisc: Enable -mlong-calls gcc option with CONFIG_COMPILE_TEST + - arm64: Make CPU_BIG_ENDIAN depend on ld.bfd or ld.lld 13.0.0+ + - iommu/amd: Fix sleeping in atomic in increase_address_space() + - Bluetooth: btqca: Add valid le states quirk + - mwifiex: pcie: skip cancel_work_sync() on reset failure path + - ASoC: Intel: sof_sdw: add quirk for new TigerLake-SDCA device + - bus: ti-sysc: Implement GPMC debug quirk to drop platform data + - platform/x86: acer-wmi: Cleanup ACER_CAP_FOO defines + - platform/x86: acer-wmi: Cleanup accelerometer device handling + - platform/x86: acer-wmi: Add new force_caps module parameter + - platform/x86: acer-wmi: Add ACER_CAP_SET_FUNCTION_MODE capability flag + - platform/x86: acer-wmi: Add support for SW_TABLET_MODE on Switch devices + - platform/x86: acer-wmi: Add ACER_CAP_KBD_DOCK quirk for the Aspire Switch + 10E SW3-016 + - HID: mf: add support for 0079:1846 Mayflash/Dragonrise USB Gamecube Adapter + - media: cx23885: add more quirks for reset DMA on some AMD IOMMU + - ACPI: video: Add DMI quirk for GIGABYTE GB-BXBT-2807 + - ASoC: Intel: bytcr_rt5640: Add quirk for ARCHOS Cesium 140 + - PCI: Add function 1 DMA alias quirk for Marvell 9215 SATA controller + - ASoC: Intel: sof_sdw: add missing TGL_HDMI quirk for Dell SKU 0A32 + - scsi: ufs: Add a quirk to permit overriding UniPro defaults + - misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom + - scsi: ufs: Introduce a quirk to allow only page-aligned sg entries + - drm/msm/a5xx: Remove overwriting A5XX_PC_DBG_ECO_CNTL register + - mmc: sdhci-of-dwcmshc: set SDHCI_QUIRK2_PRESET_VALUE_BROKEN + - HID: i2c-hid: Add I2C_HID_QUIRK_NO_IRQ_AFTER_RESET for ITE8568 EC on Voyo + Winpad A15 + - scsi: ufs: Fix a duplicate dev quirk number + - KVM: SVM: Clear the CR4 register on reset + - nvme-pci: mark Seagate Nytro XM1440 as QUIRK_NO_NS_DESC_LIST. + - nvme-pci: add quirks for Lexar 256GB SSD + - dm table: fix iterate_devices based device capability checks + - dm table: fix DAX iterate_devices based device capability checks + - dm table: fix zoned iterate_devices based device capability checks + + * [SRU][F:OEM-5.10/G/H] add realtek 8852 bluetooth support (LP: #1924207) + - Bluetooth: btusb: btrtl: Add support for RTL8852A + - Bluetooth: btrtl: Enable central-peripheral role + - Bluetooth: btrtl: Enable WBS for the specific Realtek devices + + * Backport mlx5e fix for tunnel offload (LP: #1921769) + - net/mlx5e: Check tunnel offload is required before setting SWP + + * crash utility fails on arm64 with cannot determine VA_BITS_ACTUAL + (LP: #1919275) + - arm64/crash_core: Export TCR_EL1.T1SZ in vmcoreinfo + + -- Stefan Bader Fri, 07 May 2021 14:54:13 +0200 + +linux (5.8.0-53.60) groovy; urgency=medium + + * CVE-2021-3491 + - io_uring: fix provide_buffers sign extension + - io_uring: fix overflows checks in provide buffers + - SAUCE: proc: Avoid mixing integer types in mem_rw() + - SAUCE: io_uring: truncate lengths larger than MAX_RW_COUNT on provide + buffers + + * CVE-2021-3490 + - bpf: Fix a verifier failure with xor + - SAUCE: bpf: verifier: fix ALU32 bounds tracking with bitwise ops + + * CVE-2021-3489 + - SAUCE: bpf: ringbuf: deny reserve of buffers larger than ringbuf + - SAUCE: bpf: prevent writable memory-mapping of read-only ringbuf pages + + -- Stefan Bader Thu, 06 May 2021 07:43:20 +0200 + +linux (5.8.0-52.59) groovy; urgency=medium + + * groovy/linux: 5.8.0-52.59 -proposed tracker (LP: #1926730) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * hangup01 from pty in ubuntu_ltp_stable failed on G-5.8 (LP: #1925290) + - SAUCE: Revert "tty: implement read_iter" + - SAUCE: Revert "tty: convert tty_ldisc_ops 'read()' function to take a kernel + pointer" + + -- Kleber Sacilotto de Souza Fri, 30 Apr 2021 14:42:32 +0200 + +linux (5.8.0-51.57) groovy; urgency=medium + + * groovy/linux: 5.8.0-51.57 -proposed tracker (LP: #1923754) + + * CVE-2021-28375 + - misc: fastrpc: restrict user apps from sending kernel RPC messages + + * CVE-2021-29646 + - tipc: better validate user input in tipc_nl_retrieve_key() + + * SND_PCI_QUIRK for Clevo NH55RZQ and Intel NUC10 (LP: #1922759) + - ALSA: hda/realtek: Add quirk for Intel NUC 10 + - ALSA: hda/realtek: Add quirk for Clevo NH55RZQ + + * CVE-2021-29650 + - Revert "netfilter: x_tables: Update remaining dereference to RCU" + - Revert "netfilter: x_tables: Switch synchronization to RCU" + - netfilter: x_tables: Use correct memory barriers. + + * LRMv4: switch to signing nvidia modules via the Ubuntu Modules signing key + (LP: #1918134) + - [Packaging] dkms-build{,--nvidia-N} sync back from LRMv4 + + * CVE-2021-29266 + - vhost-vdpa: fix use-after-free of v->config_ctx + + * CVE-2021-29264 + - gianfar: fix jumbo packets+napi+rx overrun crash + + * CVE-2021-29265 + - usbip: fix stub_dev usbip_sockfd_store() races leading to gpf + + * Bcache bypasse writeback on caching device with fragmentation (LP: #1900438) + - bcache: consider the fragmentation when update the writeback rate + + * Fix implicit declaration warnings for kselftests/memfd test on newer + releases (LP: #1910323) + - selftests/memfd: Fix implicit declaration warnings + + * net/mlx5e: Add missing capability check for uplink follow (LP: #1921104) + - net/mlx5e: Add missing capability check for uplink follow + + * [UBUNUT 21.04] s390/vtime: fix increased steal time accounting + (LP: #1921498) + - s390/vtime: fix increased steal time accounting + + * Groovy update: upstream stable patchset 2021-03-30 (LP: #1921960) + - vmlinux.lds.h: add DWARF v5 sections + - debugfs: be more robust at handling improper input in debugfs_lookup() + - debugfs: do not attempt to create a new file before the filesystem is + initalized + - scsi: libsas: docs: Remove notify_ha_event() + - scsi: qla2xxx: Fix mailbox Ch erroneous error + - kdb: Make memory allocations more robust + - PCI: qcom: Use PHY_REFCLK_USE_PAD only for ipq8064 + - PCI: Decline to resize resources if boot config must be preserved + - virt: vbox: Do not use wait_event_interruptible when called from kernel + context + - bfq: Avoid false bfq queue merging + - ALSA: usb-audio: Fix PCM buffer allocation in non-vmalloc mode + - MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section + - random: fix the RNDRESEEDCRNG ioctl + - ALSA: pcm: Call sync_stop at disconnection + - ALSA: pcm: Assure sync with the pending stop operation at suspend + - ALSA: pcm: Don't call sync_stop if it hasn't been stopped + - drm/i915/gt: One more flush for Baytrail clear residuals + - ath10k: Fix error handling in case of CE pipe init failure + - Bluetooth: btqcomsmd: Fix a resource leak in error handling paths in the + probe function + - Bluetooth: hci_uart: Fix a race for write_work scheduling + - Bluetooth: Fix initializing response id after clearing struct + - ARM: dts: exynos: correct PMIC interrupt trigger level on Artik 5 + - ARM: dts: exynos: correct PMIC interrupt trigger level on Monk + - ARM: dts: exynos: correct PMIC interrupt trigger level on Rinato + - ARM: dts: exynos: correct PMIC interrupt trigger level on Spring + - ARM: dts: exynos: correct PMIC interrupt trigger level on Arndale Octa + - ARM: dts: exynos: correct PMIC interrupt trigger level on Odroid XU3 family + - arm64: dts: exynos: correct PMIC interrupt trigger level on TM2 + - arm64: dts: exynos: correct PMIC interrupt trigger level on Espresso + - memory: mtk-smi: Fix PM usage counter unbalance in mtk_smi ops + - Bluetooth: hci_qca: Fix memleak in qca_controller_memdump + - arm64: dts: qcom: msm8916-samsung-a5u: Fix iris compatible + - net: stmmac: dwmac-meson8b: fix enabling the timing-adjustment clock + - bpf: Add bpf_patch_call_args prototype to include/linux/bpf.h + - bpf: Avoid warning when re-casting __bpf_call_base into __bpf_call_base_args + - arm64: dts: allwinner: A64: properly connect USB PHY to port 0 + - arm64: dts: allwinner: H6: properly connect USB PHY to port 0 + - arm64: dts: allwinner: Drop non-removable from SoPine/LTS SD card + - arm64: dts: allwinner: H6: Allow up to 150 MHz MMC bus frequency + - arm64: dts: allwinner: A64: Limit MMC2 bus frequency to 150 MHz + - cpufreq: brcmstb-avs-cpufreq: Free resources in error path + - cpufreq: brcmstb-avs-cpufreq: Fix resource leaks in ->remove() + - arm64: dts: rockchip: rk3328: Add clock_in_out property to gmac2phy node + - ACPICA: Fix exception code class checks + - usb: gadget: u_audio: Free requests only after callback + - arm64: dts: qcom: sdm845-db845c: Fix reset-pin of ov8856 node + - soc: ti: pm33xx: Fix some resource leak in the error handling paths of the + probe function + - staging: media: atomisp: Fix size_t format specifier in hmm_alloc() debug + statemenet + - Bluetooth: drop HCI device reference before return + - Bluetooth: Put HCI device if inquiry procedure interrupts + - memory: ti-aemif: Drop child node when jumping out loop + - ARM: dts: Configure missing thermal interrupt for 4430 + - usb: dwc2: Do not update data length if it is 0 on inbound transfers + - usb: dwc2: Abort transaction after errors with unknown reason + - usb: dwc2: Make "trimming xfer length" a debug message + - staging: rtl8723bs: wifi_regd.c: Fix incorrect number of regulatory rules + - ARM: dts: armada388-helios4: assign pinctrl to LEDs + - ARM: dts: armada388-helios4: assign pinctrl to each fan + - arm64: dts: armada-3720-turris-mox: rename u-boot mtd partition to + a53-firmware + - opp: Correct debug message in _opp_add_static_v2() + - Bluetooth: btusb: Fix memory leak in btusb_mtk_wmt_recv + - soc: qcom: ocmem: don't return NULL in of_get_ocmem + - arm64: dts: msm8916: Fix reserved and rfsa nodes unit address + - arm64: dts: meson: fix broken wifi node for Khadas VIM3L + - ARM: s3c: fix fiq for clang IAS + - ARM: at91: use proper asm syntax in pm_suspend + - ath10k: Fix suspicious RCU usage warning in + ath10k_wmi_tlv_parse_peer_stats_info() + - ath10k: Fix lockdep assertion warning in ath10k_sta_statistics + - soc: aspeed: snoop: Add clock control logic + - bpf_lru_list: Read double-checked variable once without lock + - ath9k: fix data bus crash when setting nf_override via debugfs + - ibmvnic: Set to CLOSED state even on error + - bnxt_en: reverse order of TX disable and carrier off + - xen/netback: fix spurious event detection for common event case + - net/mlx5e: Don't change interrupt moderation params when DIM is enabled + - net/mlx5e: Change interrupt moderation channel params also when channels are + closed + - net/mlx5e: Replace synchronize_rcu with synchronize_net + - net/mlx5e: kTLS, Use refcounts to free kTLS RX priv context + - net/mlx5: Disable devlink reload for multi port slave device + - net/mlx5: Disallow RoCE on multi port slave device + - net/mlx5: Disallow RoCE on lag device + - net/mlx5: Disable devlink reload for lag devices + - mac80211: fix potential overflow when multiplying to u32 integers + - libbpf: Ignore non function pointer member in struct_ops + - bpf: Fix an unitialized value in bpf_iter + - bpf, devmap: Use GFP_KERNEL for xdp bulk queue allocation + - bpf: Fix bpf_fib_lookup helper MTU check for SKB ctx + - tcp: fix SO_RCVLOWAT related hangs under mem pressure + - net: axienet: Handle deferred probe on clock properly + - cxgb4/chtls/cxgbit: Keeping the max ofld immediate data size same in cxgb4 + and ulds + - b43: N-PHY: Fix the update of coef for the PHY revision >= 3case + - bpf: Clear subreg_def for global function return values + - ibmvnic: add memory barrier to protect long term buffer + - ibmvnic: skip send_request_unmap for timeout reset + - net: dsa: felix: perform teardown in reverse order of setup + - net: phy: mscc: adding LCPLL reset to VSC8514 + - net: amd-xgbe: Reset the PHY rx data path when mailbox command timeout + - net: amd-xgbe: Fix NETDEV WATCHDOG transmit queue timeout warning + - net: amd-xgbe: Reset link when the link never comes back + - net: amd-xgbe: Fix network fluctuations when using 1G BELFUSE SFP + - net: mvneta: Remove per-cpu queue mapping for Armada 3700 + - tty: convert tty_ldisc_ops 'read()' function to take a kernel pointer + - tty: implement read_iter + - fbdev: aty: SPARC64 requires FB_ATY_CT + - drm/gma500: Fix error return code in psb_driver_load() + - gma500: clean up error handling in init + - drm/fb-helper: Add missed unlocks in setcmap_legacy() + - crypto: sun4i-ss - linearize buffers content must be kept + - crypto: sun4i-ss - fix kmap usage + - crypto: arm64/aes-ce - really hide slower algos when faster ones are enabled + - media: allegro: Fix use after free on error + - drm: rcar-du: Fix PM reference leak in rcar_cmm_enable() + - drm: rcar-du: Fix crash when using LVDS1 clock for CRTC + - drm: rcar-du: Fix the return check of of_parse_phandle and + of_find_device_by_node + - drm/amdgpu: Fix macro name _AMDGPU_TRACE_H_ in preprocessor if condition + - MIPS: c-r4k: Fix section mismatch for loongson2_sc_init + - MIPS: lantiq: Explicitly compare LTQ_EBU_PCC_ISTAT against 0 + - drm/virtio: make sure context is created in gem open + - media: ipu3-cio2: Build only for x86 + - media: i2c: ov5670: Fix PIXEL_RATE minimum value + - media: imx: Unregister csc/scaler only if registered + - media: imx: Fix csc/scaler unregister + - media: mtk-vcodec: fix error return code in vdec_vp9_decode() + - media: camss: missing error code in msm_video_register() + - media: vsp1: Fix an error handling path in the probe function + - media: em28xx: Fix use-after-free in em28xx_alloc_urbs + - media: media/pci: Fix memleak in empress_init + - media: tm6000: Fix memleak in tm6000_start_stream + - media: aspeed: fix error return code in aspeed_video_setup_video() + - ASoC: cs42l56: fix up error handling in probe + - ASoC: qcom: qdsp6: Move frontend AIFs to q6asm-dai + - evm: Fix memleak in init_desc + - crypto: bcm - Rename struct device_private to bcm_device_private + - sched/fair: Avoid stale CPU util_est value for schedutil in task dequeue + - drm/sun4i: tcon: fix inverted DCLK polarity + - media: imx7: csi: Fix regression for parallel cameras on i.MX6UL + - media: imx7: csi: Fix pad link validation + - MIPS: properly stop .eh_frame generation + - MIPS: Compare __SYNC_loongson3_war against 0 + - drm/tegra: Fix reference leak when pm_runtime_get_sync() fails + - drm/amdgpu: toggle on DF Cstate after finishing xgmi injection + - bsg: free the request before return error code + - drm/amd/display: Fix 10/12 bpc setup in DCE output bit depth reduction. + - drm/amd/display: Fix HDMI deep color output for DCE 6-11. + - media: software_node: Fix refcounts in software_node_get_next_child() + - media: lmedm04: Fix misuse of comma + - media: atomisp: Fix a buffer overflow in debug code + - media: qm1d1c0042: fix error return code in qm1d1c0042_init() + - media: cx25821: Fix a bug when reallocating some dma memory + - media: pxa_camera: declare variable when DEBUG is defined + - media: uvcvideo: Accept invalid bFormatIndex and bFrameIndex values + - sched/eas: Don't update misfit status if the task is pinned + - f2fs: compress: fix potential deadlock + - ASoC: SOF: Intel: hda: cancel D0i3 work during runtime suspend + - mtd: parser: imagetag: fix error codes in + bcm963xx_parse_imagetag_partitions() + - crypto: talitos - Work around SEC6 ERRATA (AES-CTR mode data size error) + - crypto: talitos - Fix ctr(aes) on SEC1 + - drm/nouveau: bail out of nouveau_channel_new if channel init fails + - mm: proc: Invalidate TLB after clearing soft-dirty page state + - ata: ahci_brcm: Add back regulators management + - ASoC: cpcap: fix microphone timeslot mask + - ASoC: codecs: add missing max_register in regmap config + - mtd: parsers: afs: Fix freeing the part name memory in failure + - f2fs: fix to avoid inconsistent quota data + - drm/amdgpu: Prevent shift wrapping in amdgpu_read_mask() + - f2fs: fix a wrong condition in __submit_bio + - KVM: nSVM: Don't strip host's C-bit from guest's CR3 when reading PDPTRs + - drm/mediatek: Check if fb is null + - Drivers: hv: vmbus: Avoid use-after-free in vmbus_onoffer_rescind() + - ASoC: Intel: sof_sdw: add missing TGL_HDMI quirk for Dell SKU 0A5E + - locking/lockdep: Avoid unmatched unlock + - ASoC: rt5682: Fix panic in rt5682_jack_detect_handler happening during + system shutdown + - ASoC: SOF: debug: Fix a potential issue on string buffer termination + - btrfs: clarify error returns values in __load_free_space_cache + - btrfs: fix double accounting of ordered extent for subpage case in + btrfs_invalidapge + - KVM: x86: Restore all 64 bits of DR6 and DR7 during RSM on x86-64 + - drm/lima: fix reference leak in lima_pm_busy + - drm/dp_mst: Don't cache EDIDs for physical ports + - hwrng: timeriomem - Fix cooldown period calculation + - crypto: ecdh_helper - Ensure 'len >= secret.len' in decode_key() + - nvmet-tcp: fix receive data digest calculation for multiple h2cdata PDUs + - nvmet-tcp: fix potential race of tcp socket closing accept_work + - nvmet: remove extra variable in identify ns + - nvmet: set status to 0 in case for invalid nsid + - ASoC: SOF: sof-pci-dev: add missing Up-Extreme quirk + - ima: Free IMA measurement buffer on error + - ima: Free IMA measurement buffer after kexec syscall + - ASoC: simple-card-utils: Fix device module clock + - fs/jfs: fix potential integer overflow on shift of a int + - jffs2: fix use after free in jffs2_sum_write_data() + - ubifs: Fix memleak in ubifs_init_authentication + - ubifs: replay: Fix high stack usage, again + - ubifs: Fix error return code in alloc_wbufs() + - irqchip/imx: IMX_INTMUX should not default to y, unconditionally + - smp: Process pending softirqs in flush_smp_call_function_from_idle() + - drm/amdgpu/display: remove hdcp_srm sysfs on device removal + - HSI: Fix PM usage counter unbalance in ssi_hw_init + - power: supply: cpcap: Add missing IRQF_ONESHOT to fix regression + - clk: meson: clk-pll: fix initializing the old rate (fallback) for a PLL + - clk: meson: clk-pll: make "ret" a signed integer + - clk: meson: clk-pll: propagate the error from meson_clk_pll_set_rate() + - regulator: qcom-rpmh-regulator: add pm8009-1 chip revision + - quota: Fix memory leak when handling corrupted quota file + - i2c: iproc: handle only slave interrupts which are enabled + - i2c: iproc: update slave isr mask (ISR_MASK_SLAVE) + - i2c: iproc: handle master read request + - spi: cadence-quadspi: Abort read if dummy cycles required are too many + - clk: sunxi-ng: h6: Fix CEC clock + - HID: core: detect and skip invalid inputs to snto32() + - RDMA/siw: Fix handling of zero-sized Read and Receive Queues. + - dmaengine: fsldma: Fix a resource leak in the remove function + - dmaengine: fsldma: Fix a resource leak in an error handling path of the + probe function + - dmaengine: owl-dma: Fix a resource leak in the remove function + - dmaengine: hsu: disable spurious interrupt + - mfd: bd9571mwv: Use devm_mfd_add_devices() + - power: supply: cpcap-charger: Fix missing power_supply_put() + - power: supply: cpcap-battery: Fix missing power_supply_put() + - power: supply: cpcap-charger: Fix power_supply_put on null battery pointer + - fdt: Properly handle "no-map" field in the memory region + - of/fdt: Make sure no-map does not remove already reserved regions + - RDMA/rtrs: Extend ibtrs_cq_qp_create + - RDMA/rtrs-srv: Release lock before call into close_sess + - RDMA/rtrs-srv: Use sysfs_remove_file_self for disconnect + - RDMA/rtrs-clt: Set mininum limit when create QP + - RDMA/rtrs: Call kobject_put in the failure path + - RDMA/rtrs-srv: Fix missing wr_cqe + - RDMA/rtrs-clt: Refactor the failure cases in alloc_clt + - RDMA/rtrs-srv: Init wr_cnt as 1 + - power: reset: at91-sama5d2_shdwc: fix wkupdbc mask + - rtc: s5m: select REGMAP_I2C + - dmaengine: idxd: set DMA channel to be private + - power: supply: fix sbs-charger build, needs REGMAP_I2C + - clocksource/drivers/ixp4xx: Select TIMER_OF when needed + - clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined + - RDMA/mlx5: Use the correct obj_id upon DEVX TIR creation + - IB/mlx5: Add mutex destroy call to cap_mask_mutex mutex + - clk: sunxi-ng: h6: Fix clock divider range on some clocks + - regulator: axp20x: Fix reference cout leak + - watch_queue: Drop references to /dev/watch_queue + - certs: Fix blacklist flag type confusion + - regulator: s5m8767: Fix reference count leak + - spi: atmel: Put allocated master before return + - regulator: s5m8767: Drop regulators OF node reference + - power: supply: axp20x_usb_power: Init work before enabling IRQs + - regulator: core: Avoid debugfs: Directory ... already present! error + - isofs: release buffer head before return + - watchdog: intel-mid_wdt: Postpone IRQ handler registration till SCU is ready + - auxdisplay: ht16k33: Fix refresh rate handling + - objtool: Fix error handling for STD/CLD warnings + - objtool: Fix ".cold" section suffix check for newer versions of GCC + - iommu: Switch gather->end to the inclusive end + - IB/umad: Return EIO in case of when device disassociated + - IB/umad: Return EPOLLERR in case of when device disassociated + - KVM: PPC: Make the VMX instruction emulation routines static + - powerpc/47x: Disable 256k page size + - powerpc/time: Enable sched clock for irqtime + - mmc: owl-mmc: Fix a resource leak in an error handling path and in the + remove function + - mmc: sdhci-sprd: Fix some resource leaks in the remove function + - mmc: usdhi6rol0: Fix a resource leak in the error handling path of the probe + - mmc: renesas_sdhi_internal_dmac: Fix DMA buffer alignment from 8 to + 128-bytes + - ARM: 9046/1: decompressor: Do not clear SCTLR.nTLSMD for ARMv7+ cores + - i2c: qcom-geni: Store DMA mapping data in geni_i2c_dev struct + - amba: Fix resource leak for drivers without .remove + - iommu: Move iotlb_sync_map out from __iommu_map + - iommu: Properly pass gfp_t in _iommu_map() to avoid atomic sleeping + - IB/mlx5: Return appropriate error code instead of ENOMEM + - IB/cm: Avoid a loop when device has 255 ports + - tracepoint: Do not fail unregistering a probe due to memory failure + - rtc: zynqmp: depend on HAS_IOMEM + - perf tools: Fix DSO filtering when not finding a map for a sampled address + - perf vendor events arm64: Fix Ampere eMag event typo + - RDMA/rxe: Fix coding error in rxe_recv.c + - RDMA/rxe: Fix coding error in rxe_rcv_mcast_pkt + - RDMA/rxe: Correct skb on loopback path + - spi: stm32: properly handle 0 byte transfer + - mfd: wm831x-auxadc: Prevent use after free in wm831x_auxadc_read_irq() + - powerpc/pseries/dlpar: handle ibm, configure-connector delay status + - powerpc/8xx: Fix software emulation interrupt + - clk: qcom: gcc-msm8998: Fix Alpha PLL type for all GPLLs + - kunit: tool: fix unit test cleanup handling + - kselftests: dmabuf-heaps: Fix Makefile's inclusion of the kernel's + usr/include dir + - RDMA/hns: Fixed wrong judgments in the goto branch + - RDMA/siw: Fix calculation of tx_valid_cpus size + - RDMA/hns: Fix type of sq_signal_bits + - RDMA/hns: Disable RQ inline by default + - clk: divider: fix initialization with parent_hw + - spi: pxa2xx: Fix the controller numbering for Wildcat Point + - powerpc/uaccess: Avoid might_fault() when user access is enabled + - powerpc/kuap: Restore AMR after replaying soft interrupts + - regulator: qcom-rpmh: fix pm8009 ldo7 + - clk: aspeed: Fix APLL calculate formula from ast2600-A2 + - regulator: bd718x7, bd71828, Fix dvs voltage levels + - nfsd: register pernet ops last, unregister first + - ceph: fix flush_snap logic after putting caps + - RDMA/hns: Fixes missing error code of CMDQ + - RDMA/ucma: Fix use-after-free bug in ucma_create_uevent + - RDMA/rtrs-srv: Fix stack-out-of-bounds + - RDMA/rtrs: Only allow addition of path to an already established session + - RDMA/rtrs-srv: fix memory leak by missing kobject free + - RDMA/rtrs-srv-sysfs: fix missing put_device + - RDMA/rtrs-srv: Do not pass a valid pointer to PTR_ERR() + - Input: sur40 - fix an error code in sur40_probe() + - perf intel-pt: Fix missing CYC processing in PSB + - perf intel-pt: Fix premature IPC + - perf intel-pt: Fix IPC with CYC threshold + - perf test: Fix unaligned access in sample parsing test + - Input: elo - fix an error code in elo_connect() + - sparc64: only select COMPAT_BINFMT_ELF if BINFMT_ELF is set + - sparc: fix led.c driver when PROC_FS is not enabled + - ARM: 9065/1: OABI compat: fix build when EPOLL is not enabled + - misc: eeprom_93xx46: Fix module alias to enable module autoprobe + - phy: rockchip-emmc: emmc_phy_init() always return 0 + - misc: eeprom_93xx46: Add module alias to avoid breaking support for non + device tree users + - PCI: rcar: Always allocate MSI addresses in 32bit space + - soundwire: cadence: fix ACK/NAK handling + - pwm: rockchip: Enable APB clock during register access while probing + - pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare() + - pwm: rockchip: Eliminate potential race condition when probing + - VMCI: Use set_page_dirty_lock() when unregistering guest memory + - PCI: Align checking of syscall user config accessors + - mei: hbm: call mei_set_devstate() on hbm stop response + - drm/msm/dsi: Correct io_start for MSM8994 (20nm PHY) + - drm/msm/mdp5: Fix wait-for-commit for cmd panels + - drm/msm: Fix race of GPU init vs timestamp power management. + - drm/msm: Fix races managing the OOB state for timestamp vs timestamps. + - vfio/iommu_type1: Populate full dirty when detach non-pinned group + - vfio/iommu_type1: Fix some sanity checks in detach group + - ext4: fix potential htree index checksum corruption + - nvmem: core: Fix a resource leak on error in nvmem_add_cells_from_of() + - nvmem: core: skip child nodes not matching binding + - soundwire: bus: use sdw_update_no_pm when initializing a device + - soundwire: export sdw_write/read_no_pm functions + - soundwire: bus: fix confusion on device used by pm_runtime + - misc: fastrpc: fix incorrect usage of dma_map_sgtable + - regmap: sdw: use _no_pm functions in regmap_read/write + - ext: EXT4_KUNIT_TESTS should depend on EXT4_FS instead of selecting it + - mailbox: sprd: correct definition of SPRD_OUTBOX_FIFO_FULL + - PCI: pci-bridge-emul: Fix array overruns, improve safety + - i40e: Fix flow for IPv6 next header (extension header) + - i40e: Add zero-initialization of AQ command structures + - i40e: Fix overwriting flow control settings during driver loading + - i40e: Fix addition of RX filters after enabling FW LLDP agent + - i40e: Fix VFs not created + - Take mmap lock in cacheflush syscall + - i40e: Fix add TC filter for IPv6 + - octeontx2-af: Fix an off by one in rvu_dbg_qsize_write() + - vfio/type1: Use follow_pte() + - ice: report correct max number of TCs + - ice: Account for port VLAN in VF max packet size calculation + - ice: Fix state bits on LLDP mode switch + - ice: update the number of available RSS queues + - net: stmmac: fix CBS idleslope and sendslope calculation + - net/mlx4_core: Add missed mlx4_free_cmd_mailbox() + - vxlan: move debug check after netdev unregister + - wireguard: device: do not generate ICMP for non-IP packets + - wireguard: kconfig: use arm chacha even with no neon + - ocfs2: fix a use after free on error + - mm: memcontrol: fix NR_ANON_THPS accounting in charge moving + - mm/memory.c: fix potential pte_unmap_unlock pte error + - mm/hugetlb: fix potential double free in hugetlb_register_node() error path + - mm/hugetlb: suppress wrong warning info when alloc gigantic page + - mm/compaction: fix misbehaviors of fast_find_migrateblock() + - r8169: fix jumbo packet handling on RTL8168e + - arm64: Add missing ISB after invalidating TLB in __primary_switch + - i2c: brcmstb: Fix brcmstd_send_i2c_cmd condition + - i2c: exynos5: Preserve high speed master code + - mm,thp,shmem: make khugepaged obey tmpfs mount flags + - mm/rmap: fix potential pte_unmap on an not mapped pte + - proc: use kvzalloc for our kernel buffer + - scsi: bnx2fc: Fix Kconfig warning & CNIC build errors + - ide/falconide: Fix module unload + - scsi: sd: Fix Opal support + - blk-settings: align max_sectors on "logical_block_size" boundary + - soundwire: intel: fix possible crash when no device is detected + - ACPI: property: Fix fwnode string properties matching + - ACPI: configfs: add missing check after configfs_register_default_group() + - cpufreq: ACPI: Set cpuinfo.max_freq directly if max boost is known + - HID: logitech-dj: add support for keyboard events in eQUAD step 4 Gaming + - HID: wacom: Ignore attempts to overwrite the touch_max value from HID + - Input: raydium_ts_i2c - do not send zero length + - Input: xpad - add support for PowerA Enhanced Wired Controller for Xbox + Series X|S + - Input: joydev - prevent potential read overflow in ioctl + - Input: i8042 - add ASUS Zenbook Flip to noselftest list + - media: mceusb: Fix potential out-of-bounds shift + - USB: serial: option: update interface mapping for ZTE P685M + - usb: musb: Fix runtime PM race in musb_queue_resume_work + - USB: serial: ftdi_sio: fix FTX sub-integer prescaler + - USB: serial: pl2303: fix line-speed handling on newer chips + - USB: serial: mos7840: fix error code in mos7840_write() + - USB: serial: mos7720: fix error code in mos7720_write() + - phy: lantiq: rcu-usb2: wait after clock enable + - ALSA: fireface: fix to parse sync status register of latter protocol + - ALSA: hda: Add another CometLake-H PCI ID + - ALSA: hda/hdmi: Drop bogus check at closing a stream + - ALSA: hda/realtek: modify EAPD in the ALC886 + - ALSA: hda/realtek: Quirk for HP Spectre x360 14 amp setup + - MIPS: Ingenic: Disable HPTLB for D0 XBurst CPUs too + - MIPS: Support binutils configured with --enable-mips-fix-loongson3-llsc=yes + - MIPS: VDSO: Use CLANG_FLAGS instead of filtering out '--target=' + - Revert "MIPS: Octeon: Remove special handling of + CONFIG_MIPS_ELF_APPENDED_DTB=y" + - Revert "bcache: Kill btree_io_wq" + - bcache: Give btree_io_wq correct semantics again + - bcache: Move journal work to new flush wq + - Revert "drm/amd/display: Update NV1x SR latency values" + - drm/amd/display: Add FPU wrappers to dcn21_validate_bandwidth() + - drm/amd/display: Add vupdate_no_lock interrupts for DCN2.1 + - drm/amdkfd: Fix recursive lock warnings + - drm/amdgpu: Set reference clock to 100Mhz on Renoir (v2) + - drm/nouveau/kms: handle mDP connectors + - drm/modes: Switch to 64bit maths to avoid integer overflow + - drm/sched: Cancel and flush all outstanding jobs before finish. + - drm/panel: kd35t133: allow using non-continuous dsi clock + - drm/rockchip: Require the YTR modifier for AFBC + - ASoC: siu: Fix build error by a wrong const prefix + - selinux: fix inconsistency between inode_getxattr and inode_listsecurity + - erofs: initialized fields can only be observed after bit is set + - tpm_tis: Fix check_locality for correct locality acquisition + - tpm_tis: Clean up locality release + - KEYS: trusted: Fix incorrect handling of tpm_get_random() + - KEYS: trusted: Fix migratable=1 failing + - KEYS: trusted: Reserve TPM for seal and unseal operations + - btrfs: do not cleanup upper nodes in btrfs_backref_cleanup_node + - btrfs: do not warn if we can't find the reloc root when looking up backref + - btrfs: add asserts for deleting backref cache nodes + - btrfs: abort the transaction if we fail to inc ref in btrfs_copy_root + - btrfs: fix reloc root leak with 0 ref reloc roots on recovery + - btrfs: splice remaining dirty_bg's onto the transaction dirty bg list + - btrfs: handle space_info::total_bytes_pinned inside the delayed ref itself + - btrfs: account for new extents being deleted in total_bytes_pinned + - btrfs: fix extent buffer leak on failure to copy root + - drm/i915/gt: Flush before changing register state + - drm/i915/gt: Correct surface base address for renderclear + - crypto: arm64/sha - add missing module aliases + - crypto: aesni - prevent misaligned buffers on the stack + - crypto: michael_mic - fix broken misalignment handling + - crypto: sun4i-ss - checking sg length is not sufficient + - crypto: sun4i-ss - handle BigEndian for cipher + - crypto: sun4i-ss - initialize need_fallback + - soc: samsung: exynos-asv: don't defer early on not-supported SoCs + - soc: samsung: exynos-asv: handle reading revision register error + - seccomp: Add missing return in non-void function + - arm64: ptrace: Fix seccomp of traced syscall -1 (NO_SYSCALL) + - misc: rtsx: init of rts522a add OCP power off when no card is present + - drivers/misc/vmw_vmci: restrict too big queue size in qp_host_alloc_queue + - pstore: Fix typo in compression option name + - dts64: mt7622: fix slow sd card access + - arm64: dts: agilex: fix phy interface bit shift for gmac1 and gmac2 + - staging/mt7621-dma: mtk-hsdma.c->hsdma-mt7621.c + - staging: gdm724x: Fix DMA from stack + - staging: rtl8188eu: Add Edimax EW-7811UN V2 to device table + - media: ipu3-cio2: Fix mbus_code processing in cio2_subdev_set_fmt() + - media: smipcie: fix interrupt handling and IR timeout + - x86/virt: Eat faults on VMXOFF in reboot flows + - x86/reboot: Force all cpus to exit VMX root if VMX is supported + - x86/fault: Fix AMD erratum #91 errata fixup for user code + - x86/entry: Fix instrumentation annotation + - powerpc/prom: Fix "ibm,arch-vec-5-platform-support" scan + - rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers + - rcu/nocb: Perform deferred wake up before last idle's need_resched() check + - arm64: Extend workaround for erratum 1024718 to all versions of Cortex-A55 + - arm64: kexec_file: fix memory leakage in create_dtb() when fdt_open_into() + fails + - arm64: uprobe: Return EOPNOTSUPP for AARCH32 instruction probing + - arm64 module: set plt* section addresses to 0x0 + - arm64: spectre: Prevent lockdep splat on v4 mitigation enable path + - riscv: Disable KSAN_SANITIZE for vDSO + - watchdog: qcom: Remove incorrect usage of QCOM_WDT_ENABLE_IRQ + - watchdog: mei_wdt: request stop on unregister + - coresight: etm4x: Handle accesses to TRCSTALLCTLR + - mtd: spi-nor: sfdp: Fix last erase region marking + - mtd: spi-nor: sfdp: Fix wrong erase type bitmask for overlaid region + - mtd: spi-nor: core: Fix erase type discovery for overlaid region + - mtd: spi-nor: core: Add erase size check for erase command initialization + - mtd: spi-nor: hisi-sfc: Put child node np on error path + - fs/affs: release old buffer head on error path + - seq_file: document how per-entry resources are managed. + - x86: fix seq_file iteration for pat/memtype.c + - mm: memcontrol: fix swap undercounting in cgroup2 + - hugetlb: fix update_and_free_page contig page struct assumption + - hugetlb: fix copy_huge_page_from_user contig page struct assumption + - mm/vmscan: restore zone_reclaim_mode ABI + - mm, compaction: make fast_isolate_freepages() stay within zone + - nvmem: qcom-spmi-sdam: Fix uninitialized pdev pointer + - module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for undefined symbols + - mmc: sdhci-esdhc-imx: fix kernel panic when remove module + - powerpc/32s: Add missing call to kuep_lock on syscall entry + - spmi: spmi-pmic-arb: Fix hw_irq overflow + - mei: me: emmitsburg workstation DID + - mei: me: add adler lake point S DID + - mei: me: add adler lake point LP DID + - gpio: pcf857x: Fix missing first interrupt + - mfd: gateworks-gsc: Fix interrupt type + - printk: fix deadlock when kernel panic + - exfat: fix shift-out-of-bounds in exfat_fill_super() + - zonefs: Fix file size of zones in full condition + - [Config] updateconfigs for KCMP + - kcmp: Support selection of SYS_kcmp without CHECKPOINT_RESTORE + - thermal: cpufreq_cooling: freq_qos_update_request() returns < 0 on error + - cpufreq: intel_pstate: Change intel_pstate_get_hwp_max() argument + - cpufreq: intel_pstate: Get per-CPU max freq via MSR_HWP_CAPABILITIES if + available + - proc: don't allow async path resolution of /proc/thread-self components + - s390/vtime: fix inline assembly clobber list + - virtio/s390: implement virtio-ccw revision 2 correctly + - um: mm: check more comprehensively for stub changes + - um: defer killing userspace on page table update failures + - irqchip/loongson-pch-msi: Use bitmap_zalloc() to allocate bitmap + - f2fs: fix out-of-repair __setattr_copy() + - f2fs: enforce the immutable flag on open files + - f2fs: flush data when enabling checkpoint back + - sparc32: fix a user-triggerable oops in clear_user() + - spi: fsl: invert spisel_boot signal on MPC8309 + - spi: spi-synquacer: fix set_cs handling + - gfs2: fix glock confusion in function signal_our_withdraw + - gfs2: Don't skip dlm unlock if glock has an lvb + - gfs2: Lock imbalance on error path in gfs2_recover_one + - gfs2: Recursive gfs2_quota_hold in gfs2_iomap_end + - dm: fix deadlock when swapping to encrypted device + - dm writecache: fix performance degradation in ssd mode + - dm writecache: return the exact table values that were set + - dm writecache: fix writing beyond end of underlying device when shrinking + - dm era: Recover committed writeset after crash + - dm era: Update in-core bitset after committing the metadata + - dm era: Verify the data block size hasn't changed + - dm era: Fix bitset memory leaks + - dm era: Use correct value size in equality function of writeset tree + - dm era: Reinitialize bitset cache before digesting a new writeset + - dm era: only resize metadata in preresume + - drm/i915: Reject 446-480MHz HDMI clock on GLK + - kgdb: fix to kill breakpoints on initmem after boot + - wireguard: selftests: test multiple parallel streams + - wireguard: queueing: get rid of per-peer ring buffers + - net: sched: fix police ext initialization + - net: qrtr: Fix memory leak in qrtr_tun_open + - ARM: dts: aspeed: Add LCLK to lpc-snoop + - ipv6: icmp6: avoid indirect call for icmpv6_send() + + * Mute/Mic-mute LEDs are not work on HP 850/840/440 G8 Laptops (LP: #1920030) + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 840 G8 + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 440 G8 + - ALSA: hda/realtek: fix mute/micmute LEDs for HP 850 G8 + + * Groovy update: upstream stable patchset 2021-03-19 (LP: #1920571) + - af_key: relax availability checks for skb size calculation + - regulator: core: avoid regulator_resolve_supply() race condition + - ASoC: wm_adsp: Fix control name parsing for multi-fw + - mac80211: 160MHz with extended NSS BW in CSA + - ASoC: Intel: Skylake: Zero snd_ctl_elem_value + - chtls: Fix potential resource leak + - pNFS/NFSv4: Try to return invalid layout in pnfs_layout_process() + - pNFS/NFSv4: Improve rejection of out-of-order layouts + - ALSA: hda: intel-dsp-config: add PCI id for TGL-H + - ASoC: ak4458: correct reset polarity + - ASoC: Intel: sof_sdw: set proper flags for Dell TGL-H SKU 0A5E + - iwlwifi: mvm: skip power command when unbinding vif during CSA + - iwlwifi: mvm: take mutex for calling iwl_mvm_get_sync_time() + - iwlwifi: pcie: add a NULL check in iwl_pcie_txq_unmap + - iwlwifi: pcie: fix context info memory leak + - iwlwifi: mvm: invalidate IDs of internal stations at mvm start + - iwlwifi: pcie: add rules to match Qu with Hr2 + - iwlwifi: mvm: guard against device removal in reprobe + - SUNRPC: Move simple_get_bytes and simple_get_netobj into private header + - SUNRPC: Handle 0 length opaque XDR object data properly + - i2c: mediatek: Move suspend and resume handling to NOIRQ phase + - blk-cgroup: Use cond_resched() when destroy blkgs + - regulator: Fix lockdep warning resolving supplies + - bpf: Fix verifier jmp32 pruning decision logic + - bpf: Fix verifier jsgt branch analysis on max bound + - drm/i915: Fix ICL MG PHY vswing handling + - drm/i915: Skip vswing programming for TBT + - nilfs2: make splice write available again + - squashfs: avoid out of bounds writes in decompressors + - squashfs: add more sanity checks in id lookup + - squashfs: add more sanity checks in inode lookup + - squashfs: add more sanity checks in xattr id lookup + - gpio: mxs: GPIO_MXS should not default to y unconditionally + - gpio: ep93xx: fix BUG_ON port F usage + - gpio: ep93xx: Fix single irqchip with multi gpiochips + - tracing: Do not count ftrace events in top level enable output + - tracing: Check length before giving out the filter buffer + - drm/i915: Fix overlay frontbuffer tracking + - arm/xen: Don't probe xenbus as part of an early initcall + - cgroup: fix psi monitor for root cgroup + - drm/i915/tgl+: Make sure TypeC FIA is powered up when initializing it + - drm/dp_mst: Don't report ports connected if nothing is attached to them + - dmaengine: move channel device_node deletion to driver + - soc: ti: omap-prm: Fix boot time errors for rst_map_012 bits 0 and 1 + - arm64: dts: rockchip: Fix PCIe DT properties on rk3399 + - arm64: dts: qcom: sdm845: Reserve LPASS clocks in gcc + - ARM: OMAP2+: Fix suspcious RCU usage splats for omap_enter_idle_coupled + - arm64: dts: rockchip: remove interrupt-names property from rk3399 vdec node + - platform/x86: hp-wmi: Disable tablet-mode reporting by default + - ovl: perform vfs_getxattr() with mounter creds + - cap: fix conversions on getxattr + - ovl: skip getxattr of security labels + - scsi: lpfc: Fix EEH encountering oops with NVMe traffic + - x86/split_lock: Enable the split lock feature on Sapphire Rapids and Alder + Lake CPUs + - x86/split_lock: Enable the split lock feature on another Alder Lake CPU + - nvme-pci: ignore the subsysem NQN on Phison E16 + - drm/amd/display: Fix DPCD translation for LTTPR AUX_RD_INTERVAL + - drm/amd/display: Add more Clock Sources to DCN2.1 + - drm/amd/display: Release DSC before acquiring + - drm/amd/display: Fix dc_sink kref count in emulated_link_detect + - drm/amd/display: Free atomic state after drm_atomic_commit + - drm/amd/display: Decrement refcount of dc_sink before reassignment + - riscv: virt_addr_valid must check the address belongs to linear mapping + - ARM: dts: lpc32xx: Revert set default clock rate of HCLK PLL + - kallsyms: fix nonconverging kallsyms table with lld + - ARM: ensure the signal page contains defined contents + - ARM: kexec: fix oops after TLB are invalidated + - ubsan: implement __ubsan_handle_alignment_assumption + - x86/efi: Remove EFI PGD build time checks + - lkdtm: don't move ctors to .rodata + - cgroup-v1: add disabled controller check in cgroup1_parse_param() + - mt76: dma: fix a possible memory leak in mt76_add_fragment() + - drm/vc4: hvs: Fix buffer overflow with the dlist handling + - bpf: Unbreak BPF_PROG_TYPE_KPROBE when kprobe is called via do_int3 + - bpf: Check for integer overflow when using roundup_pow_of_two() + - netfilter: xt_recent: Fix attempt to update deleted entry + - netfilter: nftables: fix possible UAF over chains from packet path in netns + - netfilter: flowtable: fix tcp and udp header checksum update + - xen/netback: avoid race in xenvif_rx_ring_slots_available() + - net: hdlc_x25: Return meaningful error code in x25_open + - net: ipa: set error code in gsi_channel_setup() + - hv_netvsc: Reset the RSC count if NVSP_STAT_FAIL in netvsc_receive() + - net: enetc: initialize the RFS and RSS memories + - selftests: txtimestamp: fix compilation issue + - net: stmmac: set TxQ mode back to DCB after disabling CBS + - ibmvnic: Clear failover_pending if unable to schedule + - netfilter: conntrack: skip identical origin tuple in same zone only + - scsi: scsi_debug: Fix a memory leak + - x86/build: Disable CET instrumentation in the kernel for 32-bit too + - net: hns3: add a check for queue_id in hclge_reset_vf_queue() + - net: hns3: add a check for tqp_index in hclge_get_ring_chain_from_mbx() + - net: hns3: add a check for index in hclge_get_rss_key() + - firmware_loader: align .builtin_fw to 8 + - drm/sun4i: tcon: set sync polarity for tcon1 channel + - drm/sun4i: dw-hdmi: always set clock rate + - drm/sun4i: Fix H6 HDMI PHY configuration + - drm/sun4i: dw-hdmi: Fix max. frequency for H6 + - clk: sunxi-ng: mp: fix parent rate change flag check + - i2c: stm32f7: fix configuration of the digital filter + - h8300: fix PREEMPTION build, TI_PRE_COUNT undefined + - scripts: set proper OpenSSL include dir also for sign-file + - rxrpc: Fix clearance of Tx/Rx ring when releasing a call + - udp: fix skb_copy_and_csum_datagram with odd segment sizes + - net: dsa: call teardown method on probe failure + - cpufreq: ACPI: Extend frequency tables to cover boost frequencies + - cpufreq: ACPI: Update arch scale-invariance max perf ratio if CPPC is not + there + - net: gro: do not keep too many GRO packets in napi->rx_list + - net: fix iteration for sctp transport seq_files + - net/vmw_vsock: fix NULL pointer dereference + - net/vmw_vsock: improve locking in vsock_connect_timeout() + - net: watchdog: hold device global xmit lock during tx disable + - bridge: mrp: Fix the usage of br_mrp_port_switchdev_set_state + - switchdev: mrp: Remove SWITCHDEV_ATTR_ID_MRP_PORT_STAT + - vsock/virtio: update credit only if socket is not closed + - vsock: fix locking in vsock_shutdown() + - net/rds: restrict iovecs length for RDS_CMSG_RDMA_ARGS + - net/qrtr: restrict user-controlled length in qrtr_tun_write_iter() + - ovl: expand warning in ovl_d_real() + - kcov, usb: only collect coverage from __usb_hcd_giveback_urb in softirq + - usb: dwc3: ulpi: fix checkpatch warning + - net: qrtr: Fix port ID for control messages + - mptcp: skip to next candidate if subflow has unacked data + - mt76: mt7915: fix endian issues + - mt76: mt7615: fix rdd mcu cmd endianness + - net: sched: incorrect Kconfig dependencies on Netfilter modules + - net: openvswitch: fix TTL decrement exception action execution + - net: bridge: Fix a warning when del bridge sysfs + - net: fix proc_fs init handling in af_packet and tls + - Xen/x86: don't bail early from clear_foreign_p2m_mapping() + - Xen/x86: also check kernel mapping in set_foreign_p2m_mapping() + - Xen/gntdev: correct dev_bus_addr handling in gntdev_map_grant_pages() + - Xen/gntdev: correct error checking in gntdev_map_grant_pages() + - xen/arm: don't ignore return errors from set_phys_to_machine + - xen-blkback: don't "handle" error by BUG() + - xen-netback: don't "handle" error by BUG() + - xen-scsiback: don't "handle" error by BUG() + - xen-blkback: fix error handling in xen_blkbk_map() + - tty: protect tty_write from odd low-level tty disciplines + - btrfs: fix backport of 2175bf57dc952 in 5.10.13 + - media: pwc: Use correct device for DMA + - HID: make arrays usage and value to be the same + - RDMA: Lift ibdev_to_node from rds to common code + - nvme-rdma: Use ibdev_to_node instead of dereferencing ->dma_device + - USB: quirks: sort quirk entries + - usb: quirks: add quirk to start video capture on ELMO L-12F document camera + reliable + - ceph: downgrade warning from mdsmap decode to debug + - ntfs: check for valid standard information attribute + - Bluetooth: btusb: Some Qualcomm Bluetooth adapters stop working + - arm64: tegra: Add power-domain for Tegra210 HDA + - hwmon: (dell-smm) Add XPS 15 L502X to fan control blacklist + - mm: unexport follow_pte_pmd + - mm: simplify follow_pte{,pmd} + - KVM: do not assume PTE is writable after follow_pfn + - mm: provide a saner PTE walking API for modules + - KVM: Use kvm_pfn_t for local PFN variable in hva_to_pfn_remapped() + - NET: usb: qmi_wwan: Adding support for Cinterion MV31 + - cxgb4: Add new T6 PCI device id 0x6092 + - kbuild: fix CONFIG_TRIM_UNUSED_KSYMS build for ppc64 + - scripts/recordmcount.pl: support big endian for ARCH sh + + * Groovy update: upstream stable patchset 2021-03-12 (LP: #1918987) + - net: fec: put child node on error path + - net: octeontx2: Make sure the buffer is 128 byte aligned + - stmmac: intel: Configure EHL PSE0 GbE and PSE1 GbE to 32 bits DMA addressing + - net: dsa: bcm_sf2: put device node before return + - net: switchdev: don't set port_obj_info->handled true when -EOPNOTSUPP + - ibmvnic: Ensure that CRQ entry read are correctly ordered + - iommu/io-pgtable-arm: Support coherency for Mali LPAE + - drm/panfrost: Support cache-coherent integrations + - arm64: dts: meson: Describe G12b GPU as coherent + - arm64: Fix kernel address detection of __is_lm_address() + - arm64: Do not pass tagged addresses to __is_lm_address() + - ARM: 9025/1: Kconfig: CPU_BIG_ENDIAN depends on !LD_IS_LLD + - iommu/vt-d: Do not use flush-queue when caching-mode is on + - phy: cpcap-usb: Fix warning for missing regulator_disable + - tools/power/x86/intel-speed-select: Set scaling_max_freq to base_frequency + - tools/power/x86/intel-speed-select: Set higher of cpuinfo_max_freq or + base_frequency + - platform/x86: touchscreen_dmi: Add swap-x-y quirk for Goodix touchscreen on + Estar Beauty HD tablet + - platform/x86: intel-vbtn: Support for tablet mode on Dell Inspiron 7352 + - locking/lockdep: Avoid noinstr warning for DEBUG_LOCKDEP + - x86: __always_inline __{rd,wr}msr() + - scsi: scsi_transport_srp: Don't block target in failfast state + - scsi: libfc: Avoid invoking response handler twice if ep is already + completed + - scsi: fnic: Fix memleak in vnic_dev_init_devcmd2 + - ALSA: hda - add Intel DG1 PCI and HDMI ids + - ALSA: hda: Add Alderlake-S PCI ID and HDMI codec vid + - ALSA: hda: Add AlderLake-P PCI ID and HDMI codec vid + - objtool: Don't add empty symbols to the rbtree + - mac80211: fix incorrect strlen of .write in debugfs + - mac80211: fix fast-rx encryption check + - scsi: ibmvfc: Set default timeout to avoid crash during migration + - i2c: tegra: Create i2c_writesl_vi() to use with VI I2C for filling TX FIFO + - udf: fix the problem that the disc content is not displayed + - nvme: check the PRINFO bit before deciding the host buffer length + - nvme-rdma: avoid request double completion for concurrent nvme_rdma_timeout + - nvme-tcp: avoid request double completion for concurrent nvme_tcp_timeout + - nvme-pci: allow use of cmb on v1.4 controllers + - nvmet: set right status on error in id-ns handler + - platform/x86: thinkpad_acpi: Add P53/73 firmware to fan_quirk_table for dual + fan control + - selftests/powerpc: Only test lwm/stmw on big endian + - drm/amd/display: Update dram_clock_change_latency for DCN2.1 + - drm/amd/display: Change function decide_dp_link_settings to avoid infinite + looping + - drm/amd/display: Use hardware sequencer functions for PG control + - objtool: Don't fail the kernel build on fatal errors + - x86/cpu: Add Lakefield, Alder Lake and Rocket Lake models to the to Intel + CPU family + - x86/cpu: Add another Alder Lake CPU to the Intel family + - kthread: Extract KTHREAD_IS_PER_CPU + - workqueue: Restrict affinity change to rescuer + - Revert "Revert "block: end bio with BLK_STS_AGAIN in case of non-mq devs and + REQ_NOWAIT"" + - ACPI: thermal: Do not call acpi_thermal_check() directly + - USB: serial: cp210x: add pid/vid for WSDA-200-USB + - USB: serial: cp210x: add new VID/PID for supporting Teraoka AD2000 + - USB: serial: option: Adding support for Cinterion MV31 + - usb: host: xhci-plat: add priv quirk for skip PHY initialization + - usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720 + - USB: gadget: legacy: fix an error code in eth_bind() + - usb: gadget: aspeed: add missing of_node_put + - USB: usblp: don't call usb_set_interface if there's a single alt + - usb: renesas_usbhs: Clear pipe running flag in usbhs_pkt_pop() + - usb: dwc2: Fix endpoint direction check in ep_from_windex + - usb: dwc3: fix clock issue during resume in OTG mode + - usb: xhci-mtk: fix unreleased bandwidth data + - usb: xhci-mtk: skip dropping bandwidth of unchecked endpoints + - usb: xhci-mtk: break loop when find the endpoint to drop + - ARM: OMAP1: OSK: fix ohci-omap breakage + - arm64: dts: qcom: c630: keep both touchpad devices enabled + - arm64: dts: amlogic: meson-g12: Set FL-adj property value + - arm64: dts: rockchip: fix vopl iommu irq on px30 + - arm64: dts: rockchip: Use only supported PCIe link speed on Pinebook Pro + - ARM: dts: stm32: Connect card-detect signal on DHCOM + - ARM: dts: stm32: Disable WP on DHCOM uSD slot + - um: virtio: free vu_dev only with the contained struct device + - arm64: dts: meson: switch TFLASH_VDD_EN pin to open drain on Odroid-C4 + - r8169: work around RTL8125 UDP hw bug + - rxrpc: Fix deadlock around release of dst cached on udp tunnel + - arm64: dts: ls1046a: fix dcfg address range + - SUNRPC: Fix NFS READs that start at non-page-aligned offsets + - igc: set the default return value to -IGC_ERR_NVM in igc_write_nvm_srwr + - igc: check return value of ret_val in igc_config_fc_after_link_up + - i40e: Revert "i40e: don't report link up for a VF who hasn't enabled queues" + - ibmvnic: device remove has higher precedence over reset + - net/mlx5: Fix leak upon failure of rule creation + - net/mlx5e: Update max_opened_tc also when channels are closed + - net/mlx5e: Release skb in case of failure in tc update skb + - net: lapb: Copy the skb before sending a packet + - net: mvpp2: TCAM entry enable should be written after SRAM data + - r8169: fix WoL on shutdown if CONFIG_DEBUG_SHIRQ is set + - net: ipa: pass correct dma_handle to dma_free_coherent() + - ARM: dts: sun7i: a20: bananapro: Fix ethernet phy-mode + - nvmet-tcp: fix out-of-bounds access when receiving multiple h2cdata PDUs + - memblock: do not start bottom-up allocations with kernel_end + - ovl: fix dentry leak in ovl_get_redirect + - mac80211: fix station rate table updates on assoc + - gpiolib: free device name on error path to fix kmemleak + - fgraph: Initialize tracing_graph_pause at task creation + - tracing/kprobe: Fix to support kretprobe events on unloaded modules + - kretprobe: Avoid re-registration of the same kretprobe earlier + - tracing: Use pause-on-trace with the latency tracers + - libnvdimm/namespace: Fix visibility of namespace resource attribute + - libnvdimm/dimm: Avoid race between probe and available_slots_show() + - genirq: Prevent [devm_]irq_alloc_desc from returning irq 0 + - genirq/msi: Activate Multi-MSI early when MSI_FLAG_ACTIVATE_EARLY is set + - scripts: use pkg-config to locate libcrypto + - xhci: fix bounce buffer usage for non-sg list case + - RISC-V: Define MAXPHYSMEM_1GB only for RV32 + - cifs: report error instead of invalid when revalidating a dentry fails + - iommu: Check dev->iommu in dev_iommu_priv_get() before dereferencing it + - smb3: Fix out-of-bounds bug in SMB2_negotiate() + - smb3: fix crediting for compounding when only one request in flight + - mmc: sdhci-pltfm: Fix linking err for sdhci-brcmstb + - mmc: core: Limit retries when analyse of SDIO tuples fails + - Fix unsynchronized access to sev members through svm_register_enc_region + - drm/i915/display: Prevent double YUV range correction on HDR planes + - drm/i915: Extract intel_ddi_power_up_lanes() + - drm/i915: Power up combo PHY lanes for for HDMI as well + - drm/amd/display: Revert "Fix EDID parsing after resume from suspend" + - nvme-pci: avoid the deepest sleep state on Kingston A2000 SSDs + - KVM: SVM: Treat SVM as unsupported when running as an SEV guest + - KVM: x86: Allow guests to see MSR_IA32_TSX_CTRL even if tsx=off + - KVM: x86: fix CPUID entries returned by KVM_GET_CPUID2 ioctl + - KVM: x86: Update emulator context mode if SYSENTER xfers to 64-bit mode + - DTS: ARM: gta04: remove legacy spi-cs-high to make display work again + - ARM: dts; gta04: SPI panel chip select is active low + - ARM: footbridge: fix dc21285 PCI configuration accessors + - mm: hugetlbfs: fix cannot migrate the fallocated HugeTLB page + - mm: hugetlb: fix a race between freeing and dissolving the page + - mm: hugetlb: fix a race between isolating and freeing page + - mm: hugetlb: remove VM_BUG_ON_PAGE from page_huge_active + - mm, compaction: move high_pfn to the for loop scope + - mm: thp: fix MADV_REMOVE deadlock on shmem THP + - mm/filemap: add missing mem_cgroup_uncharge() to + __add_to_page_cache_locked() + - x86/build: Disable CET instrumentation in the kernel + - x86/debug: Fix DR6 handling + - x86/debug: Prevent data breakpoints on __per_cpu_offset + - x86/debug: Prevent data breakpoints on cpu_dr7 + - x86/apic: Add extra serialization for non-serializing MSRs + - Input: goodix - add support for Goodix GT9286 chip + - Input: xpad - sync supported devices with fork on GitHub + - Input: ili210x - implement pressure reporting for ILI251x + - md: Set prev_flush_start and flush_bio in an atomic way + - neighbour: Prevent a dead entry from updating gc_list + - net: ip_tunnel: fix mtu calculation + - udp: ipv4: manipulate network header of NATed UDP GRO fraglist + - net: dsa: mv88e6xxx: override existent unicast portvec in port_fdb_add + - net: sched: replaced invalid qdisc tree flush helper in qdisc_replace + - iwlwifi: mvm: don't send RFH_QUEUE_CONFIG_CMD with no queues + + * power off stress test will hang on the TGL machines (LP: #1919930) + - [Config] set SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 to n + + * eeh-basic.sh from powerpc in ubuntu_kernel_selftests failed with unexpected + operator on F-5.8 (LP: #1909428) + - selftests/powerpc: Make the test check in eeh-basic.sh posix compliant + + -- Stefan Bader Wed, 14 Apr 2021 15:23:21 +0200 + +linux (5.8.0-50.56) groovy; urgency=medium + + * overlayfs calls vfs_setxattr without cap_convert_nscap + - vfs: move cap_convert_nscap() call into vfs_setxattr() + + * CVE-2021-3492 + - SAUCE: shiftfs: free allocated memory in shiftfs_btrfs_ioctl_fd_replace() + error paths + - SAUCE: shiftfs: handle copy_to_user() return values correctly + + * CVE-2021-29154 + - SAUCE: bpf, x86: Validate computation of branch displacements for x86-64 + - SAUCE: bpf, x86: Validate computation of branch displacements for x86-32 + + -- Stefan Bader Mon, 12 Apr 2021 17:02:49 +0200 + +linux (5.8.0-49.55) groovy; urgency=medium + + * groovy/linux: 5.8.0-49.55 -proposed tracker (LP: #1921053) + + * selftests: bpf verifier fails after sanitize_ptr_alu fixes (LP: #1920995) + - bpf: Simplify alu_limit masking for pointer arithmetic + - bpf: Add sanity check for upper ptr_limit + - bpf, selftests: Fix up some test_verifier cases for unprivileged + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * improper memcg accounting causes NULL pointer derefs (LP: #1918668) + - SAUCE: Revert "mm: memcg/slab: optimize objcg stock draining" + + * kernel: Enable CONFIG_BPF_LSM on Ubuntu (LP: #1905975) + - [Config] Enable CONFIG_BPF_LSM + + * Groovy update: upstream stable patchset 2021-03-10 (LP: #1918516) + - gpio: mvebu: fix pwm .get_state period calculation + - HID: wacom: Correct NULL dereference on AES pen proximity + - media: v4l2-subdev.h: BIT() is not available in userspace + - RDMA/vmw_pvrdma: Fix network_hdr_type reported in WC + - kernel/io_uring: cancel io_uring before task works + - io_uring: dont kill fasync under completion_lock + - objtool: Don't fail on missing symbol table + - mm/page_alloc: add a missing mm_page_alloc_zone_locked() tracepoint + - mm: fix a race on nr_swap_pages + - tools: Factor HOSTCC, HOSTLD, HOSTAR definitions + - iwlwifi: provide gso_type to GSO packets + - tty: avoid using vfs_iocb_iter_write() for redirected console writes + - ACPI: sysfs: Prefer "compatible" modalias + - kernel: kexec: remove the lock operation of system_transition_mutex + - ALSA: hda/realtek: Enable headset of ASUS B1400CEPE with ALC256 + - ALSA: hda/via: Apply the workaround generically for Clevo machines + - parisc: Enable -mlong-calls gcc option by default when !CONFIG_MODULES + - media: cec: add stm32 driver + - media: hantro: Fix reset_raw_fmt initialization + - media: rc: fix timeout handling after switch to microsecond durations + - media: rc: ite-cir: fix min_timeout calculation + - media: rc: ensure that uevent can be read directly after rc device register + - ARM: dts: tbs2910: rename MMC node aliases + - ARM: dts: ux500: Reserve memory carveouts + - ARM: dts: imx6qdl-gw52xx: fix duplicate regulator naming + - wext: fix NULL-ptr-dereference with cfg80211's lack of commit() + - ASoC: AMD Renoir - refine DMI entries for some Lenovo products + - drm/i915: Always flush the active worker before returning from the wait + - drm/i915/gt: Always try to reserve GGTT address 0x0 + - drivers/nouveau/kms/nv50-: Reject format modifiers for cursor planes + - net: usb: qmi_wwan: added support for Thales Cinterion PLSx3 modem family + - s390: uv: Fix sysfs max number of VCPUs reporting + - s390/vfio-ap: No need to disable IRQ after queue reset + - PM: hibernate: flush swap writer after marking + - x86/entry: Emit a symbol for register restoring thunk + - efi/apple-properties: Reinstate support for boolean properties + - drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs + - drivers: soc: atmel: add null entry at the end of at91_soc_allowed_list[] + - btrfs: fix possible free space tree corruption with online conversion + - KVM: x86/pmu: Fix HW_REF_CPU_CYCLES event pseudo-encoding in + intel_arch_events[] + - KVM: x86/pmu: Fix UBSAN shift-out-of-bounds warning in intel_pmu_refresh() + - KVM: nVMX: Sync unsync'd vmcs02 state to vmcs12 on migration + - KVM: x86: get smi pending status correctly + - KVM: Forbid the use of tagged userspace addresses for memslots + - xen: Fix XenStore initialisation for XS_LOCAL + - leds: trigger: fix potential deadlock with libata + - arm64: dts: broadcom: Fix USB DMA address translation for Stingray + - mt7601u: fix kernel crash unplugging the device + - mt7601u: fix rx buffer refcounting + - iwlwifi: Fix IWL_SUBDEVICE_NO_160 macro to use the correct bit. + - drm/i915/gt: Clear CACHE_MODE prior to clearing residuals + - drm/i915/pmu: Don't grab wakeref when enabling events + - net/mlx5e: Fix IPSEC stats + - ARM: dts: imx6qdl-kontron-samx6i: fix pwms for lcd-backlight + - drm/nouveau/svm: fail NOUVEAU_SVM_INIT ioctl on unsupported devices + - drm/i915: Check for all subplatform bits + - drm/i915/selftest: Fix potential memory leak + - uapi: fix big endian definition of ipv6_rpl_sr_hdr + - KVM: Documentation: Fix spec for KVM_CAP_ENABLE_CAP_VM + - tee: optee: replace might_sleep with cond_resched + - xen-blkfront: allow discard-* nodes to be optional + - clk: mmp2: fix build without CONFIG_PM + - clk: qcom: gcc-sm250: Use floor ops for sdcc clks + - ARM: imx: build suspend-imx6.S with arm instruction set + - ARM: zImage: atags_to_fdt: Fix node names on added root nodes + - netfilter: nft_dynset: add timeout extension to template + - Revert "RDMA/mlx5: Fix devlink deadlock on net namespace deletion" + - xfrm: Fix oops in xfrm_replay_advance_bmp + - xfrm: fix disable_xfrm sysctl when used on xfrm interfaces + - xfrm: Fix wraparound in xfrm_policy_addr_delta() + - arm64: dts: ls1028a: fix the offset of the reset register + - ARM: dts: imx6qdl-kontron-samx6i: fix i2c_lcd/cam default status + - ARM: dts: imx6qdl-sr-som: fix some cubox-i platforms + - arm64: dts: imx8mp: Correct the gpio ranges of gpio3 + - firmware: imx: select SOC_BUS to fix firmware build + - RDMA/cxgb4: Fix the reported max_recv_sge value + - ASoC: Intel: Skylake: skl-topology: Fix OOPs ib skl_tplg_complete + - pNFS/NFSv4: Fix a layout segment leak in pnfs_layout_process() + - pNFS/NFSv4: Update the layout barrier when we schedule a layoutreturn + - iwlwifi: pcie: set LTR on more devices + - iwlwifi: pcie: use jiffies for memory read spin time limit + - iwlwifi: pcie: reschedule in long-running memory reads + - mac80211: pause TX while changing interface type + - ice: fix FDir IPv6 flexbyte + - ice: Implement flow for IPv6 next header (extension header) + - ice: update dev_addr in ice_set_mac_address even if HW filter exists + - ice: Don't allow more channels than LAN MSI-X available + - ice: Fix MSI-X vector fallback logic + - i40e: acquire VSI pointer only after VF is initialized + - igc: fix link speed advertising + - net/mlx5: Fix memory leak on flow table creation error flow + - net/mlx5e: E-switch, Fix rate calculation for overflow + - net/mlx5e: free page before return + - net/mlx5e: Reduce tc unsupported key print level + - net/mlx5e: Disable hw-tc-offload when MLX5_CLS_ACT config is disabled + - net/mlx5e: Fix CT rule + encap slow path offload and deletion + - net/mlx5e: Correctly handle changing the number of queues when the interface + is down + - net/mlx5e: Revert parameters on errors when changing trust state without + reset + - net/mlx5e: Revert parameters on errors when changing MTU and LRO state + without reset + - can: dev: prevent potential information leak in can_fill_info() + - ACPI/IORT: Do not blindly trust DMA masks from firmware + - iommu/amd: Use IVHD EFR for early initialization of IOMMU features + - iommu/vt-d: Correctly check addr alignment in qi_flush_dev_iotlb_pasid() + - nvme-multipath: Early exit if no path is available + - selftests: forwarding: Specify interface when invoking mausezahn + - rxrpc: Fix memory leak in rxrpc_lookup_local + - NFC: fix resource leak when target index is invalid + - NFC: fix possible resource leak + - ASoC: topology: Properly unregister DAI on removal + - ASoC: topology: Fix memory corruption in soc_tplg_denum_create_values() + - team: protect features update by RCU to avoid deadlock + - tcp: make TCP_USER_TIMEOUT accurate for zero window probes + - tcp: fix TLP timer not set when CA_STATE changes from DISORDER to OPEN + - ICMPv6: Add ICMPv6 Parameter Problem, code 3 definition + - IPv6: reply ICMP error if the first fragment don't include all headers + - iommu/vt-d: Gracefully handle DMAR units with no supported address widths + + * xfrm_policy.sh in net from ubuntu_kernel_selftests passed with failed sub- + cases (LP: #1909647) + - selftests: xfrm: fix test return value override issue in xfrm_policy.sh + + * CVE-2021-3347 + - futex: Remove put_futex_key() + - futex: Remove needless goto's + - futex: Replace pointless printk in fixup_owner() + - futex: Ensure the correct return value from futex_lock_pi() + - futex: Provide and use pi_state_update_owner() + - rtmutex: Remove unused argument from rt_mutex_proxy_unlock() + - futex: Use pi_state_update_owner() in put_pi_state() + - futex: Simplify fixup_pi_state_owner() + - futex: Handle faults correctly for PI futexes + + * CVE-2021-3348 + - nbd: freeze the queue while we're adding connections + + * [Regression] ubuntu_bpf failed to build on Groovy (LP: #1917609) + - SAUCE: partially revert "bpf: Zero-fill re-used per-cpu map element" + + * alsa/hda: the hdmi audio dosn't work on TGL machines (LP: #1917829) + - ALSA: hda/hdmi: let new platforms assign the pcm slot dynamically + + * Groovy update: upstream stable patchset 2021-03-05 (LP: #1917964) + - mtd: rawnand: gpmi: fix dst bit offset when extracting raw payload + - i2c: bpmp-tegra: Ignore unknown I2C_M flags + - platform/x86: i2c-multi-instantiate: Don't create platform device for + INT3515 ACPI nodes + - platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634 + - ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info() + - ALSA: hda/realtek - Limit int mic boost on Acer Aspire E5-575T + - ALSA: hda/via: Add minimum mute flag + - dm crypt: fix copy and paste bug in crypt_alloc_req_aead + - ACPI: scan: Make acpi_bus_get_device() clear return pointer on error + - btrfs: don't get an EINTR during drop_snapshot for reloc + - btrfs: do not double free backref nodes on error + - btrfs: fix lockdep splat in btrfs_recover_relocation + - btrfs: don't clear ret in btrfs_start_dirty_block_groups + - btrfs: send: fix invalid clone operations when cloning from the same file + and root + - writeback: Drop I_DIRTY_TIME_EXPIRE + - fs: fix lazytime expiration handling in __writeback_single_inode() + - pinctrl: ingenic: Fix JZ4760 support + - mmc: core: don't initialize block size from ext_csd if not present + - mmc: sdhci-of-dwcmshc: fix rpmb access + - mmc: sdhci-xenon: fix 1.8v regulator stabilization + - mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend + - dm: avoid filesystem lookup in dm_get_dev_t() + - dm integrity: fix a crash if "recalculate" used without "internal_hash" + - dm integrity: conditionally disable "recalculate" feature + - drm/atomic: put state on error path + - drm/syncobj: Fix use-after-free + - drm/amdgpu: remove gpu info firmware of green sardine + - drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case + - drm/i915/gt: Prevent use of engine->wa_ctx after error + - ASoC: Intel: haswell: Add missing pm_ops + - ASoC: rt711: mutex between calibration and power state changes + - SUNRPC: Handle TCP socket sends with kernel_sendpage() again + - HID: sony: select CONFIG_CRC32 + - dm integrity: select CRYPTO_SKCIPHER + - scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback + - scsi: qedi: Correct max length of CHAP secret + - scsi: scsi_debug: Fix memleak in scsi_debug_init() + - scsi: sd: Suppress spurious errors when WRITE SAME is being disabled + - riscv: Fix kernel time_init() + - riscv: Fix sifive serial driver + - riscv: Enable interrupts during syscalls with M-Mode + - HID: logitech-dj: add the G602 receiver + - HID: Ignore battery for Elan touchscreen on ASUS UX550 + - clk: tegra30: Add hda clock default rates to clock driver + - ALSA: hda/tegra: fix tegra-hda on tegra30 soc + - arm64: make atomic helpers __always_inline + - xen: Fix event channel callback via INTX/GSI + - x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery + - dts: phy: fix missing mdio device and probe failure of vsc8541-01 device + - riscv: defconfig: enable gpio support for HiFive Unleashed + - drm/amdgpu/psp: fix psp gfx ctrl cmds + - drm/amd/display: disable dcn10 pipe split by default + - HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode + - drm/amd/display: Fix to be able to stop crc calculation + - drm/nouveau/bios: fix issue shadowing expansion ROMs + - drm/nouveau/privring: ack interrupts the same way as RM + - drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields + - drm/nouveau/mmu: fix vram heap sizing + - drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0 + - io_uring: flush timeouts that should already have expired + - libperf tests: If a test fails return non-zero + - libperf tests: Fail when failing to get a tracepoint id + - RISC-V: Set current memblock limit + - RISC-V: Fix maximum allowed phsyical memory for RV32 + - pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting + - pinctrl: mediatek: Fix fallback call path + - scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression + - scsi: ufs: ufshcd-pltfrm depends on HAS_IOMEM + - crypto: omap-sham - Fix link error without crypto-engine + - powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S + - powerpc: Fix alignment bug within the init sections + - arm64: entry: remove redundant IRQ flag tracing + - drm/amdkfd: Fix out-of-bounds read in kdf_create_vcrat_image_cpu() + - i2c: octeon: check correct size of maximum RECV_LEN packet + - platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow- + list + - platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND + errors + - gpio: sifive: select IRQ_DOMAIN_HIERARCHY rather than depend on it + - selftests: net: fib_tests: remove duplicate log test + - can: dev: can_restart: fix use after free bug + - can: vxcan: vxcan_xmit: fix use after free bug + - can: peak_usb: fix use after free bugs + - perf evlist: Fix id index for heterogeneous systems + - i2c: sprd: depend on COMMON_CLK to fix compile tests + - iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread + - iio: ad5504: Fix setting power-down state + - counter:ti-eqep: remove floor + - cifs: do not fail __smb_send_rqst if non-fatal signals are pending + - irqchip/mips-cpu: Set IPI domain parent chip + - x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state + - x86/topology: Make __max_die_per_package available unconditionally + - x86/mmx: Use KFPU_387 for MMX string operations + - proc_sysctl: fix oops caused by incorrect command parameters + - mm: memcg/slab: optimize objcg stock draining + - io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state + - intel_th: pci: Add Alder Lake-S support + - intel_th: pci: Add Alder Lake CPU support + - intel_th: pci: Add Alder Lake-P support + - stm class: Fix module init return on allocation failure + - serial: mvebu-uart: fix tx lost characters at power off + - ehci: fix EHCI host controller initialization sequence + - USB: ehci: fix an interrupt calltrace error + - usb: gadget: aspeed: fix stop dma register setting. + - USB: gadget: dummy-hcd: Fix errors in port-reset handling + - usb: udc: core: Use lock when write to soft_connect + - [Config] updateconfigs for USB_BDC_PCI + - usb: bdc: Make bdc pci driver depend on BROKEN + - usb: cdns3: imx: fix writing read-only memory issue + - usb: cdns3: imx: fix can't create core device the second time issue + - xhci: make sure TRB is fully written before giving it to the controller + - xhci: tegra: Delay for disabling LFPS detector + - driver core: Extend device_is_dependent() + - x86/cpu/amd: Set __max_die_per_package on AMD + - cls_flower: call nla_ok() before nla_next() + - netfilter: rpfilter: mask ecn bits before fib lookup + - sh: dma: fix kconfig dependency for G2_DMA + - ASoC: SOF: Intel: fix page fault at probe if i915 init fails + - octeontx2-af: Fix missing check bugs in rvu_cgx.c + - net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext + - sh_eth: Fix power down vs. is_opened flag ordering + - cachefiles: Drop superfluous readpages aops NULL check + - lightnvm: fix memory leak when submit fails + - skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too + - kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow + - kasan: fix incorrect arguments passing in kasan_add_zero_shadow + - tcp: fix TCP socket rehash stats mis-accounting + - net_sched: gen_estimator: support large ewma log + - udp: mask TOS bits in udp_v4_early_demux() + - ipv6: create multicast route with RTPROT_KERNEL + - net_sched: avoid shift-out-of-bounds in tcindex_set_parms() + - net_sched: reject silly cell_log in qdisc_get_rtab() + - ipv6: set multicast flag on the multicast route + - net: mscc: ocelot: allow offloading of bridge on top of LAG + - net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled + - net: dsa: b53: fix an off by one in checking "vlan->vid" + - tcp: do not mess with cloned skbs in tcp_add_backlog() + - tcp: fix TCP_USER_TIMEOUT with zero window + - net: core: devlink: use right genl user_ptr when handling port param get/set + - pinctrl: qcom: Allow SoCs to specify a GPIO function that's not 0 + - pinctrl: qcom: No need to read-modify-write the interrupt status + - pinctrl: qcom: Properly clear "intr_ack_high" interrupts when unmasking + - pinctrl: qcom: Don't clear pending interrupts when enabling + - tty: implement write_iter + - tty: fix up hung_up_tty_write() conversion + - drm/i915/hdcp: Get conn while content_type changed + - seq_file: add seq_read_iter + - kernfs: implement ->read_iter + - kernfs: implement ->write_iter + - kernfs: wire up ->splice_read and ->splice_write + - fs/pipe: allow sendfile() to pipe again + - Commit 9bb48c82aced ("tty: implement write_iter") converted the tty layer to + use write_iter. Fix the redirected_tty_write declaration also in n_tty and + change the comparisons to use write_iter instead of write. also in n_tty and + change the comparisons to use write_iter instead of write. + + * Enforce CONFIG_DRM_BOCHS=m (LP: #1916290) + - [Config] Enforce CONFIG_DRM_BOCHS=m + + * Groovy update: upstream stable patchset 2021-02-25 (LP: #1916960) + - btrfs: reloc: fix wrong file extent type check to avoid false ENOENT + - btrfs: prevent NULL pointer dereference in extent_io_tree_panic + - ALSA: doc: Fix reference to mixart.rst + - ASoC: AMD Renoir - add DMI entry for Lenovo ThinkPad X395 + - ASoC: dapm: remove widget from dirty list on free + - x86/hyperv: check cpu mask after interrupt has been disabled + - drm/amdgpu: add green_sardine device id (v2) + - drm/amdgpu: fix DRM_INFO flood if display core is not supported (bug 210921) + - drm/amdgpu: add Green_Sardine APU flag + - drm/amdgpu: add green_sardine support for gpu_info and ip block setting (v2) + - drm/amdgpu: add soc15 common ip block support for green_sardine (v3) + - drm/amdgpu: add new device id for Renior + - drm/i915/gt: Limit VFE threads based on GT + - drm/i915/backlight: fix CPU mode backlight takeover on LPT + - drm/bridge: sii902x: Refactor init code into separate function + - dt-bindings: display: sii902x: Add supply bindings + - tracing/kprobes: Do the notrace functions check without kprobes on ftrace + - ext4: fix bug for rename with RENAME_WHITEOUT + - cifs: check pointer before freeing + - cifs: fix interrupted close commands + - riscv: return -ENOSYS for syscall -1 + - riscv: Fixup CONFIG_GENERIC_TIME_VSYSCALL + - mips: fix Section mismatch in reference + - mips: lib: uncached: fix non-standard usage of variable 'sp' + - MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB + - MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps + - MIPS: relocatable: fix possible boot hangup with KASLR enabled + - RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd() + - ACPI: scan: Harden acpi_device_add() against device ID overflows + - xen/privcmd: allow fetching resource sizes + - compiler.h: Raise minimum version of GCC to 5.1 for arm64 + - mm/hugetlb: fix potential missing huge page size info + - mm/process_vm_access.c: include compat.h + - dm raid: fix discard limits for raid1 + - dm snapshot: flush merged data before committing metadata + - dm integrity: fix flush with external metadata device + - dm integrity: fix the maximum number of arguments + - dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq + - stmmac: intel: change all EHL/TGL to auto detect phy addr + - r8152: Add Lenovo Powered USB-C Travel Hub + - btrfs: tree-checker: check if chunk item end overflows + - ext4: don't leak old mountpoint samples + - ARC: build: remove non-existing bootpImage from KBUILD_IMAGE + - ARC: build: add uImage.lzma to the top-level target + - ARC: build: add boot_targets to PHONY + - ARC: build: move symlink creation to arch/arc/Makefile to avoid race + - ARM: omap2: pmic-cpcap: fix maximum voltage to be consistent with defaults + on xt875 + - ath11k: fix crash caused by NULL rx_channel + - netfilter: ipset: fixes possible oops in mtype_resize + - btrfs: fix async discard stall + - btrfs: merge critical sections of discard lock in workfn + - btrfs: fix transaction leak and crash after RO remount caused by qgroup + rescan + - regulator: bd718x7: Add enable times + - ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram + - habanalabs/gaudi: retry loading TPC f/w on -EINTR + - habanalabs: register to pci shutdown callback + - habanalabs: Fix memleak in hl_device_reset + - hwmon: (pwm-fan) Ensure that calculation doesn't discard big period values + - lib/raid6: Let $(UNROLL) rules work with macOS userland + - spi: fix the divide by 0 error when calculating xfer waiting time + - arch/arc: add copy_user_page() to to fix build error on ARC + - misdn: dsp: select CONFIG_BITREVERSE + - net: ethernet: fs_enet: Add missing MODULE_LICENSE + - nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN + - nvme: avoid possible double fetch in handling CQE + - nvmet-rdma: Fix list_del corruption on queue establishment failure + - drm/amd/display: fix sysfs amdgpu_current_backlight_pwm NULL pointer issue + - drm/amdgpu: fix a GPU hang issue when remove device + - drm/amd/pm: fix the failure when change power profile for renoir + - drm/amdgpu: fix potential memory leak during navi12 deinitialization + - usb: typec: Fix copy paste error for NVIDIA alt-mode description + - iommu/vt-d: Fix lockdep splat in sva bind()/unbind() + - ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI + - drm/msm: Call msm_init_vram before binding the gpu + - ARM: picoxcell: fix missing interrupt-parent properties + - poll: fix performance regression due to out-of-line __put_user() + - bpf: Simplify task_file_seq_get_next() + - bpf: Save correct stopping point in file seq iteration + - cfg80211: select CONFIG_CRC32 + - iommu/vt-d: Update domain geometry in iommu_ops.at(de)tach_dev + - net/mlx5: Fix passing zero to 'PTR_ERR' + - net/mlx5: E-Switch, fix changing vf VLANID + - mm: don't put pinned pages into the swap cache + - perf intel-pt: Fix 'CPU too large' error + - dump_common_audit_data(): fix racy accesses to ->d_name + - ASoC: meson: axg-tdm-interface: fix loopback + - ASoC: meson: axg-tdmin: fix axg skew offset + - ASoC: Intel: fix error code cnl_set_dsp_D0() + - nvmet-rdma: Fix NULL deref when setting pi_enable and traddr INADDR_ANY + - nvme: don't intialize hwmon for discovery controllers + - nvme-tcp: fix possible data corruption with bio merges + - nvme-tcp: Fix warning with CONFIG_DEBUG_PREEMPT + - NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock + - pNFS: We want return-on-close to complete when evicting the inode + - pNFS: Mark layout for return if return-on-close was not sent + - pNFS: Stricter ordering of layoutget and layoutreturn + - NFS: Adjust fs_context error logging + - NFS/pNFS: Don't call pnfs_free_bucket_lseg() before removing the request + - NFS/pNFS: Don't leak DS commits in pnfs_generic_retry_commit() + - NFS/pNFS: Fix a leak of the layout 'plh_outstanding' counter + - NFS: nfs_delegation_find_inode_server must first reference the superblock + - NFS: nfs_igrab_and_active must first reference the superblock + - scsi: ufs: Fix possible power drain during system suspend + - ext4: fix superblock checksum failure when setting password salt + - RDMA/restrack: Don't treat as an error allocation ID wrapping + - RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp + - bnxt_en: Improve stats context resource accounting with RDMA driver loaded. + - RDMA/mlx5: Fix wrong free of blue flame register on error + - IB/mlx5: Fix error unwinding when set_has_smi_cap fails + - dm zoned: select CONFIG_CRC32 + - drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is + no reset-deassert MIPI-sequence + - drm/i915/icl: Fix initing the DSI DSC power refcount during HW readout + - drm/i915/gt: Restore clear-residual mitigations for Ivybridge, Baytrail + - mm, slub: consider rest of partial list if acquire_slab() fails + - iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev() + - net: sunrpc: interpret the return value of kstrtou32 correctly + - selftests: netfilter: Pass family parameter "-f" to conntrack tool + - dm: eliminate potential source of excessive kernel log noise + - ALSA: fireface: Fix integer overflow in transmit_midi_msg() + - ALSA: firewire-tascam: Fix integer overflow in midi_port_work() + - netfilter: conntrack: fix reading nf_conntrack_buckets + - netfilter: nf_nat: Fix memleak in nf_nat_init + - netfilter: nft_compat: remove flush counter optimization + - kbuild: enforce -Werror=return-type + - [Config] updateconfigs for KPROBE_EVENTS_ON_NOTRACE + - x86/hyperv: Initialize clockevents after LAPIC is initialized + - bpf: Fix signed_{sub,add32}_overflows type handling + - nfsd4: readdirplus shouldn't return parent of export + - bpf: Don't leak memory in bpf getsockopt when optlen == 0 + - bpf: Support PTR_TO_MEM{,_OR_NULL} register spilling + - bpf: Fix helper bpf_map_peek_elem_proto pointing to wrong callback + - net: ipa: modem: add missing SET_NETDEV_DEV() for proper sysfs links + - net: fix use-after-free when UDP GRO with shared fraglist + - udp: Prevent reuseport_select_sock from reading uninitialized socks + - netxen_nic: fix MSI/MSI-x interrupts + - net: ipv6: Validate GSO SKB before finish IPv6 processing + - tipc: fix NULL deref in tipc_link_xmit() + - mlxsw: core: Add validation of transceiver temperature thresholds + - mlxsw: core: Increase critical threshold for ASIC thermal zone + - net: mvpp2: Remove Pause and Asym_Pause support + - rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request + - esp: avoid unneeded kmap_atomic call + - net: dcb: Validate netlink message in DCB handler + - net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands + - rxrpc: Call state should be read with READ_ONCE() under some circumstances + - i40e: fix potential NULL pointer dereferencing + - net: stmmac: Fixed mtu channged by cache aligned + - net: sit: unregister_netdevice on newlink's error path + - net: stmmac: fix taprio schedule configuration + - net: stmmac: fix taprio configuration when base_time is in the past + - net: avoid 32 x truesize under-estimation for tiny skbs + - rxrpc: Fix handling of an unsupported token type in rxrpc_read() + - net: stmmac: use __napi_schedule() for PREEMPT_RT + - drm/panel: otm8009a: allow using non-continuous dsi clock + - mac80211: do not drop tx nulldata packets on encrypted links + - mac80211: check if atf has been disabled in __ieee80211_schedule_txq + - net: dsa: unbind all switches from tree when DSA master unbinds + - cxgb4/chtls: Fix tid stuck due to wrong update of qid + - spi: fsl: Fix driver breakage when SPI_CS_HIGH is not set in spi->mode + - spi: cadence: cache reference clock rate during probe + - usb: ohci: Make distrust_firmware param default to false + - elfcore: fix building with clang + - spi: npcm-fiu: simplify the return expression of npcm_fiu_probe() + - spi: npcm-fiu: Disable clock in probe error path + + * CVE-2021-20239 + - net, sctp, filter: remap copy_from_user failure error + + -- Stefan Bader Wed, 24 Mar 2021 10:27:36 +0100 + +linux (5.8.0-48.54) groovy; urgency=medium + + * CVE-2020-27170 + - bpf: Fix off-by-one for area size in creating mask to left + + * CVE-2020-27171 + - bpf: Prohibit alu ops for pointer types not defining ptr_limit + + -- Kleber Sacilotto de Souza Fri, 19 Mar 2021 14:26:30 +0100 + +linux (5.8.0-47.53) groovy; urgency=medium + + * binary assembly failures with CONFIG_MODVERSIONS present (LP: #1919315) + - [Packaging] quiet (nomially) benign errors in BUILD script + + * CVE-2021-3444 + - bpf: Fix 32 bit src register truncation on div/mod + - bpf: Fix truncation handling for mod32 dst reg wrt zero + + * CVE-2021-27365 + - scsi: iscsi: Verify lengths on passthrough PDUs + - sysfs: Add sysfs_emit and sysfs_emit_at to format sysfs output + - scsi: iscsi: Ensure sysfs attributes are limited to PAGE_SIZE + + * CVE-2021-27363 // CVE-2021-27364 + - scsi: iscsi: Restrict sessions and handles to admin capabilities + + -- Stefan Bader Wed, 17 Mar 2021 10:19:07 +0100 + +linux (5.8.0-45.51) groovy; urgency=medium + + * groovy/linux: 5.8.0-45.51 -proposed tracker (LP: #1916143) + + * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716) + - [Config] enable CONFIG_MODVERSIONS=y + - [Packaging] build canonical-certs.pem from branch/arch certs + - [Config] add Canonical Livepatch Service key to SYSTEM_TRUSTED_KEYS + - [Config] add ubuntu-drivers key to SYSTEM_TRUSTED_KEYS + - [Config] Allow ASM_MODVERSIONS and MODULE_REL_CRCS + + * CVE-2021-20194 + - bpf, cgroup: Fix optlen WARN_ON_ONCE toctou + - bpf, cgroup: Fix problematic bounds check + + * Missing device id for Intel TGL-H ISH [8086:43fc] in intel-ish-hid driver + (LP: #1914543) + - HID: intel-ish-hid: ipc: Add Tiger Lake H PCI device ID + + * Prevent thermal shutdown during boot process (LP: #1906168) + - thermal/core: Emit a warning if the thermal zone is updated without ops + - thermal/core: Add critical and hot ops + - thermal/drivers/acpi: Use hot and critical ops + - thermal/drivers/rcar: Remove notification usage + - thermal: int340x: Fix unexpected shutdown at critical temperature + - thermal: intel: pch: Fix unexpected shutdown at critical temperature + + * geneve overlay network on vlan interface broken with offload enabled + (LP: #1914447) + - net/mlx5e: Fix SWP offsets when vlan inserted by driver + + * Groovy update: upstream stable patchset 2021-02-11 (LP: #1915473) + - net: cdc_ncm: correct overhead in delayed_ndp_size + - net: hns3: fix the number of queues actually used by ARQ + - net: hns3: fix a phy loopback fail issue + - net: stmmac: dwmac-sun8i: Balance internal PHY resource references + - net: stmmac: dwmac-sun8i: Balance internal PHY power + - net: vlan: avoid leaks on register_vlan_dev() failures + - net/sonic: Fix some resource leaks in error handling paths + - net: ipv6: fib: flush exceptions when purging route + - tools: selftests: add test for changing routes with PTMU exceptions + - net: fix pmtu check in nopmtudisc mode + - net: ip: always refragment ip defragmented packets + - octeontx2-af: fix memory leak of lmac and lmac->name + - nexthop: Fix off-by-one error in error path + - nexthop: Unlink nexthop group entry in error path + - s390/qeth: fix L2 header access in qeth_l3_osa_features_check() + - net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE + - net/mlx5: Use port_num 1 instead of 0 when delete a RoCE address + - net/mlx5e: ethtool, Fix restriction of autoneg with 56G + - chtls: Fix hardware tid leak + - chtls: Remove invalid set_tcb call + - chtls: Fix panic when route to peer not configured + - chtls: Replace skb_dequeue with skb_peek + - chtls: Added a check to avoid NULL pointer dereference + - chtls: Fix chtls resources release sequence + - HID: wacom: Fix memory leakage caused by kfifo_alloc + - ARM: OMAP2+: omap_device: fix idling of devices during probe + - i2c: sprd: use a specific timeout to avoid system hang up issue + - dmaengine: dw-edma: Fix use after free in dw_edma_alloc_chunk() + - can: tcan4x5x: fix bittiming const, use common bittiming from m_can driver + - can: m_can: m_can_class_unregister(): remove erroneous m_can_clk_stop() + - can: kvaser_pciefd: select CONFIG_CRC32 + - cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get() + - spi: stm32: FIFO threshold level - fix align packet size + - i2c: i801: Fix the i2c-mux gpiod_lookup_table not being properly terminated + - dmaengine: mediatek: mtk-hsdma: Fix a resource leak in the error handling + path of the probe function + - dmaengine: xilinx_dma: check dma_async_device_register return value + - dmaengine: xilinx_dma: fix incompatible param warning in _child_probe() + - dmaengine: xilinx_dma: fix mixed_enum_type coverity warning + - qed: select CONFIG_CRC32 + - wil6210: select CONFIG_CRC32 + - block: rsxx: select CONFIG_CRC32 + - lightnvm: select CONFIG_CRC32 + - iommu/intel: Fix memleak in intel_irq_remapping_alloc + - bpftool: Fix compilation failure for net.o with older glibc + - net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups + - net/mlx5e: Fix two double free cases + - regmap: debugfs: Fix a memory leak when calling regmap_attach_dev + - wan: ds26522: select CONFIG_BITREVERSE + - regulator: qcom-rpmh-regulator: correct hfsmps515 definition + - net: mvpp2: disable force link UP during port init procedure + - KVM: arm64: Don't access PMCR_EL0 when no PMU is available + - block: fix use-after-free in disk_part_iter_next + - net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed + packet + - regmap: debugfs: Fix a reversed if statement in regmap_debugfs_init() + - drm/panfrost: Don't corrupt the queue mutex on open/close + - scsi: ufs: Fix -Wsometimes-uninitialized warning + - btrfs: skip unnecessary searches for xattrs when logging an inode + - net: stmmac: dwmac-sun8i: Fix probe error handling + - net: stmmac: dwmac-sun8i: Balance syscon (de)initialization + - net: bareudp: add missing error handling for bareudp_link_config() + - ptp: ptp_ines: prevent build when HAS_IOMEM is not set + - chtls: Avoid unnecessary freeing of oreq pointer + - nexthop: Bounce NHA_GATEWAY in FDB nexthop groups + - net/mlx5e: In skb build skip setting mark in switchdev mode + - ionic: start queues before announcing link up + - fanotify: Fix sys_fanotify_mark() on native x86-32 + - spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case + - i2c: mediatek: Fix apdma and i2c hand-shake timeout + - interconnect: imx: Add a missing of_node_put after of_device_is_available + - dmaengine: milbeaut-xdmac: Fix a resource leak in the error handling path of + the probe function + - arm64: mm: Fix ARCH_LOW_ADDRESS_LIMIT when !CONFIG_ZONE_DMA + - phy: dp83640: select CONFIG_CRC32 + - zonefs: select CONFIG_CRC32 + - iommu/vt-d: Fix misuse of ALIGN in qi_flush_piotlb() + - nvme-tcp: Fix possible race of io_work and direct send + - arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST + - drm/i915/dp: Track pm_qos per connector + - net: mvneta: fix error message when MTU too large for XDP + - selftests: fib_nexthops: Fix wrong mausezahn invocation + - block/rnbd-clt: avoid module unload race with close confirmation + - drm/panfrost: Remove unused variables in panfrost_job_close() + - tools headers UAPI: Sync linux/fscrypt.h with the kernel sources + + * Fix the video can't output through WD19TB connected on TGL's Type-C port + during cold-boot (LP: #1913372) + - drm/dp/mst: Export drm_dp_get_vc_payload_bw() + - drm/i915: Fix the MST PBN divider calculation + + * Fix regression introduced by codec PM change (LP: #1912676) + - ASoC: SOF: Intel: hda: Resume codec to do jack detection + - ASoC: SOF: Intel: hda: Modify existing helper to disable WAKEEN + - ASoC: SOF: Intel: hda: Avoid checking jack on system suspend + - ALSA: hda: Balance runtime/system PM if direct-complete is disabled + + * Restore palm ejection on multi-input devices (LP: #1913520) + - HID: multitouch: Apply MT_QUIRK_CONFIDENCE quirk for multi-input devices + + * intel-hid is not loaded on new Intel platform (LP: #1907160) + - platform/x86: intel-hid: add Rocket Lake ACPI device ID + + * Remove scary stack trace from Realtek WiFi driver (LP: #1913263) + - rtw88: reduce the log level for failure of tx report + + * Groovy update: upstream stable patchset 2021-02-05 (LP: #1914832) + - i40e: Fix Error I40E_AQ_RC_EINVAL when removing VFs + - iavf: fix double-release of rtnl_lock + - net/sched: sch_taprio: ensure to reset/destroy all child qdiscs + - net: mvpp2: Add TCAM entry to drop flow control pause frames + - net: mvpp2: prs: fix PPPoE with ipv6 packet parse + - net: systemport: set dev->max_mtu to UMAC_MAX_MTU_SIZE + - ethernet: ucc_geth: fix use-after-free in ucc_geth_remove() + - ethernet: ucc_geth: set dev->max_mtu to 1518 + - ionic: account for vlan tag len in rx buffer len + - atm: idt77252: call pci_disable_device() on error path + - net: mvpp2: Fix GoP port 3 Networking Complex Control configurations + - ibmvnic: fix login buffer memory leak + - ibmvnic: continue fatal error reset after passive init + - net: ethernet: mvneta: Fix error handling in mvneta_probe + - virtio_net: Fix recursive call to cpus_read_lock() + - net/ncsi: Use real net-device for response handler + - net: ethernet: Fix memleak in ethoc_probe + - net-sysfs: take the rtnl lock when storing xps_cpus + - net-sysfs: take the rtnl lock when accessing xps_cpus_map and num_tc + - net-sysfs: take the rtnl lock when storing xps_rxqs + - net-sysfs: take the rtnl lock when accessing xps_rxqs_map and num_tc + - net: ethernet: ti: cpts: fix ethtool output when no ptp_clock registered + - tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS + - bnxt_en: Check TQM rings for maximum supported value. + - net: mvpp2: fix pkt coalescing int-threshold configuration + - bnxt_en: Fix AER recovery. + - ipv4: Ignore ECN bits for fib lookups in fib_compute_spec_dst() + - net: sched: prevent invalid Scell_log shift count + - net: hns: fix return value check in __lb_other_process() + - erspan: fix version 1 check in gre_parse_header() + - net: hdlc_ppp: Fix issues when mod_timer is called while timer is running + - bareudp: set NETIF_F_LLTX flag + - bareudp: Fix use of incorrect min_headroom size + - vhost_net: fix ubuf refcount incorrectly when sendmsg fails + - r8169: work around power-saving bug on some chip versions + - net: dsa: lantiq_gswip: Enable GSWIP_MII_CFG_EN also for internal PHYs + - net: dsa: lantiq_gswip: Fix GSWIP_MII_CFG(p) register access + - CDC-NCM: remove "connected" log message + - ibmvnic: fix: NULL pointer dereference. + - net: usb: qmi_wwan: add Quectel EM160R-GL + - stmmac: intel: Add PCI IDs for TGL-H platform + - workqueue: Kick a worker based on the actual activation of delayed works + - scsi: ufs: Fix wrong print message in dev_err() + - scsi: ufs-pci: Fix restore from S4 for Intel controllers + - scsi: ufs-pci: Ensure UFS device is in PowerDown mode for suspend-to-disk + ->poweroff() + - scsi: ufs-pci: Fix recovery from hibernate exit errors for Intel controllers + - blk-mq: remove the BLK_MQ_REQ_INTERNAL flag + - scsi: block: Introduce BLK_MQ_REQ_PM + - scsi: ide: Do not set the RQF_PREEMPT flag for sense requests + - scsi: ide: Mark power management requests with RQF_PM instead of RQF_PREEMPT + - scsi: scsi_transport_spi: Set RQF_PM for domain validation commands + - scsi: core: Only process PM requests if rpm_status != RPM_ACTIVE + - local64.h: make mandatory + - lib/genalloc: fix the overflow when size is too big + - depmod: handle the case of /sbin/depmod without /sbin in PATH + - scsi: ufs: Clear UAC for FFU and RPMB LUNs + - kbuild: don't hardcode depmod path + - Bluetooth: revert: hci_h5: close serdev device and free hu in h5_close + - scsi: block: Remove RQF_PREEMPT and BLK_MQ_REQ_PREEMPT + - scsi: block: Do not accept any requests while suspended + - crypto: ecdh - avoid buffer overflow in ecdh_set_secret() + - crypto: asym_tpm: correct zero out potential secrets + - powerpc: Handle .text.{hot,unlikely}.* in linker script + - Staging: comedi: Return -EFAULT if copy_to_user() fails + - staging: mt7621-dma: Fix a resource leak in an error handling path + - usb: gadget: enable super speed plus + - USB: cdc-acm: blacklist another IR Droid device + - USB: cdc-wdm: Fix use after free in service_outstanding_interrupt(). + - usb: dwc3: meson-g12a: disable clk on error handling path in probe + - usb: dwc3: gadget: Clear wait flag on dequeue + - usb: dwc3: ulpi: Use VStsDone to detect PHY regs access completion + - usb: dwc3: ulpi: Replace CPU-based busyloop with Protocol-based one + - usb: dwc3: ulpi: Fix USB2.0 HS/FS/LS PHY suspend regression + - usb: chipidea: ci_hdrc_imx: add missing put_device() call in + usbmisc_get_init_data() + - USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set + - usb: usbip: vhci_hcd: protect shift size + - usb: uas: Add PNY USB Portable SSD to unusual_uas + - USB: serial: iuu_phoenix: fix DMA from stack + - USB: serial: option: add LongSung M5710 module support + - USB: serial: option: add Quectel EM160R-GL + - USB: yurex: fix control-URB timeout handling + - USB: usblp: fix DMA to stack + - ALSA: usb-audio: Fix UBSAN warnings for MIDI jacks + - usb: gadget: select CONFIG_CRC32 + - USB: Gadget: dummy-hcd: Fix shift-out-of-bounds bug + - usb: gadget: f_uac2: reset wMaxPacketSize + - usb: gadget: function: printer: Fix a memory leak for interface descriptor + - usb: gadget: u_ether: Fix MTU size mismatch with RX packet size + - USB: gadget: legacy: fix return error code in acm_ms_bind() + - usb: gadget: Fix spinlock lockup on usb_function_deactivate + - usb: gadget: configfs: Preserve function ordering after bind failure + - usb: gadget: configfs: Fix use-after-free issue with udc_name + - USB: serial: keyspan_pda: remove unused variable + - hwmon: (amd_energy) fix allocation of hwmon_channel_info config + - mm: make wait_on_page_writeback() wait for multiple pending writebacks + - x86/mm: Fix leak of pmd ptlock + - kvm: check tlbs_dirty directly + - task_work: cleanup notification modes + - x86/resctrl: Use an IPI instead of task_work_add() to update PQR_ASSOC MSR + - x86/resctrl: Don't move a task to the same resource group + - blk-iocost: fix NULL iocg deref from racing against initialization + - ALSA: hda/via: Fix runtime PM for Clevo W35xSS + - ALSA: hda/conexant: add a new hda codec CX11970 + - ALSA: hda/realtek - Fix speaker volume control on Lenovo C940 + - ALSA: hda/realtek: Add mute LED quirk for more HP laptops + - ALSA: hda/realtek: Add two "Intel Reference board" SSID in the ALC256. + - iommu/vt-d: Move intel_iommu info from struct intel_svm to struct + intel_svm_dev + - btrfs: send: fix wrong file path when there is an inode with a pending rmdir + - Revert "device property: Keep secondary firmware node secondary by type" + - dmabuf: fix use-after-free of dmabuf's file->f_inode + - arm64: link with -z norelro for LLD or aarch64-elf + - drm/i915: clear the shadow batch + - netfilter: x_tables: Update remaining dereference to RCU + - netfilter: ipset: fix shift-out-of-bounds in htable_bits() + - netfilter: xt_RATEEST: reject non-null terminated string from userspace + - netfilter: nft_dynset: report EOPNOTSUPP on missing set feature + - dmaengine: idxd: off by one in cleanup code + - x86/mtrr: Correct the range check before performing MTRR type lookups + - KVM: x86: fix shift out of bounds reported by UBSAN + - rtlwifi: rise completion at the last step of firmware callback + + * Groovy update: upstream stable patchset 2021-02-03 (LP: #1914472) + - net/sched: sch_taprio: reset child qdiscs before freeing them + - mptcp: fix security context on server socket + - ethtool: fix error paths in ethnl_set_channels() + - ethtool: fix string set id check + - md/raid10: initialize r10_bio->read_slot before use. + - drm/amd/display: Add get_dig_frontend implementation for DCEx + - io_uring: close a small race gap for files cancel + - jffs2: Allow setting rp_size to zero during remounting + - jffs2: Fix NULL pointer dereference in rp_size fs option parsing + - scsi: block: Fix a race in the runtime power management code + - mm/hugetlb: fix deadlock in hugetlb_cow error path + - mm: memmap defer init doesn't work as expected + - lib/zlib: fix inflating zlib streams on s390 + - uapi: move constants from to + - tools headers UAPI: Sync linux/const.h with the kernel headers + - cgroup: Fix memory leak when parsing multiple source parameters + - zlib: move EXPORT_SYMBOL() and MODULE_LICENSE() out of dfltcc_syms.c + - scsi: cxgb4i: Fix TLS dependency + - Bluetooth: hci_h5: close serdev device and free hu in h5_close + - fbcon: Disable accelerated scrolling + - reiserfs: add check for an invalid ih_entry_count + - misc: vmw_vmci: fix kernel info-leak by initializing dbells in + vmci_ctx_get_chkpt_doorbells() + - media: gp8psk: initialize stats at power control logic + - f2fs: fix shift-out-of-bounds in sanity_check_raw_super() + - ALSA: seq: Use bool for snd_seq_queue internal flags + - ALSA: rawmidi: Access runtime->avail always in spinlock + - bfs: don't use WARNING: string when it's just info. + - ext4: check for invalid block size early when mounting a file system + - fcntl: Fix potential deadlock in send_sig{io, urg}() + - rtc: sun6i: Fix memleak in sun6i_rtc_clk_init + - module: set MODULE_STATE_GOING state when a module fails to load + - quota: Don't overflow quota file offsets + - rtc: pl031: fix resource leak in pl031_probe + - powerpc: sysdev: add missing iounmap() on error in mpic_msgr_probe() + - i3c master: fix missing destroy_workqueue() on error in i3c_master_register + - NFSv4: Fix a pNFS layout related use-after-free race when freeing the inode + - f2fs: avoid race condition for shrinker count + - module: delay kobject uevent until after module init call + - fs/namespace.c: WARN if mnt_count has become negative + - watchdog: rti-wdt: fix reference leak in rti_wdt_probe + - um: random: Register random as hwrng-core device + - um: ubd: Submit all data segments atomically + - ceph: fix inode refcount leak when ceph_fill_inode on non-I_NEW inode fails + - drm/amd/display: updated wm table for Renoir + - tick/sched: Remove bogus boot "safety" check + - s390: always clear kernel stack backchain before calling functions + - io_uring: remove racy overflow list fast checks + - ALSA: pcm: Clear the full allocated memory at hw_params + - dm verity: skip verity work if I/O error when system is shutting down + - rtc: pcf2127: move watchdog initialisation to a separate function + - rtc: pcf2127: only use watchdog when explicitly available + - dt-bindings: rtc: add reset-source property + - kdev_t: always inline major/minor helper functions + - ALSA: hda/realtek - Modify Dell platform name + - scsi: ufs: Allow an error return value from ->device_reset() + - scsi: ufs: Re-enable WriteBooster after device reset + - RDMA/siw,rxe: Make emulated devices virtual in the device tree + - fuse: fix bad inode + - rwsem: Implement down_read_killable_nested + - rwsem: Implement down_read_interruptible + - exec: Transform exec_update_mutex into a rw_semaphore + - mwifiex: Fix possible buffer overflows in mwifiex_cmd_802_11_ad_hoc_start + + -- Stefan Bader Fri, 19 Feb 2021 10:59:43 +0100 + +linux (5.8.0-44.50) groovy; urgency=medium + + * groovy/linux: 5.8.0-44.50 -proposed tracker (LP: #1914805) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - update dkms package versions + + * Introduce the new NVIDIA 460-server series and update the 460 series + (LP: #1913200) + - [Config] dkms-versions -- drop NVIDIA 435 455 and 440-server + - [Config] dkms-versions -- add the 460-server nvidia driver + + * [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541) + - Revert "UBUNTU: SAUCE: e1000e: bump up timeout to wait when ME un-configure + ULP mode" + - e1000e: Only run S0ix flows if shutdown succeeded + - Revert "e1000e: disable s0ix entry and exit flows for ME systems" + - e1000e: Export S0ix flags to ethtool + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) // + [SRU][G/H/U/OEM-5.10] re-enable s0ix of e1000e (LP: #1910541) + - e1000e: bump up timeout to wait when ME un-configures ULP mode + + * Cannot probe sata disk on sata controller behind VMD: ata1.00: failed to + IDENTIFY (I/O error, err_mask=0x4) (LP: #1894778) + - PCI: vmd: Offset Client VMD MSI-X vectors + + * Enable mute and micmute LED on HP EliteBook 850 G7 (LP: #1910102) + - ALSA: hda/realtek: Enable mute and micmute LED on HP EliteBook 850 G7 + + * SYNA30B4:00 06CB:CE09 Mouse on HP EliteBook 850 G7 not working at all + (LP: #1908992) + - HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device + + * HD Audio Device PCI ID for the Intel Cometlake-R platform (LP: #1912427) + - SAUCE: ALSA: hda: Add Cometlake-R PCI ID + + * switch to an autogenerated nvidia series based core via dkms-versions + (LP: #1912803) + - [Packaging] nvidia -- use dkms-versions to define versions built + - [Packaging] update-version-dkms -- maintain flags fields + - [Config] dkms-versions -- add transitional/skip information for nvidia + packages + + * udpgro.sh in net from ubuntu_kernel_selftests seems not reflecting sub-test + result (LP: #1908499) + - selftests: fix the return value for UDP GRO test + + * [UBUNTU 21.04] vfio: pass DMA availability information to userspace + (LP: #1907421) + - vfio/type1: Refactor vfio_iommu_type1_ioctl() + - vfio iommu: Add dma available capability + + * qede: Kubernetes Internal DNS Failure due to QL41xxx NIC not supporting IPIP + tx csum offload (LP: #1909062) + - qede: fix offload for IPIP tunnel packets + + * Use DCPD to control HP DreamColor panel (LP: #1911001) + - SAUCE: drm/dp: Another HP DreamColor panel brigntness fix + + * Fix right sounds and mute/micmute LEDs for HP ZBook Fury 15/17 G7 Mobile + Workstation (LP: #1910561) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines + + * Ubuntu 20.04 - multicast counter is not increased in ip -s (LP: #1901842) + - net/mlx5e: Fix multicast counter not up-to-date in "ip -s" + + * eeh-basic.sh in powerpc from ubuntu_kernel_selftests timeout with 5.4 P8 / + P9 (LP: #1882503) + - selftests/powerpc/eeh: disable kselftest timeout setting for eeh-basic + + * DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639) + - Input: i8042 - unbreak Pegatron C15B + + * update ENA driver, incl. new ethtool stats (LP: #1910291) + - net: ena: ethtool: convert stat_offset to 64 bit resolution + - net: ena: ethtool: Add new device statistics + - net: ena: ethtool: add stats printing to XDP queues + - net: ena: xdp: add queue counters for xdp actions + - net: ena: Change license into format to SPDX in all files + - net: ena: Change log message to netif/dev function + - net: ena: Remove redundant print of placement policy + - net: ena: Change RSS related macros and variables names + - net: ena: Fix all static chekers' warnings + - drivers/net/ethernet: remove incorrectly formatted doc + - net: ena: Capitalize all log strings and improve code readability + + * Groovy update: upstream stable patchset 2021-01-15 (LP: #1912027) + - net: ipconfig: Avoid spurious blank lines in boot log + - x86/split-lock: Avoid returning with interrupts enabled + - exfat: Avoid allocating upcase table using kcalloc() + - soc/tegra: fuse: Fix index bug in get_process_id + - usb: mtu3: fix memory corruption in mtu3_debugfs_regset() + - USB: serial: option: add interface-number sanity check to flag handling + - USB: gadget: f_acm: add support for SuperSpeed Plus + - USB: gadget: f_midi: setup SuperSpeed Plus descriptors + - usb: gadget: f_fs: Re-use SS descriptors for SuperSpeedPlus + - USB: gadget: f_rndis: fix bitrate for SuperSpeed and above + - usb: chipidea: ci_hdrc_imx: Pass DISABLE_DEVICE_STREAMING flag to imx6ul + - ARM: dts: exynos: fix roles of USB 3.0 ports on Odroid XU + - ARM: dts: exynos: fix USB 3.0 VBUS control and over-current pins on + Exynos5410 + - ARM: dts: exynos: fix USB 3.0 pins supply being turned off on Odroid XU + - coresight: tmc-etf: Fix NULL ptr dereference in tmc_enable_etf_sink_perf() + - coresight: tmc-etr: Check if page is valid before dma_map_page() + - coresight: tmc-etr: Fix barrier packet insertion for perf buffer + - coresight: etb10: Fix possible NULL ptr dereference in etb_enable_perf() + - f2fs: fix to seek incorrect data offset in inline data file + - scsi: megaraid_sas: Check user-provided offsets + - HID: i2c-hid: add Vero K147 to descriptor override + - serial_core: Check for port state when tty is in error state + - fscrypt: remove kernel-internal constants from UAPI header + - fscrypt: rename DCACHE_ENCRYPTED_NAME to DCACHE_NOKEY_NAME + - fscrypt: add fscrypt_is_nokey_name() + - ubifs: prevent creating duplicate encrypted filenames + - ext4: prevent creating duplicate encrypted filenames + - f2fs: prevent creating duplicate encrypted filenames + - Bluetooth: Fix slab-out-of-bounds read in hci_le_direct_adv_report_evt() + - quota: Sanity-check quota file headers on load + - fs: quota: fix array-index-out-of-bounds bug by passing correct argument to + vfs_cleanup_quota_inode() + - media: msi2500: assign SPI bus number dynamically + - crypto: af_alg - avoid undefined behavior accessing salg_name + - nl80211: validate key indexes for cfg80211_registered_device + - md: fix a warning caused by a race between concurrent md_ioctl()s + - drm/gma500: fix double free of gma_connector + - drm/aspeed: Fix Kconfig warning & subsequent build errors + - drm/mcde: Fix handling of platform_get_irq() error + - drm/tve200: Fix handling of platform_get_irq() error + - arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node + - arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node + - soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains() + - soc: mediatek: Check if power domains can be powered on at boot time + - arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value + - arm64: dts: ipq6018: update the reserved-memory node + - soc: qcom: geni: More properly switch to DMA mode + - Revert "i2c: i2c-qcom-geni: Fix DMA transfer race" + - RDMA/bnxt_re: Set queue pair state when being queried + - rtc: pcf2127: fix pcf2127_nvmem_read/write() returns + - selinux: fix error initialization in inode_doinit_with_dentry() + - ARM: dts: aspeed-g6: Fix the GPIO memory size + - ARM: dts: aspeed: s2600wf: Fix VGA memory region location + - RDMA/core: Fix error return in _ib_modify_qp() + - RDMA/rxe: Compute PSN windows correctly + - x86/mm/ident_map: Check for errors from ident_pud_init() + - ARM: p2v: fix handling of LPAE translation in BE mode + - RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed + - RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established + - RDMA/rtrs-srv: Don't guard the whole __alloc_srv with srv_mutex + - x86/apic: Fix x2apic enablement without interrupt remapping + - sched/deadline: Fix sched_dl_global_validate() + - sched: Reenable interrupts in do_sched_yield() + - drm/amdgpu: fix incorrect enum type + - crypto: talitos - Endianess in current_desc_hdr() + - crypto: talitos - Fix return type of current_desc_hdr() + - crypto: inside-secure - Fix sizeof() mismatch + - ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode + - ARM: dts: aspeed: tiogapass: Remove vuart + - drm/amdgpu: fix build_coefficients() argument + - powerpc/64: Set up a kernel stack for secondaries before cpu_restore() + - spi: img-spfi: fix reference leak in img_spfi_resume + - f2fs: call f2fs_get_meta_page_retry for nat page + - RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr() + - drm/msm/dsi_pll_10nm: restore VCO rate during restore_state + - spi: spi-mem: fix reference leak in spi_mem_access_start + - scsi: aacraid: Improve compat_ioctl handlers + - ASoC: pcm: DRAIN support reactivation + - drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe + - crypto: arm64/poly1305-neon - reorder PAC authentication with SP update + - selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling + - spi: stm32: fix reference leak in stm32_spi_resume + - x86/mce: Correct the detection of invalid notifier priorities + - drm/edid: Fix uninitialized variable in drm_cvt_modes() + - ath11k: Initialize complete alpha2 for regulatory change + - ath11k: Fix number of rules in filtered ETSI regdomain + - brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free} + - arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7 + - arm64: dts: exynos: Correct psci compatible used on Exynos7 + - drm/panel: simple: Add flags to boe_nv133fhm_n61 + - Bluetooth: Fix null pointer dereference in hci_event_packet() + - Bluetooth: hci_h5: fix memory leak in h5_close + - spi: stm32-qspi: fix reference leak in stm32 qspi operations + - spi: spi-ti-qspi: fix reference leak in ti_qspi_setup + - spi: mt7621: fix missing clk_disable_unprepare() on error in + mt7621_spi_probe + - spi: tegra20-slink: fix reference leak in slink ops of tegra20 + - spi: tegra20-sflash: fix reference leak in tegra_sflash_resume + - spi: tegra114: fix reference leak in tegra spi ops + - spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in + bcm63xx_hsspi_resume + - ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of() + - mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure + - selftest/bpf: Add missed ip6ip6 test back + - ASoC: wm8994: Fix PM disable depth imbalance on error + - ASoC: wm8998: Fix PM disable depth imbalance on error + - spi: sprd: fix reference leak in sprd_spi_remove + - ASoC: arizona: Fix a wrong free in wm8997_probe + - RDMa/mthca: Work around -Wenum-conversion warning + - ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG + - arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node + - MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA + - drm/amdgpu: fix compute queue priority if num_kcq is less than 4 + - soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted + - crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager + - crypto: qat - fix status check in qat_hal_put_rel_rd_xfer() + - drm/udl: Fix missing error code in udl_handle_damage() + - staging: greybus: codecs: Fix reference counter leak in error handling + - staging: gasket: interrupt: fix the missed eventfd_ctx_put() in + gasket_interrupt.c + - drm/amdkfd: Put ACPI table after using it + - media: tm6000: Fix sizeof() mismatches + - media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm() + - media: mtk-vcodec: add missing put_device() call in + mtk_vcodec_release_dec_pm() + - media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm() + - media: v4l2-fwnode: Return -EINVAL for invalid bus-type + - media: staging: rkisp1: cap: fix runtime PM imbalance on error + - media: cedrus: fix reference leak in cedrus_start_streaming + - media: platform: add missing put_device() call in mtk_jpeg_probe() and + mtk_jpeg_remove() + - media: venus: core: change clk enable and disable order in resume and + suspend + - media: venus: core: vote for video-mem path + - media: venus: core: vote with average bandwidth and peak bandwidth as zero + - RDMA/cma: Add missing error handling of listen_id + - ASoC: meson: fix COMPILE_TEST error + - scsi: core: Fix VPD LUN ID designator priorities + - media: venus: put dummy vote on video-mem path after last session release + - media: solo6x10: fix missing snd_card_free in error handling case + - video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init() + - mmc: sdhci: tegra: fix wrong unit with busy_timeout + - drm/omap: dmm_tiler: fix return error code in omap_dmm_probe() + - drm/meson: Free RDMA resources after tearing down DRM + - drm/meson: Unbind all connectors on module removal + - drm/meson: dw-hdmi: Register a callback to disable the regulator + - drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP + registers + - iommu/vt-d: include conditionally on CONFIG_INTEL_IOMMU_SVM + - Input: ads7846 - fix race that causes missing releases + - Input: ads7846 - fix integer overflow on Rt calculation + - Input: ads7846 - fix unaligned access on 7845 + - bus: mhi: core: Remove double locking from mhi_driver_remove() + - bus: mhi: core: Fix null pointer access when parsing MHI configuration + - usb/max3421: fix return error code in max3421_probe() + - spi: mxs: fix reference leak in mxs_spi_probe + - selftests/bpf: Fix broken riscv build + - powerpc: Avoid broken GCC __attribute__((optimize)) + - powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32 + - ARM: dts: tacoma: Fix node vs reg mismatch for flash memory + - Revert "powerpc/pseries/hotplug-cpu: Remove double free in error path" + - mfd: htc-i2cpld: Add the missed i2c_put_adapter() in + htcpld_register_chip_i2c() + - EDAC/mce_amd: Use struct cpuinfo_x86.cpu_die_id for AMD NodeId + - scsi: ufs: Avoid to call REQ_CLKS_OFF to CLKS_OFF + - scsi: ufs: Fix clkgating on/off + - rcu: Allow rcu_irq_enter_check_tick() from NMI + - rcu,ftrace: Fix ftrace recursion + - crypto: crypto4xx - Replace bitwise OR with logical OR in crypto4xx_build_pd + - crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe + - spi: fix resource leak for drivers without .remove callback + - drm/meson: dw-hdmi: Disable clocks on driver teardown + - drm/meson: dw-hdmi: Enable the iahb clock early enough + - PCI: Disable MSI for Pericom PCIe-USB adapter + - PCI: brcmstb: Initialize "tmp" before use + - soc: ti: knav_qmss: fix reference leak in knav_queue_probe + - soc: ti: Fix reference imbalance in knav_dma_probe + - drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe + - soc: qcom: initialize local variable + - arm64: dts: qcom: sm8250: correct compatible for sm8250-mtp + - arm64: dts: qcom: msm8916-samsung-a2015: Disable muic i2c pin bias + - Input: omap4-keypad - fix runtime PM error handling + - clk: meson: Kconfig: fix dependency for G12A + - ath11k: Fix the rx_filter flag setting for peer rssi stats + - RDMA/cxgb4: Validate the number of CQEs + - soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute + - memstick: fix a double-free bug in memstick_check + - ARM: dts: at91: sam9x60: add pincontrol for USB Host + - ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host + - ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host + - mmc: pxamci: Fix error return code in pxamci_probe + - brcmfmac: fix error return code in brcmf_cfg80211_connect() + - orinoco: Move context allocation after processing the skb + - qtnfmac: fix error return code in qtnf_pcie_probe() + - rsi: fix error return code in rsi_reset_card() + - cw1200: fix missing destroy_workqueue() on error in cw1200_init_common + - dmaengine: mv_xor_v2: Fix error return code in mv_xor_v2_probe() + - arm64: dts: qcom: sdm845: Limit ipa iommu streams + - leds: netxbig: add missing put_device() call in netxbig_leds_get_of_pdata() + - arm64: tegra: Fix DT binding for IO High Voltage entry + - RDMA/cma: Fix deadlock on &lock in rdma_cma_listen_on_all() error unwind + - media: siano: fix memory leak of debugfs members in smsdvb_hotplug + - platform/x86: mlx-platform: Remove PSU EEPROM from default platform + configuration + - platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform + configuration + - arm64: dts: qcom: sc7180: limit IPA iommu streams + - RDMA/hns: Avoid setting loopback indicator when smac is same as dmac + - serial: 8250-mtk: Fix reference leak in mtk8250_probe + - samples: bpf: Fix lwt_len_hist reusing previous BPF map + - media: imx214: Fix stop streaming + - mips: cdmm: fix use-after-free in mips_cdmm_bus_discover + - media: max2175: fix max2175_set_csm_mode() error code + - slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI + - drm/mediatek: Use correct aliases name for ovl + - HSI: omap_ssi: Don't jump to free ID in ssi_add_controller() + - ARM: dts: Remove non-existent i2c1 from 98dx3236 + - arm64: dts: armada-3720-turris-mox: update ethernet-phy handle name + - power: supply: bq25890: Use the correct range for IILIM register + - arm64: dts: rockchip: Set dr_mode to "host" for OTG on rk3328-roc-cc + - power: supply: max17042_battery: Fix current_{avg,now} hiding with no + current sense + - power: supply: axp288_charger: Fix HP Pavilion x2 10 DMI matching + - power: supply: bq24190_charger: fix reference leak + - genirq/irqdomain: Don't try to free an interrupt that has no mapping + - arm64: dts: ls1028a: fix ENETC PTP clock input + - arm64: dts: ls1028a: fix FlexSPI clock input + - arm64: dts: freescale: sl28: combine SPI MTD partitions + - phy: tegra: xusb: Fix usb_phy device driver field + - arm64: dts: qcom: c630: Polish i2c-hid devices + - arm64: dts: qcom: c630: Fix pinctrl pins properties + - PCI: Bounds-check command-line resource alignment requests + - PCI: Fix overflow in command-line resource alignment requests + - PCI: iproc: Fix out-of-bound array accesses + - PCI: iproc: Invalidate correct PAXB inbound windows + - arm64: dts: meson: fix spi-max-frequency on Khadas VIM2 + - arm64: dts: meson-sm1: fix typo in opp table + - soc: amlogic: canvas: add missing put_device() call in meson_canvas_get() + - scsi: pm80xx: Do not sleep in atomic context + - spi: spi-fsl-dspi: Use max_native_cs instead of num_chipselect to set + SPI_MCR + - ARM: dts: at91: at91sam9rl: fix ADC triggers + - RDMA/hns: Fix 0-length sge calculation error + - RDMA/hns: Bugfix for calculation of extended sge + - platform/x86: dell-smbios-base: Fix error return code in dell_smbios_init + - media: i2c: imx219: Selection compliance fixes + - ath11k: Fix an error handling path + - ath10k: Fix the parsing error in service available event + - ath10k: Fix an error handling path + - ath10k: Release some resources in an error handling path + - SUNRPC: rpc_wake_up() should wake up tasks in the correct order + - NFSv4.2: condition READDIR's mask for security label based on LSM state + - SUNRPC: xprt_load_transport() needs to support the netid "rdma6" + - NFSv4: Fix the alignment of page data in the getdeviceinfo reply + - net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs' + - lockd: don't use interval-based rebinding over TCP + - NFS: switch nfsiod to be an UNBOUND workqueue. + - selftests/seccomp: Update kernel config + - vfio-pci: Use io_remap_pfn_range() for PCI IO memory + - hwmon: (ina3221) Fix PM usage counter unbalance in ina3221_write_enable + - media: tvp5150: Fix wrong return value of tvp5150_parse_dt() + - media: saa7146: fix array overflow in vidioc_s_audio() + - powerpc/perf: Fix crash with is_sier_available when pmu is not set + - powerpc/64: Fix an EMIT_BUG_ENTRY in head_64.S + - powerpc/xmon: Fix build failure for 8xx + - powerpc/perf: Fix the PMU group constraints for threshold events in power10 + - clocksource/drivers/orion: Add missing clk_disable_unprepare() on error path + - clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent() + - clocksource/drivers/ingenic: Fix section mismatch + - iio: hrtimer-trigger: Mark hrtimer to expire in hard interrupt context + - libbpf: Sanitise map names before pinning + - ARM: dts: at91: sam9x60ek: remove bypass property + - ARM: dts: at91: sama5d2: map securam as device + - bpf: Fix bpf_put_raw_tracepoint()'s use of __module_address() + - selftests/bpf: Fix invalid use of strncat in test_sockmap + - pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe() + - arm64: dts: rockchip: Fix UART pull-ups on rk3328 + - memstick: r592: Fix error return in r592_probe() + - MIPS: Don't round up kernel sections size for memblock_add() + - mt76: mt7915: set fops_sta_stats.owner to THIS_MODULE + - mt76: set fops_tx_stats.owner to THIS_MODULE + - net/mlx5: Properly convey driver version to firmware + - mt76: fix memory leak if device probing fails + - mt76: fix tkip configuration for mt7615/7663 devices + - ASoC: jz4740-i2s: add missed checks for clk_get() + - dm ioctl: fix error return code in target_message + - ASoC: cros_ec_codec: fix uninitialized memory read + - ASoC: qcom: fix QDSP6 dependencies, attempt #3 + - phy: renesas: rcar-gen3-usb2: disable runtime pm in case of failure + - memory: jz4780_nemc: Fix potential NULL dereference in jz4780_nemc_probe() + - clocksource/drivers/arm_arch_timer: Use stable count reader in erratum sne + - clocksource/drivers/arm_arch_timer: Correct fault programming of + CNTKCTL_EL1.EVNTI + - cpufreq: ap806: Add missing MODULE_DEVICE_TABLE + - cpufreq: highbank: Add missing MODULE_DEVICE_TABLE + - cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE + - cpufreq: qcom: Add missing MODULE_DEVICE_TABLE + - cpufreq: st: Add missing MODULE_DEVICE_TABLE + - cpufreq: sun50i: Add missing MODULE_DEVICE_TABLE + - cpufreq: loongson1: Add missing MODULE_ALIAS + - cpufreq: scpi: Add missing MODULE_ALIAS + - cpufreq: vexpress-spc: Add missing MODULE_ALIAS + - Bluetooth: btusb: Add the missed release_firmware() in + btusb_mtk_setup_firmware() + - Bluetooth: btmtksdio: Add the missed release_firmware() in + mtk_setup_firmware() + - block/rnbd-clt: Dynamically alloc buffer for pathname & blk_symlink_name + - block/rnbd: fix a null pointer dereference on dev->blk_symlink_name + - Bluetooth: btusb: Fix detection of some fake CSR controllers with a + bcdDevice val of 0x0134 + - mtd: spi-nor: sst: fix BPn bits for the SST25VF064C + - mtd: spi-nor: ignore errors in spi_nor_unlock_all() + - mtd: spi-nor: atmel: remove global protection flag + - mtd: spi-nor: atmel: fix unlock_all() for AT25FS010/040 + - arm64: dts: meson: g12b: odroid-n2: fix PHY deassert timing requirements + - arm64: dts: meson: fix PHY deassert timing requirements + - ARM: dts: meson: fix PHY deassert timing requirements + - arm64: dts: meson: g12a: x96-max: fix PHY deassert timing requirements + - arm64: dts: meson: g12b: w400: fix PHY deassert timing requirements + - clk: fsl-sai: fix memory leak + - scsi: qedi: Fix missing destroy_workqueue() on error in __qedi_probe + - scsi: pm80xx: Fix error return in pm8001_pci_probe() + - scsi: iscsi: Fix inappropriate use of put_device() + - seq_buf: Avoid type mismatch for seq_buf_init + - scsi: fnic: Fix error return code in fnic_probe() + - platform/x86: mlx-platform: Fix item counter assignment for MSN2700, MSN24xx + systems + - platform/x86: mlx-platform: Fix item counter assignment for MSN2700/ComEx + system + - ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel + mode + - powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops + - powerpc/pseries/hibernation: remove redundant cacheinfo update + - powerpc/powermac: Fix low_sleep_handler with CONFIG_VMAP_STACK + - drm/mediatek: avoid dereferencing a null hdmi_phy on an error message + - ASoC: amd: change clk_get() to devm_clk_get() and add missed checks + - ASoC: max98390: Fix error codes in max98390_dsm_init() + - powerpc/mm: sanity_check_fault() should work for all, not only BOOK3S + - usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe + - usb: oxu210hp-hcd: Fix memory leak in oxu_create + - speakup: fix uninitialized flush_lock + - nfsd: Fix message level for normal termination + - NFSD: Fix 5 seconds delay when doing inter server copy + - nfs_common: need lock during iterate through the list + - x86/kprobes: Restore BTF if the single-stepping is cancelled + - scsi: qla2xxx: Fix N2N and NVMe connect retry failure + - platform/chrome: cros_ec_spi: Don't overwrite spi::mode + - misc: pci_endpoint_test: fix return value of error branch + - bus: fsl-mc: fix error return code in fsl_mc_object_allocate() + - s390/cio: fix use-after-free in ccw_device_destroy_console + - iwlwifi: dbg-tlv: fix old length in is_trig_data_contained() + - iwlwifi: mvm: hook up missing RX handlers + - erofs: avoid using generic_block_bmap + - can: m_can: m_can_config_endisable(): remove double clearing of clock stop + request bit + - powerpc/sstep: Emulate prefixed instructions only when CPU_FTR_ARCH_31 is + set + - powerpc/sstep: Cover new VSX instructions under CONFIG_VSX + - slimbus: qcom: fix potential NULL dereference in qcom_slim_prg_slew() + - RDMA/core: Do not indicate device ready when device enablement fails + - remoteproc: q6v5-mss: fix error handling in q6v5_pds_enable + - remoteproc: qcom: fix reference leak in adsp_start + - remoteproc: qcom: pas: fix error handling in adsp_pds_enable + - remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio() + - clk: qcom: gcc-sc7180: Use floor ops for sdcc clks + - clk: tegra: Fix duplicated SE clock entry + - mtd: rawnand: gpmi: fix reference count leak in gpmi ops + - mtd: rawnand: meson: Fix a resource leak in init + - mtd: rawnand: gpmi: Fix the random DMA timeout issue + - samples/bpf: Fix possible hang in xdpsock with multiple threads + - fs: Handle I_DONTCACHE in iput_final() instead of generic_drop_inode() + - extcon: max77693: Fix modalias string + - crypto: atmel-i2c - select CONFIG_BITREVERSE + - mac80211: don't set set TDLS STA bandwidth wider than possible + - ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control() + - irqchip/alpine-msi: Fix freeing of interrupts on allocation error path + - RDMA/hns: Limit the length of data copied between kernel and userspace + - gpiolib: irq hooks: fix recursion in gpiochip_irq_unmask + - irqchip/qcom-pdc: Fix phantom irq when changing between rising/falling + - watchdog: armada_37xx: Add missing dependency on HAS_IOMEM + - watchdog: sirfsoc: Add missing dependency on HAS_IOMEM + - watchdog: sprd: remove watchdog disable from resume fail path + - watchdog: sprd: check busy bit before new loading rather than after that + - watchdog: Fix potential dereferencing of null pointer + - ubifs: Fix error return code in ubifs_init_authentication() + - um: Monitor error events in IRQ controller + - um: tty: Fix handling of close in tty lines + - um: chan_xterm: Fix fd leak + - sunrpc: fix xs_read_xdr_buf for partial pages receive + - RDMA/mlx5: Fix MR cache memory leak + - RDMA/cma: Don't overwrite sgid_attr after device is released + - nfc: s3fwrn5: Release the nfc firmware + - powerpc/perf: Fix Threshold Event Counter Multiplier width for P10 + - powerpc/ps3: use dma_mapping_error() + - mm/gup: combine put_compound_head() and unpin_user_page() + - mm/rmap: always do TTU_IGNORE_ACCESS + - sparc: fix handling of page table constructor failure + - mm/vmalloc: Fix unlock order in s_stop() + - mm/vmalloc.c: fix kasan shadow poisoning size + - mm,memory_failure: always pin the page in madvise_inject_error + - hugetlb: fix an error code in hugetlb_reserve_pages() + - mm: don't wake kswapd prematurely when watermark boosting is disabled + - proc: fix lookup in /proc/net subdirectories after setns(2) + - checkpatch: fix unescaped left brace + - s390/test_unwind: fix CALL_ON_STACK tests + - lan743x: fix rx_napi_poll/interrupt ping-pong + - ice, xsk: clear the status bits for the next_to_use descriptor + - i40e, xsk: clear the status bits for the next_to_use descriptor + - net: dsa: qca: ar9331: fix sleeping function called from invalid context bug + - net: bcmgenet: Fix a resource leak in an error handling path in the probe + functin + - net: allwinner: Fix some resources leak in the error handling path of the + probe and in the remove function + - block/rnbd-clt: Get rid of warning regarding size argument in strlcpy + - block/rnbd-clt: Fix possible memleak + - NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read() + - net: korina: fix return value + - libnvdimm/label: Return -ENXIO for no slot in __blk_label_update + - powerpc/32s: Fix cleanup_cpu_mmu_context() compile bug + - watchdog: qcom: Avoid context switch in restart handler + - watchdog: coh901327: add COMMON_CLK dependency + - clk: ti: Fix memleak in ti_fapll_synth_setup + - pwm: zx: Add missing cleanup in error path + - pwm: lp3943: Dynamically allocate PWM chip base + - pwm: imx27: Fix overflow for bigger periods + - pwm: sun4i: Remove erroneous else branch + - tools build: Add missing libcap to test-all.bin target + - perf record: Fix memory leak when using '--user-regs=?' to list registers + - qlcnic: Fix error code in probe + - nfp: move indirect block cleanup to flower app stop callback + - virtio_ring: Cut and paste bugs in vring_create_virtqueue_packed() + - virtio_net: Fix error code in probe() + - virtio_ring: Fix two use after free bugs + - vhost scsi: fix error return code in vhost_scsi_set_endpoint() + - epoll: check for events when removing a timed out thread from the wait queue + - clk: at91: sam9x60: remove atmel,osc-bypass support + - clk: s2mps11: Fix a resource leak in error handling paths in the probe + function + - clk: sunxi-ng: Make sure divider tables have sentinel + - kconfig: fix return value of do_error_if() + - powerpc/smp: Add __init to init_big_cores() + - ARM: 9044/1: vfp: use undef hook for VFP support detection + - perf probe: Fix memory leak when synthesizing SDT probes + - io_uring: cancel reqs shouldn't kill overflow list + - Smack: Handle io_uring kernel thread privileges + - io_uring: fix io_cqring_events()'s noflush + - vfio/pci: Move dummy_resources_list init in vfio_pci_probe() + - vfio/pci/nvlink2: Do not attempt NPU2 setup on POWER8NVL NPU + - media: gspca: Fix memory leak in probe + - io_uring: fix io_wqe->work_list corruption + - io_uring: fix 0-iov read buffer select + - io_uring: fix ignoring xa_store errors + - io_uring: make ctx cancel on exit targeted to actual ctx + - media: sunxi-cir: ensure IR is handled when it is continuous + - media: netup_unidvb: Don't leak SPI master in probe error path + - media: ipu3-cio2: Remove traces of returned buffers + - media: ipu3-cio2: Return actual subdev format + - media: ipu3-cio2: Serialise access to pad format + - media: ipu3-cio2: Validate mbus format in setting subdev format + - media: ipu3-cio2: Make the field on subdev format V4L2_FIELD_NONE + - Input: cyapa_gen6 - fix out-of-bounds stack access + - ALSA: hda/ca0132 - Change Input Source enum strings. + - Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources + walks" + - ACPI: PNP: compare the string length in the matching_id() + - ALSA: hda: Fix regressions on clear and reconfig sysfs + - ALSA: hda/ca0132 - Fix AE-5 rear headphone pincfg. + - ALSA: hda/realtek: make bass spk volume adjustable on a yoga laptop + - ALSA: hda/realtek - Enable headset mic of ASUS X430UN with ALC256 + - ALSA: hda/realtek - Enable headset mic of ASUS Q524UQK with ALC255 + - ALSA: hda/realtek - Add supported for more Lenovo ALC285 Headset Button + - ALSA: pcm: oss: Fix a few more UBSAN fixes + - ALSA/hda: apply jack fixup for the Acer Veriton N4640G/N6640G/N2510G + - ALSA: hda/realtek: Add quirk for MSI-GP73 + - ALSA: hda/realtek: Apply jack fixup for Quanta NL3 + - ALSA: hda/realtek: Remove dummy lineout on Acer TravelMate P648/P658 + - ALSA: hda/realtek - Supported Dell fixed type headset + - ALSA: usb-audio: Add VID to support native DSD reproduction on FiiO devices + - ALSA: usb-audio: Disable sample read check if firmware doesn't give back + - ALSA: core: memalloc: add page alignment for iram + - s390/smp: perform initial CPU reset also for SMT siblings + - s390/kexec_file: fix diag308 subcode when loading crash kernel + - s390/idle: add missing mt_cycles calculation + - s390/idle: fix accounting with machine checks + - s390/dasd: fix hanging device offline processing + - s390/dasd: prevent inconsistent LCU device data + - s390/dasd: fix list corruption of pavgroup group list + - s390/dasd: fix list corruption of lcu list + - binder: add flag to clear buffer on txn complete + - ASoC: cx2072x: Fix doubly definitions of Playback and Capture streams + - ASoC: AMD Renoir - add DMI table to avoid the ACP mic probe (broken BIOS) + - ASoC: AMD Raven/Renoir - fix the PCI probe (PCI revision) + - staging: comedi: mf6x4: Fix AI end-of-conversion detection + - z3fold: simplify freeing slots + - z3fold: stricter locking and more careful reclaim + - perf/x86/intel: Add event constraint for CYCLE_ACTIVITY.STALLS_MEM_ANY + - perf/x86/intel: Fix rtm_abort_event encoding on Ice Lake + - powerpc/perf: Exclude kernel samples while counting events in user space. + - cpufreq: intel_pstate: Use most recent guaranteed performance values + - crypto: ecdh - avoid unaligned accesses in ecdh_set_secret() + - crypto: arm/aes-ce - work around Cortex-A57/A72 silion errata + - m68k: Fix WARNING splat in pmac_zilog driver + - EDAC/i10nm: Use readl() to access MMIO registers + - EDAC/amd64: Fix PCI component registration + - cpuset: fix race between hotplug work and later CPU offline + - USB: serial: mos7720: fix parallel-port state restore + - USB: serial: digi_acceleport: fix write-wakeup deadlocks + - USB: serial: keyspan_pda: fix dropped unthrottle interrupts + - USB: serial: keyspan_pda: fix write deadlock + - USB: serial: keyspan_pda: fix stalled writes + - USB: serial: keyspan_pda: fix write-wakeup use-after-free + - USB: serial: keyspan_pda: fix tx-unthrottle use-after-free + - USB: serial: keyspan_pda: fix write unthrottling + - btrfs: do not shorten unpin len for caching block groups + - btrfs: update last_byte_to_unpin in switch_commit_roots + - btrfs: fix race when defragmenting leads to unnecessary IO + - ext4: fix a memory leak of ext4_free_data + - ext4: fix deadlock with fs freezing and EA inodes + - ext4: don't remount read-only with errors=continue on reboot + - arm64: dts: ti: k3-am65: mark dss as dma-coherent + - KVM: arm64: Introduce handling of AArch32 TTBCR2 traps + - KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits + - KVM: SVM: Remove the call to sev_platform_status() during setup + - ARM: dts: pandaboard: fix pinmux for gpio user button of Pandaboard ES + - ARM: dts: at91: sama5d2: fix CAN message ram offset and size + - ARM: tegra: Populate OPP table for Tegra20 Ventana + - xprtrdma: Fix XDRBUF_SPARSE_PAGES support + - powerpc/32: Fix vmap stack - Properly set r1 before activating MMU on + syscall too + - powerpc: Fix incorrect stw{, ux, u, x} instructions in __set_pte_at + - powerpc/rtas: Fix typo of ibm,open-errinjct in RTAS filter + - powerpc/bitops: Fix possible undefined behaviour with fls() and fls64() + - powerpc/feature: Add CPU_FTR_NOEXECUTE to G2_LE + - powerpc/xmon: Change printk() to pr_cont() + - powerpc/8xx: Fix early debug when SMC1 is relocated + - powerpc/mm: Fix verification of MMU_FTR_TYPE_44x + - powerpc/powernv/npu: Do not attempt NPU2 setup on POWER8NVL NPU + - powerpc/powernv/memtrace: Don't leak kernel memory to user space + - powerpc/powernv/memtrace: Fix crashing the kernel when enabling concurrently + - ima: Don't modify file descriptor mode on the fly + - um: Remove use of asprinf in umid.c + - um: Fix time-travel mode + - ceph: fix race in concurrent __ceph_remove_cap invocations + - SMB3: avoid confusing warning message on mount to Azure + - SMB3.1.1: remove confusing mount warning when no SPNEGO info on negprot rsp + - SMB3.1.1: do not log warning message if server doesn't populate salt + - ubifs: wbuf: Don't leak kernel memory to flash + - jffs2: Fix GC exit abnormally + - jffs2: Fix ignoring mounting options problem during remounting + - jfs: Fix array index bounds check in dbAdjTree + - drm/panfrost: Fix job timeout handling + - platform/x86: mlx-platform: remove an unused variable + - drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor() + - drm/i915: Fix mismatch between misplaced vma check and vma insert + - iio: ad_sigma_delta: Don't put SPI transfer buffer on the stack + - spi: pxa2xx: Fix use-after-free on unbind + - spi: spi-sh: Fix use-after-free on unbind + - spi: atmel-quadspi: Fix use-after-free on unbind + - spi: spi-mtk-nor: Don't leak SPI master in probe error path + - spi: ar934x: Don't leak SPI master in probe error path + - spi: davinci: Fix use-after-free on unbind + - spi: fsl: fix use of spisel_boot signal on MPC8309 + - spi: gpio: Don't leak SPI master in probe error path + - spi: mxic: Don't leak SPI master in probe error path + - spi: npcm-fiu: Disable clock in probe error path + - spi: pic32: Don't leak DMA channels in probe error path + - spi: rb4xx: Don't leak SPI master in probe error path + - spi: sc18is602: Don't leak SPI master in probe error path + - spi: spi-geni-qcom: Fix use-after-free on unbind + - spi: spi-qcom-qspi: Fix use-after-free on unbind + - spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path + - spi: synquacer: Disable clock in probe error path + - spi: mt7621: Disable clock in probe error path + - spi: mt7621: Don't leak SPI master in probe error path + - spi: atmel-quadspi: Disable clock in probe error path + - spi: atmel-quadspi: Fix AHB memory accesses + - soc: qcom: smp2p: Safely acquire spinlock without IRQs + - mtd: parser: cmdline: Fix parsing of part-names with colons + - mtd: core: Fix refcounting for unpartitioned MTDs + - mtd: rawnand: qcom: Fix DMA sync on FLASH_STATUS register read + - mtd: rawnand: meson: fix meson_nfc_dma_buffer_release() arguments + - scsi: qla2xxx: Fix crash during driver load on big endian machines + - scsi: lpfc: Fix invalid sleeping context in lpfc_sli4_nvmet_alloc() + - scsi: lpfc: Re-fix use after free in lpfc_rq_buf_free() + - openat2: reject RESOLVE_BENEATH|RESOLVE_IN_ROOT + - iio: buffer: Fix demux update + - iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in + rockchip_saradc_resume + - iio: imu: st_lsm6dsx: fix edge-trigger interrupts + - iio:light:rpr0521: Fix timestamp alignment and prevent data leak. + - iio:light:st_uvis25: Fix timestamp alignment and prevent data leak. + - iio:magnetometer:mag3110: Fix alignment and data leak issues. + - iio:pressure:mpl3115: Force alignment of buffer + - iio:imu:bmi160: Fix too large a buffer. + - iio:imu:bmi160: Fix alignment and data leak issues + - iio:adc:ti-ads124s08: Fix buffer being too long. + - iio:adc:ti-ads124s08: Fix alignment and data leak issues. + - md/cluster: block reshape with remote resync job + - md/cluster: fix deadlock when node is doing resync job + - pinctrl: sunxi: Always call chained_irq_{enter, exit} in + sunxi_pinctrl_irq_handler + - clk: ingenic: Fix divider calculation with div tables + - clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9 + - clk: tegra: Do not return 0 on failure + - device-dax/core: Fix memory leak when rmmod dax.ko + - dma-buf/dma-resv: Respect num_fences when initializing the shared fence + list. + - driver: core: Fix list corruption after device_del() + - xen-blkback: set ring->xenblkd to NULL after kthread_stop() + - xen/xenbus: Allow watches discard events before queueing + - xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path() + - xen/xenbus/xen_bus_type: Support will_handle watch callback + - xen/xenbus: Count pending messages for each watch + - xenbus/xenbus_backend: Disallow pending watch messages + - libnvdimm/namespace: Fix reaping of invalidated block-window-namespace + labels + - platform/x86: intel-vbtn: Allow switch events on Acer Switch Alpha 12 + - tracing: Disable ftrace selftests when any tracer is running + - mt76: add back the SUPPORTS_REORDERING_BUFFER flag + - of: fix linker-section match-table corruption + - PCI: Fix pci_slot_release() NULL pointer dereference + - regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x + - remoteproc: sysmon: Ensure remote notification ordering + - thermal/drivers/cpufreq_cooling: Update cpufreq_state only if state has + changed + - rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time + - Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS" + - null_blk: Fix zone size initialization + - null_blk: Fail zone append to conventional zones + - drm/edid: fix objtool warning in drm_cvt_modes() + - x86/CPU/AMD: Save AMD NodeId as cpu_die_id + - ARM: dts: sun7i: bananapi: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun8i: r40: bananapi-m2-berry: Fix dcdc1 regulator + - ARM: dts: sun8i: v40: bananapi-m2-berry: Fix ethernet node + - pinctrl: merrifield: Set default bias in case no particular value given + - pinctrl: baytrail: Avoid clearing debounce value when turning it off + - ARM: dts: sun8i: v3s: fix GIC node memory range + - ARM: dts: sun7i: pcduino3-nano: enable RGMII RX/TX delay on PHY + - ARM: dts: imx6qdl-wandboard-revd1: Remove PAD_GPIO_6 from enetgrp + - ARM: dts: imx6qdl-kontron-samx6i: fix I2C_PM scl pin + - gpio: zynq: fix reference leak in zynq_gpio functions + - gpio: mvebu: fix potential user-after-free on probe + - scsi: bnx2i: Requires MMU + - xsk: Replace datagram_poll by sock_poll_wait + - can: softing: softing_netdev_open(): fix error handling + - clk: renesas: r9a06g032: Drop __packed for portability + - pinctrl: aspeed: Fix GPIO requests on pass-through banks + - netfilter: x_tables: Switch synchronization to RCU + - netfilter: nft_compat: make sure xtables destructors have run + - netfilter: nft_dynset: fix timeouts later than 23 days + - afs: Fix memory leak when mounting with multiple source parameters + - gpio: eic-sprd: break loop when getting NULL device resource + - netfilter: nft_ct: Remove confirmation check for NFT_CT_ID + - selftests/bpf/test_offload.py: Reset ethtool features after failed setting + - RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait + - i40e: optimise prefetch page refcount + - i40e: avoid premature Rx buffer reuse + - ixgbe: avoid premature Rx buffer reuse + - selftests: fix poll error in udpgro.sh + - net: mvpp2: add mvpp2_phylink_to_port() helper + - drm/tegra: replace idr_init() by idr_init_base() + - kernel/cpu: add arch override for clear_tasks_mm_cpumask() mm handling + - drm/tegra: sor: Disable clocks on error in tegra_sor_init() + - habanalabs: put devices before driver removal + - arm64: syscall: exit userspace before unmasking exceptions + - vxlan: Add needed_headroom for lower device + - vxlan: Copy needed_tailroom from lowerdev + - scsi: mpt3sas: Increase IOCInit request timeout to 30s + - dm table: Remove BUG_ON(in_interrupt()) + - iwlwifi: pcie: add one missing entry for AX210 + - drm/amd/display: Init clock value by current vbios CLKs + - perf/x86/intel: Check PEBS status correctly + - kbuild: avoid split lines in .mod files + - ARM: sunxi: Add machine match for the Allwinner V3 SoC + - cfg80211: initialize rekey_data + - fix namespaced fscaps when !CONFIG_SECURITY + - lwt: Disable BH too in run_lwt_bpf() + - drm/amd/display: Prevent bandwidth overflow + - drm/amdkfd: Fix leak in dmabuf import + - Input: cros_ec_keyb - send 'scancodes' in addition to key events + - initramfs: fix clang build failure + - Input: goodix - add upside-down quirk for Teclast X98 Pro tablet + + * Groovy update: upstream stable patchset 2021-01-13 (LP: #1911476) + - Kbuild: do not emit debug info for assembly with LLVM_IAS=1 + - mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING + - [Config] updateconfigs for ZSMALLOC_PGTABLE_MAPPING + - kprobes: Remove NMI context check + - kprobes: Tell lockdep about kprobe nesting + - ASoC: Intel: bytcr_rt5640: Fix HP Pavilion x2 Detachable quirks + - tools/bootconfig: Fix to check the write failure correctly + - net, xsk: Avoid taking multiple skbuff references + - bpftool: Fix error return value in build_btf_type_table + - vhost-vdpa: fix page pinning leakage in error path (rework) + - powerpc/64s: Fix hash ISA v3.0 TLBIEL instruction generation + - batman-adv: Consider fragmentation for needed_headroom + - batman-adv: Reserve needed_*room for fragments + - batman-adv: Don't always reallocate the fragmentation skb head + - ipvs: fix possible memory leak in ip_vs_control_net_init + - ibmvnic: handle inconsistent login with reset + - ibmvnic: stop free_all_rwi on failed reset + - ibmvnic: avoid memset null scrq msgs + - ibmvnic: delay next reset if hard reset fails + - ibmvnic: track pending login + - ibmvnic: send_login should check for crq errors + - ibmvnic: reduce wait for completion time + - drm/rockchip: Avoid uninitialized use of endpoint id in LVDS + - drm/panel: sony-acx565akm: Fix race condition in probe + - can: m_can: tcan4x5x_can_probe(): fix error path: remove erroneous + clk_disable_unprepare() + - can: sja1000: sja1000_err(): don't count arbitration lose as an error + - can: sun4i_can: sun4i_can_err(): don't count arbitration lose as an error + - can: c_can: c_can_power_up(): fix error handling + - can: kvaser_pciefd: kvaser_pciefd_open(): fix error handling + - samples/ftrace: Mark my_tramp[12]? global + - scsi: storvsc: Fix error return in storvsc_probe() + - net: broadcom CNIC: requires MMU + - iwlwifi: pcie: invert values of NO_160 device config entries + - perf/x86/intel: Fix a warning on x86_pmu_stop() with large PEBS + - zlib: export S390 symbols for zlib modules + - phy: usb: Fix incorrect clearing of tca_drv_sel bit in SETUP reg for 7211 + - arm64: dts: rockchip: Remove system-power-controller from pmic on Odroid Go + Advance + - iwlwifi: pcie: limit memory read spin time + - arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399 boards. + - arm64: dts: rockchip: Reorder LED triggers from mmc devices on rk3399-roc- + pc. + - iwlwifi: sta: set max HE max A-MPDU according to HE capa + - iwlwifi: pcie: set LTR to avoid completion timeout + - iwlwifi: mvm: fix kernel panic in case of assert during CSA + - powerpc: Drop -me200 addition to build flags + - arm64: dts: broadcom: clear the warnings caused by empty dma-ranges + - ARC: stack unwinding: don't assume non-current task is sleeping + - scsi: ufs: Fix unexpected values from ufshcd_read_desc_param() + - scsi: ufs: Make sure clk scaling happens only when HBA is runtime ACTIVE + - interconnect: qcom: msm8916: Remove rpm-ids from non-RPM nodes + - interconnect: qcom: qcs404: Remove GPU and display RPM IDs + - ibmvnic: skip tx timeout reset while in resetting + - irqchip/gic-v3-its: Unconditionally save/restore the ITS state on suspend + - drm/exynos: depend on COMMON_CLK to fix compile tests + - spi: spi-nxp-fspi: fix fspi panic by unexpected interrupts + - arm-smmu-qcom: Ensure the qcom_scm driver has finished probing + - btrfs: do nofs allocations when adding and removing qgroup relations + - btrfs: fix lockdep splat when enabling and disabling qgroups + - soc: fsl: dpio: Get the cpumask through cpumask_of(cpu) + - intel_idle: Fix intel_idle() vs tracing + - arm64: tegra: Disable the ACONNECT for Jetson TX2 + - platform/x86: thinkpad_acpi: add P1 gen3 second fan support + - platform/x86: thinkpad_acpi: Do not report SW_TABLET_MODE on Yoga 11e + - platform/x86: thinkpad_acpi: Add BAT1 is primary battery quirk for Thinkpad + Yoga 11e 4th gen + - platform/x86: thinkpad_acpi: Whitelist P15 firmware for dual fan control + - platform/x86: acer-wmi: add automatic keyboard background light toggle key + as KEY_LIGHTS_TOGGLE + - platform/x86: intel-vbtn: Support for tablet mode on HP Pavilion 13 x360 PC + - platform/x86: touchscreen_dmi: Add info for the Predia Basic tablet + - platform/x86: touchscreen_dmi: Add info for the Irbis TW118 tablet + - can: m_can: m_can_dev_setup(): add support for bosch mcan version 3.3.0 + - s390: fix irq state tracing + - intel_idle: Build fix + - media: pulse8-cec: fix duplicate free at disconnect or probe error + - media: pulse8-cec: add support for FW v10 and up + - mmc: mediatek: Extend recheck_sdio_irq fix to more variants + - ktest.pl: Fix incorrect reboot for grub2bls + - xen: add helpers for caching grant mapping pages + - Input: cm109 - do not stomp on control URB + - Input: i8042 - add Acer laptops to the i8042 reset list + - pinctrl: jasperlake: Fix HOSTSW_OWN offset + - mmc: sdhci-of-arasan: Fix clock registration error for Keem Bay SOC + - mmc: block: Fixup condition for CMD13 polling for RPMB requests + - drm/amdgpu/disply: set num_crtc earlier + - drm/i915/gem: Propagate error from cancelled submit due to context closure + - drm/i915/display/dp: Compute the correct slice count for VDSC on DP + - drm/i915/gt: Declare gen9 has 64 mocs entries! + - drm/i915/gt: Ignore repeated attempts to suspend request flow across reset + - drm/i915/gt: Cancel the preemption timeout on responding to it + - kbuild: avoid static_assert for genksyms + - proc: use untagged_addr() for pagemap_read addresses + - zonefs: fix page reference and BIO leak + - scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()" + - x86/mm/mem_encrypt: Fix definition of PMD_FLAGS_DEC_WP + - x86/membarrier: Get rid of a dubious optimization + - x86/apic/vector: Fix ordering in vector assignment + - x86/kprobes: Fix optprobe to detect INT3 padding correctly + - compiler.h: fix barrier_data() on clang + - ptrace: Prevent kernel-infoleak in ptrace_get_syscall_info() + - net/sched: fq_pie: initialize timer earlier in fq_pie_init() + - net: ipa: pass the correct size when freeing DMA memory + - ipv4: fix error return code in rtm_to_fib_config() + - mac80211: mesh: fix mesh_pathtbl_init() error path + - net: bridge: vlan: fix error return code in __vlan_add() + - vrf: packets with lladdr src needs dst at input with orig_iif when needs + strict + - net: hns3: remove a misused pragma packed + - udp: fix the proto value passed to ip_protocol_deliver_rcu for the segments + - enetc: Fix reporting of h/w packet counters + - bridge: Fix a deadlock when enabling multicast snooping + - mptcp: print new line in mptcp_seq_show() if mptcp isn't in use + - net: stmmac: dwmac-meson8b: fix mask definition of the m250_sel mux + - net: stmmac: start phylink instance before stmmac_hw_setup() + - net: stmmac: free tx skb buffer in stmmac_resume() + - net: stmmac: delete the eee_ctrl_timer after napi disabled + - net: stmmac: overwrite the dma_cap.addr64 according to HW design + - net: ll_temac: Fix potential NULL dereference in temac_probe() + - tcp: select sane initial rcvq_space.space for big MSS + - e1000e: fix S0ix flow to allow S0i3.2 subset entry + - ethtool: fix stack overflow in ethnl_parse_bitset() + - tcp: fix cwnd-limited bug for TSO deferral where we send nothing + - net: flow_offload: Fix memory leak for indirect flow block + - net/mlx4_en: Avoid scheduling restart task if it is already running + - net/mlx4_en: Handle TX error CQE + - net: sched: Fix dump of MPLS_OPT_LSE_LABEL attribute in cls_flower + - ch_ktls: fix build warning for ipv4-only config + - lan743x: fix for potential NULL pointer dereference with bare card + - net: stmmac: increase the timeout for dma reset + - net: tipc: prevent possible null deref of link + - ktest.pl: If size of log is too big to email, email error message + - USB: dummy-hcd: Fix uninitialized array use in init() + - USB: add RESET_RESUME quirk for Snapscan 1212 + - ALSA: usb-audio: Fix potential out-of-bounds shift + - ALSA: usb-audio: Fix control 'access overflow' errors from chmap + - xhci: Give USB2 ports time to enter U3 in bus suspend + - xhci-pci: Allow host runtime PM as default for Intel Alpine Ridge LP + - xhci-pci: Allow host runtime PM as default for Intel Maple Ridge xHCI + - USB: UAS: introduce a quirk to set no_write_same + - USB: sisusbvga: Make console support depend on BROKEN + - [Config] updateconfigs for USB_SISUSBVGA_CON + - ALSA: pcm: oss: Fix potential out-of-bounds shift + - serial: 8250_omap: Avoid FIFO corruption caused by MDR1 access + - KVM: mmu: Fix SPTE encoding of MMIO generation upper half + - membarrier: Explicitly sync remote cores when SYNC_CORE is requested + - x86/resctrl: Remove unused struct mbm_state::chunks_bw + - x86/resctrl: Fix incorrect local bandwidth when mba_sc is enabled + + * MSFT Touchpad not working on Lenovo Legion-5 15ARH05 (LP: #1887190) // + Groovy update: upstream stable patchset 2021-01-13 (LP: #1911476) + - pinctrl: amd: remove debounce filter setting in IRQ type setting + + * Groovy update: upstream stable patchset 2021-01-12 (LP: #1911235) + - powerpc: Only include kup-radix.h for 64-bit Book3S + - leds: lm3697: Fix out-of-bound access + - Input: sunkbd - avoid use-after-free in teardown paths + - mac80211: always wind down STA state + - can: proc: can_remove_proc(): silence remove_proc_entry warning + - powerpc/smp: Call rcu_cpu_starting() earlier + - KVM: x86: clflushopt should be treated as a no-op by emulation + - ACPI: GED: fix -Wformat + - net: lantiq: Add locking for TX DMA channel + - ah6: fix error return code in ah6_input() + - atm: nicstar: Unmap DMA on send error + - bnxt_en: read EEPROM A2h address using page 0 + - devlink: Add missing genlmsg_cancel() in devlink_nl_sb_port_pool_fill() + - enetc: Workaround for MDIO register access issue + - Exempt multicast addresses from five-second neighbor lifetime + - inet_diag: Fix error path to cancel the meseage in inet_req_diag_fill() + - ipv6: Fix error path to cancel the meseage + - lan743x: fix issue causing intermittent kernel log warnings + - lan743x: prevent entire kernel HANG on open, for some platforms + - mlxsw: core: Use variable timeout for EMAD retries + - net: b44: fix error return code in b44_init_one() + - net: bridge: add missing counters to ndo_get_stats64 callback + - netdevsim: set .owner to THIS_MODULE + - net: dsa: mv88e6xxx: Avoid VTU corruption on 6097 + - net: ethernet: mtk-star-emac: fix error return code in mtk_star_enable() + - net: ethernet: mtk-star-emac: return ok when xmit drops + - net: ethernet: ti: am65-cpts: update ret when ptp_clock is ERROR + - net: ethernet: ti: cpsw: fix cpts irq after suspend + - net: ethernet: ti: cpsw: fix error return code in cpsw_probe() + - net: ftgmac100: Fix crash when removing driver + - net: Have netpoll bring-up DSA management interface + - net: ipa: lock when freeing transaction + - netlabel: fix our progress tracking in netlbl_unlabel_staticlist() + - netlabel: fix an uninitialized warning in netlbl_unlabel_staticlist() + - net: lantiq: Wait for the GPHY firmware to be ready + - net/mlx4_core: Fix init_hca fields offset + - net/mlx5e: Fix refcount leak on kTLS RX resync + - net/ncsi: Fix netlink registration + - net: phy: mscc: remove non-MACSec compatible phy + - net: qualcomm: rmnet: Fix incorrect receive packet handling during cleanup + - net/smc: fix direct access to ib_gid_addr->ndev in smc_ib_determine_gid() + - net: stmmac: Use rtnl_lock/unlock on netif_set_real_num_rx_queues() call + - net/tls: fix corrupted data in recvmsg + - net: x25: Increase refcnt of "struct x25_neigh" in x25_rx_call_request + - page_frag: Recover from memory pressure + - qed: fix error return code in qed_iwarp_ll2_start() + - qed: fix ILT configuration of SRC block + - qlcnic: fix error return code in qlcnic_83xx_restart_hw() + - sctp: change to hold/put transport for proto_unreach_timer + - tcp: only postpone PROBE_RTT if RTT is < current min_rtt estimate + - vsock: forward all packets to the host when no H2G is registered + - net/mlx5e: Fix check if netdev is bond slave + - net/mlx5: Add handling of port type in rule deletion + - net/mlx5: Clear bw_share upon VF disable + - net/mlx5: Disable QoS when min_rates on all VFs are zero + - PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter + - net: fec: Fix reference count leak in fec series ops + - net/tls: Fix wrong record sn in async mode of device resync + - net: usb: qmi_wwan: Set DTR quirk for MR400 + - Revert "Revert "gpio: omap: Fix lost edge wake-up interrupts"" + - tools, bpftool: Avoid array index warnings. + - habanalabs/gaudi: mask WDT error in QMAN + - pinctrl: rockchip: enable gpio pclk for rockchip_gpio_to_irq + - scsi: ufs: Fix unbalanced scsi_block_reqs_cnt caused by ufshcd_hold() + - scsi: ufs: Try to save power mode change and UIC cmd completion timeout + - pinctrl: mcp23s08: Print error message when regmap init fails + - selftests: kvm: Fix the segment descriptor layout to match the actual layout + - ACPI: button: Add DMI quirk for Medion Akoya E2228T + - arm64: errata: Fix handling of 1418040 with late CPU onlining + - arm64: psci: Avoid printing in cpu_psci_cpu_die() + - arm64: smp: Tell RCU about CPUs that fail to come online + - vfs: remove lockdep bogosity in __sb_start_write + - gfs2: fix possible reference leak in gfs2_check_blk_type + - hwmon: (pwm-fan) Fix RPM calculation + - gfs2: Fix case in which ail writes are done to jdata holes + - arm64: Add MIDR value for KRYO2XX gold/silver CPU cores + - arm64: kpti: Add KRYO2XX gold/silver CPU cores to kpti safelist + - arm64: cpu_errata: Apply Erratum 845719 to KRYO2XX Silver + - arm64: dts: allwinner: beelink-gs1: Enable both RGMII RX/TX delay + - arm64: dts: allwinner: Pine H64: Enable both RGMII RX/TX delay + - arm64: dts: allwinner: a64: OrangePi Win: Fix ethernet node + - arm64: dts: allwinner: a64: Pine64 Plus: Fix ethernet node + - arm64: dts: allwinner: h5: OrangePi PC2: Fix ethernet node + - ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix ethernet node + - Revert "arm: sun8i: orangepi-pc-plus: Set EMAC activity LEDs to active high" + - ARM: dts: sun6i: a31-hummingbird: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun7i: cubietruck: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun7i: bananapi-m1-plus: Enable RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun8i: h3: orangepi-plus2e: Enable RGMII RX/TX delay on Ethernet + PHY + - ARM: dts: sun8i: a83t: Enable both RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sun9i: Enable both RGMII RX/TX delay on Ethernet PHY + - ARM: dts: sunxi: bananapi-m2-plus: Enable RGMII RX/TX delay on Ethernet PHY + - arm64: dts: allwinner: h5: libretech-all-h5-cc: Enable RGMII RX/TX delay on + PHY + - arm64: dts: allwinner: a64: bananapi-m64: Enable RGMII RX/TX delay on PHY + - Input: adxl34x - clean up a data type in adxl34x_probe() + - MIPS: export has_transparent_hugepage() for modules + - dmaengine: idxd: fix wq config registers offset programming + - arm64: dts: allwinner: h5: OrangePi Prime: Fix ethernet node + - arm64: dts: imx8mm-beacon-som: Fix Choppy BT audio + - arm64: dts imx8mn: Remove non-existent USB OTG2 + - arm: dts: imx6qdl-udoo: fix rgmii phy-mode for ksz9031 phy + - ARM: dts: vf610-zii-dev-rev-b: Fix MDIO over clocking + - swiotlb: using SIZE_MAX needs limits.h included + - tee: amdtee: fix memory leak due to reset of global shm list + - tee: amdtee: synchronize access to shm list + - dmaengine: xilinx_dma: Fix usage of xilinx_aximcdma_tx_segment + - dmaengine: xilinx_dma: Fix SG capability check for MCDMA + - ARM: dts: stm32: Fix TA3-GPIO-C key on STM32MP1 DHCOM PDK2 + - ARM: dts: stm32: Fix LED5 on STM32MP1 DHCOM PDK2 + - ARM: dts: stm32: Define VIO regulator supply on DHCOM + - ARM: dts: stm32: Enable thermal sensor support on stm32mp15xx-dhcor + - ARM: dts: stm32: Keep VDDA LDO1 always on on DHCOM + - arm64: dts: imx8mm: fix voltage for 1.6GHz CPU operating point + - ARM: dts: imx50-evk: Fix the chip select 1 IOMUX + - dmaengine: ti: omap-dma: Block PM if SDMA is busy to fix audio + - kunit: tool: unmark test_data as binary blobs + - rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled + - spi: fix client driver breakages when using GPIO descriptors + - Input: resistive-adc-touch - fix kconfig dependency on IIO_BUFFER + - rfkill: Fix use-after-free in rfkill_resume() + - RDMA/pvrdma: Fix missing kfree() in pvrdma_register_device() + - [Config] update config for INFINIBAND_VIRT_DMA + - RMDA/sw: Don't allow drivers using dma_virt_ops on highmem configs + - perf lock: Correct field name "flags" + - perf lock: Don't free "lock_seq_stat" if read_count isn't zero + - SUNRPC: Fix oops in the rpc_xdr_buf event class + - drm: bridge: dw-hdmi: Avoid resetting force in the detect function + - tools, bpftool: Add missing close before bpftool net attach exit + - IB/hfi1: Fix error return code in hfi1_init_dd() + - ip_tunnels: Set tunnel option flag when tunnel metadata is present + - can: af_can: prevent potential access of uninitialized member in can_rcv() + - can: af_can: prevent potential access of uninitialized member in canfd_rcv() + - can: dev: can_restart(): post buffer from the right context + - can: ti_hecc: Fix memleak in ti_hecc_probe + - can: mcba_usb: mcba_usb_start_xmit(): first fill skb, then pass to + can_put_echo_skb() + - can: peak_usb: fix potential integer overflow on shift of a int + - can: flexcan: fix failure handling of pm_runtime_get_sync() + - can: tcan4x5x: replace depends on REGMAP_SPI with depends on SPI + - can: tcan4x5x: tcan4x5x_can_probe(): add missing error checking for + devm_regmap_init() + - can: tcan4x5x: tcan4x5x_can_remove(): fix order of deregistration + - can: m_can: m_can_handle_state_change(): fix state change + - can: m_can: m_can_class_free_dev(): introduce new function + - can: m_can: Fix freeing of can device from peripherials + - can: m_can: m_can_stop(): set device to software init mode before closing + - dmaengine: idxd: fix mapping of portal size + - ASoC: qcom: lpass-platform: Fix memory leak + - selftests/bpf: Fix error return code in run_getsockopt_test() + - MIPS: Alchemy: Fix memleak in alchemy_clk_setup_cpu + - drm/sun4i: dw-hdmi: fix error return code in sun8i_dw_hdmi_bind() + - net/mlx5: E-Switch, Fail mlx5_esw_modify_vport_rate if qos disabled + - bpf, sockmap: Fix partial copy_page_to_iter so progress can still be made + - bpf, sockmap: Ensure SO_RCVBUF memory is observed on ingress redirect + - can: kvaser_pciefd: Fix KCAN bittiming limits + - can: kvaser_usb: kvaser_usb_hydra: Fix KCAN bittiming limits + - dmaengine: fix error codes in channel_register() + - iommu/vt-d: Move intel_iommu_gfx_mapped to Intel IOMMU header + - iommu/vt-d: Avoid panic if iommu init fails in tboot system + - can: flexcan: flexcan_chip_start(): fix erroneous + flexcan_transceiver_enable() during bus-off recovery + - can: m_can: process interrupt only when not runtime suspended + - xfs: fix the minrecs logic when dealing with inode root child blocks + - xfs: strengthen rmap record flags checking + - xfs: directory scrub should check the null bestfree entries too + - xfs: ensure inobt record walks always make forward progress + - xfs: return corresponding errcode if xfs_initialize_perag() fail + - ASOC: Intel: kbl_rt5663_rt5514_max98927: Do not try to disable disabled + clock + - regulator: ti-abb: Fix array out of bound read access on the first + transition + - libbpf: Fix VERSIONED_SYM_COUNT number parsing + - lib/strncpy_from_user.c: Mask out bytes after NUL terminator. + - fail_function: Remove a redundant mutex unlock + - xfs: revert "xfs: fix rmap key and record comparison functions" + - bpf, sockmap: Skb verdict SK_PASS to self already checked rmem limits + - bpf, sockmap: On receive programs try to fast track SK_PASS ingress + - bpf, sockmap: Use truesize with sk_rmem_schedule() + - bpf, sockmap: Avoid returning unneeded EAGAIN when redirecting to self + - efi/arm: set HSCTLR Thumb2 bit correctly for HVC calls from HYP + - counter/ti-eqep: Fix regmap max_register + - efi/x86: Free efi_pgd with free_pages() + - sched/fair: Fix overutilized update in enqueue_task_fair() + - sched: Fix data-race in wakeup + - sched: Fix rq->nr_iowait ordering + - libfs: fix error cast of negative value in simple_attr_write() + - afs: Fix speculative status fetch going out of order wrt to modifications + - HID: logitech-hidpp: Add PID for MX Anywhere 2 + - HID: mcp2221: Fix GPIO output handling + - HID: logitech-dj: Handle quad/bluetooth keyboards with a builtin trackpad + - HID: logitech-dj: Fix Dinovo Mini when paired with a MX5x00 receiver + - speakup: Do not let the line discipline be used several times + - ALSA: firewire: Clean up a locking issue in copy_resp_to_buf() + - ALSA: usb-audio: Add delay quirk for all Logitech USB devices + - ALSA: ctl: fix error path at adding user-defined element set + - ALSA: mixart: Fix mutex deadlock + - ALSA: hda/realtek - Add supported for Lenovo ThinkPad Headset Button + - ALSA: hda/realtek - Add supported mute Led for HP + - ALSA: hda/realtek: Add some Clove SSID in the ALC293(ALC1220) + - ALSA: hda/realtek - HP Headset Mic can't detect after boot + - tty: serial: imx: fix potential deadlock + - tty: serial: imx: keep console clocks always on + - HID: logitech-dj: Fix an error in mse_bluetooth_descriptor + - efivarfs: fix memory leak in efivarfs_create() + - staging: rtl8723bs: Add 024c:0627 to the list of SDIO device-ids + - staging: mt7621-pci: avoid to request pci bus resources + - iio: light: fix kconfig dependency bug for VCNL4035 + - ext4: fix bogus warning in ext4_update_dx_flag() + - xfs: fix forkoff miscalculation related to XFS_LITINO(mp) + - ACPI: fan: Initialize performance state sysfs attribute + - iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum + - iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet- + mode + - iio: adc: mediatek: fix unset field + - iio: cros_ec: Use default frequencies when EC returns invalid information + - iio: imu: st_lsm6dsx: set 10ms as min shub slave timeout + - iio/adc: ingenic: Fix battery VREF for JZ4770 SoC + - iio: adc: stm32-adc: fix a regression when using dma and irq + - serial: ar933x_uart: disable clk on error handling path in probe + - arm64: dts: agilex/stratix10: Fix qspi node compatible + - spi: lpspi: Fix use-after-free on unbind + - spi: Introduce device-managed SPI controller allocation + - spi: npcm-fiu: Don't leak SPI master in probe error path + - spi: bcm2835aux: Fix use-after-free on unbind + - regulator: pfuze100: limit pfuze-support-disable-sw to pfuze{100,200} + - regulator: fix memory leak with repeated set_machine_constraints() + - regulator: avoid resolve_supply() infinite recursion + - regulator: workaround self-referent regulators + - gfs2: Fix regression in freeze_go_sync + - xtensa: fix TLBTEMP area placement + - xtensa: disable preemption around cache alias management calls + - mac80211: minstrel: remove deferred sampling code + - mac80211: minstrel: fix tx status processing corner case + - mac80211: free sta in sta_info_insert_finish() on errors + - s390: fix system call exit path + - s390/cpum_sf.c: fix file permission for cpum_sfb_size + - s390/dasd: fix null pointer dereference for ERP requests + - Drivers: hv: vmbus: Allow cleanup of VMBUS_CONNECT_CPU if disconnected + - drm/amd/display: Add missing pflip irq for dcn2.0 + - drm/i915: Handle max_bpc==16 + - mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel + controllers + - mmc: sdhci-of-arasan: Allow configuring zero tap values + - mmc: sdhci-of-arasan: Use Mask writes for Tap delays + - mmc: sdhci-of-arasan: Issue DLL reset explicitly + - ptrace: Set PF_SUPERPRIV when checking capability + - seccomp: Set PF_SUPERPRIV when checking capability + - x86/microcode/intel: Check patch signature before saving microcode for early + loading + - mm: fix readahead_page_batch for retry entries + - mm: memcg/slab: fix root memcg vmstats + - mm/userfaultfd: do not access vma->vm_mm after calling handle_userfault() + - io_uring: get an active ref_node from files_data + - io_uring: order refnode recycling + - spi: bcm-qspi: Fix use-after-free on unbind + - spi: bcm2835: Fix use-after-free on unbind + - ipv4: use IS_ENABLED instead of ifdef + - IB/hfi1: Ensure correct mm is used at all times + - RDMA/i40iw: Address an mmap handler exploit in i40iw + - btrfs: tree-checker: add missing return after error in root_item + - btrfs: tree-checker: add missing returns after data_ref alignment checks + - btrfs: don't access possibly stale fs_info data for printing duplicate + device + - btrfs: fix lockdep splat when reading qgroup config on mount + - mm: fix VM_BUG_ON(PageTail) and BUG_ON(PageWriteback) + - smb3: Call cifs reconnect from demultiplex thread + - smb3: Avoid Mid pending list corruption + - smb3: Handle error case during offload read path + - cifs: fix a memleak with modefromsid + - powerpc/64s: Fix KVM system reset handling when CONFIG_PPC_PSERIES=y + - powerpc/64s/exception: KVM Fix for host DSI being taken in HPT guest MMU + context + - KVM: PPC: Book3S HV: XIVE: Fix possible oops when accessing ESB page + - KVM: arm64: vgic-v3: Drop the reporting of GICR_TYPER.Last for userspace + - KVM: x86: handle !lapic_in_kernel case in kvm_cpu_*_extint + - KVM: x86: Fix split-irqchip vs interrupt injection window request + - iommu/vt-d: Don't read VCCAP register unless it exists + - firmware: xilinx: Use hash-table for api feature check + - trace: fix potenial dangerous pointer + - arm64: pgtable: Fix pte_accessible() + - arm64: pgtable: Ensure dirty bit is preserved across pte_wrprotect() + - drm/amd/amdgpu: fix null pointer in runtime pm + - drm/amd/display: Avoid HDCP initialization in devices without output + - HID: uclogic: Add ID for Trust Flex Design Tablet + - HID: ite: Replace ABS_MISC 120/121 events with touchpad on/off keypresses + - HID: cypress: Support Varmilo Keyboards' media hotkeys + - HID: add support for Sega Saturn + - Input: i8042 - allow insmod to succeed on devices without an i8042 + controller + - HID: hid-sensor-hub: Fix issue with devices with no report ID + - staging: ralink-gdma: fix kconfig dependency bug for DMA_RALINK + - HID: add HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE for Gamevice devices + - dmaengine: xilinx_dma: use readl_poll_timeout_atomic variant + - x86/xen: don't unbind uninitialized lock_kicker_irq + - kunit: fix display of failed expectations for strings + - HID: logitech-hidpp: Add HIDPP_CONSUMER_VENDOR_KEYS quirk for the Dinovo + Edge + - HID: Add Logitech Dinovo Edge battery quirk + - proc: don't allow async path resolution of /proc/self components + - nvme: free sq/cq dbbuf pointers when dbbuf set fails + - net: stmmac: dwmac_lib: enlarge dma reset timeout + - vdpasim: fix "mac_pton" undefined error + - vhost: add helper to check if a vq has been setup + - vhost scsi: alloc cmds per vq instead of session + - vhost scsi: fix cmd completion race + - cpuidle: tegra: Annotate tegra_pm_set_cpu_in_lp2() with RCU_NONIDLE + - dmaengine: pl330: _prep_dma_memcpy: Fix wrong burst size + - scsi: libiscsi: Fix NOP race condition + - scsi: target: iscsi: Fix cmd abort fabric stop race + - perf/x86: fix sysfs type mismatches + - xtensa: uaccess: Add missing __user to strncpy_from_user() prototype + - x86/dumpstack: Do not try to access user space code of other tasks + - net: dsa: mv88e6xxx: Wait for EEPROM done after HW reset + - bus: ti-sysc: Fix reset status check for modules with quirks + - bus: ti-sysc: Fix bogus resetdone warning on enable for cpsw + - ARM: OMAP2+: Manage MPU state properly for omap_enter_idle_coupled() + - phy: tegra: xusb: Fix dangling pointer on probe failure + - iwlwifi: mvm: use the HOT_SPOT_CMD to cancel an AUX ROC + - iwlwifi: mvm: properly cancel a session protection for P2P + - iwlwifi: mvm: write queue_sync_state only for sync + - KVM: s390: pv: Mark mm as protected after the set secure parameters and + improve cleanup + - batman-adv: set .owner to THIS_MODULE + - usb: cdns3: gadget: fix some endian issues + - usb: cdns3: gadget: calculate TD_SIZE based on TD + - phy: qualcomm: usb: Fix SuperSpeed PHY OF dependency + - phy: qualcomm: Fix 28 nm Hi-Speed USB PHY OF dependency + - arch: pgtable: define MAX_POSSIBLE_PHYSMEM_BITS where needed + - bus: ti-sysc: suppress err msg for timers used as clockevent/source + - ARM: dts: dra76x: m_can: fix order of clocks + - scsi: ufs: Fix race between shutdown and runtime resume flow + - bnxt_en: fix error return code in bnxt_init_one() + - bnxt_en: fix error return code in bnxt_init_board() + - video: hyperv_fb: Fix the cache type when mapping the VRAM + - bnxt_en: Release PCI regions when DMA mask setup fails during probe. + - block/keyslot-manager: prevent crash when num_slots=1 + - cxgb4: fix the panic caused by non smac rewrite + - dpaa2-eth: select XGMAC_MDIO for MDIO bus support + - s390/qeth: make af_iucv TX notification call more robust + - s390/qeth: fix af_iucv notification race + - s390/qeth: fix tear down of async TX buffers + - drm/mediatek: dsi: Modify horizontal front/back porch byte formula + - bonding: wait for sysfs kobject destruction before freeing struct slave + - ibmvnic: fix call_netdevice_notifiers in do_reset + - ibmvnic: notify peers when failover and migration happen + - powerpc/64s: Fix allnoconfig build since uaccess flush + - iommu: Check return of __iommu_attach_device() + - IB/mthca: fix return value of error branch in mthca_init_cq() + - i40e: Fix removing driver while bare-metal VFs pass traffic + - firmware: xilinx: Fix SD DLL node reset issue + - io_uring: fix shift-out-of-bounds when round up cq size + - nfc: s3fwrn5: use signed integer for parsing GPIO numbers + - net: ena: handle bad request id in ena_netdev + - net: ena: set initial DMA width to avoid intel iommu issue + - net: ena: fix packet's addresses for rx_offset feature + - ibmvnic: fix NULL pointer dereference in reset_sub_crq_queues + - ibmvnic: fix NULL pointer dereference in ibmvic_reset_crq + - ibmvnic: enhance resetting status check during module exit + - optee: add writeback to valid memory type + - x86/tboot: Don't disable swiotlb when iommu is forced on + - arm64: tegra: Wrong AON HSP reg property size + - efi/efivars: Set generic ops before loading SSDT + - efivarfs: revert "fix memory leak in efivarfs_create()" + - efi: EFI_EARLYCON should depend on EFI + - riscv: Explicitly specify the build id style in vDSO Makefile again + - RISC-V: Add missing jump label initialization + - RISC-V: fix barrier() use in + - net: stmmac: fix incorrect merge of patch upstream + - enetc: Let the hardware auto-advance the taprio base-time of 0 + - drm/nouveau: fix relocations applying logic and a double-free + - can: gs_usb: fix endianess problem with candleLight firmware + - platform/x86: thinkpad_acpi: Send tablet mode switch at wakeup time + - platform/x86: toshiba_acpi: Fix the wrong variable assignment + - RDMA/hns: Fix wrong field of SRQ number the device supports + - RDMA/hns: Fix retry_cnt and rnr_cnt when querying QP + - RDMA/hns: Bugfix for memory window mtpt configuration + - can: m_can: m_can_open(): remove IRQF_TRIGGER_FALLING from + request_threaded_irq()'s flags + - can: m_can: fix nominal bitiming tseg2 min for version >= 3.1 + - perf record: Synthesize cgroup events only if needed + - perf stat: Use proper cpu for shadow stats + - perf probe: Fix to die_entrypc() returns error correctly + - spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe + - USB: core: Change %pK for __user pointers to %px + - usb: gadget: f_midi: Fix memleak in f_midi_alloc + - USB: core: Fix regression in Hercules audio card + - USB: quirks: Add USB_QUIRK_DISCONNECT_SUSPEND quirk for Lenovo A630Z TIO + built-in usb-audio card + - usb: gadget: Fix memleak in gadgetfs_fill_super + - irqchip/exiu: Fix the index of fwspec for IRQ type + - x86/mce: Do not overwrite no_way_out if mce_end() fails + - x86/speculation: Fix prctl() when spectre_v2_user={seccomp,prctl},ibpb + - x86/resctrl: Remove superfluous kernfs_get() calls to prevent refcount leak + - x86/resctrl: Add necessary kernfs_put() calls to prevent refcount leak + - devlink: Hold rtnl lock while reading netdev attributes + - devlink: Make sure devlink instance and port are in same net namespace + - ipv6: addrlabel: fix possible memory leak in ip6addrlbl_net_init + - net/af_iucv: set correct sk_protocol for child sockets + - net: openvswitch: fix TTL decrement action netlink message format + - net/tls: missing received data after fast remote close + - net/tls: Protect from calling tls_dev_del for TLS RX twice + - rose: Fix Null pointer dereference in rose_send_frame() + - sock: set sk_err to ee_errno on dequeue from errq + - tcp: Set INET_ECN_xmit configuration in tcp_reinit_congestion_control + - tun: honor IOCB_NOWAIT flag + - usbnet: ipheth: fix connectivity with iOS 14 + - vsock/virtio: discard packets only when socket is really closed + - net/packet: fix packet receive on L3 devices without visible hard header + - netfilter: bridge: reset skb->pkt_type after NF_INET_POST_ROUTING traversal + - ipv4: Fix tos mask in inet_rtm_getroute() + - dt-bindings: net: correct interrupt flags in examples + - chelsio/chtls: fix panic during unload reload chtls + - ibmvnic: Ensure that SCRQ entry reads are correctly ordered + - ibmvnic: Fix TX completion error handling + - tipc: fix incompatible mtu of transmission + - inet_ecn: Fix endianness of checksum update when setting ECT(1) + - net: ip6_gre: set dev->hard_header_len when using header_ops + - dpaa_eth: copy timestamp fields to new skb in A-050385 workaround + - net/x25: prevent a couple of overflows + - cxgb3: fix error return code in t3_sge_alloc_qset() + - net: pasemi: fix error return code in pasemi_mac_open() + - vxlan: fix error return code in __vxlan_dev_create() + - chelsio/chtls: fix a double free in chtls_setkey() + - net: mvpp2: Fix error return code in mvpp2_open() + - net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl + - net: openvswitch: ensure LSE is pullable before reading it + - net/sched: act_mpls: ensure LSE is pullable before reading it + - net/mlx5: DR, Proper handling of unsupported Connect-X6DX SW steering + - net/mlx5: Fix wrong address reclaim when command interface is down + - net: mlx5e: fix fs_tcp.c build when IPV6 is not enabled + - ALSA: usb-audio: US16x08: fix value count for level meters + - Input: xpad - support Ardwiino Controllers + - tracing: Fix alignment of static buffer + - tracing: Remove WARN_ON in start_thread() + - uapi: fix statx attribute value overlap for DAX & MOUNT_ROOT + - drm/i915/gt: Fixup tgl mocs for PTE tracking + - usb: gadget: f_fs: Use local copy of descriptors for userspace copy + - USB: serial: kl5kusb105: fix memleak on open + - USB: serial: ch341: add new Product ID for CH341A + - USB: serial: ch341: sort device-id entries + - USB: serial: option: add Fibocom NL668 variants + - USB: serial: option: add support for Thales Cinterion EXS82 + - USB: serial: option: fix Quectel BG96 matching + - tty: Fix ->pgrp locking in tiocspgrp() + - tty: Fix ->session locking + - speakup: Reject setting the speakup line discipline outside of speakup + - ALSA: hda/realtek: Fix bass speaker DAC assignment on Asus Zephyrus G14 + - ALSA: hda/realtek: Add mute LED quirk to yet another HP x360 model + - ALSA: hda/realtek: Enable headset of ASUS UX482EG & B9400CEA with ALC294 + - ALSA: hda/realtek - Add new codec supported for ALC897 + - ALSA: hda/realtek - Fixed Dell AIO wrong sound tone + - ALSA: hda/generic: Add option to enforce preferred_dacs pairs + - ftrace: Fix updating FTRACE_FL_TRAMP + - ftrace: Fix DYNAMIC_FTRACE_WITH_DIRECT_CALLS dependency + - cifs: allow syscalls to be restarted in __smb_send_rqst() + - cifs: fix potential use-after-free in cifs_echo_request() + - cifs: refactor create_sd_buf() and and avoid corrupting the buffer + - gfs2: Upgrade shared glocks for atime updates + - gfs2: Fix deadlock between gfs2_{create_inode,inode_lookup} and + delete_work_func + - s390/pci: fix CPU address in MSI for directed IRQ + - i2c: imx: Fix reset of I2SR_IAL flag + - i2c: imx: Check for I2SR_IAL after every byte + - i2c: imx: Don't generate STOP condition if arbitration has been lost + - tracing: Fix userstacktrace option for instances + - thunderbolt: Fix use-after-free in remove_unplugged_switch() + - drm/omap: sdi: fix bridge enable/disable + - drm/i915/gt: Retain default context state across shrinking + - drm/i915/gt: Limit frequency drop to RPe on parking + - drm/i915/gt: Program mocs:63 for cache eviction on gen9 + - KVM: PPC: Book3S HV: XIVE: Fix vCPU id sanity check + - scsi: mpt3sas: Fix ioctl timeout + - io_uring: fix recvmsg setup with compat buf-select + - dm writecache: advance the number of arguments when reporting max_age + - dm writecache: fix the maximum number of arguments + - powerpc/64s/powernv: Fix memory corruption when saving SLB entries on MCE + - genirq/irqdomain: Add an irq_create_mapping_affinity() function + - powerpc/pseries: Pass MSI affinity to irq_create_mapping() + - dm: fix bug with RCU locking in dm_blk_report_zones + - dm: fix double RCU unlock in dm_dax_zero_page_range() error path + - dm: remove invalid sparse __acquires and __releases annotations + - x86/uprobes: Do not use prefixes.nbytes when looping over prefixes.bytes + - coredump: fix core_pattern parse error + - mm: list_lru: set shrinker map bit when child nr_items is not zero + - mm/swapfile: do not sleep with a spin lock held + - hugetlb_cgroup: fix offline of hugetlb cgroup with reservations + - Revert "amd/amdgpu: Disable VCN DPG mode for Picasso" + - iommu/amd: Set DTE[IntTabLen] to represent 512 IRTEs + - lib/syscall: fix syscall registers retrieval on 32-bit platforms + - can: af_can: can_rx_unregister(): remove WARN() statement from list + operation sanity check + - gfs2: check for empty rgrp tree in gfs2_ri_update + - netfilter: ipset: prevent uninit-value in hash_ip6_add + - tipc: fix a deadlock when flushing scheduled work + - ASoC: wm_adsp: fix error return code in wm_adsp_load() + - gfs2: Fix deadlock dumping resource group glocks + - gfs2: Don't freeze the file system during unmount + - rtw88: debug: Fix uninitialized memory in debugfs code + - i2c: qcom: Fix IRQ error misassignement + - i2c: qup: Fix error return code in qup_i2c_bam_schedule_desc() + - dm writecache: remove BUG() and fail gracefully instead + - Input: i8042 - fix error return code in i8042_setup_aux() + - netfilter: nf_tables: avoid false-postive lockdep splat + - netfilter: nftables_offload: set address type in control dissector + - netfilter: nftables_offload: build mask based from the matching bytes + - x86/insn-eval: Use new for_each_insn_prefix() macro to loop over prefixes + bytes + - bpf: Fix propagation of 32-bit signed bounds from 64-bit bounds. + + * dep-8 ubuntu-regression-suite tests are not run for all linux-hwe-* kernels + (LP: #1908529) + - [dep-8] Allow all hwe kernels + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: Clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF seftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * selftests: test_vxlan_under_vrf: mute unnecessary error message + (LP: #1908342) + - selftests: test_vxlan_under_vrf: mute unnecessary error message + + * Groovy update: upstream stable patchset 2020-12-17 (LP: #1908555) + - drm/i915: Hold onto an explicit ref to i915_vma_work.pinned + - drm/i915/gem: Flush coherency domains on first set-domain-ioctl + - mm: memcg: link page counters to root if use_hierarchy is false + - nbd: don't update block size after device is started + - KVM: arm64: Force PTE mapping on fault resulting in a device mapping + - ASoC: Intel: kbl_rt5663_max98927: Fix kabylake_ssp_fixup function + - genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY + - hv_balloon: disable warning when floor reached + - net: xfrm: fix a race condition during allocing spi + - ASoC: codecs: wsa881x: add missing stream rates and format + - irqchip/sifive-plic: Fix broken irq_set_affinity() callback + - kunit: Fix kunit.py --raw_output option + - kunit: Don't fail test suites if one of them is empty + - usb: gadget: fsl: fix null pointer checking + - selftests: filter kselftest headers from command in lib.mk + - ASoC: codecs: wcd934x: Set digital gain range correctly + - ASoC: codecs: wcd9335: Set digital gain range correctly + - mtd: spi-nor: Fix address width on flash chips > 16MB + - xfs: set xefi_discard when creating a deferred agfl free log intent item + - mac80211: don't require VHT elements for HE on 2.4 GHz + - netfilter: nftables: fix netlink report logic in flowtable and genid + - netfilter: use actual socket sk rather than skb sk when routing harder + - netfilter: nf_tables: missing validation from the abort path + - netfilter: ipset: Update byte and packet counters regardless of whether they + match + - irqchip/sifive-plic: Fix chip_data access within a hierarchy + - powerpc/eeh_cache: Fix a possible debugfs deadlock + - drm/vc4: bo: Add a managed action to cleanup the cache + - IB/srpt: Fix memory leak in srpt_add_one + - mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical memcg + - drm/panfrost: rename error labels in device_init + - drm/panfrost: move devfreq_init()/fini() in device + - drm/panfrost: Fix module unload + - perf trace: Fix segfault when trying to trace events by cgroup + - perf tools: Add missing swap for ino_generation + - perf tools: Add missing swap for cgroup events + - ALSA: hda: prevent undefined shift in snd_hdac_ext_bus_get_link() + - iommu/vt-d: Fix a bug for PDP check in prq_event_thread + - afs: Fix warning due to unadvanced marshalling pointer + - afs: Fix incorrect freeing of the ACL passed to the YFS ACL store op + - vfio/pci: Implement ioeventfd thread handler for contended memory lock + - can: rx-offload: don't call kfree_skb() from IRQ context + - can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ + context + - can: dev: __can_get_echo_skb(): fix real payload length return value for RTR + frames + - can: can_create_echo_skb(): fix echo skb generation: always use skb_clone() + - can: j1939: swap addr and pgn in the send example + - can: j1939: j1939_sk_bind(): return failure if netdev is down + - can: ti_hecc: ti_hecc_probe(): add missed clk_disable_unprepare() in error + path + - can: xilinx_can: handle failure cases of pm_runtime_get_sync + - can: peak_usb: add range checking in decode operations + - can: peak_usb: peak_usb_get_ts_time(): fix timestamp wrapping + - can: peak_canfd: pucan_handle_can_rx(): fix echo management when loopback is + on + - can: flexcan: remove FLEXCAN_QUIRK_DISABLE_MECR quirk for LS1021A + - can: flexcan: flexcan_remove(): disable wakeup completely + - xfs: flush new eof page on truncate to avoid post-eof corruption + - xfs: fix missing CoW blocks writeback conversion retry + - xfs: fix scrub flagging rtinherit even if there is no rt device + - spi: fsl-dspi: fix wrong pointer in suspend/resume + - ceph: add check_session_state() helper and make it global + - ceph: check the sesion state and return false in case it is closed + - ceph: check session state after bumping session->s_seq + - x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always- + on STIBP + - kbuild: explicitly specify the build id style + - RISC-V: Fix the VDSO symbol generaton for binutils-2.35+ + - USB: apple-mfi-fastcharge: fix reference leak in apple_mfi_fc_set_property + - tpm: efi: Don't create binary_bios_measurements file for an empty log + - KVM: arm64: ARM_SMCCC_ARCH_WORKAROUND_1 doesn't return + SMCCC_RET_NOT_REQUIRED + - ath9k_htc: Use appropriate rs_datalen type + - ASoC: qcom: sdm845: set driver name correctly + - ASoC: cs42l51: manage mclk shutdown delay + - ASoC: SOF: loader: handle all SOF_IPC_EXT types + - usb: dwc3: pci: add support for the Intel Alder Lake-S + - opp: Reduce the size of critical section in _opp_table_kref_release() + - usb: gadget: goku_udc: fix potential crashes in probe + - usb: raw-gadget: fix memory leak in gadget_setup + - selftests: pidfd: fix compilation errors due to wait.h + - x86/boot/compressed/64: Introduce sev_status + - gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free + - gfs2: Add missing truncate_inode_pages_final for sd_aspace + - gfs2: check for live vs. read-only file system in gfs2_fitrim + - scsi: hpsa: Fix memory leak in hpsa_init_one() + - drm/amdgpu: perform srbm soft reset always on SDMA resume + - drm/amd/pm: correct the baco reset sequence for CI ASICs + - drm/amd/pm: perform SMC reset on suspend/hibernation + - drm/amd/pm: do not use ixFEATURE_STATUS for checking smc running + - mac80211: fix use of skb payload instead of header + - cfg80211: initialize wdev data earlier + - cfg80211: regulatory: Fix inconsistent format argument + - wireguard: selftests: check that route_me_harder packets use the right sk + - tracing: Fix the checking of stackidx in __ftrace_trace_stack + - ARC: [plat-hsdk] Remap CCMs super early in asm boot trampoline + - scsi: scsi_dh_alua: Avoid crash during alua_bus_detach() + - scsi: mpt3sas: Fix timeouts observed while reenabling IRQ + - nvme: introduce nvme_sync_io_queues + - nvme-rdma: avoid race between time out and tear down + - nvme-tcp: avoid race between time out and tear down + - nvme-rdma: avoid repeated request completion + - nvme-tcp: avoid repeated request completion + - iommu/amd: Increase interrupt remapping table limit to 512 entries + - s390/smp: move rcu_cpu_starting() earlier + - vfio: platform: fix reference leak in vfio_platform_open + - vfio/pci: Bypass IGD init in case of -ENODEV + - i2c: mediatek: move dma reset before i2c reset + - iomap: clean up writeback state logic on writepage error + - selftests: proc: fix warning: _GNU_SOURCE redefined + - arm64: kexec_file: try more regions if loading segments fails + - riscv: Set text_offset correctly for M-Mode + - i2c: sh_mobile: implement atomic transfers + - i2c: designware: call i2c_dw_read_clear_intrbits_slave() once + - i2c: designware: slave should do WRITE_REQUESTED before WRITE_RECEIVED + - tpm_tis: Disable interrupts on ThinkPad T490s + - spi: bcm2835: remove use of uninitialized gpio flags variable + - mfd: sprd: Add wakeup capability for PMIC IRQ + - pinctrl: intel: Fix 2 kOhm bias which is 833 Ohm + - pinctrl: intel: Set default bias in case no particular value given + - gpio: aspeed: fix ast2600 bank properties + - ARM: 9019/1: kprobes: Avoid fortify_panic() when copying optprobe template + - bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE + - libbpf, hashmap: Fix undefined behavior in hash_bits + - pinctrl: mcp23s08: Use full chunk of memory for regmap configuration + - pinctrl: aspeed: Fix GPI only function problem. + - net/mlx5e: Fix modify header actions memory leak + - net/mlx5e: Protect encap route dev from concurrent release + - net/mlx5e: Use spin_lock_bh for async_icosq_lock + - net/mlx5: Fix deletion of duplicate rules + - net/mlx5e: Fix incorrect access of RCU-protected xdp_prog + - SUNRPC: Fix general protection fault in trace_rpc_xdr_overflow() + - NFSD: Fix use-after-free warning when doing inter-server copy + - NFSD: fix missing refcount in nfsd4_copy by nfsd4_do_async_copy + - tools/bpftool: Fix attaching flow dissector + - bpf: Zero-fill re-used per-cpu map element + - r8169: fix potential skb double free in an error path + - r8169: disable hw csum for short packets on all chip versions + - pinctrl: qcom: Move clearing pending IRQ to .irq_request_resources callback + - pinctrl: qcom: sm8250: Specify PDC map + - nbd: fix a block_device refcount leak in nbd_release + - selftest: fix flower terse dump tests + - i40e: Fix MAC address setting for a VF via Host/VM + - igc: Fix returning wrong statistics + - lan743x: correctly handle chips with internal PHY + - net: phy: realtek: support paged operations on RTL8201CP + - xfs: fix flags argument to rmap lookup when converting shared file rmaps + - xfs: set the unwritten bit in rmap lookup flags in xchk_bmap_get_rmapextents + - xfs: fix rmap key and record comparison functions + - xfs: fix brainos in the refcount scrubber's rmap fragment processor + - lan743x: fix "BUG: invalid wait context" when setting rx mode + - xfs: fix a missing unlock on error in xfs_fs_map_blocks + - of/address: Fix of_node memory leak in of_dma_is_coherent + - ch_ktls: Update cheksum information + - ch_ktls: tcb update fails sometimes + - cosa: Add missing kfree in error path of cosa_write + - hwmon: (applesmc) Re-work SMC comms + - vrf: Fix fast path output packet handling with async Netfilter rules + - lan743x: fix use of uninitialized variable + - arm64/mm: Validate hotplug range before creating linear mapping + - kernel/watchdog: fix watchdog_allowed_mask not used warning + - mm: memcontrol: fix missing wakeup polling thread + - afs: Fix afs_write_end() when called with copied == 0 [ver #3] + - perf: Fix get_recursion_context() + - nvme: factor out a nvme_configure_metadata helper + - nvme: freeze the queue over ->lba_shift updates + - nvme: fix incorrect behavior when BLKROSET is called by the user + - perf: Simplify group_sched_in() + - perf: Fix event multiplexing for exclusive groups + - firmware: xilinx: fix out-of-bounds access + - erofs: fix setting up pcluster for temporary pages + - erofs: derive atime instead of leaving it empty + - ext4: correctly report "not supported" for {usr,grp}jquota when + !CONFIG_QUOTA + - ext4: unlock xattr_sem properly in ext4_inline_data_truncate() + - btrfs: fix potential overflow in cluster_pages_for_defrag on 32bit arch + - btrfs: ref-verify: fix memory leak in btrfs_ref_tree_mod + - btrfs: fix min reserved size calculation in merge_reloc_root + - btrfs: dev-replace: fail mount if we don't have replace item with target + device + - KVM: arm64: Don't hide ID registers from userspace + - speakup: Fix var_id_t values and thus keymap + - speakup ttyio: Do not schedule() in ttyio_in_nowait + - speakup: Fix clearing selection in safe context + - thunderbolt: Fix memory leak if ida_simple_get() fails in + enumerate_services() + - thunderbolt: Add the missed ida_simple_remove() in ring_request_msix() + - block: add a return value to set_capacity_revalidate_and_notify + - loop: Fix occasional uevent drop + - uio: Fix use-after-free in uio_unregister_device() + - usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode + - usb: typec: ucsi: Report power supply changes + - xhci: hisilicon: fix refercence leak in xhci_histb_probe + - virtio: virtio_console: fix DMA memory allocation for rproc serial + - mei: protect mei_cl_mtu from null dereference + - futex: Don't enable IRQs unconditionally in put_pi_state() + - jbd2: fix up sparse warnings in checkpoint code + - bootconfig: Extend the magic check range to the preceding 3 bytes + - mm/compaction: count pages and stop correctly during page isolation + - mm/compaction: stop isolation if too many pages are isolated and we have + pages to migrate + - mm/slub: fix panic in slab_alloc_node() + - mm/vmscan: fix NR_ISOLATED_FILE corruption on 64-bit + - mm/gup: use unpin_user_pages() in __gup_longterm_locked() + - Revert "kernel/reboot.c: convert simple_strtoul to kstrtoint" + - reboot: fix overflow parsing reboot cpu number + - hugetlbfs: fix anon huge page migration race + - ocfs2: initialize ip_next_orphan + - selinux: Fix error return code in sel_ib_pkey_sid_slow() + - io_uring: round-up cq size before comparing with rounded sq size + - gpio: sifive: Fix SiFive gpio probe + - gpio: pcie-idio-24: Fix irq mask when masking + - gpio: pcie-idio-24: Fix IRQ Enable Register value + - gpio: pcie-idio-24: Enable PEX8311 interrupts + - mmc: sdhci-of-esdhc: Handle pulse width detection erratum for more SoCs + - mmc: renesas_sdhi_core: Add missing tmio_mmc_host_free() at remove + - don't dump the threads that had been already exiting when zapped. + - drm/i915: Correctly set SFC capability for video engines + - drm/gma500: Fix out-of-bounds access to struct drm_device.vblank[] + - pinctrl: amd: use higher precision for 512 RtcClk + - pinctrl: amd: fix incorrect way to disable debounce filter + - swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb" + - cpufreq: Introduce governor flags + - cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET + - cpufreq: Add strict_target to struct cpufreq_policy + - ethtool: netlink: add missing netdev_features_change() call + - IPv6: Set SIT tunnel hard_header_len to zero + - net/af_iucv: fix null pointer dereference on shutdown + - net: udp: fix IP header access and skb lookup on Fast/frag0 UDP GRO + - net: udp: fix UDP header access on Fast/frag0 UDP GRO + - net: Update window_clamp if SOCK_RCVBUF is set + - net/x25: Fix null-ptr-deref in x25_connect + - tipc: fix memory leak in tipc_topsrv_start() + - powerpc/603: Always fault when _PAGE_ACCESSED is not set + - null_blk: Fix scheduling in atomic with zoned mode + - perf scripting python: Avoid declaring function pointers with a visibility + attribute + - coresight: etm: perf: Sink selection using sysfs is deprecated + - coresight: Fix uninitialised pointer bug in etm_setup_aux() + - Convert trailing spaces and periods in path components + - random32: make prandom_u32() output unpredictable + - amd/amdgpu: Disable VCN DPG mode for Picasso + + * [SRU][F/G/H/U/OEM-5.6] Fix i2c report error on elan trackpoint + (LP: #1908335) + - Input: elan_i2c - add support for high resolution reports + - Input: elan_i2c - add new trackpoint report type 0x5F + - Input: elantech - fix protocol errors for some trackpoints in SMBus mode + + * [SRU][OEM-5.6] UBUNTU: SAUCE: Fix brightness control on BOE 2270 panel + (LP: #1904991) + - drm/i915: Force DPCD backlight mode for BOE 2270 panel + + * rtwpci driver blocks the system to enter PC10, stuck at PC3 (LP: #1907200) + - SAUCE: rtw88: 8723de: let cpu enter c10 + + * Touchpad not detected on ByteSpeed C15B laptop (LP: #1906128) + - Input: i8042 - add ByteSpeed touchpad to noloop table + + * Fix reading speed and duplex sysfs on igc device (LP: #1906851) + - SAUCE: igc: Report speed and duplex as unknown when device is runtime + suspended + + * Groovy update: upstream stable patchset 2020-12-15 (LP: #1908323) + - tipc: fix use-after-free in tipc_bcast_get_mode + - drm/i915/gem: Avoid implicit vmap for highmem on x86-32 + - drm/i915/gem: Prevent using pgprot_writecombine() if PAT is not supported + - drm/i915/gem: Always test execution status on closing the context + - drm/i915/gt: Always send a pulse down the engine after disabling heartbeat + - drm/i915: Break up error capture compression loops with cond_resched() + - drm/i915: Cancel outstanding work after disabling heartbeats on an engine + - drm/i915: Avoid mixing integer types during batch copies + - drm/i915/gt: Initialize reserved and unspecified MOCS indices + - drm/i915/gt: Undo forced context restores after trivial preemptions + - drm/i915: Drop runtime-pm assert from vgpu io accessors + - drm/i915: Exclude low pages (128KiB) of stolen from use + - drm/i915: Use the active reference on the vma while capturing + - drm/i915: Reject 90/270 degree rotated initial fbs + - drm/i915: Restore ILK-M RPS support + - drm/nouveau/device: fix changing endianess code to work on older GPUs + - ptrace: fix task_join_group_stop() for the case when current is traced + - cadence: force nonlinear buffers to be cloned + - chelsio/chtls: fix memory leaks caused by a race + - chelsio/chtls: fix always leaking ctrl_skb + - dpaa_eth: update the buffer layout for non-A050385 erratum scenarios + - dpaa_eth: fix the RX headroom size alignment + - gianfar: Replace skb_realloc_headroom with skb_cow_head for PTP + - gianfar: Account for Tx PTP timestamp in the skb headroom + - ionic: check port ptr before use + - ip_tunnel: fix over-mtu packet send fail without TUNNEL_DONT_FRAGMENT flags + - net: ethernet: ti: cpsw: disable PTPv1 hw timestamping advertisement + - net: usb: qmi_wwan: add Telit LE910Cx 0x1230 composition + - powerpc/vnic: Extend "failover pending" window + - sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms + - sfp: Fix error handing in sfp_probe() + - ip6_tunnel: set inner ipproto before ip6_tnl_encap + - net: fec: fix MDIO probing for some FEC hardware blocks + - r8169: work around short packet hw bug on RTL8125 + - drm/nouveau/kms/nv50-: Get rid of bogus nouveau_conn_mode_valid() + - drm/nouveau/kms/nv50-: Fix clock checking algorithm in nv50_dp_mode_valid() + - Fonts: Replace discarded const qualifier + - ALSA: hda/realtek - Fixed HP headset Mic can't be detected + - ALSA: hda/realtek - Enable headphone for ASUS TM420 + - ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2 + - ALSA: usb-audio: add usb vendor id as DSD-capable for Khadas devices + - ALSA: usb-audio: Add implicit feedback quirk for Qu-16 + - ALSA: usb-audio: Add implicit feedback quirk for MODX + - hugetlb_cgroup: fix reservation accounting + - mm: mempolicy: fix potential pte_unmap_unlock pte error + - lib/crc32test: remove extra local_irq_disable/enable + - kthread_worker: prevent queuing delayed work from timer_fn when it is being + canceled + - mm: always have io_remap_pfn_range() set pgprot_decrypted() + - perf hists browser: Increase size of 'buf' in perf_evsel__hists_browse() + - gfs2: Wake up when sd_glock_disposal becomes zero + - gfs2: Don't call cancel_delayed_work_sync from within delete work function + - ring-buffer: Fix recursion protection transitions between interrupt context + - iommu/vt-d: Fix kernel NULL pointer dereference in find_domain() + - mtd: spi-nor: Don't copy self-pointing struct around + - ftrace: Fix recursion check for NMI test + - ftrace: Handle tracing when switching between context + - regulator: defer probe when trying to get voltage from unresolved supply + - spi: bcm2835: fix gpio cs level inversion + - tracing: Fix out of bounds write in get_trace_buf + - futex: Handle transient "ownerless" rtmutex state correctly + - x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S + - ARM: dts: sun4i-a10: fix cpu_alert temperature + - arm64: dts: meson: add missing g12 rng clock + - arm64: dts: amlogic: meson-g12: use the G12A specific dwmac compatible + - x86/kexec: Use up-to-dated screen_info copy to fill boot params + - hyperv_fb: Update screen_info after removing old framebuffer + - arm64: dts: amlogic: add missing ethernet reset ID + - io_uring: don't miss setting IO_WQ_WORK_CONCURRENT + - of: Fix reserved-memory overlap detection + - ARM: dts: mmp3: Add power domain for the camera + - drm/sun4i: frontend: Rework a bit the phase data + - drm/sun4i: frontend: Reuse the ch0 phase for RGB formats + - drm/sun4i: frontend: Fix the scaler phase on A33 + - drm/v3d: Fix double free in v3d_submit_cl_ioctl() + - blk-cgroup: Fix memleak on error path + - blk-cgroup: Pre-allocate tree node on blkg_conf_prep + - btrfs: drop the path before adding qgroup items when enabling qgroups + - btrfs: add a helper to read the tree_root commit root for backref lookup + - scsi: core: Don't start concurrent async scan on same host + - drm/amdgpu: disable DCN and VCN for navi10 blockchain SKU(v3) + - drm/amdgpu: add DID for navi10 blockchain SKU + - scsi: ibmvscsi: Fix potential race after loss of transport + - vsock: use ns_capable_noaudit() on socket create + - nvme-rdma: handle unexpected nvme completion data length + - nvmet: fix a NULL pointer dereference when tracing the flush command + - drm/vc4: drv: Add error handding for bind + - ACPI: NFIT: Fix comparison to '-ENXIO' + - usb: cdns3: gadget: suspicious implicit sign extension + - drm/nouveau/nouveau: fix the start/end range for migration + - drm/nouveau/gem: fix "refcount_t: underflow; use-after-free" + - arm64/smp: Move rcu_cpu_starting() earlier + - tty: fix crash in release_tty if tty->port is not set + - fork: fix copy_process(CLONE_PARENT) race with the exiting ->real_parent + - s390/mm: make pmd/pud_deref() large page aware + - s390/pkey: fix paes selftest failure with paes and pkey static build + - powerpc/8xx: Always fault when _PAGE_ACCESSED is not set + - powerpc/40x: Always fault when _PAGE_ACCESSED is not set + - serial: 8250_mtk: Fix uart_get_baud_rate warning + - serial: txx9: add missing platform_driver_unregister() on error in + serial_txx9_init + - USB: serial: cyberjack: fix write-URB completion race + - USB: serial: option: add Quectel EC200T module support + - USB: serial: option: add LE910Cx compositions 0x1203, 0x1230, 0x1231 + - USB: serial: option: add Telit FN980 composition 0x1055 + - usb: dwc3: ep0: Fix delay status handling + - USB: Add NO_LPM quirk for Kingston flash drive + - usb: mtu3: fix panic in mtu3_gadget_stop() + - io_uring: fix link lookup racing with link timeout + - drm/panfrost: Fix a deadlock between the shrinker and madvise path + - ARC: stack unwinding: avoid indefinite looping + - PM: runtime: Drop runtime PM references to supplier on link removal + - PM: runtime: Drop pm_runtime_clean_up_links() + - PM: runtime: Resume the device earlier in __device_release_driver() + - drm/i915/gt: Use the local HWSP offset during submission + - perf/core: Fix a memory leak in perf_event_parse_addr_filter() + - Revert "coresight: Make sysfs functional on topologies with per core sink" + + * Groovy update: upstream stable patchset 2020-12-14 (LP: #1908150) + - xen/events: avoid removing an event channel while handling it + - xen/events: add a proper barrier to 2-level uevent unmasking + - xen/events: fix race in evtchn_fifo_unmask() + - xen/events: add a new "late EOI" evtchn framework + - xen/blkback: use lateeoi irq binding + - xen/netback: use lateeoi irq binding + - xen/scsiback: use lateeoi irq binding + - xen/pvcallsback: use lateeoi irq binding + - xen/pciback: use lateeoi irq binding + - xen/events: switch user event channels to lateeoi model + - xen/events: use a common cpu hotplug hook for event channels + - xen/events: defer eoi in case of excessive number of events + - xen/events: block rogue events for some time + - firmware: arm_scmi: Fix ARCH_COLD_RESET + - firmware: arm_scmi: Expand SMC/HVC message pool to more than one + - tee: client UUID: Skip REE kernel login method as well + - firmware: arm_scmi: Add missing Rx size re-initialisation + - x86/unwind/orc: Fix inactive tasks with stack pointer in %sp on GCC 10 + compiled kernels + - x86/alternative: Don't call text_poke() in lazy TLB mode + - ionic: no rx flush in deinit + - RDMA/mlx5: Fix devlink deadlock on net namespace deletion + - mlxsw: core: Fix use-after-free in mlxsw_emad_trans_finish() + - tracing, synthetic events: Replace buggy strcat() with seq_buf operations + - afs: Fix a use after free in afs_xattr_get_acl() + - afs: Fix afs_launder_page to not clear PG_writeback + - RDMA/qedr: Fix memory leak in iWARP CM + - ata: sata_nv: Fix retrieving of active qcs + - arm64: efi: increase EFI PE/COFF header padding to 64 KB + - afs: Fix to take ref on page when PG_private is set + - afs: Fix page leak on afs_write_begin() failure + - afs: Fix where page->private is set during write + - afs: Wrap page->private manipulations in inline functions + - afs: Alter dirty range encoding in page->private + - mm: add thp_order + - mm: add thp_size + - afs: Fix afs_invalidatepage to adjust the dirty region + - afs: Fix dirty-region encoding on ppc32 with 64K pages + - interconnect: qcom: sdm845: Enable keepalive for the MM1 BCM + - usb: host: ehci-tegra: Fix error handling in tegra_ehci_probe() + - futex: Fix incorrect should_fail_futex() handling + - powerpc/vmemmap: Fix memory leak with vmemmap list allocation failures. + - powerpc/powernv/smp: Fix spurious DBG() warning + - RDMA/core: Change how failing destroy is handled during uobj abort + - f2fs: allocate proper size memory for zstd decompress + - powerpc/watchpoint/ptrace: Fix SETHWDEBUG when CONFIG_HAVE_HW_BREAKPOINT=N + - [Config] update config for ARCH_WANT_IRQS_OFF_ACTIVATE_MM + - mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race + - powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM + - sparc64: remove mm_cpumask clearing to fix kthread_use_mm race + - f2fs: add trace exit in exception path + - f2fs: do sanity check on zoned block device path + - f2fs: fix uninit-value in f2fs_lookup + - f2fs: fix to check segment boundary during SIT page readahead + - s390/startup: avoid save_area_sync overflow + - f2fs: compress: fix to disallow enabling compress on non-empty file + - um: change sigio_spinlock to a mutex + - f2fs: handle errors of f2fs_get_meta_page_nofail + - afs: Don't assert on unpurgeable server records + - powerpc/64s: handle ISA v3.1 local copy-paste context switches + - ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses + - NFS4: Fix oops when copy_file_range is attempted with NFS4.0 source + - xfs: Set xfs_buf type flag when growing summary/bitmap files + - xfs: Set xfs_buf's b_ops member when zeroing bitmap/summary files + - xfs: log new intent items created as part of finishing recovered intent + items + - power: supply: bq27xxx: report "not charging" on all types + - xfs: change the order in which child and parent defer ops are finished + - xfs: fix realtime bitmap/summary file truncation when growing rt volume + - ath10k: fix retry packets update in station dump + - x86/kaslr: Initialize mem_limit to the real maximum address + - drm/ast: Separate DRM driver from PCI code + - drm/amdgpu: restore ras flags when user resets eeprom(v2) + - video: fbdev: pvr2fb: initialize variables + - ath10k: start recovery process when payload length exceeds max htc length + for sdio + - ath10k: fix VHT NSS calculation when STBC is enabled + - drm/scheduler: Scheduler priority fixes (v2) + - drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working + correctly + - ASOC: SOF: Intel: hda-codec: move unused label to correct position + - ASoC: SOF: fix a runtime pm issue in SOF when HDMI codec doesn't work + - selftests/x86/fsgsbase: Reap a forgotten child + - drm/bridge_connector: Set default status connected for eDP connectors + - media: videodev2.h: RGB BT2020 and HSV are always full range + - ASoC: AMD: Clean kernel log from deferred probe error messages + - misc: fastrpc: fix common struct sg_table related issues + - staging: wfx: fix potential use before init + - media: platform: Improve queue set up flow for bug fixing + - usb: typec: tcpm: During PR_SWAP, source caps should be sent only after + tSwapSourceStart + - media: tw5864: check status of tw5864_frameinterval_get + - drm/vkms: avoid warning in vkms_get_vblank_timestamp + - media: imx274: fix frame interval handling + - mmc: via-sdmmc: Fix data race bug + - drm/bridge/synopsys: dsi: add support for non-continuous HS clock + - brcmfmac: increase F2 watermark for BCM4329 + - arm64: topology: Stop using MPIDR for topology information + - printk: reduce LOG_BUF_SHIFT range for H8300 + - ia64: kprobes: Use generic kretprobe trampoline handler + - kgdb: Make "kgdbcon" work properly with "kgdb_earlycon" + - bpf: Permit map_ptr arithmetic with opcode add and offset 0 + - drm: exynos: fix common struct sg_table related issues + - xen: gntdev: fix common struct sg_table related issues + - drm: lima: fix common struct sg_table related issues + - drm: panfrost: fix common struct sg_table related issues + - media: uvcvideo: Fix dereference of out-of-bound list iterator + - nfc: s3fwrn5: Add missing CRYPTO_HASH dependency + - selftests/bpf: Define string const as global for test_sysctl_prog.c + - selinux: access policycaps with READ_ONCE/WRITE_ONCE + - samples/bpf: Fix possible deadlock in xdpsock + - drm/amd/display: Check clock table return + - riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO + - cpufreq: sti-cpufreq: add stih418 support + - USB: adutux: fix debugging + - uio: free uio id after uio file node is freed + - coresight: Make sysfs functional on topologies with per core sink + - drm/amdgpu: No sysfs, not an error condition + - mac80211: add missing queue/hash initialization to 802.3 xmit + - usb: xhci: omit duplicate actions when suspending a runtime suspended host. + - SUNRPC: Mitigate cond_resched() in xprt_transmit() + - cpuidle: tegra: Correctly handle result of arm_cpuidle_simple_enter() + - arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE + - can: flexcan: disable clocks during stop mode + - habanalabs: remove security from ARB_MST_QUIET register + - xfs: don't free rt blocks when we're doing a REMAP bunmapi call + - xfs: avoid LR buffer overrun due to crafted h_len + - ACPI: Add out of bounds and numa_off protections to pxm_to_node() + - octeontx2-af: fix LD CUSTOM LTYPE aliasing + - brcmfmac: Fix warning message after dongle setup failed + - ath11k: Use GFP_ATOMIC instead of GFP_KERNEL in ath11k_dp_htt_get_ppdu_desc + - ath11k: fix warning caused by lockdep_assert_held + - ath11k: change to disable softirqs for ath11k_regd_update to solve deadlock + - drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values + - usb: dwc3: core: do not queue work if dr_mode is not USB_DR_MODE_OTG + - bus: mhi: core: Abort suspends due to outgoing pending packets + - bus/fsl_mc: Do not rely on caller to provide non NULL mc_io + - ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3 + - power: supply: test_power: add missing newlines when printing parameters by + sysfs + - drm/amd/display: HDMI remote sink need mode validation for Linux + - drm/amd/display: Avoid set zero in the requested clk + - ARC: [dts] fix the errors detected by dtbs_check + - block: Consider only dispatched requests for inflight statistic + - btrfs: fix replace of seed device + - md/bitmap: md_bitmap_get_counter returns wrong blocks + - f2fs: fix to set SBI_NEED_FSCK flag for inconsistent inode + - bnxt_en: Log unknown link speed appropriately. + - rpmsg: glink: Use complete_all for open states + - PCI/ACPI: Add Ampere Altra SOC MCFG quirk + - clk: ti: clockdomain: fix static checker warning + - nfsd: rename delegation related tracepoints to make them less confusing + - net: 9p: initialize sun_server.sun_path to have addr's value only when addr + is valid + - ceph: encode inodes' parent/d_name in cap reconnect message + - drivers: watchdog: rdc321x_wdt: Fix race condition bugs + - jbd2: avoid transaction reuse after reformatting + - ext4: Detect already used quota file early + - KVM: PPC: Book3S HV: Do not allocate HPT for a nested guest + - scsi: core: Clean up allocation and freeing of sgtables + - gfs2: call truncate_inode_pages_final for address space glocks + - gfs2: Fix NULL pointer dereference in gfs2_rgrp_dump + - gfs2: use-after-free in sysfs deregistration + - gfs2: add validation checks for size of superblock + - Handle STATUS_IO_TIMEOUT gracefully + - cifs: handle -EINTR in cifs_setattr + - arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes + - ARM: dts: omap4: Fix sgx clock rate for 4430 + - memory: emif: Remove bogus debugfs error handling + - ARM: dts: s5pv210: Enable audio on Aries boards + - ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema + warnings + - ARM: dts: s5pv210: move fixed clocks under root node + - ARM: dts: s5pv210: move PMU node out of clock controller + - ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node + - ARM: dts: s5pv210: add RTC 32 KHz clock in Aries family + - ARM: dts: s5pv210: align SPI GPIO node name with dtschema in Aries + - soc: qcom: rpmh-rsc: Sleep waiting for tcs slots to be free + - firmware: arm_scmi: Move scmi bus init and exit calls into the driver + - nbd: make the config put is called before the notifying the waiter + - sgl_alloc_order: fix memory leak + - nvme-rdma: fix crash when connect rejected + - vmlinux.lds.h: Add PGO and AutoFDO input sections + - irqchip/loongson-htvec: Fix initial interrupt clearing + - md: fix the checking of wrong work queue + - md/raid5: fix oops during stripe resizing + - mmc: sdhci: Add LTR support for some Intel BYT based controllers + - mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN + - seccomp: Make duplicate listener detection non-racy + - selftests/x86/fsgsbase: Test PTRACE_PEEKUSER for GSBASE with invalid LDT GS + - perf/x86/intel: Fix Ice Lake event constraint table + - perf/x86/amd: Fix sampling Large Increment per Cycle events + - perf/amd/uncore: Set all slices and threads to restore perf stat -a + behaviour + - perf/x86/amd/ibs: Don't include randomized bits in get_ibs_op_count() + - perf/x86/amd/ibs: Fix raw sample data accumulation + - spi: spi-mtk-nor: fix timeout calculation overflow + - spi: sprd: Release DMA channel also on probe deferral + - extcon: ptn5150: Fix usage of atomic GPIO with sleeping GPIO chips + - leds: bcm6328, bcm6358: use devres LED registering function + - hwmon: (pmbus/max34440) Fix OC fault limits + - media: uvcvideo: Fix uvc_ctrl_fixup_xu_info() not having any effect + - fs: Don't invalidate page buffers in block_write_full_page() + - ACPI: configfs: Add missing config_item_put() to fix refcount leak + - NFS: fix nfs_path in case of a rename retry + - ACPI: button: fix handling lid state changes when input device closed + - ACPI / extlog: Check for RDMSR failure + - ACPI: debug: don't allow debugging when ACPI is disabled + - PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI + - ACPI: EC: PM: Flush EC work unconditionally after wakeup + - ACPI: EC: PM: Drop ec_no_wakeup check from acpi_ec_dispatch_gpe() + - acpi-cpufreq: Honor _PSD table setting on new AMD CPUs + - io-wq: assign NUMA node locality if appropriate + - w1: mxc_w1: Fix timeout resolution problem leading to bus error + - fs/kernel_read_file: Remove FIRMWARE_PREALLOC_BUFFER enum + - scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() + - scsi: qla2xxx: Fix MPI reset needed message + - scsi: qla2xxx: Fix reset of MPI firmware + - scsi: qla2xxx: Fix crash on session cleanup with unload + - PM: runtime: Remove link state checks in rpm_get/put_supplier() + - btrfs: qgroup: fix wrong qgroup metadata reserve for delayed inode + - btrfs: improve device scanning messages + - btrfs: qgroup: fix qgroup meta rsv leak for subvolume operations + - btrfs: sysfs: init devices outside of the chunk_mutex + - btrfs: tracepoints: output proper root owner for trace_find_free_extent() + - btrfs: reschedule if necessary when logging directory items + - btrfs: send, orphanize first all conflicting inodes when processing + references + - btrfs: send, recompute reference path after orphanization of a directory + - btrfs: use kvzalloc() to allocate clone_roots in btrfs_ioctl_send() + - btrfs: tree-checker: fix false alert caused by legacy btrfs root item + - btrfs: reschedule when cloning lots of extents + - btrfs: cleanup cow block on error + - btrfs: skip devices without magic signature when mounting + - btrfs: tree-checker: validate number of chunk stripes and parity + - btrfs: fix use-after-free on readahead extent after failure to create it + - btrfs: fix readahead hang and use-after-free after removing a device + - btrfs: drop the path before adding block group sysfs files + - usb: dwc3: pci: Allow Elkhart Lake to utilize DSM method for PM + functionality + - usb: dwc3: ep0: Fix ZLP for OUT ep0 requests + - usb: dwc3: gadget: Check MPS of the request length + - usb: dwc3: gadget: Reclaim extra TRBs after request completion + - usb: dwc3: core: add phy cleanup for probe error handling + - usb: dwc3: core: don't trigger runtime pm when remove driver + - usb: dwc3: gadget: Resume pending requests after CLEAR_STALL + - usb: dwc3: gadget: END_TRANSFER before CLEAR_STALL command + - usb: cdns3: gadget: improve the set_configuration handling + - usb: cdns3: Fix on-chip memory overflow issue + - usb: cdc-acm: fix cooldown mechanism + - usb: typec: tcpm: reset hard_reset_count for any disconnect + - usb: host: fsl-mph-dr-of: check return of dma_set_mask() + - usbcore: Check both id_table and match() when both available + - USB: apple-mfi-fastcharge: don't probe unhandled devices + - drm/i915: Force VT'd workarounds when running as a guest OS + - vt: keyboard, simplify vt_kdgkbsent + - vt: keyboard, extend func_buf_lock to readers + - HID: wacom: Avoid entering wacom_wac_pen_report for pad / battery + - x86/mce: Allow for copy_mc_fragile symbol checksum to be generated + - tty: serial: 21285: fix lockup on open + - tty: serial: fsl_lpuart: LS1021A has a FIFO size of 16 words, like LS1028A + - Revert "vhost-vdpa: fix page pinning leakage in error path" + - powerpc: Fix random segfault when freeing hugetlb range + - udf: Fix memory leak when mounting + - dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status + - vdpa_sim: Fix DMA mask + - iio: ltc2983: Fix of_node refcounting + - iio: adc: at91-sama5d2_adc: fix DMA conversion crash + - iio:imu:inv_mpu6050 Fix dma and ts alignment and data leak issues. + - iio:imu:st_lsm6dsx: check st_lsm6dsx_shub_read_output return + - iio:light:si1145: Fix timestamp alignment and prevent data leak. + - iio: adc: gyroadc: fix leak of device node iterator + - iio: ad7292: Fix of_node refcounting + - iio:adc:ti-adc0832 Fix alignment issue with timestamp + - iio:adc:ti-adc12138 Fix alignment issue with timestamp + - iio:imu:st_lsm6dsx Fix alignment and data leak issues + - iio:gyro:itg3200: Fix timestamp alignment and prevent data leak. + - powerpc/drmem: Make lmb_size 64 bit + - rcu-tasks: Fix grace-period/unlock race in RCU Tasks Trace + - rcu-tasks: Fix low-probability task_struct leak + - rcu-tasks: Enclose task-list scan in rcu_read_lock() + - MIPS: DEC: Restore bootmem reservation for firmware working memory area + - MIPS: configs: lb60: Fix defconfig not selecting correct board + - s390/stp: add locking to sysfs functions + - powerpc: Warn about use of smt_snooze_delay + - powerpc/memhotplug: Make lmb size 64bit + - powerpc/powernv/elog: Fix race while processing OPAL error log event. + - powerpc/powermac: Fix low_sleep_handler with KUAP and KUEP + - powerpc/mce: Avoid nmi_enter/exit in real mode on pseries hash + - powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct + - powerpc/32: Fix vmap stack - Properly set r1 before activating MMU + - block: advance iov_iter on bio_add_hw_page failure + - io_uring: use type appropriate io_kiocb handler for double poll + - gfs2: Make sure we don't miss any delayed withdraws + - gfs2: Only access gl_delete for iopen glocks + - NFSv4: Wait for stateid updates after CLOSE/OPEN_DOWNGRADE + - NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag + - NFSD: Add missing NFSv2 .pc_func methods + - ubifs: dent: Fix some potential memory leaks while iterating entries + - ubifs: xattr: Fix some potential memory leaks while iterating entries + - ubifs: journal: Make sure to not dirty twice for auth nodes + - ubifs: Fix a memleak after dumping authentication mount options + - ubifs: Don't parse authentication mount options in remount process + - ubifs: mount_ubifs: Release authentication resource in error handling path + - perf vendor events amd: Add L2 Prefetch events for zen1 + - perf python scripting: Fix printable strings in python3 scripts + - ARC: perf: redo the pct irq missing in device-tree handling + - ubi: check kthread_should_stop() after the setting of task state + - ia64: fix build error with !COREDUMP + - rtc: rx8010: don't modify the global rtc ops + - i2c: imx: Fix external abort on interrupt in exit paths + - drm/amdgpu: don't map BO in reserved region + - drm/amd/display: Fix incorrect backlight register offset for DCN + - drm/amd/display: Increase timeout for DP Disable + - drm/amdgpu/vcn1.0: fix no previous prototype for functions + - drm/amdgpu: vcn and jpeg ring synchronization + - drm/amdgpu: correct the gpu reset handling for job != NULL case + - drm/amdkfd: Use same SQ prefetch setting as amdgpu + - drm/amd/display: Avoid MST manager resource leak. + - drm/amdgpu: increase the reserved VM size to 2MB + - drm/amd/display: Don't invoke kgdb_breakpoint() unconditionally + - drm/amd/display: Fix kernel panic by dal_gpio_open() error + - ceph: promote to unsigned long long before shifting + - libceph: clear con->out_msg on Policy::stateful_server faults + - 9P: Cast to loff_t before multiplying + - net/sunrpc: Fix return value for sysctl sunrpc.transports + - PCI: qcom: Make sure PCIe is reset before init for rev 2.1.0 + - ring-buffer: Return 0 on success from ring_buffer_resize() + - intel_idle: Ignore _CST if control cannot be taken from the platform + - intel_idle: Fix max_cstate for processor models without C-state tables + - cpufreq: Introduce CPUFREQ_NEED_UPDATE_LIMITS driver flag + - vringh: fix __vringh_iov() when riov and wiov are different + - ext4: fix leaking sysfs kobject after failed mount + - ext4: fix error handling code in add_new_gdb + - ext4: fix invalid inode checksum + - ext4: clear buffer verified flag if read meta block from disk + - ext4: fix bdev write error check failed when mount fs with ro + - ext4: fix bs < ps issue reported with dioread_nolock mount opt + - ext4: do not use extent after put_bh + - drm/ttm: fix eviction valuable range check. + - mmc: sdhci-of-esdhc: make sure delay chain locked for HS400 + - mmc: sdhci-of-esdhc: set timeout to max before tuning + - mmc: sdhci: Use Auto CMD Auto Select only when v4_mode is true + - memory: tegra: Remove GPU from DRM IOMMU group + - memory: brcmstb_dpfe: Fix memory leak + - futex: Adjust absolute futex timeouts with per time namespace offset + - drm/amd/pm: increase mclk switch threshold to 200 us + - tty: make FONTX ioctl use the tty pointer they were actually passed + - arm64: berlin: Select DW_APB_TIMER_OF + - [Config] update annotations for DW_APB_TIMER + - cachefiles: Handle readpage error correctly + - hil/parisc: Disable HIL driver when it gets stuck + - arm: dts: mt7623: add missing pause for switchport + - ARM: aspeed: g5: Do not set sirq polarity + - ARM: dts: s5pv210: fix pinctrl property of "vibrator-en" regulator in Aries + - ARM: config: aspeed: Fix selection of media drivers + - ARM: samsung: fix PM debug build with DEBUG_LL but !MMU + - ARM: s3c24xx: fix missing system reset + - arm64: Change .weak to SYM_FUNC_START_WEAK_PI for arch/arm64/lib/mem*.S + - arm64: dts: marvell: espressobin: Add ethernet switch aliases + - null_blk: synchronization fix for zoned device + - coresight: cti: Initialize dynamic sysfs attributes + - device property: Keep secondary firmware node secondary by type + - device property: Don't clear secondary pointer for shared primary firmware + node + - KVM: arm64: Fix AArch32 handling of DBGD{CCINT,SCRext} and DBGVCR + - staging: fieldbus: anybuss: jump to correct label in an error path + - staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice + - staging: octeon: repair "fixed-link" support + - staging: octeon: Drop on uncorrectable alignment or FCS error + - cpufreq: Introduce cpufreq_driver_test_flags() + - cpufreq: schedutil: Always call driver if CPUFREQ_NEED_UPDATE_LIMITS is set + - time: Prevent undefined behaviour in timespec64_to_ns() + - block: add capacity field to zone descriptors + - null_blk: introduce zone capacity for zoned device + - null_blk: Fix zone reset all tracing + - null_blk: Fix locking in zoned mode + - usb: dwc2: Avoid leaving the error_debugfs label unused + + * [HP 635] Radeon 6310 brightness control does not work (LP: #1894667) // + Groovy update: upstream stable patchset 2020-12-14 (LP: #1908150) + - ACPI: video: use ACPI backlight for HP 635 Notebook + + * CVE-2020-28974 + - vt: Disable KD_FONT_OP_COPY + + * stack trace in kernel (LP: #1903596) + - net: napi: remove useless stack trace + + * Refresh ACPI wakeup power to make Thunderbolt hotplug detection work + (LP: #1906229) + - PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup() + - PM: ACPI: Refresh wakeup device power configuration every time + + * CVE-2020-27777 + - powerpc/rtas: Restrict RTAS requests from userspace + - [Config]: Set CONFIG_PPC_RTAS_FILTER + + * NULL pointer dereference when configuring multi-function with devfn != 0 + before devfn == 0 (LP: #1903682) + - s390/pci: fix hot-plug of PCI function missing bus + + * [UBUNTU 20.10] Applications runing in QEMU/KVM get translation faults + (LP: #1906255) + - s390: fix fpu restore in entry.S + + * Add dpcd backlight control for 0x4c83 0x4f41 (LP: #1905663) + - SAUCE: drm/dp: Add dpcd backlight control for 0x4c83 0x4f41 + + -- Ian May Mon, 08 Feb 2021 18:58:55 -0600 + +linux (5.8.0-43.49) groovy; urgency=medium + + * groovy/linux: 5.8.0-43.49 -proposed tracker (LP: #1914689) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Exploitable vulnerabilities in AF_VSOCK implementation (LP: #1914668) + - vsock: fix the race conditions in multi-transport support + + -- Khalid Elmously Thu, 04 Feb 2021 21:41:23 -0500 + +linux (5.8.0-41.46) groovy; urgency=medium + + * groovy/linux: 5.8.0-41.46 -proposed tracker (LP: #1912219) + + * Groovy update: upstream stable patchset 2020-12-17 (LP: #1908555) // nvme + drive fails after some time (LP: #1910866) + - Revert "nvme-pci: remove last_sq_tail" + + * initramfs unpacking failed (LP: #1835660) + - SAUCE: lib/decompress_unlz4.c: correctly handle zero-padding around initrds. + + * overlay: permission regression in 5.4.0-51.56 due to patches related to + CVE-2020-16120 (LP: #1900141) + - ovl: do not fail because of O_NOATIME + + -- Kleber Sacilotto de Souza Mon, 18 Jan 2021 17:01:08 +0100 + +linux (5.8.0-40.45) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Kleber Sacilotto de Souza Fri, 15 Jan 2021 11:10:22 +0100 + +linux (5.8.0-38.43) groovy; urgency=medium + + * groovy/linux: 5.8.0-38.43 -proposed tracker (LP: #1911143) + + * CVE-2020-28374 + - SAUCE: target: fix XCOPY NAA identifier lookup + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Kleber Sacilotto de Souza Tue, 12 Jan 2021 12:40:28 +0100 + +linux (5.8.0-36.40) groovy; urgency=medium + + * debian/scripts/file-downloader does not handle positive failures correctly + (LP: #1878897) + - [Packaging] file-downloader not handling positive failures correctly + + -- Thadeu Lima de Souza Cascardo Tue, 05 Jan 2021 17:57:31 -0300 + +linux (5.8.0-35.39) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * CVE-2021-1052 // CVE-2021-1053 + - [Packaging] NVIDIA -- Add the NVIDIA 460 driver + + -- Thadeu Lima de Souza Cascardo Tue, 05 Jan 2021 12:39:03 -0300 + +linux (5.8.0-34.37) groovy; urgency=medium + + * groovy/linux: 5.8.0-34.37 -proposed tracker (LP: #1907576) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [Ubuntu 21.04 FEAT] mpt3sas: Request to include the patch set which supports + topology where zoning is enabled in expander (LP: #1899802) + - scsi: mpt3sas: Define hba_port structure + - scsi: mpt3sas: Allocate memory for hba_port objects + - scsi: mpt3sas: Rearrange _scsih_mark_responding_sas_device() + - scsi: mpt3sas: Update hba_port's sas_address & phy_mask + - scsi: mpt3sas: Get device objects using sas_address & portID + - scsi: mpt3sas: Rename transport_del_phy_from_an_existing_port() + - scsi: mpt3sas: Get sas_device objects using device's rphy + - scsi: mpt3sas: Update hba_port objects after host reset + - scsi: mpt3sas: Set valid PhysicalPort in SMPPassThrough + - scsi: mpt3sas: Handling HBA vSES device + - scsi: mpt3sas: Add bypass_dirty_port_flag parameter + - scsi: mpt3sas: Handle vSES vphy object during HBA reset + - scsi: mpt3sas: Add module parameter multipath_on_hba + - scsi: mpt3sas: Bump driver version to 35.101.00.00 + + * CVE-2020-12912 + - hwmon: (amd_energy) modify the visibility of the counters + + * Intel Tiger Lake IDs supplement (LP: #1904521) + - mtd: spi-nor: intel-spi: Add support for Intel Tiger Lake-H SPI serial flash + - pinctrl: tigerlake: Add support for Tiger Lake-H + + * [i915] Noise-like lines of graphics corruption when moving windows in Xorg + sessions (LP: #1896091) + - Revert "UBUNTU: SAUCE: drm/i915: Synchronize active and retire callbacks" + + * Fix no headset sound after S3 on Intel HDA (LP: #1904595) + - ALSA: hda: Refactor codec PM to use direct-complete optimization + - ALSA: hda: Separate runtime and system suspend + - ALSA: hda: Reinstate runtime_allow() for all hda controllers + + * Ask 8821C Bluetooth controller to drop old firmware (LP: #1904221) + - Bluetooth: btrtl: Ask 8821C to drop old firmware + - Bluetooth: btrtl: fix incorrect skb allocation failure check + + * Use ACPI S5 for reboot (LP: #1904225) + - PM: ACPI: reboot: Use S5 for reboot + + * Groovy update: v5.8.18 upstream stable release (LP: #1904941) + - netfilter: nftables_offload: KASAN slab-out-of-bounds Read in + nft_flow_rule_create + - io_uring: don't run task work on an exiting task + - io_uring: allow timeout/poll/files killing to take task into account + - io_uring: move dropping of files into separate helper + - io_uring: stash ctx task reference for SQPOLL + - io_uring: unconditionally grab req->task + - io_uring: return cancelation status from poll/timeout/files handlers + - io_uring: enable task/files specific overflow flushing + - io_uring: don't rely on weak ->files references + - io_uring: reference ->nsproxy for file table commands + - io_wq: Make io_wqe::lock a raw_spinlock_t + - io-wq: fix use-after-free in io_wq_worker_running + - io_uring: no need to call xa_destroy() on empty xarray + - io_uring: Fix use of XArray in __io_uring_files_cancel + - io_uring: Fix XArray usage in io_uring_add_task_file + - io_uring: Convert advanced XArray uses to the normal API + - scripts/setlocalversion: make git describe output more reliable + - efi/arm64: libstub: Deal gracefully with EFI_RNG_PROTOCOL failure + - fs/kernel_read_file: Remove FIRMWARE_EFI_EMBEDDED enum + - arm64: Run ARCH_WORKAROUND_1 enabling code on all CPUs + - arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs + - arm64: link with -z norelro regardless of CONFIG_RELOCATABLE + - x86/PCI: Fix intel_mid_pci.c build error when ACPI is not enabled + - x86, powerpc: Rename memcpy_mcsafe() to copy_mc_to_{user, kernel}() + - [Config] update config for ARCH_HAS_COPY_MC + - x86/copy_mc: Introduce copy_mc_enhanced_fast_string() + - bnxt_en: Check abort error state in bnxt_open_nic(). + - bnxt_en: Fix regression in workqueue cleanup logic in bnxt_remove_one(). + - bnxt_en: Invoke cancel_delayed_work_sync() for PFs also. + - bnxt_en: Re-write PCI BARs after PCI fatal error. + - bnxt_en: Send HWRM_FUNC_RESET fw command unconditionally. + - chelsio/chtls: fix deadlock issue + - chelsio/chtls: fix memory leaks in CPL handlers + - chelsio/chtls: fix tls record info to user + - cxgb4: set up filter action after rewrites + - gtp: fix an use-before-init in gtp_newlink() + - ibmveth: Fix use of ibmveth in a bridge. + - ibmvnic: fix ibmvnic_set_mac + - mlxsw: core: Fix memory leak on module removal + - netem: fix zero division in tabledist + - net: hns3: Clear the CMDQ registers before unmapping BAR region + - net: ipa: command payloads already mapped + - net/sched: act_mpls: Add softdep on mpls_gso.ko + - r8169: fix issue with forced threading in combination with shared interrupts + - ravb: Fix bit fields checking in ravb_hwtstamp_get() + - tcp: Prevent low rmem stalls with SO_RCVLOWAT. + - tipc: fix memory leak caused by tipc_buf_append() + - net: protect tcf_block_unbind with block lock + - erofs: avoid duplicated permission check for "trusted." xattrs + - arch/x86/amd/ibs: Fix re-arming IBS Fetch + - x86/traps: Fix #DE Oops message regression + - x86/xen: disable Firmware First mode for correctable memory errors + - PCI: aardvark: Fix initialization with old Marvell's Arm Trusted Firmware + - ata: ahci: mvebu: Make SATA PHY optional for Armada 3720 + - fuse: fix page dereference after free + - bpf: Fix comment for helper bpf_current_task_under_cgroup() + - evm: Check size of security.evm before using it + - p54: avoid accessing the data mapped to streaming DMA + - cxl: Rework error message for incompatible slots + - RDMA/addr: Fix race with netevent_callback()/rdma_addr_cancel() + - mtd: lpddr: Fix bad logic in print_drs_error + - drm/i915/gem: Serialise debugfs i915_gem_objects with ctx->mutex + - serial: qcom_geni_serial: To correct QUP Version detection logic + - serial: pl011: Fix lockdep splat when handling magic-sysrq interrupt + - PM: runtime: Fix timer_expires data type on 32-bit arches + - ata: sata_rcar: Fix DMA boundary mask + - xen/gntdev.c: Mark pages as dirty + - openrisc: Fix issue with get_user for 64-bit values + - misc: rtsx: do not setting OC_POWER_DOWN reg in rtsx_pci_init_ocp() + - phy: marvell: comphy: Convert internal SMCC firmware return codes to errno + - Linux 5.8.18 + + * linux-riscv 5.8.0-9-generic (all 5.8 kernels) fail to boot in qemu + (LP: #1904912) + - riscv: Fixup bootup failure with HARDENED_USERCOPY + + * Bionic: btrfs: kernel BUG at /build/linux- + eTBZpZ/linux-4.15.0/fs/btrfs/ctree.c:3233! (LP: #1902254) + - btrfs: tree-checker: fix incorrect printk format + + -- Stefan Bader Thu, 10 Dec 2020 18:42:54 +0100 + +linux (5.8.0-33.36) groovy; urgency=medium + + * groovy/linux: 5.8.0-33.36 -proposed tracker (LP: #1907408) + + * raid10: discard leads to corrupted file system (LP: #1907262) + - Revert "dm raid: remove unnecessary discard limits for raid10" + - Revert "dm raid: fix discard limits for raid1 and raid10" + - Revert "md/raid10: improve discard request for far layout" + - Revert "md/raid10: improve raid10 discard request" + - Revert "md/raid10: pull codes that wait for blocked dev into one function" + - Revert "md/raid10: extend r10bio devs to raid disks" + - Revert "md: add md_submit_discard_bio() for submitting discard bio" + + -- Khalid Elmously Wed, 09 Dec 2020 03:56:47 -0500 + +linux (5.8.0-31.33) groovy; urgency=medium + + * groovy/linux: 5.8.0-31.33 -proposed tracker (LP: #1905299) + + * Groovy 5.8 kernel hangs on boot on CPUs with eLLC (LP: #1903397) + - drm/i915: Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup + during fbdev init + + * CVE-2020-4788 + - selftests/powerpc: rfi_flush: disable entry flush if present + - powerpc/64s: flush L1D on kernel entry + - powerpc/64s: flush L1D after user accesses + - selftests/powerpc: entry flush test + + -- Thadeu Lima de Souza Cascardo Mon, 23 Nov 2020 15:03:08 -0300 + +linux (5.8.0-30.32) groovy; urgency=medium + + * groovy/linux: 5.8.0-30.32 -proposed tracker (LP: #1903194) + + * Update kernel packaging to support forward porting kernels (LP: #1902957) + - [Debian] Update for leader included in BACKPORT_SUFFIX + + * Avoid double newline when running insertchanges (LP: #1903293) + - [Packaging] insertchanges: avoid double newline + + * EFI: Fails when BootCurrent entry does not exist (LP: #1899993) + - efivarfs: Replace invalid slashes with exclamation marks in dentries. + + * raid10: Block discard is very slow, causing severe delays for mkfs and + fstrim operations (LP: #1896578) + - md: add md_submit_discard_bio() for submitting discard bio + - md/raid10: extend r10bio devs to raid disks + - md/raid10: pull codes that wait for blocked dev into one function + - md/raid10: improve raid10 discard request + - md/raid10: improve discard request for far layout + - dm raid: fix discard limits for raid1 and raid10 + - dm raid: remove unnecessary discard limits for raid10 + + * Bionic: btrfs: kernel BUG at /build/linux- + eTBZpZ/linux-4.15.0/fs/btrfs/ctree.c:3233! (LP: #1902254) + - btrfs: extent_io: do extra check for extent buffer read write functions + - btrfs: extent-tree: kill BUG_ON() in __btrfs_free_extent() + - btrfs: extent-tree: kill the BUG_ON() in insert_inline_extent_backref() + - btrfs: ctree: check key order before merging tree blocks + + * Tiger Lake PMC core driver fixes (LP: #1899883) + - platform/x86: intel_pmc_core: update TGL's LPM0 reg bit map name + - platform/x86: intel_pmc_core: fix bound check in pmc_core_mphy_pg_show() + - platform/x86: pmc_core: Use descriptive names for LPM registers + - platform/x86: intel_pmc_core: Fix TigerLake power gating status map + - platform/x86: intel_pmc_core: Fix the slp_s0 counter displayed value + + * drm/i915/dp_mst - System would hang during the boot up. (LP: #1902469) + - Revert "UBUNTU: SAUCE: drm/i915/display: Fix null deref in + intel_psr_atomic_check()" + - drm/i915: Fix encoder lookup during PSR atomic check + + * Undetected Data corruption in MPI workloads that use VSX for reductions on + POWER9 DD2.1 systems (LP: #1902694) + - powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation + - selftests/powerpc: Make alignment handler test P9N DD2.1 vector CI load + workaround + + * [20.04 FEAT] Support/enhancement of NVMe IPL (LP: #1902179) + - s390/ipl: support NVMe IPL kernel parameters + + * uvcvideo: add mapping for HEVC payloads (LP: #1895803) + - media: uvcvideo: Add mapping for HEVC payloads + + * risc-v 5.8 kernel oops on ftrace tests (LP: #1894613) + - stop_machine, rcu: Mark functions as notrace + + * Groovy update: v5.8.17 upstream stable release (LP: #1902137) + - xgb4: handle 4-tuple PEDIT to NAT mode translation + - ibmveth: Switch order of ibmveth_helper calls. + - ibmveth: Identify ingress large send packets. + - ipv4: Restore flowi4_oif update before call to xfrm_lookup_route + - mlx4: handle non-napi callers to napi_poll + - net: dsa: microchip: fix race condition + - net: fec: Fix phy_device lookup for phy_reset_after_clk_enable() + - net: fec: Fix PHY init after phy_reset_after_clk_enable() + - net: fix pos incrementment in ipv6_route_seq_next + - net: ipa: skip suspend/resume activities if not set up + - net: mptcp: make DACK4/DACK8 usage consistent among all subflows + - net: sched: Fix suspicious RCU usage while accessing tcf_tunnel_info + - net/smc: fix use-after-free of delayed events + - net/smc: fix valid DMBE buffer sizes + - net/tls: sendfile fails with ktls offload + - net: usb: qmi_wwan: add Cellient MPL200 card + - tipc: fix the skb_unshare() in tipc_buf_append() + - socket: fix option SO_TIMESTAMPING_NEW + - socket: don't clear SOCK_TSTAMP_NEW when SO_TIMESTAMPNS is disabled + - can: m_can_platform: don't call m_can_class_suspend in runtime suspend + - can: j1935: j1939_tp_tx_dat_new(): fix missing initialization of skbcnt + - net: j1939: j1939_session_fresh_new(): fix missing initialization of skbcnt + - net/ipv4: always honour route mtu during forwarding + - net_sched: remove a redundant goto chain check + - r8169: fix data corruption issue on RTL8402 + - binder: fix UAF when releasing todo list + - ALSA: bebob: potential info leak in hwdep_read() + - ALSA: hda/hdmi: fix incorrect locking in hdmi_pcm_close + - tipc: re-configure queue limit for broadcast link + - tipc: fix incorrect setting window for bcast link + - chelsio/chtls: fix socket lock + - chelsio/chtls: correct netdevice for vlan interface + - chelsio/chtls: fix panic when server is on ipv6 + - chelsio/chtls: Fix panic when listen on multiadapter + - chelsio/chtls: correct function return and return type + - chelsio/chtls: fix writing freed memory + - ibmvnic: save changed mac address to adapter->mac_addr + - icmp: randomize the global rate limiter + - mptcp: initialize mptcp_options_received's ahmac + - net: ftgmac100: Fix Aspeed ast2600 TX hang issue + - net: hdlc: In hdlc_rcv, check to make sure dev is an HDLC device + - net: hdlc_raw_eth: Clear the IFF_TX_SKB_SHARING flag after calling + ether_setup + - net: Properly typecast int values to set sk_max_pacing_rate + - net/sched: act_ct: Fix adding udp port mangle operation + - net/sched: act_tunnel_key: fix OOB write in case of IPv6 ERSPAN tunnels + - nexthop: Fix performance regression in nexthop deletion + - nfc: Ensure presence of NFC_ATTR_FIRMWARE_NAME attribute in + nfc_genl_fw_download() + - r8169: fix operation under forced interrupt threading + - selftests: forwarding: Add missing 'rp_filter' configuration + - tcp: fix to update snd_wl1 in bulk receiver fast path + - net: ethernet: mtk-star-emac: select REGMAP_MMIO + - net/sched: act_gate: Unlock ->tcfa_lock in tc_setup_flow_action() + - ALSA: hda - Don't register a cb func if it is registered already + - ALSA: hda - Fix the return value if cb func is already registered + - ALSA: usb-audio: Line6 Pod Go interface requires static clock rate quirk + - ALSA: hda/realtek - set mic to auto detect on a HP AIO machine + - ALSA: hda/realtek - Add mute Led support for HP Elitebook 845 G7 + - ALSA: hda/realtek: Enable audio jacks of ASUS D700SA with ALC887 + - cifs: remove bogus debug code + - cifs: Return the error from crypt_message when enc/dec key not found. + - SMB3: Resolve data corruption of TCP server info fields + - SMB3.1.1: Fix ids returned in POSIX query dir + - smb3: do not try to cache root directory if dir leases not supported + - smb3: fix stat when special device file and mounted with modefromsid + - arm64: Make use of ARCH_WORKAROUND_1 even when KVM is not enabled + - KVM: nVMX: Morph notification vector IRQ on nested VM-Enter to pending PI + - KVM: nVMX: Reset the segment cache when stuffing guest segs + - KVM: nVMX: Reload vmcs01 if getting vmcs12's pages fails + - KVM: x86/mmu: Commit zap of remaining invalid pages when recovering lpages + - KVM: x86: Intercept LA57 to inject #GP fault when it's reserved + - KVM: SVM: Initialize prev_ga_tag before use + - ima: Don't ignore errors from crypto_shash_update() + - crypto: algif_aead - Do not set MAY_BACKLOG on the async path + - crypto: caam/qi - add fallback for XTS with more than 8B IV + - crypto: caam/qi - add support for more XTS key lengths + - RAS/CEC: Fix cec_init() prototype + - sched/fair: Fix wrong negative conversion in find_energy_efficient_cpu() + - microblaze: fix kbuild redundant file warning + - EDAC/i5100: Fix error handling order in i5100_init_one() + - EDAC/aspeed: Fix handling of platform_get_irq() error + - EDAC/ti: Fix handling of platform_get_irq() error + - perf/x86/intel/ds: Fix x86_pmu_stop warning for large PEBS + - x86/fpu: Allow multiple bits in clearcpuid= parameter + - arm64: kprobe: add checks for ARMv8.3-PAuth combined instructions + - drivers/perf: xgene_pmu: Fix uninitialized resource struct + - drivers/perf: thunderx2_pmu: Fix memory resource error handling + - sched/fair: Fix wrong cpu selecting from isolated domain + - sched/fair: Use dst group while checking imbalance for NUMA balancer + - arm64: perf: Add missing ISB in armv8pmu_enable_counter() + - perf/x86/intel/uncore: Update Ice Lake uncore units + - perf/x86/intel/uncore: Reduce the number of CBOX counters + - perf/x86/intel/uncore: Fix the scale of the IMC free-running events + - x86/nmi: Fix nmi_handle() duration miscalculation + - x86/events/amd/iommu: Fix sizeof mismatch + - pinctrl: qcom: Set IRQCHIP_SET_TYPE_MASKED and IRQCHIP_MASK_ON_SUSPEND flags + - pinctrl: qcom: Use return value from irq_set_wake() call + - perf/x86: Fix n_pair for cancelled txn + - perf/core: Fix race in the perf_mmap_close() function + - crypto: algif_skcipher - EBUSY on aio should be an error + - crypto: mediatek - Fix wrong return value in mtk_desc_ring_alloc() + - crypto: ixp4xx - Fix the size used in a 'dma_free_coherent()' call + - crypto: picoxcell - Fix potential race condition bug + - media: vivid: Fix global-out-of-bounds read in precalculate_color() + - media: tuner-simple: fix regression in simple_set_radio_freq + - crypto: ccree - fix runtime PM imbalance on error + - media: Revert "media: exynos4-is: Add missed check for + pinctrl_lookup_state()" + - media: hantro: h264: Get the correct fallback reference buffer + - media: hantro: postproc: Fix motion vector space allocation + - media: ov5640: Correct Bit Div register in clock tree diagram + - media: m5mols: Check function pointer in m5mols_sensor_power + - fscrypt: restrict IV_INO_LBLK_32 to ino_bits <= 32 + - media: uvcvideo: Set media controller entity functions + - media: uvcvideo: Silence shift-out-of-bounds warning + - media: staging/intel-ipu3: css: Correctly reset some memory + - media: omap3isp: Fix memleak in isp_probe + - media: i2c: ov5640: Remain in power down for DVP mode unless streaming + - media: i2c: ov5640: Separate out mipi configuration from s_power + - media: i2c: ov5640: Enable data pins on poweron for DVP mode + - media: rcar_drif: Fix fwnode reference leak when parsing DT + - media: rcar_drif: Allocate v4l2_async_subdev dynamically + - media: rcar-csi2: Allocate v4l2_async_subdev dynamically + - spi: fsi: Handle 9 to 15 byte transfers lengths + - spi: fsi: Fix use of the bneq+ sequencer instruction + - spi: fsi: Implement restricted size for certain controllers + - spi: dw-pci: free previously allocated IRQs if desc->setup() fails + - crypto: omap-sham - fix digcnt register handling with export/import + - hwmon: (pmbus/max34440) Fix status register reads for MAX344{51,60,61} + - hwmon: (w83627ehf) Fix a resource leak in probe + - cypto: mediatek - fix leaks in mtk_desc_ring_alloc + - crypto: stm32/crc32 - Avoid lock if hardware is already used + - crypto: sun8i-ce - handle endianness of t_common_ctl + - media: mx2_emmaprp: Fix memleak in emmaprp_probe + - media: tc358743: initialize variable + - media: tc358743: cleanup tc358743_cec_isr + - media: rcar-vin: Fix a reference count leak. + - media: rockchip/rga: Fix a reference count leak. + - media: platform: fcp: Fix a reference count leak. + - media: camss: Fix a reference count leak. + - media: s5p-mfc: Fix a reference count leak + - media: stm32-dcmi: Fix a reference count leak + - media: ti-vpe: Fix a missing check and reference count leak + - regulator: resolve supply after creating regulator + - pinctrl: bcm: fix kconfig dependency warning when !GPIOLIB + - spi: spi-s3c64xx: swap s3c64xx_spi_set_cs() and s3c64xx_enable_datapath() + - spi: spi-s3c64xx: Check return values + - hwmon: (bt1-pvt) Test sensor power supply on probe + - hwmon: (bt1-pvt) Cache current update timeout + - hwmon: (bt1-pvt) Wait for the completion with timeout + - btrfs: add owner and fs_info to alloc_state io_tree + - blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue + - ath10k: provide survey info as accumulated data + - drm/vkms: fix xrgb on compute crc + - Bluetooth: hci_uart: Cancel init work before unregistering + - drm/amd/display: Fix wrong return value in dm_update_plane_state() + - drm/vgem: add missing platform_device_unregister() in vgem_init() + - drm/vkms: add missing platform_device_unregister() in vkms_init() + - drm: panel: Fix bus format for OrtusTech COM43H4M85ULC panel + - ath6kl: prevent potential array overflow in ath6kl_add_new_sta() + - ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb() + - ath10k: Fix the size used in a 'dma_free_coherent()' call in an error + handling path + - wcn36xx: Fix reported 802.11n rx_highest rate wcn3660/wcn3680 + - ASoC: qcom: lpass-platform: fix memory leak + - ASoC: qcom: lpass-cpu: fix concurrency issue + - ath11k: Fix possible memleak in ath11k_qmi_init_service + - brcmfmac: check ndev pointer + - mwifiex: Do not use GFP_KERNEL in atomic context + - staging: rtl8192u: Do not use GFP_KERNEL in atomic context + - drm/amd/display: fix potential integer overflow when shifting 32 bit + variable bl_pwm + - selftests/bpf: Fix test_vmlinux test to use bpf_probe_read_user() + - drm/gma500: fix error check + - scsi: qla4xxx: Fix an error handling path in 'qla4xxx_get_host_stats()' + - scsi: qla2xxx: Fix the size used in a 'dma_free_coherent()' call + - scsi: qla2xxx: Fix wrong return value in qlt_chk_unresolv_exchg() + - scsi: qla2xxx: Fix wrong return value in qla_nvme_register_hba() + - scsi: csiostor: Fix wrong return value in csio_hw_prep_fw() + - libbpf: Fix unintentional success return code in bpf_object__load + - wilc1000: Fix memleak in wilc_sdio_probe + - wilc1000: Fix memleak in wilc_bus_probe + - rtw88: don't treat NULL pointer as an array + - backlight: sky81452-backlight: Fix refcount imbalance on error + - staging: emxx_udc: Fix passing of NULL to dma_alloc_coherent() + - VMCI: check return value of get_user_pages_fast() for errors + - mm/error_inject: Fix allow_error_inject function signatures. + - drm: panel: Fix bpc for OrtusTech COM43H4M85ULC panel + - samples/bpf: Fix to xdpsock to avoid recycling frames + - drm/crc-debugfs: Fix memleak in crc_control_write + - Bluetooth: Clear suspend tasks on unregister + - selftests: vm: add fragment CONFIG_GUP_BENCHMARK + - scsi: ufs: Make ufshcd_print_trs() consider UFSHCD_QUIRK_PRDT_BYTE_GRAN + - binder: Remove bogus warning on failed same-process transaction + - tty: serial: earlycon dependency + - pty: do tty_flip_buffer_push without port->lock in pty_write + - pwm: lpss: Fix off by one error in base_unit math in pwm_lpss_prepare() + - pwm: lpss: Add range limit check for the base_unit register value + - drivers/virt/fsl_hypervisor: Fix error handling path + - ath11k: fix a double free and a memory leak + - video: fbdev: vga16fb: fix setting of pixclock because a pass-by-value error + - video: fbdev: sis: fix null ptr dereference + - video: fbdev: radeon: Fix memleak in radeonfb_pci_register + - ASoC: fsl: imx-es8328: add missing put_device() call in imx_es8328_probe() + - scsi: ufs: ufs-mediatek: Fix HOST_PA_TACTIVATE quirk + - HID: roccat: add bounds checking in kone_sysfs_write_settings() + - drm/msm: Avoid div-by-zero in dpu_crtc_atomic_check() + - drm/panfrost: Ensure GPU quirks are always initialised + - iomap: Clear page error before beginning a write + - iomap: Mark read blocks uptodate in write_begin + - selftests/lkdtm: Use "comm" instead of "diff" for dmesg + - Bluetooth: Re-order clearing suspend tasks + - pinctrl: mcp23s08: Fix mcp23x17_regmap initialiser + - pinctrl: mcp23s08: Fix mcp23x17 precious range + - pinctrl: devicetree: Keep deferring even on timeout + - drm/msm/adreno: fix probe without iommu + - net/mlx5: Fix uninitialized variable warning + - net/mlx5: Don't call timecounter cyc2time directly from 1PPS flow + - scsi: mpt3sas: Fix sync irqs + - net: stmmac: Fix incorrect location to set real_num_rx|tx_queues + - net: stmmac: use netif_tx_start|stop_all_queues() function + - xfs: force the log after remapping a synchronous-writes file + - cpufreq: armada-37xx: Add missing MODULE_DEVICE_TABLE + - drm: mxsfb: check framebuffer pitch + - ima: Fix NULL pointer dereference in ima_file_hash + - ASoC: topology: disable size checks for bytes_ext controls if needed + - ASoC: tlv320adcx140: Fix digital gain range + - coresight: etm4x: Fix etm4_count race by moving cpuhp callbacks to init + - coresight: fix offset by one error in counting ports + - coresight: cti: disclaim device only when it's claimed + - coresight: cti: remove pm_runtime_get_sync() from CPU hotplug + - coresight: etm4x: Ensure default perf settings filter user/kernel + - coresight: etm4x: Fix issues within reset interface of sysfs + - coresight: cti: Write regsiters directly in cti_enable_hw() + - coresight: etm4x: Handle unreachable sink in perf mode + - coresight: etm4x: Fix issues on trcseqevr access + - nvmem: core: fix missing of_node_put() in of_nvmem_device_get() + - selftests: mptcp: interpret \n as a new line + - selftests/bpf: Fix endianness issue in sk_assign + - selftests/bpf: Fix endianness issue in test_sockopt_sk + - xhci: don't create endpoint debugfs entry before ring buffer is set. + - net: dsa: rtl8366: Check validity of passed VLANs + - net: dsa: rtl8366: Refactor VLAN/PVID init + - net: dsa: rtl8366: Skip PVID setting if not requested + - net: wilc1000: clean up resource in error path of init mon interface + - ASoC: tas2770: Fix calling reset in probe + - ASoC: tas2770: Add missing bias level power states + - ASoC: tas2770: Fix required DT properties in the code + - ASoC: tas2770: Fix error handling with update_bits + - ASoC: tlv320aic32x4: Fix bdiv clock rate derivation + - net: dsa: rtl8366rb: Support all 4096 VLANs + - ASoC: SOF: control: add size checks for ext_bytes control .put() + - ASoC: tas2770: Fix unbalanced calls to pm_runtime + - spi: omap2-mcspi: Improve performance waiting for CHSTAT + - ath11k: Add checked value for ath11k_ahb_remove + - ath6kl: wmi: prevent a shift wrapping bug in ath6kl_wmi_delete_pstream_cmd() + - drm: rcar-du: Put reference to VSP device + - phy: rockchip-dphy-rx0: Include linux/delay.h + - dmaengine: dmatest: Check list for emptiness before access its last entry + - ASoC: cros_ec_codec: fix kconfig dependency warning for + SND_SOC_CROS_EC_CODEC + - misc: mic: scif: Fix error handling path + - ALSA: seq: oss: Avoid mutex lock for a long-time ioctl + - usb: dwc2: Fix parameter type in function pointer prototype + - usb: dwc3: core: Properly default unspecified speed + - usb: dwc2: Add missing cleanups when usb_add_gadget_udc() fails + - rtw88: Fix probe error handling race with firmware loading + - rtw88: Fix potential probe error handling race with wow firmware loading + - mt76: mt7915: fix possible memory leak in mt7915_mcu_add_beacon + - quota: clear padding in v2r1_mem2diskdqb() + - slimbus: core: check get_addr before removing laddr ida + - slimbus: core: do not enter to clock pause mode in core + - slimbus: qcom-ngd-ctrl: disable ngd in qmi server down callback + - ASoC: fsl_sai: Instantiate snd_soc_dai_driver + - HID: hid-input: fix stylus battery reporting + - tty: hvc: fix link error with CONFIG_SERIAL_CORE_CONSOLE=n + - nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell() + - hv: clocksource: Add notrace attribute to read_hv_sched_clock_*() functions + - nl80211: fix OBSS PD min and max offset validation + - iomap: Use kzalloc to allocate iomap_page + - coresight: etm: perf: Fix warning caused by etm_setup_aux failure + - coresight: cti: Fix remove sysfs link error + - coresight: cti: Fix bug clearing sysfs links on callback + - coresight: etm4x: Fix save and restore of TRCVMIDCCTLR1 register + - ibmvnic: set up 200GBPS speed + - bpf: disallow attaching modify_return tracing functions to other BPF + programs + - selftests: Remove fmod_ret from test_overhead + - qtnfmac: fix resource leaks on unsupported iftype error return path + - pinctrl: aspeed: Use the right pinconf mask + - iommu/qcom: add missing put_device() call in qcom_iommu_of_xlate() + - iio: adc: stm32-adc: fix runtime autosuspend delay when slow polling + - net: enic: Cure the enic api locking trainwreck + - mfd: sm501: Fix leaks in probe() + - ASoC: wm_adsp: Pass full name to snd_ctl_notify + - iwlwifi: mvm: split a print to avoid a WARNING in ROC + - iwlwifi: dbg: remove no filter condition + - iwlwifi: dbg: run init_cfg function once per driver load + - usb: gadget: f_ncm: fix ncm_bitrate for SuperSpeed and above. + - usb: gadget: u_serial: clear suspended flag when disconnecting + - usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well + - bus: mhi: core: Fix the building of MHI module + - ocxl: fix kconfig dependency warning for OCXL + - nl80211: fix non-split wiphy information + - usb: dwc2: Fix INTR OUT transfers in DDMA mode. + - scsi: target: tcmu: Fix warning: 'page' may be used uninitialized + - scsi: be2iscsi: Fix a theoretical leak in beiscsi_create_eqs() + - dmaengine: ioat: Allocate correct size for descriptor chunk + - ipmi_si: Fix wrong return value in try_smi_init() + - tracing: Fix parse_synth_field() error handling + - platform/x86: mlx-platform: Remove PSU EEPROM configuration + - mwifiex: fix double free + - drm/panfrost: increase readl_relaxed_poll_timeout values + - ipvs: clear skb->tstamp in forwarding path + - bpf, sockmap: Remove skb_orphan and let normal skb_kfree do cleanup + - net: korina: fix kfree of rx/tx descriptor array + - netfilter: nf_log: missing vlan offload tag and proto + - mm/swapfile.c: fix potential memory leak in sys_swapon + - mm/memcg: fix device private memcg accounting + - mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary + - fs: fix NULL dereference due to data race in prepend_path() + - selftests/ftrace: Change synthetic event name for inter-event-combined test + - tracing: Handle synthetic event array field type checking correctly + - i3c: master add i3c_master_attach_boardinfo to preserve boardinfo + - IB/mlx4: Fix starvation in paravirt mux/demux + - IB/mlx4: Adjust delayed work when a dup is observed + - powerpc/pseries: Fix missing of_node_put() in rng_init() + - powerpc/icp-hv: Fix missing of_node_put() in success path + - rcu/tree: Force quiescent state on callback overload + - rcutorture: Properly set rcu_fwds for OOM handling + - RDMA/ucma: Fix locking for ctx->events_reported + - RDMA/ucma: Add missing locking around rdma_leave_multicast() + - mtd: lpddr: fix excessive stack usage with clang + - RDMA/hns: Add a check for current state before modifying QP + - RDMA/umem: Fix signature of stub ib_umem_find_best_pgsz() + - powerpc/pseries: explicitly reschedule during drmem_lmb list traversal + - pseries/drmem: don't cache node id in drmem_lmb struct + - RDMA/mlx5: Fix potential race between destroy and CQE poll + - mtd: mtdoops: Don't write panic data twice + - perf tools: Make GTK2 support opt-in + - tools feature: Add missing -lzstd to the fast path feature detection + - ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values + - xfs: fix finobt btree block recovery ordering + - m68knommu: include SDHC support only when hardware has it + - arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER + - ida: Free allocated bitmap in error path + - xfs: limit entries returned when counting fsmap records + - xfs: fix deadlock and streamline xfs_getfsmap performance + - nfs: add missing "posix" local_lock constant table definition + - xfs: fix high key handling in the rt allocator's query_range function + - RDMA/rtrs-srv: Incorporate ib_register_client into rtrs server init + - RDMA/core: Delete function indirection for alloc/free kernel CQ + - RDMA: Allow fail of destroy CQ + - RDMA/umem: Fix ib_umem_find_best_pgsz() for mappings that cross a page + boundary + - RDMA/umem: Prevent small pages from being returned by + ib_umem_find_best_pgsz() + - RDMA/qedr: Fix qp structure memory leak + - RDMA/qedr: Fix doorbell setting + - RDMA/qedr: Fix use of uninitialized field + - RDMA/qedr: Fix return code if accept is called on a destroyed qp + - RDMA/qedr: Fix inline size returned for iWARP + - powerpc/pseries/svm: Allocate SWIOTLB buffer anywhere in memory + - powerpc/watchpoint: Fix quadword instruction handling on p10 predecessors + - powerpc/watchpoint: Fix handling of vector instructions + - powerpc/watchpoint: Add hw_len wherever missing + - powerpc/book3s64/hash/4k: Support large linear mapping range with 4K + - powerpc/tau: Use appropriate temperature sample interval + - powerpc/tau: Convert from timer to workqueue + - powerpc/tau: Remove duplicated set_thresholds() call + - powerpc/tau: Check processor type before enabling TAU interrupt + - powerpc/tau: Disable TAU between measurements + - powerpc/kasan: Fix CONFIG_KASAN_VMALLOC for 8xx + - powerpc/64s/radix: Fix mm_cpumask trimming race vs kthread_use_mm + - RDMA/cma: Combine cma_ndev_work with cma_work + - RDMA/cma: Remove dead code for kernel rdmacm multicast + - RDMA/cma: Consolidate the destruction of a cma_multicast in one place + - RDMA/cma: Fix use after free race in roce multicast join + - perf intel-pt: Fix "context_switch event has no tid" error + - RDMA/qedr: Fix resource leak in qedr_create_qp + - RDMA/hns: Set the unsupported wr opcode + - RDMA/mlx5: Use set_mkc_access_pd_addr_fields() in reg_create() + - RDMA/mlx5: Make mkeys always owned by the kernel's PD when not enabled + - RDMA/mlx5: Disable IB_DEVICE_MEM_MGT_EXTENSIONS if IB_WR_REG_MR can't work + - i40iw: Add support to make destroy QP synchronous + - perf stat: Skip duration_time in setup_system_wide + - RDMA/hns: Add check for the validity of sl configuration + - RDMA/hns: Solve the overflow of the calc_pg_sz() + - RDMA/hns: Fix the wrong value of rnr_retry when querying qp + - RDMA/hns: Fix configuration of ack_req_freq in QPC + - RDMA/hns: Fix missing sq_sig_type when querying QP + - mtd: hyperbus: hbmc-am654: Fix direct mapping setup flash access + - mtd: rawnand: stm32_fmc2: fix a buffer overflow + - mtd: rawnand: vf610: disable clk on error handling path in probe + - mtd: spinand: gigadevice: Only one dummy byte in QUADIO + - mtd: spinand: gigadevice: Add QE Bit + - mtd: rawnand: ams-delta: Fix non-OF build warning + - kdb: Fix pager search for multi-line strings + - overflow: Include header file with SIZE_MAX declaration + - RDMA/ipoib: Set rtnl_link_ops for ipoib interfaces + - powerpc/64: fix irq replay missing preempt + - powerpc/64: fix irq replay pt_regs->softe value + - powerpc/perf: Exclude pmc5/6 from the irrelevant PMU group constraints + - powerpc/perf/hv-gpci: Fix starting index value + - perf stat: Fix out of bounds CPU map access when handling armv8_pmu events + - i3c: master: Fix error return in cdns_i3c_master_probe() + - powerpc/papr_scm: Add PAPR command family to pass-through command-set + - cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_reboot_notifier + - IB/rdmavt: Fix sizeof mismatch + - RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt() + - f2fs: reject CASEFOLD inode flag without casefold feature + - um: vector: Use GFP_ATOMIC under spin lock + - um: time-travel: Fix IRQ handling in time_travel_handle_message() + - maiblox: mediatek: Fix handling of platform_get_irq() error + - perf trace: Fix off by ones in memset() after realloc() in arches using + libaudit + - selftests/powerpc: Fix eeh-basic.sh exit codes + - f2fs: wait for sysfs kobject removal before freeing f2fs_sb_info + - afs: Fix rapid cell addition/removal by not using RCU on cells tree + - afs: Fix cell refcounting by splitting the usage counter + - afs: Fix cell purging with aliases + - afs: Fix cell removal + - RDMA/rxe: Handle skb_clone() failure in rxe_recv.c + - mm/page_owner: change split_page_owner to take a count + - lib/crc32.c: fix trivial typo in preprocessor condition + - ramfs: fix nommu mmap with gaps in the page cache + - rapidio: fix error handling path + - rapidio: fix the missed put_device() for rio_mport_add_riodev + - mailbox: avoid timer start from callback + - clk: meson: axg-audio: separate axg and g12a regmap tables + - rtc: ds1307: Clear OSF flag on DS1388 when setting time + - i2c: rcar: Auto select RESET_CONTROLLER + - clk: meson: g12a: mark fclk_div2 as critical + - PCI: designware-ep: Fix the Header Type check + - PCI: aardvark: Fix compilation on s390 + - PCI: aardvark: Check for errors from pci_bridge_emul_init() call + - PCI: iproc: Set affinity mask on MSI interrupts + - rpmsg: smd: Fix a kobj leak in in qcom_smd_parse_edge() + - rpmsg: Avoid double-free in mtk_rpmsg_register_device + - PCI/IOV: Mark VFs as not implementing PCI_COMMAND_MEMORY + - vfio: add a singleton check for vfio_group_pin_pages + - s390/pci: Mark all VFs as not implementing PCI_COMMAND_MEMORY + - vfio/pci: Decouple PCI_COMMAND_MEMORY bit checks from is_virtfn + - vfio: fix a missed vfio group put in vfio_pin_pages + - vfio/type1: fix dirty bitmap calculation in vfio_dma_rw + - clk: qcom: gcc-sdm660: Fix wrong parent_map + - clk: keystone: sci-clk: fix parsing assigned-clock data during probe + - pwm: rockchip: Keep enabled PWMs running while probing + - pwm: img: Fix null pointer access in probe + - remoteproc/mediatek: fix null pointer dereference on null scp pointer + - PCI: hv: Fix hibernation in case interrupts are not re-created + - clk: rockchip: Initialize hw to error to avoid undefined behavior + - clk: mediatek: add UART0 clock support + - module: statically initialize init section freeing data + - clk: at91: clk-main: update key before writing AT91_CKGR_MOR + - clk: bcm2835: add missing release if devm_clk_hw_register fails + - kbuild: deb-pkg: do not build linux-headers package if CONFIG_MODULES=n + - watchdog: Fix memleak in watchdog_cdev_register + - watchdog: Use put_device on error + - watchdog: sp5100: Fix definition of EFCH_PM_DECODEEN3 + - svcrdma: fix bounce buffers for unaligned offsets and multiple pages + - ext4: fix dead loop in ext4_mb_new_blocks + - ext4: discard preallocations before releasing group lock + - ext4: disallow modifying DAX inode flag if inline_data has been set + - ext4: limit entries returned when counting fsmap records + - vfio/pci: Clear token on bypass registration failure + - vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages + - clk: imx8mq: Fix usdhc parents order + - SUNRPC: fix copying of multiple pages in gss_read_proxy_verf() + - platform/chrome: cros_ec_lightbar: Reduce ligthbar get version command + - Input: elants_i2c - fix typo for an attribute to show calibration count + - Input: imx6ul_tsc - clean up some errors in imx6ul_tsc_resume() + - Input: stmfts - fix a & vs && typo + - Input: ep93xx_keypad - fix handling of platform_get_irq() error + - Input: omap4-keypad - fix handling of platform_get_irq() error + - Input: twl4030_keypad - fix handling of platform_get_irq() error + - Input: sun4i-ps2 - fix handling of platform_get_irq() error + - KVM: x86: emulating RDPID failure shall return #UD rather than #GP + - scsi: bfa: Fix error return in bfad_pci_init() + - arm64: mm: use single quantity to represent the PA to VA translation + - netfilter: conntrack: connection timeout after re-register + - netfilter: ebtables: Fixes dropping of small packets in bridge nat + - netsec: ignore 'phy-mode' device property on ACPI systems + - netfilter: nf_fwd_netdev: clear timestamp in forwarding path + - soc: xilinx: Fix error code in zynqmp_pm_probe() + - arm64: dts: meson: vim3: correct led polarity + - ARM: dts: imx6sl: fix rng node + - ARM: at91: pm: of_node_put() after its usage + - ARM: s3c24xx: fix mmc gpio lookup tables + - ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix dcdc1 regulator + - arm64: dts: allwinner: h5: remove Mali GPU PMU module + - memory: omap-gpmc: Fix a couple off by ones + - memory: omap-gpmc: Fix build error without CONFIG_OF + - arm64: dts: qcom: sc7180: Fix the LLCC base register size + - memory: fsl-corenet-cf: Fix handling of platform_get_irq() error + - firmware: arm_scmi: Fix NULL pointer dereference in mailbox_chan_free + - arm64: dts: imx8mq: Add missing interrupts to GPC + - arm64: dts: qcom: sc7180: Drop flags on mdss irqs + - soc: qcom: pdr: Fixup array type of get_domain_list_resp message + - arm64: dts: qcom: msm8916: Remove one more thermal trip point unit name + - arm64: dts: qcom: pm8916: Remove invalid reg size from wcd_codec + - arm64: dts: qcom: msm8916: Fix MDP/DSI interrupts + - soc: qcom: apr: Fixup the error displayed on lookup failure + - dt-bindings: crypto: Specify that allwinner, sun8i-a33-crypto needs reset + - arm64: dts: renesas: r8a77990: Fix MSIOF1 DMA channels + - arm64: dts: renesas: r8a774c0: Fix MSIOF1 DMA channels + - arm64: dts: mt8173: elm: Fix nor_flash node property + - arm64: dts: actions: limit address range for pinctrl node + - ARM: dts: owl-s500: Fix incorrect PPI interrupt specifiers + - soc: fsl: qbman: Fix return value on success + - ARM: OMAP2+: Restore MPU power domain if cpu_cluster_pm_enter() fails + - ARM: dts: stm32: Fix sdmmc2 pins on AV96 + - ARM: dts: stm32: lxa-mc1: Fix kernel warning about PHY delays + - ARM: dts: stm32: Move ethernet PHY into DH SoM DT + - ARM: dts: stm32: Swap PHY reset GPIO and TSC2004 IRQ on DHCOM SOM + - ARM: dts: stm32: Fix DH PDK2 display PWM channel + - ARM: dts: iwg20d-q7-common: Fix touch controller probe failure + - soc: mediatek: cmdq: add clear option in cmdq_pkt_wfe api + - drm/mediatek: reduce clear event + - arm64: dts: zynqmp: Remove additional compatible string for i2c IPs + - ARM: dts: meson8: remove two invalid interrupt lines from the GPU node + - lightnvm: fix out-of-bounds write to array devices->info[] + - powerpc/powernv/dump: Fix race while processing OPAL dump + - powerpc/pseries: Avoid using addr_to_pfn in real mode + - nvmet: fix uninitialized work for zero kato + - KVM: ioapic: break infinite recursion on lazy EOI + - NTB: hw: amd: fix an issue about leak system resources + - ntb: intel: Fix memleak in intel_ntb_pci_probe + - sched/features: Fix !CONFIG_JUMP_LABEL case + - perf: correct SNOOPX field offset + - i2c: core: Restore acpi_walk_dep_device_list() getting called after + registering the ACPI i2c devs + - md/bitmap: fix memory leak of temporary bitmap + - block: ratelimit handle_bad_sector() message + - x86/dumpstack: Fix misleading instruction pointer error message + - crypto: ccp - fix error handling + - x86/asm: Replace __force_order with a memory clobber + - x86/mce: Add Skylake quirk for patrol scrub reported errors + - media: firewire: fix memory leak + - media: ati_remote: sanity check for both endpoints + - media: st-delta: Fix reference count leak in delta_run_work + - media: sti: Fix reference count leaks + - media: exynos4-is: Fix several reference count leaks due to + pm_runtime_get_sync + - media: exynos4-is: Fix a reference count leak due to pm_runtime_get_sync + - media: exynos4-is: Fix a reference count leak + - media: vsp1: Fix runtime PM imbalance on error + - media: platform: s3c-camif: Fix runtime PM imbalance on error + - media: platform: sti: hva: Fix runtime PM imbalance on error + - media: bdisp: Fix runtime PM imbalance on error + - media: media/pci: prevent memory leak in bttv_probe + - x86/mce: Annotate mce_rd/wrmsrl() with noinstr + - crypto: hisilicon - fixed memory allocation error + - spi: fsi: Fix clock running too fast + - x86/mce: Make mce_rdmsrl() panic on an inaccessible MSR + - media: uvcvideo: Ensure all probed info is returned to v4l2 + - mmc: sdio: Check for CISTPL_VERS_1 buffer size + - media: saa7134: avoid a shift overflow + - media: atomisp: fix memleak in ia_css_stream_create + - media: venus: fixes for list corruption + - fs: dlm: fix configfs memory leak + - media: venus: core: Fix error handling in probe + - media: venus: core: Fix runtime PM imbalance in venus_probe + - ntfs: add check for mft record size in superblock + - ip_gre: set dev->hard_header_len and dev->needed_headroom properly + - mac80211: handle lack of sband->bitrates in rates + - staging: wfx: fix handling of MMIC error + - libbpf: Close map fd if init map slots failed + - bpf: Use raw_spin_trylock() for pcpu_freelist_push/pop in NMI + - PM: hibernate: remove the bogus call to get_gendisk() in software_resume() + - scsi: mvumi: Fix error return in mvumi_io_attach() + - scsi: target: core: Add CONTROL field for trace events + - mic: vop: copy data to kernel space then write to io memory + - misc: vop: add round_up(x,4) for vring_size to avoid kernel panic + - usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc + - usb: gadget: function: printer: fix use-after-free in __lock_acquire + - udf: Limit sparing table size + - udf: Avoid accessing uninitialized data on failed inode read + - rtw88: increse the size of rx buffer size + - USB: cdc-acm: handle broken union descriptors + - usb: dwc3: simple: add support for Hikey 970 + - habanalabs: cast to u64 before shift > 31 bits + - can: flexcan: flexcan_chip_stop(): add error handling and propagate error + value + - HID: multitouch: Lenovo X1 Tablet Gen3 trackpoint and buttons + - ath9k: hif_usb: fix race condition between usb_get_urb() and + usb_kill_anchored_urbs() + - drm/panfrost: add Amlogic GPU integration quirks + - drm/panfrost: add amlogic reset quirk callback + - drm/panfrost: add support for vendor quirk + - bpf: Limit caller's stack depth 256 for subprogs with tailcalls + - misc: rtsx: Fix memory leak in rtsx_pci_probe + - reiserfs: only call unlock_new_inode() if I_NEW + - opp: Prevent memory leak in dev_pm_opp_attach_genpd() + - xfs: make sure the rt allocator doesn't run off the end + - usb: ohci: Default to per-port over-current protection + - drm: fix double free for gbo in drm_gem_vram_init and drm_gem_vram_create + - Bluetooth: Only mark socket zapped after unlocking + - drm/msm/a6xx: fix a potential overflow issue + - iomap: fix WARN_ON_ONCE() from unprivileged users + - scsi: ibmvfc: Fix error return in ibmvfc_probe() + - scsi: qla2xxx: Warn if done() or free() are called on an already freed srb + - selftests/bpf: Fix test_sysctl_loop{1, 2} failure due to clang change + - brcmsmac: fix memory leak in wlc_phy_attach_lcnphy + - rtl8xxxu: prevent potential memory leak + - Fix use after free in get_capset_info callback. + - HID: ite: Add USB id match for Acer One S1003 keyboard dock + - scsi: qedf: Return SUCCESS if stale rport is encountered + - scsi: qedi: Mark all connections for recovery on link down event + - scsi: qedi: Protect active command list to avoid list corruption + - scsi: qedi: Fix list_del corruption while removing active I/O + - fbmem: add margin check to fb_check_caps() + - tty: ipwireless: fix error handling + - Bluetooth: btusb: Fix memleak in btusb_mtk_submit_wmt_recv_urb + - ipvs: Fix uninit-value in do_ip_vs_set_ctl() + - reiserfs: Fix memory leak in reiserfs_parse_options() + - s390/qeth: strictly order bridge address events + - mwifiex: don't call del_timer_sync() on uninitialized timer + - ALSA: hda/ca0132 - Add AE-7 microphone selection commands. + - ALSA: hda/ca0132 - Add new quirk ID for SoundBlaster AE-7. + - ASoC: SOF: Add topology filename override based on dmi data match + - ASoC: Intel: sof_rt5682: override quirk data for tgl_max98373_rt5682 + - scsi: smartpqi: Avoid crashing kernel for controller issues + - brcm80211: fix possible memleak in brcmf_proto_msgbuf_attach + - usb: core: Solve race condition in anchor cleanup functions + - scsi: ufs: ufs-qcom: Fix race conditions caused by ufs_qcom_testbus_config() + - drm/amd/display: Screen corruption on dual displays (DP+USB-C) + - dmaengine: dw: Add DMA-channels mask cell support + - dmaengine: dw: Activate FIFO-mode for memory peripherals only + - ath10k: check idx validity in __ath10k_htt_rx_ring_fill_n() + - net: korina: cast KSEG0 address to pointer in kfree + - s390/qeth: don't let HW override the configured port role + - tty: serial: lpuart: fix lpuart32_write usage + - tty: serial: fsl_lpuart: fix lpuart32_poll_get_char + - usb: gadget: bcm63xx_udc: fix up the error of undeclared usb_debug_root + - usb: cdc-acm: add quirk to blacklist ETAS ES58X devices + - USB: cdc-wdm: Make wdm_flush() interruptible and add wdm_fsync(). + - usb: cdns3: gadget: free interrupt after gadget has deleted + - eeprom: at25: set minimum read/write access stride to 1 + - usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets. + - Linux 5.8.17 + + * RTL8822BE [10ec:b822] network driver rtl_wifi crashes on boot in Focal Fossa + 20.04 - 5.4.0-21-generic and mainline 5.7.0-050700rc1-generic + (LP: #1872984) // Groovy update: v5.8.17 upstream stable release + (LP: #1902137) + - rtw88: pci: Power cycle device during shutdown + + * Groovy update: v5.8.16 upstream stable release (LP: #1902132) + - crypto: bcm - Verify GCM/CCM key length in setkey + - crypto: qat - check cipher length for aead AES-CBC-HMAC-SHA + - Bluetooth: Disconnect if E0 is used for Level 4 + - media: usbtv: Fix refcounting mixup + - USB: serial: option: add Cellient MPL200 card + - USB: serial: option: Add Telit FT980-KS composition + - staging: comedi: check validity of wMaxPacketSize of usb endpoints found + - USB: serial: pl2303: add device-id for HP GC device + - USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters + - reiserfs: Initialize inode keys properly + - reiserfs: Fix oops during mount + - Linux 5.8.16 + + * Groovy update: v5.8.15 upstream stable release (LP: #1902130) + - fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h + - Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts + - fbcon: Fix global-out-of-bounds read in fbcon_get_font() + - Revert "ravb: Fixed to be able to unload modules" + - crypto: arm64: Use x16 with indirect branch to bti_c + - exfat: fix use of uninitialized spinlock on error path + - net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key() + - drm/nouveau/mem: guard against NULL pointer access in mem_del + - partitions/ibm: fix non-DASD devices + - block/scsi-ioctl: Fix kernel-infoleak in scsi_put_cdrom_generic_arg() + - vhost: Don't call access_ok() when using IOTLB + - vhost: Use vhost_get_used_size() in vhost_vring_set_addr() + - usermodehelper: reset umask to default before executing user process + - splice: teach splice pipe reading about empty pipe buffers + - Platform: OLPC: Fix memleak in olpc_ec_probe + - platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on the HP + Pavilion 11 x360 + - platform/x86: thinkpad_acpi: initialize tp_nvram_state variable + - platform/x86: asus-wmi: Fix SW_TABLET_MODE always reporting 1 on many + different models + - bpf: Fix sysfs export of empty BTF section + - bpf: Prevent .BTF section elimination + - r8169: consider that PHY reset may still be in progress after applying + firmware + - platform/x86: intel-vbtn: Switch to an allow-list for SW_TABLET_MODE + reporting + - platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse + - nvme-core: put ctrl ref when module ref get fail + - macsec: avoid use-after-free in macsec_handle_frame() + - RISC-V: Make sure memblock reserves the memory containing DT + - gpiolib: Disable compat ->read() code in UML case + - mm/khugepaged: fix filemap page_to_pgoff(page) != offset + - net: introduce helper sendpage_ok() in include/linux/net.h + - tcp: use sendpage_ok() to detect misused .sendpage + - nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage() + - xfrmi: drop ignore_df check before updating pmtu + - espintcp: restore IP CB before handing the packet to xfrm + - cifs: Fix incomplete memory allocation on setxattr path + - i2c: meson: fix clock setting overwrite + - i2c: meson: keep peripheral clock enabled + - i2c: meson: fixup rate calculation with filter delay + - i2c: owl: Clear NACK and BUS error bits + - sctp: fix sctp_auth_init_hmacs() error path + - team: set dev->needed_headroom in team_setup_by_port() + - net: team: fix memory leak in __team_options_register + - openvswitch: handle DNAT tuple collision + - drm/amdgpu: prevent double kfree ttm->sg + - btrfs: move btrfs_scratch_superblocks into btrfs_dev_replace_finishing + - io_uring: fix potential ABBA deadlock in ->show_fdinfo() + - drm/amd/pm: Removed fixed clock in auto mode DPM + - drm/amd/display: fix return value check for hdcp_work + - btrfs: move btrfs_rm_dev_replace_free_srcdev outside of all locks + - iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb() + - xfrm: clone XFRMA_SET_MARK in xfrm_do_migrate + - xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate + - xfrm: clone XFRMA_SEC_CTX in xfrm_do_migrate + - xfrm: clone whole liftime_cur structure in xfrm_do_migrate + - xsk: Do not discard packet when NETDEV_TX_BUSY + - net: stmmac: removed enabling eee in EEE set callback + - platform/x86: fix kconfig dependency warning for LG_LAPTOP + - platform/x86: fix kconfig dependency warning for FUJITSU_LAPTOP + - hinic: add log in exception handling processes + - hinic: fix wrong return value of mac-set cmd + - net: dsa: felix: convert TAS link speed based on phylink speed + - xfrm: Use correct address family in xfrm_state_find + - iavf: use generic power management + - iavf: Fix incorrect adapter get in iavf_resume + - ice: fix memory leak if register_netdev_fails + - ice: fix memory leak in ice_vsi_setup + - vmxnet3: fix cksum offload issues for non-udp tunnels + - net: stmmac: Fix clock handling on remove path + - net: ethernet: cavium: octeon_mgmt: use phy_start and phy_stop + - bonding: set dev->needed_headroom in bond_setup_by_slave() + - mdio: fix mdio-thunder.c dependency & build error + - mlxsw: spectrum_acl: Fix mlxsw_sp_acl_tcam_group_add()'s error path + - r8169: fix RTL8168f/RTL8411 EPHY config + - net: usb: ax88179_178a: fix missing stop entry in driver_info + - virtio-net: don't disable guest csum when disable LRO + - net: phy: realtek: fix rtl8211e rx/tx delay config + - octeontx2-af: Fix enable/disable of default NPC entries + - octeontx2-pf: Fix TCP/UDP checksum offload for IPv6 frames + - octeontx2-pf: Fix the device state on error + - octeontx2-pf: Fix synchnorization issue in mbox + - pipe: Fix memory leaks in create_pipe_files() + - net/mlx5: Fix a race when moving command interface to polling mode + - net/mlx5: Avoid possible free of command entry while timeout comp handler + - net/mlx5: poll cmd EQ in case of command timeout + - net/mlx5: Add retry mechanism to the command entry index allocation + - net/mlx5: Fix request_irqs error flow + - net/mlx5e: Add resiliency in Striding RQ mode for packets larger than MTU + - net/mlx5e: Fix return status when setting unsupported FEC mode + - net/mlx5e: Fix VLAN cleanup flow + - net/mlx5e: Fix VLAN create flow + - net/mlx5e: Fix race condition on nhe->n pointer in neigh update + - net: stmmac: Modify configuration method of EEE timers + - net: hinic: fix DEVLINK build errors + - vhost-vdpa: fix vhost_vdpa_map() on error condition + - vhost-vdpa: fix page pinning leakage in error path + - net: mvneta: fix double free of txq->buf + - rxrpc: Fix rxkad token xdr encoding + - rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read() + - rxrpc: Fix some missing _bh annotations on locking conn->state_lock + - rxrpc: The server keyring isn't network-namespaced + - rxrpc: Fix server keyring leak + - net: mscc: ocelot: rename ocelot_board.c to ocelot_vsc7514.c + - [Packaging] module ocelot_board rename + - net: mscc: ocelot: split writes to pause frame enable bit and to thresholds + - net: mscc: ocelot: extend watermark encoding function + - net: mscc: ocelot: divide watermark value by 60 when writing to SYS_ATOP + - afs: Fix deadlock between writeback and truncate + - perf: Fix task_function_call() error handling + - mmc: core: don't set limits.discard_granularity as 0 + - mm: validate inode in mapping_set_error() + - mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected + by khugepaged + - tcp: fix receive window update in tcp_add_backlog() + - netlink: fix policy dump leak + - net/core: check length before updating Ethertype in skb_mpls_{push,pop} + - net: bridge: fdb: don't flush ext_learn entries + - net/tls: race causes kernel panic + - net/mlx5e: Fix driver's declaration to support GRE offload + - tty/vt: Do not warn when huge selection requested + - Input: ati_remote2 - add missing newlines when printing module parameters + - net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails + - net: qrtr: ns: Protect radix_tree_deref_slot() using rcu read locks + - net_sched: defer tcf_idr_insert() in tcf_action_init_1() + - net_sched: commit action insertions together + - Linux 5.8.15 + + * Fix non-working Intel NVMe after S3 (LP: #1900847) + - SAUCE: PCI: Enable ACS quirk on all CML root ports + + * Improve descriptions for XFAIL cases in kselftests/net/psock_snd + (LP: #1900088) + - selftests/net: improve descriptions for XFAIL cases in psock_snd.sh + + * alsa/hda/realtek - The front Mic on a HP machine doesn't work (LP: #1899508) + - ALSA: hda/realtek - The front Mic on a HP machine doesn't work + + * kci_test_encap_fou() in rtnetlink.sh from kselftests/net failed with "FAIL: + can't add fou port 7777, skipping test" (LP: #1891421) + - selftests: rtnetlink: load fou module for kci_test_encap_fou() test + + * linux-aws: fold test_bpf SAUCE to linux/master (LP: #1900855) + - SAUCE: selftests: net: don't fail test_bpf when module is not present + + * Fix broken MSI interrupt after HDA controller was suspended (LP: #1899586) + - ALSA: hda: fix jack detection with Realtek codecs when in D3 + + -- Stefan Bader Mon, 09 Nov 2020 16:23:07 +0100 + +linux (5.8.0-29.31) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + -- Stefan Bader Fri, 06 Nov 2020 12:17:24 +0100 + +linux (5.8.0-28.30) groovy; urgency=medium + + * CVE-2020-27194 + - bpf: Fix scalar32_min_max_or bounds tracking + + -- Thadeu Lima de Souza Cascardo Wed, 04 Nov 2020 22:02:24 -0300 + +linux (5.8.0-27.29) groovy; urgency=medium + + * CVE-2020-8694 + - powercap: make attributes only readable by root + + -- Kleber Sacilotto de Souza Thu, 29 Oct 2020 11:28:11 +0100 + +linux (5.8.0-26.27) groovy; urgency=medium + + * groovy/linux: 5.8.0-26.27 -proposed tracker (LP: #1900896) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Introduce the new NVIDIA 455 series (LP: #1897751) + - [Packaging] NVIDIA -- Add signed modules for the 455 driver + + -- Seth Forshee Wed, 21 Oct 2020 15:35:59 -0500 + +linux (5.8.0-25.26) groovy; urgency=medium + + * groovy/linux: 5.8.0-25.26 -proposed tracker (LP: #1899940) + + * CVE-2020-12351 + - Bluetooth: L2CAP: Fix calling sk_filter on non-socket based channel + + * CVE-2020-12352 + - Bluetooth: A2MP: Fix not initializing all members + + * CVE-2020-12351 // CVE-2020-12352 // CVE-2020-24490 + - Bluetooth: Disable High Speed by default + - Bluetooth: MGMT: Fix not checking if BT_HS is enabled + - [Config] Disable BlueZ highspeed support + + * ec2-hibinit-agent needs to properly initialize swap file (LP: #1892728) + - ext4: implement swap_activate aops using iomap + + -- Andrea Righi Thu, 15 Oct 2020 12:09:24 +0200 + +linux (5.8.0-24.25) groovy; urgency=medium + + * groovy/linux: 5.8.0-24.25 -proposed tracker (LP: #1899804) + + * Fix system reboot when disconnecting WiFi (LP: #1899726) + - iwlwifi: msix: limit max RX queues for 9000 family + + * ceph: fix inode number handling on arches with 32-bit ino_t (LP: #1899582) + - ceph: fix inode number handling on arches with 32-bit ino_t + + * booting linux-generic-lpae armhf kernel under qemu results in relocation out + of range, and thus no modules can be loaded (LP: #1899519) + - [Config] armhf: ARM_MODULE_PLTS=y + + -- Seth Forshee Wed, 14 Oct 2020 10:12:57 -0500 + +linux (5.8.0-23.24) groovy; urgency=medium + + * CVE-2020-16119 + - SAUCE: dccp: avoid double free of ccid on child socket + + -- Seth Forshee Fri, 09 Oct 2020 10:21:12 -0500 + +linux (5.8.0-22.23) groovy; urgency=medium + + * groovy/linux: 5.8.0-22.23 -proposed tracker (LP: #1899099) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * oops in nvkm_udevice_info() [nouveau] (LP: #1898130) + - drm/nouveau/device: return error for unknown chipsets + + * python3-venv is gone (LP: #1896801) + - SAUCE: doc: remove python3-venv dependency + + * *-tools-common packages descriptions have typo "PGKVER" (LP: #1898903) + - [Packaging] Fix typo in -tools template s/PGKVER/PKGVER/ + + * Enable brightness control on HP DreamColor panel (LP: #1898865) + - SAUCE: drm/i915/dpcd_bl: Skip testing control capability with force DPCD + quirk + - SAUCE: drm/dp: HP DreamColor panel brigntness fix + + * Groovy update: v5.8.14 upstream stable release (LP: #1898853) + - io_uring: always delete double poll wait entry on match + - btrfs: fix filesystem corruption after a device replace + - mmc: sdhci: Workaround broken command queuing on Intel GLK based IRBIS + models + - USB: gadget: f_ncm: Fix NDP16 datagram validation + - Revert "usbip: Implement a match function to fix usbip" + - usbcore/driver: Fix specific driver selection + - usbcore/driver: Fix incorrect downcast + - usbcore/driver: Accommodate usbip + - gpio: siox: explicitly support only threaded irqs + - gpio: mockup: fix resource leak in error path + - gpio: tc35894: fix up tc35894 interrupt configuration + - gpio: amd-fch: correct logic of GPIO_LINE_DIRECTION + - clk: samsung: Keep top BPLL mux on Exynos542x enabled + - clk: socfpga: stratix10: fix the divider for the emac_ptp_free_clk + - scsi: iscsi: iscsi_tcp: Avoid holding spinlock while calling getpeername() + - i2c: i801: Exclude device from suspend direct complete optimization + - Input: i8042 - add nopnp quirk for Acer Aspire 5 A515 + - iio: adc: qcom-spmi-adc5: fix driver name + - ftrace: Move RCU is watching check after recursion check + - tracing: Fix trace_find_next_entry() accounting of temp buffer size + - memstick: Skip allocating card when removing host + - drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config + - xen/events: don't use chip_data for legacy IRQs + - clocksource/drivers/timer-gx6605s: Fixup counter reload + - vboxsf: Fix the check for the old binary mount-arguments struct + - mt76: mt7915: use ieee80211_free_txskb to free tx skbs + - libbpf: Remove arch-specific include path in Makefile + - drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices + - Revert "wlcore: Adding suppoprt for IGTK key in wlcore driver" + - drm/sun4i: mixer: Extend regmap max_register + - hv_netvsc: Cache the current data path to avoid duplicate call and message + - net: dec: de2104x: Increase receive ring size for Tulip + - rndis_host: increase sleep time in the query-response loop + - nvme-pci: disable the write zeros command for Intel 600P/P3100 + - nvme-core: get/put ctrl and transport module in nvme_dev_open/release() + - fuse: fix the ->direct_IO() treatment of iov_iter + - drivers/net/wan/lapbether: Make skb->protocol consistent with the header + - drivers/net/wan/hdlc: Set skb->protocol before transmitting + - mac80211: Fix radiotap header channel flag for 6GHz band + - mac80211: do not allow bigger VHT MPDUs than the hardware supports + - tracing: Make the space reserved for the pid wider + - tools/io_uring: fix compile breakage + - io_uring: mark statx/files_update/epoll_ctl as non-SQPOLL + - cpuidle: psci: Fix suspicious RCU usage + - spi: fsl-espi: Only process interrupts for expected events + - net: dsa: felix: fix some key offsets for IP4_TCP_UDP VCAP IS2 entries + - nvme-pci: fix NULL req in completion handler + - nvme-fc: fail new connections to a deleted host or remote port + - scripts/kallsyms: skip ppc compiler stub *.long_branch.* / *.plt_branch.* + - gpio: sprd: Clear interrupt when setting the type as edge + - phy: ti: am654: Fix a leak in serdes_am654_probe() + - pinctrl: mvebu: Fix i2c sda definition for 98DX3236 + - nfs: Fix security label length not being reset + - NFSv4.2: fix client's attribute cache management for copy_file_range + - pNFS/flexfiles: Ensure we initialise the mirror bsizes correctly on read + - clk: tegra: Always program PLL_E when enabled + - clk: tegra: Fix missing prototype for tegra210_clk_register_emc() + - dmaengine: dmatest: Prevent to run on misconfigured channel + - clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED + - scsi: target: Fix lun lookup for TARGET_SCF_LOOKUP_LUN_FROM_TAG case + - iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate() + - gpio: pca953x: Fix uninitialized pending variable + - gpio/aspeed-sgpio: enable access to all 80 input & output sgpios + - gpio/aspeed-sgpio: don't enable all interrupts by default + - gpio: aspeed: fix ast2600 bank properties + - i2c: cpm: Fix i2c_ram structure + - i2c: npcm7xx: Clear LAST bit after a failed transaction. + - Input: trackpoint - enable Synaptics trackpoints + - blk-mq: call commit_rqs while list empty but error happen + - scripts/dtc: only append to HOST_EXTRACFLAGS instead of overwriting + - autofs: use __kernel_write() for the autofs pipe writing + - pinctrl: qcom: sm8250: correct sdc2_clk + - pinctrl: mediatek: check mtk_is_virt_gpio input parameter + - gpio: pca953x: Correctly initialize registers 6 and 7 for PCA957x + - iommu/amd: Fix the overwritten field in IVMD header + - pipe: remove pipe_wait() and fix wakeup race with splice + - random32: Restore __latent_entropy attribute on net_rand_state + - gpiolib: Fix line event handling in syscall compatible mode + - drm/i915/gvt: Fix port number for BDW on EDID region setup + - scsi: sd: sd_zbc: Fix handling of host-aware ZBC disks + - scsi: sd: sd_zbc: Fix ZBC disk initialization + - epoll: do not insert into poll queues until all sanity checks are done + - epoll: replace ->visited/visited_list with generation count + - epoll: EPOLL_CTL_ADD: close the race in decision to take fast path + - ep_create_wakeup_source(): dentry name can change under you... + - Linux 5.8.14 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: check for do_sys_openat2 in user-memory test + - SAUCE: doc: Disable extension incompatible with Sphinx 3 + - Add ubuntu-host module + - CONFIG_UBUNTU_HOST=m + - SAUCE: Revert "UBUNTU: SAUCE: IB/umem: Fix the Peer flow to handle pinned + pages properly" + - SAUCE: Revert "UBUNTU: SAUCE: IB/mlx5: Use peer client page_shift" + - SAUCE: Revert "UBUNTU: SAUCE: fixup! RDMA/core: Introduce peer memory + interface" + - SAUCE: Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + - SAUCE: apparmor: drop prefixing abs root labels with '=' + - SAUCE: apparmor: disable showing the mode as part of a secid to secctx + - SAUCE: apparmor: rename aa_sock() to aa_unix_sk() + - SAUCE: apparmor: LSM stacking: switch from SK_CTX() to aa_sock() + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Create and manage the lsmblob data structure. + - SAUCE: LSM: Use lsmblob in security_audit_rule_match + - SAUCE: LSM: Use lsmblob in security_kernel_act_as + - SAUCE: net: Prepare UDS for security module stacking + - SAUCE: LSM: Use lsmblob in security_secctx_to_secid + - SAUCE: LSM: Use lsmblob in security_secid_to_secctx + - SAUCE: LSM: Use lsmblob in security_ipc_getsecid + - SAUCE: LSM: Use lsmblob in security_task_getsecid + - SAUCE: LSM: Use lsmblob in security_inode_getsecid + - SAUCE: LSM: Use lsmblob in security_cred_getsecid + - SAUCE: IMA: Change internal interfaces to use lsmblobs + - SAUCE: LSM: Specify which LSM to display + - SAUCE: LSM: Ensure the correct LSM context releaser + - SAUCE: LSM: Use lsmcontext in security_secid_to_secctx + - SAUCE: LSM: Use lsmcontext in security_inode_getsecctx + - SAUCE: LSM: security_secid_to_secctx in netlink netfilter + - SAUCE: NET: Store LSM netlabel data in a lsmblob + - SAUCE: LSM: Verify LSM display sanity in binder + - SAUCE: Audit: Add new record for multiple process LSM attributes + - SAUCE: Audit: Add a new record for multiple object LSM + - SAUCE: LSM: Add /proc attr entry for full LSM context + - SAUCE: AppArmor: Remove the exclusive flag + - SAUCE: Audit: Fix for missing NULL check + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] Temporarily disable building doc package + contents" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add support for mapping secids and + using secctxes"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Use an IDR to allocate apparmor + secids"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fixup secid map conversion to using + IDR"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Add a wildcard secid"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Parse secmark policy"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Allow filtering based on secmark + policy"" + - Revert "UBUNTU: SAUCE: Fix-up af_unix mediation for sock infrastructure + management" + - Revert "UBUNTU: SAUCE: LSM: Infrastructure management of the sock security" + - Revert "UBUNTU: SAUCE: apparmor: update flags to no longer be exclusive" + - Revert "UBUNTU: SAUCE: apparmor: add an apparmorfs entry to access current + attrs" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add the ability to get a task's + secid"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Add support for audit rule + filtering"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: modify audit rule support to + support profile stacks"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fix bad debug check in + apparmor_secid_to_secctx()"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: add #ifdef checks for secmark + filtering"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: fix checkpatch error in Parse + secmark policy"" + - Revert "UBUNTU: SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute"" + + -- Seth Forshee Thu, 08 Oct 2020 17:17:19 -0500 + +linux (5.8.0-21.22) groovy; urgency=medium + + * groovy/linux: 5.8.0-21.22 -proposed tracker (LP: #1898150) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix broken e1000e device after S3 (LP: #1897755) + - SAUCE: e1000e: Increase polling timeout on MDIC ready bit + + * EFA: add support for 0xefa1 devices (LP: #1896791) + - RDMA/efa: Expose maximum TX doorbell batch + - RDMA/efa: Expose minimum SQ size + - RDMA/efa: User/kernel compatibility handshake mechanism + - RDMA/efa: Add EFA 0xefa1 PCI ID + + * Groovy update: v5.8.13 upstream stable release (LP: #1898076) + - device_cgroup: Fix RCU list debugging warning + - ASoC: pcm3168a: ignore 0 Hz settings + - ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811 + - ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions + - ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN Converter9 2-in-1 + - clk: versatile: Add of_node_put() before return statement + - RISC-V: Take text_mutex in ftrace_init_nop() + - i2c: aspeed: Mask IRQ status to relevant bits + - s390/init: add missing __init annotations + - lockdep: fix order in trace_hardirqs_off_caller() + - EDAC/ghes: Check whether the driver is on the safe list correctly + - drm/amdkfd: fix a memory leak issue + - drm/amd/display: Don't use DRM_ERROR() for DTM add topology + - drm/amd/display: update nv1x stutter latencies + - drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is + - drm/amd/display: Don't log hdcp module warnings in dmesg + - objtool: Fix noreturn detection for ignored functions + - i2c: mediatek: Send i2c master code at more than 1MHz + - riscv: Fix Kendryte K210 device tree + - ieee802154: fix one possible memleak in ca8210_dev_com_init + - ieee802154/adf7242: check status of adf7242_read_reg + - clocksource/drivers/h8300_timer8: Fix wrong return value in + h8300_8timer_init() + - batman-adv: bla: fix type misuse for backbone_gw hash indexing + - libbpf: Fix build failure from uninitialized variable warning + - atm: eni: fix the missed pci_disable_device() for eni_init_one() + - batman-adv: mcast/TT: fix wrongly dropped or rerouted packets + - netfilter: ctnetlink: add a range check for l3/l4 protonum + - netfilter: ctnetlink: fix mark based dump filtering regression + - netfilter: conntrack: nf_conncount_init is failing with IPv6 disabled + - netfilter: nft_meta: use socket user_ns to retrieve skuid and skgid + - mac802154: tx: fix use-after-free + - bpf: Fix clobbering of r2 in bpf_gen_ld_abs + - tools/libbpf: Avoid counting local symbols in ABI check + - drm/vc4/vc4_hdmi: fill ASoC card owner + - net: qed: Disable aRFS for NPAR and 100G + - net: qede: Disable aRFS for NPAR and 100G + - net: qed: RDMA personality shouldn't fail VF load + - igc: Fix wrong timestamp latency numbers + - igc: Fix not considering the TX delay for timestamps + - drm/sun4i: sun8i-csc: Secondary CSC register correction + - hv_netvsc: Switch the data path at the right time during hibernation + - spi: spi-fsl-dspi: use XSPI mode instead of DMA for DPAA2 SoCs + - RDMA/core: Fix ordering of CQ pool destruction + - batman-adv: Add missing include for in_interrupt() + - xsk: Fix number of pinned pages/umem size discrepancy + - nvme-tcp: fix kconfig dependency warning when !CRYPTO + - batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN + - batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh + - batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh + - bpf: Fix a rcu warning for bpffs map pretty-print + - lib80211: fix unmet direct dependendices config warning when !CRYPTO + - mac80211: do not disable HE if HT is missing on 2.4 GHz + - cfg80211: fix 6 GHz channel conversion + - mac80211: fix 80 MHz association to 160/80+80 AP on 6 GHz + - ALSA: asihpi: fix iounmap in error handler + - io_uring: fix openat/openat2 unified prep handling + - SUNRPC: Fix svc_flush_dcache() + - regmap: fix page selection for noinc reads + - regmap: fix page selection for noinc writes + - net/mlx5e: mlx5e_fec_in_caps() returns a boolean + - MIPS: Loongson-3: Fix fp register access if MSA enabled + - PM / devfreq: tegra30: Disable clock on error in probe + - MIPS: Add the missing 'CPU_1074K' into __get_cpu_type() + - regulator: axp20x: fix LDO2/4 description + - spi: bcm-qspi: Fix probe regression on iProc platforms + - KVM: x86: Reset MMU context if guest toggles CR4.SMAP or CR4.PKE + - KVM: SVM: Add a dedicated INVD intercept routine + - mm: validate pmd after splitting + - arch/x86/lib/usercopy_64.c: fix __copy_user_flushcache() cache writeback + - x86/irq: Make run_on_irqstack_cond() typesafe + - x86/ioapic: Unbreak check_timer() + - scsi: lpfc: Fix initial FLOGI failure due to BBSCN not supported + - ALSA: usb-audio: Add delay quirk for H570e USB headsets + - ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged + - ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation + P520 + - lib/string.c: implement stpcpy + - tracing: fix double free + - s390/dasd: Fix zero write for FBA devices + - mt76: mt7615: use v1 MCU API on MT7615 to fix issues with adding/removing + stations + - lib/bootconfig: Fix a bug of breaking existing tree nodes + - lib/bootconfig: Fix to remove tailing spaces after value + - kprobes: Fix to check probe enabled before disarm_kprobe_ftrace() + - kprobes: tracing/kprobes: Fix to kill kprobes on initmem after boot + - btrfs: fix put of uninitialized kobject after seed device delete + - btrfs: fix overflow when copying corrupt csums for a message + - media: cec-adap.c: don't use flush_scheduled_work() + - MIPS: Loongson2ef: Disable Loongson MMI instructions + - dmabuf: fix NULL pointer dereference in dma_buf_release() + - mm, THP, swap: fix allocating cluster for swapfile by mistake + - mm: replace memmap_context by meminit_context + - mm: don't rely on system state to detect hot-plug operations + - s390/zcrypt: Fix ZCRYPT_PERDEV_REQCNT ioctl + - io_uring: ensure open/openat2 name is cleaned on cancelation + - KVM: arm64: Assume write fault on S1PTW permission fault on instruction + fetch + - dm: fix bio splitting and its bio completion order for regular IO + - clocksource/drivers/timer-ti-dm: Do reset before enable + - Linux 5.8.13 + + * HP Zbook Studio G7 boots into corrupted screen with PSR featured panel + (LP: #1897501) + - SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk + - SAUCE: drm/dp: add DP_QUIRK_FORCE_PSR_CHIP_DEFAULT quirk to CMN prod-ID + 19-15 + + * mwifiex stops working after kernel upgrade (LP: #1897299) + - mwifiex: Increase AES key storage size to 256 bits + + * Oops and hang when starting LVM snapshots on 5.4.0-47 (LP: #1894780) + - SAUCE: Revert "mm: memcg/slab: fix memory leak at non-root kmem_cache + destroy" + + * mm/slub kernel oops on focal kernel 5.4.0-45 (LP: #1895109) + - SAUCE: Revert "mm/slub: fix a memory leak in sysfs_slab_add()" + + * Remove NVMe suspend-to-idle workaround (LP: #1897227) + - Revert "UBUTU: SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3" + - Revert "UBUNTU: SAUCE: pci: prevent sk hynix nvme from entering D3" + + * [UBUNTU 20.04.1] qemu (secure guest) crash due to gup_fast / dynamic page + table folding issue (LP: #1896726) + - mm/gup: fix gup_fast with dynamic page table folding + + * backport tls-rx to ubuntu 5.8 (LP: #1895947) + - net/mlx5: kTLS, Improve TLS params layout structures + - net/mlx5e: Turn XSK ICOSQ into a general asynchronous one + - net/mlx5e: Refactor build channel params + - net/mlx5e: API to manipulate TTC rules destinations + - net/mlx5e: Receive flow steering framework for accelerated TCP flows + - net/mlx5e: Accel, Expose flow steering API for rules add/del + - net/mlx5e: kTLS, Improve TLS feature modularity + - net/mlx5e: kTLS, Use kernel API to extract private offload context + - net/mlx5e: kTLS, Add kTLS RX HW offload support + - Revert "net/tls: Add force_resync for driver resync" + - net/tls: Add asynchronous resync + - net/mlx5e: kTLS, Add kTLS RX resync support + - net/mlx5e: kTLS, Add kTLS RX stats + - net/mlx5e: Increase Async ICO SQ size + - net/mlx5e: kTLS, Cleanup redundant capability check + - net/mlx5e: kTLS, Improve rx handler function call + - net/mlx5e: kTLS, Fix napi sync and possible use-after-free + - net/mlx5e: fix memory leak of tls + - net/mlx5e: Fix build break when CONFIG_XPS is not set + - net/mlx5e: kTLS, Add missing dma_unmap in RX resync + - net/mlx5e: kTLS, Fix leak on resync error flow + - net/mlx5e: kTLS, Avoid kzalloc(GFP_KERNEL) under spinlock + + * Groovy update: v5.8.12 upstream stable release (LP: #1897550) + - ibmvnic fix NULL tx_pools and rx_tools issue at do_reset + - ibmvnic: add missing parenthesis in do_reset() + - act_ife: load meta modules before tcf_idr_check_alloc() + - bnxt_en: Avoid sending firmware messages when AER error is detected. + - bnxt_en: Fix NULL ptr dereference crash in bnxt_fw_reset_task() + - cxgb4: fix memory leak during module unload + - cxgb4: Fix offset when clearing filter byte counters + - geneve: add transport ports in route lookup for geneve + - hdlc_ppp: add range checks in ppp_cp_parse_cr() + - hinic: bump up the timeout of SET_FUNC_STATE cmd + - ip: fix tos reflection in ack and reset packets + - ipv4: Initialize flowi4_multipath_hash in data path + - ipv4: Update exception handling for multipath routes via same device + - ipv6: avoid lockdep issue in fib6_del() + - net: bridge: br_vlan_get_pvid_rcu() should dereference the VLAN group under + RCU + - net: DCB: Validate DCB_ATTR_DCB_BUFFER argument + - net: dsa: rtl8366: Properly clear member config + - net: Fix bridge enslavement failure + - net: ipv6: fix kconfig dependency warning for IPV6_SEG6_HMAC + - net/mlx5: Fix FTE cleanup + - net: phy: call phy_disable_interrupts() in phy_attach_direct() instead + - net: sched: initialize with 0 before setting erspan md->u + - net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc + - net: sctp: Fix IPv6 ancestor_size calc in sctp_copy_descendant + - nfp: use correct define to return NONE fec + - taprio: Fix allowing too small intervals + - tipc: Fix memory leak in tipc_group_create_member() + - tipc: fix shutdown() of connection oriented socket + - tipc: use skb_unshare() instead in tipc_buf_append() + - net/mlx5e: Enable adding peer miss rules only if merged eswitch is supported + - net/mlx5e: TLS, Do not expose FPGA TLS counter if not supported + - bnxt_en: Use memcpy to copy VPD field info. + - bnxt_en: return proper error codes in bnxt_show_temp + - bnxt_en: Protect bnxt_set_eee() and bnxt_set_pauseparam() with mutex. + - net: lantiq: Wake TX queue again + - net: lantiq: use netif_tx_napi_add() for TX NAPI + - net: lantiq: Use napi_complete_done() + - net: lantiq: Disable IRQs only if NAPI gets scheduled + - net: phy: Avoid NPD upon phy_detach() when driver is unbound + - net: phy: Do not warn in phy_stop() on PHY_DOWN + - net: qrtr: check skb_put_padto() return value + - net: add __must_check to skb_put_padto() + - net: ethernet: ti: cpsw_new: fix suspend/resume + - wireguard: noise: take lock when removing handshake entry from table + - wireguard: peerlookup: take lock before checking hash in replace operation + - net: ipa: fix u32_replace_bits by u32p_xxx version + - net/mlx5e: Fix memory leak of tunnel info when rule under multipath not + ready + - hinic: fix rewaking txq after netif_tx_disable + - hv_netvsc: Fix hibernation for mlx5 VF driver + - net: dsa: link interfaces with the DSA master to get rid of lockdep warnings + - net: dsa: microchip: ksz8795: really set the correct number of ports + - net: macb: fix for pause frame receive enable bit + - Revert "netns: don't disable BHs when locking "nsid_lock"" + - net/mlx5e: Use RCU to protect rq->xdp_prog + - net/mlx5e: Use synchronize_rcu to sync with NAPI + - net/mlx5e: Fix endianness when calculating pedit mask first bit + - Linux 5.8.12 + + * Groovy update: v5.8.11 upstream stable release (LP: #1896795) + - RDMA/bnxt_re: Restrict the max_gids to 256 + - dt-bindings: spi: Fix spi-bcm-qspi compatible ordering + - mptcp: sendmsg: reset iter on error + - net: handle the return value of pskb_carve_frag_list() correctly + - dt-bindings: PCI: intel,lgm-pcie: Fix matching on all snps,dw-pcie instances + - hv_netvsc: Remove "unlikely" from netvsc_select_queue + - loop: Set correct device size when using LOOP_CONFIGURE + - firmware_loader: fix memory leak for paged buffer + - xprtrdma: Release in-flight MRs on disconnect + - NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall + - phy: omap-usb2-phy: disable PHY charger detect + - habanalabs: prevent user buff overflow + - habanalabs: fix report of RAZWI initiator coordinates + - scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort + - scsi: libfc: Fix for double free() + - scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery + - scsi: lpfc: Extend the RDF FPIN Registration descriptor for additional + events + - regulator: pwm: Fix machine constraints application + - spi: spi-loopback-test: Fix out-of-bounds read + - interconnect: Show bandwidth for disabled paths as zero in debugfs + - NFS: Zero-stateid SETATTR should first return delegation + - SUNRPC: stop printk reading past end of string + - rapidio: Replace 'select' DMAENGINES 'with depends on' + - cifs: fix DFS mount with cifsacl/modefromsid + - openrisc: Fix cache API compile issue when not inlining + - nvme-fc: cancel async events before freeing event struct + - nvme-rdma: cancel async events before freeing event struct + - nvme-tcp: cancel async events before freeing event struct + - block: only call sched requeue_request() for scheduled requests + - f2fs: fix indefinite loop scanning for free nid + - f2fs: Return EOF on unaligned end of file DIO read + - i2c: algo: pca: Reapply i2c bus settings after reset + - spi: Fix memory leak on splited transfers + - KVM: MIPS: Change the definition of kvm type + - clk: davinci: Use the correct size when allocating memory + - clk: rockchip: Fix initialization of mux_pll_src_4plls_p + - ASoC: Intel: skl_hda_dsp_generic: Fix NULLptr dereference in autosuspend + delay + - ASoC: qcom: Set card->owner to avoid warnings + - ASoC: rt1308-sdw: Fix return check for devm_regmap_init_sdw() + - ASoC: rt711: Fix return check for devm_regmap_init_sdw() + - ASoC: rt715: Fix return check for devm_regmap_init_sdw() + - ASoC: rt700: Fix return check for devm_regmap_init_sdw() + - ASoC: qcom: common: Fix refcount imbalance on error + - drm/mediatek: dsi: Fix scrolling of panel with small hfp or hbp + - powerpc/book3s64/radix: Fix boot failure with large amount of guest memory + - ASoC: soc-core: add snd_soc_find_dai_with_mutex() + - ASoC: meson: axg-toddr: fix channel order on g12 platforms + - ASoC: tlv320adcx140: Fix accessing uninitialized adcx140->dev + - ASoC: Intel: haswell: Fix power transition refactor + - ASoC: core: Do not cleanup uninitialized dais on soc_pcm_open failure + - Drivers: hv: vmbus: hibernation: do not hang forever in vmbus_bus_resume() + - scsi: libsas: Fix error path in sas_notify_lldd_dev_found() + - arm64: Allow CPUs unffected by ARM erratum 1418040 to come in late + - Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload + - perf test: Fix the "signal" test inline assembly + - perf record: Don't clear event's period if set by a term + - MIPS: SNI: Fix MIPS_L1_CACHE_SHIFT + - perf test: Free aliases for PMU event map aliases test + - perf metric: Fix some memory leaks + - perf evlist: Fix cpu/thread map leak + - perf parse-event: Fix memory leak in evsel->unit + - perf test: Free formats for perf pmu parse test + - drm/i915/gem: Reduce context termination list iteration guard to RCU + - fbcon: Fix user font detection test at fbcon_resize(). + - MIPS: SNI: Fix spurious interrupts + - drm/mediatek: Use CPU when fail to get cmdq event + - drm/mediatek: Add missing put_device() call in mtk_ddp_comp_init() + - drm/mediatek: Add exception handing in mtk_drm_probe() if component init + fail + - drm/mediatek: Add missing put_device() call in mtk_drm_kms_init() + - drm/mediatek: Add missing put_device() call in mtk_hdmi_dt_parse_pdata() + - arm64: bpf: Fix branch offset in JIT + - iommu/amd: Fix potential @entry null deref + - iommu/amd: Restore IRTE.RemapEn bit for amd_iommu_activate_guest_mode + - kconfig: qconf: use delete[] instead of delete to free array (again) + - i2c: mediatek: Fix generic definitions for bus frequency + - i2c: mxs: use MXS_DMA_CTRL_WAIT4END instead of DMA_CTRL_ACK + - riscv: Add sfence.vma after early page table changes + - locking/lockdep: Fix "USED" <- "IN-NMI" inversions + - efi: efibc: check for efivars write capability + - locking/percpu-rwsem: Use this_cpu_{inc,dec}() for read_count + - x86/unwind/fp: Fix FP unwinding in ret_from_fork + - drm/kfd: fix a system crash issue during GPU recovery + - drm/i915/gem: Delay tracking the GEM context until it is registered + - drm/i915: Filter wake_flags passed to default_wake_function + - USB: quirks: Add USB_QUIRK_IGNORE_REMOTE_WAKEUP quirk for BYD zhaoxin + notebook + - USB: UAS: fix disconnect by unplugging a hub + - usblp: fix race between disconnect() and read() + - usb: typec: ucsi: acpi: Increase command completion timeout value + - usb: typec: ucsi: Prevent mode overrun + - i2c: i801: Fix resume bug + - Revert "ALSA: hda - Fix silent audio output and corrupted input on MSI + X570-A PRO" + - ALSA: hda: fixup headset for ASUS GX502 laptop + - ALSA: hda/realtek - The Mic on a RedmiBook doesn't work + - percpu: fix first chunk size calculation for populated bitmap + - Input: trackpoint - add new trackpoint variant IDs + - Input: i8042 - add Entroware Proteus EL07R4 to nomux and reset lists + - serial: 8250_pci: Add Realtek 816a and 816b + - serial: core: fix port-lock initialisation + - serial: core: fix console port-lock regression + - x86/boot/compressed: Disable relocation relaxation + - ksm: reinstate memcg charge on copied pages + - kprobes: fix kill kprobe which has been marked as gone + - mm/thp: fix __split_huge_pmd_locked() for migration PMD + - s390: add 3f program exception handler + - s390/zcrypt: fix kmalloc 256k failure + - ehci-hcd: Move include to keep CRC stable + - arm64: paravirt: Initialize steal time when cpu is online + - powerpc/dma: Fix dma_map_ops::get_required_mask + - selftests/vm: fix display of page size in map_hugetlb + - dm/dax: Fix table reference counts + - mm/memory_hotplug: drain per-cpu pages again during memory offline + - dm: Call proper helper to determine dax support + - dax: Fix compilation for CONFIG_DAX && !CONFIG_FS_DAX + - mm: memcg: fix memcg reclaim soft lockup + - nvme-loop: set ctrl state connecting after init + - Linux 5.8.11 + + * Miscellaneous Ubuntu changes + - SAUCE: drm/i915/display: Fix null deref in intel_psr_atomic_check() + - SAUCE: RDMA/core: Introduce peer memory interface + - SAUCE: fixup! RDMA/core: Introduce peer memory interface + - SAUCE: IB/mlx5: Use peer client page_shift + - SAUCE: IB/umem: Fix the Peer flow to handle pinned pages properly + - [Config] GCC version update + + -- Paolo Pisati Fri, 02 Oct 2020 10:46:22 +0200 + +linux (5.8.0-20.21) groovy; urgency=medium + + * groovy/linux: 5.8.0-20.21 -proposed tracker (LP: #1896668) + + * Lenovo ThinkBook 14-IML Touchpad not showing up in /proc/bus/input/devices + (LP: #1853277) + - i2c: core: Call i2c_acpi_install_space_handler() before + i2c_acpi_register_devices() + + * Enable LTR for endpoints behind VMD (LP: #1896598) + - SAUCE: PCI/ASPM: Enable LTR for endpoints behind VMD + + * Remove duplicated code in ip_defrag.sh of kselftests/net (LP: #1894062) + - Revert "UBUNTU: SAUCE: selftests: net: ip_defrag: modprobe missing + nf_defrag_ipv6 support" + + * [SRU] [Focal/OEM-5.6/Groovy]Fix AMD usb host controller lost after stress S3 + (LP: #1893914) + - SAUCE: xhci: workaround for S3 issue on AMD SNPS 3.0 xHC + + * debian/rules editconfigs does not work on s390x to change s390x only configs + (LP: #1863116) + - [Packaging] kernelconfig -- only update/edit configurations on architectures + we have compiler support + + * [Ubuntu 20.10] zPCI DMA tables and bitmap leak on hard unplug (PCI Event + 0x0304) (LP: #1896216) + - s390/pci: fix leak of DMA tables on hard unplug + + * md: improve IO accounting (LP: #1891151) + - md: improve io stats accounting + + * Groovy update: v5.8.10 upstream stable release (LP: #1896078) + - ARM: OMAP2+: Fix an IS_ERR() vs NULL check in _get_pwrdm() + - ARM: dts: logicpd-torpedo-baseboard: Fix broken audio + - ARM: dts: logicpd-som-lv-baseboard: Fix broken audio + - ARM: dts: logicpd-som-lv-baseboard: Fix missing video + - regulator: push allocation in regulator_ena_gpio_request() out of lock + - regulator: remove superfluous lock in regulator_resolve_coupling() + - ARM: dts: socfpga: fix register entry for timer3 on Arria10 + - ARM: dts: omap5: Fix DSI base address and clocks + - ARM: dts: ls1021a: fix QuadSPI-memory reg range + - ARM: dts: imx7ulp: Correct gpio ranges + - arm64: dts: imx: Add missing imx8mm-beacon-kit.dtb to build + - ARM: dts: imx7d-zii-rmu2: fix rgmii phy-mode for ksz9031 phy + - RDMA/rtrs-srv: Replace device_register with device_initialize and device_add + - RDMA/rxe: Fix memleak in rxe_mem_init_user + - RDMA/rxe: Drop pointless checks in rxe_init_ports + - RDMA/rxe: Fix panic when calling kmem_cache_create() + - RDMA/bnxt_re: Do not report transparent vlan from QP1 + - RDMA/bnxt_re: Fix the qp table indexing + - RDMA/bnxt_re: Static NQ depth allocation + - RDMA/bnxt_re: Fix driver crash on unaligned PSN entry address + - RDMA/bnxt_re: Remove the qp from list only if the qp destroy succeeds + - drm/sun4i: add missing put_device() call in sun8i_r40_tcon_tv_set_mux() + - arm64: dts: imx8mq: Fix TMU interrupt property + - drm/sun4i: Fix dsi dcs long write function + - scsi: qla2xxx: Fix regression on sparc64 + - scsi: libsas: Set data_dir as DMA_NONE if libata marks qc as NODATA + - drm/virtio: fix unblank + - RDMA/core: Fix unsafe linked list traversal after failing to allocate CQ + - RDMA/core: Fix reported speed and width + - scsi: megaraid_sas: Don't call disable_irq from process IRQ poll + - scsi: mpt3sas: Don't call disable_irq from IRQ poll handler + - soundwire: fix double free of dangling pointer + - Revert "kbuild: use -flive-patching when CONFIG_LIVEPATCH is enabled" + - interconnect: qcom: Fix small BW votes being truncated to zero + - padata: fix possible padata_works_lock deadlock + - drm/sun4i: Fix DE2 YVU handling + - drm/sun4i: backend: Support alpha property on lowest plane + - drm/sun4i: backend: Disable alpha on the lowest plane on the A20 + - KVM: arm64: Update page shift if stage 2 block mapping not supported + - ARM: dts: imx6sx: fix the pad QSPI1B_SCLK mux mode for uart3 + - mmc: sdhci-acpi: Clear amd_sdhci_host on reset + - mmc: sdhci-msm: Add retries when all tuning phases are found valid + - spi: stm32: Rate-limit the 'Communication suspended' message + - btrfs: fix NULL pointer dereference after failure to create snapshot + - i2c: npcm7xx: Fix timeout calculation + - block: restore a specific error code in bdev_del_partition + - seccomp: don't leak memory when filter install races + - nvme-fabrics: allow to queue requests for live queues + - spi: stm32: fix pm_runtime_get_sync() error checking + - block: Set same_page to false in __bio_try_merge_page if ret is false + - RDMA/rtrs-srv: Set .release function for rtrs srv device during device init + - IB/isert: Fix unaligned immediate-data handling + - ARM: dts: bcm: HR2: Fixed QSPI compatible string + - ARM: dts: NSP: Fixed QSPI compatible string + - ARM: dts: BCM5301X: Fixed QSPI compatible string + - arm64: dts: ns2: Fixed QSPI compatible string + - KVM: nVMX: Fix the update value of nested load IA32_PERF_GLOBAL_CTRL control + - KVM: x86: always allow writing '0' to MSR_KVM_ASYNC_PF_EN + - ARC: HSDK: wireup perf irq + - dmaengine: acpi: Put the CSRT table after using it + - MIPS: Loongson64: Do not override watch and ejtag feature + - netfilter: conntrack: allow sctp hearbeat after connection re-use + - netfilter: nft_set_rbtree: Detect partial overlap with start endpoint match + - drivers/net/wan/lapbether: Added needed_tailroom + - NFC: st95hf: Fix memleak in st95hf_in_send_cmd + - firestream: Fix memleak in fs_open + - scsi: qedf: Fix null ptr reference in qedf_stag_change_work + - ALSA: hda: Fix 2 channel swapping for Tegra + - ALSA: hda/tegra: Program WAKEEN register for Tegra + - drivers/dma/dma-jz4780: Fix race condition between probe and irq handler + - net: hns3: Fix for geneve tx checksum bug + - xfs: fix off-by-one in inode alloc block reservation calculation + - drivers/net/wan/lapbether: Set network_header before transmitting + - wireless: fix wrong 160/80+80 MHz setting + - mac80211: reduce packet loss event false positives + - cfg80211: Adjust 6 GHz frequency to channel conversion + - xfs: initialize the shortform attr header padding entry + - ARC: show_regs: fix r12 printing and simplify + - irqchip/eznps: Fix build error for !ARC700 builds + - media: gpio-ir-tx: spinlock is not needed to disable interrupts + - nvmet-tcp: Fix NULL dereference when a connect data comes in h2cdata pdu + - nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance + - nvme: have nvme_wait_freeze_timeout return if it timed out + - nvme-tcp: serialize controller teardown sequences + - nvme-tcp: fix timeout handler + - nvme-tcp: fix reset hang if controller died in the middle of a reset + - nvme-rdma: serialize controller teardown sequences + - nvme-rdma: fix timeout handler + - nvme-rdma: fix reset hang if controller died in the middle of a reset + - nvme-pci: cancel nvme device request before disabling + - HID: quirks: Set INCREMENT_USAGE_ON_DUPLICATE for all Saitek X52 devices + - HID: microsoft: Add rumble support for the 8bitdo SN30 Pro+ controller + - drivers/net/wan/hdlc_cisco: Add hard_header_len + - HID: elan: Fix memleak in elan_input_configured + - ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id + - cpufreq: intel_pstate: Refuse to turn off with HWP enabled + - cpufreq: intel_pstate: Fix intel_pstate_get_hwp_max() for turbo disabled + - arm64/module: set trampoline section flags regardless of + CONFIG_DYNAMIC_FTRACE + - ALSA: hda: hdmi - add Rocketlake support + - ALSA: hda: fix a runtime pm issue in SOF when integrated GPU is disabled + - ALSA: hda: use consistent HDAudio spelling in comments/docs + - drivers/net/wan/hdlc: Change the default of hard_header_len to 0 + - drm/amdgpu: Fix bug in reporting voltage for CIK + - iommu/amd: Do not force direct mapping when SME is active + - iommu/amd: Do not use IOMMUv2 functionality when SME is active + - gcov: Disable gcov build with GCC 10 + - iio: adc: mcp3422: fix locking scope + - iio: adc: mcp3422: fix locking on error path + - iio: adc: ti-ads1015: fix conversion when CONFIG_PM is not set + - iio: cros_ec: Set Gyroscope default frequency to 25Hz + - iio:light:ltr501 Fix timestamp alignment issue. + - iio:proximity:mb1232: Fix timestamp alignment and prevent data leak. + - iio:accel:bmc150-accel: Fix timestamp alignment and prevent data leak. + - iio:adc:ti-adc084s021 Fix alignment and data leak issues. + - iio:adc:ina2xx Fix timestamp alignment issue. + - iio:adc:max1118 Fix alignment of timestamp and data leak issues + - iio:adc:ti-adc081c Fix alignment and data leak issues + - iio:magnetometer:ak8975 Fix alignment and data leak issues. + - iio:light:max44000 Fix timestamp alignment and prevent data leak. + - iio:chemical:ccs811: Fix timestamp alignment and prevent data leak. + - iio: accel: kxsd9: Fix alignment of local buffer. + - iio:accel:mma7455: Fix timestamp alignment and prevent data leak. + - iio:accel:mma8452: Fix timestamp alignment and prevent data leak. + - staging: wlan-ng: fix out of bounds read in prism2sta_probe_usb() + - btrfs: require only sector size alignment for parent eb bytenr + - btrfs: fix lockdep splat in add_missing_dev + - btrfs: free data reloc tree on failed mount + - btrfs: fix wrong address when faulting in pages in the search ioctl + - thunderbolt: Disable ports that are not implemented + - kobject: Restore old behaviour of kobject_del(NULL) + - regulator: push allocation in regulator_init_coupling() outside of lock + - regulator: push allocations in create_regulator() outside of lock + - regulator: push allocation in set_consumer_device_supply() out of lock + - regulator: plug of_node leak in regulator_register()'s error path + - regulator: core: Fix slab-out-of-bounds in regulator_unlock_recursive() + - misc: eeprom: at24: register nvmem only after eeprom is ready to use + - scsi: target: iscsi: Fix data digest calculation + - scsi: lpfc: Fix setting IRQ affinity with an empty CPU mask + - scsi: target: iscsi: Fix hang in iscsit_access_np() when getting + tpg->np_login_sem + - drm/tve200: Stabilize enable/disable + - drm/msm: Split the a5xx preemption record + - drm/msm: Disable preemption on all 5xx targets + - drm/msm: Disable the RPTR shadow + - mmc: sdio: Use mmc_pre_req() / mmc_post_req() + - mmc: sdhci-of-esdhc: Don't walk device-tree on every interrupt + - nvme: Revert: Fix controller creation races with teardown flow + - rbd: require global CAP_SYS_ADMIN for mapping and unmapping + - RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars + - RDMA/mlx4: Read pkey table length instead of hardcoded value + - fbcon: remove soft scrollback code + - fbcon: remove now unusued 'softback_lines' cursor() argument + - vgacon: remove software scrollback support + - KVM: VMX: Don't freeze guest when event delivery causes an APIC-access exit + - KVM: arm64: Do not try to map PUDs when they are folded into PMD + - kvm x86/mmu: use KVM_REQ_MMU_SYNC to sync when needed + - KVM: fix memory leak in kvm_io_bus_unregister_dev() + - Revert "usb: dwc3: meson-g12a: fix shared reset control use" + - debugfs: Fix module state check condition + - test_firmware: Test platform fw loading on non-EFI systems + - arm64: dts: imx8mp: correct sdma1 clk setting + - ARM: dts: vfxxx: Add syscon compatible with OCOTP + - video: fbdev: fix OOB read in vga_8planes_imageblit() + - staging: greybus: audio: fix uninitialized value issue + - phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init + - usb: core: fix slab-out-of-bounds Read in read_descriptors + - USB: serial: ftdi_sio: add IDs for Xsens Mti USB converter + - USB: serial: option: support dynamic Quectel USB compositions + - USB: serial: option: add support for SIM7070/SIM7080/SIM7090 modules + - usb: Fix out of sync data toggle if a configured device is reconfigured + - usb: typec: ucsi: acpi: Check the _DEP dependencies + - usb: typec: intel_pmc_mux: Un-register the USB role switch + - usb: typec: intel_pmc_mux: Do not configure Altmode HPD High + - usb: typec: intel_pmc_mux: Do not configure SBU and HSL Orientation in + Alternate modes + - drm/msm/gpu: make ringbuffer readonly + - gcov: add support for GCC 10.1 + - Linux 5.8.10 + - [Config] GCC version update + - [Config] updateconfigs following v5.8.10 import + + * Wakeup the system by touching the touchpad (LP: #1888331) + - HID: i2c-hid: Enable wakeup capability from Suspend-to-Idle + + * Fix non-working NVMe after S3 (LP: #1895718) + - SAUCE: PCI: Enable ACS quirk on CML root port + + * Thunderbolt3 daisy chain sometimes doesn't work (LP: #1895606) + - thunderbolt: Retry DROM read once if parsing fails + + * Groovy update: v5.8.9 upstream stable release (LP: #1895634) + - io_uring: fix cancel of deferred reqs with ->files + - io_uring: fix linked deferred ->files cancellation + - RDMA/cma: Simplify DEVICE_REMOVAL for internal_id + - RDMA/cma: Using the standard locking pattern when delivering the removal + event + - RDMA/cma: Remove unneeded locking for req paths + - RDMA/cma: Execute rdma_cm destruction from a handler properly + - ipv4: Silence suspicious RCU usage warning + - ipv6: Fix sysctl max for fib_multipath_hash_policy + - netlabel: fix problems with mapping removal + - net: usb: dm9601: Add USB ID of Keenetic Plus DSL + - sctp: not disable bh in the whole sctp_get_port_local() + - taprio: Fix using wrong queues in gate mask + - tipc: fix shutdown() of connectionless socket + - tipc: fix using smp_processor_id() in preemptible + - net: disable netpoll on fresh napis + - mptcp: free acked data before waiting for more memory + - Linux 5.8.9 + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "selftests/bpf: Fix btf_dump test cases on 32-bit arches" + - [Config] annotations: remove VGACON_SOFT_SCROLLBACK + - packaging: arm64: add a 64KB mem pages flavour called 'generic-64k' + - packaging: arm64: generic-64k: skip ABI, modules and retpoline checks + + * Miscellaneous upstream changes + - tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup() + + -- Seth Forshee Tue, 22 Sep 2020 15:13:52 -0500 + +linux (5.8.0-19.20) groovy; urgency=medium + + * groovy/linux: 5.8.0-19.20 -proposed tracker (LP: #1895120) + + * Please switch default, hwe, oem kernel flavours governor to + CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y , such that advanced userspace + utilities such as game-mode can be later used to rev-up to to performance, + or rev-down to powersave. (LP: #1885730) + - [Config] Set the default CPU governor to ONDEMAND + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update variants + + * [WD19TB] external DP failed with DRM error message (LP: #1886165) + - drm/i915/tgl+: Use the correct DP_TP_* register instances in MST encoders + - drm/i915/tgl+: Fix TBT DPLL fractional divider for 38.4MHz ref clock + + * Groovy update: v5.8.8 upstream stable release (LP: #1895097) + - hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_1 telemetry for RAA228228 + - HID: quirks: Always poll three more Lenovo PixArt mice + - drm/msm/dpu: Fix reservation failures in modeset + - drm/msm/dpu: Fix scale params in plane validation + - drm/msm/dpu: fix unitialized variable error + - tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup + - drm/msm: add shutdown support for display platform_driver + - hwmon: (applesmc) check status earlier. + - nvmet: Disable keep-alive timer when kato is cleared to 0h + - drm/msm: enable vblank during atomic commits + - habanalabs: unmap PCI bars upon iATU failure + - habanalabs: validate packet id during CB parse + - habanalabs: set clock gating according to mask + - habanalabs: proper handling of alloc size in coresight + - habanalabs: set max power according to card type + - habanalabs: validate FW file size + - habanalabs: check correct vmalloc return code + - drm/msm/a6xx: fix gmu start on newer firmware + - gfs2: add some much needed cleanup for log flushes that fail + - hv_utils: return error if host timesysnc update is stale + - hv_utils: drain the timesync packets on onchannelcallback + - ceph: don't allow setlease on cephfs + - i2c: iproc: Fix shifting 31 bits + - drm/omap: fix incorrect lock state + - irqchip/ingenic: Leave parent IRQ unmasked on suspend + - cpuidle: Fixup IRQ state + - nbd: restore default timeout when setting it to zero + - s390: don't trace preemption in percpu macros + - drm/amd/display: should check error using DC_OK + - drm/amd/display: Reject overlay plane configurations in multi-display + scenarios + - drivers: gpu: amd: Initialize amdgpu_dm_backlight_caps object to 0 in + amdgpu_dm_update_backlight_caps + - drm/amd/display: Revert HDCP disable sequence change + - drm/amd/display: Fix passive dongle mistaken as active dongle in EDID + emulation + - drm/amd/display: Keep current gain when ABM disable immediately + - drm/amd/display: Retry AUX write when fail occurs + - drm/amd/display: Fix memleak in amdgpu_dm_mode_config_init + - xen/xenbus: Fix granting of vmalloc'd memory + - fsldma: fix very broken 32-bit ppc ioread64 functionality + - dmaengine: of-dma: Fix of_dma_router_xlate's of_dma_xlate handling + - batman-adv: Avoid uninitialized chaddr when handling DHCP + - batman-adv: Fix own OGM check in aggregated OGMs + - batman-adv: bla: use netif_rx_ni when not in interrupt context + - dmaengine: at_hdmac: check return value of of_find_device_by_node() in + at_dma_xlate() + - dmaengine: at_hdmac: add missing put_device() call in at_dma_xlate() + - dmaengine: at_hdmac: add missing kfree() call in at_dma_xlate() + - rxrpc: Keep the ACK serial in a var in rxrpc_input_ack() + - rxrpc: Fix loss of RTT samples due to interposed ACK + - rxrpc: Make rxrpc_kernel_get_srtt() indicate validity + - MIPS: mm: BMIPS5000 has inclusive physical caches + - MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores + - mmc: sdhci-acpi: Fix HS400 tuning for AMDI0040 + - perf sched timehist: Fix use of CPU list with summary option + - perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set + - netfilter: nf_tables: add NFTA_SET_USERDATA if not null + - netfilter: nf_tables: incorrect enum nft_list_attributes definition + - netfilter: nf_tables: fix destination register zeroing + - net: hns: Fix memleak in hns_nic_dev_probe + - net: systemport: Fix memleak in bcm_sysport_probe + - ravb: Fixed to be able to unload modules + - net: arc_emac: Fix memleak in arc_mdio_probe + - bpf: Fix a buffer out-of-bound access when filling raw_tp link_info + - dmaengine: pl330: Fix burst length if burst size is smaller than bus width + - dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg + - gtp: add GTPA_LINK info to msg sent to userspace + - net: ethernet: ti: cpsw: fix clean up of vlan mc entries for host port + - net: ethernet: ti: cpsw_new: fix clean up of vlan mc entries for host port + - bnxt_en: Don't query FW when netif_running() is false. + - bnxt_en: Check for zero dir entries in NVRAM. + - bnxt_en: Fix ethtool -S statitics with XDP or TCs enabled. + - bnxt_en: Fix PCI AER error recovery flow + - bnxt_en: Fix possible crash in bnxt_fw_reset_task(). + - bnxt_en: fix HWRM error when querying VF temperature + - xfs: finish dfops on every insert range shift iteration + - xfs: fix boundary test in xfs_attr_shortform_verify + - bnxt: don't enable NAPI until rings are ready + - media: vicodec: add missing v4l2_ctrl_request_hdl_put() + - media: cedrus: Add missing v4l2_ctrl_request_hdl_put() + - net: ethernet: ti: cpsw_new: fix error handling in + cpsw_ndo_vlan_rx_kill_vid() + - media: i2c: imx214: select V4L2_FWNODE + - selftests/bpf: Fix massive output from test_maps + - net: dsa: mt7530: fix advertising unsupported 1000baseT_Half + - netfilter: nfnetlink: nfnetlink_unicast() reports EAGAIN instead of ENOBUFS + - nvmet-fc: Fix a missed _irqsave version of spin_lock in + 'nvmet_fc_fod_op_done()' + - nvme: fix controller instance leak + - netfilter: conntrack: do not auto-delete clash entries on reply + - opp: Don't drop reference for an OPP table that was never parsed + - cxgb4: fix thermal zone device registration + - net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode + - MIPS: perf: Fix wrong check condition of Loongson event IDs + - block: fix locking in bdev_del_partition + - perf top/report: Fix infinite loop in the TUI for grouped events + - perf cs-etm: Fix corrupt data after perf inject from + - perf intel-pt: Fix corrupt data after perf inject from + - perf tools: Correct SNOOPX field offset + - net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init() + - fix regression in "epoll: Keep a reference on files added to the check list" + - net: bcmgenet: fix mask check in bcmgenet_validate_flow() + - net: gemini: Fix another missing clk_disable_unprepare() in probe + - nfp: flower: fix ABI mismatch between driver and firmware + - net: dp83867: Fix WoL SecureOn password + - MIPS: add missing MSACSR and upper MSA initialization + - MIPS: SNI: Fix SCSI interrupt + - xfs: fix xfs_bmap_validate_extent_raw when checking attr fork of rt files + - perf jevents: Fix suspicious code in fixregex() + - perf stat: Turn off summary for interval mode by default + - perf bench: The do_run_multi_threaded() function must use + IS_ERR(perf_session__new()) + - tg3: Fix soft lockup when tg3_reset_task() fails. + - x86, fakenuma: Fix invalid starting node ID + - iommu/vt-d: Serialize IOMMU GCMD register modifications + - thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430 + - thermal: qcom-spmi-temp-alarm: Don't suppress negative temp + - iommu/amd: Restore IRTE.RemapEn bit after programming IRTE + - iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE + - include/linux/log2.h: add missing () around n in roundup_pow_of_two() + - iommu/vt-d: Handle 36bit addressing for x86-32 + - tracing/kprobes, x86/ptrace: Fix regs argument order for i386 + - x86/entry: Fix AC assertion + - x86/debug: Allow a single level of #DB recursion + - ext2: don't update mtime on COW faults + - xfs: don't update mtime on COW faults + - ARC: perf: don't bail setup if pct irq missing in device-tree + - arc: fix memory initialization for systems with two memory banks + - btrfs: drop path before adding new uuid tree entry + - btrfs: fix potential deadlock in the search ioctl + - btrfs: allocate scrub workqueues outside of locks + - btrfs: set the correct lockdep class for new nodes + - btrfs: set the lockdep class for log tree extent buffers + - btrfs: block-group: fix free-space bitmap threshold + - btrfs: tree-checker: fix the error message for transid error + - Bluetooth: Return NOTIFY_DONE for hci_suspend_notifier + - x86/mm/32: Bring back vmalloc faulting on x86_32 + - Revert "ALSA: hda: Add support for Loongson 7A1000 controller" + - ALSA: ca0106: fix error code handling + - ALSA: usb-audio: Add basic capture support for Pioneer DJ DJM-250MK2 + - ALSA: usb-audio: Add implicit feedback quirk for UR22C + - ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check + - ALSA: hda/hdmi: always check pin power status in i915 pin fixup + - ALSA: firewire-digi00x: exclude Avid Adrenaline from detection + - ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO + - ALSA; firewire-tascam: exclude Tascam FE-8 from detection + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion NT950XCJ-X716A + - ALSA: hda/realtek - Improved routing for Thinkpad X1 7th/8th Gen + - arm64: dts: mt7622: add reset node for mmc device + - mmc: mediatek: add optional module reset property + - mmc: dt-bindings: Add resets/reset-names for Mediatek MMC bindings + - mmc: sdhci-pci: Fix SDHCI_RESET_ALL for CQHCI for Intel GLK-based + controllers + - media: rc: do not access device via sysfs after rc_unregister_device() + - media: rc: uevent sysfs file races with rc_unregister_device() + - affs: fix basic permission bits to actually work + - block: allow for_each_bvec to support zero len bvec + - block: ensure bdi->io_pages is always initialized + - io_uring: set table->files[i] to NULL when io_sqe_file_register failed + - io_uring: fix removing the wrong file in __io_sqe_files_update() + - s390: fix GENERIC_LOCKBREAK dependency typo in Kconfig + - libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks + - mips/oprofile: Fix fallthrough placement + - blk-iocost: ioc_pd_free() shouldn't assume irq disabled + - blk-stat: make q->stats->lock irqsafe + - dmaengine: dw-edma: Fix scatter-gather address calculation + - drm/i915: Fix sha_text population code + - drm/amd/pm: avoid false alarm due to confusing softwareshutdowntemp setting + - drm/amdgpu: Specify get_argument function for ci_smu_funcs + - dm writecache: handle DAX to partitions on persistent memory correctly + - dm mpath: fix racey management of PG initialization + - dm integrity: fix error reporting in bitmap mode after creation + - dm crypt: Initialize crypto wait structures + - dm cache metadata: Avoid returning cmd->bm wild pointer on error + - dm thin metadata: Avoid returning cmd->bm wild pointer on error + - dm thin metadata: Fix use-after-free in dm_bm_set_read_only + - mm: slub: fix conversion of freelist_corrupted() + - mm: track page table modifications in __apply_to_page_range() + - mm: madvise: fix vma user-after-free + - mm/rmap: fixup copying of soft dirty and uffd ptes + - io_uring: no read/write-retry on -EAGAIN error and O_NONBLOCK marked file + - perf record: Correct the help info of option "--no-bpf-event" + - kconfig: streamline_config.pl: check defined(ENV variable) before using it + - sdhci: tegra: Add missing TMCLK for data timeout + - checkpatch: fix the usage of capture group ( ... ) + - mm/migrate: fixup setting UFFD_WP flag + - mm/hugetlb: try preferred node first when alloc gigantic page from cma + - mm/hugetlb: fix a race between hugetlb sysctl handlers + - mm/khugepaged.c: fix khugepaged's request size in collapse_file + - cfg80211: regulatory: reject invalid hints + - net: usb: Fix uninit-was-stored issue in asix_read_phy_addr() + - Linux 5.8.8 + + * Groovy update: v5.8.7 upstream stable release (LP: #1894959) + - HID: core: Correctly handle ReportSize being zero + - HID: core: Sanitize event code and type when mapping input + - netfilter: nft_set_rbtree: Handle outcomes of tree rotations in overlap + detection + - mm: fix pin vs. gup mismatch with gate pages + - selftests/x86/test_vsyscall: Improve the process_vm_readv() test + - perf record/stat: Explicitly call out event modifiers in the documentation + - media: media/v4l2-core: Fix kernel-infoleak in video_put_user() + - KVM: arm64: Add kvm_extable for vaxorcism code + - KVM: arm64: Survive synchronous exceptions caused by AT instructions + - dt-bindings: mmc: tegra: Add tmclk for Tegra210 and later + - arm64: tegra: Add missing timeout clock to Tegra194 SDMMC nodes + - arm64: tegra: Add missing timeout clock to Tegra186 SDMMC nodes + - arm64: tegra: Add missing timeout clock to Tegra210 SDMMC + - sdhci: tegra: Remove SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK for Tegra210 + - sdhci: tegra: Remove SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK for Tegra186 + - nl80211: fix NL80211_ATTR_HE_6GHZ_CAPABILITY usage + - scsi: target: tcmu: Optimize use of flush_dcache_page + - Linux 5.8.7 + + * Groovy update: v5.8.6 upstream stable release (LP: #1894956) + - Revert "UBUNTU: SAUCE: Revert "ARM64: vdso32: Install vdso32 from + vdso_install"" + - khugepaged: khugepaged_test_exit() check mmget_still_valid() + - ASoC: intel/skl/hda - fix probe regression on systems without i915 + - ALSA: pci: delete repeated words in comments + - drm/amdgpu: fix RAS memory leak in error case + - EDAC/mc: Call edac_inc_ue_error() before panic + - ASoC: img: Fix a reference count leak in img_i2s_in_set_fmt + - ASoC: img-parallel-out: Fix a reference count leak + - ASoC: tegra: Fix reference count leaks. + - mfd: intel-lpss: Add Intel Emmitsburg PCH PCI IDs + - arm64: dts: qcom: msm8916: Pull down PDM GPIOs during sleep + - powerpc/xive: Ignore kmemleak false positives + - media: pci: ttpci: av7110: fix possible buffer overflow caused by bad DMA + value in debiirq() + - gcc-plugins/stackleak: Don't instrument itself + - blktrace: ensure our debugfs dir exists + - staging: rts5208: fix memleaks on error handling paths in probe + - scsi: target: tcmu: Fix crash on ARM during cmd completion + - mfd: intel-lpss: Add Intel Tiger Lake PCH-H PCI IDs + - iommu/iova: Don't BUG on invalid PFNs + - platform/chrome: cros_ec_sensorhub: Fix EC timestamp overflow + - drm/amdkfd: Fix reference count leaks. + - drm/radeon: fix multiple reference count leak + - drm/amdgpu: fix ref count leak in amdgpu_driver_open_kms + - drm/amd/display: fix ref count leak in amdgpu_drm_ioctl + - drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config + - drm/amdgpu/display: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/fence: fix ref count leak when pm_runtime_get_sync fails + - drm/amdkfd: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/pm: fix ref count leak when pm_runtime_get_sync fails + - scsi: lpfc: Fix shost refcount mismatch when deleting vport + - xfs: Don't allow logging of XFS_ISTALE inodes + - scsi: target: Fix xcopy sess release leak + - selftests/powerpc: Purge extra count_pmc() calls of ebb selftests + - f2fs: remove write attribute of main_blkaddr sysfs node + - f2fs: fix error path in do_recover_data() + - MIPS: KVM: Limit Trap-and-Emulate to MIPS32R2 only + - omapfb: fix multiple reference count leaks due to pm_runtime_get_sync + - PCI: Fix pci_create_slot() reference count leak + - ARM: dts: ls1021a: output PPS signal on FIPER2 + - rtlwifi: rtl8192cu: Prevent leaking urb + - mips/vdso: Fix resource leaks in genvdso.c + - ALSA: hda: Add support for Loongson 7A1000 controller + - gpu: host1x: Put gather's BO on pinning error + - cec-api: prevent leaking memory through hole in structure + - ASoC: Intel: sof_sdw_rt711: remove properties in card remove + - HID: quirks: add NOGET quirk for Logitech GROUP + - f2fs: fix use-after-free issue + - drm/nouveau/drm/noveau: fix reference count leak in nouveau_fbcon_open + - drm/nouveau: fix reference count leak in nv50_disp_atomic_commit + - drm/nouveau: Fix reference count leak in nouveau_connector_detect + - locking/lockdep: Fix overflow in presentation of average lock-time + - btrfs: file: reserve qgroup space after the hole punch range is locked + - btrfs: make btrfs_qgroup_check_reserved_leak take btrfs_inode + - scsi: iscsi: Do not put host in iscsi_set_flashnode_param() + - netfilter: nf_tables: report EEXIST on overlaps + - ceph: fix potential mdsc use-after-free crash + - ceph: do not access the kiocb after aio requests + - scsi: fcoe: Memory leak fix in fcoe_sysfs_fcf_del() + - i2c: i801: Add support for Intel Tiger Lake PCH-H + - EDAC/ie31200: Fallback if host bridge device is already initialized + - hugetlbfs: prevent filesystem stacking of hugetlbfs + - media: davinci: vpif_capture: fix potential double free + - media: i2c: imx290: fix reset GPIO pin handling + - drm/amd/display: change global buffer to local buffer + - drm/amd/display: fix compilation error on allmodconfig + - KVM: arm64: Fix symbol dependency in __hyp_call_panic_nvhe + - powerpc/spufs: add CONFIG_COREDUMP dependency + - dmaengine: idxd: fix PCI_MSI build errors + - USB: sisusbvga: Fix a potential UB casued by left shifting a negative value + - mmc: sdhci-of-arasan: fix timings allocation code + - brcmfmac: Set timeout value when configuring power save + - pinctrl: mediatek: avoid virtual gpio trying to set reg + - pinctrl: mediatek: fix build for tristate changes + - efi: provide empty efi_enter_virtual_mode implementation + - arm64: Fix __cpu_logical_map undefined issue + - net: openvswitch: introduce common code for flushing flows + - PCI: qcom: Add missing ipq806x clocks in PCIe driver + - PCI: qcom: Change duplicate PCI reset to phy reset + - PCI: qcom: Add missing reset for ipq806x + - PM / devfreq: Fix the wrong end with semicolon + - cpufreq: intel_pstate: Fix EPP setting via sysfs in active mode + - ALSA: usb-audio: Add capture support for Saffire 6 (USB 1.1) + - nfsd: fix oops on mixed NFSv4/NFSv3 client access + - block: respect queue limit of max discard segment + - block: virtio_blk: fix handling single range discard request + - drm/msm/adreno: fix updating ring fence + - block: Fix page_is_mergeable() for compound pages + - bfq: fix blkio cgroup leakage v4 + - hwmon: (nct7904) Correct divide by 0 + - blk-mq: insert request not through ->queue_rq into sw/scheduler queue + - blkcg: fix memleak for iolatency + - nvmet: fix a memory leak + - nvme-fc: Fix wrong return value in __nvme_fc_init_request() + - nvme: multipath: round-robin: fix single non-optimized path case + - null_blk: fix passing of REQ_FUA flag in null_handle_rq + - habanalabs: Fix memory corruption in debugfs + - drm/etnaviv: always start/stop scheduler in timeout processing + - i2c: core: Don't fail PRP0001 enumeration when no ID table exist + - i2c: rcar: in slave mode, clear NACK earlier + - vdpa: ifcvf: return err when fail to request config irq + - vdpa: ifcvf: free config irq in ifcvf_free_irq() + - usb: gadget: f_tcm: Fix some resource leaks in some error paths + - video: fbdev: controlfb: Fix build for COMPILE_TEST=y && PPC_PMAC=n + - spi: stm32: clear only asserted irq flags on interrupt + - jbd2: make sure jh have b_transaction set in refile/unfile_buffer + - ext4: don't BUG on inconsistent journal feature + - ext4: handle read only external journal device + - ext4: skip non-loaded groups at cr=0/1 when scanning for good groups + - drm/virtio: fix memory leak in virtio_gpu_cleanup_object() + - ext4: abort the filesystem if failed to async write metadata buffer + - jbd2: abort journal if free a async write error metadata buffer + - ext4: handle option set by mount flags correctly + - ext4: handle error of ext4_setup_system_zone() on remount + - ext4: correctly restore system zone info when remount fails + - fs: prevent BUG_ON in submit_bh_wbc() + - spi: stm32h7: fix race condition at end of transfer + - spi: stm32: fix fifo threshold level in case of short transfer + - spi: stm32: fix stm32_spi_prepare_mbr in case of odd clk_rate + - spi: stm32: always perform registers configuration prior to transfer + - drm/amd/powerplay: correct Vega20 cached smu feature state + - drm/amd/powerplay: correct UVD/VCE PG state on custom pptable uploading + - drm/amd/display: Fix LFC multiplier changing erratically + - drm/amd/display: Switch to immediate mode for updating infopackets + - selftests/bpf: Fix segmentation fault in test_progs + - netfilter: avoid ipv6 -> nf_defrag_ipv6 module dependency + - libbpf: Prevent overriding errno when logging errors + - tools/bpftool: Fix compilation warnings in 32-bit mode + - selftest/bpf: Fix compilation warnings in 32-bit mode + - selftests/bpf: Fix btf_dump test cases on 32-bit arches + - selftests/bpf: Correct various core_reloc 64-bit assumptions + - can: j1939: transport: j1939_xtp_rx_dat_one(): compare own packets to detect + corruptions + - dma-pool: fix coherent pool allocations for IOMMU mappings + - dma-pool: Only allocate from CMA when in same memory zone + - drivers/net/wan/hdlc_x25: Added needed_headroom and a skb->len check + - ALSA: hda/realtek: Add model alc298-samsung-headphone + - s390/cio: add cond_resched() in the slow_eval_known_fn() loop + - ASoC: wm8994: Avoid attempts to read unreadable registers + - ALSA: usb-audio: ignore broken processing/extension unit + - selftests: disable rp_filter for icmp_redirect.sh + - scsi: fcoe: Fix I/O path allocation + - scsi: ufs: Fix possible infinite loop in ufshcd_hold + - scsi: ufs: Improve interrupt handling for shared interrupts + - scsi: ufs: Clean up completed request without interrupt notification + - scsi: scsi_debug: Fix scp is NULL errors + - scsi: qla2xxx: Flush all sessions on zone disable + - scsi: qla2xxx: Flush I/O on zone disable + - scsi: qla2xxx: Indicate correct supported speeds for Mezz card + - scsi: qla2xxx: Fix login timeout + - scsi: qla2xxx: Check if FW supports MQ before enabling + - scsi: qla2xxx: Fix null pointer access during disconnect from subsystem + - Revert "scsi: qla2xxx: Fix crash on qla2x00_mailbox_command" + - macvlan: validate setting of multiple remote source MAC addresses + - net: gianfar: Add of_node_put() before goto statement + - drm/amdgpu: fix NULL pointer access issue when unloading driver + - drm/amdkfd: fix the wrong sdma instance query for renoir + - bpf: Fix a rcu_sched stall issue with bpf task/task_file iterator + - bpf: Avoid visit same object multiple times + - ext4: limit the length of per-inode prealloc list + - powerpc/perf: Fix soft lockups due to missed interrupt accounting + - libbpf: Fix map index used in error message + - bpf: selftests: global_funcs: Check err_str before strstr + - arm64: Move handling of erratum 1418040 into C code + - arm64: Allow booting of late CPUs affected by erratum 1418040 + - hwmon: (gsc-hwmon) Scale temperature to millidegrees + - block: fix get_max_io_size() + - block: loop: set discard granularity and alignment for block device backed + loop + - blk-mq: order adding requests to hctx->dispatch and checking SCHED_RESTART + - btrfs: reset compression level for lzo on remount + - btrfs: check the right error variable in btrfs_del_dir_entries_in_log + - btrfs: fix space cache memory leak after transaction abort + - btrfs: detect nocow for swap after snapshot delete + - fbcon: prevent user font height or width change from causing potential out- + of-bounds access + - USB: lvtest: return proper error code in probe + - vt: defer kfree() of vc_screenbuf in vc_do_resize() + - vt_ioctl: change VT_RESIZEX ioctl to check for error return from vc_resize() + - serial: samsung: Removes the IRQ not found warning + - serial: pl011: Fix oops on -EPROBE_DEFER + - serial: pl011: Don't leak amba_ports entry on driver register error + - serial: stm32: avoid kernel warning on absence of optional IRQ + - serial: 8250_exar: Fix number of ports for Commtech PCIe cards + - serial: 8250: change lock order in serial8250_do_startup() + - io_uring: clear req->result on IOPOLL re-issue + - writeback: Protect inode->i_io_list with inode->i_lock + - writeback: Avoid skipping inode writeback + - writeback: Fix sync livelock due to b_dirty_time processing + - XEN uses irqdesc::irq_data_common::handler_data to store a per interrupt XEN + data pointer which contains XEN specific information. + - usb: renesas-xhci: remove version check + - usb: host: xhci-tegra: otg usb2/usb3 port init + - usb: host: xhci-tegra: fix tegra_xusb_get_phy() + - usb: host: xhci: fix ep context print mismatch in debugfs + - xhci: Always restore EP_SOFT_CLEAR_TOGGLE even if ep reset failed + - io-wq: fix hang after cancelling pending hashed work + - KVM: arm64: Set HCR_EL2.PTW to prevent AT taking synchronous exception + - arm64: vdso32: make vdso32 install conditional + - PM: sleep: core: Fix the handling of pending runtime resume requests + - powerpc/32s: Disable VMAP stack which CONFIG_ADB_PMU + - powerpc/perf: Fix crashes with generic_compat_pmu & BHRB + - device property: Fix the secondary firmware node handling in + set_primary_fwnode() + - crypto: af_alg - Work around empty control messages without MSG_MORE + - usbip: Implement a match function to fix usbip + - genirq/matrix: Deal with the sillyness of for_each_cpu() on UP + - irqchip/stm32-exti: Avoid losing interrupts due to clearing pending bits by + mistake + - x86/irq: Unbreak interrupt affinity setting + - x86/hotplug: Silence APIC only after all interrupts are migrated + - drm/i915: Fix cmd parser desc matching with masks + - drm/etnaviv: fix external abort seen on GC600 rev 0x19 + - drm/dp_mst: Don't return error code when crtc is null + - drm/modeset-lock: Take the modeset BKL for legacy drivers + - drm/amdgpu: Fix buffer overflow in INFO ioctl + - drm/amd/display: use correct scale for actual_brightness + - drm/amdgpu/gfx10: refine mgcg setting + - drm/amd/powerplay: Fix hardmins not being sent to SMU for RV + - drm/amd/pm: correct Vega10 swctf limit setting + - drm/amd/pm: correct Vega12 swctf limit setting + - drm/amd/pm: correct Vega20 swctf limit setting + - drm/amd/pm: correct the thermal alert temperature limit settings + - USB: yurex: Fix bad gfp argument + - usb: uas: Add quirk for PNY Pro Elite + - USB: quirks: Ignore duplicate endpoint on Sound Devices MixPre-D + - USB: Ignore UAS for JMicron JMS567 ATA/ATAPI Bridge + - usb: host: ohci-exynos: Fix error handling in exynos_ohci_probe() + - USB: gadget: u_f: add overflow checks to VLA macros + - USB: gadget: f_ncm: add bounds checks to ncm_unwrap_ntb() + - USB: gadget: u_f: Unbreak offset calculation in VLAs + - usb: dwc3: gadget: Don't setup more than requested + - usb: dwc3: gadget: Fix handling ZLP + - usb: dwc3: gadget: Handle ZLP for sg requests + - USB: cdc-acm: rework notification_buffer resizing + - usb: storage: Add unusual_uas entry for Sony PSZ drives + - USB: Also match device drivers using the ->match vfunc + - USB: Fix device driver race + - usb: typec: ucsi: Fix AB BA lock inversion + - usb: typec: ucsi: Fix 2 unlocked ucsi_run_command calls + - usb: typec: ucsi: Rework ppm_lock handling + - usb: typec: ucsi: Hold con->lock for the entire duration of + ucsi_register_port() + - usb: typec: tcpm: Fix Fix source hard reset response for TDA 2.3.1.1 and TDA + 2.3.1.2 failures + - io_uring: don't recurse on tsk->sighand->siglock with signalfd + - io_uring: don't use poll handler if file can't be nonblocking read/written + - io_uring: make offset == -1 consistent with preadv2/pwritev2 + - drm/atomic-helper: reset vblank on crtc reset + - fbmem: pull fbcon_update_vcs() out of fb_set_var() + - mm/page_counter: fix various data races at memsw + - HID: hiddev: Fix slab-out-of-bounds write in hiddev_ioctl_usage() + - drm/vmwgfx/stdu: Use drm_mode_config_reset + - drm/vmwgfx/sou: Use drm_mode_config_reset + - drm/vmwgfx/ldu: Use drm_mode_config_reset + - dma-pool: Fix an uninitialized variable bug in atomic_pool_expand() + - ALSA: usb-audio: Update documentation comment for MS2109 quirk + - Linux 5.8.6 + - [Config] GCC version update + + * DELL LATITUDE 5491 touchscreen doesn't work (LP: #1889446) // Groovy update: + v5.8.6 upstream stable release (LP: #1894956) + - USB: quirks: Add no-lpm quirk for another Raydium touchscreen + + * [NUC8CCHK][HDA-Intel - HDA Intel PCH, playback] No sound at all + (LP: #1875199) // Groovy update: v5.8.6 upstream stable release + (LP: #1894956) + - ALSA: hda/realtek: Fix pin default on Intel NUC 8 Rugged + + * CVE-2020-14386 + - net/packet: fix overflow in tpacket_rcv + + * dkms-build: downloads fail in private PPAs (LP: #1883874) + - dkms-build: apt-cache policy elides username:password information + + * Groovy update: v5.8.5 upstream stable release (LP: #1893237) + - gre6: Fix reception with IP6_TNL_F_RCV_DSCP_COPY + - net: Fix potential wrong skb->protocol in skb_vlan_untag() + - net: nexthop: don't allow empty NHA_GROUP + - net: qrtr: fix usage of idr in port assignment to socket + - net/sched: act_ct: Fix skb double-free in tcf_ct_handle_fragments() error + flow + - net: sctp: Fix negotiation of the number of data streams. + - net/smc: Prevent kernel-infoleak in __smc_diag_dump() + - tipc: call rcu_read_lock() in tipc_aead_encrypt_done() + - tipc: fix uninit skb->data in tipc_nl_compat_dumpit() + - net: ena: Make missed_tx stat incremental + - ethtool: Fix preserving of wanted feature bits in netlink interface + - ethtool: Account for hw_features in netlink interface + - ethtool: Don't omit the netlink reply if no features were changed + - netlink: fix state reallocation in policy export + - io_uring: fix missing ->mm on exit + - binfmt_flat: revert "binfmt_flat: don't offset the data start" + - Linux 5.8.5 + + * Miscellaneous Ubuntu changes + - [Config] Re-enable UEFI signing for arm64 + - SAUCE: Revert "UBUNTU: SAUCE: export __get_vm_area_caller() and + map_kernel_range()" + + -- Paolo Pisati Thu, 10 Sep 2020 22:15:09 +0200 + +linux (5.8.0-18.19) groovy; urgency=medium + + * groovy/linux: 5.8.0-18.19 -proposed tracker (LP: #1893047) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Groovy update: v5.8.4 upstream stable release (LP: #1893048) + - drm/vgem: Replace opencoded version of drm_gem_dumb_map_offset() + - drm/panel-simple: Fix inverted V/H SYNC for Frida FRD350H54004 panel + - drm/ast: Remove unused code paths for AST 1180 + - drm/ast: Initialize DRAM type before posting GPU + - khugepaged: adjust VM_BUG_ON_MM() in __khugepaged_enter() + - ALSA: hda: avoid reset of sdo_limit + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Flex Book + - ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion + - can: j1939: transport: j1939_session_tx_dat(): fix use-after-free read in + j1939_tp_txtimer() + - can: j1939: socket: j1939_sk_bind(): make sure ml_priv is allocated + - spi: Prevent adding devices below an unregistering controller + - io_uring: find and cancel head link async work on files exit + - mm/vunmap: add cond_resched() in vunmap_pmd_range + - romfs: fix uninitialized memory leak in romfs_dev_read() + - kernel/relay.c: fix memleak on destroy relay channel + - uprobes: __replace_page() avoid BUG in munlock_vma_page() + - squashfs: avoid bio_alloc() failure with 1Mbyte blocks + - mm: include CMA pages in lowmem_reserve at boot + - mm, page_alloc: fix core hung in free_pcppages_bulk() + - ASoC: amd: renoir: restore two more registers during resume + - RDMA/hfi1: Correct an interlock issue for TID RDMA WRITE request + - opp: Enable resources again if they were disabled earlier + - opp: Put opp table in dev_pm_opp_set_rate() for empty tables + - opp: Put opp table in dev_pm_opp_set_rate() if _set_opp_bw() fails + - ext4: do not block RWF_NOWAIT dio write on unallocated space + - ext4: fix checking of directory entry validity for inline directories + - jbd2: add the missing unlock_buffer() in the error path of + jbd2_write_superblock() + - scsi: zfcp: Fix use-after-free in request timeout handlers + - selftests: kvm: Use a shorter encoding to clear RAX + - s390/pci: fix zpci_bus_link_virtfn() + - s390/pci: re-introduce zpci_remove_device() + - s390/pci: fix PF/VF linking on hot plug + - s390/pci: ignore stale configuration request event + - mm/memory.c: skip spurious TLB flush for retried page fault + - drm: amdgpu: Use the correct size when allocating memory + - drm/amdgpu/display: use GFP_ATOMIC in dcn20_validate_bandwidth_internal + - drm/amd/display: Fix incorrect backlight register offset for DCN + - drm/amd/display: Fix EDID parsing after resume from suspend + - drm/amd/display: Blank stream before destroying HDCP session + - drm/amd/display: Fix DFPstate hang due to view port changed + - drm/amd/display: fix pow() crashing when given base 0 + - drm/i915/pmu: Prefer drm_WARN_ON over WARN_ON + - drm/i915: Provide the perf pmu.module + - scsi: ufs: Add DELAY_BEFORE_LPM quirk for Micron devices + - scsi: target: tcmu: Fix crash in tcmu_flush_dcache_range on ARM + - media: budget-core: Improve exception handling in budget_register() + - media: coda: jpeg: add NULL check after kmalloc + - f2fs: fix to check page dirty status before writeback + - rtc: goldfish: Enable interrupt in set_alarm() when necessary + - media: vpss: clean up resources in init + - f2fs: should avoid inode eviction in synchronous path + - Input: psmouse - add a newline when printing 'proto' by sysfs + - MIPS: Fix unable to reserve memory for Crash kernel + - m68knommu: fix overwriting of bits in ColdFire V3 cache control + - svcrdma: Fix another Receive buffer leak + - xfs: fix inode quota reservation checks + - drm/ttm: fix offset in VMAs with a pg_offs in ttm_bo_vm_access + - riscv: Fixup static_obj() fail + - jffs2: fix UAF problem + - ceph: fix use-after-free for fsc->mdsc + - swiotlb-xen: use vmalloc_to_page on vmalloc virt addresses + - cpufreq: intel_pstate: Fix cpuinfo_max_freq when MSR_TURBO_RATIO_LIMIT is 0 + - scsi: libfc: Free skb in fc_disc_gpn_id_resp() for valid cases + - virtio_ring: Avoid loop when vq is broken in virtqueue_poll + - media: camss: fix memory leaks on error handling paths in probe + - tools/testing/selftests/cgroup/cgroup_util.c: cg_read_strcmp: fix null + pointer dereference + - xfs: Fix UBSAN null-ptr-deref in xfs_sysfs_init + - alpha: fix annotation of io{read,write}{16,32}be() + - fat: fix fat_ra_init() for data clusters == 0 + - fs/signalfd.c: fix inconsistent return codes for signalfd4 + - ext4: fix potential negative array index in do_split() + - drm/virtio: fix missing dma_fence_put() in virtio_gpu_execbuffer_ioctl() + - ext4: don't allow overlapping system zones + - ext4: check journal inode extents more carefully + - netfilter: nf_tables: nft_exthdr: the presence return value should be + little-endian + - spi: stm32: fixes suspend/resume management + - ASoC: q6afe-dai: mark all widgets registers as SND_SOC_NOPM + - ASoC: q6routing: add dummy register read/write function + - tools/bpftool: Make skeleton code C++17-friendly by dropping typeof() + - bpf: sock_ops ctx access may stomp registers in corner case + - bpf: sock_ops sk access may stomp registers when dst_reg = src_reg + - libbpf: Fix BTF-defined map-in-map initialization on 32-bit host arches + - can: j1939: fix kernel-infoleak in j1939_sk_sock2sockaddr_can() + - can: j1939: transport: j1939_simple_recv(): ignore local J1939 messages send + not by J1939 stack + - can: j1939: transport: add j1939_session_skb_find_by_offset() function + - igc: Fix PTP initialization + - i40e: Set RX_ONLY mode for unicast promiscuous on VLAN + - i40e: Fix crash during removing i40e driver + - net: fec: correct the error path for regulator disable in probe + - bonding: show saner speed for broadcast mode + - can: j1939: fix support for multipacket broadcast message + - can: j1939: cancel rxtimer on multipacket broadcast session complete + - can: j1939: abort multipacket broadcast session when timeout occurs + - can: j1939: add rxtimer for multipacket broadcast session + - bonding: fix a potential double-unregister + - ipvlan: fix device features + - s390/runtime_instrumentation: fix storage key handling + - s390/ptrace: fix storage key handling + - ASoC: msm8916-wcd-analog: fix register Interrupt offset + - ASoC: intel: Fix memleak in sst_media_open + - watch_queue: Limit the number of watches a user can hold + - vfio-pci: Avoid recursive read-lock usage + - vfio/type1: Add proper error unwind for vfio_iommu_replay() + - arch/ia64: Restore arch-specific pgd_offset_k implementation + - kvm: x86: Toggling CR4.SMAP does not load PDPTEs in PAE mode + - kvm: x86: Toggling CR4.PKE does not load PDPTEs in PAE mode + - scsi: ufs: ti-j721e-ufs: Fix error return in ti_j721e_ufs_probe() + - scsi: ufs: Add quirk to fix mishandling utrlclr/utmrlclr + - scsi: ufs: Add quirk to disallow reset of interrupt aggregation + - scsi: ufs: Add quirk to enable host controller without hce + - scsi: ufs: Introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk + - scsi: ufs: Add quirk to fix abnormal ocs fatal error + - scsi: ufs-pci: Add quirk for broken auto-hibernate for Intel EHL + - scsi: ufs: Fix interrupt error message for shared interrupts + - Revert "scsi: qla2xxx: Disable T10-DIF feature with FC-NVMe during probe" + - kconfig: qconf: do not limit the pop-up menu to the first row + - kconfig: qconf: fix signal connection to invalid slots + - efi: avoid error message when booting under Xen + - Fix build error when CONFIG_ACPI is not set/enabled: + - RDMA/bnxt_re: Do not add user qps to flushlist + - Revert "RDMA/hns: Reserve one sge in order to avoid local length error" + - afs: Fix key ref leak in afs_put_operation() + - kconfig: qconf: remove qInfo() to get back Qt4 support + - afs: Fix NULL deref in afs_dynroot_depopulate() + - ARM64: vdso32: Install vdso32 from vdso_install + - powerpc/fixmap: Fix the size of the early debug area + - bpf: Use get_file_rcu() instead of get_file() for task_file iterator + - powerpc/pseries/hotplug-cpu: wait indefinitely for vCPU death + - bonding: fix active-backup failover for current ARP slave + - net: ena: Prevent reset after device destruction + - net: ena: Change WARN_ON expression in ena_del_napi_in_range() + - net: gemini: Fix missing free_netdev() in error path of + gemini_ethernet_port_probe() + - selftests/bpf: Remove test_align leftovers + - hv_netvsc: Fix the queue_mapping in netvsc_vf_xmit() + - net: dsa: b53: check for timeout + - epoll: Keep a reference on files added to the check list + - powerpc: Fix P10 PVR revision in /proc/cpuinfo for SMT4 cores + - powerpc/pseries: Do not initiate shutdown when system is running on UPS + - EDAC/{i7core,sb,pnd2,skx}: Fix error event severity + - efi/x86: Mark kernel rodata non-executable for mixed mode + - efi: add missed destroy_workqueue when efisubsys_init fails + - efi/libstub: Stop parsing arguments at "--" + - efi/libstub: Handle NULL cmdline + - efi/libstub: Handle unterminated cmdline + - do_epoll_ctl(): clean the failure exits up a bit + - KVM: Pass MMU notifier range flags to kvm_unmap_hva_range() + - KVM: arm64: Only reschedule if MMU_NOTIFIER_RANGE_BLOCKABLE is not set + - Revert "drm/amd/display: Improve DisplayPort monitor interop" + - Linux 5.8.4 + - [Config] Update configs following 5.8.4 stable update + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "ARM64: vdso32: Install vdso32 from vdso_install" + + -- Seth Forshee Wed, 26 Aug 2020 10:00:11 -0500 + +linux (5.8.0-17.18) groovy; urgency=medium + + * groovy/linux: 5.8.0-17.18 -proposed tracker (LP: #1892959) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * [Hyper-V] VSS and File Copy daemons intermittently fails to start + (LP: #1891224) + - [Packaging] Bind hv_vss_daemon startup to hv_vss device + - [Packaging] bind hv_fcopy_daemon startup to hv_fcopy device + + * Fix non-working USB devices plugged during system sleep (LP: #1892678) + - xhci: Do warm-reset when both CAS and XDEV_RESUME are set + + * ASPM not enabled on child devices behind VMD controller (LP: #1889384) + - SAUCE: PCI/ASPM: Enable ASPM for links under VMD domain + + * Groovy update: v5.8.3 upstream stable release (LP: #1892774) + - [Config] update config for ARMADA_AP_CPU_CLK + - ALSA: hda/realtek - Fix unused variable warning + - smb3: warn on confusing error scenario with sec=krb5 + - SMB3: Fix mkdir when idsfromsid configured on mount + - genirq/affinity: Make affinity setting if activated opt-in + - genirq: Unlock irq descriptor after errors + - genirq/PM: Always unlock IRQ descriptor in rearm_wake_irq() + - PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context() + - PCI/ATS: Add pci_pri_supported() to check device or associated PF + - PCI: Add device even if driver attach failed + - PCI: qcom: Define some PARF params needed for ipq8064 SoC + - PCI: qcom: Add support for tx term offset for rev 2.1.0 + - btrfs: allow use of global block reserve for balance item deletion + - btrfs: free anon block device right after subvolume deletion + - btrfs: don't allocate anonymous block device for user invisible roots + - btrfs: preallocate anon block device at first phase of snapshot creation + - btrfs: ref-verify: fix memory leak in add_block_entry + - btrfs: only commit the delayed inode when doing a full fsync + - btrfs: stop incremening log_batch for the log root tree when syncing log + - btrfs: only commit delayed items at fsync if we are logging a directory + - btrfs: remove no longer needed use of log_writers for the log root tree + - btrfs: don't traverse into the seed devices in show_devname + - btrfs: pass checksum type via BTRFS_IOC_FS_INFO ioctl + - btrfs: open device without device_list_mutex + - btrfs: move the chunk_mutex in btrfs_read_chunk_tree + - btrfs: relocation: review the call sites which can be interrupted by signal + - btrfs: add missing check for nocow and compression inode flags + - btrfs: avoid possible signal interruption of btrfs_drop_snapshot() on + relocation tree + - btrfs: return EROFS for BTRFS_FS_STATE_ERROR cases + - btrfs: sysfs: use NOFS for device creation + - btrfs: don't WARN if we abort a transaction with EROFS + - btrfs: fix race between page release and a fast fsync + - btrfs: don't show full path of bind mounts in subvol= + - btrfs: fix messages after changing compression level by remount + - btrfs: only search for left_info if there is no right_info in + try_merge_free_space + - btrfs: inode: fix NULL pointer dereference if inode doesn't need compression + - btrfs: fix memory leaks after failure to lookup checksums during inode + logging + - btrfs: trim: fix underflow in trim length to prevent access beyond device + boundary + - btrfs: make sure SB_I_VERSION doesn't get unset by remount + - btrfs: fix return value mixup in btrfs_get_extent + - btrfs: check correct variable after allocation in btrfs_backref_iter_alloc + - arm64: dts: qcom: sc7180: Drop the unused non-MSA SID + - arm64: perf: Correct the event index in sysfs + - dt-bindings: iio: io-channel-mux: Fix compatible string in example code + - iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw() + - iio: imu: st_lsm6dsx: reset hw ts after resume + - xtensa: add missing exclusive access state management + - xtensa: fix xtensa_pmu_setup prototype + - cifs: Fix leak when handling lease break for cached root fid + - powerpc/ptdump: Fix build failure in hashpagetable.c + - powerpc: Allow 4224 bytes of stack expansion for the signal frame + - powerpc: Fix circular dependency between percpu.h and mmu.h + - pinctrl: ingenic: Enhance support for IRQ_TYPE_EDGE_BOTH + - pinctrl: ingenic: Properly detect GPIO direction when configured for IRQ + - media: venus: fix multiple encoder crash + - media: vsp1: dl: Fix NULL pointer dereference on unbind + - net: ethernet: stmmac: Disable hardware multicast filter + - net: stmmac: dwmac1000: provide multicast filter fallback + - irqchip/loongson-liointc: Fix misuse of gc->mask_cache + - irqchip/gic-v4.1: Ensure accessing the correct RD when writing INVALLR + - pidfd: Add missing sock updates for pidfd_getfd() + - net/compat: Add missing sock updates for SCM_RIGHTS + - selftests/seccomp: Set NNP for TSYNC ESRCH flag test + - md/raid5: Fix Force reconstruct-write io stuck in degraded raid5 + - bcache: allocate meta data pages as compound pages + - bcache: fix overflow in offset_to_stripe() + - bcache: avoid nr_stripes overflow in bcache_device_init() + - bcache: fix bio_{start,end}_io_acct with proper device + - bcache: use disk_{start,end}_io_acct() to count I/O for bcache device + - mac80211: fix misplaced while instead of if + - appletalk: Fix atalk_proc_init() return path + - driver core: Avoid binding drivers to dead devices + - MIPS: CPU#0 is not hotpluggable + - MIPS: qi_lb60: Fix routing to audio amplifier + - MIPS: SGI-IP27: always enable NUMA in Kconfig + - ext2: fix missing percpu_counter_inc + - khugepaged: collapse_pte_mapped_thp() flush the right range + - mm/hugetlb: fix calculation of adjust_range_if_pmd_sharing_possible + - khugepaged: collapse_pte_mapped_thp() protect the pmd lock + - khugepaged: retract_page_tables() remember to test exit + - hugetlbfs: remove call to huge_pte_alloc without i_mmap_rwsem + - mm/shuffle: don't move pages between zones and don't read garbage memmaps + - mm: fix kthread_use_mm() vs TLB invalidate + - ocfs2: change slot number type s16 to u16 + - mm/page_counter.c: fix protection usage propagation + - cma: don't quit at first error when activating reserved areas + - mm/memory_hotplug: fix unpaired mem_hotplug_begin/done + - ftrace: Setup correct FTRACE_FL_REGS flags for module + - kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler + - tracing/hwlat: Honor the tracing_cpumask + - tracing: Use trace_sched_process_free() instead of exit() for pid tracing + - watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in + watchdog_info.options + - watchdog: f71808e_wdt: remove use of wrong watchdog_info option + - watchdog: f71808e_wdt: clear watchdog timeout occurred flag + - ceph: set sec_context xattr on symlink creation + - ceph: handle zero-length feature mask in session messages + - pseries: Fix 64 bit logical memory block panic + - dm ebs: Fix incorrect checking for REQ_OP_FLUSH + - dm: don't call report zones for more than the user requested + - module: Correctly truncate sysfs sections output + - bootconfig: Fix to find the initargs correctly + - perf probe: Fix wrong variable warning when the probe point is not found + - perf probe: Fix memory leakage when the probe point is not found + - perf intel-pt: Fix FUP packet state + - perf intel-pt: Fix duplicate branch after CBR + - gfs2: Fix refcount leak in gfs2_glock_poke + - gfs2: Never call gfs2_block_zero_range with an open transaction + - remoteproc: qcom: q6v5: Update running state before requesting stop + - remoteproc: qcom_q6v5_mss: Validate MBA firmware size before load + - remoteproc: qcom_q6v5_mss: Validate modem blob firmware size before load + - libnvdimm: Validate command family indices + - drm/imx: imx-ldb: Disable both channels for split mode in enc->disable() + - drm/ingenic: Fix incorrect assumption about plane->index + - crypto: algif_aead - Only wake up when ctx->more is zero + - mfd: arizona: Ensure 32k clock is put on driver unbind and error + - octeontx2-af: change (struct qmem)->entry_sz from u8 to u16 + - mtd: rawnand: fsl_upm: Remove unused mtd var + - mtd: rawnand: brcmnand: ECC error handling on EDU transfers + - platform/chrome: cros_ec_ishtp: Fix a double-unlock issue + - drm/amdgpu/debugfs: fix memory leak when pm_runtime_get_sync failed + - RDMA/ipoib: Return void from ipoib_ib_dev_stop() + - RDMA/ipoib: Fix ABBA deadlock with ipoib_reap_ah() + - rtc: cpcap: fix range + - media: staging: rkisp1: remove macro RKISP1_DIR_SINK_SRC + - media: staging: rkisp1: rename macros 'RKISP1_DIR_*' to 'RKISP1_ISP_SD_*' + - media: staging: rkisp1: rsz: set default format if the given format is not + RKISP1_ISP_SD_SRC + - media: rockchip: rga: Introduce color fmt macros and refactor CSC mode logic + - media: rockchip: rga: Only set output CSC mode for RGB input + - IB/uverbs: Set IOVA on IB MR in uverbs layer + - sched/uclamp: Protect uclamp fast path code with static key + - selftests/bpf: Test_progs indicate to shell on non-actions + - bpf: selftests: Restore netns after each test + - selftests/bpf: test_progs use another shell exit on non-actions + - selftests/bpf: test_progs avoid minus shell exit codes + - USB: serial: ftdi_sio: make process-packet buffer unsigned + - USB: serial: ftdi_sio: clean up receive processing + - crypto: af_alg - Fix regression on empty requests + - devres: keep both device name and resource name in pretty name + - RDMA/counter: Only bind user QPs in auto mode + - RDMA/counter: Allow manually bind QPs with different pids to same counter + - mmc: renesas_sdhi_internal_dmac: clean up the code for dma complete + - rtw88: pci: disable aspm for platform inter-op with module parameter + - rtc: pl031: fix set_alarm by adding back call to alarm_irq_enable + - crypto: caam - Remove broken arc4 support + - gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers + - gpu: ipu-v3: image-convert: Wait for all EOFs before completing a tile + - dm rq: don't call blk_mq_queue_stopped() in dm_stop_queue() + - ima: Fail rule parsing when appraise_flag=blacklist is unsupportable + - f2fs: compress: fix to avoid memory leak on cc->cpages + - clk: actions: Fix h_clk for Actions S500 SoC + - selftests/powerpc: ptrace-pkey: Rename variables to make it easier to follow + code + - selftests/powerpc: ptrace-pkey: Update the test to mark an invalid pkey + correctly + - selftests/powerpc: ptrace-pkey: Don't update expected UAMOR value + - iommu/omap: Check for failure of a call to omap_iommu_dump_ctx + - clk: qcom: gcc: fix sm8150 GPU and NPU clocks + - clk: qcom: clk-alpha-pll: remove unused/incorrect PLL_CAL_VAL + - iommu/vt-d: Handle non-page aligned address + - iommu/vt-d: Enforce PASID devTLB field mask + - iommu/vt-d: Warn on out-of-range invalidation address + - iommu/vt-d: Disable multiple GPASID-dev bind + - i2c: rcar: slave: only send STOP event when we have been addressed + - f2fs: compress: fix to update isize when overwriting compressed file + - clk: qcom: gcc-sdm660: Fix up gcc_mss_mnoc_bimc_axi_clk + - clk: clk-atlas6: fix return value check in atlas6_clk_init() + - nvme: fix deadlock in disconnect during scan_work and/or ana_work + - sched/uclamp: Fix a deadlock when enabling uclamp static key + - pwm: bcm-iproc: handle clk_get_rate() return + - perf tools: Fix term parsing for raw syntax + - tools build feature: Use CC and CXX from parent + - i2c: rcar: avoid race when unregistering slave + - nfs: ensure correct writeback errors are returned on close() + - ubi: fastmap: Don't produce the initial next anchor PEB when fastmap is + disabled + - ubi: fastmap: Free fastmap next anchor peb during detach + - ubifs: Fix wrong orphan node deletion in ubifs_jnl_update|rename + - [Config] update config for CLK_HSDK + - clk: hsdk: Fix bad dependency on IOMEM + - clk: bcm2835: Do not use prediv with bcm2711's PLLs + - libnvdimm/security: fix a typo + - libnvdimm/security: ensure sysfs poll thread woke up and fetch updated attr + - openrisc: Fix oops caused when dumping stack + - perf evsel: Don't set sample_regs_intr/sample_regs_user for dummy event + - scsi: lpfc: nvmet: Avoid hang / use-after-free again when destroying + targetport + - nfs: nfs_file_write() should check for writeback errors + - watchdog: initialize device before misc_register + - watchdog: rti-wdt: balance pm runtime enable calls + - md-cluster: Fix potential error pointer dereference in resize_bitmaps() + - kprobes: Fix compiler warning for !CONFIG_KPROBES_ON_FTRACE + - x86/tsr: Fix tsc frequency enumeration bug on Lightning Mountain SoC + - x86/bugs/multihit: Fix mitigation reporting when VMX is not in use + - selftests/bpf: Prevent runqslower from racing on building bpftool + - Input: sentelic - fix error return when fsp_reg_write fails + - perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set + - selftests/bpf: Fix silent Makefile output + - vdpa_sim: init iommu lock + - recordmcount: Fix build failure on non arm64 + - vdpa: Fix pointer math bug in vdpasim_get_config() + - drm/vmwgfx: Use correct vmw_legacy_display_unit pointer + - drm/vmwgfx: Fix two list_for_each loop exit tests + - s390/test_unwind: fix possible memleak in test_unwind() + - s390/Kconfig: add missing ZCRYPT dependency to VFIO_AP + - net: qcom/emac: add missed clk_disable_unprepare in error path of + emac_clks_phase1_init + - nfs: Fix getxattr kernel panic and memory overflow + - NFS: Fix flexfiles read failover + - lib/test_lockup.c: fix return value of test_lockup_init() + - fs/minix: set s_maxbytes correctly + - fs/minix: fix block limit check for V1 filesystems + - fs/minix: remove expected error message in block_to_path() + - fs/ufs: avoid potential u32 multiplication overflow + - test_kmod: avoid potential double free in trigger_config_run_type() + - i2c: iproc: fix race between client unreg and isr + - mfd: dln2: Run event handler loop under spinlock + - crypto: algif_aead - fix uninitialized ctx->init + - ALSA: echoaudio: Fix potential Oops in snd_echo_resume() + - perf bench mem: Always memset source before memcpy + - tools build feature: Quote CC and CXX for their arguments + - perf/x86/rapl: Fix missing psys sysfs attributes + - sh: landisk: Add missing initialization of sh_io_port_base + - sh: fault: Fix duplicate printing of "PC:" + - drm/i915/gt: Force the GT reset on shutdown + - drm/panfrost: Use kvfree() to free bo->sgts + - drm/dp_mst: Fix the DDC I2C device registration of an MST port + - drm/dp_mst: Fix timeout handling of MST down messages + - drm/dp_mst: Fix the DDC I2C device unregistration of an MST port + - drm/omap: force runtime PM suspend on system suspend + - drm/tidss: fix modeset init for DPI panels + - drm: Added orientation quirk for ASUS tablet model T103HAF + - drm: fix drm_dp_mst_port refcount leaks in drm_dp_mst_allocate_vcpi + - drm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume + - drm/amd/display: Fix dmesg warning from setting abm level + - drm/amd/display: dchubbub p-state warning during surface planes switch + - Linux 5.8.3 + + * update ENA driver for LLQ acceleration mode, new hw support (LP: #1890845) + - ena_netdev: use generic power management + - net: ena: Fix using plain integer as NULL pointer in ena_init_napi_in_range + - net: ena: avoid unnecessary rearming of interrupt vector when busy-polling + - net: ena: add reserved PCI device ID + - net: ena: cosmetic: satisfy gcc warning + - net: ena: cosmetic: change ena_com_stats_admin stats to u64 + - net: ena: add support for traffic mirroring + - net: ena: enable support of rss hash key and function changes + - net: ena: move llq configuration from ena_probe to ena_device_init() + - net: ena: support new LLQ acceleration mode + + * DMA config issues on Synquacer ARM64 platform cause SATA configuration + failures on boot (LP: #1892138) + - of/address: check for invalid range.cpu_addr + + * [SRU] Fix acpi backlight issue on some thinkpads (LP: #1892010) + - platform/x86: thinkpad_acpi: not loading brightness_init when _BCL invalid + + * Fix non-working Goodix touchpad after system sleep (LP: #1891998) + - HID: i2c-hid: Always sleep 60ms after I2C_HID_PWR_ON commands + + * Groovy update: v5.8.2 upstream stable release (LP: #1892215) + - tracepoint: Mark __tracepoint_string's __used + - kunit: capture stderr on all make subprocess calls + - io_uring: abstract out task work running + - HID: input: Fix devices that return multiple bytes in battery report + - ARM: dts: stm32: fix uart nodes ordering in stm32mp15-pinctrl + - ARM: dts: stm32: fix uart7_pins_a comments in stm32mp15-pinctrl + - x86/mce/inject: Fix a wrong assignment of i_mce.status + - perf/x86/intel/uncore: Fix oops when counting IMC uncore events on some TGL + - x86, sched: check for counters overflow in frequency invariant accounting + - x86, sched: Bail out of frequency invariance if turbo frequency is unknown + - x86, sched: Bail out of frequency invariance if turbo_freq/base_freq gives 0 + - sched/fair: Fix NOHZ next idle balance + - sched: correct SD_flags returned by tl->sd_flags() + - arm64: dts: rockchip: fix rk3368-lion gmac reset gpio + - arm64: dts: rockchip: fix rk3399-puma vcc5v0-host gpio + - arm64: dts: rockchip: fix rk3399-puma gmac reset gpio + - EDAC: Fix reference count leaks + - crc-t10dif: Fix potential crypto notify dead-lock + - arm64: dts: qcom: msm8916: Replace invalid bias-pull-none property + - memory: tegra: Fix an error handling path in tegra186_emc_probe() + - soc: qcom: rpmh-rsc: Don't use ktime for timeout in write_tcs_reg_sync() + - crypto: ccree - fix resource leak on error path + - ARM: exynos: MCPM: Restore big.LITTLE cpuidle support + - rcu/tree: Repeat the monitor if any free channel is busy + - firmware: arm_scmi: Fix SCMI genpd domain probing + - arm64: dts: sun50i-pinephone: dldo4 must not be >= 1.8V + - arm64: dts: exynos: Fix silent hang after boot on Espresso + - sched/uclamp: Fix initialization of struct uclamp_rq + - crypto: qat - allow xts requests not multiple of block + - clk: scmi: Fix min and max rate when registering clocks with discrete rates + - m68k: mac: Don't send IOP message until channel is idle + - m68k: mac: Fix IOP status/control register writes + - platform/x86: intel-hid: Fix return value check in check_acpi_dev() + - platform/x86: intel-vbtn: Fix return value check in check_acpi_dev() + - ARM: dts: gose: Fix ports node name for adv7180 + - arm64: dts: renesas: Fix SD Card/eMMC interface device node names + - ARM: dts: gose: Fix ports node name for adv7612 + - ARM: at91: pm: add missing put_device() call in at91_pm_sram_init() + - ARM: dts: exynos: Disable frequency scaling for FSYS bus on Odroid XU3 + family + - reset: intel: fix a compile warning about REG_OFFSET redefined + - ARM: dts: at91: sama5d3_xplained: change phy-mode + - ARM: dts: sunxi: bananapi-m2-plus-v1.2: Add regulator supply to all CPU + cores + - ARM: dts: sunxi: bananapi-m2-plus-v1.2: Fix CPU supply voltages + - ARM: dts: stm32: Fix spi4 pins in stm32mp15-pinctrl + - spi: dw-dma: Fix Tx DMA channel working too fast + - spi: lantiq: fix: Rx overflow error in full duplex mode + - crypto: x86/crc32c - fix building with clang ias + - tpm: Require that all digests are present in TCG_PCR_EVENT2 structures + - recordmcount: only record relocation of type R_AARCH64_CALL26 on arm64. + - regulator: fix memory leak on error path of regulator_register() + - io_uring: fix sq array offset calculation + - arm64: dts: meson: misc fixups for w400 dtsi + - arm64: dts: meson: fix mmc0 tuning error on Khadas VIM3 + - soc: qcom: pdr: Reorder the PD state indication ack + - spi: rockchip: Fix error in SPI slave pio read + - ARM: socfpga: PM: add missing put_device() call in + socfpga_setup_ocram_self_refresh() + - iocost: Fix check condition of iocg abs_vdebt + - scripts/selinux/mdp: fix initial SID handling + - irqchip/ti-sci-inta: Fix return value about devm_ioremap_resource() + - seccomp: Fix ioctl number for SECCOMP_IOCTL_NOTIF_ID_VALID + - md: raid0/linear: fix dereference before null check on pointer mddev + - irqchip/loongson-htvec: Fix potential resource leak + - irqchip/loongson-htvec: Check return value of irq_domain_translate_onecell() + - irqchip/loongson-pch-pic: Check return value of + irq_domain_translate_twocell() + - irqchip/loongson-liointc: Fix potential dead lock + - kunit: tool: fix broken default args in unit tests + - kunit: tool: fix improper treatment of file location + - irqchip/irq-bcm7038-l1: Guard uses of cpu_logical_map + - irqchip/gic-v4.1: Use GFP_ATOMIC flag in allocate_vpe_l1_table() + - nvme-tcp: fix controller reset hang during traffic + - nvme-rdma: fix controller reset hang during traffic + - nvme-multipath: fix logic for non-optimized paths + - nvme-multipath: do not fall back to __nvme_find_path() for non-optimized + paths + - irqchip/loongson-pch-pic: Fix the misused irq flow handler + - block: don't do revalidate zones on invalid devices + - drm/tilcdc: fix leak & null ref in panel_connector_get_modes + - soc: qcom: rpmh-rsc: Set suppress_bind_attrs flag + - net: mscc: ocelot: fix encoding destination ports into multicast IPv4 + address + - ARM: exynos: clear L310_AUX_CTRL_FULL_LINE_ZERO in default l2c_aux_val + - Bluetooth: add a mutex lock to avoid UAF in do_enale_set + - loop: be paranoid on exit and prevent new additions / removals + - io_uring: fix req->work corruption + - fs/btrfs: Add cond_resched() for try_release_extent_mapping() stalls + - drm/amdgpu: avoid dereferencing a NULL pointer + - drm/radeon: Fix reference count leaks caused by pm_runtime_get_sync + - crypto: aesni - Fix build with LLVM_IAS=1 + - video: fbdev: savage: fix memory leak on error handling path in probe + - video: fbdev: neofb: fix memory leak in neo_scan_monitor() + - bus: ti-sysc: Add missing quirk flags for usb_host_hs + - md-cluster: fix wild pointer of unlock_all_bitmaps() + - rtw88: 8822ce: add support for device ID 0xc82f + - drm/nouveau/kms/nv50-: Fix disabling dithering + - arm64: dts: hisilicon: hikey: fixes to comply with adi, adv7533 DT binding + - drm/etnaviv: fix ref count leak via pm_runtime_get_sync + - ionic: rearrange reset and bus-master control + - memory: samsung: exynos5422-dmc: Do not ignore return code of regmap_read() + - drm/nouveau: fix reference count leak in nouveau_debugfs_strap_peek + - drm/nouveau: fix multiple instances of reference count leaks + - mmc: sdhci-cadence: do not use hardware tuning for SD mode + - btrfs: fix lockdep splat from btrfs_dump_space_info + - usb: mtu3: clear dual mode of u3port when disable device + - drm: msm: a6xx: fix gpu failure after system resume + - drm/msm: Fix a null pointer access in msm_gem_shrinker_count() + - drm/debugfs: fix plain echo to connector "force" attribute + - drm/radeon: disable AGP by default + - net: phy: mscc: restore the base page in vsc8514/8584_config_init + - irqchip/irq-mtk-sysirq: Replace spinlock with raw_spinlock + - mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls + - drm/amd/display: Improve DisplayPort monitor interop + - drm/amdgpu/debugfs: fix ref count leak when pm_runtime_get_sync fails + - drm/amdgpu/display bail early in dm_pp_get_static_clocks + - drm/amdgpu/display: properly guard the calls to swSMU functions + - drm/amd/display: allow query ddc data over aux to be read only operation + - drm/amd/powerplay: fix compile error with ARCH=arc + - bpf: Fix fds_example SIGSEGV error + - Bluetooth: hci_qca: Bug fixes for SSR + - brcmfmac: keep SDIO watchdog running when console_interval is non-zero + - brcmfmac: To fix Bss Info flag definition Bug + - brcmfmac: set state of hanger slot to FREE when flushing PSQ + - platform/x86: asus-nb-wmi: add support for ASUS ROG Zephyrus G14 and G15 + - iwlegacy: Check the return value of pcie_capability_read_*() + - gpu: host1x: debug: Fix multiple channels emitting messages simultaneously + - drm/amd/powerplay: suppress compile error around BUG_ON + - ionic: update eid test for overflow + - x86/uaccess: Make __get_user_size() Clang compliant on 32-bit + - mmc: sdhci-pci-o2micro: Bug fix for O2 host controller Seabird1 + - usb: gadget: net2280: fix memory leak on probe error handling paths + - bdc: Fix bug causing crash after multiple disconnects + - usb: bdc: Halt controller on suspend + - dyndbg: fix a BUG_ON in ddebug_describe_flags + - bcache: fix super block seq numbers comparision in register_cache_set() + - btrfs: allow btrfs_truncate_block() to fallback to nocow for data space + reservation + - btrfs: qgroup: free per-trans reserved space when a subvolume gets dropped + - ACPICA: Do not increment operation_region reference counts for field units + - io_uring: fix racy overflow count reporting + - io_uring: fix stalled deferred requests + - crypto: caam - silence .setkey in case of bad key length + - drm/msm: ratelimit crtc event overflow error + - drm/gem: Fix a leak in drm_gem_objects_lookup() + - drm/bridge: ti-sn65dsi86: Clear old error bits before AUX transfers + - drm/bridge: ti-sn65dsi86: Fix off-by-one error in clock choice + - drm/amdgpu: use the unlocked drm_gem_object_put + - agp/intel: Fix a memory leak on module initialisation failure + - mwifiex: Fix firmware filename for sd8977 chipset + - mwifiex: Fix firmware filename for sd8997 chipset + - btmrvl: Fix firmware filename for sd8977 chipset + - btmrvl: Fix firmware filename for sd8997 chipset + - video: fbdev: sm712fb: fix an issue about iounmap for a wrong address + - console: newport_con: fix an issue about leak related system resources + - video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call + - Bluetooth: hci_qca: Fix an error pointer dereference + - drm/mm: fix hole size comparison + - Bluetooth: hci_qca: Only remove TX clock vote after TX is completed + - Bluetooth: Allow suspend even when preparation has failed + - ath10k: Acquire tx_lock in tx error paths + - Bluetooth: hci_qca: Bug fix during SSR timeout + - Bluetooth: hci_qca: Increase SoC idle timeout to 200ms + - iio: improve IIO_CONCENTRATION channel type description + - iio: amplifiers: ad8366: Change devm_gpiod_get() to optional and add the + missed check + - scsi: ufs: Fix imprecise load calculation in devfreq window + - drm/etnaviv: Fix error path on failure to enable bus clk + - drm/panfrost: Fix inbalance of devfreq record_busy/idle() + - drm/arm: fix unintentional integer overflow on left shift + - clk: bcm63xx-gate: fix last clock availability + - powerpc/mm: Fix typo in IS_ENABLED() + - powerpc/fixmap: Fix FIX_EARLY_DEBUG_BASE when page size is 256k + - leds: lm355x: avoid enum conversion warning + - ASoC: fsl_easrc: Fix uninitialized scalar variable in + fsl_easrc_set_ctx_format + - Bluetooth: btusb: fix up firmware download sequence + - Bluetooth: btmtksdio: fix up firmware download sequence + - media: cxusb-analog: fix V4L2 dependency + - media: marvell-ccic: Add missed v4l2_async_notifier_cleanup() + - media: omap3isp: Add missed v4l2_ctrl_handler_free() for + preview_init_entities() + - staging: most: avoid null pointer dereference when iface is null + - dpaa2-eth: fix condition for number of buffer acquire retries + - ASoC: SOF: nocodec: add missing .owner field + - ASoC: Intel: cml_rt1011_rt5682: add missing .owner field + - ASoC: Intel: sof_sdw: add missing .owner field + - ASoC: Intel: bxt_rt298: add missing .owner field + - ASoC: Intel: Boards: cml_rt1011_rt5682: use statically define codec config + - net: atlantic: MACSec offload statistics checkpatch fix + - scsi: cumana_2: Fix different dev_id between request_irq() and free_irq() + - scsi: ufs: Disable WriteBooster capability for non-supported UFS devices + - drm/mipi: use dcs write for mipi_dsi_dcs_set_tear_scanline + - cxl: Fix kobject memleak + - lkdtm: Avoid more compiler optimizations for bad writes + - selftests/lkdtm: Reset WARN_ONCE to avoid false negatives + - lkdtm: Make arch-specific tests always available + - net: ethernet: ti: am65-cpsw-nuss: restore vlan configuration while down/up + - tracing: Move pipe reference to trace array instead of current_tracer + - scsi: qla2xxx: Make __qla2x00_alloc_iocbs() initialize 32 bits of + request_t.handle + - drm/amdgpu/debugfs: fix memory leak when amdgpu_virt_enable_access_debugfs + failed + - drm/amdgpu: ensure 0 is returned for success in jpeg_v2_5_wait_for_idle + - drm/radeon: fix array out-of-bounds read and write issues + - staging: vchiq_arm: Add a matching unregister call + - iavf: fix error return code in iavf_init_get_resources() + - iavf: Fix updating statistics + - dma-buf: fix dma-fence-chain out of order test + - RDMA/core: Fix bogus WARN_ON during ib_unregister_device_queued() + - scsi: powertec: Fix different dev_id between request_irq() and free_irq() + - scsi: eesox: Fix different dev_id between request_irq() and free_irq() + - ipvs: allow connection reuse for unconfirmed conntrack + - media: firewire: Using uninitialized values in node_probe() + - media: allegro: Fix some NULL vs IS_ERR() checks in probe + - media: staging: rkisp1: rsz: supported formats are the isp's src formats, + not sink formats + - media: staging: rkisp1: rsz: fix resolution limitation on sink pad + - media: tvp5150: Add missed media_entity_cleanup() + - media: exynos4-is: Add missed check for pinctrl_lookup_state() + - media: cros-ec-cec: do not bail on device_init_wakeup failure + - xfs: preserve rmapbt swapext block reservation from freed blocks + - xfs: don't eat an EIO/ENOSPC writeback error when scrubbing data fork + - xfs: fix reflink quota reservation accounting error + - RDMA/rxe: Skip dgid check in loopback mode + - PCI: Fix pci_cfg_wait queue locking problem + - samples: bpf: Fix bpf programs with kprobe/sys_connect event + - drm/stm: repair runtime power management + - kobject: Avoid premature parent object freeing in kobject_cleanup() + - leds: core: Flush scheduled work for system suspend + - drm: panel: simple: Fix bpc for LG LB070WV8 panel + - phy: cadence: salvo: fix wrong bit definition + - dt-bindings: phy: uniphier: Fix incorrect clocks and clock-names for PXs3 + usb3-hsphy + - phy: exynos5-usbdrd: Calibrating makes sense only for USB2.0 PHY + - mmc: sdhci-of-arasan: Add missed checks for devm_clk_register() + - drm/bridge: sil_sii8620: initialize return of sii8620_readb + - scsi: scsi_debug: Add check for sdebug_max_queue during module init + - bpfilter: Initialize pos variable + - mwifiex: Prevent memory corruption handling keys + - kernfs: do not call fsnotify() with name without a parent + - powerpc/pseries: remove cede offline state for CPUs + - powerpc/rtas: don't online CPUs for partition suspend + - powerpc/vdso: Fix vdso cpu truncation + - Bluetooth: Fix update of connection state in `hci_encrypt_cfm` + - RDMA/qedr: SRQ's bug fixes + - RDMA/qedr: Add EDPM mode type for user-fw compatibility + - RDMA/qedr: Add EDPM max size to alloc ucontext response + - RDMA/rxe: Prevent access to wr->next ptr afrer wr is posted to send queue + - ima: Have the LSM free its audit rule + - ima: Free the entire rule when deleting a list of rules + - ima: Free the entire rule if it fails to parse + - ima: Fail rule parsing when buffer hook functions have an invalid action + - ima: Fail rule parsing when the KEXEC_CMDLINE hook is combined with an + invalid cond + - ima: Fail rule parsing when the KEY_CHECK hook is combined with an invalid + cond + - staging: rtl8192u: fix a dubious looking mask before a shift + - ASoC: meson: fixes the missed kfree() for axg_card_add_tdm_loopback + - PCI/ASPM: Add missing newline in sysfs 'policy' + - go7007: add sanity checking for endpoints + - media: s5p-g2d: Fix a memory leak in an error handling path in 'g2d_probe()' + - phy: renesas: rcar-gen3-usb2: move irq registration to init + - powerpc/mm/radix: Free PUD table when freeing pagetable + - powerpc/book3s64/pkeys: Use PVR check instead of cpu feature + - drm/imx: fix use after free + - drm/imx: tve: fix regulator_disable error path + - gpu: ipu-v3: Restore RGB32, BGR32 + - spi: lantiq-ssc: Fix warning by using WQ_MEM_RECLAIM + - PCI: loongson: Use DECLARE_PCI_FIXUP_EARLY for bridge_class_quirk() + - USB: serial: iuu_phoenix: fix led-activity helpers + - clk: qcom: gcc: Make disp gpll0 branch aon for sc7180/sdm845 + - usb: core: fix quirks_param_set() writing to a const pointer + - thermal: ti-soc-thermal: Fix reversed condition in + ti_thermal_expose_sensor() + - coresight: etmv4: Fix resource selector constant + - coresight: etmv4: Counter values not saved on disable + - coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb() + - coresight: etm4x: Fix save/restore during cpu idle + - powerpc/perf: Fix missing is_sier_aviable() during build + - mt76: mt7663u: fix memory leak in set key + - mt76: mt7663u: fix potential memory leak in mcu message handler + - mt76: mt7615: fix potential memory leak in mcu message handler + - mt76: mt7915: potential array overflow in mt7915_mcu_tx_rate_report() + - mt76: mt7915: add missing CONFIG_MAC80211_DEBUGFS + - mt76: mt7615: fix possible memory leak in mt7615_mcu_wtbl_sta_add + - phy: armada-38x: fix NETA lockup when repeatedly switching speeds + - s390/bpf: Use brcl for jumping to exit_ip if necessary + - s390/bpf: Tolerate not converging code shrinking + - tools/bpftool: Fix error handing in do_skeleton() + - ASoC: tas2770: Fix reset gpio property name + - qed: Fix ILT and XRCD bitmap memory leaks + - ASoC: hdac_hda: fix deadlock after PCM open error + - powerpc/spufs: Fix the type of ret in spufs_arch_write_note + - PCI: rcar: Fix runtime PM imbalance on error + - MIPS: OCTEON: add missing put_device() call in dwc3_octeon_device_init() + - thermal: int340x: processor_thermal: fix: update Jasper Lake PCI id + - usb: dwc3: meson-g12a: fix shared reset control use + - usb: dwc2: Fix error path in gadget registration + - usb: gadget: f_uac2: fix AC Interface Header Descriptor wTotalLength + - scsi: megaraid_sas: Clear affinity hint + - scsi: mesh: Fix panic after host or bus reset + - scsi: core: Add missing scsi_device_put() in scsi_host_block() + - net: dsa: mv88e6xxx: MV88E6097 does not support jumbo configuration + - bpf: Fix pos computation for bpf_iter seq_ops->start() + - powerpc/watchpoint: Fix 512 byte boundary limit + - powerpc/watchpoint: Fix DAWR exception constraint + - powerpc/watchpoint: Fix DAWR exception for CACHEOP + - macintosh/via-macii: Access autopoll_devs when inside lock + - gpio: regmap: fix type clash + - PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path + - PCI: cadence: Fix updating Vendor ID and Subsystem Vendor ID register + - RDMA/core: Fix return error value in _ib_modify_qp() to negative + - Smack: fix another vsscanf out of bounds + - Smack: prevent underflow in smk_set_cipso() + - power: supply: check if calc_soc succeeded in pm860x_init_battery + - Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers + - Bluetooth: hci_h5: Set HCI_UART_RESET_ON_INIT to correct flags + - Bluetooth: hci_serdev: Only unregister device if it was registered + - bpf: Fix bpf_ringbuf_output() signature to return long + - Bluetooth: Fix suspend notifier race + - Bluetooth: hci_qca: Stop collecting memdump again for command timeout during + SSR + - net: dsa: rtl8366: Fix VLAN semantics + - net: dsa: rtl8366: Fix VLAN set-up + - xfs: fix inode allocation block res calculation precedence + - xfs: clear XFS_DQ_FREEING if we can't lock the dquot buffer to flush + - selftests/powerpc: Squash spurious errors due to device removal + - powerpc/32s: Fix CONFIG_BOOK3S_601 uses + - powerpc/boot: Fix CONFIG_PPC_MPC52XX references + - selftests/powerpc: Fix CPU affinity for child process + - nvmem: sprd: Fix return value of sprd_efuse_probe() + - RDMA/rtrs-clt: add an additional random 8 seconds before reconnecting + - RDMA/rtrs: remove WQ_MEM_RECLAIM for rtrs_wq + - RDMA/netlink: Remove CAP_NET_RAW check when dump a raw QP + - PCI: Release IVRS table in AMD ACS quirk + - cpufreq: ap806: fix cpufreq driver needs ap cpu clk + - powerpc/pseries/hotplug-cpu: Remove double free in error path + - selftests/powerpc: Fix online CPU selection + - RDMA/hns: Fix error during modify qp RTS2RTS + - RDMA/hns: Fix the unneeded process when getting a general type of CQE error + - ASoC: meson: axg-tdm-interface: fix link fmt setup + - ASoC: meson: axg-tdmin: fix g12a skew + - ASoC: meson: axg-tdm-formatters: fix sclk inversion + - ASoC: soc-core: Fix regression causing sysfs entries to disappear + - net: ll_temac: Use devm_platform_ioremap_resource_byname() + - drm/msm/dpu: don't use INTF_INPUT_CTRL feature on sdm845 + - libbpf: Fix register in PT_REGS MIPS macros + - MIPS: only register FTLBPar exception handler for supported models + - ASoC: core: use less strict tests for dailink capabilities + - ASoC: meson: cards: deal dpcm flag change + - ASoC: fsl_sai: Fix value of FSL_SAI_CR1_RFW_MASK + - s390/qeth: tolerate pre-filled RX buffer + - s390/qeth: don't process empty bridge port events + - ice: Clear and free XLT entries on reset + - ice: Graceful error handling in HW table calloc failure + - netfilter: nft_meta: fix iifgroup matching + - rtw88: fix LDPC field for RA info + - rtw88: fix short GI capability based on current bandwidth + - rtw88: coex: only skip coex triggered by BT info + - qtnfmac: Missing platform_device_unregister() on error in + qtnf_core_mac_alloc() + - wl1251: fix always return 0 error + - tools, build: Propagate build failures from tools/build/Makefile.build + - tools, bpftool: Fix wrong return value in do_dump() + - net/mlx5: DR, Change push vlan action sequence + - net/mlx5: Delete extra dump stack that gives nothing + - net: mvpp2: fix memory leak in mvpp2_rx + - net: ethernet: aquantia: Fix wrong return value + - liquidio: Fix wrong return value in cn23xx_get_pf_num() + - net: sgi: ioc3-eth: Fix the size used in some 'dma_free_coherent()' calls + - net: spider_net: Fix the size used in a 'dma_free_coherent()' call + - fsl/fman: use 32-bit unsigned integer + - fsl/fman: fix dereference null return value + - fsl/fman: fix unreachable code + - fsl/fman: check dereferencing null pointer + - fsl/fman: fix eth hash table allocation + - gpio: don't use same lockdep class for all devm_gpiochip_add_data users + - net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task() + - net: macb: Properly handle phylink on at91sam9x + - dpaa2-eth: Fix passing zero to 'PTR_ERR' warning + - hv_netvsc: do not use VF device if link is down + - Revert "vxlan: fix tos value before xmit" + - net: thunderx: initialize VF's mailbox mutex before first usage + - media: mtk-mdp: Fix a refcounting bug on error in init + - dlm: Fix kobject memleak + - ocfs2: fix unbalanced locking + - pinctrl-single: fix pcs_parse_pinconf() return value + - mtd: rawnand: brcmnand: Don't default to edu transfer + - svcrdma: Fix page leak in svc_rdma_recv_read_chunk() + - nfsd: avoid a NULL dereference in __cld_pipe_upcall() + - x86/fsgsbase/64: Fix NULL deref in 86_fsgsbase_read_task + - crypto: aesni - add compatibility with IAS + - af_packet: TPACKET_V3: fix fill status rwlock imbalance + - drivers/net/wan/lapbether: Added needed_headroom and a skb->len check + - net: Fix potential memory leak in proto_register() + - net/nfc/rawsock.c: add CAP_NET_RAW check. + - net: phy: fix memory leak in device-create error path + - net: Set fput_needed iff FDPUT_FPUT is set + - net/tls: Fix kmap usage + - vmxnet3: use correct tcp hdr length when packet is encapsulated + - net: refactor bind_bucket fastreuse into helper + - net: initialize fastreuse on inet_inherit_port + - vsock: fix potential null pointer dereference in vsock_poll() + - net: phy: marvell10g: fix null pointer dereference + - r8152: Use MAC address from correct device tree node + - USB: serial: cp210x: re-enable auto-RTS on open + - USB: serial: cp210x: enable usb generic throttle/unthrottle + - usb: cdns3: gadget: always zeroed TRB buffer when enable endpoint + - iommu/vt-d: Skip TE disabling on quirky gfx dedicated iommu + - vdpasim: protect concurrent access to iommu iotlb + - ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO + - ALSA: hda - reverse the setting value in the micmute_led_set + - ALSA: usb-audio: Creative USB X-Fi Pro SB1095 volume knob support + - ALSA: usb-audio: fix overeager device match for MacroSilicon MS2109 + - ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109 + - ALSA: usb-audio: add quirk for Pioneer DDJ-RB + - tpm: Unify the mismatching TPM space buffer sizes + - pstore: Fix linking when crypto API disabled + - crypto: hisilicon - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not + specified + - crypto: qat - fix double free in qat_uclo_create_batch_init_list + - crypto: ccp - Fix use of merged scatterlists + - crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified + - tick/nohz: Narrow down noise while setting current task's tick dependency + - bitfield.h: don't compile-time validate _val in FIELD_FIT + - fs/minix: check return value of sb_getblk() + - fs/minix: don't allow getting deleted inodes + - fs/minix: reject too-large maximum file size + - kvm: x86: replace kvm_spec_ctrl_test_value with runtime test on the host + - 9p: Fix memory leak in v9fs_mount + - driver core: Fix probe_count imbalance in really_probe() + - media: media-request: Fix crash if memory allocation fails + - drm/ttm/nouveau: don't call tt destroy callback on alloc failure. + - io_uring: set ctx sq/cq entry count earlier + - io_uring: use TWA_SIGNAL for task_work uncondtionally + - io_uring: fail poll arm on queue proc failure + - io_uring: sanitize double poll handling + - NFS: Don't move layouts to plh_return_segs list while in use + - NFS: Don't return layout segments that are in use + - cpufreq: Fix locking issues with governors + - cpufreq: dt: fix oops on armada37xx + - MIPS: VZ: Only include loongson_regs.h for CPU_LOONGSON64 + - include/asm-generic/vmlinux.lds.h: align ro_after_init + - PM / devfreq: rk3399_dmc: Fix kernel oops when rockchip,pmu is absent + - PM / devfreq: Fix indentaion of devfreq_summary debugfs node + - spi: spidev: Align buffers for DMA + - mtd: rawnand: qcom: avoid write to unavailable register + - mtd: spi-nor: intel-spi: Simulate WRDI command + - erofs: fix extended inode could cross boundary + - Revert "mm/vmstat.c: do not show lowmem reserve protection information of + empty zone" + - Revert "parisc: Improve interrupt handling in arch_spin_lock_flags()" + - Revert "parisc: Drop LDCW barrier in CAS code when running UP" + - Revert "parisc: Use ldcw instruction for SMP spinlock release barrier" + - Revert "parisc: Revert "Release spinlocks using ordered store"" + - parisc: Do not use an ordered store in pa_tlb_lock() + - parisc: Implement __smp_store_release and __smp_load_acquire barriers + - parisc: mask out enable and reserved bits from sba imask + - ARM: dts: exynos: Extend all Exynos5800 A15's OPPs with max voltage data + - ARM: 8992/1: Fix unwind_frame for clang-built kernels + - firmware: qcom_scm: Fix legacy convention SCM accessors + - irqdomain/treewide: Free firmware node after domain removal + - firmware_loader: EFI firmware loader must handle pre-allocated buffer + - xen/balloon: fix accounting in alloc_xenballooned_pages error path + - xen/balloon: make the balloon wait interruptible + - xen/gntdev: Fix dmabuf import with non-zero sgt offset + - drm/xen-front: Fix misused IS_ERR_OR_NULL checks + - s390/dasd: fix inability to use DASD with DIAG driver + - s390/numa: set node distance to LOCAL_DISTANCE + - s390/gmap: improve THP splitting + - io_uring: Fix NULL pointer dereference in loop_rw_iter() + - io_uring: hold 'ctx' reference around task_work queue + execute + - io_uring: add missing REQ_F_COMP_LOCKED for nested requests + - io_uring: enable lookup of links holding inflight files + - task_work: only grab task signal lock when needed + - Linux 5.8.2 + + * Regression on NFS: unable to handle page fault in mempool_alloc_slab + (LP: #1886277) // Groovy update: v5.8.2 upstream stable release + (LP: #1892215) + - SUNRPC: Fix ("SUNRPC: Add "@len" parameter to gss_unwrap()") + + * Groovy update: v5.8.2 upstream stable release (LP: #1892215) // + CVE-2019-19770 which shows this issue is not a core debugfs issue, but + - blktrace: fix debugfs use after free + + * Fix missing HDMI Audio on another HP Desktop (LP: #1891617) + - ALSA: hda/hdmi: Use force connectivity quirk on another HP desktop + + * alsa/sof: support 1 and 3 dmics (LP: #1891585) + - SAUCE: ASoC: SOF: intel: hda: support also devices with 1 and 3 dmics + + * fix ftrace pid filtering on linux 5.8 (LP: #1891528) + - ftrace: Fix ftrace_trace_task return value + + * Fix false-negative return value for rtnetlink.sh in kselftests/net + (LP: #1890136) + - selftests: rtnetlink: correct the final return value for the test + - selftests: rtnetlink: make kci_test_encap() return sub-test result + + * Disable Lenovo P620 Rear line-in volume control (LP: #1891281) + - ALSA: usb-audio: Disable Lenovo P620 Rear line-in volume control + + * tcp_fastopen_backup_key.sh from net in ubuntu_kernel_selftests failed on + Eoan LPAR (LP: #1869134) + - tcp: correct read of TFO keys on big endian systems + + * Groovy update: v5.8.1 upstream stable release (LP: #1891647) + - scsi: ufs: Fix and simplify setup_xfer_req variant operation + - USB: serial: qcserial: add EM7305 QDL product ID + - USB: iowarrior: fix up report size handling for some devices + - usb: xhci: define IDs for various ASMedia host controllers + - usb: xhci: Fix ASMedia ASM1142 DMA addressing + - Revert "ALSA: hda: call runtime_allow() for all hda controllers" + - ALSA: hda/realtek: Add alc269/alc662 pin-tables for Loongson-3 laptops + - ALSA: hda/ca0132 - Add new quirk ID for Recon3D. + - ALSA: hda/ca0132 - Fix ZxR Headphone gain control get value. + - ALSA: hda/ca0132 - Fix AE-5 microphone selection commands. + - ALSA: seq: oss: Serialize ioctls + - staging: android: ashmem: Fix lockdep warning for write operation + - staging: rtl8712: handle firmware load failure + - Staging: rtl8188eu: rtw_mlme: Fix uninitialized variable authmode + - Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt() + - Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt() + - Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt() + - omapfb: dss: Fix max fclk divider for omap36xx + - binder: Prevent context manager from incrementing ref 0 + - Smack: fix use-after-free in smk_write_relabel_self() + - scripts: add dummy report mode to add_namespace.cocci + - lkdtm/heap: Avoid edge and middle of slabs + - vgacon: Fix for missing check in scrollback handling + - mtd: properly check all write ioctls for permissions + - leds: wm831x-status: fix use-after-free on unbind + - leds: lm36274: fix use-after-free on unbind + - leds: da903x: fix use-after-free on unbind + - leds: lm3533: fix use-after-free on unbind + - leds: 88pm860x: fix use-after-free on unbind + - gpio: max77620: Fix missing release of interrupt + - xattr: break delegations in {set,remove}xattr + - Revert "powerpc/kasan: Fix shadow pages allocation failure" + - powerpc/kasan: Fix shadow pages allocation failure + - PCI: tegra: Revert tegra124 raw_violation_fixup + - ima: move APPRAISE_BOOTPARAM dependency on ARCH_POLICY to runtime + - random32: move the pseudo-random 32-bit definitions to prandom.h + - random: random.h should include archrandom.h, not the other way around + - arm64: kaslr: Use standard early random function + - Linux 5.8.1 + - [Config] Update annotations for changes in v5.8.1 + + * bcache by-uuid links disappear after mounting bcache0 (LP: #1861941) + - SAUCE: Revert "UBUNTU: SAUCE: (no-up) bcache: decouple emitting a cached_dev + CHANGE uevent" + + * Miscellaneous upstream changes + - Revert "ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs" + + -- Seth Forshee Tue, 25 Aug 2020 20:19:14 -0500 + +linux (5.8.0-16.17) groovy; urgency=medium + + * groovy/linux: 5.8.0-16.17 -proposed tracker (LP: #1891233) + + * Miscellaneous Ubuntu changes + - hio -- Update to use bio_{start,end}_io_acct with 5.8+ + - Enable hio driver + - [Packaging] Temporarily disable building doc package contents + + -- Seth Forshee Tue, 11 Aug 2020 15:32:58 -0500 + +linux (5.8.0-15.16) groovy; urgency=medium + + * groovy/linux: 5.8.0-15.16 -proposed tracker (LP: #1891177) + + * Miscellaneous Ubuntu changes + - SAUCE: Documentation: import error c_funcptr_sig_re, c_sig_re (sphinx- + doc/sphinx@0f49e30c) + + -- Seth Forshee Tue, 11 Aug 2020 09:29:58 -0500 + +linux (5.8.0-14.15) groovy; urgency=medium + + * groovy/linux: 5.8.0-14.15 -proposed tracker (LP: #1891085) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * msg_zerocopy.sh in net from ubuntu_kernel_selftests failed (LP: #1812620) + - selftests/net: relax cpu affinity requirement in msg_zerocopy test + + * Fix missing HDMI/DP Audio on an HP Desktop (LP: #1890441) + - ALSA: hda/hdmi: Add quirk to force connectivity + + * Add initial audio support for Lenovo ThinkStation P620 (LP: #1890317) + - ALSA: usb-audio: Add support for Lenovo ThinkStation P620 + + * Fix IOMMU error on AMD Radeon Pro W5700 (LP: #1890306) + - PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken + + * Enlarge hisi_sec2 capability (LP: #1890222) + - crypto: hisilicon - update SEC driver module parameter + + * Miscellaneous Ubuntu changes + - [Config] Re-enable signing for ppc64el + + -- Seth Forshee Mon, 10 Aug 2020 15:26:46 -0500 + +linux (5.8.0-13.14) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Remove i386 configs + - SAUCE: apply a workaround to re-enable CONFIG_CRYPTO_AEGIS128_SIMD + - SAUCE: export __get_vm_area_caller() and map_kernel_range() + - [Config] drop CONFIG_BINFMT_AOUT enforcement + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD" + + [ Upstream Kernel Changes ] + + * Rebase to v5.8 + + -- Andrea Righi Tue, 04 Aug 2020 09:51:50 +0200 + +linux (5.8.0-12.13) groovy; urgency=medium + + * groovy/linux: 5.8.0-12.13 -proposed tracker (LP: #1889481) + + * Fix right speaker of HP laptop (LP: #1889375) + - SAUCE: hda/realtek: Fix right speaker of HP laptop + + * blk_update_request error when mount nvme partition (LP: #1872383) + - SAUCE: nvme-pci: prevent SK hynix PC400 from using Write Zeroes command + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - Revert "UBUNTU: SAUCE: net: atlantic: Add support for firmware v4" + - net: atlantic: align return value of ver_match function with function name + - net: atlantic: add support for FW 4.x + + * Miscellaneous Ubuntu changes + - [Debian] Fix debian/tests for linux-5.8 -> linux rename + - SAUCE: selftests/powerpc: return skip code for spectre_v2 + + -- Seth Forshee Wed, 29 Jul 2020 16:58:47 -0500 + +linux (5.8.0-11.12) groovy; urgency=medium + + * groovy/linux: 5.8.0-11.12 -proposed tracker (LP: #1889336) + + * Miscellaneous Ubuntu changes + - [Packaging] dwarves is not required for linux-libc-dev or stage1 + + -- Seth Forshee Tue, 28 Jul 2020 22:33:24 -0500 + +linux (5.8.0-10.11) groovy; urgency=medium + + * groovy/linux: 5.8.0-10.11 -proposed tracker (LP: #1889316) + + * Miscellaneous Ubuntu changes + - [Packaging] Add more packages to Build-Depends-Indep for docs + - [Debian] Specify python executable in kmake + - [Debian] Don't treat warnings as errors during perf builds + - [Config] Disable signing for ppc64el + + -- Seth Forshee Tue, 28 Jul 2020 17:09:52 -0500 + +linux (5.8.0-9.10) groovy; urgency=medium + + * groovy/linux: 5.8.0-9.10 -proposed tracker (LP: #1889140) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: Fix s390x compile error on F32 utils/stat-display.c + - [Packaging] Add python3-venv to Build-Depends-Indep + + -- Seth Forshee Mon, 27 Jul 2020 21:01:46 -0500 + +linux (5.8.0-8.9) groovy; urgency=medium + + * groovy/linux: 5.8.0-8.9 -proposed tracker (LP: #1889104) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update variants + + * Introduce the new NVIDIA 450-server and the 450 UDA series (LP: #1887674) + - [Packaging] NVIDIA -- Add signed modules for 450 450-server + + * Introduce the new NVIDIA 418-server and 440-server series, and update the + current NVIDIA drivers (LP: #1881137) + - [packaging] add signed modules for the 418-server and the 440-server + flavours + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "radix-tree: Use local_lock for protection" + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + - [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD + - [Config] Enable nvidia dkms build + + * Miscellaneous upstream changes + - usbip: tools: fix build error for multiple definition + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc7 + + -- Seth Forshee Mon, 27 Jul 2020 11:18:12 -0500 + +linux (5.8.0-7.8) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Mon, 27 Jul 2020 09:22:19 +0200 + +linux-5.8 (5.8.0-7.8) groovy; urgency=medium + + * soc/amd/renoir: detect dmic from acpi table (LP: #1887734) + - ASoC: amd: add logic to check dmic hardware runtime + - ASoC: amd: add ACPI dependency check + - ASoC: amd: fixed kernel warnings + + * linux 4.15.0-109-generic network DoS regression vs -108 (LP: #1886668) + - SAUCE: Revert "netprio_cgroup: Fix unlimited memory leak of v2 cgroups" + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - SAUCE: net: atlantic: Add support for firmware v4 + + * MGA G200e doesn't work under GDM Wayland (LP: #1886140) + - drm/mgag200: Remove HW cursor + - drm/mgag200: Clean up mga_set_start_address() + - drm/mgag200: Clean up mga_crtc_do_set_base() + - drm/mgag200: Move mode-setting code into separate helper function + - drm/mgag200: Split MISC register update into PLL selection, SYNC and I/O + - drm/mgag200: Update mode registers after plane registers + - drm/mgag200: Set pitch in a separate helper function + - drm/mgag200: Set primary plane's format in separate helper function + - drm/mgag200: Move TAGFIFO reset into separate function + - drm/mgag200: Move hiprilvl setting into separate functions + - drm/mgag200: Move register initialization into separate function + - drm/mgag200: Remove out-commented suspend/resume helpers + - drm/mgag200: Use simple-display data structures + - drm/mgag200: Convert to simple KMS helper + - drm/mgag200: Replace VRAM helpers with SHMEM helpers + + * Miscellaneous Ubuntu changes + - SAUCE: s390/bpf: fix sign extension in branch_ku + - SAUCE: selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support + - SAUCE: selftests: fib_nexthop_multiprefix: fix cleanup() netns deletion + - [packaging] debhelper-compat (= 10) (and retire debian/compat) + - [Config] Update configs after rebase to 5.8-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc6 + + -- Andrea Righi Mon, 20 Jul 2020 09:55:47 +0200 + +linux-5.8 (5.8.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1 + (LP: #1887397) + - SAUCE: libtraceevent: Strip symbol version from nm output + + -- Seth Forshee Mon, 13 Jul 2020 14:07:53 -0500 + +linux-5.8 (5.8.0-5.6) groovy; urgency=medium + + * linux-libc-dev broken for crossbuilding, Multi-Arch:same violation + (LP: #1886188) + - [Packaging] Produce linux-libc-deb package for riscv64 + - [Debian] Disallow building linux-libc-dev from linux-riscv + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: test_bpf: remove expected fail for Ctx heavy + transformations test on s390" + - SAUCE: Revert "test_bpf: flag tests that cannot be jited on s390" + - [Config] Update configs (gcc update) + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc5 + + -- Andrea Righi Mon, 13 Jul 2020 08:42:14 +0200 + +linux-5.8 (5.8.0-4.5) groovy; urgency=medium + + * Add generic LED class support for audio LED (LP: #1885896) + - ALSA: hda: generic: Always call led-trigger for mic mute LED + - ALSA: hda: generic: Add a helper for mic-mute LED with LED classdev + - ALSA: hda/realtek: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/conexant: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/sigmatel: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda: generic: Drop unused snd_hda_gen_fixup_micmute_led() + - ALSA: hda: generic: Drop the old mic-mute LED hook + - ALSA: hda: generic: Add vmaster mute LED helper + - ALSA: hda/realtek: Use the new vmaster mute LED helper + - ALSA: hda/conexant: Use the new vmaster mute LED helper + - ALSA: hda/sigmatel: Use the new vmaster mute LED helper + - ALSA: hda/realtek: Unify LED helper code + - ALSA: hda: Let LED cdev handling suspend/resume + + * seccomp_bpf fails on powerpc (LP: #1885757) + - SAUCE: selftests/seccomp: fix ptrace tests on powerpc + + * CVE-2020-11935 + - SAUCE: aufs: do not call i_readcount_inc() + + * Miscellaneous Ubuntu changes + - SAUCE: Update aufs to 5.x-rcN 20200622 + - [Config] Update configs to set CONFIG_SND_HDA_GENERIC_LEDS value + - [Config] CONFIG_SECURITY_DMESG_RESTRICT=y + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc4 + + -- Seth Forshee Mon, 06 Jul 2020 08:14:28 -0500 + +linux-5.8 (5.8.0-3.4) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * lxc 1:4.0.2-0ubuntu1 ADT test failure with linux-5.8 5.8.0-1.2 + (LP: #1884635) + - SAUCE: overlayfs: fix faulty rebase + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: prevent ESTALE for LOOKUP_JUMP lookups + + * shiftfs: fix btrfs regression (LP: #1884767) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: fix dentry revalidation" + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=y + - SAUCE: regulator: rename da903x to da903x-regulator + - [Config] Add da903x to modules.ignore + - [Config] Update configs for rebase to 5.8-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc3 + + -- Seth Forshee Mon, 29 Jun 2020 08:48:25 -0500 + +linux-5.8 (5.8.0-2.3) groovy; urgency=medium + + * Support Audio Mute LED for two new HP laptops (LP: #1884251) + - ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems + + * CVE-2019-16089 + - SAUCE: nbd_genl_status: null check for nla_nest_start + + * tpm: fix TIS locality timeout problems (LP: #1881710) + - SAUCE: tpm: fix TIS locality timeout problems + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: security,perf: Allow further restriction of perf_event_open + - [Config] CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y + - [Config] Update configs and annotations for 5.8-rc2 + - [Config] Enable zfs + - [Config] Enable CONFIG_DEBUG_INFO_BTF + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc2 + + -- Seth Forshee Mon, 22 Jun 2020 15:05:54 -0500 + +linux-5.8 (5.8.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Debian] Support linux-x.y in udeb package names + - [Packaging] Use SRCPKGNAME for udeb packages + + -- Seth Forshee Wed, 17 Jun 2020 19:34:32 -0500 + +linux-5.8 (5.8.0-0.1) groovy; urgency=medium + + * Docker registry doesn't stay up and keeps restarting (LP: #1879690) + - Revert "UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay" + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Update source package name to linux-5.8 + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + - SAUCE: Import aufs driver + - [Config] Update configs for v5.8-rc1 + - [Config] Update annotations for v5.8-rc1 config changes + - SAUCE: shiftfs -- Fix build errors from missing fiemap definitions + - Disable hio driver + + * Miscellaneous upstream changes + - acpi: disallow loading configfs acpi tables when locked down + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc1 + + -- Seth Forshee Wed, 17 Jun 2020 11:54:24 -0500 + +linux-5.8 (5.8.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Sun, 14 Jun 2020 22:40:35 -0500 + +linux-5.7 (5.7.0-8.9) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enforce all config annotations (LP: #1879327) + - [Config]: do not enforce CONFIG_VERSION_SIGNATURE + - [Config]: prepare to enforce all + - [Config]: enforce all config options + + * Miscellaneous Ubuntu changes + - [Config]: annotations review after 5.7 rebase + - [Config] annotations: IXP4XX* depends on ARCH_IXP4XX + - [Config] THERMAL_GOV_POWER_ALLOCATOR=y + - [Config] annotations: SOC_CAMERA is marked as BROKEN + - [Config] annotations: NFSD_V4_2_INTER_SSC depends on NFS_FS=y + - [Config] annotations: CRYPTO_DEV_CHELSIO_TLS depends on legacy (and largely + unmantained) TLS_TOE + - [Config] annotations: SERIO_OLPC_APSP depends on ARCH_MMP + - [Config] RTW88_DEBUG=y + - [Config] annotations: ISDN_CAPI is a bool, and BT_CMTP depends on it + - [Config] annotations SND_SOC_SOF_DEVELOPER_SUPPORT depends on + SND_SOC_SOF_DEVELOPER_SUPPORT + - [Config] annotations: SND_SOC_SOF_BAYTRAIL_SUPPORT is mutually exclusive + with SND_SST_ATOM_HIFI2_PLATFORM_ACPI + - [Config] annotations: DEBUG_IMX_UART_PORT is defined only any + DEBUG_IMX*_UART is enabled + - [Config] annotations: HW_RANDOM_IMX_RNGC depends on SOC_IMX25 + - [Config] annotations: armhf: VIRTUALIZATION support was removed for arm32 + - [Config] annotations: arm64: remove DEBUG_ALIGN_RODATA + - [Config] annotations: ppc64: DATA_SHIFT defaults to PPC_PAGE_SHIFT + - [Config] arm64: enforce ARM64_USE_LSE_ATOMICS + - [Config] s390x: MOST is not set + - [Config] s390x: BCM84881_PHY is not set + - [Config] s390x: XILINX_LL_TEMAC is not set + - [Config] s390x: PHY_INTEL_EMMC requires GENERIC_PHY (off by default on + s390x) + - [Config] s390x: CHECK_STACK conflicts with VMAP_STACK + - [Config] annotations: s390x: NODES_SHIFT=1 + - [Config] annotations: import new symbols + - [Config] annotations: remove unmatched menu and options + + -- Paolo Pisati Fri, 12 Jun 2020 12:03:01 +0200 + +linux-5.7 (5.7.0-7.8) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update helper scripts + + * [UBUNTU 20.04] s390x/pci: fix linking between PF and VF for multifunction + devices (LP: #1879704) + - PCI/IOV: Introduce pci_iov_sysfs_link() function + - s390/pci: create links between PFs and VFs + + * Miscellaneous Ubuntu changes + - [Config] Disable UEFI signing for arm64 + - Rebase to v5.7.1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7.1 + + -- Paolo Pisati Mon, 08 Jun 2020 11:16:58 +0200 + +linux-5.7 (5.7.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * shiftfs: fix btrfs snapshot deletion (LP: #1879688) + - SAUCE: shiftfs: let userns root destroy subvolumes from other users + + * seccomp_benchmark times out on eoan (LP: #1881576) + - SAUCE: selftests/seccomp: use 90s as timeout + + * Realtek 8723DE [10ec:d723] subsystem [10ec:d738] disconnects unsolicitedly + when Bluetooth is paired: Reason: 23=IEEE8021X_FAILED (LP: #1878147) + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: Move driver IQK to set channel before + association for 11N chip" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: fix rate for a while after being + connected" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: No retry and report for auth and assoc" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: 8723d: Add coex support" + - rtw88: 8723d: Add coex support + - SAUCE: rtw88: coex: 8723d: set antanna control owner + - SAUCE: rtw88: coex: 8723d: handle BT inquiry cases + - SAUCE: rtw88: fix EAPOL 4-way failure by finish IQK earlier + + * ASoC/amd: add audio driver for amd renoir (LP: #1881046) + - ASoC: amd: add Renoir ACP3x IP register header + - ASoC: amd: add Renoir ACP PCI driver + - ASoC: amd: add acp init/de-init functions + - ASoC: amd: create acp3x pdm platform device + - ASoC: amd: add ACP3x PDM platform driver + - ASoC: amd: irq handler changes for ACP3x PDM dma driver + - ASoC: amd: add acp3x pdm driver dma ops + - ASoC: amd: add ACP PDM DMA driver dai ops + - ASoC: amd: add Renoir ACP PCI driver PM ops + - ASoC: amd: add ACP PDM DMA driver pm ops + - ASoC: amd: enable Renoir acp3x drivers build + - ASoC: amd: create platform devices for Renoir + - ASoC: amd: RN machine driver using dmic + - ASoC: amd: enable build for RN machine driver + - ASoC: amd: fix kernel warning + - ASoC: amd: refactoring dai_hw_params() callback + - ASoC: amd: return error when acp de-init fails + - [Config]: enable amd renoir ASoC audio + + * Slow send speed with Intel I219-V on Ubuntu 18.04.1 (LP: #1802691) + - e1000e: Disable TSO for buffer overrun workaround + + * Fix incorrect speed/duplex when I210 device is runtime suspended + (LP: #1880656) + - igb: Report speed and duplex as unknown when device is runtime suspended + + * Fix Pericom USB controller OHCI/EHCI PME# defect (LP: #1879321) + - serial: 8250_pci: Move Pericom IDs to pci_ids.h + - PCI: Avoid Pericom USB controller OHCI/EHCI PME# defect + + * [UBUNTU 20.04] s390x/pci: enumerate pci functions per physical adapter + (LP: #1874056) + - s390/pci: Expose new port attribute for PCIe functions + - s390/pci: adaptation of iommu to multifunction + - s390/pci: define kernel parameters for PCI multifunction + - s390/pci: define RID and RID available + - s390/pci: create zPCI bus + - s390/pci: adapt events for zbus + - s390/pci: Handling multifunctions + - s390/pci: Do not disable PF when VFs exist + - s390/pci: Documentation for zPCI + - s390/pci: removes wrong PCI multifunction assignment + + * add 16-bit width registers support for EEPROM at24 device (LP: #1876699) + - regmap-i2c: add 16-bit width registers support + + * Miscellaneous Ubuntu changes + - [Config] Enable virtualbox guest and shared-folder modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.7 + + -- Seth Forshee Mon, 01 Jun 2020 16:11:24 -0500 + +linux-5.7 (5.7.0-5.6) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [UBUNTU 20.04] PSI generates overhead on s390x (LP: #1876044) + - Ubuntu: [Config] CONFIG_PSI is enabled by default, but creates additional + overhead on s390x, hence should be disabled by default on s390x only. + + * Miscellaneous Ubuntu changes + - Rebase to v5.7-rc7 + - [Config] ppc64el: disable STRICT_KERNEL_RWX + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc7 + + -- Paolo Pisati Mon, 25 May 2020 11:44:09 +0200 + +linux-5.7 (5.7.0-4.5) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * update-initramfs complains of missing amdgpu firmware files (LP: #1873325) + - SAUCE: drm/amdgpu: Remove unreleased arcturus and navi12 firmware from + modinfo + + * Support DMIC micmute LED on HP platforms (LP: #1876859) + - ALSA: hda/realtek - Introduce polarity for micmute LED GPIO + - ALSA: hda/realtek - Enable micmute LED on and HP system + - ALSA: hda/realtek - Add LED class support for micmute LED + - ALSA: hda/realtek - Fix unused variable warning w/o + CONFIG_LEDS_TRIGGER_AUDIO + - ASoC: SOF: Update correct LED status at the first time usage of + update_mute_led() + + * Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW), + REV=0x354 [8086:a0f0] subsystem id [1a56:1651] wireless adapter not found + due to firmware crash (LP: #1874685) + - SAUCE: iwlwifi: pcie: handle QuZ configs with killer NICs as well + + * rtkit-daemon[*]: Failed to make ourselves RT: Operation not permitted after + upgrade to 20.04 (LP: #1875665) + - [Config] Turn off CONFIG_RT_GROUP_SCHED everywhere + + * Unable to handle kernel pointer dereference in virtual kernel address space + on Eoan (LP: #1876645) + - SAUCE: overlayfs: fix shitfs special-casing + + * Miscellaneous Ubuntu changes + - SAUCE: skip building selftest 'runqslower' if kernel not built + - Rebase to v5.7-rc6 + - [Config] updateconfigs after 5.7-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc6 + + -- Paolo Pisati Mon, 18 May 2020 11:27:25 +0200 + +linux-5.7 (5.7.0-3.4) groovy; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc5 + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * getitimer returns it_value=0 erroneously (LP: #1349028) + - [Config] CONTEXT_TRACKING_FORCE policy should be unset + + * lockdown on power (LP: #1855668) // Ubuntu Kernel Support for OpenPOWER NV + Secure & Trusted Boot (LP: #1866909) + - [Config] Enable configs for OpenPOWER NV Secure & Trusted Boot + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] annotations: remove SND_SOC_SOF_HDA_COMMON_HDMI_CODEC + - [Config] Remove CONFIG_SND_HDA_INTEL_DETECT_DMIC from annotations + - [Debian] final-checks -- Do not remove ~* from abi + - [Config] Enable 5-level page table support for x86 + - [Config] updateconfigs after 5.7-rc5 rebase + + -- Paolo Pisati Mon, 11 May 2020 10:25:42 +0200 + +linux-5.7 (5.7.0-2.3) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update helper scripts + + * ASUS T100HAN boots to a blank screen with a cursor [i965: Failed to submit + batchbuffer: Input/output error] (LP: #1860754) + - [Config] CONFIG_PMIC_OPREGION=y and CONFIG_GPIO_CRYSTAL_COVE=y for amd64 + + * ubuntu/focal64 fails to mount Vagrant shared folders (LP: #1873506) + - [Packaging] Move virtualbox modules to linux-modules + - [Packaging] Remove vbox and zfs modules from generic.inclusion-list + + * built-using constraints preventing uploads (LP: #1875601) + - temporarily drop Built-Using data + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] autoreconstruct -- manage executable debian files + - [packaging] handle downloads from the librarian better + + * Add signed modules for the 435 NVIDIA driver (LP: #1875888) + - [Packaging] NVIDIA -- add signed modules for the 435 NVIDIA driver + + * [Selftests] Apply various fixes and improvements (LP: #1870543) + - SAUCE: selftests/seccomp -- Disable timeout for seccomp tests + + * [17.04 FEAT] Integrate kernel message catalogue for s390x into Ubuntu + distribution (LP: #1628889) + - SAUCE: s390: kernel message catalog + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * [ICL] TC port in legacy/static mode can't be detected due TCCOLD + (LP: #1868936) + - drm/i915/display: Move out code to return the digital_port of the aux ch + - drm/i915/display: Add intel_legacy_aux_to_power_domain() + - drm/i915/display: Split hsw_power_well_enable() into two + - drm/i915/tc/icl: Implement TC cold sequences + - drm/i915/tc: Skip ref held check for TC legacy aux power wells + - drm/i915/tc/tgl: Implement TC cold sequences + - drm/i915/tc: Catch TC users accessing FIA registers without enable aux + - drm/i915/tc: Do not warn when aux power well of static TC ports timeout + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + + * 'Elan touchpad' not detected on 'Lenovo ThinkBook 15 IIL' (LP: #1861610) + - SAUCE: Input: elan_i2c - add more hardware ID for Lenovo laptop + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay + + * alsa/sof: kernel oops on the machine without Intel hdmi audio codec (a + regression in the asoc machine driver) (LP: #1874359) + - ASoC: intel/skl/hda - fix oops on systems without i915 audio codec + + * Add debian/rules targets to compile/run kernel selftests (LP: #1874286) + - [Packaging] add support to compile/run selftests + + * 5.4.0-24.28 does not seem to apply rtprio, whereas -21 does. (LP: #1873315) + - [Config] lowlatency: turn off RT_GROUP_SCHED + + * alsa/sof: external mic can't be deteced on Lenovo and HP laptops + (LP: #1872569) + - SAUCE: ASoC: intel/skl/hda - set autosuspend timeout for hda codecs + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: fix dentry revalidation + + * shiftfs: broken shiftfs nesting (LP: #1872094) + - SAUCE: shiftfs: record correct creator credentials + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + + * Fix authentication fail on Realtek WiFi 8723de (LP: #1871300) + - SAUCE: rtw88: No retry and report for auth and assoc + - SAUCE: rtw88: fix rate for a while after being connected + - SAUCE: rtw88: Move driver IQK to set channel before association for 11N chip + + * Miscellaneous Ubuntu changes + - SAUCE: rtw88: fix 'const' mismatch in power suequence hooks + - SAUCE: rtw88: fix 'const' mismatch in + __priority_queue_cfg_legacy()/__priority_queue_cfg() + - [Config] RTW88=m + - SAUCE: (lockdown) Revert carried-forward lockdown patches + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] Add back CONFIG_LOCK_DOWN_IN_SECURE_BOOT annotation for ppc64el + - [Config] CONFIG_RT_GROUP_SCHED=y + - [Packaging] Include modules.builtin.modinfo in linux-modules + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - Update dropped.txt for restored apparmor patches + - Remove lockdown patches from dropped.txt + - SAUCE: powerpc/ima: require IMA module signatures only if MODULE_SIG is not + enabled + - SAUCE: selftests/ftrace: Use printf instead of echo in kprobe syntax error + tests + - SAUCE: selftests/net -- disable l2tp.sh test + - SAUCE: selftests/net -- disable timeout + - SAUCE: tools: hv: Update shebang to use python3 instead of python + - Remove dropped.txt + - [Packaging] move linux-doc and linux-libc-dev stubs to debian.master + - [Debian] Support generating configs for riscv64 + - [Config] CONFIG_KMSG_IDS=y for s390x + - [Packaging] add libcap-dev dependency + - [Config] CONFIG_AD5770R=m + - [Config] CONFIG_AL3010=m + - [Config] CONFIG_APPLE_MFI_FASTCHARGE=m + - [Config] CONFIG_BAREUDP=m + - [Config] CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m + - [Config] CONFIG_CRYPTO_DEV_ZYNQMP_AES=m + - [Config] CONFIG_DRM_DISPLAY_CONNECTOR=m + - [Config] CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m + - [Config] CONFIG_DRM_PANEL_ELIDA_KD35T133=m + - [Config] CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m + - [Config] CONFIG_DRM_PANEL_NOVATEK_NT35510=m + - [Config] CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m + - [Config] CONFIG_DRM_PARADE_PS8640=m + - [Config] CONFIG_DRM_SIMPLE_BRIDGE=m + - [Config] CONFIG_DRM_TIDSS=m + - [Config] CONFIG_DRM_TI_TPD12S015=m + - [Config] CONFIG_DRM_TOSHIBA_TC358768=m + - [Config] CONFIG_EDAC_DMC520=m + - [Config] CONFIG_EXFAT_FS=m + - [Config] CONFIG_GP2AP002=m + - [Config] CONFIG_GPIO_MLXBF2=m + - [Config] CONFIG_HID_GLORIOUS=m + - [Config] CONFIG_HID_MCP2221=m + - [Config] CONFIG_HMC425=m + - [Config] CONFIG_ICP10100=m + - [Config] CONFIG_IMX8MM_THERMAL=m + - [Config] CONFIG_IMX_SC_THERMAL=m + - [Config] CONFIG_INTERCONNECT_QCOM_OSM_L3=m + - [Config] CONFIG_INTERCONNECT_QCOM_SC7180=m + - [Config] CONFIG_K3_RTI_WATCHDOG=m + - [Config] CONFIG_MDIO_IPQ8064=m + - [Config] CONFIG_MDIO_MVUSB=m + - [Config] CONFIG_MHI_BUS=m + - [Config] CONFIG_OCTEONTX2_VF=m + - [Config] CONFIG_PHY_CADENCE_TORRENT=m + - [Config] CONFIG_PHY_QCOM_USB_HS_28NM=m + - [Config] CONFIG_PHY_QCOM_USB_SS=m + - [Config] CONFIG_PINCTRL_DA9062=m + - [Config] CONFIG_PINCTRL_IPQ6018=m + - [Config] CONFIG_PTP_1588_CLOCK_IDT82P33=m + - [Config] CONFIG_PTP_1588_CLOCK_VMW=m + - [Config] CONFIG_QCOM_IPA=m + - [Config] CONFIG_REGULATOR_MP5416=m + - [Config] CONFIG_REGULATOR_MP886X=m + - [Config] CONFIG_RN5T618_ADC=m + - [Config] CONFIG_RTC_DRV_MT2712=m + - [Config] CONFIG_RTC_DRV_RC5T619=m + - [Config] CONFIG_SC_MSS_7180=m + - [Config] CONFIG_SENSORS_AXI_FAN_CONTROL=m + - [Config] CONFIG_SM_GCC_8250=m + - [Config] CONFIG_SND_BCM63XX_I2S_WHISTLER=m + - [Config] CONFIG_SND_MESON_AIU=m + - [Config] CONFIG_SND_MESON_G12A_TOACODEC=m + - [Config] CONFIG_SND_MESON_GX_SOUND_CARD=m + - [Config] CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m + - [Config] CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m + - [Config] CONFIG_SND_SOC_MESON_T9015=m + - [Config] CONFIG_SND_SOC_RT5682_SDW=m + - [Config] CONFIG_SND_SOC_TLV320ADCX140=m + - [Config] CONFIG_SPI_FSI=m + - [Config] CONFIG_SPI_MTK_NOR=m + - [Config] CONFIG_SPI_MUX=m + - [Config] CONFIG_SPRD_THERMAL=m + - [Config] CONFIG_SURFACE_3_POWER_OPREGION=m + - [Config] CONFIG_TINYDRM_ILI9486=m + - [Config] CONFIG_TI_K3_AM65_CPSW_NUSS=m + - [Config] CONFIG_TYPEC_MUX_INTEL_PMC=m + - [Config] CONFIG_UACCE=m + - [Config] CONFIG_UNIPHIER_XDMAC=m + - [Config] CONFIG_USB_MAX3420_UDC=m + - [Config] CONFIG_USB_RAW_GADGET=m + - [Config] CONFIG_VHOST_VDPA=m + - [Config] CONFIG_VIDEO_IMX219=m + - [Config] CONFIG_VIDEO_SUN8I_ROTATE=m + - [Config] CONFIG_VIRTIO_VDPA=m + - [Config] CONFIG_MOST_COMPONENTS=m + - [Config] CONFIG_MFD_IQS62X=m + - packaging: getabis: switch to ckt-ppa:bootstrap/linux-5.7 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask" + - Revert "UBUNTU: SAUCE: drm/i915/fbc: disable framebuffer compression on + IceLake" + - Revert "UBUNTU: SAUCE: platform/x86: dell-uart-backlight: move retry block" + + -- Paolo Pisati Mon, 04 May 2020 10:48:48 +0200 + +linux-5.7 (5.7.0-1.2) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: hio: pass make_request ptr directly to blk_alloc_queue() + - SAUCE: hio: locally define disk_map_sector_rcu() + - SAUCE: hio: Revert "block: unexport disk_map_sector_rcu" + - SAUCE: hio: include + - [Config] amd64: i386: HIO=m + - [Config] updateconfigs after 5.7-rc3 rebase + + -- Paolo Pisati Mon, 27 Apr 2020 11:31:38 +0200 + +linux-5.7 (5.7.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.7-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc1 + * Rebase to v5.7-rc2 + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.7 (5.7.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.6 (5.6.0-7.7) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Kernel Oops - general protection fault: 0000 [#1] SMP PTI after + disconnecting thunderbolt docking station (LP: #1864754) + - SAUCE: ptp: free ptp clock properly + + * swap storms kills interactive use (LP: #1861359) + - SAUCE: mm/page_alloc.c: disable memory reclaim watermark boosting by default + + * sysfs: incorrect network device permissions on network namespace change + (LP: #1865359) + - sysfs: add sysfs_file_change_owner() + - sysfs: add sysfs_link_change_owner() + - sysfs: add sysfs_group{s}_change_owner() + - sysfs: add sysfs_change_owner() + - device: add device_change_owner() + - drivers/base/power: add dpm_sysfs_change_owner() + - net-sysfs: add netdev_change_owner() + - net-sysfs: add queue_change_owner() + - net: fix sysfs permssions when device changes network namespace + - sysfs: fix static inline declaration of sysfs_groups_change_owner() + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6 + + -- Andrea Righi Tue, 31 Mar 2020 10:45:09 +0200 + +linux-5.6 (5.6.0-6.6) focal; urgency=medium + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * Make Dell WD19 dock more reliable after suspend (LP: #1868217) + - xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3 + - xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0 + - xhci: Finetune host initiated USB3 rootport link suspend and resume + + * update-version-dkms doesn't add a BugLink (LP: #1867790) + - [Packaging] Add BugLink to update-version-dkms commit + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add regulatory process strategy for different chipset + - SAUCE: rtw88: support dynamic user regulatory setting + - SAUCE: rtw88: Use secondary channel offset enumeration + - SAUCE: rtw88: 8822c: modify rf protection setting + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: Revert "rtw88: disable TX-AMSDU on 2.4G band" + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: rtw88: remove unused parameter vif in rtw_lps_pg_info_get() + - SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask + - SAUCE: rtw88: pci: 8822c should set clock delay to zero + - SAUCE: rtw88: move rtw_enter_ips() to the last when config + - SAUCE: rtw88: avoid holding mutex for cancel_delayed_work_sync() + - SAUCE: rtw88: add ciphers to suppress error message + - SAUCE: rtw88: 8822c: update power sequence to v16 + - SAUCE: rtw88: Fix incorrect beamformee role setting + - SAUCE: rtw88: don't hold all IRQs disabled for PS operations + - SAUCE: rtw88: extract alloc rsvd_page and h2c skb routines + - SAUCE: rtw88: associate reserved pages with each vif + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: 8723d: Add basic chip capabilities + - SAUCE: rtw88: 8723d: add beamform wrapper functions + - SAUCE: rtw88: 8723d: Add power sequence + - SAUCE: rtw88: 8723d: Add RF read/write ops + - SAUCE: rtw88: 8723d: Add mac/bb/rf/agc/power_limit tables + - SAUCE: rtw88: 8723d: Add cfg_ldo25 to control LDO25 + - SAUCE: rtw88: 8723d: Add new chip op efuse_grant() to control efuse access + - SAUCE: rtw88: 8723d: Add read_efuse to recognize efuse info from map + - SAUCE: rtw88: add legacy firmware download for 8723D devices + - SAUCE: rtw88: no need to send additional information to legacy firmware + - SAUCE: rtw88: 8723d: Add mac power-on/-off function + - SAUCE: rtw88: decompose while(1) loop of power sequence polling command + - SAUCE: rtw88: 8723d: 11N chips don't support H2C queue + - SAUCE: rtw88: 8723d: implement set_tx_power_index ops + - SAUCE: rtw88: 8723d: Organize chip TX/RX FIFO + - SAUCE: rtw88: 8723d: initialize mac/bb/rf basic functions + - SAUCE: rtw88: 8723d: Add DIG parameter + - SAUCE: rtw88: 8723d: Add query_rx_desc + - SAUCE: rtw88: 8723d: Add set_channel + - SAUCE: rtw88: handle C2H_CCX_TX_RPT to know if packet TX'ed successfully + - SAUCE: rtw88: 8723d: 11N chips don't support LDPC + - SAUCE: rtw88: set default port to firmware + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: add SAR of TX power limit + - SAUCE: rtw88: sar: Load static SAR table from ACPI WRDS method + - SAUCE: rtw88: sar: Load dynamic SAR table from ACPI methods + - SAUCE: rtw88: sar: apply dynamic SAR table to tx power limit + - SAUCE: rtw88: sar: add sar_work to poll if dynamic SAR table is changed + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: Add chip_ops::false_alarm_statistics + - SAUCE: rtw88: 8723d: Set IG register for CCK rate + - SAUCE: rtw88: 8723d: add interface configurations table + - SAUCE: rtw88: 8723d: Add LC calibration + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: fill zeros to words 0x06 and 0x07 of security cam entry + - SAUCE: rtw88: 8723d: Add 8723DE to Kconfig and Makefile + - [Config] CONFIG_RTW88_8723DE=y + + * [Ubuntu 20.04] Unset HIBERNATION and PM kernel config options for focal + (LP: #1867753) + - [Config] CONFIG_HIBERNATION=n and CONFIG_PM=n for s390x + + * [20.04 FEAT] Base KVM setup for secure guests - kernel part (LP: #1835531) + - s390/protvirt: introduce host side setup + - s390/protvirt: add ultravisor initialization + - s390/mm: provide memory management functions for protected KVM guests + - s390/mm: add (non)secure page access exceptions handlers + - s390/protvirt: Add sysfs firmware interface for Ultravisor information + - KVM: s390/interrupt: do not pin adapter interrupt pages + - KVM: s390: protvirt: Add UV debug trace + - KVM: s390: add new variants of UV CALL + - KVM: s390: protvirt: Add initial vm and cpu lifecycle handling + - KVM: s390: protvirt: Secure memory is not mergeable + - KVM: s390/mm: Make pages accessible before destroying the guest + - KVM: s390: protvirt: Handle SE notification interceptions + - KVM: s390: protvirt: Instruction emulation + - KVM: s390: protvirt: Implement interrupt injection + - KVM: s390: protvirt: Add SCLP interrupt handling + - KVM: s390: protvirt: Handle spec exception loops + - KVM: s390: protvirt: Add new gprs location handling + - KVM: S390: protvirt: Introduce instruction data area bounce buffer + - KVM: s390: protvirt: handle secure guest prefix pages + - KVM: s390/mm: handle guest unpin events + - KVM: s390: protvirt: Write sthyi data to instruction data area + - KVM: s390: protvirt: STSI handling + - KVM: s390: protvirt: disallow one_reg + - KVM: s390: protvirt: Do only reset registers that are accessible + - KVM: s390: protvirt: Only sync fmt4 registers + - KVM: s390: protvirt: Add program exception injection + - KVM: s390: protvirt: UV calls in support of diag308 0, 1 + - KVM: s390: protvirt: Report CPU state to Ultravisor + - KVM: s390: protvirt: Support cmd 5 operation state + - KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 + - KVM: s390: protvirt: do not inject interrupts after start + - KVM: s390: protvirt: Add UV cpu reset calls + - DOCUMENTATION: Protected virtual machine introduction and IPL + - KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED + - KVM: s390: protvirt: Add KVM api documentation + - mm/gup/writeback: add callbacks for inaccessible pages + + * All PS/2 ports on PS/2 Serial add-in bracket are not working after S3 + (LP: #1866734) + - SAUCE: Input: i8042 - fix the selftest retry logic + + * Sys oopsed with sysfs test in ubuntu_stress_smoke_test on X-hwe ARM64 + (LP: #1866772) + - ACPI: sysfs: copy ACPI data using io memory copying + + * Miscellaneous Ubuntu changes + - hio -- remove duplicated MODULE_DEVICE_TABLE declaration + - SAUCE: r8169: disable ASPM L1.1 + - [Config] update annotations from configs + - [Config] update configs after annotation file review + - SAUCE: Revert "tools/power turbostat: Fix 32-bit capabilities warning" + + * Miscellaneous upstream changes + - drm/i915: Fix eDP DPCD aux max backlight calculations + - drm/dp: Introduce EDID-based quirks + - drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED panel + - drm/i915: Force DPCD backlight mode for some Dell CML 2020 panels + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc7 + + -- Andrea Righi Wed, 25 Mar 2020 18:09:13 +0100 + +linux-5.6 (5.6.0-5.5) focal; urgency=medium + + * please help enable CONFIG_EROFS_FS_ZIP (LP: #1867099) + - [Config] CONFIG_EROFS_FS_ZIP=y + - [Config] CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1 + + * Miscellaneous Ubuntu changes + - Config: Fix SND_HDA_PREALLOC_SIZE annotations + - Config: Fix DATA_SHIFT annotations + - Config: remove ANDROID_VSOC from annotations + - Config: remove arm arch from annotations + - Config: Update SOC_R8A7796X annotations + - Config: Update CLK_R8A7796X annotations + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc6 + + -- Andrea Righi Wed, 18 Mar 2020 17:25:30 +0100 + +linux-5.6 (5.6.0-4.4) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * Add sysfs attribute to show remapped NVMe (LP: #1863621) + - SAUCE: ata: ahci: Add sysfs attribute to show remapped NVMe device count + + * [20.04 FEAT] Compression improvements in Linux kernel (LP: #1830208) + - [Config] Introducing s390x specific kernel config option CONFIG_ZLIB_DFLTCC + + * [UBUNTU 20.04] s390x/pci: increase CONFIG_PCI_NR_FUNCTIONS to 512 in kernel + config (LP: #1866056) + - [Config] Increase CONFIG_PCI_NR_FUNCTIONS from 64 to 512 starting with focal + on s390x + + * CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set (LP: #1865332) + - [Config] CONFIG_IP_MROUTE_MULTIPLE_TABLES=y + + * [UBUNTU 20.04] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x + starting with focal (LP: #1865452) + - [Config] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x starting + with focal + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: blk/core: Gracefully handle unset + make_request_fn" + - [Packaging] prevent duplicated entries in modules.ignore + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc5 + + -- Andrea Righi Mon, 09 Mar 2020 09:42:06 +0100 + +linux-5.6 (5.6.0-3.3) focal; urgency=medium + + * nsleep-lat / set-timer-lat / inconsistency-check / raw_skew from timer in + ubuntu_kernel_selftests timeout on 5.3 / 5.4 (LP: #1864626) + - selftests/timers: Turn off timeout setting + + * Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU for focal + (LP: #1864198) + - Ubuntu: [Config] Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU + + * alsa/hda/realtek: fix a mute led regression on Lenovo X1 Carbon + (LP: #1864576) + - SAUCE: ALSA: hda/realtek - Fix a regression for mute led on Lenovo Carbon X1 + + * r8152 init may take up to 40 seconds at initialization with Dell WD19/WD19DC + during hotplug (LP: #1864284) + - UBUNTU SAUCE: r8151: check disconnect status after long sleep + + * Another Dell AIO backlight issue (LP: #1863880) + - SAUCE: platform/x86: dell-uart-backlight: move retry block + + * Backport GetFB2 ioctl (LP: #1863874) + - SAUCE: drm: Add getfb2 ioctl + + * Focal Fossa (20.04) feature request - Enable CONFIG_X86_UV (LP: #1863810) + - [Config] CONFIG_X86_UV=y + + * Miscellaneous Ubuntu changes + - debian: remove snapdragon config, rules and flavour + - remove snapdragon abi files + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc4 + + * Miscellaneous upstream changes + - updateconfigs following snapdragon removal + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc4 + + -- Andrea Righi Wed, 04 Mar 2020 08:21:10 +0100 + +linux-5.6 (5.6.0-2.2) focal; urgency=medium + + * Sometimes can't adjust brightness on Dell AIO (LP: #1862885) + - SAUCE: platform/x86: dell-uart-backlight: increase retry times + + * Dell XPS 13 (7390) Display Flickering - 19.10 (LP: #1849947) + - SAUCE: drm/i915: Disable PSR by default on all platforms + + * Miscellaneous Ubuntu changes + - [debian] ignore missing wireguard module + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390/ipl: lockdown kernel when booted + secure" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + -- Andrea Righi Mon, 24 Feb 2020 18:57:22 +0100 + +linux-5.6 (5.6.0-1.1) focal; urgency=medium + + * Integrate Intel SGX driver into linux-azure (LP: #1844245) + - [Packaging] Add systemd service to load intel_sgx + + * QAT drivers for C3XXX and C62X not included as modules (LP: #1845959) + - [Config] CRYPTO_DEV_QAT_C3XXX=m, CRYPTO_DEV_QAT_C62X=m and + CRYPTO_DEV_QAT_DH895xCC=m + + * 5.4.0-11 crash on cryptsetup open (LP: #1860231) + - SAUCE: blk/core: Gracefully handle unset make_request_fn + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Use kernel specific layout + + * Miscellaneous Ubuntu changes + - update dkms package versions + - update dropped.txt after rebase to v5.6-rc1 + - [Config] updateconfigs after rebase to 5.6-rc1 + - hio -- proc_create() requires a "struct proc_ops" in 5.6 + - SAUCE: arm: fix build error in kvm tracepoint + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Disable the uselib system call" + - Revert "UBUNTU: [Config] Disable legacy PTY naming" + - Revert "UBUNTU: [Config] Enforce filtered access to iomem" + - Revert "UBUNTU: [Config] Enable notifier call chain validations" + - Revert "UBUNTU: [Config] Enable scatterlist validation" + - Revert "UBUNTU: [Config] Enable cred sanity checks" + - Revert "UBUNTU: [Config] Enable linked list manipulation checks" + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc1 + + -- Andrea Righi Thu, 13 Feb 2020 17:20:27 +0100 + +linux-5.6 (5.6.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Andrea Righi Mon, 10 Feb 2020 11:06:18 +0100 + +linux-5.5 (5.5.0-7.8) focal; urgency=medium + + * CONFIG_USELIB should be disabled (LP: #1855341) + - [Config] Disable the uselib system call + + * CONFIG_LEGACY_PTYS should be disabled (LP: #1855339) + - [Config] Disable legacy PTY naming + + * CONFIG_IO_STRICT_DEVMEM should be enabled (LP: #1855338) + - [Config] Enforce filtered access to iomem + + * CONFIG_DEBUG_NOTIFIERS should be enabled (LP: #1855337) + - [Config] Enable notifier call chain validations + + * CONFIG_DEBUG_SG should be enabled (LP: #1855336) + - [Config] Enable scatterlist validation + + * CONFIG_DEBUG_CREDENTIALS should be enabled (LP: #1855335) + - [Config] Enable cred sanity checks + + * CONFIG_DEBUG_LIST should be enabled (LP: #1855334) + - [Config] Enable linked list manipulation checks + + * shiftfs: prevent lower dentries from going negative during unlink + (LP: #1860041) + - SAUCE: shiftfs: prevent lower dentries from going negative during unlink + + * [SRU][B/OEM-B/OEM-OSP1/D/E/Unstable] UBUNTU: SAUCE: Use native backlight on + Lenovo E41-25/45 (LP: #1859561) + - SAUCE: ACPI: video: Use native backlight on Lenovo E41-25/45 + + * USB key cannot be detected by hotplug on Sunix USB Type-A 3.1 Gen 2 card + [1b21:2142] (LP: #1858988) + - SAUCE: PCI: Avoid ASMedia XHCI USB PME# from D0 defect + + * Dell AIO can't adjust brightness (LP: #1858761) + - SAUCE: platform/x86: dell-uart-backlight: add retry for get scalar status + + * Miscellaneous Ubuntu changes + - [Config] Fix typo in annotations file + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5 + + -- Andrea Righi Mon, 27 Jan 2020 11:39:38 +0100 + +linux-5.5 (5.5.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] Update ubuntu-regression-suite dependency to python2 + - [Packaging] Fix ubuntu-regression-suite python dependency for hwe kernel + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc7 + + -- Andrea Righi Mon, 20 Jan 2020 10:16:01 +0100 + +linux-5.5 (5.5.0-5.6) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc6 + + -- Andrea Righi Mon, 13 Jan 2020 15:50:12 +0100 + +linux-5.5 (5.5.0-4.5) focal; urgency=medium + + * linux build and autopkg tests need to use python2 instead of python + (LP: #1858487) + - [Packaging] Remove python-dev build dependency + + -- Andrea Righi Wed, 08 Jan 2020 16:00:26 +0100 + +linux-5.5 (5.5.0-3.4) focal; urgency=medium + + * [SRU][B/OEM-B/OEM-OSP1/D/E/F] Add LG I2C touchscreen multitouch support + (LP: #1857541) + - SAUCE: HID: multitouch: Add LG MELF0410 I2C touchscreen support + + * Make vfio-pci built-in or xhci_hcd optional (LP: #1770845) + - [Config]: built-in VFIO_PCI for amd64 + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Link to wiki with guidance on multi-zone RAID0 layout + migration + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package to linux-5.5 + - [Packaging] Don't use SRCPKGNAME for linux-libc-dev + - [Packaging] Remove linux-source-3 Provides: from linux-source + - [Packaging] Fix linux-doc in linux-image Suggests: + - [Debian] Read variants list into a variable + - [Packaging] Generate linux-libc-dev package only for primary variant + - [Packaging] Generate linux-doc for only the primary variant + - [Debian] Update linux source package name in debian/tests/* + - update dkms package versions + - [Config] updateconfigs after rebase to 5.5-rc3 + - [Config] disable PCI_MESON + - [Config] Add pinctrl-equilibrium to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc5 + + -- Andrea Righi Wed, 08 Jan 2020 11:28:43 +0100 + +linux-5.5 (5.5.0-2.3) focal; urgency=medium + + * Empty entry. + + -- Seth Forshee Tue, 17 Dec 2019 22:33:59 -0600 + +linux (5.5.0-2.3) focal; urgency=medium + + * Support DPCD aux brightness control (LP: #1856134) + - SAUCE: drm/i915: Fix eDP DPCD aux max backlight calculations + - SAUCE: drm/i915: Assume 100% brightness when not in DPCD control mode + - SAUCE: drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight() + - SAUCE: drm/i915: Auto detect DPCD backlight support by default + - SAUCE: drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED + panel + - USUNTU: SAUCE: drm/i915: Force DPCD backlight mode on Dell Precision 4K sku + + * change kconfig of the soundwire bus driver from y to m (LP: #1855685) + - [Config]: SOUNDWIRE=m + + * Fix unusable USB hub on Dell TB16 after S3 (LP: #1855312) + - SAUCE: USB: core: Make port power cycle a seperate helper function + - SAUCE: USB: core: Attempt power cycle port when it's in eSS.Disabled state + + * Miscellaneous Ubuntu changes + - [Debian] add python depends to ubuntu-regression-suite + - SAUCE: selftests: net: tls: remove recv_rcvbuf test + - update dkms package versions + + * Miscellaneous upstream changes + - [Config] updateconfigs after rebase to 5.5-rc2 + + -- Andrea Righi Tue, 17 Dec 2019 16:02:43 +0100 + +linux (5.5.0-1.2) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Config] disable zfs dkms build + - update dropped.txt after rebase to v5.5-rc1 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - update dkms package versions + + -- Andrea Righi Thu, 12 Dec 2019 16:54:41 +0100 + +linux (5.5.0-0.1) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.5-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc1 + + -- Andrea Righi Mon, 09 Dec 2019 19:03:35 +0100 + +linux (5.5.0-0.0) focal; urgency=medium + + * Dummy entry. + + -- Andrea Righi Mon, 09 Dec 2019 15:14:37 +0100 + +linux (5.4.0-8.11) focal; urgency=medium + + * focal/linux: 5.4.0-8.9 -proposed tracker (LP: #1855448) + + * update ENA driver for DIMLIB dynamic interrupt moderation (LP: #1853180) + - SAUCE: net: ena: fix issues in setting interrupt moderation params in + ethtool + - SAUCE: net: ena: fix too long default tx interrupt moderation interval + + * Kernel build log filled with "/bin/bash: line 5: warning: command + substitution: ignored null byte in input" (LP: #1853843) + - [Debian] Fix warnings when checking for modules signatures + + * hwe-edge kernel 5.3.0-23.25 kernel does not boot on Precision 5720 AIO + (LP: #1852581) + - [Packaging] Fix module signing with older modinfo + + * Fix MST support on Ice Lake (LP: #1854432) + - drm/i915: fix port checks for MST support on gen >= 11 + + * headphone has noise as not mute on dell machines with alc236/256 + (LP: #1854401) + - SAUCE: ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236 + + * [CML-S62] Need enable intel_pmc_core driver patch for Comet lake- S 6+2 + (LP: #1847450) + - SAUCE: platform/x86: intel_pmc_core: Add Comet Lake (CML) platform support + to intel_pmc_core driver + + * CVE-2019-14901 + - SAUCE: mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame() + + * CVE-2019-14896 // CVE-2019-14897 + - SAUCE: libertas: Fix two buffer overflows at parsing bss descriptor + + * CVE-2019-14895 + - SAUCE: mwifiex: fix possible heap overflow in mwifiex_process_country_ie() + + * [CML-S62] Need enable intel_rapl patch support for Comet lake- S 6+2 + (LP: #1847454) + - powercap/intel_rapl: add support for CometLake Mobile + - powercap/intel_rapl: add support for Cometlake desktop + + * External microphone can't work on some dell machines with the codec alc256 + or alc236 (LP: #1853791) + - SAUCE: ALSA: hda/realtek - Move some alc256 pintbls to fallback table + - SAUCE: ALSA: hda/realtek - Move some alc236 pintbls to fallback table + + * remount of multilower moved pivoted-root overlayfs root, results in I/O + errors on some modified files (LP: #1824407) + - SAUCE: ovl: fix lookup failure on multi lower squashfs + + * [CML-S62] Need enable turbostat patch support for Comet lake- S 6+2 + (LP: #1847451) + - SAUCE: tools/power turbostat: Add Cometlake support + + * CONFIG_ARCH_ROCKCHIP is not set in ubuntu 18.04 aarch64,arm64 (LP: #1825222) + - [Config] Enable ROCKCHIP support for arm64 + + * [broadwell-rt286, playback] Since Linux 5.2rc2 audio playback no longer + works on Dell Venue 11 Pro 7140 (LP: #1846539) + - SAUCE: ASoC: SOF: Intel: Broadwell: clarify mutual exclusion with legacy + driver + + * i40e: general protection fault in i40e_config_vf_promiscuous_mode + (LP: #1852663) + - SAUCE: i40e Fix GPF when deleting VMs + + * libbpf check_abi fails on ppc64el (LP: #1854974) + - libbpf: Fix readelf output parsing on powerpc with recent binutils + + * CVE-2019-19050 + - crypto: user - fix memory leak in crypto_reportstat + + * Make hotplugging docking station to Thunderbolt port more reliable + (LP: #1853991) + - PCI/PM: Add pcie_wait_for_link_delay() + - PCI/PM: Add missing link delays required by the PCIe spec + + * i915: Display flickers (monitor loses signal briefly) during "flickerfree" + boot, while showing the BIOS logo on a black background (LP: #1836858) + - [Config] FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y + + * [CML] New device id's for CMP-H (LP: #1846335) + - i2c: i801: Add support for Intel Comet Lake PCH-H + - mtd: spi-nor: intel-spi: Add support for Intel Comet Lake-H SPI serial flash + - mfd: intel-lpss: Add Intel Comet Lake PCH-H PCI IDs + + * Focal update: v5.4.2 upstream stable release (LP: #1855326) + - io_uring: async workers should inherit the user creds + - net: separate out the msghdr copy from ___sys_{send,recv}msg() + - net: disallow ancillary data for __sys_{send,recv}msg_file() + - crypto: inside-secure - Fix stability issue with Macchiatobin + - driver core: platform: use the correct callback type for bus_find_device + - usb: dwc2: use a longer core rest timeout in dwc2_core_reset() + - staging: wilc1000: fix illegal memory access in wilc_parse_join_bss_param() + - staging: rtl8192e: fix potential use after free + - staging: rtl8723bs: Drop ACPI device ids + - staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids + - USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P + - mei: bus: prefix device names on bus with the bus name + - mei: me: add comet point V device id + - thunderbolt: Power cycle the router if NVM authentication fails + - x86/fpu: Don't cache access to fpu_fpregs_owner_ctx + - gve: Fix the queue page list allocated pages count + - macvlan: schedule bc_work even if error + - mdio_bus: don't use managed reset-controller + - net: dsa: sja1105: fix sja1105_parse_rgmii_delays() + - net: macb: add missed tasklet_kill + - net: psample: fix skb_over_panic + - net: sched: fix `tc -s class show` no bstats on class with nolock subqueues + - openvswitch: fix flow command message size + - sctp: Fix memory leak in sctp_sf_do_5_2_4_dupcook + - slip: Fix use-after-free Read in slip_open + - sctp: cache netns in sctp_ep_common + - openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() + - openvswitch: remove another BUG_ON() + - net/tls: take into account that bpf_exec_tx_verdict() may free the record + - net/tls: free the record on encryption error + - net: skmsg: fix TLS 1.3 crash with full sk_msg + - selftests/tls: add a test for fragmented messages + - net/tls: remove the dead inplace_crypto code + - net/tls: use sg_next() to walk sg entries + - selftests: bpf: test_sockmap: handle file creation failures gracefully + - selftests: bpf: correct perror strings + - tipc: fix link name length check + - selftests: pmtu: use -oneline for ip route list cache + - r8169: fix jumbo configuration for RTL8168evl + - r8169: fix resume on cable plug-in + - ext4: add more paranoia checking in ext4_expand_extra_isize handling + - Revert "jffs2: Fix possible null-pointer dereferences in + jffs2_add_frag_to_fragtree()" + - crypto: talitos - Fix build error by selecting LIB_DES + - HID: core: check whether Usage Page item is after Usage ID items + - platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer + - platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size + - Linux 5.4.2 + + * no HDMI video output since GDM greeter after linux-oem-osp1 version + 5.0.0-1026 (LP: #1852386) + - drm/i915: Add new CNL PCH ID seen on a CML platform + - SAUCE: drm/i915: Fix detection for a CMP-V PCH + + * Please add patch fixing RK818 ID detection (LP: #1853192) + - SAUCE: mfd: rk808: Fix RK818 ID template + + * Raydium Touchscreen on ThinkPad L390 does not work (LP: #1849721) + - HID: i2c-hid: fix no irq after reset on raydium 3118 + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + - lib: devres: add a helper function for ioremap_uc + - mfd: intel-lpss: Use devm_ioremap_uc for MMIO + + * Lenovo dock MAC Address pass through doesn't work in Ubuntu (LP: #1827961) + - r8152: Add macpassthru support for ThinkPad Thunderbolt 3 Dock Gen 2 + + * Disable unreliable HPET on CFL-H system (LP: #1852216) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake H platforms + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] Enable virtualbox dkms build + - [Config] update annotations to match current configs + - SAUCE: Add exfat module to signature inclusion list + + * Miscellaneous upstream changes + - Bluetooth: Fix invalid-free in bcsp_close() + - ath9k_hw: fix uninitialized variable data + - ath10k: Fix a NULL-ptr-deref bug in ath10k_usb_alloc_urb_from_pipe + - ath10k: Fix HOST capability QMI incompatibility + - ath10k: restore QCA9880-AR1A (v1) detection + - Revert "Bluetooth: hci_ll: set operational frequency earlier" + - Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues" + - md/raid10: prevent access of uninitialized resync_pages offset + - x86/insn: Fix awk regexp warnings + - x86/speculation: Fix incorrect MDS/TAA mitigation status + - x86/speculation: Fix redundant MDS mitigation message + - nbd: prevent memory leak + - x86/stackframe/32: Repair 32-bit Xen PV + - x86/xen/32: Make xen_iret_crit_fixup() independent of frame layout + - x86/xen/32: Simplify ring check in xen_iret_crit_fixup() + - x86/doublefault/32: Fix stack canaries in the double fault handler + - x86/pti/32: Size initial_page_table correctly + - x86/cpu_entry_area: Add guard page for entry stack on 32bit + - x86/entry/32: Fix IRET exception + - x86/entry/32: Use %ss segment where required + - x86/entry/32: Move FIXUP_FRAME after pushing %fs in SAVE_ALL + - x86/entry/32: Unwind the ESPFIX stack earlier on exception entry + - x86/entry/32: Fix NMI vs ESPFIX + - selftests/x86/mov_ss_trap: Fix the SYSENTER test + - selftests/x86/sigreturn/32: Invalidate DS and ES when abusing the kernel + - x86/pti/32: Calculate the various PTI cpu_entry_area sizes correctly, make + the CPU_ENTRY_AREA_PAGES assert precise + - x86/entry/32: Fix FIXUP_ESPFIX_STACK with user CR3 + - futex: Prevent robust futex exit race + - ALSA: usb-audio: Fix NULL dereference at parsing BADD + - ALSA: usb-audio: Fix Scarlett 6i6 Gen 2 port data + - media: vivid: Set vid_cap_streaming and vid_out_streaming to true + - media: vivid: Fix wrong locking that causes race conditions on streaming + stop + - media: usbvision: Fix invalid accesses after device disconnect + - media: usbvision: Fix races among open, close, and disconnect + - cpufreq: Add NULL checks to show() and store() methods of cpufreq + - futex: Move futex exit handling into futex code + - futex: Replace PF_EXITPIDONE with a state + - exit/exec: Seperate mm_release() + - futex: Split futex_mm_release() for exit/exec + - futex: Set task::futex_state to DEAD right after handling futex exit + - futex: Mark the begin of futex exit explicitly + - futex: Sanitize exit state handling + - futex: Provide state handling for exec() as well + - futex: Add mutex around futex exit + - futex: Provide distinct return value when owner is exiting + - futex: Prevent exit livelock + - media: uvcvideo: Fix error path in control parsing failure + - media: b2c2-flexcop-usb: add sanity checking + - media: cxusb: detect cxusb_ctrl_msg error in query + - media: imon: invalid dereference in imon_touch_event + - media: mceusb: fix out of bounds read in MCE receiver buffer + - ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs + - USBIP: add config dependency for SGL_ALLOC + - usbip: tools: fix fd leakage in the function of read_attr_usbip_status + - usbip: Fix uninitialized symbol 'nents' in stub_recv_cmd_submit() + - usb-serial: cp201x: support Mark-10 digital force gauge + - USB: chaoskey: fix error case of a timeout + - appledisplay: fix error handling in the scheduled work + - USB: serial: mos7840: add USB ID to support Moxa UPort 2210 + - USB: serial: mos7720: fix remote wakeup + - USB: serial: mos7840: fix remote wakeup + - USB: serial: option: add support for DW5821e with eSIM support + - USB: serial: option: add support for Foxconn T77W968 LTE modules + - staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error + - powerpc/book3s64: Fix link stack flush on context switch + - KVM: PPC: Book3S HV: Flush link stack on guest exit to host kernel + - Linux 5.4.1 + + -- Seth Forshee Fri, 06 Dec 2019 15:53:53 -0600 + +linux (5.4.0-7.8) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: Comment out BPF_CORE_READ's which cause clang to + segfault + - Update nvidia-430 to nvidia-440 + - [Config] Enable nvidia dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4 + + -- Andrea Righi Mon, 25 Nov 2019 15:02:30 +0100 + +linux (5.4.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc8 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Andrea Righi Mon, 18 Nov 2019 12:08:01 +0100 + +linux (5.4.0-5.6) focal; urgency=medium + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15793 + - SAUCE: shiftfs: Correct id translation for lower fs operations + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15792 + - SAUCE: shiftfs: prevent type confusion + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15791 + - SAUCE: shiftfs: Fix refcount underflow in btrfs ioctl handling + + * Some EFI systems fail to boot in efi_init() when booted via maas + (LP: #1851810) + - SAUCE: efi: efi_get_memory_map -- increase map headroom + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: rework define for SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: avoid overflow in implicit constant conversion + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] dkms -- try launchpad librarian for pool downloads + - [Packaging] dkms -- dkms-build quieten wget verbiage + + * tsc marked unstable after entered PC10 on Intel CoffeeLake (LP: #1840239) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake platforms + - SAUCE: x86/intel: Disable HPET on Intel Ice Lake platforms + + * shiftfs: prevent exceeding project quotas (LP: #1849483) + - SAUCE: shiftfs: drop CAP_SYS_RESOURCE from effective capabilities + + * shiftfs: fix fallocate() (LP: #1849482) + - SAUCE: shiftfs: setup correct s_maxbytes limit + + * The alsa hda driver is not loaded due to the missing of PCIID for Comet + Lake-S [8086:a3f0] (LP: #1852070) + - SAUCE: ALSA: hda: Add Cometlake-S PCI ID + + * Can't adjust brightness on DELL UHD dGPU AIO (LP: #1813877) + - SAUCE: platform/x86: dell-uart-backlight: add missing status command + - SAUCE: platform/x86: dell-uart-backlight: load driver by scalar status + - SAUCE: platform/x86: dell-uart-backlight: add force parameter + - SAUCE: platform/x86: dell-uart-backlight: add quirk for old platforms + + * s_iflags overlap prevents unprivileged overlayfs mounts (LP: #1851677) + - SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags + + * ubuntu-aufs-modified mmap_region() breaks refcounting in overlayfs/shiftfs + error path (LP: #1850994) // CVE-2019-15794 + - SAUCE: shiftfs: Restore vm_file value when lower fs mmap fails + - SAUCE: ovl: Restore vm_file value when lower fs mmap fails + + * Miscellaneous Ubuntu changes + - [Debian] Convert update-aufs.sh to use aufs5 + - SAUCE: import aufs driver + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Seth Forshee Wed, 13 Nov 2019 11:56:35 -0800 + +linux (5.4.0-4.5) focal; urgency=medium + + * High power consumption using 5.0.0-25-generic (LP: #1840835) + - PCI: Add a helper to check Power Resource Requirements _PR3 existence + - ALSA: hda: Allow HDA to be runtime suspended when dGPU is not bound to a + driver + - PCI: Fix missing inline for pci_pr3_present() + + * Fix signing of staging modules in eoan (LP: #1850234) + - [Packaging] Leave unsigned modules unsigned after adding .gnu_debuglink + + * [20.04 FEAT] Set Architecture Level (ALS) to z13 (LP: #1837525) + - [Config] s390x bump march to z13, with tune to z15 + + * Miscellaneous Ubuntu changes + - [Debian]: do not skip tests for linux-hwe-edge + - update dkms package versions + - [Config] re-enable zfs + - [Config] rename module virtio_fs to virtiofs + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc6 + + -- Andrea Righi Mon, 04 Nov 2019 15:12:02 +0100 + +linux (5.4.0-3.4) focal; urgency=medium + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test + + * cloudimg: no iavf/i40evf module so no network available with SR-IOV enabled + cloud (LP: #1848481) + - [Packaging] include iavf/i40evf in generic + + * CVE-2019-17666 + - SAUCE: rtlwifi: Fix potential overflow on P2P code + + * Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x from yes + to no (LP: #1848492) + - [Config] Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x + from yes to no + + * Add Intel Comet Lake ethernet support (LP: #1848555) + - SAUCE: e1000e: Add support for Comet Lake + + * seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE (LP: #1847744) + - SAUCE: seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: test SECCOMP_USER_NOTIF_FLAG_CONTINUE + + * drm/i915: Fix the issue of "azx_get_response timeout" for hdmi audio on ICL + platforms (LP: #1847192) + - SAUCE: drm/i915: Fix audio power up sequence for gen10+ display + - SAUCE: drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms + + * PM / hibernate: fix potential memory corruption (LP: #1847118) + - SAUCE: PM / hibernate: memory_bm_find_bit -- tighten node optimisation + + * [regression] NoNewPrivileges incompatible with Apparmor (LP: #1844186) + - SAUCE: apparmor: fix nnp subset test for unconfined + + * overlayfs: allow with shiftfs as underlay (LP: #1846272) + - SAUCE: overlayfs: allow with shiftfs as underlay + + * eoan: alsa/sof: Enable SOF_HDA link and codec (LP: #1848490) + - [Config] Fix SOF Kconfig options + + * linux won't build when new virtualbox version is present on the archive + (LP: #1848788) + - [Packaging]: download virtualbox from sources + + * Miscellaneous Ubuntu changes + - [Config] update annotations from configs + - [Config] updateconfigs after rebase to 5.4-rc5 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc5 + + -- Seth Forshee Tue, 29 Oct 2019 12:01:27 -0500 + +linux (5.4.0-2.3) eoan; urgency=medium + + * Add installer support for iwlmvm adapters (LP: #1848236) + - d-i: Add iwlmvm to nic-modules + + * shiftfs: rework how shiftfs opens files (LP: #1846265) + - SAUCE: shiftfs: rework how shiftfs opens files + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc4 + + -- Andrea Righi Mon, 21 Oct 2019 17:31:26 +0200 + +linux (5.4.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc3 + - [Config] add flexfb, fbtft_device and rio500 to modules.ignore + - [Config] amd64: ignore fbtft and all dependent modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc3 + + -- Andrea Righi Mon, 14 Oct 2019 19:48:52 +0200 + +linux (5.4.0-0.1) eoan; urgency=medium + + * Enable the Dragonboards out of Eoan/master arm64 kernel (LP: #1846704) + - [Packaging] arm64: snapdragon: introduce a snapdragon flavour + - [Packaging] arm64: snapdragon: switch kernel format to Image + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8994=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8996=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8998=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_RPMH=y + - [Config] arm64: snapdragon: CONFIG_QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA=y + - [Config] arm64: snapdragon: CONFIG_COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_RPMH=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8916=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8994=y + - [Config] arm64: snapdragon: CONFIG_MSM_MMCC_8996=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8998=y + - [Config] arm64: snapdragon: CONFIG_HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_GLINK_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_GENI_SE=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMEM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMP2P=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMSM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_QFPROM=y + - [Config] arm64: snapdragon: CONFIG_SERIAL_QCOM_GENI=y + - [Config] arm64: snapdragon: CONFIG_QCOM_TSENS=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: CONFIG_MFD_QCOM_RPM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFS_HISI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_PLTFM=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_MSM=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_QMP=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_UFS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HSIC=y + - [Config] arm64: snapdragon: CONFIG_USB_CHIPIDEA_OF=y + - [Config] arm64: snapdragon: CONFIG_USB_EHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_EXTCON_USB_GPIO=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: CONFIG_LEDS_GPIO=y + - [Config] arm64: snapdragon: CONFIG_USB_HSIC_USB3503=y + - [Config] arm64: snapdragon: CONFIG_USB_NET_DRIVERS=y + - [Config] arm64: snapdragon: CONFIG_USB_OTG=y + - [Config] arm64: snapdragon: CONFIG_USB_XHCI_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_OHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_MUSB_HDRC=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_PCI=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_OF_SIMPLE=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_QCOM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_PWM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_HEARTBEAT=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + - [Config] arm64: snapdragon: CONFIG_QCOM_A53PLL=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_APCS_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_NLS_ISO8859_1=y + - [Config] arm64: snapdragon: CONFIG_USB_USBNET=y + - [Config] arm64: snapdragon: CONFIG_CRYPTO_DEV_QCOM_RNG=y + - [Config] arm64: snapdragon: CONFIG_POWER_RESET_QCOM_PON=y + - [Config] arm64: snapdragon: CONFIG_INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: CONFIG_KEYBOARD_GPIO=y + - [Config] arm64: snapdragon: CONFIG_RTC_DRV_PM8XXX=y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.4-rc2 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] enable aufs + - update dkms package versions + - [Config] disable zfs + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Debian] Generate stub reconstruct for -rc kernels + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Forbid unprivileged mounting + when device is opened for writing" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add module parameter to enable user + namespace mounts" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add support for unprivileged mounts + from user namespaces" + - Revert "UBUNTU: SAUCE: (namespace) mtd: Check permissions towards mtd block + device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Check permissions towards + block device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Support checking inode + permissions in lookup_bdev()" + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc2 + + -- Seth Forshee Fri, 11 Oct 2019 16:42:41 -0500 + +linux (5.4.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 08 Oct 2019 09:59:00 -0500 + +linux (5.3.0-17.18) eoan; urgency=medium + + * eoan/linux: 5.3.0-17.18 -proposed tracker (LP: #1846641) + + * CVE-2019-17056 + - nfc: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17055 + - mISDN: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17054 + - appletalk: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17053 + - ieee802154: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17052 + - ax25: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-15098 + - ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe() + + * xHCI on AMD Stoney Ridge cannot detect USB 2.0 or 1.1 devices. + (LP: #1846470) + - x86/PCI: Avoid AMD FCH XHCI USB PME# from D0 defect + + * Re-enable linux-libc-dev build on i386 (LP: #1846508) + - [Packaging] Build only linux-libc-dev for i386 + - [Debian] final-checks -- ignore archtictures with no binaries + + * arm64: loop on boot after installing linux-generic-hwe-18.04-edge/bionic- + proposed (LP: #1845820) + - [Config] Disable CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT + + * Revert ESE DASD discard support (LP: #1846219) + - SAUCE: Revert "s390/dasd: Add discard support for ESE volumes" + + * Miscellaneous Ubuntu changes + - update dkms package versions + + -- Seth Forshee Thu, 03 Oct 2019 16:57:05 -0500 + +linux (5.3.0-16.17) eoan; urgency=medium + + * eoan/linux: 5.3.0-16.17 -proposed tracker (LP: #1846204) + + * zfs fails to build on s390x with debug symbols enabled (LP: #1846143) + - SAUCE: s390: Mark atomic const ops always inline + + -- Seth Forshee Tue, 01 Oct 2019 07:46:43 -0500 + +linux (5.3.0-15.16) eoan; urgency=medium + + * eoan/linux: 5.3.0-15.16 -proposed tracker (LP: #1845987) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Packaging] Remove x32 arch references from control files + - [Debian] final-checks -- Get arch list from debian/control + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian] Fix conditional for setting zfs debug package path + + * Use pyhon3-sphinx instead of python-sphinx for building html docs + (LP: #1845808) + - [Packaging] Update sphinx build dependencies to python3 packages + + * Kernel panic with 19.10 beta image (LP: #1845454) + - efi/tpm: Don't access event->count when it isn't mapped. + - efi/tpm: don't traverse an event log with no events + - efi/tpm: only set efi_tpm_final_log_size after successful event log parsing + + -- Seth Forshee Mon, 30 Sep 2019 11:57:20 -0500 + +linux (5.3.0-14.15) eoan; urgency=medium + + * eoan/linux: 5.3.0-14.15 -proposed tracker (LP: #1845728) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Debian] Remove support for producing i386 kernels + - [Debian] Don't use CROSS_COMPILE for i386 configs + + * udevadm trigger will fail when trying to add /sys/devices/vio/ + (LP: #1845572) + - SAUCE: powerpc/vio: drop bus_type from parent device + + * Trying to online dasd drive results in invalid input/output from the kernel + on z/VM (LP: #1845323) + - SAUCE: s390/dasd: Fix error handling during online processing + + * intel-lpss driver conflicts with write-combining MTRR region (LP: #1845584) + - SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 2-in-1 + + * Support Hi1620 zip hw accelerator (LP: #1845355) + - [Config] Enable HiSilicon QM/ZIP as modules + - crypto: hisilicon - add queue management driver for HiSilicon QM module + - crypto: hisilicon - add hardware SGL support + - crypto: hisilicon - add HiSilicon ZIP accelerator support + - crypto: hisilicon - add SRIOV support for ZIP + - Documentation: Add debugfs doc for hisi_zip + - crypto: hisilicon - add debugfs for ZIP and QM + - MAINTAINERS: add maintainer for HiSilicon QM and ZIP controller driver + - crypto: hisilicon - fix kbuild warnings + - crypto: hisilicon - add dependency for CRYPTO_DEV_HISI_ZIP + - crypto: hisilicon - init curr_sgl_dma to fix compile warning + - crypto: hisilicon - add missing single_release + - crypto: hisilicon - fix error handle in hisi_zip_create_req_q + - crypto: hisilicon - Fix warning on printing %p with dma_addr_t + - crypto: hisilicon - Fix return value check in hisi_zip_acompress() + - crypto: hisilicon - avoid unused function warning + + * SafeSetID LSM should be built but disabled by default (LP: #1845391) + - LSM: SafeSetID: Stop releasing uninitialized ruleset + - [Config] Build SafeSetID LSM but don't enable it by default + + * CONFIG_LSM should not specify loadpin since it is not built (LP: #1845383) + - [Config] loadpin shouldn't be in CONFIG_LSM + + * Add new pci-id's for CML-S, ICL (LP: #1845317) + - drm/i915/icl: Add missing device ID + - drm/i915/cml: Add Missing PCI IDs + + * Thunderbolt support for ICL (LP: #1844680) + - thunderbolt: Correct path indices for PCIe tunnel + - thunderbolt: Move NVM upgrade support flag to struct icm + - thunderbolt: Use 32-bit writes when writing ring producer/consumer + - thunderbolt: Do not fail adding switch if some port is not implemented + - thunderbolt: Hide switch attributes that are not set + - thunderbolt: Expose active parts of NVM even if upgrade is not supported + - thunderbolt: Add support for Intel Ice Lake + - ACPI / property: Add two new Thunderbolt property GUIDs to the list + + * Ubuntu 19.10 - Additional PCI patch and fix (LP: #1844668) + - s390/pci: fix MSI message data + + * Enhanced Hardware Support - Finalize Naming (LP: #1842774) + - s390: add support for IBM z15 machines + - [Config] CONFIG_MARCH_Z15=n, CONFIG_TUNE_Z15=n + + * Eoan update: v5.3.1 upstream stable release (LP: #1845642) + - USB: usbcore: Fix slab-out-of-bounds bug during device reset + - media: tm6000: double free if usb disconnect while streaming + - phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current + - ip6_gre: fix a dst leak in ip6erspan_tunnel_xmit + - net/sched: fix race between deactivation and dequeue for NOLOCK qdisc + - net_sched: let qdisc_put() accept NULL pointer + - udp: correct reuseport selection with connected sockets + - xen-netfront: do not assume sk_buff_head list is empty in error handling + - net: dsa: Fix load order between DSA drivers and taggers + - net: stmmac: Hold rtnl lock in suspend/resume callbacks + - KVM: coalesced_mmio: add bounds checking + - Documentation: sphinx: Add missing comma to list of strings + - firmware: google: check if size is valid when decoding VPD data + - serial: sprd: correct the wrong sequence of arguments + - tty/serial: atmel: reschedule TX after RX was started + - nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds + - Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}" + - ovl: fix regression caused by overlapping layers detection + - phy: qcom-qmp: Correct ready status, again + - floppy: fix usercopy direction + - media: technisat-usb2: break out of loop at end of buffer + - Linux 5.3.1 + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian]: Remove hardcoded $(pkgdir) in debug symbols handling + - [Debian]: Handle debug symbols for modules in extras too + - [Debian]: Check/link modules with debug symbols after DKMS modules + - [Debian]: Warn about modules without debug symbols + - [Debian]: dkms-build: new parameter for debug package directory + - [Debian]: dkms-build: zfs: support for debug symbols + - [Debian]: dkms-build: Avoid executing post-processor scripts twice + - [Debian]: dkms-build: Move zfs special-casing into configure script + + * /proc/self/maps paths missing on live session (was vlc won't start; eoan + 19.10 & bionic 18.04 ubuntu/lubuntu/kubuntu/xubuntu/ubuntu-mate dailies) + (LP: #1842382) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: enable overlayfs on shiftfs" + + -- Seth Forshee Fri, 27 Sep 2019 16:08:06 -0500 + +linux (5.3.0-13.14) eoan; urgency=medium + + * eoan/linux: 5.3.0-13.14 -proposed tracker (LP: #1845105) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - [Debian] Remove binutils-dev build dependency + + -- Seth Forshee Mon, 23 Sep 2019 19:26:43 -0500 + +linux (5.3.0-12.13) eoan; urgency=medium + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Packaging] Add lz4 build dependency for s390x + + * Miscellaneous Ubuntu changes + - SAUCE: Remove spl and zfs source + + -- Seth Forshee Tue, 17 Sep 2019 13:36:26 +0200 + +linux (5.3.0-11.12) eoan; urgency=medium + + * eoan/linux: 5.3.0-11.12 -proposed tracker (LP: #1844144) + + * Suspend to RAM(S3) does not wake up for latest megaraid and mpt3sas + adapters(SAS3.5 onwards) (LP: #1838751) + - PCI: Restore Resizable BAR size bits correctly for 1MB BARs + + * s390/setup: Actually init kernel lock down (LP: #1843961) + - SAUCE: (lockdown) s390/setup: Actually init kernel lock down + + * cherrypick has_sipl fix (LP: #1843960) + - SAUCE: s390/sclp: Fix bit checked for has_sipl + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config]: Switch kernel compression from LZO to LZ4 on s390x + + * Installation fails on eoan/PowerVM : missing /dev/nvram (LP: #1837726) + - [Config] CONFIG_NVRAM=y for ppc64el + + * Miscellaneous Ubuntu changes + - [Config]: remove nvram from ppc64el modules ABI + - [Config] Update annotations for recent config changes + - SAUCE: sched: Add __ASSEMBLY__ guards around struct clone_args + - SAUCE: i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 + - SAUCE: arm64: dts: qcom: Add Lenovo Yoga C630 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3 + + -- Paolo Pisati Mon, 16 Sep 2019 16:18:27 +0200 + +linux (5.3.0-10.11) eoan; urgency=medium + + * eoan/linux: 5.3.0-10.11 -proposed tracker (LP: #1843232) + + * No sound inputs from the external microphone and headset on a Dell machine + (LP: #1842265) + - SAUCE: ALSA: hda - Expand pin_match function to match upcoming new tbls + - SAUCE: ALSA: hda - Define a fallback_pin_fixup_tbl for alc269 family + + * Horizontal corrupted line at top of screen caused by framebuffer compression + (LP: #1840236) + - SAUCE: drm/i915/fbc: disable framebuffer compression on IceLake + + * Add bpftool to linux-tools-common (LP: #1774815) + - [Debian] package bpftool in linux-tools-common + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc8 + + -- Paolo Pisati Mon, 09 Sep 2019 10:00:41 +0200 + +linux (5.3.0-9.10) eoan; urgency=medium + + * eoan/linux: 5.3.0-9.10 -proposed tracker (LP: #1842393) + + * shiftfs: mark kmem_cache as reclaimable (LP: #1842059) + - SAUCE: shiftfs: mark slab objects SLAB_RECLAIM_ACCOUNT + + * shiftfs: drop entries from cache on unlink (LP: #1841977) + - SAUCE: shiftfs: fix buggy unlink logic + + * Fix touchpad IRQ storm after S3 (LP: #1841396) + - pinctrl: intel: remap the pin number to gpio offset for irq enabled pin + + * Please include DTBs for arm64 laptops (LP: #1842050) + - arm64: dts: qcom: Add Lenovo Miix 630 + - arm64: dts: qcom: Add HP Envy x2 + - arm64: dts: qcom: Add Asus NovaGo TP370QL + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging]: ignore vbox modules when vbox is disabled + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc7 + + -- Paolo Pisati Tue, 03 Sep 2019 10:27:33 +0200 + +linux (5.3.0-8.9) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config] change kernel compression method to improve boot speed + - [Packaging] add build dependencies for compression algorithms + + * realtek r8822be kernel module fails after update to linux kernel-headers + 5.0.0-21 (LP: #1838133) + - rtw88: Fix misuse of GENMASK macro + - rtw88: pci: Rearrange the memory usage for skb in RX ISR + - rtw88: pci: Use DMA sync instead of remapping in RX ISR + - rtw88: debug: dump tx power indexes in use + - rtw88: use txpwr_lmt_cfg_pair struct, not arrays + - rtw88: pci: remove set but not used variable 'ip_sel' + - rtw88: allow c2h operation in irq context + - rtw88: enclose c2h cmd handle with mutex + - rtw88: add BT co-existence support + - SAUCE: rtw88: pci: enable MSI interrupt + + * VIMC module not available (CONFIG_VIDEO_VIMC not set) (LP: #1831482) + - [Config] Enable VIMC module + + * Goodix touchpad may drop first input event (LP: #1840075) + - Revert "UBUNTU: SAUCE: i2c: designware: add G3 3590 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c + quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: Add disable runtime pm quirk" + - mfd: intel-lpss: Remove D3cold delay + + * Include Sunix serial/parallel driver (LP: #1826716) + - serial: 8250_pci: Add support for Sunix serial boards + - parport: parport_serial: Add support for Sunix Multi I/O boards + + * enable lockdown on s390x when Secure IPL is performed (LP: #1839622) + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - Ubuntu: [Config] Enable CONFIG_LOCK_DOWN_KERNEL on s390x. + + * UBUNTU: SAUCE: shiftfs: pass correct point down (LP: #1837231) + - SAUCE: shiftfs: pass correct point down + + * shiftfs: add O_DIRECT support (LP: #1837223) + - SAUCE: shiftfs: add O_DIRECT support + + * Miscellaneous Ubuntu changes + - [Config] enable secureboot signing on s390x + - [Config] CONFIG_TEST_BLACKHOLE_DEV=m + - SAUCE: selftests: fib_tests: assign address to dummy1 for rp_filter tests + - [Debian] disable dkms builds for autopktest rebuilds + - update dkms package versions + - [Config] updateconfigs after v5.3-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 26 Aug 2019 10:09:42 +0200 + +linux (5.3.0-7.8) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after v5.3-rc5 rebase + - remove missing module after updateconfigs + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 19 Aug 2019 15:31:24 +0200 + +linux (5.3.0-6.7) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: prevent headers to be compiled as C code + + -- Seth Forshee Wed, 14 Aug 2019 13:25:01 -0500 + +linux (5.3.0-5.6) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] enable zfs build + + -- Seth Forshee Tue, 13 Aug 2019 09:16:06 -0500 + +linux (5.3.0-4.5) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * bcache: bch_allocator_thread(): hung task timeout (LP: #1784665) // Tight + timeout for bcache removal causes spurious failures (LP: #1796292) + - SAUCE: bcache: fix deadlock in bcache_allocator + + * shiftfs: allow overlayfs (LP: #1838677) + - SAUCE: shiftfs: enable overlayfs on shiftfs + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "kbuild: modpost: do not parse unnecessary rules for vmlinux + modpost" + - update dkms package versions + - enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc4 + + -- Seth Forshee Mon, 12 Aug 2019 10:41:27 -0500 + +linux (5.3.0-3.4) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] add mux-* to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc3 + + -- Paolo Pisati Mon, 05 Aug 2019 18:17:09 +0200 + +linux (5.3.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] add build dependincy on fontconfig + + -- Seth Forshee Mon, 29 Jul 2019 12:18:46 -0400 + +linux (5.3.0-1.2) eoan; urgency=medium + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * Please enable CONFIG_SCSI_UFS_QCOM as a module on arm64 (LP: #1837332) + - [Config] Enable CONFIG_SCSI_UFS_QCOM as a module on arm64. + + * Add arm64 CONFIG_ARCH_MESON=y and related configs Edit (LP: #1820530) + - [Config] enable ARCH_MESON + - remove missing module + - [Config] update annotations after enabling ARCH_MESON for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: KVM: PPC: comment implicit fallthrough + - update dkms package versions + - [Config] enable vbox dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc2 + + -- Seth Forshee Sun, 28 Jul 2019 23:10:16 -0400 + +linux (5.3.0-0.1) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - [Config] disable zfs dkms build + - [Config] disable nvidia dkms build + - [Config] disable vbox dkms build + - SAUCE: perf diff: use llabs for s64 vaules + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc1 + + -- Seth Forshee Tue, 23 Jul 2019 21:45:44 -0500 + +linux (5.3.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Mon, 22 Jul 2019 10:19:04 -0500 + +linux (5.2.0-9.10) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * input/mouse: alps trackpoint-only device doesn't work (LP: #1836752) + - SAUCE: Input: alps - don't handle ALPS cs19 trackpoint-only device + - SAUCE: Input: alps - fix a mismatch between a condition check and its + comment + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * alsa/hdmi: add icelake hdmi audio support for a Dell machine (LP: #1836916) + - SAUCE: ALSA: hda/hdmi - Remove duplicated define + - SAUCE: ALSA: hda/hdmi - Fix i915 reverse port/pin mapping + + * First click on Goodix touchpad doesn't be recognized after runtime suspended + (LP: #1836836) + - SAUCE: i2c: designware: add G3 3590 into i2c quirk + + * ixgbe{vf} - Physical Function gets IRQ when VF checks link state + (LP: #1836760) + - ixgbevf: Use cached link state instead of re-reading the value for ethtool + + * Doing multiple squashfs (and other loop?) mounts in parallel breaks + (LP: #1836914) + - SAUCE: Revert "loop: Don't change loop device under exclusive opener" + + * hibmc-drm Causes Unreadable Display for Huawei amd64 Servers (LP: #1762940) + - SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64 + - [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only + - [Config] add hibmc-drm to modules.ignore + + * hda/realtek: can't detect external mic on a Dell machine (LP: #1836755) + - ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine + + * Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + (LP: #1835054) + - [Config] Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + + * Unhide Nvidia HDA audio controller (LP: #1836308) + - PCI: Enable NVIDIA HDA controllers + + * Intel ethernet I219 may wrongly detect connection speed as 10Mbps + (LP: #1836177) + - e1000e: Make watchdog use delayed work + + * Sometimes touchpad(goodix) can't use tap function (LP: #1836020) + - SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c quirk + - SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk + + * Intel ethernet I219 has slow RX speed (LP: #1836152) + - e1000e: add workaround for possible stalled packet + - e1000e: disable force K1-off feature + + * bcache: risk of data loss on I/O errors in backing or caching devices + (LP: #1829563) + - Revert "bcache: set CACHE_SET_IO_DISABLE in bch_cached_dev_error()" + + * bnx2x driver causes 100% CPU load (LP: #1832082) + - bnx2x: Prevent ptp_task to be rescheduled indefinitely + + * fcf-protection=none patch with new version + - Revert "UBUNTU: SAUCE: kbuild: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none when using retpoline flags + + * CVE-2019-12614 + - powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() + + * Eoan update: v5.2.1 upstream stable release (LP: #1836622) + - crypto: lrw - use correct alignmask + - crypto: talitos - rename alternative AEAD algos. + - fscrypt: don't set policy for a dead directory + - udf: Fix incorrect final NOT_ALLOCATED (hole) extent length + - media: stv0297: fix frequency range limit + - ALSA: usb-audio: Fix parse of UAC2 Extension Units + - ALSA: hda/realtek - Headphone Mic can't record after S3 + - tpm: Actually fail on TPM errors during "get random" + - tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations + - block: fix .bi_size overflow + - block, bfq: NULL out the bic when it's no longer valid + - perf intel-pt: Fix itrace defaults for perf script + - perf auxtrace: Fix itrace defaults for perf script + - perf intel-pt: Fix itrace defaults for perf script intel-pt documentation + - perf pmu: Fix uncore PMU alias list for ARM64 + - perf thread-stack: Fix thread stack return from kernel for kernel-only case + - perf header: Assign proper ff->ph in perf_event__synthesize_features() + - x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg() + - x86/tls: Fix possible spectre-v1 in do_get_thread_area() + - Documentation: Add section about CPU vulnerabilities for Spectre + - Documentation/admin: Remove the vsyscall=native documentation + - mwifiex: Don't abort on small, spec-compliant vendor IEs + - USB: serial: ftdi_sio: add ID for isodebug v1 + - USB: serial: option: add support for GosunCn ME3630 RNDIS mode + - Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled" + - p54usb: Fix race between disconnect and firmware loading + - usb: gadget: f_fs: data_len used before properly set + - usb: gadget: ether: Fix race between gether_disconnect and rx_submit + - usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset() + - usb: renesas_usbhs: add a workaround for a race condition of workqueue + - drivers/usb/typec/tps6598x.c: fix portinfo width + - drivers/usb/typec/tps6598x.c: fix 4CC cmd write + - p54: fix crash during initialization + - staging: comedi: dt282x: fix a null pointer deref on interrupt + - staging: wilc1000: fix error path cleanup in wilc_wlan_initialize() + - staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate() + - staging: comedi: amplc_pci230: fix null pointer deref on interrupt + - staging: mt7621-pci: fix PCIE_FTS_NUM_LO macro + - HID: Add another Primax PIXART OEM mouse quirk + - lkdtm: support llvm-objcopy + - binder: fix memory leak in error path + - binder: return errors from buffer copy functions + - iio: adc: stm32-adc: add missing vdda-supply + - coresight: Potential uninitialized variable in probe() + - coresight: etb10: Do not call smp_processor_id from preemptible + - coresight: tmc-etr: Do not call smp_processor_id() from preemptible + - coresight: tmc-etr: alloc_perf_buf: Do not call smp_processor_id from + preemptible + - coresight: tmc-etf: Do not call smp_processor_id from preemptible + - carl9170: fix misuse of device driver API + - Revert "x86/build: Move _etext to actual end of .text" + - VMCI: Fix integer overflow in VMCI handle arrays + - staging: vchiq_2835_arm: revert "quit using custom down_interruptible()" + - staging: vchiq: make wait events interruptible + - staging: vchiq: revert "switch to wait_for_completion_killable" + - staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work + - staging: bcm2835-camera: Replace spinlock protecting context_map with mutex + - staging: bcm2835-camera: Ensure all buffers are returned on disable + - staging: bcm2835-camera: Remove check of the number of buffers supplied + - staging: bcm2835-camera: Handle empty EOS buffers whilst streaming + - staging: rtl8712: reduce stack usage, again + - Linux 5.2.1 + - [Config] updateconfigs after v5.2.1 stable update + + * fcf-protection=none patch with upstream version + - Revert "UBUNTU: SAUCE: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none to retpoline flags + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: avoid failure when trying to probe a notrace + function + - SAUCE: selftests/powerpc/ptrace: fix build failure + - update dkms package versions + - [Packaging] add zlua to zfs-modules.ignore + - update dkms package versions + + -- Seth Forshee Fri, 19 Jul 2019 15:04:45 -0500 + +linux (5.2.0-8.9) eoan; urgency=medium + + * linux: 5.2.0-8.9 -proposed tracker (LP: #1835700) + + * Miscellaneous Ubuntu changes + - [Packaging] replace zfs and spl build with zfs 0.8.1-1ubuntu1 + - SAUCE: test_bpf: remove expected fail for Ctx heavy transformations test on + s390 + - SAUCE: add -fcf-protection=none to retpoline flags + - SAUCE: usbip: ensure strings copied using strncpy are null-terminated + - SAUCE: usbip: add -Wno-address-of-packed-member to EXTRA_CFLAGS + - SAUCE: perf jvmti: ensure strncpy result is null-terminated + - update dkms package versions + - add removed zfs modules to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.2 + + -- Seth Forshee Mon, 08 Jul 2019 07:13:41 -0500 + +linux (5.2.0-7.8) eoan; urgency=medium + + * Kernel panic upon resetting ixgbe SR-IOV VFIO virtual function using 5.0 + kernel (LP: #1829652) + - SAUCE: ixgbe: Avoid NULL pointer dereference with VF on non-IPsec hw + + * Hi1620 driver updates from upstream 5.2 merge window (LP: #1830815) + - net: hns3: initialize CPU reverse mapping + - net: hns3: refine the flow director handle + - net: hns3: add aRFS support for PF + - net: hns3: fix for FEC configuration + - RDMA/hns: Remove unnecessary print message in aeq + - RDMA/hns: Update CQE specifications + - RDMA/hns: Move spin_lock_irqsave to the correct place + - RDMA/hns: Remove jiffies operation in disable interrupt context + - RDMA/hns: Replace magic numbers with #defines + - net: hns3: fix compile warning without CONFIG_RFS_ACCEL + - net: hns3: fix for HNS3_RXD_GRO_SIZE_M macro + - net: hns3: add support for dump firmware statistics by debugfs + - net: hns3: use HCLGE_STATE_NIC_REGISTERED to indicate PF NIC client has + registered + - net: hns3: use HCLGE_STATE_ROCE_REGISTERED to indicate PF ROCE client has + registered + - net: hns3: use HCLGEVF_STATE_NIC_REGISTERED to indicate VF NIC client has + registered + - net: hns3: modify hclge_init_client_instance() + - net: hns3: modify hclgevf_init_client_instance() + - net: hns3: add handshake with hardware while doing reset + - net: hns3: stop schedule reset service while unloading driver + - net: hns3: adjust hns3_uninit_phy()'s location in the hns3_client_uninit() + - net: hns3: fix a memory leak issue for hclge_map_unmap_ring_to_vf_vector + - RDMA/hns: Bugfix for posting multiple srq work request + - net: hns3: remove redundant core reset + - net: hns3: don't configure new VLAN ID into VF VLAN table when it's full + - net: hns3: fix VLAN filter restore issue after reset + - net: hns3: set the port shaper according to MAC speed + - net: hns3: add a check to pointer in error_detected and slot_reset + - net: hns3: set ops to null when unregister ad_dev + - net: hns3: add handling of two bits in MAC tunnel interrupts + - net: hns3: remove setting bit of reset_requests when handling mac tunnel + interrupts + - net: hns3: add opcode about query and clear RAS & MSI-X to special opcode + - net: hns3: delay and separate enabling of NIC and ROCE HW errors + - RDMA/hns: fix inverted logic of readl read and shift + - RDMA/hns: Bugfix for filling the sge of srq + - net: hns3: log detail error info of ROCEE ECC and AXI errors + - net: hns3: fix wrong size of mailbox responding data + - net: hns3: make HW GRO handling compliant with SW GRO + - net: hns3: replace numa_node_id with numa_mem_id for buffer reusing + - net: hns3: refactor hns3_get_new_int_gl function + - net: hns3: trigger VF reset if a VF has an over_8bd_nfe_err + - net: hns3: delete the redundant user NIC codes + - net: hns3: small changes for magic numbers + - net: hns3: use macros instead of magic numbers + - net: hns3: refactor PF/VF RSS hash key configuration + - net: hns3: some modifications to simplify and optimize code + - net: hns3: fix some coding style issues + - net: hns3: delay setting of reset level for hw errors until slot_reset is + called + - net: hns3: fix avoid unnecessary resetting for the H/W errors which do not + require reset + - net: hns3: process H/W errors occurred before HNS dev initialization + - net: hns3: add recovery for the H/W errors occurred before the HNS dev + initialization + - net: hns3: some changes of MSI-X bits in PPU(RCB) + - net: hns3: extract handling of mpf/pf msi-x errors into functions + - net: hns3: clear restting state when initializing HW device + - net: hns3: free irq when exit from abnormal branch + - net: hns3: fix for dereferencing before null checking + - net: hns3: fix for skb leak when doing selftest + - net: hns3: delay ring buffer clearing during reset + - net: hns3: some variable modification + - net: hns3: fix dereference of ae_dev before it is null checked + - scsi: hisi_sas: Delete PHY timers when rmmod or probe failed + - scsi: hisi_sas: Fix the issue of argument mismatch of printing ecc errors + - scsi: hisi_sas: Reduce HISI_SAS_SGE_PAGE_CNT in size + - scsi: hisi_sas: Change the type of some numbers to unsigned + - scsi: hisi_sas: Ignore the error code between phy down to phy up + - scsi: hisi_sas: Disable stash for v3 hw + - net: hns3: Add missing newline at end of file + - RDMa/hns: Don't stuck in endless timeout loop + + * Sometimes touchpad automatically trigger double click (LP: #1833484) + - SAUCE: i2c: designware: Add disable runtime pm quirk + + * Add pointstick support on HP ZBook 17 G5 (LP: #1833387) + - Revert "HID: multitouch: Support ALPS PTP stick with pid 0x120A" + + * depmod may prefer unsigned l-r-m nvidia modules to signed modules + (LP: #1834479) + - [Packaging] dkms-build--nvidia-N -- clean up unsigned ko files + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/powerpc: disable signal_fuzzer test + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc7 + + -- Seth Forshee Mon, 01 Jul 2019 07:22:18 -0500 + +linux (5.2.0-6.7) eoan; urgency=medium + + * hinic: fix oops due to race in set_rx_mode (LP: #1832048) + - hinic: fix a bug in set rx mode + + * Miscellaneous Ubuntu changes + - rebase to v5.2-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc6 + + -- Seth Forshee Sun, 23 Jun 2019 23:36:11 -0500 + +linux (5.2.0-5.6) eoan; urgency=medium + + * QCA9377 isn't being recognized sometimes (LP: #1757218) + - SAUCE: USB: Disable USB2 LPM at shutdown + + * shiftfs: allow changing ro/rw for subvolumes (LP: #1832316) + - SAUCE: shiftfs: allow changing ro/rw for subvolumes + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Packaging] replace nvidia-418 dkms build with nvidia-430 + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc5 + + -- Seth Forshee Mon, 17 Jun 2019 15:04:12 -0500 + +linux (5.2.0-4.5) eoan; urgency=medium + + * arm64: cma_alloc errors at boot (LP: #1823753) + - [Config] Bump CMA_SIZE_MBYTES to 32 on arm64 + - dma-contiguous: add dma_{alloc,free}_contiguous() helpers + - dma-contiguous: use fallback alloc_pages for single pages + - dma-contiguous: fix !CONFIG_DMA_CMA version of dma_{alloc, + free}_contiguous() + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_MFD_TQMX86=n for s390x + - [Config] CONFIG_GPIO_AMD_FCH=n for s390x + - [Config] CONFIG_BACKLIGHT_CLASS_DEVICE=n on s390x + - [Config] CONFIG_LCD_CLASS_DEVICE=n for s390x + - [Config] CONFIG_DRM_ETNAVIV=m for armhf generic-lpae + - [Config] CONFIG_DRM_NOUVEAU_SVM=n + - [Config] CONFIG_HWMON=n for s390x + - [Config] CONFIG_NEW_LEDS=n for s390x + - [Config] CONFIG_MTD_NAND_OMAP2=y for armhf + - [Config] CONFIG_VOP_BUS=n for non-amd64 arches + - [Config] CONFIG_TI_CPSW_PHY_SEL=n + - [Config] CONFIG_INTERCONNECT=n for s390x + - [Config] CONFIG_SCSI_GDTH=n for s390x + - [Config] CONFIG_PACKING=n for s390x + - [Config] CONFIG_ARCH_MILBEAUT=y for armhf + - [Config] update annotations following config review + - update dkms package versions + - [Config] enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc4 + + -- Seth Forshee Mon, 10 Jun 2019 07:00:11 -0500 + +linux (5.2.0-3.4) eoan; urgency=medium + + * [18.04/18.10] File libperf-jvmti.so is missing in linux-tools-common deb on + Ubuntu (LP: #1761379) + - [Packaging] Support building libperf-jvmti.so + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "bpf, selftest: test global data/bss/rodata sections" + - update dkms package versions + - [Config] enable zfs + - rebase to v5.2-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc3 + + -- Seth Forshee Sun, 02 Jun 2019 21:48:50 -0500 + +linux (5.2.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: perf arm64: Fix mksyscalltbl when system kernel headers are ahead of + the kernel + + -- Seth Forshee Tue, 28 May 2019 07:12:39 -0500 + +linux (5.2.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_INTEGRITY_PLATFORM_KEYRING=y + - update dkms package versions + - [Config] enable vbox dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc2 + + -- Seth Forshee Mon, 27 May 2019 21:11:27 -0500 + +linux (5.2.0-0.1) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - update dkms package versions + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - update dkms package versions + - [Config] disable vbox build + - SAUCE: s390: mark __cpacf_check_opcode() and cpacf_query_func() as + __always_inline + - SAUCE: IB/mlx5: use size_t instead of u64 when dividing + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc1 + + -- Seth Forshee Tue, 21 May 2019 11:18:43 -0500 + +linux (5.2.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 21 May 2019 07:34:43 -0500 + +linux (5.1.0-2.2) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Eoan update: v5.1.2 upstream stable release (LP: #1829050) + - x86/msr-index: Cleanup bit defines + - x86/speculation: Consolidate CPU whitelists + - x86/speculation/mds: Add basic bug infrastructure for MDS + - x86/speculation/mds: Add BUG_MSBDS_ONLY + - x86/kvm: Expose X86_FEATURE_MD_CLEAR to guests + - x86/speculation/mds: Add mds_clear_cpu_buffers() + - x86/speculation/mds: Clear CPU buffers on exit to user + - x86/kvm/vmx: Add MDS protection when L1D Flush is not active + - x86/speculation/mds: Conditionally clear CPU buffers on idle entry + - x86/speculation/mds: Add mitigation control for MDS + - x86/speculation/mds: Add sysfs reporting for MDS + - x86/speculation/mds: Add mitigation mode VMWERV + - Documentation: Move L1TF to separate directory + - Documentation: Add MDS vulnerability documentation + - x86/speculation/mds: Add mds=full,nosmt cmdline option + - x86/speculation: Move arch_smt_update() call to after mitigation decisions + - x86/speculation/mds: Add SMT warning message + - x86/speculation/mds: Fix comment + - x86/speculation/mds: Print SMT vulnerable on MSBDS with mitigations off + - cpu/speculation: Add 'mitigations=' cmdline option + - x86/speculation: Support 'mitigations=' cmdline option + - powerpc/speculation: Support 'mitigations=' cmdline option + - s390/speculation: Support 'mitigations=' cmdline option + - x86/speculation/mds: Add 'mitigations=' support for MDS + - x86/mds: Add MDSUM variant to the MDS documentation + - Documentation: Correct the possible MDS sysfs values + - x86/speculation/mds: Fix documentation typo + - Linux 5.1.2 + + * Eoan update: v5.1.1 upstream stable release (LP: #1829046) + - Drivers: hv: vmbus: Remove the undesired put_cpu_ptr() in hv_synic_cleanup() + - ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings + - staging: greybus: power_supply: fix prop-descriptor request size + - staging: wilc1000: Avoid GFP_KERNEL allocation from atomic context. + - staging: most: cdev: fix chrdev_region leak in mod_exit + - staging: most: sound: pass correct device when creating a sound card + - usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON + - usb: dwc3: Fix default lpm_nyet_threshold value + - USB: serial: f81232: fix interrupt worker not stop + - USB: cdc-acm: fix unthrottle races + - usb-storage: Set virt_boundary_mask to avoid SG overflows + - genirq: Prevent use-after-free and work list corruption + - intel_th: pci: Add Comet Lake support + - iio: adc: qcom-spmi-adc5: Fix of-based module autoloading + - cpufreq: armada-37xx: fix frequency calculation for opp + - ACPI / LPSS: Use acpi_lpss_* instead of acpi_subsys_* functions for + hibernate + - soc: sunxi: Fix missing dependency on REGMAP_MMIO + - scsi: lpfc: change snprintf to scnprintf for possible overflow + - scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines + - scsi: qla2xxx: Set remote port devloss timeout to 0 + - scsi: qla2xxx: Fix device staying in blocked state + - Bluetooth: hidp: fix buffer overflow + - Bluetooth: Align minimum encryption key size for LE and BR/EDR connections + - Bluetooth: Fix not initializing L2CAP tx_credits + - Bluetooth: hci_bcm: Fix empty regulator supplies for Intel Macs + - UAS: fix alignment of scatter/gather segments + - ASoC: Intel: avoid Oops if DMA setup fails + - i3c: Fix a shift wrap bug in i3c_bus_set_addr_slot_status() + - locking/futex: Allow low-level atomic operations to return -EAGAIN + - arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP + - Linux 5.1.1 + + * shiftfs: lock security sensitive superblock flags (LP: #1827122) + - SAUCE: shiftfs: lock down certain superblock flags + + * Please package libbpf (which is done out of the kernel src) in Debian [for + 19.10] (LP: #1826410) + - SAUCE: tools -- fix add ability to disable libbfd + + * ratelimit cma_alloc messages (LP: #1828092) + - SAUCE: cma: ratelimit cma_alloc error messages + + * Headphone jack switch sense is inverted: plugging in headphones disables + headphone output (LP: #1824259) + - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board + + * There are 4 HDMI/Displayport audio output listed in sound setting without + attach any HDMI/DP monitor (LP: #1827967) + - ALSA: hda/hdmi - Read the pin sense from register when repolling + - ALSA: hda/hdmi - Consider eld_valid when reporting jack event + + * CONFIG_LOG_BUF_SHIFT set to 14 is too low on arm64 (LP: #1824864) + - [Config] CONFIG_LOG_BUF_SHIFT=18 on all 64bit arches + + * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error + Checking for all LINUX clients for devops4p10 (LP: #1766201) + - SAUCE: integrity: downgrade error to warning + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [SRU] Please sync vbox modules from virtualbox 6.0.6 on next kernel update + (LP: #1825210) + - vbox-update: updates for renamed makefiles + - ubuntu: vbox -- update to 6.0.6-dfsg-1 + + * autofs kernel module missing (LP: #1824333) + - [Config] Update autofs4 path in inclusion list + + * The Realtek card reader does not enter PCIe 1.1/1.2 (LP: #1825487) + - SAUCE: misc: rtsx: Fixed rts5260 power saving parameter and sd glitch + + * CVE-2019-3874 + - sctp: implement memory accounting on tx path + - sctp: implement memory accounting on rx path + + * apparmor does not start in Disco LXD containers (LP: #1824812) + - SAUCE: shiftfs: use separate llseek method for directories + + * Miscellaneous Ubuntu changes + - [Packaging] autoreconstruct -- remove for -rc kernels + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - [Config] (efi-lockdown): update configs after efi lockdown patch refresh + - [Packaging] don't delete efi_parser.c + - vbox-update -- do not fix up KERN_DIR or KBUILD_EXTMOD + - ubuntu: vbox -- update to 6.0.6-dfsg-2 + - add nvidia-418 dkms build + - remove virtualbox guest drivers + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - [Config] update configs for v5.1(-rc7)? rebase + - update dkms package versions + - Add the ability to lock down access to the running kernel image + - Enforce module signatures if the kernel is locked down + - Restrict /dev/{mem,kmem,port} when the kernel is locked down + - kexec_load: Disable at runtime if the kernel is locked down + - Copy secure_boot flag in boot params across kexec reboot + - kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE + - kexec_file: Restrict at runtime if the kernel is locked down + - hibernate: Disable when the kernel is locked down + - uswsusp: Disable when the kernel is locked down + - PCI: Lock down BAR access when the kernel is locked down + - x86: Lock down IO port access when the kernel is locked down + - x86/msr: Restrict MSR access when the kernel is locked down + - ACPI: Limit access to custom_method when the kernel is locked down + - acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down + - acpi: Disable ACPI table override if the kernel is locked down + - acpi: Disable APEI error injection if the kernel is locked down + - Prohibit PCMCIA CIS storage when the kernel is locked down + - Lock down TIOCSSERIAL + - Lock down module params that specify hardware parameters (eg. ioport) + - x86/mmiotrace: Lock down the testmmiotrace module + - Lock down /proc/kcore + - Lock down kprobes + - bpf: Restrict kernel image access functions when the kernel is locked down + - Lock down perf + - debugfs: Restrict debugfs when the kernel is locked down + - lockdown: Print current->comm in restriction messages + - kexec: Allow kexec_file() with appropriate IMA policy when locked down + - Make get_cert_list() not complain about cert lists that aren't present. + - Add efi_status_to_str() and rework efi_status_to_err(). + - Make get_cert_list() use efi_status_to_str() to print error messages. + - efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - efi: Lock down the kernel if booted in secure boot mode + - KEYS: Make use of platform keyring for module signature verify + + * Miscellaneous upstream changes + - ALSA: hdea/realtek - Headset fixup for System76 Gazelle (gaze14) + + -- Seth Forshee Tue, 14 May 2019 12:32:56 -0500 + +linux (5.1.0-1.1) eoan; urgency=medium + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging]: really drop snapdragon + + * Miscellaneous Ubuntu changes + - SAUCE: fix vbox use of MAP_SHARED + - SAUCE: fix vbox use of vm_fault_t + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - SAUCE: perf annotate: Fix build on 32 bit for BPF annotation + - [Config]: updateconfig after rebase to v5.1-rc + - [Config]: build ETNAVIV only on arm platforms + - [Config]: Disable CMA on non-arm platforms + - [Config]: MMC_CQHCI is needed by some built-in drivers + - [Config]: a.out support has been deprecated + - [Config]: R3964 was marked as BROKEN + - [Config]: Add SENSIRION_SGP30 module + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tools: lib/bpf -- add generated headers to search + path" + - Revert "UBUNTU: SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK" + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 10:03:25 -0300 + +linux (5.1.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 09:49:47 -0300 + +linux (5.0.0-13.14) disco; urgency=medium + + * linux: 5.0.0-13.14 -proposed tracker (LP: #1824819) + + * Display only has 640x480 (LP: #1824677) + - Revert "UBUNTU: SAUCE: drm/nouveau: Disable nouveau driver by default" + + * shiftfs: use after free when checking mount options (LP: #1824735) + - SAUCE: shiftfs: prevent use-after-free when verifying mount options + + -- Seth Forshee Mon, 15 Apr 2019 09:11:23 -0500 + +linux (5.0.0-12.13) disco; urgency=medium + + * linux: 5.0.0-12.13 -proposed tracker (LP: #1824726) + + * Linux 5.0 black screen on boot, display flickers (i915 regression with + certain laptop panels) (LP: #1824216) + - drm/i915/dp: revert back to max link rate and lane count on eDP + + * kernel BUG at fs/attr.c:287 when using shiftfs (LP: #1824717) + - SAUCE: shiftfs: fix passing of attrs to underaly for setattr + + -- Seth Forshee Sun, 14 Apr 2019 13:38:05 -0500 + +linux (5.0.0-11.12) disco; urgency=medium + + * linux: 5.0.0-11.12 -proposed tracker (LP: #1824383) + + * hns3: PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found [error status=0x1] + (LP: #1824194) + - net: hns3: fix for not calculating tx bd num correctly + + * disco: unable to use iptables/enable ufw under -virtual kernel + (LP: #1823862) + - [Packaging] add bpfilter to linux-modules + + * Make shiftfs a module rather than built-in (LP: #1824354) + - [Config] CONFIG_SHIFT_FS=m + + * shiftfs: chown sets untranslated ids in lower fs (LP: #1824350) + - SAUCE: shiftfs: use translated ids when chaning lower fs attrs + + * [Hyper-V] KVP daemon fails to start on first boot of disco VM (LP: #1820063) + - [Packaging] bind hv_kvp_daemon startup to hv_kvp device + + -- Seth Forshee Thu, 11 Apr 2019 10:17:19 -0500 + +linux (5.0.0-10.11) disco; urgency=medium + + * linux: 5.0.0-10.11 -proposed tracker (LP: #1823936) + + * Apparmor enforcement failure in lxc selftests (LP: #1823379) + - SAUCE: apparmor: Restore Y/N in /sys for apparmor's "enabled" + + * systemd cause kernel trace "BUG: unable to handle kernel paging request at + 6db23a14" on Cosmic i386 (LP: #1813244) + - openvswitch: fix flow actions reallocation + + -- Seth Forshee Tue, 09 Apr 2019 08:30:38 -0500 + +linux (5.0.0-9.10) disco; urgency=medium + + * linux: 5.0.0-9.10 -proposed tracker (LP: #1823228) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] update helper scripts + - [Packaging] resync retpoline extraction + + * Huawei Hi1822 NIC has poor performance (LP: #1820187) + - net-next/hinic: replace disable_irq_nosync/enable_irq + + * Add uid shifting overlay filesystem (shiftfs) (LP: #1823186) + - shiftfs: uid/gid shifting bind mount + - shiftfs: rework and extend + - shiftfs: support some btrfs ioctls + - [Config] enable shiftfs + + * Cannot boot or install - have to use nomodeset (LP: #1821820) + - Revert "drm/i915/fbdev: Actually configure untiled displays" + + * Disco update: v5.0.6 upstream stable release (LP: #1823060) + - netfilter: nf_tables: fix set double-free in abort path + - dccp: do not use ipv6 header for ipv4 flow + - genetlink: Fix a memory leak on error path + - gtp: change NET_UDP_TUNNEL dependency to select + - ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL + - mac8390: Fix mmio access size probe + - mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S + - net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 + - net: datagram: fix unbounded loop in __skb_try_recv_datagram() + - net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec + - net: phy: meson-gxl: fix interrupt support + - net: rose: fix a possible stack overflow + - net: stmmac: fix memory corruption with large MTUs + - net-sysfs: call dev_hold if kobject_init_and_add success + - net: usb: aqc111: Extend HWID table by QNAP device + - packets: Always register packet sk in the same order + - rhashtable: Still do rehash when we get EEXIST + - sctp: get sctphdr by offset in sctp_compute_cksum + - sctp: use memdup_user instead of vmemdup_user + - tcp: do not use ipv6 header for ipv4 flow + - tipc: allow service ranges to be connect()'ed on RDM/DGRAM + - tipc: change to check tipc_own_id to return in tipc_net_stop + - tipc: fix cancellation of topology subscriptions + - tun: properly test for IFF_UP + - vrf: prevent adding upper devices + - vxlan: Don't call gro_cells_destroy() before device is unregistered + - thunderx: enable page recycling for non-XDP case + - thunderx: eliminate extra calls to put_page() for pages held for recycling + - net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode + - net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() + helper + - net: phy: don't clear BMCR in genphy_soft_reset + - r8169: fix cable re-plugging issue + - ila: Fix rhashtable walker list corruption + - tun: add a missing rcu_read_unlock() in error path + - powerpc/fsl: Fix the flush of branch predictor. + - Btrfs: fix incorrect file size after shrinking truncate and fsync + - btrfs: remove WARN_ON in log_dir_items + - btrfs: don't report readahead errors and don't update statistics + - btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks + - btrfs: Avoid possible qgroup_rsv_size overflow in + btrfs_calculate_inode_block_rsv_size + - Btrfs: fix assertion failure on fsync with NO_HOLES enabled + - locks: wake any locks blocked on request before deadlock check + - tracing: initialize variable in create_dyn_event() + - ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time + - powerpc: bpf: Fix generation of load/store DW instructions + - vfio: ccw: only free cp on final interrupt + - NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() + - NFS: fix mount/umount race in nlmclnt. + - NFSv4.1 don't free interrupted slot on open + - net: dsa: qca8k: remove leftover phy accessors + - ALSA: rawmidi: Fix potential Spectre v1 vulnerability + - ALSA: seq: oss: Fix Spectre v1 vulnerability + - ALSA: pcm: Fix possible OOB access in PCM oss plugins + - ALSA: pcm: Don't suspend stream in unrecoverable PCM state + - ALSA: hda/realtek - Fixed Headset Mic JD not stable + - ALSA: hda/realtek: merge alc_fixup_headset_jack to alc295_fixup_chromebook + - ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO + - ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB + - ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286 + - ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286 + - ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset mic + - ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256 + - ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256 + - ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with ALC256 + - ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen laptops + - kbuild: modversions: Fix relative CRC byte order interpretation + - fs/open.c: allow opening only regular files during execve() + - ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock + - scsi: sd: Fix a race between closing an sd device and sd I/O + - scsi: sd: Quiesce warning if device does not report optimal I/O size + - scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host + - scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP + devices + - drm/rockchip: vop: reset scale mode when win is disabled + - tty/serial: atmel: Add is_half_duplex helper + - tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped + - tty: mxs-auart: fix a potential NULL pointer dereference + - tty: atmel_serial: fix a potential NULL pointer dereference + - tty: serial: qcom_geni_serial: Initialize baud in qcom_geni_console_setup + - staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest + - staging: olpc_dcon_xo_1: add missing 'const' qualifier + - staging: speakup_soft: Fix alternate speech with other synths + - staging: vt6655: Remove vif check from vnt_interrupt + - staging: vt6655: Fix interrupt race condition on device start up. + - staging: erofs: fix to handle error path of erofs_vmap() + - staging: erofs: fix error handling when failed to read compresssed data + - staging: erofs: keep corrupted fs from crashing kernel in erofs_readdir() + - serial: max310x: Fix to avoid potential NULL pointer dereference + - serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference + - serial: sh-sci: Fix setting SCSCR_TIE while transferring data + - USB: serial: cp210x: add new device id + - USB: serial: ftdi_sio: add additional NovaTech products + - USB: serial: mos7720: fix mos_parport refcount imbalance on error path + - USB: serial: option: set driver_info for SIM5218 and compatibles + - USB: serial: option: add support for Quectel EM12 + - USB: serial: option: add Olicard 600 + - ACPI / CPPC: Fix guaranteed performance handling + - Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc + - fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links + - drivers/block/zram/zram_drv.c: fix idle/writeback string compare + - blk-mq: fix sbitmap ws_active for shared tags + - cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency + - cpufreq: scpi: Fix use after free + - drm/vgem: fix use-after-free when drm_gem_handle_create() fails + - drm/vkms: fix use-after-free when drm_gem_handle_create() fails + - drm/i915: Mark AML 0x87CA as ULX + - drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check + - drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro + - gpio: exar: add a check for the return value of ida_simple_get fails + - gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input + - phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs + - usb: mtu3: fix EXTCON dependency + - USB: gadget: f_hid: fix deadlock in f_hidg_write() + - usb: common: Consider only available nodes for dr_mode + - mm/memory.c: fix modifying of page protection by insert_pfn() + - usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk + - xhci: Fix port resume done detection for SS ports with LPM enabled + - usb: xhci: dbc: Don't free all memory with spinlock held + - xhci: Don't let USB3 ports stuck in polling state prevent suspend + - usb: cdc-acm: fix race during wakeup blocking TX traffic + - usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps + - usb: typec: Fix unchecked return value + - mm/hotplug: fix offline undo_isolate_page_range() + - mm: add support for kmem caches in DMA32 zone + - iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging + - mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified + - mm/debug.c: fix __dump_page when mapping->host is not set + - mm/memory_hotplug.c: fix notification in offline error path + - mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate() + - mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate + - perf pmu: Fix parser error for uncore event alias + - perf intel-pt: Fix TSC slip + - objtool: Query pkg-config for libelf location + - powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes + - powerpc/64: Fix memcmp reading past the end of src/dest + - powerpc/pseries/mce: Fix misleading print for TLB mutlihit + - watchdog: Respect watchdog cpumask on CPU hotplug + - cpu/hotplug: Prevent crash when CPU bringup fails on CONFIG_HOTPLUG_CPU=n + - x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y + - KVM: Reject device ioctls from processes other than the VM's creator + - KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts + - KVM: x86: update %rip after emulating IO + - bpf: do not restore dst_reg when cur_state is freed + - mt76x02u: use usb_bulk_msg to upload firmware + - Linux 5.0.6 + + * RDMA/hns updates for disco (LP: #1822897) + - RDMA/hns: Fix the bug with updating rq head pointer when flush cqe + - RDMA/hns: Bugfix for the scene without receiver queue + - RDMA/hns: Add constraint on the setting of local ACK timeout + - RDMA/hns: Modify the pbl ba page size for hip08 + - RDMA/hns: RDMA/hns: Assign rq head pointer when enable rq record db + - RDMA/hns: Add the process of AEQ overflow for hip08 + - RDMA/hns: Add SCC context allocation support for hip08 + - RDMA/hns: Add SCC context clr support for hip08 + - RDMA/hns: Add timer allocation support for hip08 + - RDMA/hns: Remove set but not used variable 'rst' + - RDMA/hns: Make some function static + - RDMA/hns: Fix the Oops during rmmod or insmod ko when reset occurs + - RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset + - RDMA/hns: Fix the chip hanging caused by sending doorbell during reset + - RDMA/hns: Limit minimum ROCE CQ depth to 64 + - RDMA/hns: Fix the state of rereg mr + - RDMA/hns: Set allocated memory to zero for wrid + - RDMA/hns: Delete useful prints for aeq subtype event + - RDMA/hns: Configure capacity of hns device + - RDMA/hns: Modify qp&cq&pd specification according to UM + - RDMA/hns: Bugfix for set hem of SCC + - RDMA/hns: Use GFP_ATOMIC in hns_roce_v2_modify_qp + + * autopkgtests run too often, too much and don't skip enough (LP: #1823056) + - Set +x on rebuild testcase. + - Skip rebuild test, for regression-suite deps. + - Make ubuntu-regression-suite skippable on unbootable kernels. + - make rebuild use skippable error codes when skipping. + - Only run regression-suite, if requested to. + + * touchpad not working on lenovo yoga 530 (LP: #1787775) + - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI" + - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base" + - i2c: add extra check to safe DMA buffer helper + - i2c: Add drivers for the AMD PCIe MP2 I2C controller + - [Config] Update config for AMD MP2 I2C driver + + * Detect SMP PHY control command errors (LP: #1822680) + - scsi: libsas: Check SMP PHY control function result + + * disable a.out support (LP: #1818552) + - [Config] Disable a.out support + - [Config] remove binfmt_aout from abi for i386 lowlatency + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging] remove snapdragon flavour support + - Revert "UBUNTU: SAUCE: (snapdragon) drm/msm/adv7511: wrap hacks under + CONFIG_ADV7511_SNAPDRAGON_HACKS #ifdefs" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: skip address change if dt + addr == default addr" + - Revert "UBUNTU: SAUCE: (snapdragon) DT: leds: Add Qualcomm Light Pulse + Generator binding" + - Revert "UBUNTU: SAUCE: (snapdragon) MAINTAINERS: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) dt-bindings: media: Binding document for + Qualcomm Camera Control Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) leds: Add driver for Qualcomm LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/adv7511: Don't rely on + interrupts for EDID parsing" + - Revert "UBUNTU: SAUCE: (snapdragon) drm/bridge/adv7511: Delay clearing of + HPD interrupt status" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: Fix I2C address" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix I2C address bug" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix run queue completion + timeout" + - Revert "UBUNTU: SAUCE: (snapdragon) camss: Do not register if no cameras are + present" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) ov5645: I2C address change" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Allow + REGULATOR_QCOM_SMD_RPM=m" + - Revert "UBUNTU: SAUCE: (snapdragon) cpufreq: Add apq8016 to cpufreq-dt- + platdev blacklist" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Add a helper to get an opp + regulator for device" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: HACK: Allow to set regulator + without opp_list" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Drop RCU usage in + dev_pm_opp_adjust_voltage()" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Support adjusting OPP voltages + at runtime" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Add floor and corner + operations" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Register with cpufreq- + dt" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: fix with new + reg_sequence structures" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Use raw mem access for + qfprom" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: Add support for CPR (Core + Power Reduction)" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/iommu: Remove runtime_put + calls in map/unmap" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable LEDS_QCOM_LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'BBR' TCP + congestion algorithm" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'fq' and + 'fq_codel' qdiscs" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable + 'schedutil' CPUfreq governor" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: set USB_CONFIG_F_FS in + distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CONFIG_USB_CONFIGFS_F_FS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add freq stat to sysfs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: Enable camera drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: disable ANALOG_TV and + DIGITAL_TV" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add more USB net + drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable BT_QCOMSMD" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CFG80211_DEFAULT_PS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) Force the SMD regulator driver to be + compiled-in" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: enable dm_mod and + dm_crypt" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: Enable a53/apcs and + avs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable QCOM Venus" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable debug + friendly USB network adpater" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable WCN36xx" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs; add distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable QCOM audio + drivers for APQ8016 and DB410c" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable REMOTEPROC" + - [Config] fix abi for remove i2c-qcom-cci module + - [Config] update annotations + - [Config] update configs following snapdragon removal + + * Disco update: v5.0.5 upstream stable release (LP: #1822671) + - Revert "ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec" + - ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist + - ALSA: firewire-motu: use 'version' field of unit directory to identify model + - mmc: pxamci: fix enum type confusion + - mmc: alcor: fix DMA reads + - mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" + - mmc: renesas_sdhi: limit block count to 16 bit for old revisions + - drm/amdgpu: fix invalid use of change_bit + - drm/vmwgfx: Don't double-free the mode stored in par->set_mode + - drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's + - iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE + - iommu/iova: Fix tracking of recently failed iova address + - libceph: wait for latest osdmap in ceph_monc_blacklist_add() + - udf: Fix crash on IO error during truncate + - mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. + - MIPS: Ensure ELF appended dtb is relocated + - MIPS: Fix kernel crash for R6 in jump label branch function + - powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 + - powerpc/security: Fix spectre_v2 reporting + - net/mlx5: Fix DCT creation bad flow + - scsi: core: Avoid that a kernel warning appears during system resume + - scsi: qla2xxx: Fix FC-AL connection target discovery + - scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton + - scsi: ibmvscsi: Fix empty event pool access during host removal + - futex: Ensure that futex address is aligned in handle_futex_death() + - perf probe: Fix getting the kernel map + - objtool: Move objtool_file struct off the stack + - irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp + - clocksource/drivers/riscv: Fix clocksource mask + - ALSA: ac97: Fix of-node refcount unbalance + - ext4: fix NULL pointer dereference while journal is aborted + - ext4: fix data corruption caused by unaligned direct AIO + - ext4: brelse all indirect buffer in ext4_ind_remove_space() + - media: v4l2-ctrls.c/uvc: zero v4l2_event + - Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() + - Bluetooth: Fix decrementing reference count twice in releasing socket + - Bluetooth: hci_ldisc: Initialize hci_dev before open() + - Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in + hci_uart_set_proto() + - drm/vkms: Fix flush_work() without INIT_WORK(). + - RDMA/cma: Rollback source IP address if failing to acquire device + - f2fs: fix to avoid deadlock of atomic file operations + - aio: simplify - and fix - fget/fput for io_submit() + - netfilter: ebtables: remove BUGPRINT messages + - loop: access lo_backing_file only when the loop device is Lo_bound + - x86/unwind: Handle NULL pointer calls better in frame unwinder + - x86/unwind: Add hardcoded ORC entry for NULL + - locking/lockdep: Add debug_locks check in __lock_downgrade() + - ALSA: hda - Record the current power state before suspend/resume calls + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - Linux 5.0.5 + + * hisi_sas updates for disco (LP: #1822385) + - scsi: hisi_sas: send primitive NOTIFY to SSP situation only + - scsi: hisi_sas: shutdown axi bus to avoid exception CQ returned + - scsi: hisi_sas: remove the check of sas_dev status in + hisi_sas_I_T_nexus_reset() + - scsi: hisi_sas: Remove unused parameter of function hisi_sas_alloc() + - scsi: hisi_sas: Reject setting programmed minimum linkrate > 1.5G + - scsi: hisi_sas: Fix losing directly attached disk when hot-plug + - scsi: hisi_sas: Correct memory allocation size for DQ debugfs + - scsi: hisi_sas: Some misc tidy-up + - scsi: hisi_sas: Fix to only call scsi_get_prot_op() for non-NULL scsi_cmnd + - scsi: hisi_sas: Add missing seq_printf() call in hisi_sas_show_row_32() + - scsi: hisi_sas: Add support for DIX feature for v3 hw + - scsi: hisi_sas: Add manual trigger for debugfs dump + - scsi: hisi_sas: change queue depth from 512 to 4096 + - scsi: hisi_sas: Issue internal abort on all relevant queues + - scsi: hisi_sas: Use pci_irq_get_affinity() for v3 hw as experimental + - scsi: hisi_sas: Do some more tidy-up + - scsi: hisi_sas: Change return variable type in phy_up_v3_hw() + - scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO + - scsi: hisi_sas: print PHY RX errors count for later revision of v3 hw + - scsi: hisi_sas: Set PHY linkrate when disconnected + - scsi: hisi_sas: Send HARD RESET to clear the previous affiliation of STP + target port + - scsi: hisi_sas: Change SERDES_CFG init value to increase reliability of + HiLink + - scsi: hisi_sas: Add softreset in hisi_sas_I_T_nexus_reset() + + * [Patch][Raven 2] kernel 5.0.0 cannot boot because of psp response + (LP: #1822267) + - drm/amdgpu/psp: Fix can't detect psp INVOKE command failed + - drm/amdgpu/psp: ignore psp response status + + * 3b080b2564287be91605bfd1d5ee985696e61d3c in ubuntu_btrfs_kernel_fixes + triggers system hang on i386 (LP: #1812845) + - btrfs: raid56: properly unmap parity page in finish_parity_scrub() + + * enable CONFIG_DRM_BOCHS (LP: #1795857) + - [Config] Reenable DRM_BOCHS as module + + * [Dell Precision 7530/5530 with Nvidia Quadro P1000] Live USB freezes or + cannot complete install when nouveau driver is loaded (crashing in GP100 + code) (LP: #1822026) + - SAUCE: drm/nouveau: Disable nouveau driver by default + + * Need to add Intel CML related pci-id's (LP: #1821863) + - drm/i915/cml: Add CML PCI IDS + - drm/i915/cml: Introduce Comet Lake PCH + + * ARM: Add support for the SDEI interface (LP: #1822005) + - ACPI / APEI: Don't wait to serialise with oops messages when panic()ing + - ACPI / APEI: Remove silent flag from ghes_read_estatus() + - ACPI / APEI: Switch estatus pool to use vmalloc memory + - ACPI / APEI: Make hest.c manage the estatus memory pool + - ACPI / APEI: Make estatus pool allocation a static size + - ACPI / APEI: Don't store CPER records physical address in struct ghes + - ACPI / APEI: Remove spurious GHES_TO_CLEAR check + - ACPI / APEI: Don't update struct ghes' flags in read/clear estatus + - ACPI / APEI: Generalise the estatus queue's notify code + - ACPI / APEI: Don't allow ghes_ack_error() to mask earlier errors + - ACPI / APEI: Move NOTIFY_SEA between the estatus-queue and NOTIFY_NMI + - ACPI / APEI: Switch NOTIFY_SEA to use the estatus queue + - KVM: arm/arm64: Add kvm_ras.h to collect kvm specific RAS plumbing + - arm64: KVM/mm: Move SEA handling behind a single 'claim' interface + - ACPI / APEI: Move locking to the notification helper + - ACPI / APEI: Let the notification helper specify the fixmap slot + - ACPI / APEI: Pass ghes and estatus separately to avoid a later copy + - ACPI / APEI: Make GHES estatus header validation more user friendly + - ACPI / APEI: Split ghes_read_estatus() to allow a peek at the CPER length + - ACPI / APEI: Only use queued estatus entry during in_nmi_queue_one_entry() + - ACPI / APEI: Use separate fixmap pages for arm64 NMI-like notifications + - firmware: arm_sdei: Add ACPI GHES registration helper + - ACPI / APEI: Add support for the SDEI GHES Notification type + + * CVE-2019-9857 + - inotify: Fix fsnotify_mark refcount leak in inotify_update_existing_watch() + + * scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery (LP: #1821408) + - scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery + + * Qualcomm Atheros QCA9377 wireless does not work (LP: #1818204) + - platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list + + * Lenovo ideapad 330-15ICH Wifi rfkill hard blocked (LP: #1811815) + - platform/x86: ideapad: Add ideapad 330-15ICH to no_hw_rfkill + + * hid-sensor-hub spamming dmesg in 4.20 (LP: #1818547) + - HID: Increase maximum report size allowed by hid_field_extract() + + * [disco] [5.0.0-7.8] can't mount guest cifs share (LP: #1821053) + - cifs: allow guest mounts to work for smb3.11 + - SMB3: Fix SMB3.1.1 guest mounts to Samba + + * Add HiSilicon SoC quirk for cpufreq (LP: #1821620) + - ACPI / CPPC: Add a helper to get desired performance + - cpufreq / cppc: Work around for Hisilicon CPPC cpufreq + + * Disco update: v5.0.4 upstream stable release (LP: #1821607) + - 9p: use inode->i_lock to protect i_size_write() under 32-bit + - 9p/net: fix memory leak in p9_client_create + - ASoC: fsl_esai: fix register setting issue in RIGHT_J mode + - ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() + - ASoC: codecs: pcm186x: Fix energysense SLEEP bit + - iio: adc: exynos-adc: Fix NULL pointer exception on unbind + - iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 + - mei: hbm: clean the feature flags on link reset + - mei: bus: move hw module get/put to probe/release + - stm class: Prevent division by zero + - stm class: Fix an endless loop in channel allocation + - crypto: caam - fix hash context DMA unmap size + - crypto: ccree - fix missing break in switch statement + - crypto: caam - fixed handling of sg list + - crypto: caam - fix DMA mapping of stack memory + - crypto: ccree - fix free of unallocated mlli buffer + - crypto: ccree - unmap buffer before copying IV + - crypto: ccree - don't copy zero size ciphertext + - crypto: cfb - add missing 'chunksize' property + - crypto: cfb - remove bogus memcpy() with src == dest + - crypto: ofb - fix handling partial blocks and make thread-safe + - crypto: ahash - fix another early termination in hash walk + - crypto: rockchip - fix scatterlist nents error + - crypto: rockchip - update new iv to device in multiple operations + - dax: Flush partial PMDs correctly + - nfit: Fix nfit_intel_shutdown_status() command submission + - nfit: acpi_nfit_ctl(): Check out_obj->type in the right place + - acpi/nfit: Fix bus command validation + - nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot + - nfit/ars: Attempt short-ARS even in the no_init_ars case + - libnvdimm/label: Clear 'updating' flag after label-set update + - libnvdimm, pfn: Fix over-trim in trim_pfn_device() + - libnvdimm/pmem: Honor force_raw for legacy pmem regions + - libnvdimm: Fix altmap reservation size calculation + - fix cgroup_do_mount() handling of failure exits + - crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: aegis - fix handling chunked inputs + - crypto: arm/crct10dif - revert to C code for short inputs + - crypto: arm64/aes-neonbs - fix returning final keystream block + - crypto: arm64/crct10dif - revert to C code for short inputs + - crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: morus - fix handling chunked inputs + - crypto: pcbc - remove bogus memcpy()s with src == dest + - crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: testmgr - skip crc32c context test for ahash algorithms + - crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP + - crypto: x86/aesni-gcm - fix crash on empty plaintext + - crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP + - crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling + - crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine + - CIFS: Fix leaking locked VFS cache pages in writeback retry + - CIFS: Do not reset lease state to NONE on lease break + - CIFS: Do not skip SMB2 message IDs on send failures + - CIFS: Fix read after write for files with read caching + - smb3: make default i/o size for smb3 mounts larger + - tracing: Use strncpy instead of memcpy for string keys in hist triggers + - tracing: Do not free iter->trace in fail path of tracing_open_pipe() + - tracing/perf: Use strndup_user() instead of buggy open-coded version + - vmw_balloon: release lock on error in vmballoon_reset() + - xen: fix dom0 boot on huge systems + - ACPI / device_sysfs: Avoid OF modalias creation for removed device + - mmc: sdhci-esdhc-imx: fix HS400 timing issue + - mmc: renesas_sdhi: Fix card initialization failure in high speed mode + - mmc:fix a bug when max_discard is 0 + - spi: ti-qspi: Fix mmap read when more than one CS in use + - spi: pxa2xx: Setup maximum supported DMA transfer length + - spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch + - spi: spi-gpio: fix SPI_CS_HIGH capability + - regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 + - regulator: max77620: Initialize values for DT properties + - regulator: s2mpa01: Fix step values for some LDOs + - mt76: fix corrupted software generated tx CCMP PN + - clocksource/drivers/exynos_mct: Move one-shot check from tick clear to ISR + - clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown + - clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer + instability + - s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem + - s390/setup: fix early warning messages + - s390/virtio: handle find on invalid queue gracefully + - scsi: virtio_scsi: don't send sc payload with tmfs + - scsi: aacraid: Fix performance issue on logical drives + - scsi: sd: Optimal I/O size should be a multiple of physical block size + - scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock + - scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by firmware + - scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not + supported + - scsi: qla2xxx: Use complete switch scan for RSCN events + - fs/devpts: always delete dcache dentry-s in dput() + - splice: don't merge into linked buffers + - ovl: During copy up, first copy up data and then xattrs + - ovl: Do not lose security.capability xattr over metadata file copy-up + - m68k: Add -ffreestanding to CFLAGS + - Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() + - Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl + - btrfs: scrub: fix circular locking dependency warning + - btrfs: drop the lock on error in btrfs_dev_replace_cancel + - btrfs: ensure that a DUP or RAID1 block group has exactly two stripes + - btrfs: init csum_list before possible free + - Btrfs: fix corruption reading shared and compressed extents after hole + punching + - Btrfs: fix deadlock between clone/dedupe and rename + - soc: qcom: rpmh: Avoid accessing freed memory from batch API + - libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer + - irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table + - irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code + - x86/kprobes: Prohibit probing on optprobe template code + - cpufreq: kryo: Release OPP tables on module removal + - cpufreq: tegra124: add missing of_node_put() + - cpufreq: pxa2xx: remove incorrect __init annotation + - ext4: fix check of inode in swap_inode_boot_loader + - ext4: cleanup pagecache before swap i_data + - mm: hwpoison: fix thp split handing in soft_offline_in_use_page() + - mm/vmalloc: fix size check for remap_vmalloc_range_partial() + - mm/memory.c: do_fault: avoid usage of stale vm_area_struct + - kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv + - nvmem: core: don't check the return value of notifier chain call + - device property: Fix the length used in PROPERTY_ENTRY_STRING() + - intel_th: Don't reference unassigned outputs + - parport_pc: fix find_superio io compare code, should use equal test. + - i2c: tegra: fix maximum transfer size + - i2c: tegra: update maximum transfer size + - media: i2c: ov5640: Fix post-reset delay + - gpio: pca953x: Fix dereference of irq data in shutdown + - ext4: update quota information while swapping boot loader inode + - ext4: add mask of ext4 flags to swap + - ext4: fix crash during online resizing + - dma: Introduce dma_max_mapping_size() + - swiotlb: Introduce swiotlb_max_mapping_size() + - swiotlb: Add is_swiotlb_active() function + - PCI/ASPM: Use LTR if already enabled by platform + - PCI/DPC: Fix print AER status in DPC event handling + - PCI: qcom: Don't deassert reset GPIO during probe + - PCI: dwc: skip MSI init if MSIs have been explicitly disabled + - PCI: pci-bridge-emul: Create per-bridge copy of register behavior + - PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags + - IB/hfi1: Close race condition on user context disable and close + - IB/rdmavt: Fix loopback send with invalidate ordering + - IB/rdmavt: Fix concurrency panics in QP post_send and modify to error + - cxl: Wrap iterations over afu slices inside 'afu_list_lock' + - ext2: Fix underflow in ext2_max_size() + - clk: uniphier: Fix update register for CPU-gear + - clk: clk-twl6040: Fix imprecise external abort for pdmclk + - clk: samsung: exynos5: Fix possible NULL pointer exception on + platform_device_alloc() failure + - clk: samsung: exynos5: Fix kfree() of const memory on setting + driver_override + - clk: ingenic: Fix round_rate misbehaving with non-integer dividers + - clk: ingenic: Fix doc of ingenic_cgu_div_info + - usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() + - usb: typec: tps6598x: handle block writes separately with plain-I2C adapters + - dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit + - serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO + - serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart + - serial: 8250_pci: Fix number of ports for ACCES serial cards + - serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 + chip use the pci_pericom_setup() + - jbd2: clear dirty flag when revoking a buffer from an older transaction + - jbd2: fix compile warning when using JBUFFER_TRACE + - selinux: add the missing walk_size + len check in selinux_sctp_bind_connect + - security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock + - powerpc/32: Clear on-stack exception marker upon exception return + - powerpc/wii: properly disable use of BATs when requested. + - powerpc/powernv: Make opal log only readable by root + - powerpc/83xx: Also save/restore SPRG4-7 during suspend + - powerpc/kvm: Save and restore host AMR/IAMR/UAMOR + - powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit + - powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. instruction + - powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest + - powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning + - powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR + configuration + - powerpc/smp: Fix NMI IPI timeout + - powerpc/smp: Fix NMI IPI xmon timeout + - powerpc/traps: fix recoverability of machine check handling on book3s/32 + - powerpc/traps: Fix the message printed when stack overflows + - ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify + - arm64: Fix HCR.TGE status for NMI contexts + - arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals + - arm64: debug: Ensure debug handlers check triggering exception level + - arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 + - Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" + - ipmi_si: Fix crash when using hard-coded device + - ipmi_si: fix use-after-free of resource->name + - dm: fix to_sector() for 32bit + - dm integrity: limit the rate of error messages + - media: cx25840: mark pad sig_types to fix cx231xx init + - mfd: sm501: Fix potential NULL pointer dereference + - cpcap-charger: generate events for userspace + - cpuidle: governor: Add new governors to cpuidle_governors again + - NFS: Fix I/O request leakages + - NFS: Fix an I/O request leakage in nfs_do_recoalesce + - NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() + - nfsd: fix performance-limiting session calculation + - nfsd: fix memory corruption caused by readdir + - nfsd: fix wrong check in write_v4_end_grace() + - NFSv4.1: Reinitialise sequence results before retransmitting a request + - svcrpc: fix UDP on servers with lots of threads + - PM / wakeup: Rework wakeup source timer cancellation + - PM / OPP: Update performance state when freq == old_freq + - bcache: treat stale && dirty keys as bad keys + - bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata + - stable-kernel-rules.rst: add link to networking patch queue + - vt: perform safe console erase in the right order + - x86/unwind/orc: Fix ORC unwind table alignment + - perf intel-pt: Fix CYC timestamp calculation after OVF + - perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols + - perf auxtrace: Define auxtrace record alignment + - perf intel-pt: Fix overlap calculation for padding + - perf/x86/intel/uncore: Fix client IMC events return huge result + - perf intel-pt: Fix divide by zero when TSC is not available + - md: Fix failed allocation of md_register_thread + - x86/kvmclock: set offset for kvm unstable clock + - x86/ftrace: Fix warning and considate ftrace_jmp_replace() and + ftrace_call_replace() + - tpm/tpm_crb: Avoid unaligned reads in crb_recv() + - tpm: Unify the send callback behaviour + - rcu: Do RCU GP kthread self-wakeup from softirq and interrupt + - media: imx: prpencvf: Stop upstream before disabling IDMA channel + - media: lgdt330x: fix lock status reporting + - media: sun6i: Fix CSI regmap's max_register + - media: uvcvideo: Avoid NULL pointer dereference at the end of streaming + - media: vimc: Add vimc-streamer for stream control + - media: imx-csi: Input connections to CSI should be optional + - media: imx: csi: Disable CSI immediately after last EOF + - media: imx: csi: Stop upstream before disabling IDMA channel + - drm/fb-helper: generic: Fix drm_fbdev_client_restore() + - drm/radeon/evergreen_cs: fix missing break in switch statement + - drm/amd/powerplay: correct power reading on fiji + - drm/amd/display: don't call dm_pp_ function from an fpu block + - KVM: Call kvm_arch_memslots_updated() before updating memslots + - KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run + - KVM: VMX: Zero out *all* general purpose registers after VM-Exit + - KVM: x86/mmu: Detect MMIO generation wrap in any address space + - KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux + - KVM: nVMX: Sign extend displacements of VMX instr's mem operands + - KVM: nVMX: Apply addr size mask to effective address for VMX instructions + - KVM: nVMX: Ignore limit checks on VMX instructions using flat segments + - KVM: nVMX: Check a single byte for VMCS "launched" in nested early checks + - net: dsa: lantiq_gswip: fix use-after-free on failed probe + - net: dsa: lantiq_gswip: fix OF child-node lookups + - s390/setup: fix boot crash for machine without EDAT-1 + - SUNRPC: Prevent thundering herd when the socket is not connected + - SUNRPC: Fix up RPC back channel transmission + - SUNRPC: Respect RPC call timeouts when retrying transmission + - Linux 5.0.4 + - [Config] update configs for 5.0.4 stable update + + * New Intel Wireless-AC 9260 [8086:2526] card not correctly probed in Ubuntu + system (LP: #1821271) + - iwlwifi: add new card for 9260 series + + * [CONFIG] please enable highdpi font FONT_TER16x32 (LP: #1819881) + - [Config]: enable highdpi Terminus 16x32 font support + + * [SRU][B/B-OEM/C/D] Fix AMD IOMMU NULL dereference (LP: #1820990) + - iommu/amd: Fix NULL dereference bug in match_hid_uid + + * some codecs stop working after S3 (LP: #1820930) + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - ALSA: hda - Don't trigger jackpoll_work in azx_resume + + * tcm_loop.ko: move from modules-extra into main modules package + (LP: #1817786) + - [Packaging] move tcm_loop.lo to main linux-modules package + + * C++ demangling support missing from perf (LP: #1396654) + - [Packaging] fix a mistype + + * r8169 doesn't get woken up by ethernet cable plugging, no PME generated + (LP: #1817676) + - PCI: pciehp: Disable Data Link Layer State Changed event on suspend + + * Disco update: v5.0.3 upstream stable release (LP: #1821074) + - connector: fix unsafe usage of ->real_parent + - fou, fou6: avoid uninit-value in gue_err() and gue6_err() + - gro_cells: make sure device is up in gro_cells_receive() + - ipv4/route: fail early when inet dev is missing + - l2tp: fix infoleak in l2tp_ip6_recvmsg() + - lan743x: Fix RX Kernel Panic + - lan743x: Fix TX Stall Issue + - net: hsr: fix memory leak in hsr_dev_finalize() + - net/hsr: fix possible crash in add_timer() + - net: sit: fix UBSAN Undefined behaviour in check_6rd + - net/x25: fix use-after-free in x25_device_event() + - net/x25: reset state in x25_connect() + - pptp: dst_release sk_dst_cache in pptp_sock_destruct + - ravb: Decrease TxFIFO depth of Q3 and Q2 to one + - route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race + - rxrpc: Fix client call queueing, waiting for channel + - sctp: remove sched init from sctp_stream_init + - tcp: do not report TCP_CM_INQ of 0 for closed connections + - tcp: Don't access TCP_SKB_CB before initializing it + - tcp: handle inet_csk_reqsk_queue_add() failures + - vxlan: Fix GRO cells race condition between receive and link delete + - vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() + - net/mlx4_core: Fix reset flow when in command polling mode + - net/mlx4_core: Fix locking in SRIOV mode when switching between events and + polling + - net/mlx4_core: Fix qp mtt size calculation + - net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports + - vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock + - net: sched: flower: insert new filter to idr after setting its mask + - f2fs: wait on atomic writes to count F2FS_CP_WB_DATA + - perf/x86: Fixup typo in stub functions + - ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against + Liquid Saffire 56 + - ALSA: firewire-motu: fix construction of PCM frame for capture direction + - ALSA: hda: Extend i915 component bind timeout + - ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 + - ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 + - ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone + - ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with + ALC255 + - perf/x86/intel: Fix memory corruption + - perf/x86/intel: Make dev_attr_allow_tsx_force_abort static + - It's wrong to add len to sector_nr in raid10 reshape twice + - drm: Block fb changes for async plane updates + - Linux 5.0.3 + + * Disco update: v5.0.2 upstream stable release (LP: #1820318) + - media: uvcvideo: Fix 'type' check leading to overflow + - Input: wacom_serial4 - add support for Wacom ArtPad II tablet + - Input: elan_i2c - add id for touchpad found in Lenovo s21e-20 + - iscsi_ibft: Fix missing break in switch statement + - scsi: aacraid: Fix missing break in switch statement + - x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub + - arm64: dts: zcu100-revC: Give wifi some time after power-on + - arm64: dts: hikey: Give wifi some time after power-on + - arm64: dts: hikey: Revert "Enable HS200 mode on eMMC" + - ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid X2/U3 + - ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU + - ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4 + - drm: disable uncached DMA optimization for ARM and arm64 + - media: Revert "media: rc: some events are dropped by userspace" + - Revert "PCI/PME: Implement runtime PM callbacks" + - bpf: Stop the psock parser before canceling its work + - gfs2: Fix missed wakeups in find_insert_glock + - staging: erofs: keep corrupted fs from crashing kernel in erofs_namei() + - staging: erofs: compressed_pages should not be accessed again after freed + - scripts/gdb: replace flags (MS_xyz -> SB_xyz) + - ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom + - perf/x86/intel: Make cpuc allocations consistent + - perf/x86/intel: Generalize dynamic constraint creation + - x86: Add TSX Force Abort CPUID/MSR + - perf/x86/intel: Implement support for TSX Force Abort + - Linux 5.0.2 + + * Linux security module stacking support + - LSM: Introduce LSM_FLAG_LEGACY_MAJOR + - LSM: Provide separate ordered initialization + - LSM: Plumb visibility into optional "enabled" state + - LSM: Lift LSM selection out of individual LSMs + - LSM: Build ordered list of LSMs to initialize + - LSM: Introduce CONFIG_LSM + - LSM: Introduce "lsm=" for boottime LSM selection + - LSM: Tie enabling logic to presence in ordered list + - LSM: Prepare for reorganizing "security=" logic + - LSM: Refactor "security=" in terms of enable/disable + - LSM: Separate idea of "major" LSM from "exclusive" LSM + - apparmor: Remove SECURITY_APPARMOR_BOOTPARAM_VALUE + - selinux: Remove SECURITY_SELINUX_BOOTPARAM_VALUE + - LSM: Add all exclusive LSMs to ordered initialization + - LSM: Split LSM preparation from initialization + - LoadPin: Initialize as ordered LSM + - Yama: Initialize as ordered LSM + - LSM: Introduce enum lsm_order + - capability: Initialize as LSM_ORDER_FIRST + - procfs: add smack subdir to attrs + - Smack: Abstract use of cred security blob + - SELinux: Abstract use of cred security blob + - SELinux: Remove cred security blob poisoning + - SELinux: Remove unused selinux_is_enabled + - AppArmor: Abstract use of cred security blob + - TOMOYO: Abstract use of cred security blob + - Infrastructure management of the cred security blob + - SELinux: Abstract use of file security blob + - Smack: Abstract use of file security blob + - LSM: Infrastructure management of the file security + - SELinux: Abstract use of inode security blob + - Smack: Abstract use of inode security blob + - LSM: Infrastructure management of the inode security + - LSM: Infrastructure management of the task security + - SELinux: Abstract use of ipc security blobs + - Smack: Abstract use of ipc security blobs + - LSM: Infrastructure management of the ipc security blob + - TOMOYO: Update LSM flags to no longer be exclusive + - LSM: generalize flag passing to security_capable + - LSM: Make lsm_early_cred() and lsm_early_task() local functions. + - LSM: Make some functions static + - apparmor: Adjust offset when accessing task blob. + - LSM: Ignore "security=" when "lsm=" is specified + - LSM: Update list of SECURITYFS users in Kconfig + - apparmor: delete the dentry in aafs_remove() to avoid a leak + - apparmor: fix double free when unpack of secmark rules fails + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Limit calls to certain module hooks + - SAUCE: LSM: Special handling for secctx lsm hooks + - SAUCE: LSM: Specify which LSM to display with /proc/self/attr/display + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute" + - SAUCE: Revert "apparmor: fix checkpatch error in Parse secmark policy" + - SAUCE: Revert "apparmor: add #ifdef checks for secmark filtering" + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fix bad debug check in apparmor_secid_to_secctx()" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: Fix memory leak of rule on error exit path" + - SAUCE: Revert "apparmor: modify audit rule support to support profile + stacks" + - SAUCE: Revert "apparmor: Add support for audit rule filtering" + - SAUCE: Revert "apparmor: add the ability to get a task's secid" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - SAUCE: apparmor: add proc subdir to attrs + - SAUCE: apparmor: add an apparmorfs entry to access current attrs + - SAUCE: apparmor: update flags to no longer be exclusive + - SAUCE: update configs and annotations for LSM stacking + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_EARLY_PRINTK_USB_XDBC=y + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - [Config] CONFIG_RANDOM_TRUST_CPU=y + - [Config] refresh annotations for recent config changes + - ubuntu: vbox -- update to 6.0.4-dfsg-7 + - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for + upcoming platform" + + -- Seth Forshee Thu, 04 Apr 2019 14:49:59 -0500 + +linux (5.0.0-8.9) disco; urgency=medium + + * linux: 5.0.0-8.9 -proposed tracker (LP: #1819759) + + * hisi_sas: add debugfs support (LP: #1819500) + - scsi: hisi_sas: Create root and device debugfs directories + - scsi: hisi_sas: Alloc debugfs snapshot buffer memory for all registers + - scsi: hisi_sas: Take debugfs snapshot for all regs + - scsi: hisi_sas: Debugfs global register create file and add file operations + - scsi: hisi_sas: Add debugfs for port registers + - scsi: hisi_sas: Add debugfs CQ file and add file operations + - scsi: hisi_sas: Add debugfs DQ file and add file operations + - scsi: hisi_sas: Add debugfs IOST file and add file operations + - scsi: hisi_sas: No need to check return value of debugfs_create functions + - scsi: hisi_sas: Fix type casting and missing static qualifier in debugfs + code + - scsi: hisi_sas: Add debugfs ITCT file and add file operations + + * [disco] hns driver updates from 5.1 merge window (LP: #1819535) + - net: hns: Use struct_size() in devm_kzalloc() + - net: hns3: modify enet reinitialization interface + - net: hns3: remove unused member in struct hns3_enet_ring + - net: hns3: remove unnecessary hns3_adjust_tqps_num + - net: hns3: reuse reinitialization interface in the hns3_set_channels + - net: hns3: add interface hclge_tm_bp_setup + - net: hns3: modify parameter checks in the hns3_set_channels + - net: hns3: remove redundant codes in hclge_knic_setup + - net: hns3: fix user configuration loss for ethtool -L + - net: hns3: adjust the use of alloc_tqps and num_tqps + - net: hns3: fix wrong combined count returned by ethtool -l + - net: hns3: do reinitialization while ETS configuration changed + - net: hns3: add HNAE3_RESTORE_CLIENT interface in enet module + - net: hns3: add calling roce callback function when link status change + - net: hns3: add rx multicast packets statistic + - net: hns3: refactor the statistics updating for netdev + - net: hns3: fix rss configuration lost problem when setting channel + - net: hns3: fix for shaper not setting when TC num changes + - net: hns3: fix bug of ethtool_ops.get_channels for VF + - net: hns3: clear param in ring when free ring + - net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED + - net: hns3: do not return GE PFC setting err when initializing + - net: hns3: add ETS TC weight setting in SSU module + - net: hns3: add statistics for PFC frames and MAC control frames + - net: hns3: fix PFC not setting problem for DCB module + - net: hns3: don't update packet statistics for packets dropped by hardware + - net: hns3: clear pci private data when unload hns3 driver + - net: hns3: add error handling in hclge_ieee_setets + - net: hns3: fix return value handle issue for hclge_set_loopback() + - net: hns3: fix broadcast promisc issue for revision 0x20 + - net: hns3: After setting the loopback, add the status of getting MAC + - net: hns3: do reinitialization while mqprio configuration changed + - net: hns3: remove dcb_ops->map_update in hclge_dcb + - net: hns3: call hns3_nic_set_real_num_queue with netdev down + - net: hns3: add 8 BD limit for tx flow + - net: hns3: add initialization for nic state + - net: hns3: don't allow vf to enable promisc mode + - net: hns3: reuse the definition of l3 and l4 header info union + - net: hns3: fix VF dump register issue + - net: hns3: use the correct interface to stop|open port + - net: hns3: change hnae3_register_ae_dev() to int + - net: hns3: only support tc 0 for VF + - net: hns3: Fix NULL deref when unloading driver + - net: hns3: fix netif_napi_del() not do problem when unloading + - net: hns3: fix for rss result nonuniform + - net: hns3: fix improper error handling in the hclge_init_ae_dev() + - net: hns3: fix an issue for hclgevf_ae_get_hdev + - net: hns3: stop sending keep alive msg to PF when VF is resetting + - net: hns3: keep flow director state unchanged when reset + - net: hns3: Check for allocation failure + - net: hns3: fix a code style issue for hns3_update_new_int_gl() + - net: hns3: fix an issue for hns3_update_new_int_gl + - net: hns3: Modify parameter type from int to bool in set_gro_en + - net: hns3: code optimization for hclge_rx_buffer_calc + - net: hns3: add hclge_cmd_check_retval() to parse comman's return value + - net: hns3: move some set_bit statement into hclge_prepare_mac_addr + - net: hns3: fix a wrong checking in the hclge_tx_buffer_calc() + - net: hns3: fix the problem that the supported port is empty + - net: hns3: optimize the maximum TC macro + - net: hns3: don't allow user to change vlan filter state + - net: hns3: modify the upper limit judgment condition + - net: hns3: MAC table entry count function increases operation 0 value + protection measures + - net: hns3: make function hclge_set_all_vf_rst() static + - net: hns3: add pointer checking at the beginning of the exported functions. + - net: hns3: Check variable is valid before assigning it to another + - net: hns3: convert mac advertize and supported from u32 to link mode + - net: hns3: fix port info query issue for copper port + - net: hns3: modify print message of ssu common ecc errors + - net: hns3: some bugfix of ppu(rcb) ras errors + - net: hns3: enable 8~11th bit of mac common msi-x error + - net: hns3: fix 6th bit of ppp mpf abnormal errors + - net: hns3: Record VF unicast and multicast tables + - net: hns3: Record VF vlan tables + - net: hns3: uninitialize command queue while unloading PF driver + - net: hns3: clear command queue's registers when unloading VF driver + - net: hns3: add xps setting support for hns3 driver + - net: hns3: avoid mult + div op in critical data path + - net: hns3: limit some variable scope in critical data path + - net: hns3: remove some ops in struct hns3_nic_ops + - net: hns3: add unlikely for error handling in data path + - net: hns3: replace hnae3_set_bit and hnae3_set_field in data path + - net: hns3: remove hnae3_get_bit in data path + - net: hns3: add support to config depth for tx|rx ring separately + - net: hns3: enable VF VLAN filter for each VF when initializing + - net: hns3: fix get VF RSS issue + - net: hns3: fix setting of the hns reset_type for rdma hw errors + - net: hns3: fix improper error handling for hns3_client_start + - net: hns: use struct_size() in devm_kzalloc() + - net: hns3: Fix a logical vs bitwise typo + - net: hns3: add dma_rmb() for rx description + - net: hns3: fix to stop multiple HNS reset due to the AER changes + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms-build -- support building against packages in PPAs + - [Packaging] dkms-build: do not redownload files on subsequent passes + - [Packaging] dkms-build -- elide partial Built-Using information + - [Packaging] dkms-build -- remove retpoline data from final binary packages + - [Packaging] dkms-build--nvidia* -- check gcc version against primary build + - [Packaging] dkms-build -- add support for unversioned overrides + - [Packaging] dkms-build--nvidia-* -- convert to generic -N form + - [Packaging] fix-filenames -- handle exact string removal + - [Packaging] dkms-build--nvidia-N -- remove GCC versions + + * Disco update: v5.0.1 upstream stable release (LP: #1819515) + - cpufreq: Use struct kobj_attribute instead of struct global_attr + - staging: erofs: fix mis-acted TAIL merging behavior + - binder: create node flag to request sender's security context + - USB: serial: option: add Telit ME910 ECM composition + - USB: serial: cp210x: add ID for Ingenico 3070 + - USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485 + - driver core: Postpone DMA tear-down until after devres release + - staging: erofs: fix fast symlink w/o xattr when fs xattr is on + - staging: erofs: fix memleak of inode's shared xattr array + - staging: erofs: fix race of initializing xattrs of a inode at the same time + - staging: erofs: fix illegal address access under memory pressure + - staging: comedi: ni_660x: fix missing break in switch statement + - staging: wilc1000: fix to set correct value for 'vif_num' + - staging: android: ion: fix sys heap pool's gfp_flags + - staging: android: ashmem: Don't call fallocate() with ashmem_mutex held. + - staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex + held. + - ip6mr: Do not call __IP6_INC_STATS() from preemptible context + - net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for new + DSA framework + - net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in + mv88e6xxx_port_set_duplex + - net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family + - net: mscc: Enable all ports in QSGMII + - net: sched: put back q.qlen into a single location + - net-sysfs: Fix mem leak in netdev_register_kobject + - qmi_wwan: Add support for Quectel EG12/EM12 + - sctp: call iov_iter_revert() after sending ABORT + - team: Free BPF filter when unregistering netdev + - tipc: fix RDM/DGRAM connect() regression + - x86/CPU/AMD: Set the CPB bit unconditionally on F17h + - x86/boot/compressed/64: Do not read legacy ROM on EFI system + - tracing: Fix event filters and triggers to handle negative numbers + - xhci: tegra: Prevent error pointer dereference + - usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on + INTEL_SUNRISEPOINT_LP_XHCI + - applicom: Fix potential Spectre v1 vulnerabilities + - alpha: wire up io_pgetevents system call + - MIPS: irq: Allocate accurate order pages for irq stack + - aio: Fix locking in aio_poll() + - xtensa: fix get_wchan + - gnss: sirf: fix premature wakeup interrupt enable + - USB: serial: cp210x: fix GPIO in autosuspend + - Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK to + config" + - Revert "selftests: firmware: remove use of non-standard diff -Z option" + - selftests: firmware: fix verify_reqs() return value + - Bluetooth: btrtl: Restore old logic to assume firmware is already loaded + - Bluetooth: Fix locking in bt_accept_enqueue() for BH context + - Linux 5.0.1 + + * sky2 ethernet card doesn't work after returning from suspend + (LP: #1807259) // sky2 ethernet card link not up after suspend + (LP: #1809843) // Disco update: v5.0.1 upstream stable release + (LP: #1819515) + - sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 + + * tls selftest failures/hangs on i386 (LP: #1813607) + - [Config] CONFIG_TLS=n for i386 + + * CVE-2019-8980 + - exec: Fix mem leak in kernel_read_file + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Use 'ipproto ipv6-icmp' to match ICMPv6 headers + - [Config] enable nvidia build + - [Config] update gcc version to 8.3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: selftests: pmtu: disable accept_dad for tests" + + -- Thadeu Lima de Souza Cascardo Tue, 12 Mar 2019 16:15:44 -0300 + +linux (5.0.0-7.8) disco; urgency=medium + + * linux: 5.0.0-7.8 -proposed tracker (LP: #1818519) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * unnecessary request_queue freeze (LP: #1815733) + - block: avoid setting nr_requests to current value + - block: avoid setting none scheduler if it's already none + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on xfail + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0 + + -- Seth Forshee Mon, 04 Mar 2019 08:46:10 -0600 + +linux (5.0.0-6.7) disco; urgency=medium + + * linux: 5.0.0-6.7 -proposed tracker (LP: #1817585) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - [Packaging] resync getabis + + * installer does not support iSCSI iBFT (LP: #1817321) + - d-i: add iscsi_ibft to scsi-modules + + * Silent "Unknown key" message when pressing keyboard backlight hotkey + (LP: #1817063) + - platform/x86: dell-wmi: Ignore new keyboard backlight change event + + * Fix I219 doesn't get woken up after plugging ethernet cable (LP: #1817058) + - e1000e: Disable runtime PM on CNP+ + + * efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted (LP: #1814982) + - efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted + + * CVE-2019-3460 + - Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt + + * CVE-2019-3459 + - Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer + + * kernel net tls selftest fails on 5.0 (LP: #1816716) + - SAUCE: Revert "selftests/tls: Add test for recv(PEEK) spanning across + multiple records" + + * Please enable CONFIG_DMA_CMA=y on arm64 (LP: #1803206) + - [Config] annotations -- enforce CONFIG_DMA_CMA and update notes + + * [19.04 FEAT] [LS1801] PCI Virtual function enablement (LP: #1814684) + - s390/pci: map IOV resources + - s390/pci: improve bar check + + * glibc 2.28-0ubuntu1 ADT test failure with linux 5.0.0-1.2 (LP: #1813060) + - SAUCE: prevent a glibc test failure when looking for obsolete types on + headers + + * Miscellaneous Ubuntu changes + - [Config] Enforce CONFIG_ZCRYPT_MULTIDEVNODES in annotations + - SAUCE: selftests: pmtu: disable accept_dad for tests + - SAUCE: arm64: add kernel config option to lock down when in Secure Boot mode + - SAUCE: selftests: net: Make test for VXLAN underlay in non-default VRF an + expected failure + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc8 + + -- Seth Forshee Mon, 25 Feb 2019 09:37:36 -0600 + +linux (5.0.0-5.6) disco; urgency=medium + + * [ALSA] [PATCH] System76 darp5 and oryp5 fixups (LP: #1815831) + - ALSA: hda/realtek - Headset microphone and internal speaker support for + System76 oryp5 + + * Miscellaneous Ubuntu changes + - [Config] Fix aufs menus in annotations file + - [Config] CONFIG_SAMPLE_TRACE_PRINTK=m + - [Config] Update annotations based on configs + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc7 + + -- Seth Forshee Mon, 18 Feb 2019 10:04:11 +0100 + +linux (5.0.0-4.5) disco; urgency=medium + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [Packaging] Allow overlay of config annotations (LP: #1752072) + - [Packaging] config-check: Add an include directive + + * Miscellaneous Ubuntu changes + - hio -- stub out BIOVEC_PHYS_MERGEABLE for 4.20+ + - hio -- replace use of do_gettimeofday() + - hio -- part_round_stats() removed in 5.0 + - hio -- device_add_disk() grew a 'groups' argument in 4.20 + - enable hio build + - Revert "UBUNTU: [Packaging] autoreconstruct -- base tag is always primary + mainline version" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc6 + + -- Seth Forshee Tue, 12 Feb 2019 08:15:32 -0600 + +linux (5.0.0-3.4) disco; urgency=medium + + * CONFIG_TEST_BPF is disabled (LP: #1813955) + - [Config]: Reenable TEST_BPF + + * Ignore "incomplete report" from Elan touchpanels (LP: #1813733) + - HID: i2c-hid: Ignore input report if there's no data present on Elan + touchpanels + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: fix "from" match test in fib_rule_tests.sh + - [Config] CONFIG_PCMCIA=n for arm64 and s390x + - [Config] CONFIG_SERIAL_SC16IS7XX=n for s390x + - [Config] disable I2C TPM drivers for s390x + - [Config] CONFIG_RAPIDIO=n for s390x + - [Config] CONFIG_DMADEVICES=n for s390x + - [Config] disable gpio drivers for s390x + - [Config] CONFIG_SENSORS_OCC_P8_I2C=m for ppc64el + - [Config] disable I2C hardware drivers for s390x + - [Config] CONFIG_I3C=n for s390x + - [Config] CONFIG_SERIO=n for s390x + - [Config] disable misc drivers for s390x + - [Config] disable EEPROM drivers for s390x + - [Config] disable MFD drivers for s390x + - [Config] CONFIG_NVMEM=n for s390x + - [Config] CONFIG_MLXSW_I2C=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROCHIP=n for s390x + - [Config] CONFIG_PPP=n for s390x + - [Config] CONFIG_PCCARD=n for s390x + - [Config] CONFIG_PCI_MESON=y + - [Config] CONFIG_SCSI_MYRB=n for s390x + - [Config] CONFIG_REGULATOR=n for s390x + - [Config] CONFIG_ZIIRAVE_WATCHDOG=n for s390x + - [Config] CONFIG_NCSI_OEM_CMD_GET_MAC=y + - [Config] update annotations following config review + - [Packaging] remove handoff check for uefi signing + - [Packaging] decompress gzipped efi images in signing tarball + - vbox-update: allow leading whitespace when fixing up KERN_DIR + - ubuntu: vbox -- update to 6.0.4-dfsg-3 + - vbox: remove remount check in sf_read_super_aux() + - enable vbox build + - [Config] CONFIG_ANDROID_BINDER_DEVICES="" + - SAUCE: import aufs driver + - [Config]: Enable aufs + - [Config] relocate aufs annotations to menu + - [Config] remove unmatched configs from annotations + - [Config] fix up abi for removed modules + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - SAUCE: (efi-lockdown) Move EFI signature blob parser to shared location + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - [Config] (efi-lockdown) enable importing of efi certificates for module sig + verification + + * Miscellaneous upstream changes + - binder: fix CONFIG_ANDROID_BINDER_DEVICES + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc5 + + -- Seth Forshee Tue, 05 Feb 2019 14:26:12 -0600 + +linux (5.0.0-2.3) disco; urgency=medium + + * kernel oops in bcache module (LP: #1793901) + - SAUCE: bcache: never writeback a discard operation + + * Enable sound card power saving by default (LP: #1804265) + - [Config] CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: selftests: disable some failing networking tests" + - SAUCE: ashmem: turn into module + - SAUCE: binder: turn into module + - SAUCE: binder: give binder_alloc its own debug mask file + - [Config] enable binder and ashmem as modules + - SAUCE: selftests: net: replace AF_MAX with INT_MAX in socket.c + - SAUCE: selftests/ftrace: Fix tab expansion in trace_marker snapshot trigger + test + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc4 + + -- Seth Forshee Tue, 29 Jan 2019 06:57:32 -0600 + +linux (5.0.0-1.2) disco; urgency=medium + + * Fix non-working QCA Rome Bluetooth after S3 (LP: #1812812) + - USB: Add new USB LPM helpers + - USB: Consolidate LPM checks to avoid enabling LPM twice + + * bluetooth controller not detected with 4.15 kernel (LP: #1810797) + - SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK + - [Config] arm64: snapdragon: BT_QCOMSMD_HACK=y + + * [19.04 FEAT| Enable virtio-gpu for s390x (LP: #1799467) + - [Config] enable virtio-gpu for s390x + + * Crash on "ip link add foo type ipip" (LP: #1811803) + - SAUCE: fan: Fix NULL pointer dereference + + * Fix not working Goodix touchpad (LP: #1811929) + - HID: i2c-hid: Disable runtime PM on Goodix touchpad + + * Miscellaneous Ubuntu changes + - update dkms package versions + - enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc3 + + -- Seth Forshee Tue, 22 Jan 2019 13:56:17 -0600 + +linux (5.0.0-0.1) disco; urgency=medium + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms -- add per package post-process step + - [Packaging] dkms -- switch to a consistent build prefix length and strip + - [Packaging] nvidia -- build and sign nvidia packages and ship signatures + - [Packaging] nvidia -- make nvidia package version explicit + + * Add support for ALC3277 codec on new Dell edge gateways (LP: #1807334) + - [Config] CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m + + * RTL8822BE WiFi Disabled in Kernel 4.18.0-12 (LP: #1806472) + - [Config] CONFIG_RTLWIFI_DEBUG_ST=n + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + - SAUCE: import aufs driver + - update dkms package versions + - [Config] disable aufs config options + - [Config] disable nvidia build + - update dropped.txt + - [Packaging] disable nvidia dkms builds for mainline + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - [Config] set config options for efi lockdown + - Revert "UBUNTU: SAUCE: import aufs driver" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc2 + + -- Seth Forshee Thu, 17 Jan 2019 12:31:29 -0600 + +linux (5.0.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Wed, 16 Jan 2019 14:48:05 -0600 + +linux (4.20.0-2.3) disco; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.20 + + -- Seth Forshee Thu, 03 Jan 2019 12:11:43 -0600 + +linux (4.20.0-1.2) disco; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Power leakage at S5 with Qualcomm Atheros QCA9377 802.11ac Wireless Network + Adapter (LP: #1805607) + - SAUCE: ath10k: provide reset function for QCA9377 chip + + * zfs/spl build in conjunction with the kernel from DKMS source (LP: #1807378) + - [Packaging] dkms -- dkms package build packaging support + - [Packaging] dkms -- save build objects artifacts for validation + - [Packaging] dkms -- add general Built-Using: support + - [Packaging] simplify Provides comma handling + - [Packaging] zfs/spl -- remove packaging support for incorporated source + - [Packaging] zfs/spl -- remove incorporated source + - [Packaging] zfs/spl -- build via dkms + - [Packaging] zfs/spl -- make zfs package version explicit + - [Packaging] update-version-dkms -- sync archive versions to package + + * Miscellaneous Ubuntu changes + - [Packaging] update-version-dkms -- fix getting distrbution from changelog + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc6 + + -- Seth Forshee Tue, 11 Dec 2018 11:33:08 -0600 + +linux (4.20.0-0.1) disco; urgency=medium + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - Revert "ovl: relax permission checking on underlying layers" + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.22-dfsg-2 + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc5 + + -- Seth Forshee Fri, 07 Dec 2018 07:13:42 -0600 + +linux (4.20.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 06 Dec 2018 10:20:19 -0600 + +linux (4.19.0-8.9) disco; urgency=medium + + * linux: 4.19.0-8.9 -proposed tracker (LP: #1806952) + + * Workaround CSS timeout on AMD SNPS 3.0 xHC (LP: #1806838) + - xhci: workaround CSS timeout on AMD SNPS 3.0 xHC + + * Fix Intel I210 doesn't work when ethernet cable gets plugged (LP: #1806818) + - igb: Fix an issue that PME is not enabled during runtime suspend + + * The line-out on the Dell Dock station can't work (LP: #1806532) + - ALSA: usb-audio: Add vendor and product name for Dell WD19 Dock + + * CVE-2018-19407 + - KVM: X86: Fix scan ioapic use-before-initialization + + * PC SN720 NVMe WDC 256GB consumes more power in S2Idle than during long idle + (LP: #1805775) + - SAUCE: pci/nvme: prevent WDC PC SN720 NVMe from entering D3 and being + disabled + + * Disco update: 4.19.6 upstream stable release (LP: #1806909) + - HID: steam: remove input device when a hid client is running. + - efi/libstub: arm: support building with clang + - usb: core: Fix hub port connection events lost + - usb: dwc3: gadget: fix ISOC TRB type on unaligned transfers + - usb: dwc3: gadget: Properly check last unaligned/zero chain TRB + - usb: dwc3: core: Clean up ULPI device + - usb: dwc3: Fix NULL pointer exception in dwc3_pci_remove() + - xhci: Fix leaking USB3 shared_hcd at xhci removal + - xhci: handle port status events for removed USB3 hcd + - xhci: Add check for invalid byte size error when UAS devices are connected. + - usb: xhci: fix uninitialized completion when USB3 port got wrong status + - usb: xhci: fix timeout for transition from RExit to U0 + - xhci: Add quirk to workaround the errata seen on Cavium Thunder-X2 Soc + - usb: xhci: Prevent bus suspend if a port connect change or polling state is + detected + - ALSA: oss: Use kvzalloc() for local buffer allocations + - MAINTAINERS: Add Sasha as a stable branch maintainer + - Documentation/security-bugs: Clarify treatment of embargoed information + - Documentation/security-bugs: Postpone fix publication in exceptional cases + - mmc: sdhci-pci: Try "cd" for card-detect lookup before using NULL + - mmc: sdhci-pci: Workaround GLK firmware failing to restore the tuning value + - gpio: don't free unallocated ida on gpiochip_add_data_with_key() error path + - iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE + - iwlwifi: mvm: support sta_statistics() even on older firmware + - iwlwifi: mvm: fix regulatory domain update when the firmware starts + - iwlwifi: mvm: don't use SAR Geo if basic SAR is not used + - brcmfmac: fix reporting support for 160 MHz channels + - opp: ti-opp-supply: Dynamically update u_volt_min + - opp: ti-opp-supply: Correct the supply in _get_optimal_vdd_voltage call + - tools/power/cpupower: fix compilation with STATIC=true + - v9fs_dir_readdir: fix double-free on p9stat_read error + - selinux: Add __GFP_NOWARN to allocation at str_read() + - Input: synaptics - avoid using uninitialized variable when probing + - bfs: add sanity check at bfs_fill_super() + - sctp: clear the transport of some out_chunk_list chunks in + sctp_assoc_rm_peer + - gfs2: Don't leave s_fs_info pointing to freed memory in init_sbd + - llc: do not use sk_eat_skb() + - mm: don't warn about large allocations for slab + - mm/memory.c: recheck page table entry with page table lock held + - tcp: do not release socket ownership in tcp_close() + - drm/fb-helper: Blacklist writeback when adding connectors to fbdev + - drm/amdgpu: Add missing firmware entry for HAINAN + - drm/vc4: Set ->legacy_cursor_update to false when doing non-async updates + - drm/amdgpu: Fix oops when pp_funcs->switch_power_profile is unset + - drm/i915: Disable LP3 watermarks on all SNB machines + - drm/ast: change resolution may cause screen blurred + - drm/ast: fixed cursor may disappear sometimes + - drm/ast: Remove existing framebuffers before loading driver + - can: flexcan: Unlock the MB unconditionally + - can: dev: can_get_echo_skb(): factor out non sending code to + __can_get_echo_skb() + - can: dev: __can_get_echo_skb(): replace struct can_frame by canfd_frame to + access frame length + - can: dev: __can_get_echo_skb(): Don't crash the kernel if can_priv::echo_skb + is accessed out of bounds + - can: dev: __can_get_echo_skb(): print error message, if trying to echo non + existing skb + - can: rx-offload: introduce can_rx_offload_get_echo_skb() and + can_rx_offload_queue_sorted() functions + - can: rx-offload: rename can_rx_offload_irq_queue_err_skb() to + can_rx_offload_queue_tail() + - can: flexcan: use can_rx_offload_queue_sorted() for flexcan_irq_bus_*() + - can: flexcan: handle tx-complete CAN frames via rx-offload infrastructure + - can: raw: check for CAN FD capable netdev in raw_sendmsg() + - can: hi311x: Use level-triggered interrupt + - can: flexcan: Always use last mailbox for TX + - can: flexcan: remove not needed struct flexcan_priv::tx_mb and struct + flexcan_priv::tx_mb_idx + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - IB/hfi1: Eliminate races in the SDMA send error path + - fsnotify: generalize handling of extra event flags + - fanotify: fix handling of events on child sub-directory + - pinctrl: meson: fix pinconf bias disable + - pinctrl: meson: fix gxbb ao pull register bits + - pinctrl: meson: fix gxl ao pull register bits + - pinctrl: meson: fix meson8 ao pull register bits + - pinctrl: meson: fix meson8b ao pull register bits + - tools/testing/nvdimm: Fix the array size for dimm devices. + - scsi: lpfc: fix remoteport access + - scsi: hisi_sas: Remove set but not used variable 'dq_list' + - KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE + - cpufreq: imx6q: add return value check for voltage scale + - rtc: cmos: Do not export alarm rtc_ops when we do not support alarms + - rtc: pcf2127: fix a kmemleak caused in pcf2127_i2c_gather_write + - crypto: simd - correctly take reqsize of wrapped skcipher into account + - floppy: fix race condition in __floppy_read_block_0() + - powerpc/io: Fix the IO workarounds code to work with Radix + - sched/fair: Fix cpu_util_wake() for 'execl' type workloads + - perf/x86/intel/uncore: Add more IMC PCI IDs for KabyLake and CoffeeLake CPUs + - block: copy ioprio in __bio_clone_fast() and bounce + - SUNRPC: Fix a bogus get/put in generic_key_to_expire() + - riscv: add missing vdso_install target + - RISC-V: Silence some module warnings on 32-bit + - drm/amdgpu: fix bug with IH ring setup + - kdb: Use strscpy with destination buffer size + - NFSv4: Fix an Oops during delegation callbacks + - powerpc/numa: Suppress "VPHN is not supported" messages + - efi/arm: Revert deferred unmap of early memmap mapping + - z3fold: fix possible reclaim races + - mm, memory_hotplug: check zone_movable in has_unmovable_pages + - tmpfs: make lseek(SEEK_DATA/SEK_HOLE) return ENXIO with a negative offset + - mm, page_alloc: check for max order in hot path + - dax: Avoid losing wakeup in dax_lock_mapping_entry + - include/linux/pfn_t.h: force '~' to be parsed as an unary operator + - tty: wipe buffer. + - tty: wipe buffer if not echoing data + - gfs2: Fix iomap buffer head reference counting bug + - rcu: Make need_resched() respond to urgent RCU-QS needs + - media: ov5640: Re-work MIPI startup sequence + - media: ov5640: Fix timings setup code + - media: ov5640: fix exposure regression + - media: ov5640: fix auto gain & exposure when changing mode + - media: ov5640: fix wrong binning value in exposure calculation + - media: ov5640: fix auto controls values when switching to manual mode + - Linux 4.19.6 + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] limit preparation to linux-libc-dev in headers + - [Packaging] commonise debhelper invocation + - [Packaging] ABI -- accumulate abi information at the end of the build + - [Packaging] buildinfo -- add basic build information + - [Packaging] buildinfo -- add firmware information to the flavour ABI + - [Packaging] buildinfo -- add compiler information to the flavour ABI + - [Packaging] buildinfo -- add buildinfo support to getabis + - [Packaging] getabis -- handle all known package combinations + - [Packaging] getabis -- support parsing a simple version + + * linux packages should own /usr/lib/linux/triggers (LP: #1770256) + - [Packaging] own /usr/lib/linux/triggers + + * Miscellaneous upstream changes + - blk-mq: fix corruption with direct issue + + -- Seth Forshee Wed, 05 Dec 2018 09:18:30 -0600 + +linux (4.19.0-7.8) disco; urgency=medium + + * linux: 4.19.0-7.8 -proposed tracker (LP: #1805465) + + * Fix and issue that LG I2C touchscreen stops working after reboot + (LP: #1805085) + - HID: i2c-hid: Disable runtime PM for LG touchscreen + + * click/pop noise in the headphone on several lenovo laptops (LP: #1805079) // + click/pop noise in the headphone on several lenovo laptops (LP: #1805079) + - ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops + + * Regression: hinic performance degrades over time (LP: #1805248) + - Revert "net-next/hinic: add checksum offload and TSO support" + + * Disco update: 4.19.5 upstream stable release (LP: #1805461) + - drm/i915: Replace some PAGE_SIZE with I915_GTT_PAGE_SIZE + - cifs: don't dereference smb_file_target before null check + - cifs: fix return value for cifs_listxattr + - arm64: kprobe: make page to RO mode when allocate it + - block: brd: associate with queue until adding disk + - net: hns3: bugfix for rtnl_lock's range in the hclgevf_reset() + - net: hns3: bugfix for rtnl_lock's range in the hclge_reset() + - net: hns3: bugfix for handling mailbox while the command queue reinitialized + - net: hns3: bugfix for the initialization of command queue's spin lock + - ixgbe: fix MAC anti-spoofing filter after VFLR + - reiserfs: propagate errors from fill_with_dentries() properly + - hfs: prevent btree data loss on root split + - hfsplus: prevent btree data loss on root split + - perf unwind: Take pgoff into account when reporting elf to libdwfl + - um: Give start_idle_thread() a return code + - drm/edid: Add 6 bpc quirk for BOE panel. + - afs: Handle EIO from delivery function + - platform/x86: intel_telemetry: report debugfs failure + - clk: fixed-rate: fix of_node_get-put imbalance + - perf symbols: Set PLT entry/header sizes properly on Sparc + - fs/exofs: fix potential memory leak in mount option parsing + - clk: samsung: exynos5420: Enable PERIS clocks for suspend + - apparmor: Fix uninitialized value in aa_split_fqname + - x86/earlyprintk: Add a force option for pciserial device + - platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 + - clk: meson-axg: pcie: drop the mpll3 clock parent + - arm64: percpu: Initialize ret in the default case + - clk: meson: clk-pll: drop CLK_GET_RATE_NOCACHE where unnecessary + - clk: renesas: r9a06g032: Fix UART34567 clock rate + - clk: ti: fix OF child-node lookup + - serial: sh-sci: Fix receive on SCIFA/SCIFB variants with DMA + - netfilter: ipv6: fix oops when defragmenting locally generated fragments + - netfilter: bridge: define INT_MIN & INT_MAX in userspace + - s390/decompressor: add missing FORCE to build targets + - s390/vdso: add missing FORCE to build targets + - HID: i2c-hid: Add a small delay after sleep command for Raydium touchpanel + - Revert "HID: add NOGET quirk for Eaton Ellipse MAX UPS" + - HID: alps: allow incoming reports when only the trackstick is opened + - Revert "netfilter: nft_numgen: add map lookups for numgen random operations" + - netfilter: ipset: list:set: Decrease refcount synchronously on deletion and + replace + - netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net + - netfilter: ipset: fix ip_set_list allocation failure + - s390/mm: fix mis-accounting of pgtable_bytes + - s390/mm: Fix ERROR: "__node_distance" undefined! + - bpf: fix bpf_prog_get_info_by_fd to return 0 func_lens for unpriv + - netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() + - netfilter: xt_IDLETIMER: add sysfs filename checking routine + - netfilter: ipset: Fix calling ip_set() macro at dumping + - netfilter: nft_compat: ebtables 'nat' table is normal chain type + - s390/qeth: fix HiperSockets sniffer + - s390/qeth: unregister netdevice only when registered + - net: hns3: Fix for out-of-bounds access when setting pfc back pressure + - hwmon: (ibmpowernv) Remove bogus __init annotations + - ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node + - ARM: dts: fsl: Fix improperly quoted stdout-path values + - Revert "drm/exynos/decon5433: implement frame counter" + - arm64: dts: renesas: r8a7795: add missing dma-names on hscif2 + - arm64: dts: renesas: condor: switch from EtherAVB to GEther + - xen/grant-table: Fix incorrect gnttab_dma_free_pages() pr_debug message + - clk: fixed-factor: fix of_node_get-put imbalance + - mtd: nand: Fix nanddev_pos_next_page() kernel-doc header + - lib/raid6: Fix arm64 test build + - drm/amd/display: Stop leaking planes + - block: Clear kernel memory before copying to user + - drm/amd/display: Drop reusing drm connector for MST + - drm/amd/amdgpu/dm: Fix dm_dp_create_fake_mst_encoder() + - s390/perf: Change CPUM_CF return code in event init function + - ceph: quota: fix null pointer dereference in quota check + - of/device: Really only set bus DMA mask when appropriate + - nvme: make sure ns head inherits underlying device limits + - i2c: omap: Enable for ARCH_K3 + - i2c: qcom-geni: Fix runtime PM mismatch with child devices + - sched/core: Take the hotplug lock in sched_init_smp() + - perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so + - perf tools: Do not zero sample_id_all for group members + - ice: Fix dead device link issue with flow control + - ice: Fix the bytecount sent to netdev_tx_sent_queue + - ice: Change req_speeds to be u16 + - i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features + - qed: Fix memory/entry leak in qed_init_sp_request() + - qed: Fix blocking/unlimited SPQ entries leak + - qed: Fix SPQ entries not returned to pool in error flows + - qed: Fix potential memory corruption + - net: stmmac: Fix RX packet size > 8191 + - net: aquantia: fix potential IOMMU fault after driver unbind + - net: aquantia: fixed enable unicast on 32 macvlan + - net: aquantia: invalid checksumm offload implementation + - kbuild: deb-pkg: fix too low build version number + - Revert "scripts/setlocalversion: git: Make -dirty check more robust" + - SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() + - x86/mm: Move LDT remap out of KASLR region on 5-level paging + - x86/ldt: Unmap PTEs for the slot before freeing LDT pages + - x86/ldt: Remove unused variable in map_ldt_struct() + - media: v4l: event: Add subscription to list before calling "add" operation + - MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver + - RISC-V: Fix raw_copy_{to,from}_user() + - uio: Fix an Oops on load + - ALSA: hda/realtek - Add quirk entry for HP Pavilion 15 + - ALSA: hda/ca0132 - Call pci_iounmap() instead of iounmap() + - can: kvaser_usb: Fix accessing freed memory in kvaser_usb_start_xmit() + - can: kvaser_usb: Fix potential uninitialized variable use + - usb: cdc-acm: add entry for Hiro (Conexant) modem + - USB: Wait for extra delay time after USB_PORT_FEAT_RESET for quirky hub + - usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB + - misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data + - USB: misc: appledisplay: add 20" Apple Cinema Display + - gnss: serial: fix synchronous write timeout + - gnss: sirf: fix synchronous write timeout + - mtd: rawnand: atmel: fix OF child-node lookup + - drivers/misc/sgi-gru: fix Spectre v1 vulnerability + - ACPI / platform: Add SMB0001 HID to forbidden_id_list + - HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges + - HID: Add quirk for Primax PIXART OEM mice + - HID: Add quirk for Microsoft PIXART OEM mouse + - libceph: fall back to sendmsg for slab pages + - mt76x0: run vco calibration for each channel configuration + - Linux 4.19.5 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: Build signed kernels for arm64" + + -- Seth Forshee Tue, 27 Nov 2018 10:38:34 -0600 + +linux (4.19.0-6.7) disco; urgency=medium + + * linux: 4.19.0-6.7 -proposed tracker (LP: #1805195) + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Add pointstick support for Cirque Touchpad (LP: #1805081) + - HID: multitouch: Add pointstick support for Cirque Touchpad + + * Power consumption during s2idle is higher than long idle (Intel SSDPEKKF) + (LP: #1804588) + - SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: 4.19.4 upstream stable release (LP: #1805159) + - flow_dissector: do not dissect l4 ports for fragments + - ibmvnic: fix accelerated VLAN handling + - ip_tunnel: don't force DF when MTU is locked + - ipv6: fix a dst leak when removing its exception + - ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF + - net: bcmgenet: protect stop from timeout + - net-gro: reset skb->pkt_type in napi_reuse_skb() + - sctp: not allow to set asoc prsctp_enable by sockopt + - tcp: Fix SOF_TIMESTAMPING_RX_HARDWARE to use the latest timestamp during TCP + coalescing + - tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths + - tipc: don't assume linear buffer when reading ancillary data + - tipc: fix lockdep warning when reinitilaizing sockets + - tuntap: fix multiqueue rx + - net: systemport: Protect stop from timeout + - net/sched: act_pedit: fix memory leak when IDR allocation fails + - net: sched: cls_flower: validate nested enc_opts_policy to avoid warning + - tipc: fix link re-establish failure + - net/mlx5e: Don't match on vlan non-existence if ethertype is wildcarded + - net/mlx5e: Claim TC hw offloads support only under a proper build config + - net/mlx5e: Adjust to max number of channles when re-attaching + - net/mlx5e: RX, verify received packet size in Linear Striding RQ + - Revert "sctp: remove sctp_transport_pmtu_check" + - net/mlx5e: Always use the match level enum when parsing TC rule match + - net/mlx5e: Fix selftest for small MTUs + - net/mlx5e: Removed unnecessary warnings in FEC caps query + - inet: frags: better deal with smp races + - l2tp: fix a sock refcnt leak in l2tp_tunnel_register + - net/mlx5: IPSec, Fix the SA context hash key + - net/mlx5e: IPoIB, Reset QP after channels are closed + - net: dsa: mv88e6xxx: Fix clearing of stats counters + - net: phy: realtek: fix RTL8201F sysfs name + - sctp: define SCTP_SS_DEFAULT for Stream schedulers + - net: qualcomm: rmnet: Fix incorrect assignment of real_dev + - net: dsa: microchip: initialize mutex before use + - sctp: fix strchange_flags name for Stream Change Event + - net: phy: mdio-gpio: Fix working over slow can_sleep GPIOs + - sctp: not increase stream's incnt before sending addstrm_in request + - mlxsw: spectrum: Fix IP2ME CPU policer configuration + - net: smsc95xx: Fix MTU range + - rxrpc: Fix lockup due to no error backoff after ack transmit error + - usbnet: smsc95xx: disable carrier check while suspending + - Revert "x86/speculation: Enable cross-hyperthread spectre v2 STIBP + mitigation" + - Linux 4.19.4 + + * Disco update: 4.19.3 upstream stable release (LP: #1805158) + - powerpc/traps: restore recoverability of machine_check interrupts + - powerpc/64/module: REL32 relocation range check + - powerpc/mm: Fix page table dump to work on Radix + - powerpc/mm: fix always true/false warning in slice.c + - drm/amd/display: fix bug of accessing invalid memory + - Input: wm97xx-ts - fix exit path + - powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS + - powerpc/eeh: Fix possible null deref in eeh_dump_dev_log() + - tty: check name length in tty_find_polling_driver() + - tracing/kprobes: Check the probe on unloaded module correctly + - drm/nouveau/secboot/acr: fix memory leak + - drm/amdgpu/powerplay: fix missing break in switch statements + - ARM: imx_v6_v7_defconfig: Select CONFIG_TMPFS_POSIX_ACL + - powerpc/nohash: fix undefined behaviour when testing page size support + - drm/msm/gpu: fix parameters in function msm_gpu_crashstate_capture + - drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type' + - drm/msm: dpu: Allow planes to extend past active display + - powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak + - drm/omap: fix memory barrier bug in DMM driver + - drm/amd/display: Raise dispclk value for dce120 by 15% + - drm/amd/display: fix gamma not being applied + - drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer + - media: pci: cx23885: handle adding to list failure + - media: coda: don't overwrite h.264 profile_idc on decoder instance + - MIPS: kexec: Mark CPU offline before disabling local IRQ + - powerpc/boot: Ensure _zimage_start is a weak symbol + - powerpc/memtrace: Remove memory in chunks + - MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS + - staging: erofs: fix a missing endian conversion + - serial: 8250_of: Fix for lack of interrupt support + - sc16is7xx: Fix for multi-channel stall + - media: tvp5150: fix width alignment during set_selection() + - powerpc/selftests: Wait all threads to join + - staging:iio:ad7606: fix voltage scales + - drm: rcar-du: Update Gen3 output limitations + - drm/amdgpu: Fix SDMA TO after GPU reset v3 + - staging: most: video: fix registration of an empty comp core_component + - 9p locks: fix glock.client_id leak in do_lock + - udf: Prevent write-unsupported filesystem to be remounted read-write + - ARM: dts: imx6ull: keep IMX6UL_ prefix for signals on both i.MX6UL and + i.MX6ULL + - media: ov5640: fix mode change regression + - 9p: clear dangling pointers in p9stat_free + - drm/amdgpu: fix integer overflow test in amdgpu_bo_list_create() + - media: ov5640: fix restore of last mode set + - cdrom: fix improper type cast, which can leat to information leak. + - ovl: fix error handling in ovl_verify_set_fh() + - ovl: fix recursive oi->lock in ovl_link() + - ovl: check whiteout in ovl_create_over_whiteout() + - ovl: automatically enable redirect_dir on metacopy=on + - serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout + - scsi: qla2xxx: Fix incorrect port speed being set for FC adapters + - scsi: qla2xxx: Fix process response queue for ISP26XX and above + - scsi: qla2xxx: Remove stale debug trace message from tcm_qla2xxx + - scsi: qla2xxx: Fix early srb free on abort + - scsi: qla2xxx: shutdown chip if reset fail + - scsi: qla2xxx: Reject bsg request if chip is down. + - scsi: qla2xxx: Fix re-using LoopID when handle is in use + - scsi: qla2xxx: Fix for double free of SRB structure + - scsi: qla2xxx: Fix NVMe session hang on unload + - scsi: qla2xxx: Fix NVMe Target discovery + - scsi: qla2xxx: Fix duplicate switch database entries + - scsi: qla2xxx: Fix driver hang when FC-NVMe LUNs are configured + - vfs: fix FIGETBSZ ioctl on an overlayfs file + - fuse: Fix use-after-free in fuse_dev_do_read() + - fuse: Fix use-after-free in fuse_dev_do_write() + - fuse: fix blocked_waitq wakeup + - fuse: set FR_SENT while locked + - drm/msm: fix OF child-node lookup + - arm64: dts: stratix10: Support Ethernet Jumbo frame + - arm64: dts: stratix10: fix multicast filtering + - clk: meson-gxbb: set fclk_div3 as CLK_IS_CRITICAL + - clk: meson: axg: mark fdiv2 and fdiv3 as critical + - zram: close udev startup race condition as default groups + - MIPS: Loongson-3: Fix CPU UART irq delivery problem + - MIPS: Loongson-3: Fix BRIDGE irq delivery problem + - xtensa: add NOTES section to the linker script + - xtensa: make sure bFLT stack is 16 byte aligned + - xtensa: fix boot parameters address translation + - um: Drop own definition of PTRACE_SYSEMU/_SINGLESTEP + - clk: s2mps11: Fix matching when built as module and DT node contains + compatible + - clk: at91: Fix division by zero in PLL recalc_rate() + - clk: sunxi-ng: h6: fix bus clocks' divider position + - clk: rockchip: fix wrong mmc sample phase shift for rk3328 + - clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call + - libceph: bump CEPH_MSG_MAX_DATA_LEN + - Revert "ceph: fix dentry leak in splice_dentry()" + - thermal: core: Fix use-after-free in thermal_cooling_device_destroy_sysfs + - mach64: fix display corruption on big endian machines + - mach64: fix image corruption due to reading accelerator registers + - acpi/nfit, x86/mce: Handle only uncorrectable machine checks + - acpi/nfit, x86/mce: Validate a MCE's address before using it + - acpi, nfit: Fix ARS overflow continuation + - reset: hisilicon: fix potential NULL pointer dereference + - crypto: hisilicon - Fix NULL dereference for same dst and src + - crypto: hisilicon - Fix reference after free of memories on error path + - vhost/scsi: truncate T10 PI iov_iter to prot_bytes + - scsi: qla2xxx: Initialize port speed to avoid setting lower speed + - SCSI: fix queue cleanup race before queue initialization is done + - Revert "powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for + CONFIG_SWAP" + - soc: ti: QMSS: Fix usage of irq_set_affinity_hint + - ocfs2: fix a misuse a of brelse after failing ocfs2_check_dir_entry + - ocfs2: free up write context when direct IO failed + - mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings + - memory_hotplug: cond_resched in __remove_pages + - netfilter: conntrack: fix calculation of next bucket number in early_drop + - ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm + - bonding/802.3ad: fix link_failure_count tracking + - mtd: spi-nor: cadence-quadspi: Return error code in + cqspi_direct_read_execute() + - mtd: nand: Fix nanddev_neraseblocks() + - mtd: docg3: don't set conflicting BCH_CONST_PARAMS option + - hwmon: (core) Fix double-free in __hwmon_device_register() + - perf cs-etm: Correct CPU mode for samples + - perf stat: Handle different PMU names with common prefix + - perf callchain: Honour the ordering of PERF_CONTEXT_{USER,KERNEL,etc} + - perf intel-pt/bts: Calculate cpumode for synthesized samples + - perf intel-pt: Insert callchain context into synthesized callchains + - of, numa: Validate some distance map rules + - x86/cpu/vmware: Do not trace vmware_sched_clock() + - x86/hyper-v: Enable PIT shutdown quirk + - termios, tty/tty_baudrate.c: fix buffer overrun + - arch/alpha, termios: implement BOTHER, IBSHIFT and termios2 + - watchdog/core: Add missing prototypes for weak functions + - btrfs: fix pinned underflow after transaction aborted + - Btrfs: fix missing data checksums after a ranged fsync (msync) + - Btrfs: fix cur_offset in the error case for nocow + - Btrfs: fix infinite loop on inode eviction after deduplication of eof block + - Btrfs: fix data corruption due to cloning of eof block + - btrfs: tree-checker: Fix misleading group system information + - clockevents/drivers/i8253: Add support for PIT shutdown quirk + - ext4: add missing brelse() update_backups()'s error path + - ext4: add missing brelse() in set_flexbg_block_bitmap()'s error path + - ext4: add missing brelse() add_new_gdb_meta_bg()'s error path + - ext4: avoid potential extra brelse in setup_new_flex_group_blocks() + - ext4: missing !bh check in ext4_xattr_inode_write() + - ext4: fix possible inode leak in the retry loop of ext4_resize_fs() + - ext4: avoid buffer leak on shutdown in ext4_mark_iloc_dirty() + - ext4: avoid buffer leak in ext4_orphan_add() after prior errors + - ext4: fix missing cleanup if ext4_alloc_flex_bg_array() fails while resizing + - ext4: avoid possible double brelse() in add_new_gdb() on error path + - ext4: fix possible leak of sbi->s_group_desc_leak in error path + - ext4: fix possible leak of s_journal_flag_rwsem in error path + - ext4: fix buffer leak in ext4_xattr_get_block() on error path + - ext4: release bs.bh before re-using in ext4_xattr_block_find() + - ext4: fix buffer leak in ext4_xattr_move_to_block() on error path + - ext4: fix buffer leak in ext4_expand_extra_isize_ea() on error path + - ext4: fix buffer leak in __ext4_read_dirblock() on error path + - mount: Prevent MNT_DETACH from disconnecting locked mounts + - mnt: fix __detach_mounts infinite loop + - uapi: fix linux/kfd_ioctl.h userspace compilation errors + - ARM: cpuidle: Don't register the driver when back-end init returns -ENXIO + - kdb: use correct pointer when 'btc' calls 'btt' + - kdb: print real address of pointers instead of hashed addresses + - sunrpc: correct the computation for page_ptr when truncating + - NFSv4: Don't exit the state manager without clearing + NFS4CLNT_MANAGER_RUNNING + - nfsd: COPY and CLONE operations require the saved filehandle to be set + - rtc: hctosys: Add missing range error reporting + - fuse: fix use-after-free in fuse_direct_IO() + - fuse: fix leaked notify reply + - fuse: fix possibly missed wake-up after abort + - selinux: check length properly in SCTP bind hook + - gfs2: Put bitmap buffers in put_super + - gfs2: Fix metadata read-ahead during truncate (2) + - libata: blacklist SAMSUNG MZ7TD256HAFV-000L9 SSD + - crypto: user - fix leaking uninitialized memory to userspace + - lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn + - hugetlbfs: fix kernel BUG at fs/hugetlbfs/inode.c:444! + - mm/swapfile.c: use kvzalloc for swap_info_struct allocation + - efi/arm/libstub: Pack FDT after populating it + - mm: don't reclaim inodes with many attached pages + - scripts/spdxcheck.py: make python3 compliant + - drm/rockchip: Allow driver to be shutdown on reboot/kexec + - drm/amdgpu: Fix typo in amdgpu_vmid_mgr_init + - drm/amdgpu: add missing CHIP_HAINAN in amdgpu_ucode_get_load_type + - drm/amdgpu: Suppress keypresses from ACPI_VIDEO events + - drm/nouveau: Check backlight IDs are >= 0, not > 0 + - drm/nouveau: Fix nv50_mstc->best_encoder() + - drm/amd/powerplay: Enable/Disable NBPSTATE on On/OFF of UVD + - drm/etnaviv: fix bogus fence complete check in timeout handler + - drm/dp_mst: Check if primary mstb is null + - drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003) + - drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit + panel's native mode + - drm/i915: Use the correct crtc when sanitizing plane mapping + - drm/i915: Restore vblank interrupts earlier + - drm/i915: Don't unset intel_connector->mst_port + - drm/i915: Skip vcpi allocation for MSTB ports that are gone + - drm/i915: Large page offsets for pread/pwrite + - drm/i915/dp: Fix link retraining comment in intel_dp_long_pulse() + - drm/i915/dp: Restrict link retrain workaround to external monitors + - drm/i915/icl: Fix the macros for DFLEXDPMLE register bits + - drm/i915/hdmi: Add HDMI 2.0 audio clock recovery N values + - drm/i915: Mark up GTT sizes as u64 + - drm/i915: Fix error handling for the NV12 fb dimensions check + - drm/i915: Fix ilk+ watermarks when disabling pipes + - drm/i915: Compare user's 64b GTT offset even on 32b + - drm/i915: Don't oops during modeset shutdown after lpe audio deinit + - drm/i915: Mark pin flags as u64 + - drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5 + - drm/i915/execlists: Force write serialisation into context image vs + execution + - drm/i915: Fix possible race in intel_dp_add_mst_connector() + - drm/i915: Fix NULL deref when re-enabling HPD IRQs on systems with MST + - drm/i915: Fix hpd handling for pins with two encoders + - CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM + - Revert "ACPICA: AML interpreter: add region addresses in global list during + initialization" + - Linux 4.19.3 + + * glibc 2.28-0ubuntu1 ADT test failure with linux 4.19.0-5.6 (LP: #1805154) + - SAUCE: Revert "x86: vdso: Use $LD instead of $CC to link" + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.12-1ubuntu1, zfs to 0.7.12-1ubuntu1 + + -- Seth Forshee Mon, 26 Nov 2018 11:44:00 -0600 + +linux (4.19.0-5.6) disco; urgency=medium + + * crash in ENA driver on removing an interface (LP: #1802341) + - SAUCE: net: ena: fix crash during ena_remove() + + * Ubuntu 18.04.1 - [s390x] Kernel panic while stressing network bonding + (LP: #1797367) + - s390/qeth: sanitize strings in debug messages + + * Disco update: 4.19.2 upstream stable release (LP: #1803410) + - bpf: fix partial copy of map_ptr when dst is scalar + - MIPS: VDSO: Reduce VDSO_RANDOMIZE_SIZE to 64MB for 64bit + - gpio: mxs: Get rid of external API call + - mtd: rawnand: marvell: fix the IRQ handler complete() condition + - mtd: maps: gpio-addr-flash: Fix ioremapped size + - mtd: spi-nor: fsl-quadspi: fix read error for flash size larger than 16MB + - mtd: spi-nor: intel-spi: Add support for Intel Ice Lake SPI serial flash + - mtd: spi-nor: fsl-quadspi: Don't let -EINVAL on the bus + - spi: spi-mem: Adjust op len based on message/transfer size limitations + - spi: bcm-qspi: switch back to reading flash using smaller chunks + - spi: bcm-qspi: fix calculation of address length + - bcache: trace missed reading by cache_missed + - bcache: fix ioctl in flash device + - bcache: correct dirty data statistics + - bcache: fix miss key refill->end in writeback + - hwmon: (pmbus) Fix page count auto-detection. + - jffs2: free jffs2_sb_info through jffs2_kill_sb() + - block: setup bounce bio_sets properly + - block: make sure discard bio is aligned with logical block size + - block: make sure writesame bio is aligned with logical block size + - cpufreq: conservative: Take limits changes into account properly + - dma-mapping: fix panic caused by passing empty cma command line argument + - pcmcia: Implement CLKRUN protocol disabling for Ricoh bridges + - ACPI / OSL: Use 'jiffies' as the time bassis for acpi_os_get_timer() + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - ACPICA: AML Parser: fix parse loop to correctly skip erroneous extended + opcodes + - acpi, nfit: Fix Address Range Scrub completion tracking + - kprobes/x86: Use preempt_enable() in optimized_callback() + - mailbox: PCC: handle parse error + - parisc: Fix address in HPMC IVA + - parisc: Fix map_pages() to not overwrite existing pte entries + - parisc: Fix exported address of os_hpmc handler + - ALSA: hda - Add quirk for ASUS G751 laptop + - ALSA: hda - Fix headphone pin config for ASUS G751 + - ALSA: hda - Add mic quirk for the Lenovo G50-30 (17aa:3905) + - ALSA: hda: Add 2 more models to the power_save blacklist + - ALSA: ca0106: Disable IZD on SB0570 DAC to fix audio pops + - ALSA: hda - Fix incorrect clearance of thinkpad_acpi hooks + - x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation + - x86/xen: Fix boot loader version reported for PVH guests + - x86/corruption-check: Fix panic in memory_corruption_check() when boot + option without value is provided + - x86/kvm/nVMX: allow bare VMXON state migration + - x86/mm/pat: Disable preemption around __flush_tlb_all() + - x86/numa_emulation: Fix uniform-split numa emulation + - ARM: dts: exynos: Disable pull control for MAX8997 interrupts on Origen + - net: socionext: Reset tx queue in ndo_stop + - net: loopback: clear skb->tstamp before netif_rx() + - locking/lockdep: Fix debug_locks off performance problem + - netfilter: xt_nat: fix DNAT target for shifted portmap ranges + - ataflop: fix error handling during setup + - swim: fix cleanup on setup error + - arm64: cpufeature: ctr: Fix cpu capability check for late CPUs + - hv_netvsc: fix vf serial matching with pci slot info + - nfp: devlink port split support for 1x100G CXP NIC + - tun: Consistently configure generic netdev params via rtnetlink + - s390/sthyi: Fix machine name validity indication + - hwmon: (pwm-fan) Set fan speed to 0 on suspend + - lightnvm: pblk: fix race on sysfs line state + - lightnvm: pblk: fix two sleep-in-atomic-context bugs + - lightnvm: pblk: fix race condition on metadata I/O + - spi: spi-ep93xx: Use dma_data_direction for ep93xx_spi_dma_{finish,prepare} + - perf tools: Free temporary 'sys' string in read_event_files() + - perf tools: Cleanup trace-event-info 'tdata' leak + - perf tools: Free 'printk' string in parse_ftrace_printk() + - perf strbuf: Match va_{add,copy} with va_end + - cpupower: Fix coredump on VMWare + - bcache: Populate writeback_rate_minimum attribute + - mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 + - sdhci: acpi: add free_slot callback + - mtd: rawnand: denali: set SPARE_AREA_SKIP_BYTES register to 8 if unset + - iwlwifi: pcie: avoid empty free RB queue + - iwlwifi: mvm: clear HW_RESTART_REQUESTED when stopping the interface + - iwlwifi: mvm: check for n_profiles validity in EWRD ACPI + - x86/olpc: Indicate that legacy PC XO-1 platform should not register RTC + - wlcore: Fix BUG with clear completion on timeout + - ACPI/PPTT: Handle architecturally unknown cache types + - ACPI / PM: LPIT: Register sysfs attributes based on FADT + - ACPI / processor: Fix the return value of acpi_processor_ids_walk() + - cpufreq: dt: Try freeing static OPPs only if we have added them + - x86/intel_rdt: Show missing resctrl mount options + - mtd: rawnand: atmel: Fix potential NULL pointer dereference + - nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O + - ath10k: fix tx status flag setting for management frames + - signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack + - ice: fix changing of ring descriptor size (ethtool -G) + - ice: update fw version check logic + - net: hns3: Fix for packet buffer setting bug + - Bluetooth: btbcm: Add entry for BCM4335C0 UART bluetooth + - Bluetooth: hci_qca: Remove hdev dereference in qca_close(). + - x86: boot: Fix EFI stub alignment + - net: hns3: Add nic state check before calling netif_tx_wake_queue + - net: hns3: Fix ets validate issue + - pinctrl: sunxi: fix 'pctrl->functions' allocation in + sunxi_pinctrl_build_state + - pinctrl: qcom: spmi-mpp: Fix err handling of pmic_mpp_set_mux + - brcmfmac: fix for proper support of 160MHz bandwidth + - net: hns3: Check hdev state when getting link status + - net: hns3: Set STATE_DOWN bit of hdev state when stopping net + - net: phy: phylink: ensure the carrier is off when starting phylink + - block, bfq: correctly charge and reset entity service in all cases + - arm64: entry: Allow handling of undefined instructions from EL1 + - kprobes: Return error if we fail to reuse kprobe instead of BUG_ON() + - spi: gpio: No MISO does not imply no RX + - ACPI / LPSS: Add alternative ACPI HIDs for Cherry Trail DMA controllers + - pinctrl: qcom: spmi-mpp: Fix drive strength setting + - bpf/verifier: fix verifier instability + - failover: Add missing check to validate 'slave_dev' in + net_failover_slave_unregister + - perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo + - pinctrl: spmi-mpp: Fix pmic_mpp_config_get() to be compliant + - pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant + - net: hns3: Preserve vlan 0 in hardware table + - net: hns3: Fix ping exited problem when doing lp selftest + - net: hns3: Fix for vf vlan delete failed problem + - net: dsa: mv88e6xxx: Fix writing to a PHY page. + - mt76x2u: run device cleanup routine if resume fails + - rsi: fix memory alignment issue in ARM32 platforms + - libertas_tf: prevent underflow in process_cmdrequest() + - iwlwifi: mvm: fix BAR seq ctrl reporting + - gpio: brcmstb: allow 0 width GPIO banks + - ixgbe: disallow IPsec Tx offload when in SR-IOV mode + - ixgbevf: VF2VF TCP RSS + - wil6210: fix RX buffers release and unmap + - ath10k: schedule hardware restart if WMI command times out + - libata: Apply NOLPM quirk for SAMSUNG MZ7TD256HAFV-000L9 + - thermal: rcar_thermal: Prevent doing work after unbind + - thermal: da9062/61: Prevent hardware access during system suspend + - cifs: fix a credits leak for compund commands + - cgroup, netclassid: add a preemption point to write_classid + - net: stmmac: dwmac-sun8i: fix OF child-node lookup + - f2fs: fix to account IO correctly for cgroup writeback + - MD: Memory leak when flush bio size is zero + - md: fix memleak for mempool + - of: Add missing exports of node name compare functions + - scsi: esp_scsi: Track residual for PIO transfers + - scsi: ufs: Schedule clk gating work on correct queue + - UAPI: ndctl: Fix g++-unsupported initialisation in headers + - KVM: nVMX: Clear reserved bits of #DB exit qualification + - scsi: megaraid_sas: fix a missing-check bug + - RDMA/core: Do not expose unsupported counters + - RDMA/cm: Respect returned status of cm_init_av_by_path + - IB/ipoib: Clear IPCB before icmp_send + - RDMA/bnxt_re: Avoid accessing nq->bar_reg_iomem in failure case + - RDMA/bnxt_re: Fix recursive lock warning in debug kernel + - usb: host: ohci-at91: fix request of irq for optional gpio + - PCI: mediatek: Fix mtk_pcie_find_port() endpoint/port matching logic + - PCI: cadence: Use AXI region 0 to signal interrupts from EP + - usb: typec: tcpm: Report back negotiated PPS voltage and current + - tpm: suppress transmit cmd error logs when TPM 1.2 is disabled/deactivated + - f2fs: clear PageError on the read path + - Drivers: hv: vmbus: Use cpumask_var_t for on-stack cpu mask + - VMCI: Resource wildcard match fixed + - PCI / ACPI: Enable wake automatically for power managed bridges + - xprtrdma: Reset credit grant properly after a disconnect + - irqchip/pdc: Setup all edge interrupts as rising edge at GIC + - usb: dwc2: fix call to vbus supply exit routine, call it unlocked + - usb: dwc2: fix a race with external vbus supply + - usb: gadget: udc: atmel: handle at91sam9rl PMC + - ext4: fix argument checking in EXT4_IOC_MOVE_EXT + - MD: fix invalid stored role for a disk + - PCI: cadence: Correct probe behaviour when failing to get PHY + - nvmem: check the return value of nvmem_add_cells() + - xhci: Avoid USB autosuspend when resuming USB2 ports. + - scsi: qla2xxx: Fix recursive mailbox timeout + - f2fs: fix to recover inode's crtime during POR + - f2fs: fix to recover inode's i_flags during POR + - PCI/MSI: Warn and return error if driver enables MSI/MSI-X twice + - coresight: etb10: Fix handling of perf mode + - PCI: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode + - crypto: caam - fix implicit casts in endianness helpers + - usb: chipidea: Prevent unbalanced IRQ disable + - Smack: ptrace capability use fixes + - driver/dma/ioat: Call del_timer_sync() without holding prep_lock + - ASoC: AMD: Fix capture unstable in beginning for some runs + - firmware: coreboot: Unmap ioregion after device population + - IB/ipoib: Use dev_port to expose network interface port numbers + - IB/mlx5: Allow transition of DCI QP to reset + - uio: ensure class is registered before devices + - scsi: lpfc: Correct soft lockup when running mds diagnostics + - scsi: lpfc: Correct race with abort on completion path + - f2fs: avoid sleeping under spin_lock + - f2fs: report error if quota off error during umount + - signal: Always deliver the kernel's SIGKILL and SIGSTOP to a pid namespace + init + - f2fs: fix to flush all dirty inodes recovered in readonly fs + - mfd: menelaus: Fix possible race condition and leak + - dmaengine: dma-jz4780: Return error if not probed from DT + - IB/rxe: fix for duplicate request processing and ack psns + - ALSA: hda: Check the non-cached stream buffers more explicitly + - cpupower: Fix AMD Family 0x17 msr_pstate size + - Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" + - f2fs: fix missing up_read + - f2fs: fix to recover cold bit of inode block during POR + - f2fs: fix to account IO correctly + - OPP: Free OPP table properly on performance state irregularities + - ARM: dts: exynos: Convert exynos5250.dtsi to opp-v2 bindings + - ARM: dts: exynos: Mark 1 GHz CPU OPP as suspend OPP on Exynos5250 + - xen-swiotlb: use actually allocated size on check physical continuous + - tpm: Restore functionality to xen vtpm driver. + - xen/blkfront: avoid NULL blkfront_info dereference on device removal + - xen/balloon: Support xend-based toolstack + - xen: fix race in xen_qlock_wait() + - xen: make xen_qlock_wait() nestable + - xen/pvh: increase early stack size + - xen/pvh: don't try to unplug emulated devices + - libertas: don't set URB_ZERO_PACKET on IN USB transfer + - usbip:vudc: BUG kmalloc-2048 (Not tainted): Poison overwritten + - usb: typec: tcpm: Fix APDO PPS order checking to be based on voltage + - usb: gadget: udc: renesas_usb3: Fix b-device mode for "workaround" + - mt76: mt76x2: fix multi-interface beacon configuration + - iwlwifi: mvm: check return value of rs_rate_from_ucode_rate() + - net/ipv4: defensive cipso option parsing + - dmaengine: ppc4xx: fix off-by-one build failure + - scsi: sched/wait: Add wait_event_lock_irq_timeout for TASK_UNINTERRUPTIBLE + usage + - scsi: target: Fix target_wait_for_sess_cmds breakage with active signals + - libnvdimm: Hold reference on parent while scheduling async init + - libnvdimm, region: Fail badblocks listing for inactive regions + - libnvdimm, pmem: Fix badblocks population for 'raw' namespaces + - ASoC: intel: skylake: Add missing break in skl_tplg_get_token() + - ASoC: sta32x: set ->component pointer in private struct + - IB/mlx5: Fix MR cache initialization + - IB/rxe: Revise the ib_wr_opcode enum + - jbd2: fix use after free in jbd2_log_do_checkpoint() + - gfs2_meta: ->mount() can get NULL dev_name + - ext4: fix EXT4_IOC_SWAP_BOOT + - ext4: initialize retries variable in ext4_da_write_inline_data_begin() + - ext4: fix setattr project check in fssetxattr ioctl + - ext4: propagate error from dquot_initialize() in EXT4_IOC_FSSETXATTR + - ext4: fix use-after-free race in ext4_remount()'s error path + - selinux: fix mounting of cgroup2 under older policies + - HID: wacom: Work around HID descriptor bug in DTK-2451 and DTH-2452 + - HID: hiddev: fix potential Spectre v1 + - EDAC, amd64: Add Family 17h, models 10h-2fh support + - EDAC, {i7core,sb,skx}_edac: Fix uncorrected error counting + - EDAC, skx_edac: Fix logical channel intermediate decoding + - ARM: dts: dra7: Fix up unaligned access setting for PCIe EP + - PCI/ASPM: Fix link_state teardown on device removal + - PCI: Add Device IDs for Intel GPU "spurious interrupt" quirk + - signal/GenWQE: Fix sending of SIGKILL + - signal: Guard against negative signal numbers in copy_siginfo_from_user32 + - crypto: lrw - Fix out-of bounds access on counter overflow + - crypto: tcrypt - fix ghash-generic speed test + - crypto: aesni - don't use GFP_ATOMIC allocation if the request doesn't cross + a page in gcm + - crypto: morus/generic - fix for big endian systems + - crypto: aegis/generic - fix for big endian systems + - crypto: speck - remove Speck + - mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range() + - userfaultfd: disable irqs when taking the waitqueue lock + - ima: fix showing large 'violations' or 'runtime_measurements_count' + - ima: open a new file instance if no read permissions + - hugetlbfs: dirty pages as they are added to pagecache + - mm/rmap: map_pte() was not handling private ZONE_DEVICE page properly + - mm/hmm: fix race between hmm_mirror_unregister() and mmu_notifier callback + - KVM: arm/arm64: Ensure only THP is candidate for adjustment + - KVM: arm64: Fix caching of host MDCR_EL2 value + - kbuild: fix kernel/bounds.c 'W=1' warning + - iio: ad5064: Fix regulator handling + - iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs() + - iio: adc: at91: fix acking DRDY irq on simple conversions + - iio: adc: at91: fix wrong channel number in triggered buffer mode + - w1: omap-hdq: fix missing bus unregister at removal + - smb3: allow stats which track session and share reconnects to be reset + - smb3: do not attempt cifs operation in smb3 query info error path + - smb3: on kerberos mount if server doesn't specify auth type use krb5 + - printk: Fix panic caused by passing log_buf_len to command line + - genirq: Fix race on spurious interrupt detection + - tpm: fix response size validation in tpm_get_random() + - NFC: nfcmrvl_uart: fix OF child-node lookup + - NFSv4.1: Fix the r/wsize checking + - nfs: Fix a missed page unlock after pg_doio() + - nfsd: correctly decrement odstate refcount in error path + - nfsd: Fix an Oops in free_session() + - lockd: fix access beyond unterminated strings in prints + - dm ioctl: harden copy_params()'s copy_from_user() from malicious users + - dm zoned: fix metadata block ref counting + - dm zoned: fix various dmz_get_mblock() issues + - media: ov7670: make "xclk" clock optional + - fsnotify: Fix busy inodes during unmount + - powerpc64/module elfv1: Set opd addresses after module relocation + - powerpc/msi: Fix compile error on mpc83xx + - powerpc/tm: Fix HFSCR bit for no suspend case + - powerpc/64s/hash: Do not use PPC_INVALIDATE_ERAT on CPUs before POWER9 + - MIPS: OCTEON: fix out of bounds array access on CN68XX + - rtc: ds1307: fix ds1339 wakealarm support + - rtc: cmos: Fix non-ACPI undefined reference to `hpet_rtc_interrupt' + - rtc: cmos: Remove the `use_acpi_alarm' module parameter for !ACPI + - power: supply: twl4030-charger: fix OF sibling-node lookup + - ocxl: Fix access to the AFU Descriptor Data + - iommu/arm-smmu: Ensure that page-table updates are visible before TLBI + - TC: Set DMA masks for devices + - net: bcmgenet: fix OF child-node lookup + - media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD + - Revert "media: dvbsky: use just one mutex for serializing device R/W ops" + - kgdboc: Passing ekgdboc to command line causes panic + - remoteproc: qcom: q6v5: Propagate EPROBE_DEFER + - media: cec: make cec_get_edid_spa_location() an inline function + - media: cec: integrate cec_validate_phys_addr() in cec-api.c + - xen: fix xen_qlock_wait() + - xen: remove size limit of privcmd-buf mapping interface + - xen-blkfront: fix kernel panic with negotiate_mq error path + - media: cec: add new tx/rx status bits to detect aborts/timeouts + - media: cec: fix the Signal Free Time calculation + - media: cec: forgot to cancel delayed work + - media: em28xx: use a default format if TRY_FMT fails + - media: tvp5150: avoid going past array on v4l2_querymenu() + - media: em28xx: fix input name for Terratec AV 350 + - media: em28xx: make v4l2-compliance happier by starting sequence on zero + - media: em28xx: fix handler for vidioc_s_input() + - media: adv7604: when the EDID is cleared, unconfigure CEC as well + - media: adv7842: when the EDID is cleared, unconfigure CEC as well + - drm/mediatek: fix OF sibling-node lookup + - media: media colorspaces*.rst: rename AdobeRGB to opRGB + - media: replace ADOBERGB by OPRGB + - media: hdmi.h: rename ADOBE_RGB to OPRGB and ADOBE_YCC to OPYCC + - arm64: lse: remove -fcall-used-x0 flag + - rpmsg: smd: fix memory leak on channel create + - Cramfs: fix abad comparison when wrap-arounds occur + - ARM: dts: socfpga: Fix SDRAM node address for Arria10 + - arm64: dts: stratix10: Correct System Manager register size + - soc: qcom: rmtfs-mem: Validate that scm is available + - soc/tegra: pmc: Fix child-node lookup + - selftests/ftrace: Fix synthetic event test to delete event correctly + - selftests/powerpc: Fix ptrace tm failure + - tracing: Return -ENOENT if there is no target synthetic event + - btrfs: qgroup: Avoid calling qgroup functions if qgroup is not enabled + - btrfs: Handle owner mismatch gracefully when walking up tree + - btrfs: locking: Add extra check in btrfs_init_new_buffer() to avoid deadlock + - btrfs: fix error handling in free_log_tree + - btrfs: fix error handling in btrfs_dev_replace_start + - btrfs: Enhance btrfs_trim_fs function to handle error better + - btrfs: Ensure btrfs_trim_fs can trim the whole filesystem + - btrfs: iterate all devices during trim, instead of fs_devices::alloc_list + - btrfs: don't attempt to trim devices that don't support it + - btrfs: keep trim from interfering with transaction commits + - btrfs: wait on caching when putting the bg cache + - Btrfs: don't clean dirty pages during buffered writes + - btrfs: release metadata before running delayed refs + - btrfs: protect space cache inode alloc with GFP_NOFS + - btrfs: reset max_extent_size on clear in a bitmap + - btrfs: make sure we create all new block groups + - Btrfs: fix warning when replaying log after fsync of a tmpfile + - Btrfs: fix wrong dentries after fsync of file that got its parent replaced + - btrfs: qgroup: Dirty all qgroups before rescan + - Btrfs: fix null pointer dereference on compressed write path error + - Btrfs: fix assertion on fsync of regular file when using no-holes feature + - Btrfs: fix deadlock when writing out free space caches + - btrfs: reset max_extent_size properly + - btrfs: set max_extent_size properly + - btrfs: don't use ctl->free_space for max_extent_size + - btrfs: only free reserved extent if we didn't insert it + - btrfs: fix insert_reserved error handling + - btrfs: don't run delayed_iputs in commit + - btrfs: move the dio_sem higher up the callchain + - Btrfs: fix use-after-free during inode eviction + - Btrfs: fix use-after-free when dumping free space + - net: sched: Remove TCA_OPTIONS from policy + - vt: fix broken display when running aptitude + - bpf: wait for running BPF programs when updating map-in-map + - vga_switcheroo: Fix missing gpu_bound call at audio client registration + - MD: fix invalid stored role for a disk - try2 + - Linux 4.19.2 + + * [FEAT] Guest-dedicated Crypto Adapters (LP: #1787405) + - KVM: s390: vsie: simulate VCPU SIE entry/exit + - KVM: s390: introduce and use KVM_REQ_VSIE_RESTART + - KVM: s390: refactor crypto initialization + - s390: vfio-ap: base implementation of VFIO AP device driver + - s390: vfio-ap: register matrix device with VFIO mdev framework + - s390: vfio-ap: sysfs interfaces to configure adapters + - s390: vfio-ap: sysfs interfaces to configure domains + - s390: vfio-ap: sysfs interfaces to configure control domains + - s390: vfio-ap: sysfs interface to view matrix mdev matrix + - KVM: s390: interface to clear CRYCB masks + - s390: vfio-ap: implement mediated device open callback + - s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl + - s390: vfio-ap: zeroize the AP queues + - s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl + - KVM: s390: Clear Crypto Control Block when using vSIE + - KVM: s390: vsie: Do the CRYCB validation first + - KVM: s390: vsie: Make use of CRYCB FORMAT2 clear + - KVM: s390: vsie: Allow CRYCB FORMAT-2 + - KVM: s390: vsie: allow CRYCB FORMAT-1 + - KVM: s390: vsie: allow CRYCB FORMAT-0 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1 + - KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-2 + - KVM: s390: device attrs to enable/disable AP interpretation + - KVM: s390: CPU model support for AP virtualization + - s390: doc: detailed specifications for AP virtualization + - KVM: s390: fix locking for crypto setting error path + - KVM: s390: Tracing APCB changes + - s390: vfio-ap: setup APCB mask using KVM dedicated function + - [Config:] Enable CONFIG_S390_AP_IOMMU and set CONFIG_VFIO_AP to module. + + * Bypass of mount visibility through userns + mount propagation (LP: #1789161) + - mount: Retest MNT_LOCKED in do_umount + - mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts + + * CVE-2018-18955: nested user namespaces with more than five extents + incorrectly grant privileges over inode (LP: #1801924) // CVE-2018-18955 + - userns: also map extents in the reverse map to kernel IDs + + * kdump fail due to an IRQ storm (LP: #1797990) + - SAUCE: x86/PCI: Export find_cap() to be used in early PCI code + - SAUCE: x86/quirks: Add parameter to clear MSIs early on boot + - SAUCE: x86/quirks: Scan all busses for early PCI quirks + + * Disable LPM for Raydium Touchscreens (LP: #1802248) + - USB: quirks: Add no-lpm quirk for Raydium touchscreens + + * Power consumption during s2idle is higher than long idle(sk hynix) + (LP: #1801875) + - SAUCE: pci: prevent sk hynix nvme from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: v4.19.1 upstream stable release (LP: #1801739) + - bridge: do not add port to router list when receives query with source + 0.0.0.0 + - ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are + called + - net/mlx5e: fix csum adjustments caused by RXFCS + - net: sched: gred: pass the right attribute to gred_change_table_def() + - net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules + - net: udp: fix handling of CHECKSUM_COMPLETE packets + - Revert "net: simplify sock_poll_wait" + - rtnetlink: Disallow FDB configuration for non-Ethernet device + - vhost: Fix Spectre V1 vulnerability + - bonding: fix length of actor system + - openvswitch: Fix push/pop ethernet validation + - net/ipv6: Allow onlink routes to have a device mismatch if it is the default + route + - net/smc: fix smc_buf_unuse to use the lgr pointer + - mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs + - mlxsw: core: Fix devlink unregister flow + - net: drop skb on failure in ip_check_defrag() + - net: Properly unlink GRO packets on overflow. + - r8169: fix broken Wake-on-LAN from S5 (poweroff) + - Revert "be2net: remove desc field from be_eq_obj" + - sctp: check policy more carefully when getting pr status + - sparc64: Export __node_distance. + - sparc64: Make corrupted user stacks more debuggable. + - sparc64: Wire up compat getpeername and getsockname. + - net: bridge: remove ipv6 zero address check in mcast queries + - Linux 4.19.1 + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.11-1ubuntu1, zfs to 0.7.11-3ubuntu1 + - [Config] updateconfigs after 4.19.2 stable update + - [Config] Disable unneded options for s390 + - [Config] Update annotations for 4.19 + + -- Seth Forshee Thu, 15 Nov 2018 09:55:37 -0800 + +linux (4.19.0-4.5) disco; urgency=medium + + * Add checksum offload and TSO support for HiNIC adapters (LP: #1800664) + - net-next/hinic: add checksum offload and TSO support + + * [Bionic][Cosmic] Fix to ipmi to support vendor specific messages greater + than 255 bytes (LP: #1799794) + - ipmi:ssif: Add support for multi-part transmit messages > 2 parts + + * Packaging resync (LP: #1786013) + - [Package] add support for specifying the primary makefile + + * Update ENA driver to version 2.0.1K (LP: #1798182) + - net: ena: minor performance improvement + - net: ena: complete host info to match latest ENA spec + - net: ena: introduce Low Latency Queues data structures according to ENA spec + - net: ena: add functions for handling Low Latency Queues in ena_com + - net: ena: add functions for handling Low Latency Queues in ena_netdev + - net: ena: use CSUM_CHECKED device indication to report skb's checksum status + - net: ena: explicit casting and initialization, and clearer error handling + - net: ena: limit refill Rx threshold to 256 to avoid latency issues + - net: ena: change rx copybreak default to reduce kernel memory pressure + - net: ena: remove redundant parameter in ena_com_admin_init() + - net: ena: update driver version to 2.0.1 + - net: ena: fix indentations in ena_defs for better readability + - net: ena: Fix Kconfig dependency on X86 + - net: ena: enable Low Latency Queues + - net: ena: fix compilation error in xtensa architecture + + * [Bionic][Cosmic] ipmi: Fix timer race with module unload (LP: #1799281) + - ipmi: Fix timer race with module unload + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * not able to unwind the stack from within __kernel_clock_gettime in the Linux + vDSO (LP: #1797963) + - powerpc/vdso: Correct call frame information + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Don't print secure boot state + from the efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() not complain + about cert lists that aren't present." + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable + to be suppressed" + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI + Secure Boot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add EFI signature data types" + - Revert "UBUNTU: SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time + addition of keys to secondary keyring" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Copy secure_boot flag in boot params + across kexec reboot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down perf" + - Revert "UBUNTU: SAUCE: (efi-lockdown) bpf: Restrict kernel image access + functions when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down kprobes" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down /proc/kcore" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the + testmmiotrace module" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down module params that specify + hardware parameters (eg. ioport)" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down TIOCSSERIAL" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable APEI error injection if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable ACPI table override if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param + when the kernel has been locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) ACPI: Limit access to custom_method + when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86: Lock down IO port access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) PCI: Lock down BAR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) hibernate: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Enforce module signatures if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add the ability to lock down access to + the running kernel image" + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi/x86: Call efi_parse_options() from efi_main() + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - [Packaging] generate Vcs-Git url from changelog + - [Config] CONFIG_SCSI_MQ_DEFAULT=y + + -- Seth Forshee Fri, 02 Nov 2018 14:22:55 -0500 + +linux (4.19.0-3.4) cosmic; urgency=medium + + * Support Edge Gateway's Bluetooth LED (LP: #1798332) + - SAUCE: Bluetooth: Support for LED on Edge Gateways + + * Support Edge Gateway's WIFI LED (LP: #1798330) + - SAUCE: mwifiex: Switch WiFi LED state according to the device status + + [ Upstream Kernel Changes ] + + * Rebase to v4.19 + + -- Seth Forshee Mon, 22 Oct 2018 09:13:39 -0500 + +linux (4.19.0-2.3) cosmic; urgency=medium + + * fscache: bad refcounting in fscache_op_complete leads to OOPS (LP: #1797314) + - SAUCE: fscache: Fix race in decrementing refcount of op->npages + + * Provide mode where all vCPUs on a core must be the same VM (LP: #1792957) + - KVM: PPC: Book3S HV: Provide mode where all vCPUs on a core must be the same + VM + + * The front MIC can't work on the Lenovo M715 (LP: #1797292) + - ALSA: hda/realtek - Fix the problem of the front MIC on the Lenovo M715 + + * arm64: snapdragon: WARNING: CPU: 0 PID: 1 at drivers/irqchip/irq-gic.c:1016 + gic_irq_domain_translate (LP: #1797143) + - SAUCE: arm64: dts: msm8916: camms: fix gic_irq_domain_translate warnings + + * Dell new AIO requires a new uart backlight driver (LP: #1727235) + - SAUCE: platform/x86: dell-uart-backlight: new backlight driver for DELL AIO + - updateconfigs for Dell UART backlight driver + + * Please make CONFIG_PWM_LPSS_PCI and CONFIG_PWM_LPSS_PLATFORM built in to + make brightness adjustment working on various BayTrail/CherryTrail-based + devices (LP: #1783964) + - [Config]: Make PWM_LPSS_* built-in + + * check and fix zkey required kernel modules locations in debs, udebs, and + initramfs (LP: #1794346) + - [Config] add s390 crypto modules to crypt-modules udeb + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_VBOXGUEST=n + - ubuntu: vbox -- update to 5.2.18-dfsg-2 + - ubuntu: enable vbox build + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc8 + + -- Seth Forshee Mon, 15 Oct 2018 10:52:04 -0500 + +linux (4.19.0-1.2) cosmic; urgency=medium + + * Page leaking in cachefiles_read_backing_file while vmscan is active + (LP: #1793430) + - SAUCE: cachefiles: Page leaking in cachefiles_read_backing_file while vmscan + is active + + * SRU: Enable middle button of touchpad on ThinkPad P72 (LP: #1793463) + - Input: elantech - enable middle button of touchpad on ThinkPad P72 + + * Improvements to the kernel source package preparation (LP: #1793461) + - [Packaging] startnewrelease: add support for backport kernels + + * Fix unusable NVIDIA GPU after S3 (LP: #1793338) + - SAUCE: PCI: Reprogram bridge prefetch registers on resume + + * Error reported when creating ZFS pool with "-t" option, despite successful + pool creation (LP: #1769937) + - SAUCE: (noup) Update zfs to 0.7.9-3ubuntu6 + + * device hotplug of vfio devices can lead to deadlock in vfio_pci_release + (LP: #1792099) + - SAUCE: vfio -- release device lock before userspace requests + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline -- fix temporary filenaming + - CONFIG_BCH_CONST_PARAMS=n + - Packaging: final-checks: remove trailing backport suffix + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc5 + + -- Seth Forshee Tue, 25 Sep 2018 16:32:24 -0500 + +linux (4.19.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: Import aufs driver + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc3 + + -- Seth Forshee Thu, 13 Sep 2018 07:54:47 -0500 + +linux (4.19.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 13 Sep 2018 06:44:09 -0500 + +linux (4.18.0-8.9) cosmic; urgency=medium + + * linux: 4.18.0-8.9 -proposed tracker (LP: #1791663) + + * Cosmic update to v4.18.7 stable release (LP: #1791660) + - rcu: Make expedited GPs handle CPU 0 being offline + - net: 6lowpan: fix reserved space for single frames + - net: mac802154: tx: expand tailroom if necessary + - 9p/net: Fix zero-copy path in the 9p virtio transport + - spi: davinci: fix a NULL pointer dereference + - spi: pxa2xx: Add support for Intel Ice Lake + - spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe + - spi: cadence: Change usleep_range() to udelay(), for atomic context + - mmc: block: Fix unsupported parallel dispatch of requests + - mmc: renesas_sdhi_internal_dmac: mask DMAC interrupts + - mmc: renesas_sdhi_internal_dmac: fix #define RST_RESERVED_BITS + - readahead: stricter check for bdi io_pages + - block: fix infinite loop if the device loses discard capability + - block: blk_init_allocated_queue() set q->fq as NULL in the fail case + - block: really disable runtime-pm for blk-mq + - blkcg: Introduce blkg_root_lookup() + - block: Introduce blk_exit_queue() + - block: Ensure that a request queue is dissociated from the cgroup controller + - apparmor: fix bad debug check in apparmor_secid_to_secctx() + - dma-buf: Move BUG_ON from _add_shared_fence to _add_shared_inplace + - libertas: fix suspend and resume for SDIO connected cards + - media: Revert "[media] tvp5150: fix pad format frame height" + - mailbox: xgene-slimpro: Fix potential NULL pointer dereference + - Replace magic for trusting the secondary keyring with #define + - Fix kexec forbidding kernels signed with keys in the secondary keyring to + boot + - powerpc/fadump: handle crash memory ranges array index overflow + - powerpc/64s: Fix page table fragment refcount race vs speculative references + - powerpc/pseries: Fix endianness while restoring of r3 in MCE handler. + - powerpc/pkeys: Give all threads control of their key permissions + - powerpc/pkeys: Deny read/write/execute by default + - powerpc/pkeys: key allocation/deallocation must not change pkey registers + - powerpc/pkeys: Save the pkey registers before fork + - powerpc/pkeys: Fix calculation of total pkeys. + - powerpc/pkeys: Preallocate execute-only key + - powerpc/nohash: fix pte_access_permitted() + - powerpc64/ftrace: Include ftrace.h needed for enable/disable calls + - powerpc/powernv/pci: Work around races in PCI bridge enabling + - cxl: Fix wrong comparison in cxl_adapter_context_get() + - IB/mlx5: Honor cnt_set_id_valid flag instead of set_id + - IB/mlx5: Fix leaking stack memory to userspace + - IB/srpt: Fix srpt_cm_req_recv() error path (1/2) + - IB/srpt: Fix srpt_cm_req_recv() error path (2/2) + - IB/srpt: Support HCAs with more than two ports + - overflow.h: Add arithmetic shift helper + - RDMA/mlx5: Fix shift overflow in mlx5_ib_create_wq + - ib_srpt: Fix a use-after-free in srpt_close_ch() + - ib_srpt: Fix a use-after-free in __srpt_close_all_ch() + - RDMA/rxe: Set wqe->status correctly if an unexpected response is received + - 9p: fix multiple NULL-pointer-dereferences + - fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed + - 9p/virtio: fix off-by-one error in sg list bounds check + - net/9p/client.c: version pointer uninitialized + - net/9p/trans_fd.c: fix race-condition by flushing workqueue before the + kfree() + - dm integrity: change 'suspending' variable from bool to int + - dm thin: stop no_space_timeout worker when switching to write-mode + - dm cache metadata: save in-core policy_hint_size to on-disk superblock + - dm cache metadata: set dirty on all cache blocks after a crash + - dm crypt: don't decrease device limits + - dm writecache: fix a crash due to reading past end of dirty_bitmap + - uart: fix race between uart_put_char() and uart_shutdown() + - Drivers: hv: vmbus: Fix the offer_in_progress in vmbus_process_offer() + - Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind() + - iio: sca3000: Fix missing return in switch + - iio: ad9523: Fix displayed phase + - iio: ad9523: Fix return value for ad952x_store() + - extcon: Release locking when sending the notification of connector state + - eventpoll.h: wrap casts in () properly + - vmw_balloon: fix inflation of 64-bit GFNs + - vmw_balloon: do not use 2MB without batching + - vmw_balloon: VMCI_DOORBELL_SET does not check status + - vmw_balloon: fix VMCI use when balloon built into kernel + - rtc: omap: fix resource leak in registration error path + - rtc: omap: fix potential crash on power off + - tracing: Do not call start/stop() functions when tracing_on does not change + - tracing/blktrace: Fix to allow setting same value + - printk/tracing: Do not trace printk_nmi_enter() + - livepatch: Validate module/old func name length + - uprobes: Use synchronize_rcu() not synchronize_sched() + - mfd: hi655x: Fix regmap area declared size for hi655x + - ovl: fix wrong use of impure dir cache in ovl_iterate() + - ACPICA: AML Parser: skip opcodes that open a scope upon parse failure + - ACPICA: Clear status of all events when entering sleep states + - drivers/block/zram/zram_drv.c: fix bug storing backing_dev + - sched: idle: Avoid retaining the tick when it has been stopped + - cpuidle: menu: Handle stopped tick more aggressively + - cpufreq: governor: Avoid accessing invalid governor_data + - PM / sleep: wakeup: Fix build error caused by missing SRCU support + - ALSA: ac97: fix device initialization in the compat layer + - ALSA: ac97: fix check of pm_runtime_get_sync failure + - ALSA: ac97: fix unbalanced pm_runtime_enable + - i2c: designware: Re-init controllers with pm_disabled set on resume + - KVM: VMX: fixes for vmentry_l1d_flush module parameter + - KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages + - xtensa: limit offsets in __loop_cache_{all,page} + - xtensa: increase ranges in ___invalidate_{i,d}cache_all + - block, bfq: return nbytes and not zero from struct cftype .write() method + - pnfs/blocklayout: off by one in bl_map_stripe() + - nfsd: fix leaked file lock with nfs exported overlayfs + - NFSv4 client live hangs after live data migration recovery + - NFSv4: Fix locking in pnfs_generic_recover_commit_reqs + - NFSv4: Fix a sleep in atomic context in nfs4_callback_sequence() + - ARM: tegra: Fix Tegra30 Cardhu PCA954x reset + - ARM: dts: am57xx-idk: Enable dual role for USB2 port + - pwm: omap-dmtimer: Return -EPROBE_DEFER if no dmtimer platform data + - mm/tlb: Remove tlb_remove_table() non-concurrent condition + - iommu/ipmmu-vmsa: Don't register as BUS IOMMU if machine doesn't have IPMMU- + VMSA + - iommu/vt-d: Add definitions for PFSID + - iommu/vt-d: Fix dev iotlb pfsid use + - sys: don't hold uts_sem while accessing userspace memory + - userns: move user access out of the mutex + - ubifs: Fix memory leak in lprobs self-check + - Revert "UBIFS: Fix potential integer overflow in allocation" + - ubifs: Check data node size before truncate + - ubifs: xattr: Don't operate on deleted inodes + - ubifs: Fix directory size calculation for symlinks + - ubifs: Fix synced_i_size calculation for xattr inodes + - pwm: tiehrpwm: Don't use emulation mode bits to control PWM output + - pwm: tiehrpwm: Fix disabling of output of PWMs + - fb: fix lost console when the user unplugs a USB adapter + - udlfb: fix semaphore value leak + - udlfb: fix display corruption of the last line + - udlfb: don't switch if we are switching to the same videomode + - udlfb: set optimal write delay + - udlfb: make a local copy of fb_ops + - udlfb: handle allocation failure + - udlfb: set line_length in dlfb_ops_set_par + - getxattr: use correct xattr length + - libnvdimm: Use max contiguous area for namespace size + - libnvdimm: fix ars_status output length calculation + - bcache: release dc->writeback_lock properly in bch_writeback_thread() + - kconfig: fix "Can't open ..." in parallel build + - perf auxtrace: Fix queue resize + - crypto: vmx - Fix sleep-in-atomic bugs + - crypto: aesni - Use unaligned loads from gcm_context_data + - crypto: arm64/sm4-ce - check for the right CPU feature bit + - crypto: caam - fix DMA mapping direction for RSA forms 2 & 3 + - crypto: caam/jr - fix descriptor DMA unmapping + - crypto: caam/qi - fix error path in xts setkey + - fs/quota: Fix spectre gadget in do_quotactl + - udf: Fix mounting of Win7 created UDF filesystems + - cpuidle: menu: Retain tick when shallow state is selected + - arm64: mm: always enable CONFIG_HOLES_IN_ZONE + - Linux 4.18.7 + + * CVE-2017-5715 + - s390: detect etoken facility + - KVM: s390: add etoken support for guests + + * Missing Intel GPU pci-id's (LP: #1789924) + - drm/i915/whl: Introducing Whiskey Lake platform + - drm/i915/aml: Introducing Amber Lake platform + - drm/i915/cfl: Add a new CFL PCI ID. + + * [18.10 FEAT] Add kernel config options for SMC-R/D (LP: #1789934) + - s390/ism: add device driver for internal shared memory + - CONFIG_ISM=y for s390 + + * Cosmic update to v4.18.6 stable release (LP: #1791105) + - PATCH scripts/kernel-doc + - scripts/kernel-doc: Escape all literal braces in regexes + - scsi: libsas: dynamically allocate and free ata host + - xprtrdma: Fix disconnect regression + - mei: don't update offset in write + - cifs: add missing support for ACLs in SMB 3.11 + - CIFS: fix uninitialized ptr deref in smb2 signing + - cifs: add missing debug entries for kconfig options + - cifs: use a refcount to protect open/closing the cached file handle + - cifs: check kmalloc before use + - smb3: enumerating snapshots was leaving part of the data off end + - smb3: Do not send SMB3 SET_INFO if nothing changed + - smb3: don't request leases in symlink creation and query + - smb3: fill in statfs fsid and correct namelen + - btrfs: use correct compare function of dirty_metadata_bytes + - btrfs: don't leak ret from do_chunk_alloc + - Btrfs: fix mount failure after fsync due to hard link recreation + - Btrfs: fix btrfs_write_inode vs delayed iput deadlock + - Btrfs: fix send failure when root has deleted files still open + - Btrfs: send, fix incorrect file layout after hole punching beyond eof + - hwmon: (k10temp) 27C Offset needed for Threadripper2 + - bpf, arm32: fix stack var offset in jit + - regulator: arizona-ldo1: Use correct device to get enable GPIO + - iommu/arm-smmu: Error out only if not enough context interrupts + - printk: Split the code for storing a message into the log buffer + - printk: Create helper function to queue deferred console handling + - printk/nmi: Prevent deadlock when accessing the main log buffer in NMI + - kprobes/arm64: Fix %p uses in error messages + - arm64: Fix mismatched cache line size detection + - arm64: Handle mismatched cache type + - arm64: mm: check for upper PAGE_SHIFT bits in pfn_valid() + - arm64: dts: rockchip: corrected uart1 clock-names for rk3328 + - KVM: arm/arm64: Fix potential loss of ptimer interrupts + - KVM: arm/arm64: Fix lost IRQs from emulated physcial timer when blocked + - KVM: arm/arm64: Skip updating PMD entry if no change + - KVM: arm/arm64: Skip updating PTE entry if no change + - s390/kvm: fix deadlock when killed by oom + - perf kvm: Fix subcommands on s390 + - stop_machine: Reflow cpu_stop_queue_two_works() + - stop_machine: Atomically queue and wake stopper threads + - ext4: check for NUL characters in extended attribute's name + - ext4: use ext4_warning() for sb_getblk failure + - ext4: sysfs: print ext4_super_block fields as little-endian + - ext4: reset error code in ext4_find_entry in fallback + - ext4: fix race when setting the bitmap corrupted flag + - x86/gpu: reserve ICL's graphics stolen memory + - platform/x86: wmi: Do not mix pages and kmalloc + - platform/x86: ideapad-laptop: Apply no_hw_rfkill to Y20-15IKBM, too + - mm: move tlb_table_flush to tlb_flush_mmu_free + - mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE + - x86/speculation/l1tf: Fix overflow in l1tf_pfn_limit() on 32bit + - x86/speculation/l1tf: Fix off-by-one error when warning that system has too + much RAM + - x86/speculation/l1tf: Suggest what to do on systems with too much RAM + - x86/vdso: Fix vDSO build if a retpoline is emitted + - x86/process: Re-export start_thread() + - KVM: x86: ensure all MSRs can always be KVM_GET/SET_MSR'd + - KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled + - fuse: Don't access pipe->buffers without pipe_lock() + - fuse: fix initial parallel dirops + - fuse: fix double request_end() + - fuse: fix unlocked access to processing queue + - fuse: umount should wait for all requests + - fuse: Fix oops at process_init_reply() + - fuse: Add missed unlock_page() to fuse_readpages_fill() + - lib/vsprintf: Do not handle %pO[^F] as %px + - udl-kms: change down_interruptible to down + - udl-kms: handle allocation failure + - udl-kms: fix crash due to uninitialized memory + - udl-kms: avoid division + - b43legacy/leds: Ensure NUL-termination of LED name string + - b43/leds: Ensure NUL-termination of LED name string + - ASoC: dpcm: don't merge format from invalid codec dai + - ASoC: zte: Fix incorrect PCM format bit usages + - ASoC: sirf: Fix potential NULL pointer dereference + - ASoC: wm_adsp: Correct DSP pointer for preloader control + - soc: qcom: rmtfs-mem: fix memleak in probe error paths + - pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() + - scsi: qla2xxx: Fix stalled relogin + - x86/vdso: Fix lsl operand order + - x86/nmi: Fix NMI uaccess race against CR3 switching + - x86/irqflags: Mark native_restore_fl extern inline + - x86/spectre: Add missing family 6 check to microcode check + - x86/speculation/l1tf: Increase l1tf memory limit for Nehalem+ + - hwmon: (nct6775) Fix potential Spectre v1 + - x86/entry/64: Wipe KASAN stack shadow before rewind_stack_do_exit() + - x86: Allow generating user-space headers without a compiler + - s390/mm: fix addressing exception after suspend/resume + - s390/lib: use expoline for all bcr instructions + - s390: fix br_r1_trampoline for machines without exrl + - s390/qdio: reset old sbal_state flags + - s390/numa: move initial setup of node_to_cpumask_map + - s390/purgatory: Fix crash with expoline enabled + - s390/purgatory: Add missing FORCE to Makefile targets + - kprobes: Show blacklist addresses as same as kallsyms does + - kprobes: Replace %p with other pointer types + - kprobes/arm: Fix %p uses in error messages + - kprobes: Make list and blacklist root user read only + - MIPS: Correct the 64-bit DSP accumulator register size + - MIPS: memset.S: Fix byte_fixup for MIPSr6 + - MIPS: Always use -march=, not - shortcuts + - MIPS: Change definition of cpu_relax() for Loongson-3 + - MIPS: lib: Provide MIPS64r6 __multi3() for GCC < 7 + - tpm: Return the actual size when receiving an unsupported command + - tpm: separate cmd_ready/go_idle from runtime_pm + - scsi: mpt3sas: Fix calltrace observed while running IO & reset + - scsi: mpt3sas: Fix _transport_smp_handler() error path + - scsi: sysfs: Introduce sysfs_{un,}break_active_protection() + - scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock + - iscsi target: fix session creation failure handling + - mtd: rawnand: hynix: Use ->exec_op() in hynix_nand_reg_write_op() + - mtd: rawnand: fsmc: Stop using chip->read_buf() + - mtd: rawnand: marvell: add suspend and resume hooks + - mtd: rawnand: qcom: wait for desc completion in all BAM channels + - clk: rockchip: fix clk_i2sout parent selection bits on rk3399 + - clk: npcm7xx: fix memory allocation + - PM / clk: signedness bug in of_pm_clk_add_clks() + - power: generic-adc-battery: fix out-of-bounds write when copying channel + properties + - power: generic-adc-battery: check for duplicate properties copied from iio + channels + - watchdog: Mark watchdog touch functions as notrace + - cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status + - x86/dumpstack: Don't dump kernel memory based on usermode RIP + - Linux 4.18.6 + - updateconfigs after v4.18.6 stable update + + * random oopses on s390 systems using NVMe devices (LP: #1790480) + - s390/pci: fix out of bounds access during irq setup + + * [18.10 FEAT] zcrypt DD: introduce APQN tags to support deterministic driver + binding (LP: #1784331) + - s390/zcrypt: code beautify + - s390/zcrypt: AP bus support for alternate driver(s) + - s390/zcrypt: hex string mask improvements for apmask and aqmask. + + * performance drop with ATS enabled (LP: #1788097) + - powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage + + * Fix MCE handling for user access of poisoned device-dax mapping + (LP: #1774366) + - device-dax: Convert to vmf_insert_mixed and vm_fault_t + - device-dax: Enable page_mapping() + - device-dax: Set page->index + - filesystem-dax: Set page->index + - mm, madvise_inject_error: Disable MADV_SOFT_OFFLINE for ZONE_DEVICE pages + - mm, dev_pagemap: Do not clear ->mapping on final put + - mm, madvise_inject_error: Let memory_failure() optionally take a page + reference + - mm, memory_failure: Collect mapping size in collect_procs() + - filesystem-dax: Introduce dax_lock_mapping_entry() + - mm, memory_failure: Teach memory_failure() about dev_pagemap pages + - x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses + - x86/memory_failure: Introduce {set, clear}_mce_nospec() + - libnvdimm, pmem: Restore page attributes when clearing errors + + * Reconcile hns3 SAUCE patches with upstream (LP: #1787477) + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix comments for + hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for using wrong mask and + shift in hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for reset_level default + assignment probelm" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unnecessary ring + configuration operation while resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet" + - Revert "UBUNTU: SAUCE: net: hns3: Fix for phy link issue when using marvell + phy driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: separate roce from nic when + resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: correct reset event status + register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent to request reset + frequently" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: reset net device with rtnl_lock" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify the order of initializeing + command queue register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent sending command during + global or core reset" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Use roce handle when calling roce + callback function" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the warning when clear + reset cause" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix get_vector ops in + hclgevf_main module" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix warning bug when doing lp + selftest" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add configure for mac minimal + frame size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mailbox message truncated + problem" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for l4 checksum offload bug" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for waterline not setting + correctly" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mac pause not disable in + pfc mode" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix tc setup when netdev is first + up" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add calling roce callback + function when link status change" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: optimize the process of notifying + roce client" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused struct member and + definition" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix mislead parameter name" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify inconsistent bit mask + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use decimal for bit offset + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix unreasonable code comments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove extra space and brackets" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: standardize the handle of return + value" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify hnae_ to hnae3_" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead + of kzalloc/dma_map_single" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: give default option while + dependency HNS3 set" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some unused members of + some structures" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove a redundant + hclge_cmd_csq_done" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: using modulo for cyclic counters + in hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove useless code in + hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused + hclge_ring_to_dma_dir" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use lower_32_bits and + upper_32_bits" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove back in struct hclge_hw" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add unlikely for error check" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the Redundant put_vector + in hns3_client_uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: print the ret value in error + information" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: extraction an interface for state + state init|uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused head file in + hnae3.c" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add l4_type check for both ipv4 + and ipv6" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add vector status check before + free vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: rename the interface for + init_client_instance and uninit_client_instance" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove hclge_get_vector_index + from hclge_bind_ring_with_vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: RX BD information valid only in + last BD except VLD bit and buffer size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add support for serdes loopback + selftest" + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: remove hclge_get_vector_index from hclge_bind_ring_with_vector + - net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - net: hns3: add vector status check before free vector + - net: hns3: add l4_type check for both ipv4 and ipv6 + - net: hns3: add unlikely for error check + - net: hns3: remove unused head file in hnae3.c + - net: hns3: extraction an interface for state init|uninit + - net: hns3: print the ret value in error information + - net: hns3: remove the Redundant put_vector in hns3_client_uninit + - net: hns3: remove back in struct hclge_hw + - net: hns3: use lower_32_bits and upper_32_bits + - net: hns3: remove unused hclge_ring_to_dma_dir + - net: hns3: remove useless code in hclge_cmd_send + - net: hns3: remove some redundant assignments + - net: hns3: simplify hclge_cmd_csq_clean + - net: hns3: remove a redundant hclge_cmd_csq_done + - net: hns3: remove some unused members of some structures + - net: hns3: give default option while dependency HNS3 set + - net: hns3: use dma_zalloc_coherent instead of kzalloc/dma_map_single + - net: hns3: modify hnae_ to hnae3_ + - net: hns3: Fix tc setup when netdev is first up + - net: hns3: Fix for mac pause not disable in pfc mode + - net: hns3: Fix for waterline not setting correctly + - net: hns3: Fix for l4 checksum offload bug + - net: hns3: Fix for mailbox message truncated problem + - net: hns3: Add configure for mac minimal frame size + - net: hns3: Fix warning bug when doing lp selftest + - net: hns3: Fix get_vector ops in hclgevf_main module + - net: hns3: Remove the warning when clear reset cause + - net: hns3: Prevent sending command during global or core reset + - net: hns3: Modify the order of initializing command queue register + - net: hns3: Reset net device with rtnl_lock + - net: hns3: Prevent to request reset frequently + - net: hns3: Correct reset event status register + - net: hns3: Fix return value error in hns3_reset_notify_down_enet + - net: hns3: remove unnecessary ring configuration operation while resetting + - net: hns3: Fix for reset_level default assignment probelm + - net: hns3: Fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - net: hns3: Fix comments for hclge_get_ring_chain_from_mbx + - net: hns3: Remove some redundant assignments + - net: hns3: Standardize the handle of return value + - net: hns3: Remove extra space and brackets + - net: hns3: Correct unreasonable code comments + - net: hns3: Use decimal for bit offset macros + - net: hns3: Modify inconsistent bit mask macros + - net: hns3: Fix misleading parameter name + - net: hns3: Remove unused struct member and definition + - net: hns3: Add SPDX tags to HNS3 PF driver + - net: hns3: Add support for serdes loopback selftest + - net: hns3: Fix for phy link issue when using marvell phy driver + + * [Regression] kernel crashdump fails on arm64 (LP: #1786878) + - arm64: export memblock_reserve()d regions via /proc/iomem + - drivers: acpi: add dependency of EFI for arm64 + - efi/arm: preserve early mapping of UEFI memory map longer for BGRT + - efi/arm: map UEFI memory map even w/o runtime services enabled + - arm64: acpi: fix alignment fault in accessing ACPI + - [Config] CONFIG_ARCH_SUPPORTS_ACPI=y + - arm64: fix ACPI dependencies + - ACPI: fix menuconfig presentation of ACPI submenu + + * TB 16 issue on Dell Lattitude 7490 with large amount of data (LP: #1785780) + - r8152: disable RX aggregation on new Dell TB16 dock + + * Support Power Management for Thunderbolt Controller (LP: #1789358) + - thunderbolt: Use 64-bit DMA mask if supported by the platform + - thunderbolt: Do not unnecessarily call ICM get route + - thunderbolt: No need to take tb->lock in domain suspend/complete + - thunderbolt: Use correct ICM commands in system suspend + - thunderbolt: Add support for runtime PM + + * Enable AMD PCIe MP2 for AMDI0011 (LP: #1773940) + - SAUCE: i2c:amd I2C Driver based on PCI Interface for upcoming platform + - SAUCE: i2c:amd move out pointer in union i2c_event_base + - SAUCE: i2c:amd Depends on ACPI + - [Config] i2c: CONFIG_I2C_AMD_MP2=y on x86 + + * Microphone cannot be detected with front panel audio combo jack on HP Z8-G4 + machine (LP: #1789145) + - ALSA: hda/realtek - Fix HP Headset Mic can't record + + * Please enable CONFIG_PAGE_POISONING (LP: #1783651) + - [Config] Enable CONFIG_PAGE_POISONING configs + + * Tango platform uses __initcall without further checks (LP: #1787945) + - [Config] disable ARCH_TANGO + + * [18.10 FEAT] SMC-Direct (LP: #1786902) + - net/smc: determine port attributes independent from pnet table + - net/smc: add pnetid support + - net/smc: add base infrastructure for SMC-D and ISM + - net/smc: add pnetid support for SMC-D and ISM + - net/smc: add SMC-D support in CLC messages + - net/smc: add SMC-D support in data transfer + - net/smc: add SMC-D support in af_smc + - net/smc: add SMC-D diag support + - net/smc: provide smc mode in smc_diag.c + - net/smc: eliminate cursor read and write calls + - net/smc: add function to get link group from link + - net/smc: use DECLARE_BITMAP for rtokens_used_mask + - net/smc: remove local variable page in smc_rx_splice() + - net/smc: Remove a WARN_ON() statement + - net/smc: Simplify ib_post_(send|recv|srq_recv)() calls + - net/smc: fewer parameters for smc_llc_send_confirm_link() + - net/smc: use correct vlan gid of RoCE device + - net/smc: provide fallback reason code + - net/smc: improve delete link processing + - net: simplify sock_poll_wait + - net/smc: send response to test link signal + + * Miscellaneous Ubuntu changes + - [Config] update annotations for CONFIG_CRYPTO_SPECK_NEON + - [Config] fix up annotatios for CONFIG_CRYPTO_SPECK + + -- Seth Forshee Mon, 10 Sep 2018 07:08:38 -0500 + +linux (4.18.0-7.8) cosmic; urgency=medium + + * linux: 4.18.0-7.8 -proposed tracker (LP: #1789459) + + * pmtu.sh fails on 4.18 kernel (LP: #1789436) + - SAUCE: Revert "vti6: fix PMTU caching and reporting on xmit" + + -- Seth Forshee Tue, 28 Aug 2018 11:08:51 -0500 + +linux (4.18.0-6.7) cosmic; urgency=medium + + * linux: 4.18.0-6.7 -proposed tracker (LP: #1788881) + + * systemd 237-3ubuntu10 ADT test failure with linux 4.18.0-5.6 (LP: #1787440) + - Config: Disable BPF_JIT_ALWAYS_ON on i386 + + * execveat03 in ubuntu_ltp_syscalls failed on X/B (LP: #1786729) + - cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias() + + * Cosmic update to v4.18.5 stable release (LP: #1788874) + - EDAC: Add missing MEM_LRDDR4 entry in edac_mem_types[] + - pty: fix O_CLOEXEC for TIOCGPTPEER + - mm: Allow non-direct-map arguments to free_reserved_area() + - x86/mm/init: Pass unconverted symbol addresses to free_init_pages() + - x86/mm/init: Add helper for freeing kernel image pages + - x86/mm/init: Remove freed kernel image areas from alias mapping + - powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 + - ext4: fix spectre gadget in ext4_mb_regular_allocator() + - drm/i915/kvmgt: Fix potential Spectre v1 + - drm/amdgpu/pm: Fix potential Spectre v1 + - parisc: Remove unnecessary barriers from spinlock.h + - parisc: Remove ordered stores from syscall.S + - PCI: Restore resized BAR state on resume + - PCI / ACPI / PM: Resume all bridges on suspend-to-RAM + - PCI: hotplug: Don't leak pci_slot on registration failure + - PCI: aardvark: Size bridges before resources allocation + - PCI: Skip MPS logic for Virtual Functions (VFs) + - PCI: pciehp: Fix use-after-free on unplug + - PCI: pciehp: Fix unprotected list iteration in IRQ handler + - i2c: core: ACPI: Properly set status byte to 0 for multi-byte writes + - i2c: imx: Fix race condition in dma read + - reiserfs: fix broken xattr handling (heap corruption, bad retval) + - Linux 4.18.5 + + * [18.10 FEAT] Add kernel config option "CONFIG_SCLP_OFB" (LP: #1787898) + - [Config] CONFIG_SCLP_OFB=y for s390x + + * errors when scanning partition table of corrupted AIX disk (LP: #1787281) + - partitions/aix: fix usage of uninitialized lv_info and lvname structures + - partitions/aix: append null character to print data from disk + + * Apply NVMe bugfix from Google that bjf asked for (LP: #1787635) + - nvme-pci: add a memory barrier to nvme_dbbuf_update_and_check_event + + * ThinkPad systems have no HDMI sound when using the nvidia GPU (LP: #1787058) + - ACPI / OSI: Add OEM _OSI string to enable NVidia HDMI audio + + * Cosmic update to v4.18.4 stable release (LP: #1788454) + - l2tp: use sk_dst_check() to avoid race on sk->sk_dst_cache + - net_sched: fix NULL pointer dereference when delete tcindex filter + - net_sched: Fix missing res info when create new tc_index filter + - r8169: don't use MSI-X on RTL8168g + - ALSA: hda - Sleep for 10ms after entering D3 on Conexant codecs + - ALSA: hda - Turn CX8200 into D3 as well upon reboot + - ALSA: vx222: Fix invalid endian conversions + - ALSA: virmidi: Fix too long output trigger loop + - ALSA: cs5535audio: Fix invalid endian conversion + - ALSA: dice: fix wrong copy to rx parameters for Alesis iO26 + - ALSA: hda: Correct Asrock B85M-ITX power_save blacklist entry + - ALSA: memalloc: Don't exceed over the requested size + - ALSA: vxpocket: Fix invalid endian conversions + - ALSA: seq: Fix poll() error return + - media: gl861: fix probe of dvb_usb_gl861 + - USB: serial: sierra: fix potential deadlock at close + - USB: serial: pl2303: add a new device id for ATEN + - USB: option: add support for DW5821e + - ACPI / PM: save NVS memory for ASUS 1025C laptop + - tty: serial: 8250: Revert NXP SC16C2552 workaround + - serial: 8250_exar: Read INT0 from slave device, too + - serial: 8250_dw: always set baud rate in dw8250_set_termios + - serial: 8250_dw: Add ACPI support for uart on Broadcom SoC + - uio: fix wrong return value from uio_mmap() + - misc: sram: fix resource leaks in probe error path + - Revert "uio: use request_threaded_irq instead" + - Bluetooth: avoid killing an already killed socket + - isdn: Disable IIOCDBGVAR + - net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd() + - hv/netvsc: Fix NULL dereference at single queue mode fallback + - r8169: don't use MSI-X on RTL8106e + - ip_vti: fix a null pointer deferrence when create vti fallback tunnel + - net: ethernet: mvneta: Fix napi structure mixup on armada 3700 + - net: mvneta: fix mvneta_config_rss on armada 3700 + - cls_matchall: fix tcf_unbind_filter missing + - Linux 4.18.4 + + * Cosmic update to v4.18.3 stable release (LP: #1788453) + - x86/speculation/l1tf: Exempt zeroed PTEs from inversion + - Linux 4.18.3 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) + - x86/l1tf: Fix build error seen if CONFIG_KVM_INTEL is disabled + - x86: i8259: Add missing include file + - x86/hyper-v: Check for VP_INVAL in hyperv_flush_tlb_others() + - x86/platform/UV: Mark memblock related init code and data correctly + - x86/mm/pti: Clear Global bit more aggressively + - xen/pv: Call get_cpu_address_sizes to set x86_virt/phys_bits + - x86/mm: Disable ioremap free page handling on x86-PAE + - kbuild: verify that $DEPMOD is installed + - crypto: ccree - fix finup + - crypto: ccree - fix iv handling + - crypto: ccp - Check for NULL PSP pointer at module unload + - crypto: ccp - Fix command completion detection race + - crypto: x86/sha256-mb - fix digest copy in sha256_mb_mgr_get_comp_job_avx2() + - crypto: vmac - require a block cipher with 128-bit block size + - crypto: vmac - separate tfm and request context + - crypto: blkcipher - fix crash flushing dcache in error path + - crypto: ablkcipher - fix crash flushing dcache in error path + - crypto: skcipher - fix aligning block size in skcipher_copy_iv() + - crypto: skcipher - fix crash flushing dcache in error path + - ioremap: Update pgtable free interfaces with addr + - x86/mm: Add TLB purge to free pmd/pte page interfaces + - Linux 4.18.2 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) // CVE-2018-9363 + - Bluetooth: hidp: buffer overflow in hidp_process_report + + * linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before + walinuxagent.service (LP: #1739107) + - [Debian] hyper-v -- Ensure that hv-kvp-daemon.service starts before + walinuxagent.service + + * Miscellaneous Ubuntu changes + - SAUCE: ipvs: remove nbsp characters from Kconfig + - [Config] CONFIG_MPROFILE_KERNEL=y for ppc64el + - [Config] CONFIG_DRM_RCAR_LVDS=m for snapdragon + - [Config] CONFIG_MDIO_MSCC_MIIM=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROSEMI=n, CONFIG_NET_VENDOR_NI=n for s390x + - [Config] update annotations following config review + - [Debian] set CROSS_COMPILE when generating kernel configs + - [Config] Disable the Speck cipher + + -- Seth Forshee Fri, 24 Aug 2018 14:18:15 -0500 + +linux (4.18.0-5.6) cosmic; urgency=medium + + * Cosmic update to v4.18.1 stable release (LP: #1787264) + - x86/paravirt: Fix spectre-v2 mitigations for paravirt guests + - x86/speculation: Protect against userspace-userspace spectreRSB + - kprobes/x86: Fix %p uses in error messages + - x86/irqflags: Provide a declaration for native_save_fl + - x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT + - x86/speculation/l1tf: Change order of offset/type in swap entry + - x86/speculation/l1tf: Protect swap entries against L1TF + - x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation + - x86/speculation/l1tf: Make sure the first page is always reserved + - x86/speculation/l1tf: Add sysfs reporting for l1tf + - x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings + - x86/speculation/l1tf: Limit swap file size to MAX_PA/2 + - x86/bugs: Move the l1tf function and define pr_fmt properly + - sched/smt: Update sched_smt_present at runtime + - x86/smp: Provide topology_is_primary_thread() + - x86/topology: Provide topology_smt_supported() + - cpu/hotplug: Make bringup/teardown of smp threads symmetric + - cpu/hotplug: Split do_cpu_down() + - cpu/hotplug: Provide knobs to control SMT + - x86/cpu: Remove the pointless CPU printout + - x86/cpu/AMD: Remove the pointless detect_ht() call + - x86/cpu/common: Provide detect_ht_early() + - x86/cpu/topology: Provide detect_extended_topology_early() + - x86/cpu/intel: Evaluate smp_num_siblings early + - x86/CPU/AMD: Do not check CPUID max ext level before parsing SMP info + - x86/cpu/AMD: Evaluate smp_num_siblings early + - x86/apic: Ignore secondary threads if nosmt=force + - x86/speculation/l1tf: Extend 64bit swap file size limit + - x86/cpufeatures: Add detection of L1D cache flush support. + - x86/CPU/AMD: Move TOPOEXT reenablement before reading smp_num_siblings + - x86/speculation/l1tf: Protect PAE swap entries against L1TF + - x86/speculation/l1tf: Fix up pte->pfn conversion for PAE + - Revert "x86/apic: Ignore secondary threads if nosmt=force" + - cpu/hotplug: Boot HT siblings at least once + - x86/KVM: Warn user if KVM is loaded SMT and L1TF CPU bug being present + - x86/KVM/VMX: Add module argument for L1TF mitigation + - x86/KVM/VMX: Add L1D flush algorithm + - x86/KVM/VMX: Add L1D MSR based flush + - x86/KVM/VMX: Add L1D flush logic + - x86/KVM/VMX: Split the VMX MSR LOAD structures to have an host/guest numbers + - x86/KVM/VMX: Add find_msr() helper function + - x86/KVM/VMX: Separate the VMX AUTOLOAD guest/host number accounting + - x86/KVM/VMX: Extend add_atomic_switch_msr() to allow VMENTER only MSRs + - x86/KVM/VMX: Use MSR save list for IA32_FLUSH_CMD if required + - cpu/hotplug: Online siblings when SMT control is turned on + - x86/litf: Introduce vmx status variable + - x86/kvm: Drop L1TF MSR list approach + - x86/l1tf: Handle EPT disabled state proper + - x86/kvm: Move l1tf setup function + - x86/kvm: Add static key for flush always + - x86/kvm: Serialize L1D flush parameter setter + - x86/kvm: Allow runtime control of L1D flush + - cpu/hotplug: Expose SMT control init function + - cpu/hotplug: Set CPU_SMT_NOT_SUPPORTED early + - x86/bugs, kvm: Introduce boot-time control of L1TF mitigations + - Documentation: Add section about CPU vulnerabilities + - x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures + - x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content + - Documentation/l1tf: Fix typos + - cpu/hotplug: detect SMT disabled by BIOS + - x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() + - x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond' + - x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush() + - x86/irq: Demote irq_cpustat_t::__softirq_pending to u16 + - x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d + - x86: Don't include linux/irq.h from asm/hardirq.h + - x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d + - x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr() + - Documentation/l1tf: Remove Yonah processors from not vulnerable list + - x86/speculation: Simplify sysfs report of VMX L1TF vulnerability + - x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry + - KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry + - cpu/hotplug: Fix SMT supported evaluation + - x86/speculation/l1tf: Invert all not present mappings + - x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert + - x86/mm/pat: Make set_memory_np() L1TF safe + - x86/mm/kmmio: Make the tracer robust against L1TF + - tools headers: Synchronise x86 cpufeatures.h for L1TF additions + - x86/microcode: Allow late microcode loading with SMT disabled + - x86/smp: fix non-SMP broken build due to redefinition of + apic_id_is_primary_thread + - cpu/hotplug: Non-SMP machines do not make use of booted_once + - x86/init: fix build with CONFIG_SWAP=n + - Linux 4.18.1 + - [Config] updateconfigs after v4.18.1 stable update + + * Consider enabling CONFIG_NETWORK_PHY_TIMESTAMPING (LP: #1785816) + - [Config] Enable timestamping in network PHY devices + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SYSCTL_SYSCALL=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.18 + + -- Seth Forshee Wed, 15 Aug 2018 14:20:59 -0500 + +linux (4.18.0-4.5) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc8 + + -- Seth Forshee Mon, 06 Aug 2018 13:54:02 -0500 + +linux (4.18.0-3.4) cosmic; urgency=medium + + * Suspend fails in Ubuntu and Kubuntu 18.04 but works fine in Ubuntu and + Kubuntu 17.10 (and on Kubuntu 18.04 using kernel 4.14.47) (LP: #1774950) + - ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation + + * hinic interfaces aren't getting predictable names (LP: #1783138) + - hinic: Link the logical network device to the pci device in sysfs + + * libvirtd is unable to configure bridge devices inside of LXD containers + (LP: #1784501) + - kernfs: allow creating kernfs objects with arbitrary uid/gid + - sysfs, kobject: allow creating kobject belonging to arbitrary users + - kobject: kset_create_and_add() - fetch ownership info from parent + - driver core: set up ownership of class devices in sysfs + - net-sysfs: require net admin in the init ns for setting tx_maxrate + - net-sysfs: make sure objects belong to container's owner + - net: create reusable function for getting ownership info of sysfs inodes + - bridge: make sure objects belong to container's owner + - sysfs: Fix regression when adding a file to an existing group + + * locking sockets broken due to missing AppArmor socket mediation patches + (LP: #1780227) + - UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets + + * Update2 for ocxl driver (LP: #1781436) + - ocxl: Fix page fault handler in case of fault on dying process + + * HDMI/DP audio can't work on the laptop of Dell Latitude 5495 (LP: #1782689) + - ALSA: hda: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA + - vga_switcheroo: set audio client id according to bound GPU id + + * Allow Raven Ridge's audio controller to be runtime suspended (LP: #1782540) + - ALSA: hda: Add AZX_DCAPS_PM_RUNTIME for AMD Raven Ridge + + * Invoking obsolete 'firmware_install' target breaks snap build (LP: #1782166) + - snapcraft.yaml: stop invoking the obsolete (and non-existing) + 'firmware_install' target + + * snapcraft.yaml: missing ubuntu-retpoline-extract-one script breaks the build + (LP: #1782116) + - snapcraft.yaml: copy retpoline-extract-one to scripts before build + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc7 + + -- Seth Forshee Wed, 01 Aug 2018 08:49:40 -0500 + +linux (4.18.0-2.3) cosmic; urgency=medium + + * Kernel error "task zfs:pid blocked for more than 120 seconds" (LP: #1781364) + - SAUCE: (noup) zfs to 0.7.9-3ubuntu4 + + * [Regression] EXT4-fs error (device sda1): ext4_validate_inode_bitmap:99: + comm stress-ng: Corrupt inode bitmap (LP: #1780137) + - SAUCE: ext4: fix ext4_validate_inode_bitmap: comm stress-ng: Corrupt inode + bitmap + + * Cloud-init causes potentially huge boot delays with 4.15 kernels + (LP: #1780062) + - random: Make getrandom() ready earlier + + * hisi_sas_v3_hw: internal task abort: timeout and not done. (LP: #1777736) + - scsi: hisi_sas: Update a couple of register settings for v3 hw + + * hisi_sas: Add missing PHY spinlock init (LP: #1777734) + - scsi: hisi_sas: Add missing PHY spinlock init + + * hisi_sas: improve read performance by pre-allocating slot DMA buffers + (LP: #1777727) + - scsi: hisi_sas: Use dmam_alloc_coherent() + - scsi: hisi_sas: Pre-allocate slot DMA buffers + + * hisi_sas: Failures during host reset (LP: #1777696) + - scsi: hisi_sas: Only process broadcast change in phy_bcast_v3_hw() + - scsi: hisi_sas: Fix the conflict between dev gone and host reset + - scsi: hisi_sas: Adjust task reject period during host reset + - scsi: hisi_sas: Add a flag to filter PHY events during reset + - scsi: hisi_sas: Release all remaining resources in clear nexus ha + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu2, zfs to 0.7.9-3ubuntu3 + - SAUCE: mm: Fix exports that inadvertently make put_page() EXPORT_SYMBOL_GPL + - Enable zfs build + - SAUCE: Import aufs driver + - Revert "UBUNTU: [Config]: set CONFIG_EDAC_DEBUG=y for ARM64" + - [Config] retpoline -- review and accept retpoline changes + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc5 + * Rebase to v4.18-rc6 + + -- Seth Forshee Tue, 24 Jul 2018 08:41:22 -0500 + +linux (4.18.0-1.2) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc4 + + -- Seth Forshee Mon, 09 Jul 2018 07:36:31 -0500 + +linux (4.18.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) ima: require secure_boot rules in lockdown mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) lockdown: fix coordination of kernel module signature + verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + - SAUCE: Import aufs driver + - Update dropped.txt + - [Config] updateconfigs after 4.18-rc3 rebase + - SAUCE: (no-up): ASoC: Intel: bytcr-rt5660: Remove snd_soc_codec use for 4.18 + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc3 + + -- Seth Forshee Fri, 06 Jul 2018 10:46:37 -0500 + +linux (4.18.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 03 Jul 2018 11:10:33 -0500 + +linux (4.17.0-4.5) cosmic; urgency=medium + + * linux: 4.17.0-4.5 -proposed tracker (LP: #1779399) + + * Update to ocxl driver for 18.04.1 (LP: #1775786) + - powerpc: Add TIDR CPU feature for POWER9 + - powerpc: Use TIDR CPU feature to control TIDR allocation + - powerpc: use task_pid_nr() for TID allocation + - ocxl: Rename pnv_ocxl_spa_remove_pe to clarify it's action + - ocxl: Expose the thread_id needed for wait on POWER9 + - ocxl: Add an IOCTL so userspace knows what OCXL features are available + - ocxl: Document new OCXL IOCTLs + - ocxl: Fix missing unlock on error in afu_ioctl_enable_p9_wait() + + * Please include ax88179_178a and r8152 modules in d-i udeb (LP: #1771823) + - [Config:] d-i: Add ax88179_178a and r8152 to nic-modules + + * glibc pkeys test fail on powerpc (LP: #1776967) + - [Config] Temporarily disable CONFIG_PPC_MEM_KEYS + + * After update to 4.13-43 Intel Graphics are Laggy (LP: #1773520) + - Revert "drm/i915/edp: Allow alternate fixed mode for eDP if available." + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu1, zfs to 0.7.9-3ubuntu1 + + -- Seth Forshee Fri, 29 Jun 2018 13:37:52 -0500 + +linux (4.17.0-3.4) cosmic; urgency=medium + + * linux: 4.17.0-3.4 -proposed tracker (LP: #1779124) + + * Cosmic update to v4.17.3 stable release (LP: #1778997) + - net: aquantia: fix unsigned numvecs comparison with less than zero + - bonding: re-evaluate force_primary when the primary slave name changes + - cdc_ncm: avoid padding beyond end of skb + - ipv6: allow PMTU exceptions to local routes + - net: dsa: add error handling for pskb_trim_rcsum + - net: phy: dp83822: use BMCR_ANENABLE instead of BMSR_ANEGCAPABLE for DP83620 + - net/sched: act_simple: fix parsing of TCA_DEF_DATA + - tcp: verify the checksum of the first data segment in a new connection + - tls: fix use-after-free in tls_push_record + - tls: fix waitall behavior in tls_sw_recvmsg + - socket: close race condition between sock_close() and sockfs_setattr() + - udp: fix rx queue len reported by diag and proc interface + - net: in virtio_net_hdr only add VLAN_HLEN to csum_start if payload holds + vlan + - hv_netvsc: Fix a network regression after ifdown/ifup + - ACPICA: AML parser: attempt to continue loading table after error + - ext4: fix hole length detection in ext4_ind_map_blocks() + - ext4: update mtime in ext4_punch_hole even if no blocks are released + - ext4: do not allow external inodes for inline data + - ext4: bubble errors from ext4_find_inline_data_nolock() up to ext4_iget() + - ext4: correctly handle a zero-length xattr with a non-zero e_value_offs + - ext4: fix fencepost error in check for inode count overflow during resize + - driver core: Don't ignore class_dir_create_and_add() failure. + - Btrfs: allow empty subvol= again + - Btrfs: fix clone vs chattr NODATASUM race + - Btrfs: fix memory and mount leak in btrfs_ioctl_rm_dev_v2() + - btrfs: return error value if create_io_em failed in cow_file_range + - btrfs: scrub: Don't use inode pages for device replace + - ALSA: usb-audio: Disable the quirk for Nura headset + - ALSA: hda/conexant - Add fixup for HP Z2 G4 workstation + - ALSA: hda - Handle kzalloc() failure in snd_hda_attach_pcm_stream() + - ALSA: hda: add dock and led support for HP EliteBook 830 G5 + - ALSA: hda: add dock and led support for HP ProBook 640 G4 + - x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read() + - smb3: fix various xid leaks + - smb3: on reconnect set PreviousSessionId field + - CIFS: 511c54a2f69195b28afb9dd119f03787b1625bb4 adds a check for session + expiry + - cifs: For SMB2 security informaion query, check for minimum sized security + descriptor instead of sizeof FileAllInformation class + - nbd: fix nbd device deletion + - nbd: update size when connected + - nbd: use bd_set_size when updating disk size + - blk-mq: reinit q->tag_set_list entry only after grace period + - bdi: Move cgroup bdi_writeback to a dedicated low concurrency workqueue + - cpufreq: Fix new policy initialization during limits updates via sysfs + - cpufreq: ti-cpufreq: Fix an incorrect error return value + - cpufreq: governors: Fix long idle detection logic in load calculation + - libata: zpodd: small read overflow in eject_tray() + - libata: Drop SanDisk SD7UB3Q*G1001 NOLPM quirk + - nvme/pci: Sync controller reset for AER slot_reset + - w1: mxc_w1: Enable clock before calling clk_get_rate() on it + - x86/vector: Fix the args of vector_alloc tracepoint + - x86/apic/vector: Prevent hlist corruption and leaks + - x86/apic: Provide apic_ack_irq() + - x86/ioapic: Use apic_ack_irq() + - x86/platform/uv: Use apic_ack_irq() + - irq_remapping: Use apic_ack_irq() + - genirq/generic_pending: Do not lose pending affinity update + - genirq/affinity: Defer affinity setting if irq chip is busy + - genirq/migration: Avoid out of line call if pending is not set + - x86/intel_rdt: Enable CMT and MBM on new Skylake stepping + - media: uvcvideo: Prevent setting unavailable flags + - media: rc: ensure input/lirc device can be opened after register + - iwlwifi: fw: harden page loading code + - orangefs: set i_size on new symlink + - orangefs: report attributes_mask and attributes for statx + - HID: intel_ish-hid: ipc: register more pm callbacks to support hibernation + - HID: wacom: Correct logical maximum Y for 2nd-gen Intuos Pro large + - vhost: fix info leak due to uninitialized memory + - mm, page_alloc: do not break __GFP_THISNODE by zonelist reset + - Linux 4.17.3 + + * Use-after-free in sk_peer_label (LP: #1778646) + - SAUCE: apparmor: fix use after free in sk_peer_label + + * kernel: Fix memory leak on CCA and EP11 CPRB processing. (LP: #1775390) + - s390/zcrypt: Fix CCA and EP11 CPRB processing failure memory leak. + + * Various fixes for CXL kernel module (LP: #1774471) + - cxl: Configure PSL to not use APC virtual machines + - cxl: Disable prefault_mode in Radix mode + + * Bluetooth not working (LP: #1764645) + - Bluetooth: btusb: Apply QCA Rome patches for some ATH3012 models + + * Fake SAS addresses for SATA disks on HiSilicon D05 are non-unique + (LP: #1776750) + - scsi: hisi_sas: make SAS address of SATA disks unique + + * linux-snapdragon: wcn36xx: mac address generation on boot (LP: #1776491) + - [Config] arm64: snapdragon: WCN36XX_SNAPDRAGON_HACKS=y + - SAUCE: wcn36xx: read MAC from file or randomly generate one + + * Lenovo V330 needs patch in ideapad_laptop module for rfkill (LP: #1774636) + - SAUCE: Add Lenovo V330 to the ideapad_laptop rfkill blacklist + + * register on binfmt_misc may overflow and crash the system (LP: #1775856) + - fs/binfmt_misc.c: do not allow offset overflow + + * Network installs fail on SocioNext board (LP: #1775884) + - net: socionext: reset hardware in ndo_stop + - net: netsec: enable tx-irq during open callback + + * Fix several bugs in RDMA/hns driver (LP: #1770974) + - RDMA/hns: Drop local zgid in favor of core defined variable + - RDMA/hns: Add 64KB page size support for hip08 + - RDMA/hns: Rename the idx field of db + - RDMA/hns: Modify uar allocation algorithm to avoid bitmap exhaust + - RDMA/hns: Increase checking CMQ status timeout value + - RDMA/hns: Add reset process for RoCE in hip08 + - RDMA/hns: Fix the illegal memory operation when cross page + - RDMA/hns: Implement the disassociate_ucontext API + + * powerpc/livepatch: Implement reliable stack tracing for the consistency + model (LP: #1771844) + - powerpc/livepatch: Implement reliable stack tracing for the consistency + model + + * Adding back alx WoL feature (LP: #1772610) + - SAUCE: Revert "alx: remove WoL support" + - SAUCE: alx: add enable_wol paramenter + + * Lancer A0 Asic HBA's won't boot with 18.04 (LP: #1768103) + - scsi: lpfc: Fix WQ/CQ creation for older asic's. + - scsi: lpfc: Fix 16gb hbas failing cq create. + + * [LTCTest][OPAL][OP920] cpupower idle-info is not listing stop4 and stop5 + idle states when all CORES are guarded (LP: #1771780) + - powerpc/powernv/cpuidle: Init all present cpus for deep states + + * Huawei 25G/100G Network Adapters Unsupported (LP: #1770970) + - net-next/hinic: add pci device ids for 25ge and 100ge card + + * Expose arm64 CPU topology to userspace (LP: #1770231) + - drivers: base: cacheinfo: move cache_setup_of_node() + - drivers: base: cacheinfo: setup DT cache properties early + - cacheinfo: rename of_node to fw_token + - arm64/acpi: Create arch specific cpu to acpi id helper + - ACPI/PPTT: Add Processor Properties Topology Table parsing + - [Config] CONFIG_ACPI_PPTT=y + - ACPI: Enable PPTT support on ARM64 + - drivers: base cacheinfo: Add support for ACPI based firmware tables + - arm64: Add support for ACPI based firmware tables + - arm64: topology: rename cluster_id + - arm64: topology: enable ACPI/PPTT based CPU topology + - ACPI: Add PPTT to injectable table list + - arm64: topology: divorce MC scheduling domain from core_siblings + + * Vcs-Git header on bionic linux source package points to zesty git tree + (LP: #1766055) + - [Packaging]: Update Vcs-Git + + * Request to revert SAUCE patches in the 18.04 SRU and update with upstream + version (LP: #1768431) + - scsi: cxlflash: Handle spurious interrupts + - scsi: cxlflash: Remove commmands from pending list on timeout + - scsi: cxlflash: Synchronize reset and remove ops + - SAUCE: (no-up) cxlflash: OCXL diff between v2 and v3 + + * hisi_sas robustness fixes (LP: #1774466) + - scsi: hisi_sas: delete timer when removing hisi_sas driver + - scsi: hisi_sas: print device id for errors + - scsi: hisi_sas: Add some checks to avoid free'ing a sas_task twice + - scsi: hisi_sas: check host frozen before calling "done" function + - scsi: hisi_sas: check sas_dev gone earlier in hisi_sas_abort_task() + - scsi: hisi_sas: stop controller timer for reset + - scsi: hisi_sas: update PHY linkrate after a controller reset + - scsi: hisi_sas: change slot index allocation mode + - scsi: hisi_sas: Change common allocation mode of device id + - scsi: hisi_sas: Reset disks when discovered + - scsi: hisi_sas: Create a scsi_host_template per HW module + - scsi: hisi_sas: Init disks after controller reset + - scsi: hisi_sas: Try wait commands before before controller reset + - scsi: hisi_sas: Include TMF elements in struct hisi_sas_slot + - scsi: hisi_sas: Add v2 hw force PHY function for internal ATA command + - scsi: hisi_sas: Terminate STP reject quickly for v2 hw + - scsi: hisi_sas: Fix return value when get_free_slot() failed + - scsi: hisi_sas: Mark PHY as in reset for nexus reset + + * hisi_sas: Support newer v3 hardware (LP: #1774467) + - scsi: hisi_sas: update RAS feature for later revision of v3 HW + - scsi: hisi_sas: check IPTT is valid before using it for v3 hw + - scsi: hisi_sas: fix PI memory size + - scsi: hisi_sas: config ATA de-reset as an constrained command for v3 hw + - scsi: hisi_sas: remove redundant handling to event95 for v3 + - scsi: hisi_sas: add readl poll timeout helper wrappers + - scsi: hisi_sas: workaround a v3 hw hilink bug + - scsi: hisi_sas: Add LED feature for v3 hw + + * hisi_sas: improve performance by optimizing DQ locking (LP: #1774472) + - scsi: hisi_sas: optimise the usage of DQ locking + - scsi: hisi_sas: relocate smp sg map + - scsi: hisi_sas: make return type of prep functions void + - scsi: hisi_sas: allocate slot buffer earlier + - scsi: hisi_sas: Don't lock DQ for complete task sending + - scsi: hisi_sas: Use device lock to protect slot alloc/free + - scsi: hisi_sas: add check of device in hisi_sas_task_exec() + - scsi: hisi_sas: fix a typo in hisi_sas_task_prep() + + * FS-Cache: Assertion failed: FS-Cache: 6 == 5 is false (LP: #1774336) + - SAUCE: CacheFiles: fix a read_waiter/read_copier race + + * enable mic-mute hotkey and led on Lenovo M820z and M920z (LP: #1774306) + - ALSA: hda/realtek - Enable mic-mute hotkey for several Lenovo AIOs + + * hns3 driver updates (LP: #1768670) + - net: hns3: Remove error log when getting pfc stats fails + - net: hns3: fix to correctly fetch l4 protocol outer header + - net: hns3: Fixes the out of bounds access in hclge_map_tqp + - net: hns3: Fixes the error legs in hclge_init_ae_dev function + - net: hns3: fix for phy_addr error in hclge_mac_mdio_config + - net: hns3: Fix to support autoneg only for port attached with phy + - net: hns3: fix a dead loop in hclge_cmd_csq_clean + - net: hns3: Fix for packet loss due wrong filter config in VLAN tbls + - net: hns3: Remove packet statistics in the range of 8192~12287 + - net: hns3: Add support of hardware rx-vlan-offload to HNS3 VF driver + - net: hns3: Fix for setting mac address when resetting + - net: hns3: remove add/del_tunnel_udp in hns3_enet module + - net: hns3: fix for cleaning ring problem + - net: hns3: refactor the loopback related function + - net: hns3: Fix for deadlock problem occurring when unregistering ae_algo + - net: hns3: Fix for the null pointer problem occurring when initializing + ae_dev failed + - net: hns3: Add a check for client instance init state + - net: hns3: Change return type of hnae3_register_ae_dev + - net: hns3: Change return type of hnae3_register_ae_algo + - net: hns3: Change return value in hnae3_register_client + - net: hns3: Fixes the back pressure setting when sriov is enabled + - net: hns3: Fix for fiber link up problem + - net: hns3: Add support of .sriov_configure in HNS3 driver + - net: hns3: Fixes the missing PCI iounmap for various legs + - net: hns3: Fixes error reported by Kbuild and internal review + - net: hns3: Fixes API to fetch ethernet header length with kernel default + - net: hns3: cleanup of return values in hclge_init_client_instance() + - net: hns3: Fix the missing client list node initialization + - net: hns3: Fix for hns3 module is loaded multiple times problem + - net: hns3: Use enums instead of magic number in hclge_is_special_opcode + - net: hns3: Fix for netdev not running problem after calling net_stop and + net_open + - net: hns3: Fixes kernel panic issue during rmmod hns3 driver + - net: hns3: Fix for CMDQ and Misc. interrupt init order problem + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: Add support for tx_accept_tag2 and tx_accept_untag2 config + - net: hns3: Add STRP_TAGP field support for hardware revision 0x21 + - net: hns3: Add support to enable TX/RX promisc mode for H/W rev(0x21) + - net: hns3: Fix for PF mailbox receving unknown message + - net: hns3: Fixes the state to indicate client-type initialization + - net: hns3: Fixes the init of the VALID BD info in the descriptor + - net: hns3: Removes unnecessary check when clearing TX/RX rings + - net: hns3: Clear TX/RX rings when stopping port & un-initializing client + - net: hns3: Remove unused led control code + - net: hns3: Adds support for led locate command for copper port + - net: hns3: Fixes initalization of RoCE handle and makes it conditional + - net: hns3: Disable vf vlan filter when vf vlan table is full + - net: hns3: Add support for IFF_ALLMULTI flag + - net: hns3: Add repeat address checking for setting mac address + - net: hns3: Fix setting mac address error + - net: hns3: Fix for service_task not running problem after resetting + - net: hns3: Fix for hclge_reset running repeatly problem + - net: hns3: Fix for phy not link up problem after resetting + - net: hns3: Add missing break in misc_irq_handle + - net: hns3: Fix for vxlan tx checksum bug + - net: hns3: Optimize the PF's process of updating multicast MAC + - net: hns3: Optimize the VF's process of updating multicast MAC + - SAUCE: {topost} net: hns3: add support for serdes loopback selftest + - SAUCE: {topost} net: hns3: RX BD information valid only in last BD except + VLD bit and buffer size + - SAUCE: {topost} net: hns3: remove hclge_get_vector_index from + hclge_bind_ring_with_vector + - SAUCE: {topost} net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - SAUCE: {topost} net: hns3: add vector status check before free vector + - SAUCE: {topost} net: hns3: add l4_type check for both ipv4 and ipv6 + - SAUCE: {topost} net: hns3: remove unused head file in hnae3.c + - SAUCE: {topost} net: hns3: extraction an interface for state state + init|uninit + - SAUCE: {topost} net: hns3: print the ret value in error information + - SAUCE: {topost} net: hns3: remove the Redundant put_vector in + hns3_client_uninit + - SAUCE: {topost} net: hns3: add unlikely for error check + - SAUCE: {topost} net: hns3: remove back in struct hclge_hw + - SAUCE: {topost} net: hns3: use lower_32_bits and upper_32_bits + - SAUCE: {topost} net: hns3: remove unused hclge_ring_to_dma_dir + - SAUCE: {topost} net: hns3: remove useless code in hclge_cmd_send + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean + - SAUCE: {topost} net: hns3: using modulo for cyclic counters in + hclge_cmd_send + - SAUCE: {topost} net: hns3: remove a redundant hclge_cmd_csq_done + - SAUCE: {topost} net: hns3: remove some unused members of some structures + - SAUCE: {topost} net: hns3: give default option while dependency HNS3 set + - SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead of + kzalloc/dma_map_single + - SAUCE: {topost} net: hns3: modify hnae_ to hnae3_ + - SAUCE: {topost} net: hns3: fix unused function warning in VF driver + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: standardize the handle of return value + - SAUCE: {topost} net: hns3: remove extra space and brackets + - SAUCE: {topost} net: hns3: fix unreasonable code comments + - SAUCE: {topost} net: hns3: use decimal for bit offset macros + - SAUCE: {topost} net: hns3: modify inconsistent bit mask macros + - SAUCE: {topost} net: hns3: fix mislead parameter name + - SAUCE: {topost} net: hns3: remove unused struct member and definition + - SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver + - SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE + - SAUCE: {topost} net: hns3: optimize the process of notifying roce client + - SAUCE: {topost} net: hns3: Add calling roce callback function when link + status change + - SAUCE: {topost} net: hns3: fix tc setup when netdev is first up + - SAUCE: {topost} net: hns3: fix for mac pause not disable in pfc mode + - SAUCE: {topost} net: hns3: fix for waterline not setting correctly + - SAUCE: {topost} net: hns3: fix for l4 checksum offload bug + - SAUCE: {topost} net: hns3: fix for mailbox message truncated problem + - SAUCE: {topost} net: hns3: Add configure for mac minimal frame size + - SAUCE: {topost} net: hns3: fix warning bug when doing lp selftest + - SAUCE: {topost} net: hns3: fix get_vector ops in hclgevf_main module + - SAUCE: {topost} net: hns3: remove the warning when clear reset cause + - SAUCE: {topost} net: hns3: Use roce handle when calling roce callback + function + - SAUCE: {topost} net: hns3: prevent sending command during global or core + reset + - SAUCE: {topost} net: hns3: modify the order of initializeing command queue + register + - SAUCE: {topost} net: hns3: reset net device with rtnl_lock + - SAUCE: {topost} net: hns3: prevent to request reset frequently + - SAUCE: {topost} net: hns3: correct reset event status register + - SAUCE: {topost} net: hns3: separate roce from nic when resetting + - SAUCE: net: hns3: Fix for phy link issue when using marvell phy driver + - SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet + - SAUCE: {topost} net: hns3: remove unnecessary ring configuration operation + while resetting + - SAUCE: {topost} net: hns3: fix for reset_level default assignment probelm + - SAUCE: {topost} net: hns3: fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - SAUCE: {topost} net: hns3: fix comments for hclge_get_ring_chain_from_mbx + - SAUCE: net: hns3: Fix for VF mailbox cannot receiving PF response + - SAUCE: net: hns3: Fix for VF mailbox receiving unknown message + - SAUCE: net: hns3: Optimize PF CMDQ interrupt switching process + + * CVE-2018-7755 + - SAUCE: floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl + + * Incorrect blacklist of bcm2835_wdt (LP: #1766052) + - [Packaging] Fix missing watchdog for Raspberry Pi + + * kernel: Fix arch random implementation (LP: #1775391) + - s390/archrandom: Rework arch random implementation. + + * [Ubuntu 1804][boston][ixgbe] EEH causes kernel BUG at /build/linux- + jWa1Fv/linux-4.15.0/drivers/pci/msi.c:352 (i2S) (LP: #1776389) + - ixgbe/ixgbevf: Free IRQ when PCI error recovery removes the device + + * Cosmic update to v4.17.2 stable release (LP: #1779117) + - crypto: chelsio - request to HW should wrap + - blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers + - KVM: X86: Fix reserved bits check for MOV to CR3 + - KVM: x86: introduce linear_{read,write}_system + - kvm: fix typo in flag name + - kvm: nVMX: Enforce cpl=0 for VMX instructions + - KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and + kvm_write_guest_virt_system + - kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access + - staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy + - NFC: pn533: don't send USB data off of the stack + - usbip: vhci_sysfs: fix potential Spectre v1 + - usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver + - usb-storage: Add compatibility quirk flags for G-Technologies G-Drive + - Input: xpad - add GPD Win 2 Controller USB IDs + - phy: qcom-qusb2: Fix crash if nvmem cell not specified + - usb: core: message: remove extra endianness conversion in + usb_set_isoch_delay + - usb: typec: wcove: Remove dependency on HW FSM + - usb: gadget: function: printer: avoid wrong list handling in printer_write() + - usb: gadget: udc: renesas_usb3: fix double phy_put() + - usb: gadget: udc: renesas_usb3: should remove debugfs + - usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add + udc + - usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc + - usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error + - usb: gadget: udc: renesas_usb3: disable the controller's irqs for + reconnecting + - serial: sh-sci: Stop using printk format %pCr + - tty/serial: atmel: use port->name as name in request_irq() + - serial: samsung: fix maxburst parameter for DMA transactions + - serial: 8250: omap: Fix idling of clocks for unused uarts + - vmw_balloon: fixing double free when batching mode is off + - doc: fix sysfs ABI documentation + - arm64: defconfig: Enable CONFIG_PINCTRL_MT7622 by default + - tty: pl011: Avoid spuriously stuck-off interrupts + - crypto: ccree - correct host regs offset + - Input: goodix - add new ACPI id for GPD Win 2 touch screen + - Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID + - crypto: caam - strip input zeros from RSA input buffer + - crypto: caam - fix DMA mapping dir for generated IV + - crypto: caam - fix IV DMA mapping and updating + - crypto: caam/qi - fix IV DMA mapping and updating + - crypto: caam - fix size of RSA prime factor q + - crypto: cavium - Fix fallout from CONFIG_VMAP_STACK + - crypto: cavium - Limit result reading attempts + - crypto: vmx - Remove overly verbose printk from AES init routines + - crypto: vmx - Remove overly verbose printk from AES XTS init + - crypto: omap-sham - fix memleak + - Linux 4.17.2 + + * Cosmic update to v4.17.1 stable release (LP: #1779116) + - netfilter: nf_flow_table: attach dst to skbs + - bnx2x: use the right constant + - ip6mr: only set ip6mr_table from setsockopt when ip6mr_new_table succeeds + - ipv6: omit traffic class when calculating flow hash + - l2tp: fix refcount leakage on PPPoL2TP sockets + - netdev-FAQ: clarify DaveM's position for stable backports + - net: metrics: add proper netlink validation + - net/packet: refine check for priv area size + - rtnetlink: validate attributes in do_setlink() + - sctp: not allow transport timeout value less than HZ/5 for hb_timer + - team: use netdev_features_t instead of u32 + - vrf: check the original netdevice for generating redirect + - net: dsa: b53: Fix for brcm tag issue in Cygnus SoC + - ipmr: fix error path when ipmr_new_table fails + - PCI: hv: Do not wait forever on a device that has disappeared + - Linux 4.17.1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: crypto: thunderx_zip: Fix fallout from + CONFIG_VMAP_STACK" + - Revert "UBUNTU: SAUCE: cred: Add clone_cred() interface" + - SAUCE: apparmor: userspace queries + - SAUCE: apparmor: patch to provide compatibility with v2.x net rules + - SAUCE: apparmor: af_unix mediation + + -- Seth Forshee Thu, 28 Jun 2018 08:03:32 -0500 + +linux (4.17.0-2.3) cosmic; urgency=medium + + * linux: 4.17.0-2.3 -proposed tracker (LP: #1776276) + + * Miscellaneous Ubuntu changes + - Config: remove IrDA from annotations + - Config: remove scsi drivers from annotations + - Config: remove BT_HCIBTUART from annotations + - Config: pstore zlib support was renamed + - Config: disable NVRAM for armhf on annotations + - Config: Disable VT on s390x + - Config: Update SSB and B43/B44 options + - Config: some options not supported on some arches anymore + - Config: renamed and removed options + - Config: TCG_CRB is required for IMA on ACPI systems + - Config: EXTCON_AXP288 depends on X86 + - Config: CONFIG_FSI depends on OF + - Config: DRM_RCAR_LVDS now depends on DRM + - CONFIG: Allow CONFIG_LEDS_MLXCPLD for i386 + - Config: Enable HINIC on arm64 + - Config: Set PPS and PTP_1588_CLOCK as y + - Config: Some NF_TABLES options are built-in now + - Config: GENERIC_CPU for ppc64el + - Config: KEXEC_FILE=n for s390x + - Config: CRYPTO_DEFLATE is needed by PSTORE_DEFLATE_COMPRESS + - Config: Disable STM32 support + - Config: Enable FORTIFY_SOURCE for armhf + - Config: use STRONG instead of AUTO for CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * Rebase to v4.17 + + -- Thadeu Lima de Souza Cascardo Mon, 11 Jun 2018 15:22:10 -0300 + +linux (4.17.0-1.2) cosmic; urgency=medium + + [ Seth Forshee ] + * [Config] enable EDAC_DEBUG on ARM64 (LP: #1772516) + - [Config]: set CONFIG_EDAC_DEBUG=y for ARM64 + + * Ubuntu 18.04 kernel crashed while in degraded mode (LP: #1770849) + - SAUCE: powerpc/perf: Fix memory allocation for core-imc based on + num_possible_cpus() + + * Integrated Webcam Realtek Integrated_Webcam_HD (0bda:58f4) not working in + DELL XPS 13 9370 with firmware 1.50 (LP: #1763748) + - SAUCE: media: uvcvideo: Support realtek's UVC 1.5 device + + * Switch Build-Depends: transfig to fig2dev (LP: #1770770) + - [Config] update Build-Depends: transfig to fig2dev + + * update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware fails + to load (LP: #1728238) + - Revert "UBUNTU: SAUCE: (no-up) i915: Remove MODULE_FIRMWARE statements for + unreleased firmware" + + * No driver for Huawei network adapters on arm64 (LP: #1769899) + - net-next/hinic: add arm64 support + + * linux-snapdragon: reduce EPROBEDEFER noise during boot (LP: #1768761) + - [Config] snapdragon: DRM_I2C_ADV7511=y + + * Add d-i support for Huawei NICs (LP: #1767490) + - d-i: add hinic to nic-modules udeb + + * Acer Swift sf314-52 power button not managed (LP: #1766054) + - SAUCE: platform/x86: acer-wmi: add another KEY_POWER keycode + + * Include nfp driver in linux-modules (LP: #1768526) + - [Config] Add nfp.ko to generic inclusion list + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - [Config] CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y + - SAUCE: (efi-lockdown) really lock down kernel under EFI secure boot + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu3, zfs to 0.7.5-1ubuntu17 + - enable zfs build + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) ima: require secure_boot rules in + lockdown mode" + - Rebased to v4.17-rc6 + + -- Thadeu Lima de Souza Cascardo Tue, 22 May 2018 14:48:13 -0300 + +linux (4.17.0-0.1) bionic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.17-rc4 + + -- Thadeu Lima de Souza Cascardo Tue, 08 May 2018 16:38:51 -0300 + +linux (4.17.0-0.0) bionic; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Fri, 27 Apr 2018 11:01:13 -0300 + +linux (4.16.0-4.5) bionic; urgency=medium + + * [18.04 FEAT] Add kvm_stat from kernel tree (LP: #1734130) + - tools/kvm_stat: Fix python3 syntax + - tools/kvm_stat: Don't use deprecated file() + - tools/kvm_stat: Remove unused function + - [Packaging] Add linux-tools-host package for VM host tools + - [Config] do_tools_host=true for amd64 + + * [Featire] CNL: Enable RAPL support (LP: #1685712) + - powercap: RAPL: Add support for Cannon Lake + + * Bionic update to v4.16.2 stable release (LP: #1763388) + - sparc64: Oracle DAX driver depends on SPARC64 + - arp: fix arp_filter on l3slave devices + - net: dsa: Discard frames from unused ports + - net/ipv6: Increment OUTxxx counters after netfilter hook + - net/sched: fix NULL dereference in the error path of tcf_bpf_init() + - pptp: remove a buggy dst release in pptp_connect() + - sctp: do not leak kernel memory to user space + - sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6 + - vlan: also check phy_driver ts_info for vlan's real device + - net: fool proof dev_valid_name() + - ip_tunnel: better validate user provided tunnel names + - ipv6: sit: better validate user provided tunnel names + - ip6_gre: better validate user provided tunnel names + - ip6_tunnel: better validate user provided tunnel names + - vti6: better validate user provided tunnel names + - net_sched: fix a missing idr_remove() in u32_delete_key() + - nfp: use full 40 bits of the NSP buffer address + - Linux 4.16.2 + + * sky2 gigabit ethernet driver sometimes stops working after lid-open resume + from sleep (88E8055) (LP: #1758507) // Bionic update to v4.16.2 stable + release (LP: #1763388) + - sky2: Increase D3 delay to sky2 stops working after suspend + + * Merge the linux-snapdragon kernel into bionic master/snapdragon + (LP: #1763040) + - arm64: defconfig: enable REMOTEPROC + - arm64: defconfig: enable QCOM audio drivers for APQ8016 and DB410c + - kernel: configs; add distro.config + - arm64: configs: enable WCN36xx + - kernel: distro.config: enable debug friendly USB network adpater + - arm64: configs: enable QCOM Venus + - arm64: defconfig: Enable a53/apcs and avs + - arm64: defconfig: enable ondemand governor as default + - arm64: defconfig: enable QCOM_TSENS + - kernel: configs: enable dm_mod and dm_crypt + - Force the SMD regulator driver to be compiled-in + - arm64: defconfig: enable CFG80211_DEFAULT_PS by default + - arm64: configs: enable BT_QCOMSMD + - kernel: configs: add more USB net drivers + - arm64: defconfig: disable ANALOG_TV and DIGITAL_TV + - arm64: configs: Enable camera drivers + - kernel: configs: add freq stat to sysfs + - arm64: defconfig: enable CONFIG_USB_CONFIGFS_F_FS by default + - arm64: defconfig: Enable QRTR features + - kernel: configs: set USB_CONFIG_F_FS in distro.config + - kernel: distro.config: enable 'schedutil' CPUfreq governor + - kernel: distro.config: enable 'fq' and 'fq_codel' qdiscs + - kernel: distro.config: enable 'BBR' TCP congestion algorithm + - arm64: defconfig: enable LEDS_QCOM_LPG + - HACK: drm/msm/iommu: Remove runtime_put calls in map/unmap + - power: avs: Add support for CPR (Core Power Reduction) + - power: avs: cpr: Use raw mem access for qfprom + - power: avs: cpr: fix with new reg_sequence structures + - power: avs: cpr: Register with cpufreq-dt + - regulator: smd: Add floor and corner operations + - PM / OPP: Support adjusting OPP voltages at runtime + - PM / OPP: Drop RCU usage in dev_pm_opp_adjust_voltage() + - PM / OPP: HACK: Allow to set regulator without opp_list + - PM / OPP: Add a helper to get an opp regulator for device + - cpufreq: Add apq8016 to cpufreq-dt-platdev blacklist + - regulator: smd: Allow REGULATOR_QCOM_SMD_RPM=m + - ov5645: I2C address change + - i2c: Add Qualcomm Camera Control Interface driver + - camss: vfe: Skip first four frames from sensor + - camss: Do not register if no cameras are present + - i2c-qcom-cci: Fix run queue completion timeout + - i2c-qcom-cci: Fix I2C address bug + - media: ov5645: Fix I2C address + - drm/bridge/adv7511: Delay clearing of HPD interrupt status + - HACK: drm/msm/adv7511: Don't rely on interrupts for EDID parsing + - leds: Add driver for Qualcomm LPG + - wcn36xx: Fix warning due to duplicate scan_completed notification + - arm64: dts: Add CPR DT node for msm8916 + - arm64: dts: add spmi-regulator nodes + - arm64: dts: msm8916: Add cpufreq support + - arm64: dts: msm8916: Add a shared CPU opp table + - arm64: dts: msm8916: Add cpu cooling maps + - arm64: dts: pm8916: Mark the s2 regulator as always-on + - arm64: dts: qcom: msm8916: Add msm8916 A53 PLL DT node + - arm64: dts: qcom: msm8916: Use the new APCS mailbox driver + - arm64: dts: qcom: msm8916: Add clock properties to the APCS node + - dt-bindings: media: Binding document for Qualcomm Camera Control Interface + driver + - MAINTAINERS: Add Qualcomm Camera Control Interface driver + - DT: leds: Add Qualcomm Light Pulse Generator binding + - arm64: dts: qcom: msm8996: Add mpp and lpg blocks + - arm64: dts: qcom: Add pwm node for pm8916 + - arm64: dts: qcom: Add user LEDs on db820c + - arm64: dts: qcom: Add WiFI/BT LEDs on db820c + - ARM: dts: qcom: Add LPG node to pm8941 + - ARM: dts: qcom: honami: Add LPG node and RGB LED + - arm64: dts: qcom: Add Camera Control Interface support + - arm64: dts: qcom: Add apps_iommu vfe child node + - arm64: dts: qcom: Add camss device node + - arm64: dts: qcom: Add ov5645 device nodes + - arm64: dts: msm8916: Fix camera sensors I2C addresses + - arm: dts: qcom: db410c: Enable PWM signal on MPP4 + - packaging: arm64: add a uboot flavour - part1 + - packaging: arm64: add a uboot flavour - part2 + - packaging: arm64: add a uboot flavour - part3 + - packaging: arm64: add a uboot flavour - part4 + - packaging: arm64: add a uboot flavour - part5 + - packaging: arm64: rename uboot flavour to snapdragon + - [Config] updateconfigs after qcomlt import + - [Config] arm64: snapdragon: COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: MSM_GCC_8916=y + - [Config] arm64: snapdragon: REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: SPMI=y, SPMI_MSM_PMIC_ARB=y + - [Config] arm64: snapdragon: REGMAP_SPMI=y, PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: MFD_SPMI_PMIC=y + - [Config] arm64: snapdragon: QCOM_SMEM=y + - [Config] arm64: snapdragon: RPMSG=y, RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: QCOM_SMD_RPM=y, REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: QCOM_HIDMA=y, QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: QCOM_CPR=y + - [Config] arm64: snapdragon: QCOM_QFPROM=y, QCOM_TSENS=y + - [Config] arm64: snapdragon: MMC_SDHCI=y, MMC_SDHCI_PLTFM=y, MMC_SDHCI_MSM=y + - [Config] turn off DRM_MSM_REGISTER_LOGGING + - [Config] arm64: snapdragon: I2C_QUP=y + - [Config] arm64: snapdragon: SPI_QUP=y + - [Config] arm64: snapdragon: USB_ULPI_BUS=y, PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_CTRL=y + - [Config] arm64: snapdragon: QCOM_SMSM=y + - [Config] arm64: snapdragon: QCOM_SMP2P=y + - [Config] arm64: snapdragon: DRM_MSM=y + - [Config] arm64: snapdragon: SND_SOC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_PIL=m + - [Config] arm64: snapdragon: INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: MEDIA_SUBDRV_AUTOSELECT=y, VIDEO_OV5645=m + - [Config] arm64: snapdragon: SND_SOC_APQ8016_SBC=y, SND_SOC_LPASS_APQ8016=y + - [Config] arm64: snapdragon: SND_SOC_MSM8916_WCD_ANALOG=y, + SND_SOC_MSM8916_WCD_DIGITAL=y + - SAUCE: media: ov5645: skip address change if dt addr == default addr + - SAUCE: drm/msm/adv7511: wrap hacks under CONFIG_ADV7511_SNAPDRAGON_HACKS + #ifdefs + - [Config] arm64: snapdragon: ADV7511_SNAPDRAGON_HACKS=y + - [Packaging] fix up snapdragon abi paths + + * LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: Manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: Manage task security blobs + - SAUCE: LSM stacking: LSM: Manage remaining security blobs + - SAUCE: LSM stacking: LSM: General stacking + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: add apparmor and selinux proc dirs + - SAUCE: LSM stacking: remove procfs context interface + + * linux 4.13.0-13.14 ADT test failure with linux 4.13.0-13.14 + (LP: #1720779) // LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: check for invalid zero sized writes + + * Support cq/rq record doorbell for RDMA on HSilicon hip08 systems + (LP: #1762755) + - RDMA/hns: Support rq record doorbell for the user space + - RDMA/hns: Support cq record doorbell for the user space + - RDMA/hns: Support rq record doorbell for kernel space + - RDMA/hns: Support cq record doorbell for kernel space + - RDMA/hns: Fix cqn type and init resp + - RDMA/hns: Fix init resp when alloc ucontext + - RDMA/hns: Fix cq record doorbell enable in kernel + + * Replace LPC patchset with upstream version (LP: #1762758) + - Revert "UBUNTU: SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver" + - Revert "UBUNTU: SAUCE: HISI LPC: Add ACPI support" + - Revert "UBUNTU: SAUCE: ACPI / scan: do not enumerate Indirect IO host + children" + - Revert "UBUNTU: SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT + bindings" + - Revert "UBUNTU: SAUCE: OF: Add missing I/O range exception for indirect-IO + devices" + - Revert "UBUNTU: SAUCE: PCI: Apply the new generic I/O management on PCI IO + hosts" + - Revert "UBUNTU: SAUCE: PCI: Add fwnode handler as input param of + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: PCI: Remove unused __weak attribute in + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: LIB: Introduce a generic PIO mapping method" + - lib: Add generic PIO mapping method + - PCI: Remove __weak tag from pci_register_io_range() + - PCI: Add fwnode handler as input param of pci_register_io_range() + - PCI: Apply the new generic I/O management on PCI IO hosts + - of: Add missing I/O range exception for indirect-IO devices + - HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use + - ACPI / scan: Do not enumerate Indirect IO host children + - HISI LPC: Add ACPI support + - MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver + + * Enable Tunneled Operations on POWER9 (LP: #1762448) + - powerpc/powernv: Enable tunneled operations + - cxl: read PHB indications from the device tree + + * PSL traces reset after PERST for debug AFU image (LP: #1762462) + - cxl: Enable NORST bit in PSL_DEBUG register for PSL9 + + * NFS + sec=krb5 is broken (LP: #1759791) + - sunrpc: remove incorrect HMAC request initialization + + * Raspberry Pi 3 microSD support missing from the installer (LP: #1729128) + - d-i: add bcm2835 to block-modules + + * Backport USB core quirks (LP: #1762695) + - usb: core: Add "quirks" parameter for usbcore + - usb: core: Copy parameter string correctly and remove superfluous null check + - usb: core: Add USB_QUIRK_DELAY_CTRL_MSG to usbcore quirks + + * [Ubuntu 18.04] cryptsetup: 'device-mapper: reload ioctl on failed' when + setting up a second end-to-end encrypted disk (LP: #1762353) + - SAUCE: s390/crypto: Adjust s390 aes and paes cipher + + * System Z {kernel} UBUNTU18.04 wrong kernel config (LP: #1762719) + - s390: move nobp parameter functions to nospec-branch.c + - s390: add automatic detection of the spectre defense + - s390: report spectre mitigation via syslog + - s390: add sysfs attributes for spectre + - [Config] CONFIG_EXPOLINE_AUTO=y, CONFIG_KERNEL_NOBP=n for s390 + - s390: correct nospec auto detection init order + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 + - powerpc/64s: Wire up cpu_show_spectre_v2() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5753 + - powerpc/64s: Wire up cpu_show_spectre_v1() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5754 + - powerpc/rfi-flush: Move the logic to avoid a redo into the debugfs code + - powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again + - powerpc/rfi-flush: Always enable fallback flush on pseries + - powerpc/rfi-flush: Differentiate enabled and patched flush types + - powerpc/rfi-flush: Call setup_rfi_flush() after LPM migration + - powerpc/64s: Move cpu_show_meltdown() + - powerpc/64s: Enhance the information in cpu_show_meltdown() + - powerpc/powernv: Use the security flags in pnv_setup_rfi_flush() + - powerpc/pseries: Use the security flags in pseries_setup_rfi_flush() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 // + CVE-2017-5753 // CVE-2017-5754 + - powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags + - powerpc: Add security feature flags for Spectre/Meltdown + - powerpc/pseries: Set or clear security feature flags + - powerpc/powernv: Set or clear security feature flags + + * Hisilicon network subsystem 3 support (LP: #1761610) + - net: hns3: export pci table of hclge and hclgevf to userspace + - d-i: Add hns3 drivers to nic-modules + + * "ip a" command on a guest VM shows UNKNOWN status (LP: #1761534) + - virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS + + * perf vendor events arm64: Enable JSON events for ThunderX2 B0 (LP: #1760712) + - perf vendor events: Drop incomplete multiple mapfile support + - perf vendor events: Fix error code in json_events() + - perf vendor events: Drop support for unused topic directories + - perf vendor events: Add support for pmu events vendor subdirectory + - perf vendor events arm64: Relocate ThunderX2 JSON to cavium subdirectory + - perf vendor events arm64: Relocate Cortex A53 JSONs to arm subdirectory + - perf vendor events: Add support for arch standard events + - perf vendor events arm64: Add armv8-recommended.json + - perf vendor events arm64: Fixup ThunderX2 to use recommended events + - perf vendor events arm64: fixup A53 to use recommended events + - perf vendor events arm64: add HiSilicon hip08 JSON file + - perf vendor events arm64: Enable JSON events for ThunderX2 B0 + + * Warning "cache flush timed out!" seen when unloading the cxl driver + (LP: #1762367) + - cxl: Check if PSL data-cache is available before issue flush request + + * Bionic update to v4.16.1 stable release (LP: #1763170) + - bitmap: fix memset optimization on big-endian systems + - USB: serial: ftdi_sio: add RT Systems VX-8 cable + - USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator + - USB: serial: cp210x: add ELDAT Easywave RX09 id + - serial: 8250: Add Nuvoton NPCM UART + - mei: remove dev_err message on an unsupported ioctl + - /dev/mem: Avoid overwriting "err" in read_mem() + - media: usbtv: prevent double free in error case + - parport_pc: Add support for WCH CH382L PCI-E single parallel port card. + - crypto: lrw - Free rctx->ext with kzfree + - crypto: ccp - Fill the result buffer only on digest, finup, and final ops + - crypto: talitos - don't persistently map req_ctx->hw_context and + req_ctx->buf + - crypto: inside-secure - fix clock management + - crypto: testmgr - Fix incorrect values in PKCS#1 test vector + - crypto: talitos - fix IPsec cipher in length + - crypto: ahash - Fix early termination in hash walk + - crypto: caam - Fix null dereference at error path + - crypto: ccp - return an actual key size from RSA max_size callback + - crypto: arm,arm64 - Fix random regeneration of S_shipped + - crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one + - Bluetooth: hci_bcm: Add 6 new ACPI HIDs + - Btrfs: fix unexpected cow in run_delalloc_nocow + - siox: fix possible buffer overflow in device_add_store + - staging: comedi: ni_mio_common: ack ai fifo error interrupts. + - Revert "base: arch_topology: fix section mismatch build warnings" + - Input: ALPS - fix TrackStick detection on Thinkpad L570 and Latitude 7370 + - Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list + - Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad + - vt: change SGR 21 to follow the standards + - Fix slab name "biovec-(1<<(21-12))" + - signal: Correct the offset of si_pkey and si_lower in struct siginfo on m68k + - Linux 4.16.1 + + * [18.04][config] regression: nvme and nvme_core couldn't be built as modules + starting 4.15-rc2 (LP: #1759893) + - SAUCE: Revert "lightnvm: include NVM Express driver if OCSSD is selected for + build" + - [Config] CONFIG_BLK_DEV_NMVE=m + + * FFe: Enable configuring resume offset via sysfs (LP: #1760106) + - PM / hibernate: Make passing hibernate offsets more friendly + + * Ubuntu18.04:POWER9:DD2.2 - Unable to start a KVM guest with default machine + type(pseries-bionic) complaining "KVM implementation does not support + Transactional Memory, try cap-htm=off" (kvm) (LP: #1752026) + - powerpc: Use feature bit for RTC presence rather than timebase presence + - powerpc: Book E: Remove unused CPU_FTR_L2CSR bit + - powerpc: Free up CPU feature bits on 64-bit machines + - powerpc: Add CPU feature bits for TM bug workarounds on POWER9 v2.2 + - powerpc/powernv: Provide a way to force a core into SMT4 mode + - KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9 + - KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode + - KVM: PPC: Book3S HV: Work around TEXASR bug in fake suspend state + + * [Feature][CFL][ICL] [CNL]Thunderbolt support (Titan Ridge) (LP: #1730775) + - thunderbolt: Resume control channel after hibernation image is created + - thunderbolt: Serialize PCIe tunnel creation with PCI rescan + - thunderbolt: Handle connecting device in place of host properly + - thunderbolt: Do not overwrite error code when domain adding fails + - thunderbolt: Wait a bit longer for root switch config space + - thunderbolt: Wait a bit longer for ICM to authenticate the active NVM + - thunderbolt: Handle rejected Thunderbolt devices + - thunderbolt: Factor common ICM add and update operations out + - thunderbolt: Correct function name in kernel-doc comment + - thunderbolt: Add tb_switch_get() + - thunderbolt: Add tb_switch_find_by_route() + - thunderbolt: Add tb_xdomain_find_by_route() + - thunderbolt: Add constant for approval timeout + - thunderbolt: Move driver ready handling to struct icm + - thunderbolt: Add 'boot' attribute for devices + - thunderbolt: Add support for preboot ACL + - thunderbolt: Introduce USB only (SL4) security level + - thunderbolt: Add support for Intel Titan Ridge + + * QCA9377 requires more IRAM banks for its new firmware (LP: #1748345) + - ath10k: update the IRAM bank number for QCA9377 + + * Fix an issue that when system in S3, USB keyboard can't wake up the system. + (LP: #1759511) + - ACPI / PM: Allow deeper wakeup power states with no _SxD nor _SxW + + * cxl: Fix timebase synchronization status on POWER9 missing (CAPI) + (LP: #1757228) + - cxl: Fix timebase synchronization status on P9 + + * [Feature]Update Ubuntu 18.04 lpfc FC driver with 32/64GB HBA support and bug + fixes (LP: #1752182) + - scsi: lpfc: Fix frequency of Release WQE CQEs + - scsi: lpfc: Increase CQ and WQ sizes for SCSI + - scsi: lpfc: move placement of target destroy on driver detach + - scsi: lpfc: correct debug counters for abort + - scsi: lpfc: Add WQ Full Logic for NVME Target + - scsi: lpfc: Fix PRLI handling when topology type changes + - scsi: lpfc: Fix IO failure during hba reset testing with nvme io. + - scsi: lpfc: Fix RQ empty firmware trap + - scsi: lpfc: Allow set of maximum outstanding SCSI cmd limit for a target + - scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing + - scsi: lpfc: Fix issue_lip if link is disabled + - scsi: lpfc: Indicate CONF support in NVMe PRLI + - scsi: lpfc: Fix SCSI io host reset causing kernel crash + - scsi: lpfc: Validate adapter support for SRIU option + - scsi: lpfc: Fix header inclusion in lpfc_nvmet + - scsi: lpfc: Treat SCSI Write operation Underruns as an error + - scsi: lpfc: Fix nonrecovery of NVME controller after cable swap. + - scsi: lpfc: update driver version to 11.4.0.7 + - scsi: lpfc: Update 11.4.0.7 modified files for 2018 Copyright + - scsi: lpfc: Rework lpfc to allow different sli4 cq and eq handlers + - scsi: lpfc: Rework sli4 doorbell infrastructure + - scsi: lpfc: Add SLI-4 if_type=6 support to the code base + - scsi: lpfc: Add push-to-adapter support to sli4 + - scsi: lpfc: Add PCI Ids for if_type=6 hardware + - scsi: lpfc: Add 64G link speed support + - scsi: lpfc: Add if_type=6 support for cycling valid bits + - scsi: lpfc: Enable fw download on if_type=6 devices + - scsi: lpfc: Add embedded data pointers for enhanced performance + - scsi: lpfc: Fix nvme embedded io length on new hardware + - scsi: lpfc: Work around NVME cmd iu SGL type + - scsi: lpfc: update driver version to 12.0.0.0 + - scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 + - scsi: lpfc: use __raw_writeX on DPP copies + - scsi: lpfc: Add missing unlock in WQ full logic + + * /dev/bcache/by-uuid links not created after reboot (LP: #1729145) + - SAUCE: (no-up) bcache: decouple emitting a cached_dev CHANGE uevent + + * DKMS driver builds fail with: Cannot use CONFIG_STACK_VALIDATION=y, please + install libelf-dev, libelf-devel or elfutils-libelf-devel (LP: #1760876) + - [Packaging] include the retpoline extractor in the headers + + * Use med_with_dipm SATA LPM to save more power for mobile platforms + (LP: #1759547) + - [Config] CONFIG_SATA_MOBILE_LPM_POLICY=3 + + * Miscellaneous Ubuntu changes + - [Packaging] Only install cloud init files when do_tools_common=true + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + -- Seth Forshee Thu, 12 Apr 2018 09:30:56 -0500 + +linux (4.16.0-3.4) bionic; urgency=medium + + * Allow multiple mounts of zfs datasets (LP: #1759848) + - SAUCE: Allow mounting datasets more than once (LP: #1759848) + + * zfs system process hung on container stop/delete (LP: #1754584) + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + - Revert "UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)" + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + + * ubuntu_zram_smoke test will cause soft lockup on Artful ThunderX ARM64 + (LP: #1755073) + - SAUCE: crypto: thunderx_zip: Fix fallout from CONFIG_VMAP_STACK + + * CAPI Flash (cxlflash) update (LP: #1752672) + - SAUCE: cxlflash: Preserve number of interrupts for master contexts + - SAUCE: cxlflash: Avoid clobbering context control register value + - SAUCE: cxlflash: Add argument identifier names + - SAUCE: cxlflash: Introduce OCXL backend + - SAUCE: cxlflash: Hardware AFU for OCXL + - SAUCE: cxlflash: Read host function configuration + - SAUCE: cxlflash: Setup function acTag range + - SAUCE: cxlflash: Read host AFU configuration + - SAUCE: cxlflash: Setup AFU acTag range + - SAUCE: cxlflash: Setup AFU PASID + - SAUCE: cxlflash: Adapter context support for OCXL + - SAUCE: cxlflash: Use IDR to manage adapter contexts + - SAUCE: cxlflash: Support adapter file descriptors for OCXL + - SAUCE: cxlflash: Support adapter context discovery + - SAUCE: cxlflash: Support image reload policy modification + - SAUCE: cxlflash: MMIO map the AFU + - SAUCE: cxlflash: Support starting an adapter context + - SAUCE: cxlflash: Support process specific mappings + - SAUCE: cxlflash: Support AFU state toggling + - SAUCE: cxlflash: Support reading adapter VPD data + - SAUCE: cxlflash: Setup function OCXL link + - SAUCE: cxlflash: Setup OCXL transaction layer + - SAUCE: cxlflash: Support process element lifecycle + - SAUCE: cxlflash: Support AFU interrupt management + - SAUCE: cxlflash: Support AFU interrupt mapping and registration + - SAUCE: cxlflash: Support starting user contexts + - SAUCE: cxlflash: Support adapter context polling + - SAUCE: cxlflash: Support adapter context reading + - SAUCE: cxlflash: Support adapter context mmap and release + - SAUCE: cxlflash: Support file descriptor mapping + - SAUCE: cxlflash: Introduce object handle fop + - SAUCE: cxlflash: Setup LISNs for user contexts + - SAUCE: cxlflash: Setup LISNs for master contexts + - SAUCE: cxlflash: Update synchronous interrupt status bits + - SAUCE: cxlflash: Introduce OCXL context state machine + - SAUCE: cxlflash: Register for translation errors + - SAUCE: cxlflash: Support AFU reset + - SAUCE: cxlflash: Enable OCXL operations + + * [Artful][Wyse 3040] System hang when trying to enable an offlined CPU core + (LP: #1736393) + - SAUCE: drm/i915:Don't set chip specific data + - SAUCE: drm/i915: make previous commit affects Wyse 3040 only + + * zed process consuming 100% cpu (LP: #1751796) + - SAUCE: Fix ioctl loop-spin in zed (LP: #1751796) + + * Ubuntu18.04:PowerPC - Set Transparent Huge Pages (THP) by default to + "always" (LP: #1753708) + - Config: Set TRANSPARENT_HUGEPAGE_ALWAYS=y on ppc64el + + * retpoline hints: primary infrastructure and initial hints (LP: #1758856) + - [Packaging] retpoline -- add safe usage hint support + - [Packaging] retpoline-check -- only report additions + - [Packaging] retpoline -- widen indirect call/jmp detection + - [Packaging] retpoline -- elide %rip relative indirections + - [Packaging] retpoline -- clear hint information from packages + - SAUCE: apm -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: EFI -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: early/late -- annotate indirect calls in early/late initialisation + code + - SAUCE: vga_set_mode -- avoid jump tables + - [Config] retpoine -- switch to new format + + * Miscellaneous Ubuntu changes + - [Packaging] final-checks -- remove check for empty retpoline files + - [Packaging] skip cloud tools packaging when not building package + + [ Upstream Kernel Changes ] + + * Rebase to v4.16 + + -- Seth Forshee Mon, 02 Apr 2018 16:15:36 -0500 + +linux (4.16.0-2.3) bionic; urgency=medium + + * devpts: handle bind-mounts (LP: #1755857) + - SAUCE: devpts: hoist out check for DEVPTS_SUPER_MAGIC + - SAUCE: devpts: resolve devpts bind-mounts + - SAUCE: devpts: comment devpts_mntget() + - SAUCE: selftests: add devpts selftests + + * [bionic][arm64] d-i: add hisi_sas_v3_hw to scsi-modules (LP: #1756103) + - d-i: add hisi_sas_v3_hw to scsi-modules + + * [Bionic][ARM64] PCI and SAS driver patches for hip08 SoCs (LP: #1756094) + - SAUCE: scsi: hisi_sas: config for hip08 ES + - SAUCE: scsi: hisi_sas: export device table of v3 hw to userspace + + * s390/crypto: Fix kernel crash on aes_s390 module remove (LP: #1753424) + - SAUCE: s390/crypto: Fix kernel crash on aes_s390 module remove. + + * Fix ARC hit rate (LP: #1755158) + - SAUCE: Fix ARC hit rate (LP: #1755158) + + * ZFS setgid broken on 0.7 (LP: #1753288) + - SAUCE: Fix ZFS setgid + + * CONFIG_EFI=y on armhf (LP: #1726362) + - [Config] CONFIG_EFI=y on armhf, reconcile secureboot EFI settings + + * [Feature] Add xHCI debug device support in the driver (LP: #1730832) + - [Config] CONFIG_USB_XHCI_DBGCAP=y + + * retpoline: ignore %cs:0xNNN constant indirections (LP: #1752655) + - [Packaging] retpoline -- elide %cs:0xNNNN constants on i386 + - [Config] retpoline -- clean up i386 retpoline files + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline-extract: flag *0xNNN(%reg) branches + - [Config] fix up retpoline abi files + - [Config] fix up retpoline abi files + - d-i: Add netsec to nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc6 + + -- Seth Forshee Mon, 19 Mar 2018 14:09:49 -0500 + +linux (4.16.0-1.2) bionic; urgency=medium + + * Driver not found in Ubuntu kernel does not detect interface (LP: #1745927) + - d-i: add cxgb4 to nic-modules + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_INDIRECT_PIO=y + - SAUCE: LIB: Introduce a generic PIO mapping method + - SAUCE: PCI: Remove unused __weak attribute in pci_register_io_range() + - SAUCE: PCI: Add fwnode handler as input param of pci_register_io_range() + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - SAUCE: ACPI / scan: do not enumerate Indirect IO host children + - SAUCE: HISI LPC: Add ACPI support + - SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver + + * Miscellaneous Ubuntu changes + - SAUCE: tools: use CC for linking acpi tools + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc3 + + -- Seth Forshee Wed, 28 Feb 2018 10:17:23 -0600 + +linux (4.16.0-0.1) bionic; urgency=medium + + * retpoline abi files are empty on i386 (LP: #1751021) + - [Packaging] retpoline-extract -- instantiate retpoline files for i386 + - [Packaging] final-checks -- sanity checking ABI contents + - [Packaging] final-checks -- check for empty retpoline files + + * Miscellaneous upstream changes + - disable vbox build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc2 + + -- Seth Forshee Thu, 22 Feb 2018 08:58:57 -0600 + +linux (4.16.0-0.0) bionic; urgency=medium + + * Dummy entry + + -- Seth Forshee Wed, 21 Feb 2018 14:33:13 -0600 + +linux (4.15.0-10.11) bionic; urgency=medium + + * linux: 4.15.0-10.11 -proposed tracker (LP: #1749250) + + * "swiotlb: coherent allocation failed" dmesg spam with linux 4.15.0-9.10 + (LP: #1749202) + - swiotlb: suppress warning when __GFP_NOWARN is set + - drm/ttm: specify DMA_ATTR_NO_WARN for huge page pools + + * linux-tools: perf incorrectly linking libbfd (LP: #1748922) + - SAUCE: tools -- add ability to disable libbfd + - [Packaging] correct disablement of libbfd + + * [Artful] Realtek ALC225: 2 secs noise when a headset plugged in + (LP: #1744058) + - ALSA: hda/realtek - update ALC225 depop optimize + + * [Artful] Support headset mode for DELL WYSE (LP: #1723913) + - SAUCE: ALSA: hda/realtek - Add support headset mode for DELL WYSE + + * headset mic can't be detected on two Dell machines (LP: #1748807) + - ALSA: hda/realtek - Support headset mode for ALC215/ALC285/ALC289 + - ALSA: hda - Fix headset mic detection problem for two Dell machines + + * Bionic update to v4.15.3 stable release (LP: #1749191) + - ip6mr: fix stale iterator + - net: igmp: add a missing rcu locking section + - qlcnic: fix deadlock bug + - qmi_wwan: Add support for Quectel EP06 + - r8169: fix RTL8168EP take too long to complete driver initialization. + - tcp: release sk_frag.page in tcp_disconnect + - vhost_net: stop device during reset owner + - ipv6: addrconf: break critical section in addrconf_verify_rtnl() + - ipv6: change route cache aging logic + - Revert "defer call to mem_cgroup_sk_alloc()" + - net: ipv6: send unsolicited NA after DAD + - rocker: fix possible null pointer dereference in + rocker_router_fib_event_work + - tcp_bbr: fix pacing_gain to always be unity when using lt_bw + - cls_u32: add missing RCU annotation. + - ipv6: Fix SO_REUSEPORT UDP socket with implicit sk_ipv6only + - soreuseport: fix mem leak in reuseport_add_sock() + - net_sched: get rid of rcu_barrier() in tcf_block_put_ext() + - net: sched: fix use-after-free in tcf_block_put_ext + - media: mtk-vcodec: add missing MODULE_LICENSE/DESCRIPTION + - media: soc_camera: soc_scale_crop: add missing + MODULE_DESCRIPTION/AUTHOR/LICENSE + - media: tegra-cec: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: uniphier: fix mismatch between license text and MODULE_LICENSE + - crypto: tcrypt - fix S/G table for test_aead_speed() + - Linux 4.15.3 + + * bnx2x_attn_int_deasserted3:4323 MC assert! (LP: #1715519) // + CVE-2018-1000026 + - net: create skb_gso_validate_mac_len() + - bnx2x: disable GSO where gso_size is too big for hardware + + * ethtool -p fails to light NIC LED on HiSilicon D05 systems (LP: #1748567) + - net: hns: add ACPI mode support for ethtool -p + + * CVE-2017-5715 (Spectre v2 Intel) + - [Packaging] retpoline files must be sorted + - [Packaging] pull in retpoline files + + * [Feature] PXE boot with Intel Omni-Path (LP: #1712031) + - d-i: Add hfi1 to nic-modules + + * CVE-2017-5715 (Spectre v2 retpoline) + - [Packaging] retpoline -- add call site validation + - [Config] disable retpoline checks for first upload + + * Do not duplicate changelog entries assigned to more than one bug or CVE + (LP: #1743383) + - [Packaging] git-ubuntu-log -- handle multiple bugs/cves better + + -- Seth Forshee Tue, 13 Feb 2018 11:33:58 -0600 + +linux (4.15.0-9.10) bionic; urgency=medium + + * linux: 4.15.0-9.10 -proposed tracker (LP: #1748244) + + * Miscellaneous Ubuntu changes + - [Debian] tests -- remove gcc-multilib dependency for arm64 + + -- Seth Forshee Thu, 08 Feb 2018 11:25:04 -0600 + +linux (4.15.0-8.9) bionic; urgency=medium + + * linux: 4.15.0-8.9 -proposed tracker (LP: #1748075) + + * Bionic update to v4.15.2 stable release (LP: #1748072) + - KVM: x86: Make indirect calls in emulator speculation safe + - KVM: VMX: Make indirect call speculation safe + - module/retpoline: Warn about missing retpoline in module + - x86/cpufeatures: Add CPUID_7_EDX CPUID leaf + - x86/cpufeatures: Add Intel feature bits for Speculation Control + - x86/cpufeatures: Add AMD feature bits for Speculation Control + - x86/msr: Add definitions for new speculation control MSRs + - x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown + - x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes + - x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support + - x86/alternative: Print unadorned pointers + - x86/nospec: Fix header guards names + - x86/bugs: Drop one "mitigation" from dmesg + - x86/cpu/bugs: Make retpoline module warning conditional + - x86/cpufeatures: Clean up Spectre v2 related CPUID flags + - x86/retpoline: Simplify vmexit_fill_RSB() + - x86/speculation: Simplify indirect_branch_prediction_barrier() + - auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - iio: adc/accel: Fix up module licenses + - pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - ASoC: pcm512x: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - KVM: nVMX: Eliminate vmcs02 pool + - KVM: VMX: introduce alloc_loaded_vmcs + - objtool: Improve retpoline alternative handling + - objtool: Add support for alternatives at the end of a section + - objtool: Warn on stripped section symbol + - x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP + - x86/spectre: Check CONFIG_RETPOLINE in command line parser + - x86/entry/64: Remove the SYSCALL64 fast path + - x86/entry/64: Push extra regs right away + - x86/asm: Move 'status' from thread_struct to thread_info + - Documentation: Document array_index_nospec + - array_index_nospec: Sanitize speculative array de-references + - x86: Implement array_index_mask_nospec + - x86: Introduce barrier_nospec + - x86: Introduce __uaccess_begin_nospec() and uaccess_try_nospec + - x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end} + - x86/uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec + - x86/get_user: Use pointer masking to limit speculation + - x86/syscall: Sanitize syscall table de-references under speculation + - vfs, fdtable: Prevent bounds-check bypass via speculative execution + - nl80211: Sanitize array index in parse_txq_params + - x86/spectre: Report get_user mitigation for spectre_v1 + - x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable" + - x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel + - x86/speculation: Use Indirect Branch Prediction Barrier in context switch + - x86/paravirt: Remove 'noreplace-paravirt' cmdline option + - KVM: VMX: make MSR bitmaps per-VCPU + - x86/kvm: Update spectre-v1 mitigation + - x86/retpoline: Avoid retpolines for built-in __init functions + - x86/spectre: Simplify spectre_v2 command line parsing + - x86/pti: Mark constant arrays as __initconst + - x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL + - KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX + - KVM/x86: Add IBPB support + - KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES + - KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL + - KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL + - serial: core: mark port as initialized after successful IRQ change + - fpga: region: release of_parse_phandle nodes after use + - Linux 4.15.2 + + * Add support for the NIC on SynQuacer E-Series boards (LP: #1747792) + - net: phy: core: remove now uneeded disabling of interrupts + - [Config] CONFIG_NET_VENDOR_SOCIONEXT=y & CONFIG_SNI_NETSEC=m + - net: socionext: Add Synquacer NetSec driver + - net: socionext: include linux/io.h to fix build + - net: socionext: Fix error return code in netsec_netdev_open() + + * [Artful/Bionic] [Config] enable EDAC_GHES for ARM64 (LP: #1747746) + - [Config] CONFIG_EDAC_GHES=y + + * support thunderx2 vendor pmu events (LP: #1747523) + - perf pmu: Pass pmu as a parameter to get_cpuid_str() + - perf tools arm64: Add support for get_cpuid_str function. + - perf pmu: Add helper function is_pmu_core to detect PMU CORE devices + - perf vendor events arm64: Add ThunderX2 implementation defined pmu core + events + - perf pmu: Add check for valid cpuid in perf_pmu__find_map() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Miscellaneous Ubuntu changes + - [Config] Fix CONFIG_PROFILE_ALL_BRANCHES annotations + + -- Seth Forshee Wed, 07 Feb 2018 21:13:27 -0600 + +linux (4.15.0-7.8) bionic; urgency=medium + + * Bionic update to v4.15.1 stable release (LP: #1747169) + - Bluetooth: hci_serdev: Init hci_uart proto_lock to avoid oops + - tools/gpio: Fix build error with musl libc + - gpio: stmpe: i2c transfer are forbiden in atomic context + - gpio: Fix kernel stack leak to userspace + - ALSA: hda - Reduce the suspend time consumption for ALC256 + - crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH + - crypto: aesni - handle zero length dst buffer + - crypto: aesni - fix typo in generic_gcmaes_decrypt + - crypto: aesni - add wrapper for generic gcm(aes) + - crypto: aesni - Fix out-of-bounds access of the data buffer in generic-gcm- + aesni + - crypto: aesni - Fix out-of-bounds access of the AAD buffer in generic-gcm- + aesni + - crypto: inside-secure - fix hash when length is a multiple of a block + - crypto: inside-secure - avoid unmapping DMA memory that was not mapped + - crypto: sha3-generic - fixes for alignment and big endian operation + - crypto: af_alg - whitelist mask and type + - HID: wacom: EKR: ensure devres groups at higher indexes are released + - HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) events + - power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE + - mtd: nand: denali_pci: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - igb: Free IRQs when device is hotplugged + - ima/policy: fix parsing of fsuuid + - scsi: aacraid: Fix udev inquiry race condition + - scsi: aacraid: Fix hang in kdump + - scsi: storvsc: missing error code in storvsc_probe() + - staging: lustre: separate a connection destroy from free struct kib_conn + - staging: ccree: NULLify backup_info when unused + - staging: ccree: fix fips event irq handling build + - tty: fix data race between tty_init_dev and flush of buf + - usb: option: Add support for FS040U modem + - USB: serial: pl2303: new device id for Chilitag + - USB: cdc-acm: Do not log urb submission errors on disconnect + - CDC-ACM: apply quirk for card reader + - USB: serial: io_edgeport: fix possible sleep-in-atomic + - usbip: prevent bind loops on devices attached to vhci_hcd + - usbip: list: don't list devices attached to vhci_hcd + - USB: serial: simple: add Motorola Tetra driver + - usb: f_fs: Prevent gadget unbind if it is already unbound + - usb: uas: unconditionally bring back host after reset + - usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc() + - ANDROID: binder: remove waitqueue when thread exits. + - android: binder: use VM_ALLOC to get vm area + - mei: me: allow runtime pm for platform with D0i3 + - serial: 8250_of: fix return code when probe function fails to get reset + - serial: 8250_uniphier: fix error return code in uniphier_uart_probe() + - serial: 8250_dw: Revert "Improve clock rate setting" + - serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS + - spi: imx: do not access registers while clocks disabled + - iio: adc: stm32: fix scan of multiple channels with DMA + - iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels + - test_firmware: fix missing unlock on error in config_num_requests_store() + - Input: synaptics-rmi4 - unmask F03 interrupts when port is opened + - Input: synaptics-rmi4 - do not delete interrupt memory too early + - x86/efi: Clarify that reset attack mitigation needs appropriate userspace + - Linux 4.15.1 + + * Dell XPS 13 9360 bluetooth (Atheros) won't connect after resume + (LP: #1744712) + - Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" + - Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" + version + + * apparmor profile load in stacked policy container fails (LP: #1746463) + - SAUCE: apparmor: fix display of .ns_name for containers + + -- Seth Forshee Sun, 04 Feb 2018 11:56:32 +0100 + +linux (4.15.0-6.7) bionic; urgency=low + + * upload urgency should be medium by default (LP: #1745338) + - [Packaging] update urgency to medium by default + + * Shutdown hang on 16.04 with iscsi targets (LP: #1569925) + - scsi: libiscsi: Allow sd_shutdown on bad transport + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu1, zfs to 0.7.5-1ubuntu1 + - Revert "UBUNTU: SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM" + - Revert "UBUNTU: SAUCE: mm: disable vma based swap readahead by default" + + [ Upstream Kernel Changes ] + + * Rebase to v4.15 + + -- Seth Forshee Mon, 29 Jan 2018 08:47:07 -0600 + +linux (4.15.0-5.6) bionic; urgency=low + + * $(LOCAL_ENV_CC) and $(LOCAL_ENV_DISTCC_HOSTS) should be properly quoted + (LP: #1744077) + - [Debian] pass LOCAL_ENV_CC and LOCAL_ENV_DISTCC_HOSTS properly + + * Missing install-time driver for QLogic QED 25/40/100Gb Ethernet NIC + (LP: #1743638) + - [d-i] Add qede to nic-modules udeb + + * boot failure on AMD Raven + WesternXT (LP: #1742759) + - SAUCE: drm/amdgpu: add atpx quirk handling (v2) + + * Unable to handle kernel NULL pointer dereference at isci_task_abort_task + (LP: #1726519) + - SAUCE: Revert "scsi: libsas: allow async aborts" + + * Update Ubuntu-4.15.0 config to support Intel Atom devices (LP: #1739939) + - [Config] CONFIG_SERIAL_DEV_BUS=y, CONFIG_SERIAL_DEV_CTRL_TTYPORT=y + + * Miscellaneous Ubuntu changes + - Rebase to v4.15-rc7 + - [Config] CONFIG_CPU_ISOLATION=y + - [Config] Update annotations following config review + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.6-dfsg-1 + - ubuntu: vbox: build fixes for 4.15 + - ubuntu: vbox -- update to 5.2.6-dfsg-2 + - hio: updates for timer api changes in 4.15 + - enable hio build + - Rebase to v4.15-rc9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc9 + + -- Seth Forshee Mon, 22 Jan 2018 10:16:05 -0600 + +linux (4.15.0-4.5) bionic; urgency=low + + * [0cf3:e010] QCA6174A XR failed to pair with bt 4.0 device (LP: #1741166) + - SAUCE: Bluetooth: btusb: Add support for 0cf3:e010 + + * External HDMI monitor failed to show screen on Lenovo X1 series + (LP: #1738523) + - SAUCE: drm/i915: Disable writing of TMDS_OE on Lenovo ThinkPad X1 series + + * Miscellaneous Ubuntu changes + - [Debian] autoreconstruct - add resoration of execute permissions + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Wed, 10 Jan 2018 10:24:22 -0600 + +linux (4.15.0-3.4) bionic; urgency=low + + * ubuntu/xr-usb-serial didn't get built in zesty and artful (LP: #1733281) + - SAUCE: make sure ubuntu/xr-usb-serial builds for x86 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc6 + + -- Seth Forshee Wed, 03 Jan 2018 20:20:43 -0600 + +linux (4.15.0-2.3) bionic; urgency=low + + * nvidia-graphics-drivers-384 384.90-0ubuntu6 ADT test failure with linux + 4.15.0-1.2 (LP: #1737752) + - x86/mm: Unbreak modules that use the DMA API + + * Ubuntu 17.10 corrupting BIOS - many LENOVO laptops models (LP: #1734147) + - [Config] CONFIG_SPI_INTEL_SPI_*=n + + * power: commonise configs IBMVETH/IBMVSCSI and ensure both are in linux-image + and udebs (LP: #1521712) + - [Config] Include ibmvnic in nic-modules + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] Enable support for emulation of deprecated ARMv8 instructions + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl with 4.15 compat fix (LP:#1737761) + - Enable zfs build + - [Debian] add icp to zfs-modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Mon, 18 Dec 2017 09:27:13 -0600 + +linux (4.15.0-1.2) bionic; urgency=low + + * Disabling zfs does not always disable module checks for the zfs modules + (LP: #1737176) + - [Packaging] disable zfs module checks when zfs is disabled + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_UNWINDER_FRAME_POINTER=y for amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc3 + + -- Seth Forshee Sun, 10 Dec 2017 22:07:19 -0600 + +linux (4.15.0-0.1) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.2.2-dfsg-2 + - ubuntu: vbox: build fixes for 4.15 + - disable hio build + - [Config] Update kernel lockdown options to fix build errors + - Disable zfs build + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc2 + + -- Seth Forshee Fri, 08 Dec 2017 13:55:42 -0600 + +linux (4.14.0-11.13) bionic; urgency=low + + * linux: 4.14.0-11.13 -proposed tracker (LP: #1736168) + + * CVE-2017-1000405 + - mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Bionic update to v4.14.3 stable release (LP: #1735843) + - s390: fix transactional execution control register handling + - s390/noexec: execute kexec datamover without DAT + - s390/runtime instrumention: fix possible memory corruption + - s390/guarded storage: fix possible memory corruption + - s390/disassembler: add missing end marker for e7 table + - s390/disassembler: increase show_code buffer size + - ACPI / PM: Fix acpi_pm_notifier_lock vs flush_workqueue() deadlock + - ACPI / EC: Fix regression related to triggering source of EC event handling + - cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq + - serdev: fix registration of second slave + - sched: Make resched_cpu() unconditional + - lib/mpi: call cond_resched() from mpi_powm() loop + - x86/boot: Fix boot failure when SMP MP-table is based at 0 + - x86/decoder: Add new TEST instruction pattern + - x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing + - x86/entry/64: Add missing irqflags tracing to native_load_gs_index() + - perf/x86/intel: Hide TSX events when RTM is not supported + - arm64: Implement arch-specific pte_access_permitted() + - ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE + - ARM: 8721/1: mm: dump: check hardware RO bit for LPAE + - uapi: fix linux/tls.h userspace compilation error + - uapi: fix linux/rxrpc.h userspace compilation errors + - MIPS: cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN don't work for 32-bit SMP + - MIPS: ralink: Fix MT7628 pinmux + - MIPS: ralink: Fix typo in mt7628 pinmux function + - net: mvneta: fix handling of the Tx descriptor counter + - nbd: wait uninterruptible for the dead timeout + - nbd: don't start req until after the dead connection logic + - PM / OPP: Add missing of_node_put(np) + - PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time + - PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD + - PCI: hv: Use effective affinity mask + - PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF + - PCI: Apply Cavium ThunderX ACS quirk to more Root Ports + - ALSA: hda: Add Raven PCI ID + - dm integrity: allow unaligned bv_offset + - dm cache: fix race condition in the writeback mode overwrite_bio + optimisation + - dm crypt: allow unaligned bv_offset + - dm zoned: ignore last smaller runt zone + - dm mpath: remove annoying message of 'blk_get_request() returned -11' + - dm bufio: fix integer overflow when limiting maximum cache size + - ovl: Put upperdentry if ovl_check_origin() fails + - dm: allocate struct mapped_device with kvzalloc + - sched/rt: Simplify the IPI based RT balancing logic + - MIPS: pci: Remove KERN_WARN instance inside the mt7620 driver + - dm: fix race between dm_get_from_kobject() and __dm_destroy() + - dm: discard support requires all targets in a table support discards + - MIPS: Fix odd fp register warnings with MIPS64r2 + - MIPS: Fix MIPS64 FP save/restore on 32-bit kernels + - MIPS: dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry + - MIPS: Fix an n32 core file generation regset support regression + - MIPS: BCM47XX: Fix LED inversion for WRT54GSv1 + - MIPS: math-emu: Fix final emulation phase for certain instructions + - rt2x00usb: mark device removed when get ENOENT usb error + - mm/z3fold.c: use kref to prevent page free/compact race + - autofs: don't fail mount for transient error + - nilfs2: fix race condition that causes file system corruption + - fscrypt: lock mutex before checking for bounce page pool + - eCryptfs: use after free in ecryptfs_release_messaging() + - libceph: don't WARN() if user tries to add invalid key + - bcache: check ca->alloc_thread initialized before wake up it + - fs: guard_bio_eod() needs to consider partitions + - fanotify: fix fsnotify_prepare_user_wait() failure + - isofs: fix timestamps beyond 2027 + - btrfs: change how we decide to commit transactions during flushing + - f2fs: expose some sectors to user in inline data or dentry case + - NFS: Fix typo in nomigration mount option + - NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" + - nfs: Fix ugly referral attributes + - NFS: Avoid RCU usage in tracepoints + - NFS: revalidate "." etc correctly on "open". + - nfsd: deal with revoked delegations appropriately + - rtlwifi: rtl8192ee: Fix memory leak when loading firmware + - rtlwifi: fix uninitialized rtlhal->last_suspend_sec time + - iwlwifi: fix firmware names for 9000 and A000 series hw + - md: fix deadlock error in recent patch. + - md: don't check MD_SB_CHANGE_CLEAN in md_allow_write + - Bluetooth: btqcomsmd: Add support for BD address setup + - md/bitmap: revert a patch + - fsnotify: clean up fsnotify_prepare/finish_user_wait() + - fsnotify: pin both inode and vfsmount mark + - fsnotify: fix pinning group in fsnotify_prepare_user_wait() + - ata: fixes kernel crash while tracing ata_eh_link_autopsy event + - ext4: fix interaction between i_size, fallocate, and delalloc after a crash + - ext4: prevent data corruption with inline data + DAX + - ext4: prevent data corruption with journaling + DAX + - ALSA: pcm: update tstamp only if audio_tstamp changed + - ALSA: usb-audio: Add sanity checks to FE parser + - ALSA: usb-audio: Fix potential out-of-bound access at parsing SU + - ALSA: usb-audio: Add sanity checks in v2 clock parsers + - ALSA: timer: Remove kernel warning at compat ioctl error paths + - ALSA: hda/realtek - Fix ALC275 no sound issue + - ALSA: hda: Fix too short HDMI/DP chmap reporting + - ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization + - ALSA: hda/realtek - Fix ALC700 family no sound issue + - ASoC: sun8i-codec: Invert Master / Slave condition + - ASoC: sun8i-codec: Fix left and right channels inversion + - ASoC: sun8i-codec: Set the BCLK divider + - mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method + - fix a page leak in vhost_scsi_iov_to_sgl() error recovery + - 9p: Fix missing commas in mount options + - fs/9p: Compare qid.path in v9fs_test_inode + - net/9p: Switch to wait_event_killable() + - scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() + - scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() + - scsi: lpfc: fix pci hot plug crash in timer management routines + - scsi: lpfc: fix pci hot plug crash in list_add call + - scsi: lpfc: Fix crash receiving ELS while detaching driver + - scsi: lpfc: Fix FCP hba_wqidx assignment + - scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails + - iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref + - iscsi-target: Fix non-immediate TMR reference leak + - target: fix null pointer regression in core_tmr_drain_tmr_list + - target: fix buffer offset in core_scsi3_pri_read_full_status + - target: Fix QUEUE_FULL + SCSI task attribute handling + - target: Fix caw_sem leak in transport_generic_request_failure + - target: Fix quiese during transport_write_pending_qf endless loop + - target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK + - mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid + - mtd: nand: Export nand_reset() symbol + - mtd: nand: atmel: Actually use the PM ops + - mtd: nand: omap2: Fix subpage write + - mtd: nand: Fix writing mtdoops to nand flash. + - mtd: nand: mtk: fix infinite ECC decode IRQ issue + - mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence + - p54: don't unregister leds when they are not initialized + - block: Fix a race between blk_cleanup_queue() and timeout handling + - raid1: prevent freeze_array/wait_all_barriers deadlock + - genirq: Track whether the trigger type has been set + - irqchip/gic-v3: Fix ppi-partitions lookup + - lockd: double unregister of inetaddr notifiers + - KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not + enabled + - KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + - KVM: SVM: obey guest PAT + - kvm: vmx: Reinstate support for CPUs without virtual NMI + - dax: fix PMD faults on zero-length files + - dax: fix general protection fault in dax_alloc_inode + - SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status + - clk: ti: dra7-atl-clock: fix child-node lookups + - libnvdimm, dimm: clear 'locked' status on successful DIMM enable + - libnvdimm, pfn: make 'resource' attribute only readable by root + - libnvdimm, namespace: fix label initialization to use valid seq numbers + - libnvdimm, region : make 'resource' attribute only readable by root + - libnvdimm, namespace: make 'resource' attribute only readable by root + - svcrdma: Preserve CB send buffer across retransmits + - IB/srpt: Do not accept invalid initiator port names + - IB/cm: Fix memory corruption in handling CM request + - IB/hfi1: Fix incorrect available receive user context count + - IB/srp: Avoid that a cable pull can trigger a kernel crash + - IB/core: Avoid crash on pkey enforcement failed in received MADs + - IB/core: Only maintain real QPs in the security lists + - NFC: fix device-allocation error return + - spi-nor: intel-spi: Fix broken software sequencing codes + - i40e: Use smp_rmb rather than read_barrier_depends + - igb: Use smp_rmb rather than read_barrier_depends + - igbvf: Use smp_rmb rather than read_barrier_depends + - ixgbevf: Use smp_rmb rather than read_barrier_depends + - i40evf: Use smp_rmb rather than read_barrier_depends + - fm10k: Use smp_rmb rather than read_barrier_depends + - ixgbe: Fix skb list corruption on Power systems + - parisc: Fix validity check of pointer size argument in new CAS + implementation + - powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX + - powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX + - powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id() + - powerpc/signal: Properly handle return value from uprobe_deny_signal() + - powerpc/64s: Fix masking of SRR1 bits on instruction fault + - powerpc/64s/radix: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix 512T hint detection to use >= 128T + - powerpc/64s/hash: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix fork() with 512TB process address space + - powerpc/64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary + - media: Don't do DMA on stack for firmware upload in the AS102 driver + - media: rc: check for integer overflow + - media: rc: nec decoder should not send both repeat and keycode + - cx231xx-cards: fix NULL-deref on missing association descriptor + - media: v4l2-ctrl: Fix flags field on Control events + - media: venus: fix wrong size on dma_free + - media: venus: venc: fix bytesused v4l2_plane field + - media: venus: reimplement decoder stop command + - ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory + zone + - iwlwifi: fix wrong struct for a000 device + - iwlwifi: add a new a000 device + - iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons + - iwlwifi: add new cards for a000 series + - iwlwifi: add new cards for 8265 series + - iwlwifi: add new cards for 8260 series + - iwlwifi: fix PCI IDs and configuration mapping for 9000 series + - iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command + - e1000e: Fix error path in link detection + - e1000e: Fix return value test + - e1000e: Separate signaling for link check/link up + - e1000e: Avoid receiver overrun interrupt bursts + - e1000e: fix buffer overrun while the I219 is processing DMA transactions + - Linux 4.14.3 + + * Miscellaneous Ubuntu changes + - SAUCE: s390/topology: don't inline cpu_to_node + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 04 Dec 2017 09:08:07 -0600 + +linux (4.14.0-10.12) bionic; urgency=low + + * linux: 4.14.0-10.12 -proposed tracker (LP: #1734901) + + * Miscellaneous Ubuntu changes + - SAUCE: Enable the ACPI kernel debugger and acpidbg tool + - [Packaging] Include arch/arm64/kernel/ftrace-mod.o in headers package + + -- Seth Forshee Tue, 28 Nov 2017 08:46:49 -0600 + +linux (4.14.0-9.11) bionic; urgency=low + + * linux: 4.14.0-9.11 -proposed tracker (LP: #1734728) + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to + 0.7.3-1ubuntu1" + + -- Seth Forshee Mon, 27 Nov 2017 12:44:48 -0600 + +linux (4.14.0-8.10) bionic; urgency=low + + * linux: 4.14.0-8.10 -proposed tracker (LP: #1734695) + + * Bionic update to v4.14.2 stable release (LP: #1734694) + - bio: ensure __bio_clone_fast copies bi_partno + - af_netlink: ensure that NLMSG_DONE never fails in dumps + - vxlan: fix the issue that neigh proxy blocks all icmpv6 packets + - net: cdc_ncm: GetNtbFormat endian fix + - fealnx: Fix building error on MIPS + - net/sctp: Always set scope_id in sctp_inet6_skb_msgname + - ima: do not update security.ima if appraisal status is not INTEGRITY_PASS + - serial: omap: Fix EFR write on RTS deassertion + - serial: 8250_fintek: Fix finding base_port with activated SuperIO + - tpm-dev-common: Reject too short writes + - rcu: Fix up pending cbs check in rcu_prepare_for_idle + - mm/pagewalk.c: report holes in hugetlb ranges + - ocfs2: fix cluster hang after a node dies + - ocfs2: should wait dio before inode lock in ocfs2_setattr() + - ipmi: fix unsigned long underflow + - mm/page_alloc.c: broken deferred calculation + - mm/page_ext.c: check if page_ext is not prepared + - coda: fix 'kernel memory exposure attempt' in fsync + - ipmi: Prefer ACPI system interfaces over SMBIOS ones + - Linux 4.14.2 + + * Bionic update to v4.14.1 stable release (LP: #1734693) + - EDAC, sb_edac: Don't create a second memory controller if HA1 is not present + - dmaengine: dmatest: warn user when dma test times out + - media: imon: Fix null-ptr-deref in imon_probe + - media: dib0700: fix invalid dvb_detach argument + - crypto: dh - Fix double free of ctx->p + - crypto: dh - Don't permit 'p' to be 0 + - crypto: dh - Don't permit 'key' or 'g' size longer than 'p' + - crypto: brcm - Explicity ACK mailbox message + - USB: early: Use new USB product ID and strings for DbC device + - USB: usbfs: compute urb->actual_length for isochronous + - USB: Add delay-init quirk for Corsair K70 LUX keyboards + - usb: gadget: f_fs: Fix use-after-free in ffs_free_inst + - USB: serial: metro-usb: stop I/O after failed open + - USB: serial: Change DbC debug device binding ID + - USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update + - USB: serial: garmin_gps: fix I/O after failed probe and remove + - USB: serial: garmin_gps: fix memory leak on probe errors + - selftests/x86/protection_keys: Fix syscall NR redefinition warnings + - x86/MCE/AMD: Always give panic severity for UC errors in kernel context + - platform/x86: peaq-wmi: Add DMI check before binding to the WMI interface + - platform/x86: peaq_wmi: Fix missing terminating entry for peaq_dmi_table + - HID: cp2112: add HIDRAW dependency + - HID: wacom: generic: Recognize WACOM_HID_WD_PEN as a type of pen collection + - rpmsg: glink: Add missing MODULE_LICENSE + - staging: wilc1000: Fix bssid buffer offset in Txq + - staging: sm750fb: Fix parameter mistake in poke32 + - staging: ccree: fix 64 bit scatter/gather DMA ops + - staging: greybus: spilib: fix use-after-free after deregistration + - staging: rtl8188eu: Revert 4 commits breaking ARP + - spi: fix use-after-free at controller deregistration + - sparc32: Add cmpxchg64(). + - sparc64: mmu_context: Add missing include files + - sparc64: Fix page table walk for PUD hugepages + - Linux 4.14.1 + + * Set PANIC_TIMEOUT=10 on Power Systems (LP: #1730660) + - [Config]: Set PANIC_TIMEOUT=10 on ppc64el + + * enable CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH easily confuse users + (LP: #1732627) + - [Config] CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH=n + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 27 Nov 2017 07:43:44 -0600 + +linux (4.14.0-7.9) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: add base infastructure for socket mediation + - SAUCE: apparmor: af_unix mediation + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: manage task security blobs + - SAUCE: LSM stacking: LSM: Infrastructure management of the remaining blobs + - SAUCE: LSM stacking: LSM: general but not extreme module stacking + - SAUCE: LSM stacking: LSM: Complete task_alloc hook + - SAUCE: LSM stacking: fixup procsfs: add smack subdir to attrs + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: check for invalid zero sized writes + - [Config] Run updateconfigs after merging LSM stacking + - [Config] CONFIG_AMD_MEM_ENCRYPT=y + + [ Upstream Kernel Changes ] + + * Rebase to v4.14 + + -- Seth Forshee Mon, 13 Nov 2017 08:12:08 -0600 + +linux (4.14.0-6.8) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: add workarounds to enable ZFS for 4.14 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc8 + + -- Seth Forshee Mon, 06 Nov 2017 11:39:00 -0600 + +linux (4.14.0-5.7) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Fix invocation of dh_prep for dbgsym packages + + -- Seth Forshee Tue, 31 Oct 2017 07:07:23 -0500 + +linux (4.14.0-4.5) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Packaging] virtualbox -- reduce in kernel module versions + - vbox-update: Fix up KERN_DIR definitions + - ubuntu: vbox -- update to 5.2.0-dfsg-2 + - [Config] CONFIG_AMD_MEM_ENCRYPT=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc7 + + -- Seth Forshee Mon, 30 Oct 2017 13:29:20 -0500 + +linux (4.14.0-3.4) artful; urgency=low + + * Touchpad and TrackPoint Dose Not Work on Lenovo X1C6 and X280 (LP: #1723986) + - SAUCE: Input: synaptics-rmi4 - RMI4 can also use SMBUS version 3 + - SAUCE: Input: synaptics - Lenovo X1 Carbon 5 should use SMBUS/RMI + - SAUCE: Input: synaptics - add Intertouch support on X1 Carbon 6th and X280 + + * powerpc/64s: Add workaround for P9 vector CI load issuenext (LP: #1721070) + - powerpc/64s: Add workaround for P9 vector CI load issue + + * Miscellaneous Ubuntu changes + - SAUCE: staging: vboxvideo: Fix reporting invalid suggested-offset-properties + - [Config] CONFIG_DRM_VBOXVIDEO=m + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] Reorder annotations file after enabling aufs + - vbox-update: Disable imported vboxvideo module + - ubuntu: vbox -- update to 5.1.30-dfsg-1 + - Enable vbox + - hio: Use correct sizes when initializing ssd_index_bits* arrays + - hio: Update io stat accounting for 4.14 + - Enable hio + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc5 + * Rebase to v4.14-rc6 + + -- Seth Forshee Mon, 23 Oct 2017 13:53:52 -0500 + +linux (4.14.0-2.3) artful; urgency=low + + * [Bug] USB controller failed to respond on Denverton after loading + intel_th_pci module (LP: #1715833) + - SAUCE: PCI: Disable broken RTIT_BAR of Intel TH + + * CONFIG_DEBUG_FS is not enabled by "make zfcpdump_defconfig" with Ubuntu + 17.10 (kernel 4.13) (LP: #1719290) + - SAUCE: s390: update zfcpdump_defconfig + + * Add installer support for Broadcom BCM573xx network drivers. (LP: #1720466) + - d-i: Add bnxt_en to nic-modules. + + * Miscellaneous Ubuntu changes + - [Config] Update annotations for 4.14-rc2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc3 + * Rebase to v4.14-rc4 + + -- Seth Forshee Wed, 11 Oct 2017 16:04:27 -0500 + +linux (4.14.0-1.2) artful; urgency=low + + * [Bug] USB 3.1 Gen2 works as 5Gbps (LP: #1720045) + - xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor + + * Please make linux-libc-dev Provide: aufs-dev (LP: #1716091) + - [Packaging] Add aufs-dev to the Provides: for linux-libc-dev + + * Upgrade to 4.13.0-11.12 in artful amd64 VM breaks display on wayland + (LP: #1718679) + - [Config] CONFIG_DRM_VBOXVIDEO=n + + * ipmmu-vmsa driver breaks arm64 boots (LP: #1718734) + - [Config] Disable CONFIG_IPMMU_VMSA on arm64 + + * autopkgtest profile fails to build on armhf (LP: #1717920) + - [Packaging] autopkgtest -- disable d-i when dropping flavours + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_I2C_XLP9XX=m + - [Packaging] Use SRCPKGNAME rather than hard-coding the source package name + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc2 + + -- Seth Forshee Fri, 29 Sep 2017 09:09:11 -0400 + +linux (4.14.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable vbox build + - Disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc1 + + -- Seth Forshee Tue, 19 Sep 2017 20:22:29 -0500 + +linux (4.13.0-11.12) artful; urgency=low + + * linux: 4.13.0-11.12 -proposed tracker (LP: #1716699) + + * kernel panic -not syncing: Fatal exception: panic_on_oops (LP: #1708399) + - s390/mm: fix local TLB flushing vs. detach of an mm address space + - s390/mm: fix race on mm->context.flush_mm + + * CVE-2017-1000251 + - Bluetooth: Properly check L2CAP config option output buffer length + + -- Seth Forshee Tue, 12 Sep 2017 10:18:38 -0500 + +linux (4.13.0-10.11) artful; urgency=low + + * linux: 4.13.0-10.11 -proposed tracker (LP: #1716287) + + * please add aufs-dkms to the Provides: for the kernel packages (LP: #1716093) + - [Packaging] Add aufs-dkms to the Provides: for kernel packages + + * Artful update to v4.13.1 stable release (LP: #1716284) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + - USB: serial: option: add support for D-Link DWM-157 C1 + - usb: Add device quirk for Logitech HD Pro Webcam C920-C + - usb:xhci:Fix regression when ATI chipsets detected + - USB: musb: fix external abort on suspend + - ANDROID: binder: add padding to binder_fd_array_object. + - ANDROID: binder: add hwbinder,vndbinder to BINDER_DEVICES. + - USB: core: Avoid race of async_completed() w/ usbdev_release() + - staging/rts5208: fix incorrect shift to extract upper nybble + - staging: ccree: save ciphertext for CTS IV + - staging: fsl-dpaa2/eth: fix off-by-one FD ctrl bitmaks + - iio: adc: ti-ads1015: fix incorrect data rate setting update + - iio: adc: ti-ads1015: fix scale information for ADS1115 + - iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set + - iio: adc: ti-ads1015: avoid getting stale result after runtime resume + - iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks + - iio: adc: ti-ads1015: add adequate wait time to get correct conversion + - driver core: bus: Fix a potential double free + - HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage + - binder: free memory on error + - crypto: caam/qi - fix compilation with CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y + - crypto: caam/qi - fix compilation with DEBUG enabled + - thunderbolt: Fix reset response_type + - fpga: altera-hps2fpga: fix multiple init of l3_remap_lock + - intel_th: pci: Add Cannon Lake PCH-H support + - intel_th: pci: Add Cannon Lake PCH-LP support + - ath10k: fix memory leak in rx ring buffer allocation + - drm/vgem: Pin our pages for dmabuf exports + - drm/ttm: Fix accounting error when fail to get pages for pool + - drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly + - rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter + - Bluetooth: Add support of 13d3:3494 RTL8723BE device + - iwlwifi: pci: add new PCI ID for 7265D + - dlm: avoid double-free on error path in dlm_device_{register,unregister} + - mwifiex: correct channel stat buffer overflows + - MCB: add support for SC31 to mcb-lpc + - s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs + - drm/nouveau/pci/msi: disable MSI on big-endian platforms by default + - drm/nouveau: Fix error handling in nv50_disp_atomic_commit + - workqueue: Fix flag collision + - ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme + - cs5536: add support for IDE controller variant + - scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE + - scsi: sg: recheck MMAP_IO request length with lock held + - of/device: Prevent buffer overflow in of_device_modalias() + - rtlwifi: Fix memory leak when firmware request fails + - rtlwifi: Fix fallback firmware loading + - Linux 4.13.1 + + * Kernel has trouble recognizing Corsair Strafe RGB keyboard (LP: #1678477) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + + * SRIOV: warning if unload VFs (LP: #1715073) + - PCI: Disable VF decoding before pcibios_sriov_disable() updates resources + + * [Patch] network-i40e:NVM bug fixes (cherrypick from 4.14) (LP: #1715578) + - i40e: avoid NVM acquire deadlock during NVM update + - i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq + + * [P9,POwer NV] Perf PMU event : pm_br_2path and pm_ld_miss_l1 is counted + twice when perf stat is done (perf:) (LP: #1714571) + - perf vendor events powerpc: Remove duplicate events + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Include vmd in storage-core-modules udeb + + * 17.10 fails to boot on POWER9 DD2.0 with Deep stop states (LP: #1715064) + - powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle + - powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug + - SAUCE: powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state + offline + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Support glibc 2.26 siginfo_t.h + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + + -- Seth Forshee Sun, 10 Sep 2017 17:48:59 -0500 + +linux (4.13.0-9.10) artful; urgency=low + + * linux: 4.13.0-9.10 -proposed tracker (LP: #1715145) + + * EDAC sbridge: Failed to register device with error -22. (LP: #1714112) + - [Config] CONFIG_EDAC_GHES=n + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13 + + -- Seth Forshee Tue, 05 Sep 2017 07:51:19 -0500 + +linux (4.13.0-8.9) artful; urgency=low + + * snapd 2.27.3+17.10 ADT test failure with linux 4.13.0-6.7 (LP: #1713103) + - SAUCE: apparmor: fix apparmorfs DAC access, permissions + + * enable ARCH_SUNXI (and friends) in arm64 kernel .config (LP: #1701137) + - [Config] Enable CONFIG_ARCH_SUNXI and related options for arm64 + + * [Bug] Harrisonville: pnd2_edac always fail to load on B1 stepping + Harrisonville SDP (LP: #1709257) + - EDAC, pnd2: Build in a minimal sideband driver for Apollo Lake + - EDAC, pnd2: Mask off the lower four bits of a BAR + - EDAC, pnd2: Conditionally unhide/hide the P2SB PCI device to read BAR + - EDAC, pnd2: Properly toggle hidden state for P2SB PCI device + - SAUCE: i2c: i801: Restore the presence state of P2SB PCI device after + reading BAR + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - SAUCE: selftests/powerpc: Disable some ptrace selftests + - [Config] CONFIG_CRYPTO_DEV_NITROX_CNN55XX=n for s390x + - [Config] CONFIG_I2C_SLAVE=n for amd64, i386, ppc64el + - [Config] Disable CONFIG_MDIO_* options for s390x + - [Config] CONFIG_SCSI_MQ_DEFAULT=n for s390x + - [Config] Update annotations for 4.13 + + -- Seth Forshee Thu, 31 Aug 2017 14:27:09 -0500 + +linux (4.13.0-7.8) artful; urgency=low + + * linux 4.12.0-11.12 ADT test failure with linux 4.12.0-11.12 (LP: #1710904) + - SAUCE: selftests/powerpc: Use snprintf to construct DSCR sysfs interface + paths + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: seccomp: log actions even when audit is disabled" + + * Miscellaneous upstream changes + - seccomp: Provide matching filter for introspection + - seccomp: Sysctl to display available actions + - seccomp: Operation for checking if an action is available + - seccomp: Sysctl to configure actions that are allowed to be logged + - seccomp: Selftest for detection of filter flag support + - seccomp: Filter flag to log all actions except SECCOMP_RET_ALLOW + - seccomp: Action to log before allowing + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc7 + + -- Seth Forshee Mon, 28 Aug 2017 08:12:24 -0500 + +linux (4.13.0-6.7) artful; urgency=low + + * HID: multitouch: Support ALPS PTP Stick and Touchpad devices (LP: #1712481) + - SAUCE: HID: multitouch: Support ALPS PTP stick with pid 0x120A + + * sort ABI files with C.UTF-8 locale (LP: #1712345) + - [Packaging] sort ABI files with C.UTF-8 locale + + * igb: Support using Broadcom 54616 as PHY (LP: #1712024) + - SAUCE: igb: add support for using Broadcom 54616 as PHY + + * RPT related fixes missing in Ubuntu 16.04.3 (LP: #1709220) + - powerpc/mm/radix: Improve _tlbiel_pid to be usable for PWC flushes + - powerpc/mm/radix: Improve TLB/PWC flushes + - powerpc/mm/radix: Avoid flushing the PWC on every flush_tlb_range + + * Linux 4.12 refuses to load self-signed modules under Secure Boot with + properly enrolled keys (LP: #1712168) + - SAUCE: (efi-lockdown) MODSIGN: Fix module signature verification + + * [17.10 FEAT] Enable NVMe driver - kernel (LP: #1708432) + - [Config] CONFIG_BLK_DEV_NVME=m for s390 + + * Artful: 4.12.0-11.12: Boot panic in vlv2_plat_configure_clock+0x3b/0xa0 + (LP: #1711298) + - [Config] CONFIG_INTEL_ATOMISP=n + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: af_unix mediation + + * Miscellaneous upstream changes + - apparmor: Fix shadowed local variable in unpack_trans_table() + - apparmor: Fix logical error in verify_header() + - apparmor: Fix an error code in aafs_create() + - apparmor: Redundant condition: prev_ns. in [label.c:1498] + - apparmor: add the ability to mediate signals + - apparmor: add mount mediation + - apparmor: cleanup conditional check for label in label_print + - apparmor: add support for absolute root view based labels + - apparmor: make policy_unpack able to audit different info messages + - apparmor: add more debug asserts to apparmorfs + - apparmor: add base infastructure for socket mediation + - apparmor: move new_null_profile to after profile lookup fns() + - apparmor: fix race condition in null profile creation + - apparmor: ensure unconfined profiles have dfas initialized + - apparmor: fix incorrect type assignment when freeing proxies + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc6 + + -- Seth Forshee Wed, 23 Aug 2017 08:10:38 -0500 + +linux (4.13.0-5.6) artful; urgency=low + + * Ubuntu17.10 - perf: Update Power9 PMU event JSON files (LP: #1708630) + - perf pmu-events: Support additional POWER8+ PVR in mapfile + - perf vendor events: Add POWER9 PMU events + - perf vendor events: Add POWER9 PVRs to mapfile + - SAUCE: perf vendor events powerpc: remove suffix in mapfile + - SAUCE: perf vendor events powerpc: Update POWER9 events + + * Disable CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE (LP: #1709171) + - [Config] CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=n for ppc64el + + * Please only recommend or suggest initramfs-tools | linux-initramfs-tool for + kernels able to boot without initramfs (LP: #1700972) + - [Debian] Don't depend on initramfs-tools + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - SAUCE: aufs -- Add missing argument to loop_switch() call + - [Config] Enable aufs + - SAUCE: (noup) Update spl to 0.6.5.11-ubuntu1, zfs to 0.6.5.11-1ubuntu3 + - Enable zfs build + - SAUCE: powerpc: Always initialize input array when calling epapr_hypercall() + - [Packaging] switch up to debhelper 9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc5 + + -- Seth Forshee Tue, 15 Aug 2017 09:24:16 -0500 + +linux (4.13.0-4.5) artful; urgency=low + + * Lenovo Yoga 910 Sensors (LP: #1708120) + - SAUCE: (no-up) HID: Add quirk for Lenovo Yoga 910 with ITE Chips + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Add vmd driver to generic inclusion list + + * Set CONFIG_SATA_HIGHBANK=y on armhf (LP: #1703430) + - [Config] CONFIG_SATA_HIGHBANK=y + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-1 + - SAUCE: hio: Build fixes for 4.13 + - Enable hio build + - SAUCE: (noup) Update spl to 0.6.5.11-1, zfs to 0.6.5.11-1ubuntu1 + - [debian] use all rather than amd64 dkms debs for sync + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc4 + + -- Seth Forshee Tue, 08 Aug 2017 11:31:48 -0500 + +linux (4.13.0-3.4) artful; urgency=low + + * Adt tests of src:linux time out often on armhf lxc containers (LP: #1705495) + - [Packaging] tests -- reduce rebuild test to one flavour + - [Packaging] tests -- reduce rebuild test to one flavour -- use filter + + * snapd 2.26.8+17.10 ADT test failure with linux 4.12.0-6.7 (LP: #1704158) + - SAUCE: virtio_net: Revert mergeable buffer handling rework + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc3 + + -- Seth Forshee Mon, 31 Jul 2017 10:08:16 -0500 + +linux (4.13.0-2.3) artful; urgency=low + + * Change CONFIG_IBMVETH to module (LP: #1704479) + - [Config] CONFIG_IBMVETH=m + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc2 + + -- Seth Forshee Mon, 24 Jul 2017 13:58:08 -0500 + +linux (4.13.0-1.2) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Support sphinx-based kernel documentation + + -- Seth Forshee Thu, 20 Jul 2017 09:18:33 -0500 + +linux (4.13.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable hio + - Disable zfs build + - ubuntu: vbox -- update to 5.1.24-dfsg-1 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc1 + + -- Seth Forshee Wed, 19 Jul 2017 15:09:31 -0500 + +linux (4.12.0-7.8) artful; urgency=low + + * ThunderX: soft lockup on 4.8+ kernels when running qemu-efi with vhost=on + (LP: #1673564) + - arm64: Add a facility to turn an ESR syndrome into a sysreg encoding + - KVM: arm/arm64: vgic-v3: Add accessors for the ICH_APxRn_EL2 registers + - KVM: arm64: Make kvm_condition_valid32() accessible from EL2 + - KVM: arm64: vgic-v3: Add hook to handle guest GICv3 sysreg accesses at EL2 + - KVM: arm64: vgic-v3: Add ICV_BPR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_EOIR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler + - KVM: arm64: vgic-v3: Enable trapping of Group-1 system registers + - KVM: arm64: Enable GICv3 Group-1 sysreg trapping via command-line + - KVM: arm64: vgic-v3: Add ICV_BPR0_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGNREN0_EL1 handler + - KVM: arm64: vgic-v3: Add misc Group-0 handlers + - KVM: arm64: vgic-v3: Enable trapping of Group-0 system registers + - KVM: arm64: Enable GICv3 Group-0 sysreg trapping via command-line + - arm64: Add MIDR values for Cavium cn83XX SoCs + - arm64: Add workaround for Cavium Thunder erratum 30115 + - KVM: arm64: vgic-v3: Add ICV_DIR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_RPR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_CTLR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_PMR_EL1 handler + - KVM: arm64: Enable GICv3 common sysreg trapping via command-line + - KVM: arm64: vgic-v3: Log which GICv3 system registers are trapped + - KVM: arm64: Log an error if trapping a read-from-write-only GICv3 access + - KVM: arm64: Log an error if trapping a write-to-read-only GICv3 access + + * hns: under heavy load, NIC may fail and require reboot (LP: #1704146) + - net: hns: Bugfix for Tx timeout handling in hns driver + + * New ACPI identifiers for ThunderX SMMU (LP: #1703437) + - iommu/arm-smmu: Plumb in new ACPI identifiers + + * Transparent hugepages should default to enabled=madvise (LP: #1703742) + - SAUCE: use CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y as default + + * Artful update to v4.12.1 stable release (LP: #1703858) + - driver core: platform: fix race condition with driver_override + - RDMA/uverbs: Check port number supplied by user verbs cmds + - usb: dwc3: replace %p with %pK + - USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick + - usb: usbip: set buffer pointers to NULL after free + - Add USB quirk for HVR-950q to avoid intermittent device resets + - usb: Fix typo in the definition of Endpoint[out]Request + - USB: core: fix device node leak + - USB: serial: option: add two Longcheer device ids + - USB: serial: qcserial: new Sierra Wireless EM7305 device ID + - xhci: Limit USB2 port wake support for AMD Promontory hosts + - gfs2: Fix glock rhashtable rcu bug + - Add "shutdown" to "struct class". + - tpm: Issue a TPM2_Shutdown for TPM2 devices. + - tpm: fix a kernel memory leak in tpm-sysfs.c + - powerpc/powernv: Fix CPU_HOTPLUG=n idle.c compile error + - x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings + - sched/fair, cpumask: Export for_each_cpu_wrap() + - sched/core: Implement new approach to scale select_idle_cpu() + - sched/numa: Use down_read_trylock() for the mmap_sem + - sched/numa: Override part of migrate_degrades_locality() when idle balancing + - sched/fair: Simplify wake_affine() for the single socket case + - sched/numa: Implement NUMA node level wake_affine() + - sched/fair: Remove effective_load() + - sched/numa: Hide numa_wake_affine() from UP build + - xen: avoid deadlock in xenbus driver + - crypto: drbg - Fixes panic in wait_for_completion call + - Linux 4.12.1 + + * cxlflash update request in the Xenial SRU stream (LP: #1702521) + - scsi: cxlflash: Combine the send queue locks + - scsi: cxlflash: Update cxlflash_afu_sync() to return errno + - scsi: cxlflash: Reset hardware queue context via specified register + - scsi: cxlflash: Schedule asynchronous reset of the host + - scsi: cxlflash: Handle AFU sync failures + - scsi: cxlflash: Track pending scsi commands in each hardware queue + - scsi: cxlflash: Flush pending commands in cleanup path + - scsi: cxlflash: Add scsi command abort handler + - scsi: cxlflash: Create character device to provide host management interface + - scsi: cxlflash: Separate AFU internal command handling from AFU sync + specifics + - scsi: cxlflash: Introduce host ioctl support + - scsi: cxlflash: Refactor AFU capability checking + - scsi: cxlflash: Support LUN provisioning + - scsi: cxlflash: Support AFU debug + - scsi: cxlflash: Support WS16 unmap + - scsi: cxlflash: Remove zeroing of private command data + - scsi: cxlflash: Update TMF command processing + - scsi: cxlflash: Avoid double free of character device + - scsi: cxlflash: Update send_tmf() parameters + - scsi: cxlflash: Update debug prints in reset handlers + + * make snap-pkg support (LP: #1700747) + - make snap-pkg support + + * Quirk for non-compliant PCI bridge on HiSilicon D05 board (LP: #1698706) + - SAUCE: PCI: Support hibmc VGA cards behind a misbehaving HiSilicon bridge + + * arm64: fix crash reading /proc/kcore (LP: #1702749) + - fs/proc: kcore: use kcore_list type to check for vmalloc/module address + - arm64: mm: select CONFIG_ARCH_PROC_KCORE_TEXT + + * Opal and POWER9 DD2 (LP: #1702159) + - SAUCE: powerpc/powernv: Tell OPAL about our MMU mode on POWER9 + + * Data corruption with hio driver (LP: #1701316) + - SAUCE: hio: Fix incorrect use of enum req_opf values + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.10-1, zfs to 0.6.5.10-1ubuntu2 + - snapcraft.yaml: Sync with xenial + - [Config] CONFIG_CAVIUM_ERRATUM_30115=y + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and + MokSBState" + + -- Seth Forshee Fri, 14 Jul 2017 15:25:41 -0500 + +linux (4.12.0-6.7) artful; urgency=low + + * update ENA driver to 1.2.0k from net-next (LP: #1701575) + - net: ena: change return value for unsupported features unsupported return + value + - net: ena: add hardware hints capability to the driver + - net: ena: change sizeof() argument to be the type pointer + - net: ena: add reset reason for each device FLR + - net: ena: add support for out of order rx buffers refill + - net: ena: allow the driver to work with small number of msix vectors + - net: ena: use napi_schedule_irqoff when possible + - net: ena: separate skb allocation to dedicated function + - net: ena: use lower_32_bits()/upper_32_bits() to split dma address + - net: ena: update driver's rx drop statistics + - net: ena: update ena driver to version 1.2.0 + + * APST gets enabled against explicit kernel option (LP: #1699004) + - nvme: explicitly disable APST on quirked devices + + * Miscellaneous Ubuntu changes + - SAUCE: hio: Update to Huawei ES3000_V2 (2.1.0.40) + - SAUCE: hio updates for 4.12 + - SAUCE: Enable hio build + + -- Seth Forshee Wed, 05 Jul 2017 14:23:20 -0500 + +linux (4.12.0-5.6) artful; urgency=low + + * ERAT invalidate on context switch removal (LP: #1700819) + - powerpc: Only do ERAT invalidate on radix context switch on P9 DD1 + + * powerpc: Invalidate ERAT on powersave wakeup for POWER9 (LP: #1700521) + - SAUCE: powerpc: Invalidate ERAT on powersave wakeup for POWER9 + + * Miscellaneous Ubuntu changes + - d-i: Move qcom-emac from arm64 to shared nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.12 + + -- Seth Forshee Mon, 03 Jul 2017 07:52:02 -0500 + +linux (4.12.0-4.5) artful; urgency=low + + * aacraid driver may return uninitialized stack data to userspace + (LP: #1700077) + - SAUCE: scsi: aacraid: Don't copy uninitialized stack memory to userspace + + * KILLER1435-S[0489:e0a2] BT cannot search BT 4.0 device (LP: #1699651) + - Bluetooth: btusb: Add support for 0489:e0a2 QCA_ROME device + + * AACRAID for power9 platform (LP: #1689980) + - scsi: aacraid: Remove __GFP_DMA for raw srb memory + - scsi: aacraid: Fix DMAR issues with iommu=pt + - scsi: aacraid: Added 32 and 64 queue depth for arc natives + - scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks + - scsi: aacraid: Remove reset support from check_health + - scsi: aacraid: Change wait time for fib completion + - scsi: aacraid: Log count info of scsi cmds before reset + - scsi: aacraid: Print ctrl status before eh reset + - scsi: aacraid: Using single reset mask for IOP reset + - scsi: aacraid: Rework IOP reset + - scsi: aacraid: Add periodic checks to see IOP reset status + - scsi: aacraid: Rework SOFT reset code + - scsi: aacraid: Rework aac_src_restart + - scsi: aacraid: Use correct function to get ctrl health + - scsi: aacraid: Make sure ioctl returns on controller reset + - scsi: aacraid: Enable ctrl reset for both hba and arc + - scsi: aacraid: Add reset debugging statements + - scsi: aacraid: Remove reference to Series-9 + - scsi: aacraid: Update driver version to 50834 + + * hibmc driver does not include "pci:" prefix in bus ID (LP: #1698700) + - SAUCE: drm: hibmc: Use set_busid function from drm core + + * HiSilicon D05: installer doesn't appear on VGA (LP: #1698954) + - d-i: Add hibmc-drm to kernel-image udeb + + * Fix /proc/cpuinfo revision for POWER9 DD2 (LP: #1698844) + - SAUCE: powerpc: Fix /proc/cpuinfo revision for POWER9 DD2 + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SATA_MV=n and CONFIG_GENERIC_PHY=n for s390x + - [Config] CONFIG_ATA=n for s390x + - [Config] Update annotations for 4.12 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc7 + + -- Seth Forshee Mon, 26 Jun 2017 11:27:29 -0500 + +linux (4.12.0-3.4) artful; urgency=low + + * Miscellaneous upstream changes + - ufs: fix the logics for tail relocation + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc6 + + -- Seth Forshee Mon, 19 Jun 2017 14:50:39 -0500 + +linux (4.12.0-2.3) artful; urgency=low + + * CVE-2014-9900 + - SAUCE: (no-up) net: Zeroing the structure ethtool_wolinfo in + ethtool_get_wol() + + * System doesn't boot properly on Gigabyte AM4 motherboards (AMD Ryzen) + (LP: #1671360) + - pinctrl/amd: Use regular interrupt instead of chained + + * extend-diff-ignore should use exact matches (LP: #1693504) + - [Packaging] exact extend-diff-ignore matches + + * Miscellaneous Ubuntu changes + - SAUCE: efi: Don't print secure boot state from the efi stub + - ubuntu: vbox -- Update to 5.1.22-dfsg-1 + - SAUCE: vbox fixes for 4.12 + - Re-enable virtualbox build + - [Config] CONFIG_ORANGEFS_FS=m + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu2, zfs to 0.6.5.9-5ubuntu7 + - Enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc4 + * Rebase to v4.12-rc5 + + -- Seth Forshee Sun, 11 Jun 2017 22:25:13 -0500 + +linux (4.12.0-1.2) artful; urgency=low + + * Enable Matrox driver for Ubuntu 16.04.3 (LP: #1693337) + - [Config] Enable CONFIG_DRM_MGAG200 as module + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_LIBIO=y on arm64 only + - SAUCE: LIBIO: Introduce a generic PIO mapping method + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: LPC: Support the device-tree LPC host on Hip06/Hip07 + - SAUCE: LIBIO: Support the dynamically logical PIO registration of ACPI host + I/O + - SAUCE: LPC: Add the ACPI LPC support + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: PCI: Restore codepath for !CONFIG_LIBIO + + * POWER9: Additional patches for TTY and CPU_IDLE (LP: #1674325) + - SAUCE: tty: Fix ldisc crash on reopened tty + + * Miscellaneous Ubuntu changes + - [Debian] Add build-dep on libnuma-dev to enable 'perf bench numa' + - Rebase to v4.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc3 + + -- Seth Forshee Mon, 29 May 2017 20:56:29 -0500 + +linux (4.12.0-0.1) artful; urgency=low + + * please enable CONFIG_ARM64_LSE_ATOMICS (LP: #1691614) + - [Config] CONFIG_ARM64_LSE_ATOMICS=y + + * [Regression] NUMA_BALANCING disabled on arm64 (LP: #1690914) + - [Config] CONFIG_NUMA_BALANCING{,_DEFAULT_ENABLED}=y on arm64 + + * exec'ing a setuid binary from a threaded program sometimes fails to setuid + (LP: #1672819) + - SAUCE: exec: ensure file system accounting in check_unsafe_exec is correct + + * Miscellaneous Ubuntu changes + - Update find-missing-sauce.sh to compare to artful + - Update dropped.txt + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Disable virtualbox build + - Disable hio build + - SAUCE: securityfs: Replace CURRENT_TIME with current_time() + - Disable zfs build + - [Debian] Work out upstream tag for use with gen-auto-reconstruct + - SAUCE: Import aufs driver + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + - [Config] Enable aufs + - SAUCE: perf callchain: Include errno.h on x86 unconditinally + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc2 + + -- Seth Forshee Sun, 21 May 2017 23:44:44 -0500 + +linux (4.11.0-3.8) artful; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1690999 + + * apparmor_parser hangs indefinitely when called by multiple threads + (LP: #1645037) + - SAUCE: apparmor: fix lock ordering for mkdir + + * apparmor leaking securityfs pin count (LP: #1660846) + - SAUCE: apparmor: fix leak on securityfs pin count + + * apparmor reference count leak when securityfs_setup_d_inode\ () fails + (LP: #1660845) + - SAUCE: apparmor: fix reference count leak when securityfs_setup_d_inode() + fails + + * apparmor not checking error if security_pin_fs() fails (LP: #1660842) + - SAUCE: apparmor: fix not handling error case when securityfs_pin_fs() fails + + * libvirt profile is blocking global setrlimit despite having no rlimit rule + (LP: #1679704) + - SAUCE: apparmor: fix complain mode failure for rlimit mediation + - apparmor: update auditing of rlimit check to provide capability information + + * apparmor: does not provide a way to detect policy updataes (LP: #1678032) + - SAUCE: apparmor: add policy revision file interface + + * apparmor does not make support of query data visible (LP: #1678023) + - SAUCE: apparmor: add label data availability to the feature set + + * apparmor query interface does not make supported query info available + (LP: #1678030) + - SAUCE: apparmor: add information about the query inteface to the feature set + + * change_profile incorrect when using namespaces with a compound stack + (LP: #1677959) + - SAUCE: apparmor: fix label parse for stacked labels + + * Regression in 4.4.0-65-generic causes very frequent system crashes + (LP: #1669611) + - apparmor: sync of apparmor 3.6+ (17.04) + + * Artful update to 4.11.1 stable release (LP: #1690814) + - dm ioctl: prevent stack leak in dm ioctl call + - drm/sti: fix GDP size to support up to UHD resolution + - power: supply: lp8788: prevent out of bounds array access + - brcmfmac: Ensure pointer correctly set if skb data location changes + - brcmfmac: Make skb header writable before use + - sparc64: fix fault handling in NGbzero.S and GENbzero.S + - refcount: change EXPORT_SYMBOL markings + - net: macb: fix phy interrupt parsing + - tcp: fix access to sk->sk_state in tcp_poll() + - geneve: fix incorrect setting of UDP checksum flag + - bpf: enhance verifier to understand stack pointer arithmetic + - bpf, arm64: fix jit branch offset related to ldimm64 + - tcp: fix wraparound issue in tcp_lp + - net: ipv6: Do not duplicate DAD on link up + - net: usb: qmi_wwan: add Telit ME910 support + - tcp: do not inherit fastopen_req from parent + - ipv4, ipv6: ensure raw socket message is big enough to hold an IP header + - rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string + - ipv6: initialize route null entry in addrconf_init() + - ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf + - tcp: randomize timestamps on syncookies + - bnxt_en: allocate enough space for ->ntp_fltr_bmap + - bpf: don't let ldimm64 leak map addresses on unprivileged + - net: mdio-mux: bcm-iproc: call mdiobus_free() in error path + - f2fs: sanity check segment count + - xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..." + - xen: Revert commits da72ff5bfcb0 and 72a9b186292d + - block: get rid of blk_integrity_revalidate() + - Linux 4.11.1 + + * Module signing exclusion for staging drivers does not work properly + (LP: #1690908) + - SAUCE: Fix module signing exclusion in package builds + + * perf: qcom: Add L3 cache PMU driver (LP: #1689856) + - [Config] CONFIG_QCOM_L3_PMU=y + - perf: qcom: Add L3 cache PMU driver + + * No PMU support for ACPI-based arm64 systems (LP: #1689661) + - drivers/perf: arm_pmu: rework per-cpu allocation + - drivers/perf: arm_pmu: manage interrupts per-cpu + - drivers/perf: arm_pmu: split irq request from enable + - drivers/perf: arm_pmu: remove pointless PMU disabling + - drivers/perf: arm_pmu: define armpmu_init_fn + - drivers/perf: arm_pmu: fold init into alloc + - drivers/perf: arm_pmu: factor out pmu registration + - drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() + - drivers/perf: arm_pmu: handle no platform_device + - drivers/perf: arm_pmu: rename irq request/free functions + - drivers/perf: arm_pmu: split cpu-local irq request/free + - drivers/perf: arm_pmu: move irq request/free into probe + - drivers/perf: arm_pmu: split out platform device probe logic + - arm64: add function to get a cpu's MADT GICC table + - [Config] CONFIG_ARM_PMU_ACPI=y + - drivers/perf: arm_pmu: add ACPI framework + - arm64: pmuv3: handle !PMUv3 when probing + - arm64: pmuv3: use arm_pmu ACPI framework + + * Fix NVLINK2 TCE route (LP: #1690155) + - powerpc/powernv: Fix TCE kill on NVLink2 + + * CVE-2017-0605 + - tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() + + * Miscellaneous Ubuntu changes + - [Config] Restore powerpc arch to annotations file + - [Config] Disable runtime testing modules + - [Config] Disable drivers not needed on s390x + - [Config] Update annotations for 4.11 + - [Config] updateconfigs after apparmor updates + + * Miscellaneous upstream changes + - apparmor: use SHASH_DESC_ON_STACK + - apparmor: fix invalid reference to index variable of iterator line 836 + - apparmor: fix parameters so that the permission test is bypassed at boot + - apparmor: Make path_max parameter readonly + - apparmorfs: Combine two function calls into one in aa_fs_seq_raw_abi_show() + - apparmorfs: Use seq_putc() in two functions + - apparmor: provide information about path buffer size at boot + - apparmor: add/use fns to print hash string hex value + + -- Seth Forshee Tue, 16 May 2017 00:39:13 -0500 + +linux (4.11.0-2.7) artful; urgency=low + + * kernel-wedge fails in artful due to leftover squashfs-modules d-i files + (LP: #1688259) + - Remove squashfs-modules files from d-i + - [Config] as squashfs-modules is builtin kernel-image must Provides: it + + * [Zesty] d-i: replace msm_emac with qcom_emac (LP: #1677297) + - Revert "UBUNTU: d-i: initrd needs msm_emac on amberwing platform." + - d-i: initrd needs qcom_emac on amberwing platform. + + * update for V3 kernel bits and improved multiple fan slice support + (LP: #1470091) + - SAUCE: fan: tunnel multiple mapping mode (v3) + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu1, zfs to 0.6.5.9-5ubuntu5 + - Enable zfs + - SAUCE: fan: add VXLAN implementation + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Add EFI signature data types + - SAUCE: (efi-lockdown) Add an EFI signature blob parser and key loader. + - SAUCE: (efi-lockdown) KEYS: Add a system blacklist keyring + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Support not importing certs from db + - SAUCE: (efi-lockdown) MODSIGN: Don't try secure boot if EFI runtime is + disabled + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * rebase to v4.11 + + -- Seth Forshee Fri, 05 May 2017 07:43:14 -0500 + +linux (4.11.0-1.6) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Use default compression for all packages + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) fs: Allow superblock owner to change ownership of inodes + - SAUCE: (namespace) fs: Don't remove suid for CAP_FSETID for userns root + - SAUCE: (namespace) fs: Allow superblock owner to access do_remount_sb() + - SAUCE: (namespace) capabilities: Allow privileged user in s_user_ns to set + security.* xattrs + - SAUCE: (namespace) fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw + filesystems + - SAUCE: (namespace) fuse: Add support for pid namespaces + - SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace + or a descendant + - SAUCE: (namespace) fuse: Allow user namespace mounts + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) evm: Don't update hmacs in user ns mounts + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + + -- Seth Forshee Wed, 26 Apr 2017 10:08:29 -0500 + +linux (4.11.0-0.5) artful; urgency=low + + * [Hyper-V][SAUCE] pci-hyperv: Use only 16 bit integer for PCI domain + (LP: #1684971) + - SAUCE: pci-hyperv: Use only 16 bit integer for PCI domain + + * [Hyper-V] Ubuntu 14.04.2 LTS Generation 2 SCSI Errors on VSS Based Backups + (LP: #1470250) + - SAUCE: Tools: hv: vss: Thaw the filesystem and continue after freeze fails + + * Enable virtual scsi server driver for Power (LP: #1615665) + - SAUCE: Return TCMU-generated sense data to fabric module + + * include/linux/security.h header syntax error with !CONFIG_SECURITYFS + (LP: #1630990) + - SAUCE: (no-up) include/linux/security.h -- fix syntax error with + CONFIG_SECURITYFS=n + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Debian] Add script to update virtualbox + - ubuntu: vbox -- Update to 5.1.20-dfsg-2 + - Enable vbox + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc8 + + -- Seth Forshee Tue, 25 Apr 2017 13:42:54 -0500 + +linux (4.11.0-0.4) zesty; urgency=low + + * POWER9: Improve performance on memory management (LP: #1681429) + - SAUCE: powerpc/mm/radix: Don't do page walk cache flush when doing full mm + flush + - SAUCE: powerpc/mm/radix: Remove unnecessary ptesync + + * Miscellaneous Ubuntu changes + - find-missing-sauce.sh + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc7 + + -- Seth Forshee Tue, 18 Apr 2017 08:19:43 -0500 + +linux (4.11.0-0.3) zesty; urgency=low + + * Disable CONFIG_HVC_UDBG on ppc64el (LP: #1680888) + - [Config] Disable CONFIG_HVC_UDBG on ppc64el + + * smartpqi driver needed in initram disk and installer (LP: #1680156) + - [Config] Add smartpqi to d-i + + * Disable CONFIG_SECURITY_SELINUX_DISABLE (LP: #1680315) + - [Config] CONFIG_SECURITY_SELINUX_DISABLE=n + + * Miscellaneous Ubuntu changes + - [Config] flash-kernel should be a Breaks + - [Config] drop the info directory + - [Config] drop NOTES as obsolete + - [Config] drop changelog.historical as obsolete + - rebase to v4.11-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc6 + + -- Tim Gardner Tue, 11 Apr 2017 07:16:52 -0600 + +linux (4.11.0-0.2) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc5 + + -- Tim Gardner Mon, 03 Apr 2017 08:26:07 +0100 + +linux (4.11.0-0.1) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc4 + - LP: #1591053 + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 + +linux (4.11.0-0.0) zesty; urgency=low + + * dummy entry + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 --- linux-5.8.0.orig/debian/cloud-tools/hv_get_dhcp_info +++ linux-5.8.0/debian/cloud-tools/hv_get_dhcp_info @@ -0,0 +1,55 @@ +#!/bin/bash + +# This example script retrieves the DHCP state of a given interface. +# In the interest of keeping the KVP daemon code free of distro specific +# information; the kvp daemon code invokes this external script to gather +# DHCP setting for the specific interface. +# +# Input: Name of the interface +# +# Output: The script prints the string "Enabled" to stdout to indicate +# that DHCP is enabled on the interface. If DHCP is not enabled, +# the script prints the string "Disabled" to stdout. +# +# Each Distro is expected to implement this script in a distro specific +# fashion. + +#set -x + +IF_FILE="/etc/network/interfaces" +NMCMD="nmcli" + +function checknetworkmanager { + #Assumes if $NMCMD exists, inteface exists and interface is not + # in $IF_FILE then dhcp is being used by NM + if hash $NMCMD >/dev/null 2>&1 ; then + if $NMCMD dev status |grep -q $1 ; then + echo "Enabled" + else + echo "Disabled" + fi + else + #Give up + echo "Disabled" + fi +} + +if [ -z $1 ] ; then echo "Disabled"; exit; fi + +if [ -e $IF_FILE ]; then + if grep -v -e "^#" $IF_FILE|grep -q $1 ; then + #interface exists so + if grep -q -e $1\.\*dhcp $IF_FILE; then + echo "Enabled"; exit; + else + echo "Disabled"; exit; + fi + else + checknetworkmanager $1 + exit + fi +else + checknetworkmanager $1 + exit +fi + --- linux-5.8.0.orig/debian/cloud-tools/hv_get_dns_info +++ linux-5.8.0/debian/cloud-tools/hv_get_dns_info @@ -0,0 +1,13 @@ +#!/bin/bash + +# This example script parses /etc/resolv.conf to retrive DNS information. +# In the interest of keeping the KVP daemon code free of distro specific +# information; the kvp daemon code invokes this external script to gather +# DNS information. +# This script is expected to print the nameserver values to stdout. +# Each Distro is expected to implement this script in a distro specific +# fashion. For instance on Distros that ship with Network Manager enabled, +# this script can be based on the Network Manager APIs for retrieving DNS +# entries. + +cat /etc/resolv.conf 2>/dev/null | awk '/^nameserver/ { print $2 }' --- linux-5.8.0.orig/debian/cloud-tools/hv_set_ifconfig +++ linux-5.8.0/debian/cloud-tools/hv_set_ifconfig @@ -0,0 +1,288 @@ +#!/usr/bin/python3 +# +# hv_set_ifconfig -- take the hv_kvp_daemon generated configuration +# file and apply it to the Ubuntu configuration. +# + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# DHCP=yes + +# CONFIG example: +# HWADDR=11:22:33:44:55:66 +# DEVICE=foo1 +# IPADDR=192.168.99.10 +# GATEWAY=192.168.99.1 +# DNS1=192.168.88.250 +# IPADDR2=192.168.99.11 +# IPV6ADDR=2001:DB8:99::10 +# IPV6NETMASK=64 +# IPV6_DEFAULTGW=2001:DB8:99::10 + +# set interfaces in hv_kvp_daemon style +import fileinput +import sys +import errno +import os +import shutil +import tempfile +import subprocess + +if_filename="/etc/network/interfaces" + +# Drop our output (XXX?) +sys.stdout = open(os.devnull, 'w') +sys.stderr = open(os.devnull, 'w') + +# Confirm we can open the network configuration. +try: + if_file=open(if_filename,"r+") +except IOError as e: + exit(e.errno) +else: + if_file.close() + +# Usage: hv_set_ifconfig +if len(sys.argv) != 2 : + exit(errno.EINVAL) + +# +# Here is the format of the ip configuration file: +# +# HWADDR=macaddr +# DEVICE=interface name +# BOOTPROTO= (where is "dhcp" if DHCP is configured +# or "none" if no boot-time protocol should be used) +# +# IPADDR0=ipaddr1 +# IPADDR1=ipaddr2 +# IPADDRx=ipaddry (where y = x + 1) +# +# NETMASK0=netmask1 +# NETMASKx=netmasky (where y = x + 1) +# +# GATEWAY=ipaddr1 +# GATEWAYx=ipaddry (where y = x + 1) +# +# DNSx=ipaddrx (where first DNS address is tagged as DNS1 etc) +# +# IPV6 addresses will be tagged as IPV6ADDR, IPV6 gateway will be +# tagged as IPV6_DEFAULTGW and IPV6 NETMASK will be tagged as +# IPV6NETMASK. +# + +kvp=dict(line.strip().split("=") for line in fileinput.input()) + +# Setting the hwaddress to something azure is not expecting is fatal +# to networking. +if not "HWADDR" in kvp : + exit(errno.EPROTO) + +# Confirm we have a device specified. +if not "DEVICE" in kvp : + exit(1) + +autolist = [] +output=[] +basename=kvp["DEVICE"] + +# DNS entries will go with the first interface and there can be a max +# of three. These will be emitted with the first interface. +dns = [] +for count in (1, 2, 3): + key = "DNS" + str(count) + if key in kvp: + dns += [kvp[key]] +dns_emitted = False + +# IPV4 may either be dhcp or static. +if ("DHCP" in kvp and kvp["DHCP"] == "yes") or \ + ("BOOTPROTO" in kvp and kvp["BOOTPROTO"] == "dhcp"): + autolist.append(basename) + output += ["iface " + basename + " inet dhcp"] + output += [""] +else: + # Matchup the interface specific lines + + # No real max for the number of interface + aliases ... + # only required is the address (but mate everything up that comes in. + + # IPv4 -- ensure we sort by numeric suffixes. + v4names = [ int(name[6:]) for name in kvp.keys() if name.startswith("IPADDR") ] + v4names.sort() + + for if_count in v4names: + ifname = basename + which = str(if_count) + + if if_count: + ifname += ":" + str(if_count) + which_gw = which + else: + which_gw = "" + + if not ifname in autolist: + autolist += [ifname] + + output += [ "iface " + ifname + " inet static" ] + output += [ "\t" + "address " + kvp["IPADDR" + which] ] + if "NETMASK" + which in kvp: + output += [ "\tnetmask " + kvp["NETMASK" + which] ] + if "GATEWAY" + which_gw in kvp: + output += ["\tgateway " + kvp["GATEWAY" + which_gw]] + + if not dns_emitted: + dns_emitted = True + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + +# IPv6 requires a netmask +# If an ipv6 exists, you'll want to turn off /proc/sys/net/ipv6/conf/all/autoconf with +# echo 0 > /proc/sys/net/ipv6/conf/all/autoconf +v6names = [ int(name[8:]) for name in kvp.keys() if name.startswith("IPV6ADDR") ] +v6names.sort() + +for if6_count in v6names: + ifname = basename + which = str(if6_count) + + if if6_count: + ifname += ":" + str(if6_count) + which_gw = which + else: + which_gw = "" + + if not ifname in autolist: + autolist += [ifname] + + if "IPV6NETMASK" + which in kvp: + output += [ "iface " + ifname + " inet6 static"] + output += [ "\taddress " + kvp["IPV6ADDR" + which]] + output += [ "\tnetmask " + kvp["IPV6NETMASK" + which]] + if "IPV6_DEFAULTGW" + which_gw in kvp: + output += [ "\tgateway " + kvp["IPV6_DEFAULTGW" + which_gw] ] + if not dns_emitted: + dns_emitted = True + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + +# Mark this new interface for automatic up. +if len(autolist): + output = ["auto "+" ".join(autolist)] + output + +print("===================================") +print(output) +print("===================================") + + +# Time to clean out the existing interface file + +# Markers. +start_mark = "# The following stanza(s) added by hv_set_ifconfig" +end_mark = "#End of hv_set_ifconfig stanzas" + +f=open(if_filename,"r") +flines=f.readlines() +f.close() +newfile=[] +pitchstanza=0 +inastanza=0 +stanza=[] +prev_line=None +for line in flines: + if line.startswith("auto"): + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza=0 + newline="" + autoline=line.strip().split(" ") + for word in autoline: + if (not word == basename) and (not word.startswith(basename+":")): + newline+=word + " " + newline = newline.strip() + if not newline == "auto": + newfile += [newline.strip()] + elif line.startswith(("iface","mapping","source")): + '''Read a stanza''' + '''A Stanza can also start with allow- ie allow-hotplug''' + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza=1 + pitchstanza=0 + autoline=line.strip().split(" ") + for word in autoline: + if (word == basename) or (word.startswith(basename+":")): + pitchstanza=1 + if not pitchstanza: + stanza+=[line.strip()] + elif line.strip() in (start_mark, end_mark): + if inastanza: + if not pitchstanza: + newfile.extend(stanza) + stanza=[] + inastanza = 0 + pitchstanza = 0 + # Deduplicate markers. + if line != prev_line: + newfile += [line.strip()] + else: + if inastanza: + if not pitchstanza: + stanza+=[line.strip()] + else: + if not pitchstanza: + newfile += [line.strip()] + prev_line=line + +# Include pending stanza if any. +if inastanza and not pitchstanza: + newfile.extend(stanza) + + +def emit(line): + print(line) + output = line + "\n" + os.write(fd, output.encode('utf-8')) + +# Insert the new output at the end and inside the existing markers if found. +emitted = False +fd, path = tempfile.mkstemp() +for line in newfile: + if line == end_mark: + emit("\n".join(output)) + emitted = True + emit(line) +if not emitted: + emit(start_mark) + emit("\n".join(output)) + emit(end_mark) +os.close(fd) + +shutil.copy(path,if_filename) +os.chmod(if_filename,0o644) + +#print("TMPFILE is at: " + path) +#print("Copied file is at: " + if_filename) + +try: + retcode = subprocess.call("ifdown "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) + +try: + retcode = subprocess.call("ifup "+basename , shell=True) + if retcode < 0: + print("Child was terminated by signal", -retcode, file=sys.stderr) + else: + print("Child returned", retcode, file=sys.stderr) +except OSError as e: + print("Execution failed:", e, file=sys.stderr) --- linux-5.8.0.orig/debian/commit-templates/bumpabi +++ linux-5.8.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-5.8.0.orig/debian/commit-templates/config-updates +++ linux-5.8.0/debian/commit-templates/config-updates @@ -0,0 +1,15 @@ +# +# This template is used for commit messages that don't need to +# show up in debian/changelog. Administrative stuff like config +# updates, ABI bumps, etc. Setting 'Ignore: yes' prevents +# 'debian/rules insertchanges' from inserting this commit meesage +# as a changelog entry. +# +# Please give a one-line description of the config change followed +# by a detailed explanation if necessary + +UBUNTU: [Config] XXXX + +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-5.8.0.orig/debian/commit-templates/external-driver +++ linux-5.8.0/debian/commit-templates/external-driver @@ -0,0 +1,20 @@ +# Ubuntu external driver commit. +# +# NOTE: This gets reformatted for README.Ubuntu-External-Drivers and +# debian/changelog. +# +# This is only needed when a driver is added, updated or removed. It is +# not needed when patches or fixes are applied to the driver. If the +# driver is being removed, add the line: +# +# Removing: yes +# +# to the commit, and you can remove all other tags (except UBUNTU:). +# +UBUNTU: + +ExternalDriver: +Description: +Url: +Mask: +Version: --- linux-5.8.0.orig/debian/commit-templates/missing-modules +++ linux-5.8.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-5.8.0.orig/debian/commit-templates/newrelease +++ linux-5.8.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-5.8.0.orig/debian/commit-templates/sauce-patch +++ linux-5.8.0/debian/commit-templates/sauce-patch @@ -0,0 +1,40 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# +# SAUCE refers to the fact that this patch might not go upstream, but we need to +# carry it to successive releases. In most cases you DONOT want to use this +# template. +# +# An example of a SAUCE patch is the ACPI DSDT-in-initramfs patch which has been +# refused upstream, but still provides useful functionality to users with broken +# BIOSes. +# +#------------------------------------------------------------------------- +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: SAUCE: + + + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-5.8.0.orig/debian/commit-templates/upstream-patch +++ linux-5.8.0/debian/commit-templates/upstream-patch @@ -0,0 +1,27 @@ +# Ubuntu commit template. +# +# NOTE: This gets reformatted for debian/changelog +# +# The initial UBUNTU is a flag that this is an Ubuntu commit. It will be +# referenced to the Author in the debian/changelog entry. +# +# The text following is the short message that will be placed in the +# changelog. Extra text on the following lines will be ignored, but left +# in the git commit. Lines with # will be ignored in the commit. +# +# OriginalAuthor allows for alternate attribution. +# +# OriginalLocation allows for a URL or description of where the patch came +# from. +# +# BugLink is a URL to a Malone bug. +# +# Ignore: yes will keep this commit from showing up in the changelog. +# +UBUNTU: [Upstream] + +# OriginalAuthor: +# OriginalLocation: +# BugLink: http://bugs.launchpad.net/bugs/ +# Ignore: yes +# Other text below here. --- linux-5.8.0.orig/debian/control +++ linux-5.8.0/debian/control @@ -0,0 +1,756 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper-compat (= 10), + dh-systemd, + cpio, + kernel-wedge, + kmod , + makedumpfile [amd64] , + libcap-dev , + libelf-dev , + libnewt-dev , + libiberty-dev , + default-jdk-headless , + java-common , + rsync , + libdw-dev , + libpci-dev , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf ppc64el] , + liblzma-dev , + openssl , + libssl-dev , + libaudit-dev , + bc , + gawk , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , + libnuma-dev [amd64 arm64 ppc64el s390x] , + dkms , + curl , + lz4 [amd64 s390x] , + dwarves [amd64 arm64 armhf ppc64el s390x] , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + fig2dev , + bzip2 , + sharutils , + asciidoc , + python3-sphinx , + python3-sphinx-rtd-theme , + fontconfig , + python3-docutils , + imagemagick , + graphviz , + dvipng , + fonts-noto-cjk , + latexmk , + librsvg2-bin , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/groovy +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-source-5.8.0 +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: linux-source +Depends: ${misc:Depends}, binutils, bzip2, coreutils +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 5.8.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 5.8.0. + . + This package is mainly meant for other packages to use, in order to build + custom flavours. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-headers-5.8.0-55 +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils +Description: Header files related to Linux kernel version 5.8.0 + This package provides kernel header files for version 5.8.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-5.8.0-55/debian.README.gz for details + +Package: linux-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends}, lsb-release +Description: Linux kernel version specific tools for version 5.8.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0. + +Package: linux-tools-5.8.0-55 +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0-55 on + 64 bit x86. + You probably want to install linux-tools-5.8.0-55-. + +Package: linux-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Description: Linux kernel version specific cloud tools for version 5.8.0 + This package provides the architecture independent parts for kernel + version locked tools for cloud tools for version 5.8.0. + +Package: linux-cloud-tools-5.8.0-55 +Build-Profiles: +Architecture: amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common +Description: Linux kernel version specific cloud tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools for cloud tools for version 5.8.0-55 on + 64 bit x86. + You probably want to install linux-cloud-tools-5.8.0-55-. + +Package: linux-tools-host +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends}, python3 +Description: Linux kernel VM host tools + This package provides kernel tools useful for VM hosts. + + +Package: linux-libc-dev +Architecture: amd64 armhf arm64 i386 ppc64el riscv64 s390x +Depends: ${misc:Depends} +Conflicts: linux-kernel-headers +Replaces: linux-kernel-headers +Provides: linux-kernel-headers, aufs-dev +Multi-Arch: same +Description: Linux Kernel Headers for development + This package provides headers from the Linux kernel. These headers + are used by the installed headers for GNU glibc and other system + libraries. They are NOT meant to be used to build third-party modules for + your kernel. Use linux-headers-* packages for that. + +Package: linux-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Description: Linux kernel specific documentation for version 5.8.0 + This package provides the various documents in the 5.8.0 kernel + Documentation/ subdirectory. These document kernel subsystems, APIs, device + drivers, and so on. See + /usr/share/doc/linux-doc/00-INDEX for a list of what is + contained in each file. + + +Package: linux-image-unsigned-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, aufs-dkms, kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64], ${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.8.0-55-generic +Recommends: grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | lilo [amd64] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el], initramfs-tools | linux-initramfs-tool +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image-5.8.0-55-generic +Suggests: fdutils, linux-doc | linux-source-5.8.0, linux-tools, linux-headers-5.8.0-55-generic +Description: Linux kernel image for version 5.8.0 on 64 bit x86 SMP + This package contains the unsigned Linux kernel image for version 5.8.0 on + 64 bit x86 SMP. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-5.8.0-55-generic | linux-image-unsigned-5.8.0-55-generic, crda | wireless-crda +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 5.8.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-5.8.0-55, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 5.8.0 on 64 bit x86 SMP + This package provides kernel header files for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-5.8.0-55/debian.README.gz for details. + +Package: linux-image-unsigned-5.8.0-55-generic-dbgsym +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 5.8.0 on 64 bit x86 SMP + This package provides the unsigned kernel debug image for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-5.8.0-55 +Description: Linux kernel version specific tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0-55 on + 64 bit x86. + +Package: linux-cloud-tools-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-5.8.0-55 +Description: Linux kernel version specific cloud tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 5.8.0-55 on + 64 bit x86. + +Package: linux-udebs-generic +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: amd64 armhf arm64 ppc64el s390x +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-buildinfo-5.8.0-55-generic +Build-Profiles: +Architecture: amd64 armhf arm64 ppc64el s390x +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel buildinfo for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel buildinfo for version 5.8.0 on + 64 bit x86 SMP. + . + You likely do not want to install this package. + +Package: linux-image-unsigned-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, aufs-dkms, kvm-api-4, redhat-cluster-modules, ivtv-modules, ${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.8.0-55-generic-64k +Recommends: flash-kernel [arm64], initramfs-tools | linux-initramfs-tool +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image-5.8.0-55-generic-64k +Suggests: fdutils, linux-doc | linux-source-5.8.0, linux-tools, linux-headers-5.8.0-55-generic-64k +Description: Linux kernel image for version 5.8.0 on 64 bit x86 SMP + This package contains the unsigned Linux kernel image for version 5.8.0 on + 64 bit x86 SMP. + . + Supports Generic 64K pages processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-64k meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic 64K pages processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-64k meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-5.8.0-55-generic-64k | linux-image-unsigned-5.8.0-55-generic-64k, crda | wireless-crda +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 5.8.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic 64K pages processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-64k meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-5.8.0-55, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 5.8.0 on 64 bit x86 SMP + This package provides kernel header files for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-5.8.0-55/debian.README.gz for details. + +Package: linux-image-unsigned-5.8.0-55-generic-64k-dbgsym +Build-Profiles: +Architecture: arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 5.8.0 on 64 bit x86 SMP + This package provides the unsigned kernel debug image for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-5.8.0-55 +Description: Linux kernel version specific tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0-55 on + 64 bit x86. + +Package: linux-cloud-tools-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-5.8.0-55 +Description: Linux kernel version specific cloud tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 5.8.0-55 on + 64 bit x86. + +Package: linux-udebs-generic-64k +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: arm64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-buildinfo-5.8.0-55-generic-64k +Build-Profiles: +Architecture: arm64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel buildinfo for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel buildinfo for version 5.8.0 on + 64 bit x86 SMP. + . + You likely do not want to install this package. + +Package: linux-image-unsigned-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, aufs-dkms, kvm-api-4, redhat-cluster-modules, ivtv-modules, ${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.8.0-55-generic-lpae +Recommends: flash-kernel [armhf], initramfs-tools | linux-initramfs-tool +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image-5.8.0-55-generic-lpae +Suggests: fdutils, linux-doc | linux-source-5.8.0, linux-tools, linux-headers-5.8.0-55-generic-lpae +Description: Linux kernel image for version 5.8.0 on 64 bit x86 SMP + This package contains the unsigned Linux kernel image for version 5.8.0 on + 64 bit x86 SMP. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-5.8.0-55-generic-lpae | linux-image-unsigned-5.8.0-55-generic-lpae, crda | wireless-crda +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 5.8.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Generic LPAE processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-generic-lpae meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-5.8.0-55, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 5.8.0 on 64 bit x86 SMP + This package provides kernel header files for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-5.8.0-55/debian.README.gz for details. + +Package: linux-image-unsigned-5.8.0-55-generic-lpae-dbgsym +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 5.8.0 on 64 bit x86 SMP + This package provides the unsigned kernel debug image for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-5.8.0-55 +Description: Linux kernel version specific tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0-55 on + 64 bit x86. + +Package: linux-cloud-tools-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-5.8.0-55 +Description: Linux kernel version specific cloud tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 5.8.0-55 on + 64 bit x86. + +Package: linux-udebs-generic-lpae +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: armhf +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-buildinfo-5.8.0-55-generic-lpae +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel buildinfo for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel buildinfo for version 5.8.0 on + 64 bit x86 SMP. + . + You likely do not want to install this package. + +Package: linux-image-unsigned-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, aufs-dkms, kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64], ${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.8.0-55-lowlatency +Recommends: grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | lilo [amd64] | flash-kernel [armhf arm64], initramfs-tools | linux-initramfs-tool +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image-5.8.0-55-lowlatency +Suggests: fdutils, linux-doc | linux-source-5.8.0, linux-tools, linux-headers-5.8.0-55-lowlatency +Description: Linux kernel image for version 5.8.0 on 64 bit x86 SMP + This package contains the unsigned Linux kernel image for version 5.8.0 on + 64 bit x86 SMP. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-5.8.0-55-lowlatency | linux-image-unsigned-5.8.0-55-lowlatency, crda | wireless-crda +Description: Linux kernel extra modules for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel extra modules for version 5.8.0 on + 64 bit x86 SMP. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports Lowlatency processors. + . + Geared toward desktop and server systems. + . + You likely do not want to install this package directly. Instead, install + the linux-lowlatency meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-5.8.0-55, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 5.8.0 on 64 bit x86 SMP + This package provides kernel header files for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-5.8.0-55/debian.README.gz for details. + +Package: linux-image-unsigned-5.8.0-55-lowlatency-dbgsym +Build-Profiles: +Architecture: amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 5.8.0 on 64 bit x86 SMP + This package provides the unsigned kernel debug image for version 5.8.0 on + 64 bit x86 SMP. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-tools-5.8.0-55 +Description: Linux kernel version specific tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 5.8.0-55 on + 64 bit x86. + +Package: linux-cloud-tools-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-cloud-tools-5.8.0-55 +Description: Linux kernel version specific cloud tools for version 5.8.0-55 + This package provides the architecture dependant parts for kernel + version locked tools for cloud for version 5.8.0-55 on + 64 bit x86. + +Package: linux-udebs-lowlatency +Build-Profiles: +XC-Package-Type: udeb +Section: debian-installer +Architecture: amd64 +Depends: ${udeb:Depends} +Description: Metapackage depending on kernel udebs + This package depends on the all udebs that the kernel build generated, + for easier version and migration tracking. + + +Package: linux-buildinfo-5.8.0-55-lowlatency +Build-Profiles: +Architecture: amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel buildinfo for version 5.8.0 on 64 bit x86 SMP + This package contains the Linux kernel buildinfo for version 5.8.0 on + 64 bit x86 SMP. + . + You likely do not want to install this package. --- linux-5.8.0.orig/debian/control.d/flavour-buildinfo.stub +++ linux-5.8.0/debian/control.d/flavour-buildinfo.stub @@ -0,0 +1,13 @@ + +Package: linux-buildinfo-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends} +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel buildinfo for version PKGVER on DESC + This package contains the Linux kernel buildinfo for version PKGVER on + DESC. + . + You likely do not want to install this package. --- linux-5.8.0.orig/debian/copyright +++ linux-5.8.0/debian/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + 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. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. --- linux-5.8.0.orig/debian/debian.env +++ linux-5.8.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.master --- linux-5.8.0.orig/debian/dkms-versions +++ linux-5.8.0/debian/dkms-versions @@ -0,0 +1,7 @@ +zfs-linux 0.8.4-1ubuntu11.2 +nvidia-graphics-drivers-390 390.143-0ubuntu0.20.10.1 +nvidia-graphics-drivers-460 460.73.01-0ubuntu0.20.10.2 transition=nvidia-graphics-drivers-455 transition=nvidia-graphics-drivers-435 transition=nvidia-graphics-drivers-450 +nvidia-graphics-drivers-465 465.27-0ubuntu0.20.10.1 +nvidia-graphics-drivers-418-server 418.197.02-0ubuntu0.20.10.1 +nvidia-graphics-drivers-450-server 450.119.04-0ubuntu0.20.10.1 transition=nvidia-graphics-drivers-440-server +nvidia-graphics-drivers-460-server 460.73.01-0ubuntu0.20.10.1 --- linux-5.8.0.orig/debian/docs/README.inclusion-list +++ linux-5.8.0/debian/docs/README.inclusion-list @@ -0,0 +1,51 @@ +This README describes the reason for, and the use of, module +inclusion lists. + +The original Hardy release had the notion of sub-flavours, +e.g., a flavour that was constructed as a subset of an existing flavour. +For example, the virtual flavour was extracted from the server flavour using +a subset of the server flavour modules. However, there were some difficult +mainteneance issues with regard to packaging, make rules, and scripts. This +re-implementation of the sub-flavours philosophy is hopefully simpler, +and retrofitable to all releases. + +A module inclusion list looks at the problem of of constructing a package +from the perspective of what modules do we _want_ in the package, as opposed +to what modules we _don't_ want. As the kernel matures, more and more devices are added +which makes the problem of configuration maintenance a real pain in the ass. +If we took the approach of disabling all of the config options that we don't want, +then the differences between flavours will quickly become quite large, making +it difficult to quickly compare the individual flavour configs. Each time a +new config option is added then we also have to make a decision about disabling in +order to continue to keep the minimal number of modules. + +A module inclusion list is applied on a per-flavour basis. For example, +debian./control.d/${flavour}.inclusion-list. For example, the +config for virtual is very close to server and generic, but the inclusion list +causes the virtual package to be constructed with _only_ the modules described +in the inclusion list. + +The inclusion list format is a simple bash regular expression list of files. For example, + +arch/*/{crypto,kernel,oprofile} +drivers/acpi/* +drivers/ata/ahci.ko + +These 3 regular expression forms are suitable for expansion by bash and as inputs to 'find'. +See debian/scripts/module-inclusion for details. + +There are 2 log files created as a side effect of the application of the module +inclusion list; $(flavour).inclusion-list.log and $(flavour).depmod.log. + +$(flavour).inclusion-list.log : This log is created while the inclusion list +modules are being copied. If any are missing, then those warnings go in this log. +While its not considered a fatal error, you should endevour to correct your inclusion +list such that there are no missing modules. + +$(flavour).depmod.log : The log is created as a result of running depmod on the +resulting set of modules. If there are missing symbols then you'll find that information +here. Again, you should modify your inclusion list such that there are no missing +symbols. + +Tim Gardner +June 2, 2010 --- linux-5.8.0.orig/debian/gbp.conf +++ linux-5.8.0/debian/gbp.conf @@ -0,0 +1,2 @@ +[buildpackage] +debian-tag = Ubuntu-%(version)s --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.service +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.service @@ -0,0 +1,14 @@ +# On Azure/Hyper-V systems start the hv_fcopy_daemon +# +# author "Andy Whitcroft " +[Unit] +Description=Hyper-V File Copy Protocol Daemon +ConditionVirtualization=microsoft +ConditionPathExists=/dev/vmbus/hv_fcopy +BindsTo=sys-devices-virtual-misc-vmbus\x21hv_fcopy.device + +[Service] +ExecStart=/usr/sbin/hv_fcopy_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.udev +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.udev @@ -0,0 +1 @@ +SUBSYSTEM=="misc", KERNEL=="vmbus/hv_fcopy", TAG+="systemd", ENV{SYSTEMD_WANTS}+="hv-fcopy-daemon.service" --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_fcopy_daemon +# +description "Hyper-V File Copy Protocol Daemon" +author "Andy Whitcroft " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_FCOPY_DAEMON" -eq 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company " +[Unit] +Description=Hyper-V KVP Protocol Daemon +ConditionVirtualization=microsoft +DefaultDependencies=no +BindsTo=sys-devices-virtual-misc-vmbus\x21hv_kvp.device +After=sys-devices-virtual-misc-vmbus\x21hv_kvp.device systemd-remount-fs.service +Before=shutdown.target cloud-init-local.service walinuxagent.service +Conflicts=shutdown.target +RequiresMountsFor=/var/lib/hyperv + +[Service] +ExecStart=/usr/sbin/hv_kvp_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-kvp-daemon.udev +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-kvp-daemon.udev @@ -0,0 +1 @@ +SUBSYSTEM=="misc", KERNEL=="vmbus/hv_kvp", TAG+="systemd", ENV{SYSTEMD_WANTS}+="hv-kvp-daemon.service" --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-kvp-daemon.upstart +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-kvp-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_kvp_daemon +# +description "Hyper-V KVP Protocol Daemon" +author "Adam Conrad " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_KVP_DAEMON" = 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company " +[Unit] +Description=Hyper-V VSS Protocol Daemon +ConditionVirtualization=microsoft +ConditionPathExists=/dev/vmbus/hv_vss +BindsTo=sys-devices-virtual-misc-vmbus\x21hv_vss.device + +[Service] +ExecStart=/usr/sbin/hv_vss_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-vss-daemon.udev +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-vss-daemon.udev @@ -0,0 +1 @@ +SUBSYSTEM=="misc", KERNEL=="vmbus/hv_vss", TAG+="systemd", ENV{SYSTEMD_WANTS}+="hv-vss-daemon.service" --- linux-5.8.0.orig/debian/linux-cloud-tools-common.hv-vss-daemon.upstart +++ linux-5.8.0/debian/linux-cloud-tools-common.hv-vss-daemon.upstart @@ -0,0 +1,22 @@ +# On Azure/Hyper-V systems start the hv_vss_daemon +# +description "Hyper-V VSS Protocol Daemon" +author "Ben Howard " + +start on runlevel [2345] +stop on runlevel [!2345] +console log + +pre-start script + if [ -e "/etc/default/hv-kvp-daemon-init" ]; then + . /etc/default/hv-kvp-daemon-init + fi + [ "$RUN_VSS_DAEMON" -eq 0 ] && { stop; exit 0; } + if [ -d /sys/class/dmi/id/. ]; then + read company +# + +DEBIAN=$(shell awk -F= '($$1 == "DEBIAN") { print $$2 }' /dev/null || echo $$m >> $(prev_abidir)/../modules.ignore; done) +endif + +ifeq ($(do_dkms_wireguard),false) + do_wireguard_disable:=$(shell for m in $$(cat $(DROOT)/wireguard-modules.ignore); do grep -qxF $$m $(prev_abidir)/../modules.ignore 2>/dev/null || echo $$m >> $(prev_abidir)/../modules.ignore; done) +endif + +# Either tools package needs the common source preparation +do_any_tools=$(sort $(filter-out false,$(do_linux_tools) $(do_cloud_tools))) + +# Versions of dkms packages. +dkms_zfs_linux_version=$(shell gawk '/^zfs-linux / { print $$2; }' debian/dkms-versions) + +# NVIDIA DKMS package gross series split into desktop and server. +nvidia_desktop_series=$(shell sed -n -e 's/^nvidia-graphics-drivers-\([0-9][0-9]*\) .*/\1/p' debian/dkms-versions) +nvidia_server_series=$(shell sed -n -e 's/^nvidia-graphics-drivers-\([0-9][0-9]*-server\) .*/\1/p' debian/dkms-versions) + +# Debian Build System targets +binary: binary-indep binary-arch + +build: build-arch build-indep + +clean: debian/control debian/canonical-certs.pem + dh_testdir + dh_testroot + dh_clean + + # d-i stuff + rm -rf $(DEBIAN)/d-i-$(arch) + # Generated on the fly. + rm -f $(DEBIAN)/d-i/firmware/$(arch)/kernel-image + + # normal build junk + rm -rf $(DEBIAN)/abi/$(release)-$(revision) + rm -rf $(builddir) + rm -f $(stampdir)/stamp-* + rm -rf $(DEBIAN)/linux-* + + # This gets rid of the d-i packages in control + cp -f $(DEBIAN)/control.stub $(DROOT)/control + cp $(DEBIAN)/changelog debian/changelog + + # Install the copyright information. + cp $(DEBIAN)/copyright debian/copyright + + # Install the retpoline extractor. + cp $(DROOT)/scripts/retpoline-extract-one scripts/ubuntu-retpoline-extract-one + + # If we have a reconstruct script use it. + [ -f $(DEBIAN)/reconstruct ] && bash $(DEBIAN)/reconstruct || true + + # Remove generated intermediate files + rm -f $(DROOT)/control.stub $(DEBIAN)/control.stub + rm -f $(DROOT)/scripts/fix-filenames + +distclean: clean + rm -rf $(DROOT)/control debian/changelog \ + debian/control debian/control.stub debian/copyright \ + scripts/ubuntu-retpoline-extract-one + +# Builds the image, arch headers and debug packages +include $(DROOT)/rules.d/2-binary-arch.mk + +# Rules for building the udebs ($(DEBIAN)-installer) +include $(DROOT)/rules.d/5-udebs.mk + +# Builds the source, doc and linux-headers indep packages +include $(DROOT)/rules.d/3-binary-indep.mk + +# Various checks to be performed on builds +include $(DROOT)/rules.d/4-checks.mk + +control_files := $(DEBIAN)/control.stub.in +ifeq ($(do_libc_dev_package),true) +ifneq (,$(wildcard $(DEBIAN)/control.d/linux-libc-dev.stub)) + control_files += $(DEBIAN)/control.d/linux-libc-dev.stub +endif +endif +ifeq ($(do_doc_package),true) +ifneq (,$(wildcard $(DEBIAN)/control.d/linux-doc.stub)) + control_files += $(DEBIAN)/control.d/linux-doc.stub +endif +endif + +# Misc stuff +.PHONY: $(DEBIAN)/control.stub +$(DEBIAN)/control.stub: \ + $(DROOT)/scripts/control-create \ + $(control_files) \ + $(DEBIAN)/changelog \ + $(wildcard $(DEBIAN)/control.d/* $(DEBIAN)/sub-flavours/*.vars) + for i in $(control_files); do \ + cat $$i; \ + echo ""; \ + done | sed -e 's/PKGVER/$(release)/g' \ + -e 's/ABINUM/$(abinum)/g' \ + -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ + -e 's/=SERIES=/$(series)/g' \ + > $(DEBIAN)/control.stub; + flavours="$(sort $(wildcard $(DEBIAN)/control.d/vars.* $(DEBIAN)/sub-flavours/*.vars))";\ + for i in $$flavours; do \ + $(SHELL) $(DROOT)/scripts/control-create $$i "$(any_signed)" | \ + sed -e 's/PKGVER/$(release)/g' \ + -e 's/ABINUM/$(abinum)/g' \ + -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ + -e 's/=SERIES=/$(series)/g' \ + >> $(DEBIAN)/control.stub; \ + done + +.PHONY: debian/control +debian/control: $(DEBIAN)/control.stub + echo "# placebo control.stub for kernel-wedge flow change" >debian/control.stub + cp $(DEBIAN)/control.stub debian/control + export KW_DEFCONFIG_DIR=$(DEBIAN)/d-i && \ + export KW_CONFIG_DIR=$(DEBIAN)/d-i && \ + LANG=C kernel-wedge gen-control $(release)-$(abinum) | \ + perl -f $(DROOT)/scripts/misc/kernel-wedge-arch.pl $(arch) \ + >>$(CURDIR)/debian/control + +debian/canonical-certs.pem: $(wildcard $(DROOT)/certs/*-all.pem) $(wildcard $(DROOT)/certs/*-$(arch).pem) $(wildcard $(DEBIAN)/certs/*-all.pem) $(wildcard $(DEBIAN)/certs/*-$(arch).pem) + for cert in $(sort $(notdir $^)); \ + do \ + for dir in $(DEBIAN) $(DROOT); \ + do \ + if [ -f "$$dir/certs/$$cert" ]; then \ + cat "$$dir/certs/$$cert"; \ + break; \ + fi; \ + done; \ + done >"$@" --- linux-5.8.0.orig/debian/rules.d/0-common-vars.mk +++ linux-5.8.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,278 @@ +# Used when you need to 'escape' a comma. +comma = , + +# +# The source package name will be the first token from $(DEBIAN)/changelog +# +src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog) + +# Get the series +series=$(shell dpkg-parsechangelog -l$(DEBIAN)/changelog | sed -ne 's/^Distribution: *//p' | sed -e 's/-\(security\|updates\|proposed\)$$//') + +# Get some version info +release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog) +revisions := $(shell sed -n 's/^$(src_pkg_name)\ .*($(release)-\(.*\)).*$$/\1/p' $(DEBIAN)/changelog | tac) +revision ?= $(word $(words $(revisions)),$(revisions)) +prev_revisions := $(filter-out $(revision),0.0 $(revisions)) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) + +prev_fullver ?= $(shell dpkg-parsechangelog -l$(DEBIAN)/changelog -o1 -c1 | sed -ne 's/^Version: *//p') + +# Get variants. Assume primary if debian/variants is not present. +variants = -- +ifneq (,$(wildcard $(DEBIAN)/variants)) + variants := $(shell cat $(DEBIAN)/variants) +endif + +# Get upstream version info +upstream_version := $(shell sed -n 's/^VERSION = \(.*\)$$/\1/p' Makefile) +upstream_patchlevel := $(shell sed -n 's/^PATCHLEVEL = \(.*\)$$/\1/p' Makefile) +upstream_tag := "v$(upstream_version).$(upstream_patchlevel)" + +family=ubuntu + +# This is an internally used mechanism for the daily kernel builds. It +# creates packages whose ABI is suffixed with a minimal representation of +# the current git HEAD sha. If .git/HEAD is not present, then it uses the +# uuidgen program, +# +# AUTOBUILD can also be used by anyone wanting to build a custom kernel +# image, or rebuild the entire set of Ubuntu packages using custom patches +# or configs. +AUTOBUILD= + +ifneq ($(AUTOBUILD),) +skipabi = true +skipmodule = true +skipretpoline = true +skipdbg = true +gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else uuidgen; fi) +gitverpre=$(shell echo $(gitver) | cut -b -3) +gitverpost=$(shell echo $(gitver) | cut -b 38-40) +abi_suffix = -$(gitverpre)$(gitverpost) +endif + +ifneq ($(NOKERNLOG),) +ubuntu_log_opts += --no-kern-log +endif +ifneq ($(PRINTSHAS),) +ubuntu_log_opts += --print-shas +endif + +# Get the kernels own extra version to be added to the release signature. +raw_kernelversion=$(shell make kernelversion) + +# +# full_build -- are we doing a full buildd style build +# +ifeq ($(wildcard /CurrentlyBuilding),) +full_build?=false +else +full_build?=true +endif + +# +# The debug packages are ginormous, so you probably want to skip +# building them (as a developer). +# +ifeq ($(full_build),false) +skipdbg=true +endif + +abinum := $(shell echo $(revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix) +prev_abinum := $(shell echo $(prev_revision) | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$$/\1/')$(abi_suffix) +abi_release := $(release)-$(abinum) + +uploadnum := $(shell echo $(revision) | sed -r -e 's/[^\+~]*\.([^\.~]+(~.*)?(\+.*)?$$)/\1/') +ifneq ($(full_build),false) + uploadnum := $(uploadnum)-Ubuntu +endif + +# XXX: linux-libc-dev got bumped to -803.N inadvertantly by a ti-omap4 upload +# shift our version higher for this package only. Ensure this only +# occurs for the v2.6.35 kernel so that we do not propogate this into +# any other series. +raw_uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//') +libc_dev_version := +ifeq ($(DEBIAN),debian.master) +ifeq ($(release),2.6.35) +libc_dev_version := -v$(release)-$(shell expr "$(abinum)" + 1000).$(raw_uploadnum) +endif +endif + +DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH) + +# +# Detect invocations of the form 'fakeroot debian/rules binary arch=armhf' +# within an x86'en schroot. This only gets you part of the way since the +# packaging phase fails, but you can at least compile the kernel quickly. +# +arch := $(DEB_HOST_ARCH) +ifneq ($(arch),$(DEB_HOST_ARCH)) + CROSS_COMPILE ?= $(shell dpkg-architecture -a$(arch) -qDEB_HOST_GNU_TYPE -f 2>/dev/null)- +endif + +# +# Detect invocations of the form 'dpkg-buildpackage -B -aarmhf' within +# an x86'en schroot. This is the only way to build all of the packages +# (except for tools). +# +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)- +endif + +abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(revision)/$(arch) +prev_abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(prev_revision)/$(arch) +commonconfdir := $(CURDIR)/$(DEBIAN)/config +archconfdir := $(CURDIR)/$(DEBIAN)/config/$(arch) +sharedconfdir := $(CURDIR)/debian.master/config +builddir := $(CURDIR)/debian/build +stampdir := $(CURDIR)/debian/stamps + +# +# The binary package name always starts with linux-image-$KVER-$ABI.$UPLOAD_NUM. There +# are places that you'll find linux-image hard coded, but I guess thats OK since the +# assumption that the binary package always starts with linux-image will never change. +# +bin_pkg_name_signed=linux-image-$(abi_release) +bin_pkg_name_unsigned=linux-image-unsigned-$(abi_release) +mods_pkg_name=linux-modules-$(abi_release) +mods_extra_pkg_name=linux-modules-extra-$(abi_release) +bldinfo_pkg_name=linux-buildinfo-$(abi_release) +hdrs_pkg_name=linux-headers-$(abi_release) +indep_hdrs_pkg_name=$(src_pkg_name)-headers-$(abi_release) + +# +# The generation of content in the doc package depends on both 'AUTOBUILD=' and +# 'do_doc_package_content=true'. There are usually build errors during the development +# cycle, so its OK to leave 'do_doc_package_content=false' until those build +# failures get sorted out. Finally, the doc package doesn't really need to be built +# for developer testing (its kind of slow), so only do it if on a buildd. +ifneq ($(filter --,$(variants)),) +do_doc_package=true +else +do_doc_package=false +endif +do_doc_package_content=true +ifeq ($(full_build),false) +do_doc_package_content=false +endif +doc_pkg_name=$(src_pkg_name)-doc + +# +# Similarly with the linux-source package, you need not build it as a developer. Its +# somewhat I/O intensive and utterly useless. +# +do_source_package=true +do_source_package_content=true +ifeq ($(full_build),false) +do_source_package_content=false +endif + +# linux-libc-dev may not be needed, default to building it only for the +# primary variant +ifneq ($(filter --,$(variants)),) +do_libc_dev_package=true +else +do_libc_dev_package=false +endif + +# common headers normally is built as an indep package, but may be arch +do_common_headers_indep=true + +# add a 'full source' mode +do_full_source=false + +# build tools +ifneq ($(wildcard $(CURDIR)/tools),) + ifeq ($(do_tools),) + ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + do_tools=false + endif + endif + do_tools?=true +else + do_tools?=false +endif +tools_pkg_name=$(src_pkg_name)-tools-$(abi_release) +tools_common_pkg_name=$(src_pkg_name)-tools-common +tools_flavour_pkg_name=linux-tools-$(abi_release) +cloud_pkg_name=$(src_pkg_name)-cloud-tools-$(abi_release) +cloud_common_pkg_name=$(src_pkg_name)-cloud-tools-common +cloud_flavour_pkg_name=linux-cloud-tools-$(abi_release) +hosttools_pkg_name=$(src_pkg_name)-tools-host + +# The general flavour specific image package. +do_flavour_image_package=true + +# The general flavour specific header package. +do_flavour_header_package=true + +# DTBs +do_dtbs=false + +# Support parallel= in DEB_BUILD_OPTIONS (see #209008) +# +# These 2 environment variables set the -j value of the kernel build. For example, +# CONCURRENCY_LEVEL=16 fakeroot $(DEBIAN)/rules binary-debs +# or +# DEB_BUILD_OPTIONS=parallel=16 fakeroot $(DEBIAN)/rules binary-debs +# +# The default is to use the number of CPUs. +# +COMMA=, +DEB_BUILD_OPTIONS_PARA = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +ifneq (,$(DEB_BUILD_OPTIONS_PARA)) + CONCURRENCY_LEVEL := $(DEB_BUILD_OPTIONS_PARA) +endif + +ifeq ($(CONCURRENCY_LEVEL),) + # Check the environment + CONCURRENCY_LEVEL := $(shell echo $$CONCURRENCY_LEVEL) + # No? Then build with the number of CPUs on the host. + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := $(shell expr `getconf _NPROCESSORS_ONLN` \* 1) + endif + # Oh hell, give 'em one + ifeq ($(CONCURRENCY_LEVEL),) + CONCURRENCY_LEVEL := 1 + endif +endif + +conc_level = -j$(CONCURRENCY_LEVEL) + +PYTHON ?= $(firstword $(wildcard /usr/bin/python3) $(wildcard /usr/bin/python2) $(wildcard /usr/bin/python)) + +# target_flavour is filled in for each step +kmake = make ARCH=$(build_arch) \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + KERNELVERSION=$(abi_release)-$(target_flavour) \ + CONFIG_DEBUG_SECTION_MISMATCH=y \ + KBUILD_BUILD_VERSION="$(uploadnum)" \ + LOCALVERSION= localver-extra= \ + CFLAGS_MODULE="-DPKG_ABI=$(abinum)" \ + PYTHON=$(PYTHON) +ifneq ($(LOCAL_ENV_CC),) +kmake += CC="$(LOCAL_ENV_CC)" DISTCC_HOSTS="$(LOCAL_ENV_DISTCC_HOSTS)" +endif + +# Locking is required in parallel builds to prevent loss of contents +# of the debian/files. +lockme_file = $(CURDIR)/debian/.LOCK +lockme_cmd = flock -w 60 +lockme = $(lockme_cmd) $(lockme_file) + +# Don't fail if a link already exists. +LN = ln -sf + +# Checks if a var is overriden by the custom rules. Called with var and +# flavour as arguments. +custom_override = \ + $(shell if [ -n "$($(1)_$(2))" ]; then echo "$($(1)_$(2))"; else echo "$($(1))"; fi) + +# selftests that Ubuntu cares about +ubuntu_selftests = breakpoints cpu-hotplug efivarfs memfd memory-hotplug mount net ptrace seccomp timers powerpc user ftrace --- linux-5.8.0.orig/debian/rules.d/1-maintainer.mk +++ linux-5.8.0/debian/rules.d/1-maintainer.mk @@ -0,0 +1,175 @@ +# The following targets are for the maintainer only! do not run if you don't +# know what they do. + +.PHONY: printenv updateconfigs printchanges insertchanges startnewrelease diffupstream help updateportsconfigs editportsconfigs autoreconstruct finalchecks + +help: + @echo "These are the targets in addition to the normal $(DEBIAN) ones:" + @echo + @echo " printenv : Print some variables used in the build" + @echo + @echo " updateconfigs : Update core arch configs" + @echo + @echo " editconfigs : Update core arch configs interractively" + @echo " genconfigs : Generate core arch configs in CONFIGS/*" + @echo + @echo " updateportsconfigs : Update ports arch configs" + @echo + @echo " editportsconfigs : Update ports arch configs interactivly" + @echo " genportconfigs : Generate ports arch configs in CONFIGS/*" + @echo + @echo " printchanges : Print the current changelog entries (from git)" + @echo + @echo " insertchanges : Insert current changelog entries (from git)" + @echo + @echo " startnewrelease : Start a new changelog set" + @echo + @echo " diffupstream : Diff stock kernel code against upstream (git)" + @echo + @echo " compileselftests : Only compile the selftests listed on ubuntu_selftests variable" + @echo + @echo " runselftests : Run the selftests listed on ubuntu_selftests variable" + @echo + @echo " help : If you are kernel hacking, you need the professional" + @echo " version of this" + @echo + @echo "Environment variables:" + @echo + @echo " NOKERNLOG : Do not add upstream kernel commits to changelog" + @echo " CONCURRENCY_LEVEL=X" + @echo " : Use -jX for kernel compile" + @echo " PRINTSHAS : Include SHAs for commits in changelog" + +printdebian: + @echo "$(DEBIAN)" + +updateconfigs defaultconfigs editconfigs genconfigs dumpconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ "$(do_enforce_all)" + rm -rf build + +updateportsconfigs defaultportsconfigs editportsconfigs genportsconfigs askconfigs: + dh_testdir; + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ ports + rm -rf build + +printenv: + dh_testdir + @echo "src package name = $(src_pkg_name)" + @echo "series = $(series)" + @echo "release = $(release)" + @echo "revisions = $(revisions)" + @echo "revision = $(revision)" + @echo "uploadnum = $(uploadnum)" + @echo "prev_revisions = $(prev_revisions)" + @echo "prev_revision = $(prev_revision)" + @echo "abinum = $(abinum)" + @echo "upstream_tag = $(upstream_tag)" + @echo "gitver = $(gitver)" + @echo "variants = $(variants)" + @echo "flavours = $(flavours)" + @echo "skipabi = $(skipabi)" + @echo "skipmodule = $(skipmodule)" + @echo "skipdbg = $(skipdbg)" + @echo "ubuntu_log_opts = $(ubuntu_log_opts)" + @echo "CONCURRENCY_LEVEL = $(CONCURRENCY_LEVEL)" + @echo "ubuntu_selftests = $(ubuntu_selftests)" + @echo "bin package name = $(bin_pkg_name)" + @echo "hdr package name = $(hdrs_pkg_name)" + @echo "doc package name = $(doc_pkg_name)" + @echo "do_doc_package = $(do_doc_package)" + @echo "do_doc_package_content = $(do_doc_package_content)" + @echo "do_source_package = $(do_source_package)" + @echo "do_source_package_content = $(do_source_package_content)" + @echo "do_libc_dev_package = $(do_libc_dev_package)" + @echo "do_flavour_image_package = $(do_flavour_image_package)" + @echo "do_flavour_header_package = $(do_flavour_header_package)" + @echo "do_common_headers_indep = $(do_common_headers_indep)" + @echo "do_full_source = $(do_full_source)" + @echo "do_tools = $(do_tools)" + @echo "do_any_tools = $(do_any_tools)" + @echo "do_linux_tools = $(do_linux_tools)" + @echo " do_tools_cpupower = $(do_tools_cpupower)" + @echo " do_tools_perf = $(do_tools_perf)" + @echo " do_tools_bpftool = $(do_tools_bpftool)" + @echo " do_tools_x86 = $(do_tools_x86)" + @echo " do_tools_host = $(do_tools_host)" + @echo "do_cloud_tools = $(do_cloud_tools)" + @echo " do_tools_hyperv = $(do_tools_hyperv)" + @echo "any_signed = $(any_signed)" + @echo " uefi_signed = $(uefi_signed)" + @echo " opal_signed = $(opal_signed)" + @echo " sipl_signed = $(sipl_signed)" + @echo "full_build = $(full_build)" + @echo "libc_dev_version = $(libc_dev_version)" + @echo "DEB_HOST_GNU_TYPE = $(DEB_HOST_GNU_TYPE)" + @echo "DEB_BUILD_GNU_TYPE = $(DEB_BUILD_GNU_TYPE)" + @echo "DEB_HOST_ARCH = $(DEB_HOST_ARCH)" + @echo "DEB_BUILD_ARCH = $(DEB_BUILD_ARCH)" + @echo "arch = $(arch)" + @echo "kmake = $(kmake)" + +printchanges: + @baseCommit=$$(git log --pretty=format:'%H %s' | \ + gawk '/UBUNTU: '".*Ubuntu-.*`echo $(prev_fullver) | sed 's/+/\\\\+/'`"'(~.*)?$$/ { print $$1; exit }'); \ + if [ -z "$$baseCommit" ]; then \ + echo "WARNING: couldn't find a commit for the previous version. Using the lastest one." >&2; \ + baseCommit=$$(git log --pretty=format:'%H %s' | \ + gawk '/UBUNTU:\s*Ubuntu-.*$$/ { print $$1; exit }'); \ + fi; \ + git log "$$baseCommit"..HEAD | \ + $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) + +insertchanges: autoreconstruct finalchecks + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + +autoreconstruct: + # No need for reconstruct for -rc kernels since we don't upload an + # orig tarball, so just remove it. + if grep -q "^EXTRAVERSION = -rc[0-9]\+$$" Makefile; then \ + echo "exit 0" >$(DEBIAN)/reconstruct; \ + else \ + $(DROOT)/scripts/misc/gen-auto-reconstruct $(upstream_tag) $(DEBIAN)/reconstruct $(DROOT)/source/options; \ + fi + +finalchecks: debian/control + $(DROOT)/scripts/misc/final-checks "$(DEBIAN)" "$(prev_fullver)" + +diffupstream: + @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') + +startnewrelease: + dh_testdir + @[ -f "$(DEBIAN)/etc/update.conf" ] && . "$(DEBIAN)/etc/update.conf"; \ + if [ -n "$$BACKPORT_SUFFIX" ]; then \ + ver="$$(dpkg-parsechangelog -l"$$DEBIAN_MASTER/changelog" -SVersion)$${BACKPORT_SUFFIX}.1"; \ + prev_ver="$$(dpkg-parsechangelog -l"$(DEBIAN)/changelog" -SVersion)"; \ + if [ "$${ver%.*}" = "$${prev_ver%.*}" ]; then \ + ver="$${ver%.*}.$$(( $${prev_ver##*.} +1 ))"; \ + fi; \ + else \ + ver="$(release)-$$(echo "$(revision)" | \ + perl -ne 'if (/^(\d*)\.(\d*)(.*)?$$/) { printf("%d.%d%s\n", $$1 + 1, $$2 +1, $$3) }')"; \ + fi; \ + now="$(shell date -R)"; \ + echo "Creating new changelog set for $$ver..."; \ + echo -e "$(src_pkg_name) ($$ver) UNRELEASED; urgency=medium\n" > $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Do not edit directly. Autogenerated at release." >> \ + $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the printchanges target to see the curent changes." \ + >> $(DEBIAN)/changelog.new; \ + echo " CHANGELOG: Use the insertchanges target to create the final log." \ + >> $(DEBIAN)/changelog.new; \ + echo -e "\n -- $$DEBFULLNAME <$$DEBEMAIL> $$now\n" >> \ + $(DEBIAN)/changelog.new ; \ + cat $(DEBIAN)/changelog >> $(DEBIAN)/changelog.new; \ + mv $(DEBIAN)/changelog.new $(DEBIAN)/changelog + +compileselftests: + # a loop is needed here to fail on errors + for test in $(ubuntu_selftests); do \ + $(kmake) -C tools/testing/selftests TARGETS="$$test"; \ + done; + +runselftests: + $(kmake) -C tools/testing/selftests TARGETS="$(ubuntu_selftests)" run_tests --- linux-5.8.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-5.8.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,807 @@ +# We don't want make removing intermediary stamps +.SECONDARY : + +# Prepare the out-of-tree build directory +ifeq ($(do_full_source),true) +build_cd = cd $(builddir)/build-$*; # +build_O = +else +build_cd = +build_O = O=$(builddir)/build-$* +endif + +# Typically supplied from the arch makefile, e.g., debian.master/control.d/armhf.mk +ifneq ($(gcc),) +kmake += CC=$(CROSS_COMPILE)$(gcc) +endif + +shlibdeps_opts = $(if $(CROSS_COMPILE),-- -l$(CROSS_COMPILE:%-=/usr/%)/lib) + +debian/scripts/fix-filenames: debian/scripts/fix-filenames.c + $(CC) -o $@ $^ + +$(stampdir)/stamp-prepare-%: config-prepare-check-% + @echo Debug: $@ + @touch $@ +$(stampdir)/stamp-prepare-tree-%: target_flavour = $* +$(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.% debian/scripts/fix-filenames + @echo Debug: $@ + install -d $(builddir)/build-$* + touch $(builddir)/build-$*/ubuntu-build + [ "$(do_full_source)" != 'true' ] && true || \ + rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$* + cat $(wordlist 1,3,$^) | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config + find $(builddir)/build-$* -name "*.ko" | xargs rm -f + $(build_cd) $(kmake) $(build_O) -j1 syncconfig prepare scripts + touch $@ + +# Used by developers as a shortcut to prepare a tree for compilation. +prepare-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ +# Used by developers to allow efficient pre-building without fakeroot. +build-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + +# Do the actual build, including image and modules +$(stampdir)/stamp-build-%: target_flavour = $* +$(stampdir)/stamp-build-%: bldimg = $(call custom_override,build_image,$*) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ build_image $(build_image) bldimg $(bldimg) + $(build_cd) $(kmake) $(build_O) $(conc_level) $(bldimg) modules $(if $(filter true,$(do_dtbs)),dtbs) + + @touch $@ + +define build_dkms_sign = + $(shell set -x; if grep -q CONFIG_MODULE_SIG=y $(1)/.config; then + echo $(1)/scripts/sign-file $(MODHASHALGO) $(MODSECKEY) $(MODPUBKEY); + else + echo "-"; + fi + ) +endef +define build_dkms = + CROSS_COMPILE=$(CROSS_COMPILE) $(SHELL) $(DROOT)/scripts/dkms-build $(dkms_dir) $(abi_release)-$* '$(call build_dkms_sign,$(builddir)/build-$*)' $(1) $(2) $(3) $(4) $(5) +endef + +# nvidia_build_payload 450 450 450_450.102.04-0ubuntu0.20.04.1 +# nvidia_build_payload 450-server 450srv 50.102.04-0ubuntu0.20.04.1 +define nvidia_build_payload = + $(call build_dkms, $(bldinfo_pkg_name)-$*, $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/signatures, "", nvidia-$(2), pool/restricted/n/nvidia-graphics-drivers-$(1)/nvidia-kernel-source-$(1)_$(3)_$(arch).deb pool/restricted/n/nvidia-graphics-drivers-$(1)/nvidia-dkms-$(1)_$(3)_$(arch).deb) +endef +# nvidia_build 450 +# nvidia_build 450-server +define nvidia_build = + $(call nvidia_build_payload,$(1),$(shell echo $(1) | sed -e 's/-server/srv/'),$(shell awk '/^nvidia-graphics-drivers-$(1) / {print($$2);}' debian/dkms-versions)) + +endef + +define install_control = + for which in $(3); \ + do \ + template="$(DROOT)/templates/$(2).$$which.in"; \ + script="$(DROOT)/$(1).$$which"; \ + sed -e 's/@abiname@/$(abi_release)/g' \ + -e 's/@localversion@/-$*/g' \ + -e 's/@image-stem@/$(instfile)/g' \ + <"$$template" >"$$script"; \ + done +endef + +# Ensure the directory prefix is exactly 100 characters long so pathnames are the +# exact same length in any binary files produced by the builds. These will be +# commonised later. +dkms_20d=.................... +dkms_100d=$(dkms_20d)$(dkms_20d)$(dkms_20d)$(dkms_20d)$(dkms_20d) +dkms_100c=$(shell echo '$(dkms_100d)' | sed -e 's/\./_/g') +define dkms_dir_prefix = +$(shell echo $(1)/$(dkms_100c) | \ + sed -e 's/\($(dkms_100d)\).*/\1/' -e 's/^\(.*\)....$$/\1dkms/') +endef + +# Install the finished build +install-%: pkgdir_bin = $(CURDIR)/debian/$(bin_pkg_name)-$* +install-%: pkgdir = $(CURDIR)/debian/$(mods_pkg_name)-$* +install-%: pkgdir_ex = $(CURDIR)/debian/$(mods_extra_pkg_name)-$* +install-%: pkgdir_bldinfo = $(CURDIR)/debian/$(bldinfo_pkg_name)-$* +install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$* +install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +install-%: signingv = $(CURDIR)/debian/$(bin_pkg_name)-signing/$(release)-$(revision) +install-%: toolspkgdir = $(CURDIR)/debian/$(tools_flavour_pkg_name)-$* +install-%: cloudpkgdir = $(CURDIR)/debian/$(cloud_flavour_pkg_name)-$* +install-%: basepkg = $(hdrs_pkg_name) +install-%: indeppkg = $(indep_hdrs_pkg_name) +install-%: kernfile = $(call custom_override,kernel_file,$*) +install-%: instfile = $(call custom_override,install_file,$*) +install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$* +install-%: target_flavour = $* +install-%: MODHASHALGO=sha512 +install-%: MODSECKEY=$(builddir)/build-$*/certs/signing_key.pem +install-%: MODPUBKEY=$(builddir)/build-$*/certs/signing_key.x509 +install-%: build_dir=$(builddir)/build-$* +install-%: dkms_dir=$(call dkms_dir_prefix,$(builddir)/build-$*) +install-%: enable_zfs = $(call custom_override,do_zfs,$*) +install-%: dbgpkgdir_zfs = $(if $(filter true,$(skipdbg)),"",$(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/kernel) +install-%: $(stampdir)/stamp-build-% install-headers + @echo Debug: $@ kernel_file $(kernel_file) kernfile $(kernfile) install_file $(install_file) instfile $(instfile) + dh_testdir + dh_testroot + dh_prep -p$(bin_pkg_name)-$* + dh_prep -p$(mods_pkg_name)-$* + dh_prep -p$(hdrs_pkg_name)-$* +ifneq ($(skipdbg),true) + dh_prep -p$(bin_pkg_name)-$*-dbgsym +endif + + # The main image + # compress_file logic required because not all architectures + # generate a zImage automatically out of the box +ifeq ($(compress_file),) + install -m600 -D $(builddir)/build-$*/$(kernfile) \ + $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* +else + install -d $(pkgdir_bin)/boot + gzip -c9v $(builddir)/build-$*/$(kernfile) > \ + $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* + chmod 600 $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* +endif + +ifeq ($(uefi_signed),true) + install -d $(signingv) + # gzipped kernel images must be decompressed for signing + if [[ "$(kernfile)" =~ \.gz$$ ]]; then \ + < $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \ + gunzip -cv > $(signingv)/$(instfile)-$(abi_release)-$*.efi; \ + cp -p --attributes-only $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \ + $(signingv)/$(instfile)-$(abi_release)-$*.efi; \ + echo "GZIP=1" >> $(signingv)/$(instfile)-$(abi_release)-$*.efi.vars; \ + else \ + cp -p $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \ + $(signingv)/$(instfile)-$(abi_release)-$*.efi; \ + fi +endif +ifeq ($(opal_signed),true) + install -d $(signingv) + cp -p $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \ + $(signingv)/$(instfile)-$(abi_release)-$*.opal; +endif +ifeq ($(sipl_signed),true) + install -d $(signingv) + cp -p $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \ + $(signingv)/$(instfile)-$(abi_release)-$*.sipl; +endif + + install -d $(pkgdir)/boot + install -m644 $(builddir)/build-$*/.config \ + $(pkgdir)/boot/config-$(abi_release)-$* + install -m600 $(builddir)/build-$*/System.map \ + $(pkgdir)/boot/System.map-$(abi_release)-$* + if [ "$(filter true,$(do_dtbs))" ]; then \ + $(build_cd) $(kmake) $(build_O) $(conc_level) dtbs_install \ + INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + ( cd $(pkgdir)/lib/firmware/$(abi_release)-$*/ && find device-tree -print ) | \ + while read dtb_file; do \ + echo "$$dtb_file ?" >> $(DEBIAN)/d-i/firmware/$(arch)/kernel-image; \ + done; \ + fi +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + + $(build_cd) $(kmake) $(build_O) $(conc_level) modules_install $(vdso) \ + INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \ + INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$* + + # + # Build module blacklists: + # - blacklist all watchdog drivers (LP:1432837) + # + install -d $(pkgdir)/lib/modprobe.d + echo "# Kernel supplied blacklist for $(src_pkg_name) $(abi_release)-$* $(arch)" \ + >$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + for conf in $(arch)-$* $(arch) common.conf; do \ + if [ -f $(DEBIAN)/modprobe.d/$$conf ]; then \ + echo "# modprobe.d/$$conf"; \ + cat $(DEBIAN)/modprobe.d/$$conf; \ + fi; \ + done >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + echo "# Autogenerated watchdog blacklist" \ + >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + ls -1 $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/watchdog/ | \ + grep -v '^bcm2835_wdt$$' | \ + sed -e 's/^/blacklist /' -e 's/.ko$$//' | \ + sort -u \ + >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf + +ifeq ($(do_extras_package),true) + # + # Remove all modules not in the inclusion list. + # + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + /sbin/depmod -v -b $(pkgdir) $(abi_release)-$* | \ + sed -e "s@$(pkgdir)/lib/modules/$(abi_release)-$*/kernel/@@g" | \ + awk '{ print $$1 " " $$NF}' >$(build_dir)/module-inclusion.depmap; \ + mkdir -p $(pkgdir_ex)/lib/modules/$(abi_release)-$*; \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel; \ + $(SHELL) $(DROOT)/scripts/module-inclusion --master \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(DEBIAN)/control.d/$(target_flavour).inclusion-list \ + $(build_dir)/module-inclusion.depmap 2>&1 | \ + tee $(target_flavour).inclusion-list.log; \ + /sbin/depmod -b $(pkgdir) -ea -F $(pkgdir)/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$* 2>&1 |tee $(target_flavour).depmod.log; \ + if [ `grep -c 'unknown symbol' $(target_flavour).depmod.log` -gt 0 ]; then \ + echo "EE: Unresolved module dependencies in base package!"; \ + exit 1; \ + fi \ + fi +endif + +ifeq ($(no_dumpfile),) + makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ + -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* +endif + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source + + # Some initramfs-tools specific modules + install -d $(pkgdir)/lib/modules/$(abi_release)-$*/initrd + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko ]; then\ + $(LN) $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko \ + $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \ + fi + + echo "interest linux-update-$(abi_release)-$*" >"$(DROOT)/$(bin_pkg_name)-$*.triggers" + install -d $(pkgdir_bin)/usr/lib/linux/triggers + $(call install_control,$(bin_pkg_name)-$*,image,postinst postrm preinst prerm) + install -d $(pkgdir)/usr/lib/linux/triggers + $(call install_control,$(mods_pkg_name)-$*,extra,postinst postrm) +ifeq ($(do_extras_package),true) + # Install the postinit/postrm scripts in the extras package. + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + install -d $(pkgdir_ex)/usr/lib/linux/triggers; \ + $(call install_control,$(mods_extra_pkg_name)-$*,extra,postinst postrm); \ + fi +endif + + # Install the full changelog. +ifeq ($(do_doc_package),true) + install -d $(bindoc) + cat $(DEBIAN)/changelog $(DEBIAN)/changelog.historical | \ + gzip -9 >$(bindoc)/changelog.Debian.old.gz + chmod 644 $(bindoc)/changelog.Debian.old.gz +endif + +ifneq ($(skipsub),true) + for sub in $($(*)_sub); do \ + if ! (TO=$$sub FROM=$* ABI_RELEASE=$(abi_release) $(SHELL) \ + $(DROOT)/scripts/sub-flavour); then exit 1; fi; \ + /sbin/depmod -b debian/$(bin_pkg_name)-$$sub \ + -ea -F debian/$(bin_pkg_name)-$$sub/boot/System.map-$(abi_release)-$* \ + $(abi_release)-$*; \ + $(call install_control,$(bin_pkg_name)--$$sub,image,postinst postrm preinst prerm); \ + done +endif + +ifneq ($(skipdbg),true) + # Debug image is simple + install -m644 -D $(builddir)/build-$*/vmlinux \ + $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$* + $(build_cd) $(kmake) $(build_O) modules_install $(vdso) \ + INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug + # Add .gnu_debuglink sections only after all/DKMS modules are built. + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/source + rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/modules.* + rm -fr $(dbgpkgdir)/usr/lib/debug/lib/firmware +endif + + # The flavour specific headers image + # TODO: Would be nice if we didn't have to dupe the original builddir + install -d -m755 $(hdrdir) + cat $(builddir)/build-$*/.config | \ + sed -e 's/.*CONFIG_DEBUG_INFO=.*/# CONFIG_DEBUG_INFO is not set/g' > \ + $(hdrdir)/.config + chmod 644 $(hdrdir)/.config + $(kmake) O=$(hdrdir) -j1 syncconfig prepare scripts + # We'll symlink this stuff + rm -f $(hdrdir)/Makefile + rm -rf $(hdrdir)/include2 $(hdrdir)/source + # We do not need the retpoline information. + find $(hdrdir) -name \*.o.ur-\* | xargs rm -f + # Copy over the compilation version. + cp "$(builddir)/build-$*/include/generated/compile.h" \ + "$(hdrdir)/include/generated/compile.h" + # Add UTS_UBUNTU_RELEASE_ABI since UTS_RELEASE is difficult to parse. + echo "#define UTS_UBUNTU_RELEASE_ABI $(abinum)" >> $(hdrdir)/include/generated/utsrelease.h + # powerpc kernel arch seems to need some .o files for external module linking. Add them in. +ifeq ($(build_arch),powerpc) + mkdir -p $(hdrdir)/arch/powerpc/lib + cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib +endif + # Copy over the new retpoline extractor. + cp scripts/ubuntu-retpoline-extract-one $(hdrdir)/scripts + # Script to symlink everything up + $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(indeppkg)" "$*" + # The build symlink + install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$* + $(LN) /usr/src/$(basepkg)-$* \ + debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build + # And finally the symvers + install -m644 $(builddir)/build-$*/Module.symvers \ + $(hdrdir)/Module.symvers + + # Now the header scripts + $(call install_control,$(hdrs_pkg_name)-$*,headers,postinst) + + # At the end of the package prep, call the tests + DPKG_ARCH="$(arch)" KERN_ARCH="$(build_arch)" FLAVOUR="$*" \ + VERSION="$(abi_release)" REVISION="$(revision)" \ + PREV_REVISION="$(prev_revision)" ABI_NUM="$(abinum)" \ + PREV_ABI_NUM="$(prev_abinum)" BUILD_DIR="$(builddir)/build-$*" \ + INSTALL_DIR="$(pkgdir)" SOURCE_DIR="$(CURDIR)" \ + run-parts -v $(DROOT)/tests-build + + # + # Remove files which are generated at installation by postinst, + # except for modules.order and modules.builtin + # + # NOTE: need to keep this list in sync with postrm + # + mkdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.order \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_ + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin ] ; then \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_; \ + fi + if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin.modinfo ] ; then \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin.modinfo \ + $(pkgdir)/lib/modules/$(abi_release)-$*/_; \ + fi + rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.* + mv $(pkgdir)/lib/modules/$(abi_release)-$*/_/* \ + $(pkgdir)/lib/modules/$(abi_release)-$* + rmdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ + +ifeq ($(do_linux_tools),true) + # Create the linux-tools tool links + install -d $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +ifeq ($(do_tools_usbip),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbip $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbipd $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_acpidbg),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/acpidbg $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_cpupower),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/cpupower $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_perf),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/perf $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +ifeq ($(do_tools_perf_jvmti),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/libperf-jvmti.so $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +endif +ifeq ($(do_tools_bpftool),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/bpftool $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +ifeq ($(do_tools_x86),true) + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/turbostat $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + # Create the linux-hyperv tool links + install -d $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_kvp_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_vss_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_fcopy_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* + $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/lsvmbus $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$* +endif +endif + + # Build a temporary "installed headers" directory. + install -d $(dkms_dir) $(dkms_dir)/headers $(dkms_dir)/build $(dkms_dir)/source + cp -rp "$(hdrdir)" "$(indep_hdrdir)" "$(dkms_dir)/headers" + + $(if $(filter true,$(enable_zfs)),$(call build_dkms, $(mods_pkg_name)-$*, $(pkgdir)/lib/modules/$(abi_release)-$*/kernel, $(dbgpkgdir_zfs), zfs, pool/universe/z/zfs-linux/zfs-dkms_$(dkms_zfs_linux_version)_all.deb)) + +ifeq ($(do_dkms_nvidia),true) + $(foreach series,$(nvidia_desktop_series),$(call nvidia_build,$(series))) +endif +ifeq ($(do_dkms_nvidia_server),true) + $(foreach series,$(nvidia_server_series),$(call nvidia_build,$(series))) +endif + +ifneq ($(skipdbg),true) + # Add .gnu_debuglink sections to each stripped .ko + # pointing to unstripped verson + find $(pkgdir) \ + $(if $(filter true,$(do_extras_package)),$(pkgdir_ex)) \ + -name '*.ko' | while read path_module ; do \ + module="/lib/modules/$${path_module#*/lib/modules/}"; \ + if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \ + while IFS= read -r -d '' signature < <(tail -c 28 "$$path_module"); do \ + break; \ + done; \ + $(CROSS_COMPILE)objcopy \ + --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \ + $$path_module; \ + if grep -q CONFIG_MODULE_SIG=y $(builddir)/build-$*/.config && \ + [ "$$signature" = $$'~Module signature appended~\n' ]; then \ + $(builddir)/build-$*/scripts/sign-file $(MODHASHALGO) \ + $(MODSECKEY) \ + $(MODPUBKEY) \ + $$path_module; \ + fi; \ + else \ + echo "WARNING: Missing debug symbols for module '$$module'."; \ + fi; \ + done +endif + + # Build the final ABI information. + install -d $(abidir) + sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \ + $(builddir)/build-$*/Module.symvers | sort > $(abidir)/$* + + # Build the final ABI modules information. + find $(pkgdir_bin) $(pkgdir) $(pkgdir_ex) -name \*.ko | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $(abidir)/$*.modules + + # Build the final ABI firmware information. + find $(pkgdir_bin) $(pkgdir) $(pkgdir_ex) -name \*.ko | \ + while read ko; do \ + /sbin/modinfo $$ko | grep ^firmware || true; \ + done | sort -u >$(abidir)/$*.fwinfo + + # Build the final ABI compiler information. + ko=$$(find $(pkgdir_bin) $(pkgdir) $(pkgdir_ex) -name \*.ko | head -1); \ + readelf -p .comment "$$ko" | gawk ' \ + ($$1 == "[") { \ + printf("%s", $$3); \ + for (n=4; n<=NF; n++) { \ + printf(" %s", $$n); \ + } \ + print "" \ + }' | sort -u >$(abidir)/$*.compiler + + # Build the final ABI retpoline information. + if grep -q CONFIG_RETPOLINE=y $(builddir)/build-$*/.config; then \ + echo "# retpoline v1.0" >$(abidir)/$*.retpoline; \ + $(SHELL) $(DROOT)/scripts/retpoline-extract $(builddir)/build-$* $(CURDIR) | \ + sort >>$(abidir)/$*.retpoline; \ + else \ + echo "# RETPOLINE NOT ENABLED" >$(abidir)/$*.retpoline; \ + fi + + # Build the buildinfo package content. + install -d $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$* + install -m644 $(builddir)/build-$*/.config \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/config + install -m644 $(abidir)/$* \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/abi + install -m644 $(abidir)/$*.modules \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/modules + install -m644 $(abidir)/$*.fwinfo \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/fwinfo + install -m644 $(abidir)/$*.retpoline \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/retpoline + install -m644 $(abidir)/$*.compiler \ + $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/compiler + +headers_tmp := $(CURDIR)/debian/tmp-headers +headers_dir := $(CURDIR)/debian/linux-libc-dev + +hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) \ + KERNELVERSION=$(abi_release) INSTALL_HDR_PATH=$(headers_tmp)/install \ + SHELL="$(SHELL)" ARCH=$(header_arch) + +install-arch-headers: + @echo Debug: $@ + dh_testdir + dh_testroot +ifeq ($(do_libc_dev_package),true) + dh_prep -plinux-libc-dev +endif + + rm -rf $(headers_tmp) + install -d $(headers_tmp) $(headers_dir)/usr/include/ + + $(hmake) $(defconfig) + mv $(headers_tmp)/.config $(headers_tmp)/.config.old + sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \ + -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \ + $(headers_tmp)/.config.old > $(headers_tmp)/.config + $(hmake) syncconfig + $(hmake) headers_install + + ( cd $(headers_tmp)/install/include/ && \ + find . -name '.' -o -name '.*' -prune -o -print | \ + cpio -pvd --preserve-modification-time \ + $(headers_dir)/usr/include/ ) + mkdir $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH) + mv $(headers_dir)/usr/include/asm $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)/ + + rm -rf $(headers_tmp) + +define dh_all + dh_installchangelogs -p$(1) + dh_installdocs -p$(1) + dh_compress -p$(1) + dh_fixperms -p$(1) -X/boot/ + dh_shlibdeps -p$(1) $(shlibdeps_opts) + dh_installdeb -p$(1) + dh_installdebconf -p$(1) + $(lockme) dh_gencontrol -p$(1) -- -Vlinux:rprovides='$(rprovides)' + dh_md5sums -p$(1) + dh_builddeb -p$(1) +endef +define newline + + +endef +define dh_all_inline + $(subst ${newline},; \${newline},$(call dh_all,$(1))) +endef + +binary-arch-headers: install-arch-headers + @echo Debug: $@ + dh_testdir + dh_testroot +ifeq ($(do_libc_dev_package),true) +ifneq ($(DEBIAN),debian.master) + echo "non-master branch building linux-libc-dev, aborting" + exit 1 +endif + $(call dh_all,linux-libc-dev) +endif + +binary-%: pkgimg = $(bin_pkg_name)-$* +binary-%: pkgimg_mods = $(mods_pkg_name)-$* +binary-%: pkgimg_ex = $(mods_extra_pkg_name)-$* +binary-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$* +binary-%: pkgbldinfo = $(bldinfo_pkg_name)-$* +binary-%: pkghdr = $(hdrs_pkg_name)-$* +binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym +binary-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +binary-%: pkgtools = $(tools_flavour_pkg_name)-$* +binary-%: pkgcloud = $(cloud_flavour_pkg_name)-$* +binary-%: rprovides = $(if $(filter true,$(call custom_override,do_zfs,$*)),spl-modules$(comma) spl-dkms$(comma) zfs-modules$(comma) zfs-dkms$(comma)) +binary-%: target_flavour = $* +binary-%: checks-% + @echo Debug: $@ + dh_testdir + dh_testroot + + $(call dh_all,$(pkgimg)) + $(call dh_all,$(pkgimg_mods)) + +ifeq ($(do_extras_package),true) + ifeq ($(ship_extras_package),false) + # If $(ship_extras_package) is explicitly set to false, then do not + # construct the linux-image-extra package; instead just log all of the + # "extra" modules which were pointlessly built yet won't be shipped. + find $(pkgdir_ex) -name '*.ko' | sort \ + | sed 's|^$(pkgdir_ex)/|NOT-SHIPPED |' \ + | tee -a $(target_flavour).not-shipped.log; + else + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + $(call dh_all_inline,$(pkgimg_ex)); \ + fi + endif +endif + + $(call dh_all,$(pkgbldinfo)) + $(call dh_all,$(pkghdr)) + +ifneq ($(skipsub),true) + @set -e; for sub in $($(*)_sub); do \ + pkg=$(bin_pkg_name)-$$sub; \ + $(call dh_all_inline,$$pkg); \ + done +endif + +ifneq ($(skipdbg),true) + $(call dh_all,$(dbgpkg)) + + # Hokay...here's where we do a little twiddling... + # Renaming the debug package prevents it from getting into + # the primary archive, and therefore prevents this very large + # package from being mirrored. It is instead, through some + # archive admin hackery, copied to http://ddebs.ubuntu.com. + # + mv ../$(dbgpkg)_$(release)-$(revision)_$(arch).deb \ + ../$(dbgpkg)_$(release)-$(revision)_$(arch).ddeb + set -e; \ + ( \ + $(lockme_cmd) 9 || exit 1; \ + if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \ + sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \ + else \ + grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \ + mv debian/files.new debian/files; \ + fi; \ + ) 9>$(lockme_file) + # Now, the package wont get into the archive, but it will get put + # into the debug system. +endif + +ifeq ($(do_linux_tools),true) + $(call dh_all,$(pkgtools)) +endif +ifeq ($(do_cloud_tools),true) + $(call dh_all,$(pkgcloud)) +endif + +ifneq ($(full_build),false) + # Clean out this flavours build directory. + rm -rf $(builddir)/build-$* + # Clean out the debugging package source directory. + rm -rf $(dbgpkgdir) +endif + +# +# per-architecture packages +# +builddirpa = $(builddir)/tools-perarch + +$(stampdir)/stamp-prepare-perarch: + @echo Debug: $@ +ifeq ($(do_any_tools),true) + rm -rf $(builddirpa) + install -d $(builddirpa) + rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) --exclude .git -a ./ $(builddirpa)/ +endif + touch $@ + +$(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch install-arch-headers + @echo Debug: $@ +ifeq ($(do_linux_tools),true) +ifeq ($(do_tools_usbip),true) + chmod 755 $(builddirpa)/tools/usb/usbip/autogen.sh + cd $(builddirpa)/tools/usb/usbip && ./autogen.sh + chmod 755 $(builddirpa)/tools/usb/usbip/configure + cd $(builddirpa)/tools/usb/usbip && ./configure --prefix=$(builddirpa)/tools/usb/usbip/bin + cd $(builddirpa)/tools/usb/usbip && make install CFLAGS="-g -O2 -static" CROSS_COMPILE=$(CROSS_COMPILE) +endif +ifeq ($(do_tools_acpidbg),true) + cd $(builddirpa)/tools/power/acpi && make clean && make CFLAGS="-g -O2 -static -I$(builddirpa)/include" CROSS_COMPILE=$(CROSS_COMPILE) acpidbg +endif +ifeq ($(do_tools_cpupower),true) + # Allow for multiple installed versions of cpupower and libcpupower.so: + # Override LIB_MIN in order to to generate a versioned .so named + # libcpupower.so.$(abi_release) and link cpupower with that. + make -C $(builddirpa)/tools/power/cpupower \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + CROSS=$(CROSS_COMPILE) \ + LIB_MIN=$(abi_release) CPUFREQ_BENCH=false +endif +ifeq ($(do_tools_perf),true) + cd $(builddirpa) && $(kmake) $(defconfig) + mv $(builddirpa)/.config $(builddirpa)/.config.old + sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \ + -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \ + $(builddirpa)/.config.old > $(builddirpa)/.config + cd $(builddirpa) && $(kmake) syncconfig + cd $(builddirpa) && $(kmake) prepare + cd $(builddirpa)/tools/perf && \ + $(kmake) prefix=/usr HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 WERROR=0 +endif +ifeq ($(do_tools_bpftool),true) + $(kmake) CROSS_COMPILE=$(CROSS_COMPILE) -C $(builddirpa)/tools/bpf/bpftool +endif +ifeq ($(do_tools_x86),true) + cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE) + cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE) +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + cd $(builddirpa)/tools/hv && make CFLAGS="-I$(headers_dir)/usr/include -I$(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)" CROSS_COMPILE=$(CROSS_COMPILE) hv_kvp_daemon hv_vss_daemon hv_fcopy_daemon +endif +endif + @touch $@ + +install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name) +install-perarch: cloudpkgdir = $(CURDIR)/debian/$(cloud_pkg_name) +install-perarch: $(stampdir)/stamp-build-perarch + @echo Debug: $@ + # Add the tools. +ifeq ($(do_linux_tools),true) + install -d $(toolspkgdir)/usr/lib + install -d $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +ifeq ($(do_tools_usbip),true) + install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbip \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbipd \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +ifeq ($(do_tools_acpidbg),true) + install -m755 $(builddirpa)/tools/power/acpi/acpidbg \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +ifeq ($(do_tools_cpupower),true) + install -m755 $(builddirpa)/tools/power/cpupower/cpupower \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + # Install only the full versioned libcpupower.so.$(abi_release), not + # the usual symlinks to it. + install -m644 $(builddirpa)/tools/power/cpupower/libcpupower.so.$(abi_release) \ + $(toolspkgdir)/usr/lib/ +endif +ifeq ($(do_tools_perf),true) + install -m755 $(builddirpa)/tools/perf/perf $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +ifeq ($(do_tools_perf_jvmti),true) + install -m755 $(builddirpa)/tools/perf/libperf-jvmti.so $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +endif +ifeq ($(do_tools_bpftool),true) + install -m755 $(builddirpa)/tools/bpf/bpftool/bpftool $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +ifeq ($(do_tools_x86),true) + install -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \ + $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +endif +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + install -d $(cloudpkgdir)/usr/lib + install -d $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_vss_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/hv_fcopy_daemon \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) + install -m755 $(builddirpa)/tools/hv/lsvmbus \ + $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release) +endif +endif + +binary-perarch: toolspkg = $(tools_pkg_name) +binary-perarch: cloudpkg = $(cloud_pkg_name) +binary-perarch: install-perarch + @echo Debug: $@ +ifeq ($(do_linux_tools),true) + $(call dh_all,$(toolspkg)) +endif +ifeq ($(do_cloud_tools),true) + $(call dh_all,$(cloudpkg)) +endif + +binary-debs: signing = $(CURDIR)/debian/$(bin_pkg_name)-signing +binary-debs: signingv = $(CURDIR)/debian/$(bin_pkg_name)-signing/$(release)-$(revision) +binary-debs: signing_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz +binary-debs: binary-perarch $(addprefix binary-,$(flavours)) + @echo Debug: $@ +ifeq ($(any_signed),true) + install -d $(signingv)/control + { echo "tarball"; } >$(signingv)/control/options + cd $(signing) && tar czvf ../../../$(signing_tar) . + dpkg-distaddfile $(signing_tar) raw-signing - +endif + +build-arch-deps-$(do_flavour_image_package) += $(addprefix $(stampdir)/stamp-build-,$(flavours)) +build-arch: $(build-arch-deps-true) + @echo Debug: $@ + +ifeq ($(AUTOBUILD),) +binary-arch-deps-$(do_flavour_image_package) += binary-udebs +else +binary-arch-deps-$(do_flavour_image_package) = binary-debs +endif +binary-arch-deps-$(do_libc_dev_package) += binary-arch-headers +ifneq ($(do_common_headers_indep),true) +binary-arch-deps-$(do_flavour_header_package) += binary-headers +endif +binary-arch: $(binary-arch-deps-true) + @echo Debug: $@ + --- linux-5.8.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-5.8.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,220 @@ +build-indep: + @echo Debug: $@ + +# The binary-indep dependency chain is: +# +# install-headers <- install-doc <- install-source <- install-tools <- install-indep <- binary-indep +# install-headers <- binary-headers +# +indep_hdrpkg = $(indep_hdrs_pkg_name) +indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) +install-headers: prepare-indep + @echo Debug: $@ + dh_testdir + dh_testroot + +ifeq ($(do_flavour_header_package),true) + install -d $(indep_hdrdir) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune \ + -o -path './include/*' -prune \ + -o -path './scripts/*' -prune -o -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ + -print | cpio -pd --preserve-modification-time $(indep_hdrdir) + cp -a scripts include $(indep_hdrdir) + (find arch -name include -type d -print | \ + xargs -n1 -i: find : -type f) | \ + cpio -pd --preserve-modification-time $(indep_hdrdir) +endif + +docpkg = $(doc_pkg_name) +docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg) +install-doc: prepare-indep + @echo Debug: $@ +ifeq ($(do_doc_package),true) + dh_testdir + dh_testroot + + install -d $(docdir) +ifeq ($(do_doc_package_content),true) + # First the html docs. We skip these for autobuilds + if [ -z "$(AUTOBUILD)" ]; then \ + install -d $(docdir)/$(doc_pkg_name)-tmp; \ + $(kmake) O=$(docdir)/$(doc_pkg_name)-tmp htmldocs; \ + install -d $(docdir)/html; \ + rsync -aL $(docdir)/$(doc_pkg_name)-tmp/Documentation/output/ \ + $(docdir)/html/; \ + rm -rf $(docdir)/$(doc_pkg_name)-tmp; \ + fi +endif + # Copy the rest + cp -a Documentation/* $(docdir) + find $(docdir) -name .gitignore | xargs rm -f +endif + +srcpkg = linux-source-$(release) +srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg) +balldir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)/$(srcpkg) +install-source: prepare-indep + @echo Debug: $@ +ifeq ($(do_source_package),true) + + install -d $(srcdir) +ifeq ($(do_source_package_content),true) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune -o \ + -path './.*' -prune -o -print | \ + cpio -pd --preserve-modification-time $(balldir) + (cd $(srcdir); tar cf - $(srcpkg)) | bzip2 -9c > \ + $(srcdir)/$(srcpkg).tar.bz2 + rm -rf $(balldir) + find './debian' './$(DEBIAN)' \ + -path './debian/linux-*' -prune -o \ + -path './debian/$(src_pkg_name)-*' -prune -o \ + -path './debian/build' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/stamps' -prune -o \ + -path './debian/tmp' -prune -o \ + -print | \ + cpio -pd --preserve-modification-time $(srcdir) + $(LN) $(srcpkg)/$(srcpkg).tar.bz2 $(srcdir)/.. +endif +endif + +install-tools: toolspkg = $(tools_common_pkg_name) +install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin +install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin +install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man +install-tools: toolsbashcomp = $(CURDIR)/debian/$(toolspkg)/usr/share/bash-completion/completions +install-tools: hosttoolspkg = $(hosttools_pkg_name) +install-tools: hosttoolsbin = $(CURDIR)/debian/$(hosttoolspkg)/usr/bin +install-tools: hosttoolsman = $(CURDIR)/debian/$(hosttoolspkg)/usr/share/man +install-tools: cloudpkg = $(cloud_common_pkg_name) +install-tools: cloudbin = $(CURDIR)/debian/$(cloudpkg)/usr/bin +install-tools: cloudsbin = $(CURDIR)/debian/$(cloudpkg)/usr/sbin +install-tools: cloudman = $(CURDIR)/debian/$(cloudpkg)/usr/share/man +install-tools: prepare-indep $(stampdir)/stamp-build-perarch + @echo Debug: $@ + +ifeq ($(do_tools_common),true) + rm -rf $(builddir)/tools + install -d $(builddir)/tools + for i in *; do $(LN) $(CURDIR)/$$i $(builddir)/tools/; done + rm $(builddir)/tools/tools + rsync -a tools/ $(builddir)/tools/tools/ + + install -d $(toolsbin) + install -d $(toolssbin) + install -d $(toolsman)/man1 + install -d $(toolsman)/man8 + install -d $(toolsbashcomp) + + install -m755 debian/tools/generic $(toolsbin)/usbip + install -m755 debian/tools/generic $(toolsbin)/usbipd + install -m644 $(CURDIR)/tools/usb/usbip/doc/*.8 $(toolsman)/man1/ + + install -m755 debian/tools/generic $(toolsbin)/cpupower + install -m644 $(CURDIR)/tools/power/cpupower/man/*.1 $(toolsman)/man1/ + + install -m755 debian/tools/generic $(toolsbin)/perf + + install -m755 debian/tools/generic $(toolssbin)/bpftool + make -C $(builddir)/tools/tools/bpf/bpftool doc + install -m644 $(builddir)/tools/tools/bpf/bpftool/Documentation/*.8 \ + $(toolsman)/man8 + install -m644 $(builddir)/tools/tools/bpf/bpftool/bash-completion/bpftool \ + $(toolsbashcomp) + + install -m755 debian/tools/generic $(toolsbin)/x86_energy_perf_policy + install -m755 debian/tools/generic $(toolsbin)/turbostat + + cd $(builddir)/tools/tools/perf && make man + install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \ + $(toolsman)/man1 + + install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8 + install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8 + +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + install -d $(cloudsbin) + install -m755 debian/tools/generic $(cloudsbin)/hv_kvp_daemon + install -m755 debian/tools/generic $(cloudsbin)/hv_vss_daemon + install -m755 debian/tools/generic $(cloudsbin)/hv_fcopy_daemon + install -m755 debian/tools/generic $(cloudsbin)/lsvmbus + install -m755 debian/cloud-tools/hv_get_dhcp_info $(cloudsbin) + install -m755 debian/cloud-tools/hv_get_dns_info $(cloudsbin) + install -m755 debian/cloud-tools/hv_set_ifconfig $(cloudsbin) + + install -d $(cloudman)/man8 + install -m644 $(CURDIR)/tools/hv/*.8 $(cloudman)/man8 +endif +endif + +ifeq ($(do_tools_acpidbg),true) + install -m755 debian/tools/generic $(toolsbin)/acpidbg +endif + +endif + +ifeq ($(do_tools_host),true) + install -d $(hosttoolsbin) + install -d $(hosttoolsman)/man1 + + install -m 755 $(CURDIR)/tools/kvm/kvm_stat/kvm_stat $(hosttoolsbin)/ + + cd $(builddir)/tools/tools/kvm/kvm_stat && make man + install -m644 $(builddir)/tools/tools/kvm/kvm_stat/*.1 \ + $(hosttoolsman)/man1 +endif + +prepare-indep: + @echo Debug: $@ + dh_prep -i + +install-indep: install-headers install-doc install-source install-tools + @echo Debug: $@ + +# This is just to make it easy to call manually. Normally done in +# binary-indep target during builds. +binary-headers: prepare-indep install-headers + @echo Debug: $@ + dh_installchangelogs -p$(indep_hdrpkg) + dh_installdocs -p$(indep_hdrpkg) + dh_compress -p$(indep_hdrpkg) + dh_fixperms -p$(indep_hdrpkg) + dh_installdeb -p$(indep_hdrpkg) + $(lockme) dh_gencontrol -p$(indep_hdrpkg) + dh_md5sums -p$(indep_hdrpkg) + dh_builddeb -p$(indep_hdrpkg) + +binary-indep: cloudpkg = $(cloud_common_pkg_name) +binary-indep: install-indep + @echo Debug: $@ + dh_installchangelogs -i + dh_installdocs -i + dh_compress -i + dh_fixperms -i +ifeq ($(do_tools_common),true) +ifeq ($(do_cloud_tools),true) +ifeq ($(do_tools_hyperv),true) + dh_installinit -p$(cloudpkg) -n --name hv-kvp-daemon + dh_installinit -p$(cloudpkg) -n --name hv-vss-daemon + dh_installinit -p$(cloudpkg) -n --name hv-fcopy-daemon + dh_installudev -p$(cloudpkg) -n --name hv-kvp-daemon + dh_installudev -p$(cloudpkg) -n --name hv-vss-daemon + dh_installudev -p$(cloudpkg) -n --name hv-fcopy-daemon + dh_systemd_enable -p$(cloudpkg) + dh_installinit -p$(cloudpkg) -o --name hv-kvp-daemon + dh_installinit -p$(cloudpkg) -o --name hv-vss-daemon + dh_installinit -p$(cloudpkg) -o --name hv-fcopy-daemon + dh_systemd_start -p$(cloudpkg) +endif + # Keep intel_sgx service disabled by default, so add it after dh_systemd_enable + # and dh_systemd_start are called: + dh_installinit -p$(cloudpkg) --no-start --no-enable --name intel-sgx-load-module +endif +endif + dh_installdeb -i + $(lockme) dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i --- linux-5.8.0.orig/debian/rules.d/4-checks.mk +++ linux-5.8.0/debian/rules.d/4-checks.mk @@ -0,0 +1,28 @@ +# Check ABI for package against last release (if not same abinum) +abi-check-%: install-% + @echo Debug: $@ + @perl -f $(DROOT)/scripts/abi-check "$*" "$(prev_abinum)" "$(abinum)" \ + "$(prev_abidir)" "$(abidir)" "$(skipabi)" + +# Check the module list against the last release (always) +module-check-%: install-% + @echo Debug: $@ + @perl -f $(DROOT)/scripts/module-check "$*" \ + "$(prev_abidir)" "$(abidir)" $(skipmodule) + +# Check the reptoline jmp/call functions against the last release. +retpoline-check-%: install-% + @echo Debug: $@ + $(SHELL) $(DROOT)/scripts/retpoline-check "$*" \ + "$(prev_abidir)" "$(abidir)" "$(skipretpoline)" "$(builddir)/build-$*" + +checks-%: module-check-% abi-check-% retpoline-check-% + @echo Debug: $@ + +# Check the config against the known options list. +config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% + @echo Debug: $@ + @perl -f $(DROOT)/scripts/config-check \ + $(builddir)/build-$*/.config "$(arch)" "$*" "$(commonconfdir)" \ + "$(skipconfig)" "$(do_enforce_all)" + --- linux-5.8.0.orig/debian/rules.d/5-udebs.mk +++ linux-5.8.0/debian/rules.d/5-udebs.mk @@ -0,0 +1,79 @@ +# Do udebs if not disabled in the arch-specific makefile +binary-udebs: binary-debs + @echo Debug: $@ +ifeq ($(disable_d_i),) + @$(MAKE) --no-print-directory -f $(DROOT)/rules DEBIAN=$(DEBIAN) \ + do-binary-udebs +endif + +do-binary-udebs: linux_udeb_name=$(shell if echo $(src_pkg_name)|egrep -q '(linux-lts|linux-hwe|linux-[0-9]+\.[0-9]+)'; then echo $(src_pkg_name); else echo linux; fi) +do-binary-udebs: debian/control + @echo Debug: $@ + dh_testdir + dh_testroot + + # unpack the kernels into a temporary directory + mkdir -p debian/d-i-${arch} + + imagelist=$$(cat $(CURDIR)/$(DEBIAN)/d-i/kernel-versions | grep ^${arch} | gawk '{print $$3}') && \ + for f in $$imagelist; do \ + i=$(release)-$(abinum)-$$f; \ + for f in \ + ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb \ + ../linux-image-unsigned-$$i\_$(release)-$(revision)_${arch}.deb \ + ../linux-modules-$$i\_$(release)-$(revision)_${arch}.deb \ + ../linux-modules-extra-$$i\_$(release)-$(revision)_${arch}.deb; \ + do \ + [ -f $$f ] && dpkg -x $$f debian/d-i-${arch}; \ + done; \ + /sbin/depmod -b debian/d-i-${arch} $$i; \ + done + + # kernel-wedge will error if no modules unless this is touched + touch $(DEBIAN)/d-i/no-modules + + touch $(CURDIR)/$(DEBIAN)/d-i/ignore-dups + export KW_DEFCONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \ + export KW_CONFIG_DIR=$(CURDIR)/$(DEBIAN)/d-i && \ + export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ + kernel-wedge install-files $(release)-$(abinum) && \ + kernel-wedge check + + # Build just the udebs + dilist=$$(dh_listpackages -s | grep "\-di$$") && \ + [ -z "$dilist" ] || \ + for i in $$dilist; do \ + dh_fixperms -p$$i; \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done + + # Generate the meta-udeb dependancy lists. + @gawk ' \ + /^Package:/ { \ + package=$$2; flavour=""; parch="" } \ + (/Package-Type: udeb/ && package !~ /^$(linux_udeb_name)-udebs-/) { \ + match(package, "'$(release)'-'$(abinum)'-(.*)-di", bits); \ + flavour = bits[1]; \ + } \ + (/^Architecture:/ && $$0 " " ~ / '$(arch)'/) { \ + parch=$$0; \ + } \ + (flavour != "" && parch != "") { \ + udebs[flavour] = udebs[flavour] package ", "; \ + flavour=""; parch=""; \ + } \ + END { \ + for (flavour in udebs) { \ + package="$(linux_udeb_name)-udebs-" flavour; \ + file="debian/" package ".substvars"; \ + print("udeb:Depends=" udebs[flavour]) > file; \ + metas="'$(builddir)'/udeb-meta-packages"; \ + print(package) >metas \ + } \ + } \ + ' <$(CURDIR)/debian/control + @while read i; do \ + $(lockme) dh_gencontrol -p$$i; \ + dh_builddeb -p$$i; \ + done <$(builddir)/udeb-meta-packages --- linux-5.8.0.orig/debian/scripts/abi-check +++ linux-5.8.0/debian/scripts/abi-check @@ -0,0 +1,210 @@ +#!/usr/bin/perl -w + +my $flavour = shift; +my $prev_abinum = shift; +my $abinum = shift; +my $prev_abidir = shift; +my $abidir = shift; +my $skipabi = shift; + +my $fail_exit = 1; +my $EE = "EE:"; +my $errors = 0; +my $abiskip = 0; + +my $count; + +print "II: Checking ABI for $flavour...\n"; + +if (-f "$prev_abidir/ignore" + or -f "$prev_abidir/$flavour.ignore" or "$skipabi" eq "true") { + print "WW: Explicitly asked to ignore ABI, running in no-fail mode\n"; + $fail_exit = 0; + $abiskip = 1; + $EE = "WW:"; +} + +if ($prev_abinum != $abinum) { + print "II: Different ABI's, running in no-fail mode\n"; + $fail_exit = 0; + $EE = "WW:"; +} + +if (not -f "$abidir/$flavour" or not -f "$prev_abidir/$flavour") { + print "EE: Previous or current ABI file missing!\n"; + print " $abidir/$flavour\n" if not -f "$abidir/$flavour"; + print " $prev_abidir/$flavour\n" if not -f "$prev_abidir/$flavour"; + + # Exit if the ABI files are missing, but return status based on whether + # skip ABI was indicated. + if ("$abiskip" eq "1") { + exit(0); + } else { + exit(1); + } +} + +my %symbols; +my %symbols_ignore; +my %modules_ignore; +my %module_syms; + +# See if we have any ignores +my $ignore = 0; +print " Reading symbols/modules to ignore..."; + +for $file ("$prev_abidir/../blacklist", "$prev_abidir/../../perm-blacklist") { + if (-f $file) { + open(IGNORE, "< $file") or + die "Could not open $file"; + while () { + chomp; + if ($_ =~ m/M: (.*)/) { + $modules_ignore{$1} = 1; + } else { + $symbols_ignore{$_} = 1; + } + $ignore++; + } + close(IGNORE); + } +} +print "read $ignore symbols/modules.\n"; + +sub is_ignored($$) { + my ($mod, $sym) = @_; + + die "Missing module name in is_ignored()" if not defined($mod); + die "Missing symbol name in is_ignored()" if not defined($sym); + + if (defined($symbols_ignore{$sym}) or defined($modules_ignore{$mod})) { + return 1; + } + return 0; +} + +# Read new syms first +print " Reading new symbols ($abinum)..."; +$count = 0; +open(NEW, "< $abidir/$flavour") or + die "Could not open $abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'type'} = $1; + $symbols{$4}{'loc'} = $2; + $symbols{$4}{'hash'} = $3; + $module_syms{$2} = 0; + $count++; +} +close(NEW); +print "read $count symbols.\n"; + +# Now the old symbols, checking for missing ones +print " Reading old symbols ($prev_abinum)..."; +$count = 0; +open(OLD, "< $prev_abidir/$flavour") or + die "Could not open $prev_abidir/$flavour"; +while () { + chomp; + m/^(\S+)\s(.+)\s(0x[0-9a-f]+)\s(.+)$/; + $symbols{$4}{'old_type'} = $1; + $symbols{$4}{'old_loc'} = $2; + $symbols{$4}{'old_hash'} = $3; + $count++; +} +close(OLD); + +print "read $count symbols.\n"; + +print "II: Checking for missing symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'type'})) { + print "\n" if not $count; + printf(" MISS : %s%s\n", $sym, + is_ignored($symbols{$sym}{'old_loc'}, $sym) ? " (ignored)" : ""); + $count++ if !is_ignored($symbols{$sym}{'old_loc'}, $sym); + } +} +print " " if $count; +print "found $count missing symbols\n"; +if ($count) { + print "$EE Symbols gone missing (what did you do!?!)\n"; + $errors++; +} + + +print "II: Checking for new symbols in new ABI..."; +$count = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'})) { + print "\n" if not $count; + print " NEW : $sym\n"; + $count++; + } +} +print " " if $count; +print "found $count new symbols\n"; +if ($count and $prev_abinum == $abinum) { + print "WW: Found new symbols within same ABI. Not recommended\n"; +} + +print "II: Checking for changes to ABI...\n"; +$count = 0; +my $moved = 0; +my $changed_type = 0; +my $changed_hash = 0; +foreach $sym (keys(%symbols)) { + if (!defined($symbols{$sym}{'old_type'}) or + !defined($symbols{$sym}{'type'})) { + next; + } + + # Changes in location don't hurt us, but log it anyway + if ($symbols{$sym}{'loc'} ne $symbols{$sym}{'old_loc'}) { + printf(" MOVE : %-40s : %s => %s\n", $sym, $symbols{$sym}{'old_loc'}, + $symbols{$sym}{'loc'}); + $moved++; + } + + # Changes to export type are only bad if new type isn't + # EXPORT_SYMBOL. Changing things to GPL are bad. + if ($symbols{$sym}{'type'} ne $symbols{$sym}{'old_type'}) { + printf(" TYPE : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_type'}. + $symbols{$sym}{'type'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_type++ if $symbols{$sym}{'type'} ne "EXPORT_SYMBOL" + and !is_ignored($symbols{$sym}{'loc'}, $sym); + } + + # Changes to the hash are always bad + if ($symbols{$sym}{'hash'} ne $symbols{$sym}{'old_hash'}) { + printf(" HASH : %-40s : %s => %s%s\n", $sym, $symbols{$sym}{'old_hash'}, + $symbols{$sym}{'hash'}, is_ignored($symbols{$sym}{'loc'}, $sym) + ? " (ignored)" : ""); + $changed_hash++ if !is_ignored($symbols{$sym}{'loc'}, $sym); + $module_syms{$symbols{$sym}{'loc'}}++; + } +} + +print "WW: $moved symbols changed location\n" if $moved; +print "$EE $changed_type symbols changed export type and weren't ignored\n" if $changed_type; +print "$EE $changed_hash symbols changed hash and weren't ignored\n" if $changed_hash; + +$errors++ if $changed_hash or $changed_type; +if ($changed_hash) { + print "II: Module hash change summary...\n"; + foreach $mod (sort { $module_syms{$b} <=> $module_syms{$a} } keys %module_syms) { + next if ! $module_syms{$mod}; + printf(" %-40s: %d\n", $mod, $module_syms{$mod}); + } +} + +print "II: Done\n"; + +if ($errors) { + exit($fail_exit); +} else { + exit(0); +} --- linux-5.8.0.orig/debian/scripts/config-check +++ linux-5.8.0/debian/scripts/config-check @@ -0,0 +1,163 @@ +#!/usr/bin/perl +# +# check-config -- check the current config for issues +# +use strict; +use File::Basename; +use File::Spec; + +my $P = 'check-config'; + +my $test = -1; +if ($ARGV[0] eq '--test') { + $test = $ARGV[1] + 0; +} elsif ($#ARGV != 5) { + die "Usage: $P \n"; +} + +my ($configfile, $arch, $flavour, $commonconfig, $warn_only, $enforce_all) = @ARGV; + +my %values = (); + +# If we are in overridden then still perform the checks and emit the messages +# but do not return failure. Those items marked FATAL will alway trigger +# failure. +my $fail_exit = 1; +$fail_exit = 0 if ($warn_only eq 'true' || $warn_only eq '1'); +my $exit_val = 0; + +$enforce_all = 0 if $enforce_all eq "no" or $enforce_all eq "false"; + +# Load up the current configuration values -- FATAL if this fails +print "$P: $configfile: loading config\n"; +open(CONFIG, "<$configfile") || die "$P: $configfile: open failed -- $! -- aborting\n"; +while () { + # Pull out values. + /^#*\s*(CONFIG_\w+)[\s=](.*)$/ or next; + if ($2 eq 'is not set') { + $values{$1} = 'n'; + } else { + $values{$1} = $2; + } +} +close(CONFIG); + +sub read_annotations { + my ($filename) = @_; + my %annot; + my $form = 1; + my ($config, $value, $options); + + # Keep track of the configs that shouldn't be appended because + # they were include_annot from another annotations file. + # That's a hash of undefs, aka a set. + my %noappend; + + print "$P: $filename loading annotations\n"; + open(my $fd, "<$filename") || + die "$P: $filename: open failed -- $! -- aborting\n"; + while (<$fd>) { + if (/^# FORMAT: (\S+)/) { + die "$P: $1: unknown annotations format\n" if ($1 != 2 && $1 != 3); + $form = $1; + } + + # Format #3 adds the include directive on top of format #2: + if ($form == 3 && /^\s*include(\s|$)/) { + # Include quoted or unquoted files: + if (/^\s*include\s+"(.*)"\s*$/ || /^\s*include\s+(.*)$/) { + # The include is relative to the current file + my $include_filename = File::Spec->join(dirname($filename), $1); + # Append the include files + my %include_annot = read_annotations($include_filename); + %annot = ( %annot, %include_annot ); + # And marked them to not be appended: + my %included_noappend; + # Discard the values and keep only the keys + @included_noappend{keys %include_annot} = (); + %noappend = ( %noappend, %included_noappend ); + next; + } else { + die "$P: Invalid include: $_"; + } + } + + /^#/ && next; + chomp; + /^$/ && next; + /^CONFIG_/ || next; + + if ($form == 1) { + ($config, $value, $options) = split(' ', $_, 3); + } elsif ($form >= 2) { + ($config, $options) = split(' ', $_, 2); + } + + if (exists $noappend{$config}) { + delete $annot{$config}; + delete $noappend{$config}; + } + $annot{$config} = $annot{$config} . ' ' . $options; + } + close($fd); + return %annot; +} + +# ANNOTATIONS: check any annotations marked for enforcement +my $annotations = "$commonconfig/annotations"; +my %annot = read_annotations($annotations); + +my $pass = 0; +my $total = 0; +my ($config, $value, $options, $option, $check, $policy); +for $config (keys %annot) { + $check = $enforce_all; + $options = $annot{$config}; + + $policy = undef; + while ($options =~ /\s*([^\s<]+)<(.*?)?>/g) { + ($option, $value) = ($1, $2); + + if ($option eq 'mark' && $value eq 'ENFORCED') { + $check = 1; + + } elsif ($option eq 'policy') { + if ($value =~ /^{/) { + $value =~ s/:/=>/g; + $policy = eval($value); + warn "$config: $@" if ($@); + } else { + $policy = undef; + } + } + } + if ($check == 1 && !defined($policy)) { + print "$P: INVALID POLICY (use policy<{...}>) $config$options\n"; + $total++; + $check = 0; + } + if ($check) { + # CONFIG_VERSION_SIGNATURE is dynamically set during the build + next if ($config eq "CONFIG_VERSION_SIGNATURE"); + my $is = '-'; + $is = $values{$config} if (defined $values{$config}); + + my $value = '-'; + for my $which ("$arch-$flavour", "$arch-*", "*-$flavour", "$arch", "*") { + if (defined $policy->{$which}) { + $value = $policy->{$which}; + last; + } + } + if ($is eq $value) { + $pass++; + } else { + print "$P: FAIL ($is != $value): $config$options\n"; + $exit_val = $fail_exit; + } + $total++; + } +} + +print "$P: $pass/$total checks passed -- exit $exit_val\n"; +exit $exit_val; --- linux-5.8.0.orig/debian/scripts/control-create +++ linux-5.8.0/debian/scripts/control-create @@ -0,0 +1,40 @@ +#!/bin/bash + +. debian/debian.env + +vars=$1 +any_signed=$2 + +. $vars + +[ "$provides" != '' ] && provides="$provides, " + +if [ "$is_sub" = "" ]; then + flavour=$(basename $vars | sed 's/.*\.//') + stub="${DEBIAN}/control.d/flavour-control.stub debian/control.d/flavour-buildinfo.stub" + if [ "$any_signed" = 'true' ]; then + sign_me_pkg="-unsigned" + sign_me_txt=" unsigned" + sign_peer_pkg="" + else + sign_me_pkg="" + sign_me_txt="" + sign_peer_pkg="-unsigned" + fi +else + flavour=$(basename $vars .vars) + stub=${DEBIAN}/sub-flavours/control.stub +fi + +cat $stub | grep -v '^#' | sed \ + -e "s#FLAVOUR#$flavour#g" \ + -e "s#DESC#$desc#g" \ + -e "s#ARCH#$arch#g" \ + -e "s#SUPPORTED#$supported#g" \ + -e "s#TARGET#$target#g" \ + -e "s#BOOTLOADER#$bootloader#g" \ + -e "s#=PROVIDES=#$provides#g" \ + -e "s#=CONFLICTS=#$conflicts#g" \ + -e "s#=SIGN-ME-PKG=#$sign_me_pkg#g" \ + -e "s#=SIGN-ME-TXT=#$sign_me_txt#g" \ + -e "s#=SIGN-PEER-PKG=#$sign_peer_pkg#g" --- linux-5.8.0.orig/debian/scripts/dkms-build +++ linux-5.8.0/debian/scripts/dkms-build @@ -0,0 +1,259 @@ +#!/bin/bash +set -e + +dkms_dir="$1" +abi_flavour="$2" +sign="$3" +pkgname="$4" +pkgdir="$5" +dbgpkgdir="$6" +package="$7" +shift 7 + +here=$(dirname "$(readlink -f "${0}")") + +srcdir=$(pwd) +cd "$dkms_dir" || exit 1 + +built_using_record() +{ + local subst="$1" + local built_using="$2" + if [ ! -f "$subst" ]; then + touch "$subst" + fi + if ! grep -q -s "^linux:BuiltUsing=" "$subst"; then + echo "linux:BuiltUsing=" >>"$subst" + fi + sed -i -e "s/^\(linux:BuiltUsing=.*\)/\1$built_using, /" "$subst" +} + +# ABI: returns present in $? and located path in lpackage_path when found. +package_present() +{ + for lpackage_path in "$1"_*.deb + do + break + done + [ -f "$lpackage_path" ] +} + +# Download and extract the DKMS package -- note there may be more +# than one package to install. +for package_path in "$@" +do + package_file=$(basename "$package_path") + echo "II: dkms-build downloading $package ($package_file)" + rpackage=$( echo "$package_path" | sed -e 's@.*/@@' -e 's@_.*@@' ) + lpackage=$( echo "$rpackage" | sed -e 's@=.*@@' ) + + while true + do + if package_present "$lpackage"; then + break + fi + case "$package_path" in + pool/*) + # Attempt download from the launchpad librarian first. + "$here/file-downloader" "https://launchpad.net/ubuntu/+archive/primary/+files/$package_file" || true + if package_present "$lpackage"; then + break + fi + + # Download from the available pools. + for pool in $( grep -h '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/*.list | awk '{print $2}' | sort -u ) + do + if package_present "$lpackage"; then + break + fi + url="$pool/$package_path" + "$here/file-downloader" "$url" && break || true + # No components in PPAs. + url=$(echo "$url" | sed -e 's@/pool/[^/]*/@/pool/main/@') + "$here/file-downloader" "$url" && break || true + done + ;; + http*:*) + "$here/file-downloader" "$package_path" + ;; + */*) + cp -p "$package_path" . + ;; + *) + apt-get download "$rpackage" + ;; + esac + break + done + if ! package_present "$lpackage"; then + echo "EE: $lpackage not found" + exit 1 + fi + + dpkg -x "$lpackage"_*.deb "$package" + + lversion=$( echo "$lpackage_path" | sed -e 's@.*/@@' -e 's@_[^_]*$@@' -e 's@.*_@@') + #built_using_record "$srcdir/debian/$pkgname.substvars" "$built_using$lpackage (= $lversion)" +done + +# Pick out the package/version from the dkms.conf. +for dkms_conf in "$package/usr/src"/*/"dkms.conf" +do + break +done + +# It seems some packages have a # in the name which works fine if the +# package is installed directly, but not so much if we build it out +# of the normal location. +sed -i -e '/^PACKAGE_NAME=/ s/#//g' "$dkms_conf" + +# Run any dkms-package specfic configuration steps +dkms_config_specific="$srcdir/$0-configure--$package" +dkms_config_generic=$(echo "$dkms_config_specific" | sed -e 's/-[0-9][0-9]*$/-N/') +for dkms_config in "$dkms_config_specific" "$dkms_config_generic" +do + if [ -z "$dkms_config" -o ! -e "$dkms_config" ]; then + continue + fi + echo "II: dkms-build-configure $(basename "$dkms_config") found, executing" + $SHELL "$dkms_config" \ + "$srcdir" \ + "$dkms_conf" \ + "$dkms_dir" \ + "$abi_flavour" \ + "$sign" \ + "$pkgname" \ + "$pkgdir" \ + "$dbgpkgdir" \ + "$package" \ + "$@" || exit 1 + break +done + +cat - <<'EOF' >>"$dkms_conf" +POST_BUILD="ubuntu-save-objects ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/objects $POST_BUILD" +EOF +ubuntu_script="$(dirname "$dkms_conf")/ubuntu-save-objects" +cat - <<'EOF' >"$ubuntu_script" +#!/bin/sh +from="$1" +to="$2" +script="$3" +shift 2 + +# Copy the objects. +echo "II: copying objects to '$to'" +mkdir -p "$to" +(cd "$from" && find -name \*.o -o -name \*.o.ur-\* | cpio -Lpd "$to") + +# Call the original post_install script if there is one. +[ "$script" = '' ] && exit 0 + +shift +exec "$(dirname "$0")/$script" "$@" +EOF +chmod +x "$ubuntu_script" +dkms_package=$( sed -ne 's/PACKAGE_NAME="\(.*\)"/\1/p' "$dkms_conf" ) +dkms_version=$( sed -ne 's/PACKAGE_VERSION="\(.*\)"/\1/p' "$dkms_conf" ) + +# Build the DKMS binaries. +echo "II: dkms-build building $package" +rc=0 +/usr/sbin/dkms build --no-prepare-kernel --no-clean-kernel \ + -k "$abi_flavour" \ + --sourcetree "$dkms_dir/source" \ + --dkmstree "$dkms_dir/build" \ + --kernelsourcedir "$dkms_dir/headers/linux-headers-$abi_flavour" \ + "$dkms_conf" || rc=1 + +# Find the log and add it to our own. +for log in "$dkms_dir/build/$dkms_package/$dkms_version/$abi_flavour"/*/"log/make.log" "$dkms_dir/build/$dkms_package/$dkms_version/build/make.log" +do + [ -f "$log" ] && break +done +sed -e "s@$dkms_dir@<>@g" <"$log" + +# If this build failed then exit here. +[ "$rc" != 0 ] && exit "$rc" + +# Install the modules with debug symbols we possibly built, +# and strip the original modules for the next install step. +if [ -n "$dbgpkgdir" ]; then + dbgpkgdir="$dbgpkgdir/$package" + echo "II: dkms-build installing $package into $dbgpkgdir (debug symbols)" + install -d "$dbgpkgdir" + find "$dkms_dir/build/$dkms_package/$dkms_version/$abi_version" -name \*.ko | + while read module; do + vmodule=$( basename "$module" ) + + # Check for '.debug_info' section in order to copy module. + # Useful if debug symbols are requested but not built for + # any reason (including not yet supported by DKMS package). + # Strip module just in case even if section isn't present. + if ${CROSS_COMPILE}objdump -h -j '.debug_info' "$module" >/dev/null 2>&1 + then + echo "copying $vmodule" + cp "$module" "$dbgpkgdir" + else + echo "ignoring $vmodule (missing debug symbols)" + fi + + # Just 'strip -g' as '/usr/sbin/dkms' does. + echo "stripping $vmodule" + strip -g "$module" + done +fi + +# Install and optionally sign the modules we have built. +pkgdir="$pkgdir/$package" +echo "II: dkms-build installing $package into $pkgdir" +install -d "$pkgdir" +find "$dkms_dir/build/$dkms_package/$dkms_version/$abi_version" -name \*.ko | +while read module; do + vmodule=$( basename "$module" ) + case "$sign" in + --*) + echo "copying $vmodule" + cp "$module" "$pkgdir" + ;; + *) + echo "signing $vmodule" + $sign "$module" "$pkgdir/$vmodule" + ;; + esac +done + +find "$dkms_dir/build/$dkms_package/$dkms_version/objects" -name \*.o -print | \ +while read object +do + "$srcdir/debian/scripts/fix-filenames" "$object" "$dkms_dir" +done + +# Finally see if there is a dkms-package specific post processor present. Hand +# it the original source directory, destination package directory, the objects +# as squirreled away, and the log in case it is useful. Finally pass a formed +# signing command line in case we need to do that. +dkms_build_specific="$srcdir/$0--$package" +dkms_build_generic=$(echo "$dkms_build_specific" | sed -n -e 's/-[0-9][0-9]*[a-z]*$/-N/p') +for dkms_build in "$dkms_build_specific" "$dkms_build_generic" +do + if [ -z "$dkms_build" -o ! -e "$dkms_build" ]; then + continue + fi + echo "II: dkms-build override $(basename "$dkms_build") found, executing" + $SHELL "$dkms_build" \ + "$srcdir" \ + "$dkms_dir/build/$dkms_package/$dkms_version/objects" \ + "$log" \ + "$dkms_dir" \ + "$abi_flavour" \ + "$sign" \ + "$pkgname" \ + "$pkgdir" \ + "$dbgpkgdir" \ + "$package" \ + "$@" || exit 1 + break +done + +echo "II: dkms-build build $package complete" --- linux-5.8.0.orig/debian/scripts/dkms-build--nvidia-N +++ linux-5.8.0/debian/scripts/dkms-build--nvidia-N @@ -0,0 +1,112 @@ +#!/bin/sh + +srcdir="$1" +objects="$2" +log="$3" +shift 3 + +dkms_dir="$1" +abi_flavour="$2" +sign="$3" +pkgname="$4" +pkgdir="$5" +dbgpkgdir="$6" +package="$7" +shift 7 + +build="$( dirname "$objects" )/build" + +# Copy over the objects ready for reconstruction. The objects copy contains +# the *.o files and the *.o-ur* retpoline files to allow the kernel to track +# any retpoline sequences therein. For our purposes we only want the *.o +# files, elide the rest. +mkdir -p "$pkgdir/bits/scripts" +( + gcc_variant1=$(gcc --version | head -1 | sed -e 's/^gcc/GCC:/') + gcc_variant2=$(gcc --version | head -1 | sed -e 's/^\(gcc\) \((.*)\) \(.*\)$/\1 version \3 \2/') + cd "$objects" || exit 1 + find -name \*.o | \ + while read file + do + cp --parents "$file" "$pkgdir/bits" + "$srcdir/debian/scripts/fix-filenames" "$pkgdir/bits/$file" "$gcc_variant1" + "$srcdir/debian/scripts/fix-filenames" "$pkgdir/bits/$file" "$gcc_variant2" + done +) + +# Install the support files we need. +echo "II: copying support files ..." +for lds_src in \ + "$dkms_dir/headers/linux-headers-$abi_flavour/scripts/module.lds" \ + "/usr/src/linux-headers-$abi_flavour/scripts/module.lds" \ + "$dkms_dir/headers/linux-headers-$abi_flavour/scripts/module-common.lds" \ + "/usr/src/linux-headers-$abi_flavour/scripts/module-common.lds" +do + [ ! -f "$lds_src" ] && continue + echo "II: copying support files ... found $lds_src" + cp "$lds_src" "$pkgdir/bits/scripts" + break +done + +# Build helper scripts. +cat - <<'EOL' >"$pkgdir/bits/BUILD" +[ "$1" = "unsigned" ] && { signed_only=:; shift; } +[ "$1" = "nocheck" ] && { check_only=:; shift; } +EOL +grep /usr/bin/ld.bfd "$log" | grep -v scripts/genksyms/genksyms | sed -e "s@$build/@@g" >>"$pkgdir/bits/BUILD" +sed -e 's/.*-o *\([^ ]*\) .*/rm -f \1/g' <"$pkgdir/bits/BUILD" >"$pkgdir/bits/CLEAN" + +# As the builds contain the absolute filenames as used. Use RECONSTRUCT to +# rebuild the .ko's, sign them, pull off the signatures and then finally clean +# up again. +( + cd "$pkgdir/bits" || exit 1 + + # Add checksum check. + echo "\$check_only sha256sum -c SHA256SUMS || exit 1" >>"$pkgdir/bits/BUILD" + + # Add .ko handling to the CLEAN/BUILD dance. + for ko in "$pkgdir"/*.ko + do + ko=$(basename "$ko") + echo "\$signed_only cat '$ko' '$ko.sig' >'../$ko'" >>"$pkgdir/bits/BUILD" + echo "\$signed_only rm -f '$ko'" >>"$pkgdir/bits/BUILD" + echo "rm -f '../$ko'" >>"$pkgdir/bits/CLEAN" + done + + # Clear out anything we are not going to distribute and build unsigned .kos. + sh ./CLEAN + sh ./BUILD unsigned nocheck + + if [ "$sign" = "--custom" ]; then + # We are building for and archive custom signing upload. Keep everything. + : + elif [ "$sign" = "--lrm" ]; then + # We are in the LRM build; grab sha256 checksums and clean up. + sha256sum -b *.ko >"SHA256SUMS" + sh ./CLEAN + + else + # We are in the main kernel, put the .kos together as we will + # on the users machine, sign them, and keep just the signature. + : >"SHA256SUMS" + for ko in *.ko + do + echo "detached-signature $ko" + $sign "$ko" "$ko.signed" + length=$( stat --format %s "$ko" ) + dd if="$ko.signed" of="$ko.sig" bs=1 skip="$length" 2>/dev/null + + rm -f "$ko.signed" + # Keep a checksum of the pre-signed object so we can check it is + # built correctly in LRM. + sha256sum -b "$ko" >>"SHA256SUMS" + done + + # Clean out anything which not a signature. + mv "$pkgdir/bits/"*.sig "$pkgdir" + mv "$pkgdir/bits/SHA256SUMS" "$pkgdir" + find "$pkgdir" -name \*.sig -prune -o -name SHA256SUMS -prune -o -type f -print | xargs rm -f + find "$pkgdir" -depth -type d -print | xargs rmdir --ignore-fail-on-non-empty + fi +) || exit "$?" --- linux-5.8.0.orig/debian/scripts/dkms-build-configure--zfs +++ linux-5.8.0/debian/scripts/dkms-build-configure--zfs @@ -0,0 +1,23 @@ +#!/bin/sh + +srcdir="$1" +dkms_conf="$2" +shift 2 + +dkms_dir="$1" +abi_flavour="$2" +sign="$3" +pkgname="$4" +pkgdir="$5" +dbgpkgdir="$6" +package="$7" +shift 7 + +# ZFS debug symbols are enabled in dkms.conf via PACKAGE_CONFIG file. +if [ -n "$dbgpkgdir" ]; then + echo "enable zfs debug symbols" + pkg_cfg="$(dirname "$dkms_conf")/pkg_cfg" + echo 'ZFS_DKMS_ENABLE_DEBUGINFO=yes' >"$pkg_cfg" + echo 'ZFS_DKMS_DISABLE_STRIP=yes' >>"$pkg_cfg" + sed -i "s,^\(PACKAGE_CONFIG=\).*,\1$pkg_cfg," $dkms_conf +fi --- linux-5.8.0.orig/debian/scripts/file-downloader +++ linux-5.8.0/debian/scripts/file-downloader @@ -0,0 +1,34 @@ +#!/bin/sh + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +url="$1" + +to=$(basename "$url") + +count=0 +what='fetching' +while : +do + if [ "$count" -eq 20 ]; then + echo "EE: excessive redirects" 1>&2 + exit 1 + fi + count=$(($count+1)) + + echo "II: $what $url" + + curl --silent --fail --show-error "$url" -o "$to" -D "$to.hdr" || exit 1 + redirect=$(awk '/^Location: / {gsub(/^[[:space:]]+|[[:space:]]+$/,"",$2); print $2;}' "$to.hdr") + [ -z "$redirect" ] && break + what=' following' + + url=$(echo "$redirect" | sed -e 's@https://launchpadlibrarian.net/@http://launchpadlibrarian.net/@') + if [ "$redirect" != "$url" ]; then + echo "II: fixing $redirect" + fi +done + +exit 0 --- linux-5.8.0.orig/debian/scripts/fix-filenames.c +++ linux-5.8.0/debian/scripts/fix-filenames.c @@ -0,0 +1,80 @@ +/* + * fix-filenames: find a specified pathname prefix and remove it from + * C strings. + * + * Copyright (C) 2018 Canonical Ltd. + * Author: Andy Whitcroft + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + int rc; + char *in_name; + char *prefix; + int prefix_len; + int in_fd; + struct stat in_info; + char *in; + off_t size; + int length; + + if (argc != 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(1); + } + in_name = argv[1]; + prefix = argv[2]; + prefix_len = strlen(prefix); + + in_fd = open(in_name, O_RDWR); + if (in_fd < 0) { + perror("open input failed"); + exit(1); + } + + rc = fstat(in_fd, &in_info); + if (rc < 0) { + perror("fstat input failed"); + exit(1); + } + size = in_info.st_size; + + in = mmap((void *)0, size, PROT_READ|PROT_WRITE, MAP_SHARED, in_fd, (off_t)0); + if (!in) { + perror("mmap failed"); + exit(1); + } + + for (; size > 0; size--, in++) { + if (*in != *prefix) + continue; + if (strncmp(in, prefix, prefix_len) != 0) + continue; + /* In the case of an exact match there there is nothing to move. */ + if (in[prefix_len] == '\0') + length = 0; + /* If this is a filename, strip the leading slash. */ + else if (in[prefix_len] == '/') + length = strlen(in + prefix_len + 1) + 1; + /* Otherwise just keep the suffix. */ + else + length = strlen(in + prefix_len) + 1; + + /* + * Copy the suffix portion down to the start and clear + * the remainder of the space to 0. + */ + memmove(in, in + prefix_len + 1, length); + memset(in + length, '\0', prefix_len); + } +} --- linux-5.8.0.orig/debian/scripts/helpers/close +++ linux-5.8.0/debian/scripts/helpers/close @@ -0,0 +1,195 @@ +#!/bin/bash -eu +export LC_ALL=C.UTF-8 + +usage() { + cat << EOF +Usage: ${P:-$(basename "$0")} [-h|--help] [-d|--dry-run] [-c|--include-config] [-s|--skip-master] [-b BASE_VERSION] + +Prepare the closing release commit. Include all the changelog entries +in the current release, including the changes from the base +kernel. Also close the changelog entry and check for config changes. + +Optional arguments: + -d, --dry-run Perform a trial run with no changes made + printing the commands instead. + -c, --include-config Include config changes in the closing commit. + -s, --skip-master Skip master kernel changelog entries (used when + bootstraping new kernels). + -b BASE_VERSION For derivatives and backports, force the changelog + entries to have the base version as provided (used + when changing the base derivative version of a + backport). + -h, --help Show this help message and exit. + +Examples: + Simply close a release: + \$ cranky close + + Also include any config changes to the closing commit: + \$ cranky close -c + +EOF +} + +dry_run=0 +commit_configs=0 +skip_master_entries=0 +base_version= +while [ "$#" -gt 0 ]; do + case "$1" in + -h|--help) + usage + exit 0 + ;; + -d|--dry-run) + dry_run=1 + ;; + -c|--include-config) + commit_configs=1 + ;; + -s|--skip-master) + skip_master_entries=1 + ;; + -b) + shift + base_version="$1" + ;; + *) + usage + exit 1 + ;; + esac + shift +done + +hl() { echo -e "\e[1m$*\e[0m"; } + +run() { + # Quote args for echo or eval + local quoted=() + for token; do + quoted+=( "$(printf '%q' "$token")" ) + done + # Run + if [ "$dry_run" -eq 1 ]; then + hl "DRY RUN: ${quoted[*]}" + else + hl "${quoted[*]}" + "$@" + echo + fi +} + +# Trick shellcheck so it doesn't complain every time it's necessary to +# use `run $CHROOT`. Use `chroot_run` instead. +shopt -s expand_aliases +alias chroot_run='run ${CHROOT:-}' + +DEBIAN= +# shellcheck disable=SC1091 +. debian/debian.env + +# Check if the "$DEBIAN" directory exists. +if [ ! -d "$DEBIAN" ]; then + echo "You must run this script from the top directory of this repository." + exit 1 +fi + +CONF="$DEBIAN/etc/update.conf" +if [ -f "$CONF" ]; then + # shellcheck disable=SC1090 + . "$CONF" +fi + +# Check if changelog is open +series=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SDistribution) +if [ "$series" != 'UNRELEASED' ]; then + echo "The last entry of the changelog is already released." + exit 1 +fi + +# Update configs +if [ -d "$DEBIAN/config" ]; then + chroot_run fakeroot debian/rules clean updateconfigs + changes=$(git diff HEAD -- "./$DEBIAN/config/") + if [ "$commit_configs" -eq 0 ] && [ -n "$changes" ]; then + echo "Config has changed! please, review it and commit." + exit 1 + fi +fi + +# For normal trees the fact that the update.conf file exists means that they are rebase +# kernels. There are some special trees which started with uc20-efi, which have that +# file because they logically depend on another source but do not have the directory +# which DEBIAN_MASTER points to. +# Skip inserting parent source entries if this is not a rebase tree. +if [ ! -f "$DEBIAN/etc/update.conf" ]; then + skip_master_entries=1 +elif [ "$DEBIAN_MASTER" != "" -a ! -d "$DEBIAN_MASTER" ]; then + skip_master_entries=1 +fi +if [ $skip_master_entries == 0 ]; then + if [ "$DEBIAN_MASTER" = "" ]; then + echo "DEBIAN_MASTER should be defined either in $DEBIAN/etc/update.conf or the environment" + exit 1 + fi + + if [ -z "${base_version}" ]; then + offset=0 + # If not provided as an option, loop through each entry of the current changelog, + # searching for an entry that refers to the master version used as base + # (ie a line containing "[ Ubuntu: 4.15.0-39.42 ]"): + while true; do + changes=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SChanges -c1 -o"$offset") + if ! [ "$changes" ]; then + echo "Failed to retrieve base master version from changelog file: $DEBIAN/changelog" + exit 1 + fi + base_version=$(echo "$changes" | sed -n -r -e '/^\s.*\[ Ubuntu: ([~0-9.-]*) \]$/{s//\1/p;q}') + [ "$base_version" ] && break + offset=$(( offset + 1 )) + done + fi + + master_version=$(dpkg-parsechangelog -l${DEBIAN_MASTER}/changelog -SVersion) + if ! [ "$master_version" ]; then + echo "Failed to retrieve current master version from changelog: $DEBIAN/changelog" + exit 1 + fi + run ./debian/scripts/misc/insert-ubuntu-changes "$DEBIAN/changelog" "$base_version" "$master_version" \ + "$DEBIAN_MASTER/changelog" +fi + +# Insert local changes +run fakeroot debian/rules insertchanges + +# This should be the last step. If there were no changes to the +# changelog, there is nothing to release, so nothing to commit. +changes=$(git diff HEAD) +if [ -z "$changes" ] && [ "$dry_run" -eq 0 ]; then + hl "No changes to commit." + exit 1 +fi + +# Find the current series from previous changelog entries: +series='' +offset=0 +while true; do + series=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SDistribution -c1 -o"$offset") + if [ "$series" ] && [ "$series" != 'UNRELEASED' ]; then + break + fi + offset=$(( offset + 1 )) +done +if ! [ "$series" ]; then + echo "Failed to retrieve the package series from changelog: $DEBIAN/changelog" + exit 1 +fi +# Close the changelog +run dch --nomultimaint -c "$DEBIAN/changelog" -r -D "$series" '' + +# Commit changes +package=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SSource) +prefix="Ubuntu$(echo "$package" | sed -r -e 's/linux(-?)/\1/')-" +version=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SVersion) +run git commit -sam "UBUNTU: $prefix$version" --- linux-5.8.0.orig/debian/scripts/helpers/open +++ linux-5.8.0/debian/scripts/helpers/open @@ -0,0 +1,219 @@ +#!/bin/bash -eu +export LC_ALL=C.UTF-8 + +usage() { + cat << EOF +Usage: ${P:-$(basename "$0")} [-h|--help] [-d|--dry-run] [-r|--reuse-abi] + +Create a "start new release" commit. The new commit will contain ABI +changes and any customization required by backport kernels. + +Optional arguments: + -d, --dry-run Perform a trial run with no changes made + printing the commands instead. + -r, --reuse-abi Do not download the previous release ABI files + for the new release and just rename the + current ABI directory. This might cause the + build to fail if the module list or the + retpoline information has changed. + -h, --help Show this help message and exit. + +Environment variable: + CRANKY_MAILENFORCE Regular expression used to validate \$DEBEMAIL. If not + set, it defaults to "@canonical.com$". + +Examples: + Simply start a new release (that will fetch the ABI files from the + archieve repositories): + \$ cranky open + + Start a new release re-using the ABI files already present in the + tree: + \$ cranky open --reuse-abi + +EOF +} + +dry_run=0 +reuse_abi=0 +while [ "$#" -gt 0 ]; do + case "$1" in + -h|--help) + usage + exit 0 + ;; + -d|--dry-run) + dry_run=1 + ;; + -r|--reuse-abi) + reuse_abi=1 + ;; + *) + usage + exit 1 + ;; + esac + shift +done + +hl() { echo -e "\e[1m$*\e[0m"; } + +run() { + # Quote args for echo or eval + local quoted=() + for token; do + quoted+=("$(printf '%q' "$token")") + done + # Run + if [ "$dry_run" -eq 1 ]; then + hl "DRY RUN: ${quoted[*]}" + else + hl "${quoted[*]}" + "$@" + echo + fi +} + +# Trick shellcheck so it doesn't complain every time it's necessary to +# use `run $CHROOT`. Use `chroot_run` instead. +shopt -s expand_aliases +alias chroot_run='run ${CHROOT:-}' + +# Check DEBEMAIL (used to create the new changelog stanza): +DEBEMAIL="${DEBEMAIL:-}" +CRANKY_MAILENFORCE="${CRANKY_MAILENFORCE:-@canonical.com\$}" +if [ -z "$DEBEMAIL" ] || ! echo "$DEBEMAIL" | grep -qE "$CRANKY_MAILENFORCE"; then + echo "DEBEMAIL is unset, or does not contain \"$CRANKY_MAILENFORCE\": $DEBEMAIL" >&2 + exit 1 +fi + +# Requires a git repo +if [ ! -e .git ]; then + echo "Not a git repository!" >&2 + exit 1 +fi + +# Check the debian directory +if [ ! -e debian/debian.env ]; then + echo "Cannot find debian/debian.env!" >&2 + exit 1 +fi +DEBIAN= +# shellcheck disable=SC1091 +. debian/debian.env +if [ -z "$DEBIAN" ] || [ ! -d "$DEBIAN" ]; then + echo "Invalid DEBIAN directory: $DEBIAN" >&2 + exit 1 +fi + +# Abort if changes or untracked files are found in the debian +# directory (ie, in "debian.master/"). cranky open is expected to +# change and commit files in this directory. +if ! git diff-index --quiet HEAD -- "$DEBIAN/" || \ + [ -n "$(git ls-files --others -- "$DEBIAN/")" ]; then + echo "\"$DEBIAN/\" is not clean!" >&2 + exit 1 +fi + +# Check changelog +series=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SDistribution) +if [ "$series" == 'UNRELEASED' ]; then + echo "$DEBIAN/changelog is not closed!" >&2 + exit 1 +fi + +# Load the info about derivative +BACKPORT_SUFFIX= +derivative_conf="$DEBIAN/etc/update.conf" +if [ -f "$derivative_conf" ]; then + # shellcheck disable=SC1090 + . "$derivative_conf" +fi + +# Run the update script used for backport kernels +if [ -n "$BACKPORT_SUFFIX" ]; then + update_from_master_script="$DEBIAN/scripts/helpers/copy-files" + if [ ! -x "$update_from_master_script" ]; then + echo "Backport kernel is missing the"\ + "\"$update_from_master_script\" script!"; + exit 1 + fi + # The tree should be clean at this point, since that is enforced at + # the beginning of the script. Because of that, it's safe to git add + # "$DEBIAN/". + run env CHROOT="$CHROOT" "$update_from_master_script" + run git add "$DEBIAN" + # Update configs after the necessary files were copied from + # the base kernel. It's not expected that `fdr updateconfigs` + # will fail at this point, because the base kernel's + # configuration and annotations file are expected to be in a + # correct state. `fdr updateconfigs` should only change a few + # configuration options that depend on the userspace tooling + # version, such as gcc. + if ! chroot_run fakeroot debian/rules clean updateconfigs; then + echo "Failed to update configs. Please review the previous" \ + "rebase operation and \"$update_from_master_script\""; + exit 1 + fi + run git add "$DEBIAN/config" +fi + +# fdr clean should be called after copy-files, that way we can git add +# any changes in "debian./" (`fdr clean` in trusty will +# usually generate changes in "debian./). Also, fdr clean +# removes an ABI that matches the current version in the +# changelog. Since `fdr startnewrelease` requires `fdr clean`, we need +# to call it before getabis. +chroot_run fakeroot debian/rules clean + +# Update ABI +if [ -d "$DEBIAN/abi" ]; then + # The new ABI directory should use the current version in the + # changelog since `fdr startnewrelease` was't called at this + # point yet: + new=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SVersion) + + if [ "$reuse_abi" -ne 0 ]; then + # Get the old ABI directory: + old=$(find "$DEBIAN/abi/" -mindepth 1 -maxdepth 1 -type d | \ + grep -P '/abi/[0-9]+\.[0-9]+\.[0-9]+-[0-9]+\.[0-9]+') + if [ -z "${old}" ] ; then + echo "Failed to find the previous ABI directory." \ + "Please check \"$DEBIAN/abi/\"!" >&2 + exit 1 + elif [ "$(echo "$old" | wc -l)" -gt 1 ]; then + echo "Failed to rename the current ABI directory." \ + "Multiple directories found. Please check \"$DEBIAN/abi/\"!" >&2 + exit 1 + fi + new="$DEBIAN/abi/$new" + # Rename the ABI directory + run git mv "$old" "$new" + else + # Call in-tree getabis: + # Use the single argument form since getabis is now + # updated by cranky fix. + run debian/scripts/misc/getabis "${new}" + # getabis already handles the necessary git add/rm calls. + fi +fi + +# Create the new changelog entry: +run fakeroot debian/rules startnewrelease +run git add "$DEBIAN/changelog" + +# Create the commit +run git commit -s -F debian/commit-templates/newrelease + +# Perform a basic ABI check +if [ "$dry_run" -eq 0 ]; then + version=$(dpkg-parsechangelog -l"$DEBIAN/changelog" -SVersion -c1 -o1) + abi_dir="$DEBIAN/abi/$version" + [ ! -d "$abi_dir" ] && hl "Warning: ABI directory is missing: $abi_dir" +fi + +# Mimic maint-startnewrelease +[ "$dry_run" -eq 0 ] && \ + hl "\n***** Now please inspect the commit before pushing *****" + +exit 0 --- linux-5.8.0.orig/debian/scripts/helpers/rebase +++ linux-5.8.0/debian/scripts/helpers/rebase @@ -0,0 +1,141 @@ +#!/bin/bash -e +# +# This script is intended as a helper when rebasing from its master branch. +# + +LOCAL_BRANCH= +RELEASE_REPO= +SOURCE_RELEASE_BRANCH= + +function out() +{ + local rc="${?}" + trap - EXIT INT TERM HUP + [ "${rc}" -eq 0 ] || echo "Error: Script failed" + exit "${rc}" +} + +trap out EXIT INT TERM HUP + +if [ -f debian/debian.env ]; then + # shellcheck disable=SC1091 + . debian/debian.env +fi + +if [ ! -d "${DEBIAN}" ]; then + echo You must run this script from the top directory of this repository. + exit 1 +fi + +CONF="${DEBIAN}"/etc/update.conf +if [ -f "${CONF}" ]; then + # shellcheck disable=SC1090 + . "${CONF}" +fi + +usage="$0 [-r RELEASE_REPO] [ -b REMOTE_BRANCH ] [-l LOCAL_BRANCH] [-d]"$'\n\n' +usage+="-r RELEASE_REPO Git repository to fetch the reference branch from."$'\n' +usage+="-b REMOTE_BRANCH Remote branch to fetch from."$'\n' +usage+="-l LOCAL_BRANCH Use LOCAL_BRANCH as the reference branch."$'\n' +usage+="-d Dry run (do not rebase)." + +# +# command line options: +# [-r RELEASE_REPO] - override default git repository. +# [-b REMOTE_BRANCH] - override default remote branch. +# [-l LOCAL_BRANCH] - do not fetch from remote repo, use a local branch. + +while getopts "r:b:l:d" opt; do + case $opt in + r ) RELEASE_REPO="$OPTARG" ;; + b ) SOURCE_RELEASE_BRANCH="$OPTARG" ;; + l ) LOCAL_BRANCH="$OPTARG" ;; + d ) DRY_RUN=1 ;; + \? ) echo "usage: ${usage}"; exit ;; + esac +done +shift $((OPTIND - 1)) + +# For normal trees the fact that the update.conf file exists means that they are rebase +# kernels. There are some special trees which started with uc20-efi, which have that +# file because they logically depend on another source but do not have the directory +# which DEBIAN_MASTER points to. +IS_REBASE_KERNEL=true +if [ ! -f "$DEBIAN/etc/update.conf" ]; then + IS_REBASE_KERNEL=false +elif [ "$DEBIAN_MASTER" != "" -a ! -d "$DEBIAN_MASTER" ]; then + IS_REBASE_KERNEL=false +fi +if ! $IS_REBASE_KERNEL; then + echo "This is not a rebase kernel, no rebase should be needed, please report if otherwise" + exit 0 +fi + +if [ "$DEBIAN_MASTER" = "" ]; then + echo "DEBIAN_MASTER should be defined either in ${DEBIAN}/etc/update.conf or the environment" + exit 1 +fi + +if [ -z "${LOCAL_BRANCH}" ]; then + if [ -z "${RELEASE_REPO}" ] || [ -z "${SOURCE_RELEASE_BRANCH}" ]; then + echo Missing update.conf or missing parameters for remote repo and branch. + exit 1 + fi + # + # Fetch the upstream branch. + # + git fetch "${RELEASE_REPO}" + git fetch "${RELEASE_REPO}" "${SOURCE_RELEASE_BRANCH}" + LOCAL_BRANCH=FETCH_HEAD +fi + +# +# Find the most recent tag on given upstream branch, then +# rebase against it. This avoids the case where there have been some +# commits since the last official tag. +# +MASTER_COMMIT=$(git log --pretty=one "${LOCAL_BRANCH}" "${DEBIAN_MASTER}" | \ + awk ' + /Ubuntu-/ { + if (match($0, /UBUNTU: Ubuntu-/)) { + print $1 + exit + } + } + ' +) +# +# Find the current merge point where current branch was based. +# +BASE_COMMIT=$(git log --pretty=one "${DEBIAN_MASTER}" | \ + awk ' + /Ubuntu-/ { + if (match($0, /UBUNTU: Ubuntu-/)) { + print $1 + exit + } + } + ' +) +if [ "${MASTER_COMMIT}" = "${BASE_COMMIT}" ]; then + echo Already up to date. + exit 0 +fi + +if [ -z "${MASTER_COMMIT}" ] || [ -z "${BASE_COMMIT}" ]; then + echo "Could not find either master or base commit." + echo "master commit: ${MASTER_COMMIT}" + echo "base commit: ${BASE_COMMIT}" + exit 1 +fi + +MASTER_VERSION=$(git show --format=%s -s "$MASTER_COMMIT" | sed 's/^UBUNTU: //') +BASE_VERSION=$(git show --format=%s -s "$BASE_COMMIT" | sed 's/^UBUNTU: //') +echo "Rebase still needed between $BASE_VERSION and $MASTER_VERSION." + +if [ "${DRY_RUN}" ]; then + echo "DRY RUN: git rebase --onto ${MASTER_COMMIT} ${BASE_COMMIT}" + exit 0 +fi + +git rebase --onto "${MASTER_COMMIT}" "${BASE_COMMIT}" --- linux-5.8.0.orig/debian/scripts/link-headers +++ linux-5.8.0/debian/scripts/link-headers @@ -0,0 +1,42 @@ +#!/bin/bash -e + +. debian/debian.env + +hdrdir="$1" +symdir="$2" +flavour="$3" + +echo "Symlinking and copying headers for $flavour..." + +excludes="( -path ./debian -prune -o -path ./${DEBIAN} -prune -o -path ./.git ) -prune -o" + +( +find . $excludes -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) -print +find ./include ./scripts -name .gitignore -prune -o -type f -print +find ./include -mindepth 1 -maxdepth 1 $excludes -type d -print +) | ( +while read file; do + dir=$file + lastdir=$file + + if [ -e "$hdrdir/$file" -o -L "$hdrdir/$file" ]; then + continue + fi + + while [ ! -e "$hdrdir/$dir" -a ! -L "$hdrdir/$dir" ]; do + lastdir=$dir + dir=`dirname $dir` + done + # If the last item to exist is a symlink we assume all is good + if [ ! -L "$hdrdir/$dir" ]; then + # Turns things like "./foo" into "../" + deref="`echo -n $lastdir | sed -e 's/^\.//' -e's,/[^/]*,../,g'`" + item="`echo -n $lastdir | sed -e 's/^\.\///'`" + ln -s $deref$symdir/$item $hdrdir/$item + fi +done +) + +exit --- linux-5.8.0.orig/debian/scripts/misc/final-checks +++ linux-5.8.0/debian/scripts/misc/final-checks @@ -0,0 +1,68 @@ +#!/bin/bash + +debian="$1" +abi="$2" + +. "$debian/etc/kernelconfig" +archs=$( awk '/^Architecture:/ { $1=""; for (i=1; i<=NF; i++) { if ($i != "all") { print $i }}}' debian/control | sort -u) + +fail=0 + +failure() +{ + echo "EE: $@" 1>&2 + fail=1 +} + +abi_check() +{ + local abidir="$1" + local arch="$2" + local flavour="$3" + + local abidir="$abidir/$arch" + + if [ ! -f "$abidir/$flavour" -a \ + ! -f "$abidir/$flavour.ignore" -a \ + ! -f "$abidir/ignore" ] + then + failure "$arch/$flavour ABI symbol file missing" + fi + + if [ ! -f "$abidir/$flavour.modules" -a \ + ! -f "$abidir/$flavour.ignore.modules" -a \ + ! -f "$abidir/ignore.modules" ] + then + failure "$arch/$flavour ABI modules file missing" + fi + + if [ ! -f "$abidir/$flavour.retpoline" -a \ + ! -f "$abidir/$flavour.ignore.retpoline" -a \ + ! -f "$abidir/ignore.retpoline" ] + then + failure "$arch/$flavour ABI retpoline file missing" + fi +} + +for arch in $archs +do + image_pkg=$(awk -F '\\s*=\\s*' '$1 == "do_flavour_image_package" { print $2 }' $debian/rules.d/$arch.mk) + if [ "$image_pkg" = "false" ]; then + continue + fi + if [ ! -f "$debian/rules.d/$arch.mk" ]; then + continue + fi + flavours=$( + awk '/^\s*flavours\s*=/{ + sub(/^\s*flavours\s*=\s*/, ""); + print + }' "$debian/rules.d/$arch.mk") + for flavour in $flavours + do + flavour=$(echo "$flavour" | sed -e 's@.*/config.flavour.@@') + abi_check "$debian/abi/$abi" "$arch" "$flavour" + done +done + +exit "$fail" --- linux-5.8.0.orig/debian/scripts/misc/find-missing-sauce.sh +++ linux-5.8.0/debian/scripts/misc/find-missing-sauce.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Find the 'UBUNTU: SAUCE:' patches that have been dropped from +# the previous release. +# +PREV_REL=focal +PREV_REPO=git://kernel.ubuntu.com/ubuntu/ubuntu-${PREV_REL}.git + +git fetch ${PREV_REPO} master-next +git log --pretty=oneline FETCH_HEAD|grep SAUCE|while read c m;do echo $m;done |sort > $$.prev-rel +git log --pretty=oneline |grep SAUCE|while read c m;do echo $m;done |sort > $$.curr-rel + +diff -u $$.prev-rel $$.curr-rel |grep "^-" +rm -f $$.prev-rel $$.curr-rel + --- linux-5.8.0.orig/debian/scripts/misc/find-obsolete-firmware +++ linux-5.8.0/debian/scripts/misc/find-obsolete-firmware @@ -0,0 +1,91 @@ +#!/bin/bash +# +# Find all duplicate or obsolete firmware that is being carried +# in the kernel firmware directory. Compare these files against +# the linux-firmware package for the approriate release. For example, +# assuming this is raring, then compare the kernel firmware files +# against the raring branch of linux-firmware. +# +# Example: $0 ~/ubuntu/linux-firmware-raring + +USEAGE="$0 LINUX-FIRMWARE" + +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +if [ "$1" = "" ] +then + echo $USEAGE + exit 1 +fi +FW="$1" + +if [ ! -f $FW/WHENCE ] +then + echo Bogus linux-firmware directory + exit 1 +fi +if ! egrep -q "^firmware:" $FWINFO +then + echo Bogus firmware info file + exit 1 +fi + +# +# Prepare the tree and make firmware. +# +TEE="tee -a" +LO=`pwd`/firmware.txt +LF=`pwd`/lib/firmware +rm -rf debian/build $LF $LO +fakeroot debian/rules clean prepare-generic +cp debian/build/build-generic/.config . +mkdir -p $LF +make firmware_install INSTALL_MOD_PATH=`pwd` + +(cd $LF +find . -type f | while read f +do + BN="`basename $f`" + + if ! grep -q $BN $FWINFO + then + echo "Unused firmware: $f" | $TEE $LO + else + if [ -f $FW/$f ] + then + if ! cmp $FW/$f $f + then + echo "$f differs" | $TEE $LO + else + echo "$f is duplicated" | $TEE $LO + fi + else + echo "$f does not exist in $FW" | $TEE $LO + fi + fi +done) + +# +# Check for firmware files referenced by the kernel +# that do not exist in either location. +# +cat $FWINFO | while read fwi f +do + if [ -s lib/firmware/$f ] || [ -s $FW/$f ] + then + continue + else + echo "Missing firmware $f" | $TEE $LO + fi +done + --- linux-5.8.0.orig/debian/scripts/misc/fw-to-ihex.sh +++ linux-5.8.0/debian/scripts/misc/fw-to-ihex.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +F=$1 +if [ "$F" = "" ] +then + echo You must supply a firmware file. + exit 1 +fi + +echo "unsigned char d[] = {" > $F.c +hexdump -v -e '"\t" 8/1 "0x%02x, " "\n"' $F >> $F.c +echo "};" >> $F.c +sed -i 's/0x .*$//' $F.c + +O="`dirname $F`/`basename $F`.o" +gcc -o $O -c $F.c +objcopy -Oihex $F.o $F.ihex + --- linux-5.8.0.orig/debian/scripts/misc/gen-auto-reconstruct +++ linux-5.8.0/debian/scripts/misc/gen-auto-reconstruct @@ -0,0 +1,84 @@ +#!/bin/bash + +if [ "$#" -ne 3 ]; then + echo "Usage: $0 | " 1>&2 + exit 1 +fi +tag="$1" +reconstruct="$2" +options="$3" + +case "$tag" in +v*) ;; +*) tag="v${tag%.*}" ;; +esac + +# Validate the tag. +count=$( git tag -l "$tag" | wc -l ) +if [ "$count" != 1 ]; then + echo "$0: $tag: tag invalid" 1>&2 + exit 1 +fi + +#git ls-tree -r --full-tree HEAD | grep ^120 | \ +#while read mode type blobid name + +( + # Identify all new symlinks since the proffered tag. + echo "# Recreate any symlinks created since the orig." + git diff "$tag.." --raw --no-renames | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \ + while read name + do + link=$( readlink "$name" ) + + echo "[ ! -L '$name' ] && ln -sf '$link' '$name'" + done + + # Identify all removed files since the proffered tag. + echo "# Remove any files deleted from the orig." + git diff "$tag.." --raw --no-renames | awk '(/^:/ && $5 == "D") { print $NF }' | \ + while read name + do + echo "rm -f '$name'" + done + + # Identify files with execute permissions added since the proffered tag. + git diff "$tag.." --raw --no-renames | awk -F '[: \t]' '{print $2, $3, $NF }' | \ + while IFS=" " read old new name + do + old=$( printf "0%s" $old ) + new=$( printf "0%s" $new ) + changed=$(( (old ^ new) & 0111 )) + if [ "$changed" -ne 0 ]; then + echo "chmod +x '$name'" + fi + done + + # All done, make sure this does not complete in error. + echo "exit 0" +) >"$reconstruct" + +( + # Identify all new symlinks since the proffered tag. + echo "# Ignore any symlinks created since the orig which are rebuilt by reconstruct." + git diff "$tag.." --raw --no-renames | awk '(/^:000000 120000/ && $5 == "A") { print $NF }' | \ + while read name + do + echo "extend-diff-ignore=^$name\$" + done +) >"$options.update" + + +head='^## autoreconstruct -- begin$' +foot='^## autoreconstruct -- end$' +sed -i -e " + /$head/,/$foot/{ + /$head/{ + p; + r $options.update + }; + /$foot/p; + d + } +" "$options" +rm -f "$options.update" --- linux-5.8.0.orig/debian/scripts/misc/get-firmware +++ linux-5.8.0/debian/scripts/misc/get-firmware @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Find all files in linux-firmware that are new or different since the previous release +# and copy them into the kernel firmware directory. You should only do this on the +# backport branch since it would be redundant on the released kernel. It assumed you've +# unpacked linux-firmware from each release into separate directories. +# +# Example: $0 ~/ubuntu/linux-firmware-precise ~/ubuntu/linux-firmware-quantal + +if [ "$1" = "" ] || [ "$2" = "" ] || [ ! -f $1/WHENCE ] || [ ! -f $2/WHENCE ] +then + echo You must supply 2 firmware directories. + exit 1 +fi + +if [ ! -f debian/debian.env ] +then + echo You must run this script from the root of the repo + exit 1 +fi +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +CDIR=`pwd` +OFW=$1 +NFW=$2 + +cd $NFW +# +# Find all files in $NFW that are new or different from $1 +# +(find . -type f | egrep -v "debian|git|LICEN|WHEN|READ|Make|configure" | sed 's;\./;;' | \ +while read f +do + if grep -q $f $FWINFO + then + if [ ! -f $OFW/$f ] + then + echo $f + elif ! cmp $f $OFW/$f > /dev/null + then + echo $f + fi + fi +done) |\ +while read f +do + mkdir -p $CDIR/firmware/`dirname $f` + if [ ! -f $CDIR/firmware/`dirname $f`/`basename $f`.ihex ] + then + cp -v $f $CDIR/firmware/`dirname $f` + fi +done --- linux-5.8.0.orig/debian/scripts/misc/getabis +++ linux-5.8.0/debian/scripts/misc/getabis @@ -0,0 +1,194 @@ +#!/bin/bash + +export LC_ALL=C.UTF-8 + +if [ "$#" = "1" ]; then + set - $(echo "$1" | sed -e 's/-/ /') +fi +if [ "$#" != "2" ]; then + echo "Usage: $0 " 1>&2 + echo "Usage: $0 " 1>&2 + exit 1 +fi + +if [ "$DEBIAN" = "" ]; then + . debian/debian.env +fi + +ver=$1 +revision=$2 +abi=$(echo $revision | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$/\1/') + +verabi=$ver-$abi +verfull=$ver-$revision + +WGET="wget --tries=1 --timeout=10 --quiet -c" + +abidir="`pwd`/$DEBIAN/abi/$verfull" +tmpdir="`pwd`/abi-tmp-$verfull" +origdir="`pwd`" +fwinfo=$abidir/fwinfo + +test -d $tmpdir || mkdir $tmpdir + +package_prefixes() { + : # no longer used ... +} + +getall() { + arch=$1 + shift + + mkdir -p $abidir/$arch + + for sub in $@; do + if [ -f $abidir/$arch/$sub ]; then + echo "Existing $sub($arch)..." + continue + fi + echo "Fetching $sub($arch)..." + getall_set "linux-buildinfo" "$arch" "$sub" || \ + getall_set "linux-image-unsigned linux-modules linux-modules-extra" "$arch" "$sub" || \ + getall_set "linux-image-unsigned linux-modules" "$arch" "$sub" || \ + getall_set "linux-image linux-modules linux-modules-extra" "$arch" "$sub" || \ + getall_set "linux-image linux-modules" "$arch" "$sub" || \ + getall_set "linux-image linux-image-extra" "$arch" "$sub" || \ + getall_set "linux-image" "$arch" "$sub" || \ + { echo "FAILED"; exit 1; } + done +} +getall_set() +{ + prefixes="$1" + arch="$2" + sub="$3" + ( + echo -n " set:" + filenames="" + cd $tmpdir + found=1 + for prefix in $prefixes + do + echo -n " $prefix=" + if [ "$found" = 0 ]; then + echo -n "-" + continue + fi + filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb + for r in "${repo_list[@]}" + do + if ! [ -f $filename ]; then + $WGET $r/$filename + rc="$?" + # If this was not successful or a valid error + # return from the server all bets are off, bail. + [ "$rc" != 0 -a "$rc" != 8 ] && return 2 + fi + if [ -f $filename ]; then + echo -n "y" + filenames="$filenames $filename" + break + fi + done + if [ ! -f "$filename" ]; then + echo -n "n" + found=0 + fi + done + echo "" + if [ "$found" = 0 ]; then + return 1 + fi + echo " extracting..." + for filename in $filenames + do + dpkg-deb --extract $filename tmp + done + # FORM 1: linux-image et al extracted here. + if [ -d tmp/boot ]; then + echo " images..." + find tmp -name "*.ko" | while read f; do + modinfo $f | grep ^firmware >> $fwinfo + done + if [ -f tmp/boot/abi-* ]; then + mv tmp/boot/abi-* $abidir/$arch/$sub + else + echo " NO ABI FILE" + fi + if [ -f tmp/boot/retpoline-* ]; then + mv tmp/boot/retpoline-* $abidir/$arch/$sub.retpoline + else + echo " NO RETPOLINE FILE" + fi + (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \ + $abidir/$arch/$sub.modules + ( + cd tmp; + # Prevent exposing some errors when called by python scripts. SIGPIPE seems to get + # exposed when using the `find ...` form of the command. + ko=$(find lib/modules/$verabi-$sub/kernel \ + -name '*.ko' | head -1) + readelf -p .comment "$ko" | gawk ' + ($1 == "[") { + printf("%s", $3); + for (n=4; n<=NF; n++) { + printf(" %s", $n); + } + print "" + }' | sort -u >$abidir/$arch/$sub.compiler + version=`cat $abidir/$arch/$sub.compiler` + echo " $version" + ) + # FORM 2: moduleinfo packages + # cranky fix -- modinfo supported + else + echo " buildinfo..." + base="tmp/usr/lib/linux/${verabi}-${sub}" + mv "$base/abi" "$abidir/$arch/$sub" + for comp in 'modules' 'retpoline' 'compiler' + do + mv "$base/$comp" "$abidir/$arch/$sub.$comp" + done + cat "$base/fwinfo" >>"$fwinfo" + fi + rm -rf tmp $filenames + echo " done" + ) + rc="$?" + if [ "$rc" = 2 ]; then + echo "ERROR: downloads are reporting network failures" 1>&2 + exit 1 + fi + return "$rc" +} + +# MAIN + +# Setup abi directory +mkdir -p $abidir +echo $abi > $abidir/abiname + +# NOTE: The flavours are hardcoded, because they may have changed from the +# current build. + +. $DEBIAN/etc/getabis + +# Extract compiler source package version from e.g.: +# GCC: (Ubuntu/Linaro 4.8.2-19ubuntu1) 4.8.2 +compilers=`sed 's/^.*(.* \(.*\)).*$/\1/' $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistent compiler versions detected:" 1>&2 + sort -u $abidir/*/*.compiler | sed 's/^/WARNING: /' 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir + +# If this is running in a git repo, add the new ABI directory, remove the old +if [ -d ".git" ]; then + git add $abidir + find $DEBIAN/abi/* -maxdepth 0 -type d | grep -v $verfull | while read f; do git rm -r -f $f;done +fi --- linux-5.8.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-5.8.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,166 @@ +#!/usr/bin/python3 + +import sys + +import codecs +import urllib.request +import json + +import textwrap + +sys.stdin = codecs.getreader("utf-8")(sys.stdin.detach()) +sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + +entries = [] + + +def add_entry(entry): + if entry and 'ignore' not in entry: + combo = [] + for bug in set(entry.get('bugs', [])): + combo.append(bug) + for cve in set(entry.get('cves', [])): + combo.append(cve) + combo = sorted(combo) + + if len(combo) == 0: + if entry.get('subject', "").startswith('UBUNTU'): + combo = '__packaging__' + else: + combo = '__mainline__' + else: + if entry.get('subject', "") == 'UBUNTU: link-to-tracker: update tracking bug': + # Construct a key with '__trackingbug__' on the first position + # and the tracking bug number afterwards + combo.insert(0, '__trackingbug__') + # Tracking bug goes at the top + keys.insert(0, combo) + else: + if combo not in keys: + keys.append(combo) + + entry['key'] = combo + entries.append(entry) + + +# Suck up the git log output and extract the information we need. +keys = [] +entry = None +subject_wait = False +for line in sys.stdin: + if line.startswith('commit '): + add_entry(entry) + entry = {} + subject_wait = True + + elif line.startswith('Author: '): + bits = line.strip().split(maxsplit=1) + entry['author'] = bits[1] + + elif subject_wait and line.startswith(' '): + subject_wait = False + entry['subject'] = line.strip() + + elif line.startswith(' BugLink: '): + bits = line.strip().split(maxsplit=2) + if len(bits) > 2: + # There is text after the URL, so use that (after stripping the + # enclosing characters) + entry.setdefault('bugs', []).append(bits[2][1:-1]) + elif 'launchpad.net' in bits[1]: + # Extract the bug number from the launchpad URL + bits = bits[1].split('/') + entry.setdefault('bugs', []).append(bits[-1]) + + elif line.startswith(' CVE-'): + entry.setdefault('cves', []).append(line.strip()) + + elif line.startswith(' Ignore:'): + entry['ignore'] = True + + elif line.startswith(' Properties:'): + for prop in line.strip().split()[1:]: + if prop in ('ignore', 'no-changelog'): + entry['ignore'] = True + +add_entry(entry) + +entries.reverse() + +# Go through the entries and clear out authors for upstream commits. +for entry in entries: + if entry['subject'].startswith('UBUNTU:'): + entry['subject'] = entry['subject'][7:].strip() + else: + del entry['author'] + +# Lump everything without a bug at the bottom. +keys.append('__packaging__') +keys.append('__mainline__') + +emit_nl = False +for key in keys: + if key == '__packaging__': + title_set = ['Miscellaneous Ubuntu changes'] + elif key == '__mainline__': + title_set = ['Miscellaneous upstream changes'] + else: + title_set = [] + for bug in key: + if bug.startswith('CVE-'): + title_set.append(bug) + elif bug == '__trackingbug__': + # Look for the tracking bug number on the second + # position of the key + continue + elif bug.isdigit(): + # Assume that it is an LP bug number if 'bug' contains only digits + bug_info = None + + try: + # urllib.request.urlcleanup() + request = urllib.request.Request('https://api.launchpad.net/devel/bugs/' + bug) + request.add_header('Cache-Control', 'max-age=0') + with urllib.request.urlopen(request) as response: + data = response.read() + bug_info = json.loads(data.decode('utf-8')) + + title = bug_info['title'] + if 'description' in bug_info: + for line in bug_info['description'].split('\n'): + if line.startswith('Kernel-Description:'): + title = line.split(' ', 1)[1] + + except urllib.error.HTTPError: + title = 'INVALID or PRIVATE BUG' + + title += ' (LP###' + bug + ')' + title_set.append(title) + else: + # Finally treat 'bug' itself as the title + title_set.append(bug) + + emit_title = True + for entry in entries: + if entry['key'] != key: + continue + + if emit_title: + if emit_nl: + print('') + emit_nl = True + + title_lines = textwrap.wrap('#// '.join(title_set), 76) + print(' * ' + title_lines[0].replace('LP###', 'LP: #').replace('#//', ' //')) + for line in title_lines[1:]: + line = line.replace('LP###', 'LP: #').replace('#//', ' //') + print(' ' + line) + + emit_title = False + + if key[0] != '__trackingbug__': + title_lines = textwrap.wrap(entry['subject'], 76) + print(' - ' + title_lines[0]) + for line in title_lines[1:]: + line = line.replace('LP###', 'LP: #') + print(' ' + line) --- linux-5.8.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-5.8.0/debian/scripts/misc/insert-changes.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl -w + +my $debian; +$droot = $ARGV[0] if (defined $ARGV[0]); +$droot = 'debian' if (!defined $droot); +$debian = $ARGV[1] if (defined $ARGV[1]); +$debian = 'debian.master' if (!defined $debian); + +system("make -s -f $droot/rules printchanges > $debian/changes"); + +open(CHANGELOG, "< $debian/changelog") or die "Cannot open changelog"; +open(CHANGES, "< $debian/changes") or die "Cannot open new changes"; +open(NEW, "> $debian/changelog.new") or die "Cannot open new changelog"; + +$printed = 0; +my $skip_newline = 0; + +while () { + if (/^ CHANGELOG: /) { + next if $printed; + + $skip_newline = 1; + while () { + $skip_newline = 0; + print NEW; + } + + $printed = 1; + } else { + if (/^$/ && $skip_newline == 1) { + $skip_newline = 0; + next; + } + print NEW; + } +} + +close(NEW); +close(CHANGES); +close(CHANGELOG); + +rename("$debian/changelog.new", "$debian/changelog"); +unlink("$debian/changes"); --- linux-5.8.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-5.8.0/debian/scripts/misc/insert-mainline-changes @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + warn "Usage: $0 \n"; + die " $0 debian.master/changelog v3.2.3 v3.2.2..v3.2.3\n"; +} +my ($changelog, $to, $range) = @ARGV; + +my @changes = (); + +push(@changes, "\n"); +push(@changes, " [ Upstream Kernel Changes ]\n\n"); +push(@changes, " * rebase to $to\n"); + +open(LOG, "git log '$range'|") || die "$0: git log failed: - $!\n"; +while () { + if (m@BugLink: .*launchpad.net/.*/([0-9]+)\s$@) { + push(@changes, " - LP: #$1\n"); + } +} +close(LOG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-5.8.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-5.8.0/debian/scripts/misc/insert-ubuntu-changes @@ -0,0 +1,83 @@ +#!/usr/bin/perl + +if ($#ARGV != 2 && $#ARGV != 3) { + die "Usage: $0 []\n"; +} +if ($#ARGV == 2) { + push(@ARGV, "debian.master/changelog") +} +my ($changelog, $end, $start, $source_changelog) = @ARGV; + +$end =~ s/^\D+//; +$start =~ s/^\D+//; + +sub version_cmp($$) { + my @a = split(/[\.-]+/, $_[0]); + my @b = split(/[\.-]+/, $_[1]); + for (my $i = 1;; $i++) { + if (!defined $a[$i]) { + if (!defined $b[$i]) { + return 0; + } + return -1; + } + if (!defined $b[$i]) { + return 1; + } + if ($a[$i] < $b[$i]) { + return -1; + } + if ($a[$i] > $b[$i]) { + return 1; + } + } +} + +my @changes = (); +my $output = 0; +open(CHG, "<$source_changelog") || + open(CHG, ") { + if (/^\S+\s+\((.*)\)/) { + if (version_cmp($1, $end) <= 0) { + last; + } + if ($1 eq $start) { + $output = 1; + } + if ($output) { + push(@changes, "\n [ Ubuntu: $1 ]\n\n"); + next; + } + } + next if ($output == 0); + + next if (/^\s*$/); + next if (/^\s--/); + next if (/^\s\s[^\*\s]/); + + push(@changes, $_); +} +close(CHG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); --- linux-5.8.0.orig/debian/scripts/misc/kernel-wedge-arch.pl +++ linux-5.8.0/debian/scripts/misc/kernel-wedge-arch.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl +# +# kernel-wedge-arch.pl -- select only specifiers for the supplied arch. +# +use strict; + +require Dpkg::Control; +require Dpkg::Deps; + +my $fh = \*STDIN; + +my @entries; + +my $wanted = $ARGV[0]; + +my $entry; +while (!eof($fh)) { + $entry = Dpkg::Control->new(); + $entry->parse($fh, '???'); + + if ($entry->{'Architecture'} eq $wanted) { + print("\n" . $entry); + } +} + +close($fh); --- linux-5.8.0.orig/debian/scripts/misc/kernelconfig +++ linux-5.8.0/debian/scripts/misc/kernelconfig @@ -0,0 +1,207 @@ +#!/bin/bash + +. debian/debian.env + +# Script to merge all configs and run 'make syncconfig' on it to wade out bad juju. +# Then split the configs into distro-commmon and flavour-specific parts + +# We have to be in the top level kernel source directory +if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then + echo "This does not appear to be the kernel source directory." 1>&2 + exit 1 +fi + +mode=${1:?"Usage: $0 (oldconfig|editconfig) [do_enforce_all]"} +do_enforce_all=${2:-0} +yes=0 +case "$mode" in + update*configs) mode='syncconfig' ;; + default*configs) mode='oldconfig'; yes=1 ;; + edit*configs) ;; # All is good + gen*configs) mode='genconfigs' ;; # All is good + dump*configs) mode='config'; yes=1 ;; + *) echo "$0 called with invalid mode" 1>&2 + exit 1 ;; +esac +kerneldir="`pwd`" +confdir="$kerneldir/${DEBIAN}/config" +variant="$2" + +. $DEBIAN/etc/kernelconfig + +bindir="`pwd`/${DROOT}/scripts/misc" +common_conf="$confdir/config.common.$family" +tmpdir=`mktemp -d` +mkdir "$tmpdir/CONFIGS" + +if [ "$mode" = "genconfigs" ]; then + keep=1 + mode="oldconfig" + test -d CONFIGS || mkdir CONFIGS +fi + +warning_partial= + +for arch in $archs; do + rm -rf build + mkdir build + + # Map debian archs to kernel archs + case "$arch" in + ppc64|ppc64el) kernarch="powerpc" ;; + amd64) kernarch="x86_64" ;; + lpia) kernarch="x86" ;; + sparc) kernarch="sparc64" ;; + armel|armhf) kernarch="arm" ;; + s390x) kernarch="s390" ;; + riscv64) kernarch="riscv" ;; + *) kernarch="$arch" ;; + esac + + # Determine cross toolchain to use for Kconfig compiler tests + cross_compile="" + deb_build_arch=$(dpkg-architecture -qDEB_BUILD_ARCH -a$arch 2>/dev/null) + deb_host_arch=$(dpkg-architecture -qDEB_HOST_ARCH -a$arch 2>/dev/null) + [ $deb_build_arch != $deb_host_arch ] && cross_compile="$(dpkg-architecture -qDEB_HOST_GNU_TYPE -a$arch 2>/dev/null)-" + + # Environment variables for 'make *config'. We omit CROSS_COMPILE + # for i386 since it is no longer supported after 19.04, however + # we maintain the configs for hwe. + modify_config=true + env="ARCH=$kernarch" + compiler_path=$(which "${cross_compile}gcc" || true) + if [ "$compiler_path" != '' ]; then + env="$env CROSS_COMPILE=$cross_compile" + else + echo "WARNING: ${cross_compile}gcc not installed" + modify_config= + warning_partial="$warning_partial $arch" + fi + + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + + # Merge configs + # We merge config.common.ubuntu + config.common. + + # config.flavour. + + for config in $flavourconfigs; do + fullconf="$tmpdir/$arch-$config-full" + case $config in + *) + : >"$fullconf" + if [ -f $common_conf ]; then + cat $common_conf >> "$fullconf" + fi + if [ -f $archconfdir/config.common.$arch ]; then + cat $archconfdir/config.common.$arch >> "$fullconf" + fi + cat "$archconfdir/$config" >>"$fullconf" + if [ -f $confdir/OVERRIDES ]; then + cat $confdir/OVERRIDES >> "$fullconf" + fi + ;; + esac + done + + for config in $flavourconfigs; do + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/$arch-$config-full" + cat "$fullconf" > build/.config + # Call oldconfig or menuconfig + if [ "$modify_config" ]; then + case "$mode" in + editconfigs) + # Interactively edit config parameters + while : ; do + echo -n "Do you want to edit config: $arch/$config? [Y/n] " + read choice + case "$choice" in + y* | Y* | "" ) + make O=`pwd`/build $env menuconfig + break ;; + n* | N* ) + # 'syncconfig' prevents + # errors for '-' options set + # in common config fragments + make O=`pwd`/build $env syncconfig + break ;; + *) + echo "Entry not valid" + esac + done + ;; + *) + echo "* Run $mode (yes=$yes) on $arch/$config ..." + if [ "$yes" -eq 1 ]; then + yes "" | make O=`pwd`/build $env "$mode" + else + make O=`pwd`/build $env "$mode" + fi ;; + esac + fi + cat build/.config > $archconfdir/$config + [ "$modify_config" ] && cat build/.config >"$tmpdir/CONFIGS/$arch-$config" + if [ "$keep" = "1" ]; then + cat build/.config > CONFIGS/$arch-$config + fi + else + echo "!! Config not found $archconfdir/$config..." + fi + done + + echo "Running splitconfig.pl for $arch" + echo + + # Can we make this more robust by avoiding $tmpdir completely? + # This approach was used for now because I didn't want to change + # splitconfig.pl + (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ + config.common.$arch; cp config.common.$arch $tmpdir) +done + +rm -f $common_conf + +# Now run splitconfig.pl on all the config.common. copied to +# $tmpdir +(cd $tmpdir; $bindir/splitconfig.pl *) +( + cd $confdir; + rm -f *-full + grep -v 'is UNMERGABLE' <$tmpdir/config.common >$common_conf + for arch in $archs; do + grep -v 'is UNMERGABLE' <$tmpdir/config.common.$arch \ + >$arch/config.common.$arch + done +) + +echo "" +echo "Running config-check for all configurations ..." +echo "" +fail=0 +for arch in $archs; do + archconfdir=$confdir/$arch + flavourconfigs=$(cd $archconfdir && ls config.flavour.*) + for config in $flavourconfigs; do + flavour="${config##*.}" + if [ -f $archconfdir/$config ]; then + fullconf="$tmpdir/CONFIGS/$arch-$config" + [ ! -f "$fullconf" ] && continue + "$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" "$do_enforce_all" || let "fail=$fail+1" + fi + done +done + +if [ "$fail" != 0 ]; then + echo "" + echo "*** ERROR: $fail config-check failures detected" + echo "" +fi + +rm -rf build + +if [ "$warning_partial" ]; then + echo "" + echo "WARNING: configuration operation applied only to a subset of architectures (skipped$warning_partial)" 1>&2 + echo "" +fi --- linux-5.8.0.orig/debian/scripts/misc/retag +++ linux-5.8.0/debian/scripts/misc/retag @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w + +open(TAGS, "git tag -l |") or die "Could not get list of tags"; +@tags = ; +close(TAGS); + +open(LOGS, "git log --pretty=short |") or die "ERROR: Calling git log"; +my $commit = ""; + +while () { + my $origtag; + + if (m|^commit (.*)$|) { + $commit = $1; + next; + } + + m|\s*UBUNTU: (Ubuntu-2\.6\..*)| or next; + + $tag = $1; + + ($origtag) = grep(/^$tag.orig$/, @tags); + + if (!defined($origtag)) { + print "I: Adding original tag for $tag\n"; + system("git tag -m $tag $tag.orig $tag"); + } + + print "I: Tagging $tag => $commit\n"; + + system("git tag -f -m $tag $tag $commit"); +} + +close(LOGS); --- linux-5.8.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-5.8.0/debian/scripts/misc/splitconfig.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl -w + +%allconfigs = (); +%common = (); + +print "Reading config's ...\n"; + +for $config (@ARGV) { + # Only config.* + next if $config !~ /^config\..*/; + # Nothing that is disabled, or remnant + next if $config =~ /.*\.(default|disabled|stub)$/; + + %{$allconfigs{$config}} = (); + + print " processing $config ... "; + + open(CONFIG, "< $config"); + + while () { + # Skip comments + /^#*\s*CONFIG_(\w+)[\s=](.*)$/ or next; + + ${$allconfigs{$config}}{$1} = $2; + + $common{$1} = $2; + } + + close(CONFIG); + + print "done.\n"; +} + +print "\n"; + +print "Merging lists ... \n"; + +# %options - pointer to flavour config inside the allconfigs array +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + for $key (keys(%common)) { + next if not defined $common{$key}; + + # If we don't have the common option, then it isn't + # common. If we do have that option, it must have the same + # value. EXCEPT where this file does not have a value at all + # which may safely be merged with any other value; the value + # will be elided during recombination of the parts. + if (!defined($options{$key})) { + # Its ok really ... let it merge + } elsif (not defined($options{$key})) { + undef $common{$key}; + } elsif ($common{$key} ne $options{$key}) { + undef $common{$key}; + } + } + + print "done.\n"; +} + +print "\n"; + +print "Creating common config ... "; + +open(COMMON, "> config.common"); +print COMMON "#\n# Common config options automatically generated by splitconfig.pl\n#\n"; + +for $key (sort(keys(%common))) { + if (not defined $common{$key}) { + print COMMON "# CONFIG_$key is UNMERGABLE\n"; + } elsif ($common{$key} eq "is not set") { + print COMMON "# CONFIG_$key is not set\n"; + } else { + print COMMON "CONFIG_$key=$common{$key}\n"; + } +} +close(COMMON); + +print "done.\n\n"; + +print "Creating stub configs ...\n"; + +for $config (keys(%allconfigs)) { + my %options = %{$allconfigs{$config}}; + + print " processing $config ... "; + + open(STUB, "> $config"); + print STUB "#\n# Config options for $config automatically generated by splitconfig.pl\n#\n"; + + for $key (sort(keys(%options))) { + next if defined $common{$key}; + + if ($options{$key} =~ /^is /) { + print STUB "# CONFIG_$key $options{$key}\n"; + } else { + print STUB "CONFIG_$key=$options{$key}\n"; + } + } + + close(STUB); + + print "done.\n"; +} --- linux-5.8.0.orig/debian/scripts/misc/tristate.sh +++ linux-5.8.0/debian/scripts/misc/tristate.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# +# Find config variables that might be able to transition from =y to =m +# +# Example: debian/scripts/misc/tristate.sh debian.master/config/config.common.ubuntu +# + +KC=Kconfig.tmp +rm -f ${KC} +find .|grep Kconfig | while read f +do + cat $f >> ${KC} +done + +grep =y $1 | sed -e 's/CONFIG_//' -e 's/=y//' | while read c +do + cat < tristate.awk +BEGIN { tristate=0; } +/^config ${c}\$/ { tristate=1; next; } +/tristate/ { if (tristate == 1) printf("CONFIG_%s=m\n","${c}"); next; } +{ if (tristate == 1) exit; } +EOF + + gawk -f tristate.awk ${KC} +done --- linux-5.8.0.orig/debian/scripts/misc/update-aufs.sh +++ linux-5.8.0/debian/scripts/misc/update-aufs.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +AUFS=aufs4-standalone + +# +# Before you run this be sure you've removed or reverted the 'UBUNTU: SAUCE: AUFS" patch. +# +# +# Make sure the current working directory is at the top of the +# linux tree. +# +if ! grep PATCHLEVEL Makefile +then + echo "You must run this script from the top of the linux tree" + exit 1 +fi + +clean=0 +if [ "$#" = 1 ]; then + AUFS="$1" +else + clean=1 + rm -rf ${AUFS} + git clone https://github.com/sfjro/aufs5-standalone.git ${AUFS} + (cd ${AUFS}; git checkout -b aufs5.x-rcN remotes/origin/aufs5.x-rcN) +fi + +cp ${AUFS}/include/uapi/linux/aufs_type.h include/uapi/linux +rsync -av ${AUFS}/fs/ fs/ +rsync -av ${AUFS}/Documentation/ Documentation/ + +PATCHES="${PATCHES} aufs5-kbuild.patch" +PATCHES="${PATCHES} aufs5-base.patch" +PATCHES="${PATCHES} aufs5-mmap.patch" +PATCHES="${PATCHES} aufs5-standalone.patch" +PATCHES="${PATCHES} aufs5-loopback.patch" +#PATCHES="${PATCHES} vfs-ino.patch" +PATCHES="${PATCHES} tmpfs-idr.patch" + +for i in ${PATCHES} +do + patch -p1 < ${AUFS}/$i +done + +[ "$clean" = 1 ] && rm -rf ${AUFS} +git add mm/prfile.c +git add -u +find . -name "*.orig" | xargs rm +find . |grep aufs | xargs git add +git commit -s -m"UBUNTU: SAUCE: AUFS" --- linux-5.8.0.orig/debian/scripts/module-check +++ linux-5.8.0/debian/scripts/module-check @@ -0,0 +1,120 @@ +#!/usr/bin/perl -w + +$flavour = shift; +$prev_abidir = shift; +$abidir = shift; +$skipmodule = shift; + +print "II: Checking modules for $flavour..."; + +if (-f "$prev_abidir/ignore.modules" + or -f "$prev_abidir/$flavour.ignore.modules") { + print "explicitly ignoring modules\n"; + exit(0); +} + +if (not -f "$abidir/$flavour.modules" or not -f + "$prev_abidir/$flavour.modules") { + print "previous or current modules file missing!\n"; + print " $abidir/$flavour.modules\n"; + print " $prev_abidir/$flavour.modules\n"; + if (defined($skipmodule)) { + exit(0); + } else { + exit(1); + } +} + +print "\n"; + +my %modules; +my %modules_ignore; +my $missing = 0; +my $new = 0; +my $errors = 0; + +# See if we have any ignores +if (-f "$prev_abidir/../modules.ignore") { + my $ignore = 0; + open(IGNORE, "< $prev_abidir/../modules.ignore") or + die "Could not open $prev_abidir/../modules.ignore"; + print " reading modules to ignore..."; + while () { + chomp; + next if /\s*#/; + $modules_ignore{$_} = 1; + $ignore++; + } + close(IGNORE); + print "read $ignore modules.\n"; +} + +# Read new modules first +print " reading new modules..."; +$new_count = 0; +open(NEW, "< $abidir/$flavour.modules") or + die "Could not open $abidir/$flavour.modules"; +while () { + chomp; + $modules{$_} = 1; + $new_count++; +} +close(NEW); +print "read $new_count modules.\n"; + +# Now the old modules, checking for missing ones +print " reading old modules..."; +$old_count = 0; +open(OLD, "< $prev_abidir/$flavour.modules") or + die "Could not open $prev_abidir/$flavour.modules"; +while () { + chomp; + if (not defined($modules{$_})) { + print "\n" if not $missing; + $missing++; + if (not defined($modules_ignore{$_})) { + print " MISS: $_\n"; + $errors++; + } else { + print " MISS: $_ (ignored)\n"; + } + } else { + $modules{$_}++; + } + $old_count++; +} +close(OLD); +# Check for new modules +foreach $mod (keys(%modules)) { + if ($modules{$mod} < 2) { + print "\n" if not $missing and not $new; + print " NEW : $mod\n"; + $new++; + } +} +if ($new or $missing) { + print " read $old_count modules : new($new) missing($missing)\n"; +} else { + print "read $old_count modules.\n"; +} + + +# Let's see where we stand... +if ($errors) { + if (defined($skipmodule)) { + print "WW: Explicitly asked to ignore failures (probably not good)\n"; + } else { + print "EE: Missing modules (start begging for mercy)\n"; + exit 1 + } +} + +if ($new) { + print "II: New modules (you've been busy, wipe the poop off your nose)\n"; +} else { + print "II: No new modules (hope you're happy, slacker)\n"; +} + +print "II: Done\n"; + +exit(0); --- linux-5.8.0.orig/debian/scripts/module-inclusion +++ linux-5.8.0/debian/scripts/module-inclusion @@ -0,0 +1,104 @@ +#!/bin/bash + +# +# Build a new directory of modules based on an inclusion list. +# The includsion list format must be a bash regular expression. +# +# usage: $0 ROOT INCLUSION_LIST +# example: $0 \ +# debian/build/build-virtual-ALL debian/build/build-virtual \ +# debian.master/control.d/virtual.inclusion-list \ +# virtual.depmap +master=0 +if [ "$1" = "--master" ]; then + master=1 + shift +fi + +ROOT=$1 +NROOT=$2 +ILIST=$3 +DEPMAP=$4 + +tmp="/tmp/module-inclusion.$$" + +# +# Prep a destination directory. +# +mkdir -p ${NROOT} + +{ + # Copy over the framework into the master package. + if [ "$master" -eq 1 ]; then + (cd ${ROOT}; find . ! -name "*.ko" -type f) + fi + + # Copy over modules by name or pattern. + while read -r i + do + # + # 'find' blurts a warning if it cannot find any ko files. + # + case "$i" in + \!*) + (cd ${ROOT}; ${i#!} || true) + ;; + *\**) + (cd ${ROOT}; eval find "${i}" -name "*.ko" || true) + ;; + *) + echo "$i" + ;; + esac + done <"${ILIST}" +} >"$tmp" + +# Copy over the listed modules. +while read i +do + # If this is already moved over, all is good. + if [ -f "${NROOT}/$i" ]; then + : + + # If present in the source, moved it over. + elif [ -f "${ROOT}/$i" ]; then + mkdir -p "${NROOT}/`dirname $i`" + mv "${ROOT}/$i" "${NROOT}/$i" + + # Otherwise, it is missing. + else + echo "Warning: Could not find ${ROOT}/$i" 1>&2 + fi +done <"$tmp" + +# Copy over any dependancies, note if those are missing +# we know they are in a pre-requisite package as they must +# have existed at depmap generation time, and can only have +# moved into a package. +let n=0 || true +while [ -s "$tmp" ] +do + let n="$n+1" || true + [ "$n" = "20" ] && break || true + + echo "NOTE: pass $n: dependency scan" 1>&2 + + while read i + do + grep "^$i " "$DEPMAP" | \ + while read m d + do + if [ -f "${ROOT}/$d" ]; then + echo "NOTE: pass $n: ${i} pulls in ${d}" 1>&2 + echo "$d" + mkdir -p "${NROOT}/`dirname $d`" + mv "${ROOT}/$d" "${NROOT}/$d" + fi + done + done <"$tmp" >"$tmp.new" + mv -f "$tmp.new" "$tmp" +done + +rm -f "$tmp" + +exit 0 --- linux-5.8.0.orig/debian/scripts/retpoline-check +++ linux-5.8.0/debian/scripts/retpoline-check @@ -0,0 +1,47 @@ +#!/bin/bash + +flavour="$1" +prev_abidir="$2" +curr_abidir="$3" +skipretpoline="$4" + +echo "II: Checking retpoline indirections for $flavour..."; + +if [ "$skipretpoline" = 'true' ]; then + echo "manual request ignoring retpoline delta" +fi + +if [ -f "$prev_abidir/ignore.retpoline" -o \ + -f "$prev_abidir/$flavour.ignore.retpoline" ]; then + echo "explicitly ignoring retpoline delta" + skipretpoline='true' +fi + +prev="$prev_abidir/$flavour.retpoline" +curr="$curr_abidir/$flavour.retpoline" +if [ ! -f "$prev" ]; then + echo "previous retpoline file missing!" + echo " $prev" + prev="/dev/null" +fi +if [ ! -f "$curr" ]; then + echo "current retpoline file missing!" + echo " $curr" + curr="/dev/null" +fi + +echo "II: retpoline delta in this package..." +rc=0 +diff -u "$prev" "$curr" || true +count=$( diff -u "$prev" "$curr" | grep '^+[^+]' | wc -l ) +if [ "$count" != 0 ]; then + rc=1 + echo "WW: $count new retpoline sequences detected" +fi + +echo "II: Done"; +if [ "$skipretpoline" = 'true' -a "$rc" -ne 0 ]; then + echo "II: ignoring errors" + exit 0 +fi +exit "$rc" --- linux-5.8.0.orig/debian/scripts/retpoline-extract +++ linux-5.8.0/debian/scripts/retpoline-extract @@ -0,0 +1,23 @@ +#!/bin/bash + +cd "$1" || exit 1 + +# Find all valid retpoline information, collate the detected and +# safe information together. Join the result to find the detected +# but non-safe elements. These are our concern. +ur_detected=$(mktemp --tmpdir "retpoline-check-XXXXXX.ur-detected") +ur_safe=$(mktemp --tmpdir "retpoline-check-XXXXXX.ur-safe") + +find "." -path './drivers/firmware/efi/libstub' -prune -o \ + -path './arch/x86/boot' -prune -o \ + -path './arch/x86/purgatory' -prune -o \ + -name \*.ur-detected -print0 | xargs -0 cat | \ + sed -e "s@^$1@@" -e "s@ $2/@ @" -e "s@^/@@" | \ + sort -k 1b,1 >"$ur_detected" +find "." -name \*.ur-safe -print0 | xargs -0 cat | \ + sed -e "s@^$1@@" -e "s@^/@@" | \ + sort -k 1b,1 >"$ur_safe" + +join -v 1 -j 1 "$ur_detected" "$ur_safe" | sed -s 's/[^ ]* *//' + +rm -f "$ur_detected" "$ur_safe" --- linux-5.8.0.orig/debian/scripts/retpoline-extract-one +++ linux-5.8.0/debian/scripts/retpoline-extract-one @@ -0,0 +1,270 @@ +#!/bin/bash + +exec &2 + exit 1 + fi +} + +# Form an associative lookup for the section numbers in the ELF symbol table. +# Uses 8 character 0 expanded hexadecimal key for ease of consumption. +__sectionmap_init() +{ + readelf -W --headers "$1" | \ + awk ' + { sub("\\[", ""); sub("\\]", ""); } + ($1 ~ /^[0-9][0-9]*/) { printf("%08x %s %s %s\n", int($1), $2, $3, $4); } + ' | \ + { + while read section_num section_name section_type section_vma + do + echo "sectionmap_$section_num='$section_name'" + echo "sectionvma_$section_num='$section_vma'" + case "$section_type" in + REL|RELA) section_relocation="$section_type" ;; + esac + done + echo "section_relocation='$section_relocation'" + } +} +sectionmap_init() +{ + eval $(__sectionmap_init "$1") +} +sectionmap() +{ + eval RET="\$sectionmap_$1" + if [ "$RET" = '' ]; then + echo "sectionmap: $1: invalid section" 1>&2 + exit 1 + fi +} +sectionvma() +{ + eval RET="\$sectionvma_$1" + if [ "$RET" = '' ]; then + echo "sectionvma: $1: invalid section" 1>&2 + exit 1 + fi +} + +# Read and parse the hex-dump output. +hex="[0-9a-f]" +hex_8="$hex$hex$hex$hex$hex$hex$hex$hex" +hexspc="[0-9a-f ]" +hexspc_8="$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc" + +raw32() +{ + readelf --hex-dump "$2" "$1" 2>/dev/null | + sed \ + -e '/^Hex/d' -e '/^$/d' -e '/^ *NOTE/d' \ + -e 's/ *[^ ][^ ]* *\('"$hex_8"'\) \('"$hexspc_8"'\) \('"$hexspc_8"'\) \('"$hexspc_8"'\) .*/\1 \2 \3 \4 /' \ + -e 's/\('"$hex$hex"'\)\('"$hex$hex"'\)\('"$hex$hex"'\)\('"$hex$hex"'\) /\4\3\2\1 /g' \ + -e 's/ $//g' -e 's/ /\n/g' +} +#-e 's/\([^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]\) \([^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]\) /\2\1 /g' \ + +rela() +{ + #file="$(basename "$1")" + file="$1" + + # Read relocation information for a 64bit binary. Each relocation entry + # is 3 long longs so we collect 6 quads here. Note that the dump is in + # listed in increasing byte order not withstanding the quad split. + # + # The record says to take the value of add and + # shove that into in the segment of the . + # + # Format: + # 64 bits + # 32 bits + # 32 bits + # 64 bits + raw32 "$1" ".rela$SECTION" | \ + { + a1=''; a2=''; a3=''; a4=''; a5='' + while read a6 + do + [ "$a1" = '' ] && { a1="$a6"; continue; } + [ "$a2" = '' ] && { a2="$a6"; continue; } + [ "$a3" = '' ] && { a3="$a6"; continue; } + [ "$a4" = '' ] && { a4="$a6"; continue; } + [ "$a5" = '' ] && { a5="$a6"; continue; } + + #echo ">$a1< >$a2< >$a3< >$a4< >$a5< >$a6<" 1>&2 + #echo "type<$a3> symbol<$a4> offset<$a2$a1> addr<$a6a5>" 1>&2 + + symbolmap "$a4"; section_num="$RET" + #echo "section_num<$section_num>" 1>&2 + + sectionmap "$section_num"; section="$RET" + sectionvma "$section_num"; vma="$RET" + #echo "section<$section> vma<$vma>" 1>&2 + + # Adjust the segment addressing by the segment offset. + printf -v addr "%u" "0x$a6$a5" + printf -v vma "%u" "0x$vma" + let offset="$addr + $vma" + printf -v offset "%x" "$offset" + + echo "$file-$section-$offset" + + a1=''; a2=''; a3=''; a4=''; a5='' + done + } | sed -e 's/-00*\([0-9a-f]\)/-\1/' +} + +# Form an associative lookup for the raw contents for an ELF section. +# Uses 8 character 0 expanded hexadecimal key for ease of consumption. +contentmap_init() +{ + raw32 "$1" "$2" >"$tmp" + let offset=0 + while read value + do + printf -v offset_hex "%08x" $offset + eval contentmap_$offset_hex=\'$value\' + + let offset="$offset + 4" + done <"$tmp" + rm -f "$tmp" +} +contentmap() +{ + eval RET="\$contentmap_$1" + if [ "$RET" = '' ]; then + echo "contentmap: $1: invalid offset" 1>&2 + exit 1 + fi +} + +rel() +{ + # Load up the current contents of the $SECTION segment + # as the offsets (see below) are recorded there and we will need + # those to calculate the actuall address. + contentmap_init "$1" "$SECTION" + + #file="$(basename "$1")" + file="$1" + + # Read relocation information for a 32bit binary. Each relocation entry + # is 3 longs so we collect 3 quads here. Note that the dump is in + # listed in increasing byte order not withstanding the quad split. + # + # The record says to take the value of and add that to the + # existing contents of in the segment of the . + # + # Format: + # 32 bits + # 24 bits + # 8 bits + raw32 "$1" ".rel$SECTION" | \ + { + a1='' + while read a2 + do + [ "$a1" = '' ] && { a1="$a2"; continue; } + + #echo ">$a1< >$a2<" + contentmap "$a1"; offset="$RET" + symbolmap "00${a2%??}"; section_num="$RET" + + sectionmap "$section_num"; section="$RET" + sectionvma "$section_num"; vma="$RET" + #echo ">$a1< >$a2< >$offset< >$section<" + + echo "$file-$section-$offset" + + a1='' + done + } | sed -e 's/-00*\([0-9a-f]\)/-\1/' +} + +tmp=$(mktemp --tmpdir "retpoline-extract-XXXXXX") + +disassemble() +{ + local object="$1" + local src="$2" + local options="$3" + local selector="$4" + + objdump $options --disassemble --no-show-raw-insn "$object" | \ + awk -F' ' ' + BEGIN { file="'"$object"'"; src="'"$src"'"; } + /Disassembly of section/ { segment=$4; sub(":", "", segment); } + /^[0-9a-f][0-9a-f]* <.*>:/ { tag=$0; sub(".*<", "", tag); sub(">.*", "", tag); } + $0 ~ /(call|jmp)q? *\*0x[0-9a-f]*\(%rip\)/ { + next + } + $0 ~ /(call|jmp)q? *\*.*%/ { + sub(":", "", $1); + if ('"$selector"') { + offset=$1 + $1=tag + print(file "-" segment "-" offset " " src " " segment " " $0); + } + } + ' +} + +# Accumulate potentially vunerable indirect call/jmp sequences. We do this +# by examining the raw disassembly for affected forms, recording the location +# of each. +case "$bit16" in +'') disassemble "$object" "$src" '' 'segment != ".init.text"' ;; +*) disassemble "$object" "$src" '--disassembler-options=i8086' 'segment != ".init.text" && segment != ".text32" && segment != ".text64"' + disassemble "$object" "$src" '--disassembler-options=i386' 'segment == ".text32"' + disassemble "$object" "$src" '--disassembler-options=x86-64' 'segment == ".text64"' + ;; +esac | sort -k 1b,1 >"$object.ur-detected" +[ ! -s "$object.ur-detected" ] && rm -f "$object.ur-detected" + +# Load up the symbol table and section mappings. +symbolmap_init "$object" +sectionmap_init "$object" + +# Accumulate annotated safe indirect call/jmp sequences. We do this by examining +# the $SECTION sections (and their associated relocation information), +# each entry represents the address of an instruction which has been marked +# as ok. +case "$section_relocation" in +REL) rel "$object" ;; +RELA) rela "$object" ;; +esac | sort -k 1b,1 >"$object.ur-safe" +[ ! -s "$object.ur-safe" ] && rm -f "$object.ur-safe" + +# We will perform the below join on the summarised and sorted fragments +# formed above. This is performed in retpoline-check. +#join -v 1 -j 1 "$tmp.extracted" "$tmp.safe" | sed -s 's/[^ ]* *//' + +rm -f "$tmp" --- linux-5.8.0.orig/debian/scripts/sub-flavour +++ linux-5.8.0/debian/scripts/sub-flavour @@ -0,0 +1,69 @@ +#!/bin/bash + +. debian/debian.env + +echo "SUB_PROCESS $FROM => $TO" + +export from_pkg="linux-image-$ABI_RELEASE-$FROM" +export to_pkg="linux-image-$ABI_RELEASE-$TO" + +from_moddir="debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM" +to_moddir="debian/$to_pkg/lib/modules/$ABI_RELEASE-$FROM" + +install -d "debian/$to_pkg/boot" +install -m644 debian/$from_pkg/boot/config-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ +install -m600 debian/$from_pkg/boot/{vmlinuz,System.map}-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ + +# +# Print some warnings if there are files in the sub-flavours list +# that do not actually exist. +# +cat ${DEBIAN}/sub-flavours/$TO.list | while read line +do +( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + # + # If its a wildcard, then check that there are files that match. + # + if echo "$line" | grep '\*' > /dev/null + then + if [ `eval find "$line" -name '*.ko' 2>/dev/null|wc -l` -lt 1 ] + then + echo SUB_INST Warning - No files in $line + fi + # + # Else it should be a single file reference. + # + elif [ ! -f "$line" ] + then + echo SUB_INST Warning - could not find "$line" + fi +) +done + +cat ${DEBIAN}/sub-flavours/$TO.list | while read line; do + ( + cd debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM/kernel; + if echo "$line" | grep '\*' > /dev/null + then + eval find "$line" -name '*.ko' 2>/dev/null || true + elif [ -f "$line" ] + then + echo "$line" + fi + ); +done | while read mod; do + echo "SUB_INST checking: $mod" + fromdir="/lib/modules/$ABI_RELEASE-$FROM/" + egrep "^($fromdir)?kernel/$mod:" \ + $from_moddir/modules.dep | sed -e "s|^$fromdir||" -e 's/://' -e 's/ /\n/g' | \ + while read m; do + m="${fromdir}$m" + test -f debian/$to_pkg/$m && continue + echo "SUB_INST installing: $m" + install -D -m644 debian/$from_pkg/$m \ + debian/$to_pkg/$m + done +done --- linux-5.8.0.orig/debian/snapcraft.mk +++ linux-5.8.0/debian/snapcraft.mk @@ -0,0 +1,11 @@ +ifeq ($(ARCH),) + arch := $(shell uname -m | sed -e s/i.86/i386/ -e s/x86_64/amd64/ \ + -e s/arm.*/armhf/ -e s/s390/s390x/ -e s/ppc.*/powerpc/ \ + -e s/aarch64.*/arm64/ ) +else ifeq ($(ARCH),arm) + arch := armhf +else + arch := $(ARCH) +endif +config: + cat debian.$(branch)/config/config.common.ubuntu debian.$(branch)/config/$(arch)/config.common.$(arch) debian.$(branch)/config/$(arch)/config.flavour.$(flavour) >.config --- linux-5.8.0.orig/debian/source/format +++ linux-5.8.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-5.8.0.orig/debian/source/options +++ linux-5.8.0/debian/source/options @@ -0,0 +1,8 @@ +# Ignore vbox symlinks, we will regenerate these at clean (LP:1426113) +## autoreconstruct -- begin +# Ignore any symlinks created since the orig which are rebuilt by reconstruct. +## autoreconstruct -- end + +# force "dpkg-source -I -i" behavior +diff-ignore +tar-ignore --- linux-5.8.0.orig/debian/stamps/keep-dir +++ linux-5.8.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-5.8.0.orig/debian/templates/extra.postinst.in +++ linux-5.8.0/debian/templates/extra.postinst.in @@ -0,0 +1,20 @@ +#!/bin/sh +set -e + +version=@abiname@@localversion@ +image_path=/boot/@image-stem@-$version + +if [ "$1" != configure ]; then + exit 0 +fi + +depmod -a -F /boot/System.map-$version $version || true +if [ -d /etc/kernel/postinst.d ]; then + cat - >/usr/lib/linux/triggers/$version </dev/null || true +# +# We should be rebuilding the initramfs here on removal to pare down the +# initramfs if it contains any of the objects we just removed. But people +# commonly remove kernels in order to free space in /boot, and rebuilding the +# initramfs now risks ENOSPC when we are trying to make space. The files we +# leave lying about could be confusing, but we trade that against safety on +# removal. +# +#if [ -d /etc/kernel/postinst.d ]; then +# # We want to behave as if linux-image (without us) was installed, therefore +# # we do not want the postinst support to know we are being removed, claim +# # this is an installation event. +# cat - >/usr/lib/linux/triggers/$version </usr/lib/linux/triggers/$version </dev/null; then + linux-update-symlinks remove $version $image_path +fi + +if [ -d /etc/kernel/postrm.d ]; then + # We cannot trigger ourselves as at the end of this we will no longer + # exist and can no longer respond to the trigger. The trigger would + # then become lost. Therefore we clear any pending trigger and apply + # postrm directly. + if [ -f /usr/lib/linux/triggers/$version ]; then + echo "$0 ... removing pending trigger" + rm -f /usr/lib/linux/triggers/$version + fi + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/postrm.d +fi + +if [ "$1" = purge ]; then + for extra_file in modules.dep modules.isapnpmap modules.pcimap \ + modules.usbmap modules.parportmap \ + modules.generic_string modules.ieee1394map \ + modules.ieee1394map modules.pnpbiosmap \ + modules.alias modules.ccwmap modules.inputmap \ + modules.symbols modules.ofmap \ + modules.seriomap modules.\*.bin \ + modules.softdep modules.devname; do + eval rm -f /lib/modules/$version/$extra_file + done + rmdir /lib/modules/$version || true +fi + +exit 0 --- linux-5.8.0.orig/debian/templates/image.preinst.in +++ linux-5.8.0/debian/templates/image.preinst.in @@ -0,0 +1,22 @@ +#!/bin/sh +set -e + +version=@abiname@@localversion@ +image_path=/boot/@image-stem@-$version + +if [ "$1" = abort-upgrade ]; then + exit 0 +fi + +if [ "$1" = install ]; then + # Create a flag file for postinst + mkdir -p /lib/modules/$version + touch /lib/modules/$version/.fresh-install +fi + +if [ -d /etc/kernel/preinst.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/preinst.d +fi + +exit 0 --- linux-5.8.0.orig/debian/templates/image.prerm.in +++ linux-5.8.0/debian/templates/image.prerm.in @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +version=@abiname@@localversion@ +image_path=/boot/@image-stem@-$version + +if [ "$1" != remove ]; then + exit 0 +fi + +linux-check-removal $version + +if [ -d /etc/kernel/prerm.d ]; then + DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \ + --arg=$image_path /etc/kernel/prerm.d +fi + +exit 0 --- linux-5.8.0.orig/debian/tests-build/README +++ linux-5.8.0/debian/tests-build/README @@ -0,0 +1,21 @@ +Scripts placed in this directory get called one at a time by run-parts(8). +The scripts are expected to perform some sort of sanity checks on the +finished build. Scripts will be called once for each flavour. + +Some environment variables are exported to make life a little easier: + +DPKG_ARCH : The dpkg architecture (e.g. "amd64") +KERN_ARCH : The kernel architecture (e.g. "x86_64") +FLAVOUR : The specific flavour for this run (e.g. "generic") +VERSION : The full version of this build (e.g. 2.6.22-1) +REVISION : The exact revision of this build (e.g. 1.3) +PREV_REVISION : The revision prior to this one +ABI_NUM : The specific ABI number for this build (e.g. 2) +PREV_ABI_NUM : The previous ABI number. Can be the same as ABI_NUM. +BUILD_DIR : The directory where this build took place +INSTALL_DIR : The directory where the package is prepared +SOURCE_DIR : Where the main kernel source is + +Scripts are expected to have a zero exit status when no problems occur, +and non-zero when an error occurs that should stop the build. Scripts +should print whatever info they deem needed to deduce the problem. --- linux-5.8.0.orig/debian/tests-build/check-aliases +++ linux-5.8.0/debian/tests-build/check-aliases @@ -0,0 +1,24 @@ +#!/usr/bin/perl -w + +my %map; + +print "Checking for dupe aliases in $ENV{'FLAVOUR'}...\n"; + +$aliases = + "$ENV{'INSTALL_DIR'}/lib/modules/$ENV{'VERSION'}-$ENV{'FLAVOUR'}/modules.alias"; + +open(ALIASES, "< $aliases") or die "Could not open $aliases"; + +while () { + chomp; + my ($junk, $alias, $module) = split; + + if (defined($map{$alias})) { + printf("%s %20s / %-20s : %s \n", ("$map{$alias}" eq "$module") + ? "INT" : " ", $map{$alias}, $module, $alias); + } else { + $map{$alias} = $module; + } +} + +exit(0); --- linux-5.8.0.orig/debian/tests/control +++ linux-5.8.0/debian/tests/control @@ -0,0 +1,7 @@ +Tests: rebuild +Depends: @builddeps@, fakeroot +Restrictions: allow-stderr, skippable + +Tests: ubuntu-regression-suite +Depends: build-essential, gcc-multilib [amd64 armhf i386], gdb, git, python2 | python, bzr +Restrictions: allow-stderr, isolation-machine, breaks-testbed, skippable --- linux-5.8.0.orig/debian/tests/rebuild +++ linux-5.8.0/debian/tests/rebuild @@ -0,0 +1,20 @@ +#!/bin/sh + +# If we are triggering for just linux or linux-meta we know we have +# just built the kernel and there is no point in repeating that +# build, it just wastes time. (LP: #1498862) +build_needed=0 +for trigger in ${ADT_TEST_TRIGGERS:-force} +do + case "$trigger" in + linux/*|linux-lts-*/*|linux-meta*/*|linux-oem*/*|fakeroot/*|gdb/*|git/*|bzr/*|gcc-multilib/*) ;; + *) build_needed=1 ;; + esac +done +if [ "$build_needed" -eq 0 ]; then + echo "rebuild: short circuiting build for '${ADT_TEST_TRIGGERS}'" + exit 77 +fi + +set -e +dpkg-buildpackage -rfakeroot -us -uc -b -Pautopkgtest --- linux-5.8.0.orig/debian/tests/ubuntu-regression-suite +++ linux-5.8.0/debian/tests/ubuntu-regression-suite @@ -0,0 +1,45 @@ +#!/bin/sh +set -e + +# Only run regression-suite on kernels we can boot in canonistack +source=`dpkg-parsechangelog -SSource` +case $source in + linux|linux-hwe*|linux-kvm|linux-oem) + ;; + *) + echo "ubuntu-regression-suite is pointless, if one cannot boot the kernel" + exit 77 + ;; +esac + +# Only run regression-suite if we were requested to +have_meta=0 +for trigger in ${ADT_TEST_TRIGGERS} +do + case "$trigger" in + linux-meta/*|linux-meta-*/*) + have_meta=1 + ;; + esac +done +if [ -n "$ADT_TEST_TRIGGERS" ] && [ "$have_meta" -eq 0 ]; then + echo "ubuntu-regression-suite is not requested, as there is no linux-meta trigger" + exit 77 +fi + +sver=`dpkg-parsechangelog -SVersion` +read x rver x &2 + exit 1 +fi + +git clone git://kernel.ubuntu.com/ubuntu/kernel-testing +kernel-testing/run-dep8-tests --- linux-5.8.0.orig/debian/tools/generic +++ linux-5.8.0/debian/tools/generic @@ -0,0 +1,60 @@ +#!/bin/bash +full_version=`uname -r` + +# First check for a fully qualified version. +this="/usr/lib/linux-tools/$full_version/`basename $0`" +if [ -f "$this" ]; then + exec "$this" "$@" +fi + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +this="$0_$version" +if [ -f "$this" ]; then + exec "$this" "$@" +fi + +# Before saucy kernels we had no flavour linkage. +if dpkg --compare-versions "$version" lt "3.11.0"; then + flavour='' +else + flavour="-$flavour" +fi +# Hint at the cloud tools if they exist (trusty and later) +if dpkg --compare-versions "$version" ge "3.13.0"; then + cld="" +else + cld=":" +fi +# Work out if this is an LTS backport or not. +codename=`lsb_release -cs` +case "$codename" in +precise) base='3.2.0-9999' ;; +trusty) base='3.13.0-9999' ;; +*) base='' ;; +esac +std="" +lts=":" +if [ "$base" != "" ]; then + if dpkg --compare-versions "$version" gt "$base"; then + std=":" + lts="" + fi +fi + +# Give them a hint as to what to install. + echo "WARNING: `basename $0` not found for kernel $version" >&2 + echo "" >&2 + echo " You may need to install the following packages for this specific kernel:" >&2 + echo " linux-tools-$version$flavour" >&2 +$cld echo " linux-cloud-tools-$version$flavour" >&2 + echo "" >&2 + echo " You may also want to install one of the following packages to keep up to date:" >&2 +$std echo " linux-tools$flavour" >&2 +$std $cld echo " linux-cloud-tools$flavour" >&2 +$lts echo " linux-tools$flavour-lts-" >&2 +$lts $cld echo " linux-cloud-tools$flavour-lts-" >&2 + +exit 2 --- linux-5.8.0.orig/debian/wireguard-modules.ignore +++ linux-5.8.0/debian/wireguard-modules.ignore @@ -0,0 +1 @@ +wireguard --- linux-5.8.0.orig/debian/zfs-modules.ignore +++ linux-5.8.0/debian/zfs-modules.ignore @@ -0,0 +1,10 @@ +icp +spl +splat +zavl +zcommon +zfs +zlua +znvpair +zpios +zunicode --- linux-5.8.0.orig/drivers/Makefile +++ linux-5.8.0/drivers/Makefile @@ -59,14 +59,9 @@ # iommu/ comes before gpu as gpu are using iommu controllers obj-y += iommu/ -# gpu/ comes after char for AGP vs DRM startup and after iommu -obj-y += gpu/ obj-$(CONFIG_CONNECTOR) += connector/ -# i810fb and intelfb depend on char/agp/ -obj-$(CONFIG_FB_I810) += video/fbdev/i810/ -obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/ obj-$(CONFIG_PARPORT) += parport/ obj-$(CONFIG_NVM) += lightnvm/ @@ -80,6 +75,12 @@ obj-y += scsi/ obj-y += nvme/ obj-$(CONFIG_ATA) += ata/ + +# gpu/ comes after char for AGP vs DRM startup and after iommu +obj-y += gpu/ +# i810fb and intelfb depend on char/agp/ +obj-$(CONFIG_FB_I810) += video/fbdev/i810/ +obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/ obj-$(CONFIG_TARGET_CORE) += target/ obj-$(CONFIG_MTD) += mtd/ obj-$(CONFIG_SPI) += spi/ --- linux-5.8.0.orig/drivers/acpi/acpi_configfs.c +++ linux-5.8.0/drivers/acpi/acpi_configfs.c @@ -228,6 +228,7 @@ ACPI_INFO(("Host-directed Dynamic ACPI Table Unload")); acpi_unload_table(table->index); + config_item_put(cfg); } static struct configfs_group_operations acpi_table_group_ops = { @@ -267,7 +268,12 @@ acpi_table_group = configfs_register_default_group(root, "table", &acpi_tables_type); - return PTR_ERR_OR_ZERO(acpi_table_group); + if (IS_ERR(acpi_table_group)) { + configfs_unregister_subsystem(&acpi_configfs); + return PTR_ERR(acpi_table_group); + } + + return 0; } module_init(acpi_configfs_init); --- linux-5.8.0.orig/drivers/acpi/acpi_dbg.c +++ linux-5.8.0/drivers/acpi/acpi_dbg.c @@ -749,6 +749,9 @@ { int ret; + if (acpi_disabled) + return -ENODEV; + /* Initialize AML IO interface */ mutex_init(&acpi_aml_io.lock); init_waitqueue_head(&acpi_aml_io.wait); --- linux-5.8.0.orig/drivers/acpi/acpi_extlog.c +++ linux-5.8.0/drivers/acpi/acpi_extlog.c @@ -222,9 +222,9 @@ u64 cap; int rc; - rdmsrl(MSR_IA32_MCG_CAP, cap); - - if (!(cap & MCG_ELOG_P) || !extlog_get_l1addr()) + if (rdmsrl_safe(MSR_IA32_MCG_CAP, &cap) || + !(cap & MCG_ELOG_P) || + !extlog_get_l1addr()) return -ENODEV; rc = -EINVAL; --- linux-5.8.0.orig/drivers/acpi/acpi_pnp.c +++ linux-5.8.0/drivers/acpi/acpi_pnp.c @@ -317,6 +317,9 @@ { int i; + if (strlen(idstr) != strlen(list_id)) + return false; + if (memcmp(idstr, list_id, 3)) return false; --- linux-5.8.0.orig/drivers/acpi/acpica/acobject.h +++ linux-5.8.0/drivers/acpi/acpica/acobject.h @@ -284,6 +284,7 @@ acpi_adr_space_handler handler; struct acpi_namespace_node *node; /* Parent device */ void *context; + acpi_mutex context_mutex; acpi_adr_space_setup setup; union acpi_operand_object *region_list; /* Regions using this handler */ union acpi_operand_object *next; --- linux-5.8.0.orig/drivers/acpi/acpica/evhandler.c +++ linux-5.8.0/drivers/acpi/acpica/evhandler.c @@ -489,6 +489,13 @@ /* Init handler obj */ + status = + acpi_os_create_mutex(&handler_obj->address_space.context_mutex); + if (ACPI_FAILURE(status)) { + acpi_ut_remove_reference(handler_obj); + goto unlock_and_exit; + } + handler_obj->address_space.space_id = (u8)space_id; handler_obj->address_space.handler_flags = flags; handler_obj->address_space.region_list = NULL; --- linux-5.8.0.orig/drivers/acpi/acpica/evregion.c +++ linux-5.8.0/drivers/acpi/acpica/evregion.c @@ -111,6 +111,8 @@ union acpi_operand_object *region_obj2; void *region_context = NULL; struct acpi_connection_info *context; + acpi_mutex context_mutex; + u8 context_locked; acpi_physical_address address; ACPI_FUNCTION_TRACE(ev_address_space_dispatch); @@ -135,6 +137,8 @@ } context = handler_desc->address_space.context; + context_mutex = handler_desc->address_space.context_mutex; + context_locked = FALSE; /* * It may be the case that the region has never been initialized. @@ -203,6 +207,23 @@ handler = handler_desc->address_space.handler; address = (region_obj->region.address + region_offset); + ACPI_DEBUG_PRINT((ACPI_DB_OPREGION, + "Handler %p (@%p) Address %8.8X%8.8X [%s]\n", + ®ion_obj->region.handler->address_space, handler, + ACPI_FORMAT_UINT64(address), + acpi_ut_get_region_name(region_obj->region. + space_id))); + + if (!(handler_desc->address_space.handler_flags & + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { + /* + * For handlers other than the default (supplied) handlers, we must + * exit the interpreter because the handler *might* block -- we don't + * know what it will do, so we can't hold the lock on the interpreter. + */ + acpi_ex_exit_interpreter(); + } + /* * Special handling for generic_serial_bus and general_purpose_io: * There are three extra parameters that must be passed to the @@ -211,6 +232,11 @@ * 2) Length of the above buffer * 3) Actual access length from the access_as() op * + * Since we pass these extra parameters via the context, which is + * shared between threads, we must lock the context to avoid these + * parameters being changed from another thread before the handler + * has completed running. + * * In addition, for general_purpose_io, the Address and bit_width fields * are defined as follows: * 1) Address is the pin number index of the field (bit offset from @@ -220,6 +246,14 @@ if ((region_obj->region.space_id == ACPI_ADR_SPACE_GSBUS) && context && field_obj) { + status = + acpi_os_acquire_mutex(context_mutex, ACPI_WAIT_FOREVER); + if (ACPI_FAILURE(status)) { + goto re_enter_interpreter; + } + + context_locked = TRUE; + /* Get the Connection (resource_template) buffer */ context->connection = field_obj->field.resource_buffer; @@ -229,6 +263,14 @@ if ((region_obj->region.space_id == ACPI_ADR_SPACE_GPIO) && context && field_obj) { + status = + acpi_os_acquire_mutex(context_mutex, ACPI_WAIT_FOREVER); + if (ACPI_FAILURE(status)) { + goto re_enter_interpreter; + } + + context_locked = TRUE; + /* Get the Connection (resource_template) buffer */ context->connection = field_obj->field.resource_buffer; @@ -238,28 +280,15 @@ bit_width = field_obj->field.bit_length; } - ACPI_DEBUG_PRINT((ACPI_DB_OPREGION, - "Handler %p (@%p) Address %8.8X%8.8X [%s]\n", - ®ion_obj->region.handler->address_space, handler, - ACPI_FORMAT_UINT64(address), - acpi_ut_get_region_name(region_obj->region. - space_id))); - - if (!(handler_desc->address_space.handler_flags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { - /* - * For handlers other than the default (supplied) handlers, we must - * exit the interpreter because the handler *might* block -- we don't - * know what it will do, so we can't hold the lock on the interpreter. - */ - acpi_ex_exit_interpreter(); - } - /* Call the handler */ status = handler(function, address, bit_width, value, context, region_obj2->extra.region_context); + if (context_locked) { + acpi_os_release_mutex(context_mutex); + } + if (ACPI_FAILURE(status)) { ACPI_EXCEPTION((AE_INFO, status, "Returned by Handler for [%s]", acpi_ut_get_region_name(region_obj->region. @@ -276,6 +305,7 @@ } } +re_enter_interpreter: if (!(handler_desc->address_space.handler_flags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* --- linux-5.8.0.orig/drivers/acpi/acpica/evxfregn.c +++ linux-5.8.0/drivers/acpi/acpica/evxfregn.c @@ -201,6 +201,8 @@ /* Now we can delete the handler object */ + acpi_os_release_mutex(handler_obj->address_space. + context_mutex); acpi_ut_remove_reference(handler_obj); goto unlock_and_exit; } --- linux-5.8.0.orig/drivers/acpi/acpica/exprep.c +++ linux-5.8.0/drivers/acpi/acpica/exprep.c @@ -473,10 +473,6 @@ (u8)access_byte_width; } } - /* An additional reference for the container */ - - acpi_ut_add_reference(obj_desc->field.region_obj); - ACPI_DEBUG_PRINT((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", obj_desc->field.start_field_bit_offset, --- linux-5.8.0.orig/drivers/acpi/acpica/nsaccess.c +++ linux-5.8.0/drivers/acpi/acpica/nsaccess.c @@ -99,13 +99,12 @@ * just create and link the new node(s) here. */ new_node = - ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_namespace_node)); + acpi_ns_create_node(*ACPI_CAST_PTR(u32, init_val->name)); if (!new_node) { status = AE_NO_MEMORY; goto unlock_and_exit; } - ACPI_COPY_NAMESEG(new_node->name.ascii, init_val->name); new_node->descriptor_type = ACPI_DESC_TYPE_NAMED; new_node->type = init_val->type; --- linux-5.8.0.orig/drivers/acpi/acpica/utdelete.c +++ linux-5.8.0/drivers/acpi/acpica/utdelete.c @@ -568,11 +568,6 @@ next_object = object->buffer_field.buffer_obj; break; - case ACPI_TYPE_LOCAL_REGION_FIELD: - - next_object = object->field.region_obj; - break; - case ACPI_TYPE_LOCAL_BANK_FIELD: next_object = object->bank_field.bank_obj; @@ -613,6 +608,7 @@ } break; + case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_REGION: default: --- linux-5.8.0.orig/drivers/acpi/apei/ghes.c +++ linux-5.8.0/drivers/acpi/apei/ghes.c @@ -879,7 +879,7 @@ estatus_node->task_work.func = ghes_kick_task_work; estatus_node->task_work_cpu = smp_processor_id(); ret = task_work_add(current, &estatus_node->task_work, - true); + TWA_RESUME); if (ret) estatus_node->task_work.func = NULL; } --- linux-5.8.0.orig/drivers/acpi/arm64/iort.c +++ linux-5.8.0/drivers/acpi/arm64/iort.c @@ -1069,6 +1069,11 @@ ncomp = (struct acpi_iort_named_component *)node->node_data; + if (!ncomp->memory_address_limit) { + pr_warn(FW_BUG "Named component missing memory address limit\n"); + return -EINVAL; + } + *size = ncomp->memory_address_limit >= 64 ? U64_MAX : 1ULL<memory_address_limit; @@ -1088,6 +1093,11 @@ rc = (struct acpi_iort_root_complex *)node->node_data; + if (!rc->memory_address_limit) { + pr_warn(FW_BUG "Root complex missing memory address limit\n"); + return -EINVAL; + } + *size = rc->memory_address_limit >= 64 ? U64_MAX : 1ULL<memory_address_limit; @@ -1135,8 +1145,8 @@ end = dmaaddr + size - 1; mask = DMA_BIT_MASK(ilog2(end) + 1); dev->bus_dma_limit = end; - dev->coherent_dma_mask = mask; - *dev->dma_mask = mask; + dev->coherent_dma_mask = min(dev->coherent_dma_mask, mask); + *dev->dma_mask = min(*dev->dma_mask, mask); } *dma_addr = dmaaddr; @@ -1680,3 +1690,58 @@ iort_init_platform_devices(); } + +#ifdef CONFIG_ZONE_DMA +/* + * Extract the highest CPU physical address accessible to all DMA masters in + * the system. PHYS_ADDR_MAX is returned when no constrained device is found. + */ +phys_addr_t __init acpi_iort_dma_get_max_cpu_address(void) +{ + phys_addr_t limit = PHYS_ADDR_MAX; + struct acpi_iort_node *node, *end; + struct acpi_table_iort *iort; + acpi_status status; + int i; + + if (acpi_disabled) + return limit; + + status = acpi_get_table(ACPI_SIG_IORT, 0, + (struct acpi_table_header **)&iort); + if (ACPI_FAILURE(status)) + return limit; + + node = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->node_offset); + end = ACPI_ADD_PTR(struct acpi_iort_node, iort, iort->header.length); + + for (i = 0; i < iort->node_count; i++) { + if (node >= end) + break; + + switch (node->type) { + struct acpi_iort_named_component *ncomp; + struct acpi_iort_root_complex *rc; + phys_addr_t local_limit; + + case ACPI_IORT_NODE_NAMED_COMPONENT: + ncomp = (struct acpi_iort_named_component *)node->node_data; + local_limit = DMA_BIT_MASK(ncomp->memory_address_limit); + limit = min_not_zero(limit, local_limit); + break; + + case ACPI_IORT_NODE_PCI_ROOT_COMPLEX: + if (node->revision < 1) + break; + + rc = (struct acpi_iort_root_complex *)node->node_data; + local_limit = DMA_BIT_MASK(rc->memory_address_limit); + limit = min_not_zero(limit, local_limit); + break; + } + node = ACPI_ADD_PTR(struct acpi_iort_node, node, node->length); + } + acpi_put_table(&iort->header); + return limit; +} +#endif --- linux-5.8.0.orig/drivers/acpi/button.c +++ linux-5.8.0/drivers/acpi/button.c @@ -102,7 +102,18 @@ */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "MEDION"), - DMI_MATCH(DMI_PRODUCT_NAME, "E2215T MD60198"), + DMI_MATCH(DMI_PRODUCT_NAME, "E2215T"), + }, + .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, + }, + { + /* + * Medion Akoya E2228T, notification of the LID device only + * happens on close, not on open and _LID always returns closed. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MEDION"), + DMI_MATCH(DMI_PRODUCT_NAME, "E2228T"), }, .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, }, @@ -153,6 +164,7 @@ int last_state; ktime_t last_time; bool suspended; + bool lid_state_initialized; }; static struct acpi_device *lid_device; @@ -383,6 +395,8 @@ static void acpi_lid_initialize_state(struct acpi_device *device) { + struct acpi_button *button = acpi_driver_data(device); + switch (lid_init_state) { case ACPI_BUTTON_LID_INIT_OPEN: (void)acpi_lid_notify_state(device, 1); @@ -394,13 +408,14 @@ default: break; } + + button->lid_state_initialized = true; } static void acpi_button_notify(struct acpi_device *device, u32 event) { struct acpi_button *button = acpi_driver_data(device); struct input_dev *input; - int users; switch (event) { case ACPI_FIXED_HARDWARE_EVENT: @@ -409,10 +424,7 @@ case ACPI_BUTTON_NOTIFY_STATUS: input = button->input; if (button->type == ACPI_BUTTON_TYPE_LID) { - mutex_lock(&button->input->mutex); - users = button->input->users; - mutex_unlock(&button->input->mutex); - if (users) + if (button->lid_state_initialized) acpi_lid_update_state(device, true); } else { int keycode; @@ -457,7 +469,7 @@ struct acpi_button *button = acpi_driver_data(device); button->suspended = false; - if (button->type == ACPI_BUTTON_TYPE_LID && button->input->users) { + if (button->type == ACPI_BUTTON_TYPE_LID) { button->last_state = !!acpi_lid_evaluate_state(device); button->last_time = ktime_get(); acpi_lid_initialize_state(device); --- linux-5.8.0.orig/drivers/acpi/device_pm.c +++ linux-5.8.0/drivers/acpi/device_pm.c @@ -749,7 +749,7 @@ static DEFINE_MUTEX(acpi_wakeup_lock); static int __acpi_device_wakeup_enable(struct acpi_device *adev, - u32 target_state, int max_count) + u32 target_state) { struct acpi_device_wakeup *wakeup = &adev->wakeup; acpi_status status; @@ -757,15 +757,26 @@ mutex_lock(&acpi_wakeup_lock); - if (wakeup->enable_count >= max_count) - goto out; - + /* + * If the device wakeup power is already enabled, disable it and enable + * it again in case it depends on the configuration of subordinate + * devices and the conditions have changed since it was enabled last + * time. + */ if (wakeup->enable_count > 0) - goto inc; + acpi_disable_wakeup_device_power(adev); error = acpi_enable_wakeup_device_power(adev, target_state); - if (error) + if (error) { + if (wakeup->enable_count > 0) { + acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number); + wakeup->enable_count = 0; + } goto out; + } + + if (wakeup->enable_count > 0) + goto inc; status = acpi_enable_gpe(wakeup->gpe_device, wakeup->gpe_number); if (ACPI_FAILURE(status)) { @@ -778,7 +789,10 @@ (unsigned int)wakeup->gpe_number); inc: - wakeup->enable_count++; + if (wakeup->enable_count < INT_MAX) + wakeup->enable_count++; + else + acpi_handle_info(adev->handle, "Wakeup enable count out of bounds!\n"); out: mutex_unlock(&acpi_wakeup_lock); @@ -799,7 +813,7 @@ */ static int acpi_device_wakeup_enable(struct acpi_device *adev, u32 target_state) { - return __acpi_device_wakeup_enable(adev, target_state, 1); + return __acpi_device_wakeup_enable(adev, target_state); } /** @@ -829,8 +843,12 @@ mutex_unlock(&acpi_wakeup_lock); } -static int __acpi_pm_set_device_wakeup(struct device *dev, bool enable, - int max_count) +/** + * acpi_pm_set_device_wakeup - Enable/disable remote wakeup for given device. + * @dev: Device to enable/disable to generate wakeup events. + * @enable: Whether to enable or disable the wakeup functionality. + */ +int acpi_pm_set_device_wakeup(struct device *dev, bool enable) { struct acpi_device *adev; int error; @@ -850,37 +868,15 @@ return 0; } - error = __acpi_device_wakeup_enable(adev, acpi_target_system_state(), - max_count); + error = __acpi_device_wakeup_enable(adev, acpi_target_system_state()); if (!error) dev_dbg(dev, "Wakeup enabled by ACPI\n"); return error; } - -/** - * acpi_pm_set_device_wakeup - Enable/disable remote wakeup for given device. - * @dev: Device to enable/disable to generate wakeup events. - * @enable: Whether to enable or disable the wakeup functionality. - */ -int acpi_pm_set_device_wakeup(struct device *dev, bool enable) -{ - return __acpi_pm_set_device_wakeup(dev, enable, 1); -} EXPORT_SYMBOL_GPL(acpi_pm_set_device_wakeup); /** - * acpi_pm_set_bridge_wakeup - Enable/disable remote wakeup for given bridge. - * @dev: Bridge device to enable/disable to generate wakeup events. - * @enable: Whether to enable or disable the wakeup functionality. - */ -int acpi_pm_set_bridge_wakeup(struct device *dev, bool enable) -{ - return __acpi_pm_set_device_wakeup(dev, enable, INT_MAX); -} -EXPORT_SYMBOL_GPL(acpi_pm_set_bridge_wakeup); - -/** * acpi_dev_pm_low_power - Put ACPI device into a low-power state. * @dev: Device to put into a low-power state. * @adev: ACPI device node corresponding to @dev. --- linux-5.8.0.orig/drivers/acpi/device_sysfs.c +++ linux-5.8.0/drivers/acpi/device_sysfs.c @@ -251,20 +251,12 @@ if (add_uevent_var(env, "MODALIAS=")) return -ENOMEM; - len = create_pnp_modalias(adev, &env->buf[env->buflen - 1], - sizeof(env->buf) - env->buflen); - if (len < 0) - return len; - - env->buflen += len; - if (!adev->data.of_compatible) - return 0; - - if (len > 0 && add_uevent_var(env, "MODALIAS=")) - return -ENOMEM; - - len = create_of_modalias(adev, &env->buf[env->buflen - 1], - sizeof(env->buf) - env->buflen); + if (adev->data.of_compatible) + len = create_of_modalias(adev, &env->buf[env->buflen - 1], + sizeof(env->buf) - env->buflen); + else + len = create_pnp_modalias(adev, &env->buf[env->buflen - 1], + sizeof(env->buf) - env->buflen); if (len < 0) return len; --- linux-5.8.0.orig/drivers/acpi/ec.c +++ linux-5.8.0/drivers/acpi/ec.c @@ -2011,20 +2011,16 @@ if (acpi_any_gpe_status_set(first_ec->gpe)) return true; - if (ec_no_wakeup) - return false; - /* * Dispatch the EC GPE in-band, but do not report wakeup in any case * to allow the caller to process events properly after that. */ ret = acpi_dispatch_gpe(NULL, first_ec->gpe); - if (ret == ACPI_INTERRUPT_HANDLED) { + if (ret == ACPI_INTERRUPT_HANDLED) pm_pr_dbg("ACPI EC GPE dispatched\n"); - /* Flush the event and query workqueues. */ - acpi_ec_flush_work(); - } + /* Flush the event and query workqueues. */ + acpi_ec_flush_work(); return false; } --- linux-5.8.0.orig/drivers/acpi/evged.c +++ linux-5.8.0/drivers/acpi/evged.c @@ -101,7 +101,7 @@ switch (gsi) { case 0 ... 255: - sprintf(ev_name, "_%c%02hhX", + sprintf(ev_name, "_%c%02X", trigger == ACPI_EDGE_SENSITIVE ? 'E' : 'L', gsi); if (ACPI_SUCCESS(acpi_get_handle(handle, ev_name, &evt_handle))) --- linux-5.8.0.orig/drivers/acpi/fan.c +++ linux-5.8.0/drivers/acpi/fan.c @@ -351,6 +351,7 @@ struct acpi_fan_fps *fps = &fan->fps[i]; snprintf(fps->name, ACPI_FPS_NAME_LEN, "state%d", i); + sysfs_attr_init(&fps->dev_attr.attr); fps->dev_attr.show = show_state; fps->dev_attr.store = NULL; fps->dev_attr.attr.name = fps->name; --- linux-5.8.0.orig/drivers/acpi/internal.h +++ linux-5.8.0/drivers/acpi/internal.h @@ -9,6 +9,8 @@ #ifndef _ACPI_INTERNAL_H_ #define _ACPI_INTERNAL_H_ +#include + #define PREFIX "ACPI: " int early_acpi_osi_init(void); @@ -96,9 +98,11 @@ extern struct list_head acpi_bus_id_list; +#define ACPI_MAX_DEVICE_INSTANCES 4096 + struct acpi_device_bus_id { - char bus_id[15]; - unsigned int instance_no; + const char *bus_id; + struct ida instance_ida; struct list_head node; }; --- linux-5.8.0.orig/drivers/acpi/nfit/core.c +++ linux-5.8.0/drivers/acpi/nfit/core.c @@ -1552,7 +1552,7 @@ le16_to_cpu(nfit_dcr->dcr->code)); break; } - if (rc != ENXIO) + if (rc != -ENXIO) break; } mutex_unlock(&acpi_desc->init_mutex); @@ -1823,6 +1823,7 @@ static int acpi_nfit_add_dimm(struct acpi_nfit_desc *acpi_desc, struct nfit_mem *nfit_mem, u32 device_handle) { + struct nvdimm_bus_descriptor *nd_desc = &acpi_desc->nd_desc; struct acpi_device *adev, *adev_dimm; struct device *dev = acpi_desc->dev; unsigned long dsm_mask, label_mask; @@ -1834,6 +1835,7 @@ /* nfit test assumes 1:1 relationship between commands and dsms */ nfit_mem->dsm_mask = acpi_desc->dimm_cmd_force_en; nfit_mem->family = NVDIMM_FAMILY_INTEL; + set_bit(NVDIMM_FAMILY_INTEL, &nd_desc->dimm_family_mask); if (dcr->valid_fields & ACPI_NFIT_CONTROL_MFG_INFO_VALID) sprintf(nfit_mem->id, "%04x-%02x-%04x-%08x", @@ -1886,10 +1888,13 @@ * Note, that checking for function0 (bit0) tells us if any commands * are reachable through this GUID. */ + clear_bit(NVDIMM_FAMILY_INTEL, &nd_desc->dimm_family_mask); for (i = 0; i <= NVDIMM_FAMILY_MAX; i++) - if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 1)) + if (acpi_check_dsm(adev_dimm->handle, to_nfit_uuid(i), 1, 1)) { + set_bit(i, &nd_desc->dimm_family_mask); if (family < 0 || i == default_dsm_family) family = i; + } /* limit the supported commands to those that are publicly documented */ nfit_mem->family = family; @@ -2153,6 +2158,9 @@ nd_desc->cmd_mask = acpi_desc->bus_cmd_force_en; nd_desc->bus_dsm_mask = acpi_desc->bus_nfit_cmd_force_en; + set_bit(ND_CMD_CALL, &nd_desc->cmd_mask); + set_bit(NVDIMM_BUS_FAMILY_NFIT, &nd_desc->bus_family_mask); + adev = to_acpi_dev(acpi_desc); if (!adev) return; @@ -2160,7 +2168,6 @@ for (i = ND_CMD_ARS_CAP; i <= ND_CMD_CLEAR_ERROR; i++) if (acpi_check_dsm(adev->handle, guid, 1, 1ULL << i)) set_bit(i, &nd_desc->cmd_mask); - set_bit(ND_CMD_CALL, &nd_desc->cmd_mask); dsm_mask = (1 << ND_CMD_ARS_CAP) | --- linux-5.8.0.orig/drivers/acpi/nfit/nfit.h +++ linux-5.8.0/drivers/acpi/nfit/nfit.h @@ -33,7 +33,6 @@ | ACPI_NFIT_MEM_RESTORE_FAILED | ACPI_NFIT_MEM_FLUSH_FAILED \ | ACPI_NFIT_MEM_NOT_ARMED | ACPI_NFIT_MEM_MAP_FAILED) -#define NVDIMM_FAMILY_MAX NVDIMM_FAMILY_HYPERV #define NVDIMM_CMD_MAX 31 #define NVDIMM_STANDARD_CMDMASK \ --- linux-5.8.0.orig/drivers/acpi/numa/hmat.c +++ linux-5.8.0/drivers/acpi/numa/hmat.c @@ -424,7 +424,8 @@ pr_info("HMAT: Memory Flags:%04x Processor Domain:%u Memory Domain:%u\n", p->flags, p->processor_PD, p->memory_PD); - if (p->flags & ACPI_HMAT_MEMORY_PD_VALID && hmat_revision == 1) { + if ((hmat_revision == 1 && p->flags & ACPI_HMAT_MEMORY_PD_VALID) || + hmat_revision > 1) { target = find_mem_target(p->memory_PD); if (!target) { pr_debug("HMAT: Memory Domain missing from SRAT\n"); --- linux-5.8.0.orig/drivers/acpi/numa/srat.c +++ linux-5.8.0/drivers/acpi/numa/srat.c @@ -31,7 +31,7 @@ int pxm_to_node(int pxm) { - if (pxm < 0) + if (pxm < 0 || pxm >= MAX_PXM_DOMAINS || numa_off) return NUMA_NO_NODE; return pxm_to_node_map[pxm]; } --- linux-5.8.0.orig/drivers/acpi/osi.c +++ linux-5.8.0/drivers/acpi/osi.c @@ -468,6 +468,77 @@ }, /* + * The following Lenovo models have a broken workaround in the + * acpi_video backlight implementation to meet the Windows 8 + * requirement of 101 backlight levels. Reverting to pre-Win8 + * behavior fixes the problem. + */ + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad L430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T430s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T430s"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad T530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad W530", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W530"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X1 Carbon", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X1 Carbon"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad X230", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X230"), + }, + }, + { + .callback = dmi_disable_osi_win8, + .ident = "Lenovo ThinkPad Edge E330", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad Edge E330"), + }, + }, + + /* * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. * Linux ignores it, except for the machines enumerated below. */ --- linux-5.8.0.orig/drivers/acpi/pci_mcfg.c +++ linux-5.8.0/drivers/acpi/pci_mcfg.c @@ -142,6 +142,26 @@ XGENE_V2_ECAM_MCFG(4, 0), XGENE_V2_ECAM_MCFG(4, 1), XGENE_V2_ECAM_MCFG(4, 2), + +#define ALTRA_ECAM_QUIRK(rev, seg) \ + { "Ampere", "Altra ", rev, seg, MCFG_BUS_ANY, &pci_32b_read_ops } + + ALTRA_ECAM_QUIRK(1, 0), + ALTRA_ECAM_QUIRK(1, 1), + ALTRA_ECAM_QUIRK(1, 2), + ALTRA_ECAM_QUIRK(1, 3), + ALTRA_ECAM_QUIRK(1, 4), + ALTRA_ECAM_QUIRK(1, 5), + ALTRA_ECAM_QUIRK(1, 6), + ALTRA_ECAM_QUIRK(1, 7), + ALTRA_ECAM_QUIRK(1, 8), + ALTRA_ECAM_QUIRK(1, 9), + ALTRA_ECAM_QUIRK(1, 10), + ALTRA_ECAM_QUIRK(1, 11), + ALTRA_ECAM_QUIRK(1, 12), + ALTRA_ECAM_QUIRK(1, 13), + ALTRA_ECAM_QUIRK(1, 14), + ALTRA_ECAM_QUIRK(1, 15), }; static char mcfg_oem_id[ACPI_OEM_ID_SIZE]; --- linux-5.8.0.orig/drivers/acpi/processor_idle.c +++ linux-5.8.0/drivers/acpi/processor_idle.c @@ -29,6 +29,7 @@ */ #ifdef CONFIG_X86 #include +#include #endif #define ACPI_PROCESSOR_CLASS "processor" @@ -550,6 +551,12 @@ wait_for_freeze(); } else return -ENODEV; + +#if defined(CONFIG_X86) && defined(CONFIG_HOTPLUG_CPU) + /* If NMI wants to wake up CPU0, start CPU0. */ + if (wakeup_cpu0()) + start_cpu0(); +#endif } /* Never reached */ --- linux-5.8.0.orig/drivers/acpi/property.c +++ linux-5.8.0/drivers/acpi/property.c @@ -794,9 +794,6 @@ const union acpi_object *obj; int ret; - if (!val) - return -EINVAL; - if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64) { ret = acpi_data_get_property(data, propname, ACPI_TYPE_INTEGER, &obj); if (ret) @@ -806,28 +803,43 @@ case DEV_PROP_U8: if (obj->integer.value > U8_MAX) return -EOVERFLOW; - *(u8 *)val = obj->integer.value; + + if (val) + *(u8 *)val = obj->integer.value; + break; case DEV_PROP_U16: if (obj->integer.value > U16_MAX) return -EOVERFLOW; - *(u16 *)val = obj->integer.value; + + if (val) + *(u16 *)val = obj->integer.value; + break; case DEV_PROP_U32: if (obj->integer.value > U32_MAX) return -EOVERFLOW; - *(u32 *)val = obj->integer.value; + + if (val) + *(u32 *)val = obj->integer.value; + break; default: - *(u64 *)val = obj->integer.value; + if (val) + *(u64 *)val = obj->integer.value; + break; } + + if (!val) + return 1; } else if (proptype == DEV_PROP_STRING) { ret = acpi_data_get_property(data, propname, ACPI_TYPE_STRING, &obj); if (ret) return ret; - *(char **)val = obj->string.pointer; + if (val) + *(char **)val = obj->string.pointer; return 1; } else { @@ -841,7 +853,7 @@ { int ret; - if (!adev) + if (!adev || !val) return -EINVAL; ret = acpi_data_prop_read_single(&adev->data, propname, proptype, val); @@ -935,10 +947,20 @@ const union acpi_object *items; int ret; - if (val && nval == 1) { + if (nval == 1 || !val) { ret = acpi_data_prop_read_single(data, propname, proptype, val); - if (ret >= 0) + /* + * The overflow error means that the property is there and it is + * single-value, but its type does not match, so return. + */ + if (ret >= 0 || ret == -EOVERFLOW) return ret; + + /* + * Reading this property as a single-value one failed, but its + * value may still be represented as one-element array, so + * continue. + */ } ret = acpi_data_get_property_array(data, propname, ACPI_TYPE_ANY, &obj); --- linux-5.8.0.orig/drivers/acpi/resource.c +++ linux-5.8.0/drivers/acpi/resource.c @@ -541,7 +541,7 @@ ret = c->preproc(ares, c->preproc_data); if (ret < 0) { c->error = ret; - return AE_CTRL_TERMINATE; + return AE_ABORT_METHOD; } else if (ret > 0) { return AE_OK; } --- linux-5.8.0.orig/drivers/acpi/scan.c +++ linux-5.8.0/drivers/acpi/scan.c @@ -482,10 +482,10 @@ list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node) if (!strcmp(acpi_device_bus_id->bus_id, acpi_device_hid(device))) { - if (acpi_device_bus_id->instance_no > 0) - acpi_device_bus_id->instance_no--; - else { + ida_simple_remove(&acpi_device_bus_id->instance_ida, device->pnp.instance_no); + if (ida_is_empty(&acpi_device_bus_id->instance_ida)) { list_del(&acpi_device_bus_id->node); + kfree_const(acpi_device_bus_id->bus_id); kfree(acpi_device_bus_id); } break; @@ -585,6 +585,8 @@ if (!device) return -EINVAL; + *device = NULL; + status = acpi_get_data_full(handle, acpi_scan_drop_device, (void **)device, callback); if (ACPI_FAILURE(status) || !*device) { @@ -620,12 +622,38 @@ put_device(&adev->dev); } +static struct acpi_device_bus_id *acpi_device_bus_id_match(const char *dev_id) +{ + struct acpi_device_bus_id *acpi_device_bus_id; + + /* Find suitable bus_id and instance number in acpi_bus_id_list. */ + list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node) { + if (!strcmp(acpi_device_bus_id->bus_id, dev_id)) + return acpi_device_bus_id; + } + return NULL; +} + +static int acpi_device_set_name(struct acpi_device *device, + struct acpi_device_bus_id *acpi_device_bus_id) +{ + struct ida *instance_ida = &acpi_device_bus_id->instance_ida; + int result; + + result = ida_simple_get(instance_ida, 0, ACPI_MAX_DEVICE_INSTANCES, GFP_KERNEL); + if (result < 0) + return result; + + device->pnp.instance_no = result; + dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, result); + return 0; +} + int acpi_device_add(struct acpi_device *device, void (*release)(struct device *)) { + struct acpi_device_bus_id *acpi_device_bus_id; int result; - struct acpi_device_bus_id *acpi_device_bus_id, *new_bus_id; - int found = 0; if (device->handle) { acpi_status status; @@ -651,34 +679,38 @@ INIT_LIST_HEAD(&device->del_list); mutex_init(&device->physical_node_lock); - new_bus_id = kzalloc(sizeof(struct acpi_device_bus_id), GFP_KERNEL); - if (!new_bus_id) { - pr_err(PREFIX "Memory allocation error\n"); - result = -ENOMEM; - goto err_detach; - } - mutex_lock(&acpi_device_lock); - /* - * Find suitable bus_id and instance number in acpi_bus_id_list - * If failed, create one and link it into acpi_bus_id_list - */ - list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node) { - if (!strcmp(acpi_device_bus_id->bus_id, - acpi_device_hid(device))) { - acpi_device_bus_id->instance_no++; - found = 1; - kfree(new_bus_id); - break; + + acpi_device_bus_id = acpi_device_bus_id_match(acpi_device_hid(device)); + if (acpi_device_bus_id) { + result = acpi_device_set_name(device, acpi_device_bus_id); + if (result) + goto err_unlock; + } else { + acpi_device_bus_id = kzalloc(sizeof(*acpi_device_bus_id), + GFP_KERNEL); + if (!acpi_device_bus_id) { + result = -ENOMEM; + goto err_unlock; } - } - if (!found) { - acpi_device_bus_id = new_bus_id; - strcpy(acpi_device_bus_id->bus_id, acpi_device_hid(device)); - acpi_device_bus_id->instance_no = 0; + acpi_device_bus_id->bus_id = + kstrdup_const(acpi_device_hid(device), GFP_KERNEL); + if (!acpi_device_bus_id->bus_id) { + kfree(acpi_device_bus_id); + result = -ENOMEM; + goto err_unlock; + } + + ida_init(&acpi_device_bus_id->instance_ida); + + result = acpi_device_set_name(device, acpi_device_bus_id); + if (result) { + kfree(acpi_device_bus_id); + goto err_unlock; + } + list_add_tail(&acpi_device_bus_id->node, &acpi_bus_id_list); } - dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, acpi_device_bus_id->instance_no); if (device->parent) list_add_tail(&device->node, &device->parent->children); @@ -709,9 +741,10 @@ if (device->parent) list_del(&device->node); list_del(&device->wakeup_list); + + err_unlock: mutex_unlock(&acpi_device_lock); - err_detach: acpi_detach_data(device->handle, acpi_scan_drop_device); return result; } --- linux-5.8.0.orig/drivers/acpi/tables.c +++ linux-5.8.0/drivers/acpi/tables.c @@ -791,7 +791,7 @@ } /* - * acpi_table_init() + * acpi_locate_initial_tables() * * find RSDP, find and checksum SDT/XSDT. * checksum all tables, print SDT/XSDT @@ -799,7 +799,7 @@ * result: sdt_entry[] is initialized */ -int __init acpi_table_init(void) +int __init acpi_locate_initial_tables(void) { acpi_status status; @@ -814,9 +814,45 @@ status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0); if (ACPI_FAILURE(status)) return -EINVAL; - acpi_table_initrd_scan(); + return 0; +} + +void __init acpi_reserve_initial_tables(void) +{ + int i; + + for (i = 0; i < ACPI_MAX_TABLES; i++) { + struct acpi_table_desc *table_desc = &initial_tables[i]; + u64 start = table_desc->address; + u64 size = table_desc->length; + + if (!start || !size) + break; + + pr_info("Reserving %4s table memory at [mem 0x%llx-0x%llx]\n", + table_desc->signature.ascii, start, start + size - 1); + + memblock_reserve(start, size); + } +} + +void __init acpi_table_init_complete(void) +{ + acpi_table_initrd_scan(); check_multiple_madt(); +} + +int __init acpi_table_init(void) +{ + int ret; + + ret = acpi_locate_initial_tables(); + if (ret) + return ret; + + acpi_table_init_complete(); + return 0; } --- linux-5.8.0.orig/drivers/acpi/thermal.c +++ linux-5.8.0/drivers/acpi/thermal.c @@ -175,6 +175,8 @@ int tz_enabled; int kelvin_offset; /* in millidegrees */ struct work_struct thermal_check_work; + struct mutex thermal_check_lock; + refcount_t thermal_check_count; }; /* -------------------------------------------------------------------------- @@ -496,17 +498,6 @@ return 0; } -static void acpi_thermal_check(void *data) -{ - struct acpi_thermal *tz = data; - - if (!tz->tz_enabled) - return; - - thermal_zone_device_update(tz->thermal_zone, - THERMAL_EVENT_UNSPECIFIED); -} - /* sys I/F for generic thermal sysfs support */ static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp) @@ -540,6 +531,8 @@ return 0; } +static void acpi_thermal_check_fn(struct work_struct *work); + static int thermal_set_mode(struct thermal_zone_device *thermal, enum thermal_device_mode mode) { @@ -565,7 +558,7 @@ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "%s kernel ACPI thermal control\n", tz->tz_enabled ? "Enable" : "Disable")); - acpi_thermal_check(tz); + acpi_thermal_check_fn(&tz->thermal_check_work); } return 0; } @@ -725,27 +718,24 @@ return 0; } - -static int thermal_notify(struct thermal_zone_device *thermal, int trip, - enum thermal_trip_type trip_type) +static void acpi_thermal_zone_device_hot(struct thermal_zone_device *thermal) { - u8 type = 0; struct acpi_thermal *tz = thermal->devdata; - if (trip_type == THERMAL_TRIP_CRITICAL) - type = ACPI_THERMAL_NOTIFY_CRITICAL; - else if (trip_type == THERMAL_TRIP_HOT) - type = ACPI_THERMAL_NOTIFY_HOT; - else - return 0; - acpi_bus_generate_netlink_event(tz->device->pnp.device_class, - dev_name(&tz->device->dev), type, 1); + dev_name(&tz->device->dev), + ACPI_THERMAL_NOTIFY_HOT, 1); +} - if (trip_type == THERMAL_TRIP_CRITICAL && nocrt) - return 1; +static void acpi_thermal_zone_device_critical(struct thermal_zone_device *thermal) +{ + struct acpi_thermal *tz = thermal->devdata; - return 0; + acpi_bus_generate_netlink_event(tz->device->pnp.device_class, + dev_name(&tz->device->dev), + ACPI_THERMAL_NOTIFY_CRITICAL, 1); + + thermal_zone_device_critical(thermal); } static int acpi_thermal_cooling_device_cb(struct thermal_zone_device *thermal, @@ -862,7 +852,8 @@ .get_trip_temp = thermal_get_trip_temp, .get_crit_temp = thermal_get_crit_temp, .get_trend = thermal_get_trend, - .notify = thermal_notify, + .hot = acpi_thermal_zone_device_hot, + .critical = acpi_thermal_zone_device_critical, }; static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz) @@ -934,6 +925,12 @@ Driver Interface -------------------------------------------------------------------------- */ +static void acpi_queue_thermal_check(struct acpi_thermal *tz) +{ + if (!work_pending(&tz->thermal_check_work)) + queue_work(acpi_thermal_pm_queue, &tz->thermal_check_work); +} + static void acpi_thermal_notify(struct acpi_device *device, u32 event) { struct acpi_thermal *tz = acpi_driver_data(device); @@ -944,17 +941,17 @@ switch (event) { case ACPI_THERMAL_NOTIFY_TEMPERATURE: - acpi_thermal_check(tz); + acpi_queue_thermal_check(tz); break; case ACPI_THERMAL_NOTIFY_THRESHOLDS: acpi_thermal_trips_update(tz, ACPI_TRIPS_REFRESH_THRESHOLDS); - acpi_thermal_check(tz); + acpi_queue_thermal_check(tz); acpi_bus_generate_netlink_event(device->pnp.device_class, dev_name(&device->dev), event, 0); break; case ACPI_THERMAL_NOTIFY_DEVICES: acpi_thermal_trips_update(tz, ACPI_TRIPS_REFRESH_DEVICES); - acpi_thermal_check(tz); + acpi_queue_thermal_check(tz); acpi_bus_generate_netlink_event(device->pnp.device_class, dev_name(&device->dev), event, 0); break; @@ -1054,7 +1051,27 @@ { struct acpi_thermal *tz = container_of(work, struct acpi_thermal, thermal_check_work); - acpi_thermal_check(tz); + + if (!tz->tz_enabled) + return; + /* + * In general, it is not sufficient to check the pending bit, because + * subsequent instances of this function may be queued after one of them + * has started running (e.g. if _TMP sleeps). Avoid bailing out if just + * one of them is running, though, because it may have done the actual + * check some time ago, so allow at least one of them to block on the + * mutex while another one is running the update. + */ + if (!refcount_dec_not_one(&tz->thermal_check_count)) + return; + + mutex_lock(&tz->thermal_check_lock); + + thermal_zone_device_update(tz->thermal_zone, THERMAL_EVENT_UNSPECIFIED); + + refcount_inc(&tz->thermal_check_count); + + mutex_unlock(&tz->thermal_check_lock); } static int acpi_thermal_add(struct acpi_device *device) @@ -1086,6 +1103,8 @@ if (result) goto free_memory; + refcount_set(&tz->thermal_check_count, 3); + mutex_init(&tz->thermal_check_lock); INIT_WORK(&tz->thermal_check_work, acpi_thermal_check_fn); pr_info(PREFIX "%s [%s] (%ld C)\n", acpi_device_name(device), @@ -1151,7 +1170,7 @@ tz->state.active |= tz->trips.active[i].flags.enabled; } - queue_work(acpi_thermal_pm_queue, &tz->thermal_check_work); + acpi_queue_thermal_check(tz); return AE_OK; } --- linux-5.8.0.orig/drivers/acpi/video_detect.c +++ linux-5.8.0/drivers/acpi/video_detect.c @@ -143,6 +143,14 @@ }, { .callback = video_detect_force_vendor, + .ident = "GIGABYTE GB-BXBT-2807", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "GB-BXBT-2807"), + }, + }, + { + .callback = video_detect_force_vendor, .ident = "Sony VPCEH3U1E", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), @@ -282,6 +290,15 @@ DMI_MATCH(DMI_PRODUCT_NAME, "530U4E/540U4E"), }, }, + /* https://bugs.launchpad.net/bugs/1894667 */ + { + .callback = video_detect_force_video, + .ident = "HP 635 Notebook", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP 635 Notebook PC"), + }, + }, /* Non win8 machines which need native backlight nevertheless */ { --- linux-5.8.0.orig/drivers/amba/bus.c +++ linux-5.8.0/drivers/amba/bus.c @@ -299,10 +299,11 @@ { struct amba_device *pcdev = to_amba_device(dev); struct amba_driver *drv = to_amba_driver(dev->driver); - int ret; + int ret = 0; pm_runtime_get_sync(dev); - ret = drv->remove(pcdev); + if (drv->remove) + ret = drv->remove(pcdev); pm_runtime_put_noidle(dev); /* Undo the runtime PM settings in amba_probe() */ @@ -319,7 +320,9 @@ static void amba_shutdown(struct device *dev) { struct amba_driver *drv = to_amba_driver(dev->driver); - drv->shutdown(to_amba_device(dev)); + + if (drv->shutdown) + drv->shutdown(to_amba_device(dev)); } /** @@ -332,12 +335,13 @@ */ int amba_driver_register(struct amba_driver *drv) { - drv->drv.bus = &amba_bustype; + if (!drv->probe) + return -EINVAL; -#define SETFN(fn) if (drv->fn) drv->drv.fn = amba_##fn - SETFN(probe); - SETFN(remove); - SETFN(shutdown); + drv->drv.bus = &amba_bustype; + drv->drv.probe = amba_probe; + drv->drv.remove = amba_remove; + drv->drv.shutdown = amba_shutdown; return driver_register(&drv->drv); } --- linux-5.8.0.orig/drivers/android/Kconfig +++ linux-5.8.0/drivers/android/Kconfig @@ -9,7 +9,7 @@ if ANDROID config ANDROID_BINDER_IPC - bool "Android Binder IPC Driver" + tristate "Android Binder IPC Driver" depends on MMU default n help @@ -21,8 +21,8 @@ between said processes. config ANDROID_BINDERFS - bool "Android Binderfs filesystem" - depends on ANDROID_BINDER_IPC + tristate "Android Binderfs filesystem" + depends on (ANDROID_BINDER_IPC=y) || (ANDROID_BINDER_IPC=m && m) default n help Binderfs is a pseudo-filesystem for the Android Binder IPC driver --- linux-5.8.0.orig/drivers/android/Makefile +++ linux-5.8.0/drivers/android/Makefile @@ -1,6 +1,10 @@ # SPDX-License-Identifier: GPL-2.0-only ccflags-y += -I$(src) # needed for trace events -obj-$(CONFIG_ANDROID_BINDERFS) += binderfs.o -obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o binder_alloc.o -obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o +binder_linux-y := binder.o binder_alloc.o +obj-$(CONFIG_ANDROID_BINDER_IPC) += binder_linux.o +binder_linux-$(CONFIG_ANDROID_BINDERFS) += binderfs.o +binder_linux-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o + +# binder-$(CONFIG_ANDROID_BINDER_IPC) := binder.o binder_alloc.o +# binder-$(CONFIG_ANDROID_BINDERFS) += binderfs.o --- linux-5.8.0.orig/drivers/android/binder.c +++ linux-5.8.0/drivers/android/binder.c @@ -223,7 +223,7 @@ struct binder_work { struct list_head entry; - enum { + enum binder_work_type { BINDER_WORK_TRANSACTION = 1, BINDER_WORK_TRANSACTION_COMPLETE, BINDER_WORK_RETURN_ERROR, @@ -885,27 +885,6 @@ return w; } -/** - * binder_dequeue_work_head() - Dequeues the item at head of list - * @proc: binder_proc associated with list - * @list: list to dequeue head - * - * Removes the head of the list if there are items on the list - * - * Return: pointer dequeued binder_work, NULL if list was empty - */ -static struct binder_work *binder_dequeue_work_head( - struct binder_proc *proc, - struct list_head *list) -{ - struct binder_work *w; - - binder_inner_proc_lock(proc); - w = binder_dequeue_work_head_ilocked(list); - binder_inner_proc_unlock(proc); - return w; -} - static void binder_defer_work(struct binder_proc *proc, enum binder_deferred_state defer); static void binder_free_thread(struct binder_thread *thread); @@ -2251,7 +2230,7 @@ __close_fd_get_file(fd, &twcb->file); if (twcb->file) { filp_close(twcb->file, current->files); - task_work_add(current, &twcb->twork, true); + task_work_add(current, &twcb->twork, TWA_RESUME); } else { kfree(twcb); } @@ -2345,8 +2324,6 @@ * file is done when the transaction is torn * down. */ - WARN_ON(failed_at && - proc->tsk == current->group_leader); } break; case BINDER_TYPE_PTR: /* @@ -2861,8 +2838,7 @@ binder_size_t last_fixup_min_off = 0; struct binder_context *context = proc->context; int t_debug_id = atomic_inc_return(&binder_last_id); - char *secctx = NULL; - u32 secctx_sz = 0; + struct lsmcontext lsmctx = { }; e = binder_transaction_log_add(&binder_transaction_log); e->debug_id = t_debug_id; @@ -2982,6 +2958,12 @@ goto err_dead_binder; } e->to_node = target_node->debug_id; + if (WARN_ON(proc == target_proc)) { + return_error = BR_FAILED_REPLY; + return_error_param = -EINVAL; + return_error_line = __LINE__; + goto err_invalid_target_handle; + } if (security_binder_transaction(proc->tsk, target_proc->tsk) < 0) { return_error = BR_FAILED_REPLY; @@ -3106,18 +3088,18 @@ t->priority = task_nice(current); if (target_node && target_node->txn_security_ctx) { - u32 secid; + struct lsmblob blob; size_t added_size; - security_task_getsecid(proc->tsk, &secid); - ret = security_secid_to_secctx(secid, &secctx, &secctx_sz); + security_task_getsecid(proc->tsk, &blob); + ret = security_secid_to_secctx(&blob, &lsmctx, LSMBLOB_DISPLAY); if (ret) { return_error = BR_FAILED_REPLY; return_error_param = ret; return_error_line = __LINE__; goto err_get_secctx_failed; } - added_size = ALIGN(secctx_sz, sizeof(u64)); + added_size = ALIGN(lsmctx.len, sizeof(u64)); extra_buffers_size += added_size; if (extra_buffers_size < added_size) { /* integer overflow of extra_buffers_size */ @@ -3144,27 +3126,27 @@ t->buffer = NULL; goto err_binder_alloc_buf_failed; } - if (secctx) { + if (lsmctx.context) { int err; size_t buf_offset = ALIGN(tr->data_size, sizeof(void *)) + ALIGN(tr->offsets_size, sizeof(void *)) + ALIGN(extra_buffers_size, sizeof(void *)) - - ALIGN(secctx_sz, sizeof(u64)); + ALIGN(lsmctx.len, sizeof(u64)); t->security_ctx = (uintptr_t)t->buffer->user_data + buf_offset; err = binder_alloc_copy_to_buffer(&target_proc->alloc, t->buffer, buf_offset, - secctx, secctx_sz); + lsmctx.context, lsmctx.len); if (err) { t->security_ctx = 0; WARN_ON(1); } - security_release_secctx(secctx, secctx_sz); - secctx = NULL; + security_release_secctx(&lsmctx); } t->buffer->debug_id = t->debug_id; t->buffer->transaction = t; t->buffer->target_node = target_node; + t->buffer->clear_on_free = !!(t->flags & TF_CLEAR_BUF); trace_binder_transaction_alloc_buf(t->buffer); if (binder_alloc_copy_user_to_buffer( @@ -3216,7 +3198,7 @@ off_end_offset = off_start_offset + tr->offsets_size; sg_buf_offset = ALIGN(off_end_offset, sizeof(void *)); sg_buf_end_offset = sg_buf_offset + extra_buffers_size - - ALIGN(secctx_sz, sizeof(u64)); + ALIGN(lsmctx.len, sizeof(u64)); off_min = 0; for (buffer_offset = off_start_offset; buffer_offset < off_end_offset; buffer_offset += sizeof(binder_size_t)) { @@ -3492,8 +3474,8 @@ binder_alloc_free_buf(&target_proc->alloc, t->buffer); err_binder_alloc_buf_failed: err_bad_extra_size: - if (secctx) - security_release_secctx(secctx, secctx_sz); + if (lsmctx.context) + security_release_secctx(&lsmctx); err_get_secctx_failed: kfree(tcomplete); binder_stats_deleted(BINDER_STAT_TRANSACTION_COMPLETE); @@ -3635,10 +3617,17 @@ struct binder_node *ctx_mgr_node; mutex_lock(&context->context_mgr_node_lock); ctx_mgr_node = context->binder_context_mgr_node; - if (ctx_mgr_node) + if (ctx_mgr_node) { + if (ctx_mgr_node->proc == proc) { + binder_user_error("%d:%d context manager tried to acquire desc 0\n", + proc->pid, thread->pid); + mutex_unlock(&context->context_mgr_node_lock); + return -EINVAL; + } ret = binder_inc_ref_for_node( proc, ctx_mgr_node, strong, NULL, &rdata); + } mutex_unlock(&context->context_mgr_node_lock); } if (ret) @@ -4576,13 +4565,17 @@ struct list_head *list) { struct binder_work *w; + enum binder_work_type wtype; while (1) { - w = binder_dequeue_work_head(proc, list); + binder_inner_proc_lock(proc); + w = binder_dequeue_work_head_ilocked(list); + wtype = w ? w->type : 0; + binder_inner_proc_unlock(proc); if (!w) return; - switch (w->type) { + switch (wtype) { case BINDER_WORK_TRANSACTION: { struct binder_transaction *t; @@ -4616,9 +4609,11 @@ kfree(death); binder_stats_deleted(BINDER_STAT_DEATH); } break; + case BINDER_WORK_NODE: + break; default: pr_err("unexpected work type, %d, not freed\n", - w->type); + wtype); break; } } @@ -6190,9 +6185,20 @@ return ret; } -device_initcall(binder_init); +module_init(binder_init); +/* + * binder will have no exit function since binderfs instances can be mounted + * multiple times and also in user namespaces finding and destroying them all + * is not feasible without introducing insane locking. Just ignoring existing + * instances on module unload also wouldn't work since we would loose track of + * what major numer was dynamically allocated and also what minor numbers are + * already given out. So this would get us into all kinds of issues with device + * number reuse. So simply don't allow unloading unless we are forced to do so. + */ + +MODULE_AUTHOR("Google, Inc."); +MODULE_DESCRIPTION("Driver for Android binder device"); +MODULE_LICENSE("GPL v2"); #define CREATE_TRACE_POINTS #include "binder_trace.h" - -MODULE_LICENSE("GPL v2"); --- linux-5.8.0.orig/drivers/android/binder_alloc.c +++ linux-5.8.0/drivers/android/binder_alloc.c @@ -38,8 +38,7 @@ }; static uint32_t binder_alloc_debug_mask = BINDER_DEBUG_USER_ERROR; -module_param_named(debug_mask, binder_alloc_debug_mask, - uint, 0644); +module_param_named(alloc_debug_mask, binder_alloc_debug_mask, uint, 0644); #define binder_alloc_debug(mask, x...) \ do { \ @@ -646,6 +645,8 @@ binder_insert_free_buffer(alloc, buffer); } +static void binder_alloc_clear_buf(struct binder_alloc *alloc, + struct binder_buffer *buffer); /** * binder_alloc_free_buf() - free a binder buffer * @alloc: binder_alloc for this proc @@ -656,6 +657,18 @@ void binder_alloc_free_buf(struct binder_alloc *alloc, struct binder_buffer *buffer) { + /* + * We could eliminate the call to binder_alloc_clear_buf() + * from binder_alloc_deferred_release() by moving this to + * binder_alloc_free_buf_locked(). However, that could + * increase contention for the alloc mutex if clear_on_free + * is used frequently for large buffers. The mutex is not + * needed for correctness here. + */ + if (buffer->clear_on_free) { + binder_alloc_clear_buf(alloc, buffer); + buffer->clear_on_free = false; + } mutex_lock(&alloc->mutex); binder_free_buf_locked(alloc, buffer); mutex_unlock(&alloc->mutex); @@ -752,6 +765,10 @@ /* Transaction should already have been freed */ BUG_ON(buffer->transaction); + if (buffer->clear_on_free) { + binder_alloc_clear_buf(alloc, buffer); + buffer->clear_on_free = false; + } binder_free_buf_locked(alloc, buffer); buffers++; } @@ -1086,6 +1103,36 @@ } /** + * binder_alloc_clear_buf() - zero out buffer + * @alloc: binder_alloc for this proc + * @buffer: binder buffer to be cleared + * + * memset the given buffer to 0 + */ +static void binder_alloc_clear_buf(struct binder_alloc *alloc, + struct binder_buffer *buffer) +{ + size_t bytes = binder_alloc_buffer_size(alloc, buffer); + binder_size_t buffer_offset = 0; + + while (bytes) { + unsigned long size; + struct page *page; + pgoff_t pgoff; + void *kptr; + + page = binder_alloc_get_page(alloc, buffer, + buffer_offset, &pgoff); + size = min_t(size_t, bytes, PAGE_SIZE - pgoff); + kptr = kmap(page) + pgoff; + memset(kptr, 0, size); + kunmap(page); + bytes -= size; + buffer_offset += size; + } +} + +/** * binder_alloc_copy_user_to_buffer() - copy src user to tgt user * @alloc: binder_alloc for this proc * @buffer: binder buffer to be accessed --- linux-5.8.0.orig/drivers/android/binder_alloc.h +++ linux-5.8.0/drivers/android/binder_alloc.h @@ -6,6 +6,7 @@ #ifndef _LINUX_BINDER_ALLOC_H #define _LINUX_BINDER_ALLOC_H +#include #include #include #include @@ -23,6 +24,7 @@ * @entry: entry alloc->buffers * @rb_node: node for allocated_buffers/free_buffers rb trees * @free: %true if buffer is free + * @clear_on_free: %true if buffer must be zeroed after use * @allow_user_free: %true if user is allowed to free buffer * @async_transaction: %true if buffer is in use for an async txn * @debug_id: unique ID for debugging @@ -40,9 +42,10 @@ struct rb_node rb_node; /* free entry by size or allocated entry */ /* by address */ unsigned free:1; + unsigned clear_on_free:1; unsigned allow_user_free:1; unsigned async_transaction:1; - unsigned debug_id:29; + unsigned debug_id:28; struct binder_transaction *transaction; @@ -105,7 +108,7 @@ size_t pages_high; }; -#ifdef CONFIG_ANDROID_BINDER_IPC_SELFTEST +#if IS_ENABLED(CONFIG_ANDROID_BINDER_IPC_SELFTEST) void binder_selftest_alloc(struct binder_alloc *alloc); #else static inline void binder_selftest_alloc(struct binder_alloc *alloc) {} --- linux-5.8.0.orig/drivers/android/binder_internal.h +++ linux-5.8.0/drivers/android/binder_internal.h @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -75,7 +76,7 @@ extern char *binder_devices_param; -#ifdef CONFIG_ANDROID_BINDERFS +#if IS_ENABLED(CONFIG_ANDROID_BINDERFS) extern bool is_binderfs_device(const struct inode *inode); extern struct dentry *binderfs_create_file(struct dentry *dir, const char *name, const struct file_operations *fops, @@ -96,7 +97,7 @@ static inline void binderfs_remove_file(struct dentry *dentry) {} #endif -#ifdef CONFIG_ANDROID_BINDERFS +#if IS_ENABLED(CONFIG_ANDROID_BINDERFS) extern int __init init_binderfs(void); #else static inline int __init init_binderfs(void) --- linux-5.8.0.orig/drivers/android/binderfs.c +++ linux-5.8.0/drivers/android/binderfs.c @@ -113,7 +113,7 @@ struct super_block *sb = ref_inode->i_sb; struct binderfs_info *info = sb->s_fs_info; #if defined(CONFIG_IPC_NS) - bool use_reserve = (info->ipc_ns == &init_ipc_ns); + bool use_reserve = (info->ipc_ns == show_init_ipc_ns()); #else bool use_reserve = true; #endif @@ -399,7 +399,7 @@ struct dentry *root = sb->s_root; struct binderfs_info *info = sb->s_fs_info; #if defined(CONFIG_IPC_NS) - bool use_reserve = (info->ipc_ns == &init_ipc_ns); + bool use_reserve = (info->ipc_ns == show_init_ipc_ns()); #else bool use_reserve = true; #endif @@ -679,7 +679,7 @@ return -ENOMEM; info = sb->s_fs_info; - info->ipc_ns = get_ipc_ns(current->nsproxy->ipc_ns); + info->ipc_ns = get_ipc_ns_exported(current->nsproxy->ipc_ns); info->root_gid = make_kgid(sb->s_user_ns, 0); if (!gid_valid(info->root_gid)) --- linux-5.8.0.orig/drivers/ata/ahci.h +++ linux-5.8.0/drivers/ata/ahci.h @@ -240,6 +240,8 @@ as default lpm_policy */ AHCI_HFLAG_SUSPEND_PHYS = (1 << 26), /* handle PHYs during suspend/resume */ + AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = (1 << 27), /* ignore -EOPNOTSUPP + from phy_power_on() */ /* ap->flags bits */ --- linux-5.8.0.orig/drivers/ata/ahci_brcm.c +++ linux-5.8.0/drivers/ata/ahci_brcm.c @@ -377,6 +377,10 @@ if (ret) return ret; + ret = ahci_platform_enable_regulators(hpriv); + if (ret) + goto out_disable_clks; + brcm_sata_init(priv); brcm_sata_phys_enable(priv); brcm_sata_alpm_init(hpriv); @@ -406,6 +410,8 @@ ahci_platform_disable_phys(hpriv); out_disable_phys: brcm_sata_phys_disable(priv); + ahci_platform_disable_regulators(hpriv); +out_disable_clks: ahci_platform_disable_clks(hpriv); return ret; } @@ -490,6 +496,10 @@ if (ret) goto out_reset; + ret = ahci_platform_enable_regulators(hpriv); + if (ret) + goto out_disable_clks; + /* Must be first so as to configure endianness including that * of the standard AHCI register space. */ @@ -499,7 +509,7 @@ priv->port_mask = brcm_ahci_get_portmask(hpriv, priv); if (!priv->port_mask) { ret = -ENODEV; - goto out_disable_clks; + goto out_disable_regulators; } /* Must be done before ahci_platform_enable_phys() */ @@ -524,6 +534,8 @@ ahci_platform_disable_phys(hpriv); out_disable_phys: brcm_sata_phys_disable(priv); +out_disable_regulators: + ahci_platform_disable_regulators(hpriv); out_disable_clks: ahci_platform_disable_clks(hpriv); out_reset: --- linux-5.8.0.orig/drivers/ata/ahci_mvebu.c +++ linux-5.8.0/drivers/ata/ahci_mvebu.c @@ -227,7 +227,7 @@ static const struct ahci_mvebu_plat_data ahci_mvebu_armada_3700_plat_data = { .plat_config = ahci_mvebu_armada_3700_config, - .flags = AHCI_HFLAG_SUSPEND_PHYS, + .flags = AHCI_HFLAG_SUSPEND_PHYS | AHCI_HFLAG_IGN_NOTSUPP_POWER_ON, }; static const struct of_device_id ahci_mvebu_of_match[] = { --- linux-5.8.0.orig/drivers/ata/libahci_platform.c +++ linux-5.8.0/drivers/ata/libahci_platform.c @@ -59,7 +59,7 @@ } rc = phy_power_on(hpriv->phys[i]); - if (rc) { + if (rc && !(rc == -EOPNOTSUPP && (hpriv->flags & AHCI_HFLAG_IGN_NOTSUPP_POWER_ON))) { phy_exit(hpriv->phys[i]); goto disable_phys; } --- linux-5.8.0.orig/drivers/ata/libata-core.c +++ linux-5.8.0/drivers/ata/libata-core.c @@ -3868,9 +3868,8 @@ /* https://bugzilla.kernel.org/show_bug.cgi?id=15573 */ { "C300-CTFDDAC128MAG", "0001", ATA_HORKAGE_NONCQ, }, - /* Some Sandisk SSDs lock up hard with NCQ enabled. Reported on - SD7SN6S256G and SD8SN8U256G */ - { "SanDisk SD[78]SN*G", NULL, ATA_HORKAGE_NONCQ, }, + /* Sandisk SD7/8/9s lock up hard on large trims */ + { "SanDisk SD[789]*", NULL, ATA_HORKAGE_MAX_TRIM_128M, }, /* devices which puke on READ_NATIVE_MAX */ { "HDS724040KLSA80", "KFAOA20N", ATA_HORKAGE_BROKEN_HPA, }, --- linux-5.8.0.orig/drivers/ata/libata-scsi.c +++ linux-5.8.0/drivers/ata/libata-scsi.c @@ -2080,6 +2080,7 @@ static unsigned int ata_scsiop_inq_b0(struct ata_scsi_args *args, u8 *rbuf) { + struct ata_device *dev = args->dev; u16 min_io_sectors; rbuf[1] = 0xb0; @@ -2105,7 +2106,12 @@ * with the unmap bit set. */ if (ata_id_has_trim(args->id)) { - put_unaligned_be64(65535 * ATA_MAX_TRIM_RNUM, &rbuf[36]); + u64 max_blocks = 65535 * ATA_MAX_TRIM_RNUM; + + if (dev->horkage & ATA_HORKAGE_MAX_TRIM_128M) + max_blocks = 128 << (20 - SECTOR_SHIFT); + + put_unaligned_be64(max_blocks, &rbuf[36]); put_unaligned_be32(1, &rbuf[28]); } --- linux-5.8.0.orig/drivers/ata/sata_nv.c +++ linux-5.8.0/drivers/ata/sata_nv.c @@ -2100,7 +2100,7 @@ pp->dhfis_bits &= ~done_mask; pp->dmafis_bits &= ~done_mask; pp->sdbfis_bits |= done_mask; - ata_qc_complete_multiple(ap, ap->qc_active ^ done_mask); + ata_qc_complete_multiple(ap, ata_qc_get_active(ap) ^ done_mask); if (!ap->qc_active) { DPRINTK("over\n"); --- linux-5.8.0.orig/drivers/ata/sata_rcar.c +++ linux-5.8.0/drivers/ata/sata_rcar.c @@ -120,7 +120,7 @@ /* Descriptor table word 0 bit (when DTA32M = 1) */ #define SATA_RCAR_DTEND BIT(0) -#define SATA_RCAR_DMA_BOUNDARY 0x1FFFFFFEUL +#define SATA_RCAR_DMA_BOUNDARY 0x1FFFFFFFUL /* Gen2 Physical Layer Control Registers */ #define RCAR_GEN2_PHY_CTL1_REG 0x1704 --- linux-5.8.0.orig/drivers/atm/eni.c +++ linux-5.8.0/drivers/atm/eni.c @@ -2239,7 +2239,7 @@ rc = dma_set_mask_and_coherent(&pci_dev->dev, DMA_BIT_MASK(32)); if (rc < 0) - goto out; + goto err_disable; rc = -ENOMEM; eni_dev = kmalloc(sizeof(struct eni_dev), GFP_KERNEL); @@ -2275,7 +2275,8 @@ return rc; err_eni_release: - eni_do_release(dev); + dev->phy = NULL; + iounmap(ENI_DEV(dev)->ioaddr); err_unregister: atm_dev_deregister(dev); err_free_consistent: --- linux-5.8.0.orig/drivers/atm/firestream.c +++ linux-5.8.0/drivers/atm/firestream.c @@ -998,6 +998,7 @@ error = make_rate (pcr, r, &tmc0, NULL); if (error) { kfree(tc); + kfree(vcc); return error; } } --- linux-5.8.0.orig/drivers/atm/idt77105.c +++ linux-5.8.0/drivers/atm/idt77105.c @@ -262,7 +262,7 @@ { unsigned long flags; - if (!(dev->dev_data = kmalloc(sizeof(struct idt77105_priv),GFP_KERNEL))) + if (!(dev->phy_data = kmalloc(sizeof(struct idt77105_priv),GFP_KERNEL))) return -ENOMEM; PRIV(dev)->dev = dev; spin_lock_irqsave(&idt77105_priv_lock, flags); @@ -337,7 +337,7 @@ else idt77105_all = walk->next; dev->phy = NULL; - dev->dev_data = NULL; + dev->phy_data = NULL; kfree(walk); break; } --- linux-5.8.0.orig/drivers/atm/idt77252.c +++ linux-5.8.0/drivers/atm/idt77252.c @@ -3606,7 +3606,7 @@ if ((err = dma_set_mask_and_coherent(&pcidev->dev, DMA_BIT_MASK(32)))) { printk("idt77252: can't enable DMA for PCI device at %s\n", pci_name(pcidev)); - return err; + goto err_out_disable_pdev; } card = kzalloc(sizeof(struct idt77252_dev), GFP_KERNEL); --- linux-5.8.0.orig/drivers/atm/lanai.c +++ linux-5.8.0/drivers/atm/lanai.c @@ -2234,6 +2234,7 @@ conf1_write(lanai); #endif iounmap(lanai->base); + lanai->base = NULL; error_pci: pci_disable_device(lanai->pci); error: @@ -2246,6 +2247,8 @@ static void lanai_dev_close(struct atm_dev *atmdev) { struct lanai_dev *lanai = (struct lanai_dev *) atmdev->dev_data; + if (lanai->base==NULL) + return; printk(KERN_INFO DEV_LABEL "(itf %d): shutting down interface\n", lanai->number); lanai_timed_poll_stop(lanai); @@ -2555,7 +2558,7 @@ struct atm_dev *atmdev; int result; - lanai = kmalloc(sizeof(*lanai), GFP_KERNEL); + lanai = kzalloc(sizeof(*lanai), GFP_KERNEL); if (lanai == NULL) { printk(KERN_ERR DEV_LABEL ": couldn't allocate dev_data structure!\n"); --- linux-5.8.0.orig/drivers/atm/nicstar.c +++ linux-5.8.0/drivers/atm/nicstar.c @@ -1706,6 +1706,8 @@ if (push_scqe(card, vc, scq, &scqe, skb) != 0) { atomic_inc(&vcc->stats->tx_err); + dma_unmap_single(&card->pcidev->dev, NS_PRV_DMA(skb), skb->len, + DMA_TO_DEVICE); dev_kfree_skb_any(skb); return -EIO; } --- linux-5.8.0.orig/drivers/atm/uPD98402.c +++ linux-5.8.0/drivers/atm/uPD98402.c @@ -211,7 +211,7 @@ static int uPD98402_start(struct atm_dev *dev) { DPRINTK("phy_start\n"); - if (!(dev->dev_data = kmalloc(sizeof(struct uPD98402_priv),GFP_KERNEL))) + if (!(dev->phy_data = kmalloc(sizeof(struct uPD98402_priv),GFP_KERNEL))) return -ENOMEM; spin_lock_init(&PRIV(dev)->lock); memset(&PRIV(dev)->sonet_stats,0,sizeof(struct k_sonet_stats)); --- linux-5.8.0.orig/drivers/auxdisplay/ht16k33.c +++ linux-5.8.0/drivers/auxdisplay/ht16k33.c @@ -117,8 +117,7 @@ { struct ht16k33_fbdev *fbdev = &priv->fbdev; - schedule_delayed_work(&fbdev->work, - msecs_to_jiffies(HZ / fbdev->refresh_rate)); + schedule_delayed_work(&fbdev->work, HZ / fbdev->refresh_rate); } /* --- linux-5.8.0.orig/drivers/base/core.c +++ linux-5.8.0/drivers/base/core.c @@ -114,6 +114,16 @@ #endif #endif /* !CONFIG_SRCU */ +static bool device_is_ancestor(struct device *dev, struct device *target) +{ + while (target->parent) { + target = target->parent; + if (dev == target) + return true; + } + return false; +} + /** * device_is_dependent - Check if one device depends on another one * @dev: Device to check dependencies for. @@ -127,7 +137,12 @@ struct device_link *link; int ret; - if (dev == target) + /* + * The "ancestors" check is needed to catch the case when the target + * device has not been completely initialized yet and it is still + * missing from the list of children of its parent device. + */ + if (dev == target || device_is_ancestor(dev, target)) return 1; ret = device_for_each_child(dev, target, device_is_dependent); @@ -562,8 +577,7 @@ dev_dbg(link->consumer, "Dropping the link to %s\n", dev_name(link->supplier)); - if (link->flags & DL_FLAG_PM_RUNTIME) - pm_runtime_drop_link(link->consumer); + pm_runtime_drop_link(link); list_del_rcu(&link->s_node); list_del_rcu(&link->c_node); @@ -577,8 +591,7 @@ dev_info(link->consumer, "Dropping the link to %s\n", dev_name(link->supplier)); - if (link->flags & DL_FLAG_PM_RUNTIME) - pm_runtime_drop_link(link->consumer); + pm_runtime_drop_link(link); list_del(&link->s_node); list_del(&link->c_node); @@ -1161,7 +1174,7 @@ struct device_link *link, *ln; mutex_lock(&wfs_lock); - list_del(&dev->links.needs_suppliers); + list_del_init(&dev->links.needs_suppliers); mutex_unlock(&wfs_lock); /* @@ -3988,9 +4001,10 @@ */ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) { - if (fwnode) { - struct fwnode_handle *fn = dev->fwnode; + struct device *parent = dev->parent; + struct fwnode_handle *fn = dev->fwnode; + if (fwnode) { if (fwnode_is_primary(fn)) fn = fn->secondary; @@ -4000,8 +4014,13 @@ } dev->fwnode = fwnode; } else { - dev->fwnode = fwnode_is_primary(dev->fwnode) ? - dev->fwnode->secondary : NULL; + if (fwnode_is_primary(fn)) { + dev->fwnode = fn->secondary; + if (!(parent && fn == parent->fwnode)) + fn->secondary = NULL; + } else { + dev->fwnode = NULL; + } } } EXPORT_SYMBOL_GPL(set_primary_fwnode); --- linux-5.8.0.orig/drivers/base/dd.c +++ linux-5.8.0/drivers/base/dd.c @@ -276,7 +276,7 @@ list_for_each_entry_safe(private, p, &deferred_probe_pending_list, deferred_probe) dev_info(private->device, "deferred probe pending\n"); - wake_up(&probe_timeout_waitqueue); + wake_up_all(&probe_timeout_waitqueue); } static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func); @@ -487,7 +487,8 @@ drv->bus->name, __func__, drv->name, dev_name(dev)); if (!list_empty(&dev->devres_head)) { dev_crit(dev, "Resources present before probing\n"); - return -EBUSY; + ret = -EBUSY; + goto done; } re_probe: @@ -607,7 +608,7 @@ ret = 0; done: atomic_dec(&probe_count); - wake_up(&probe_waitqueue); + wake_up_all(&probe_waitqueue); return ret; } @@ -843,7 +844,9 @@ int ret = 0; device_lock(dev); - if (dev->driver) { + if (dev->p->dead) { + goto out_unlock; + } else if (dev->driver) { if (device_is_bound(dev)) { ret = 1; goto out_unlock; @@ -1073,6 +1076,8 @@ drv = dev->driver; if (drv) { + pm_runtime_get_sync(dev); + while (device_links_busy(dev)) { __device_driver_unlock(dev, parent); @@ -1084,13 +1089,12 @@ * have released the driver successfully while this one * was waiting, so check for that. */ - if (dev->driver != drv) + if (dev->driver != drv) { + pm_runtime_put(dev); return; + } } - pm_runtime_get_sync(dev); - pm_runtime_clean_up_links(dev); - driver_sysfs_remove(dev); if (dev->bus) @@ -1106,6 +1110,13 @@ dev->bus->remove(dev); else if (drv->remove) drv->remove(dev); + /* + * A concurrent invocation of the same function might + * have released the driver successfully while this one + * was waiting, so check for that. + */ + if (dev->driver != drv) + return; device_links_driver_cleanup(dev); --- linux-5.8.0.orig/drivers/base/firmware_loader/fallback_platform.c +++ linux-5.8.0/drivers/base/firmware_loader/fallback_platform.c @@ -17,7 +17,7 @@ if (!(opt_flags & FW_OPT_FALLBACK_PLATFORM)) return -ENOENT; - rc = security_kernel_load_data(LOADING_FIRMWARE_EFI_EMBEDDED); + rc = security_kernel_load_data(LOADING_FIRMWARE); if (rc) return rc; @@ -25,7 +25,10 @@ if (rc) return rc; /* rc == -ENOENT when the fw was not found */ - fw_priv->data = vmalloc(size); + if (fw_priv->data && size > fw_priv->allocated_size) + return -ENOMEM; + if (!fw_priv->data) + fw_priv->data = vmalloc(size); if (!fw_priv->data) return -ENOMEM; --- linux-5.8.0.orig/drivers/base/firmware_loader/firmware.h +++ linux-5.8.0/drivers/base/firmware_loader/firmware.h @@ -142,10 +142,12 @@ void fw_free_paged_buf(struct fw_priv *fw_priv); int fw_grow_paged_buf(struct fw_priv *fw_priv, int pages_needed); int fw_map_paged_buf(struct fw_priv *fw_priv); +bool fw_is_paged_buf(struct fw_priv *fw_priv); #else static inline void fw_free_paged_buf(struct fw_priv *fw_priv) {} static inline int fw_grow_paged_buf(struct fw_priv *fw_priv, int pages_needed) { return -ENXIO; } static inline int fw_map_paged_buf(struct fw_priv *fw_priv) { return -ENXIO; } +static inline bool fw_is_paged_buf(struct fw_priv *fw_priv) { return false; } #endif #endif /* __FIRMWARE_LOADER_H */ --- linux-5.8.0.orig/drivers/base/firmware_loader/main.c +++ linux-5.8.0/drivers/base/firmware_loader/main.c @@ -252,9 +252,11 @@ list_del(&fw_priv->list); spin_unlock(&fwc->lock); - fw_free_paged_buf(fw_priv); /* free leftover pages */ - if (!fw_priv->allocated_size) + if (fw_is_paged_buf(fw_priv)) + fw_free_paged_buf(fw_priv); + else if (!fw_priv->allocated_size) vfree(fw_priv->data); + kfree_const(fw_priv->fw_name); kfree(fw_priv); } @@ -268,6 +270,11 @@ } #ifdef CONFIG_FW_LOADER_PAGED_BUF +bool fw_is_paged_buf(struct fw_priv *fw_priv) +{ + return fw_priv->is_paged_buf; +} + void fw_free_paged_buf(struct fw_priv *fw_priv) { int i; @@ -275,6 +282,8 @@ if (!fw_priv->pages) return; + vunmap(fw_priv->data); + for (i = 0; i < fw_priv->nr_pages; i++) __free_page(fw_priv->pages[i]); kvfree(fw_priv->pages); @@ -328,10 +337,6 @@ if (!fw_priv->data) return -ENOMEM; - /* page table is no longer needed after mapping, let's free */ - kvfree(fw_priv->pages); - fw_priv->pages = NULL; - return 0; } #endif @@ -465,14 +470,12 @@ int i, len; int rc = -ENOENT; char *path; - enum kernel_read_file_id id = READING_FIRMWARE; size_t msize = INT_MAX; void *buffer = NULL; /* Already populated data member means we're loading into a buffer */ if (!decompress && fw_priv->data) { buffer = fw_priv->data; - id = READING_FIRMWARE_PREALLOC_BUFFER; msize = fw_priv->allocated_size; } @@ -496,7 +499,8 @@ /* load firmware files from the mount namespace of init */ rc = kernel_read_file_from_path_initns(path, &buffer, - &size, msize, id); + &size, msize, + READING_FIRMWARE); if (rc) { if (rc != -ENOENT) dev_warn(device, "loading %s failed with error %d\n", --- linux-5.8.0.orig/drivers/base/memory.c +++ linux-5.8.0/drivers/base/memory.c @@ -291,19 +291,20 @@ } /* - * phys_device is a bad name for this. What I really want - * is a way to differentiate between memory ranges that - * are part of physical devices that constitute - * a complete removable unit or fru. - * i.e. do these ranges belong to the same physical device, - * s.t. if I offline all of these sections I can then - * remove the physical device? + * Legacy interface that we cannot remove: s390x exposes the storage increment + * covered by a memory block, allowing for identifying which memory blocks + * comprise a storage increment. Since a memory block spans complete + * storage increments nowadays, this interface is basically unused. Other + * archs never exposed != 0. */ static ssize_t phys_device_show(struct device *dev, struct device_attribute *attr, char *buf) { struct memory_block *mem = to_memory_block(dev); - return sprintf(buf, "%d\n", mem->phys_device); + unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr); + + return sprintf(buf, "%d\n", + arch_get_memory_phys_device(start_pfn)); } #ifdef CONFIG_MEMORY_HOTREMOVE @@ -487,11 +488,7 @@ static DEVICE_ATTR_WO(hard_offline_page); #endif -/* - * Note that phys_device is optional. It is here to allow for - * differentiation between which *physical* devices each - * section belongs to... - */ +/* See phys_device_show(). */ int __weak arch_get_memory_phys_device(unsigned long start_pfn) { return 0; @@ -574,7 +571,6 @@ unsigned long block_id, unsigned long state) { struct memory_block *mem; - unsigned long start_pfn; int ret = 0; mem = find_memory_block_by_id(block_id); @@ -588,8 +584,6 @@ mem->start_section_nr = block_id * sections_per_block; mem->state = state; - start_pfn = section_nr_to_pfn(mem->start_section_nr); - mem->phys_device = arch_get_memory_phys_device(start_pfn); mem->nid = NUMA_NO_NODE; ret = register_memory(mem); --- linux-5.8.0.orig/drivers/base/node.c +++ linux-5.8.0/drivers/base/node.c @@ -761,14 +761,36 @@ return pfn_to_nid(pfn); } +static int do_register_memory_block_under_node(int nid, + struct memory_block *mem_blk) +{ + int ret; + + /* + * If this memory block spans multiple nodes, we only indicate + * the last processed node. + */ + mem_blk->nid = nid; + + ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj, + &mem_blk->dev.kobj, + kobject_name(&mem_blk->dev.kobj)); + if (ret) + return ret; + + return sysfs_create_link_nowarn(&mem_blk->dev.kobj, + &node_devices[nid]->dev.kobj, + kobject_name(&node_devices[nid]->dev.kobj)); +} + /* register memory section under specified node if it spans that node */ -static int register_mem_sect_under_node(struct memory_block *mem_blk, - void *arg) +static int register_mem_block_under_node_early(struct memory_block *mem_blk, + void *arg) { unsigned long memory_block_pfns = memory_block_size_bytes() / PAGE_SIZE; unsigned long start_pfn = section_nr_to_pfn(mem_blk->start_section_nr); unsigned long end_pfn = start_pfn + memory_block_pfns - 1; - int ret, nid = *(int *)arg; + int nid = *(int *)arg; unsigned long pfn; for (pfn = start_pfn; pfn <= end_pfn; pfn++) { @@ -785,39 +807,34 @@ } /* - * We need to check if page belongs to nid only for the boot - * case, during hotplug we know that all pages in the memory - * block belong to the same node. - */ - if (system_state == SYSTEM_BOOTING) { - page_nid = get_nid_for_pfn(pfn); - if (page_nid < 0) - continue; - if (page_nid != nid) - continue; - } - - /* - * If this memory block spans multiple nodes, we only indicate - * the last processed node. + * We need to check if page belongs to nid only at the boot + * case because node's ranges can be interleaved. */ - mem_blk->nid = nid; - - ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj, - &mem_blk->dev.kobj, - kobject_name(&mem_blk->dev.kobj)); - if (ret) - return ret; + page_nid = get_nid_for_pfn(pfn); + if (page_nid < 0) + continue; + if (page_nid != nid) + continue; - return sysfs_create_link_nowarn(&mem_blk->dev.kobj, - &node_devices[nid]->dev.kobj, - kobject_name(&node_devices[nid]->dev.kobj)); + return do_register_memory_block_under_node(nid, mem_blk); } /* mem section does not span the specified node */ return 0; } /* + * During hotplug we know that all pages in the memory block belong to the same + * node. + */ +static int register_mem_block_under_node_hotplug(struct memory_block *mem_blk, + void *arg) +{ + int nid = *(int *)arg; + + return do_register_memory_block_under_node(nid, mem_blk); +} + +/* * Unregister a memory block device under the node it spans. Memory blocks * with multiple nodes cannot be offlined and therefore also never be removed. */ @@ -832,11 +849,19 @@ kobject_name(&node_devices[mem_blk->nid]->dev.kobj)); } -int link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn) +int link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn, + enum meminit_context context) { + walk_memory_blocks_func_t func; + + if (context == MEMINIT_HOTPLUG) + func = register_mem_block_under_node_hotplug; + else + func = register_mem_block_under_node_early; + return walk_memory_blocks(PFN_PHYS(start_pfn), PFN_PHYS(end_pfn - start_pfn), (void *)&nid, - register_mem_sect_under_node); + func); } #ifdef CONFIG_HUGETLBFS --- linux-5.8.0.orig/drivers/base/power/main.c +++ linux-5.8.0/drivers/base/power/main.c @@ -1606,13 +1606,17 @@ } /* - * If a device configured to wake up the system from sleep states - * has been suspended at run time and there's a resume request pending - * for it, this is equivalent to the device signaling wakeup, so the - * system suspend operation should be aborted. + * Wait for possible runtime PM transitions of the device in progress + * to complete and if there's a runtime resume request pending for it, + * resume it before proceeding with invoking the system-wide suspend + * callbacks for it. + * + * If the system-wide suspend callbacks below change the configuration + * of the device, they must disable runtime PM for it or otherwise + * ensure that its runtime-resume callbacks will not be confused by that + * change in case they are invoked going forward. */ - if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) - pm_wakeup_event(dev, 0); + pm_runtime_barrier(dev); if (pm_wakeup_pending()) { dev->power.direct_complete = false; --- linux-5.8.0.orig/drivers/base/power/runtime.c +++ linux-5.8.0/drivers/base/power/runtime.c @@ -291,8 +291,7 @@ device_links_read_lock_held()) { int retval; - if (!(link->flags & DL_FLAG_PM_RUNTIME) || - READ_ONCE(link->status) == DL_STATE_SUPPLIER_UNBIND) + if (!(link->flags & DL_FLAG_PM_RUNTIME)) continue; retval = pm_runtime_get_sync(link->supplier); @@ -306,20 +305,38 @@ return 0; } -static void rpm_put_suppliers(struct device *dev) +static void __rpm_put_suppliers(struct device *dev, bool try_to_suspend) { struct device_link *link; list_for_each_entry_rcu(link, &dev->links.suppliers, c_node, device_links_read_lock_held()) { - if (READ_ONCE(link->status) == DL_STATE_SUPPLIER_UNBIND) - continue; while (refcount_dec_not_one(&link->rpm_active)) - pm_runtime_put(link->supplier); + pm_runtime_put_noidle(link->supplier); + + if (try_to_suspend) + pm_request_idle(link->supplier); } } +static void rpm_put_suppliers(struct device *dev) +{ + __rpm_put_suppliers(dev, true); +} + +static void rpm_suspend_suppliers(struct device *dev) +{ + struct device_link *link; + int idx = device_links_read_lock(); + + list_for_each_entry_rcu(link, &dev->links.suppliers, c_node, + device_links_read_lock_held()) + pm_request_idle(link->supplier); + + device_links_read_unlock(idx); +} + /** * __rpm_callback - Run a given runtime PM callback for a given device. * @cb: Runtime PM callback to run. @@ -347,8 +364,10 @@ idx = device_links_read_lock(); retval = rpm_get_suppliers(dev); - if (retval) + if (retval) { + rpm_put_suppliers(dev); goto fail; + } device_links_read_unlock(idx); } @@ -371,9 +390,9 @@ || (dev->power.runtime_status == RPM_RESUMING && retval))) { idx = device_links_read_lock(); - fail: - rpm_put_suppliers(dev); + __rpm_put_suppliers(dev, false); +fail: device_links_read_unlock(idx); } @@ -645,8 +664,11 @@ goto out; } + if (dev->power.irq_safe) + goto out; + /* Maybe the parent is now able to suspend. */ - if (parent && !parent->power.ignore_children && !dev->power.irq_safe) { + if (parent && !parent->power.ignore_children) { spin_unlock(&dev->power.lock); spin_lock(&parent->power.lock); @@ -655,6 +677,14 @@ spin_lock(&dev->power.lock); } + /* Maybe the suppliers are now able to suspend. */ + if (dev->power.links_count > 0) { + spin_unlock_irq(&dev->power.lock); + + rpm_suspend_suppliers(dev); + + spin_lock_irq(&dev->power.lock); + } out: trace_rpm_return_int_rcuidle(dev, _THIS_IP_, retval); @@ -1644,42 +1674,6 @@ } /** - * pm_runtime_clean_up_links - Prepare links to consumers for driver removal. - * @dev: Device whose driver is going to be removed. - * - * Check links from this device to any consumers and if any of them have active - * runtime PM references to the device, drop the usage counter of the device - * (as many times as needed). - * - * Links with the DL_FLAG_MANAGED flag unset are ignored. - * - * Since the device is guaranteed to be runtime-active at the point this is - * called, nothing else needs to be done here. - * - * Moreover, this is called after device_links_busy() has returned 'false', so - * the status of each link is guaranteed to be DL_STATE_SUPPLIER_UNBIND and - * therefore rpm_active can't be manipulated concurrently. - */ -void pm_runtime_clean_up_links(struct device *dev) -{ - struct device_link *link; - int idx; - - idx = device_links_read_lock(); - - list_for_each_entry_rcu(link, &dev->links.consumers, s_node, - device_links_read_lock_held()) { - if (!(link->flags & DL_FLAG_MANAGED)) - continue; - - while (refcount_dec_not_one(&link->rpm_active)) - pm_runtime_put_noidle(dev); - } - - device_links_read_unlock(idx); -} - -/** * pm_runtime_get_suppliers - Resume and reference-count supplier devices. * @dev: Consumer device. */ @@ -1694,8 +1688,8 @@ device_links_read_lock_held()) if (link->flags & DL_FLAG_PM_RUNTIME) { link->supplier_preactivated = true; - refcount_inc(&link->rpm_active); pm_runtime_get_sync(link->supplier); + refcount_inc(&link->rpm_active); } device_links_read_unlock(idx); @@ -1708,6 +1702,8 @@ void pm_runtime_put_suppliers(struct device *dev) { struct device_link *link; + unsigned long flags; + bool put; int idx; idx = device_links_read_lock(); @@ -1716,7 +1712,11 @@ device_links_read_lock_held()) if (link->supplier_preactivated) { link->supplier_preactivated = false; - if (refcount_dec_not_one(&link->rpm_active)) + spin_lock_irqsave(&dev->power.lock, flags); + put = pm_runtime_status_suspended(dev) && + refcount_dec_not_one(&link->rpm_active); + spin_unlock_irqrestore(&dev->power.lock, flags); + if (put) pm_runtime_put(link->supplier); } @@ -1730,7 +1730,7 @@ spin_unlock_irq(&dev->power.lock); } -void pm_runtime_drop_link(struct device *dev) +static void pm_runtime_drop_link_count(struct device *dev) { spin_lock_irq(&dev->power.lock); WARN_ON(dev->power.links_count == 0); @@ -1738,6 +1738,25 @@ spin_unlock_irq(&dev->power.lock); } +/** + * pm_runtime_drop_link - Prepare for device link removal. + * @link: Device link going away. + * + * Drop the link count of the consumer end of @link and decrement the supplier + * device's runtime PM usage counter as many times as needed to drop all of the + * PM runtime reference to it from the consumer. + */ +void pm_runtime_drop_link(struct device_link *link) +{ + if (!(link->flags & DL_FLAG_PM_RUNTIME)) + return; + + pm_runtime_drop_link_count(link->consumer); + + while (refcount_dec_not_one(&link->rpm_active)) + pm_runtime_put(link->supplier); +} + static bool pm_runtime_need_not_resume(struct device *dev) { return atomic_read(&dev->power.usage_count) <= 1 && --- linux-5.8.0.orig/drivers/base/regmap/internal.h +++ linux-5.8.0/drivers/base/regmap/internal.h @@ -259,7 +259,7 @@ int regcache_lookup_reg(struct regmap *map, unsigned int reg); int _regmap_raw_write(struct regmap *map, unsigned int reg, - const void *val, size_t val_len); + const void *val, size_t val_len, bool noinc); void regmap_async_complete_cb(struct regmap_async *async, int ret); --- linux-5.8.0.orig/drivers/base/regmap/regcache.c +++ linux-5.8.0/drivers/base/regmap/regcache.c @@ -717,7 +717,7 @@ map->cache_bypass = true; - ret = _regmap_raw_write(map, base, *data, count * val_bytes); + ret = _regmap_raw_write(map, base, *data, count * val_bytes, false); if (ret) dev_err(map->dev, "Unable to sync registers %#x-%#x. %d\n", base, cur - map->reg_stride, ret); --- linux-5.8.0.orig/drivers/base/regmap/regmap-debugfs.c +++ linux-5.8.0/drivers/base/regmap/regmap-debugfs.c @@ -583,8 +583,12 @@ devname = dev_name(map->dev); if (name) { - map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", + if (!map->debugfs_name) { + map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s", devname, name); + if (!map->debugfs_name) + return; + } name = map->debugfs_name; } else { name = devname; @@ -592,9 +596,10 @@ if (!strcmp(name, "dummy")) { kfree(map->debugfs_name); - map->debugfs_name = kasprintf(GFP_KERNEL, "dummy%d", dummy_index); + if (!map->debugfs_name) + return; name = map->debugfs_name; dummy_index++; } --- linux-5.8.0.orig/drivers/base/regmap/regmap-sdw.c +++ linux-5.8.0/drivers/base/regmap/regmap-sdw.c @@ -12,7 +12,7 @@ struct device *dev = context; struct sdw_slave *slave = dev_to_sdw_dev(dev); - return sdw_write(slave, reg, val); + return sdw_write_no_pm(slave, reg, val); } static int regmap_sdw_read(void *context, unsigned int reg, unsigned int *val) @@ -21,7 +21,7 @@ struct sdw_slave *slave = dev_to_sdw_dev(dev); int read; - read = sdw_read(slave, reg); + read = sdw_read_no_pm(slave, reg); if (read < 0) return read; --- linux-5.8.0.orig/drivers/base/regmap/regmap.c +++ linux-5.8.0/drivers/base/regmap/regmap.c @@ -1469,7 +1469,7 @@ } static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg, - const void *val, size_t val_len) + const void *val, size_t val_len, bool noinc) { struct regmap_range_node *range; unsigned long flags; @@ -1528,7 +1528,7 @@ win_residue, val_len / map->format.val_bytes); ret = _regmap_raw_write_impl(map, reg, val, win_residue * - map->format.val_bytes); + map->format.val_bytes, noinc); if (ret != 0) return ret; @@ -1542,7 +1542,7 @@ win_residue = range->window_len - win_offset; } - ret = _regmap_select_page(map, ®, range, val_num); + ret = _regmap_select_page(map, ®, range, noinc ? 1 : val_num); if (ret != 0) return ret; } @@ -1750,7 +1750,8 @@ map->work_buf + map->format.reg_bytes + map->format.pad_bytes, - map->format.val_bytes); + map->format.val_bytes, + false); } static inline void *_regmap_map_get_context(struct regmap *map) @@ -1844,7 +1845,7 @@ EXPORT_SYMBOL_GPL(regmap_write_async); int _regmap_raw_write(struct regmap *map, unsigned int reg, - const void *val, size_t val_len) + const void *val, size_t val_len, bool noinc) { size_t val_bytes = map->format.val_bytes; size_t val_count = val_len / val_bytes; @@ -1865,7 +1866,7 @@ /* Write as many bytes as possible with chunk_size */ for (i = 0; i < chunk_count; i++) { - ret = _regmap_raw_write_impl(map, reg, val, chunk_bytes); + ret = _regmap_raw_write_impl(map, reg, val, chunk_bytes, noinc); if (ret) return ret; @@ -1876,7 +1877,7 @@ /* Write remaining bytes */ if (val_len) - ret = _regmap_raw_write_impl(map, reg, val, val_len); + ret = _regmap_raw_write_impl(map, reg, val, val_len, noinc); return ret; } @@ -1909,7 +1910,7 @@ map->lock(map->lock_arg); - ret = _regmap_raw_write(map, reg, val, val_len); + ret = _regmap_raw_write(map, reg, val, val_len, false); map->unlock(map->lock_arg); @@ -1967,7 +1968,7 @@ write_len = map->max_raw_write; else write_len = val_len; - ret = _regmap_raw_write(map, reg, val, write_len); + ret = _regmap_raw_write(map, reg, val, write_len, true); if (ret) goto out_unlock; val = ((u8 *)val) + write_len; @@ -2444,7 +2445,7 @@ map->async = true; - ret = _regmap_raw_write(map, reg, val, val_len); + ret = _regmap_raw_write(map, reg, val, val_len, false); map->async = false; @@ -2455,7 +2456,7 @@ EXPORT_SYMBOL_GPL(regmap_raw_write_async); static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val, - unsigned int val_len) + unsigned int val_len, bool noinc) { struct regmap_range_node *range; int ret; @@ -2468,7 +2469,7 @@ range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, - val_len / map->format.val_bytes); + noinc ? 1 : val_len / map->format.val_bytes); if (ret != 0) return ret; } @@ -2506,7 +2507,7 @@ if (!map->format.parse_val) return -EINVAL; - ret = _regmap_raw_read(map, reg, work_val, map->format.val_bytes); + ret = _regmap_raw_read(map, reg, work_val, map->format.val_bytes, false); if (ret == 0) *val = map->format.parse_val(work_val); @@ -2622,7 +2623,7 @@ /* Read bytes that fit into whole chunks */ for (i = 0; i < chunk_count; i++) { - ret = _regmap_raw_read(map, reg, val, chunk_bytes); + ret = _regmap_raw_read(map, reg, val, chunk_bytes, false); if (ret != 0) goto out; @@ -2633,7 +2634,7 @@ /* Read remaining bytes */ if (val_len) { - ret = _regmap_raw_read(map, reg, val, val_len); + ret = _regmap_raw_read(map, reg, val, val_len, false); if (ret != 0) goto out; } @@ -2708,7 +2709,7 @@ read_len = map->max_raw_read; else read_len = val_len; - ret = _regmap_raw_read(map, reg, val, read_len); + ret = _regmap_raw_read(map, reg, val, read_len, true); if (ret) goto out_unlock; val = ((u8 *)val) + read_len; --- linux-5.8.0.orig/drivers/base/swnode.c +++ linux-5.8.0/drivers/base/swnode.c @@ -443,14 +443,18 @@ struct swnode *c = to_swnode(child); if (!p || list_empty(&p->children) || - (c && list_is_last(&c->entry, &p->children))) + (c && list_is_last(&c->entry, &p->children))) { + fwnode_handle_put(child); return NULL; + } if (c) c = list_next_entry(c, entry); else c = list_first_entry(&p->children, struct swnode, entry); - return &c->fwnode; + + fwnode_handle_put(child); + return fwnode_handle_get(&c->fwnode); } static struct fwnode_handle * @@ -786,6 +790,9 @@ if (software_node_to_swnode(node)) return -EEXIST; + if (node->parent && !parent) + return -EINVAL; + return PTR_ERR_OR_ZERO(swnode_register(node, parent, 0)); } EXPORT_SYMBOL_GPL(software_node_register); --- linux-5.8.0.orig/drivers/base/test/Makefile +++ linux-5.8.0/drivers/base/test/Makefile @@ -2,3 +2,4 @@ obj-$(CONFIG_TEST_ASYNC_DRIVER_PROBE) += test_async_driver_probe.o obj-$(CONFIG_KUNIT_DRIVER_PE_TEST) += property-entry-test.o +CFLAGS_REMOVE_property-entry-test.o += -fplugin-arg-structleak_plugin-byref -fplugin-arg-structleak_plugin-byref-all --- linux-5.8.0.orig/drivers/block/Kconfig +++ linux-5.8.0/drivers/block/Kconfig @@ -451,6 +451,7 @@ config BLK_DEV_RSXX tristate "IBM Flash Adapter 900GB Full Height PCIe Device Driver" depends on PCI + select CRC32 help Device driver for IBM's high speed PCIe SSD storage device: Flash Adapter 900GB Full Height. --- linux-5.8.0.orig/drivers/block/loop.c +++ linux-5.8.0/drivers/block/loop.c @@ -255,7 +255,8 @@ bd_set_size(bdev, size << SECTOR_SHIFT); - set_capacity_revalidate_and_notify(lo->lo_disk, size, false); + if (!set_capacity_revalidate_and_notify(lo->lo_disk, size, false)) + kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); } static inline int @@ -648,6 +649,15 @@ lo->use_dio); } +static struct file *loop_real_file(struct file *file) +{ + struct file *f = NULL; + + if (file->f_path.dentry->d_sb->s_op->real_loop) + f = file->f_path.dentry->d_sb->s_op->real_loop(file); + return f; +} + static void loop_reread_partitions(struct loop_device *lo, struct block_device *bdev) { @@ -703,6 +713,7 @@ unsigned int arg) { struct file *file = NULL, *old_file; + struct file *f, *virt_file = NULL, *old_virt_file; int error; bool partscan; @@ -722,12 +733,19 @@ file = fget(arg); if (!file) goto out_err; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } error = loop_validate_file(file, bdev); if (error) goto out_err; old_file = lo->lo_backing_file; + old_virt_file = lo->lo_backing_virt_file; error = -EINVAL; @@ -739,6 +757,7 @@ blk_mq_freeze_queue(lo->lo_queue); mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping); mapping_set_gfp_mask(file->f_mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); @@ -752,6 +771,8 @@ * dependency. */ fput(old_file); + if (old_virt_file) + fput(old_virt_file); if (partscan) loop_reread_partitions(lo, bdev); return 0; @@ -760,9 +781,29 @@ mutex_unlock(&loop_ctl_mutex); if (file) fput(file); + if (virt_file) + fput(virt_file); return error; } +/* + * for AUFS + * no get/put for file. + */ +struct file *loop_backing_file(struct super_block *sb) +{ + struct file *ret; + struct loop_device *l; + + ret = NULL; + if (MAJOR(sb->s_dev) == LOOP_MAJOR) { + l = sb->s_bdev->bd_disk->private_data; + ret = l->lo_backing_file; + } + return ret; +} +EXPORT_SYMBOL_GPL(loop_backing_file); + /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, @@ -877,6 +918,7 @@ struct file *file = lo->lo_backing_file; struct inode *inode = file->f_mapping->host; struct request_queue *q = lo->lo_queue; + u32 granularity, max_discard_sectors; /* * If the backing device is a block device, mirror its zeroing @@ -889,11 +931,10 @@ struct request_queue *backingq; backingq = bdev_get_queue(inode->i_bdev); - blk_queue_max_discard_sectors(q, - backingq->limits.max_write_zeroes_sectors); - blk_queue_max_write_zeroes_sectors(q, - backingq->limits.max_write_zeroes_sectors); + max_discard_sectors = backingq->limits.max_write_zeroes_sectors; + granularity = backingq->limits.discard_granularity ?: + queue_physical_block_size(backingq); /* * We use punch hole to reclaim the free space used by the @@ -902,23 +943,26 @@ * useful information. */ } else if (!file->f_op->fallocate || lo->lo_encrypt_key_size) { - q->limits.discard_granularity = 0; - q->limits.discard_alignment = 0; - blk_queue_max_discard_sectors(q, 0); - blk_queue_max_write_zeroes_sectors(q, 0); + max_discard_sectors = 0; + granularity = 0; } else { - q->limits.discard_granularity = inode->i_sb->s_blocksize; - q->limits.discard_alignment = 0; - - blk_queue_max_discard_sectors(q, UINT_MAX >> 9); - blk_queue_max_write_zeroes_sectors(q, UINT_MAX >> 9); + max_discard_sectors = UINT_MAX >> 9; + granularity = inode->i_sb->s_blocksize; } - if (q->limits.max_write_zeroes_sectors) + if (max_discard_sectors) { + q->limits.discard_granularity = granularity; + blk_queue_max_discard_sectors(q, max_discard_sectors); + blk_queue_max_write_zeroes_sectors(q, max_discard_sectors); blk_queue_flag_set(QUEUE_FLAG_DISCARD, q); - else + } else { + q->limits.discard_granularity = 0; + blk_queue_max_discard_sectors(q, 0); + blk_queue_max_write_zeroes_sectors(q, 0); blk_queue_flag_clear(QUEUE_FLAG_DISCARD, q); + } + q->limits.discard_alignment = 0; } static void loop_unprepare_queue(struct loop_device *lo) @@ -1067,7 +1111,7 @@ struct block_device *bdev, const struct loop_config *config) { - struct file *file; + struct file *file, *f, *virt_file = NULL; struct inode *inode; struct address_space *mapping; struct block_device *claimed_bdev = NULL; @@ -1083,6 +1127,12 @@ file = fget(config->fd); if (!file) goto out; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } /* * If we don't hold exclusive handle for the device, upgrade to it @@ -1111,8 +1161,6 @@ mapping = file->f_mapping; inode = mapping->host; - size = get_loop_size(lo, file); - if ((config->info.lo_flags & ~LOOP_CONFIGURE_SETTABLE_FLAGS) != 0) { error = -EINVAL; goto out_unlock; @@ -1141,6 +1189,7 @@ lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO; lo->lo_device = bdev; lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->old_gfp_mask = mapping_gfp_mask(mapping); mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); @@ -1162,6 +1211,8 @@ loop_update_rotational(lo); loop_update_dio(lo); loop_sysfs_init(lo); + + size = get_loop_size(lo, file); loop_set_size(lo, size); set_blocksize(bdev, S_ISBLK(inode->i_mode) ? @@ -1190,6 +1241,8 @@ bd_abort_claiming(bdev, claimed_bdev, loop_configure); out_putf: fput(file); + if (virt_file) + fput(virt_file); out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); @@ -1199,6 +1252,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) { struct file *filp = NULL; + struct file *virt_filp = lo->lo_backing_virt_file; gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; int err = 0; @@ -1222,6 +1276,7 @@ spin_lock_irq(&lo->lo_lock); lo->lo_backing_file = NULL; + lo->lo_backing_virt_file = NULL; spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); @@ -1305,6 +1360,8 @@ */ if (filp) fput(filp); + if (virt_filp) + fput(virt_filp); return err; } @@ -2402,6 +2459,8 @@ range = max_loop ? max_loop << part_shift : 1UL << MINORBITS; + mutex_lock(&loop_ctl_mutex); + idr_for_each(&loop_index_idr, &loop_exit_cb, NULL); idr_destroy(&loop_index_idr); @@ -2409,6 +2468,8 @@ unregister_blkdev(LOOP_MAJOR, "loop"); misc_deregister(&loop_misc); + + mutex_unlock(&loop_ctl_mutex); } module_init(loop_init); --- linux-5.8.0.orig/drivers/block/loop.h +++ linux-5.8.0/drivers/block/loop.h @@ -46,7 +46,7 @@ int (*ioctl)(struct loop_device *, int cmd, unsigned long arg); - struct file * lo_backing_file; + struct file *lo_backing_file, *lo_backing_virt_file; struct block_device *lo_device; void *key_data; --- linux-5.8.0.orig/drivers/block/nbd.c +++ linux-5.8.0/drivers/block/nbd.c @@ -78,8 +78,7 @@ #define NBD_RT_HAS_PID_FILE 3 #define NBD_RT_HAS_CONFIG_REF 4 #define NBD_RT_BOUND 5 -#define NBD_RT_DESTROY_ON_DISCONNECT 6 -#define NBD_RT_DISCONNECT_ON_CLOSE 7 +#define NBD_RT_DISCONNECT_ON_CLOSE 6 #define NBD_DESTROY_ON_DISCONNECT 0 #define NBD_DISCONNECT_REQUESTED 1 @@ -296,7 +295,7 @@ } } -static void nbd_size_update(struct nbd_device *nbd) +static void nbd_size_update(struct nbd_device *nbd, bool start) { struct nbd_config *config = nbd->config; struct block_device *bdev = bdget_disk(nbd->disk, 0); @@ -312,7 +311,8 @@ if (bdev) { if (bdev->bd_disk) { bd_set_size(bdev, config->bytesize); - set_blocksize(bdev, config->blksize); + if (start) + set_blocksize(bdev, config->blksize); } else bdev->bd_invalidated = 1; bdput(bdev); @@ -327,7 +327,7 @@ config->blksize = blocksize; config->bytesize = blocksize * nr_blocks; if (nbd->task_recv != NULL) - nbd_size_update(nbd); + nbd_size_update(nbd, false); } static void nbd_complete_rq(struct request *req) @@ -798,9 +798,9 @@ blk_mq_complete_request(blk_mq_rq_from_pdu(cmd)); } + nbd_config_put(nbd); atomic_dec(&config->recv_threads); wake_up(&config->recv_wq); - nbd_config_put(nbd); kfree(args); } @@ -1024,6 +1024,12 @@ if (!sock) return err; + /* + * We need to make sure we don't get any errant requests while we're + * reallocating the ->socks array. + */ + blk_mq_freeze_queue(nbd->disk->queue); + if (!netlink && !nbd->task_setup && !test_bit(NBD_RT_BOUND, &config->runtime_flags)) nbd->task_setup = current; @@ -1062,10 +1068,12 @@ nsock->cookie = 0; socks[config->num_connections++] = nsock; atomic_inc(&config->live_connections); + blk_mq_unfreeze_queue(nbd->disk->queue); return 0; put_socket: + blk_mq_unfreeze_queue(nbd->disk->queue); sockfd_put(sock); return err; } @@ -1304,7 +1312,7 @@ args->index = i; queue_work(nbd->recv_workq, &args->work); } - nbd_size_update(nbd); + nbd_size_update(nbd, true); return error; } @@ -1360,6 +1368,8 @@ nbd->tag_set.timeout = timeout * HZ; if (timeout) blk_queue_rq_timeout(nbd->disk->queue, timeout * HZ); + else + blk_queue_rq_timeout(nbd->disk->queue, 30 * HZ); } /* Must be called with config_lock held */ @@ -1511,6 +1521,7 @@ if (test_bit(NBD_RT_DISCONNECT_ON_CLOSE, &nbd->config->runtime_flags) && bdev->bd_openers == 0) nbd_disconnect_and_put(nbd); + bdput(bdev); nbd_config_put(nbd); nbd_put(nbd); @@ -1939,12 +1950,21 @@ if (info->attrs[NBD_ATTR_CLIENT_FLAGS]) { u64 flags = nla_get_u64(info->attrs[NBD_ATTR_CLIENT_FLAGS]); if (flags & NBD_CFLAG_DESTROY_ON_DISCONNECT) { - set_bit(NBD_RT_DESTROY_ON_DISCONNECT, - &config->runtime_flags); - set_bit(NBD_DESTROY_ON_DISCONNECT, &nbd->flags); - put_dev = true; + /* + * We have 1 ref to keep the device around, and then 1 + * ref for our current operation here, which will be + * inherited by the config. If we already have + * DESTROY_ON_DISCONNECT set then we know we don't have + * that extra ref already held so we don't need the + * put_dev. + */ + if (!test_and_set_bit(NBD_DESTROY_ON_DISCONNECT, + &nbd->flags)) + put_dev = true; } else { - clear_bit(NBD_DESTROY_ON_DISCONNECT, &nbd->flags); + if (test_and_clear_bit(NBD_DESTROY_ON_DISCONNECT, + &nbd->flags)) + refcount_inc(&nbd->refs); } if (flags & NBD_CFLAG_DISCONNECT_ON_CLOSE) { set_bit(NBD_RT_DISCONNECT_ON_CLOSE, @@ -2115,15 +2135,13 @@ if (info->attrs[NBD_ATTR_CLIENT_FLAGS]) { u64 flags = nla_get_u64(info->attrs[NBD_ATTR_CLIENT_FLAGS]); if (flags & NBD_CFLAG_DESTROY_ON_DISCONNECT) { - if (!test_and_set_bit(NBD_RT_DESTROY_ON_DISCONNECT, - &config->runtime_flags)) + if (!test_and_set_bit(NBD_DESTROY_ON_DISCONNECT, + &nbd->flags)) put_dev = true; - set_bit(NBD_DESTROY_ON_DISCONNECT, &nbd->flags); } else { - if (test_and_clear_bit(NBD_RT_DESTROY_ON_DISCONNECT, - &config->runtime_flags)) + if (test_and_clear_bit(NBD_DESTROY_ON_DISCONNECT, + &nbd->flags)) refcount_inc(&nbd->refs); - clear_bit(NBD_DESTROY_ON_DISCONNECT, &nbd->flags); } if (flags & NBD_CFLAG_DISCONNECT_ON_CLOSE) { @@ -2282,6 +2300,12 @@ } dev_list = nla_nest_start_noflag(reply, NBD_ATTR_DEVICE_LIST); + if (!dev_list) { + nlmsg_free(reply); + ret = -EMSGSIZE; + goto out; + } + if (index == -1) { ret = idr_for_each(&nbd_index_idr, &status_cb, reply); if (ret) { --- linux-5.8.0.orig/drivers/block/null_blk.h +++ linux-5.8.0/drivers/block/null_blk.h @@ -44,11 +44,14 @@ unsigned int nr_zones; struct blk_zone *zones; sector_t zone_size_sects; + spinlock_t zone_lock; + unsigned long *zone_locks; unsigned long size; /* device size in MB */ unsigned long completion_nsec; /* time in ns to complete a request */ unsigned long cache_size; /* disk cache size in MB */ unsigned long zone_size; /* zone size in MB if device is zoned */ + unsigned long zone_capacity; /* zone capacity in MB if device is zoned */ unsigned int zone_nr_conv; /* number of conventional zones */ unsigned int submit_queues; /* number of submission queues */ unsigned int home_node; /* home node for the device */ --- linux-5.8.0.orig/drivers/block/null_blk_main.c +++ linux-5.8.0/drivers/block/null_blk_main.c @@ -200,6 +200,10 @@ module_param_named(zone_size, g_zone_size, ulong, S_IRUGO); MODULE_PARM_DESC(zone_size, "Zone size in MB when block device is zoned. Must be power-of-two: Default: 256"); +static unsigned long g_zone_capacity; +module_param_named(zone_capacity, g_zone_capacity, ulong, 0444); +MODULE_PARM_DESC(zone_capacity, "Zone capacity in MB when block device is zoned. Can be less than or equal to zone size. Default: Zone size"); + static unsigned int g_zone_nr_conv; module_param_named(zone_nr_conv, g_zone_nr_conv, uint, 0444); MODULE_PARM_DESC(zone_nr_conv, "Number of conventional zones when block device is zoned. Default: 0"); @@ -341,6 +345,7 @@ NULLB_DEVICE_ATTR(cache_size, ulong, NULL); NULLB_DEVICE_ATTR(zoned, bool, NULL); NULLB_DEVICE_ATTR(zone_size, ulong, NULL); +NULLB_DEVICE_ATTR(zone_capacity, ulong, NULL); NULLB_DEVICE_ATTR(zone_nr_conv, uint, NULL); static ssize_t nullb_device_power_show(struct config_item *item, char *page) @@ -457,6 +462,7 @@ &nullb_device_attr_badblocks, &nullb_device_attr_zoned, &nullb_device_attr_zone_size, + &nullb_device_attr_zone_capacity, &nullb_device_attr_zone_nr_conv, NULL, }; @@ -510,7 +516,8 @@ static ssize_t memb_group_features_show(struct config_item *item, char *page) { - return snprintf(page, PAGE_SIZE, "memory_backed,discard,bandwidth,cache,badblocks,zoned,zone_size,zone_nr_conv\n"); + return snprintf(page, PAGE_SIZE, + "memory_backed,discard,bandwidth,cache,badblocks,zoned,zone_size,zone_capacity,zone_nr_conv\n"); } CONFIGFS_ATTR_RO(memb_group_, features); @@ -571,6 +578,7 @@ dev->use_per_node_hctx = g_use_per_node_hctx; dev->zoned = g_zoned; dev->zone_size = g_zone_size; + dev->zone_capacity = g_zone_capacity; dev->zone_nr_conv = g_zone_nr_conv; return dev; } @@ -1139,7 +1147,7 @@ len = bvec.bv_len; err = null_transfer(nullb, bvec.bv_page, len, bvec.bv_offset, op_is_write(req_op(rq)), sector, - req_op(rq) & REQ_FUA); + rq->cmd_flags & REQ_FUA); if (err) { spin_unlock_irq(&nullb->lock); return err; --- linux-5.8.0.orig/drivers/block/null_blk_zoned.c +++ linux-5.8.0/drivers/block/null_blk_zoned.c @@ -1,12 +1,12 @@ // SPDX-License-Identifier: GPL-2.0 #include +#include #include "null_blk.h" #define CREATE_TRACE_POINTS #include "null_blk_trace.h" -/* zone_size in MBs to sectors. */ -#define ZONE_SIZE_SHIFT 11 +#define MB_TO_SECTS(mb) (((sector_t)mb * SZ_1M) >> SECTOR_SHIFT) static inline unsigned int null_zone_no(struct nullb_device *dev, sector_t sect) { @@ -15,7 +15,7 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q) { - sector_t dev_size = (sector_t)dev->size * 1024 * 1024; + sector_t dev_capacity_sects, zone_capacity_sects; sector_t sector = 0; unsigned int i; @@ -28,14 +28,43 @@ return -EINVAL; } - dev->zone_size_sects = dev->zone_size << ZONE_SIZE_SHIFT; - dev->nr_zones = dev_size >> - (SECTOR_SHIFT + ilog2(dev->zone_size_sects)); + if (!dev->zone_capacity) + dev->zone_capacity = dev->zone_size; + + if (dev->zone_capacity > dev->zone_size) { + pr_err("null_blk: zone capacity (%lu MB) larger than zone size (%lu MB)\n", + dev->zone_capacity, dev->zone_size); + return -EINVAL; + } + + zone_capacity_sects = MB_TO_SECTS(dev->zone_capacity); + dev_capacity_sects = MB_TO_SECTS(dev->size); + dev->zone_size_sects = MB_TO_SECTS(dev->zone_size); + dev->nr_zones = dev_capacity_sects >> ilog2(dev->zone_size_sects); + if (dev_capacity_sects & (dev->zone_size_sects - 1)) + dev->nr_zones++; + dev->zones = kvmalloc_array(dev->nr_zones, sizeof(struct blk_zone), GFP_KERNEL | __GFP_ZERO); if (!dev->zones) return -ENOMEM; + /* + * With memory backing, the zone_lock spinlock needs to be temporarily + * released to avoid scheduling in atomic context. To guarantee zone + * information protection, use a bitmap to lock zones with + * wait_on_bit_lock_io(). Sleeping on the lock is OK as memory backing + * implies that the queue is marked with BLK_MQ_F_BLOCKING. + */ + spin_lock_init(&dev->zone_lock); + if (dev->memory_backed) { + dev->zone_locks = bitmap_zalloc(dev->nr_zones, GFP_KERNEL); + if (!dev->zone_locks) { + kvfree(dev->zones); + return -ENOMEM; + } + } + if (dev->zone_nr_conv >= dev->nr_zones) { dev->zone_nr_conv = dev->nr_zones - 1; pr_info("changed the number of conventional zones to %u", @@ -47,6 +76,7 @@ zone->start = sector; zone->len = dev->zone_size_sects; + zone->capacity = zone->len; zone->wp = zone->start + zone->len; zone->type = BLK_ZONE_TYPE_CONVENTIONAL; zone->cond = BLK_ZONE_COND_NOT_WP; @@ -58,7 +88,12 @@ struct blk_zone *zone = &dev->zones[i]; zone->start = zone->wp = sector; - zone->len = dev->zone_size_sects; + if (zone->start + dev->zone_size_sects > dev_capacity_sects) + zone->len = dev_capacity_sects - zone->start; + else + zone->len = dev->zone_size_sects; + zone->capacity = + min_t(sector_t, zone->len, zone_capacity_sects); zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; zone->cond = BLK_ZONE_COND_EMPTY; @@ -94,15 +129,30 @@ void null_free_zoned_dev(struct nullb_device *dev) { + bitmap_free(dev->zone_locks); kvfree(dev->zones); } +static inline void null_lock_zone(struct nullb_device *dev, unsigned int zno) +{ + if (dev->memory_backed) + wait_on_bit_lock_io(dev->zone_locks, zno, TASK_UNINTERRUPTIBLE); + spin_lock_irq(&dev->zone_lock); +} + +static inline void null_unlock_zone(struct nullb_device *dev, unsigned int zno) +{ + spin_unlock_irq(&dev->zone_lock); + if (dev->memory_backed) + clear_and_wake_up_bit(zno, dev->zone_locks); +} + int null_report_zones(struct gendisk *disk, sector_t sector, unsigned int nr_zones, report_zones_cb cb, void *data) { struct nullb *nullb = disk->private_data; struct nullb_device *dev = nullb->dev; - unsigned int first_zone, i; + unsigned int first_zone, i, zno; struct blk_zone zone; int error; @@ -113,15 +163,18 @@ nr_zones = min(nr_zones, dev->nr_zones - first_zone); trace_nullb_report_zones(nullb, nr_zones); - for (i = 0; i < nr_zones; i++) { + zno = first_zone; + for (i = 0; i < nr_zones; i++, zno++) { /* * Stacked DM target drivers will remap the zone information by * modifying the zone information passed to the report callback. * So use a local copy to avoid corruption of the device zone * array. */ - memcpy(&zone, &dev->zones[first_zone + i], - sizeof(struct blk_zone)); + null_lock_zone(dev, zno); + memcpy(&zone, &dev->zones[zno], sizeof(struct blk_zone)); + null_unlock_zone(dev, zno); + error = cb(&zone, i, data); if (error) return error; @@ -130,6 +183,10 @@ return nr_zones; } +/* + * This is called in the case of memory backing from null_process_cmd() + * with the target zone already locked. + */ size_t null_zone_valid_read_len(struct nullb *nullb, sector_t sector, unsigned int len) { @@ -158,13 +215,19 @@ trace_nullb_zone_op(cmd, zno, zone->cond); - if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) + if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { + if (append) + return BLK_STS_IOERR; return null_process_cmd(cmd, REQ_OP_WRITE, sector, nr_sectors); + } + + null_lock_zone(dev, zno); switch (zone->cond) { case BLK_ZONE_COND_FULL: /* Cannot write to a full zone */ - return BLK_STS_IOERR; + ret = BLK_STS_IOERR; + break; case BLK_ZONE_COND_EMPTY: case BLK_ZONE_COND_IMP_OPEN: case BLK_ZONE_COND_EXP_OPEN: @@ -182,63 +245,101 @@ else cmd->rq->__sector = sector; } else if (sector != zone->wp) { - return BLK_STS_IOERR; + ret = BLK_STS_IOERR; + break; + } + + if (zone->wp + nr_sectors > zone->start + zone->capacity) { + ret = BLK_STS_IOERR; + break; } if (zone->cond != BLK_ZONE_COND_EXP_OPEN) zone->cond = BLK_ZONE_COND_IMP_OPEN; + if (dev->memory_backed) + spin_unlock_irq(&dev->zone_lock); ret = null_process_cmd(cmd, REQ_OP_WRITE, sector, nr_sectors); + if (dev->memory_backed) + spin_lock_irq(&dev->zone_lock); + if (ret != BLK_STS_OK) - return ret; + break; zone->wp += nr_sectors; - if (zone->wp == zone->start + zone->len) + if (zone->wp == zone->start + zone->capacity) zone->cond = BLK_ZONE_COND_FULL; - return BLK_STS_OK; + ret = BLK_STS_OK; + break; default: /* Invalid zone condition */ - return BLK_STS_IOERR; + ret = BLK_STS_IOERR; } + + null_unlock_zone(dev, zno); + + return ret; } static blk_status_t null_zone_mgmt(struct nullb_cmd *cmd, enum req_opf op, sector_t sector) { struct nullb_device *dev = cmd->nq->dev; - unsigned int zone_no = null_zone_no(dev, sector); - struct blk_zone *zone = &dev->zones[zone_no]; + unsigned int zone_no; + struct blk_zone *zone; + blk_status_t ret = BLK_STS_OK; size_t i; - switch (op) { - case REQ_OP_ZONE_RESET_ALL: - for (i = 0; i < dev->nr_zones; i++) { - if (zone[i].type == BLK_ZONE_TYPE_CONVENTIONAL) - continue; - zone[i].cond = BLK_ZONE_COND_EMPTY; - zone[i].wp = zone[i].start; + if (op == REQ_OP_ZONE_RESET_ALL) { + for (i = dev->zone_nr_conv; i < dev->nr_zones; i++) { + null_lock_zone(dev, i); + zone = &dev->zones[i]; + if (zone->cond != BLK_ZONE_COND_EMPTY) { + zone->cond = BLK_ZONE_COND_EMPTY; + zone->wp = zone->start; + trace_nullb_zone_op(cmd, i, zone->cond); + } + null_unlock_zone(dev, i); } - break; + return BLK_STS_OK; + } + + zone_no = null_zone_no(dev, sector); + zone = &dev->zones[zone_no]; + + null_lock_zone(dev, zone_no); + + switch (op) { case REQ_OP_ZONE_RESET: - if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) - return BLK_STS_IOERR; + if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { + ret = BLK_STS_IOERR; + break; + } zone->cond = BLK_ZONE_COND_EMPTY; zone->wp = zone->start; break; case REQ_OP_ZONE_OPEN: - if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) - return BLK_STS_IOERR; - if (zone->cond == BLK_ZONE_COND_FULL) - return BLK_STS_IOERR; + if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { + ret = BLK_STS_IOERR; + break; + } + if (zone->cond == BLK_ZONE_COND_FULL) { + ret = BLK_STS_IOERR; + break; + } zone->cond = BLK_ZONE_COND_EXP_OPEN; break; case REQ_OP_ZONE_CLOSE: - if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) - return BLK_STS_IOERR; - if (zone->cond == BLK_ZONE_COND_FULL) - return BLK_STS_IOERR; + if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { + ret = BLK_STS_IOERR; + break; + } + if (zone->cond == BLK_ZONE_COND_FULL) { + ret = BLK_STS_IOERR; + break; + } if (zone->wp == zone->start) zone->cond = BLK_ZONE_COND_EMPTY; @@ -246,35 +347,54 @@ zone->cond = BLK_ZONE_COND_CLOSED; break; case REQ_OP_ZONE_FINISH: - if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) - return BLK_STS_IOERR; + if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { + ret = BLK_STS_IOERR; + break; + } zone->cond = BLK_ZONE_COND_FULL; zone->wp = zone->start + zone->len; + ret = BLK_STS_OK; break; default: - return BLK_STS_NOTSUPP; + ret = BLK_STS_NOTSUPP; + break; } - trace_nullb_zone_op(cmd, zone_no, zone->cond); - return BLK_STS_OK; + if (ret == BLK_STS_OK) + trace_nullb_zone_op(cmd, zone_no, zone->cond); + + null_unlock_zone(dev, zone_no); + + return ret; } blk_status_t null_process_zoned_cmd(struct nullb_cmd *cmd, enum req_opf op, sector_t sector, sector_t nr_sectors) { + struct nullb_device *dev = cmd->nq->dev; + unsigned int zno = null_zone_no(dev, sector); + blk_status_t sts; + switch (op) { case REQ_OP_WRITE: - return null_zone_write(cmd, sector, nr_sectors, false); + sts = null_zone_write(cmd, sector, nr_sectors, false); + break; case REQ_OP_ZONE_APPEND: - return null_zone_write(cmd, sector, nr_sectors, true); + sts = null_zone_write(cmd, sector, nr_sectors, true); + break; case REQ_OP_ZONE_RESET: case REQ_OP_ZONE_RESET_ALL: case REQ_OP_ZONE_OPEN: case REQ_OP_ZONE_CLOSE: case REQ_OP_ZONE_FINISH: - return null_zone_mgmt(cmd, op, sector); + sts = null_zone_mgmt(cmd, op, sector); + break; default: - return null_process_cmd(cmd, op, sector, nr_sectors); + null_lock_zone(dev, zno); + sts = null_process_cmd(cmd, op, sector, nr_sectors); + null_unlock_zone(dev, zno); } + + return sts; } --- linux-5.8.0.orig/drivers/block/rbd.c +++ linux-5.8.0/drivers/block/rbd.c @@ -5120,6 +5120,9 @@ { struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + return sprintf(buf, "%s\n", rbd_dev->config_info); } @@ -5231,6 +5234,9 @@ struct rbd_device *rbd_dev = dev_to_rbd_dev(dev); int ret; + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + ret = rbd_dev_refresh(rbd_dev); if (ret) return ret; @@ -7059,6 +7065,9 @@ struct rbd_client *rbdc; int rc; + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (!try_module_get(THIS_MODULE)) return -ENODEV; @@ -7209,6 +7218,9 @@ bool force = false; int ret; + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + dev_id = -1; opt_buf[0] = '\0'; sscanf(buf, "%d %5s", &dev_id, opt_buf); --- linux-5.8.0.orig/drivers/block/rnbd/rnbd-clt-sysfs.c +++ linux-5.8.0/drivers/block/rnbd/rnbd-clt-sysfs.c @@ -433,8 +433,9 @@ * i.e. rnbd_clt_unmap_dev_store() leading to a sysfs warning because * of sysfs link already was removed already. */ - if (strlen(dev->blk_symlink_name) && try_module_get(THIS_MODULE)) { + if (dev->blk_symlink_name && try_module_get(THIS_MODULE)) { sysfs_remove_link(rnbd_devs_kobj, dev->blk_symlink_name); + kfree(dev->blk_symlink_name); module_put(THIS_MODULE); } } @@ -487,10 +488,17 @@ static int rnbd_clt_add_dev_symlink(struct rnbd_clt_dev *dev) { struct kobject *gd_kobj = &disk_to_dev(dev->gd)->kobj; - int ret; + int ret, len; + + len = strlen(dev->pathname) + strlen(dev->sess->sessname) + 2; + dev->blk_symlink_name = kzalloc(len, GFP_KERNEL); + if (!dev->blk_symlink_name) { + rnbd_clt_err(dev, "Failed to allocate memory for blk_symlink_name\n"); + return -ENOMEM; + } ret = rnbd_clt_get_path_name(dev, dev->blk_symlink_name, - sizeof(dev->blk_symlink_name)); + len); if (ret) { rnbd_clt_err(dev, "Failed to get /sys/block symlink path, err: %d\n", ret); @@ -508,7 +516,8 @@ return 0; out_err: - dev->blk_symlink_name[0] = '\0'; + kfree(dev->blk_symlink_name); + dev->blk_symlink_name = NULL ; return ret; } --- linux-5.8.0.orig/drivers/block/rnbd/rnbd-clt.c +++ linux-5.8.0/drivers/block/rnbd/rnbd-clt.c @@ -59,6 +59,7 @@ ida_simple_remove(&index_ida, dev->clt_device_id); mutex_unlock(&ida_lock); kfree(dev->hw_queues); + kfree(dev->pathname); rnbd_clt_put_sess(dev->sess); mutex_destroy(&dev->lock); kfree(dev); @@ -1392,10 +1393,16 @@ pathname, sess->sessname, ret); goto out_queues; } + + dev->pathname = kstrdup(pathname, GFP_KERNEL); + if (!dev->pathname) { + ret = -ENOMEM; + goto out_queues; + } + dev->clt_device_id = ret; dev->sess = sess; dev->access_mode = access_mode; - strlcpy(dev->pathname, pathname, sizeof(dev->pathname)); mutex_init(&dev->lock); refcount_set(&dev->refcount, 1); dev->dev_state = DEV_STATE_INIT; @@ -1424,8 +1431,8 @@ list_for_each_entry(sess, &sess_list, list) { mutex_lock(&sess->lock); list_for_each_entry(dev, &sess->devs_list, list) { - if (!strncmp(dev->pathname, pathname, - sizeof(dev->pathname))) { + if (strlen(dev->pathname) == strlen(pathname) && + !strcmp(dev->pathname, pathname)) { found = true; break; } @@ -1673,7 +1680,8 @@ */ list_for_each_entry_safe(sess, sn, &sess_list, list) { - WARN_ON(!rnbd_clt_get_sess(sess)); + if (!rnbd_clt_get_sess(sess)) + continue; close_rtrs(sess); list_for_each_entry_safe(dev, tn, &sess->devs_list, list) { /* --- linux-5.8.0.orig/drivers/block/rnbd/rnbd-clt.h +++ linux-5.8.0/drivers/block/rnbd/rnbd-clt.h @@ -108,7 +108,7 @@ u32 clt_device_id; struct mutex lock; enum rnbd_clt_dev_state dev_state; - char pathname[NAME_MAX]; + char *pathname; enum rnbd_access_mode access_mode; bool read_only; bool rotational; @@ -126,7 +126,7 @@ struct list_head list; struct gendisk *gd; struct kobject kobj; - char blk_symlink_name[NAME_MAX]; + char *blk_symlink_name; refcount_t refcount; struct work_struct unmap_on_rmmod_work; }; --- linux-5.8.0.orig/drivers/block/rsxx/core.c +++ linux-5.8.0/drivers/block/rsxx/core.c @@ -165,15 +165,17 @@ { struct rsxx_cardinfo *card = file_inode(fp)->i_private; char *buf; - ssize_t st; + int st; buf = kzalloc(cnt, GFP_KERNEL); if (!buf) return -ENOMEM; st = rsxx_creg_read(card, CREG_ADD_CRAM + (u32)*ppos, cnt, buf, 1); - if (!st) - st = copy_to_user(ubuf, buf, cnt); + if (!st) { + if (copy_to_user(ubuf, buf, cnt)) + st = -EFAULT; + } kfree(buf); if (st) return st; @@ -867,6 +869,7 @@ card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event"); if (!card->event_wq) { dev_err(CARD_TO_DEV(card), "Failed card event setup.\n"); + st = -ENOMEM; goto failed_event_handler; } --- linux-5.8.0.orig/drivers/block/umem.c +++ linux-5.8.0/drivers/block/umem.c @@ -875,6 +875,7 @@ if (card->mm_pages[0].desc == NULL || card->mm_pages[1].desc == NULL) { dev_printk(KERN_ERR, &card->dev->dev, "alloc failed\n"); + ret = -ENOMEM; goto failed_alloc; } reset_page(&card->mm_pages[0]); @@ -886,8 +887,10 @@ spin_lock_init(&card->lock); card->queue = blk_alloc_queue(mm_make_request, NUMA_NO_NODE); - if (!card->queue) + if (!card->queue) { + ret = -ENOMEM; goto failed_alloc; + } card->queue->queuedata = card; tasklet_init(&card->tasklet, process_page, (unsigned long)card); --- linux-5.8.0.orig/drivers/block/virtio_blk.c +++ linux-5.8.0/drivers/block/virtio_blk.c @@ -126,16 +126,31 @@ if (!range) return -ENOMEM; - __rq_for_each_bio(bio, req) { - u64 sector = bio->bi_iter.bi_sector; - u32 num_sectors = bio->bi_iter.bi_size >> SECTOR_SHIFT; + /* + * Single max discard segment means multi-range discard isn't + * supported, and block layer only runs contiguity merge like + * normal RW request. So we can't reply on bio for retrieving + * each range info. + */ + if (queue_max_discard_segments(req->q) == 1) { + range[0].flags = cpu_to_le32(flags); + range[0].num_sectors = cpu_to_le32(blk_rq_sectors(req)); + range[0].sector = cpu_to_le64(blk_rq_pos(req)); + n = 1; + } else { + __rq_for_each_bio(bio, req) { + u64 sector = bio->bi_iter.bi_sector; + u32 num_sectors = bio->bi_iter.bi_size >> SECTOR_SHIFT; - range[n].flags = cpu_to_le32(flags); - range[n].num_sectors = cpu_to_le32(num_sectors); - range[n].sector = cpu_to_le64(sector); - n++; + range[n].flags = cpu_to_le32(flags); + range[n].num_sectors = cpu_to_le32(num_sectors); + range[n].sector = cpu_to_le64(sector); + n++; + } } + WARN_ON_ONCE(n != segments); + req->special_vec.bv_page = virt_to_page(range); req->special_vec.bv_offset = offset_in_page(range); req->special_vec.bv_len = sizeof(*range) * segments; --- linux-5.8.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-5.8.0/drivers/block/xen-blkback/blkback.c @@ -132,76 +132,15 @@ #define BLKBACK_INVALID_HANDLE (~0) -/* Number of free pages to remove on each call to gnttab_free_pages */ -#define NUM_BATCH_FREE_PAGES 10 - static inline bool persistent_gnt_timeout(struct persistent_gnt *persistent_gnt) { return pgrant_timeout && (jiffies - persistent_gnt->last_used >= HZ * pgrant_timeout); } -static inline int get_free_page(struct xen_blkif_ring *ring, struct page **page) -{ - unsigned long flags; - - spin_lock_irqsave(&ring->free_pages_lock, flags); - if (list_empty(&ring->free_pages)) { - BUG_ON(ring->free_pages_num != 0); - spin_unlock_irqrestore(&ring->free_pages_lock, flags); - return gnttab_alloc_pages(1, page); - } - BUG_ON(ring->free_pages_num == 0); - page[0] = list_first_entry(&ring->free_pages, struct page, lru); - list_del(&page[0]->lru); - ring->free_pages_num--; - spin_unlock_irqrestore(&ring->free_pages_lock, flags); - - return 0; -} - -static inline void put_free_pages(struct xen_blkif_ring *ring, struct page **page, - int num) -{ - unsigned long flags; - int i; - - spin_lock_irqsave(&ring->free_pages_lock, flags); - for (i = 0; i < num; i++) - list_add(&page[i]->lru, &ring->free_pages); - ring->free_pages_num += num; - spin_unlock_irqrestore(&ring->free_pages_lock, flags); -} - -static inline void shrink_free_pagepool(struct xen_blkif_ring *ring, int num) -{ - /* Remove requested pages in batches of NUM_BATCH_FREE_PAGES */ - struct page *page[NUM_BATCH_FREE_PAGES]; - unsigned int num_pages = 0; - unsigned long flags; - - spin_lock_irqsave(&ring->free_pages_lock, flags); - while (ring->free_pages_num > num) { - BUG_ON(list_empty(&ring->free_pages)); - page[num_pages] = list_first_entry(&ring->free_pages, - struct page, lru); - list_del(&page[num_pages]->lru); - ring->free_pages_num--; - if (++num_pages == NUM_BATCH_FREE_PAGES) { - spin_unlock_irqrestore(&ring->free_pages_lock, flags); - gnttab_free_pages(num_pages, page); - spin_lock_irqsave(&ring->free_pages_lock, flags); - num_pages = 0; - } - } - spin_unlock_irqrestore(&ring->free_pages_lock, flags); - if (num_pages != 0) - gnttab_free_pages(num_pages, page); -} - #define vaddr(page) ((unsigned long)pfn_to_kaddr(page_to_pfn(page))) -static int do_block_io_op(struct xen_blkif_ring *ring); +static int do_block_io_op(struct xen_blkif_ring *ring, unsigned int *eoi_flags); static int dispatch_rw_block_io(struct xen_blkif_ring *ring, struct blkif_request *req, struct pending_req *pending_req); @@ -331,7 +270,8 @@ unmap_data.count = segs_to_unmap; BUG_ON(gnttab_unmap_refs_sync(&unmap_data)); - put_free_pages(ring, pages, segs_to_unmap); + gnttab_page_cache_put(&ring->free_pages, pages, + segs_to_unmap); segs_to_unmap = 0; } @@ -371,7 +311,8 @@ if (++segs_to_unmap == BLKIF_MAX_SEGMENTS_PER_REQUEST) { unmap_data.count = segs_to_unmap; BUG_ON(gnttab_unmap_refs_sync(&unmap_data)); - put_free_pages(ring, pages, segs_to_unmap); + gnttab_page_cache_put(&ring->free_pages, pages, + segs_to_unmap); segs_to_unmap = 0; } kfree(persistent_gnt); @@ -379,7 +320,7 @@ if (segs_to_unmap > 0) { unmap_data.count = segs_to_unmap; BUG_ON(gnttab_unmap_refs_sync(&unmap_data)); - put_free_pages(ring, pages, segs_to_unmap); + gnttab_page_cache_put(&ring->free_pages, pages, segs_to_unmap); } } @@ -612,6 +553,8 @@ struct xen_vbd *vbd = &blkif->vbd; unsigned long timeout; int ret; + bool do_eoi; + unsigned int eoi_flags = XEN_EOI_FLAG_SPURIOUS; set_freezable(); while (!kthread_should_stop()) { @@ -636,16 +579,23 @@ if (timeout == 0) goto purge_gnt_list; + do_eoi = ring->waiting_reqs; + ring->waiting_reqs = 0; smp_mb(); /* clear flag *before* checking for work */ - ret = do_block_io_op(ring); + ret = do_block_io_op(ring, &eoi_flags); if (ret > 0) ring->waiting_reqs = 1; if (ret == -EACCES) wait_event_interruptible(ring->shutdown_wq, kthread_should_stop()); + if (do_eoi && !ring->waiting_reqs) { + xen_irq_lateeoi(ring->irq, eoi_flags); + eoi_flags |= XEN_EOI_FLAG_SPURIOUS; + } + purge_gnt_list: if (blkif->vbd.feature_gnt_persistent && time_after(jiffies, ring->next_lru)) { @@ -655,9 +605,10 @@ /* Shrink the free pages pool if it is too large. */ if (time_before(jiffies, blkif->buffer_squeeze_end)) - shrink_free_pagepool(ring, 0); + gnttab_page_cache_shrink(&ring->free_pages, 0); else - shrink_free_pagepool(ring, max_buffer_pages); + gnttab_page_cache_shrink(&ring->free_pages, + max_buffer_pages); if (log_stats && time_after(jiffies, ring->st_print)) print_stats(ring); @@ -688,7 +639,7 @@ ring->persistent_gnt_c = 0; /* Since we are shutting down remove all pages from the buffer */ - shrink_free_pagepool(ring, 0 /* All */); + gnttab_page_cache_shrink(&ring->free_pages, 0 /* All */); } static unsigned int xen_blkbk_unmap_prepare( @@ -727,7 +678,7 @@ but is this the best way to deal with this? */ BUG_ON(result); - put_free_pages(ring, data->pages, data->count); + gnttab_page_cache_put(&ring->free_pages, data->pages, data->count); make_response(ring, pending_req->id, pending_req->operation, pending_req->status); free_req(ring, pending_req); @@ -794,7 +745,8 @@ if (invcount) { ret = gnttab_unmap_refs(unmap, NULL, unmap_pages, invcount); BUG_ON(ret); - put_free_pages(ring, unmap_pages, invcount); + gnttab_page_cache_put(&ring->free_pages, unmap_pages, + invcount); } pages += batch; num -= batch; @@ -841,8 +793,14 @@ pages[i]->page = persistent_gnt->page; pages[i]->persistent_gnt = persistent_gnt; } else { - if (get_free_page(ring, &pages[i]->page)) - goto out_of_memory; + if (gnttab_page_cache_get(&ring->free_pages, + &pages[i]->page)) { + gnttab_page_cache_put(&ring->free_pages, + pages_to_gnt, + segs_to_map); + ret = -ENOMEM; + goto out; + } addr = vaddr(pages[i]->page); pages_to_gnt[segs_to_map] = pages[i]->page; pages[i]->persistent_gnt = NULL; @@ -858,10 +816,8 @@ break; } - if (segs_to_map) { + if (segs_to_map) ret = gnttab_map_refs(map, NULL, pages_to_gnt, segs_to_map); - BUG_ON(ret); - } /* * Now swizzle the MFN in our domain with the MFN from the other domain @@ -874,9 +830,10 @@ BUG_ON(new_map_idx >= segs_to_map); if (unlikely(map[new_map_idx].status != 0)) { pr_debug("invalid buffer -- could not remap it\n"); - put_free_pages(ring, &pages[seg_idx]->page, 1); + gnttab_page_cache_put(&ring->free_pages, + &pages[seg_idx]->page, 1); pages[seg_idx]->handle = BLKBACK_INVALID_HANDLE; - ret |= 1; + ret |= !ret; goto next; } pages[seg_idx]->handle = map[new_map_idx].handle; @@ -928,17 +885,18 @@ } segs_to_map = 0; last_map = map_until; - if (map_until != num) + if (!ret && map_until != num) goto again; - return ret; - -out_of_memory: - pr_alert("%s: out of memory\n", __func__); - put_free_pages(ring, pages_to_gnt, segs_to_map); - for (i = last_map; i < num; i++) +out: + for (i = last_map; i < num; i++) { + /* Don't zap current batch's valid persistent grants. */ + if(i >= map_until) + pages[i]->persistent_gnt = NULL; pages[i]->handle = BLKBACK_INVALID_HANDLE; - return -ENOMEM; + } + + return ret; } static int xen_blkbk_map_seg(struct pending_req *pending_req) @@ -1121,7 +1079,7 @@ * and transmute it to the block API to hand it over to the proper block disk. */ static int -__do_block_io_op(struct xen_blkif_ring *ring) +__do_block_io_op(struct xen_blkif_ring *ring, unsigned int *eoi_flags) { union blkif_back_rings *blk_rings = &ring->blk_rings; struct blkif_request req; @@ -1144,6 +1102,9 @@ if (RING_REQUEST_CONS_OVERFLOW(&blk_rings->common, rc)) break; + /* We've seen a request, so clear spurious eoi flag. */ + *eoi_flags &= ~XEN_EOI_FLAG_SPURIOUS; + if (kthread_should_stop()) { more_to_do = 1; break; @@ -1202,13 +1163,13 @@ } static int -do_block_io_op(struct xen_blkif_ring *ring) +do_block_io_op(struct xen_blkif_ring *ring, unsigned int *eoi_flags) { union blkif_back_rings *blk_rings = &ring->blk_rings; int more_to_do; do { - more_to_do = __do_block_io_op(ring); + more_to_do = __do_block_io_op(ring, eoi_flags); if (more_to_do) break; --- linux-5.8.0.orig/drivers/block/xen-blkback/common.h +++ linux-5.8.0/drivers/block/xen-blkback/common.h @@ -289,9 +289,7 @@ struct work_struct persistent_purge_work; /* Buffer of free pages to map grant refs. */ - spinlock_t free_pages_lock; - int free_pages_num; - struct list_head free_pages; + struct gnttab_page_cache free_pages; struct work_struct free_work; /* Thread shutdown wait queue. */ --- linux-5.8.0.orig/drivers/block/xen-blkback/xenbus.c +++ linux-5.8.0/drivers/block/xen-blkback/xenbus.c @@ -144,8 +144,7 @@ INIT_LIST_HEAD(&ring->pending_free); INIT_LIST_HEAD(&ring->persistent_purge_list); INIT_WORK(&ring->persistent_purge_work, xen_blkbk_unmap_purged_grants); - spin_lock_init(&ring->free_pages_lock); - INIT_LIST_HEAD(&ring->free_pages); + gnttab_page_cache_init(&ring->free_pages); spin_lock_init(&ring->pending_free_lock); init_waitqueue_head(&ring->pending_free_wq); @@ -246,9 +245,8 @@ if (req_prod - rsp_prod > size) goto fail; - err = bind_interdomain_evtchn_to_irqhandler(blkif->domid, evtchn, - xen_blkif_be_int, 0, - "blkif-backend", ring); + err = bind_interdomain_evtchn_to_irqhandler_lateeoi(blkif->domid, + evtchn, xen_blkif_be_int, 0, "blkif-backend", ring); if (err < 0) goto fail; ring->irq = err; @@ -276,6 +274,7 @@ if (ring->xenblkd) { kthread_stop(ring->xenblkd); + ring->xenblkd = NULL; wake_up(&ring->shutdown_wq); } @@ -318,8 +317,7 @@ BUG_ON(atomic_read(&ring->persistent_gnt_in_use) != 0); BUG_ON(!list_empty(&ring->persistent_purge_list)); BUG_ON(!RB_EMPTY_ROOT(&ring->persistent_gnts)); - BUG_ON(!list_empty(&ring->free_pages)); - BUG_ON(ring->free_pages_num != 0); + BUG_ON(ring->free_pages.num_pages != 0); BUG_ON(ring->persistent_gnt_c != 0); WARN_ON(i != (XEN_BLKIF_REQS_PER_PAGE * blkif->nr_ring_pages)); ring->active = false; @@ -670,7 +668,8 @@ /* setup back pointer */ be->blkif->be = be; - err = xenbus_watch_pathfmt(dev, &be->backend_watch, backend_changed, + err = xenbus_watch_pathfmt(dev, &be->backend_watch, NULL, + backend_changed, "%s/%s", dev->nodename, "physical-device"); if (err) goto fail; --- linux-5.8.0.orig/drivers/block/xen-blkfront.c +++ linux-5.8.0/drivers/block/xen-blkfront.c @@ -945,7 +945,8 @@ if (info->feature_discard) { blk_queue_flag_set(QUEUE_FLAG_DISCARD, rq); blk_queue_max_discard_sectors(rq, get_capacity(gd)); - rq->limits.discard_granularity = info->discard_granularity; + rq->limits.discard_granularity = info->discard_granularity ?: + info->physical_sector_size; rq->limits.discard_alignment = info->discard_alignment; if (info->feature_secdiscard) blk_queue_flag_set(QUEUE_FLAG_SECERASE, rq); @@ -2170,19 +2171,12 @@ static void blkfront_setup_discard(struct blkfront_info *info) { - int err; - unsigned int discard_granularity; - unsigned int discard_alignment; - info->feature_discard = 1; - err = xenbus_gather(XBT_NIL, info->xbdev->otherend, - "discard-granularity", "%u", &discard_granularity, - "discard-alignment", "%u", &discard_alignment, - NULL); - if (!err) { - info->discard_granularity = discard_granularity; - info->discard_alignment = discard_alignment; - } + info->discard_granularity = xenbus_read_unsigned(info->xbdev->otherend, + "discard-granularity", + 0); + info->discard_alignment = xenbus_read_unsigned(info->xbdev->otherend, + "discard-alignment", 0); info->feature_secdiscard = !!xenbus_read_unsigned(info->xbdev->otherend, "discard-secure", 0); --- linux-5.8.0.orig/drivers/block/zram/zram_drv.c +++ linux-5.8.0/drivers/block/zram/zram_drv.c @@ -631,7 +631,7 @@ struct bio_vec bio_vec; struct page *page; ssize_t ret = len; - int mode; + int mode, err; unsigned long blk_idx = 0; if (sysfs_streq(buf, "idle")) @@ -723,12 +723,17 @@ * XXX: A single page IO would be inefficient for write * but it would be not bad as starter. */ - ret = submit_bio_wait(&bio); - if (ret) { + err = submit_bio_wait(&bio); + if (err) { zram_slot_lock(zram, index); zram_clear_flag(zram, index, ZRAM_UNDER_WB); zram_clear_flag(zram, index, ZRAM_IDLE); zram_slot_unlock(zram, index); + /* + * Return last IO error unless every IO were + * not suceeded. + */ + ret = err; continue; } @@ -1076,7 +1081,7 @@ zram->limit_pages << PAGE_SHIFT, max_used << PAGE_SHIFT, (u64)atomic64_read(&zram->stats.same_pages), - pool_stats.pages_compacted, + atomic_long_read(&pool_stats.pages_compacted), (u64)atomic64_read(&zram->stats.huge_pages)); up_read(&zram->init_lock); --- linux-5.8.0.orig/drivers/bluetooth/btmrvl_sdio.c +++ linux-5.8.0/drivers/bluetooth/btmrvl_sdio.c @@ -328,7 +328,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8977 = { .helper = NULL, - .firmware = "mrvl/sd8977_uapsta.bin", + .firmware = "mrvl/sdsd8977_combo_v2.bin", .reg = &btmrvl_reg_8977, .support_pscan_win_report = true, .sd_blksz_fw_dl = 256, @@ -346,7 +346,7 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = { .helper = NULL, - .firmware = "mrvl/sd8997_uapsta.bin", + .firmware = "mrvl/sdsd8997_combo_v4.bin", .reg = &btmrvl_reg_8997, .support_pscan_win_report = true, .sd_blksz_fw_dl = 256, @@ -1831,6 +1831,6 @@ MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin"); MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin"); -MODULE_FIRMWARE("mrvl/sd8977_uapsta.bin"); +MODULE_FIRMWARE("mrvl/sdsd8977_combo_v2.bin"); MODULE_FIRMWARE("mrvl/sd8987_uapsta.bin"); -MODULE_FIRMWARE("mrvl/sd8997_uapsta.bin"); +MODULE_FIRMWARE("mrvl/sdsd8997_combo_v4.bin"); --- linux-5.8.0.orig/drivers/bluetooth/btmtksdio.c +++ linux-5.8.0/drivers/bluetooth/btmtksdio.c @@ -685,7 +685,7 @@ const u8 *fw_ptr; size_t fw_size; int err, dlen; - u8 flag; + u8 flag, param; err = request_firmware(&fw, fwname, &hdev->dev); if (err < 0) { @@ -693,6 +693,20 @@ return err; } + /* Power on data RAM the firmware relies on. */ + param = 1; + wmt_params.op = MTK_WMT_FUNC_CTRL; + wmt_params.flag = 3; + wmt_params.dlen = sizeof(param); + wmt_params.data = ¶m; + wmt_params.status = NULL; + + err = mtk_hci_wmt_sync(hdev, &wmt_params); + if (err < 0) { + bt_dev_err(hdev, "Failed to power on data RAM (%d)", err); + goto free_fw; + } + fw_ptr = fw->data; fw_size = fw->size; --- linux-5.8.0.orig/drivers/bluetooth/btqcomsmd.c +++ linux-5.8.0/drivers/bluetooth/btqcomsmd.c @@ -142,12 +142,16 @@ btq->cmd_channel = qcom_wcnss_open_channel(wcnss, "APPS_RIVA_BT_CMD", btqcomsmd_cmd_callback, btq); - if (IS_ERR(btq->cmd_channel)) - return PTR_ERR(btq->cmd_channel); + if (IS_ERR(btq->cmd_channel)) { + ret = PTR_ERR(btq->cmd_channel); + goto destroy_acl_channel; + } hdev = hci_alloc_dev(); - if (!hdev) - return -ENOMEM; + if (!hdev) { + ret = -ENOMEM; + goto destroy_cmd_channel; + } hci_set_drvdata(hdev, btq); btq->hdev = hdev; @@ -161,14 +165,21 @@ hdev->set_bdaddr = qca_set_bdaddr_rome; ret = hci_register_dev(hdev); - if (ret < 0) { - hci_free_dev(hdev); - return ret; - } + if (ret < 0) + goto hci_free_dev; platform_set_drvdata(pdev, btq); return 0; + +hci_free_dev: + hci_free_dev(hdev); +destroy_cmd_channel: + rpmsg_destroy_ept(btq->cmd_channel); +destroy_acl_channel: + rpmsg_destroy_ept(btq->acl_channel); + + return ret; } static int btqcomsmd_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/bluetooth/btrtl.c +++ linux-5.8.0/drivers/bluetooth/btrtl.c @@ -25,6 +25,7 @@ #define RTL_ROM_LMP_8821A 0x8821 #define RTL_ROM_LMP_8761A 0x8761 #define RTL_ROM_LMP_8822B 0x8822 +#define RTL_ROM_LMP_8852A 0x8852 #define RTL_CONFIG_MAGIC 0x8723ab55 #define IC_MATCH_FL_LMPSUBV (1 << 0) @@ -36,6 +37,19 @@ .lmp_subver = (lmps), \ .hci_rev = (hcir) +enum btrtl_chip_id { + CHIP_ID_8723A, + CHIP_ID_8723B, + CHIP_ID_8821A, + CHIP_ID_8761A, + CHIP_ID_8822B = 8, + CHIP_ID_8723D, + CHIP_ID_8821C, + CHIP_ID_8822C = 13, + CHIP_ID_8761B, + CHIP_ID_8852A = 18, +}; + struct id_table { __u16 match_flags; __u16 lmp_subver; @@ -55,6 +69,8 @@ int fw_len; u8 *cfg_data; int cfg_len; + bool drop_fw; + int project_id; }; static const struct id_table ic_id_table[] = { @@ -168,6 +184,18 @@ .has_rom_version = true, .fw_name = "rtl_bt/rtl8822b_fw.bin", .cfg_name = "rtl_bt/rtl8822b_config" }, + + /* 8852A */ + { .match_flags = IC_MATCH_FL_LMPSUBV | IC_MATCH_FL_HCIREV | + IC_MATCH_FL_HCIVER | IC_MATCH_FL_HCIBUS, + .lmp_subver = RTL_ROM_LMP_8852A, + .hci_rev = 0xa, + .hci_ver = 0xb, + .hci_bus = HCI_USB, + .config_needed = false, + .has_rom_version = true, + .fw_name = "rtl_bt/rtl8852au_fw.bin", + .cfg_name = "rtl_bt/rtl8852au_config" }, }; static const struct id_table *btrtl_match_ic(u16 lmp_subver, u16 hci_rev, @@ -275,6 +303,7 @@ { RTL_ROM_LMP_8821A, 10 }, /* 8821C */ { RTL_ROM_LMP_8822B, 13 }, /* 8822C */ { RTL_ROM_LMP_8761A, 14 }, /* 8761B */ + { RTL_ROM_LMP_8852A, 18 }, /* 8852A */ }; min_size = sizeof(struct rtl_epatch_header) + sizeof(extension_sig) + 3; @@ -323,8 +352,10 @@ /* Find project_id in table */ for (i = 0; i < ARRAY_SIZE(project_id_to_lmp_subver); i++) { - if (project_id == project_id_to_lmp_subver[i].id) + if (project_id == project_id_to_lmp_subver[i].id) { + btrtl_dev->project_id = project_id; break; + } } if (i >= ARRAY_SIZE(project_id_to_lmp_subver)) { @@ -563,6 +594,8 @@ u16 hci_rev, lmp_subver; u8 hci_ver; int ret; + u16 opcode; + u8 cmd[2]; btrtl_dev = kzalloc(sizeof(*btrtl_dev), GFP_KERNEL); if (!btrtl_dev) { @@ -584,6 +617,49 @@ hci_ver = resp->hci_ver; hci_rev = le16_to_cpu(resp->hci_rev); lmp_subver = le16_to_cpu(resp->lmp_subver); + + if (resp->hci_ver == 0x8 && le16_to_cpu(resp->hci_rev) == 0x826c && + resp->lmp_ver == 0x8 && le16_to_cpu(resp->lmp_subver) == 0xa99e) + btrtl_dev->drop_fw = true; + + if (btrtl_dev->drop_fw) { + opcode = hci_opcode_pack(0x3f, 0x66); + cmd[0] = opcode & 0xff; + cmd[1] = opcode >> 8; + + skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL); + if (!skb) + goto out_free; + + skb_put_data(skb, cmd, sizeof(cmd)); + hci_skb_pkt_type(skb) = HCI_COMMAND_PKT; + + hdev->send(hdev, skb); + + /* Ensure the above vendor command is sent to controller and + * process has done. + */ + msleep(200); + + /* Read the local version again. Expect to have the vanilla + * version as cold boot. + */ + skb = btrtl_read_local_version(hdev); + if (IS_ERR(skb)) { + ret = PTR_ERR(skb); + goto err_free; + } + + resp = (struct hci_rp_read_local_version *)skb->data; + rtl_dev_info(hdev, "examining hci_ver=%02x hci_rev=%04x lmp_ver=%02x lmp_subver=%04x", + resp->hci_ver, resp->hci_rev, + resp->lmp_ver, resp->lmp_subver); + + hci_ver = resp->hci_ver; + hci_rev = le16_to_cpu(resp->hci_rev); + lmp_subver = le16_to_cpu(resp->lmp_subver); + } +out_free: kfree_skb(skb); btrtl_dev->ic_info = btrtl_match_ic(lmp_subver, hci_rev, hci_ver, @@ -660,6 +736,7 @@ case RTL_ROM_LMP_8821A: case RTL_ROM_LMP_8761A: case RTL_ROM_LMP_8822B: + case RTL_ROM_LMP_8852A: return btrtl_setup_rtl8723b(hdev, btrtl_dev); default: rtl_dev_info(hdev, "assuming no firmware upload needed"); @@ -679,13 +756,28 @@ ret = btrtl_download_firmware(hdev, btrtl_dev); - btrtl_free(btrtl_dev); - /* Enable controller to do both LE scan and BR/EDR inquiry * simultaneously. */ set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); + /* Enable central-peripheral role (able to create new connections with + * an existing connection in slave role). + */ + /* Enable WBS supported for the specific Realtek devices. */ + switch (btrtl_dev->project_id) { + case CHIP_ID_8822C: + case CHIP_ID_8852A: + set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks); + set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks); + break; + default: + rtl_dev_dbg(hdev, "Central-peripheral role not enabled."); + rtl_dev_dbg(hdev, "WBS supported not enabled."); + break; + } + + btrtl_free(btrtl_dev); return ret; } EXPORT_SYMBOL_GPL(btrtl_setup_realtek); @@ -835,3 +927,5 @@ MODULE_FIRMWARE("rtl_bt/rtl8821a_config.bin"); MODULE_FIRMWARE("rtl_bt/rtl8822b_fw.bin"); MODULE_FIRMWARE("rtl_bt/rtl8822b_config.bin"); +MODULE_FIRMWARE("rtl_bt/rtl8852au_fw.bin"); +MODULE_FIRMWARE("rtl_bt/rtl8852au_config.bin"); --- linux-5.8.0.orig/drivers/bluetooth/btusb.c +++ linux-5.8.0/drivers/bluetooth/btusb.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -359,6 +360,10 @@ { USB_VENDOR_AND_INTERFACE_INFO(0x8087, 0xe0, 0x01, 0x01), .driver_info = BTUSB_IGNORE }, + /* Realtek 8852AE Bluetooth devices */ + { USB_DEVICE(0x0bda, 0xc852), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH }, + /* Realtek Bluetooth devices */ { USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01), .driver_info = BTUSB_REALTEK }, @@ -1718,8 +1723,11 @@ static int btusb_setup_csr(struct hci_dev *hdev) { + struct btusb_data *data = hci_get_drvdata(hdev); + u16 bcdDevice = le16_to_cpu(data->udev->descriptor.bcdDevice); struct hci_rp_read_local_version *rp; struct sk_buff *skb; + bool is_fake = false; BT_DBG("%s", hdev->name); @@ -1739,18 +1747,75 @@ rp = (struct hci_rp_read_local_version *)skb->data; - /* Detect controllers which aren't real CSR ones. */ + /* Detect a wide host of Chinese controllers that aren't CSR. + * + * Known fake bcdDevices: 0x0100, 0x0134, 0x1915, 0x2520, 0x7558, 0x8891 + * + * The main thing they have in common is that these are really popular low-cost + * options that support newer Bluetooth versions but rely on heavy VID/PID + * squatting of this poor old Bluetooth 1.1 device. Even sold as such. + * + * We detect actual CSR devices by checking that the HCI manufacturer code + * is Cambridge Silicon Radio (10) and ensuring that LMP sub-version and + * HCI rev values always match. As they both store the firmware number. + */ if (le16_to_cpu(rp->manufacturer) != 10 || - le16_to_cpu(rp->lmp_subver) == 0x0c5c) { + le16_to_cpu(rp->hci_rev) != le16_to_cpu(rp->lmp_subver)) + is_fake = true; + + /* Known legit CSR firmware build numbers and their supported BT versions: + * - 1.1 (0x1) -> 0x0073, 0x020d, 0x033c, 0x034e + * - 1.2 (0x2) -> 0x04d9, 0x0529 + * - 2.0 (0x3) -> 0x07a6, 0x07ad, 0x0c5c + * - 2.1 (0x4) -> 0x149c, 0x1735, 0x1899 (0x1899 is a BlueCore4-External) + * - 4.0 (0x6) -> 0x1d86, 0x2031, 0x22bb + * + * e.g. Real CSR dongles with LMP subversion 0x73 are old enough that + * support BT 1.1 only; so it's a dead giveaway when some + * third-party BT 4.0 dongle reuses it. + */ + else if (le16_to_cpu(rp->lmp_subver) <= 0x034e && + le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_1_1) + is_fake = true; + + else if (le16_to_cpu(rp->lmp_subver) <= 0x0529 && + le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_1_2) + is_fake = true; + + else if (le16_to_cpu(rp->lmp_subver) <= 0x0c5c && + le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_2_0) + is_fake = true; + + else if (le16_to_cpu(rp->lmp_subver) <= 0x1899 && + le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_2_1) + is_fake = true; + + else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb && + le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0) + is_fake = true; + + /* Other clones which beat all the above checks */ + else if (bcdDevice == 0x0134 && + le16_to_cpu(rp->lmp_subver) == 0x0c5c && + le16_to_cpu(rp->hci_ver) == BLUETOOTH_VER_2_0) + is_fake = true; + + if (is_fake) { + bt_dev_warn(hdev, "CSR: Unbranded CSR clone detected; adding workarounds..."); + + /* Generally these clones have big discrepancies between + * advertised features and what's actually supported. + * Probably will need to be expanded in the future; + * without these the controller will lock up. + */ + set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks); + set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks); + /* Clear the reset quirk since this is not an actual * early Bluetooth 1.1 device from CSR. */ clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); - - /* These fake CSR controllers have all a broken - * stored link key handling and so just disable it. - */ - set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks); + clear_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); } kfree_skb(skb); @@ -2701,7 +2766,7 @@ skb = bt_skb_alloc(HCI_WMT_MAX_EVENT_SIZE, GFP_ATOMIC); if (!skb) { hdev->stat.err_rx++; - goto err_out; + return; } hci_skb_pkt_type(skb) = HCI_EVENT_PKT; @@ -2719,13 +2784,18 @@ */ if (test_bit(BTUSB_TX_WAIT_VND_EVT, &data->flags)) { data->evt_skb = skb_clone(skb, GFP_ATOMIC); - if (!data->evt_skb) - goto err_out; + if (!data->evt_skb) { + kfree_skb(skb); + return; + } } err = hci_recv_frame(hdev, skb); - if (err < 0) - goto err_free_skb; + if (err < 0) { + kfree_skb(data->evt_skb); + data->evt_skb = NULL; + return; + } if (test_and_clear_bit(BTUSB_TX_WAIT_VND_EVT, &data->flags)) { @@ -2734,11 +2804,6 @@ wake_up_bit(&data->flags, BTUSB_TX_WAIT_VND_EVT); } -err_out: - return; -err_free_skb: - kfree_skb(data->evt_skb); - data->evt_skb = NULL; return; } else if (urb->status == -ENOENT) { /* Avoid suspend failed when usb_kill_urb */ @@ -2797,6 +2862,7 @@ buf = kmalloc(size, GFP_KERNEL); if (!buf) { kfree(dr); + usb_free_urb(urb); return -ENOMEM; } @@ -2925,7 +2991,7 @@ const u8 *fw_ptr; size_t fw_size; int err, dlen; - u8 flag; + u8 flag, param; err = request_firmware(&fw, fwname, &hdev->dev); if (err < 0) { @@ -2933,6 +2999,20 @@ return err; } + /* Power on data RAM the firmware relies on. */ + param = 1; + wmt_params.op = BTMTK_WMT_FUNC_CTRL; + wmt_params.flag = 3; + wmt_params.dlen = sizeof(param); + wmt_params.data = ¶m; + wmt_params.status = NULL; + + err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params); + if (err < 0) { + bt_dev_err(hdev, "Failed to power on data RAM (%d)", err); + goto err_release_fw; + } + fw_ptr = fw->data; fw_size = fw->size; @@ -3253,6 +3333,35 @@ return 0; } +#define BTUSB_EDGE_LED_COMMAND 0xfc77 + +static void btusb_edge_set_led(struct hci_dev *hdev, bool state) +{ + struct sk_buff *skb; + u8 config_led[] = { 0x09, 0x00, 0x01, 0x01 }; + + if (state) + config_led[1] = 0x01; + + skb = __hci_cmd_sync(hdev, BTUSB_EDGE_LED_COMMAND, sizeof(config_led), config_led, HCI_INIT_TIMEOUT); + if (IS_ERR(skb)) + BT_ERR("%s fail to set LED (%ld)", hdev->name, PTR_ERR(skb)); + else + kfree_skb(skb); +} + +static int btusb_edge_post_init(struct hci_dev *hdev) +{ + btusb_edge_set_led(hdev, true); + return 0; +} + +static int btusb_edge_shutdown(struct hci_dev *hdev) +{ + btusb_edge_set_led(hdev, false); + return 0; +} + static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev, const bdaddr_t *bdaddr) { @@ -3520,6 +3629,13 @@ info = &qca_devices_table[i]; } if (!info) { + /* If the rom_version is not matched in the qca_devices_table + * and the high ROM version is not zero, we assume this chip no + * need to load the rampatch and nvm. + */ + if (ver_rom & ~0xffffU) + return 0; + bt_dev_err(hdev, "don't support firmware rome 0x%x", ver_rom); return -ENODEV; } @@ -3910,8 +4026,18 @@ set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks); } - if (id->driver_info & BTUSB_MARVELL) + if (id->driver_info & BTUSB_MARVELL) { + struct pci_dev *pdev; hdev->set_bdaddr = btusb_set_bdaddr_marvell; + pdev = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0720, NULL); + if (!pdev) + pdev = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0733, NULL); + if (pdev) { + pci_dev_put(pdev); + hdev->post_init = btusb_edge_post_init; + hdev->shutdown = btusb_edge_shutdown; + } + } if (IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK) && (id->driver_info & BTUSB_MEDIATEK)) { @@ -4001,11 +4127,13 @@ if (bcdDevice < 0x117) set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); + /* This must be set first in case we disable it for fakes */ + set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); + /* Fake CSR devices with broken commands */ - if (bcdDevice <= 0x100 || bcdDevice == 0x134) + if (le16_to_cpu(udev->descriptor.idVendor) == 0x0a12 && + le16_to_cpu(udev->descriptor.idProduct) == 0x0001) hdev->setup = btusb_setup_csr; - - set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); } if (id->driver_info & BTUSB_SNIFFER) { --- linux-5.8.0.orig/drivers/bluetooth/hci_h5.c +++ linux-5.8.0/drivers/bluetooth/hci_h5.c @@ -245,6 +245,9 @@ skb_queue_purge(&h5->rel); skb_queue_purge(&h5->unrel); + kfree_skb(h5->rx_skb); + h5->rx_skb = NULL; + if (h5->vnd && h5->vnd->close) h5->vnd->close(h5); @@ -793,7 +796,7 @@ if (!h5) return -ENOMEM; - set_bit(HCI_UART_RESET_ON_INIT, &h5->serdev_hu.flags); + set_bit(HCI_UART_RESET_ON_INIT, &h5->serdev_hu.hdev_flags); h5->hu = &h5->serdev_hu; h5->serdev_hu.serdev = serdev; @@ -905,6 +908,11 @@ /* Give the device some time before the hci-core sends it a reset */ usleep_range(10000, 20000); + /* Enable controller to do both LE scan and BR/EDR inquiry + * simultaneously. + */ + set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &h5->hu->hdev->quirks); + out_free: btrtl_free(btrtl_dev); --- linux-5.8.0.orig/drivers/bluetooth/hci_ldisc.c +++ linux-5.8.0/drivers/bluetooth/hci_ldisc.c @@ -127,10 +127,9 @@ if (!test_bit(HCI_UART_PROTO_READY, &hu->flags)) goto no_schedule; - if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) { - set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); + set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); + if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) goto no_schedule; - } BT_DBG(""); @@ -174,10 +173,10 @@ kfree_skb(skb); } + clear_bit(HCI_UART_SENDING, &hu->tx_state); if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)) goto restart; - clear_bit(HCI_UART_SENDING, &hu->tx_state); wake_up_bit(&hu->tx_state, HCI_UART_SENDING); } @@ -538,6 +537,7 @@ clear_bit(HCI_UART_PROTO_READY, &hu->flags); percpu_up_write(&hu->proto_lock); + cancel_work_sync(&hu->init_ready); cancel_work_sync(&hu->write_work); if (hdev) { --- linux-5.8.0.orig/drivers/bluetooth/hci_qca.c +++ linux-5.8.0/drivers/bluetooth/hci_qca.c @@ -46,7 +46,7 @@ #define HCI_MAX_IBS_SIZE 10 #define IBS_WAKE_RETRANS_TIMEOUT_MS 100 -#define IBS_BTSOC_TX_IDLE_TIMEOUT_MS 40 +#define IBS_BTSOC_TX_IDLE_TIMEOUT_MS 200 #define IBS_HOST_TX_IDLE_TIMEOUT_MS 2000 #define CMD_TRANS_TIMEOUT_MS 100 #define MEMDUMP_TIMEOUT_MS 8000 @@ -72,11 +72,13 @@ QCA_DROP_VENDOR_EVENT, QCA_SUSPENDING, QCA_MEMDUMP_COLLECTION, - QCA_HW_ERROR_EVENT + QCA_HW_ERROR_EVENT, + QCA_SSR_TRIGGERED }; enum qca_capabilities { QCA_CAP_WIDEBAND_SPEECH = BIT(0), + QCA_CAP_VALID_LE_STATES = BIT(1), }; /* HCI_IBS transmit side sleep protocol states */ @@ -862,6 +864,13 @@ BT_DBG("hu %p qca enq skb %p tx_ibs_state %d", hu, skb, qca->tx_ibs_state); + if (test_bit(QCA_SSR_TRIGGERED, &qca->flags)) { + /* As SSR is in progress, ignore the packets */ + bt_dev_dbg(hu->hdev, "SSR is in progress"); + kfree_skb(skb); + return 0; + } + /* Prepend skb with frame type */ memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1); @@ -983,8 +992,11 @@ while ((skb = skb_dequeue(&qca->rx_memdump_q))) { mutex_lock(&qca->hci_memdump_lock); - /* Skip processing the received packets if timeout detected. */ - if (qca->memdump_state == QCA_MEMDUMP_TIMEOUT) { + /* Skip processing the received packets if timeout detected + * or memdump collection completed. + */ + if (qca->memdump_state == QCA_MEMDUMP_TIMEOUT || + qca->memdump_state == QCA_MEMDUMP_COLLECTED) { mutex_unlock(&qca->hci_memdump_lock); return; } @@ -1019,7 +1031,9 @@ dump_size = __le32_to_cpu(dump->dump_size); if (!(dump_size)) { bt_dev_err(hu->hdev, "Rx invalid memdump size"); + kfree(qca_memdump); kfree_skb(skb); + qca->qca_memdump = NULL; mutex_unlock(&qca->hci_memdump_lock); return; } @@ -1128,6 +1142,7 @@ struct hci_uart *hu = hci_get_drvdata(hdev); struct qca_data *qca = hu->priv; + set_bit(QCA_SSR_TRIGGERED, &qca->flags); skb_queue_tail(&qca->rx_memdump_q, skb); queue_work(qca->workqueue, &qca->ctrl_memdump_evt); @@ -1485,9 +1500,8 @@ { struct hci_uart *hu = hci_get_drvdata(hdev); struct qca_data *qca = hu->priv; - struct qca_memdump_data *qca_memdump = qca->qca_memdump; - char *memdump_buf = NULL; + set_bit(QCA_SSR_TRIGGERED, &qca->flags); set_bit(QCA_HW_ERROR_EVENT, &qca->flags); bt_dev_info(hdev, "mem_dump_status: %d", qca->memdump_state); @@ -1509,19 +1523,23 @@ qca_wait_for_dump_collection(hdev); } + mutex_lock(&qca->hci_memdump_lock); if (qca->memdump_state != QCA_MEMDUMP_COLLECTED) { bt_dev_err(hu->hdev, "clearing allocated memory due to memdump timeout"); - mutex_lock(&qca->hci_memdump_lock); - if (qca_memdump) - memdump_buf = qca_memdump->memdump_buf_head; - vfree(memdump_buf); - kfree(qca_memdump); - qca->qca_memdump = NULL; + if (qca->qca_memdump) { + vfree(qca->qca_memdump->memdump_buf_head); + kfree(qca->qca_memdump); + qca->qca_memdump = NULL; + } qca->memdump_state = QCA_MEMDUMP_TIMEOUT; cancel_delayed_work(&qca->ctrl_memdump_timeout); - skb_queue_purge(&qca->rx_memdump_q); - mutex_unlock(&qca->hci_memdump_lock); + } + mutex_unlock(&qca->hci_memdump_lock); + + if (qca->memdump_state == QCA_MEMDUMP_TIMEOUT || + qca->memdump_state == QCA_MEMDUMP_COLLECTED) { cancel_work_sync(&qca->ctrl_memdump_evt); + skb_queue_purge(&qca->rx_memdump_q); } clear_bit(QCA_HW_ERROR_EVENT, &qca->flags); @@ -1532,10 +1550,30 @@ struct hci_uart *hu = hci_get_drvdata(hdev); struct qca_data *qca = hu->priv; - if (qca->memdump_state == QCA_MEMDUMP_IDLE) + set_bit(QCA_SSR_TRIGGERED, &qca->flags); + if (qca->memdump_state == QCA_MEMDUMP_IDLE) { + set_bit(QCA_MEMDUMP_COLLECTION, &qca->flags); qca_send_crashbuffer(hu); - else - bt_dev_info(hdev, "Dump collection is in process"); + qca_wait_for_dump_collection(hdev); + } else if (qca->memdump_state == QCA_MEMDUMP_COLLECTING) { + /* Let us wait here until memory dump collected or + * memory dump timer expired. + */ + bt_dev_info(hdev, "waiting for dump to complete"); + qca_wait_for_dump_collection(hdev); + } + + mutex_lock(&qca->hci_memdump_lock); + if (qca->memdump_state != QCA_MEMDUMP_COLLECTED) { + qca->memdump_state = QCA_MEMDUMP_TIMEOUT; + if (!test_bit(QCA_HW_ERROR_EVENT, &qca->flags)) { + /* Inject hw error event to reset the device + * and driver. + */ + hci_reset_dev(hu->hdev); + } + } + mutex_unlock(&qca->hci_memdump_lock); } static int qca_wcn3990_init(struct hci_uart *hu) @@ -1641,11 +1679,15 @@ bt_dev_info(hdev, "setting up %s", qca_is_wcn399x(soc_type) ? "wcn399x" : "ROME/QCA6390"); + qca->memdump_state = QCA_MEMDUMP_IDLE; + retry: ret = qca_power_on(hdev); if (ret) return ret; + clear_bit(QCA_SSR_TRIGGERED, &qca->flags); + if (qca_is_wcn399x(soc_type)) { set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); @@ -1751,7 +1793,7 @@ { "vddch0", 450000 }, }, .num_vregs = 4, - .capabilities = QCA_CAP_WIDEBAND_SPEECH, + .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES, }; static const struct qca_device_data qca_soc_data_wcn3998 = { @@ -1788,9 +1830,6 @@ qca_flush(hu); spin_unlock_irqrestore(&qca->hci_ibs_lock, flags); - hu->hdev->hw_error = NULL; - hu->hdev->cmd_timeout = NULL; - /* Non-serdev device usually is powered by external power * and don't need additional action in driver for power down */ @@ -1812,6 +1851,9 @@ struct qca_data *qca = hu->priv; enum qca_btsoc_type soc_type = qca_soc_type(hu); + hu->hdev->hw_error = NULL; + hu->hdev->cmd_timeout = NULL; + /* Stop sending shutdown command if soc crashes. */ if (soc_type != QCA_ROME && qca->memdump_state == QCA_MEMDUMP_IDLE) { @@ -1819,7 +1861,6 @@ usleep_range(8000, 10000); } - qca->memdump_state = QCA_MEMDUMP_IDLE; qca_power_shutdown(hu); return 0; } @@ -1962,17 +2003,17 @@ } qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL); - if (!qcadev->susclk) { + if (IS_ERR(qcadev->susclk)) { dev_warn(&serdev->dev, "failed to acquire clk\n"); - } else { - err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ); - if (err) - return err; - - err = clk_prepare_enable(qcadev->susclk); - if (err) - return err; + return PTR_ERR(qcadev->susclk); } + err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ); + if (err) + return err; + + err = clk_prepare_enable(qcadev->susclk); + if (err) + return err; err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto); if (err) { @@ -1990,11 +2031,17 @@ hdev->shutdown = qca_power_off; } - /* Wideband speech support must be set per driver since it can't be - * queried via hci. - */ - if (data && (data->capabilities & QCA_CAP_WIDEBAND_SPEECH)) - set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks); + if (data) { + /* Wideband speech support must be set per driver since it can't + * be queried via hci. Same with the valid le states quirk. + */ + if (data->capabilities & QCA_CAP_WIDEBAND_SPEECH) + set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, + &hdev->quirks); + + if (data->capabilities & QCA_CAP_VALID_LE_STATES) + set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks); + } return 0; } @@ -2083,8 +2130,6 @@ qca->tx_ibs_state = HCI_IBS_TX_ASLEEP; qca->ibs_sent_slps++; - - qca_wq_serial_tx_clock_vote_off(&qca->ws_tx_vote_off); break; case HCI_IBS_TX_ASLEEP: @@ -2112,8 +2157,10 @@ qca->rx_ibs_state == HCI_IBS_RX_ASLEEP, msecs_to_jiffies(IBS_BTSOC_TX_IDLE_TIMEOUT_MS)); - if (ret > 0) + if (ret > 0) { + qca_wq_serial_tx_clock_vote_off(&qca->ws_tx_vote_off); return 0; + } if (ret == 0) ret = -ETIMEDOUT; --- linux-5.8.0.orig/drivers/bluetooth/hci_serdev.c +++ linux-5.8.0/drivers/bluetooth/hci_serdev.c @@ -83,9 +83,9 @@ hci_uart_tx_complete(hu, hci_skb_pkt_type(skb)); kfree_skb(skb); } - } while (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)); - clear_bit(HCI_UART_SENDING, &hu->tx_state); + clear_bit(HCI_UART_SENDING, &hu->tx_state); + } while (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)); } /* ------- Interface to HCI layer ------ */ @@ -355,7 +355,10 @@ struct hci_dev *hdev = hu->hdev; clear_bit(HCI_UART_PROTO_READY, &hu->flags); - hci_unregister_dev(hdev); + + cancel_work_sync(&hu->init_ready); + if (test_bit(HCI_UART_REGISTERED, &hu->flags)) + hci_unregister_dev(hdev); hci_free_dev(hdev); cancel_work_sync(&hu->write_work); --- linux-5.8.0.orig/drivers/bus/fsl-mc/fsl-mc-allocator.c +++ linux-5.8.0/drivers/bus/fsl-mc/fsl-mc-allocator.c @@ -292,8 +292,10 @@ goto error; mc_adev = resource->data; - if (!mc_adev) + if (!mc_adev) { + error = -EINVAL; goto error; + } mc_adev->consumer_link = device_link_add(&mc_dev->dev, &mc_adev->dev, --- linux-5.8.0.orig/drivers/bus/fsl-mc/mc-io.c +++ linux-5.8.0/drivers/bus/fsl-mc/mc-io.c @@ -129,7 +129,12 @@ */ void fsl_destroy_mc_io(struct fsl_mc_io *mc_io) { - struct fsl_mc_device *dpmcp_dev = mc_io->dpmcp_dev; + struct fsl_mc_device *dpmcp_dev; + + if (!mc_io) + return; + + dpmcp_dev = mc_io->dpmcp_dev; if (dpmcp_dev) fsl_mc_io_unset_dpmcp(mc_io); --- linux-5.8.0.orig/drivers/bus/mhi/core/Makefile +++ linux-5.8.0/drivers/bus/mhi/core/Makefile @@ -1,3 +1,3 @@ -obj-$(CONFIG_MHI_BUS) := mhi.o +obj-$(CONFIG_MHI_BUS) += mhi.o mhi-y := init.o main.o pm.o boot.o --- linux-5.8.0.orig/drivers/bus/mhi/core/init.c +++ linux-5.8.0/drivers/bus/mhi/core/init.c @@ -566,7 +566,7 @@ { struct mhi_event *mhi_event; struct mhi_event_config *event_cfg; - struct device *dev = &mhi_cntrl->mhi_dev->dev; + struct device *dev = mhi_cntrl->cntrl_dev; int i, num; num = config->num_events; @@ -651,7 +651,7 @@ struct mhi_controller_config *config) { struct mhi_channel_config *ch_cfg; - struct device *dev = &mhi_cntrl->mhi_dev->dev; + struct device *dev = mhi_cntrl->cntrl_dev; int i; u32 chan; @@ -1214,10 +1214,8 @@ mutex_unlock(&mhi_chan->mutex); } - read_lock_bh(&mhi_cntrl->pm_lock); while (mhi_dev->dev_wake) mhi_device_put(mhi_dev); - read_unlock_bh(&mhi_cntrl->pm_lock); return 0; } --- linux-5.8.0.orig/drivers/bus/mhi/core/pm.c +++ linux-5.8.0/drivers/bus/mhi/core/pm.c @@ -686,7 +686,8 @@ return -EIO; /* Return busy if there are any pending resources */ - if (atomic_read(&mhi_cntrl->dev_wake)) + if (atomic_read(&mhi_cntrl->dev_wake) || + atomic_read(&mhi_cntrl->pending_pkts)) return -EBUSY; /* Take MHI out of M2 state */ @@ -712,7 +713,8 @@ write_lock_irq(&mhi_cntrl->pm_lock); - if (atomic_read(&mhi_cntrl->dev_wake)) { + if (atomic_read(&mhi_cntrl->dev_wake) || + atomic_read(&mhi_cntrl->pending_pkts)) { write_unlock_irq(&mhi_cntrl->pm_lock); return -EBUSY; } --- linux-5.8.0.orig/drivers/bus/mips_cdmm.c +++ linux-5.8.0/drivers/bus/mips_cdmm.c @@ -544,10 +544,8 @@ dev_set_name(&dev->dev, "cdmm%u-%u", cpu, id); ++id; ret = device_register(&dev->dev); - if (ret) { + if (ret) put_device(&dev->dev); - kfree(dev); - } } } --- linux-5.8.0.orig/drivers/bus/omap_l3_noc.c +++ linux-5.8.0/drivers/bus/omap_l3_noc.c @@ -285,7 +285,7 @@ */ l3->debug_irq = platform_get_irq(pdev, 0); ret = devm_request_irq(l3->dev, l3->debug_irq, l3_interrupt_handler, - 0x0, "l3-dbg-irq", l3); + IRQF_NO_THREAD, "l3-dbg-irq", l3); if (ret) { dev_err(l3->dev, "request_irq failed for %d\n", l3->debug_irq); @@ -294,7 +294,7 @@ l3->app_irq = platform_get_irq(pdev, 1); ret = devm_request_irq(l3->dev, l3->app_irq, l3_interrupt_handler, - 0x0, "l3-app-irq", l3); + IRQF_NO_THREAD, "l3-app-irq", l3); if (ret) dev_err(l3->dev, "request_irq failed for %d\n", l3->app_irq); --- linux-5.8.0.orig/drivers/bus/ti-sysc.c +++ linux-5.8.0/drivers/bus/ti-sysc.c @@ -227,6 +227,9 @@ u32 sysc_mask, syss_done, rstval; int syss_offset, error = 0; + if (ddata->cap->regbits->srst_shift < 0) + return 0; + syss_offset = ddata->offsets[SYSC_SYSSTATUS]; sysc_mask = BIT(ddata->cap->regbits->srst_shift); @@ -970,9 +973,15 @@ return error; } } - error = sysc_wait_softreset(ddata); - if (error) - dev_warn(ddata->dev, "OCP softreset timed out\n"); + /* + * Some modules like i2c and hdq1w have unusable reset status unless + * the module reset quirk is enabled. Skip status check on enable. + */ + if (!(ddata->cfg.quirks & SYSC_MODULE_QUIRK_ENA_RESETDONE)) { + error = sysc_wait_softreset(ddata); + if (error) + dev_warn(ddata->dev, "OCP softreset timed out\n"); + } if (ddata->cfg.quirks & SYSC_QUIRK_OPT_CLKS_IN_RESET) sysc_disable_opt_clocks(ddata); @@ -1370,20 +1379,22 @@ SYSC_QUIRK_CLKDM_NOAUTO), SYSC_QUIRK("dwc3", 0x488c0000, 0, 0x10, -ENODEV, 0x500a0200, 0xffffffff, SYSC_QUIRK_CLKDM_NOAUTO), + SYSC_QUIRK("gpmc", 0, 0, 0x10, 0x14, 0x00000060, 0xffffffff, + SYSC_QUIRK_GPMC_DEBUG), SYSC_QUIRK("hdmi", 0, 0, 0x10, -ENODEV, 0x50030200, 0xffffffff, SYSC_QUIRK_OPT_CLKS_NEEDED), SYSC_QUIRK("hdq1w", 0, 0, 0x14, 0x18, 0x00000006, 0xffffffff, - SYSC_MODULE_QUIRK_HDQ1W), + SYSC_MODULE_QUIRK_HDQ1W | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("hdq1w", 0, 0, 0x14, 0x18, 0x0000000a, 0xffffffff, - SYSC_MODULE_QUIRK_HDQ1W), + SYSC_MODULE_QUIRK_HDQ1W | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("i2c", 0, 0, 0x20, 0x10, 0x00000036, 0x000000ff, - SYSC_MODULE_QUIRK_I2C), + SYSC_MODULE_QUIRK_I2C | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("i2c", 0, 0, 0x20, 0x10, 0x0000003c, 0x000000ff, - SYSC_MODULE_QUIRK_I2C), + SYSC_MODULE_QUIRK_I2C | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("i2c", 0, 0, 0x20, 0x10, 0x00000040, 0x000000ff, - SYSC_MODULE_QUIRK_I2C), + SYSC_MODULE_QUIRK_I2C | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("i2c", 0, 0, 0x10, 0x90, 0x5040000a, 0xfffff0f0, - SYSC_MODULE_QUIRK_I2C), + SYSC_MODULE_QUIRK_I2C | SYSC_MODULE_QUIRK_ENA_RESETDONE), SYSC_QUIRK("gpu", 0x50000000, 0x14, -ENODEV, -ENODEV, 0x00010201, 0xffffffff, 0), SYSC_QUIRK("gpu", 0x50000000, 0xfe00, 0xfe10, -ENODEV, 0x40000000 , 0xffffffff, SYSC_MODULE_QUIRK_SGX), @@ -1395,6 +1406,10 @@ SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY), SYSC_QUIRK("tptc", 0, 0, -ENODEV, -ENODEV, 0x40007c00, 0xffffffff, SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY), + SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, 0x14, 0x50700100, 0xffffffff, + SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY), + SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -ENODEV, 0x50700101, 0xffffffff, + SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY), SYSC_QUIRK("usb_otg_hs", 0, 0x400, 0x404, 0x408, 0x00000050, 0xffffffff, SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY), SYSC_QUIRK("usb_otg_hs", 0, 0, 0x10, -ENODEV, 0x4ea2080d, 0xffffffff, @@ -1473,8 +1488,6 @@ SYSC_QUIRK("tpcc", 0, 0, -ENODEV, -ENODEV, 0x40014c00, 0xffffffff, 0), SYSC_QUIRK("usbhstll", 0, 0, 0x10, 0x14, 0x00000004, 0xffffffff, 0), SYSC_QUIRK("usbhstll", 0, 0, 0x10, 0x14, 0x00000008, 0xffffffff, 0), - SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, 0x14, 0x50700100, 0xffffffff, 0), - SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -ENODEV, 0x50700101, 0xffffffff, 0), SYSC_QUIRK("venc", 0x58003000, 0, -ENODEV, -ENODEV, 0x00000002, 0xffffffff, 0), SYSC_QUIRK("vfpe", 0, 0, 0x104, -ENODEV, 0x4d001200, 0xffffffff, 0), #endif @@ -1803,6 +1816,14 @@ return; } +#ifdef CONFIG_OMAP_GPMC_DEBUG + if (ddata->cfg.quirks & SYSC_QUIRK_GPMC_DEBUG) { + ddata->cfg.quirks |= SYSC_QUIRK_NO_RESET_ON_INIT; + + return; + } +#endif + if (ddata->cfg.quirks & SYSC_MODULE_QUIRK_I2C) { ddata->pre_reset_quirk = sysc_pre_reset_quirk_i2c; ddata->post_reset_quirk = sysc_post_reset_quirk_i2c; @@ -2878,7 +2899,7 @@ if ((ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT) && (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE)) - return -EBUSY; + return -ENXIO; return 0; } @@ -3023,7 +3044,9 @@ pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - reset_control_assert(ddata->rsts); + + if (!reset_control_status(ddata->rsts)) + reset_control_assert(ddata->rsts); unprepare: sysc_unprepare(ddata); --- linux-5.8.0.orig/drivers/cdrom/cdrom.c +++ linux-5.8.0/drivers/cdrom/cdrom.c @@ -291,7 +291,7 @@ /* default compatibility mode */ static bool autoclose=1; static bool autoeject; -static bool lockdoor = 1; +static bool lockdoor = 0; /* will we ever get to use this... sigh. */ static bool check_media_type; /* automatically restart mrw format */ --- linux-5.8.0.orig/drivers/char/agp/intel-gtt.c +++ linux-5.8.0/drivers/char/agp/intel-gtt.c @@ -304,8 +304,10 @@ if (intel_private.needs_dmar) { dma_addr = pci_map_page(intel_private.pcidev, page, 0, PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); - if (pci_dma_mapping_error(intel_private.pcidev, dma_addr)) + if (pci_dma_mapping_error(intel_private.pcidev, dma_addr)) { + __free_page(page); return -EINVAL; + } intel_private.scratch_page_dma = dma_addr; } else --- linux-5.8.0.orig/drivers/char/hw_random/Kconfig +++ linux-5.8.0/drivers/char/hw_random/Kconfig @@ -491,15 +491,15 @@ config UML_RANDOM depends on UML - tristate "Hardware random number generator" + select HW_RANDOM + tristate "UML Random Number Generator support" help This option enables UML's "hardware" random number generator. It attaches itself to the host's /dev/random, supplying as much entropy as the host has, rather than the small amount the UML gets from its - own drivers. It registers itself as a standard hardware random number - generator, major 10, minor 183, and the canonical device name is - /dev/hwrng. - The way to make use of this is to install the rng-tools package - (check your distro, or download from - http://sourceforge.net/projects/gkernel/). rngd periodically reads - /dev/hwrng and injects the entropy into /dev/random. + own drivers. It registers itself as a rng-core driver thus providing + a device which is usually called /dev/hwrng. This hardware random + number generator does feed into the kernel's random number generator + entropy pool. + + If unsure, say Y. --- linux-5.8.0.orig/drivers/char/hw_random/timeriomem-rng.c +++ linux-5.8.0/drivers/char/hw_random/timeriomem-rng.c @@ -69,7 +69,7 @@ */ if (retval > 0) usleep_range(period_us, - period_us + min(1, period_us / 100)); + period_us + max(1, period_us / 100)); *(u32 *)data = readl(priv->io_base); retval += sizeof(u32); --- linux-5.8.0.orig/drivers/char/ipmi/ipmi_si_intf.c +++ linux-5.8.0/drivers/char/ipmi/ipmi_si_intf.c @@ -1963,7 +1963,7 @@ /* Do this early so it's available for logs. */ if (!new_smi->io.dev) { pr_err("IPMI interface added with no device\n"); - rv = EIO; + rv = -EIO; goto out_err; } --- linux-5.8.0.orig/drivers/char/random.c +++ linux-5.8.0/drivers/char/random.c @@ -1277,7 +1277,6 @@ fast_mix(fast_pool); add_interrupt_bench(cycles); - this_cpu_add(net_rand_state.s1, fast_pool->pool[cycles & 3]); if (unlikely(crng_init == 0)) { if ((fast_pool->count >= 64) && @@ -1973,7 +1972,7 @@ return -EPERM; if (crng_init < 2) return -ENODATA; - crng_reseed(&primary_crng, NULL); + crng_reseed(&primary_crng, &input_pool); crng_global_init_time = jiffies - 1; return 0; default: @@ -2023,10 +2022,10 @@ if (count > INT_MAX) count = INT_MAX; - if (!(flags & GRND_INSECURE) && !crng_ready()) { + if (!(flags & GRND_INSECURE) && (crng_init == 0)) { if (flags & GRND_NONBLOCK) return -EAGAIN; - ret = wait_for_random_bytes(); + ret = wait_event_interruptible(crng_init_wait, crng_init > 0); if (unlikely(ret)) return ret; } --- linux-5.8.0.orig/drivers/char/tpm/eventlog/efi.c +++ linux-5.8.0/drivers/char/tpm/eventlog/efi.c @@ -41,6 +41,11 @@ log_size = log_tbl->size; memunmap(log_tbl); + if (!log_size) { + pr_warn("UEFI TPM log area empty\n"); + return -EIO; + } + log_tbl = memremap(efi.tpm_log, sizeof(*log_tbl) + log_size, MEMREMAP_WB); if (!log_tbl) { --- linux-5.8.0.orig/drivers/char/tpm/tpm-chip.c +++ linux-5.8.0/drivers/char/tpm/tpm-chip.c @@ -386,13 +386,8 @@ chip->cdev.owner = THIS_MODULE; chip->cdevs.owner = THIS_MODULE; - chip->work_space.context_buf = kzalloc(PAGE_SIZE, GFP_KERNEL); - if (!chip->work_space.context_buf) { - rc = -ENOMEM; - goto out; - } - chip->work_space.session_buf = kzalloc(PAGE_SIZE, GFP_KERNEL); - if (!chip->work_space.session_buf) { + rc = tpm2_init_space(&chip->work_space, TPM2_SPACE_BUFFER_SIZE); + if (rc) { rc = -ENOMEM; goto out; } --- linux-5.8.0.orig/drivers/char/tpm/tpm.h +++ linux-5.8.0/drivers/char/tpm/tpm.h @@ -59,6 +59,9 @@ #define TPM_TAG_RQU_COMMAND 193 +/* TPM2 specific constants. */ +#define TPM2_SPACE_BUFFER_SIZE 16384 /* 16 kB */ + struct stclear_flags_t { __be16 tag; u8 deactivated; @@ -161,8 +164,6 @@ extern struct idr dev_nums_idr; ssize_t tpm_transmit(struct tpm_chip *chip, u8 *buf, size_t bufsiz); -ssize_t tpm_transmit_cmd(struct tpm_chip *chip, struct tpm_buf *buf, - size_t min_rsp_body_length, const char *desc); int tpm_get_timeouts(struct tpm_chip *); int tpm_auto_startup(struct tpm_chip *chip); @@ -191,8 +192,6 @@ int tpm_chip_start(struct tpm_chip *chip); void tpm_chip_stop(struct tpm_chip *chip); struct tpm_chip *tpm_find_get_ops(struct tpm_chip *chip); -__must_check int tpm_try_get_ops(struct tpm_chip *chip); -void tpm_put_ops(struct tpm_chip *chip); struct tpm_chip *tpm_chip_alloc(struct device *dev, const struct tpm_class_ops *ops); @@ -228,7 +227,7 @@ int tpm2_probe(struct tpm_chip *chip); int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip); int tpm2_find_cc(struct tpm_chip *chip, u32 cc); -int tpm2_init_space(struct tpm_space *space); +int tpm2_init_space(struct tpm_space *space, unsigned int buf_size); void tpm2_del_space(struct tpm_chip *chip, struct tpm_space *space); void tpm2_flush_space(struct tpm_chip *chip); int tpm2_prepare_space(struct tpm_chip *chip, struct tpm_space *space, u8 *cmd, --- linux-5.8.0.orig/drivers/char/tpm/tpm2-space.c +++ linux-5.8.0/drivers/char/tpm/tpm2-space.c @@ -38,18 +38,21 @@ } } -int tpm2_init_space(struct tpm_space *space) +int tpm2_init_space(struct tpm_space *space, unsigned int buf_size) { - space->context_buf = kzalloc(PAGE_SIZE, GFP_KERNEL); + space->context_buf = kzalloc(buf_size, GFP_KERNEL); if (!space->context_buf) return -ENOMEM; - space->session_buf = kzalloc(PAGE_SIZE, GFP_KERNEL); + space->session_buf = kzalloc(buf_size, GFP_KERNEL); if (space->session_buf == NULL) { kfree(space->context_buf); + /* Prevent caller getting a dangling pointer. */ + space->context_buf = NULL; return -ENOMEM; } + space->buf_size = buf_size; return 0; } @@ -311,8 +314,10 @@ sizeof(space->context_tbl)); memcpy(&chip->work_space.session_tbl, &space->session_tbl, sizeof(space->session_tbl)); - memcpy(chip->work_space.context_buf, space->context_buf, PAGE_SIZE); - memcpy(chip->work_space.session_buf, space->session_buf, PAGE_SIZE); + memcpy(chip->work_space.context_buf, space->context_buf, + space->buf_size); + memcpy(chip->work_space.session_buf, space->session_buf, + space->buf_size); rc = tpm2_load_space(chip); if (rc) { @@ -492,7 +497,7 @@ continue; rc = tpm2_save_context(chip, space->context_tbl[i], - space->context_buf, PAGE_SIZE, + space->context_buf, space->buf_size, &offset); if (rc == -ENOENT) { space->context_tbl[i] = 0; @@ -509,9 +514,8 @@ continue; rc = tpm2_save_context(chip, space->session_tbl[i], - space->session_buf, PAGE_SIZE, + space->session_buf, space->buf_size, &offset); - if (rc == -ENOENT) { /* handle error saving session, just forget it */ space->session_tbl[i] = 0; @@ -557,8 +561,10 @@ sizeof(space->context_tbl)); memcpy(&space->session_tbl, &chip->work_space.session_tbl, sizeof(space->session_tbl)); - memcpy(space->context_buf, chip->work_space.context_buf, PAGE_SIZE); - memcpy(space->session_buf, chip->work_space.session_buf, PAGE_SIZE); + memcpy(space->context_buf, chip->work_space.context_buf, + space->buf_size); + memcpy(space->session_buf, chip->work_space.session_buf, + space->buf_size); return 0; out: --- linux-5.8.0.orig/drivers/char/tpm/tpm_tis.c +++ linux-5.8.0/drivers/char/tpm/tpm_tis.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "tpm.h" #include "tpm_tis_core.h" @@ -49,8 +50,8 @@ return container_of(data, struct tpm_tis_tcg_phy, priv); } -static bool interrupts = true; -module_param(interrupts, bool, 0444); +static int interrupts = -1; +module_param(interrupts, int, 0444); MODULE_PARM_DESC(interrupts, "Enable interrupts"); static bool itpm; @@ -63,6 +64,28 @@ MODULE_PARM_DESC(force, "Force device probe rather than using ACPI entry"); #endif +static int tpm_tis_disable_irq(const struct dmi_system_id *d) +{ + if (interrupts == -1) { + pr_notice("tpm_tis: %s detected: disabling interrupts.\n", d->ident); + interrupts = 0; + } + + return 0; +} + +static const struct dmi_system_id tpm_tis_dmi_table[] = { + { + .callback = tpm_tis_disable_irq, + .ident = "ThinkPad T490s", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T490s"), + }, + }, + {} +}; + #if defined(CONFIG_PNP) && defined(CONFIG_ACPI) static int has_hid(struct acpi_device *dev, const char *hid) { @@ -192,6 +215,8 @@ int irq = -1; int rc; + dmi_check_system(tpm_tis_dmi_table); + rc = check_acpi_tpm2(dev); if (rc) return rc; --- linux-5.8.0.orig/drivers/char/tpm/tpm_tis_core.c +++ linux-5.8.0/drivers/char/tpm/tpm_tis_core.c @@ -125,7 +125,8 @@ if (rc < 0) return false; - if ((access & (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID)) == + if ((access & (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID + | TPM_ACCESS_REQUEST_USE)) == (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID)) { priv->locality = l; return true; @@ -134,58 +135,13 @@ return false; } -static bool locality_inactive(struct tpm_chip *chip, int l) -{ - struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev); - int rc; - u8 access; - - rc = tpm_tis_read8(priv, TPM_ACCESS(l), &access); - if (rc < 0) - return false; - - if ((access & (TPM_ACCESS_VALID | TPM_ACCESS_ACTIVE_LOCALITY)) - == TPM_ACCESS_VALID) - return true; - - return false; -} - static int release_locality(struct tpm_chip *chip, int l) { struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev); - unsigned long stop, timeout; - long rc; tpm_tis_write8(priv, TPM_ACCESS(l), TPM_ACCESS_ACTIVE_LOCALITY); - stop = jiffies + chip->timeout_a; - - if (chip->flags & TPM_CHIP_FLAG_IRQ) { -again: - timeout = stop - jiffies; - if ((long)timeout <= 0) - return -1; - - rc = wait_event_interruptible_timeout(priv->int_queue, - (locality_inactive(chip, l)), - timeout); - - if (rc > 0) - return 0; - - if (rc == -ERESTARTSYS && freezing(current)) { - clear_thread_flag(TIF_SIGPENDING); - goto again; - } - } else { - do { - if (locality_inactive(chip, l)) - return 0; - tpm_msleep(TPM_TIMEOUT); - } while (time_before(jiffies, stop)); - } - return -1; + return 0; } static int request_locality(struct tpm_chip *chip, int l) @@ -740,12 +696,22 @@ const char *desc = "attempting to generate an interrupt"; u32 cap2; cap_t cap; + int ret; + /* TPM 2.0 */ if (chip->flags & TPM_CHIP_FLAG_TPM2) return tpm2_get_tpm_pt(chip, 0x100, &cap2, desc); - else - return tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, - 0); + + /* TPM 1.2 */ + ret = request_locality(chip, 0); + if (ret < 0) + return ret; + + ret = tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, 0); + + release_locality(chip, 0); + + return ret; } /* Register the IRQ and issue a command that will cause an interrupt. If an @@ -1052,11 +1018,21 @@ init_waitqueue_head(&priv->read_queue); init_waitqueue_head(&priv->int_queue); if (irq != -1) { - /* Before doing irq testing issue a command to the TPM in polling mode + /* + * Before doing irq testing issue a command to the TPM in polling mode * to make sure it works. May as well use that command to set the * proper timeouts for the driver. */ - if (tpm_get_timeouts(chip)) { + + rc = request_locality(chip, 0); + if (rc < 0) + goto out_err; + + rc = tpm_get_timeouts(chip); + + release_locality(chip, 0); + + if (rc) { dev_err(dev, "Could not get TPM timeouts and durations\n"); rc = -ENODEV; goto out_err; --- linux-5.8.0.orig/drivers/char/tpm/tpmrm-dev.c +++ linux-5.8.0/drivers/char/tpm/tpmrm-dev.c @@ -21,7 +21,7 @@ if (priv == NULL) return -ENOMEM; - rc = tpm2_init_space(&priv->space); + rc = tpm2_init_space(&priv->space, TPM2_SPACE_BUFFER_SIZE); if (rc) { kfree(priv); return -ENOMEM; --- linux-5.8.0.orig/drivers/char/virtio_console.c +++ linux-5.8.0/drivers/char/virtio_console.c @@ -435,12 +435,12 @@ /* * Allocate DMA memory from ancestor. When a virtio * device is created by remoteproc, the DMA memory is - * associated with the grandparent device: - * vdev => rproc => platform-dev. + * associated with the parent device: + * virtioY => remoteprocX#vdevYbuffer. */ - if (!vdev->dev.parent || !vdev->dev.parent->parent) + buf->dev = vdev->dev.parent; + if (!buf->dev) goto free_buf; - buf->dev = vdev->dev.parent->parent; /* Increase device refcnt to avoid freeing it */ get_device(buf->dev); --- linux-5.8.0.orig/drivers/clk/Kconfig +++ linux-5.8.0/drivers/clk/Kconfig @@ -50,7 +50,7 @@ config CLK_HSDK bool "PLL Driver for HSDK platform" depends on OF || COMPILE_TEST - depends on IOMEM + depends on HAS_IOMEM help This driver supports the HSDK core, system, ddr, tunnel and hdmi PLLs control. --- linux-5.8.0.orig/drivers/clk/actions/owl-s500.c +++ linux-5.8.0/drivers/clk/actions/owl-s500.c @@ -183,7 +183,7 @@ static OWL_GATE(hdmi_clk, "hdmi_clk", "hosc", CMU_DEVCLKEN1, 3, 0, 0); /* divider clocks */ -static OWL_DIVIDER(h_clk, "h_clk", "ahbprevdiv_clk", CMU_BUSCLK1, 12, 2, NULL, 0, 0); +static OWL_DIVIDER(h_clk, "h_clk", "ahbprediv_clk", CMU_BUSCLK1, 12, 2, NULL, 0, 0); static OWL_DIVIDER(rmii_ref_clk, "rmii_ref_clk", "ethernet_pll_clk", CMU_ETHERNETPLL, 1, 1, rmii_ref_div_table, 0, 0); /* factor clocks */ --- linux-5.8.0.orig/drivers/clk/at91/clk-main.c +++ linux-5.8.0/drivers/clk/at91/clk-main.c @@ -437,12 +437,17 @@ return -EINVAL; regmap_read(regmap, AT91_CKGR_MOR, &tmp); - tmp &= ~MOR_KEY_MASK; if (index && !(tmp & AT91_PMC_MOSCSEL)) - regmap_write(regmap, AT91_CKGR_MOR, tmp | AT91_PMC_MOSCSEL); + tmp = AT91_PMC_MOSCSEL; else if (!index && (tmp & AT91_PMC_MOSCSEL)) - regmap_write(regmap, AT91_CKGR_MOR, tmp & ~AT91_PMC_MOSCSEL); + tmp = 0; + else + return 0; + + regmap_update_bits(regmap, AT91_CKGR_MOR, + AT91_PMC_MOSCSEL | MOR_KEY_MASK, + tmp | AT91_PMC_KEY); while (!clk_sam9x5_main_ready(regmap)) cpu_relax(); --- linux-5.8.0.orig/drivers/clk/at91/sam9x60.c +++ linux-5.8.0/drivers/clk/at91/sam9x60.c @@ -159,7 +159,6 @@ struct regmap *regmap; struct clk_hw *hw; int i; - bool bypass; i = of_property_match_string(np, "clock-names", "td_slck"); if (i < 0) @@ -194,10 +193,7 @@ if (IS_ERR(hw)) goto err_free; - bypass = of_property_read_bool(np, "atmel,osc-bypass"); - - hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name, - bypass); + hw = at91_clk_register_main_osc(regmap, "main_osc", mainxtal_name, 0); if (IS_ERR(hw)) goto err_free; --- linux-5.8.0.orig/drivers/clk/bcm/clk-bcm2835.c +++ linux-5.8.0/drivers/clk/bcm/clk-bcm2835.c @@ -314,6 +314,7 @@ struct device *dev; void __iomem *regs; spinlock_t regs_lock; /* spinlock for all clocks */ + unsigned int soc; /* * Real names of cprman clock parents looked up through @@ -525,6 +526,20 @@ A2W_PLL_CTRL_PRST_DISABLE; } +static u32 bcm2835_pll_get_prediv_mask(struct bcm2835_cprman *cprman, + const struct bcm2835_pll_data *data) +{ + /* + * On BCM2711 there isn't a pre-divisor available in the PLL feedback + * loop. Bits 13:14 of ANA1 (PLLA,PLLB,PLLC,PLLD) have been re-purposed + * for to for VCO RANGE bits. + */ + if (cprman->soc & SOC_BCM2711) + return 0; + + return data->ana->fb_prediv_mask; +} + static void bcm2835_pll_choose_ndiv_and_fdiv(unsigned long rate, unsigned long parent_rate, u32 *ndiv, u32 *fdiv) @@ -582,7 +597,7 @@ ndiv = (a2wctrl & A2W_PLL_CTRL_NDIV_MASK) >> A2W_PLL_CTRL_NDIV_SHIFT; pdiv = (a2wctrl & A2W_PLL_CTRL_PDIV_MASK) >> A2W_PLL_CTRL_PDIV_SHIFT; using_prediv = cprman_read(cprman, data->ana_reg_base + 4) & - data->ana->fb_prediv_mask; + bcm2835_pll_get_prediv_mask(cprman, data); if (using_prediv) { ndiv *= 2; @@ -665,6 +680,7 @@ struct bcm2835_pll *pll = container_of(hw, struct bcm2835_pll, hw); struct bcm2835_cprman *cprman = pll->cprman; const struct bcm2835_pll_data *data = pll->data; + u32 prediv_mask = bcm2835_pll_get_prediv_mask(cprman, data); bool was_using_prediv, use_fb_prediv, do_ana_setup_first; u32 ndiv, fdiv, a2w_ctl; u32 ana[4]; @@ -682,7 +698,7 @@ for (i = 3; i >= 0; i--) ana[i] = cprman_read(cprman, data->ana_reg_base + i * 4); - was_using_prediv = ana[1] & data->ana->fb_prediv_mask; + was_using_prediv = ana[1] & prediv_mask; ana[0] &= ~data->ana->mask0; ana[0] |= data->ana->set0; @@ -692,10 +708,10 @@ ana[3] |= data->ana->set3; if (was_using_prediv && !use_fb_prediv) { - ana[1] &= ~data->ana->fb_prediv_mask; + ana[1] &= ~prediv_mask; do_ana_setup_first = true; } else if (!was_using_prediv && use_fb_prediv) { - ana[1] |= data->ana->fb_prediv_mask; + ana[1] |= prediv_mask; do_ana_setup_first = false; } else { do_ana_setup_first = true; @@ -1321,8 +1337,10 @@ pll->hw.init = &init; ret = devm_clk_hw_register(cprman->dev, &pll->hw); - if (ret) + if (ret) { + kfree(pll); return NULL; + } return &pll->hw; } @@ -2238,6 +2256,7 @@ platform_set_drvdata(pdev, cprman); cprman->onecell.num = asize; + cprman->soc = pdata->soc; hws = cprman->onecell.hws; for (i = 0; i < asize; i++) { --- linux-5.8.0.orig/drivers/clk/bcm/clk-bcm63xx-gate.c +++ linux-5.8.0/drivers/clk/bcm/clk-bcm63xx-gate.c @@ -155,6 +155,7 @@ for (entry = table; entry->name; entry++) maxbit = max_t(u8, maxbit, entry->bit); + maxbit++; hw = devm_kzalloc(&pdev->dev, struct_size(hw, data.hws, maxbit), GFP_KERNEL); --- linux-5.8.0.orig/drivers/clk/clk-ast2600.c +++ linux-5.8.0/drivers/clk/clk-ast2600.c @@ -17,7 +17,8 @@ #define ASPEED_G6_NUM_CLKS 71 -#define ASPEED_G6_SILICON_REV 0x004 +#define ASPEED_G6_SILICON_REV 0x014 +#define CHIP_REVISION_ID GENMASK(23, 16) #define ASPEED_G6_RESET_CTRL 0x040 #define ASPEED_G6_RESET_CTRL2 0x050 @@ -190,18 +191,34 @@ static struct clk_hw *ast2600_calc_apll(const char *name, u32 val) { unsigned int mult, div; + u32 chip_id = readl(scu_g6_base + ASPEED_G6_SILICON_REV); - if (val & BIT(20)) { - /* Pass through mode */ - mult = div = 1; + if (((chip_id & CHIP_REVISION_ID) >> 16) >= 2) { + if (val & BIT(24)) { + /* Pass through mode */ + mult = div = 1; + } else { + /* F = 25Mhz * [(m + 1) / (n + 1)] / (p + 1) */ + u32 m = val & 0x1fff; + u32 n = (val >> 13) & 0x3f; + u32 p = (val >> 19) & 0xf; + + mult = (m + 1); + div = (n + 1) * (p + 1); + } } else { - /* F = 25Mhz * (2-od) * [(m + 2) / (n + 1)] */ - u32 m = (val >> 5) & 0x3f; - u32 od = (val >> 4) & 0x1; - u32 n = val & 0xf; - - mult = (2 - od) * (m + 2); - div = n + 1; + if (val & BIT(20)) { + /* Pass through mode */ + mult = div = 1; + } else { + /* F = 25Mhz * (2-od) * [(m + 2) / (n + 1)] */ + u32 m = (val >> 5) & 0x3f; + u32 od = (val >> 4) & 0x1; + u32 n = val & 0xf; + + mult = (2 - od) * (m + 2); + div = n + 1; + } } return clk_hw_register_fixed_factor(NULL, name, "clkin", 0, mult, div); --- linux-5.8.0.orig/drivers/clk/clk-divider.c +++ linux-5.8.0/drivers/clk/clk-divider.c @@ -493,8 +493,13 @@ else init.ops = &clk_divider_ops; init.flags = flags; - init.parent_names = (parent_name ? &parent_name: NULL); - init.num_parents = (parent_name ? 1 : 0); + init.parent_names = parent_name ? &parent_name : NULL; + init.parent_hws = parent_hw ? &parent_hw : NULL; + init.parent_data = parent_data; + if (parent_name || parent_hw || parent_data) + init.num_parents = 1; + else + init.num_parents = 0; /* struct clk_divider assignments */ div->reg = reg; --- linux-5.8.0.orig/drivers/clk/clk-fsl-sai.c +++ linux-5.8.0/drivers/clk/clk-fsl-sai.c @@ -68,9 +68,20 @@ if (IS_ERR(hw)) return PTR_ERR(hw); + platform_set_drvdata(pdev, hw); + return devm_of_clk_add_hw_provider(dev, of_clk_hw_simple_get, hw); } +static int fsl_sai_clk_remove(struct platform_device *pdev) +{ + struct clk_hw *hw = platform_get_drvdata(pdev); + + clk_hw_unregister_composite(hw); + + return 0; +} + static const struct of_device_id of_fsl_sai_clk_ids[] = { { .compatible = "fsl,vf610-sai-clock" }, { } @@ -79,6 +90,7 @@ static struct platform_driver fsl_sai_clk_driver = { .probe = fsl_sai_clk_probe, + .remove = fsl_sai_clk_remove, .driver = { .name = "fsl-sai-clk", .of_match_table = of_fsl_sai_clk_ids, --- linux-5.8.0.orig/drivers/clk/clk-s2mps11.c +++ linux-5.8.0/drivers/clk/clk-s2mps11.c @@ -195,6 +195,7 @@ return ret; err_reg: + of_node_put(s2mps11_clks[0].clk_np); while (--i >= 0) clkdev_drop(s2mps11_clks[i].lookup); --- linux-5.8.0.orig/drivers/clk/clk-scmi.c +++ linux-5.8.0/drivers/clk/clk-scmi.c @@ -103,6 +103,8 @@ static int scmi_clk_ops_init(struct device *dev, struct scmi_clk *sclk) { int ret; + unsigned long min_rate, max_rate; + struct clk_init_data init = { .flags = CLK_GET_RATE_NOCACHE, .num_parents = 0, @@ -112,9 +114,23 @@ sclk->hw.init = &init; ret = devm_clk_hw_register(dev, &sclk->hw); - if (!ret) - clk_hw_set_rate_range(&sclk->hw, sclk->info->range.min_rate, - sclk->info->range.max_rate); + if (ret) + return ret; + + if (sclk->info->rate_discrete) { + int num_rates = sclk->info->list.num_rates; + + if (num_rates <= 0) + return -EINVAL; + + min_rate = sclk->info->list.rates[0]; + max_rate = sclk->info->list.rates[num_rates - 1]; + } else { + min_rate = sclk->info->range.min_rate; + max_rate = sclk->info->range.max_rate; + } + + clk_hw_set_rate_range(&sclk->hw, min_rate, max_rate); return ret; } --- linux-5.8.0.orig/drivers/clk/davinci/pll.c +++ linux-5.8.0/drivers/clk/davinci/pll.c @@ -491,7 +491,7 @@ parent_name = postdiv_name; } - pllen = kzalloc(sizeof(*pllout), GFP_KERNEL); + pllen = kzalloc(sizeof(*pllen), GFP_KERNEL); if (!pllen) { ret = -ENOMEM; goto err_unregister_postdiv; --- linux-5.8.0.orig/drivers/clk/imx/clk-imx8mq.c +++ linux-5.8.0/drivers/clk/imx/clk-imx8mq.c @@ -157,10 +157,10 @@ "audio_pll2_out", "sys1_pll_266m", "sys3_pll_out", "sys1_pll_100m", }; static const char * const imx8mq_usdhc1_sels[] = {"osc_25m", "sys1_pll_400m", "sys1_pll_800m", "sys2_pll_500m", - "audio_pll2_out", "sys1_pll_266m", "sys3_pll_out", "sys1_pll_100m", }; + "sys3_pll_out", "sys1_pll_266m", "audio_pll2_out", "sys1_pll_100m", }; static const char * const imx8mq_usdhc2_sels[] = {"osc_25m", "sys1_pll_400m", "sys1_pll_800m", "sys2_pll_500m", - "audio_pll2_out", "sys1_pll_266m", "sys3_pll_out", "sys1_pll_100m", }; + "sys3_pll_out", "sys1_pll_266m", "audio_pll2_out", "sys1_pll_100m", }; static const char * const imx8mq_i2c1_sels[] = {"osc_25m", "sys1_pll_160m", "sys2_pll_50m", "sys3_pll_out", "audio_pll1_out", "video_pll1_out", "audio_pll2_out", "sys1_pll_133m", }; --- linux-5.8.0.orig/drivers/clk/ingenic/cgu.c +++ linux-5.8.0/drivers/clk/ingenic/cgu.c @@ -397,15 +397,21 @@ ingenic_clk_calc_hw_div(const struct ingenic_cgu_clk_info *clk_info, unsigned int div) { - unsigned int i; + unsigned int i, best_i = 0, best = (unsigned int)-1; for (i = 0; i < (1 << clk_info->div.bits) && clk_info->div.div_table[i]; i++) { - if (clk_info->div.div_table[i] >= div) - return i; + if (clk_info->div.div_table[i] >= div && + clk_info->div.div_table[i] < best) { + best = clk_info->div.div_table[i]; + best_i = i; + + if (div == best) + break; + } } - return i - 1; + return best_i; } static unsigned --- linux-5.8.0.orig/drivers/clk/keystone/sci-clk.c +++ linux-5.8.0/drivers/clk/keystone/sci-clk.c @@ -522,7 +522,7 @@ np = of_find_node_with_property(np, *clk_name); if (!np) { clk_name++; - break; + continue; } if (!of_device_is_available(np)) --- linux-5.8.0.orig/drivers/clk/mediatek/clk-mt6779.c +++ linux-5.8.0/drivers/clk/mediatek/clk-mt6779.c @@ -919,6 +919,8 @@ "pwm_sel", 19), GATE_INFRA0(CLK_INFRA_PWM, "infra_pwm", "pwm_sel", 21), + GATE_INFRA0(CLK_INFRA_UART0, "infra_uart0", + "uart_sel", 22), GATE_INFRA0(CLK_INFRA_UART1, "infra_uart1", "uart_sel", 23), GATE_INFRA0(CLK_INFRA_UART2, "infra_uart2", --- linux-5.8.0.orig/drivers/clk/meson/Kconfig +++ linux-5.8.0/drivers/clk/meson/Kconfig @@ -103,6 +103,7 @@ select COMMON_CLK_MESON_AO_CLKC select COMMON_CLK_MESON_EE_CLKC select COMMON_CLK_MESON_CPU_DYNDIV + select COMMON_CLK_MESON_VID_PLL_DIV select MFD_SYSCON help Support for the clock controller on Amlogic S905D2, S905X2 and S905Y2 --- linux-5.8.0.orig/drivers/clk/meson/axg-audio.c +++ linux-5.8.0/drivers/clk/meson/axg-audio.c @@ -1209,12 +1209,7 @@ }; -/* Convenience table to populate regmap in .probe() - * Note that this table is shared between both AXG and G12A, - * with spdifout_b clocks being exclusive to G12A. Since those - * clocks are not declared within the AXG onecell table, we do not - * feel the need to have separate AXG/G12A regmap tables. - */ +/* Convenience table to populate regmap in .probe(). */ static struct clk_regmap *const axg_clk_regmaps[] = { &ddr_arb, &pdm, @@ -1236,6 +1231,130 @@ &spdifout, &resample, &power_detect, + &mst_a_mclk_sel, + &mst_b_mclk_sel, + &mst_c_mclk_sel, + &mst_d_mclk_sel, + &mst_e_mclk_sel, + &mst_f_mclk_sel, + &mst_a_mclk_div, + &mst_b_mclk_div, + &mst_c_mclk_div, + &mst_d_mclk_div, + &mst_e_mclk_div, + &mst_f_mclk_div, + &mst_a_mclk, + &mst_b_mclk, + &mst_c_mclk, + &mst_d_mclk, + &mst_e_mclk, + &mst_f_mclk, + &spdifout_clk_sel, + &spdifout_clk_div, + &spdifout_clk, + &spdifin_clk_sel, + &spdifin_clk_div, + &spdifin_clk, + &pdm_dclk_sel, + &pdm_dclk_div, + &pdm_dclk, + &pdm_sysclk_sel, + &pdm_sysclk_div, + &pdm_sysclk, + &mst_a_sclk_pre_en, + &mst_b_sclk_pre_en, + &mst_c_sclk_pre_en, + &mst_d_sclk_pre_en, + &mst_e_sclk_pre_en, + &mst_f_sclk_pre_en, + &mst_a_sclk_div, + &mst_b_sclk_div, + &mst_c_sclk_div, + &mst_d_sclk_div, + &mst_e_sclk_div, + &mst_f_sclk_div, + &mst_a_sclk_post_en, + &mst_b_sclk_post_en, + &mst_c_sclk_post_en, + &mst_d_sclk_post_en, + &mst_e_sclk_post_en, + &mst_f_sclk_post_en, + &mst_a_sclk, + &mst_b_sclk, + &mst_c_sclk, + &mst_d_sclk, + &mst_e_sclk, + &mst_f_sclk, + &mst_a_lrclk_div, + &mst_b_lrclk_div, + &mst_c_lrclk_div, + &mst_d_lrclk_div, + &mst_e_lrclk_div, + &mst_f_lrclk_div, + &mst_a_lrclk, + &mst_b_lrclk, + &mst_c_lrclk, + &mst_d_lrclk, + &mst_e_lrclk, + &mst_f_lrclk, + &tdmin_a_sclk_sel, + &tdmin_b_sclk_sel, + &tdmin_c_sclk_sel, + &tdmin_lb_sclk_sel, + &tdmout_a_sclk_sel, + &tdmout_b_sclk_sel, + &tdmout_c_sclk_sel, + &tdmin_a_sclk_pre_en, + &tdmin_b_sclk_pre_en, + &tdmin_c_sclk_pre_en, + &tdmin_lb_sclk_pre_en, + &tdmout_a_sclk_pre_en, + &tdmout_b_sclk_pre_en, + &tdmout_c_sclk_pre_en, + &tdmin_a_sclk_post_en, + &tdmin_b_sclk_post_en, + &tdmin_c_sclk_post_en, + &tdmin_lb_sclk_post_en, + &tdmout_a_sclk_post_en, + &tdmout_b_sclk_post_en, + &tdmout_c_sclk_post_en, + &tdmin_a_sclk, + &tdmin_b_sclk, + &tdmin_c_sclk, + &tdmin_lb_sclk, + &tdmout_a_sclk, + &tdmout_b_sclk, + &tdmout_c_sclk, + &tdmin_a_lrclk, + &tdmin_b_lrclk, + &tdmin_c_lrclk, + &tdmin_lb_lrclk, + &tdmout_a_lrclk, + &tdmout_b_lrclk, + &tdmout_c_lrclk, +}; + +static struct clk_regmap *const g12a_clk_regmaps[] = { + &ddr_arb, + &pdm, + &tdmin_a, + &tdmin_b, + &tdmin_c, + &tdmin_lb, + &tdmout_a, + &tdmout_b, + &tdmout_c, + &frddr_a, + &frddr_b, + &frddr_c, + &toddr_a, + &toddr_b, + &toddr_c, + &loopback, + &spdifin, + &spdifout, + &resample, + &power_detect, &spdifout_b, &mst_a_mclk_sel, &mst_b_mclk_sel, @@ -1713,8 +1832,8 @@ }; static const struct audioclk_data g12a_audioclk_data = { - .regmap_clks = axg_clk_regmaps, - .regmap_clk_num = ARRAY_SIZE(axg_clk_regmaps), + .regmap_clks = g12a_clk_regmaps, + .regmap_clk_num = ARRAY_SIZE(g12a_clk_regmaps), .hw_onecell_data = &g12a_audio_hw_onecell_data, .reset_offset = AUDIO_SW_RESET, .reset_num = 26, --- linux-5.8.0.orig/drivers/clk/meson/clk-pll.c +++ linux-5.8.0/drivers/clk/meson/clk-pll.c @@ -365,13 +365,14 @@ { struct clk_regmap *clk = to_clk_regmap(hw); struct meson_clk_pll_data *pll = meson_clk_pll_data(clk); - unsigned int enabled, m, n, frac = 0, ret; + unsigned int enabled, m, n, frac = 0; unsigned long old_rate; + int ret; if (parent_rate == 0 || rate == 0) return -EINVAL; - old_rate = rate; + old_rate = clk_hw_get_rate(hw); ret = meson_clk_get_pll_settings(rate, parent_rate, &m, &n, pll); if (ret) @@ -393,7 +394,8 @@ if (!enabled) return 0; - if (meson_clk_pll_enable(hw)) { + ret = meson_clk_pll_enable(hw); + if (ret) { pr_warn("%s: pll did not lock, trying to restore old rate %lu\n", __func__, old_rate); /* @@ -405,7 +407,7 @@ meson_clk_pll_set_rate(hw, old_rate, parent_rate); } - return 0; + return ret; } /* --- linux-5.8.0.orig/drivers/clk/meson/g12a.c +++ linux-5.8.0/drivers/clk/meson/g12a.c @@ -298,6 +298,17 @@ &g12a_fclk_div2_div.hw }, .num_parents = 1, + /* + * Similar to fclk_div3, it seems that this clock is used by + * the resident firmware and is required by the platform to + * operate correctly. + * Until the following condition are met, we need this clock to + * be marked as critical: + * a) Mark the clock used by a firmware resource, if possible + * b) CCF has a clock hand-off mechanism to make the sure the + * clock stays on until the proper driver comes along + */ + .flags = CLK_IS_CRITICAL, }, }; --- linux-5.8.0.orig/drivers/clk/mmp/clk-audio.c +++ linux-5.8.0/drivers/clk/mmp/clk-audio.c @@ -392,7 +392,8 @@ return 0; } -static int __maybe_unused mmp2_audio_clk_suspend(struct device *dev) +#ifdef CONFIG_PM +static int mmp2_audio_clk_suspend(struct device *dev) { struct mmp2_audio_clk *priv = dev_get_drvdata(dev); @@ -404,7 +405,7 @@ return 0; } -static int __maybe_unused mmp2_audio_clk_resume(struct device *dev) +static int mmp2_audio_clk_resume(struct device *dev) { struct mmp2_audio_clk *priv = dev_get_drvdata(dev); @@ -415,6 +416,7 @@ return 0; } +#endif static const struct dev_pm_ops mmp2_audio_clk_pm_ops = { SET_RUNTIME_PM_OPS(mmp2_audio_clk_suspend, mmp2_audio_clk_resume, NULL) --- linux-5.8.0.orig/drivers/clk/mvebu/armada-37xx-xtal.c +++ linux-5.8.0/drivers/clk/mvebu/armada-37xx-xtal.c @@ -13,8 +13,8 @@ #include #include -#define NB_GPIO1_LATCH 0xC -#define XTAL_MODE BIT(31) +#define NB_GPIO1_LATCH 0x8 +#define XTAL_MODE BIT(9) static int armada_3700_xtal_clock_probe(struct platform_device *pdev) { --- linux-5.8.0.orig/drivers/clk/qcom/clk-alpha-pll.c +++ linux-5.8.0/drivers/clk/qcom/clk-alpha-pll.c @@ -56,7 +56,6 @@ #define PLL_STATUS(p) ((p)->offset + (p)->regs[PLL_OFF_STATUS]) #define PLL_OPMODE(p) ((p)->offset + (p)->regs[PLL_OFF_OPMODE]) #define PLL_FRAC(p) ((p)->offset + (p)->regs[PLL_OFF_FRAC]) -#define PLL_CAL_VAL(p) ((p)->offset + (p)->regs[PLL_OFF_CAL_VAL]) const u8 clk_alpha_pll_regs[][PLL_OFF_MAX_REGS] = { [CLK_ALPHA_PLL_TYPE_DEFAULT] = { @@ -115,7 +114,6 @@ [PLL_OFF_STATUS] = 0x30, [PLL_OFF_OPMODE] = 0x38, [PLL_OFF_ALPHA_VAL] = 0x40, - [PLL_OFF_CAL_VAL] = 0x44, }, [CLK_ALPHA_PLL_TYPE_LUCID] = { [PLL_OFF_L_VAL] = 0x04, --- linux-5.8.0.orig/drivers/clk/qcom/gcc-msm8998.c +++ linux-5.8.0/drivers/clk/qcom/gcc-msm8998.c @@ -135,7 +135,7 @@ static struct clk_alpha_pll gpll0 = { .offset = 0x0, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .vco_table = fabia_vco, .num_vco = ARRAY_SIZE(fabia_vco), .clkr = { @@ -145,58 +145,58 @@ .name = "gpll0", .parent_names = (const char *[]){ "xo" }, .num_parents = 1, - .ops = &clk_alpha_pll_ops, + .ops = &clk_alpha_pll_fixed_fabia_ops, } }, }; static struct clk_alpha_pll_postdiv gpll0_out_even = { .offset = 0x0, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll0_out_even", .parent_names = (const char *[]){ "gpll0" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll0_out_main = { .offset = 0x0, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll0_out_main", .parent_names = (const char *[]){ "gpll0" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll0_out_odd = { .offset = 0x0, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll0_out_odd", .parent_names = (const char *[]){ "gpll0" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll0_out_test = { .offset = 0x0, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll0_out_test", .parent_names = (const char *[]){ "gpll0" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll gpll1 = { .offset = 0x1000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .vco_table = fabia_vco, .num_vco = ARRAY_SIZE(fabia_vco), .clkr = { @@ -206,58 +206,58 @@ .name = "gpll1", .parent_names = (const char *[]){ "xo" }, .num_parents = 1, - .ops = &clk_alpha_pll_ops, + .ops = &clk_alpha_pll_fixed_fabia_ops, } }, }; static struct clk_alpha_pll_postdiv gpll1_out_even = { .offset = 0x1000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll1_out_even", .parent_names = (const char *[]){ "gpll1" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll1_out_main = { .offset = 0x1000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll1_out_main", .parent_names = (const char *[]){ "gpll1" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll1_out_odd = { .offset = 0x1000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll1_out_odd", .parent_names = (const char *[]){ "gpll1" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll1_out_test = { .offset = 0x1000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll1_out_test", .parent_names = (const char *[]){ "gpll1" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll gpll2 = { .offset = 0x2000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .vco_table = fabia_vco, .num_vco = ARRAY_SIZE(fabia_vco), .clkr = { @@ -267,58 +267,58 @@ .name = "gpll2", .parent_names = (const char *[]){ "xo" }, .num_parents = 1, - .ops = &clk_alpha_pll_ops, + .ops = &clk_alpha_pll_fixed_fabia_ops, } }, }; static struct clk_alpha_pll_postdiv gpll2_out_even = { .offset = 0x2000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll2_out_even", .parent_names = (const char *[]){ "gpll2" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll2_out_main = { .offset = 0x2000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll2_out_main", .parent_names = (const char *[]){ "gpll2" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll2_out_odd = { .offset = 0x2000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll2_out_odd", .parent_names = (const char *[]){ "gpll2" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll2_out_test = { .offset = 0x2000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll2_out_test", .parent_names = (const char *[]){ "gpll2" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll gpll3 = { .offset = 0x3000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .vco_table = fabia_vco, .num_vco = ARRAY_SIZE(fabia_vco), .clkr = { @@ -328,58 +328,58 @@ .name = "gpll3", .parent_names = (const char *[]){ "xo" }, .num_parents = 1, - .ops = &clk_alpha_pll_ops, + .ops = &clk_alpha_pll_fixed_fabia_ops, } }, }; static struct clk_alpha_pll_postdiv gpll3_out_even = { .offset = 0x3000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll3_out_even", .parent_names = (const char *[]){ "gpll3" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll3_out_main = { .offset = 0x3000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll3_out_main", .parent_names = (const char *[]){ "gpll3" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll3_out_odd = { .offset = 0x3000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll3_out_odd", .parent_names = (const char *[]){ "gpll3" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll3_out_test = { .offset = 0x3000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll3_out_test", .parent_names = (const char *[]){ "gpll3" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll gpll4 = { .offset = 0x77000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .vco_table = fabia_vco, .num_vco = ARRAY_SIZE(fabia_vco), .clkr = { @@ -389,52 +389,52 @@ .name = "gpll4", .parent_names = (const char *[]){ "xo" }, .num_parents = 1, - .ops = &clk_alpha_pll_ops, + .ops = &clk_alpha_pll_fixed_fabia_ops, } }, }; static struct clk_alpha_pll_postdiv gpll4_out_even = { .offset = 0x77000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll4_out_even", .parent_names = (const char *[]){ "gpll4" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll4_out_main = { .offset = 0x77000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll4_out_main", .parent_names = (const char *[]){ "gpll4" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll4_out_odd = { .offset = 0x77000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll4_out_odd", .parent_names = (const char *[]){ "gpll4" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; static struct clk_alpha_pll_postdiv gpll4_out_test = { .offset = 0x77000, - .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT], + .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_FABIA], .clkr.hw.init = &(struct clk_init_data){ .name = "gpll4_out_test", .parent_names = (const char *[]){ "gpll4" }, .num_parents = 1, - .ops = &clk_alpha_pll_postdiv_ops, + .ops = &clk_alpha_pll_postdiv_fabia_ops, }, }; --- linux-5.8.0.orig/drivers/clk/qcom/gcc-sc7180.c +++ linux-5.8.0/drivers/clk/qcom/gcc-sc7180.c @@ -620,7 +620,7 @@ .name = "gcc_sdcc1_apps_clk_src", .parent_data = gcc_parent_data_1, .num_parents = 5, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_floor_ops, }, }; @@ -666,7 +666,7 @@ .name = "gcc_sdcc2_apps_clk_src", .parent_data = gcc_parent_data_5, .num_parents = 5, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_floor_ops, }, }; @@ -1061,7 +1061,7 @@ .hw = &gpll0.clkr.hw, }, .num_parents = 1, - .ops = &clk_branch2_ops, + .ops = &clk_branch2_aon_ops, }, }, }; --- linux-5.8.0.orig/drivers/clk/qcom/gcc-sdm660.c +++ linux-5.8.0/drivers/clk/qcom/gcc-sdm660.c @@ -666,7 +666,7 @@ .cmd_rcgr = 0x48044, .mnd_width = 0, .hid_width = 5, - .parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div, + .parent_map = gcc_parent_map_xo_gpll0, .freq_tbl = ftbl_hmss_rbcpr_clk_src, .clkr.hw.init = &(struct clk_init_data){ .name = "hmss_rbcpr_clk_src", @@ -1715,6 +1715,9 @@ static struct clk_branch gcc_mss_mnoc_bimc_axi_clk = { .halt_reg = 0x8a004, + .halt_check = BRANCH_HALT, + .hwcg_reg = 0x8a004, + .hwcg_bit = 1, .clkr = { .enable_reg = 0x8a004, .enable_mask = BIT(0), --- linux-5.8.0.orig/drivers/clk/qcom/gcc-sdm845.c +++ linux-5.8.0/drivers/clk/qcom/gcc-sdm845.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* - * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved. */ #include @@ -1344,7 +1344,7 @@ "gpll0", }, .num_parents = 1, - .ops = &clk_branch2_ops, + .ops = &clk_branch2_aon_ops, }, }, }; --- linux-5.8.0.orig/drivers/clk/qcom/gcc-sm8150.c +++ linux-5.8.0/drivers/clk/qcom/gcc-sm8150.c @@ -1617,6 +1617,7 @@ }; static struct clk_branch gcc_gpu_gpll0_clk_src = { + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x52004, .enable_mask = BIT(15), @@ -1632,13 +1633,14 @@ }; static struct clk_branch gcc_gpu_gpll0_div_clk_src = { + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x52004, .enable_mask = BIT(16), .hw.init = &(struct clk_init_data){ .name = "gcc_gpu_gpll0_div_clk_src", .parent_hws = (const struct clk_hw *[]){ - &gcc_gpu_gpll0_clk_src.clkr.hw }, + &gpll0_out_even.clkr.hw }, .num_parents = 1, .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, @@ -1729,6 +1731,7 @@ }; static struct clk_branch gcc_npu_gpll0_clk_src = { + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x52004, .enable_mask = BIT(18), @@ -1744,13 +1747,14 @@ }; static struct clk_branch gcc_npu_gpll0_div_clk_src = { + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x52004, .enable_mask = BIT(19), .hw.init = &(struct clk_init_data){ .name = "gcc_npu_gpll0_div_clk_src", .parent_hws = (const struct clk_hw *[]){ - &gcc_npu_gpll0_clk_src.clkr.hw }, + &gpll0_out_even.clkr.hw }, .num_parents = 1, .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, --- linux-5.8.0.orig/drivers/clk/qcom/gcc-sm8250.c +++ linux-5.8.0/drivers/clk/qcom/gcc-sm8250.c @@ -722,7 +722,7 @@ .name = "gcc_sdcc2_apps_clk_src", .parent_data = gcc_parent_data_4, .num_parents = 5, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_floor_ops, }, }; @@ -745,7 +745,7 @@ .name = "gcc_sdcc4_apps_clk_src", .parent_data = gcc_parent_data_0, .num_parents = 3, - .ops = &clk_rcg2_ops, + .ops = &clk_rcg2_floor_ops, }, }; --- linux-5.8.0.orig/drivers/clk/qcom/gdsc.c +++ linux-5.8.0/drivers/clk/qcom/gdsc.c @@ -181,7 +181,10 @@ static inline void gdsc_force_mem_on(struct gdsc *sc) { int i; - u32 mask = RETAIN_MEM | RETAIN_PERIPH; + u32 mask = RETAIN_MEM; + + if (!(sc->flags & NO_RET_PERIPH)) + mask |= RETAIN_PERIPH; for (i = 0; i < sc->cxc_count; i++) regmap_update_bits(sc->regmap, sc->cxcs[i], mask, mask); @@ -190,7 +193,10 @@ static inline void gdsc_clear_mem_on(struct gdsc *sc) { int i; - u32 mask = RETAIN_MEM | RETAIN_PERIPH; + u32 mask = RETAIN_MEM; + + if (!(sc->flags & NO_RET_PERIPH)) + mask |= RETAIN_PERIPH; for (i = 0; i < sc->cxc_count; i++) regmap_update_bits(sc->regmap, sc->cxcs[i], mask, 0); --- linux-5.8.0.orig/drivers/clk/qcom/gdsc.h +++ linux-5.8.0/drivers/clk/qcom/gdsc.h @@ -42,7 +42,7 @@ #define PWRSTS_ON BIT(2) #define PWRSTS_OFF_ON (PWRSTS_OFF | PWRSTS_ON) #define PWRSTS_RET_ON (PWRSTS_RET | PWRSTS_ON) - const u8 flags; + const u16 flags; #define VOTABLE BIT(0) #define CLAMP_IO BIT(1) #define HW_CTRL BIT(2) @@ -50,6 +50,7 @@ #define AON_RESET BIT(4) #define POLL_CFG_GDSCR BIT(5) #define ALWAYS_ON BIT(6) +#define NO_RET_PERIPH BIT(8) struct reset_controller_dev *rcdev; unsigned int *resets; unsigned int reset_count; --- linux-5.8.0.orig/drivers/clk/qcom/gpucc-msm8998.c +++ linux-5.8.0/drivers/clk/qcom/gpucc-msm8998.c @@ -253,12 +253,16 @@ static struct gdsc gpu_gx_gdsc = { .gdscr = 0x1094, .clamp_io_ctrl = 0x130, + .resets = (unsigned int []){ GPU_GX_BCR }, + .reset_count = 1, + .cxcs = (unsigned int []){ 0x1098 }, + .cxc_count = 1, .pd = { .name = "gpu_gx", }, .parent = &gpu_cx_gdsc.pd, - .pwrsts = PWRSTS_OFF_ON, - .flags = CLAMP_IO | AON_RESET, + .pwrsts = PWRSTS_OFF_ON | PWRSTS_RET, + .flags = CLAMP_IO | SW_RESET | AON_RESET | NO_RET_PERIPH, }; static struct clk_regmap *gpucc_msm8998_clocks[] = { --- linux-5.8.0.orig/drivers/clk/renesas/r9a06g032-clocks.c +++ linux-5.8.0/drivers/clk/renesas/r9a06g032-clocks.c @@ -55,7 +55,7 @@ u16 sel, g1, r1, g2, r2; } dual; }; -} __packed; +}; #define I_GATE(_clk, _rst, _rdy, _midle, _scon, _mirack, _mistat) \ { .gate = _clk, .reset = _rst, \ --- linux-5.8.0.orig/drivers/clk/rockchip/clk-half-divider.c +++ linux-5.8.0/drivers/clk/rockchip/clk-half-divider.c @@ -166,7 +166,7 @@ unsigned long flags, spinlock_t *lock) { - struct clk *clk; + struct clk *clk = ERR_PTR(-ENOMEM); struct clk_mux *mux = NULL; struct clk_gate *gate = NULL; struct clk_divider *div = NULL; --- linux-5.8.0.orig/drivers/clk/rockchip/clk-rk3228.c +++ linux-5.8.0/drivers/clk/rockchip/clk-rk3228.c @@ -137,7 +137,7 @@ PNAME(mux_hdmiphy_p) = { "hdmiphy_phy", "xin24m" }; PNAME(mux_aclk_cpu_src_p) = { "cpll_aclk_cpu", "gpll_aclk_cpu", "hdmiphy_aclk_cpu" }; -PNAME(mux_pll_src_4plls_p) = { "cpll", "gpll", "hdmiphy" "usb480m" }; +PNAME(mux_pll_src_4plls_p) = { "cpll", "gpll", "hdmiphy", "usb480m" }; PNAME(mux_pll_src_3plls_p) = { "cpll", "gpll", "hdmiphy" }; PNAME(mux_pll_src_2plls_p) = { "cpll", "gpll" }; PNAME(mux_sclk_hdmi_cec_p) = { "cpll", "gpll", "xin24m" }; --- linux-5.8.0.orig/drivers/clk/samsung/clk-exynos4.c +++ linux-5.8.0/drivers/clk/samsung/clk-exynos4.c @@ -927,7 +927,7 @@ GATE(CLK_PCIE, "pcie", "aclk133", GATE_IP_FSYS, 14, 0, 0), GATE(CLK_SMMU_PCIE, "smmu_pcie", "aclk133", GATE_IP_FSYS, 18, 0, 0), GATE(CLK_MODEMIF, "modemif", "aclk100", GATE_IP_PERIL, 28, 0, 0), - GATE(CLK_CHIPID, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, 0, 0), + GATE(CLK_CHIPID, "chipid", "aclk100", E4210_GATE_IP_PERIR, 0, CLK_IGNORE_UNUSED, 0), GATE(CLK_SYSREG, "sysreg", "aclk100", E4210_GATE_IP_PERIR, 0, CLK_IGNORE_UNUSED, 0), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0, @@ -969,7 +969,7 @@ 0), GATE(CLK_TSADC, "tsadc", "aclk133", E4X12_GATE_BUS_FSYS1, 16, 0, 0), GATE(CLK_MIPI_HSI, "mipi_hsi", "aclk133", GATE_IP_FSYS, 10, 0, 0), - GATE(CLK_CHIPID, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, 0, 0), + GATE(CLK_CHIPID, "chipid", "aclk100", E4X12_GATE_IP_PERIR, 0, CLK_IGNORE_UNUSED, 0), GATE(CLK_SYSREG, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1, CLK_IGNORE_UNUSED, 0), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0, --- linux-5.8.0.orig/drivers/clk/samsung/clk-exynos5420.c +++ linux-5.8.0/drivers/clk/samsung/clk-exynos5420.c @@ -1655,6 +1655,11 @@ * main G3D clock enablement status. */ clk_prepare_enable(__clk_lookup("mout_sw_aclk_g3d")); + /* + * Keep top BPLL mux enabled permanently to ensure that DRAM operates + * properly. + */ + clk_prepare_enable(__clk_lookup("mout_bpll")); samsung_clk_of_add_provider(np, ctx); } --- linux-5.8.0.orig/drivers/clk/sirf/clk-atlas6.c +++ linux-5.8.0/drivers/clk/sirf/clk-atlas6.c @@ -135,7 +135,7 @@ for (i = pll1; i < maxclk; i++) { atlas6_clks[i] = clk_register(NULL, atlas6_clk_hw_array[i]); - BUG_ON(!atlas6_clks[i]); + BUG_ON(IS_ERR(atlas6_clks[i])); } clk_register_clkdev(atlas6_clks[cpu], NULL, "cpu"); clk_register_clkdev(atlas6_clks[io], NULL, "io"); --- linux-5.8.0.orig/drivers/clk/socfpga/clk-s10.c +++ linux-5.8.0/drivers/clk/socfpga/clk-s10.c @@ -209,7 +209,7 @@ { STRATIX10_EMAC_B_FREE_CLK, "emacb_free_clk", NULL, emacb_free_mux, ARRAY_SIZE(emacb_free_mux), 0, 0, 2, 0xB0, 1}, { STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux, - ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2}, + ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 2, 0xB0, 2}, { STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux, ARRAY_SIZE(gpio_db_free_mux), 0, 0, 0, 0xB0, 3}, { STRATIX10_SDMMC_FREE_CLK, "sdmmc_free_clk", NULL, sdmmc_free_mux, --- linux-5.8.0.orig/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ linux-5.8.0/drivers/clk/sunxi-ng/ccu-sun50i-a64.c @@ -389,6 +389,7 @@ { .val = 1, .div = 2 }, { .val = 2, .div = 4 }, { .val = 3, .div = 6 }, + { /* Sentinel */ }, }; static const char * const ths_parents[] = { "osc24M" }; static struct ccu_div ths_clk = { --- linux-5.8.0.orig/drivers/clk/sunxi-ng/ccu-sun50i-h6.c +++ linux-5.8.0/drivers/clk/sunxi-ng/ccu-sun50i-h6.c @@ -237,7 +237,7 @@ static SUNXI_CCU_MP_WITH_MUX(psi_ahb1_ahb2_clk, "psi-ahb1-ahb2", psi_ahb1_ahb2_parents, 0x510, - 0, 5, /* M */ + 0, 2, /* M */ 8, 2, /* P */ 24, 2, /* mux */ 0); @@ -246,19 +246,19 @@ "psi-ahb1-ahb2", "pll-periph0" }; static SUNXI_CCU_MP_WITH_MUX(ahb3_clk, "ahb3", ahb3_apb1_apb2_parents, 0x51c, - 0, 5, /* M */ + 0, 2, /* M */ 8, 2, /* P */ 24, 2, /* mux */ 0); static SUNXI_CCU_MP_WITH_MUX(apb1_clk, "apb1", ahb3_apb1_apb2_parents, 0x520, - 0, 5, /* M */ + 0, 2, /* M */ 8, 2, /* P */ 24, 2, /* mux */ 0); static SUNXI_CCU_MP_WITH_MUX(apb2_clk, "apb2", ahb3_apb1_apb2_parents, 0x524, - 0, 5, /* M */ + 0, 2, /* M */ 8, 2, /* P */ 24, 2, /* mux */ 0); @@ -682,7 +682,7 @@ .common = { .reg = 0xb10, - .features = CCU_FEATURE_VARIABLE_PREDIV, + .features = CCU_FEATURE_FIXED_PREDIV, .hw.init = CLK_HW_INIT_PARENTS("hdmi-cec", hdmi_cec_parents, &ccu_mux_ops, --- linux-5.8.0.orig/drivers/clk/sunxi-ng/ccu-sun8i-h3.c +++ linux-5.8.0/drivers/clk/sunxi-ng/ccu-sun8i-h3.c @@ -322,6 +322,7 @@ { .val = 1, .div = 2 }, { .val = 2, .div = 4 }, { .val = 3, .div = 6 }, + { /* Sentinel */ }, }; static SUNXI_CCU_DIV_TABLE_WITH_GATE(ths_clk, "ths", "osc24M", 0x074, 0, 2, ths_div_table, BIT(31), 0); --- linux-5.8.0.orig/drivers/clk/sunxi-ng/ccu_mp.c +++ linux-5.8.0/drivers/clk/sunxi-ng/ccu_mp.c @@ -108,7 +108,7 @@ max_m = cmp->m.max ?: 1 << cmp->m.width; max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1); - if (!(clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT)) { + if (!clk_hw_can_set_rate_parent(&cmp->common.hw)) { ccu_mp_find_best(*parent_rate, rate, max_m, max_p, &m, &p); rate = *parent_rate / p / m; } else { --- linux-5.8.0.orig/drivers/clk/tegra/clk-dfll.c +++ linux-5.8.0/drivers/clk/tegra/clk-dfll.c @@ -1856,13 +1856,13 @@ &td->reg_init_uV); if (!ret) { dev_err(td->dev, "couldn't get initialized voltage\n"); - return ret; + return -EINVAL; } ret = read_dt_param(td, "nvidia,pwm-period-nanoseconds", &pwm_period); if (!ret) { dev_err(td->dev, "couldn't get PWM period\n"); - return ret; + return -EINVAL; } td->pwm_rate = (NSEC_PER_SEC / pwm_period) * (MAX_DFLL_VOLTAGES - 1); --- linux-5.8.0.orig/drivers/clk/tegra/clk-id.h +++ linux-5.8.0/drivers/clk/tegra/clk-id.h @@ -227,6 +227,7 @@ tegra_clk_sdmmc4, tegra_clk_sdmmc4_8, tegra_clk_se, + tegra_clk_se_10, tegra_clk_soc_therm, tegra_clk_soc_therm_8, tegra_clk_sor0, --- linux-5.8.0.orig/drivers/clk/tegra/clk-pll.c +++ linux-5.8.0/drivers/clk/tegra/clk-pll.c @@ -1601,9 +1601,6 @@ unsigned long flags = 0; unsigned long input_rate; - if (clk_pll_is_enabled(hw)) - return 0; - input_rate = clk_hw_get_rate(clk_hw_get_parent(hw)); if (_get_table_rate(hw, &sel, pll->params->fixed_rate, input_rate)) --- linux-5.8.0.orig/drivers/clk/tegra/clk-tegra-periph.c +++ linux-5.8.0/drivers/clk/tegra/clk-tegra-periph.c @@ -630,7 +630,7 @@ INT8("host1x", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x_8), INT8("host1x", mux_pllc4_out1_pllc_pllc4_out2_pllp_clkm_plla_pllc4_out0, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x_9), INT8("se", mux_pllp_pllc2_c_c3_pllm_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se), - INT8("se", mux_pllp_pllc2_c_c3_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se), + INT8("se", mux_pllp_pllc2_c_c3_clkm, CLK_SOURCE_SE, 127, TEGRA_PERIPH_ON_APB, tegra_clk_se_10), INT8("2d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_2D, 21, 0, tegra_clk_gr2d_8), INT8("3d", mux_pllm_pllc2_c_c3_pllp_plla, CLK_SOURCE_3D, 24, 0, tegra_clk_gr3d_8), INT8("vic03", mux_pllm_pllc_pllp_plla_pllc2_c3_clkm, CLK_SOURCE_VIC03, 178, 0, tegra_clk_vic03), --- linux-5.8.0.orig/drivers/clk/tegra/clk-tegra210-emc.c +++ linux-5.8.0/drivers/clk/tegra/clk-tegra210-emc.c @@ -12,6 +12,8 @@ #include #include +#include "clk.h" + #define CLK_SOURCE_EMC 0x19c #define CLK_SOURCE_EMC_2X_CLK_SRC GENMASK(31, 29) #define CLK_SOURCE_EMC_MC_EMC_SAME_FREQ BIT(16) --- linux-5.8.0.orig/drivers/clk/tegra/clk-tegra30.c +++ linux-5.8.0/drivers/clk/tegra/clk-tegra30.c @@ -1256,6 +1256,8 @@ { TEGRA30_CLK_I2S3_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 }, { TEGRA30_CLK_I2S4_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 }, { TEGRA30_CLK_VIMCLK_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 }, + { TEGRA30_CLK_HDA, TEGRA30_CLK_PLL_P, 102000000, 0 }, + { TEGRA30_CLK_HDA2CODEC_2X, TEGRA30_CLK_PLL_P, 48000000, 0 }, /* must be the last entry */ { TEGRA30_CLK_CLK_MAX, TEGRA30_CLK_CLK_MAX, 0, 0 }, }; --- linux-5.8.0.orig/drivers/clk/ti/clockdomain.c +++ linux-5.8.0/drivers/clk/ti/clockdomain.c @@ -148,10 +148,12 @@ if (!omap2_clk_is_hw_omap(clk_hw)) { pr_warn("can't setup clkdm for basic clk %s\n", __clk_get_name(clk)); + clk_put(clk); continue; } to_clk_hw_omap(clk_hw)->clkdm_name = clkdm_name; omap2_init_clk_clkdm(clk_hw); + clk_put(clk); } } --- linux-5.8.0.orig/drivers/clk/ti/fapll.c +++ linux-5.8.0/drivers/clk/ti/fapll.c @@ -498,6 +498,7 @@ { struct clk_init_data *init; struct fapll_synth *synth; + struct clk *clk = ERR_PTR(-ENOMEM); init = kzalloc(sizeof(*init), GFP_KERNEL); if (!init) @@ -520,13 +521,19 @@ synth->hw.init = init; synth->clk_pll = pll_clk; - return clk_register(NULL, &synth->hw); + clk = clk_register(NULL, &synth->hw); + if (IS_ERR(clk)) { + pr_err("failed to register clock\n"); + goto free; + } + + return clk; free: kfree(synth); kfree(init); - return ERR_PTR(-ENOMEM); + return clk; } static void __init ti_fapll_setup(struct device_node *node) --- linux-5.8.0.orig/drivers/clk/versatile/clk-impd1.c +++ linux-5.8.0/drivers/clk/versatile/clk-impd1.c @@ -109,8 +109,10 @@ for_each_available_child_of_node(np, child) { ret = integrator_impd1_clk_spawn(dev, np, child); - if (ret) + if (ret) { + of_node_put(child); break; + } } return ret; --- linux-5.8.0.orig/drivers/clocksource/Kconfig +++ linux-5.8.0/drivers/clocksource/Kconfig @@ -79,6 +79,7 @@ bool "Intel XScale IXP4xx timer driver" if COMPILE_TEST depends on HAS_IOMEM select CLKSRC_MMIO + select TIMER_OF if OF help Enables support for the Intel XScale IXP4xx SoC timer. --- linux-5.8.0.orig/drivers/clocksource/arm_arch_timer.c +++ linux-5.8.0/drivers/clocksource/arm_arch_timer.c @@ -396,10 +396,10 @@ ctrl &= ~ARCH_TIMER_CTRL_IT_MASK; if (access == ARCH_TIMER_PHYS_ACCESS) { - cval = evt + arch_counter_get_cntpct(); + cval = evt + arch_counter_get_cntpct_stable(); write_sysreg(cval, cntp_cval_el0); } else { - cval = evt + arch_counter_get_cntvct(); + cval = evt + arch_counter_get_cntvct_stable(); write_sysreg(cval, cntv_cval_el0); } @@ -822,15 +822,24 @@ static void arch_timer_configure_evtstream(void) { - int evt_stream_div, pos; + int evt_stream_div, lsb; + + /* + * As the event stream can at most be generated at half the frequency + * of the counter, use half the frequency when computing the divider. + */ + evt_stream_div = arch_timer_rate / ARCH_TIMER_EVT_STREAM_FREQ / 2; + + /* + * Find the closest power of two to the divisor. If the adjacent bit + * of lsb (last set bit, starts from 0) is set, then we use (lsb + 1). + */ + lsb = fls(evt_stream_div) - 1; + if (lsb > 0 && (evt_stream_div & BIT(lsb - 1))) + lsb++; - /* Find the closest power of two to the divisor */ - evt_stream_div = arch_timer_rate / ARCH_TIMER_EVT_STREAM_FREQ; - pos = fls(evt_stream_div); - if (pos > 1 && !(evt_stream_div & (1 << (pos - 2)))) - pos--; /* enable event stream */ - arch_timer_evtstrm_enable(min(pos, 15)); + arch_timer_evtstrm_enable(max(0, min(lsb, 15))); } static void arch_counter_set_user_access(void) --- linux-5.8.0.orig/drivers/clocksource/h8300_timer8.c +++ linux-5.8.0/drivers/clocksource/h8300_timer8.c @@ -169,7 +169,7 @@ return PTR_ERR(clk); } - ret = ENXIO; + ret = -ENXIO; base = of_iomap(node, 0); if (!base) { pr_err("failed to map registers for clockevent\n"); --- linux-5.8.0.orig/drivers/clocksource/hyperv_timer.c +++ linux-5.8.0/drivers/clocksource/hyperv_timer.c @@ -341,7 +341,7 @@ return read_hv_clock_tsc(); } -static u64 read_hv_sched_clock_tsc(void) +static u64 notrace read_hv_sched_clock_tsc(void) { return (read_hv_clock_tsc() - hv_sched_clock_offset) * (NSEC_PER_SEC / HV_CLOCK_HZ); @@ -404,7 +404,7 @@ return read_hv_clock_msr(); } -static u64 read_hv_sched_clock_msr(void) +static u64 notrace read_hv_sched_clock_msr(void) { return (read_hv_clock_msr() - hv_sched_clock_offset) * (NSEC_PER_SEC / HV_CLOCK_HZ); --- linux-5.8.0.orig/drivers/clocksource/ingenic-timer.c +++ linux-5.8.0/drivers/clocksource/ingenic-timer.c @@ -94,7 +94,7 @@ return IRQ_HANDLED; } -static struct clk * __init ingenic_tcu_get_clock(struct device_node *np, int id) +static struct clk *ingenic_tcu_get_clock(struct device_node *np, int id) { struct of_phandle_args args; --- linux-5.8.0.orig/drivers/clocksource/mxs_timer.c +++ linux-5.8.0/drivers/clocksource/mxs_timer.c @@ -131,10 +131,7 @@ /* Clear pending interrupt */ timrot_irq_acknowledge(); - -#ifdef DEBUG - pr_info("%s: changing mode to %s\n", __func__, state) -#endif /* DEBUG */ + pr_debug("%s: changing mode to %s\n", __func__, state); } static int mxs_shutdown(struct clock_event_device *evt) --- linux-5.8.0.orig/drivers/clocksource/timer-cadence-ttc.c +++ linux-5.8.0/drivers/clocksource/timer-cadence-ttc.c @@ -413,10 +413,8 @@ ttcce->ttc.clk = clk; err = clk_prepare_enable(ttcce->ttc.clk); - if (err) { - kfree(ttcce); - return err; - } + if (err) + goto out_kfree; ttcce->ttc.clk_rate_change_nb.notifier_call = ttc_rate_change_clockevent_cb; @@ -426,7 +424,7 @@ &ttcce->ttc.clk_rate_change_nb); if (err) { pr_warn("Unable to register clock notifier.\n"); - return err; + goto out_kfree; } ttcce->ttc.freq = clk_get_rate(ttcce->ttc.clk); @@ -455,15 +453,17 @@ err = request_irq(irq, ttc_clock_event_interrupt, IRQF_TIMER, ttcce->ce.name, ttcce); - if (err) { - kfree(ttcce); - return err; - } + if (err) + goto out_kfree; clockevents_config_and_register(&ttcce->ce, ttcce->ttc.freq / PRESCALE, 1, 0xfffe); return 0; + +out_kfree: + kfree(ttcce); + return err; } static int __init ttc_timer_probe(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/clocksource/timer-gx6605s.c +++ linux-5.8.0/drivers/clocksource/timer-gx6605s.c @@ -28,6 +28,7 @@ void __iomem *base = timer_of_base(to_timer_of(ce)); writel_relaxed(GX6605S_STATUS_CLR, base + TIMER_STATUS); + writel_relaxed(0, base + TIMER_INI); ce->event_handler(ce); --- linux-5.8.0.orig/drivers/clocksource/timer-orion.c +++ linux-5.8.0/drivers/clocksource/timer-orion.c @@ -143,7 +143,8 @@ irq = irq_of_parse_and_map(np, 1); if (irq <= 0) { pr_err("%pOFn: unable to parse timer1 irq\n", np); - return -EINVAL; + ret = -EINVAL; + goto out_unprep_clk; } rate = clk_get_rate(clk); @@ -160,7 +161,7 @@ clocksource_mmio_readl_down); if (ret) { pr_err("Failed to initialize mmio timer\n"); - return ret; + goto out_unprep_clk; } sched_clock_register(orion_read_sched_clock, 32, rate); @@ -170,7 +171,7 @@ "orion_event", NULL); if (ret) { pr_err("%pOFn: unable to setup irq\n", np); - return ret; + goto out_unprep_clk; } ticks_per_jiffy = (clk_get_rate(clk) + HZ/2) / HZ; @@ -183,5 +184,9 @@ orion_delay_timer_init(rate); return 0; + +out_unprep_clk: + clk_disable_unprepare(clk); + return ret; } TIMER_OF_DECLARE(orion_timer, "marvell,orion-timer", orion_timer_init); --- linux-5.8.0.orig/drivers/clocksource/timer-ti-dm-systimer.c +++ linux-5.8.0/drivers/clocksource/timer-ti-dm-systimer.c @@ -69,12 +69,33 @@ return !(tidr >> 16); } +static void dmtimer_systimer_enable(struct dmtimer_systimer *t) +{ + u32 val; + + if (dmtimer_systimer_revision1(t)) + val = DMTIMER_TYPE1_ENABLE; + else + val = DMTIMER_TYPE2_ENABLE; + + writel_relaxed(val, t->base + t->sysc); +} + +static void dmtimer_systimer_disable(struct dmtimer_systimer *t) +{ + if (!dmtimer_systimer_revision1(t)) + return; + + writel_relaxed(DMTIMER_TYPE1_DISABLE, t->base + t->sysc); +} + static int __init dmtimer_systimer_type1_reset(struct dmtimer_systimer *t) { void __iomem *syss = t->base + OMAP_TIMER_V1_SYS_STAT_OFFSET; int ret; u32 l; + dmtimer_systimer_enable(t); writel_relaxed(BIT(1) | BIT(2), t->base + t->ifctrl); ret = readl_poll_timeout_atomic(syss, l, l & BIT(0), 100, DMTIMER_RESET_WAIT); @@ -88,6 +109,7 @@ void __iomem *sysc = t->base + t->sysc; u32 l; + dmtimer_systimer_enable(t); l = readl_relaxed(sysc); l |= BIT(0); writel_relaxed(l, sysc); @@ -336,26 +358,6 @@ return 0; } -static void dmtimer_systimer_enable(struct dmtimer_systimer *t) -{ - u32 val; - - if (dmtimer_systimer_revision1(t)) - val = DMTIMER_TYPE1_ENABLE; - else - val = DMTIMER_TYPE2_ENABLE; - - writel_relaxed(val, t->base + t->sysc); -} - -static void dmtimer_systimer_disable(struct dmtimer_systimer *t) -{ - if (!dmtimer_systimer_revision1(t)) - return; - - writel_relaxed(DMTIMER_TYPE1_DISABLE, t->base + t->sysc); -} - static int __init dmtimer_systimer_setup(struct device_node *np, struct dmtimer_systimer *t) { @@ -409,8 +411,8 @@ t->wakeup = regbase + _OMAP_TIMER_WAKEUP_EN_OFFSET; t->ifctrl = regbase + _OMAP_TIMER_IF_CTRL_OFFSET; - dmtimer_systimer_enable(t); dmtimer_systimer_reset(t); + dmtimer_systimer_enable(t); pr_debug("dmtimer rev %08x sysc %08x\n", readl_relaxed(t->base), readl_relaxed(t->base + t->sysc)); --- linux-5.8.0.orig/drivers/counter/stm32-timer-cnt.c +++ linux-5.8.0/drivers/counter/stm32-timer-cnt.c @@ -31,7 +31,7 @@ struct counter_device counter; struct regmap *regmap; struct clk *clk; - u32 ceiling; + u32 max_arr; bool enabled; struct stm32_timer_regs bak; }; @@ -44,13 +44,14 @@ * @STM32_COUNT_ENCODER_MODE_3: counts on both TI1FP1 and TI2FP2 edges */ enum stm32_count_function { - STM32_COUNT_SLAVE_MODE_DISABLED = -1, + STM32_COUNT_SLAVE_MODE_DISABLED, STM32_COUNT_ENCODER_MODE_1, STM32_COUNT_ENCODER_MODE_2, STM32_COUNT_ENCODER_MODE_3, }; static enum counter_count_function stm32_count_functions[] = { + [STM32_COUNT_SLAVE_MODE_DISABLED] = COUNTER_COUNT_FUNCTION_INCREASE, [STM32_COUNT_ENCODER_MODE_1] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_A, [STM32_COUNT_ENCODER_MODE_2] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_B, [STM32_COUNT_ENCODER_MODE_3] = COUNTER_COUNT_FUNCTION_QUADRATURE_X4, @@ -73,8 +74,10 @@ const unsigned long val) { struct stm32_timer_cnt *const priv = counter->priv; + u32 ceiling; - if (val > priv->ceiling) + regmap_read(priv->regmap, TIM_ARR, &ceiling); + if (val > ceiling) return -EINVAL; return regmap_write(priv->regmap, TIM_CNT, val); @@ -90,6 +93,9 @@ regmap_read(priv->regmap, TIM_SMCR, &smcr); switch (smcr & TIM_SMCR_SMS) { + case 0: + *function = STM32_COUNT_SLAVE_MODE_DISABLED; + return 0; case 1: *function = STM32_COUNT_ENCODER_MODE_1; return 0; @@ -99,9 +105,9 @@ case 3: *function = STM32_COUNT_ENCODER_MODE_3; return 0; + default: + return -EINVAL; } - - return -EINVAL; } static int stm32_count_function_set(struct counter_device *counter, @@ -112,6 +118,9 @@ u32 cr1, sms; switch (function) { + case STM32_COUNT_SLAVE_MODE_DISABLED: + sms = 0; + break; case STM32_COUNT_ENCODER_MODE_1: sms = 1; break; @@ -122,8 +131,7 @@ sms = 3; break; default: - sms = 0; - break; + return -EINVAL; } /* Store enable status */ @@ -131,10 +139,6 @@ regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN, 0); - /* TIMx_ARR register shouldn't be buffered (ARPE=0) */ - regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0); - regmap_write(priv->regmap, TIM_ARR, priv->ceiling); - regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, sms); /* Make sure that registers are updated */ @@ -185,11 +189,13 @@ if (ret) return ret; + if (ceiling > priv->max_arr) + return -ERANGE; + /* TIMx_ARR register shouldn't be buffered (ARPE=0) */ regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0); regmap_write(priv->regmap, TIM_ARR, ceiling); - priv->ceiling = ceiling; return len; } @@ -274,31 +280,36 @@ size_t function; int err; - /* Default action mode (e.g. STM32_COUNT_SLAVE_MODE_DISABLED) */ - *action = STM32_SYNAPSE_ACTION_NONE; - err = stm32_count_function_get(counter, count, &function); if (err) - return 0; + return err; switch (function) { + case STM32_COUNT_SLAVE_MODE_DISABLED: + /* counts on internal clock when CEN=1 */ + *action = STM32_SYNAPSE_ACTION_NONE; + return 0; case STM32_COUNT_ENCODER_MODE_1: /* counts up/down on TI1FP1 edge depending on TI2FP2 level */ if (synapse->signal->id == count->synapses[0].signal->id) *action = STM32_SYNAPSE_ACTION_BOTH_EDGES; - break; + else + *action = STM32_SYNAPSE_ACTION_NONE; + return 0; case STM32_COUNT_ENCODER_MODE_2: /* counts up/down on TI2FP2 edge depending on TI1FP1 level */ if (synapse->signal->id == count->synapses[1].signal->id) *action = STM32_SYNAPSE_ACTION_BOTH_EDGES; - break; + else + *action = STM32_SYNAPSE_ACTION_NONE; + return 0; case STM32_COUNT_ENCODER_MODE_3: /* counts up/down on both TI1FP1 and TI2FP2 edges */ *action = STM32_SYNAPSE_ACTION_BOTH_EDGES; - break; + return 0; + default: + return -EINVAL; } - - return 0; } static const struct counter_ops stm32_timer_cnt_ops = { @@ -359,7 +370,7 @@ priv->regmap = ddata->regmap; priv->clk = ddata->clk; - priv->ceiling = ddata->max_arr; + priv->max_arr = ddata->max_arr; priv->counter.name = dev_name(dev); priv->counter.parent = dev; --- linux-5.8.0.orig/drivers/counter/ti-eqep.c +++ linux-5.8.0/drivers/counter/ti-eqep.c @@ -235,36 +235,6 @@ return len; } -static ssize_t ti_eqep_position_floor_read(struct counter_device *counter, - struct counter_count *count, - void *ext_priv, char *buf) -{ - struct ti_eqep_cnt *priv = counter->priv; - u32 qposinit; - - regmap_read(priv->regmap32, QPOSINIT, &qposinit); - - return sprintf(buf, "%u\n", qposinit); -} - -static ssize_t ti_eqep_position_floor_write(struct counter_device *counter, - struct counter_count *count, - void *ext_priv, const char *buf, - size_t len) -{ - struct ti_eqep_cnt *priv = counter->priv; - int err; - u32 res; - - err = kstrtouint(buf, 0, &res); - if (err < 0) - return err; - - regmap_write(priv->regmap32, QPOSINIT, res); - - return len; -} - static ssize_t ti_eqep_position_enable_read(struct counter_device *counter, struct counter_count *count, void *ext_priv, char *buf) @@ -302,11 +272,6 @@ .write = ti_eqep_position_ceiling_write, }, { - .name = "floor", - .read = ti_eqep_position_floor_read, - .write = ti_eqep_position_floor_write, - }, - { .name = "enable", .read = ti_eqep_position_enable_read, .write = ti_eqep_position_enable_write, @@ -368,7 +333,7 @@ .reg_bits = 32, .val_bits = 32, .reg_stride = 4, - .max_register = 0x24, + .max_register = QUPRD, }; static const struct regmap_config ti_eqep_regmap16_config = { @@ -376,7 +341,7 @@ .reg_bits = 16, .val_bits = 16, .reg_stride = 2, - .max_register = 0x1e, + .max_register = QCPRDLAT, }; static int ti_eqep_probe(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/cpufreq/Kconfig.arm +++ linux-5.8.0/drivers/cpufreq/Kconfig.arm @@ -41,6 +41,7 @@ config ARM_ARMADA_8K_CPUFREQ tristate "Armada 8K CPUFreq driver" depends on ARCH_MVEBU && CPUFREQ_DT + select ARMADA_AP_CPU_CLK help This enables the CPUFreq driver support for Marvell Armada8k SOCs. --- linux-5.8.0.orig/drivers/cpufreq/acpi-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/acpi-cpufreq.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -628,16 +629,53 @@ } #endif +#ifdef CONFIG_ACPI_CPPC_LIB +static u64 get_max_boost_ratio(unsigned int cpu) +{ + struct cppc_perf_caps perf_caps; + u64 highest_perf, nominal_perf; + int ret; + + if (acpi_pstate_strict) + return 0; + + ret = cppc_get_perf_caps(cpu, &perf_caps); + if (ret) { + pr_debug("CPU%d: Unable to get performance capabilities (%d)\n", + cpu, ret); + return 0; + } + + highest_perf = perf_caps.highest_perf; + nominal_perf = perf_caps.nominal_perf; + + if (!highest_perf || !nominal_perf) { + pr_debug("CPU%d: highest or nominal performance missing\n", cpu); + return 0; + } + + if (highest_perf < nominal_perf) { + pr_debug("CPU%d: nominal performance above highest\n", cpu); + return 0; + } + + return div_u64(highest_perf << SCHED_CAPACITY_SHIFT, nominal_perf); +} +#else +static inline u64 get_max_boost_ratio(unsigned int cpu) { return 0; } +#endif + static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) { - unsigned int i; - unsigned int valid_states = 0; - unsigned int cpu = policy->cpu; + struct cpufreq_frequency_table *freq_table; + struct acpi_processor_performance *perf; struct acpi_cpufreq_data *data; + unsigned int cpu = policy->cpu; + struct cpuinfo_x86 *c = &cpu_data(cpu); + unsigned int valid_states = 0; unsigned int result = 0; - struct cpuinfo_x86 *c = &cpu_data(policy->cpu); - struct acpi_processor_performance *perf; - struct cpufreq_frequency_table *freq_table; + u64 max_boost_ratio; + unsigned int i; #ifdef CONFIG_SMP static int blacklisted; #endif @@ -691,7 +729,8 @@ cpumask_copy(policy->cpus, topology_core_cpumask(cpu)); } - if (check_amd_hwpstate_cpu(cpu) && !acpi_pstate_strict) { + if (check_amd_hwpstate_cpu(cpu) && boot_cpu_data.x86 < 0x19 && + !acpi_pstate_strict) { cpumask_clear(policy->cpus); cpumask_set_cpu(cpu, policy->cpus); cpumask_copy(data->freqdomain_cpus, @@ -784,6 +823,28 @@ valid_states++; } freq_table[valid_states].frequency = CPUFREQ_TABLE_END; + + max_boost_ratio = get_max_boost_ratio(cpu); + if (max_boost_ratio) { + unsigned int freq = freq_table[0].frequency; + + /* + * Because the loop above sorts the freq_table entries in the + * descending order, freq is the maximum frequency in the table. + * Assume that it corresponds to the CPPC nominal frequency and + * use it to set cpuinfo.max_freq. + */ + policy->cpuinfo.max_freq = freq * max_boost_ratio >> SCHED_CAPACITY_SHIFT; + } else { + /* + * If the maximum "boost" frequency is unknown, ask the arch + * scale-invariance code to use the "nominal" performance for + * CPU utilization scaling so as to prevent the schedutil + * governor from selecting inadequate CPU frequencies. + */ + arch_set_max_freq_ratio(true); + } + policy->freq_table = freq_table; perf->state = 0; @@ -857,8 +918,9 @@ { struct acpi_processor_performance *perf = per_cpu_ptr(acpi_perf_data, policy->cpu); + unsigned int freq = policy->freq_table[0].frequency; - if (perf->states[0].core_frequency * 1000 != policy->cpuinfo.max_freq) + if (perf->states[0].core_frequency * 1000 != freq) pr_warn(FW_WARN "P-state 0 is not max freq\n"); } --- linux-5.8.0.orig/drivers/cpufreq/armada-37xx-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/armada-37xx-cpufreq.c @@ -456,6 +456,7 @@ /* Now that everything is setup, enable the DVFS at hardware level */ armada37xx_cpufreq_enable_dvfs(nb_pm_base); + memset(&pdata, 0, sizeof(pdata)); pdata.suspend = armada37xx_cpufreq_suspend; pdata.resume = armada37xx_cpufreq_resume; @@ -483,6 +484,12 @@ /* late_initcall, to guarantee the driver is loaded after A37xx clock driver */ late_initcall(armada37xx_cpufreq_driver_init); +static const struct of_device_id __maybe_unused armada37xx_cpufreq_of_match[] = { + { .compatible = "marvell,armada-3700-nb-pm" }, + { }, +}; +MODULE_DEVICE_TABLE(of, armada37xx_cpufreq_of_match); + MODULE_AUTHOR("Gregory CLEMENT "); MODULE_DESCRIPTION("Armada 37xx cpufreq driver"); MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/cpufreq/armada-8k-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/armada-8k-cpufreq.c @@ -204,6 +204,12 @@ } module_exit(armada_8k_cpufreq_exit); +static const struct of_device_id __maybe_unused armada_8k_cpufreq_of_match[] = { + { .compatible = "marvell,ap806-cpu-clock" }, + { }, +}; +MODULE_DEVICE_TABLE(of, armada_8k_cpufreq_of_match); + MODULE_AUTHOR("Gregory Clement "); MODULE_DESCRIPTION("Armada 8K cpufreq driver"); MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/cpufreq/brcmstb-avs-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/brcmstb-avs-cpufreq.c @@ -568,6 +568,16 @@ return ret; } +static void brcm_avs_prepare_uninit(struct platform_device *pdev) +{ + struct private_data *priv; + + priv = platform_get_drvdata(pdev); + + iounmap(priv->avs_intr_base); + iounmap(priv->base); +} + static int brcm_avs_cpufreq_init(struct cpufreq_policy *policy) { struct cpufreq_frequency_table *freq_table; @@ -703,21 +713,21 @@ brcm_avs_driver.driver_data = pdev; - return cpufreq_register_driver(&brcm_avs_driver); + ret = cpufreq_register_driver(&brcm_avs_driver); + if (ret) + brcm_avs_prepare_uninit(pdev); + + return ret; } static int brcm_avs_cpufreq_remove(struct platform_device *pdev) { - struct private_data *priv; int ret; ret = cpufreq_unregister_driver(&brcm_avs_driver); - if (ret) - return ret; + WARN_ON(ret); - priv = platform_get_drvdata(pdev); - iounmap(priv->base); - iounmap(priv->avs_intr_base); + brcm_avs_prepare_uninit(pdev); return 0; } --- linux-5.8.0.orig/drivers/cpufreq/cpufreq-dt-platdev.c +++ linux-5.8.0/drivers/cpufreq/cpufreq-dt-platdev.c @@ -103,6 +103,8 @@ static const struct of_device_id blacklist[] __initconst = { { .compatible = "allwinner,sun50i-h6", }, + { .compatible = "arm,vexpress", }, + { .compatible = "calxeda,highbank", }, { .compatible = "calxeda,ecx-2000", }, --- linux-5.8.0.orig/drivers/cpufreq/cpufreq.c +++ linux-5.8.0/drivers/cpufreq/cpufreq.c @@ -621,6 +621,24 @@ return NULL; } +static struct cpufreq_governor *get_governor(const char *str_governor) +{ + struct cpufreq_governor *t; + + mutex_lock(&cpufreq_governor_mutex); + t = find_governor(str_governor); + if (!t) + goto unlock; + + if (!try_module_get(t->owner)) + t = NULL; + +unlock: + mutex_unlock(&cpufreq_governor_mutex); + + return t; +} + static unsigned int cpufreq_parse_policy(char *str_governor) { if (!strncasecmp(str_governor, "performance", CPUFREQ_NAME_LEN)) @@ -640,28 +658,14 @@ { struct cpufreq_governor *t; - mutex_lock(&cpufreq_governor_mutex); - - t = find_governor(str_governor); - if (!t) { - int ret; - - mutex_unlock(&cpufreq_governor_mutex); - - ret = request_module("cpufreq_%s", str_governor); - if (ret) - return NULL; - - mutex_lock(&cpufreq_governor_mutex); - - t = find_governor(str_governor); - } - if (t && !try_module_get(t->owner)) - t = NULL; + t = get_governor(str_governor); + if (t) + return t; - mutex_unlock(&cpufreq_governor_mutex); + if (request_module("cpufreq_%s", str_governor)) + return NULL; - return t; + return get_governor(str_governor); } /** @@ -815,12 +819,14 @@ goto out; } + mutex_lock(&cpufreq_governor_mutex); for_each_governor(t) { if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char)) - (CPUFREQ_NAME_LEN + 2))) - goto out; + break; i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name); } + mutex_unlock(&cpufreq_governor_mutex); out: i += sprintf(&buf[i], "\n"); return i; @@ -1058,15 +1064,17 @@ struct cpufreq_governor *def_gov = cpufreq_default_governor(); struct cpufreq_governor *gov = NULL; unsigned int pol = CPUFREQ_POLICY_UNKNOWN; + int ret; if (has_target()) { /* Update policy governor to the one used before hotplug. */ - gov = find_governor(policy->last_governor); + gov = get_governor(policy->last_governor); if (gov) { pr_debug("Restoring governor %s for cpu %d\n", policy->governor->name, policy->cpu); } else if (def_gov) { gov = def_gov; + __module_get(gov->owner); } else { return -ENODATA; } @@ -1089,7 +1097,11 @@ return -ENODATA; } - return cpufreq_set_policy(policy, gov, pol); + ret = cpufreq_set_policy(policy, gov, pol); + if (gov) + module_put(gov->owner); + + return ret; } static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu) @@ -1895,6 +1907,18 @@ } /** + * cpufreq_driver_test_flags - Test cpufreq driver's flags against given ones. + * @flags: Flags to test against the current cpufreq driver's flags. + * + * Assumes that the driver is there, so callers must ensure that this is the + * case. + */ +bool cpufreq_driver_test_flags(u16 flags) +{ + return !!(cpufreq_driver->flags & flags); +} + +/** * cpufreq_get_current_driver - return current driver's name * * Return the name string of the currently loaded cpufreq driver @@ -2157,7 +2181,8 @@ * exactly same freq is called again and so we can save on few function * calls. */ - if (target_freq == policy->cur) + if (target_freq == policy->cur && + !(cpufreq_driver->flags & CPUFREQ_NEED_UPDATE_LIMITS)) return 0; /* Save last value to restore later on errors */ @@ -2211,7 +2236,7 @@ return -EINVAL; /* Platform doesn't want dynamic frequency switching ? */ - if (policy->governor->dynamic_switching && + if (policy->governor->flags & CPUFREQ_GOV_DYNAMIC_SWITCHING && cpufreq_driver->flags & CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING) { struct cpufreq_governor *gov = cpufreq_fallback_governor(); @@ -2237,6 +2262,8 @@ } } + policy->strict_target = !!(policy->governor->flags & CPUFREQ_GOV_STRICT_TARGET); + return 0; } @@ -2651,6 +2678,20 @@ return 0; } +static char cpufreq_driver_name[CPUFREQ_NAME_LEN]; + +static int __init cpufreq_driver_setup(char *str) +{ + strlcpy(cpufreq_driver_name, str, CPUFREQ_NAME_LEN); + return 1; +} + +/* + * Set this name to only allow one specific cpu freq driver, e.g., + * cpufreq_driver=powernow-k8 + */ +__setup("cpufreq_driver=", cpufreq_driver_setup); + /** * cpufreq_register_driver - register a CPU Frequency driver * @driver_data: A struct cpufreq_driver containing the values# @@ -2685,7 +2726,13 @@ (!driver_data->online != !driver_data->offline)) return -EINVAL; - pr_debug("trying to register driver %s\n", driver_data->name); + pr_debug("trying to register driver %s, cpufreq_driver=%s\n", + driver_data->name, cpufreq_driver_name); + + if (cpufreq_driver_name[0]) + if (!driver_data->name || + strcmp(cpufreq_driver_name, driver_data->name)) + return -EINVAL; /* Protect against concurrent CPU online/offline. */ cpus_read_lock(); --- linux-5.8.0.orig/drivers/cpufreq/cpufreq_governor.h +++ linux-5.8.0/drivers/cpufreq/cpufreq_governor.h @@ -156,7 +156,7 @@ #define CPUFREQ_DBS_GOVERNOR_INITIALIZER(_name_) \ { \ .name = _name_, \ - .dynamic_switching = true, \ + .flags = CPUFREQ_GOV_DYNAMIC_SWITCHING, \ .owner = THIS_MODULE, \ .init = cpufreq_dbs_governor_init, \ .exit = cpufreq_dbs_governor_exit, \ --- linux-5.8.0.orig/drivers/cpufreq/cpufreq_performance.c +++ linux-5.8.0/drivers/cpufreq/cpufreq_performance.c @@ -20,6 +20,7 @@ static struct cpufreq_governor cpufreq_gov_performance = { .name = "performance", .owner = THIS_MODULE, + .flags = CPUFREQ_GOV_STRICT_TARGET, .limits = cpufreq_gov_performance_limits, }; --- linux-5.8.0.orig/drivers/cpufreq/cpufreq_powersave.c +++ linux-5.8.0/drivers/cpufreq/cpufreq_powersave.c @@ -21,6 +21,7 @@ .name = "powersave", .limits = cpufreq_gov_powersave_limits, .owner = THIS_MODULE, + .flags = CPUFREQ_GOV_STRICT_TARGET, }; static int __init cpufreq_gov_powersave_init(void) --- linux-5.8.0.orig/drivers/cpufreq/freq_table.c +++ linux-5.8.0/drivers/cpufreq/freq_table.c @@ -52,7 +52,13 @@ } policy->min = policy->cpuinfo.min_freq = min_freq; - policy->max = policy->cpuinfo.max_freq = max_freq; + policy->max = max_freq; + /* + * If the driver has set its own cpuinfo.max_freq above max_freq, leave + * it as is. + */ + if (policy->cpuinfo.max_freq < max_freq) + policy->max = policy->cpuinfo.max_freq = max_freq; if (policy->min == ~0) return -EINVAL; --- linux-5.8.0.orig/drivers/cpufreq/highbank-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/highbank-cpufreq.c @@ -101,6 +101,13 @@ } module_init(hb_cpufreq_driver_init); +static const struct of_device_id __maybe_unused hb_cpufreq_of_match[] = { + { .compatible = "calxeda,highbank" }, + { .compatible = "calxeda,ecx-2000" }, + { }, +}; +MODULE_DEVICE_TABLE(of, hb_cpufreq_of_match); + MODULE_AUTHOR("Mark Langsdorf "); MODULE_DESCRIPTION("Calxeda Highbank cpufreq driver"); MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/cpufreq/intel_pstate.c +++ linux-5.8.0/drivers/cpufreq/intel_pstate.c @@ -649,11 +649,12 @@ mutex_lock(&intel_pstate_limits_lock); if (boot_cpu_has(X86_FEATURE_HWP_EPP)) { - u64 value; - - ret = rdmsrl_on_cpu(cpu_data->cpu, MSR_HWP_REQUEST, &value); - if (ret) - goto return_pref; + /* + * Use the cached HWP Request MSR value, because the register + * itself may be updated by intel_pstate_hwp_boost_up() or + * intel_pstate_hwp_boost_down() at any time. + */ + u64 value = READ_ONCE(cpu_data->hwp_req_cached); value &= ~GENMASK_ULL(31, 24); @@ -661,13 +662,18 @@ epp = epp_values[pref_index - 1]; value |= (u64)epp << 24; + /* + * The only other updater of hwp_req_cached in the active mode, + * intel_pstate_hwp_set(), is called under the same lock as this + * function, so it cannot run in parallel with the update below. + */ + WRITE_ONCE(cpu_data->hwp_req_cached, value); ret = wrmsrl_on_cpu(cpu_data->cpu, MSR_HWP_REQUEST, value); } else { if (epp == -EINVAL) epp = (pref_index - 1) << 2; ret = intel_pstate_set_epb(cpu_data->cpu, epp); } -return_pref: mutex_unlock(&intel_pstate_limits_lock); return ret; @@ -749,14 +755,14 @@ NULL, }; -static void intel_pstate_get_hwp_max(unsigned int cpu, int *phy_max, +static void intel_pstate_get_hwp_max(struct cpudata *cpu, int *phy_max, int *current_max) { u64 cap; - rdmsrl_on_cpu(cpu, MSR_HWP_CAPABILITIES, &cap); - WRITE_ONCE(all_cpu_data[cpu]->hwp_cap_cached, cap); - if (global.no_turbo) + rdmsrl_on_cpu(cpu->cpu, MSR_HWP_CAPABILITIES, &cap); + WRITE_ONCE(cpu->hwp_cap_cached, cap); + if (global.no_turbo || global.turbo_disabled) *current_max = HWP_GUARANTEED_PERF(cap); else *current_max = HWP_HIGHEST_PERF(cap); @@ -1107,7 +1113,7 @@ continue; if (hwp_active) - intel_pstate_get_hwp_max(i, &turbo_max, &max_state); + intel_pstate_get_hwp_max(cpu, &turbo_max, &max_state); else turbo_max = cpu->pstate.turbo_pstate; @@ -1561,20 +1567,22 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu) { cpu->pstate.min_pstate = pstate_funcs.get_min(); - cpu->pstate.max_pstate = pstate_funcs.get_max(); cpu->pstate.max_pstate_physical = pstate_funcs.get_max_physical(); cpu->pstate.turbo_pstate = pstate_funcs.get_turbo(); cpu->pstate.scaling = pstate_funcs.get_scaling(); - cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling; if (hwp_active && !hwp_mode_bdw) { unsigned int phy_max, current_max; - intel_pstate_get_hwp_max(cpu->cpu, &phy_max, ¤t_max); + intel_pstate_get_hwp_max(cpu, &phy_max, ¤t_max); cpu->pstate.turbo_freq = phy_max * cpu->pstate.scaling; + cpu->pstate.turbo_pstate = phy_max; + cpu->pstate.max_pstate = HWP_GUARANTEED_PERF(READ_ONCE(cpu->hwp_cap_cached)); } else { cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * cpu->pstate.scaling; + cpu->pstate.max_pstate = pstate_funcs.get_max(); } + cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling; if (pstate_funcs.get_aperf_mperf_shift) cpu->aperf_mperf_shift = pstate_funcs.get_aperf_mperf_shift(); @@ -2041,9 +2049,9 @@ unsigned int policy_min, unsigned int policy_max) { - int max_freq = intel_pstate_get_max_freq(cpu); int32_t max_policy_perf, min_policy_perf; int max_state, turbo_max; + int max_freq; /* * HWP needs some special consideration, because on BDX the @@ -2051,12 +2059,13 @@ * rather than pure ratios. */ if (hwp_active) { - intel_pstate_get_hwp_max(cpu->cpu, &turbo_max, &max_state); + intel_pstate_get_hwp_max(cpu, &turbo_max, &max_state); } else { max_state = global.no_turbo || global.turbo_disabled ? cpu->pstate.max_pstate : cpu->pstate.turbo_pstate; turbo_max = cpu->pstate.turbo_pstate; } + max_freq = max_state * cpu->pstate.scaling; max_policy_perf = max_state * policy_max / max_freq; if (policy_max == policy_min) { @@ -2159,9 +2168,18 @@ static void intel_pstate_verify_cpu_policy(struct cpudata *cpu, struct cpufreq_policy_data *policy) { + int max_freq; + update_turbo_state(); - cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, - intel_pstate_get_max_freq(cpu)); + if (hwp_active) { + int max_state, turbo_max; + + intel_pstate_get_hwp_max(cpu, &turbo_max, &max_state); + max_freq = max_state * cpu->pstate.scaling; + } else { + max_freq = intel_pstate_get_max_freq(cpu); + } + cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, max_freq); intel_pstate_adjust_policy_max(cpu, policy); } @@ -2402,7 +2420,7 @@ cpu = all_cpu_data[policy->cpu]; if (hwp_active) - intel_pstate_get_hwp_max(policy->cpu, &turbo_max, &max_state); + intel_pstate_get_hwp_max(cpu, &turbo_max, &max_state); else turbo_max = cpu->pstate.turbo_pstate; @@ -2527,9 +2545,15 @@ { int ret; - if (size == 3 && !strncmp(buf, "off", size)) - return intel_pstate_driver ? - intel_pstate_unregister_driver() : -EINVAL; + if (size == 3 && !strncmp(buf, "off", size)) { + if (!intel_pstate_driver) + return -EINVAL; + + if (hwp_active) + return -EBUSY; + + return intel_pstate_unregister_driver(); + } if (size == 6 && !strncmp(buf, "active", size)) { if (intel_pstate_driver) { --- linux-5.8.0.orig/drivers/cpufreq/loongson1-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/loongson1-cpufreq.c @@ -216,6 +216,7 @@ module_platform_driver(ls1x_cpufreq_platdrv); +MODULE_ALIAS("platform:ls1x-cpufreq"); MODULE_AUTHOR("Kelvin Cheung "); MODULE_DESCRIPTION("Loongson1 CPUFreq driver"); MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/cpufreq/mediatek-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/mediatek-cpufreq.c @@ -540,6 +540,7 @@ { } }; +MODULE_DEVICE_TABLE(of, mtk_cpufreq_machines); static int __init mtk_cpufreq_driver_init(void) { --- linux-5.8.0.orig/drivers/cpufreq/powernow-k8.c +++ linux-5.8.0/drivers/cpufreq/powernow-k8.c @@ -878,9 +878,9 @@ /* Take a frequency, and issue the fid/vid transition command */ static int transition_frequency_fidvid(struct powernow_k8_data *data, - unsigned int index) + unsigned int index, + struct cpufreq_policy *policy) { - struct cpufreq_policy *policy; u32 fid = 0; u32 vid = 0; int res; @@ -912,9 +912,6 @@ freqs.old = find_khz_freq_from_fid(data->currfid); freqs.new = find_khz_freq_from_fid(fid); - policy = cpufreq_cpu_get(smp_processor_id()); - cpufreq_cpu_put(policy); - cpufreq_freq_transition_begin(policy, &freqs); res = transition_fid_vid(data, fid, vid); cpufreq_freq_transition_end(policy, &freqs, res); @@ -969,7 +966,7 @@ powernow_k8_acpi_pst_values(data, newstate); - ret = transition_frequency_fidvid(data, newstate); + ret = transition_frequency_fidvid(data, newstate, pol); if (ret) { pr_err("transition frequency failed\n"); --- linux-5.8.0.orig/drivers/cpufreq/powernv-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/powernv-cpufreq.c @@ -884,12 +884,15 @@ unsigned long action, void *unused) { int cpu; - struct cpufreq_policy cpu_policy; + struct cpufreq_policy *cpu_policy; rebooting = true; for_each_online_cpu(cpu) { - cpufreq_get_policy(&cpu_policy, cpu); - powernv_cpufreq_target_index(&cpu_policy, get_nominal_index()); + cpu_policy = cpufreq_cpu_get(cpu); + if (!cpu_policy) + continue; + powernv_cpufreq_target_index(cpu_policy, get_nominal_index()); + cpufreq_cpu_put(cpu_policy); } return NOTIFY_DONE; --- linux-5.8.0.orig/drivers/cpufreq/qcom-cpufreq-nvmem.c +++ linux-5.8.0/drivers/cpufreq/qcom-cpufreq-nvmem.c @@ -464,6 +464,7 @@ { .compatible = "qcom,msm8960", .data = &match_data_krait }, {}, }; +MODULE_DEVICE_TABLE(of, qcom_cpufreq_match_list); /* * Since the driver depends on smem and nvmem drivers, which may --- linux-5.8.0.orig/drivers/cpufreq/scpi-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/scpi-cpufreq.c @@ -237,6 +237,7 @@ }; module_platform_driver(scpi_cpufreq_platdrv); +MODULE_ALIAS("platform:scpi-cpufreq"); MODULE_AUTHOR("Sudeep Holla "); MODULE_DESCRIPTION("ARM SCPI CPUFreq interface driver"); MODULE_LICENSE("GPL v2"); --- linux-5.8.0.orig/drivers/cpufreq/sti-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/sti-cpufreq.c @@ -141,7 +141,8 @@ static const struct reg_field *sti_cpufreq_match(void) { if (of_machine_is_compatible("st,stih407") || - of_machine_is_compatible("st,stih410")) + of_machine_is_compatible("st,stih410") || + of_machine_is_compatible("st,stih418")) return sti_stih407_dvfs_regfields; return NULL; @@ -258,7 +259,8 @@ int ret; if ((!of_machine_is_compatible("st,stih407")) && - (!of_machine_is_compatible("st,stih410"))) + (!of_machine_is_compatible("st,stih410")) && + (!of_machine_is_compatible("st,stih418"))) return -ENODEV; ddata.cpu = get_cpu_device(0); @@ -290,6 +292,13 @@ } module_init(sti_cpufreq_init); +static const struct of_device_id __maybe_unused sti_cpufreq_of_match[] = { + { .compatible = "st,stih407" }, + { .compatible = "st,stih410" }, + { }, +}; +MODULE_DEVICE_TABLE(of, sti_cpufreq_of_match); + MODULE_DESCRIPTION("STMicroelectronics CPUFreq/OPP driver"); MODULE_AUTHOR("Ajitpal Singh "); MODULE_AUTHOR("Lee Jones "); --- linux-5.8.0.orig/drivers/cpufreq/sun50i-cpufreq-nvmem.c +++ linux-5.8.0/drivers/cpufreq/sun50i-cpufreq-nvmem.c @@ -167,6 +167,7 @@ { .compatible = "allwinner,sun50i-h6" }, {} }; +MODULE_DEVICE_TABLE(of, sun50i_cpufreq_match_list); static const struct of_device_id *sun50i_cpufreq_match_node(void) { --- linux-5.8.0.orig/drivers/cpufreq/vexpress-spc-cpufreq.c +++ linux-5.8.0/drivers/cpufreq/vexpress-spc-cpufreq.c @@ -599,6 +599,7 @@ }; module_platform_driver(ve_spc_cpufreq_platdrv); +MODULE_ALIAS("platform:vexpress-spc-cpufreq"); MODULE_AUTHOR("Viresh Kumar "); MODULE_AUTHOR("Sudeep Holla "); MODULE_DESCRIPTION("Vexpress SPC ARM big LITTLE cpufreq driver"); --- linux-5.8.0.orig/drivers/cpuidle/cpuidle-psci.c +++ linux-5.8.0/drivers/cpuidle/cpuidle-psci.c @@ -64,7 +64,7 @@ return -1; /* Do runtime PM to manage a hierarchical CPU toplogy. */ - pm_runtime_put_sync_suspend(pd_dev); + RCU_NONIDLE(pm_runtime_put_sync_suspend(pd_dev)); state = psci_get_domain_state(); if (!state) @@ -72,7 +72,7 @@ ret = psci_cpu_suspend_enter(state) ? -1 : idx; - pm_runtime_get_sync(pd_dev); + RCU_NONIDLE(pm_runtime_get_sync(pd_dev)); cpu_pm_exit(); --- linux-5.8.0.orig/drivers/cpuidle/cpuidle-tegra.c +++ linux-5.8.0/drivers/cpuidle/cpuidle-tegra.c @@ -172,7 +172,7 @@ static int tegra_cpuidle_state_enter(struct cpuidle_device *dev, int index, unsigned int cpu) { - int ret; + int err; /* * CC6 state is the "CPU cluster power-off" state. In order to @@ -183,34 +183,34 @@ * CPU cores, GIC and L2 cache). */ if (index == TEGRA_CC6) { - ret = tegra_cpuidle_coupled_barrier(dev); - if (ret) - return ret; + err = tegra_cpuidle_coupled_barrier(dev); + if (err) + return err; } local_fiq_disable(); - tegra_pm_set_cpu_in_lp2(); + RCU_NONIDLE(tegra_pm_set_cpu_in_lp2()); cpu_pm_enter(); switch (index) { case TEGRA_C7: - ret = tegra_cpuidle_c7_enter(); + err = tegra_cpuidle_c7_enter(); break; case TEGRA_CC6: - ret = tegra_cpuidle_cc6_enter(cpu); + err = tegra_cpuidle_cc6_enter(cpu); break; default: - ret = -EINVAL; + err = -EINVAL; break; } cpu_pm_exit(); - tegra_pm_clear_cpu_in_lp2(); + RCU_NONIDLE(tegra_pm_clear_cpu_in_lp2()); local_fiq_enable(); - return ret; + return err ?: index; } static int tegra_cpuidle_adjust_state_index(int index, unsigned int cpu) @@ -236,21 +236,27 @@ int index) { unsigned int cpu = cpu_logical_map(dev->cpu); - int err; + int ret; index = tegra_cpuidle_adjust_state_index(index, cpu); if (dev->states_usage[index].disable) return -1; if (index == TEGRA_C1) - err = arm_cpuidle_simple_enter(dev, drv, index); + ret = arm_cpuidle_simple_enter(dev, drv, index); else - err = tegra_cpuidle_state_enter(dev, index, cpu); + ret = tegra_cpuidle_state_enter(dev, index, cpu); - if (err && (err != -EINTR || index != TEGRA_CC6)) - pr_err_once("failed to enter state %d err: %d\n", index, err); + if (ret < 0) { + if (ret != -EINTR || index != TEGRA_CC6) + pr_err_once("failed to enter state %d err: %d\n", + index, ret); + index = -1; + } else { + index = ret; + } - return err ? -1 : index; + return index; } static void tegra114_enter_s2idle(struct cpuidle_device *dev, --- linux-5.8.0.orig/drivers/cpuidle/cpuidle.c +++ linux-5.8.0/drivers/cpuidle/cpuidle.c @@ -153,7 +153,8 @@ */ stop_critical_timings(); drv->states[index].enter_s2idle(dev, drv, index); - WARN_ON(!irqs_disabled()); + if (WARN_ON_ONCE(!irqs_disabled())) + local_irq_disable(); /* * timekeeping_resume() that will be called by tick_unfreeze() for the * first CPU executing it calls functions containing RCU read-side --- linux-5.8.0.orig/drivers/crypto/Kconfig +++ linux-5.8.0/drivers/crypto/Kconfig @@ -350,6 +350,7 @@ config CRYPTO_DEV_OMAP_SHAM tristate "Support for OMAP MD5/SHA1/SHA2 hw accelerator" depends on ARCH_OMAP2PLUS + select CRYPTO_ENGINE select CRYPTO_SHA1 select CRYPTO_MD5 select CRYPTO_SHA256 @@ -532,6 +533,7 @@ config CRYPTO_DEV_ATMEL_I2C tristate + select BITREVERSE config CRYPTO_DEV_ATMEL_ECC tristate "Support for Microchip / Atmel ECC hw accelerator" --- linux-5.8.0.orig/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-cipher.c +++ linux-5.8.0/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-cipher.c @@ -30,6 +30,8 @@ unsigned int ileft = areq->cryptlen; unsigned int oleft = areq->cryptlen; unsigned int todo; + unsigned long pi = 0, po = 0; /* progress for in and out */ + bool miter_err; struct sg_mapping_iter mi, mo; unsigned int oi, oo; /* offset for in and out */ unsigned long flags; @@ -44,50 +46,62 @@ spin_lock_irqsave(&ss->slock, flags); - for (i = 0; i < op->keylen; i += 4) - writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); + for (i = 0; i < op->keylen / 4; i++) + writesl(ss->base + SS_KEY0 + i * 4, &op->key[i], 1); if (areq->iv) { for (i = 0; i < 4 && i < ivsize / 4; i++) { v = *(u32 *)(areq->iv + i * 4); - writel(v, ss->base + SS_IV0 + i * 4); + writesl(ss->base + SS_IV0 + i * 4, &v, 1); } } writel(mode, ss->base + SS_CTL); - sg_miter_start(&mi, areq->src, sg_nents(areq->src), - SG_MITER_FROM_SG | SG_MITER_ATOMIC); - sg_miter_start(&mo, areq->dst, sg_nents(areq->dst), - SG_MITER_TO_SG | SG_MITER_ATOMIC); - sg_miter_next(&mi); - sg_miter_next(&mo); - if (!mi.addr || !mo.addr) { - dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); - err = -EINVAL; - goto release_ss; - } ileft = areq->cryptlen / 4; oleft = areq->cryptlen / 4; oi = 0; oo = 0; do { - todo = min(rx_cnt, ileft); - todo = min_t(size_t, todo, (mi.length - oi) / 4); - if (todo) { - ileft -= todo; - writesl(ss->base + SS_RXFIFO, mi.addr + oi, todo); - oi += todo * 4; - } - if (oi == mi.length) { - sg_miter_next(&mi); - oi = 0; + if (ileft) { + sg_miter_start(&mi, areq->src, sg_nents(areq->src), + SG_MITER_FROM_SG | SG_MITER_ATOMIC); + if (pi) + sg_miter_skip(&mi, pi); + miter_err = sg_miter_next(&mi); + if (!miter_err || !mi.addr) { + dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); + err = -EINVAL; + goto release_ss; + } + todo = min(rx_cnt, ileft); + todo = min_t(size_t, todo, (mi.length - oi) / 4); + if (todo) { + ileft -= todo; + writesl(ss->base + SS_RXFIFO, mi.addr + oi, todo); + oi += todo * 4; + } + if (oi == mi.length) { + pi += mi.length; + oi = 0; + } + sg_miter_stop(&mi); } spaces = readl(ss->base + SS_FCSR); rx_cnt = SS_RXFIFO_SPACES(spaces); tx_cnt = SS_TXFIFO_SPACES(spaces); + sg_miter_start(&mo, areq->dst, sg_nents(areq->dst), + SG_MITER_TO_SG | SG_MITER_ATOMIC); + if (po) + sg_miter_skip(&mo, po); + miter_err = sg_miter_next(&mo); + if (!miter_err || !mo.addr) { + dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); + err = -EINVAL; + goto release_ss; + } todo = min(tx_cnt, oleft); todo = min_t(size_t, todo, (mo.length - oo) / 4); if (todo) { @@ -96,9 +110,10 @@ oo += todo * 4; } if (oo == mo.length) { - sg_miter_next(&mo); oo = 0; + po += mo.length; } + sg_miter_stop(&mo); } while (oleft); if (areq->iv) { @@ -109,8 +124,6 @@ } release_ss: - sg_miter_stop(&mi); - sg_miter_stop(&mo); writel(0, ss->base + SS_CTL); spin_unlock_irqrestore(&ss->slock, flags); return err; @@ -164,12 +177,14 @@ unsigned int oleft = areq->cryptlen; unsigned int todo; struct sg_mapping_iter mi, mo; + unsigned long pi = 0, po = 0; /* progress for in and out */ + bool miter_err; unsigned int oi, oo; /* offset for in and out */ unsigned int ob = 0; /* offset in buf */ unsigned int obo = 0; /* offset in bufo*/ unsigned int obl = 0; /* length of data in bufo */ unsigned long flags; - bool need_fallback; + bool need_fallback = false; if (!areq->cryptlen) return 0; @@ -188,12 +203,12 @@ * we can use the SS optimized function */ while (in_sg && no_chunk == 1) { - if (in_sg->length % 4) + if ((in_sg->length | in_sg->offset) & 3u) no_chunk = 0; in_sg = sg_next(in_sg); } while (out_sg && no_chunk == 1) { - if (out_sg->length % 4) + if ((out_sg->length | out_sg->offset) & 3u) no_chunk = 0; out_sg = sg_next(out_sg); } @@ -206,28 +221,17 @@ spin_lock_irqsave(&ss->slock, flags); - for (i = 0; i < op->keylen; i += 4) - writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); + for (i = 0; i < op->keylen / 4; i++) + writesl(ss->base + SS_KEY0 + i * 4, &op->key[i], 1); if (areq->iv) { for (i = 0; i < 4 && i < ivsize / 4; i++) { v = *(u32 *)(areq->iv + i * 4); - writel(v, ss->base + SS_IV0 + i * 4); + writesl(ss->base + SS_IV0 + i * 4, &v, 1); } } writel(mode, ss->base + SS_CTL); - sg_miter_start(&mi, areq->src, sg_nents(areq->src), - SG_MITER_FROM_SG | SG_MITER_ATOMIC); - sg_miter_start(&mo, areq->dst, sg_nents(areq->dst), - SG_MITER_TO_SG | SG_MITER_ATOMIC); - sg_miter_next(&mi); - sg_miter_next(&mo); - if (!mi.addr || !mo.addr) { - dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); - err = -EINVAL; - goto release_ss; - } ileft = areq->cryptlen; oleft = areq->cryptlen; oi = 0; @@ -235,8 +239,16 @@ while (oleft) { if (ileft) { - char buf[4 * SS_RX_MAX];/* buffer for linearize SG src */ - + sg_miter_start(&mi, areq->src, sg_nents(areq->src), + SG_MITER_FROM_SG | SG_MITER_ATOMIC); + if (pi) + sg_miter_skip(&mi, pi); + miter_err = sg_miter_next(&mi); + if (!miter_err || !mi.addr) { + dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); + err = -EINVAL; + goto release_ss; + } /* * todo is the number of consecutive 4byte word that we * can read from current SG @@ -258,52 +270,57 @@ */ todo = min(rx_cnt * 4 - ob, ileft); todo = min_t(size_t, todo, mi.length - oi); - memcpy(buf + ob, mi.addr + oi, todo); + memcpy(ss->buf + ob, mi.addr + oi, todo); ileft -= todo; oi += todo; ob += todo; if (!(ob % 4)) { - writesl(ss->base + SS_RXFIFO, buf, + writesl(ss->base + SS_RXFIFO, ss->buf, ob / 4); ob = 0; } } if (oi == mi.length) { - sg_miter_next(&mi); + pi += mi.length; oi = 0; } + sg_miter_stop(&mi); } spaces = readl(ss->base + SS_FCSR); rx_cnt = SS_RXFIFO_SPACES(spaces); tx_cnt = SS_TXFIFO_SPACES(spaces); - dev_dbg(ss->dev, - "%x %u/%zu %u/%u cnt=%u %u/%zu %u/%u cnt=%u %u\n", - mode, - oi, mi.length, ileft, areq->cryptlen, rx_cnt, - oo, mo.length, oleft, areq->cryptlen, tx_cnt, ob); if (!tx_cnt) continue; + sg_miter_start(&mo, areq->dst, sg_nents(areq->dst), + SG_MITER_TO_SG | SG_MITER_ATOMIC); + if (po) + sg_miter_skip(&mo, po); + miter_err = sg_miter_next(&mo); + if (!miter_err || !mo.addr) { + dev_err_ratelimited(ss->dev, "ERROR: sg_miter return null\n"); + err = -EINVAL; + goto release_ss; + } /* todo in 4bytes word */ todo = min(tx_cnt, oleft / 4); todo = min_t(size_t, todo, (mo.length - oo) / 4); + if (todo) { readsl(ss->base + SS_TXFIFO, mo.addr + oo, todo); oleft -= todo * 4; oo += todo * 4; if (oo == mo.length) { - sg_miter_next(&mo); + po += mo.length; oo = 0; } } else { - char bufo[4 * SS_TX_MAX]; /* buffer for linearize SG dst */ - /* * read obl bytes in bufo, we read at maximum for * emptying the device */ - readsl(ss->base + SS_TXFIFO, bufo, tx_cnt); + readsl(ss->base + SS_TXFIFO, ss->bufo, tx_cnt); obl = tx_cnt * 4; obo = 0; do { @@ -315,17 +332,19 @@ */ todo = min_t(size_t, mo.length - oo, obl - obo); - memcpy(mo.addr + oo, bufo + obo, todo); + memcpy(mo.addr + oo, ss->bufo + obo, todo); oleft -= todo; obo += todo; oo += todo; if (oo == mo.length) { + po += mo.length; sg_miter_next(&mo); oo = 0; } } while (obo < obl); /* bufo must be fully used here */ } + sg_miter_stop(&mo); } if (areq->iv) { for (i = 0; i < 4 && i < ivsize / 4; i++) { @@ -335,8 +354,6 @@ } release_ss: - sg_miter_stop(&mi); - sg_miter_stop(&mo); writel(0, ss->base + SS_CTL); spin_unlock_irqrestore(&ss->slock, flags); --- linux-5.8.0.orig/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h +++ linux-5.8.0/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h @@ -148,6 +148,8 @@ struct reset_control *reset; struct device *dev; struct resource *res; + char buf[4 * SS_RX_MAX];/* buffer for linearize SG src */ + char bufo[4 * SS_TX_MAX]; /* buffer for linearize SG dst */ spinlock_t slock; /* control the use of the device */ #ifdef CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG u32 seed[SS_SEED_LEN / BITS_PER_LONG]; --- linux-5.8.0.orig/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c +++ linux-5.8.0/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c @@ -120,7 +120,10 @@ /* Be sure all data is written before enabling the task */ wmb(); - v = 1 | (ce->chanlist[flow].tl->t_common_ctl & 0x7F) << 8; + /* Only H6 needs to write a part of t_common_ctl along with "1", but since it is ignored + * on older SoCs, we have no reason to complicate things. + */ + v = 1 | ((le32_to_cpu(ce->chanlist[flow].tl->t_common_ctl) & 0x7F) << 8); writel(v, ce->base + CE_TLR); mutex_unlock(&ce->mlock); --- linux-5.8.0.orig/drivers/crypto/amcc/crypto4xx_core.c +++ linux-5.8.0/drivers/crypto/amcc/crypto4xx_core.c @@ -917,7 +917,7 @@ } pd->pd_ctl.w = PD_CTL_HOST_READY | - ((crypto_tfm_alg_type(req->tfm) == CRYPTO_ALG_TYPE_AHASH) | + ((crypto_tfm_alg_type(req->tfm) == CRYPTO_ALG_TYPE_AHASH) || (crypto_tfm_alg_type(req->tfm) == CRYPTO_ALG_TYPE_AEAD) ? PD_CTL_HASH_FINAL : 0); pd->pd_ctl_len.w = 0x00400000 | (assoclen + datalen); --- linux-5.8.0.orig/drivers/crypto/bcm/cipher.c +++ linux-5.8.0/drivers/crypto/bcm/cipher.c @@ -41,7 +41,7 @@ /* ================= Device Structure ================== */ -struct device_private iproc_priv; +struct bcm_device_private iproc_priv; /* ==================== Parameters ===================== */ @@ -2930,7 +2930,6 @@ ctx->enckeylen = keylen; ctx->authkeylen = 0; - memcpy(ctx->enckey, key, ctx->enckeylen); switch (ctx->enckeylen) { case AES_KEYSIZE_128: @@ -2946,6 +2945,8 @@ goto badkey; } + memcpy(ctx->enckey, key, ctx->enckeylen); + flow_log(" enckeylen:%u authkeylen:%u\n", ctx->enckeylen, ctx->authkeylen); flow_dump(" enc: ", ctx->enckey, ctx->enckeylen); @@ -3000,6 +3001,10 @@ struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher); flow_log("%s\n", __func__); + + if (keylen < GCM_ESP_SALT_SIZE) + return -EINVAL; + ctx->salt_len = GCM_ESP_SALT_SIZE; ctx->salt_offset = GCM_ESP_SALT_OFFSET; memcpy(ctx->salt, key + keylen - GCM_ESP_SALT_SIZE, GCM_ESP_SALT_SIZE); @@ -3028,6 +3033,10 @@ struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher); flow_log("%s\n", __func__); + + if (keylen < GCM_ESP_SALT_SIZE) + return -EINVAL; + ctx->salt_len = GCM_ESP_SALT_SIZE; ctx->salt_offset = GCM_ESP_SALT_OFFSET; memcpy(ctx->salt, key + keylen - GCM_ESP_SALT_SIZE, GCM_ESP_SALT_SIZE); @@ -3057,6 +3066,10 @@ struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher); flow_log("%s\n", __func__); + + if (keylen < CCM_ESP_SALT_SIZE) + return -EINVAL; + ctx->salt_len = CCM_ESP_SALT_SIZE; ctx->salt_offset = CCM_ESP_SALT_OFFSET; memcpy(ctx->salt, key + keylen - CCM_ESP_SALT_SIZE, CCM_ESP_SALT_SIZE); --- linux-5.8.0.orig/drivers/crypto/bcm/cipher.h +++ linux-5.8.0/drivers/crypto/bcm/cipher.h @@ -420,7 +420,7 @@ u32 num_chan; }; -struct device_private { +struct bcm_device_private { struct platform_device *pdev; struct spu_hw spu; @@ -467,6 +467,6 @@ struct mbox_chan **mbox; }; -extern struct device_private iproc_priv; +extern struct bcm_device_private iproc_priv; #endif --- linux-5.8.0.orig/drivers/crypto/bcm/util.c +++ linux-5.8.0/drivers/crypto/bcm/util.c @@ -348,7 +348,7 @@ static ssize_t spu_debugfs_read(struct file *filp, char __user *ubuf, size_t count, loff_t *offp) { - struct device_private *ipriv; + struct bcm_device_private *ipriv; char *buf; ssize_t ret, out_offset, out_count; int i; --- linux-5.8.0.orig/drivers/crypto/caam/Kconfig +++ linux-5.8.0/drivers/crypto/caam/Kconfig @@ -114,6 +114,7 @@ select CRYPTO_AUTHENC select CRYPTO_SKCIPHER select CRYPTO_DES + select CRYPTO_XTS help Selecting this will use CAAM Queue Interface (QI) for sending & receiving crypto jobs to/from CAAM. This gives better performance --- linux-5.8.0.orig/drivers/crypto/caam/caamalg.c +++ linux-5.8.0/drivers/crypto/caam/caamalg.c @@ -810,12 +810,6 @@ return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off); } -static int arc4_skcipher_setkey(struct crypto_skcipher *skcipher, - const u8 *key, unsigned int keylen) -{ - return skcipher_setkey(skcipher, key, keylen, 0); -} - static int des_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key, unsigned int keylen) { @@ -838,7 +832,7 @@ u32 *desc; if (keylen != 2 * AES_MIN_KEY_SIZE && keylen != 2 * AES_MAX_KEY_SIZE) { - dev_err(jrdev, "key size mismatch\n"); + dev_dbg(jrdev, "key size mismatch\n"); return -EINVAL; } @@ -1967,21 +1961,6 @@ }, .caam.class1_alg_type = OP_ALG_ALGSEL_3DES | OP_ALG_AAI_ECB, }, - { - .skcipher = { - .base = { - .cra_name = "ecb(arc4)", - .cra_driver_name = "ecb-arc4-caam", - .cra_blocksize = ARC4_BLOCK_SIZE, - }, - .setkey = arc4_skcipher_setkey, - .encrypt = skcipher_encrypt, - .decrypt = skcipher_decrypt, - .min_keysize = ARC4_MIN_KEY_SIZE, - .max_keysize = ARC4_MAX_KEY_SIZE, - }, - .caam.class1_alg_type = OP_ALG_ALGSEL_ARC4 | OP_ALG_AAI_ECB, - }, }; static struct caam_aead_alg driver_aeads[] = { @@ -3457,7 +3436,6 @@ struct caam_drv_private *priv = dev_get_drvdata(ctrldev); int i = 0, err = 0; u32 aes_vid, aes_inst, des_inst, md_vid, md_inst, ccha_inst, ptha_inst; - u32 arc4_inst; unsigned int md_limit = SHA512_DIGEST_SIZE; bool registered = false, gcm_support; @@ -3477,8 +3455,6 @@ CHA_ID_LS_DES_SHIFT; aes_inst = cha_inst & CHA_ID_LS_AES_MASK; md_inst = (cha_inst & CHA_ID_LS_MD_MASK) >> CHA_ID_LS_MD_SHIFT; - arc4_inst = (cha_inst & CHA_ID_LS_ARC4_MASK) >> - CHA_ID_LS_ARC4_SHIFT; ccha_inst = 0; ptha_inst = 0; @@ -3499,7 +3475,6 @@ md_inst = mdha & CHA_VER_NUM_MASK; ccha_inst = rd_reg32(&priv->ctrl->vreg.ccha) & CHA_VER_NUM_MASK; ptha_inst = rd_reg32(&priv->ctrl->vreg.ptha) & CHA_VER_NUM_MASK; - arc4_inst = rd_reg32(&priv->ctrl->vreg.afha) & CHA_VER_NUM_MASK; gcm_support = aesa & CHA_VER_MISC_AES_GCM; } @@ -3522,10 +3497,6 @@ if (!aes_inst && (alg_sel == OP_ALG_ALGSEL_AES)) continue; - /* Skip ARC4 algorithms if not supported by device */ - if (!arc4_inst && alg_sel == OP_ALG_ALGSEL_ARC4) - continue; - /* * Check support for AES modes not available * on LP devices. --- linux-5.8.0.orig/drivers/crypto/caam/caamalg_qi.c +++ linux-5.8.0/drivers/crypto/caam/caamalg_qi.c @@ -18,6 +18,8 @@ #include "qi.h" #include "jr.h" #include "caamalg_desc.h" +#include +#include /* * crypto alg @@ -67,6 +69,12 @@ struct device *qidev; spinlock_t lock; /* Protects multiple init of driver context */ struct caam_drv_ctx *drv_ctx[NUM_OP]; + bool xts_key_fallback; + struct crypto_skcipher *fallback; +}; + +struct caam_skcipher_req_ctx { + struct skcipher_request fallback_req; }; static int aead_set_sh_desc(struct crypto_aead *aead) @@ -726,12 +734,21 @@ struct caam_ctx *ctx = crypto_skcipher_ctx(skcipher); struct device *jrdev = ctx->jrdev; int ret = 0; + int err; - if (keylen != 2 * AES_MIN_KEY_SIZE && keylen != 2 * AES_MAX_KEY_SIZE) { - dev_err(jrdev, "key size mismatch\n"); - return -EINVAL; + err = xts_verify_key(skcipher, key, keylen); + if (err) { + dev_dbg(jrdev, "key size mismatch\n"); + return err; } + if (keylen != 2 * AES_KEYSIZE_128 && keylen != 2 * AES_KEYSIZE_256) + ctx->xts_key_fallback = true; + + err = crypto_skcipher_setkey(ctx->fallback, key, keylen); + if (err) + return err; + ctx->cdata.keylen = keylen; ctx->cdata.key_virt = key; ctx->cdata.key_inline = true; @@ -1373,6 +1390,14 @@ return edesc; } +static inline bool xts_skcipher_ivsize(struct skcipher_request *req) +{ + struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req); + unsigned int ivsize = crypto_skcipher_ivsize(skcipher); + + return !!get_unaligned((u64 *)(req->iv + (ivsize / 2))); +} + static inline int skcipher_crypt(struct skcipher_request *req, bool encrypt) { struct skcipher_edesc *edesc; @@ -1383,6 +1408,22 @@ if (!req->cryptlen) return 0; + if (ctx->fallback && (xts_skcipher_ivsize(req) || + ctx->xts_key_fallback)) { + struct caam_skcipher_req_ctx *rctx = skcipher_request_ctx(req); + + skcipher_request_set_tfm(&rctx->fallback_req, ctx->fallback); + skcipher_request_set_callback(&rctx->fallback_req, + req->base.flags, + req->base.complete, + req->base.data); + skcipher_request_set_crypt(&rctx->fallback_req, req->src, + req->dst, req->cryptlen, req->iv); + + return encrypt ? crypto_skcipher_encrypt(&rctx->fallback_req) : + crypto_skcipher_decrypt(&rctx->fallback_req); + } + if (unlikely(caam_congested)) return -EAGAIN; @@ -1507,6 +1548,7 @@ .base = { .cra_name = "xts(aes)", .cra_driver_name = "xts-aes-caam-qi", + .cra_flags = CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = AES_BLOCK_SIZE, }, .setkey = xts_skcipher_setkey, @@ -2440,9 +2482,32 @@ struct skcipher_alg *alg = crypto_skcipher_alg(tfm); struct caam_skcipher_alg *caam_alg = container_of(alg, typeof(*caam_alg), skcipher); + struct caam_ctx *ctx = crypto_skcipher_ctx(tfm); + u32 alg_aai = caam_alg->caam.class1_alg_type & OP_ALG_AAI_MASK; + int ret = 0; + + if (alg_aai == OP_ALG_AAI_XTS) { + const char *tfm_name = crypto_tfm_alg_name(&tfm->base); + struct crypto_skcipher *fallback; + + fallback = crypto_alloc_skcipher(tfm_name, 0, + CRYPTO_ALG_NEED_FALLBACK); + if (IS_ERR(fallback)) { + dev_err(ctx->jrdev, "Failed to allocate %s fallback: %ld\n", + tfm_name, PTR_ERR(fallback)); + return PTR_ERR(fallback); + } + + ctx->fallback = fallback; + crypto_skcipher_set_reqsize(tfm, sizeof(struct caam_skcipher_req_ctx) + + crypto_skcipher_reqsize(fallback)); + } + + ret = caam_init_common(ctx, &caam_alg->caam, false); + if (ret && ctx->fallback) + crypto_free_skcipher(ctx->fallback); - return caam_init_common(crypto_skcipher_ctx(tfm), &caam_alg->caam, - false); + return ret; } static int caam_aead_init(struct crypto_aead *tfm) @@ -2468,7 +2533,11 @@ static void caam_cra_exit(struct crypto_skcipher *tfm) { - caam_exit_common(crypto_skcipher_ctx(tfm)); + struct caam_ctx *ctx = crypto_skcipher_ctx(tfm); + + if (ctx->fallback) + crypto_free_skcipher(ctx->fallback); + caam_exit_common(ctx); } static void caam_aead_exit(struct crypto_aead *tfm) @@ -2502,7 +2571,7 @@ alg->base.cra_module = THIS_MODULE; alg->base.cra_priority = CAAM_CRA_PRIORITY; alg->base.cra_ctxsize = sizeof(struct caam_ctx); - alg->base.cra_flags = CRYPTO_ALG_ASYNC | CRYPTO_ALG_KERN_DRIVER_ONLY; + alg->base.cra_flags |= CRYPTO_ALG_ASYNC | CRYPTO_ALG_KERN_DRIVER_ONLY; alg->init = caam_cra_init; alg->exit = caam_cra_exit; --- linux-5.8.0.orig/drivers/crypto/caam/caamalg_qi2.c +++ linux-5.8.0/drivers/crypto/caam/caamalg_qi2.c @@ -1058,7 +1058,7 @@ u32 *desc; if (keylen != 2 * AES_MIN_KEY_SIZE && keylen != 2 * AES_MAX_KEY_SIZE) { - dev_err(dev, "key size mismatch\n"); + dev_dbg(dev, "key size mismatch\n"); return -EINVAL; } --- linux-5.8.0.orig/drivers/crypto/caam/compat.h +++ linux-5.8.0/drivers/crypto/caam/compat.h @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include --- linux-5.8.0.orig/drivers/crypto/cavium/cpt/cptvf_algs.c +++ linux-5.8.0/drivers/crypto/cavium/cpt/cptvf_algs.c @@ -200,6 +200,7 @@ int status; memset(req_info, 0, sizeof(struct cpt_request_info)); + req_info->may_sleep = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) != 0; memset(fctx, 0, sizeof(struct fc_context)); create_input_list(req, enc, enc_iv_len); create_output_list(req, enc_iv_len); --- linux-5.8.0.orig/drivers/crypto/cavium/cpt/cptvf_reqmanager.c +++ linux-5.8.0/drivers/crypto/cavium/cpt/cptvf_reqmanager.c @@ -133,7 +133,7 @@ /* Setup gather (input) components */ g_sz_bytes = ((req->incnt + 3) / 4) * sizeof(struct sglist_component); - info->gather_components = kzalloc(g_sz_bytes, GFP_KERNEL); + info->gather_components = kzalloc(g_sz_bytes, req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (!info->gather_components) { ret = -ENOMEM; goto scatter_gather_clean; @@ -150,7 +150,7 @@ /* Setup scatter (output) components */ s_sz_bytes = ((req->outcnt + 3) / 4) * sizeof(struct sglist_component); - info->scatter_components = kzalloc(s_sz_bytes, GFP_KERNEL); + info->scatter_components = kzalloc(s_sz_bytes, req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (!info->scatter_components) { ret = -ENOMEM; goto scatter_gather_clean; @@ -167,7 +167,7 @@ /* Create and initialize DPTR */ info->dlen = g_sz_bytes + s_sz_bytes + SG_LIST_HDR_SIZE; - info->in_buffer = kzalloc(info->dlen, GFP_KERNEL); + info->in_buffer = kzalloc(info->dlen, req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (!info->in_buffer) { ret = -ENOMEM; goto scatter_gather_clean; @@ -195,7 +195,7 @@ } /* Create and initialize RPTR */ - info->out_buffer = kzalloc(COMPLETION_CODE_SIZE, GFP_KERNEL); + info->out_buffer = kzalloc(COMPLETION_CODE_SIZE, req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (!info->out_buffer) { ret = -ENOMEM; goto scatter_gather_clean; @@ -421,7 +421,7 @@ struct cpt_vq_command vq_cmd; union cpt_inst_s cptinst; - info = kzalloc(sizeof(*info), GFP_KERNEL); + info = kzalloc(sizeof(*info), req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (unlikely(!info)) { dev_err(&pdev->dev, "Unable to allocate memory for info_buffer\n"); return -ENOMEM; @@ -443,7 +443,7 @@ * Get buffer for union cpt_res_s response * structure and its physical address */ - info->completion_addr = kzalloc(sizeof(union cpt_res_s), GFP_KERNEL); + info->completion_addr = kzalloc(sizeof(union cpt_res_s), req->may_sleep ? GFP_KERNEL : GFP_ATOMIC); if (unlikely(!info->completion_addr)) { dev_err(&pdev->dev, "Unable to allocate memory for completion_addr\n"); ret = -ENOMEM; --- linux-5.8.0.orig/drivers/crypto/cavium/cpt/request_manager.h +++ linux-5.8.0/drivers/crypto/cavium/cpt/request_manager.h @@ -62,6 +62,8 @@ union ctrl_info ctrl; /* User control information */ struct cptvf_request req; /* Request Information (Core specific) */ + bool may_sleep; + struct buf_ptr in[MAX_BUF_CNT]; struct buf_ptr out[MAX_BUF_CNT]; --- linux-5.8.0.orig/drivers/crypto/ccp/ccp-dev.h +++ linux-5.8.0/drivers/crypto/ccp/ccp-dev.h @@ -469,6 +469,7 @@ unsigned int sg_used; struct scatterlist *dma_sg; + struct scatterlist *dma_sg_head; struct device *dma_dev; unsigned int dma_count; enum dma_data_direction dma_dir; --- linux-5.8.0.orig/drivers/crypto/ccp/ccp-ops.c +++ linux-5.8.0/drivers/crypto/ccp/ccp-ops.c @@ -63,7 +63,7 @@ static void ccp_sg_free(struct ccp_sg_workarea *wa) { if (wa->dma_count) - dma_unmap_sg(wa->dma_dev, wa->dma_sg, wa->nents, wa->dma_dir); + dma_unmap_sg(wa->dma_dev, wa->dma_sg_head, wa->nents, wa->dma_dir); wa->dma_count = 0; } @@ -92,6 +92,7 @@ return 0; wa->dma_sg = sg; + wa->dma_sg_head = sg; wa->dma_dev = dev; wa->dma_dir = dma_dir; wa->dma_count = dma_map_sg(dev, sg, wa->nents, dma_dir); @@ -104,14 +105,28 @@ static void ccp_update_sg_workarea(struct ccp_sg_workarea *wa, unsigned int len) { unsigned int nbytes = min_t(u64, len, wa->bytes_left); + unsigned int sg_combined_len = 0; if (!wa->sg) return; wa->sg_used += nbytes; wa->bytes_left -= nbytes; - if (wa->sg_used == wa->sg->length) { - wa->sg = sg_next(wa->sg); + if (wa->sg_used == sg_dma_len(wa->dma_sg)) { + /* Advance to the next DMA scatterlist entry */ + wa->dma_sg = sg_next(wa->dma_sg); + + /* In the case that the DMA mapped scatterlist has entries + * that have been merged, the non-DMA mapped scatterlist + * must be advanced multiple times for each merged entry. + * This ensures that the current non-DMA mapped entry + * corresponds to the current DMA mapped entry. + */ + do { + sg_combined_len += wa->sg->length; + wa->sg = sg_next(wa->sg); + } while (wa->sg_used > sg_combined_len); + wa->sg_used = 0; } } @@ -299,7 +314,7 @@ /* Update the structures and generate the count */ buf_count = 0; while (sg_wa->bytes_left && (buf_count < dm_wa->length)) { - nbytes = min(sg_wa->sg->length - sg_wa->sg_used, + nbytes = min(sg_dma_len(sg_wa->dma_sg) - sg_wa->sg_used, dm_wa->length - buf_count); nbytes = min_t(u64, sg_wa->bytes_left, nbytes); @@ -331,11 +346,11 @@ * and destination. The resulting len values will always be <= UINT_MAX * because the dma length is an unsigned int. */ - sg_src_len = sg_dma_len(src->sg_wa.sg) - src->sg_wa.sg_used; + sg_src_len = sg_dma_len(src->sg_wa.dma_sg) - src->sg_wa.sg_used; sg_src_len = min_t(u64, src->sg_wa.bytes_left, sg_src_len); if (dst) { - sg_dst_len = sg_dma_len(dst->sg_wa.sg) - dst->sg_wa.sg_used; + sg_dst_len = sg_dma_len(dst->sg_wa.dma_sg) - dst->sg_wa.sg_used; sg_dst_len = min_t(u64, src->sg_wa.bytes_left, sg_dst_len); op_len = min(sg_src_len, sg_dst_len); } else { @@ -365,7 +380,7 @@ /* Enough data in the sg element, but we need to * adjust for any previously copied data */ - op->src.u.dma.address = sg_dma_address(src->sg_wa.sg); + op->src.u.dma.address = sg_dma_address(src->sg_wa.dma_sg); op->src.u.dma.offset = src->sg_wa.sg_used; op->src.u.dma.length = op_len & ~(block_size - 1); @@ -386,7 +401,7 @@ /* Enough room in the sg element, but we need to * adjust for any previously used area */ - op->dst.u.dma.address = sg_dma_address(dst->sg_wa.sg); + op->dst.u.dma.address = sg_dma_address(dst->sg_wa.dma_sg); op->dst.u.dma.offset = dst->sg_wa.sg_used; op->dst.u.dma.length = op->src.u.dma.length; } @@ -1731,7 +1746,7 @@ break; default: ret = -EINVAL; - goto e_ctx; + goto e_data; } } else { /* Stash the context */ @@ -2028,7 +2043,7 @@ dst.sg_wa.sg_used = 0; for (i = 1; i <= src.sg_wa.dma_count; i++) { if (!dst.sg_wa.sg || - (dst.sg_wa.sg->length < src.sg_wa.sg->length)) { + (sg_dma_len(dst.sg_wa.sg) < sg_dma_len(src.sg_wa.sg))) { ret = -EINVAL; goto e_dst; } @@ -2054,8 +2069,8 @@ goto e_dst; } - dst.sg_wa.sg_used += src.sg_wa.sg->length; - if (dst.sg_wa.sg_used == dst.sg_wa.sg->length) { + dst.sg_wa.sg_used += sg_dma_len(src.sg_wa.sg); + if (dst.sg_wa.sg_used == sg_dma_len(dst.sg_wa.sg)) { dst.sg_wa.sg = sg_next(dst.sg_wa.sg); dst.sg_wa.sg_used = 0; } --- linux-5.8.0.orig/drivers/crypto/ccree/cc_cipher.c +++ linux-5.8.0/drivers/crypto/ccree/cc_cipher.c @@ -159,7 +159,6 @@ skcipher_alg.base); struct device *dev = drvdata_to_dev(cc_alg->drvdata); unsigned int max_key_buf_size = cc_alg->skcipher_alg.max_keysize; - int rc = 0; dev_dbg(dev, "Initializing context @%p for %s\n", ctx_p, crypto_tfm_alg_name(tfm)); @@ -171,10 +170,19 @@ ctx_p->flow_mode = cc_alg->flow_mode; ctx_p->drvdata = cc_alg->drvdata; + if (ctx_p->cipher_mode == DRV_CIPHER_ESSIV) { + /* Alloc hash tfm for essiv */ + ctx_p->shash_tfm = crypto_alloc_shash("sha256-generic", 0, 0); + if (IS_ERR(ctx_p->shash_tfm)) { + dev_err(dev, "Error allocating hash tfm for ESSIV.\n"); + return PTR_ERR(ctx_p->shash_tfm); + } + } + /* Allocate key buffer, cache line aligned */ ctx_p->user.key = kmalloc(max_key_buf_size, GFP_KERNEL); if (!ctx_p->user.key) - return -ENOMEM; + goto free_shash; dev_dbg(dev, "Allocated key buffer in context. key=@%p\n", ctx_p->user.key); @@ -186,21 +194,19 @@ if (dma_mapping_error(dev, ctx_p->user.key_dma_addr)) { dev_err(dev, "Mapping Key %u B at va=%pK for DMA failed\n", max_key_buf_size, ctx_p->user.key); - return -ENOMEM; + goto free_key; } dev_dbg(dev, "Mapped key %u B at va=%pK to dma=%pad\n", max_key_buf_size, ctx_p->user.key, &ctx_p->user.key_dma_addr); - if (ctx_p->cipher_mode == DRV_CIPHER_ESSIV) { - /* Alloc hash tfm for essiv */ - ctx_p->shash_tfm = crypto_alloc_shash("sha256-generic", 0, 0); - if (IS_ERR(ctx_p->shash_tfm)) { - dev_err(dev, "Error allocating hash tfm for ESSIV.\n"); - return PTR_ERR(ctx_p->shash_tfm); - } - } + return 0; + +free_key: + kfree(ctx_p->user.key); +free_shash: + crypto_free_shash(ctx_p->shash_tfm); - return rc; + return -ENOMEM; } static void cc_cipher_exit(struct crypto_tfm *tfm) --- linux-5.8.0.orig/drivers/crypto/ccree/cc_pm.c +++ linux-5.8.0/drivers/crypto/ccree/cc_pm.c @@ -65,8 +65,12 @@ int cc_pm_get(struct device *dev) { int rc = pm_runtime_get_sync(dev); + if (rc < 0) { + pm_runtime_put_noidle(dev); + return rc; + } - return (rc == 1 ? 0 : rc); + return 0; } void cc_pm_put_suspend(struct device *dev) --- linux-5.8.0.orig/drivers/crypto/chelsio/chcr_ktls.c +++ linux-5.8.0/drivers/crypto/chelsio/chcr_ktls.c @@ -659,7 +659,8 @@ } static void *__chcr_write_cpl_set_tcb_ulp(struct chcr_ktls_info *tx_info, - u32 tid, void *pos, u16 word, u64 mask, + u32 tid, void *pos, u16 word, + struct sge_eth_txq *q, u64 mask, u64 val, u32 reply) { struct cpl_set_tcb_field_core *cpl; @@ -668,7 +669,10 @@ /* ULP_TXPKT */ txpkt = pos; - txpkt->cmd_dest = htonl(ULPTX_CMD_V(ULP_TX_PKT) | ULP_TXPKT_DEST_V(0)); + txpkt->cmd_dest = htonl(ULPTX_CMD_V(ULP_TX_PKT) | + ULP_TXPKT_CHANNELID_V(tx_info->port_id) | + ULP_TXPKT_FID_V(q->q.cntxt_id) | + ULP_TXPKT_RO_F); txpkt->len = htonl(DIV_ROUND_UP(CHCR_SET_TCB_FIELD_LEN, 16)); /* ULPTX_IDATA sub-command */ @@ -723,7 +727,7 @@ } else { u8 buf[48] = {0}; - __chcr_write_cpl_set_tcb_ulp(tx_info, tid, buf, word, + __chcr_write_cpl_set_tcb_ulp(tx_info, tid, buf, word, q, mask, val, reply); return chcr_copy_to_txd(buf, &q->q, pos, @@ -731,7 +735,7 @@ } } - pos = __chcr_write_cpl_set_tcb_ulp(tx_info, tid, pos, word, + pos = __chcr_write_cpl_set_tcb_ulp(tx_info, tid, pos, word, q, mask, val, reply); /* check again if we are at the end of the queue */ @@ -917,15 +921,14 @@ struct fw_eth_tx_pkt_wr *wr; struct cpl_tx_pkt_core *cpl; u32 ctrl, iplen, maclen; -#if IS_ENABLED(CONFIG_IPV6) struct ipv6hdr *ip6; -#endif unsigned int ndesc; struct tcphdr *tcp; int len16, pktlen; struct iphdr *ip; int credits; u8 buf[150]; + u64 cntrl1; void *pos; iplen = skb_network_header_len(skb); @@ -964,22 +967,26 @@ TXPKT_PF_V(tx_info->adap->pf)); cpl->pack = 0; cpl->len = htons(pktlen); - /* checksum offload */ - cpl->ctrl1 = 0; - - pos = cpl + 1; memcpy(buf, skb->data, pktlen); - if (tx_info->ip_family == AF_INET) { + if (!IS_ENABLED(CONFIG_IPV6) || tx_info->ip_family == AF_INET) { /* we need to correct ip header len */ ip = (struct iphdr *)(buf + maclen); ip->tot_len = htons(pktlen - maclen); -#if IS_ENABLED(CONFIG_IPV6) + cntrl1 = TXPKT_CSUM_TYPE_V(TX_CSUM_TCPIP); } else { ip6 = (struct ipv6hdr *)(buf + maclen); ip6->payload_len = htons(pktlen - maclen - iplen); -#endif + cntrl1 = TXPKT_CSUM_TYPE_V(TX_CSUM_TCPIP6); } + + cntrl1 |= T6_TXPKT_ETHHDR_LEN_V(maclen - ETH_HLEN) | + TXPKT_IPHDR_LEN_V(iplen); + /* checksum offload */ + cpl->ctrl1 = cpu_to_be64(cntrl1); + + pos = cpl + 1; + /* now take care of the tcp header, if fin is not set then clear push * bit as well, and if fin is set, it will be sent at the last so we * need to update the tcp sequence number as per the last packet. --- linux-5.8.0.orig/drivers/crypto/chelsio/chtls/chtls.h +++ linux-5.8.0/drivers/crypto/chelsio/chtls/chtls.h @@ -485,7 +485,11 @@ void chtls_tcp_push(struct sock *sk, int flags); int chtls_push_frames(struct chtls_sock *csk, int comp); int chtls_set_tcb_tflag(struct sock *sk, unsigned int bit_pos, int val); +void chtls_set_tcb_field_rpl_skb(struct sock *sk, u16 word, + u64 mask, u64 val, u8 cookie, + int through_l2t); int chtls_setkey(struct chtls_sock *csk, u32 keylen, u32 mode, int cipher_type); +void chtls_set_quiesce_ctrl(struct sock *sk, int val); void skb_entail(struct sock *sk, struct sk_buff *skb, int flags); unsigned int keyid_to_addr(int start_addr, int keyid); void free_tls_keyid(struct sock *sk); --- linux-5.8.0.orig/drivers/crypto/chelsio/chtls/chtls_cm.c +++ linux-5.8.0/drivers/crypto/chelsio/chtls/chtls_cm.c @@ -32,6 +32,7 @@ #include "chtls.h" #include "chtls_cm.h" #include "clip_tbl.h" +#include "t4_tcb.h" /* * State transitions and actions for close. Note that if we are in SYN_SENT @@ -92,11 +93,13 @@ static struct net_device *chtls_find_netdev(struct chtls_dev *cdev, struct sock *sk) { + struct adapter *adap = pci_get_drvdata(cdev->pdev); struct net_device *ndev = cdev->ports[0]; #if IS_ENABLED(CONFIG_IPV6) struct net_device *temp; int addr_type; #endif + int i; switch (sk->sk_family) { case PF_INET: @@ -127,8 +130,12 @@ return NULL; if (is_vlan_dev(ndev)) - return vlan_dev_real_dev(ndev); - return ndev; + ndev = vlan_dev_real_dev(ndev); + + for_each_port(adap, i) + if (cdev->ports[i] == ndev) + return ndev; + return NULL; } static void assign_rxopt(struct sock *sk, unsigned int opt) @@ -206,7 +213,7 @@ { if (likely(skb && !skb_shared(skb) && !skb_cloned(skb))) { __skb_trim(skb, 0); - refcount_add(2, &skb->users); + refcount_inc(&skb->users); } else { skb = alloc_skb(len, GFP_KERNEL | __GFP_NOFAIL); } @@ -261,7 +268,9 @@ if (sk->sk_state != TCP_SYN_RECV) chtls_send_abort(sk, mode, skb); else - goto out; + chtls_set_tcb_field_rpl_skb(sk, TCB_T_FLAGS_W, + TCB_T_FLAGS_V(TCB_T_FLAGS_M), 0, + TCB_FIELD_COOKIE_TFLAG, 1); return; out: @@ -477,7 +486,6 @@ chtls_purge_write_queue(sk); free_tls_keyid(sk); kref_put(&csk->kref, chtls_sock_release); - csk->cdev = NULL; if (sk->sk_family == AF_INET) sk->sk_prot = &tcp_prot; #if IS_ENABLED(CONFIG_IPV6) @@ -616,7 +624,7 @@ while (!skb_queue_empty(&listen_ctx->synq)) { struct chtls_sock *csk = - container_of((struct synq *)__skb_dequeue + container_of((struct synq *)skb_peek (&listen_ctx->synq), struct chtls_sock, synq); struct sock *child = csk->sk; @@ -736,14 +744,13 @@ #if IS_ENABLED(CONFIG_IPV6) if (sk->sk_family == PF_INET6) { - struct chtls_sock *csk; + struct net_device *ndev = chtls_find_netdev(cdev, sk); int addr_type = 0; - csk = rcu_dereference_sk_user_data(sk); addr_type = ipv6_addr_type((const struct in6_addr *) &sk->sk_v6_rcv_saddr); if (addr_type != IPV6_ADDR_ANY) - cxgb4_clip_release(csk->egress_dev, (const u32 *) + cxgb4_clip_release(ndev, (const u32 *) &sk->sk_v6_rcv_saddr, 1); } #endif @@ -768,14 +775,13 @@ if (rpl->status != CPL_ERR_NONE) { pr_info("Unexpected PASS_OPEN_RPL status %u for STID %u\n", rpl->status, stid); - return CPL_RET_BUF_DONE; + } else { + cxgb4_free_stid(cdev->tids, stid, listen_ctx->lsk->sk_family); + sock_put(listen_ctx->lsk); + kfree(listen_ctx); + module_put(THIS_MODULE); } - cxgb4_free_stid(cdev->tids, stid, listen_ctx->lsk->sk_family); - sock_put(listen_ctx->lsk); - kfree(listen_ctx); - module_put(THIS_MODULE); - - return 0; + return CPL_RET_BUF_DONE; } static int chtls_close_listsrv_rpl(struct chtls_dev *cdev, struct sk_buff *skb) @@ -792,15 +798,13 @@ if (rpl->status != CPL_ERR_NONE) { pr_info("Unexpected CLOSE_LISTSRV_RPL status %u for STID %u\n", rpl->status, stid); - return CPL_RET_BUF_DONE; + } else { + cxgb4_free_stid(cdev->tids, stid, listen_ctx->lsk->sk_family); + sock_put(listen_ctx->lsk); + kfree(listen_ctx); + module_put(THIS_MODULE); } - - cxgb4_free_stid(cdev->tids, stid, listen_ctx->lsk->sk_family); - sock_put(listen_ctx->lsk); - kfree(listen_ctx); - module_put(THIS_MODULE); - - return 0; + return CPL_RET_BUF_DONE; } static void chtls_purge_wr_queue(struct sock *sk) @@ -1107,6 +1111,7 @@ const struct cpl_pass_accept_req *req, struct chtls_dev *cdev) { + struct adapter *adap = pci_get_drvdata(cdev->pdev); struct neighbour *n = NULL; struct inet_sock *newinet; const struct iphdr *iph; @@ -1116,9 +1121,10 @@ struct dst_entry *dst; struct tcp_sock *tp; struct sock *newsk; + bool found = false; u16 port_id; int rxq_idx; - int step; + int step, i; iph = (const struct iphdr *)network_hdr; newsk = tcp_create_openreq_child(lsk, oreq, cdev->askb); @@ -1150,12 +1156,20 @@ n = dst_neigh_lookup(dst, &ip6h->saddr); #endif } - if (!n) - goto free_sk; + if (!n || !n->dev) + goto free_dst; ndev = n->dev; - if (!ndev) + if (is_vlan_dev(ndev)) + ndev = vlan_dev_real_dev(ndev); + + for_each_port(adap, i) + if (cdev->ports[i] == ndev) + found = true; + + if (!found) goto free_dst; + port_id = cxgb4_port_idx(ndev); csk = chtls_sock_create(cdev); @@ -1201,6 +1215,7 @@ sk_setup_caps(newsk, dst); ctx = tls_get_ctx(lsk); newsk->sk_destruct = ctx->sk_destruct; + newsk->sk_prot_creator = lsk->sk_prot_creator; csk->sk = newsk; csk->passive_reap_next = oreq; csk->tx_chan = cxgb4_port_chan(ndev); @@ -1231,6 +1246,8 @@ free_csk: chtls_sock_release(&csk->kref); free_dst: + if (n) + neigh_release(n); dst_release(dst); free_sk: inet_csk_prepare_forced_close(newsk); @@ -1380,7 +1397,7 @@ newsk = chtls_recv_sock(sk, oreq, network_hdr, req, cdev); if (!newsk) - goto free_oreq; + goto reject; if (chtls_get_module(newsk)) goto reject; @@ -1396,8 +1413,6 @@ kfree_skb(skb); return; -free_oreq: - chtls_reqsk_free(oreq); reject: mk_tid_release(reply_skb, 0, tid); cxgb4_ofld_send(cdev->lldi->ports[0], reply_skb); @@ -1506,7 +1521,6 @@ struct chtls_sock *csk = sk->sk_user_data; local_bh_disable(); - bh_lock_sock(sk); release_tcp_port(sk); /* release the port immediately */ spin_lock(&reap_list_lock); @@ -1515,7 +1529,6 @@ if (!csk->passive_reap_next) schedule_work(&reap_task); spin_unlock(&reap_list_lock); - bh_unlock_sock(sk); local_bh_enable(); } @@ -1584,6 +1597,11 @@ sk_wake_async(sk, 0, POLL_OUT); data = lookup_stid(cdev->tids, stid); + if (!data) { + /* listening server close */ + kfree_skb(skb); + goto unlock; + } lsk = ((struct listen_ctx *)data)->lsk; bh_lock_sock(lsk); @@ -1931,6 +1949,8 @@ else if (tcp_sk(sk)->linger2 < 0 && !csk_flag_nochk(csk, CSK_ABORT_SHUTDOWN)) chtls_abort_conn(sk, skb); + else if (csk_flag_nochk(csk, CSK_TX_DATA_SENT)) + chtls_set_quiesce_ctrl(sk, 0); break; default: pr_info("close_con_rpl in bad state %d\n", sk->sk_state); @@ -1992,39 +2012,6 @@ spin_unlock_bh(&cdev->deferq.lock); } -static void send_abort_rpl(struct sock *sk, struct sk_buff *skb, - struct chtls_dev *cdev, int status, int queue) -{ - struct cpl_abort_req_rss *req = cplhdr(skb); - struct sk_buff *reply_skb; - struct chtls_sock *csk; - - csk = rcu_dereference_sk_user_data(sk); - - reply_skb = alloc_skb(sizeof(struct cpl_abort_rpl), - GFP_KERNEL); - - if (!reply_skb) { - req->status = (queue << 1); - t4_defer_reply(skb, cdev, send_defer_abort_rpl); - return; - } - - set_abort_rpl_wr(reply_skb, GET_TID(req), status); - kfree_skb(skb); - - set_wr_txq(reply_skb, CPL_PRIORITY_DATA, queue); - if (csk_conn_inline(csk)) { - struct l2t_entry *e = csk->l2t_entry; - - if (e && sk->sk_state != TCP_SYN_RECV) { - cxgb4_l2t_send(csk->egress_dev, reply_skb, e); - return; - } - } - cxgb4_ofld_send(cdev->lldi->ports[0], reply_skb); -} - static void chtls_send_abort_rpl(struct sock *sk, struct sk_buff *skb, struct chtls_dev *cdev, int status, int queue) @@ -2073,9 +2060,9 @@ queue = csk->txq_idx; skb->sk = NULL; + chtls_send_abort_rpl(child, skb, BLOG_SKB_CB(skb)->cdev, + CPL_ABORT_NO_RST, queue); do_abort_syn_rcv(child, lsk); - send_abort_rpl(child, skb, BLOG_SKB_CB(skb)->cdev, - CPL_ABORT_NO_RST, queue); } static int abort_syn_rcv(struct sock *sk, struct sk_buff *skb) @@ -2105,8 +2092,8 @@ if (!sock_owned_by_user(psk)) { int queue = csk->txq_idx; + chtls_send_abort_rpl(sk, skb, cdev, CPL_ABORT_NO_RST, queue); do_abort_syn_rcv(sk, psk); - send_abort_rpl(sk, skb, cdev, CPL_ABORT_NO_RST, queue); } else { skb->sk = sk; BLOG_SKB_CB(skb)->backlog_rcv = bl_abort_syn_rcv; @@ -2124,9 +2111,6 @@ int queue = csk->txq_idx; if (is_neg_adv(req->status)) { - if (sk->sk_state == TCP_SYN_RECV) - chtls_set_tcb_tflag(sk, 0, 0); - kfree_skb(skb); return; } @@ -2153,12 +2137,12 @@ if (sk->sk_state == TCP_SYN_RECV && !abort_syn_rcv(sk, skb)) return; - chtls_release_resources(sk); - chtls_conn_done(sk); } chtls_send_abort_rpl(sk, skb, BLOG_SKB_CB(skb)->cdev, rst_status, queue); + chtls_release_resources(sk); + chtls_conn_done(sk); } static void chtls_abort_rpl_rss(struct sock *sk, struct sk_buff *skb) @@ -2310,6 +2294,28 @@ return 0; } +static int chtls_set_tcb_rpl(struct chtls_dev *cdev, struct sk_buff *skb) +{ + struct cpl_set_tcb_rpl *rpl = cplhdr(skb) + RSS_HDR; + unsigned int hwtid = GET_TID(rpl); + struct sock *sk; + + sk = lookup_tid(cdev->tids, hwtid); + + /* return EINVAL if socket doesn't exist */ + if (!sk) + return -EINVAL; + + /* Reusing the skb as size of cpl_set_tcb_field structure + * is greater than cpl_abort_req + */ + if (TCB_COOKIE_G(rpl->cookie) == TCB_FIELD_COOKIE_TFLAG) + chtls_send_abort(sk, CPL_ABORT_SEND_RST, NULL); + + kfree_skb(skb); + return 0; +} + chtls_handler_func chtls_handlers[NUM_CPL_CMDS] = { [CPL_PASS_OPEN_RPL] = chtls_pass_open_rpl, [CPL_CLOSE_LISTSRV_RPL] = chtls_close_listsrv_rpl, @@ -2322,5 +2328,6 @@ [CPL_CLOSE_CON_RPL] = chtls_conn_cpl, [CPL_ABORT_REQ_RSS] = chtls_conn_cpl, [CPL_ABORT_RPL_RSS] = chtls_conn_cpl, - [CPL_FW4_ACK] = chtls_wr_ack, + [CPL_FW4_ACK] = chtls_wr_ack, + [CPL_SET_TCB_RPL] = chtls_set_tcb_rpl, }; --- linux-5.8.0.orig/drivers/crypto/chelsio/chtls/chtls_cm.h +++ linux-5.8.0/drivers/crypto/chelsio/chtls/chtls_cm.h @@ -50,9 +50,6 @@ #define MIN_RCV_WND (24 * 1024U) #define LOOPBACK(x) (((x) & htonl(0xff000000)) == htonl(0x7f000000)) -/* ulp_mem_io + ulptx_idata + payload + padding */ -#define MAX_IMM_ULPTX_WR_LEN (32 + 8 + 256 + 8) - /* for TX: a skb must have a headroom of at least TX_HEADER_LEN bytes */ #define TX_HEADER_LEN \ (sizeof(struct fw_ofld_tx_data_wr) + sizeof(struct sge_opaque_hdr)) --- linux-5.8.0.orig/drivers/crypto/chelsio/chtls/chtls_hw.c +++ linux-5.8.0/drivers/crypto/chelsio/chtls/chtls_hw.c @@ -88,6 +88,24 @@ return ret < 0 ? ret : 0; } +void chtls_set_tcb_field_rpl_skb(struct sock *sk, u16 word, + u64 mask, u64 val, u8 cookie, + int through_l2t) +{ + struct sk_buff *skb; + unsigned int wrlen; + + wrlen = sizeof(struct cpl_set_tcb_field) + sizeof(struct ulptx_idata); + wrlen = roundup(wrlen, 16); + + skb = alloc_skb(wrlen, GFP_KERNEL | __GFP_NOFAIL); + if (!skb) + return; + + __set_tcb_field(sk, skb, word, mask, val, cookie, 0); + send_or_defer(sk, tcp_sk(sk), skb, through_l2t); +} + /* * Set one of the t_flags bits in the TCB. */ @@ -113,6 +131,29 @@ TF_RX_QUIESCE_V(val)); } +void chtls_set_quiesce_ctrl(struct sock *sk, int val) +{ + struct chtls_sock *csk; + struct sk_buff *skb; + unsigned int wrlen; + int ret; + + wrlen = sizeof(struct cpl_set_tcb_field) + sizeof(struct ulptx_idata); + wrlen = roundup(wrlen, 16); + + skb = alloc_skb(wrlen, GFP_ATOMIC); + if (!skb) + return; + + csk = rcu_dereference_sk_user_data(sk); + + __set_tcb_field(sk, skb, 1, TF_RX_QUIESCE_V(1), 0, 0, 1); + set_wr_txq(skb, CPL_PRIORITY_CONTROL, csk->port_id); + ret = cxgb4_ofld_send(csk->egress_dev, skb); + if (ret < 0) + kfree_skb(skb); +} + /* TLS Key bitmap processing */ int chtls_init_kmap(struct chtls_dev *cdev, struct cxgb4_lld_info *lldi) { @@ -383,11 +424,15 @@ if (ret) goto out_notcb; + if (unlikely(csk_flag(sk, CSK_ABORT_SHUTDOWN))) + goto out_notcb; + set_wr_txq(skb, CPL_PRIORITY_DATA, csk->tlshws.txqid); csk->wr_credits -= DIV_ROUND_UP(len, 16); csk->wr_unacked += DIV_ROUND_UP(len, 16); enqueue_wr(csk, skb); cxgb4_ofld_send(csk->egress_dev, skb); + skb = NULL; chtls_set_scmd(csk); /* Clear quiesce for Rx key */ --- linux-5.8.0.orig/drivers/crypto/chelsio/chtls/chtls_io.c +++ linux-5.8.0/drivers/crypto/chelsio/chtls/chtls_io.c @@ -902,9 +902,9 @@ return 0; } -static int csk_mem_free(struct chtls_dev *cdev, struct sock *sk) +static bool csk_mem_free(struct chtls_dev *cdev, struct sock *sk) { - return (cdev->max_host_sndbuf - sk->sk_wmem_queued); + return (cdev->max_host_sndbuf - sk->sk_wmem_queued > 0); } static int csk_wait_memory(struct chtls_dev *cdev, @@ -1240,6 +1240,7 @@ copied = 0; csk = rcu_dereference_sk_user_data(sk); cdev = csk->cdev; + lock_sock(sk); timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); err = sk_stream_wait_connect(sk, &timeo); @@ -1584,6 +1585,7 @@ tp->urg_data = 0; if ((avail + offset) >= skb->len) { + struct sk_buff *next_skb; if (ULP_SKB_CB(skb)->flags & ULPCB_FLAG_TLS_HDR) { tp->copied_seq += skb->len; hws->rcvpld = skb->hdr_len; @@ -1594,8 +1596,10 @@ chtls_free_skb(sk, skb); buffers_freed++; hws->copied_seq = 0; - if (copied >= target && - !skb_peek(&sk->sk_receive_queue)) + next_skb = skb_peek(&sk->sk_receive_queue); + if (copied >= target && !next_skb) + break; + if (ULP_SKB_CB(next_skb)->flags & ULPCB_FLAG_TLS_HDR) break; } } while (len > 0); --- linux-5.8.0.orig/drivers/crypto/hisilicon/sec/sec_algs.c +++ linux-5.8.0/drivers/crypto/hisilicon/sec/sec_algs.c @@ -175,7 +175,8 @@ dma_addr_t *psec_sgl, struct scatterlist *sgl, int count, - struct sec_dev_info *info) + struct sec_dev_info *info, + gfp_t gfp) { struct sec_hw_sgl *sgl_current = NULL; struct sec_hw_sgl *sgl_next; @@ -190,7 +191,7 @@ sge_index = i % SEC_MAX_SGE_NUM; if (sge_index == 0) { sgl_next = dma_pool_zalloc(info->hw_sgl_pool, - GFP_KERNEL, &sgl_next_dma); + gfp, &sgl_next_dma); if (!sgl_next) { ret = -ENOMEM; goto err_free_hw_sgls; @@ -545,14 +546,14 @@ } static int sec_alg_alloc_and_calc_split_sizes(int length, size_t **split_sizes, - int *steps) + int *steps, gfp_t gfp) { size_t *sizes; int i; /* Split into suitable sized blocks */ *steps = roundup(length, SEC_REQ_LIMIT) / SEC_REQ_LIMIT; - sizes = kcalloc(*steps, sizeof(*sizes), GFP_KERNEL); + sizes = kcalloc(*steps, sizeof(*sizes), gfp); if (!sizes) return -ENOMEM; @@ -568,7 +569,7 @@ int steps, struct scatterlist ***splits, int **splits_nents, int sgl_len_in, - struct device *dev) + struct device *dev, gfp_t gfp) { int ret, count; @@ -576,12 +577,12 @@ if (!count) return -EINVAL; - *splits = kcalloc(steps, sizeof(struct scatterlist *), GFP_KERNEL); + *splits = kcalloc(steps, sizeof(struct scatterlist *), gfp); if (!*splits) { ret = -ENOMEM; goto err_unmap_sg; } - *splits_nents = kcalloc(steps, sizeof(int), GFP_KERNEL); + *splits_nents = kcalloc(steps, sizeof(int), gfp); if (!*splits_nents) { ret = -ENOMEM; goto err_free_splits; @@ -589,7 +590,7 @@ /* output the scatter list before and after this */ ret = sg_split(sgl, count, 0, steps, split_sizes, - *splits, *splits_nents, GFP_KERNEL); + *splits, *splits_nents, gfp); if (ret) { ret = -ENOMEM; goto err_free_splits_nents; @@ -630,13 +631,13 @@ int el_size, bool different_dest, struct scatterlist *sgl_in, int n_ents_in, struct scatterlist *sgl_out, int n_ents_out, - struct sec_dev_info *info) + struct sec_dev_info *info, gfp_t gfp) { struct sec_request_el *el; struct sec_bd_info *req; int ret; - el = kzalloc(sizeof(*el), GFP_KERNEL); + el = kzalloc(sizeof(*el), gfp); if (!el) return ERR_PTR(-ENOMEM); el->el_length = el_size; @@ -668,7 +669,7 @@ el->sgl_in = sgl_in; ret = sec_alloc_and_fill_hw_sgl(&el->in, &el->dma_in, el->sgl_in, - n_ents_in, info); + n_ents_in, info, gfp); if (ret) goto err_free_el; @@ -679,7 +680,7 @@ el->sgl_out = sgl_out; ret = sec_alloc_and_fill_hw_sgl(&el->out, &el->dma_out, el->sgl_out, - n_ents_out, info); + n_ents_out, info, gfp); if (ret) goto err_free_hw_sgl_in; @@ -720,6 +721,7 @@ int *splits_out_nents = NULL; struct sec_request_el *el, *temp; bool split = skreq->src != skreq->dst; + gfp_t gfp = skreq->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : GFP_ATOMIC; mutex_init(&sec_req->lock); sec_req->req_base = &skreq->base; @@ -728,13 +730,13 @@ sec_req->len_in = sg_nents(skreq->src); ret = sec_alg_alloc_and_calc_split_sizes(skreq->cryptlen, &split_sizes, - &steps); + &steps, gfp); if (ret) return ret; sec_req->num_elements = steps; ret = sec_map_and_split_sg(skreq->src, split_sizes, steps, &splits_in, &splits_in_nents, sec_req->len_in, - info->dev); + info->dev, gfp); if (ret) goto err_free_split_sizes; @@ -742,7 +744,7 @@ sec_req->len_out = sg_nents(skreq->dst); ret = sec_map_and_split_sg(skreq->dst, split_sizes, steps, &splits_out, &splits_out_nents, - sec_req->len_out, info->dev); + sec_req->len_out, info->dev, gfp); if (ret) goto err_unmap_in_sg; } @@ -775,7 +777,7 @@ splits_in[i], splits_in_nents[i], split ? splits_out[i] : NULL, split ? splits_out_nents[i] : 0, - info); + info, gfp); if (IS_ERR(el)) { ret = PTR_ERR(el); goto err_free_elements; --- linux-5.8.0.orig/drivers/crypto/hisilicon/sec2/sec_crypto.c +++ linux-5.8.0/drivers/crypto/hisilicon/sec2/sec_crypto.c @@ -332,11 +332,14 @@ ret = sec_alloc_pbuf_resource(dev, res); if (ret) { dev_err(dev, "fail to alloc pbuf dma resource!\n"); - goto alloc_fail; + goto alloc_pbuf_fail; } } return 0; +alloc_pbuf_fail: + if (ctx->alg_type == SEC_AEAD) + sec_free_mac_resource(dev, qp_ctx->res); alloc_fail: sec_free_civ_resource(dev, res); @@ -447,8 +450,10 @@ ctx->fake_req_limit = QM_Q_DEPTH >> 1; ctx->qp_ctx = kcalloc(sec->ctx_q_num, sizeof(struct sec_qp_ctx), GFP_KERNEL); - if (!ctx->qp_ctx) - return -ENOMEM; + if (!ctx->qp_ctx) { + ret = -ENOMEM; + goto err_destroy_qps; + } for (i = 0; i < sec->ctx_q_num; i++) { ret = sec_create_qp_ctx(&sec->qm, ctx, i, 0); @@ -457,12 +462,15 @@ } return 0; + err_sec_release_qp_ctx: for (i = i - 1; i >= 0; i--) sec_release_qp_ctx(ctx, &ctx->qp_ctx[i]); - sec_destroy_qps(ctx->qps, sec->ctx_q_num); kfree(ctx->qp_ctx); +err_destroy_qps: + sec_destroy_qps(ctx->qps, sec->ctx_q_num); + return ret; } --- linux-5.8.0.orig/drivers/crypto/hisilicon/sec2/sec_main.c +++ linux-5.8.0/drivers/crypto/hisilicon/sec2/sec_main.c @@ -30,9 +30,9 @@ #define SEC_SQE_SIZE 128 #define SEC_SQ_SIZE (SEC_SQE_SIZE * QM_Q_DEPTH) -#define SEC_PF_DEF_Q_NUM 64 +#define SEC_PF_DEF_Q_NUM 256 #define SEC_PF_DEF_Q_BASE 0 -#define SEC_CTX_Q_NUM_DEF 24 +#define SEC_CTX_Q_NUM_DEF 2 #define SEC_CTX_Q_NUM_MAX 32 #define SEC_CTRL_CNT_CLR_CE 0x301120 @@ -191,7 +191,7 @@ }; static u32 ctx_q_num = SEC_CTX_Q_NUM_DEF; module_param_cb(ctx_q_num, &sec_ctx_q_num_ops, &ctx_q_num, 0444); -MODULE_PARM_DESC(ctx_q_num, "Queue num in ctx (24 default, 2, 4, ..., 32)"); +MODULE_PARM_DESC(ctx_q_num, "Queue num in ctx (2 default, 2, 4, ..., 32)"); static const struct kernel_param_ops vfs_num_ops = { .set = vfs_num_set, --- linux-5.8.0.orig/drivers/crypto/inside-secure/safexcel.c +++ linux-5.8.0/drivers/crypto/inside-secure/safexcel.c @@ -1596,7 +1596,7 @@ priv->ring[i].rdr_req = devm_kcalloc(dev, EIP197_DEFAULT_RING_SIZE, - sizeof(priv->ring[i].rdr_req), + sizeof(*priv->ring[i].rdr_req), GFP_KERNEL); if (!priv->ring[i].rdr_req) return -ENOMEM; --- linux-5.8.0.orig/drivers/crypto/ixp4xx_crypto.c +++ linux-5.8.0/drivers/crypto/ixp4xx_crypto.c @@ -528,7 +528,7 @@ if (crypt_virt) { dma_free_coherent(dev, - NPE_QLEN_TOTAL * sizeof( struct crypt_ctl), + NPE_QLEN * sizeof(struct crypt_ctl), crypt_virt, crypt_phys); } } --- linux-5.8.0.orig/drivers/crypto/mediatek/mtk-platform.c +++ linux-5.8.0/drivers/crypto/mediatek/mtk-platform.c @@ -442,7 +442,7 @@ static int mtk_desc_ring_alloc(struct mtk_cryp *cryp) { struct mtk_ring **ring = cryp->ring; - int i, err = ENOMEM; + int i; for (i = 0; i < MTK_RING_MAX; i++) { ring[i] = kzalloc(sizeof(**ring), GFP_KERNEL); @@ -469,14 +469,14 @@ return 0; err_cleanup: - for (; i--; ) { + do { dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ, ring[i]->res_base, ring[i]->res_dma); dma_free_coherent(cryp->dev, MTK_DESC_RING_SZ, ring[i]->cmd_base, ring[i]->cmd_dma); kfree(ring[i]); - } - return err; + } while (i--); + return -ENOMEM; } static int mtk_crypto_probe(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/crypto/omap-aes.c +++ linux-5.8.0/drivers/crypto/omap-aes.c @@ -1138,7 +1138,7 @@ if (err < 0) { dev_err(dev, "%s: failed to get_sync(%d)\n", __func__, err); - goto err_res; + goto err_pm_disable; } omap_aes_dma_stop(dd); @@ -1247,6 +1247,7 @@ omap_aes_dma_cleanup(dd); err_irq: tasklet_kill(&dd->done_task); +err_pm_disable: pm_runtime_disable(dev); err_res: dd = NULL; --- linux-5.8.0.orig/drivers/crypto/omap-sham.c +++ linux-5.8.0/drivers/crypto/omap-sham.c @@ -456,6 +456,9 @@ struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); u32 val, mask; + if (likely(ctx->digcnt)) + omap_sham_write(dd, SHA_REG_DIGCNT(dd), ctx->digcnt); + /* * Setting ALGO_CONST only for the first iteration and * CLOSE_HASH only for the last one. Note that flags mode bits --- linux-5.8.0.orig/drivers/crypto/picoxcell_crypto.c +++ linux-5.8.0/drivers/crypto/picoxcell_crypto.c @@ -1666,11 +1666,6 @@ goto err_clk_put; } - ret = device_create_file(&pdev->dev, &dev_attr_stat_irq_thresh); - if (ret) - goto err_clk_disable; - - /* * Use an IRQ threshold of 50% as a default. This seems to be a * reasonable trade off of latency against throughput but can be @@ -1678,6 +1673,10 @@ */ engine->stat_irq_thresh = (engine->fifo_sz / 2); + ret = device_create_file(&pdev->dev, &dev_attr_stat_irq_thresh); + if (ret) + goto err_clk_disable; + /* * Configure the interrupts. We only use the STAT_CNT interrupt as we * only submit a new packet for processing when we complete another in --- linux-5.8.0.orig/drivers/crypto/qat/qat_common/qat_algs.c +++ linux-5.8.0/drivers/crypto/qat/qat_common/qat_algs.c @@ -55,6 +55,7 @@ #include #include #include +#include #include #include "adf_accel_devices.h" #include "adf_transport.h" @@ -870,6 +871,11 @@ struct icp_qat_fw_la_bulk_req *msg; int digst_size = crypto_aead_authsize(aead_tfm); int ret, ctr = 0; + u32 cipher_len; + + cipher_len = areq->cryptlen - digst_size; + if (cipher_len % AES_BLOCK_SIZE != 0) + return -EINVAL; ret = qat_alg_sgl_to_bufl(ctx->inst, areq->src, areq->dst, qat_req); if (unlikely(ret)) @@ -884,7 +890,7 @@ qat_req->req.comn_mid.src_data_addr = qat_req->buf.blp; qat_req->req.comn_mid.dest_data_addr = qat_req->buf.bloutp; cipher_param = (void *)&qat_req->req.serv_specif_rqpars; - cipher_param->cipher_length = areq->cryptlen - digst_size; + cipher_param->cipher_length = cipher_len; cipher_param->cipher_offset = areq->assoclen; memcpy(cipher_param->u.cipher_IV_array, areq->iv, AES_BLOCK_SIZE); auth_param = (void *)((uint8_t *)cipher_param + sizeof(*cipher_param)); @@ -913,6 +919,9 @@ uint8_t *iv = areq->iv; int ret, ctr = 0; + if (areq->cryptlen % AES_BLOCK_SIZE != 0) + return -EINVAL; + ret = qat_alg_sgl_to_bufl(ctx->inst, areq->src, areq->dst, qat_req); if (unlikely(ret)) return ret; @@ -1102,6 +1111,14 @@ return qat_alg_skcipher_encrypt(req); } +static int qat_alg_skcipher_xts_encrypt(struct skcipher_request *req) +{ + if (req->cryptlen < XTS_BLOCK_SIZE) + return -EINVAL; + + return qat_alg_skcipher_encrypt(req); +} + static int qat_alg_skcipher_decrypt(struct skcipher_request *req) { struct crypto_skcipher *stfm = crypto_skcipher_reqtfm(req); @@ -1161,6 +1178,15 @@ return qat_alg_skcipher_decrypt(req); } + +static int qat_alg_skcipher_xts_decrypt(struct skcipher_request *req) +{ + if (req->cryptlen < XTS_BLOCK_SIZE) + return -EINVAL; + + return qat_alg_skcipher_decrypt(req); +} + static int qat_alg_aead_init(struct crypto_aead *tfm, enum icp_qat_hw_auth_algo hash, const char *hash_name) @@ -1354,8 +1380,8 @@ .init = qat_alg_skcipher_init_tfm, .exit = qat_alg_skcipher_exit_tfm, .setkey = qat_alg_skcipher_xts_setkey, - .decrypt = qat_alg_skcipher_blk_decrypt, - .encrypt = qat_alg_skcipher_blk_encrypt, + .decrypt = qat_alg_skcipher_xts_decrypt, + .encrypt = qat_alg_skcipher_xts_encrypt, .min_keysize = 2 * AES_MIN_KEY_SIZE, .max_keysize = 2 * AES_MAX_KEY_SIZE, .ivsize = AES_BLOCK_SIZE, --- linux-5.8.0.orig/drivers/crypto/qat/qat_common/qat_hal.c +++ linux-5.8.0/drivers/crypto/qat/qat_common/qat_hal.c @@ -1189,7 +1189,7 @@ unsigned short mask; unsigned short dr_offset = 0x10; - status = ctx_enables = qat_hal_rd_ae_csr(handle, ae, CTX_ENABLES); + ctx_enables = qat_hal_rd_ae_csr(handle, ae, CTX_ENABLES); if (CE_INUSE_CONTEXTS & ctx_enables) { if (ctx & 0x1) { pr_err("QAT: bad 4-ctx mode,ctx=0x%x\n", ctx); --- linux-5.8.0.orig/drivers/crypto/qat/qat_common/qat_uclo.c +++ linux-5.8.0/drivers/crypto/qat/qat_common/qat_uclo.c @@ -332,13 +332,18 @@ } return 0; out_err: + /* Do not free the list head unless we allocated it. */ + tail_old = tail_old->next; + if (flag) { + kfree(*init_tab_base); + *init_tab_base = NULL; + } + while (tail_old) { mem_init = tail_old->next; kfree(tail_old); tail_old = mem_init; } - if (flag) - kfree(*init_tab_base); return -ENOMEM; } --- linux-5.8.0.orig/drivers/crypto/stm32/Kconfig +++ linux-5.8.0/drivers/crypto/stm32/Kconfig @@ -3,6 +3,7 @@ tristate "Support for STM32 crc accelerators" depends on ARCH_STM32 select CRYPTO_HASH + select CRC32 help This enables support for the CRC32 hw accelerator which can be found on STMicroelectronics STM32 SOC. --- linux-5.8.0.orig/drivers/crypto/stm32/stm32-crc32.c +++ linux-5.8.0/drivers/crypto/stm32/stm32-crc32.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -147,7 +148,6 @@ struct stm32_crc_desc_ctx *ctx = shash_desc_ctx(desc); struct stm32_crc_ctx *mctx = crypto_shash_ctx(desc->tfm); struct stm32_crc *crc; - unsigned long flags; crc = stm32_crc_get_next_crc(); if (!crc) @@ -155,7 +155,15 @@ pm_runtime_get_sync(crc->dev); - spin_lock_irqsave(&crc->lock, flags); + if (!spin_trylock(&crc->lock)) { + /* Hardware is busy, calculate crc32 by software */ + if (mctx->poly == CRC32_POLY_LE) + ctx->partial = crc32_le(ctx->partial, d8, length); + else + ctx->partial = __crc32c_le(ctx->partial, d8, length); + + goto pm_out; + } /* * Restore previously calculated CRC for this context as init value @@ -195,8 +203,9 @@ /* Store partial result */ ctx->partial = readl_relaxed(crc->regs + CRC_DR); - spin_unlock_irqrestore(&crc->lock, flags); + spin_unlock(&crc->lock); +pm_out: pm_runtime_mark_last_busy(crc->dev); pm_runtime_put_autosuspend(crc->dev); --- linux-5.8.0.orig/drivers/crypto/talitos.c +++ linux-5.8.0/drivers/crypto/talitos.c @@ -460,7 +460,7 @@ /* * locate current (offending) descriptor */ -static u32 current_desc_hdr(struct device *dev, int ch) +static __be32 current_desc_hdr(struct device *dev, int ch) { struct talitos_private *priv = dev_get_drvdata(dev); int tail, iter; @@ -478,7 +478,7 @@ iter = tail; while (priv->chan[ch].fifo[iter].dma_desc != cur_desc && - priv->chan[ch].fifo[iter].desc->next_desc != cur_desc) { + priv->chan[ch].fifo[iter].desc->next_desc != cpu_to_be32(cur_desc)) { iter = (iter + 1) & (priv->fifo_len - 1); if (iter == tail) { dev_err(dev, "couldn't locate current descriptor\n"); @@ -486,7 +486,7 @@ } } - if (priv->chan[ch].fifo[iter].desc->next_desc == cur_desc) { + if (priv->chan[ch].fifo[iter].desc->next_desc == cpu_to_be32(cur_desc)) { struct talitos_edesc *edesc; edesc = container_of(priv->chan[ch].fifo[iter].desc, @@ -501,13 +501,13 @@ /* * user diagnostics; report root cause of error based on execution unit status */ -static void report_eu_error(struct device *dev, int ch, u32 desc_hdr) +static void report_eu_error(struct device *dev, int ch, __be32 desc_hdr) { struct talitos_private *priv = dev_get_drvdata(dev); int i; if (!desc_hdr) - desc_hdr = in_be32(priv->chan[ch].reg + TALITOS_DESCBUF); + desc_hdr = cpu_to_be32(in_be32(priv->chan[ch].reg + TALITOS_DESCBUF)); switch (desc_hdr & DESC_HDR_SEL0_MASK) { case DESC_HDR_SEL0_AFEU: @@ -1092,11 +1092,12 @@ */ static int sg_to_link_tbl_offset(struct scatterlist *sg, int sg_count, unsigned int offset, int datalen, int elen, - struct talitos_ptr *link_tbl_ptr) + struct talitos_ptr *link_tbl_ptr, int align) { int n_sg = elen ? sg_count + 1 : sg_count; int count = 0; int cryptlen = datalen + elen; + int padding = ALIGN(cryptlen, align) - cryptlen; while (cryptlen && sg && n_sg--) { unsigned int len = sg_dma_len(sg); @@ -1120,7 +1121,7 @@ offset += datalen; } to_talitos_ptr(link_tbl_ptr + count, - sg_dma_address(sg) + offset, len, 0); + sg_dma_address(sg) + offset, sg_next(sg) ? len : len + padding, 0); to_talitos_ptr_ext_set(link_tbl_ptr + count, 0, 0); count++; cryptlen -= len; @@ -1143,10 +1144,11 @@ unsigned int len, struct talitos_edesc *edesc, struct talitos_ptr *ptr, int sg_count, unsigned int offset, int tbl_off, int elen, - bool force) + bool force, int align) { struct talitos_private *priv = dev_get_drvdata(dev); bool is_sec1 = has_ftr_sec1(priv); + int aligned_len = ALIGN(len, align); if (!src) { to_talitos_ptr(ptr, 0, 0, is_sec1); @@ -1154,22 +1156,22 @@ } to_talitos_ptr_ext_set(ptr, elen, is_sec1); if (sg_count == 1 && !force) { - to_talitos_ptr(ptr, sg_dma_address(src) + offset, len, is_sec1); + to_talitos_ptr(ptr, sg_dma_address(src) + offset, aligned_len, is_sec1); return sg_count; } if (is_sec1) { - to_talitos_ptr(ptr, edesc->dma_link_tbl + offset, len, is_sec1); + to_talitos_ptr(ptr, edesc->dma_link_tbl + offset, aligned_len, is_sec1); return sg_count; } sg_count = sg_to_link_tbl_offset(src, sg_count, offset, len, elen, - &edesc->link_tbl[tbl_off]); + &edesc->link_tbl[tbl_off], align); if (sg_count == 1 && !force) { /* Only one segment now, so no link tbl needed*/ copy_talitos_ptr(ptr, &edesc->link_tbl[tbl_off], is_sec1); return sg_count; } to_talitos_ptr(ptr, edesc->dma_link_tbl + - tbl_off * sizeof(struct talitos_ptr), len, is_sec1); + tbl_off * sizeof(struct talitos_ptr), aligned_len, is_sec1); to_talitos_ptr_ext_or(ptr, DESC_PTR_LNKTBL_JUMP, is_sec1); return sg_count; @@ -1181,7 +1183,7 @@ unsigned int offset, int tbl_off) { return talitos_sg_map_ext(dev, src, len, edesc, ptr, sg_count, offset, - tbl_off, 0, false); + tbl_off, 0, false, 1); } /* @@ -1250,7 +1252,7 @@ ret = talitos_sg_map_ext(dev, areq->src, cryptlen, edesc, &desc->ptr[4], sg_count, areq->assoclen, tbl_off, elen, - false); + false, 1); if (ret > 1) { tbl_off += ret; @@ -1270,7 +1272,7 @@ elen = 0; ret = talitos_sg_map_ext(dev, areq->dst, cryptlen, edesc, &desc->ptr[5], sg_count, areq->assoclen, tbl_off, elen, - is_ipsec_esp && !encrypt); + is_ipsec_esp && !encrypt, 1); tbl_off += ret; if (!encrypt && is_ipsec_esp) { @@ -1576,6 +1578,8 @@ bool sync_needed = false; struct talitos_private *priv = dev_get_drvdata(dev); bool is_sec1 = has_ftr_sec1(priv); + bool is_ctr = (desc->hdr & DESC_HDR_SEL0_MASK) == DESC_HDR_SEL0_AESU && + (desc->hdr & DESC_HDR_MODE0_AESU_MASK) == DESC_HDR_MODE0_AESU_CTR; /* first DWORD empty */ @@ -1596,8 +1600,8 @@ /* * cipher in */ - sg_count = talitos_sg_map(dev, areq->src, cryptlen, edesc, - &desc->ptr[3], sg_count, 0, 0); + sg_count = talitos_sg_map_ext(dev, areq->src, cryptlen, edesc, &desc->ptr[3], + sg_count, 0, 0, 0, false, is_ctr ? 16 : 1); if (sg_count > 1) sync_needed = true; @@ -2739,6 +2743,22 @@ }, { .type = CRYPTO_ALG_TYPE_SKCIPHER, .alg.skcipher = { + .base.cra_name = "ctr(aes)", + .base.cra_driver_name = "ctr-aes-talitos", + .base.cra_blocksize = 1, + .base.cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_ALLOCATES_MEMORY, + .min_keysize = AES_MIN_KEY_SIZE, + .max_keysize = AES_MAX_KEY_SIZE, + .ivsize = AES_BLOCK_SIZE, + .setkey = skcipher_aes_setkey, + }, + .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU | + DESC_HDR_SEL0_AESU | + DESC_HDR_MODE0_AESU_CTR, + }, + { .type = CRYPTO_ALG_TYPE_SKCIPHER, + .alg.skcipher = { .base.cra_name = "ecb(des)", .base.cra_driver_name = "ecb-des-talitos", .base.cra_blocksize = DES_BLOCK_SIZE, @@ -3138,6 +3158,12 @@ t_alg->algt.alg.skcipher.setkey ?: skcipher_setkey; t_alg->algt.alg.skcipher.encrypt = skcipher_encrypt; t_alg->algt.alg.skcipher.decrypt = skcipher_decrypt; + if (!strcmp(alg->cra_name, "ctr(aes)") && !has_ftr_sec1(priv) && + DESC_TYPE(t_alg->algt.desc_hdr_template) != + DESC_TYPE(DESC_HDR_TYPE_AESU_CTR_NONSNOOP)) { + devm_kfree(dev, t_alg); + return ERR_PTR(-ENOTSUPP); + } break; case CRYPTO_ALG_TYPE_AEAD: alg = &t_alg->algt.alg.aead.base; --- linux-5.8.0.orig/drivers/crypto/talitos.h +++ linux-5.8.0/drivers/crypto/talitos.h @@ -344,6 +344,7 @@ /* primary execution unit mode (MODE0) and derivatives */ #define DESC_HDR_MODE0_ENCRYPT cpu_to_be32(0x00100000) +#define DESC_HDR_MODE0_AESU_MASK cpu_to_be32(0x00600000) #define DESC_HDR_MODE0_AESU_CBC cpu_to_be32(0x00200000) #define DESC_HDR_MODE0_AESU_CTR cpu_to_be32(0x00600000) #define DESC_HDR_MODE0_DEU_CBC cpu_to_be32(0x00400000) --- linux-5.8.0.orig/drivers/dax/super.c +++ linux-5.8.0/drivers/dax/super.c @@ -318,11 +318,15 @@ bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev, int blocksize, sector_t start, sector_t len) { + if (!dax_dev) + return false; + if (!dax_alive(dax_dev)) return false; return dax_dev->ops->dax_supported(dax_dev, bdev, blocksize, start, len); } +EXPORT_SYMBOL_GPL(dax_supported); size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, size_t bytes, struct iov_iter *i) @@ -740,6 +744,7 @@ static void __exit dax_core_exit(void) { + dax_bus_exit(); unregister_chrdev_region(dax_devt, MINORMASK+1); ida_destroy(&dax_minor_ida); dax_fs_exit(); --- linux-5.8.0.orig/drivers/devfreq/devfreq.c +++ linux-5.8.0/drivers/devfreq/devfreq.c @@ -1657,8 +1657,7 @@ unsigned long cur_freq, min_freq, max_freq; unsigned int polling_ms; - seq_printf(s, "%-30s %-10s %-10s %-15s %10s %12s %12s %12s\n", - "dev_name", + seq_printf(s, "%-30s %-30s %-15s %10s %12s %12s %12s\n", "dev", "parent_dev", "governor", @@ -1666,10 +1665,9 @@ "cur_freq_Hz", "min_freq_Hz", "max_freq_Hz"); - seq_printf(s, "%30s %10s %10s %15s %10s %12s %12s %12s\n", + seq_printf(s, "%30s %30s %15s %10s %12s %12s %12s\n", + "------------------------------", "------------------------------", - "----------", - "----------", "---------------", "----------", "------------", @@ -1692,14 +1690,13 @@ #endif mutex_lock(&devfreq->lock); - cur_freq = devfreq->previous_freq, + cur_freq = devfreq->previous_freq; get_freq_range(devfreq, &min_freq, &max_freq); - polling_ms = devfreq->profile->polling_ms, + polling_ms = devfreq->profile->polling_ms; mutex_unlock(&devfreq->lock); seq_printf(s, - "%-30s %-10s %-10s %-15s %10d %12ld %12ld %12ld\n", - dev_name(devfreq->dev.parent), + "%-30s %-30s %-15s %10d %12ld %12ld %12ld\n", dev_name(&devfreq->dev), p_devfreq ? dev_name(&p_devfreq->dev) : "null", devfreq->governor_name, --- linux-5.8.0.orig/drivers/devfreq/rk3399_dmc.c +++ linux-5.8.0/drivers/devfreq/rk3399_dmc.c @@ -95,18 +95,20 @@ mutex_lock(&dmcfreq->lock); - if (target_rate >= dmcfreq->odt_dis_freq) - odt_enable = true; - - /* - * This makes a SMC call to the TF-A to set the DDR PD (power-down) - * timings and to enable or disable the ODT (on-die termination) - * resistors. - */ - arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, dmcfreq->odt_pd_arg0, - dmcfreq->odt_pd_arg1, - ROCKCHIP_SIP_CONFIG_DRAM_SET_ODT_PD, - odt_enable, 0, 0, 0, &res); + if (dmcfreq->regmap_pmu) { + if (target_rate >= dmcfreq->odt_dis_freq) + odt_enable = true; + + /* + * This makes a SMC call to the TF-A to set the DDR PD + * (power-down) timings and to enable or disable the + * ODT (on-die termination) resistors. + */ + arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, dmcfreq->odt_pd_arg0, + dmcfreq->odt_pd_arg1, + ROCKCHIP_SIP_CONFIG_DRAM_SET_ODT_PD, + odt_enable, 0, 0, 0, &res); + } /* * If frequency scaling from low to high, adjust voltage first. @@ -371,13 +373,14 @@ } node = of_parse_phandle(np, "rockchip,pmu", 0); - if (node) { - data->regmap_pmu = syscon_node_to_regmap(node); - of_node_put(node); - if (IS_ERR(data->regmap_pmu)) { - ret = PTR_ERR(data->regmap_pmu); - goto err_edev; - } + if (!node) + goto no_pmu; + + data->regmap_pmu = syscon_node_to_regmap(node); + of_node_put(node); + if (IS_ERR(data->regmap_pmu)) { + ret = PTR_ERR(data->regmap_pmu); + goto err_edev; } regmap_read(data->regmap_pmu, RK3399_PMUGRF_OS_REG2, &val); @@ -399,6 +402,7 @@ goto err_edev; }; +no_pmu: arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, 0, 0, ROCKCHIP_SIP_CONFIG_DRAM_INIT, 0, 0, 0, 0, &res); --- linux-5.8.0.orig/drivers/devfreq/tegra30-devfreq.c +++ linux-5.8.0/drivers/devfreq/tegra30-devfreq.c @@ -836,7 +836,8 @@ rate = clk_round_rate(tegra->emc_clock, ULONG_MAX); if (rate < 0) { dev_err(&pdev->dev, "Failed to round clock rate: %ld\n", rate); - return rate; + err = rate; + goto disable_clk; } tegra->max_freq = rate / KHZ; @@ -897,6 +898,7 @@ dev_pm_opp_remove_all_dynamic(&pdev->dev); reset_control_reset(tegra->reset); +disable_clk: clk_disable_unprepare(tegra->clock); return err; --- linux-5.8.0.orig/drivers/dma-buf/dma-buf.c +++ linux-5.8.0/drivers/dma-buf/dma-buf.c @@ -59,6 +59,8 @@ struct dma_buf *dmabuf; dmabuf = dentry->d_fsdata; + if (unlikely(!dmabuf)) + return; BUG_ON(dmabuf->vmapping_counter); @@ -74,10 +76,6 @@ dmabuf->ops->release(dmabuf); - mutex_lock(&db_list.lock); - list_del(&dmabuf->list_node); - mutex_unlock(&db_list.lock); - if (dmabuf->resv == (struct dma_resv *)&dmabuf[1]) dma_resv_fini(dmabuf->resv); @@ -86,6 +84,22 @@ kfree(dmabuf); } +static int dma_buf_file_release(struct inode *inode, struct file *file) +{ + struct dma_buf *dmabuf; + + if (!is_dma_buf_file(file)) + return -EINVAL; + + dmabuf = file->private_data; + + mutex_lock(&db_list.lock); + list_del(&dmabuf->list_node); + mutex_unlock(&db_list.lock); + + return 0; +} + static const struct dentry_operations dma_buf_dentry_ops = { .d_dname = dmabuffs_dname, .d_release = dma_buf_release, @@ -411,6 +425,7 @@ } static const struct file_operations dma_buf_fops = { + .release = dma_buf_file_release, .mmap = dma_buf_mmap_internal, .llseek = dma_buf_llseek, .poll = dma_buf_poll, --- linux-5.8.0.orig/drivers/dma-buf/dma-resv.c +++ linux-5.8.0/drivers/dma-buf/dma-resv.c @@ -194,7 +194,7 @@ max = max(old->shared_count + num_fences, old->shared_max * 2); } else { - max = 4; + max = max(4ul, roundup_pow_of_two(num_fences)); } new = dma_resv_list_alloc(max); --- linux-5.8.0.orig/drivers/dma-buf/st-dma-fence-chain.c +++ linux-5.8.0/drivers/dma-buf/st-dma-fence-chain.c @@ -318,15 +318,16 @@ goto err; } - if (fence && fence != fc.chains[1]) { + /* + * We signaled the middle fence (2) of the 1-2-3 chain. The behavior + * of the dma-fence-chain is to make us wait for all the fences up to + * the point we want. Since fence 1 is still not signaled, this what + * we should get as fence to wait upon (fence 2 being garbage + * collected during the traversal of the chain). + */ + if (fence != fc.chains[0]) { pr_err("Incorrect chain-fence.seqno:%lld reported for completed seqno:2\n", - fence->seqno); - - dma_fence_get(fence); - err = dma_fence_chain_find_seqno(&fence, 2); - dma_fence_put(fence); - if (err) - pr_err("Reported %d for finding self!\n", err); + fence ? fence->seqno : 0); err = -EINVAL; } @@ -415,20 +416,18 @@ if (!fence) goto signal; - err = dma_fence_chain_find_seqno(&fence, seqno); - if (err) { - pr_err("Reported an invalid fence for find-self:%d\n", - seqno); - dma_fence_put(fence); - break; - } - - if (fence->seqno < seqno) { - pr_err("Reported an earlier fence.seqno:%lld for seqno:%d\n", - fence->seqno, seqno); - err = -EINVAL; - dma_fence_put(fence); - break; + /* + * We can only find ourselves if we are on fence we were + * looking for. + */ + if (fence->seqno == seqno) { + err = dma_fence_chain_find_seqno(&fence, seqno); + if (err) { + pr_err("Reported an invalid fence for find-self:%d\n", + seqno); + dma_fence_put(fence); + break; + } } dma_fence_put(fence); --- linux-5.8.0.orig/drivers/dma/Kconfig +++ linux-5.8.0/drivers/dma/Kconfig @@ -285,6 +285,7 @@ config INTEL_IDXD tristate "Intel Data Accelerators support" depends on PCI && X86_64 + depends on PCI_MSI select DMA_ENGINE select SBITMAP help --- linux-5.8.0.orig/drivers/dma/acpi-dma.c +++ linux-5.8.0/drivers/dma/acpi-dma.c @@ -135,11 +135,13 @@ if (ret < 0) { dev_warn(&adev->dev, "error in parsing resource group\n"); - return; + break; } grp = (struct acpi_csrt_group *)((void *)grp + grp->length); } + + acpi_put_table((struct acpi_table_header *)csrt); } /** --- linux-5.8.0.orig/drivers/dma/at_hdmac.c +++ linux-5.8.0/drivers/dma/at_hdmac.c @@ -1650,13 +1650,17 @@ return NULL; dmac_pdev = of_find_device_by_node(dma_spec->np); + if (!dmac_pdev) + return NULL; dma_cap_zero(mask); dma_cap_set(DMA_SLAVE, mask); atslave = kmalloc(sizeof(*atslave), GFP_KERNEL); - if (!atslave) + if (!atslave) { + put_device(&dmac_pdev->dev); return NULL; + } atslave->cfg = ATC_DST_H2SEL_HW | ATC_SRC_H2SEL_HW; /* @@ -1685,8 +1689,11 @@ atslave->dma_dev = &dmac_pdev->dev; chan = dma_request_channel(mask, at_dma_filter, atslave); - if (!chan) + if (!chan) { + put_device(&dmac_pdev->dev); + kfree(atslave); return NULL; + } atchan = to_at_dma_chan(chan); atchan->per_if = dma_spec->args[0] & 0xff; --- linux-5.8.0.orig/drivers/dma/dma-jz4780.c +++ linux-5.8.0/drivers/dma/dma-jz4780.c @@ -639,11 +639,11 @@ unsigned long flags; unsigned long residue = 0; + spin_lock_irqsave(&jzchan->vchan.lock, flags); + status = dma_cookie_status(chan, cookie, txstate); if ((status == DMA_COMPLETE) || (txstate == NULL)) - return status; - - spin_lock_irqsave(&jzchan->vchan.lock, flags); + goto out_unlock_irqrestore; vdesc = vchan_find_desc(&jzchan->vchan, cookie); if (vdesc) { @@ -660,6 +660,7 @@ && jzchan->desc->status & (JZ_DMA_DCS_AR | JZ_DMA_DCS_HLT)) status = DMA_ERROR; +out_unlock_irqrestore: spin_unlock_irqrestore(&jzchan->vchan.lock, flags); return status; } @@ -879,24 +880,11 @@ return -EINVAL; } - ret = platform_get_irq(pdev, 0); - if (ret < 0) - return ret; - - jzdma->irq = ret; - - ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev), - jzdma); - if (ret) { - dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); - return ret; - } - jzdma->clk = devm_clk_get(dev, NULL); if (IS_ERR(jzdma->clk)) { dev_err(dev, "failed to get clock\n"); ret = PTR_ERR(jzdma->clk); - goto err_free_irq; + return ret; } clk_prepare_enable(jzdma->clk); @@ -949,10 +937,23 @@ jzchan->vchan.desc_free = jz4780_dma_desc_free; } + ret = platform_get_irq(pdev, 0); + if (ret < 0) + goto err_disable_clk; + + jzdma->irq = ret; + + ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev), + jzdma); + if (ret) { + dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); + goto err_disable_clk; + } + ret = dmaenginem_async_device_register(dd); if (ret) { dev_err(dev, "failed to register device\n"); - goto err_disable_clk; + goto err_free_irq; } /* Register with OF DMA helpers. */ @@ -960,17 +961,17 @@ jzdma); if (ret) { dev_err(dev, "failed to register OF DMA controller\n"); - goto err_disable_clk; + goto err_free_irq; } dev_info(dev, "JZ4780 DMA controller initialised\n"); return 0; -err_disable_clk: - clk_disable_unprepare(jzdma->clk); - err_free_irq: free_irq(jzdma->irq, jzdma); + +err_disable_clk: + clk_disable_unprepare(jzdma->clk); return ret; } --- linux-5.8.0.orig/drivers/dma/dmaengine.c +++ linux-5.8.0/drivers/dma/dmaengine.c @@ -1043,16 +1043,15 @@ static int __dma_async_device_channel_register(struct dma_device *device, struct dma_chan *chan) { - int rc = 0; + int rc; chan->local = alloc_percpu(typeof(*chan->local)); if (!chan->local) - goto err_out; + return -ENOMEM; chan->dev = kzalloc(sizeof(*chan->dev), GFP_KERNEL); if (!chan->dev) { - free_percpu(chan->local); - chan->local = NULL; - goto err_out; + rc = -ENOMEM; + goto err_free_local; } /* @@ -1065,7 +1064,8 @@ if (chan->chan_id < 0) { pr_err("%s: unable to alloc ida for chan: %d\n", __func__, chan->chan_id); - goto err_out; + rc = chan->chan_id; + goto err_free_dev; } chan->dev->device.class = &dma_devclass; @@ -1086,9 +1086,10 @@ mutex_lock(&device->chan_mutex); ida_free(&device->chan_ida, chan->chan_id); mutex_unlock(&device->chan_mutex); - err_out: - free_percpu(chan->local); + err_free_dev: kfree(chan->dev); + err_free_local: + free_percpu(chan->local); return rc; } @@ -1113,7 +1114,6 @@ "%s called while %d clients hold a reference\n", __func__, chan->client_count); mutex_lock(&dma_list_mutex); - list_del(&chan->device_node); device->chancnt--; chan->dev->chan = NULL; mutex_unlock(&dma_list_mutex); --- linux-5.8.0.orig/drivers/dma/dmatest.c +++ linux-5.8.0/drivers/dma/dmatest.c @@ -129,6 +129,7 @@ * @nr_channels: number of channels under test * @lock: access protection to the fields of this structure * @did_init: module has been initialized completely + * @last_error: test has faced configuration issues */ static struct dmatest_info { /* Test parameters */ @@ -137,6 +138,7 @@ /* Internal state */ struct list_head channels; unsigned int nr_channels; + int last_error; struct mutex lock; bool did_init; } test_info = { @@ -1175,10 +1177,22 @@ return ret; } else if (dmatest_run) { if (!is_threaded_test_pending(info)) { - pr_info("No channels configured, continue with any\n"); - if (!is_threaded_test_run(info)) - stop_threaded_test(info); - add_threaded_test(info); + /* + * We have nothing to run. This can be due to: + */ + ret = info->last_error; + if (ret) { + /* 1) Misconfiguration */ + pr_err("Channel misconfigured, can't continue\n"); + mutex_unlock(&info->lock); + return ret; + } else { + /* 2) We rely on defaults */ + pr_info("No channels configured, continue with any\n"); + if (!is_threaded_test_run(info)) + stop_threaded_test(info); + add_threaded_test(info); + } } start_threaded_tests(info); } else { @@ -1195,7 +1209,7 @@ struct dmatest_info *info = &test_info; struct dmatest_chan *dtc; char chan_reset_val[20]; - int ret = 0; + int ret; mutex_lock(&info->lock); ret = param_set_copystring(val, kp); @@ -1226,15 +1240,14 @@ add_threaded_test(info); /* Check if channel was added successfully */ - dtc = list_last_entry(&info->channels, struct dmatest_chan, node); - - if (dtc->chan) { + if (!list_empty(&info->channels)) { /* * if new channel was not successfully added, revert the * "test_channel" string to the name of the last successfully * added channel. exception for when users issues empty string * to channel parameter. */ + dtc = list_last_entry(&info->channels, struct dmatest_chan, node); if ((strcmp(dma_chan_name(dtc->chan), strim(test_channel)) != 0) && (strcmp("", strim(test_channel)) != 0)) { ret = -EINVAL; @@ -1250,12 +1263,14 @@ goto add_chan_err; } + info->last_error = ret; mutex_unlock(&info->lock); return ret; add_chan_err: param_set_copystring(chan_reset_val, kp); + info->last_error = ret; mutex_unlock(&info->lock); return ret; --- linux-5.8.0.orig/drivers/dma/dw-edma/dw-edma-core.c +++ linux-5.8.0/drivers/dma/dw-edma/dw-edma-core.c @@ -86,12 +86,12 @@ if (desc->chunk) { /* Create and add new element into the linked list */ - desc->chunks_alloc++; - list_add_tail(&chunk->list, &desc->chunk->list); if (!dw_edma_alloc_burst(chunk)) { kfree(chunk); return NULL; } + desc->chunks_alloc++; + list_add_tail(&chunk->list, &desc->chunk->list); } else { /* List head */ chunk->burst = NULL; @@ -405,7 +405,7 @@ if (xfer->cyclic) { burst->dar = xfer->xfer.cyclic.paddr; } else { - burst->dar = sg_dma_address(sg); + burst->dar = dst_addr; /* Unlike the typical assumption by other * drivers/IPs the peripheral memory isn't * a FIFO memory, in this case, it's a @@ -413,14 +413,13 @@ * and destination addresses are increased * by the same portion (data length) */ - src_addr += sg_dma_len(sg); } } else { burst->dar = dst_addr; if (xfer->cyclic) { burst->sar = xfer->xfer.cyclic.paddr; } else { - burst->sar = sg_dma_address(sg); + burst->sar = src_addr; /* Unlike the typical assumption by other * drivers/IPs the peripheral memory isn't * a FIFO memory, in this case, it's a @@ -428,12 +427,14 @@ * and destination addresses are increased * by the same portion (data length) */ - dst_addr += sg_dma_len(sg); } } - if (!xfer->cyclic) + if (!xfer->cyclic) { + src_addr += sg_dma_len(sg); + dst_addr += sg_dma_len(sg); sg = sg_next(sg); + } } return vchan_tx_prep(&chan->vc, &desc->vd, xfer->flags); --- linux-5.8.0.orig/drivers/dma/dw/core.c +++ linux-5.8.0/drivers/dma/dw/core.c @@ -772,6 +772,10 @@ if (dws->dma_dev != chan->device->dev) return false; + /* permit channels in accordance with the channels mask */ + if (dws->channels && !(dws->channels & dwc->mask)) + return false; + /* We have to copy data since dws can be temporary storage */ memcpy(&dwc->dws, dws, sizeof(struct dw_dma_slave)); --- linux-5.8.0.orig/drivers/dma/dw/dw.c +++ linux-5.8.0/drivers/dma/dw/dw.c @@ -14,7 +14,7 @@ static void dw_dma_initialize_chan(struct dw_dma_chan *dwc) { struct dw_dma *dw = to_dw_dma(dwc->chan.device); - u32 cfghi = DWC_CFGH_FIFO_MODE; + u32 cfghi = is_slave_direction(dwc->direction) ? 0 : DWC_CFGH_FIFO_MODE; u32 cfglo = DWC_CFGL_CH_PRIOR(dwc->priority); bool hs_polarity = dwc->dws.hs_polarity; --- linux-5.8.0.orig/drivers/dma/dw/of.c +++ linux-5.8.0/drivers/dma/dw/of.c @@ -22,18 +22,21 @@ }; dma_cap_mask_t cap; - if (dma_spec->args_count != 3) + if (dma_spec->args_count < 3 || dma_spec->args_count > 4) return NULL; slave.src_id = dma_spec->args[0]; slave.dst_id = dma_spec->args[0]; slave.m_master = dma_spec->args[1]; slave.p_master = dma_spec->args[2]; + if (dma_spec->args_count >= 4) + slave.channels = dma_spec->args[3]; if (WARN_ON(slave.src_id >= DW_DMA_MAX_NR_REQUESTS || slave.dst_id >= DW_DMA_MAX_NR_REQUESTS || slave.m_master >= dw->pdata->nr_masters || - slave.p_master >= dw->pdata->nr_masters)) + slave.p_master >= dw->pdata->nr_masters || + slave.channels >= BIT(dw->pdata->nr_channels))) return NULL; dma_cap_zero(cap); --- linux-5.8.0.orig/drivers/dma/fsldma.c +++ linux-5.8.0/drivers/dma/fsldma.c @@ -1214,6 +1214,7 @@ { struct fsldma_device *fdev; struct device_node *child; + unsigned int i; int err; fdev = kzalloc(sizeof(*fdev), GFP_KERNEL); @@ -1292,6 +1293,10 @@ return 0; out_free_fdev: + for (i = 0; i < FSL_DMA_MAX_CHANS_PER_DEVICE; i++) { + if (fdev->chan[i]) + fsl_dma_chan_remove(fdev->chan[i]); + } irq_dispose_mapping(fdev->irq); iounmap(fdev->regs); out_free: @@ -1314,6 +1319,7 @@ if (fdev->chan[i]) fsl_dma_chan_remove(fdev->chan[i]); } + irq_dispose_mapping(fdev->irq); iounmap(fdev->regs); kfree(fdev); --- linux-5.8.0.orig/drivers/dma/fsldma.h +++ linux-5.8.0/drivers/dma/fsldma.h @@ -205,10 +205,10 @@ #else static u64 fsl_ioread64(const u64 __iomem *addr) { - u32 fsl_addr = lower_32_bits(addr); - u64 fsl_addr_hi = (u64)in_le32((u32 *)(fsl_addr + 1)) << 32; + u32 val_lo = in_le32((u32 __iomem *)addr); + u32 val_hi = in_le32((u32 __iomem *)addr + 1); - return fsl_addr_hi | in_le32((u32 *)fsl_addr); + return ((u64)val_hi << 32) + val_lo; } static void fsl_iowrite64(u64 val, u64 __iomem *addr) @@ -219,10 +219,10 @@ static u64 fsl_ioread64be(const u64 __iomem *addr) { - u32 fsl_addr = lower_32_bits(addr); - u64 fsl_addr_hi = (u64)in_be32((u32 *)fsl_addr) << 32; + u32 val_hi = in_be32((u32 __iomem *)addr); + u32 val_lo = in_be32((u32 __iomem *)addr + 1); - return fsl_addr_hi | in_be32((u32 *)(fsl_addr + 1)); + return ((u64)val_hi << 32) + val_lo; } static void fsl_iowrite64be(u64 val, u64 __iomem *addr) --- linux-5.8.0.orig/drivers/dma/hsu/pci.c +++ linux-5.8.0/drivers/dma/hsu/pci.c @@ -26,22 +26,12 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev) { struct hsu_dma_chip *chip = dev; - struct pci_dev *pdev = to_pci_dev(chip->dev); u32 dmaisr; u32 status; unsigned short i; int ret = 0; int err; - /* - * On Intel Tangier B0 and Anniedale the interrupt line, disregarding - * to have different numbers, is shared between HSU DMA and UART IPs. - * Thus on such SoCs we are expecting that IRQ handler is called in - * UART driver only. - */ - if (pdev->device == PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA) - return IRQ_HANDLED; - dmaisr = readl(chip->regs + HSU_PCI_DMAISR); for (i = 0; i < chip->hsu->nr_channels; i++) { if (dmaisr & 0x1) { @@ -105,6 +95,17 @@ if (ret) goto err_register_irq; + /* + * On Intel Tangier B0 and Anniedale the interrupt line, disregarding + * to have different numbers, is shared between HSU DMA and UART IPs. + * Thus on such SoCs we are expecting that IRQ handler is called in + * UART driver only. Instead of handling the spurious interrupt + * from HSU DMA here and waste CPU time and delay HSU UART interrupt + * handling, disable the interrupt entirely. + */ + if (pdev->device == PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA) + disable_irq_nosync(chip->irq); + pci_set_drvdata(pdev, chip); return 0; --- linux-5.8.0.orig/drivers/dma/idxd/device.c +++ linux-5.8.0/drivers/dma/idxd/device.c @@ -303,7 +303,7 @@ resource_size_t start; start = pci_resource_start(pdev, IDXD_WQ_BAR); - start = start + wq->id * IDXD_PORTAL_SIZE; + start += idxd_get_wq_portal_full_offset(wq->id, IDXD_PORTAL_LIMITED); wq->dportal = devm_ioremap(dev, start, IDXD_PORTAL_SIZE); if (!wq->dportal) @@ -327,7 +327,7 @@ int i, wq_offset; lockdep_assert_held(&idxd->dev_lock); - memset(&wq->wqcfg, 0, sizeof(wq->wqcfg)); + memset(wq->wqcfg, 0, idxd->wqcfg_size); wq->type = IDXD_WQT_NONE; wq->size = 0; wq->group = NULL; @@ -336,8 +336,8 @@ clear_bit(WQ_FLAG_DEDICATED, &wq->flags); memset(wq->name, 0, WQ_NAME_SIZE); - for (i = 0; i < 8; i++) { - wq_offset = idxd->wqcfg_offset + wq->id * 32 + i * sizeof(u32); + for (i = 0; i < WQCFG_STRIDES(idxd); i++) { + wq_offset = WQCFG_OFFSET(idxd, wq->id, i); iowrite32(0, idxd->reg_base + wq_offset); dev_dbg(dev, "WQ[%d][%d][%#x]: %#x\n", wq->id, i, wq_offset, @@ -557,10 +557,10 @@ if (!wq->group) return 0; - memset(&wq->wqcfg, 0, sizeof(union wqcfg)); + memset(wq->wqcfg, 0, idxd->wqcfg_size); /* byte 0-3 */ - wq->wqcfg.wq_size = wq->size; + wq->wqcfg->wq_size = wq->size; if (wq->size == 0) { dev_warn(dev, "Incorrect work queue size: 0\n"); @@ -568,22 +568,21 @@ } /* bytes 4-7 */ - wq->wqcfg.wq_thresh = wq->threshold; + wq->wqcfg->wq_thresh = wq->threshold; /* byte 8-11 */ - wq->wqcfg.priv = !!(wq->type == IDXD_WQT_KERNEL); - wq->wqcfg.mode = 1; - - wq->wqcfg.priority = wq->priority; + wq->wqcfg->priv = !!(wq->type == IDXD_WQT_KERNEL); + wq->wqcfg->mode = 1; + wq->wqcfg->priority = wq->priority; /* bytes 12-15 */ - wq->wqcfg.max_xfer_shift = idxd->hw.gen_cap.max_xfer_shift; - wq->wqcfg.max_batch_shift = idxd->hw.gen_cap.max_batch_shift; + wq->wqcfg->max_xfer_shift = idxd->hw.gen_cap.max_xfer_shift; + wq->wqcfg->max_batch_shift = idxd->hw.gen_cap.max_batch_shift; dev_dbg(dev, "WQ %d CFGs\n", wq->id); - for (i = 0; i < 8; i++) { - wq_offset = idxd->wqcfg_offset + wq->id * 32 + i * sizeof(u32); - iowrite32(wq->wqcfg.bits[i], idxd->reg_base + wq_offset); + for (i = 0; i < WQCFG_STRIDES(idxd); i++) { + wq_offset = WQCFG_OFFSET(idxd, wq->id, i); + iowrite32(wq->wqcfg->bits[i], idxd->reg_base + wq_offset); dev_dbg(dev, "WQ[%d][%d][%#x]: %#x\n", wq->id, i, wq_offset, ioread32(idxd->reg_base + wq_offset)); --- linux-5.8.0.orig/drivers/dma/idxd/dma.c +++ linux-5.8.0/drivers/dma/idxd/dma.c @@ -174,6 +174,7 @@ INIT_LIST_HEAD(&dma->channels); dma->dev = &idxd->pdev->dev; + dma_cap_set(DMA_PRIVATE, dma->cap_mask); dma->device_release = idxd_dma_release; if (idxd->hw.opcap.bits[0] & IDXD_OPCAP_MEMMOVE) { @@ -213,5 +214,8 @@ void idxd_unregister_dma_channel(struct idxd_wq *wq) { - dma_async_device_channel_unregister(&wq->idxd->dma_dev, &wq->dma_chan); + struct dma_chan *chan = &wq->dma_chan; + + dma_async_device_channel_unregister(&wq->idxd->dma_dev, chan); + list_del(&chan->device_node); } --- linux-5.8.0.orig/drivers/dma/idxd/idxd.h +++ linux-5.8.0/drivers/dma/idxd/idxd.h @@ -103,7 +103,7 @@ u32 priority; enum idxd_wq_state state; unsigned long flags; - union wqcfg wqcfg; + union wqcfg *wqcfg; atomic_t dq_count; /* dedicated queue flow control */ u32 vec_ptr; /* interrupt steering */ struct dsa_hw_desc **hw_descs; @@ -181,6 +181,7 @@ int max_wq_size; int token_limit; int nr_tokens; /* non-reserved tokens */ + unsigned int wqcfg_size; union sw_err_reg sw_err; --- linux-5.8.0.orig/drivers/dma/idxd/init.c +++ linux-5.8.0/drivers/dma/idxd/init.c @@ -189,6 +189,9 @@ atomic_set(&wq->dq_count, 0); init_waitqueue_head(&wq->submit_waitq); wq->idxd_cdev.minor = -1; + wq->wqcfg = devm_kzalloc(dev, idxd->wqcfg_size, GFP_KERNEL); + if (!wq->wqcfg) + return -ENOMEM; rc = percpu_init_rwsem(&wq->submit_lock); if (rc < 0) { idxd_wqs_free_lock(idxd); @@ -263,6 +266,8 @@ dev_dbg(dev, "total workqueue size: %u\n", idxd->max_wq_size); idxd->max_wqs = idxd->hw.wq_cap.num_wqs; dev_dbg(dev, "max workqueues: %u\n", idxd->max_wqs); + idxd->wqcfg_size = 1 << (idxd->hw.wq_cap.wqcfg_size + IDXD_WQCFG_MIN); + dev_dbg(dev, "wqcfg size: %u\n", idxd->wqcfg_size); /* reading operation capabilities */ for (i = 0; i < 4; i++) { --- linux-5.8.0.orig/drivers/dma/idxd/registers.h +++ linux-5.8.0/drivers/dma/idxd/registers.h @@ -8,7 +8,7 @@ #define IDXD_MMIO_BAR 0 #define IDXD_WQ_BAR 2 -#define IDXD_PORTAL_SIZE 0x4000 +#define IDXD_PORTAL_SIZE PAGE_SIZE /* MMIO Device BAR0 Registers */ #define IDXD_VER_OFFSET 0x00 @@ -43,7 +43,8 @@ struct { u64 total_wq_size:16; u64 num_wqs:8; - u64 rsvd:24; + u64 wqcfg_size:4; + u64 rsvd:20; u64 shared_mode:1; u64 dedicated_mode:1; u64 rsvd2:1; @@ -55,6 +56,7 @@ u64 bits; } __packed; #define IDXD_WQCAP_OFFSET 0x20 +#define IDXD_WQCFG_MIN 5 union group_cap_reg { struct { @@ -333,4 +335,23 @@ }; u32 bits[8]; } __packed; + +/* + * This macro calculates the offset into the WQCFG register + * idxd - struct idxd * + * n - wq id + * ofs - the index of the 32b dword for the config register + * + * The WQCFG register block is divided into groups per each wq. The n index + * allows us to move to the register group that's for that particular wq. + * Each register is 32bits. The ofs gives us the number of register to access. + */ +#define WQCFG_OFFSET(_idxd_dev, n, ofs) \ +({\ + typeof(_idxd_dev) __idxd_dev = (_idxd_dev); \ + (__idxd_dev)->wqcfg_offset + (n) * (__idxd_dev)->wqcfg_size + sizeof(u32) * (ofs); \ +}) + +#define WQCFG_STRIDES(_idxd_dev) ((_idxd_dev)->wqcfg_size / sizeof(u32)) + #endif --- linux-5.8.0.orig/drivers/dma/idxd/submit.c +++ linux-5.8.0/drivers/dma/idxd/submit.c @@ -74,7 +74,7 @@ if (idxd->state != IDXD_DEV_ENABLED) return -EIO; - portal = wq->dportal + idxd_get_wq_portal_offset(IDXD_PORTAL_UNLIMITED); + portal = wq->dportal; /* * The wmb() flushes writes to coherent DMA data before possibly * triggering a DMA read. The wmb() is necessary even on UP because --- linux-5.8.0.orig/drivers/dma/idxd/sysfs.c +++ linux-5.8.0/drivers/dma/idxd/sysfs.c @@ -389,7 +389,7 @@ return 0; drv_fail: - for (; i > 0; i--) + while (--i >= 0) driver_unregister(&idxd_drvs[i]->drv); return rc; } @@ -1554,7 +1554,7 @@ return 0; bus_err: - for (; i > 0; i--) + while (--i >= 0) bus_unregister(idxd_bus_types[i]); return rc; } --- linux-5.8.0.orig/drivers/dma/ioat/dma.c +++ linux-5.8.0/drivers/dma/ioat/dma.c @@ -389,7 +389,7 @@ struct ioat_descs *descs = &ioat_chan->descs[i]; descs->virt = dma_alloc_coherent(to_dev(ioat_chan), - SZ_2M, &descs->hw, flags); + IOAT_CHUNK_SIZE, &descs->hw, flags); if (!descs->virt) { int idx; --- linux-5.8.0.orig/drivers/dma/mediatek/mtk-hsdma.c +++ linux-5.8.0/drivers/dma/mediatek/mtk-hsdma.c @@ -1007,6 +1007,7 @@ return 0; err_free: + mtk_hsdma_hw_deinit(hsdma); of_dma_controller_free(pdev->dev.of_node); err_unregister: dma_async_device_unregister(dd); --- linux-5.8.0.orig/drivers/dma/milbeaut-xdmac.c +++ linux-5.8.0/drivers/dma/milbeaut-xdmac.c @@ -351,7 +351,7 @@ ret = dma_async_device_register(ddev); if (ret) - return ret; + goto disable_xdmac; ret = of_dma_controller_register(dev->of_node, of_dma_simple_xlate, mdev); @@ -364,6 +364,8 @@ unregister_dmac: dma_async_device_unregister(ddev); +disable_xdmac: + disable_xdmac(mdev); return ret; } --- linux-5.8.0.orig/drivers/dma/mv_xor_v2.c +++ linux-5.8.0/drivers/dma/mv_xor_v2.c @@ -766,8 +766,10 @@ goto disable_clk; msi_desc = first_msi_entry(&pdev->dev); - if (!msi_desc) + if (!msi_desc) { + ret = -ENODEV; goto free_msi_irqs; + } xor_dev->msi_desc = msi_desc; ret = devm_request_irq(&pdev->dev, msi_desc->irq, --- linux-5.8.0.orig/drivers/dma/of-dma.c +++ linux-5.8.0/drivers/dma/of-dma.c @@ -71,12 +71,12 @@ return NULL; chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target); - if (chan) { - chan->router = ofdma->dma_router; - chan->route_data = route_data; - } else { + if (IS_ERR_OR_NULL(chan)) { ofdma->dma_router->route_free(ofdma->dma_router->dev, route_data); + } else { + chan->router = ofdma->dma_router; + chan->route_data = route_data; } /* --- linux-5.8.0.orig/drivers/dma/owl-dma.c +++ linux-5.8.0/drivers/dma/owl-dma.c @@ -1197,6 +1197,7 @@ owl_dma_free(od); clk_disable_unprepare(od->clk); + dma_pool_destroy(od->lli_pool); return 0; } --- linux-5.8.0.orig/drivers/dma/pl330.c +++ linux-5.8.0/drivers/dma/pl330.c @@ -2788,14 +2788,14 @@ while (burst != (1 << desc->rqcfg.brst_size)) desc->rqcfg.brst_size++; + desc->rqcfg.brst_len = get_burst_len(desc, len); /* * If burst size is smaller than bus width then make sure we only * transfer one at a time to avoid a burst stradling an MFIFO entry. */ - if (desc->rqcfg.brst_size * 8 < pl330->pcfg.data_bus_width) + if (burst * 8 < pl330->pcfg.data_bus_width) desc->rqcfg.brst_len = 1; - desc->rqcfg.brst_len = get_burst_len(desc, len); desc->bytes_requested = len; desc->txd.flags = flags; --- linux-5.8.0.orig/drivers/dma/ti/k3-udma.c +++ linux-5.8.0/drivers/dma/ti/k3-udma.c @@ -2109,9 +2109,9 @@ return NULL; } - cppi5_tr_init(&tr_req[i].flags, CPPI5_TR_TYPE1, false, false, - CPPI5_TR_EVENT_SIZE_COMPLETION, 0); - cppi5_tr_csf_set(&tr_req[i].flags, CPPI5_TR_CSF_SUPR_EVT); + cppi5_tr_init(&tr_req[tr_idx].flags, CPPI5_TR_TYPE1, false, + false, CPPI5_TR_EVENT_SIZE_COMPLETION, 0); + cppi5_tr_csf_set(&tr_req[tr_idx].flags, CPPI5_TR_CSF_SUPR_EVT); tr_req[tr_idx].addr = sg_addr; tr_req[tr_idx].icnt0 = tr0_cnt0; --- linux-5.8.0.orig/drivers/dma/ti/omap-dma.c +++ linux-5.8.0/drivers/dma/ti/omap-dma.c @@ -1522,29 +1522,38 @@ } } +/* Currently used by omap2 & 3 to block deeper SoC idle states */ +static bool omap_dma_busy(struct omap_dmadev *od) +{ + struct omap_chan *c; + int lch = -1; + + while (1) { + lch = find_next_bit(od->lch_bitmap, od->lch_count, lch + 1); + if (lch >= od->lch_count) + break; + c = od->lch_map[lch]; + if (!c) + continue; + if (omap_dma_chan_read(c, CCR) & CCR_ENABLE) + return true; + } + + return false; +} + /* Currently only used for omap2. For omap1, also a check for lcd_dma is needed */ static int omap_dma_busy_notifier(struct notifier_block *nb, unsigned long cmd, void *v) { struct omap_dmadev *od; - struct omap_chan *c; - int lch = -1; od = container_of(nb, struct omap_dmadev, nb); switch (cmd) { case CPU_CLUSTER_PM_ENTER: - while (1) { - lch = find_next_bit(od->lch_bitmap, od->lch_count, - lch + 1); - if (lch >= od->lch_count) - break; - c = od->lch_map[lch]; - if (!c) - continue; - if (omap_dma_chan_read(c, CCR) & CCR_ENABLE) - return NOTIFY_BAD; - } + if (omap_dma_busy(od)) + return NOTIFY_BAD; break; case CPU_CLUSTER_PM_ENTER_FAILED: case CPU_CLUSTER_PM_EXIT: @@ -1595,6 +1604,8 @@ switch (cmd) { case CPU_CLUSTER_PM_ENTER: + if (omap_dma_busy(od)) + return NOTIFY_BAD; omap_dma_context_save(od); break; case CPU_CLUSTER_PM_ENTER_FAILED: --- linux-5.8.0.orig/drivers/dma/xilinx/xilinx_dma.c +++ linux-5.8.0/drivers/dma/xilinx/xilinx_dma.c @@ -517,8 +517,8 @@ #define to_dma_tx_descriptor(tx) \ container_of(tx, struct xilinx_dma_tx_descriptor, async_tx) #define xilinx_dma_poll_timeout(chan, reg, val, cond, delay_us, timeout_us) \ - readl_poll_timeout(chan->xdev->regs + chan->ctrl_offset + reg, val, \ - cond, delay_us, timeout_us) + readl_poll_timeout_atomic(chan->xdev->regs + chan->ctrl_offset + reg, \ + val, cond, delay_us, timeout_us) /* IO accessors */ static inline u32 dma_read(struct xilinx_dma_chan *chan, u32 reg) @@ -948,8 +948,10 @@ { struct xilinx_cdma_tx_segment *cdma_seg; struct xilinx_axidma_tx_segment *axidma_seg; + struct xilinx_aximcdma_tx_segment *aximcdma_seg; struct xilinx_cdma_desc_hw *cdma_hw; struct xilinx_axidma_desc_hw *axidma_hw; + struct xilinx_aximcdma_desc_hw *aximcdma_hw; struct list_head *entry; u32 residue = 0; @@ -961,13 +963,23 @@ cdma_hw = &cdma_seg->hw; residue += (cdma_hw->control - cdma_hw->status) & chan->xdev->max_buffer_len; - } else { + } else if (chan->xdev->dma_config->dmatype == + XDMA_TYPE_AXIDMA) { axidma_seg = list_entry(entry, struct xilinx_axidma_tx_segment, node); axidma_hw = &axidma_seg->hw; residue += (axidma_hw->control - axidma_hw->status) & chan->xdev->max_buffer_len; + } else { + aximcdma_seg = + list_entry(entry, + struct xilinx_aximcdma_tx_segment, + node); + aximcdma_hw = &aximcdma_seg->hw; + residue += + (aximcdma_hw->control - aximcdma_hw->status) & + chan->xdev->max_buffer_len; } } @@ -1135,7 +1147,7 @@ upper_32_bits(chan->seg_p + sizeof(*chan->seg_mv) * ((i + 1) % XILINX_DMA_NUM_DESCS)); chan->seg_mv[i].phys = chan->seg_p + - sizeof(*chan->seg_v) * i; + sizeof(*chan->seg_mv) * i; list_add_tail(&chan->seg_mv[i].node, &chan->free_seg_list); } @@ -1560,7 +1572,7 @@ static void xilinx_mcdma_start_transfer(struct xilinx_dma_chan *chan) { struct xilinx_dma_tx_descriptor *head_desc, *tail_desc; - struct xilinx_axidma_tx_segment *tail_segment; + struct xilinx_aximcdma_tx_segment *tail_segment; u32 reg; /* @@ -1582,7 +1594,7 @@ tail_desc = list_last_entry(&chan->pending_list, struct xilinx_dma_tx_descriptor, node); tail_segment = list_last_entry(&tail_desc->segments, - struct xilinx_axidma_tx_segment, node); + struct xilinx_aximcdma_tx_segment, node); reg = dma_ctrl_read(chan, XILINX_MCDMA_CHAN_CR_OFFSET(chan->tdest)); @@ -1864,6 +1876,7 @@ struct xilinx_vdma_tx_segment *tail_segment; struct xilinx_dma_tx_descriptor *tail_desc; struct xilinx_axidma_tx_segment *axidma_tail_segment; + struct xilinx_aximcdma_tx_segment *aximcdma_tail_segment; struct xilinx_cdma_tx_segment *cdma_tail_segment; if (list_empty(&chan->pending_list)) @@ -1885,11 +1898,17 @@ struct xilinx_cdma_tx_segment, node); cdma_tail_segment->hw.next_desc = (u32)desc->async_tx.phys; - } else { + } else if (chan->xdev->dma_config->dmatype == XDMA_TYPE_AXIDMA) { axidma_tail_segment = list_last_entry(&tail_desc->segments, struct xilinx_axidma_tx_segment, node); axidma_tail_segment->hw.next_desc = (u32)desc->async_tx.phys; + } else { + aximcdma_tail_segment = + list_last_entry(&tail_desc->segments, + struct xilinx_aximcdma_tx_segment, + node); + aximcdma_tail_segment->hw.next_desc = (u32)desc->async_tx.phys; } /* @@ -2782,7 +2801,7 @@ has_dre = false; if (!has_dre) - xdev->common.copy_align = fls(width - 1); + xdev->common.copy_align = (enum dmaengine_alignment)fls(width - 1); if (of_device_is_compatible(node, "xlnx,axi-vdma-mm2s-channel") || of_device_is_compatible(node, "xlnx,axi-dma-mm2s-channel") || @@ -2856,10 +2875,11 @@ chan->stop_transfer = xilinx_dma_stop_transfer; } - /* check if SG is enabled (only for AXIDMA and CDMA) */ + /* check if SG is enabled (only for AXIDMA, AXIMCDMA, and CDMA) */ if (xdev->dma_config->dmatype != XDMA_TYPE_VDMA) { - if (dma_ctrl_read(chan, XILINX_DMA_REG_DMASR) & - XILINX_DMA_DMASR_SG_MASK) + if (xdev->dma_config->dmatype == XDMA_TYPE_AXIMCDMA || + dma_ctrl_read(chan, XILINX_DMA_REG_DMASR) & + XILINX_DMA_DMASR_SG_MASK) chan->has_sg = true; dev_dbg(chan->dev, "ch %d: SG %s\n", chan->id, chan->has_sg ? "enabled" : "disabled"); @@ -2901,7 +2921,8 @@ static int xilinx_dma_child_probe(struct xilinx_dma_device *xdev, struct device_node *node) { - int ret, i, nr_channels = 1; + int ret, i; + u32 nr_channels = 1; ret = of_property_read_u32(node, "dma-channels", &nr_channels); if (xdev->dma_config->dmatype == XDMA_TYPE_AXIMCDMA && ret < 0) @@ -3113,7 +3134,11 @@ } /* Register the DMA engine with the core */ - dma_async_device_register(&xdev->common); + err = dma_async_device_register(&xdev->common); + if (err) { + dev_err(xdev->dev, "failed to register the dma device\n"); + goto error; + } err = of_dma_controller_register(node, of_dma_xilinx_xlate, xdev); --- linux-5.8.0.orig/drivers/edac/amd64_edac.c +++ linux-5.8.0/drivers/edac/amd64_edac.c @@ -18,6 +18,9 @@ /* Per-node stuff */ static struct ecc_settings **ecc_stngs; +/* Device for the PCI component */ +static struct device *pci_ctl_dev; + /* * Valid scrub rates for the K8 hardware memory scrubber. We map the scrubbing * bandwidth to a valid bit pattern. The 'set' operation finds the 'matching- @@ -2683,6 +2686,9 @@ return -ENODEV; } + if (!pci_ctl_dev) + pci_ctl_dev = &pvt->F0->dev; + edac_dbg(1, "F0: %s\n", pci_name(pvt->F0)); edac_dbg(1, "F3: %s\n", pci_name(pvt->F3)); edac_dbg(1, "F6: %s\n", pci_name(pvt->F6)); @@ -2707,6 +2713,9 @@ return -ENODEV; } + if (!pci_ctl_dev) + pci_ctl_dev = &pvt->F2->dev; + edac_dbg(1, "F1: %s\n", pci_name(pvt->F1)); edac_dbg(1, "F2: %s\n", pci_name(pvt->F2)); edac_dbg(1, "F3: %s\n", pci_name(pvt->F3)); @@ -3341,10 +3350,13 @@ fam_type = &family_types[F15_M60H_CPUS]; pvt->ops = &family_types[F15_M60H_CPUS].ops; break; + /* Richland is only client */ + } else if (pvt->model == 0x13) { + return NULL; + } else { + fam_type = &family_types[F15_CPUS]; + pvt->ops = &family_types[F15_CPUS].ops; } - - fam_type = &family_types[F15_CPUS]; - pvt->ops = &family_types[F15_CPUS].ops; break; case 0x16: @@ -3532,6 +3544,7 @@ pvt->mc_node_id = nid; pvt->F3 = F3; + ret = -ENODEV; fam_type = per_family_init(pvt); if (!fam_type) goto err_enable; @@ -3617,21 +3630,10 @@ static void setup_pci_device(void) { - struct mem_ctl_info *mci; - struct amd64_pvt *pvt; - if (pci_ctl) return; - mci = edac_mc_find(0); - if (!mci) - return; - - pvt = mci->pvt_info; - if (pvt->umc) - pci_ctl = edac_pci_create_generic_ctl(&pvt->F0->dev, EDAC_MOD_STR); - else - pci_ctl = edac_pci_create_generic_ctl(&pvt->F2->dev, EDAC_MOD_STR); + pci_ctl = edac_pci_create_generic_ctl(pci_ctl_dev, EDAC_MOD_STR); if (!pci_ctl) { pr_warn("%s(): Unable to create PCI control\n", __func__); pr_warn("%s(): PCI error report via EDAC not set\n", __func__); @@ -3710,6 +3712,8 @@ return 0; err_pci: + pci_ctl_dev = NULL; + msrs_free(msrs); msrs = NULL; @@ -3739,6 +3743,8 @@ kfree(ecc_stngs); ecc_stngs = NULL; + pci_ctl_dev = NULL; + msrs_free(msrs); msrs = NULL; } --- linux-5.8.0.orig/drivers/edac/aspeed_edac.c +++ linux-5.8.0/drivers/edac/aspeed_edac.c @@ -209,8 +209,8 @@ /* register interrupt handler */ irq = platform_get_irq(pdev, 0); dev_dbg(&pdev->dev, "got irq %d\n", irq); - if (!irq) - return -ENODEV; + if (irq < 0) + return irq; rc = devm_request_irq(&pdev->dev, irq, mcr_isr, IRQF_TRIGGER_HIGH, DRV_NAME, ctx); --- linux-5.8.0.orig/drivers/edac/edac_device_sysfs.c +++ linux-5.8.0/drivers/edac/edac_device_sysfs.c @@ -275,6 +275,7 @@ /* Error exit stack */ err_kobj_reg: + kobject_put(&edac_dev->kobj); module_put(edac_dev->owner); err_out: --- linux-5.8.0.orig/drivers/edac/edac_mc.c +++ linux-5.8.0/drivers/edac/edac_mc.c @@ -950,6 +950,8 @@ e->other_detail); } + edac_inc_ue_error(e); + if (edac_mc_get_panic_on_ue()) { panic("UE %s%son %s (%s page:0x%lx offset:0x%lx grain:%ld%s%s)\n", e->msg, @@ -959,8 +961,6 @@ *e->other_detail ? " - " : "", e->other_detail); } - - edac_inc_ue_error(e); } static void edac_inc_csrow(struct edac_raw_error_desc *e, int row, int chan) --- linux-5.8.0.orig/drivers/edac/edac_pci_sysfs.c +++ linux-5.8.0/drivers/edac/edac_pci_sysfs.c @@ -386,7 +386,7 @@ /* Error unwind statck */ kobject_init_and_add_fail: - kfree(edac_pci_top_main_kobj); + kobject_put(edac_pci_top_main_kobj); kzalloc_fail: module_put(THIS_MODULE); --- linux-5.8.0.orig/drivers/edac/ghes_edac.c +++ linux-5.8.0/drivers/edac/ghes_edac.c @@ -469,6 +469,7 @@ if (!force_load && idx < 0) return -ENODEV; } else { + force_load = true; idx = 0; } @@ -566,6 +567,9 @@ struct mem_ctl_info *mci; unsigned long flags; + if (!force_load) + return; + mutex_lock(&ghes_reg_mutex); if (!refcount_dec_and_test(&ghes_refcount)) --- linux-5.8.0.orig/drivers/edac/i10nm_base.c +++ linux-5.8.0/drivers/edac/i10nm_base.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include @@ -19,14 +20,16 @@ #define i10nm_printk(level, fmt, arg...) \ edac_printk(level, "i10nm", fmt, ##arg) -#define I10NM_GET_SCK_BAR(d, reg) \ +#define I10NM_GET_SCK_BAR(d, reg) \ pci_read_config_dword((d)->uracu, 0xd0, &(reg)) #define I10NM_GET_IMC_BAR(d, i, reg) \ pci_read_config_dword((d)->uracu, 0xd8 + (i) * 4, &(reg)) #define I10NM_GET_DIMMMTR(m, i, j) \ - (*(u32 *)((m)->mbase + 0x2080c + (i) * 0x4000 + (j) * 4)) + readl((m)->mbase + 0x2080c + (i) * 0x4000 + (j) * 4) #define I10NM_GET_MCDDRTCFG(m, i, j) \ - (*(u32 *)((m)->mbase + 0x20970 + (i) * 0x4000 + (j) * 4)) + readl((m)->mbase + 0x20970 + (i) * 0x4000 + (j) * 4) +#define I10NM_GET_MCMTR(m, i) \ + readl((m)->mbase + 0x20ef8 + (i) * 0x4000) #define I10NM_GET_SCK_MMIO_BASE(reg) (GET_BITFIELD(reg, 0, 28) << 23) #define I10NM_GET_IMC_MMIO_OFFSET(reg) (GET_BITFIELD(reg, 0, 10) << 12) @@ -146,7 +149,7 @@ { u32 mcmtr; - mcmtr = *(u32 *)(imc->mbase + 0x20ef8 + chan * 0x4000); + mcmtr = I10NM_GET_MCMTR(imc, chan); edac_dbg(1, "ch%d mcmtr reg %x\n", chan, mcmtr); return !!GET_BITFIELD(mcmtr, 2, 2); --- linux-5.8.0.orig/drivers/edac/i5100_edac.c +++ linux-5.8.0/drivers/edac/i5100_edac.c @@ -1061,16 +1061,15 @@ PCI_DEVICE_ID_INTEL_5100_19, 0); if (!einj) { ret = -ENODEV; - goto bail_einj; + goto bail_mc_free; } rc = pci_enable_device(einj); if (rc < 0) { ret = rc; - goto bail_disable_einj; + goto bail_einj; } - mci->pdev = &pdev->dev; priv = mci->pvt_info; @@ -1136,14 +1135,14 @@ bail_scrub: priv->scrub_enable = 0; cancel_delayed_work_sync(&(priv->i5100_scrubbing)); - edac_mc_free(mci); - -bail_disable_einj: pci_disable_device(einj); bail_einj: pci_dev_put(einj); +bail_mc_free: + edac_mc_free(mci); + bail_disable_ch1: pci_disable_device(ch1mm); --- linux-5.8.0.orig/drivers/edac/i7core_edac.c +++ linux-5.8.0/drivers/edac/i7core_edac.c @@ -1710,9 +1710,9 @@ if (uncorrected_error) { core_err_cnt = 1; if (ripv) - tp_event = HW_EVENT_ERR_FATAL; - else tp_event = HW_EVENT_ERR_UNCORRECTED; + else + tp_event = HW_EVENT_ERR_FATAL; } else { tp_event = HW_EVENT_ERR_CORRECTED; } --- linux-5.8.0.orig/drivers/edac/ie31200_edac.c +++ linux-5.8.0/drivers/edac/ie31200_edac.c @@ -170,6 +170,8 @@ (n << (28 + (2 * skl) - PAGE_SHIFT)) static int nr_channels; +static struct pci_dev *mci_pdev; +static int ie31200_registered = 1; struct ie31200_priv { void __iomem *window; @@ -538,12 +540,16 @@ static int ie31200_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { - edac_dbg(0, "MC:\n"); + int rc; + edac_dbg(0, "MC:\n"); if (pci_enable_device(pdev) < 0) return -EIO; + rc = ie31200_probe1(pdev, ent->driver_data); + if (rc == 0 && !mci_pdev) + mci_pdev = pci_dev_get(pdev); - return ie31200_probe1(pdev, ent->driver_data); + return rc; } static void ie31200_remove_one(struct pci_dev *pdev) @@ -552,6 +558,8 @@ struct ie31200_priv *priv; edac_dbg(0, "\n"); + pci_dev_put(mci_pdev); + mci_pdev = NULL; mci = edac_mc_del_mc(&pdev->dev); if (!mci) return; @@ -593,17 +601,53 @@ static int __init ie31200_init(void) { + int pci_rc, i; + edac_dbg(3, "MC:\n"); /* Ensure that the OPSTATE is set correctly for POLL or NMI */ opstate_init(); - return pci_register_driver(&ie31200_driver); + pci_rc = pci_register_driver(&ie31200_driver); + if (pci_rc < 0) + goto fail0; + + if (!mci_pdev) { + ie31200_registered = 0; + for (i = 0; ie31200_pci_tbl[i].vendor != 0; i++) { + mci_pdev = pci_get_device(ie31200_pci_tbl[i].vendor, + ie31200_pci_tbl[i].device, + NULL); + if (mci_pdev) + break; + } + if (!mci_pdev) { + edac_dbg(0, "ie31200 pci_get_device fail\n"); + pci_rc = -ENODEV; + goto fail1; + } + pci_rc = ie31200_init_one(mci_pdev, &ie31200_pci_tbl[i]); + if (pci_rc < 0) { + edac_dbg(0, "ie31200 init fail\n"); + pci_rc = -ENODEV; + goto fail1; + } + } + return 0; + +fail1: + pci_unregister_driver(&ie31200_driver); +fail0: + pci_dev_put(mci_pdev); + + return pci_rc; } static void __exit ie31200_exit(void) { edac_dbg(3, "MC:\n"); pci_unregister_driver(&ie31200_driver); + if (!ie31200_registered) + ie31200_remove_one(mci_pdev); } module_init(ie31200_init); --- linux-5.8.0.orig/drivers/edac/mce_amd.c +++ linux-5.8.0/drivers/edac/mce_amd.c @@ -996,7 +996,7 @@ } if (bank_type == SMCA_UMC && xec == 0 && decode_dram_ecc) - decode_dram_ecc(cpu_to_node(m->extcpu), m); + decode_dram_ecc(topology_die_id(m->extcpu), m); } static inline void amd_decode_err_code(u16 ec) --- linux-5.8.0.orig/drivers/edac/pnd2_edac.c +++ linux-5.8.0/drivers/edac/pnd2_edac.c @@ -1155,7 +1155,7 @@ u32 optypenum = GET_BITFIELD(m->status, 4, 6); int rc; - tp_event = uc_err ? (ripv ? HW_EVENT_ERR_FATAL : HW_EVENT_ERR_UNCORRECTED) : + tp_event = uc_err ? (ripv ? HW_EVENT_ERR_UNCORRECTED : HW_EVENT_ERR_FATAL) : HW_EVENT_ERR_CORRECTED; /* --- linux-5.8.0.orig/drivers/edac/sb_edac.c +++ linux-5.8.0/drivers/edac/sb_edac.c @@ -2982,9 +2982,9 @@ if (uncorrected_error) { core_err_cnt = 1; if (ripv) { - tp_event = HW_EVENT_ERR_FATAL; - } else { tp_event = HW_EVENT_ERR_UNCORRECTED; + } else { + tp_event = HW_EVENT_ERR_FATAL; } } else { tp_event = HW_EVENT_ERR_CORRECTED; --- linux-5.8.0.orig/drivers/edac/skx_common.c +++ linux-5.8.0/drivers/edac/skx_common.c @@ -493,9 +493,9 @@ if (uncorrected_error) { core_err_cnt = 1; if (ripv) { - tp_event = HW_EVENT_ERR_FATAL; - } else { tp_event = HW_EVENT_ERR_UNCORRECTED; + } else { + tp_event = HW_EVENT_ERR_FATAL; } } else { tp_event = HW_EVENT_ERR_CORRECTED; --- linux-5.8.0.orig/drivers/edac/ti_edac.c +++ linux-5.8.0/drivers/edac/ti_edac.c @@ -278,7 +278,8 @@ /* add EMIF ECC error handler */ error_irq = platform_get_irq(pdev, 0); - if (!error_irq) { + if (error_irq < 0) { + ret = error_irq; edac_printk(KERN_ERR, EDAC_MOD_NAME, "EMIF irq number not defined.\n"); goto err; --- linux-5.8.0.orig/drivers/extcon/extcon-max77693.c +++ linux-5.8.0/drivers/extcon/extcon-max77693.c @@ -1277,4 +1277,4 @@ MODULE_DESCRIPTION("Maxim MAX77693 Extcon driver"); MODULE_AUTHOR("Chanwoo Choi "); MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:extcon-max77693"); +MODULE_ALIAS("platform:max77693-muic"); --- linux-5.8.0.orig/drivers/extcon/extcon-ptn5150.c +++ linux-5.8.0/drivers/extcon/extcon-ptn5150.c @@ -127,7 +127,7 @@ case PTN5150_DFP_ATTACHED: extcon_set_state_sync(info->edev, EXTCON_USB_HOST, false); - gpiod_set_value(info->vbus_gpiod, 0); + gpiod_set_value_cansleep(info->vbus_gpiod, 0); extcon_set_state_sync(info->edev, EXTCON_USB, true); break; @@ -138,9 +138,9 @@ PTN5150_REG_CC_VBUS_DETECTION_MASK) >> PTN5150_REG_CC_VBUS_DETECTION_SHIFT); if (vbus) - gpiod_set_value(info->vbus_gpiod, 0); + gpiod_set_value_cansleep(info->vbus_gpiod, 0); else - gpiod_set_value(info->vbus_gpiod, 1); + gpiod_set_value_cansleep(info->vbus_gpiod, 1); extcon_set_state_sync(info->edev, EXTCON_USB_HOST, true); @@ -156,7 +156,7 @@ EXTCON_USB_HOST, false); extcon_set_state_sync(info->edev, EXTCON_USB, false); - gpiod_set_value(info->vbus_gpiod, 0); + gpiod_set_value_cansleep(info->vbus_gpiod, 0); } } --- linux-5.8.0.orig/drivers/extcon/extcon.c +++ linux-5.8.0/drivers/extcon/extcon.c @@ -1241,6 +1241,7 @@ sizeof(*edev->nh), GFP_KERNEL); if (!edev->nh) { ret = -ENOMEM; + device_unregister(&edev->dev); goto err_dev; } --- linux-5.8.0.orig/drivers/firewire/nosy.c +++ linux-5.8.0/drivers/firewire/nosy.c @@ -346,6 +346,7 @@ struct client *client = file->private_data; spinlock_t *client_list_lock = &client->lynx->client_list_lock; struct nosy_stats stats; + int ret; switch (cmd) { case NOSY_IOC_GET_STATS: @@ -360,11 +361,15 @@ return 0; case NOSY_IOC_START: + ret = -EBUSY; spin_lock_irq(client_list_lock); - list_add_tail(&client->link, &client->lynx->client_list); + if (list_empty(&client->link)) { + list_add_tail(&client->link, &client->lynx->client_list); + ret = 0; + } spin_unlock_irq(client_list_lock); - return 0; + return ret; case NOSY_IOC_STOP: spin_lock_irq(client_list_lock); --- linux-5.8.0.orig/drivers/firmware/arm_scmi/base.c +++ linux-5.8.0/drivers/firmware/arm_scmi/base.c @@ -180,6 +180,8 @@ protocols_imp[tot_num_ret + loop] = *(list + loop); tot_num_ret += loop_num_ret; + + scmi_reset_rx_to_maxsz(handle, t); } while (loop_num_ret); scmi_xfer_put(handle, t); --- linux-5.8.0.orig/drivers/firmware/arm_scmi/bus.c +++ linux-5.8.0/drivers/firmware/arm_scmi/bus.c @@ -230,7 +230,7 @@ bus_for_each_dev(&scmi_bus_type, NULL, NULL, __scmi_devices_unregister); } -static int __init scmi_bus_init(void) +int __init scmi_bus_init(void) { int retval; @@ -240,12 +240,10 @@ return retval; } -subsys_initcall(scmi_bus_init); -static void __exit scmi_bus_exit(void) +void __exit scmi_bus_exit(void) { scmi_devices_unregister(); bus_unregister(&scmi_bus_type); ida_destroy(&scmi_bus_id); } -module_exit(scmi_bus_exit); --- linux-5.8.0.orig/drivers/firmware/arm_scmi/clock.c +++ linux-5.8.0/drivers/firmware/arm_scmi/clock.c @@ -178,6 +178,8 @@ } tot_rate_cnt += num_returned; + + scmi_reset_rx_to_maxsz(handle, t); /* * check for both returned and remaining to avoid infinite * loop due to buggy firmware --- linux-5.8.0.orig/drivers/firmware/arm_scmi/common.h +++ linux-5.8.0/drivers/firmware/arm_scmi/common.h @@ -145,6 +145,8 @@ struct scmi_xfer *xfer); int scmi_xfer_get_init(const struct scmi_handle *h, u8 msg_id, u8 prot_id, size_t tx_size, size_t rx_size, struct scmi_xfer **p); +void scmi_reset_rx_to_maxsz(const struct scmi_handle *handle, + struct scmi_xfer *xfer); int scmi_handle_put(const struct scmi_handle *handle); struct scmi_handle *scmi_handle_get(struct device *dev); void scmi_set_handle(struct scmi_device *scmi_dev); @@ -154,6 +156,9 @@ int scmi_base_protocol_init(struct scmi_handle *h); +int __init scmi_bus_init(void); +void __exit scmi_bus_exit(void); + /* SCMI Transport */ /** * struct scmi_chan_info - Structure representing a SCMI channel information --- linux-5.8.0.orig/drivers/firmware/arm_scmi/driver.c +++ linux-5.8.0/drivers/firmware/arm_scmi/driver.c @@ -398,6 +398,14 @@ return ret; } +void scmi_reset_rx_to_maxsz(const struct scmi_handle *handle, + struct scmi_xfer *xfer) +{ + struct scmi_info *info = handle_to_scmi_info(handle); + + xfer->rx.len = info->desc->max_msg_size; +} + #define SCMI_MAX_RESPONSE_TIMEOUT (2 * MSEC_PER_SEC) /** @@ -919,7 +927,21 @@ .remove = scmi_remove, }; -module_platform_driver(scmi_driver); +static int __init scmi_driver_init(void) +{ + scmi_bus_init(); + + return platform_driver_register(&scmi_driver); +} +module_init(scmi_driver_init); + +static void __exit scmi_driver_exit(void) +{ + scmi_bus_exit(); + + platform_driver_unregister(&scmi_driver); +} +module_exit(scmi_driver_exit); MODULE_ALIAS("platform: arm-scmi"); MODULE_AUTHOR("Sudeep Holla "); --- linux-5.8.0.orig/drivers/firmware/arm_scmi/mailbox.c +++ linux-5.8.0/drivers/firmware/arm_scmi/mailbox.c @@ -110,7 +110,7 @@ struct scmi_chan_info *cinfo = p; struct scmi_mailbox *smbox = cinfo->transport_info; - if (!IS_ERR(smbox->chan)) { + if (smbox && !IS_ERR(smbox->chan)) { mbox_free_channel(smbox->chan); cinfo->transport_info = NULL; smbox->chan = NULL; --- linux-5.8.0.orig/drivers/firmware/arm_scmi/perf.c +++ linux-5.8.0/drivers/firmware/arm_scmi/perf.c @@ -287,6 +287,8 @@ } tot_opp_cnt += num_returned; + + scmi_reset_rx_to_maxsz(handle, t); /* * check for both returned and remaining to avoid infinite * loop due to buggy firmware --- linux-5.8.0.orig/drivers/firmware/arm_scmi/reset.c +++ linux-5.8.0/drivers/firmware/arm_scmi/reset.c @@ -35,9 +35,7 @@ #define EXPLICIT_RESET_ASSERT BIT(1) #define ASYNCHRONOUS_RESET BIT(2) __le32 reset_state; -#define ARCH_RESET_TYPE BIT(31) -#define COLD_RESET_STATE BIT(0) -#define ARCH_COLD_RESET (ARCH_RESET_TYPE | COLD_RESET_STATE) +#define ARCH_COLD_RESET 0 }; struct reset_dom_info { --- linux-5.8.0.orig/drivers/firmware/arm_scmi/scmi_pm_domain.c +++ linux-5.8.0/drivers/firmware/arm_scmi/scmi_pm_domain.c @@ -85,7 +85,10 @@ for (i = 0; i < num_domains; i++, scmi_pd++) { u32 state; - domains[i] = &scmi_pd->genpd; + if (handle->power_ops->state_get(handle, i, &state)) { + dev_warn(dev, "failed to get state for domain %d\n", i); + continue; + } scmi_pd->domain = i; scmi_pd->handle = handle; @@ -94,13 +97,10 @@ scmi_pd->genpd.power_off = scmi_pd_power_off; scmi_pd->genpd.power_on = scmi_pd_power_on; - if (handle->power_ops->state_get(handle, i, &state)) { - dev_warn(dev, "failed to get state for domain %d\n", i); - continue; - } - pm_genpd_init(&scmi_pd->genpd, NULL, state == SCMI_POWER_STATE_GENERIC_OFF); + + domains[i] = &scmi_pd->genpd; } scmi_pd_data->domains = domains; --- linux-5.8.0.orig/drivers/firmware/arm_scmi/sensors.c +++ linux-5.8.0/drivers/firmware/arm_scmi/sensors.c @@ -159,6 +159,8 @@ } desc_index += num_returned; + + scmi_reset_rx_to_maxsz(handle, t); /* * check for both returned and remaining to avoid infinite * loop due to buggy firmware --- linux-5.8.0.orig/drivers/firmware/arm_scmi/smc.c +++ linux-5.8.0/drivers/firmware/arm_scmi/smc.c @@ -148,6 +148,6 @@ const struct scmi_desc scmi_smc_desc = { .ops = &scmi_smc_ops, .max_rx_timeout_ms = 30, - .max_msg = 1, + .max_msg = 20, .max_msg_size = 128, }; --- linux-5.8.0.orig/drivers/firmware/efi/Kconfig +++ linux-5.8.0/drivers/firmware/efi/Kconfig @@ -275,7 +275,7 @@ config EFI_EARLYCON def_bool y - depends on SERIAL_EARLYCON && !ARM && !IA64 + depends on EFI && SERIAL_EARLYCON && !ARM && !IA64 select FONT_SUPPORT select ARCH_USE_MEMREMAP_PROT --- linux-5.8.0.orig/drivers/firmware/efi/Makefile +++ linux-5.8.0/drivers/firmware/efi/Makefile @@ -25,6 +25,7 @@ obj-$(CONFIG_EFI_BOOTLOADER_CONTROL) += efibc.o obj-$(CONFIG_EFI_TEST) += test/ obj-$(CONFIG_EFI_DEV_PATH_PARSER) += dev-path-parser.o +obj-$(CONFIG_EFI) += secureboot.o obj-$(CONFIG_APPLE_PROPERTIES) += apple-properties.o obj-$(CONFIG_EFI_RCI2_TABLE) += rci2-table.o obj-$(CONFIG_EFI_EMBEDDED_FIRMWARE) += embedded-firmware.o --- linux-5.8.0.orig/drivers/firmware/efi/apple-properties.c +++ linux-5.8.0/drivers/firmware/efi/apple-properties.c @@ -3,8 +3,9 @@ * apple-properties.c - EFI device properties on Macs * Copyright (C) 2016 Lukas Wunner * - * Note, all properties are considered as u8 arrays. - * To get a value of any of them the caller must use device_property_read_u8_array(). + * Properties are stored either as: + * u8 arrays which can be retrieved with device_property_read_u8_array() or + * booleans which can be queried with device_property_present(). */ #define pr_fmt(fmt) "apple-properties: " fmt @@ -88,8 +89,12 @@ entry_data = ptr + key_len + sizeof(val_len); entry_len = val_len - sizeof(val_len); - entry[i] = PROPERTY_ENTRY_U8_ARRAY_LEN(key, entry_data, - entry_len); + if (entry_len) + entry[i] = PROPERTY_ENTRY_U8_ARRAY_LEN(key, entry_data, + entry_len); + else + entry[i] = PROPERTY_ENTRY_BOOL(key); + if (dump_properties) { dev_info(dev, "property: %s\n", key); print_hex_dump(KERN_INFO, pr_fmt(), DUMP_PREFIX_OFFSET, --- linux-5.8.0.orig/drivers/firmware/efi/arm-init.c +++ linux-5.8.0/drivers/firmware/efi/arm-init.c @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -234,6 +235,13 @@ return; } + efi_set_secure_boot(efi_get__secure_boot()); + +#ifdef CONFIG_LOCK_DOWN_IN_SECURE_BOOT + if (efi_enabled(EFI_SECURE_BOOT)) + security_lock_kernel_down("EFI Secure Boot mode", LOCKDOWN_INTEGRITY_MAX); +#endif + reserve_regions(); efi_esrt_init(); --- linux-5.8.0.orig/drivers/firmware/efi/efi.c +++ linux-5.8.0/drivers/firmware/efi/efi.c @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -381,15 +382,16 @@ efi_kobj = kobject_create_and_add("efi", firmware_kobj); if (!efi_kobj) { pr_err("efi: Firmware registration failed.\n"); + destroy_workqueue(efi_rts_wq); return -ENOMEM; } if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE | EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME)) { - efivar_ssdt_load(); error = generic_ops_register(); if (error) goto err_put; + efivar_ssdt_load(); platform_device_register_simple("efivars", 0, NULL, 0); } @@ -424,6 +426,7 @@ generic_ops_unregister(); err_put: kobject_put(efi_kobj); + destroy_workqueue(efi_rts_wq); return error; } @@ -831,40 +834,101 @@ } #endif +struct efi_error_code { + efi_status_t status; + int errno; + const char *description; +}; + +static const struct efi_error_code efi_error_codes[] = { + { EFI_SUCCESS, 0, "Success"}, +#if 0 + { EFI_LOAD_ERROR, -EPICK_AN_ERRNO, "Load Error"}, +#endif + { EFI_INVALID_PARAMETER, -EINVAL, "Invalid Parameter"}, + { EFI_UNSUPPORTED, -ENOSYS, "Unsupported"}, + { EFI_BAD_BUFFER_SIZE, -ENOSPC, "Bad Buffer Size"}, + { EFI_BUFFER_TOO_SMALL, -ENOSPC, "Buffer Too Small"}, + { EFI_NOT_READY, -EAGAIN, "Not Ready"}, + { EFI_DEVICE_ERROR, -EIO, "Device Error"}, + { EFI_WRITE_PROTECTED, -EROFS, "Write Protected"}, + { EFI_OUT_OF_RESOURCES, -ENOMEM, "Out of Resources"}, +#if 0 + { EFI_VOLUME_CORRUPTED, -EPICK_AN_ERRNO, "Volume Corrupt"}, + { EFI_VOLUME_FULL, -EPICK_AN_ERRNO, "Volume Full"}, + { EFI_NO_MEDIA, -EPICK_AN_ERRNO, "No Media"}, + { EFI_MEDIA_CHANGED, -EPICK_AN_ERRNO, "Media changed"}, +#endif + { EFI_NOT_FOUND, -ENOENT, "Not Found"}, +#if 0 + { EFI_ACCESS_DENIED, -EPICK_AN_ERRNO, "Access Denied"}, + { EFI_NO_RESPONSE, -EPICK_AN_ERRNO, "No Response"}, + { EFI_NO_MAPPING, -EPICK_AN_ERRNO, "No mapping"}, + { EFI_TIMEOUT, -EPICK_AN_ERRNO, "Time out"}, + { EFI_NOT_STARTED, -EPICK_AN_ERRNO, "Not started"}, + { EFI_ALREADY_STARTED, -EPICK_AN_ERRNO, "Already started"}, +#endif + { EFI_ABORTED, -EINTR, "Aborted"}, +#if 0 + { EFI_ICMP_ERROR, -EPICK_AN_ERRNO, "ICMP Error"}, + { EFI_TFTP_ERROR, -EPICK_AN_ERRNO, "TFTP Error"}, + { EFI_PROTOCOL_ERROR, -EPICK_AN_ERRNO, "Protocol Error"}, + { EFI_INCOMPATIBLE_VERSION, -EPICK_AN_ERRNO, "Incompatible Version"}, +#endif + { EFI_SECURITY_VIOLATION, -EACCES, "Security Policy Violation"}, +#if 0 + { EFI_CRC_ERROR, -EPICK_AN_ERRNO, "CRC Error"}, + { EFI_END_OF_MEDIA, -EPICK_AN_ERRNO, "End of Media"}, + { EFI_END_OF_FILE, -EPICK_AN_ERRNO, "End of File"}, + { EFI_INVALID_LANGUAGE, -EPICK_AN_ERRNO, "Invalid Languages"}, + { EFI_COMPROMISED_DATA, -EPICK_AN_ERRNO, "Compromised Data"}, + + // warnings + { EFI_WARN_UNKOWN_GLYPH, -EPICK_AN_ERRNO, "Warning Unknown Glyph"}, + { EFI_WARN_DELETE_FAILURE, -EPICK_AN_ERRNO, "Warning Delete Failure"}, + { EFI_WARN_WRITE_FAILURE, -EPICK_AN_ERRNO, "Warning Write Failure"}, + { EFI_WARN_BUFFER_TOO_SMALL, -EPICK_AN_ERRNO, "Warning Buffer Too Small"}, +#endif +}; + +static int +efi_status_cmp_bsearch(const void *key, const void *item) +{ + u64 status = (u64)(uintptr_t)key; + struct efi_error_code *code = (struct efi_error_code *)item; + + if (status < code->status) + return -1; + if (status > code->status) + return 1; + return 0; +} + int efi_status_to_err(efi_status_t status) { - int err; + struct efi_error_code *found; + size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code); - switch (status) { - case EFI_SUCCESS: - err = 0; - break; - case EFI_INVALID_PARAMETER: - err = -EINVAL; - break; - case EFI_OUT_OF_RESOURCES: - err = -ENOSPC; - break; - case EFI_DEVICE_ERROR: - err = -EIO; - break; - case EFI_WRITE_PROTECTED: - err = -EROFS; - break; - case EFI_SECURITY_VIOLATION: - err = -EACCES; - break; - case EFI_NOT_FOUND: - err = -ENOENT; - break; - case EFI_ABORTED: - err = -EINTR; - break; - default: - err = -EINVAL; - } + found = bsearch((void *)(uintptr_t)status, efi_error_codes, + sizeof(struct efi_error_code), num, + efi_status_cmp_bsearch); + if (!found) + return -EINVAL; + return found->errno; +} + +const char * +efi_status_to_str(efi_status_t status) +{ + struct efi_error_code *found; + size_t num = sizeof(efi_error_codes) / sizeof(struct efi_error_code); - return err; + found = bsearch((void *)(uintptr_t)status, efi_error_codes, + sizeof(struct efi_error_code), num, + efi_status_cmp_bsearch); + if (!found) + return "Unknown error code"; + return found->description; } static DEFINE_SPINLOCK(efi_mem_reserve_persistent_lock); @@ -917,7 +981,7 @@ } /* first try to find a slot in an existing linked list entry */ - for (prsv = efi_memreserve_root->next; prsv; prsv = rsv->next) { + for (prsv = efi_memreserve_root->next; prsv; ) { rsv = memremap(prsv, sizeof(*rsv), MEMREMAP_WB); index = atomic_fetch_add_unless(&rsv->count, 1, rsv->size); if (index < rsv->size) { @@ -927,6 +991,7 @@ memunmap(rsv); return efi_mem_reserve_iomem(addr, size); } + prsv = rsv->next; memunmap(rsv); } --- linux-5.8.0.orig/drivers/firmware/efi/efibc.c +++ linux-5.8.0/drivers/firmware/efi/efibc.c @@ -84,7 +84,7 @@ { int ret; - if (!efi_enabled(EFI_RUNTIME_SERVICES)) + if (!efivars_kobject() || !efivar_supports_writes()) return -ENODEV; ret = register_reboot_notifier(&efibc_reboot_notifier); --- linux-5.8.0.orig/drivers/firmware/efi/embedded-firmware.c +++ linux-5.8.0/drivers/firmware/efi/embedded-firmware.c @@ -16,9 +16,9 @@ /* Exported for use by lib/test_firmware.c only */ LIST_HEAD(efi_embedded_fw_list); -EXPORT_SYMBOL_GPL(efi_embedded_fw_list); - -static bool checked_for_fw; +EXPORT_SYMBOL_NS_GPL(efi_embedded_fw_list, TEST_FIRMWARE); +bool efi_embedded_fw_checked; +EXPORT_SYMBOL_NS_GPL(efi_embedded_fw_checked, TEST_FIRMWARE); static const struct dmi_system_id * const embedded_fw_table[] = { #ifdef CONFIG_TOUCHSCREEN_DMI @@ -119,14 +119,14 @@ } } - checked_for_fw = true; + efi_embedded_fw_checked = true; } int efi_get_embedded_fw(const char *name, const u8 **data, size_t *size) { struct efi_embedded_fw *iter, *fw = NULL; - if (!checked_for_fw) { + if (!efi_embedded_fw_checked) { pr_warn("Warning %s called while we did not check for embedded fw\n", __func__); return -ENOENT; --- linux-5.8.0.orig/drivers/firmware/efi/fdtparams.c +++ linux-5.8.0/drivers/firmware/efi/fdtparams.c @@ -16,16 +16,23 @@ MMSIZE, DCSIZE, DCVERS, + SCBOOT, PARAMCOUNT }; +static __initdata u32 __secure_boot = efi_secureboot_mode_unset; +u32 __init efi_get__secure_boot(void) { + return __secure_boot; +} + static __initconst const char name[][22] = { [SYSTAB] = "System Table ", [MMBASE] = "MemMap Address ", [MMSIZE] = "MemMap Size ", [DCSIZE] = "MemMap Desc. Size ", [DCVERS] = "MemMap Desc. Version ", + [SCBOOT] = "Secure Boot Enabled ", }; static __initconst const struct { @@ -51,6 +58,7 @@ [MMSIZE] = "linux,uefi-mmap-size", [DCSIZE] = "linux,uefi-mmap-desc-size", [DCVERS] = "linux,uefi-mmap-desc-ver", + [SCBOOT] = "linux,uefi-secure-boot", } } }; @@ -93,6 +101,7 @@ [MMSIZE] = { &mm->size, sizeof(mm->size) }, [DCSIZE] = { &mm->desc_size, sizeof(mm->desc_size) }, [DCVERS] = { &mm->desc_version, sizeof(mm->desc_version) }, + [SCBOOT] = { &__secure_boot, sizeof(__secure_boot) }, }; BUILD_BUG_ON(ARRAY_SIZE(target) != ARRAY_SIZE(name)); --- linux-5.8.0.orig/drivers/firmware/efi/libstub/arm64-stub.c +++ linux-5.8.0/drivers/firmware/efi/libstub/arm64-stub.c @@ -62,10 +62,12 @@ status = efi_get_random_bytes(sizeof(phys_seed), (u8 *)&phys_seed); if (status == EFI_NOT_FOUND) { - efi_info("EFI_RNG_PROTOCOL unavailable, no randomness supplied\n"); + efi_info("EFI_RNG_PROTOCOL unavailable, KASLR will be disabled\n"); + efi_nokaslr = true; } else if (status != EFI_SUCCESS) { - efi_err("efi_get_random_bytes() failed\n"); - return status; + efi_err("efi_get_random_bytes() failed (0x%lx), KASLR will be disabled\n", + status); + efi_nokaslr = true; } } else { efi_info("KASLR disabled on kernel command line\n"); --- linux-5.8.0.orig/drivers/firmware/efi/libstub/efi-stub-helper.c +++ linux-5.8.0/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -187,20 +187,28 @@ */ efi_status_t efi_parse_options(char const *cmdline) { - size_t len = strlen(cmdline) + 1; + size_t len; efi_status_t status; char *str, *buf; + if (!cmdline) + return EFI_SUCCESS; + + len = strnlen(cmdline, COMMAND_LINE_SIZE - 1) + 1; status = efi_bs_call(allocate_pool, EFI_LOADER_DATA, len, (void **)&buf); if (status != EFI_SUCCESS) return status; - str = skip_spaces(memcpy(buf, cmdline, len)); + memcpy(buf, cmdline, len - 1); + buf[len - 1] = '\0'; + str = skip_spaces(buf); while (*str) { char *param, *val; str = next_arg(str, ¶m, &val); + if (!val && !strcmp(param, "--")) + break; if (!strcmp(param, "nokaslr")) { efi_nokaslr = true; --- linux-5.8.0.orig/drivers/firmware/efi/libstub/efi-stub.c +++ linux-5.8.0/drivers/firmware/efi/libstub/efi-stub.c @@ -121,6 +121,18 @@ return membase; } +static u32 get_supported_rt_services(void) +{ + const efi_rt_properties_table_t *rt_prop_table; + u32 supported = EFI_RT_SUPPORTED_ALL; + + rt_prop_table = get_efi_config_table(EFI_RT_PROPERTIES_TABLE_GUID); + if (rt_prop_table) + supported &= rt_prop_table->runtime_services_supported; + + return supported; +} + /* * EFI entry point for the arm/arm64 EFI stubs. This is the entrypoint * that is described in the PE/COFF header. Most of the code is the same @@ -283,6 +295,10 @@ (prop_tbl->memory_protection_attribute & EFI_PROPERTIES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA); + /* force efi_novamap if SetVirtualAddressMap() is unsupported */ + efi_novamap |= !(get_supported_rt_services() & + EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP); + /* hibernation expects the runtime regions to stay in the same place */ if (!IS_ENABLED(CONFIG_HIBERNATION) && !efi_nokaslr && !flat_va_mapping) { /* --- linux-5.8.0.orig/drivers/firmware/efi/libstub/efistub.h +++ linux-5.8.0/drivers/firmware/efi/libstub/efistub.h @@ -135,7 +135,7 @@ * the EFI memory map. Other related structures, e.g. x86 e820ext, need * to factor in this headroom requirement as well. */ -#define EFI_MMAP_NR_SLACK_SLOTS 8 +#define EFI_MMAP_NR_SLACK_SLOTS 16 struct efi_boot_memmap { efi_memory_desc_t **map; --- linux-5.8.0.orig/drivers/firmware/efi/libstub/fdt.c +++ linux-5.8.0/drivers/firmware/efi/libstub/fdt.c @@ -136,7 +136,7 @@ if (status) goto fdt_set_fail; - if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE) && !efi_nokaslr) { efi_status_t efi_status; efi_status = efi_get_random_bytes(sizeof(fdt_val64), @@ -145,11 +145,15 @@ status = fdt_setprop_var(fdt, node, "kaslr-seed", fdt_val64); if (status) goto fdt_set_fail; - } else if (efi_status != EFI_NOT_FOUND) { - return efi_status; } } + fdt_val32 = cpu_to_fdt32(efi_get_secureboot()); + status = fdt_setprop(fdt, node, "linux,uefi-secure-boot", + &fdt_val32, sizeof(fdt_val32)); + if (status) + goto fdt_set_fail; + /* Shrink the FDT back to its minimum size: */ fdt_pack(fdt); --- linux-5.8.0.orig/drivers/firmware/efi/secureboot.c +++ linux-5.8.0/drivers/firmware/efi/secureboot.c @@ -0,0 +1,38 @@ +/* Core kernel secure boot support. + * + * Copyright (C) 2017 Red Hat, Inc. All Rights Reserved. + * Written by David Howells (dhowells@redhat.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public Licence + * as published by the Free Software Foundation; either version + * 2 of the Licence, or (at your option) any later version. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +/* + * Decide what to do when UEFI secure boot mode is enabled. + */ +void __init efi_set_secure_boot(enum efi_secureboot_mode mode) +{ + if (efi_enabled(EFI_BOOT)) { + switch (mode) { + case efi_secureboot_mode_disabled: + pr_info("Secure boot disabled\n"); + break; + case efi_secureboot_mode_enabled: + set_bit(EFI_SECURE_BOOT, &efi.flags); + pr_info("Secure boot enabled\n"); + break; + default: + pr_warn("Secure boot could not be determined (mode %u)\n", + mode); + break; + } + } +} --- linux-5.8.0.orig/drivers/firmware/efi/vars.c +++ linux-5.8.0/drivers/firmware/efi/vars.c @@ -497,6 +497,10 @@ } break; + case EFI_UNSUPPORTED: + err = -EOPNOTSUPP; + status = EFI_NOT_FOUND; + break; case EFI_NOT_FOUND: break; default: --- linux-5.8.0.orig/drivers/firmware/imx/Kconfig +++ linux-5.8.0/drivers/firmware/imx/Kconfig @@ -13,6 +13,7 @@ config IMX_SCU bool "IMX SCU Protocol driver" depends on IMX_MBOX + select SOC_BUS help The System Controller Firmware (SCFW) is a low-level system function which runs on a dedicated Cortex-M core to provide power, clock, and --- linux-5.8.0.orig/drivers/firmware/qcom_scm.c +++ linux-5.8.0/drivers/firmware/qcom_scm.c @@ -391,7 +391,7 @@ desc.args[1] = enable ? QCOM_SCM_BOOT_SET_DLOAD_MODE : 0; - return qcom_scm_call(__scm->dev, &desc, NULL); + return qcom_scm_call_atomic(__scm->dev, &desc, NULL); } static void qcom_scm_set_download_mode(bool enable) @@ -650,7 +650,7 @@ int ret; - ret = qcom_scm_call(__scm->dev, &desc, &res); + ret = qcom_scm_call_atomic(__scm->dev, &desc, &res); if (ret >= 0) *val = res.result[0]; @@ -669,8 +669,7 @@ .owner = ARM_SMCCC_OWNER_SIP, }; - - return qcom_scm_call(__scm->dev, &desc, NULL); + return qcom_scm_call_atomic(__scm->dev, &desc, NULL); } EXPORT_SYMBOL(qcom_scm_io_writel); --- linux-5.8.0.orig/drivers/firmware/xilinx/zynqmp.c +++ linux-5.8.0/drivers/firmware/xilinx/zynqmp.c @@ -20,12 +20,28 @@ #include #include #include +#include #include #include "zynqmp-debug.h" +/* Max HashMap Order for PM API feature check (1<<7 = 128) */ +#define PM_API_FEATURE_CHECK_MAX_ORDER 7 + static bool feature_check_enabled; -static u32 zynqmp_pm_features[PM_API_MAX]; +DEFINE_HASHTABLE(pm_api_features_map, PM_API_FEATURE_CHECK_MAX_ORDER); + +/** + * struct pm_api_feature_data - PM API Feature data + * @pm_api_id: PM API Id, used as key to index into hashmap + * @feature_status: status of PM API feature: valid, invalid + * @hentry: hlist_node that hooks this entry into hashtable + */ +struct pm_api_feature_data { + u32 pm_api_id; + int feature_status; + struct hlist_node hentry; +}; static const struct mfd_cell firmware_devs[] = { { @@ -142,26 +158,37 @@ int ret; u32 ret_payload[PAYLOAD_ARG_CNT]; u64 smc_arg[2]; + struct pm_api_feature_data *feature_data; if (!feature_check_enabled) return 0; - /* Return value if feature is already checked */ - if (zynqmp_pm_features[api_id] != PM_FEATURE_UNCHECKED) - return zynqmp_pm_features[api_id]; + /* Check for existing entry in hash table for given api */ + hash_for_each_possible(pm_api_features_map, feature_data, hentry, + api_id) { + if (feature_data->pm_api_id == api_id) + return feature_data->feature_status; + } + /* Add new entry if not present */ + feature_data = kmalloc(sizeof(*feature_data), GFP_KERNEL); + if (!feature_data) + return -ENOMEM; + + feature_data->pm_api_id = api_id; smc_arg[0] = PM_SIP_SVC | PM_FEATURE_CHECK; smc_arg[1] = api_id; ret = do_fw_call(smc_arg[0], smc_arg[1], 0, ret_payload); - if (ret) { - zynqmp_pm_features[api_id] = PM_FEATURE_INVALID; - return PM_FEATURE_INVALID; - } + if (ret) + ret = -EOPNOTSUPP; + else + ret = ret_payload[1]; - zynqmp_pm_features[api_id] = ret_payload[1]; + feature_data->feature_status = ret; + hash_add(pm_api_features_map, &feature_data->hentry, api_id); - return zynqmp_pm_features[api_id]; + return ret; } /** @@ -197,9 +224,12 @@ * Make sure to stay in x0 register */ u64 smc_arg[4]; + int ret; - if (zynqmp_pm_feature(pm_api_id) == PM_FEATURE_INVALID) - return -ENOTSUPP; + /* Check if feature is supported or not */ + ret = zynqmp_pm_feature(pm_api_id); + if (ret < 0) + return ret; smc_arg[0] = PM_SIP_SVC | pm_api_id; smc_arg[1] = ((u64)arg1 << 32) | arg0; @@ -612,7 +642,7 @@ */ int zynqmp_pm_sd_dll_reset(u32 node_id, u32 type) { - return zynqmp_pm_invoke_fn(PM_IOCTL, node_id, IOCTL_SET_SD_TAPDELAY, + return zynqmp_pm_invoke_fn(PM_IOCTL, node_id, IOCTL_SD_DLL_RESET, type, 0, NULL); } EXPORT_SYMBOL_GPL(zynqmp_pm_sd_dll_reset); @@ -1249,9 +1279,17 @@ static int zynqmp_firmware_remove(struct platform_device *pdev) { + struct pm_api_feature_data *feature_data; + int i; + mfd_remove_devices(&pdev->dev); zynqmp_pm_api_debugfs_exit(); + hash_for_each(pm_api_features_map, i, feature_data, hentry) { + hash_del(&feature_data->hentry); + kfree(feature_data); + } + return 0; } --- linux-5.8.0.orig/drivers/gpio/Kconfig +++ linux-5.8.0/drivers/gpio/Kconfig @@ -403,8 +403,9 @@ select GENERIC_IRQ_CHIP config GPIO_MXS - def_bool y + bool "Freescale MXS GPIO support" if COMPILE_TEST depends on ARCH_MXS || COMPILE_TEST + default y if ARCH_MXS select GPIO_GENERIC select GENERIC_IRQ_CHIP @@ -483,7 +484,8 @@ config GPIO_SIFIVE bool "SiFive GPIO support" - depends on OF_GPIO && IRQ_DOMAIN_HIERARCHY + depends on OF_GPIO + select IRQ_DOMAIN_HIERARCHY select GPIO_GENERIC select GPIOLIB_IRQCHIP select REGMAP_MMIO --- linux-5.8.0.orig/drivers/gpio/gpio-amd-fch.c +++ linux-5.8.0/drivers/gpio/gpio-amd-fch.c @@ -92,7 +92,7 @@ ret = (readl_relaxed(ptr) & AMD_FCH_GPIO_FLAG_DIRECTION); spin_unlock_irqrestore(&priv->lock, flags); - return ret ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_OUT; + return ret ? GPIO_LINE_DIRECTION_OUT : GPIO_LINE_DIRECTION_IN; } static void amd_fch_gpio_set(struct gpio_chip *gc, --- linux-5.8.0.orig/drivers/gpio/gpio-aspeed-sgpio.c +++ linux-5.8.0/drivers/gpio/gpio-aspeed-sgpio.c @@ -17,7 +17,17 @@ #include #include -#define MAX_NR_SGPIO 80 +/* + * MAX_NR_HW_GPIO represents the number of actual hardware-supported GPIOs (ie, + * slots within the clocked serial GPIO data). Since each HW GPIO is both an + * input and an output, we provide MAX_NR_HW_GPIO * 2 lines on our gpiochip + * device. + * + * We use SGPIO_OUTPUT_OFFSET to define the split between the inputs and + * outputs; the inputs start at line 0, the outputs start at OUTPUT_OFFSET. + */ +#define MAX_NR_HW_SGPIO 80 +#define SGPIO_OUTPUT_OFFSET MAX_NR_HW_SGPIO #define ASPEED_SGPIO_CTRL 0x54 @@ -30,8 +40,8 @@ struct clk *pclk; spinlock_t lock; void __iomem *base; - uint32_t dir_in[3]; int irq; + int n_sgpio; }; struct aspeed_sgpio_bank { @@ -111,31 +121,69 @@ } } -#define GPIO_BANK(x) ((x) >> 5) -#define GPIO_OFFSET(x) ((x) & 0x1f) +#define GPIO_BANK(x) ((x % SGPIO_OUTPUT_OFFSET) >> 5) +#define GPIO_OFFSET(x) ((x % SGPIO_OUTPUT_OFFSET) & 0x1f) #define GPIO_BIT(x) BIT(GPIO_OFFSET(x)) static const struct aspeed_sgpio_bank *to_bank(unsigned int offset) { - unsigned int bank = GPIO_BANK(offset); + unsigned int bank; + + bank = GPIO_BANK(offset); WARN_ON(bank >= ARRAY_SIZE(aspeed_sgpio_banks)); return &aspeed_sgpio_banks[bank]; } +static int aspeed_sgpio_init_valid_mask(struct gpio_chip *gc, + unsigned long *valid_mask, unsigned int ngpios) +{ + struct aspeed_sgpio *sgpio = gpiochip_get_data(gc); + int n = sgpio->n_sgpio; + int c = SGPIO_OUTPUT_OFFSET - n; + + WARN_ON(ngpios < MAX_NR_HW_SGPIO * 2); + + /* input GPIOs in the lower range */ + bitmap_set(valid_mask, 0, n); + bitmap_clear(valid_mask, n, c); + + /* output GPIOS above SGPIO_OUTPUT_OFFSET */ + bitmap_set(valid_mask, SGPIO_OUTPUT_OFFSET, n); + bitmap_clear(valid_mask, SGPIO_OUTPUT_OFFSET + n, c); + + return 0; +} + +static void aspeed_sgpio_irq_init_valid_mask(struct gpio_chip *gc, + unsigned long *valid_mask, unsigned int ngpios) +{ + struct aspeed_sgpio *sgpio = gpiochip_get_data(gc); + int n = sgpio->n_sgpio; + + WARN_ON(ngpios < MAX_NR_HW_SGPIO * 2); + + /* input GPIOs in the lower range */ + bitmap_set(valid_mask, 0, n); + bitmap_clear(valid_mask, n, ngpios - n); +} + +static bool aspeed_sgpio_is_input(unsigned int offset) +{ + return offset < SGPIO_OUTPUT_OFFSET; +} + static int aspeed_sgpio_get(struct gpio_chip *gc, unsigned int offset) { struct aspeed_sgpio *gpio = gpiochip_get_data(gc); const struct aspeed_sgpio_bank *bank = to_bank(offset); unsigned long flags; enum aspeed_sgpio_reg reg; - bool is_input; int rc = 0; spin_lock_irqsave(&gpio->lock, flags); - is_input = gpio->dir_in[GPIO_BANK(offset)] & GPIO_BIT(offset); - reg = is_input ? reg_val : reg_rdata; + reg = aspeed_sgpio_is_input(offset) ? reg_val : reg_rdata; rc = !!(ioread32(bank_reg(gpio, bank, reg)) & GPIO_BIT(offset)); spin_unlock_irqrestore(&gpio->lock, flags); @@ -143,22 +191,31 @@ return rc; } -static void sgpio_set_value(struct gpio_chip *gc, unsigned int offset, int val) +static int sgpio_set_value(struct gpio_chip *gc, unsigned int offset, int val) { struct aspeed_sgpio *gpio = gpiochip_get_data(gc); const struct aspeed_sgpio_bank *bank = to_bank(offset); - void __iomem *addr; + void __iomem *addr_r, *addr_w; u32 reg = 0; - addr = bank_reg(gpio, bank, reg_val); - reg = ioread32(addr); + if (aspeed_sgpio_is_input(offset)) + return -EINVAL; + + /* Since this is an output, read the cached value from rdata, then + * update val. */ + addr_r = bank_reg(gpio, bank, reg_rdata); + addr_w = bank_reg(gpio, bank, reg_val); + + reg = ioread32(addr_r); if (val) reg |= GPIO_BIT(offset); else reg &= ~GPIO_BIT(offset); - iowrite32(reg, addr); + iowrite32(reg, addr_w); + + return 0; } static void aspeed_sgpio_set(struct gpio_chip *gc, unsigned int offset, int val) @@ -175,43 +232,28 @@ static int aspeed_sgpio_dir_in(struct gpio_chip *gc, unsigned int offset) { - struct aspeed_sgpio *gpio = gpiochip_get_data(gc); - unsigned long flags; - - spin_lock_irqsave(&gpio->lock, flags); - gpio->dir_in[GPIO_BANK(offset)] |= GPIO_BIT(offset); - spin_unlock_irqrestore(&gpio->lock, flags); - - return 0; + return aspeed_sgpio_is_input(offset) ? 0 : -EINVAL; } static int aspeed_sgpio_dir_out(struct gpio_chip *gc, unsigned int offset, int val) { struct aspeed_sgpio *gpio = gpiochip_get_data(gc); unsigned long flags; + int rc; - spin_lock_irqsave(&gpio->lock, flags); - - gpio->dir_in[GPIO_BANK(offset)] &= ~GPIO_BIT(offset); - sgpio_set_value(gc, offset, val); + /* No special action is required for setting the direction; we'll + * error-out in sgpio_set_value if this isn't an output GPIO */ + spin_lock_irqsave(&gpio->lock, flags); + rc = sgpio_set_value(gc, offset, val); spin_unlock_irqrestore(&gpio->lock, flags); - return 0; + return rc; } static int aspeed_sgpio_get_direction(struct gpio_chip *gc, unsigned int offset) { - int dir_status; - struct aspeed_sgpio *gpio = gpiochip_get_data(gc); - unsigned long flags; - - spin_lock_irqsave(&gpio->lock, flags); - dir_status = gpio->dir_in[GPIO_BANK(offset)] & GPIO_BIT(offset); - spin_unlock_irqrestore(&gpio->lock, flags); - - return dir_status; - + return !!aspeed_sgpio_is_input(offset); } static void irqd_to_aspeed_sgpio_data(struct irq_data *d, @@ -402,6 +444,7 @@ irq = &gpio->chip.irq; irq->chip = &aspeed_sgpio_irqchip; + irq->init_valid_mask = aspeed_sgpio_irq_init_valid_mask; irq->handler = handle_bad_irq; irq->default_type = IRQ_TYPE_NONE; irq->parent_handler = aspeed_sgpio_irq_handler; @@ -409,17 +452,15 @@ irq->parents = &gpio->irq; irq->num_parents = 1; - /* set IRQ settings and Enable Interrupt */ + /* Apply default IRQ settings */ for (i = 0; i < ARRAY_SIZE(aspeed_sgpio_banks); i++) { bank = &aspeed_sgpio_banks[i]; /* set falling or level-low irq */ iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type0)); /* trigger type is edge */ iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type1)); - /* dual edge trigger mode. */ - iowrite32(0xffffffff, bank_reg(gpio, bank, reg_irq_type2)); - /* enable irq */ - iowrite32(0xffffffff, bank_reg(gpio, bank, reg_irq_enable)); + /* single edge trigger */ + iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type2)); } return 0; @@ -452,11 +493,12 @@ if (rc < 0) { dev_err(&pdev->dev, "Could not read ngpios property\n"); return -EINVAL; - } else if (nr_gpios > MAX_NR_SGPIO) { + } else if (nr_gpios > MAX_NR_HW_SGPIO) { dev_err(&pdev->dev, "Number of GPIOs exceeds the maximum of %d: %d\n", - MAX_NR_SGPIO, nr_gpios); + MAX_NR_HW_SGPIO, nr_gpios); return -EINVAL; } + gpio->n_sgpio = nr_gpios; rc = of_property_read_u32(pdev->dev.of_node, "bus-frequency", &sgpio_freq); if (rc < 0) { @@ -497,7 +539,8 @@ spin_lock_init(&gpio->lock); gpio->chip.parent = &pdev->dev; - gpio->chip.ngpio = nr_gpios; + gpio->chip.ngpio = MAX_NR_HW_SGPIO * 2; + gpio->chip.init_valid_mask = aspeed_sgpio_init_valid_mask; gpio->chip.direction_input = aspeed_sgpio_dir_in; gpio->chip.direction_output = aspeed_sgpio_dir_out; gpio->chip.get_direction = aspeed_sgpio_get_direction; @@ -509,9 +552,6 @@ gpio->chip.label = dev_name(&pdev->dev); gpio->chip.base = -1; - /* set all SGPIO pins as input (1). */ - memset(gpio->dir_in, 0xff, sizeof(gpio->dir_in)); - aspeed_sgpio_setup_irqs(gpio, pdev); rc = devm_gpiochip_add_data(&pdev->dev, &gpio->chip, gpio); --- linux-5.8.0.orig/drivers/gpio/gpio-aspeed.c +++ linux-5.8.0/drivers/gpio/gpio-aspeed.c @@ -1114,8 +1114,9 @@ static const struct aspeed_bank_props ast2600_bank_props[] = { /* input output */ - {5, 0xffffffff, 0x0000ffff}, /* U/V/W/X */ - {6, 0xffff0000, 0x0fff0000}, /* Y/Z */ + {4, 0xffffffff, 0x00ffffff}, /* Q/R/S/T */ + {5, 0xffffffff, 0xffffff00}, /* U/V/W/X */ + {6, 0x0000ffff, 0x0000ffff}, /* Y/Z */ { }, }; --- linux-5.8.0.orig/drivers/gpio/gpio-eic-sprd.c +++ linux-5.8.0/drivers/gpio/gpio-eic-sprd.c @@ -598,7 +598,7 @@ */ res = platform_get_resource(pdev, IORESOURCE_MEM, i); if (!res) - continue; + break; sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(sprd_eic->base[i])) --- linux-5.8.0.orig/drivers/gpio/gpio-ep93xx.c +++ linux-5.8.0/drivers/gpio/gpio-ep93xx.c @@ -25,6 +25,9 @@ /* Maximum value for gpio line identifiers */ #define EP93XX_GPIO_LINE_MAX 63 +/* Number of GPIO chips in EP93XX */ +#define EP93XX_GPIO_CHIP_NUM 8 + /* Maximum value for irq capable line identifiers */ #define EP93XX_GPIO_LINE_MAX_IRQ 23 @@ -34,74 +37,75 @@ */ #define EP93XX_GPIO_F_IRQ_BASE 80 +struct ep93xx_gpio_irq_chip { + struct irq_chip ic; + u8 irq_offset; + u8 int_unmasked; + u8 int_enabled; + u8 int_type1; + u8 int_type2; + u8 int_debounce; +}; + +struct ep93xx_gpio_chip { + struct gpio_chip gc; + struct ep93xx_gpio_irq_chip *eic; +}; + struct ep93xx_gpio { void __iomem *base; - struct gpio_chip gc[8]; + struct ep93xx_gpio_chip gc[EP93XX_GPIO_CHIP_NUM]; }; -/************************************************************************* - * Interrupt handling for EP93xx on-chip GPIOs - *************************************************************************/ -static unsigned char gpio_int_unmasked[3]; -static unsigned char gpio_int_enabled[3]; -static unsigned char gpio_int_type1[3]; -static unsigned char gpio_int_type2[3]; -static unsigned char gpio_int_debounce[3]; - -/* Port ordering is: A B F */ -static const u8 int_type1_register_offset[3] = { 0x90, 0xac, 0x4c }; -static const u8 int_type2_register_offset[3] = { 0x94, 0xb0, 0x50 }; -static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 }; -static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 }; -static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 }; +#define to_ep93xx_gpio_chip(x) container_of(x, struct ep93xx_gpio_chip, gc) -static void ep93xx_gpio_update_int_params(struct ep93xx_gpio *epg, unsigned port) +static struct ep93xx_gpio_irq_chip *to_ep93xx_gpio_irq_chip(struct gpio_chip *gc) { - BUG_ON(port > 2); - - writeb_relaxed(0, epg->base + int_en_register_offset[port]); + struct ep93xx_gpio_chip *egc = to_ep93xx_gpio_chip(gc); - writeb_relaxed(gpio_int_type2[port], - epg->base + int_type2_register_offset[port]); - - writeb_relaxed(gpio_int_type1[port], - epg->base + int_type1_register_offset[port]); - - writeb(gpio_int_unmasked[port] & gpio_int_enabled[port], - epg->base + int_en_register_offset[port]); + return egc->eic; } -static int ep93xx_gpio_port(struct gpio_chip *gc) -{ - struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = 0; +/************************************************************************* + * Interrupt handling for EP93xx on-chip GPIOs + *************************************************************************/ +#define EP93XX_INT_TYPE1_OFFSET 0x00 +#define EP93XX_INT_TYPE2_OFFSET 0x04 +#define EP93XX_INT_EOI_OFFSET 0x08 +#define EP93XX_INT_EN_OFFSET 0x0c +#define EP93XX_INT_STATUS_OFFSET 0x10 +#define EP93XX_INT_RAW_STATUS_OFFSET 0x14 +#define EP93XX_INT_DEBOUNCE_OFFSET 0x18 + +static void ep93xx_gpio_update_int_params(struct ep93xx_gpio *epg, + struct ep93xx_gpio_irq_chip *eic) +{ + writeb_relaxed(0, epg->base + eic->irq_offset + EP93XX_INT_EN_OFFSET); - while (port < ARRAY_SIZE(epg->gc) && gc != &epg->gc[port]) - port++; + writeb_relaxed(eic->int_type2, + epg->base + eic->irq_offset + EP93XX_INT_TYPE2_OFFSET); - /* This should not happen but is there as a last safeguard */ - if (port == ARRAY_SIZE(epg->gc)) { - pr_crit("can't find the GPIO port\n"); - return 0; - } + writeb_relaxed(eic->int_type1, + epg->base + eic->irq_offset + EP93XX_INT_TYPE1_OFFSET); - return port; + writeb_relaxed(eic->int_unmasked & eic->int_enabled, + epg->base + eic->irq_offset + EP93XX_INT_EN_OFFSET); } static void ep93xx_gpio_int_debounce(struct gpio_chip *gc, unsigned int offset, bool enable) { struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); int port_mask = BIT(offset); if (enable) - gpio_int_debounce[port] |= port_mask; + eic->int_debounce |= port_mask; else - gpio_int_debounce[port] &= ~port_mask; + eic->int_debounce &= ~port_mask; - writeb(gpio_int_debounce[port], - epg->base + int_debounce_register_offset[port]); + writeb(eic->int_debounce, + epg->base + eic->irq_offset + EP93XX_INT_DEBOUNCE_OFFSET); } static void ep93xx_gpio_ab_irq_handler(struct irq_desc *desc) @@ -122,12 +126,12 @@ */ stat = readb(epg->base + EP93XX_GPIO_A_INT_STATUS); for_each_set_bit(offset, &stat, 8) - generic_handle_irq(irq_find_mapping(epg->gc[0].irq.domain, + generic_handle_irq(irq_find_mapping(epg->gc[0].gc.irq.domain, offset)); stat = readb(epg->base + EP93XX_GPIO_B_INT_STATUS); for_each_set_bit(offset, &stat, 8) - generic_handle_irq(irq_find_mapping(epg->gc[1].irq.domain, + generic_handle_irq(irq_find_mapping(epg->gc[1].gc.irq.domain, offset)); chained_irq_exit(irqchip, desc); @@ -153,52 +157,52 @@ static void ep93xx_gpio_irq_ack(struct irq_data *d) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); int port_mask = BIT(d->irq & 7); if (irqd_get_trigger_type(d) == IRQ_TYPE_EDGE_BOTH) { - gpio_int_type2[port] ^= port_mask; /* switch edge direction */ - ep93xx_gpio_update_int_params(epg, port); + eic->int_type2 ^= port_mask; /* switch edge direction */ + ep93xx_gpio_update_int_params(epg, eic); } - writeb(port_mask, epg->base + eoi_register_offset[port]); + writeb(port_mask, epg->base + eic->irq_offset + EP93XX_INT_EOI_OFFSET); } static void ep93xx_gpio_irq_mask_ack(struct irq_data *d) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); int port_mask = BIT(d->irq & 7); if (irqd_get_trigger_type(d) == IRQ_TYPE_EDGE_BOTH) - gpio_int_type2[port] ^= port_mask; /* switch edge direction */ + eic->int_type2 ^= port_mask; /* switch edge direction */ - gpio_int_unmasked[port] &= ~port_mask; - ep93xx_gpio_update_int_params(epg, port); + eic->int_unmasked &= ~port_mask; + ep93xx_gpio_update_int_params(epg, eic); - writeb(port_mask, epg->base + eoi_register_offset[port]); + writeb(port_mask, epg->base + eic->irq_offset + EP93XX_INT_EOI_OFFSET); } static void ep93xx_gpio_irq_mask(struct irq_data *d) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); - gpio_int_unmasked[port] &= ~BIT(d->irq & 7); - ep93xx_gpio_update_int_params(epg, port); + eic->int_unmasked &= ~BIT(d->irq & 7); + ep93xx_gpio_update_int_params(epg, eic); } static void ep93xx_gpio_irq_unmask(struct irq_data *d) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); - gpio_int_unmasked[port] |= BIT(d->irq & 7); - ep93xx_gpio_update_int_params(epg, port); + eic->int_unmasked |= BIT(d->irq & 7); + ep93xx_gpio_update_int_params(epg, eic); } /* @@ -209,8 +213,8 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct ep93xx_gpio_irq_chip *eic = to_ep93xx_gpio_irq_chip(gc); struct ep93xx_gpio *epg = gpiochip_get_data(gc); - int port = ep93xx_gpio_port(gc); int offset = d->irq & 7; int port_mask = BIT(offset); irq_flow_handler_t handler; @@ -219,32 +223,32 @@ switch (type) { case IRQ_TYPE_EDGE_RISING: - gpio_int_type1[port] |= port_mask; - gpio_int_type2[port] |= port_mask; + eic->int_type1 |= port_mask; + eic->int_type2 |= port_mask; handler = handle_edge_irq; break; case IRQ_TYPE_EDGE_FALLING: - gpio_int_type1[port] |= port_mask; - gpio_int_type2[port] &= ~port_mask; + eic->int_type1 |= port_mask; + eic->int_type2 &= ~port_mask; handler = handle_edge_irq; break; case IRQ_TYPE_LEVEL_HIGH: - gpio_int_type1[port] &= ~port_mask; - gpio_int_type2[port] |= port_mask; + eic->int_type1 &= ~port_mask; + eic->int_type2 |= port_mask; handler = handle_level_irq; break; case IRQ_TYPE_LEVEL_LOW: - gpio_int_type1[port] &= ~port_mask; - gpio_int_type2[port] &= ~port_mask; + eic->int_type1 &= ~port_mask; + eic->int_type2 &= ~port_mask; handler = handle_level_irq; break; case IRQ_TYPE_EDGE_BOTH: - gpio_int_type1[port] |= port_mask; + eic->int_type1 |= port_mask; /* set initial polarity based on current input level */ if (gc->get(gc, offset)) - gpio_int_type2[port] &= ~port_mask; /* falling */ + eic->int_type2 &= ~port_mask; /* falling */ else - gpio_int_type2[port] |= port_mask; /* rising */ + eic->int_type2 |= port_mask; /* rising */ handler = handle_edge_irq; break; default: @@ -253,22 +257,13 @@ irq_set_handler_locked(d, handler); - gpio_int_enabled[port] |= port_mask; + eic->int_enabled |= port_mask; - ep93xx_gpio_update_int_params(epg, port); + ep93xx_gpio_update_int_params(epg, eic); return 0; } -static struct irq_chip ep93xx_gpio_irq_chip = { - .name = "GPIO", - .irq_ack = ep93xx_gpio_irq_ack, - .irq_mask_ack = ep93xx_gpio_irq_mask_ack, - .irq_mask = ep93xx_gpio_irq_mask, - .irq_unmask = ep93xx_gpio_irq_unmask, - .irq_set_type = ep93xx_gpio_irq_type, -}; - /************************************************************************* * gpiolib interface for EP93xx on-chip GPIOs *************************************************************************/ @@ -276,17 +271,19 @@ const char *label; int data; int dir; + int irq; int base; bool has_irq; bool has_hierarchical_irq; unsigned int irq_base; }; -#define EP93XX_GPIO_BANK(_label, _data, _dir, _base, _has_irq, _has_hier, _irq_base) \ +#define EP93XX_GPIO_BANK(_label, _data, _dir, _irq, _base, _has_irq, _has_hier, _irq_base) \ { \ .label = _label, \ .data = _data, \ .dir = _dir, \ + .irq = _irq, \ .base = _base, \ .has_irq = _has_irq, \ .has_hierarchical_irq = _has_hier, \ @@ -295,16 +292,16 @@ static struct ep93xx_gpio_bank ep93xx_gpio_banks[] = { /* Bank A has 8 IRQs */ - EP93XX_GPIO_BANK("A", 0x00, 0x10, 0, true, false, 64), + EP93XX_GPIO_BANK("A", 0x00, 0x10, 0x90, 0, true, false, 64), /* Bank B has 8 IRQs */ - EP93XX_GPIO_BANK("B", 0x04, 0x14, 8, true, false, 72), - EP93XX_GPIO_BANK("C", 0x08, 0x18, 40, false, false, 0), - EP93XX_GPIO_BANK("D", 0x0c, 0x1c, 24, false, false, 0), - EP93XX_GPIO_BANK("E", 0x20, 0x24, 32, false, false, 0), + EP93XX_GPIO_BANK("B", 0x04, 0x14, 0xac, 8, true, false, 72), + EP93XX_GPIO_BANK("C", 0x08, 0x18, 0x00, 40, false, false, 0), + EP93XX_GPIO_BANK("D", 0x0c, 0x1c, 0x00, 24, false, false, 0), + EP93XX_GPIO_BANK("E", 0x20, 0x24, 0x00, 32, false, false, 0), /* Bank F has 8 IRQs */ - EP93XX_GPIO_BANK("F", 0x30, 0x34, 16, false, true, 0), - EP93XX_GPIO_BANK("G", 0x38, 0x3c, 48, false, false, 0), - EP93XX_GPIO_BANK("H", 0x40, 0x44, 56, false, false, 0), + EP93XX_GPIO_BANK("F", 0x30, 0x34, 0x4c, 16, false, true, 0), + EP93XX_GPIO_BANK("G", 0x38, 0x3c, 0x00, 48, false, false, 0), + EP93XX_GPIO_BANK("H", 0x40, 0x44, 0x00, 56, false, false, 0), }; static int ep93xx_gpio_set_config(struct gpio_chip *gc, unsigned offset, @@ -326,13 +323,23 @@ return EP93XX_GPIO_F_IRQ_BASE + offset; } -static int ep93xx_gpio_add_bank(struct gpio_chip *gc, +static void ep93xx_init_irq_chip(struct device *dev, struct irq_chip *ic) +{ + ic->irq_ack = ep93xx_gpio_irq_ack; + ic->irq_mask_ack = ep93xx_gpio_irq_mask_ack; + ic->irq_mask = ep93xx_gpio_irq_mask; + ic->irq_unmask = ep93xx_gpio_irq_unmask; + ic->irq_set_type = ep93xx_gpio_irq_type; +} + +static int ep93xx_gpio_add_bank(struct ep93xx_gpio_chip *egc, struct platform_device *pdev, struct ep93xx_gpio *epg, struct ep93xx_gpio_bank *bank) { void __iomem *data = epg->base + bank->data; void __iomem *dir = epg->base + bank->dir; + struct gpio_chip *gc = &egc->gc; struct device *dev = &pdev->dev; struct gpio_irq_chip *girq; int err; @@ -346,8 +353,21 @@ girq = &gc->irq; if (bank->has_irq || bank->has_hierarchical_irq) { + struct irq_chip *ic; + gc->set_config = ep93xx_gpio_set_config; - girq->chip = &ep93xx_gpio_irq_chip; + egc->eic = devm_kcalloc(dev, 1, + sizeof(*egc->eic), + GFP_KERNEL); + if (!egc->eic) + return -ENOMEM; + egc->eic->irq_offset = bank->irq; + ic = &egc->eic->ic; + ic->name = devm_kasprintf(dev, GFP_KERNEL, "gpio-irq-%s", bank->label); + if (!ic->name) + return -ENOMEM; + ep93xx_init_irq_chip(dev, ic); + girq->chip = ic; } if (bank->has_irq) { @@ -389,7 +409,7 @@ gpio_irq = EP93XX_GPIO_F_IRQ_BASE + i; irq_set_chip_data(gpio_irq, &epg->gc[5]); irq_set_chip_and_handler(gpio_irq, - &ep93xx_gpio_irq_chip, + girq->chip, handle_level_irq); irq_clear_status_flags(gpio_irq, IRQ_NOREQUEST); } @@ -415,7 +435,7 @@ return PTR_ERR(epg->base); for (i = 0; i < ARRAY_SIZE(ep93xx_gpio_banks); i++) { - struct gpio_chip *gc = &epg->gc[i]; + struct ep93xx_gpio_chip *gc = &epg->gc[i]; struct ep93xx_gpio_bank *bank = &ep93xx_gpio_banks[i]; if (ep93xx_gpio_add_bank(gc, pdev, epg, bank)) --- linux-5.8.0.orig/drivers/gpio/gpio-max77620.c +++ linux-5.8.0/drivers/gpio/gpio-max77620.c @@ -305,8 +305,9 @@ gpiochip_irqchip_add_nested(&mgpio->gpio_chip, &max77620_gpio_irqchip, 0, handle_edge_irq, IRQ_TYPE_NONE); - ret = request_threaded_irq(gpio_irq, NULL, max77620_gpio_irqhandler, - IRQF_ONESHOT, "max77620-gpio", mgpio); + ret = devm_request_threaded_irq(&pdev->dev, gpio_irq, NULL, + max77620_gpio_irqhandler, IRQF_ONESHOT, + "max77620-gpio", mgpio); if (ret < 0) { dev_err(&pdev->dev, "failed to request IRQ: %d\n", ret); return ret; --- linux-5.8.0.orig/drivers/gpio/gpio-mockup.c +++ linux-5.8.0/drivers/gpio/gpio-mockup.c @@ -552,6 +552,7 @@ err = platform_driver_register(&gpio_mockup_driver); if (err) { gpio_mockup_err("error registering platform driver\n"); + debugfs_remove_recursive(gpio_mockup_dbg_dir); return err; } @@ -582,6 +583,7 @@ gpio_mockup_err("error registering device"); platform_driver_unregister(&gpio_mockup_driver); gpio_mockup_unregister_pdevs(); + debugfs_remove_recursive(gpio_mockup_dbg_dir); return PTR_ERR(pdev); } --- linux-5.8.0.orig/drivers/gpio/gpio-mvebu.c +++ linux-5.8.0/drivers/gpio/gpio-mvebu.c @@ -660,9 +660,8 @@ spin_lock_irqsave(&mvpwm->lock, flags); - val = (unsigned long long) - readl_relaxed(mvebu_pwmreg_blink_on_duration(mvpwm)); - val *= NSEC_PER_SEC; + u = readl_relaxed(mvebu_pwmreg_blink_on_duration(mvpwm)); + val = (unsigned long long) u * NSEC_PER_SEC; do_div(val, mvpwm->clk_rate); if (val > UINT_MAX) state->duty_cycle = UINT_MAX; @@ -671,21 +670,17 @@ else state->duty_cycle = 1; - val = (unsigned long long) - readl_relaxed(mvebu_pwmreg_blink_off_duration(mvpwm)); + val = (unsigned long long) u; /* on duration */ + /* period = on + off duration */ + val += readl_relaxed(mvebu_pwmreg_blink_off_duration(mvpwm)); val *= NSEC_PER_SEC; do_div(val, mvpwm->clk_rate); - if (val < state->duty_cycle) { + if (val > UINT_MAX) + state->period = UINT_MAX; + else if (val) + state->period = val; + else state->period = 1; - } else { - val -= state->duty_cycle; - if (val > UINT_MAX) - state->period = UINT_MAX; - else if (val) - state->period = val; - else - state->period = 1; - } regmap_read(mvchip->regs, GPIO_BLINK_EN_OFF + mvchip->offset, &u); if (u) @@ -1201,6 +1196,13 @@ devm_gpiochip_add_data(&pdev->dev, &mvchip->chip, mvchip); + /* Some MVEBU SoCs have simple PWM support for GPIO lines */ + if (IS_ENABLED(CONFIG_PWM)) { + err = mvebu_pwm_probe(pdev, mvchip, id); + if (err) + return err; + } + /* Some gpio controllers do not provide irq support */ if (!have_irqs) return 0; @@ -1210,7 +1212,8 @@ if (!mvchip->domain) { dev_err(&pdev->dev, "couldn't allocate irq domain %s (DT).\n", mvchip->chip.label); - return -ENODEV; + err = -ENODEV; + goto err_pwm; } err = irq_alloc_domain_generic_chips( @@ -1258,14 +1261,12 @@ mvchip); } - /* Some MVEBU SoCs have simple PWM support for GPIO lines */ - if (IS_ENABLED(CONFIG_PWM)) - return mvebu_pwm_probe(pdev, mvchip, id); - return 0; err_domain: irq_domain_remove(mvchip->domain); +err_pwm: + pwmchip_remove(&mvchip->mvpwm->chip); return err; } --- linux-5.8.0.orig/drivers/gpio/gpio-omap.c +++ linux-5.8.0/drivers/gpio/gpio-omap.c @@ -1102,13 +1102,23 @@ { struct device *dev = bank->chip.parent; void __iomem *base = bank->base; - u32 nowake; + u32 mask, nowake; bank->saved_datain = readl_relaxed(base + bank->regs->datain); if (!bank->enabled_non_wakeup_gpios) goto update_gpio_context_count; + /* Check for pending EDGE_FALLING, ignore EDGE_BOTH */ + mask = bank->enabled_non_wakeup_gpios & bank->context.fallingdetect; + mask &= ~bank->context.risingdetect; + bank->saved_datain |= mask; + + /* Check for pending EDGE_RISING, ignore EDGE_BOTH */ + mask = bank->enabled_non_wakeup_gpios & bank->context.risingdetect; + mask &= ~bank->context.fallingdetect; + bank->saved_datain &= ~mask; + if (!may_lose_context) goto update_gpio_context_count; --- linux-5.8.0.orig/drivers/gpio/gpio-pca953x.c +++ linux-5.8.0/drivers/gpio/gpio-pca953x.c @@ -110,8 +110,29 @@ #ifdef CONFIG_GPIO_PCA953X_IRQ #include -#include -#include + +static const struct acpi_gpio_params pca953x_irq_gpios = { 0, 0, true }; + +static const struct acpi_gpio_mapping pca953x_acpi_irq_gpios[] = { + { "irq-gpios", &pca953x_irq_gpios, 1, ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER }, + { } +}; + +static int pca953x_acpi_get_irq(struct device *dev) +{ + int ret; + + ret = devm_acpi_dev_add_driver_gpios(dev, pca953x_acpi_irq_gpios); + if (ret) + dev_warn(dev, "can't add GPIO ACPI mapping\n"); + + ret = acpi_dev_gpio_irq_get_by(ACPI_COMPANION(dev), "irq-gpios", 0); + if (ret < 0) + return ret; + + dev_info(dev, "ACPI interrupt quirk (IRQ %d)\n", ret); + return ret; +} static const struct dmi_system_id pca953x_dmi_acpi_irq_info[] = { { @@ -130,59 +151,6 @@ }, {} }; - -#ifdef CONFIG_ACPI -static int pca953x_acpi_get_pin(struct acpi_resource *ares, void *data) -{ - struct acpi_resource_gpio *agpio; - int *pin = data; - - if (acpi_gpio_get_irq_resource(ares, &agpio)) - *pin = agpio->pin_table[0]; - return 1; -} - -static int pca953x_acpi_find_pin(struct device *dev) -{ - struct acpi_device *adev = ACPI_COMPANION(dev); - int pin = -ENOENT, ret; - LIST_HEAD(r); - - ret = acpi_dev_get_resources(adev, &r, pca953x_acpi_get_pin, &pin); - acpi_dev_free_resource_list(&r); - if (ret < 0) - return ret; - - return pin; -} -#else -static inline int pca953x_acpi_find_pin(struct device *dev) { return -ENXIO; } -#endif - -static int pca953x_acpi_get_irq(struct device *dev) -{ - int pin, ret; - - pin = pca953x_acpi_find_pin(dev); - if (pin < 0) - return pin; - - dev_info(dev, "Applying ACPI interrupt quirk (GPIO %d)\n", pin); - - if (!gpio_is_valid(pin)) - return -EINVAL; - - ret = gpio_request(pin, "pca953x interrupt"); - if (ret) - return ret; - - ret = gpio_to_irq(pin); - - /* When pin is used as an IRQ, no need to keep it requested */ - gpio_free(pin); - - return ret; -} #endif static const struct acpi_device_id pca953x_acpi_ids[] = { @@ -813,7 +781,7 @@ { struct pca953x_chip *chip = devid; struct gpio_chip *gc = &chip->gpio_chip; - DECLARE_BITMAP(pending, MAX_LINE); + DECLARE_BITMAP(pending, MAX_LINE) = {}; int level; bool ret; @@ -938,6 +906,7 @@ static int device_pca957x_init(struct pca953x_chip *chip, u32 invert) { DECLARE_BITMAP(val, MAX_LINE); + unsigned int i; int ret; ret = device_pca95xx_init(chip, invert); @@ -945,7 +914,9 @@ goto out; /* To enable register 6, 7 to control pull up and pull down */ - memset(val, 0x02, NBANK(chip)); + for (i = 0; i < NBANK(chip); i++) + bitmap_set_value8(val, 0x02, i * BANK_SZ); + ret = pca953x_write_regs(chip, PCA957X_BKEN, val); if (ret) goto out; --- linux-5.8.0.orig/drivers/gpio/gpio-pcf857x.c +++ linux-5.8.0/drivers/gpio/gpio-pcf857x.c @@ -332,7 +332,7 @@ * reset state. Otherwise it flags pins to be driven low. */ gpio->out = ~n_latch; - gpio->status = gpio->out; + gpio->status = gpio->read(gpio->client); status = devm_gpiochip_add_data(&client->dev, &gpio->chip, gpio); if (status < 0) --- linux-5.8.0.orig/drivers/gpio/gpio-pcie-idio-24.c +++ linux-5.8.0/drivers/gpio/gpio-pcie-idio-24.c @@ -28,6 +28,47 @@ #include #include +/* + * PLX PEX8311 PCI LCS_INTCSR Interrupt Control/Status + * + * Bit: Description + * 0: Enable Interrupt Sources (Bit 0) + * 1: Enable Interrupt Sources (Bit 1) + * 2: Generate Internal PCI Bus Internal SERR# Interrupt + * 3: Mailbox Interrupt Enable + * 4: Power Management Interrupt Enable + * 5: Power Management Interrupt + * 6: Slave Read Local Data Parity Check Error Enable + * 7: Slave Read Local Data Parity Check Error Status + * 8: Internal PCI Wire Interrupt Enable + * 9: PCI Express Doorbell Interrupt Enable + * 10: PCI Abort Interrupt Enable + * 11: Local Interrupt Input Enable + * 12: Retry Abort Enable + * 13: PCI Express Doorbell Interrupt Active + * 14: PCI Abort Interrupt Active + * 15: Local Interrupt Input Active + * 16: Local Interrupt Output Enable + * 17: Local Doorbell Interrupt Enable + * 18: DMA Channel 0 Interrupt Enable + * 19: DMA Channel 1 Interrupt Enable + * 20: Local Doorbell Interrupt Active + * 21: DMA Channel 0 Interrupt Active + * 22: DMA Channel 1 Interrupt Active + * 23: Built-In Self-Test (BIST) Interrupt Active + * 24: Direct Master was the Bus Master during a Master or Target Abort + * 25: DMA Channel 0 was the Bus Master during a Master or Target Abort + * 26: DMA Channel 1 was the Bus Master during a Master or Target Abort + * 27: Target Abort after internal 256 consecutive Master Retrys + * 28: PCI Bus wrote data to LCS_MBOX0 + * 29: PCI Bus wrote data to LCS_MBOX1 + * 30: PCI Bus wrote data to LCS_MBOX2 + * 31: PCI Bus wrote data to LCS_MBOX3 + */ +#define PLX_PEX8311_PCI_LCS_INTCSR 0x68 +#define INTCSR_INTERNAL_PCI_WIRE BIT(8) +#define INTCSR_LOCAL_INPUT BIT(11) + /** * struct idio_24_gpio_reg - GPIO device registers structure * @out0_7: Read: FET Outputs 0-7 @@ -92,6 +133,7 @@ struct idio_24_gpio { struct gpio_chip chip; raw_spinlock_t lock; + __u8 __iomem *plx; struct idio_24_gpio_reg __iomem *reg; unsigned long irq_mask; }; @@ -334,13 +376,13 @@ unsigned long flags; const unsigned long bit_offset = irqd_to_hwirq(data) - 24; unsigned char new_irq_mask; - const unsigned long bank_offset = bit_offset/8 * 8; + const unsigned long bank_offset = bit_offset / 8; unsigned char cos_enable_state; raw_spin_lock_irqsave(&idio24gpio->lock, flags); - idio24gpio->irq_mask &= BIT(bit_offset); - new_irq_mask = idio24gpio->irq_mask >> bank_offset; + idio24gpio->irq_mask &= ~BIT(bit_offset); + new_irq_mask = idio24gpio->irq_mask >> bank_offset * 8; if (!new_irq_mask) { cos_enable_state = ioread8(&idio24gpio->reg->cos_enable); @@ -363,12 +405,12 @@ unsigned long flags; unsigned char prev_irq_mask; const unsigned long bit_offset = irqd_to_hwirq(data) - 24; - const unsigned long bank_offset = bit_offset/8 * 8; + const unsigned long bank_offset = bit_offset / 8; unsigned char cos_enable_state; raw_spin_lock_irqsave(&idio24gpio->lock, flags); - prev_irq_mask = idio24gpio->irq_mask >> bank_offset; + prev_irq_mask = idio24gpio->irq_mask >> bank_offset * 8; idio24gpio->irq_mask |= BIT(bit_offset); if (!prev_irq_mask) { @@ -455,6 +497,7 @@ struct device *const dev = &pdev->dev; struct idio_24_gpio *idio24gpio; int err; + const size_t pci_plx_bar_index = 1; const size_t pci_bar_index = 2; const char *const name = pci_name(pdev); @@ -468,12 +511,13 @@ return err; } - err = pcim_iomap_regions(pdev, BIT(pci_bar_index), name); + err = pcim_iomap_regions(pdev, BIT(pci_plx_bar_index) | BIT(pci_bar_index), name); if (err) { dev_err(dev, "Unable to map PCI I/O addresses (%d)\n", err); return err; } + idio24gpio->plx = pcim_iomap_table(pdev)[pci_plx_bar_index]; idio24gpio->reg = pcim_iomap_table(pdev)[pci_bar_index]; idio24gpio->chip.label = name; @@ -494,6 +538,12 @@ /* Software board reset */ iowrite8(0, &idio24gpio->reg->soft_reset); + /* + * enable PLX PEX8311 internal PCI wire interrupt and local interrupt + * input + */ + iowrite8((INTCSR_INTERNAL_PCI_WIRE | INTCSR_LOCAL_INPUT) >> 8, + idio24gpio->plx + PLX_PEX8311_PCI_LCS_INTCSR + 1); err = devm_gpiochip_add_data(dev, &idio24gpio->chip, idio24gpio); if (err) { --- linux-5.8.0.orig/drivers/gpio/gpio-sifive.c +++ linux-5.8.0/drivers/gpio/gpio-sifive.c @@ -183,7 +183,7 @@ return PTR_ERR(chip->regs); ngpio = of_irq_count(node); - if (ngpio >= SIFIVE_GPIO_MAX) { + if (ngpio > SIFIVE_GPIO_MAX) { dev_err(dev, "Too many GPIO interrupts (max=%d)\n", SIFIVE_GPIO_MAX); return -ENXIO; --- linux-5.8.0.orig/drivers/gpio/gpio-siox.c +++ linux-5.8.0/drivers/gpio/gpio-siox.c @@ -245,6 +245,7 @@ girq->chip = &ddata->ichip; girq->default_type = IRQ_TYPE_NONE; girq->handler = handle_level_irq; + girq->threaded = true; ret = devm_gpiochip_add_data(dev, &ddata->gchip, NULL); if (ret) --- linux-5.8.0.orig/drivers/gpio/gpio-sprd.c +++ linux-5.8.0/drivers/gpio/gpio-sprd.c @@ -149,17 +149,20 @@ sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 1); + sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); irq_set_handler_locked(data, handle_edge_irq); break; case IRQ_TYPE_EDGE_FALLING: sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 0); sprd_gpio_update(chip, offset, SPRD_GPIO_IEV, 0); + sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); irq_set_handler_locked(data, handle_edge_irq); break; case IRQ_TYPE_EDGE_BOTH: sprd_gpio_update(chip, offset, SPRD_GPIO_IS, 0); sprd_gpio_update(chip, offset, SPRD_GPIO_IBE, 1); + sprd_gpio_update(chip, offset, SPRD_GPIO_IC, 1); irq_set_handler_locked(data, handle_edge_irq); break; case IRQ_TYPE_LEVEL_HIGH: --- linux-5.8.0.orig/drivers/gpio/gpio-tc3589x.c +++ linux-5.8.0/drivers/gpio/gpio-tc3589x.c @@ -212,7 +212,7 @@ continue; tc3589x_gpio->oldregs[i][j] = new; - tc3589x_reg_write(tc3589x, regmap[i] + j * 8, new); + tc3589x_reg_write(tc3589x, regmap[i] + j, new); } } --- linux-5.8.0.orig/drivers/gpio/gpio-zynq.c +++ linux-5.8.0/drivers/gpio/gpio-zynq.c @@ -559,7 +559,7 @@ struct gpio_chip *chip = irq_data_get_irq_chip_data(d); int ret; - ret = pm_runtime_get_sync(chip->parent); + ret = pm_runtime_resume_and_get(chip->parent); if (ret < 0) return ret; @@ -887,7 +887,7 @@ pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); - ret = pm_runtime_get_sync(&pdev->dev); + ret = pm_runtime_resume_and_get(&pdev->dev); if (ret < 0) goto err_pm_dis; --- linux-5.8.0.orig/drivers/gpio/gpiolib-acpi.c +++ linux-5.8.0/drivers/gpio/gpiolib-acpi.c @@ -174,7 +174,7 @@ int ret, value; ret = request_threaded_irq(event->irq, NULL, event->handler, - event->irqflags, "ACPI:Event", event); + event->irqflags | IRQF_ONESHOT, "ACPI:Event", event); if (ret) { dev_err(acpi_gpio->chip->parent, "Failed to setup interrupt handler for %d\n", @@ -649,6 +649,7 @@ if (!lookup->desc) { const struct acpi_resource_gpio *agpio = &ares->data.gpio; bool gpioint = agpio->connection_type == ACPI_RESOURCE_GPIO_TYPE_INT; + struct gpio_desc *desc; int pin_index; if (lookup->info.quirks & ACPI_GPIO_QUIRK_ONLY_GPIOIO && gpioint) @@ -661,8 +662,12 @@ if (pin_index >= agpio->pin_table_length) return 1; - lookup->desc = acpi_get_gpiod(agpio->resource_source.string_ptr, + if (lookup->info.quirks & ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER) + desc = gpio_to_desc(agpio->pin_table[pin_index]); + else + desc = acpi_get_gpiod(agpio->resource_source.string_ptr, agpio->pin_table[pin_index]); + lookup->desc = desc; lookup->info.pin_config = agpio->pin_config; lookup->info.gpioint = gpioint; @@ -911,8 +916,9 @@ } /** - * acpi_dev_gpio_irq_get() - Find GpioInt and translate it to Linux IRQ number + * acpi_dev_gpio_irq_get_by() - Find GpioInt and translate it to Linux IRQ number * @adev: pointer to a ACPI device to get IRQ from + * @name: optional name of GpioInt resource * @index: index of GpioInt resource (starting from %0) * * If the device has one or more GpioInt resources, this function can be @@ -922,9 +928,12 @@ * The function is idempotent, though each time it runs it will configure GPIO * pin direction according to the flags in GpioInt resource. * + * The function takes optional @name parameter. If the resource has a property + * name, then only those will be taken into account. + * * Return: Linux IRQ number (> %0) on success, negative errno on failure. */ -int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) +int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index) { int idx, i; unsigned int irq_flags; @@ -934,7 +943,7 @@ struct acpi_gpio_info info; struct gpio_desc *desc; - desc = acpi_get_gpiod_by_index(adev, NULL, i, &info); + desc = acpi_get_gpiod_by_index(adev, name, i, &info); /* Ignore -EPROBE_DEFER, it only matters if idx matches */ if (IS_ERR(desc) && PTR_ERR(desc) != -EPROBE_DEFER) @@ -971,7 +980,7 @@ } return -ENOENT; } -EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get); +EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get_by); static acpi_status acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, --- linux-5.8.0.orig/drivers/gpio/gpiolib-devres.c +++ linux-5.8.0/drivers/gpio/gpiolib-devres.c @@ -487,10 +487,12 @@ } /** - * devm_gpiochip_add_data() - Resource managed gpiochip_add_data() + * devm_gpiochip_add_data_with_key() - Resource managed gpiochip_add_data_with_key() * @dev: pointer to the device that gpio_chip belongs to. * @gc: the GPIO chip to register * @data: driver-private data associated with this chip + * @lock_key: lockdep class for IRQ lock + * @request_key: lockdep class for IRQ request * * Context: potentially before irqs will work * @@ -501,8 +503,9 @@ * gc->base is invalid or already associated with a different chip. * Otherwise it returns zero as a success code. */ -int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *gc, - void *data) +int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc, void *data, + struct lock_class_key *lock_key, + struct lock_class_key *request_key) { struct gpio_chip **ptr; int ret; @@ -512,7 +515,7 @@ if (!ptr) return -ENOMEM; - ret = gpiochip_add_data(gc, data); + ret = gpiochip_add_data_with_key(gc, data, lock_key, request_key); if (ret < 0) { devres_free(ptr); return ret; @@ -523,4 +526,4 @@ return 0; } -EXPORT_SYMBOL_GPL(devm_gpiochip_add_data); +EXPORT_SYMBOL_GPL(devm_gpiochip_add_data_with_key); --- linux-5.8.0.orig/drivers/gpio/gpiolib.c +++ linux-5.8.0/drivers/gpio/gpiolib.c @@ -836,6 +836,21 @@ return events; } +static ssize_t lineevent_get_size(void) +{ +#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) + /* i386 has no padding after 'id' */ + if (in_ia32_syscall()) { + struct compat_gpioeevent_data { + compat_u64 timestamp; + u32 id; + }; + + return sizeof(struct compat_gpioeevent_data); + } +#endif + return sizeof(struct gpioevent_data); +} static ssize_t lineevent_read(struct file *filep, char __user *buf, @@ -845,9 +860,20 @@ struct lineevent_state *le = filep->private_data; struct gpioevent_data ge; ssize_t bytes_read = 0; + ssize_t ge_size; int ret; - if (count < sizeof(ge)) + /* + * When compatible system call is being used the struct gpioevent_data, + * in case of at least ia32, has different size due to the alignment + * differences. Because we have first member 64 bits followed by one of + * 32 bits there is no gap between them. The only difference is the + * padding at the end of the data structure. Hence, we calculate the + * actual sizeof() and pass this as an argument to copy_to_user() to + * drop unneeded bytes from the output. + */ + ge_size = lineevent_get_size(); + if (count < ge_size) return -EINVAL; do { @@ -883,10 +909,10 @@ break; } - if (copy_to_user(buf + bytes_read, &ge, sizeof(ge))) + if (copy_to_user(buf + bytes_read, &ge, ge_size)) return -EFAULT; - bytes_read += sizeof(ge); - } while (count >= bytes_read + sizeof(ge)); + bytes_read += ge_size; + } while (count >= bytes_read + ge_size); return bytes_read; } @@ -1527,8 +1553,12 @@ static void gpiodevice_release(struct device *dev) { struct gpio_device *gdev = dev_get_drvdata(dev); + unsigned long flags; + spin_lock_irqsave(&gpio_lock, flags); list_del(&gdev->list); + spin_unlock_irqrestore(&gpio_lock, flags); + ida_simple_remove(&gpio_ida, gdev->id); kfree_const(gdev->label); kfree(gdev->descs); @@ -1652,7 +1682,11 @@ ret = gdev->id; goto err_free_gdev; } - dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id); + + ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id); + if (ret) + goto err_free_ida; + device_initialize(&gdev->dev); dev_set_drvdata(&gdev->dev, gdev); if (gc->parent && gc->parent->driver) @@ -1666,7 +1700,7 @@ gdev->descs = kcalloc(gc->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL); if (!gdev->descs) { ret = -ENOMEM; - goto err_free_ida; + goto err_free_dev_name; } if (gc->ngpio == 0) { @@ -1814,6 +1848,8 @@ kfree_const(gdev->label); err_free_descs: kfree(gdev->descs); +err_free_dev_name: + kfree(dev_name(&gdev->dev)); err_free_ida: ida_simple_remove(&gpio_ida, gdev->id); err_free_gdev: @@ -2524,7 +2560,8 @@ if (WARN_ON(gc->irq.irq_enable)) return; /* Check if the irqchip already has this hook... */ - if (irqchip->irq_enable == gpiochip_irq_enable) { + if (irqchip->irq_enable == gpiochip_irq_enable || + irqchip->irq_mask == gpiochip_irq_mask) { /* * ...and if so, give a gentle warning that this is bad * practice. --- linux-5.8.0.orig/drivers/gpu/drm/Kconfig +++ linux-5.8.0/drivers/gpu/drm/Kconfig @@ -15,6 +15,9 @@ select I2C_ALGOBIT select DMA_SHARED_BUFFER select SYNC_FILE +# gallium uses SYS_kcmp for os_same_file_description() to de-duplicate +# device and dmabuf fd. Let's make sure that is available for our userspace. + select KCMP help Kernel-level support for the Direct Rendering Infrastructure (DRI) introduced in XFree86 4.0. If you say Y here, you need to select @@ -236,6 +239,7 @@ config DRM_RADEON tristate "ATI Radeon" depends on DRM && PCI && MMU + depends on AGP || !AGP select FW_LOADER select DRM_KMS_HELPER select DRM_TTM --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -175,6 +175,7 @@ extern uint amdgpu_dc_feature_mask; extern uint amdgpu_dc_debug_mask; extern uint amdgpu_dm_abm_level; +extern int amdgpu_backlight; extern struct amdgpu_mgpu_info mgpu_info; extern int amdgpu_ras_enable; extern uint amdgpu_ras_mask; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c @@ -195,19 +195,32 @@ unsigned int engine_id, unsigned int queue_id) { - uint32_t sdma_engine_reg_base[2] = { - SOC15_REG_OFFSET(SDMA0, 0, - mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL, - SOC15_REG_OFFSET(SDMA1, 0, - mmSDMA1_RLC0_RB_CNTL) - mmSDMA1_RLC0_RB_CNTL - }; - uint32_t retval = sdma_engine_reg_base[engine_id] + uint32_t sdma_engine_reg_base = 0; + uint32_t sdma_rlc_reg_offset; + + switch (engine_id) { + default: + dev_warn(adev->dev, + "Invalid sdma engine id (%d), using engine id 0\n", + engine_id); + fallthrough; + case 0: + sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0, + mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL; + break; + case 1: + sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA1, 0, + mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL; + break; + } + + sdma_rlc_reg_offset = sdma_engine_reg_base + queue_id * (mmSDMA0_RLC1_RB_CNTL - mmSDMA0_RLC0_RB_CNTL); pr_debug("RLC register offset for SDMA%d RLC%d: 0x%x\n", engine_id, - queue_id, retval); + queue_id, sdma_rlc_reg_offset); - return retval; + return sdma_rlc_reg_offset; } static inline struct v9_mqd *get_mqd(void *mqd) --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c @@ -716,8 +716,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (encoder) { @@ -854,8 +856,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } encoder = amdgpu_connector_best_single_encoder(connector); @@ -977,8 +981,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { @@ -1328,8 +1334,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c @@ -46,7 +46,7 @@ static int amdgpu_ctx_priority_permit(struct drm_file *filp, enum drm_sched_priority priority) { - if (priority < 0 || priority >= DRM_SCHED_PRIORITY_MAX) + if (priority < 0 || priority >= DRM_SCHED_PRIORITY_COUNT) return -EINVAL; /* NORMAL and below are accessible by everyone */ @@ -65,7 +65,7 @@ static enum gfx_pipe_priority amdgpu_ctx_sched_prio_to_compute_prio(enum drm_sched_priority prio) { switch (prio) { - case DRM_SCHED_PRIORITY_HIGH_HW: + case DRM_SCHED_PRIORITY_HIGH: case DRM_SCHED_PRIORITY_KERNEL: return AMDGPU_GFX_PIPE_PRIO_HIGH; default: --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -223,12 +223,16 @@ *pos &= (1UL << 22) - 1; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } if (use_bank) { if ((sh_bank != 0xFFFFFFFF && sh_bank >= adev->gfx.config.max_sh_per_se) || @@ -332,17 +336,21 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; - value = RREG32_PCIE(*pos >> 2); + value = RREG32_PCIE(*pos); r = put_user(value, (uint32_t *)buf); if (r) { pm_runtime_mark_last_busy(adev->ddev->dev); @@ -387,12 +395,16 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -405,7 +417,7 @@ return r; } - WREG32_PCIE(*pos >> 2, value); + WREG32_PCIE(*pos, value); result += 4; buf += 4; @@ -443,12 +455,16 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -498,12 +514,16 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -554,12 +574,16 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -609,12 +633,16 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -764,12 +792,16 @@ valuesize = sizeof(values); r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_dpm_read_sensor(adev, idx, &values[0], &valuesize); @@ -842,12 +874,16 @@ simd = (*pos & GENMASK_ULL(44, 37)) >> 37; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_virt_enable_access_debugfs(adev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* switch to the specific se/sh/cu */ mutex_lock(&adev->grbm_idx_mutex); @@ -937,11 +973,11 @@ r = pm_runtime_get_sync(adev->ddev->dev); if (r < 0) - return r; + goto err; r = amdgpu_virt_enable_access_debugfs(adev); if (r < 0) - return r; + goto err; /* switch to the specific se/sh/cu */ mutex_lock(&adev->grbm_idx_mutex); @@ -967,7 +1003,7 @@ value = data[result >> 2]; r = put_user(value, (uint32_t *)buf); if (r) { - result = r; + amdgpu_virt_disable_access_debugfs(adev); goto err; } @@ -976,10 +1012,14 @@ size -= 4; } -err: kfree(data); amdgpu_virt_disable_access_debugfs(adev); return result; + +err: + pm_runtime_put_autosuspend(adev->ddev->dev); + kfree(data); + return r; } /** @@ -1003,8 +1043,10 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } while (size) { uint32_t value; @@ -1140,8 +1182,10 @@ int r = 0, i; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* Avoid accidently unparking the sched thread during GPU reset */ mutex_lock(&adev->lock_reset); @@ -1197,8 +1241,10 @@ int r; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } seq_printf(m, "(%d)\n", amdgpu_bo_evict_vram(adev)); @@ -1216,8 +1262,10 @@ int r; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } seq_printf(m, "(%d)\n", ttm_bo_evict_mm(&adev->mman.bdev, TTM_PL_TT)); @@ -1417,16 +1465,16 @@ return -EINVAL; ret = pm_runtime_get_sync(adev->ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { ret = smu_get_dpm_freq_range(&adev->smu, SMU_SCLK, &min_freq, &max_freq, true); if (ret || val > max_freq || val < min_freq) return -EINVAL; ret = smu_set_soft_freq_range(&adev->smu, SMU_SCLK, (uint32_t)val, (uint32_t)val, true); - } else { - return 0; } pm_runtime_mark_last_busy(adev->ddev->dev); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1578,7 +1578,10 @@ chip_name = "arcturus"; break; case CHIP_RENOIR: - chip_name = "renoir"; + if (adev->apu_flags & AMD_APU_IS_RENOIR) + chip_name = "renoir"; + else + chip_name = "green_sardine"; break; case CHIP_NAVI10: chip_name = "navi10"; @@ -2313,11 +2316,11 @@ if (adev->gmc.xgmi.num_physical_nodes > 1) amdgpu_xgmi_remove_device(adev); - amdgpu_amdkfd_device_fini(adev); - amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE); amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE); + amdgpu_amdkfd_device_fini(adev); + /* need to disable SMC first */ for (i = 0; i < adev->num_ip_blocks; i++) { if (!adev->ip_blocks[i].status.hw) @@ -2783,7 +2786,7 @@ #endif default: if (amdgpu_dc > 0) - DRM_INFO("Display Core has been requested via kernel parameter " + DRM_INFO_ONCE("Display Core has been requested via kernel parameter " "but isn't supported by ASIC, ignoring\n"); return false; } @@ -3275,10 +3278,8 @@ msecs_to_jiffies(AMDGPU_RESUME_MS)); r = sysfs_create_files(&adev->dev->kobj, amdgpu_dev_attributes); - if (r) { + if (r) dev_err(adev->dev, "Could not create amdgpu device attr\n"); - return r; - } if (IS_ENABLED(CONFIG_PERF_EVENTS)) r = amdgpu_pmu_init(adev); @@ -4337,7 +4338,7 @@ retry: /* Rest of adevs pre asic reset from XGMI hive. */ list_for_each_entry(tmp_adev, device_list_handle, gmc.xgmi.head) { r = amdgpu_device_pre_asic_reset(tmp_adev, - NULL, + (tmp_adev == adev) ? job : NULL, &need_full_reset); /*TODO Should we stop ?*/ if (r) { @@ -4556,7 +4557,7 @@ if (!amdgpu_device_supports_baco(adev->ddev)) return -ENOTSUPP; - if (ras && ras->supported) + if (ras && ras->supported && adev->nbio.funcs->enable_doorbell_interrupt) adev->nbio.funcs->enable_doorbell_interrupt(adev, false); return amdgpu_dpm_baco_enter(adev); @@ -4575,7 +4576,7 @@ if (ret) return ret; - if (ras && ras->supported) + if (ras && ras->supported && adev->nbio.funcs->enable_doorbell_interrupt) adev->nbio.funcs->enable_doorbell_interrupt(adev, true); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -282,7 +282,7 @@ ret = pm_runtime_get_sync(dev->dev); if (ret < 0) - return ret; + goto out; ret = drm_crtc_helper_set_config(set, ctx); @@ -306,6 +306,7 @@ adev->have_disp_power_ref = false; } +out: /* drop the power reference we got coming in here */ pm_runtime_put_autosuspend(dev->dev); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c @@ -587,7 +587,7 @@ attach = dma_buf_dynamic_attach(dma_buf, dev->dev, &amdgpu_dma_buf_attach_ops, obj); if (IS_ERR(attach)) { - drm_gem_object_put(obj); + drm_gem_object_put_unlocked(obj); return ERR_CAST(attach); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -738,6 +738,10 @@ MODULE_PARM_DESC(abmlevel, "ABM level (0 = off (default), 1-4 = backlight reduction level) "); module_param_named(abmlevel, amdgpu_dm_abm_level, uint, 0444); +int amdgpu_backlight = -1; +MODULE_PARM_DESC(backlight, "Backlight control (0 = pwm, 1 = aux, -1 auto (default))"); +module_param_named(backlight, amdgpu_backlight, bint, 0444); + /** * DOC: tmz (int) * Trusted Memory Zone (TMZ) is a method to protect data being written @@ -1016,6 +1020,7 @@ {0x1002, 0x7319, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10}, {0x1002, 0x731A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10}, {0x1002, 0x731B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10}, + {0x1002, 0x731E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10}, {0x1002, 0x731F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10}, /* Navi14 */ {0x1002, 0x7340, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI14}, @@ -1025,6 +1030,8 @@ /* Renoir */ {0x1002, 0x1636, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, + {0x1002, 0x1638, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, + {0x1002, 0x164C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, /* Navi12 */ {0x1002, 0x7360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI12|AMD_EXP_HW_SUPPORT}, @@ -1373,11 +1380,12 @@ dev = file_priv->minor->dev; ret = pm_runtime_get_sync(dev->dev); if (ret < 0) - return ret; + goto out; ret = drm_ioctl(filp, cmd, arg); pm_runtime_mark_last_busy(dev->dev); +out: pm_runtime_put_autosuspend(dev->dev); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -146,7 +146,7 @@ size = mode_cmd->pitches[0] * height; aligned_size = ALIGN(size, PAGE_SIZE); ret = amdgpu_gem_object_create(adev, aligned_size, 0, domain, flags, - ttm_bo_type_kernel, NULL, &gobj); + ttm_bo_type_device, NULL, &gobj); if (ret) { pr_err("failed to allocate framebuffer (%d)\n", aligned_size); return -ENOMEM; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -416,7 +416,9 @@ ring->fence_drv.gpu_addr = adev->uvd.inst[ring->me].gpu_addr + index; } amdgpu_fence_write(ring, atomic_read(&ring->fence_drv.last_seq)); - amdgpu_irq_get(adev, irq_src, irq_type); + + if (irq_src) + amdgpu_irq_get(adev, irq_src, irq_type); ring->fence_drv.irq_src = irq_src; ring->fence_drv.irq_type = irq_type; @@ -537,8 +539,9 @@ /* no need to trigger GPU reset as we are unloading */ amdgpu_fence_driver_force_completion(ring); } - amdgpu_irq_put(adev, ring->fence_drv.irq_src, - ring->fence_drv.irq_type); + if (ring->fence_drv.irq_src) + amdgpu_irq_put(adev, ring->fence_drv.irq_src, + ring->fence_drv.irq_type); drm_sched_fini(&ring->sched); del_timer_sync(&ring->fence_drv.fallback_timer); for (j = 0; j <= ring->fence_drv.num_fences_mask; ++j) @@ -574,8 +577,9 @@ } /* disable the interrupt */ - amdgpu_irq_put(adev, ring->fence_drv.irq_src, - ring->fence_drv.irq_type); + if (ring->fence_drv.irq_src) + amdgpu_irq_put(adev, ring->fence_drv.irq_src, + ring->fence_drv.irq_type); } } @@ -601,8 +605,9 @@ continue; /* enable the interrupt */ - amdgpu_irq_get(adev, ring->fence_drv.irq_src, - ring->fence_drv.irq_type); + if (ring->fence_drv.irq_src) + amdgpu_irq_get(adev, ring->fence_drv.irq_src, + ring->fence_drv.irq_type); } } @@ -749,8 +754,10 @@ int r; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(dev->dev); return 0; + } seq_printf(m, "gpu recover\n"); amdgpu_device_gpu_recover(adev, NULL); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -596,6 +596,7 @@ struct ww_acquire_ctx ticket; struct list_head list, duplicates; uint64_t va_flags; + uint64_t vm_size; int r = 0; if (args->va_address < AMDGPU_VA_RESERVED_SIZE) { @@ -616,6 +617,15 @@ args->va_address &= AMDGPU_GMC_HOLE_MASK; + vm_size = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE; + vm_size -= AMDGPU_VA_RESERVED_SIZE; + if (args->va_address + args->map_size > vm_size) { + dev_dbg(&dev->pdev->dev, + "va_address 0x%llx is in top reserved area 0x%llx\n", + args->va_address + args->map_size, vm_size); + return -EINVAL; + } + if ((args->flags & ~valid_flags) && (args->flags & ~prt_flags)) { dev_dbg(&dev->pdev->dev, "invalid flags combination 0x%08X\n", args->flags); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c @@ -193,10 +193,14 @@ } bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev, - int queue) + int pipe, int queue) { - /* Policy: make queue 0 of each pipe as high priority compute queue */ - return (queue == 0); + bool multipipe_policy = amdgpu_gfx_is_multipipe_capable(adev); + int cond; + /* Policy: alternate between normal and high priority */ + cond = multipipe_policy ? pipe : queue; + + return ((cond % 2) != 0); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h @@ -369,7 +369,7 @@ bool amdgpu_gfx_is_mec_queue_enabled(struct amdgpu_device *adev, int mec, int pipe, int queue); bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev, - int queue); + int pipe, int queue); int amdgpu_gfx_me_queue_to_bit(struct amdgpu_device *adev, int me, int pipe, int queue); void amdgpu_gfx_bit_to_me_queue(struct amdgpu_device *adev, int bit, --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c @@ -254,7 +254,7 @@ int i; /* Signal all jobs not yet scheduled */ - for (i = DRM_SCHED_PRIORITY_MAX - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) { + for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) { struct drm_sched_rq *rq = &sched->sched_rq[i]; if (!rq) --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -663,8 +663,12 @@ * in the bitfields */ if (se_num == AMDGPU_INFO_MMR_SE_INDEX_MASK) se_num = 0xffffffff; + else if (se_num >= AMDGPU_GFX_MAX_SE) + return -EINVAL; if (sh_num == AMDGPU_INFO_MMR_SH_INDEX_MASK) sh_num = 0xffffffff; + else if (sh_num >= AMDGPU_GFX_MAX_SH_PER_SE) + return -EINVAL; if (info->read_mmr_reg.count > 128) return -EINVAL; @@ -992,7 +996,7 @@ r = pm_runtime_get_sync(dev->dev); if (r < 0) - return r; + goto pm_put; fpriv = kzalloc(sizeof(*fpriv), GFP_KERNEL); if (unlikely(!fpriv)) { @@ -1043,6 +1047,7 @@ out_suspend: pm_runtime_mark_last_busy(dev->dev); +pm_put: pm_runtime_put_autosuspend(dev->dev); return r; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -167,8 +167,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { if (adev->smu.ppt_funcs->get_current_power_state) @@ -212,8 +214,10 @@ return -EINVAL; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { mutex_lock(&adev->pm.mutex); @@ -307,8 +311,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) level = smu_get_performance_level(&adev->smu); @@ -369,8 +375,10 @@ } ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) current_level = smu_get_performance_level(&adev->smu); @@ -449,8 +457,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { ret = smu_get_power_num_states(&adev->smu, &data); @@ -491,8 +501,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { pm = smu_get_current_power_state(smu); @@ -567,8 +579,10 @@ state = data.states[idx]; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } /* only set user selected power states */ if (state != POWER_STATE_TYPE_INTERNAL_BOOT && @@ -608,8 +622,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { size = smu_sys_get_pp_table(&adev->smu, (void **)&table); @@ -650,8 +666,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { ret = smu_sys_set_pp_table(&adev->smu, (void *)buf, count); @@ -790,8 +808,10 @@ } ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { ret = smu_od_edit_dpm_table(&adev->smu, type, @@ -847,8 +867,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { size = smu_print_clk_levels(&adev->smu, SMU_OD_SCLK, buf); @@ -905,8 +927,10 @@ pr_debug("featuremask = 0x%llx\n", featuremask); ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { ret = smu_sys_set_pp_feature_mask(&adev->smu, featuremask); @@ -942,8 +966,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_sys_get_pp_feature_mask(&adev->smu, buf); @@ -1001,8 +1027,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_SCLK, buf); @@ -1026,7 +1054,7 @@ static ssize_t amdgpu_read_mask(const char *buf, size_t count, uint32_t *mask) { int ret; - long level; + unsigned long level; char *sub_str = NULL; char *tmp; char buf_cpy[AMDGPU_MASK_BUF_MAX + 1]; @@ -1042,8 +1070,8 @@ while (tmp[0]) { sub_str = strsep(&tmp, delimiter); if (strlen(sub_str)) { - ret = kstrtol(sub_str, 0, &level); - if (ret) + ret = kstrtoul(sub_str, 0, &level); + if (ret || level > 31) return -EINVAL; *mask |= 1 << level; } else @@ -1071,8 +1099,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_SCLK, mask, true); @@ -1101,8 +1131,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_MCLK, buf); @@ -1135,8 +1167,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_MCLK, mask, true); @@ -1165,8 +1199,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_SOCCLK, buf); @@ -1199,8 +1235,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_SOCCLK, mask, true); @@ -1231,8 +1269,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_FCLK, buf); @@ -1265,8 +1305,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_FCLK, mask, true); @@ -1297,8 +1339,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_DCEFCLK, buf); @@ -1331,8 +1375,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_DCEFCLK, mask, true); @@ -1363,8 +1409,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_print_clk_levels(&adev->smu, SMU_PCIE, buf); @@ -1397,8 +1445,10 @@ return ret; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_force_clk_levels(&adev->smu, SMU_PCIE, mask, true); @@ -1429,8 +1479,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) value = smu_get_od_percentage(&(adev->smu), SMU_OD_SCLK); @@ -1462,8 +1514,10 @@ return -EINVAL; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { value = smu_set_od_percentage(&(adev->smu), SMU_OD_SCLK, (uint32_t)value); @@ -1498,8 +1552,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) value = smu_get_od_percentage(&(adev->smu), SMU_OD_MCLK); @@ -1531,8 +1587,10 @@ return -EINVAL; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { value = smu_set_od_percentage(&(adev->smu), SMU_OD_MCLK, (uint32_t)value); @@ -1587,8 +1645,10 @@ return -EPERM; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) size = smu_get_power_profile_mode(&adev->smu, buf); @@ -1650,8 +1710,10 @@ parameter[parameter_size] = profile_mode; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } if (is_support_sw_smu(adev)) ret = smu_set_power_profile_mode(&adev->smu, parameter, parameter_size, true); @@ -1687,8 +1749,10 @@ return -EPERM; r = pm_runtime_get_sync(ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(ddev->dev); return r; + } /* read the IP busy sensor */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_LOAD, @@ -1723,8 +1787,10 @@ return -EPERM; r = pm_runtime_get_sync(ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(ddev->dev); return r; + } /* read the IP busy sensor */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_MEM_LOAD, @@ -1770,8 +1836,10 @@ return -ENODATA; ret = pm_runtime_get_sync(ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(ddev->dev); return ret; + } amdgpu_asic_get_pcie_usage(adev, &count0, &count1); @@ -2003,8 +2071,10 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } switch (channel) { case PP_TEMP_JUNCTION: @@ -2134,8 +2204,10 @@ return -EPERM; ret = pm_runtime_get_sync(adev->ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { pwm_mode = smu_get_fan_control_mode(&adev->smu); @@ -2172,8 +2244,10 @@ return err; ret = pm_runtime_get_sync(adev->ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { smu_set_fan_control_mode(&adev->smu, value); @@ -2220,8 +2294,10 @@ return -EPERM; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) pwm_mode = smu_get_fan_control_mode(&adev->smu); @@ -2272,8 +2348,10 @@ return -EPERM; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) err = smu_get_fan_speed_percent(&adev->smu, &speed); @@ -2305,8 +2383,10 @@ return -EPERM; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) err = smu_get_fan_speed_rpm(&adev->smu, &speed); @@ -2337,8 +2417,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_MIN_FAN_RPM, (void *)&min_rpm, &size); @@ -2365,8 +2447,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_MAX_FAN_RPM, (void *)&max_rpm, &size); @@ -2392,8 +2476,10 @@ return -EPERM; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) err = smu_get_fan_speed_rpm(&adev->smu, &rpm); @@ -2424,8 +2510,10 @@ return -EPERM; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) pwm_mode = smu_get_fan_control_mode(&adev->smu); @@ -2473,8 +2561,10 @@ return -EPERM; ret = pm_runtime_get_sync(adev->ddev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return ret; + } if (is_support_sw_smu(adev)) { pwm_mode = smu_get_fan_control_mode(&adev->smu); @@ -2519,8 +2609,10 @@ return -EINVAL; err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) { smu_set_fan_control_mode(&adev->smu, pwm_mode); @@ -2551,8 +2643,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* get the voltage */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, @@ -2590,8 +2684,10 @@ return -EINVAL; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* get the voltage */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, @@ -2626,8 +2722,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* get the voltage */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_POWER, @@ -2665,8 +2763,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } if (is_support_sw_smu(adev)) { smu_get_power_limit(&adev->smu, &limit, true, true); @@ -2697,8 +2797,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } if (is_support_sw_smu(adev)) { smu_get_power_limit(&adev->smu, &limit, false, true); @@ -2740,8 +2842,10 @@ err = pm_runtime_get_sync(adev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return err; + } if (is_support_sw_smu(adev)) err = smu_set_power_limit(&adev->smu, value); @@ -2771,8 +2875,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* get the sclk */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, @@ -2806,8 +2912,10 @@ return -EPERM; r = pm_runtime_get_sync(adev->ddev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(adev->ddev->dev); return r; + } /* get the sclk */ r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_MCLK, @@ -3669,8 +3777,10 @@ return -EPERM; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(dev->dev); return r; + } amdgpu_device_ip_get_clockgating_state(adev, &flags); seq_printf(m, "Clock Gating Flags Mask: 0x%x\n", flags); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -1182,8 +1182,12 @@ if (amdgpu_sriov_vf(psp->adev)) return 0; - if (!psp->hdcp_context.hdcp_initialized) - return 0; + if (!psp->hdcp_context.hdcp_initialized) { + if (psp->hdcp_context.hdcp_shared_buf) + goto out; + else + return 0; + } ret = psp_hdcp_unload(psp); if (ret) @@ -1191,6 +1195,7 @@ psp->hdcp_context.hdcp_initialized = false; +out: /* free hdcp shared memory */ amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo, &psp->hdcp_context.hdcp_shared_mc_addr, @@ -1329,8 +1334,12 @@ if (amdgpu_sriov_vf(psp->adev)) return 0; - if (!psp->dtm_context.dtm_initialized) - return 0; + if (!psp->dtm_context.dtm_initialized) { + if (psp->dtm_context.dtm_shared_buf) + goto out; + else + return 0; + } ret = psp_dtm_unload(psp); if (ret) @@ -1338,6 +1347,7 @@ psp->dtm_context.dtm_initialized = false; +out: /* free hdcp shared memory */ amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo, &psp->dtm_context.dtm_shared_mc_addr, --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -364,12 +364,19 @@ static ssize_t amdgpu_ras_debugfs_eeprom_write(struct file *f, const char __user *buf, size_t size, loff_t *pos) { - struct amdgpu_device *adev = (struct amdgpu_device *)file_inode(f)->i_private; + struct amdgpu_device *adev = + (struct amdgpu_device *)file_inode(f)->i_private; int ret; - ret = amdgpu_ras_eeprom_reset_table(&adev->psp.ras.ras->eeprom_control); + ret = amdgpu_ras_eeprom_reset_table( + &(amdgpu_ras_get_context(adev)->eeprom_control)); - return ret == 1 ? size : -EIO; + if (ret == 1) { + amdgpu_ras_get_context(adev)->flags = RAS_DEFAULT_FLAGS; + return size; + } else { + return -EIO; + } } static const struct file_operations amdgpu_ras_debugfs_ctrl_ops = { @@ -831,7 +838,7 @@ if (amdgpu_dpm_allow_xgmi_power_down(adev, true)) dev_warn(adev->dev, "Failed to allow XGMI power down"); - if (amdgpu_dpm_set_df_cstate(adev, DF_CSTATE_DISALLOW)) + if (amdgpu_dpm_set_df_cstate(adev, DF_CSTATE_ALLOW)) dev_warn(adev->dev, "Failed to allow df cstate"); return ret; @@ -1240,7 +1247,6 @@ if (!obj || !obj->ent) return; - debugfs_remove(obj->ent); obj->ent = NULL; put_obj(obj); } @@ -1254,7 +1260,6 @@ amdgpu_ras_debugfs_remove(adev, &obj->head); } - debugfs_remove_recursive(con->dir); con->dir = NULL; } /* debugfs end */ @@ -1914,9 +1919,8 @@ amdgpu_ras_check_supported(adev, &con->hw_supported, &con->supported); if (!con->hw_supported) { - amdgpu_ras_set_context(adev, NULL); - kfree(con); - return 0; + r = 0; + goto err_out; } con->features = 0; @@ -1927,29 +1931,31 @@ if (adev->nbio.funcs->init_ras_controller_interrupt) { r = adev->nbio.funcs->init_ras_controller_interrupt(adev); if (r) - return r; + goto err_out; } if (adev->nbio.funcs->init_ras_err_event_athub_interrupt) { r = adev->nbio.funcs->init_ras_err_event_athub_interrupt(adev); if (r) - return r; + goto err_out; } amdgpu_ras_mask &= AMDGPU_RAS_BLOCK_MASK; - if (amdgpu_ras_fs_init(adev)) - goto fs_out; + if (amdgpu_ras_fs_init(adev)) { + r = -EINVAL; + goto err_out; + } dev_info(adev->dev, "RAS INFO: ras initialized successfully, " "hardware ability[%x] ras_mask[%x]\n", con->hw_supported, con->supported); return 0; -fs_out: +err_out: amdgpu_ras_set_context(adev, NULL); kfree(con); - return -EINVAL; + return r; } /* helper function to handle common stuff in ip late init phase */ --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c @@ -267,7 +267,7 @@ &ring->sched; } - for (i = 0; i < DRM_SCHED_PRIORITY_MAX; ++i) + for (i = DRM_SCHED_PRIORITY_MIN; i < DRM_SCHED_PRIORITY_COUNT; ++i) atomic_set(&ring->num_jobs[i], 0); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h @@ -242,7 +242,7 @@ bool has_compute_vm_bug; bool no_scheduler; - atomic_t num_jobs[DRM_SCHED_PRIORITY_MAX]; + atomic_t num_jobs[DRM_SCHED_PRIORITY_COUNT]; struct mutex priority_mutex; /* protected by priority_mutex */ int priority; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c @@ -36,14 +36,14 @@ { switch (amdgpu_priority) { case AMDGPU_CTX_PRIORITY_VERY_HIGH: - return DRM_SCHED_PRIORITY_HIGH_HW; + return DRM_SCHED_PRIORITY_HIGH; case AMDGPU_CTX_PRIORITY_HIGH: - return DRM_SCHED_PRIORITY_HIGH_SW; + return DRM_SCHED_PRIORITY_HIGH; case AMDGPU_CTX_PRIORITY_NORMAL: return DRM_SCHED_PRIORITY_NORMAL; case AMDGPU_CTX_PRIORITY_LOW: case AMDGPU_CTX_PRIORITY_VERY_LOW: - return DRM_SCHED_PRIORITY_LOW; + return DRM_SCHED_PRIORITY_MIN; case AMDGPU_CTX_PRIORITY_UNSET: return DRM_SCHED_PRIORITY_UNSET; default: --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h @@ -21,7 +21,7 @@ * */ -#if !defined(_AMDGPU_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) +#if !defined(_AMDGPU_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) #define _AMDGPU_TRACE_H_ #include --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -1052,6 +1052,7 @@ release_sg: kfree(ttm->sg); + ttm->sg = NULL; return r; } @@ -2064,7 +2065,7 @@ ring = adev->mman.buffer_funcs_ring; sched = &ring->sched; r = drm_sched_entity_init(&adev->mman.entity, - DRM_SCHED_PRIORITY_KERNEL, &sched, + DRM_SCHED_PRIORITY_KERNEL, &sched, 1, NULL); if (r) { DRM_ERROR("Failed setting up TTM BO move entity (%d)\n", --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -46,11 +46,9 @@ MODULE_FIRMWARE(FIRMWARE_RAVEN); MODULE_FIRMWARE(FIRMWARE_PICASSO); MODULE_FIRMWARE(FIRMWARE_RAVEN2); -MODULE_FIRMWARE(FIRMWARE_ARCTURUS); MODULE_FIRMWARE(FIRMWARE_RENOIR); MODULE_FIRMWARE(FIRMWARE_NAVI10); MODULE_FIRMWARE(FIRMWARE_NAVI14); -MODULE_FIRMWARE(FIRMWARE_NAVI12); static void amdgpu_vcn_idle_work_handler(struct work_struct *work); @@ -64,6 +62,7 @@ INIT_DELAYED_WORK(&adev->vcn.idle_work, amdgpu_vcn_idle_work_handler); mutex_init(&adev->vcn.vcn_pg_lock); + mutex_init(&adev->vcn.vcn1_jpeg1_workaround); atomic_set(&adev->vcn.total_submission_cnt, 0); for (i = 0; i < adev->vcn.num_vcn_inst; i++) atomic_set(&adev->vcn.inst[i].dpg_enc_submission_cnt, 0); @@ -231,6 +230,7 @@ } release_firmware(adev->vcn.fw); + mutex_destroy(&adev->vcn.vcn1_jpeg1_workaround); mutex_destroy(&adev->vcn.vcn_pg_lock); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h @@ -209,6 +209,7 @@ struct amdgpu_vcn_inst inst[AMDGPU_MAX_VCN_INSTANCES]; struct amdgpu_vcn_reg internal; struct mutex vcn_pg_lock; + struct mutex vcn1_jpeg1_workaround; atomic_t total_submission_cnt; unsigned harvest_config; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2201,8 +2201,8 @@ uint64_t eaddr; /* validate the parameters */ - if (saddr & AMDGPU_GPU_PAGE_MASK || offset & AMDGPU_GPU_PAGE_MASK || - size == 0 || size & AMDGPU_GPU_PAGE_MASK) + if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || + size == 0 || size & ~PAGE_MASK) return -EINVAL; /* make sure object fit at this offset */ @@ -2266,8 +2266,8 @@ int r; /* validate the parameters */ - if (saddr & AMDGPU_GPU_PAGE_MASK || offset & AMDGPU_GPU_PAGE_MASK || - size == 0 || size & AMDGPU_GPU_PAGE_MASK) + if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || + size == 0 || size & ~PAGE_MASK) return -EINVAL; /* make sure object fit at this offset */ @@ -2411,7 +2411,7 @@ after->start = eaddr + 1; after->last = tmp->last; after->offset = tmp->offset; - after->offset += after->start - tmp->start; + after->offset += (after->start - tmp->start) << PAGE_SHIFT; after->flags = tmp->flags; after->bo_va = tmp->bo_va; list_add(&after->list, &tmp->bo_va->invalids); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -112,8 +112,8 @@ #define AMDGPU_MMHUB_0 1 #define AMDGPU_MMHUB_1 2 -/* hardcode that limit for now */ -#define AMDGPU_VA_RESERVED_SIZE (1ULL << 20) +/* Reserve 2MB at top/bottom of address space for kernel use */ +#define AMDGPU_VA_RESERVED_SIZE (2ULL << 20) /* max vmids dedicated for process */ #define AMDGPU_VM_MAX_RESERVED_VMID 1 --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c @@ -465,7 +465,7 @@ unsigned int pages; int i, r; - *sgt = kmalloc(sizeof(*sg), GFP_KERNEL); + *sgt = kmalloc(sizeof(**sgt), GFP_KERNEL); if (!*sgt) return -ENOMEM; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/cik_sdma.c @@ -1071,22 +1071,19 @@ { u32 srbm_soft_reset = 0; struct amdgpu_device *adev = (struct amdgpu_device *)handle; - u32 tmp = RREG32(mmSRBM_STATUS2); + u32 tmp; - if (tmp & SRBM_STATUS2__SDMA_BUSY_MASK) { - /* sdma0 */ - tmp = RREG32(mmSDMA0_F32_CNTL + SDMA0_REGISTER_OFFSET); - tmp |= SDMA0_F32_CNTL__HALT_MASK; - WREG32(mmSDMA0_F32_CNTL + SDMA0_REGISTER_OFFSET, tmp); - srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA_MASK; - } - if (tmp & SRBM_STATUS2__SDMA1_BUSY_MASK) { - /* sdma1 */ - tmp = RREG32(mmSDMA0_F32_CNTL + SDMA1_REGISTER_OFFSET); - tmp |= SDMA0_F32_CNTL__HALT_MASK; - WREG32(mmSDMA0_F32_CNTL + SDMA1_REGISTER_OFFSET, tmp); - srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA1_MASK; - } + /* sdma0 */ + tmp = RREG32(mmSDMA0_F32_CNTL + SDMA0_REGISTER_OFFSET); + tmp |= SDMA0_F32_CNTL__HALT_MASK; + WREG32(mmSDMA0_F32_CNTL + SDMA0_REGISTER_OFFSET, tmp); + srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA_MASK; + + /* sdma1 */ + tmp = RREG32(mmSDMA0_F32_CNTL + SDMA1_REGISTER_OFFSET); + tmp |= SDMA0_F32_CNTL__HALT_MASK; + WREG32(mmSDMA0_F32_CNTL + SDMA1_REGISTER_OFFSET, tmp); + srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA1_MASK; if (srbm_soft_reset) { tmp = RREG32(mmSRBM_SOFT_RESET); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/cz_ih.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/cz_ih.c @@ -193,19 +193,30 @@ wptr = le32_to_cpu(*ih->wptr_cpu); - if (REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) { - wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); - /* When a ring buffer overflow happen start parsing interrupt - * from the last not overwritten vector (wptr + 16). Hopefully - * this should allow us to catchup. - */ - dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", - wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); - ih->rptr = (wptr + 16) & ih->ptr_mask; - tmp = RREG32(mmIH_RB_CNTL); - tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); - WREG32(mmIH_RB_CNTL, tmp); - } + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + /* Double check that the overflow wasn't already cleared. */ + wptr = RREG32(mmIH_RB_WPTR); + + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); + + /* When a ring buffer overflow happen start parsing interrupt + * from the last not overwritten vector (wptr + 16). Hopefully + * this should allow us to catchup. + */ + dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", + wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); + ih->rptr = (wptr + 16) & ih->ptr_mask; + tmp = RREG32(mmIH_RB_CNTL); + tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); + WREG32(mmIH_RB_CNTL, tmp); + + +out: return (wptr & ih->ptr_mask); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -4076,7 +4076,8 @@ irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ? + hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe, + ring->queue) ? AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_GFX_PIPE_PRIO_NORMAL; /* type-2 packets are deprecated on MEC, use type-3 instead */ r = amdgpu_ring_init(adev, ring, 1024, @@ -6007,7 +6008,8 @@ struct amdgpu_device *adev = ring->adev; if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) { - if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) { + if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH; mqd->cp_hqd_queue_priority = AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM; @@ -6854,10 +6856,8 @@ def = data = RREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE); data &= ~(RLC_CGTT_MGCG_OVERRIDE__GRBM_CGTT_SCLK_OVERRIDE_MASK | RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGCG_OVERRIDE_MASK | - RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE_MASK); - - /* only for Vega10 & Raven1 */ - data |= RLC_CGTT_MGCG_OVERRIDE__RLC_CGTT_SCLK_OVERRIDE_MASK; + RLC_CGTT_MGCG_OVERRIDE__GFXIP_MGLS_OVERRIDE_MASK | + RLC_CGTT_MGCG_OVERRIDE__ENABLE_CGTS_LEGACY_MASK); if (def != data) WREG32_SOC15(GC, 0, mmRLC_CGTT_MGCG_OVERRIDE, data); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -1914,7 +1914,8 @@ + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ? + hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe, + ring->queue) ? AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_RING_PRIO_DEFAULT; /* type-2 packets are deprecated on MEC, use type-3 instead */ r = amdgpu_ring_init(adev, ring, 1024, @@ -4434,7 +4435,8 @@ struct amdgpu_device *adev = ring->adev; if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) { - if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) { + if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH; mqd->cp_hqd_queue_priority = AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -2216,7 +2216,8 @@ irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue) ? + hw_prio = amdgpu_gfx_is_high_priority_compute_queue(adev, ring->pipe, + ring->queue) ? AMDGPU_GFX_PIPE_PRIO_HIGH : AMDGPU_GFX_PIPE_PRIO_NORMAL; /* type-2 packets are deprecated on MEC, use type-3 instead */ r = amdgpu_ring_init(adev, ring, 1024, @@ -3377,7 +3378,9 @@ struct amdgpu_device *adev = ring->adev; if (ring->funcs->type == AMDGPU_RING_TYPE_COMPUTE) { - if (amdgpu_gfx_is_high_priority_compute_queue(adev, ring->queue)) { + if (amdgpu_gfx_is_high_priority_compute_queue(adev, + ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority = AMDGPU_GFX_PIPE_PRIO_HIGH; mqd->cp_hqd_queue_priority = AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/iceland_ih.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/iceland_ih.c @@ -193,19 +193,29 @@ wptr = le32_to_cpu(*ih->wptr_cpu); - if (REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) { - wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); - /* When a ring buffer overflow happen start parsing interrupt - * from the last not overwritten vector (wptr + 16). Hopefully - * this should allow us to catchup. - */ - dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", - wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); - ih->rptr = (wptr + 16) & ih->ptr_mask; - tmp = RREG32(mmIH_RB_CNTL); - tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); - WREG32(mmIH_RB_CNTL, tmp); - } + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + /* Double check that the overflow wasn't already cleared. */ + wptr = RREG32(mmIH_RB_WPTR); + + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); + /* When a ring buffer overflow happen start parsing interrupt + * from the last not overwritten vector (wptr + 16). Hopefully + * this should allow us to catchup. + */ + dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", + wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); + ih->rptr = (wptr + 16) & ih->ptr_mask; + tmp = RREG32(mmIH_RB_CNTL); + tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); + WREG32(mmIH_RB_CNTL, tmp); + + +out: return (wptr & ih->ptr_mask); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c @@ -32,6 +32,7 @@ static void jpeg_v1_0_set_dec_ring_funcs(struct amdgpu_device *adev); static void jpeg_v1_0_set_irq_funcs(struct amdgpu_device *adev); +static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring); static void jpeg_v1_0_decode_ring_patch_wreg(struct amdgpu_ring *ring, uint32_t *ptr, uint32_t reg_offset, uint32_t val) { @@ -563,8 +564,8 @@ .insert_start = jpeg_v1_0_decode_ring_insert_start, .insert_end = jpeg_v1_0_decode_ring_insert_end, .pad_ib = amdgpu_ring_generic_pad_ib, - .begin_use = vcn_v1_0_ring_begin_use, - .end_use = amdgpu_vcn_ring_end_use, + .begin_use = jpeg_v1_0_ring_begin_use, + .end_use = vcn_v1_0_ring_end_use, .emit_wreg = jpeg_v1_0_decode_ring_emit_wreg, .emit_reg_wait = jpeg_v1_0_decode_ring_emit_reg_wait, .emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper, @@ -585,3 +586,22 @@ { adev->jpeg.inst->irq.funcs = &jpeg_v1_0_irq_funcs; } + +static void jpeg_v1_0_ring_begin_use(struct amdgpu_ring *ring) +{ + struct amdgpu_device *adev = ring->adev; + bool set_clocks = !cancel_delayed_work_sync(&adev->vcn.idle_work); + int cnt = 0; + + mutex_lock(&adev->vcn.vcn1_jpeg1_workaround); + + if (amdgpu_fence_wait_empty(&adev->vcn.inst->ring_dec)) + DRM_ERROR("JPEG dec: vcn dec ring may not be empty\n"); + + for (cnt = 0; cnt < adev->vcn.num_enc_rings; cnt++) { + if (amdgpu_fence_wait_empty(&adev->vcn.inst->ring_enc[cnt])) + DRM_ERROR("JPEG dec: vcn enc ring[%d] may not be empty\n", cnt); + } + + vcn_v1_0_set_pg_for_begin_use(ring, set_clocks); +} --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c @@ -462,7 +462,7 @@ return ret; } - return ret; + return 0; } static int jpeg_v2_5_set_clockgating_state(void *handle, --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/nv.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/nv.c @@ -449,6 +449,14 @@ return 0; } +static bool nv_is_blockchain_sku(struct pci_dev *pdev) +{ + if (pdev->device == 0x731E && + (pdev->revision == 0xC6 || pdev->revision == 0xC7)) + return true; + return false; +} + int nv_set_ip_blocks(struct amdgpu_device *adev) { int r; @@ -480,7 +488,8 @@ if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); #if defined(CONFIG_DRM_AMD_DC) - else if (amdgpu_device_has_dc_support(adev)) + else if (amdgpu_device_has_dc_support(adev) && + !nv_is_blockchain_sku(adev->pdev)) amdgpu_device_ip_block_add(adev, &dm_ip_block); #endif amdgpu_device_ip_block_add(adev, &gfx_v10_0_ip_block); @@ -488,7 +497,8 @@ if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT && !amdgpu_sriov_vf(adev)) amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block); - amdgpu_device_ip_block_add(adev, &vcn_v2_0_ip_block); + if (!nv_is_blockchain_sku(adev->pdev)) + amdgpu_device_ip_block_add(adev, &vcn_v2_0_ip_block); amdgpu_device_ip_block_add(adev, &jpeg_v2_0_ip_block); if (adev->enable_mes) amdgpu_device_ip_block_add(adev, &mes_v10_1_ip_block); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h @@ -47,7 +47,7 @@ GFX_CTRL_CMD_ID_DISABLE_INT = 0x00060000, /* disable PSP-to-Gfx interrupt */ GFX_CTRL_CMD_ID_MODE1_RST = 0x00070000, /* trigger the Mode 1 reset */ GFX_CTRL_CMD_ID_GBR_IH_SET = 0x00080000, /* set Gbr IH_RB_CNTL registers */ - GFX_CTRL_CMD_ID_CONSUME_CMD = 0x000A0000, /* send interrupt to psp for updating write pointer of vf */ + GFX_CTRL_CMD_ID_CONSUME_CMD = 0x00090000, /* send interrupt to psp for updating write pointer of vf */ GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING = 0x000C0000, /* destroy GPCOM ring */ GFX_CTRL_CMD_ID_MAX = 0x000F0000, /* max command ID */ --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/soc15.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/soc15.c @@ -281,6 +281,8 @@ { u32 reference_clock = adev->clock.spll.reference_freq; + if (adev->asic_type == CHIP_RENOIR) + return 10000; if (adev->asic_type == CHIP_RAVEN) return reference_clock / 4; @@ -1230,7 +1232,16 @@ break; case CHIP_RENOIR: adev->asic_funcs = &soc15_asic_funcs; - adev->apu_flags |= AMD_APU_IS_RENOIR; + if ((adev->pdev->device == 0x1636) || + (adev->pdev->device == 0x164c)) + adev->apu_flags |= AMD_APU_IS_RENOIR; + else + adev->apu_flags |= AMD_APU_IS_GREEN_SARDINE; + + if (adev->apu_flags & AMD_APU_IS_RENOIR) + adev->external_rev_id = adev->rev_id + 0x91; + else + adev->external_rev_id = adev->rev_id + 0xa1; adev->cg_flags = AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS | AMD_CG_SUPPORT_GFX_3D_CGCG | @@ -1255,7 +1266,6 @@ AMD_PG_SUPPORT_VCN | AMD_PG_SUPPORT_JPEG | AMD_PG_SUPPORT_VCN_DPG; - adev->external_rev_id = adev->rev_id + 0x91; break; default: /* FIXME: not supported yet */ --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/tonga_ih.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/tonga_ih.c @@ -195,19 +195,30 @@ wptr = le32_to_cpu(*ih->wptr_cpu); - if (REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) { - wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); - /* When a ring buffer overflow happen start parsing interrupt - * from the last not overwritten vector (wptr + 16). Hopefully - * this should allow us to catchup. - */ - dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", - wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); - ih->rptr = (wptr + 16) & ih->ptr_mask; - tmp = RREG32(mmIH_RB_CNTL); - tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); - WREG32(mmIH_RB_CNTL, tmp); - } + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + /* Double check that the overflow wasn't already cleared. */ + wptr = RREG32(mmIH_RB_WPTR); + + if (!REG_GET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW)) + goto out; + + wptr = REG_SET_FIELD(wptr, IH_RB_WPTR, RB_OVERFLOW, 0); + + /* When a ring buffer overflow happen start parsing interrupt + * from the last not overwritten vector (wptr + 16). Hopefully + * this should allow us to catchup. + */ + + dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", + wptr, ih->rptr, (wptr + 16) & ih->ptr_mask); + ih->rptr = (wptr + 16) & ih->ptr_mask; + tmp = RREG32(mmIH_RB_CNTL); + tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, WPTR_OVERFLOW_CLEAR, 1); + WREG32(mmIH_RB_CNTL, tmp); + +out: return (wptr & ih->ptr_mask); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c @@ -38,6 +38,7 @@ #include "ivsrcid/vcn/irqsrcs_vcn_1_0.h" #include "jpeg_v1_0.h" +#include "vcn_v1_0.h" #define mmUVD_RBC_XX_IB_REG_CHECK_1_0 0x05ab #define mmUVD_RBC_XX_IB_REG_CHECK_1_0_BASE_IDX 1 @@ -53,6 +54,7 @@ int inst_idx, struct dpg_pause_state *new_state); static void vcn_v1_0_idle_work_handler(struct work_struct *work); +static void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring); /** * vcn_v1_0_early_init - set function pointers @@ -1805,11 +1807,24 @@ } } -void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring) +static void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring) { - struct amdgpu_device *adev = ring->adev; + struct amdgpu_device *adev = ring->adev; bool set_clocks = !cancel_delayed_work_sync(&adev->vcn.idle_work); + mutex_lock(&adev->vcn.vcn1_jpeg1_workaround); + + if (amdgpu_fence_wait_empty(&ring->adev->jpeg.inst->ring_dec)) + DRM_ERROR("VCN dec: jpeg dec ring may not be empty\n"); + + vcn_v1_0_set_pg_for_begin_use(ring, set_clocks); + +} + +void vcn_v1_0_set_pg_for_begin_use(struct amdgpu_ring *ring, bool set_clocks) +{ + struct amdgpu_device *adev = ring->adev; + if (set_clocks) { amdgpu_gfx_off_ctrl(adev, false); if (adev->pm.dpm_enabled) @@ -1845,6 +1860,12 @@ } } +void vcn_v1_0_ring_end_use(struct amdgpu_ring *ring) +{ + schedule_delayed_work(&ring->adev->vcn.idle_work, VCN_IDLE_TIMEOUT); + mutex_unlock(&ring->adev->vcn.vcn1_jpeg1_workaround); +} + static const struct amd_ip_funcs vcn_v1_0_ip_funcs = { .name = "vcn_v1_0", .early_init = vcn_v1_0_early_init, @@ -1892,7 +1913,7 @@ .insert_end = vcn_v1_0_dec_ring_insert_end, .pad_ib = amdgpu_ring_generic_pad_ib, .begin_use = vcn_v1_0_ring_begin_use, - .end_use = amdgpu_vcn_ring_end_use, + .end_use = vcn_v1_0_ring_end_use, .emit_wreg = vcn_v1_0_dec_ring_emit_wreg, .emit_reg_wait = vcn_v1_0_dec_ring_emit_reg_wait, .emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper, @@ -1924,7 +1945,7 @@ .insert_end = vcn_v1_0_enc_ring_insert_end, .pad_ib = amdgpu_ring_generic_pad_ib, .begin_use = vcn_v1_0_ring_begin_use, - .end_use = amdgpu_vcn_ring_end_use, + .end_use = vcn_v1_0_ring_end_use, .emit_wreg = vcn_v1_0_enc_ring_emit_wreg, .emit_reg_wait = vcn_v1_0_enc_ring_emit_reg_wait, .emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper, --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.h @@ -24,7 +24,8 @@ #ifndef __VCN_V1_0_H__ #define __VCN_V1_0_H__ -void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring); +void vcn_v1_0_ring_end_use(struct amdgpu_ring *ring); +void vcn_v1_0_set_pg_for_begin_use(struct amdgpu_ring *ring, bool set_clocks); extern const struct amdgpu_ip_block_version vcn_v1_0_ip_block; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -1728,6 +1728,7 @@ } mutex_unlock(&p->mutex); + dma_buf_put(dmabuf); args->handle = MAKE_HANDLE(args->gpu_id, idr_handle); @@ -1737,6 +1738,7 @@ amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem, NULL); err_unlock: mutex_unlock(&p->mutex); + dma_buf_put(dmabuf); return r; } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_crat.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_crat.c @@ -756,6 +756,7 @@ struct acpi_table_header *crat_table; acpi_status status; void *pcrat_image; + int rc = 0; if (!crat_image) return -EINVAL; @@ -780,13 +781,16 @@ } pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL); - if (!pcrat_image) - return -ENOMEM; + if (!pcrat_image) { + rc = -ENOMEM; + goto out; + } *crat_image = pcrat_image; *size = crat_table->length; - - return 0; +out: + acpi_put_table(crat_table); + return rc; } /* Memory required to create Virtual CRAT. @@ -970,6 +974,7 @@ CRAT_OEMID_LENGTH); memcpy(crat_table->oem_table_id, acpi_table->oem_table_id, CRAT_OEMTABLEID_LENGTH); + acpi_put_table(acpi_table); } crat_table->total_entries = 0; crat_table->num_domains = 0; @@ -1011,11 +1016,14 @@ (struct crat_subtype_iolink *)sub_type_hdr); if (ret < 0) return ret; - crat_table->length += (sub_type_hdr->length * entries); - crat_table->total_entries += entries; - sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + - sub_type_hdr->length * entries); + if (entries) { + crat_table->length += (sub_type_hdr->length * entries); + crat_table->total_entries += entries; + + sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + + sub_type_hdr->length * entries); + } #else pr_info("IO link not available for non x86 platforms\n"); #endif --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c @@ -155,7 +155,7 @@ /* Wait till CP writes sync code: */ status = amdkfd_fence_wait_timeout( - (unsigned int *) rm_state, + rm_state, QUEUESTATE__ACTIVE, 1500); kfd_gtt_sa_free(dbgdev->dev, mem_obj); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c @@ -1145,7 +1145,7 @@ if (retval) goto fail_allocate_vidmem; - dqm->fence_addr = dqm->fence_mem->cpu_ptr; + dqm->fence_addr = (uint64_t *)dqm->fence_mem->cpu_ptr; dqm->fence_gpu_addr = dqm->fence_mem->gpu_addr; init_interrupts(dqm); @@ -1177,6 +1177,8 @@ dqm->sched_running = false; dqm_unlock(dqm); + pm_release_ib(&dqm->packets); + kfd_gtt_sa_free(dqm->dev, dqm->fence_mem); pm_uninit(&dqm->packets, hanging); @@ -1287,7 +1289,7 @@ if (q->properties.is_active) { increment_queue_count(dqm, q->properties.type); - retval = execute_queues_cpsch(dqm, + execute_queues_cpsch(dqm, KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0); } @@ -1316,8 +1318,8 @@ return retval; } -int amdkfd_fence_wait_timeout(unsigned int *fence_addr, - unsigned int fence_value, +int amdkfd_fence_wait_timeout(uint64_t *fence_addr, + uint64_t fence_value, unsigned int timeout_ms) { unsigned long end_jiffies = msecs_to_jiffies(timeout_ms) + jiffies; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h @@ -192,7 +192,7 @@ uint16_t vmid_pasid[VMID_NUM]; uint64_t pipelines_addr; uint64_t fence_gpu_addr; - unsigned int *fence_addr; + uint64_t *fence_addr; struct kfd_mem_obj *fence_mem; bool active_runlist; int sched_policy; @@ -243,11 +243,11 @@ static inline void dqm_lock(struct device_queue_manager *dqm) { mutex_lock(&dqm->lock_hidden); - dqm->saved_flags = memalloc_nofs_save(); + dqm->saved_flags = memalloc_noreclaim_save(); } static inline void dqm_unlock(struct device_queue_manager *dqm) { - memalloc_nofs_restore(dqm->saved_flags); + memalloc_noreclaim_restore(dqm->saved_flags); mutex_unlock(&dqm->lock_hidden); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v10.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v10.c @@ -58,8 +58,9 @@ /* check if sh_mem_config register already configured */ if (qpd->sh_mem_config == 0) { qpd->sh_mem_config = - SH_MEM_ALIGNMENT_MODE_UNALIGNED << - SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT; + (SH_MEM_ALIGNMENT_MODE_UNALIGNED << + SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT) | + (3 << SH_MEM_CONFIG__INITIAL_INST_PREFETCH__SHIFT); #if 0 /* TODO: * This shouldn't be an issue with Navi10. Verify. --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c @@ -343,7 +343,7 @@ } int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address, - uint32_t fence_value) + uint64_t fence_value) { uint32_t *buffer, size; int retval = 0; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c @@ -283,7 +283,7 @@ } static int pm_query_status_v9(struct packet_manager *pm, uint32_t *buffer, - uint64_t fence_address, uint32_t fence_value) + uint64_t fence_address, uint64_t fence_value) { struct pm4_mes_query_status *packet; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c @@ -263,7 +263,7 @@ } static int pm_query_status_vi(struct packet_manager *pm, uint32_t *buffer, - uint64_t fence_address, uint32_t fence_value) + uint64_t fence_address, uint64_t fence_value) { struct pm4_mes_query_status *packet; --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@ -953,8 +953,8 @@ u32 *ctl_stack_used_size, u32 *save_area_used_size); -int amdkfd_fence_wait_timeout(unsigned int *fence_addr, - unsigned int fence_value, +int amdkfd_fence_wait_timeout(uint64_t *fence_addr, + uint64_t fence_value, unsigned int timeout_ms); /* Packet Manager */ @@ -990,7 +990,7 @@ uint32_t filter_param, bool reset, unsigned int sdma_engine); int (*query_status)(struct packet_manager *pm, uint32_t *buffer, - uint64_t fence_address, uint32_t fence_value); + uint64_t fence_address, uint64_t fence_value); int (*release_mem)(uint64_t gpu_addr, uint32_t *buffer); /* Packet sizes */ @@ -1012,7 +1012,7 @@ struct scheduling_resources *res); int pm_send_runlist(struct packet_manager *pm, struct list_head *dqm_queues); int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address, - uint32_t fence_value); + uint64_t fence_value); int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type, enum kfd_unmap_queues_filter mode, --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -1003,8 +1003,10 @@ */ if (!pdd->runtime_inuse) { err = pm_runtime_get_sync(dev->ddev->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_autosuspend(dev->ddev->dev); return ERR_PTR(err); + } } err = kfd_iommu_bind_process_to_device(pdd); --- linux-5.8.0.orig/drivers/gpu/drm/amd/amdkfd/kfd_topology.c +++ linux-5.8.0/drivers/gpu/drm/amd/amdkfd/kfd_topology.c @@ -632,8 +632,10 @@ ret = kobject_init_and_add(dev->kobj_node, &node_type, sys_props.kobj_nodes, "%d", id); - if (ret < 0) + if (ret < 0) { + kobject_put(dev->kobj_node); return ret; + } dev->kobj_mem = kobject_create_and_add("mem_banks", dev->kobj_node); if (!dev->kobj_mem) @@ -680,8 +682,10 @@ return -ENOMEM; ret = kobject_init_and_add(mem->kobj, &mem_type, dev->kobj_mem, "%d", i); - if (ret < 0) + if (ret < 0) { + kobject_put(mem->kobj); return ret; + } mem->attr.name = "properties"; mem->attr.mode = KFD_SYSFS_FILE_MODE; @@ -699,8 +703,10 @@ return -ENOMEM; ret = kobject_init_and_add(cache->kobj, &cache_type, dev->kobj_cache, "%d", i); - if (ret < 0) + if (ret < 0) { + kobject_put(cache->kobj); return ret; + } cache->attr.name = "properties"; cache->attr.mode = KFD_SYSFS_FILE_MODE; @@ -718,8 +724,10 @@ return -ENOMEM; ret = kobject_init_and_add(iolink->kobj, &iolink_type, dev->kobj_iolink, "%d", i); - if (ret < 0) + if (ret < 0) { + kobject_put(iolink->kobj); return ret; + } iolink->attr.name = "properties"; iolink->attr.mode = KFD_SYSFS_FILE_MODE; @@ -798,8 +806,10 @@ ret = kobject_init_and_add(sys_props.kobj_topology, &sysprops_type, &kfd_device->kobj, "topology"); - if (ret < 0) + if (ret < 0) { + kobject_put(sys_props.kobj_topology); return ret; + } sys_props.kobj_nodes = kobject_create_and_add("nodes", sys_props.kobj_topology); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -954,7 +954,7 @@ amdgpu_dm_init_color_mod(); #ifdef CONFIG_DRM_AMD_DC_HDCP - if (adev->asic_type >= CHIP_RAVEN) { + if (adev->dm.dc->caps.max_links > 0 && adev->asic_type >= CHIP_RAVEN) { adev->dm.hdcp_workqueue = hdcp_create_workqueue(adev, &init_params.cp_psp, adev->dm.dc); if (!adev->dm.hdcp_workqueue) @@ -971,9 +971,6 @@ goto error; } - /* Update the actual used number of crtc */ - adev->mode_info.num_crtc = adev->dm.display_indexes_num; - /* create fake encoders for MST */ dm_dp_create_fake_mst_encoders(adev); @@ -1012,7 +1009,7 @@ #ifdef CONFIG_DRM_AMD_DC_HDCP if (adev->dm.hdcp_workqueue) { - hdcp_destroy(adev->dm.hdcp_workqueue); + hdcp_destroy(&adev->dev->kobj, adev->dm.hdcp_workqueue); adev->dm.hdcp_workqueue = NULL; } @@ -1697,8 +1694,8 @@ link->type = dc_connection_none; prev_sink = link->local_sink; - if (prev_sink != NULL) - dc_sink_retain(prev_sink); + if (prev_sink) + dc_sink_release(prev_sink); switch (link->connector_signal) { case SIGNAL_TYPE_HDMI_TYPE_A: { @@ -2045,6 +2042,11 @@ caps->ext_caps->bits.hdr_aux_backlight_control == 1) caps->aux_support = true; + if (amdgpu_backlight == 0) + caps->aux_support = false; + else if (amdgpu_backlight == 1) + caps->aux_support = true; + /* From the specification (CTA-861-G), for calculating the maximum * luminance we need to use: * Luminance = 50*2**(CV/32) @@ -2167,8 +2169,10 @@ * TODO: check if we still need the S3 mode update workaround. * If yes, put it here. */ - if (aconnector->dc_sink) + if (aconnector->dc_sink) { amdgpu_dm_update_freesync_caps(connector, NULL); + dc_sink_release(aconnector->dc_sink); + } aconnector->dc_sink = sink; dc_sink_retain(aconnector->dc_sink); @@ -2184,7 +2188,6 @@ drm_connector_update_edid_property(connector, aconnector->edid); - if (aconnector->dc_link->aux_mode) drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux, aconnector->edid); @@ -2821,12 +2824,18 @@ &dm_atomic_state_funcs); r = amdgpu_display_modeset_create_props(adev); - if (r) + if (r) { + dc_release_state(state->context); + kfree(state); return r; + } r = amdgpu_dm_audio_init(adev); - if (r) + if (r) { + dc_release_state(state->context); + kfree(state); return r; + } return 0; } @@ -2843,6 +2852,8 @@ #if defined(CONFIG_ACPI) struct amdgpu_dm_backlight_caps caps; + memset(&caps, 0, sizeof(caps)); + if (dm->backlight_caps.caps_valid) return; @@ -2868,64 +2879,50 @@ #endif } -static int set_backlight_via_aux(struct dc_link *link, uint32_t brightness) +static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps, + unsigned *min, unsigned *max) { - bool rc; - - if (!link) - return 1; - - rc = dc_link_set_backlight_level_nits(link, true, brightness, - AUX_BL_DEFAULT_TRANSITION_TIME_MS); + if (!caps) + return 0; - return rc ? 0 : 1; + if (caps->aux_support) { + // Firmware limits are in nits, DC API wants millinits. + *max = 1000 * caps->aux_max_input_signal; + *min = 1000 * caps->aux_min_input_signal; + } else { + // Firmware limits are 8-bit, PWM control is 16-bit. + *max = 0x101 * caps->max_input_signal; + *min = 0x101 * caps->min_input_signal; + } + return 1; } -static u32 convert_brightness(const struct amdgpu_dm_backlight_caps *caps, - const uint32_t user_brightness) +static u32 convert_brightness_from_user(const struct amdgpu_dm_backlight_caps *caps, + uint32_t brightness) { - u32 min, max, conversion_pace; - u32 brightness = user_brightness; + unsigned min, max; - if (!caps) - goto out; + if (!get_brightness_range(caps, &min, &max)) + return brightness; - if (!caps->aux_support) { - max = caps->max_input_signal; - min = caps->min_input_signal; - /* - * The brightness input is in the range 0-255 - * It needs to be rescaled to be between the - * requested min and max input signal - * It also needs to be scaled up by 0x101 to - * match the DC interface which has a range of - * 0 to 0xffff - */ - conversion_pace = 0x101; - brightness = - user_brightness - * conversion_pace - * (max - min) - / AMDGPU_MAX_BL_LEVEL - + min * conversion_pace; - } else { - /* TODO - * We are doing a linear interpolation here, which is OK but - * does not provide the optimal result. We probably want - * something close to the Perceptual Quantizer (PQ) curve. - */ - max = caps->aux_max_input_signal; - min = caps->aux_min_input_signal; + // Rescale 0..255 to min..max + return min + DIV_ROUND_CLOSEST((max - min) * brightness, + AMDGPU_MAX_BL_LEVEL); +} - brightness = (AMDGPU_MAX_BL_LEVEL - user_brightness) * min - + user_brightness * max; - // Multiple the value by 1000 since we use millinits - brightness *= 1000; - brightness = DIV_ROUND_CLOSEST(brightness, AMDGPU_MAX_BL_LEVEL); - } +static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *caps, + uint32_t brightness) +{ + unsigned min, max; -out: - return brightness; + if (!get_brightness_range(caps, &min, &max)) + return brightness; + + if (brightness < min) + return 0; + // Rescale min..max to 0..255 + return DIV_ROUND_CLOSEST(AMDGPU_MAX_BL_LEVEL * (brightness - min), + max - min); } static int amdgpu_dm_backlight_update_status(struct backlight_device *bd) @@ -2941,12 +2938,13 @@ link = (struct dc_link *)dm->backlight_link; - brightness = convert_brightness(&caps, bd->props.brightness); + brightness = convert_brightness_from_user(&caps, bd->props.brightness); // Change brightness based on AUX property if (caps.aux_support) - return set_backlight_via_aux(link, brightness); - - rc = dc_link_set_backlight_level(dm->backlight_link, brightness, 0); + rc = dc_link_set_backlight_level_nits(link, true, brightness, + AUX_BL_DEFAULT_TRANSITION_TIME_MS); + else + rc = dc_link_set_backlight_level(dm->backlight_link, brightness, 0); return rc ? 0 : 1; } @@ -2954,11 +2952,27 @@ static int amdgpu_dm_backlight_get_brightness(struct backlight_device *bd) { struct amdgpu_display_manager *dm = bl_get_data(bd); - int ret = dc_link_get_backlight_level(dm->backlight_link); + struct amdgpu_dm_backlight_caps caps; - if (ret == DC_ERROR_UNEXPECTED) - return bd->props.brightness; - return ret; + amdgpu_dm_update_backlight_caps(dm); + caps = dm->backlight_caps; + + if (caps.aux_support) { + struct dc_link *link = (struct dc_link *)dm->backlight_link; + u32 avg, peak; + bool rc; + + rc = dc_link_get_backlight_level_nits(link, &avg, &peak); + if (!rc) + return bd->props.brightness; + return convert_brightness_to_user(&caps, avg); + } else { + int ret = dc_link_get_backlight_level(dm->backlight_link); + + if (ret == DC_ERROR_UNEXPECTED) + return bd->props.brightness; + return convert_brightness_to_user(&caps, ret); + } } static const struct backlight_ops amdgpu_dm_backlight_ops = { @@ -3079,6 +3093,10 @@ enum dc_connection_type new_connection_type = dc_connection_none; const struct dc_plane_cap *plane; + dm->display_indexes_num = dm->dc->caps.max_streams; + /* Update the actual used number of crtc */ + adev->mode_info.num_crtc = adev->dm.display_indexes_num; + link_cnt = dm->dc->caps.max_links; if (amdgpu_dm_mode_config_init(dm->adev)) { DRM_ERROR("DM: Failed to initialize mode config\n"); @@ -3140,8 +3158,6 @@ goto fail; } - dm->display_indexes_num = dm->dc->caps.max_streams; - /* loops over all connectors on the board */ for (i = 0; i < link_cnt; i++) { struct dc_link *link = NULL; @@ -4854,6 +4870,13 @@ struct amdgpu_device *adev = connector->dev->dev_private; struct amdgpu_display_manager *dm = &adev->dm; + /* + * Call only if mst_mgr was iniitalized before since it's not done + * for all connector types. + */ + if (aconnector->mst_mgr.dev) + drm_dp_mst_topology_mgr_destroy(&aconnector->mst_mgr); + #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) ||\ defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) @@ -5067,6 +5090,15 @@ } while (stream == NULL && requested_bpc >= 6); + if (dc_result == DC_FAIL_ENC_VALIDATE && !aconnector->force_yuv420_output) { + DRM_DEBUG_KMS("Retry forcing YCbCr420 encoding\n"); + + aconnector->force_yuv420_output = true; + stream = create_validate_stream_for_sink(aconnector, drm_mode, + dm_state, old_stream); + aconnector->force_yuv420_output = false; + } + return stream; } @@ -5249,19 +5281,6 @@ { } -static bool does_crtc_have_active_cursor(struct drm_crtc_state *new_crtc_state) -{ - struct drm_device *dev = new_crtc_state->crtc->dev; - struct drm_plane *plane; - - drm_for_each_plane_mask(plane, dev, new_crtc_state->plane_mask) { - if (plane->type == DRM_PLANE_TYPE_CURSOR) - return true; - } - - return false; -} - static int count_crtc_active_planes(struct drm_crtc_state *new_crtc_state) { struct drm_atomic_state *state = new_crtc_state->state; @@ -5341,19 +5360,20 @@ return ret; } - /* In some use cases, like reset, no stream is attached */ - if (!dm_crtc_state->stream) - return 0; - /* - * We want at least one hardware plane enabled to use - * the stream with a cursor enabled. + * We require the primary plane to be enabled whenever the CRTC is, otherwise + * drm_mode_cursor_universal may end up trying to enable the cursor plane while all other + * planes are disabled, which is not supported by the hardware. And there is legacy + * userspace which stops using the HW cursor altogether in response to the resulting EINVAL. */ - if (state->enable && state->active && - does_crtc_have_active_cursor(state) && - dm_crtc_state->active_planes == 0) + if (state->enable && + !(state->plane_mask & drm_plane_mask(crtc->primary))) return -EINVAL; + /* In some use cases, like reset, no stream is attached */ + if (!dm_crtc_state->stream) + return 0; + if (dc_validate_stream(dc, dm_crtc_state->stream) == DC_OK) return 0; @@ -7656,14 +7676,14 @@ ret = PTR_ERR_OR_ZERO(conn_state); if (ret) - goto err; + goto out; /* Attach crtc to drm_atomic_state*/ crtc_state = drm_atomic_get_crtc_state(state, &disconnected_acrtc->base); ret = PTR_ERR_OR_ZERO(crtc_state); if (ret) - goto err; + goto out; /* force a restore */ crtc_state->mode_changed = true; @@ -7673,17 +7693,15 @@ ret = PTR_ERR_OR_ZERO(plane_state); if (ret) - goto err; - + goto out; /* Call commit internally with the state we just constructed */ ret = drm_atomic_commit(state); - if (!ret) - return 0; -err: - DRM_ERROR("Restoring old state failed with %i\n", ret); +out: drm_atomic_state_put(state); + if (ret) + DRM_ERROR("Restoring old state failed with %i\n", ret); return ret; } @@ -8182,8 +8200,7 @@ dm_old_plane_state->dc_state, dm_state->context)) { - ret = EINVAL; - return ret; + return -EINVAL; } @@ -8686,6 +8703,29 @@ if (ret) goto fail; + /* Check connector changes */ + for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) { + struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state); + struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state); + + /* Skip connectors that are disabled or part of modeset already. */ + if (!old_con_state->crtc && !new_con_state->crtc) + continue; + + if (!new_con_state->crtc) + continue; + + new_crtc_state = drm_atomic_get_crtc_state(state, new_con_state->crtc); + if (IS_ERR(new_crtc_state)) { + ret = PTR_ERR(new_crtc_state); + goto fail; + } + + if (dm_old_con_state->abm_level != + dm_new_con_state->abm_level) + new_crtc_state->connectors_changed = true; + } + #if defined(CONFIG_DRM_AMD_DC_DCN) if (!compute_mst_dsc_configs_for_state(state, dm_state->context)) goto fail; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c @@ -195,10 +195,13 @@ bool has_rom) { struct dc_gamma *gamma = NULL; + struct calculate_buffer cal_buffer = {0}; bool res; ASSERT(lut && lut_size == MAX_COLOR_LEGACY_LUT_ENTRIES); + cal_buffer.buffer_index = -1; + gamma = dc_create_gamma(); if (!gamma) return -ENOMEM; @@ -208,7 +211,7 @@ __drm_lut_to_dc_gamma(lut, gamma, true); res = mod_color_calculate_regamma_params(func, gamma, true, has_rom, - NULL); + NULL, &cal_buffer); dc_gamma_release(&gamma); @@ -221,10 +224,13 @@ bool has_rom) { struct dc_gamma *gamma = NULL; + struct calculate_buffer cal_buffer = {0}; bool res; ASSERT(lut && lut_size == MAX_COLOR_LUT_ENTRIES); + cal_buffer.buffer_index = -1; + gamma = dc_create_gamma(); if (!gamma) return -ENOMEM; @@ -248,7 +254,7 @@ */ gamma->type = GAMMA_CS_TFM_1D; res = mod_color_calculate_regamma_params(func, gamma, false, - has_rom, NULL); + has_rom, NULL, &cal_buffer); } dc_gamma_release(&gamma); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c @@ -113,7 +113,7 @@ mutex_lock(&adev->dm.dc_lock); /* Enable CRTC CRC generation if necessary. */ - if (dm_is_crc_source_crtc(source)) { + if (dm_is_crc_source_crtc(source) || source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE) { if (!dc_stream_configure_crc(stream_state->ctx->dc, stream_state, enable, enable)) { ret = -EINVAL; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c @@ -376,7 +376,7 @@ } -void hdcp_destroy(struct hdcp_workqueue *hdcp_work) +void hdcp_destroy(struct kobject *kobj, struct hdcp_workqueue *hdcp_work) { int i = 0; @@ -385,6 +385,7 @@ cancel_delayed_work_sync(&hdcp_work[i].watchdog_timer_dwork); } + sysfs_remove_bin_file(kobj, &hdcp_work[0].attr); kfree(hdcp_work->srm); kfree(hdcp_work->srm_temp); kfree(hdcp_work); @@ -568,7 +569,7 @@ int i = 0; hdcp_work = kcalloc(max_caps, sizeof(*hdcp_work), GFP_KERNEL); - if (hdcp_work == NULL) + if (ZERO_OR_NULL_PTR(hdcp_work)) return NULL; hdcp_work->srm = kcalloc(PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE, sizeof(*hdcp_work->srm), GFP_KERNEL); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h @@ -69,7 +69,7 @@ void hdcp_reset_display(struct hdcp_workqueue *work, unsigned int link_index); void hdcp_handle_cpirq(struct hdcp_workqueue *work, unsigned int link_index); -void hdcp_destroy(struct hdcp_workqueue *work); +void hdcp_destroy(struct kobject *kobj, struct hdcp_workqueue *work); struct hdcp_workqueue *hdcp_create_workqueue(struct amdgpu_device *adev, struct cp_psp *cp_psp, struct dc *dc); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -67,7 +67,7 @@ result = dc_link_aux_transfer_raw(TO_DM_AUX(aux)->ddc_service, &payload, &operation_result); - if (payload.write) + if (payload.write && result >= 0) result = msg->size; if (result < 0) @@ -790,6 +790,9 @@ if (computed_streams[i]) continue; + if (dcn20_remove_stream_from_ctx(stream->ctx->dc, dc_state, stream) != DC_OK) + return false; + mutex_lock(&aconnector->mst_mgr.lock); if (!compute_mst_dsc_configs_for_link(state, dc_state, stream->link)) { mutex_unlock(&aconnector->mst_mgr.lock); @@ -807,7 +810,8 @@ stream = dc_state->streams[i]; if (stream->timing.flags.DSC == 1) - dcn20_add_dsc_to_stream_resource(stream->ctx->dc, dc_state, stream); + if (dcn20_add_dsc_to_stream_resource(stream->ctx->dc, dc_state, stream) != DC_OK) + return false; } return true; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_pp_smu.c @@ -106,7 +106,7 @@ adev->powerplay.pp_funcs->display_configuration_change( adev->powerplay.pp_handle, &adev->pm.pm_display_cfg); - else + else if (adev->smu.ppt_funcs) smu_display_configuration_change(smu, &adev->pm.pm_display_cfg); @@ -530,6 +530,8 @@ &pp_clk_info); else if (adev->smu.ppt_funcs) ret = smu_get_current_clocks(&adev->smu, &pp_clk_info); + else + return false; if (ret) return false; @@ -590,7 +592,7 @@ if (pp_funcs && pp_funcs->set_watermarks_for_clocks_ranges) pp_funcs->set_watermarks_for_clocks_ranges(pp_handle, &wm_with_clock_ranges); - else + else if (adev->smu.ppt_funcs) smu_set_watermarks_for_clock_ranges(&adev->smu, &wm_with_clock_ranges); } --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/bios/command_table.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/bios/command_table.c @@ -245,6 +245,23 @@ cntl->enable_dp_audio); params.ucLaneNum = (uint8_t)(cntl->lanes_number); + switch (cntl->color_depth) { + case COLOR_DEPTH_888: + params.ucBitPerColor = PANEL_8BIT_PER_COLOR; + break; + case COLOR_DEPTH_101010: + params.ucBitPerColor = PANEL_10BIT_PER_COLOR; + break; + case COLOR_DEPTH_121212: + params.ucBitPerColor = PANEL_12BIT_PER_COLOR; + break; + case COLOR_DEPTH_161616: + params.ucBitPerColor = PANEL_16BIT_PER_COLOR; + break; + default: + break; + } + if (EXEC_BIOS_CMD_TABLE(DIGxEncoderControl, params)) result = BP_RESULT_OK; @@ -274,6 +291,23 @@ cntl->enable_dp_audio)); params.ucLaneNum = (uint8_t)(cntl->lanes_number); + switch (cntl->color_depth) { + case COLOR_DEPTH_888: + params.ucBitPerColor = PANEL_8BIT_PER_COLOR; + break; + case COLOR_DEPTH_101010: + params.ucBitPerColor = PANEL_10BIT_PER_COLOR; + break; + case COLOR_DEPTH_121212: + params.ucBitPerColor = PANEL_12BIT_PER_COLOR; + break; + case COLOR_DEPTH_161616: + params.ucBitPerColor = PANEL_16BIT_PER_COLOR; + break; + default: + break; + } + if (EXEC_BIOS_CMD_TABLE(DIGxEncoderControl, params)) result = BP_RESULT_OK; @@ -1057,6 +1091,19 @@ * driver choose program it itself, i.e. here we program it * to 888 by default. */ + if (bp_params->signal_type == SIGNAL_TYPE_HDMI_TYPE_A) + switch (bp_params->color_depth) { + case TRANSMITTER_COLOR_DEPTH_30: + /* yes this is correct, the atom define is wrong */ + clk.sPCLKInput.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_32BPP; + break; + case TRANSMITTER_COLOR_DEPTH_36: + /* yes this is correct, the atom define is wrong */ + clk.sPCLKInput.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP; + break; + default: + break; + } if (EXEC_BIOS_CMD_TABLE(SetPixelClock, clk)) result = BP_RESULT_OK; @@ -1135,6 +1182,20 @@ * driver choose program it itself, i.e. here we pass required * target rate that includes deep color. */ + if (bp_params->signal_type == SIGNAL_TYPE_HDMI_TYPE_A) + switch (bp_params->color_depth) { + case TRANSMITTER_COLOR_DEPTH_30: + clk.sPCLKInput.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP_V6; + break; + case TRANSMITTER_COLOR_DEPTH_36: + clk.sPCLKInput.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP_V6; + break; + case TRANSMITTER_COLOR_DEPTH_48: + clk.sPCLKInput.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP; + break; + default: + break; + } if (EXEC_BIOS_CMD_TABLE(SetPixelClock, clk)) result = BP_RESULT_OK; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/clk_mgr/dce112/dce112_clk_mgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/clk_mgr/dce112/dce112_clk_mgr.c @@ -79,8 +79,7 @@ memset(&dce_clk_params, 0, sizeof(dce_clk_params)); /* Make sure requested clock isn't lower than minimum threshold*/ - if (requested_clk_khz > 0) - requested_clk_khz = max(requested_clk_khz, + requested_clk_khz = max(requested_clk_khz, clk_mgr_dce->base.dentist_vco_freq_khz / 62); dce_clk_params.target_clock_frequency = requested_clk_khz; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn10/rv1_clk_mgr.c @@ -85,12 +85,77 @@ return disp_clk_threshold; } -static void ramp_up_dispclk_with_dpp(struct clk_mgr_internal *clk_mgr, struct dc *dc, struct dc_clocks *new_clocks) +static void ramp_up_dispclk_with_dpp( + struct clk_mgr_internal *clk_mgr, + struct dc *dc, + struct dc_clocks *new_clocks, + bool safe_to_lower) { int i; int dispclk_to_dpp_threshold = rv1_determine_dppclk_threshold(clk_mgr, new_clocks); bool request_dpp_div = new_clocks->dispclk_khz > new_clocks->dppclk_khz; + /* this function is to change dispclk, dppclk and dprefclk according to + * bandwidth requirement. Its call stack is rv1_update_clocks --> + * update_clocks --> dcn10_prepare_bandwidth / dcn10_optimize_bandwidth + * --> prepare_bandwidth / optimize_bandwidth. before change dcn hw, + * prepare_bandwidth will be called first to allow enough clock, + * watermark for change, after end of dcn hw change, optimize_bandwidth + * is executed to lower clock to save power for new dcn hw settings. + * + * below is sequence of commit_planes_for_stream: + * + * step 1: prepare_bandwidth - raise clock to have enough bandwidth + * step 2: lock_doublebuffer_enable + * step 3: pipe_control_lock(true) - make dchubp register change will + * not take effect right way + * step 4: apply_ctx_for_surface - program dchubp + * step 5: pipe_control_lock(false) - dchubp register change take effect + * step 6: optimize_bandwidth --> dc_post_update_surfaces_to_stream + * for full_date, optimize clock to save power + * + * at end of step 1, dcn clocks (dprefclk, dispclk, dppclk) may be + * changed for new dchubp configuration. but real dcn hub dchubps are + * still running with old configuration until end of step 5. this need + * clocks settings at step 1 should not less than that before step 1. + * this is checked by two conditions: 1. if (should_set_clock(safe_to_lower + * , new_clocks->dispclk_khz, clk_mgr_base->clks.dispclk_khz) || + * new_clocks->dispclk_khz == clk_mgr_base->clks.dispclk_khz) + * 2. request_dpp_div = new_clocks->dispclk_khz > new_clocks->dppclk_khz + * + * the second condition is based on new dchubp configuration. dppclk + * for new dchubp may be different from dppclk before step 1. + * for example, before step 1, dchubps are as below: + * pipe 0: recout=(0,40,1920,980) viewport=(0,0,1920,979) + * pipe 1: recout=(0,0,1920,1080) viewport=(0,0,1920,1080) + * for dppclk for pipe0 need dppclk = dispclk + * + * new dchubp pipe split configuration: + * pipe 0: recout=(0,0,960,1080) viewport=(0,0,960,1080) + * pipe 1: recout=(960,0,960,1080) viewport=(960,0,960,1080) + * dppclk only needs dppclk = dispclk /2. + * + * dispclk, dppclk are not lock by otg master lock. they take effect + * after step 1. during this transition, dispclk are the same, but + * dppclk is changed to half of previous clock for old dchubp + * configuration between step 1 and step 6. This may cause p-state + * warning intermittently. + * + * for new_clocks->dispclk_khz == clk_mgr_base->clks.dispclk_khz, we + * need make sure dppclk are not changed to less between step 1 and 6. + * for new_clocks->dispclk_khz > clk_mgr_base->clks.dispclk_khz, + * new display clock is raised, but we do not know ratio of + * new_clocks->dispclk_khz and clk_mgr_base->clks.dispclk_khz, + * new_clocks->dispclk_khz /2 does not guarantee equal or higher than + * old dppclk. we could ignore power saving different between + * dppclk = displck and dppclk = dispclk / 2 between step 1 and step 6. + * as long as safe_to_lower = false, set dpclk = dispclk to simplify + * condition check. + * todo: review this change for other asic. + **/ + if (!safe_to_lower) + request_dpp_div = false; + /* set disp clk to dpp clk threshold */ clk_mgr->funcs->set_dispclk(clk_mgr, dispclk_to_dpp_threshold); @@ -209,7 +274,7 @@ /* program dispclk on = as a w/a for sleep resume clock ramping issues */ if (should_set_clock(safe_to_lower, new_clocks->dispclk_khz, clk_mgr_base->clks.dispclk_khz) || new_clocks->dispclk_khz == clk_mgr_base->clks.dispclk_khz) { - ramp_up_dispclk_with_dpp(clk_mgr, dc, new_clocks); + ramp_up_dispclk_with_dpp(clk_mgr, dc, new_clocks, safe_to_lower); clk_mgr_base->clks.dispclk_khz = new_clocks->dispclk_khz; send_request_to_lower = true; } --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c @@ -158,8 +158,17 @@ new_clocks->dppclk_khz = 100000; } - if (should_set_clock(safe_to_lower, new_clocks->dppclk_khz, clk_mgr->base.clks.dppclk_khz)) { - if (clk_mgr->base.clks.dppclk_khz > new_clocks->dppclk_khz) + /* + * Temporally ignore thew 0 cases for disp and dpp clks. + * We may have a new feature that requires 0 clks in the future. + */ + if (new_clocks->dppclk_khz == 0 || new_clocks->dispclk_khz == 0) { + new_clocks->dppclk_khz = clk_mgr_base->clks.dppclk_khz; + new_clocks->dispclk_khz = clk_mgr_base->clks.dispclk_khz; + } + + if (should_set_clock(safe_to_lower, new_clocks->dppclk_khz, clk_mgr_base->clks.dppclk_khz)) { + if (clk_mgr_base->clks.dppclk_khz > new_clocks->dppclk_khz) dpp_clock_lowered = true; clk_mgr_base->clks.dppclk_khz = new_clocks->dppclk_khz; update_dppclk = true; @@ -558,24 +567,24 @@ .wm_inst = WM_B, .wm_type = WM_TYPE_PSTATE_CHG, .pstate_latency_us = 11.72, - .sr_exit_time_us = 10.12, - .sr_enter_plus_exit_time_us = 11.48, + .sr_exit_time_us = 11.12, + .sr_enter_plus_exit_time_us = 12.48, .valid = true, }, { .wm_inst = WM_C, .wm_type = WM_TYPE_PSTATE_CHG, .pstate_latency_us = 11.72, - .sr_exit_time_us = 10.12, - .sr_enter_plus_exit_time_us = 11.48, + .sr_exit_time_us = 11.12, + .sr_enter_plus_exit_time_us = 12.48, .valid = true, }, { .wm_inst = WM_D, .wm_type = WM_TYPE_PSTATE_CHG, .pstate_latency_us = 11.72, - .sr_exit_time_us = 10.12, - .sr_enter_plus_exit_time_us = 11.48, + .sr_exit_time_us = 11.12, + .sr_enter_plus_exit_time_us = 12.48, .valid = true, }, } @@ -699,6 +708,7 @@ { struct dc_debug_options *debug = &ctx->dc->debug; struct dpm_clocks clock_table = { 0 }; + enum pp_smu_status status = 0; clk_mgr->base.ctx = ctx; clk_mgr->base.funcs = &dcn21_funcs; @@ -751,8 +761,10 @@ clk_mgr->base.bw_params = &rn_bw_params; if (pp_smu && pp_smu->rn_funcs.get_dpm_clock_table) { - pp_smu->rn_funcs.get_dpm_clock_table(&pp_smu->rn_funcs.pp_smu, &clock_table); - if (ctx->dc_bios && ctx->dc_bios->integrated_info) { + status = pp_smu->rn_funcs.get_dpm_clock_table(&pp_smu->rn_funcs.pp_smu, &clock_table); + + if (status == PP_SMU_RESULT_OK && + ctx->dc_bios && ctx->dc_bios->integrated_info) { rn_clk_mgr_helper_populate_bw_params (clk_mgr->base.bw_params, &clock_table, ctx->dc_bios->integrated_info); } } --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/core/dc.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -2538,7 +2538,7 @@ copy_stream_update_to_stream(dc, context, stream, stream_update); - if (update_type > UPDATE_TYPE_FAST) { + if (update_type >= UPDATE_TYPE_FULL) { if (!dc->res_pool->funcs->validate_bandwidth(dc, context, false)) { DC_ERROR("Mode validation failed for stream update!\n"); dc_release_state(context); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/core/dc_link.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/core/dc_link.c @@ -767,6 +767,7 @@ sink_caps->signal = dp_passive_dongle_detection(link->ddc, sink_caps, audio_support); + link->dpcd_caps.dongle_type = sink_caps->dongle_type; } return true; @@ -1457,6 +1458,11 @@ goto ddc_create_fail; } + if (!link->ddc->ddc_pin) { + DC_ERROR("Failed to get I2C info for connector!\n"); + goto ddc_create_fail; + } + link->ddc_hw_inst = dal_ddc_get_line(dal_ddc_service_get_ddc_pin(link->ddc)); @@ -2438,7 +2444,7 @@ /* A hack to avoid failing any modes for EDID override feature on * topology change such as lower quality cable for DP or different dongle */ - if (link->remote_sinks[0]) + if (link->remote_sinks[0] && link->remote_sinks[0]->sink_signal == SIGNAL_TYPE_VIRTUAL) return DC_OK; /* Passive Dongle */ @@ -2468,9 +2474,14 @@ static struct abm *get_abm_from_stream_res(const struct dc_link *link) { int i; - struct dc *dc = link->ctx->dc; + struct dc *dc = NULL; struct abm *abm = NULL; + if (!link || !link->ctx) + return NULL; + + dc = link->ctx->dc; + for (i = 0; i < MAX_PIPES; i++) { struct pipe_ctx pipe_ctx = dc->current_state->res_ctx.pipe_ctx[i]; struct dc_stream_state *stream = pipe_ctx.stream; @@ -2542,7 +2553,6 @@ if (pipe_ctx->plane_state == NULL) frame_ramp = 0; } else { - ASSERT(false); return false; } @@ -3268,7 +3278,6 @@ #if defined(CONFIG_DRM_AMD_DC_HDCP) update_psp_stream_config(pipe_ctx, true); #endif - dc->hwss.blank_stream(pipe_ctx); if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) @@ -3373,8 +3382,12 @@ uint32_t kbps; if (timing->flags.DSC) { - kbps = (timing->pix_clk_100hz * timing->dsc_cfg.bits_per_pixel); - kbps = kbps / 160 + ((kbps % 160) ? 1 : 0); + struct fixed31_32 link_bw_kbps; + + link_bw_kbps = dc_fixpt_from_int(timing->pix_clk_100hz); + link_bw_kbps = dc_fixpt_div_int(link_bw_kbps, 160); + link_bw_kbps = dc_fixpt_mul_int(link_bw_kbps, timing->dsc_cfg.bits_per_pixel); + kbps = dc_fixpt_ceil(link_bw_kbps); return kbps; } --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c @@ -503,7 +503,7 @@ uint8_t *read_buf, uint32_t read_size) { - bool ret = false; + bool success = true; uint32_t payload_size = dal_ddc_service_is_in_aux_transaction_mode(ddc) ? DEFAULT_AUX_MAX_DATA_SIZE : EDID_SEGMENT_SIZE; @@ -527,7 +527,6 @@ * but we want to read 256 over i2c!!!!*/ if (dal_ddc_service_is_in_aux_transaction_mode(ddc)) { struct aux_payload payload; - bool read_available = true; payload.i2c_over_aux = true; payload.address = address; @@ -536,21 +535,26 @@ if (write_size != 0) { payload.write = true; - payload.mot = false; + /* should not set mot (middle of transaction) to 0 + * if there are pending read payloads + */ + payload.mot = read_size == 0 ? false : true; payload.length = write_size; payload.data = write_buf; - ret = dal_ddc_submit_aux_command(ddc, &payload); - read_available = ret; + success = dal_ddc_submit_aux_command(ddc, &payload); } - if (read_size != 0 && read_available) { + if (read_size != 0 && success) { payload.write = false; + /* should set mot (middle of transaction) to 0 + * since it is the last payload to send + */ payload.mot = false; payload.length = read_size; payload.data = read_buf; - ret = dal_ddc_submit_aux_command(ddc, &payload); + success = dal_ddc_submit_aux_command(ddc, &payload); } } else { struct i2c_command command = {0}; @@ -573,7 +577,7 @@ command.number_of_payloads = dal_ddc_i2c_payloads_get_count(&payloads); - ret = dm_helpers_submit_i2c( + success = dm_helpers_submit_i2c( ddc->ctx, ddc->link, &command); @@ -581,7 +585,7 @@ dal_ddc_i2c_payloads_destroy(&payloads); } - return ret; + return success; } bool dal_ddc_submit_aux_command(struct ddc_service *ddc, @@ -598,7 +602,7 @@ do { struct aux_payload current_payload; - bool is_end_of_payload = (retrieved + DEFAULT_AUX_MAX_DATA_SIZE) > + bool is_end_of_payload = (retrieved + DEFAULT_AUX_MAX_DATA_SIZE) >= payload->length; current_payload.address = payload->address; @@ -607,7 +611,10 @@ current_payload.i2c_over_aux = payload->i2c_over_aux; current_payload.length = is_end_of_payload ? payload->length - retrieved : DEFAULT_AUX_MAX_DATA_SIZE; - current_payload.mot = !is_end_of_payload; + /* set mot (middle of transaction) to false + * if it is the last payload + */ + current_payload.mot = is_end_of_payload ? payload->mot:true; current_payload.reply = payload->reply; current_payload.write = payload->write; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c @@ -855,13 +855,13 @@ switch (dpcd_aux_read_interval) { case 0x01: - aux_rd_interval_us = 400; + aux_rd_interval_us = 4000; break; case 0x02: - aux_rd_interval_us = 4000; + aux_rd_interval_us = 8000; break; case 0x03: - aux_rd_interval_us = 8000; + aux_rd_interval_us = 12000; break; case 0x04: aux_rd_interval_us = 16000; @@ -2296,6 +2296,9 @@ initial_link_setting; uint32_t link_bw; + if (req_bw > dc_link_bandwidth_kbps(link, &link->verified_link_cap)) + return false; + /* search for the minimum link setting that: * 1. is supported according to the link training result * 2. could support the b/w requested by the timing @@ -4114,7 +4117,7 @@ if (edp_config_set.bits.PANEL_MODE_EDP != panel_mode_edp) { - enum ddc_result result = DDC_RESULT_UNKNOWN; + enum dc_status result = DC_ERROR_UNEXPECTED; edp_config_set.bits.PANEL_MODE_EDP = panel_mode_edp; @@ -4124,7 +4127,7 @@ &edp_config_set.raw, sizeof(edp_config_set.raw)); - ASSERT(result == DDC_RESULT_SUCESSFULL); + ASSERT(result == DC_OK); } } DC_LOG_DETECTION_DP_CAPS("Link: %d eDP panel mode supported: %d " @@ -4346,9 +4349,9 @@ link->connector_signal != SIGNAL_TYPE_DISPLAY_PORT)) return false; - if (!core_link_read_dpcd(link, DP_SOURCE_BACKLIGHT_CURRENT_PEAK, + if (core_link_read_dpcd(link, DP_SOURCE_BACKLIGHT_CURRENT_PEAK, dpcd_backlight_get.raw, - sizeof(union dpcd_source_backlight_get))) + sizeof(union dpcd_source_backlight_get)) != DC_OK) return false; *backlight_millinits_avg = @@ -4387,9 +4390,9 @@ link->connector_signal != SIGNAL_TYPE_DISPLAY_PORT)) return false; - if (!core_link_read_dpcd(link, DP_SOURCE_BACKLIGHT_LEVEL, + if (core_link_read_dpcd(link, DP_SOURCE_BACKLIGHT_LEVEL, (uint8_t *) backlight_millinits, - sizeof(uint32_t))) + sizeof(uint32_t)) != DC_OK) return false; return true; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dc_stream.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dc_stream.h @@ -222,7 +222,7 @@ union stream_update_flags update_flags; }; -#define ABM_LEVEL_IMMEDIATE_DISABLE 0xFFFFFFFF +#define ABM_LEVEL_IMMEDIATE_DISABLE 255 struct dc_stream_update { struct dc_stream_state *stream; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c @@ -871,6 +871,20 @@ bp_pc_params.flags.SET_EXTERNAL_REF_DIV_SRC = pll_settings->use_external_clk; + switch (pix_clk_params->color_depth) { + case COLOR_DEPTH_101010: + bp_pc_params.color_depth = TRANSMITTER_COLOR_DEPTH_30; + break; + case COLOR_DEPTH_121212: + bp_pc_params.color_depth = TRANSMITTER_COLOR_DEPTH_36; + break; + case COLOR_DEPTH_161616: + bp_pc_params.color_depth = TRANSMITTER_COLOR_DEPTH_48; + break; + default: + break; + } + if (clk_src->bios->funcs->set_pixel_clock( clk_src->bios, &bp_pc_params) != BP_RESULT_OK) return false; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c @@ -119,7 +119,8 @@ .disable_hpd = dce110_link_encoder_disable_hpd, .is_dig_enabled = dce110_is_dig_enabled, .destroy = dce110_link_encoder_destroy, - .get_max_link_cap = dce110_link_encoder_get_max_link_cap + .get_max_link_cap = dce110_link_encoder_get_max_link_cap, + .get_dig_frontend = dce110_get_dig_frontend, }; static enum bp_result link_transmitter_control( @@ -235,6 +236,44 @@ } +unsigned int dce110_get_dig_frontend(struct link_encoder *enc) +{ + struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc); + u32 value; + enum engine_id result; + + REG_GET(DIG_BE_CNTL, DIG_FE_SOURCE_SELECT, &value); + + switch (value) { + case DCE110_DIG_FE_SOURCE_SELECT_DIGA: + result = ENGINE_ID_DIGA; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGB: + result = ENGINE_ID_DIGB; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGC: + result = ENGINE_ID_DIGC; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGD: + result = ENGINE_ID_DIGD; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGE: + result = ENGINE_ID_DIGE; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGF: + result = ENGINE_ID_DIGF; + break; + case DCE110_DIG_FE_SOURCE_SELECT_DIGG: + result = ENGINE_ID_DIGG; + break; + default: + // invalid source select DIG + result = ENGINE_ID_UNKNOWN; + } + + return result; +} + void dce110_link_encoder_set_dp_phy_pattern_training_pattern( struct link_encoder *enc, uint32_t index) --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.h @@ -255,6 +255,8 @@ enum engine_id engine, bool connect); +unsigned int dce110_get_dig_frontend(struct link_encoder *enc); + void dce110_link_encoder_set_dp_phy_pattern_training_pattern( struct link_encoder *enc, uint32_t index); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.c @@ -75,7 +75,7 @@ else bl_pwm &= 0xFFFF; - current_backlight = bl_pwm << (1 + bl_int_count); + current_backlight = (uint64_t)bl_pwm << (1 + bl_int_count); if (bl_period == 0) bl_period = 0xFFFF; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_panel_cntl.h @@ -49,12 +49,12 @@ #define DCN_PANEL_CNTL_REG_LIST()\ DCN_PANEL_CNTL_SR(PWRSEQ_CNTL, LVTMA), \ DCN_PANEL_CNTL_SR(PWRSEQ_STATE, LVTMA), \ - DCE_PANEL_CNTL_SR(PWRSEQ_REF_DIV, LVTMA), \ + DCN_PANEL_CNTL_SR(PWRSEQ_REF_DIV, LVTMA), \ SR(BL_PWM_CNTL), \ SR(BL_PWM_CNTL2), \ SR(BL_PWM_PERIOD_CNTL), \ SR(BL_PWM_GRP1_REG_LOCK), \ - SR(BIOS_SCRATCH_2) + NBIO_SR(BIOS_SCRATCH_2) #define DCE_PANEL_CNTL_SF(reg_name, field_name, post_fix)\ .field_name = reg_name ## __ ## field_name ## post_fix --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c @@ -564,6 +564,7 @@ cntl.enable_dp_audio = enable_audio; cntl.pixel_clock = actual_pix_clk_khz; cntl.lanes_number = LANE_COUNT_FOUR; + cntl.color_depth = crtc_timing->display_color_depth; if (enc110->base.bp->funcs->encoder_control( enc110->base.bp, &cntl) != BP_RESULT_OK) --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c @@ -429,12 +429,12 @@ clamp_max = 0x3FC0; break; case COLOR_DEPTH_101010: - /* 10bit MSB aligned on 14 bit bus '11 1111 1111 1100' */ - clamp_max = 0x3FFC; + /* 10bit MSB aligned on 14 bit bus '11 1111 1111 0000' */ + clamp_max = 0x3FF0; break; case COLOR_DEPTH_121212: - /* 12bit MSB aligned on 14 bit bus '11 1111 1111 1111' */ - clamp_max = 0x3FFF; + /* 12bit MSB aligned on 14 bit bus '11 1111 1111 1100' */ + clamp_max = 0x3FFC; break; default: clamp_max = 0x3FC0; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c @@ -643,8 +643,13 @@ if (REG(DC_IP_REQUEST_CNTL)) { REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 1); - hws->funcs.dpp_pg_control(hws, plane_id, true); - hws->funcs.hubp_pg_control(hws, plane_id, true); + + if (hws->funcs.dpp_pg_control) + hws->funcs.dpp_pg_control(hws, plane_id, true); + + if (hws->funcs.hubp_pg_control) + hws->funcs.hubp_pg_control(hws, plane_id, true); + REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 0); DC_LOG_DEBUG( @@ -1076,8 +1081,13 @@ if (REG(DC_IP_REQUEST_CNTL)) { REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 1); - hws->funcs.dpp_pg_control(hws, dpp->inst, false); - hws->funcs.hubp_pg_control(hws, hubp->inst, false); + + if (hws->funcs.dpp_pg_control) + hws->funcs.dpp_pg_control(hws, dpp->inst, false); + + if (hws->funcs.hubp_pg_control) + hws->funcs.hubp_pg_control(hws, hubp->inst, false); + dpp->funcs->dpp_reset(dpp); REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 0); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c @@ -608,8 +608,8 @@ .disable_pplib_clock_request = false, .disable_pplib_wm_range = false, .pplib_wm_report_mode = WM_REPORT_DEFAULT, - .pipe_split_policy = MPC_SPLIT_DYNAMIC, - .force_single_disp_pipe_split = true, + .pipe_split_policy = MPC_SPLIT_AVOID, + .force_single_disp_pipe_split = false, .disable_dcc = DCC_ENABLE, .voltage_align_fclk = true, .disable_stereo_support = true, @@ -1213,6 +1213,7 @@ bool video_large = false; bool desktop_large = false; bool dcc_disabled = false; + bool mpo_enabled = false; for (i = 0; i < context->stream_count; i++) { if (context->stream_status[i].plane_count == 0) @@ -1221,6 +1222,9 @@ if (context->stream_status[i].plane_count > 2) return DC_FAIL_UNSUPPORTED_1; + if (context->stream_status[i].plane_count > 1) + mpo_enabled = true; + for (j = 0; j < context->stream_status[i].plane_count; j++) { struct dc_plane_state *plane = context->stream_status[i].plane_states[j]; @@ -1244,6 +1248,10 @@ } } + /* Disable MPO in multi-display configurations. */ + if (context->stream_count > 1 && mpo_enabled) + return DC_FAIL_UNSUPPORTED_1; + /* * Workaround: On DCN10 there is UMC issue that causes underflow when * playing 4k video on 4k desktop with video downscaled and single channel --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c @@ -121,35 +121,35 @@ switch (packet_index) { case 0: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC0_FRAME_UPDATE, 1); + AFMT_GENERIC0_IMMEDIATE_UPDATE, 1); break; case 1: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC1_FRAME_UPDATE, 1); + AFMT_GENERIC1_IMMEDIATE_UPDATE, 1); break; case 2: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC2_FRAME_UPDATE, 1); + AFMT_GENERIC2_IMMEDIATE_UPDATE, 1); break; case 3: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC3_FRAME_UPDATE, 1); + AFMT_GENERIC3_IMMEDIATE_UPDATE, 1); break; case 4: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC4_FRAME_UPDATE, 1); + AFMT_GENERIC4_IMMEDIATE_UPDATE, 1); break; case 5: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC5_FRAME_UPDATE, 1); + AFMT_GENERIC5_IMMEDIATE_UPDATE, 1); break; case 6: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC6_FRAME_UPDATE, 1); + AFMT_GENERIC6_IMMEDIATE_UPDATE, 1); break; case 7: REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, - AFMT_GENERIC7_FRAME_UPDATE, 1); + AFMT_GENERIC7_IMMEDIATE_UPDATE, 1); break; default: break; @@ -896,10 +896,10 @@ */ REG_UPDATE(DP_VID_STREAM_CNTL, DP_VID_STREAM_DIS_DEFER, 2); /* Larger delay to wait until VBLANK - use max retry of - * 10us*5000=50ms. This covers 41.7ms of minimum 24 Hz mode + + * 10us*10200=102ms. This covers 100.0ms of minimum 10 Hz mode + * a little more because we may not trust delay accuracy. */ - max_retries = DP_BLANK_MAX_RETRY * 250; + max_retries = DP_BLANK_MAX_RETRY * 501; /* disable DP stream */ REG_UPDATE(DP_VID_STREAM_CNTL, DP_VID_STREAM_ENABLE, 0); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.h @@ -273,7 +273,14 @@ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_FRAME_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_FRAME_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_FRAME_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC0_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC1_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_IMMEDIATE_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_IMMEDIATE_UPDATE, mask_sh),\ + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_IMMEDIATE_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_FRAME_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_FRAME_UPDATE, mask_sh),\ SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_FRAME_UPDATE, mask_sh),\ @@ -337,7 +344,14 @@ type AFMT_GENERIC2_FRAME_UPDATE;\ type AFMT_GENERIC3_FRAME_UPDATE;\ type AFMT_GENERIC4_FRAME_UPDATE;\ + type AFMT_GENERIC0_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC1_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC2_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC3_IMMEDIATE_UPDATE;\ type AFMT_GENERIC4_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC5_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC6_IMMEDIATE_UPDATE;\ + type AFMT_GENERIC7_IMMEDIATE_UPDATE;\ type AFMT_GENERIC5_FRAME_UPDATE;\ type AFMT_GENERIC6_FRAME_UPDATE;\ type AFMT_GENERIC7_FRAME_UPDATE;\ --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c @@ -1011,8 +1011,13 @@ if (REG(DC_IP_REQUEST_CNTL)) { REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 1); - dcn20_dpp_pg_control(hws, pipe_ctx->plane_res.dpp->inst, true); - dcn20_hubp_pg_control(hws, pipe_ctx->plane_res.hubp->inst, true); + + if (hws->funcs.dpp_pg_control) + hws->funcs.dpp_pg_control(hws, pipe_ctx->plane_res.dpp->inst, true); + + if (hws->funcs.hubp_pg_control) + hws->funcs.hubp_pg_control(hws, pipe_ctx->plane_res.hubp->inst, true); + REG_SET(DC_IP_REQUEST_CNTL, 0, IP_REQUEST_EN, 0); DC_LOG_DEBUG( @@ -1386,8 +1391,8 @@ /* Any updates are handled in dc interface, just need to apply existing for plane enable */ if ((pipe_ctx->update_flags.bits.enable || pipe_ctx->update_flags.bits.opp_changed || - pipe_ctx->update_flags.bits.scaler || pipe_ctx->update_flags.bits.viewport) - && pipe_ctx->stream->cursor_attributes.address.quad_part != 0) { + pipe_ctx->update_flags.bits.scaler || viewport_changed == true) && + pipe_ctx->stream->cursor_attributes.address.quad_part != 0) { dc->hwss.set_cursor_position(pipe_ctx); dc->hwss.set_cursor_attribute(pipe_ctx); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c @@ -2465,8 +2465,7 @@ * if this primary pipe has a bottom pipe in prev. state * and if the bottom pipe is still available (which it should be), * pick that pipe as secondary - * Same logic applies for ODM pipes. Since mpo is not allowed with odm - * check in else case. + * Same logic applies for ODM pipes */ if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe) { preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe->pipe_idx; @@ -2474,7 +2473,9 @@ secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx]; secondary_pipe->pipe_idx = preferred_pipe_idx; } - } else if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) { + } + if (secondary_pipe == NULL && + dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) { preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe->pipe_idx; if (res_ctx->pipe_ctx[preferred_pipe_idx].stream == NULL) { secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx]; @@ -3097,7 +3098,7 @@ int vlevel = 0; int pipe_split_from[MAX_PIPES]; int pipe_cnt = 0; - display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_KERNEL); + display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_ATOMIC); DC_LOGGER_INIT(dc->ctx->logger); BW_VAL_TRACE_COUNT(); @@ -3165,6 +3166,9 @@ context->bw_ctx.dml.soc.allow_dram_clock_one_display_vactive = dc->debug.enable_dram_clock_change_one_display_vactive; + /*Unsafe due to current pipe merge and split logic*/ + ASSERT(context != dc->current_state); + if (fast_validate) { return dcn20_validate_bandwidth_internal(dc, context, true); } @@ -3201,7 +3205,7 @@ bool dcn20_validate_bandwidth(struct dc *dc, struct dc_state *context, bool fast_validate) { - bool voltage_supported = false; + bool voltage_supported; DC_FP_START(); voltage_supported = dcn20_validate_bandwidth_fp(dc, context, fast_validate); DC_FP_END(); --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c @@ -900,6 +900,8 @@ DCN20_CLK_SRC_PLL0, DCN20_CLK_SRC_PLL1, DCN20_CLK_SRC_PLL2, + DCN20_CLK_SRC_PLL3, + DCN20_CLK_SRC_PLL4, DCN20_CLK_SRC_TOTAL_DCN21 }; @@ -1054,8 +1056,6 @@ { int i; - DC_FP_START(); - if (dc->bb_overrides.sr_exit_time_ns) { for (i = 0; i < WM_SET_COUNT; i++) { dc->clk_mgr->bw_params->wm_table.entries[i].sr_exit_time_us = @@ -1080,8 +1080,6 @@ dc->bb_overrides.dram_clock_change_latency_ns / 1000.0; } } - - DC_FP_END(); } void dcn21_calculate_wm( @@ -1169,8 +1167,8 @@ } -bool dcn21_validate_bandwidth(struct dc *dc, struct dc_state *context, - bool fast_validate) +static noinline bool dcn21_validate_bandwidth_fp(struct dc *dc, + struct dc_state *context, bool fast_validate) { bool out = false; @@ -1179,11 +1177,14 @@ int vlevel = 0; int pipe_split_from[MAX_PIPES]; int pipe_cnt = 0; - display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_KERNEL); + display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_ATOMIC); DC_LOGGER_INIT(dc->ctx->logger); BW_VAL_TRACE_COUNT(); + /*Unsafe due to current pipe merge and split logic*/ + ASSERT(context != dc->current_state); + out = dcn20_fast_validate_bw(dc, context, pipes, &pipe_cnt, pipe_split_from, &vlevel); if (pipe_cnt == 0) @@ -1220,6 +1221,22 @@ return out; } + +/* + * Some of the functions further below use the FPU, so we need to wrap this + * with DC_FP_START()/DC_FP_END(). Use the same approach as for + * dcn20_validate_bandwidth in dcn20_resource.c. + */ +bool dcn21_validate_bandwidth(struct dc *dc, struct dc_state *context, + bool fast_validate) +{ + bool voltage_supported; + DC_FP_START(); + voltage_supported = dcn21_validate_bandwidth_fp(dc, context, fast_validate); + DC_FP_END(); + return voltage_supported; +} + static void dcn21_destroy_resource_pool(struct resource_pool **pool) { struct dcn21_resource_pool *dcn21_pool = TO_DCN21_RES_POOL(*pool); @@ -1874,6 +1891,14 @@ dcn21_clock_source_create(ctx, ctx->dc_bios, CLOCK_SOURCE_COMBO_PHY_PLL2, &clk_src_regs[2], false); + pool->base.clock_sources[DCN20_CLK_SRC_PLL3] = + dcn21_clock_source_create(ctx, ctx->dc_bios, + CLOCK_SOURCE_COMBO_PHY_PLL3, + &clk_src_regs[3], false); + pool->base.clock_sources[DCN20_CLK_SRC_PLL4] = + dcn21_clock_source_create(ctx, ctx->dc_bios, + CLOCK_SOURCE_COMBO_PHY_PLL4, + &clk_src_regs[4], false); pool->base.clk_src_count = DCN20_CLK_SRC_TOTAL_DCN21; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c @@ -63,13 +63,13 @@ enum gpio_mode mode) { if (gpio->pin) { - ASSERT_CRITICAL(false); + BREAK_TO_DEBUGGER(); return GPIO_RESULT_ALREADY_OPENED; } // No action if allocation failed during gpio construct if (!gpio->hw_container.ddc) { - ASSERT_CRITICAL(false); + BREAK_TO_DEBUGGER(); return GPIO_RESULT_NON_SPECIFIC_ERROR; } gpio->mode = mode; --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c @@ -299,8 +299,8 @@ pflip_int_entry(1), pflip_int_entry(2), pflip_int_entry(3), - [DC_IRQ_SOURCE_PFLIP5] = dummy_irq_entry(), - [DC_IRQ_SOURCE_PFLIP6] = dummy_irq_entry(), + pflip_int_entry(4), + pflip_int_entry(5), [DC_IRQ_SOURCE_PFLIP_UNDERLAY0] = dummy_irq_entry(), gpio_pad_int_entry(0), gpio_pad_int_entry(1), --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c @@ -168,6 +168,11 @@ .ack = NULL }; +static const struct irq_source_info_funcs vupdate_no_lock_irq_info_funcs = { + .set = NULL, + .ack = NULL +}; + #undef BASE_INNER #define BASE_INNER(seg) DMU_BASE__INST0_SEG ## seg @@ -230,6 +235,17 @@ .funcs = &vblank_irq_info_funcs\ } +/* vupdate_no_lock_int_entry maps to DC_IRQ_SOURCE_VUPDATEx, to match semantic + * of DCE's DC_IRQ_SOURCE_VUPDATEx. + */ +#define vupdate_no_lock_int_entry(reg_num)\ + [DC_IRQ_SOURCE_VUPDATE1 + reg_num] = {\ + IRQ_REG_ENTRY(OTG, reg_num,\ + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_INT_EN,\ + OTG_GLOBAL_SYNC_STATUS, VUPDATE_NO_LOCK_EVENT_CLEAR),\ + .funcs = &vupdate_no_lock_irq_info_funcs\ + } + #define vblank_int_entry(reg_num)\ [DC_IRQ_SOURCE_VBLANK1 + reg_num] = {\ IRQ_REG_ENTRY(OTG, reg_num,\ @@ -338,6 +354,12 @@ vupdate_int_entry(3), vupdate_int_entry(4), vupdate_int_entry(5), + vupdate_no_lock_int_entry(0), + vupdate_no_lock_int_entry(1), + vupdate_no_lock_int_entry(2), + vupdate_no_lock_int_entry(3), + vupdate_no_lock_int_entry(4), + vupdate_no_lock_int_entry(5), vblank_int_entry(0), vblank_int_entry(1), vblank_int_entry(2), --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/dc/os_types.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/dc/os_types.h @@ -90,7 +90,7 @@ * general debug capabilities * */ -#if defined(CONFIG_HAVE_KGDB) || defined(CONFIG_KGDB) +#if defined(CONFIG_DEBUG_KERNEL_DC) && (defined(CONFIG_HAVE_KGDB) || defined(CONFIG_KGDB)) #define ASSERT_CRITICAL(expr) do { \ if (WARN_ON(!(expr))) { \ kgdb_breakpoint(); \ --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/include/fixed31_32.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/include/fixed31_32.h @@ -431,6 +431,9 @@ */ static inline struct fixed31_32 dc_fixpt_pow(struct fixed31_32 arg1, struct fixed31_32 arg2) { + if (arg1.value == 0) + return arg2.value == 0 ? dc_fixpt_one : dc_fixpt_zero; + return dc_fixpt_exp( dc_fixpt_mul( dc_fixpt_log(arg1), --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/color/Makefile +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/color/Makefile @@ -23,7 +23,7 @@ # Makefile for the color sub-module of DAL. # -MOD_COLOR = color_gamma.o +MOD_COLOR = color_gamma.o color_table.o AMD_DAL_MOD_COLOR = $(addprefix $(AMDDALPATH)/modules/color/,$(MOD_COLOR)) #$(info ************ DAL COLOR MODULE MAKEFILE ************) --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/color/color_gamma.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/color/color_gamma.c @@ -30,20 +30,10 @@ #include "opp.h" #include "color_gamma.h" -#define NUM_PTS_IN_REGION 16 -#define NUM_REGIONS 32 -#define MAX_HW_POINTS (NUM_PTS_IN_REGION*NUM_REGIONS) - static struct hw_x_point coordinates_x[MAX_HW_POINTS + 2]; -static struct fixed31_32 pq_table[MAX_HW_POINTS + 2]; -static struct fixed31_32 de_pq_table[MAX_HW_POINTS + 2]; - // these are helpers for calculations to reduce stack usage // do not depend on these being preserved across calls -static struct fixed31_32 scratch_1; -static struct fixed31_32 scratch_2; -static struct translate_from_linear_space_args scratch_gamma_args; /* Helper to optimize gamma calculation, only use in translate_from_linear, in * particular the dc_fixpt_pow function which is very expensive @@ -56,9 +46,6 @@ * just multiply with 2^gamma which can be computed once, and save the result so we * recursively compute all the values. */ -static struct fixed31_32 pow_buffer[NUM_PTS_IN_REGION]; -static struct fixed31_32 gamma_of_2; // 2^gamma -int pow_buffer_ptr = -1; /*sRGB 709 2.2 2.4 P3*/ static const int32_t gamma_numerator01[] = { 31308, 180000, 0, 0, 0}; static const int32_t gamma_numerator02[] = { 12920, 4500, 0, 0, 0}; @@ -66,9 +53,6 @@ static const int32_t gamma_numerator04[] = { 55, 99, 0, 0, 0}; static const int32_t gamma_numerator05[] = { 2400, 2200, 2200, 2400, 2600}; -static bool pq_initialized; /* = false; */ -static bool de_pq_initialized; /* = false; */ - /* one-time setup of X points */ void setup_x_points_distribution(void) { @@ -250,6 +234,8 @@ struct fixed31_32 scaling_factor = dc_fixpt_from_fraction(80, 10000); + struct fixed31_32 *pq_table = mod_color_get_table(type_pq_table); + /* pow function has problems with arguments too small */ for (i = 0; i < 32; i++) pq_table[i] = dc_fixpt_zero; @@ -269,7 +255,7 @@ uint32_t begin_index, end_index; struct fixed31_32 scaling_factor = dc_fixpt_from_int(125); - + struct fixed31_32 *de_pq_table = mod_color_get_table(type_de_pq_table); /* X points is 2^-25 to 2^7 * De-gamma X is 2^-12 to 2^0 – we are skipping first -12-(-25) = 13 regions */ @@ -339,6 +325,9 @@ { const struct fixed31_32 one = dc_fixpt_from_int(1); + struct fixed31_32 scratch_1, scratch_2; + struct calculate_buffer *cal_buffer = args->cal_buffer; + if (dc_fixpt_le(one, args->arg)) return one; @@ -352,21 +341,21 @@ return scratch_1; } else if (dc_fixpt_le(args->a0, args->arg)) { - if (pow_buffer_ptr == 0) { - gamma_of_2 = dc_fixpt_pow(dc_fixpt_from_int(2), + if (cal_buffer->buffer_index == 0) { + cal_buffer->gamma_of_2 = dc_fixpt_pow(dc_fixpt_from_int(2), dc_fixpt_recip(args->gamma)); } scratch_1 = dc_fixpt_add(one, args->a3); - if (pow_buffer_ptr < 16) + if (cal_buffer->buffer_index < 16) scratch_2 = dc_fixpt_pow(args->arg, dc_fixpt_recip(args->gamma)); else - scratch_2 = dc_fixpt_mul(gamma_of_2, - pow_buffer[pow_buffer_ptr%16]); + scratch_2 = dc_fixpt_mul(cal_buffer->gamma_of_2, + cal_buffer->buffer[cal_buffer->buffer_index%16]); - if (pow_buffer_ptr != -1) { - pow_buffer[pow_buffer_ptr%16] = scratch_2; - pow_buffer_ptr++; + if (cal_buffer->buffer_index != -1) { + cal_buffer->buffer[cal_buffer->buffer_index%16] = scratch_2; + cal_buffer->buffer_index++; } scratch_1 = dc_fixpt_mul(scratch_1, scratch_2); @@ -413,15 +402,17 @@ args->a1); } -static struct fixed31_32 calculate_gamma22(struct fixed31_32 arg, bool use_eetf) +static struct fixed31_32 calculate_gamma22(struct fixed31_32 arg, bool use_eetf, struct calculate_buffer *cal_buffer) { struct fixed31_32 gamma = dc_fixpt_from_fraction(22, 10); + struct translate_from_linear_space_args scratch_gamma_args; scratch_gamma_args.arg = arg; scratch_gamma_args.a0 = dc_fixpt_zero; scratch_gamma_args.a1 = dc_fixpt_zero; scratch_gamma_args.a2 = dc_fixpt_zero; scratch_gamma_args.a3 = dc_fixpt_zero; + scratch_gamma_args.cal_buffer = cal_buffer; scratch_gamma_args.gamma = gamma; if (use_eetf) @@ -467,14 +458,18 @@ static struct fixed31_32 translate_from_linear_space_ex( struct fixed31_32 arg, struct gamma_coefficients *coeff, - uint32_t color_index) + uint32_t color_index, + struct calculate_buffer *cal_buffer) { + struct translate_from_linear_space_args scratch_gamma_args; + scratch_gamma_args.arg = arg; scratch_gamma_args.a0 = coeff->a0[color_index]; scratch_gamma_args.a1 = coeff->a1[color_index]; scratch_gamma_args.a2 = coeff->a2[color_index]; scratch_gamma_args.a3 = coeff->a3[color_index]; scratch_gamma_args.gamma = coeff->user_gamma[color_index]; + scratch_gamma_args.cal_buffer = cal_buffer; return translate_from_linear_space(&scratch_gamma_args); } @@ -742,10 +737,11 @@ struct fixed31_32 output; struct fixed31_32 scaling_factor = dc_fixpt_from_fraction(sdr_white_level, 10000); + struct fixed31_32 *pq_table = mod_color_get_table(type_pq_table); - if (!pq_initialized && sdr_white_level == 80) { + if (!mod_color_is_table_init(type_pq_table) && sdr_white_level == 80) { precompute_pq(); - pq_initialized = true; + mod_color_set_table_init_state(type_pq_table, true); } /* TODO: start index is from segment 2^-24, skipping first segment @@ -787,12 +783,12 @@ { uint32_t i; struct fixed31_32 output; - + struct fixed31_32 *de_pq_table = mod_color_get_table(type_de_pq_table); struct fixed31_32 scaling_factor = dc_fixpt_from_int(125); - if (!de_pq_initialized) { + if (!mod_color_is_table_init(type_de_pq_table)) { precompute_de_pq(); - de_pq_initialized = true; + mod_color_set_table_init_state(type_de_pq_table, true); } @@ -811,7 +807,9 @@ static bool build_regamma(struct pwl_float_data_ex *rgb_regamma, uint32_t hw_points_num, - const struct hw_x_point *coordinate_x, enum dc_transfer_func_predefined type) + const struct hw_x_point *coordinate_x, + enum dc_transfer_func_predefined type, + struct calculate_buffer *cal_buffer) { uint32_t i; bool ret = false; @@ -827,20 +825,21 @@ if (!build_coefficients(coeff, type)) goto release; - memset(pow_buffer, 0, NUM_PTS_IN_REGION * sizeof(struct fixed31_32)); - pow_buffer_ptr = 0; // see variable definition for more info + memset(cal_buffer->buffer, 0, NUM_PTS_IN_REGION * sizeof(struct fixed31_32)); + cal_buffer->buffer_index = 0; // see variable definition for more info + i = 0; while (i <= hw_points_num) { /*TODO use y vs r,g,b*/ rgb->r = translate_from_linear_space_ex( - coord_x->x, coeff, 0); + coord_x->x, coeff, 0, cal_buffer); rgb->g = rgb->r; rgb->b = rgb->r; ++coord_x; ++rgb; ++i; } - pow_buffer_ptr = -1; // reset back to no optimize + cal_buffer->buffer_index = -1; ret = true; release: kvfree(coeff); @@ -932,7 +931,8 @@ static bool build_freesync_hdr(struct pwl_float_data_ex *rgb_regamma, uint32_t hw_points_num, const struct hw_x_point *coordinate_x, - const struct freesync_hdr_tf_params *fs_params) + const struct freesync_hdr_tf_params *fs_params, + struct calculate_buffer *cal_buffer) { uint32_t i; struct pwl_float_data_ex *rgb = rgb_regamma; @@ -969,7 +969,7 @@ max_content = max_display; if (!use_eetf) - pow_buffer_ptr = 0; // see var definition for more info + cal_buffer->buffer_index = 0; // see var definition for more info rgb += 32; // first 32 points have problems with fixed point, too small coord_x += 32; for (i = 32; i <= hw_points_num; i++) { @@ -988,7 +988,7 @@ if (dc_fixpt_lt(scaledX, dc_fixpt_zero)) output = dc_fixpt_zero; else - output = calculate_gamma22(scaledX, use_eetf); + output = calculate_gamma22(scaledX, use_eetf, cal_buffer); rgb->r = output; rgb->g = output; @@ -1008,7 +1008,7 @@ ++coord_x; ++rgb; } - pow_buffer_ptr = -1; + cal_buffer->buffer_index = -1; return true; } @@ -1606,7 +1606,7 @@ } static void apply_degamma_for_user_regamma(struct pwl_float_data_ex *rgb_regamma, - uint32_t hw_points_num) + uint32_t hw_points_num, struct calculate_buffer *cal_buffer) { uint32_t i; @@ -1614,12 +1614,12 @@ struct pwl_float_data_ex *rgb = rgb_regamma; const struct hw_x_point *coord_x = coordinates_x; - build_coefficients(&coeff, true); + build_coefficients(&coeff, TRANSFER_FUNCTION_SRGB); i = 0; while (i != hw_points_num + 1) { rgb->r = translate_from_linear_space_ex( - coord_x->x, &coeff, 0); + coord_x->x, &coeff, 0, cal_buffer); rgb->g = rgb->r; rgb->b = rgb->r; ++coord_x; @@ -1674,7 +1674,8 @@ #define _EXTRA_POINTS 3 bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf, - const struct regamma_lut *regamma) + const struct regamma_lut *regamma, + struct calculate_buffer *cal_buffer) { struct gamma_coefficients coeff; const struct hw_x_point *coord_x = coordinates_x; @@ -1706,11 +1707,11 @@ } while (i != MAX_HW_POINTS + 1) { output_tf->tf_pts.red[i] = translate_from_linear_space_ex( - coord_x->x, &coeff, 0); + coord_x->x, &coeff, 0, cal_buffer); output_tf->tf_pts.green[i] = translate_from_linear_space_ex( - coord_x->x, &coeff, 1); + coord_x->x, &coeff, 1, cal_buffer); output_tf->tf_pts.blue[i] = translate_from_linear_space_ex( - coord_x->x, &coeff, 2); + coord_x->x, &coeff, 2, cal_buffer); ++coord_x; ++i; } @@ -1723,7 +1724,8 @@ } bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf, - const struct regamma_lut *regamma) + const struct regamma_lut *regamma, + struct calculate_buffer *cal_buffer) { struct dc_transfer_func_distributed_points *tf_pts = &output_tf->tf_pts; struct dividers dividers; @@ -1756,7 +1758,7 @@ scale_user_regamma_ramp(rgb_user, ®amma->ramp, dividers); if (regamma->flags.bits.applyDegamma == 1) { - apply_degamma_for_user_regamma(rgb_regamma, MAX_HW_POINTS); + apply_degamma_for_user_regamma(rgb_regamma, MAX_HW_POINTS, cal_buffer); copy_rgb_regamma_to_coordinates_x(coordinates_x, MAX_HW_POINTS, rgb_regamma); } @@ -1943,7 +1945,8 @@ struct dc_transfer_func_distributed_points *points, struct pwl_float_data_ex *rgb_regamma, const struct freesync_hdr_tf_params *fs_params, - uint32_t sdr_ref_white_level) + uint32_t sdr_ref_white_level, + struct calculate_buffer *cal_buffer) { uint32_t i; bool ret = false; @@ -1979,7 +1982,8 @@ build_freesync_hdr(rgb_regamma, MAX_HW_POINTS, coordinates_x, - fs_params); + fs_params, + cal_buffer); ret = true; } else if (trans == TRANSFER_FUNCTION_HLG) { @@ -2008,7 +2012,8 @@ build_regamma(rgb_regamma, MAX_HW_POINTS, coordinates_x, - trans); + trans, + cal_buffer); ret = true; } @@ -2018,7 +2023,8 @@ bool mod_color_calculate_regamma_params(struct dc_transfer_func *output_tf, const struct dc_gamma *ramp, bool mapUserRamp, bool canRomBeUsed, - const struct freesync_hdr_tf_params *fs_params) + const struct freesync_hdr_tf_params *fs_params, + struct calculate_buffer *cal_buffer) { struct dc_transfer_func_distributed_points *tf_pts = &output_tf->tf_pts; struct dividers dividers; @@ -2090,7 +2096,8 @@ tf_pts, rgb_regamma, fs_params, - output_tf->sdr_ref_white_level); + output_tf->sdr_ref_white_level, + cal_buffer); if (ret) { map_regamma_hw_to_x_user(ramp, coeff, rgb_user, --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/color/color_gamma.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/color/color_gamma.h @@ -26,6 +26,8 @@ #ifndef COLOR_MOD_COLOR_GAMMA_H_ #define COLOR_MOD_COLOR_GAMMA_H_ +#include "color_table.h" + struct dc_transfer_func; struct dc_gamma; struct dc_transfer_func_distributed_points; @@ -83,6 +85,12 @@ unsigned int skip_tm; // skip tm }; +struct calculate_buffer { + int buffer_index; + struct fixed31_32 buffer[NUM_PTS_IN_REGION]; + struct fixed31_32 gamma_of_2; +}; + struct translate_from_linear_space_args { struct fixed31_32 arg; struct fixed31_32 a0; @@ -90,6 +98,7 @@ struct fixed31_32 a2; struct fixed31_32 a3; struct fixed31_32 gamma; + struct calculate_buffer *cal_buffer; }; void setup_x_points_distribution(void); @@ -99,7 +108,8 @@ bool mod_color_calculate_regamma_params(struct dc_transfer_func *output_tf, const struct dc_gamma *ramp, bool mapUserRamp, bool canRomBeUsed, - const struct freesync_hdr_tf_params *fs_params); + const struct freesync_hdr_tf_params *fs_params, + struct calculate_buffer *cal_buffer); bool mod_color_calculate_degamma_params(struct dc_color_caps *dc_caps, struct dc_transfer_func *output_tf, @@ -109,10 +119,12 @@ struct dc_transfer_func_distributed_points *points); bool calculate_user_regamma_coeff(struct dc_transfer_func *output_tf, - const struct regamma_lut *regamma); + const struct regamma_lut *regamma, + struct calculate_buffer *cal_buffer); bool calculate_user_regamma_ramp(struct dc_transfer_func *output_tf, - const struct regamma_lut *regamma); + const struct regamma_lut *regamma, + struct calculate_buffer *cal_buffer); #endif /* COLOR_MOD_COLOR_GAMMA_H_ */ --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/color/color_table.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/color/color_table.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2019 Advanced Micro Devices, Inc. (unpublished) + * + * All rights reserved. This notice is intended as a precaution against + * inadvertent publication and does not imply publication or any waiver + * of confidentiality. The year included in the foregoing notice is the + * year of creation of the work. + */ + +#include "color_table.h" + +static struct fixed31_32 pq_table[MAX_HW_POINTS + 2]; +static struct fixed31_32 de_pq_table[MAX_HW_POINTS + 2]; +static bool pq_initialized; +static bool de_pg_initialized; + +bool mod_color_is_table_init(enum table_type type) +{ + bool ret = false; + + if (type == type_pq_table) + ret = pq_initialized; + if (type == type_de_pq_table) + ret = de_pg_initialized; + + return ret; +} + +struct fixed31_32 *mod_color_get_table(enum table_type type) +{ + struct fixed31_32 *table = NULL; + + if (type == type_pq_table) + table = pq_table; + if (type == type_de_pq_table) + table = de_pq_table; + + return table; +} + +void mod_color_set_table_init_state(enum table_type type, bool state) +{ + if (type == type_pq_table) + pq_initialized = state; + if (type == type_de_pq_table) + de_pg_initialized = state; +} + --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/color/color_table.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/color/color_table.h @@ -0,0 +1,47 @@ +/* + * Copyright 2016 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: AMD + * + */ + + +#ifndef COLOR_MOD_COLOR_TABLE_H_ +#define COLOR_MOD_COLOR_TABLE_H_ + +#include "dc_types.h" + +#define NUM_PTS_IN_REGION 16 +#define NUM_REGIONS 32 +#define MAX_HW_POINTS (NUM_PTS_IN_REGION*NUM_REGIONS) + +enum table_type { + type_pq_table, + type_de_pq_table +}; + +bool mod_color_is_table_init(enum table_type type); + +struct fixed31_32 *mod_color_get_table(enum table_type type); + +void mod_color_set_table_init_state(enum table_type type, bool state); + +#endif /* COLOR_MOD_COLOR_TABLE_H_ */ --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/freesync/freesync.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/freesync/freesync.c @@ -324,22 +324,44 @@ /* Choose number of frames to insert based on how close it * can get to the mid point of the variable range. + * - Delta for CEIL: delta_from_mid_point_in_us_1 + * - Delta for FLOOR: delta_from_mid_point_in_us_2 */ - if ((frame_time_in_us / mid_point_frames_ceil) > in_out_vrr->min_duration_in_us && - (delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2 || - mid_point_frames_floor < 2)) { + if ((last_render_time_in_us / mid_point_frames_ceil) < in_out_vrr->min_duration_in_us) { + /* Check for out of range. + * If using CEIL produces a value that is out of range, + * then we are forced to use FLOOR. + */ + frames_to_insert = mid_point_frames_floor; + } else if (mid_point_frames_floor < 2) { + /* Check if FLOOR would result in non-LFC. In this case + * choose to use CEIL + */ + frames_to_insert = mid_point_frames_ceil; + } else if (delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2) { + /* If choosing CEIL results in a frame duration that is + * closer to the mid point of the range. + * Choose CEIL + */ frames_to_insert = mid_point_frames_ceil; - delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_2 - - delta_from_mid_point_in_us_1; } else { + /* If choosing FLOOR results in a frame duration that is + * closer to the mid point of the range. + * Choose FLOOR + */ frames_to_insert = mid_point_frames_floor; - delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_1 - - delta_from_mid_point_in_us_2; } /* Prefer current frame multiplier when BTR is enabled unless it drifts * too far from the midpoint */ + if (delta_from_mid_point_in_us_1 < delta_from_mid_point_in_us_2) { + delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_2 - + delta_from_mid_point_in_us_1; + } else { + delta_from_mid_point_delta_in_us = delta_from_mid_point_in_us_1 - + delta_from_mid_point_in_us_2; + } if (in_out_vrr->btr.frames_to_insert != 0 && delta_from_mid_point_delta_in_us < BTR_DRIFT_MARGIN) { if (((last_render_time_in_us / in_out_vrr->btr.frames_to_insert) < --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_log.h @@ -27,7 +27,7 @@ #define MOD_HDCP_LOG_H_ #ifdef CONFIG_DRM_AMD_DC_HDCP -#define HDCP_LOG_ERR(hdcp, ...) DRM_WARN(__VA_ARGS__) +#define HDCP_LOG_ERR(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) #define HDCP_LOG_VER(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) #define HDCP_LOG_FSM(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) #define HDCP_LOG_TOP(hdcp, ...) pr_debug("[HDCP_TOP]:"__VA_ARGS__) --- linux-5.8.0.orig/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c +++ linux-5.8.0/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c @@ -88,7 +88,7 @@ enum mod_hdcp_status status = MOD_HDCP_STATUS_SUCCESS; if (!psp->dtm_context.dtm_initialized) { - DRM_ERROR("Failed to add display topology, DTM TA is not initialized."); + DRM_INFO("Failed to add display topology, DTM TA is not initialized."); display->state = MOD_HDCP_DISPLAY_INACTIVE; return MOD_HDCP_STATUS_FAILURE; } --- linux-5.8.0.orig/drivers/gpu/drm/amd/include/amd_shared.h +++ linux-5.8.0/drivers/gpu/drm/amd/include/amd_shared.h @@ -45,6 +45,7 @@ AMD_APU_IS_RAVEN2 = 0x00000002UL, AMD_APU_IS_PICASSO = 0x00000004UL, AMD_APU_IS_RENOIR = 0x00000008UL, + AMD_APU_IS_GREEN_SARDINE = 0x00000010UL, }; enum amd_ip_block_type { --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c @@ -2042,8 +2042,6 @@ { int i; - BUG_ON(numbytes > MAX_SW_I2C_COMMANDS); - req->I2CcontrollerPort = 0; req->I2CSpeed = 2; req->SlaveAddress = address; @@ -2081,6 +2079,12 @@ struct smu_table_context *smu_table = &adev->smu.smu_table; struct smu_table *table = &smu_table->driver_table; + if (numbytes > MAX_SW_I2C_COMMANDS) { + dev_err(adev->dev, "numbytes requested %d is over max allowed %d\n", + numbytes, MAX_SW_I2C_COMMANDS); + return -EINVAL; + } + memset(&req, 0, sizeof(req)); arcturus_fill_eeprom_i2c_req(&req, false, address, numbytes, data); @@ -2117,6 +2121,12 @@ SwI2cRequest_t req; struct amdgpu_device *adev = to_amdgpu_device(control); + if (numbytes > MAX_SW_I2C_COMMANDS) { + dev_err(adev->dev, "numbytes requested %d is over max allowed %d\n", + numbytes, MAX_SW_I2C_COMMANDS); + return -EINVAL; + } + memset(&req, 0, sizeof(req)); arcturus_fill_eeprom_i2c_req(&req, true, address, numbytes, data); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/ci_baco.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/ci_baco.c @@ -142,12 +142,12 @@ { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_BCLK_OFF_MASK, BACO_CNTL__BACO_BCLK_OFF__SHIFT, 0, 0x00 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_POWER_OFF_MASK, BACO_CNTL__BACO_POWER_OFF__SHIFT, 0, 0x00 }, { CMD_DELAY_MS, 0, 0, 0, 20, 0 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_BF_MASK, 0, 0xffffffff, 0x20 }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_BF_MASK, 0, 0xffffffff, 0x200 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_ISO_DIS_MASK, BACO_CNTL__BACO_ISO_DIS__SHIFT, 0, 0x01 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_MASK, 0, 5, 0x1c }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_MASK, 0, 5, 0x1c00 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_ANA_ISO_DIS_MASK, BACO_CNTL__BACO_ANA_ISO_DIS__SHIFT, 0, 0x01 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_RESET_EN_MASK, BACO_CNTL__BACO_RESET_EN__SHIFT, 0, 0x00 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__RCU_BIF_CONFIG_DONE_MASK, 0, 5, 0x10 }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__RCU_BIF_CONFIG_DONE_MASK, 0, 5, 0x100 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_EN_MASK, BACO_CNTL__BACO_EN__SHIFT, 0, 0x00 }, { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__BACO_MODE_MASK, 0, 0xffffffff, 0x00 } }; @@ -155,6 +155,7 @@ static const struct baco_cmd_entry clean_baco_tbl[] = { { CMD_WRITE, mmBIOS_SCRATCH_6, 0, 0, 0, 0 }, + { CMD_WRITE, mmBIOS_SCRATCH_7, 0, 0, 0, 0 }, { CMD_WRITE, mmCP_PFP_UCODE_ADDR, 0, 0, 0, 0 } }; --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c @@ -204,8 +204,7 @@ { struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend); - if (smu10_data->need_min_deep_sleep_dcefclk && - smu10_data->deep_sleep_dcefclk != clock) { + if (clock && smu10_data->deep_sleep_dcefclk != clock) { smu10_data->deep_sleep_dcefclk = clock; smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetMinDeepSleepDcefclk, @@ -219,8 +218,7 @@ { struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend); - if (smu10_data->dcf_actual_hard_min_freq && - smu10_data->dcf_actual_hard_min_freq != clock) { + if (clock && smu10_data->dcf_actual_hard_min_freq != clock) { smu10_data->dcf_actual_hard_min_freq = clock; smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinDcefclkByFreq, @@ -234,8 +232,7 @@ { struct smu10_hwmgr *smu10_data = (struct smu10_hwmgr *)(hwmgr->backend); - if (smu10_data->f_actual_hard_min_freq && - smu10_data->f_actual_hard_min_freq != clock) { + if (clock && smu10_data->f_actual_hard_min_freq != clock) { smu10_data->f_actual_hard_min_freq = clock; smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinFclkByFreq, @@ -566,6 +563,8 @@ struct smu10_hwmgr *data = hwmgr->backend; uint32_t min_sclk = hwmgr->display_config->min_core_set_clock; uint32_t min_mclk = hwmgr->display_config->min_mem_set_clock/100; + uint32_t index_fclk = data->clock_vol_info.vdd_dep_on_fclk->count - 1; + uint32_t index_socclk = data->clock_vol_info.vdd_dep_on_socclk->count - 1; if (hwmgr->smu_version < 0x1E3700) { pr_info("smu firmware version too old, can not set dpm level\n"); @@ -679,13 +678,13 @@ smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinFclkByFreq, hwmgr->display_config->num_display > 3 ? - SMU10_UMD_PSTATE_PEAK_FCLK : + data->clock_vol_info.vdd_dep_on_fclk->entries[0].clk : min_mclk, NULL); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinSocclkByFreq, - SMU10_UMD_PSTATE_MIN_SOCCLK, + data->clock_vol_info.vdd_dep_on_socclk->entries[0].clk, NULL); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetHardMinVcn, @@ -698,11 +697,11 @@ NULL); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetSoftMaxFclkByFreq, - SMU10_UMD_PSTATE_PEAK_FCLK, + data->clock_vol_info.vdd_dep_on_fclk->entries[index_fclk].clk, NULL); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetSoftMaxSocclkByFreq, - SMU10_UMD_PSTATE_PEAK_SOCCLK, + data->clock_vol_info.vdd_dep_on_socclk->entries[index_socclk].clk, NULL); smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_SetSoftMaxVcn, --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c @@ -524,6 +524,48 @@ tmp, MC_CG_ARB_FREQ_F0); } +static uint16_t smu7_override_pcie_speed(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev); + uint16_t pcie_gen = 0; + + if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN4 && + adev->pm.pcie_gen_mask & CAIL_ASIC_PCIE_LINK_SPEED_SUPPORT_GEN4) + pcie_gen = 3; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3 && + adev->pm.pcie_gen_mask & CAIL_ASIC_PCIE_LINK_SPEED_SUPPORT_GEN3) + pcie_gen = 2; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2 && + adev->pm.pcie_gen_mask & CAIL_ASIC_PCIE_LINK_SPEED_SUPPORT_GEN2) + pcie_gen = 1; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN1 && + adev->pm.pcie_gen_mask & CAIL_ASIC_PCIE_LINK_SPEED_SUPPORT_GEN1) + pcie_gen = 0; + + return pcie_gen; +} + +static uint16_t smu7_override_pcie_width(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev); + uint16_t pcie_width = 0; + + if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X16) + pcie_width = 16; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X12) + pcie_width = 12; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X8) + pcie_width = 8; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X4) + pcie_width = 4; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X2) + pcie_width = 2; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X1) + pcie_width = 1; + + return pcie_width; +} + static int smu7_setup_default_pcie_table(struct pp_hwmgr *hwmgr) { struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); @@ -620,6 +662,11 @@ PP_Min_PCIEGen), get_pcie_lane_support(data->pcie_lane_cap, PP_Max_PCIELane)); + + if (data->pcie_dpm_key_disabled) + phm_setup_pcie_table_entry(&data->dpm_table.pcie_speed_table, + data->dpm_table.pcie_speed_table.count, + smu7_override_pcie_speed(hwmgr), smu7_override_pcie_width(hwmgr)); } return 0; } @@ -1180,6 +1227,13 @@ NULL)), "Failed to enable pcie DPM during DPM Start Function!", return -EINVAL); + } else { + PP_ASSERT_WITH_CODE( + (0 == smum_send_msg_to_smc(hwmgr, + PPSMC_MSG_PCIeDPM_Disable, + NULL)), + "Failed to disble pcie DPM during DPM Start Function!", + return -EINVAL); } if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, @@ -1541,6 +1595,10 @@ PP_ASSERT_WITH_CODE((tmp_result == 0), "Failed to reset to default!", result = tmp_result); + tmp_result = smum_stop_smc(hwmgr); + PP_ASSERT_WITH_CODE((tmp_result == 0), + "Failed to stop smc!", result = tmp_result); + tmp_result = smu7_force_switch_to_arbf0(hwmgr); PP_ASSERT_WITH_CODE((tmp_result == 0), "Failed to force to switch arbf0!", result = tmp_result); @@ -2879,7 +2937,7 @@ if (hwmgr->is_kicker) switch_limit_us = data->is_memory_gddr5 ? 450 : 150; else - switch_limit_us = data->is_memory_gddr5 ? 190 : 150; + switch_limit_us = data->is_memory_gddr5 ? 200 : 150; break; case CHIP_VEGAM: switch_limit_us = 30; @@ -3587,7 +3645,8 @@ case AMDGPU_PP_SENSOR_GPU_POWER: return smu7_get_gpu_power(hwmgr, (uint32_t *)value); case AMDGPU_PP_SENSOR_VDDGFX: - if ((data->vr_config & 0xff) == 0x2) + if ((data->vr_config & VRCONF_VDDGFX_MASK) == + (VR_SVI2_PLANE_2 << VRCONF_VDDGFX_SHIFT)) val_vid = PHM_READ_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, PWR_SVI2_STATUS, PLANE2_VID); else @@ -4756,6 +4815,72 @@ return 0; } +static int smu7_get_sclks_with_latency(struct pp_hwmgr *hwmgr, + struct pp_clock_levels_with_latency *clocks) +{ + struct phm_ppt_v1_information *table_info = + (struct phm_ppt_v1_information *)hwmgr->pptable; + struct phm_ppt_v1_clock_voltage_dependency_table *dep_sclk_table = + table_info->vdd_dep_on_sclk; + int i; + + clocks->num_levels = 0; + for (i = 0; i < dep_sclk_table->count; i++) { + if (dep_sclk_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = + dep_sclk_table->entries[i].clk * 10; + clocks->num_levels++; + } + } + + return 0; +} + +static int smu7_get_mclks_with_latency(struct pp_hwmgr *hwmgr, + struct pp_clock_levels_with_latency *clocks) +{ + struct phm_ppt_v1_information *table_info = + (struct phm_ppt_v1_information *)hwmgr->pptable; + struct phm_ppt_v1_clock_voltage_dependency_table *dep_mclk_table = + table_info->vdd_dep_on_mclk; + int i; + + clocks->num_levels = 0; + for (i = 0; i < dep_mclk_table->count; i++) { + if (dep_mclk_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = + dep_mclk_table->entries[i].clk * 10; + clocks->data[clocks->num_levels].latency_in_us = + smu7_get_mem_latency(hwmgr, dep_mclk_table->entries[i].clk); + clocks->num_levels++; + } + } + + return 0; +} + +static int smu7_get_clock_by_type_with_latency(struct pp_hwmgr *hwmgr, + enum amd_pp_clock_type type, + struct pp_clock_levels_with_latency *clocks) +{ + if (!(hwmgr->chip_id >= CHIP_POLARIS10 && + hwmgr->chip_id <= CHIP_VEGAM)) + return -EINVAL; + + switch (type) { + case amd_pp_sys_clock: + smu7_get_sclks_with_latency(hwmgr, clocks); + break; + case amd_pp_mem_clock: + smu7_get_mclks_with_latency(hwmgr, clocks); + break; + default: + return -EINVAL; + } + + return 0; +} + static int smu7_notify_cac_buffer_info(struct pp_hwmgr *hwmgr, uint32_t virtual_addr_low, uint32_t virtual_addr_hi, @@ -5173,6 +5298,7 @@ .get_mclk_od = smu7_get_mclk_od, .set_mclk_od = smu7_set_mclk_od, .get_clock_by_type = smu7_get_clock_by_type, + .get_clock_by_type_with_latency = smu7_get_clock_by_type_with_latency, .read_sensor = smu7_read_sensor, .dynamic_state_management_disable = smu7_disable_dpm_tasks, .avfs_control = smu7_avfs_control, --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c @@ -54,6 +54,9 @@ #include "smuio/smuio_9_0_offset.h" #include "smuio/smuio_9_0_sh_mask.h" +#define smnPCIE_LC_SPEED_CNTL 0x11140290 +#define smnPCIE_LC_LINK_WIDTH_CNTL 0x11140288 + #define HBM_MEMORY_CHANNEL_WIDTH 128 static const uint32_t channel_number[] = {1, 2, 0, 4, 0, 8, 0, 16, 2}; @@ -443,8 +446,7 @@ if (PP_CAP(PHM_PlatformCaps_VCEDPM)) data->smu_features[GNLD_DPM_VCE].supported = true; - if (!data->registry_data.pcie_dpm_key_disabled) - data->smu_features[GNLD_DPM_LINK].supported = true; + data->smu_features[GNLD_DPM_LINK].supported = true; if (!data->registry_data.dcefclk_dpm_key_disabled) data->smu_features[GNLD_DPM_DCEFCLK].supported = true; @@ -1506,6 +1508,55 @@ return 0; } +static int vega10_override_pcie_parameters(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev); + struct vega10_hwmgr *data = + (struct vega10_hwmgr *)(hwmgr->backend); + uint32_t pcie_gen = 0, pcie_width = 0; + PPTable_t *pp_table = &(data->smc_state_table.pp_table); + int i; + + if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN4) + pcie_gen = 3; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3) + pcie_gen = 2; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2) + pcie_gen = 1; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN1) + pcie_gen = 0; + + if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X16) + pcie_width = 6; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X12) + pcie_width = 5; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X8) + pcie_width = 4; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X4) + pcie_width = 3; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X2) + pcie_width = 2; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X1) + pcie_width = 1; + + for (i = 0; i < NUM_LINK_LEVELS; i++) { + if (pp_table->PcieGenSpeed[i] > pcie_gen) + pp_table->PcieGenSpeed[i] = pcie_gen; + + if (pp_table->PcieLaneCount[i] > pcie_width) + pp_table->PcieLaneCount[i] = pcie_width; + } + + if (data->registry_data.pcie_dpm_key_disabled) { + for (i = 0; i < NUM_LINK_LEVELS; i++) { + pp_table->PcieGenSpeed[i] = pcie_gen; + pp_table->PcieLaneCount[i] = pcie_width; + } + } + + return 0; +} + static int vega10_populate_smc_link_levels(struct pp_hwmgr *hwmgr) { int result = -1; @@ -2557,6 +2608,11 @@ "Failed to initialize Link Level!", return result); + result = vega10_override_pcie_parameters(hwmgr); + PP_ASSERT_WITH_CODE(!result, + "Failed to override pcie parameters!", + return result); + result = vega10_populate_all_graphic_levels(hwmgr); PP_ASSERT_WITH_CODE(!result, "Failed to initialize Graphics Level!", @@ -2920,9 +2976,18 @@ } } + if (data->registry_data.pcie_dpm_key_disabled) { + PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr, + false, data->smu_features[GNLD_DPM_LINK].smu_feature_bitmap), + "Attempt to Disable Link DPM feature Failed!", return -EINVAL); + data->smu_features[GNLD_DPM_LINK].enabled = false; + data->smu_features[GNLD_DPM_LINK].supported = false; + } + return 0; } + static int vega10_enable_disable_PCC_limit_feature(struct pp_hwmgr *hwmgr, bool enable) { struct vega10_hwmgr *data = hwmgr->backend; @@ -4535,6 +4600,24 @@ return 0; } +static int vega10_get_current_pcie_link_width_level(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = hwmgr->adev; + + return (RREG32_PCIE(smnPCIE_LC_LINK_WIDTH_CNTL) & + PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD_MASK) + >> PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD__SHIFT; +} + +static int vega10_get_current_pcie_link_speed_level(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = hwmgr->adev; + + return (RREG32_PCIE(smnPCIE_LC_SPEED_CNTL) & + PSWUSP0_PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE_MASK) + >> PSWUSP0_PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE__SHIFT; +} + static int vega10_print_clock_levels(struct pp_hwmgr *hwmgr, enum pp_clock_type type, char *buf) { @@ -4543,8 +4626,9 @@ struct vega10_single_dpm_table *mclk_table = &(data->dpm_table.mem_table); struct vega10_single_dpm_table *soc_table = &(data->dpm_table.soc_table); struct vega10_single_dpm_table *dcef_table = &(data->dpm_table.dcef_table); - struct vega10_pcie_table *pcie_table = &(data->dpm_table.pcie_table); struct vega10_odn_clock_voltage_dependency_table *podn_vdd_dep = NULL; + uint32_t gen_speed, lane_width, current_gen_speed, current_lane_width; + PPTable_t *pptable = &(data->smc_state_table.pp_table); int i, now, size = 0, count = 0; @@ -4601,15 +4685,31 @@ "*" : ""); break; case PP_PCIE: - smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentLinkIndex, &now); - - for (i = 0; i < pcie_table->count; i++) - size += sprintf(buf + size, "%d: %s %s\n", i, - (pcie_table->pcie_gen[i] == 0) ? "2.5GT/s, x1" : - (pcie_table->pcie_gen[i] == 1) ? "5.0GT/s, x16" : - (pcie_table->pcie_gen[i] == 2) ? "8.0GT/s, x16" : "", - (i == now) ? "*" : ""); + current_gen_speed = + vega10_get_current_pcie_link_speed_level(hwmgr); + current_lane_width = + vega10_get_current_pcie_link_width_level(hwmgr); + for (i = 0; i < NUM_LINK_LEVELS; i++) { + gen_speed = pptable->PcieGenSpeed[i]; + lane_width = pptable->PcieLaneCount[i]; + + size += sprintf(buf + size, "%d: %s %s %s\n", i, + (gen_speed == 0) ? "2.5GT/s," : + (gen_speed == 1) ? "5.0GT/s," : + (gen_speed == 2) ? "8.0GT/s," : + (gen_speed == 3) ? "16.0GT/s," : "", + (lane_width == 1) ? "x1" : + (lane_width == 2) ? "x2" : + (lane_width == 3) ? "x4" : + (lane_width == 4) ? "x8" : + (lane_width == 5) ? "x12" : + (lane_width == 6) ? "x16" : "", + (current_gen_speed == gen_speed) && + (current_lane_width == lane_width) ? + "*" : ""); + } break; + case OD_SCLK: if (hwmgr->od_enabled) { size = sprintf(buf, "%s:\n", "OD_SCLK"); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c @@ -363,17 +363,29 @@ static int vega10_thermal_set_temperature_range(struct pp_hwmgr *hwmgr, struct PP_TemperatureRange *range) { + struct phm_ppt_v2_information *pp_table_info = + (struct phm_ppt_v2_information *)(hwmgr->pptable); + struct phm_tdp_table *tdp_table = pp_table_info->tdp_table; struct amdgpu_device *adev = hwmgr->adev; - int low = VEGA10_THERMAL_MINIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; - int high = VEGA10_THERMAL_MAXIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + int low = VEGA10_THERMAL_MINIMUM_ALERT_TEMP; + int high = VEGA10_THERMAL_MAXIMUM_ALERT_TEMP; uint32_t val; - if (low < range->min) - low = range->min; - if (high > range->max) - high = range->max; + /* compare them in unit celsius degree */ + if (low < range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES) + low = range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + + /* + * As a common sense, usSoftwareShutdownTemp should be bigger + * than ThotspotLimit. For any invalid usSoftwareShutdownTemp, + * we will just use the max possible setting VEGA10_THERMAL_MAXIMUM_ALERT_TEMP + * to avoid false alarms. + */ + if ((tdp_table->usSoftwareShutdownTemp > + range->hotspot_crit_max / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)) { + if (high > tdp_table->usSoftwareShutdownTemp) + high = tdp_table->usSoftwareShutdownTemp; + } if (low > high) return -EINVAL; @@ -382,8 +394,8 @@ val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, MAX_IH_CREDIT, 5); val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, THERM_IH_HW_ENA, 1); - val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, (high / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); - val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, (low / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); + val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, high); + val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, low); val &= (~THM_THERMAL_INT_CTRL__THERM_TRIGGER_MASK_MASK) & (~THM_THERMAL_INT_CTRL__THERM_INTH_MASK_MASK) & (~THM_THERMAL_INT_CTRL__THERM_INTL_MASK_MASK); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_hwmgr.c @@ -126,6 +126,7 @@ data->registry_data.auto_wattman_debug = 0; data->registry_data.auto_wattman_sample_period = 100; data->registry_data.auto_wattman_threshold = 50; + data->registry_data.pcie_dpm_key_disabled = !(hwmgr->feature_mask & PP_PCIE_DPM_MASK); } static int vega12_set_features_platform_caps(struct pp_hwmgr *hwmgr) @@ -474,6 +475,90 @@ dpm_state->hard_max_level = 0xffff; } +static int vega12_override_pcie_parameters(struct pp_hwmgr *hwmgr) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev); + struct vega12_hwmgr *data = + (struct vega12_hwmgr *)(hwmgr->backend); + uint32_t pcie_gen = 0, pcie_width = 0, smu_pcie_arg, pcie_gen_arg, pcie_width_arg; + PPTable_t *pp_table = &(data->smc_state_table.pp_table); + int i; + int ret; + + if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN4) + pcie_gen = 3; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3) + pcie_gen = 2; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2) + pcie_gen = 1; + else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN1) + pcie_gen = 0; + + if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X16) + pcie_width = 6; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X12) + pcie_width = 5; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X8) + pcie_width = 4; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X4) + pcie_width = 3; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X2) + pcie_width = 2; + else if (adev->pm.pcie_mlw_mask & CAIL_PCIE_LINK_WIDTH_SUPPORT_X1) + pcie_width = 1; + + /* Bit 31:16: LCLK DPM level. 0 is DPM0, and 1 is DPM1 + * Bit 15:8: PCIE GEN, 0 to 3 corresponds to GEN1 to GEN4 + * Bit 7:0: PCIE lane width, 1 to 7 corresponds is x1 to x32 + */ + for (i = 0; i < NUM_LINK_LEVELS; i++) { + pcie_gen_arg = (pp_table->PcieGenSpeed[i] > pcie_gen) ? pcie_gen : + pp_table->PcieGenSpeed[i]; + pcie_width_arg = (pp_table->PcieLaneCount[i] > pcie_width) ? pcie_width : + pp_table->PcieLaneCount[i]; + + if (pcie_gen_arg != pp_table->PcieGenSpeed[i] || pcie_width_arg != + pp_table->PcieLaneCount[i]) { + smu_pcie_arg = (i << 16) | (pcie_gen_arg << 8) | pcie_width_arg; + ret = smum_send_msg_to_smc_with_parameter(hwmgr, + PPSMC_MSG_OverridePcieParameters, smu_pcie_arg, + NULL); + PP_ASSERT_WITH_CODE(!ret, + "[OverridePcieParameters] Attempt to override pcie params failed!", + return ret); + } + + /* update the pptable */ + pp_table->PcieGenSpeed[i] = pcie_gen_arg; + pp_table->PcieLaneCount[i] = pcie_width_arg; + } + + /* override to the highest if it's disabled from ppfeaturmask */ + if (data->registry_data.pcie_dpm_key_disabled) { + for (i = 0; i < NUM_LINK_LEVELS; i++) { + smu_pcie_arg = (i << 16) | (pcie_gen << 8) | pcie_width; + ret = smum_send_msg_to_smc_with_parameter(hwmgr, + PPSMC_MSG_OverridePcieParameters, smu_pcie_arg, + NULL); + PP_ASSERT_WITH_CODE(!ret, + "[OverridePcieParameters] Attempt to override pcie params failed!", + return ret); + + pp_table->PcieGenSpeed[i] = pcie_gen; + pp_table->PcieLaneCount[i] = pcie_width; + } + ret = vega12_enable_smc_features(hwmgr, + false, + data->smu_features[GNLD_DPM_LINK].smu_feature_bitmap); + PP_ASSERT_WITH_CODE(!ret, + "Attempt to Disable DPM LINK Failed!", + return ret); + data->smu_features[GNLD_DPM_LINK].enabled = false; + data->smu_features[GNLD_DPM_LINK].supported = false; + } + return 0; +} + static int vega12_get_number_of_dpm_level(struct pp_hwmgr *hwmgr, PPCLK_e clk_id, uint32_t *num_of_levels) { @@ -962,6 +1047,11 @@ "Failed to enable all smu features!", return result); + result = vega12_override_pcie_parameters(hwmgr); + PP_ASSERT_WITH_CODE(!result, + "[EnableDPMTasks] Failed to override pcie parameters!", + return result); + tmp_result = vega12_power_control_set_level(hwmgr); PP_ASSERT_WITH_CODE(!tmp_result, "Failed to power control set level!", --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_thermal.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega12_thermal.c @@ -170,17 +170,18 @@ static int vega12_thermal_set_temperature_range(struct pp_hwmgr *hwmgr, struct PP_TemperatureRange *range) { + struct phm_ppt_v3_information *pptable_information = + (struct phm_ppt_v3_information *)hwmgr->pptable; struct amdgpu_device *adev = hwmgr->adev; - int low = VEGA12_THERMAL_MINIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; - int high = VEGA12_THERMAL_MAXIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + int low = VEGA12_THERMAL_MINIMUM_ALERT_TEMP; + int high = VEGA12_THERMAL_MAXIMUM_ALERT_TEMP; uint32_t val; - if (low < range->min) - low = range->min; - if (high > range->max) - high = range->max; + /* compare them in unit celsius degree */ + if (low < range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES) + low = range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + if (high > pptable_information->us_software_shutdown_temp) + high = pptable_information->us_software_shutdown_temp; if (low > high) return -EINVAL; @@ -189,8 +190,8 @@ val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, MAX_IH_CREDIT, 5); val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, THERM_IH_HW_ENA, 1); - val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, (high / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); - val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, (low / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); + val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, high); + val = REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, low); val = val & (~THM_THERMAL_INT_CTRL__THERM_TRIGGER_MASK_MASK); WREG32_SOC15(THM, 0, mmTHM_THERMAL_INT_CTRL, val); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c @@ -166,6 +166,7 @@ data->registry_data.gfxoff_controlled_by_driver = 1; data->gfxoff_allowed = false; data->counter_gfxoff = 0; + data->registry_data.pcie_dpm_key_disabled = !(hwmgr->feature_mask & PP_PCIE_DPM_MASK); } static int vega20_set_features_platform_caps(struct pp_hwmgr *hwmgr) @@ -827,7 +828,9 @@ struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev); struct vega20_hwmgr *data = (struct vega20_hwmgr *)(hwmgr->backend); - uint32_t pcie_gen = 0, pcie_width = 0, smu_pcie_arg; + uint32_t pcie_gen = 0, pcie_width = 0, smu_pcie_arg, pcie_gen_arg, pcie_width_arg; + PPTable_t *pp_table = &(data->smc_state_table.pp_table); + int i; int ret; if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN4) @@ -856,17 +859,51 @@ * Bit 15:8: PCIE GEN, 0 to 3 corresponds to GEN1 to GEN4 * Bit 7:0: PCIE lane width, 1 to 7 corresponds is x1 to x32 */ - smu_pcie_arg = (1 << 16) | (pcie_gen << 8) | pcie_width; - ret = smum_send_msg_to_smc_with_parameter(hwmgr, - PPSMC_MSG_OverridePcieParameters, smu_pcie_arg, - NULL); - PP_ASSERT_WITH_CODE(!ret, - "[OverridePcieParameters] Attempt to override pcie params failed!", - return ret); + for (i = 0; i < NUM_LINK_LEVELS; i++) { + pcie_gen_arg = (pp_table->PcieGenSpeed[i] > pcie_gen) ? pcie_gen : + pp_table->PcieGenSpeed[i]; + pcie_width_arg = (pp_table->PcieLaneCount[i] > pcie_width) ? pcie_width : + pp_table->PcieLaneCount[i]; + + if (pcie_gen_arg != pp_table->PcieGenSpeed[i] || pcie_width_arg != + pp_table->PcieLaneCount[i]) { + smu_pcie_arg = (i << 16) | (pcie_gen_arg << 8) | pcie_width_arg; + ret = smum_send_msg_to_smc_with_parameter(hwmgr, + PPSMC_MSG_OverridePcieParameters, smu_pcie_arg, + NULL); + PP_ASSERT_WITH_CODE(!ret, + "[OverridePcieParameters] Attempt to override pcie params failed!", + return ret); + } + + /* update the pptable */ + pp_table->PcieGenSpeed[i] = pcie_gen_arg; + pp_table->PcieLaneCount[i] = pcie_width_arg; + } - data->pcie_parameters_override = true; - data->pcie_gen_level1 = pcie_gen; - data->pcie_width_level1 = pcie_width; + /* override to the highest if it's disabled from ppfeaturmask */ + if (data->registry_data.pcie_dpm_key_disabled) { + for (i = 0; i < NUM_LINK_LEVELS; i++) { + smu_pcie_arg = (i << 16) | (pcie_gen << 8) | pcie_width; + ret = smum_send_msg_to_smc_with_parameter(hwmgr, + PPSMC_MSG_OverridePcieParameters, smu_pcie_arg, + NULL); + PP_ASSERT_WITH_CODE(!ret, + "[OverridePcieParameters] Attempt to override pcie params failed!", + return ret); + + pp_table->PcieGenSpeed[i] = pcie_gen; + pp_table->PcieLaneCount[i] = pcie_width; + } + ret = vega20_enable_smc_features(hwmgr, + false, + data->smu_features[GNLD_DPM_LINK].smu_feature_bitmap); + PP_ASSERT_WITH_CODE(!ret, + "Attempt to Disable DPM LINK Failed!", + return ret); + data->smu_features[GNLD_DPM_LINK].enabled = false; + data->smu_features[GNLD_DPM_LINK].supported = false; + } return 0; } @@ -979,10 +1016,7 @@ { struct vega20_hwmgr *data = (struct vega20_hwmgr *)(hwmgr->backend); - uint64_t features_enabled; - int i; - bool enabled; - int ret = 0; + int i, ret = 0; PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_DisableAllSmuFeatures, @@ -990,17 +1024,8 @@ "[DisableAllSMUFeatures] Failed to disable all smu features!", return ret); - ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled); - PP_ASSERT_WITH_CODE(!ret, - "[DisableAllSMUFeatures] Failed to get enabled smc features!", - return ret); - - for (i = 0; i < GNLD_FEATURES_MAX; i++) { - enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ? - true : false; - data->smu_features[i].enabled = enabled; - data->smu_features[i].supported = enabled; - } + for (i = 0; i < GNLD_FEATURES_MAX; i++) + data->smu_features[i].enabled = 0; return 0; } @@ -1652,12 +1677,6 @@ data->uvd_power_gated = true; data->vce_power_gated = true; - - if (data->smu_features[GNLD_DPM_UVD].enabled) - data->uvd_power_gated = false; - - if (data->smu_features[GNLD_DPM_VCE].enabled) - data->vce_power_gated = false; } static int vega20_enable_dpm_tasks(struct pp_hwmgr *hwmgr) @@ -3230,10 +3249,11 @@ static int vega20_set_ppfeature_status(struct pp_hwmgr *hwmgr, uint64_t new_ppfeature_masks) { - uint64_t features_enabled; - uint64_t features_to_enable; - uint64_t features_to_disable; - int ret = 0; + struct vega20_hwmgr *data = + (struct vega20_hwmgr *)(hwmgr->backend); + uint64_t features_enabled, features_to_enable, features_to_disable; + int i, ret = 0; + bool enabled; if (new_ppfeature_masks >= (1ULL << GNLD_FEATURES_MAX)) return -EINVAL; @@ -3262,6 +3282,17 @@ return ret; } + /* Update the cached feature enablement state */ + ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled); + if (ret) + return ret; + + for (i = 0; i < GNLD_FEATURES_MAX; i++) { + enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ? + true : false; + data->smu_features[i].enabled = enabled; + } + return 0; } @@ -3274,9 +3305,7 @@ data->od8_settings.od8_settings_array; OverDriveTable_t *od_table = &(data->smc_state_table.overdrive_table); - struct phm_ppt_v3_information *pptable_information = - (struct phm_ppt_v3_information *)hwmgr->pptable; - PPTable_t *pptable = (PPTable_t *)pptable_information->smc_pptable; + PPTable_t *pptable = &(data->smc_state_table.pp_table); struct amdgpu_device *adev = hwmgr->adev; struct pp_clock_levels_with_latency clocks; struct vega20_single_dpm_table *fclk_dpm_table = @@ -3378,13 +3407,9 @@ PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD_MASK) >> PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD__SHIFT; for (i = 0; i < NUM_LINK_LEVELS; i++) { - if (i == 1 && data->pcie_parameters_override) { - gen_speed = data->pcie_gen_level1; - lane_width = data->pcie_width_level1; - } else { - gen_speed = pptable->PcieGenSpeed[i]; - lane_width = pptable->PcieLaneCount[i]; - } + gen_speed = pptable->PcieGenSpeed[i]; + lane_width = pptable->PcieLaneCount[i]; + size += sprintf(buf + size, "%d: %s %s %dMhz %s\n", i, (gen_speed == 0) ? "2.5GT/s," : (gen_speed == 1) ? "5.0GT/s," : --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_thermal.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_thermal.c @@ -240,17 +240,18 @@ static int vega20_thermal_set_temperature_range(struct pp_hwmgr *hwmgr, struct PP_TemperatureRange *range) { + struct phm_ppt_v3_information *pptable_information = + (struct phm_ppt_v3_information *)hwmgr->pptable; struct amdgpu_device *adev = hwmgr->adev; - int low = VEGA20_THERMAL_MINIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; - int high = VEGA20_THERMAL_MAXIMUM_ALERT_TEMP * - PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + int low = VEGA20_THERMAL_MINIMUM_ALERT_TEMP; + int high = VEGA20_THERMAL_MAXIMUM_ALERT_TEMP; uint32_t val; - if (low < range->min) - low = range->min; - if (high > range->max) - high = range->max; + /* compare them in unit celsius degree */ + if (low < range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES) + low = range->min / PP_TEMPERATURE_UNITS_PER_CENTIGRADES; + if (high > pptable_information->us_software_shutdown_temp) + high = pptable_information->us_software_shutdown_temp; if (low > high) return -EINVAL; @@ -259,8 +260,8 @@ val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, MAX_IH_CREDIT, 5); val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, THERM_IH_HW_ENA, 1); - val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, (high / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); - val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, (low / PP_TEMPERATURE_UNITS_PER_CENTIGRADES)); + val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTH, high); + val = CGS_REG_SET_FIELD(val, THM_THERMAL_INT_CTRL, DIG_THERM_INTL, low); val = val & (~THM_THERMAL_INT_CTRL__THERM_TRIGGER_MASK_MASK); WREG32_SOC15(THM, 0, mmTHM_THERMAL_INT_CTRL, val); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h @@ -229,6 +229,7 @@ bool (*is_hw_avfs_present)(struct pp_hwmgr *hwmgr); int (*update_dpm_settings)(struct pp_hwmgr *hwmgr, void *profile_setting); int (*smc_table_manager)(struct pp_hwmgr *hwmgr, uint8_t *table, uint16_t table_id, bool rw); /*rw: true for read, false for write */ + int (*stop_smc)(struct pp_hwmgr *hwmgr); }; struct pp_hwmgr_func { --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/inc/smumgr.h +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/inc/smumgr.h @@ -113,4 +113,6 @@ extern int smum_smc_table_manager(struct pp_hwmgr *hwmgr, uint8_t *table, uint16_t table_id, bool rw); +extern int smum_stop_smc(struct pp_hwmgr *hwmgr); + #endif --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/renoir_ppt.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/renoir_ppt.c @@ -278,6 +278,7 @@ count = NUM_SOCCLK_DPM_LEVELS; cur_value = metrics.ClockFrequency[CLOCK_SOCCLK]; break; + case SMU_UCLK: case SMU_MCLK: count = NUM_MEMCLK_DPM_LEVELS; cur_value = metrics.ClockFrequency[CLOCK_FCLK]; --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/smu_v11_0.c @@ -47,10 +47,8 @@ #include "asic_reg/smuio/smuio_11_0_0_sh_mask.h" MODULE_FIRMWARE("amdgpu/vega20_smc.bin"); -MODULE_FIRMWARE("amdgpu/arcturus_smc.bin"); MODULE_FIRMWARE("amdgpu/navi10_smc.bin"); MODULE_FIRMWARE("amdgpu/navi14_smc.bin"); -MODULE_FIRMWARE("amdgpu/navi12_smc.bin"); #define SMU11_VOLTAGE_SCALE 4 @@ -164,7 +162,8 @@ chip_name = "navi12"; break; default: - BUG(); + dev_err(adev->dev, "Unsupported ASIC type %d\n", adev->asic_type); + return -EINVAL; } snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_smc.bin", chip_name); --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/smu_v12_0.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/smu_v12_0.c @@ -475,6 +475,7 @@ break; case SMU_FCLK: case SMU_MCLK: + case SMU_UCLK: ret = smu_send_smc_msg_with_param(smu, SMU_MSG_SetHardMinFclkByFreq, min, NULL); if (ret) return ret; --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c @@ -37,6 +37,7 @@ #include "cgs_common.h" #include "atombios.h" #include "pppcielanes.h" +#include "smu7_smumgr.h" #include "smu/smu_7_0_1_d.h" #include "smu/smu_7_0_1_sh_mask.h" @@ -2935,6 +2936,29 @@ return 0; } +static void ci_reset_smc(struct pp_hwmgr *hwmgr) +{ + PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, + SMC_SYSCON_RESET_CNTL, + rst_reg, 1); +} + + +static void ci_stop_smc_clock(struct pp_hwmgr *hwmgr) +{ + PHM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, + SMC_SYSCON_CLOCK_CNTL_0, + ck_disable, 1); +} + +static int ci_stop_smc(struct pp_hwmgr *hwmgr) +{ + ci_reset_smc(hwmgr); + ci_stop_smc_clock(hwmgr); + + return 0; +} + const struct pp_smumgr_func ci_smu_funcs = { .name = "ci_smu", .smu_init = ci_smu_init, @@ -2945,6 +2969,7 @@ .request_smu_load_specific_fw = NULL, .send_msg_to_smc = ci_send_msg_to_smc, .send_msg_to_smc_with_parameter = ci_send_msg_to_smc_with_parameter, + .get_argument = smu7_get_argument, .download_pptable_settings = NULL, .upload_pptable_settings = NULL, .get_offsetof = ci_get_offsetof, @@ -2959,4 +2984,5 @@ .is_dpm_running = ci_is_dpm_running, .update_dpm_settings = ci_update_dpm_settings, .update_smc_table = ci_update_smc_table, + .stop_smc = ci_stop_smc, }; --- linux-5.8.0.orig/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c +++ linux-5.8.0/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c @@ -245,3 +245,11 @@ return -EINVAL; } + +int smum_stop_smc(struct pp_hwmgr *hwmgr) +{ + if (hwmgr->smumgr_funcs->stop_smc) + return hwmgr->smumgr_funcs->stop_smc(hwmgr); + + return 0; +} --- linux-5.8.0.orig/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ linux-5.8.0/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -492,10 +492,8 @@ crtc->state = NULL; state = kzalloc(sizeof(*state), GFP_KERNEL); - if (state) { - crtc->state = &state->base; - crtc->state->crtc = crtc; - } + if (state) + __drm_atomic_helper_crtc_reset(crtc, &state->base); } static struct drm_crtc_state * @@ -616,7 +614,6 @@ return err; drm_crtc_helper_add(crtc, &komeda_crtc_helper_funcs); - drm_crtc_vblank_reset(crtc); crtc->port = kcrtc->master->of_output_port; --- linux-5.8.0.orig/drivers/gpu/drm/arm/malidp_drv.c +++ linux-5.8.0/drivers/gpu/drm/arm/malidp_drv.c @@ -870,7 +870,6 @@ drm->irq_enabled = true; ret = drm_vblank_init(drm, drm->mode_config.num_crtc); - drm_crtc_vblank_reset(&malidp->crtc); if (ret < 0) { DRM_ERROR("failed to initialise vblank\n"); goto vblank_fail; --- linux-5.8.0.orig/drivers/gpu/drm/arm/malidp_planes.c +++ linux-5.8.0/drivers/gpu/drm/arm/malidp_planes.c @@ -928,7 +928,7 @@ const struct malidp_hw_regmap *map = &malidp->dev->hw->map; struct malidp_plane *plane = NULL; enum drm_plane_type plane_type; - unsigned long crtcs = 1 << drm->mode_config.num_crtc; + unsigned long crtcs = BIT(drm->mode_config.num_crtc); unsigned long flags = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270 | DRM_MODE_REFLECT_X | DRM_MODE_REFLECT_Y; unsigned int blend_caps = BIT(DRM_MODE_BLEND_PIXEL_NONE) | --- linux-5.8.0.orig/drivers/gpu/drm/aspeed/Kconfig +++ linux-5.8.0/drivers/gpu/drm/aspeed/Kconfig @@ -3,6 +3,7 @@ tristate "ASPEED BMC Display Controller" depends on DRM && OF depends on (COMPILE_TEST || ARCH_ASPEED) + depends on MMU select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER select DMA_CMA if HAVE_DMA_CONTIGUOUS --- linux-5.8.0.orig/drivers/gpu/drm/ast/ast_drv.c +++ linux-5.8.0/drivers/gpu/drm/ast/ast_drv.c @@ -43,9 +43,33 @@ MODULE_PARM_DESC(modeset, "Disable/Enable modesetting"); module_param_named(modeset, ast_modeset, int, 0400); -#define PCI_VENDOR_ASPEED 0x1a03 +/* + * DRM driver + */ + +DEFINE_DRM_GEM_FOPS(ast_fops); + +static struct drm_driver ast_driver = { + .driver_features = DRIVER_ATOMIC | + DRIVER_GEM | + DRIVER_MODESET, + + .fops = &ast_fops, + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, -static struct drm_driver driver; + DRM_GEM_VRAM_DRIVER +}; + +/* + * PCI driver + */ + +#define PCI_VENDOR_ASPEED 0x1a03 #define AST_VGA_DEVICE(id, info) { \ .class = PCI_BASE_CLASS_DISPLAY << 16, \ @@ -56,14 +80,13 @@ .subdevice = PCI_ANY_ID, \ .driver_data = (unsigned long) info } -static const struct pci_device_id pciidlist[] = { +static const struct pci_device_id ast_pciidlist[] = { AST_VGA_DEVICE(PCI_CHIP_AST2000, NULL), AST_VGA_DEVICE(PCI_CHIP_AST2100, NULL), - /* AST_VGA_DEVICE(PCI_CHIP_AST1180, NULL), - don't bind to 1180 for now */ {0, 0, 0}, }; -MODULE_DEVICE_TABLE(pci, pciidlist); +MODULE_DEVICE_TABLE(pci, ast_pciidlist); static void ast_kick_out_firmware_fb(struct pci_dev *pdev) { @@ -95,7 +118,7 @@ if (ret) return ret; - dev = drm_dev_alloc(&driver, &pdev->dev); + dev = drm_dev_alloc(&ast_driver, &pdev->dev); if (IS_ERR(dev)) { ret = PTR_ERR(dev); goto err_pci_disable_device; @@ -123,11 +146,9 @@ err_pci_disable_device: pci_disable_device(pdev); return ret; - } -static void -ast_pci_remove(struct pci_dev *pdev) +static void ast_pci_remove(struct pci_dev *pdev) { struct drm_device *dev = pci_get_drvdata(pdev); @@ -225,30 +246,12 @@ static struct pci_driver ast_pci_driver = { .name = DRIVER_NAME, - .id_table = pciidlist, + .id_table = ast_pciidlist, .probe = ast_pci_probe, .remove = ast_pci_remove, .driver.pm = &ast_pm_ops, }; -DEFINE_DRM_GEM_FOPS(ast_fops); - -static struct drm_driver driver = { - .driver_features = DRIVER_ATOMIC | - DRIVER_GEM | - DRIVER_MODESET, - - .fops = &ast_fops, - .name = DRIVER_NAME, - .desc = DRIVER_DESC, - .date = DRIVER_DATE, - .major = DRIVER_MAJOR, - .minor = DRIVER_MINOR, - .patchlevel = DRIVER_PATCHLEVEL, - - DRM_GEM_VRAM_DRIVER -}; - static int __init ast_init(void) { if (vgacon_text_force() && ast_modeset == -1) @@ -269,4 +272,3 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL and additional rights"); - --- linux-5.8.0.orig/drivers/gpu/drm/ast/ast_drv.h +++ linux-5.8.0/drivers/gpu/drm/ast/ast_drv.h @@ -52,7 +52,6 @@ #define PCI_CHIP_AST2000 0x2000 #define PCI_CHIP_AST2100 0x2010 -#define PCI_CHIP_AST1180 0x1180 enum ast_chip { @@ -64,7 +63,6 @@ AST2300, AST2400, AST2500, - AST1180, }; enum ast_tx_chip { --- linux-5.8.0.orig/drivers/gpu/drm/ast/ast_main.c +++ linux-5.8.0/drivers/gpu/drm/ast/ast_main.c @@ -142,50 +142,42 @@ ast_detect_config_mode(dev, &scu_rev); /* Identify chipset */ - if (dev->pdev->device == PCI_CHIP_AST1180) { - ast->chip = AST1100; - DRM_INFO("AST 1180 detected\n"); - } else { - if (dev->pdev->revision >= 0x40) { - ast->chip = AST2500; - DRM_INFO("AST 2500 detected\n"); - } else if (dev->pdev->revision >= 0x30) { - ast->chip = AST2400; - DRM_INFO("AST 2400 detected\n"); - } else if (dev->pdev->revision >= 0x20) { - ast->chip = AST2300; - DRM_INFO("AST 2300 detected\n"); - } else if (dev->pdev->revision >= 0x10) { - switch (scu_rev & 0x0300) { - case 0x0200: - ast->chip = AST1100; - DRM_INFO("AST 1100 detected\n"); - break; - case 0x0100: - ast->chip = AST2200; - DRM_INFO("AST 2200 detected\n"); - break; - case 0x0000: - ast->chip = AST2150; - DRM_INFO("AST 2150 detected\n"); - break; - default: - ast->chip = AST2100; - DRM_INFO("AST 2100 detected\n"); - break; - } - ast->vga2_clone = false; - } else { - ast->chip = AST2000; - DRM_INFO("AST 2000 detected\n"); + if (dev->pdev->revision >= 0x40) { + ast->chip = AST2500; + DRM_INFO("AST 2500 detected\n"); + } else if (dev->pdev->revision >= 0x30) { + ast->chip = AST2400; + DRM_INFO("AST 2400 detected\n"); + } else if (dev->pdev->revision >= 0x20) { + ast->chip = AST2300; + DRM_INFO("AST 2300 detected\n"); + } else if (dev->pdev->revision >= 0x10) { + switch (scu_rev & 0x0300) { + case 0x0200: + ast->chip = AST1100; + DRM_INFO("AST 1100 detected\n"); + break; + case 0x0100: + ast->chip = AST2200; + DRM_INFO("AST 2200 detected\n"); + break; + case 0x0000: + ast->chip = AST2150; + DRM_INFO("AST 2150 detected\n"); + break; + default: + ast->chip = AST2100; + DRM_INFO("AST 2100 detected\n"); + break; } + ast->vga2_clone = false; + } else { + ast->chip = AST2000; + DRM_INFO("AST 2000 detected\n"); } /* Check if we support wide screen */ switch (ast->chip) { - case AST1180: - ast->support_wide_screen = true; - break; case AST2000: ast->support_wide_screen = false; break; @@ -466,19 +458,17 @@ ast_detect_chip(dev, &need_post); + ret = ast_get_dram_info(dev); + if (ret) + goto out_free; + ast->vram_size = ast_get_vram_info(dev); + DRM_INFO("dram MCLK=%u Mhz type=%d bus_width=%d size=%08x\n", + ast->mclk, ast->dram_type, + ast->dram_bus_width, ast->vram_size); + if (need_post) ast_post_gpu(dev); - if (ast->chip != AST1180) { - ret = ast_get_dram_info(dev); - if (ret) - goto out_free; - ast->vram_size = ast_get_vram_info(dev); - DRM_INFO("dram MCLK=%u Mhz type=%d bus_width=%d size=%08x\n", - ast->mclk, ast->dram_type, - ast->dram_bus_width, ast->vram_size); - } - ret = ast_mm_init(ast); if (ret) goto out_free; @@ -496,8 +486,7 @@ ast->chip == AST2200 || ast->chip == AST2300 || ast->chip == AST2400 || - ast->chip == AST2500 || - ast->chip == AST1180) { + ast->chip == AST2500) { dev->mode_config.max_width = 1920; dev->mode_config.max_height = 2048; } else { --- linux-5.8.0.orig/drivers/gpu/drm/ast/ast_mode.c +++ linux-5.8.0/drivers/gpu/drm/ast/ast_mode.c @@ -769,9 +769,6 @@ { struct ast_private *ast = crtc->dev->dev_private; - if (ast->chip == AST1180) - return; - /* TODO: Maybe control display signal generation with * Sync Enable (bit CR17.7). */ @@ -793,16 +790,10 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *state) { - struct ast_private *ast = crtc->dev->dev_private; struct ast_crtc_state *ast_state; const struct drm_format_info *format; bool succ; - if (ast->chip == AST1180) { - DRM_ERROR("AST 1180 modesetting not supported\n"); - return -EINVAL; - } - if (!state->enable) return 0; /* no mode checks if CRTC is being disabled */ @@ -1044,7 +1035,7 @@ if ((ast->chip == AST2100) || (ast->chip == AST2200) || (ast->chip == AST2300) || (ast->chip == AST2400) || - (ast->chip == AST2500) || (ast->chip == AST1180)) { + (ast->chip == AST2500)) { if ((mode->hdisplay == 1920) && (mode->vdisplay == 1080)) return MODE_OK; --- linux-5.8.0.orig/drivers/gpu/drm/ast/ast_post.c +++ linux-5.8.0/drivers/gpu/drm/ast/ast_post.c @@ -58,13 +58,9 @@ struct ast_private *ast = dev->dev_private; u8 ch; - if (ast->chip == AST1180) { - /* TODO 1180 */ - } else { - ch = ast_io_read8(ast, AST_IO_VGA_ENABLE_PORT); - return !!(ch & 0x01); - } - return false; + ch = ast_io_read8(ast, AST_IO_VGA_ENABLE_PORT); + + return !!(ch & 0x01); } static const u8 extreginfo[] = { 0x0f, 0x04, 0x1c, 0xff }; --- linux-5.8.0.orig/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +++ linux-5.8.0/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c @@ -411,10 +411,8 @@ } state = kzalloc(sizeof(*state), GFP_KERNEL); - if (state) { - crtc->state = &state->base; - crtc->state->crtc = crtc; - } + if (state) + __drm_atomic_helper_crtc_reset(crtc, &state->base); } static struct drm_crtc_state * @@ -528,7 +526,6 @@ } drm_crtc_helper_add(&crtc->base, &lcdc_crtc_helper_funcs); - drm_crtc_vblank_reset(&crtc->base); drm_mode_crtc_set_gamma_size(&crtc->base, ATMEL_HLCDC_CLUT_SIZE); drm_crtc_enable_color_mgmt(&crtc->base, 0, false, --- linux-5.8.0.orig/drivers/gpu/drm/bridge/adv7511/Makefile +++ linux-5.8.0/drivers/gpu/drm/bridge/adv7511/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only -adv7511-y := adv7511_drv.o adv7533.o -adv7511-$(CONFIG_DRM_I2C_ADV7511_AUDIO) += adv7511_audio.o -adv7511-$(CONFIG_DRM_I2C_ADV7511_CEC) += adv7511_cec.o -obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511.o +adv7511_drm-y := adv7511_drv.o adv7533.o +adv7511_drm-$(CONFIG_DRM_I2C_ADV7511_AUDIO) += adv7511_audio.o +adv7511_drm-$(CONFIG_DRM_I2C_ADV7511_CEC) += adv7511_cec.o +obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511_drm.o --- linux-5.8.0.orig/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c +++ linux-5.8.0/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c @@ -302,8 +302,12 @@ const struct i2c_device_id *id) { struct device *dev = &stdp4028_i2c->dev; + int ret; - ge_b850v3_lvds_init(dev); + ret = ge_b850v3_lvds_init(dev); + + if (ret) + return ret; ge_b850v3_lvds_ptr->stdp4028_i2c = stdp4028_i2c; i2c_set_clientdata(stdp4028_i2c, ge_b850v3_lvds_ptr); @@ -361,8 +365,12 @@ const struct i2c_device_id *id) { struct device *dev = &stdp2690_i2c->dev; + int ret; + + ret = ge_b850v3_lvds_init(dev); - ge_b850v3_lvds_init(dev); + if (ret) + return ret; ge_b850v3_lvds_ptr->stdp2690_i2c = stdp2690_i2c; i2c_set_clientdata(stdp2690_i2c, ge_b850v3_lvds_ptr); --- linux-5.8.0.orig/drivers/gpu/drm/bridge/sii902x.c +++ linux-5.8.0/drivers/gpu/drm/bridge/sii902x.c @@ -953,41 +953,13 @@ | DRM_BUS_FLAG_DE_HIGH, }; -static int sii902x_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int sii902x_init(struct sii902x *sii902x) { - struct device *dev = &client->dev; + struct device *dev = &sii902x->i2c->dev; unsigned int status = 0; - struct sii902x *sii902x; u8 chipid[4]; int ret; - ret = i2c_check_functionality(client->adapter, - I2C_FUNC_SMBUS_BYTE_DATA); - if (!ret) { - dev_err(dev, "I2C adapter not suitable\n"); - return -EIO; - } - - sii902x = devm_kzalloc(dev, sizeof(*sii902x), GFP_KERNEL); - if (!sii902x) - return -ENOMEM; - - sii902x->i2c = client; - sii902x->regmap = devm_regmap_init_i2c(client, &sii902x_regmap_config); - if (IS_ERR(sii902x->regmap)) - return PTR_ERR(sii902x->regmap); - - sii902x->reset_gpio = devm_gpiod_get_optional(dev, "reset", - GPIOD_OUT_LOW); - if (IS_ERR(sii902x->reset_gpio)) { - dev_err(dev, "Failed to retrieve/request reset gpio: %ld\n", - PTR_ERR(sii902x->reset_gpio)); - return PTR_ERR(sii902x->reset_gpio); - } - - mutex_init(&sii902x->mutex); - sii902x_reset(sii902x); ret = regmap_write(sii902x->regmap, SII902X_REG_TPI_RQB, 0x0); @@ -1011,11 +983,11 @@ regmap_read(sii902x->regmap, SII902X_INT_STATUS, &status); regmap_write(sii902x->regmap, SII902X_INT_STATUS, status); - if (client->irq > 0) { + if (sii902x->i2c->irq > 0) { regmap_write(sii902x->regmap, SII902X_INT_ENABLE, SII902X_HOTPLUG_EVENT); - ret = devm_request_threaded_irq(dev, client->irq, NULL, + ret = devm_request_threaded_irq(dev, sii902x->i2c->irq, NULL, sii902x_interrupt, IRQF_ONESHOT, dev_name(dev), sii902x); @@ -1030,9 +1002,9 @@ sii902x_audio_codec_init(sii902x, dev); - i2c_set_clientdata(client, sii902x); + i2c_set_clientdata(sii902x->i2c, sii902x); - sii902x->i2cmux = i2c_mux_alloc(client->adapter, dev, + sii902x->i2cmux = i2c_mux_alloc(sii902x->i2c->adapter, dev, 1, 0, I2C_MUX_GATE, sii902x_i2c_bypass_select, sii902x_i2c_bypass_deselect); @@ -1043,6 +1015,43 @@ return i2c_mux_add_adapter(sii902x->i2cmux, 0, 0, 0); } +static int sii902x_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct device *dev = &client->dev; + struct sii902x *sii902x; + int ret; + + ret = i2c_check_functionality(client->adapter, + I2C_FUNC_SMBUS_BYTE_DATA); + if (!ret) { + dev_err(dev, "I2C adapter not suitable\n"); + return -EIO; + } + + sii902x = devm_kzalloc(dev, sizeof(*sii902x), GFP_KERNEL); + if (!sii902x) + return -ENOMEM; + + sii902x->i2c = client; + sii902x->regmap = devm_regmap_init_i2c(client, &sii902x_regmap_config); + if (IS_ERR(sii902x->regmap)) + return PTR_ERR(sii902x->regmap); + + sii902x->reset_gpio = devm_gpiod_get_optional(dev, "reset", + GPIOD_OUT_LOW); + if (IS_ERR(sii902x->reset_gpio)) { + dev_err(dev, "Failed to retrieve/request reset gpio: %ld\n", + PTR_ERR(sii902x->reset_gpio)); + return PTR_ERR(sii902x->reset_gpio); + } + + mutex_init(&sii902x->mutex); + + ret = sii902x_init(sii902x); + return ret; +} + static int sii902x_remove(struct i2c_client *client) { --- linux-5.8.0.orig/drivers/gpu/drm/bridge/sil-sii8620.c +++ linux-5.8.0/drivers/gpu/drm/bridge/sil-sii8620.c @@ -178,7 +178,7 @@ static u8 sii8620_readb(struct sii8620 *ctx, u16 addr) { - u8 ret; + u8 ret = 0; sii8620_read_buf(ctx, addr, &ret, 1); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ linux-5.8.0/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2319,12 +2319,6 @@ connector); enum drm_connector_status result; - mutex_lock(&hdmi->mutex); - hdmi->force = DRM_FORCE_UNSPECIFIED; - dw_hdmi_update_power(hdmi); - dw_hdmi_update_phy_mask(hdmi); - mutex_unlock(&hdmi->mutex); - result = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data); mutex_lock(&hdmi->mutex); --- linux-5.8.0.orig/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ linux-5.8.0/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -366,7 +366,6 @@ if (lpm) val |= CMD_MODE_ALL_LP; - dsi_write(dsi, DSI_LPCLK_CTRL, lpm ? 0 : PHY_TXREQUESTCLKHS); dsi_write(dsi, DSI_CMD_MODE_CFG, val); } @@ -542,16 +541,22 @@ static void dw_mipi_dsi_set_mode(struct dw_mipi_dsi *dsi, unsigned long mode_flags) { + u32 val; + dsi_write(dsi, DSI_PWR_UP, RESET); if (mode_flags & MIPI_DSI_MODE_VIDEO) { dsi_write(dsi, DSI_MODE_CFG, ENABLE_VIDEO_MODE); dw_mipi_dsi_video_mode_config(dsi); - dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS); } else { dsi_write(dsi, DSI_MODE_CFG, ENABLE_CMD_MODE); } + val = PHY_TXREQUESTCLKHS; + if (dsi->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) + val |= AUTO_CLKLANE_CTRL; + dsi_write(dsi, DSI_LPCLK_CTRL, val); + dsi_write(dsi, DSI_PWR_UP, POWERUP); } --- linux-5.8.0.orig/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ linux-5.8.0/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -475,7 +475,7 @@ 1000 * pdata->dp_lanes * DP_CLK_FUDGE_DEN); for (i = 1; i < ARRAY_SIZE(ti_sn_bridge_dp_rate_lut) - 1; i++) - if (ti_sn_bridge_dp_rate_lut[i] > dp_rate_mhz) + if (ti_sn_bridge_dp_rate_lut[i] >= dp_rate_mhz) break; return i; @@ -827,6 +827,12 @@ buf[i]); } + /* Clear old status bits before start so we don't get confused */ + regmap_write(pdata->regmap, SN_AUX_CMD_STATUS_REG, + AUX_IRQ_STATUS_NAT_I2C_FAIL | + AUX_IRQ_STATUS_AUX_RPLY_TOUT | + AUX_IRQ_STATUS_AUX_SHORT); + regmap_write(pdata->regmap, SN_AUX_CMD_REG, request_val | AUX_CMD_SEND); ret = regmap_read_poll_timeout(pdata->regmap, SN_AUX_CMD_REG, val, --- linux-5.8.0.orig/drivers/gpu/drm/bridge/ti-tpd12s015.c +++ linux-5.8.0/drivers/gpu/drm/bridge/ti-tpd12s015.c @@ -160,7 +160,7 @@ /* Register the IRQ if the HPD GPIO is IRQ-capable. */ tpd->hpd_irq = gpiod_to_irq(tpd->hpd_gpio); - if (tpd->hpd_irq) { + if (tpd->hpd_irq >= 0) { ret = devm_request_threaded_irq(&pdev->dev, tpd->hpd_irq, NULL, tpd12s015_hpd_isr, IRQF_TRIGGER_RISING | --- linux-5.8.0.orig/drivers/gpu/drm/drm_atomic_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_atomic_helper.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -2989,7 +2990,7 @@ ret = handle_conflicting_encoders(state, true); if (ret) - return ret; + goto fail; ret = drm_atomic_commit(state); @@ -3105,7 +3106,7 @@ if (ret) DRM_ERROR("Disabling all crtc's during unload failed with %i\n", ret); - DRM_MODESET_LOCK_ALL_END(ctx, ret); + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); } EXPORT_SYMBOL(drm_atomic_helper_shutdown); @@ -3245,7 +3246,7 @@ } unlock: - DRM_MODESET_LOCK_ALL_END(ctx, err); + DRM_MODESET_LOCK_ALL_END(dev, ctx, err); if (err) return ERR_PTR(err); @@ -3326,7 +3327,7 @@ err = drm_atomic_helper_commit_duplicated_state(state, &ctx); - DRM_MODESET_LOCK_ALL_END(ctx, err); + DRM_MODESET_LOCK_ALL_END(dev, ctx, err); drm_atomic_state_put(state); return err; --- linux-5.8.0.orig/drivers/gpu/drm/drm_atomic_state_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_atomic_state_helper.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -93,6 +94,9 @@ if (crtc_state) __drm_atomic_helper_crtc_state_reset(crtc_state, crtc); + if (drm_dev_has_vblank(crtc->dev)) + drm_crtc_vblank_reset(crtc); + crtc->state = crtc_state; } EXPORT_SYMBOL(__drm_atomic_helper_crtc_reset); --- linux-5.8.0.orig/drivers/gpu/drm/drm_bridge_connector.c +++ linux-5.8.0/drivers/gpu/drm/drm_bridge_connector.c @@ -187,6 +187,7 @@ case DRM_MODE_CONNECTOR_DPI: case DRM_MODE_CONNECTOR_LVDS: case DRM_MODE_CONNECTOR_DSI: + case DRM_MODE_CONNECTOR_eDP: status = connector_status_connected; break; default: --- linux-5.8.0.orig/drivers/gpu/drm/drm_color_mgmt.c +++ linux-5.8.0/drivers/gpu/drm/drm_color_mgmt.c @@ -294,7 +294,7 @@ crtc->gamma_size, &ctx); out: - DRM_MODESET_LOCK_ALL_END(ctx, ret); + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-5.8.0/drivers/gpu/drm/drm_crtc.c @@ -561,7 +561,6 @@ if (crtc_req->mode_valid && !drm_lease_held(file_priv, plane->base.id)) return -EACCES; - mutex_lock(&crtc->dev->mode_config.mutex); DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE, ret); @@ -728,8 +727,7 @@ fb = NULL; mode = NULL; - DRM_MODESET_LOCK_ALL_END(ctx, ret); - mutex_unlock(&crtc->dev->mode_config.mutex); + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/drm_debugfs.c +++ linux-5.8.0/drivers/gpu/drm/drm_debugfs.c @@ -311,13 +311,13 @@ buf[len] = '\0'; - if (!strcmp(buf, "on")) + if (sysfs_streq(buf, "on")) connector->force = DRM_FORCE_ON; - else if (!strcmp(buf, "digital")) + else if (sysfs_streq(buf, "digital")) connector->force = DRM_FORCE_ON_DIGITAL; - else if (!strcmp(buf, "off")) + else if (sysfs_streq(buf, "off")) connector->force = DRM_FORCE_OFF; - else if (!strcmp(buf, "unspecified")) + else if (sysfs_streq(buf, "unspecified")) connector->force = DRM_FORCE_UNSPECIFIED; else return -EINVAL; --- linux-5.8.0.orig/drivers/gpu/drm/drm_debugfs_crc.c +++ linux-5.8.0/drivers/gpu/drm/drm_debugfs_crc.c @@ -144,8 +144,10 @@ source[len - 1] = '\0'; ret = crtc->funcs->verify_crc_source(crtc, source, &values_cnt); - if (ret) + if (ret) { + kfree(source); return ret; + } spin_lock_irq(&crc->lock); --- linux-5.8.0.orig/drivers/gpu/drm/drm_dp_aux_dev.c +++ linux-5.8.0/drivers/gpu/drm/drm_dp_aux_dev.c @@ -63,7 +63,7 @@ mutex_lock(&aux_idr_mutex); aux_dev = idr_find(&aux_idr, index); - if (!kref_get_unless_zero(&aux_dev->refcount)) + if (aux_dev && !kref_get_unless_zero(&aux_dev->refcount)) aux_dev = NULL; mutex_unlock(&aux_idr_mutex); --- linux-5.8.0.orig/drivers/gpu/drm/drm_dp_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_dp_helper.c @@ -1301,6 +1301,10 @@ * only supports DPCD backlight controls */ { MFG(0x4c, 0x83), PROD_ID(0x41, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, + /* HP Spectre x360 Convertible 13t-aw100 */ + { MFG(0x4c, 0x83), PROD_ID(0x42, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, + /* HP CML 2020 system */ + { MFG(0x4c, 0x83), PROD_ID(0x45, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, /* * Some Dell CML 2020 systems have panels support both AUX and PWM * backlight control, and some only support AUX backlight control. All @@ -1311,11 +1315,20 @@ * controls anyway...). Until we have a better way of detecting these, * force DPCD backlight mode on all of them. */ + { MFG(0x06, 0xaf), PROD_ID(0x8c, 0xcd), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, { MFG(0x06, 0xaf), PROD_ID(0x9b, 0x32), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, { MFG(0x06, 0xaf), PROD_ID(0xeb, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, + { MFG(0x30, 0xe4), PROD_ID(0x61, 0x06), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, { MFG(0x4d, 0x10), PROD_ID(0xc7, 0x14), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, { MFG(0x4d, 0x10), PROD_ID(0xe6, 0x14), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, { MFG(0x4c, 0x83), PROD_ID(0x47, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, + { MFG(0x4c, 0x83), PROD_ID(0x4f, 0x41), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, + /* + * Some HP ZBook Studio G7 systems have panels support and relies on + * PSR being enabled. + */ + { MFG(0x0d, 0xae), PROD_ID(0x19, 0x15), BIT(DP_QUIRK_FORCE_PSR_CHIP_DEFAULT) }, + { MFG(0x09, 0xe5), PROD_ID(0xde, 0x08), BIT(DP_QUIRK_FORCE_DPCD_BACKLIGHT) }, }; #undef MFG --- linux-5.8.0.orig/drivers/gpu/drm/drm_dp_mst_topology.c +++ linux-5.8.0/drivers/gpu/drm/drm_dp_mst_topology.c @@ -88,8 +88,8 @@ static bool drm_dp_validate_guid(struct drm_dp_mst_topology_mgr *mgr, u8 *guid); -static int drm_dp_mst_register_i2c_bus(struct drm_dp_aux *aux); -static void drm_dp_mst_unregister_i2c_bus(struct drm_dp_aux *aux); +static int drm_dp_mst_register_i2c_bus(struct drm_dp_mst_port *port); +static void drm_dp_mst_unregister_i2c_bus(struct drm_dp_mst_port *port); static void drm_dp_mst_kick_tx(struct drm_dp_mst_topology_mgr *mgr); #define DBG_PREFIX "[dp_mst]" @@ -1197,7 +1197,8 @@ /* remove from q */ if (txmsg->state == DRM_DP_SIDEBAND_TX_QUEUED || - txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND) + txmsg->state == DRM_DP_SIDEBAND_TX_START_SEND || + txmsg->state == DRM_DP_SIDEBAND_TX_SENT) list_del(&txmsg->next); } out: @@ -1966,7 +1967,7 @@ } /* remove i2c over sideband */ - drm_dp_mst_unregister_i2c_bus(&port->aux); + drm_dp_mst_unregister_i2c_bus(port); } else { mutex_lock(&mgr->lock); drm_dp_mst_topology_put_mstb(port->mstb); @@ -1981,7 +1982,7 @@ if (port->pdt != DP_PEER_DEVICE_NONE) { if (drm_dp_mst_is_end_device(port->pdt, port->mcs)) { /* add i2c over sideband */ - ret = drm_dp_mst_register_i2c_bus(&port->aux); + ret = drm_dp_mst_register_i2c_bus(port); } else { lct = drm_dp_calculate_rad(port, rad); mstb = drm_dp_add_mst_branch_device(lct, rad); @@ -2158,7 +2159,8 @@ } if (port->pdt != DP_PEER_DEVICE_NONE && - drm_dp_mst_is_end_device(port->pdt, port->mcs)) { + drm_dp_mst_is_end_device(port->pdt, port->mcs) && + port->port_num >= DP_MST_LOGICAL_PORT_0) { port->cached_edid = drm_get_edid(port->connector, &port->aux.ddc); drm_connector_set_tile_property(port->connector); @@ -3431,14 +3433,26 @@ return 0; } -static int drm_dp_get_vc_payload_bw(u8 dp_link_bw, u8 dp_link_count) +/** + * drm_dp_get_vc_payload_bw - get the VC payload BW for an MST link + * @link_rate: link rate in 10kbits/s units + * @link_lane_count: lane count + * + * Calculate the total bandwidth of a MultiStream Transport link. The returned + * value is in units of PBNs/(timeslots/1 MTP). This value can be used to + * convert the number of PBNs required for a given stream to the number of + * timeslots this stream requires in each MTP. + */ +int drm_dp_get_vc_payload_bw(int link_rate, int link_lane_count) { - if (dp_link_bw == 0 || dp_link_count == 0) - DRM_DEBUG_KMS("invalid link bandwidth in DPCD: %x (link count: %d)\n", - dp_link_bw, dp_link_count); + if (link_rate == 0 || link_lane_count == 0) + DRM_DEBUG_KMS("invalid link rate/lane count: (%d / %d)\n", + link_rate, link_lane_count); - return dp_link_bw * dp_link_count / 2; + /* See DP v2.0 2.6.4.2, VCPayload_Bandwidth_for_OneTimeSlotPer_MTP_Allocation */ + return link_rate * link_lane_count / 54000; } +EXPORT_SYMBOL(drm_dp_get_vc_payload_bw); /** * drm_dp_mst_topology_mgr_set_mst() - Set the MST state for a topology manager @@ -3472,7 +3486,7 @@ goto out_unlock; } - mgr->pbn_div = drm_dp_get_vc_payload_bw(mgr->dpcd[1], + mgr->pbn_div = drm_dp_get_vc_payload_bw(drm_dp_bw_code_to_link_rate(mgr->dpcd[1]), mgr->dpcd[2] & DP_MAX_LANE_COUNT_MASK); if (mgr->pbn_div == 0) { ret = -EINVAL; @@ -3991,6 +4005,7 @@ switch (port->pdt) { case DP_PEER_DEVICE_NONE: + break; case DP_PEER_DEVICE_MST_BRANCHING: if (!port->mcs) ret = connector_status_connected; @@ -4261,11 +4276,11 @@ { int ret; - port = drm_dp_mst_topology_get_port_validated(mgr, port); - if (!port) + if (slots < 0) return false; - if (slots < 0) + port = drm_dp_mst_topology_get_port_validated(mgr, port); + if (!port) return false; if (port->vcpi.vcpi > 0) { @@ -4281,6 +4296,7 @@ if (ret) { DRM_DEBUG_KMS("failed to init vcpi slots=%d max=63 ret=%d\n", DIV_ROUND_UP(pbn, mgr->pbn_div), ret); + drm_dp_mst_topology_put_port(port); goto out; } DRM_DEBUG_KMS("initing vcpi for pbn=%d slots=%d\n", @@ -4641,12 +4657,13 @@ static inline void drm_dp_delayed_destroy_port(struct drm_dp_mst_port *port) { + drm_dp_port_set_pdt(port, DP_PEER_DEVICE_NONE, port->mcs); + if (port->connector) { drm_connector_unregister(port->connector); drm_connector_put(port->connector); } - drm_dp_port_set_pdt(port, DP_PEER_DEVICE_NONE, port->mcs); drm_dp_mst_put_port_malloc(port); } @@ -4990,8 +5007,8 @@ crtc = conn_state->crtc; - if (WARN_ON(!crtc)) - return -EINVAL; + if (!crtc) + continue; if (!drm_dp_mst_dsc_aux_for_port(pos->port)) continue; @@ -5346,22 +5363,26 @@ /** * drm_dp_mst_register_i2c_bus() - register an I2C adapter for I2C-over-AUX - * @aux: DisplayPort AUX channel + * @port: The port to add the I2C bus on * * Returns 0 on success or a negative error code on failure. */ -static int drm_dp_mst_register_i2c_bus(struct drm_dp_aux *aux) +static int drm_dp_mst_register_i2c_bus(struct drm_dp_mst_port *port) { + struct drm_dp_aux *aux = &port->aux; + struct device *parent_dev = port->mgr->dev->dev; + aux->ddc.algo = &drm_dp_mst_i2c_algo; aux->ddc.algo_data = aux; aux->ddc.retries = 3; aux->ddc.class = I2C_CLASS_DDC; aux->ddc.owner = THIS_MODULE; - aux->ddc.dev.parent = aux->dev; - aux->ddc.dev.of_node = aux->dev->of_node; + /* FIXME: set the kdev of the port's connector as parent */ + aux->ddc.dev.parent = parent_dev; + aux->ddc.dev.of_node = parent_dev->of_node; - strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(aux->dev), + strlcpy(aux->ddc.name, aux->name ? aux->name : dev_name(parent_dev), sizeof(aux->ddc.name)); return i2c_add_adapter(&aux->ddc); @@ -5369,11 +5390,11 @@ /** * drm_dp_mst_unregister_i2c_bus() - unregister an I2C-over-AUX adapter - * @aux: DisplayPort AUX channel + * @port: The port to remove the I2C bus from */ -static void drm_dp_mst_unregister_i2c_bus(struct drm_dp_aux *aux) +static void drm_dp_mst_unregister_i2c_bus(struct drm_dp_mst_port *port) { - i2c_del_adapter(&aux->ddc); + i2c_del_adapter(&port->aux.ddc); } /** --- linux-5.8.0.orig/drivers/gpu/drm/drm_edid.c +++ linux-5.8.0/drivers/gpu/drm/drm_edid.c @@ -3059,6 +3059,8 @@ height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 4) + 1) * 2; switch (cvt->code[1] & 0x0c) { + /* default - because compiler doesn't see that we've enumerated all cases */ + default: case 0x00: width = height * 4 / 3; break; --- linux-5.8.0.orig/drivers/gpu/drm/drm_fb_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_fb_helper.c @@ -923,11 +923,15 @@ drm_modeset_lock_all(fb_helper->dev); drm_client_for_each_modeset(modeset, &fb_helper->client) { crtc = modeset->crtc; - if (!crtc->funcs->gamma_set || !crtc->gamma_size) - return -EINVAL; + if (!crtc->funcs->gamma_set || !crtc->gamma_size) { + ret = -EINVAL; + goto out; + } - if (cmap->start + cmap->len > crtc->gamma_size) - return -EINVAL; + if (cmap->start + cmap->len > crtc->gamma_size) { + ret = -EINVAL; + goto out; + } r = crtc->gamma_store; g = r + crtc->gamma_size; @@ -940,8 +944,9 @@ ret = crtc->funcs->gamma_set(crtc, r, g, b, crtc->gamma_size, NULL); if (ret) - return ret; + goto out; } +out: drm_modeset_unlock_all(fb_helper->dev); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/drm_gem.c +++ linux-5.8.0/drivers/gpu/drm/drm_gem.c @@ -709,6 +709,8 @@ if (!objs) return -ENOMEM; + *objs_out = objs; + handles = kvmalloc_array(count, sizeof(u32), GFP_KERNEL); if (!handles) { ret = -ENOMEM; @@ -722,8 +724,6 @@ } ret = objects_lookup(filp, handles, count, objs); - *objs_out = objs; - out: kvfree(handles); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/drm_gem_shmem_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -317,13 +317,14 @@ if (--shmem->vmap_use_count > 0) return; - if (obj->import_attach) + if (obj->import_attach) { dma_buf_vunmap(obj->import_attach->dmabuf, shmem->vaddr); - else + } else { vunmap(shmem->vaddr); + drm_gem_shmem_put_pages(shmem); + } shmem->vaddr = NULL; - drm_gem_shmem_put_pages(shmem); } /* @@ -479,14 +480,28 @@ struct drm_gem_object *obj = vma->vm_private_data; struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); loff_t num_pages = obj->size >> PAGE_SHIFT; + vm_fault_t ret; struct page *page; + pgoff_t page_offset; - if (vmf->pgoff >= num_pages || WARN_ON_ONCE(!shmem->pages)) - return VM_FAULT_SIGBUS; + /* We don't use vmf->pgoff since that has the fake offset */ + page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT; - page = shmem->pages[vmf->pgoff]; + mutex_lock(&shmem->pages_lock); + + if (page_offset >= num_pages || + WARN_ON_ONCE(!shmem->pages) || + shmem->madv < 0) { + ret = VM_FAULT_SIGBUS; + } else { + page = shmem->pages[page_offset]; - return vmf_insert_page(vma, vmf->address, page); + ret = vmf_insert_page(vma, vmf->address, page); + } + + mutex_unlock(&shmem->pages_lock); + + return ret; } static void drm_gem_shmem_vm_open(struct vm_area_struct *vma) @@ -533,9 +548,6 @@ struct drm_gem_shmem_object *shmem; int ret; - /* Remove the fake offset */ - vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node); - shmem = to_drm_gem_shmem_obj(obj); ret = drm_gem_shmem_get_pages(shmem); --- linux-5.8.0.orig/drivers/gpu/drm/drm_gem_vram_helper.c +++ linux-5.8.0/drivers/gpu/drm/drm_gem_vram_helper.c @@ -175,6 +175,10 @@ } } +/* + * Note that on error, drm_gem_vram_init will free the buffer object. + */ + static int drm_gem_vram_init(struct drm_device *dev, struct drm_gem_vram_object *gbo, size_t size, unsigned long pg_align) @@ -184,15 +188,19 @@ int ret; size_t acc_size; - if (WARN_ONCE(!vmm, "VRAM MM not initialized")) + if (WARN_ONCE(!vmm, "VRAM MM not initialized")) { + kfree(gbo); return -EINVAL; + } bdev = &vmm->bdev; gbo->bo.base.funcs = &drm_gem_vram_object_funcs; ret = drm_gem_object_init(dev, &gbo->bo.base, size); - if (ret) + if (ret) { + kfree(gbo); return ret; + } acc_size = ttm_bo_dma_acc_size(bdev, size, sizeof(*gbo)); @@ -203,13 +211,13 @@ &gbo->placement, pg_align, false, acc_size, NULL, NULL, ttm_buffer_object_destroy); if (ret) - goto err_drm_gem_object_release; + /* + * A failing ttm_bo_init will call ttm_buffer_object_destroy + * to release gbo->bo.base and kfree gbo. + */ + return ret; return 0; - -err_drm_gem_object_release: - drm_gem_object_release(&gbo->bo.base); - return ret; } /** @@ -243,13 +251,9 @@ ret = drm_gem_vram_init(dev, gbo, size, pg_align); if (ret < 0) - goto err_kfree; + return ERR_PTR(ret); return gbo; - -err_kfree: - kfree(gbo); - return ERR_PTR(ret); } EXPORT_SYMBOL(drm_gem_vram_create); --- linux-5.8.0.orig/drivers/gpu/drm/drm_ioc32.c +++ linux-5.8.0/drivers/gpu/drm/drm_ioc32.c @@ -99,6 +99,8 @@ if (copy_from_user(&v32, (void __user *)arg, sizeof(v32))) return -EFAULT; + memset(&v, 0, sizeof(v)); + v = (struct drm_version) { .name_len = v32.name_len, .name = compat_ptr(v32.name), @@ -137,6 +139,9 @@ if (copy_from_user(&uq32, (void __user *)arg, sizeof(uq32))) return -EFAULT; + + memset(&uq, 0, sizeof(uq)); + uq = (struct drm_unique){ .unique_len = uq32.unique_len, .unique = compat_ptr(uq32.unique), @@ -265,6 +270,8 @@ if (copy_from_user(&c32, argp, sizeof(c32))) return -EFAULT; + memset(&client, 0, sizeof(client)); + client.idx = c32.idx; err = drm_ioctl_kernel(file, drm_getclient, &client, 0); @@ -850,6 +857,8 @@ if (copy_from_user(&req32, argp, sizeof(req32))) return -EFAULT; + memset(&req, 0, sizeof(req)); + req.request.type = req32.request.type; req.request.sequence = req32.request.sequence; req.request.signal = req32.request.signal; @@ -887,6 +896,8 @@ struct drm_mode_fb_cmd2 req64; int err; + memset(&req64, 0, sizeof(req64)); + if (copy_from_user(&req64, argp, offsetof(drm_mode_fb_cmd232_t, modifier))) return -EFAULT; --- linux-5.8.0.orig/drivers/gpu/drm/drm_mipi_dsi.c +++ linux-5.8.0/drivers/gpu/drm/drm_mipi_dsi.c @@ -1082,11 +1082,11 @@ */ int mipi_dsi_dcs_set_tear_scanline(struct mipi_dsi_device *dsi, u16 scanline) { - u8 payload[3] = { MIPI_DCS_SET_TEAR_SCANLINE, scanline >> 8, - scanline & 0xff }; + u8 payload[2] = { scanline >> 8, scanline & 0xff }; ssize_t err; - err = mipi_dsi_generic_write(dsi, payload, sizeof(payload)); + err = mipi_dsi_dcs_write(dsi, MIPI_DCS_SET_TEAR_SCANLINE, payload, + sizeof(payload)); if (err < 0) return err; --- linux-5.8.0.orig/drivers/gpu/drm/drm_mm.c +++ linux-5.8.0/drivers/gpu/drm/drm_mm.c @@ -407,7 +407,7 @@ left_node = rb_entry(left_rb_node, struct drm_mm_node, rb_hole_addr); if ((left_node->subtree_max_hole < size || - entry->size == entry->subtree_max_hole) && + HOLE_SIZE(entry) == entry->subtree_max_hole) && parent_rb_node && parent_rb_node->rb_left != rb_node) return rb_hole_addr_to_node(parent_rb_node); } @@ -447,7 +447,7 @@ right_node = rb_entry(right_rb_node, struct drm_mm_node, rb_hole_addr); if ((right_node->subtree_max_hole < size || - entry->size == entry->subtree_max_hole) && + HOLE_SIZE(entry) == entry->subtree_max_hole) && parent_rb_node && parent_rb_node->rb_right != rb_node) return rb_hole_addr_to_node(parent_rb_node); } --- linux-5.8.0.orig/drivers/gpu/drm/drm_mode_object.c +++ linux-5.8.0/drivers/gpu/drm/drm_mode_object.c @@ -428,7 +428,7 @@ out_unref: drm_mode_object_put(obj); out: - DRM_MODESET_LOCK_ALL_END(ctx, ret); + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); return ret; } @@ -470,7 +470,7 @@ break; } drm_property_change_valid_put(prop, ref); - DRM_MODESET_LOCK_ALL_END(ctx, ret); + DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/drm_modes.c +++ linux-5.8.0/drivers/gpu/drm/drm_modes.c @@ -764,7 +764,7 @@ else if (mode->htotal > 0 && mode->vtotal > 0) { unsigned int num, den; - num = mode->clock * 1000; + num = mode->clock; den = mode->htotal * mode->vtotal; if (mode->flags & DRM_MODE_FLAG_INTERLACE) @@ -774,7 +774,7 @@ if (mode->vscan > 1) den *= mode->vscan; - refresh = DIV_ROUND_CLOSEST(num, den); + refresh = DIV_ROUND_CLOSEST_ULL(mul_u32_u32(num, 1000), den); } return refresh; } --- linux-5.8.0.orig/drivers/gpu/drm/drm_panel_orientation_quirks.c +++ linux-5.8.0/drivers/gpu/drm/drm_panel_orientation_quirks.c @@ -121,6 +121,12 @@ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T101HA"), }, .driver_data = (void *)&lcd800x1280_rightside_up, + }, { /* Asus T103HAF */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T103HAF"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, }, { /* GPD MicroPC (generic strings, also match on bios date) */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"), --- linux-5.8.0.orig/drivers/gpu/drm/drm_plane.c +++ linux-5.8.0/drivers/gpu/drm/drm_plane.c @@ -791,7 +791,7 @@ crtc_x, crtc_y, crtc_w, crtc_h, src_x, src_y, src_w, src_h, &ctx); - DRM_MODESET_LOCK_ALL_END(ctx, ret); + DRM_MODESET_LOCK_ALL_END(plane->dev, ctx, ret); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/drm_syncobj.c +++ linux-5.8.0/drivers/gpu/drm/drm_syncobj.c @@ -388,19 +388,18 @@ return -ENOENT; *fence = drm_syncobj_fence_get(syncobj); - drm_syncobj_put(syncobj); if (*fence) { ret = dma_fence_chain_find_seqno(fence, point); if (!ret) - return 0; + goto out; dma_fence_put(*fence); } else { ret = -EINVAL; } if (!(flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT)) - return ret; + goto out; memset(&wait, 0, sizeof(wait)); wait.task = current; @@ -432,6 +431,9 @@ if (wait.node.next) drm_syncobj_remove_wait(syncobj, &wait); +out: + drm_syncobj_put(syncobj); + return ret; } EXPORT_SYMBOL(drm_syncobj_find_fence); --- linux-5.8.0.orig/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ linux-5.8.0/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -337,9 +337,16 @@ gpu->identity.model = gpu_read(gpu, VIVS_HI_CHIP_MODEL); gpu->identity.revision = gpu_read(gpu, VIVS_HI_CHIP_REV); - gpu->identity.product_id = gpu_read(gpu, VIVS_HI_CHIP_PRODUCT_ID); gpu->identity.customer_id = gpu_read(gpu, VIVS_HI_CHIP_CUSTOMER_ID); - gpu->identity.eco_id = gpu_read(gpu, VIVS_HI_CHIP_ECO_ID); + + /* + * Reading these two registers on GC600 rev 0x19 result in a + * unhandled fault: external abort on non-linefetch + */ + if (!etnaviv_is_model_rev(gpu, GC600, 0x19)) { + gpu->identity.product_id = gpu_read(gpu, VIVS_HI_CHIP_PRODUCT_ID); + gpu->identity.eco_id = gpu_read(gpu, VIVS_HI_CHIP_ECO_ID); + } /* * !!!! HACK ALERT !!!! @@ -722,7 +729,7 @@ ret = pm_runtime_get_sync(gpu->dev); if (ret < 0) { dev_err(gpu->dev, "Failed to enable GPU power domain\n"); - return ret; + goto pm_put; } etnaviv_hw_identify(gpu); @@ -819,6 +826,7 @@ fail: pm_runtime_mark_last_busy(gpu->dev); +pm_put: pm_runtime_put_autosuspend(gpu->dev); return ret; @@ -859,7 +867,7 @@ ret = pm_runtime_get_sync(gpu->dev); if (ret < 0) - return ret; + goto pm_put; dma_lo = gpu_read(gpu, VIVS_FE_DMA_LOW); dma_hi = gpu_read(gpu, VIVS_FE_DMA_HIGH); @@ -1003,6 +1011,7 @@ ret = 0; pm_runtime_mark_last_busy(gpu->dev); +pm_put: pm_runtime_put_autosuspend(gpu->dev); return ret; @@ -1016,7 +1025,7 @@ dev_err(gpu->dev, "recover hung GPU!\n"); if (pm_runtime_get_sync(gpu->dev) < 0) - return; + goto pm_put; mutex_lock(&gpu->lock); @@ -1035,6 +1044,7 @@ mutex_unlock(&gpu->lock); pm_runtime_mark_last_busy(gpu->dev); +pm_put: pm_runtime_put_autosuspend(gpu->dev); } @@ -1308,8 +1318,10 @@ if (!submit->runtime_resumed) { ret = pm_runtime_get_sync(gpu->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(gpu->dev); return NULL; + } submit->runtime_resumed = true; } @@ -1326,6 +1338,7 @@ ret = event_alloc(gpu, nr_events, event); if (ret) { DRM_ERROR("no free events\n"); + pm_runtime_put_noidle(gpu->dev); return NULL; } @@ -1496,7 +1509,7 @@ if (gpu->clk_bus) { ret = clk_prepare_enable(gpu->clk_bus); if (ret) - return ret; + goto disable_clk_reg; } if (gpu->clk_core) { @@ -1519,6 +1532,9 @@ disable_clk_bus: if (gpu->clk_bus) clk_disable_unprepare(gpu->clk_bus); +disable_clk_reg: + if (gpu->clk_reg) + clk_disable_unprepare(gpu->clk_reg); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/etnaviv/etnaviv_sched.c +++ linux-5.8.0/drivers/gpu/drm/etnaviv/etnaviv_sched.c @@ -89,12 +89,15 @@ u32 dma_addr; int change; + /* block scheduler */ + drm_sched_stop(&gpu->sched, sched_job); + /* * If the GPU managed to complete this jobs fence, the timout is * spurious. Bail out. */ if (dma_fence_is_signaled(submit->out_fence)) - return; + goto out_no_timeout; /* * If the GPU is still making forward progress on the front-end (which @@ -105,12 +108,9 @@ change = dma_addr - gpu->hangcheck_dma_addr; if (change < 0 || change > 16) { gpu->hangcheck_dma_addr = dma_addr; - return; + goto out_no_timeout; } - /* block scheduler */ - drm_sched_stop(&gpu->sched, sched_job); - if(sched_job) drm_sched_increase_karma(sched_job); @@ -120,6 +120,7 @@ drm_sched_resubmit_jobs(&gpu->sched); +out_no_timeout: /* restart scheduler after GPU is usable again */ drm_sched_start(&gpu->sched, true); } --- linux-5.8.0.orig/drivers/gpu/drm/exynos/Kconfig +++ linux-5.8.0/drivers/gpu/drm/exynos/Kconfig @@ -1,7 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-only config DRM_EXYNOS tristate "DRM Support for Samsung SoC Exynos Series" - depends on OF && DRM && (ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_MULTIPLATFORM || COMPILE_TEST) + depends on OF && DRM && COMMON_CLK + depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_MULTIPLATFORM || COMPILE_TEST depends on MMU select DRM_KMS_HELPER select VIDEOMODE_HELPERS --- linux-5.8.0.orig/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ linux-5.8.0/drivers/gpu/drm/exynos/exynos_drm_g2d.c @@ -395,8 +395,8 @@ return; out: - dma_unmap_sg(to_dma_dev(g2d->drm_dev), g2d_userptr->sgt->sgl, - g2d_userptr->sgt->nents, DMA_BIDIRECTIONAL); + dma_unmap_sgtable(to_dma_dev(g2d->drm_dev), g2d_userptr->sgt, + DMA_BIDIRECTIONAL, 0); pages = frame_vector_pages(g2d_userptr->vec); if (!IS_ERR(pages)) { @@ -511,10 +511,10 @@ g2d_userptr->sgt = sgt; - if (!dma_map_sg(to_dma_dev(g2d->drm_dev), sgt->sgl, sgt->nents, - DMA_BIDIRECTIONAL)) { + ret = dma_map_sgtable(to_dma_dev(g2d->drm_dev), sgt, + DMA_BIDIRECTIONAL, 0); + if (ret) { DRM_DEV_ERROR(g2d->dev, "failed to map sgt with dma region.\n"); - ret = -ENOMEM; goto err_sg_free_table; } --- linux-5.8.0.orig/drivers/gpu/drm/gma500/cdv_intel_dp.c +++ linux-5.8.0/drivers/gpu/drm/gma500/cdv_intel_dp.c @@ -2078,12 +2078,12 @@ intel_dp->dpcd, sizeof(intel_dp->dpcd)); cdv_intel_edp_panel_vdd_off(gma_encoder); - if (ret == 0) { + if (ret <= 0) { /* if this fails, presume the device is a ghost */ DRM_INFO("failed to retrieve link info, disabling eDP\n"); drm_encoder_cleanup(encoder); cdv_intel_dp_destroy(connector); - goto err_priv; + goto err_connector; } else { DRM_DEBUG_KMS("DPCD: Rev=%x LN_Rate=%x LN_CNT=%x LN_DOWNSP=%x\n", intel_dp->dpcd[0], intel_dp->dpcd[1], --- linux-5.8.0.orig/drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c +++ linux-5.8.0/drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c @@ -279,11 +279,8 @@ hdmi_dev = pci_get_drvdata(dev); i2c_dev = kzalloc(sizeof(struct hdmi_i2c_dev), GFP_KERNEL); - if (i2c_dev == NULL) { - DRM_ERROR("Can't allocate interface\n"); - ret = -ENOMEM; - goto exit; - } + if (!i2c_dev) + return -ENOMEM; i2c_dev->adap = &oaktrail_hdmi_i2c_adapter; i2c_dev->status = I2C_STAT_INIT; @@ -300,16 +297,23 @@ oaktrail_hdmi_i2c_adapter.name, hdmi_dev); if (ret) { DRM_ERROR("Failed to request IRQ for I2C controller\n"); - goto err; + goto free_dev; } /* Adapter registration */ ret = i2c_add_numbered_adapter(&oaktrail_hdmi_i2c_adapter); - return ret; + if (ret) { + DRM_ERROR("Failed to add I2C adapter\n"); + goto free_irq; + } + + return 0; -err: +free_irq: + free_irq(dev->irq, hdmi_dev); +free_dev: kfree(i2c_dev); -exit: + return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/gma500/psb_drv.c +++ linux-5.8.0/drivers/gpu/drm/gma500/psb_drv.c @@ -313,6 +313,8 @@ if (ret) goto out_err; + ret = -ENOMEM; + dev_priv->mmu = psb_mmu_driver_init(dev, 1, 0, 0); if (!dev_priv->mmu) goto out_err; --- linux-5.8.0.orig/drivers/gpu/drm/gma500/psb_irq.c +++ linux-5.8.0/drivers/gpu/drm/gma500/psb_irq.c @@ -347,6 +347,7 @@ { struct drm_psb_private *dev_priv = dev->dev_private; unsigned long irqflags; + unsigned int i; spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags); @@ -359,20 +360,12 @@ PSB_WVDC32(dev_priv->vdc_irq_mask, PSB_INT_ENABLE_R); PSB_WVDC32(0xFFFFFFFF, PSB_HWSTAM); - if (dev->vblank[0].enabled) - psb_enable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE); - else - psb_disable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE); - - if (dev->vblank[1].enabled) - psb_enable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE); - else - psb_disable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE); - - if (dev->vblank[2].enabled) - psb_enable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE); - else - psb_disable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE); + for (i = 0; i < dev->num_crtcs; ++i) { + if (dev->vblank[i].enabled) + psb_enable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE); + else + psb_disable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE); + } if (dev_priv->ops->hotplug_enable) dev_priv->ops->hotplug_enable(dev, true); @@ -385,6 +378,7 @@ { struct drm_psb_private *dev_priv = dev->dev_private; unsigned long irqflags; + unsigned int i; spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags); @@ -393,14 +387,10 @@ PSB_WVDC32(0xFFFFFFFF, PSB_HWSTAM); - if (dev->vblank[0].enabled) - psb_disable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE); - - if (dev->vblank[1].enabled) - psb_disable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE); - - if (dev->vblank[2].enabled) - psb_disable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE); + for (i = 0; i < dev->num_crtcs; ++i) { + if (dev->vblank[i].enabled) + psb_disable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE); + } dev_priv->vdc_irq_mask &= _PSB_IRQ_SGX_FLAG | _PSB_IRQ_MSVDX_FLAG | --- linux-5.8.0.orig/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ linux-5.8.0/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -374,7 +374,6 @@ drm_dev_unregister(dev); hibmc_unload(dev); - drm_dev_put(dev); } static struct pci_device_id hibmc_pci_table[] = { --- linux-5.8.0.orig/drivers/gpu/drm/i915/Kconfig.debug +++ linux-5.8.0/drivers/gpu/drm/i915/Kconfig.debug @@ -153,6 +153,7 @@ select DRM_EXPORT_FOR_TESTS if m select FAULT_INJECTION select PRIME_NUMBERS + select CRC32 help Choose this option to allow the driver to perform selftests upon loading; also requires the i915.selftest=1 module parameter. To --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/icl_dsi.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/icl_dsi.c @@ -1590,10 +1590,6 @@ get_dsi_io_power_domains(i915, enc_to_intel_dsi(encoder)); - - if (crtc_state->dsc.compression_enable) - intel_display_power_get(i915, - intel_dsc_power_domain(crtc_state)); } static bool gen11_dsi_get_hw_state(struct intel_encoder *encoder, --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_bios.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_bios.c @@ -32,6 +32,7 @@ #include "display/intel_gmbus.h" #include "i915_drv.h" +#include #define _INTEL_BIOS_PRIVATE #include "intel_vbt_defs.h" @@ -2084,6 +2085,22 @@ return NULL; } +#define DRM_DMI_PRODUCT_VERSION 0x6 + +static void parse_product_info(struct drm_i915_private *dev_priv) +{ + const char *product_ver = dmi_get_system_info(DRM_DMI_PRODUCT_VERSION); + if (!product_ver) + return; + + if (!strncmp(product_ver, "ThinkPad X1", 11)) { + DRM_DEBUG_KMS("dmi: %s, Bypassing TMDS_OE write\n", product_ver); + dev_priv->bypass_tmds_oe = true; + } + + return; +} + /** * intel_bios_init - find VBT and initialize settings from the BIOS * @dev_priv: i915 device instance @@ -2146,6 +2163,8 @@ parse_sdvo_device_mapping(dev_priv, bdb->version); parse_ddi_ports(dev_priv, bdb->version); + parse_product_info(dev_priv); + out: if (!vbt) { drm_info(&dev_priv->drm, --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_ddi.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_ddi.c @@ -2442,6 +2442,9 @@ u32 n_entries, val; int ln, rate = 0; + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) + return; + if (type != INTEL_OUTPUT_HDMI) { struct intel_dp *intel_dp = enc_to_intel_dp(encoder); @@ -2450,12 +2453,11 @@ ddi_translations = icl_get_mg_buf_trans(dev_priv, type, rate, &n_entries); - /* The table does not have values for level 3 and level 9. */ - if (level >= n_entries || level == 3 || level == 9) { + if (level >= n_entries) { drm_dbg_kms(&dev_priv->drm, "DDI translation not found for level %d. Using %d instead.", - level, n_entries - 2); - level = n_entries - 2; + level, n_entries - 1); + level = n_entries - 1; } /* Set MG_TX_LINK_PARAMS cri_use_fs32 to 0. */ @@ -2586,6 +2588,9 @@ const struct tgl_dkl_phy_ddi_buf_trans *ddi_translations; u32 n_entries, val, ln, dpcnt_mask, dpcnt_val; + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) + return; + if (type == INTEL_OUTPUT_HDMI) { n_entries = ARRAY_SIZE(tgl_dkl_phy_hdmi_ddi_trans); ddi_translations = tgl_dkl_phy_hdmi_ddi_trans; @@ -3105,6 +3110,23 @@ intel_de_posting_read(dev_priv, intel_dp->regs.dp_tp_ctl); } +static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, + const struct intel_crtc_state *crtc_state) +{ + struct drm_i915_private *i915 = to_i915(encoder->base.dev); + struct intel_digital_port *dig_port = enc_to_dig_port(encoder); + enum phy phy = intel_port_to_phy(i915, encoder->port); + + if (intel_phy_is_combo(i915, phy)) { + bool lane_reversal = + dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; + + intel_combo_phy_power_up_lanes(i915, phy, false, + crtc_state->lane_count, + lane_reversal); + } +} + static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, @@ -3198,14 +3220,7 @@ * 7.f Combo PHY: Configure PORT_CL_DW10 Static Power Down to power up * the used lanes of the DDI. */ - if (intel_phy_is_combo(dev_priv, phy)) { - bool lane_reversal = - dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; - - intel_combo_phy_power_up_lanes(dev_priv, phy, false, - crtc_state->lane_count, - lane_reversal); - } + intel_ddi_power_up_lanes(encoder, crtc_state); /* * 7.g Configure and enable DDI_BUF_CTL @@ -3289,14 +3304,7 @@ else intel_prepare_dp_ddi_buffers(encoder, crtc_state); - if (intel_phy_is_combo(dev_priv, phy)) { - bool lane_reversal = - dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; - - intel_combo_phy_power_up_lanes(dev_priv, phy, false, - crtc_state->lane_count, - lane_reversal); - } + intel_ddi_power_up_lanes(encoder, crtc_state); intel_ddi_init_dp_buf_reg(encoder); if (!is_mst) @@ -3766,6 +3774,8 @@ intel_de_write(dev_priv, reg, val); } + intel_ddi_power_up_lanes(encoder, crtc_state); + /* In HDMI/DVI mode, the port width, and swing/emphasis values * are ignored so nothing special needs to be done besides * enabling the port. @@ -4155,11 +4165,6 @@ if (drm_WARN_ON(&dev_priv->drm, transcoder_is_dsi(cpu_transcoder))) return; - if (INTEL_GEN(dev_priv) >= 12) { - intel_dp->regs.dp_tp_ctl = TGL_DP_TP_CTL(cpu_transcoder); - intel_dp->regs.dp_tp_status = TGL_DP_TP_STATUS(cpu_transcoder); - } - intel_dsc_get_config(encoder, pipe_config); temp = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder)); @@ -4261,6 +4266,16 @@ break; } + if (INTEL_GEN(dev_priv) >= 12) { + enum transcoder transcoder = + intel_dp_mst_is_slave_trans(pipe_config) ? + pipe_config->mst_master_transcoder : + pipe_config->cpu_transcoder; + + intel_dp->regs.dp_tp_ctl = TGL_DP_TP_CTL(transcoder); + intel_dp->regs.dp_tp_status = TGL_DP_TP_STATUS(transcoder); + } + pipe_config->has_audio = intel_ddi_is_audio_enabled(dev_priv, cpu_transcoder); --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_display.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_display.c @@ -3431,6 +3431,14 @@ if (IS_ERR(obj)) return NULL; + /* + * Mark it WT ahead of time to avoid changing the + * cache_level during fbdev initialization. The + * unbind there would get stuck waiting for rcu. + */ + i915_gem_object_set_cache_coherency(obj, HAS_WT(i915) ? + I915_CACHE_WT : I915_CACHE_NONE); + switch (plane_config->tiling) { case I915_TILING_NONE: break; @@ -4832,6 +4840,8 @@ plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE; } else if (fb->format->is_yuv) { plane_color_ctl |= PLANE_COLOR_INPUT_CSC_ENABLE; + if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE) + plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE; } return plane_color_ctl; @@ -10563,6 +10573,10 @@ val & PLANE_CTL_FLIP_HORIZONTAL) plane_config->rotation |= DRM_MODE_REFLECT_X; + /* 90/270 degree rotation would require extra work */ + if (drm_rotation_90_or_270(plane_config->rotation)) + goto error; + base = intel_de_read(dev_priv, PLANE_SURF(pipe, plane_id)) & 0xfffff000; plane_config->base = base; @@ -12783,10 +12797,11 @@ case 10 ... 11: bpp = 10 * 3; break; - case 12: + case 12 ... 16: bpp = 12 * 3; break; default: + MISSING_CASE(conn_state->max_bpc); return -EINVAL; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_display_types.h +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_display_types.h @@ -1376,6 +1376,9 @@ /* Displayport compliance testing */ struct intel_dp_compliance compliance; + /* To control wakeup latency, e.g. for irq-driven dp aux transfers. */ + struct pm_qos_request pm_qos; + /* Display stream compression testing */ bool force_dsc_en; }; --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_dp.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_dp.c @@ -585,7 +585,7 @@ return 0; } /* Also take into account max slice width */ - min_slice_count = min_t(u8, min_slice_count, + min_slice_count = max_t(u8, min_slice_count, DIV_ROUND_UP(mode_hdisplay, max_slice_width)); @@ -1391,7 +1391,7 @@ * lowest possible wakeup latency and so prevent the cpu from going into * deep sleep states. */ - cpu_latency_qos_update_request(&i915->pm_qos, 0); + cpu_latency_qos_update_request(&intel_dp->pm_qos, 0); intel_dp_check_edp(intel_dp); @@ -1524,7 +1524,7 @@ ret = recv_bytes; out: - cpu_latency_qos_update_request(&i915->pm_qos, PM_QOS_DEFAULT_VALUE); + cpu_latency_qos_update_request(&intel_dp->pm_qos, PM_QOS_DEFAULT_VALUE); if (vdd) edp_panel_vdd_off(intel_dp, false); @@ -1740,6 +1740,9 @@ static void intel_dp_aux_fini(struct intel_dp *intel_dp) { + if (cpu_latency_qos_request_active(&intel_dp->pm_qos)) + cpu_latency_qos_remove_request(&intel_dp->pm_qos); + kfree(intel_dp->aux.name); } @@ -1782,6 +1785,7 @@ aux_ch_name(dig_port->aux_ch), port_name(encoder->port)); intel_dp->aux.transfer = intel_dp_aux_transfer; + cpu_latency_qos_add_request(&intel_dp->pm_qos, PM_QOS_DEFAULT_VALUE); } bool intel_dp_source_supports_hbr2(struct intel_dp *intel_dp) --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c @@ -347,9 +347,13 @@ struct intel_panel *panel = &intel_connector->panel; struct intel_dp *intel_dp = enc_to_intel_dp(intel_connector->encoder); struct drm_i915_private *i915 = dp_to_i915(intel_dp); + bool force_dpcd; + + force_dpcd = drm_dp_has_quirk(&intel_dp->desc, intel_dp->edid_quirks, + DP_QUIRK_FORCE_DPCD_BACKLIGHT); if (i915_modparams.enable_dpcd_backlight == 0 || - !intel_dp_aux_display_control_capable(intel_connector)) + (!force_dpcd && !intel_dp_aux_display_control_capable(intel_connector))) return -ENODEV; /* @@ -358,9 +362,7 @@ */ if (i915->vbt.backlight.type != INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE && - i915_modparams.enable_dpcd_backlight != 1 && - !drm_dp_has_quirk(&intel_dp->desc, intel_dp->edid_quirks, - DP_QUIRK_FORCE_DPCD_BACKLIGHT)) { + i915_modparams.enable_dpcd_backlight != 1 && !force_dpcd) { drm_info(&i915->drm, "Panel advertises DPCD backlight support, but " "VBT disagrees. If your backlight controls " --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -66,7 +66,9 @@ slots = drm_dp_atomic_find_vcpi_slots(state, &intel_dp->mst_mgr, connector->port, - crtc_state->pbn, 0); + crtc_state->pbn, + drm_dp_get_vc_payload_bw(crtc_state->port_clock, + crtc_state->lane_count)); if (slots == -EDEADLK) return slots; if (slots >= 0) --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_dpll_mgr.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_dpll_mgr.c @@ -2934,6 +2934,15 @@ static const struct skl_wrpll_params tgl_tbt_pll_24MHz_values = { .dco_integer = 0x43, .dco_fraction = 0x4000, /* the following params are unused */ +}; + +/* + * Display WA #22010492432: tgl + * Divide the nominal .dco_fraction value by 2. + */ +static const struct skl_wrpll_params tgl_tbt_pll_38_4MHz_values = { + .dco_integer = 0x54, .dco_fraction = 0x1800, + /* the following params are unused */ .pdiv = 0, .kdiv = 0, .qdiv_mode = 0, .qdiv_ratio = 0, }; @@ -2970,12 +2979,14 @@ MISSING_CASE(dev_priv->dpll.ref_clks.nssc); /* fall-through */ case 19200: - case 38400: *pll_params = tgl_tbt_pll_19_2MHz_values; break; case 24000: *pll_params = tgl_tbt_pll_24MHz_values; break; + case 38400: + *pll_params = tgl_tbt_pll_38_4MHz_values; + break; } } else { switch (dev_priv->dpll.ref_clks.nssc) { --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_hdcp.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -336,8 +336,10 @@ /* Fill up the empty slots in sha_text and write it out */ sha_empty = sizeof(sha_text) - sha_leftovers; - for (j = 0; j < sha_empty; j++) - sha_text |= ksv[j] << ((sizeof(sha_text) - j - 1) * 8); + for (j = 0; j < sha_empty; j++) { + u8 off = ((sizeof(sha_text) - j - 1 - sha_leftovers) * 8); + sha_text |= ksv[j] << off; + } ret = intel_write_sha_text(dev_priv, sha_text); if (ret < 0) @@ -435,7 +437,7 @@ /* Write 32 bits of text */ intel_de_write(dev_priv, HDCP_REP_CTL, rep_ctl | HDCP_SHA1_TEXT_32); - sha_text |= bstatus[0] << 24 | bstatus[1] << 16; + sha_text |= bstatus[0] << 8 | bstatus[1]; ret = intel_write_sha_text(dev_priv, sha_text); if (ret < 0) return ret; @@ -450,17 +452,29 @@ return ret; sha_idx += sizeof(sha_text); } + + /* + * Terminate the SHA-1 stream by hand. For the other leftover + * cases this is appended by the hardware. + */ + intel_de_write(dev_priv, HDCP_REP_CTL, + rep_ctl | HDCP_SHA1_TEXT_32); + sha_text = DRM_HDCP_SHA1_TERMINATOR << 24; + ret = intel_write_sha_text(dev_priv, sha_text); + if (ret < 0) + return ret; + sha_idx += sizeof(sha_text); } else if (sha_leftovers == 3) { - /* Write 32 bits of text */ + /* Write 32 bits of text (filled from LSB) */ intel_de_write(dev_priv, HDCP_REP_CTL, rep_ctl | HDCP_SHA1_TEXT_32); - sha_text |= bstatus[0] << 24; + sha_text |= bstatus[0]; ret = intel_write_sha_text(dev_priv, sha_text); if (ret < 0) return ret; sha_idx += sizeof(sha_text); - /* Write 8 bits of text, 24 bits of M0 */ + /* Write 8 bits of text (filled from LSB), 24 bits of M0 */ intel_de_write(dev_priv, HDCP_REP_CTL, rep_ctl | HDCP_SHA1_TEXT_8); ret = intel_write_sha_text(dev_priv, bstatus[1]); @@ -2100,6 +2114,7 @@ if (content_protection_type_changed) { mutex_lock(&hdcp->mutex); hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED; + drm_connector_get(&connector->base); schedule_work(&hdcp->prop_work); mutex_unlock(&hdcp->mutex); } --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_hdmi.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -1268,6 +1268,11 @@ if (hdmi->dp_dual_mode.type < DRM_DP_DUAL_MODE_TYPE2_DVI) return; + if (dev_priv->bypass_tmds_oe) { + drm_dbg_kms(&dev_priv->drm, "Bypassing TMDS_OE setting\n"); + return; + } + drm_dbg_kms(&dev_priv->drm, "%s DP dual mode adaptor TMDS output\n", enable ? "Enabling" : "Disabling"); @@ -2197,7 +2202,11 @@ has_hdmi_sink)) return MODE_CLOCK_HIGH; - /* BXT DPLL can't generate 223-240 MHz */ + /* GLK DPLL can't generate 446-480 MHz */ + if (IS_GEMINILAKE(dev_priv) && clock > 446666 && clock < 480000) + return MODE_CLOCK_RANGE; + + /* BXT/GLK DPLL can't generate 223-240 MHz */ if (IS_GEN9_LP(dev_priv) && clock > 223333 && clock < 240000) return MODE_CLOCK_RANGE; --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_lpe_audio.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_lpe_audio.c @@ -174,6 +174,14 @@ handle_simple_irq, "hdmi_lpe_audio_irq_handler"); + static const struct pci_device_id irq_quirk_ids[] = { + /* Dell Wyse 3040 */ + {PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, 0x22b0, 0x1028, 0x07c1)}, + {} + }; + + if (pci_dev_present(irq_quirk_ids)) + return 0; return irq_set_chip_data(irq, dev_priv); } --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_overlay.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_overlay.c @@ -179,6 +179,7 @@ struct intel_crtc *crtc; struct i915_vma *vma; struct i915_vma *old_vma; + struct intel_frontbuffer *frontbuffer; bool active; bool pfit_active; u32 pfit_vscale_ratio; /* shifted-point number, (1<<12) == 1.0 */ @@ -279,21 +280,19 @@ struct i915_vma *vma) { enum pipe pipe = overlay->crtc->pipe; - struct intel_frontbuffer *from = NULL, *to = NULL; + struct intel_frontbuffer *frontbuffer = NULL; drm_WARN_ON(&overlay->i915->drm, overlay->old_vma); - if (overlay->vma) - from = intel_frontbuffer_get(overlay->vma->obj); if (vma) - to = intel_frontbuffer_get(vma->obj); + frontbuffer = intel_frontbuffer_get(vma->obj); - intel_frontbuffer_track(from, to, INTEL_FRONTBUFFER_OVERLAY(pipe)); + intel_frontbuffer_track(overlay->frontbuffer, frontbuffer, + INTEL_FRONTBUFFER_OVERLAY(pipe)); - if (to) - intel_frontbuffer_put(to); - if (from) - intel_frontbuffer_put(from); + if (overlay->frontbuffer) + intel_frontbuffer_put(overlay->frontbuffer); + overlay->frontbuffer = frontbuffer; intel_frontbuffer_flip_prepare(overlay->i915, INTEL_FRONTBUFFER_OVERLAY(pipe)); --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_panel.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_panel.c @@ -1644,16 +1644,13 @@ val = pch_get_backlight(connector); else val = lpt_get_backlight(connector); - val = intel_panel_compute_brightness(connector, val); - panel->backlight.level = clamp(val, panel->backlight.min, - panel->backlight.max); if (cpu_mode) { drm_dbg_kms(&dev_priv->drm, "CPU backlight register was enabled, switching to PCH override\n"); /* Write converted CPU PWM value to PCH override register */ - lpt_set_backlight(connector->base.state, panel->backlight.level); + lpt_set_backlight(connector->base.state, val); intel_de_write(dev_priv, BLC_PWM_PCH_CTL1, pch_ctl1 | BLM_PCH_OVERRIDE_ENABLE); @@ -1661,6 +1658,10 @@ cpu_ctl2 & ~BLM_PWM_ENABLE); } + val = intel_panel_compute_brightness(connector, val); + panel->backlight.level = clamp(val, panel->backlight.min, + panel->backlight.max); + return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_psr.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_psr.c @@ -1450,6 +1450,14 @@ */ dev_priv->hsw_psr_mmio_adjust = _SRD_CTL_EDP - _HSW_EDP_PSR_BASE; + /* + * PSR was disabled by module parameters but the underlying panel is + * depending on it, so use per-chip default to probe that automatically. + */ + if ((dev_priv->psr.dp->edid_quirks & BIT(DP_QUIRK_FORCE_PSR_CHIP_DEFAULT)) && + i915_modparams.enable_psr == 0) + i915_modparams.enable_psr = -1; + if (i915_modparams.enable_psr == -1) if (INTEL_GEN(dev_priv) < 9 || !dev_priv->vbt.psr.enable) i915_modparams.enable_psr = 0; @@ -1622,7 +1630,7 @@ return; intel_connector = to_intel_connector(connector); - dig_port = enc_to_dig_port(intel_attached_encoder(intel_connector)); + dig_port = enc_to_dig_port(to_intel_encoder(new_state->best_encoder)); if (dev_priv->psr.dp != &dig_port->dp) return; --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_sprite.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_sprite.c @@ -453,13 +453,19 @@ /* Preoffset values for YUV to RGB Conversion */ #define PREOFF_YUV_TO_RGB_HI 0x1800 -#define PREOFF_YUV_TO_RGB_ME 0x1F00 +#define PREOFF_YUV_TO_RGB_ME 0x0000 #define PREOFF_YUV_TO_RGB_LO 0x1800 #define ROFF(x) (((x) & 0xffff) << 16) #define GOFF(x) (((x) & 0xffff) << 0) #define BOFF(x) (((x) & 0xffff) << 16) +/* + * Programs the input color space conversion stage for ICL HDR planes. + * Note that it is assumed that this stage always happens after YUV + * range correction. Thus, the input to this stage is assumed to be + * in full-range YCbCr. + */ static void icl_program_input_csc(struct intel_plane *plane, const struct intel_crtc_state *crtc_state, @@ -507,52 +513,7 @@ 0x0, 0x7800, 0x7F10, }, }; - - /* Matrix for Limited Range to Full Range Conversion */ - static const u16 input_csc_matrix_lr[][9] = { - /* - * BT.601 Limted range YCbCr -> full range RGB - * The matrix required is : - * [1.164384, 0.000, 1.596027, - * 1.164384, -0.39175, -0.812813, - * 1.164384, 2.017232, 0.0000] - */ - [DRM_COLOR_YCBCR_BT601] = { - 0x7CC8, 0x7950, 0x0, - 0x8D00, 0x7950, 0x9C88, - 0x0, 0x7950, 0x6810, - }, - /* - * BT.709 Limited range YCbCr -> full range RGB - * The matrix required is : - * [1.164384, 0.000, 1.792741, - * 1.164384, -0.213249, -0.532909, - * 1.164384, 2.112402, 0.0000] - */ - [DRM_COLOR_YCBCR_BT709] = { - 0x7E58, 0x7950, 0x0, - 0x8888, 0x7950, 0xADA8, - 0x0, 0x7950, 0x6870, - }, - /* - * BT.2020 Limited range YCbCr -> full range RGB - * The matrix required is : - * [1.164, 0.000, 1.678, - * 1.164, -0.1873, -0.6504, - * 1.164, 2.1417, 0.0000] - */ - [DRM_COLOR_YCBCR_BT2020] = { - 0x7D70, 0x7950, 0x0, - 0x8A68, 0x7950, 0xAC00, - 0x0, 0x7950, 0x6890, - }, - }; - const u16 *csc; - - if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE) - csc = input_csc_matrix[plane_state->hw.color_encoding]; - else - csc = input_csc_matrix_lr[plane_state->hw.color_encoding]; + const u16 *csc = input_csc_matrix[plane_state->hw.color_encoding]; intel_de_write_fw(dev_priv, PLANE_INPUT_CSC_COEFF(pipe, plane_id, 0), ROFF(csc[0]) | GOFF(csc[1])); @@ -569,14 +530,8 @@ intel_de_write_fw(dev_priv, PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 0), PREOFF_YUV_TO_RGB_HI); - if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE) - intel_de_write_fw(dev_priv, - PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1), - 0); - else - intel_de_write_fw(dev_priv, - PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1), - PREOFF_YUV_TO_RGB_ME); + intel_de_write_fw(dev_priv, PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1), + PREOFF_YUV_TO_RGB_ME); intel_de_write_fw(dev_priv, PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 2), PREOFF_YUV_TO_RGB_LO); intel_de_write_fw(dev_priv, --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/intel_tc.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/intel_tc.c @@ -23,36 +23,6 @@ return names[mode]; } -static void -tc_port_load_fia_params(struct drm_i915_private *i915, - struct intel_digital_port *dig_port) -{ - enum port port = dig_port->base.port; - enum tc_port tc_port = intel_port_to_tc(i915, port); - u32 modular_fia; - - if (INTEL_INFO(i915)->display.has_modular_fia) { - modular_fia = intel_uncore_read(&i915->uncore, - PORT_TX_DFLEXDPSP(FIA1)); - drm_WARN_ON(&i915->drm, modular_fia == 0xffffffff); - modular_fia &= MODULAR_FIA_MASK; - } else { - modular_fia = 0; - } - - /* - * Each Modular FIA instance houses 2 TC ports. In SOC that has more - * than two TC ports, there are multiple instances of Modular FIA. - */ - if (modular_fia) { - dig_port->tc_phy_fia = tc_port / 2; - dig_port->tc_phy_fia_idx = tc_port % 2; - } else { - dig_port->tc_phy_fia = FIA1; - dig_port->tc_phy_fia_idx = tc_port; - } -} - static enum intel_display_power_domain tc_cold_get_power_domain(struct intel_digital_port *dig_port) { @@ -642,6 +612,43 @@ mutex_unlock(&dig_port->tc_lock); } +static bool +tc_has_modular_fia(struct drm_i915_private *i915, struct intel_digital_port *dig_port) +{ + intel_wakeref_t wakeref; + u32 val; + + if (!INTEL_INFO(i915)->display.has_modular_fia) + return false; + + wakeref = tc_cold_block(dig_port); + val = intel_uncore_read(&i915->uncore, PORT_TX_DFLEXDPSP(FIA1)); + tc_cold_unblock(dig_port, wakeref); + + drm_WARN_ON(&i915->drm, val == 0xffffffff); + + return val & MODULAR_FIA_MASK; +} + +static void +tc_port_load_fia_params(struct drm_i915_private *i915, struct intel_digital_port *dig_port) +{ + enum port port = dig_port->base.port; + enum tc_port tc_port = intel_port_to_tc(i915, port); + + /* + * Each Modular FIA instance houses 2 TC ports. In SOC that has more + * than two TC ports, there are multiple instances of Modular FIA. + */ + if (tc_has_modular_fia(i915, dig_port)) { + dig_port->tc_phy_fia = tc_port / 2; + dig_port->tc_phy_fia_idx = tc_port % 2; + } else { + dig_port->tc_phy_fia = FIA1; + dig_port->tc_phy_fia_idx = tc_port; + } +} + void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy) { struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); --- linux-5.8.0.orig/drivers/gpu/drm/i915/display/vlv_dsi.c +++ linux-5.8.0/drivers/gpu/drm/i915/display/vlv_dsi.c @@ -812,10 +812,20 @@ intel_dsi_prepare(encoder, pipe_config); intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_POWER_ON); - intel_dsi_msleep(intel_dsi, intel_dsi->panel_on_delay); - /* Deassert reset */ - intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET); + /* + * Give the panel time to power-on and then deassert its reset. + * Depending on the VBT MIPI sequences version the deassert-seq + * may contain the necessary delay, intel_dsi_msleep() will skip + * the delay in that case. If there is no deassert-seq, then an + * unconditional msleep is used to give the panel time to power-on. + */ + if (dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]) { + intel_dsi_msleep(intel_dsi, intel_dsi->panel_on_delay); + intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET); + } else { + msleep(intel_dsi->panel_on_delay); + } if (IS_GEMINILAKE(dev_priv)) { glk_cold_boot = glk_dsi_enable_io(encoder); --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -391,24 +391,6 @@ return rcu_dereference_protected(ctx->engines, true); } -static bool __reset_engine(struct intel_engine_cs *engine) -{ - struct intel_gt *gt = engine->gt; - bool success = false; - - if (!intel_has_reset_engine(gt)) - return false; - - if (!test_and_set_bit(I915_RESET_ENGINE + engine->id, - >->reset.flags)) { - success = intel_engine_reset(engine, NULL) == 0; - clear_and_wake_up_bit(I915_RESET_ENGINE + engine->id, - >->reset.flags); - } - - return success; -} - static void __reset_context(struct i915_gem_context *ctx, struct intel_engine_cs *engine) { @@ -432,37 +414,39 @@ * kill the banned context, we fallback to doing a local reset * instead. */ - if (IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT) && - !intel_engine_pulse(engine)) - return true; - - /* If we are unable to send a pulse, try resetting this engine. */ - return __reset_engine(engine); + return intel_engine_pulse(engine) == 0; } -static struct intel_engine_cs *__active_engine(struct i915_request *rq) +static bool +__active_engine(struct i915_request *rq, struct intel_engine_cs **active) { struct intel_engine_cs *engine, *locked; + bool ret = false; /* * Serialise with __i915_request_submit() so that it sees * is-banned?, or we know the request is already inflight. + * + * Note that rq->engine is unstable, and so we double + * check that we have acquired the lock on the final engine. */ locked = READ_ONCE(rq->engine); spin_lock_irq(&locked->active.lock); while (unlikely(locked != (engine = READ_ONCE(rq->engine)))) { spin_unlock(&locked->active.lock); - spin_lock(&engine->active.lock); locked = engine; + spin_lock(&locked->active.lock); } - engine = NULL; - if (i915_request_is_active(rq) && rq->fence.error != -EIO) - engine = rq->engine; + if (!i915_request_completed(rq)) { + if (i915_request_is_active(rq) && rq->fence.error != -EIO) + *active = locked; + ret = true; + } spin_unlock_irq(&locked->active.lock); - return engine; + return ret; } static struct intel_engine_cs *active_engine(struct intel_context *ce) @@ -473,22 +457,21 @@ if (!ce->timeline) return NULL; - mutex_lock(&ce->timeline->mutex); - list_for_each_entry_reverse(rq, &ce->timeline->requests, link) { - if (i915_request_completed(rq)) - break; + rcu_read_lock(); + list_for_each_entry_rcu(rq, &ce->timeline->requests, link) { + if (i915_request_is_active(rq) && i915_request_completed(rq)) + continue; /* Check with the backend if the request is inflight */ - engine = __active_engine(rq); - if (engine) + if (__active_engine(rq, &engine)) break; } - mutex_unlock(&ce->timeline->mutex); + rcu_read_unlock(); return engine; } -static void kill_engines(struct i915_gem_engines *engines) +static void kill_engines(struct i915_gem_engines *engines, bool ban) { struct i915_gem_engines_iter it; struct intel_context *ce; @@ -503,7 +486,7 @@ for_each_gem_engine(ce, engines, it) { struct intel_engine_cs *engine; - if (intel_context_set_banned(ce)) + if (ban && intel_context_set_banned(ce)) continue; /* @@ -516,7 +499,7 @@ engine = active_engine(ce); /* First attempt to gracefully cancel the context */ - if (engine && !__cancel_engine(engine)) + if (engine && !__cancel_engine(engine) && ban) /* * If we are unable to send a preemptive pulse to bump * the context from the GPU, we have to resort to a full @@ -526,8 +509,10 @@ } } -static void kill_stale_engines(struct i915_gem_context *ctx) +static void kill_context(struct i915_gem_context *ctx) { + bool ban = (!i915_gem_context_is_persistent(ctx) || + !i915_modparams.enable_hangcheck); struct i915_gem_engines *pos, *next; spin_lock_irq(&ctx->stale.lock); @@ -540,7 +525,7 @@ spin_unlock_irq(&ctx->stale.lock); - kill_engines(pos); + kill_engines(pos, ban); spin_lock_irq(&ctx->stale.lock); GEM_BUG_ON(i915_sw_fence_signaled(&pos->fence)); @@ -552,11 +537,6 @@ spin_unlock_irq(&ctx->stale.lock); } -static void kill_context(struct i915_gem_context *ctx) -{ - kill_stale_engines(ctx); -} - static void engines_idle_release(struct i915_gem_context *ctx, struct i915_gem_engines *engines) { @@ -591,7 +571,7 @@ kill: if (list_empty(&engines->link)) /* raced, already closed */ - kill_engines(engines); + kill_engines(engines, true); i915_sw_fence_commit(&engines->fence); } @@ -649,9 +629,7 @@ * case we opt to forcibly kill off all remaining requests on * context close. */ - if (!i915_gem_context_is_persistent(ctx) || - !i915_modparams.enable_hangcheck) - kill_context(ctx); + kill_context(ctx); i915_gem_context_put(ctx); } @@ -714,6 +692,7 @@ ctx->i915 = i915; ctx->sched.priority = I915_USER_PRIORITY(I915_PRIORITY_NORMAL); mutex_init(&ctx->mutex); + INIT_LIST_HEAD(&ctx->link); spin_lock_init(&ctx->stale.lock); INIT_LIST_HEAD(&ctx->stale.engines); @@ -740,10 +719,6 @@ for (i = 0; i < ARRAY_SIZE(ctx->hang_timestamp); i++) ctx->hang_timestamp[i] = jiffies - CONTEXT_FAST_HANG_JIFFIES; - spin_lock(&i915->gem.contexts.lock); - list_add_tail(&ctx->link, &i915->gem.contexts.list); - spin_unlock(&i915->gem.contexts.lock); - return ctx; err_free: @@ -931,6 +906,7 @@ struct drm_i915_file_private *fpriv, u32 *id) { + struct drm_i915_private *i915 = ctx->i915; struct i915_address_space *vm; int ret; @@ -949,8 +925,16 @@ /* And finally expose ourselves to userspace via the idr */ ret = xa_alloc(&fpriv->context_xa, id, ctx, xa_limit_32b, GFP_KERNEL); if (ret) - put_pid(fetch_and_zero(&ctx->pid)); + goto err_pid; + + spin_lock(&i915->gem.contexts.lock); + list_add_tail(&ctx->link, &i915->gem.contexts.list); + spin_unlock(&i915->gem.contexts.lock); + + return 0; +err_pid: + put_pid(fetch_and_zero(&ctx->pid)); return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_domain.c +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_domain.c @@ -485,21 +485,6 @@ return -ENOENT; /* - * Already in the desired write domain? Nothing for us to do! - * - * We apply a little bit of cunning here to catch a broader set of - * no-ops. If obj->write_domain is set, we must be in the same - * obj->read_domains, and only that domain. Therefore, if that - * obj->write_domain matches the request read_domains, we are - * already in the same read/write domain and can skip the operation, - * without having to further check the requested write_domain. - */ - if (READ_ONCE(obj->write_domain) == read_domains) { - err = 0; - goto out; - } - - /* * Try to flush the object off the GPU without holding the lock. * We will repeat the flush holding the lock in the normal manner * to catch cases where we are gazumped. @@ -536,6 +521,19 @@ if (err) goto out; + /* + * Already in the desired write domain? Nothing for us to do! + * + * We apply a little bit of cunning here to catch a broader set of + * no-ops. If obj->write_domain is set, we must be in the same + * obj->read_domains, and only that domain. Therefore, if that + * obj->write_domain matches the request read_domains, we are + * already in the same read/write domain and can skip the operation, + * without having to further check the requested write_domain. + */ + if (READ_ONCE(obj->write_domain) == read_domains) + goto out_unpin; + err = i915_gem_object_lock_interruptible(obj); if (err) goto out_unpin; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -421,7 +421,7 @@ return true; if (!(flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS) && - (vma->node.start + vma->node.size - 1) >> 32) + (vma->node.start + vma->node.size + 4095) >> 32) return true; if (flags & __EXEC_OBJECT_NEEDS_MAP && @@ -1956,8 +1956,8 @@ struct i915_vma *batch; struct i915_vma *shadow; struct i915_vma *trampoline; - unsigned int batch_offset; - unsigned int batch_length; + unsigned long batch_offset; + unsigned long batch_length; }; static int __eb_parse(struct dma_fence_work *work) @@ -2027,6 +2027,9 @@ struct eb_parse_work *pw; int err; + GEM_BUG_ON(overflows_type(eb->batch_start_offset, pw->batch_offset)); + GEM_BUG_ON(overflows_type(eb->batch_len, pw->batch_length)); + pw = kzalloc(sizeof(*pw), GFP_KERNEL); if (!pw) return -ENOMEM; @@ -2605,7 +2608,7 @@ break; } -static void eb_request_add(struct i915_execbuffer *eb) +static int eb_request_add(struct i915_execbuffer *eb, int err) { struct i915_request *rq = eb->request; struct intel_timeline * const tl = i915_request_timeline(rq); @@ -2626,6 +2629,7 @@ /* Serialise with context_close via the add_to_timeline */ i915_request_set_error_once(rq, -ENOENT); __i915_request_skip(rq); + err = -ENOENT; /* override any transient errors */ } __i915_request_queue(rq, &attr); @@ -2635,6 +2639,8 @@ retire_requests(tl, prev); mutex_unlock(&tl->mutex); + + return err; } static int @@ -2836,7 +2842,7 @@ err_request: add_to_client(eb.request, file); i915_request_get(eb.request); - eb_request_add(&eb); + err = eb_request_add(&eb, err); if (fences) signal_fence_array(&eb, fences); --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_pages.c +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_pages.c @@ -254,9 +254,35 @@ if (!i915_gem_object_has_struct_page(obj) && type != I915_MAP_WC) return NULL; + if (GEM_WARN_ON(type == I915_MAP_WC && + !static_cpu_has(X86_FEATURE_PAT))) + return NULL; + /* A single page can always be kmapped */ - if (n_pte == 1 && type == I915_MAP_WB) - return kmap(sg_page(sgt->sgl)); + if (n_pte == 1 && type == I915_MAP_WB) { + struct page *page = sg_page(sgt->sgl); + + /* + * On 32b, highmem using a finite set of indirect PTE (i.e. + * vmap) to provide virtual mappings of the high pages. + * As these are finite, map_new_virtual() must wait for some + * other kmap() to finish when it runs out. If we map a large + * number of objects, there is no method for it to tell us + * to release the mappings, and we deadlock. + * + * However, if we make an explicit vmap of the page, that + * uses a larger vmalloc arena, and also has the ability + * to tell us to release unwanted mappings. Most importantly, + * it will fail and propagate an error instead of waiting + * forever. + * + * So if the page is beyond the 32b boundary, make an explicit + * vmap. On 64b, this check will be optimised away as we can + * directly kmap any page on the system. + */ + if (!PageHighMem(page)) + return kmap(page); + } mem = stack; if (n_pte > ARRAY_SIZE(stack)) { --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_stolen.c +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_stolen.c @@ -53,8 +53,10 @@ struct drm_mm_node *node, u64 size, unsigned alignment) { - return i915_gem_stolen_insert_node_in_range(i915, node, size, - alignment, 0, U64_MAX); + return i915_gem_stolen_insert_node_in_range(i915, node, + size, alignment, + I915_GEM_STOLEN_BIAS, + U64_MAX); } void i915_gem_stolen_remove_node(struct drm_i915_private *i915, --- linux-5.8.0.orig/drivers/gpu/drm/i915/gem/i915_gem_stolen.h +++ linux-5.8.0/drivers/gpu/drm/i915/gem/i915_gem_stolen.h @@ -30,4 +30,6 @@ resource_size_t stolen_offset, resource_size_t size); +#define I915_GEM_STOLEN_BIAS SZ_128K + #endif /* __I915_GEM_STOLEN_H__ */ --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/gen7_renderclear.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/gen7_renderclear.c @@ -7,8 +7,6 @@ #include "i915_drv.h" #include "intel_gpu_commands.h" -#define MAX_URB_ENTRIES 64 -#define STATE_SIZE (4 * 1024) #define GT3_INLINE_DATA_DELAYS 0x1E00 #define batch_advance(Y, CS) GEM_BUG_ON((Y)->end != (CS)) @@ -34,38 +32,59 @@ }; struct batch_vals { - u32 max_primitives; - u32 max_urb_entries; - u32 cmd_size; - u32 state_size; + u32 max_threads; u32 state_start; - u32 batch_size; + u32 surface_start; u32 surface_height; u32 surface_width; - u32 scratch_size; - u32 max_size; + u32 size; }; +static inline int num_primitives(const struct batch_vals *bv) +{ + /* + * We need to saturate the GPU with work in order to dispatch + * a shader on every HW thread, and clear the thread-local registers. + * In short, we have to dispatch work faster than the shaders can + * run in order to fill the EU and occupy each HW thread. + */ + return bv->max_threads; +} + static void batch_get_defaults(struct drm_i915_private *i915, struct batch_vals *bv) { if (IS_HASWELL(i915)) { - bv->max_primitives = 280; - bv->max_urb_entries = MAX_URB_ENTRIES; + switch (INTEL_INFO(i915)->gt) { + default: + case 1: + bv->max_threads = 70; + break; + case 2: + bv->max_threads = 140; + break; + case 3: + bv->max_threads = 280; + break; + } bv->surface_height = 16 * 16; bv->surface_width = 32 * 2 * 16; } else { - bv->max_primitives = 128; - bv->max_urb_entries = MAX_URB_ENTRIES / 2; + switch (INTEL_INFO(i915)->gt) { + default: + case 1: /* including vlv */ + bv->max_threads = 36; + break; + case 2: + bv->max_threads = 128; + break; + } bv->surface_height = 16 * 8; bv->surface_width = 32 * 16; } - bv->cmd_size = bv->max_primitives * 4096; - bv->state_size = STATE_SIZE; - bv->state_start = bv->cmd_size; - bv->batch_size = bv->cmd_size + bv->state_size; - bv->scratch_size = bv->surface_height * bv->surface_width; - bv->max_size = bv->batch_size + bv->scratch_size; + bv->state_start = round_up(SZ_1K + num_primitives(bv) * 64, SZ_4K); + bv->surface_start = bv->state_start + SZ_4K; + bv->size = bv->surface_start + bv->surface_height * bv->surface_width; } static void batch_init(struct batch_chunk *bc, @@ -155,7 +174,8 @@ gen7_fill_binding_table(struct batch_chunk *state, const struct batch_vals *bv) { - u32 surface_start = gen7_fill_surface_state(state, bv->batch_size, bv); + u32 surface_start = + gen7_fill_surface_state(state, bv->surface_start, bv); u32 *cs = batch_alloc_items(state, 32, 8); u32 offset = batch_offset(state, cs); @@ -214,13 +234,13 @@ gen7_emit_state_base_address(struct batch_chunk *batch, u32 surface_state_base) { - u32 *cs = batch_alloc_items(batch, 0, 12); + u32 *cs = batch_alloc_items(batch, 0, 10); - *cs++ = STATE_BASE_ADDRESS | (12 - 2); + *cs++ = STATE_BASE_ADDRESS | (10 - 2); /* general */ *cs++ = batch_addr(batch) | BASE_ADDRESS_MODIFY; /* surface */ - *cs++ = batch_addr(batch) | surface_state_base | BASE_ADDRESS_MODIFY; + *cs++ = (batch_addr(batch) + surface_state_base) | BASE_ADDRESS_MODIFY; /* dynamic */ *cs++ = batch_addr(batch) | BASE_ADDRESS_MODIFY; /* indirect */ @@ -233,8 +253,6 @@ *cs++ = BASE_ADDRESS_MODIFY; *cs++ = 0; *cs++ = BASE_ADDRESS_MODIFY; - *cs++ = 0; - *cs++ = 0; batch_advance(batch, cs); } @@ -244,8 +262,7 @@ u32 urb_size, u32 curbe_size, u32 mode) { - u32 urb_entries = bv->max_urb_entries; - u32 threads = bv->max_primitives - 1; + u32 threads = bv->max_threads - 1; u32 *cs = batch_alloc_items(batch, 32, 8); *cs++ = MEDIA_VFE_STATE | (8 - 2); @@ -254,7 +271,7 @@ *cs++ = 0; /* number of threads & urb entries for GPGPU vs Media Mode */ - *cs++ = threads << 16 | urb_entries << 8 | mode << 2; + *cs++ = threads << 16 | 1 << 8 | mode << 2; *cs++ = 0; @@ -293,17 +310,12 @@ { unsigned int x_offset = (media_object_index % 16) * 64; unsigned int y_offset = (media_object_index / 16) * 16; - unsigned int inline_data_size; - unsigned int media_batch_size; - unsigned int i; + unsigned int pkt = 6 + 3; u32 *cs; - inline_data_size = 112 * 8; - media_batch_size = inline_data_size + 6; - - cs = batch_alloc_items(batch, 8, media_batch_size); + cs = batch_alloc_items(batch, 8, pkt); - *cs++ = MEDIA_OBJECT | (media_batch_size - 2); + *cs++ = MEDIA_OBJECT | (pkt - 2); /* interface descriptor offset */ *cs++ = 0; @@ -317,25 +329,46 @@ *cs++ = 0; /* inline */ - *cs++ = (y_offset << 16) | (x_offset); + *cs++ = y_offset << 16 | x_offset; *cs++ = 0; *cs++ = GT3_INLINE_DATA_DELAYS; - for (i = 3; i < inline_data_size; i++) - *cs++ = 0; batch_advance(batch, cs); } static void gen7_emit_pipeline_flush(struct batch_chunk *batch) { - u32 *cs = batch_alloc_items(batch, 0, 5); + u32 *cs = batch_alloc_items(batch, 0, 4); + + *cs++ = GFX_OP_PIPE_CONTROL(4); + *cs++ = PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH | + PIPE_CONTROL_DEPTH_CACHE_FLUSH | + PIPE_CONTROL_DC_FLUSH_ENABLE | + PIPE_CONTROL_CS_STALL; + *cs++ = 0; + *cs++ = 0; + + batch_advance(batch, cs); +} + +static void gen7_emit_pipeline_invalidate(struct batch_chunk *batch) +{ + u32 *cs = batch_alloc_items(batch, 0, 10); + + /* ivb: Stall before STATE_CACHE_INVALIDATE */ + *cs++ = GFX_OP_PIPE_CONTROL(5); + *cs++ = PIPE_CONTROL_STALL_AT_SCOREBOARD | + PIPE_CONTROL_CS_STALL; + *cs++ = 0; + *cs++ = 0; + *cs++ = 0; *cs++ = GFX_OP_PIPE_CONTROL(5); - *cs++ = PIPE_CONTROL_STATE_CACHE_INVALIDATE | - PIPE_CONTROL_GLOBAL_GTT_IVB; + *cs++ = PIPE_CONTROL_STATE_CACHE_INVALIDATE; *cs++ = 0; *cs++ = 0; *cs++ = 0; + batch_advance(batch, cs); } @@ -344,34 +377,48 @@ const struct batch_vals *bv) { struct drm_i915_private *i915 = vma->vm->i915; - unsigned int desc_count = 64; - const u32 urb_size = 112; + const unsigned int desc_count = 1; + const unsigned int urb_size = 1; struct batch_chunk cmds, state; - u32 interface_descriptor; + u32 descriptors; unsigned int i; - batch_init(&cmds, vma, start, 0, bv->cmd_size); - batch_init(&state, vma, start, bv->state_start, bv->state_size); + batch_init(&cmds, vma, start, 0, bv->state_start); + batch_init(&state, vma, start, bv->state_start, SZ_4K); - interface_descriptor = - gen7_fill_interface_descriptor(&state, bv, - IS_HASWELL(i915) ? - &cb_kernel_hsw : - &cb_kernel_ivb, - desc_count); + descriptors = gen7_fill_interface_descriptor(&state, bv, + IS_HASWELL(i915) ? + &cb_kernel_hsw : + &cb_kernel_ivb, + desc_count); + + /* Reset inherited context registers */ + gen7_emit_pipeline_flush(&cmds); + gen7_emit_pipeline_invalidate(&cmds); + batch_add(&cmds, MI_LOAD_REGISTER_IMM(2)); + batch_add(&cmds, i915_mmio_reg_offset(CACHE_MODE_0_GEN7)); + batch_add(&cmds, 0xffff0000); + batch_add(&cmds, i915_mmio_reg_offset(CACHE_MODE_1)); + batch_add(&cmds, 0xffff0000 | PIXEL_SUBSPAN_COLLECT_OPT_DISABLE); + gen7_emit_pipeline_invalidate(&cmds); gen7_emit_pipeline_flush(&cmds); + + /* Switch to the media pipeline and our base address */ + gen7_emit_pipeline_invalidate(&cmds); batch_add(&cmds, PIPELINE_SELECT | PIPELINE_SELECT_MEDIA); batch_add(&cmds, MI_NOOP); - gen7_emit_state_base_address(&cmds, interface_descriptor); + gen7_emit_pipeline_invalidate(&cmds); + gen7_emit_pipeline_flush(&cmds); + gen7_emit_state_base_address(&cmds, descriptors); + gen7_emit_pipeline_invalidate(&cmds); + /* Set the clear-residual kernel state */ gen7_emit_vfe_state(&cmds, bv, urb_size - 1, 0, 0); + gen7_emit_interface_descriptor_load(&cmds, descriptors, desc_count); - gen7_emit_interface_descriptor_load(&cmds, - interface_descriptor, - desc_count); - - for (i = 0; i < bv->max_primitives; i++) + /* Execute the kernel on all HW threads */ + for (i = 0; i < num_primitives(bv); i++) gen7_emit_media_object(&cmds, i); batch_add(&cmds, MI_BATCH_BUFFER_END); @@ -385,15 +432,15 @@ batch_get_defaults(engine->i915, &bv); if (!vma) - return bv.max_size; + return bv.size; - GEM_BUG_ON(vma->obj->base.size < bv.max_size); + GEM_BUG_ON(vma->obj->base.size < bv.size); batch = i915_gem_object_pin_map(vma->obj, I915_MAP_WC); if (IS_ERR(batch)) return PTR_ERR(batch); - emit_batch(vma, memset(batch, 0, bv.max_size), &bv); + emit_batch(vma, memset(batch, 0, bv.size), &bv); i915_gem_object_flush_map(vma->obj); i915_gem_object_unpin_map(vma->obj); --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_engine.h +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_engine.h @@ -357,4 +357,13 @@ return intel_engine_has_preemption(engine); } +static inline bool +intel_engine_has_heartbeat(const struct intel_engine_cs *engine) +{ + if (!IS_ACTIVE(CONFIG_DRM_I915_HEARTBEAT_INTERVAL)) + return false; + + return READ_ONCE(engine->props.heartbeat_interval_ms); +} + #endif /* _INTEL_RINGBUFFER_H_ */ --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -370,7 +370,8 @@ * instances. */ if ((INTEL_GEN(i915) >= 11 && - RUNTIME_INFO(i915)->vdbox_sfc_access & engine->mask) || + (RUNTIME_INFO(i915)->vdbox_sfc_access & + BIT(engine->instance))) || (INTEL_GEN(i915) >= 9 && engine->instance == 0)) engine->uabi_capabilities |= I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c @@ -150,36 +150,82 @@ INIT_DELAYED_WORK(&engine->heartbeat.work, heartbeat); } +static int __intel_engine_pulse(struct intel_engine_cs *engine) +{ + struct i915_sched_attr attr = { .priority = I915_PRIORITY_BARRIER }; + struct intel_context *ce = engine->kernel_context; + struct i915_request *rq; + + lockdep_assert_held(&ce->timeline->mutex); + GEM_BUG_ON(!intel_engine_has_preemption(engine)); + GEM_BUG_ON(!intel_engine_pm_is_awake(engine)); + + intel_context_enter(ce); + rq = __i915_request_create(ce, GFP_NOWAIT | __GFP_NOWARN); + intel_context_exit(ce); + if (IS_ERR(rq)) + return PTR_ERR(rq); + + __set_bit(I915_FENCE_FLAG_SENTINEL, &rq->fence.flags); + idle_pulse(engine, rq); + + __i915_request_commit(rq); + __i915_request_queue(rq, &attr); + GEM_BUG_ON(rq->sched.attr.priority < I915_PRIORITY_BARRIER); + + return 0; +} + +static unsigned long set_heartbeat(struct intel_engine_cs *engine, + unsigned long delay) +{ + unsigned long old; + + old = xchg(&engine->props.heartbeat_interval_ms, delay); + if (delay) + intel_engine_unpark_heartbeat(engine); + else + intel_engine_park_heartbeat(engine); + + return old; +} + int intel_engine_set_heartbeat(struct intel_engine_cs *engine, unsigned long delay) { - int err; + struct intel_context *ce = engine->kernel_context; + int err = 0; - /* Send one last pulse before to cleanup persistent hogs */ - if (!delay && IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT)) { - err = intel_engine_pulse(engine); - if (err) - return err; - } + if (!delay && !intel_engine_has_preempt_reset(engine)) + return -ENODEV; + + intel_engine_pm_get(engine); + + err = mutex_lock_interruptible(&ce->timeline->mutex); + if (err) + goto out_rpm; - WRITE_ONCE(engine->props.heartbeat_interval_ms, delay); + if (delay != engine->props.heartbeat_interval_ms) { + unsigned long saved = set_heartbeat(engine, delay); - if (intel_engine_pm_get_if_awake(engine)) { - if (delay) - intel_engine_unpark_heartbeat(engine); - else - intel_engine_park_heartbeat(engine); - intel_engine_pm_put(engine); + /* recheck current execution */ + if (intel_engine_has_preemption(engine)) { + err = __intel_engine_pulse(engine); + if (err) + set_heartbeat(engine, saved); + } } - return 0; + mutex_unlock(&ce->timeline->mutex); + +out_rpm: + intel_engine_pm_put(engine); + return err; } int intel_engine_pulse(struct intel_engine_cs *engine) { - struct i915_sched_attr attr = { .priority = I915_PRIORITY_BARRIER }; struct intel_context *ce = engine->kernel_context; - struct i915_request *rq; int err; if (!intel_engine_has_preemption(engine)) @@ -188,30 +234,12 @@ if (!intel_engine_pm_get_if_awake(engine)) return 0; - if (mutex_lock_interruptible(&ce->timeline->mutex)) { - err = -EINTR; - goto out_rpm; + err = -EINTR; + if (!mutex_lock_interruptible(&ce->timeline->mutex)) { + err = __intel_engine_pulse(engine); + mutex_unlock(&ce->timeline->mutex); } - intel_context_enter(ce); - rq = __i915_request_create(ce, GFP_NOWAIT | __GFP_NOWARN); - intel_context_exit(ce); - if (IS_ERR(rq)) { - err = PTR_ERR(rq); - goto out_unlock; - } - - __set_bit(I915_FENCE_FLAG_SENTINEL, &rq->fence.flags); - idle_pulse(engine, rq); - - __i915_request_commit(rq); - __i915_request_queue(rq, &attr); - GEM_BUG_ON(rq->sched.attr.priority < I915_PRIORITY_BARRIER); - err = 0; - -out_unlock: - mutex_unlock(&ce->timeline->mutex); -out_rpm: intel_engine_pm_put(engine); return err; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_ggtt.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_ggtt.c @@ -514,16 +514,39 @@ mutex_init(&ggtt->error_mutex); if (ggtt->mappable_end) { - /* Reserve a mappable slot for our lockless error capture */ - ret = drm_mm_insert_node_in_range(&ggtt->vm.mm, - &ggtt->error_capture, - PAGE_SIZE, 0, - I915_COLOR_UNEVICTABLE, - 0, ggtt->mappable_end, - DRM_MM_INSERT_LOW); - if (ret) - return ret; + /* + * Reserve a mappable slot for our lockless error capture. + * + * We strongly prefer taking address 0x0 in order to protect + * other critical buffers against accidental overwrites, + * as writing to address 0 is a very common mistake. + * + * Since 0 may already be in use by the system (e.g. the BIOS + * framebuffer), we let the reservation fail quietly and hope + * 0 remains reserved always. + * + * If we fail to reserve 0, and then fail to find any space + * for an error-capture, remain silent. We can afford not + * to reserve an error_capture node as we have fallback + * paths, and we trust that 0 will remain reserved. However, + * the only likely reason for failure to insert is a driver + * bug, which we expect to cause other failures... + */ + ggtt->error_capture.size = I915_GTT_PAGE_SIZE; + ggtt->error_capture.color = I915_COLOR_UNEVICTABLE; + if (drm_mm_reserve_node(&ggtt->vm.mm, &ggtt->error_capture)) + drm_mm_insert_node_in_range(&ggtt->vm.mm, + &ggtt->error_capture, + ggtt->error_capture.size, 0, + ggtt->error_capture.color, + 0, ggtt->mappable_end, + DRM_MM_INSERT_LOW); } + if (drm_mm_node_allocated(&ggtt->error_capture)) + drm_dbg(&ggtt->vm.i915->drm, + "Reserved GGTT:[%llx, %llx] for use by error capture\n", + ggtt->error_capture.start, + ggtt->error_capture.start + ggtt->error_capture.size); /* * The upper portion of the GuC address space has a sizeable hole @@ -536,9 +559,9 @@ /* Clear any non-preallocated blocks */ drm_mm_for_each_hole(entry, &ggtt->vm.mm, hole_start, hole_end) { - drm_dbg_kms(&ggtt->vm.i915->drm, - "clearing unused GTT space: [%lx, %lx]\n", - hole_start, hole_end); + drm_dbg(&ggtt->vm.i915->drm, + "clearing unused GTT space: [%lx, %lx]\n", + hole_start, hole_end); ggtt->vm.clear_range(&ggtt->vm, hole_start, hole_end - hole_start); } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c @@ -316,7 +316,18 @@ WRITE_ONCE(fence->vma, NULL); vma->fence = NULL; - with_intel_runtime_pm_if_in_use(fence_to_uncore(fence)->rpm, wakeref) + /* + * Skip the write to HW if and only if the device is currently + * suspended. + * + * If the driver does not currently hold a wakeref (if_in_use == 0), + * the device may currently be runtime suspended, or it may be woken + * up before the suspend takes place. If the device is not suspended + * (powered down) and we skip clearing the fence register, the HW is + * left in an undefined state where we may end up with multiple + * registers overlapping. + */ + with_intel_runtime_pm_if_active(fence_to_uncore(fence)->rpm, wakeref) fence_write(fence); } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_gt.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_gt.c @@ -616,6 +616,11 @@ void intel_gt_driver_release(struct intel_gt *gt) { struct i915_address_space *vm; + intel_wakeref_t wakeref; + + /* Scrub all HW state upon release */ + with_intel_runtime_pm(gt->uncore->rpm, wakeref) + __intel_gt_reset(gt, ALL_ENGINES); vm = fetch_and_zero(>->vm); if (vm) /* FIXME being called twice on error paths :( */ --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_lrc.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1136,9 +1136,8 @@ /* Check in case we rollback so far we wrap [size/2] */ if (intel_ring_direction(rq->ring, - intel_ring_wrap(rq->ring, - rq->tail), - rq->ring->tail) > 0) + rq->tail, + rq->ring->tail + 8) > 0) rq->context->lrc.desc |= CTX_DESC_FORCE_RESTORE; active = rq; @@ -2755,6 +2754,9 @@ static bool execlists_hold(struct intel_engine_cs *engine, struct i915_request *rq) { + if (i915_request_on_hold(rq)) + return false; + spin_lock_irq(&engine->active.lock); if (i915_request_completed(rq)) { /* too late! */ @@ -3130,8 +3132,10 @@ spin_unlock_irqrestore(&engine->active.lock, flags); /* Recheck after serialising with direct-submission */ - if (unlikely(timeout && preempt_timeout(engine))) + if (unlikely(timeout && preempt_timeout(engine))) { + cancel_timer(&engine->execlists.preempt); execlists_reset(engine, "preemption time out"); + } } } @@ -3493,6 +3497,19 @@ .destroy = execlists_context_destroy, }; +static u32 hwsp_offset(const struct i915_request *rq) +{ + const struct intel_timeline_cacheline *cl; + + /* Before the request is executed, the timeline/cachline is fixed */ + + cl = rcu_dereference_protected(rq->hwsp_cacheline, 1); + if (cl) + return cl->ggtt_offset; + + return rcu_dereference_protected(rq->timeline, 1)->hwsp_offset; +} + static int gen8_emit_init_breadcrumb(struct i915_request *rq) { u32 *cs; @@ -3515,7 +3532,7 @@ *cs++ = MI_NOOP; *cs++ = MI_STORE_DWORD_IMM_GEN4 | MI_USE_GGTT; - *cs++ = i915_request_timeline(rq)->hwsp_offset; + *cs++ = hwsp_offset(rq); *cs++ = 0; *cs++ = rq->fence.seqno - 1; @@ -3863,6 +3880,9 @@ static void lrc_destroy_wa_ctx(struct intel_engine_cs *engine) { i915_vma_unpin_and_release(&engine->wa_ctx.vma, 0); + + /* Called on error unwind, clear all flags to prevent further use */ + memset(&engine->wa_ctx, 0, sizeof(engine->wa_ctx)); } typedef u32 *(*wa_bb_func_t)(struct intel_engine_cs *engine, u32 *batch); @@ -4820,11 +4840,9 @@ return gen8_emit_wa_tail(request, cs); } -static u32 *emit_xcs_breadcrumb(struct i915_request *request, u32 *cs) +static u32 *emit_xcs_breadcrumb(struct i915_request *rq, u32 *cs) { - u32 addr = i915_request_active_timeline(request)->hwsp_offset; - - return gen8_emit_ggtt_write(cs, request->fence.seqno, addr, 0); + return gen8_emit_ggtt_write(cs, rq->fence.seqno, hwsp_offset(rq), 0); } static u32 *gen8_emit_fini_breadcrumb(struct i915_request *rq, u32 *cs) @@ -4843,7 +4861,7 @@ /* XXX flush+write+CS_STALL all in one upsets gem_concurrent_blt:kbl */ cs = gen8_emit_ggtt_write_rcs(cs, request->fence.seqno, - i915_request_active_timeline(request)->hwsp_offset, + hwsp_offset(request), PIPE_CONTROL_FLUSH_ENABLE | PIPE_CONTROL_CS_STALL); @@ -4855,7 +4873,7 @@ { cs = gen8_emit_ggtt_write_rcs(cs, request->fence.seqno, - i915_request_active_timeline(request)->hwsp_offset, + hwsp_offset(request), PIPE_CONTROL_CS_STALL | PIPE_CONTROL_TILE_CACHE_FLUSH | PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH | @@ -4925,7 +4943,7 @@ { cs = gen12_emit_ggtt_write_rcs(cs, request->fence.seqno, - i915_request_active_timeline(request)->hwsp_offset, + hwsp_offset(request), PIPE_CONTROL0_HDC_PIPELINE_FLUSH, PIPE_CONTROL_CS_STALL | PIPE_CONTROL_TILE_CACHE_FLUSH | --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_mocs.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_mocs.c @@ -59,8 +59,7 @@ #define _L3_CACHEABILITY(value) ((value) << 4) /* Helper defines */ -#define GEN9_NUM_MOCS_ENTRIES 62 /* 62 out of 64 - 63 & 64 are reserved. */ -#define GEN11_NUM_MOCS_ENTRIES 64 /* 63-64 are reserved, but configured. */ +#define GEN9_NUM_MOCS_ENTRIES 64 /* 63-64 are reserved, but configured. */ /* (e)LLC caching options */ /* @@ -131,7 +130,19 @@ GEN9_MOCS_ENTRIES, MOCS_ENTRY(I915_MOCS_CACHED, LE_3_WB | LE_TC_2_LLC_ELLC | LE_LRUM(3), - L3_3_WB) + L3_3_WB), + + /* + * mocs:63 + * - used by the L3 for all of its evictions. + * Thus it is expected to allow LLC cacheability to enable coherent + * flows to be maintained. + * - used to force L3 uncachable cycles. + * Thus it is expected to make the surface L3 uncacheable. + */ + MOCS_ENTRY(63, + LE_3_WB | LE_TC_1_LLC | LE_LRUM(3), + L3_1_UC) }; /* NOTE: the LE_TGT_CACHE is not used on Broxton */ @@ -234,11 +245,18 @@ L3_1_UC) static const struct drm_i915_mocs_entry tgl_mocs_table[] = { - /* Base - Error (Reserved for Non-Use) */ - MOCS_ENTRY(0, 0x0, 0x0), - /* Base - Reserved */ - MOCS_ENTRY(1, 0x0, 0x0), - + /* + * NOTE: + * Reserved and unspecified MOCS indices have been set to (L3 + LCC). + * These reserved entries should never be used, they may be changed + * to low performant variants with better coherency in the future if + * more entries are needed. We are programming index I915_MOCS_PTE(1) + * only, __init_mocs_table() take care to program unused index with + * this entry. + */ + MOCS_ENTRY(I915_MOCS_PTE, + LE_0_PAGETABLE | LE_TC_0_PAGETABLE, + L3_1_UC), GEN11_MOCS_ENTRIES, /* Implicitly enable L1 - HDC:L1 + L3 + LLC */ @@ -309,11 +327,11 @@ if (INTEL_GEN(i915) >= 12) { table->size = ARRAY_SIZE(tgl_mocs_table); table->table = tgl_mocs_table; - table->n_entries = GEN11_NUM_MOCS_ENTRIES; + table->n_entries = GEN9_NUM_MOCS_ENTRIES; } else if (IS_GEN(i915, 11)) { table->size = ARRAY_SIZE(icl_mocs_table); table->table = icl_mocs_table; - table->n_entries = GEN11_NUM_MOCS_ENTRIES; + table->n_entries = GEN9_NUM_MOCS_ENTRIES; } else if (IS_GEN9_BC(i915) || IS_CANNONLAKE(i915)) { table->size = ARRAY_SIZE(skl_mocs_table); table->n_entries = GEN9_NUM_MOCS_ENTRIES; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_ring_submission.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_ring_submission.c @@ -2083,7 +2083,7 @@ GEM_BUG_ON(timeline->hwsp_ggtt != engine->status_page.vma); - if (IS_HASWELL(engine->i915) && engine->class == RENDER_CLASS) { + if (IS_GEN(engine->i915, 7) && engine->class == RENDER_CLASS) { err = gen7_ctx_switch_bb_init(engine); if (err) goto err_ring_unpin; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_rps.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_rps.c @@ -883,6 +883,10 @@ adj = -2; rps->last_adj = adj; rps->cur_freq = max_t(int, rps->cur_freq + adj, rps->min_freq); + if (rps->cur_freq < rps->efficient_freq) { + rps->cur_freq = rps->efficient_freq; + rps->last_adj = 0; + } GT_TRACE(rps_to_gt(rps), "park:%x\n", rps->cur_freq); } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_timeline.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_timeline.c @@ -186,10 +186,14 @@ return cl; } -static void cacheline_acquire(struct intel_timeline_cacheline *cl) +static void cacheline_acquire(struct intel_timeline_cacheline *cl, + u32 ggtt_offset) { - if (cl) - i915_active_acquire(&cl->active); + if (!cl) + return; + + cl->ggtt_offset = ggtt_offset; + i915_active_acquire(&cl->active); } static void cacheline_release(struct intel_timeline_cacheline *cl) @@ -328,7 +332,7 @@ i915_ggtt_offset(tl->hwsp_ggtt) + offset_in_page(tl->hwsp_offset); - cacheline_acquire(tl->hwsp_cacheline); + cacheline_acquire(tl->hwsp_cacheline, tl->hwsp_offset); if (atomic_fetch_inc(&tl->pin_count)) { cacheline_release(tl->hwsp_cacheline); __i915_vma_unpin(tl->hwsp_ggtt); @@ -498,7 +502,7 @@ tl->hwsp_offset += i915_ggtt_offset(vma); - cacheline_acquire(cl); + cacheline_acquire(cl, tl->hwsp_offset); tl->hwsp_cacheline = cl; *seqno = timeline_advance(tl); @@ -556,9 +560,7 @@ if (err) goto out; - *hwsp = i915_ggtt_offset(cl->hwsp->vma) + - ptr_unmask_bits(cl->vaddr, CACHELINE_BITS) * CACHELINE_BYTES; - + *hwsp = cl->ggtt_offset; out: i915_active_release(&cl->active); return err; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/intel_timeline_types.h +++ linux-5.8.0/drivers/gpu/drm/i915/gt/intel_timeline_types.h @@ -94,6 +94,8 @@ struct intel_timeline_hwsp *hwsp; void *vaddr; + u32 ggtt_offset; + struct rcu_head rcu; }; --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/selftest_reset.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/selftest_reset.c @@ -3,9 +3,203 @@ * Copyright © 2018 Intel Corporation */ +#include + +#include "gem/i915_gem_stolen.h" + +#include "i915_memcpy.h" #include "i915_selftest.h" #include "selftests/igt_reset.h" #include "selftests/igt_atomic.h" +#include "selftests/igt_spinner.h" + +static int +__igt_reset_stolen(struct intel_gt *gt, + intel_engine_mask_t mask, + const char *msg) +{ + struct i915_ggtt *ggtt = >->i915->ggtt; + const struct resource *dsm = >->i915->dsm; + resource_size_t num_pages, page; + struct intel_engine_cs *engine; + intel_wakeref_t wakeref; + enum intel_engine_id id; + struct igt_spinner spin; + long max, count; + void *tmp; + u32 *crc; + int err; + + if (!drm_mm_node_allocated(&ggtt->error_capture)) + return 0; + + num_pages = resource_size(dsm) >> PAGE_SHIFT; + if (!num_pages) + return 0; + + crc = kmalloc_array(num_pages, sizeof(u32), GFP_KERNEL); + if (!crc) + return -ENOMEM; + + tmp = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!tmp) { + err = -ENOMEM; + goto err_crc; + } + + igt_global_reset_lock(gt); + wakeref = intel_runtime_pm_get(gt->uncore->rpm); + + err = igt_spinner_init(&spin, gt); + if (err) + goto err_lock; + + for_each_engine(engine, gt, id) { + struct intel_context *ce; + struct i915_request *rq; + + if (!(mask & engine->mask)) + continue; + + if (!intel_engine_can_store_dword(engine)) + continue; + + ce = intel_context_create(engine); + if (IS_ERR(ce)) { + err = PTR_ERR(ce); + goto err_spin; + } + rq = igt_spinner_create_request(&spin, ce, MI_ARB_CHECK); + intel_context_put(ce); + if (IS_ERR(rq)) { + err = PTR_ERR(rq); + goto err_spin; + } + i915_request_add(rq); + } + + for (page = 0; page < num_pages; page++) { + dma_addr_t dma = (dma_addr_t)dsm->start + (page << PAGE_SHIFT); + void __iomem *s; + void *in; + + ggtt->vm.insert_page(&ggtt->vm, dma, + ggtt->error_capture.start, + I915_CACHE_NONE, 0); + mb(); + + s = io_mapping_map_wc(&ggtt->iomap, + ggtt->error_capture.start, + PAGE_SIZE); + + if (!__drm_mm_interval_first(>->i915->mm.stolen, + page << PAGE_SHIFT, + ((page + 1) << PAGE_SHIFT) - 1)) + memset32(s, STACK_MAGIC, PAGE_SIZE / sizeof(u32)); + + in = s; + if (i915_memcpy_from_wc(tmp, s, PAGE_SIZE)) + in = tmp; + crc[page] = crc32_le(0, in, PAGE_SIZE); + + io_mapping_unmap(s); + } + mb(); + ggtt->vm.clear_range(&ggtt->vm, ggtt->error_capture.start, PAGE_SIZE); + + if (mask == ALL_ENGINES) { + intel_gt_reset(gt, mask, NULL); + } else { + for_each_engine(engine, gt, id) { + if (mask & engine->mask) + intel_engine_reset(engine, NULL); + } + } + + max = -1; + count = 0; + for (page = 0; page < num_pages; page++) { + dma_addr_t dma = (dma_addr_t)dsm->start + (page << PAGE_SHIFT); + void __iomem *s; + void *in; + u32 x; + + ggtt->vm.insert_page(&ggtt->vm, dma, + ggtt->error_capture.start, + I915_CACHE_NONE, 0); + mb(); + + s = io_mapping_map_wc(&ggtt->iomap, + ggtt->error_capture.start, + PAGE_SIZE); + + in = s; + if (i915_memcpy_from_wc(tmp, s, PAGE_SIZE)) + in = tmp; + x = crc32_le(0, in, PAGE_SIZE); + + if (x != crc[page] && + !__drm_mm_interval_first(>->i915->mm.stolen, + page << PAGE_SHIFT, + ((page + 1) << PAGE_SHIFT) - 1)) { + pr_debug("unused stolen page %pa modified by GPU reset\n", + &page); + if (count++ == 0) + igt_hexdump(in, PAGE_SIZE); + max = page; + } + + io_mapping_unmap(s); + } + mb(); + ggtt->vm.clear_range(&ggtt->vm, ggtt->error_capture.start, PAGE_SIZE); + + if (count > 0) { + pr_info("%s reset clobbered %ld pages of stolen, last clobber at page %ld\n", + msg, count, max); + } + if (max >= I915_GEM_STOLEN_BIAS >> PAGE_SHIFT) { + pr_err("%s reset clobbered unreserved area [above %x] of stolen; may cause severe faults\n", + msg, I915_GEM_STOLEN_BIAS); + err = -EINVAL; + } + +err_spin: + igt_spinner_fini(&spin); + +err_lock: + intel_runtime_pm_put(gt->uncore->rpm, wakeref); + igt_global_reset_unlock(gt); + + kfree(tmp); +err_crc: + kfree(crc); + return err; +} + +static int igt_reset_device_stolen(void *arg) +{ + return __igt_reset_stolen(arg, ALL_ENGINES, "device"); +} + +static int igt_reset_engines_stolen(void *arg) +{ + struct intel_gt *gt = arg; + struct intel_engine_cs *engine; + enum intel_engine_id id; + int err; + + if (!intel_has_reset_engine(gt)) + return 0; + + for_each_engine(engine, gt, id) { + err = __igt_reset_stolen(gt, engine->mask, engine->name); + if (err) + return err; + } + + return 0; +} static int igt_global_reset(void *arg) { @@ -164,6 +358,8 @@ { static const struct i915_subtest tests[] = { SUBTEST(igt_global_reset), /* attempt to recover GPU first */ + SUBTEST(igt_reset_device_stolen), + SUBTEST(igt_reset_engines_stolen), SUBTEST(igt_wedged_reset), SUBTEST(igt_atomic_reset), SUBTEST(igt_atomic_engine_reset), --- linux-5.8.0.orig/drivers/gpu/drm/i915/gt/shmem_utils.c +++ linux-5.8.0/drivers/gpu/drm/i915/gt/shmem_utils.c @@ -143,10 +143,13 @@ return PTR_ERR(page); vaddr = kmap(page); - if (write) + if (write) { memcpy(vaddr + offset_in_page(off), ptr, this); - else + set_page_dirty(page); + } else { memcpy(ptr, vaddr + offset_in_page(off), this); + } + mark_page_accessed(page); kunmap(page); put_page(page); --- linux-5.8.0.orig/drivers/gpu/drm/i915/gvt/display.c +++ linux-5.8.0/drivers/gpu/drm/i915/gvt/display.c @@ -173,21 +173,176 @@ int pipe; if (IS_BROXTON(dev_priv)) { + enum transcoder trans; + enum port port; + + /* Clear PIPE, DDI, PHY, HPD before setting new */ vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) &= ~(BXT_DE_PORT_HP_DDIA | BXT_DE_PORT_HP_DDIB | BXT_DE_PORT_HP_DDIC); + for_each_pipe(dev_priv, pipe) { + vgpu_vreg_t(vgpu, PIPECONF(pipe)) &= + ~(PIPECONF_ENABLE | I965_PIPECONF_ACTIVE); + vgpu_vreg_t(vgpu, DSPCNTR(pipe)) &= ~DISPLAY_PLANE_ENABLE; + vgpu_vreg_t(vgpu, SPRCTL(pipe)) &= ~SPRITE_ENABLE; + vgpu_vreg_t(vgpu, CURCNTR(pipe)) &= ~MCURSOR_MODE; + vgpu_vreg_t(vgpu, CURCNTR(pipe)) |= MCURSOR_MODE_DISABLE; + } + + for (trans = TRANSCODER_A; trans <= TRANSCODER_EDP; trans++) { + vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(trans)) &= + ~(TRANS_DDI_BPC_MASK | TRANS_DDI_MODE_SELECT_MASK | + TRANS_DDI_PORT_MASK | TRANS_DDI_FUNC_ENABLE); + } + vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(TRANSCODER_A)) &= + ~(TRANS_DDI_BPC_MASK | TRANS_DDI_MODE_SELECT_MASK | + TRANS_DDI_PORT_MASK); + + for (port = PORT_A; port <= PORT_C; port++) { + vgpu_vreg_t(vgpu, BXT_PHY_CTL(port)) &= + ~BXT_PHY_LANE_ENABLED; + vgpu_vreg_t(vgpu, BXT_PHY_CTL(port)) |= + (BXT_PHY_CMNLANE_POWERDOWN_ACK | + BXT_PHY_LANE_POWERDOWN_ACK); + + vgpu_vreg_t(vgpu, BXT_PORT_PLL_ENABLE(port)) &= + ~(PORT_PLL_POWER_STATE | PORT_PLL_POWER_ENABLE | + PORT_PLL_REF_SEL | PORT_PLL_LOCK | + PORT_PLL_ENABLE); + + vgpu_vreg_t(vgpu, DDI_BUF_CTL(port)) &= + ~(DDI_INIT_DISPLAY_DETECTED | + DDI_BUF_CTL_ENABLE); + vgpu_vreg_t(vgpu, DDI_BUF_CTL(port)) |= DDI_BUF_IS_IDLE; + } + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~(PORTA_HOTPLUG_ENABLE | PORTA_HOTPLUG_STATUS_MASK); + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~(PORTB_HOTPLUG_ENABLE | PORTB_HOTPLUG_STATUS_MASK); + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~(PORTC_HOTPLUG_ENABLE | PORTC_HOTPLUG_STATUS_MASK); + /* No hpd_invert set in vgpu vbt, need to clear invert mask */ + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= ~BXT_DDI_HPD_INVERT_MASK; + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) &= ~BXT_DE_PORT_HOTPLUG_MASK; + + vgpu_vreg_t(vgpu, BXT_P_CR_GT_DISP_PWRON) &= ~(BIT(0) | BIT(1)); + vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY0)) &= + ~PHY_POWER_GOOD; + vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY1)) &= + ~PHY_POWER_GOOD; + vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY0)) &= ~BIT(30); + vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY1)) &= ~BIT(30); + + vgpu_vreg_t(vgpu, SFUSE_STRAP) &= ~SFUSE_STRAP_DDIB_DETECTED; + vgpu_vreg_t(vgpu, SFUSE_STRAP) &= ~SFUSE_STRAP_DDIC_DETECTED; + + /* + * Only 1 PIPE enabled in current vGPU display and PIPE_A is + * tied to TRANSCODER_A in HW, so it's safe to assume PIPE_A, + * TRANSCODER_A can be enabled. PORT_x depends on the input of + * setup_virtual_dp_monitor. + */ + vgpu_vreg_t(vgpu, PIPECONF(PIPE_A)) |= PIPECONF_ENABLE; + vgpu_vreg_t(vgpu, PIPECONF(PIPE_A)) |= I965_PIPECONF_ACTIVE; + + /* + * Golden M/N are calculated based on: + * 24 bpp, 4 lanes, 154000 pixel clk (from virtual EDID), + * DP link clk 1620 MHz and non-constant_n. + * TODO: calculate DP link symbol clk and stream clk m/n. + */ + vgpu_vreg_t(vgpu, PIPE_DATA_M1(TRANSCODER_A)) = 63 << TU_SIZE_SHIFT; + vgpu_vreg_t(vgpu, PIPE_DATA_M1(TRANSCODER_A)) |= 0x5b425e; + vgpu_vreg_t(vgpu, PIPE_DATA_N1(TRANSCODER_A)) = 0x800000; + vgpu_vreg_t(vgpu, PIPE_LINK_M1(TRANSCODER_A)) = 0x3cd6e; + vgpu_vreg_t(vgpu, PIPE_LINK_N1(TRANSCODER_A)) = 0x80000; + + /* Enable per-DDI/PORT vreg */ if (intel_vgpu_has_monitor_on_port(vgpu, PORT_A)) { + vgpu_vreg_t(vgpu, BXT_P_CR_GT_DISP_PWRON) |= BIT(1); + vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY1)) |= + PHY_POWER_GOOD; + vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY1)) |= + BIT(30); + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_A)) |= + BXT_PHY_LANE_ENABLED; + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_A)) &= + ~(BXT_PHY_CMNLANE_POWERDOWN_ACK | + BXT_PHY_LANE_POWERDOWN_ACK); + vgpu_vreg_t(vgpu, BXT_PORT_PLL_ENABLE(PORT_A)) |= + (PORT_PLL_POWER_STATE | PORT_PLL_POWER_ENABLE | + PORT_PLL_REF_SEL | PORT_PLL_LOCK | + PORT_PLL_ENABLE); + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_A)) |= + (DDI_BUF_CTL_ENABLE | DDI_INIT_DISPLAY_DETECTED); + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_A)) &= + ~DDI_BUF_IS_IDLE; + vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)) |= + (TRANS_DDI_BPC_8 | TRANS_DDI_MODE_SELECT_DP_SST | + TRANS_DDI_FUNC_ENABLE); + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTA_HOTPLUG_ENABLE; vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= BXT_DE_PORT_HP_DDIA; } if (intel_vgpu_has_monitor_on_port(vgpu, PORT_B)) { + vgpu_vreg_t(vgpu, SFUSE_STRAP) |= SFUSE_STRAP_DDIB_DETECTED; + vgpu_vreg_t(vgpu, BXT_P_CR_GT_DISP_PWRON) |= BIT(0); + vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY0)) |= + PHY_POWER_GOOD; + vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY0)) |= + BIT(30); + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_B)) |= + BXT_PHY_LANE_ENABLED; + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_B)) &= + ~(BXT_PHY_CMNLANE_POWERDOWN_ACK | + BXT_PHY_LANE_POWERDOWN_ACK); + vgpu_vreg_t(vgpu, BXT_PORT_PLL_ENABLE(PORT_B)) |= + (PORT_PLL_POWER_STATE | PORT_PLL_POWER_ENABLE | + PORT_PLL_REF_SEL | PORT_PLL_LOCK | + PORT_PLL_ENABLE); + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_B)) |= + DDI_BUF_CTL_ENABLE; + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_B)) &= + ~DDI_BUF_IS_IDLE; + vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(TRANSCODER_A)) |= + (TRANS_DDI_BPC_8 | TRANS_DDI_MODE_SELECT_DP_SST | + (PORT_B << TRANS_DDI_PORT_SHIFT) | + TRANS_DDI_FUNC_ENABLE); + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTB_HOTPLUG_ENABLE; vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= BXT_DE_PORT_HP_DDIB; } if (intel_vgpu_has_monitor_on_port(vgpu, PORT_C)) { + vgpu_vreg_t(vgpu, SFUSE_STRAP) |= SFUSE_STRAP_DDIC_DETECTED; + vgpu_vreg_t(vgpu, BXT_P_CR_GT_DISP_PWRON) |= BIT(0); + vgpu_vreg_t(vgpu, BXT_PORT_CL1CM_DW0(DPIO_PHY0)) |= + PHY_POWER_GOOD; + vgpu_vreg_t(vgpu, BXT_PHY_CTL_FAMILY(DPIO_PHY0)) |= + BIT(30); + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_C)) |= + BXT_PHY_LANE_ENABLED; + vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_C)) &= + ~(BXT_PHY_CMNLANE_POWERDOWN_ACK | + BXT_PHY_LANE_POWERDOWN_ACK); + vgpu_vreg_t(vgpu, BXT_PORT_PLL_ENABLE(PORT_C)) |= + (PORT_PLL_POWER_STATE | PORT_PLL_POWER_ENABLE | + PORT_PLL_REF_SEL | PORT_PLL_LOCK | + PORT_PLL_ENABLE); + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_C)) |= + DDI_BUF_CTL_ENABLE; + vgpu_vreg_t(vgpu, DDI_BUF_CTL(PORT_C)) &= + ~DDI_BUF_IS_IDLE; + vgpu_vreg_t(vgpu, TRANS_DDI_FUNC_CTL(TRANSCODER_A)) |= + (TRANS_DDI_BPC_8 | TRANS_DDI_MODE_SELECT_DP_SST | + (PORT_B << TRANS_DDI_PORT_SHIFT) | + TRANS_DDI_FUNC_ENABLE); + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTC_HOTPLUG_ENABLE; vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= BXT_DE_PORT_HP_DDIC; } @@ -513,6 +668,63 @@ vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= PORTD_HOTPLUG_STATUS_MASK; intel_vgpu_trigger_virtual_event(vgpu, DP_D_HOTPLUG); + } else if (IS_BROXTON(i915)) { + if (intel_vgpu_has_monitor_on_port(vgpu, PORT_A)) { + if (connected) { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= + BXT_DE_PORT_HP_DDIA; + } else { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) &= + ~BXT_DE_PORT_HP_DDIA; + } + vgpu_vreg_t(vgpu, GEN8_DE_PORT_IIR) |= + BXT_DE_PORT_HP_DDIA; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~PORTA_HOTPLUG_STATUS_MASK; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTA_HOTPLUG_LONG_DETECT; + intel_vgpu_trigger_virtual_event(vgpu, DP_A_HOTPLUG); + } + if (intel_vgpu_has_monitor_on_port(vgpu, PORT_B)) { + if (connected) { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= + BXT_DE_PORT_HP_DDIB; + vgpu_vreg_t(vgpu, SFUSE_STRAP) |= + SFUSE_STRAP_DDIB_DETECTED; + } else { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) &= + ~BXT_DE_PORT_HP_DDIB; + vgpu_vreg_t(vgpu, SFUSE_STRAP) &= + ~SFUSE_STRAP_DDIB_DETECTED; + } + vgpu_vreg_t(vgpu, GEN8_DE_PORT_IIR) |= + BXT_DE_PORT_HP_DDIB; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~PORTB_HOTPLUG_STATUS_MASK; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTB_HOTPLUG_LONG_DETECT; + intel_vgpu_trigger_virtual_event(vgpu, DP_B_HOTPLUG); + } + if (intel_vgpu_has_monitor_on_port(vgpu, PORT_C)) { + if (connected) { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) |= + BXT_DE_PORT_HP_DDIC; + vgpu_vreg_t(vgpu, SFUSE_STRAP) |= + SFUSE_STRAP_DDIC_DETECTED; + } else { + vgpu_vreg_t(vgpu, GEN8_DE_PORT_ISR) &= + ~BXT_DE_PORT_HP_DDIC; + vgpu_vreg_t(vgpu, SFUSE_STRAP) &= + ~SFUSE_STRAP_DDIC_DETECTED; + } + vgpu_vreg_t(vgpu, GEN8_DE_PORT_IIR) |= + BXT_DE_PORT_HP_DDIC; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) &= + ~PORTC_HOTPLUG_STATUS_MASK; + vgpu_vreg_t(vgpu, PCH_PORT_HOTPLUG) |= + PORTC_HOTPLUG_LONG_DETECT; + intel_vgpu_trigger_virtual_event(vgpu, DP_C_HOTPLUG); + } } } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gvt/handlers.c +++ linux-5.8.0/drivers/gpu/drm/i915/gvt/handlers.c @@ -1658,6 +1658,34 @@ return 0; } +/** + * FixMe: + * If guest fills non-priv batch buffer on ApolloLake/Broxton as Mesa i965 did: + * 717e7539124d (i965: Use a WC map and memcpy for the batch instead of pwrite.) + * Due to the missing flush of bb filled by VM vCPU, host GPU hangs on executing + * these MI_BATCH_BUFFER. + * Temporarily workaround this by setting SNOOP bit for PAT3 used by PPGTT + * PML4 PTE: PAT(0) PCD(1) PWT(1). + * The performance is still expected to be low, will need further improvement. + */ +static int bxt_ppat_low_write(struct intel_vgpu *vgpu, unsigned int offset, + void *p_data, unsigned int bytes) +{ + u64 pat = + GEN8_PPAT(0, CHV_PPAT_SNOOP) | + GEN8_PPAT(1, 0) | + GEN8_PPAT(2, 0) | + GEN8_PPAT(3, CHV_PPAT_SNOOP) | + GEN8_PPAT(4, CHV_PPAT_SNOOP) | + GEN8_PPAT(5, CHV_PPAT_SNOOP) | + GEN8_PPAT(6, CHV_PPAT_SNOOP) | + GEN8_PPAT(7, CHV_PPAT_SNOOP); + + vgpu_vreg(vgpu, offset) = lower_32_bits(pat); + + return 0; +} + static int mmio_read_from_hw(struct intel_vgpu *vgpu, unsigned int offset, void *p_data, unsigned int bytes) { @@ -2807,7 +2835,7 @@ MMIO_DH(GEN6_PCODE_MAILBOX, D_BDW_PLUS, NULL, mailbox_write); - MMIO_D(GEN8_PRIVATE_PAT_LO, D_BDW_PLUS); + MMIO_D(GEN8_PRIVATE_PAT_LO, D_BDW_PLUS & ~D_BXT); MMIO_D(GEN8_PRIVATE_PAT_HI, D_BDW_PLUS); MMIO_D(GAMTARBMODE, D_BDW_PLUS); @@ -3134,7 +3162,7 @@ NULL, NULL); MMIO_D(GAMT_CHKN_BIT_REG, D_KBL | D_CFL); - MMIO_D(GEN9_CTX_PREEMPT_REG, D_SKL_PLUS); + MMIO_D(GEN9_CTX_PREEMPT_REG, D_SKL_PLUS & ~D_BXT); return 0; } @@ -3308,9 +3336,17 @@ MMIO_D(GEN8_PUSHBUS_SHIFT, D_BXT); MMIO_D(GEN6_GFXPAUSE, D_BXT); MMIO_DFH(GEN8_L3SQCREG1, D_BXT, F_CMD_ACCESS, NULL, NULL); + MMIO_DFH(GEN8_L3CNTLREG, D_BXT, F_CMD_ACCESS, NULL, NULL); + MMIO_DFH(_MMIO(0x20D8), D_BXT, F_CMD_ACCESS, NULL, NULL); + MMIO_F(HSW_CS_GPR(0), 0x40, F_CMD_ACCESS, 0, 0, D_BXT, NULL, NULL); + MMIO_F(_MMIO(0x12600), 0x40, F_CMD_ACCESS, 0, 0, D_BXT, NULL, NULL); + MMIO_F(BCS_GPR(0), 0x40, F_CMD_ACCESS, 0, 0, D_BXT, NULL, NULL); + MMIO_F(_MMIO(0x1a600), 0x40, F_CMD_ACCESS, 0, 0, D_BXT, NULL, NULL); MMIO_DFH(GEN9_CTX_PREEMPT_REG, D_BXT, F_CMD_ACCESS, NULL, NULL); + MMIO_DH(GEN8_PRIVATE_PAT_LO, D_BXT, NULL, bxt_ppat_low_write); + return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/gvt/mmio.c +++ linux-5.8.0/drivers/gpu/drm/i915/gvt/mmio.c @@ -277,6 +277,11 @@ vgpu_vreg_t(vgpu, BXT_PHY_CTL(PORT_C)) |= BXT_PHY_CMNLANE_POWERDOWN_ACK | BXT_PHY_LANE_POWERDOWN_ACK; + vgpu_vreg_t(vgpu, SKL_FUSE_STATUS) |= + SKL_FUSE_DOWNLOAD_STATUS | + SKL_FUSE_PG_DIST_STATUS(SKL_PG0) | + SKL_FUSE_PG_DIST_STATUS(SKL_PG1) | + SKL_FUSE_PG_DIST_STATUS(SKL_PG2); } } else { #define GVT_GEN8_MMIO_RESET_OFFSET (0x44200) --- linux-5.8.0.orig/drivers/gpu/drm/i915/gvt/vgpu.c +++ linux-5.8.0/drivers/gpu/drm/i915/gvt/vgpu.c @@ -367,6 +367,7 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt, struct intel_vgpu_creation_params *param) { + struct drm_i915_private *dev_priv = gvt->gt->i915; struct intel_vgpu *vgpu; int ret; @@ -434,7 +435,10 @@ if (ret) goto out_clean_sched_policy; - ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_D); + if (IS_BROADWELL(dev_priv) || IS_BROXTON(dev_priv)) + ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_B); + else + ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_D); if (ret) goto out_clean_sched_policy; --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_active.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_active.c @@ -498,24 +498,26 @@ int __i915_active_wait(struct i915_active *ref, int state) { - int err; - might_sleep(); - if (!i915_active_acquire_if_busy(ref)) - return 0; - /* Any fence added after the wait begins will not be auto-signaled */ - err = flush_lazy_signals(ref); - i915_active_release(ref); - if (err) - return err; - - if (!i915_active_is_idle(ref) && - ___wait_var_event(ref, i915_active_is_idle(ref), - state, 0, 0, schedule())) - return -EINTR; + if (i915_active_acquire_if_busy(ref)) { + int err; + err = flush_lazy_signals(ref); + i915_active_release(ref); + if (err) + return err; + + if (___wait_var_event(ref, i915_active_is_idle(ref), + state, 0, 0, schedule())) + return -EINTR; + } + + /* + * After the wait is complete, the caller may free the active. + * We have to flush any concurrent retirement before returning. + */ flush_work(&ref->work); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_cmd_parser.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_cmd_parser.c @@ -1136,7 +1136,7 @@ /* Returns a vmap'd pointer to dst_obj, which the caller must unmap */ static u32 *copy_batch(struct drm_i915_gem_object *dst_obj, struct drm_i915_gem_object *src_obj, - u32 offset, u32 length) + unsigned long offset, unsigned long length) { bool needs_clflush; void *dst, *src; @@ -1166,8 +1166,8 @@ } } if (IS_ERR(src)) { + unsigned long x, n, remain; void *ptr; - int x, n; /* * We can avoid clflushing partial cachelines before the write @@ -1177,14 +1177,15 @@ * We don't care about copying too much here as we only * validate up to the end of the batch. */ + remain = length; if (!(dst_obj->cache_coherent & I915_BO_CACHE_COHERENT_FOR_READ)) - length = round_up(length, + remain = round_up(remain, boot_cpu_data.x86_clflush_size); ptr = dst; x = offset_in_page(offset); - for (n = offset >> PAGE_SHIFT; length; n++) { - int len = min_t(int, length, PAGE_SIZE - x); + for (n = offset >> PAGE_SHIFT; remain; n++) { + int len = min(remain, PAGE_SIZE - x); src = kmap_atomic(i915_gem_object_get_page(src_obj, n)); if (needs_clflush) @@ -1193,17 +1194,25 @@ kunmap_atomic(src); ptr += len; - length -= len; + remain -= len; x = 0; } } i915_gem_object_unpin_pages(src_obj); + memset32(dst + length, 0, (dst_obj->base.size - length) / sizeof(u32)); + /* dst_obj is returned with vmap pinned */ return dst; } +static inline bool cmd_desc_is(const struct drm_i915_cmd_descriptor * const desc, + const u32 cmd) +{ + return desc->cmd.value == (cmd & desc->cmd.mask); +} + static bool check_cmd(const struct intel_engine_cs *engine, const struct drm_i915_cmd_descriptor *desc, const u32 *cmd, u32 length) @@ -1242,19 +1251,19 @@ * allowed mask/value pair given in the whitelist entry. */ if (reg->mask) { - if (desc->cmd.value == MI_LOAD_REGISTER_MEM) { + if (cmd_desc_is(desc, MI_LOAD_REGISTER_MEM)) { DRM_DEBUG("CMD: Rejected LRM to masked register 0x%08X\n", reg_addr); return false; } - if (desc->cmd.value == MI_LOAD_REGISTER_REG) { + if (cmd_desc_is(desc, MI_LOAD_REGISTER_REG)) { DRM_DEBUG("CMD: Rejected LRR to masked register 0x%08X\n", reg_addr); return false; } - if (desc->cmd.value == MI_LOAD_REGISTER_IMM(1) && + if (cmd_desc_is(desc, MI_LOAD_REGISTER_IMM(1)) && (offset + 2 > length || (cmd[offset + 1] & reg->mask) != reg->value)) { DRM_DEBUG("CMD: Rejected LRI to masked register 0x%08X\n", @@ -1386,11 +1395,6 @@ #define LENGTH_BIAS 2 -static bool shadow_needs_clflush(struct drm_i915_gem_object *obj) -{ - return !(obj->cache_coherent & I915_BO_CACHE_COHERENT_FOR_WRITE); -} - /** * intel_engine_cmd_parser() - parse a batch buffer for privilege violations * @engine: the engine on which the batch is to execute @@ -1408,8 +1412,8 @@ */ int intel_engine_cmd_parser(struct intel_engine_cs *engine, struct i915_vma *batch, - u32 batch_offset, - u32 batch_length, + unsigned long batch_offset, + unsigned long batch_length, struct i915_vma *shadow, bool trampoline) { @@ -1478,7 +1482,7 @@ break; } - if (desc->cmd.value == MI_BATCH_BUFFER_START) { + if (cmd_desc_is(desc, MI_BATCH_BUFFER_START)) { ret = check_bbstart(cmd, offset, length, batch_length, batch_addr, shadow_addr, jump_whitelist); @@ -1533,16 +1537,9 @@ ret = 0; /* allow execution */ } } - - if (shadow_needs_clflush(shadow->obj)) - drm_clflush_virt_range(batch_end, 8); } - if (shadow_needs_clflush(shadow->obj)) { - void *ptr = page_mask_bits(shadow->obj->mm.mapping); - - drm_clflush_virt_range(ptr, (void *)(cmd + 1) - ptr); - } + i915_gem_object_flush_map(shadow->obj); if (!IS_ERR_OR_NULL(jump_whitelist)) kfree(jump_whitelist); --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -323,6 +323,7 @@ } i915_gem_context_unlock_engines(ctx); + mutex_lock(&ctx->mutex); if (!IS_ERR_OR_NULL(ctx->file_priv)) { struct file_stats stats = { .vm = rcu_access_pointer(ctx->vm), @@ -343,6 +344,7 @@ print_file_stats(m, name, stats); } + mutex_unlock(&ctx->mutex); spin_lock(&i915->gem.contexts.lock); list_safe_reset_next(ctx, cn, link); --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_drv.c @@ -702,8 +702,6 @@ pci_set_master(pdev); - cpu_latency_qos_add_request(&dev_priv->pm_qos, PM_QOS_DEFAULT_VALUE); - intel_gt_init_workarounds(dev_priv); /* On the 945G/GM, the chipset reports the MSI capability on the @@ -748,7 +746,6 @@ err_msi: if (pdev->msi_enabled) pci_disable_msi(pdev); - cpu_latency_qos_remove_request(&dev_priv->pm_qos); err_mem_regions: intel_memory_regions_driver_release(dev_priv); err_ggtt: @@ -770,8 +767,6 @@ if (pdev->msi_enabled) pci_disable_msi(pdev); - - cpu_latency_qos_remove_request(&dev_priv->pm_qos); } /** --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-5.8.0/drivers/gpu/drm/i915/i915_drv.h @@ -33,6 +33,8 @@ #include #include +#include + #include #include #include @@ -901,9 +903,6 @@ bool display_irqs_enabled; - /* To control wakeup latency, e.g. for irq-driven dp aux transfers. */ - struct pm_qos_request pm_qos; - /* Sideband mailbox protection */ struct mutex sb_lock; struct pm_qos_request sb_qos; @@ -1195,6 +1194,9 @@ bool ipc_enabled; + /* Hack to bypass TMDS_OE write on DP->HDMI dongle */ + bool bypass_tmds_oe; + /* Used to save the pipe-to-encoder mapping for audio */ struct intel_encoder *av_enc_map[I915_MAX_PIPES]; @@ -1341,7 +1343,7 @@ { const unsigned int pi = __platform_mask_index(info, p); - return info->platform_mask[pi] & INTEL_SUBPLATFORM_BITS; + return info->platform_mask[pi] & ((1 << INTEL_SUBPLATFORM_BITS) - 1); } static __always_inline bool @@ -1667,7 +1669,9 @@ if (intel_iommu_gfx_mapped) return true; #endif - return false; + + /* Running as a guest, we assume the host is enforcing VT'd */ + return !hypervisor_is_type(X86_HYPER_NATIVE); } static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) @@ -1850,8 +1854,8 @@ void intel_engine_cleanup_cmd_parser(struct intel_engine_cs *engine); int intel_engine_cmd_parser(struct intel_engine_cs *engine, struct i915_vma *batch, - u32 batch_offset, - u32 batch_length, + unsigned long batch_offset, + unsigned long batch_length, struct i915_vma *shadow, bool trampoline); #define I915_CMD_PARSER_TRAMPOLINE_SIZE 8 --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_gpu_error.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_gpu_error.c @@ -310,6 +310,8 @@ if (zlib_deflate(zstream, Z_NO_FLUSH) != Z_OK) return -EIO; + + cond_resched(); } while (zstream->avail_in); /* Fallback to uncompressed if we increase size? */ @@ -396,6 +398,7 @@ if (!(wc && i915_memcpy_from_wc(ptr, src, PAGE_SIZE))) memcpy(ptr, src, PAGE_SIZE); dst->pages[dst->page_count++] = ptr; + cond_resched(); return 0; } @@ -1301,7 +1304,7 @@ } strcpy(c->name, name); - c->vma = i915_vma_get(vma); + c->vma = vma; /* reference held while active */ c->next = next; return c; @@ -1391,7 +1394,6 @@ compress)); i915_active_release(&vma->active); - i915_vma_put(vma); capture = this->next; kfree(this); --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_params.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_params.c @@ -85,8 +85,7 @@ i915_param_named_unsafe(enable_psr, int, 0600, "Enable PSR " - "(0=disabled, 1=enabled) " - "Default: -1 (use per-chip default)"); + "(-1=use per-chip default, 0=disabled [default], 1=enabled) "); i915_param_named_unsafe(force_probe, charp, 0400, "Force probe the driver for specified devices. " --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_params.h +++ linux-5.8.0/drivers/gpu/drm/i915/i915_params.h @@ -52,7 +52,7 @@ param(int, vbt_sdvo_panel_type, -1, 0400) \ param(int, enable_dc, -1, 0400) \ param(int, enable_fbc, -1, 0600) \ - param(int, enable_psr, -1, 0600) \ + param(int, enable_psr, 0, 0600) \ param(int, disable_power_well, -1, 0400) \ param(int, enable_ips, 1, 0600) \ param(int, invert_brightness, 0, 0600) \ --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_pci.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_pci.c @@ -388,6 +388,7 @@ GEN5_FEATURES, PLATFORM(INTEL_IRONLAKE), .is_mobile = 1, + .has_rps = true, .display.has_fbc = 1, }; --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_perf.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_perf.c @@ -600,7 +600,6 @@ { int report_size = stream->oa_buffer.format_size; struct drm_i915_perf_record_header header; - u32 sample_flags = stream->sample_flags; header.type = DRM_I915_PERF_RECORD_SAMPLE; header.pad = 0; @@ -614,10 +613,8 @@ return -EFAULT; buf += sizeof(header); - if (sample_flags & SAMPLE_OA_REPORT) { - if (copy_to_user(buf, report, report_size)) - return -EFAULT; - } + if (copy_to_user(buf, report, report_size)) + return -EFAULT; (*offset) += header.size; @@ -2644,7 +2641,7 @@ stream->perf->ops.oa_enable(stream); - if (stream->periodic) + if (stream->sample_flags & SAMPLE_OA_REPORT) hrtimer_start(&stream->poll_check_timer, ns_to_ktime(stream->poll_oa_period), HRTIMER_MODE_REL_PINNED); @@ -2707,7 +2704,7 @@ { stream->perf->ops.oa_disable(stream); - if (stream->periodic) + if (stream->sample_flags & SAMPLE_OA_REPORT) hrtimer_cancel(&stream->poll_check_timer); } @@ -2991,7 +2988,7 @@ * disabled stream as an error. In particular it might otherwise lead * to a deadlock for blocking file descriptors... */ - if (!stream->enabled) + if (!stream->enabled || !(stream->sample_flags & SAMPLE_OA_REPORT)) return -EIO; if (!(file->f_flags & O_NONBLOCK)) { --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_pmu.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_pmu.c @@ -184,13 +184,24 @@ return val; } -static void park_rc6(struct drm_i915_private *i915) +static void init_rc6(struct i915_pmu *pmu) { - struct i915_pmu *pmu = &i915->pmu; + struct drm_i915_private *i915 = container_of(pmu, typeof(*i915), pmu); + intel_wakeref_t wakeref; - if (pmu->enable & config_enabled_mask(I915_PMU_RC6_RESIDENCY)) + with_intel_runtime_pm(i915->gt.uncore->rpm, wakeref) { pmu->sample[__I915_SAMPLE_RC6].cur = __get_rc6(&i915->gt); + pmu->sample[__I915_SAMPLE_RC6_LAST_REPORTED].cur = + pmu->sample[__I915_SAMPLE_RC6].cur; + pmu->sleep_last = ktime_get(); + } +} + +static void park_rc6(struct drm_i915_private *i915) +{ + struct i915_pmu *pmu = &i915->pmu; + pmu->sample[__I915_SAMPLE_RC6].cur = __get_rc6(&i915->gt); pmu->sleep_last = ktime_get(); } @@ -201,6 +212,7 @@ return __get_rc6(gt); } +static void init_rc6(struct i915_pmu *pmu) { } static void park_rc6(struct drm_i915_private *i915) {} #endif @@ -441,8 +453,10 @@ static void i915_pmu_event_destroy(struct perf_event *event) { - WARN_ON(event->parent); - module_put(THIS_MODULE); + struct drm_i915_private *i915 = + container_of(event->pmu, typeof(*i915), pmu.base); + + drm_WARN_ON(&i915->drm, event->parent); } static int @@ -534,10 +548,8 @@ if (ret) return ret; - if (!event->parent) { - __module_get(THIS_MODULE); + if (!event->parent) event->destroy = i915_pmu_event_destroy; - } return 0; } @@ -610,10 +622,8 @@ container_of(event->pmu, typeof(*i915), pmu.base); unsigned int bit = event_enabled_bit(event); struct i915_pmu *pmu = &i915->pmu; - intel_wakeref_t wakeref; unsigned long flags; - wakeref = intel_runtime_pm_get(&i915->runtime_pm); spin_lock_irqsave(&pmu->lock, flags); /* @@ -624,13 +634,6 @@ GEM_BUG_ON(bit >= ARRAY_SIZE(pmu->enable_count)); GEM_BUG_ON(pmu->enable_count[bit] == ~0); - if (pmu->enable_count[bit] == 0 && - config_enabled_mask(I915_PMU_RC6_RESIDENCY) & BIT_ULL(bit)) { - pmu->sample[__I915_SAMPLE_RC6_LAST_REPORTED].cur = 0; - pmu->sample[__I915_SAMPLE_RC6].cur = __get_rc6(&i915->gt); - pmu->sleep_last = ktime_get(); - } - pmu->enable |= BIT_ULL(bit); pmu->enable_count[bit]++; @@ -671,8 +674,6 @@ * an existing non-zero value. */ local64_set(&event->hw.prev_count, __i915_pmu_event_read(event)); - - intel_runtime_pm_put(&i915->runtime_pm, wakeref); } static void i915_pmu_disable(struct perf_event *event) @@ -1058,8 +1059,10 @@ static void i915_pmu_unregister_cpuhp_state(struct i915_pmu *pmu) { - WARN_ON(pmu->cpuhp.slot == CPUHP_INVALID); - WARN_ON(cpuhp_state_remove_instance(pmu->cpuhp.slot, &pmu->cpuhp.node)); + struct drm_i915_private *i915 = container_of(pmu, typeof(*i915), pmu); + + drm_WARN_ON(&i915->drm, pmu->cpuhp.slot == CPUHP_INVALID); + drm_WARN_ON(&i915->drm, cpuhp_state_remove_instance(pmu->cpuhp.slot, &pmu->cpuhp.node)); cpuhp_remove_multi_state(pmu->cpuhp.slot); pmu->cpuhp.slot = CPUHP_INVALID; } @@ -1096,6 +1099,7 @@ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); pmu->timer.function = i915_sample; pmu->cpuhp.slot = CPUHP_INVALID; + init_rc6(pmu); if (!is_igp(i915)) { pmu->name = kasprintf(GFP_KERNEL, @@ -1121,6 +1125,7 @@ if (!pmu->base.attr_groups) goto err_attr; + pmu->base.module = THIS_MODULE; pmu->base.task_ctx_nr = perf_invalid_context; pmu->base.event_init = i915_pmu_event_init; pmu->base.add = i915_pmu_event_add; --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_request.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_request.c @@ -522,8 +522,13 @@ if (i915_request_completed(request)) goto xfer; + if (unlikely(intel_context_is_closed(request->context) && + !intel_engine_has_heartbeat(engine))) + intel_context_set_banned(request->context); + if (unlikely(intel_context_is_banned(request->context))) i915_request_set_error_once(request, -EIO); + if (unlikely(fatal_error(request->fence.error))) __i915_request_skip(request); --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_sw_fence.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_sw_fence.c @@ -164,9 +164,13 @@ do { list_for_each_entry_safe(pos, next, &x->head, entry) { - pos->func(pos, - TASK_NORMAL, fence->error, - &extra); + int wake_flags; + + wake_flags = fence->error; + if (pos->func == autoremove_wake_function) + wake_flags = 0; + + pos->func(pos, TASK_NORMAL, wake_flags, &extra); } if (list_empty(&extra)) --- linux-5.8.0.orig/drivers/gpu/drm/i915/i915_vma.c +++ linux-5.8.0/drivers/gpu/drm/i915/i915_vma.c @@ -315,8 +315,10 @@ { struct i915_vma_work *vw = container_of(work, typeof(*vw), base); - if (vw->pinned) + if (vw->pinned) { __i915_gem_object_unpin_pages(vw->pinned); + i915_gem_object_put(vw->pinned); + } } static const struct dma_fence_work_ops bind_ops = { @@ -432,7 +434,7 @@ if (vma->obj) { __i915_gem_object_pin_pages(vma->obj); - work->pinned = vma->obj; + work->pinned = i915_gem_object_get(vma->obj); } } else { ret = vma->ops->bind_vma(vma, cache_level, bind_flags); --- linux-5.8.0.orig/drivers/gpu/drm/i915/intel_runtime_pm.c +++ linux-5.8.0/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -405,12 +405,20 @@ } /** - * intel_runtime_pm_get_if_in_use - grab a runtime pm reference if device in use + * __intel_runtime_pm_get_if_active - grab a runtime pm reference if device is active * @rpm: the intel_runtime_pm structure + * @ignore_usecount: get a ref even if dev->power.usage_count is 0 * * This function grabs a device-level runtime pm reference if the device is - * already in use and ensures that it is powered up. It is illegal to try - * and access the HW should intel_runtime_pm_get_if_in_use() report failure. + * already active and ensures that it is powered up. It is illegal to try + * and access the HW should intel_runtime_pm_get_if_active() report failure. + * + * If @ignore_usecount=true, a reference will be acquired even if there is no + * user requiring the device to be powered up (dev->power.usage_count == 0). + * If the function returns false in this case then it's guaranteed that the + * device's runtime suspend hook has been called already or that it will be + * called (and hence it's also guaranteed that the device's runtime resume + * hook will be called eventually). * * Any runtime pm reference obtained by this function must have a symmetric * call to intel_runtime_pm_put() to release the reference again. @@ -418,7 +426,8 @@ * Returns: the wakeref cookie to pass to intel_runtime_pm_put(), evaluates * as True if the wakeref was acquired, or False otherwise. */ -intel_wakeref_t intel_runtime_pm_get_if_in_use(struct intel_runtime_pm *rpm) +static intel_wakeref_t __intel_runtime_pm_get_if_active(struct intel_runtime_pm *rpm, + bool ignore_usecount) { if (IS_ENABLED(CONFIG_PM)) { /* @@ -427,7 +436,7 @@ * function, since the power state is undefined. This applies * atm to the late/early system suspend/resume handlers. */ - if (pm_runtime_get_if_in_use(rpm->kdev) <= 0) + if (pm_runtime_get_if_active(rpm->kdev, ignore_usecount) <= 0) return 0; } @@ -436,6 +445,16 @@ return track_intel_runtime_pm_wakeref(rpm); } +intel_wakeref_t intel_runtime_pm_get_if_in_use(struct intel_runtime_pm *rpm) +{ + return __intel_runtime_pm_get_if_active(rpm, false); +} + +intel_wakeref_t intel_runtime_pm_get_if_active(struct intel_runtime_pm *rpm) +{ + return __intel_runtime_pm_get_if_active(rpm, true); +} + /** * intel_runtime_pm_get_noresume - grab a runtime pm reference * @rpm: the intel_runtime_pm structure --- linux-5.8.0.orig/drivers/gpu/drm/i915/intel_runtime_pm.h +++ linux-5.8.0/drivers/gpu/drm/i915/intel_runtime_pm.h @@ -177,6 +177,7 @@ intel_wakeref_t intel_runtime_pm_get(struct intel_runtime_pm *rpm); intel_wakeref_t intel_runtime_pm_get_if_in_use(struct intel_runtime_pm *rpm); +intel_wakeref_t intel_runtime_pm_get_if_active(struct intel_runtime_pm *rpm); intel_wakeref_t intel_runtime_pm_get_noresume(struct intel_runtime_pm *rpm); intel_wakeref_t intel_runtime_pm_get_raw(struct intel_runtime_pm *rpm); @@ -188,6 +189,10 @@ for ((wf) = intel_runtime_pm_get_if_in_use(rpm); (wf); \ intel_runtime_pm_put((rpm), (wf)), (wf) = 0) +#define with_intel_runtime_pm_if_active(rpm, wf) \ + for ((wf) = intel_runtime_pm_get_if_active(rpm); (wf); \ + intel_runtime_pm_put((rpm), (wf)), (wf) = 0) + void intel_runtime_pm_put_unchecked(struct intel_runtime_pm *rpm); #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM) void intel_runtime_pm_put(struct intel_runtime_pm *rpm, intel_wakeref_t wref); --- linux-5.8.0.orig/drivers/gpu/drm/i915/intel_uncore.c +++ linux-5.8.0/drivers/gpu/drm/i915/intel_uncore.c @@ -1209,6 +1209,18 @@ spin_unlock(&uncore->debug->lock); } +#define __vgpu_read(x) \ +static u##x \ +vgpu_read##x(struct intel_uncore *uncore, i915_reg_t reg, bool trace) { \ + u##x val = __raw_uncore_read##x(uncore, reg); \ + trace_i915_reg_rw(false, reg, val, sizeof(val), trace); \ + return val; \ +} +__vgpu_read(8) +__vgpu_read(16) +__vgpu_read(32) +__vgpu_read(64) + #define GEN2_READ_HEADER(x) \ u##x val = 0; \ assert_rpm_wakelock_held(uncore->rpm); @@ -1414,6 +1426,16 @@ #undef GEN6_WRITE_FOOTER #undef GEN6_WRITE_HEADER +#define __vgpu_write(x) \ +static void \ +vgpu_write##x(struct intel_uncore *uncore, i915_reg_t reg, u##x val, bool trace) { \ + trace_i915_reg_rw(true, reg, val, sizeof(val), trace); \ + __raw_uncore_write##x(uncore, reg, val); \ +} +__vgpu_write(8) +__vgpu_write(16) +__vgpu_write(32) + #define ASSIGN_RAW_WRITE_MMIO_VFUNCS(uncore, x) \ do { \ (uncore)->funcs.mmio_writeb = x##_write8; \ @@ -1733,7 +1755,10 @@ { GEM_BUG_ON(intel_uncore_has_forcewake(uncore)); - if (IS_GEN(uncore->i915, 5)) { + if (intel_vgpu_active(uncore->i915)) { + ASSIGN_RAW_WRITE_MMIO_VFUNCS(uncore, vgpu); + ASSIGN_RAW_READ_MMIO_VFUNCS(uncore, vgpu); + } else if (IS_GEN(uncore->i915, 5)) { ASSIGN_RAW_WRITE_MMIO_VFUNCS(uncore, gen5); ASSIGN_RAW_READ_MMIO_VFUNCS(uncore, gen5); } else { --- linux-5.8.0.orig/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +++ linux-5.8.0/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c @@ -1855,7 +1855,7 @@ vma = i915_vma_instance(out, vm, NULL); if (IS_ERR(vma)) { err = PTR_ERR(vma); - goto out_put_batch; + goto out_put_out; } err = i915_vma_pin(vma, 0, 0, --- linux-5.8.0.orig/drivers/gpu/drm/imx/dw_hdmi-imx.c +++ linux-5.8.0/drivers/gpu/drm/imx/dw_hdmi-imx.c @@ -209,9 +209,8 @@ if (!pdev->dev.of_node) return -ENODEV; - hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); - if (!hdmi) - return -ENOMEM; + hdmi = dev_get_drvdata(dev); + memset(hdmi, 0, sizeof(*hdmi)); match = of_match_node(dw_hdmi_imx_dt_ids, pdev->dev.of_node); plat_data = match->data; @@ -235,8 +234,6 @@ drm_encoder_helper_add(encoder, &dw_hdmi_imx_encoder_helper_funcs); drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); - platform_set_drvdata(pdev, hdmi); - hdmi->hdmi = dw_hdmi_bind(pdev, encoder, plat_data); /* @@ -266,6 +263,14 @@ static int dw_hdmi_imx_probe(struct platform_device *pdev) { + struct imx_hdmi *hdmi; + + hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); + if (!hdmi) + return -ENOMEM; + + platform_set_drvdata(pdev, hdmi); + return component_add(&pdev->dev, &dw_hdmi_imx_ops); } --- linux-5.8.0.orig/drivers/gpu/drm/imx/imx-drm-core.c +++ linux-5.8.0/drivers/gpu/drm/imx/imx-drm-core.c @@ -275,9 +275,10 @@ drm_kms_helper_poll_fini(drm); + component_unbind_all(drm->dev, drm); + drm_mode_config_cleanup(drm); - component_unbind_all(drm->dev, drm); dev_set_drvdata(dev, NULL); drm_dev_put(drm); --- linux-5.8.0.orig/drivers/gpu/drm/imx/imx-ldb.c +++ linux-5.8.0/drivers/gpu/drm/imx/imx-ldb.c @@ -304,18 +304,19 @@ { struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder); struct imx_ldb *ldb = imx_ldb_ch->ldb; + int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN; int mux, ret; drm_panel_disable(imx_ldb_ch->panel); - if (imx_ldb_ch == &ldb->channel[0]) + if (imx_ldb_ch == &ldb->channel[0] || dual) ldb->ldb_ctrl &= ~LDB_CH0_MODE_EN_MASK; - else if (imx_ldb_ch == &ldb->channel[1]) + if (imx_ldb_ch == &ldb->channel[1] || dual) ldb->ldb_ctrl &= ~LDB_CH1_MODE_EN_MASK; regmap_write(ldb->regmap, IOMUXC_GPR2, ldb->ldb_ctrl); - if (ldb->ldb_ctrl & LDB_SPLIT_MODE_EN) { + if (dual) { clk_disable_unprepare(ldb->clk[0]); clk_disable_unprepare(ldb->clk[1]); } @@ -590,9 +591,8 @@ int ret; int i; - imx_ldb = devm_kzalloc(dev, sizeof(*imx_ldb), GFP_KERNEL); - if (!imx_ldb) - return -ENOMEM; + imx_ldb = dev_get_drvdata(dev); + memset(imx_ldb, 0, sizeof(*imx_ldb)); imx_ldb->regmap = syscon_regmap_lookup_by_phandle(np, "gpr"); if (IS_ERR(imx_ldb->regmap)) { @@ -700,8 +700,6 @@ } } - dev_set_drvdata(dev, imx_ldb); - return 0; free_child: @@ -733,6 +731,14 @@ static int imx_ldb_probe(struct platform_device *pdev) { + struct imx_ldb *imx_ldb; + + imx_ldb = devm_kzalloc(&pdev->dev, sizeof(*imx_ldb), GFP_KERNEL); + if (!imx_ldb) + return -ENOMEM; + + platform_set_drvdata(pdev, imx_ldb); + return component_add(&pdev->dev, &imx_ldb_ops); } --- linux-5.8.0.orig/drivers/gpu/drm/imx/imx-tve.c +++ linux-5.8.0/drivers/gpu/drm/imx/imx-tve.c @@ -490,6 +490,13 @@ return 0; } +static void imx_tve_disable_regulator(void *data) +{ + struct imx_tve *tve = data; + + regulator_disable(tve->dac_reg); +} + static bool imx_tve_readable_reg(struct device *dev, unsigned int reg) { return (reg % 4 == 0) && (reg <= 0xdc); @@ -542,9 +549,8 @@ int irq; int ret; - tve = devm_kzalloc(dev, sizeof(*tve), GFP_KERNEL); - if (!tve) - return -ENOMEM; + tve = dev_get_drvdata(dev); + memset(tve, 0, sizeof(*tve)); tve->dev = dev; spin_lock_init(&tve->lock); @@ -614,6 +620,9 @@ ret = regulator_enable(tve->dac_reg); if (ret) return ret; + ret = devm_add_action_or_reset(dev, imx_tve_disable_regulator, tve); + if (ret) + return ret; } tve->clk = devm_clk_get(dev, "tve"); @@ -655,27 +664,23 @@ if (ret) return ret; - dev_set_drvdata(dev, tve); - return 0; } -static void imx_tve_unbind(struct device *dev, struct device *master, - void *data) -{ - struct imx_tve *tve = dev_get_drvdata(dev); - - if (!IS_ERR(tve->dac_reg)) - regulator_disable(tve->dac_reg); -} - static const struct component_ops imx_tve_ops = { .bind = imx_tve_bind, - .unbind = imx_tve_unbind, }; static int imx_tve_probe(struct platform_device *pdev) { + struct imx_tve *tve; + + tve = devm_kzalloc(&pdev->dev, sizeof(*tve), GFP_KERNEL); + if (!tve) + return -ENOMEM; + + platform_set_drvdata(pdev, tve); + return component_add(&pdev->dev, &imx_tve_ops); } --- linux-5.8.0.orig/drivers/gpu/drm/imx/ipuv3-crtc.c +++ linux-5.8.0/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -438,21 +438,13 @@ struct ipu_client_platformdata *pdata = dev->platform_data; struct drm_device *drm = data; struct ipu_crtc *ipu_crtc; - int ret; - ipu_crtc = devm_kzalloc(dev, sizeof(*ipu_crtc), GFP_KERNEL); - if (!ipu_crtc) - return -ENOMEM; + ipu_crtc = dev_get_drvdata(dev); + memset(ipu_crtc, 0, sizeof(*ipu_crtc)); ipu_crtc->dev = dev; - ret = ipu_crtc_init(ipu_crtc, pdata, drm); - if (ret) - return ret; - - dev_set_drvdata(dev, ipu_crtc); - - return 0; + return ipu_crtc_init(ipu_crtc, pdata, drm); } static void ipu_drm_unbind(struct device *dev, struct device *master, @@ -474,6 +466,7 @@ static int ipu_drm_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct ipu_crtc *ipu_crtc; int ret; if (!dev->platform_data) @@ -483,6 +476,12 @@ if (ret) return ret; + ipu_crtc = devm_kzalloc(dev, sizeof(*ipu_crtc), GFP_KERNEL); + if (!ipu_crtc) + return -ENOMEM; + + dev_set_drvdata(dev, ipu_crtc); + return component_add(dev, &ipu_crtc_ops); } --- linux-5.8.0.orig/drivers/gpu/drm/imx/parallel-display.c +++ linux-5.8.0/drivers/gpu/drm/imx/parallel-display.c @@ -326,9 +326,8 @@ u32 bus_format = 0; const char *fmt; - imxpd = devm_kzalloc(dev, sizeof(*imxpd), GFP_KERNEL); - if (!imxpd) - return -ENOMEM; + imxpd = dev_get_drvdata(dev); + memset(imxpd, 0, sizeof(*imxpd)); edidp = of_get_property(np, "edid", &imxpd->edid_len); if (edidp) @@ -359,8 +358,6 @@ if (ret) return ret; - dev_set_drvdata(dev, imxpd); - return 0; } @@ -382,6 +379,14 @@ static int imx_pd_probe(struct platform_device *pdev) { + struct imx_parallel_display *imxpd; + + imxpd = devm_kzalloc(&pdev->dev, sizeof(*imxpd), GFP_KERNEL); + if (!imxpd) + return -ENOMEM; + + platform_set_drvdata(pdev, imxpd); + return component_add(&pdev->dev, &imx_pd_ops); } --- linux-5.8.0.orig/drivers/gpu/drm/ingenic/ingenic-drm.c +++ linux-5.8.0/drivers/gpu/drm/ingenic/ingenic-drm.c @@ -386,7 +386,7 @@ addr = drm_fb_cma_get_gem_addr(state->fb, state, 0); width = state->src_w >> 16; height = state->src_h >> 16; - cpp = state->fb->format->cpp[plane->index]; + cpp = state->fb->format->cpp[0]; priv->dma_hwdesc->addr = addr; priv->dma_hwdesc->cmd = width * height * cpp / 4; --- linux-5.8.0.orig/drivers/gpu/drm/lima/lima_gem.c +++ linux-5.8.0/drivers/gpu/drm/lima/lima_gem.c @@ -69,8 +69,7 @@ return ret; if (bo->base.sgt) { - dma_unmap_sg(dev, bo->base.sgt->sgl, - bo->base.sgt->nents, DMA_BIDIRECTIONAL); + dma_unmap_sgtable(dev, bo->base.sgt, DMA_BIDIRECTIONAL, 0); sg_free_table(bo->base.sgt); } else { bo->base.sgt = kmalloc(sizeof(*bo->base.sgt), GFP_KERNEL); @@ -80,7 +79,13 @@ } } - dma_map_sg(dev, sgt.sgl, sgt.nents, DMA_BIDIRECTIONAL); + ret = dma_map_sgtable(dev, &sgt, DMA_BIDIRECTIONAL, 0); + if (ret) { + sg_free_table(&sgt); + kfree(bo->base.sgt); + bo->base.sgt = NULL; + return ret; + } *bo->base.sgt = sgt; --- linux-5.8.0.orig/drivers/gpu/drm/lima/lima_sched.c +++ linux-5.8.0/drivers/gpu/drm/lima/lima_sched.c @@ -200,7 +200,7 @@ int ret; /* resume GPU if it has been suspended by runtime PM */ - ret = pm_runtime_get_sync(ldev->dev); + ret = pm_runtime_resume_and_get(ldev->dev); if (ret < 0) return ret; --- linux-5.8.0.orig/drivers/gpu/drm/lima/lima_vm.c +++ linux-5.8.0/drivers/gpu/drm/lima/lima_vm.c @@ -124,7 +124,7 @@ if (err) goto err_out1; - for_each_sg_dma_page(bo->base.sgt->sgl, &sg_iter, bo->base.sgt->nents, 0) { + for_each_sgtable_dma_page(bo->base.sgt, &sg_iter, 0) { err = lima_vm_map_page(vm, sg_page_iter_dma_address(&sg_iter), bo_va->node.start + offset); if (err) @@ -298,8 +298,7 @@ mutex_lock(&vm->lock); base = bo_va->node.start + (pageoff << PAGE_SHIFT); - for_each_sg_dma_page(bo->base.sgt->sgl, &sg_iter, - bo->base.sgt->nents, pageoff) { + for_each_sgtable_dma_page(bo->base.sgt, &sg_iter, pageoff) { err = lima_vm_map_page(vm, sg_page_iter_dma_address(&sg_iter), base + offset); if (err) --- linux-5.8.0.orig/drivers/gpu/drm/mcde/mcde_drv.c +++ linux-5.8.0/drivers/gpu/drm/mcde/mcde_drv.c @@ -382,8 +382,8 @@ } irq = platform_get_irq(pdev, 0); - if (!irq) { - ret = -EINVAL; + if (irq < 0) { + ret = irq; goto clk_disable; } --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_disp_ovl.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_disp_ovl.c @@ -266,7 +266,7 @@ } con = ovl_fmt_convert(ovl, fmt); - if (state->base.fb->format->has_alpha) + if (state->base.fb && state->base.fb->format->has_alpha) con |= OVL_CON_AEN | OVL_CON_ALPHA; if (pending->rotation & DRM_MODE_REFLECT_Y) { --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_drm_crtc.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_drm_crtc.c @@ -485,7 +485,7 @@ mbox_flush(mtk_crtc->cmdq_client->chan, 2000); cmdq_handle = cmdq_pkt_create(mtk_crtc->cmdq_client, PAGE_SIZE); cmdq_pkt_clear_event(cmdq_handle, mtk_crtc->cmdq_event); - cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event); + cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, false); mtk_crtc_ddp_config(crtc, cmdq_handle); cmdq_pkt_flush_async(cmdq_handle, ddp_cmdq_cb, cmdq_handle); } @@ -834,13 +834,19 @@ drm_crtc_index(&mtk_crtc->base)); mtk_crtc->cmdq_client = NULL; } - ret = of_property_read_u32_index(priv->mutex_node, - "mediatek,gce-events", - drm_crtc_index(&mtk_crtc->base), - &mtk_crtc->cmdq_event); - if (ret) - dev_dbg(dev, "mtk_crtc %d failed to get mediatek,gce-events property\n", - drm_crtc_index(&mtk_crtc->base)); + + if (mtk_crtc->cmdq_client) { + ret = of_property_read_u32_index(priv->mutex_node, + "mediatek,gce-events", + drm_crtc_index(&mtk_crtc->base), + &mtk_crtc->cmdq_event); + if (ret) { + dev_dbg(dev, "mtk_crtc %d failed to get mediatek,gce-events property\n", + drm_crtc_index(&mtk_crtc->base)); + cmdq_mbox_destroy(mtk_crtc->cmdq_client); + mtk_crtc->cmdq_client = NULL; + } + } #endif return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c @@ -357,7 +357,7 @@ static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = { [MTK_DISP_OVL] = "ovl", - [MTK_DISP_OVL_2L] = "ovl_2l", + [MTK_DISP_OVL_2L] = "ovl-2l", [MTK_DISP_RDMA] = "rdma", [MTK_DISP_WDMA] = "wdma", [MTK_DISP_COLOR] = "color", @@ -496,6 +496,7 @@ #if IS_REACHABLE(CONFIG_MTK_CMDQ) if (of_address_to_resource(node, 0, &res) != 0) { dev_err(dev, "Missing reg in %s node\n", node->full_name); + put_device(&larb_pdev->dev); return -EINVAL; } comp->regs_pa = res.start; --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -165,7 +165,7 @@ ret = drmm_mode_config_init(drm); if (ret) - return ret; + goto put_mutex_dev; drm->mode_config.min_width = 64; drm->mode_config.min_height = 64; @@ -182,7 +182,7 @@ ret = component_bind_all(drm->dev, drm); if (ret) - return ret; + goto put_mutex_dev; /* * We currently support two fixed data streams, each optional, @@ -229,7 +229,7 @@ } if (!dma_dev->dma_parms) { ret = -ENOMEM; - goto err_component_unbind; + goto put_dma_dev; } ret = dma_set_max_seg_size(dma_dev, (unsigned int)DMA_BIT_MASK(32)); @@ -256,9 +256,12 @@ err_unset_dma_parms: if (private->dma_parms_allocated) dma_dev->dma_parms = NULL; +put_dma_dev: + put_device(private->dma_dev); err_component_unbind: component_unbind_all(drm->dev, drm); - +put_mutex_dev: + put_device(private->mutex_dev); return ret; } @@ -544,8 +547,13 @@ pm_runtime_disable(dev); err_node: of_node_put(private->mutex_node); - for (i = 0; i < DDP_COMPONENT_ID_MAX; i++) + for (i = 0; i < DDP_COMPONENT_ID_MAX; i++) { of_node_put(private->comp_node[i]); + if (private->ddp_comp[i]) { + put_device(private->ddp_comp[i]->larb_dev); + private->ddp_comp[i] = NULL; + } + } return ret; } --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_dsi.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -448,7 +448,10 @@ u32 horizontal_sync_active_byte; u32 horizontal_backporch_byte; u32 horizontal_frontporch_byte; + u32 horizontal_front_back_byte; + u32 data_phy_cycles_byte; u32 dsi_tmp_buf_bpp, data_phy_cycles; + u32 delta; struct mtk_phy_timing *timing = &dsi->phy_timing; struct videomode *vm = &dsi->vm; @@ -470,51 +473,30 @@ horizontal_sync_active_byte = (vm->hsync_len * dsi_tmp_buf_bpp - 10); if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - horizontal_backporch_byte = - (vm->hback_porch * dsi_tmp_buf_bpp - 10); + horizontal_backporch_byte = vm->hback_porch * dsi_tmp_buf_bpp - 10; else - horizontal_backporch_byte = ((vm->hback_porch + vm->hsync_len) * - dsi_tmp_buf_bpp - 10); + horizontal_backporch_byte = (vm->hback_porch + vm->hsync_len) * + dsi_tmp_buf_bpp - 10; data_phy_cycles = timing->lpx + timing->da_hs_prepare + timing->da_hs_zero + timing->da_hs_exit + 3; - if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) { - if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes + 18) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes + 18) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - - horizontal_backporch_byte = - horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes + 18) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - } else { - DRM_WARN("HFP less than d-phy, FPS will under 60Hz\n"); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } + delta = dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST ? 18 : 12; + + horizontal_frontporch_byte = vm->hfront_porch * dsi_tmp_buf_bpp; + horizontal_front_back_byte = horizontal_frontporch_byte + horizontal_backporch_byte; + data_phy_cycles_byte = data_phy_cycles * dsi->lanes + delta; + + if (horizontal_front_back_byte > data_phy_cycles_byte) { + horizontal_frontporch_byte -= data_phy_cycles_byte * + horizontal_frontporch_byte / + horizontal_front_back_byte; + + horizontal_backporch_byte -= data_phy_cycles_byte * + horizontal_backporch_byte / + horizontal_front_back_byte; } else { - if ((vm->hfront_porch + vm->hback_porch) * dsi_tmp_buf_bpp > - data_phy_cycles * dsi->lanes + 12) { - horizontal_frontporch_byte = - vm->hfront_porch * dsi_tmp_buf_bpp - - (data_phy_cycles * dsi->lanes + 12) * - vm->hfront_porch / - (vm->hfront_porch + vm->hback_porch); - horizontal_backporch_byte = horizontal_backporch_byte - - (data_phy_cycles * dsi->lanes + 12) * - vm->hback_porch / - (vm->hfront_porch + vm->hback_porch); - } else { - DRM_WARN("HFP less than d-phy, FPS will under 60Hz\n"); - horizontal_frontporch_byte = vm->hfront_porch * - dsi_tmp_buf_bpp; - } + DRM_WARN("HFP + HBP less than d-phy, FPS will under 60Hz\n"); } writel(horizontal_sync_active_byte, dsi->regs + DSI_HSA_WC); --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1507,25 +1507,30 @@ dev_err(dev, "Failed to get system configuration registers: %d\n", ret); - return ret; + goto put_device; } hdmi->sys_regmap = regmap; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); hdmi->regs = devm_ioremap_resource(dev, mem); - if (IS_ERR(hdmi->regs)) - return PTR_ERR(hdmi->regs); + if (IS_ERR(hdmi->regs)) { + ret = PTR_ERR(hdmi->regs); + goto put_device; + } remote = of_graph_get_remote_node(np, 1, 0); - if (!remote) - return -EINVAL; + if (!remote) { + ret = -EINVAL; + goto put_device; + } if (!of_device_is_compatible(remote, "hdmi-connector")) { hdmi->next_bridge = of_drm_find_bridge(remote); if (!hdmi->next_bridge) { dev_err(dev, "Waiting for external bridge\n"); of_node_put(remote); - return -EPROBE_DEFER; + ret = -EPROBE_DEFER; + goto put_device; } } @@ -1534,7 +1539,8 @@ dev_err(dev, "Failed to find ddc-i2c-bus node in %pOF\n", remote); of_node_put(remote); - return -EINVAL; + ret = -EINVAL; + goto put_device; } of_node_put(remote); @@ -1542,10 +1548,14 @@ of_node_put(i2c_np); if (!hdmi->ddc_adpt) { dev_err(dev, "Failed to get ddc i2c adapter by node\n"); - return -EINVAL; + ret = -EINVAL; + goto put_device; } return 0; +put_device: + put_device(hdmi->cec_dev); + return ret; } /* --- linux-5.8.0.orig/drivers/gpu/drm/mediatek/mtk_hdmi_phy.c +++ linux-5.8.0/drivers/gpu/drm/mediatek/mtk_hdmi_phy.c @@ -84,8 +84,9 @@ hdmi_phy->conf->hdmi_phy_disable_tmds) return &mtk_hdmi_phy_dev_ops; - dev_err(hdmi_phy->dev, "Failed to get dev ops of phy\n"); - return NULL; + if (hdmi_phy) + dev_err(hdmi_phy->dev, "Failed to get dev ops of phy\n"); + return NULL; } static void mtk_hdmi_phy_clk_get_data(struct mtk_hdmi_phy *hdmi_phy, --- linux-5.8.0.orig/drivers/gpu/drm/meson/meson_drv.c +++ linux-5.8.0/drivers/gpu/drm/meson/meson_drv.c @@ -400,15 +400,17 @@ meson_canvas_free(priv->canvas, priv->canvas_id_vd1_2); } + drm_dev_unregister(drm); + drm_kms_helper_poll_fini(drm); + drm_atomic_helper_shutdown(drm); + component_unbind_all(dev, drm); + drm_irq_uninstall(drm); + drm_dev_put(drm); + if (priv->afbcd.ops) { priv->afbcd.ops->reset(priv); meson_rdma_free(priv); } - - drm_dev_unregister(drm); - drm_irq_uninstall(drm); - drm_kms_helper_poll_fini(drm); - drm_dev_put(drm); } static const struct component_master_ops meson_drv_master_ops = { @@ -491,6 +493,16 @@ return count; } +static void meson_drv_shutdown(struct platform_device *pdev) +{ + struct meson_drm *priv = dev_get_drvdata(&pdev->dev); + struct drm_device *drm = priv->drm; + + DRM_DEBUG_DRIVER("\n"); + drm_kms_helper_poll_fini(drm); + drm_atomic_helper_shutdown(drm); +} + static int meson_drv_probe(struct platform_device *pdev) { struct component_match *match = NULL; @@ -562,6 +574,7 @@ static struct platform_driver meson_drm_platform_driver = { .probe = meson_drv_probe, + .shutdown = meson_drv_shutdown, .driver = { .name = "meson-drm", .of_match_table = dt_match, --- linux-5.8.0.orig/drivers/gpu/drm/meson/meson_dw_hdmi.c +++ linux-5.8.0/drivers/gpu/drm/meson/meson_dw_hdmi.c @@ -145,8 +145,6 @@ struct reset_control *hdmitx_apb; struct reset_control *hdmitx_ctrl; struct reset_control *hdmitx_phy; - struct clk *hdmi_pclk; - struct clk *venci_clk; struct regulator *hdmi_supply; u32 irq_stat; struct dw_hdmi *hdmi; @@ -938,6 +936,34 @@ } +static void meson_disable_regulator(void *data) +{ + regulator_disable(data); +} + +static void meson_disable_clk(void *data) +{ + clk_disable_unprepare(data); +} + +static int meson_enable_clk(struct device *dev, char *name) +{ + struct clk *clk; + int ret; + + clk = devm_clk_get(dev, name); + if (IS_ERR(clk)) { + dev_err(dev, "Unable to get %s pclk\n", name); + return PTR_ERR(clk); + } + + ret = clk_prepare_enable(clk); + if (!ret) + ret = devm_add_action_or_reset(dev, meson_disable_clk, clk); + + return ret; +} + static int meson_dw_hdmi_bind(struct device *dev, struct device *master, void *data) { @@ -986,6 +1012,10 @@ ret = regulator_enable(meson_dw_hdmi->hdmi_supply); if (ret) return ret; + ret = devm_add_action_or_reset(dev, meson_disable_regulator, + meson_dw_hdmi->hdmi_supply); + if (ret) + return ret; } meson_dw_hdmi->hdmitx_apb = devm_reset_control_get_exclusive(dev, @@ -1014,19 +1044,17 @@ if (IS_ERR(meson_dw_hdmi->hdmitx)) return PTR_ERR(meson_dw_hdmi->hdmitx); - meson_dw_hdmi->hdmi_pclk = devm_clk_get(dev, "isfr"); - if (IS_ERR(meson_dw_hdmi->hdmi_pclk)) { - dev_err(dev, "Unable to get HDMI pclk\n"); - return PTR_ERR(meson_dw_hdmi->hdmi_pclk); - } - clk_prepare_enable(meson_dw_hdmi->hdmi_pclk); - - meson_dw_hdmi->venci_clk = devm_clk_get(dev, "venci"); - if (IS_ERR(meson_dw_hdmi->venci_clk)) { - dev_err(dev, "Unable to get venci clk\n"); - return PTR_ERR(meson_dw_hdmi->venci_clk); - } - clk_prepare_enable(meson_dw_hdmi->venci_clk); + ret = meson_enable_clk(dev, "isfr"); + if (ret) + return ret; + + ret = meson_enable_clk(dev, "iahb"); + if (ret) + return ret; + + ret = meson_enable_clk(dev, "venci"); + if (ret) + return ret; dw_plat_data->regm = devm_regmap_init(dev, NULL, meson_dw_hdmi, &meson_dw_hdmi_regmap_config); @@ -1059,10 +1087,10 @@ encoder->possible_crtcs = BIT(0); - DRM_DEBUG_DRIVER("encoder initialized\n"); - meson_dw_hdmi_init(meson_dw_hdmi); + DRM_DEBUG_DRIVER("encoder initialized\n"); + /* Bridge / Connector */ dw_plat_data->mode_valid = dw_hdmi_mode_valid; --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/Kconfig +++ linux-5.8.0/drivers/gpu/drm/mgag200/Kconfig @@ -2,10 +2,8 @@ config DRM_MGAG200 tristate "Kernel modesetting driver for MGA G200 server engines" depends on DRM && PCI && MMU + select DRM_GEM_SHMEM_HELPER select DRM_KMS_HELPER - select DRM_VRAM_HELPER - select DRM_TTM - select DRM_TTM_HELPER help This is a KMS driver for the MGA G200 server chips, it does not support the original MGA G200 or any of the desktop --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/Makefile +++ linux-5.8.0/drivers/gpu/drm/mgag200/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only -mgag200-y := mgag200_main.o mgag200_mode.o mgag200_cursor.o \ +mgag200-y := mgag200_main.o mgag200_mode.o \ mgag200_drv.o mgag200_i2c.o mgag200_ttm.o obj-$(CONFIG_DRM_MGAG200) += mgag200.o --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_drv.c +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -22,15 +22,11 @@ * which then performs further device association and calls our graphics init * functions */ -int mgag200_modeset = -1; +int mgag200_modeset = -1; MODULE_PARM_DESC(modeset, "Disable/Enable modesetting"); module_param_named(modeset, mgag200_modeset, int, 0400); -int mgag200_hw_bug_no_startadd = -1; -MODULE_PARM_DESC(modeset, "HW does not interpret scanout-buffer start address correctly"); -module_param_named(hw_bug_no_startadd, mgag200_hw_bug_no_startadd, int, 0400); - static struct drm_driver driver; static const struct pci_device_id pciidlist[] = { @@ -101,46 +97,8 @@ DEFINE_DRM_GEM_FOPS(mgag200_driver_fops); -static bool mgag200_pin_bo_at_0(const struct mga_device *mdev) -{ - if (mgag200_hw_bug_no_startadd > 0) { - DRM_WARN_ONCE("Option hw_bug_no_startradd is enabled. Please " - "report the output of 'lspci -vvnn' to " - " if this " - "option is required to make mgag200 work " - "correctly on your system.\n"); - return true; - } else if (!mgag200_hw_bug_no_startadd) { - return false; - } - return mdev->flags & MGAG200_FLAG_HW_BUG_NO_STARTADD; -} - -int mgag200_driver_dumb_create(struct drm_file *file, - struct drm_device *dev, - struct drm_mode_create_dumb *args) -{ - struct mga_device *mdev = to_mga_device(dev); - unsigned long pg_align; - - if (WARN_ONCE(!dev->vram_mm, "VRAM MM not initialized")) - return -EINVAL; - - pg_align = 0ul; - - /* - * Aligning scanout buffers to the size of the video ram forces - * placement at offset 0. Works around a bug where HW does not - * respect 'startadd' field. - */ - if (mgag200_pin_bo_at_0(mdev)) - pg_align = PFN_UP(mdev->mc.vram_size); - - return drm_gem_vram_fill_create_dumb(file, dev, pg_align, 0, args); -} - static struct drm_driver driver = { - .driver_features = DRIVER_GEM | DRIVER_MODESET, + .driver_features = DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET, .fops = &mgag200_driver_fops, .name = DRIVER_NAME, .desc = DRIVER_DESC, @@ -148,10 +106,7 @@ .major = DRIVER_MAJOR, .minor = DRIVER_MINOR, .patchlevel = DRIVER_PATCHLEVEL, - .debugfs_init = drm_vram_mm_debugfs_init, - .dumb_create = mgag200_driver_dumb_create, - .dumb_map_offset = drm_gem_vram_driver_dumb_mmap_offset, - .gem_prime_mmap = drm_gem_prime_mmap, + DRM_GEM_SHMEM_DRIVER_OPS, }; static struct pci_driver mgag200_pci_driver = { --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_drv.h +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_drv.h @@ -18,7 +18,8 @@ #include #include #include -#include +#include +#include #include "mgag200_reg.h" @@ -32,8 +33,6 @@ #define DRIVER_MINOR 0 #define DRIVER_PATCHLEVEL 0 -#define MGAG200FB_CONN_LIMIT 1 - #define RREG8(reg) ioread8(((void __iomem *)mdev->rmmio) + (reg)) #define WREG8(reg, v) iowrite8(v, ((void __iomem *)mdev->rmmio) + (reg)) #define RREG32(reg) ioread32(((void __iomem *)mdev->rmmio) + (reg)) @@ -49,6 +48,12 @@ WREG8(ATTR_DATA, v); \ } while (0) \ +#define RREG_SEQ(reg, v) \ + do { \ + WREG8(MGAREG_SEQ_INDEX, reg); \ + v = RREG8(MGAREG_SEQ_DATA); \ + } while (0) \ + #define WREG_SEQ(reg, v) \ do { \ WREG8(MGAREG_SEQ_INDEX, reg); \ @@ -61,6 +66,11 @@ WREG8(MGAREG_CRTC_DATA, v); \ } while (0) \ +#define RREG_ECRT(reg, v) \ + do { \ + WREG8(MGAREG_CRTCEXT_INDEX, reg); \ + v = RREG8(MGAREG_CRTCEXT_DATA); \ + } while (0) \ #define WREG_ECRT(reg, v) \ do { \ @@ -92,18 +102,8 @@ #define MGAG200_MAX_FB_HEIGHT 4096 #define MGAG200_MAX_FB_WIDTH 4096 -#define MATROX_DPMS_CLEARED (-1) - -#define to_mga_crtc(x) container_of(x, struct mga_crtc, base) #define to_mga_connector(x) container_of(x, struct mga_connector, base) -struct mga_crtc { - struct drm_crtc base; - u8 lut_r[256], lut_g[256], lut_b[256]; - int last_dpms; - bool enabled; -}; - struct mga_i2c_chan { struct i2c_adapter adapter; struct drm_device *dev; @@ -116,11 +116,6 @@ struct mga_i2c_chan *i2c; }; -struct mga_cursor { - struct drm_gem_vram_object *gbo[2]; - unsigned int next_index; -}; - struct mga_mc { resource_size_t vram_size; resource_size_t vram_base; @@ -156,11 +151,9 @@ struct mga_mc mc; - struct mga_cursor cursor; - - size_t vram_fb_available; + void __iomem *vram; + size_t vram_fb_available; - bool suspended; enum mga_type type; int has_sdram; @@ -172,7 +165,7 @@ u32 unique_rev_id; struct mga_connector connector; - struct drm_encoder encoder; + struct drm_simple_display_pipe display_pipe; }; static inline struct mga_device *to_mga_device(struct drm_device *dev) @@ -207,10 +200,4 @@ void mgag200_mm_fini(struct mga_device *mdev); int mgag200_mmap(struct file *filp, struct vm_area_struct *vma); -int mgag200_cursor_init(struct mga_device *mdev); -void mgag200_cursor_fini(struct mga_device *mdev); -int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, - uint32_t handle, uint32_t width, uint32_t height); -int mgag200_crtc_cursor_move(struct drm_crtc *crtc, int x, int y); - #endif /* __MGAG200_DRV_H__ */ --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_main.c +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_main.c @@ -135,10 +135,6 @@ goto err_mgag200_mm_fini; } - ret = mgag200_cursor_init(mdev); - if (ret) - drm_err(dev, "Could not initialize cursors. Not doing hardware cursors.\n"); - return 0; err_mgag200_mm_fini: @@ -154,7 +150,6 @@ if (mdev == NULL) return; - mgag200_cursor_fini(mdev); mgag200_mm_fini(mdev); dev->dev_private = NULL; } --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_mode.c +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -11,10 +11,15 @@ #include #include +#include +#include #include +#include +#include #include #include #include +#include #include #include @@ -30,13 +35,18 @@ { struct drm_device *dev = crtc->dev; struct mga_device *mdev = to_mga_device(dev); - struct drm_framebuffer *fb = crtc->primary->fb; + struct drm_framebuffer *fb; u16 *r_ptr, *g_ptr, *b_ptr; int i; if (!crtc->enabled) return; + if (!mdev->display_pipe.plane.state) + return; + + fb = mdev->display_pipe.plane.state->fb; + r_ptr = crtc->gamma_store; g_ptr = r_ptr + crtc->gamma_size; b_ptr = g_ptr + crtc->gamma_size; @@ -704,6 +714,8 @@ static int mga_crtc_set_plls(struct mga_device *mdev, long clock) { + u8 misc; + switch(mdev->type) { case G200_SE_A: case G200_SE_B: @@ -724,6 +736,12 @@ return mga_g200er_set_plls(mdev, clock); break; } + + misc = RREG8(MGA_MISC_IN); + misc &= ~MGAREG_MISC_CLK_SEL_MASK; + misc |= MGAREG_MISC_CLK_SEL_MGA_MSK; + WREG8(MGA_MISC_OUT, misc); + return 0; } @@ -819,102 +837,91 @@ } /* - This is how the framebuffer base address is stored in g200 cards: - * Assume @offset is the gpu_addr variable of the framebuffer object - * Then addr is the number of _pixels_ (not bytes) from the start of - VRAM to the first pixel we want to display. (divided by 2 for 32bit - framebuffers) - * addr is stored in the CRTCEXT0, CRTCC and CRTCD registers - addr<20> -> CRTCEXT0<6> - addr<19-16> -> CRTCEXT0<3-0> - addr<15-8> -> CRTCC<7-0> - addr<7-0> -> CRTCD<7-0> - CRTCEXT0 has to be programmed last to trigger an update and make the - new addr variable take effect. + * This is how the framebuffer base address is stored in g200 cards: + * * Assume @offset is the gpu_addr variable of the framebuffer object + * * Then addr is the number of _pixels_ (not bytes) from the start of + * VRAM to the first pixel we want to display. (divided by 2 for 32bit + * framebuffers) + * * addr is stored in the CRTCEXT0, CRTCC and CRTCD registers + * addr<20> -> CRTCEXT0<6> + * addr<19-16> -> CRTCEXT0<3-0> + * addr<15-8> -> CRTCC<7-0> + * addr<7-0> -> CRTCD<7-0> + * + * CRTCEXT0 has to be programmed last to trigger an update and make the + * new addr variable take effect. */ -static void mga_set_start_address(struct drm_crtc *crtc, unsigned offset) +static void mgag200_set_startadd(struct mga_device *mdev, + unsigned long offset) { - struct mga_device *mdev = to_mga_device(crtc->dev); - u32 addr; - int count; - u8 crtcext0; - - while (RREG8(0x1fda) & 0x08); - while (!(RREG8(0x1fda) & 0x08)); - - count = RREG8(MGAREG_VCOUNT) + 2; - while (RREG8(MGAREG_VCOUNT) < count); - - WREG8(MGAREG_CRTCEXT_INDEX, 0); - crtcext0 = RREG8(MGAREG_CRTCEXT_DATA); - crtcext0 &= 0xB0; - addr = offset / 8; - /* Can't store addresses any higher than that... - but we also don't have more than 16MB of memory, so it should be fine. */ - WARN_ON(addr > 0x1fffff); - crtcext0 |= (!!(addr & (1<<20)))<<6; - WREG_CRT(0x0d, (u8)(addr & 0xff)); - WREG_CRT(0x0c, (u8)(addr >> 8) & 0xff); - WREG_ECRT(0x0, ((u8)(addr >> 16) & 0xf) | crtcext0); -} - -static int mga_crtc_do_set_base(struct drm_crtc *crtc, - struct drm_framebuffer *fb, - int x, int y, int atomic) -{ - struct drm_gem_vram_object *gbo; - int ret; - s64 gpu_addr; - - if (!atomic && fb) { - gbo = drm_gem_vram_of_gem(fb->obj[0]); - drm_gem_vram_unpin(gbo); - } + struct drm_device *dev = mdev->dev; + u32 startadd; + u8 crtcc, crtcd, crtcext0; - gbo = drm_gem_vram_of_gem(crtc->primary->fb->obj[0]); + startadd = offset / 8; - ret = drm_gem_vram_pin(gbo, DRM_GEM_VRAM_PL_FLAG_VRAM); - if (ret) - return ret; - gpu_addr = drm_gem_vram_offset(gbo); - if (gpu_addr < 0) { - ret = (int)gpu_addr; - goto err_drm_gem_vram_unpin; - } + /* + * Can't store addresses any higher than that, but we also + * don't have more than 16 MiB of memory, so it should be fine. + */ + drm_WARN_ON(dev, startadd > 0x1fffff); - mga_set_start_address(crtc, (u32)gpu_addr); + RREG_ECRT(0x00, crtcext0); - return 0; + crtcc = (startadd >> 8) & 0xff; + crtcd = startadd & 0xff; + crtcext0 &= 0xb0; + crtcext0 |= ((startadd >> 14) & BIT(6)) | + ((startadd >> 16) & 0x0f); -err_drm_gem_vram_unpin: - drm_gem_vram_unpin(gbo); - return ret; + WREG_CRT(0x0c, crtcc); + WREG_CRT(0x0d, crtcd); + WREG_ECRT(0x00, crtcext0); } -static int mga_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, - struct drm_framebuffer *old_fb) +static void mgag200_set_pci_regs(struct mga_device *mdev) { - return mga_crtc_do_set_base(crtc, old_fb, x, y, 0); + uint32_t option = 0, option2 = 0; + struct drm_device *dev = mdev->dev; + + switch (mdev->type) { + case G200_SE_A: + case G200_SE_B: + if (mdev->has_sdram) + option = 0x40049120; + else + option = 0x4004d120; + option2 = 0x00008000; + break; + case G200_WB: + case G200_EW3: + option = 0x41049120; + option2 = 0x0000b000; + break; + case G200_EV: + option = 0x00000120; + option2 = 0x0000b000; + break; + case G200_EH: + case G200_EH3: + option = 0x00000120; + option2 = 0x0000b000; + break; + case G200_ER: + break; + } + + if (option) + pci_write_config_dword(dev->pdev, PCI_MGA_OPTION, option); + + if (option2) + pci_write_config_dword(dev->pdev, PCI_MGA_OPTION2, option2); } -static int mga_crtc_mode_set(struct drm_crtc *crtc, - struct drm_display_mode *mode, - struct drm_display_mode *adjusted_mode, - int x, int y, struct drm_framebuffer *old_fb) +static void mgag200_set_dac_regs(struct mga_device *mdev) { - struct drm_device *dev = crtc->dev; - struct mga_device *mdev = to_mga_device(dev); - const struct drm_framebuffer *fb = crtc->primary->fb; - int hdisplay, hsyncstart, hsyncend, htotal; - int vdisplay, vsyncstart, vsyncend, vtotal; - int pitch; - int option = 0, option2 = 0; - int i; - unsigned char misc = 0; - unsigned char ext_vga[6]; - u8 bppshift; - - static unsigned char dacvalue[] = { + size_t i; + u8 dacvalue[] = { /* 0x00: */ 0, 0, 0, 0, 0, 0, 0x00, 0, /* 0x08: */ 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10: */ 0, 0, 0, 0, 0, 0, 0, 0, @@ -927,8 +934,6 @@ /* 0x48: */ 0, 0, 0, 0, 0, 0, 0, 0 }; - bppshift = mdev->bpp_shifts[fb->format->cpp[0] - 1]; - switch (mdev->type) { case G200_SE_A: case G200_SE_B: @@ -937,61 +942,26 @@ dacvalue[MGA1064_MISC_CTL] = MGA1064_MISC_CTL_DAC_EN | MGA1064_MISC_CTL_VGA8 | MGA1064_MISC_CTL_DAC_RAM_CS; - if (mdev->has_sdram) - option = 0x40049120; - else - option = 0x4004d120; - option2 = 0x00008000; break; case G200_WB: case G200_EW3: dacvalue[MGA1064_VREF_CTL] = 0x07; - option = 0x41049120; - option2 = 0x0000b000; break; case G200_EV: dacvalue[MGA1064_PIX_CLK_CTL] = MGA1064_PIX_CLK_CTL_SEL_PLL; dacvalue[MGA1064_MISC_CTL] = MGA1064_MISC_CTL_VGA8 | MGA1064_MISC_CTL_DAC_RAM_CS; - option = 0x00000120; - option2 = 0x0000b000; break; case G200_EH: case G200_EH3: dacvalue[MGA1064_MISC_CTL] = MGA1064_MISC_CTL_VGA8 | MGA1064_MISC_CTL_DAC_RAM_CS; - option = 0x00000120; - option2 = 0x0000b000; break; case G200_ER: break; } - switch (fb->format->cpp[0] * 8) { - case 8: - dacvalue[MGA1064_MUL_CTL] = MGA1064_MUL_CTL_8bits; - break; - case 16: - if (fb->format->depth == 15) - dacvalue[MGA1064_MUL_CTL] = MGA1064_MUL_CTL_15bits; - else - dacvalue[MGA1064_MUL_CTL] = MGA1064_MUL_CTL_16bits; - break; - case 24: - dacvalue[MGA1064_MUL_CTL] = MGA1064_MUL_CTL_24bits; - break; - case 32: - dacvalue[MGA1064_MUL_CTL] = MGA1064_MUL_CTL_32_24bits; - break; - } - - if (mode->flags & DRM_MODE_FLAG_NHSYNC) - misc |= 0x40; - if (mode->flags & DRM_MODE_FLAG_NVSYNC) - misc |= 0x80; - - - for (i = 0; i < sizeof(dacvalue); i++) { + for (i = 0; i < ARRAY_SIZE(dacvalue); i++) { if ((i <= 0x17) || (i == 0x1b) || (i == 0x1c) || @@ -1014,21 +984,53 @@ if (mdev->type == G200_ER) WREG_DAC(0x90, 0); +} - if (option) - pci_write_config_dword(dev->pdev, PCI_MGA_OPTION, option); - if (option2) - pci_write_config_dword(dev->pdev, PCI_MGA_OPTION2, option2); +static void mgag200_init_regs(struct mga_device *mdev) +{ + u8 crtcext3, crtcext4, misc; - WREG_SEQ(2, 0xf); - WREG_SEQ(3, 0); - WREG_SEQ(4, 0xe); + mgag200_set_pci_regs(mdev); + mgag200_set_dac_regs(mdev); - pitch = fb->pitches[0] / fb->format->cpp[0]; - if (fb->format->cpp[0] * 8 == 24) - pitch = (pitch * 3) >> (4 - bppshift); - else - pitch = pitch >> (4 - bppshift); + WREG_SEQ(2, 0x0f); + WREG_SEQ(3, 0x00); + WREG_SEQ(4, 0x0e); + + WREG_CRT(10, 0); + WREG_CRT(11, 0); + WREG_CRT(12, 0); + WREG_CRT(13, 0); + WREG_CRT(14, 0); + WREG_CRT(15, 0); + + RREG_ECRT(0x03, crtcext3); + + crtcext3 |= BIT(7); /* enable MGA mode */ + crtcext4 = 0x00; + + WREG_ECRT(0x03, crtcext3); + WREG_ECRT(0x04, crtcext4); + + if (mdev->type == G200_ER) + WREG_ECRT(0x24, 0x5); + + if (mdev->type == G200_EW3) + WREG_ECRT(0x34, 0x5); + + misc = RREG8(MGA_MISC_IN); + misc |= MGAREG_MISC_IOADSEL | + MGAREG_MISC_RAMMAPEN | + MGAREG_MISC_HIGH_PG_SEL; + WREG8(MGA_MISC_OUT, misc); +} + +static void mgag200_set_mode_regs(struct mga_device *mdev, + const struct drm_display_mode *mode) +{ + unsigned int hdisplay, hsyncstart, hsyncend, htotal; + unsigned int vdisplay, vsyncstart, vsyncend, vtotal; + u8 misc, crtcext1, crtcext2, crtcext5; hdisplay = mode->hdisplay / 8 - 1; hsyncstart = mode->hsync_start / 8 - 1; @@ -1044,15 +1046,32 @@ vsyncend = mode->vsync_end - 1; vtotal = mode->vtotal - 2; - WREG_GFX(0, 0); - WREG_GFX(1, 0); - WREG_GFX(2, 0); - WREG_GFX(3, 0); - WREG_GFX(4, 0); - WREG_GFX(5, 0x40); - WREG_GFX(6, 0x5); - WREG_GFX(7, 0xf); - WREG_GFX(8, 0xf); + misc = RREG8(MGA_MISC_IN); + + if (mode->flags & DRM_MODE_FLAG_NHSYNC) + misc |= MGAREG_MISC_HSYNCPOL; + else + misc &= ~MGAREG_MISC_HSYNCPOL; + + if (mode->flags & DRM_MODE_FLAG_NVSYNC) + misc |= MGAREG_MISC_VSYNCPOL; + else + misc &= ~MGAREG_MISC_VSYNCPOL; + + crtcext1 = (((htotal - 4) & 0x100) >> 8) | + ((hdisplay & 0x100) >> 7) | + ((hsyncstart & 0x100) >> 6) | + (htotal & 0x40); + if (mdev->type == G200_WB || mdev->type == G200_EW3) + crtcext1 |= BIT(7) | /* vrsten */ + BIT(3); /* hrsten */ + + crtcext2 = ((vtotal & 0xc00) >> 10) | + ((vdisplay & 0x400) >> 8) | + ((vdisplay & 0xc00) >> 7) | + ((vsyncstart & 0xc00) >> 5) | + ((vdisplay & 0x400) >> 3); + crtcext5 = 0x00; WREG_CRT(0, htotal - 4); WREG_CRT(1, hdisplay); @@ -1066,197 +1085,209 @@ ((vsyncstart & 0x100) >> 6) | ((vdisplay & 0x100) >> 5) | ((vdisplay & 0x100) >> 4) | /* linecomp */ - ((vtotal & 0x200) >> 4)| + ((vtotal & 0x200) >> 4) | ((vdisplay & 0x200) >> 3) | ((vsyncstart & 0x200) >> 2)); WREG_CRT(9, ((vdisplay & 0x200) >> 4) | ((vdisplay & 0x200) >> 3)); - WREG_CRT(10, 0); - WREG_CRT(11, 0); - WREG_CRT(12, 0); - WREG_CRT(13, 0); - WREG_CRT(14, 0); - WREG_CRT(15, 0); WREG_CRT(16, vsyncstart & 0xFF); WREG_CRT(17, (vsyncend & 0x0F) | 0x20); WREG_CRT(18, vdisplay & 0xFF); - WREG_CRT(19, pitch & 0xFF); WREG_CRT(20, 0); WREG_CRT(21, vdisplay & 0xFF); WREG_CRT(22, (vtotal + 1) & 0xFF); WREG_CRT(23, 0xc3); WREG_CRT(24, vdisplay & 0xFF); - ext_vga[0] = 0; - ext_vga[5] = 0; + WREG_ECRT(0x01, crtcext1); + WREG_ECRT(0x02, crtcext2); + WREG_ECRT(0x05, crtcext5); + + WREG8(MGA_MISC_OUT, misc); + + mga_crtc_set_plls(mdev, mode->clock); +} + +static u8 mgag200_get_bpp_shift(struct mga_device *mdev, + const struct drm_format_info *format) +{ + return mdev->bpp_shifts[format->cpp[0] - 1]; +} - /* TODO interlace */ +/* + * Calculates the HW offset value from the framebuffer's pitch. The + * offset is a multiple of the pixel size and depends on the display + * format. + */ +static u32 mgag200_calculate_offset(struct mga_device *mdev, + const struct drm_framebuffer *fb) +{ + u32 offset = fb->pitches[0] / fb->format->cpp[0]; + u8 bppshift = mgag200_get_bpp_shift(mdev, fb->format); - ext_vga[0] |= (pitch & 0x300) >> 4; - ext_vga[1] = (((htotal - 4) & 0x100) >> 8) | - ((hdisplay & 0x100) >> 7) | - ((hsyncstart & 0x100) >> 6) | - (htotal & 0x40); - ext_vga[2] = ((vtotal & 0xc00) >> 10) | - ((vdisplay & 0x400) >> 8) | - ((vdisplay & 0xc00) >> 7) | - ((vsyncstart & 0xc00) >> 5) | - ((vdisplay & 0x400) >> 3); if (fb->format->cpp[0] * 8 == 24) - ext_vga[3] = (((1 << bppshift) * 3) - 1) | 0x80; + offset = (offset * 3) >> (4 - bppshift); else - ext_vga[3] = ((1 << bppshift) - 1) | 0x80; - ext_vga[4] = 0; - if (mdev->type == G200_WB || mdev->type == G200_EW3) - ext_vga[1] |= 0x88; + offset = offset >> (4 - bppshift); - /* Set pixel clocks */ - misc = 0x2d; - WREG8(MGA_MISC_OUT, misc); - - mga_crtc_set_plls(mdev, mode->clock); + return offset; +} - for (i = 0; i < 6; i++) { - WREG_ECRT(i, ext_vga[i]); - } +static void mgag200_set_offset(struct mga_device *mdev, + const struct drm_framebuffer *fb) +{ + u8 crtc13, crtcext0; + u32 offset = mgag200_calculate_offset(mdev, fb); - if (mdev->type == G200_ER) - WREG_ECRT(0x24, 0x5); + RREG_ECRT(0, crtcext0); - if (mdev->type == G200_EW3) - WREG_ECRT(0x34, 0x5); + crtc13 = offset & 0xff; - if (mdev->type == G200_EV) { - WREG_ECRT(6, 0); - } + crtcext0 &= ~MGAREG_CRTCEXT0_OFFSET_MASK; + crtcext0 |= (offset >> 4) & MGAREG_CRTCEXT0_OFFSET_MASK; - WREG_ECRT(0, ext_vga[0]); - /* Enable mga pixel clock */ - misc = 0x2d; + WREG_CRT(0x13, crtc13); + WREG_ECRT(0x00, crtcext0); +} - WREG8(MGA_MISC_OUT, misc); +static void mgag200_set_format_regs(struct mga_device *mdev, + const struct drm_framebuffer *fb) +{ + struct drm_device *dev = mdev->dev; + const struct drm_format_info *format = fb->format; + unsigned int bpp, bppshift, scale; + u8 crtcext3, xmulctrl; - mga_crtc_do_set_base(crtc, old_fb, x, y, 0); + bpp = format->cpp[0] * 8; - /* reset tagfifo */ - if (mdev->type == G200_ER) { - u32 mem_ctl = RREG32(MGAREG_MEMCTL); - u8 seq1; - - /* screen off */ - WREG8(MGAREG_SEQ_INDEX, 0x01); - seq1 = RREG8(MGAREG_SEQ_DATA) | 0x20; - WREG8(MGAREG_SEQ_DATA, seq1); + bppshift = mgag200_get_bpp_shift(mdev, format); + switch (bpp) { + case 24: + scale = ((1 << bppshift) * 3) - 1; + break; + default: + scale = (1 << bppshift) - 1; + break; + } - WREG32(MGAREG_MEMCTL, mem_ctl | 0x00200000); - udelay(1000); - WREG32(MGAREG_MEMCTL, mem_ctl & ~0x00200000); + RREG_ECRT(3, crtcext3); - WREG8(MGAREG_SEQ_DATA, seq1 & ~0x20); + switch (bpp) { + case 8: + xmulctrl = MGA1064_MUL_CTL_8bits; + break; + case 16: + if (format->depth == 15) + xmulctrl = MGA1064_MUL_CTL_15bits; + else + xmulctrl = MGA1064_MUL_CTL_16bits; + break; + case 24: + xmulctrl = MGA1064_MUL_CTL_24bits; + break; + case 32: + xmulctrl = MGA1064_MUL_CTL_32_24bits; + break; + default: + /* BUG: We should have caught this problem already. */ + drm_WARN_ON(dev, "invalid format depth\n"); + return; } + crtcext3 &= ~GENMASK(2, 0); + crtcext3 |= scale; - if (IS_G200_SE(mdev)) { - if (mdev->unique_rev_id >= 0x04) { - WREG8(MGAREG_CRTCEXT_INDEX, 0x06); - WREG8(MGAREG_CRTCEXT_DATA, 0); - } else if (mdev->unique_rev_id >= 0x02) { - u8 hi_pri_lvl; - u32 bpp; - u32 mb; - - if (fb->format->cpp[0] * 8 > 16) - bpp = 32; - else if (fb->format->cpp[0] * 8 > 8) - bpp = 16; - else - bpp = 8; + WREG_DAC(MGA1064_MUL_CTL, xmulctrl); - mb = (mode->clock * bpp) / 1000; - if (mb > 3100) - hi_pri_lvl = 0; - else if (mb > 2600) - hi_pri_lvl = 1; - else if (mb > 1900) - hi_pri_lvl = 2; - else if (mb > 1160) - hi_pri_lvl = 3; - else if (mb > 440) - hi_pri_lvl = 4; - else - hi_pri_lvl = 5; + WREG_GFX(0, 0x00); + WREG_GFX(1, 0x00); + WREG_GFX(2, 0x00); + WREG_GFX(3, 0x00); + WREG_GFX(4, 0x00); + WREG_GFX(5, 0x40); + WREG_GFX(6, 0x05); + WREG_GFX(7, 0x0f); + WREG_GFX(8, 0x0f); - WREG8(MGAREG_CRTCEXT_INDEX, 0x06); - WREG8(MGAREG_CRTCEXT_DATA, hi_pri_lvl); - } else { - WREG8(MGAREG_CRTCEXT_INDEX, 0x06); - if (mdev->unique_rev_id >= 0x01) - WREG8(MGAREG_CRTCEXT_DATA, 0x03); - else - WREG8(MGAREG_CRTCEXT_DATA, 0x04); - } - } - return 0; + WREG_ECRT(3, crtcext3); } -#if 0 /* code from mjg to attempt D3 on crtc dpms off - revisit later */ -static int mga_suspend(struct drm_crtc *crtc) +static void mgag200_g200er_reset_tagfifo(struct mga_device *mdev) { - struct mga_crtc *mga_crtc = to_mga_crtc(crtc); - struct drm_device *dev = crtc->dev; - struct mga_device *mdev = dev->dev_private; - struct pci_dev *pdev = dev->pdev; - int option; + static uint32_t RESET_FLAG = 0x00200000; /* undocumented magic value */ + u8 seq1; + u32 memctl; - if (mdev->suspended) - return 0; + /* screen off */ + RREG_SEQ(0x01, seq1); + seq1 |= MGAREG_SEQ1_SCROFF; + WREG_SEQ(0x01, seq1); - WREG_SEQ(1, 0x20); - WREG_ECRT(1, 0x30); - /* Disable the pixel clock */ - WREG_DAC(0x1a, 0x05); - /* Power down the DAC */ - WREG_DAC(0x1e, 0x18); - /* Power down the pixel PLL */ - WREG_DAC(0x1a, 0x0d); - - /* Disable PLLs and clocks */ - pci_read_config_dword(pdev, PCI_MGA_OPTION, &option); - option &= ~(0x1F8024); - pci_write_config_dword(pdev, PCI_MGA_OPTION, option); - pci_set_power_state(pdev, PCI_D3hot); - pci_disable_device(pdev); + memctl = RREG32(MGAREG_MEMCTL); - mdev->suspended = true; + memctl |= RESET_FLAG; + WREG32(MGAREG_MEMCTL, memctl); - return 0; + udelay(1000); + + memctl &= ~RESET_FLAG; + WREG32(MGAREG_MEMCTL, memctl); + + /* screen on */ + RREG_SEQ(0x01, seq1); + seq1 &= ~MGAREG_SEQ1_SCROFF; + WREG_SEQ(0x01, seq1); } -static int mga_resume(struct drm_crtc *crtc) +static void mgag200_g200se_set_hiprilvl(struct mga_device *mdev, + const struct drm_display_mode *mode, + const struct drm_framebuffer *fb) { - struct mga_crtc *mga_crtc = to_mga_crtc(crtc); - struct drm_device *dev = crtc->dev; - struct mga_device *mdev = dev->dev_private; - struct pci_dev *pdev = dev->pdev; - int option; + unsigned int hiprilvl; + u8 crtcext6; - if (!mdev->suspended) - return 0; + if (mdev->unique_rev_id >= 0x04) { + hiprilvl = 0; + } else if (mdev->unique_rev_id >= 0x02) { + unsigned int bpp; + unsigned long mb; + + if (fb->format->cpp[0] * 8 > 16) + bpp = 32; + else if (fb->format->cpp[0] * 8 > 8) + bpp = 16; + else + bpp = 8; - pci_set_power_state(pdev, PCI_D0); - pci_enable_device(pdev); + mb = (mode->clock * bpp) / 1000; + if (mb > 3100) + hiprilvl = 0; + else if (mb > 2600) + hiprilvl = 1; + else if (mb > 1900) + hiprilvl = 2; + else if (mb > 1160) + hiprilvl = 3; + else if (mb > 440) + hiprilvl = 4; + else + hiprilvl = 5; - /* Disable sysclk */ - pci_read_config_dword(pdev, PCI_MGA_OPTION, &option); - option &= ~(0x4); - pci_write_config_dword(pdev, PCI_MGA_OPTION, option); + } else if (mdev->unique_rev_id >= 0x01) { + hiprilvl = 3; + } else { + hiprilvl = 4; + } - mdev->suspended = false; + crtcext6 = hiprilvl; /* implicitly sets maxhipri to 0 */ - return 0; + WREG_ECRT(0x06, crtcext6); } -#endif +static void mgag200_g200ev_set_hiprilvl(struct mga_device *mdev) +{ + WREG_ECRT(0x06, 0x00); +} static void mga_crtc_dpms(struct drm_crtc *crtc, int mode) { @@ -1284,11 +1315,6 @@ break; } -#if 0 - if (mode == DRM_MODE_DPMS_OFF) { - mga_suspend(crtc); - } -#endif WREG8(MGAREG_SEQ_INDEX, 0x01); seq1 |= RREG8(MGAREG_SEQ_DATA) & ~0x20; mga_wait_vsync(mdev); @@ -1298,13 +1324,6 @@ WREG8(MGAREG_CRTCEXT_INDEX, 0x01); crtcext1 |= RREG8(MGAREG_CRTCEXT_DATA) & ~0x30; WREG8(MGAREG_CRTCEXT_DATA, crtcext1); - -#if 0 - if (mode == DRM_MODE_DPMS_ON && mdev->suspended == true) { - mga_resume(crtc); - drm_helper_resume_force_mode(dev); - } -#endif } /* @@ -1352,7 +1371,6 @@ { struct drm_device *dev = crtc->dev; struct mga_device *mdev = to_mga_device(dev); - const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; u8 tmp; if (mdev->type == G200_WB || mdev->type == G200_EW3) @@ -1371,81 +1389,7 @@ WREG_SEQ(0x1, tmp); WREG_SEQ(0, 3); } - crtc_funcs->dpms(crtc, DRM_MODE_DPMS_ON); -} - -/* - * The core can pass us a set of gamma values to program. We actually only - * use this for 8-bit mode so can't perform smooth fades on deeper modes, - * but it's a requirement that we provide the function - */ -static int mga_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, - u16 *blue, uint32_t size, - struct drm_modeset_acquire_ctx *ctx) -{ - mga_crtc_load_lut(crtc); - - return 0; -} - -/* Simple cleanup function */ -static void mga_crtc_destroy(struct drm_crtc *crtc) -{ - struct mga_crtc *mga_crtc = to_mga_crtc(crtc); - - drm_crtc_cleanup(crtc); - kfree(mga_crtc); -} - -static void mga_crtc_disable(struct drm_crtc *crtc) -{ - DRM_DEBUG_KMS("\n"); - mga_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); - if (crtc->primary->fb) { - struct drm_framebuffer *fb = crtc->primary->fb; - struct drm_gem_vram_object *gbo = - drm_gem_vram_of_gem(fb->obj[0]); - drm_gem_vram_unpin(gbo); - } - crtc->primary->fb = NULL; -} - -/* These provide the minimum set of functions required to handle a CRTC */ -static const struct drm_crtc_funcs mga_crtc_funcs = { - .cursor_set = mgag200_crtc_cursor_set, - .cursor_move = mgag200_crtc_cursor_move, - .gamma_set = mga_crtc_gamma_set, - .set_config = drm_crtc_helper_set_config, - .destroy = mga_crtc_destroy, -}; - -static const struct drm_crtc_helper_funcs mga_helper_funcs = { - .disable = mga_crtc_disable, - .dpms = mga_crtc_dpms, - .mode_set = mga_crtc_mode_set, - .mode_set_base = mga_crtc_mode_set_base, - .prepare = mga_crtc_prepare, - .commit = mga_crtc_commit, -}; - -/* CRTC setup */ -static void mga_crtc_init(struct mga_device *mdev) -{ - struct drm_device *dev = mdev->dev; - struct mga_crtc *mga_crtc; - - mga_crtc = kzalloc(sizeof(struct mga_crtc) + - (MGAG200FB_CONN_LIMIT * sizeof(struct drm_connector *)), - GFP_KERNEL); - - if (mga_crtc == NULL) - return; - - drm_crtc_init(dev, &mga_crtc->base, &mga_crtc_funcs); - - drm_mode_crtc_set_gamma_size(&mga_crtc->base, MGAG200_LUT_SIZE); - - drm_crtc_helper_add(&mga_crtc->base, &mga_helper_funcs); + mga_crtc_dpms(crtc, DRM_MODE_DPMS_ON); } /* @@ -1579,14 +1523,16 @@ } static const struct drm_connector_helper_funcs mga_vga_connector_helper_funcs = { - .get_modes = mga_vga_get_modes, + .get_modes = mga_vga_get_modes, .mode_valid = mga_vga_mode_valid, }; static const struct drm_connector_funcs mga_vga_connector_funcs = { - .dpms = drm_helper_connector_dpms, - .fill_modes = drm_helper_probe_single_connector_modes, - .destroy = mga_connector_destroy, + .reset = drm_atomic_helper_connector_reset, + .fill_modes = drm_helper_probe_single_connector_modes, + .destroy = mga_connector_destroy, + .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, + .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, }; static int mgag200_vga_connector_init(struct mga_device *mdev) @@ -1618,8 +1564,148 @@ return ret; } +/* + * Simple Display Pipe + */ + +static enum drm_mode_status +mgag200_simple_display_pipe_mode_valid(struct drm_simple_display_pipe *pipe, + const struct drm_display_mode *mode) +{ + return MODE_OK; +} + +static void +mgag200_handle_damage(struct mga_device *mdev, struct drm_framebuffer *fb, + struct drm_rect *clip) +{ + struct drm_device *dev = mdev->dev; + void *vmap; + + vmap = drm_gem_shmem_vmap(fb->obj[0]); + if (drm_WARN_ON(dev, !vmap)) + return; /* BUG: SHMEM BO should always be vmapped */ + + drm_fb_memcpy_dstclip(mdev->vram, vmap, fb, clip); + + drm_gem_shmem_vunmap(fb->obj[0], vmap); + + /* Always scanout image at VRAM offset 0 */ + mgag200_set_startadd(mdev, (u32)0); + mgag200_set_offset(mdev, fb); +} + +static void +mgag200_simple_display_pipe_enable(struct drm_simple_display_pipe *pipe, + struct drm_crtc_state *crtc_state, + struct drm_plane_state *plane_state) +{ + struct drm_crtc *crtc = &pipe->crtc; + struct drm_device *dev = crtc->dev; + struct mga_device *mdev = to_mga_device(dev); + struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; + struct drm_framebuffer *fb = plane_state->fb; + struct drm_rect fullscreen = { + .x1 = 0, + .x2 = fb->width, + .y1 = 0, + .y2 = fb->height, + }; + + mga_crtc_prepare(crtc); + + mgag200_set_format_regs(mdev, fb); + mgag200_set_mode_regs(mdev, adjusted_mode); + + if (mdev->type == G200_ER) + mgag200_g200er_reset_tagfifo(mdev); + + if (IS_G200_SE(mdev)) + mgag200_g200se_set_hiprilvl(mdev, adjusted_mode, fb); + else if (mdev->type == G200_EV) + mgag200_g200ev_set_hiprilvl(mdev); + + mga_crtc_commit(crtc); + + mgag200_handle_damage(mdev, fb, &fullscreen); +} + +static void +mgag200_simple_display_pipe_disable(struct drm_simple_display_pipe *pipe) +{ + struct drm_crtc *crtc = &pipe->crtc; + + mga_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); +} + +static int +mgag200_simple_display_pipe_check(struct drm_simple_display_pipe *pipe, + struct drm_plane_state *plane_state, + struct drm_crtc_state *crtc_state) +{ + struct drm_plane *plane = plane_state->plane; + struct drm_framebuffer *new_fb = plane_state->fb; + struct drm_framebuffer *fb = NULL; + + if (!new_fb) + return 0; + + if (plane->state) + fb = plane->state->fb; + + if (!fb || (fb->format != new_fb->format)) + crtc_state->mode_changed = true; /* update PLL settings */ + + return 0; +} + +static void +mgag200_simple_display_pipe_update(struct drm_simple_display_pipe *pipe, + struct drm_plane_state *old_state) +{ + struct drm_plane *plane = &pipe->plane; + struct drm_device *dev = plane->dev; + struct mga_device *mdev = to_mga_device(dev); + struct drm_plane_state *state = plane->state; + struct drm_framebuffer *fb = state->fb; + struct drm_rect damage; + + if (!fb) + return; + + if (drm_atomic_helper_damage_merged(old_state, state, &damage)) + mgag200_handle_damage(mdev, fb, &damage); +} + +static const struct drm_simple_display_pipe_funcs +mgag200_simple_display_pipe_funcs = { + .mode_valid = mgag200_simple_display_pipe_mode_valid, + .enable = mgag200_simple_display_pipe_enable, + .disable = mgag200_simple_display_pipe_disable, + .check = mgag200_simple_display_pipe_check, + .update = mgag200_simple_display_pipe_update, + .prepare_fb = drm_gem_fb_simple_display_pipe_prepare_fb, +}; + +static const uint32_t mgag200_simple_display_pipe_formats[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_RGB565, + DRM_FORMAT_RGB888, +}; + +static const uint64_t mgag200_simple_display_pipe_fmtmods[] = { + DRM_FORMAT_MOD_LINEAR, + DRM_FORMAT_MOD_INVALID +}; + +/* + * Mode config + */ + static const struct drm_mode_config_funcs mgag200_mode_config_funcs = { - .fb_create = drm_gem_fb_create + .fb_create = drm_gem_fb_create_with_dirty, + .atomic_check = drm_atomic_helper_check, + .atomic_commit = drm_atomic_helper_commit, }; static unsigned int mgag200_preferred_depth(struct mga_device *mdev) @@ -1633,8 +1719,9 @@ int mgag200_modeset_init(struct mga_device *mdev) { struct drm_device *dev = mdev->dev; - struct drm_encoder *encoder = &mdev->encoder; struct drm_connector *connector = &mdev->connector.base; + struct drm_simple_display_pipe *pipe = &mdev->display_pipe; + size_t format_count = ARRAY_SIZE(mgag200_simple_display_pipe_formats); int ret; mdev->bpp_shifts[0] = 0; @@ -1642,6 +1729,8 @@ mdev->bpp_shifts[2] = 0; mdev->bpp_shifts[3] = 2; + mgag200_init_regs(mdev); + ret = drmm_mode_config_init(dev); if (ret) { drm_err(dev, "drmm_mode_config_init() failed, error %d\n", @@ -1653,32 +1742,36 @@ dev->mode_config.max_height = MGAG200_MAX_FB_HEIGHT; dev->mode_config.preferred_depth = mgag200_preferred_depth(mdev); - dev->mode_config.prefer_shadow = 1; dev->mode_config.fb_base = mdev->mc.vram_base; dev->mode_config.funcs = &mgag200_mode_config_funcs; - mga_crtc_init(mdev); - - ret = drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_DAC); + ret = mgag200_vga_connector_init(mdev); if (ret) { drm_err(dev, - "drm_simple_encoder_init() failed, error %d\n", + "mgag200_vga_connector_init() failed, error %d\n", ret); return ret; } - encoder->possible_crtcs = 0x1; - ret = mgag200_vga_connector_init(mdev); + ret = drm_simple_display_pipe_init(dev, pipe, + &mgag200_simple_display_pipe_funcs, + mgag200_simple_display_pipe_formats, + format_count, + mgag200_simple_display_pipe_fmtmods, + connector); if (ret) { drm_err(dev, - "mgag200_vga_connector_init() failed, error %d\n", + "drm_simple_display_pipe_init() failed, error %d\n", ret); return ret; } - drm_connector_attach_encoder(connector, encoder); + /* FIXME: legacy gamma tables; convert to CRTC state */ + drm_mode_crtc_set_gamma_size(&pipe->crtc, MGAG200_LUT_SIZE); + + drm_mode_config_reset(dev); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_reg.h +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_reg.h @@ -16,10 +16,11 @@ * MGA1064SG Mystique register file */ - #ifndef _MGA_REG_H_ #define _MGA_REG_H_ +#include + #define MGAREG_DWGCTL 0x1c00 #define MGAREG_MACCESS 0x1c04 /* the following is a mystique only register */ @@ -221,21 +222,29 @@ #define MGAREG_MISC_IOADSEL (0x1 << 0) #define MGAREG_MISC_RAMMAPEN (0x1 << 1) +#define MGAREG_MISC_CLK_SEL_MASK GENMASK(3, 2) #define MGAREG_MISC_CLK_SEL_VGA25 (0x0 << 2) #define MGAREG_MISC_CLK_SEL_VGA28 (0x1 << 2) #define MGAREG_MISC_CLK_SEL_MGA_PIX (0x2 << 2) #define MGAREG_MISC_CLK_SEL_MGA_MSK (0x3 << 2) #define MGAREG_MISC_VIDEO_DIS (0x1 << 4) #define MGAREG_MISC_HIGH_PG_SEL (0x1 << 5) +#define MGAREG_MISC_HSYNCPOL BIT(6) +#define MGAREG_MISC_VSYNCPOL BIT(7) /* MMIO VGA registers */ #define MGAREG_SEQ_INDEX 0x1fc4 #define MGAREG_SEQ_DATA 0x1fc5 + +#define MGAREG_SEQ1_SCROFF BIT(5) + #define MGAREG_CRTC_INDEX 0x1fd4 #define MGAREG_CRTC_DATA 0x1fd5 #define MGAREG_CRTCEXT_INDEX 0x1fde #define MGAREG_CRTCEXT_DATA 0x1fdf +#define MGAREG_CRTCEXT0_OFFSET_MASK GENMASK(5, 4) + /* Cursor X and Y position */ #define MGA_CURPOSXL 0x3c0c #define MGA_CURPOSXH 0x3c0d --- linux-5.8.0.orig/drivers/gpu/drm/mgag200/mgag200_ttm.c +++ linux-5.8.0/drivers/gpu/drm/mgag200/mgag200_ttm.c @@ -32,17 +32,8 @@ int mgag200_mm_init(struct mga_device *mdev) { - struct drm_vram_mm *vmm; - int ret; struct drm_device *dev = mdev->dev; - - vmm = drm_vram_helper_alloc_mm(dev, pci_resource_start(dev->pdev, 0), - mdev->mc.vram_size); - if (IS_ERR(vmm)) { - ret = PTR_ERR(vmm); - DRM_ERROR("Error initializing VRAM MM; %d\n", ret); - return ret; - } + int ret; arch_io_reserve_memtype_wc(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); @@ -50,9 +41,22 @@ mdev->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); + mdev->vram = ioremap(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); + if (!mdev->vram) { + ret = -ENOMEM; + goto err_arch_phys_wc_del; + } + mdev->vram_fb_available = mdev->mc.vram_size; return 0; + +err_arch_phys_wc_del: + arch_phys_wc_del(mdev->fb_mtrr); + arch_io_free_memtype_wc(pci_resource_start(dev->pdev, 0), + pci_resource_len(dev->pdev, 0)); + return ret; } void mgag200_mm_fini(struct mga_device *mdev) @@ -60,9 +64,7 @@ struct drm_device *dev = mdev->dev; mdev->vram_fb_available = 0; - - drm_vram_helper_release_mm(dev); - + iounmap(mdev->vram); arch_io_free_memtype_wc(pci_resource_start(dev->pdev, 0), pci_resource_len(dev->pdev, 0)); arch_phys_wc_del(mdev->fb_mtrr); --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a2xx_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a2xx_gpu.c @@ -164,6 +164,11 @@ if (ret) return ret; + gpu_write(gpu, REG_AXXX_CP_RB_CNTL, + MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE); + + gpu_write(gpu, REG_AXXX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova)); + /* NOTE: PM4/micro-engine firmware registers look to be the same * for a2xx and a3xx.. we could possibly push that part down to * adreno_gpu base class. Or push both PM4 and PFP but --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a3xx_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a3xx_gpu.c @@ -211,6 +211,16 @@ if (ret) return ret; + /* + * Use the default ringbuffer size and block size but disable the RPTR + * shadow + */ + gpu_write(gpu, REG_AXXX_CP_RB_CNTL, + MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE); + + /* Set the ringbuffer address */ + gpu_write(gpu, REG_AXXX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova)); + /* setup access protection: */ gpu_write(gpu, REG_A3XX_CP_PROTECT_CTRL, 0x00000007); --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a4xx_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a4xx_gpu.c @@ -267,6 +267,16 @@ if (ret) return ret; + /* + * Use the default ringbuffer size and block size but disable the RPTR + * shadow + */ + gpu_write(gpu, REG_A4XX_CP_RB_CNTL, + MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE); + + /* Set the ringbuffer address */ + gpu_write(gpu, REG_A4XX_CP_RB_BASE, lower_32_bits(gpu->rb[0]->iova)); + /* Load PM4: */ ptr = (uint32_t *)(adreno_gpu->fw[ADRENO_FW_PM4]->data); len = adreno_gpu->fw[ADRENO_FW_PM4]->size / 4; --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a5xx_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a5xx_gpu.c @@ -593,8 +593,6 @@ if (adreno_gpu->info->quirks & ADRENO_QUIRK_TWO_PASS_USE_WFI) gpu_rmw(gpu, REG_A5XX_PC_DBG_ECO_CNTL, 0, (1 << 8)); - gpu_write(gpu, REG_A5XX_PC_DBG_ECO_CNTL, 0xc0200100); - /* Enable USE_RETENTION_FLOPS */ gpu_write(gpu, REG_A5XX_CP_CHICKEN_DBG, 0x02000000); @@ -702,8 +700,6 @@ if (ret) return ret; - a5xx_preempt_hw_init(gpu); - if (!adreno_is_a510(adreno_gpu)) a5xx_gpmu_ucode_init(gpu); @@ -711,6 +707,15 @@ if (ret) return ret; + /* Set the ringbuffer address */ + gpu_write64(gpu, REG_A5XX_CP_RB_BASE, REG_A5XX_CP_RB_BASE_HI, + gpu->rb[0]->iova); + + gpu_write(gpu, REG_A5XX_CP_RB_CNTL, + MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE); + + a5xx_preempt_hw_init(gpu); + /* Disable the interrupts through the initial bringup stage */ gpu_write(gpu, REG_A5XX_RBBM_INT_0_MASK, A5XX_INT_MASK); @@ -1510,7 +1515,8 @@ check_speed_bin(&pdev->dev); - ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 4); + /* Restricting nr_rings to 1 to temporarily disable preemption */ + ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 1); if (ret) { a5xx_destroy(&(a5xx_gpu->base.base)); return ERR_PTR(ret); --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a5xx_gpu.h +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a5xx_gpu.h @@ -31,6 +31,7 @@ struct msm_ringbuffer *next_ring; struct drm_gem_object *preempt_bo[MSM_GPU_MAX_RINGS]; + struct drm_gem_object *preempt_counters_bo[MSM_GPU_MAX_RINGS]; struct a5xx_preempt_record *preempt[MSM_GPU_MAX_RINGS]; uint64_t preempt_iova[MSM_GPU_MAX_RINGS]; --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a5xx_power.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a5xx_power.c @@ -304,7 +304,7 @@ /* Set up the limits management */ if (adreno_is_a530(adreno_gpu)) a530_lm_setup(gpu); - else + else if (adreno_is_a540(adreno_gpu)) a540_lm_setup(gpu); /* Set up SP/TP power collpase */ --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a5xx_preempt.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a5xx_preempt.c @@ -226,19 +226,31 @@ struct adreno_gpu *adreno_gpu = &a5xx_gpu->base; struct msm_gpu *gpu = &adreno_gpu->base; struct a5xx_preempt_record *ptr; - struct drm_gem_object *bo = NULL; - u64 iova = 0; + void *counters; + struct drm_gem_object *bo = NULL, *counters_bo = NULL; + u64 iova = 0, counters_iova = 0; ptr = msm_gem_kernel_new(gpu->dev, A5XX_PREEMPT_RECORD_SIZE + A5XX_PREEMPT_COUNTER_SIZE, - MSM_BO_UNCACHED, gpu->aspace, &bo, &iova); + MSM_BO_UNCACHED | MSM_BO_MAP_PRIV, gpu->aspace, &bo, &iova); if (IS_ERR(ptr)) return PTR_ERR(ptr); + /* The buffer to store counters needs to be unprivileged */ + counters = msm_gem_kernel_new(gpu->dev, + A5XX_PREEMPT_COUNTER_SIZE, + MSM_BO_UNCACHED, gpu->aspace, &counters_bo, &counters_iova); + if (IS_ERR(counters)) { + msm_gem_kernel_put(bo, gpu->aspace, true); + return PTR_ERR(counters); + } + msm_gem_object_set_name(bo, "preempt"); + msm_gem_object_set_name(counters_bo, "preempt_counters"); a5xx_gpu->preempt_bo[ring->id] = bo; + a5xx_gpu->preempt_counters_bo[ring->id] = counters_bo; a5xx_gpu->preempt_iova[ring->id] = iova; a5xx_gpu->preempt[ring->id] = ptr; @@ -249,7 +261,7 @@ ptr->data = 0; ptr->cntl = MSM_GPU_RB_CNTL_DEFAULT; ptr->rptr_addr = rbmemptr(ring, rptr); - ptr->counter = iova + A5XX_PREEMPT_RECORD_SIZE; + ptr->counter = counters_iova; return 0; } @@ -260,8 +272,11 @@ struct a5xx_gpu *a5xx_gpu = to_a5xx_gpu(adreno_gpu); int i; - for (i = 0; i < gpu->nr_rings; i++) + for (i = 0; i < gpu->nr_rings; i++) { msm_gem_kernel_put(a5xx_gpu->preempt_bo[i], gpu->aspace, true); + msm_gem_kernel_put(a5xx_gpu->preempt_counters_bo[i], + gpu->aspace, true); + } } void a5xx_preempt_init(struct msm_gpu *gpu) --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -207,6 +207,16 @@ { int ret; u32 val; + u32 mask, reset_val; + + val = gmu_read(gmu, REG_A6XX_GMU_CM3_DTCM_START + 0xff8); + if (val <= 0x20010004) { + mask = 0xffffffff; + reset_val = 0xbabeface; + } else { + mask = 0x1ff; + reset_val = 0x100; + } gmu_write(gmu, REG_A6XX_GMU_CM3_SYSRESET, 1); @@ -218,7 +228,7 @@ gmu_write(gmu, REG_A6XX_GMU_CM3_SYSRESET, 0); ret = gmu_poll_timeout(gmu, REG_A6XX_GMU_CM3_FW_INIT_RESULT, val, - val == 0xbabeface, 100, 10000); + (val & mask) == reset_val, 100, 10000); if (ret) DRM_DEV_ERROR(gmu->dev, "GMU firmware initialization timed out\n"); @@ -260,6 +270,16 @@ } name = "GPU_SET"; break; + case GMU_OOB_PERFCOUNTER_SET: + if (gmu->legacy) { + request = GMU_OOB_PERFCOUNTER_REQUEST; + ack = GMU_OOB_PERFCOUNTER_ACK; + } else { + request = GMU_OOB_PERFCOUNTER_REQUEST_NEW; + ack = GMU_OOB_PERFCOUNTER_ACK_NEW; + } + name = "PERFCOUNTER"; + break; case GMU_OOB_BOOT_SLUMBER: request = GMU_OOB_BOOT_SLUMBER_REQUEST; ack = GMU_OOB_BOOT_SLUMBER_ACK; @@ -297,9 +317,14 @@ void a6xx_gmu_clear_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state) { if (!gmu->legacy) { - WARN_ON(state != GMU_OOB_GPU_SET); - gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, - 1 << GMU_OOB_GPU_SET_CLEAR_NEW); + if (state == GMU_OOB_GPU_SET) { + gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, + 1 << GMU_OOB_GPU_SET_CLEAR_NEW); + } else { + WARN_ON(state != GMU_OOB_PERFCOUNTER_SET); + gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, + 1 << GMU_OOB_PERFCOUNTER_CLEAR_NEW); + } return; } @@ -308,6 +333,10 @@ gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, 1 << GMU_OOB_GPU_SET_CLEAR); break; + case GMU_OOB_PERFCOUNTER_SET: + gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, + 1 << GMU_OOB_PERFCOUNTER_CLEAR); + break; case GMU_OOB_BOOT_SLUMBER: gmu_write(gmu, REG_A6XX_GMU_HOST2GMU_INTR_SET, 1 << GMU_OOB_BOOT_SLUMBER_CLEAR); @@ -854,10 +883,19 @@ /* Turn on the resources */ pm_runtime_get_sync(gmu->dev); + /* + * "enable" the GX power domain which won't actually do anything but it + * will make sure that the refcounting is correct in case we need to + * bring down the GX after a GMU failure + */ + if (!IS_ERR_OR_NULL(gmu->gxpd)) + pm_runtime_get_sync(gmu->gxpd); + /* Use a known rate to bring up the GMU */ clk_set_rate(gmu->core_clk, 200000000); ret = clk_bulk_prepare_enable(gmu->nr_clocks, gmu->clocks); if (ret) { + pm_runtime_put(gmu->gxpd); pm_runtime_put(gmu->dev); return ret; } @@ -903,19 +941,12 @@ else a6xx_hfi_set_freq(gmu, gmu->current_perf_index); - /* - * "enable" the GX power domain which won't actually do anything but it - * will make sure that the refcounting is correct in case we need to - * bring down the GX after a GMU failure - */ - if (!IS_ERR_OR_NULL(gmu->gxpd)) - pm_runtime_get(gmu->gxpd); - out: /* On failure, shut down the GMU to leave it in a good state */ if (ret) { disable_irq(gmu->gmu_irq); a6xx_rpmh_stop(gmu); + pm_runtime_put(gmu->gxpd); pm_runtime_put(gmu->dev); } --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a6xx_gmu.h +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a6xx_gmu.h @@ -151,6 +151,7 @@ GMU_OOB_BOOT_SLUMBER = 0, GMU_OOB_GPU_SET, GMU_OOB_DCVS_SET, + GMU_OOB_PERFCOUNTER_SET, }; /* These are the interrupt / ack bits for each OOB request that are set @@ -185,6 +186,13 @@ #define GMU_OOB_GPU_SET_ACK_NEW 31 #define GMU_OOB_GPU_SET_CLEAR_NEW 31 +#define GMU_OOB_PERFCOUNTER_REQUEST 17 +#define GMU_OOB_PERFCOUNTER_ACK 25 +#define GMU_OOB_PERFCOUNTER_CLEAR 25 + +#define GMU_OOB_PERFCOUNTER_REQUEST_NEW 28 +#define GMU_OOB_PERFCOUNTER_ACK_NEW 30 +#define GMU_OOB_PERFCOUNTER_CLEAR_NEW 30 void a6xx_hfi_init(struct a6xx_gmu *gmu); int a6xx_hfi_start(struct a6xx_gmu *gmu, int boot_state); --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -557,6 +557,13 @@ if (ret) goto out; + /* Set the ringbuffer address */ + gpu_write64(gpu, REG_A6XX_CP_RB_BASE, REG_A6XX_CP_RB_BASE_HI, + gpu->rb[0]->iova); + + gpu_write(gpu, REG_A6XX_CP_RB_CNTL, + MSM_GPU_RB_CNTL_DEFAULT | AXXX_CP_RB_CNTL_NO_UPDATE); + /* Always come up on rb 0 */ a6xx_gpu->cur_ring = gpu->rb[0]; @@ -809,14 +816,18 @@ { struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); + static DEFINE_MUTEX(perfcounter_oob); + + mutex_lock(&perfcounter_oob); /* Force the GPU power on so we can read this register */ - a6xx_gmu_set_oob(&a6xx_gpu->gmu, GMU_OOB_GPU_SET); + a6xx_gmu_set_oob(&a6xx_gpu->gmu, GMU_OOB_PERFCOUNTER_SET); *value = gpu_read64(gpu, REG_A6XX_RBBM_PERFCTR_CP_0_LO, REG_A6XX_RBBM_PERFCTR_CP_0_HI); - a6xx_gmu_clear_oob(&a6xx_gpu->gmu, GMU_OOB_GPU_SET); + a6xx_gmu_clear_oob(&a6xx_gpu->gmu, GMU_OOB_PERFCOUNTER_SET); + mutex_unlock(&perfcounter_oob); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c @@ -864,7 +864,7 @@ int i; a6xx_state->indexed_regs = state_kcalloc(a6xx_state, count, - sizeof(a6xx_state->indexed_regs)); + sizeof(*a6xx_state->indexed_regs)); if (!a6xx_state->indexed_regs) return; --- linux-5.8.0.orig/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ linux-5.8.0/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -189,10 +189,16 @@ adreno_iommu_create_address_space(struct msm_gpu *gpu, struct platform_device *pdev) { - struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type); - struct msm_mmu *mmu = msm_iommu_new(&pdev->dev, iommu); + struct iommu_domain *iommu; + struct msm_mmu *mmu; struct msm_gem_address_space *aspace; + iommu = iommu_domain_alloc(&platform_bus_type); + if (!iommu) + return NULL; + + mmu = msm_iommu_new(&pdev->dev, iommu); + aspace = msm_gem_address_space_create(mmu, "gpu", SZ_16M, 0xffffffff - SZ_16M); @@ -396,30 +402,10 @@ ring->next = ring->start; /* reset completed fence seqno: */ - ring->memptrs->fence = ring->seqno; + ring->memptrs->fence = ring->fctx->completed_fence; ring->memptrs->rptr = 0; } - /* - * Setup REG_CP_RB_CNTL. The same value is used across targets (with - * the excpetion of A430 that disables the RPTR shadow) - the cacluation - * for the ringbuffer size and block size is moved to msm_gpu.h for the - * pre-processor to deal with and the A430 variant is ORed in here - */ - adreno_gpu_write(adreno_gpu, REG_ADRENO_CP_RB_CNTL, - MSM_GPU_RB_CNTL_DEFAULT | - (adreno_is_a430(adreno_gpu) ? AXXX_CP_RB_CNTL_NO_UPDATE : 0)); - - /* Setup ringbuffer address - use ringbuffer[0] for GPU init */ - adreno_gpu_write64(adreno_gpu, REG_ADRENO_CP_RB_BASE, - REG_ADRENO_CP_RB_BASE_HI, gpu->rb[0]->iova); - - if (!adreno_is_a430(adreno_gpu)) { - adreno_gpu_write64(adreno_gpu, REG_ADRENO_CP_RB_RPTR_ADDR, - REG_ADRENO_CP_RB_RPTR_ADDR_HI, - rbmemptr(gpu->rb[0], rptr)); - } - return 0; } @@ -427,11 +413,8 @@ static uint32_t get_rptr(struct adreno_gpu *adreno_gpu, struct msm_ringbuffer *ring) { - if (adreno_is_a430(adreno_gpu)) - return ring->memptrs->rptr = adreno_gpu_read( - adreno_gpu, REG_ADRENO_CP_RB_RPTR); - else - return ring->memptrs->rptr; + return ring->memptrs->rptr = adreno_gpu_read( + adreno_gpu, REG_ADRENO_CP_RB_RPTR); } struct msm_ringbuffer *adreno_active_ring(struct msm_gpu *gpu) --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -389,7 +389,7 @@ spin_unlock_irqrestore(&dpu_crtc->spin_lock, flags); if (!fevent) { - DRM_ERROR("crtc%d event %d overflow\n", crtc->base.id, event); + DRM_ERROR_RATELIMITED("crtc%d event %d overflow\n", crtc->base.id, event); return; } @@ -827,7 +827,7 @@ { struct dpu_crtc *dpu_crtc; struct drm_encoder *encoder; - bool request_bandwidth; + bool request_bandwidth = false; if (!crtc) { DPU_ERROR("invalid crtc\n"); @@ -881,7 +881,7 @@ struct drm_plane *plane; struct drm_display_mode *mode; - int cnt = 0, rc = 0, mixer_width, i, z_pos; + int cnt = 0, rc = 0, mixer_width = 0, i, z_pos; struct dpu_multirect_plane_states multirect_plane[DPU_STAGE_MAX * 2]; int multirect_count = 0; @@ -914,9 +914,11 @@ memset(pipe_staged, 0, sizeof(pipe_staged)); - mixer_width = mode->hdisplay / cstate->num_mixers; + if (cstate->num_mixers) { + mixer_width = mode->hdisplay / cstate->num_mixers; - _dpu_crtc_setup_lm_bounds(crtc, state); + _dpu_crtc_setup_lm_bounds(crtc, state); + } crtc_rect.x2 = mode->hdisplay; crtc_rect.y2 = mode->vdisplay; --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -586,7 +586,10 @@ dpu_kms = to_dpu_kms(priv->kms); mode = &crtc_state->mode; adj_mode = &crtc_state->adjusted_mode; - global_state = dpu_kms_get_existing_global_state(dpu_kms); + global_state = dpu_kms_get_global_state(crtc_state->state); + if (IS_ERR(global_state)) + return PTR_ERR(global_state); + trace_dpu_enc_atomic_check(DRMID(drm_enc)); /* @@ -621,12 +624,15 @@ /* Reserve dynamic resources now. */ if (!ret) { /* - * Avoid reserving resources when mode set is pending. Topology - * info may not be available to complete reservation. + * Release and Allocate resources on every modeset + * Dont allocate when active is false. */ if (drm_atomic_crtc_needs_modeset(crtc_state)) { - ret = dpu_rm_reserve(&dpu_kms->rm, global_state, - drm_enc, crtc_state, topology); + dpu_rm_release(global_state, drm_enc); + + if (!crtc_state->active_changed || crtc_state->active) + ret = dpu_rm_reserve(&dpu_kms->rm, global_state, + drm_enc, crtc_state, topology); } } @@ -1175,7 +1181,6 @@ struct dpu_encoder_virt *dpu_enc = NULL; struct msm_drm_private *priv; struct dpu_kms *dpu_kms; - struct dpu_global_state *global_state; int i = 0; if (!drm_enc) { @@ -1194,7 +1199,6 @@ priv = drm_enc->dev->dev_private; dpu_kms = to_dpu_kms(priv->kms); - global_state = dpu_kms_get_existing_global_state(dpu_kms); trace_dpu_enc_disable(DRMID(drm_enc)); @@ -1224,8 +1228,6 @@ DPU_DEBUG_ENC(dpu_enc, "encoder disabled\n"); - dpu_rm_release(global_state, drm_enc); - mutex_unlock(&dpu_enc->enc_lock); } --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -43,6 +43,10 @@ #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) +#define INTF_SDM845_MASK (0) + +#define INTF_SC7180_MASK BIT(DPU_INTF_INPUT_CTRL) | BIT(DPU_INTF_TE) + #define DEFAULT_PIXEL_RAM_SIZE (50 * 1024) #define DEFAULT_DPU_LINE_WIDTH 2048 #define DEFAULT_DPU_OUTPUT_LINE_WIDTH 2560 @@ -400,26 +404,26 @@ /************************************************************* * INTF sub blocks config *************************************************************/ -#define INTF_BLK(_name, _id, _base, _type, _ctrl_id) \ +#define INTF_BLK(_name, _id, _base, _type, _ctrl_id, _features) \ {\ .name = _name, .id = _id, \ .base = _base, .len = 0x280, \ - .features = BIT(DPU_CTL_ACTIVE_CFG), \ + .features = _features, \ .type = _type, \ .controller_id = _ctrl_id, \ .prog_fetch_lines_worst_case = 24 \ } static const struct dpu_intf_cfg sdm845_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0), - INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0), - INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1), - INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1), + INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, INTF_SDM845_MASK), + INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, INTF_SDM845_MASK), + INTF_BLK("intf_2", INTF_2, 0x6B000, INTF_DSI, 1, INTF_SDM845_MASK), + INTF_BLK("intf_3", INTF_3, 0x6B800, INTF_DP, 1, INTF_SDM845_MASK), }; static const struct dpu_intf_cfg sc7180_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0), - INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0), + INTF_BLK("intf_0", INTF_0, 0x6A000, INTF_DP, 0, INTF_SC7180_MASK), + INTF_BLK("intf_1", INTF_1, 0x6A800, INTF_DSI, 0, INTF_SC7180_MASK), }; /************************************************************* --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -186,6 +186,19 @@ }; /** + * INTF sub-blocks + * @DPU_INTF_INPUT_CTRL Supports the setting of pp block from which + * pixel data arrives to this INTF + * @DPU_INTF_TE INTF block has TE configuration support + * @DPU_INTF_MAX + */ +enum { + DPU_INTF_INPUT_CTRL = 0x1, + DPU_INTF_TE, + DPU_INTF_MAX +}; + +/** * VBIF sub-blocks and features * @DPU_VBIF_QOS_OTLIM VBIF supports OT Limit * @DPU_VBIF_QOS_REMAP VBIF supports QoS priority remap --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c @@ -225,14 +225,9 @@ bool enable, const enum dpu_pingpong pp) { - struct dpu_hw_blk_reg_map *c; + struct dpu_hw_blk_reg_map *c = &intf->hw; u32 mux_cfg; - if (!intf) - return; - - c = &intf->hw; - mux_cfg = DPU_REG_READ(c, INTF_MUX); mux_cfg &= ~0xf; @@ -280,7 +275,7 @@ ops->get_status = dpu_hw_intf_get_status; ops->enable_timing = dpu_hw_intf_enable_timing_engine; ops->get_line_count = dpu_hw_intf_get_line_count; - if (cap & BIT(DPU_CTL_ACTIVE_CFG)) + if (cap & BIT(DPU_INTF_INPUT_CTRL)) ops->bind_pingpong_blk = dpu_hw_intf_bind_pingpong_blk; } --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c @@ -866,9 +866,9 @@ crtc_state = drm_atomic_get_new_crtc_state(state->state, state->crtc); - min_scale = FRAC_16_16(1, pdpu->pipe_sblk->maxdwnscale); + min_scale = FRAC_16_16(1, pdpu->pipe_sblk->maxupscale); ret = drm_atomic_helper_check_plane_state(state, crtc_state, min_scale, - pdpu->pipe_sblk->maxupscale << 16, + pdpu->pipe_sblk->maxdwnscale << 16, true, true); if (ret) { DPU_DEBUG_PLANE(pdpu, "Check plane state failed (%d)\n", ret); --- linux-5.8.0.orig/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c +++ linux-5.8.0/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c @@ -1117,8 +1117,6 @@ mdp5_crtc_destroy_state(crtc, crtc->state); __drm_atomic_helper_crtc_reset(crtc, &mdp5_cstate->base); - - drm_crtc_vblank_reset(crtc); } static const struct drm_crtc_funcs mdp5_crtc_funcs = { @@ -1178,7 +1176,7 @@ struct mdp5_crtc *mdp5_crtc = container_of(irq, struct mdp5_crtc, pp_done); - complete(&mdp5_crtc->pp_completion); + complete_all(&mdp5_crtc->pp_completion); } static void mdp5_crtc_wait_for_pp_done(struct drm_crtc *crtc) --- linux-5.8.0.orig/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c +++ linux-5.8.0/drivers/gpu/drm/msm/dsi/phy/dsi_phy_20nm.c @@ -139,7 +139,7 @@ .disable = dsi_20nm_phy_disable, .init = msm_dsi_phy_init_common, }, - .io_start = { 0xfd998300, 0xfd9a0300 }, + .io_start = { 0xfd998500, 0xfd9a0500 }, .num_dsi_phy = 2, }; --- linux-5.8.0.orig/drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c +++ linux-5.8.0/drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c @@ -559,6 +559,7 @@ struct pll_10nm_cached_state *cached = &pll_10nm->cached_state; void __iomem *phy_base = pll_10nm->phy_cmn_mmio; u32 val; + int ret; val = pll_read(pll_10nm->mmio + REG_DSI_10nm_PHY_PLL_PLL_OUTDIV_RATE); val &= ~0x3; @@ -573,6 +574,13 @@ val |= cached->pll_mux; pll_write(phy_base + REG_DSI_10nm_PHY_CMN_CLK_CFG1, val); + ret = dsi_pll_10nm_vco_set_rate(&pll->clk_hw, pll_10nm->vco_current_rate, pll_10nm->vco_ref_clk_rate); + if (ret) { + DRM_DEV_ERROR(&pll_10nm->pdev->dev, + "restore vco rate failed. ret=%d\n", ret); + return ret; + } + DBG("DSI PLL%d", pll_10nm->id); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/msm/msm_atomic.c +++ linux-5.8.0/drivers/gpu/drm/msm/msm_atomic.c @@ -27,6 +27,34 @@ return msm_framebuffer_prepare(new_state->fb, kms->aspace); } +/* + * Helpers to control vblanks while we flush.. basically just to ensure + * that vblank accounting is switched on, so we get valid seqn/timestamp + * on pageflip events (if requested) + */ + +static void vblank_get(struct msm_kms *kms, unsigned crtc_mask) +{ + struct drm_crtc *crtc; + + for_each_crtc_mask(kms->dev, crtc, crtc_mask) { + if (!crtc->state->active) + continue; + drm_crtc_vblank_get(crtc); + } +} + +static void vblank_put(struct msm_kms *kms, unsigned crtc_mask) +{ + struct drm_crtc *crtc; + + for_each_crtc_mask(kms->dev, crtc, crtc_mask) { + if (!crtc->state->active) + continue; + drm_crtc_vblank_put(crtc); + } +} + static void msm_atomic_async_commit(struct msm_kms *kms, int crtc_idx) { unsigned crtc_mask = BIT(crtc_idx); @@ -44,6 +72,8 @@ kms->funcs->enable_commit(kms); + vblank_get(kms, crtc_mask); + /* * Flush hardware updates: */ @@ -58,6 +88,8 @@ kms->funcs->wait_flush(kms, crtc_mask); trace_msm_atomic_wait_flush_finish(crtc_mask); + vblank_put(kms, crtc_mask); + mutex_lock(&kms->commit_lock); kms->funcs->complete_commit(kms, crtc_mask); mutex_unlock(&kms->commit_lock); @@ -221,6 +253,8 @@ */ kms->pending_crtc_mask &= ~crtc_mask; + vblank_get(kms, crtc_mask); + /* * Flush hardware updates: */ @@ -235,6 +269,8 @@ kms->funcs->wait_flush(kms, crtc_mask); trace_msm_atomic_wait_flush_finish(crtc_mask); + vblank_put(kms, crtc_mask); + mutex_lock(&kms->commit_lock); kms->funcs->complete_commit(kms, crtc_mask); mutex_unlock(&kms->commit_lock); --- linux-5.8.0.orig/drivers/gpu/drm/msm/msm_drv.c +++ linux-5.8.0/drivers/gpu/drm/msm/msm_drv.c @@ -433,14 +433,14 @@ drm_mode_config_init(ddev); - /* Bind all our sub-components: */ - ret = component_bind_all(dev, ddev); + ret = msm_init_vram(ddev); if (ret) goto err_destroy_mdss; - ret = msm_init_vram(ddev); + /* Bind all our sub-components: */ + ret = component_bind_all(dev, ddev); if (ret) - goto err_msm_uninit; + goto err_destroy_mdss; if (!dev->dma_parms) { dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms), @@ -1328,6 +1328,17 @@ return 0; } +static void msm_pdev_shutdown(struct platform_device *pdev) +{ + struct drm_device *drm = platform_get_drvdata(pdev); + struct msm_drm_private *priv = drm ? drm->dev_private : NULL; + + if (!priv || !priv->kms) + return; + + drm_atomic_helper_shutdown(drm); +} + static const struct of_device_id dt_match[] = { { .compatible = "qcom,mdp4", .data = (void *)KMS_MDP4 }, { .compatible = "qcom,mdss", .data = (void *)KMS_MDP5 }, @@ -1340,6 +1351,7 @@ static struct platform_driver msm_platform_driver = { .probe = msm_pdev_probe, .remove = msm_pdev_remove, + .shutdown = msm_pdev_shutdown, .driver = { .name = "msm", .of_match_table = dt_match, --- linux-5.8.0.orig/drivers/gpu/drm/msm/msm_fence.c +++ linux-5.8.0/drivers/gpu/drm/msm/msm_fence.c @@ -45,7 +45,7 @@ int ret; if (fence > fctx->last_fence) { - DRM_ERROR("%s: waiting on invalid fence: %u (of %u)\n", + DRM_ERROR_RATELIMITED("%s: waiting on invalid fence: %u (of %u)\n", fctx->name, fence, fctx->last_fence); return -EINVAL; } --- linux-5.8.0.orig/drivers/gpu/drm/msm/msm_gem.c +++ linux-5.8.0/drivers/gpu/drm/msm/msm_gem.c @@ -994,10 +994,8 @@ static int msm_gem_new_impl(struct drm_device *dev, uint32_t size, uint32_t flags, - struct drm_gem_object **obj, - bool struct_mutex_locked) + struct drm_gem_object **obj) { - struct msm_drm_private *priv = dev->dev_private; struct msm_gem_object *msm_obj; switch (flags & MSM_BO_CACHE_MASK) { @@ -1023,15 +1021,6 @@ INIT_LIST_HEAD(&msm_obj->submit_entry); INIT_LIST_HEAD(&msm_obj->vmas); - if (struct_mutex_locked) { - WARN_ON(!mutex_is_locked(&dev->struct_mutex)); - list_add_tail(&msm_obj->mm_list, &priv->inactive_list); - } else { - mutex_lock(&dev->struct_mutex); - list_add_tail(&msm_obj->mm_list, &priv->inactive_list); - mutex_unlock(&dev->struct_mutex); - } - *obj = &msm_obj->base; return 0; @@ -1041,6 +1030,7 @@ uint32_t size, uint32_t flags, bool struct_mutex_locked) { struct msm_drm_private *priv = dev->dev_private; + struct msm_gem_object *msm_obj; struct drm_gem_object *obj = NULL; bool use_vram = false; int ret; @@ -1061,14 +1051,15 @@ if (size == 0) return ERR_PTR(-EINVAL); - ret = msm_gem_new_impl(dev, size, flags, &obj, struct_mutex_locked); + ret = msm_gem_new_impl(dev, size, flags, &obj); if (ret) goto fail; + msm_obj = to_msm_bo(obj); + if (use_vram) { struct msm_gem_vma *vma; struct page **pages; - struct msm_gem_object *msm_obj = to_msm_bo(obj); mutex_lock(&msm_obj->lock); @@ -1103,6 +1094,15 @@ mapping_set_gfp_mask(obj->filp->f_mapping, GFP_HIGHUSER); } + if (struct_mutex_locked) { + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + list_add_tail(&msm_obj->mm_list, &priv->inactive_list); + } else { + mutex_lock(&dev->struct_mutex); + list_add_tail(&msm_obj->mm_list, &priv->inactive_list); + mutex_unlock(&dev->struct_mutex); + } + return obj; fail: @@ -1125,6 +1125,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev, struct dma_buf *dmabuf, struct sg_table *sgt) { + struct msm_drm_private *priv = dev->dev_private; struct msm_gem_object *msm_obj; struct drm_gem_object *obj; uint32_t size; @@ -1138,7 +1139,7 @@ size = PAGE_ALIGN(dmabuf->size); - ret = msm_gem_new_impl(dev, size, MSM_BO_WC, &obj, false); + ret = msm_gem_new_impl(dev, size, MSM_BO_WC, &obj); if (ret) goto fail; @@ -1163,6 +1164,11 @@ } mutex_unlock(&msm_obj->lock); + + mutex_lock(&dev->struct_mutex); + list_add_tail(&msm_obj->mm_list, &priv->inactive_list); + mutex_unlock(&dev->struct_mutex); + return obj; fail: --- linux-5.8.0.orig/drivers/gpu/drm/msm/msm_ringbuffer.c +++ linux-5.8.0/drivers/gpu/drm/msm/msm_ringbuffer.c @@ -27,7 +27,8 @@ ring->id = id; ring->start = msm_gem_kernel_new(gpu->dev, MSM_GPU_RINGBUFFER_SZ, - MSM_BO_WC, gpu->aspace, &ring->bo, &ring->iova); + MSM_BO_WC | MSM_BO_GPU_READONLY, gpu->aspace, &ring->bo, + &ring->iova); if (IS_ERR(ring->start)) { ret = PTR_ERR(ring->start); --- linux-5.8.0.orig/drivers/gpu/drm/mxsfb/mxsfb_drv.c +++ linux-5.8.0/drivers/gpu/drm/mxsfb/mxsfb_drv.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -87,8 +88,26 @@ clk_disable_unprepare(mxsfb->clk_axi); } +static struct drm_framebuffer * +mxsfb_fb_create(struct drm_device *dev, struct drm_file *file_priv, + const struct drm_mode_fb_cmd2 *mode_cmd) +{ + const struct drm_format_info *info; + + info = drm_get_format_info(dev, mode_cmd); + if (!info) + return ERR_PTR(-EINVAL); + + if (mode_cmd->width * info->cpp[0] != mode_cmd->pitches[0]) { + dev_dbg(dev->dev, "Invalid pitch: fb width must match pitch\n"); + return ERR_PTR(-EINVAL); + } + + return drm_gem_fb_create(dev, file_priv, mode_cmd); +} + static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = { - .fb_create = drm_gem_fb_create, + .fb_create = mxsfb_fb_create, .atomic_check = drm_atomic_helper_check, .atomic_commit = drm_atomic_helper_commit, }; --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -134,7 +134,7 @@ int nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp, - const s32 *oclass, u8 head, void *data, u32 size, u64 syncbuf, + const s32 *oclass, u8 head, void *data, u32 size, s64 syncbuf, struct nv50_dmac *dmac) { struct nouveau_cli *cli = (void *)device->object.client; @@ -169,7 +169,7 @@ if (ret) return ret; - if (!syncbuf) + if (syncbuf < 0) return 0; ret = nvif_object_init(&dmac->base.user, 0xf0000000, NV_DMA_IN_MEMORY, @@ -2160,8 +2160,10 @@ int ret, i; ret = pm_runtime_get_sync(dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put_autosuspend(dev->dev); return ret; + } ret = drm_atomic_helper_setup_commit(state, nonblock); if (ret) --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/dispnv50/disp.h +++ linux-5.8.0/drivers/gpu/drm/nouveau/dispnv50/disp.h @@ -73,7 +73,7 @@ int nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp, const s32 *oclass, u8 head, void *data, u32 size, - u64 syncbuf, struct nv50_dmac *dmac); + s64 syncbuf, struct nv50_dmac *dmac); void nv50_dmac_destroy(struct nv50_dmac *); u32 *evo_wait(struct nv50_dmac *, int nr); --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/dispnv50/head.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/dispnv50/head.c @@ -84,18 +84,20 @@ { u32 mode = 0x00; - if (asyc->dither.mode == DITHERING_MODE_AUTO) { - if (asyh->base.depth > asyh->or.bpc * 3) - mode = DITHERING_MODE_DYNAMIC2X2; - } else { - mode = asyc->dither.mode; - } + if (asyc->dither.mode) { + if (asyc->dither.mode == DITHERING_MODE_AUTO) { + if (asyh->base.depth > asyh->or.bpc * 3) + mode = DITHERING_MODE_DYNAMIC2X2; + } else { + mode = asyc->dither.mode; + } - if (asyc->dither.depth == DITHERING_DEPTH_AUTO) { - if (asyh->or.bpc >= 8) - mode |= DITHERING_DEPTH_8BPC; - } else { - mode |= asyc->dither.depth; + if (asyc->dither.depth == DITHERING_DEPTH_AUTO) { + if (asyh->or.bpc >= 8) + mode |= DITHERING_DEPTH_8BPC; + } else { + mode |= asyc->dither.depth; + } } asyh->dither.enable = mode; --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c @@ -68,7 +68,7 @@ int ret; ret = nv50_dmac_create(&drm->client.device, &disp->disp->object, - &oclass, 0, &args, sizeof(args), 0, + &oclass, 0, &args, sizeof(args), -1, &wndw->wimm); if (ret) { NV_ERROR(drm, "wimm%04x allocation failed: %d\n", oclass, ret); --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/dispnv50/wndw.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/dispnv50/wndw.c @@ -670,6 +670,11 @@ nvif_notify_get(&wndw->notify); } +static const u64 nv50_cursor_format_modifiers[] = { + DRM_FORMAT_MOD_LINEAR, + DRM_FORMAT_MOD_INVALID, +}; + int nv50_wndw_new_(const struct nv50_wndw_func *func, struct drm_device *dev, enum drm_plane_type type, const char *name, int index, @@ -681,6 +686,7 @@ struct nvif_mmu *mmu = &drm->client.mmu; struct nv50_disp *disp = nv50_disp(dev); struct nv50_wndw *wndw; + const u64 *format_modifiers; int nformat; int ret; @@ -696,10 +702,13 @@ for (nformat = 0; format[nformat]; nformat++); - ret = drm_universal_plane_init(dev, &wndw->plane, heads, &nv50_wndw, - format, nformat, - nouveau_display(dev)->format_modifiers, - type, "%s-%d", name, index); + if (type == DRM_PLANE_TYPE_CURSOR) + format_modifiers = nv50_cursor_format_modifiers; + else + format_modifiers = nouveau_display(dev)->format_modifiers; + + ret = drm_universal_plane_init(dev, &wndw->plane, heads, &nv50_wndw, format, nformat, + format_modifiers, type, "%s-%d", name, index); if (ret) { kfree(*pwndw); *pwndw = NULL; --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h +++ linux-5.8.0/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/conn.h @@ -14,6 +14,7 @@ DCB_CONNECTOR_LVDS_SPWG = 0x41, DCB_CONNECTOR_DP = 0x46, DCB_CONNECTOR_eDP = 0x47, + DCB_CONNECTOR_mDP = 0x48, DCB_CONNECTOR_HDMI_0 = 0x60, DCB_CONNECTOR_HDMI_1 = 0x61, DCB_CONNECTOR_HDMI_C = 0x63, --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_chan.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_chan.c @@ -499,6 +499,7 @@ if (ret) { NV_PRINTK(err, cli, "channel failed to initialise, %d\n", ret); nouveau_channel_del(pchan); + goto done; } ret = nouveau_svmm_join((*pchan)->vmm->svmm, (*pchan)->inst); --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_connector.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -572,8 +572,10 @@ pm_runtime_get_noresume(dev->dev); } else { ret = pm_runtime_get_sync(dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put_autosuspend(dev->dev); return conn_status; + } } nv_encoder = nouveau_connector_ddc_detect(connector); @@ -1034,29 +1036,6 @@ return 112000 * duallink_scale; } -enum drm_mode_status -nouveau_conn_mode_clock_valid(const struct drm_display_mode *mode, - const unsigned min_clock, - const unsigned max_clock, - unsigned int *clock_out) -{ - unsigned int clock = mode->clock; - - if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == - DRM_MODE_FLAG_3D_FRAME_PACKING) - clock *= 2; - - if (clock < min_clock) - return MODE_CLOCK_LOW; - if (clock > max_clock) - return MODE_CLOCK_HIGH; - - if (clock_out) - *clock_out = clock; - - return MODE_OK; -} - static enum drm_mode_status nouveau_connector_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) @@ -1064,7 +1043,7 @@ struct nouveau_connector *nv_connector = nouveau_connector(connector); struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; struct drm_encoder *encoder = to_drm_encoder(nv_encoder); - unsigned min_clock = 25000, max_clock = min_clock; + unsigned int min_clock = 25000, max_clock = min_clock, clock = mode->clock; switch (nv_encoder->dcb->type) { case DCB_OUTPUT_LVDS: @@ -1093,8 +1072,15 @@ return MODE_BAD; } - return nouveau_conn_mode_clock_valid(mode, min_clock, max_clock, - NULL); + if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING) + clock *= 2; + + if (clock < min_clock) + return MODE_CLOCK_LOW; + if (clock > max_clock) + return MODE_CLOCK_HIGH; + + return MODE_OK; } static struct drm_encoder * @@ -1253,6 +1239,7 @@ case DCB_CONNECTOR_DMS59_DP0: case DCB_CONNECTOR_DMS59_DP1: case DCB_CONNECTOR_DP : + case DCB_CONNECTOR_mDP : case DCB_CONNECTOR_USB_C : return DRM_MODE_CONNECTOR_DisplayPort; case DCB_CONNECTOR_eDP : return DRM_MODE_CONNECTOR_eDP; case DCB_CONNECTOR_HDMI_0 : --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_debugfs.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_debugfs.c @@ -54,8 +54,10 @@ int ret; ret = pm_runtime_get_sync(drm->dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put_autosuspend(drm->dev->dev); return ret; + } seq_printf(m, "0x%08x\n", nvif_rd32(&drm->client.device.object, 0x101000)); --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_dp.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_dp.c @@ -114,18 +114,25 @@ unsigned *out_clock) { const unsigned min_clock = 25000; - unsigned max_clock, clock; - enum drm_mode_status ret; + unsigned int max_rate, mode_rate, clock = mode->clock; + const u8 bpp = connector->display_info.bpc * 3; if (mode->flags & DRM_MODE_FLAG_INTERLACE && !outp->caps.dp_interlace) return MODE_NO_INTERLACE; - max_clock = outp->dp.link_nr * outp->dp.link_bw; - clock = mode->clock * (connector->display_info.bpc * 3) / 10; + if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING) + clock *= 2; + + max_rate = outp->dp.link_nr * outp->dp.link_bw; + mode_rate = DIV_ROUND_UP(clock * bpp, 8); + if (mode_rate > max_rate) + return MODE_CLOCK_HIGH; + + if (clock < min_clock) + return MODE_CLOCK_LOW; - ret = nouveau_conn_mode_clock_valid(mode, min_clock, max_clock, - &clock); if (out_clock) *out_clock = clock; - return ret; + + return MODE_OK; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_drm.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -1026,8 +1026,10 @@ /* need to bring up power immediately if opening device */ ret = pm_runtime_get_sync(dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put_autosuspend(dev->dev); return ret; + } get_task_comm(tmpname, current); snprintf(name, sizeof(name), "%s[%d]", tmpname, pid_nr(fpriv->pid)); @@ -1109,8 +1111,10 @@ long ret; ret = pm_runtime_get_sync(dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put_autosuspend(dev->dev); return ret; + } switch (_IOC_NR(cmd) - DRM_COMMAND_BASE) { case DRM_NOUVEAU_NVIF: --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -189,8 +189,10 @@ struct nouveau_fbdev *fbcon = info->par; struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev); int ret = pm_runtime_get_sync(drm->dev->dev); - if (ret < 0 && ret != -EACCES) + if (ret < 0 && ret != -EACCES) { + pm_runtime_put(drm->dev->dev); return ret; + } return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_gem.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -45,8 +45,10 @@ int ret; ret = pm_runtime_get_sync(dev); - if (WARN_ON(ret < 0 && ret != -EACCES)) + if (WARN_ON(ret < 0 && ret != -EACCES)) { + pm_runtime_put_autosuspend(dev); return; + } if (gem->import_attach) drm_prime_gem_destroy(gem, nvbo->bo.sg); @@ -195,7 +197,8 @@ * to the caller, instead of a normal nouveau_bo ttm reference. */ ret = drm_gem_object_init(drm->dev, &nvbo->bo.base, size); if (ret) { - nouveau_bo_ref(NULL, &nvbo); + drm_gem_object_release(&nvbo->bo.base); + kfree(nvbo); return ret; } @@ -566,8 +569,10 @@ NV_PRINTK(err, cli, "validating bo list\n"); validate_fini(op, chan, NULL, NULL); return ret; + } else if (ret > 0) { + *apply_relocs = true; } - *apply_relocs = ret; + return 0; } @@ -670,7 +675,6 @@ nouveau_bo_wr32(nvbo, r->reloc_bo_offset >> 2, data); } - u_free(reloc); return ret; } @@ -881,9 +885,10 @@ break; } } - u_free(reloc); } out_prevalid: + if (!IS_ERR(reloc)) + u_free(reloc); u_free(bo); u_free(push); --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_mem.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_mem.c @@ -176,6 +176,8 @@ nouveau_mem_del(struct ttm_mem_reg *reg) { struct nouveau_mem *mem = nouveau_mem(reg); + if (!mem) + return; nouveau_mem_fini(mem); kfree(reg->mm_node); reg->mm_node = NULL; --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_sgdma.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_sgdma.c @@ -96,12 +96,9 @@ else nvbe->ttm.ttm.func = &nv50_sgdma_backend; - if (ttm_dma_tt_init(&nvbe->ttm, bo, page_flags)) - /* - * A failing ttm_dma_tt_init() will call ttm_tt_destroy() - * and thus our nouveau_sgdma_destroy() hook, so we don't need - * to free nvbe here. - */ + if (ttm_dma_tt_init(&nvbe->ttm, bo, page_flags)) { + kfree(nvbe); return NULL; + } return &nvbe->ttm.ttm; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nouveau_svm.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nouveau_svm.c @@ -116,11 +116,11 @@ struct nouveau_cli *cli = nouveau_cli(file_priv); struct drm_nouveau_svm_bind *args = data; unsigned target, cmd, priority; - unsigned long addr, end, size; + unsigned long addr, end; struct mm_struct *mm; args->va_start &= PAGE_MASK; - args->va_end &= PAGE_MASK; + args->va_end = ALIGN(args->va_end, PAGE_SIZE); /* Sanity check arguments */ if (args->reserved0 || args->reserved1) @@ -129,8 +129,6 @@ return -EINVAL; if (args->va_start >= args->va_end) return -EINVAL; - if (!args->npages) - return -EINVAL; cmd = args->header >> NOUVEAU_SVM_BIND_COMMAND_SHIFT; cmd &= NOUVEAU_SVM_BIND_COMMAND_MASK; @@ -162,12 +160,6 @@ if (args->stride) return -EINVAL; - size = ((unsigned long)args->npages) << PAGE_SHIFT; - if ((args->va_start + size) <= args->va_start) - return -EINVAL; - if ((args->va_start + size) > args->va_end) - return -EINVAL; - /* * Ok we are ask to do something sane, for now we only support migrate * commands but we will add things like memory policy (what to do on @@ -182,7 +174,7 @@ return -EINVAL; } - for (addr = args->va_start, end = args->va_start + size; addr < end;) { + for (addr = args->va_start, end = args->va_end; addr < end;) { struct vm_area_struct *vma; unsigned long next; @@ -326,6 +318,10 @@ struct drm_nouveau_svm_init *args = data; int ret; + /* We need to fail if svm is disabled */ + if (!cli->drm->svm) + return -ENOSYS; + /* Allocate tracking for SVM-enabled VMM. */ if (!(svmm = kzalloc(sizeof(*svmm), GFP_KERNEL))) return -ENOMEM; --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c @@ -2924,17 +2924,34 @@ } } +/* returns true if the GPU is in the CPU native byte order */ static inline bool nvkm_device_endianness(struct nvkm_device *device) { - u32 boot1 = nvkm_rd32(device, 0x000004) & 0x01000001; #ifdef __BIG_ENDIAN - if (!boot1) - return false; + const bool big_endian = true; #else - if (boot1) - return false; + const bool big_endian = false; #endif + + /* Read NV_PMC_BOOT_1, and assume non-functional endian switch if it + * doesn't contain the expected values. + */ + u32 pmc_boot_1 = nvkm_rd32(device, 0x000004); + if (pmc_boot_1 && pmc_boot_1 != 0x01000001) + return !big_endian; /* Assume GPU is LE in this case. */ + + /* 0 means LE and 0x01000001 means BE GPU. Condition is true when + * GPU/CPU endianness don't match. + */ + if (big_endian == !pmc_boot_1) { + nvkm_wr32(device, 0x000004, 0x01000001); + nvkm_rd32(device, 0x000000); + if (nvkm_rd32(device, 0x000004) != (big_endian ? 0x01000001 : 0x00000000)) + return !big_endian; /* Assume GPU is LE on any unexpected read-back. */ + } + + /* CPU/GPU endianness should (hopefully) match. */ return true; } @@ -2987,14 +3004,10 @@ if (detect) { /* switch mmio to cpu's native endianness */ if (!nvkm_device_endianness(device)) { - nvkm_wr32(device, 0x000004, 0x01000001); - nvkm_rd32(device, 0x000000); - if (!nvkm_device_endianness(device)) { - nvdev_error(device, - "GPU not supported on big-endian\n"); - ret = -ENOSYS; - goto done; - } + nvdev_error(device, + "Couldn't switch GPU to CPUs endianess\n"); + ret = -ENOSYS; + goto done; } boot0 = nvkm_rd32(device, 0x000000); @@ -3149,6 +3162,7 @@ case 0x168: device->chip = &nv168_chipset; break; default: nvdev_error(device, "unknown chipset (%08x)\n", boot0); + ret = -ENODEV; goto done; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c @@ -75,7 +75,7 @@ nvkm_debug(subdev, "%08x: type %02x, %d bytes\n", image.base, image.type, image.size); - if (!shadow_fetch(bios, mthd, image.size)) { + if (!shadow_fetch(bios, mthd, image.base + image.size)) { nvkm_debug(subdev, "%08x: fetch failed\n", image.base); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c @@ -33,7 +33,7 @@ gm200_i2c_aux_fini(struct gm200_i2c_aux *aux) { struct nvkm_device *device = aux->base.pad->i2c->subdev.device; - nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000); + nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000); } static int @@ -54,10 +54,10 @@ AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl); return -EBUSY; } - } while (ctrl & 0x03010000); + } while (ctrl & 0x07010000); /* set some magic, and wait up to 1ms for it to appear */ - nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq); + nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq); timeout = 1000; do { ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50)); @@ -67,7 +67,7 @@ gm200_i2c_aux_fini(aux); return -EBUSY; } - } while ((ctrl & 0x03000000) != urep); + } while ((ctrl & 0x07000000) != urep); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gf100.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gf100.c @@ -22,6 +22,7 @@ * Authors: Ben Skeggs */ #include "priv.h" +#include static void gf100_ibus_intr_hub(struct nvkm_subdev *ibus, int i) @@ -31,7 +32,6 @@ u32 data = nvkm_rd32(device, 0x122124 + (i * 0x0400)); u32 stat = nvkm_rd32(device, 0x122128 + (i * 0x0400)); nvkm_debug(ibus, "HUB%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x122128 + (i * 0x0400), 0x00000200, 0x00000000); } static void @@ -42,7 +42,6 @@ u32 data = nvkm_rd32(device, 0x124124 + (i * 0x0400)); u32 stat = nvkm_rd32(device, 0x124128 + (i * 0x0400)); nvkm_debug(ibus, "ROP%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x124128 + (i * 0x0400), 0x00000200, 0x00000000); } static void @@ -53,7 +52,6 @@ u32 data = nvkm_rd32(device, 0x128124 + (i * 0x0400)); u32 stat = nvkm_rd32(device, 0x128128 + (i * 0x0400)); nvkm_debug(ibus, "GPC%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x128128 + (i * 0x0400), 0x00000200, 0x00000000); } void @@ -90,6 +88,12 @@ intr1 &= ~stat; } } + + nvkm_mask(device, 0x121c4c, 0x0000003f, 0x00000002); + nvkm_msec(device, 2000, + if (!(nvkm_rd32(device, 0x121c4c) & 0x0000003f)) + break; + ); } static int --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gk104.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gk104.c @@ -22,6 +22,7 @@ * Authors: Ben Skeggs */ #include "priv.h" +#include static void gk104_ibus_intr_hub(struct nvkm_subdev *ibus, int i) @@ -31,7 +32,6 @@ u32 data = nvkm_rd32(device, 0x122124 + (i * 0x0800)); u32 stat = nvkm_rd32(device, 0x122128 + (i * 0x0800)); nvkm_debug(ibus, "HUB%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x122128 + (i * 0x0800), 0x00000200, 0x00000000); } static void @@ -42,7 +42,6 @@ u32 data = nvkm_rd32(device, 0x124124 + (i * 0x0800)); u32 stat = nvkm_rd32(device, 0x124128 + (i * 0x0800)); nvkm_debug(ibus, "ROP%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x124128 + (i * 0x0800), 0x00000200, 0x00000000); } static void @@ -53,7 +52,6 @@ u32 data = nvkm_rd32(device, 0x128124 + (i * 0x0800)); u32 stat = nvkm_rd32(device, 0x128128 + (i * 0x0800)); nvkm_debug(ibus, "GPC%d: %06x %08x (%08x)\n", i, addr, data, stat); - nvkm_mask(device, 0x128128 + (i * 0x0800), 0x00000200, 0x00000000); } void @@ -90,6 +88,12 @@ intr1 &= ~stat; } } + + nvkm_mask(device, 0x12004c, 0x0000003f, 0x00000002); + nvkm_msec(device, 2000, + if (!(nvkm_rd32(device, 0x12004c) & 0x0000003f)) + break; + ); } static int --- linux-5.8.0.orig/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c +++ linux-5.8.0/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c @@ -316,9 +316,9 @@ { struct nvkm_device *device = mmu->subdev.device; struct nvkm_mm *mm = &device->fb->ram->vram; - const u32 sizeN = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NORMAL); - const u32 sizeU = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NOMAP); - const u32 sizeM = nvkm_mm_heap_size(mm, NVKM_RAM_MM_MIXED); + const u64 sizeN = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NORMAL); + const u64 sizeU = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NOMAP); + const u64 sizeM = nvkm_mm_heap_size(mm, NVKM_RAM_MM_MIXED); u8 type = NVKM_MEM_KIND * !!mmu->func->kind; u8 heap = NVKM_MEM_VRAM; int heapM, heapN, heapU; --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/dss/dispc.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/dss/dispc.c @@ -4915,6 +4915,7 @@ static const struct dev_pm_ops dispc_pm_ops = { .runtime_suspend = dispc_runtime_suspend, .runtime_resume = dispc_runtime_resume, + SET_LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) }; struct platform_driver omap_dispchw_driver = { --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/dss/dsi.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/dss/dsi.c @@ -5467,6 +5467,7 @@ static const struct dev_pm_ops dsi_pm_ops = { .runtime_suspend = dsi_runtime_suspend, .runtime_resume = dsi_runtime_resume, + SET_LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) }; struct platform_driver omap_dsihw_driver = { --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/dss/dss.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/dss/dss.c @@ -1614,6 +1614,7 @@ static const struct dev_pm_ops dss_pm_ops = { .runtime_suspend = dss_runtime_suspend, .runtime_resume = dss_runtime_resume, + SET_LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) }; struct platform_driver omap_dsshw_driver = { --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/dss/sdi.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/dss/sdi.c @@ -194,8 +194,7 @@ sdi->pixelclock = adjusted_mode->clock * 1000; } -static void sdi_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) +static void sdi_bridge_enable(struct drm_bridge *bridge) { struct sdi_device *sdi = drm_bridge_to_sdi(bridge); struct dispc_clock_info dispc_cinfo; @@ -258,8 +257,7 @@ regulator_disable(sdi->vdds_sdi_reg); } -static void sdi_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) +static void sdi_bridge_disable(struct drm_bridge *bridge) { struct sdi_device *sdi = drm_bridge_to_sdi(bridge); @@ -277,8 +275,8 @@ .mode_valid = sdi_bridge_mode_valid, .mode_fixup = sdi_bridge_mode_fixup, .mode_set = sdi_bridge_mode_set, - .atomic_enable = sdi_bridge_enable, - .atomic_disable = sdi_bridge_disable, + .enable = sdi_bridge_enable, + .disable = sdi_bridge_disable, }; static void sdi_bridge_init(struct sdi_device *sdi) --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/dss/venc.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/dss/venc.c @@ -902,6 +902,7 @@ static const struct dev_pm_ops venc_pm_ops = { .runtime_suspend = venc_runtime_suspend, .runtime_resume = venc_runtime_resume, + SET_LATE_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) }; static const struct of_device_id venc_of_match[] = { --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/omap_crtc.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/omap_crtc.c @@ -451,11 +451,12 @@ if (omap_state->manually_updated) return; - spin_lock_irq(&crtc->dev->event_lock); drm_crtc_vblank_on(crtc); + ret = drm_crtc_vblank_get(crtc); WARN_ON(ret != 0); + spin_lock_irq(&crtc->dev->event_lock); omap_crtc_arm_event(crtc); spin_unlock_irq(&crtc->dev->event_lock); } @@ -697,14 +698,16 @@ static void omap_crtc_reset(struct drm_crtc *crtc) { + struct omap_crtc_state *state; + if (crtc->state) __drm_atomic_helper_crtc_destroy_state(crtc->state); kfree(crtc->state); - crtc->state = kzalloc(sizeof(struct omap_crtc_state), GFP_KERNEL); - if (crtc->state) - crtc->state->crtc = crtc; + state = kzalloc(sizeof(*state), GFP_KERNEL); + if (state) + __drm_atomic_helper_crtc_reset(crtc, &state->base); } static struct drm_crtc_state * --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/omap_dmm_tiler.c @@ -889,6 +889,7 @@ &omap_dmm->refill_pa, GFP_KERNEL); if (!omap_dmm->refill_va) { dev_err(&dev->dev, "could not allocate refill memory\n"); + ret = -ENOMEM; goto fail; } --- linux-5.8.0.orig/drivers/gpu/drm/omapdrm/omap_drv.c +++ linux-5.8.0/drivers/gpu/drm/omapdrm/omap_drv.c @@ -595,7 +595,6 @@ { const struct soc_device_attribute *soc; struct drm_device *ddev; - unsigned int i; int ret; DBG("%s", dev_name(dev)); @@ -642,9 +641,6 @@ goto err_cleanup_modeset; } - for (i = 0; i < priv->num_pipes; i++) - drm_crtc_vblank_off(priv->pipes[i].crtc); - omap_fbdev_init(ddev); drm_kms_helper_poll_init(ddev); --- linux-5.8.0.orig/drivers/gpu/drm/panel/panel-elida-kd35t133.c +++ linux-5.8.0/drivers/gpu/drm/panel/panel-elida-kd35t133.c @@ -276,7 +276,8 @@ dsi->lanes = 1; dsi->format = MIPI_DSI_FMT_RGB888; dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | - MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET; + MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET | + MIPI_DSI_CLOCK_NON_CONTINUOUS; drm_panel_init(&ctx->panel, &dsi->dev, &kd35t133_funcs, DRM_MODE_CONNECTOR_DSI); --- linux-5.8.0.orig/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c +++ linux-5.8.0/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c @@ -454,7 +454,7 @@ dsi->lanes = 2; dsi->format = MIPI_DSI_FMT_RGB888; dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | - MIPI_DSI_MODE_LPM; + MIPI_DSI_MODE_LPM | MIPI_DSI_CLOCK_NON_CONTINUOUS; drm_panel_init(&ctx->panel, dev, &otm8009a_drm_funcs, DRM_MODE_CONNECTOR_DSI); --- linux-5.8.0.orig/drivers/gpu/drm/panel/panel-simple.c +++ linux-5.8.0/drivers/gpu/drm/panel/panel-simple.c @@ -1238,6 +1238,7 @@ .vsync_end = 1080 + 3 + 6, .vtotal = 1080 + 3 + 6 + 31, .vrefresh = 60, + .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, }; /* Also used for boe_nv133fhm_n62 */ @@ -1717,7 +1718,7 @@ .vsync_end = 240 + 2 + 6, .vtotal = 240 + 2 + 6 + 2, .vrefresh = 60, - .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC, + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, }; static const struct panel_desc frida_frd350h54004 = { @@ -2304,7 +2305,7 @@ static const struct panel_desc lg_lb070wv8 = { .modes = &lg_lb070wv8_mode, .num_modes = 1, - .bpc = 16, + .bpc = 8, .size = { .width = 151, .height = 91, @@ -2862,12 +2863,12 @@ static const struct panel_desc ortustech_com43h4m85ulc = { .modes = &ortustech_com43h4m85ulc_mode, .num_modes = 1, - .bpc = 8, + .bpc = 6, .size = { .width = 56, .height = 93, }, - .bus_format = MEDIA_BUS_FMT_RGB888_1X24, + .bus_format = MEDIA_BUS_FMT_RGB666_1X18, .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE, .connector_type = DRM_MODE_CONNECTOR_DPI, }; --- linux-5.8.0.orig/drivers/gpu/drm/panel/panel-sony-acx565akm.c +++ linux-5.8.0/drivers/gpu/drm/panel/panel-sony-acx565akm.c @@ -630,7 +630,7 @@ lcd->spi = spi; mutex_init(&lcd->mutex); - lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_LOW); + lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(lcd->reset_gpio)) { dev_err(&spi->dev, "failed to get reset GPIO\n"); return PTR_ERR(lcd->reset_gpio); --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_device.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_device.c @@ -212,60 +212,69 @@ return err; } + err = panfrost_devfreq_init(pfdev); + if (err) { + if (err != -EPROBE_DEFER) + dev_err(pfdev->dev, "devfreq init failed %d\n", err); + goto out_clk; + } + err = panfrost_regulator_init(pfdev); if (err) { dev_err(pfdev->dev, "regulator init failed %d\n", err); - goto err_out0; + goto out_devfreq; } err = panfrost_reset_init(pfdev); if (err) { dev_err(pfdev->dev, "reset init failed %d\n", err); - goto err_out1; + goto out_regulator; } err = panfrost_pm_domain_init(pfdev); if (err) - goto err_out2; + goto out_reset; res = platform_get_resource(pfdev->pdev, IORESOURCE_MEM, 0); pfdev->iomem = devm_ioremap_resource(pfdev->dev, res); if (IS_ERR(pfdev->iomem)) { dev_err(pfdev->dev, "failed to ioremap iomem\n"); err = PTR_ERR(pfdev->iomem); - goto err_out3; + goto out_pm_domain; } err = panfrost_gpu_init(pfdev); if (err) - goto err_out3; + goto out_pm_domain; err = panfrost_mmu_init(pfdev); if (err) - goto err_out4; + goto out_gpu; err = panfrost_job_init(pfdev); if (err) - goto err_out5; + goto out_mmu; err = panfrost_perfcnt_init(pfdev); if (err) - goto err_out6; + goto out_job; return 0; -err_out6: +out_job: panfrost_job_fini(pfdev); -err_out5: +out_mmu: panfrost_mmu_fini(pfdev); -err_out4: +out_gpu: panfrost_gpu_fini(pfdev); -err_out3: +out_pm_domain: panfrost_pm_domain_fini(pfdev); -err_out2: +out_reset: panfrost_reset_fini(pfdev); -err_out1: +out_regulator: panfrost_regulator_fini(pfdev); -err_out0: +out_devfreq: + panfrost_devfreq_fini(pfdev); +out_clk: panfrost_clk_fini(pfdev); return err; } @@ -278,6 +287,7 @@ panfrost_gpu_fini(pfdev); panfrost_pm_domain_fini(pfdev); panfrost_reset_fini(pfdev); + panfrost_devfreq_fini(pfdev); panfrost_regulator_fini(pfdev); panfrost_clk_fini(pfdev); } --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_device.h +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_device.h @@ -69,6 +69,9 @@ int num_pm_domains; /* Only required if num_pm_domains > 1. */ const char * const *pm_domain_names; + + /* Vendor implementation quirks callback */ + void (*vendor_quirk)(struct panfrost_device *pfdev); }; struct panfrost_device { @@ -84,6 +87,7 @@ /* pm_domains for devices with more than one. */ struct device *pm_domain_devs[MAX_PM_DOMAINS]; struct device_link *pm_domain_links[MAX_PM_DOMAINS]; + bool coherent; struct panfrost_features features; const struct panfrost_compatible *comp; --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_drv.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -14,7 +14,6 @@ #include #include "panfrost_device.h" -#include "panfrost_devfreq.h" #include "panfrost_gem.h" #include "panfrost_mmu.h" #include "panfrost_job.h" @@ -588,6 +587,8 @@ if (!pfdev->comp) return -ENODEV; + pfdev->coherent = device_get_dma_attr(&pdev->dev) == DEV_DMA_COHERENT; + /* Allocate and initialze the DRM device. */ ddev = drm_dev_alloc(&panfrost_drm_driver, &pdev->dev); if (IS_ERR(ddev)) @@ -606,13 +607,6 @@ goto err_out0; } - err = panfrost_devfreq_init(pfdev); - if (err) { - if (err != -EPROBE_DEFER) - dev_err(&pdev->dev, "Fatal error during devfreq init\n"); - goto err_out1; - } - pm_runtime_set_active(pfdev->dev); pm_runtime_mark_last_busy(pfdev->dev); pm_runtime_enable(pfdev->dev); @@ -625,17 +619,16 @@ */ err = drm_dev_register(ddev, 0); if (err < 0) - goto err_out2; + goto err_out1; panfrost_gem_shrinker_init(ddev); return 0; -err_out2: - pm_runtime_disable(pfdev->dev); - panfrost_devfreq_fini(pfdev); err_out1: + pm_runtime_disable(pfdev->dev); panfrost_device_fini(pfdev); + pm_runtime_set_suspended(pfdev->dev); err_out0: drm_dev_put(ddev); return err; @@ -650,10 +643,9 @@ panfrost_gem_shrinker_cleanup(ddev); pm_runtime_get_sync(pfdev->dev); - panfrost_devfreq_fini(pfdev); - panfrost_device_fini(pfdev); - pm_runtime_put_sync_suspend(pfdev->dev); pm_runtime_disable(pfdev->dev); + panfrost_device_fini(pfdev); + pm_runtime_set_suspended(pfdev->dev); drm_dev_put(ddev); return 0; @@ -667,7 +659,18 @@ .pm_domain_names = NULL, }; +static const struct panfrost_compatible amlogic_data = { + .num_supplies = ARRAY_SIZE(default_supplies), + .supply_names = default_supplies, + .vendor_quirk = panfrost_gpu_amlogic_quirk, +}; + static const struct of_device_id dt_match[] = { + /* Set first to probe before the generic compatibles */ + { .compatible = "amlogic,meson-gxm-mali", + .data = &amlogic_data, }, + { .compatible = "amlogic,meson-g12a-mali", + .data = &amlogic_data, }, { .compatible = "arm,mali-t604", .data = &default_data, }, { .compatible = "arm,mali-t624", .data = &default_data, }, { .compatible = "arm,mali-t628", .data = &default_data, }, --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_gem.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_gem.c @@ -41,12 +41,12 @@ for (i = 0; i < n_sgt; i++) { if (bo->sgts[i].sgl) { - dma_unmap_sg(pfdev->dev, bo->sgts[i].sgl, - bo->sgts[i].nents, DMA_BIDIRECTIONAL); + dma_unmap_sgtable(pfdev->dev, &bo->sgts[i], + DMA_BIDIRECTIONAL, 0); sg_free_table(&bo->sgts[i]); } } - kfree(bo->sgts); + kvfree(bo->sgts); } drm_gem_shmem_free_object(obj); @@ -105,14 +105,12 @@ kref_put(&mapping->refcount, panfrost_gem_mapping_release); } -void panfrost_gem_teardown_mappings(struct panfrost_gem_object *bo) +void panfrost_gem_teardown_mappings_locked(struct panfrost_gem_object *bo) { struct panfrost_gem_mapping *mapping; - mutex_lock(&bo->mappings.lock); list_for_each_entry(mapping, &bo->mappings.list, node) panfrost_gem_teardown_mapping(mapping); - mutex_unlock(&bo->mappings.lock); } int panfrost_gem_open(struct drm_gem_object *obj, struct drm_file *file_priv) @@ -220,6 +218,7 @@ */ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t size) { + struct panfrost_device *pfdev = dev->dev_private; struct panfrost_gem_object *obj; obj = kzalloc(sizeof(*obj), GFP_KERNEL); @@ -229,6 +228,7 @@ INIT_LIST_HEAD(&obj->mappings.list); mutex_init(&obj->mappings.lock); obj->base.base.funcs = &panfrost_gem_funcs; + obj->base.map_cached = pfdev->coherent; return &obj->base.base; } --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_gem.h +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_gem.h @@ -82,7 +82,7 @@ panfrost_gem_mapping_get(struct panfrost_gem_object *bo, struct panfrost_file_priv *priv); void panfrost_gem_mapping_put(struct panfrost_gem_mapping *mapping); -void panfrost_gem_teardown_mappings(struct panfrost_gem_object *bo); +void panfrost_gem_teardown_mappings_locked(struct panfrost_gem_object *bo); void panfrost_gem_shrinker_init(struct drm_device *dev); void panfrost_gem_shrinker_cleanup(struct drm_device *dev); --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c @@ -40,18 +40,26 @@ { struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); struct panfrost_gem_object *bo = to_panfrost_bo(obj); + bool ret = false; if (atomic_read(&bo->gpu_usecount)) return false; - if (!mutex_trylock(&shmem->pages_lock)) + if (!mutex_trylock(&bo->mappings.lock)) return false; - panfrost_gem_teardown_mappings(bo); + if (!mutex_trylock(&shmem->pages_lock)) + goto unlock_mappings; + + panfrost_gem_teardown_mappings_locked(bo); drm_gem_shmem_purge_locked(obj); + ret = true; mutex_unlock(&shmem->pages_lock); - return true; + +unlock_mappings: + mutex_unlock(&bo->mappings.lock); + return ret; } static unsigned long --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_gpu.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_gpu.c @@ -75,6 +75,17 @@ return 0; } +void panfrost_gpu_amlogic_quirk(struct panfrost_device *pfdev) +{ + /* + * The Amlogic integrated Mali-T820, Mali-G31 & Mali-G52 needs + * these undocumented bits in GPU_PWR_OVERRIDE1 to be set in order + * to operate correctly. + */ + gpu_write(pfdev, GPU_PWR_KEY, GPU_PWR_KEY_UNLOCK); + gpu_write(pfdev, GPU_PWR_OVERRIDE1, 0xfff | (0x20 << 16)); +} + static void panfrost_gpu_init_quirks(struct panfrost_device *pfdev) { u32 quirks = 0; @@ -135,6 +146,10 @@ if (quirks) gpu_write(pfdev, GPU_JM_CONFIG, quirks); + + /* Here goes platform specific quirks */ + if (pfdev->comp->vendor_quirk) + pfdev->comp->vendor_quirk(pfdev); } #define MAX_HW_REVS 6 @@ -304,16 +319,18 @@ int ret; u32 val; + panfrost_gpu_init_quirks(pfdev); + /* Just turn on everything for now */ gpu_write(pfdev, L2_PWRON_LO, pfdev->features.l2_present); ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO, - val, val == pfdev->features.l2_present, 100, 1000); + val, val == pfdev->features.l2_present, 100, 20000); if (ret) dev_err(pfdev->dev, "error powering up gpu L2"); gpu_write(pfdev, SHADER_PWRON_LO, pfdev->features.shader_present); ret = readl_relaxed_poll_timeout(pfdev->iomem + SHADER_READY_LO, - val, val == pfdev->features.shader_present, 100, 1000); + val, val == pfdev->features.shader_present, 100, 20000); if (ret) dev_err(pfdev->dev, "error powering up gpu shader"); @@ -355,7 +372,6 @@ return err; } - panfrost_gpu_init_quirks(pfdev); panfrost_gpu_power_on(pfdev); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_gpu.h +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_gpu.h @@ -16,4 +16,6 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev); void panfrost_gpu_power_off(struct panfrost_device *pfdev); +void panfrost_gpu_amlogic_quirk(struct panfrost_device *pfdev); + #endif --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_job.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_job.c @@ -25,7 +25,8 @@ struct panfrost_queue_state { struct drm_gpu_scheduler sched; - + bool stopped; + struct mutex lock; u64 fence_context; u64 emit_seqno; }; @@ -145,6 +146,8 @@ u64 jc_head = job->jc; int ret; + panfrost_devfreq_record_busy(pfdev); + ret = pm_runtime_get_sync(pfdev->dev); if (ret < 0) return; @@ -155,7 +158,6 @@ } cfg = panfrost_mmu_as_get(pfdev, &job->file_priv->mmu); - panfrost_devfreq_record_busy(pfdev); job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF); job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32); @@ -369,6 +371,24 @@ job_write(pfdev, JOB_INT_MASK, irq_mask); } +static bool panfrost_scheduler_stop(struct panfrost_queue_state *queue, + struct drm_sched_job *bad) +{ + bool stopped = false; + + mutex_lock(&queue->lock); + if (!queue->stopped) { + drm_sched_stop(&queue->sched, bad); + if (bad) + drm_sched_increase_karma(bad); + queue->stopped = true; + stopped = true; + } + mutex_unlock(&queue->lock); + + return stopped; +} + static void panfrost_job_timedout(struct drm_sched_job *sched_job) { struct panfrost_job *job = to_panfrost_job(sched_job); @@ -392,40 +412,60 @@ job_read(pfdev, JS_TAIL_LO(js)), sched_job); + /* Scheduler is already stopped, nothing to do. */ + if (!panfrost_scheduler_stop(&pfdev->js->queue[js], sched_job)) + return; + if (!mutex_trylock(&pfdev->reset_lock)) return; for (i = 0; i < NUM_JOB_SLOTS; i++) { struct drm_gpu_scheduler *sched = &pfdev->js->queue[i].sched; - drm_sched_stop(sched, sched_job); - if (js != i) - /* Ensure any timeouts on other slots have finished */ + /* + * If the queue is still active, make sure we wait for any + * pending timeouts. + */ + if (!pfdev->js->queue[i].stopped) + cancel_delayed_work_sync(&sched->work_tdr); + + /* + * If the scheduler was not already stopped, there's a tiny + * chance a timeout has expired just before we stopped it, and + * drm_sched_stop() does not flush pending works. Let's flush + * them now so the timeout handler doesn't get called in the + * middle of a reset. + */ + if (panfrost_scheduler_stop(&pfdev->js->queue[i], NULL)) cancel_delayed_work_sync(&sched->work_tdr); - } - drm_sched_increase_karma(sched_job); + /* + * Now that we cancelled the pending timeouts, we can safely + * reset the stopped state. + */ + pfdev->js->queue[i].stopped = false; + } spin_lock_irqsave(&pfdev->js->job_lock, flags); for (i = 0; i < NUM_JOB_SLOTS; i++) { if (pfdev->jobs[i]) { pm_runtime_put_noidle(pfdev->dev); + panfrost_devfreq_record_idle(pfdev); pfdev->jobs[i] = NULL; } } spin_unlock_irqrestore(&pfdev->js->job_lock, flags); - panfrost_devfreq_record_idle(pfdev); panfrost_device_reset(pfdev); for (i = 0; i < NUM_JOB_SLOTS; i++) drm_sched_resubmit_jobs(&pfdev->js->queue[i].sched); + mutex_unlock(&pfdev->reset_lock); + /* restart scheduler after GPU is usable again */ for (i = 0; i < NUM_JOB_SLOTS; i++) drm_sched_start(&pfdev->js->queue[i].sched, true); - - mutex_unlock(&pfdev->reset_lock); } static const struct drm_sched_backend_ops panfrost_sched_ops = { @@ -515,6 +555,8 @@ } for (j = 0; j < NUM_JOB_SLOTS; j++) { + mutex_init(&js->queue[j].lock); + js->queue[j].fence_context = dma_fence_context_alloc(1); ret = drm_sched_init(&js->queue[j].sched, @@ -545,8 +587,10 @@ job_write(pfdev, JOB_INT_MASK, 0); - for (j = 0; j < NUM_JOB_SLOTS; j++) + for (j = 0; j < NUM_JOB_SLOTS; j++) { drm_sched_fini(&js->queue[j].sched); + mutex_destroy(&js->queue[j].lock); + } } --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -253,7 +253,7 @@ struct io_pgtable_ops *ops = mmu->pgtbl_ops; u64 start_iova = iova; - for_each_sg(sgt->sgl, sgl, sgt->nents, count) { + for_each_sgtable_dma_sg(sgt, sgl, count) { unsigned long paddr = sg_dma_address(sgl); size_t len = sg_dma_len(sgl); @@ -371,6 +371,7 @@ .pgsize_bitmap = SZ_4K | SZ_2M, .ias = FIELD_GET(0xff, pfdev->features.mmu_features), .oas = FIELD_GET(0xff00, pfdev->features.mmu_features), + .coherent_walk = pfdev->coherent, .tlb = &mmu_tlb_ops, .iommu_dev = pfdev->dev, }; @@ -486,7 +487,7 @@ pages = kvmalloc_array(bo->base.base.size >> PAGE_SHIFT, sizeof(struct page *), GFP_KERNEL | __GFP_ZERO); if (!pages) { - kfree(bo->sgts); + kvfree(bo->sgts); bo->sgts = NULL; mutex_unlock(&bo->base.pages_lock); ret = -ENOMEM; @@ -517,10 +518,9 @@ if (ret) goto err_pages; - if (!dma_map_sg(pfdev->dev, sgt->sgl, sgt->nents, DMA_BIDIRECTIONAL)) { - ret = -EINVAL; + ret = dma_map_sgtable(pfdev->dev, sgt, DMA_BIDIRECTIONAL, 0); + if (ret) goto err_map; - } mmu_map_sg(pfdev, bomapping->mmu, addr, IOMMU_WRITE | IOMMU_READ | IOMMU_NOEXEC, sgt); --- linux-5.8.0.orig/drivers/gpu/drm/panfrost/panfrost_regs.h +++ linux-5.8.0/drivers/gpu/drm/panfrost/panfrost_regs.h @@ -51,6 +51,10 @@ #define GPU_STATUS 0x34 #define GPU_STATUS_PRFCNT_ACTIVE BIT(2) #define GPU_LATEST_FLUSH_ID 0x38 +#define GPU_PWR_KEY 0x50 /* (WO) Power manager key register */ +#define GPU_PWR_KEY_UNLOCK 0x2968A819 +#define GPU_PWR_OVERRIDE0 0x54 /* (RW) Power manager override settings */ +#define GPU_PWR_OVERRIDE1 0x58 /* (RW) Power manager override settings */ #define GPU_FAULT_STATUS 0x3C #define GPU_FAULT_ADDRESS_LO 0x40 #define GPU_FAULT_ADDRESS_HI 0x44 --- linux-5.8.0.orig/drivers/gpu/drm/qxl/qxl_display.c +++ linux-5.8.0/drivers/gpu/drm/qxl/qxl_display.c @@ -325,6 +325,7 @@ head.id = i; head.flags = 0; + head.surface_id = 0; oldcount = qdev->monitors_config->count; if (crtc->state->active) { struct drm_display_mode *mode = &crtc->mode; --- linux-5.8.0.orig/drivers/gpu/drm/radeon/ci_dpm.c +++ linux-5.8.0/drivers/gpu/drm/radeon/ci_dpm.c @@ -4351,7 +4351,7 @@ table->mc_reg_table_entry[k].mc_data[j] |= 0x100; } j++; - if (j > SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE) + if (j >= SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE) return -EINVAL; if (!pi->mem_gddr5) { --- linux-5.8.0.orig/drivers/gpu/drm/radeon/radeon_connectors.c +++ linux-5.8.0/drivers/gpu/drm/radeon/radeon_connectors.c @@ -879,8 +879,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (encoder) { @@ -1025,8 +1027,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } encoder = radeon_best_single_encoder(connector); @@ -1163,8 +1167,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } encoder = radeon_best_single_encoder(connector); @@ -1247,8 +1253,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (radeon_connector->detected_hpd_without_ddc) { @@ -1657,8 +1665,10 @@ if (!drm_kms_helper_is_poll_worker()) { r = pm_runtime_get_sync(connector->dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(connector->dev->dev); return connector_status_disconnected; + } } if (!force && radeon_check_hpd_status_unchanged(connector)) { --- linux-5.8.0.orig/drivers/gpu/drm/radeon/radeon_display.c +++ linux-5.8.0/drivers/gpu/drm/radeon/radeon_display.c @@ -635,8 +635,10 @@ dev = set->crtc->dev; ret = pm_runtime_get_sync(dev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(dev->dev); return ret; + } ret = drm_crtc_helper_set_config(set, ctx); --- linux-5.8.0.orig/drivers/gpu/drm/radeon/radeon_drv.c +++ linux-5.8.0/drivers/gpu/drm/radeon/radeon_drv.c @@ -171,12 +171,7 @@ int radeon_modeset = -1; int radeon_dynclks = -1; int radeon_r4xx_atom = 0; -#ifdef __powerpc__ -/* Default to PCI on PowerPC (fdo #95017) */ int radeon_agpmode = -1; -#else -int radeon_agpmode = 0; -#endif int radeon_vram_limit = 0; int radeon_gart_size = -1; /* auto */ int radeon_benchmarking = 0; @@ -549,8 +544,10 @@ long ret; dev = file_priv->minor->dev; ret = pm_runtime_get_sync(dev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(dev->dev); return ret; + } ret = drm_ioctl(filp, cmd, arg); --- linux-5.8.0.orig/drivers/gpu/drm/radeon/radeon_kms.c +++ linux-5.8.0/drivers/gpu/drm/radeon/radeon_kms.c @@ -638,8 +638,10 @@ file_priv->driver_priv = NULL; r = pm_runtime_get_sync(dev->dev); - if (r < 0) + if (r < 0) { + pm_runtime_put_autosuspend(dev->dev); return r; + } /* new gpu have virtual address space support */ if (rdev->family >= CHIP_CAYMAN) { --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_cmm.c +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_cmm.c @@ -122,7 +122,7 @@ { int ret; - ret = pm_runtime_get_sync(&pdev->dev); + ret = pm_runtime_resume_and_get(&pdev->dev); if (ret < 0) return ret; --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_du_crtc.c +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_du_crtc.c @@ -727,13 +727,10 @@ */ if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) && rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) { - struct rcar_du_encoder *encoder = - rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index]; + struct drm_bridge *bridge = rcdu->lvds[rcrtc->index]; const struct drm_display_mode *mode = &crtc->state->adjusted_mode; - struct drm_bridge *bridge; - bridge = drm_bridge_chain_get_first_bridge(&encoder->base); rcar_lvds_clk_enable(bridge, mode->clock * 1000); } @@ -759,15 +756,12 @@ if (rcdu->info->lvds_clk_mask & BIT(rcrtc->index) && rstate->outputs == BIT(RCAR_DU_OUTPUT_DPAD0)) { - struct rcar_du_encoder *encoder = - rcdu->encoders[RCAR_DU_OUTPUT_LVDS0 + rcrtc->index]; - struct drm_bridge *bridge; + struct drm_bridge *bridge = rcdu->lvds[rcrtc->index]; /* * Disable the LVDS clock output, see * rcar_du_crtc_atomic_enable(). */ - bridge = drm_bridge_chain_get_first_bridge(&encoder->base); rcar_lvds_clk_disable(bridge); } @@ -975,8 +969,7 @@ state->crc.source = VSP1_DU_CRC_NONE; state->crc.index = 0; - crtc->state = &state->state; - crtc->state->crtc = crtc; + __drm_atomic_helper_crtc_reset(crtc, &state->state); } static int rcar_du_crtc_enable_vblank(struct drm_crtc *crtc) @@ -1271,9 +1264,6 @@ drm_crtc_helper_add(crtc, &crtc_helper_funcs); - /* Start with vertical blanking interrupt reporting disabled. */ - drm_crtc_vblank_off(crtc); - /* Register the interrupt handler. */ if (rcar_du_has(rcdu, RCAR_DU_FEATURE_CRTC_IRQ_CLOCK)) { /* The IRQ's are associated with the CRTC (sw)index. */ --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_du_drv.h +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_du_drv.h @@ -20,10 +20,10 @@ struct clk; struct device; +struct drm_bridge; struct drm_device; struct drm_property; struct rcar_du_device; -struct rcar_du_encoder; #define RCAR_DU_FEATURE_CRTC_IRQ_CLOCK BIT(0) /* Per-CRTC IRQ and clock */ #define RCAR_DU_FEATURE_VSP1_SOURCE BIT(1) /* Has inputs from VSP1 */ @@ -71,6 +71,7 @@ #define RCAR_DU_MAX_CRTCS 4 #define RCAR_DU_MAX_GROUPS DIV_ROUND_UP(RCAR_DU_MAX_CRTCS, 2) #define RCAR_DU_MAX_VSPS 4 +#define RCAR_DU_MAX_LVDS 2 struct rcar_du_device { struct device *dev; @@ -83,11 +84,10 @@ struct rcar_du_crtc crtcs[RCAR_DU_MAX_CRTCS]; unsigned int num_crtcs; - struct rcar_du_encoder *encoders[RCAR_DU_OUTPUT_MAX]; - struct rcar_du_group groups[RCAR_DU_MAX_GROUPS]; struct platform_device *cmms[RCAR_DU_MAX_CRTCS]; struct rcar_du_vsp vsps[RCAR_DU_MAX_VSPS]; + struct drm_bridge *lvds[RCAR_DU_MAX_LVDS]; struct { struct drm_property *colorkey; --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_du_encoder.c +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_du_encoder.c @@ -57,7 +57,6 @@ if (renc == NULL) return -ENOMEM; - rcdu->encoders[output] = renc; renc->output = output; encoder = rcar_encoder_to_drm_encoder(renc); @@ -91,6 +90,10 @@ ret = -EPROBE_DEFER; goto done; } + + if (output == RCAR_DU_OUTPUT_LVDS0 || + output == RCAR_DU_OUTPUT_LVDS1) + rcdu->lvds[output - RCAR_DU_OUTPUT_LVDS0] = bridge; } /* --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_du_kms.c +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_du_kms.c @@ -650,10 +650,10 @@ int ret; cmm = of_parse_phandle(np, "renesas,cmms", i); - if (IS_ERR(cmm)) { + if (!cmm) { dev_err(rcdu->dev, "Failed to parse 'renesas,cmms' property\n"); - return PTR_ERR(cmm); + return -EINVAL; } if (!of_device_is_available(cmm)) { @@ -663,10 +663,10 @@ } pdev = of_find_device_by_node(cmm); - if (IS_ERR(pdev)) { + if (!pdev) { dev_err(rcdu->dev, "No device found for CMM%u\n", i); of_node_put(cmm); - return PTR_ERR(pdev); + return -EINVAL; } of_node_put(cmm); --- linux-5.8.0.orig/drivers/gpu/drm/rcar-du/rcar_du_vsp.c +++ linux-5.8.0/drivers/gpu/drm/rcar-du/rcar_du_vsp.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -341,6 +342,13 @@ .atomic_destroy_state = rcar_du_vsp_plane_atomic_destroy_state, }; +static void rcar_du_vsp_cleanup(struct drm_device *dev, void *res) +{ + struct rcar_du_vsp *vsp = res; + + put_device(vsp->vsp); +} + int rcar_du_vsp_init(struct rcar_du_vsp *vsp, struct device_node *np, unsigned int crtcs) { @@ -357,6 +365,10 @@ vsp->vsp = &pdev->dev; + ret = drmm_add_action(rcdu->ddev, rcar_du_vsp_cleanup, vsp); + if (ret < 0) + return ret; + ret = vsp1_du_init(vsp->vsp); if (ret < 0) return ret; --- linux-5.8.0.orig/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ linux-5.8.0/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -17,9 +17,20 @@ #define NUM_YUV2YUV_COEFFICIENTS 12 +/* AFBC supports a number of configurable modes. Relevant to us is block size + * (16x16 or 32x8), storage modifiers (SPARSE, SPLIT), and the YUV-like + * colourspace transform (YTR). 16x16 SPARSE mode is always used. SPLIT mode + * could be enabled via the hreg_block_split register, but is not currently + * handled. The colourspace transform is implicitly always assumed by the + * decoder, so consumers must use this transform as well. + * + * Failure to match modifiers will cause errors displaying AFBC buffers + * produced by conformant AFBC producers, including Mesa. + */ #define ROCKCHIP_AFBC_MOD \ DRM_FORMAT_MOD_ARM_AFBC( \ AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 | AFBC_FORMAT_MOD_SPARSE \ + | AFBC_FORMAT_MOD_YTR \ ) enum vop_data_format { --- linux-5.8.0.orig/drivers/gpu/drm/rockchip/rockchip_lvds.c +++ linux-5.8.0/drivers/gpu/drm/rockchip/rockchip_lvds.c @@ -544,7 +544,7 @@ struct device_node *port, *endpoint; int ret = 0, child_count = 0; const char *name; - u32 endpoint_id; + u32 endpoint_id = 0; lvds->drm_dev = drm_dev; port = of_graph_get_port_by_id(dev->of_node, 1); --- linux-5.8.0.orig/drivers/gpu/drm/scheduler/sched_main.c +++ linux-5.8.0/drivers/gpu/drm/scheduler/sched_main.c @@ -623,7 +623,7 @@ return NULL; /* Kernel run queue has higher priority than normal run queue*/ - for (i = DRM_SCHED_PRIORITY_MAX - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) { + for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) { entity = drm_sched_rq_select_entity(&sched->sched_rq[i]); if (entity) break; @@ -851,7 +851,7 @@ sched->name = name; sched->timeout = timeout; sched->hang_limit = hang_limit; - for (i = DRM_SCHED_PRIORITY_MIN; i < DRM_SCHED_PRIORITY_MAX; i++) + for (i = DRM_SCHED_PRIORITY_MIN; i < DRM_SCHED_PRIORITY_COUNT; i++) drm_sched_rq_init(sched, &sched->sched_rq[i]); init_waitqueue_head(&sched->wake_up_worker); @@ -889,6 +889,9 @@ if (sched->thread) kthread_stop(sched->thread); + /* Confirm no work left behind accessing device structures */ + cancel_delayed_work_sync(&sched->work_tdr); + sched->ready = false; } EXPORT_SYMBOL(drm_sched_fini); --- linux-5.8.0.orig/drivers/gpu/drm/stm/ltdc.c +++ linux-5.8.0/drivers/gpu/drm/stm/ltdc.c @@ -423,9 +423,12 @@ struct drm_crtc_state *old_state) { struct ltdc_device *ldev = crtc_to_ltdc(crtc); + struct drm_device *ddev = crtc->dev; DRM_DEBUG_DRIVER("\n"); + pm_runtime_get_sync(ddev->dev); + /* Sets the background color value */ reg_write(ldev->regs, LTDC_BCCR, BCCR_BCBLACK); --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun4i_backend.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -589,8 +589,7 @@ /* We can't have an alpha plane at the lowest position */ if (!backend->quirks->supports_lowest_plane_alpha && - (plane_states[0]->fb->format->has_alpha || - (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE))) + (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)) return -EINVAL; for (i = 1; i < num_planes; i++) { @@ -995,7 +994,6 @@ static const struct sun4i_backend_quirks sun7i_backend_quirks = { .needs_output_muxing = true, - .supports_lowest_plane_alpha = true, }; static const struct sun4i_backend_quirks sun8i_a33_backend_quirks = { --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun4i_frontend.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun4i_frontend.c @@ -407,6 +407,7 @@ struct drm_framebuffer *fb = state->fb; const struct drm_format_info *format = fb->format; uint64_t modifier = fb->modifier; + unsigned int ch1_phase_idx; u32 out_fmt_val; u32 in_fmt_val, in_mod_val, in_ps_val; unsigned int i; @@ -442,18 +443,19 @@ * I have no idea what this does exactly, but it seems to be * related to the scaler FIR filter phase parameters. */ + ch1_phase_idx = (format->num_planes > 1) ? 1 : 0; regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, - frontend->data->ch_phase[0].horzphase); + frontend->data->ch_phase[0]); regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, - frontend->data->ch_phase[1].horzphase); + frontend->data->ch_phase[ch1_phase_idx]); regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, - frontend->data->ch_phase[0].vertphase[0]); + frontend->data->ch_phase[0]); regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, - frontend->data->ch_phase[1].vertphase[0]); + frontend->data->ch_phase[ch1_phase_idx]); regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, - frontend->data->ch_phase[0].vertphase[1]); + frontend->data->ch_phase[0]); regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, - frontend->data->ch_phase[1].vertphase[1]); + frontend->data->ch_phase[ch1_phase_idx]); /* * Checking the input format is sufficient since we currently only @@ -687,30 +689,12 @@ }; static const struct sun4i_frontend_data sun4i_a10_frontend = { - .ch_phase = { - { - .horzphase = 0, - .vertphase = { 0, 0 }, - }, - { - .horzphase = 0xfc000, - .vertphase = { 0xfc000, 0xfc000 }, - }, - }, + .ch_phase = { 0x000, 0xfc000 }, .has_coef_rdy = true, }; static const struct sun4i_frontend_data sun8i_a33_frontend = { - .ch_phase = { - { - .horzphase = 0x400, - .vertphase = { 0x400, 0x400 }, - }, - { - .horzphase = 0x400, - .vertphase = { 0x400, 0x400 }, - }, - }, + .ch_phase = { 0x400, 0xfc400 }, .has_coef_access_ctrl = true, }; --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun4i_frontend.h +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun4i_frontend.h @@ -115,11 +115,7 @@ struct sun4i_frontend_data { bool has_coef_access_ctrl; bool has_coef_rdy; - - struct { - u32 horzphase; - u32 vertphase[2]; - } ch_phase[2]; + u32 ch_phase[2]; }; struct sun4i_frontend { --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -571,30 +571,13 @@ if (info->bus_flags & DRM_BUS_FLAG_DE_LOW) val |= SUN4I_TCON0_IO_POL_DE_NEGATIVE; - /* - * On A20 and similar SoCs, the only way to achieve Positive Edge - * (Rising Edge), is setting dclk clock phase to 2/3(240°). - * By default TCON works in Negative Edge(Falling Edge), - * this is why phase is set to 0 in that case. - * Unfortunately there's no way to logically invert dclk through - * IO_POL register. - * The only acceptable way to work, triple checked with scope, - * is using clock phase set to 0° for Negative Edge and set to 240° - * for Positive Edge. - * On A33 and similar SoCs there would be a 90° phase option, - * but it divides also dclk by 2. - * Following code is a way to avoid quirks all around TCON - * and DOTCLOCK drivers. - */ - if (info->bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE) - clk_set_phase(tcon->dclk, 240); - if (info->bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE) - clk_set_phase(tcon->dclk, 0); + val |= SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE; regmap_update_bits(tcon->regs, SUN4I_TCON0_IO_POL_REG, SUN4I_TCON0_IO_POL_HSYNC_POSITIVE | SUN4I_TCON0_IO_POL_VSYNC_POSITIVE | + SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE | SUN4I_TCON0_IO_POL_DE_NEGATIVE, val); @@ -691,6 +674,30 @@ SUN4I_TCON1_BASIC5_V_SYNC(vsync) | SUN4I_TCON1_BASIC5_H_SYNC(hsync)); + /* Setup the polarity of multiple signals */ + if (tcon->quirks->polarity_in_ch0) { + val = 0; + + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + val |= SUN4I_TCON0_IO_POL_HSYNC_POSITIVE; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + val |= SUN4I_TCON0_IO_POL_VSYNC_POSITIVE; + + regmap_write(tcon->regs, SUN4I_TCON0_IO_POL_REG, val); + } else { + /* according to vendor driver, this bit must be always set */ + val = SUN4I_TCON1_IO_POL_UNKNOWN; + + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + val |= SUN4I_TCON1_IO_POL_HSYNC_POSITIVE; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + val |= SUN4I_TCON1_IO_POL_VSYNC_POSITIVE; + + regmap_write(tcon->regs, SUN4I_TCON1_IO_POL_REG, val); + } + /* Map output pins to channel 1 */ regmap_update_bits(tcon->regs, SUN4I_TCON_GCTL_REG, SUN4I_TCON_GCTL_IOMAP_MASK, @@ -1433,14 +1440,18 @@ if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP) && encoder->encoder_type == DRM_MODE_ENCODER_TMDS) { ret = sun8i_tcon_top_set_hdmi_src(&pdev->dev, id); - if (ret) + if (ret) { + put_device(&pdev->dev); return ret; + } } if (IS_ENABLED(CONFIG_DRM_SUN8I_TCON_TOP)) { ret = sun8i_tcon_top_de_config(&pdev->dev, tcon->id, id); - if (ret) + if (ret) { + put_device(&pdev->dev); return ret; + } } return 0; @@ -1515,6 +1526,7 @@ static const struct sun4i_tcon_quirks sun8i_r40_tv_quirks = { .has_channel_1 = true, + .polarity_in_ch0 = true, .set_mux = sun8i_r40_tcon_tv_set_mux, }; --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun4i_tcon.h +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun4i_tcon.h @@ -113,6 +113,7 @@ #define SUN4I_TCON0_IO_POL_REG 0x88 #define SUN4I_TCON0_IO_POL_DCLK_PHASE(phase) ((phase & 3) << 28) #define SUN4I_TCON0_IO_POL_DE_NEGATIVE BIT(27) +#define SUN4I_TCON0_IO_POL_DCLK_DRIVE_NEGEDGE BIT(26) #define SUN4I_TCON0_IO_POL_HSYNC_POSITIVE BIT(25) #define SUN4I_TCON0_IO_POL_VSYNC_POSITIVE BIT(24) @@ -153,6 +154,11 @@ #define SUN4I_TCON1_BASIC5_V_SYNC(height) (((height) - 1) & 0x3ff) #define SUN4I_TCON1_IO_POL_REG 0xf0 +/* there is no documentation about this bit */ +#define SUN4I_TCON1_IO_POL_UNKNOWN BIT(26) +#define SUN4I_TCON1_IO_POL_HSYNC_POSITIVE BIT(25) +#define SUN4I_TCON1_IO_POL_VSYNC_POSITIVE BIT(24) + #define SUN4I_TCON1_IO_TRI_REG 0xf4 #define SUN4I_TCON_ECC_FIFO_REG 0xf8 @@ -235,6 +241,7 @@ bool needs_de_be_mux; /* sun6i needs mux to select backend */ bool needs_edp_reset; /* a80 edp reset needed for tcon0 access */ bool supports_lvds; /* Does the TCON support an LVDS output? */ + bool polarity_in_ch0; /* some tcon1 channels have polarity bits in tcon0 pol register */ u8 dclk_min_div; /* minimum divider for TCON0 DCLK */ /* callback to handle tcon muxing options */ --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -889,7 +889,7 @@ regmap_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(0), sun6i_dsi_dcs_build_pkt_hdr(dsi, msg)); - bounce = kzalloc(msg->tx_len + sizeof(crc), GFP_KERNEL); + bounce = kzalloc(ALIGN(msg->tx_len + sizeof(crc), 4), GFP_KERNEL); if (!bounce) return -ENOMEM; @@ -900,7 +900,7 @@ memcpy((u8 *)bounce + msg->tx_len, &crc, sizeof(crc)); len += sizeof(crc); - regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, len); + regmap_bulk_write(dsi->regs, SUN6I_DSI_CMD_TX_REG(1), bounce, DIV_ROUND_UP(len, 4)); regmap_write(dsi->regs, SUN6I_DSI_CMD_CTL_REG, len + 4 - 1); kfree(bounce); --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_csc.h +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_csc.h @@ -12,7 +12,7 @@ /* VI channel CSC units offsets */ #define CCSC00_OFFSET 0xAA050 -#define CCSC01_OFFSET 0xFA000 +#define CCSC01_OFFSET 0xFA050 #define CCSC10_OFFSET 0xA0000 #define CCSC11_OFFSET 0xF0000 --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c @@ -21,8 +21,7 @@ { struct sun8i_dw_hdmi *hdmi = encoder_to_sun8i_dw_hdmi(encoder); - if (hdmi->quirks->set_rate) - clk_set_rate(hdmi->clk_tmds, mode->crtc_clock * 1000); + clk_set_rate(hdmi->clk_tmds, mode->crtc_clock * 1000); } static const struct drm_encoder_helper_funcs @@ -46,11 +45,9 @@ { /* * Controller support maximum of 594 MHz, which correlates to - * 4K@60Hz 4:4:4 or RGB. However, for frequencies greater than - * 340 MHz scrambling has to be enabled. Because scrambling is - * not yet implemented, just limit to 340 MHz for now. + * 4K@60Hz 4:4:4 or RGB. */ - if (mode->clock > 340000) + if (mode->clock > 594000) return MODE_CLOCK_HIGH; return MODE_OK; @@ -206,6 +203,7 @@ phy_node = of_parse_phandle(dev->of_node, "phys", 0); if (!phy_node) { dev_err(dev, "Can't found PHY phandle\n"); + ret = -EINVAL; goto err_disable_clk_tmds; } @@ -292,7 +290,6 @@ static const struct sun8i_dw_hdmi_quirks sun8i_a83t_quirks = { .mode_valid = sun8i_dw_hdmi_mode_valid_a83t, - .set_rate = true, }; static const struct sun8i_dw_hdmi_quirks sun50i_h6_quirks = { --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h @@ -178,7 +178,6 @@ struct sun8i_dw_hdmi_quirks { enum drm_mode_status (*mode_valid)(struct drm_connector *connector, const struct drm_display_mode *mode); - unsigned int set_rate : 1; unsigned int use_drm_infoframe : 1; }; --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c @@ -104,29 +104,21 @@ static const struct dw_hdmi_curr_ctrl sun50i_h6_cur_ctr[] = { /* pixelclk bpp8 bpp10 bpp12 */ - { 25175000, { 0x0000, 0x0000, 0x0000 }, }, { 27000000, { 0x0012, 0x0000, 0x0000 }, }, - { 59400000, { 0x0008, 0x0008, 0x0008 }, }, - { 72000000, { 0x0008, 0x0008, 0x001b }, }, - { 74250000, { 0x0013, 0x0013, 0x0013 }, }, - { 90000000, { 0x0008, 0x001a, 0x001b }, }, - { 118800000, { 0x001b, 0x001a, 0x001b }, }, - { 144000000, { 0x001b, 0x001a, 0x0034 }, }, - { 180000000, { 0x001b, 0x0033, 0x0034 }, }, - { 216000000, { 0x0036, 0x0033, 0x0034 }, }, - { 237600000, { 0x0036, 0x0033, 0x001b }, }, - { 288000000, { 0x0036, 0x001b, 0x001b }, }, - { 297000000, { 0x0019, 0x001b, 0x0019 }, }, - { 330000000, { 0x0036, 0x001b, 0x001b }, }, - { 594000000, { 0x003f, 0x001b, 0x001b }, }, + { 74250000, { 0x0013, 0x001a, 0x001b }, }, + { 148500000, { 0x0019, 0x0033, 0x0034 }, }, + { 297000000, { 0x0019, 0x001b, 0x001b }, }, + { 594000000, { 0x0010, 0x001b, 0x001b }, }, { ~0UL, { 0x0000, 0x0000, 0x0000 }, } }; static const struct dw_hdmi_phy_config sun50i_h6_phy_config[] = { /*pixelclk symbol term vlev*/ - { 74250000, 0x8009, 0x0004, 0x0232}, - { 148500000, 0x8029, 0x0004, 0x0273}, - { 594000000, 0x8039, 0x0004, 0x014a}, + { 27000000, 0x8009, 0x0007, 0x02b0 }, + { 74250000, 0x8009, 0x0006, 0x022d }, + { 148500000, 0x8029, 0x0006, 0x0270 }, + { 297000000, 0x8039, 0x0005, 0x01ab }, + { 594000000, 0x8029, 0x0000, 0x008a }, { ~0UL, 0x0000, 0x0000, 0x0000} }; --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -307,7 +307,7 @@ .reg_bits = 32, .val_bits = 32, .reg_stride = 4, - .max_register = 0xbfffc, /* guessed */ + .max_register = 0xffffc, /* guessed */ }; static int sun8i_mixer_of_get_id(struct device_node *node) --- linux-5.8.0.orig/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ linux-5.8.0/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -211,7 +211,7 @@ return 0; } -static bool sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) +static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) { if (!format->is_yuv) return SUN8I_CSC_MODE_OFF; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/dc.c +++ linux-5.8.0/drivers/gpu/drm/tegra/dc.c @@ -1169,7 +1169,6 @@ tegra_crtc_atomic_destroy_state(crtc, crtc->state); __drm_atomic_helper_crtc_reset(crtc, &state->base); - drm_crtc_vblank_reset(crtc); } static struct drm_crtc_state * @@ -2157,7 +2156,7 @@ struct device *dev = client->dev; int err; - err = pm_runtime_get_sync(dev); + err = pm_runtime_resume_and_get(dev); if (err < 0) { dev_err(dev, "failed to get runtime PM: %d\n", err); return err; @@ -2472,22 +2471,18 @@ * POWER_CONTROL registers during CRTC enabling. */ if (dc->soc->coupled_pm && dc->pipe == 1) { - u32 flags = DL_FLAG_PM_RUNTIME | DL_FLAG_AUTOREMOVE_CONSUMER; - struct device_link *link; - struct device *partner; - - partner = driver_find_device(dc->dev->driver, NULL, NULL, - tegra_dc_match_by_pipe); - if (!partner) + struct device *companion; + struct tegra_dc *parent; + + companion = driver_find_device(dc->dev->driver, NULL, (const void *)0, + tegra_dc_match_by_pipe); + if (!companion) return -EPROBE_DEFER; - link = device_link_add(dc->dev, partner, flags); - if (!link) { - dev_err(dc->dev, "failed to link controllers\n"); - return -EINVAL; - } + parent = dev_get_drvdata(companion); + dc->client.parent = &parent->client; - dev_dbg(dc->dev, "coupled to %s\n", dev_name(partner)); + dev_dbg(dc->dev, "coupled to %s\n", dev_name(companion)); } return 0; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/drm.c +++ linux-5.8.0/drivers/gpu/drm/tegra/drm.c @@ -90,7 +90,7 @@ if (!fpriv) return -ENOMEM; - idr_init(&fpriv->contexts); + idr_init_base(&fpriv->contexts, 1); mutex_init(&fpriv->lock); filp->driver_priv = fpriv; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/dsi.c +++ linux-5.8.0/drivers/gpu/drm/tegra/dsi.c @@ -1106,7 +1106,7 @@ struct device *dev = client->dev; int err; - err = pm_runtime_get_sync(dev); + err = pm_runtime_resume_and_get(dev); if (err < 0) { dev_err(dev, "failed to get runtime PM: %d\n", err); return err; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/hdmi.c +++ linux-5.8.0/drivers/gpu/drm/tegra/hdmi.c @@ -1510,7 +1510,7 @@ struct device *dev = client->dev; int err; - err = pm_runtime_get_sync(dev); + err = pm_runtime_resume_and_get(dev); if (err < 0) { dev_err(dev, "failed to get runtime PM: %d\n", err); return err; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/hub.c +++ linux-5.8.0/drivers/gpu/drm/tegra/hub.c @@ -789,7 +789,7 @@ unsigned int i; int err; - err = pm_runtime_get_sync(dev); + err = pm_runtime_resume_and_get(dev); if (err < 0) { dev_err(dev, "failed to get runtime PM: %d\n", err); return err; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/sor.c +++ linux-5.8.0/drivers/gpu/drm/tegra/sor.c @@ -3117,6 +3117,12 @@ * kernel is possible. */ if (sor->rst) { + err = pm_runtime_resume_and_get(sor->dev); + if (err < 0) { + dev_err(sor->dev, "failed to get runtime PM: %d\n", err); + return err; + } + err = reset_control_acquire(sor->rst); if (err < 0) { dev_err(sor->dev, "failed to acquire SOR reset: %d\n", @@ -3145,19 +3151,26 @@ if (err < 0) { dev_err(sor->dev, "failed to deassert SOR reset: %d\n", err); + clk_disable_unprepare(sor->clk); return err; } reset_control_release(sor->rst); + pm_runtime_put(sor->dev); } err = clk_prepare_enable(sor->clk_safe); - if (err < 0) + if (err < 0) { + clk_disable_unprepare(sor->clk); return err; + } err = clk_prepare_enable(sor->clk_dp); - if (err < 0) + if (err < 0) { + clk_disable_unprepare(sor->clk_safe); + clk_disable_unprepare(sor->clk); return err; + } return 0; } @@ -3214,7 +3227,7 @@ struct device *dev = client->dev; int err; - err = pm_runtime_get_sync(dev); + err = pm_runtime_resume_and_get(dev); if (err < 0) { dev_err(dev, "failed to get runtime PM: %d\n", err); return err; --- linux-5.8.0.orig/drivers/gpu/drm/tegra/vic.c +++ linux-5.8.0/drivers/gpu/drm/tegra/vic.c @@ -314,7 +314,7 @@ struct vic *vic = to_vic(client); int err; - err = pm_runtime_get_sync(vic->dev); + err = pm_runtime_resume_and_get(vic->dev); if (err < 0) return err; --- linux-5.8.0.orig/drivers/gpu/drm/tidss/tidss_crtc.c +++ linux-5.8.0/drivers/gpu/drm/tidss/tidss_crtc.c @@ -352,8 +352,7 @@ return; } - crtc->state = &tcrtc->base; - crtc->state->crtc = crtc; + __drm_atomic_helper_crtc_reset(crtc, &tcrtc->base); } static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc) --- linux-5.8.0.orig/drivers/gpu/drm/tidss/tidss_kms.c +++ linux-5.8.0/drivers/gpu/drm/tidss/tidss_kms.c @@ -154,7 +154,7 @@ break; case DISPC_VP_DPI: enc_type = DRM_MODE_ENCODER_DPI; - conn_type = DRM_MODE_CONNECTOR_LVDS; + conn_type = DRM_MODE_CONNECTOR_DPI; break; default: WARN_ON(1); @@ -253,7 +253,6 @@ int tidss_modeset_init(struct tidss_device *tidss) { struct drm_device *ddev = &tidss->ddev; - unsigned int i; int ret; dev_dbg(tidss->dev, "%s\n", __func__); @@ -278,10 +277,6 @@ if (ret) return ret; - /* Start with vertical blanking interrupt reporting disabled. */ - for (i = 0; i < tidss->num_crtcs; ++i) - drm_crtc_vblank_reset(tidss->crtcs[i]); - drm_mode_config_reset(ddev); dev_dbg(tidss->dev, "%s done\n", __func__); --- linux-5.8.0.orig/drivers/gpu/drm/tilcdc/tilcdc_panel.c +++ linux-5.8.0/drivers/gpu/drm/tilcdc/tilcdc_panel.c @@ -139,12 +139,16 @@ int i; for (i = 0; i < timings->num_timings; i++) { - struct drm_display_mode *mode = drm_mode_create(dev); + struct drm_display_mode *mode; struct videomode vm; if (videomode_from_timings(timings, &vm, i)) break; + mode = drm_mode_create(dev); + if (!mode) + break; + drm_display_mode_from_videomode(&vm, mode); mode->type = DRM_MODE_TYPE_DRIVER; --- linux-5.8.0.orig/drivers/gpu/drm/tiny/gm12u320.c +++ linux-5.8.0/drivers/gpu/drm/tiny/gm12u320.c @@ -83,6 +83,7 @@ struct gm12u320_device { struct drm_device dev; + struct device *dmadev; struct drm_simple_display_pipe pipe; struct drm_connector conn; struct usb_device *udev; @@ -598,6 +599,22 @@ DRM_FORMAT_MOD_INVALID }; +/* + * FIXME: Dma-buf sharing requires DMA support by the importing device. + * This function is a workaround to make USB devices work as well. + * See todo.rst for how to fix the issue in the dma-buf framework. + */ +static struct drm_gem_object *gm12u320_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + struct gm12u320_device *gm12u320 = to_gm12u320(dev); + + if (!gm12u320->dmadev) + return ERR_PTR(-ENODEV); + + return drm_gem_prime_import_dev(dev, dma_buf, gm12u320->dmadev); +} + DEFINE_DRM_GEM_FOPS(gm12u320_fops); static struct drm_driver gm12u320_drm_driver = { @@ -611,6 +628,7 @@ .fops = &gm12u320_fops, DRM_GEM_SHMEM_DRIVER_OPS, + .gem_prime_import = gm12u320_gem_prime_import, }; static const struct drm_mode_config_funcs gm12u320_mode_config_funcs = { @@ -637,16 +655,19 @@ struct gm12u320_device, dev); if (IS_ERR(gm12u320)) return PTR_ERR(gm12u320); + dev = &gm12u320->dev; + + gm12u320->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev)); + if (!gm12u320->dmadev) + drm_warn(dev, "buffer sharing not supported"); /* not an error */ gm12u320->udev = interface_to_usbdev(interface); INIT_DELAYED_WORK(&gm12u320->fb_update.work, gm12u320_fb_update_work); mutex_init(&gm12u320->fb_update.lock); - dev = &gm12u320->dev; - ret = drmm_mode_config_init(dev); if (ret) - return ret; + goto err_put_device; dev->mode_config.min_width = GM12U320_USER_WIDTH; dev->mode_config.max_width = GM12U320_USER_WIDTH; @@ -656,15 +677,15 @@ ret = gm12u320_usb_alloc(gm12u320); if (ret) - return ret; + goto err_put_device; ret = gm12u320_set_ecomode(gm12u320); if (ret) - return ret; + goto err_put_device; ret = gm12u320_conn_init(gm12u320); if (ret) - return ret; + goto err_put_device; ret = drm_simple_display_pipe_init(&gm12u320->dev, &gm12u320->pipe, @@ -674,24 +695,31 @@ gm12u320_pipe_modifiers, &gm12u320->conn); if (ret) - return ret; + goto err_put_device; drm_mode_config_reset(dev); usb_set_intfdata(interface, dev); ret = drm_dev_register(dev, 0); if (ret) - return ret; + goto err_put_device; drm_fbdev_generic_setup(dev, 0); return 0; + +err_put_device: + put_device(gm12u320->dmadev); + return ret; } static void gm12u320_usb_disconnect(struct usb_interface *interface) { struct drm_device *dev = usb_get_intfdata(interface); + struct gm12u320_device *gm12u320 = to_gm12u320(dev); + put_device(gm12u320->dmadev); + gm12u320->dmadev = NULL; drm_dev_unplug(dev); drm_atomic_helper_shutdown(dev); } --- linux-5.8.0.orig/drivers/gpu/drm/ttm/ttm_bo.c +++ linux-5.8.0/drivers/gpu/drm/ttm/ttm_bo.c @@ -708,7 +708,7 @@ /* Don't evict this BO if it's outside of the * requested placement range */ - if (place->fpfn >= (bo->mem.start + bo->mem.size) || + if (place->fpfn >= (bo->mem.start + bo->mem.num_pages) || (place->lpfn && place->lpfn <= bo->mem.start)) return false; --- linux-5.8.0.orig/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ linux-5.8.0/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -505,8 +505,10 @@ int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write) { - unsigned long offset = (addr) - vma->vm_start; struct ttm_buffer_object *bo = vma->vm_private_data; + unsigned long offset = (addr) - vma->vm_start + + ((vma->vm_pgoff - drm_vma_node_start(&bo->base.vma_node)) + << PAGE_SHIFT); int ret; if (len < 1 || (offset + len) >> PAGE_SHIFT > bo->num_pages) --- linux-5.8.0.orig/drivers/gpu/drm/ttm/ttm_tt.c +++ linux-5.8.0/drivers/gpu/drm/ttm/ttm_tt.c @@ -242,7 +242,6 @@ ttm_tt_init_fields(ttm, bo, page_flags); if (ttm_tt_alloc_page_directory(ttm)) { - ttm_tt_destroy(ttm); pr_err("Failed allocating page table\n"); return -ENOMEM; } @@ -266,7 +265,6 @@ INIT_LIST_HEAD(&ttm_dma->pages_list); if (ttm_dma_tt_alloc_page_directory(ttm_dma)) { - ttm_tt_destroy(ttm); pr_err("Failed allocating page table\n"); return -ENOMEM; } @@ -288,7 +286,6 @@ else ret = ttm_dma_tt_alloc_page_directory(ttm_dma); if (ret) { - ttm_tt_destroy(ttm); pr_err("Failed allocating page table\n"); return -ENOMEM; } --- linux-5.8.0.orig/drivers/gpu/drm/tve200/tve200_display.c +++ linux-5.8.0/drivers/gpu/drm/tve200/tve200_display.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -130,9 +131,25 @@ struct drm_connector *connector = priv->connector; u32 format = fb->format->format; u32 ctrl1 = 0; + int retries; clk_prepare_enable(priv->clk); + /* Reset the TVE200 and wait for it to come back online */ + writel(TVE200_CTRL_4_RESET, priv->regs + TVE200_CTRL_4); + for (retries = 0; retries < 5; retries++) { + usleep_range(30000, 50000); + if (readl(priv->regs + TVE200_CTRL_4) & TVE200_CTRL_4_RESET) + continue; + else + break; + } + if (retries == 5 && + readl(priv->regs + TVE200_CTRL_4) & TVE200_CTRL_4_RESET) { + dev_err(drm->dev, "can't get hardware out of reset\n"); + return; + } + /* Function 1 */ ctrl1 |= TVE200_CTRL_CSMODE; /* Interlace mode for CCIR656: parameterize? */ @@ -230,8 +247,9 @@ drm_crtc_vblank_off(crtc); - /* Disable and Power Down */ + /* Disable put into reset and Power Down */ writel(0, priv->regs + TVE200_CTRL); + writel(TVE200_CTRL_4_RESET, priv->regs + TVE200_CTRL_4); clk_disable_unprepare(priv->clk); } @@ -279,6 +297,8 @@ struct drm_device *drm = crtc->dev; struct tve200_drm_dev_private *priv = drm->dev_private; + /* Clear any IRQs and enable */ + writel(0xFF, priv->regs + TVE200_INT_CLR); writel(TVE200_INT_V_STATUS, priv->regs + TVE200_INT_EN); return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/tve200/tve200_drv.c +++ linux-5.8.0/drivers/gpu/drm/tve200/tve200_drv.c @@ -210,8 +210,8 @@ } irq = platform_get_irq(pdev, 0); - if (!irq) { - ret = -EINVAL; + if (irq < 0) { + ret = irq; goto clk_disable; } --- linux-5.8.0.orig/drivers/gpu/drm/udl/udl_drv.c +++ linux-5.8.0/drivers/gpu/drm/udl/udl_drv.c @@ -32,6 +32,22 @@ return drm_mode_config_helper_resume(dev); } +/* + * FIXME: Dma-buf sharing requires DMA support by the importing device. + * This function is a workaround to make USB devices work as well. + * See todo.rst for how to fix the issue in the dma-buf framework. + */ +static struct drm_gem_object *udl_driver_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + struct udl_device *udl = to_udl(dev); + + if (!udl->dmadev) + return ERR_PTR(-ENODEV); + + return drm_gem_prime_import_dev(dev, dma_buf, udl->dmadev); +} + DEFINE_DRM_GEM_FOPS(udl_driver_fops); static struct drm_driver driver = { @@ -42,6 +58,7 @@ .fops = &udl_driver_fops, DRM_GEM_SHMEM_DRIVER_OPS, + .gem_prime_import = udl_driver_gem_prime_import, .name = DRIVER_NAME, .desc = DRIVER_DESC, --- linux-5.8.0.orig/drivers/gpu/drm/udl/udl_drv.h +++ linux-5.8.0/drivers/gpu/drm/udl/udl_drv.h @@ -50,6 +50,7 @@ struct udl_device { struct drm_device drm; struct device *dev; + struct device *dmadev; struct usb_device *udev; struct drm_simple_display_pipe display_pipe; --- linux-5.8.0.orig/drivers/gpu/drm/udl/udl_main.c +++ linux-5.8.0/drivers/gpu/drm/udl/udl_main.c @@ -314,6 +314,10 @@ DRM_DEBUG("\n"); + udl->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev)); + if (!udl->dmadev) + drm_warn(dev, "buffer sharing not supported"); /* not an error */ + mutex_init(&udl->gem_lock); if (!udl_parse_vendor_descriptor(dev, udl->udev)) { @@ -342,12 +346,18 @@ err: if (udl->urbs.count) udl_free_urb_list(dev); + put_device(udl->dmadev); DRM_ERROR("%d\n", ret); return ret; } int udl_drop_usb(struct drm_device *dev) { + struct udl_device *udl = to_udl(dev); + udl_free_urb_list(dev); + put_device(udl->dmadev); + udl->dmadev = NULL; + return 0; } --- linux-5.8.0.orig/drivers/gpu/drm/udl/udl_modeset.c +++ linux-5.8.0/drivers/gpu/drm/udl/udl_modeset.c @@ -303,8 +303,10 @@ } urb = udl_get_urb(dev); - if (!urb) + if (!urb) { + ret = -ENOMEM; goto out_drm_gem_shmem_vunmap; + } cmd = urb->transfer_buffer; for (i = clip.y1; i < clip.y2; i++) { --- linux-5.8.0.orig/drivers/gpu/drm/v3d/v3d_gem.c +++ linux-5.8.0/drivers/gpu/drm/v3d/v3d_gem.c @@ -568,7 +568,6 @@ ret = v3d_job_init(v3d, file_priv, &bin->base, v3d_job_free, args->in_sync_bcl); if (ret) { - kfree(bin); v3d_job_put(&render->base); kfree(bin); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/vc4/vc4_bo.c +++ linux-5.8.0/drivers/gpu/drm/vc4/vc4_bo.c @@ -1005,6 +1005,7 @@ return 0; } +static void vc4_bo_cache_destroy(struct drm_device *dev, void *unused); int vc4_bo_cache_init(struct drm_device *dev) { struct vc4_dev *vc4 = to_vc4_dev(dev); @@ -1033,10 +1034,10 @@ INIT_WORK(&vc4->bo_cache.time_work, vc4_bo_cache_time_work); timer_setup(&vc4->bo_cache.time_timer, vc4_bo_cache_time_timer, 0); - return 0; + return drmm_add_action_or_reset(dev, vc4_bo_cache_destroy, NULL); } -void vc4_bo_cache_destroy(struct drm_device *dev) +static void vc4_bo_cache_destroy(struct drm_device *dev, void *unused) { struct vc4_dev *vc4 = to_vc4_dev(dev); int i; --- linux-5.8.0.orig/drivers/gpu/drm/vc4/vc4_drv.c +++ linux-5.8.0/drivers/gpu/drm/vc4/vc4_drv.c @@ -306,7 +306,7 @@ component_unbind_all(dev, drm); gem_destroy: vc4_gem_destroy(drm); - vc4_bo_cache_destroy(drm); + drm_mode_config_cleanup(drm); dev_put: drm_dev_put(drm); return ret; --- linux-5.8.0.orig/drivers/gpu/drm/vc4/vc4_drv.h +++ linux-5.8.0/drivers/gpu/drm/vc4/vc4_drv.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -744,7 +745,6 @@ struct sg_table *sgt); void *vc4_prime_vmap(struct drm_gem_object *obj); int vc4_bo_cache_init(struct drm_device *dev); -void vc4_bo_cache_destroy(struct drm_device *dev); int vc4_bo_inc_usecnt(struct vc4_bo *bo); void vc4_bo_dec_usecnt(struct vc4_bo *bo); void vc4_bo_add_to_purgeable_pool(struct vc4_bo *bo); --- linux-5.8.0.orig/drivers/gpu/drm/vc4/vc4_hdmi.c +++ linux-5.8.0/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1117,6 +1117,7 @@ card->num_links = 1; card->name = "vc4-hdmi"; card->dev = dev; + card->owner = THIS_MODULE; /* * Be careful, snd_soc_register_card() calls dev_set_drvdata() and --- linux-5.8.0.orig/drivers/gpu/drm/vc4/vc4_plane.c +++ linux-5.8.0/drivers/gpu/drm/vc4/vc4_plane.c @@ -205,7 +205,7 @@ __drm_atomic_helper_plane_reset(plane, &vc4_state->base); } -static void vc4_dlist_write(struct vc4_plane_state *vc4_state, u32 val) +static void vc4_dlist_counter_increment(struct vc4_plane_state *vc4_state) { if (vc4_state->dlist_count == vc4_state->dlist_size) { u32 new_size = max(4u, vc4_state->dlist_count * 2); @@ -220,7 +220,15 @@ vc4_state->dlist_size = new_size; } - vc4_state->dlist[vc4_state->dlist_count++] = val; + vc4_state->dlist_count++; +} + +static void vc4_dlist_write(struct vc4_plane_state *vc4_state, u32 val) +{ + unsigned int idx = vc4_state->dlist_count; + + vc4_dlist_counter_increment(vc4_state); + vc4_state->dlist[idx] = val; } /* Returns the scl0/scl1 field based on whether the dimensions need to @@ -871,8 +879,10 @@ * be set when calling vc4_plane_allocate_lbm(). */ if (vc4_state->y_scaling[0] != VC4_SCALING_NONE || - vc4_state->y_scaling[1] != VC4_SCALING_NONE) - vc4_state->lbm_offset = vc4_state->dlist_count++; + vc4_state->y_scaling[1] != VC4_SCALING_NONE) { + vc4_state->lbm_offset = vc4_state->dlist_count; + vc4_dlist_counter_increment(vc4_state); + } if (num_planes > 1) { /* Emit Cb/Cr as channel 0 and Y as channel --- linux-5.8.0.orig/drivers/gpu/drm/vgem/vgem_drv.c +++ linux-5.8.0/drivers/gpu/drm/vgem/vgem_drv.c @@ -230,32 +230,6 @@ return 0; } -static int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev, - uint32_t handle, uint64_t *offset) -{ - struct drm_gem_object *obj; - int ret; - - obj = drm_gem_object_lookup(file, handle); - if (!obj) - return -ENOENT; - - if (!obj->filp) { - ret = -EINVAL; - goto unref; - } - - ret = drm_gem_create_mmap_offset(obj); - if (ret) - goto unref; - - *offset = drm_vma_node_offset_addr(&obj->vma_node); -unref: - drm_gem_object_put_unlocked(obj); - - return ret; -} - static struct drm_ioctl_desc vgem_ioctls[] = { DRM_IOCTL_DEF_DRV(VGEM_FENCE_ATTACH, vgem_fence_attach_ioctl, DRM_RENDER_ALLOW), DRM_IOCTL_DEF_DRV(VGEM_FENCE_SIGNAL, vgem_fence_signal_ioctl, DRM_RENDER_ALLOW), @@ -446,7 +420,6 @@ .fops = &vgem_driver_fops, .dumb_create = vgem_gem_dumb_create, - .dumb_map_offset = vgem_gem_dumb_map, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, @@ -498,8 +471,8 @@ out_put: drm_dev_put(&vgem_device->drm); + platform_device_unregister(vgem_device->platform); return ret; - out_unregister: platform_device_unregister(vgem_device->platform); out_free: --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_display.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_display.c @@ -123,6 +123,17 @@ static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { + struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc); + + /* + * virtio-gpu can't do modeset and plane update operations + * independent from each other. So the actual modeset happens + * in the plane update callback, and here we just check + * whenever we must force the modeset. + */ + if (drm_atomic_crtc_needs_modeset(crtc->state)) { + output->needs_modeset = true; + } } static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = { --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_drv.h +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -138,6 +138,7 @@ int cur_x; int cur_y; bool enabled; + bool needs_modeset; }; #define drm_crtc_to_virtio_gpu_output(x) \ container_of(x, struct virtio_gpu_output, crtc) --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_gem.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_gem.c @@ -39,9 +39,6 @@ int ret; u32 handle; - if (vgdev->has_virgl_3d) - virtio_gpu_create_context(dev, file); - ret = virtio_gpu_object_create(vgdev, params, &obj, NULL); if (ret < 0) return ret; @@ -119,6 +116,11 @@ if (!vgdev->has_virgl_3d) goto out_notify; + /* the context might still be missing when the first ioctl is + * DRM_IOCTL_MODE_CREATE_DUMB or DRM_IOCTL_PRIME_FD_TO_HANDLE + */ + virtio_gpu_create_context(obj->dev, file); + objs = virtio_gpu_array_alloc(1); if (!objs) return -ENOMEM; --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_ioctl.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_ioctl.c @@ -179,6 +179,7 @@ virtio_gpu_cmd_submit(vgdev, buf, exbuf->size, vfpriv->ctx_id, buflist, out_fence); + dma_fence_put(&out_fence->f); virtio_gpu_notify(vgdev); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_kms.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_kms.c @@ -80,8 +80,10 @@ vgdev->capsets[i].id > 0, 5 * HZ); if (ret == 0) { DRM_ERROR("timed out waiting for cap set %d\n", i); + spin_lock(&vgdev->display_info_lock); kfree(vgdev->capsets); vgdev->capsets = NULL; + spin_unlock(&vgdev->display_info_lock); return; } DRM_INFO("cap set %d: id %d, max-version %d, max-size %d\n", --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_object.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_object.c @@ -79,6 +79,7 @@ } sg_free_table(shmem->pages); + kfree(shmem->pages); shmem->pages = NULL; drm_gem_shmem_unpin(&bo->base.base); } @@ -166,8 +167,9 @@ *nents = shmem->pages->nents; } - *ents = kmalloc_array(*nents, sizeof(struct virtio_gpu_mem_entry), - GFP_KERNEL); + *ents = kvmalloc_array(*nents, + sizeof(struct virtio_gpu_mem_entry), + GFP_KERNEL); if (!(*ents)) { DRM_ERROR("failed to allocate ent list\n"); return -ENOMEM; --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_plane.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -163,7 +163,9 @@ plane->state->src_w != old_state->src_w || plane->state->src_h != old_state->src_h || plane->state->src_x != old_state->src_x || - plane->state->src_y != old_state->src_y) { + plane->state->src_y != old_state->src_y || + output->needs_modeset) { + output->needs_modeset = false; DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n", bo->hw_res_handle, plane->state->crtc_w, plane->state->crtc_h, --- linux-5.8.0.orig/drivers/gpu/drm/virtio/virtgpu_vq.c +++ linux-5.8.0/drivers/gpu/drm/virtio/virtgpu_vq.c @@ -684,9 +684,13 @@ int i = le32_to_cpu(cmd->capset_index); spin_lock(&vgdev->display_info_lock); - vgdev->capsets[i].id = le32_to_cpu(resp->capset_id); - vgdev->capsets[i].max_version = le32_to_cpu(resp->capset_max_version); - vgdev->capsets[i].max_size = le32_to_cpu(resp->capset_max_size); + if (vgdev->capsets) { + vgdev->capsets[i].id = le32_to_cpu(resp->capset_id); + vgdev->capsets[i].max_version = le32_to_cpu(resp->capset_max_version); + vgdev->capsets[i].max_size = le32_to_cpu(resp->capset_max_size); + } else { + DRM_ERROR("invalid capset memory."); + } spin_unlock(&vgdev->display_info_lock); wake_up(&vgdev->resp_wq); } --- linux-5.8.0.orig/drivers/gpu/drm/vkms/vkms_composer.c +++ linux-5.8.0/drivers/gpu/drm/vkms/vkms_composer.c @@ -33,7 +33,7 @@ + (i * composer->pitch) + (j * composer->cpp); /* XRGB format ignores Alpha channel */ - memset(vaddr_out + src_offset + 24, 0, 8); + bitmap_clear(vaddr_out + src_offset, 24, 8); crc = crc32_le(crc, vaddr_out + src_offset, sizeof(u32)); } --- linux-5.8.0.orig/drivers/gpu/drm/vkms/vkms_crtc.c +++ linux-5.8.0/drivers/gpu/drm/vkms/vkms_crtc.c @@ -86,6 +86,11 @@ struct vkms_output *output = &vkmsdev->output; struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; + if (!READ_ONCE(vblank->enabled)) { + *vblank_time = ktime_get(); + return true; + } + *vblank_time = READ_ONCE(output->vblank_hrtimer.node.expires); if (WARN_ON(*vblank_time == vblank->time)) --- linux-5.8.0.orig/drivers/gpu/drm/vkms/vkms_drv.c +++ linux-5.8.0/drivers/gpu/drm/vkms/vkms_drv.c @@ -188,8 +188,8 @@ out_put: drm_dev_put(&vkms_device->drm); + platform_device_unregister(vkms_device->platform); return ret; - out_unregister: platform_device_unregister(vkms_device->platform); out_free: --- linux-5.8.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ linux-5.8.0/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -2578,7 +2578,7 @@ ++i; } - if (i != unit) { + if (&con->head == &dev_priv->dev->mode_config.connector_list) { DRM_ERROR("Could not find initial display unit.\n"); ret = -EINVAL; goto out_unlock; @@ -2602,13 +2602,13 @@ break; } - if (mode->type & DRM_MODE_TYPE_PREFERRED) - *p_mode = mode; - else { + if (&mode->head == &con->modes) { WARN_ONCE(true, "Could not find initial preferred mode.\n"); *p_mode = list_first_entry(&con->modes, struct drm_display_mode, head); + } else { + *p_mode = mode; } out_unlock: --- linux-5.8.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ linux-5.8.0/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c @@ -81,7 +81,7 @@ struct vmw_legacy_display_unit *entry; struct drm_framebuffer *fb = NULL; struct drm_crtc *crtc = NULL; - int i = 0; + int i; /* If there is no display topology the host just assumes * that the guest will set the same layout as the host. @@ -92,12 +92,11 @@ crtc = &entry->base.crtc; w = max(w, crtc->x + crtc->mode.hdisplay); h = max(h, crtc->y + crtc->mode.vdisplay); - i++; } if (crtc == NULL) return 0; - fb = entry->base.crtc.primary->state->fb; + fb = crtc->primary->state->fb; return vmw_kms_write_svga(dev_priv, w, h, fb->pitches[0], fb->format->cpp[0] * 8, @@ -388,8 +387,6 @@ ldu->base.is_implicit = true; /* Initialize primary plane */ - vmw_du_plane_reset(primary); - ret = drm_universal_plane_init(dev, &ldu->base.primary, 0, &vmw_ldu_plane_funcs, vmw_primary_plane_formats, @@ -403,8 +400,6 @@ drm_plane_helper_add(primary, &vmw_ldu_primary_plane_helper_funcs); /* Initialize cursor plane */ - vmw_du_plane_reset(cursor); - ret = drm_universal_plane_init(dev, &ldu->base.cursor, 0, &vmw_ldu_cursor_funcs, vmw_cursor_plane_formats, @@ -418,7 +413,6 @@ drm_plane_helper_add(cursor, &vmw_ldu_cursor_plane_helper_funcs); - vmw_du_connector_reset(connector); ret = drm_connector_init(dev, connector, &vmw_legacy_connector_funcs, DRM_MODE_CONNECTOR_VIRTUAL); if (ret) { @@ -446,7 +440,6 @@ goto err_free_encoder; } - vmw_du_crtc_reset(crtc); ret = drm_crtc_init_with_planes(dev, crtc, &ldu->base.primary, &ldu->base.cursor, &vmw_legacy_crtc_funcs, NULL); @@ -521,6 +514,8 @@ dev_priv->active_display_unit = vmw_du_legacy; + drm_mode_config_reset(dev); + DRM_INFO("Legacy Display Unit initialized\n"); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +++ linux-5.8.0/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c @@ -859,8 +859,6 @@ sou->base.is_implicit = false; /* Initialize primary plane */ - vmw_du_plane_reset(primary); - ret = drm_universal_plane_init(dev, &sou->base.primary, 0, &vmw_sou_plane_funcs, vmw_primary_plane_formats, @@ -875,8 +873,6 @@ drm_plane_enable_fb_damage_clips(primary); /* Initialize cursor plane */ - vmw_du_plane_reset(cursor); - ret = drm_universal_plane_init(dev, &sou->base.cursor, 0, &vmw_sou_cursor_funcs, vmw_cursor_plane_formats, @@ -890,7 +886,6 @@ drm_plane_helper_add(cursor, &vmw_sou_cursor_plane_helper_funcs); - vmw_du_connector_reset(connector); ret = drm_connector_init(dev, connector, &vmw_sou_connector_funcs, DRM_MODE_CONNECTOR_VIRTUAL); if (ret) { @@ -918,8 +913,6 @@ goto err_free_encoder; } - - vmw_du_crtc_reset(crtc); ret = drm_crtc_init_with_planes(dev, crtc, &sou->base.primary, &sou->base.cursor, &vmw_screen_object_crtc_funcs, NULL); @@ -973,6 +966,8 @@ dev_priv->active_display_unit = vmw_du_screen_object; + drm_mode_config_reset(dev); + DRM_INFO("Screen Objects Display Unit initialized\n"); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +++ linux-5.8.0/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c @@ -1738,8 +1738,6 @@ stdu->base.is_implicit = false; /* Initialize primary plane */ - vmw_du_plane_reset(primary); - ret = drm_universal_plane_init(dev, primary, 0, &vmw_stdu_plane_funcs, vmw_primary_plane_formats, @@ -1754,8 +1752,6 @@ drm_plane_enable_fb_damage_clips(primary); /* Initialize cursor plane */ - vmw_du_plane_reset(cursor); - ret = drm_universal_plane_init(dev, cursor, 0, &vmw_stdu_cursor_funcs, vmw_cursor_plane_formats, @@ -1769,8 +1765,6 @@ drm_plane_helper_add(cursor, &vmw_stdu_cursor_plane_helper_funcs); - vmw_du_connector_reset(connector); - ret = drm_connector_init(dev, connector, &vmw_stdu_connector_funcs, DRM_MODE_CONNECTOR_VIRTUAL); if (ret) { @@ -1798,7 +1792,6 @@ goto err_free_encoder; } - vmw_du_crtc_reset(crtc); ret = drm_crtc_init_with_planes(dev, crtc, &stdu->base.primary, &stdu->base.cursor, &vmw_stdu_crtc_funcs, NULL); @@ -1894,6 +1887,8 @@ } } + drm_mode_config_reset(dev); + DRM_INFO("Screen Target Display device initialized\n"); return 0; --- linux-5.8.0.orig/drivers/gpu/drm/xen/xen_drm_front.c +++ linux-5.8.0/drivers/gpu/drm/xen/xen_drm_front.c @@ -400,8 +400,8 @@ args->size = args->pitch * args->height; obj = xen_drm_front_gem_create(dev, args->size); - if (IS_ERR_OR_NULL(obj)) { - ret = PTR_ERR_OR_ZERO(obj); + if (IS_ERR(obj)) { + ret = PTR_ERR(obj); goto fail; } --- linux-5.8.0.orig/drivers/gpu/drm/xen/xen_drm_front_gem.c +++ linux-5.8.0/drivers/gpu/drm/xen/xen_drm_front_gem.c @@ -83,7 +83,7 @@ size = round_up(size, PAGE_SIZE); xen_obj = gem_create_obj(dev, size); - if (IS_ERR_OR_NULL(xen_obj)) + if (IS_ERR(xen_obj)) return xen_obj; if (drm_info->front_info->cfg.be_alloc) { @@ -117,7 +117,7 @@ */ xen_obj->num_pages = DIV_ROUND_UP(size, PAGE_SIZE); xen_obj->pages = drm_gem_get_pages(&xen_obj->base); - if (IS_ERR_OR_NULL(xen_obj->pages)) { + if (IS_ERR(xen_obj->pages)) { ret = PTR_ERR(xen_obj->pages); xen_obj->pages = NULL; goto fail; @@ -136,7 +136,7 @@ struct xen_gem_object *xen_obj; xen_obj = gem_create(dev, size); - if (IS_ERR_OR_NULL(xen_obj)) + if (IS_ERR(xen_obj)) return ERR_CAST(xen_obj); return &xen_obj->base; @@ -194,7 +194,7 @@ size = attach->dmabuf->size; xen_obj = gem_create_obj(dev, size); - if (IS_ERR_OR_NULL(xen_obj)) + if (IS_ERR(xen_obj)) return ERR_CAST(xen_obj); ret = gem_alloc_pages_array(xen_obj, size); --- linux-5.8.0.orig/drivers/gpu/drm/xen/xen_drm_front_kms.c +++ linux-5.8.0/drivers/gpu/drm/xen/xen_drm_front_kms.c @@ -60,7 +60,7 @@ int ret; fb = drm_gem_fb_create_with_funcs(dev, filp, mode_cmd, &fb_funcs); - if (IS_ERR_OR_NULL(fb)) + if (IS_ERR(fb)) return fb; gem_obj = fb->obj[0]; --- linux-5.8.0.orig/drivers/gpu/host1x/debug.c +++ linux-5.8.0/drivers/gpu/host1x/debug.c @@ -16,6 +16,8 @@ #include "debug.h" #include "channel.h" +static DEFINE_MUTEX(debug_lock); + unsigned int host1x_debug_trace_cmdbuf; static pid_t host1x_debug_force_timeout_pid; @@ -52,12 +54,14 @@ struct output *o = data; mutex_lock(&ch->cdma.lock); + mutex_lock(&debug_lock); if (show_fifo) host1x_hw_show_channel_fifo(m, ch, o); host1x_hw_show_channel_cdma(m, ch, o); + mutex_unlock(&debug_lock); mutex_unlock(&ch->cdma.lock); return 0; --- linux-5.8.0.orig/drivers/gpu/host1x/job.c +++ linux-5.8.0/drivers/gpu/host1x/job.c @@ -102,6 +102,7 @@ { struct host1x_client *client = job->client; struct device *dev = client->dev; + struct host1x_job_gather *g; struct iommu_domain *domain; unsigned int i; int err; @@ -184,7 +185,6 @@ } for (i = 0; i < job->num_gathers; i++) { - struct host1x_job_gather *g = &job->gathers[i]; size_t gather_size = 0; struct scatterlist *sg; struct sg_table *sgt; @@ -194,6 +194,7 @@ dma_addr_t *phys; unsigned int j; + g = &job->gathers[i]; g->bo = host1x_bo_get(g->bo); if (!g->bo) { err = -EINVAL; @@ -213,7 +214,7 @@ sgt = host1x_bo_pin(host->dev, g->bo, phys); if (IS_ERR(sgt)) { err = PTR_ERR(sgt); - goto unpin; + goto put; } if (!IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL) && host->domain) { @@ -226,7 +227,7 @@ host->iova_end >> shift, true); if (!alloc) { err = -ENOMEM; - goto unpin; + goto put; } err = iommu_map_sg(host->domain, @@ -235,7 +236,7 @@ if (err == 0) { __free_iova(&host->iova, alloc); err = -EINVAL; - goto unpin; + goto put; } job->unpins[job->num_unpins].size = gather_size; @@ -245,7 +246,7 @@ DMA_TO_DEVICE); if (!err) { err = -ENOMEM; - goto unpin; + goto put; } job->unpins[job->num_unpins].dir = DMA_TO_DEVICE; @@ -263,6 +264,8 @@ return 0; +put: + host1x_bo_put(g->bo); unpin: host1x_job_unpin(job); return err; --- linux-5.8.0.orig/drivers/gpu/ipu-v3/ipu-common.c +++ linux-5.8.0/drivers/gpu/ipu-v3/ipu-common.c @@ -124,6 +124,8 @@ case V4L2_PIX_FMT_RGBX32: case V4L2_PIX_FMT_ARGB32: case V4L2_PIX_FMT_XRGB32: + case V4L2_PIX_FMT_RGB32: + case V4L2_PIX_FMT_BGR32: return IPUV3_COLORSPACE_RGB; default: return IPUV3_COLORSPACE_UNKNOWN; --- linux-5.8.0.orig/drivers/gpu/ipu-v3/ipu-image-convert.c +++ linux-5.8.0/drivers/gpu/ipu-v3/ipu-image-convert.c @@ -137,6 +137,17 @@ struct ipu_image_convert_chan; struct ipu_image_convert_priv; +enum eof_irq_mask { + EOF_IRQ_IN = BIT(0), + EOF_IRQ_ROT_IN = BIT(1), + EOF_IRQ_OUT = BIT(2), + EOF_IRQ_ROT_OUT = BIT(3), +}; + +#define EOF_IRQ_COMPLETE (EOF_IRQ_IN | EOF_IRQ_OUT) +#define EOF_IRQ_ROT_COMPLETE (EOF_IRQ_IN | EOF_IRQ_OUT | \ + EOF_IRQ_ROT_IN | EOF_IRQ_ROT_OUT) + struct ipu_image_convert_ctx { struct ipu_image_convert_chan *chan; @@ -173,6 +184,9 @@ /* where to place converted tile in dest image */ unsigned int out_tile_map[MAX_TILES]; + /* mask of completed EOF irqs at every tile conversion */ + enum eof_irq_mask eof_mask; + struct list_head list; }; @@ -189,6 +203,8 @@ struct ipuv3_channel *rotation_out_chan; /* the IPU end-of-frame irqs */ + int in_eof_irq; + int rot_in_eof_irq; int out_eof_irq; int rot_out_eof_irq; @@ -1380,6 +1396,9 @@ dev_dbg(priv->ipu->dev, "%s: task %u: starting ctx %p run %p tile %u -> %u\n", __func__, chan->ic_task, ctx, run, tile, dst_tile); + /* clear EOF irq mask */ + ctx->eof_mask = 0; + if (ipu_rot_mode_is_irt(ctx->rot_mode)) { /* swap width/height for resizer */ dest_width = d_image->tile[dst_tile].height; @@ -1615,7 +1634,7 @@ } /* hold irqlock when calling */ -static irqreturn_t do_irq(struct ipu_image_convert_run *run) +static irqreturn_t do_tile_complete(struct ipu_image_convert_run *run) { struct ipu_image_convert_ctx *ctx = run->ctx; struct ipu_image_convert_chan *chan = ctx->chan; @@ -1700,6 +1719,7 @@ ctx->cur_buf_num ^= 1; } + ctx->eof_mask = 0; /* clear EOF irq mask for next tile */ ctx->next_tile++; return IRQ_HANDLED; done: @@ -1709,13 +1729,15 @@ return IRQ_WAKE_THREAD; } -static irqreturn_t norotate_irq(int irq, void *data) +static irqreturn_t eof_irq(int irq, void *data) { struct ipu_image_convert_chan *chan = data; + struct ipu_image_convert_priv *priv = chan->priv; struct ipu_image_convert_ctx *ctx; struct ipu_image_convert_run *run; + irqreturn_t ret = IRQ_HANDLED; + bool tile_complete = false; unsigned long flags; - irqreturn_t ret; spin_lock_irqsave(&chan->irqlock, flags); @@ -1728,46 +1750,33 @@ ctx = run->ctx; - if (ipu_rot_mode_is_irt(ctx->rot_mode)) { - /* this is a rotation operation, just ignore */ - spin_unlock_irqrestore(&chan->irqlock, flags); - return IRQ_HANDLED; - } - - ret = do_irq(run); -out: - spin_unlock_irqrestore(&chan->irqlock, flags); - return ret; -} - -static irqreturn_t rotate_irq(int irq, void *data) -{ - struct ipu_image_convert_chan *chan = data; - struct ipu_image_convert_priv *priv = chan->priv; - struct ipu_image_convert_ctx *ctx; - struct ipu_image_convert_run *run; - unsigned long flags; - irqreturn_t ret; - - spin_lock_irqsave(&chan->irqlock, flags); - - /* get current run and its context */ - run = chan->current_run; - if (!run) { + if (irq == chan->in_eof_irq) { + ctx->eof_mask |= EOF_IRQ_IN; + } else if (irq == chan->out_eof_irq) { + ctx->eof_mask |= EOF_IRQ_OUT; + } else if (irq == chan->rot_in_eof_irq || + irq == chan->rot_out_eof_irq) { + if (!ipu_rot_mode_is_irt(ctx->rot_mode)) { + /* this was NOT a rotation op, shouldn't happen */ + dev_err(priv->ipu->dev, + "Unexpected rotation interrupt\n"); + goto out; + } + ctx->eof_mask |= (irq == chan->rot_in_eof_irq) ? + EOF_IRQ_ROT_IN : EOF_IRQ_ROT_OUT; + } else { + dev_err(priv->ipu->dev, "Received unknown irq %d\n", irq); ret = IRQ_NONE; goto out; } - ctx = run->ctx; - - if (!ipu_rot_mode_is_irt(ctx->rot_mode)) { - /* this was NOT a rotation operation, shouldn't happen */ - dev_err(priv->ipu->dev, "Unexpected rotation interrupt\n"); - spin_unlock_irqrestore(&chan->irqlock, flags); - return IRQ_HANDLED; - } + if (ipu_rot_mode_is_irt(ctx->rot_mode)) + tile_complete = (ctx->eof_mask == EOF_IRQ_ROT_COMPLETE); + else + tile_complete = (ctx->eof_mask == EOF_IRQ_COMPLETE); - ret = do_irq(run); + if (tile_complete) + ret = do_tile_complete(run); out: spin_unlock_irqrestore(&chan->irqlock, flags); return ret; @@ -1801,6 +1810,10 @@ static void release_ipu_resources(struct ipu_image_convert_chan *chan) { + if (chan->in_eof_irq >= 0) + free_irq(chan->in_eof_irq, chan); + if (chan->rot_in_eof_irq >= 0) + free_irq(chan->rot_in_eof_irq, chan); if (chan->out_eof_irq >= 0) free_irq(chan->out_eof_irq, chan); if (chan->rot_out_eof_irq >= 0) @@ -1819,7 +1832,27 @@ chan->in_chan = chan->out_chan = chan->rotation_in_chan = chan->rotation_out_chan = NULL; - chan->out_eof_irq = chan->rot_out_eof_irq = -1; + chan->in_eof_irq = -1; + chan->rot_in_eof_irq = -1; + chan->out_eof_irq = -1; + chan->rot_out_eof_irq = -1; +} + +static int get_eof_irq(struct ipu_image_convert_chan *chan, + struct ipuv3_channel *channel) +{ + struct ipu_image_convert_priv *priv = chan->priv; + int ret, irq; + + irq = ipu_idmac_channel_irq(priv->ipu, channel, IPU_IRQ_EOF); + + ret = request_threaded_irq(irq, eof_irq, do_bh, 0, "ipu-ic", chan); + if (ret < 0) { + dev_err(priv->ipu->dev, "could not acquire irq %d\n", irq); + return ret; + } + + return irq; } static int get_ipu_resources(struct ipu_image_convert_chan *chan) @@ -1855,31 +1888,33 @@ } /* acquire the EOF interrupts */ - chan->out_eof_irq = ipu_idmac_channel_irq(priv->ipu, - chan->out_chan, - IPU_IRQ_EOF); + ret = get_eof_irq(chan, chan->in_chan); + if (ret < 0) { + chan->in_eof_irq = -1; + goto err; + } + chan->in_eof_irq = ret; - ret = request_threaded_irq(chan->out_eof_irq, norotate_irq, do_bh, - 0, "ipu-ic", chan); + ret = get_eof_irq(chan, chan->rotation_in_chan); if (ret < 0) { - dev_err(priv->ipu->dev, "could not acquire irq %d\n", - chan->out_eof_irq); - chan->out_eof_irq = -1; + chan->rot_in_eof_irq = -1; goto err; } + chan->rot_in_eof_irq = ret; - chan->rot_out_eof_irq = ipu_idmac_channel_irq(priv->ipu, - chan->rotation_out_chan, - IPU_IRQ_EOF); + ret = get_eof_irq(chan, chan->out_chan); + if (ret < 0) { + chan->out_eof_irq = -1; + goto err; + } + chan->out_eof_irq = ret; - ret = request_threaded_irq(chan->rot_out_eof_irq, rotate_irq, do_bh, - 0, "ipu-ic", chan); + ret = get_eof_irq(chan, chan->rotation_out_chan); if (ret < 0) { - dev_err(priv->ipu->dev, "could not acquire irq %d\n", - chan->rot_out_eof_irq); chan->rot_out_eof_irq = -1; goto err; } + chan->rot_out_eof_irq = ret; return 0; err: @@ -2458,6 +2493,8 @@ chan->ic_task = i; chan->priv = priv; chan->dma_ch = &image_convert_dma_chan[i]; + chan->in_eof_irq = -1; + chan->rot_in_eof_irq = -1; chan->out_eof_irq = -1; chan->rot_out_eof_irq = -1; --- linux-5.8.0.orig/drivers/hid/Kconfig +++ linux-5.8.0/drivers/hid/Kconfig @@ -890,6 +890,7 @@ depends on NEW_LEDS depends on LEDS_CLASS select POWER_SUPPLY + select CRC32 help Support for --- linux-5.8.0.orig/drivers/hid/hid-core.c +++ linux-5.8.0/drivers/hid/hid-core.c @@ -90,7 +90,7 @@ * Register a new field for this report. */ -static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages, unsigned values) +static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages) { struct hid_field *field; @@ -101,7 +101,7 @@ field = kzalloc((sizeof(struct hid_field) + usages * sizeof(struct hid_usage) + - values * sizeof(unsigned)), GFP_KERNEL); + usages * sizeof(unsigned)), GFP_KERNEL); if (!field) return NULL; @@ -300,7 +300,7 @@ usages = max_t(unsigned, parser->local.usage_index, parser->global.report_count); - field = hid_register_field(report, usages, parser->global.report_count); + field = hid_register_field(report, usages); if (!field) return 0; @@ -1300,6 +1300,9 @@ static s32 snto32(__u32 value, unsigned n) { + if (!value || !n) + return 0; + switch (n) { case 8: return ((__s8)value); case 16: return ((__s16)value); @@ -1598,6 +1601,17 @@ } /* + * Compute the size of a report. + */ +static size_t hid_compute_report_size(struct hid_report *report) +{ + if (report->size) + return ((report->size - 1) >> 3) + 1; + + return 0; +} + +/* * Create a report. 'data' has to be allocated using * hid_alloc_report_buf() so that it has proper size. */ @@ -1609,7 +1623,7 @@ if (report->id > 0) *data++ = report->id; - memset(data, 0, ((report->size - 1) >> 3) + 1); + memset(data, 0, hid_compute_report_size(report)); for (n = 0; n < report->maxfield; n++) hid_output_field(report->device, report->field[n], data); } @@ -1739,7 +1753,7 @@ csize--; } - rsize = ((report->size - 1) >> 3) + 1; + rsize = hid_compute_report_size(report); if (report_enum->numbered && rsize >= HID_MAX_BUFFER_SIZE) rsize = HID_MAX_BUFFER_SIZE - 1; --- linux-5.8.0.orig/drivers/hid/hid-cypress.c +++ linux-5.8.0/drivers/hid/hid-cypress.c @@ -23,19 +23,17 @@ #define CP_2WHEEL_MOUSE_HACK 0x02 #define CP_2WHEEL_MOUSE_HACK_ON 0x04 +#define VA_INVAL_LOGICAL_BOUNDARY 0x08 + /* * Some USB barcode readers from cypress have usage min and usage max in * the wrong order */ -static __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc, +static __u8 *cp_rdesc_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); unsigned int i; - if (!(quirks & CP_RDESC_SWAPPED_MIN_MAX)) - return rdesc; - if (*rsize < 4) return rdesc; @@ -48,6 +46,40 @@ return rdesc; } +static __u8 *va_logical_boundary_fixup(struct hid_device *hdev, __u8 *rdesc, + unsigned int *rsize) +{ + /* + * Varmilo VA104M (with VID Cypress and device ID 07B1) incorrectly + * reports Logical Minimum of its Consumer Control device as 572 + * (0x02 0x3c). Fix this by setting its Logical Minimum to zero. + */ + if (*rsize == 25 && + rdesc[0] == 0x05 && rdesc[1] == 0x0c && + rdesc[2] == 0x09 && rdesc[3] == 0x01 && + rdesc[6] == 0x19 && rdesc[7] == 0x00 && + rdesc[11] == 0x16 && rdesc[12] == 0x3c && rdesc[13] == 0x02) { + hid_info(hdev, + "fixing up varmilo VA104M consumer control report descriptor\n"); + rdesc[12] = 0x00; + rdesc[13] = 0x00; + } + return rdesc; +} + +static __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc, + unsigned int *rsize) +{ + unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + + if (quirks & CP_RDESC_SWAPPED_MIN_MAX) + rdesc = cp_rdesc_fixup(hdev, rdesc, rsize); + if (quirks & VA_INVAL_LOGICAL_BOUNDARY) + rdesc = va_logical_boundary_fixup(hdev, rdesc, rsize); + + return rdesc; +} + static int cp_input_mapped(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) @@ -128,6 +160,8 @@ .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE), .driver_data = CP_2WHEEL_MOUSE_HACK }, + { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_VARMILO_VA104M_07B1), + .driver_data = VA_INVAL_LOGICAL_BOUNDARY }, { } }; MODULE_DEVICE_TABLE(hid, cp_devices); --- linux-5.8.0.orig/drivers/hid/hid-elan.c +++ linux-5.8.0/drivers/hid/hid-elan.c @@ -188,6 +188,7 @@ ret = input_mt_init_slots(input, ELAN_MAX_FINGERS, INPUT_MT_POINTER); if (ret) { hid_err(hdev, "Failed to init elan MT slots: %d\n", ret); + input_free_device(input); return ret; } @@ -198,6 +199,7 @@ if (ret) { hid_err(hdev, "Failed to register elan input device: %d\n", ret); + input_mt_destroy_slots(input); input_free_device(input); return ret; } --- linux-5.8.0.orig/drivers/hid/hid-ids.h +++ linux-5.8.0/drivers/hid/hid-ids.h @@ -331,6 +331,8 @@ #define USB_DEVICE_ID_CYPRESS_BARCODE_4 0xed81 #define USB_DEVICE_ID_CYPRESS_TRUETOUCH 0xc001 +#define USB_DEVICE_ID_CYPRESS_VARMILO_VA104M_07B1 0X07b1 + #define USB_VENDOR_ID_DATA_MODUL 0x7374 #define USB_VENDOR_ID_DATA_MODUL_EASYMAXTOUCH 0x1201 @@ -357,6 +359,7 @@ #define USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR 0x1803 #define USB_DEVICE_ID_DRAGONRISE_GAMECUBE1 0x1843 #define USB_DEVICE_ID_DRAGONRISE_GAMECUBE2 0x1844 +#define USB_DEVICE_ID_DRAGONRISE_GAMECUBE3 0x1846 #define USB_VENDOR_ID_DWAV 0x0eef #define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001 @@ -385,6 +388,7 @@ #define USB_DEVICE_ID_TOSHIBA_CLICK_L9W 0x0401 #define USB_DEVICE_ID_HP_X2 0x074d #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 +#define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN 0x2706 #define USB_VENDOR_ID_ELECOM 0x056e #define USB_DEVICE_ID_ELECOM_BM084 0x0061 @@ -443,6 +447,10 @@ #define USB_VENDOR_ID_FRUCTEL 0x25B6 #define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002 +#define USB_VENDOR_ID_GAMEVICE 0x27F8 +#define USB_DEVICE_ID_GAMEVICE_GV186 0x0BBE +#define USB_DEVICE_ID_GAMEVICE_KISHI 0x0BBF + #define USB_VENDOR_ID_GAMERON 0x0810 #define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001 #define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002 @@ -485,6 +493,7 @@ #define USB_DEVICE_ID_PENPOWER 0x00f4 #define USB_VENDOR_ID_GREENASIA 0x0e8f +#define USB_DEVICE_ID_GREENASIA_DUAL_SAT_ADAPTOR 0x3010 #define USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD 0x3013 #define USB_VENDOR_ID_GRETAGMACBETH 0x0971 @@ -630,6 +639,8 @@ #define USB_DEVICE_ID_INNEX_GENESIS_ATARI 0x4745 #define USB_VENDOR_ID_ITE 0x048d +#define I2C_VENDOR_ID_ITE 0x103c +#define I2C_DEVICE_ID_ITE_VOYO_WINPAD_A15 0x184f #define USB_DEVICE_ID_ITE_LENOVO_YOGA 0x8386 #define USB_DEVICE_ID_ITE_LENOVO_YOGA2 0x8350 #define I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720 0x837a @@ -726,7 +737,11 @@ #define USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL 0x6049 #define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067 #define USB_DEVICE_ID_LENOVO_X1_COVER 0x6085 +#define USB_DEVICE_ID_LENOVO_X1_TAB3 0x60b5 #define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d +#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019 0x6019 +#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E 0x602e +#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6093 0x6093 #define USB_VENDOR_ID_LG 0x1fd2 #define USB_DEVICE_ID_LG_MULTITOUCH 0x0064 @@ -737,6 +752,7 @@ #define USB_VENDOR_ID_LOGITECH 0x046d #define USB_DEVICE_ID_LOGITECH_AUDIOHUB 0x0a0e #define USB_DEVICE_ID_LOGITECH_T651 0xb00c +#define USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD 0xb309 #define USB_DEVICE_ID_LOGITECH_C007 0xc007 #define USB_DEVICE_ID_LOGITECH_C077 0xc077 #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 @@ -773,6 +789,7 @@ #define USB_DEVICE_ID_LOGITECH_G27_WHEEL 0xc29b #define USB_DEVICE_ID_LOGITECH_WII_WHEEL 0xc29c #define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a +#define USB_DEVICE_ID_LOGITECH_GROUP_AUDIO 0x0882 #define USB_DEVICE_ID_S510_RECEIVER 0xc50c #define USB_DEVICE_ID_S510_RECEIVER_2 0xc517 #define USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500 0xc512 @@ -845,6 +862,7 @@ #define USB_DEVICE_ID_MS_POWER_COVER 0x07da #define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd #define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb +#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0 #define USB_VENDOR_ID_MOJO 0x8282 #define USB_DEVICE_ID_RETRO_ADAPTER 0x3201 @@ -1010,6 +1028,8 @@ #define USB_DEVICE_ID_SAITEK_RAT9 0x0cfa #define USB_DEVICE_ID_SAITEK_MMO7 0x0cd0 #define USB_DEVICE_ID_SAITEK_X52 0x075c +#define USB_DEVICE_ID_SAITEK_X52_2 0x0255 +#define USB_DEVICE_ID_SAITEK_X52_PRO 0x0762 #define USB_VENDOR_ID_SAMSUNG 0x0419 #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001 @@ -1115,6 +1135,7 @@ #define USB_DEVICE_ID_SYNAPTICS_DELL_K12A 0x2819 #define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012 0x2968 #define USB_DEVICE_ID_SYNAPTICS_TP_V103 0x5710 +#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003 0x73f5 #define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5 0x81a7 #define USB_VENDOR_ID_TEXAS_INSTRUMENTS 0x2047 @@ -1287,6 +1308,7 @@ #define USB_VENDOR_ID_UGTIZER 0x2179 #define USB_DEVICE_ID_UGTIZER_TABLET_GP0610 0x0053 +#define USB_DEVICE_ID_UGTIZER_TABLET_GT5040 0x0077 #define USB_VENDOR_ID_VIEWSONIC 0x0543 #define USB_DEVICE_ID_VIEWSONIC_PD1011 0xe621 --- linux-5.8.0.orig/drivers/hid/hid-input.c +++ linux-5.8.0/drivers/hid/hid-input.c @@ -319,6 +319,11 @@ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD), HID_BATTERY_QUIRK_IGNORE }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, + USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD), + HID_BATTERY_QUIRK_IGNORE }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN), + HID_BATTERY_QUIRK_IGNORE }, {} }; @@ -350,13 +355,13 @@ u8 *buf; int ret; - buf = kmalloc(2, GFP_KERNEL); + buf = kmalloc(4, GFP_KERNEL); if (!buf) return -ENOMEM; - ret = hid_hw_raw_request(dev, dev->battery_report_id, buf, 2, + ret = hid_hw_raw_request(dev, dev->battery_report_id, buf, 4, dev->battery_report_type, HID_REQ_GET_REPORT); - if (ret != 2) { + if (ret < 2) { kfree(buf); return -ENODATA; } @@ -797,7 +802,7 @@ case 0x3b: /* Battery Strength */ hidinput_setup_battery(device, HID_INPUT_REPORT, field); usage->type = EV_PWR; - goto ignore; + return; case 0x3c: /* Invert */ map_key_clear(BTN_TOOL_RUBBER); @@ -1059,7 +1064,7 @@ case HID_DC_BATTERYSTRENGTH: hidinput_setup_battery(device, HID_INPUT_REPORT, field); usage->type = EV_PWR; - goto ignore; + return; } goto unknown; @@ -1132,6 +1137,10 @@ } mapped: + /* Mapping failed, bail out */ + if (!bit) + return; + if (device->driver->input_mapped && device->driver->input_mapped(device, hidinput, field, usage, &bit, &max) < 0) { --- linux-5.8.0.orig/drivers/hid/hid-ite.c +++ linux-5.8.0/drivers/hid/hid-ite.c @@ -11,6 +11,48 @@ #include "hid-ids.h" +#define QUIRK_TOUCHPAD_ON_OFF_REPORT BIT(0) + +static __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) +{ + unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + + if (quirks & QUIRK_TOUCHPAD_ON_OFF_REPORT) { + if (*rsize == 188 && rdesc[162] == 0x81 && rdesc[163] == 0x02) { + hid_info(hdev, "Fixing up ITE keyboard report descriptor\n"); + rdesc[163] = HID_MAIN_ITEM_RELATIVE; + } + } + + return rdesc; +} + +static int ite_input_mapping(struct hid_device *hdev, + struct hid_input *hi, struct hid_field *field, + struct hid_usage *usage, unsigned long **bit, + int *max) +{ + + unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + + if ((quirks & QUIRK_TOUCHPAD_ON_OFF_REPORT) && + (usage->hid & HID_USAGE_PAGE) == 0x00880000) { + if (usage->hid == 0x00880078) { + /* Touchpad on, userspace expects F22 for this */ + hid_map_usage_clear(hi, usage, bit, max, EV_KEY, KEY_F22); + return 1; + } + if (usage->hid == 0x00880079) { + /* Touchpad off, userspace expects F23 for this */ + hid_map_usage_clear(hi, usage, bit, max, EV_KEY, KEY_F23); + return 1; + } + return -1; + } + + return 0; +} + static int ite_event(struct hid_device *hdev, struct hid_field *field, struct hid_usage *usage, __s32 value) { @@ -37,13 +79,31 @@ return 0; } +static int ite_probe(struct hid_device *hdev, const struct hid_device_id *id) +{ + int ret; + + hid_set_drvdata(hdev, (void *)id->driver_data); + + ret = hid_open_report(hdev); + if (ret) + return ret; + + return hid_hw_start(hdev, HID_CONNECT_DEFAULT); +} + static const struct hid_device_id ite_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_ITE, USB_DEVICE_ID_ITE8595) }, { HID_USB_DEVICE(USB_VENDOR_ID_258A, USB_DEVICE_ID_258A_6A88) }, /* ITE8595 USB kbd ctlr, with Synaptics touchpad connected to it. */ { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_SYNAPTICS, - USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012) }, + USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012), + .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, + /* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */ + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, + USB_VENDOR_ID_SYNAPTICS, + USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003) }, { } }; MODULE_DEVICE_TABLE(hid, ite_devices); @@ -51,6 +111,9 @@ static struct hid_driver ite_driver = { .name = "itetech", .id_table = ite_devices, + .probe = ite_probe, + .report_fixup = ite_report_fixup, + .input_mapping = ite_input_mapping, .event = ite_event, }; module_hid_driver(ite_driver); --- linux-5.8.0.orig/drivers/hid/hid-logitech-dj.c +++ linux-5.8.0/drivers/hid/hid-logitech-dj.c @@ -328,7 +328,7 @@ 0x25, 0x01, /* LOGICAL_MAX (1) */ 0x75, 0x01, /* REPORT_SIZE (1) */ 0x95, 0x04, /* REPORT_COUNT (4) */ - 0x81, 0x06, /* INPUT */ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ 0xC0, /* END_COLLECTION */ 0xC0, /* END_COLLECTION */ }; @@ -866,11 +866,24 @@ schedule_work(&djrcv_dev->work); } +/* + * Some quad/bluetooth keyboards have a builtin touchpad in this case we see + * only 1 paired device with a device_type of REPORT_TYPE_KEYBOARD. For the + * touchpad to work we must also forward mouse input reports to the dj_hiddev + * created for the keyboard (instead of forwarding them to a second paired + * device with a device_type of REPORT_TYPE_MOUSE as we normally would). + */ +static const u16 kbd_builtin_touchpad_ids[] = { + 0xb309, /* Dinovo Edge */ + 0xb30c, /* Dinovo Mini */ +}; + static void logi_hidpp_dev_conn_notif_equad(struct hid_device *hdev, struct hidpp_event *hidpp_report, struct dj_workitem *workitem) { struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev); + int i, id; workitem->type = WORKITEM_TYPE_PAIRED; workitem->device_type = hidpp_report->params[HIDPP_PARAM_DEVICE_INFO] & @@ -882,6 +895,13 @@ workitem->reports_supported |= STD_KEYBOARD | MULTIMEDIA | POWER_KEYS | MEDIA_CENTER | HIDPP; + id = (workitem->quad_id_msb << 8) | workitem->quad_id_lsb; + for (i = 0; i < ARRAY_SIZE(kbd_builtin_touchpad_ids); i++) { + if (id == kbd_builtin_touchpad_ids[i]) { + workitem->reports_supported |= STD_MOUSE; + break; + } + } break; case REPORT_TYPE_MOUSE: workitem->reports_supported |= STD_MOUSE | HIDPP; @@ -960,6 +980,7 @@ case 0x07: device_type = "eQUAD step 4 Gaming"; logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem); + workitem.reports_supported |= STD_KEYBOARD; break; case 0x08: device_type = "eQUAD step 4 for gamepads"; @@ -974,7 +995,12 @@ workitem.reports_supported |= STD_KEYBOARD; break; case 0x0d: - device_type = "eQUAD Lightspeed 1_1"; + device_type = "eQUAD Lightspeed 1.1"; + logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem); + workitem.reports_supported |= STD_KEYBOARD; + break; + case 0x0f: + device_type = "eQUAD Lightspeed 1.2"; logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem); workitem.reports_supported |= STD_KEYBOARD; break; @@ -1849,6 +1875,10 @@ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xc531), .driver_data = recvr_type_gaming_hidpp}, + { /* Logitech G602 receiver (0xc537) */ + HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, + 0xc537), + .driver_data = recvr_type_gaming_hidpp}, { /* Logitech lightspeed receiver (0xc539) */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1), --- linux-5.8.0.orig/drivers/hid/hid-logitech-hidpp.c +++ linux-5.8.0/drivers/hid/hid-logitech-hidpp.c @@ -93,6 +93,8 @@ #define HIDPP_CAPABILITY_BATTERY_LEVEL_STATUS BIT(3) #define HIDPP_CAPABILITY_BATTERY_VOLTAGE BIT(4) +#define lg_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c)) + /* * There are two hidpp protocols in use, the first version hidpp10 is known * as register access protocol or RAP, the second version hidpp20 is known as @@ -2951,6 +2953,26 @@ } /* -------------------------------------------------------------------------- */ +/* Logitech Dinovo Mini keyboard with builtin touchpad */ +/* -------------------------------------------------------------------------- */ +#define DINOVO_MINI_PRODUCT_ID 0xb30c + +static int lg_dinovo_input_mapping(struct hid_device *hdev, struct hid_input *hi, + struct hid_field *field, struct hid_usage *usage, + unsigned long **bit, int *max) +{ + if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR) + return 0; + + switch (usage->hid & HID_USAGE) { + case 0x00d: lg_map_key_clear(KEY_MEDIA); break; + default: + return 0; + } + return 1; +} + +/* -------------------------------------------------------------------------- */ /* HID++1.0 devices which use HID++ reports for their wheels */ /* -------------------------------------------------------------------------- */ static int hidpp10_wheel_connect(struct hidpp_device *hidpp) @@ -3185,6 +3207,9 @@ field->application != HID_GD_MOUSE) return m560_input_mapping(hdev, hi, field, usage, bit, max); + if (hdev->product == DINOVO_MINI_PRODUCT_ID) + return lg_dinovo_input_mapping(hdev, hi, field, usage, bit, max); + return 0; } @@ -3947,6 +3972,7 @@ LDJ_DEVICE(0x405e), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { /* Mouse Logitech MX Anywhere 2 */ LDJ_DEVICE(0x404a), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, + { LDJ_DEVICE(0x4072), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb013), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb018), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb01f), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, @@ -3971,6 +3997,9 @@ { /* Keyboard MX5000 (Bluetooth-receiver in HID proxy mode) */ LDJ_DEVICE(0xb305), .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, + { /* Dinovo Edge (Bluetooth-receiver in HID proxy mode) */ + LDJ_DEVICE(0xb309), + .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, { /* Keyboard MX5500 (Bluetooth-receiver in HID proxy mode) */ LDJ_DEVICE(0xb30b), .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, @@ -4013,12 +4042,17 @@ { /* MX5000 keyboard over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb305), .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, + { /* Dinovo Edge keyboard over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb309), + .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, { /* MX5500 keyboard over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb30b), .driver_data = HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS }, { /* MX Master mouse over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb012), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, + { /* MX Ergo trackball over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01d) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01e), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { /* MX Master 3 mouse over Bluetooth */ --- linux-5.8.0.orig/drivers/hid/hid-mcp2221.c +++ linux-5.8.0/drivers/hid/hid-mcp2221.c @@ -49,6 +49,36 @@ MCP2221_ALT_F_NOT_GPIOD = 0xEF, }; +/* MCP GPIO direction encoding */ +enum { + MCP2221_DIR_OUT = 0x00, + MCP2221_DIR_IN = 0x01, +}; + +#define MCP_NGPIO 4 + +/* MCP GPIO set command layout */ +struct mcp_set_gpio { + u8 cmd; + u8 dummy; + struct { + u8 change_value; + u8 value; + u8 change_direction; + u8 direction; + } gpio[MCP_NGPIO]; +} __packed; + +/* MCP GPIO get command layout */ +struct mcp_get_gpio { + u8 cmd; + u8 dummy; + struct { + u8 direction; + u8 value; + } gpio[MCP_NGPIO]; +} __packed; + /* * There is no way to distinguish responses. Therefore next command * is sent only after response to previous has been received. Mutex @@ -542,7 +572,7 @@ mcp->txbuf[0] = MCP2221_GPIO_GET; - mcp->gp_idx = (offset + 1) * 2; + mcp->gp_idx = offsetof(struct mcp_get_gpio, gpio[offset].value); mutex_lock(&mcp->lock); ret = mcp_send_data_req_status(mcp, mcp->txbuf, 1); @@ -559,7 +589,7 @@ memset(mcp->txbuf, 0, 18); mcp->txbuf[0] = MCP2221_GPIO_SET; - mcp->gp_idx = ((offset + 1) * 4) - 1; + mcp->gp_idx = offsetof(struct mcp_set_gpio, gpio[offset].value); mcp->txbuf[mcp->gp_idx - 1] = 1; mcp->txbuf[mcp->gp_idx] = !!value; @@ -575,7 +605,7 @@ memset(mcp->txbuf, 0, 18); mcp->txbuf[0] = MCP2221_GPIO_SET; - mcp->gp_idx = (offset + 1) * 5; + mcp->gp_idx = offsetof(struct mcp_set_gpio, gpio[offset].direction); mcp->txbuf[mcp->gp_idx - 1] = 1; mcp->txbuf[mcp->gp_idx] = val; @@ -590,7 +620,7 @@ struct mcp2221 *mcp = gpiochip_get_data(gc); mutex_lock(&mcp->lock); - ret = mcp_gpio_dir_set(mcp, offset, 0); + ret = mcp_gpio_dir_set(mcp, offset, MCP2221_DIR_IN); mutex_unlock(&mcp->lock); return ret; @@ -603,7 +633,7 @@ struct mcp2221 *mcp = gpiochip_get_data(gc); mutex_lock(&mcp->lock); - ret = mcp_gpio_dir_set(mcp, offset, 1); + ret = mcp_gpio_dir_set(mcp, offset, MCP2221_DIR_OUT); mutex_unlock(&mcp->lock); /* Can't configure as output, bailout early */ @@ -623,7 +653,7 @@ mcp->txbuf[0] = MCP2221_GPIO_GET; - mcp->gp_idx = (offset + 1) * 2; + mcp->gp_idx = offsetof(struct mcp_get_gpio, gpio[offset].direction); mutex_lock(&mcp->lock); ret = mcp_send_data_req_status(mcp, mcp->txbuf, 1); @@ -632,7 +662,7 @@ if (ret) return ret; - if (mcp->gpio_dir) + if (mcp->gpio_dir == MCP2221_DIR_IN) return GPIO_LINE_DIRECTION_IN; return GPIO_LINE_DIRECTION_OUT; @@ -758,7 +788,7 @@ mcp->status = -ENOENT; } else { mcp->status = !!data[mcp->gp_idx]; - mcp->gpio_dir = !!data[mcp->gp_idx + 1]; + mcp->gpio_dir = data[mcp->gp_idx + 1]; } break; default: @@ -860,7 +890,7 @@ mcp->gc->get_direction = mcp_gpio_get_direction; mcp->gc->set = mcp_gpio_set; mcp->gc->get = mcp_gpio_get; - mcp->gc->ngpio = 4; + mcp->gc->ngpio = MCP_NGPIO; mcp->gc->base = -1; mcp->gc->can_sleep = 1; mcp->gc->parent = &hdev->dev; --- linux-5.8.0.orig/drivers/hid/hid-mf.c +++ linux-5.8.0/drivers/hid/hid-mf.c @@ -153,6 +153,8 @@ .driver_data = HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE2), .driver_data = 0 }, /* No quirk required */ + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3), + .driver_data = HID_QUIRK_MULTI_INPUT }, { } }; MODULE_DEVICE_TABLE(hid, mf_devices); --- linux-5.8.0.orig/drivers/hid/hid-microsoft.c +++ linux-5.8.0/drivers/hid/hid-microsoft.c @@ -451,6 +451,8 @@ .driver_data = MS_SURFACE_DIAL }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER), .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS), + .driver_data = MS_QUIRK_FF }, { } }; MODULE_DEVICE_TABLE(hid, ms_devices); --- linux-5.8.0.orig/drivers/hid/hid-multitouch.c +++ linux-5.8.0/drivers/hid/hid-multitouch.c @@ -758,7 +758,8 @@ MT_STORE_FIELD(inrange_state); return 1; case HID_DG_CONFIDENCE: - if (cls->name == MT_CLS_WIN_8 && + if ((cls->name == MT_CLS_WIN_8 || + cls->name == MT_CLS_WIN_8_FORCE_MULTI_INPUT) && (field->application == HID_DG_TOUCHPAD || field->application == HID_DG_TOUCHSCREEN)) app->quirks |= MT_QUIRK_CONFIDENCE; @@ -856,6 +857,8 @@ code = BTN_0 + ((usage->hid - 1) & HID_USAGE); hid_map_usage(hi, usage, bit, max, EV_KEY, code); + if (!*bit) + return -1; input_set_capability(hi->input, EV_KEY, code); return 1; @@ -1971,6 +1974,12 @@ HID_DEVICE(BUS_I2C, HID_GROUP_GENERIC, USB_VENDOR_ID_LG, I2C_DEVICE_ID_LG_7010) }, + /* Lenovo X1 TAB Gen 3 */ + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, + HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8, + USB_VENDOR_ID_LENOVO, + USB_DEVICE_ID_LENOVO_X1_TAB3) }, + /* MosArt panels */ { .driver_data = MT_CLS_CONFIDENCE_MINUS_ONE, MT_USB_DEVICE(USB_VENDOR_ID_ASUS, @@ -2040,6 +2049,10 @@ HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8, USB_VENDOR_ID_SYNAPTICS, 0xce08) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, + HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8, + USB_VENDOR_ID_SYNAPTICS, 0xce09) }, + /* TopSeed panels */ { .driver_data = MT_CLS_TOPSEED, MT_USB_DEVICE(USB_VENDOR_ID_TOPSEED2, --- linux-5.8.0.orig/drivers/hid/hid-quirks.c +++ linux-5.8.0/drivers/hid/hid-quirks.c @@ -72,6 +72,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER), HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET }, @@ -83,7 +84,12 @@ { HID_USB_DEVICE(USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_FUTABA, USB_DEVICE_ID_LED_DISPLAY), HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_SAT_ADAPTOR), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD), HID_QUIRK_MULTI_INPUT }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_GV186), + HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_KISHI), + HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, @@ -105,6 +111,9 @@ { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE_ID2), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_602E), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6093), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_G710_PLUS), HID_QUIRK_NOGET }, @@ -147,6 +156,8 @@ { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETROPORT), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), HID_QUIRK_BADPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD500USB), HID_QUIRK_NOGET }, @@ -179,6 +190,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET }, { 0 } }; @@ -473,6 +485,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPHINBAR) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE1) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMECUBE3) }, #endif #if IS_ENABLED(CONFIG_HID_MICROSOFT) { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500) }, --- linux-5.8.0.orig/drivers/hid/hid-roccat-kone.c +++ linux-5.8.0/drivers/hid/hid-roccat-kone.c @@ -294,31 +294,40 @@ struct kone_device *kone = hid_get_drvdata(dev_get_drvdata(dev)); struct usb_device *usb_dev = interface_to_usbdev(to_usb_interface(dev)); int retval = 0, difference, old_profile; + struct kone_settings *settings = (struct kone_settings *)buf; /* I need to get my data in one piece */ if (off != 0 || count != sizeof(struct kone_settings)) return -EINVAL; mutex_lock(&kone->kone_lock); - difference = memcmp(buf, &kone->settings, sizeof(struct kone_settings)); + difference = memcmp(settings, &kone->settings, + sizeof(struct kone_settings)); if (difference) { - retval = kone_set_settings(usb_dev, - (struct kone_settings const *)buf); - if (retval) { - mutex_unlock(&kone->kone_lock); - return retval; + if (settings->startup_profile < 1 || + settings->startup_profile > 5) { + retval = -EINVAL; + goto unlock; } + retval = kone_set_settings(usb_dev, settings); + if (retval) + goto unlock; + old_profile = kone->settings.startup_profile; - memcpy(&kone->settings, buf, sizeof(struct kone_settings)); + memcpy(&kone->settings, settings, sizeof(struct kone_settings)); kone_profile_activated(kone, kone->settings.startup_profile); if (kone->settings.startup_profile != old_profile) kone_profile_report(kone, kone->settings.startup_profile); } +unlock: mutex_unlock(&kone->kone_lock); + if (retval) + return retval; + return sizeof(struct kone_settings); } static BIN_ATTR(settings, 0660, kone_sysfs_read_settings, --- linux-5.8.0.orig/drivers/hid/hid-sensor-hub.c +++ linux-5.8.0/drivers/hid/hid-sensor-hub.c @@ -483,7 +483,8 @@ return 1; ptr = raw_data; - ptr++; /* Skip report id */ + if (report->id) + ptr++; /* Skip report id */ spin_lock_irqsave(&pdata->lock, flags); --- linux-5.8.0.orig/drivers/hid/hid-uclogic-core.c +++ linux-5.8.0/drivers/hid/hid-uclogic-core.c @@ -385,6 +385,8 @@ USB_DEVICE_ID_UCLOGIC_DRAWIMAGE_G3) }, { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_GP0610) }, + { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, + USB_DEVICE_ID_UGTIZER_TABLET_GT5040) }, { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_TABLET_G5) }, { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, --- linux-5.8.0.orig/drivers/hid/hid-uclogic-params.c +++ linux-5.8.0/drivers/hid/hid-uclogic-params.c @@ -997,6 +997,8 @@ break; case VID_PID(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_GP0610): + case VID_PID(USB_VENDOR_ID_UGTIZER, + USB_DEVICE_ID_UGTIZER_TABLET_GT5040): case VID_PID(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_XPPEN_TABLET_G540): case VID_PID(USB_VENDOR_ID_UGEE, --- linux-5.8.0.orig/drivers/hid/i2c-hid/i2c-hid-core.c +++ linux-5.8.0/drivers/hid/i2c-hid/i2c-hid-core.c @@ -171,6 +171,8 @@ I2C_HID_QUIRK_SET_PWR_WAKEUP_DEV }, { I2C_VENDOR_ID_HANTICK, I2C_PRODUCT_ID_HANTICK_5288, I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, + { I2C_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_VOYO_WINPAD_A15, + I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, { I2C_VENDOR_ID_RAYDIUM, I2C_PRODUCT_ID_RAYDIUM_3118, I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, { USB_VENDOR_ID_ELAN, HID_ANY_ID, @@ -420,6 +422,19 @@ dev_err(&client->dev, "failed to change power setting.\n"); set_pwr_exit: + + /* + * The HID over I2C specification states that if a DEVICE needs time + * after the PWR_ON request, it should utilise CLOCK stretching. + * However, it has been observered that the Windows driver provides a + * 1ms sleep between the PWR_ON and RESET requests. + * According to Goodix Windows even waits 60 ms after (other?) + * PWR_ON requests. Testing has confirmed that several devices + * will not work properly without a delay after a PWR_ON request. + */ + if (!ret && power_state == I2C_HID_PWR_ON) + msleep(60); + return ret; } @@ -441,15 +456,6 @@ if (ret) goto out_unlock; - /* - * The HID over I2C specification states that if a DEVICE needs time - * after the PWR_ON request, it should utilise CLOCK stretching. - * However, it has been observered that the Windows driver provides a - * 1ms sleep between the PWR_ON and RESET requests and that some devices - * rely on this. - */ - usleep_range(1000, 5000); - i2c_hid_dbg(ihid, "resetting...\n"); ret = i2c_hid_command(client, &hid_reset_cmd, NULL, 0); @@ -931,6 +937,14 @@ acpi_device_fix_up_power(adev); } +static void i2c_hid_acpi_enable_wakeup(struct device *dev) +{ + if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) { + device_set_wakeup_capable(dev, true); + device_set_wakeup_enable(dev, false); + } +} + static const struct acpi_device_id i2c_hid_acpi_match[] = { {"ACPI0C50", 0 }, {"PNP0C50", 0 }, @@ -945,6 +959,8 @@ } static inline void i2c_hid_acpi_fix_up_power(struct device *dev) {} + +static inline void i2c_hid_acpi_enable_wakeup(struct device *dev) {} #endif #ifdef CONFIG_OF @@ -1072,6 +1088,8 @@ i2c_hid_acpi_fix_up_power(&client->dev); + i2c_hid_acpi_enable_wakeup(&client->dev); + device_enable_async_suspend(&client->dev); /* Make sure there is something at this address */ --- linux-5.8.0.orig/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c +++ linux-5.8.0/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c @@ -405,6 +405,14 @@ }, .driver_data = (void *)&sipodev_desc }, + { + .ident = "Vero K147", + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VERO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "K147"), + }, + .driver_data = (void *)&sipodev_desc + }, { } /* Terminate list */ }; --- linux-5.8.0.orig/drivers/hid/intel-ish-hid/ipc/hw-ish.h +++ linux-5.8.0/drivers/hid/intel-ish-hid/ipc/hw-ish.h @@ -27,6 +27,7 @@ #define CMP_H_DEVICE_ID 0x06FC #define EHL_Ax_DEVICE_ID 0x4BB3 #define TGL_LP_DEVICE_ID 0xA0FC +#define TGL_H_DEVICE_ID 0x43FC #define REVISION_ID_CHT_A0 0x6 #define REVISION_ID_CHT_Ax_SI 0x0 --- linux-5.8.0.orig/drivers/hid/intel-ish-hid/ipc/pci-ish.c +++ linux-5.8.0/drivers/hid/intel-ish-hid/ipc/pci-ish.c @@ -37,6 +37,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_INTEL, CMP_H_DEVICE_ID)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, EHL_Ax_DEVICE_ID)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, TGL_LP_DEVICE_ID)}, + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, TGL_H_DEVICE_ID)}, {0, } }; MODULE_DEVICE_TABLE(pci, ish_pci_tbl); --- linux-5.8.0.orig/drivers/hid/usbhid/hiddev.c +++ linux-5.8.0/drivers/hid/usbhid/hiddev.c @@ -519,12 +519,16 @@ switch (cmd) { case HIDIOCGUSAGE: + if (uref->usage_index >= field->report_count) + goto inval; uref->value = field->value[uref->usage_index]; if (copy_to_user(user_arg, uref, sizeof(*uref))) goto fault; goto goodreturn; case HIDIOCSUSAGE: + if (uref->usage_index >= field->report_count) + goto inval; field->value[uref->usage_index] = uref->value; goto goodreturn; --- linux-5.8.0.orig/drivers/hid/wacom_sys.c +++ linux-5.8.0/drivers/hid/wacom_sys.c @@ -147,9 +147,9 @@ } if (flush) - wacom_wac_queue_flush(hdev, &wacom_wac->pen_fifo); + wacom_wac_queue_flush(hdev, wacom_wac->pen_fifo); else if (insert) - wacom_wac_queue_insert(hdev, &wacom_wac->pen_fifo, + wacom_wac_queue_insert(hdev, wacom_wac->pen_fifo, raw_data, report_size); return insert && !flush; @@ -1270,6 +1270,38 @@ group); } +static void wacom_devm_kfifo_release(struct device *dev, void *res) +{ + struct kfifo_rec_ptr_2 *devres = res; + + kfifo_free(devres); +} + +static int wacom_devm_kfifo_alloc(struct wacom *wacom) +{ + struct wacom_wac *wacom_wac = &wacom->wacom_wac; + struct kfifo_rec_ptr_2 *pen_fifo; + int error; + + pen_fifo = devres_alloc(wacom_devm_kfifo_release, + sizeof(struct kfifo_rec_ptr_2), + GFP_KERNEL); + + if (!pen_fifo) + return -ENOMEM; + + error = kfifo_alloc(pen_fifo, WACOM_PKGLEN_MAX, GFP_KERNEL); + if (error) { + devres_free(pen_fifo); + return error; + } + + devres_add(&wacom->hdev->dev, pen_fifo); + wacom_wac->pen_fifo = pen_fifo; + + return 0; +} + enum led_brightness wacom_leds_brightness_get(struct wacom_led *led) { struct wacom *wacom = led->wacom; @@ -2724,7 +2756,7 @@ if (features->check_for_hid_type && features->hid_type != hdev->type) return -ENODEV; - error = kfifo_alloc(&wacom_wac->pen_fifo, WACOM_PKGLEN_MAX, GFP_KERNEL); + error = wacom_devm_kfifo_alloc(wacom); if (error) return error; @@ -2786,8 +2818,6 @@ if (wacom->wacom_wac.features.type != REMOTE) wacom_release_resources(wacom); - - kfifo_free(&wacom_wac->pen_fifo); } #ifdef CONFIG_PM --- linux-5.8.0.orig/drivers/hid/wacom_wac.c +++ linux-5.8.0/drivers/hid/wacom_wac.c @@ -2600,7 +2600,12 @@ wacom_wac->is_invalid_bt_frame = !value; return; case HID_DG_CONTACTMAX: - features->touch_max = value; + if (!features->touch_max) { + features->touch_max = value; + } else { + hid_warn(hdev, "%s: ignoring attempt to overwrite non-zero touch_max " + "%d -> %d\n", __func__, features->touch_max, value); + } return; } @@ -2773,7 +2778,9 @@ if (report->type != HID_INPUT_REPORT) return -1; - if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input) + if (WACOM_PAD_FIELD(field)) + return 0; + else if (WACOM_PEN_FIELD(field) && wacom->wacom_wac.pen_input) wacom_wac_pen_report(hdev, report); else if (WACOM_FINGER_FIELD(field) && wacom->wacom_wac.touch_input) wacom_wac_finger_report(hdev, report); --- linux-5.8.0.orig/drivers/hid/wacom_wac.h +++ linux-5.8.0/drivers/hid/wacom_wac.h @@ -342,7 +342,7 @@ struct input_dev *pen_input; struct input_dev *touch_input; struct input_dev *pad_input; - struct kfifo_rec_ptr_2 pen_fifo; + struct kfifo_rec_ptr_2 *pen_fifo; int pid; int num_contacts_left; u8 bt_features; --- linux-5.8.0.orig/drivers/hsi/controllers/omap_ssi_core.c +++ linux-5.8.0/drivers/hsi/controllers/omap_ssi_core.c @@ -355,7 +355,7 @@ err = ida_simple_get(&platform_omap_ssi_ida, 0, 0, GFP_KERNEL); if (err < 0) - goto out_err; + return err; ssi->id = err; ssi->owner = THIS_MODULE; @@ -424,7 +424,7 @@ struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); int err; - err = pm_runtime_get_sync(ssi->device.parent); + err = pm_runtime_resume_and_get(ssi->device.parent); if (err < 0) { dev_err(&ssi->device, "runtime PM failed %d\n", err); return err; --- linux-5.8.0.orig/drivers/hv/channel_mgmt.c +++ linux-5.8.0/drivers/hv/channel_mgmt.c @@ -750,7 +750,7 @@ void *page_addr; struct hv_message *msg; struct vmbus_channel_message_header *hdr; - u32 message_type; + u32 message_type, i; /* * CHANNELMSG_UNLOAD_RESPONSE is always delivered to the CPU which was @@ -760,8 +760,11 @@ * functional and vmbus_unload_response() will complete * vmbus_connection.unload_event. If not, the last thing we can do is * read message pages for all CPUs directly. + * + * Wait no more than 10 seconds so that the panic path can't get + * hung forever in case the response message isn't seen. */ - while (1) { + for (i = 0; i < 1000; i++) { if (completion_done(&vmbus_connection.unload_event)) break; @@ -1118,8 +1121,7 @@ vmbus_device_unregister(channel->device_obj); put_device(dev); } - } - if (channel->primary_channel != NULL) { + } else if (channel->primary_channel != NULL) { /* * Sub-channel is being rescinded. Following is the channel * close sequence when initiated from the driveri (refer to --- linux-5.8.0.orig/drivers/hv/hv.c +++ linux-5.8.0/drivers/hv/hv.c @@ -245,9 +245,13 @@ /* * Hyper-V does not provide a way to change the connect CPU once - * it is set; we must prevent the connect CPU from going offline. + * it is set; we must prevent the connect CPU from going offline + * while the VM is running normally. But in the panic or kexec() + * path where the vmbus is already disconnected, the CPU must be + * allowed to shut down. */ - if (cpu == VMBUS_CONNECT_CPU) + if (cpu == VMBUS_CONNECT_CPU && + vmbus_connection.conn_state == CONNECTED) return -EBUSY; /* --- linux-5.8.0.orig/drivers/hv/hv_balloon.c +++ linux-5.8.0/drivers/hv/hv_balloon.c @@ -1275,7 +1275,7 @@ /* Refuse to balloon below the floor. */ if (avail_pages < num_pages || avail_pages - num_pages < floor) { - pr_warn("Balloon request will be partially fulfilled. %s\n", + pr_info("Balloon request will be partially fulfilled. %s\n", avail_pages < num_pages ? "Not enough memory." : "Balloon floor reached."); --- linux-5.8.0.orig/drivers/hv/hv_util.c +++ linux-5.8.0/drivers/hv/hv_util.c @@ -282,26 +282,52 @@ spinlock_t lock; } host_ts; -static struct timespec64 hv_get_adj_host_time(void) +static inline u64 reftime_to_ns(u64 reftime) { - struct timespec64 ts; - u64 newtime, reftime; + return (reftime - WLTIMEDELTA) * 100; +} + +/* + * Hard coded threshold for host timesync delay: 600 seconds + */ +static const u64 HOST_TIMESYNC_DELAY_THRESH = 600 * (u64)NSEC_PER_SEC; + +static int hv_get_adj_host_time(struct timespec64 *ts) +{ + u64 newtime, reftime, timediff_adj; unsigned long flags; + int ret = 0; spin_lock_irqsave(&host_ts.lock, flags); reftime = hv_read_reference_counter(); - newtime = host_ts.host_time + (reftime - host_ts.ref_time); - ts = ns_to_timespec64((newtime - WLTIMEDELTA) * 100); + + /* + * We need to let the caller know that last update from host + * is older than the max allowable threshold. clock_gettime() + * and PTP ioctl do not have a documented error that we could + * return for this specific case. Use ESTALE to report this. + */ + timediff_adj = reftime - host_ts.ref_time; + if (timediff_adj * 100 > HOST_TIMESYNC_DELAY_THRESH) { + pr_warn_once("TIMESYNC IC: Stale time stamp, %llu nsecs old\n", + (timediff_adj * 100)); + ret = -ESTALE; + } + + newtime = host_ts.host_time + timediff_adj; + *ts = ns_to_timespec64(reftime_to_ns(newtime)); spin_unlock_irqrestore(&host_ts.lock, flags); - return ts; + return ret; } static void hv_set_host_time(struct work_struct *work) { - struct timespec64 ts = hv_get_adj_host_time(); - do_settimeofday64(&ts); + struct timespec64 ts; + + if (!hv_get_adj_host_time(&ts)) + do_settimeofday64(&ts); } /* @@ -361,10 +387,23 @@ struct ictimesync_ref_data *refdata; u8 *time_txf_buf = util_timesynch.recv_buffer; - vmbus_recvpacket(channel, time_txf_buf, - HV_HYP_PAGE_SIZE, &recvlen, &requestid); + /* + * Drain the ring buffer and use the last packet to update + * host_ts + */ + while (1) { + int ret = vmbus_recvpacket(channel, time_txf_buf, + HV_HYP_PAGE_SIZE, &recvlen, + &requestid); + if (ret) { + pr_warn_once("TimeSync IC pkt recv failed (Err: %d)\n", + ret); + break; + } + + if (!recvlen) + break; - if (recvlen > 0) { icmsghdrp = (struct icmsg_hdr *)&time_txf_buf[ sizeof(struct vmbuspipe_hdr)]; @@ -622,9 +661,7 @@ static int hv_ptp_gettime(struct ptp_clock_info *info, struct timespec64 *ts) { - *ts = hv_get_adj_host_time(); - - return 0; + return hv_get_adj_host_time(ts); } static struct ptp_clock_info ptp_hyperv_info = { --- linux-5.8.0.orig/drivers/hv/vmbus_drv.c +++ linux-5.8.0/drivers/hv/vmbus_drv.c @@ -2383,7 +2383,10 @@ if (atomic_read(&vmbus_connection.nr_chan_close_on_suspend) > 0) wait_for_completion(&vmbus_connection.ready_for_suspend_event); - WARN_ON(atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) != 0); + if (atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) != 0) { + pr_err("Can not suspend due to a previous failed resuming\n"); + return -EBUSY; + } mutex_lock(&vmbus_connection.channel_mutex); @@ -2459,7 +2462,9 @@ vmbus_request_offers(); - wait_for_completion(&vmbus_connection.ready_for_resume_event); + if (wait_for_completion_timeout( + &vmbus_connection.ready_for_resume_event, 10 * HZ) == 0) + pr_err("Some vmbus device is missing after suspending?\n"); /* Reset the event for the next suspend. */ reinit_completion(&vmbus_connection.ready_for_suspend_event); --- linux-5.8.0.orig/drivers/hwmon/amd_energy.c +++ linux-5.8.0/drivers/hwmon/amd_energy.c @@ -209,7 +209,7 @@ enum hwmon_sensor_types type, u32 attr, int channel) { - return 0444; + return 0440; } static int energy_accumulator(void *p) @@ -265,7 +265,7 @@ */ cpus = num_present_cpus() / num_siblings; - s_config = devm_kcalloc(dev, cpus + sockets, + s_config = devm_kcalloc(dev, cpus + sockets + 1, sizeof(u32), GFP_KERNEL); if (!s_config) return -ENOMEM; @@ -293,6 +293,7 @@ "Esocket%u", (i - cpus)); } + s_config[i] = 0; return 0; } --- linux-5.8.0.orig/drivers/hwmon/applesmc.c +++ linux-5.8.0/drivers/hwmon/applesmc.c @@ -32,6 +32,7 @@ #include #include #include +#include /* data port used by Apple SMC */ #define APPLESMC_DATA_PORT 0x300 @@ -42,10 +43,13 @@ #define APPLESMC_MAX_DATA_LENGTH 32 -/* wait up to 128 ms for a status change. */ -#define APPLESMC_MIN_WAIT 0x0010 -#define APPLESMC_RETRY_WAIT 0x0100 -#define APPLESMC_MAX_WAIT 0x20000 +/* Apple SMC status bits */ +#define SMC_STATUS_AWAITING_DATA BIT(0) /* SMC has data waiting to be read */ +#define SMC_STATUS_IB_CLOSED BIT(1) /* Will ignore any input */ +#define SMC_STATUS_BUSY BIT(2) /* Command in progress */ + +/* Initial wait is 8us */ +#define APPLESMC_MIN_WAIT 0x0008 #define APPLESMC_READ_CMD 0x10 #define APPLESMC_WRITE_CMD 0x11 @@ -151,65 +155,84 @@ static struct workqueue_struct *applesmc_led_wq; /* - * wait_read - Wait for a byte to appear on SMC port. Callers must - * hold applesmc_lock. + * Wait for specific status bits with a mask on the SMC. + * Used before all transactions. + * This does 10 fast loops of 8us then exponentially backs off for a + * minimum total wait of 262ms. Depending on usleep_range this could + * run out past 500ms. */ -static int wait_read(void) + +static int wait_status(u8 val, u8 mask) { - unsigned long end = jiffies + (APPLESMC_MAX_WAIT * HZ) / USEC_PER_SEC; u8 status; int us; + int i; - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - usleep_range(us, us * 16); + us = APPLESMC_MIN_WAIT; + for (i = 0; i < 24 ; i++) { status = inb(APPLESMC_CMD_PORT); - /* read: wait for smc to settle */ - if (status & 0x01) + if ((status & mask) == val) return 0; - /* timeout: give up */ - if (time_after(jiffies, end)) - break; + usleep_range(us, us * 2); + if (i > 9) + us <<= 1; } - - pr_warn("wait_read() fail: 0x%02x\n", status); return -EIO; } -/* - * send_byte - Write to SMC port, retrying when necessary. Callers - * must hold applesmc_lock. - */ +/* send_byte - Write to SMC data port. Callers must hold applesmc_lock. */ + static int send_byte(u8 cmd, u16 port) { - u8 status; - int us; - unsigned long end = jiffies + (APPLESMC_MAX_WAIT * HZ) / USEC_PER_SEC; + int status; - outb(cmd, port); - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - usleep_range(us, us * 16); - status = inb(APPLESMC_CMD_PORT); - /* write: wait for smc to settle */ - if (status & 0x02) - continue; - /* ready: cmd accepted, return */ - if (status & 0x04) - return 0; - /* timeout: give up */ - if (time_after(jiffies, end)) - break; - /* busy: long wait and resend */ - udelay(APPLESMC_RETRY_WAIT); - outb(cmd, port); - } + status = wait_status(0, SMC_STATUS_IB_CLOSED); + if (status) + return status; + /* + * This needs to be a separate read looking for bit 0x04 + * after bit 0x02 falls. If consolidated with the wait above + * this extra read may not happen if status returns both + * simultaneously and this would appear to be required. + */ + status = wait_status(SMC_STATUS_BUSY, SMC_STATUS_BUSY); + if (status) + return status; - pr_warn("send_byte(0x%02x, 0x%04x) fail: 0x%02x\n", cmd, port, status); - return -EIO; + outb(cmd, port); + return 0; } +/* send_command - Write a command to the SMC. Callers must hold applesmc_lock. */ + static int send_command(u8 cmd) { - return send_byte(cmd, APPLESMC_CMD_PORT); + int ret; + + ret = wait_status(0, SMC_STATUS_IB_CLOSED); + if (ret) + return ret; + outb(cmd, APPLESMC_CMD_PORT); + return 0; +} + +/* + * Based on logic from the Apple driver. This is issued before any interaction + * If busy is stuck high, issue a read command to reset the SMC state machine. + * If busy is stuck high after the command then the SMC is jammed. + */ + +static int smc_sane(void) +{ + int ret; + + ret = wait_status(0, SMC_STATUS_BUSY); + if (!ret) + return ret; + ret = send_command(APPLESMC_READ_CMD); + if (ret) + return ret; + return wait_status(0, SMC_STATUS_BUSY); } static int send_argument(const char *key) @@ -226,6 +249,11 @@ { u8 status, data = 0; int i; + int ret; + + ret = smc_sane(); + if (ret) + return ret; if (send_command(cmd) || send_argument(key)) { pr_warn("%.4s: read arg fail\n", key); @@ -239,7 +267,8 @@ } for (i = 0; i < len; i++) { - if (wait_read()) { + if (wait_status(SMC_STATUS_AWAITING_DATA | SMC_STATUS_BUSY, + SMC_STATUS_AWAITING_DATA | SMC_STATUS_BUSY)) { pr_warn("%.4s: read data[%d] fail\n", key, i); return -EIO; } @@ -250,19 +279,24 @@ for (i = 0; i < 16; i++) { udelay(APPLESMC_MIN_WAIT); status = inb(APPLESMC_CMD_PORT); - if (!(status & 0x01)) + if (!(status & SMC_STATUS_AWAITING_DATA)) break; data = inb(APPLESMC_DATA_PORT); } if (i) pr_warn("flushed %d bytes, last value is: %d\n", i, data); - return 0; + return wait_status(0, SMC_STATUS_BUSY); } static int write_smc(u8 cmd, const char *key, const u8 *buffer, u8 len) { int i; + int ret; + + ret = smc_sane(); + if (ret) + return ret; if (send_command(cmd) || send_argument(key)) { pr_warn("%s: write arg fail\n", key); @@ -281,7 +315,7 @@ } } - return 0; + return wait_status(0, SMC_STATUS_BUSY); } static int read_register_count(unsigned int *count) @@ -753,15 +787,18 @@ } ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, data_length); + if (ret) + goto out; /* newer macbooks report a single 10-bit bigendian value */ if (data_length == 10) { left = be16_to_cpu(*(__be16 *)(buffer + 6)) >> 2; goto out; } left = buffer[2]; + + ret = applesmc_read_key(LIGHT_SENSOR_RIGHT_KEY, buffer, data_length); if (ret) goto out; - ret = applesmc_read_key(LIGHT_SENSOR_RIGHT_KEY, buffer, data_length); right = buffer[2]; out: @@ -810,12 +847,11 @@ to_index(attr)); ret = applesmc_read_key(newkey, buffer, 2); - speed = ((buffer[0] << 8 | buffer[1]) >> 2); - if (ret) return ret; - else - return snprintf(sysfsbuf, PAGE_SIZE, "%u\n", speed); + + speed = ((buffer[0] << 8 | buffer[1]) >> 2); + return snprintf(sysfsbuf, PAGE_SIZE, "%u\n", speed); } static ssize_t applesmc_store_fan_speed(struct device *dev, @@ -851,12 +887,11 @@ u8 buffer[2]; ret = applesmc_read_key(FANS_MANUAL, buffer, 2); - manual = ((buffer[0] << 8 | buffer[1]) >> to_index(attr)) & 0x01; - if (ret) return ret; - else - return snprintf(sysfsbuf, PAGE_SIZE, "%d\n", manual); + + manual = ((buffer[0] << 8 | buffer[1]) >> to_index(attr)) & 0x01; + return snprintf(sysfsbuf, PAGE_SIZE, "%d\n", manual); } static ssize_t applesmc_store_fan_manual(struct device *dev, @@ -872,10 +907,11 @@ return -EINVAL; ret = applesmc_read_key(FANS_MANUAL, buffer, 2); - val = (buffer[0] << 8 | buffer[1]); if (ret) goto out; + val = (buffer[0] << 8 | buffer[1]); + if (input) val = val | (0x01 << to_index(attr)); else @@ -951,13 +987,12 @@ u32 count; ret = applesmc_read_key(KEY_COUNT_KEY, buffer, 4); - count = ((u32)buffer[0]<<24) + ((u32)buffer[1]<<16) + - ((u32)buffer[2]<<8) + buffer[3]; - if (ret) return ret; - else - return snprintf(sysfsbuf, PAGE_SIZE, "%d\n", count); + + count = ((u32)buffer[0]<<24) + ((u32)buffer[1]<<16) + + ((u32)buffer[2]<<8) + buffer[3]; + return snprintf(sysfsbuf, PAGE_SIZE, "%d\n", count); } static ssize_t applesmc_key_at_index_read_show(struct device *dev, --- linux-5.8.0.orig/drivers/hwmon/bt1-pvt.c +++ linux-5.8.0/drivers/hwmon/bt1-pvt.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -476,6 +477,7 @@ long *val) { struct pvt_cache *cache = &pvt->cache[type]; + unsigned long timeout; u32 data; int ret; @@ -499,7 +501,14 @@ pvt_update(pvt->regs + PVT_INTR_MASK, PVT_INTR_DVALID, 0); pvt_update(pvt->regs + PVT_CTRL, PVT_CTRL_EN, PVT_CTRL_EN); - wait_for_completion(&cache->conversion); + /* + * Wait with timeout since in case if the sensor is suddenly powered + * down the request won't be completed and the caller will hang up on + * this procedure until the power is back up again. Multiply the + * timeout by the factor of two to prevent a false timeout. + */ + timeout = 2 * usecs_to_jiffies(ktime_to_us(pvt->timeout)); + ret = wait_for_completion_timeout(&cache->conversion, timeout); pvt_update(pvt->regs + PVT_CTRL, PVT_CTRL_EN, 0); pvt_update(pvt->regs + PVT_INTR_MASK, PVT_INTR_DVALID, @@ -509,6 +518,9 @@ mutex_unlock(&pvt->iface_mtx); + if (!ret) + return -ETIMEDOUT; + if (type == PVT_TEMP) *val = pvt_calc_poly(&poly_N_to_temp, data); else @@ -654,44 +666,16 @@ static int pvt_read_timeout(struct pvt_hwmon *pvt, long *val) { - unsigned long rate; - ktime_t kt; - u32 data; - - rate = clk_get_rate(pvt->clks[PVT_CLOCK_REF].clk); - if (!rate) - return -ENODEV; - - /* - * Don't bother with mutex here, since we just read data from MMIO. - * We also have to scale the ticks timeout up to compensate the - * ms-ns-data translations. - */ - data = readl(pvt->regs + PVT_TTIMEOUT) + 1; + int ret; - /* - * Calculate ref-clock based delay (Ttotal) between two consecutive - * data samples of the same sensor. So we first must calculate the - * delay introduced by the internal ref-clock timer (Tref * Fclk). - * Then add the constant timeout cuased by each conversion latency - * (Tmin). The basic formulae for each conversion is following: - * Ttotal = Tref * Fclk + Tmin - * Note if alarms are enabled the sensors are polled one after - * another, so in order to have the delay being applicable for each - * sensor the requested value must be equally redistirbuted. - */ -#if defined(CONFIG_SENSORS_BT1_PVT_ALARMS) - kt = ktime_set(PVT_SENSORS_NUM * (u64)data, 0); - kt = ktime_divns(kt, rate); - kt = ktime_add_ns(kt, PVT_SENSORS_NUM * PVT_TOUT_MIN); -#else - kt = ktime_set(data, 0); - kt = ktime_divns(kt, rate); - kt = ktime_add_ns(kt, PVT_TOUT_MIN); -#endif + ret = mutex_lock_interruptible(&pvt->iface_mtx); + if (ret) + return ret; /* Return the result in msec as hwmon sysfs interface requires. */ - *val = ktime_to_ms(kt); + *val = ktime_to_ms(pvt->timeout); + + mutex_unlock(&pvt->iface_mtx); return 0; } @@ -699,7 +683,7 @@ static int pvt_write_timeout(struct pvt_hwmon *pvt, long val) { unsigned long rate; - ktime_t kt; + ktime_t kt, cache; u32 data; int ret; @@ -712,7 +696,7 @@ * between all available sensors to have the requested delay * applicable to each individual sensor. */ - kt = ms_to_ktime(val); + cache = kt = ms_to_ktime(val); #if defined(CONFIG_SENSORS_BT1_PVT_ALARMS) kt = ktime_divns(kt, PVT_SENSORS_NUM); #endif @@ -741,6 +725,7 @@ return ret; pvt_set_tout(pvt, data); + pvt->timeout = cache; mutex_unlock(&pvt->iface_mtx); @@ -982,10 +967,52 @@ return 0; } -static void pvt_init_iface(struct pvt_hwmon *pvt) +static int pvt_check_pwr(struct pvt_hwmon *pvt) { + unsigned long tout; + int ret = 0; + u32 data; + + /* + * Test out the sensor conversion functionality. If it is not done on + * time then the domain must have been unpowered and we won't be able + * to use the device later in this driver. + * Note If the power source is lost during the normal driver work the + * data read procedure will either return -ETIMEDOUT (for the + * alarm-less driver configuration) or just stop the repeated + * conversion. In the later case alas we won't be able to detect the + * problem. + */ + pvt_update(pvt->regs + PVT_INTR_MASK, PVT_INTR_ALL, PVT_INTR_ALL); + pvt_update(pvt->regs + PVT_CTRL, PVT_CTRL_EN, PVT_CTRL_EN); + pvt_set_tout(pvt, 0); + readl(pvt->regs + PVT_DATA); + + tout = PVT_TOUT_MIN / NSEC_PER_USEC; + usleep_range(tout, 2 * tout); + + data = readl(pvt->regs + PVT_DATA); + if (!(data & PVT_DATA_VALID)) { + ret = -ENODEV; + dev_err(pvt->dev, "Sensor is powered down\n"); + } + + pvt_update(pvt->regs + PVT_CTRL, PVT_CTRL_EN, 0); + + return ret; +} + +static int pvt_init_iface(struct pvt_hwmon *pvt) +{ + unsigned long rate; u32 trim, temp; + rate = clk_get_rate(pvt->clks[PVT_CLOCK_REF].clk); + if (!rate) { + dev_err(pvt->dev, "Invalid reference clock rate\n"); + return -ENODEV; + } + /* * Make sure all interrupts and controller are disabled so not to * accidentally have ISR executed before the driver data is fully @@ -1000,12 +1027,37 @@ pvt_set_mode(pvt, pvt_info[pvt->sensor].mode); pvt_set_tout(pvt, PVT_TOUT_DEF); + /* + * Preserve the current ref-clock based delay (Ttotal) between the + * sensors data samples in the driver data so not to recalculate it + * each time on the data requests and timeout reads. It consists of the + * delay introduced by the internal ref-clock timer (N / Fclk) and the + * constant timeout caused by each conversion latency (Tmin): + * Ttotal = N / Fclk + Tmin + * If alarms are enabled the sensors are polled one after another and + * in order to get the next measurement of a particular sensor the + * caller will have to wait for at most until all the others are + * polled. In that case the formulae will look a bit different: + * Ttotal = 5 * (N / Fclk + Tmin) + */ +#if defined(CONFIG_SENSORS_BT1_PVT_ALARMS) + pvt->timeout = ktime_set(PVT_SENSORS_NUM * PVT_TOUT_DEF, 0); + pvt->timeout = ktime_divns(pvt->timeout, rate); + pvt->timeout = ktime_add_ns(pvt->timeout, PVT_SENSORS_NUM * PVT_TOUT_MIN); +#else + pvt->timeout = ktime_set(PVT_TOUT_DEF, 0); + pvt->timeout = ktime_divns(pvt->timeout, rate); + pvt->timeout = ktime_add_ns(pvt->timeout, PVT_TOUT_MIN); +#endif + trim = PVT_TRIM_DEF; if (!of_property_read_u32(pvt->dev->of_node, "baikal,pvt-temp-offset-millicelsius", &temp)) trim = pvt_calc_trim(temp); pvt_set_trim(pvt, trim); + + return 0; } static int pvt_request_irq(struct pvt_hwmon *pvt) @@ -1109,7 +1161,13 @@ if (ret) return ret; - pvt_init_iface(pvt); + ret = pvt_check_pwr(pvt); + if (ret) + return ret; + + ret = pvt_init_iface(pvt); + if (ret) + return ret; ret = pvt_request_irq(pvt); if (ret) --- linux-5.8.0.orig/drivers/hwmon/bt1-pvt.h +++ linux-5.8.0/drivers/hwmon/bt1-pvt.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -201,6 +202,7 @@ * if alarms are disabled). * @sensor: current PVT sensor the data conversion is being performed for. * @cache: data cache descriptor. + * @timeout: conversion timeout cache. */ struct pvt_hwmon { struct device *dev; @@ -214,6 +216,7 @@ struct mutex iface_mtx; enum pvt_sensor_type sensor; struct pvt_cache cache[PVT_SENSORS_NUM]; + ktime_t timeout; }; /* --- linux-5.8.0.orig/drivers/hwmon/dell-smm-hwmon.c +++ linux-5.8.0/drivers/hwmon/dell-smm-hwmon.c @@ -1159,6 +1159,13 @@ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS13 9333"), }, }, + { + .ident = "Dell XPS 15 L502X", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Dell System XPS L502X"), + }, + }, { } }; --- linux-5.8.0.orig/drivers/hwmon/gsc-hwmon.c +++ linux-5.8.0/drivers/hwmon/gsc-hwmon.c @@ -172,6 +172,7 @@ case mode_temperature: if (tmp > 0x8000) tmp -= 0xffff; + tmp *= 100; /* convert to millidegrees celsius */ break; case mode_voltage_raw: tmp = clamp_val(tmp, 0, BIT(GSC_HWMON_RESOLUTION)); --- linux-5.8.0.orig/drivers/hwmon/ina3221.c +++ linux-5.8.0/drivers/hwmon/ina3221.c @@ -489,7 +489,7 @@ /* For enabling routine, increase refcount and resume() at first */ if (enable) { - ret = pm_runtime_get_sync(ina->pm_dev); + ret = pm_runtime_resume_and_get(ina->pm_dev); if (ret < 0) { dev_err(dev, "Failed to get PM runtime\n"); return ret; --- linux-5.8.0.orig/drivers/hwmon/nct7904.c +++ linux-5.8.0/drivers/hwmon/nct7904.c @@ -231,7 +231,7 @@ if (ret < 0) return ret; cnt = ((ret & 0xff00) >> 3) | (ret & 0x1f); - if (cnt == 0x1fff) + if (cnt == 0 || cnt == 0x1fff) rpm = 0; else rpm = 1350000 / cnt; @@ -243,7 +243,7 @@ if (ret < 0) return ret; cnt = ((ret & 0xff00) >> 3) | (ret & 0x1f); - if (cnt == 0x1fff) + if (cnt == 0 || cnt == 0x1fff) rpm = 0; else rpm = 1350000 / cnt; --- linux-5.8.0.orig/drivers/hwmon/pmbus/isl68137.c +++ linux-5.8.0/drivers/hwmon/pmbus/isl68137.c @@ -67,6 +67,7 @@ raa_dmpvr1_2rail, raa_dmpvr2_1rail, raa_dmpvr2_2rail, + raa_dmpvr2_2rail_nontc, raa_dmpvr2_3rail, raa_dmpvr2_hv, }; @@ -241,6 +242,10 @@ info->pages = 1; info->read_word_data = raa_dmpvr2_read_word_data; break; + case raa_dmpvr2_2rail_nontc: + info->func[0] &= ~PMBUS_HAVE_TEMP; + info->func[1] &= ~PMBUS_HAVE_TEMP; + fallthrough; case raa_dmpvr2_2rail: info->pages = 2; info->read_word_data = raa_dmpvr2_read_word_data; @@ -304,7 +309,7 @@ {"raa228000", raa_dmpvr2_hv}, {"raa228004", raa_dmpvr2_hv}, {"raa228006", raa_dmpvr2_hv}, - {"raa228228", raa_dmpvr2_2rail}, + {"raa228228", raa_dmpvr2_2rail_nontc}, {"raa229001", raa_dmpvr2_2rail}, {"raa229004", raa_dmpvr2_2rail}, {} --- linux-5.8.0.orig/drivers/hwmon/pmbus/max34440.c +++ linux-5.8.0/drivers/hwmon/pmbus/max34440.c @@ -31,6 +31,13 @@ #define MAX34440_STATUS_OT_FAULT BIT(5) #define MAX34440_STATUS_OT_WARN BIT(6) +/* + * The whole max344* family have IOUT_OC_WARN_LIMIT and IOUT_OC_FAULT_LIMIT + * swapped from the standard pmbus spec addresses. + */ +#define MAX34440_IOUT_OC_WARN_LIMIT 0x46 +#define MAX34440_IOUT_OC_FAULT_LIMIT 0x4A + #define MAX34451_MFR_CHANNEL_CONFIG 0xe4 #define MAX34451_MFR_CHANNEL_CONFIG_SEL_MASK 0x3f @@ -49,6 +56,14 @@ const struct max34440_data *data = to_max34440_data(info); switch (reg) { + case PMBUS_IOUT_OC_FAULT_LIMIT: + ret = pmbus_read_word_data(client, page, phase, + MAX34440_IOUT_OC_FAULT_LIMIT); + break; + case PMBUS_IOUT_OC_WARN_LIMIT: + ret = pmbus_read_word_data(client, page, phase, + MAX34440_IOUT_OC_WARN_LIMIT); + break; case PMBUS_VIRT_READ_VOUT_MIN: ret = pmbus_read_word_data(client, page, phase, MAX34440_MFR_VOUT_MIN); @@ -115,6 +130,14 @@ int ret; switch (reg) { + case PMBUS_IOUT_OC_FAULT_LIMIT: + ret = pmbus_write_word_data(client, page, MAX34440_IOUT_OC_FAULT_LIMIT, + word); + break; + case PMBUS_IOUT_OC_WARN_LIMIT: + ret = pmbus_write_word_data(client, page, MAX34440_IOUT_OC_WARN_LIMIT, + word); + break; case PMBUS_VIRT_RESET_POUT_HISTORY: ret = pmbus_write_word_data(client, page, MAX34446_MFR_POUT_PEAK, 0); @@ -388,7 +411,6 @@ .func[18] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[19] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[20] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, }, @@ -419,7 +441,6 @@ .func[15] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[16] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[17] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, }, @@ -455,7 +476,6 @@ .func[19] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[20] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[21] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, }, --- linux-5.8.0.orig/drivers/hwmon/pwm-fan.c +++ linux-5.8.0/drivers/hwmon/pwm-fan.c @@ -54,16 +54,18 @@ static void sample_timer(struct timer_list *t) { struct pwm_fan_ctx *ctx = from_timer(ctx, t, rpm_timer); + unsigned int delta = ktime_ms_delta(ktime_get(), ctx->sample_start); int pulses; - u64 tmp; - pulses = atomic_read(&ctx->pulses); - atomic_sub(pulses, &ctx->pulses); - tmp = (u64)pulses * ktime_ms_delta(ktime_get(), ctx->sample_start) * 60; - do_div(tmp, ctx->pulses_per_revolution * 1000); - ctx->rpm = tmp; + if (delta) { + pulses = atomic_read(&ctx->pulses); + atomic_sub(pulses, &ctx->pulses); + ctx->rpm = (unsigned int)(pulses * 1000 * 60) / + (ctx->pulses_per_revolution * delta); + + ctx->sample_start = ktime_get(); + } - ctx->sample_start = ktime_get(); mod_timer(&ctx->rpm_timer, jiffies + HZ); } @@ -328,8 +330,18 @@ ctx->pwm_value = MAX_PWM; - /* Set duty cycle to maximum allowed and enable PWM output */ pwm_init_state(ctx->pwm, &state); + /* + * __set_pwm assumes that MAX_PWM * (period - 1) fits into an unsigned + * long. Check this here to prevent the fan running at a too low + * frequency. + */ + if (state.period > ULONG_MAX / MAX_PWM + 1) { + dev_err(dev, "Configured period too big\n"); + return -EINVAL; + } + + /* Set duty cycle to maximum allowed and enable PWM output */ state.duty_cycle = ctx->pwm->args.period - 1; state.enabled = true; --- linux-5.8.0.orig/drivers/hwmon/w83627ehf.c +++ linux-5.8.0/drivers/hwmon/w83627ehf.c @@ -1951,8 +1951,12 @@ data, &w83627ehf_chip_info, w83627ehf_groups); + if (IS_ERR(hwmon_dev)) { + err = PTR_ERR(hwmon_dev); + goto exit_release; + } - return PTR_ERR_OR_ZERO(hwmon_dev); + return 0; exit_release: release_region(res->start, IOREGION_LENGTH); --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-cti-sysfs.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-cti-sysfs.c @@ -1065,6 +1065,13 @@ } eattr->var = con; con->con_attrs[attr_idx] = &eattr->attr.attr; + /* + * Initialize the dynamically allocated attribute + * to avoid LOCKDEP splat. See include/linux/sysfs.h + * for more details. + */ + sysfs_attr_init(con->con_attrs[attr_idx]); + return 0; } --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-cti.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-cti.c @@ -86,22 +86,16 @@ CS_LOCK(drvdata->base); } -static void cti_enable_hw_smp_call(void *info) -{ - struct cti_drvdata *drvdata = info; - - cti_write_all_hw_regs(drvdata); -} - /* write regs to hardware and enable */ static int cti_enable_hw(struct cti_drvdata *drvdata) { struct cti_config *config = &drvdata->config; struct device *dev = &drvdata->csdev->dev; + unsigned long flags; int rc = 0; pm_runtime_get_sync(dev->parent); - spin_lock(&drvdata->spinlock); + spin_lock_irqsave(&drvdata->spinlock, flags); /* no need to do anything if enabled or unpowered*/ if (config->hw_enabled || !config->hw_powered) @@ -112,19 +106,11 @@ if (rc) goto cti_err_not_enabled; - if (drvdata->ctidev.cpu >= 0) { - rc = smp_call_function_single(drvdata->ctidev.cpu, - cti_enable_hw_smp_call, - drvdata, 1); - if (rc) - goto cti_err_not_enabled; - } else { - cti_write_all_hw_regs(drvdata); - } + cti_write_all_hw_regs(drvdata); config->hw_enabled = true; atomic_inc(&drvdata->config.enable_req_count); - spin_unlock(&drvdata->spinlock); + spin_unlock_irqrestore(&drvdata->spinlock, flags); return rc; cti_state_unchanged: @@ -132,7 +118,7 @@ /* cannot enable due to error */ cti_err_not_enabled: - spin_unlock(&drvdata->spinlock); + spin_unlock_irqrestore(&drvdata->spinlock, flags); pm_runtime_put(dev->parent); return rc; } @@ -141,9 +127,7 @@ static void cti_cpuhp_enable_hw(struct cti_drvdata *drvdata) { struct cti_config *config = &drvdata->config; - struct device *dev = &drvdata->csdev->dev; - pm_runtime_get_sync(dev->parent); spin_lock(&drvdata->spinlock); config->hw_powered = true; @@ -163,7 +147,6 @@ /* did not re-enable due to no claim / no request */ cti_hp_not_enabled: spin_unlock(&drvdata->spinlock); - pm_runtime_put(dev->parent); } /* disable hardware */ @@ -511,12 +494,15 @@ return !link_err; } -static void cti_remove_sysfs_link(struct cti_trig_con *tc) +static void cti_remove_sysfs_link(struct cti_drvdata *drvdata, + struct cti_trig_con *tc) { struct coresight_sysfs_link link_info; + link_info.orig = drvdata->csdev; link_info.orig_name = tc->con_dev_name; link_info.target = tc->con_dev; + link_info.target_name = dev_name(&drvdata->csdev->dev); coresight_remove_sysfs_link(&link_info); } @@ -606,8 +592,8 @@ ctidrv = csdev_to_cti_drvdata(csdev->ect_dev); ctidev = &ctidrv->ctidev; list_for_each_entry(tc, &ctidev->trig_cons, node) { - if (tc->con_dev == csdev->ect_dev) { - cti_remove_sysfs_link(tc); + if (tc->con_dev == csdev) { + cti_remove_sysfs_link(ctidrv, tc); tc->con_dev = NULL; break; } @@ -651,7 +637,7 @@ if (tc->con_dev) { coresight_set_assoc_ectdev_mutex(tc->con_dev, NULL); - cti_remove_sysfs_link(tc); + cti_remove_sysfs_link(drvdata, tc); tc->con_dev = NULL; } } @@ -742,7 +728,8 @@ spin_lock(&drvdata->spinlock); drvdata->config.hw_powered = false; - coresight_disclaim_device(drvdata->base); + if (drvdata->config.hw_enabled) + coresight_disclaim_device(drvdata->base); spin_unlock(&drvdata->spinlock); return 0; } --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-etb10.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-etb10.c @@ -176,6 +176,7 @@ unsigned long flags; struct etb_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); struct perf_output_handle *handle = data; + struct cs_buffers *buf = etm_perf_sink_config(handle); spin_lock_irqsave(&drvdata->spinlock, flags); @@ -186,7 +187,7 @@ } /* Get a handle on the pid of the process to monitor */ - pid = task_pid_nr(handle->event->owner); + pid = buf->pid; if (drvdata->pid != -1 && drvdata->pid != pid) { ret = -EBUSY; @@ -383,6 +384,7 @@ if (!buf) return NULL; + buf->pid = task_pid_nr(event->owner); buf->snapshot = overwrite; buf->nr_pages = nr_pages; buf->data_pages = pages; --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-etm-perf.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-etm-perf.c @@ -126,10 +126,10 @@ cpumask_t *mask = &event_data->mask; struct coresight_device *sink; - if (WARN_ON(cpumask_empty(mask))) + if (!event_data->snk_config) return; - if (!event_data->snk_config) + if (WARN_ON(cpumask_empty(mask))) return; cpu = cpumask_first(mask); @@ -210,7 +210,7 @@ u32 id; int cpu = event->cpu; cpumask_t *mask; - struct coresight_device *sink; + struct coresight_device *sink = NULL; struct etm_event_data *event_data = NULL; event_data = alloc_event_data(cpu); @@ -222,8 +222,6 @@ if (event->attr.config2) { id = (u32)event->attr.config2; sink = coresight_get_sink_by_id(id); - } else { - sink = coresight_get_enabled_sink(true); } if (!sink) @@ -310,6 +308,16 @@ if (!event_data) goto fail; + /* + * Check if this ETM is allowed to trace, as decided + * at etm_setup_aux(). This could be due to an unreachable + * sink from this ETM. We can't do much in this case if + * the sink was specified or hinted to the driver. For + * now, simply don't record anything on this ETM. + */ + if (!cpumask_test_cpu(cpu, &event_data->mask)) + goto fail_end_stop; + path = etm_event_cpu_path(event_data, cpu); /* We need a sink, no need to continue without one */ sink = coresight_get_sink(path); --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c @@ -206,7 +206,7 @@ * each trace run. */ config->vinst_ctrl = BIT(0); - if (drvdata->nr_addr_cmp == true) { + if (drvdata->nr_addr_cmp > 0) { config->mode |= ETM_MODE_VIEWINST_STARTSTOP; /* SSSTATUS, bit[9] */ config->vinst_ctrl |= BIT(9); @@ -389,7 +389,7 @@ config->eventctrl1 &= ~BIT(12); /* bit[8], Instruction stall bit */ - if (config->mode & ETM_MODE_ISTALL_EN) + if ((config->mode & ETM_MODE_ISTALL_EN) && (drvdata->stallctl == true)) config->stall_ctrl |= BIT(8); else config->stall_ctrl &= ~BIT(8); --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-etm4x.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-etm4x.c @@ -48,12 +48,11 @@ MODULE_PARM_DESC(pm_save_enable, "Save/restore state on power down: 1 = never, 2 = self-hosted"); -/* The number of ETMv4 currently registered */ -static int etm4_count; static struct etmv4_drvdata *etmdrvdata[NR_CPUS]; static void etm4_set_default_config(struct etmv4_config *config); static int etm4_set_event_filters(struct etmv4_drvdata *drvdata, struct perf_event *event); +static u64 etm4_get_access_type(struct etmv4_config *config); static enum cpuhp_state hp_online; @@ -132,7 +131,8 @@ writel_relaxed(0x0, drvdata->base + TRCAUXCTLR); writel_relaxed(config->eventctrl0, drvdata->base + TRCEVENTCTL0R); writel_relaxed(config->eventctrl1, drvdata->base + TRCEVENTCTL1R); - writel_relaxed(config->stall_ctrl, drvdata->base + TRCSTALLCTLR); + if (drvdata->stallctl) + writel_relaxed(config->stall_ctrl, drvdata->base + TRCSTALLCTLR); writel_relaxed(config->ts_ctrl, drvdata->base + TRCTSCTLR); writel_relaxed(config->syncfreq, drvdata->base + TRCSYNCPR); writel_relaxed(config->ccctlr, drvdata->base + TRCCCCTLR); @@ -507,6 +507,12 @@ readl_relaxed(drvdata->base + TRCSSCSRn(i)); } + /* read back the current counter values */ + for (i = 0; i < drvdata->nr_cntr; i++) { + config->cntr_val[i] = + readl_relaxed(drvdata->base + TRCCNTVRn(i)); + } + coresight_disclaim_device_unlocked(drvdata->base); CS_LOCK(drvdata->base); @@ -775,6 +781,22 @@ CS_LOCK(drvdata->base); } +/* Set ELx trace filter access in the TRCVICTLR register */ +static void etm4_set_victlr_access(struct etmv4_config *config) +{ + u64 access_type; + + config->vinst_ctrl &= ~(ETM_EXLEVEL_S_VICTLR_MASK | ETM_EXLEVEL_NS_VICTLR_MASK); + + /* + * TRCVICTLR::EXLEVEL_NS:EXLEVELS: Set kernel / user filtering + * bits in vinst_ctrl, same bit pattern as TRCACATRn values returned by + * etm4_get_access_type() but with a relative shift in this register. + */ + access_type = etm4_get_access_type(config) << ETM_EXLEVEL_LSHIFT_TRCVICTLR; + config->vinst_ctrl |= (u32)access_type; +} + static void etm4_set_default_config(struct etmv4_config *config) { /* disable all events tracing */ @@ -792,6 +814,9 @@ /* TRCVICTLR::EVENT = 0x01, select the always on logic */ config->vinst_ctrl = BIT(0); + + /* TRCVICTLR::EXLEVEL_NS:EXLEVELS: Set kernel / user filtering */ + etm4_set_victlr_access(config); } static u64 etm4_get_ns_access_type(struct etmv4_config *config) @@ -1056,7 +1081,7 @@ void etm4_config_trace_mode(struct etmv4_config *config) { - u32 addr_acc, mode; + u32 mode; mode = config->mode; mode &= (ETM_MODE_EXCL_KERN | ETM_MODE_EXCL_USER); @@ -1068,15 +1093,7 @@ if (!(mode & ETM_MODE_EXCL_KERN) && !(mode & ETM_MODE_EXCL_USER)) return; - addr_acc = config->addr_acc[ETM_DEFAULT_ADDR_COMP]; - /* clear default config */ - addr_acc &= ~(ETM_EXLEVEL_NS_APP | ETM_EXLEVEL_NS_OS | - ETM_EXLEVEL_NS_HYP); - - addr_acc |= etm4_get_ns_access_type(config); - - config->addr_acc[ETM_DEFAULT_ADDR_COMP] = addr_acc; - config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] = addr_acc; + etm4_set_victlr_access(config); } static int etm4_online_cpu(unsigned int cpu) @@ -1157,7 +1174,8 @@ state->trcauxctlr = readl(drvdata->base + TRCAUXCTLR); state->trceventctl0r = readl(drvdata->base + TRCEVENTCTL0R); state->trceventctl1r = readl(drvdata->base + TRCEVENTCTL1R); - state->trcstallctlr = readl(drvdata->base + TRCSTALLCTLR); + if (drvdata->stallctl) + state->trcstallctlr = readl(drvdata->base + TRCSTALLCTLR); state->trctsctlr = readl(drvdata->base + TRCTSCTLR); state->trcsyncpr = readl(drvdata->base + TRCSYNCPR); state->trcccctlr = readl(drvdata->base + TRCCCCTLR); @@ -1173,7 +1191,7 @@ state->trcvdsacctlr = readl(drvdata->base + TRCVDSACCTLR); state->trcvdarcctlr = readl(drvdata->base + TRCVDARCCTLR); - for (i = 0; i < drvdata->nrseqstate; i++) + for (i = 0; i < drvdata->nrseqstate - 1; i++) state->trcseqevr[i] = readl(drvdata->base + TRCSEQEVRn(i)); state->trcseqrstevr = readl(drvdata->base + TRCSEQRSTEVR); @@ -1196,8 +1214,8 @@ } for (i = 0; i < drvdata->nr_addr_cmp * 2; i++) { - state->trcacvr[i] = readl(drvdata->base + TRCACVRn(i)); - state->trcacatr[i] = readl(drvdata->base + TRCACATRn(i)); + state->trcacvr[i] = readq(drvdata->base + TRCACVRn(i)); + state->trcacatr[i] = readq(drvdata->base + TRCACATRn(i)); } /* @@ -1208,16 +1226,16 @@ */ for (i = 0; i < drvdata->numcidc; i++) - state->trccidcvr[i] = readl(drvdata->base + TRCCIDCVRn(i)); + state->trccidcvr[i] = readq(drvdata->base + TRCCIDCVRn(i)); for (i = 0; i < drvdata->numvmidc; i++) - state->trcvmidcvr[i] = readl(drvdata->base + TRCVMIDCVRn(i)); + state->trcvmidcvr[i] = readq(drvdata->base + TRCVMIDCVRn(i)); state->trccidcctlr0 = readl(drvdata->base + TRCCIDCCTLR0); state->trccidcctlr1 = readl(drvdata->base + TRCCIDCCTLR1); state->trcvmidcctlr0 = readl(drvdata->base + TRCVMIDCCTLR0); - state->trcvmidcctlr0 = readl(drvdata->base + TRCVMIDCCTLR1); + state->trcvmidcctlr1 = readl(drvdata->base + TRCVMIDCCTLR1); state->trcclaimset = readl(drvdata->base + TRCCLAIMCLR); @@ -1262,7 +1280,8 @@ writel_relaxed(state->trcauxctlr, drvdata->base + TRCAUXCTLR); writel_relaxed(state->trceventctl0r, drvdata->base + TRCEVENTCTL0R); writel_relaxed(state->trceventctl1r, drvdata->base + TRCEVENTCTL1R); - writel_relaxed(state->trcstallctlr, drvdata->base + TRCSTALLCTLR); + if (drvdata->stallctl) + writel_relaxed(state->trcstallctlr, drvdata->base + TRCSTALLCTLR); writel_relaxed(state->trctsctlr, drvdata->base + TRCTSCTLR); writel_relaxed(state->trcsyncpr, drvdata->base + TRCSYNCPR); writel_relaxed(state->trcccctlr, drvdata->base + TRCCCCTLR); @@ -1278,7 +1297,7 @@ writel_relaxed(state->trcvdsacctlr, drvdata->base + TRCVDSACCTLR); writel_relaxed(state->trcvdarcctlr, drvdata->base + TRCVDARCCTLR); - for (i = 0; i < drvdata->nrseqstate; i++) + for (i = 0; i < drvdata->nrseqstate - 1; i++) writel_relaxed(state->trcseqevr[i], drvdata->base + TRCSEQEVRn(i)); @@ -1309,25 +1328,25 @@ } for (i = 0; i < drvdata->nr_addr_cmp * 2; i++) { - writel_relaxed(state->trcacvr[i], + writeq_relaxed(state->trcacvr[i], drvdata->base + TRCACVRn(i)); - writel_relaxed(state->trcacatr[i], + writeq_relaxed(state->trcacatr[i], drvdata->base + TRCACATRn(i)); } for (i = 0; i < drvdata->numcidc; i++) - writel_relaxed(state->trccidcvr[i], + writeq_relaxed(state->trccidcvr[i], drvdata->base + TRCCIDCVRn(i)); for (i = 0; i < drvdata->numvmidc; i++) - writel_relaxed(state->trcvmidcvr[i], + writeq_relaxed(state->trcvmidcvr[i], drvdata->base + TRCVMIDCVRn(i)); writel_relaxed(state->trccidcctlr0, drvdata->base + TRCCIDCCTLR0); writel_relaxed(state->trccidcctlr1, drvdata->base + TRCCIDCCTLR1); writel_relaxed(state->trcvmidcctlr0, drvdata->base + TRCVMIDCCTLR0); - writel_relaxed(state->trcvmidcctlr0, drvdata->base + TRCVMIDCCTLR1); + writel_relaxed(state->trcvmidcctlr1, drvdata->base + TRCVMIDCCTLR1); writel_relaxed(state->trcclaimset, drvdata->base + TRCCLAIMSET); @@ -1388,28 +1407,25 @@ .notifier_call = etm4_cpu_pm_notify, }; -/* Setup PM. Called with cpus locked. Deals with error conditions and counts */ -static int etm4_pm_setup_cpuslocked(void) +/* Setup PM. Deals with error conditions and counts */ +static int __init etm4_pm_setup(void) { int ret; - if (etm4_count++) - return 0; - ret = cpu_pm_register_notifier(&etm4_cpu_pm_nb); if (ret) - goto reduce_count; + return ret; - ret = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ARM_CORESIGHT_STARTING, - "arm/coresight4:starting", - etm4_starting_cpu, etm4_dying_cpu); + ret = cpuhp_setup_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING, + "arm/coresight4:starting", + etm4_starting_cpu, etm4_dying_cpu); if (ret) goto unregister_notifier; - ret = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ONLINE_DYN, - "arm/coresight4:online", - etm4_online_cpu, NULL); + ret = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, + "arm/coresight4:online", + etm4_online_cpu, NULL); /* HP dyn state ID returned in ret on success */ if (ret > 0) { @@ -1418,21 +1434,15 @@ } /* failed dyn state - remove others */ - cpuhp_remove_state_nocalls_cpuslocked(CPUHP_AP_ARM_CORESIGHT_STARTING); + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); unregister_notifier: cpu_pm_unregister_notifier(&etm4_cpu_pm_nb); - -reduce_count: - --etm4_count; return ret; } -static void etm4_pm_clear(void) +static void __init etm4_pm_clear(void) { - if (--etm4_count != 0) - return; - cpu_pm_unregister_notifier(&etm4_cpu_pm_nb); cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); if (hp_online) { @@ -1485,22 +1495,12 @@ if (!desc.name) return -ENOMEM; - cpus_read_lock(); etmdrvdata[drvdata->cpu] = drvdata; if (smp_call_function_single(drvdata->cpu, etm4_init_arch_data, drvdata, 1)) dev_err(dev, "ETM arch init failed\n"); - ret = etm4_pm_setup_cpuslocked(); - cpus_read_unlock(); - - /* etm4_pm_setup_cpuslocked() does its own cleanup - exit on error */ - if (ret) { - etmdrvdata[drvdata->cpu] = NULL; - return ret; - } - if (etm4_arch_supported(drvdata->arch) == false) { ret = -EINVAL; goto err_arch_supported; @@ -1547,7 +1547,6 @@ err_arch_supported: etmdrvdata[drvdata->cpu] = NULL; - etm4_pm_clear(); return ret; } @@ -1585,4 +1584,23 @@ .probe = etm4_probe, .id_table = etm4_ids, }; -builtin_amba_driver(etm4x_driver); + +static int __init etm4x_init(void) +{ + int ret; + + ret = etm4_pm_setup(); + + /* etm4_pm_setup() does its own cleanup - exit on error */ + if (ret) + return ret; + + ret = amba_driver_register(&etm4x_driver); + if (ret) { + pr_err("Error registering etm4x driver\n"); + etm4_pm_clear(); + } + + return ret; +} +device_initcall(etm4x_init); --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-etm4x.h +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-etm4x.h @@ -133,7 +133,7 @@ #define ETMv4_MAX_CTXID_CMP 8 #define ETM_MAX_VMID_CMP 8 #define ETM_MAX_PE_CMP 8 -#define ETM_MAX_RES_SEL 16 +#define ETM_MAX_RES_SEL 32 #define ETM_MAX_SS_CMP 8 #define ETM_ARCH_V4 0x40 @@ -192,6 +192,9 @@ #define ETM_EXLEVEL_NS_HYP BIT(14) #define ETM_EXLEVEL_NS_NA BIT(15) +/* access level control in TRCVICTLR - same bits as TRCACATRn but shifted */ +#define ETM_EXLEVEL_LSHIFT_TRCVICTLR 8 + /* secure / non secure masks - TRCVICTLR, IDR3 */ #define ETM_EXLEVEL_S_VICTLR_MASK GENMASK(19, 16) /* NS MON (EL3) mode never implemented */ @@ -325,7 +328,7 @@ u32 trccntctlr[ETMv4_MAX_CNTR]; u32 trccntvr[ETMv4_MAX_CNTR]; - u32 trcrsctlr[ETM_MAX_RES_SEL * 2]; + u32 trcrsctlr[ETM_MAX_RES_SEL]; u32 trcssccr[ETM_MAX_SS_CMP]; u32 trcsscsr[ETM_MAX_SS_CMP]; @@ -334,7 +337,7 @@ u64 trcacvr[ETM_MAX_SINGLE_ADDR_CMP]; u64 trcacatr[ETM_MAX_SINGLE_ADDR_CMP]; u64 trccidcvr[ETMv4_MAX_CTXID_CMP]; - u32 trcvmidcvr[ETM_MAX_VMID_CMP]; + u64 trcvmidcvr[ETM_MAX_VMID_CMP]; u32 trccidcctlr0; u32 trccidcctlr1; u32 trcvmidcctlr0; --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-platform.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-platform.c @@ -712,11 +712,11 @@ return dir; if (dir == ACPI_CORESIGHT_LINK_MASTER) { - if (ptr->outport > pdata->nr_outport) - pdata->nr_outport = ptr->outport; + if (ptr->outport >= pdata->nr_outport) + pdata->nr_outport = ptr->outport + 1; ptr++; } else { - WARN_ON(pdata->nr_inport == ptr->child_port); + WARN_ON(pdata->nr_inport == ptr->child_port + 1); /* * We do not track input port connections for a device. * However we need the highest port number described, @@ -724,8 +724,8 @@ * record for an output connection. Hence, do not move * the ptr for input connections */ - if (ptr->child_port > pdata->nr_inport) - pdata->nr_inport = ptr->child_port; + if (ptr->child_port >= pdata->nr_inport) + pdata->nr_inport = ptr->child_port + 1; } } --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-priv.h +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-priv.h @@ -87,6 +87,7 @@ * struct cs_buffer - keep track of a recording session' specifics * @cur: index of the current buffer * @nr_pages: max number of pages granted to us + * @pid: PID this cs_buffer belongs to * @offset: offset within the current buffer * @data_size: how much we collected in this run * @snapshot: is this run in snapshot mode @@ -95,6 +96,7 @@ struct cs_buffers { unsigned int cur; unsigned int nr_pages; + pid_t pid; unsigned long offset; local_t data_size; bool snapshot; --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-tmc-etf.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-tmc-etf.c @@ -227,6 +227,7 @@ unsigned long flags; struct tmc_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); struct perf_output_handle *handle = data; + struct cs_buffers *buf = etm_perf_sink_config(handle); spin_lock_irqsave(&drvdata->spinlock, flags); do { @@ -243,7 +244,7 @@ } /* Get a handle on the pid of the process to monitor */ - pid = task_pid_nr(handle->event->owner); + pid = buf->pid; if (drvdata->pid != -1 && drvdata->pid != pid) { ret = -EBUSY; @@ -399,6 +400,7 @@ if (!buf) return NULL; + buf->pid = task_pid_nr(event->owner); buf->snapshot = overwrite; buf->nr_pages = nr_pages; buf->data_pages = pages; @@ -639,15 +641,14 @@ spin_lock_irqsave(&drvdata->spinlock, flags); - /* There is no point in reading a TMC in HW FIFO mode */ - mode = readl_relaxed(drvdata->base + TMC_MODE); - if (mode != TMC_MODE_CIRCULAR_BUFFER) { - spin_unlock_irqrestore(&drvdata->spinlock, flags); - return -EINVAL; - } - /* Re-enable the TMC if need be */ if (drvdata->mode == CS_MODE_SYSFS) { + /* There is no point in reading a TMC in HW FIFO mode */ + mode = readl_relaxed(drvdata->base + TMC_MODE); + if (mode != TMC_MODE_CIRCULAR_BUFFER) { + spin_unlock_irqrestore(&drvdata->spinlock, flags); + return -EINVAL; + } /* * The trace run will continue with the same allocated trace * buffer. As such zero-out the buffer so that we don't end --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight-tmc-etr.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight-tmc-etr.c @@ -217,6 +217,8 @@ } else { page = alloc_pages_node(node, GFP_KERNEL | __GFP_ZERO, 0); + if (!page) + goto err; } paddr = dma_map_page(real_dev, page, 0, PAGE_SIZE, dir); if (dma_mapping_error(real_dev, paddr)) @@ -1533,7 +1535,7 @@ /* Insert barrier packets at the beginning, if there was an overflow */ if (lost) - tmc_etr_buf_insert_barrier_packet(etr_buf, etr_buf->offset); + tmc_etr_buf_insert_barrier_packet(etr_buf, offset); tmc_etr_sync_perf_buffer(etr_perf, offset, size); /* --- linux-5.8.0.orig/drivers/hwtracing/coresight/coresight.c +++ linux-5.8.0/drivers/hwtracing/coresight/coresight.c @@ -1023,7 +1023,6 @@ { struct coresight_device *csdev = to_coresight_device(dev); - cti_remove_assoc_from_csdev(csdev); fwnode_handle_put(csdev->dev.fwnode); kfree(csdev->refcnt); kfree(csdev); @@ -1357,6 +1356,7 @@ { etm_perf_del_symlink_sink(csdev); /* Remove references of that device in the topology */ + cti_remove_assoc_from_csdev(csdev); coresight_remove_conns(csdev); coresight_release_platform_data(csdev, csdev->pdata); device_unregister(&csdev->dev); --- linux-5.8.0.orig/drivers/hwtracing/intel_th/pci.c +++ linux-5.8.0/drivers/hwtracing/intel_th/pci.c @@ -263,6 +263,21 @@ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1bcc), .driver_data = (kernel_ulong_t)&intel_th_2x, }, + { + /* Alder Lake */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7aa6), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, + { + /* Alder Lake-P */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x51a6), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, + { + /* Alder Lake CPU */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x466f), + .driver_data = (kernel_ulong_t)&intel_th_2x, + }, { 0 }, }; --- linux-5.8.0.orig/drivers/hwtracing/stm/heartbeat.c +++ linux-5.8.0/drivers/hwtracing/stm/heartbeat.c @@ -64,7 +64,7 @@ static int stm_heartbeat_init(void) { - int i, ret = -ENOMEM; + int i, ret; if (nr_devs < 0 || nr_devs > STM_HEARTBEAT_MAX) return -EINVAL; @@ -72,8 +72,10 @@ for (i = 0; i < nr_devs; i++) { stm_heartbeat[i].data.name = kasprintf(GFP_KERNEL, "heartbeat.%d", i); - if (!stm_heartbeat[i].data.name) + if (!stm_heartbeat[i].data.name) { + ret = -ENOMEM; goto fail_unregister; + } stm_heartbeat[i].data.nr_chans = 1; stm_heartbeat[i].data.link = stm_heartbeat_link; --- linux-5.8.0.orig/drivers/i2c/algos/i2c-algo-pca.c +++ linux-5.8.0/drivers/i2c/algos/i2c-algo-pca.c @@ -41,8 +41,22 @@ pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IPRESET); pca_outw(adap, I2C_PCA_IND, 0xA5); pca_outw(adap, I2C_PCA_IND, 0x5A); + + /* + * After a reset we need to re-apply any configuration + * (calculated in pca_init) to get the bus in a working state. + */ + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IMODE); + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.mode); + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLL); + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.tlow); + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLH); + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.thi); + + pca_set_con(adap, I2C_PCA_CON_ENSIO); } else { adap->reset_chip(adap->data); + pca_set_con(adap, I2C_PCA_CON_ENSIO | adap->bus_settings.clock_freq); } } @@ -423,13 +437,14 @@ " Use the nominal frequency.\n", adap->name); } - pca_reset(pca_data); - clock = pca_clock(pca_data); printk(KERN_INFO "%s: Clock frequency is %dkHz\n", adap->name, freqs[clock]); - pca_set_con(pca_data, I2C_PCA_CON_ENSIO | clock); + /* Store settings as these will be needed when the PCA chip is reset */ + pca_data->bus_settings.clock_freq = clock; + + pca_reset(pca_data); } else { int clock; int mode; @@ -496,19 +511,15 @@ thi = tlow * min_thi / min_tlow; } + /* Store settings as these will be needed when the PCA chip is reset */ + pca_data->bus_settings.mode = mode; + pca_data->bus_settings.tlow = tlow; + pca_data->bus_settings.thi = thi; + pca_reset(pca_data); printk(KERN_INFO "%s: Clock frequency is %dHz\n", adap->name, clock * 100); - - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_IMODE); - pca_outw(pca_data, I2C_PCA_IND, mode); - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_ISCLL); - pca_outw(pca_data, I2C_PCA_IND, tlow); - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_ISCLH); - pca_outw(pca_data, I2C_PCA_IND, thi); - - pca_set_con(pca_data, I2C_PCA_CON_ENSIO); } udelay(500); /* 500 us for oscillator to stabilise */ --- linux-5.8.0.orig/drivers/i2c/busses/Kconfig +++ linux-5.8.0/drivers/i2c/busses/Kconfig @@ -1008,6 +1008,7 @@ config I2C_SPRD tristate "Spreadtrum I2C interface" depends on I2C=y && (ARCH_SPRD || COMPILE_TEST) + depends on COMMON_CLK help If you say yes to this option, support will be included for the Spreadtrum I2C interface. @@ -1191,6 +1192,7 @@ tristate "Renesas R-Car I2C Controller" depends on ARCH_RENESAS || COMPILE_TEST select I2C_SLAVE + select RESET_CONTROLLER if ARCH_RCAR_GEN3 help If you say yes to this option, support will be included for the R-Car I2C controller. --- linux-5.8.0.orig/drivers/i2c/busses/i2c-aspeed.c +++ linux-5.8.0/drivers/i2c/busses/i2c-aspeed.c @@ -69,6 +69,7 @@ * These share bit definitions, so use the same values for the enable & * status bits. */ +#define ASPEED_I2CD_INTR_RECV_MASK 0xf000ffff #define ASPEED_I2CD_INTR_SDA_DL_TIMEOUT BIT(14) #define ASPEED_I2CD_INTR_BUS_RECOVER_DONE BIT(13) #define ASPEED_I2CD_INTR_SLAVE_MATCH BIT(7) @@ -604,6 +605,7 @@ writel(irq_received & ~ASPEED_I2CD_INTR_RX_DONE, bus->base + ASPEED_I2C_INTR_STS_REG); readl(bus->base + ASPEED_I2C_INTR_STS_REG); + irq_received &= ASPEED_I2CD_INTR_RECV_MASK; irq_remaining = irq_received; #if IS_ENABLED(CONFIG_I2C_SLAVE) --- linux-5.8.0.orig/drivers/i2c/busses/i2c-bcm-iproc.c +++ linux-5.8.0/drivers/i2c/busses/i2c-bcm-iproc.c @@ -159,6 +159,11 @@ #define IE_S_ALL_INTERRUPT_SHIFT 21 #define IE_S_ALL_INTERRUPT_MASK 0x3f +/* + * It takes ~18us to reading 10bytes of data, hence to keep tasklet + * running for less time, max slave read per tasklet is set to 10 bytes. + */ +#define MAX_SLAVE_RX_PER_INT 10 enum i2c_slave_read_status { I2C_SLAVE_RX_FIFO_EMPTY = 0, @@ -205,8 +210,18 @@ /* bytes that have been read */ unsigned int rx_bytes; unsigned int thld_bytes; + + bool slave_rx_only; + bool rx_start_rcvd; + bool slave_read_complete; + u32 tx_underrun; + u32 slave_int_mask; + struct tasklet_struct slave_rx_tasklet; }; +/* tasklet to process slave rx data */ +static void slave_rx_tasklet_fn(unsigned long); + /* * Can be expanded in the future if more interrupt status bits are utilized */ @@ -215,7 +230,8 @@ #define ISR_MASK_SLAVE (BIT(IS_S_START_BUSY_SHIFT)\ | BIT(IS_S_RX_EVENT_SHIFT) | BIT(IS_S_RD_EVENT_SHIFT)\ - | BIT(IS_S_TX_UNDERRUN_SHIFT)) + | BIT(IS_S_TX_UNDERRUN_SHIFT) | BIT(IS_S_RX_FIFO_FULL_SHIFT)\ + | BIT(IS_S_RX_THLD_SHIFT)) static int bcm_iproc_i2c_reg_slave(struct i2c_client *slave); static int bcm_iproc_i2c_unreg_slave(struct i2c_client *slave); @@ -259,6 +275,7 @@ { u32 val; + iproc_i2c->tx_underrun = 0; if (need_reset) { /* put controller in reset */ val = iproc_i2c_rd_reg(iproc_i2c, CFG_OFFSET); @@ -295,8 +312,11 @@ /* Enable interrupt register to indicate a valid byte in receive fifo */ val = BIT(IE_S_RX_EVENT_SHIFT); + /* Enable interrupt register to indicate a Master read transaction */ + val |= BIT(IE_S_RD_EVENT_SHIFT); /* Enable interrupt register for the Slave BUSY command */ val |= BIT(IE_S_START_BUSY_SHIFT); + iproc_i2c->slave_int_mask = val; iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, val); } @@ -321,76 +341,176 @@ } } -static bool bcm_iproc_i2c_slave_isr(struct bcm_iproc_i2c_dev *iproc_i2c, - u32 status) +static void bcm_iproc_i2c_slave_read(struct bcm_iproc_i2c_dev *iproc_i2c) { + u8 rx_data, rx_status; + u32 rx_bytes = 0; u32 val; - u8 value, rx_status; - /* Slave RX byte receive */ - if (status & BIT(IS_S_RX_EVENT_SHIFT)) { + while (rx_bytes < MAX_SLAVE_RX_PER_INT) { val = iproc_i2c_rd_reg(iproc_i2c, S_RX_OFFSET); rx_status = (val >> S_RX_STATUS_SHIFT) & S_RX_STATUS_MASK; - if (rx_status == I2C_SLAVE_RX_START) { - /* Start of SMBUS for Master write */ - i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_WRITE_REQUESTED, &value); + rx_data = ((val >> S_RX_DATA_SHIFT) & S_RX_DATA_MASK); - val = iproc_i2c_rd_reg(iproc_i2c, S_RX_OFFSET); - value = (u8)((val >> S_RX_DATA_SHIFT) & S_RX_DATA_MASK); + if (rx_status == I2C_SLAVE_RX_START) { + /* Start of SMBUS Master write */ i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_WRITE_RECEIVED, &value); - } else if (status & BIT(IS_S_RD_EVENT_SHIFT)) { - /* Start of SMBUS for Master Read */ + I2C_SLAVE_WRITE_REQUESTED, &rx_data); + iproc_i2c->rx_start_rcvd = true; + iproc_i2c->slave_read_complete = false; + } else if (rx_status == I2C_SLAVE_RX_DATA && + iproc_i2c->rx_start_rcvd) { + /* Middle of SMBUS Master write */ i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_READ_REQUESTED, &value); - iproc_i2c_wr_reg(iproc_i2c, S_TX_OFFSET, value); + I2C_SLAVE_WRITE_RECEIVED, &rx_data); + } else if (rx_status == I2C_SLAVE_RX_END && + iproc_i2c->rx_start_rcvd) { + /* End of SMBUS Master write */ + if (iproc_i2c->slave_rx_only) + i2c_slave_event(iproc_i2c->slave, + I2C_SLAVE_WRITE_RECEIVED, + &rx_data); - val = BIT(S_CMD_START_BUSY_SHIFT); - iproc_i2c_wr_reg(iproc_i2c, S_CMD_OFFSET, val); + i2c_slave_event(iproc_i2c->slave, I2C_SLAVE_STOP, + &rx_data); + } else if (rx_status == I2C_SLAVE_RX_FIFO_EMPTY) { + iproc_i2c->rx_start_rcvd = false; + iproc_i2c->slave_read_complete = true; + break; + } - /* - * Enable interrupt for TX FIFO becomes empty and - * less than PKT_LENGTH bytes were output on the SMBUS - */ - val = iproc_i2c_rd_reg(iproc_i2c, IE_OFFSET); - val |= BIT(IE_S_TX_UNDERRUN_SHIFT); - iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, val); - } else { - /* Master write other than start */ - value = (u8)((val >> S_RX_DATA_SHIFT) & S_RX_DATA_MASK); + rx_bytes++; + } +} + +static void slave_rx_tasklet_fn(unsigned long data) +{ + struct bcm_iproc_i2c_dev *iproc_i2c = (struct bcm_iproc_i2c_dev *)data; + u32 int_clr; + + bcm_iproc_i2c_slave_read(iproc_i2c); + + /* clear pending IS_S_RX_EVENT_SHIFT interrupt */ + int_clr = BIT(IS_S_RX_EVENT_SHIFT); + + if (!iproc_i2c->slave_rx_only && iproc_i2c->slave_read_complete) { + /* + * In case of single byte master-read request, + * IS_S_TX_UNDERRUN_SHIFT event is generated before + * IS_S_START_BUSY_SHIFT event. Hence start slave data send + * from first IS_S_TX_UNDERRUN_SHIFT event. + * + * This means don't send any data from slave when + * IS_S_RD_EVENT_SHIFT event is generated else it will increment + * eeprom or other backend slave driver read pointer twice. + */ + iproc_i2c->tx_underrun = 0; + iproc_i2c->slave_int_mask |= BIT(IE_S_TX_UNDERRUN_SHIFT); + + /* clear IS_S_RD_EVENT_SHIFT interrupt */ + int_clr |= BIT(IS_S_RD_EVENT_SHIFT); + } + + /* clear slave interrupt */ + iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, int_clr); + /* enable slave interrupts */ + iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, iproc_i2c->slave_int_mask); +} + +static bool bcm_iproc_i2c_slave_isr(struct bcm_iproc_i2c_dev *iproc_i2c, + u32 status) +{ + u32 val; + u8 value; + + /* + * Slave events in case of master-write, master-write-read and, + * master-read + * + * Master-write : only IS_S_RX_EVENT_SHIFT event + * Master-write-read: both IS_S_RX_EVENT_SHIFT and IS_S_RD_EVENT_SHIFT + * events + * Master-read : both IS_S_RX_EVENT_SHIFT and IS_S_RD_EVENT_SHIFT + * events or only IS_S_RD_EVENT_SHIFT + */ + if (status & BIT(IS_S_RX_EVENT_SHIFT) || + status & BIT(IS_S_RD_EVENT_SHIFT)) { + /* disable slave interrupts */ + val = iproc_i2c_rd_reg(iproc_i2c, IE_OFFSET); + val &= ~iproc_i2c->slave_int_mask; + iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, val); + + if (status & BIT(IS_S_RD_EVENT_SHIFT)) + /* Master-write-read request */ + iproc_i2c->slave_rx_only = false; + else + /* Master-write request only */ + iproc_i2c->slave_rx_only = true; + + /* schedule tasklet to read data later */ + tasklet_schedule(&iproc_i2c->slave_rx_tasklet); + + /* clear only IS_S_RX_EVENT_SHIFT interrupt */ + iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, + BIT(IS_S_RX_EVENT_SHIFT)); + } + + if (status & BIT(IS_S_TX_UNDERRUN_SHIFT)) { + iproc_i2c->tx_underrun++; + if (iproc_i2c->tx_underrun == 1) + /* Start of SMBUS for Master Read */ i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_WRITE_RECEIVED, &value); - if (rx_status == I2C_SLAVE_RX_END) - i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_STOP, &value); - } - } else if (status & BIT(IS_S_TX_UNDERRUN_SHIFT)) { - /* Master read other than start */ - i2c_slave_event(iproc_i2c->slave, - I2C_SLAVE_READ_PROCESSED, &value); + I2C_SLAVE_READ_REQUESTED, + &value); + else + /* Master read other than start */ + i2c_slave_event(iproc_i2c->slave, + I2C_SLAVE_READ_PROCESSED, + &value); iproc_i2c_wr_reg(iproc_i2c, S_TX_OFFSET, value); + /* start transfer */ val = BIT(S_CMD_START_BUSY_SHIFT); iproc_i2c_wr_reg(iproc_i2c, S_CMD_OFFSET, val); + + /* clear interrupt */ + iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, + BIT(IS_S_TX_UNDERRUN_SHIFT)); } - /* Stop */ + /* Stop received from master in case of master read transaction */ if (status & BIT(IS_S_START_BUSY_SHIFT)) { - i2c_slave_event(iproc_i2c->slave, I2C_SLAVE_STOP, &value); /* * Enable interrupt for TX FIFO becomes empty and * less than PKT_LENGTH bytes were output on the SMBUS */ - val = iproc_i2c_rd_reg(iproc_i2c, IE_OFFSET); - val &= ~BIT(IE_S_TX_UNDERRUN_SHIFT); - iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, val); + iproc_i2c->slave_int_mask &= ~BIT(IE_S_TX_UNDERRUN_SHIFT); + iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, + iproc_i2c->slave_int_mask); + + /* End of SMBUS for Master Read */ + val = BIT(S_TX_WR_STATUS_SHIFT); + iproc_i2c_wr_reg(iproc_i2c, S_TX_OFFSET, val); + + val = BIT(S_CMD_START_BUSY_SHIFT); + iproc_i2c_wr_reg(iproc_i2c, S_CMD_OFFSET, val); + + /* flush TX FIFOs */ + val = iproc_i2c_rd_reg(iproc_i2c, S_FIFO_CTRL_OFFSET); + val |= (BIT(S_FIFO_TX_FLUSH_SHIFT)); + iproc_i2c_wr_reg(iproc_i2c, S_FIFO_CTRL_OFFSET, val); + + i2c_slave_event(iproc_i2c->slave, I2C_SLAVE_STOP, &value); + + /* clear interrupt */ + iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, + BIT(IS_S_START_BUSY_SHIFT)); } - /* clear interrupt status */ - iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, status); + /* check slave transmit status only if slave is transmitting */ + if (!iproc_i2c->slave_rx_only) + bcm_iproc_i2c_check_slave_status(iproc_i2c); - bcm_iproc_i2c_check_slave_status(iproc_i2c); return true; } @@ -505,12 +625,17 @@ static irqreturn_t bcm_iproc_i2c_isr(int irq, void *data) { struct bcm_iproc_i2c_dev *iproc_i2c = data; - u32 status = iproc_i2c_rd_reg(iproc_i2c, IS_OFFSET); + u32 slave_status; + u32 status; bool ret; - u32 sl_status = status & ISR_MASK_SLAVE; - if (sl_status) { - ret = bcm_iproc_i2c_slave_isr(iproc_i2c, sl_status); + status = iproc_i2c_rd_reg(iproc_i2c, IS_OFFSET); + /* process only slave interrupt which are enabled */ + slave_status = status & iproc_i2c_rd_reg(iproc_i2c, IE_OFFSET) & + ISR_MASK_SLAVE; + + if (slave_status) { + ret = bcm_iproc_i2c_slave_isr(iproc_i2c, slave_status); if (ret) return IRQ_HANDLED; else @@ -720,7 +845,7 @@ /* mark the last byte */ if (!process_call && (i == msg->len - 1)) - val |= 1 << M_TX_WR_STATUS_SHIFT; + val |= BIT(M_TX_WR_STATUS_SHIFT); iproc_i2c_wr_reg(iproc_i2c, M_TX_OFFSET, val); } @@ -738,7 +863,7 @@ */ addr = i2c_8bit_addr_from_msg(msg); /* mark it the last byte out */ - val = addr | (1 << M_TX_WR_STATUS_SHIFT); + val = addr | BIT(M_TX_WR_STATUS_SHIFT); iproc_i2c_wr_reg(iproc_i2c, M_TX_OFFSET, val); } @@ -1066,6 +1191,10 @@ return -EAFNOSUPPORT; iproc_i2c->slave = slave; + + tasklet_init(&iproc_i2c->slave_rx_tasklet, slave_rx_tasklet_fn, + (unsigned long)iproc_i2c); + bcm_iproc_i2c_slave_init(iproc_i2c, false); return 0; } @@ -1078,7 +1207,7 @@ if (!iproc_i2c->slave) return -EINVAL; - iproc_i2c->slave = NULL; + disable_irq(iproc_i2c->irq); /* disable all slave interrupts */ tmp = iproc_i2c_rd_reg(iproc_i2c, IE_OFFSET); @@ -1086,11 +1215,24 @@ IE_S_ALL_INTERRUPT_SHIFT); iproc_i2c_wr_reg(iproc_i2c, IE_OFFSET, tmp); + tasklet_kill(&iproc_i2c->slave_rx_tasklet); + /* Erase the slave address programmed */ tmp = iproc_i2c_rd_reg(iproc_i2c, S_CFG_SMBUS_ADDR_OFFSET); tmp &= ~BIT(S_CFG_EN_NIC_SMB_ADDR3_SHIFT); iproc_i2c_wr_reg(iproc_i2c, S_CFG_SMBUS_ADDR_OFFSET, tmp); + /* flush TX/RX FIFOs */ + tmp = (BIT(S_FIFO_RX_FLUSH_SHIFT) | BIT(S_FIFO_TX_FLUSH_SHIFT)); + iproc_i2c_wr_reg(iproc_i2c, S_FIFO_CTRL_OFFSET, tmp); + + /* clear all pending slave interrupts */ + iproc_i2c_wr_reg(iproc_i2c, IS_OFFSET, ISR_MASK_SLAVE); + + iproc_i2c->slave = NULL; + + enable_irq(iproc_i2c->irq); + return 0; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-brcmstb.c +++ linux-5.8.0/drivers/i2c/busses/i2c-brcmstb.c @@ -316,7 +316,7 @@ goto cmd_out; } - if ((CMD_RD || CMD_WR) && + if ((cmd == CMD_RD || cmd == CMD_WR) && bsc_readl(dev, iic_enable) & BSC_IIC_EN_NOACK_MASK) { rc = -EREMOTEIO; dev_dbg(dev->device, "controller received NOACK intr for %s\n", --- linux-5.8.0.orig/drivers/i2c/busses/i2c-cpm.c +++ linux-5.8.0/drivers/i2c/busses/i2c-cpm.c @@ -65,6 +65,9 @@ char res1[4]; /* Reserved */ ushort rpbase; /* Relocation pointer */ char res2[2]; /* Reserved */ + /* The following elements are only for CPM2 */ + char res3[4]; /* Reserved */ + uint sdmatmp; /* Internal */ }; #define I2COM_START 0x80 --- linux-5.8.0.orig/drivers/i2c/busses/i2c-designware-slave.c +++ linux-5.8.0/drivers/i2c/busses/i2c-designware-slave.c @@ -159,7 +159,6 @@ u32 raw_stat, stat, enabled, tmp; u8 val = 0, slave_activity; - regmap_read(dev->map, DW_IC_INTR_STAT, &stat); regmap_read(dev->map, DW_IC_ENABLE, &enabled); regmap_read(dev->map, DW_IC_RAW_INTR_STAT, &raw_stat); regmap_read(dev->map, DW_IC_STATUS, &tmp); @@ -168,32 +167,30 @@ if (!enabled || !(raw_stat & ~DW_IC_INTR_ACTIVITY) || !dev->slave) return 0; + stat = i2c_dw_read_clear_intrbits_slave(dev); dev_dbg(dev->dev, "%#x STATUS SLAVE_ACTIVITY=%#x : RAW_INTR_STAT=%#x : INTR_STAT=%#x\n", enabled, slave_activity, raw_stat, stat); - if ((stat & DW_IC_INTR_RX_FULL) && (stat & DW_IC_INTR_STOP_DET)) - i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, &val); + if (stat & DW_IC_INTR_RX_FULL) { + if (dev->status != STATUS_WRITE_IN_PROGRESS) { + dev->status = STATUS_WRITE_IN_PROGRESS; + i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_REQUESTED, + &val); + } + + regmap_read(dev->map, DW_IC_DATA_CMD, &tmp); + val = tmp; + if (!i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_RECEIVED, + &val)) + dev_vdbg(dev->dev, "Byte %X acked!", val); + } if (stat & DW_IC_INTR_RD_REQ) { if (slave_activity) { - if (stat & DW_IC_INTR_RX_FULL) { - regmap_read(dev->map, DW_IC_DATA_CMD, &tmp); - val = tmp; - - if (!i2c_slave_event(dev->slave, - I2C_SLAVE_WRITE_RECEIVED, - &val)) { - dev_vdbg(dev->dev, "Byte %X acked!", - val); - } - regmap_read(dev->map, DW_IC_CLR_RD_REQ, &tmp); - stat = i2c_dw_read_clear_intrbits_slave(dev); - } else { - regmap_read(dev->map, DW_IC_CLR_RD_REQ, &tmp); - regmap_read(dev->map, DW_IC_CLR_RX_UNDER, &tmp); - stat = i2c_dw_read_clear_intrbits_slave(dev); - } + regmap_read(dev->map, DW_IC_CLR_RD_REQ, &tmp); + + dev->status = STATUS_READ_IN_PROGRESS; if (!i2c_slave_event(dev->slave, I2C_SLAVE_READ_REQUESTED, &val)) @@ -205,21 +202,11 @@ if (!i2c_slave_event(dev->slave, I2C_SLAVE_READ_PROCESSED, &val)) regmap_read(dev->map, DW_IC_CLR_RX_DONE, &tmp); - - i2c_slave_event(dev->slave, I2C_SLAVE_STOP, &val); - stat = i2c_dw_read_clear_intrbits_slave(dev); - return 1; } - if (stat & DW_IC_INTR_RX_FULL) { - regmap_read(dev->map, DW_IC_DATA_CMD, &tmp); - val = tmp; - if (!i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_RECEIVED, - &val)) - dev_vdbg(dev->dev, "Byte %X acked!", val); - } else { + if (stat & DW_IC_INTR_STOP_DET) { + dev->status = STATUS_IDLE; i2c_slave_event(dev->slave, I2C_SLAVE_STOP, &val); - stat = i2c_dw_read_clear_intrbits_slave(dev); } return 1; @@ -230,7 +217,6 @@ struct dw_i2c_dev *dev = dev_id; int ret; - i2c_dw_read_clear_intrbits_slave(dev); ret = i2c_dw_irq_handler_slave(dev); if (ret > 0) complete(&dev->cmd_complete); --- linux-5.8.0.orig/drivers/i2c/busses/i2c-exynos5.c +++ linux-5.8.0/drivers/i2c/busses/i2c-exynos5.c @@ -606,6 +606,7 @@ u32 i2c_ctl; u32 int_en = 0; u32 i2c_auto_conf = 0; + u32 i2c_addr = 0; u32 fifo_ctl; unsigned long flags; unsigned short trig_lvl; @@ -640,7 +641,12 @@ int_en |= HSI2C_INT_TX_ALMOSTEMPTY_EN; } - writel(HSI2C_SLV_ADDR_MAS(i2c->msg->addr), i2c->regs + HSI2C_ADDR); + i2c_addr = HSI2C_SLV_ADDR_MAS(i2c->msg->addr); + + if (i2c->op_clock >= I2C_MAX_FAST_MODE_PLUS_FREQ) + i2c_addr |= HSI2C_MASTER_ID(MASTER_ID(i2c->adap.nr)); + + writel(i2c_addr, i2c->regs + HSI2C_ADDR); writel(fifo_ctl, i2c->regs + HSI2C_FIFO_CTL); writel(i2c_ctl, i2c->regs + HSI2C_CTL); --- linux-5.8.0.orig/drivers/i2c/busses/i2c-i801.c +++ linux-5.8.0/drivers/i2c/busses/i2c-i801.c @@ -67,6 +67,7 @@ * Comet Lake-H (PCH) 0x06a3 32 hard yes yes yes * Elkhart Lake (PCH) 0x4b23 32 hard yes yes yes * Tiger Lake-LP (PCH) 0xa0a3 32 hard yes yes yes + * Tiger Lake-H (PCH) 0x43a3 32 hard yes yes yes * Jasper Lake (SOC) 0x4da3 32 hard yes yes yes * Comet Lake-V (PCH) 0xa3a3 32 hard yes yes yes * @@ -221,6 +222,7 @@ #define PCI_DEVICE_ID_INTEL_GEMINILAKE_SMBUS 0x31d4 #define PCI_DEVICE_ID_INTEL_ICELAKE_LP_SMBUS 0x34a3 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS 0x3b30 +#define PCI_DEVICE_ID_INTEL_TIGERLAKE_H_SMBUS 0x43a3 #define PCI_DEVICE_ID_INTEL_ELKHART_LAKE_SMBUS 0x4b23 #define PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS 0x4da3 #define PCI_DEVICE_ID_INTEL_BROXTON_SMBUS 0x5ad4 @@ -1074,6 +1076,7 @@ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COMETLAKE_V_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ELKHART_LAKE_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TIGERLAKE_LP_SMBUS) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TIGERLAKE_H_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS) }, { 0, } }; @@ -1439,7 +1442,7 @@ /* Register GPIO descriptor lookup table */ lookup = devm_kzalloc(dev, - struct_size(lookup, table, mux_config->n_gpios), + struct_size(lookup, table, mux_config->n_gpios + 1), GFP_KERNEL); if (!lookup) return -ENOMEM; @@ -1703,6 +1706,16 @@ static inline void i801_acpi_remove(struct i801_priv *priv) { } #endif +static unsigned char i801_setup_hstcfg(struct i801_priv *priv) +{ + unsigned char hstcfg = priv->original_hstcfg; + + hstcfg &= ~SMBHSTCFG_I2C_EN; /* SMBus timing */ + hstcfg |= SMBHSTCFG_HST_EN; + pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hstcfg); + return hstcfg; +} + static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) { unsigned char temp; @@ -1748,6 +1761,7 @@ case PCI_DEVICE_ID_INTEL_COMETLAKE_H_SMBUS: case PCI_DEVICE_ID_INTEL_ELKHART_LAKE_SMBUS: case PCI_DEVICE_ID_INTEL_TIGERLAKE_LP_SMBUS: + case PCI_DEVICE_ID_INTEL_TIGERLAKE_H_SMBUS: case PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS: priv->features |= FEATURE_BLOCK_PROC; priv->features |= FEATURE_I2C_BLOCK_READ; @@ -1822,14 +1836,10 @@ return err; } - pci_read_config_byte(priv->pci_dev, SMBHSTCFG, &temp); - priv->original_hstcfg = temp; - temp &= ~SMBHSTCFG_I2C_EN; /* SMBus timing */ - if (!(temp & SMBHSTCFG_HST_EN)) { + pci_read_config_byte(priv->pci_dev, SMBHSTCFG, &priv->original_hstcfg); + temp = i801_setup_hstcfg(priv); + if (!(priv->original_hstcfg & SMBHSTCFG_HST_EN)) dev_info(&dev->dev, "Enabling SMBus device\n"); - temp |= SMBHSTCFG_HST_EN; - } - pci_write_config_byte(priv->pci_dev, SMBHSTCFG, temp); if (temp & SMBHSTCFG_SMB_SMI_EN) { dev_dbg(&dev->dev, "SMBus using interrupt SMI#\n"); @@ -1903,6 +1913,7 @@ pci_set_drvdata(dev, priv); + dev_pm_set_driver_flags(&dev->dev, DPM_FLAG_NO_DIRECT_COMPLETE); pm_runtime_set_autosuspend_delay(&dev->dev, 1000); pm_runtime_use_autosuspend(&dev->dev); pm_runtime_put_autosuspend(&dev->dev); @@ -1955,6 +1966,7 @@ { struct i801_priv *priv = dev_get_drvdata(dev); + i801_setup_hstcfg(priv); i801_enable_host_notify(&priv->adapter); return 0; --- linux-5.8.0.orig/drivers/i2c/busses/i2c-imx.c +++ linux-5.8.0/drivers/i2c/busses/i2c-imx.c @@ -412,6 +412,19 @@ dma->chan_using = NULL; } +static void i2c_imx_clear_irq(struct imx_i2c_struct *i2c_imx, unsigned int bits) +{ + unsigned int temp; + + /* + * i2sr_clr_opcode is the value to clear all interrupts. Here we want to + * clear only , so we write ~i2sr_clr_opcode with just + * toggled. This is required because i.MX needs W0C and Vybrid uses W1C. + */ + temp = ~i2c_imx->hwdata->i2sr_clr_opcode ^ bits; + imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); +} + static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool atomic) { unsigned long orig_jiffies = jiffies; @@ -424,8 +437,7 @@ /* check for arbitration lost */ if (temp & I2SR_IAL) { - temp &= ~I2SR_IAL; - imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); + i2c_imx_clear_irq(i2c_imx, I2SR_IAL); return -EAGAIN; } @@ -469,7 +481,7 @@ */ readb_poll_timeout_atomic(addr, regval, regval & I2SR_IIF, 5, 1000 + 100); i2c_imx->i2csr = regval; - imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); + i2c_imx_clear_irq(i2c_imx, I2SR_IIF | I2SR_IAL); } else { wait_event_timeout(i2c_imx->queue, i2c_imx->i2csr & I2SR_IIF, HZ / 10); } @@ -478,6 +490,16 @@ dev_dbg(&i2c_imx->adapter.dev, "<%s> Timeout\n", __func__); return -ETIMEDOUT; } + + /* check for arbitration lost */ + if (i2c_imx->i2csr & I2SR_IAL) { + dev_dbg(&i2c_imx->adapter.dev, "<%s> Arbitration lost\n", __func__); + i2c_imx_clear_irq(i2c_imx, I2SR_IAL); + + i2c_imx->i2csr = 0; + return -EAGAIN; + } + dev_dbg(&i2c_imx->adapter.dev, "<%s> TRX complete\n", __func__); i2c_imx->i2csr = 0; return 0; @@ -593,6 +615,8 @@ /* Stop I2C transaction */ dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); + if (!(temp & I2CR_MSTA)) + i2c_imx->stopped = 1; temp &= ~(I2CR_MSTA | I2CR_MTX); if (i2c_imx->dma) temp &= ~I2CR_DMAEN; @@ -623,9 +647,7 @@ if (temp & I2SR_IIF) { /* save status register */ i2c_imx->i2csr = temp; - temp &= ~I2SR_IIF; - temp |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IIF); - imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); + i2c_imx_clear_irq(i2c_imx, I2SR_IIF); wake_up(&i2c_imx->queue); return IRQ_HANDLED; } @@ -758,9 +780,12 @@ */ dev_dbg(dev, "<%s> clear MSTA\n", __func__); temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); + if (!(temp & I2CR_MSTA)) + i2c_imx->stopped = 1; temp &= ~(I2CR_MSTA | I2CR_MTX); imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); - i2c_imx_bus_busy(i2c_imx, 0, false); + if (!i2c_imx->stopped) + i2c_imx_bus_busy(i2c_imx, 0, false); } else { /* * For i2c master receiver repeat restart operation like: @@ -885,9 +910,12 @@ dev_dbg(&i2c_imx->adapter.dev, "<%s> clear MSTA\n", __func__); temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); + if (!(temp & I2CR_MSTA)) + i2c_imx->stopped = 1; temp &= ~(I2CR_MSTA | I2CR_MTX); imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); - i2c_imx_bus_busy(i2c_imx, 0, atomic); + if (!i2c_imx->stopped) + i2c_imx_bus_busy(i2c_imx, 0, atomic); } else { /* * For i2c master receiver repeat restart operation like: @@ -1171,14 +1199,6 @@ return ret; } - /* Request IRQ */ - ret = devm_request_irq(&pdev->dev, irq, i2c_imx_isr, IRQF_SHARED, - pdev->name, i2c_imx); - if (ret) { - dev_err(&pdev->dev, "can't claim irq %d\n", irq); - goto clk_disable; - } - /* Init queue */ init_waitqueue_head(&i2c_imx->queue); @@ -1197,6 +1217,14 @@ if (ret < 0) goto rpm_disable; + /* Request IRQ */ + ret = request_threaded_irq(irq, i2c_imx_isr, NULL, IRQF_SHARED, + pdev->name, i2c_imx); + if (ret) { + dev_err(&pdev->dev, "can't claim irq %d\n", irq); + goto rpm_disable; + } + /* Set up clock divider */ i2c_imx->bitrate = I2C_MAX_STANDARD_MODE_FREQ; ret = of_property_read_u32(pdev->dev.of_node, @@ -1239,13 +1267,12 @@ clk_notifier_unregister: clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); + free_irq(irq, i2c_imx); rpm_disable: pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); pm_runtime_set_suspended(&pdev->dev); pm_runtime_dont_use_autosuspend(&pdev->dev); - -clk_disable: clk_disable_unprepare(i2c_imx->clk); return ret; } @@ -1253,7 +1280,7 @@ static int i2c_imx_remove(struct platform_device *pdev) { struct imx_i2c_struct *i2c_imx = platform_get_drvdata(pdev); - int ret; + int irq, ret; ret = pm_runtime_get_sync(&pdev->dev); if (ret < 0) @@ -1273,6 +1300,9 @@ imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); + irq = platform_get_irq(pdev, 0); + if (irq >= 0) + free_irq(irq, i2c_imx); clk_disable_unprepare(i2c_imx->clk); pm_runtime_put_noidle(&pdev->dev); --- linux-5.8.0.orig/drivers/i2c/busses/i2c-meson.c +++ linux-5.8.0/drivers/i2c/busses/i2c-meson.c @@ -5,6 +5,7 @@ * Copyright (C) 2014 Beniamino Galvani */ +#include #include #include #include @@ -33,12 +34,17 @@ #define REG_CTRL_ACK_IGNORE BIT(1) #define REG_CTRL_STATUS BIT(2) #define REG_CTRL_ERROR BIT(3) -#define REG_CTRL_CLKDIV_SHIFT 12 -#define REG_CTRL_CLKDIV_MASK GENMASK(21, 12) -#define REG_CTRL_CLKDIVEXT_SHIFT 28 -#define REG_CTRL_CLKDIVEXT_MASK GENMASK(29, 28) +#define REG_CTRL_CLKDIV GENMASK(21, 12) +#define REG_CTRL_CLKDIVEXT GENMASK(29, 28) + +#define REG_SLV_ADDR GENMASK(7, 0) +#define REG_SLV_SDA_FILTER GENMASK(10, 8) +#define REG_SLV_SCL_FILTER GENMASK(13, 11) +#define REG_SLV_SCL_LOW GENMASK(27, 16) +#define REG_SLV_SCL_LOW_EN BIT(28) #define I2C_TIMEOUT_MS 500 +#define FILTER_DELAY 15 enum { TOKEN_END = 0, @@ -133,19 +139,24 @@ unsigned long clk_rate = clk_get_rate(i2c->clk); unsigned int div; - div = DIV_ROUND_UP(clk_rate, freq * i2c->data->div_factor); + div = DIV_ROUND_UP(clk_rate, freq); + div -= FILTER_DELAY; + div = DIV_ROUND_UP(div, i2c->data->div_factor); /* clock divider has 12 bits */ - if (div >= (1 << 12)) { + if (div > GENMASK(11, 0)) { dev_err(i2c->dev, "requested bus frequency too low\n"); - div = (1 << 12) - 1; + div = GENMASK(11, 0); } - meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_CLKDIV_MASK, - (div & GENMASK(9, 0)) << REG_CTRL_CLKDIV_SHIFT); + meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_CLKDIV, + FIELD_PREP(REG_CTRL_CLKDIV, div & GENMASK(9, 0))); + + meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_CLKDIVEXT, + FIELD_PREP(REG_CTRL_CLKDIVEXT, div >> 10)); - meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_CLKDIVEXT_MASK, - (div >> 10) << REG_CTRL_CLKDIVEXT_SHIFT); + /* Disable HIGH/LOW mode */ + meson_i2c_set_mask(i2c, REG_SLAVE_ADDR, REG_SLV_SCL_LOW_EN, 0); dev_dbg(i2c->dev, "%s: clk %lu, freq %u, div %u\n", __func__, clk_rate, freq, div); @@ -280,7 +291,10 @@ token = (msg->flags & I2C_M_RD) ? TOKEN_SLAVE_ADDR_READ : TOKEN_SLAVE_ADDR_WRITE; - writel(msg->addr << 1, i2c->regs + REG_SLAVE_ADDR); + + meson_i2c_set_mask(i2c, REG_SLAVE_ADDR, REG_SLV_ADDR, + FIELD_PREP(REG_SLV_ADDR, msg->addr << 1)); + meson_i2c_add_token(i2c, TOKEN_START); meson_i2c_add_token(i2c, token); } @@ -357,16 +371,12 @@ struct meson_i2c *i2c = adap->algo_data; int i, ret = 0; - clk_enable(i2c->clk); - for (i = 0; i < num; i++) { ret = meson_i2c_xfer_msg(i2c, msgs + i, i == num - 1, atomic); if (ret) break; } - clk_disable(i2c->clk); - return ret ?: i; } @@ -435,7 +445,7 @@ return ret; } - ret = clk_prepare(i2c->clk); + ret = clk_prepare_enable(i2c->clk); if (ret < 0) { dev_err(&pdev->dev, "can't prepare clock\n"); return ret; @@ -457,10 +467,14 @@ ret = i2c_add_adapter(&i2c->adap); if (ret < 0) { - clk_unprepare(i2c->clk); + clk_disable_unprepare(i2c->clk); return ret; } + /* Disable filtering */ + meson_i2c_set_mask(i2c, REG_SLAVE_ADDR, + REG_SLV_SDA_FILTER | REG_SLV_SCL_FILTER, 0); + meson_i2c_set_clk_div(i2c, timings.bus_freq_hz); return 0; @@ -471,7 +485,7 @@ struct meson_i2c *i2c = platform_get_drvdata(pdev); i2c_del_adapter(&i2c->adap); - clk_unprepare(i2c->clk); + clk_disable_unprepare(i2c->clk); return 0; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-mt65xx.c +++ linux-5.8.0/drivers/i2c/busses/i2c-mt65xx.c @@ -38,6 +38,7 @@ #define I2C_IO_CONFIG_OPEN_DRAIN 0x0003 #define I2C_IO_CONFIG_PUSH_PULL 0x0000 #define I2C_SOFT_RST 0x0001 +#define I2C_HANDSHAKE_RST 0x0020 #define I2C_FIFO_ADDR_CLR 0x0001 #define I2C_DELAY_LEN 0x0002 #define I2C_TIME_CLR_VALUE 0x0000 @@ -45,13 +46,16 @@ #define I2C_WRRD_TRANAC_VALUE 0x0002 #define I2C_RD_TRANAC_VALUE 0x0001 #define I2C_SCL_MIS_COMP_VALUE 0x0000 +#define I2C_CHN_CLR_FLAG 0x0000 #define I2C_DMA_CON_TX 0x0000 #define I2C_DMA_CON_RX 0x0001 #define I2C_DMA_START_EN 0x0001 #define I2C_DMA_INT_FLAG_NONE 0x0000 #define I2C_DMA_CLR_FLAG 0x0000 +#define I2C_DMA_WARM_RST 0x0001 #define I2C_DMA_HARD_RST 0x0002 +#define I2C_DMA_HANDSHAKE_RST 0x0004 #define I2C_DMA_4G_MODE 0x0001 #define MAX_SAMPLE_CNT_DIV 8 @@ -452,7 +456,24 @@ { u16 control_reg; - mtk_i2c_writew(i2c, I2C_SOFT_RST, OFFSET_SOFTRESET); + if (i2c->dev_comp->dma_sync) { + writel(I2C_DMA_WARM_RST, i2c->pdmabase + OFFSET_RST); + udelay(10); + writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_RST); + udelay(10); + writel(I2C_DMA_HANDSHAKE_RST | I2C_DMA_HARD_RST, + i2c->pdmabase + OFFSET_RST); + mtk_i2c_writew(i2c, I2C_HANDSHAKE_RST | I2C_SOFT_RST, + OFFSET_SOFTRESET); + udelay(10); + writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_RST); + mtk_i2c_writew(i2c, I2C_CHN_CLR_FLAG, OFFSET_SOFTRESET); + } else { + writel(I2C_DMA_HARD_RST, i2c->pdmabase + OFFSET_RST); + udelay(50); + writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_RST); + mtk_i2c_writew(i2c, I2C_SOFT_RST, OFFSET_SOFTRESET); + } /* Set ioconfig */ if (i2c->use_push_pull) @@ -506,10 +527,6 @@ mtk_i2c_writew(i2c, control_reg, OFFSET_CONTROL); mtk_i2c_writew(i2c, I2C_DELAY_LEN, OFFSET_DELAY_LEN); - - writel(I2C_DMA_HARD_RST, i2c->pdmabase + OFFSET_RST); - udelay(50); - writel(I2C_DMA_CLR_FLAG, i2c->pdmabase + OFFSET_RST); } static const struct i2c_spec_values *mtk_i2c_get_spec(unsigned int speed) @@ -658,8 +675,8 @@ unsigned int cnt_mul; int ret = -EINVAL; - if (target_speed > I2C_MAX_FAST_MODE_PLUS_FREQ) - target_speed = I2C_MAX_FAST_MODE_PLUS_FREQ; + if (target_speed > I2C_MAX_HIGH_SPEED_MODE_FREQ) + target_speed = I2C_MAX_HIGH_SPEED_MODE_FREQ; max_step_cnt = mtk_i2c_max_step_cnt(target_speed); base_step_cnt = max_step_cnt; @@ -736,7 +753,7 @@ for (clk_div = 1; clk_div <= max_clk_div; clk_div++) { clk_src = parent_clk / clk_div; - if (target_speed > I2C_MAX_FAST_MODE_FREQ) { + if (target_speed > I2C_MAX_FAST_MODE_PLUS_FREQ) { /* Set master code speed register */ ret = mtk_i2c_calculate_speed(i2c, clk_src, I2C_MAX_FAST_MODE_FREQ, @@ -1232,7 +1249,8 @@ mtk_i2c_clock_disable(i2c); ret = devm_request_irq(&pdev->dev, irq, mtk_i2c_irq, - IRQF_TRIGGER_NONE, I2C_DRV_NAME, i2c); + IRQF_NO_SUSPEND | IRQF_TRIGGER_NONE, + I2C_DRV_NAME, i2c); if (ret < 0) { dev_err(&pdev->dev, "Request I2C IRQ %d fail\n", irq); @@ -1259,7 +1277,16 @@ } #ifdef CONFIG_PM_SLEEP -static int mtk_i2c_resume(struct device *dev) +static int mtk_i2c_suspend_noirq(struct device *dev) +{ + struct mtk_i2c *i2c = dev_get_drvdata(dev); + + i2c_mark_adapter_suspended(&i2c->adap); + + return 0; +} + +static int mtk_i2c_resume_noirq(struct device *dev) { int ret; struct mtk_i2c *i2c = dev_get_drvdata(dev); @@ -1274,12 +1301,15 @@ mtk_i2c_clock_disable(i2c); + i2c_mark_adapter_resumed(&i2c->adap); + return 0; } #endif static const struct dev_pm_ops mtk_i2c_pm = { - SET_SYSTEM_SLEEP_PM_OPS(NULL, mtk_i2c_resume) + SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(mtk_i2c_suspend_noirq, + mtk_i2c_resume_noirq) }; static struct platform_driver mtk_i2c_driver = { --- linux-5.8.0.orig/drivers/i2c/busses/i2c-mxs.c +++ linux-5.8.0/drivers/i2c/busses/i2c-mxs.c @@ -25,6 +25,7 @@ #include #include #include +#include #define DRIVER_NAME "mxs-i2c" @@ -200,7 +201,8 @@ dma_map_sg(i2c->dev, &i2c->sg_io[0], 1, DMA_TO_DEVICE); desc = dmaengine_prep_slave_sg(i2c->dmach, &i2c->sg_io[0], 1, DMA_MEM_TO_DEV, - DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + DMA_PREP_INTERRUPT | + MXS_DMA_CTRL_WAIT4END); if (!desc) { dev_err(i2c->dev, "Failed to get DMA data write descriptor.\n"); @@ -228,7 +230,8 @@ dma_map_sg(i2c->dev, &i2c->sg_io[1], 1, DMA_FROM_DEVICE); desc = dmaengine_prep_slave_sg(i2c->dmach, &i2c->sg_io[1], 1, DMA_DEV_TO_MEM, - DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + DMA_PREP_INTERRUPT | + MXS_DMA_CTRL_WAIT4END); if (!desc) { dev_err(i2c->dev, "Failed to get DMA data write descriptor.\n"); @@ -260,7 +263,8 @@ dma_map_sg(i2c->dev, i2c->sg_io, 2, DMA_TO_DEVICE); desc = dmaengine_prep_slave_sg(i2c->dmach, i2c->sg_io, 2, DMA_MEM_TO_DEV, - DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + DMA_PREP_INTERRUPT | + MXS_DMA_CTRL_WAIT4END); if (!desc) { dev_err(i2c->dev, "Failed to get DMA data write descriptor.\n"); --- linux-5.8.0.orig/drivers/i2c/busses/i2c-npcm7xx.c +++ linux-5.8.0/drivers/i2c/busses/i2c-npcm7xx.c @@ -2093,8 +2093,12 @@ } } - /* Adaptive TimeOut: astimated time in usec + 100% margin */ - timeout_usec = (2 * 10000 / bus->bus_freq) * (2 + nread + nwrite); + /* + * Adaptive TimeOut: estimated time in usec + 100% margin: + * 2: double the timeout for clock stretching case + * 9: bits per transaction (including the ack/nack) + */ + timeout_usec = (2 * 9 * USEC_PER_SEC / bus->bus_freq) * (2 + nread + nwrite); timeout = max(msecs_to_jiffies(35), usecs_to_jiffies(timeout_usec)); if (nwrite >= 32 * 1024 || nread >= 32 * 1024) { dev_err(bus->dev, "i2c%d buffer too big\n", bus->num); @@ -2159,6 +2163,15 @@ if (bus->cmd_err == -EAGAIN) ret = i2c_recover_bus(adap); + /* + * After any type of error, check if LAST bit is still set, + * due to a HW issue. + * It cannot be cleared without resetting the module. + */ + if (bus->cmd_err && + (NPCM_I2CRXF_CTL_LAST_PEC & ioread8(bus->reg + NPCM_I2CRXF_CTL))) + npcm_i2c_reset(bus); + #if IS_ENABLED(CONFIG_I2C_SLAVE) /* reenable slave if it was enabled */ if (bus->slave) --- linux-5.8.0.orig/drivers/i2c/busses/i2c-octeon-core.c +++ linux-5.8.0/drivers/i2c/busses/i2c-octeon-core.c @@ -347,7 +347,7 @@ if (result) return result; if (recv_len && i == 0) { - if (data[i] > I2C_SMBUS_BLOCK_MAX + 1) + if (data[i] > I2C_SMBUS_BLOCK_MAX) return -EPROTO; length += data[i]; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-owl.c +++ linux-5.8.0/drivers/i2c/busses/i2c-owl.c @@ -176,6 +176,9 @@ fifostat = readl(i2c_dev->base + OWL_I2C_REG_FIFOSTAT); if (fifostat & OWL_I2C_FIFOSTAT_RNB) { i2c_dev->err = -ENXIO; + /* Clear NACK error bit by writing "1" */ + owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_FIFOSTAT, + OWL_I2C_FIFOSTAT_RNB, true); goto stop; } @@ -183,6 +186,9 @@ stat = readl(i2c_dev->base + OWL_I2C_REG_STAT); if (stat & OWL_I2C_STAT_BEB) { i2c_dev->err = -EIO; + /* Clear BUS error bit by writing "1" */ + owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_STAT, + OWL_I2C_STAT_BEB, true); goto stop; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-qcom-cci.c +++ linux-5.8.0/drivers/i2c/busses/i2c-qcom-cci.c @@ -194,9 +194,9 @@ if (unlikely(val & CCI_IRQ_STATUS_0_I2C_M1_ERROR)) { if (val & CCI_IRQ_STATUS_0_I2C_M1_Q0_NACK_ERR || val & CCI_IRQ_STATUS_0_I2C_M1_Q1_NACK_ERR) - cci->master[0].status = -ENXIO; + cci->master[1].status = -ENXIO; else - cci->master[0].status = -EIO; + cci->master[1].status = -EIO; writel(CCI_HALT_REQ_I2C_M1_Q0Q1, cci->base + CCI_HALT_REQ); ret = IRQ_HANDLED; --- linux-5.8.0.orig/drivers/i2c/busses/i2c-qcom-geni.c +++ linux-5.8.0/drivers/i2c/busses/i2c-qcom-geni.c @@ -86,6 +86,9 @@ u32 clk_freq_out; const struct geni_i2c_clk_fld *clk_fld; int suspended; + void *dma_buf; + size_t xfer_len; + dma_addr_t dma_addr; }; struct geni_i2c_err_log { @@ -349,14 +352,39 @@ dev_err(gi2c->se.dev, "Timeout resetting TX_FSM\n"); } +static void geni_i2c_rx_msg_cleanup(struct geni_i2c_dev *gi2c, + struct i2c_msg *cur) +{ + gi2c->cur_rd = 0; + if (gi2c->dma_buf) { + if (gi2c->err) + geni_i2c_rx_fsm_rst(gi2c); + geni_se_rx_dma_unprep(&gi2c->se, gi2c->dma_addr, gi2c->xfer_len); + i2c_put_dma_safe_msg_buf(gi2c->dma_buf, cur, !gi2c->err); + } +} + +static void geni_i2c_tx_msg_cleanup(struct geni_i2c_dev *gi2c, + struct i2c_msg *cur) +{ + gi2c->cur_wr = 0; + if (gi2c->dma_buf) { + if (gi2c->err) + geni_i2c_tx_fsm_rst(gi2c); + geni_se_tx_dma_unprep(&gi2c->se, gi2c->dma_addr, gi2c->xfer_len); + i2c_put_dma_safe_msg_buf(gi2c->dma_buf, cur, !gi2c->err); + } +} + static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, u32 m_param) { - dma_addr_t rx_dma; + dma_addr_t rx_dma = 0; unsigned long time_left; void *dma_buf = NULL; struct geni_se *se = &gi2c->se; size_t len = msg->len; + struct i2c_msg *cur; if (!of_machine_is_compatible("lenovo,yoga-c630")) dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); @@ -367,26 +395,24 @@ geni_se_select_mode(se, GENI_SE_FIFO); writel_relaxed(len, se->base + SE_I2C_RX_TRANS_LEN); + geni_se_setup_m_cmd(se, I2C_READ, m_param); if (dma_buf && geni_se_rx_dma_prep(se, dma_buf, len, &rx_dma)) { geni_se_select_mode(se, GENI_SE_FIFO); i2c_put_dma_safe_msg_buf(dma_buf, msg, false); dma_buf = NULL; + } else { + gi2c->xfer_len = len; + gi2c->dma_addr = rx_dma; + gi2c->dma_buf = dma_buf; } - geni_se_setup_m_cmd(se, I2C_READ, m_param); - + cur = gi2c->cur; time_left = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT); if (!time_left) geni_i2c_abort_xfer(gi2c); - gi2c->cur_rd = 0; - if (dma_buf) { - if (gi2c->err) - geni_i2c_rx_fsm_rst(gi2c); - geni_se_rx_dma_unprep(se, rx_dma, len); - i2c_put_dma_safe_msg_buf(dma_buf, msg, !gi2c->err); - } + geni_i2c_rx_msg_cleanup(gi2c, cur); return gi2c->err; } @@ -394,11 +420,12 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, u32 m_param) { - dma_addr_t tx_dma; + dma_addr_t tx_dma = 0; unsigned long time_left; void *dma_buf = NULL; struct geni_se *se = &gi2c->se; size_t len = msg->len; + struct i2c_msg *cur; if (!of_machine_is_compatible("lenovo,yoga-c630")) dma_buf = i2c_get_dma_safe_msg_buf(msg, 32); @@ -409,29 +436,27 @@ geni_se_select_mode(se, GENI_SE_FIFO); writel_relaxed(len, se->base + SE_I2C_TX_TRANS_LEN); + geni_se_setup_m_cmd(se, I2C_WRITE, m_param); if (dma_buf && geni_se_tx_dma_prep(se, dma_buf, len, &tx_dma)) { geni_se_select_mode(se, GENI_SE_FIFO); i2c_put_dma_safe_msg_buf(dma_buf, msg, false); dma_buf = NULL; + } else { + gi2c->xfer_len = len; + gi2c->dma_addr = tx_dma; + gi2c->dma_buf = dma_buf; } - geni_se_setup_m_cmd(se, I2C_WRITE, m_param); - if (!dma_buf) /* Get FIFO IRQ */ writel_relaxed(1, se->base + SE_GENI_TX_WATERMARK_REG); + cur = gi2c->cur; time_left = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT); if (!time_left) geni_i2c_abort_xfer(gi2c); - gi2c->cur_wr = 0; - if (dma_buf) { - if (gi2c->err) - geni_i2c_tx_fsm_rst(gi2c); - geni_se_tx_dma_unprep(se, tx_dma, len); - i2c_put_dma_safe_msg_buf(dma_buf, msg, !gi2c->err); - } + geni_i2c_tx_msg_cleanup(gi2c, cur); return gi2c->err; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-qup.c +++ linux-5.8.0/drivers/i2c/busses/i2c-qup.c @@ -801,7 +801,8 @@ if (ret || qup->bus_err || qup->qup_err) { reinit_completion(&qup->xfer); - if (qup_i2c_change_state(qup, QUP_RUN_STATE)) { + ret = qup_i2c_change_state(qup, QUP_RUN_STATE); + if (ret) { dev_err(qup->dev, "change to run state timed out"); goto desc_err; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-rcar.c +++ linux-5.8.0/drivers/i2c/busses/i2c-rcar.c @@ -89,7 +89,6 @@ #define RCAR_BUS_PHASE_START (MDBS | MIE | ESG) #define RCAR_BUS_PHASE_DATA (MDBS | MIE) -#define RCAR_BUS_MASK_DATA (~(ESG | FSB) & 0xFF) #define RCAR_BUS_PHASE_STOP (MDBS | MIE | FSB) #define RCAR_IRQ_SEND (MNR | MAL | MST | MAT | MDE) @@ -117,6 +116,7 @@ }; struct rcar_i2c_priv { + u32 flags; void __iomem *io; struct i2c_adapter adap; struct i2c_msg *msg; @@ -127,7 +127,6 @@ int pos; u32 icccr; - u32 flags; u8 recovery_icmcr; /* protected by adapter lock */ enum rcar_i2c_type devtype; struct i2c_client *slave; @@ -583,13 +582,15 @@ rcar_i2c_write(priv, ICSIER, SDR | SSR | SAR); } - rcar_i2c_write(priv, ICSSR, ~SAR & 0xff); + /* Clear SSR, too, because of old STOPs to other clients than us */ + rcar_i2c_write(priv, ICSSR, ~(SAR | SSR) & 0xff); } /* master sent stop */ if (ssr_filtered & SSR) { i2c_slave_event(priv->slave, I2C_SLAVE_STOP, &value); - rcar_i2c_write(priv, ICSIER, SAR | SSR); + rcar_i2c_write(priv, ICSCR, SIE | SDBS); /* clear our NACK */ + rcar_i2c_write(priv, ICSIER, SAR); rcar_i2c_write(priv, ICSSR, ~SSR & 0xff); } @@ -617,7 +618,7 @@ /* * This driver has a lock-free design because there are IP cores (at least * R-Car Gen2) which have an inherent race condition in their hardware design. - * There, we need to clear RCAR_BUS_MASK_DATA bits as soon as possible after + * There, we need to switch to RCAR_BUS_PHASE_DATA as soon as possible after * the interrupt was generated, otherwise an unwanted repeated message gets * generated. It turned out that taking a spinlock at the beginning of the ISR * was already causing repeated messages. Thus, this driver was converted to @@ -626,13 +627,11 @@ static irqreturn_t rcar_i2c_irq(int irq, void *ptr) { struct rcar_i2c_priv *priv = ptr; - u32 msr, val; + u32 msr; /* Clear START or STOP immediately, except for REPSTART after read */ - if (likely(!(priv->flags & ID_P_REP_AFTER_RD))) { - val = rcar_i2c_read(priv, ICMCR); - rcar_i2c_write(priv, ICMCR, val & RCAR_BUS_MASK_DATA); - } + if (likely(!(priv->flags & ID_P_REP_AFTER_RD))) + rcar_i2c_write(priv, ICMCR, RCAR_BUS_PHASE_DATA); msr = rcar_i2c_read(priv, ICMSR); @@ -853,7 +852,7 @@ priv->slave = slave; rcar_i2c_write(priv, ICSAR, slave->addr); rcar_i2c_write(priv, ICSSR, 0); - rcar_i2c_write(priv, ICSIER, SAR | SSR); + rcar_i2c_write(priv, ICSIER, SAR); rcar_i2c_write(priv, ICSCR, SIE | SDBS); return 0; @@ -865,12 +864,14 @@ WARN_ON(!priv->slave); - /* disable irqs and ensure none is running before clearing ptr */ + /* ensure no irq is running before clearing ptr */ + disable_irq(priv->irq); rcar_i2c_write(priv, ICSIER, 0); - rcar_i2c_write(priv, ICSCR, 0); + rcar_i2c_write(priv, ICSSR, 0); + enable_irq(priv->irq); + rcar_i2c_write(priv, ICSCR, SDBS); rcar_i2c_write(priv, ICSAR, 0); /* Gen2: must be 0 if not using slave */ - synchronize_irq(priv->irq); priv->slave = NULL; pm_runtime_put(rcar_i2c_priv_to_dev(priv)); --- linux-5.8.0.orig/drivers/i2c/busses/i2c-sh_mobile.c +++ linux-5.8.0/drivers/i2c/busses/i2c-sh_mobile.c @@ -129,6 +129,7 @@ int sr; bool send_stop; bool stop_after_dma; + bool atomic_xfer; struct resource *res; struct dma_chan *dma_tx; @@ -330,13 +331,15 @@ ret = iic_rd(pd, ICDR); break; case OP_RX_STOP: /* enable DTE interrupt, issue stop */ - iic_wr(pd, ICIC, - ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + if (!pd->atomic_xfer) + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); iic_wr(pd, ICCR, ICCR_ICE | ICCR_RACK); break; case OP_RX_STOP_DATA: /* enable DTE interrupt, read data, issue stop */ - iic_wr(pd, ICIC, - ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + if (!pd->atomic_xfer) + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); ret = iic_rd(pd, ICDR); iic_wr(pd, ICCR, ICCR_ICE | ICCR_RACK); break; @@ -429,7 +432,8 @@ if (wakeup) { pd->sr |= SW_DONE; - wake_up(&pd->wait); + if (!pd->atomic_xfer) + wake_up(&pd->wait); } /* defeat write posting to avoid spurious WAIT interrupts */ @@ -581,6 +585,9 @@ pd->pos = -1; pd->sr = 0; + if (pd->atomic_xfer) + return; + pd->dma_buf = i2c_get_dma_safe_msg_buf(pd->msg, 8); if (pd->dma_buf) sh_mobile_i2c_xfer_dma(pd); @@ -637,15 +644,13 @@ return i ? 0 : -ETIMEDOUT; } -static int sh_mobile_i2c_xfer(struct i2c_adapter *adapter, - struct i2c_msg *msgs, - int num) +static int sh_mobile_xfer(struct sh_mobile_i2c_data *pd, + struct i2c_msg *msgs, int num) { - struct sh_mobile_i2c_data *pd = i2c_get_adapdata(adapter); struct i2c_msg *msg; int err = 0; int i; - long timeout; + long time_left; /* Wake up device and enable clock */ pm_runtime_get_sync(pd->dev); @@ -662,15 +667,35 @@ if (do_start) i2c_op(pd, OP_START); - /* The interrupt handler takes care of the rest... */ - timeout = wait_event_timeout(pd->wait, - pd->sr & (ICSR_TACK | SW_DONE), - adapter->timeout); + if (pd->atomic_xfer) { + unsigned long j = jiffies + pd->adap.timeout; - /* 'stop_after_dma' tells if DMA transfer was complete */ - i2c_put_dma_safe_msg_buf(pd->dma_buf, pd->msg, pd->stop_after_dma); + time_left = time_before_eq(jiffies, j); + while (time_left && + !(pd->sr & (ICSR_TACK | SW_DONE))) { + unsigned char sr = iic_rd(pd, ICSR); + + if (sr & (ICSR_AL | ICSR_TACK | + ICSR_WAIT | ICSR_DTE)) { + sh_mobile_i2c_isr(0, pd); + udelay(150); + } else { + cpu_relax(); + } + time_left = time_before_eq(jiffies, j); + } + } else { + /* The interrupt handler takes care of the rest... */ + time_left = wait_event_timeout(pd->wait, + pd->sr & (ICSR_TACK | SW_DONE), + pd->adap.timeout); + + /* 'stop_after_dma' tells if DMA xfer was complete */ + i2c_put_dma_safe_msg_buf(pd->dma_buf, pd->msg, + pd->stop_after_dma); + } - if (!timeout) { + if (!time_left) { dev_err(pd->dev, "Transfer request timed out\n"); if (pd->dma_direction != DMA_NONE) sh_mobile_i2c_cleanup_dma(pd); @@ -696,14 +721,35 @@ return err ?: num; } +static int sh_mobile_i2c_xfer(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct sh_mobile_i2c_data *pd = i2c_get_adapdata(adapter); + + pd->atomic_xfer = false; + return sh_mobile_xfer(pd, msgs, num); +} + +static int sh_mobile_i2c_xfer_atomic(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct sh_mobile_i2c_data *pd = i2c_get_adapdata(adapter); + + pd->atomic_xfer = true; + return sh_mobile_xfer(pd, msgs, num); +} + static u32 sh_mobile_i2c_func(struct i2c_adapter *adapter) { return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_PROTOCOL_MANGLING; } static const struct i2c_algorithm sh_mobile_i2c_algorithm = { - .functionality = sh_mobile_i2c_func, - .master_xfer = sh_mobile_i2c_xfer, + .functionality = sh_mobile_i2c_func, + .master_xfer = sh_mobile_i2c_xfer, + .master_xfer_atomic = sh_mobile_i2c_xfer_atomic, }; static const struct i2c_adapter_quirks sh_mobile_i2c_quirks = { --- linux-5.8.0.orig/drivers/i2c/busses/i2c-sprd.c +++ linux-5.8.0/drivers/i2c/busses/i2c-sprd.c @@ -72,6 +72,8 @@ /* timeout (ms) for pm runtime autosuspend */ #define SPRD_I2C_PM_TIMEOUT 1000 +/* timeout (ms) for transfer message */ +#define I2C_XFER_TIMEOUT 1000 /* SPRD i2c data structure */ struct sprd_i2c { @@ -244,6 +246,7 @@ struct i2c_msg *msg, bool is_last_msg) { struct sprd_i2c *i2c_dev = i2c_adap->algo_data; + unsigned long time_left; i2c_dev->msg = msg; i2c_dev->buf = msg->buf; @@ -273,7 +276,10 @@ sprd_i2c_opt_start(i2c_dev); - wait_for_completion(&i2c_dev->complete); + time_left = wait_for_completion_timeout(&i2c_dev->complete, + msecs_to_jiffies(I2C_XFER_TIMEOUT)); + if (!time_left) + return -ETIMEDOUT; return i2c_dev->err; } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-stm32f7.c +++ linux-5.8.0/drivers/i2c/busses/i2c-stm32f7.c @@ -55,6 +55,8 @@ #define STM32F7_I2C_CR1_RXDMAEN BIT(15) #define STM32F7_I2C_CR1_TXDMAEN BIT(14) #define STM32F7_I2C_CR1_ANFOFF BIT(12) +#define STM32F7_I2C_CR1_DNF_MASK GENMASK(11, 8) +#define STM32F7_I2C_CR1_DNF(n) (((n) & 0xf) << 8) #define STM32F7_I2C_CR1_ERRIE BIT(7) #define STM32F7_I2C_CR1_TCIE BIT(6) #define STM32F7_I2C_CR1_STOPIE BIT(5) @@ -153,7 +155,7 @@ #define STM32F7_I2C_MAX_SLAVE 0x2 #define STM32F7_I2C_DNF_DEFAULT 0 -#define STM32F7_I2C_DNF_MAX 16 +#define STM32F7_I2C_DNF_MAX 15 #define STM32F7_I2C_ANALOG_FILTER_ENABLE 1 #define STM32F7_I2C_ANALOG_FILTER_DELAY_MIN 50 /* ns */ @@ -714,6 +716,13 @@ else stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, STM32F7_I2C_CR1_ANFOFF); + + /* Program the Digital Filter */ + stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, + STM32F7_I2C_CR1_DNF_MASK); + stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, + STM32F7_I2C_CR1_DNF(i2c_dev->setup.dnf)); + stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, STM32F7_I2C_CR1_PE); } --- linux-5.8.0.orig/drivers/i2c/busses/i2c-tegra-bpmp.c +++ linux-5.8.0/drivers/i2c/busses/i2c-tegra-bpmp.c @@ -80,7 +80,7 @@ flags &= ~I2C_M_RECV_LEN; } - return (flags != 0) ? -EINVAL : 0; + return 0; } /** --- linux-5.8.0.orig/drivers/i2c/busses/i2c-tegra.c +++ linux-5.8.0/drivers/i2c/busses/i2c-tegra.c @@ -326,6 +326,8 @@ /* Read back register to make sure that register writes completed */ if (reg != I2C_TX_FIFO) readl_relaxed(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg)); + else if (i2c_dev->is_vi) + readl_relaxed(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, I2C_INT_STATUS)); } static u32 i2c_readl(struct tegra_i2c_dev *i2c_dev, unsigned long reg) @@ -339,6 +341,21 @@ writesl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg), data, len); } +static void i2c_writesl_vi(struct tegra_i2c_dev *i2c_dev, void *data, + unsigned int reg, unsigned int len) +{ + u32 *data32 = data; + + /* + * VI I2C controller has known hardware bug where writes get stuck + * when immediate multiple writes happen to TX_FIFO register. + * Recommended software work around is to read I2C register after + * each write to TX_FIFO register to flush out the data. + */ + while (len--) + i2c_writel(i2c_dev, *data32++, reg); +} + static void i2c_readsl(struct tegra_i2c_dev *i2c_dev, void *data, unsigned long reg, int len) { @@ -595,7 +612,10 @@ words_to_transfer * BYTES_PER_FIFO_WORD; barrier(); - i2c_writesl(i2c_dev, buf, I2C_TX_FIFO, words_to_transfer); + if (i2c_dev->is_vi) + i2c_writesl_vi(i2c_dev, buf, I2C_TX_FIFO, words_to_transfer); + else + i2c_writesl(i2c_dev, buf, I2C_TX_FIFO, words_to_transfer); buf += words_to_transfer * BYTES_PER_FIFO_WORD; } --- linux-5.8.0.orig/drivers/i2c/i2c-core-acpi.c +++ linux-5.8.0/drivers/i2c/i2c-core-acpi.c @@ -264,6 +264,7 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap) { acpi_status status; + acpi_handle handle; if (!has_acpi_companion(&adap->dev)) return; @@ -274,6 +275,15 @@ adap, NULL); if (ACPI_FAILURE(status)) dev_warn(&adap->dev, "failed to enumerate I2C slaves\n"); + + if (!adap->dev.parent) + return; + + handle = ACPI_HANDLE(adap->dev.parent); + if (!handle) + return; + + acpi_walk_dep_device_list(handle); } const struct acpi_device_id * @@ -729,7 +739,6 @@ return -ENOMEM; } - acpi_walk_dep_device_list(handle); return 0; } --- linux-5.8.0.orig/drivers/i2c/i2c-core-base.c +++ linux-5.8.0/drivers/i2c/i2c-core-base.c @@ -354,7 +354,7 @@ * or ACPI ID table is supplied for the probing device. */ if (!driver->id_table && - !i2c_acpi_match_device(dev->driver->acpi_match_table, client) && + !acpi_driver_match_device(dev, dev->driver) && !i2c_of_match_device(dev->driver->of_match_table, client)) { status = -ENODEV; goto put_sync_adapter; @@ -1336,8 +1336,8 @@ /* create pre-declared device nodes */ of_i2c_register_devices(adap); - i2c_acpi_register_devices(adap); i2c_acpi_install_space_handler(adap); + i2c_acpi_register_devices(adap); if (adap->nr < __i2c_first_dynamic_bus_num) i2c_scan_static_board_info(adap); --- linux-5.8.0.orig/drivers/i3c/master.c +++ linux-5.8.0/drivers/i3c/master.c @@ -1782,6 +1782,21 @@ i3c_master_detach_free_devs(master); } +static void i3c_master_attach_boardinfo(struct i3c_dev_desc *i3cdev) +{ + struct i3c_master_controller *master = i3cdev->common.master; + struct i3c_dev_boardinfo *i3cboardinfo; + + list_for_each_entry(i3cboardinfo, &master->boardinfo.i3c, node) { + if (i3cdev->info.pid != i3cboardinfo->pid) + continue; + + i3cdev->boardinfo = i3cboardinfo; + i3cdev->info.static_addr = i3cboardinfo->static_addr; + return; + } +} + static struct i3c_dev_desc * i3c_master_search_i3c_dev_duplicate(struct i3c_dev_desc *refdev) { @@ -1837,10 +1852,10 @@ if (ret) goto err_detach_dev; + i3c_master_attach_boardinfo(newdev); + olddev = i3c_master_search_i3c_dev_duplicate(newdev); if (olddev) { - newdev->boardinfo = olddev->boardinfo; - newdev->info.static_addr = olddev->info.static_addr; newdev->dev = olddev->dev; if (newdev->dev) newdev->dev->desc = newdev; @@ -2499,7 +2514,7 @@ ret = i3c_master_bus_init(master); if (ret) - goto err_put_dev; + goto err_destroy_wq; ret = device_add(&master->dev); if (ret) @@ -2530,6 +2545,9 @@ err_cleanup_bus: i3c_master_bus_cleanup(master); +err_destroy_wq: + destroy_workqueue(master->wq); + err_put_dev: put_device(&master->dev); --- linux-5.8.0.orig/drivers/i3c/master/i3c-master-cdns.c +++ linux-5.8.0/drivers/i3c/master/i3c-master-cdns.c @@ -1635,8 +1635,10 @@ master->ibi.slots = devm_kcalloc(&pdev->dev, master->ibi.num_slots, sizeof(*master->ibi.slots), GFP_KERNEL); - if (!master->ibi.slots) + if (!master->ibi.slots) { + ret = -ENOMEM; goto err_disable_sysclk; + } writel(IBIR_THR(1), master->regs + CMD_IBI_THR_CTRL); writel(MST_INT_IBIR_THR, master->regs + MST_IER); --- linux-5.8.0.orig/drivers/ide/falconide.c +++ linux-5.8.0/drivers/ide/falconide.c @@ -166,6 +166,7 @@ if (rc) goto err_free; + platform_set_drvdata(pdev, host); return 0; err_free: ide_host_free(host); @@ -176,7 +177,7 @@ static int falconide_remove(struct platform_device *pdev) { - struct ide_host *host = dev_get_drvdata(&pdev->dev); + struct ide_host *host = platform_get_drvdata(pdev); ide_host_remove(host); --- linux-5.8.0.orig/drivers/ide/ide-atapi.c +++ linux-5.8.0/drivers/ide/ide-atapi.c @@ -223,7 +223,6 @@ sense_rq->rq_disk = rq->rq_disk; sense_rq->cmd_flags = REQ_OP_DRV_IN; ide_req(sense_rq)->type = ATA_PRIV_SENSE; - sense_rq->rq_flags |= RQF_PREEMPT; req->cmd[0] = GPCMD_REQUEST_SENSE; req->cmd[4] = cmd_len; --- linux-5.8.0.orig/drivers/ide/ide-io.c +++ linux-5.8.0/drivers/ide/ide-io.c @@ -515,15 +515,10 @@ * above to return us whatever is in the queue. Since we call * ide_do_request() ourselves, we end up taking requests while * the queue is blocked... - * - * We let requests forced at head of queue with ide-preempt - * though. I hope that doesn't happen too much, hopefully not - * unless the subdriver triggers such a thing in its own PM - * state machine. */ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) && ata_pm_request(rq) == 0 && - (rq->rq_flags & RQF_PREEMPT) == 0) { + (rq->rq_flags & RQF_PM) == 0) { /* there should be no pending command at this point */ ide_unlock_port(hwif); goto plug_device; --- linux-5.8.0.orig/drivers/ide/ide-pm.c +++ linux-5.8.0/drivers/ide/ide-pm.c @@ -77,7 +77,7 @@ } memset(&rqpm, 0, sizeof(rqpm)); - rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_PREEMPT); + rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_PM); ide_req(rq)->type = ATA_PRIV_PM_RESUME; ide_req(rq)->special = &rqpm; rqpm.pm_step = IDE_PM_START_RESUME; --- linux-5.8.0.orig/drivers/idle/intel_idle.c +++ linux-5.8.0/drivers/idle/intel_idle.c @@ -132,7 +132,6 @@ struct cpuidle_state *state = &drv->states[index]; unsigned long eax = flg2MWAIT(state->flags); unsigned long ecx = 1; /* break on interrupt flag */ - bool uninitialized_var(tick); int cpu = smp_processor_id(); /* @@ -142,24 +141,8 @@ if (state->flags & CPUIDLE_FLAG_TLB_FLUSHED) leave_mm(cpu); - if (!static_cpu_has(X86_FEATURE_ARAT) && !lapic_timer_always_reliable) { - /* - * Switch over to one-shot tick broadcast if the target C-state - * is deeper than C1. - */ - if ((eax >> MWAIT_SUBSTATE_SIZE) & MWAIT_CSTATE_MASK) { - tick = true; - tick_broadcast_enter(); - } else { - tick = false; - } - } - mwait_idle_with_hints(eax, ecx); - if (!static_cpu_has(X86_FEATURE_ARAT) && tick) - tick_broadcast_exit(); - return index; } @@ -1133,6 +1116,20 @@ return false; } +static bool __init intel_idle_state_needs_timer_stop(struct cpuidle_state *state) +{ + unsigned long eax = flg2MWAIT(state->flags); + + if (boot_cpu_has(X86_FEATURE_ARAT)) + return false; + + /* + * Switch over to one-shot tick broadcast if the target C-state + * is deeper than C1. + */ + return !!((eax >> MWAIT_SUBSTATE_SIZE) & MWAIT_CSTATE_MASK); +} + #ifdef CONFIG_ACPI_PROCESSOR_CSTATE #include @@ -1192,14 +1189,13 @@ if (!intel_idle_cst_usable()) continue; - if (!acpi_processor_claim_cst_control()) { - acpi_state_table.count = 0; - return false; - } + if (!acpi_processor_claim_cst_control()) + break; return true; } + acpi_state_table.count = 0; pr_debug("ACPI _CST not found or not usable\n"); return false; } @@ -1216,7 +1212,7 @@ struct acpi_processor_cx *cx; struct cpuidle_state *state; - if (intel_idle_max_cstate_reached(cstate)) + if (intel_idle_max_cstate_reached(cstate - 1)) break; cx = &acpi_state_table.states[cstate]; @@ -1246,6 +1242,9 @@ if (disabled_states_mask & BIT(cstate)) state->flags |= CPUIDLE_FLAG_OFF; + if (intel_idle_state_needs_timer_stop(state)) + state->flags |= CPUIDLE_FLAG_TIMER_STOP; + state->enter = intel_idle; state->enter_s2idle = intel_idle_s2idle; } @@ -1484,6 +1483,9 @@ !(cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_ALWAYS_ENABLE))) drv->states[drv->state_count].flags |= CPUIDLE_FLAG_OFF; + if (intel_idle_state_needs_timer_stop(&drv->states[drv->state_count])) + drv->states[drv->state_count].flags |= CPUIDLE_FLAG_TIMER_STOP; + drv->state_count++; } --- linux-5.8.0.orig/drivers/iio/accel/bmc150-accel-core.c +++ linux-5.8.0/drivers/iio/accel/bmc150-accel-core.c @@ -189,6 +189,14 @@ struct mutex mutex; u8 fifo_mode, watermark; s16 buffer[8]; + /* + * Ensure there is sufficient space and correct alignment for + * the timestamp if enabled + */ + struct { + __le16 channels[3]; + s64 ts __aligned(8); + } scan; u8 bw_bits; u32 slope_dur; u32 slope_thres; @@ -922,15 +930,16 @@ * now. */ for (i = 0; i < count; i++) { - u16 sample[8]; int j, bit; j = 0; for_each_set_bit(bit, indio_dev->active_scan_mask, indio_dev->masklength) - memcpy(&sample[j++], &buffer[i * 3 + bit], 2); + memcpy(&data->scan.channels[j++], &buffer[i * 3 + bit], + sizeof(data->scan.channels[0])); - iio_push_to_buffers_with_timestamp(indio_dev, sample, tstamp); + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, + tstamp); tstamp += sample_period; } --- linux-5.8.0.orig/drivers/iio/accel/kxcjk-1013.c +++ linux-5.8.0/drivers/iio/accel/kxcjk-1013.c @@ -126,6 +126,12 @@ KX_MAX_CHIPS /* this must be last */ }; +enum kx_acpi_type { + ACPI_GENERIC, + ACPI_SMO8500, + ACPI_KIOX010A, +}; + struct kxcjk1013_data { struct i2c_client *client; struct iio_trigger *dready_trig; @@ -143,7 +149,7 @@ bool motion_trigger_on; int64_t timestamp; enum kx_chipset chipset; - bool is_smo8500_device; + enum kx_acpi_type acpi_type; }; enum kxcjk1013_axis { @@ -270,6 +276,32 @@ {19163, 1, 0}, {38326, 0, 1} }; +#ifdef CONFIG_ACPI +enum kiox010a_fn_index { + KIOX010A_SET_LAPTOP_MODE = 1, + KIOX010A_SET_TABLET_MODE = 2, +}; + +static int kiox010a_dsm(struct device *dev, int fn_index) +{ + acpi_handle handle = ACPI_HANDLE(dev); + guid_t kiox010a_dsm_guid; + union acpi_object *obj; + + if (!handle) + return -ENODEV; + + guid_parse("1f339696-d475-4e26-8cad-2e9f8e6d7a91", &kiox010a_dsm_guid); + + obj = acpi_evaluate_dsm(handle, &kiox010a_dsm_guid, 1, fn_index, NULL); + if (!obj) + return -EIO; + + ACPI_FREE(obj); + return 0; +} +#endif + static int kxcjk1013_set_mode(struct kxcjk1013_data *data, enum kxcjk1013_mode mode) { @@ -347,6 +379,13 @@ { int ret; +#ifdef CONFIG_ACPI + if (data->acpi_type == ACPI_KIOX010A) { + /* Make sure the kbd and touchpad on 2-in-1s using 2 KXCJ91008-s work */ + kiox010a_dsm(&data->client->dev, KIOX010A_SET_LAPTOP_MODE); + } +#endif + ret = i2c_smbus_read_byte_data(data->client, KXCJK1013_REG_WHO_AM_I); if (ret < 0) { dev_err(&data->client->dev, "Error reading who_am_i\n"); @@ -1249,7 +1288,7 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev, enum kx_chipset *chipset, - bool *is_smo8500_device) + enum kx_acpi_type *acpi_type) { const struct acpi_device_id *id; @@ -1258,7 +1297,9 @@ return NULL; if (strcmp(id->id, "SMO8500") == 0) - *is_smo8500_device = true; + *acpi_type = ACPI_SMO8500; + else if (strcmp(id->id, "KIOX010A") == 0) + *acpi_type = ACPI_KIOX010A; *chipset = (enum kx_chipset)id->driver_data; @@ -1301,7 +1342,7 @@ } else if (ACPI_HANDLE(&client->dev)) { name = kxcjk1013_match_acpi_device(&client->dev, &data->chipset, - &data->is_smo8500_device); + &data->acpi_type); } else return -ENODEV; @@ -1319,7 +1360,7 @@ indio_dev->modes = INDIO_DIRECT_MODE; indio_dev->info = &kxcjk1013_info; - if (client->irq > 0 && !data->is_smo8500_device) { + if (client->irq > 0 && data->acpi_type != ACPI_SMO8500) { ret = devm_request_threaded_irq(&client->dev, client->irq, kxcjk1013_data_rdy_trig_poll, kxcjk1013_event_handler, --- linux-5.8.0.orig/drivers/iio/accel/kxsd9.c +++ linux-5.8.0/drivers/iio/accel/kxsd9.c @@ -209,14 +209,20 @@ const struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct kxsd9_state *st = iio_priv(indio_dev); + /* + * Ensure correct positioning and alignment of timestamp. + * No need to zero initialize as all elements written. + */ + struct { + __be16 chan[4]; + s64 ts __aligned(8); + } hw_values; int ret; - /* 4 * 16bit values AND timestamp */ - __be16 hw_values[8]; ret = regmap_bulk_read(st->map, KXSD9_REG_X, - &hw_values, - 8); + hw_values.chan, + sizeof(hw_values.chan)); if (ret) { dev_err(st->dev, "error reading data\n"); @@ -224,7 +230,7 @@ } iio_push_to_buffers_with_timestamp(indio_dev, - hw_values, + &hw_values, iio_get_time_ns(indio_dev)); iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/accel/mma7455_core.c +++ linux-5.8.0/drivers/iio/accel/mma7455_core.c @@ -52,6 +52,14 @@ struct mma7455_data { struct regmap *regmap; + /* + * Used to reorganize data. Will ensure correct alignment of + * the timestamp if present + */ + struct { + __le16 channels[3]; + s64 ts __aligned(8); + } scan; }; static int mma7455_drdy(struct mma7455_data *mma7455) @@ -82,19 +90,19 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct mma7455_data *mma7455 = iio_priv(indio_dev); - u8 buf[16]; /* 3 x 16-bit channels + padding + ts */ int ret; ret = mma7455_drdy(mma7455); if (ret) goto done; - ret = regmap_bulk_read(mma7455->regmap, MMA7455_REG_XOUTL, buf, - sizeof(__le16) * 3); + ret = regmap_bulk_read(mma7455->regmap, MMA7455_REG_XOUTL, + mma7455->scan.channels, + sizeof(mma7455->scan.channels)); if (ret) goto done; - iio_push_to_buffers_with_timestamp(indio_dev, buf, + iio_push_to_buffers_with_timestamp(indio_dev, &mma7455->scan, iio_get_time_ns(indio_dev)); done: --- linux-5.8.0.orig/drivers/iio/accel/mma8452.c +++ linux-5.8.0/drivers/iio/accel/mma8452.c @@ -110,6 +110,12 @@ int sleep_val; struct regulator *vdd_reg; struct regulator *vddio_reg; + + /* Ensure correct alignment of time stamp when present */ + struct { + __be16 channels[3]; + s64 ts __aligned(8); + } buffer; }; /** @@ -1091,14 +1097,13 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct mma8452_data *data = iio_priv(indio_dev); - u8 buffer[16]; /* 3 16-bit channels + padding + ts */ int ret; - ret = mma8452_read(data, (__be16 *)buffer); + ret = mma8452_read(data, data->buffer.channels); if (ret < 0) goto done; - iio_push_to_buffers_with_timestamp(indio_dev, buffer, + iio_push_to_buffers_with_timestamp(indio_dev, &data->buffer, iio_get_time_ns(indio_dev)); done: --- linux-5.8.0.orig/drivers/iio/adc/Kconfig +++ linux-5.8.0/drivers/iio/adc/Kconfig @@ -266,6 +266,8 @@ select IIO_BUFFER select IIO_BUFFER_HW_CONSUMER select IIO_BUFFER_DMAENGINE + depends on HAS_IOMEM + depends on OF help Say yes here to build support for Analog Devices Generic AXI ADC IP core. The IP core is used for interfacing with @@ -909,6 +911,7 @@ depends on ARCH_STM32 || COMPILE_TEST depends on OF depends on REGULATOR + depends on HAS_IOMEM select IIO_BUFFER select MFD_STM32_TIMERS select IIO_STM32_TIMER_TRIGGER --- linux-5.8.0.orig/drivers/iio/adc/ab8500-gpadc.c +++ linux-5.8.0/drivers/iio/adc/ab8500-gpadc.c @@ -918,7 +918,7 @@ return processed; /* Return millivolt or milliamps or millicentigrades */ - *val = processed * 1000; + *val = processed; return IIO_VAL_INT; } --- linux-5.8.0.orig/drivers/iio/adc/ad7292.c +++ linux-5.8.0/drivers/iio/adc/ad7292.c @@ -311,8 +311,10 @@ for_each_available_child_of_node(spi->dev.of_node, child) { diff_channels = of_property_read_bool(child, "diff-channels"); - if (diff_channels) + if (diff_channels) { + of_node_put(child); break; + } } if (diff_channels) { --- linux-5.8.0.orig/drivers/iio/adc/ad7949.c +++ linux-5.8.0/drivers/iio/adc/ad7949.c @@ -91,7 +91,7 @@ int ret; int i; int bits_per_word = ad7949_adc->resolution; - int mask = GENMASK(ad7949_adc->resolution, 0); + int mask = GENMASK(ad7949_adc->resolution - 1, 0); struct spi_message msg; struct spi_transfer tx[] = { { --- linux-5.8.0.orig/drivers/iio/adc/ad_sigma_delta.c +++ linux-5.8.0/drivers/iio/adc/ad_sigma_delta.c @@ -57,7 +57,7 @@ int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg, unsigned int size, unsigned int val) { - uint8_t *data = sigma_delta->data; + uint8_t *data = sigma_delta->tx_buf; struct spi_transfer t = { .tx_buf = data, .len = size + 1, @@ -99,7 +99,7 @@ static int ad_sd_read_reg_raw(struct ad_sigma_delta *sigma_delta, unsigned int reg, unsigned int size, uint8_t *val) { - uint8_t *data = sigma_delta->data; + uint8_t *data = sigma_delta->tx_buf; int ret; struct spi_transfer t[] = { { @@ -146,22 +146,22 @@ { int ret; - ret = ad_sd_read_reg_raw(sigma_delta, reg, size, sigma_delta->data); + ret = ad_sd_read_reg_raw(sigma_delta, reg, size, sigma_delta->rx_buf); if (ret < 0) goto out; switch (size) { case 4: - *val = get_unaligned_be32(sigma_delta->data); + *val = get_unaligned_be32(sigma_delta->rx_buf); break; case 3: - *val = get_unaligned_be24(&sigma_delta->data[0]); + *val = get_unaligned_be24(sigma_delta->rx_buf); break; case 2: - *val = get_unaligned_be16(sigma_delta->data); + *val = get_unaligned_be16(sigma_delta->rx_buf); break; case 1: - *val = sigma_delta->data[0]; + *val = sigma_delta->rx_buf[0]; break; default: ret = -EINVAL; @@ -399,13 +399,11 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct ad_sigma_delta *sigma_delta = iio_device_get_drvdata(indio_dev); + uint8_t *data = sigma_delta->rx_buf; unsigned int reg_size; unsigned int data_reg; - uint8_t data[16]; int ret; - memset(data, 0x00, 16); - reg_size = indio_dev->channels[0].scan_type.realbits + indio_dev->channels[0].scan_type.shift; reg_size = DIV_ROUND_UP(reg_size, 8); --- linux-5.8.0.orig/drivers/iio/adc/at91-sama5d2_adc.c +++ linux-5.8.0/drivers/iio/adc/at91-sama5d2_adc.c @@ -883,7 +883,7 @@ AT91_SAMA5D2_MAX_CHAN_IDX + 1); } -static int at91_adc_buffer_preenable(struct iio_dev *indio_dev) +static int at91_adc_buffer_prepare(struct iio_dev *indio_dev) { int ret; u8 bit; @@ -900,7 +900,7 @@ /* we continue with the triggered buffer */ ret = at91_adc_dma_start(indio_dev); if (ret) { - dev_err(&indio_dev->dev, "buffer postenable failed\n"); + dev_err(&indio_dev->dev, "buffer prepare failed\n"); return ret; } @@ -1004,7 +1004,6 @@ } static const struct iio_buffer_setup_ops at91_buffer_setup_ops = { - .preenable = &at91_adc_buffer_preenable, .postdisable = &at91_adc_buffer_postdisable, .postenable = &at91_adc_buffer_postenable, .predisable = &at91_adc_buffer_predisable, @@ -1580,6 +1579,7 @@ static int at91_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val) { struct at91_adc_state *st = iio_priv(indio_dev); + int ret; if (val > AT91_HWFIFO_MAX_SIZE) return -EINVAL; @@ -1603,7 +1603,15 @@ else if (val > 1) at91_adc_dma_init(to_platform_device(&indio_dev->dev)); - return 0; + /* + * We can start the DMA only after setting the watermark and + * having the DMA initialization completed + */ + ret = at91_adc_buffer_prepare(indio_dev); + if (ret) + at91_adc_dma_disable(to_platform_device(&indio_dev->dev)); + + return ret; } static int at91_adc_update_scan_mode(struct iio_dev *indio_dev, --- linux-5.8.0.orig/drivers/iio/adc/ina2xx-adc.c +++ linux-5.8.0/drivers/iio/adc/ina2xx-adc.c @@ -146,6 +146,11 @@ int range_vbus; /* Bus voltage maximum in V */ int pga_gain_vshunt; /* Shunt voltage PGA gain */ bool allow_async_readout; + /* data buffer needs space for channel data and timestamp */ + struct { + u16 chan[4]; + u64 ts __aligned(8); + } scan; }; static const struct ina2xx_config ina2xx_config[] = { @@ -738,8 +743,6 @@ static int ina2xx_work_buffer(struct iio_dev *indio_dev) { struct ina2xx_chip_info *chip = iio_priv(indio_dev); - /* data buffer needs space for channel data and timestap */ - unsigned short data[4 + sizeof(s64)/sizeof(short)]; int bit, ret, i = 0; s64 time; @@ -758,10 +761,10 @@ if (ret < 0) return ret; - data[i++] = val; + chip->scan.chan[i++] = val; } - iio_push_to_buffers_with_timestamp(indio_dev, data, time); + iio_push_to_buffers_with_timestamp(indio_dev, &chip->scan, time); return 0; }; --- linux-5.8.0.orig/drivers/iio/adc/ingenic-adc.c +++ linux-5.8.0/drivers/iio/adc/ingenic-adc.c @@ -41,7 +41,7 @@ #define JZ4725B_ADC_BATTERY_HIGH_VREF_BITS 10 #define JZ4740_ADC_BATTERY_HIGH_VREF (7500 * 0.986) #define JZ4740_ADC_BATTERY_HIGH_VREF_BITS 12 -#define JZ4770_ADC_BATTERY_VREF 6600 +#define JZ4770_ADC_BATTERY_VREF 1200 #define JZ4770_ADC_BATTERY_VREF_BITS 12 struct ingenic_adc; --- linux-5.8.0.orig/drivers/iio/adc/max1118.c +++ linux-5.8.0/drivers/iio/adc/max1118.c @@ -35,6 +35,11 @@ struct spi_device *spi; struct mutex lock; struct regulator *reg; + /* Ensure natural alignment of buffer elements */ + struct { + u8 channels[2]; + s64 ts __aligned(8); + } scan; u8 data ____cacheline_aligned; }; @@ -165,7 +170,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct max1118 *adc = iio_priv(indio_dev); - u8 data[16] = { }; /* 2x 8-bit ADC data + padding + 8 bytes timestamp */ int scan_index; int i = 0; @@ -183,10 +187,10 @@ goto out; } - data[i] = ret; + adc->scan.channels[i] = ret; i++; } - iio_push_to_buffers_with_timestamp(indio_dev, data, + iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan, iio_get_time_ns(indio_dev)); out: mutex_unlock(&adc->lock); --- linux-5.8.0.orig/drivers/iio/adc/mcp3422.c +++ linux-5.8.0/drivers/iio/adc/mcp3422.c @@ -96,16 +96,12 @@ { int ret; - mutex_lock(&adc->lock); - ret = i2c_master_send(adc->i2c, &newconfig, 1); if (ret > 0) { adc->config = newconfig; ret = 0; } - mutex_unlock(&adc->lock); - return ret; } @@ -138,6 +134,8 @@ u8 config; u8 req_channel = channel->channel; + mutex_lock(&adc->lock); + if (req_channel != MCP3422_CHANNEL(adc->config)) { config = adc->config; config &= ~MCP3422_CHANNEL_MASK; @@ -145,12 +143,18 @@ config &= ~MCP3422_PGA_MASK; config |= MCP3422_PGA_VALUE(adc->pga[req_channel]); ret = mcp3422_update_config(adc, config); - if (ret < 0) + if (ret < 0) { + mutex_unlock(&adc->lock); return ret; + } msleep(mcp3422_read_times[MCP3422_SAMPLE_RATE(adc->config)]); } - return mcp3422_read(adc, value, &config); + ret = mcp3422_read(adc, value, &config); + + mutex_unlock(&adc->lock); + + return ret; } static int mcp3422_read_raw(struct iio_dev *iio, --- linux-5.8.0.orig/drivers/iio/adc/mt6577_auxadc.c +++ linux-5.8.0/drivers/iio/adc/mt6577_auxadc.c @@ -9,9 +9,9 @@ #include #include #include -#include -#include +#include #include +#include #include #include #include @@ -277,6 +277,8 @@ goto err_disable_clk; } + adc_dev->dev_comp = device_get_match_data(&pdev->dev); + mutex_init(&adc_dev->lock); mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC, --- linux-5.8.0.orig/drivers/iio/adc/qcom-spmi-adc5.c +++ linux-5.8.0/drivers/iio/adc/qcom-spmi-adc5.c @@ -786,7 +786,7 @@ static struct platform_driver adc5_driver = { .driver = { - .name = "qcom-spmi-adc5.c", + .name = "qcom-spmi-adc5", .of_match_table = adc5_match_table, }, .probe = adc5_probe, --- linux-5.8.0.orig/drivers/iio/adc/qcom-spmi-vadc.c +++ linux-5.8.0/drivers/iio/adc/qcom-spmi-vadc.c @@ -598,7 +598,7 @@ VADC_CHAN_NO_SCALE(P_MUX16_1_3, 1) VADC_CHAN_NO_SCALE(LR_MUX1_BAT_THERM, 0) - VADC_CHAN_NO_SCALE(LR_MUX2_BAT_ID, 0) + VADC_CHAN_VOLT(LR_MUX2_BAT_ID, 0, SCALE_DEFAULT) VADC_CHAN_NO_SCALE(LR_MUX3_XO_THERM, 0) VADC_CHAN_NO_SCALE(LR_MUX4_AMUX_THM1, 0) VADC_CHAN_NO_SCALE(LR_MUX5_AMUX_THM2, 0) --- linux-5.8.0.orig/drivers/iio/adc/rcar-gyroadc.c +++ linux-5.8.0/drivers/iio/adc/rcar-gyroadc.c @@ -357,7 +357,7 @@ num_channels = ARRAY_SIZE(rcar_gyroadc_iio_channels_3); break; default: - return -EINVAL; + goto err_e_inval; } /* @@ -374,7 +374,7 @@ dev_err(dev, "Failed to get child reg property of ADC \"%pOFn\".\n", child); - return ret; + goto err_of_node_put; } /* Channel number is too high. */ @@ -382,7 +382,7 @@ dev_err(dev, "Only %i channels supported with %pOFn, but reg = <%i>.\n", num_channels, child, reg); - return -EINVAL; + goto err_e_inval; } } @@ -391,7 +391,7 @@ dev_err(dev, "Channel %i uses different ADC mode than the rest.\n", reg); - return -EINVAL; + goto err_e_inval; } /* Channel is valid, grab the regulator. */ @@ -401,7 +401,8 @@ if (IS_ERR(vref)) { dev_dbg(dev, "Channel %i 'vref' supply not connected.\n", reg); - return PTR_ERR(vref); + ret = PTR_ERR(vref); + goto err_of_node_put; } priv->vref[reg] = vref; @@ -425,8 +426,10 @@ * attached to the GyroADC at a time, so if we found it, * we can stop parsing here. */ - if (childmode == RCAR_GYROADC_MODE_SELECT_1_MB88101A) + if (childmode == RCAR_GYROADC_MODE_SELECT_1_MB88101A) { + of_node_put(child); break; + } } if (first) { @@ -435,6 +438,12 @@ } return 0; + +err_e_inval: + ret = -EINVAL; +err_of_node_put: + of_node_put(child); + return ret; } static void rcar_gyroadc_deinit_supplies(struct iio_dev *indio_dev) --- linux-5.8.0.orig/drivers/iio/adc/rockchip_saradc.c +++ linux-5.8.0/drivers/iio/adc/rockchip_saradc.c @@ -372,7 +372,7 @@ ret = clk_prepare_enable(info->clk); if (ret) - return ret; + clk_disable_unprepare(info->pclk); return ret; } --- linux-5.8.0.orig/drivers/iio/adc/stm32-adc-core.c +++ linux-5.8.0/drivers/iio/adc/stm32-adc-core.c @@ -41,18 +41,16 @@ * struct stm32_adc_common_regs - stm32 common registers * @csr: common status register offset * @ccr: common control register offset - * @eoc1_msk: adc1 end of conversion flag in @csr - * @eoc2_msk: adc2 end of conversion flag in @csr - * @eoc3_msk: adc3 end of conversion flag in @csr + * @eoc_msk: array of eoc (end of conversion flag) masks in csr for adc1..n + * @ovr_msk: array of ovr (overrun flag) masks in csr for adc1..n * @ier: interrupt enable register offset for each adc * @eocie_msk: end of conversion interrupt enable mask in @ier */ struct stm32_adc_common_regs { u32 csr; u32 ccr; - u32 eoc1_msk; - u32 eoc2_msk; - u32 eoc3_msk; + u32 eoc_msk[STM32_ADC_MAX_ADCS]; + u32 ovr_msk[STM32_ADC_MAX_ADCS]; u32 ier; u32 eocie_msk; }; @@ -282,21 +280,20 @@ static const struct stm32_adc_common_regs stm32f4_adc_common_regs = { .csr = STM32F4_ADC_CSR, .ccr = STM32F4_ADC_CCR, - .eoc1_msk = STM32F4_EOC1 | STM32F4_OVR1, - .eoc2_msk = STM32F4_EOC2 | STM32F4_OVR2, - .eoc3_msk = STM32F4_EOC3 | STM32F4_OVR3, + .eoc_msk = { STM32F4_EOC1, STM32F4_EOC2, STM32F4_EOC3}, + .ovr_msk = { STM32F4_OVR1, STM32F4_OVR2, STM32F4_OVR3}, .ier = STM32F4_ADC_CR1, - .eocie_msk = STM32F4_EOCIE | STM32F4_OVRIE, + .eocie_msk = STM32F4_EOCIE, }; /* STM32H7 common registers definitions */ static const struct stm32_adc_common_regs stm32h7_adc_common_regs = { .csr = STM32H7_ADC_CSR, .ccr = STM32H7_ADC_CCR, - .eoc1_msk = STM32H7_EOC_MST | STM32H7_OVR_MST, - .eoc2_msk = STM32H7_EOC_SLV | STM32H7_OVR_SLV, + .eoc_msk = { STM32H7_EOC_MST, STM32H7_EOC_SLV}, + .ovr_msk = { STM32H7_OVR_MST, STM32H7_OVR_SLV}, .ier = STM32H7_ADC_IER, - .eocie_msk = STM32H7_EOCIE | STM32H7_OVRIE, + .eocie_msk = STM32H7_EOCIE, }; static const unsigned int stm32_adc_offset[STM32_ADC_MAX_ADCS] = { @@ -318,6 +315,7 @@ { struct stm32_adc_priv *priv = irq_desc_get_handler_data(desc); struct irq_chip *chip = irq_desc_get_chip(desc); + int i; u32 status; chained_irq_enter(chip, desc); @@ -335,17 +333,12 @@ * before invoking the interrupt handler (e.g. call ISR only for * IRQ-enabled ADCs). */ - if (status & priv->cfg->regs->eoc1_msk && - stm32_adc_eoc_enabled(priv, 0)) - generic_handle_irq(irq_find_mapping(priv->domain, 0)); - - if (status & priv->cfg->regs->eoc2_msk && - stm32_adc_eoc_enabled(priv, 1)) - generic_handle_irq(irq_find_mapping(priv->domain, 1)); - - if (status & priv->cfg->regs->eoc3_msk && - stm32_adc_eoc_enabled(priv, 2)) - generic_handle_irq(irq_find_mapping(priv->domain, 2)); + for (i = 0; i < priv->cfg->num_irqs; i++) { + if ((status & priv->cfg->regs->eoc_msk[i] && + stm32_adc_eoc_enabled(priv, i)) || + (status & priv->cfg->regs->ovr_msk[i])) + generic_handle_irq(irq_find_mapping(priv->domain, i)); + } chained_irq_exit(chip, desc); }; @@ -794,6 +787,13 @@ { return stm32_adc_core_hw_start(dev); } + +static int stm32_adc_core_runtime_idle(struct device *dev) +{ + pm_runtime_mark_last_busy(dev); + + return 0; +} #endif static const struct dev_pm_ops stm32_adc_core_pm_ops = { @@ -801,7 +801,7 @@ pm_runtime_force_resume) SET_RUNTIME_PM_OPS(stm32_adc_core_runtime_suspend, stm32_adc_core_runtime_resume, - NULL) + stm32_adc_core_runtime_idle) }; static const struct stm32_adc_priv_cfg stm32f4_adc_priv_cfg = { --- linux-5.8.0.orig/drivers/iio/adc/stm32-adc.c +++ linux-5.8.0/drivers/iio/adc/stm32-adc.c @@ -154,6 +154,7 @@ * @start_conv: routine to start conversions * @stop_conv: routine to stop conversions * @unprepare: optional unprepare routine (disable, power-down) + * @irq_clear: routine to clear irqs * @smp_cycles: programmable sampling time (ADC clock cycles) */ struct stm32_adc_cfg { @@ -166,6 +167,7 @@ void (*start_conv)(struct stm32_adc *, bool dma); void (*stop_conv)(struct stm32_adc *); void (*unprepare)(struct stm32_adc *); + void (*irq_clear)(struct iio_dev *indio_dev, u32 msk); const unsigned int *smp_cycles; }; @@ -615,6 +617,13 @@ STM32F4_ADON | STM32F4_DMA | STM32F4_DDS); } +static void stm32f4_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) +{ + struct stm32_adc *adc = iio_priv(indio_dev); + + stm32_adc_clr_bits(adc, adc->cfg->regs->isr_eoc.reg, msk); +} + static void stm32h7_adc_start_conv(struct stm32_adc *adc, bool dma) { enum stm32h7_adc_dmngt dmngt; @@ -652,6 +661,13 @@ stm32_adc_clr_bits(adc, STM32H7_ADC_CFGR, STM32H7_DMNGT_MASK); } +static void stm32h7_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) +{ + struct stm32_adc *adc = iio_priv(indio_dev); + /* On STM32H7 IRQs are cleared by writing 1 into ISR register */ + stm32_adc_set_bits(adc, adc->cfg->regs->isr_eoc.reg, msk); +} + static int stm32h7_adc_exit_pwr_down(struct stm32_adc *adc) { struct iio_dev *indio_dev = iio_priv_to_dev(adc); @@ -1225,17 +1241,40 @@ } } +static void stm32_adc_irq_clear(struct iio_dev *indio_dev, u32 msk) +{ + struct stm32_adc *adc = iio_priv(indio_dev); + + adc->cfg->irq_clear(indio_dev, msk); +} + static irqreturn_t stm32_adc_threaded_isr(int irq, void *data) { struct stm32_adc *adc = data; struct iio_dev *indio_dev = iio_priv_to_dev(adc); const struct stm32_adc_regspec *regs = adc->cfg->regs; u32 status = stm32_adc_readl(adc, regs->isr_eoc.reg); + u32 mask = stm32_adc_readl(adc, regs->ier_eoc.reg); - if (status & regs->isr_ovr.mask) + /* Check ovr status right now, as ovr mask should be already disabled */ + if (status & regs->isr_ovr.mask) { + /* + * Clear ovr bit to avoid subsequent calls to IRQ handler. + * This requires to stop ADC first. OVR bit state in ISR, + * is propaged to CSR register by hardware. + */ + adc->cfg->stop_conv(indio_dev); + stm32_adc_irq_clear(indio_dev, regs->isr_ovr.mask); dev_err(&indio_dev->dev, "Overrun, stopping: restart needed\n"); + return IRQ_HANDLED; + } - return IRQ_HANDLED; + if (!(status & mask)) + dev_err_ratelimited(&indio_dev->dev, + "Unexpected IRQ: IER=0x%08x, ISR=0x%08x\n", + mask, status); + + return IRQ_NONE; } static irqreturn_t stm32_adc_isr(int irq, void *data) @@ -1244,6 +1283,10 @@ struct iio_dev *indio_dev = iio_priv_to_dev(adc); const struct stm32_adc_regspec *regs = adc->cfg->regs; u32 status = stm32_adc_readl(adc, regs->isr_eoc.reg); + u32 mask = stm32_adc_readl(adc, regs->ier_eoc.reg); + + if (!(status & mask)) + return IRQ_WAKE_THREAD; if (status & regs->isr_ovr.mask) { /* @@ -2069,6 +2112,7 @@ .start_conv = stm32f4_adc_start_conv, .stop_conv = stm32f4_adc_stop_conv, .smp_cycles = stm32f4_adc_smp_cycles, + .irq_clear = stm32f4_adc_irq_clear, }; static const struct stm32_adc_cfg stm32h7_adc_cfg = { @@ -2080,6 +2124,7 @@ .prepare = stm32h7_adc_prepare, .unprepare = stm32h7_adc_unprepare, .smp_cycles = stm32h7_adc_smp_cycles, + .irq_clear = stm32h7_adc_irq_clear, }; static const struct stm32_adc_cfg stm32mp1_adc_cfg = { @@ -2092,6 +2137,7 @@ .prepare = stm32h7_adc_prepare, .unprepare = stm32h7_adc_unprepare, .smp_cycles = stm32h7_adc_smp_cycles, + .irq_clear = stm32h7_adc_irq_clear, }; static const struct of_device_id stm32_adc_of_match[] = { --- linux-5.8.0.orig/drivers/iio/adc/ti-adc081c.c +++ linux-5.8.0/drivers/iio/adc/ti-adc081c.c @@ -33,6 +33,12 @@ /* 8, 10 or 12 */ int bits; + + /* Ensure natural alignment of buffer elements */ + struct { + u16 channel; + s64 ts __aligned(8); + } scan; }; #define REG_CONV_RES 0x00 @@ -128,14 +134,13 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct adc081c *data = iio_priv(indio_dev); - u16 buf[8]; /* 2 bytes data + 6 bytes padding + 8 bytes timestamp */ int ret; ret = i2c_smbus_read_word_swapped(data->i2c, REG_CONV_RES); if (ret < 0) goto out; - buf[0] = ret; - iio_push_to_buffers_with_timestamp(indio_dev, buf, + data->scan.channel = ret; + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, iio_get_time_ns(indio_dev)); out: iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/adc/ti-adc0832.c +++ linux-5.8.0/drivers/iio/adc/ti-adc0832.c @@ -28,6 +28,12 @@ struct regulator *reg; struct mutex lock; u8 mux_bits; + /* + * Max size needed: 16x 1 byte ADC data + 8 bytes timestamp + * May be shorter if not all channels are enabled subject + * to the timestamp remaining 8 byte aligned. + */ + u8 data[24] __aligned(8); u8 tx_buf[2] ____cacheline_aligned; u8 rx_buf[2]; @@ -199,7 +205,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct adc0832 *adc = iio_priv(indio_dev); - u8 data[24] = { }; /* 16x 1 byte ADC data + 8 bytes timestamp */ int scan_index; int i = 0; @@ -217,10 +222,10 @@ goto out; } - data[i] = ret; + adc->data[i] = ret; i++; } - iio_push_to_buffers_with_timestamp(indio_dev, data, + iio_push_to_buffers_with_timestamp(indio_dev, adc->data, iio_get_time_ns(indio_dev)); out: mutex_unlock(&adc->lock); --- linux-5.8.0.orig/drivers/iio/adc/ti-adc084s021.c +++ linux-5.8.0/drivers/iio/adc/ti-adc084s021.c @@ -25,6 +25,11 @@ struct spi_transfer spi_trans; struct regulator *reg; struct mutex lock; + /* Buffer used to align data */ + struct { + __be16 channels[4]; + s64 ts __aligned(8); + } scan; /* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache line. @@ -140,14 +145,13 @@ struct iio_poll_func *pf = pollfunc; struct iio_dev *indio_dev = pf->indio_dev; struct adc084s021 *adc = iio_priv(indio_dev); - __be16 data[8] = {0}; /* 4 * 16-bit words of data + 8 bytes timestamp */ mutex_lock(&adc->lock); - if (adc084s021_adc_conversion(adc, &data) < 0) + if (adc084s021_adc_conversion(adc, adc->scan.channels) < 0) dev_err(&adc->spi->dev, "Failed to read data\n"); - iio_push_to_buffers_with_timestamp(indio_dev, data, + iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan, iio_get_time_ns(indio_dev)); mutex_unlock(&adc->lock); iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/adc/ti-adc12138.c +++ linux-5.8.0/drivers/iio/adc/ti-adc12138.c @@ -47,6 +47,12 @@ struct completion complete; /* The number of cclk periods for the S/H's acquisition time */ unsigned int acquisition_time; + /* + * Maximum size needed: 16x 2 bytes ADC data + 8 bytes timestamp. + * Less may be need if not all channels are enabled, as long as + * the 8 byte alignment of the timestamp is maintained. + */ + __be16 data[20] __aligned(8); u8 tx_buf[2] ____cacheline_aligned; u8 rx_buf[2]; @@ -329,7 +335,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct adc12138 *adc = iio_priv(indio_dev); - __be16 data[20] = { }; /* 16x 2 bytes ADC data + 8 bytes timestamp */ __be16 trash; int ret; int scan_index; @@ -345,7 +350,7 @@ reinit_completion(&adc->complete); ret = adc12138_start_and_read_conv(adc, scan_chan, - i ? &data[i - 1] : &trash); + i ? &adc->data[i - 1] : &trash); if (ret) { dev_warn(&adc->spi->dev, "failed to start conversion\n"); @@ -362,7 +367,7 @@ } if (i) { - ret = adc12138_read_conv_data(adc, &data[i - 1]); + ret = adc12138_read_conv_data(adc, &adc->data[i - 1]); if (ret) { dev_warn(&adc->spi->dev, "failed to get conversion data\n"); @@ -370,7 +375,7 @@ } } - iio_push_to_buffers_with_timestamp(indio_dev, data, + iio_push_to_buffers_with_timestamp(indio_dev, adc->data, iio_get_time_ns(indio_dev)); out: mutex_unlock(&adc->lock); --- linux-5.8.0.orig/drivers/iio/adc/ti-ads1015.c +++ linux-5.8.0/drivers/iio/adc/ti-ads1015.c @@ -316,6 +316,7 @@ IIO_CHAN_SOFT_TIMESTAMP(ADS1015_TIMESTAMP), }; +#ifdef CONFIG_PM static int ads1015_set_power_state(struct ads1015_data *data, bool on) { int ret; @@ -333,6 +334,15 @@ return ret < 0 ? ret : 0; } +#else /* !CONFIG_PM */ + +static int ads1015_set_power_state(struct ads1015_data *data, bool on) +{ + return 0; +} + +#endif /* !CONFIG_PM */ + static int ads1015_get_adc_result(struct ads1015_data *data, int chan, int *val) { --- linux-5.8.0.orig/drivers/iio/adc/ti-ads124s08.c +++ linux-5.8.0/drivers/iio/adc/ti-ads124s08.c @@ -99,6 +99,14 @@ struct gpio_desc *reset_gpio; struct spi_device *spi; struct mutex lock; + /* + * Used to correctly align data. + * Ensure timestamp is naturally aligned. + * Note that the full buffer length may not be needed if not + * all channels are enabled, as long as the alignment of the + * timestamp is maintained. + */ + u32 buffer[ADS124S08_MAX_CHANNELS + sizeof(s64)/sizeof(u32)] __aligned(8); u8 data[5] ____cacheline_aligned; }; @@ -269,7 +277,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct ads124s_private *priv = iio_priv(indio_dev); - u32 buffer[ADS124S08_MAX_CHANNELS + sizeof(s64)/sizeof(u16)]; int scan_index, j = 0; int ret; @@ -284,7 +291,7 @@ if (ret) dev_err(&priv->spi->dev, "Start ADC conversions failed\n"); - buffer[j] = ads124s_read(indio_dev, scan_index); + priv->buffer[j] = ads124s_read(indio_dev, scan_index); ret = ads124s_write_cmd(indio_dev, ADS124S08_STOP_CONV); if (ret) dev_err(&priv->spi->dev, "Stop ADC conversions failed\n"); @@ -292,7 +299,7 @@ j++; } - iio_push_to_buffers_with_timestamp(indio_dev, buffer, + iio_push_to_buffers_with_timestamp(indio_dev, priv->buffer, pf->timestamp); iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/amplifiers/ad8366.c +++ linux-5.8.0/drivers/iio/amplifiers/ad8366.c @@ -262,8 +262,11 @@ case ID_ADA4961: case ID_ADL5240: case ID_HMC1119: - st->reset_gpio = devm_gpiod_get(&spi->dev, "reset", - GPIOD_OUT_HIGH); + st->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(st->reset_gpio)) { + ret = PTR_ERR(st->reset_gpio); + goto error_disable_reg; + } indio_dev->channels = ada4961_channels; indio_dev->num_channels = ARRAY_SIZE(ada4961_channels); break; --- linux-5.8.0.orig/drivers/iio/chemical/ccs811.c +++ linux-5.8.0/drivers/iio/chemical/ccs811.c @@ -78,6 +78,11 @@ struct iio_trigger *drdy_trig; struct gpio_desc *wakeup_gpio; bool drdy_trig_on; + /* Ensures correct alignment of timestamp if present */ + struct { + s16 channels[2]; + s64 ts __aligned(8); + } scan; }; static const struct iio_chan_spec ccs811_channels[] = { @@ -327,17 +332,17 @@ struct iio_dev *indio_dev = pf->indio_dev; struct ccs811_data *data = iio_priv(indio_dev); struct i2c_client *client = data->client; - s16 buf[8]; /* s16 eCO2 + s16 TVOC + padding + 8 byte timestamp */ int ret; - ret = i2c_smbus_read_i2c_block_data(client, CCS811_ALG_RESULT_DATA, 4, - (u8 *)&buf); + ret = i2c_smbus_read_i2c_block_data(client, CCS811_ALG_RESULT_DATA, + sizeof(data->scan.channels), + (u8 *)data->scan.channels); if (ret != 4) { dev_err(&client->dev, "cannot read sensor data\n"); goto err; } - iio_push_to_buffers_with_timestamp(indio_dev, buf, + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, iio_get_time_ns(indio_dev)); err: --- linux-5.8.0.orig/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +++ linux-5.8.0/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c @@ -72,10 +72,13 @@ switch (type) { case MOTIONSENSE_TYPE_ACCEL: - case MOTIONSENSE_TYPE_GYRO: *min_freq = 12500; *max_freq = 100000; break; + case MOTIONSENSE_TYPE_GYRO: + *min_freq = 25000; + *max_freq = 100000; + break; case MOTIONSENSE_TYPE_MAG: *min_freq = 5000; *max_freq = 25000; @@ -252,7 +255,7 @@ struct cros_ec_sensorhub *sensor_hub = dev_get_drvdata(dev->parent); struct cros_ec_dev *ec = sensor_hub->ec; struct cros_ec_sensor_platform *sensor_platform = dev_get_platdata(dev); - u32 ver_mask; + u32 ver_mask, temp; int frequencies[ARRAY_SIZE(state->frequencies) / 2] = { 0 }; int ret, i; @@ -308,10 +311,16 @@ &frequencies[2], &state->fifo_max_event_count); } else { - frequencies[1] = state->resp->info_3.min_frequency; - frequencies[2] = state->resp->info_3.max_frequency; - state->fifo_max_event_count = - state->resp->info_3.fifo_max_event_count; + if (state->resp->info_3.max_frequency == 0) { + get_default_min_max_freq(state->resp->info.type, + &frequencies[1], + &frequencies[2], + &temp); + } else { + frequencies[1] = state->resp->info_3.min_frequency; + frequencies[2] = state->resp->info_3.max_frequency; + } + state->fifo_max_event_count = state->resp->info_3.fifo_max_event_count; } for (i = 0; i < ARRAY_SIZE(frequencies); i++) { state->frequencies[2 * i] = frequencies[i] / 1000; --- linux-5.8.0.orig/drivers/iio/common/st_sensors/st_sensors_trigger.c +++ linux-5.8.0/drivers/iio/common/st_sensors/st_sensors_trigger.c @@ -23,35 +23,31 @@ * @sdata: Sensor data. * * returns: - * 0 - no new samples available - * 1 - new samples available - * negative - error or unknown + * false - no new samples available or read error + * true - new samples available */ -static int st_sensors_new_samples_available(struct iio_dev *indio_dev, - struct st_sensor_data *sdata) +static bool st_sensors_new_samples_available(struct iio_dev *indio_dev, + struct st_sensor_data *sdata) { int ret, status; /* How would I know if I can't check it? */ if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr) - return -EINVAL; + return true; /* No scan mask, no interrupt */ if (!indio_dev->active_scan_mask) - return 0; + return false; ret = regmap_read(sdata->regmap, sdata->sensor_settings->drdy_irq.stat_drdy.addr, &status); if (ret < 0) { dev_err(sdata->dev, "error checking samples available\n"); - return ret; + return false; } - if (status & sdata->sensor_settings->drdy_irq.stat_drdy.mask) - return 1; - - return 0; + return !!(status & sdata->sensor_settings->drdy_irq.stat_drdy.mask); } /** @@ -180,9 +176,15 @@ /* Tell the interrupt handler that we're dealing with edges */ if (irq_trig == IRQF_TRIGGER_FALLING || - irq_trig == IRQF_TRIGGER_RISING) + irq_trig == IRQF_TRIGGER_RISING) { + if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr) { + dev_err(&indio_dev->dev, + "edge IRQ not supported w/o stat register.\n"); + err = -EOPNOTSUPP; + goto iio_trigger_free; + } sdata->edge_irq = true; - else + } else { /* * If we're not using edges (i.e. level interrupts) we * just mask off the IRQ, handle one interrupt, then @@ -190,6 +192,7 @@ * interrupt handler top half again and start over. */ irq_trig |= IRQF_ONESHOT; + } /* * If the interrupt pin is Open Drain, by definition this --- linux-5.8.0.orig/drivers/iio/dac/ad5504.c +++ linux-5.8.0/drivers/iio/dac/ad5504.c @@ -188,9 +188,9 @@ return ret; if (pwr_down) - st->pwr_down_mask |= (1 << chan->channel); - else st->pwr_down_mask &= ~(1 << chan->channel); + else + st->pwr_down_mask |= (1 << chan->channel); ret = ad5504_spi_write(st, AD5504_ADDR_CTRL, AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) | --- linux-5.8.0.orig/drivers/iio/dac/ad5592r-base.c +++ linux-5.8.0/drivers/iio/dac/ad5592r-base.c @@ -413,7 +413,7 @@ s64 tmp = *val * (3767897513LL / 25LL); *val = div_s64_rem(tmp, 1000000000LL, val2); - ret = IIO_VAL_INT_PLUS_MICRO; + return IIO_VAL_INT_PLUS_MICRO; } else { int mult; @@ -444,7 +444,7 @@ ret = IIO_VAL_INT; break; default: - ret = -EINVAL; + return -EINVAL; } unlock: --- linux-5.8.0.orig/drivers/iio/gyro/itg3200_buffer.c +++ linux-5.8.0/drivers/iio/gyro/itg3200_buffer.c @@ -46,13 +46,20 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct itg3200 *st = iio_priv(indio_dev); - __be16 buf[ITG3200_SCAN_ELEMENTS + sizeof(s64)/sizeof(u16)]; + /* + * Ensure correct alignment and padding including for the + * timestamp that may be inserted. + */ + struct { + __be16 buf[ITG3200_SCAN_ELEMENTS]; + s64 ts __aligned(8); + } scan; - int ret = itg3200_read_all_channels(st->i2c, buf); + int ret = itg3200_read_all_channels(st->i2c, scan.buf); if (ret < 0) goto error_ret; - iio_push_to_buffers_with_timestamp(indio_dev, buf, pf->timestamp); + iio_push_to_buffers_with_timestamp(indio_dev, &scan, pf->timestamp); iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/gyro/mpu3050-core.c +++ linux-5.8.0/drivers/iio/gyro/mpu3050-core.c @@ -550,6 +550,8 @@ MPU3050_FIFO_R, &fifo_values[offset], toread); + if (ret) + goto out_trigger_unlock; dev_dbg(mpu3050->dev, "%04x %04x %04x %04x %04x\n", --- linux-5.8.0.orig/drivers/iio/humidity/hid-sensor-humidity.c +++ linux-5.8.0/drivers/iio/humidity/hid-sensor-humidity.c @@ -15,7 +15,10 @@ struct hid_humidity_state { struct hid_sensor_common common_attributes; struct hid_sensor_hub_attribute_info humidity_attr; - s32 humidity_data; + struct { + s32 humidity_data; + u64 timestamp __aligned(8); + } scan; int scale_pre_decml; int scale_post_decml; int scale_precision; @@ -125,9 +128,8 @@ struct hid_humidity_state *humid_st = iio_priv(indio_dev); if (atomic_read(&humid_st->common_attributes.data_ready)) - iio_push_to_buffers_with_timestamp(indio_dev, - &humid_st->humidity_data, - iio_get_time_ns(indio_dev)); + iio_push_to_buffers_with_timestamp(indio_dev, &humid_st->scan, + iio_get_time_ns(indio_dev)); return 0; } @@ -142,7 +144,7 @@ switch (usage_id) { case HID_USAGE_SENSOR_ATMOSPHERIC_HUMIDITY: - humid_st->humidity_data = *(s32 *)raw_data; + humid_st->scan.humidity_data = *(s32 *)raw_data; return 0; default: --- linux-5.8.0.orig/drivers/iio/imu/adis16400.c +++ linux-5.8.0/drivers/iio/imu/adis16400.c @@ -465,8 +465,7 @@ if (ret) goto err_ret; - ret = sscanf(indio_dev->name, "adis%u\n", &device_id); - if (ret != 1) { + if (sscanf(indio_dev->name, "adis%u\n", &device_id) != 1) { ret = -EINVAL; goto err_ret; } --- linux-5.8.0.orig/drivers/iio/imu/bmi160/bmi160.h +++ linux-5.8.0/drivers/iio/imu/bmi160/bmi160.h @@ -7,6 +7,13 @@ struct bmi160_data { struct regmap *regmap; struct iio_trigger *trig; + /* + * Ensure natural alignment for timestamp if present. + * Max length needed: 2 * 3 channels + 4 bytes padding + 8 byte ts. + * If fewer channels are enabled, less space may be needed, as + * long as the timestamp is still aligned to 8 bytes. + */ + __le16 buf[12] __aligned(8); }; extern const struct regmap_config bmi160_regmap_config; --- linux-5.8.0.orig/drivers/iio/imu/bmi160/bmi160_core.c +++ linux-5.8.0/drivers/iio/imu/bmi160/bmi160_core.c @@ -411,8 +411,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct bmi160_data *data = iio_priv(indio_dev); - __le16 buf[16]; - /* 3 sens x 3 axis x __le16 + 3 x __le16 pad + 4 x __le16 tstamp */ int i, ret, j = 0, base = BMI160_REG_DATA_MAGN_XOUT_L; __le16 sample; @@ -422,10 +420,10 @@ &sample, sizeof(sample)); if (ret) goto done; - buf[j++] = sample; + data->buf[j++] = sample; } - iio_push_to_buffers_with_timestamp(indio_dev, buf, pf->timestamp); + iio_push_to_buffers_with_timestamp(indio_dev, data->buf, pf->timestamp); done: iio_trigger_notify_done(indio_dev->trig); return IRQ_HANDLED; --- linux-5.8.0.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +++ linux-5.8.0/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h @@ -122,6 +122,13 @@ u8 user_ctrl; }; +/* + * Maximum of 6 + 6 + 2 + 7 (for MPU9x50) = 21 round up to 24 and plus 8. + * May be less if fewer channels are enabled, as long as the timestamp + * remains 8 byte aligned + */ +#define INV_MPU6050_OUTPUT_DATA_SIZE 32 + /** * struct inv_mpu6050_hw - Other important hardware information. * @whoami: Self identification byte from WHO_AM_I register @@ -165,6 +172,7 @@ * @magn_raw_to_gauss: coefficient to convert mag raw value to Gauss. * @magn_orient: magnetometer sensor chip orientation if available. * @suspended_sensors: sensors mask of sensors turned off for suspend + * @data: dma safe buffer used for bulk reads. */ struct inv_mpu6050_state { struct mutex lock; @@ -190,6 +198,7 @@ s32 magn_raw_to_gauss[3]; struct iio_mount_matrix magn_orient; unsigned int suspended_sensors; + u8 data[INV_MPU6050_OUTPUT_DATA_SIZE] ____cacheline_aligned; }; /*register and associated bit definition*/ @@ -334,9 +343,6 @@ #define INV_ICM20608_TEMP_OFFSET 8170 #define INV_ICM20608_TEMP_SCALE 3059976 -/* 6 + 6 + 2 + 7 (for MPU9x50) = 21 round up to 24 and plus 8 */ -#define INV_MPU6050_OUTPUT_DATA_SIZE 32 - #define INV_MPU6050_REG_INT_PIN_CFG 0x37 #define INV_MPU6050_ACTIVE_HIGH 0x00 #define INV_MPU6050_ACTIVE_LOW 0x80 --- linux-5.8.0.orig/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +++ linux-5.8.0/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c @@ -13,7 +13,6 @@ #include #include #include -#include #include "inv_mpu_iio.h" /** @@ -121,7 +120,6 @@ struct inv_mpu6050_state *st = iio_priv(indio_dev); size_t bytes_per_datum; int result; - u8 data[INV_MPU6050_OUTPUT_DATA_SIZE]; u16 fifo_count; s64 timestamp; int int_status; @@ -160,11 +158,11 @@ * read fifo_count register to know how many bytes are inside the FIFO * right now */ - result = regmap_bulk_read(st->map, st->reg->fifo_count_h, data, - INV_MPU6050_FIFO_COUNT_BYTE); + result = regmap_bulk_read(st->map, st->reg->fifo_count_h, + st->data, INV_MPU6050_FIFO_COUNT_BYTE); if (result) goto end_session; - fifo_count = get_unaligned_be16(&data[0]); + fifo_count = be16_to_cpup((__be16 *)&st->data[0]); /* * Handle fifo overflow by resetting fifo. @@ -182,7 +180,7 @@ inv_mpu6050_update_period(st, pf->timestamp, nb); for (i = 0; i < nb; ++i) { result = regmap_bulk_read(st->map, st->reg->fifo_r_w, - data, bytes_per_datum); + st->data, bytes_per_datum); if (result) goto flush_fifo; /* skip first samples if needed */ @@ -191,7 +189,7 @@ continue; } timestamp = inv_mpu6050_get_timestamp(st); - iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp); + iio_push_to_buffers_with_timestamp(indio_dev, st->data, timestamp); } end_session: --- linux-5.8.0.orig/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h +++ linux-5.8.0/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h @@ -383,6 +383,7 @@ * @iio_devs: Pointers to acc/gyro iio_dev instances. * @settings: Pointer to the specific sensor settings in use. * @orientation: sensor chip orientation relative to main hardware. + * @scan: Temporary buffers used to align data before iio_push_to_buffers() */ struct st_lsm6dsx_hw { struct device *dev; @@ -411,6 +412,11 @@ const struct st_lsm6dsx_settings *settings; struct iio_mount_matrix orientation; + /* Ensure natural alignment of buffer elements */ + struct { + __le16 channels[3]; + s64 ts __aligned(8); + } scan[3]; }; static __maybe_unused const struct iio_event_spec st_lsm6dsx_event = { @@ -436,8 +442,7 @@ u16 watermark); int st_lsm6dsx_update_fifo(struct st_lsm6dsx_sensor *sensor, bool enable); int st_lsm6dsx_flush_fifo(struct st_lsm6dsx_hw *hw); -int st_lsm6dsx_set_fifo_mode(struct st_lsm6dsx_hw *hw, - enum st_lsm6dsx_fifo_mode fifo_mode); +int st_lsm6dsx_resume_fifo(struct st_lsm6dsx_hw *hw); int st_lsm6dsx_read_fifo(struct st_lsm6dsx_hw *hw); int st_lsm6dsx_read_tagged_fifo(struct st_lsm6dsx_hw *hw); int st_lsm6dsx_check_odr(struct st_lsm6dsx_sensor *sensor, u32 odr, u8 *val); --- linux-5.8.0.orig/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +++ linux-5.8.0/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c @@ -184,8 +184,8 @@ return err; } -int st_lsm6dsx_set_fifo_mode(struct st_lsm6dsx_hw *hw, - enum st_lsm6dsx_fifo_mode fifo_mode) +static int st_lsm6dsx_set_fifo_mode(struct st_lsm6dsx_hw *hw, + enum st_lsm6dsx_fifo_mode fifo_mode) { unsigned int data; @@ -302,6 +302,18 @@ return 0; } +int st_lsm6dsx_resume_fifo(struct st_lsm6dsx_hw *hw) +{ + int err; + + /* reset hw ts counter */ + err = st_lsm6dsx_reset_hw_ts(hw); + if (err < 0) + return err; + + return st_lsm6dsx_set_fifo_mode(hw, ST_LSM6DSX_FIFO_CONT); +} + /* * Set max bulk read to ST_LSM6DSX_MAX_WORD_LEN/ST_LSM6DSX_MAX_TAGGED_WORD_LEN * in order to avoid a kmalloc for each bus access @@ -341,9 +353,6 @@ int err, sip, acc_sip, gyro_sip, ts_sip, ext_sip, read_len, offset; u16 fifo_len, pattern_len = hw->sip * ST_LSM6DSX_SAMPLE_SIZE; u16 fifo_diff_mask = hw->settings->fifo_ops.fifo_diff.mask; - u8 gyro_buff[ST_LSM6DSX_IIO_BUFF_SIZE]; - u8 acc_buff[ST_LSM6DSX_IIO_BUFF_SIZE]; - u8 ext_buff[ST_LSM6DSX_IIO_BUFF_SIZE]; bool reset_ts = false; __le16 fifo_status; s64 ts = 0; @@ -404,19 +413,22 @@ while (acc_sip > 0 || gyro_sip > 0 || ext_sip > 0) { if (gyro_sip > 0 && !(sip % gyro_sensor->decimator)) { - memcpy(gyro_buff, &hw->buff[offset], - ST_LSM6DSX_SAMPLE_SIZE); - offset += ST_LSM6DSX_SAMPLE_SIZE; + memcpy(hw->scan[ST_LSM6DSX_ID_GYRO].channels, + &hw->buff[offset], + sizeof(hw->scan[ST_LSM6DSX_ID_GYRO].channels)); + offset += sizeof(hw->scan[ST_LSM6DSX_ID_GYRO].channels); } if (acc_sip > 0 && !(sip % acc_sensor->decimator)) { - memcpy(acc_buff, &hw->buff[offset], - ST_LSM6DSX_SAMPLE_SIZE); - offset += ST_LSM6DSX_SAMPLE_SIZE; + memcpy(hw->scan[ST_LSM6DSX_ID_ACC].channels, + &hw->buff[offset], + sizeof(hw->scan[ST_LSM6DSX_ID_ACC].channels)); + offset += sizeof(hw->scan[ST_LSM6DSX_ID_ACC].channels); } if (ext_sip > 0 && !(sip % ext_sensor->decimator)) { - memcpy(ext_buff, &hw->buff[offset], - ST_LSM6DSX_SAMPLE_SIZE); - offset += ST_LSM6DSX_SAMPLE_SIZE; + memcpy(hw->scan[ST_LSM6DSX_ID_EXT0].channels, + &hw->buff[offset], + sizeof(hw->scan[ST_LSM6DSX_ID_EXT0].channels)); + offset += sizeof(hw->scan[ST_LSM6DSX_ID_EXT0].channels); } if (ts_sip-- > 0) { @@ -446,19 +458,22 @@ if (gyro_sip > 0 && !(sip % gyro_sensor->decimator)) { iio_push_to_buffers_with_timestamp( hw->iio_devs[ST_LSM6DSX_ID_GYRO], - gyro_buff, gyro_sensor->ts_ref + ts); + &hw->scan[ST_LSM6DSX_ID_GYRO], + gyro_sensor->ts_ref + ts); gyro_sip--; } if (acc_sip > 0 && !(sip % acc_sensor->decimator)) { iio_push_to_buffers_with_timestamp( hw->iio_devs[ST_LSM6DSX_ID_ACC], - acc_buff, acc_sensor->ts_ref + ts); + &hw->scan[ST_LSM6DSX_ID_ACC], + acc_sensor->ts_ref + ts); acc_sip--; } if (ext_sip > 0 && !(sip % ext_sensor->decimator)) { iio_push_to_buffers_with_timestamp( hw->iio_devs[ST_LSM6DSX_ID_EXT0], - ext_buff, ext_sensor->ts_ref + ts); + &hw->scan[ST_LSM6DSX_ID_EXT0], + ext_sensor->ts_ref + ts); ext_sip--; } sip++; @@ -543,7 +558,14 @@ { u16 pattern_len = hw->sip * ST_LSM6DSX_TAGGED_SAMPLE_SIZE; u16 fifo_len, fifo_diff_mask; - u8 iio_buff[ST_LSM6DSX_IIO_BUFF_SIZE], tag; + /* + * Alignment needed as this can ultimately be passed to a + * call to iio_push_to_buffers_with_timestamp() which + * must be passed a buffer that is aligned to 8 bytes so + * as to allow insertion of a naturally aligned timestamp. + */ + u8 iio_buff[ST_LSM6DSX_IIO_BUFF_SIZE] __aligned(8); + u8 tag; bool reset_ts = false; int i, err, read_len; __le16 fifo_status; @@ -675,12 +697,7 @@ goto out; if (fifo_mask) { - /* reset hw ts counter */ - err = st_lsm6dsx_reset_hw_ts(hw); - if (err < 0) - goto out; - - err = st_lsm6dsx_set_fifo_mode(hw, ST_LSM6DSX_FIFO_CONT); + err = st_lsm6dsx_resume_fifo(hw); if (err < 0) goto out; } --- linux-5.8.0.orig/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +++ linux-5.8.0/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c @@ -2236,19 +2236,35 @@ static irqreturn_t st_lsm6dsx_handler_thread(int irq, void *private) { struct st_lsm6dsx_hw *hw = private; + int fifo_len = 0, len; bool event; - int count; event = st_lsm6dsx_report_motion_event(hw); if (!hw->settings->fifo_ops.read_fifo) return event ? IRQ_HANDLED : IRQ_NONE; - mutex_lock(&hw->fifo_lock); - count = hw->settings->fifo_ops.read_fifo(hw); - mutex_unlock(&hw->fifo_lock); + /* + * If we are using edge IRQs, new samples can arrive while + * processing current interrupt since there are no hw + * guarantees the irq line stays "low" long enough to properly + * detect the new interrupt. In this case the new sample will + * be missed. + * Polling FIFO status register allow us to read new + * samples even if the interrupt arrives while processing + * previous data and the timeslot where the line is "low" is + * too short to be properly detected. + */ + do { + mutex_lock(&hw->fifo_lock); + len = hw->settings->fifo_ops.read_fifo(hw); + mutex_unlock(&hw->fifo_lock); + + if (len > 0) + fifo_len += len; + } while (len > 0); - return count || event ? IRQ_HANDLED : IRQ_NONE; + return fifo_len || event ? IRQ_HANDLED : IRQ_NONE; } static int st_lsm6dsx_irq_setup(struct st_lsm6dsx_hw *hw) @@ -2458,7 +2474,7 @@ } if (hw->fifo_mask) - err = st_lsm6dsx_set_fifo_mode(hw, ST_LSM6DSX_FIFO_CONT); + err = st_lsm6dsx_resume_fifo(hw); return err; } --- linux-5.8.0.orig/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c +++ linux-5.8.0/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c @@ -156,11 +156,13 @@ static void st_lsm6dsx_shub_wait_complete(struct st_lsm6dsx_hw *hw) { struct st_lsm6dsx_sensor *sensor; - u32 odr; + u32 odr, timeout; sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]); odr = (hw->enable_mask & BIT(ST_LSM6DSX_ID_ACC)) ? sensor->odr : 12500; - msleep((2000000U / odr) + 1); + /* set 10ms as minimum timeout for i2c slave configuration */ + timeout = max_t(u32, 2000000U / odr + 1, 10); + msleep(timeout); } /** @@ -313,6 +315,8 @@ err = st_lsm6dsx_shub_read_output(hw, data, len & ST_LS6DSX_READ_OP_MASK); + if (err < 0) + return err; st_lsm6dsx_shub_master_enable(sensor, false); --- linux-5.8.0.orig/drivers/iio/industrialio-buffer.c +++ linux-5.8.0/drivers/iio/industrialio-buffer.c @@ -859,12 +859,12 @@ indio_dev->masklength, in_ind + 1); while (in_ind != out_ind) { - in_ind = find_next_bit(indio_dev->active_scan_mask, - indio_dev->masklength, - in_ind + 1); length = iio_storage_bytes_for_si(indio_dev, in_ind); /* Make sure we are aligned */ in_loc = roundup(in_loc, length) + length; + in_ind = find_next_bit(indio_dev->active_scan_mask, + indio_dev->masklength, + in_ind + 1); } length = iio_storage_bytes_for_si(indio_dev, in_ind); out_loc = roundup(out_loc, length); --- linux-5.8.0.orig/drivers/iio/light/Kconfig +++ linux-5.8.0/drivers/iio/light/Kconfig @@ -529,6 +529,7 @@ config VCNL4035 tristate "VCNL4035 combined ALS and proximity sensor" + select IIO_BUFFER select IIO_TRIGGERED_BUFFER select REGMAP_I2C depends on I2C --- linux-5.8.0.orig/drivers/iio/light/hid-sensor-prox.c +++ linux-5.8.0/drivers/iio/light/hid-sensor-prox.c @@ -23,6 +23,9 @@ struct hid_sensor_common common_attributes; struct hid_sensor_hub_attribute_info prox_attr; u32 human_presence; + int scale_pre_decml; + int scale_post_decml; + int scale_precision; }; /* Channel definitions */ @@ -93,8 +96,9 @@ ret_type = IIO_VAL_INT; break; case IIO_CHAN_INFO_SCALE: - *val = prox_state->prox_attr.units; - ret_type = IIO_VAL_INT; + *val = prox_state->scale_pre_decml; + *val2 = prox_state->scale_post_decml; + ret_type = prox_state->scale_precision; break; case IIO_CHAN_INFO_OFFSET: *val = hid_sensor_convert_exponent( @@ -234,6 +238,11 @@ HID_USAGE_SENSOR_HUMAN_PRESENCE, &st->common_attributes.sensitivity); + st->scale_precision = hid_sensor_format_scale( + hsdev->usage, + &st->prox_attr, + &st->scale_pre_decml, &st->scale_post_decml); + return ret; } --- linux-5.8.0.orig/drivers/iio/light/ltr501.c +++ linux-5.8.0/drivers/iio/light/ltr501.c @@ -1243,13 +1243,16 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct ltr501_data *data = iio_priv(indio_dev); - u16 buf[8]; + struct { + u16 channels[3]; + s64 ts __aligned(8); + } scan; __le16 als_buf[2]; u8 mask = 0; int j = 0; int ret, psdata; - memset(buf, 0, sizeof(buf)); + memset(&scan, 0, sizeof(scan)); /* figure out which data needs to be ready */ if (test_bit(0, indio_dev->active_scan_mask) || @@ -1268,9 +1271,9 @@ if (ret < 0) return ret; if (test_bit(0, indio_dev->active_scan_mask)) - buf[j++] = le16_to_cpu(als_buf[1]); + scan.channels[j++] = le16_to_cpu(als_buf[1]); if (test_bit(1, indio_dev->active_scan_mask)) - buf[j++] = le16_to_cpu(als_buf[0]); + scan.channels[j++] = le16_to_cpu(als_buf[0]); } if (mask & LTR501_STATUS_PS_RDY) { @@ -1278,10 +1281,10 @@ &psdata, 2); if (ret < 0) goto done; - buf[j++] = psdata & LTR501_PS_DATA_MASK; + scan.channels[j++] = psdata & LTR501_PS_DATA_MASK; } - iio_push_to_buffers_with_timestamp(indio_dev, buf, + iio_push_to_buffers_with_timestamp(indio_dev, &scan, iio_get_time_ns(indio_dev)); done: --- linux-5.8.0.orig/drivers/iio/light/max44000.c +++ linux-5.8.0/drivers/iio/light/max44000.c @@ -75,6 +75,11 @@ struct max44000_data { struct mutex lock; struct regmap *regmap; + /* Ensure naturally aligned timestamp */ + struct { + u16 channels[2]; + s64 ts __aligned(8); + } scan; }; /* Default scale is set to the minimum of 0.03125 or 1 / (1 << 5) lux */ @@ -488,7 +493,6 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct max44000_data *data = iio_priv(indio_dev); - u16 buf[8]; /* 2x u16 + padding + 8 bytes timestamp */ int index = 0; unsigned int regval; int ret; @@ -498,17 +502,17 @@ ret = max44000_read_alsval(data); if (ret < 0) goto out_unlock; - buf[index++] = ret; + data->scan.channels[index++] = ret; } if (test_bit(MAX44000_SCAN_INDEX_PRX, indio_dev->active_scan_mask)) { ret = regmap_read(data->regmap, MAX44000_REG_PRX_DATA, ®val); if (ret < 0) goto out_unlock; - buf[index] = regval; + data->scan.channels[index] = regval; } mutex_unlock(&data->lock); - iio_push_to_buffers_with_timestamp(indio_dev, buf, + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, iio_get_time_ns(indio_dev)); iio_trigger_notify_done(indio_dev->trig); return IRQ_HANDLED; --- linux-5.8.0.orig/drivers/iio/light/rpr0521.c +++ linux-5.8.0/drivers/iio/light/rpr0521.c @@ -194,6 +194,17 @@ bool pxs_need_dis; struct regmap *regmap; + + /* + * Ensure correct naturally aligned timestamp. + * Note that the read will put garbage data into + * the padding but this should not be a problem + */ + struct { + __le16 channels[3]; + u8 garbage; + s64 ts __aligned(8); + } scan; }; static IIO_CONST_ATTR(in_intensity_scale_available, RPR0521_ALS_SCALE_AVAIL); @@ -449,8 +460,6 @@ struct rpr0521_data *data = iio_priv(indio_dev); int err; - u8 buffer[16]; /* 3 16-bit channels + padding + ts */ - /* Use irq timestamp when reasonable. */ if (iio_trigger_using_own(indio_dev) && data->irq_timestamp) { pf->timestamp = data->irq_timestamp; @@ -461,11 +470,11 @@ pf->timestamp = iio_get_time_ns(indio_dev); err = regmap_bulk_read(data->regmap, RPR0521_REG_PXS_DATA, - &buffer, + data->scan.channels, (3 * 2) + 1); /* 3 * 16-bit + (discarded) int clear reg. */ if (!err) iio_push_to_buffers_with_timestamp(indio_dev, - buffer, pf->timestamp); + &data->scan, pf->timestamp); else dev_err(&data->client->dev, "Trigger consumer can't read from sensor.\n"); --- linux-5.8.0.orig/drivers/iio/light/si1145.c +++ linux-5.8.0/drivers/iio/light/si1145.c @@ -168,6 +168,7 @@ * @part_info: Part information * @trig: Pointer to iio trigger * @meas_rate: Value of MEAS_RATE register. Only set in HW in auto mode + * @buffer: Used to pack data read from sensor. */ struct si1145_data { struct i2c_client *client; @@ -179,6 +180,14 @@ bool autonomous; struct iio_trigger *trig; int meas_rate; + /* + * Ensure timestamp will be naturally aligned if present. + * Maximum buffer size (may be only partly used if not all + * channels are enabled): + * 6*2 bytes channels data + 4 bytes alignment + + * 8 bytes timestamp + */ + u8 buffer[24] __aligned(8); }; /** @@ -440,12 +449,6 @@ struct iio_poll_func *pf = private; struct iio_dev *indio_dev = pf->indio_dev; struct si1145_data *data = iio_priv(indio_dev); - /* - * Maximum buffer size: - * 6*2 bytes channels data + 4 bytes alignment + - * 8 bytes timestamp - */ - u8 buffer[24]; int i, j = 0; int ret; u8 irq_status = 0; @@ -478,7 +481,7 @@ ret = i2c_smbus_read_i2c_block_data_or_emulated( data->client, indio_dev->channels[i].address, - sizeof(u16) * run, &buffer[j]); + sizeof(u16) * run, &data->buffer[j]); if (ret < 0) goto done; j += run * sizeof(u16); @@ -493,7 +496,7 @@ goto done; } - iio_push_to_buffers_with_timestamp(indio_dev, buffer, + iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, iio_get_time_ns(indio_dev)); done: --- linux-5.8.0.orig/drivers/iio/light/st_uvis25.h +++ linux-5.8.0/drivers/iio/light/st_uvis25.h @@ -27,6 +27,11 @@ struct iio_trigger *trig; bool enabled; int irq; + /* Ensure timestamp is naturally aligned */ + struct { + u8 chan; + s64 ts __aligned(8); + } scan; }; extern const struct dev_pm_ops st_uvis25_pm_ops; --- linux-5.8.0.orig/drivers/iio/light/st_uvis25_core.c +++ linux-5.8.0/drivers/iio/light/st_uvis25_core.c @@ -234,17 +234,19 @@ static irqreturn_t st_uvis25_buffer_handler_thread(int irq, void *p) { - u8 buffer[ALIGN(sizeof(u8), sizeof(s64)) + sizeof(s64)]; struct iio_poll_func *pf = p; struct iio_dev *iio_dev = pf->indio_dev; struct st_uvis25_hw *hw = iio_priv(iio_dev); + unsigned int val; int err; - err = regmap_read(hw->regmap, ST_UVIS25_REG_OUT_ADDR, (int *)buffer); + err = regmap_read(hw->regmap, ST_UVIS25_REG_OUT_ADDR, &val); if (err < 0) goto out; - iio_push_to_buffers_with_timestamp(iio_dev, buffer, + hw->scan.chan = val; + + iio_push_to_buffers_with_timestamp(iio_dev, &hw->scan, iio_get_time_ns(iio_dev)); out: --- linux-5.8.0.orig/drivers/iio/magnetometer/ak8975.c +++ linux-5.8.0/drivers/iio/magnetometer/ak8975.c @@ -365,6 +365,12 @@ struct iio_mount_matrix orientation; struct regulator *vdd; struct regulator *vid; + + /* Ensure natural alignment of timestamp */ + struct { + s16 channels[3]; + s64 ts __aligned(8); + } scan; }; /* Enable attached power regulator if any. */ @@ -787,7 +793,6 @@ const struct i2c_client *client = data->client; const struct ak_def *def = data->def; int ret; - s16 buff[8]; /* 3 x 16 bits axis values + 1 aligned 64 bits timestamp */ __le16 fval[3]; mutex_lock(&data->lock); @@ -810,12 +815,13 @@ mutex_unlock(&data->lock); /* Clamp to valid range. */ - buff[0] = clamp_t(s16, le16_to_cpu(fval[0]), -def->range, def->range); - buff[1] = clamp_t(s16, le16_to_cpu(fval[1]), -def->range, def->range); - buff[2] = clamp_t(s16, le16_to_cpu(fval[2]), -def->range, def->range); + data->scan.channels[0] = clamp_t(s16, le16_to_cpu(fval[0]), -def->range, def->range); + data->scan.channels[1] = clamp_t(s16, le16_to_cpu(fval[1]), -def->range, def->range); + data->scan.channels[2] = clamp_t(s16, le16_to_cpu(fval[2]), -def->range, def->range); - iio_push_to_buffers_with_timestamp(indio_dev, buff, + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, iio_get_time_ns(indio_dev)); + return; unlock: --- linux-5.8.0.orig/drivers/iio/magnetometer/mag3110.c +++ linux-5.8.0/drivers/iio/magnetometer/mag3110.c @@ -56,6 +56,12 @@ int sleep_val; struct regulator *vdd_reg; struct regulator *vddio_reg; + /* Ensure natural alignment of timestamp */ + struct { + __be16 channels[3]; + u8 temperature; + s64 ts __aligned(8); + } scan; }; static int mag3110_request(struct mag3110_data *data) @@ -387,10 +393,9 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct mag3110_data *data = iio_priv(indio_dev); - u8 buffer[16]; /* 3 16-bit channels + 1 byte temp + padding + ts */ int ret; - ret = mag3110_read(data, (__be16 *) buffer); + ret = mag3110_read(data, data->scan.channels); if (ret < 0) goto done; @@ -399,10 +404,10 @@ MAG3110_DIE_TEMP); if (ret < 0) goto done; - buffer[6] = ret; + data->scan.temperature = ret; } - iio_push_to_buffers_with_timestamp(indio_dev, buffer, + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, iio_get_time_ns(indio_dev)); done: --- linux-5.8.0.orig/drivers/iio/pressure/mpl3115.c +++ linux-5.8.0/drivers/iio/pressure/mpl3115.c @@ -144,7 +144,14 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct mpl3115_data *data = iio_priv(indio_dev); - u8 buffer[16]; /* 32-bit channel + 16-bit channel + padding + ts */ + /* + * 32-bit channel + 16-bit channel + padding + ts + * Note that it is possible for only one of the first 2 + * channels to be enabled. If that happens, the first element + * of the buffer may be either 16 or 32-bits. As such we cannot + * use a simple structure definition to express this data layout. + */ + u8 buffer[16] __aligned(8); int ret, pos = 0; mutex_lock(&data->lock); --- linux-5.8.0.orig/drivers/iio/proximity/mb1232.c +++ linux-5.8.0/drivers/iio/proximity/mb1232.c @@ -40,6 +40,11 @@ */ struct completion ranging; int irqnr; + /* Ensure correct alignment of data to push to IIO buffer */ + struct { + s16 distance; + s64 ts __aligned(8); + } scan; }; static irqreturn_t mb1232_handle_irq(int irq, void *dev_id) @@ -113,17 +118,13 @@ struct iio_poll_func *pf = p; struct iio_dev *indio_dev = pf->indio_dev; struct mb1232_data *data = iio_priv(indio_dev); - /* - * triggered buffer - * 16-bit channel + 48-bit padding + 64-bit timestamp - */ - s16 buffer[8] = { 0 }; - buffer[0] = mb1232_read_distance(data); - if (buffer[0] < 0) + data->scan.distance = mb1232_read_distance(data); + if (data->scan.distance < 0) goto err; - iio_push_to_buffers_with_timestamp(indio_dev, buffer, pf->timestamp); + iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, + pf->timestamp); err: iio_trigger_notify_done(indio_dev->trig); --- linux-5.8.0.orig/drivers/iio/temperature/hid-sensor-temperature.c +++ linux-5.8.0/drivers/iio/temperature/hid-sensor-temperature.c @@ -15,7 +15,10 @@ struct temperature_state { struct hid_sensor_common common_attributes; struct hid_sensor_hub_attribute_info temperature_attr; - s32 temperature_data; + struct { + s32 temperature_data; + u64 timestamp __aligned(8); + } scan; int scale_pre_decml; int scale_post_decml; int scale_precision; @@ -32,7 +35,7 @@ BIT(IIO_CHAN_INFO_SAMP_FREQ) | BIT(IIO_CHAN_INFO_HYSTERESIS), }, - IIO_CHAN_SOFT_TIMESTAMP(3), + IIO_CHAN_SOFT_TIMESTAMP(1), }; /* Adjust channel real bits based on report descriptor */ @@ -123,9 +126,8 @@ struct temperature_state *temp_st = iio_priv(indio_dev); if (atomic_read(&temp_st->common_attributes.data_ready)) - iio_push_to_buffers_with_timestamp(indio_dev, - &temp_st->temperature_data, - iio_get_time_ns(indio_dev)); + iio_push_to_buffers_with_timestamp(indio_dev, &temp_st->scan, + iio_get_time_ns(indio_dev)); return 0; } @@ -140,7 +142,7 @@ switch (usage_id) { case HID_USAGE_SENSOR_DATA_ENVIRONMENTAL_TEMPERATURE: - temp_st->temperature_data = *(s32 *)raw_data; + temp_st->scan.temperature_data = *(s32 *)raw_data; return 0; default: return -EINVAL; --- linux-5.8.0.orig/drivers/iio/temperature/ltc2983.c +++ linux-5.8.0/drivers/iio/temperature/ltc2983.c @@ -1285,18 +1285,20 @@ ret = of_property_read_u32(child, "reg", &sensor.chan); if (ret) { dev_err(dev, "reg property must given for child nodes\n"); - return ret; + goto put_child; } /* check if we have a valid channel */ if (sensor.chan < LTC2983_MIN_CHANNELS_NR || sensor.chan > LTC2983_MAX_CHANNELS_NR) { + ret = -EINVAL; dev_err(dev, "chan:%d must be from 1 to 20\n", sensor.chan); - return -EINVAL; + goto put_child; } else if (channel_avail_mask & BIT(sensor.chan)) { + ret = -EINVAL; dev_err(dev, "chan:%d already in use\n", sensor.chan); - return -EINVAL; + goto put_child; } ret = of_property_read_u32(child, "adi,sensor-type", @@ -1304,7 +1306,7 @@ if (ret) { dev_err(dev, "adi,sensor-type property must given for child nodes\n"); - return ret; + goto put_child; } dev_dbg(dev, "Create new sensor, type %u, chann %u", @@ -1334,13 +1336,15 @@ st->sensors[chan] = ltc2983_adc_new(child, st, &sensor); } else { dev_err(dev, "Unknown sensor type %d\n", sensor.type); - return -EINVAL; + ret = -EINVAL; + goto put_child; } if (IS_ERR(st->sensors[chan])) { dev_err(dev, "Failed to create sensor %ld", PTR_ERR(st->sensors[chan])); - return PTR_ERR(st->sensors[chan]); + ret = PTR_ERR(st->sensors[chan]); + goto put_child; } /* set generic sensor parameters */ st->sensors[chan]->chan = sensor.chan; @@ -1351,6 +1355,9 @@ } return 0; +put_child: + of_node_put(child); + return ret; } static int ltc2983_setup(struct ltc2983_data *st, bool assign_iio) --- linux-5.8.0.orig/drivers/iio/trigger/iio-trig-hrtimer.c +++ linux-5.8.0/drivers/iio/trigger/iio-trig-hrtimer.c @@ -102,7 +102,7 @@ if (state) hrtimer_start(&trig_info->timer, trig_info->period, - HRTIMER_MODE_REL); + HRTIMER_MODE_REL_HARD); else hrtimer_cancel(&trig_info->timer); @@ -132,7 +132,7 @@ trig_info->swt.trigger->ops = &iio_hrtimer_trigger_ops; trig_info->swt.trigger->dev.groups = iio_hrtimer_attr_groups; - hrtimer_init(&trig_info->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + hrtimer_init(&trig_info->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); trig_info->timer.function = iio_hrtimer_trig_handler; trig_info->sampling_frequency = HRTIMER_DEFAULT_SAMPLING_FREQUENCY; --- linux-5.8.0.orig/drivers/infiniband/Kconfig +++ linux-5.8.0/drivers/infiniband/Kconfig @@ -80,6 +80,9 @@ This allows the user to config the default GID type that the CM uses for each device, when initiaing new connections. +config INFINIBAND_VIRT_DMA + def_bool !HIGHMEM + if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS source "drivers/infiniband/hw/mthca/Kconfig" source "drivers/infiniband/hw/qib/Kconfig" --- linux-5.8.0.orig/drivers/infiniband/core/addr.c +++ linux-5.8.0/drivers/infiniband/core/addr.c @@ -647,13 +647,12 @@ req->callback = NULL; spin_lock_bh(&lock); + /* + * Although the work will normally have been canceled by the workqueue, + * it can still be requeued as long as it is on the req_list. + */ + cancel_delayed_work(&req->work); if (!list_empty(&req->list)) { - /* - * Although the work will normally have been canceled by the - * workqueue, it can still be requeued as long as it is on the - * req_list. - */ - cancel_delayed_work(&req->work); list_del_init(&req->list); kfree(req); } --- linux-5.8.0.orig/drivers/infiniband/core/cm.c +++ linux-5.8.0/drivers/infiniband/core/cm.c @@ -1522,6 +1522,7 @@ id.local_id); if (IS_ERR(cm_id_priv->timewait_info)) { ret = PTR_ERR(cm_id_priv->timewait_info); + cm_id_priv->timewait_info = NULL; goto out; } @@ -2109,6 +2110,7 @@ id.local_id); if (IS_ERR(cm_id_priv->timewait_info)) { ret = PTR_ERR(cm_id_priv->timewait_info); + cm_id_priv->timewait_info = NULL; goto destroy; } cm_id_priv->timewait_info->work.remote_id = cm_id_priv->id.remote_id; @@ -3652,6 +3654,7 @@ struct ib_cm_sidr_rep_param *param) { struct ib_mad_send_buf *msg; + unsigned long flags; int ret; lockdep_assert_held(&cm_id_priv->lock); @@ -3676,12 +3679,12 @@ return ret; } cm_id_priv->id.state = IB_CM_IDLE; - spin_lock_irq(&cm.lock); + spin_lock_irqsave(&cm.lock, flags); if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) { rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table); RB_CLEAR_NODE(&cm_id_priv->sidr_id_node); } - spin_unlock_irq(&cm.lock); + spin_unlock_irqrestore(&cm.lock, flags); return 0; } @@ -4355,7 +4358,7 @@ unsigned long flags; int ret; int count = 0; - u8 i; + unsigned int i; cm_dev = kzalloc(struct_size(cm_dev, port, ib_device->phys_port_cnt), GFP_KERNEL); @@ -4367,7 +4370,7 @@ cm_dev->going_down = 0; set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask); - for (i = 1; i <= ib_device->phys_port_cnt; i++) { + rdma_for_each_port (ib_device, i) { if (!rdma_cap_ib_cm(ib_device, i)) continue; @@ -4453,7 +4456,7 @@ .clr_port_cap_mask = IB_PORT_CM_SUP }; unsigned long flags; - int i; + unsigned int i; write_lock_irqsave(&cm.device_lock, flags); list_del(&cm_dev->list); @@ -4463,7 +4466,7 @@ cm_dev->going_down = 1; spin_unlock_irq(&cm.lock); - for (i = 1; i <= ib_device->phys_port_cnt; i++) { + rdma_for_each_port (ib_device, i) { if (!rdma_cap_ib_cm(ib_device, i)) continue; --- linux-5.8.0.orig/drivers/infiniband/core/cma.c +++ linux-5.8.0/drivers/infiniband/core/cma.c @@ -68,6 +68,9 @@ [RDMA_CM_EVENT_TIMEWAIT_EXIT] = "timewait exit", }; +static void cma_set_mgid(struct rdma_id_private *id_priv, struct sockaddr *addr, + union ib_gid *mgid); + const char *__attribute_const__ rdma_event_msg(enum rdma_cm_event_type event) { size_t index = event; @@ -346,12 +349,15 @@ struct cma_multicast { struct rdma_id_private *id_priv; union { - struct ib_sa_multicast *ib; - } multicast; + struct ib_sa_multicast *sa_mc; + struct { + struct work_struct work; + struct rdma_cm_event event; + } iboe_join; + }; struct list_head list; void *context; struct sockaddr_storage addr; - struct kref mcref; u8 join_state; }; @@ -363,18 +369,6 @@ struct rdma_cm_event event; }; -struct cma_ndev_work { - struct work_struct work; - struct rdma_id_private *id; - struct rdma_cm_event event; -}; - -struct iboe_mcast_work { - struct work_struct work; - struct rdma_id_private *id; - struct cma_multicast *mc; -}; - union cma_ip_addr { struct in6_addr ip6; struct { @@ -428,19 +422,6 @@ return ret; } -static enum rdma_cm_state cma_exch(struct rdma_id_private *id_priv, - enum rdma_cm_state exch) -{ - unsigned long flags; - enum rdma_cm_state old; - - spin_lock_irqsave(&id_priv->lock, flags); - old = id_priv->state; - id_priv->state = exch; - spin_unlock_irqrestore(&id_priv->lock, flags); - return old; -} - static inline u8 cma_get_ip_ver(const struct cma_hdr *hdr) { return hdr->ip_version >> 4; @@ -496,20 +477,16 @@ rdma_start_port(cma_dev->device)]; } -static inline void release_mc(struct kref *kref) -{ - struct cma_multicast *mc = container_of(kref, struct cma_multicast, mcref); - - kfree(mc->multicast.ib); - kfree(mc); -} - static void cma_release_dev(struct rdma_id_private *id_priv) { mutex_lock(&lock); list_del(&id_priv->list); cma_dev_put(id_priv->cma_dev); id_priv->cma_dev = NULL; + if (id_priv->id.route.addr.dev_addr.sgid_attr) { + rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr); + id_priv->id.route.addr.dev_addr.sgid_attr = NULL; + } mutex_unlock(&lock); } @@ -1796,19 +1773,32 @@ mutex_unlock(&lock); } -static void cma_leave_roce_mc_group(struct rdma_id_private *id_priv, - struct cma_multicast *mc) +static void destroy_mc(struct rdma_id_private *id_priv, + struct cma_multicast *mc) { - struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; - struct net_device *ndev = NULL; + if (rdma_cap_ib_mcast(id_priv->id.device, id_priv->id.port_num)) + ib_sa_free_multicast(mc->sa_mc); - if (dev_addr->bound_dev_if) - ndev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); - if (ndev) { - cma_igmp_send(ndev, &mc->multicast.ib->rec.mgid, false); - dev_put(ndev); + if (rdma_protocol_roce(id_priv->id.device, id_priv->id.port_num)) { + struct rdma_dev_addr *dev_addr = + &id_priv->id.route.addr.dev_addr; + struct net_device *ndev = NULL; + + if (dev_addr->bound_dev_if) + ndev = dev_get_by_index(dev_addr->net, + dev_addr->bound_dev_if); + if (ndev) { + union ib_gid mgid; + + cma_set_mgid(id_priv, (struct sockaddr *)&mc->addr, + &mgid); + cma_igmp_send(ndev, &mgid, false); + dev_put(ndev); + } + + cancel_work_sync(&mc->iboe_join.work); } - kref_put(&mc->mcref, release_mc); + kfree(mc); } static void cma_leave_mc_groups(struct rdma_id_private *id_priv) @@ -1816,36 +1806,18 @@ struct cma_multicast *mc; while (!list_empty(&id_priv->mc_list)) { - mc = container_of(id_priv->mc_list.next, - struct cma_multicast, list); + mc = list_first_entry(&id_priv->mc_list, struct cma_multicast, + list); list_del(&mc->list); - if (rdma_cap_ib_mcast(id_priv->cma_dev->device, - id_priv->id.port_num)) { - ib_sa_free_multicast(mc->multicast.ib); - kfree(mc); - } else { - cma_leave_roce_mc_group(id_priv, mc); - } + destroy_mc(id_priv, mc); } } -void rdma_destroy_id(struct rdma_cm_id *id) +static void _destroy_id(struct rdma_id_private *id_priv, + enum rdma_cm_state state) { - struct rdma_id_private *id_priv; - enum rdma_cm_state state; - - id_priv = container_of(id, struct rdma_id_private, id); - trace_cm_id_destroy(id_priv); - state = cma_exch(id_priv, RDMA_CM_DESTROYING); cma_cancel_operation(id_priv, state); - /* - * Wait for any active callback to finish. New callbacks will find - * the id_priv state set to destroying and abort. - */ - mutex_lock(&id_priv->handler_mutex); - mutex_unlock(&id_priv->handler_mutex); - rdma_restrack_del(&id_priv->res); if (id_priv->cma_dev) { if (rdma_cap_ib_cm(id_priv->id.device, 1)) { @@ -1868,12 +1840,45 @@ kfree(id_priv->id.route.path_rec); - if (id_priv->id.route.addr.dev_addr.sgid_attr) - rdma_put_gid_attr(id_priv->id.route.addr.dev_addr.sgid_attr); - put_net(id_priv->id.route.addr.dev_addr.net); kfree(id_priv); } + +/* + * destroy an ID from within the handler_mutex. This ensures that no other + * handlers can start running concurrently. + */ +static void destroy_id_handler_unlock(struct rdma_id_private *id_priv) + __releases(&idprv->handler_mutex) +{ + enum rdma_cm_state state; + unsigned long flags; + + trace_cm_id_destroy(id_priv); + + /* + * Setting the state to destroyed under the handler mutex provides a + * fence against calling handler callbacks. If this is invoked due to + * the failure of a handler callback then it guarentees that no future + * handlers will be called. + */ + lockdep_assert_held(&id_priv->handler_mutex); + spin_lock_irqsave(&id_priv->lock, flags); + state = id_priv->state; + id_priv->state = RDMA_CM_DESTROYING; + spin_unlock_irqrestore(&id_priv->lock, flags); + mutex_unlock(&id_priv->handler_mutex); + _destroy_id(id_priv, state); +} + +void rdma_destroy_id(struct rdma_cm_id *id) +{ + struct rdma_id_private *id_priv = + container_of(id, struct rdma_id_private, id); + + mutex_lock(&id_priv->handler_mutex); + destroy_id_handler_unlock(id_priv); +} EXPORT_SYMBOL(rdma_destroy_id); static int cma_rep_recv(struct rdma_id_private *id_priv) @@ -1925,6 +1930,8 @@ { int ret; + lockdep_assert_held(&id_priv->handler_mutex); + trace_cm_event_handler(id_priv, event); ret = id_priv->id.event_handler(&id_priv->id, event); trace_cm_event_done(id_priv, event, ret); @@ -1936,7 +1943,7 @@ { struct rdma_id_private *id_priv = cm_id->context; struct rdma_cm_event event = {}; - int ret = 0; + int ret; mutex_lock(&id_priv->handler_mutex); if ((ib_event->event != IB_CM_TIMEWAIT_EXIT && @@ -2005,14 +2012,12 @@ if (ret) { /* Destroy the CM ID by returning a non-zero value. */ id_priv->cm_id.ib = NULL; - cma_exch(id_priv, RDMA_CM_DESTROYING); - mutex_unlock(&id_priv->handler_mutex); - rdma_destroy_id(&id_priv->id); + destroy_id_handler_unlock(id_priv); return ret; } out: mutex_unlock(&id_priv->handler_mutex); - return ret; + return 0; } static struct rdma_id_private * @@ -2174,7 +2179,7 @@ mutex_lock(&listen_id->handler_mutex); if (listen_id->state != RDMA_CM_LISTEN) { ret = -ECONNABORTED; - goto err1; + goto err_unlock; } offset = cma_user_data_offset(listen_id); @@ -2191,55 +2196,38 @@ } if (!conn_id) { ret = -ENOMEM; - goto err1; + goto err_unlock; } mutex_lock_nested(&conn_id->handler_mutex, SINGLE_DEPTH_NESTING); ret = cma_ib_acquire_dev(conn_id, listen_id, &req); - if (ret) - goto err2; + if (ret) { + destroy_id_handler_unlock(conn_id); + goto err_unlock; + } conn_id->cm_id.ib = cm_id; cm_id->context = conn_id; cm_id->cm_handler = cma_ib_handler; - /* - * Protect against the user destroying conn_id from another thread - * until we're done accessing it. - */ - cma_id_get(conn_id); ret = cma_cm_event_handler(conn_id, &event); - if (ret) - goto err3; - /* - * Acquire mutex to prevent user executing rdma_destroy_id() - * while we're accessing the cm_id. - */ - mutex_lock(&lock); + if (ret) { + /* Destroy the CM ID by returning a non-zero value. */ + conn_id->cm_id.ib = NULL; + mutex_unlock(&listen_id->handler_mutex); + destroy_id_handler_unlock(conn_id); + goto net_dev_put; + } + if (cma_comp(conn_id, RDMA_CM_CONNECT) && (conn_id->id.qp_type != IB_QPT_UD)) { trace_cm_send_mra(cm_id->context); ib_send_cm_mra(cm_id, CMA_CM_MRA_SETTING, NULL, 0); } - mutex_unlock(&lock); mutex_unlock(&conn_id->handler_mutex); - mutex_unlock(&listen_id->handler_mutex); - cma_id_put(conn_id); - if (net_dev) - dev_put(net_dev); - return 0; -err3: - cma_id_put(conn_id); - /* Destroy the CM ID by returning a non-zero value. */ - conn_id->cm_id.ib = NULL; -err2: - cma_exch(conn_id, RDMA_CM_DESTROYING); - mutex_unlock(&conn_id->handler_mutex); -err1: +err_unlock: mutex_unlock(&listen_id->handler_mutex); - if (conn_id) - rdma_destroy_id(&conn_id->id); net_dev_put: if (net_dev) @@ -2339,9 +2327,7 @@ if (ret) { /* Destroy the CM ID by returning a non-zero value. */ id_priv->cm_id.iw = NULL; - cma_exch(id_priv, RDMA_CM_DESTROYING); - mutex_unlock(&id_priv->handler_mutex); - rdma_destroy_id(&id_priv->id); + destroy_id_handler_unlock(id_priv); return ret; } @@ -2388,16 +2374,16 @@ ret = rdma_translate_ip(laddr, &conn_id->id.route.addr.dev_addr); if (ret) { - mutex_unlock(&conn_id->handler_mutex); - rdma_destroy_id(new_cm_id); - goto out; + mutex_unlock(&listen_id->handler_mutex); + destroy_id_handler_unlock(conn_id); + return ret; } ret = cma_iw_acquire_dev(conn_id, listen_id); if (ret) { - mutex_unlock(&conn_id->handler_mutex); - rdma_destroy_id(new_cm_id); - goto out; + mutex_unlock(&listen_id->handler_mutex); + destroy_id_handler_unlock(conn_id); + return ret; } conn_id->cm_id.iw = cm_id; @@ -2407,25 +2393,16 @@ memcpy(cma_src_addr(conn_id), laddr, rdma_addr_size(laddr)); memcpy(cma_dst_addr(conn_id), raddr, rdma_addr_size(raddr)); - /* - * Protect against the user destroying conn_id from another thread - * until we're done accessing it. - */ - cma_id_get(conn_id); ret = cma_cm_event_handler(conn_id, &event); if (ret) { /* User wants to destroy the CM ID */ conn_id->cm_id.iw = NULL; - cma_exch(conn_id, RDMA_CM_DESTROYING); - mutex_unlock(&conn_id->handler_mutex); mutex_unlock(&listen_id->handler_mutex); - cma_id_put(conn_id); - rdma_destroy_id(&conn_id->id); + destroy_id_handler_unlock(conn_id); return ret; } mutex_unlock(&conn_id->handler_mutex); - cma_id_put(conn_id); out: mutex_unlock(&listen_id->handler_mutex); @@ -2482,14 +2459,19 @@ { struct rdma_id_private *id_priv = id->context; + /* Listening IDs are always destroyed on removal */ + if (event->event == RDMA_CM_EVENT_DEVICE_REMOVAL) + return -1; + id->context = id_priv->id.context; id->event_handler = id_priv->id.event_handler; trace_cm_event_handler(id_priv, event); return id_priv->id.event_handler(id, event); } -static void cma_listen_on_dev(struct rdma_id_private *id_priv, - struct cma_device *cma_dev) +static int cma_listen_on_dev(struct rdma_id_private *id_priv, + struct cma_device *cma_dev, + struct rdma_id_private **to_destroy) { struct rdma_id_private *dev_id_priv; struct rdma_cm_id *id; @@ -2498,13 +2480,14 @@ lockdep_assert_held(&lock); + *to_destroy = NULL; if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1)) - return; + return 0; id = __rdma_create_id(net, cma_listen_handler, id_priv, id_priv->id.ps, id_priv->id.qp_type, id_priv->res.kern_name); if (IS_ERR(id)) - return; + return PTR_ERR(dev_id_priv); dev_id_priv = container_of(id, struct rdma_id_private, id); @@ -2513,7 +2496,6 @@ rdma_addr_size(cma_src_addr(id_priv))); _cma_attach_to_dev(dev_id_priv, cma_dev); - list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list); cma_id_get(id_priv); dev_id_priv->internal_id = 1; dev_id_priv->afonly = id_priv->afonly; @@ -2522,19 +2504,42 @@ ret = rdma_listen(id, id_priv->backlog); if (ret) - dev_warn(&cma_dev->device->dev, - "RDMA CMA: cma_listen_on_dev, error %d\n", ret); + goto err_listen; + list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list); + return 0; +err_listen: + /* Caller must destroy this after releasing lock */ + *to_destroy = dev_id_priv; + dev_warn(&cma_dev->device->dev, "RDMA CMA: %s, error %d\n", __func__, ret); + return ret; } -static void cma_listen_on_all(struct rdma_id_private *id_priv) +static int cma_listen_on_all(struct rdma_id_private *id_priv) { + struct rdma_id_private *to_destroy; struct cma_device *cma_dev; + int ret; mutex_lock(&lock); list_add_tail(&id_priv->list, &listen_any_list); - list_for_each_entry(cma_dev, &dev_list, list) - cma_listen_on_dev(id_priv, cma_dev); + list_for_each_entry(cma_dev, &dev_list, list) { + ret = cma_listen_on_dev(id_priv, cma_dev, &to_destroy); + if (ret) { + /* Prevent racing with cma_process_remove() */ + if (to_destroy) + list_del_init(&to_destroy->list); + goto err_listen; + } + } mutex_unlock(&lock); + return 0; + +err_listen: + list_del(&id_priv->list); + mutex_unlock(&lock); + if (to_destroy) + rdma_destroy_id(&to_destroy->id); + return ret; } void rdma_set_service_type(struct rdma_cm_id *id, int tos) @@ -2653,49 +2658,54 @@ return (id_priv->query_id < 0) ? id_priv->query_id : 0; } -static void cma_work_handler(struct work_struct *_work) +static void cma_iboe_join_work_handler(struct work_struct *work) { - struct cma_work *work = container_of(_work, struct cma_work, work); - struct rdma_id_private *id_priv = work->id; - int destroy = 0; + struct cma_multicast *mc = + container_of(work, struct cma_multicast, iboe_join.work); + struct rdma_cm_event *event = &mc->iboe_join.event; + struct rdma_id_private *id_priv = mc->id_priv; + int ret; mutex_lock(&id_priv->handler_mutex); - if (!cma_comp_exch(id_priv, work->old_state, work->new_state)) - goto out; + if (READ_ONCE(id_priv->state) == RDMA_CM_DESTROYING || + READ_ONCE(id_priv->state) == RDMA_CM_DEVICE_REMOVAL) + goto out_unlock; - if (cma_cm_event_handler(id_priv, &work->event)) { - cma_exch(id_priv, RDMA_CM_DESTROYING); - destroy = 1; - } -out: + ret = cma_cm_event_handler(id_priv, event); + WARN_ON(ret); + +out_unlock: mutex_unlock(&id_priv->handler_mutex); - cma_id_put(id_priv); - if (destroy) - rdma_destroy_id(&id_priv->id); - kfree(work); + if (event->event == RDMA_CM_EVENT_MULTICAST_JOIN) + rdma_destroy_ah_attr(&event->param.ud.ah_attr); } -static void cma_ndev_work_handler(struct work_struct *_work) +static void cma_work_handler(struct work_struct *_work) { - struct cma_ndev_work *work = container_of(_work, struct cma_ndev_work, work); + struct cma_work *work = container_of(_work, struct cma_work, work); struct rdma_id_private *id_priv = work->id; - int destroy = 0; mutex_lock(&id_priv->handler_mutex); - if (id_priv->state == RDMA_CM_DESTROYING || - id_priv->state == RDMA_CM_DEVICE_REMOVAL) - goto out; + if (READ_ONCE(id_priv->state) == RDMA_CM_DESTROYING || + READ_ONCE(id_priv->state) == RDMA_CM_DEVICE_REMOVAL) + goto out_unlock; + if (work->old_state != 0 || work->new_state != 0) { + if (!cma_comp_exch(id_priv, work->old_state, work->new_state)) + goto out_unlock; + } if (cma_cm_event_handler(id_priv, &work->event)) { - cma_exch(id_priv, RDMA_CM_DESTROYING); - destroy = 1; + cma_id_put(id_priv); + destroy_id_handler_unlock(id_priv); + goto out_free; } -out: +out_unlock: mutex_unlock(&id_priv->handler_mutex); cma_id_put(id_priv); - if (destroy) - rdma_destroy_id(&id_priv->id); +out_free: + if (work->event.event == RDMA_CM_EVENT_MULTICAST_JOIN) + rdma_destroy_ah_attr(&work->event.param.ud.ah_attr); kfree(work); } @@ -3171,9 +3181,7 @@ event.event = RDMA_CM_EVENT_ADDR_RESOLVED; if (cma_cm_event_handler(id_priv, &event)) { - cma_exch(id_priv, RDMA_CM_DESTROYING); - mutex_unlock(&id_priv->handler_mutex); - rdma_destroy_id(&id_priv->id); + destroy_id_handler_unlock(id_priv); return; } out: @@ -3684,8 +3692,11 @@ ret = -ENOSYS; goto err; } - } else - cma_listen_on_all(id_priv); + } else { + ret = cma_listen_on_all(id_priv); + if (ret) + goto err; + } return 0; err: @@ -3790,7 +3801,7 @@ struct rdma_cm_event event = {}; const struct ib_cm_sidr_rep_event_param *rep = &ib_event->param.sidr_rep_rcvd; - int ret = 0; + int ret; mutex_lock(&id_priv->handler_mutex); if (id_priv->state != RDMA_CM_CONNECT) @@ -3840,14 +3851,12 @@ if (ret) { /* Destroy the CM ID by returning a non-zero value. */ id_priv->cm_id.ib = NULL; - cma_exch(id_priv, RDMA_CM_DESTROYING); - mutex_unlock(&id_priv->handler_mutex); - rdma_destroy_id(&id_priv->id); + destroy_id_handler_unlock(id_priv); return ret; } out: mutex_unlock(&id_priv->handler_mutex); - return ret; + return 0; } static int cma_resolve_ib_udp(struct rdma_id_private *id_priv, @@ -4313,70 +4322,68 @@ } EXPORT_SYMBOL(rdma_disconnect); -static int cma_ib_mc_handler(int status, struct ib_sa_multicast *multicast) +static void cma_make_mc_event(int status, struct rdma_id_private *id_priv, + struct ib_sa_multicast *multicast, + struct rdma_cm_event *event, + struct cma_multicast *mc) { - struct rdma_id_private *id_priv; - struct cma_multicast *mc = multicast->context; - struct rdma_cm_event event = {}; - int ret = 0; - - id_priv = mc->id_priv; - mutex_lock(&id_priv->handler_mutex); - if (id_priv->state != RDMA_CM_ADDR_BOUND && - id_priv->state != RDMA_CM_ADDR_RESOLVED) - goto out; + struct rdma_dev_addr *dev_addr; + enum ib_gid_type gid_type; + struct net_device *ndev; if (!status) status = cma_set_qkey(id_priv, be32_to_cpu(multicast->rec.qkey)); else pr_debug_ratelimited("RDMA CM: MULTICAST_ERROR: failed to join multicast. status %d\n", status); - mutex_lock(&id_priv->qp_mutex); - if (!status && id_priv->id.qp) { - status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid, - be16_to_cpu(multicast->rec.mlid)); - if (status) - pr_debug_ratelimited("RDMA CM: MULTICAST_ERROR: failed to attach QP. status %d\n", - status); + + event->status = status; + event->param.ud.private_data = mc->context; + if (status) { + event->event = RDMA_CM_EVENT_MULTICAST_ERROR; + return; } - mutex_unlock(&id_priv->qp_mutex); - event.status = status; - event.param.ud.private_data = mc->context; - if (!status) { - struct rdma_dev_addr *dev_addr = - &id_priv->id.route.addr.dev_addr; - struct net_device *ndev = - dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); - enum ib_gid_type gid_type = - id_priv->cma_dev->default_gid_type[id_priv->id.port_num - - rdma_start_port(id_priv->cma_dev->device)]; - - event.event = RDMA_CM_EVENT_MULTICAST_JOIN; - ret = ib_init_ah_from_mcmember(id_priv->id.device, - id_priv->id.port_num, - &multicast->rec, - ndev, gid_type, - &event.param.ud.ah_attr); - if (ret) - event.event = RDMA_CM_EVENT_MULTICAST_ERROR; + dev_addr = &id_priv->id.route.addr.dev_addr; + ndev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); + gid_type = + id_priv->cma_dev + ->default_gid_type[id_priv->id.port_num - + rdma_start_port( + id_priv->cma_dev->device)]; + + event->event = RDMA_CM_EVENT_MULTICAST_JOIN; + if (ib_init_ah_from_mcmember(id_priv->id.device, id_priv->id.port_num, + &multicast->rec, ndev, gid_type, + &event->param.ud.ah_attr)) { + event->event = RDMA_CM_EVENT_MULTICAST_ERROR; + goto out; + } - event.param.ud.qp_num = 0xFFFFFF; - event.param.ud.qkey = be32_to_cpu(multicast->rec.qkey); - if (ndev) - dev_put(ndev); - } else - event.event = RDMA_CM_EVENT_MULTICAST_ERROR; + event->param.ud.qp_num = 0xFFFFFF; + event->param.ud.qkey = be32_to_cpu(multicast->rec.qkey); - ret = cma_cm_event_handler(id_priv, &event); +out: + if (ndev) + dev_put(ndev); +} + +static int cma_ib_mc_handler(int status, struct ib_sa_multicast *multicast) +{ + struct cma_multicast *mc = multicast->context; + struct rdma_id_private *id_priv = mc->id_priv; + struct rdma_cm_event event = {}; + int ret = 0; + + mutex_lock(&id_priv->handler_mutex); + if (id_priv->state != RDMA_CM_ADDR_BOUND && + id_priv->state != RDMA_CM_ADDR_RESOLVED) + goto out; + cma_make_mc_event(status, id_priv, multicast, &event, mc); + ret = cma_cm_event_handler(id_priv, &event); rdma_destroy_ah_attr(&event.param.ud.ah_attr); - if (ret) { - cma_exch(id_priv, RDMA_CM_DESTROYING); - mutex_unlock(&id_priv->handler_mutex); - rdma_destroy_id(&id_priv->id); - return 0; - } + WARN_ON(ret); out: mutex_unlock(&id_priv->handler_mutex); @@ -4461,23 +4468,10 @@ IB_SA_MCMEMBER_REC_MTU | IB_SA_MCMEMBER_REC_HOP_LIMIT; - mc->multicast.ib = ib_sa_join_multicast(&sa_client, id_priv->id.device, - id_priv->id.port_num, &rec, - comp_mask, GFP_KERNEL, - cma_ib_mc_handler, mc); - return PTR_ERR_OR_ZERO(mc->multicast.ib); -} - -static void iboe_mcast_work_handler(struct work_struct *work) -{ - struct iboe_mcast_work *mw = container_of(work, struct iboe_mcast_work, work); - struct cma_multicast *mc = mw->mc; - struct ib_sa_multicast *m = mc->multicast.ib; - - mc->multicast.ib->context = mc; - cma_ib_mc_handler(0, m); - kref_put(&mc->mcref, release_mc); - kfree(mw); + mc->sa_mc = ib_sa_join_multicast(&sa_client, id_priv->id.device, + id_priv->id.port_num, &rec, comp_mask, + GFP_KERNEL, cma_ib_mc_handler, mc); + return PTR_ERR_OR_ZERO(mc->sa_mc); } static void cma_iboe_set_mgid(struct sockaddr *addr, union ib_gid *mgid, @@ -4512,52 +4506,41 @@ static int cma_iboe_join_multicast(struct rdma_id_private *id_priv, struct cma_multicast *mc) { - struct iboe_mcast_work *work; struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; int err = 0; struct sockaddr *addr = (struct sockaddr *)&mc->addr; struct net_device *ndev = NULL; + struct ib_sa_multicast ib; enum ib_gid_type gid_type; bool send_only; send_only = mc->join_state == BIT(SENDONLY_FULLMEMBER_JOIN); - if (cma_zero_addr((struct sockaddr *)&mc->addr)) + if (cma_zero_addr(addr)) return -EINVAL; - work = kzalloc(sizeof *work, GFP_KERNEL); - if (!work) - return -ENOMEM; - - mc->multicast.ib = kzalloc(sizeof(struct ib_sa_multicast), GFP_KERNEL); - if (!mc->multicast.ib) { - err = -ENOMEM; - goto out1; - } - gid_type = id_priv->cma_dev->default_gid_type[id_priv->id.port_num - rdma_start_port(id_priv->cma_dev->device)]; - cma_iboe_set_mgid(addr, &mc->multicast.ib->rec.mgid, gid_type); + cma_iboe_set_mgid(addr, &ib.rec.mgid, gid_type); - mc->multicast.ib->rec.pkey = cpu_to_be16(0xffff); + ib.rec.pkey = cpu_to_be16(0xffff); if (id_priv->id.ps == RDMA_PS_UDP) - mc->multicast.ib->rec.qkey = cpu_to_be32(RDMA_UDP_QKEY); + ib.rec.qkey = cpu_to_be32(RDMA_UDP_QKEY); if (dev_addr->bound_dev_if) ndev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); - if (!ndev) { - err = -ENODEV; - goto out2; - } - mc->multicast.ib->rec.rate = iboe_get_rate(ndev); - mc->multicast.ib->rec.hop_limit = 1; - mc->multicast.ib->rec.mtu = iboe_get_mtu(ndev->mtu); + if (!ndev) + return -ENODEV; + + ib.rec.rate = iboe_get_rate(ndev); + ib.rec.hop_limit = 1; + ib.rec.mtu = iboe_get_mtu(ndev->mtu); if (addr->sa_family == AF_INET) { if (gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP) { - mc->multicast.ib->rec.hop_limit = IPV6_DEFAULT_HOPLIMIT; + ib.rec.hop_limit = IPV6_DEFAULT_HOPLIMIT; if (!send_only) { - err = cma_igmp_send(ndev, &mc->multicast.ib->rec.mgid, + err = cma_igmp_send(ndev, &ib.rec.mgid, true); } } @@ -4566,26 +4549,15 @@ err = -ENOTSUPP; } dev_put(ndev); - if (err || !mc->multicast.ib->rec.mtu) { - if (!err) - err = -EINVAL; - goto out2; - } - rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, - &mc->multicast.ib->rec.port_gid); - work->id = id_priv; - work->mc = mc; - INIT_WORK(&work->work, iboe_mcast_work_handler); - kref_get(&mc->mcref); - queue_work(cma_wq, &work->work); + if (err || !ib.rec.mtu) + return err ?: -EINVAL; + rdma_ip2gid((struct sockaddr *)&id_priv->id.route.addr.src_addr, + &ib.rec.port_gid); + INIT_WORK(&mc->iboe_join.work, cma_iboe_join_work_handler); + cma_make_mc_event(0, id_priv, &ib, &mc->iboe_join.event, mc); + queue_work(cma_wq, &mc->iboe_join.work); return 0; - -out2: - kfree(mc->multicast.ib); -out1: - kfree(work); - return err; } int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr, @@ -4595,6 +4567,10 @@ struct cma_multicast *mc; int ret; + /* Not supported for kernel QPs */ + if (WARN_ON(id->qp)) + return -EINVAL; + if (!id->device) return -EINVAL; @@ -4603,7 +4579,7 @@ !cma_comp(id_priv, RDMA_CM_ADDR_RESOLVED)) return -EINVAL; - mc = kmalloc(sizeof *mc, GFP_KERNEL); + mc = kzalloc(sizeof(*mc), GFP_KERNEL); if (!mc) return -ENOMEM; @@ -4613,7 +4589,6 @@ mc->join_state = join_state; if (rdma_protocol_roce(id->device, id->port_num)) { - kref_init(&mc->mcref); ret = cma_iboe_join_multicast(id_priv, mc); if (ret) goto out_err; @@ -4645,25 +4620,14 @@ id_priv = container_of(id, struct rdma_id_private, id); spin_lock_irq(&id_priv->lock); list_for_each_entry(mc, &id_priv->mc_list, list) { - if (!memcmp(&mc->addr, addr, rdma_addr_size(addr))) { - list_del(&mc->list); - spin_unlock_irq(&id_priv->lock); - - if (id->qp) - ib_detach_mcast(id->qp, - &mc->multicast.ib->rec.mgid, - be16_to_cpu(mc->multicast.ib->rec.mlid)); - - BUG_ON(id_priv->cma_dev->device != id->device); - - if (rdma_cap_ib_mcast(id->device, id->port_num)) { - ib_sa_free_multicast(mc->multicast.ib); - kfree(mc); - } else if (rdma_protocol_roce(id->device, id->port_num)) { - cma_leave_roce_mc_group(id_priv, mc); - } - return; - } + if (memcmp(&mc->addr, addr, rdma_addr_size(addr)) != 0) + continue; + list_del(&mc->list); + spin_unlock_irq(&id_priv->lock); + + WARN_ON(id_priv->cma_dev->device != id->device); + destroy_mc(id_priv, mc); + return; } spin_unlock_irq(&id_priv->lock); } @@ -4672,7 +4636,7 @@ static int cma_netdev_change(struct net_device *ndev, struct rdma_id_private *id_priv) { struct rdma_dev_addr *dev_addr; - struct cma_ndev_work *work; + struct cma_work *work; dev_addr = &id_priv->id.route.addr.dev_addr; @@ -4685,7 +4649,7 @@ if (!work) return -ENOMEM; - INIT_WORK(&work->work, cma_ndev_work_handler); + INIT_WORK(&work->work, cma_work_handler); work->id = id_priv; work->event.event = RDMA_CM_EVENT_ADDR_CHANGE; cma_id_get(id_priv); @@ -4726,15 +4690,78 @@ .notifier_call = cma_netdev_callback }; +static void cma_send_device_removal_put(struct rdma_id_private *id_priv) +{ + struct rdma_cm_event event = { .event = RDMA_CM_EVENT_DEVICE_REMOVAL }; + enum rdma_cm_state state; + unsigned long flags; + + mutex_lock(&id_priv->handler_mutex); + /* Record that we want to remove the device */ + spin_lock_irqsave(&id_priv->lock, flags); + state = id_priv->state; + if (state == RDMA_CM_DESTROYING || state == RDMA_CM_DEVICE_REMOVAL) { + spin_unlock_irqrestore(&id_priv->lock, flags); + mutex_unlock(&id_priv->handler_mutex); + cma_id_put(id_priv); + return; + } + id_priv->state = RDMA_CM_DEVICE_REMOVAL; + spin_unlock_irqrestore(&id_priv->lock, flags); + + if (cma_cm_event_handler(id_priv, &event)) { + /* + * At this point the ULP promises it won't call + * rdma_destroy_id() concurrently + */ + cma_id_put(id_priv); + mutex_unlock(&id_priv->handler_mutex); + trace_cm_id_destroy(id_priv); + _destroy_id(id_priv, state); + return; + } + mutex_unlock(&id_priv->handler_mutex); + + /* + * If this races with destroy then the thread that first assigns state + * to a destroying does the cancel. + */ + cma_cancel_operation(id_priv, state); + cma_id_put(id_priv); +} + +static void cma_process_remove(struct cma_device *cma_dev) +{ + mutex_lock(&lock); + while (!list_empty(&cma_dev->id_list)) { + struct rdma_id_private *id_priv = list_first_entry( + &cma_dev->id_list, struct rdma_id_private, list); + + list_del(&id_priv->listen_list); + list_del_init(&id_priv->list); + cma_id_get(id_priv); + mutex_unlock(&lock); + + cma_send_device_removal_put(id_priv); + + mutex_lock(&lock); + } + mutex_unlock(&lock); + + cma_dev_put(cma_dev); + wait_for_completion(&cma_dev->comp); +} + static int cma_add_one(struct ib_device *device) { + struct rdma_id_private *to_destroy; struct cma_device *cma_dev; struct rdma_id_private *id_priv; unsigned int i; unsigned long supported_gids = 0; int ret; - cma_dev = kmalloc(sizeof *cma_dev, GFP_KERNEL); + cma_dev = kmalloc(sizeof(*cma_dev), GFP_KERNEL); if (!cma_dev) return -ENOMEM; @@ -4774,13 +4801,23 @@ mutex_lock(&lock); list_add_tail(&cma_dev->list, &dev_list); - list_for_each_entry(id_priv, &listen_any_list, list) - cma_listen_on_dev(id_priv, cma_dev); + list_for_each_entry(id_priv, &listen_any_list, list) { + ret = cma_listen_on_dev(id_priv, cma_dev, &to_destroy); + if (ret) + goto free_listen; + } mutex_unlock(&lock); trace_cm_add_one(device); return 0; +free_listen: + list_del(&cma_dev->list); + mutex_unlock(&lock); + + /* cma_process_remove() will delete to_destroy */ + cma_process_remove(cma_dev); + kfree(cma_dev->default_roce_tos); free_gid_type: kfree(cma_dev->default_gid_type); @@ -4789,59 +4826,6 @@ return ret; } -static int cma_remove_id_dev(struct rdma_id_private *id_priv) -{ - struct rdma_cm_event event = {}; - enum rdma_cm_state state; - int ret = 0; - - /* Record that we want to remove the device */ - state = cma_exch(id_priv, RDMA_CM_DEVICE_REMOVAL); - if (state == RDMA_CM_DESTROYING) - return 0; - - cma_cancel_operation(id_priv, state); - mutex_lock(&id_priv->handler_mutex); - - /* Check for destruction from another callback. */ - if (!cma_comp(id_priv, RDMA_CM_DEVICE_REMOVAL)) - goto out; - - event.event = RDMA_CM_EVENT_DEVICE_REMOVAL; - ret = cma_cm_event_handler(id_priv, &event); -out: - mutex_unlock(&id_priv->handler_mutex); - return ret; -} - -static void cma_process_remove(struct cma_device *cma_dev) -{ - struct rdma_id_private *id_priv; - int ret; - - mutex_lock(&lock); - while (!list_empty(&cma_dev->id_list)) { - id_priv = list_entry(cma_dev->id_list.next, - struct rdma_id_private, list); - - list_del(&id_priv->listen_list); - list_del_init(&id_priv->list); - cma_id_get(id_priv); - mutex_unlock(&lock); - - ret = id_priv->internal_id ? 1 : cma_remove_id_dev(id_priv); - cma_id_put(id_priv); - if (ret) - rdma_destroy_id(&id_priv->id); - - mutex_lock(&lock); - } - mutex_unlock(&lock); - - cma_dev_put(cma_dev); - wait_for_completion(&cma_dev->comp); -} - static void cma_remove_one(struct ib_device *device, void *client_data) { struct cma_device *cma_dev = client_data; --- linux-5.8.0.orig/drivers/infiniband/core/counters.c +++ linux-5.8.0/drivers/infiniband/core/counters.c @@ -288,7 +288,7 @@ struct rdma_counter *counter; int ret; - if (!qp->res.valid) + if (!qp->res.valid || rdma_is_kernel_res(&qp->res)) return 0; if (!rdma_is_port_valid(dev, port)) @@ -483,7 +483,7 @@ goto err; } - if (counter->res.task != qp->res.task) { + if (rdma_is_kernel_res(&counter->res) != rdma_is_kernel_res(&qp->res)) { ret = -EINVAL; goto err_task; } --- linux-5.8.0.orig/drivers/infiniband/core/cq.c +++ linux-5.8.0/drivers/infiniband/core/cq.c @@ -197,24 +197,22 @@ } /** - * __ib_alloc_cq_user - allocate a completion queue + * __ib_alloc_cq allocate a completion queue * @dev: device to allocate the CQ for * @private: driver private data, accessible from cq->cq_context * @nr_cqe: number of CQEs to allocate * @comp_vector: HCA completion vectors for this CQ * @poll_ctx: context to poll the CQ from. * @caller: module owner name. - * @udata: Valid user data or NULL for kernel object * * This is the proper interface to allocate a CQ for in-kernel users. A * CQ allocated with this interface will automatically be polled from the * specified context. The ULP must use wr->wr_cqe instead of wr->wr_id * to use this CQ abstraction. */ -struct ib_cq *__ib_alloc_cq_user(struct ib_device *dev, void *private, - int nr_cqe, int comp_vector, - enum ib_poll_context poll_ctx, - const char *caller, struct ib_udata *udata) +struct ib_cq *__ib_alloc_cq(struct ib_device *dev, void *private, int nr_cqe, + int comp_vector, enum ib_poll_context poll_ctx, + const char *caller) { struct ib_cq_init_attr cq_attr = { .cqe = nr_cqe, @@ -277,7 +275,7 @@ out_destroy_cq: rdma_dim_destroy(cq); rdma_restrack_del(&cq->res); - cq->device->ops.destroy_cq(cq, udata); + cq->device->ops.destroy_cq(cq, NULL); out_free_wc: kfree(cq->wc); out_free_cq: @@ -285,7 +283,7 @@ trace_cq_alloc_error(nr_cqe, comp_vector, poll_ctx, ret); return ERR_PTR(ret); } -EXPORT_SYMBOL(__ib_alloc_cq_user); +EXPORT_SYMBOL(__ib_alloc_cq); /** * __ib_alloc_cq_any - allocate a completion queue @@ -310,18 +308,19 @@ atomic_inc_return(&counter) % min_t(int, dev->num_comp_vectors, num_online_cpus()); - return __ib_alloc_cq_user(dev, private, nr_cqe, comp_vector, poll_ctx, - caller, NULL); + return __ib_alloc_cq(dev, private, nr_cqe, comp_vector, poll_ctx, + caller); } EXPORT_SYMBOL(__ib_alloc_cq_any); /** - * ib_free_cq_user - free a completion queue + * ib_free_cq - free a completion queue * @cq: completion queue to free. - * @udata: User data or NULL for kernel object */ -void ib_free_cq_user(struct ib_cq *cq, struct ib_udata *udata) +void ib_free_cq(struct ib_cq *cq) { + int ret; + if (WARN_ON_ONCE(atomic_read(&cq->usecnt))) return; if (WARN_ON_ONCE(cq->cqe_used)) @@ -343,12 +342,13 @@ rdma_dim_destroy(cq); trace_cq_free(cq); + ret = cq->device->ops.destroy_cq(cq, NULL); + WARN_ONCE(ret, "Destroy of kernel CQ shouldn't fail"); rdma_restrack_del(&cq->res); - cq->device->ops.destroy_cq(cq, udata); kfree(cq->wc); kfree(cq); } -EXPORT_SYMBOL(ib_free_cq_user); +EXPORT_SYMBOL(ib_free_cq); void ib_cq_pool_init(struct ib_device *dev) { @@ -379,7 +379,7 @@ { LIST_HEAD(tmp_list); unsigned int nr_cqs, i; - struct ib_cq *cq; + struct ib_cq *cq, *n; int ret; if (poll_ctx > IB_POLL_LAST_POOL_TYPE) { @@ -412,7 +412,7 @@ return 0; out_free_cqs: - list_for_each_entry(cq, &tmp_list, pool_entry) { + list_for_each_entry_safe(cq, n, &tmp_list, pool_entry) { cq->shared = false; ib_free_cq(cq); } --- linux-5.8.0.orig/drivers/infiniband/core/device.c +++ linux-5.8.0/drivers/infiniband/core/device.c @@ -1282,6 +1282,8 @@ remove_client_context(device, cid); } + ib_cq_pool_destroy(device); + /* Pairs with refcount_set in enable_device */ ib_device_put(device); wait_for_completion(&device->unreg_completion); @@ -1325,6 +1327,8 @@ goto out; } + ib_cq_pool_init(device); + down_read(&clients_rwsem); xa_for_each_marked (&clients, index, client, CLIENT_REGISTERED) { ret = add_client_context(device, client); @@ -1339,6 +1343,10 @@ return ret; } +static void prevent_dealloc_device(struct ib_device *ib_dev) +{ +} + /** * ib_register_device - Register an IB device with IB core * @device: Device to register @@ -1393,11 +1401,7 @@ goto dev_cleanup; } - ib_cq_pool_init(device); ret = enable_device_and_get(device); - dev_set_uevent_suppress(&device->dev, false); - /* Mark for userspace that device is ready */ - kobject_uevent(&device->dev.kobj, KOBJ_ADD); if (ret) { void (*dealloc_fn)(struct ib_device *); @@ -1409,16 +1413,20 @@ * possibility for a parallel unregistration along with this * error flow. Since we have a refcount here we know any * parallel flow is stopped in disable_device and will see the - * NULL pointers, causing the responsibility to + * special dealloc_driver pointer, causing the responsibility to * ib_dealloc_device() to revert back to this thread. */ dealloc_fn = device->ops.dealloc_driver; - device->ops.dealloc_driver = NULL; + device->ops.dealloc_driver = prevent_dealloc_device; ib_device_put(device); __ib_unregister_device(device); device->ops.dealloc_driver = dealloc_fn; + dev_set_uevent_suppress(&device->dev, false); return ret; } + dev_set_uevent_suppress(&device->dev, false); + /* Mark for userspace that device is ready */ + kobject_uevent(&device->dev.kobj, KOBJ_ADD); ib_device_put(device); return 0; @@ -1448,7 +1456,6 @@ goto out; disable_device(ib_dev); - ib_cq_pool_destroy(ib_dev); /* Expedite removing unregistered pointers from the hash table */ free_netdevs(ib_dev); @@ -1462,7 +1469,8 @@ * Drivers using the new flow may not call ib_dealloc_device except * in error unwind prior to registration success. */ - if (ib_dev->ops.dealloc_driver) { + if (ib_dev->ops.dealloc_driver && + ib_dev->ops.dealloc_driver != prevent_dealloc_device) { WARN_ON(kref_read(&ib_dev->dev.kobj.kref) <= 1); ib_dealloc_device(ib_dev); } --- linux-5.8.0.orig/drivers/infiniband/core/nldev.c +++ linux-5.8.0/drivers/infiniband/core/nldev.c @@ -738,9 +738,6 @@ xa_lock(&rt->xa); xa_for_each(&rt->xa, id, res) { qp = container_of(res, struct ib_qp, res); - if (qp->qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW)) - continue; - if (!qp->counter || (qp->counter->id != counter->id)) continue; --- linux-5.8.0.orig/drivers/infiniband/core/rdma_core.c +++ linux-5.8.0/drivers/infiniband/core/rdma_core.c @@ -130,17 +130,6 @@ lockdep_assert_held(&ufile->hw_destroy_rwsem); assert_uverbs_usecnt(uobj, UVERBS_LOOKUP_WRITE); - if (reason == RDMA_REMOVE_ABORT_HWOBJ) { - reason = RDMA_REMOVE_ABORT; - ret = uobj->uapi_object->type_class->destroy_hw(uobj, reason, - attrs); - /* - * Drivers are not permitted to ignore RDMA_REMOVE_ABORT, see - * ib_is_destroy_retryable, cleanup_retryable == false here. - */ - WARN_ON(ret); - } - if (reason == RDMA_REMOVE_ABORT) { WARN_ON(!list_empty(&uobj->list)); WARN_ON(!uobj->context); @@ -674,11 +663,22 @@ bool hw_obj_valid) { struct ib_uverbs_file *ufile = uobj->ufile; + int ret; + + if (hw_obj_valid) { + ret = uobj->uapi_object->type_class->destroy_hw( + uobj, RDMA_REMOVE_ABORT, attrs); + /* + * If the driver couldn't destroy the object then go ahead and + * commit it. Leaking objects that can't be destroyed is only + * done during FD close after the driver has a few more tries to + * destroy it. + */ + if (WARN_ON(ret)) + return rdma_alloc_commit_uobject(uobj, attrs); + } - uverbs_destroy_uobject(uobj, - hw_obj_valid ? RDMA_REMOVE_ABORT_HWOBJ : - RDMA_REMOVE_ABORT, - attrs); + uverbs_destroy_uobject(uobj, RDMA_REMOVE_ABORT, attrs); /* Matches the down_read in rdma_alloc_begin_uobject */ up_read(&ufile->hw_destroy_rwsem); --- linux-5.8.0.orig/drivers/infiniband/core/restrack.c +++ linux-5.8.0/drivers/infiniband/core/restrack.c @@ -231,6 +231,7 @@ } else { ret = xa_alloc_cyclic(&rt->xa, &res->id, res, xa_limit_32b, &rt->next_id, GFP_KERNEL); + ret = (ret < 0) ? ret : 0; } if (!ret) --- linux-5.8.0.orig/drivers/infiniband/core/ucma.c +++ linux-5.8.0/drivers/infiniband/core/ucma.c @@ -586,6 +586,7 @@ list_move_tail(&uevent->list, &list); } list_del(&ctx->list); + events_reported = ctx->events_reported; mutex_unlock(&ctx->file->mut); list_for_each_entry_safe(uevent, tmp, &list, list) { @@ -595,7 +596,6 @@ kfree(uevent); } - events_reported = ctx->events_reported; mutex_destroy(&ctx->mutex); kfree(ctx); return events_reported; @@ -1512,7 +1512,9 @@ return 0; err3: + mutex_lock(&ctx->mutex); rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr); + mutex_unlock(&ctx->mutex); ucma_cleanup_mc_events(mc); err2: xa_erase(&multicast_table, mc->id); @@ -1678,7 +1680,9 @@ cur_file = ctx->file; if (cur_file == new_file) { + mutex_lock(&cur_file->mut); resp.events_reported = ctx->events_reported; + mutex_unlock(&cur_file->mut); goto response; } --- linux-5.8.0.orig/drivers/infiniband/core/umem.c +++ linux-5.8.0/drivers/infiniband/core/umem.c @@ -151,13 +151,24 @@ dma_addr_t mask; int i; + /* rdma_for_each_block() has a bug if the page size is smaller than the + * page size used to build the umem. For now prevent smaller page sizes + * from being returned. + */ + pgsz_bitmap &= GENMASK(BITS_PER_LONG - 1, PAGE_SHIFT); + /* At minimum, drivers must support PAGE_SIZE or smaller */ if (WARN_ON(!(pgsz_bitmap & GENMASK(PAGE_SHIFT, 0)))) return 0; va = virt; - /* max page size not to exceed MR length */ - mask = roundup_pow_of_two(umem->length); + /* The best result is the smallest page size that results in the minimum + * number of required pages. Compute the largest page size that could + * work based on VA address bits that don't change. + */ + mask = pgsz_bitmap & + GENMASK(BITS_PER_LONG - 1, + bits_per((umem->length - 1 + virt) ^ virt)); /* offset into first SGL */ pgoff = umem->address & ~PAGE_MASK; --- linux-5.8.0.orig/drivers/infiniband/core/user_mad.c +++ linux-5.8.0/drivers/infiniband/core/user_mad.c @@ -379,6 +379,11 @@ mutex_lock(&file->mutex); + if (file->agents_dead) { + mutex_unlock(&file->mutex); + return -EIO; + } + while (list_empty(&file->recv_list)) { mutex_unlock(&file->mutex); @@ -392,6 +397,11 @@ mutex_lock(&file->mutex); } + if (file->agents_dead) { + mutex_unlock(&file->mutex); + return -EIO; + } + packet = list_entry(file->recv_list.next, struct ib_umad_packet, list); list_del(&packet->list); @@ -524,7 +534,7 @@ agent = __get_agent(file, packet->mad.hdr.id); if (!agent) { - ret = -EINVAL; + ret = -EIO; goto err_up; } @@ -653,10 +663,14 @@ /* we will always be able to post a MAD send */ __poll_t mask = EPOLLOUT | EPOLLWRNORM; + mutex_lock(&file->mutex); poll_wait(filp, &file->recv_wait, wait); if (!list_empty(&file->recv_list)) mask |= EPOLLIN | EPOLLRDNORM; + if (file->agents_dead) + mask = EPOLLERR; + mutex_unlock(&file->mutex); return mask; } @@ -1336,6 +1350,7 @@ list_for_each_entry(file, &port->file_list, port_list) { mutex_lock(&file->mutex); file->agents_dead = 1; + wake_up_interruptible(&file->recv_wait); mutex_unlock(&file->mutex); for (id = 0; id < IB_UMAD_MAX_AGENTS; ++id) --- linux-5.8.0.orig/drivers/infiniband/core/uverbs_cmd.c +++ linux-5.8.0/drivers/infiniband/core/uverbs_cmd.c @@ -770,6 +770,7 @@ mr->uobject = uobj; atomic_inc(&pd->usecnt); mr->res.type = RDMA_RESTRACK_MR; + mr->iova = cmd.hca_va; rdma_restrack_uadd(&mr->res); uobj->object = mr; @@ -861,6 +862,9 @@ atomic_dec(&old_pd->usecnt); } + if (cmd.flags & IB_MR_REREG_TRANS) + mr->iova = cmd.hca_va; + memset(&resp, 0, sizeof(resp)); resp.lkey = mr->lkey; resp.rkey = mr->rkey; --- linux-5.8.0.orig/drivers/infiniband/core/verbs.c +++ linux-5.8.0/drivers/infiniband/core/verbs.c @@ -1687,8 +1687,10 @@ slave = rdma_lag_get_ah_roce_slave(qp->device, &attr->ah_attr, GFP_KERNEL); - if (IS_ERR(slave)) + if (IS_ERR(slave)) { + ret = PTR_ERR(slave); goto out_av; + } attr->xmit_slave = slave; } } @@ -1712,7 +1714,7 @@ if (!(rdma_protocol_ib(qp->device, attr->alt_ah_attr.port_num) && rdma_protocol_ib(qp->device, port))) { - ret = EINVAL; + ret = -EINVAL; goto out; } } @@ -1803,7 +1805,7 @@ dev_put(netdev); - if (!rc) { + if (!rc && lksettings.base.speed != (u32)SPEED_UNKNOWN) { netdev_speed = lksettings.base.speed; } else { netdev_speed = SPEED_1000; @@ -2016,16 +2018,21 @@ int ib_destroy_cq_user(struct ib_cq *cq, struct ib_udata *udata) { + int ret; + if (WARN_ON_ONCE(cq->shared)) return -EOPNOTSUPP; if (atomic_read(&cq->usecnt)) return -EBUSY; + ret = cq->device->ops.destroy_cq(cq, udata); + if (ret) + return ret; + rdma_restrack_del(&cq->res); - cq->device->ops.destroy_cq(cq, udata); kfree(cq); - return 0; + return ret; } EXPORT_SYMBOL(ib_destroy_cq_user); --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/ib_verbs.c +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/ib_verbs.c @@ -752,12 +752,6 @@ gsi_sqp = rdev->gsi_ctx.gsi_sqp; gsi_sah = rdev->gsi_ctx.gsi_sah; - /* remove from active qp list */ - mutex_lock(&rdev->qp_lock); - list_del(&gsi_sqp->list); - mutex_unlock(&rdev->qp_lock); - atomic_dec(&rdev->qp_count); - ibdev_dbg(&rdev->ibdev, "Destroy the shadow AH\n"); bnxt_qplib_destroy_ah(&rdev->qplib_res, &gsi_sah->qplib_ah, @@ -772,6 +766,12 @@ } bnxt_qplib_free_qp_res(&rdev->qplib_res, &gsi_sqp->qplib_qp); + /* remove from active qp list */ + mutex_lock(&rdev->qp_lock); + list_del(&gsi_sqp->list); + mutex_unlock(&rdev->qp_lock); + atomic_dec(&rdev->qp_count); + kfree(rdev->gsi_ctx.sqp_tbl); kfree(gsi_sah); kfree(gsi_sqp); @@ -792,11 +792,6 @@ unsigned int flags; int rc; - mutex_lock(&rdev->qp_lock); - list_del(&qp->list); - mutex_unlock(&rdev->qp_lock); - atomic_dec(&rdev->qp_count); - bnxt_qplib_flush_cqn_wq(&qp->qplib_qp); rc = bnxt_qplib_destroy_qp(&rdev->qplib_res, &qp->qplib_qp); @@ -819,6 +814,11 @@ goto sh_fail; } + mutex_lock(&rdev->qp_lock); + list_del(&qp->list); + mutex_unlock(&rdev->qp_lock); + atomic_dec(&rdev->qp_count); + ib_umem_release(qp->rumem); ib_umem_release(qp->sumem); @@ -1995,6 +1995,7 @@ goto out; } qp_attr->qp_state = __to_ib_qp_state(qplib_qp->state); + qp_attr->cur_qp_state = __to_ib_qp_state(qplib_qp->cur_qp_state); qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ? 1 : 0; qp_attr->qp_access_flags = __to_ib_access_flags(qplib_qp->access); qp_attr->pkey_index = qplib_qp->pkey_index; @@ -2714,7 +2715,7 @@ } /* Completion Queues */ -void bnxt_re_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) +int bnxt_re_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) { struct bnxt_re_cq *cq; struct bnxt_qplib_nq *nq; @@ -2730,6 +2731,7 @@ atomic_dec(&rdev->cq_count); nq->budget--; kfree(cq->cql); + return 0; } int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, @@ -3178,6 +3180,19 @@ wc->wc_flags |= IB_WC_GRH; } +static bool bnxt_re_check_if_vlan_valid(struct bnxt_re_dev *rdev, + u16 vlan_id) +{ + /* + * Check if the vlan is configured in the host. If not configured, it + * can be a transparent VLAN. So dont report the vlan id. + */ + if (!__vlan_find_dev_deep_rcu(rdev->netdev, + htons(ETH_P_8021Q), vlan_id)) + return false; + return true; +} + static bool bnxt_re_is_vlan_pkt(struct bnxt_qplib_cqe *orig_cqe, u16 *vid, u8 *sl) { @@ -3246,9 +3261,11 @@ wc->src_qp = orig_cqe->src_qp; memcpy(wc->smac, orig_cqe->smac, ETH_ALEN); if (bnxt_re_is_vlan_pkt(orig_cqe, &vlan_id, &sl)) { - wc->vlan_id = vlan_id; - wc->sl = sl; - wc->wc_flags |= IB_WC_WITH_VLAN; + if (bnxt_re_check_if_vlan_valid(rdev, vlan_id)) { + wc->vlan_id = vlan_id; + wc->sl = sl; + wc->wc_flags |= IB_WC_WITH_VLAN; + } } wc->port_num = 1; wc->vendor_err = orig_cqe->status; --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/ib_verbs.h +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/ib_verbs.h @@ -193,7 +193,7 @@ const struct ib_recv_wr **bad_recv_wr); int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void bnxt_re_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); +int bnxt_re_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); int bnxt_re_poll_cq(struct ib_cq *cq, int num_entries, struct ib_wc *wc); int bnxt_re_req_notify_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags); struct ib_mr *bnxt_re_get_dma_mr(struct ib_pd *pd, int mr_access_flags); --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/main.c +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/main.c @@ -811,7 +811,8 @@ struct ib_event event; unsigned int flags; - if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR) { + if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR && + rdma_is_kernel_res(&qp->ib_qp.res)) { flags = bnxt_re_lock_cqs(qp); bnxt_qplib_add_flush_qp(&qp->qplib_qp); bnxt_re_unlock_cqs(qp, flags); @@ -1026,8 +1027,7 @@ struct bnxt_qplib_nq *nq; nq = &rdev->nq[i]; - nq->hwq.max_elements = (qplib_ctx->cq_count + - qplib_ctx->srqc_count + 2); + nq->hwq.max_elements = BNXT_QPLIB_NQE_MAX_CNT; rc = bnxt_qplib_alloc_nq(&rdev->qplib_res, &rdev->nq[i]); if (rc) { ibdev_err(&rdev->ibdev, "Alloc Failed NQ%d rc:%#x", --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/qplib_fp.c +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/qplib_fp.c @@ -796,6 +796,7 @@ u16 cmd_flags = 0; u32 qp_flags = 0; u8 pg_sz_lvl; + u32 tbl_indx; int rc; RCFW_CMD_PREP(req, CREATE_QP1, cmd_flags); @@ -891,8 +892,9 @@ rq->dbinfo.xid = qp->id; rq->dbinfo.db = qp->dpi->dbr; } - rcfw->qp_tbl[qp->id].qp_id = qp->id; - rcfw->qp_tbl[qp->id].qp_handle = (void *)qp; + tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw); + rcfw->qp_tbl[tbl_indx].qp_id = qp->id; + rcfw->qp_tbl[tbl_indx].qp_handle = (void *)qp; return 0; @@ -920,10 +922,10 @@ sq = &qp->sq; hwq = &sq->hwq; + /* First psn entry */ fpsne = (u64)bnxt_qplib_get_qe(hwq, hwq->max_elements, &psn_pg); if (!IS_ALIGNED(fpsne, PAGE_SIZE)) - indx_pad = ALIGN(fpsne, PAGE_SIZE) / size; - + indx_pad = (fpsne & ~PAGE_MASK) / size; page = (u64 *)psn_pg; for (indx = 0; indx < hwq->max_elements; indx++) { pg_num = (indx + indx_pad) / (PAGE_SIZE / size); @@ -950,6 +952,7 @@ u32 qp_flags = 0; u8 pg_sz_lvl; u16 max_rsge; + u32 tbl_indx; RCFW_CMD_PREP(req, CREATE_QP, cmd_flags); @@ -1118,8 +1121,9 @@ rq->dbinfo.xid = qp->id; rq->dbinfo.db = qp->dpi->dbr; } - rcfw->qp_tbl[qp->id].qp_id = qp->id; - rcfw->qp_tbl[qp->id].qp_handle = (void *)qp; + tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw); + rcfw->qp_tbl[tbl_indx].qp_id = qp->id; + rcfw->qp_tbl[tbl_indx].qp_handle = (void *)qp; return 0; @@ -1467,10 +1471,12 @@ struct cmdq_destroy_qp req; struct creq_destroy_qp_resp resp; u16 cmd_flags = 0; + u32 tbl_indx; int rc; - rcfw->qp_tbl[qp->id].qp_id = BNXT_QPLIB_QP_ID_INVALID; - rcfw->qp_tbl[qp->id].qp_handle = NULL; + tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw); + rcfw->qp_tbl[tbl_indx].qp_id = BNXT_QPLIB_QP_ID_INVALID; + rcfw->qp_tbl[tbl_indx].qp_handle = NULL; RCFW_CMD_PREP(req, DESTROY_QP, cmd_flags); @@ -1478,8 +1484,8 @@ rc = bnxt_qplib_rcfw_send_message(rcfw, (void *)&req, (void *)&resp, NULL, 0); if (rc) { - rcfw->qp_tbl[qp->id].qp_id = qp->id; - rcfw->qp_tbl[qp->id].qp_handle = qp; + rcfw->qp_tbl[tbl_indx].qp_id = qp->id; + rcfw->qp_tbl[tbl_indx].qp_handle = qp; return rc; } --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c @@ -307,14 +307,15 @@ __le16 mcookie; u16 cookie; int rc = 0; - u32 qp_id; + u32 qp_id, tbl_indx; pdev = rcfw->pdev; switch (qp_event->event) { case CREQ_QP_EVENT_EVENT_QP_ERROR_NOTIFICATION: err_event = (struct creq_qp_error_notification *)qp_event; qp_id = le32_to_cpu(err_event->xid); - qp = rcfw->qp_tbl[qp_id].qp_handle; + tbl_indx = map_qp_id_to_tbl_indx(qp_id, rcfw); + qp = rcfw->qp_tbl[tbl_indx].qp_handle; dev_dbg(&pdev->dev, "Received QP error notification\n"); dev_dbg(&pdev->dev, "qpid 0x%x, req_err=0x%x, resp_err=0x%x\n", @@ -615,8 +616,9 @@ cmdq->bmap_size = bmap_size; - rcfw->qp_tbl_size = qp_tbl_sz; - rcfw->qp_tbl = kcalloc(qp_tbl_sz, sizeof(struct bnxt_qplib_qp_node), + /* Allocate one extra to hold the QP1 entries */ + rcfw->qp_tbl_size = qp_tbl_sz + 1; + rcfw->qp_tbl = kcalloc(rcfw->qp_tbl_size, sizeof(struct bnxt_qplib_qp_node), GFP_KERNEL); if (!rcfw->qp_tbl) goto fail; --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h @@ -216,4 +216,9 @@ int bnxt_qplib_init_rcfw(struct bnxt_qplib_rcfw *rcfw, struct bnxt_qplib_ctx *ctx, int is_virtfn); void bnxt_qplib_mark_qp_error(void *qp_handle); +static inline u32 map_qp_id_to_tbl_indx(u32 qid, struct bnxt_qplib_rcfw *rcfw) +{ + /* Last index of the qp_tbl is for QP1 ie. qp_tbl_size - 1*/ + return (qid == 1) ? rcfw->qp_tbl_size - 1 : qid % rcfw->qp_tbl_size - 2; +} #endif /* __BNXT_QPLIB_RCFW_H__ */ --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/qplib_sp.c +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/qplib_sp.c @@ -149,7 +149,7 @@ attr->max_inline_data = le32_to_cpu(sb->max_inline_data); attr->l2_db_size = (sb->l2_db_space_size + 1) * (0x01 << RCFW_DBR_BASE_PAGE_SHIFT); - attr->max_sgid = le32_to_cpu(sb->max_gid); + attr->max_sgid = BNXT_QPLIB_NUM_GIDS_SUPPORTED; bnxt_qplib_query_version(rcfw, attr->fw_ver); --- linux-5.8.0.orig/drivers/infiniband/hw/bnxt_re/qplib_sp.h +++ linux-5.8.0/drivers/infiniband/hw/bnxt_re/qplib_sp.h @@ -47,6 +47,7 @@ struct bnxt_qplib_dev_attr { #define FW_VER_ARR_LEN 4 u8 fw_ver[FW_VER_ARR_LEN]; +#define BNXT_QPLIB_NUM_GIDS_SUPPORTED 256 u16 max_sgid; u16 max_mrw; u32 max_qp; --- linux-5.8.0.orig/drivers/infiniband/hw/cxgb4/cm.c +++ linux-5.8.0/drivers/infiniband/hw/cxgb4/cm.c @@ -3610,13 +3610,13 @@ ep->com.local_addr.ss_family == AF_INET) { err = cxgb4_remove_server_filter( ep->com.dev->rdev.lldi.ports[0], ep->stid, - ep->com.dev->rdev.lldi.rxq_ids[0], 0); + ep->com.dev->rdev.lldi.rxq_ids[0], false); } else { struct sockaddr_in6 *sin6; c4iw_init_wr_wait(ep->com.wr_waitp); err = cxgb4_remove_server( ep->com.dev->rdev.lldi.ports[0], ep->stid, - ep->com.dev->rdev.lldi.rxq_ids[0], 0); + ep->com.dev->rdev.lldi.rxq_ids[0], true); if (err) goto done; err = c4iw_wait_for_reply(&ep->com.dev->rdev, ep->com.wr_waitp, --- linux-5.8.0.orig/drivers/infiniband/hw/cxgb4/cq.c +++ linux-5.8.0/drivers/infiniband/hw/cxgb4/cq.c @@ -967,7 +967,7 @@ return !err || err == -ENODATA ? npolled : err; } -void c4iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) +int c4iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) { struct c4iw_cq *chp; struct c4iw_ucontext *ucontext; @@ -985,6 +985,7 @@ ucontext ? &ucontext->uctx : &chp->cq.rdev->uctx, chp->destroy_skb, chp->wr_waitp); c4iw_put_wr_wait(chp->wr_waitp); + return 0; } int c4iw_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, @@ -1007,6 +1008,9 @@ if (attr->flags) return -EINVAL; + if (entries < 1 || entries > ibdev->attrs.max_cqe) + return -EINVAL; + if (vector >= rhp->rdev.lldi.nciq) return -EINVAL; --- linux-5.8.0.orig/drivers/infiniband/hw/cxgb4/iw_cxgb4.h +++ linux-5.8.0/drivers/infiniband/hw/cxgb4/iw_cxgb4.h @@ -992,7 +992,7 @@ struct ib_udata *udata); struct ib_mr *c4iw_get_dma_mr(struct ib_pd *pd, int acc); int c4iw_dereg_mr(struct ib_mr *ib_mr, struct ib_udata *udata); -void c4iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata); +int c4iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata); int c4iw_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); int c4iw_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags); --- linux-5.8.0.orig/drivers/infiniband/hw/cxgb4/mem.c +++ linux-5.8.0/drivers/infiniband/hw/cxgb4/mem.c @@ -399,7 +399,6 @@ mmid = stag >> 8; mhp->ibmr.rkey = mhp->ibmr.lkey = stag; mhp->ibmr.length = mhp->attr.len; - mhp->ibmr.iova = mhp->attr.va_fbo; mhp->ibmr.page_size = 1U << (mhp->attr.page_size + 12); pr_debug("mmid 0x%x mhp %p\n", mmid, mhp); return xa_insert_irq(&mhp->rhp->mrs, mmid, mhp, GFP_KERNEL); --- linux-5.8.0.orig/drivers/infiniband/hw/cxgb4/qp.c +++ linux-5.8.0/drivers/infiniband/hw/cxgb4/qp.c @@ -2471,7 +2471,7 @@ init_attr->cap.max_send_wr = qhp->attr.sq_num_entries; init_attr->cap.max_recv_wr = qhp->attr.rq_num_entries; init_attr->cap.max_send_sge = qhp->attr.sq_max_sges; - init_attr->cap.max_recv_sge = qhp->attr.sq_max_sges; + init_attr->cap.max_recv_sge = qhp->attr.rq_max_sges; init_attr->cap.max_inline_data = T4_MAX_SEND_INLINE; init_attr->sq_sig_type = qhp->sq_sig_all ? IB_SIGNAL_ALL_WR : 0; return 0; --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa.h +++ linux-5.8.0/drivers/infiniband/hw/efa/efa.h @@ -139,7 +139,7 @@ struct ib_qp *efa_create_qp(struct ib_pd *ibpd, struct ib_qp_init_attr *init_attr, struct ib_udata *udata); -void efa_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); +int efa_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); int efa_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); struct ib_mr *efa_reg_mr(struct ib_pd *ibpd, u64 start, u64 length, --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa_admin_cmds_defs.h +++ linux-5.8.0/drivers/infiniband/hw/efa/efa_admin_cmds_defs.h @@ -606,8 +606,8 @@ /* Number of sub-CQs to be created for each CQ */ u16 sub_cqs_per_cq; - /* MBZ */ - u16 reserved; + /* Minimum number of WQEs per SQ */ + u16 min_sq_depth; /* Maximum number of SGEs (buffers) allowed for a single send WQE */ u16 max_wr_send_sges; @@ -632,6 +632,17 @@ /* Maximum number of SGEs for a single RDMA read WQE */ u16 max_wr_rdma_sges; + + /* + * Maximum number of bytes that can be written to SQ between two + * consecutive doorbells (in units of 64B). Driver must ensure that only + * complete WQEs are written to queue before issuing a doorbell. + * Examples: max_tx_batch=16 and WQE size = 64B, means up to 16 WQEs can + * be written to SQ between two consecutive doorbells. max_tx_batch=11 + * and WQE size = 128B, means up to 5 WQEs can be written to SQ between + * two consecutive doorbells. Zero means unlimited. + */ + u16 max_tx_batch; }; struct efa_admin_feature_aenq_desc { --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa_com_cmd.c +++ linux-5.8.0/drivers/infiniband/hw/efa/efa_com_cmd.c @@ -480,6 +480,8 @@ result->max_llq_size = resp.u.queue_attr.max_llq_size; result->sub_cqs_per_cq = resp.u.queue_attr.sub_cqs_per_cq; result->max_wr_rdma_sge = resp.u.queue_attr.max_wr_rdma_sges; + result->max_tx_batch = resp.u.queue_attr.max_tx_batch; + result->min_sq_depth = resp.u.queue_attr.min_sq_depth; err = efa_com_get_feature(edev, &resp, EFA_ADMIN_NETWORK_ATTR); if (err) { --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa_com_cmd.h +++ linux-5.8.0/drivers/infiniband/hw/efa/efa_com_cmd.h @@ -127,6 +127,8 @@ u16 max_sq_sge; u16 max_rq_sge; u16 max_wr_rdma_sge; + u16 max_tx_batch; + u16 min_sq_depth; u8 db_bar; }; --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa_main.c +++ linux-5.8.0/drivers/infiniband/hw/efa/efa_main.c @@ -12,10 +12,12 @@ #include "efa.h" -#define PCI_DEV_ID_EFA_VF 0xefa0 +#define PCI_DEV_ID_EFA0_VF 0xefa0 +#define PCI_DEV_ID_EFA1_VF 0xefa1 static const struct pci_device_id efa_pci_tbl[] = { - { PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA_VF) }, + { PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA0_VF) }, + { PCI_VDEVICE(AMAZON, PCI_DEV_ID_EFA1_VF) }, { } }; --- linux-5.8.0.orig/drivers/infiniband/hw/efa/efa_verbs.c +++ linux-5.8.0/drivers/infiniband/hw/efa/efa_verbs.c @@ -843,7 +843,7 @@ return efa_com_destroy_cq(&dev->edev, ¶ms); } -void efa_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +int efa_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct efa_dev *dev = to_edev(ibcq->device); struct efa_cq *cq = to_ecq(ibcq); @@ -856,6 +856,7 @@ efa_destroy_cq_idx(dev, cq->cq_idx); efa_free_mapped(dev, cq->cpu_addr, cq->dma_addr, cq->size, DMA_FROM_DEVICE); + return 0; } static int cq_mmap_entries_setup(struct efa_dev *dev, struct efa_cq *cq, @@ -1502,11 +1503,39 @@ return efa_com_dealloc_uar(&dev->edev, ¶ms); } +#define EFA_CHECK_USER_COMP(_dev, _comp_mask, _attr, _mask, _attr_str) \ + (_attr_str = (!(_dev)->dev_attr._attr || ((_comp_mask) & (_mask))) ? \ + NULL : #_attr) + +static int efa_user_comp_handshake(const struct ib_ucontext *ibucontext, + const struct efa_ibv_alloc_ucontext_cmd *cmd) +{ + struct efa_dev *dev = to_edev(ibucontext->device); + char *attr_str; + + if (EFA_CHECK_USER_COMP(dev, cmd->comp_mask, max_tx_batch, + EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH, attr_str)) + goto err; + + if (EFA_CHECK_USER_COMP(dev, cmd->comp_mask, min_sq_depth, + EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR, + attr_str)) + goto err; + + return 0; + +err: + ibdev_dbg(&dev->ibdev, "Userspace handshake failed for %s attribute\n", + attr_str); + return -EOPNOTSUPP; +} + int efa_alloc_ucontext(struct ib_ucontext *ibucontext, struct ib_udata *udata) { struct efa_ucontext *ucontext = to_eucontext(ibucontext); struct efa_dev *dev = to_edev(ibucontext->device); struct efa_ibv_alloc_ucontext_resp resp = {}; + struct efa_ibv_alloc_ucontext_cmd cmd = {}; struct efa_com_alloc_uar_result result; int err; @@ -1515,6 +1544,18 @@ * we will ack input fields in our response. */ + err = ib_copy_from_udata(&cmd, udata, + min(sizeof(cmd), udata->inlen)); + if (err) { + ibdev_dbg(&dev->ibdev, + "Cannot copy udata for alloc_ucontext\n"); + goto err_out; + } + + err = efa_user_comp_handshake(ibucontext, &cmd); + if (err) + goto err_out; + err = efa_com_alloc_uar(&dev->edev, &result); if (err) goto err_out; @@ -1526,6 +1567,8 @@ resp.sub_cqs_per_cq = dev->dev_attr.sub_cqs_per_cq; resp.inline_buf_size = dev->dev_attr.inline_buf_size; resp.max_llq_size = dev->dev_attr.max_llq_size; + resp.max_tx_batch = dev->dev_attr.max_tx_batch; + resp.min_sq_wr = dev->dev_attr.min_sq_depth; if (udata && udata->outlen) { err = ib_copy_to_udata(udata, &resp, --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/chip.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/chip.c @@ -15244,7 +15244,8 @@ & CCE_REVISION_SW_MASK); /* alloc netdev data */ - if (hfi1_netdev_alloc(dd)) + ret = hfi1_netdev_alloc(dd); + if (ret) goto bail_cleanup; ret = set_up_context_variables(dd); --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/file_ops.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/file_ops.c @@ -1,4 +1,5 @@ /* + * Copyright(c) 2020 Cornelis Networks, Inc. * Copyright(c) 2015-2020 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -206,8 +207,6 @@ spin_lock_init(&fd->tid_lock); spin_lock_init(&fd->invalid_lock); fd->rec_cpu_num = -1; /* no cpu affinity by default */ - fd->mm = current->mm; - mmgrab(fd->mm); fd->dd = dd; fp->private_data = fd; return 0; @@ -711,7 +710,6 @@ deallocate_ctxt(uctxt); done: - mmdrop(fdata->mm); if (atomic_dec_and_test(&dd->user_refcount)) complete(&dd->user_comp); --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/hfi.h +++ linux-5.8.0/drivers/infiniband/hw/hfi1/hfi.h @@ -1,6 +1,7 @@ #ifndef _HFI1_KERNEL_H #define _HFI1_KERNEL_H /* + * Copyright(c) 2020 Cornelis Networks, Inc. * Copyright(c) 2015-2020 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -1451,7 +1452,6 @@ u32 invalid_tid_idx; /* protect invalid_tids array and invalid_tid_idx */ spinlock_t invalid_lock; - struct mm_struct *mm; }; extern struct xarray hfi1_dev_table; --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/mmu_rb.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/mmu_rb.c @@ -1,4 +1,5 @@ /* + * Copyright(c) 2020 Cornelis Networks, Inc. * Copyright(c) 2016 - 2017 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -48,23 +49,11 @@ #include #include #include +#include #include "mmu_rb.h" #include "trace.h" -struct mmu_rb_handler { - struct mmu_notifier mn; - struct rb_root_cached root; - void *ops_arg; - spinlock_t lock; /* protect the RB tree */ - struct mmu_rb_ops *ops; - struct mm_struct *mm; - struct list_head lru_list; - struct work_struct del_work; - struct list_head del_list; - struct workqueue_struct *wq; -}; - static unsigned long mmu_node_start(struct mmu_rb_node *); static unsigned long mmu_node_last(struct mmu_rb_node *); static int mmu_notifier_range_start(struct mmu_notifier *, @@ -92,37 +81,36 @@ return PAGE_ALIGN(node->addr + node->len) - 1; } -int hfi1_mmu_rb_register(void *ops_arg, struct mm_struct *mm, +int hfi1_mmu_rb_register(void *ops_arg, struct mmu_rb_ops *ops, struct workqueue_struct *wq, struct mmu_rb_handler **handler) { - struct mmu_rb_handler *handlr; + struct mmu_rb_handler *h; int ret; - handlr = kmalloc(sizeof(*handlr), GFP_KERNEL); - if (!handlr) + h = kmalloc(sizeof(*h), GFP_KERNEL); + if (!h) return -ENOMEM; - handlr->root = RB_ROOT_CACHED; - handlr->ops = ops; - handlr->ops_arg = ops_arg; - INIT_HLIST_NODE(&handlr->mn.hlist); - spin_lock_init(&handlr->lock); - handlr->mn.ops = &mn_opts; - handlr->mm = mm; - INIT_WORK(&handlr->del_work, handle_remove); - INIT_LIST_HEAD(&handlr->del_list); - INIT_LIST_HEAD(&handlr->lru_list); - handlr->wq = wq; + h->root = RB_ROOT_CACHED; + h->ops = ops; + h->ops_arg = ops_arg; + INIT_HLIST_NODE(&h->mn.hlist); + spin_lock_init(&h->lock); + h->mn.ops = &mn_opts; + INIT_WORK(&h->del_work, handle_remove); + INIT_LIST_HEAD(&h->del_list); + INIT_LIST_HEAD(&h->lru_list); + h->wq = wq; - ret = mmu_notifier_register(&handlr->mn, handlr->mm); + ret = mmu_notifier_register(&h->mn, current->mm); if (ret) { - kfree(handlr); + kfree(h); return ret; } - *handler = handlr; + *handler = h; return 0; } @@ -134,7 +122,7 @@ struct list_head del_list; /* Unregister first so we don't get any more notifications. */ - mmu_notifier_unregister(&handler->mn, handler->mm); + mmu_notifier_unregister(&handler->mn, handler->mn.mm); /* * Make sure the wq delete handler is finished running. It will not @@ -166,6 +154,10 @@ int ret = 0; trace_hfi1_mmu_rb_insert(mnode->addr, mnode->len); + + if (current->mm != handler->mn.mm) + return -EPERM; + spin_lock_irqsave(&handler->lock, flags); node = __mmu_rb_search(handler, mnode->addr, mnode->len); if (node) { @@ -180,6 +172,7 @@ __mmu_int_rb_remove(mnode, &handler->root); list_del(&mnode->list); /* remove from LRU list */ } + mnode->handler = handler; unlock: spin_unlock_irqrestore(&handler->lock, flags); return ret; @@ -217,6 +210,9 @@ unsigned long flags; bool ret = false; + if (current->mm != handler->mn.mm) + return ret; + spin_lock_irqsave(&handler->lock, flags); node = __mmu_rb_search(handler, addr, len); if (node) { @@ -239,6 +235,9 @@ unsigned long flags; bool stop = false; + if (current->mm != handler->mn.mm) + return; + INIT_LIST_HEAD(&del_list); spin_lock_irqsave(&handler->lock, flags); @@ -272,6 +271,9 @@ { unsigned long flags; + if (current->mm != handler->mn.mm) + return; + /* Validity of handler and node pointers has been checked by caller. */ trace_hfi1_mmu_rb_remove(node->addr, node->len); spin_lock_irqsave(&handler->lock, flags); --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/mmu_rb.h +++ linux-5.8.0/drivers/infiniband/hw/hfi1/mmu_rb.h @@ -1,4 +1,5 @@ /* + * Copyright(c) 2020 Cornelis Networks, Inc. * Copyright(c) 2016 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -54,6 +55,7 @@ unsigned long len; unsigned long __last; struct rb_node node; + struct mmu_rb_handler *handler; struct list_head list; }; @@ -71,7 +73,19 @@ void *evict_arg, bool *stop); }; -int hfi1_mmu_rb_register(void *ops_arg, struct mm_struct *mm, +struct mmu_rb_handler { + struct mmu_notifier mn; + struct rb_root_cached root; + void *ops_arg; + spinlock_t lock; /* protect the RB tree */ + struct mmu_rb_ops *ops; + struct list_head lru_list; + struct work_struct del_work; + struct list_head del_list; + struct workqueue_struct *wq; +}; + +int hfi1_mmu_rb_register(void *ops_arg, struct mmu_rb_ops *ops, struct workqueue_struct *wq, struct mmu_rb_handler **handler); --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/tid_rdma.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/tid_rdma.c @@ -3215,6 +3215,7 @@ case IB_WR_ATOMIC_CMP_AND_SWP: case IB_WR_ATOMIC_FETCH_AND_ADD: case IB_WR_RDMA_WRITE: + case IB_WR_RDMA_WRITE_WITH_IMM: switch (prev->wr.opcode) { case IB_WR_TID_RDMA_WRITE: req = wqe_to_tid_req(prev); --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/user_exp_rcv.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/user_exp_rcv.c @@ -1,4 +1,5 @@ /* + * Copyright(c) 2020 Cornelis Networks, Inc. * Copyright(c) 2015-2018 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -173,15 +174,18 @@ { struct page **pages; struct hfi1_devdata *dd = fd->uctxt->dd; + struct mm_struct *mm; if (mapped) { pci_unmap_single(dd->pcidev, node->dma_addr, node->npages * PAGE_SIZE, PCI_DMA_FROMDEVICE); pages = &node->pages[idx]; + mm = mm_from_tid_node(node); } else { pages = &tidbuf->pages[idx]; + mm = current->mm; } - hfi1_release_user_pages(fd->mm, pages, npages, mapped); + hfi1_release_user_pages(mm, pages, npages, mapped); fd->tid_n_pinned -= npages; } @@ -216,12 +220,12 @@ * pages, accept the amount pinned so far and program only that. * User space knows how to deal with partially programmed buffers. */ - if (!hfi1_can_pin_pages(dd, fd->mm, fd->tid_n_pinned, npages)) { + if (!hfi1_can_pin_pages(dd, current->mm, fd->tid_n_pinned, npages)) { kfree(pages); return -ENOMEM; } - pinned = hfi1_acquire_user_pages(fd->mm, vaddr, npages, true, pages); + pinned = hfi1_acquire_user_pages(current->mm, vaddr, npages, true, pages); if (pinned <= 0) { kfree(pages); return pinned; @@ -756,7 +760,7 @@ if (fd->use_mn) { ret = mmu_interval_notifier_insert( - &node->notifier, fd->mm, + &node->notifier, current->mm, tbuf->vaddr + (pageidx * PAGE_SIZE), npages * PAGE_SIZE, &tid_mn_ops); if (ret) --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/user_exp_rcv.h +++ linux-5.8.0/drivers/infiniband/hw/hfi1/user_exp_rcv.h @@ -1,6 +1,7 @@ #ifndef _HFI1_USER_EXP_RCV_H #define _HFI1_USER_EXP_RCV_H /* + * Copyright(c) 2020 - Cornelis Networks, Inc. * Copyright(c) 2015 - 2017 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -95,4 +96,9 @@ int hfi1_user_exp_rcv_invalid(struct hfi1_filedata *fd, struct hfi1_tid_info *tinfo); +static inline struct mm_struct *mm_from_tid_node(struct tid_rb_node *node) +{ + return node->notifier.mm; +} + #endif /* _HFI1_USER_EXP_RCV_H */ --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/user_sdma.c +++ linux-5.8.0/drivers/infiniband/hw/hfi1/user_sdma.c @@ -1,4 +1,5 @@ /* + * Copyright(c) 2020 - Cornelis Networks, Inc. * Copyright(c) 2015 - 2018 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -188,7 +189,6 @@ atomic_set(&pq->n_reqs, 0); init_waitqueue_head(&pq->wait); atomic_set(&pq->n_locked, 0); - pq->mm = fd->mm; iowait_init(&pq->busy, 0, NULL, NULL, defer_packet_queue, activate_packet_queue, NULL, NULL); @@ -230,7 +230,7 @@ cq->nentries = hfi1_sdma_comp_ring_size; - ret = hfi1_mmu_rb_register(pq, pq->mm, &sdma_rb_ops, dd->pport->hfi1_wq, + ret = hfi1_mmu_rb_register(pq, &sdma_rb_ops, dd->pport->hfi1_wq, &pq->handler); if (ret) { dd_dev_err(dd, "Failed to register with MMU %d", ret); @@ -980,13 +980,13 @@ npages -= node->npages; retry: - if (!hfi1_can_pin_pages(pq->dd, pq->mm, + if (!hfi1_can_pin_pages(pq->dd, current->mm, atomic_read(&pq->n_locked), npages)) { cleared = sdma_cache_evict(pq, npages); if (cleared >= npages) goto retry; } - pinned = hfi1_acquire_user_pages(pq->mm, + pinned = hfi1_acquire_user_pages(current->mm, ((unsigned long)iovec->iov.iov_base + (node->npages * PAGE_SIZE)), npages, 0, pages + node->npages); @@ -995,7 +995,7 @@ return pinned; } if (pinned != npages) { - unpin_vector_pages(pq->mm, pages, node->npages, pinned); + unpin_vector_pages(current->mm, pages, node->npages, pinned); return -EFAULT; } kfree(node->pages); @@ -1008,7 +1008,8 @@ static void unpin_sdma_pages(struct sdma_mmu_node *node) { if (node->npages) { - unpin_vector_pages(node->pq->mm, node->pages, 0, node->npages); + unpin_vector_pages(mm_from_sdma_node(node), node->pages, 0, + node->npages); atomic_sub(node->npages, &node->pq->n_locked); } } --- linux-5.8.0.orig/drivers/infiniband/hw/hfi1/user_sdma.h +++ linux-5.8.0/drivers/infiniband/hw/hfi1/user_sdma.h @@ -1,6 +1,7 @@ #ifndef _HFI1_USER_SDMA_H #define _HFI1_USER_SDMA_H /* + * Copyright(c) 2020 - Cornelis Networks, Inc. * Copyright(c) 2015 - 2018 Intel Corporation. * * This file is provided under a dual BSD/GPLv2 license. When using or @@ -133,7 +134,6 @@ unsigned long unpinned; struct mmu_rb_handler *handler; atomic_t n_locked; - struct mm_struct *mm; }; struct hfi1_user_sdma_comp_q { @@ -250,4 +250,9 @@ struct iovec *iovec, unsigned long dim, unsigned long *count); +static inline struct mm_struct *mm_from_sdma_node(struct sdma_mmu_node *node) +{ + return node->rb.handler->mn.mm; +} + #endif /* _HFI1_USER_SDMA_H */ --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_cq.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_cq.c @@ -258,7 +258,8 @@ INIT_LIST_HEAD(&hr_cq->rq_list); if (udata) { - ret = ib_copy_from_udata(&ucmd, udata, sizeof(ucmd)); + ret = ib_copy_from_udata(&ucmd, udata, + min(udata->inlen, sizeof(ucmd))); if (ret) { ibdev_err(ibdev, "Failed to copy CQ udata, err %d\n", ret); @@ -295,7 +296,8 @@ if (udata) { resp.cqn = hr_cq->cqn; - ret = ib_copy_to_udata(udata, &resp, sizeof(resp)); + ret = ib_copy_to_udata(udata, &resp, + min(udata->outlen, sizeof(resp))); if (ret) goto err_cqc; } @@ -311,7 +313,7 @@ return ret; } -void hns_roce_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) +int hns_roce_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) { struct hns_roce_dev *hr_dev = to_hr_dev(ib_cq->device); struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq); @@ -322,6 +324,7 @@ free_cq_buf(hr_dev, hr_cq); free_cq_db(hr_dev, hr_cq, udata); free_cqc(hr_dev, hr_cq); + return 0; } void hns_roce_cq_completion(struct hns_roce_dev *hr_dev, u32 cqn) --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_device.h +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_device.h @@ -66,8 +66,6 @@ #define HNS_ROCE_CQE_WCMD_EMPTY_BIT 0x2 #define HNS_ROCE_MIN_CQE_CNT 16 -#define HNS_ROCE_RESERVED_SGE 1 - #define HNS_ROCE_MAX_IRQ_NUM 128 #define HNS_ROCE_SGE_IN_WQE 2 @@ -631,7 +629,7 @@ struct hns_roce_db sdb; unsigned long en_flags; u32 doorbell_qpn; - u32 sq_signal_bits; + enum ib_sig_type sq_signal_bits; struct hns_roce_wq sq; struct hns_roce_mtr mtr; @@ -931,7 +929,7 @@ int (*poll_cq)(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc); int (*dereg_mr)(struct hns_roce_dev *hr_dev, struct hns_roce_mr *mr, struct ib_udata *udata); - void (*destroy_cq)(struct ib_cq *ibcq, struct ib_udata *udata); + int (*destroy_cq)(struct ib_cq *ibcq, struct ib_udata *udata); int (*modify_cq)(struct ib_cq *cq, u16 cq_count, u16 cq_period); int (*init_eq)(struct hns_roce_dev *hr_dev); void (*cleanup_eq)(struct hns_roce_dev *hr_dev); @@ -1248,7 +1246,7 @@ int hns_roce_create_cq(struct ib_cq *ib_cq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void hns_roce_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata); +int hns_roce_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata); int hns_roce_db_map_user(struct hns_roce_ucontext *context, struct ib_udata *udata, unsigned long virt, struct hns_roce_db *db); --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_hw_v1.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_hw_v1.c @@ -271,7 +271,6 @@ ps_opcode = HNS_ROCE_WQE_OPCODE_SEND; break; case IB_WR_LOCAL_INV: - break; case IB_WR_ATOMIC_CMP_AND_SWP: case IB_WR_ATOMIC_FETCH_AND_ADD: case IB_WR_LSO: @@ -3573,7 +3572,7 @@ return 0; } -static void hns_roce_v1_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +static int hns_roce_v1_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct hns_roce_dev *hr_dev = to_hr_dev(ibcq->device); struct hns_roce_cq *hr_cq = to_hr_cq(ibcq); @@ -3604,6 +3603,7 @@ } wait_time++; } + return 0; } static void set_eq_cons_index_v1(struct hns_roce_eq *eq, int req_not) --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_hw_v2.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_hw_v2.c @@ -150,25 +150,20 @@ V2_RC_SEND_WQE_BYTE_16_SGE_NUM_S, valid_num_sge); } -static void set_extend_sge(struct hns_roce_qp *qp, const struct ib_send_wr *wr, - unsigned int *sge_ind, unsigned int valid_num_sge) +static void set_extend_sge(struct hns_roce_qp *qp, struct ib_sge *sge, + unsigned int *sge_ind, unsigned int cnt) { struct hns_roce_v2_wqe_data_seg *dseg; - unsigned int cnt = valid_num_sge; - struct ib_sge *sge = wr->sg_list; unsigned int idx = *sge_ind; - if (qp->ibqp.qp_type == IB_QPT_RC || qp->ibqp.qp_type == IB_QPT_UC) { - cnt -= HNS_ROCE_SGE_IN_WQE; - sge += HNS_ROCE_SGE_IN_WQE; - } - while (cnt > 0) { dseg = hns_roce_get_extend_sge(qp, idx & (qp->sge.sge_cnt - 1)); - set_data_seg_v2(dseg, sge); - idx++; + if (likely(sge->length)) { + set_data_seg_v2(dseg, sge); + idx++; + cnt--; + } sge++; - cnt--; } *sge_ind = idx; @@ -231,7 +226,8 @@ } } - set_extend_sge(qp, wr, sge_ind, valid_num_sge); + set_extend_sge(qp, wr->sg_list + i, sge_ind, + valid_num_sge - HNS_ROCE_SGE_IN_WQE); } roce_set_field(rc_sq_wqe->byte_16, @@ -292,14 +288,11 @@ void *wqe, unsigned int *sge_idx, unsigned int owner_bit) { - struct hns_roce_dev *hr_dev = to_hr_dev(qp->ibqp.device); struct hns_roce_ah *ah = to_hr_ah(ud_wr(wr)->ah); struct hns_roce_v2_ud_send_wqe *ud_sq_wqe = wqe; unsigned int curr_idx = *sge_idx; int valid_num_sge; u32 msg_len = 0; - bool loopback; - u8 *smac; valid_num_sge = calc_wr_sge_num(wr, &msg_len); memset(ud_sq_wqe, 0, sizeof(*ud_sq_wqe)); @@ -317,13 +310,6 @@ roce_set_field(ud_sq_wqe->byte_48, V2_UD_SEND_WQE_BYTE_48_DMAC_5_M, V2_UD_SEND_WQE_BYTE_48_DMAC_5_S, ah->av.mac[5]); - /* MAC loopback */ - smac = (u8 *)hr_dev->dev_addr[qp->port]; - loopback = ether_addr_equal_unaligned(ah->av.mac, smac) ? 1 : 0; - - roce_set_bit(ud_sq_wqe->byte_40, - V2_UD_SEND_WQE_BYTE_40_LBI_S, loopback); - roce_set_field(ud_sq_wqe->byte_4, V2_UD_SEND_WQE_BYTE_4_OPCODE_M, V2_UD_SEND_WQE_BYTE_4_OPCODE_S, @@ -390,7 +376,7 @@ memcpy(&ud_sq_wqe->dgid[0], &ah->av.dgid[0], GID_LEN_V2); - set_extend_sge(qp, wr, &curr_idx, valid_num_sge); + set_extend_sge(qp, wr->sg_list, &curr_idx, valid_num_sge); *sge_idx = curr_idx; @@ -629,7 +615,7 @@ wqe_idx = (hr_qp->rq.head + nreq) & (hr_qp->rq.wqe_cnt - 1); - if (unlikely(wr->num_sge >= hr_qp->rq.max_gs)) { + if (unlikely(wr->num_sge > hr_qp->rq.max_gs)) { ibdev_err(ibdev, "rq:num_sge=%d >= qp->sq.max_gs=%d\n", wr->num_sge, hr_qp->rq.max_gs); ret = -EINVAL; @@ -649,7 +635,6 @@ if (wr->num_sge < hr_qp->rq.max_gs) { dseg->lkey = cpu_to_le32(HNS_ROCE_INVALID_LKEY); dseg->addr = 0; - dseg->len = cpu_to_le32(HNS_ROCE_INVALID_SGE_LENGTH); } /* rq support inline data */ @@ -783,8 +768,8 @@ } if (wr->num_sge < srq->max_gs) { - dseg[i].len = cpu_to_le32(HNS_ROCE_INVALID_SGE_LENGTH); - dseg[i].lkey = cpu_to_le32(HNS_ROCE_INVALID_LKEY); + dseg[i].len = 0; + dseg[i].lkey = cpu_to_le32(0x100); dseg[i].addr = 0; } @@ -1113,7 +1098,7 @@ u32 timeout = 0; int handle = 0; u16 desc_ret; - int ret = 0; + int ret; int ntc; spin_lock_bh(&csq->lock); @@ -1158,15 +1143,14 @@ if (hns_roce_cmq_csq_done(hr_dev)) { complete = true; handle = 0; + ret = 0; while (handle < num) { /* get the result of hardware write back */ desc_to_use = &csq->desc[ntc]; desc[handle] = *desc_to_use; dev_dbg(hr_dev->dev, "Get cmq desc:\n"); desc_ret = le16_to_cpu(desc[handle].retval); - if (desc_ret == CMD_EXEC_SUCCESS) - ret = 0; - else + if (unlikely(desc_ret != CMD_EXEC_SUCCESS)) ret = -EIO; priv->cmq.last_status = desc_ret; ntc++; @@ -1730,7 +1714,6 @@ caps->flags = HNS_ROCE_CAP_FLAG_REREG_MR | HNS_ROCE_CAP_FLAG_ROCE_V1_V2 | - HNS_ROCE_CAP_FLAG_RQ_INLINE | HNS_ROCE_CAP_FLAG_RECORD_DB | HNS_ROCE_CAP_FLAG_SQ_RECORD_DB; @@ -1771,9 +1754,9 @@ int *buf_page_size, int *bt_page_size, u32 hem_type) { u64 obj_per_chunk; - int bt_chunk_size = 1 << PAGE_SHIFT; - int buf_chunk_size = 1 << PAGE_SHIFT; - int obj_per_chunk_default = buf_chunk_size / obj_size; + u64 bt_chunk_size = PAGE_SIZE; + u64 buf_chunk_size = PAGE_SIZE; + u64 obj_per_chunk_default = buf_chunk_size / obj_size; *buf_page_size = 0; *bt_page_size = 0; @@ -2745,6 +2728,7 @@ roce_set_bit(mpt_entry->byte_8_mw_cnt_en, V2_MPT_BYTE_8_R_INV_EN_S, 1); roce_set_bit(mpt_entry->byte_8_mw_cnt_en, V2_MPT_BYTE_8_L_INV_EN_S, 1); + roce_set_bit(mpt_entry->byte_8_mw_cnt_en, V2_MPT_BYTE_8_LW_EN_S, 1); roce_set_bit(mpt_entry->byte_12_mw_pa, V2_MPT_BYTE_12_PA_S, 0); roce_set_bit(mpt_entry->byte_12_mw_pa, V2_MPT_BYTE_12_MR_MW_S, 1); @@ -3053,6 +3037,7 @@ IB_WC_RETRY_EXC_ERR }, { HNS_ROCE_CQE_V2_RNR_RETRY_EXC_ERR, IB_WC_RNR_RETRY_EXC_ERR }, { HNS_ROCE_CQE_V2_REMOTE_ABORT_ERR, IB_WC_REM_ABORT_ERR }, + { HNS_ROCE_CQE_V2_GENERAL_ERR, IB_WC_GENERAL_ERR} }; u32 cqe_status = roce_get_field(cqe->byte_4, V2_CQE_BYTE_4_STATUS_M, @@ -3075,6 +3060,14 @@ sizeof(*cqe), false); /* + * For hns ROCEE, GENERAL_ERR is an error type that is not defined in + * the standard protocol, the driver must ignore it and needn't to set + * the QP to an error state. + */ + if (cqe_status == HNS_ROCE_CQE_V2_GENERAL_ERR) + return; + + /* * Hip08 hardware cannot flush the WQEs in SQ/RQ if the QP state gets * into errored mode. Hence, as a workaround to this hardware * limitation, driver needs to assist in flushing. But the flushing @@ -3632,9 +3625,6 @@ V2_QPC_BYTE_76_SRQ_EN_S, 1); } - roce_set_field(context->byte_172_sq_psn, V2_QPC_BYTE_172_ACK_REQ_FREQ_M, - V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 4); - roce_set_bit(context->byte_172_sq_psn, V2_QPC_BYTE_172_FRE_S, 1); hr_qp->access_flags = attr->qp_access_flags; @@ -3975,6 +3965,7 @@ dma_addr_t trrl_ba; dma_addr_t irrl_ba; enum ib_mtu mtu; + u8 lp_pktn_ini; u8 port_num; u64 *mtts; u8 *dmac; @@ -4082,13 +4073,21 @@ } #define MAX_LP_MSG_LEN 65536 - /* MTU*(2^LP_PKTN_INI) shouldn't be bigger than 64kb */ + /* MTU * (2 ^ LP_PKTN_INI) shouldn't be bigger than 64KB */ + lp_pktn_ini = ilog2(MAX_LP_MSG_LEN / ib_mtu_enum_to_int(mtu)); + roce_set_field(context->byte_56_dqpn_err, V2_QPC_BYTE_56_LP_PKTN_INI_M, - V2_QPC_BYTE_56_LP_PKTN_INI_S, - ilog2(MAX_LP_MSG_LEN / ib_mtu_enum_to_int(mtu))); + V2_QPC_BYTE_56_LP_PKTN_INI_S, lp_pktn_ini); roce_set_field(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_LP_PKTN_INI_M, V2_QPC_BYTE_56_LP_PKTN_INI_S, 0); + /* ACK_REQ_FREQ should be larger than or equal to LP_PKTN_INI */ + roce_set_field(context->byte_172_sq_psn, V2_QPC_BYTE_172_ACK_REQ_FREQ_M, + V2_QPC_BYTE_172_ACK_REQ_FREQ_S, lp_pktn_ini); + roce_set_field(qpc_mask->byte_172_sq_psn, + V2_QPC_BYTE_172_ACK_REQ_FREQ_M, + V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 0); + roce_set_bit(qpc_mask->byte_108_rx_reqepsn, V2_QPC_BYTE_108_RX_REQ_PSN_ERR_S, 0); roce_set_field(qpc_mask->byte_96_rx_reqmsn, V2_QPC_BYTE_96_RX_REQ_MSN_M, @@ -4279,11 +4278,19 @@ V2_QPC_BYTE_28_FL_S, 0); memcpy(context->dgid, grh->dgid.raw, sizeof(grh->dgid.raw)); memset(qpc_mask->dgid, 0, sizeof(grh->dgid.raw)); + + hr_qp->sl = rdma_ah_get_sl(&attr->ah_attr); + if (unlikely(hr_qp->sl > MAX_SERVICE_LEVEL)) { + ibdev_err(ibdev, + "failed to fill QPC, sl (%d) shouldn't be larger than %d.\n", + hr_qp->sl, MAX_SERVICE_LEVEL); + return -EINVAL; + } + roce_set_field(context->byte_28_at_fl, V2_QPC_BYTE_28_SL_M, - V2_QPC_BYTE_28_SL_S, rdma_ah_get_sl(&attr->ah_attr)); + V2_QPC_BYTE_28_SL_S, hr_qp->sl); roce_set_field(qpc_mask->byte_28_at_fl, V2_QPC_BYTE_28_SL_M, V2_QPC_BYTE_28_SL_S, 0); - hr_qp->sl = rdma_ah_get_sl(&attr->ah_attr); return 0; } @@ -4301,7 +4308,9 @@ [IB_QPS_RTR] = { [IB_QPS_RESET] = true, [IB_QPS_RTS] = true, [IB_QPS_ERR] = true }, - [IB_QPS_RTS] = { [IB_QPS_RESET] = true, [IB_QPS_ERR] = true }, + [IB_QPS_RTS] = { [IB_QPS_RESET] = true, + [IB_QPS_RTS] = true, + [IB_QPS_ERR] = true }, [IB_QPS_SQD] = {}, [IB_QPS_SQE] = {}, [IB_QPS_ERR] = { [IB_QPS_RESET] = true, [IB_QPS_ERR] = true } @@ -4775,9 +4784,11 @@ V2_QPC_BYTE_28_AT_M, V2_QPC_BYTE_28_AT_S); qp_attr->retry_cnt = roce_get_field(context.byte_212_lsn, - V2_QPC_BYTE_212_RETRY_CNT_M, - V2_QPC_BYTE_212_RETRY_CNT_S); - qp_attr->rnr_retry = le32_to_cpu(context.rq_rnr_timer); + V2_QPC_BYTE_212_RETRY_NUM_INIT_M, + V2_QPC_BYTE_212_RETRY_NUM_INIT_S); + qp_attr->rnr_retry = roce_get_field(context.byte_244_rnr_rxack, + V2_QPC_BYTE_244_RNR_NUM_INIT_M, + V2_QPC_BYTE_244_RNR_NUM_INIT_S); done: qp_attr->cur_qp_state = qp_attr->qp_state; @@ -4793,6 +4804,7 @@ } qp_init_attr->cap = qp_attr->cap; + qp_init_attr->sq_sig_type = hr_qp->sq_signal_bits; out: mutex_unlock(&hr_qp->mutex); @@ -5087,7 +5099,7 @@ attr->srq_limit = limit_wl; attr->max_wr = srq->wqe_cnt - 1; - attr->max_sge = srq->max_gs - HNS_ROCE_RESERVED_SGE; + attr->max_sge = srq->max_gs; out: hns_roce_free_cmd_mailbox(hr_dev, mailbox); --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_hw_v2.h +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_hw_v2.h @@ -92,9 +92,7 @@ #define HNS_ROCE_V2_CQC_TIMER_ENTRY_SZ PAGE_SIZE #define HNS_ROCE_V2_PAGE_SIZE_SUPPORTED 0xFFFFF000 #define HNS_ROCE_V2_MAX_INNER_MTPT_NUM 2 -#define HNS_ROCE_INVALID_LKEY 0x0 -#define HNS_ROCE_INVALID_SGE_LENGTH 0x80000000 - +#define HNS_ROCE_INVALID_LKEY 0x100 #define HNS_ROCE_CMQ_TX_TIMEOUT 30000 #define HNS_ROCE_V2_UC_RC_SGE_NUM_IN_WQE 2 #define HNS_ROCE_V2_RSV_QPS 8 @@ -230,6 +228,7 @@ HNS_ROCE_CQE_V2_TRANSPORT_RETRY_EXC_ERR = 0x15, HNS_ROCE_CQE_V2_RNR_RETRY_EXC_ERR = 0x16, HNS_ROCE_CQE_V2_REMOTE_ABORT_ERR = 0x22, + HNS_ROCE_CQE_V2_GENERAL_ERR = 0x23, HNS_ROCE_V2_CQE_STATUS_MASK = 0xff, }; @@ -1656,7 +1655,7 @@ __le32 rsv_uars_rsv_qps; }; #define V2_QUERY_PF_CAPS_D_NUM_SRQS_S 0 -#define V2_QUERY_PF_CAPS_D_NUM_SRQS_M GENMASK(20, 0) +#define V2_QUERY_PF_CAPS_D_NUM_SRQS_M GENMASK(19, 0) #define V2_QUERY_PF_CAPS_D_RQWQE_HOP_NUM_S 20 #define V2_QUERY_PF_CAPS_D_RQWQE_HOP_NUM_M GENMASK(21, 20) @@ -1958,6 +1957,8 @@ #define HNS_ROCE_V2_AEQE_EVENT_QUEUE_NUM_S 0 #define HNS_ROCE_V2_AEQE_EVENT_QUEUE_NUM_M GENMASK(23, 0) +#define MAX_SERVICE_LEVEL 0x7 + struct hns_roce_wqe_atomic_seg { __le64 fetchadd_swap_data; __le64 cmp_data; --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_main.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_main.c @@ -323,7 +323,8 @@ mutex_init(&context->page_mutex); } - ret = ib_copy_to_udata(udata, &resp, sizeof(resp)); + ret = ib_copy_to_udata(udata, &resp, + min(udata->outlen, sizeof(resp))); if (ret) goto error_fail_copy_to_udata; @@ -775,8 +776,7 @@ return 0; err_qp_table_free: - if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SRQ) - hns_roce_cleanup_qp_table(hr_dev); + hns_roce_cleanup_qp_table(hr_dev); err_cq_table_free: hns_roce_cleanup_cq_table(hr_dev); --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_pd.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_pd.c @@ -70,16 +70,17 @@ } if (udata) { - struct hns_roce_ib_alloc_pd_resp uresp = {.pdn = pd->pdn}; + struct hns_roce_ib_alloc_pd_resp resp = {.pdn = pd->pdn}; - if (ib_copy_to_udata(udata, &uresp, sizeof(uresp))) { + ret = ib_copy_to_udata(udata, &resp, + min(udata->outlen, sizeof(resp))); + if (ret) { hns_roce_pd_free(to_hr_dev(ib_dev), pd->pdn); - ibdev_err(ib_dev, "failed to copy to udata\n"); - return -EFAULT; + ibdev_err(ib_dev, "failed to copy to udata, ret = %d\n", ret); } } - return 0; + return ret; } void hns_roce_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata) --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_qp.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_qp.c @@ -386,8 +386,7 @@ return -EINVAL; } - hr_qp->rq.max_gs = roundup_pow_of_two(max(1U, cap->max_recv_sge) + - HNS_ROCE_RESERVED_SGE); + hr_qp->rq.max_gs = roundup_pow_of_two(max(1U, cap->max_recv_sge)); if (hr_dev->caps.max_rq_sg <= HNS_ROCE_SGE_IN_WQE) hr_qp->rq.wqe_shift = ilog2(hr_dev->caps.max_rq_desc_sz); @@ -402,7 +401,7 @@ hr_qp->rq_inl_buf.wqe_cnt = 0; cap->max_recv_wr = cnt; - cap->max_recv_sge = hr_qp->rq.max_gs - HNS_ROCE_RESERVED_SGE; + cap->max_recv_sge = hr_qp->rq.max_gs; return 0; } @@ -445,7 +444,12 @@ } hr_qp->sge.sge_shift = HNS_ROCE_SGE_SHIFT; - hr_qp->sge.sge_cnt = cnt; + + /* If the number of extended sge is not zero, they MUST use the + * space of HNS_HW_PAGE_SIZE at least. + */ + hr_qp->sge.sge_cnt = cnt ? + max(cnt, (u32)HNS_HW_PAGE_SIZE / HNS_ROCE_SGE_SIZE) : 0; return 0; } @@ -872,9 +876,12 @@ } if (udata) { - if (ib_copy_from_udata(ucmd, udata, sizeof(*ucmd))) { - ibdev_err(ibdev, "Failed to copy QP ucmd\n"); - return -EFAULT; + ret = ib_copy_from_udata(ucmd, udata, + min(udata->inlen, sizeof(*ucmd))); + if (ret) { + ibdev_err(ibdev, + "failed to copy QP ucmd, ret = %d\n", ret); + return ret; } ret = set_user_sq_size(hr_dev, &init_attr->cap, hr_qp, ucmd); @@ -1172,8 +1179,10 @@ mutex_lock(&hr_qp->mutex); - cur_state = attr_mask & IB_QP_CUR_STATE ? - attr->cur_qp_state : (enum ib_qp_state)hr_qp->state; + if (attr_mask & IB_QP_CUR_STATE && attr->cur_qp_state != hr_qp->state) + goto out; + + cur_state = hr_qp->state; new_state = attr_mask & IB_QP_STATE ? attr->qp_state : cur_state; if (ibqp->uobject && --- linux-5.8.0.orig/drivers/infiniband/hw/hns/hns_roce_srq.c +++ linux-5.8.0/drivers/infiniband/hw/hns/hns_roce_srq.c @@ -297,10 +297,11 @@ spin_lock_init(&srq->lock); srq->wqe_cnt = roundup_pow_of_two(init_attr->attr.max_wr + 1); - srq->max_gs = init_attr->attr.max_sge + HNS_ROCE_RESERVED_SGE; + srq->max_gs = init_attr->attr.max_sge; if (udata) { - ret = ib_copy_from_udata(&ucmd, udata, sizeof(ucmd)); + ret = ib_copy_from_udata(&ucmd, udata, + min(udata->inlen, sizeof(ucmd))); if (ret) { ibdev_err(ibdev, "Failed to copy SRQ udata, err %d\n", ret); @@ -343,11 +344,10 @@ resp.srqn = srq->srqn; if (udata) { - if (ib_copy_to_udata(udata, &resp, - min(udata->outlen, sizeof(resp)))) { - ret = -EFAULT; + ret = ib_copy_to_udata(udata, &resp, + min(udata->outlen, sizeof(resp))); + if (ret) goto err_srqc_alloc; - } } return 0; --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw.h +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw.h @@ -409,8 +409,8 @@ } /* i40iw.c */ -void i40iw_add_ref(struct ib_qp *); -void i40iw_rem_ref(struct ib_qp *); +void i40iw_qp_add_ref(struct ib_qp *ibqp); +void i40iw_qp_rem_ref(struct ib_qp *ibqp); struct ib_qp *i40iw_get_qp(struct ib_device *, int); void i40iw_flush_wqes(struct i40iw_device *iwdev, @@ -554,9 +554,8 @@ bool wait); void i40iw_receive_ilq(struct i40iw_sc_vsi *vsi, struct i40iw_puda_buf *rbuf); void i40iw_free_sqbuf(struct i40iw_sc_vsi *vsi, void *bufp); -void i40iw_free_qp_resources(struct i40iw_device *iwdev, - struct i40iw_qp *iwqp, - u32 qp_num); +void i40iw_free_qp_resources(struct i40iw_qp *iwqp); + enum i40iw_status_code i40iw_obj_aligned_mem(struct i40iw_device *iwdev, struct i40iw_dma_mem *memptr, u32 size, u32 mask); --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_cm.c +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_cm.c @@ -2322,7 +2322,7 @@ iwqp = cm_node->iwqp; if (iwqp) { iwqp->cm_node = NULL; - i40iw_rem_ref(&iwqp->ibqp); + i40iw_qp_rem_ref(&iwqp->ibqp); cm_node->iwqp = NULL; } else if (cm_node->qhash_set) { i40iw_get_addr_info(cm_node, &nfo); @@ -3452,7 +3452,7 @@ kfree(work); return; } - i40iw_add_ref(&iwqp->ibqp); + i40iw_qp_add_ref(&iwqp->ibqp); spin_unlock_irqrestore(&iwdev->qptable_lock, flags); work->iwqp = iwqp; @@ -3623,7 +3623,7 @@ kfree(dwork); i40iw_cm_disconn_true(iwqp); - i40iw_rem_ref(&iwqp->ibqp); + i40iw_qp_rem_ref(&iwqp->ibqp); } /** @@ -3745,7 +3745,7 @@ cm_node->lsmm_size = accept.size + conn_param->private_data_len; i40iw_cm_init_tsa_conn(iwqp, cm_node); cm_id->add_ref(cm_id); - i40iw_add_ref(&iwqp->ibqp); + i40iw_qp_add_ref(&iwqp->ibqp); attr.qp_state = IB_QPS_RTS; cm_node->qhash_set = false; @@ -3908,7 +3908,7 @@ iwqp->cm_node = cm_node; cm_node->iwqp = iwqp; iwqp->cm_id = cm_id; - i40iw_add_ref(&iwqp->ibqp); + i40iw_qp_add_ref(&iwqp->ibqp); if (cm_node->state != I40IW_CM_STATE_OFFLOADED) { cm_node->state = I40IW_CM_STATE_SYN_SENT; --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_hw.c +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_hw.c @@ -313,7 +313,7 @@ __func__, info->qp_cq_id); continue; } - i40iw_add_ref(&iwqp->ibqp); + i40iw_qp_add_ref(&iwqp->ibqp); spin_unlock_irqrestore(&iwdev->qptable_lock, flags); qp = &iwqp->sc_qp; spin_lock_irqsave(&iwqp->lock, flags); @@ -427,7 +427,7 @@ break; } if (info->qp) - i40iw_rem_ref(&iwqp->ibqp); + i40iw_qp_rem_ref(&iwqp->ibqp); } while (1); if (aeqcnt) --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_main.c +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_main.c @@ -54,10 +54,6 @@ #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \ __stringify(DRV_VERSION_MINOR) "." __stringify(DRV_VERSION_BUILD) -static int push_mode; -module_param(push_mode, int, 0644); -MODULE_PARM_DESC(push_mode, "Low latency mode: 0=disabled (default), 1=enabled)"); - static int debug; module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "debug flags: 0=disabled (default), 0x7fffffff=all"); @@ -1582,7 +1578,6 @@ if (status) goto exit; iwdev->obj_next = iwdev->obj_mem; - iwdev->push_mode = push_mode; init_waitqueue_head(&iwdev->vchnl_waitq); init_waitqueue_head(&dev->vf_reqs); --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_utils.c +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_utils.c @@ -480,25 +480,6 @@ } /** - * i40iw_free_qp - callback after destroy cqp completes - * @cqp_request: cqp request for destroy qp - * @num: not used - */ -static void i40iw_free_qp(struct i40iw_cqp_request *cqp_request, u32 num) -{ - struct i40iw_sc_qp *qp = (struct i40iw_sc_qp *)cqp_request->param; - struct i40iw_qp *iwqp = (struct i40iw_qp *)qp->back_qp; - struct i40iw_device *iwdev; - u32 qp_num = iwqp->ibqp.qp_num; - - iwdev = iwqp->iwdev; - - i40iw_rem_pdusecount(iwqp->iwpd, iwdev); - i40iw_free_qp_resources(iwdev, iwqp, qp_num); - i40iw_rem_devusecount(iwdev); -} - -/** * i40iw_wait_event - wait for completion * @iwdev: iwarp device * @cqp_request: cqp request to wait @@ -618,26 +599,23 @@ } /** - * i40iw_add_ref - add refcount for qp + * i40iw_qp_add_ref - add refcount for qp * @ibqp: iqarp qp */ -void i40iw_add_ref(struct ib_qp *ibqp) +void i40iw_qp_add_ref(struct ib_qp *ibqp) { struct i40iw_qp *iwqp = (struct i40iw_qp *)ibqp; - atomic_inc(&iwqp->refcount); + refcount_inc(&iwqp->refcount); } /** - * i40iw_rem_ref - rem refcount for qp and free if 0 + * i40iw_qp_rem_ref - rem refcount for qp and free if 0 * @ibqp: iqarp qp */ -void i40iw_rem_ref(struct ib_qp *ibqp) +void i40iw_qp_rem_ref(struct ib_qp *ibqp) { struct i40iw_qp *iwqp; - enum i40iw_status_code status; - struct i40iw_cqp_request *cqp_request; - struct cqp_commands_info *cqp_info; struct i40iw_device *iwdev; u32 qp_num; unsigned long flags; @@ -645,7 +623,7 @@ iwqp = to_iwqp(ibqp); iwdev = iwqp->iwdev; spin_lock_irqsave(&iwdev->qptable_lock, flags); - if (!atomic_dec_and_test(&iwqp->refcount)) { + if (!refcount_dec_and_test(&iwqp->refcount)) { spin_unlock_irqrestore(&iwdev->qptable_lock, flags); return; } @@ -653,25 +631,8 @@ qp_num = iwqp->ibqp.qp_num; iwdev->qp_table[qp_num] = NULL; spin_unlock_irqrestore(&iwdev->qptable_lock, flags); - cqp_request = i40iw_get_cqp_request(&iwdev->cqp, false); - if (!cqp_request) - return; - - cqp_request->callback_fcn = i40iw_free_qp; - cqp_request->param = (void *)&iwqp->sc_qp; - cqp_info = &cqp_request->info; - cqp_info->cqp_cmd = OP_QP_DESTROY; - cqp_info->post_sq = 1; - cqp_info->in.u.qp_destroy.qp = &iwqp->sc_qp; - cqp_info->in.u.qp_destroy.scratch = (uintptr_t)cqp_request; - cqp_info->in.u.qp_destroy.remove_hash_idx = true; - status = i40iw_handle_cqp_op(iwdev, cqp_request); - if (!status) - return; + complete(&iwqp->free_qp); - i40iw_rem_pdusecount(iwqp->iwpd, iwdev); - i40iw_free_qp_resources(iwdev, iwqp, qp_num); - i40iw_rem_devusecount(iwdev); } /** @@ -938,7 +899,7 @@ struct i40iw_sc_qp *qp = (struct i40iw_sc_qp *)&iwqp->sc_qp; i40iw_terminate_done(qp, 1); - i40iw_rem_ref(&iwqp->ibqp); + i40iw_qp_rem_ref(&iwqp->ibqp); } /** @@ -950,7 +911,7 @@ struct i40iw_qp *iwqp; iwqp = (struct i40iw_qp *)qp->back_qp; - i40iw_add_ref(&iwqp->ibqp); + i40iw_qp_add_ref(&iwqp->ibqp); timer_setup(&iwqp->terminate_timer, i40iw_terminate_timeout, 0); iwqp->terminate_timer.expires = jiffies + HZ; add_timer(&iwqp->terminate_timer); @@ -966,7 +927,7 @@ iwqp = (struct i40iw_qp *)qp->back_qp; if (del_timer(&iwqp->terminate_timer)) - i40iw_rem_ref(&iwqp->ibqp); + i40iw_qp_rem_ref(&iwqp->ibqp); } /** --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_verbs.c +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_verbs.c @@ -168,39 +168,16 @@ */ static int i40iw_mmap(struct ib_ucontext *context, struct vm_area_struct *vma) { - struct i40iw_ucontext *ucontext; - u64 db_addr_offset, push_offset, pfn; + struct i40iw_ucontext *ucontext = to_ucontext(context); + u64 dbaddr; - ucontext = to_ucontext(context); - if (ucontext->iwdev->sc_dev.is_pf) { - db_addr_offset = I40IW_DB_ADDR_OFFSET; - push_offset = I40IW_PUSH_OFFSET; - if (vma->vm_pgoff) - vma->vm_pgoff += I40IW_PF_FIRST_PUSH_PAGE_INDEX - 1; - } else { - db_addr_offset = I40IW_VF_DB_ADDR_OFFSET; - push_offset = I40IW_VF_PUSH_OFFSET; - if (vma->vm_pgoff) - vma->vm_pgoff += I40IW_VF_FIRST_PUSH_PAGE_INDEX - 1; - } - - vma->vm_pgoff += db_addr_offset >> PAGE_SHIFT; - - if (vma->vm_pgoff == (db_addr_offset >> PAGE_SHIFT)) { - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - } else { - if ((vma->vm_pgoff - (push_offset >> PAGE_SHIFT)) % 2) - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - else - vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); - } + if (vma->vm_pgoff || vma->vm_end - vma->vm_start != PAGE_SIZE) + return -EINVAL; - pfn = vma->vm_pgoff + - (pci_resource_start(ucontext->iwdev->ldev->pcidev, 0) >> - PAGE_SHIFT); + dbaddr = I40IW_DB_ADDR_OFFSET + pci_resource_start(ucontext->iwdev->ldev->pcidev, 0); - return rdma_user_mmap_io(context, vma, pfn, PAGE_SIZE, - vma->vm_page_prot, NULL); + return rdma_user_mmap_io(context, vma, dbaddr >> PAGE_SHIFT, PAGE_SIZE, + pgprot_noncached(vma->vm_page_prot), NULL); } /** @@ -364,11 +341,11 @@ * @iwqp: qp ptr (user or kernel) * @qp_num: qp number assigned */ -void i40iw_free_qp_resources(struct i40iw_device *iwdev, - struct i40iw_qp *iwqp, - u32 qp_num) +void i40iw_free_qp_resources(struct i40iw_qp *iwqp) { struct i40iw_pbl *iwpbl = &iwqp->iwpbl; + struct i40iw_device *iwdev = iwqp->iwdev; + u32 qp_num = iwqp->ibqp.qp_num; i40iw_ieq_cleanup_qp(iwdev->vsi.ieq, &iwqp->sc_qp); i40iw_dealloc_push_page(iwdev, &iwqp->sc_qp); @@ -402,6 +379,10 @@ static int i40iw_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata) { struct i40iw_qp *iwqp = to_iwqp(ibqp); + struct ib_qp_attr attr; + struct i40iw_device *iwdev = iwqp->iwdev; + + memset(&attr, 0, sizeof(attr)); iwqp->destroyed = 1; @@ -416,7 +397,15 @@ } } - i40iw_rem_ref(&iwqp->ibqp); + attr.qp_state = IB_QPS_ERR; + i40iw_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); + i40iw_qp_rem_ref(&iwqp->ibqp); + wait_for_completion(&iwqp->free_qp); + i40iw_cqp_qp_destroy_cmd(&iwdev->sc_dev, &iwqp->sc_qp); + i40iw_rem_pdusecount(iwqp->iwpd, iwdev); + i40iw_free_qp_resources(iwqp); + i40iw_rem_devusecount(iwdev); + return 0; } @@ -577,6 +566,7 @@ qp->back_qp = (void *)iwqp; qp->push_idx = I40IW_INVALID_PUSH_PAGE_INDEX; + iwqp->iwdev = iwdev; iwqp->ctx_info.iwarp_info = &iwqp->iwarp_info; if (i40iw_allocate_dma_mem(dev->hw, @@ -601,7 +591,6 @@ goto error; } - iwqp->iwdev = iwdev; iwqp->iwpd = iwpd; iwqp->ibqp.qp_num = qp_num; qp = &iwqp->sc_qp; @@ -715,7 +704,7 @@ goto error; } - i40iw_add_ref(&iwqp->ibqp); + refcount_set(&iwqp->refcount, 1); spin_lock_init(&iwqp->lock); iwqp->sig_all = (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR) ? 1 : 0; iwdev->qp_table[qp_num] = iwqp; @@ -737,10 +726,11 @@ } init_completion(&iwqp->sq_drained); init_completion(&iwqp->rq_drained); + init_completion(&iwqp->free_qp); return &iwqp->ibqp; error: - i40iw_free_qp_resources(iwdev, iwqp, qp_num); + i40iw_free_qp_resources(iwqp); return ERR_PTR(err_code); } @@ -1053,7 +1043,7 @@ * @ib_cq: cq pointer * @udata: user data or NULL for kernel object */ -static void i40iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) +static int i40iw_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata) { struct i40iw_cq *iwcq; struct i40iw_device *iwdev; @@ -1065,6 +1055,7 @@ i40iw_cq_wq_destroy(iwdev, cq); cq_free_resources(iwdev, iwcq); i40iw_rem_devusecount(iwdev); + return 0; } /** @@ -2656,13 +2647,13 @@ .get_hw_stats = i40iw_get_hw_stats, .get_port_immutable = i40iw_port_immutable, .iw_accept = i40iw_accept, - .iw_add_ref = i40iw_add_ref, + .iw_add_ref = i40iw_qp_add_ref, .iw_connect = i40iw_connect, .iw_create_listen = i40iw_create_listen, .iw_destroy_listen = i40iw_destroy_listen, .iw_get_qp = i40iw_get_qp, .iw_reject = i40iw_reject, - .iw_rem_ref = i40iw_rem_ref, + .iw_rem_ref = i40iw_qp_rem_ref, .map_mr_sg = i40iw_map_mr_sg, .mmap = i40iw_mmap, .modify_qp = i40iw_modify_qp, --- linux-5.8.0.orig/drivers/infiniband/hw/i40iw/i40iw_verbs.h +++ linux-5.8.0/drivers/infiniband/hw/i40iw/i40iw_verbs.h @@ -139,7 +139,7 @@ struct i40iw_qp_host_ctx_info ctx_info; struct i40iwarp_offload_info iwarp_info; void *allocated_buffer; - atomic_t refcount; + refcount_t refcount; struct iw_cm_id *cm_id; void *cm_node; struct ib_mr *lsmm_mr; @@ -174,5 +174,6 @@ struct i40iw_dma_mem ietf_mem; struct completion sq_drained; struct completion rq_drained; + struct completion free_qp; }; #endif --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/cm.c +++ linux-5.8.0/drivers/infiniband/hw/mlx4/cm.c @@ -280,6 +280,9 @@ if (!sriov->is_going_down && !id->scheduled_delete) { id->scheduled_delete = 1; schedule_delayed_work(&id->timeout, CM_CLEANUP_CACHE_TIMEOUT); + } else if (id->scheduled_delete) { + /* Adjust timeout if already scheduled */ + mod_delayed_work(system_wq, &id->timeout, CM_CLEANUP_CACHE_TIMEOUT); } spin_unlock_irqrestore(&sriov->going_down_lock, flags); spin_unlock(&sriov->id_map_lock); --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/cq.c +++ linux-5.8.0/drivers/infiniband/hw/mlx4/cq.c @@ -475,7 +475,7 @@ return err; } -void mlx4_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) +int mlx4_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) { struct mlx4_ib_dev *dev = to_mdev(cq->device); struct mlx4_ib_cq *mcq = to_mcq(cq); @@ -495,6 +495,7 @@ mlx4_db_free(dev->dev, &mcq->db); } ib_umem_release(mcq->umem); + return 0; } static void dump_cqe(void *cqe) --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/mad.c +++ linux-5.8.0/drivers/infiniband/hw/mlx4/mad.c @@ -1299,6 +1299,18 @@ spin_unlock_irqrestore(&dev->sriov.going_down_lock, flags); } +static void mlx4_ib_wire_comp_handler(struct ib_cq *cq, void *arg) +{ + unsigned long flags; + struct mlx4_ib_demux_pv_ctx *ctx = cq->cq_context; + struct mlx4_ib_dev *dev = to_mdev(ctx->ib_dev); + + spin_lock_irqsave(&dev->sriov.going_down_lock, flags); + if (!dev->sriov.is_going_down && ctx->state == DEMUX_PV_STATE_ACTIVE) + queue_work(ctx->wi_wq, &ctx->work); + spin_unlock_irqrestore(&dev->sriov.going_down_lock, flags); +} + static int mlx4_ib_post_pv_qp_buf(struct mlx4_ib_demux_pv_ctx *ctx, struct mlx4_ib_demux_pv_qp *tun_qp, int index) @@ -2001,7 +2013,8 @@ cq_size *= 2; cq_attr.cqe = cq_size; - ctx->cq = ib_create_cq(ctx->ib_dev, mlx4_ib_tunnel_comp_handler, + ctx->cq = ib_create_cq(ctx->ib_dev, + create_tun ? mlx4_ib_tunnel_comp_handler : mlx4_ib_wire_comp_handler, NULL, ctx, &cq_attr); if (IS_ERR(ctx->cq)) { ret = PTR_ERR(ctx->cq); @@ -2038,6 +2051,7 @@ INIT_WORK(&ctx->work, mlx4_ib_sqp_comp_worker); ctx->wq = to_mdev(ibdev)->sriov.demux[port - 1].wq; + ctx->wi_wq = to_mdev(ibdev)->sriov.demux[port - 1].wi_wq; ret = ib_req_notify_cq(ctx->cq, IB_CQ_NEXT_COMP); if (ret) { @@ -2181,7 +2195,7 @@ goto err_mcg; } - snprintf(name, sizeof name, "mlx4_ibt%d", port); + snprintf(name, sizeof(name), "mlx4_ibt%d", port); ctx->wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM); if (!ctx->wq) { pr_err("Failed to create tunnelling WQ for port %d\n", port); @@ -2189,7 +2203,15 @@ goto err_wq; } - snprintf(name, sizeof name, "mlx4_ibud%d", port); + snprintf(name, sizeof(name), "mlx4_ibwi%d", port); + ctx->wi_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM); + if (!ctx->wi_wq) { + pr_err("Failed to create wire WQ for port %d\n", port); + ret = -ENOMEM; + goto err_wiwq; + } + + snprintf(name, sizeof(name), "mlx4_ibud%d", port); ctx->ud_wq = alloc_ordered_workqueue(name, WQ_MEM_RECLAIM); if (!ctx->ud_wq) { pr_err("Failed to create up/down WQ for port %d\n", port); @@ -2200,6 +2222,10 @@ return 0; err_udwq: + destroy_workqueue(ctx->wi_wq); + ctx->wi_wq = NULL; + +err_wiwq: destroy_workqueue(ctx->wq); ctx->wq = NULL; @@ -2247,12 +2273,14 @@ ctx->tun[i]->state = DEMUX_PV_STATE_DOWNING; } flush_workqueue(ctx->wq); + flush_workqueue(ctx->wi_wq); for (i = 0; i < dev->dev->caps.sqp_demux; i++) { destroy_pv_resources(dev, i, ctx->port, ctx->tun[i], 0); free_pv_object(dev, i, ctx->port); } kfree(ctx->tun); destroy_workqueue(ctx->ud_wq); + destroy_workqueue(ctx->wi_wq); destroy_workqueue(ctx->wq); } } --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/main.c +++ linux-5.8.0/drivers/infiniband/hw/mlx4/main.c @@ -784,7 +784,8 @@ props->ip_gids = true; props->gid_tbl_len = mdev->dev->caps.gid_table_len[port]; props->max_msg_sz = mdev->dev->caps.max_msg_sz; - props->pkey_tbl_len = 1; + if (mdev->dev->caps.pkey_table_len[port]) + props->pkey_tbl_len = 1; props->max_mtu = IB_MTU_4096; props->max_vl_num = 2; props->state = IB_PORT_DOWN; --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/mlx4_ib.h +++ linux-5.8.0/drivers/infiniband/hw/mlx4/mlx4_ib.h @@ -454,6 +454,7 @@ struct ib_pd *pd; struct work_struct work; struct workqueue_struct *wq; + struct workqueue_struct *wi_wq; struct mlx4_ib_demux_pv_qp qp[2]; }; @@ -461,6 +462,7 @@ struct ib_device *ib_dev; int port; struct workqueue_struct *wq; + struct workqueue_struct *wi_wq; struct workqueue_struct *ud_wq; spinlock_t ud_lock; atomic64_t subnet_prefix; @@ -736,7 +738,7 @@ int mlx4_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata); int mlx4_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void mlx4_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); +int mlx4_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); int mlx4_ib_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc); int mlx4_ib_arm_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags); void __mlx4_ib_cq_clean(struct mlx4_ib_cq *cq, u32 qpn, struct mlx4_ib_srq *srq); --- linux-5.8.0.orig/drivers/infiniband/hw/mlx4/mr.c +++ linux-5.8.0/drivers/infiniband/hw/mlx4/mr.c @@ -439,7 +439,6 @@ mr->ibmr.rkey = mr->ibmr.lkey = mr->mmr.key; mr->ibmr.length = length; - mr->ibmr.iova = virt_addr; mr->ibmr.page_size = 1U << shift; return &mr->ibmr; --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/cq.c +++ linux-5.8.0/drivers/infiniband/hw/mlx5/cq.c @@ -168,7 +168,7 @@ { enum rdma_link_layer ll = rdma_port_get_link_layer(qp->ibqp.device, 1); struct mlx5_ib_dev *dev = to_mdev(qp->ibqp.device); - struct mlx5_ib_srq *srq; + struct mlx5_ib_srq *srq = NULL; struct mlx5_ib_wq *wq; u16 wqe_ctr; u8 roce_packet_type; @@ -180,7 +180,8 @@ if (qp->ibqp.xrcd) { msrq = mlx5_cmd_get_srq(dev, be32_to_cpu(cqe->srqn)); - srq = to_mibsrq(msrq); + if (msrq) + srq = to_mibsrq(msrq); } else { srq = to_msrq(qp->ibqp.srq); } @@ -1023,16 +1024,21 @@ return err; } -void mlx5_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) +int mlx5_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) { struct mlx5_ib_dev *dev = to_mdev(cq->device); struct mlx5_ib_cq *mcq = to_mcq(cq); + int ret; + + ret = mlx5_core_destroy_cq(dev->mdev, &mcq->mcq); + if (ret) + return ret; - mlx5_core_destroy_cq(dev->mdev, &mcq->mcq); if (udata) destroy_cq_user(mcq, udata); else destroy_cq_kernel(dev, mcq); + return 0; } static int is_equal_rsn(struct mlx5_cqe64 *cqe64, u32 rsn) --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/devx.c +++ linux-5.8.0/drivers/infiniband/hw/mlx5/devx.c @@ -1124,7 +1124,9 @@ MLX5_SET(general_obj_in_cmd_hdr, din, opcode, MLX5_CMD_OP_DESTROY_RQT); break; case MLX5_CMD_OP_CREATE_TIR: - MLX5_SET(general_obj_in_cmd_hdr, din, opcode, MLX5_CMD_OP_DESTROY_TIR); + *obj_id = MLX5_GET(create_tir_out, out, tirn); + MLX5_SET(destroy_tir_in, din, opcode, MLX5_CMD_OP_DESTROY_TIR); + MLX5_SET(destroy_tir_in, din, tirn, *obj_id); break; case MLX5_CMD_OP_CREATE_TIS: MLX5_SET(general_obj_in_cmd_hdr, din, opcode, MLX5_CMD_OP_DESTROY_TIS); @@ -2028,8 +2030,10 @@ num_alloc_xa_entries++; event_sub = kzalloc(sizeof(*event_sub), GFP_KERNEL); - if (!event_sub) + if (!event_sub) { + err = -ENOMEM; goto err; + } list_add_tail(&event_sub->event_list, &sub_list); uverbs_uobject_get(&ev_file->uobj); --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/main.c +++ linux-5.8.0/drivers/infiniband/hw/mlx5/main.c @@ -867,7 +867,9 @@ /* We support 'Gappy' memory registration too */ props->device_cap_flags |= IB_DEVICE_SG_GAPS_REG; } - props->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS; + /* IB_WR_REG_MR always requires changing the entity size with UMR */ + if (!MLX5_CAP_GEN(dev->mdev, umr_modify_entity_size_disabled)) + props->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS; if (MLX5_CAP_GEN(mdev, sho)) { props->device_cap_flags |= IB_DEVICE_INTEGRITY_HANDOVER; /* At this stage no support for signature handover */ @@ -6474,7 +6476,7 @@ mlx5_ib_cleanup_multiport_master(dev); WARN_ON(!xa_empty(&dev->odp_mkeys)); cleanup_srcu_struct(&dev->odp_srcu); - + mutex_destroy(&dev->cap_mask_mutex); WARN_ON(!xa_empty(&dev->sig_mrs)); WARN_ON(!bitmap_empty(dev->dm.memic_alloc_pages, MLX5_MAX_MEMIC_PAGES)); } @@ -6501,7 +6503,7 @@ err = set_has_smi_cap(dev); if (err) - return err; + goto err_mp; if (!mlx5_core_mp_enabled(mdev)) { for (i = 1; i <= dev->num_ports; i++) { @@ -6525,6 +6527,10 @@ dev->ib_dev.dev.parent = mdev->device; dev->ib_dev.lag_flags = RDMA_LAG_FLAGS_HASH_ALL_SLAVES; + err = init_srcu_struct(&dev->odp_srcu); + if (err) + goto err_mp; + mutex_init(&dev->cap_mask_mutex); INIT_LIST_HEAD(&dev->qp_list); spin_lock_init(&dev->reset_flow_resource_lock); @@ -6534,17 +6540,11 @@ spin_lock_init(&dev->dm.lock); dev->dm.dev = mdev; - - err = init_srcu_struct(&dev->odp_srcu); - if (err) - goto err_mp; - return 0; err_mp: mlx5_ib_cleanup_multiport_master(dev); - - return -ENOMEM; + return err; } static int mlx5_ib_stage_flow_db_init(struct mlx5_ib_dev *dev) @@ -6998,7 +6998,7 @@ err = mlx5_alloc_bfreg(dev->mdev, &dev->fp_bfreg, false, true); if (err) - mlx5_free_bfreg(dev->mdev, &dev->fp_bfreg); + mlx5_free_bfreg(dev->mdev, &dev->bfreg); return err; } --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/mlx5_ib.h +++ linux-5.8.0/drivers/infiniband/hw/mlx5/mlx5_ib.h @@ -1180,7 +1180,7 @@ size_t buflen, size_t *bc); int mlx5_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void mlx5_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); +int mlx5_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); int mlx5_ib_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc); int mlx5_ib_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags); int mlx5_ib_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period); --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/mr.c +++ linux-5.8.0/drivers/infiniband/hw/mlx5/mr.c @@ -50,6 +50,29 @@ static void create_mkey_callback(int status, struct mlx5_async_work *context); +static void set_mkc_access_pd_addr_fields(void *mkc, int acc, u64 start_addr, + struct ib_pd *pd) +{ + struct mlx5_ib_dev *dev = to_mdev(pd->device); + + MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC)); + MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE)); + MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ)); + MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE)); + MLX5_SET(mkc, mkc, lr, 1); + + if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write)) + MLX5_SET(mkc, mkc, relaxed_ordering_write, + !!(acc & IB_ACCESS_RELAXED_ORDERING)); + if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read)) + MLX5_SET(mkc, mkc, relaxed_ordering_read, + !!(acc & IB_ACCESS_RELAXED_ORDERING)); + + MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); + MLX5_SET(mkc, mkc, qpn, 0xffffff); + MLX5_SET64(mkc, mkc, start_addr, start_addr); +} + static void assign_mkey_variant(struct mlx5_ib_dev *dev, struct mlx5_core_mkey *mkey, u32 *in) @@ -152,12 +175,12 @@ mr->cache_ent = ent; mr->dev = ent->dev; + set_mkc_access_pd_addr_fields(mkc, 0, 0, ent->dev->umrc.pd); MLX5_SET(mkc, mkc, free, 1); MLX5_SET(mkc, mkc, umr_en, 1); MLX5_SET(mkc, mkc, access_mode_1_0, ent->access_mode & 0x3); MLX5_SET(mkc, mkc, access_mode_4_2, (ent->access_mode >> 2) & 0x7); - MLX5_SET(mkc, mkc, qpn, 0xffffff); MLX5_SET(mkc, mkc, translations_octword_size, ent->xlt); MLX5_SET(mkc, mkc, log_page_size, ent->page); return mr; @@ -613,6 +636,7 @@ if (mlx5_mr_cache_invalidate(mr)) { detach_mr_from_cache(mr); destroy_mkey(dev, mr); + kfree(mr); return; } @@ -774,29 +798,6 @@ return 0; } -static void set_mkc_access_pd_addr_fields(void *mkc, int acc, u64 start_addr, - struct ib_pd *pd) -{ - struct mlx5_ib_dev *dev = to_mdev(pd->device); - - MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC)); - MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE)); - MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ)); - MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE)); - MLX5_SET(mkc, mkc, lr, 1); - - if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write)) - MLX5_SET(mkc, mkc, relaxed_ordering_write, - !!(acc & IB_ACCESS_RELAXED_ORDERING)); - if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read)) - MLX5_SET(mkc, mkc, relaxed_ordering_read, - !!(acc & IB_ACCESS_RELAXED_ORDERING)); - - MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); - MLX5_SET(mkc, mkc, qpn, 0xffffff); - MLX5_SET64(mkc, mkc, start_addr, start_addr); -} - struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc) { struct mlx5_ib_dev *dev = to_mdev(pd->device); @@ -1190,29 +1191,17 @@ MLX5_SET(create_mkey_in, in, pg_access, !!(pg_cap)); mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry); + set_mkc_access_pd_addr_fields(mkc, access_flags, virt_addr, + populate ? pd : dev->umrc.pd); MLX5_SET(mkc, mkc, free, !populate); MLX5_SET(mkc, mkc, access_mode_1_0, MLX5_MKC_ACCESS_MODE_MTT); - if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write)) - MLX5_SET(mkc, mkc, relaxed_ordering_write, - !!(access_flags & IB_ACCESS_RELAXED_ORDERING)); - if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read)) - MLX5_SET(mkc, mkc, relaxed_ordering_read, - !!(access_flags & IB_ACCESS_RELAXED_ORDERING)); - MLX5_SET(mkc, mkc, a, !!(access_flags & IB_ACCESS_REMOTE_ATOMIC)); - MLX5_SET(mkc, mkc, rw, !!(access_flags & IB_ACCESS_REMOTE_WRITE)); - MLX5_SET(mkc, mkc, rr, !!(access_flags & IB_ACCESS_REMOTE_READ)); - MLX5_SET(mkc, mkc, lw, !!(access_flags & IB_ACCESS_LOCAL_WRITE)); - MLX5_SET(mkc, mkc, lr, 1); MLX5_SET(mkc, mkc, umr_en, 1); - MLX5_SET64(mkc, mkc, start_addr, virt_addr); MLX5_SET64(mkc, mkc, len, length); - MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); MLX5_SET(mkc, mkc, bsf_octword_size, 0); MLX5_SET(mkc, mkc, translations_octword_size, get_octo_len(virt_addr, length, page_shift)); MLX5_SET(mkc, mkc, log_page_size, page_shift); - MLX5_SET(mkc, mkc, qpn, 0xffffff); if (populate) { MLX5_SET(create_mkey_in, in, translations_octword_actual_size, get_octo_len(virt_addr, length, page_shift)); @@ -1243,10 +1232,8 @@ } static void set_mr_fields(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr, - int npages, u64 length, int access_flags) + u64 length, int access_flags) { - mr->npages = npages; - atomic_add(npages, &dev->mdev->priv.reg_pages); mr->ibmr.lkey = mr->mmkey.key; mr->ibmr.rkey = mr->mmkey.key; mr->ibmr.length = length; @@ -1286,8 +1273,7 @@ kfree(in); - mr->umem = NULL; - set_mr_fields(dev, mr, 0, length, acc); + set_mr_fields(dev, mr, length, acc); return &mr->ibmr; @@ -1420,7 +1406,9 @@ mlx5_ib_dbg(dev, "mkey 0x%x\n", mr->mmkey.key); mr->umem = umem; - set_mr_fields(dev, mr, npages, length, access_flags); + mr->npages = npages; + atomic_add(mr->npages, &dev->mdev->priv.reg_pages); + set_mr_fields(dev, mr, length, access_flags); if (use_umr) { int update_xlt_flags = MLX5_IB_UPD_XLT_ENABLE; @@ -1525,8 +1513,6 @@ mlx5_ib_dbg(dev, "start 0x%llx, virt_addr 0x%llx, length 0x%llx, access_flags 0x%x\n", start, virt_addr, length, access_flags); - atomic_sub(mr->npages, &dev->mdev->priv.reg_pages); - if (!mr->umem) return -EINVAL; @@ -1547,12 +1533,17 @@ * used. */ flags |= IB_MR_REREG_TRANS; + atomic_sub(mr->npages, &dev->mdev->priv.reg_pages); + mr->npages = 0; ib_umem_release(mr->umem); mr->umem = NULL; + err = mr_umem_get(dev, addr, len, access_flags, &mr->umem, &npages, &page_shift, &ncont, &order); if (err) goto err; + mr->npages = ncont; + atomic_add(mr->npages, &dev->mdev->priv.reg_pages); } if (!mlx5_ib_can_use_umr(dev, true, access_flags) || @@ -1600,7 +1591,7 @@ goto err; } - set_mr_fields(dev, mr, npages, len, access_flags); + set_mr_fields(dev, mr, len, access_flags); return 0; --- linux-5.8.0.orig/drivers/infiniband/hw/mlx5/qp.c +++ linux-5.8.0/drivers/infiniband/hw/mlx5/qp.c @@ -2452,8 +2452,6 @@ case MLX5_IB_QPT_HW_GSI: case IB_QPT_DRIVER: case IB_QPT_GSI: - if (dev->profile == &raw_eth_profile) - goto out; case IB_QPT_RAW_PACKET: case IB_QPT_UD: case MLX5_IB_QPT_REG_UMR: @@ -2660,10 +2658,6 @@ int create_flags = attr->create_flags; bool cond; - if (qp->type == IB_QPT_UD && dev->profile == &raw_eth_profile) - if (create_flags & ~MLX5_IB_QP_CREATE_WC_TEST) - return -EINVAL; - if (qp_type == MLX5_IB_QPT_DCT) return (create_flags) ? -EINVAL : 0; @@ -4215,6 +4209,23 @@ return err; } +static bool mlx5_ib_modify_qp_allowed(struct mlx5_ib_dev *dev, + struct mlx5_ib_qp *qp, + enum ib_qp_type qp_type) +{ + if (dev->profile != &raw_eth_profile) + return true; + + if (qp_type == IB_QPT_RAW_PACKET || qp_type == MLX5_IB_QPT_REG_UMR) + return true; + + /* Internal QP used for wc testing, with NOPs in wq */ + if (qp->flags & MLX5_IB_QP_CREATE_WC_TEST) + return true; + + return false; +} + int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask, struct ib_udata *udata) { @@ -4227,6 +4238,9 @@ int err = -EINVAL; int port; + if (!mlx5_ib_modify_qp_allowed(dev, qp, ibqp->qp_type)) + return -EOPNOTSUPP; + if (ibqp->rwq_ind_tbl) return -ENOSYS; --- linux-5.8.0.orig/drivers/infiniband/hw/mthca/mthca_cq.c +++ linux-5.8.0/drivers/infiniband/hw/mthca/mthca_cq.c @@ -604,7 +604,7 @@ entry->byte_len = MTHCA_ATOMIC_BYTE_LEN; break; default: - entry->opcode = MTHCA_OPCODE_INVALID; + entry->opcode = 0xFF; break; } } else { @@ -803,8 +803,10 @@ } mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); - if (IS_ERR(mailbox)) + if (IS_ERR(mailbox)) { + err = PTR_ERR(mailbox); goto err_out_arm; + } cq_context = mailbox->buf; @@ -846,9 +848,9 @@ } spin_lock_irq(&dev->cq_table.lock); - if (mthca_array_set(&dev->cq_table.cq, - cq->cqn & (dev->limits.num_cqs - 1), - cq)) { + err = mthca_array_set(&dev->cq_table.cq, + cq->cqn & (dev->limits.num_cqs - 1), cq); + if (err) { spin_unlock_irq(&dev->cq_table.lock); goto err_out_free_mr; } --- linux-5.8.0.orig/drivers/infiniband/hw/mthca/mthca_dev.h +++ linux-5.8.0/drivers/infiniband/hw/mthca/mthca_dev.h @@ -105,7 +105,6 @@ MTHCA_OPCODE_ATOMIC_CS = 0x11, MTHCA_OPCODE_ATOMIC_FA = 0x12, MTHCA_OPCODE_BIND_MW = 0x18, - MTHCA_OPCODE_INVALID = 0xff }; enum { --- linux-5.8.0.orig/drivers/infiniband/hw/mthca/mthca_provider.c +++ linux-5.8.0/drivers/infiniband/hw/mthca/mthca_provider.c @@ -789,7 +789,7 @@ return ret; } -static void mthca_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) +static int mthca_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) { if (udata) { struct mthca_ucontext *context = @@ -808,6 +808,7 @@ to_mcq(cq)->set_ci_db_index); } mthca_free_cq(to_mdev(cq->device), to_mcq(cq)); + return 0; } static inline u32 convert_access(int acc) --- linux-5.8.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +++ linux-5.8.0/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c @@ -434,9 +434,9 @@ pr_err("%s(%d) Freeing in use pdid=0x%x.\n", __func__, dev->id, pd->id); } - kfree(uctx->cntxt_pd); uctx->cntxt_pd = NULL; _ocrdma_dealloc_pd(dev, pd); + kfree(pd); } static struct ocrdma_pd *ocrdma_get_ucontext_pd(struct ocrdma_ucontext *uctx) @@ -1056,7 +1056,7 @@ spin_unlock_irqrestore(&cq->cq_lock, flags); } -void ocrdma_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +int ocrdma_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct ocrdma_cq *cq = get_ocrdma_cq(ibcq); struct ocrdma_eq *eq = NULL; @@ -1081,6 +1081,7 @@ ocrdma_get_db_addr(dev, pdid), dev->nic_info.db_page_size); } + return 0; } static int ocrdma_add_qpn_map(struct ocrdma_dev *dev, struct ocrdma_qp *qp) --- linux-5.8.0.orig/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h +++ linux-5.8.0/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h @@ -72,7 +72,7 @@ int ocrdma_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); int ocrdma_resize_cq(struct ib_cq *, int cqe, struct ib_udata *); -void ocrdma_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); +int ocrdma_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); struct ib_qp *ocrdma_create_qp(struct ib_pd *, struct ib_qp_init_attr *attrs, --- linux-5.8.0.orig/drivers/infiniband/hw/qedr/main.c +++ linux-5.8.0/drivers/infiniband/hw/qedr/main.c @@ -601,7 +601,7 @@ qed_attr = dev->ops->rdma_query_device(dev->rdma_ctx); /* Part 2 - check capabilities */ - page_size = ~dev->attr.page_size_caps + 1; + page_size = ~qed_attr->page_size_caps + 1; if (page_size > PAGE_SIZE) { DP_ERR(dev, "Kernel PAGE_SIZE is %ld which is smaller than minimum page size (%d) required by qedr\n", --- linux-5.8.0.orig/drivers/infiniband/hw/qedr/qedr.h +++ linux-5.8.0/drivers/infiniband/hw/qedr/qedr.h @@ -235,6 +235,7 @@ u32 dpi_size; u16 dpi; bool db_rec; + u8 edpm_mode; }; union db_prod32 { @@ -344,10 +345,10 @@ u32 wqe_prod; u32 sge_prod; u32 wr_prod_cnt; - u32 wr_cons_cnt; + atomic_t wr_cons_cnt; u32 num_elems; - u32 *virt_prod_pair_addr; + struct rdma_srq_producers *virt_prod_pair_addr; dma_addr_t phy_prod_pair_addr; }; --- linux-5.8.0.orig/drivers/infiniband/hw/qedr/qedr_iw_cm.c +++ linux-5.8.0/drivers/infiniband/hw/qedr/qedr_iw_cm.c @@ -727,6 +727,7 @@ listener->qed_handle); cm_id->rem_ref(cm_id); + kfree(listener); return rc; } @@ -736,7 +737,7 @@ struct qedr_dev *dev = ep->dev; struct qedr_qp *qp; struct qed_iwarp_accept_in params; - int rc = 0; + int rc; DP_DEBUG(dev, QEDR_MSG_IWARP, "Accept on qpid=%d\n", conn_param->qpn); @@ -759,8 +760,10 @@ params.ord = conn_param->ord; if (test_and_set_bit(QEDR_IWARP_CM_WAIT_FOR_CONNECT, - &qp->iwarp_cm_flags)) + &qp->iwarp_cm_flags)) { + rc = -EINVAL; goto err; /* QP already destroyed */ + } rc = dev->ops->iwarp_accept(dev->rdma_ctx, ¶ms); if (rc) { --- linux-5.8.0.orig/drivers/infiniband/hw/qedr/verbs.c +++ linux-5.8.0/drivers/infiniband/hw/qedr/verbs.c @@ -275,7 +275,8 @@ DP_ERR(dev, "Problem copying data from user space\n"); return -EFAULT; } - + ctx->edpm_mode = !!(ureq.context_flags & + QEDR_ALLOC_UCTX_EDPM_MODE); ctx->db_rec = !!(ureq.context_flags & QEDR_ALLOC_UCTX_DB_REC); } @@ -316,11 +317,15 @@ uresp.dpm_flags = QEDR_DPM_TYPE_IWARP_LEGACY; else uresp.dpm_flags = QEDR_DPM_TYPE_ROCE_ENHANCED | - QEDR_DPM_TYPE_ROCE_LEGACY; + QEDR_DPM_TYPE_ROCE_LEGACY | + QEDR_DPM_TYPE_ROCE_EDPM_MODE; - uresp.dpm_flags |= QEDR_DPM_SIZES_SET; - uresp.ldpm_limit_size = QEDR_LDPM_MAX_SIZE; - uresp.edpm_trans_size = QEDR_EDPM_TRANS_SIZE; + if (ureq.context_flags & QEDR_SUPPORT_DPM_SIZES) { + uresp.dpm_flags |= QEDR_DPM_SIZES_SET; + uresp.ldpm_limit_size = QEDR_LDPM_MAX_SIZE; + uresp.edpm_trans_size = QEDR_EDPM_TRANS_SIZE; + uresp.edpm_limit_size = QEDR_EDPM_MAX_SIZE; + } uresp.wids_enabled = 1; uresp.wid_count = oparams.wid_count; @@ -993,7 +998,7 @@ /* Generate doorbell address. */ cq->db.data.icid = cq->icid; cq->db_addr = dev->db_addr + db_offset; - cq->db.data.params = DB_AGG_CMD_SET << + cq->db.data.params = DB_AGG_CMD_MAX << RDMA_PWM_VAL32_DATA_AGG_CMD_SHIFT; /* point to the very last element, passing it we will toggle */ @@ -1045,7 +1050,7 @@ #define QEDR_DESTROY_CQ_MAX_ITERATIONS (10) #define QEDR_DESTROY_CQ_ITER_DURATION (10) -void qedr_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +int qedr_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct qedr_dev *dev = get_qedr_dev(ibcq->device); struct qed_rdma_destroy_cq_out_params oparams; @@ -1060,7 +1065,7 @@ /* GSIs CQs are handled by driver, so they don't exist in the FW */ if (cq->cq_type == QEDR_CQ_TYPE_GSI) { qedr_db_recovery_del(dev, cq->db_addr, &cq->db.data); - return; + return 0; } iparams.icid = cq->icid; @@ -1108,6 +1113,7 @@ * Since the destroy CQ ramrod has also been received on the EQ we can * be certain that there's no event handler in process. */ + return 0; } static inline int get_gid_info_from_table(struct ib_qp *ibqp, @@ -1750,7 +1756,7 @@ struct qed_rdma_create_qp_out_params out_params; struct qedr_pd *pd = get_qedr_pd(ibpd); struct qedr_create_qp_uresp uresp; - struct qedr_ucontext *ctx = NULL; + struct qedr_ucontext *ctx = pd ? pd->uctx : NULL; struct qedr_create_qp_ureq ureq; int alloc_and_init = rdma_protocol_roce(&dev->ibdev, 1); int rc = -EINVAL; @@ -1788,6 +1794,9 @@ in_params.rq_pbl_ptr = qp->urq.pbl_tbl->pa; } + if (ctx) + SET_FIELD(in_params.flags, QED_ROCE_EDPM_MODE, ctx->edpm_mode); + qp->qed_qp = dev->ops->rdma_create_qp(dev->rdma_ctx, &in_params, &out_params); @@ -2104,6 +2113,28 @@ return rc; } +static int qedr_free_qp_resources(struct qedr_dev *dev, struct qedr_qp *qp, + struct ib_udata *udata) +{ + struct qedr_ucontext *ctx = + rdma_udata_to_drv_context(udata, struct qedr_ucontext, + ibucontext); + int rc; + + if (qp->qp_type != IB_QPT_GSI) { + rc = dev->ops->rdma_destroy_qp(dev->rdma_ctx, qp->qed_qp); + if (rc) + return rc; + } + + if (qp->create_type == QEDR_QP_CREATE_USER) + qedr_cleanup_user(dev, ctx, qp); + else + qedr_cleanup_kernel(dev, qp); + + return 0; +} + struct ib_qp *qedr_create_qp(struct ib_pd *ibpd, struct ib_qp_init_attr *attrs, struct ib_udata *udata) @@ -2150,19 +2181,21 @@ rc = qedr_create_kernel_qp(dev, qp, ibpd, attrs); if (rc) - goto err; + goto out_free_qp; qp->ibqp.qp_num = qp->qp_id; if (rdma_protocol_iwarp(&dev->ibdev, 1)) { rc = xa_insert(&dev->qps, qp->qp_id, qp, GFP_KERNEL); if (rc) - goto err; + goto out_free_qp_resources; } return &qp->ibqp; -err: +out_free_qp_resources: + qedr_free_qp_resources(dev, qp, udata); +out_free_qp: kfree(qp); return ERR_PTR(-EFAULT); @@ -2628,7 +2661,7 @@ qp_attr->cap.max_recv_wr = qp->rq.max_wr; qp_attr->cap.max_send_sge = qp->sq.max_sges; qp_attr->cap.max_recv_sge = qp->rq.max_sges; - qp_attr->cap.max_inline_data = ROCE_REQ_MAX_INLINE_DATA_SIZE; + qp_attr->cap.max_inline_data = dev->attr.max_inline; qp_init_attr->cap = qp_attr->cap; qp_attr->ah_attr.type = RDMA_AH_ATTR_TYPE_ROCE; @@ -2663,28 +2696,6 @@ return rc; } -static int qedr_free_qp_resources(struct qedr_dev *dev, struct qedr_qp *qp, - struct ib_udata *udata) -{ - struct qedr_ucontext *ctx = - rdma_udata_to_drv_context(udata, struct qedr_ucontext, - ibucontext); - int rc; - - if (qp->qp_type != IB_QPT_GSI) { - rc = dev->ops->rdma_destroy_qp(dev->rdma_ctx, qp->qed_qp); - if (rc) - return rc; - } - - if (qp->create_type == QEDR_QP_CREATE_USER) - qedr_cleanup_user(dev, ctx, qp); - else - qedr_cleanup_kernel(dev, qp); - - return 0; -} - int qedr_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata) { struct qedr_qp *qp = get_qedr_qp(ibqp); @@ -2744,6 +2755,8 @@ if (rdma_protocol_iwarp(&dev->ibdev, 1)) qedr_iw_qp_rem_ref(&qp->ibqp); + else + kfree(qp); return 0; } @@ -3686,7 +3699,7 @@ * count and consumer count and subtract it from max * work request supported so that we get elements left. */ - used = hw_srq->wr_prod_cnt - hw_srq->wr_cons_cnt; + used = hw_srq->wr_prod_cnt - (u32)atomic_read(&hw_srq->wr_cons_cnt); return hw_srq->max_wr - used; } @@ -3701,7 +3714,6 @@ unsigned long flags; int status = 0; u32 num_sge; - u32 offset; spin_lock_irqsave(&srq->lock, flags); @@ -3714,7 +3726,8 @@ if (!qedr_srq_elem_left(hw_srq) || wr->num_sge > srq->hw_srq.max_sges) { DP_ERR(dev, "Can't post WR (%d,%d) || (%d > %d)\n", - hw_srq->wr_prod_cnt, hw_srq->wr_cons_cnt, + hw_srq->wr_prod_cnt, + atomic_read(&hw_srq->wr_cons_cnt), wr->num_sge, srq->hw_srq.max_sges); status = -ENOMEM; *bad_wr = wr; @@ -3748,22 +3761,20 @@ hw_srq->sge_prod++; } - /* Flush WQE and SGE information before + /* Update WQE and SGE information before * updating producer. */ - wmb(); + dma_wmb(); /* SRQ producer is 8 bytes. Need to update SGE producer index * in first 4 bytes and need to update WQE producer in * next 4 bytes. */ - *srq->hw_srq.virt_prod_pair_addr = hw_srq->sge_prod; - offset = offsetof(struct rdma_srq_producers, wqe_prod); - *((u8 *)srq->hw_srq.virt_prod_pair_addr + offset) = - hw_srq->wqe_prod; + srq->hw_srq.virt_prod_pair_addr->sge_prod = hw_srq->sge_prod; + /* Make sure sge producer is updated first */ + dma_wmb(); + srq->hw_srq.virt_prod_pair_addr->wqe_prod = hw_srq->wqe_prod; - /* Flush producer after updating it. */ - wmb(); wr = wr->next; } @@ -4182,7 +4193,7 @@ } else { __process_resp_one(dev, qp, cq, wc, resp, wr_id); } - srq->hw_srq.wr_cons_cnt++; + atomic_inc(&srq->hw_srq.wr_cons_cnt); return 1; } --- linux-5.8.0.orig/drivers/infiniband/hw/qedr/verbs.h +++ linux-5.8.0/drivers/infiniband/hw/qedr/verbs.h @@ -52,7 +52,7 @@ int qedr_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); int qedr_resize_cq(struct ib_cq *, int cqe, struct ib_udata *); -void qedr_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); +int qedr_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); int qedr_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags); struct ib_qp *qedr_create_qp(struct ib_pd *, struct ib_qp_init_attr *attrs, struct ib_udata *); --- linux-5.8.0.orig/drivers/infiniband/hw/usnic/usnic_ib_verbs.c +++ linux-5.8.0/drivers/infiniband/hw/usnic/usnic_ib_verbs.c @@ -214,6 +214,7 @@ } usnic_uiom_free_dev_list(dev_list); + dev_list = NULL; } /* Try to find resources on an unused vf */ @@ -239,6 +240,8 @@ qp_grp_check: if (IS_ERR_OR_NULL(qp_grp)) { usnic_err("Failed to allocate qp_grp\n"); + if (usnic_ib_share_vf) + usnic_uiom_free_dev_list(dev_list); return ERR_PTR(qp_grp ? PTR_ERR(qp_grp) : -ENOMEM); } return qp_grp; @@ -596,9 +599,9 @@ return 0; } -void usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) +int usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) { - return; + return 0; } struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length, --- linux-5.8.0.orig/drivers/infiniband/hw/usnic/usnic_ib_verbs.h +++ linux-5.8.0/drivers/infiniband/hw/usnic/usnic_ib_verbs.h @@ -60,7 +60,7 @@ int attr_mask, struct ib_udata *udata); int usnic_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); +int usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length, u64 virt_addr, int access_flags, struct ib_udata *udata); --- linux-5.8.0.orig/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h +++ linux-5.8.0/drivers/infiniband/hw/vmw_pvrdma/pvrdma.h @@ -509,6 +509,20 @@ return flags & PVRDMA_MASK(PVRDMA_SEND_FLAGS_MAX); } +static inline int pvrdma_network_type_to_ib(enum pvrdma_network_type type) +{ + switch (type) { + case PVRDMA_NETWORK_ROCE_V1: + return RDMA_NETWORK_ROCE_V1; + case PVRDMA_NETWORK_IPV4: + return RDMA_NETWORK_IPV4; + case PVRDMA_NETWORK_IPV6: + return RDMA_NETWORK_IPV6; + default: + return RDMA_NETWORK_IPV6; + } +} + void pvrdma_qp_cap_to_ib(struct ib_qp_cap *dst, const struct pvrdma_qp_cap *src); void ib_qp_cap_to_pvrdma(struct pvrdma_qp_cap *dst, --- linux-5.8.0.orig/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c +++ linux-5.8.0/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c @@ -235,7 +235,7 @@ * @cq: the completion queue to destroy. * @udata: user data or null for kernel object */ -void pvrdma_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) +int pvrdma_destroy_cq(struct ib_cq *cq, struct ib_udata *udata) { struct pvrdma_cq *vcq = to_vcq(cq); union pvrdma_cmd_req req; @@ -261,6 +261,7 @@ pvrdma_free_cq(dev, vcq); atomic_dec(&dev->num_cqs); + return 0; } static inline struct pvrdma_cqe *get_cqe(struct pvrdma_cq *cq, int i) @@ -363,7 +364,7 @@ wc->dlid_path_bits = cqe->dlid_path_bits; wc->port_num = cqe->port_num; wc->vendor_err = cqe->vendor_err; - wc->network_hdr_type = cqe->network_hdr_type; + wc->network_hdr_type = pvrdma_network_type_to_ib(cqe->network_hdr_type); /* Update shared ring state */ pvrdma_idx_ring_inc(&cq->ring_state->rx.cons_head, cq->ibcq.cqe); --- linux-5.8.0.orig/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c +++ linux-5.8.0/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c @@ -266,7 +266,7 @@ } ret = ib_device_set_netdev(&dev->ib_dev, dev->netdev, 1); if (ret) - return ret; + goto err_srq_free; spin_lock_init(&dev->srq_tbl_lock); rdma_set_device_sysfs_group(&dev->ib_dev, &pvrdma_attr_group); --- linux-5.8.0.orig/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h +++ linux-5.8.0/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h @@ -411,7 +411,7 @@ int sg_nents, unsigned int *sg_offset); int pvrdma_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void pvrdma_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); +int pvrdma_destroy_cq(struct ib_cq *cq, struct ib_udata *udata); int pvrdma_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc); int pvrdma_req_notify_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags); int pvrdma_create_ah(struct ib_ah *ah, struct rdma_ah_init_attr *init_attr, --- linux-5.8.0.orig/drivers/infiniband/sw/rdmavt/Kconfig +++ linux-5.8.0/drivers/infiniband/sw/rdmavt/Kconfig @@ -1,7 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-only config INFINIBAND_RDMAVT tristate "RDMA verbs transport library" - depends on X86_64 && ARCH_DMA_ADDR_T_64BIT + depends on INFINIBAND_VIRT_DMA + depends on X86_64 depends on PCI select DMA_VIRT_OPS help --- linux-5.8.0.orig/drivers/infiniband/sw/rdmavt/cq.c +++ linux-5.8.0/drivers/infiniband/sw/rdmavt/cq.c @@ -315,7 +315,7 @@ * * Called by ib_destroy_cq() in the generic verbs code. */ -void rvt_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +int rvt_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct rvt_cq *cq = ibcq_to_rvtcq(ibcq); struct rvt_dev_info *rdi = cq->rdi; @@ -328,6 +328,7 @@ kref_put(&cq->ip->ref, rvt_release_mmap_info); else vfree(cq->kqueue); + return 0; } /** --- linux-5.8.0.orig/drivers/infiniband/sw/rdmavt/cq.h +++ linux-5.8.0/drivers/infiniband/sw/rdmavt/cq.h @@ -53,7 +53,7 @@ int rvt_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); -void rvt_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); +int rvt_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata); int rvt_req_notify_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags notify_flags); int rvt_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata); int rvt_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *entry); --- linux-5.8.0.orig/drivers/infiniband/sw/rdmavt/vt.c +++ linux-5.8.0/drivers/infiniband/sw/rdmavt/vt.c @@ -95,9 +95,7 @@ if (!rdi) return rdi; - rdi->ports = kcalloc(nports, - sizeof(struct rvt_ibport **), - GFP_KERNEL); + rdi->ports = kcalloc(nports, sizeof(*rdi->ports), GFP_KERNEL); if (!rdi->ports) ib_dealloc_device(&rdi->ibdev); --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/Kconfig +++ linux-5.8.0/drivers/infiniband/sw/rxe/Kconfig @@ -2,8 +2,9 @@ config RDMA_RXE tristate "Software RDMA over Ethernet (RoCE) driver" depends on INET && PCI && INFINIBAND - depends on !64BIT || ARCH_DMA_ADDR_T_64BIT + depends on INFINIBAND_VIRT_DMA select NET_UDP_TUNNEL + select CRYPTO select CRYPTO_CRC32 select DMA_VIRT_OPS help --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe.c @@ -48,6 +48,8 @@ } +bool rxe_initialized; + /* free resources for a rxe device all objects created for this device must * have been destroyed */ @@ -147,9 +149,6 @@ rxe_init_port_param(port); - if (!port->attr.pkey_tbl_len || !port->attr.gid_tbl_len) - return -EINVAL; - port->pkey_tbl = kcalloc(port->attr.pkey_tbl_len, sizeof(*port->pkey_tbl), GFP_KERNEL); @@ -348,6 +347,7 @@ return err; rdma_link_register(&rxe_link_ops); + rxe_initialized = true; pr_info("loaded\n"); return 0; } @@ -359,6 +359,7 @@ rxe_net_exit(); rxe_cache_exit(); + rxe_initialized = false; pr_info("unloaded\n"); } --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe.h +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe.h @@ -67,6 +67,8 @@ #define RXE_ROCE_V2_SPORT (0xc000) +extern bool rxe_initialized; + static inline u32 rxe_crc32(struct rxe_dev *rxe, u32 crc, void *next, size_t len) { --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_mr.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_mr.c @@ -207,6 +207,7 @@ vaddr = page_address(sg_page_iter_page(&sg_iter)); if (!vaddr) { pr_warn("null vaddr\n"); + ib_umem_release(umem); err = -ENOMEM; goto err1; } --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_net.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_net.c @@ -47,18 +47,6 @@ static struct rxe_recv_sockets recv_sockets; -struct device *rxe_dma_device(struct rxe_dev *rxe) -{ - struct net_device *ndev; - - ndev = rxe->ndev; - - if (is_vlan_dev(ndev)) - ndev = vlan_dev_real_dev(ndev); - - return ndev->dev.parent; -} - int rxe_mcast_add(struct rxe_dev *rxe, union ib_gid *mgid) { int err; @@ -453,6 +441,11 @@ void rxe_loopback(struct sk_buff *skb) { + if (skb->protocol == htons(ETH_P_IP)) + skb_pull(skb, sizeof(struct iphdr)); + else + skb_pull(skb, sizeof(struct ipv6hdr)); + rxe_rcv(skb); } --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_recv.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_recv.c @@ -36,21 +36,26 @@ #include "rxe.h" #include "rxe_loc.h" +/* check that QP matches packet opcode type and is in a valid state */ static int check_type_state(struct rxe_dev *rxe, struct rxe_pkt_info *pkt, struct rxe_qp *qp) { + unsigned int pkt_type; + if (unlikely(!qp->valid)) goto err1; + pkt_type = pkt->opcode & 0xe0; + switch (qp_type(qp)) { case IB_QPT_RC: - if (unlikely((pkt->opcode & IB_OPCODE_RC) != 0)) { + if (unlikely(pkt_type != IB_OPCODE_RC)) { pr_warn_ratelimited("bad qp type\n"); goto err1; } break; case IB_QPT_UC: - if (unlikely(!(pkt->opcode & IB_OPCODE_UC))) { + if (unlikely(pkt_type != IB_OPCODE_UC)) { pr_warn_ratelimited("bad qp type\n"); goto err1; } @@ -58,7 +63,7 @@ case IB_QPT_UD: case IB_QPT_SMI: case IB_QPT_GSI: - if (unlikely(!(pkt->opcode & IB_OPCODE_UD))) { + if (unlikely(pkt_type != IB_OPCODE_UD)) { pr_warn_ratelimited("bad qp type\n"); goto err1; } @@ -281,6 +286,8 @@ struct rxe_mc_elem *mce; struct rxe_qp *qp; union ib_gid dgid; + struct sk_buff *per_qp_skb; + struct rxe_pkt_info *per_qp_pkt; int err; if (skb->protocol == htons(ETH_P_IP)) @@ -298,7 +305,6 @@ list_for_each_entry(mce, &mcg->qp_list, qp_list) { qp = mce->qp; - pkt = SKB_TO_PKT(skb); /* validate qp for incoming packet */ err = check_type_state(rxe, pkt, qp); @@ -309,15 +315,27 @@ if (err) continue; - /* if *not* the last qp in the list - * increase the users of the skb then post to the next qp + /* for all but the last qp create a new clone of the + * skb and pass to the qp. If an error occurs in the + * checks for the last qp in the list we need to + * free the skb since it hasn't been passed on to + * rxe_rcv_pkt() which would free it later. */ - if (mce->qp_list.next != &mcg->qp_list) - skb_get(skb); + if (mce->qp_list.next != &mcg->qp_list) { + per_qp_skb = skb_clone(skb, GFP_ATOMIC); + } else { + per_qp_skb = skb; + /* show we have consumed the skb */ + skb = NULL; + } - pkt->qp = qp; + if (unlikely(!per_qp_skb)) + continue; + + per_qp_pkt = SKB_TO_PKT(per_qp_skb); + per_qp_pkt->qp = qp; rxe_add_ref(qp); - rxe_rcv_pkt(pkt, skb); + rxe_rcv_pkt(per_qp_pkt, per_qp_skb); } spin_unlock_bh(&mcg->mcg_lock); @@ -325,15 +343,20 @@ rxe_drop_ref(mcg); /* drop ref from rxe_pool_get_key. */ err1: + /* free skb if not consumed */ kfree_skb(skb); } static int rxe_match_dgid(struct rxe_dev *rxe, struct sk_buff *skb) { + struct rxe_pkt_info *pkt = SKB_TO_PKT(skb); const struct ib_gid_attr *gid_attr; union ib_gid dgid; union ib_gid *pdgid; + if (pkt->mask & RXE_LOOPBACK_MASK) + return 0; + if (skb->protocol == htons(ETH_P_IP)) { ipv6_addr_set_v4mapped(ip_hdr(skb)->daddr, (struct in6_addr *)&dgid); @@ -366,7 +389,7 @@ if (unlikely(skb->len < pkt->offset + RXE_BTH_BYTES)) goto drop; - if (unlikely(rxe_match_dgid(rxe, skb) < 0)) { + if (rxe_match_dgid(rxe, skb) < 0) { pr_warn_ratelimited("failed matching dgid\n"); goto drop; } --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_req.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_req.c @@ -664,7 +664,8 @@ } if (unlikely(qp_type(qp) == IB_QPT_RC && - qp->req.psn > (qp->comp.psn + RXE_MAX_UNACKED_PSNS))) { + psn_compare(qp->req.psn, (qp->comp.psn + + RXE_MAX_UNACKED_PSNS)) > 0)) { qp->req.wait_psn = 1; goto exit; } --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_sysfs.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_sysfs.c @@ -61,6 +61,11 @@ struct net_device *ndev; struct rxe_dev *exists; + if (!rxe_initialized) { + pr_err("Module parameters are not supported, use rdma link add or rxe_cfg\n"); + return -EAGAIN; + } + len = sanitize_arg(val, intf, sizeof(intf)); if (!len) { pr_err("add: invalid interface name\n"); --- linux-5.8.0.orig/drivers/infiniband/sw/rxe/rxe_verbs.c +++ linux-5.8.0/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -684,6 +684,7 @@ unsigned int mask; unsigned int length = 0; int i; + struct ib_send_wr *next; while (wr) { mask = wr_opcode_mask(wr->opcode, qp); @@ -700,6 +701,8 @@ break; } + next = wr->next; + length = 0; for (i = 0; i < wr->num_sge; i++) length += wr->sg_list[i].length; @@ -710,7 +713,7 @@ *bad_wr = wr; break; } - wr = wr->next; + wr = next; } rxe_run_task(&qp->req.task, 1); @@ -813,13 +816,14 @@ return rxe_add_to_pool(&rxe->cq_pool, &cq->pelem); } -static void rxe_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) +static int rxe_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata) { struct rxe_cq *cq = to_rcq(ibcq); rxe_cq_disable(cq); rxe_drop_ref(cq); + return 0; } static int rxe_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata) @@ -1080,7 +1084,7 @@ struct rxe_dev *rxe = rdma_device_to_drv_device(device, struct rxe_dev, ib_dev); - return snprintf(buf, 16, "%s\n", rxe_parent_name(rxe, 1)); + return scnprintf(buf, PAGE_SIZE, "%s\n", rxe_parent_name(rxe, 1)); } static DEVICE_ATTR_RO(parent); @@ -1171,7 +1175,6 @@ dev->node_type = RDMA_NODE_IB_CA; dev->phys_port_cnt = 1; dev->num_comp_vectors = num_possible_cpus(); - dev->dev.parent = rxe_dma_device(rxe); dev->local_dma_lkey = 0; addrconf_addr_eui48((unsigned char *)&dev->node_guid, rxe->ndev->dev_addr); --- linux-5.8.0.orig/drivers/infiniband/sw/siw/Kconfig +++ linux-5.8.0/drivers/infiniband/sw/siw/Kconfig @@ -1,6 +1,7 @@ config RDMA_SIW tristate "Software RDMA over TCP/IP (iWARP) driver" depends on INET && INFINIBAND && LIBCRC32C + depends on INFINIBAND_VIRT_DMA select DMA_VIRT_OPS help This driver implements the iWARP RDMA transport over --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw.h +++ linux-5.8.0/drivers/infiniband/sw/siw/siw.h @@ -654,7 +654,7 @@ { struct siw_sqe *orq_e = orq_get_tail(qp); - if (orq_e && READ_ONCE(orq_e->flags) == 0) + if (READ_ONCE(orq_e->flags) == 0) return orq_e; return NULL; --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_main.c +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_main.c @@ -135,7 +135,7 @@ static int siw_init_cpulist(void) { - int i, num_nodes = num_possible_nodes(); + int i, num_nodes = nr_node_ids; memset(siw_tx_thread, 0, sizeof(siw_tx_thread)); @@ -306,24 +306,8 @@ { struct siw_device *sdev = NULL; struct ib_device *base_dev; - struct device *parent = netdev->dev.parent; int rv; - if (!parent) { - /* - * The loopback device has no parent device, - * so it appears as a top-level device. To support - * loopback device connectivity, take this device - * as the parent device. Skip all other devices - * w/o parent device. - */ - if (netdev->type != ARPHRD_LOOPBACK) { - pr_warn("siw: device %s error: no parent device\n", - netdev->name); - return NULL; - } - parent = &netdev->dev; - } sdev = ib_alloc_device(siw_device, base_dev); if (!sdev) return NULL; @@ -382,7 +366,6 @@ * per physical port. */ base_dev->phys_port_cnt = 1; - base_dev->dev.parent = parent; base_dev->dev.dma_ops = &dma_virt_ops; base_dev->dev.dma_parms = &sdev->dma_parms; sdev->dma_parms = (struct device_dma_parameters) @@ -428,7 +411,7 @@ atomic_set(&sdev->num_mr, 0); atomic_set(&sdev->num_pd, 0); - sdev->numa_node = dev_to_node(parent); + sdev->numa_node = dev_to_node(&netdev->dev); spin_lock_init(&sdev->lock); return sdev; --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_qp.c +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_qp.c @@ -199,26 +199,26 @@ static int siw_qp_readq_init(struct siw_qp *qp, int irq_size, int orq_size) { - irq_size = roundup_pow_of_two(irq_size); - orq_size = roundup_pow_of_two(orq_size); - + if (irq_size) { + irq_size = roundup_pow_of_two(irq_size); + qp->irq = vzalloc(irq_size * sizeof(struct siw_sqe)); + if (!qp->irq) { + qp->attrs.irq_size = 0; + return -ENOMEM; + } + } + if (orq_size) { + orq_size = roundup_pow_of_two(orq_size); + qp->orq = vzalloc(orq_size * sizeof(struct siw_sqe)); + if (!qp->orq) { + qp->attrs.orq_size = 0; + qp->attrs.irq_size = 0; + vfree(qp->irq); + return -ENOMEM; + } + } qp->attrs.irq_size = irq_size; qp->attrs.orq_size = orq_size; - - qp->irq = vzalloc(irq_size * sizeof(struct siw_sqe)); - if (!qp->irq) { - siw_dbg_qp(qp, "irq malloc for %d failed\n", irq_size); - qp->attrs.irq_size = 0; - return -ENOMEM; - } - qp->orq = vzalloc(orq_size * sizeof(struct siw_sqe)); - if (!qp->orq) { - siw_dbg_qp(qp, "orq malloc for %d failed\n", orq_size); - qp->attrs.orq_size = 0; - qp->attrs.irq_size = 0; - vfree(qp->irq); - return -ENOMEM; - } siw_dbg_qp(qp, "ORD %d, IRD %d\n", orq_size, irq_size); return 0; } @@ -288,13 +288,14 @@ if (ctrl & MPA_V2_RDMA_WRITE_RTR) wqe->sqe.opcode = SIW_OP_WRITE; else if (ctrl & MPA_V2_RDMA_READ_RTR) { - struct siw_sqe *rreq; + struct siw_sqe *rreq = NULL; wqe->sqe.opcode = SIW_OP_READ; spin_lock(&qp->orq_lock); - rreq = orq_get_free(qp); + if (qp->attrs.orq_size) + rreq = orq_get_free(qp); if (rreq) { siw_read_to_orq(rreq, &wqe->sqe); qp->orq_put++; @@ -877,135 +878,88 @@ rreq->num_sge = 1; } -/* - * Must be called with SQ locked. - * To avoid complete SQ starvation by constant inbound READ requests, - * the active IRQ will not be served after qp->irq_burst, if the - * SQ has pending work. - */ -int siw_activate_tx(struct siw_qp *qp) +static int siw_activate_tx_from_sq(struct siw_qp *qp) { - struct siw_sqe *irqe, *sqe; + struct siw_sqe *sqe; struct siw_wqe *wqe = tx_wqe(qp); int rv = 1; - irqe = &qp->irq[qp->irq_get % qp->attrs.irq_size]; - - if (irqe->flags & SIW_WQE_VALID) { - sqe = sq_get_next(qp); - - /* - * Avoid local WQE processing starvation in case - * of constant inbound READ request stream - */ - if (sqe && ++qp->irq_burst >= SIW_IRQ_MAXBURST_SQ_ACTIVE) { - qp->irq_burst = 0; - goto skip_irq; - } - memset(wqe->mem, 0, sizeof(*wqe->mem) * SIW_MAX_SGE); - wqe->wr_status = SIW_WR_QUEUED; - - /* start READ RESPONSE */ - wqe->sqe.opcode = SIW_OP_READ_RESPONSE; - wqe->sqe.flags = 0; - if (irqe->num_sge) { - wqe->sqe.num_sge = 1; - wqe->sqe.sge[0].length = irqe->sge[0].length; - wqe->sqe.sge[0].laddr = irqe->sge[0].laddr; - wqe->sqe.sge[0].lkey = irqe->sge[0].lkey; - } else { - wqe->sqe.num_sge = 0; - } - - /* Retain original RREQ's message sequence number for - * potential error reporting cases. - */ - wqe->sqe.sge[1].length = irqe->sge[1].length; - - wqe->sqe.rkey = irqe->rkey; - wqe->sqe.raddr = irqe->raddr; + sqe = sq_get_next(qp); + if (!sqe) + return 0; - wqe->processed = 0; - qp->irq_get++; + memset(wqe->mem, 0, sizeof(*wqe->mem) * SIW_MAX_SGE); + wqe->wr_status = SIW_WR_QUEUED; - /* mark current IRQ entry free */ - smp_store_mb(irqe->flags, 0); + /* First copy SQE to kernel private memory */ + memcpy(&wqe->sqe, sqe, sizeof(*sqe)); + if (wqe->sqe.opcode >= SIW_NUM_OPCODES) { + rv = -EINVAL; goto out; } - sqe = sq_get_next(qp); - if (sqe) { -skip_irq: - memset(wqe->mem, 0, sizeof(*wqe->mem) * SIW_MAX_SGE); - wqe->wr_status = SIW_WR_QUEUED; - - /* First copy SQE to kernel private memory */ - memcpy(&wqe->sqe, sqe, sizeof(*sqe)); - - if (wqe->sqe.opcode >= SIW_NUM_OPCODES) { + if (wqe->sqe.flags & SIW_WQE_INLINE) { + if (wqe->sqe.opcode != SIW_OP_SEND && + wqe->sqe.opcode != SIW_OP_WRITE) { rv = -EINVAL; goto out; } - if (wqe->sqe.flags & SIW_WQE_INLINE) { - if (wqe->sqe.opcode != SIW_OP_SEND && - wqe->sqe.opcode != SIW_OP_WRITE) { - rv = -EINVAL; - goto out; - } - if (wqe->sqe.sge[0].length > SIW_MAX_INLINE) { - rv = -EINVAL; - goto out; - } - wqe->sqe.sge[0].laddr = (uintptr_t)&wqe->sqe.sge[1]; - wqe->sqe.sge[0].lkey = 0; - wqe->sqe.num_sge = 1; - } - if (wqe->sqe.flags & SIW_WQE_READ_FENCE) { - /* A READ cannot be fenced */ - if (unlikely(wqe->sqe.opcode == SIW_OP_READ || - wqe->sqe.opcode == - SIW_OP_READ_LOCAL_INV)) { - siw_dbg_qp(qp, "cannot fence read\n"); - rv = -EINVAL; - goto out; - } - spin_lock(&qp->orq_lock); + if (wqe->sqe.sge[0].length > SIW_MAX_INLINE) { + rv = -EINVAL; + goto out; + } + wqe->sqe.sge[0].laddr = (uintptr_t)&wqe->sqe.sge[1]; + wqe->sqe.sge[0].lkey = 0; + wqe->sqe.num_sge = 1; + } + if (wqe->sqe.flags & SIW_WQE_READ_FENCE) { + /* A READ cannot be fenced */ + if (unlikely(wqe->sqe.opcode == SIW_OP_READ || + wqe->sqe.opcode == + SIW_OP_READ_LOCAL_INV)) { + siw_dbg_qp(qp, "cannot fence read\n"); + rv = -EINVAL; + goto out; + } + spin_lock(&qp->orq_lock); - if (!siw_orq_empty(qp)) { - qp->tx_ctx.orq_fence = 1; - rv = 0; - } - spin_unlock(&qp->orq_lock); + if (qp->attrs.orq_size && !siw_orq_empty(qp)) { + qp->tx_ctx.orq_fence = 1; + rv = 0; + } + spin_unlock(&qp->orq_lock); - } else if (wqe->sqe.opcode == SIW_OP_READ || - wqe->sqe.opcode == SIW_OP_READ_LOCAL_INV) { - struct siw_sqe *rreq; + } else if (wqe->sqe.opcode == SIW_OP_READ || + wqe->sqe.opcode == SIW_OP_READ_LOCAL_INV) { + struct siw_sqe *rreq; - wqe->sqe.num_sge = 1; + if (unlikely(!qp->attrs.orq_size)) { + /* We negotiated not to send READ req's */ + rv = -EINVAL; + goto out; + } + wqe->sqe.num_sge = 1; - spin_lock(&qp->orq_lock); + spin_lock(&qp->orq_lock); - rreq = orq_get_free(qp); - if (rreq) { - /* - * Make an immediate copy in ORQ to be ready - * to process loopback READ reply - */ - siw_read_to_orq(rreq, &wqe->sqe); - qp->orq_put++; - } else { - qp->tx_ctx.orq_fence = 1; - rv = 0; - } - spin_unlock(&qp->orq_lock); + rreq = orq_get_free(qp); + if (rreq) { + /* + * Make an immediate copy in ORQ to be ready + * to process loopback READ reply + */ + siw_read_to_orq(rreq, &wqe->sqe); + qp->orq_put++; + } else { + qp->tx_ctx.orq_fence = 1; + rv = 0; } - - /* Clear SQE, can be re-used by application */ - smp_store_mb(sqe->flags, 0); - qp->sq_get++; - } else { - rv = 0; + spin_unlock(&qp->orq_lock); } + + /* Clear SQE, can be re-used by application */ + smp_store_mb(sqe->flags, 0); + qp->sq_get++; out: if (unlikely(rv < 0)) { siw_dbg_qp(qp, "error %d\n", rv); @@ -1015,6 +969,65 @@ } /* + * Must be called with SQ locked. + * To avoid complete SQ starvation by constant inbound READ requests, + * the active IRQ will not be served after qp->irq_burst, if the + * SQ has pending work. + */ +int siw_activate_tx(struct siw_qp *qp) +{ + struct siw_sqe *irqe; + struct siw_wqe *wqe = tx_wqe(qp); + + if (!qp->attrs.irq_size) + return siw_activate_tx_from_sq(qp); + + irqe = &qp->irq[qp->irq_get % qp->attrs.irq_size]; + + if (!(irqe->flags & SIW_WQE_VALID)) + return siw_activate_tx_from_sq(qp); + + /* + * Avoid local WQE processing starvation in case + * of constant inbound READ request stream + */ + if (sq_get_next(qp) && ++qp->irq_burst >= SIW_IRQ_MAXBURST_SQ_ACTIVE) { + qp->irq_burst = 0; + return siw_activate_tx_from_sq(qp); + } + memset(wqe->mem, 0, sizeof(*wqe->mem) * SIW_MAX_SGE); + wqe->wr_status = SIW_WR_QUEUED; + + /* start READ RESPONSE */ + wqe->sqe.opcode = SIW_OP_READ_RESPONSE; + wqe->sqe.flags = 0; + if (irqe->num_sge) { + wqe->sqe.num_sge = 1; + wqe->sqe.sge[0].length = irqe->sge[0].length; + wqe->sqe.sge[0].laddr = irqe->sge[0].laddr; + wqe->sqe.sge[0].lkey = irqe->sge[0].lkey; + } else { + wqe->sqe.num_sge = 0; + } + + /* Retain original RREQ's message sequence number for + * potential error reporting cases. + */ + wqe->sqe.sge[1].length = irqe->sge[1].length; + + wqe->sqe.rkey = irqe->rkey; + wqe->sqe.raddr = irqe->raddr; + + wqe->processed = 0; + qp->irq_get++; + + /* mark current IRQ entry free */ + smp_store_mb(irqe->flags, 0); + + return 1; +} + +/* * Check if current CQ state qualifies for calling CQ completion * handler. Must be called with CQ lock held. */ --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_qp_rx.c +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_qp_rx.c @@ -680,6 +680,10 @@ } spin_lock_irqsave(&qp->sq_lock, flags); + if (unlikely(!qp->attrs.irq_size)) { + run_sq = 0; + goto error_irq; + } if (tx_work->wr_status == SIW_WR_IDLE) { /* * immediately schedule READ response w/o @@ -712,8 +716,9 @@ /* RRESP now valid as current TX wqe or placed into IRQ */ smp_store_mb(resp->flags, SIW_WQE_VALID); } else { - pr_warn("siw: [QP %u]: irq %d exceeded %d\n", qp_id(qp), - qp->irq_put % qp->attrs.irq_size, qp->attrs.irq_size); +error_irq: + pr_warn("siw: [QP %u]: IRQ exceeded or null, size %d\n", + qp_id(qp), qp->attrs.irq_size); siw_init_terminate(qp, TERM_ERROR_LAYER_RDMAP, RDMAP_ETYPE_REMOTE_OPERATION, @@ -740,6 +745,9 @@ struct siw_sqe *orqe; struct siw_wqe *wqe = NULL; + if (unlikely(!qp->attrs.orq_size)) + return -EPROTO; + /* make sure ORQ indices are current */ smp_mb(); @@ -796,8 +804,8 @@ */ rv = siw_orqe_start_rx(qp); if (rv) { - pr_warn("siw: [QP %u]: ORQ empty at idx %d\n", - qp_id(qp), qp->orq_get % qp->attrs.orq_size); + pr_warn("siw: [QP %u]: ORQ empty, size %d\n", + qp_id(qp), qp->attrs.orq_size); goto error_term; } rv = siw_rresp_check_ntoh(srx, frx); @@ -1290,11 +1298,13 @@ wc_status); siw_wqe_put_mem(wqe, SIW_OP_READ); - if (!error) + if (!error) { rv = siw_check_tx_fence(qp); - else - /* Disable current ORQ eleement */ - WRITE_ONCE(orq_get_current(qp)->flags, 0); + } else { + /* Disable current ORQ element */ + if (qp->attrs.orq_size) + WRITE_ONCE(orq_get_current(qp)->flags, 0); + } break; case RDMAP_RDMA_READ_REQ: --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_qp_tx.c +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_qp_tx.c @@ -1107,8 +1107,8 @@ /* * RREQ may have already been completed by inbound RRESP! */ - if (tx_type == SIW_OP_READ || - tx_type == SIW_OP_READ_LOCAL_INV) { + if ((tx_type == SIW_OP_READ || + tx_type == SIW_OP_READ_LOCAL_INV) && qp->attrs.orq_size) { /* Cleanup pending entry in ORQ */ qp->orq_put--; qp->orq[qp->orq_put % qp->attrs.orq_size].flags = 0; --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_verbs.c +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_verbs.c @@ -370,13 +370,23 @@ if (rv) goto err_out; + num_sqe = attrs->cap.max_send_wr; + num_rqe = attrs->cap.max_recv_wr; + /* All queue indices are derived from modulo operations * on a free running 'get' (consumer) and 'put' (producer) * unsigned counter. Having queue sizes at power of two * avoids handling counter wrap around. */ - num_sqe = roundup_pow_of_two(attrs->cap.max_send_wr); - num_rqe = roundup_pow_of_two(attrs->cap.max_recv_wr); + if (num_sqe) + num_sqe = roundup_pow_of_two(num_sqe); + else { + /* Zero sized SQ is not supported */ + rv = -EINVAL; + goto err_out; + } + if (num_rqe) + num_rqe = roundup_pow_of_two(num_rqe); if (udata) qp->sendq = vmalloc_user(num_sqe * sizeof(struct siw_sqe)); @@ -384,7 +394,6 @@ qp->sendq = vzalloc(num_sqe * sizeof(struct siw_sqe)); if (qp->sendq == NULL) { - siw_dbg(base_dev, "SQ size %d alloc failed\n", num_sqe); rv = -ENOMEM; goto err_out_xa; } @@ -418,7 +427,6 @@ qp->recvq = vzalloc(num_rqe * sizeof(struct siw_rqe)); if (qp->recvq == NULL) { - siw_dbg(base_dev, "RQ size %d alloc failed\n", num_rqe); rv = -ENOMEM; goto err_out_xa; } @@ -968,9 +976,9 @@ unsigned long flags; int rv = 0; - if (qp->srq) { + if (qp->srq || qp->attrs.rq_size == 0) { *bad_wr = wr; - return -EOPNOTSUPP; /* what else from errno.h? */ + return -EINVAL; } if (!rdma_is_kernel_res(&qp->base_qp.res)) { siw_dbg_qp(qp, "no kernel post_recv for user mapped rq\n"); @@ -1064,7 +1072,7 @@ return rv > 0 ? 0 : rv; } -void siw_destroy_cq(struct ib_cq *base_cq, struct ib_udata *udata) +int siw_destroy_cq(struct ib_cq *base_cq, struct ib_udata *udata) { struct siw_cq *cq = to_siw_cq(base_cq); struct siw_device *sdev = to_siw_dev(base_cq->device); @@ -1082,6 +1090,7 @@ atomic_dec(&sdev->num_cq); vfree(cq->queue); + return 0; } /* --- linux-5.8.0.orig/drivers/infiniband/sw/siw/siw_verbs.h +++ linux-5.8.0/drivers/infiniband/sw/siw/siw_verbs.h @@ -63,7 +63,7 @@ const struct ib_send_wr **bad_wr); int siw_post_receive(struct ib_qp *base_qp, const struct ib_recv_wr *wr, const struct ib_recv_wr **bad_wr); -void siw_destroy_cq(struct ib_cq *base_cq, struct ib_udata *udata); +int siw_destroy_cq(struct ib_cq *base_cq, struct ib_udata *udata); int siw_poll_cq(struct ib_cq *base_cq, int num_entries, struct ib_wc *wc); int siw_req_notify_cq(struct ib_cq *base_cq, enum ib_cq_notify_flags flags); struct ib_mr *siw_reg_user_mr(struct ib_pd *base_pd, u64 start, u64 len, --- linux-5.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib.h +++ linux-5.8.0/drivers/infiniband/ulp/ipoib/ipoib.h @@ -515,7 +515,7 @@ int ipoib_ib_dev_open_default(struct net_device *dev); int ipoib_ib_dev_open(struct net_device *dev); -int ipoib_ib_dev_stop(struct net_device *dev); +void ipoib_ib_dev_stop(struct net_device *dev); void ipoib_ib_dev_up(struct net_device *dev); void ipoib_ib_dev_down(struct net_device *dev); int ipoib_ib_dev_stop_default(struct net_device *dev); --- linux-5.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ linux-5.8.0/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -670,13 +670,12 @@ return rc; } -static void __ipoib_reap_ah(struct net_device *dev) +static void ipoib_reap_dead_ahs(struct ipoib_dev_priv *priv) { - struct ipoib_dev_priv *priv = ipoib_priv(dev); struct ipoib_ah *ah, *tah; unsigned long flags; - netif_tx_lock_bh(dev); + netif_tx_lock_bh(priv->dev); spin_lock_irqsave(&priv->lock, flags); list_for_each_entry_safe(ah, tah, &priv->dead_ahs, list) @@ -687,37 +686,37 @@ } spin_unlock_irqrestore(&priv->lock, flags); - netif_tx_unlock_bh(dev); + netif_tx_unlock_bh(priv->dev); } void ipoib_reap_ah(struct work_struct *work) { struct ipoib_dev_priv *priv = container_of(work, struct ipoib_dev_priv, ah_reap_task.work); - struct net_device *dev = priv->dev; - __ipoib_reap_ah(dev); + ipoib_reap_dead_ahs(priv); if (!test_bit(IPOIB_STOP_REAPER, &priv->flags)) queue_delayed_work(priv->wq, &priv->ah_reap_task, round_jiffies_relative(HZ)); } -static void ipoib_flush_ah(struct net_device *dev) +static void ipoib_start_ah_reaper(struct ipoib_dev_priv *priv) { - struct ipoib_dev_priv *priv = ipoib_priv(dev); - - cancel_delayed_work(&priv->ah_reap_task); - flush_workqueue(priv->wq); - ipoib_reap_ah(&priv->ah_reap_task.work); + clear_bit(IPOIB_STOP_REAPER, &priv->flags); + queue_delayed_work(priv->wq, &priv->ah_reap_task, + round_jiffies_relative(HZ)); } -static void ipoib_stop_ah(struct net_device *dev) +static void ipoib_stop_ah_reaper(struct ipoib_dev_priv *priv) { - struct ipoib_dev_priv *priv = ipoib_priv(dev); - set_bit(IPOIB_STOP_REAPER, &priv->flags); - ipoib_flush_ah(dev); + cancel_delayed_work(&priv->ah_reap_task); + /* + * After ipoib_stop_ah_reaper() we always go through + * ipoib_reap_dead_ahs() which ensures the work is really stopped and + * does a final flush out of the dead_ah's list + */ } static int recvs_pending(struct net_device *dev) @@ -846,18 +845,6 @@ return 0; } -int ipoib_ib_dev_stop(struct net_device *dev) -{ - struct ipoib_dev_priv *priv = ipoib_priv(dev); - - priv->rn_ops->ndo_stop(dev); - - clear_bit(IPOIB_FLAG_INITIALIZED, &priv->flags); - ipoib_flush_ah(dev); - - return 0; -} - int ipoib_ib_dev_open_default(struct net_device *dev) { struct ipoib_dev_priv *priv = ipoib_priv(dev); @@ -901,10 +888,7 @@ return -1; } - clear_bit(IPOIB_STOP_REAPER, &priv->flags); - queue_delayed_work(priv->wq, &priv->ah_reap_task, - round_jiffies_relative(HZ)); - + ipoib_start_ah_reaper(priv); if (priv->rn_ops->ndo_open(dev)) { pr_warn("%s: Failed to open dev\n", dev->name); goto dev_stop; @@ -915,13 +899,20 @@ return 0; dev_stop: - set_bit(IPOIB_STOP_REAPER, &priv->flags); - cancel_delayed_work(&priv->ah_reap_task); - set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags); - ipoib_ib_dev_stop(dev); + ipoib_stop_ah_reaper(priv); return -1; } +void ipoib_ib_dev_stop(struct net_device *dev) +{ + struct ipoib_dev_priv *priv = ipoib_priv(dev); + + priv->rn_ops->ndo_stop(dev); + + clear_bit(IPOIB_FLAG_INITIALIZED, &priv->flags); + ipoib_stop_ah_reaper(priv); +} + void ipoib_pkey_dev_check_presence(struct net_device *dev) { struct ipoib_dev_priv *priv = ipoib_priv(dev); @@ -1232,7 +1223,7 @@ ipoib_mcast_dev_flush(dev); if (oper_up) set_bit(IPOIB_FLAG_OPER_UP, &priv->flags); - ipoib_flush_ah(dev); + ipoib_reap_dead_ahs(priv); } if (level >= IPOIB_FLUSH_NORMAL) @@ -1307,7 +1298,7 @@ * the neighbor garbage collection is stopped and reaped. * That should all be done now, so make a final ah flush. */ - ipoib_stop_ah(dev); + ipoib_reap_dead_ahs(priv); clear_bit(IPOIB_PKEY_ASSIGNED, &priv->flags); --- linux-5.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ linux-5.8.0/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -1976,6 +1976,8 @@ /* no more works over the priv->wq */ if (priv->wq) { + /* See ipoib_mcast_carrier_on_task() */ + WARN_ON(test_bit(IPOIB_FLAG_OPER_UP, &priv->flags)); flush_workqueue(priv->wq); destroy_workqueue(priv->wq); priv->wq = NULL; @@ -2468,6 +2470,8 @@ /* call event handler to ensure pkey in sync */ queue_work(ipoib_workqueue, &priv->flush_heavy); + ndev->rtnl_link_ops = ipoib_get_link_ops(); + result = register_netdev(ndev); if (result) { pr_warn("%s: couldn't register ipoib port %d; error %d\n", --- linux-5.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib_netlink.c +++ linux-5.8.0/drivers/infiniband/ulp/ipoib/ipoib_netlink.c @@ -144,6 +144,16 @@ return 0; } +static void ipoib_del_child_link(struct net_device *dev, struct list_head *head) +{ + struct ipoib_dev_priv *priv = ipoib_priv(dev); + + if (!priv->parent) + return; + + unregister_netdevice_queue(dev, head); +} + static size_t ipoib_get_size(const struct net_device *dev) { return nla_total_size(2) + /* IFLA_IPOIB_PKEY */ @@ -158,6 +168,7 @@ .priv_size = sizeof(struct ipoib_dev_priv), .setup = ipoib_setup_common, .newlink = ipoib_new_child_link, + .dellink = ipoib_del_child_link, .changelink = ipoib_changelink, .get_size = ipoib_get_size, .fill_info = ipoib_fill_info, --- linux-5.8.0.orig/drivers/infiniband/ulp/ipoib/ipoib_vlan.c +++ linux-5.8.0/drivers/infiniband/ulp/ipoib/ipoib_vlan.c @@ -195,6 +195,8 @@ } priv = ipoib_priv(ndev); + ndev->rtnl_link_ops = ipoib_get_link_ops(); + result = __ipoib_vlan_add(ppriv, priv, pkey, IPOIB_LEGACY_CHILD); if (result && ndev->reg_state == NETREG_UNINITIALIZED) --- linux-5.8.0.orig/drivers/infiniband/ulp/isert/ib_isert.c +++ linux-5.8.0/drivers/infiniband/ulp/isert/ib_isert.c @@ -183,15 +183,15 @@ rx_desc = isert_conn->rx_descs; for (i = 0; i < ISERT_QP_MAX_RECV_DTOS; i++, rx_desc++) { - dma_addr = ib_dma_map_single(ib_dev, (void *)rx_desc, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + dma_addr = ib_dma_map_single(ib_dev, rx_desc->buf, + ISER_RX_SIZE, DMA_FROM_DEVICE); if (ib_dma_mapping_error(ib_dev, dma_addr)) goto dma_map_fail; rx_desc->dma_addr = dma_addr; rx_sg = &rx_desc->rx_sg; - rx_sg->addr = rx_desc->dma_addr; + rx_sg->addr = rx_desc->dma_addr + isert_get_hdr_offset(rx_desc); rx_sg->length = ISER_RX_PAYLOAD_SIZE; rx_sg->lkey = device->pd->local_dma_lkey; rx_desc->rx_cqe.done = isert_recv_done; @@ -203,7 +203,7 @@ rx_desc = isert_conn->rx_descs; for (j = 0; j < i; j++, rx_desc++) { ib_dma_unmap_single(ib_dev, rx_desc->dma_addr, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ISER_RX_SIZE, DMA_FROM_DEVICE); } kfree(isert_conn->rx_descs); isert_conn->rx_descs = NULL; @@ -224,7 +224,7 @@ rx_desc = isert_conn->rx_descs; for (i = 0; i < ISERT_QP_MAX_RECV_DTOS; i++, rx_desc++) { ib_dma_unmap_single(ib_dev, rx_desc->dma_addr, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ISER_RX_SIZE, DMA_FROM_DEVICE); } kfree(isert_conn->rx_descs); @@ -409,10 +409,9 @@ ISER_RX_PAYLOAD_SIZE, DMA_TO_DEVICE); kfree(isert_conn->login_rsp_buf); - ib_dma_unmap_single(ib_dev, isert_conn->login_req_dma, - ISER_RX_PAYLOAD_SIZE, - DMA_FROM_DEVICE); - kfree(isert_conn->login_req_buf); + ib_dma_unmap_single(ib_dev, isert_conn->login_desc->dma_addr, + ISER_RX_SIZE, DMA_FROM_DEVICE); + kfree(isert_conn->login_desc); } static int @@ -421,25 +420,25 @@ { int ret; - isert_conn->login_req_buf = kzalloc(sizeof(*isert_conn->login_req_buf), + isert_conn->login_desc = kzalloc(sizeof(*isert_conn->login_desc), GFP_KERNEL); - if (!isert_conn->login_req_buf) + if (!isert_conn->login_desc) return -ENOMEM; - isert_conn->login_req_dma = ib_dma_map_single(ib_dev, - isert_conn->login_req_buf, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); - ret = ib_dma_mapping_error(ib_dev, isert_conn->login_req_dma); + isert_conn->login_desc->dma_addr = ib_dma_map_single(ib_dev, + isert_conn->login_desc->buf, + ISER_RX_SIZE, DMA_FROM_DEVICE); + ret = ib_dma_mapping_error(ib_dev, isert_conn->login_desc->dma_addr); if (ret) { - isert_err("login_req_dma mapping error: %d\n", ret); - isert_conn->login_req_dma = 0; - goto out_free_login_req_buf; + isert_err("login_desc dma mapping error: %d\n", ret); + isert_conn->login_desc->dma_addr = 0; + goto out_free_login_desc; } isert_conn->login_rsp_buf = kzalloc(ISER_RX_PAYLOAD_SIZE, GFP_KERNEL); if (!isert_conn->login_rsp_buf) { ret = -ENOMEM; - goto out_unmap_login_req_buf; + goto out_unmap_login_desc; } isert_conn->login_rsp_dma = ib_dma_map_single(ib_dev, @@ -456,11 +455,11 @@ out_free_login_rsp_buf: kfree(isert_conn->login_rsp_buf); -out_unmap_login_req_buf: - ib_dma_unmap_single(ib_dev, isert_conn->login_req_dma, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); -out_free_login_req_buf: - kfree(isert_conn->login_req_buf); +out_unmap_login_desc: + ib_dma_unmap_single(ib_dev, isert_conn->login_desc->dma_addr, + ISER_RX_SIZE, DMA_FROM_DEVICE); +out_free_login_desc: + kfree(isert_conn->login_desc); return ret; } @@ -579,7 +578,7 @@ ib_destroy_qp(isert_conn->qp); } - if (isert_conn->login_req_buf) + if (isert_conn->login_desc) isert_free_login_buf(isert_conn); isert_device_put(device); @@ -965,17 +964,18 @@ int ret; memset(&sge, 0, sizeof(struct ib_sge)); - sge.addr = isert_conn->login_req_dma; + sge.addr = isert_conn->login_desc->dma_addr + + isert_get_hdr_offset(isert_conn->login_desc); sge.length = ISER_RX_PAYLOAD_SIZE; sge.lkey = isert_conn->device->pd->local_dma_lkey; isert_dbg("Setup sge: addr: %llx length: %d 0x%08x\n", sge.addr, sge.length, sge.lkey); - isert_conn->login_req_buf->rx_cqe.done = isert_login_recv_done; + isert_conn->login_desc->rx_cqe.done = isert_login_recv_done; memset(&rx_wr, 0, sizeof(struct ib_recv_wr)); - rx_wr.wr_cqe = &isert_conn->login_req_buf->rx_cqe; + rx_wr.wr_cqe = &isert_conn->login_desc->rx_cqe; rx_wr.sg_list = &sge; rx_wr.num_sge = 1; @@ -1052,7 +1052,7 @@ static void isert_rx_login_req(struct isert_conn *isert_conn) { - struct iser_rx_desc *rx_desc = isert_conn->login_req_buf; + struct iser_rx_desc *rx_desc = isert_conn->login_desc; int rx_buflen = isert_conn->login_req_len; struct iscsi_conn *conn = isert_conn->conn; struct iscsi_login *login = conn->conn_login; @@ -1064,7 +1064,7 @@ if (login->first_request) { struct iscsi_login_req *login_req = - (struct iscsi_login_req *)&rx_desc->iscsi_header; + (struct iscsi_login_req *)isert_get_iscsi_hdr(rx_desc); /* * Setup the initial iscsi_login values from the leading * login request PDU. @@ -1083,13 +1083,13 @@ login->tsih = be16_to_cpu(login_req->tsih); } - memcpy(&login->req[0], (void *)&rx_desc->iscsi_header, ISCSI_HDR_LEN); + memcpy(&login->req[0], isert_get_iscsi_hdr(rx_desc), ISCSI_HDR_LEN); size = min(rx_buflen, MAX_KEY_VALUE_PAIRS); isert_dbg("Using login payload size: %d, rx_buflen: %d " "MAX_KEY_VALUE_PAIRS: %d\n", size, rx_buflen, MAX_KEY_VALUE_PAIRS); - memcpy(login->req_buf, &rx_desc->data[0], size); + memcpy(login->req_buf, isert_get_data(rx_desc), size); if (login->first_request) { complete(&isert_conn->login_comp); @@ -1154,14 +1154,15 @@ if (imm_data_len != data_len) { sg_nents = max(1UL, DIV_ROUND_UP(imm_data_len, PAGE_SIZE)); sg_copy_from_buffer(cmd->se_cmd.t_data_sg, sg_nents, - &rx_desc->data[0], imm_data_len); + isert_get_data(rx_desc), imm_data_len); isert_dbg("Copy Immediate sg_nents: %u imm_data_len: %d\n", sg_nents, imm_data_len); } else { sg_init_table(&isert_cmd->sg, 1); cmd->se_cmd.t_data_sg = &isert_cmd->sg; cmd->se_cmd.t_data_nents = 1; - sg_set_buf(&isert_cmd->sg, &rx_desc->data[0], imm_data_len); + sg_set_buf(&isert_cmd->sg, isert_get_data(rx_desc), + imm_data_len); isert_dbg("Transfer Immediate imm_data_len: %d\n", imm_data_len); } @@ -1230,9 +1231,9 @@ } isert_dbg("Copying DataOut: sg_start: %p, sg_off: %u " "sg_nents: %u from %p %u\n", sg_start, sg_off, - sg_nents, &rx_desc->data[0], unsol_data_len); + sg_nents, isert_get_data(rx_desc), unsol_data_len); - sg_copy_from_buffer(sg_start, sg_nents, &rx_desc->data[0], + sg_copy_from_buffer(sg_start, sg_nents, isert_get_data(rx_desc), unsol_data_len); rc = iscsit_check_dataout_payload(cmd, hdr, false); @@ -1291,7 +1292,7 @@ } cmd->text_in_ptr = text_in; - memcpy(cmd->text_in_ptr, &rx_desc->data[0], payload_length); + memcpy(cmd->text_in_ptr, isert_get_data(rx_desc), payload_length); return iscsit_process_text_cmd(conn, cmd, hdr); } @@ -1301,7 +1302,7 @@ uint32_t read_stag, uint64_t read_va, uint32_t write_stag, uint64_t write_va) { - struct iscsi_hdr *hdr = &rx_desc->iscsi_header; + struct iscsi_hdr *hdr = isert_get_iscsi_hdr(rx_desc); struct iscsi_conn *conn = isert_conn->conn; struct iscsi_cmd *cmd; struct isert_cmd *isert_cmd; @@ -1399,8 +1400,8 @@ struct isert_conn *isert_conn = wc->qp->qp_context; struct ib_device *ib_dev = isert_conn->cm_id->device; struct iser_rx_desc *rx_desc = cqe_to_rx_desc(wc->wr_cqe); - struct iscsi_hdr *hdr = &rx_desc->iscsi_header; - struct iser_ctrl *iser_ctrl = &rx_desc->iser_header; + struct iscsi_hdr *hdr = isert_get_iscsi_hdr(rx_desc); + struct iser_ctrl *iser_ctrl = isert_get_iser_hdr(rx_desc); uint64_t read_va = 0, write_va = 0; uint32_t read_stag = 0, write_stag = 0; @@ -1414,7 +1415,7 @@ rx_desc->in_use = true; ib_dma_sync_single_for_cpu(ib_dev, rx_desc->dma_addr, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ISER_RX_SIZE, DMA_FROM_DEVICE); isert_dbg("DMA: 0x%llx, iSCSI opcode: 0x%02x, ITT: 0x%08x, flags: 0x%02x dlen: %d\n", rx_desc->dma_addr, hdr->opcode, hdr->itt, hdr->flags, @@ -1449,7 +1450,7 @@ read_stag, read_va, write_stag, write_va); ib_dma_sync_single_for_device(ib_dev, rx_desc->dma_addr, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ISER_RX_SIZE, DMA_FROM_DEVICE); } static void @@ -1463,8 +1464,8 @@ return; } - ib_dma_sync_single_for_cpu(ib_dev, isert_conn->login_req_dma, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ib_dma_sync_single_for_cpu(ib_dev, isert_conn->login_desc->dma_addr, + ISER_RX_SIZE, DMA_FROM_DEVICE); isert_conn->login_req_len = wc->byte_len - ISER_HEADERS_LEN; @@ -1479,8 +1480,8 @@ complete(&isert_conn->login_req_comp); mutex_unlock(&isert_conn->mutex); - ib_dma_sync_single_for_device(ib_dev, isert_conn->login_req_dma, - ISER_RX_PAYLOAD_SIZE, DMA_FROM_DEVICE); + ib_dma_sync_single_for_device(ib_dev, isert_conn->login_desc->dma_addr, + ISER_RX_SIZE, DMA_FROM_DEVICE); } static void --- linux-5.8.0.orig/drivers/infiniband/ulp/isert/ib_isert.h +++ linux-5.8.0/drivers/infiniband/ulp/isert/ib_isert.h @@ -59,9 +59,11 @@ ISERT_MAX_TX_MISC_PDUS + \ ISERT_MAX_RX_MISC_PDUS) -#define ISER_RX_PAD_SIZE (ISCSI_DEF_MAX_RECV_SEG_LEN + 4096 - \ - (ISER_RX_PAYLOAD_SIZE + sizeof(u64) + sizeof(struct ib_sge) + \ - sizeof(struct ib_cqe) + sizeof(bool))) +/* + * RX size is default of 8k plus headers, but data needs to align to + * 512 boundary, so use 1024 to have the extra space for alignment. + */ +#define ISER_RX_SIZE (ISCSI_DEF_MAX_RECV_SEG_LEN + 1024) #define ISCSI_ISER_SG_TABLESIZE 256 @@ -80,21 +82,41 @@ }; struct iser_rx_desc { - struct iser_ctrl iser_header; - struct iscsi_hdr iscsi_header; - char data[ISCSI_DEF_MAX_RECV_SEG_LEN]; + char buf[ISER_RX_SIZE]; u64 dma_addr; struct ib_sge rx_sg; struct ib_cqe rx_cqe; bool in_use; - char pad[ISER_RX_PAD_SIZE]; -} __packed; +}; static inline struct iser_rx_desc *cqe_to_rx_desc(struct ib_cqe *cqe) { return container_of(cqe, struct iser_rx_desc, rx_cqe); } +static void *isert_get_iser_hdr(struct iser_rx_desc *desc) +{ + return PTR_ALIGN(desc->buf + ISER_HEADERS_LEN, 512) - ISER_HEADERS_LEN; +} + +static size_t isert_get_hdr_offset(struct iser_rx_desc *desc) +{ + return isert_get_iser_hdr(desc) - (void *)desc->buf; +} + +static void *isert_get_iscsi_hdr(struct iser_rx_desc *desc) +{ + return isert_get_iser_hdr(desc) + sizeof(struct iser_ctrl); +} + +static void *isert_get_data(struct iser_rx_desc *desc) +{ + void *data = isert_get_iser_hdr(desc) + ISER_HEADERS_LEN; + + WARN_ON((uintptr_t)data & 511); + return data; +} + struct iser_tx_desc { struct iser_ctrl iser_header; struct iscsi_hdr iscsi_header; @@ -141,9 +163,8 @@ u32 responder_resources; u32 initiator_depth; bool pi_support; - struct iser_rx_desc *login_req_buf; + struct iser_rx_desc *login_desc; char *login_rsp_buf; - u64 login_req_dma; int login_req_len; u64 login_rsp_dma; struct iser_rx_desc *rx_descs; --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c @@ -408,6 +408,7 @@ "%s", str); if (err) { pr_err("kobject_init_and_add: %d\n", err); + kobject_put(&sess->kobj); return err; } err = sysfs_create_group(&sess->kobj, &rtrs_clt_sess_attr_group); @@ -419,6 +420,7 @@ &sess->kobj, "stats"); if (err) { pr_err("kobject_init_and_add: %d\n", err); + kobject_put(&sess->stats->kobj_stats); goto remove_group; } --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-clt.c +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-clt.c @@ -12,6 +12,7 @@ #include #include +#include #include "rtrs-clt.h" #include "rtrs-log.h" @@ -23,6 +24,14 @@ * leads to "false positives" failed reconnect attempts */ #define RTRS_RECONNECT_BACKOFF 1000 +/* + * Wait for additional random time between 0 and 8 seconds + * before starting to reconnect to avoid clients reconnecting + * all at once in case of a major network outage + */ +#define RTRS_RECONNECT_SEED 8 + +#define FIRST_CONN 0x01 MODULE_DESCRIPTION("RDMA Transport Client"); MODULE_LICENSE("GPL"); @@ -306,7 +315,8 @@ */ delay_ms = clt->reconnect_delay_sec * 1000; queue_delayed_work(rtrs_wq, &sess->reconnect_dwork, - msecs_to_jiffies(delay_ms)); + msecs_to_jiffies(delay_ms + + prandom_u32() % RTRS_RECONNECT_SEED)); } else { /* * Error can happen just on establishing new connection, @@ -492,7 +502,7 @@ int err; struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess); - WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F); + WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0); iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe); err = rtrs_iu_post_recv(&con->c, iu); @@ -512,7 +522,7 @@ u32 buf_id; int err; - WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F); + WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0); iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe); @@ -619,12 +629,12 @@ } else if (imm_type == RTRS_HB_MSG_IMM) { WARN_ON(con->c.cid); rtrs_send_hb_ack(&sess->s); - if (sess->flags == RTRS_MSG_NEW_RKEY_F) + if (sess->flags & RTRS_MSG_NEW_RKEY_F) return rtrs_clt_recv_done(con, wc); } else if (imm_type == RTRS_HB_ACK_IMM) { WARN_ON(con->c.cid); sess->s.hb_missed_cnt = 0; - if (sess->flags == RTRS_MSG_NEW_RKEY_F) + if (sess->flags & RTRS_MSG_NEW_RKEY_F) return rtrs_clt_recv_done(con, wc); } else { rtrs_wrn(con->c.sess, "Unknown IMM type %u\n", @@ -652,7 +662,7 @@ WARN_ON(!(wc->wc_flags & IB_WC_WITH_INVALIDATE || wc->wc_flags & IB_WC_WITH_IMM)); WARN_ON(wc->wr_cqe->done != rtrs_clt_rdma_done); - if (sess->flags == RTRS_MSG_NEW_RKEY_F) { + if (sess->flags & RTRS_MSG_NEW_RKEY_F) { if (wc->wc_flags & IB_WC_WITH_INVALIDATE) return rtrs_clt_recv_done(con, wc); @@ -662,7 +672,6 @@ case IB_WC_RDMA_WRITE: /* * post_send() RDMA write completions of IO reqs (read/write) - * and hb */ break; @@ -678,7 +687,7 @@ struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess); for (i = 0; i < q_size; i++) { - if (sess->flags == RTRS_MSG_NEW_RKEY_F) { + if (sess->flags & RTRS_MSG_NEW_RKEY_F) { struct rtrs_iu *iu = &con->rsp_ius[i]; err = rtrs_iu_post_recv(&con->c, iu); @@ -1228,8 +1237,7 @@ if (req->mr) ib_dereg_mr(req->mr); kfree(req->sge); - rtrs_iu_free(req->iu, DMA_TO_DEVICE, - sess->s.dev->ib_dev, 1); + rtrs_iu_free(req->iu, sess->s.dev->ib_dev, 1); } kfree(sess->reqs); sess->reqs = NULL; @@ -1508,7 +1516,7 @@ static int create_con_cq_qp(struct rtrs_clt_con *con) { struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess); - u16 wr_queue_size; + u32 max_send_wr, max_recv_wr, cq_size; int err, cq_vector; struct rtrs_msg_rkey_rsp *rsp; @@ -1528,7 +1536,8 @@ * + 2 for drain and heartbeat * in case qp gets into error state */ - wr_queue_size = SERVICE_CON_QUEUE_DEPTH * 3 + 2; + max_send_wr = SERVICE_CON_QUEUE_DEPTH * 2 + 2; + max_recv_wr = SERVICE_CON_QUEUE_DEPTH * 2 + 2; /* We must be the first here */ if (WARN_ON(sess->s.dev)) return -EINVAL; @@ -1560,25 +1569,29 @@ /* Shared between connections */ sess->s.dev_ref++; - wr_queue_size = + max_send_wr = min_t(int, sess->s.dev->ib_dev->attrs.max_qp_wr, /* QD * (REQ + RSP + FR REGS or INVS) + drain */ sess->queue_depth * 3 + 1); + max_recv_wr = + min_t(int, sess->s.dev->ib_dev->attrs.max_qp_wr, + sess->queue_depth * 3 + 1); } /* alloc iu to recv new rkey reply when server reports flags set */ - if (sess->flags == RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) { - con->rsp_ius = rtrs_iu_alloc(wr_queue_size, sizeof(*rsp), + if (sess->flags & RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) { + con->rsp_ius = rtrs_iu_alloc(max_recv_wr, sizeof(*rsp), GFP_KERNEL, sess->s.dev->ib_dev, DMA_FROM_DEVICE, rtrs_clt_rdma_done); if (!con->rsp_ius) return -ENOMEM; - con->queue_size = wr_queue_size; + con->queue_size = max_recv_wr; } + cq_size = max_send_wr + max_recv_wr; cq_vector = con->cpu % sess->s.dev->ib_dev->num_comp_vectors; err = rtrs_cq_qp_create(&sess->s, &con->c, sess->max_send_sge, - cq_vector, wr_queue_size, wr_queue_size, - IB_POLL_SOFTIRQ); + cq_vector, cq_size, max_send_wr, + max_recv_wr, IB_POLL_SOFTIRQ); /* * In case of error we do not bother to clean previous allocations, * since destroy_con_cq_qp() must be called. @@ -1597,8 +1610,7 @@ rtrs_cq_qp_destroy(&con->c); if (con->rsp_ius) { - rtrs_iu_free(con->rsp_ius, DMA_FROM_DEVICE, - sess->s.dev->ib_dev, con->queue_size); + rtrs_iu_free(con->rsp_ius, sess->s.dev->ib_dev, con->queue_size); con->rsp_ius = NULL; con->queue_size = 0; } @@ -1632,10 +1644,8 @@ return err; } err = rdma_resolve_route(con->c.cm_id, RTRS_CONNECT_TIMEOUT_MS); - if (err) { + if (err) rtrs_err(s, "Resolving route failed, err: %d\n", err); - destroy_con_cq_qp(con); - } return err; } @@ -1663,6 +1673,7 @@ .cid_num = cpu_to_le16(sess->s.con_num), .recon_cnt = cpu_to_le16(sess->s.recon_cnt), }; + msg.first_conn = sess->for_new_clt ? FIRST_CONN : 0; uuid_copy(&msg.sess_uuid, &sess->s.uuid); uuid_copy(&msg.paths_uuid, &clt->paths_uuid); @@ -1748,6 +1759,8 @@ scnprintf(sess->hca_name, sizeof(sess->hca_name), sess->s.dev->ib_dev->name); sess->s.src_addr = con->c.cm_id->route.addr.src_addr; + /* set for_new_clt, to allow future reconnect on any path */ + sess->for_new_clt = 1; } return 0; @@ -1829,8 +1842,8 @@ cm_err = rtrs_rdma_route_resolved(con); break; case RDMA_CM_EVENT_ESTABLISHED: - con->cm_err = rtrs_rdma_conn_established(con, ev); - if (likely(!con->cm_err)) { + cm_err = rtrs_rdma_conn_established(con, ev); + if (likely(!cm_err)) { /* * Report success and wake up. Here we abuse state_wq, * i.e. wake up without state change, but we set cm_err. @@ -2237,7 +2250,7 @@ struct rtrs_iu *iu; iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe); - rtrs_iu_free(iu, DMA_TO_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(iu, sess->s.dev->ib_dev, 1); if (unlikely(wc->status != IB_WC_SUCCESS)) { rtrs_err(sess->clt, "Sess info request send failed: %s\n", @@ -2366,7 +2379,7 @@ out: rtrs_clt_update_wc_stats(con); - rtrs_iu_free(iu, DMA_FROM_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(iu, sess->s.dev->ib_dev, 1); rtrs_clt_change_state(sess, state); } @@ -2428,9 +2441,9 @@ out: if (tx_iu) - rtrs_iu_free(tx_iu, DMA_TO_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(tx_iu, sess->s.dev->ib_dev, 1); if (rx_iu) - rtrs_iu_free(rx_iu, DMA_FROM_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(rx_iu, sess->s.dev->ib_dev, 1); if (unlikely(err)) /* If we've never taken async path because of malloc problems */ rtrs_clt_change_state(sess, RTRS_CLT_CONNECTING_ERR); @@ -2503,7 +2516,9 @@ sess->stats->reconnects.fail_cnt++; delay_ms = clt->reconnect_delay_sec * 1000; queue_delayed_work(rtrs_wq, &sess->reconnect_dwork, - msecs_to_jiffies(delay_ms)); + msecs_to_jiffies(delay_ms + + prandom_u32() % + RTRS_RECONNECT_SEED)); } } @@ -2563,11 +2578,8 @@ clt->dev.class = rtrs_clt_dev_class; clt->dev.release = rtrs_clt_dev_release; err = dev_set_name(&clt->dev, "%s", sessname); - if (err) { - free_percpu(clt->pcpu_path); - kfree(clt); - return ERR_PTR(err); - } + if (err) + goto err; /* * Suppress user space notification until * sysfs files are created @@ -2575,29 +2587,31 @@ dev_set_uevent_suppress(&clt->dev, true); err = device_register(&clt->dev); if (err) { - free_percpu(clt->pcpu_path); put_device(&clt->dev); - return ERR_PTR(err); + goto err; } clt->kobj_paths = kobject_create_and_add("paths", &clt->dev.kobj); if (!clt->kobj_paths) { - free_percpu(clt->pcpu_path); - device_unregister(&clt->dev); - return NULL; + err = -ENOMEM; + goto err_dev; } err = rtrs_clt_create_sysfs_root_files(clt); if (err) { - free_percpu(clt->pcpu_path); kobject_del(clt->kobj_paths); kobject_put(clt->kobj_paths); - device_unregister(&clt->dev); - return ERR_PTR(err); + goto err_dev; } dev_set_uevent_suppress(&clt->dev, false); kobject_uevent(&clt->dev.kobj, KOBJ_ADD); return clt; +err_dev: + device_unregister(&clt->dev); +err: + free_percpu(clt->pcpu_path); + kfree(clt); + return ERR_PTR(err); } static void wait_for_inflight_permits(struct rtrs_clt *clt) @@ -2670,6 +2684,8 @@ err = PTR_ERR(sess); goto close_all_sess; } + if (!i) + sess->for_new_clt = 1; list_add_tail_rcu(&sess->s.entry, &clt->paths_list); err = init_sess(sess); @@ -2972,7 +2988,7 @@ pr_err("Failed to create rtrs-client dev class\n"); return PTR_ERR(rtrs_clt_dev_class); } - rtrs_wq = alloc_workqueue("rtrs_client_wq", WQ_MEM_RECLAIM, 0); + rtrs_wq = alloc_workqueue("rtrs_client_wq", 0, 0); if (!rtrs_wq) { class_destroy(rtrs_clt_dev_class); return -ENOMEM; --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-clt.h +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-clt.h @@ -142,6 +142,7 @@ int max_send_sge; u32 flags; struct kobject kobj; + u8 for_new_clt; struct rtrs_clt_stats *stats; /* cache hca_port and hca_name to display in sysfs */ u8 hca_port; --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-pri.h +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-pri.h @@ -189,7 +189,9 @@ __le16 recon_cnt; uuid_t sess_uuid; uuid_t paths_uuid; - u8 reserved[12]; + u8 first_conn : 1; + u8 reserved_bits : 7; + u8 reserved[11]; }; /** @@ -288,8 +290,7 @@ struct rtrs_iu *rtrs_iu_alloc(u32 queue_size, size_t size, gfp_t t, struct ib_device *dev, enum dma_data_direction, void (*done)(struct ib_cq *cq, struct ib_wc *wc)); -void rtrs_iu_free(struct rtrs_iu *iu, enum dma_data_direction dir, - struct ib_device *dev, u32 queue_size); +void rtrs_iu_free(struct rtrs_iu *iu, struct ib_device *dev, u32 queue_size); int rtrs_iu_post_recv(struct rtrs_con *con, struct rtrs_iu *iu); int rtrs_iu_post_send(struct rtrs_con *con, struct rtrs_iu *iu, size_t size, struct ib_send_wr *head); @@ -305,8 +306,9 @@ struct ib_send_wr *head); int rtrs_cq_qp_create(struct rtrs_sess *rtrs_sess, struct rtrs_con *con, - u32 max_send_sge, int cq_vector, u16 cq_size, - u16 wr_queue_size, enum ib_poll_context poll_ctx); + u32 max_send_sge, int cq_vector, int cq_size, + u32 max_send_wr, u32 max_recv_wr, + enum ib_poll_context poll_ctx); void rtrs_cq_qp_destroy(struct rtrs_con *con); void rtrs_init_hb(struct rtrs_sess *sess, struct ib_cqe *cqe, --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-srv-sysfs.c @@ -53,6 +53,8 @@ sockaddr_to_str((struct sockaddr *)&sess->s.dst_addr, str, sizeof(str)); rtrs_info(s, "disconnect for path %s requested\n", str); + /* first remove sysfs itself to avoid deadlock */ + sysfs_remove_file_self(&sess->kobj, &attr->attr); close_sess(sess); return count; @@ -152,13 +154,6 @@ .attrs = rtrs_srv_stats_attrs, }; -static void rtrs_srv_dev_release(struct device *dev) -{ - struct rtrs_srv *srv = container_of(dev, struct rtrs_srv, dev); - - kfree(srv); -} - static int rtrs_srv_create_once_sysfs_root_folders(struct rtrs_srv_sess *sess) { struct rtrs_srv *srv = sess->srv; @@ -172,7 +167,6 @@ goto unlock; } srv->dev.class = rtrs_dev_class; - srv->dev.release = rtrs_srv_dev_release; err = dev_set_name(&srv->dev, "%s", sess->s.sessname); if (err) goto unlock; @@ -182,16 +176,17 @@ * sysfs files are created */ dev_set_uevent_suppress(&srv->dev, true); - err = device_register(&srv->dev); + err = device_add(&srv->dev); if (err) { - pr_err("device_register(): %d\n", err); + pr_err("device_add(): %d\n", err); goto put; } srv->kobj_paths = kobject_create_and_add("paths", &srv->dev.kobj); if (!srv->kobj_paths) { err = -ENOMEM; pr_err("kobject_create_and_add(): %d\n", err); - device_unregister(&srv->dev); + device_del(&srv->dev); + put_device(&srv->dev); goto unlock; } dev_set_uevent_suppress(&srv->dev, false); @@ -216,7 +211,8 @@ kobject_del(srv->kobj_paths); kobject_put(srv->kobj_paths); mutex_unlock(&srv->paths_mutex); - device_unregister(&srv->dev); + device_del(&srv->dev); + put_device(&srv->dev); } else { mutex_unlock(&srv->paths_mutex); } @@ -245,6 +241,7 @@ &sess->kobj, "stats"); if (err) { rtrs_err(s, "kobject_init_and_add(): %d\n", err); + kobject_put(&sess->stats->kobj_stats); return err; } err = sysfs_create_group(&sess->stats->kobj_stats, @@ -301,8 +298,8 @@ sysfs_remove_group(&sess->kobj, &rtrs_srv_sess_attr_group); put_kobj: kobject_del(&sess->kobj); - kobject_put(&sess->kobj); destroy_root: + kobject_put(&sess->kobj); rtrs_srv_destroy_once_sysfs_root_folders(sess); return err; @@ -313,7 +310,7 @@ if (sess->kobj.state_in_sysfs) { kobject_del(&sess->stats->kobj_stats); kobject_put(&sess->stats->kobj_stats); - kobject_del(&sess->kobj); + sysfs_remove_group(&sess->kobj, &rtrs_srv_sess_attr_group); kobject_put(&sess->kobj); rtrs_srv_destroy_once_sysfs_root_folders(sess); --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-srv.c +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-srv.c @@ -16,6 +16,7 @@ #include "rtrs-srv.h" #include "rtrs-log.h" #include +#include MODULE_DESCRIPTION("RDMA Transport Server"); MODULE_LICENSE("GPL"); @@ -31,6 +32,7 @@ static struct rtrs_rdma_dev_pd dev_pd; static mempool_t *chunk_pool; struct class *rtrs_dev_class; +static struct rtrs_srv_ib_ctx ib_ctx; static int __read_mostly max_chunk_size = DEFAULT_MAX_CHUNK_SIZE; static int __read_mostly sess_queue_depth = DEFAULT_SESS_QUEUE_DEPTH; @@ -230,7 +232,8 @@ dma_addr_t dma_addr = sess->dma_addr[id->msg_id]; struct rtrs_srv_mr *srv_mr; struct rtrs_srv *srv = sess->srv; - struct ib_send_wr inv_wr, imm_wr; + struct ib_send_wr inv_wr; + struct ib_rdma_wr imm_wr; struct ib_rdma_wr *wr = NULL; enum ib_send_flags flags; size_t sg_cnt; @@ -275,21 +278,22 @@ WARN_ON_ONCE(rkey != wr->rkey); wr->wr.opcode = IB_WR_RDMA_WRITE; + wr->wr.wr_cqe = &io_comp_cqe; wr->wr.ex.imm_data = 0; wr->wr.send_flags = 0; if (need_inval && always_invalidate) { wr->wr.next = &rwr.wr; rwr.wr.next = &inv_wr; - inv_wr.next = &imm_wr; + inv_wr.next = &imm_wr.wr; } else if (always_invalidate) { wr->wr.next = &rwr.wr; - rwr.wr.next = &imm_wr; + rwr.wr.next = &imm_wr.wr; } else if (need_inval) { wr->wr.next = &inv_wr; - inv_wr.next = &imm_wr; + inv_wr.next = &imm_wr.wr; } else { - wr->wr.next = &imm_wr; + wr->wr.next = &imm_wr.wr; } /* * From time to time we have to post signaled sends, @@ -302,16 +306,18 @@ inv_wr.sg_list = NULL; inv_wr.num_sge = 0; inv_wr.opcode = IB_WR_SEND_WITH_INV; + inv_wr.wr_cqe = &io_comp_cqe; inv_wr.send_flags = 0; inv_wr.ex.invalidate_rkey = rkey; } - imm_wr.next = NULL; + imm_wr.wr.next = NULL; if (always_invalidate) { struct rtrs_msg_rkey_rsp *msg; srv_mr = &sess->mrs[id->msg_id]; rwr.wr.opcode = IB_WR_REG_MR; + rwr.wr.wr_cqe = &local_reg_cqe; rwr.wr.num_sge = 0; rwr.mr = srv_mr->mr; rwr.wr.send_flags = 0; @@ -326,22 +332,22 @@ list.addr = srv_mr->iu->dma_addr; list.length = sizeof(*msg); list.lkey = sess->s.dev->ib_pd->local_dma_lkey; - imm_wr.sg_list = &list; - imm_wr.num_sge = 1; - imm_wr.opcode = IB_WR_SEND_WITH_IMM; + imm_wr.wr.sg_list = &list; + imm_wr.wr.num_sge = 1; + imm_wr.wr.opcode = IB_WR_SEND_WITH_IMM; ib_dma_sync_single_for_device(sess->s.dev->ib_dev, srv_mr->iu->dma_addr, srv_mr->iu->size, DMA_TO_DEVICE); } else { - imm_wr.sg_list = NULL; - imm_wr.num_sge = 0; - imm_wr.opcode = IB_WR_RDMA_WRITE_WITH_IMM; + imm_wr.wr.sg_list = NULL; + imm_wr.wr.num_sge = 0; + imm_wr.wr.opcode = IB_WR_RDMA_WRITE_WITH_IMM; } - imm_wr.send_flags = flags; - imm_wr.ex.imm_data = cpu_to_be32(rtrs_to_io_rsp_imm(id->msg_id, + imm_wr.wr.send_flags = flags; + imm_wr.wr.ex.imm_data = cpu_to_be32(rtrs_to_io_rsp_imm(id->msg_id, 0, need_inval)); - imm_wr.wr_cqe = &io_comp_cqe; + imm_wr.wr.wr_cqe = &io_comp_cqe; ib_dma_sync_single_for_device(sess->s.dev->ib_dev, dma_addr, offset, DMA_BIDIRECTIONAL); @@ -368,7 +374,8 @@ { struct rtrs_sess *s = con->c.sess; struct rtrs_srv_sess *sess = to_srv_sess(s); - struct ib_send_wr inv_wr, imm_wr, *wr = NULL; + struct ib_send_wr inv_wr, *wr = NULL; + struct ib_rdma_wr imm_wr; struct ib_reg_wr rwr; struct rtrs_srv *srv = sess->srv; struct rtrs_srv_mr *srv_mr; @@ -387,6 +394,7 @@ if (need_inval) { if (likely(sg_cnt)) { + inv_wr.wr_cqe = &io_comp_cqe; inv_wr.sg_list = NULL; inv_wr.num_sge = 0; inv_wr.opcode = IB_WR_SEND_WITH_INV; @@ -404,15 +412,15 @@ if (need_inval && always_invalidate) { wr = &inv_wr; inv_wr.next = &rwr.wr; - rwr.wr.next = &imm_wr; + rwr.wr.next = &imm_wr.wr; } else if (always_invalidate) { wr = &rwr.wr; - rwr.wr.next = &imm_wr; + rwr.wr.next = &imm_wr.wr; } else if (need_inval) { wr = &inv_wr; - inv_wr.next = &imm_wr; + inv_wr.next = &imm_wr.wr; } else { - wr = &imm_wr; + wr = &imm_wr.wr; } /* * From time to time we have to post signalled sends, @@ -421,14 +429,15 @@ flags = (atomic_inc_return(&con->wr_cnt) % srv->queue_depth) ? 0 : IB_SEND_SIGNALED; imm = rtrs_to_io_rsp_imm(id->msg_id, errno, need_inval); - imm_wr.next = NULL; + imm_wr.wr.next = NULL; if (always_invalidate) { struct ib_sge list; struct rtrs_msg_rkey_rsp *msg; srv_mr = &sess->mrs[id->msg_id]; - rwr.wr.next = &imm_wr; + rwr.wr.next = &imm_wr.wr; rwr.wr.opcode = IB_WR_REG_MR; + rwr.wr.wr_cqe = &local_reg_cqe; rwr.wr.num_sge = 0; rwr.wr.send_flags = 0; rwr.mr = srv_mr->mr; @@ -443,21 +452,21 @@ list.addr = srv_mr->iu->dma_addr; list.length = sizeof(*msg); list.lkey = sess->s.dev->ib_pd->local_dma_lkey; - imm_wr.sg_list = &list; - imm_wr.num_sge = 1; - imm_wr.opcode = IB_WR_SEND_WITH_IMM; + imm_wr.wr.sg_list = &list; + imm_wr.wr.num_sge = 1; + imm_wr.wr.opcode = IB_WR_SEND_WITH_IMM; ib_dma_sync_single_for_device(sess->s.dev->ib_dev, srv_mr->iu->dma_addr, srv_mr->iu->size, DMA_TO_DEVICE); } else { - imm_wr.sg_list = NULL; - imm_wr.num_sge = 0; - imm_wr.opcode = IB_WR_RDMA_WRITE_WITH_IMM; + imm_wr.wr.sg_list = NULL; + imm_wr.wr.num_sge = 0; + imm_wr.wr.opcode = IB_WR_RDMA_WRITE_WITH_IMM; } - imm_wr.send_flags = flags; - imm_wr.wr_cqe = &io_comp_cqe; + imm_wr.wr.send_flags = flags; + imm_wr.wr.wr_cqe = &io_comp_cqe; - imm_wr.ex.imm_data = cpu_to_be32(imm); + imm_wr.wr.ex.imm_data = cpu_to_be32(imm); err = ib_post_send(id->con->c.qp, wr, NULL); if (unlikely(err)) @@ -575,8 +584,7 @@ struct rtrs_srv_mr *srv_mr; srv_mr = &sess->mrs[i]; - rtrs_iu_free(srv_mr->iu, DMA_TO_DEVICE, - sess->s.dev->ib_dev, 1); + rtrs_iu_free(srv_mr->iu, sess->s.dev->ib_dev, 1); ib_dereg_mr(srv_mr->mr); ib_dma_unmap_sg(sess->s.dev->ib_dev, srv_mr->sgt.sgl, srv_mr->sgt.nents, DMA_BIDIRECTIONAL); @@ -663,7 +671,7 @@ if (!srv_mr->iu) { err = -ENOMEM; rtrs_err(ss, "rtrs_iu_alloc(), err: %d\n", err); - goto free_iu; + goto dereg_mr; } } /* Eventually dma addr for each chunk can be cached */ @@ -679,9 +687,7 @@ srv_mr = &sess->mrs[mri]; sgt = &srv_mr->sgt; mr = srv_mr->mr; -free_iu: - rtrs_iu_free(srv_mr->iu, DMA_TO_DEVICE, - sess->s.dev->ib_dev, 1); + rtrs_iu_free(srv_mr->iu, sess->s.dev->ib_dev, 1); dereg_mr: ib_dereg_mr(mr); unmap_sg: @@ -733,7 +739,7 @@ struct rtrs_iu *iu; iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe); - rtrs_iu_free(iu, DMA_TO_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(iu, sess->s.dev->ib_dev, 1); if (unlikely(wc->status != IB_WC_SUCCESS)) { rtrs_err(s, "Sess info response send failed: %s\n", @@ -827,7 +833,7 @@ rwr[mri].wr.opcode = IB_WR_REG_MR; rwr[mri].wr.wr_cqe = &local_reg_cqe; rwr[mri].wr.num_sge = 0; - rwr[mri].wr.send_flags = mri ? 0 : IB_SEND_SIGNALED; + rwr[mri].wr.send_flags = 0; rwr[mri].mr = mr; rwr[mri].key = mr->rkey; rwr[mri].access = (IB_ACCESS_LOCAL_WRITE | @@ -859,7 +865,7 @@ if (unlikely(err)) { rtrs_err(s, "rtrs_iu_post_send(), err: %d\n", err); iu_free: - rtrs_iu_free(tx_iu, DMA_TO_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(tx_iu, sess->s.dev->ib_dev, 1); } rwr_free: kfree(rwr); @@ -904,7 +910,7 @@ goto close; out: - rtrs_iu_free(iu, DMA_FROM_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(iu, sess->s.dev->ib_dev, 1); return; close: close_sess(sess); @@ -927,7 +933,7 @@ err = rtrs_iu_post_recv(&con->c, rx_iu); if (unlikely(err)) { rtrs_err(s, "rtrs_iu_post_recv(), err: %d\n", err); - rtrs_iu_free(rx_iu, DMA_FROM_DEVICE, sess->s.dev->ib_dev, 1); + rtrs_iu_free(rx_iu, sess->s.dev->ib_dev, 1); return err; } @@ -1251,7 +1257,6 @@ case IB_WC_SEND: /* * post_send() RDMA write completions of IO reqs (read/write) - * and hb */ atomic_add(srv->queue_depth, &con->sq_wr_avail); @@ -1319,23 +1324,63 @@ return sess->cur_cq_vector; } -static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx, - const uuid_t *paths_uuid) +static void rtrs_srv_dev_release(struct device *dev) +{ + struct rtrs_srv *srv = container_of(dev, struct rtrs_srv, dev); + + kfree(srv); +} + +static void free_srv(struct rtrs_srv *srv) +{ + int i; + + WARN_ON(refcount_read(&srv->refcount)); + for (i = 0; i < srv->queue_depth; i++) + mempool_free(srv->chunks[i], chunk_pool); + kfree(srv->chunks); + mutex_destroy(&srv->paths_mutex); + mutex_destroy(&srv->paths_ev_mutex); + /* last put to release the srv structure */ + put_device(&srv->dev); +} + +static struct rtrs_srv *get_or_create_srv(struct rtrs_srv_ctx *ctx, + const uuid_t *paths_uuid, + bool first_conn) { struct rtrs_srv *srv; int i; + mutex_lock(&ctx->srv_mutex); + list_for_each_entry(srv, &ctx->srv_list, ctx_list) { + if (uuid_equal(&srv->paths_uuid, paths_uuid) && + refcount_inc_not_zero(&srv->refcount)) { + mutex_unlock(&ctx->srv_mutex); + return srv; + } + } + mutex_unlock(&ctx->srv_mutex); + /* + * If this request is not the first connection request from the + * client for this session then fail and return error. + */ + if (!first_conn) + return ERR_PTR(-ENXIO); + + /* need to allocate a new srv */ srv = kzalloc(sizeof(*srv), GFP_KERNEL); if (!srv) - return NULL; + return ERR_PTR(-ENOMEM); - refcount_set(&srv->refcount, 1); INIT_LIST_HEAD(&srv->paths_list); mutex_init(&srv->paths_mutex); mutex_init(&srv->paths_ev_mutex); uuid_copy(&srv->paths_uuid, paths_uuid); srv->queue_depth = sess_queue_depth; srv->ctx = ctx; + device_initialize(&srv->dev); + srv->dev.release = rtrs_srv_dev_release; srv->chunks = kcalloc(srv->queue_depth, sizeof(*srv->chunks), GFP_KERNEL); @@ -1347,7 +1392,10 @@ if (!srv->chunks[i]) goto err_free_chunks; } + refcount_set(&srv->refcount, 1); + mutex_lock(&ctx->srv_mutex); list_add(&srv->ctx_list, &ctx->srv_list); + mutex_unlock(&ctx->srv_mutex); return srv; @@ -1358,50 +1406,7 @@ err_free_srv: kfree(srv); - - return NULL; -} - -static void free_srv(struct rtrs_srv *srv) -{ - int i; - - WARN_ON(refcount_read(&srv->refcount)); - for (i = 0; i < srv->queue_depth; i++) - mempool_free(srv->chunks[i], chunk_pool); - kfree(srv->chunks); - mutex_destroy(&srv->paths_mutex); - mutex_destroy(&srv->paths_ev_mutex); - /* last put to release the srv structure */ - put_device(&srv->dev); -} - -static inline struct rtrs_srv *__find_srv_and_get(struct rtrs_srv_ctx *ctx, - const uuid_t *paths_uuid) -{ - struct rtrs_srv *srv; - - list_for_each_entry(srv, &ctx->srv_list, ctx_list) { - if (uuid_equal(&srv->paths_uuid, paths_uuid) && - refcount_inc_not_zero(&srv->refcount)) - return srv; - } - - return NULL; -} - -static struct rtrs_srv *get_or_create_srv(struct rtrs_srv_ctx *ctx, - const uuid_t *paths_uuid) -{ - struct rtrs_srv *srv; - - mutex_lock(&ctx->srv_mutex); - srv = __find_srv_and_get(ctx, paths_uuid); - if (!srv) - srv = __alloc_srv(ctx, paths_uuid); - mutex_unlock(&ctx->srv_mutex); - - return srv; + return ERR_PTR(-ENOMEM); } static void put_srv(struct rtrs_srv *srv) @@ -1481,10 +1486,12 @@ static void free_sess(struct rtrs_srv_sess *sess) { - if (sess->kobj.state_in_sysfs) + if (sess->kobj.state_in_sysfs) { + kobject_del(&sess->kobj); kobject_put(&sess->kobj); - else + } else { kfree(sess); + } } static void rtrs_srv_close_work(struct work_struct *work) @@ -1606,7 +1613,7 @@ struct rtrs_sess *s = &sess->s; struct rtrs_srv_con *con; - u16 cq_size, wr_queue_size; + u32 cq_size, wr_queue_size; int err, cq_vector; con = kzalloc(sizeof(*con), GFP_KERNEL); @@ -1620,7 +1627,7 @@ con->c.cm_id = cm_id; con->c.sess = &sess->s; con->c.cid = cid; - atomic_set(&con->wr_cnt, 0); + atomic_set(&con->wr_cnt, 1); if (con->c.cid == 0) { /* @@ -1650,7 +1657,8 @@ /* TODO: SOFTIRQ can be faster, but be careful with softirq context */ err = rtrs_cq_qp_create(&sess->s, &con->c, 1, cq_vector, cq_size, - wr_queue_size, IB_POLL_WORKQUEUE); + wr_queue_size, wr_queue_size, + IB_POLL_WORKQUEUE); if (err) { rtrs_err(s, "rtrs_cq_qp_create(), err: %d\n", err); goto free_con; @@ -1801,9 +1809,9 @@ goto reject_w_econnreset; } recon_cnt = le16_to_cpu(msg->recon_cnt); - srv = get_or_create_srv(ctx, &msg->paths_uuid); - if (!srv) { - err = -ENOMEM; + srv = get_or_create_srv(ctx, &msg->paths_uuid, msg->first_conn); + if (IS_ERR(srv)) { + err = PTR_ERR(srv); goto reject_w_err; } mutex_lock(&srv->paths_mutex); @@ -1878,8 +1886,8 @@ return rtrs_rdma_do_reject(cm_id, -ECONNRESET); close_and_return_err: - close_sess(sess); mutex_unlock(&srv->paths_mutex); + close_sess(sess); return err; } @@ -2033,6 +2041,70 @@ kfree(ctx); } +static int rtrs_srv_add_one(struct ib_device *device) +{ + struct rtrs_srv_ctx *ctx; + int ret = 0; + + mutex_lock(&ib_ctx.ib_dev_mutex); + if (ib_ctx.ib_dev_count) + goto out; + + /* + * Since our CM IDs are NOT bound to any ib device we will create them + * only once + */ + ctx = ib_ctx.srv_ctx; + ret = rtrs_srv_rdma_init(ctx, ib_ctx.port); + if (ret) { + /* + * We errored out here. + * According to the ib code, if we encounter an error here then the + * error code is ignored, and no more calls to our ops are made. + */ + pr_err("Failed to initialize RDMA connection"); + goto err_out; + } + +out: + /* + * Keep a track on the number of ib devices added + */ + ib_ctx.ib_dev_count++; + +err_out: + mutex_unlock(&ib_ctx.ib_dev_mutex); + return ret; +} + +static void rtrs_srv_remove_one(struct ib_device *device, void *client_data) +{ + struct rtrs_srv_ctx *ctx; + + mutex_lock(&ib_ctx.ib_dev_mutex); + ib_ctx.ib_dev_count--; + + if (ib_ctx.ib_dev_count) + goto out; + + /* + * Since our CM IDs are NOT bound to any ib device we will remove them + * only once, when the last device is removed + */ + ctx = ib_ctx.srv_ctx; + rdma_destroy_id(ctx->cm_id_ip); + rdma_destroy_id(ctx->cm_id_ib); + +out: + mutex_unlock(&ib_ctx.ib_dev_mutex); +} + +static struct ib_client rtrs_srv_client = { + .name = "rtrs_server", + .add = rtrs_srv_add_one, + .remove = rtrs_srv_remove_one +}; + /** * rtrs_srv_open() - open RTRS server context * @ops: callback functions @@ -2051,7 +2123,11 @@ if (!ctx) return ERR_PTR(-ENOMEM); - err = rtrs_srv_rdma_init(ctx, port); + mutex_init(&ib_ctx.ib_dev_mutex); + ib_ctx.srv_ctx = ctx; + ib_ctx.port = port; + + err = ib_register_client(&rtrs_srv_client); if (err) { free_srv_ctx(ctx); return ERR_PTR(err); @@ -2090,8 +2166,8 @@ */ void rtrs_srv_close(struct rtrs_srv_ctx *ctx) { - rdma_destroy_id(ctx->cm_id_ip); - rdma_destroy_id(ctx->cm_id_ib); + ib_unregister_client(&rtrs_srv_client); + mutex_destroy(&ib_ctx.ib_dev_mutex); close_ctx(ctx); free_srv_ctx(ctx); } @@ -2150,7 +2226,7 @@ err = PTR_ERR(rtrs_dev_class); goto out_chunk_pool; } - rtrs_wq = alloc_workqueue("rtrs_server_wq", WQ_MEM_RECLAIM, 0); + rtrs_wq = alloc_workqueue("rtrs_server_wq", 0, 0); if (!rtrs_wq) { err = -ENOMEM; goto out_dev_class; --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs-srv.h +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs-srv.h @@ -118,6 +118,13 @@ struct list_head srv_list; }; +struct rtrs_srv_ib_ctx { + struct rtrs_srv_ctx *srv_ctx; + u16 port; + struct mutex ib_dev_mutex; + int ib_dev_count; +}; + extern struct class *rtrs_dev_class; void close_sess(struct rtrs_srv_sess *sess); --- linux-5.8.0.orig/drivers/infiniband/ulp/rtrs/rtrs.c +++ linux-5.8.0/drivers/infiniband/ulp/rtrs/rtrs.c @@ -31,6 +31,7 @@ return NULL; for (i = 0; i < queue_size; i++) { iu = &ius[i]; + iu->direction = dir; iu->buf = kzalloc(size, gfp_mask); if (!iu->buf) goto err; @@ -41,17 +42,15 @@ iu->cqe.done = done; iu->size = size; - iu->direction = dir; } return ius; err: - rtrs_iu_free(ius, dir, dma_dev, i); + rtrs_iu_free(ius, dma_dev, i); return NULL; } EXPORT_SYMBOL_GPL(rtrs_iu_alloc); -void rtrs_iu_free(struct rtrs_iu *ius, enum dma_data_direction dir, - struct ib_device *ibdev, u32 queue_size) +void rtrs_iu_free(struct rtrs_iu *ius, struct ib_device *ibdev, u32 queue_size) { struct rtrs_iu *iu; int i; @@ -61,7 +60,7 @@ for (i = 0; i < queue_size; i++) { iu = &ius[i]; - ib_dma_unmap_single(ibdev, iu->dma_addr, iu->size, dir); + ib_dma_unmap_single(ibdev, iu->dma_addr, iu->size, iu->direction); kfree(iu->buf); } kfree(ius); @@ -105,6 +104,22 @@ } EXPORT_SYMBOL_GPL(rtrs_post_recv_empty); +static int rtrs_post_send(struct ib_qp *qp, struct ib_send_wr *head, + struct ib_send_wr *wr) +{ + if (head) { + struct ib_send_wr *tail = head; + + while (tail->next) + tail = tail->next; + tail->next = wr; + } else { + head = wr; + } + + return ib_post_send(qp, head, NULL); +} + int rtrs_iu_post_send(struct rtrs_con *con, struct rtrs_iu *iu, size_t size, struct ib_send_wr *head) { @@ -127,17 +142,7 @@ .send_flags = IB_SEND_SIGNALED, }; - if (head) { - struct ib_send_wr *tail = head; - - while (tail->next) - tail = tail->next; - tail->next = ≀ - } else { - head = ≀ - } - - return ib_post_send(con->qp, head, NULL); + return rtrs_post_send(con->qp, head, &wr); } EXPORT_SYMBOL_GPL(rtrs_iu_post_send); @@ -169,17 +174,7 @@ if (WARN_ON(sge[i].length == 0)) return -EINVAL; - if (head) { - struct ib_send_wr *tail = head; - - while (tail->next) - tail = tail->next; - tail->next = &wr.wr; - } else { - head = &wr.wr; - } - - return ib_post_send(con->qp, head, NULL); + return rtrs_post_send(con->qp, head, &wr.wr); } EXPORT_SYMBOL_GPL(rtrs_iu_post_rdma_write_imm); @@ -187,26 +182,16 @@ u32 imm_data, enum ib_send_flags flags, struct ib_send_wr *head) { - struct ib_send_wr wr; + struct ib_rdma_wr wr; - wr = (struct ib_send_wr) { - .wr_cqe = cqe, - .send_flags = flags, - .opcode = IB_WR_RDMA_WRITE_WITH_IMM, - .ex.imm_data = cpu_to_be32(imm_data), + wr = (struct ib_rdma_wr) { + .wr.wr_cqe = cqe, + .wr.send_flags = flags, + .wr.opcode = IB_WR_RDMA_WRITE_WITH_IMM, + .wr.ex.imm_data = cpu_to_be32(imm_data), }; - if (head) { - struct ib_send_wr *tail = head; - - while (tail->next) - tail = tail->next; - tail->next = ≀ - } else { - head = ≀ - } - - return ib_post_send(con->qp, head, NULL); + return rtrs_post_send(con->qp, head, &wr.wr); } EXPORT_SYMBOL_GPL(rtrs_post_rdma_write_imm_empty); @@ -246,14 +231,14 @@ } static int create_qp(struct rtrs_con *con, struct ib_pd *pd, - u16 wr_queue_size, u32 max_sge) + u32 max_send_wr, u32 max_recv_wr, u32 max_sge) { struct ib_qp_init_attr init_attr = {NULL}; struct rdma_cm_id *cm_id = con->cm_id; int ret; - init_attr.cap.max_send_wr = wr_queue_size; - init_attr.cap.max_recv_wr = wr_queue_size; + init_attr.cap.max_send_wr = max_send_wr; + init_attr.cap.max_recv_wr = max_recv_wr; init_attr.cap.max_recv_sge = 1; init_attr.event_handler = qp_event_handler; init_attr.qp_context = con; @@ -275,8 +260,9 @@ } int rtrs_cq_qp_create(struct rtrs_sess *sess, struct rtrs_con *con, - u32 max_send_sge, int cq_vector, u16 cq_size, - u16 wr_queue_size, enum ib_poll_context poll_ctx) + u32 max_send_sge, int cq_vector, int cq_size, + u32 max_send_wr, u32 max_recv_wr, + enum ib_poll_context poll_ctx) { int err; @@ -284,7 +270,8 @@ if (err) return err; - err = create_qp(con, sess->dev->ib_pd, wr_queue_size, max_send_sge); + err = create_qp(con, sess->dev->ib_pd, max_send_wr, max_recv_wr, + max_send_sge); if (err) { ib_free_cq(con->cq); con->cq = NULL; @@ -323,7 +310,7 @@ imm = rtrs_to_imm(RTRS_HB_ACK_IMM, 0); err = rtrs_post_rdma_write_imm_empty(usr_con, sess->hb_cqe, imm, - IB_SEND_SIGNALED, NULL); + 0, NULL); if (err) { sess->hb_err_handler(usr_con); return; @@ -352,7 +339,7 @@ } imm = rtrs_to_imm(RTRS_HB_MSG_IMM, 0); err = rtrs_post_rdma_write_imm_empty(usr_con, sess->hb_cqe, imm, - IB_SEND_SIGNALED, NULL); + 0, NULL); if (err) { sess->hb_err_handler(usr_con); return; --- linux-5.8.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-5.8.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -3624,7 +3624,7 @@ struct srp_rdma_ch *ch; struct srp_device *srp_dev = host->srp_dev; struct ib_device *ibdev = srp_dev->dev; - int ret, node_idx, node, cpu, i; + int ret, i, ch_idx; unsigned int max_sectors_per_mr, mr_per_cmd = 0; bool multich = false; uint32_t max_iu_len; @@ -3749,81 +3749,61 @@ goto out; ret = -ENOMEM; - if (target->ch_count == 0) + if (target->ch_count == 0) { target->ch_count = - max_t(unsigned int, num_online_nodes(), - min(ch_count ?: - min(4 * num_online_nodes(), - ibdev->num_comp_vectors), - num_online_cpus())); + min(ch_count ?: + max(4 * num_online_nodes(), + ibdev->num_comp_vectors), + num_online_cpus()); + } + target->ch = kcalloc(target->ch_count, sizeof(*target->ch), GFP_KERNEL); if (!target->ch) goto out; - node_idx = 0; - for_each_online_node(node) { - const int ch_start = (node_idx * target->ch_count / - num_online_nodes()); - const int ch_end = ((node_idx + 1) * target->ch_count / - num_online_nodes()); - const int cv_start = node_idx * ibdev->num_comp_vectors / - num_online_nodes(); - const int cv_end = (node_idx + 1) * ibdev->num_comp_vectors / - num_online_nodes(); - int cpu_idx = 0; - - for_each_online_cpu(cpu) { - if (cpu_to_node(cpu) != node) - continue; - if (ch_start + cpu_idx >= ch_end) - continue; - ch = &target->ch[ch_start + cpu_idx]; - ch->target = target; - ch->comp_vector = cv_start == cv_end ? cv_start : - cv_start + cpu_idx % (cv_end - cv_start); - spin_lock_init(&ch->lock); - INIT_LIST_HEAD(&ch->free_tx); - ret = srp_new_cm_id(ch); - if (ret) - goto err_disconnect; - - ret = srp_create_ch_ib(ch); - if (ret) - goto err_disconnect; - - ret = srp_alloc_req_data(ch); - if (ret) - goto err_disconnect; - - ret = srp_connect_ch(ch, max_iu_len, multich); - if (ret) { - char dst[64]; - - if (target->using_rdma_cm) - snprintf(dst, sizeof(dst), "%pIS", - &target->rdma_cm.dst); - else - snprintf(dst, sizeof(dst), "%pI6", - target->ib_cm.orig_dgid.raw); - shost_printk(KERN_ERR, target->scsi_host, - PFX "Connection %d/%d to %s failed\n", - ch_start + cpu_idx, - target->ch_count, dst); - if (node_idx == 0 && cpu_idx == 0) { - goto free_ch; - } else { - srp_free_ch_ib(target, ch); - srp_free_req_data(target, ch); - target->ch_count = ch - target->ch; - goto connected; - } + for (ch_idx = 0; ch_idx < target->ch_count; ++ch_idx) { + ch = &target->ch[ch_idx]; + ch->target = target; + ch->comp_vector = ch_idx % ibdev->num_comp_vectors; + spin_lock_init(&ch->lock); + INIT_LIST_HEAD(&ch->free_tx); + ret = srp_new_cm_id(ch); + if (ret) + goto err_disconnect; + + ret = srp_create_ch_ib(ch); + if (ret) + goto err_disconnect; + + ret = srp_alloc_req_data(ch); + if (ret) + goto err_disconnect; + + ret = srp_connect_ch(ch, max_iu_len, multich); + if (ret) { + char dst[64]; + + if (target->using_rdma_cm) + snprintf(dst, sizeof(dst), "%pIS", + &target->rdma_cm.dst); + else + snprintf(dst, sizeof(dst), "%pI6", + target->ib_cm.orig_dgid.raw); + shost_printk(KERN_ERR, target->scsi_host, + PFX "Connection %d/%d to %s failed\n", + ch_idx, + target->ch_count, dst); + if (ch_idx == 0) { + goto free_ch; + } else { + srp_free_ch_ib(target, ch); + srp_free_req_data(target, ch); + target->ch_count = ch - target->ch; + goto connected; } - - multich = true; - cpu_idx++; } - node_idx++; + multich = true; } connected: --- linux-5.8.0.orig/drivers/infiniband/ulp/srpt/ib_srpt.c +++ linux-5.8.0/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -622,10 +622,11 @@ /** * srpt_unregister_mad_agent - unregister MAD callback functions * @sdev: SRPT HCA pointer. + * #port_cnt: number of ports with registered MAD * * Note: It is safe to call this function more than once for the same device. */ -static void srpt_unregister_mad_agent(struct srpt_device *sdev) +static void srpt_unregister_mad_agent(struct srpt_device *sdev, int port_cnt) { struct ib_port_modify port_modify = { .clr_port_cap_mask = IB_PORT_DEVICE_MGMT_SUP, @@ -633,7 +634,7 @@ struct srpt_port *sport; int i; - for (i = 1; i <= sdev->device->phys_port_cnt; i++) { + for (i = 1; i <= port_cnt; i++) { sport = &sdev->port[i - 1]; WARN_ON(sport->port != i); if (sport->mad_agent) { @@ -3187,7 +3188,8 @@ if (ret) { pr_err("MAD registration failed for %s-%d.\n", dev_name(&sdev->device->dev), i); - goto err_event; + i--; + goto err_port; } } @@ -3199,7 +3201,8 @@ pr_debug("added %s.\n", dev_name(&device->dev)); return 0; -err_event: +err_port: + srpt_unregister_mad_agent(sdev, i); ib_unregister_event_handler(&sdev->event_handler); err_cm: if (sdev->cm_id) @@ -3223,7 +3226,7 @@ struct srpt_device *sdev = client_data; int i; - srpt_unregister_mad_agent(sdev); + srpt_unregister_mad_agent(sdev, sdev->device->phys_port_cnt); ib_unregister_event_handler(&sdev->event_handler); --- linux-5.8.0.orig/drivers/input/joydev.c +++ linux-5.8.0/drivers/input/joydev.c @@ -456,7 +456,7 @@ if (IS_ERR(abspam)) return PTR_ERR(abspam); - for (i = 0; i < joydev->nabs; i++) { + for (i = 0; i < len && i < joydev->nabs; i++) { if (abspam[i] > ABS_MAX) { retval = -EINVAL; goto out; @@ -480,6 +480,9 @@ int i; int retval = 0; + if (len % sizeof(*keypam)) + return -EINVAL; + len = min(len, sizeof(joydev->keypam)); /* Validate the map. */ @@ -487,7 +490,7 @@ if (IS_ERR(keypam)) return PTR_ERR(keypam); - for (i = 0; i < joydev->nkey; i++) { + for (i = 0; i < (len / 2) && i < joydev->nkey; i++) { if (keypam[i] > KEY_MAX || keypam[i] < BTN_MISC) { retval = -EINVAL; goto out; --- linux-5.8.0.orig/drivers/input/joystick/xpad.c +++ linux-5.8.0/drivers/input/joystick/xpad.c @@ -215,9 +215,17 @@ { 0x0e6f, 0x0213, "Afterglow Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, { 0x0e6f, 0x021f, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, { 0x0e6f, 0x0246, "Rock Candy Gamepad for Xbox One 2015", 0, XTYPE_XBOXONE }, - { 0x0e6f, 0x02ab, "PDP Controller for Xbox One", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02a0, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02a1, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02a2, "PDP Wired Controller for Xbox One - Crimson Red", 0, XTYPE_XBOXONE }, { 0x0e6f, 0x02a4, "PDP Wired Controller for Xbox One - Stealth Series", 0, XTYPE_XBOXONE }, { 0x0e6f, 0x02a6, "PDP Wired Controller for Xbox One - Camo Series", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02a7, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02a8, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02ab, "PDP Controller for Xbox One", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02ad, "PDP Wired Controller for Xbox One - Stealth Series", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02b3, "Afterglow Prismatic Wired Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x02b8, "Afterglow Prismatic Wired Controller", 0, XTYPE_XBOXONE }, { 0x0e6f, 0x0301, "Logic3 Controller", 0, XTYPE_XBOX360 }, { 0x0e6f, 0x0346, "Rock Candy Gamepad for Xbox One 2016", 0, XTYPE_XBOXONE }, { 0x0e6f, 0x0401, "Logic3 Controller", 0, XTYPE_XBOX360 }, @@ -241,6 +249,7 @@ { 0x1038, 0x1430, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, { 0x1038, 0x1431, "SteelSeries Stratus Duo", 0, XTYPE_XBOX360 }, { 0x11c9, 0x55f0, "Nacon GC-100XF", 0, XTYPE_XBOX360 }, + { 0x1209, 0x2882, "Ardwiino Controller", 0, XTYPE_XBOX360 }, { 0x12ab, 0x0004, "Honey Bee Xbox360 dancepad", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 }, { 0x12ab, 0x0301, "PDP AFTERGLOW AX.1", 0, XTYPE_XBOX360 }, { 0x12ab, 0x0303, "Mortal Kombat Klassic FightStick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, @@ -295,6 +304,10 @@ { 0x1bad, 0xfa01, "MadCatz GamePad", 0, XTYPE_XBOX360 }, { 0x1bad, 0xfd00, "Razer Onza TE", 0, XTYPE_XBOX360 }, { 0x1bad, 0xfd01, "Razer Onza", 0, XTYPE_XBOX360 }, + { 0x20d6, 0x2001, "BDA Xbox Series X Wired Controller", 0, XTYPE_XBOXONE }, + { 0x20d6, 0x2009, "PowerA Enhanced Wired Controller for Xbox Series X|S", 0, XTYPE_XBOXONE }, + { 0x20d6, 0x281f, "PowerA Wired Controller For Xbox 360", 0, XTYPE_XBOX360 }, + { 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE }, { 0x24c6, 0x5000, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5300, "PowerA MINI PROEX Controller", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5303, "Xbox Airflo wired controller", 0, XTYPE_XBOX360 }, @@ -418,6 +431,7 @@ XPAD_XBOXONE_VENDOR(0x0f0d), /* Hori Controllers */ XPAD_XBOX360_VENDOR(0x1038), /* SteelSeries Controllers */ XPAD_XBOX360_VENDOR(0x11c9), /* Nacon GC100XF */ + XPAD_XBOX360_VENDOR(0x1209), /* Ardwiino Controllers */ XPAD_XBOX360_VENDOR(0x12ab), /* X-Box 360 dance pads */ XPAD_XBOX360_VENDOR(0x1430), /* RedOctane X-Box 360 controllers */ XPAD_XBOX360_VENDOR(0x146b), /* BigBen Interactive Controllers */ @@ -427,8 +441,12 @@ XPAD_XBOX360_VENDOR(0x162e), /* Joytech X-Box 360 controllers */ XPAD_XBOX360_VENDOR(0x1689), /* Razer Onza */ XPAD_XBOX360_VENDOR(0x1bad), /* Harminix Rock Band Guitar and Drums */ + XPAD_XBOX360_VENDOR(0x20d6), /* PowerA Controllers */ + XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA Controllers */ XPAD_XBOX360_VENDOR(0x24c6), /* PowerA Controllers */ XPAD_XBOXONE_VENDOR(0x24c6), /* PowerA Controllers */ + XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Duke X-Box One pad */ + XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */ { } }; --- linux-5.8.0.orig/drivers/input/keyboard/applespi.c +++ linux-5.8.0/drivers/input/keyboard/applespi.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -400,7 +401,7 @@ unsigned int cmd_msg_cntr; /* lock to protect the above parameters and flags below */ spinlock_t cmd_msg_lock; - bool cmd_msg_queued; + ktime_t cmd_msg_queued; enum applespi_evt_type cmd_evt_type; struct led_classdev backlight_info; @@ -716,7 +717,7 @@ wake_up_all(&applespi->drain_complete); if (is_write_msg) { - applespi->cmd_msg_queued = false; + applespi->cmd_msg_queued = 0; applespi_send_cmd_msg(applespi); } @@ -758,8 +759,16 @@ return 0; /* check whether send is in progress */ - if (applespi->cmd_msg_queued) - return 0; + if (applespi->cmd_msg_queued) { + if (ktime_ms_delta(ktime_get(), applespi->cmd_msg_queued) < 1000) + return 0; + + dev_warn(&applespi->spi->dev, "Command %d timed out\n", + applespi->cmd_evt_type); + + applespi->cmd_msg_queued = 0; + applespi->write_active = false; + } /* set up packet */ memset(packet, 0, APPLESPI_PACKET_SIZE); @@ -856,7 +865,7 @@ return sts; } - applespi->cmd_msg_queued = true; + applespi->cmd_msg_queued = ktime_get_coarse(); applespi->write_active = true; return 0; @@ -1908,7 +1917,7 @@ applespi->drain = false; applespi->have_cl_led_on = false; applespi->have_bl_level = 0; - applespi->cmd_msg_queued = false; + applespi->cmd_msg_queued = 0; applespi->read_active = false; applespi->write_active = false; --- linux-5.8.0.orig/drivers/input/keyboard/cros_ec_keyb.c +++ linux-5.8.0/drivers/input/keyboard/cros_ec_keyb.c @@ -183,6 +183,7 @@ "changed: [r%d c%d]: byte %02x\n", row, col, new_state); + input_event(idev, EV_MSC, MSC_SCAN, pos); input_report_key(idev, keycodes[pos], new_state); } --- linux-5.8.0.orig/drivers/input/keyboard/ep93xx_keypad.c +++ linux-5.8.0/drivers/input/keyboard/ep93xx_keypad.c @@ -250,8 +250,8 @@ } keypad->irq = platform_get_irq(pdev, 0); - if (!keypad->irq) { - err = -ENXIO; + if (keypad->irq < 0) { + err = keypad->irq; goto failed_free; } --- linux-5.8.0.orig/drivers/input/keyboard/omap4-keypad.c +++ linux-5.8.0/drivers/input/keyboard/omap4-keypad.c @@ -186,12 +186,8 @@ return 0; } -static void omap4_keypad_close(struct input_dev *input) +static void omap4_keypad_stop(struct omap4_keypad *keypad_data) { - struct omap4_keypad *keypad_data = input_get_drvdata(input); - - disable_irq(keypad_data->irq); - /* Disable interrupts and wake-up events */ kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE, OMAP4_VAL_IRQDISABLE); @@ -200,7 +196,15 @@ /* clear pending interrupts */ kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS, kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS)); +} + +static void omap4_keypad_close(struct input_dev *input) +{ + struct omap4_keypad *keypad_data; + keypad_data = input_get_drvdata(input); + disable_irq(keypad_data->irq); + omap4_keypad_stop(keypad_data); enable_irq(keypad_data->irq); pm_runtime_put_sync(input->dev.parent); @@ -223,13 +227,37 @@ return 0; } +static int omap4_keypad_check_revision(struct device *dev, + struct omap4_keypad *keypad_data) +{ + unsigned int rev; + + rev = __raw_readl(keypad_data->base + OMAP4_KBD_REVISION); + rev &= 0x03 << 30; + rev >>= 30; + switch (rev) { + case KBD_REVISION_OMAP4: + keypad_data->reg_offset = 0x00; + keypad_data->irqreg_offset = 0x00; + break; + case KBD_REVISION_OMAP5: + keypad_data->reg_offset = 0x10; + keypad_data->irqreg_offset = 0x0c; + break; + default: + dev_err(dev, "Keypad reports unsupported revision %d", rev); + return -EINVAL; + } + + return 0; +} + static int omap4_keypad_probe(struct platform_device *pdev) { struct omap4_keypad *keypad_data; struct input_dev *input_dev; struct resource *res; unsigned int max_keys; - int rev; int irq; int error; @@ -240,10 +268,8 @@ } irq = platform_get_irq(pdev, 0); - if (!irq) { - dev_err(&pdev->dev, "no keyboard irq assigned\n"); - return -EINVAL; - } + if (irq < 0) + return irq; keypad_data = kzalloc(sizeof(struct omap4_keypad), GFP_KERNEL); if (!keypad_data) { @@ -271,41 +297,33 @@ goto err_release_mem; } + pm_runtime_enable(&pdev->dev); /* * Enable clocks for the keypad module so that we can read * revision register. */ - pm_runtime_enable(&pdev->dev); error = pm_runtime_get_sync(&pdev->dev); if (error) { dev_err(&pdev->dev, "pm_runtime_get_sync() failed\n"); - goto err_unmap; - } - rev = __raw_readl(keypad_data->base + OMAP4_KBD_REVISION); - rev &= 0x03 << 30; - rev >>= 30; - switch (rev) { - case KBD_REVISION_OMAP4: - keypad_data->reg_offset = 0x00; - keypad_data->irqreg_offset = 0x00; - break; - case KBD_REVISION_OMAP5: - keypad_data->reg_offset = 0x10; - keypad_data->irqreg_offset = 0x0c; - break; - default: - dev_err(&pdev->dev, - "Keypad reports unsupported revision %d", rev); - error = -EINVAL; - goto err_pm_put_sync; + pm_runtime_put_noidle(&pdev->dev); + } else { + error = omap4_keypad_check_revision(&pdev->dev, + keypad_data); + if (!error) { + /* Ensure device does not raise interrupts */ + omap4_keypad_stop(keypad_data); + } + pm_runtime_put_sync(&pdev->dev); } + if (error) + goto err_pm_disable; /* input device allocation */ keypad_data->input = input_dev = input_allocate_device(); if (!input_dev) { error = -ENOMEM; - goto err_pm_put_sync; + goto err_pm_disable; } input_dev->name = pdev->name; @@ -351,28 +369,25 @@ goto err_free_keymap; } - device_init_wakeup(&pdev->dev, true); - pm_runtime_put_sync(&pdev->dev); - error = input_register_device(keypad_data->input); if (error < 0) { dev_err(&pdev->dev, "failed to register input device\n"); - goto err_pm_disable; + goto err_free_irq; } + device_init_wakeup(&pdev->dev, true); platform_set_drvdata(pdev, keypad_data); + return 0; -err_pm_disable: - pm_runtime_disable(&pdev->dev); +err_free_irq: free_irq(keypad_data->irq, keypad_data); err_free_keymap: kfree(keypad_data->keymap); err_free_input: input_free_device(input_dev); -err_pm_put_sync: - pm_runtime_put_sync(&pdev->dev); -err_unmap: +err_pm_disable: + pm_runtime_disable(&pdev->dev); iounmap(keypad_data->base); err_release_mem: release_mem_region(res->start, resource_size(res)); --- linux-5.8.0.orig/drivers/input/keyboard/sunkbd.c +++ linux-5.8.0/drivers/input/keyboard/sunkbd.c @@ -99,7 +99,8 @@ switch (data) { case SUNKBD_RET_RESET: - schedule_work(&sunkbd->tq); + if (sunkbd->enabled) + schedule_work(&sunkbd->tq); sunkbd->reset = -1; break; @@ -200,16 +201,12 @@ } /* - * sunkbd_reinit() sets leds and beeps to a state the computer remembers they - * were in. + * sunkbd_set_leds_beeps() sets leds and beeps to a state the computer remembers + * they were in. */ -static void sunkbd_reinit(struct work_struct *work) +static void sunkbd_set_leds_beeps(struct sunkbd *sunkbd) { - struct sunkbd *sunkbd = container_of(work, struct sunkbd, tq); - - wait_event_interruptible_timeout(sunkbd->wait, sunkbd->reset >= 0, HZ); - serio_write(sunkbd->serio, SUNKBD_CMD_SETLED); serio_write(sunkbd->serio, (!!test_bit(LED_CAPSL, sunkbd->dev->led) << 3) | @@ -222,11 +219,39 @@ SUNKBD_CMD_BELLOFF - !!test_bit(SND_BELL, sunkbd->dev->snd)); } + +/* + * sunkbd_reinit() wait for the keyboard reset to complete and restores state + * of leds and beeps. + */ + +static void sunkbd_reinit(struct work_struct *work) +{ + struct sunkbd *sunkbd = container_of(work, struct sunkbd, tq); + + /* + * It is OK that we check sunkbd->enabled without pausing serio, + * as we only want to catch true->false transition that will + * happen once and we will be woken up for it. + */ + wait_event_interruptible_timeout(sunkbd->wait, + sunkbd->reset >= 0 || !sunkbd->enabled, + HZ); + + if (sunkbd->reset >= 0 && sunkbd->enabled) + sunkbd_set_leds_beeps(sunkbd); +} + static void sunkbd_enable(struct sunkbd *sunkbd, bool enable) { serio_pause_rx(sunkbd->serio); sunkbd->enabled = enable; serio_continue_rx(sunkbd->serio); + + if (!enable) { + wake_up_interruptible(&sunkbd->wait); + cancel_work_sync(&sunkbd->tq); + } } /* --- linux-5.8.0.orig/drivers/input/keyboard/twl4030_keypad.c +++ linux-5.8.0/drivers/input/keyboard/twl4030_keypad.c @@ -50,7 +50,7 @@ bool autorepeat; unsigned int n_rows; unsigned int n_cols; - unsigned int irq; + int irq; struct device *dbg_dev; struct input_dev *input; @@ -376,10 +376,8 @@ } kp->irq = platform_get_irq(pdev, 0); - if (!kp->irq) { - dev_err(&pdev->dev, "no keyboard irq assigned\n"); - return -EINVAL; - } + if (kp->irq < 0) + return kp->irq; error = matrix_keypad_build_keymap(keymap_data, NULL, TWL4030_MAX_ROWS, --- linux-5.8.0.orig/drivers/input/misc/adxl34x.c +++ linux-5.8.0/drivers/input/misc/adxl34x.c @@ -696,7 +696,7 @@ struct input_dev *input_dev; const struct adxl34x_platform_data *pdata; int err, range, i; - unsigned char revid; + int revid; if (!irq) { dev_err(dev, "no IRQ?\n"); --- linux-5.8.0.orig/drivers/input/misc/ati_remote2.c +++ linux-5.8.0/drivers/input/misc/ati_remote2.c @@ -68,7 +68,7 @@ { pr_debug("%s()\n", __func__); - return sprintf(buffer, "0x%04x", *(unsigned int *)kp->arg); + return sprintf(buffer, "0x%04x\n", *(unsigned int *)kp->arg); } static int ati_remote2_set_mode_mask(const char *val, @@ -84,7 +84,7 @@ { pr_debug("%s()\n", __func__); - return sprintf(buffer, "0x%02x", *(unsigned int *)kp->arg); + return sprintf(buffer, "0x%02x\n", *(unsigned int *)kp->arg); } static unsigned int channel_mask = ATI_REMOTE2_MAX_CHANNEL_MASK; --- linux-5.8.0.orig/drivers/input/misc/cm109.c +++ linux-5.8.0/drivers/input/misc/cm109.c @@ -568,12 +568,15 @@ dev->ctl_data->byte[HID_OR2] = dev->keybit; dev->ctl_data->byte[HID_OR3] = 0x00; + dev->ctl_urb_pending = 1; error = usb_submit_urb(dev->urb_ctl, GFP_KERNEL); - if (error) + if (error) { + dev->ctl_urb_pending = 0; dev_err(&dev->intf->dev, "%s: usb_submit_urb (urb_ctl) failed %d\n", __func__, error); - else + } else { dev->open = 1; + } mutex_unlock(&dev->pm_mutex); --- linux-5.8.0.orig/drivers/input/mouse/cyapa_gen6.c +++ linux-5.8.0/drivers/input/mouse/cyapa_gen6.c @@ -573,7 +573,7 @@ memset(&cmd, 0, sizeof(cmd)); put_unaligned_le16(PIP_OUTPUT_REPORT_ADDR, &cmd.head.addr); - put_unaligned_le16(sizeof(cmd), &cmd.head.length - 2); + put_unaligned_le16(sizeof(cmd) - 2, &cmd.head.length); cmd.head.report_id = PIP_APP_CMD_REPORT_ID; cmd.head.cmd_code = PIP_RETRIEVE_DATA_STRUCTURE; put_unaligned_le16(read_offset, &cmd.read_offset); --- linux-5.8.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-5.8.0/drivers/input/mouse/cypress_ps2.c @@ -387,7 +387,9 @@ if (ret < 0) return ret; +#if ( CYPRESS_SIMULATED_MT != 1 ) __set_bit(INPUT_PROP_SEMI_MT, input->propbit); +#endif input_abs_set_res(input, ABS_X, cytp->tp_res_x); input_abs_set_res(input, ABS_Y, cytp->tp_res_y); @@ -473,6 +475,22 @@ ((packet[5] & 0x0f) << 8) | packet[7]; if (cytp->mode & CYTP_BIT_ABS_PRESSURE) report_data->contacts[1].z = report_data->contacts[0].z; +#if ( CYPRESS_SIMULATED_MT == 1 ) + /* simulate contact positions for >2 fingers */ + if ( report_data->contact_cnt >= 3 ) { + int i; + for ( i=1; icontact_cnt; i++ ) { + report_data->contacts[i].x = + report_data->contacts[0].x + + 100*(i)*((i%2)?-1:1); + report_data->contacts[i].y = + report_data->contacts[0].y; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[i].z = + report_data->contacts[0].z; + } + } +#endif } report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; --- linux-5.8.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-5.8.0/drivers/input/mouse/cypress_ps2.h @@ -131,7 +131,18 @@ #define RESP_REMOTE_BIT 0x40 #define RESP_SMBUS_BIT 0x80 -#define CYTP_MAX_MT_SLOTS 2 +/* + * CYPRESS_SIMULATED_MT + * set to 1 for simulated multitouch (up to 5 contact points) + * set to 0 for SEMI_MT (only 2 corner points, and count of fingers) + */ +#define CYPRESS_SIMULATED_MT 1 + +#if ( CYPRESS_SIMULATED_MT == 1 ) +# define CYTP_MAX_MT_SLOTS 5 +#else +# define CYTP_MAX_MT_SLOTS 2 +#endif struct cytp_contact { int x; --- linux-5.8.0.orig/drivers/input/mouse/elan_i2c.h +++ linux-5.8.0/drivers/input/mouse/elan_i2c.h @@ -26,6 +26,24 @@ #define ETP_CALIBRATE_MAX_LEN 3 +#define ETP_FEATURE_REPORT_MK BIT(0) + +#define ETP_REPORT_ID 0x5D +#define ETP_TP_REPORT_ID 0x5E +#define ETP_TP_REPORT_ID2 0x5F +#define ETP_REPORT_ID2 0x60 /* High precision report */ + +#define ETP_REPORT_ID_OFFSET 2 +#define ETP_TOUCH_INFO_OFFSET 3 +#define ETP_FINGER_DATA_OFFSET 4 +#define ETP_HOVER_INFO_OFFSET 30 +#define ETP_MK_DATA_OFFSET 33 /* For high precision reports */ + +#define ETP_MAX_REPORT_LEN 39 + +#define ETP_MAX_FINGERS 5 +#define ETP_FINGER_DATA_LEN 5 + /* IAP Firmware handling */ #define ETP_PRODUCT_ID_FORMAT_STRING "%d.0" #define ETP_FW_NAME "elan_i2c_" ETP_PRODUCT_ID_FORMAT_STRING ".bin" @@ -78,7 +96,11 @@ int (*finish_fw_update)(struct i2c_client *client, struct completion *reset_done); - int (*get_report)(struct i2c_client *client, u8 *report); + int (*get_report_features)(struct i2c_client *client, u8 pattern, + unsigned int *features, + unsigned int *report_len); + int (*get_report)(struct i2c_client *client, u8 *report, + unsigned int report_len); int (*get_pressure_adjustment)(struct i2c_client *client, int *adjustment); int (*get_pattern)(struct i2c_client *client, u8 *pattern); --- linux-5.8.0.orig/drivers/input/mouse/elan_i2c_core.c +++ linux-5.8.0/drivers/input/mouse/elan_i2c_core.c @@ -47,16 +47,6 @@ #define ETP_FINGER_WIDTH 15 #define ETP_RETRY_COUNT 3 -#define ETP_MAX_FINGERS 5 -#define ETP_FINGER_DATA_LEN 5 -#define ETP_REPORT_ID 0x5D -#define ETP_TP_REPORT_ID 0x5E -#define ETP_REPORT_ID_OFFSET 2 -#define ETP_TOUCH_INFO_OFFSET 3 -#define ETP_FINGER_DATA_OFFSET 4 -#define ETP_HOVER_INFO_OFFSET 30 -#define ETP_MAX_REPORT_LEN 34 - /* The main device structure */ struct elan_tp_data { struct i2c_client *client; @@ -85,6 +75,8 @@ u8 sm_version; u8 iap_version; u16 fw_checksum; + unsigned int report_features; + unsigned int report_len; int pressure_adjustment; u8 mode; u16 ic_type; @@ -341,6 +333,12 @@ else ic_type = data->iap_version; + error = data->ops->get_report_features(data->client, data->pattern, + &data->report_features, + &data->report_len); + if (error) + return error; + error = elan_get_fwinfo(ic_type, &data->fw_validpage_count, &data->fw_signature_address); if (error) @@ -351,16 +349,21 @@ return 0; } -static unsigned int elan_convert_resolution(u8 val) +static unsigned int elan_convert_resolution(u8 val, u8 pattern) { /* - * (value from firmware) * 10 + 790 = dpi - * + * pattern <= 0x01: + * (value from firmware) * 10 + 790 = dpi + * else + * ((value from firmware) + 3) * 100 = dpi + */ + int res = pattern <= 0x01 ? + (int)(char)val * 10 + 790 : ((int)(char)val + 3) * 100; + /* * We also have to convert dpi to dots/mm (*10/254 to avoid floating * point). */ - - return ((int)(char)val * 10 + 790) * 10 / 254; + return res * 10 / 254; } static int elan_query_device_parameters(struct elan_tp_data *data) @@ -409,8 +412,8 @@ if (error) return error; - data->x_res = elan_convert_resolution(hw_x_res); - data->y_res = elan_convert_resolution(hw_y_res); + data->x_res = elan_convert_resolution(hw_x_res, data->pattern); + data->y_res = elan_convert_resolution(hw_y_res, data->pattern); } else { data->x_res = (data->max_x + 1) / x_mm; data->y_res = (data->max_y + 1) / y_mm; @@ -886,24 +889,22 @@ * Elan isr functions ****************************************************************** */ -static void elan_report_contact(struct elan_tp_data *data, - int contact_num, bool contact_valid, - u8 *finger_data) +static void elan_report_contact(struct elan_tp_data *data, int contact_num, + bool contact_valid, bool high_precision, + u8 *packet, u8 *finger_data) { struct input_dev *input = data->input; unsigned int pos_x, pos_y; - unsigned int pressure, mk_x, mk_y; - unsigned int area_x, area_y, major, minor; - unsigned int scaled_pressure; + unsigned int pressure, scaled_pressure; if (contact_valid) { - pos_x = ((finger_data[0] & 0xf0) << 4) | - finger_data[1]; - pos_y = ((finger_data[0] & 0x0f) << 8) | - finger_data[2]; - mk_x = (finger_data[3] & 0x0f); - mk_y = (finger_data[3] >> 4); - pressure = finger_data[4]; + if (high_precision) { + pos_x = get_unaligned_be16(&finger_data[0]); + pos_y = get_unaligned_be16(&finger_data[2]); + } else { + pos_x = ((finger_data[0] & 0xf0) << 4) | finger_data[1]; + pos_y = ((finger_data[0] & 0x0f) << 8) | finger_data[2]; + } if (pos_x > data->max_x || pos_y > data->max_y) { dev_dbg(input->dev.parent, @@ -913,18 +914,8 @@ return; } - /* - * To avoid treating large finger as palm, let's reduce the - * width x and y per trace. - */ - area_x = mk_x * (data->width_x - ETP_FWIDTH_REDUCE); - area_y = mk_y * (data->width_y - ETP_FWIDTH_REDUCE); - - major = max(area_x, area_y); - minor = min(area_x, area_y); - + pressure = finger_data[4]; scaled_pressure = pressure + data->pressure_adjustment; - if (scaled_pressure > ETP_MAX_PRESSURE) scaled_pressure = ETP_MAX_PRESSURE; @@ -933,16 +924,37 @@ input_report_abs(input, ABS_MT_POSITION_X, pos_x); input_report_abs(input, ABS_MT_POSITION_Y, data->max_y - pos_y); input_report_abs(input, ABS_MT_PRESSURE, scaled_pressure); - input_report_abs(input, ABS_TOOL_WIDTH, mk_x); - input_report_abs(input, ABS_MT_TOUCH_MAJOR, major); - input_report_abs(input, ABS_MT_TOUCH_MINOR, minor); + + if (data->report_features & ETP_FEATURE_REPORT_MK) { + unsigned int mk_x, mk_y, area_x, area_y; + u8 mk_data = high_precision ? + packet[ETP_MK_DATA_OFFSET + contact_num] : + finger_data[3]; + + mk_x = mk_data & 0x0f; + mk_y = mk_data >> 4; + + /* + * To avoid treating large finger as palm, let's reduce + * the width x and y per trace. + */ + area_x = mk_x * (data->width_x - ETP_FWIDTH_REDUCE); + area_y = mk_y * (data->width_y - ETP_FWIDTH_REDUCE); + + input_report_abs(input, ABS_TOOL_WIDTH, mk_x); + input_report_abs(input, ABS_MT_TOUCH_MAJOR, + max(area_x, area_y)); + input_report_abs(input, ABS_MT_TOUCH_MINOR, + min(area_x, area_y)); + } } else { input_mt_slot(input, contact_num); input_mt_report_slot_inactive(input); } } -static void elan_report_absolute(struct elan_tp_data *data, u8 *packet) +static void elan_report_absolute(struct elan_tp_data *data, u8 *packet, + bool high_precision) { struct input_dev *input = data->input; u8 *finger_data = &packet[ETP_FINGER_DATA_OFFSET]; @@ -953,11 +965,12 @@ pm_wakeup_event(&data->client->dev, 0); - hover_event = hover_info & 0x40; - for (i = 0; i < ETP_MAX_FINGERS; i++) { - contact_valid = tp_info & (1U << (3 + i)); - elan_report_contact(data, i, contact_valid, finger_data); + hover_event = hover_info & BIT(6); + for (i = 0; i < ETP_MAX_FINGERS; i++) { + contact_valid = tp_info & BIT(3 + i); + elan_report_contact(data, i, contact_valid, high_precision, + packet, finger_data); if (contact_valid) finger_data += ETP_FINGER_DATA_LEN; } @@ -1015,15 +1028,19 @@ goto out; } - error = data->ops->get_report(data->client, report); + error = data->ops->get_report(data->client, report, data->report_len); if (error) goto out; switch (report[ETP_REPORT_ID_OFFSET]) { case ETP_REPORT_ID: - elan_report_absolute(data, report); + elan_report_absolute(data, report, false); + break; + case ETP_REPORT_ID2: + elan_report_absolute(data, report, true); break; case ETP_TP_REPORT_ID: + case ETP_TP_REPORT_ID2: elan_report_trackpoint(data, report); break; default: @@ -1112,7 +1129,9 @@ input_abs_set_res(input, ABS_X, data->x_res); input_abs_set_res(input, ABS_Y, data->y_res); input_set_abs_params(input, ABS_PRESSURE, 0, ETP_MAX_PRESSURE, 0, 0); - input_set_abs_params(input, ABS_TOOL_WIDTH, 0, ETP_FINGER_WIDTH, 0, 0); + if (data->report_features & ETP_FEATURE_REPORT_MK) + input_set_abs_params(input, ABS_TOOL_WIDTH, + 0, ETP_FINGER_WIDTH, 0, 0); input_set_abs_params(input, ABS_DISTANCE, 0, 1, 0, 0); /* And MT parameters */ @@ -1122,10 +1141,12 @@ input_abs_set_res(input, ABS_MT_POSITION_Y, data->y_res); input_set_abs_params(input, ABS_MT_PRESSURE, 0, ETP_MAX_PRESSURE, 0, 0); - input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, - ETP_FINGER_WIDTH * max_width, 0, 0); - input_set_abs_params(input, ABS_MT_TOUCH_MINOR, 0, - ETP_FINGER_WIDTH * min_width, 0, 0); + if (data->report_features & ETP_FEATURE_REPORT_MK) { + input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, + 0, ETP_FINGER_WIDTH * max_width, 0, 0); + input_set_abs_params(input, ABS_MT_TOUCH_MINOR, + 0, ETP_FINGER_WIDTH * min_width, 0, 0); + } data->input = input; --- linux-5.8.0.orig/drivers/input/mouse/elan_i2c_i2c.c +++ linux-5.8.0/drivers/input/mouse/elan_i2c_i2c.c @@ -55,6 +55,8 @@ #define ETP_I2C_MIN_BASELINE_CMD 0x0318 #define ETP_I2C_REPORT_LEN 34 +#define ETP_I2C_REPORT_LEN_ID2 39 +#define ETP_I2C_REPORT_MAX_LEN 39 #define ETP_I2C_DESC_LENGTH 30 #define ETP_I2C_REPORT_DESC_LENGTH 158 #define ETP_I2C_INF_LENGTH 2 @@ -386,7 +388,7 @@ return error; } - *max_x = le16_to_cpup((__le16 *)val) & 0x0fff; + *max_x = le16_to_cpup((__le16 *)val); error = elan_i2c_read_cmd(client, ETP_I2C_MAX_Y_AXIS_CMD, val); if (error) { @@ -394,7 +396,7 @@ return error; } - *max_y = le16_to_cpup((__le16 *)val) & 0x0fff; + *max_y = le16_to_cpup((__le16 *)val); return 0; } @@ -617,12 +619,12 @@ struct completion *completion) { struct device *dev = &client->dev; - int error; + int error = 0; int len; - u8 buffer[ETP_I2C_REPORT_LEN]; + u8 buffer[ETP_I2C_REPORT_MAX_LEN]; - len = i2c_master_recv(client, buffer, ETP_I2C_REPORT_LEN); - if (len != ETP_I2C_REPORT_LEN) { + len = i2c_master_recv(client, buffer, ETP_I2C_REPORT_MAX_LEN); + if (len <= 0) { error = len < 0 ? len : -EIO; dev_warn(dev, "failed to read I2C data after FW WDT reset: %d (%d)\n", error, len); @@ -656,20 +658,31 @@ return 0; } -static int elan_i2c_get_report(struct i2c_client *client, u8 *report) +static int elan_i2c_get_report_features(struct i2c_client *client, u8 pattern, + unsigned int *features, + unsigned int *report_len) +{ + *features = ETP_FEATURE_REPORT_MK; + *report_len = pattern <= 0x01 ? + ETP_I2C_REPORT_LEN : ETP_I2C_REPORT_LEN_ID2; + return 0; +} + +static int elan_i2c_get_report(struct i2c_client *client, + u8 *report, unsigned int report_len) { int len; - len = i2c_master_recv(client, report, ETP_I2C_REPORT_LEN); + len = i2c_master_recv(client, report, report_len); if (len < 0) { dev_err(&client->dev, "failed to read report data: %d\n", len); return len; } - if (len != ETP_I2C_REPORT_LEN) { + if (len != report_len) { dev_err(&client->dev, "wrong report length (%d vs %d expected)\n", - len, ETP_I2C_REPORT_LEN); + len, report_len); return -EIO; } @@ -706,5 +719,6 @@ .get_pattern = elan_i2c_get_pattern, + .get_report_features = elan_i2c_get_report_features, .get_report = elan_i2c_get_report, }; --- linux-5.8.0.orig/drivers/input/mouse/elan_i2c_smbus.c +++ linux-5.8.0/drivers/input/mouse/elan_i2c_smbus.c @@ -45,6 +45,7 @@ #define ETP_SMBUS_CALIBRATE_QUERY 0xC5 #define ETP_SMBUS_REPORT_LEN 32 +#define ETP_SMBUS_REPORT_LEN2 7 #define ETP_SMBUS_REPORT_OFFSET 2 #define ETP_SMBUS_HELLOPACKET_LEN 5 #define ETP_SMBUS_IAP_PASSWORD 0x1234 @@ -469,7 +470,21 @@ return 0; } -static int elan_smbus_get_report(struct i2c_client *client, u8 *report) +static int elan_smbus_get_report_features(struct i2c_client *client, u8 pattern, + unsigned int *features, + unsigned int *report_len) +{ + /* + * SMBus controllers with pattern 2 lack area info, as newer + * high-precision packets use that space for coordinates. + */ + *features = pattern <= 0x01 ? ETP_FEATURE_REPORT_MK : 0; + *report_len = ETP_SMBUS_REPORT_LEN; + return 0; +} + +static int elan_smbus_get_report(struct i2c_client *client, + u8 *report, unsigned int report_len) { int len; @@ -483,10 +498,13 @@ return len; } - if (len != ETP_SMBUS_REPORT_LEN) { + if (report[ETP_REPORT_ID_OFFSET] == ETP_TP_REPORT_ID2) + report_len = ETP_SMBUS_REPORT_LEN2; + + if (len != report_len) { dev_err(&client->dev, "wrong report length (%d vs %d expected)\n", - len, ETP_SMBUS_REPORT_LEN); + len, report_len); return -EIO; } @@ -534,6 +552,7 @@ .write_fw_block = elan_smbus_write_fw_block, .finish_fw_update = elan_smbus_finish_fw_update, + .get_report_features = elan_smbus_get_report_features, .get_report = elan_smbus_get_report, .get_pattern = elan_smbus_get_pattern, }; --- linux-5.8.0.orig/drivers/input/mouse/elantech.c +++ linux-5.8.0/drivers/input/mouse/elantech.c @@ -90,6 +90,47 @@ } /* + * Send an Elantech style special command to read 3 bytes from a register + */ +static int elantech_read_reg_params(struct psmouse *psmouse, u8 reg, u8 *param) +{ + if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || + elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, reg) || + elantech_ps2_command(psmouse, param, PSMOUSE_CMD_GETINFO)) { + psmouse_err(psmouse, + "failed to read register %#02x\n", reg); + return -EIO; + } + + return 0; +} + +/* + * Send an Elantech style special command to write a register with a parameter + */ +static int elantech_write_reg_params(struct psmouse *psmouse, u8 reg, u8 *param) +{ + if (elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, ETP_REGISTER_READWRITE) || + elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, reg) || + elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, param[0]) || + elantech_ps2_command(psmouse, NULL, ETP_PS2_CUSTOM_COMMAND) || + elantech_ps2_command(psmouse, NULL, param[1]) || + elantech_ps2_command(psmouse, NULL, PSMOUSE_CMD_SETSCALE11)) { + psmouse_err(psmouse, + "failed to write register %#02x with value %#02x%#02x\n", + reg, param[0], param[1]); + return -EIO; + } + + return 0; +} + +/* * Send an Elantech style special command to read a value from a register */ static int elantech_read_reg(struct psmouse *psmouse, unsigned char reg, @@ -1530,18 +1571,34 @@ }; /* + * Change Report id 0x5E to 0x5F. + */ +static int elantech_change_report_id(struct psmouse *psmouse) +{ + unsigned char param[2] = { 0x10, 0x03 }; + + if (elantech_write_reg_params(psmouse, 0x7, param) || + elantech_read_reg_params(psmouse, 0x7, param) || + param[0] != 0x10 || param[1] != 0x03) { + psmouse_err(psmouse, "Unable to change report ID to 0x5f.\n"); + return -EIO; + } + + return 0; +} +/* * determine hardware version and set some properties according to it. */ static int elantech_set_properties(struct elantech_device_info *info) { /* This represents the version of IC body. */ - int ver = (info->fw_version & 0x0f0000) >> 16; + info->ic_version = (info->fw_version & 0x0f0000) >> 16; /* Early version of Elan touchpads doesn't obey the rule. */ if (info->fw_version < 0x020030 || info->fw_version == 0x020600) info->hw_version = 1; else { - switch (ver) { + switch (info->ic_version) { case 2: case 4: info->hw_version = 2; @@ -1557,6 +1614,11 @@ } } + /* Get information pattern for hw_version 4 */ + info->pattern = 0x00; + if (info->ic_version == 0x0f && (info->fw_version & 0xff) <= 0x02) + info->pattern = info->fw_version & 0xff; + /* decide which send_cmd we're gonna use early */ info->send_cmd = info->hw_version >= 3 ? elantech_send_cmd : synaptics_send_cmd; @@ -1598,6 +1660,7 @@ { unsigned char param[3]; unsigned char traces; + unsigned char ic_body[3]; memset(info, 0, sizeof(*info)); @@ -1640,6 +1703,21 @@ info->samples[2]); } + if (info->pattern > 0x00 && info->ic_version == 0xf) { + if (info->send_cmd(psmouse, ETP_ICBODY_QUERY, ic_body)) { + psmouse_err(psmouse, "failed to query ic body\n"); + return -EINVAL; + } + info->ic_version = be16_to_cpup((__be16 *)ic_body); + psmouse_info(psmouse, + "Elan ic body: %#04x, current fw version: %#02x\n", + info->ic_version, ic_body[2]); + } + + info->product_id = be16_to_cpup((__be16 *)info->samples); + if (info->pattern == 0x00) + info->product_id &= 0xff; + if (info->samples[1] == 0x74 && info->hw_version == 0x03) { /* * This module has a bug which makes absolute mode @@ -1654,6 +1732,23 @@ /* The MSB indicates the presence of the trackpoint */ info->has_trackpoint = (info->capabilities[0] & 0x80) == 0x80; + if (info->has_trackpoint && info->ic_version == 0x0011 && + (info->product_id == 0x08 || info->product_id == 0x09 || + info->product_id == 0x0d || info->product_id == 0x0e)) { + /* + * This module has a bug which makes trackpoint in SMBus + * mode return invalid data unless trackpoint is switched + * from using 0x5e reports to 0x5f. If we are not able to + * make the switch, let's abort initialization so we'll be + * using standard PS/2 protocol. + */ + if (elantech_change_report_id(psmouse)) { + psmouse_info(psmouse, + "Trackpoint report is broken, forcing standard PS/2 protocol\n"); + return -ENODEV; + } + } + info->x_res = 31; info->y_res = 31; if (info->hw_version == 4) { --- linux-5.8.0.orig/drivers/input/mouse/elantech.h +++ linux-5.8.0/drivers/input/mouse/elantech.h @@ -18,6 +18,7 @@ #define ETP_CAPABILITIES_QUERY 0x02 #define ETP_SAMPLE_QUERY 0x03 #define ETP_RESOLUTION_QUERY 0x04 +#define ETP_ICBODY_QUERY 0x05 /* * Command values for register reading or writing @@ -140,7 +141,10 @@ unsigned char samples[3]; unsigned char debug; unsigned char hw_version; + unsigned char pattern; unsigned int fw_version; + unsigned int ic_version; + unsigned int product_id; unsigned int x_min; unsigned int y_min; unsigned int x_max; --- linux-5.8.0.orig/drivers/input/mouse/psmouse-base.c +++ linux-5.8.0/drivers/input/mouse/psmouse-base.c @@ -2042,7 +2042,7 @@ { int type = *((unsigned int *)kp->arg); - return sprintf(buffer, "%s", psmouse_protocol_by_type(type)->name); + return sprintf(buffer, "%s\n", psmouse_protocol_by_type(type)->name); } static int __init psmouse_init(void) --- linux-5.8.0.orig/drivers/input/mouse/sentelic.c +++ linux-5.8.0/drivers/input/mouse/sentelic.c @@ -441,7 +441,7 @@ fsp_reg_write_enable(psmouse, false); - return count; + return retval; } PSMOUSE_DEFINE_WO_ATTR(setreg, S_IWUSR, NULL, fsp_attr_set_setreg); --- linux-5.8.0.orig/drivers/input/mouse/trackpoint.c +++ linux-5.8.0/drivers/input/mouse/trackpoint.c @@ -17,10 +17,12 @@ #include "trackpoint.h" static const char * const trackpoint_variants[] = { - [TP_VARIANT_IBM] = "IBM", - [TP_VARIANT_ALPS] = "ALPS", - [TP_VARIANT_ELAN] = "Elan", - [TP_VARIANT_NXP] = "NXP", + [TP_VARIANT_IBM] = "IBM", + [TP_VARIANT_ALPS] = "ALPS", + [TP_VARIANT_ELAN] = "Elan", + [TP_VARIANT_NXP] = "NXP", + [TP_VARIANT_JYT_SYNAPTICS] = "JYT_Synaptics", + [TP_VARIANT_SYNAPTICS] = "Synaptics", }; /* @@ -280,6 +282,8 @@ case TP_VARIANT_ALPS: case TP_VARIANT_ELAN: case TP_VARIANT_NXP: + case TP_VARIANT_JYT_SYNAPTICS: + case TP_VARIANT_SYNAPTICS: if (variant_id) *variant_id = param[0]; if (firmware_id) --- linux-5.8.0.orig/drivers/input/mouse/trackpoint.h +++ linux-5.8.0/drivers/input/mouse/trackpoint.h @@ -24,10 +24,12 @@ * 0x01 was the original IBM trackpoint, others implement very limited * subset of trackpoint features. */ -#define TP_VARIANT_IBM 0x01 -#define TP_VARIANT_ALPS 0x02 -#define TP_VARIANT_ELAN 0x03 -#define TP_VARIANT_NXP 0x04 +#define TP_VARIANT_IBM 0x01 +#define TP_VARIANT_ALPS 0x02 +#define TP_VARIANT_ELAN 0x03 +#define TP_VARIANT_NXP 0x04 +#define TP_VARIANT_JYT_SYNAPTICS 0x05 +#define TP_VARIANT_SYNAPTICS 0x06 /* * Commands --- linux-5.8.0.orig/drivers/input/serio/hil_mlc.c +++ linux-5.8.0/drivers/input/serio/hil_mlc.c @@ -74,7 +74,7 @@ static LIST_HEAD(hil_mlcs); static DEFINE_RWLOCK(hil_mlcs_lock); static struct timer_list hil_mlcs_kicker; -static int hil_mlcs_probe; +static int hil_mlcs_probe, hil_mlc_stop; static void hil_mlcs_process(unsigned long unused); static DECLARE_TASKLET_DISABLED(hil_mlcs_tasklet, hil_mlcs_process, 0); @@ -702,9 +702,13 @@ if (!mlc->ostarted) { mlc->ostarted = 1; mlc->opacket = pack; - mlc->out(mlc); + rc = mlc->out(mlc); nextidx = HILSEN_DOZE; write_unlock_irqrestore(&mlc->lock, flags); + if (rc) { + hil_mlc_stop = 1; + return 1; + } break; } mlc->ostarted = 0; @@ -715,8 +719,13 @@ case HILSE_CTS: write_lock_irqsave(&mlc->lock, flags); - nextidx = mlc->cts(mlc) ? node->bad : node->good; + rc = mlc->cts(mlc); + nextidx = rc ? node->bad : node->good; write_unlock_irqrestore(&mlc->lock, flags); + if (rc) { + hil_mlc_stop = 1; + return 1; + } break; default: @@ -780,6 +789,12 @@ static void hil_mlcs_timer(struct timer_list *unused) { + if (hil_mlc_stop) { + /* could not send packet - stop immediately. */ + pr_warn(PREFIX "HIL seems stuck - Disabling HIL MLC.\n"); + return; + } + hil_mlcs_probe = 1; tasklet_schedule(&hil_mlcs_tasklet); /* Re-insert the periodic task. */ --- linux-5.8.0.orig/drivers/input/serio/hp_sdc_mlc.c +++ linux-5.8.0/drivers/input/serio/hp_sdc_mlc.c @@ -210,7 +210,7 @@ priv->tseq[2] = 1; priv->tseq[3] = 0; priv->tseq[4] = 0; - __hp_sdc_enqueue_transaction(&priv->trans); + return __hp_sdc_enqueue_transaction(&priv->trans); busy: return 1; done: @@ -219,7 +219,7 @@ return 0; } -static void hp_sdc_mlc_out(hil_mlc *mlc) +static int hp_sdc_mlc_out(hil_mlc *mlc) { struct hp_sdc_mlc_priv_s *priv; @@ -234,7 +234,7 @@ do_data: if (priv->emtestmode) { up(&mlc->osem); - return; + return 0; } /* Shouldn't be sending commands when loop may be busy */ BUG_ON(down_trylock(&mlc->csem)); @@ -296,7 +296,7 @@ BUG_ON(down_trylock(&mlc->csem)); } enqueue: - hp_sdc_enqueue_transaction(&priv->trans); + return hp_sdc_enqueue_transaction(&priv->trans); } static int __init hp_sdc_mlc_init(void) --- linux-5.8.0.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-5.8.0/drivers/input/serio/i8042-x86ia64io.h @@ -220,6 +220,12 @@ DMI_MATCH(DMI_PRODUCT_NAME, "C15B"), }, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ByteSpeed LLC"), + DMI_MATCH(DMI_PRODUCT_NAME, "ByteSpeed Laptop C15B"), + }, + }, { } }; @@ -548,6 +554,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"), }, }, + { + /* Entroware Proteus */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"), + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"), + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"), + }, + }, { } }; @@ -574,6 +588,10 @@ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */ }, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_CHASSIS_TYPE, "31"), /* Convertible Notebook */ + }, }, { } }; @@ -600,6 +618,48 @@ }, }, { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A114-31"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A314-31"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire A315-31"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-132"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-332"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire ES1-432"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate Spin B118-RN"), + }, + }, + { /* Advent 4211 */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "DIXONSXP"), @@ -676,6 +736,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "33474HU"), }, }, + { + /* Entroware Proteus */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"), + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"), + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"), + }, + }, { } }; @@ -705,6 +773,13 @@ DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), }, }, + { + /* Acer Aspire 5 A515 */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Grumpy_PK"), + DMI_MATCH(DMI_BOARD_VENDOR, "PK"), + }, + }, { } }; --- linux-5.8.0.orig/drivers/input/serio/i8042.c +++ linux-5.8.0/drivers/input/serio/i8042.c @@ -122,6 +122,7 @@ MODULE_PARM_DESC(unmask_kbd_data, "Unconditional enable (may reveal sensitive data) of normally sanitize-filtered kbd data traffic debug log [pre-condition: i8042.debug=1 enabled]"); #endif +static bool i8042_present; static bool i8042_bypass_aux_irq_test; static char i8042_kbd_firmware_id[128]; static char i8042_aux_firmware_id[128]; @@ -343,6 +344,9 @@ unsigned long flags; int retval; + if (!i8042_present) + return -1; + spin_lock_irqsave(&i8042_lock, flags); retval = __i8042_command(param, command); spin_unlock_irqrestore(&i8042_lock, flags); @@ -613,7 +617,7 @@ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { i8042_ctr &= ~I8042_CTR_KBDINT; i8042_ctr |= I8042_CTR_KBDDIS; - pr_err("Failed to enable KBD port\n"); + pr_info("Failed to enable KBD port\n"); return -EIO; } @@ -632,7 +636,7 @@ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { i8042_ctr &= ~I8042_CTR_AUXINT; i8042_ctr |= I8042_CTR_AUXDIS; - pr_err("Failed to enable AUX port\n"); + pr_info("Failed to enable AUX port\n"); return -EIO; } @@ -724,7 +728,7 @@ i8042_ctr &= ~I8042_CTR_AUXINT; if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { - pr_err("Failed to disable AUX port, can't use MUX\n"); + pr_info("Failed to disable AUX port, can't use MUX\n"); return -EIO; } @@ -939,25 +943,28 @@ { unsigned char param; int i = 0; + int ret; /* * We try this 5 times; on some really fragile systems this does not * take the first time... */ - do { + while (i++ < 5) { - if (i8042_command(¶m, I8042_CMD_CTL_TEST)) { - pr_err("i8042 controller selftest timeout\n"); - return -ENODEV; - } - - if (param == I8042_RET_CTL_TEST) + ret = i8042_command(¶m, I8042_CMD_CTL_TEST); + if (ret) + pr_info("i8042 controller selftest timeout (%d/5)\n", i); + else if (param == I8042_RET_CTL_TEST) return 0; + else + dbg("i8042 controller selftest: %#x != %#x\n", + param, I8042_RET_CTL_TEST); - dbg("i8042 controller selftest: %#x != %#x\n", - param, I8042_RET_CTL_TEST); msleep(50); - } while (i++ < 5); + } + + if (ret) + return -ENODEV; #ifdef CONFIG_X86 /* @@ -969,7 +976,7 @@ pr_info("giving up on controller selftest, continuing anyway...\n"); return 0; #else - pr_err("i8042 controller selftest failed\n"); + pr_info("i8042 controller selftest failed\n"); return -EIO; #endif } @@ -1467,7 +1474,8 @@ if (error) goto err_free_ports; - if (aux_enable()) + error = aux_enable(); + if (error) goto err_free_irq; i8042_aux_irq_registered = true; @@ -1612,12 +1620,15 @@ err = i8042_platform_init(); if (err) - return err; + return (err == -ENODEV) ? 0 : err; err = i8042_controller_check(); if (err) goto err_platform_exit; + /* Set this before creating the dev to allow i8042_command to work right away */ + i8042_present = true; + pdev = platform_create_bundle(&i8042_driver, i8042_probe, NULL, 0, NULL, 0); if (IS_ERR(pdev)) { err = PTR_ERR(pdev); @@ -1636,6 +1647,9 @@ static void __exit i8042_exit(void) { + if (!i8042_present) + return; + platform_device_unregister(i8042_platform_device); platform_driver_unregister(&i8042_driver); i8042_platform_exit(); --- linux-5.8.0.orig/drivers/input/serio/sun4i-ps2.c +++ linux-5.8.0/drivers/input/serio/sun4i-ps2.c @@ -211,7 +211,6 @@ struct sun4i_ps2data *drvdata; struct serio *serio; struct device *dev = &pdev->dev; - unsigned int irq; int error; drvdata = kzalloc(sizeof(struct sun4i_ps2data), GFP_KERNEL); @@ -264,14 +263,12 @@ writel(0, drvdata->reg_base + PS2_REG_GCTL); /* Get IRQ for the device */ - irq = platform_get_irq(pdev, 0); - if (!irq) { - dev_err(dev, "no IRQ found\n"); - error = -ENXIO; + drvdata->irq = platform_get_irq(pdev, 0); + if (drvdata->irq < 0) { + error = drvdata->irq; goto err_disable_clk; } - drvdata->irq = irq; drvdata->serio = serio; drvdata->dev = dev; --- linux-5.8.0.orig/drivers/input/touchscreen/Kconfig +++ linux-5.8.0/drivers/input/touchscreen/Kconfig @@ -96,6 +96,7 @@ config TOUCHSCREEN_ADC tristate "Generic ADC based resistive touchscreen" depends on IIO + select IIO_BUFFER select IIO_BUFFER_CB help Say Y here if you want to use the generic ADC --- linux-5.8.0.orig/drivers/input/touchscreen/ads7846.c +++ linux-5.8.0/drivers/input/touchscreen/ads7846.c @@ -33,6 +33,7 @@ #include #include #include +#include /* * This code has been heavily tested on a Nokia 770, and lightly @@ -199,6 +200,26 @@ #define REF_ON (READ_12BIT_DFR(x, 1, 1)) #define REF_OFF (READ_12BIT_DFR(y, 0, 0)) +static int get_pendown_state(struct ads7846 *ts) +{ + if (ts->get_pendown_state) + return ts->get_pendown_state(); + + return !gpio_get_value(ts->gpio_pendown); +} + +static void ads7846_report_pen_up(struct ads7846 *ts) +{ + struct input_dev *input = ts->input; + + input_report_key(input, BTN_TOUCH, 0); + input_report_abs(input, ABS_PRESSURE, 0); + input_sync(input); + + ts->pendown = false; + dev_vdbg(&ts->spi->dev, "UP\n"); +} + /* Must be called with ts->lock held */ static void ads7846_stop(struct ads7846 *ts) { @@ -215,6 +236,10 @@ static void ads7846_restart(struct ads7846 *ts) { if (!ts->disabled && !ts->suspended) { + /* Check if pen was released since last stop */ + if (ts->pendown && !get_pendown_state(ts)) + ads7846_report_pen_up(ts); + /* Tell IRQ thread that it may poll the device. */ ts->stopped = false; mb(); @@ -411,7 +436,7 @@ if (status == 0) { /* BE12 value, then padding */ - status = be16_to_cpu(*((u16 *)&req->sample[1])); + status = get_unaligned_be16(&req->sample[1]); status = status >> 3; status &= 0x0fff; } @@ -606,14 +631,6 @@ /*--------------------------------------------------------------------------*/ -static int get_pendown_state(struct ads7846 *ts) -{ - if (ts->get_pendown_state) - return ts->get_pendown_state(); - - return !gpio_get_value(ts->gpio_pendown); -} - static void null_wait_for_sync(void) { } @@ -786,10 +803,11 @@ /* compute touch pressure resistance using equation #2 */ Rt = z2; Rt -= z1; - Rt *= x; Rt *= ts->x_plate_ohms; + Rt = DIV_ROUND_CLOSEST(Rt, 16); + Rt *= x; Rt /= z1; - Rt = (Rt + 2047) >> 12; + Rt = DIV_ROUND_CLOSEST(Rt, 256); } else { Rt = 0; } @@ -868,16 +886,8 @@ msecs_to_jiffies(TS_POLL_PERIOD)); } - if (ts->pendown && !ts->stopped) { - struct input_dev *input = ts->input; - - input_report_key(input, BTN_TOUCH, 0); - input_report_abs(input, ABS_PRESSURE, 0); - input_sync(input); - - ts->pendown = false; - dev_vdbg(&ts->spi->dev, "UP\n"); - } + if (ts->pendown && !ts->stopped) + ads7846_report_pen_up(ts); return IRQ_HANDLED; } --- linux-5.8.0.orig/drivers/input/touchscreen/elants_i2c.c +++ linux-5.8.0/drivers/input/touchscreen/elants_i2c.c @@ -90,7 +90,7 @@ /* FW read command, 0x53 0x?? 0x0, 0x01 */ #define E_ELAN_INFO_FW_VER 0x00 #define E_ELAN_INFO_BC_VER 0x10 -#define E_ELAN_INFO_REK 0xE0 +#define E_ELAN_INFO_REK 0xD0 #define E_ELAN_INFO_TEST_VER 0xE0 #define E_ELAN_INFO_FW_ID 0xF0 #define E_INFO_OSR 0xD6 --- linux-5.8.0.orig/drivers/input/touchscreen/elo.c +++ linux-5.8.0/drivers/input/touchscreen/elo.c @@ -341,8 +341,10 @@ switch (elo->id) { case 0: /* 10-byte protocol */ - if (elo_setup_10(elo)) + if (elo_setup_10(elo)) { + err = -EIO; goto fail3; + } break; --- linux-5.8.0.orig/drivers/input/touchscreen/goodix.c +++ linux-5.8.0/drivers/input/touchscreen/goodix.c @@ -157,6 +157,7 @@ { .id = "5663", .data = >1x_chip_data }, { .id = "5688", .data = >1x_chip_data }, { .id = "917S", .data = >1x_chip_data }, + { .id = "9286", .data = >1x_chip_data }, { .id = "911", .data = >911_chip_data }, { .id = "9271", .data = >911_chip_data }, @@ -193,6 +194,18 @@ }, }, { + .ident = "Teclast X98 Pro", + .matches = { + /* + * Only match BIOS date, because the manufacturers + * BIOS does not report the board name at all + * (sometimes)... + */ + DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"), + DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"), + }, + }, + { .ident = "WinBook TW100", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "WinBook"), @@ -1433,6 +1446,7 @@ { .compatible = "goodix,gt927" }, { .compatible = "goodix,gt9271" }, { .compatible = "goodix,gt928" }, + { .compatible = "goodix,gt9286" }, { .compatible = "goodix,gt967" }, { } }; --- linux-5.8.0.orig/drivers/input/touchscreen/ili210x.c +++ linux-5.8.0/drivers/input/touchscreen/ili210x.c @@ -29,11 +29,13 @@ void *buf, size_t len); int (*get_touch_data)(struct i2c_client *client, u8 *data); bool (*parse_touch_data)(const u8 *data, unsigned int finger, - unsigned int *x, unsigned int *y); + unsigned int *x, unsigned int *y, + unsigned int *z); bool (*continue_polling)(const u8 *data, bool touch); unsigned int max_touches; unsigned int resolution; bool has_calibrate_reg; + bool has_pressure_reg; }; struct ili210x { @@ -82,7 +84,8 @@ static bool ili210x_touchdata_to_coords(const u8 *touchdata, unsigned int finger, - unsigned int *x, unsigned int *y) + unsigned int *x, unsigned int *y, + unsigned int *z) { if (touchdata[0] & BIT(finger)) return false; @@ -137,7 +140,8 @@ static bool ili211x_touchdata_to_coords(const u8 *touchdata, unsigned int finger, - unsigned int *x, unsigned int *y) + unsigned int *x, unsigned int *y, + unsigned int *z) { u32 data; @@ -169,7 +173,8 @@ static bool ili212x_touchdata_to_coords(const u8 *touchdata, unsigned int finger, - unsigned int *x, unsigned int *y) + unsigned int *x, unsigned int *y, + unsigned int *z) { u16 val; @@ -235,7 +240,8 @@ static bool ili251x_touchdata_to_coords(const u8 *touchdata, unsigned int finger, - unsigned int *x, unsigned int *y) + unsigned int *x, unsigned int *y, + unsigned int *z) { u16 val; @@ -245,6 +251,7 @@ *x = val & 0x3fff; *y = get_unaligned_be16(touchdata + 1 + (finger * 5) + 2); + *z = touchdata[1 + (finger * 5) + 4]; return true; } @@ -261,6 +268,7 @@ .continue_polling = ili251x_check_continue_polling, .max_touches = 10, .has_calibrate_reg = true, + .has_pressure_reg = true, }; static bool ili210x_report_events(struct ili210x *priv, u8 *touchdata) @@ -268,14 +276,16 @@ struct input_dev *input = priv->input; int i; bool contact = false, touch; - unsigned int x = 0, y = 0; + unsigned int x = 0, y = 0, z = 0; for (i = 0; i < priv->chip->max_touches; i++) { - touch = priv->chip->parse_touch_data(touchdata, i, &x, &y); + touch = priv->chip->parse_touch_data(touchdata, i, &x, &y, &z); input_mt_slot(input, i); if (input_mt_report_slot_state(input, MT_TOOL_FINGER, touch)) { touchscreen_report_pos(input, &priv->prop, x, y, true); + if (priv->chip->has_pressure_reg) + input_report_abs(input, ABS_MT_PRESSURE, z); contact = true; } } @@ -437,6 +447,8 @@ max_xy = (chip->resolution ?: SZ_64K) - 1; input_set_abs_params(input, ABS_MT_POSITION_X, 0, max_xy, 0, 0); input_set_abs_params(input, ABS_MT_POSITION_Y, 0, max_xy, 0, 0); + if (priv->chip->has_pressure_reg) + input_set_abs_params(input, ABS_MT_PRESSURE, 0, 0xa, 0, 0); touchscreen_parse_properties(input, true, &priv->prop); error = input_mt_init_slots(input, priv->chip->max_touches, --- linux-5.8.0.orig/drivers/input/touchscreen/imx6ul_tsc.c +++ linux-5.8.0/drivers/input/touchscreen/imx6ul_tsc.c @@ -530,20 +530,25 @@ mutex_lock(&input_dev->mutex); - if (input_dev->users) { - retval = clk_prepare_enable(tsc->adc_clk); - if (retval) - goto out; + if (!input_dev->users) + goto out; - retval = clk_prepare_enable(tsc->tsc_clk); - if (retval) { - clk_disable_unprepare(tsc->adc_clk); - goto out; - } + retval = clk_prepare_enable(tsc->adc_clk); + if (retval) + goto out; - retval = imx6ul_tsc_init(tsc); + retval = clk_prepare_enable(tsc->tsc_clk); + if (retval) { + clk_disable_unprepare(tsc->adc_clk); + goto out; } + retval = imx6ul_tsc_init(tsc); + if (retval) { + clk_disable_unprepare(tsc->tsc_clk); + clk_disable_unprepare(tsc->adc_clk); + goto out; + } out: mutex_unlock(&input_dev->mutex); return retval; --- linux-5.8.0.orig/drivers/input/touchscreen/raydium_i2c_ts.c +++ linux-5.8.0/drivers/input/touchscreen/raydium_i2c_ts.c @@ -410,6 +410,7 @@ enum raydium_bl_ack state) { int error; + static const u8 cmd[] = { 0xFF, 0x39 }; error = raydium_i2c_send(client, RM_CMD_BOOT_WRT, data, len); if (error) { @@ -418,7 +419,7 @@ return error; } - error = raydium_i2c_send(client, RM_CMD_BOOT_ACK, NULL, 0); + error = raydium_i2c_send(client, RM_CMD_BOOT_ACK, cmd, sizeof(cmd)); if (error) { dev_err(&client->dev, "Ack obj command failed: %d\n", error); return error; --- linux-5.8.0.orig/drivers/input/touchscreen/stmfts.c +++ linux-5.8.0/drivers/input/touchscreen/stmfts.c @@ -479,7 +479,7 @@ mutex_lock(&sdata->mutex); - if (value & sdata->hover_enabled) + if (value && sdata->hover_enabled) goto out; if (sdata->running) --- linux-5.8.0.orig/drivers/input/touchscreen/sur40.c +++ linux-5.8.0/drivers/input/touchscreen/sur40.c @@ -789,6 +789,7 @@ dev_err(&interface->dev, "Unable to register video controls."); v4l2_ctrl_handler_free(&sur40->hdl); + error = sur40->hdl.error; goto err_unreg_v4l2; } --- linux-5.8.0.orig/drivers/interconnect/core.c +++ linux-5.8.0/drivers/interconnect/core.c @@ -55,12 +55,18 @@ icc_summary_show_one(s, n); hlist_for_each_entry(r, &n->req_list, req_node) { + u32 avg_bw = 0, peak_bw = 0; + if (!r->dev) continue; + if (r->enabled) { + avg_bw = r->avg_bw; + peak_bw = r->peak_bw; + } + seq_printf(s, " %-27s %12u %12u %12u\n", - dev_name(r->dev), r->tag, r->avg_bw, - r->peak_bw); + dev_name(r->dev), r->tag, avg_bw, peak_bw); } } } --- linux-5.8.0.orig/drivers/interconnect/imx/imx.c +++ linux-5.8.0/drivers/interconnect/imx/imx.c @@ -99,6 +99,7 @@ if (!dn || !of_device_is_available(dn)) { dev_warn(dev, "Missing property %s, skip scaling %s\n", adj->phandle_name, node->name); + of_node_put(dn); return 0; } --- linux-5.8.0.orig/drivers/interconnect/qcom/bcm-voter.c +++ linux-5.8.0/drivers/interconnect/qcom/bcm-voter.c @@ -52,8 +52,20 @@ return 1; } +static u64 bcm_div(u64 num, u32 base) +{ + /* Ensure that small votes aren't lost. */ + if (num && num < base) + return 1; + + do_div(num, base); + + return num; +} + static void bcm_aggregate(struct qcom_icc_bcm *bcm) { + struct qcom_icc_node *node; size_t i, bucket; u64 agg_avg[QCOM_ICC_NUM_BUCKETS] = {0}; u64 agg_peak[QCOM_ICC_NUM_BUCKETS] = {0}; @@ -61,22 +73,21 @@ for (bucket = 0; bucket < QCOM_ICC_NUM_BUCKETS; bucket++) { for (i = 0; i < bcm->num_nodes; i++) { - temp = bcm->nodes[i]->sum_avg[bucket] * bcm->aux_data.width; - do_div(temp, bcm->nodes[i]->buswidth * bcm->nodes[i]->channels); + node = bcm->nodes[i]; + temp = bcm_div(node->sum_avg[bucket] * bcm->aux_data.width, + node->buswidth * node->channels); agg_avg[bucket] = max(agg_avg[bucket], temp); - temp = bcm->nodes[i]->max_peak[bucket] * bcm->aux_data.width; - do_div(temp, bcm->nodes[i]->buswidth); + temp = bcm_div(node->max_peak[bucket] * bcm->aux_data.width, + node->buswidth); agg_peak[bucket] = max(agg_peak[bucket], temp); } temp = agg_avg[bucket] * 1000ULL; - do_div(temp, bcm->aux_data.unit); - bcm->vote_x[bucket] = temp; + bcm->vote_x[bucket] = bcm_div(temp, bcm->aux_data.unit); temp = agg_peak[bucket] * 1000ULL; - do_div(temp, bcm->aux_data.unit); - bcm->vote_y[bucket] = temp; + bcm->vote_y[bucket] = bcm_div(temp, bcm->aux_data.unit); } if (bcm->keepalive && bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 && --- linux-5.8.0.orig/drivers/interconnect/qcom/msm8916.c +++ linux-5.8.0/drivers/interconnect/qcom/msm8916.c @@ -182,7 +182,7 @@ DEFINE_QNODE(mas_pcnoc_sdcc_2, MSM8916_MASTER_SDCC_2, 8, -1, -1, MSM8916_PNOC_INT_1); DEFINE_QNODE(mas_qdss_bam, MSM8916_MASTER_QDSS_BAM, 8, -1, -1, MSM8916_SNOC_QDSS_INT); DEFINE_QNODE(mas_qdss_etr, MSM8916_MASTER_QDSS_ETR, 8, -1, -1, MSM8916_SNOC_QDSS_INT); -DEFINE_QNODE(mas_snoc_cfg, MSM8916_MASTER_SNOC_CFG, 4, 20, -1, MSM8916_SNOC_QDSS_INT); +DEFINE_QNODE(mas_snoc_cfg, MSM8916_MASTER_SNOC_CFG, 4, -1, -1, MSM8916_SNOC_QDSS_INT); DEFINE_QNODE(mas_spdm, MSM8916_MASTER_SPDM, 4, -1, -1, MSM8916_PNOC_MAS_0); DEFINE_QNODE(mas_tcu0, MSM8916_MASTER_TCU0, 8, -1, -1, MSM8916_SLAVE_EBI_CH0, MSM8916_BIMC_SNOC_MAS, MSM8916_SLAVE_AMPSS_L2); DEFINE_QNODE(mas_tcu1, MSM8916_MASTER_TCU1, 8, -1, -1, MSM8916_SLAVE_EBI_CH0, MSM8916_BIMC_SNOC_MAS, MSM8916_SLAVE_AMPSS_L2); @@ -208,14 +208,14 @@ DEFINE_QNODE(pcnoc_snoc_slv, MSM8916_PNOC_SNOC_SLV, 8, -1, 45, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC, MSM8916_SNOC_INT_1); DEFINE_QNODE(qdss_int, MSM8916_SNOC_QDSS_INT, 8, -1, -1, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC); DEFINE_QNODE(slv_apps_l2, MSM8916_SLAVE_AMPSS_L2, 8, -1, -1, 0); -DEFINE_QNODE(slv_apss, MSM8916_SLAVE_APSS, 4, -1, 20, 0); +DEFINE_QNODE(slv_apss, MSM8916_SLAVE_APSS, 4, -1, -1, 0); DEFINE_QNODE(slv_audio, MSM8916_SLAVE_LPASS, 4, -1, -1, 0); DEFINE_QNODE(slv_bimc_cfg, MSM8916_SLAVE_BIMC_CFG, 4, -1, -1, 0); DEFINE_QNODE(slv_blsp_1, MSM8916_SLAVE_BLSP_1, 4, -1, -1, 0); DEFINE_QNODE(slv_boot_rom, MSM8916_SLAVE_BOOT_ROM, 4, -1, -1, 0); DEFINE_QNODE(slv_camera_cfg, MSM8916_SLAVE_CAMERA_CFG, 4, -1, -1, 0); -DEFINE_QNODE(slv_cats_0, MSM8916_SLAVE_CATS_128, 16, -1, 106, 0); -DEFINE_QNODE(slv_cats_1, MSM8916_SLAVE_OCMEM_64, 8, -1, 107, 0); +DEFINE_QNODE(slv_cats_0, MSM8916_SLAVE_CATS_128, 16, -1, -1, 0); +DEFINE_QNODE(slv_cats_1, MSM8916_SLAVE_OCMEM_64, 8, -1, -1, 0); DEFINE_QNODE(slv_clk_ctl, MSM8916_SLAVE_CLK_CTL, 4, -1, -1, 0); DEFINE_QNODE(slv_crypto_0_cfg, MSM8916_SLAVE_CRYPTO_0_CFG, 4, -1, -1, 0); DEFINE_QNODE(slv_dehr_cfg, MSM8916_SLAVE_DEHR_CFG, 4, -1, -1, 0); @@ -239,7 +239,7 @@ DEFINE_QNODE(slv_security, MSM8916_SLAVE_SECURITY, 4, -1, -1, 0); DEFINE_QNODE(slv_snoc_cfg, MSM8916_SLAVE_SNOC_CFG, 4, -1, -1, 0); DEFINE_QNODE(slv_spdm, MSM8916_SLAVE_SPDM, 4, -1, -1, 0); -DEFINE_QNODE(slv_srvc_snoc, MSM8916_SLAVE_SRVC_SNOC, 8, -1, 29, 0); +DEFINE_QNODE(slv_srvc_snoc, MSM8916_SLAVE_SRVC_SNOC, 8, -1, -1, 0); DEFINE_QNODE(slv_tcsr, MSM8916_SLAVE_TCSR, 4, -1, -1, 0); DEFINE_QNODE(slv_tlmm, MSM8916_SLAVE_TLMM, 4, -1, -1, 0); DEFINE_QNODE(slv_usb_hs, MSM8916_SLAVE_USB_HS, 4, -1, -1, 0); @@ -249,7 +249,7 @@ DEFINE_QNODE(snoc_bimc_1_mas, MSM8916_SNOC_BIMC_1_MAS, 16, -1, -1, MSM8916_SNOC_BIMC_1_SLV); DEFINE_QNODE(snoc_bimc_1_slv, MSM8916_SNOC_BIMC_1_SLV, 8, -1, -1, MSM8916_SLAVE_EBI_CH0); DEFINE_QNODE(snoc_int_0, MSM8916_SNOC_INT_0, 8, 99, 130, MSM8916_SLAVE_QDSS_STM, MSM8916_SLAVE_IMEM, MSM8916_SNOC_PNOC_MAS); -DEFINE_QNODE(snoc_int_1, MSM8916_SNOC_INT_1, 8, 100, 131, MSM8916_SLAVE_APSS, MSM8916_SLAVE_CATS_128, MSM8916_SLAVE_OCMEM_64); +DEFINE_QNODE(snoc_int_1, MSM8916_SNOC_INT_1, 8, -1, -1, MSM8916_SLAVE_APSS, MSM8916_SLAVE_CATS_128, MSM8916_SLAVE_OCMEM_64); DEFINE_QNODE(snoc_int_bimc, MSM8916_SNOC_INT_BIMC, 8, 101, 132, MSM8916_SNOC_BIMC_0_MAS); DEFINE_QNODE(snoc_pcnoc_mas, MSM8916_SNOC_PNOC_MAS, 8, -1, -1, MSM8916_SNOC_PNOC_SLV); DEFINE_QNODE(snoc_pcnoc_slv, MSM8916_SNOC_PNOC_SLV, 8, -1, -1, MSM8916_PNOC_INT_0); --- linux-5.8.0.orig/drivers/interconnect/qcom/qcs404.c +++ linux-5.8.0/drivers/interconnect/qcom/qcs404.c @@ -157,8 +157,8 @@ } DEFINE_QNODE(mas_apps_proc, QCS404_MASTER_AMPSS_M0, 8, 0, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); -DEFINE_QNODE(mas_oxili, QCS404_MASTER_GRAPHICS_3D, 8, 6, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); -DEFINE_QNODE(mas_mdp, QCS404_MASTER_MDP_PORT0, 8, 8, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); +DEFINE_QNODE(mas_oxili, QCS404_MASTER_GRAPHICS_3D, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); +DEFINE_QNODE(mas_mdp, QCS404_MASTER_MDP_PORT0, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); DEFINE_QNODE(mas_snoc_bimc_1, QCS404_SNOC_BIMC_1_MAS, 8, 76, -1, QCS404_SLAVE_EBI_CH0); DEFINE_QNODE(mas_tcu_0, QCS404_MASTER_TCU_0, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV); DEFINE_QNODE(mas_spdm, QCS404_MASTER_SPDM, 4, -1, -1, QCS404_PNOC_INT_3); --- linux-5.8.0.orig/drivers/interconnect/qcom/sdm845.c +++ linux-5.8.0/drivers/interconnect/qcom/sdm845.c @@ -151,7 +151,7 @@ DEFINE_QBCM(bcm_sh0, "SH0", true, &qns_llcc); DEFINE_QBCM(bcm_mm0, "MM0", false, &qns_mem_noc_hf); DEFINE_QBCM(bcm_sh1, "SH1", false, &qns_apps_io); -DEFINE_QBCM(bcm_mm1, "MM1", false, &qxm_camnoc_hf0_uncomp, &qxm_camnoc_hf1_uncomp, &qxm_camnoc_sf_uncomp, &qxm_camnoc_hf0, &qxm_camnoc_hf1, &qxm_mdp0, &qxm_mdp1); +DEFINE_QBCM(bcm_mm1, "MM1", true, &qxm_camnoc_hf0_uncomp, &qxm_camnoc_hf1_uncomp, &qxm_camnoc_sf_uncomp, &qxm_camnoc_hf0, &qxm_camnoc_hf1, &qxm_mdp0, &qxm_mdp1); DEFINE_QBCM(bcm_sh2, "SH2", false, &qns_memnoc_snoc); DEFINE_QBCM(bcm_mm2, "MM2", false, &qns2_mem_noc); DEFINE_QBCM(bcm_sh3, "SH3", false, &acm_tcu); --- linux-5.8.0.orig/drivers/iommu/Kconfig +++ linux-5.8.0/drivers/iommu/Kconfig @@ -143,7 +143,7 @@ select IOMMU_API select IOMMU_IOVA select IOMMU_DMA - depends on X86_64 && PCI && ACPI + depends on X86_64 && PCI && ACPI && HAVE_CMPXCHG_DOUBLE help With this option you can enable support for AMD IOMMU hardware in your system. An IOMMU is a hardware component which provides --- linux-5.8.0.orig/drivers/iommu/amd/amd_iommu.h +++ linux-5.8.0/drivers/iommu/amd/amd_iommu.h @@ -75,12 +75,9 @@ (pdev->device == PCI_DEVICE_ID_RD890_IOMMU); } -static inline bool iommu_feature(struct amd_iommu *iommu, u64 f) +static inline bool iommu_feature(struct amd_iommu *iommu, u64 mask) { - if (!(iommu->cap & (1 << IOMMU_CAP_EFR))) - return false; - - return !!(iommu->features & f); + return !!(iommu->features & mask); } static inline u64 iommu_virt_to_phys(void *vaddr) --- linux-5.8.0.orig/drivers/iommu/amd/amd_iommu_types.h +++ linux-5.8.0/drivers/iommu/amd/amd_iommu_types.h @@ -254,7 +254,7 @@ #define DTE_IRQ_REMAP_INTCTL_MASK (0x3ULL << 60) #define DTE_IRQ_TABLE_LEN_MASK (0xfULL << 1) #define DTE_IRQ_REMAP_INTCTL (2ULL << 60) -#define DTE_IRQ_TABLE_LEN (8ULL << 1) +#define DTE_IRQ_TABLE_LEN (9ULL << 1) #define DTE_IRQ_REMAP_ENABLE 1ULL #define PAGE_MODE_NONE 0x00 @@ -376,6 +376,10 @@ #define IOMMU_CAP_NPCACHE 26 #define IOMMU_CAP_EFR 27 +/* IOMMU IVINFO */ +#define IOMMU_IVINFO_OFFSET 36 +#define IOMMU_IVINFO_EFRSUP BIT(0) + /* IOMMU Feature Reporting Field (for IVHD type 10h */ #define IOMMU_FEAT_GASUP_SHIFT 6 @@ -406,7 +410,11 @@ /* Only true if all IOMMUs support device IOTLBs */ extern bool amd_iommu_iotlb_sup; -#define MAX_IRQS_PER_TABLE 256 +/* + * AMD IOMMU hardware only support 512 IRTEs despite + * the architectural limitation of 2048 entries. + */ +#define MAX_IRQS_PER_TABLE 512 #define IRQ_TABLE_ALIGNMENT 128 struct irq_remap_table { --- linux-5.8.0.orig/drivers/iommu/amd/init.c +++ linux-5.8.0/drivers/iommu/amd/init.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -253,9 +254,13 @@ static int amd_iommu_enable_interrupts(void); static int __init iommu_go_to_state(enum iommu_init_state state); static void init_device_table_dma(void); +static int iommu_pc_get_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, + u8 fxn, u64 *value, bool is_write); static bool amd_iommu_pre_enabled = true; +static u32 amd_iommu_ivinfo __initdata; + bool translation_pre_enabled(struct amd_iommu *iommu) { return (iommu->flags & AMD_IOMMU_FLAG_TRANS_PRE_ENABLED); @@ -295,6 +300,18 @@ return amd_iommus_present; } +/* + * For IVHD type 0x11/0x40, EFR is also available via IVHD. + * Default to IVHD EFR since it is available sooner + * (i.e. before PCI init). + */ +static void __init early_iommu_features_init(struct amd_iommu *iommu, + struct ivhd_header *h) +{ + if (amd_iommu_ivinfo & IOMMU_IVINFO_EFRSUP) + iommu->features = h->efr_reg; +} + /* Access to l1 and l2 indexed register spaces */ static u32 iommu_read_l1(struct amd_iommu *iommu, u16 l1, u8 address) @@ -1111,25 +1128,6 @@ } /* - * Reads the device exclusion range from ACPI and initializes the IOMMU with - * it - */ -static void __init set_device_exclusion_range(u16 devid, struct ivmd_header *m) -{ - if (!(m->flags & IVMD_FLAG_EXCL_RANGE)) - return; - - /* - * Treat per-device exclusion ranges as r/w unity-mapped regions - * since some buggy BIOSes might lead to the overwritten exclusion - * range (exclusion_start and exclusion_length members). This - * happens when there are multiple exclusion ranges (IVMD entries) - * defined in ACPI table. - */ - m->flags = (IVMD_FLAG_IW | IVMD_FLAG_IR | IVMD_FLAG_UNITY_MAP); -} - -/* * Takes a pointer to an AMD IOMMU entry in the ACPI table and * initializes the hardware and our data structures with it. */ @@ -1518,7 +1516,14 @@ iommu->mmio_phys_end = MMIO_REG_END_OFFSET; else iommu->mmio_phys_end = MMIO_CNTR_CONF_OFFSET; - if (((h->efr_attr & (0x1 << IOMMU_FEAT_GASUP_SHIFT)) == 0)) + + /* + * Note: GA (128-bit IRTE) mode requires cmpxchg16b supports. + * GAM also requires GA mode. Therefore, we need to + * check cmpxchg16b support before enabling it. + */ + if (!boot_cpu_has(X86_FEATURE_CX16) || + ((h->efr_attr & (0x1 << IOMMU_FEAT_GASUP_SHIFT)) == 0)) amd_iommu_guest_ir = AMD_IOMMU_GUEST_IR_LEGACY; break; case 0x11: @@ -1527,8 +1532,18 @@ iommu->mmio_phys_end = MMIO_REG_END_OFFSET; else iommu->mmio_phys_end = MMIO_CNTR_CONF_OFFSET; - if (((h->efr_reg & (0x1 << IOMMU_EFR_GASUP_SHIFT)) == 0)) + + /* + * Note: GA (128-bit IRTE) mode requires cmpxchg16b supports. + * XT, GAM also requires GA mode. Therefore, we need to + * check cmpxchg16b support before enabling them. + */ + if (!boot_cpu_has(X86_FEATURE_CX16) || + ((h->efr_reg & (0x1 << IOMMU_EFR_GASUP_SHIFT)) == 0)) { amd_iommu_guest_ir = AMD_IOMMU_GUEST_IR_LEGACY; + break; + } + /* * Note: Since iommu_update_intcapxt() leverages * the IOMMU MMIO access to MSI capability block registers @@ -1538,6 +1553,9 @@ if ((h->efr_reg & BIT(IOMMU_EFR_XTSUP_SHIFT)) && (h->efr_reg & BIT(IOMMU_EFR_MSICAPMMIOSUP_SHIFT))) amd_iommu_xt_mode = IRQ_REMAP_X2APIC_MODE; + + early_iommu_features_init(iommu, h); + break; default: return -EINVAL; @@ -1651,13 +1669,11 @@ return 0; } -static int iommu_pc_get_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr, - u8 fxn, u64 *value, bool is_write); - -static void init_iommu_perf_ctr(struct amd_iommu *iommu) +static void __init init_iommu_perf_ctr(struct amd_iommu *iommu) { + int retry; struct pci_dev *pdev = iommu->dev; - u64 val = 0xabcd, val2 = 0, save_reg = 0; + u64 val = 0xabcd, val2 = 0, save_reg, save_src; if (!iommu_feature(iommu, FEATURE_PC)) return; @@ -1665,17 +1681,39 @@ amd_iommu_pc_present = true; /* save the value to restore, if writable */ - if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, false)) + if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, false) || + iommu_pc_get_set_reg(iommu, 0, 0, 8, &save_src, false)) goto pc_false; - /* Check if the performance counters can be written to */ - if ((iommu_pc_get_set_reg(iommu, 0, 0, 0, &val, true)) || - (iommu_pc_get_set_reg(iommu, 0, 0, 0, &val2, false)) || - (val != val2)) + /* + * Disable power gating by programing the performance counter + * source to 20 (i.e. counts the reads and writes from/to IOMMU + * Reserved Register [MMIO Offset 1FF8h] that are ignored.), + * which never get incremented during this init phase. + * (Note: The event is also deprecated.) + */ + val = 20; + if (iommu_pc_get_set_reg(iommu, 0, 0, 8, &val, true)) goto pc_false; + /* Check if the performance counters can be written to */ + val = 0xabcd; + for (retry = 5; retry; retry--) { + if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &val, true) || + iommu_pc_get_set_reg(iommu, 0, 0, 0, &val2, false) || + val2) + break; + + /* Wait about 20 msec for power gating to disable and retry. */ + msleep(20); + } + /* restore */ - if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, true)) + if (iommu_pc_get_set_reg(iommu, 0, 0, 0, &save_reg, true) || + iommu_pc_get_set_reg(iommu, 0, 0, 8, &save_src, true)) + goto pc_false; + + if (val != val2) goto pc_false; pci_info(pdev, "IOMMU performance counters supported\n"); @@ -1726,6 +1764,35 @@ NULL, }; +/* + * Note: IVHD 0x11 and 0x40 also contains exact copy + * of the IOMMU Extended Feature Register [MMIO Offset 0030h]. + * Default to EFR in IVHD since it is available sooner (i.e. before PCI init). + */ +static void __init late_iommu_features_init(struct amd_iommu *iommu) +{ + u64 features; + + if (!(iommu->cap & (1 << IOMMU_CAP_EFR))) + return; + + /* read extended feature bits */ + features = readq(iommu->mmio_base + MMIO_EXT_FEATURES); + + if (!iommu->features) { + iommu->features = features; + return; + } + + /* + * Sanity check and warn if EFR values from + * IVHD and MMIO conflict. + */ + if (features != iommu->features) + pr_warn(FW_WARN "EFR mismatch. Use IVHD EFR (%#llx : %#llx\n).", + features, iommu->features); +} + static int __init iommu_init_pci(struct amd_iommu *iommu) { int cap_ptr = iommu->cap_ptr; @@ -1745,8 +1812,7 @@ if (!(iommu->cap & (1 << IOMMU_CAP_IOTLB))) amd_iommu_iotlb_sup = false; - /* read extended feature bits */ - iommu->features = readq(iommu->mmio_base + MMIO_EXT_FEATURES); + late_iommu_features_init(iommu); if (iommu_feature(iommu, FEATURE_GT)) { int glxval; @@ -2063,30 +2129,6 @@ } } -/* called when we find an exclusion range definition in ACPI */ -static int __init init_exclusion_range(struct ivmd_header *m) -{ - int i; - - switch (m->type) { - case ACPI_IVMD_TYPE: - set_device_exclusion_range(m->devid, m); - break; - case ACPI_IVMD_TYPE_ALL: - for (i = 0; i <= amd_iommu_last_bdf; ++i) - set_device_exclusion_range(i, m); - break; - case ACPI_IVMD_TYPE_RANGE: - for (i = m->devid; i <= m->aux; ++i) - set_device_exclusion_range(i, m); - break; - default: - break; - } - - return 0; -} - /* called for unity map ACPI definition */ static int __init init_unity_map_range(struct ivmd_header *m) { @@ -2097,9 +2139,6 @@ if (e == NULL) return -ENOMEM; - if (m->flags & IVMD_FLAG_EXCL_RANGE) - init_exclusion_range(m); - switch (m->type) { default: kfree(e); @@ -2123,6 +2162,16 @@ e->address_end = e->address_start + PAGE_ALIGN(m->range_length); e->prot = m->flags >> 1; + /* + * Treat per-device exclusion ranges as r/w unity-mapped regions + * since some buggy BIOSes might lead to the overwritten exclusion + * range (exclusion_start and exclusion_length members). This + * happens when there are multiple exclusion ranges (IVMD entries) + * defined in ACPI table. + */ + if (m->flags & IVMD_FLAG_EXCL_RANGE) + e->prot = (IVMD_FLAG_IW | IVMD_FLAG_IR) >> 1; + DUMP_printk("%s devid_start: %02x:%02x.%x devid_end: %02x:%02x.%x" " range_start: %016llx range_end: %016llx flags: %x\n", s, PCI_BUS_NUM(e->devid_start), PCI_SLOT(e->devid_start), @@ -2490,6 +2539,11 @@ free_unity_maps(); } +static void __init ivinfo_init(void *ivrs) +{ + amd_iommu_ivinfo = *((u32 *)(ivrs + IOMMU_IVINFO_OFFSET)); +} + /* * This is the hardware init function for AMD IOMMU in the system. * This function is called either from amd_iommu_init or from the interrupt @@ -2544,6 +2598,8 @@ if (ret) goto out; + ivinfo_init(ivrs_base); + amd_iommu_target_ivhd_type = get_highest_supported_ivhd_type(ivrs_base); DUMP_printk("Using IVHD type %#x\n", amd_iommu_target_ivhd_type); --- linux-5.8.0.orig/drivers/iommu/amd/iommu.c +++ linux-5.8.0/drivers/iommu/amd/iommu.c @@ -1412,6 +1412,10 @@ bool ret = true; u64 *pte, root; + pte = (void *)get_zeroed_page(gfp); + if (!pte) + return false; + spin_lock_irqsave(&domain->lock, flags); amd_iommu_domain_get_pgtable(domain, &pgtable); @@ -1423,10 +1427,6 @@ if (WARN_ON_ONCE(pgtable.mode == PAGE_MODE_6_LEVEL)) goto out; - pte = (void *)get_zeroed_page(gfp); - if (!pte) - goto out; - *pte = PM_LEVEL_PDE(pgtable.mode, iommu_virt_to_phys(pgtable.root)); pgtable.root = pte; @@ -1441,10 +1441,12 @@ root = amd_iommu_domain_encode_pgtable(pte, pgtable.mode); atomic64_set(&domain->pt_root, root); + pte = NULL; ret = true; out: spin_unlock_irqrestore(&domain->lock, flags); + free_page((unsigned long)pte); return ret; } @@ -2650,7 +2652,12 @@ if (!dev_data) return 0; - if (dev_data->iommu_v2) + /* + * Do not identity map IOMMUv2 capable devices when memory encryption is + * active, because some of those devices (AMD GPUs) don't have the + * encryption bit in their DMA-mask and require remapping. + */ + if (!mem_encrypt_active() && dev_data->iommu_v2) return IOMMU_DOMAIN_IDENTITY; return 0; @@ -3283,6 +3290,7 @@ static int modify_irte_ga(u16 devid, int index, struct irte_ga *irte, struct amd_ir_data *data) { + bool ret; struct irq_remap_table *table; struct amd_iommu *iommu; unsigned long flags; @@ -3300,10 +3308,18 @@ entry = (struct irte_ga *)table->table; entry = &entry[index]; - entry->lo.fields_remap.valid = 0; - entry->hi.val = irte->hi.val; - entry->lo.val = irte->lo.val; - entry->lo.fields_remap.valid = 1; + + ret = cmpxchg_double(&entry->lo.val, &entry->hi.val, + entry->lo.val, entry->hi.val, + irte->lo.val, irte->hi.val); + /* + * We use cmpxchg16 to atomically update the 128-bit IRTE, + * and it cannot be updated by the hardware or other processors + * behind us, so the return value of cmpxchg16 should be the + * same as the old value. + */ + WARN_ON(!ret); + if (data) data->ref = entry; @@ -3817,14 +3833,18 @@ { struct amd_ir_data *ir_data = (struct amd_ir_data *)data; struct irte_ga *entry = (struct irte_ga *) ir_data->entry; + u64 valid; if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) || !entry || entry->lo.fields_vapic.guest_mode) return 0; + valid = entry->lo.fields_vapic.valid; + entry->lo.val = 0; entry->hi.val = 0; + entry->lo.fields_vapic.valid = valid; entry->lo.fields_vapic.guest_mode = 1; entry->lo.fields_vapic.ga_log_intr = 1; entry->hi.fields.ga_root_ptr = ir_data->ga_root_ptr; @@ -3841,14 +3861,18 @@ struct amd_ir_data *ir_data = (struct amd_ir_data *)data; struct irte_ga *entry = (struct irte_ga *) ir_data->entry; struct irq_cfg *cfg = ir_data->cfg; + u64 valid; if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) || !entry || !entry->lo.fields_vapic.guest_mode) return 0; + valid = entry->lo.fields_remap.valid; + entry->lo.val = 0; entry->hi.val = 0; + entry->lo.fields_remap.valid = valid; entry->lo.fields_remap.dm = apic->irq_dest_mode; entry->lo.fields_remap.int_type = apic->irq_delivery_mode; entry->hi.fields.vector = cfg->vector; --- linux-5.8.0.orig/drivers/iommu/amd/iommu_v2.c +++ linux-5.8.0/drivers/iommu/amd/iommu_v2.c @@ -737,6 +737,13 @@ might_sleep(); + /* + * When memory encryption is active the device is likely not in a + * direct-mapped domain. Forbid using IOMMUv2 functionality for now. + */ + if (mem_encrypt_active()) + return -ENODEV; + if (!amd_iommu_v2_supported()) return -ENODEV; --- linux-5.8.0.orig/drivers/iommu/arm-smmu-qcom.c +++ linux-5.8.0/drivers/iommu/arm-smmu-qcom.c @@ -69,6 +69,10 @@ { struct qcom_smmu *qsmmu; + /* Check to make sure qcom_scm has finished probing */ + if (!qcom_scm_is_available()) + return ERR_PTR(-EPROBE_DEFER); + qsmmu = devm_kzalloc(smmu->dev, sizeof(*qsmmu), GFP_KERNEL); if (!qsmmu) return ERR_PTR(-ENOMEM); --- linux-5.8.0.orig/drivers/iommu/arm-smmu-v3.c +++ linux-5.8.0/drivers/iommu/arm-smmu-v3.c @@ -2878,7 +2878,7 @@ { struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - arm_smmu_tlb_inv_range(gather->start, gather->end - gather->start, + arm_smmu_tlb_inv_range(gather->start, gather->end - gather->start + 1, gather->pgsize, true, smmu_domain); } --- linux-5.8.0.orig/drivers/iommu/dma-iommu.c +++ linux-5.8.0/drivers/iommu/dma-iommu.c @@ -1035,8 +1035,8 @@ if (IS_ENABLED(CONFIG_DMA_DIRECT_REMAP) && !gfpflags_allow_blocking(gfp) && !coherent) - cpu_addr = dma_alloc_from_pool(dev, PAGE_ALIGN(size), &page, - gfp); + page = dma_alloc_from_pool(dev, PAGE_ALIGN(size), &cpu_addr, + gfp, NULL); else cpu_addr = iommu_dma_alloc_pages(dev, size, &page, gfp, attrs); if (!cpu_addr) --- linux-5.8.0.orig/drivers/iommu/exynos-iommu.c +++ linux-5.8.0/drivers/iommu/exynos-iommu.c @@ -1295,13 +1295,17 @@ return -ENODEV; data = platform_get_drvdata(sysmmu); - if (!data) + if (!data) { + put_device(&sysmmu->dev); return -ENODEV; + } if (!owner) { owner = kzalloc(sizeof(*owner), GFP_KERNEL); - if (!owner) + if (!owner) { + put_device(&sysmmu->dev); return -ENOMEM; + } INIT_LIST_HEAD(&owner->controllers); mutex_init(&owner->rpm_lock); --- linux-5.8.0.orig/drivers/iommu/intel/dmar.c +++ linux-5.8.0/drivers/iommu/intel/dmar.c @@ -964,7 +964,8 @@ warn_invalid_dmar(phys_addr, " returns all ones"); goto unmap; } - iommu->vccap = dmar_readq(iommu->reg + DMAR_VCCAP_REG); + if (ecap_vcs(iommu->ecap)) + iommu->vccap = dmar_readq(iommu->reg + DMAR_VCCAP_REG); /* the registers might be more than one page */ map_size = max_t(int, ecap_max_iotlb_offset(iommu->ecap), @@ -1024,8 +1025,8 @@ { struct intel_iommu *iommu; u32 ver, sts; - int agaw = 0; - int msagaw = 0; + int agaw = -1; + int msagaw = -1; int err; if (!drhd->reg_base_addr) { @@ -1050,17 +1051,28 @@ } err = -EINVAL; - agaw = iommu_calculate_agaw(iommu); - if (agaw < 0) { - pr_err("Cannot get a valid agaw for iommu (seq_id = %d)\n", - iommu->seq_id); - goto err_unmap; - } - msagaw = iommu_calculate_max_sagaw(iommu); - if (msagaw < 0) { - pr_err("Cannot get a valid max agaw for iommu (seq_id = %d)\n", - iommu->seq_id); - goto err_unmap; + if (cap_sagaw(iommu->cap) == 0) { + pr_info("%s: No supported address widths. Not attempting DMA translation.\n", + iommu->name); + drhd->ignored = 1; + } + + if (!drhd->ignored) { + agaw = iommu_calculate_agaw(iommu); + if (agaw < 0) { + pr_err("Cannot get a valid agaw for iommu (seq_id = %d)\n", + iommu->seq_id); + drhd->ignored = 1; + } + } + if (!drhd->ignored) { + msagaw = iommu_calculate_max_sagaw(iommu); + if (msagaw < 0) { + pr_err("Cannot get a valid max agaw for iommu (seq_id = %d)\n", + iommu->seq_id); + drhd->ignored = 1; + agaw = -1; + } } iommu->agaw = agaw; iommu->msagaw = msagaw; @@ -1087,7 +1099,12 @@ raw_spin_lock_init(&iommu->register_lock); - if (intel_iommu_enabled) { + /* + * 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. + */ + if (intel_iommu_enabled && !drhd->ignored) { err = iommu_device_sysfs_add(&iommu->iommu, NULL, intel_iommu_groups, "%s", iommu->name); @@ -1102,6 +1119,7 @@ } drhd->iommu = iommu; + iommu->drhd = drhd; return 0; @@ -1116,7 +1134,7 @@ static void free_iommu(struct intel_iommu *iommu) { - if (intel_iommu_enabled) { + if (intel_iommu_enabled && iommu->iommu.ops) { iommu_device_unregister(&iommu->iommu); iommu_device_sysfs_remove(&iommu->iommu); } @@ -1421,8 +1439,8 @@ int mask = ilog2(__roundup_pow_of_two(npages)); unsigned long align = (1ULL << (VTD_PAGE_SHIFT + mask)); - if (WARN_ON_ONCE(!ALIGN(addr, align))) - addr &= ~(align - 1); + if (WARN_ON_ONCE(!IS_ALIGNED(addr, align))) + addr = ALIGN_DOWN(addr, align); desc.qw0 = QI_EIOTLB_PASID(pasid) | QI_EIOTLB_DID(did) | @@ -1458,9 +1476,26 @@ * Max Invs Pending (MIP) is set to 0 for now until we have DIT in * ECAP. */ - desc.qw1 |= addr & ~mask; - if (size_order) + if (!IS_ALIGNED(addr, VTD_PAGE_SIZE << size_order)) + pr_warn_ratelimited("Invalidate non-aligned address %llx, order %d\n", + addr, size_order); + + /* Take page address */ + desc.qw1 = QI_DEV_EIOTLB_ADDR(addr); + + if (size_order) { + /* + * Existing 0s in address below size_order may be the least + * significant bit, we must set them to 1s to avoid having + * smaller size than desired. + */ + desc.qw1 |= GENMASK_ULL(size_order + VTD_PAGE_SHIFT - 1, + VTD_PAGE_SHIFT); + /* Clear size_order bit to indicate size */ + desc.qw1 &= ~mask; + /* Set the S bit to indicate flushing more than 1 page */ desc.qw1 |= QI_DEV_EIOTLB_SIZE; + } qi_submit_sync(iommu, &desc, 1, 0); } --- linux-5.8.0.orig/drivers/iommu/intel/intel-pasid.h +++ linux-5.8.0/drivers/iommu/intel/intel-pasid.h @@ -30,8 +30,8 @@ #define VCMD_VRSP_IP 0x1 #define VCMD_VRSP_SC(e) (((e) >> 1) & 0x3) #define VCMD_VRSP_SC_SUCCESS 0 -#define VCMD_VRSP_SC_NO_PASID_AVAIL 1 -#define VCMD_VRSP_SC_INVALID_PASID 1 +#define VCMD_VRSP_SC_NO_PASID_AVAIL 2 +#define VCMD_VRSP_SC_INVALID_PASID 2 #define VCMD_VRSP_RESULT_PASID(e) (((e) >> 8) & 0xfffff) #define VCMD_CMD_OPERAND(e) ((e) << 8) /* --- linux-5.8.0.orig/drivers/iommu/intel/iommu.c +++ linux-5.8.0/drivers/iommu/intel/iommu.c @@ -67,8 +67,8 @@ #define MAX_AGAW_WIDTH 64 #define MAX_AGAW_PFN_WIDTH (MAX_AGAW_WIDTH - VTD_PAGE_SHIFT) -#define __DOMAIN_MAX_PFN(gaw) ((((uint64_t)1) << (gaw-VTD_PAGE_SHIFT)) - 1) -#define __DOMAIN_MAX_ADDR(gaw) ((((uint64_t)1) << gaw) - 1) +#define __DOMAIN_MAX_PFN(gaw) ((((uint64_t)1) << ((gaw) - VTD_PAGE_SHIFT)) - 1) +#define __DOMAIN_MAX_ADDR(gaw) ((((uint64_t)1) << (gaw)) - 1) /* We limit DOMAIN_MAX_PFN to fit in an unsigned long, and DOMAIN_MAX_ADDR to match. That way, we can use 'unsigned long' for PFNs with impunity. */ @@ -123,29 +123,29 @@ return (level - 1) * LEVEL_STRIDE; } -static inline int pfn_level_offset(unsigned long pfn, int level) +static inline int pfn_level_offset(u64 pfn, int level) { return (pfn >> level_to_offset_bits(level)) & LEVEL_MASK; } -static inline unsigned long level_mask(int level) +static inline u64 level_mask(int level) { - return -1UL << level_to_offset_bits(level); + return -1ULL << level_to_offset_bits(level); } -static inline unsigned long level_size(int level) +static inline u64 level_size(int level) { - return 1UL << level_to_offset_bits(level); + return 1ULL << level_to_offset_bits(level); } -static inline unsigned long align_to_level(unsigned long pfn, int level) +static inline u64 align_to_level(u64 pfn, int level) { return (pfn + level_size(level) - 1) & level_mask(level); } static inline unsigned long lvl_to_nr_pages(unsigned int lvl) { - return 1 << min_t(int, (lvl - 1) * LEVEL_STRIDE, MAX_AGAW_PFN_WIDTH); + return 1UL << min_t(int, (lvl - 1) * LEVEL_STRIDE, MAX_AGAW_PFN_WIDTH); } /* VT-d pages must always be _smaller_ than MM pages. Otherwise things @@ -179,7 +179,7 @@ * (used when kernel is launched w/ TXT) */ static int force_on = 0; -int intel_iommu_tboot_noforce; +static int intel_iommu_tboot_noforce; static int no_platform_optin; #define ROOT_ENTRY_NR (VTD_PAGE_SIZE/sizeof(struct root_entry)) @@ -356,6 +356,7 @@ static int intel_iommu_superpage = 1; static int iommu_identity_mapping; static int intel_no_bounce; +static int iommu_skip_te_disable; #define IDENTMAP_GFX 2 #define IDENTMAP_AZALIA 4 @@ -705,6 +706,18 @@ domain_update_iommu_coherency(domain); domain->iommu_snooping = domain_update_iommu_snooping(NULL); domain->iommu_superpage = domain_update_iommu_superpage(domain, NULL); + + /* + * First-level translation restricts the input-address to a + * canonical address (i.e., address bits 63:N have the same + * value as address bit [N-1], where N is 48-bits with 4-level + * paging and 57-bits with 5-level paging). Hence, skip bit + * [N-1]. + */ + if (domain_use_first_level(domain)) + domain->domain.geometry.aperture_end = __DOMAIN_MAX_ADDR(domain->gaw - 1); + else + domain->domain.geometry.aperture_end = __DOMAIN_MAX_ADDR(domain->gaw); } struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus, @@ -1629,6 +1642,10 @@ u32 sts; unsigned long flag; + if (iommu_skip_te_disable && iommu->drhd->gfx_dedicated && + (cap_read_drain(iommu->cap) || cap_write_drain(iommu->cap))) + return; + raw_spin_lock_irqsave(&iommu->register_lock, flag); iommu->gcmd &= ~DMA_GCMD_TE; writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); @@ -1746,7 +1763,7 @@ if (ecap_prs(iommu->ecap)) intel_svm_finish_prq(iommu); } - if (ecap_vcs(iommu->ecap) && vccap_pasid(iommu->vccap)) + if (vccap_pasid(iommu->vccap)) ioasid_unregister_allocator(&iommu->pasid_allocator); #endif @@ -2438,6 +2455,9 @@ { struct device_domain_info *info; + if (unlikely(!dev || !dev->iommu)) + return NULL; + if (unlikely(attach_deferred(dev) || iommu_dummy(dev))) return NULL; @@ -2560,7 +2580,7 @@ } if (info->ats_supported && ecap_prs(iommu->ecap) && - pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI)) + pci_pri_supported(pdev)) info->pri_supported = 1; } } @@ -2612,7 +2632,7 @@ } /* Setup the PASID entry for requests without PASID: */ - spin_lock(&iommu->lock); + spin_lock_irqsave(&iommu->lock, flags); if (hw_pass_through && domain_type_is_si(domain)) ret = intel_pasid_setup_pass_through(iommu, domain, dev, PASID_RID2PASID); @@ -2622,7 +2642,7 @@ else ret = intel_pasid_setup_second_level(iommu, domain, dev, PASID_RID2PASID); - spin_unlock(&iommu->lock); + spin_unlock_irqrestore(&iommu->lock, flags); if (ret) { dev_err(dev, "Setup RID2PASID failed\n"); dmar_remove_one_dev_info(dev); @@ -3122,7 +3142,7 @@ * is active. All vIOMMU allocators will eventually be calling the same * host allocator. */ - if (!ecap_vcs(iommu->ecap) || !vccap_pasid(iommu->vccap)) + if (!vccap_pasid(iommu->vccap)) return; pr_info("Register custom PASID allocator\n"); @@ -3248,6 +3268,11 @@ if (!ecap_pass_through(iommu->ecap)) hw_pass_through = 0; + + if (!intel_iommu_strict && cap_caching_mode(iommu->cap)) { + pr_warn("Disable batched IOTLB flush due to virtualization"); + intel_iommu_strict = 1; + } intel_svm_check(iommu); } @@ -4039,6 +4064,7 @@ /* This IOMMU has *only* gfx devices. Either bypass it or set the gfx_mapped flag, as appropriate */ + drhd->gfx_dedicated = 1; if (!dmar_map_gfx) { drhd->ignored = 1; for_each_active_dev_scope(drhd->devices, @@ -4823,7 +4849,8 @@ * Intel IOMMU is required for a TXT/tboot launch or platform * opt in, so enforce that. */ - force_on = tboot_force_iommu() || platform_optin_force_iommu(); + force_on = (!intel_iommu_tboot_noforce && tboot_force_iommu()) || + platform_optin_force_iommu(); if (iommu_init_mempool()) { if (force_on) @@ -5330,6 +5357,7 @@ aux_domain_remove_dev(to_dmar_domain(domain), dev); } +#ifdef CONFIG_INTEL_IOMMU_SVM /* * 2D array for converting and sanitizing IOMMU generic TLB granularity to * VT-d granularity. Invalidation is typically included in the unmap operation @@ -5376,7 +5404,6 @@ return order_base_2(nr_pages); } -#ifdef CONFIG_INTEL_IOMMU_SVM static int intel_iommu_sva_invalidate(struct iommu_domain *domain, struct device *dev, struct iommu_cache_invalidate_info *inv_info) @@ -5446,13 +5473,12 @@ switch (BIT(cache_type)) { case IOMMU_CACHE_INV_TYPE_IOTLB: + /* HW will ignore LSB bits based on address mask */ if (inv_info->granularity == IOMMU_INV_GRANU_ADDR && size && (inv_info->addr_info.addr & ((BIT(VTD_PAGE_SHIFT + size)) - 1))) { - pr_err_ratelimited("Address out of range, 0x%llx, size order %llu\n", + pr_err_ratelimited("User address not aligned, 0x%llx, size order %llu\n", inv_info->addr_info.addr, size); - ret = -ERANGE; - goto out_unlock; } /* @@ -6182,6 +6208,27 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0062, quirk_calpella_no_shadow_gtt); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x006a, quirk_calpella_no_shadow_gtt); +static void quirk_igfx_skip_te_disable(struct pci_dev *dev) +{ + unsigned short ver; + + if (!IS_GFX_DEVICE(dev)) + return; + + ver = (dev->device >> 8) & 0xff; + if (ver != 0x45 && ver != 0x46 && ver != 0x4c && + ver != 0x4e && ver != 0x8a && ver != 0x98 && + ver != 0x9a) + return; + + if (risky_device(dev)) + return; + + pci_info(dev, "Skip IOMMU disabling for graphics\n"); + iommu_skip_te_disable = 1; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_igfx_skip_te_disable); + /* On Tylersburg chipsets, some BIOSes have been known to enable the ISOCH DMAR unit for the Azalia sound device, but not give it any TLB entries, which causes it to deadlock. Check for that. We do --- linux-5.8.0.orig/drivers/iommu/intel/irq_remapping.c +++ linux-5.8.0/drivers/iommu/intel/irq_remapping.c @@ -507,12 +507,18 @@ /* Enable interrupt-remapping */ iommu->gcmd |= DMA_GCMD_IRE; - iommu->gcmd &= ~DMA_GCMD_CFI; /* Block compatibility-format MSIs */ writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); - IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, readl, (sts & DMA_GSTS_IRES), sts); + /* Block compatibility-format MSIs */ + if (sts & DMA_GSTS_CFIS) { + iommu->gcmd &= ~DMA_GCMD_CFI; + writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); + IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, + readl, !(sts & DMA_GSTS_CFIS), sts); + } + /* * With CFI clear in the Global Command register, we should be * protected from dangerous (i.e. compatibility) interrupts @@ -628,13 +634,21 @@ static void intel_teardown_irq_remapping(struct intel_iommu *iommu) { + struct fwnode_handle *fn; + if (iommu && iommu->ir_table) { if (iommu->ir_msi_domain) { + fn = iommu->ir_msi_domain->fwnode; + irq_domain_remove(iommu->ir_msi_domain); + irq_domain_free_fwnode(fn); iommu->ir_msi_domain = NULL; } if (iommu->ir_domain) { + fn = iommu->ir_domain->fwnode; + irq_domain_remove(iommu->ir_domain); + irq_domain_free_fwnode(fn); iommu->ir_domain = NULL; } free_pages((unsigned long)iommu->ir_table->base, @@ -1386,6 +1400,8 @@ irq_data = irq_domain_get_irq_data(domain, virq + i); irq_cfg = irqd_cfg(irq_data); if (!irq_data || !irq_cfg) { + if (!i) + kfree(data); ret = -EINVAL; goto out_free_data; } --- linux-5.8.0.orig/drivers/iommu/intel/svm.c +++ linux-5.8.0/drivers/iommu/intel/svm.c @@ -117,8 +117,10 @@ iommu->flags |= VTD_FLAG_SVM_CAPABLE; } -static void intel_flush_svm_range_dev (struct intel_svm *svm, struct intel_svm_dev *sdev, - unsigned long address, unsigned long pages, int ih) +static void __flush_svm_range_dev(struct intel_svm *svm, + struct intel_svm_dev *sdev, + unsigned long address, + unsigned long pages, int ih) { struct qi_desc desc; @@ -141,7 +143,7 @@ } desc.qw2 = 0; desc.qw3 = 0; - qi_submit_sync(svm->iommu, &desc, 1, 0); + qi_submit_sync(sdev->iommu, &desc, 1, 0); if (sdev->dev_iotlb) { desc.qw0 = QI_DEV_EIOTLB_PASID(svm->pasid) | @@ -165,7 +167,23 @@ } desc.qw2 = 0; desc.qw3 = 0; - qi_submit_sync(svm->iommu, &desc, 1, 0); + qi_submit_sync(sdev->iommu, &desc, 1, 0); + } +} + +static void intel_flush_svm_range_dev(struct intel_svm *svm, + struct intel_svm_dev *sdev, + unsigned long address, + unsigned long pages, int ih) +{ + unsigned long shift = ilog2(__roundup_pow_of_two(pages)); + unsigned long align = (1ULL << (VTD_PAGE_SHIFT + shift)); + unsigned long start = ALIGN_DOWN(address, align); + unsigned long end = ALIGN(address + (pages << VTD_PAGE_SHIFT), align); + + while (start < end) { + __flush_svm_range_dev(svm, sdev, start, align >> VTD_PAGE_SHIFT, ih); + start += align; } } @@ -210,7 +228,7 @@ */ rcu_read_lock(); list_for_each_entry_rcu(sdev, &svm->devs, list) - intel_pasid_tear_down_entry(svm->iommu, sdev->dev, + intel_pasid_tear_down_entry(sdev->iommu, sdev->dev, svm->pasid, true); rcu_read_unlock(); @@ -235,6 +253,7 @@ struct dmar_domain *dmar_domain; struct intel_svm_dev *sdev; struct intel_svm *svm; + unsigned long iflags; int ret = 0; if (WARN_ON(!iommu) || !data) @@ -277,20 +296,16 @@ goto out; } + /* + * Do not allow multiple bindings of the same device-PASID since + * there is only one SL page tables per PASID. We may revisit + * once sharing PGD across domains are supported. + */ for_each_svm_dev(sdev, svm, dev) { - /* - * For devices with aux domains, we should allow - * multiple bind calls with the same PASID and pdev. - */ - if (iommu_dev_feature_enabled(dev, - IOMMU_DEV_FEAT_AUX)) { - sdev->users++; - } else { - dev_warn_ratelimited(dev, - "Already bound with PASID %u\n", - svm->pasid); - ret = -EBUSY; - } + dev_warn_ratelimited(dev, + "Already bound with PASID %u\n", + svm->pasid); + ret = -EBUSY; goto out; } } else { @@ -321,6 +336,7 @@ goto out; } sdev->dev = dev; + sdev->iommu = iommu; /* Only count users if device has aux domains */ if (iommu_dev_feature_enabled(dev, IOMMU_DEV_FEAT_AUX)) @@ -339,12 +355,12 @@ * each bind of a new device even with an existing PASID, we need to * call the nested mode setup function here. */ - spin_lock(&iommu->lock); + spin_lock_irqsave(&iommu->lock, iflags); ret = intel_pasid_setup_nested(iommu, dev, (pgd_t *)(uintptr_t)data->gpgd, data->hpasid, &data->vtd, dmar_domain, data->addr_width); - spin_unlock(&iommu->lock); + spin_unlock_irqrestore(&iommu->lock, iflags); if (ret) { dev_err_ratelimited(dev, "Failed to set up PASID %llu in nested mode, Err %d\n", data->hpasid, ret); @@ -434,6 +450,7 @@ struct device_domain_info *info; struct intel_svm_dev *sdev; struct intel_svm *svm = NULL; + unsigned long iflags; int pasid_max; int ret; @@ -494,6 +511,7 @@ goto out; } sdev->dev = dev; + sdev->iommu = iommu; ret = intel_iommu_enable_pasid(iommu, dev); if (ret) { @@ -523,7 +541,6 @@ kfree(sdev); goto out; } - svm->iommu = iommu; if (pasid_max > intel_pasid_max_id) pasid_max = intel_pasid_max_id; @@ -553,14 +570,14 @@ } } - spin_lock(&iommu->lock); + spin_lock_irqsave(&iommu->lock, iflags); ret = intel_pasid_setup_first_level(iommu, dev, mm ? mm->pgd : init_mm.pgd, svm->pasid, FLPT_DEFAULT_DID, (mm ? 0 : PASID_FLAG_SUPERVISOR_MODE) | (cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0)); - spin_unlock(&iommu->lock); + spin_unlock_irqrestore(&iommu->lock, iflags); if (ret) { if (mm) mmu_notifier_unregister(&svm->notifier, mm); @@ -576,14 +593,14 @@ * Binding a new device with existing PASID, need to setup * the PASID entry. */ - spin_lock(&iommu->lock); + spin_lock_irqsave(&iommu->lock, iflags); ret = intel_pasid_setup_first_level(iommu, dev, mm ? mm->pgd : init_mm.pgd, svm->pasid, FLPT_DEFAULT_DID, (mm ? 0 : PASID_FLAG_SUPERVISOR_MODE) | (cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0)); - spin_unlock(&iommu->lock); + spin_unlock_irqrestore(&iommu->lock, iflags); if (ret) { kfree(sdev); goto out; @@ -917,7 +934,7 @@ resp.qw0 = QI_PGRP_PASID(req->pasid) | QI_PGRP_DID(req->rid) | QI_PGRP_PASID_P(req->pasid_present) | - QI_PGRP_PDP(req->pasid_present) | + QI_PGRP_PDP(req->priv_data_present) | QI_PGRP_RESP_CODE(result) | QI_PGRP_RESP_TYPE; resp.qw1 = QI_PGRP_IDX(req->prg_index) | @@ -939,8 +956,17 @@ * Clear the page request overflow bit and wake up all threads that * are waiting for the completion of this handling. */ - if (readl(iommu->reg + DMAR_PRS_REG) & DMA_PRS_PRO) - writel(DMA_PRS_PRO, iommu->reg + DMAR_PRS_REG); + if (readl(iommu->reg + DMAR_PRS_REG) & DMA_PRS_PRO) { + pr_info_ratelimited("IOMMU: %s: PRQ overflow detected\n", + iommu->name); + head = dmar_readq(iommu->reg + DMAR_PQH_REG) & PRQ_RING_MASK; + tail = dmar_readq(iommu->reg + DMAR_PQT_REG) & PRQ_RING_MASK; + if (head == tail) { + writel(DMA_PRS_PRO, iommu->reg + DMAR_PRS_REG); + pr_info_ratelimited("IOMMU: %s: PRQ overflow cleared", + iommu->name); + } + } if (!completion_done(&iommu->prq_complete)) complete(&iommu->prq_complete); --- linux-5.8.0.orig/drivers/iommu/io-pgtable-arm.c +++ linux-5.8.0/drivers/iommu/io-pgtable-arm.c @@ -443,7 +443,13 @@ << ARM_LPAE_PTE_ATTRINDX_SHIFT); } - if (prot & IOMMU_CACHE) + /* + * Also Mali has its own notions of shareability wherein its Inner + * domain covers the cores within the GPU, and its Outer domain is + * "outside the GPU" (i.e. either the Inner or System domain in CPU + * terms, depending on coherency). + */ + if (prot & IOMMU_CACHE && data->iop.fmt != ARM_MALI_LPAE) pte |= ARM_LPAE_PTE_SH_IS; else pte |= ARM_LPAE_PTE_SH_OS; @@ -1052,6 +1058,9 @@ cfg->arm_mali_lpae_cfg.transtab = virt_to_phys(data->pgd) | ARM_MALI_LPAE_TTBR_READ_INNER | ARM_MALI_LPAE_TTBR_ADRMODE_TABLE; + if (cfg->coherent_walk) + cfg->arm_mali_lpae_cfg.transtab |= ARM_MALI_LPAE_TTBR_SHARE_OUTER; + return &data->iop; out_free_data: --- linux-5.8.0.orig/drivers/iommu/iommu.c +++ linux-5.8.0/drivers/iommu/iommu.c @@ -264,16 +264,18 @@ */ iommu_alloc_default_domain(group, dev); - if (group->default_domain) + if (group->default_domain) { ret = __iommu_attach_device(group->default_domain, dev); + if (ret) { + iommu_group_put(group); + goto err_release; + } + } iommu_create_device_direct_mappings(group, dev); iommu_group_put(group); - if (ret) - goto err_release; - if (ops->probe_finalize) ops->probe_finalize(dev); @@ -2216,9 +2218,6 @@ size -= pgsize; } - if (ops->iotlb_sync_map) - ops->iotlb_sync_map(domain); - /* unroll mapping in case something went wrong */ if (ret) iommu_unmap(domain, orig_iova, orig_size - size); @@ -2228,18 +2227,31 @@ return ret; } +static int _iommu_map(struct iommu_domain *domain, unsigned long iova, + phys_addr_t paddr, size_t size, int prot, gfp_t gfp) +{ + const struct iommu_ops *ops = domain->ops; + int ret; + + ret = __iommu_map(domain, iova, paddr, size, prot, gfp); + if (ret == 0 && ops->iotlb_sync_map) + ops->iotlb_sync_map(domain); + + return ret; +} + int iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot) { might_sleep(); - return __iommu_map(domain, iova, paddr, size, prot, GFP_KERNEL); + return _iommu_map(domain, iova, paddr, size, prot, GFP_KERNEL); } EXPORT_SYMBOL_GPL(iommu_map); int iommu_map_atomic(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot) { - return __iommu_map(domain, iova, paddr, size, prot, GFP_ATOMIC); + return _iommu_map(domain, iova, paddr, size, prot, GFP_ATOMIC); } EXPORT_SYMBOL_GPL(iommu_map_atomic); @@ -2323,6 +2335,7 @@ struct scatterlist *sg, unsigned int nents, int prot, gfp_t gfp) { + const struct iommu_ops *ops = domain->ops; size_t len = 0, mapped = 0; phys_addr_t start; unsigned int i = 0; @@ -2353,6 +2366,8 @@ sg = sg_next(sg); } + if (ops->iotlb_sync_map) + ops->iotlb_sync_map(domain); return mapped; out_err: --- linux-5.8.0.orig/drivers/iommu/iova.c +++ linux-5.8.0/drivers/iommu/iova.c @@ -811,7 +811,9 @@ for (i = 0 ; i < mag->size; ++i) { struct iova *iova = private_find_iova(iovad, mag->pfns[i]); - BUG_ON(!iova); + if (WARN_ON(!iova)) + continue; + private_free_iova(iovad, iova); } --- linux-5.8.0.orig/drivers/iommu/mtk_iommu.c +++ linux-5.8.0/drivers/iommu/mtk_iommu.c @@ -418,7 +418,7 @@ struct iommu_iotlb_gather *gather) { struct mtk_iommu_data *data = mtk_iommu_get_m4u_data(); - size_t length = gather->end - gather->start; + size_t length = gather->end - gather->start + 1; if (gather->start == ULONG_MAX) return; --- linux-5.8.0.orig/drivers/iommu/omap-iommu-debug.c +++ linux-5.8.0/drivers/iommu/omap-iommu-debug.c @@ -98,8 +98,11 @@ mutex_lock(&iommu_debug_lock); bytes = omap_iommu_dump_ctx(obj, p, count); + if (bytes < 0) + goto err; bytes = simple_read_from_buffer(userbuf, count, ppos, buf, bytes); +err: mutex_unlock(&iommu_debug_lock); kfree(buf); --- linux-5.8.0.orig/drivers/iommu/qcom_iommu.c +++ linux-5.8.0/drivers/iommu/qcom_iommu.c @@ -578,8 +578,10 @@ * index into qcom_iommu->ctxs: */ if (WARN_ON(asid < 1) || - WARN_ON(asid > qcom_iommu->num_ctxs)) + WARN_ON(asid > qcom_iommu->num_ctxs)) { + put_device(&iommu_pdev->dev); return -EINVAL; + } if (!dev_iommu_priv_get(dev)) { dev_iommu_priv_set(dev, qcom_iommu); @@ -588,8 +590,10 @@ * multiple different iommu devices. Multiple context * banks are ok, but multiple devices are not: */ - if (WARN_ON(qcom_iommu != dev_iommu_priv_get(dev))) + if (WARN_ON(qcom_iommu != dev_iommu_priv_get(dev))) { + put_device(&iommu_pdev->dev); return -EINVAL; + } } return iommu_fwspec_add_ids(dev, &asid, 1); --- linux-5.8.0.orig/drivers/irqchip/Kconfig +++ linux-5.8.0/drivers/irqchip/Kconfig @@ -458,7 +458,8 @@ Support for the i.MX IRQSTEER interrupt multiplexer/remapper. config IMX_INTMUX - def_bool y if ARCH_MXC || COMPILE_TEST + bool "i.MX INTMUX support" if COMPILE_TEST + default y if ARCH_MXC select IRQ_DOMAIN help Support for the i.MX INTMUX interrupt multiplexer. --- linux-5.8.0.orig/drivers/irqchip/irq-alpine-msi.c +++ linux-5.8.0/drivers/irqchip/irq-alpine-msi.c @@ -165,8 +165,7 @@ return 0; err_sgi: - while (--i >= 0) - irq_domain_free_irqs_parent(domain, virq, i); + irq_domain_free_irqs_parent(domain, virq, i - 1); alpine_msix_free_sgi(priv, sgi, nr_irqs); return err; } --- linux-5.8.0.orig/drivers/irqchip/irq-bcm7038-l1.c +++ linux-5.8.0/drivers/irqchip/irq-bcm7038-l1.c @@ -327,7 +327,11 @@ u32 val; /* Wakeup interrupt should only come from the boot cpu */ +#ifdef CONFIG_SMP boot_cpu = cpu_logical_map(0); +#else + boot_cpu = 0; +#endif list_for_each_entry(intc, &bcm7038_l1_intcs_list, list) { for (word = 0; word < intc->n_words; word++) { @@ -347,7 +351,11 @@ struct bcm7038_l1_chip *intc; int boot_cpu, word; +#ifdef CONFIG_SMP boot_cpu = cpu_logical_map(0); +#else + boot_cpu = 0; +#endif list_for_each_entry(intc, &bcm7038_l1_intcs_list, list) { for (word = 0; word < intc->n_words; word++) { --- linux-5.8.0.orig/drivers/irqchip/irq-gic-v3-its.c +++ linux-5.8.0/drivers/irqchip/irq-gic-v3-its.c @@ -42,7 +42,6 @@ #define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1ULL << 0) #define ITS_FLAGS_WORKAROUND_CAVIUM_22375 (1ULL << 1) #define ITS_FLAGS_WORKAROUND_CAVIUM_23144 (1ULL << 2) -#define ITS_FLAGS_SAVE_SUSPEND_STATE (1ULL << 3) #define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0) #define RDIST_FLAGS_RD_TABLES_PREALLOCATED (1 << 1) @@ -2814,7 +2813,7 @@ if (val & GICR_VPROPBASER_4_1_VALID) goto out; - gic_data_rdist()->vpe_table_mask = kzalloc(sizeof(cpumask_t), GFP_KERNEL); + gic_data_rdist()->vpe_table_mask = kzalloc(sizeof(cpumask_t), GFP_ATOMIC); if (!gic_data_rdist()->vpe_table_mask) return -ENOMEM; @@ -2881,7 +2880,7 @@ pr_debug("np = %d, npg = %lld, psz = %d, epp = %d, esz = %d\n", np, npg, psz, epp, esz); - page = alloc_pages(GFP_KERNEL | __GFP_ZERO, get_order(np * PAGE_SIZE)); + page = alloc_pages(GFP_ATOMIC | __GFP_ZERO, get_order(np * PAGE_SIZE)); if (!page) return -ENOMEM; @@ -3523,6 +3522,7 @@ msi_alloc_info_t *info = args; struct its_device *its_dev = info->scratchpad[0].ptr; struct its_node *its = its_dev->its; + struct irq_data *irqd; irq_hw_number_t hwirq; int err; int i; @@ -3542,7 +3542,9 @@ irq_domain_set_hwirq_and_chip(domain, virq + i, hwirq + i, &its_irq_chip, its_dev); - irqd_set_single_target(irq_desc_get_irq_data(irq_to_desc(virq + i))); + irqd = irq_get_irq_data(virq + i); + irqd_set_single_target(irqd); + irqd_set_affinity_on_activate(irqd); pr_debug("ID:%d pID:%d vID:%d\n", (int)(hwirq + i - its_dev->event_map.lpi_base), (int)(hwirq + i), virq + i); @@ -4087,18 +4089,22 @@ static void its_vpe_4_1_invall(struct its_vpe *vpe) { void __iomem *rdbase; + unsigned long flags; u64 val; + int cpu; val = GICR_INVALLR_V; val |= FIELD_PREP(GICR_INVALLR_VPEID, vpe->vpe_id); /* Target the redistributor this vPE is currently known on */ - raw_spin_lock(&gic_data_rdist_cpu(vpe->col_idx)->rd_lock); - rdbase = per_cpu_ptr(gic_rdists->rdist, vpe->col_idx)->rd_base; + cpu = vpe_to_cpuid_lock(vpe, &flags); + raw_spin_lock(&gic_data_rdist_cpu(cpu)->rd_lock); + rdbase = per_cpu_ptr(gic_rdists->rdist, cpu)->rd_base; gic_write_lpir(val, rdbase + GICR_INVALLR); wait_for_syncr(rdbase); - raw_spin_unlock(&gic_data_rdist_cpu(vpe->col_idx)->rd_lock); + raw_spin_unlock(&gic_data_rdist_cpu(cpu)->rd_lock); + vpe_to_cpuid_unlock(vpe, flags); } static int its_vpe_4_1_set_vcpu_affinity(struct irq_data *d, void *vcpu_info) @@ -4728,9 +4734,6 @@ list_for_each_entry(its, &its_nodes, entry) { void __iomem *base; - if (!(its->flags & ITS_FLAGS_SAVE_SUSPEND_STATE)) - continue; - base = its->base; its->ctlr_save = readl_relaxed(base + GITS_CTLR); err = its_force_quiescent(base); @@ -4749,9 +4752,6 @@ list_for_each_entry_continue_reverse(its, &its_nodes, entry) { void __iomem *base; - if (!(its->flags & ITS_FLAGS_SAVE_SUSPEND_STATE)) - continue; - base = its->base; writel_relaxed(its->ctlr_save, base + GITS_CTLR); } @@ -4771,9 +4771,6 @@ void __iomem *base; int i; - if (!(its->flags & ITS_FLAGS_SAVE_SUSPEND_STATE)) - continue; - base = its->base; /* @@ -4781,7 +4778,10 @@ * don't restore it since writing to CBASER or BASER * registers is undefined according to the GIC v3 ITS * Specification. + * + * Firmware resuming with the ITS enabled is terminally broken. */ + WARN_ON(readl_relaxed(base + GITS_CTLR) & GITS_CTLR_ENABLE); ret = its_force_quiescent(base); if (ret) { pr_err("ITS@%pa: failed to quiesce on resume: %d\n", @@ -5061,9 +5061,6 @@ ctlr |= GITS_CTLR_ImDe; writel_relaxed(ctlr, its->base + GITS_CTLR); - if (GITS_TYPER_HCC(typer)) - its->flags |= ITS_FLAGS_SAVE_SUSPEND_STATE; - err = its_init_domain(handle, its); if (err) goto out_free_tables; --- linux-5.8.0.orig/drivers/irqchip/irq-ingenic-tcu.c +++ linux-5.8.0/drivers/irqchip/irq-ingenic-tcu.c @@ -179,5 +179,6 @@ } IRQCHIP_DECLARE(jz4740_tcu_irq, "ingenic,jz4740-tcu", ingenic_tcu_irq_init); IRQCHIP_DECLARE(jz4725b_tcu_irq, "ingenic,jz4725b-tcu", ingenic_tcu_irq_init); +IRQCHIP_DECLARE(jz4760_tcu_irq, "ingenic,jz4760-tcu", ingenic_tcu_irq_init); IRQCHIP_DECLARE(jz4770_tcu_irq, "ingenic,jz4770-tcu", ingenic_tcu_irq_init); IRQCHIP_DECLARE(x1000_tcu_irq, "ingenic,x1000-tcu", ingenic_tcu_irq_init); --- linux-5.8.0.orig/drivers/irqchip/irq-ingenic.c +++ linux-5.8.0/drivers/irqchip/irq-ingenic.c @@ -125,7 +125,7 @@ irq_reg_writel(gc, IRQ_MSK(32), JZ_REG_INTC_SET_MASK); } - if (request_irq(parent_irq, intc_cascade, 0, + if (request_irq(parent_irq, intc_cascade, IRQF_NO_SUSPEND, "SoC intc cascade interrupt", NULL)) pr_err("Failed to register SoC intc cascade interrupt\n"); return 0; @@ -155,6 +155,7 @@ { return ingenic_intc_of_init(node, 2); } +IRQCHIP_DECLARE(jz4760_intc, "ingenic,jz4760-intc", intc_2chip_of_init); IRQCHIP_DECLARE(jz4770_intc, "ingenic,jz4770-intc", intc_2chip_of_init); IRQCHIP_DECLARE(jz4775_intc, "ingenic,jz4775-intc", intc_2chip_of_init); IRQCHIP_DECLARE(jz4780_intc, "ingenic,jz4780-intc", intc_2chip_of_init); --- linux-5.8.0.orig/drivers/irqchip/irq-loongson-htvec.c +++ linux-5.8.0/drivers/irqchip/irq-loongson-htvec.c @@ -109,11 +109,14 @@ static int htvec_domain_alloc(struct irq_domain *domain, unsigned int virq, unsigned int nr_irqs, void *arg) { + int ret; unsigned long hwirq; unsigned int type, i; struct htvec *priv = domain->host_data; - irq_domain_translate_onecell(domain, arg, &hwirq, &type); + ret = irq_domain_translate_onecell(domain, arg, &hwirq, &type); + if (ret) + return ret; for (i = 0; i < nr_irqs; i++) { irq_domain_set_info(domain, virq + i, hwirq + i, &htvec_irq_chip, @@ -149,7 +152,7 @@ /* Clear IRQ cause registers, mask all interrupts */ for (idx = 0; idx < VEC_REG_COUNT; idx++) { writel_relaxed(0x0, priv->base + HTVEC_EN_OFF + 4 * idx); - writel_relaxed(0xFFFFFFFF, priv->base); + writel_relaxed(0xFFFFFFFF, priv->base + 4 * idx); } } @@ -170,7 +173,7 @@ goto free_priv; } - /* Interrupt may come from any of the 4 interrupt line */ + /* Interrupt may come from any of the 8 interrupt lines */ for (i = 0; i < HTVEC_MAX_PARENT_IRQ; i++) { parent_irq[i] = irq_of_parse_and_map(node, i); if (parent_irq[i] <= 0) @@ -192,7 +195,7 @@ if (!priv->htvec_domain) { pr_err("Failed to create IRQ domain\n"); err = -ENOMEM; - goto iounmap_base; + goto irq_dispose; } htvec_reset(priv); @@ -203,6 +206,9 @@ return 0; +irq_dispose: + for (; i > 0; i--) + irq_dispose_mapping(parent_irq[i - 1]); iounmap_base: iounmap(priv->base); free_priv: --- linux-5.8.0.orig/drivers/irqchip/irq-loongson-liointc.c +++ linux-5.8.0/drivers/irqchip/irq-loongson-liointc.c @@ -60,7 +60,7 @@ if (!pending) { /* Always blame LPC IRQ if we have that bug */ if (handler->priv->has_lpc_irq_errata && - (handler->parent_int_map & ~gc->mask_cache & + (handler->parent_int_map & gc->mask_cache & BIT(LIOINTC_ERRATA_IRQ))) pending = BIT(LIOINTC_ERRATA_IRQ); else @@ -114,6 +114,7 @@ liointc_set_bit(gc, LIOINTC_REG_INTC_POL, mask, false); break; default: + irq_gc_unlock_irqrestore(gc, flags); return -EINVAL; } irq_gc_unlock_irqrestore(gc, flags); @@ -131,11 +132,11 @@ irq_gc_lock_irqsave(gc, flags); /* Disable all at first */ writel(0xffffffff, gc->reg_base + LIOINTC_REG_INTC_DISABLE); - /* Revert map cache */ + /* Restore map cache */ for (i = 0; i < LIOINTC_CHIP_IRQ; i++) writeb(priv->map_cache[i], gc->reg_base + i); - /* Revert mask cache */ - writel(~gc->mask_cache, gc->reg_base + LIOINTC_REG_INTC_ENABLE); + /* Restore mask cache */ + writel(gc->mask_cache, gc->reg_base + LIOINTC_REG_INTC_ENABLE); irq_gc_unlock_irqrestore(gc, flags); } @@ -243,7 +244,7 @@ ct->chip.irq_mask_ack = irq_gc_mask_disable_reg; ct->chip.irq_set_type = liointc_set_type; - gc->mask_cache = 0xffffffff; + gc->mask_cache = 0; priv->gc = gc; for (i = 0; i < LIOINTC_NUM_PARENT; i++) { --- linux-5.8.0.orig/drivers/irqchip/irq-loongson-pch-msi.c +++ linux-5.8.0/drivers/irqchip/irq-loongson-pch-msi.c @@ -230,7 +230,7 @@ goto err_priv; } - priv->msi_map = bitmap_alloc(priv->num_irqs, GFP_KERNEL); + priv->msi_map = bitmap_zalloc(priv->num_irqs, GFP_KERNEL); if (!priv->msi_map) { ret = -ENOMEM; goto err_priv; --- linux-5.8.0.orig/drivers/irqchip/irq-loongson-pch-pic.c +++ linux-5.8.0/drivers/irqchip/irq-loongson-pch-pic.c @@ -64,15 +64,6 @@ raw_spin_unlock(&priv->pic_lock); } -static void pch_pic_eoi_irq(struct irq_data *d) -{ - u32 idx = PIC_REG_IDX(d->hwirq); - struct pch_pic *priv = irq_data_get_irq_chip_data(d); - - writel(BIT(PIC_REG_BIT(d->hwirq)), - priv->base + PCH_PIC_CLR + idx * 4); -} - static void pch_pic_mask_irq(struct irq_data *d) { struct pch_pic *priv = irq_data_get_irq_chip_data(d); @@ -85,6 +76,9 @@ { struct pch_pic *priv = irq_data_get_irq_chip_data(d); + writel(BIT(PIC_REG_BIT(d->hwirq)), + priv->base + PCH_PIC_CLR + PIC_REG_IDX(d->hwirq) * 4); + irq_chip_unmask_parent(d); pch_pic_bitclr(priv, PCH_PIC_MASK, d->hwirq); } @@ -124,7 +118,6 @@ .irq_mask = pch_pic_mask_irq, .irq_unmask = pch_pic_unmask_irq, .irq_ack = irq_chip_ack_parent, - .irq_eoi = pch_pic_eoi_irq, .irq_set_affinity = irq_chip_set_affinity_parent, .irq_set_type = pch_pic_set_type, }; @@ -135,22 +128,25 @@ int err; unsigned int type; unsigned long hwirq; - struct irq_fwspec fwspec; + struct irq_fwspec *fwspec = arg; + struct irq_fwspec parent_fwspec; struct pch_pic *priv = domain->host_data; - irq_domain_translate_twocell(domain, arg, &hwirq, &type); + err = irq_domain_translate_twocell(domain, fwspec, &hwirq, &type); + if (err) + return err; - fwspec.fwnode = domain->parent->fwnode; - fwspec.param_count = 1; - fwspec.param[0] = hwirq + priv->ht_vec_base; + parent_fwspec.fwnode = domain->parent->fwnode; + parent_fwspec.param_count = 1; + parent_fwspec.param[0] = hwirq + priv->ht_vec_base; - err = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec); + err = irq_domain_alloc_irqs_parent(domain, virq, 1, &parent_fwspec); if (err) return err; irq_domain_set_info(domain, virq, hwirq, &pch_pic_irq_chip, priv, - handle_fasteoi_ack_irq, NULL, NULL); + handle_level_irq, NULL, NULL); irq_set_probe(virq); return 0; --- linux-5.8.0.orig/drivers/irqchip/irq-mips-cpu.c +++ linux-5.8.0/drivers/irqchip/irq-mips-cpu.c @@ -197,6 +197,13 @@ if (ret) return ret; + ret = irq_domain_set_hwirq_and_chip(domain->parent, virq + i, hwirq, + &mips_mt_cpu_irq_controller, + NULL); + + if (ret) + return ret; + ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH); if (ret) return ret; --- linux-5.8.0.orig/drivers/irqchip/irq-mtk-sysirq.c +++ linux-5.8.0/drivers/irqchip/irq-mtk-sysirq.c @@ -15,7 +15,7 @@ #include struct mtk_sysirq_chip_data { - spinlock_t lock; + raw_spinlock_t lock; u32 nr_intpol_bases; void __iomem **intpol_bases; u32 *intpol_words; @@ -37,7 +37,7 @@ reg_index = chip_data->which_word[hwirq]; offset = hwirq & 0x1f; - spin_lock_irqsave(&chip_data->lock, flags); + raw_spin_lock_irqsave(&chip_data->lock, flags); value = readl_relaxed(base + reg_index * 4); if (type == IRQ_TYPE_LEVEL_LOW || type == IRQ_TYPE_EDGE_FALLING) { if (type == IRQ_TYPE_LEVEL_LOW) @@ -53,7 +53,7 @@ data = data->parent_data; ret = data->chip->irq_set_type(data, type); - spin_unlock_irqrestore(&chip_data->lock, flags); + raw_spin_unlock_irqrestore(&chip_data->lock, flags); return ret; } @@ -212,7 +212,7 @@ ret = -ENOMEM; goto out_free_which_word; } - spin_lock_init(&chip_data->lock); + raw_spin_lock_init(&chip_data->lock); return 0; --- linux-5.8.0.orig/drivers/irqchip/irq-sifive-plic.c +++ linux-5.8.0/drivers/irqchip/irq-sifive-plic.c @@ -99,7 +99,7 @@ struct irq_data *d, int enable) { int cpu; - struct plic_priv *priv = irq_get_chip_data(d->irq); + struct plic_priv *priv = irq_data_get_irq_chip_data(d); writel(enable, priv->regs + PRIORITY_BASE + d->hwirq * PRIORITY_PER_ID); for_each_cpu(cpu, mask) { @@ -115,7 +115,7 @@ { struct cpumask amask; unsigned int cpu; - struct plic_priv *priv = irq_get_chip_data(d->irq); + struct plic_priv *priv = irq_data_get_irq_chip_data(d); cpumask_and(&amask, &priv->lmask, cpu_online_mask); cpu = cpumask_any_and(irq_data_get_affinity_mask(d), @@ -127,7 +127,7 @@ static void plic_irq_mask(struct irq_data *d) { - struct plic_priv *priv = irq_get_chip_data(d->irq); + struct plic_priv *priv = irq_data_get_irq_chip_data(d); plic_irq_toggle(&priv->lmask, d, 0); } @@ -138,7 +138,7 @@ { unsigned int cpu; struct cpumask amask; - struct plic_priv *priv = irq_get_chip_data(d->irq); + struct plic_priv *priv = irq_data_get_irq_chip_data(d); cpumask_and(&amask, &priv->lmask, mask_val); @@ -151,7 +151,7 @@ return -EINVAL; plic_irq_toggle(&priv->lmask, d, 0); - plic_irq_toggle(cpumask_of(cpu), d, 1); + plic_irq_toggle(cpumask_of(cpu), d, !irqd_irq_masked(d)); irq_data_update_effective_affinity(d, cpumask_of(cpu)); --- linux-5.8.0.orig/drivers/irqchip/irq-sni-exiu.c +++ linux-5.8.0/drivers/irqchip/irq-sni-exiu.c @@ -136,7 +136,7 @@ if (fwspec->param_count != 2) return -EINVAL; *hwirq = fwspec->param[0]; - *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; + *type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK; } return 0; } --- linux-5.8.0.orig/drivers/irqchip/irq-stm32-exti.c +++ linux-5.8.0/drivers/irqchip/irq-stm32-exti.c @@ -431,6 +431,16 @@ irq_gc_unlock(gc); } +/* directly set the target bit without reading first. */ +static inline void stm32_exti_write_bit(struct irq_data *d, u32 reg) +{ + struct stm32_exti_chip_data *chip_data = irq_data_get_irq_chip_data(d); + void __iomem *base = chip_data->host_data->base; + u32 val = BIT(d->hwirq % IRQS_PER_BANK); + + writel_relaxed(val, base + reg); +} + static inline u32 stm32_exti_set_bit(struct irq_data *d, u32 reg) { struct stm32_exti_chip_data *chip_data = irq_data_get_irq_chip_data(d); @@ -464,9 +474,9 @@ raw_spin_lock(&chip_data->rlock); - stm32_exti_set_bit(d, stm32_bank->rpr_ofst); + stm32_exti_write_bit(d, stm32_bank->rpr_ofst); if (stm32_bank->fpr_ofst != UNDEF_REG) - stm32_exti_set_bit(d, stm32_bank->fpr_ofst); + stm32_exti_write_bit(d, stm32_bank->fpr_ofst); raw_spin_unlock(&chip_data->rlock); --- linux-5.8.0.orig/drivers/irqchip/irq-ti-sci-inta.c +++ linux-5.8.0/drivers/irqchip/irq-ti-sci-inta.c @@ -572,7 +572,7 @@ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); inta->base = devm_ioremap_resource(dev, res); if (IS_ERR(inta->base)) - return -ENODEV; + return PTR_ERR(inta->base); domain = irq_domain_add_linear(dev_of_node(dev), ti_sci_get_num_resources(inta->vint), --- linux-5.8.0.orig/drivers/irqchip/qcom-pdc.c +++ linux-5.8.0/drivers/irqchip/qcom-pdc.c @@ -159,6 +159,8 @@ { int pin_out = d->hwirq; enum pdc_irq_config_bits pdc_type; + enum pdc_irq_config_bits old_pdc_type; + int ret; if (pin_out == GPIO_NO_WAKE_IRQ) return 0; @@ -187,9 +189,26 @@ return -EINVAL; } + old_pdc_type = pdc_reg_read(IRQ_i_CFG, pin_out); pdc_reg_write(IRQ_i_CFG, pin_out, pdc_type); - return irq_chip_set_type_parent(d, type); + ret = irq_chip_set_type_parent(d, type); + if (ret) + return ret; + + /* + * When we change types the PDC can give a phantom interrupt. + * Clear it. Specifically the phantom shows up when reconfiguring + * polarity of interrupt without changing the state of the signal + * but let's be consistent and clear it always. + * + * Doing this works because we have IRQCHIP_SET_TYPE_MASKED so the + * interrupt will be cleared before the rest of the system sees it. + */ + if (old_pdc_type != pdc_type) + irq_chip_set_parent_state(d, IRQCHIP_STATE_PENDING, false); + + return 0; } static struct irq_chip qcom_pdc_gic_chip = { --- linux-5.8.0.orig/drivers/isdn/hardware/mISDN/mISDNipac.c +++ linux-5.8.0/drivers/isdn/hardware/mISDN/mISDNipac.c @@ -694,7 +694,7 @@ { if (isac->type & IPAC_TYPE_ISACX) WriteISAC(isac, ISACX_MASK, 0xff); - else + else if (isac->type != 0) WriteISAC(isac, ISAC_MASK, 0xff); if (isac->dch.timer.function != NULL) { del_timer(&isac->dch.timer); --- linux-5.8.0.orig/drivers/isdn/mISDN/Kconfig +++ linux-5.8.0/drivers/isdn/mISDN/Kconfig @@ -13,6 +13,7 @@ config MISDN_DSP tristate "Digital Audio Processing of transparent data" depends on MISDN + select BITREVERSE help Enable support for digital audio processing capability. --- linux-5.8.0.orig/drivers/leds/Kconfig +++ linux-5.8.0/drivers/leds/Kconfig @@ -378,7 +378,6 @@ tristate "Common Driver for TI/National LP5521/5523/55231/5562/8501" depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 || LEDS_LP8501 select FW_LOADER - select FW_LOADER_USER_HELPER help This option supports common operations for LP5521/5523/55231/5562/8501 devices. --- linux-5.8.0.orig/drivers/leds/led-class.c +++ linux-5.8.0/drivers/leds/led-class.c @@ -173,6 +173,7 @@ { led_cdev->flags |= LED_SUSPENDED; led_set_brightness_nopm(led_cdev, 0); + flush_work(&led_cdev->set_brightness_work); } EXPORT_SYMBOL_GPL(led_classdev_suspend); --- linux-5.8.0.orig/drivers/leds/led-triggers.c +++ linux-5.8.0/drivers/leds/led-triggers.c @@ -364,14 +364,15 @@ enum led_brightness brightness) { struct led_classdev *led_cdev; + unsigned long flags; if (!trig) return; - read_lock(&trig->leddev_list_lock); + read_lock_irqsave(&trig->leddev_list_lock, flags); list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list) led_set_brightness(led_cdev, brightness); - read_unlock(&trig->leddev_list_lock); + read_unlock_irqrestore(&trig->leddev_list_lock, flags); } EXPORT_SYMBOL_GPL(led_trigger_event); @@ -382,11 +383,12 @@ int invert) { struct led_classdev *led_cdev; + unsigned long flags; if (!trig) return; - read_lock(&trig->leddev_list_lock); + read_lock_irqsave(&trig->leddev_list_lock, flags); list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list) { if (oneshot) led_blink_set_oneshot(led_cdev, delay_on, delay_off, @@ -394,7 +396,7 @@ else led_blink_set(led_cdev, delay_on, delay_off); } - read_unlock(&trig->leddev_list_lock); + read_unlock_irqrestore(&trig->leddev_list_lock, flags); } void led_trigger_blink(struct led_trigger *trig, --- linux-5.8.0.orig/drivers/leds/leds-88pm860x.c +++ linux-5.8.0/drivers/leds/leds-88pm860x.c @@ -203,21 +203,33 @@ data->cdev.brightness_set_blocking = pm860x_led_set; mutex_init(&data->lock); - ret = devm_led_classdev_register(chip->dev, &data->cdev); + ret = led_classdev_register(chip->dev, &data->cdev); if (ret < 0) { dev_err(&pdev->dev, "Failed to register LED: %d\n", ret); return ret; } pm860x_led_set(&data->cdev, 0); + + platform_set_drvdata(pdev, data); + return 0; } +static int pm860x_led_remove(struct platform_device *pdev) +{ + struct pm860x_led *data = platform_get_drvdata(pdev); + + led_classdev_unregister(&data->cdev); + + return 0; +} static struct platform_driver pm860x_led_driver = { .driver = { .name = "88pm860x-led", }, .probe = pm860x_led_probe, + .remove = pm860x_led_remove, }; module_platform_driver(pm860x_led_driver); --- linux-5.8.0.orig/drivers/leds/leds-bcm6328.c +++ linux-5.8.0/drivers/leds/leds-bcm6328.c @@ -332,7 +332,7 @@ led->cdev.brightness_set = bcm6328_led_set; led->cdev.blink_set = bcm6328_blink_set; - rc = led_classdev_register(dev, &led->cdev); + rc = devm_led_classdev_register(dev, &led->cdev); if (rc < 0) return rc; --- linux-5.8.0.orig/drivers/leds/leds-bcm6358.c +++ linux-5.8.0/drivers/leds/leds-bcm6358.c @@ -137,7 +137,7 @@ led->cdev.brightness_set = bcm6358_led_set; - rc = led_classdev_register(dev, &led->cdev); + rc = devm_led_classdev_register(dev, &led->cdev); if (rc < 0) return rc; --- linux-5.8.0.orig/drivers/leds/leds-da903x.c +++ linux-5.8.0/drivers/leds/leds-da903x.c @@ -110,12 +110,23 @@ led->flags = pdata->flags; led->master = pdev->dev.parent; - ret = devm_led_classdev_register(led->master, &led->cdev); + ret = led_classdev_register(led->master, &led->cdev); if (ret) { dev_err(&pdev->dev, "failed to register LED %d\n", id); return ret; } + platform_set_drvdata(pdev, led); + + return 0; +} + +static int da903x_led_remove(struct platform_device *pdev) +{ + struct da903x_led *led = platform_get_drvdata(pdev); + + led_classdev_unregister(&led->cdev); + return 0; } @@ -124,6 +135,7 @@ .name = "da903x-led", }, .probe = da903x_led_probe, + .remove = da903x_led_remove, }; module_platform_driver(da903x_led_driver); --- linux-5.8.0.orig/drivers/leds/leds-lm3533.c +++ linux-5.8.0/drivers/leds/leds-lm3533.c @@ -694,7 +694,7 @@ platform_set_drvdata(pdev, led); - ret = devm_led_classdev_register(pdev->dev.parent, &led->cdev); + ret = led_classdev_register(pdev->dev.parent, &led->cdev); if (ret) { dev_err(&pdev->dev, "failed to register LED %d\n", pdev->id); return ret; @@ -704,13 +704,18 @@ ret = lm3533_led_setup(led, pdata); if (ret) - return ret; + goto err_deregister; ret = lm3533_ctrlbank_enable(&led->cb); if (ret) - return ret; + goto err_deregister; return 0; + +err_deregister: + led_classdev_unregister(&led->cdev); + + return ret; } static int lm3533_led_remove(struct platform_device *pdev) @@ -720,6 +725,7 @@ dev_dbg(&pdev->dev, "%s\n", __func__); lm3533_ctrlbank_disable(&led->cb); + led_classdev_unregister(&led->cdev); return 0; } --- linux-5.8.0.orig/drivers/leds/leds-lm355x.c +++ linux-5.8.0/drivers/leds/leds-lm355x.c @@ -164,18 +164,19 @@ /* input and output pins configuration */ switch (chip->type) { case CHIP_LM3554: - reg_val = pdata->pin_tx2 | pdata->ntc_pin; + reg_val = (u32)pdata->pin_tx2 | (u32)pdata->ntc_pin; ret = regmap_update_bits(chip->regmap, 0xE0, 0x28, reg_val); if (ret < 0) goto out; - reg_val = pdata->pass_mode; + reg_val = (u32)pdata->pass_mode; ret = regmap_update_bits(chip->regmap, 0xA0, 0x04, reg_val); if (ret < 0) goto out; break; case CHIP_LM3556: - reg_val = pdata->pin_tx2 | pdata->ntc_pin | pdata->pass_mode; + reg_val = (u32)pdata->pin_tx2 | (u32)pdata->ntc_pin | + (u32)pdata->pass_mode; ret = regmap_update_bits(chip->regmap, 0x0A, 0xC4, reg_val); if (ret < 0) goto out; --- linux-5.8.0.orig/drivers/leds/leds-lm36274.c +++ linux-5.8.0/drivers/leds/leds-lm36274.c @@ -133,7 +133,7 @@ lm36274_data->pdev = pdev; lm36274_data->dev = lmu->dev; lm36274_data->regmap = lmu->regmap; - dev_set_drvdata(&pdev->dev, lm36274_data); + platform_set_drvdata(pdev, lm36274_data); ret = lm36274_parse_dt(lm36274_data); if (ret) { @@ -147,8 +147,16 @@ return ret; } - return devm_led_classdev_register(lm36274_data->dev, - &lm36274_data->led_dev); + return led_classdev_register(lm36274_data->dev, &lm36274_data->led_dev); +} + +static int lm36274_remove(struct platform_device *pdev) +{ + struct lm36274 *lm36274_data = platform_get_drvdata(pdev); + + led_classdev_unregister(&lm36274_data->led_dev); + + return 0; } static const struct of_device_id of_lm36274_leds_match[] = { @@ -159,6 +167,7 @@ static struct platform_driver lm36274_driver = { .probe = lm36274_probe, + .remove = lm36274_remove, .driver = { .name = "lm36274-leds", }, --- linux-5.8.0.orig/drivers/leds/leds-lm3697.c +++ linux-5.8.0/drivers/leds/leds-lm3697.c @@ -78,6 +78,7 @@ struct mutex lock; int bank_cfg; + int num_banks; struct lm3697_led leds[]; }; @@ -180,7 +181,7 @@ if (ret) dev_err(&priv->client->dev, "Cannot write OUTPUT config\n"); - for (i = 0; i < LM3697_MAX_CONTROL_BANKS; i++) { + for (i = 0; i < priv->num_banks; i++) { led = &priv->leds[i]; ret = ti_lmu_common_set_ramp(&led->lmu_data); if (ret) @@ -307,8 +308,8 @@ int ret; count = device_get_child_node_count(&client->dev); - if (!count) { - dev_err(&client->dev, "LEDs are not defined in device tree!"); + if (!count || count > LM3697_MAX_CONTROL_BANKS) { + dev_err(&client->dev, "Strange device tree!"); return -ENODEV; } @@ -322,6 +323,7 @@ led->client = client; led->dev = &client->dev; + led->num_banks = count; led->regmap = devm_regmap_init_i2c(client, &lm3697_regmap_config); if (IS_ERR(led->regmap)) { ret = PTR_ERR(led->regmap); --- linux-5.8.0.orig/drivers/leds/leds-netxbig.c +++ linux-5.8.0/drivers/leds/leds-netxbig.c @@ -448,31 +448,39 @@ gpio_ext = devm_kzalloc(dev, sizeof(*gpio_ext), GFP_KERNEL); if (!gpio_ext) { of_node_put(gpio_ext_np); - return -ENOMEM; + ret = -ENOMEM; + goto put_device; } ret = netxbig_gpio_ext_get(dev, gpio_ext_dev, gpio_ext); of_node_put(gpio_ext_np); if (ret) - return ret; + goto put_device; pdata->gpio_ext = gpio_ext; /* Timers (optional) */ ret = of_property_count_u32_elems(np, "timers"); if (ret > 0) { - if (ret % 3) - return -EINVAL; + if (ret % 3) { + ret = -EINVAL; + goto put_device; + } + num_timers = ret / 3; timers = devm_kcalloc(dev, num_timers, sizeof(*timers), GFP_KERNEL); - if (!timers) - return -ENOMEM; + if (!timers) { + ret = -ENOMEM; + goto put_device; + } for (i = 0; i < num_timers; i++) { u32 tmp; of_property_read_u32_index(np, "timers", 3 * i, &timers[i].mode); - if (timers[i].mode >= NETXBIG_LED_MODE_NUM) - return -EINVAL; + if (timers[i].mode >= NETXBIG_LED_MODE_NUM) { + ret = -EINVAL; + goto put_device; + } of_property_read_u32_index(np, "timers", 3 * i + 1, &tmp); timers[i].delay_on = tmp; @@ -488,12 +496,15 @@ num_leds = of_get_child_count(np); if (!num_leds) { dev_err(dev, "No LED subnodes found in DT\n"); - return -ENODEV; + ret = -ENODEV; + goto put_device; } leds = devm_kcalloc(dev, num_leds, sizeof(*leds), GFP_KERNEL); - if (!leds) - return -ENOMEM; + if (!leds) { + ret = -ENOMEM; + goto put_device; + } led = leds; for_each_child_of_node(np, child) { @@ -574,6 +585,8 @@ err_node_put: of_node_put(child); +put_device: + put_device(gpio_ext_dev); return ret; } --- linux-5.8.0.orig/drivers/leds/leds-wm831x-status.c +++ linux-5.8.0/drivers/leds/leds-wm831x-status.c @@ -269,12 +269,23 @@ drvdata->cdev.blink_set = wm831x_status_blink_set; drvdata->cdev.groups = wm831x_status_groups; - ret = devm_led_classdev_register(wm831x->dev, &drvdata->cdev); + ret = led_classdev_register(wm831x->dev, &drvdata->cdev); if (ret < 0) { dev_err(&pdev->dev, "Failed to register LED: %d\n", ret); return ret; } + platform_set_drvdata(pdev, drvdata); + + return 0; +} + +static int wm831x_status_remove(struct platform_device *pdev) +{ + struct wm831x_status *drvdata = platform_get_drvdata(pdev); + + led_classdev_unregister(&drvdata->cdev); + return 0; } @@ -283,6 +294,7 @@ .name = "wm831x-status", }, .probe = wm831x_status_probe, + .remove = wm831x_status_remove, }; module_platform_driver(wm831x_status_driver); --- linux-5.8.0.orig/drivers/lightnvm/Kconfig +++ linux-5.8.0/drivers/lightnvm/Kconfig @@ -19,6 +19,7 @@ config NVM_PBLK tristate "Physical Block Device Open-Channel SSD target" + select CRC32 help Allows an open-channel SSD to be exposed as a block device to the host. The target assumes the device exposes raw flash and must be --- linux-5.8.0.orig/drivers/lightnvm/core.c +++ linux-5.8.0/drivers/lightnvm/core.c @@ -848,11 +848,10 @@ rqd.ppa_addr = generic_to_dev_addr(dev, ppa); ret = nvm_submit_io_sync_raw(dev, &rqd); + __free_page(page); if (ret) return ret; - __free_page(page); - return rqd.error; } @@ -1315,8 +1314,9 @@ strlcpy(info->bmname, "gennvm", sizeof(info->bmname)); i++; - if (i > 31) { - pr_err("max 31 devices can be reported.\n"); + if (i >= ARRAY_SIZE(devices->info)) { + pr_err("max %zd devices can be reported.\n", + ARRAY_SIZE(devices->info)); break; } } --- linux-5.8.0.orig/drivers/macintosh/via-macii.c +++ linux-5.8.0/drivers/macintosh/via-macii.c @@ -270,15 +270,12 @@ unsigned long flags; int err = 0; + local_irq_save(flags); + /* bit 1 == device 1, and so on. */ autopoll_devs = devs & 0xFFFE; - if (!autopoll_devs) - return 0; - - local_irq_save(flags); - - if (current_req == NULL) { + if (autopoll_devs && !current_req) { /* Send a Talk Reg 0. The controller will repeatedly transmit * this as long as it is idle. */ --- linux-5.8.0.orig/drivers/mailbox/mailbox.c +++ linux-5.8.0/drivers/mailbox/mailbox.c @@ -82,9 +82,12 @@ exit: spin_unlock_irqrestore(&chan->lock, flags); - if (!err && (chan->txdone_method & TXDONE_BY_POLL)) - /* kick start the timer immediately to avoid delays */ - hrtimer_start(&chan->mbox->poll_hrt, 0, HRTIMER_MODE_REL); + /* kick start the timer immediately to avoid delays */ + if (!err && (chan->txdone_method & TXDONE_BY_POLL)) { + /* but only if not already active */ + if (!hrtimer_active(&chan->mbox->poll_hrt)) + hrtimer_start(&chan->mbox->poll_hrt, 0, HRTIMER_MODE_REL); + } } static void tx_tick(struct mbox_chan *chan, int r) @@ -122,11 +125,10 @@ struct mbox_chan *chan = &mbox->chans[i]; if (chan->active_req && chan->cl) { + resched = true; txdone = chan->mbox->ops->last_tx_done(chan); if (txdone) tx_tick(chan, 0); - else - resched = true; } } --- linux-5.8.0.orig/drivers/mailbox/mtk-cmdq-mailbox.c +++ linux-5.8.0/drivers/mailbox/mtk-cmdq-mailbox.c @@ -69,7 +69,7 @@ struct cmdq { struct mbox_controller mbox; void __iomem *base; - u32 irq; + int irq; u32 thread_nr; u32 irq_mask; struct cmdq_thread *thread; @@ -466,10 +466,8 @@ } cmdq->irq = platform_get_irq(pdev, 0); - if (!cmdq->irq) { - dev_err(dev, "failed to get irq\n"); - return -EINVAL; - } + if (cmdq->irq < 0) + return cmdq->irq; cmdq->thread_nr = (u32)(unsigned long)of_device_get_match_data(dev); cmdq->irq_mask = GENMASK(cmdq->thread_nr - 1, 0); --- linux-5.8.0.orig/drivers/mailbox/sprd-mailbox.c +++ linux-5.8.0/drivers/mailbox/sprd-mailbox.c @@ -35,7 +35,7 @@ #define SPRD_MBOX_IRQ_CLR BIT(0) /* Bit and mask definiation for outbox's SPRD_MBOX_FIFO_STS register */ -#define SPRD_OUTBOX_FIFO_FULL BIT(0) +#define SPRD_OUTBOX_FIFO_FULL BIT(2) #define SPRD_OUTBOX_FIFO_WR_SHIFT 16 #define SPRD_OUTBOX_FIFO_RD_SHIFT 24 #define SPRD_OUTBOX_FIFO_POS_MASK GENMASK(7, 0) --- linux-5.8.0.orig/drivers/md/Kconfig +++ linux-5.8.0/drivers/md/Kconfig @@ -585,6 +585,7 @@ select BLK_DEV_INTEGRITY select DM_BUFIO select CRYPTO + select CRYPTO_SKCIPHER select ASYNC_XOR help This device-mapper target emulates a block device that has @@ -602,6 +603,7 @@ tristate "Drive-managed zoned block device target support" depends on BLK_DEV_DM depends on BLK_DEV_ZONED + select CRC32 help This device-mapper target takes a host-managed or host-aware zoned block device and exposes most of its capacity as a regular block --- linux-5.8.0.orig/drivers/md/bcache/bcache.h +++ linux-5.8.0/drivers/md/bcache/bcache.h @@ -264,7 +264,7 @@ #define BCACHE_DEV_UNLINK_DONE 2 #define BCACHE_DEV_WB_RUNNING 3 #define BCACHE_DEV_RATE_DW_RUNNING 4 - unsigned int nr_stripes; + int nr_stripes; unsigned int stripe_size; atomic_t *stripe_sectors_dirty; unsigned long *full_dirty_stripes; @@ -373,6 +373,7 @@ unsigned int partial_stripes_expensive:1; unsigned int writeback_metadata:1; unsigned int writeback_running:1; + unsigned int writeback_consider_fragment:1; unsigned char writeback_percent; unsigned int writeback_delay; @@ -385,6 +386,9 @@ unsigned int writeback_rate_update_seconds; unsigned int writeback_rate_i_term_inverse; unsigned int writeback_rate_p_term_inverse; + unsigned int writeback_rate_fp_term_low; + unsigned int writeback_rate_fp_term_mid; + unsigned int writeback_rate_fp_term_high; unsigned int writeback_rate_minimum; enum stop_on_failure stop_when_cache_set_failed; @@ -989,6 +993,7 @@ extern struct workqueue_struct *bcache_wq; extern struct workqueue_struct *bch_journal_wq; +extern struct workqueue_struct *bch_flush_wq; extern struct mutex bch_register_lock; extern struct list_head bch_cache_sets; @@ -1030,5 +1035,7 @@ void bch_debug_init(void); void bch_request_exit(void); int bch_request_init(void); +void bch_btree_exit(void); +int bch_btree_init(void); #endif /* _BCACHE_H */ --- linux-5.8.0.orig/drivers/md/bcache/bset.c +++ linux-5.8.0/drivers/md/bcache/bset.c @@ -322,7 +322,7 @@ b->page_order = page_order; - t->data = (void *) __get_free_pages(gfp, b->page_order); + t->data = (void *) __get_free_pages(__GFP_COMP|gfp, b->page_order); if (!t->data) goto err; --- linux-5.8.0.orig/drivers/md/bcache/btree.c +++ linux-5.8.0/drivers/md/bcache/btree.c @@ -99,6 +99,8 @@ #define PTR_HASH(c, k) \ (((k)->ptr[0] >> c->bucket_bits) | PTR_GEN(k, 0)) +static struct workqueue_struct *btree_io_wq; + #define insert_lock(s, b) ((b)->level <= (s)->lock) @@ -308,7 +310,7 @@ btree_complete_write(b, w); if (btree_node_dirty(b)) - schedule_delayed_work(&b->work, 30 * HZ); + queue_delayed_work(btree_io_wq, &b->work, 30 * HZ); closure_return_with_destructor(cl, btree_node_write_unlock); } @@ -481,7 +483,7 @@ BUG_ON(!i->keys); if (!btree_node_dirty(b)) - schedule_delayed_work(&b->work, 30 * HZ); + queue_delayed_work(btree_io_wq, &b->work, 30 * HZ); set_btree_node_dirty(b); @@ -785,7 +787,7 @@ mutex_init(&c->verify_lock); c->verify_ondisk = (void *) - __get_free_pages(GFP_KERNEL, ilog2(bucket_pages(c))); + __get_free_pages(GFP_KERNEL|__GFP_COMP, ilog2(bucket_pages(c))); c->verify_data = mca_bucket_alloc(c, &ZERO_KEY, GFP_KERNEL); @@ -2764,3 +2766,18 @@ spin_lock_init(&buf->lock); array_allocator_init(&buf->freelist); } + +void bch_btree_exit(void) +{ + if (btree_io_wq) + destroy_workqueue(btree_io_wq); +} + +int __init bch_btree_init(void) +{ + btree_io_wq = alloc_workqueue("bch_btree_io", WQ_MEM_RECLAIM, 0); + if (!btree_io_wq) + return -ENOMEM; + + return 0; +} --- linux-5.8.0.orig/drivers/md/bcache/journal.c +++ linux-5.8.0/drivers/md/bcache/journal.c @@ -955,8 +955,8 @@ journal_try_write(c); } else if (!w->dirty) { w->dirty = true; - schedule_delayed_work(&c->journal.work, - msecs_to_jiffies(c->journal_delay_ms)); + queue_delayed_work(bch_flush_wq, &c->journal.work, + msecs_to_jiffies(c->journal_delay_ms)); spin_unlock(&c->journal.lock); } else { spin_unlock(&c->journal.lock); @@ -999,8 +999,8 @@ j->w[1].c = c; if (!(init_fifo(&j->pin, JOURNAL_PIN, GFP_KERNEL)) || - !(j->w[0].data = (void *) __get_free_pages(GFP_KERNEL, JSET_BITS)) || - !(j->w[1].data = (void *) __get_free_pages(GFP_KERNEL, JSET_BITS))) + !(j->w[0].data = (void *) __get_free_pages(GFP_KERNEL|__GFP_COMP, JSET_BITS)) || + !(j->w[1].data = (void *) __get_free_pages(GFP_KERNEL|__GFP_COMP, JSET_BITS))) return -ENOMEM; return 0; --- linux-5.8.0.orig/drivers/md/bcache/request.c +++ linux-5.8.0/drivers/md/bcache/request.c @@ -668,7 +668,9 @@ static void bio_complete(struct search *s) { if (s->orig_bio) { - bio_end_io_acct(s->orig_bio, s->start_time); + /* Count on bcache device */ + disk_end_io_acct(s->d->disk, bio_op(s->orig_bio), s->start_time); + trace_bcache_request_end(s->d, s->orig_bio); s->orig_bio->bi_status = s->iop.status; bio_endio(s->orig_bio); @@ -728,8 +730,8 @@ s->recoverable = 1; s->write = op_is_write(bio_op(bio)); s->read_dirty_data = 0; - s->start_time = bio_start_io_acct(bio); - + /* Count on the bcache device */ + s->start_time = disk_start_io_acct(d->disk, bio_sectors(bio), bio_op(bio)); s->iop.c = d->c; s->iop.bio = NULL; s->iop.inode = d->id; @@ -1080,7 +1082,8 @@ bio->bi_end_io = ddip->bi_end_io; bio->bi_private = ddip->bi_private; - bio_end_io_acct(bio, ddip->start_time); + /* Count on the bcache device */ + disk_end_io_acct(ddip->d->disk, bio_op(bio), ddip->start_time); if (bio->bi_status) { struct cached_dev *dc = container_of(ddip->d, @@ -1105,7 +1108,8 @@ */ ddip = kzalloc(sizeof(struct detached_dev_io_private), GFP_NOIO); ddip->d = d; - ddip->start_time = bio_start_io_acct(bio); + /* Count on the bcache device */ + ddip->start_time = disk_start_io_acct(d->disk, bio_sectors(bio), bio_op(bio)); ddip->bi_end_io = bio->bi_end_io; ddip->bi_private = bio->bi_private; bio->bi_end_io = detached_dev_end_io; --- linux-5.8.0.orig/drivers/md/bcache/super.c +++ linux-5.8.0/drivers/md/bcache/super.c @@ -48,6 +48,7 @@ static DEFINE_IDA(bcache_device_idx); static wait_queue_head_t unregister_wait; struct workqueue_struct *bcache_wq; +struct workqueue_struct *bch_flush_wq; struct workqueue_struct *bch_journal_wq; @@ -826,19 +827,19 @@ struct request_queue *q; const size_t max_stripes = min_t(size_t, INT_MAX, SIZE_MAX / sizeof(atomic_t)); - size_t n; + uint64_t n; int idx; if (!d->stripe_size) d->stripe_size = 1 << 31; - d->nr_stripes = DIV_ROUND_UP_ULL(sectors, d->stripe_size); - - if (!d->nr_stripes || d->nr_stripes > max_stripes) { - pr_err("nr_stripes too large or invalid: %u (start sector beyond end of disk?)\n", - (unsigned int)d->nr_stripes); + n = DIV_ROUND_UP_ULL(sectors, d->stripe_size); + if (!n || n > max_stripes) { + pr_err("nr_stripes too large or invalid: %llu (start sector beyond end of disk?)\n", + n); return -ENOMEM; } + d->nr_stripes = n; n = d->nr_stripes * sizeof(atomic_t); d->stripe_sectors_dirty = kvzalloc(n, GFP_KERNEL); @@ -1776,7 +1777,7 @@ } #define alloc_bucket_pages(gfp, c) \ - ((void *) __get_free_pages(__GFP_ZERO|gfp, ilog2(bucket_pages(c)))) + ((void *) __get_free_pages(__GFP_ZERO|__GFP_COMP|gfp, ilog2(bucket_pages(c)))) struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) { @@ -2100,7 +2101,14 @@ sysfs_create_link(&c->kobj, &ca->kobj, buf)) goto err; - if (ca->sb.seq > c->sb.seq) { + /* + * A special case is both ca->sb.seq and c->sb.seq are 0, + * such condition happens on a new created cache device whose + * super block is never flushed yet. In this case c->sb.version + * and other members should be updated too, otherwise we will + * have a mistaken super block version in cache set. + */ + if (ca->sb.seq > c->sb.seq || c->sb.seq == 0) { c->sb.version = ca->sb.version; memcpy(c->sb.set_uuid, ca->sb.set_uuid, 16); c->sb.flags = ca->sb.flags; @@ -2744,6 +2752,9 @@ destroy_workqueue(bcache_wq); if (bch_journal_wq) destroy_workqueue(bch_journal_wq); + if (bch_flush_wq) + destroy_workqueue(bch_flush_wq); + bch_btree_exit(); if (bcache_major) unregister_blkdev(bcache_major, "bcache"); @@ -2802,10 +2813,26 @@ return bcache_major; } + if (bch_btree_init()) + goto err; + bcache_wq = alloc_workqueue("bcache", WQ_MEM_RECLAIM, 0); if (!bcache_wq) goto err; + /* + * Let's not make this `WQ_MEM_RECLAIM` for the following reasons: + * + * 1. It used `system_wq` before which also does no memory reclaim. + * 2. With `WQ_MEM_RECLAIM` desktop stalls, increased boot times, and + * reduced throughput can be observed. + * + * We still want to user our own queue to not congest the `system_wq`. + */ + bch_flush_wq = alloc_workqueue("bch_flush", 0, 0); + if (!bch_flush_wq) + goto err; + bch_journal_wq = alloc_workqueue("bch_journal", WQ_MEM_RECLAIM, 0); if (!bch_journal_wq) goto err; --- linux-5.8.0.orig/drivers/md/bcache/sysfs.c +++ linux-5.8.0/drivers/md/bcache/sysfs.c @@ -113,10 +113,14 @@ rw_attribute(writeback_percent); rw_attribute(writeback_delay); rw_attribute(writeback_rate); +rw_attribute(writeback_consider_fragment); rw_attribute(writeback_rate_update_seconds); rw_attribute(writeback_rate_i_term_inverse); rw_attribute(writeback_rate_p_term_inverse); +rw_attribute(writeback_rate_fp_term_low); +rw_attribute(writeback_rate_fp_term_mid); +rw_attribute(writeback_rate_fp_term_high); rw_attribute(writeback_rate_minimum); read_attribute(writeback_rate_debug); @@ -191,6 +195,7 @@ var_printf(bypass_torture_test, "%i"); var_printf(writeback_metadata, "%i"); var_printf(writeback_running, "%i"); + var_printf(writeback_consider_fragment, "%i"); var_print(writeback_delay); var_print(writeback_percent); sysfs_hprint(writeback_rate, @@ -201,6 +206,9 @@ var_print(writeback_rate_update_seconds); var_print(writeback_rate_i_term_inverse); var_print(writeback_rate_p_term_inverse); + var_print(writeback_rate_fp_term_low); + var_print(writeback_rate_fp_term_mid); + var_print(writeback_rate_fp_term_high); var_print(writeback_rate_minimum); if (attr == &sysfs_writeback_rate_debug) { @@ -299,6 +307,7 @@ sysfs_strtoul_bool(bypass_torture_test, dc->bypass_torture_test); sysfs_strtoul_bool(writeback_metadata, dc->writeback_metadata); sysfs_strtoul_bool(writeback_running, dc->writeback_running); + sysfs_strtoul_bool(writeback_consider_fragment, dc->writeback_consider_fragment); sysfs_strtoul_clamp(writeback_delay, dc->writeback_delay, 0, UINT_MAX); sysfs_strtoul_clamp(writeback_percent, dc->writeback_percent, @@ -327,6 +336,16 @@ sysfs_strtoul_clamp(writeback_rate_p_term_inverse, dc->writeback_rate_p_term_inverse, 1, UINT_MAX); + sysfs_strtoul_clamp(writeback_rate_fp_term_low, + dc->writeback_rate_fp_term_low, + 1, dc->writeback_rate_fp_term_mid - 1); + sysfs_strtoul_clamp(writeback_rate_fp_term_mid, + dc->writeback_rate_fp_term_mid, + dc->writeback_rate_fp_term_low + 1, + dc->writeback_rate_fp_term_high - 1); + sysfs_strtoul_clamp(writeback_rate_fp_term_high, + dc->writeback_rate_fp_term_high, + dc->writeback_rate_fp_term_mid + 1, UINT_MAX); sysfs_strtoul_clamp(writeback_rate_minimum, dc->writeback_rate_minimum, 1, UINT_MAX); @@ -495,9 +514,13 @@ &sysfs_writeback_delay, &sysfs_writeback_percent, &sysfs_writeback_rate, + &sysfs_writeback_consider_fragment, &sysfs_writeback_rate_update_seconds, &sysfs_writeback_rate_i_term_inverse, &sysfs_writeback_rate_p_term_inverse, + &sysfs_writeback_rate_fp_term_low, + &sysfs_writeback_rate_fp_term_mid, + &sysfs_writeback_rate_fp_term_high, &sysfs_writeback_rate_minimum, &sysfs_writeback_rate_debug, &sysfs_io_errors, --- linux-5.8.0.orig/drivers/md/bcache/writeback.c +++ linux-5.8.0/drivers/md/bcache/writeback.c @@ -88,6 +88,44 @@ int64_t integral_scaled; uint32_t new_rate; + /* + * We need to consider the number of dirty buckets as well + * when calculating the proportional_scaled, Otherwise we might + * have an unreasonable small writeback rate at a highly fragmented situation + * when very few dirty sectors consumed a lot dirty buckets, the + * worst case is when dirty buckets reached cutoff_writeback_sync and + * dirty data is still not even reached to writeback percent, so the rate + * still will be at the minimum value, which will cause the write + * stuck at a non-writeback mode. + */ + struct cache_set *c = dc->disk.c; + + int64_t dirty_buckets = c->nbuckets - c->avail_nbuckets; + + if (dc->writeback_consider_fragment && + c->gc_stats.in_use > BCH_WRITEBACK_FRAGMENT_THRESHOLD_LOW && dirty > 0) { + int64_t fragment = + div_s64((dirty_buckets * c->sb.bucket_size), dirty); + int64_t fp_term; + int64_t fps; + + if (c->gc_stats.in_use <= BCH_WRITEBACK_FRAGMENT_THRESHOLD_MID) { + fp_term = dc->writeback_rate_fp_term_low * + (c->gc_stats.in_use - BCH_WRITEBACK_FRAGMENT_THRESHOLD_LOW); + } else if (c->gc_stats.in_use <= BCH_WRITEBACK_FRAGMENT_THRESHOLD_HIGH) { + fp_term = dc->writeback_rate_fp_term_mid * + (c->gc_stats.in_use - BCH_WRITEBACK_FRAGMENT_THRESHOLD_MID); + } else { + fp_term = dc->writeback_rate_fp_term_high * + (c->gc_stats.in_use - BCH_WRITEBACK_FRAGMENT_THRESHOLD_HIGH); + } + fps = div_s64(dirty, dirty_buckets) * fp_term; + if (fragment > 3 && fps > proportional_scaled) { + /* Only overrite the p when fragment > 3 */ + proportional_scaled = fps; + } + } + if ((error < 0 && dc->writeback_rate_integral > 0) || (error > 0 && time_before64(local_clock(), dc->writeback_rate.next + NSEC_PER_MSEC))) { @@ -523,15 +561,19 @@ uint64_t offset, int nr_sectors) { struct bcache_device *d = c->devices[inode]; - unsigned int stripe_offset, stripe, sectors_dirty; + unsigned int stripe_offset, sectors_dirty; + int stripe; if (!d) return; + stripe = offset_to_stripe(d, offset); + if (stripe < 0) + return; + if (UUID_FLASH_ONLY(&c->uuids[inode])) atomic_long_add(nr_sectors, &c->flash_dev_dirty_sectors); - stripe = offset_to_stripe(d, offset); stripe_offset = offset & (d->stripe_size - 1); while (nr_sectors) { @@ -571,12 +613,12 @@ static void refill_full_stripes(struct cached_dev *dc) { struct keybuf *buf = &dc->writeback_keys; - unsigned int start_stripe, stripe, next_stripe; + unsigned int start_stripe, next_stripe; + int stripe; bool wrapped = false; stripe = offset_to_stripe(&dc->disk, KEY_OFFSET(&buf->last_scanned)); - - if (stripe >= dc->disk.nr_stripes) + if (stripe < 0) stripe = 0; start_stripe = stripe; @@ -968,6 +1010,7 @@ dc->writeback_metadata = true; dc->writeback_running = false; + dc->writeback_consider_fragment = true; dc->writeback_percent = 10; dc->writeback_delay = 30; atomic_long_set(&dc->writeback_rate.rate, 1024); @@ -975,6 +1018,9 @@ dc->writeback_rate_update_seconds = WRITEBACK_RATE_UPDATE_SECS_DEFAULT; dc->writeback_rate_p_term_inverse = 40; + dc->writeback_rate_fp_term_low = 1; + dc->writeback_rate_fp_term_mid = 10; + dc->writeback_rate_fp_term_high = 1000; dc->writeback_rate_i_term_inverse = 10000; WARN_ON(test_and_clear_bit(BCACHE_DEV_WB_RUNNING, &dc->disk.flags)); --- linux-5.8.0.orig/drivers/md/bcache/writeback.h +++ linux-5.8.0/drivers/md/bcache/writeback.h @@ -16,6 +16,10 @@ #define BCH_AUTO_GC_DIRTY_THRESHOLD 50 +#define BCH_WRITEBACK_FRAGMENT_THRESHOLD_LOW 50 +#define BCH_WRITEBACK_FRAGMENT_THRESHOLD_MID 57 +#define BCH_WRITEBACK_FRAGMENT_THRESHOLD_HIGH 64 + #define BCH_DIRTY_INIT_THRD_MAX 64 /* * 14 (16384ths) is chosen here as something that each backing device @@ -52,10 +56,22 @@ return ret; } -static inline unsigned int offset_to_stripe(struct bcache_device *d, +static inline int offset_to_stripe(struct bcache_device *d, uint64_t offset) { do_div(offset, d->stripe_size); + + /* d->nr_stripes is in range [1, INT_MAX] */ + if (unlikely(offset >= d->nr_stripes)) { + pr_err("Invalid stripe %llu (>= nr_stripes %d).\n", + offset, d->nr_stripes); + return -EINVAL; + } + + /* + * Here offset is definitly smaller than INT_MAX, + * return it as int will never overflow. + */ return offset; } @@ -63,7 +79,10 @@ uint64_t offset, unsigned int nr_sectors) { - unsigned int stripe = offset_to_stripe(&dc->disk, offset); + int stripe = offset_to_stripe(&dc->disk, offset); + + if (stripe < 0) + return false; while (1) { if (atomic_read(dc->disk.stripe_sectors_dirty + stripe)) --- linux-5.8.0.orig/drivers/md/dm-bufio.c +++ linux-5.8.0/drivers/md/dm-bufio.c @@ -1523,6 +1523,10 @@ sector_t dm_bufio_get_device_size(struct dm_bufio_client *c) { sector_t s = i_size_read(c->bdev->bd_inode) >> SECTOR_SHIFT; + if (s >= c->start) + s -= c->start; + else + s = 0; if (likely(c->sectors_per_block_bits >= 0)) s >>= c->sectors_per_block_bits; else @@ -1531,6 +1535,12 @@ } EXPORT_SYMBOL_GPL(dm_bufio_get_device_size); +struct dm_io_client *dm_bufio_get_dm_io_client(struct dm_bufio_client *c) +{ + return c->dm_io; +} +EXPORT_SYMBOL_GPL(dm_bufio_get_dm_io_client); + sector_t dm_bufio_get_block_number(struct dm_buffer *b) { return b->block; --- linux-5.8.0.orig/drivers/md/dm-cache-metadata.c +++ linux-5.8.0/drivers/md/dm-cache-metadata.c @@ -537,12 +537,16 @@ CACHE_MAX_CONCURRENT_LOCKS); if (IS_ERR(cmd->bm)) { DMERR("could not create block manager"); - return PTR_ERR(cmd->bm); + r = PTR_ERR(cmd->bm); + cmd->bm = NULL; + return r; } r = __open_or_format_metadata(cmd, may_format_device); - if (r) + if (r) { dm_block_manager_destroy(cmd->bm); + cmd->bm = NULL; + } return r; } --- linux-5.8.0.orig/drivers/md/dm-core.h +++ linux-5.8.0/drivers/md/dm-core.h @@ -106,6 +106,10 @@ struct block_device *bdev; + int swap_bios; + struct semaphore swap_bios_semaphore; + struct mutex swap_bios_lock; + struct dm_stats stats; /* for blk-mq request-based DM support */ --- linux-5.8.0.orig/drivers/md/dm-crypt.c +++ linux-5.8.0/drivers/md/dm-crypt.c @@ -736,7 +736,7 @@ u8 buf[MAX_CIPHER_BLOCKSIZE] __aligned(__alignof__(__le64)); struct skcipher_request *req; struct scatterlist src, dst; - struct crypto_wait wait; + DECLARE_CRYPTO_WAIT(wait); int err; req = skcipher_request_alloc(any_tfm(cc), GFP_NOIO); @@ -933,7 +933,7 @@ u8 *es, *ks, *data, *data2, *data_offset; struct skcipher_request *req; struct scatterlist *sg, *sg2, src, dst; - struct crypto_wait wait; + DECLARE_CRYPTO_WAIT(wait); int i, r; req = skcipher_request_alloc(elephant->tfm, GFP_NOIO); @@ -1448,13 +1448,16 @@ static void kcryptd_async_done(struct crypto_async_request *async_req, int error); -static void crypt_alloc_req_skcipher(struct crypt_config *cc, +static int crypt_alloc_req_skcipher(struct crypt_config *cc, struct convert_context *ctx) { unsigned key_index = ctx->cc_sector & (cc->tfms_count - 1); - if (!ctx->r.req) - ctx->r.req = mempool_alloc(&cc->req_pool, GFP_NOIO); + if (!ctx->r.req) { + ctx->r.req = mempool_alloc(&cc->req_pool, in_interrupt() ? GFP_ATOMIC : GFP_NOIO); + if (!ctx->r.req) + return -ENOMEM; + } skcipher_request_set_tfm(ctx->r.req, cc->cipher_tfm.tfms[key_index]); @@ -1465,13 +1468,18 @@ skcipher_request_set_callback(ctx->r.req, CRYPTO_TFM_REQ_MAY_BACKLOG, kcryptd_async_done, dmreq_of_req(cc, ctx->r.req)); + + return 0; } -static void crypt_alloc_req_aead(struct crypt_config *cc, +static int crypt_alloc_req_aead(struct crypt_config *cc, struct convert_context *ctx) { - if (!ctx->r.req_aead) - ctx->r.req_aead = mempool_alloc(&cc->req_pool, GFP_NOIO); + if (!ctx->r.req_aead) { + ctx->r.req_aead = mempool_alloc(&cc->req_pool, in_interrupt() ? GFP_ATOMIC : GFP_NOIO); + if (!ctx->r.req_aead) + return -ENOMEM; + } aead_request_set_tfm(ctx->r.req_aead, cc->cipher_tfm.tfms_aead[0]); @@ -1482,15 +1490,17 @@ aead_request_set_callback(ctx->r.req_aead, CRYPTO_TFM_REQ_MAY_BACKLOG, kcryptd_async_done, dmreq_of_req(cc, ctx->r.req_aead)); + + return 0; } -static void crypt_alloc_req(struct crypt_config *cc, +static int crypt_alloc_req(struct crypt_config *cc, struct convert_context *ctx) { if (crypt_integrity_aead(cc)) - crypt_alloc_req_aead(cc, ctx); + return crypt_alloc_req_aead(cc, ctx); else - crypt_alloc_req_skcipher(cc, ctx); + return crypt_alloc_req_skcipher(cc, ctx); } static void crypt_free_req_skcipher(struct crypt_config *cc, @@ -1533,7 +1543,12 @@ while (ctx->iter_in.bi_size && ctx->iter_out.bi_size) { - crypt_alloc_req(cc, ctx); + r = crypt_alloc_req(cc, ctx); + if (r) { + complete(&ctx->restart); + return BLK_STS_DEV_RESOURCE; + } + atomic_inc(&ctx->cc_pending); if (crypt_integrity_aead(cc)) @@ -3092,6 +3107,7 @@ wake_up_process(cc->write_thread); ti->num_flush_bios = 1; + ti->limit_swap_bios = true; return 0; --- linux-5.8.0.orig/drivers/md/dm-ebs-target.c +++ linux-5.8.0/drivers/md/dm-ebs-target.c @@ -363,7 +363,7 @@ bio_set_dev(bio, ec->dev->bdev); bio->bi_iter.bi_sector = ec->start + dm_target_offset(ti, bio->bi_iter.bi_sector); - if (unlikely(bio->bi_opf & REQ_OP_FLUSH)) + if (unlikely(bio_op(bio) == REQ_OP_FLUSH)) return DM_MAPIO_REMAPPED; /* * Only queue for bufio processing in case of partial or overlapping buffers --- linux-5.8.0.orig/drivers/md/dm-era-target.c +++ linux-5.8.0/drivers/md/dm-era-target.c @@ -47,6 +47,7 @@ static void writeset_free(struct writeset *ws) { vfree(ws->bits); + ws->bits = NULL; } static int setup_on_disk_bitset(struct dm_disk_bitset *info, @@ -71,8 +72,6 @@ */ static int writeset_alloc(struct writeset *ws, dm_block_t nr_blocks) { - ws->md.nr_bits = nr_blocks; - ws->md.root = INVALID_WRITESET_ROOT; ws->bits = vzalloc(bitset_size(nr_blocks)); if (!ws->bits) { DMERR("%s: couldn't allocate in memory bitset", __func__); @@ -85,12 +84,14 @@ /* * Wipes the in-core bitset, and creates a new on disk bitset. */ -static int writeset_init(struct dm_disk_bitset *info, struct writeset *ws) +static int writeset_init(struct dm_disk_bitset *info, struct writeset *ws, + dm_block_t nr_blocks) { int r; - memset(ws->bits, 0, bitset_size(ws->md.nr_bits)); + memset(ws->bits, 0, bitset_size(nr_blocks)); + ws->md.nr_bits = nr_blocks; r = setup_on_disk_bitset(info, ws->md.nr_bits, &ws->md.root); if (r) { DMERR("%s: setup_on_disk_bitset failed", __func__); @@ -134,7 +135,7 @@ { int r; - if (!test_and_set_bit(block, ws->bits)) { + if (!test_bit(block, ws->bits)) { r = dm_bitset_set_bit(info, ws->md.root, block, &ws->md.root); if (r) { /* FIXME: fail mode */ @@ -388,7 +389,7 @@ static int ws_eq(void *context, const void *value1, const void *value2) { - return !memcmp(value1, value2, sizeof(struct writeset_metadata)); + return !memcmp(value1, value2, sizeof(struct writeset_disk)); } /*----------------------------------------------------------------*/ @@ -564,6 +565,15 @@ } disk = dm_block_data(sblock); + + /* Verify the data block size hasn't changed */ + if (le32_to_cpu(disk->data_block_size) != md->block_size) { + DMERR("changing the data block size (from %u to %llu) is not supported", + le32_to_cpu(disk->data_block_size), md->block_size); + r = -EINVAL; + goto bad; + } + r = dm_tm_open_with_sm(md->bm, SUPERBLOCK_LOCATION, disk->metadata_space_map_root, sizeof(disk->metadata_space_map_root), @@ -575,10 +585,10 @@ setup_infos(md); - md->block_size = le32_to_cpu(disk->data_block_size); md->nr_blocks = le32_to_cpu(disk->nr_blocks); md->current_era = le32_to_cpu(disk->current_era); + ws_unpack(&disk->current_writeset, &md->current_writeset->md); md->writeset_tree_root = le64_to_cpu(disk->writeset_tree_root); md->era_array_root = le64_to_cpu(disk->era_array_root); md->metadata_snap = le64_to_cpu(disk->metadata_snap); @@ -746,6 +756,12 @@ ws_unpack(&disk, &d->writeset); d->value = cpu_to_le32(key); + /* + * We initialise another bitset info to avoid any caching side effects + * with the previous one. + */ + dm_disk_bitset_init(md->tm, &d->info); + d->nr_bits = min(d->writeset.nr_bits, md->nr_blocks); d->current_bit = 0; d->step = metadata_digest_transcribe_writeset; @@ -759,12 +775,6 @@ return 0; memset(d, 0, sizeof(*d)); - - /* - * We initialise another bitset info to avoid any caching side - * effects with the previous one. - */ - dm_disk_bitset_init(md->tm, &d->info); d->step = metadata_digest_lookup_writeset; return 0; @@ -802,6 +812,8 @@ static void metadata_close(struct era_metadata *md) { + writeset_free(&md->writesets[0]); + writeset_free(&md->writesets[1]); destroy_persistent_data_objects(md); kfree(md); } @@ -839,6 +851,7 @@ r = writeset_alloc(&md->writesets[1], *new_size); if (r) { DMERR("%s: writeset_alloc failed for writeset 1", __func__); + writeset_free(&md->writesets[0]); return r; } @@ -849,6 +862,8 @@ &value, &md->era_array_root); if (r) { DMERR("%s: dm_array_resize failed", __func__); + writeset_free(&md->writesets[0]); + writeset_free(&md->writesets[1]); return r; } @@ -870,7 +885,6 @@ } ws_pack(&md->current_writeset->md, &value); - md->current_writeset->md.root = INVALID_WRITESET_ROOT; keys[0] = md->current_era; __dm_bless_for_disk(&value); @@ -882,6 +896,7 @@ return r; } + md->current_writeset->md.root = INVALID_WRITESET_ROOT; md->archived_writesets = true; return 0; @@ -898,7 +913,7 @@ int r; struct writeset *new_writeset = next_writeset(md); - r = writeset_init(&md->bitset_info, new_writeset); + r = writeset_init(&md->bitset_info, new_writeset, md->nr_blocks); if (r) { DMERR("%s: writeset_init failed", __func__); return r; @@ -951,7 +966,7 @@ int r; struct dm_block *sblock; - if (md->current_writeset->md.root != SUPERBLOCK_LOCATION) { + if (md->current_writeset->md.root != INVALID_WRITESET_ROOT) { r = dm_bitset_flush(&md->bitset_info, md->current_writeset->md.root, &md->current_writeset->md.root); if (r) { @@ -1226,8 +1241,10 @@ int r; struct bio_list deferred_bios, marked_bios; struct bio *bio; + struct blk_plug plug; bool commit_needed = false; bool failed = false; + struct writeset *ws = era->md->current_writeset; bio_list_init(&deferred_bios); bio_list_init(&marked_bios); @@ -1237,9 +1254,11 @@ bio_list_init(&era->deferred_bios); spin_unlock(&era->deferred_lock); + if (bio_list_empty(&deferred_bios)) + return; + while ((bio = bio_list_pop(&deferred_bios))) { - r = writeset_test_and_set(&era->md->bitset_info, - era->md->current_writeset, + r = writeset_test_and_set(&era->md->bitset_info, ws, get_block(era, bio)); if (r < 0) { /* @@ -1247,7 +1266,6 @@ * FIXME: finish. */ failed = true; - } else if (r == 0) commit_needed = true; @@ -1263,9 +1281,19 @@ if (failed) while ((bio = bio_list_pop(&marked_bios))) bio_io_error(bio); - else - while ((bio = bio_list_pop(&marked_bios))) + else { + blk_start_plug(&plug); + while ((bio = bio_list_pop(&marked_bios))) { + /* + * Only update the in-core writeset if the on-disk one + * was updated too. + */ + if (commit_needed) + set_bit(get_block(era, bio), ws->bits); generic_make_request(bio); + } + blk_finish_plug(&plug); + } } static void process_rpc_calls(struct era *era) @@ -1486,15 +1514,6 @@ } era->md = md; - era->nr_blocks = calc_nr_blocks(era); - - r = metadata_resize(era->md, &era->nr_blocks); - if (r) { - ti->error = "couldn't resize metadata"; - era_destroy(era); - return -ENOMEM; - } - era->wq = alloc_ordered_workqueue("dm-" DM_MSG_PREFIX, WQ_MEM_RECLAIM); if (!era->wq) { ti->error = "could not create workqueue for metadata object"; @@ -1571,16 +1590,24 @@ dm_block_t new_size = calc_nr_blocks(era); if (era->nr_blocks != new_size) { - r = in_worker1(era, metadata_resize, &new_size); - if (r) + r = metadata_resize(era->md, &new_size); + if (r) { + DMERR("%s: metadata_resize failed", __func__); + return r; + } + + r = metadata_commit(era->md); + if (r) { + DMERR("%s: metadata_commit failed", __func__); return r; + } era->nr_blocks = new_size; } start_worker(era); - r = in_worker0(era, metadata_new_era); + r = in_worker0(era, metadata_era_rollover); if (r) { DMERR("%s: metadata_era_rollover failed", __func__); return r; --- linux-5.8.0.orig/drivers/md/dm-integrity.c +++ linux-5.8.0/drivers/md/dm-integrity.c @@ -257,8 +257,9 @@ bool journal_uptodate; bool just_formatted; bool recalculate_flag; - bool fix_padding; bool discard; + bool fix_padding; + bool legacy_recalculate; struct alg_spec internal_hash_alg; struct alg_spec journal_crypt_alg; @@ -386,6 +387,14 @@ return READ_ONCE(ic->failed); } +static bool dm_integrity_disable_recalculate(struct dm_integrity_c *ic) +{ + if ((ic->internal_hash_alg.key || ic->journal_mac_alg.key) && + !ic->legacy_recalculate) + return true; + return false; +} + static commit_id_t dm_integrity_commit_id(struct dm_integrity_c *ic, unsigned i, unsigned j, unsigned char seq) { @@ -1379,12 +1388,52 @@ #undef MAY_BE_HASH } -static void dm_integrity_flush_buffers(struct dm_integrity_c *ic) +struct flush_request { + struct dm_io_request io_req; + struct dm_io_region io_reg; + struct dm_integrity_c *ic; + struct completion comp; +}; + +static void flush_notify(unsigned long error, void *fr_) +{ + struct flush_request *fr = fr_; + if (unlikely(error != 0)) + dm_integrity_io_error(fr->ic, "flusing disk cache", -EIO); + complete(&fr->comp); +} + +static void dm_integrity_flush_buffers(struct dm_integrity_c *ic, bool flush_data) { int r; + + struct flush_request fr; + + if (!ic->meta_dev) + flush_data = false; + if (flush_data) { + fr.io_req.bi_op = REQ_OP_WRITE, + fr.io_req.bi_op_flags = REQ_PREFLUSH | REQ_SYNC, + fr.io_req.mem.type = DM_IO_KMEM, + fr.io_req.mem.ptr.addr = NULL, + fr.io_req.notify.fn = flush_notify, + fr.io_req.notify.context = &fr; + fr.io_req.client = dm_bufio_get_dm_io_client(ic->bufio), + fr.io_reg.bdev = ic->dev->bdev, + fr.io_reg.sector = 0, + fr.io_reg.count = 0, + fr.ic = ic; + init_completion(&fr.comp); + r = dm_io(&fr.io_req, 1, &fr.io_reg, NULL); + BUG_ON(r); + } + r = dm_bufio_write_dirty_buffers(ic->bufio); if (unlikely(r)) dm_integrity_io_error(ic, "writing tags", r); + + if (flush_data) + wait_for_completion(&fr.comp); } static void sleep_on_endio_wait(struct dm_integrity_c *ic) @@ -2110,7 +2159,7 @@ if (unlikely(dio->op == REQ_OP_DISCARD) && likely(ic->mode != 'D')) { integrity_metadata(&dio->work); - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, false); dio->in_flight = (atomic_t)ATOMIC_INIT(1); dio->completion = NULL; @@ -2195,7 +2244,7 @@ flushes = bio_list_get(&ic->flush_bio_list); if (unlikely(ic->mode != 'J')) { spin_unlock_irq(&ic->endio_wait.lock); - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, true); goto release_flush_bios; } @@ -2409,7 +2458,7 @@ complete_journal_op(&comp); wait_for_completion_io(&comp.comp); - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, true); } static void integrity_writer(struct work_struct *w) @@ -2451,7 +2500,7 @@ { int r; - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, false); if (dm_integrity_failed(ic)) return; @@ -2487,6 +2536,7 @@ range.logical_sector = le64_to_cpu(ic->sb->recalc_sector); if (unlikely(range.logical_sector >= ic->provided_data_sectors)) { if (ic->mode == 'B') { + block_bitmap_op(ic, ic->recalc_bitmap, 0, ic->provided_data_sectors, BITMAP_OP_CLEAR); DEBUG_print("queue_delayed_work: bitmap_flush_work\n"); queue_delayed_work(ic->commit_wq, &ic->bitmap_flush_work, 0); } @@ -2564,6 +2614,17 @@ goto err; } + if (ic->mode == 'B') { + sector_t start, end; + start = (range.logical_sector >> + (ic->sb->log2_sectors_per_block + ic->log2_blocks_per_bitmap_bit)) << + (ic->sb->log2_sectors_per_block + ic->log2_blocks_per_bitmap_bit); + end = ((range.logical_sector + range.n_sectors) >> + (ic->sb->log2_sectors_per_block + ic->log2_blocks_per_bitmap_bit)) << + (ic->sb->log2_sectors_per_block + ic->log2_blocks_per_bitmap_bit); + block_bitmap_op(ic, ic->recalc_bitmap, start, end - start, BITMAP_OP_CLEAR); + } + advance_and_next: cond_resched(); @@ -2642,7 +2703,7 @@ unsigned long limit; struct bio *bio; - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, false); range.logical_sector = 0; range.n_sectors = ic->provided_data_sectors; @@ -2651,9 +2712,7 @@ add_new_range_and_wait(ic, &range); spin_unlock_irq(&ic->endio_wait.lock); - dm_integrity_flush_buffers(ic); - if (ic->meta_dev) - blkdev_issue_flush(ic->dev->bdev, GFP_NOIO); + dm_integrity_flush_buffers(ic, true); limit = ic->provided_data_sectors; if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING)) { @@ -2922,11 +2981,11 @@ if (ic->meta_dev) queue_work(ic->writer_wq, &ic->writer_work); drain_workqueue(ic->writer_wq); - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, true); } if (ic->mode == 'B') { - dm_integrity_flush_buffers(ic); + dm_integrity_flush_buffers(ic, true); #if 1 /* set to 0 to test bitmap replay code */ init_journal(ic, 0, ic->journal_sections, 0); @@ -3090,6 +3149,7 @@ arg_count += !!ic->journal_crypt_alg.alg_string; arg_count += !!ic->journal_mac_alg.alg_string; arg_count += (ic->sb->flags & cpu_to_le32(SB_FLAG_FIXED_PADDING)) != 0; + arg_count += ic->legacy_recalculate; DMEMIT("%s %llu %u %c %u", ic->dev->name, ic->start, ic->tag_size, ic->mode, arg_count); if (ic->meta_dev) @@ -3113,6 +3173,8 @@ } if ((ic->sb->flags & cpu_to_le32(SB_FLAG_FIXED_PADDING)) != 0) DMEMIT(" fix_padding"); + if (ic->legacy_recalculate) + DMEMIT(" legacy_recalculate"); #define EMIT_ALG(a, n) \ do { \ @@ -3742,7 +3804,7 @@ unsigned extra_args; struct dm_arg_set as; static const struct dm_arg _args[] = { - {0, 9, "Invalid number of feature args"}, + {0, 16, "Invalid number of feature args"}, }; unsigned journal_sectors, interleave_sectors, buffer_sectors, journal_watermark, sync_msec; bool should_write_sb; @@ -3890,6 +3952,8 @@ ic->discard = true; } else if (!strcmp(opt_string, "fix_padding")) { ic->fix_padding = true; + } else if (!strcmp(opt_string, "legacy_recalculate")) { + ic->legacy_recalculate = true; } else { r = -EINVAL; ti->error = "Invalid argument"; @@ -4185,6 +4249,20 @@ r = -ENOMEM; goto bad; } + } else { + if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING)) { + ti->error = "Recalculate can only be specified with internal_hash"; + r = -EINVAL; + goto bad; + } + } + + if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING) && + le64_to_cpu(ic->sb->recalc_sector) < ic->provided_data_sectors && + dm_integrity_disable_recalculate(ic)) { + ti->error = "Recalculating with HMAC is disabled for security reasons - if you really need it, use the argument \"legacy_recalculate\""; + r = -EOPNOTSUPP; + goto bad; } ic->bufio = dm_bufio_client_create(ic->meta_dev ? ic->meta_dev->bdev : ic->dev->bdev, --- linux-5.8.0.orig/drivers/md/dm-ioctl.c +++ linux-5.8.0/drivers/md/dm-ioctl.c @@ -529,7 +529,7 @@ * Grab our output buffer. */ nl = orig_nl = get_result_buffer(param, param_size, &len); - if (len < needed) { + if (len < needed || len < sizeof(nl->dev)) { param->flags |= DM_BUFFER_FULL_FLAG; goto out; } @@ -1600,6 +1600,7 @@ if (!argc) { DMWARN("Empty message received."); + r = -EINVAL; goto out_argv; } --- linux-5.8.0.orig/drivers/md/dm-mpath.c +++ linux-5.8.0/drivers/md/dm-mpath.c @@ -1247,17 +1247,25 @@ static void flush_multipath_work(struct multipath *m) { if (m->hw_handler_name) { - set_bit(MPATHF_PG_INIT_DISABLED, &m->flags); - smp_mb__after_atomic(); + unsigned long flags; + + if (!atomic_read(&m->pg_init_in_progress)) + goto skip; + + spin_lock_irqsave(&m->lock, flags); + if (atomic_read(&m->pg_init_in_progress) && + !test_and_set_bit(MPATHF_PG_INIT_DISABLED, &m->flags)) { + spin_unlock_irqrestore(&m->lock, flags); - if (atomic_read(&m->pg_init_in_progress)) flush_workqueue(kmpath_handlerd); - multipath_wait_for_pg_init_completion(m); + multipath_wait_for_pg_init_completion(m); - clear_bit(MPATHF_PG_INIT_DISABLED, &m->flags); - smp_mb__after_atomic(); + spin_lock_irqsave(&m->lock, flags); + clear_bit(MPATHF_PG_INIT_DISABLED, &m->flags); + } + spin_unlock_irqrestore(&m->lock, flags); } - +skip: if (m->queue_mode == DM_TYPE_BIO_BASED) flush_work(&m->process_queued_bios); flush_work(&m->trigger_event); --- linux-5.8.0.orig/drivers/md/dm-raid.c +++ linux-5.8.0/drivers/md/dm-raid.c @@ -3744,10 +3744,10 @@ blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs)); /* - * RAID1 and RAID10 personalities require bio splitting, - * RAID0/4/5/6 don't and process large discard bios properly. + * RAID0 and RAID10 personalities require bio splitting, + * RAID1/4/5/6 don't and process large discard bios properly. */ - if (rs_is_raid1(rs) || rs_is_raid10(rs)) { + if (rs_is_raid0(rs) || rs_is_raid10(rs)) { limits->discard_granularity = chunk_size_bytes; limits->max_discard_sectors = rs->md.chunk_sectors; } --- linux-5.8.0.orig/drivers/md/dm-rq.c +++ linux-5.8.0/drivers/md/dm-rq.c @@ -70,9 +70,6 @@ void dm_stop_queue(struct request_queue *q) { - if (blk_mq_queue_stopped(q)) - return; - blk_mq_quiesce_queue(q); } --- linux-5.8.0.orig/drivers/md/dm-snap.c +++ linux-5.8.0/drivers/md/dm-snap.c @@ -141,6 +141,11 @@ * for them to be committed. */ struct bio_list bios_queued_during_merge; + + /* + * Flush data after merge. + */ + struct bio flush_bio; }; /* @@ -1121,6 +1126,17 @@ static void error_bios(struct bio *bio); +static int flush_data(struct dm_snapshot *s) +{ + struct bio *flush_bio = &s->flush_bio; + + bio_reset(flush_bio); + bio_set_dev(flush_bio, s->origin->bdev); + flush_bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH; + + return submit_bio_wait(flush_bio); +} + static void merge_callback(int read_err, unsigned long write_err, void *context) { struct dm_snapshot *s = context; @@ -1134,6 +1150,11 @@ goto shut; } + if (flush_data(s) < 0) { + DMERR("Flush after merge failed: shutting down merge"); + goto shut; + } + if (s->store->type->commit_merge(s->store, s->num_merging_chunks) < 0) { DMERR("Write error in exception store: shutting down merge"); @@ -1318,6 +1339,7 @@ s->first_merging_chunk = 0; s->num_merging_chunks = 0; bio_list_init(&s->bios_queued_during_merge); + bio_init(&s->flush_bio, NULL, 0); /* Allocate hash table for COW data */ if (init_hash_tables(s)) { @@ -1504,6 +1526,8 @@ dm_exception_store_destroy(s->store); + bio_uninit(&s->flush_bio); + dm_put_device(ti, s->cow); dm_put_device(ti, s->origin); --- linux-5.8.0.orig/drivers/md/dm-table.c +++ linux-5.8.0/drivers/md/dm-table.c @@ -411,14 +411,23 @@ { int r; dev_t dev; + unsigned int major, minor; + char dummy; struct dm_dev_internal *dd; struct dm_table *t = ti->table; BUG_ON(!t); - dev = dm_get_dev_t(path); - if (!dev) - return -ENODEV; + if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) { + /* Extract the major/minor numbers */ + dev = MKDEV(major, minor); + if (MAJOR(dev) != major || MINOR(dev) != minor) + return -EOVERFLOW; + } else { + dev = dm_get_dev_t(path); + if (!dev) + return -ENODEV; + } dd = find_device(&t->devices, dev); if (!dd) { @@ -862,20 +871,24 @@ EXPORT_SYMBOL_GPL(dm_table_set_type); /* validate the dax capability of the target device span */ -int device_supports_dax(struct dm_target *ti, struct dm_dev *dev, +int device_not_dax_capable(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data) { - int blocksize = *(int *) data; + int blocksize = *(int *) data, id; + bool rc; + + id = dax_read_lock(); + rc = !dax_supported(dev->dax_dev, dev->bdev, blocksize, start, len); + dax_read_unlock(id); - return generic_fsdax_supported(dev->dax_dev, dev->bdev, blocksize, - start, len); + return rc; } /* Check devices support synchronous DAX */ -static int device_dax_synchronous(struct dm_target *ti, struct dm_dev *dev, - sector_t start, sector_t len, void *data) +static int device_not_dax_synchronous_capable(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) { - return dev->dax_dev && dax_synchronous(dev->dax_dev); + return !dev->dax_dev || !dax_synchronous(dev->dax_dev); } bool dm_table_supports_dax(struct dm_table *t, @@ -892,7 +905,7 @@ return false; if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, iterate_fn, blocksize)) + ti->type->iterate_devices(ti, iterate_fn, blocksize)) return false; } @@ -966,7 +979,7 @@ verify_bio_based: /* We must use this table as bio-based */ t->type = DM_TYPE_BIO_BASED; - if (dm_table_supports_dax(t, device_supports_dax, &page_size) || + if (dm_table_supports_dax(t, device_not_dax_capable, &page_size) || (list_empty(devices) && live_md_type == DM_TYPE_DAX_BIO_BASED)) { t->type = DM_TYPE_DAX_BIO_BASED; } else { @@ -1299,12 +1312,6 @@ void dm_table_event(struct dm_table *t) { - /* - * You can no longer call dm_table_event() from interrupt - * context, use a bottom half instead. - */ - BUG_ON(in_interrupt()); - mutex_lock(&_event_lock); if (t->event_fn) t->event_fn(t->event_context); @@ -1352,6 +1359,46 @@ return &t->targets[(KEYS_PER_NODE * n) + k]; } +/* + * type->iterate_devices() should be called when the sanity check needs to + * iterate and check all underlying data devices. iterate_devices() will + * iterate all underlying data devices until it encounters a non-zero return + * code, returned by whether the input iterate_devices_callout_fn, or + * iterate_devices() itself internally. + * + * For some target type (e.g. dm-stripe), one call of iterate_devices() may + * iterate multiple underlying devices internally, in which case a non-zero + * return code returned by iterate_devices_callout_fn will stop the iteration + * in advance. + * + * Cases requiring _any_ underlying device supporting some kind of attribute, + * should use the iteration structure like dm_table_any_dev_attr(), or call + * it directly. @func should handle semantics of positive examples, e.g. + * capable of something. + * + * Cases requiring _all_ underlying devices supporting some kind of attribute, + * should use the iteration structure like dm_table_supports_nowait() or + * dm_table_supports_discards(). Or introduce dm_table_all_devs_attr() that + * uses an @anti_func that handle semantics of counter examples, e.g. not + * capable of something. So: return !dm_table_any_dev_attr(t, anti_func, data); + */ +static bool dm_table_any_dev_attr(struct dm_table *t, + iterate_devices_callout_fn func, void *data) +{ + struct dm_target *ti; + unsigned int i; + + for (i = 0; i < dm_table_get_num_targets(t); i++) { + ti = dm_table_get_target(t, i); + + if (ti->type->iterate_devices && + ti->type->iterate_devices(ti, func, data)) + return true; + } + + return false; +} + static int count_device(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data) { @@ -1388,15 +1435,22 @@ return true; } -static int device_is_zoned_model(struct dm_target *ti, struct dm_dev *dev, - sector_t start, sector_t len, void *data) +static int device_not_zoned_model(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) { struct request_queue *q = bdev_get_queue(dev->bdev); enum blk_zoned_model *zoned_model = data; - return q && blk_queue_zoned_model(q) == *zoned_model; + return !q || blk_queue_zoned_model(q) != *zoned_model; } +/* + * Check the device zoned model based on the target feature flag. If the target + * has the DM_TARGET_ZONED_HM feature flag set, host-managed zoned devices are + * also accepted but all devices must have the same zoned model. If the target + * has the DM_TARGET_MIXED_ZONED_MODEL feature set, the devices can have any + * zoned model with all zoned devices having the same zone size. + */ static bool dm_table_supports_zoned_model(struct dm_table *t, enum blk_zoned_model zoned_model) { @@ -1406,44 +1460,37 @@ for (i = 0; i < dm_table_get_num_targets(t); i++) { ti = dm_table_get_target(t, i); - if (zoned_model == BLK_ZONED_HM && - !dm_target_supports_zoned_hm(ti->type)) - return false; - - if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, device_is_zoned_model, &zoned_model)) - return false; + if (dm_target_supports_zoned_hm(ti->type)) { + if (!ti->type->iterate_devices || + ti->type->iterate_devices(ti, device_not_zoned_model, + &zoned_model)) + return false; + } else if (!dm_target_supports_mixed_zoned_model(ti->type)) { + if (zoned_model == BLK_ZONED_HM) + return false; + } } return true; } -static int device_matches_zone_sectors(struct dm_target *ti, struct dm_dev *dev, - sector_t start, sector_t len, void *data) +static int device_not_matches_zone_sectors(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) { struct request_queue *q = bdev_get_queue(dev->bdev); unsigned int *zone_sectors = data; - return q && blk_queue_zone_sectors(q) == *zone_sectors; -} - -static bool dm_table_matches_zone_sectors(struct dm_table *t, - unsigned int zone_sectors) -{ - struct dm_target *ti; - unsigned i; - - for (i = 0; i < dm_table_get_num_targets(t); i++) { - ti = dm_table_get_target(t, i); - - if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, device_matches_zone_sectors, &zone_sectors)) - return false; - } + if (!blk_queue_is_zoned(q)) + return 0; - return true; + return !q || blk_queue_zone_sectors(q) != *zone_sectors; } +/* + * Check consistency of zoned model and zone sectors across all targets. For + * zone sectors, if the destination device is a zoned block device, it shall + * have the specified zone_sectors. + */ static int validate_hardware_zoned_model(struct dm_table *table, enum blk_zoned_model zoned_model, unsigned int zone_sectors) @@ -1461,8 +1508,8 @@ if (!zone_sectors || !is_power_of_2(zone_sectors)) return -EINVAL; - if (!dm_table_matches_zone_sectors(table, zone_sectors)) { - DMERR("%s: zone sectors is not consistent across all devices", + if (dm_table_any_dev_attr(table, device_not_matches_zone_sectors, &zone_sectors)) { + DMERR("%s: zone sectors is not consistent across all zoned devices", dm_device_name(table->md)); return -EINVAL; } @@ -1651,29 +1698,12 @@ return false; } -static int dm_table_supports_dax_write_cache(struct dm_table *t) -{ - struct dm_target *ti; - unsigned i; - - for (i = 0; i < dm_table_get_num_targets(t); i++) { - ti = dm_table_get_target(t, i); - - if (ti->type->iterate_devices && - ti->type->iterate_devices(ti, - device_dax_write_cache_enabled, NULL)) - return true; - } - - return false; -} - -static int device_is_nonrot(struct dm_target *ti, struct dm_dev *dev, - sector_t start, sector_t len, void *data) +static int device_is_rotational(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) { struct request_queue *q = bdev_get_queue(dev->bdev); - return q && blk_queue_nonrot(q); + return q && !blk_queue_nonrot(q); } static int device_is_not_random(struct dm_target *ti, struct dm_dev *dev, @@ -1684,35 +1714,18 @@ return q && !blk_queue_add_random(q); } -static bool dm_table_all_devices_attribute(struct dm_table *t, - iterate_devices_callout_fn func) -{ - struct dm_target *ti; - unsigned i; - - for (i = 0; i < dm_table_get_num_targets(t); i++) { - ti = dm_table_get_target(t, i); - - if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, func, NULL)) - return false; - } - - return true; -} - -static int device_no_partial_completion(struct dm_target *ti, struct dm_dev *dev, +static int device_is_partial_completion(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data) { char b[BDEVNAME_SIZE]; /* For now, NVMe devices are the only devices of this class */ - return (strncmp(bdevname(dev->bdev, b), "nvme", 4) == 0); + return (strncmp(bdevname(dev->bdev, b), "nvme", 4) != 0); } static bool dm_table_does_not_support_partial_completion(struct dm_table *t) { - return dm_table_all_devices_attribute(t, device_no_partial_completion); + return !dm_table_any_dev_attr(t, device_is_partial_completion, NULL); } static int device_not_write_same_capable(struct dm_target *ti, struct dm_dev *dev, @@ -1839,27 +1852,6 @@ return q && bdi_cap_stable_pages_required(q->backing_dev_info); } -/* - * If any underlying device requires stable pages, a table must require - * them as well. Only targets that support iterate_devices are considered: - * don't want error, zero, etc to require stable pages. - */ -static bool dm_table_requires_stable_pages(struct dm_table *t) -{ - struct dm_target *ti; - unsigned i; - - for (i = 0; i < dm_table_get_num_targets(t); i++) { - ti = dm_table_get_target(t, i); - - if (ti->type->iterate_devices && - ti->type->iterate_devices(ti, device_requires_stable_pages, NULL)) - return true; - } - - return false; -} - void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q, struct queue_limits *limits) { @@ -1892,22 +1884,22 @@ } blk_queue_write_cache(q, wc, fua); - if (dm_table_supports_dax(t, device_supports_dax, &page_size)) { + if (dm_table_supports_dax(t, device_not_dax_capable, &page_size)) { blk_queue_flag_set(QUEUE_FLAG_DAX, q); - if (dm_table_supports_dax(t, device_dax_synchronous, NULL)) + if (dm_table_supports_dax(t, device_not_dax_synchronous_capable, NULL)) set_dax_synchronous(t->md->dax_dev); } else blk_queue_flag_clear(QUEUE_FLAG_DAX, q); - if (dm_table_supports_dax_write_cache(t)) + if (dm_table_any_dev_attr(t, device_dax_write_cache_enabled, NULL)) dax_write_cache(t->md->dax_dev, true); /* Ensure that all underlying devices are non-rotational. */ - if (dm_table_all_devices_attribute(t, device_is_nonrot)) - blk_queue_flag_set(QUEUE_FLAG_NONROT, q); - else + if (dm_table_any_dev_attr(t, device_is_rotational, NULL)) blk_queue_flag_clear(QUEUE_FLAG_NONROT, q); + else + blk_queue_flag_set(QUEUE_FLAG_NONROT, q); if (!dm_table_supports_write_same(t)) q->limits.max_write_same_sectors = 0; @@ -1919,8 +1911,11 @@ /* * Some devices don't use blk_integrity but still want stable pages * because they do their own checksumming. + * If any underlying device requires stable pages, a table must require + * them as well. Only targets that support iterate_devices are considered: + * don't want error, zero, etc to require stable pages. */ - if (dm_table_requires_stable_pages(t)) + if (dm_table_any_dev_attr(t, device_requires_stable_pages, NULL)) q->backing_dev_info->capabilities |= BDI_CAP_STABLE_WRITES; else q->backing_dev_info->capabilities &= ~BDI_CAP_STABLE_WRITES; @@ -1931,7 +1926,8 @@ * Clear QUEUE_FLAG_ADD_RANDOM if any underlying device does not * have it set. */ - if (blk_queue_add_random(q) && dm_table_all_devices_attribute(t, device_is_not_random)) + if (blk_queue_add_random(q) && + dm_table_any_dev_attr(t, device_is_not_random, NULL)) blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, q); /* --- linux-5.8.0.orig/drivers/md/dm-thin-metadata.c +++ linux-5.8.0/drivers/md/dm-thin-metadata.c @@ -739,12 +739,16 @@ THIN_MAX_CONCURRENT_LOCKS); if (IS_ERR(pmd->bm)) { DMERR("could not create block manager"); - return PTR_ERR(pmd->bm); + r = PTR_ERR(pmd->bm); + pmd->bm = NULL; + return r; } r = __open_or_format_metadata(pmd, format_device); - if (r) + if (r) { dm_block_manager_destroy(pmd->bm); + pmd->bm = NULL; + } return r; } @@ -954,7 +958,7 @@ } pmd_write_lock_in_core(pmd); - if (!dm_bm_is_read_only(pmd->bm) && !pmd->fail_io) { + if (!pmd->fail_io && !dm_bm_is_read_only(pmd->bm)) { r = __commit_transaction(pmd); if (r < 0) DMWARN("%s: __commit_transaction() failed, error = %d", --- linux-5.8.0.orig/drivers/md/dm-verity-fec.c +++ linux-5.8.0/drivers/md/dm-verity-fec.c @@ -61,19 +61,18 @@ static u8 *fec_read_parity(struct dm_verity *v, u64 rsb, int index, unsigned *offset, struct dm_buffer **buf) { - u64 position, block; + u64 position, block, rem; u8 *res; position = (index + rsb) * v->fec->roots; - block = position >> v->data_dev_block_bits; - *offset = (unsigned)(position - (block << v->data_dev_block_bits)); + block = div64_u64_rem(position, v->fec->roots << SECTOR_SHIFT, &rem); + *offset = (unsigned)rem; - res = dm_bufio_read(v->fec->bufio, v->fec->start + block, buf); + res = dm_bufio_read(v->fec->bufio, block, buf); if (IS_ERR(res)) { DMERR("%s: FEC %llu: parity read failed (block %llu): %ld", v->data_dev->name, (unsigned long long)rsb, - (unsigned long long)(v->fec->start + block), - PTR_ERR(res)); + (unsigned long long)block, PTR_ERR(res)); *buf = NULL; } @@ -155,7 +154,7 @@ /* read the next block when we run out of parity bytes */ offset += v->fec->roots; - if (offset >= 1 << v->data_dev_block_bits) { + if (offset >= v->fec->roots << SECTOR_SHIFT) { dm_bufio_release(buf); par = fec_read_parity(v, rsb, block_offset, &offset, &buf); @@ -674,7 +673,7 @@ { struct dm_verity_fec *f = v->fec; struct dm_target *ti = v->ti; - u64 hash_blocks; + u64 hash_blocks, fec_blocks; int ret; if (!verity_fec_is_enabled(v)) { @@ -744,15 +743,17 @@ } f->bufio = dm_bufio_client_create(f->dev->bdev, - 1 << v->data_dev_block_bits, + f->roots << SECTOR_SHIFT, 1, 0, NULL, NULL); if (IS_ERR(f->bufio)) { ti->error = "Cannot initialize FEC bufio client"; return PTR_ERR(f->bufio); } - if (dm_bufio_get_device_size(f->bufio) < - ((f->start + f->rounds * f->roots) >> v->data_dev_block_bits)) { + dm_bufio_set_sector_offset(f->bufio, f->start << (v->data_dev_block_bits - SECTOR_SHIFT)); + + fec_blocks = div64_u64(f->rounds * f->roots, v->fec->roots << SECTOR_SHIFT); + if (dm_bufio_get_device_size(f->bufio) < fec_blocks) { ti->error = "FEC device is too small"; return -E2BIG; } --- linux-5.8.0.orig/drivers/md/dm-verity-target.c +++ linux-5.8.0/drivers/md/dm-verity-target.c @@ -33,7 +33,7 @@ #define DM_VERITY_OPT_IGN_ZEROES "ignore_zero_blocks" #define DM_VERITY_OPT_AT_MOST_ONCE "check_at_most_once" -#define DM_VERITY_OPTS_MAX (2 + DM_VERITY_OPTS_FEC + \ +#define DM_VERITY_OPTS_MAX (3 + DM_VERITY_OPTS_FEC + \ DM_VERITY_ROOT_HASH_VERIFICATION_OPTS) static unsigned dm_verity_prefetch_cluster = DM_VERITY_DEFAULT_PREFETCH_SIZE; @@ -534,6 +534,15 @@ } /* + * Skip verity work in response to I/O error when system is shutting down. + */ +static inline bool verity_is_system_shutting_down(void) +{ + return system_state == SYSTEM_HALT || system_state == SYSTEM_POWER_OFF + || system_state == SYSTEM_RESTART; +} + +/* * End one "io" structure with a given error. */ static void verity_finish_io(struct dm_verity_io *io, blk_status_t status) @@ -560,7 +569,8 @@ { struct dm_verity_io *io = bio->bi_private; - if (bio->bi_status && !verity_fec_is_enabled(io->v)) { + if (bio->bi_status && + (!verity_fec_is_enabled(io->v) || verity_is_system_shutting_down())) { verity_finish_io(io, bio->bi_status); return; } --- linux-5.8.0.orig/drivers/md/dm-writecache.c +++ linux-5.8.0/drivers/md/dm-writecache.c @@ -49,7 +49,7 @@ #define pmem_assign(dest, src) ((dest) = (src)) #endif -#if defined(__HAVE_ARCH_MEMCPY_MCSAFE) && defined(DM_WRITECACHE_HAS_PMEM) +#if IS_ENABLED(CONFIG_ARCH_HAS_COPY_MC) && defined(DM_WRITECACHE_HAS_PMEM) #define DM_WRITECACHE_HANDLE_HARDWARE_ERRORS #endif @@ -148,6 +148,7 @@ size_t metadata_sectors; size_t n_blocks; uint64_t seq_count; + sector_t data_device_sectors; void *block_start; struct wc_entry *entries; unsigned block_size; @@ -159,14 +160,22 @@ bool overwrote_committed:1; bool memory_vmapped:1; + bool start_sector_set:1; bool high_wm_percent_set:1; bool low_wm_percent_set:1; bool max_writeback_jobs_set:1; bool autocommit_blocks_set:1; bool autocommit_time_set:1; + bool max_age_set:1; bool writeback_fua_set:1; bool flush_on_suspend:1; bool cleaner:1; + bool cleaner_set:1; + + unsigned high_wm_percent_value; + unsigned low_wm_percent_value; + unsigned autocommit_time_value; + unsigned max_age_value; unsigned writeback_all; struct workqueue_struct *writeback_wq; @@ -231,6 +240,7 @@ pfn_t pfn; int id; struct page **pages; + sector_t offset; wc->memory_vmapped = false; @@ -245,9 +255,16 @@ goto err1; } + offset = get_start_sect(wc->ssd_dev->bdev); + if (offset & (PAGE_SIZE / 512 - 1)) { + r = -EINVAL; + goto err1; + } + offset >>= PAGE_SHIFT - 9; + id = dax_read_lock(); - da = dax_direct_access(wc->ssd_dev->dax_dev, 0, p, &wc->memory_map, &pfn); + da = dax_direct_access(wc->ssd_dev->dax_dev, offset, p, &wc->memory_map, &pfn); if (da < 0) { wc->memory_map = NULL; r = da; @@ -269,7 +286,7 @@ i = 0; do { long daa; - daa = dax_direct_access(wc->ssd_dev->dax_dev, i, p - i, + daa = dax_direct_access(wc->ssd_dev->dax_dev, offset + i, p - i, NULL, &pfn); if (daa <= 0) { r = daa ? daa : -EINVAL; @@ -311,7 +328,7 @@ #else static int persistent_memory_claim(struct dm_writecache *wc) { - BUG(); + return -EOPNOTSUPP; } #endif @@ -515,7 +532,7 @@ region.bdev = wc->ssd_dev->bdev; region.sector = 0; - region.count = PAGE_SIZE; + region.count = PAGE_SIZE >> SECTOR_SHIFT; if (unlikely(region.sector + region.count > wc->metadata_sectors)) region.count = wc->metadata_sectors - region.sector; @@ -961,6 +978,8 @@ wc_lock(wc); + wc->data_device_sectors = i_size_read(wc->dev->bdev->bd_inode) >> SECTOR_SHIFT; + if (WC_MODE_PMEM(wc)) { persistent_memory_invalidate_cache(wc->memory_map, wc->memory_map_size); } else { @@ -984,7 +1003,8 @@ } wc->freelist_size = 0; - r = memcpy_mcsafe(&sb_seq_count, &sb(wc)->seq_count, sizeof(uint64_t)); + r = copy_mc_to_kernel(&sb_seq_count, &sb(wc)->seq_count, + sizeof(uint64_t)); if (r) { writecache_error(wc, r, "hardware memory error when reading superblock: %d", r); sb_seq_count = cpu_to_le64(0); @@ -1000,7 +1020,8 @@ e->seq_count = -1; continue; } - r = memcpy_mcsafe(&wme, memory_entry(wc, e), sizeof(struct wc_memory_entry)); + r = copy_mc_to_kernel(&wme, memory_entry(wc, e), + sizeof(struct wc_memory_entry)); if (r) { writecache_error(wc, r, "hardware memory error when reading metadata entry %lu: %d", (unsigned long)b, r); @@ -1198,7 +1219,7 @@ if (rw == READ) { int r; - r = memcpy_mcsafe(buf, data, size); + r = copy_mc_to_kernel(buf, data, size); flush_dcache_page(bio_page(bio)); if (unlikely(r)) { writecache_error(wc, r, "hardware memory error when reading data: %d", r); @@ -1628,6 +1649,10 @@ void *address = memory_data(wc, e); persistent_memory_flush_cache(address, block_size); + + if (unlikely(bio_end_sector(&wb->bio) >= wc->data_device_sectors)) + return true; + return bio_add_page(&wb->bio, persistent_memory_page(address), block_size, persistent_memory_page_offset(address)) != 0; } @@ -1699,6 +1724,9 @@ if (writecache_has_error(wc)) { bio->bi_status = BLK_STS_IOERR; bio_endio(bio); + } else if (unlikely(!bio_sectors(bio))) { + bio->bi_status = BLK_STS_OK; + bio_endio(bio); } else { submit_bio(bio); } @@ -1742,6 +1770,14 @@ e = f; } + if (unlikely(to.sector + to.count > wc->data_device_sectors)) { + if (to.sector >= wc->data_device_sectors) { + writecache_copy_endio(0, 0, c); + continue; + } + from.count = to.count = wc->data_device_sectors - to.sector; + } + dm_kcopyd_copy(wc->dm_kcopyd, &from, 1, &to, 0, writecache_copy_endio, c); __writeback_throttle(wc, wbl); @@ -2031,7 +2067,7 @@ struct wc_memory_superblock s; static struct dm_arg _args[] = { - {0, 10, "Invalid number of feature args"}, + {0, 16, "Invalid number of feature args"}, }; as.argc = argc; @@ -2195,6 +2231,7 @@ if (sscanf(string, "%llu%c", &start_sector, &dummy) != 1) goto invalid_optional; wc->start_sector = start_sector; + wc->start_sector_set = true; if (wc->start_sector != start_sector || wc->start_sector >= wc->memory_map_size >> SECTOR_SHIFT) goto invalid_optional; @@ -2204,6 +2241,7 @@ goto invalid_optional; if (high_wm_percent < 0 || high_wm_percent > 100) goto invalid_optional; + wc->high_wm_percent_value = high_wm_percent; wc->high_wm_percent_set = true; } else if (!strcasecmp(string, "low_watermark") && opt_params >= 1) { string = dm_shift_arg(&as), opt_params--; @@ -2211,6 +2249,7 @@ goto invalid_optional; if (low_wm_percent < 0 || low_wm_percent > 100) goto invalid_optional; + wc->low_wm_percent_value = low_wm_percent; wc->low_wm_percent_set = true; } else if (!strcasecmp(string, "writeback_jobs") && opt_params >= 1) { string = dm_shift_arg(&as), opt_params--; @@ -2230,6 +2269,7 @@ if (autocommit_msecs > 3600000) goto invalid_optional; wc->autocommit_jiffies = msecs_to_jiffies(autocommit_msecs); + wc->autocommit_time_value = autocommit_msecs; wc->autocommit_time_set = true; } else if (!strcasecmp(string, "max_age") && opt_params >= 1) { unsigned max_age_msecs; @@ -2239,7 +2279,10 @@ if (max_age_msecs > 86400000) goto invalid_optional; wc->max_age = msecs_to_jiffies(max_age_msecs); + wc->max_age_set = true; + wc->max_age_value = max_age_msecs; } else if (!strcasecmp(string, "cleaner")) { + wc->cleaner_set = true; wc->cleaner = true; } else if (!strcasecmp(string, "fua")) { if (WC_MODE_PMEM(wc)) { @@ -2341,7 +2384,7 @@ } } - r = memcpy_mcsafe(&s, sb(wc), sizeof(struct wc_memory_superblock)); + r = copy_mc_to_kernel(&s, sb(wc), sizeof(struct wc_memory_superblock)); if (r) { ti->error = "Hardware memory error when reading superblock"; goto bad; @@ -2352,7 +2395,8 @@ ti->error = "Unable to initialize device"; goto bad; } - r = memcpy_mcsafe(&s, sb(wc), sizeof(struct wc_memory_superblock)); + r = copy_mc_to_kernel(&s, sb(wc), + sizeof(struct wc_memory_superblock)); if (r) { ti->error = "Hardware memory error when reading superblock"; goto bad; @@ -2444,7 +2488,6 @@ struct dm_writecache *wc = ti->private; unsigned extra_args; unsigned sz = 0; - uint64_t x; switch (type) { case STATUSTYPE_INFO: @@ -2456,11 +2499,11 @@ DMEMIT("%c %s %s %u ", WC_MODE_PMEM(wc) ? 'p' : 's', wc->dev->name, wc->ssd_dev->name, wc->block_size); extra_args = 0; - if (wc->start_sector) + if (wc->start_sector_set) extra_args += 2; - if (wc->high_wm_percent_set && !wc->cleaner) + if (wc->high_wm_percent_set) extra_args += 2; - if (wc->low_wm_percent_set && !wc->cleaner) + if (wc->low_wm_percent_set) extra_args += 2; if (wc->max_writeback_jobs_set) extra_args += 2; @@ -2468,35 +2511,29 @@ extra_args += 2; if (wc->autocommit_time_set) extra_args += 2; - if (wc->cleaner) + if (wc->max_age_set) + extra_args += 2; + if (wc->cleaner_set) extra_args++; if (wc->writeback_fua_set) extra_args++; DMEMIT("%u", extra_args); - if (wc->start_sector) + if (wc->start_sector_set) DMEMIT(" start_sector %llu", (unsigned long long)wc->start_sector); - if (wc->high_wm_percent_set && !wc->cleaner) { - x = (uint64_t)wc->freelist_high_watermark * 100; - x += wc->n_blocks / 2; - do_div(x, (size_t)wc->n_blocks); - DMEMIT(" high_watermark %u", 100 - (unsigned)x); - } - if (wc->low_wm_percent_set && !wc->cleaner) { - x = (uint64_t)wc->freelist_low_watermark * 100; - x += wc->n_blocks / 2; - do_div(x, (size_t)wc->n_blocks); - DMEMIT(" low_watermark %u", 100 - (unsigned)x); - } + if (wc->high_wm_percent_set) + DMEMIT(" high_watermark %u", wc->high_wm_percent_value); + if (wc->low_wm_percent_set) + DMEMIT(" low_watermark %u", wc->low_wm_percent_value); if (wc->max_writeback_jobs_set) DMEMIT(" writeback_jobs %u", wc->max_writeback_jobs); if (wc->autocommit_blocks_set) DMEMIT(" autocommit_blocks %u", wc->autocommit_blocks); if (wc->autocommit_time_set) - DMEMIT(" autocommit_time %u", jiffies_to_msecs(wc->autocommit_jiffies)); - if (wc->max_age != MAX_AGE_UNSPECIFIED) - DMEMIT(" max_age %u", jiffies_to_msecs(wc->max_age)); - if (wc->cleaner) + DMEMIT(" autocommit_time %u", wc->autocommit_time_value); + if (wc->max_age_set) + DMEMIT(" max_age %u", wc->max_age_value); + if (wc->cleaner_set) DMEMIT(" cleaner"); if (wc->writeback_fua_set) DMEMIT(" %sfua", wc->writeback_fua ? "" : "no"); @@ -2506,7 +2543,7 @@ static struct target_type writecache_target = { .name = "writecache", - .version = {1, 3, 0}, + .version = {1, 4, 0}, .module = THIS_MODULE, .ctr = writecache_ctr, .dtr = writecache_dtr, --- linux-5.8.0.orig/drivers/md/dm-zoned-target.c +++ linux-5.8.0/drivers/md/dm-zoned-target.c @@ -1143,7 +1143,7 @@ static struct target_type dmz_type = { .name = "zoned", .version = {2, 0, 0}, - .features = DM_TARGET_SINGLETON | DM_TARGET_ZONED_HM, + .features = DM_TARGET_SINGLETON | DM_TARGET_MIXED_ZONED_MODEL, .module = THIS_MODULE, .ctr = dmz_ctr, .dtr = dmz_dtr, --- linux-5.8.0.orig/drivers/md/dm.c +++ linux-5.8.0/drivers/md/dm.c @@ -148,6 +148,16 @@ #define DM_NUMA_NODE NUMA_NO_NODE static int dm_numa_node = DM_NUMA_NODE; +#define DEFAULT_SWAP_BIOS (8 * 1048576 / PAGE_SIZE) +static int swap_bios = DEFAULT_SWAP_BIOS; +static int get_swap_bios(void) +{ + int latch = READ_ONCE(swap_bios); + if (unlikely(latch <= 0)) + latch = DEFAULT_SWAP_BIOS; + return latch; +} + /* * For mempools pre-allocation at the table loading time. */ @@ -491,8 +501,10 @@ return -EAGAIN; map = dm_get_live_table(md, &srcu_idx); - if (!map) - return -EIO; + if (!map) { + ret = -EIO; + goto out; + } do { struct dm_target *tgt; @@ -504,7 +516,8 @@ } args.tgt = tgt; - ret = tgt->type->report_zones(tgt, &args, nr_zones); + ret = tgt->type->report_zones(tgt, &args, + nr_zones - args.zone_idx); if (ret < 0) goto out; } while (args.zone_idx < nr_zones && @@ -521,7 +534,6 @@ static int dm_prepare_ioctl(struct mapped_device *md, int *srcu_idx, struct block_device **bdev) - __acquires(md->io_barrier) { struct dm_target *tgt; struct dm_table *map; @@ -555,7 +567,6 @@ } static void dm_unprepare_ioctl(struct mapped_device *md, int srcu_idx) - __releases(md->io_barrier) { dm_put_live_table(md, srcu_idx); } @@ -576,7 +587,7 @@ * subset of the parent bdev; require extra privileges. */ if (!capable(CAP_SYS_RAWIO)) { - DMWARN_LIMIT( + DMDEBUG_LIMIT( "%s: sending ioctl %x to DM device without required privilege.", current->comm, cmd); r = -ENOIOCTLCMD; @@ -982,6 +993,11 @@ limits->max_write_zeroes_sectors = 0; } +static bool swap_bios_limit(struct dm_target *ti, struct bio *bio) +{ + return unlikely((bio->bi_opf & REQ_SWAP) != 0) && unlikely(ti->limit_swap_bios); +} + static void clone_endio(struct bio *bio) { blk_status_t error = bio->bi_status; @@ -1032,6 +1048,11 @@ } } + if (unlikely(swap_bios_limit(tio->ti, bio))) { + struct mapped_device *md = io->md; + up(&md->swap_bios_semaphore); + } + free_tio(tio); dec_pending(io, error); } @@ -1135,15 +1156,16 @@ { struct mapped_device *md = dax_get_private(dax_dev); struct dm_table *map; + bool ret = false; int srcu_idx; - bool ret; map = dm_get_live_table(md, &srcu_idx); if (!map) - return false; + goto out; - ret = dm_table_supports_dax(map, device_supports_dax, &blocksize); + ret = dm_table_supports_dax(map, device_not_dax_capable, &blocksize); +out: dm_put_live_table(md, srcu_idx); return ret; @@ -1215,11 +1237,9 @@ * ->zero_page_range() is mandatory dax operation. If we are * here, something is wrong. */ - dm_put_live_table(md, srcu_idx); goto out; } ret = ti->type->dax_zero_page_range(ti, pgoff, nr_pages); - out: dm_put_live_table(md, srcu_idx); @@ -1267,6 +1287,22 @@ } EXPORT_SYMBOL_GPL(dm_accept_partial_bio); +static noinline void __set_swap_bios_limit(struct mapped_device *md, int latch) +{ + mutex_lock(&md->swap_bios_lock); + while (latch < md->swap_bios) { + cond_resched(); + down(&md->swap_bios_semaphore); + md->swap_bios--; + } + while (latch > md->swap_bios) { + cond_resched(); + up(&md->swap_bios_semaphore); + md->swap_bios++; + } + mutex_unlock(&md->swap_bios_lock); +} + static blk_qc_t __map_bio(struct dm_target_io *tio) { int r; @@ -1287,6 +1323,14 @@ atomic_inc(&io->io_count); sector = clone->bi_iter.bi_sector; + if (unlikely(swap_bios_limit(ti, clone))) { + struct mapped_device *md = io->md; + int latch = get_swap_bios(); + if (unlikely(latch != md->swap_bios)) + __set_swap_bios_limit(md, latch); + down(&md->swap_bios_semaphore); + } + r = ti->type->map(ti, clone); switch (r) { case DM_MAPIO_SUBMITTED: @@ -1301,10 +1345,18 @@ ret = generic_make_request(clone); break; case DM_MAPIO_KILL: + if (unlikely(swap_bios_limit(ti, clone))) { + struct mapped_device *md = io->md; + up(&md->swap_bios_semaphore); + } free_tio(tio); dec_pending(io, BLK_STS_IOERR); break; case DM_MAPIO_REQUEUE: + if (unlikely(swap_bios_limit(ti, clone))) { + struct mapped_device *md = io->md; + up(&md->swap_bios_semaphore); + } free_tio(tio); dec_pending(io, BLK_STS_DM_REQUEUE); break; @@ -1726,23 +1778,6 @@ return ret; } -static void dm_queue_split(struct mapped_device *md, struct dm_target *ti, struct bio **bio) -{ - unsigned len, sector_count; - - sector_count = bio_sectors(*bio); - len = min_t(sector_t, max_io_len((*bio)->bi_iter.bi_sector, ti), sector_count); - - if (sector_count > len) { - struct bio *split = bio_split(*bio, len, GFP_NOIO, &md->queue->bio_split); - - bio_chain(split, *bio); - trace_block_split(md->queue, split, (*bio)->bi_iter.bi_sector); - generic_make_request(*bio); - *bio = split; - } -} - static blk_qc_t dm_process_bio(struct mapped_device *md, struct dm_table *map, struct bio *bio) { @@ -1770,14 +1805,12 @@ if (current->bio_list) { if (is_abnormal_io(bio)) blk_queue_split(md->queue, &bio); - else - dm_queue_split(md, ti, &bio); + /* regular IO is split by __split_and_process_bio */ } if (dm_get_md_type(md) == DM_TYPE_NVME_BIO_BASED) return __process_bio(md, map, bio, ti); - else - return __split_and_process_bio(md, map, bio); + return __split_and_process_bio(md, map, bio); } static blk_qc_t dm_make_request(struct request_queue *q, struct bio *bio) @@ -1931,6 +1964,7 @@ mutex_destroy(&md->suspend_lock); mutex_destroy(&md->type_lock); mutex_destroy(&md->table_devices_lock); + mutex_destroy(&md->swap_bios_lock); dm_mq_cleanup_mapped_device(md); } @@ -1999,6 +2033,10 @@ init_waitqueue_head(&md->eventq); init_completion(&md->kobj_holder.completion); + md->swap_bios = get_swap_bios(); + sema_init(&md->swap_bios_semaphore, md->swap_bios); + mutex_init(&md->swap_bios_lock); + md->disk->major = _major; md->disk->first_minor = minor; md->disk->fops = &dm_blk_dops; @@ -3318,6 +3356,9 @@ module_param(dm_numa_node, int, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(dm_numa_node, "NUMA node for DM device memory allocations"); +module_param(swap_bios, int, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(swap_bios, "Maximum allowed inflight swap IOs"); + MODULE_DESCRIPTION(DM_NAME " driver"); MODULE_AUTHOR("Joe Thornber "); MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/md/dm.h +++ linux-5.8.0/drivers/md/dm.h @@ -74,7 +74,7 @@ struct dm_md_mempools *dm_table_get_md_mempools(struct dm_table *t); bool dm_table_supports_dax(struct dm_table *t, iterate_devices_callout_fn fn, int *blocksize); -int device_supports_dax(struct dm_target *ti, struct dm_dev *dev, +int device_not_dax_capable(struct dm_target *ti, struct dm_dev *dev, sector_t start, sector_t len, void *data); void dm_lock_md_type(struct mapped_device *md); --- linux-5.8.0.orig/drivers/md/md-bitmap.c +++ linux-5.8.0/drivers/md/md-bitmap.c @@ -1367,7 +1367,7 @@ if (bitmap->bp[page].hijacked || bitmap->bp[page].map == NULL) csize = ((sector_t)1) << (bitmap->chunkshift + - PAGE_COUNTER_SHIFT - 1); + PAGE_COUNTER_SHIFT); else csize = ((sector_t)1) << bitmap->chunkshift; *blocks = csize - (offset & (csize - 1)); @@ -1949,6 +1949,7 @@ } EXPORT_SYMBOL_GPL(md_bitmap_load); +/* caller need to free returned bitmap with md_bitmap_free() */ struct bitmap *get_bitmap_from_slot(struct mddev *mddev, int slot) { int rv = 0; @@ -2012,6 +2013,7 @@ md_bitmap_unplug(mddev->bitmap); *low = lo; *high = hi; + md_bitmap_free(bitmap); return rv; } @@ -2615,4 +2617,3 @@ .name = "bitmap", .attrs = md_bitmap_attrs, }; - --- linux-5.8.0.orig/drivers/md/md-cluster.c +++ linux-5.8.0/drivers/md/md-cluster.c @@ -664,9 +664,27 @@ * Takes the lock on the TOKEN lock resource so no other * node can communicate while the operation is underway. */ -static int lock_token(struct md_cluster_info *cinfo, bool mddev_locked) +static int lock_token(struct md_cluster_info *cinfo) { - int error, set_bit = 0; + int error; + + error = dlm_lock_sync(cinfo->token_lockres, DLM_LOCK_EX); + if (error) { + pr_err("md-cluster(%s:%d): failed to get EX on TOKEN (%d)\n", + __func__, __LINE__, error); + } else { + /* Lock the receive sequence */ + mutex_lock(&cinfo->recv_mutex); + } + return error; +} + +/* lock_comm() + * Sets the MD_CLUSTER_SEND_LOCK bit to lock the send channel. + */ +static int lock_comm(struct md_cluster_info *cinfo, bool mddev_locked) +{ + int rv, set_bit = 0; struct mddev *mddev = cinfo->mddev; /* @@ -677,34 +695,19 @@ */ if (mddev_locked && !test_bit(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, &cinfo->state)) { - error = test_and_set_bit_lock(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, + rv = test_and_set_bit_lock(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, &cinfo->state); - WARN_ON_ONCE(error); + WARN_ON_ONCE(rv); md_wakeup_thread(mddev->thread); set_bit = 1; } - error = dlm_lock_sync(cinfo->token_lockres, DLM_LOCK_EX); - if (set_bit) - clear_bit_unlock(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, &cinfo->state); - if (error) - pr_err("md-cluster(%s:%d): failed to get EX on TOKEN (%d)\n", - __func__, __LINE__, error); - - /* Lock the receive sequence */ - mutex_lock(&cinfo->recv_mutex); - return error; -} - -/* lock_comm() - * Sets the MD_CLUSTER_SEND_LOCK bit to lock the send channel. - */ -static int lock_comm(struct md_cluster_info *cinfo, bool mddev_locked) -{ wait_event(cinfo->wait, !test_and_set_bit(MD_CLUSTER_SEND_LOCK, &cinfo->state)); - - return lock_token(cinfo, mddev_locked); + rv = lock_token(cinfo); + if (set_bit) + clear_bit_unlock(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, &cinfo->state); + return rv; } static void unlock_comm(struct md_cluster_info *cinfo) @@ -784,9 +787,11 @@ { int ret; - lock_comm(cinfo, mddev_locked); - ret = __sendmsg(cinfo, cmsg); - unlock_comm(cinfo); + ret = lock_comm(cinfo, mddev_locked); + if (!ret) { + ret = __sendmsg(cinfo, cmsg); + unlock_comm(cinfo); + } return ret; } @@ -1061,7 +1066,7 @@ return 0; } - ret = lock_token(cinfo, 1); + ret = lock_token(cinfo); clear_bit_unlock(MD_CLUSTER_HOLDING_MUTEX_FOR_RECVD, &cinfo->state); return ret; } @@ -1139,6 +1144,7 @@ bitmap = get_bitmap_from_slot(mddev, i); if (IS_ERR(bitmap)) { pr_err("can't get bitmap from slot %d\n", i); + bitmap = NULL; goto out; } counts = &bitmap->counts; @@ -1165,6 +1171,7 @@ * can't resize bitmap */ goto out; + md_bitmap_free(bitmap); } return 0; @@ -1253,7 +1260,10 @@ int raid_slot = -1; md_update_sb(mddev, 1); - lock_comm(cinfo, 1); + if (lock_comm(cinfo, 1)) { + pr_err("%s: lock_comm failed\n", __func__); + return; + } memset(&cmsg, 0, sizeof(cmsg)); cmsg.type = cpu_to_le32(METADATA_UPDATED); @@ -1405,7 +1415,8 @@ cmsg.type = cpu_to_le32(NEWDISK); memcpy(cmsg.uuid, uuid, 16); cmsg.raid_slot = cpu_to_le32(rdev->desc_nr); - lock_comm(cinfo, 1); + if (lock_comm(cinfo, 1)) + return -EAGAIN; ret = __sendmsg(cinfo, &cmsg); if (ret) { unlock_comm(cinfo); @@ -1518,6 +1529,7 @@ } } kfree(cinfo->other_bitmap_lockres); + cinfo->other_bitmap_lockres = NULL; } } --- linux-5.8.0.orig/drivers/md/md.c +++ linux-5.8.0/drivers/md/md.c @@ -463,24 +463,46 @@ } EXPORT_SYMBOL(md_handle_request); +struct md_io { + struct mddev *mddev; + bio_end_io_t *orig_bi_end_io; + void *orig_bi_private; + unsigned long start_time; +}; + +static void md_end_io(struct bio *bio) +{ + struct md_io *md_io = bio->bi_private; + struct mddev *mddev = md_io->mddev; + + disk_end_io_acct(mddev->gendisk, bio_op(bio), md_io->start_time); + + bio->bi_end_io = md_io->orig_bi_end_io; + bio->bi_private = md_io->orig_bi_private; + + mempool_free(md_io, &mddev->md_io_pool); + + if (bio->bi_end_io) + bio->bi_end_io(bio); +} + static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio) { const int rw = bio_data_dir(bio); - const int sgrp = op_stat_group(bio_op(bio)); struct mddev *mddev = bio->bi_disk->private_data; - unsigned int sectors; - if (unlikely(test_bit(MD_BROKEN, &mddev->flags)) && (rw == WRITE)) { + if (mddev == NULL || mddev->pers == NULL) { bio_io_error(bio); return BLK_QC_T_NONE; } - blk_queue_split(q, &bio); - - if (mddev == NULL || mddev->pers == NULL) { + if (unlikely(test_bit(MD_BROKEN, &mddev->flags)) && (rw == WRITE)) { bio_io_error(bio); return BLK_QC_T_NONE; } + + blk_queue_split(q, &bio); + if (mddev->ro == 1 && unlikely(rw == WRITE)) { if (bio_sectors(bio) != 0) bio->bi_status = BLK_STS_IOERR; @@ -488,21 +510,27 @@ return BLK_QC_T_NONE; } - /* - * save the sectors now since our bio can - * go away inside make_request - */ - sectors = bio_sectors(bio); + if (bio->bi_end_io != md_end_io) { + struct md_io *md_io; + + md_io = mempool_alloc(&mddev->md_io_pool, GFP_NOIO); + md_io->mddev = mddev; + md_io->orig_bi_end_io = bio->bi_end_io; + md_io->orig_bi_private = bio->bi_private; + + bio->bi_end_io = md_end_io; + bio->bi_private = md_io; + + md_io->start_time = disk_start_io_acct(mddev->gendisk, + bio_sectors(bio), + bio_op(bio)); + } + /* bio could be mergeable after passing to underlayer */ bio->bi_opf &= ~REQ_NOMERGE; md_handle_request(mddev, bio); - part_stat_lock(); - part_stat_inc(&mddev->gendisk->part0, ios[sgrp]); - part_stat_add(&mddev->gendisk->part0, sectors[sgrp], sectors); - part_stat_unlock(); - return BLK_QC_T_NONE; } @@ -635,8 +663,10 @@ * could wait for this and below md_handle_request could wait for those * bios because of suspend check */ + spin_lock_irq(&mddev->lock); mddev->last_flush = mddev->start_flush; mddev->flush_bio = NULL; + spin_unlock_irq(&mddev->lock); wake_up(&mddev->sb_wait); if (bio->bi_iter.bi_size == 0) { @@ -5545,6 +5575,7 @@ bioset_exit(&mddev->bio_set); bioset_exit(&mddev->sync_set); + mempool_exit(&mddev->md_io_pool); kfree(mddev); } @@ -5640,6 +5671,11 @@ */ mddev->hold_active = UNTIL_STOP; + error = mempool_init_kmalloc_pool(&mddev->md_io_pool, BIO_POOL_SIZE, + sizeof(struct md_io)); + if (error) + goto abort; + error = -ENOMEM; mddev->queue = blk_alloc_queue(md_make_request, NUMA_NO_NODE); if (!mddev->queue) @@ -6884,8 +6920,10 @@ goto busy; kick_rdev: - if (mddev_is_clustered(mddev)) - md_cluster_ops->remove_disk(mddev, rdev); + if (mddev_is_clustered(mddev)) { + if (md_cluster_ops->remove_disk(mddev, rdev)) + goto busy; + } md_kick_rdev_from_array(rdev); set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); @@ -7215,6 +7253,7 @@ return -EINVAL; if (mddev->sync_thread || test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || + test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) || mddev->reshape_position != MaxSector) return -EBUSY; @@ -7533,8 +7572,11 @@ err = -EBUSY; goto out; } - WARN_ON_ONCE(test_bit(MD_CLOSING, &mddev->flags)); - set_bit(MD_CLOSING, &mddev->flags); + if (test_and_set_bit(MD_CLOSING, &mddev->flags)) { + mutex_unlock(&mddev->open_mutex); + err = -EBUSY; + goto out; + } did_set_md_closing = true; mutex_unlock(&mddev->open_mutex); sync_blockdev(bdev); @@ -9488,7 +9530,7 @@ goto err_misc_wq; md_rdev_misc_wq = alloc_workqueue("md_rdev_misc", 0, 0); - if (!md_misc_wq) + if (!md_rdev_misc_wq) goto err_rdev_misc_wq; if ((ret = register_blkdev(MD_MAJOR, "md")) < 0) @@ -9586,8 +9628,11 @@ } } - if (mddev->raid_disks != le32_to_cpu(sb->raid_disks)) - update_raid_disks(mddev, le32_to_cpu(sb->raid_disks)); + if (mddev->raid_disks != le32_to_cpu(sb->raid_disks)) { + ret = update_raid_disks(mddev, le32_to_cpu(sb->raid_disks)); + if (ret) + pr_warn("md: updating array disks failed. %d\n", ret); + } /* * Since mddev->delta_disks has already updated in update_raid_disks, --- linux-5.8.0.orig/drivers/md/md.h +++ linux-5.8.0/drivers/md/md.h @@ -481,6 +481,7 @@ struct bio_set sync_set; /* for sync operations like * metadata and bitmap writes */ + mempool_t md_io_pool; /* Generic flush handling. * The last to finish preflush schedules a worker to submit --- linux-5.8.0.orig/drivers/md/persistent-data/dm-block-manager.c +++ linux-5.8.0/drivers/md/persistent-data/dm-block-manager.c @@ -493,7 +493,7 @@ void *p; int r; - if (bm->read_only) + if (dm_bm_is_read_only(bm)) return -EPERM; p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result); @@ -562,7 +562,7 @@ struct buffer_aux *aux; void *p; - if (bm->read_only) + if (dm_bm_is_read_only(bm)) return -EPERM; p = dm_bufio_new(bm->bufio, b, (struct dm_buffer **) result); @@ -602,7 +602,7 @@ int dm_bm_flush(struct dm_block_manager *bm) { - if (bm->read_only) + if (dm_bm_is_read_only(bm)) return -EPERM; return dm_bufio_write_dirty_buffers(bm->bufio); @@ -616,19 +616,21 @@ bool dm_bm_is_read_only(struct dm_block_manager *bm) { - return bm->read_only; + return (bm ? bm->read_only : true); } EXPORT_SYMBOL_GPL(dm_bm_is_read_only); void dm_bm_set_read_only(struct dm_block_manager *bm) { - bm->read_only = true; + if (bm) + bm->read_only = true; } EXPORT_SYMBOL_GPL(dm_bm_set_read_only); void dm_bm_set_read_write(struct dm_block_manager *bm) { - bm->read_only = false; + if (bm) + bm->read_only = false; } EXPORT_SYMBOL_GPL(dm_bm_set_read_write); --- linux-5.8.0.orig/drivers/md/raid0.c +++ linux-5.8.0/drivers/md/raid0.c @@ -152,11 +152,12 @@ default_layout == RAID0_ALT_MULTIZONE_LAYOUT) { conf->layout = default_layout; } else { - pr_err("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n", + conf->layout = RAID0_ALT_MULTIZONE_LAYOUT; + pr_warn("md/raid0:%s: !!! DEFAULTING TO ALTERNATE LAYOUT !!!\n", mdname(mddev)); - pr_err("md/raid0: please set raid0.default_layout to 1 or 2\n"); - err = -ENOTSUPP; - goto abort; + pr_warn("md/raid0: Please set raid0.default_layout to 1 or 2\n"); + pr_warn("md/raid0: Read the following page for more information:\n"); + pr_warn("md/raid0: https://wiki.ubuntu.com/Kernel/Raid0LayoutMigration\n"); } /* * now since we have the hard sector sizes, we can make sure --- linux-5.8.0.orig/drivers/md/raid10.c +++ linux-5.8.0/drivers/md/raid10.c @@ -1145,7 +1145,7 @@ struct md_rdev *err_rdev = NULL; gfp_t gfp = GFP_NOIO; - if (r10_bio->devs[slot].rdev) { + if (slot >= 0 && r10_bio->devs[slot].rdev) { /* * This is an error retry, but we cannot * safely dereference the rdev in the r10_bio, @@ -1510,6 +1510,7 @@ r10_bio->mddev = mddev; r10_bio->sector = bio->bi_iter.bi_sector; r10_bio->state = 0; + r10_bio->read_slot = -1; memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) * conf->copies); if (bio_data_dir(bio) == READ) --- linux-5.8.0.orig/drivers/md/raid5.c +++ linux-5.8.0/drivers/md/raid5.c @@ -2410,8 +2410,6 @@ } else err = -ENOMEM; - mutex_unlock(&conf->cache_size_mutex); - conf->slab_cache = sc; conf->active_name = 1-conf->active_name; @@ -2434,6 +2432,8 @@ if (!err) conf->pool_size = newsize; + mutex_unlock(&conf->cache_size_mutex); + return err; } @@ -3607,6 +3607,7 @@ * is missing/faulty, then we need to read everything we can. */ if (sh->raid_conf->level != 6 && + sh->raid_conf->rmw_level != PARITY_DISABLE_RMW && sh->sector < sh->raid_conf->mddev->recovery_cp) /* reconstruct-write isn't being forced */ return 0; @@ -4842,7 +4843,7 @@ * or to load a block that is being partially written. */ if (s.to_read || s.non_overwrite - || (conf->level == 6 && s.to_write && s.failed) + || (s.to_write && s.failed) || (s.syncing && (s.uptodate + s.compute < disks)) || s.replacing || s.expanding) --- linux-5.8.0.orig/drivers/media/cec/core/cec-adap.c +++ linux-5.8.0/drivers/media/cec/core/cec-adap.c @@ -1199,7 +1199,7 @@ /* Cancel the pending timeout work */ if (!cancel_delayed_work(&data->work)) { mutex_unlock(&adap->lock); - flush_scheduled_work(); + cancel_delayed_work_sync(&data->work); mutex_lock(&adap->lock); } /* --- linux-5.8.0.orig/drivers/media/cec/core/cec-api.c +++ linux-5.8.0/drivers/media/cec/core/cec-api.c @@ -147,7 +147,13 @@ struct cec_log_addrs log_addrs; mutex_lock(&adap->lock); - log_addrs = adap->log_addrs; + /* + * We use memcpy here instead of assignment since there is a + * hole at the end of struct cec_log_addrs that an assignment + * might ignore. So when we do copy_to_user() we could leak + * one byte of memory. + */ + memcpy(&log_addrs, &adap->log_addrs, sizeof(log_addrs)); if (!adap->is_configured) memset(log_addrs.log_addr, CEC_LOG_ADDR_INVALID, sizeof(log_addrs.log_addr)); --- linux-5.8.0.orig/drivers/media/cec/platform/Makefile +++ linux-5.8.0/drivers/media/cec/platform/Makefile @@ -10,5 +10,6 @@ obj-$(CONFIG_CEC_SAMSUNG_S5P) += s5p/ obj-$(CONFIG_CEC_SECO) += seco/ obj-$(CONFIG_CEC_STI) += sti/ +obj-$(CONFIG_CEC_STM32) += stm32/ obj-$(CONFIG_CEC_TEGRA) += tegra/ --- linux-5.8.0.orig/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ linux-5.8.0/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -277,11 +277,7 @@ platform_set_drvdata(pdev, cros_ec_cec); cros_ec_cec->cros_ec = cros_ec; - ret = device_init_wakeup(&pdev->dev, 1); - if (ret) { - dev_err(&pdev->dev, "failed to initialize wakeup\n"); - return ret; - } + device_init_wakeup(&pdev->dev, 1); cros_ec_cec->adap = cec_allocate_adapter(&cros_ec_cec_ops, cros_ec_cec, DRV_NAME, --- linux-5.8.0.orig/drivers/media/cec/usb/pulse8/pulse8-cec.c +++ linux-5.8.0/drivers/media/cec/usb/pulse8/pulse8-cec.c @@ -88,13 +88,15 @@ MSGCODE_SET_PHYSICAL_ADDRESS, /* 0x20 */ MSGCODE_GET_DEVICE_TYPE, MSGCODE_SET_DEVICE_TYPE, - MSGCODE_GET_HDMI_VERSION, + MSGCODE_GET_HDMI_VERSION, /* Removed in FW >= 10 */ MSGCODE_SET_HDMI_VERSION, MSGCODE_GET_OSD_NAME, MSGCODE_SET_OSD_NAME, MSGCODE_WRITE_EEPROM, MSGCODE_GET_ADAPTER_TYPE, /* 0x28 */ MSGCODE_SET_ACTIVE_SOURCE, + MSGCODE_GET_AUTO_POWER_ON, /* New for FW >= 10 */ + MSGCODE_SET_AUTO_POWER_ON, MSGCODE_FRAME_EOM = 0x80, MSGCODE_FRAME_ACK = 0x40, @@ -143,6 +145,8 @@ "WRITE_EEPROM", "GET_ADAPTER_TYPE", "SET_ACTIVE_SOURCE", + "GET_AUTO_POWER_ON", + "SET_AUTO_POWER_ON", }; static const char *pulse8_msgname(u8 cmd) @@ -579,12 +583,14 @@ if (err) goto unlock; - cmd[0] = MSGCODE_SET_HDMI_VERSION; - cmd[1] = adap->log_addrs.cec_version; - err = pulse8_send_and_wait(pulse8, cmd, 2, - MSGCODE_COMMAND_ACCEPTED, 0); - if (err) - goto unlock; + if (pulse8->vers < 10) { + cmd[0] = MSGCODE_SET_HDMI_VERSION; + cmd[1] = adap->log_addrs.cec_version; + err = pulse8_send_and_wait(pulse8, cmd, 2, + MSGCODE_COMMAND_ACCEPTED, 0); + if (err) + goto unlock; + } if (adap->log_addrs.osd_name[0]) { size_t osd_len = strlen(adap->log_addrs.osd_name); @@ -650,7 +656,6 @@ struct pulse8 *pulse8 = serio_get_drvdata(serio); cec_unregister_adapter(pulse8->adap); - pulse8->serio = NULL; serio_set_drvdata(serio, NULL); serio_close(serio); } @@ -692,6 +697,14 @@ dev_dbg(pulse8->dev, "Autonomous mode: %s", data[0] ? "on" : "off"); + if (pulse8->vers >= 10) { + cmd[0] = MSGCODE_GET_AUTO_POWER_ON; + err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1); + if (!err) + dev_dbg(pulse8->dev, "Auto Power On: %s", + data[0] ? "on" : "off"); + } + cmd[0] = MSGCODE_GET_DEVICE_TYPE; err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1); if (err) @@ -753,12 +766,15 @@ dev_dbg(pulse8->dev, "Physical address: %x.%x.%x.%x\n", cec_phys_addr_exp(*pa)); - cmd[0] = MSGCODE_GET_HDMI_VERSION; - err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1); - if (err) - return err; - log_addrs->cec_version = data[0]; - dev_dbg(pulse8->dev, "CEC version: %d\n", log_addrs->cec_version); + log_addrs->cec_version = CEC_OP_CEC_VERSION_1_4; + if (pulse8->vers < 10) { + cmd[0] = MSGCODE_GET_HDMI_VERSION; + err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 1); + if (err) + return err; + log_addrs->cec_version = data[0]; + dev_dbg(pulse8->dev, "CEC version: %d\n", log_addrs->cec_version); + } cmd[0] = MSGCODE_GET_OSD_NAME; err = pulse8_send_and_wait(pulse8, cmd, 1, cmd[0], 0); @@ -830,8 +846,10 @@ pulse8->adap = cec_allocate_adapter(&pulse8_cec_adap_ops, pulse8, dev_name(&serio->dev), caps, 1); err = PTR_ERR_OR_ZERO(pulse8->adap); - if (err < 0) - goto free_device; + if (err < 0) { + kfree(pulse8); + return err; + } pulse8->dev = &serio->dev; serio_set_drvdata(serio, pulse8); @@ -874,8 +892,6 @@ serio_close(serio); delete_adap: cec_delete_adapter(pulse8->adap); -free_device: - kfree(pulse8); return err; } --- linux-5.8.0.orig/drivers/media/common/siano/smsdvb-main.c +++ linux-5.8.0/drivers/media/common/siano/smsdvb-main.c @@ -1169,12 +1169,15 @@ rc = dvb_create_media_graph(&client->adapter, true); if (rc < 0) { pr_err("dvb_create_media_graph failed %d\n", rc); - goto client_error; + goto media_graph_error; } pr_info("DVB interface registered.\n"); return 0; +media_graph_error: + smsdvb_debugfs_release(client); + client_error: dvb_unregister_frontend(&client->frontend); --- linux-5.8.0.orig/drivers/media/firewire/firedtv-fw.c +++ linux-5.8.0/drivers/media/firewire/firedtv-fw.c @@ -272,6 +272,10 @@ name_len = fw_csr_string(unit->directory, CSR_MODEL, name, sizeof(name)); + if (name_len < 0) { + err = name_len; + goto fail_free; + } for (i = ARRAY_SIZE(model_names); --i; ) if (strlen(model_names[i]) <= name_len && strncmp(name, model_names[i], name_len) == 0) --- linux-5.8.0.orig/drivers/media/i2c/Kconfig +++ linux-5.8.0/drivers/media/i2c/Kconfig @@ -728,7 +728,7 @@ config VIDEO_IMX214 tristate "Sony IMX214 sensor support" depends on GPIOLIB && I2C && VIDEO_V4L2 - depends on V4L2_FWNODE + select V4L2_FWNODE select MEDIA_CONTROLLER select VIDEO_V4L2_SUBDEV_API select REGMAP_I2C --- linux-5.8.0.orig/drivers/media/i2c/imx214.c +++ linux-5.8.0/drivers/media/i2c/imx214.c @@ -786,7 +786,7 @@ if (ret < 0) goto err_rpm_put; } else { - ret = imx214_start_streaming(imx214); + ret = imx214_stop_streaming(imx214); if (ret < 0) goto err_rpm_put; pm_runtime_put(imx214->dev); --- linux-5.8.0.orig/drivers/media/i2c/imx219.c +++ linux-5.8.0/drivers/media/i2c/imx219.c @@ -473,8 +473,8 @@ .width = 3280, .height = 2464, .crop = { - .left = 0, - .top = 0, + .left = IMX219_PIXEL_ARRAY_LEFT, + .top = IMX219_PIXEL_ARRAY_TOP, .width = 3280, .height = 2464 }, @@ -489,8 +489,8 @@ .width = 1920, .height = 1080, .crop = { - .left = 680, - .top = 692, + .left = 688, + .top = 700, .width = 1920, .height = 1080 }, @@ -505,8 +505,8 @@ .width = 1640, .height = 1232, .crop = { - .left = 0, - .top = 0, + .left = IMX219_PIXEL_ARRAY_LEFT, + .top = IMX219_PIXEL_ARRAY_TOP, .width = 3280, .height = 2464 }, @@ -521,8 +521,8 @@ .width = 640, .height = 480, .crop = { - .left = 1000, - .top = 752, + .left = 1008, + .top = 760, .width = 1280, .height = 960 }, @@ -1008,6 +1008,7 @@ return 0; case V4L2_SEL_TGT_CROP_DEFAULT: + case V4L2_SEL_TGT_CROP_BOUNDS: sel->r.top = IMX219_PIXEL_ARRAY_TOP; sel->r.left = IMX219_PIXEL_ARRAY_LEFT; sel->r.width = IMX219_PIXEL_ARRAY_WIDTH; --- linux-5.8.0.orig/drivers/media/i2c/imx274.c +++ linux-5.8.0/drivers/media/i2c/imx274.c @@ -1235,6 +1235,8 @@ ret = imx274_set_frame_interval(imx274, fi->interval); if (!ret) { + fi->interval = imx274->frame_interval; + /* * exposure time range is decided by frame interval * need to update it after frame interval changes @@ -1730,9 +1732,9 @@ __func__, frame_interval.numerator, frame_interval.denominator); - if (frame_interval.numerator == 0) { - err = -EINVAL; - goto fail; + if (frame_interval.numerator == 0 || frame_interval.denominator == 0) { + frame_interval.denominator = IMX274_DEF_FRAME_RATE; + frame_interval.numerator = 1; } req_frame_rate = (u32)(frame_interval.denominator --- linux-5.8.0.orig/drivers/media/i2c/imx290.c +++ linux-5.8.0/drivers/media/i2c/imx290.c @@ -628,7 +628,7 @@ } usleep_range(1, 2); - gpiod_set_value_cansleep(imx290->rst_gpio, 1); + gpiod_set_value_cansleep(imx290->rst_gpio, 0); usleep_range(30000, 31000); return 0; @@ -641,7 +641,7 @@ struct imx290 *imx290 = to_imx290(sd); clk_disable_unprepare(imx290->xclk); - gpiod_set_value_cansleep(imx290->rst_gpio, 0); + gpiod_set_value_cansleep(imx290->rst_gpio, 1); regulator_bulk_disable(IMX290_NUM_SUPPLIES, imx290->supplies); return 0; @@ -760,7 +760,8 @@ goto free_err; } - imx290->rst_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_ASIS); + imx290->rst_gpio = devm_gpiod_get_optional(dev, "reset", + GPIOD_OUT_HIGH); if (IS_ERR(imx290->rst_gpio)) { dev_err(dev, "Cannot get reset gpio\n"); ret = PTR_ERR(imx290->rst_gpio); --- linux-5.8.0.orig/drivers/media/i2c/m5mols/m5mols_core.c +++ linux-5.8.0/drivers/media/i2c/m5mols/m5mols_core.c @@ -764,7 +764,8 @@ ret = regulator_bulk_enable(ARRAY_SIZE(supplies), supplies); if (ret) { - info->set_power(&client->dev, 0); + if (info->set_power) + info->set_power(&client->dev, 0); return ret; } --- linux-5.8.0.orig/drivers/media/i2c/max2175.c +++ linux-5.8.0/drivers/media/i2c/max2175.c @@ -503,7 +503,7 @@ } } -static bool max2175_set_csm_mode(struct max2175 *ctx, +static int max2175_set_csm_mode(struct max2175 *ctx, enum max2175_csm_mode new_mode) { int ret = max2175_poll_csm_ready(ctx); --- linux-5.8.0.orig/drivers/media/i2c/ov5640.c +++ linux-5.8.0/drivers/media/i2c/ov5640.c @@ -34,6 +34,8 @@ #define OV5640_REG_SYS_RESET02 0x3002 #define OV5640_REG_SYS_CLOCK_ENABLE02 0x3006 #define OV5640_REG_SYS_CTRL0 0x3008 +#define OV5640_REG_SYS_CTRL0_SW_PWDN 0x42 +#define OV5640_REG_SYS_CTRL0_SW_PWUP 0x02 #define OV5640_REG_CHIP_ID 0x300a #define OV5640_REG_IO_MIPI_CTRL00 0x300e #define OV5640_REG_PAD_OUTPUT_ENABLE01 0x3017 @@ -274,8 +276,7 @@ /* YUV422 UYVY VGA@30fps */ static const struct reg_value ov5640_init_setting_30fps_VGA[] = { {0x3103, 0x11, 0, 0}, {0x3008, 0x82, 0, 5}, {0x3008, 0x42, 0, 0}, - {0x3103, 0x03, 0, 0}, {0x3017, 0x00, 0, 0}, {0x3018, 0x00, 0, 0}, - {0x3630, 0x36, 0, 0}, + {0x3103, 0x03, 0, 0}, {0x3630, 0x36, 0, 0}, {0x3631, 0x0e, 0, 0}, {0x3632, 0xe2, 0, 0}, {0x3633, 0x12, 0, 0}, {0x3621, 0xe0, 0, 0}, {0x3704, 0xa0, 0, 0}, {0x3703, 0x5a, 0, 0}, {0x3715, 0x78, 0, 0}, {0x3717, 0x01, 0, 0}, {0x370b, 0x60, 0, 0}, @@ -751,7 +752,7 @@ * +->| PLL Root Div | - reg 0x3037, bit 4 * +-+------------+ * | +---------+ - * +->| Bit Div | - reg 0x3035, bits 0-3 + * +->| Bit Div | - reg 0x3034, bits 0-3 * +-+-------+ * | +-------------+ * +->| SCLK Div | - reg 0x3108, bits 0-1 @@ -1120,6 +1121,12 @@ val = regs->val; mask = regs->mask; + /* remain in power down mode for DVP */ + if (regs->reg_addr == OV5640_REG_SYS_CTRL0 && + val == OV5640_REG_SYS_CTRL0_SW_PWUP && + sensor->ep.bus_type != V4L2_MBUS_CSI2_DPHY) + continue; + if (mask) ret = ov5640_mod_reg(sensor, reg_addr, mask, val); else @@ -1275,31 +1282,9 @@ if (ret) return ret; - /* - * enable VSYNC/HREF/PCLK DVP control lines - * & D[9:6] DVP data lines - * - * PAD OUTPUT ENABLE 01 - * - 6: VSYNC output enable - * - 5: HREF output enable - * - 4: PCLK output enable - * - [3:0]: D[9:6] output enable - */ - ret = ov5640_write_reg(sensor, - OV5640_REG_PAD_OUTPUT_ENABLE01, - on ? 0x7f : 0); - if (ret) - return ret; - - /* - * enable D[5:0] DVP data lines - * - * PAD OUTPUT ENABLE 02 - * - [7:2]: D[5:0] output enable - */ - return ov5640_write_reg(sensor, - OV5640_REG_PAD_OUTPUT_ENABLE02, - on ? 0xfc : 0); + return ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, on ? + OV5640_REG_SYS_CTRL0_SW_PWUP : + OV5640_REG_SYS_CTRL0_SW_PWDN); } static int ov5640_set_stream_mipi(struct ov5640_dev *sensor, bool on) @@ -2001,6 +1986,95 @@ clk_disable_unprepare(sensor->xclk); } +static int ov5640_set_power_mipi(struct ov5640_dev *sensor, bool on) +{ + int ret; + + if (!on) { + /* Reset MIPI bus settings to their default values. */ + ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x58); + ov5640_write_reg(sensor, OV5640_REG_MIPI_CTRL00, 0x04); + ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT00, 0x00); + return 0; + } + + /* + * Power up MIPI HS Tx and LS Rx; 2 data lanes mode + * + * 0x300e = 0x40 + * [7:5] = 010 : 2 data lanes mode (see FIXME note in + * "ov5640_set_stream_mipi()") + * [4] = 0 : Power up MIPI HS Tx + * [3] = 0 : Power up MIPI LS Rx + * [2] = 0 : MIPI interface disabled + */ + ret = ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x40); + if (ret) + return ret; + + /* + * Gate clock and set LP11 in 'no packets mode' (idle) + * + * 0x4800 = 0x24 + * [5] = 1 : Gate clock when 'no packets' + * [2] = 1 : MIPI bus in LP11 when 'no packets' + */ + ret = ov5640_write_reg(sensor, OV5640_REG_MIPI_CTRL00, 0x24); + if (ret) + return ret; + + /* + * Set data lanes and clock in LP11 when 'sleeping' + * + * 0x3019 = 0x70 + * [6] = 1 : MIPI data lane 2 in LP11 when 'sleeping' + * [5] = 1 : MIPI data lane 1 in LP11 when 'sleeping' + * [4] = 1 : MIPI clock lane in LP11 when 'sleeping' + */ + ret = ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT00, 0x70); + if (ret) + return ret; + + /* Give lanes some time to coax into LP11 state. */ + usleep_range(500, 1000); + + return 0; +} + +static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on) +{ + int ret; + + if (!on) { + /* Reset settings to their default values. */ + ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE01, 0x00); + ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE02, 0x00); + return 0; + } + + /* + * enable VSYNC/HREF/PCLK DVP control lines + * & D[9:6] DVP data lines + * + * PAD OUTPUT ENABLE 01 + * - 6: VSYNC output enable + * - 5: HREF output enable + * - 4: PCLK output enable + * - [3:0]: D[9:6] output enable + */ + ret = ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE01, 0x7f); + if (ret) + return ret; + + /* + * enable D[5:0] DVP data lines + * + * PAD OUTPUT ENABLE 02 + * - [7:2]: D[5:0] output enable + */ + return ov5640_write_reg(sensor, OV5640_REG_PAD_OUTPUT_ENABLE02, 0xfc); +} + static int ov5640_set_power(struct ov5640_dev *sensor, bool on) { int ret = 0; @@ -2013,67 +2087,17 @@ ret = ov5640_restore_mode(sensor); if (ret) goto power_off; + } - /* We're done here for DVP bus, while CSI-2 needs setup. */ - if (sensor->ep.bus_type != V4L2_MBUS_CSI2_DPHY) - return 0; - - /* - * Power up MIPI HS Tx and LS Rx; 2 data lanes mode - * - * 0x300e = 0x40 - * [7:5] = 010 : 2 data lanes mode (see FIXME note in - * "ov5640_set_stream_mipi()") - * [4] = 0 : Power up MIPI HS Tx - * [3] = 0 : Power up MIPI LS Rx - * [2] = 0 : MIPI interface disabled - */ - ret = ov5640_write_reg(sensor, - OV5640_REG_IO_MIPI_CTRL00, 0x40); - if (ret) - goto power_off; - - /* - * Gate clock and set LP11 in 'no packets mode' (idle) - * - * 0x4800 = 0x24 - * [5] = 1 : Gate clock when 'no packets' - * [2] = 1 : MIPI bus in LP11 when 'no packets' - */ - ret = ov5640_write_reg(sensor, - OV5640_REG_MIPI_CTRL00, 0x24); - if (ret) - goto power_off; - - /* - * Set data lanes and clock in LP11 when 'sleeping' - * - * 0x3019 = 0x70 - * [6] = 1 : MIPI data lane 2 in LP11 when 'sleeping' - * [5] = 1 : MIPI data lane 1 in LP11 when 'sleeping' - * [4] = 1 : MIPI clock lane in LP11 when 'sleeping' - */ - ret = ov5640_write_reg(sensor, - OV5640_REG_PAD_OUTPUT00, 0x70); - if (ret) - goto power_off; - - /* Give lanes some time to coax into LP11 state. */ - usleep_range(500, 1000); - - } else { - if (sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY) { - /* Reset MIPI bus settings to their default values. */ - ov5640_write_reg(sensor, - OV5640_REG_IO_MIPI_CTRL00, 0x58); - ov5640_write_reg(sensor, - OV5640_REG_MIPI_CTRL00, 0x04); - ov5640_write_reg(sensor, - OV5640_REG_PAD_OUTPUT00, 0x00); - } + if (sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY) + ret = ov5640_set_power_mipi(sensor, on); + else + ret = ov5640_set_power_dvp(sensor, on); + if (ret) + goto power_off; + if (!on) ov5640_set_power_off(sensor); - } return 0; --- linux-5.8.0.orig/drivers/media/i2c/ov5670.c +++ linux-5.8.0/drivers/media/i2c/ov5670.c @@ -2084,7 +2084,8 @@ /* By default, V4L2_CID_PIXEL_RATE is read only */ ov5670->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, &ov5670_ctrl_ops, - V4L2_CID_PIXEL_RATE, 0, + V4L2_CID_PIXEL_RATE, + link_freq_configs[0].pixel_rate, link_freq_configs[0].pixel_rate, 1, link_freq_configs[0].pixel_rate); --- linux-5.8.0.orig/drivers/media/i2c/tc358743.c +++ linux-5.8.0/drivers/media/i2c/tc358743.c @@ -919,8 +919,8 @@ .adap_monitor_all_enable = tc358743_cec_adap_monitor_all_enable, }; -static void tc358743_cec_isr(struct v4l2_subdev *sd, u16 intstatus, - bool *handled) +static void tc358743_cec_handler(struct v4l2_subdev *sd, u16 intstatus, + bool *handled) { struct tc358743_state *state = to_state(sd); unsigned int cec_rxint, cec_txint; @@ -953,7 +953,8 @@ cec_transmit_attempt_done(state->cec_adap, CEC_TX_STATUS_ERROR); } - *handled = true; + if (handled) + *handled = true; } if ((intstatus & MASK_CEC_RINT) && (cec_rxint & MASK_CECRIEND)) { @@ -968,7 +969,8 @@ msg.msg[i] = v & 0xff; } cec_received_msg(state->cec_adap, &msg); - *handled = true; + if (handled) + *handled = true; } i2c_wr16(sd, INTSTATUS, intstatus & (MASK_CEC_RINT | MASK_CEC_TINT)); @@ -1432,7 +1434,7 @@ #ifdef CONFIG_VIDEO_TC358743_CEC if (intstatus & (MASK_CEC_RINT | MASK_CEC_TINT)) { - tc358743_cec_isr(sd, intstatus, handled); + tc358743_cec_handler(sd, intstatus, handled); i2c_wr16(sd, INTSTATUS, intstatus & (MASK_CEC_RINT | MASK_CEC_TINT)); intstatus &= ~(MASK_CEC_RINT | MASK_CEC_TINT); @@ -1461,7 +1463,7 @@ static irqreturn_t tc358743_irq_handler(int irq, void *dev_id) { struct tc358743_state *state = dev_id; - bool handled; + bool handled = false; tc358743_isr(&state->sd, 0, &handled); --- linux-5.8.0.orig/drivers/media/i2c/tvp5150.c +++ linux-5.8.0/drivers/media/i2c/tvp5150.c @@ -1664,8 +1664,10 @@ return 0; err: - for (i = 0; i < decoder->connectors_num; i++) + for (i = 0; i < decoder->connectors_num; i++) { media_device_unregister_entity(&decoder->connectors[i].ent); + media_entity_cleanup(&decoder->connectors[i].ent); + } return ret; #endif @@ -2079,6 +2081,7 @@ ep_np = of_graph_get_endpoint_by_regs(np, TVP5150_PAD_VID_OUT, 0); if (!ep_np) { + ret = -EINVAL; dev_err(dev, "Error no output endpoint available\n"); goto err_free; } @@ -2248,8 +2251,10 @@ for (i = 0; i < decoder->connectors_num; i++) v4l2_fwnode_connector_free(&decoder->connectors[i].base); - for (i = 0; i < decoder->connectors_num; i++) + for (i = 0; i < decoder->connectors_num; i++) { media_device_unregister_entity(&decoder->connectors[i].ent); + media_entity_cleanup(&decoder->connectors[i].ent); + } v4l2_async_unregister_subdev(sd); v4l2_ctrl_handler_free(&decoder->hdl); pm_runtime_disable(&c->dev); --- linux-5.8.0.orig/drivers/media/mc/mc-request.c +++ linux-5.8.0/drivers/media/mc/mc-request.c @@ -296,9 +296,18 @@ if (WARN_ON(!mdev->ops->req_alloc ^ !mdev->ops->req_free)) return -ENOMEM; + if (mdev->ops->req_alloc) + req = mdev->ops->req_alloc(mdev); + else + req = kzalloc(sizeof(*req), GFP_KERNEL); + if (!req) + return -ENOMEM; + fd = get_unused_fd_flags(O_CLOEXEC); - if (fd < 0) - return fd; + if (fd < 0) { + ret = fd; + goto err_free_req; + } filp = anon_inode_getfile("request", &request_fops, NULL, O_CLOEXEC); if (IS_ERR(filp)) { @@ -306,15 +315,6 @@ goto err_put_fd; } - if (mdev->ops->req_alloc) - req = mdev->ops->req_alloc(mdev); - else - req = kzalloc(sizeof(*req), GFP_KERNEL); - if (!req) { - ret = -ENOMEM; - goto err_fput; - } - filp->private_data = req; req->mdev = mdev; req->state = MEDIA_REQUEST_STATE_IDLE; @@ -336,12 +336,15 @@ return 0; -err_fput: - fput(filp); - err_put_fd: put_unused_fd(fd); +err_free_req: + if (mdev->ops->req_free) + mdev->ops->req_free(req); + else + kfree(req); + return ret; } --- linux-5.8.0.orig/drivers/media/pci/bt8xx/bttv-driver.c +++ linux-5.8.0/drivers/media/pci/bt8xx/bttv-driver.c @@ -4013,11 +4013,13 @@ btv->id = dev->device; if (pci_enable_device(dev)) { pr_warn("%d: Can't enable device\n", btv->c.nr); - return -EIO; + result = -EIO; + goto free_mem; } if (pci_set_dma_mask(dev, DMA_BIT_MASK(32))) { pr_warn("%d: No suitable DMA available\n", btv->c.nr); - return -EIO; + result = -EIO; + goto free_mem; } if (!request_mem_region(pci_resource_start(dev,0), pci_resource_len(dev,0), @@ -4025,7 +4027,8 @@ pr_warn("%d: can't request iomem (0x%llx)\n", btv->c.nr, (unsigned long long)pci_resource_start(dev, 0)); - return -EBUSY; + result = -EBUSY; + goto free_mem; } pci_set_master(dev); pci_set_command(dev); @@ -4211,6 +4214,10 @@ release_mem_region(pci_resource_start(btv->c.pci,0), pci_resource_len(btv->c.pci,0)); pci_disable_device(btv->c.pci); + +free_mem: + bttvs[btv->c.nr] = NULL; + kfree(btv); return result; } --- linux-5.8.0.orig/drivers/media/pci/cx23885/cx23885-core.c +++ linux-5.8.0/drivers/media/pci/cx23885/cx23885-core.c @@ -2074,6 +2074,10 @@ * 0x1451 is PCI ID for the IOMMU found on Ryzen */ { PCI_VENDOR_ID_AMD, 0x1451 }, + /* According to sudo lspci -nn, + * 0x1423 is the PCI ID for the IOMMU found on Kaveri + */ + { PCI_VENDOR_ID_AMD, 0x1423 }, }; static bool cx23885_does_need_dma_reset(void) --- linux-5.8.0.orig/drivers/media/pci/cx25821/cx25821-core.c +++ linux-5.8.0/drivers/media/pci/cx25821/cx25821-core.c @@ -976,8 +976,10 @@ __le32 *cpu; dma_addr_t dma = 0; - if (NULL != risc->cpu && risc->size < size) + if (risc->cpu && risc->size < size) { pci_free_consistent(pci, risc->size, risc->cpu, risc->dma); + risc->cpu = NULL; + } if (NULL == risc->cpu) { cpu = pci_zalloc_consistent(pci, size, &dma); if (NULL == cpu) --- linux-5.8.0.orig/drivers/media/pci/intel/ipu3/Kconfig +++ linux-5.8.0/drivers/media/pci/intel/ipu3/Kconfig @@ -2,7 +2,8 @@ config VIDEO_IPU3_CIO2 tristate "Intel ipu3-cio2 driver" depends on VIDEO_V4L2 && PCI - depends on (X86 && ACPI) || COMPILE_TEST + depends on ACPI || COMPILE_TEST + depends on X86 select MEDIA_CONTROLLER select VIDEO_V4L2_SUBDEV_API select V4L2_FWNODE --- linux-5.8.0.orig/drivers/media/pci/intel/ipu3/ipu3-cio2.c +++ linux-5.8.0/drivers/media/pci/intel/ipu3/ipu3-cio2.c @@ -799,6 +799,7 @@ atomic_dec(&q->bufs_queued); vb2_buffer_done(&q->bufs[i]->vbb.vb2_buf, state); + q->bufs[i] = NULL; } } } @@ -1243,29 +1244,15 @@ struct v4l2_subdev_format *fmt) { struct cio2_queue *q = container_of(sd, struct cio2_queue, subdev); - struct v4l2_subdev_format format; - int ret; - - if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { - fmt->format = *v4l2_subdev_get_try_format(sd, cfg, fmt->pad); - return 0; - } - if (fmt->pad == CIO2_PAD_SINK) { - format.which = V4L2_SUBDEV_FORMAT_ACTIVE; - ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, - &format); + mutex_lock(&q->subdev_lock); - if (ret) - return ret; - /* update colorspace etc */ - q->subdev_fmt.colorspace = format.format.colorspace; - q->subdev_fmt.ycbcr_enc = format.format.ycbcr_enc; - q->subdev_fmt.quantization = format.format.quantization; - q->subdev_fmt.xfer_func = format.format.xfer_func; - } + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) + fmt->format = *v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + else + fmt->format = q->subdev_fmt; - fmt->format = q->subdev_fmt; + mutex_unlock(&q->subdev_lock); return 0; } @@ -1282,6 +1269,9 @@ struct v4l2_subdev_format *fmt) { struct cio2_queue *q = container_of(sd, struct cio2_queue, subdev); + struct v4l2_mbus_framefmt *mbus; + u32 mbus_code = fmt->format.code; + unsigned int i; /* * Only allow setting sink pad format; @@ -1290,16 +1280,29 @@ if (fmt->pad == CIO2_PAD_SOURCE) return cio2_subdev_get_fmt(sd, cfg, fmt); - if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { - *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; - } else { - /* It's the sink, allow changing frame size */ - q->subdev_fmt.width = fmt->format.width; - q->subdev_fmt.height = fmt->format.height; - q->subdev_fmt.code = fmt->format.code; - fmt->format = q->subdev_fmt; + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) + mbus = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + else + mbus = &q->subdev_fmt; + + fmt->format.code = formats[0].mbus_code; + + for (i = 0; i < ARRAY_SIZE(formats); i++) { + if (formats[i].mbus_code == mbus_code) { + fmt->format.code = mbus_code; + break; + } } + fmt->format.width = min_t(u32, fmt->format.width, CIO2_IMAGE_MAX_WIDTH); + fmt->format.height = min_t(u32, fmt->format.height, + CIO2_IMAGE_MAX_LENGTH); + fmt->format.field = V4L2_FIELD_NONE; + + mutex_lock(&q->subdev_lock); + *mbus = fmt->format; + mutex_unlock(&q->subdev_lock); + return 0; } @@ -1558,6 +1561,7 @@ /* Initialize miscellaneous variables */ mutex_init(&q->lock); + mutex_init(&q->subdev_lock); /* Initialize formats to default values */ fmt = &q->subdev_fmt; @@ -1676,6 +1680,7 @@ fail_subdev_media_entity: cio2_fbpt_exit(q, &cio2->pci_dev->dev); fail_fbpt: + mutex_destroy(&q->subdev_lock); mutex_destroy(&q->lock); return r; @@ -1689,6 +1694,7 @@ v4l2_device_unregister_subdev(&q->subdev); media_entity_cleanup(&q->subdev.entity); cio2_fbpt_exit(q, &cio2->pci_dev->dev); + mutex_destroy(&q->subdev_lock); mutex_destroy(&q->lock); } --- linux-5.8.0.orig/drivers/media/pci/intel/ipu3/ipu3-cio2.h +++ linux-5.8.0/drivers/media/pci/intel/ipu3/ipu3-cio2.h @@ -332,6 +332,7 @@ /* Subdev, /dev/v4l-subdevX */ struct v4l2_subdev subdev; + struct mutex subdev_lock; /* Serialise acces to subdev_fmt field */ struct media_pad subdev_pads[CIO2_PADS]; struct v4l2_mbus_framefmt subdev_fmt; atomic_t frame_sequence; --- linux-5.8.0.orig/drivers/media/pci/netup_unidvb/netup_unidvb_spi.c +++ linux-5.8.0/drivers/media/pci/netup_unidvb/netup_unidvb_spi.c @@ -175,7 +175,7 @@ struct spi_master *master; struct netup_spi *nspi; - master = spi_alloc_master(&ndev->pci_dev->dev, + master = devm_spi_alloc_master(&ndev->pci_dev->dev, sizeof(struct netup_spi)); if (!master) { dev_err(&ndev->pci_dev->dev, @@ -208,6 +208,7 @@ ndev->pci_slot, ndev->pci_func); if (!spi_new_device(master, &netup_spi_board)) { + spi_unregister_master(master); ndev->spi = NULL; dev_err(&ndev->pci_dev->dev, "%s(): unable to create SPI device\n", __func__); @@ -226,13 +227,13 @@ if (!spi) return; + spi_unregister_master(spi->master); spin_lock_irqsave(&spi->lock, flags); reg = readw(&spi->regs->control_stat); writew(reg | NETUP_SPI_CTRL_IRQ, &spi->regs->control_stat); reg = readw(&spi->regs->control_stat); writew(reg & ~NETUP_SPI_CTRL_IMASK, &spi->regs->control_stat); spin_unlock_irqrestore(&spi->lock, flags); - spi_unregister_master(spi->master); ndev->spi = NULL; } --- linux-5.8.0.orig/drivers/media/pci/saa7134/saa7134-empress.c +++ linux-5.8.0/drivers/media/pci/saa7134/saa7134-empress.c @@ -282,8 +282,11 @@ q->lock = &dev->lock; q->dev = &dev->pci->dev; err = vb2_queue_init(q); - if (err) + if (err) { + video_device_release(dev->empress_dev); + dev->empress_dev = NULL; return err; + } dev->empress_dev->queue = q; dev->empress_dev->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE; --- linux-5.8.0.orig/drivers/media/pci/saa7134/saa7134-tvaudio.c +++ linux-5.8.0/drivers/media/pci/saa7134/saa7134-tvaudio.c @@ -683,7 +683,8 @@ { int err; - audio_dbg(2, "dsp write reg 0x%x = 0x%06x\n", reg << 2, value); + audio_dbg(2, "dsp write reg 0x%x = 0x%06x\n", + (reg << 2) & 0xffffffff, value); err = saa_dsp_wait_bit(dev,SAA7135_DSP_RWSTATE_WRR); if (err < 0) return err; --- linux-5.8.0.orig/drivers/media/pci/saa7146/mxb.c +++ linux-5.8.0/drivers/media/pci/saa7146/mxb.c @@ -641,16 +641,17 @@ struct mxb *mxb = (struct mxb *)dev->ext_priv; DEB_D("VIDIOC_S_AUDIO %d\n", a->index); - if (mxb_inputs[mxb->cur_input].audioset & (1 << a->index)) { - if (mxb->cur_audinput != a->index) { - mxb->cur_audinput = a->index; - tea6420_route(mxb, a->index); - if (mxb->cur_audinput == 0) - mxb_update_audmode(mxb); - } - return 0; + if (a->index >= 32 || + !(mxb_inputs[mxb->cur_input].audioset & (1 << a->index))) + return -EINVAL; + + if (mxb->cur_audinput != a->index) { + mxb->cur_audinput = a->index; + tea6420_route(mxb, a->index); + if (mxb->cur_audinput == 0) + mxb_update_audmode(mxb); } - return -EINVAL; + return 0; } #ifdef CONFIG_VIDEO_ADV_DEBUG --- linux-5.8.0.orig/drivers/media/pci/smipcie/smipcie-ir.c +++ linux-5.8.0/drivers/media/pci/smipcie/smipcie-ir.c @@ -60,39 +60,45 @@ { struct smi_dev *dev = ir->dev; struct rc_dev *rc_dev = ir->rc_dev; - u32 dwIRControl, dwIRData; - u8 index, ucIRCount, readLoop; + u32 control, data; + u8 index, ir_count, read_loop; - dwIRControl = smi_read(IR_Init_Reg); + control = smi_read(IR_Init_Reg); - if (dwIRControl & rbIRVld) { - ucIRCount = (u8) smi_read(IR_Data_Cnt); + dev_dbg(&rc_dev->dev, "ircontrol: 0x%08x\n", control); - readLoop = ucIRCount/4; - if (ucIRCount % 4) - readLoop += 1; - for (index = 0; index < readLoop; index++) { - dwIRData = smi_read(IR_DATA_BUFFER_BASE + (index * 4)); - - ir->irData[index*4 + 0] = (u8)(dwIRData); - ir->irData[index*4 + 1] = (u8)(dwIRData >> 8); - ir->irData[index*4 + 2] = (u8)(dwIRData >> 16); - ir->irData[index*4 + 3] = (u8)(dwIRData >> 24); + if (control & rbIRVld) { + ir_count = (u8)smi_read(IR_Data_Cnt); + + dev_dbg(&rc_dev->dev, "ircount %d\n", ir_count); + + read_loop = ir_count / 4; + if (ir_count % 4) + read_loop += 1; + for (index = 0; index < read_loop; index++) { + data = smi_read(IR_DATA_BUFFER_BASE + (index * 4)); + dev_dbg(&rc_dev->dev, "IRData 0x%08x\n", data); + + ir->irData[index * 4 + 0] = (u8)(data); + ir->irData[index * 4 + 1] = (u8)(data >> 8); + ir->irData[index * 4 + 2] = (u8)(data >> 16); + ir->irData[index * 4 + 3] = (u8)(data >> 24); } - smi_raw_process(rc_dev, ir->irData, ucIRCount); - smi_set(IR_Init_Reg, rbIRVld); + smi_raw_process(rc_dev, ir->irData, ir_count); } - if (dwIRControl & rbIRhighidle) { + if (control & rbIRhighidle) { struct ir_raw_event rawir = {}; + dev_dbg(&rc_dev->dev, "high idle\n"); + rawir.pulse = 0; rawir.duration = US_TO_NS(SMI_SAMPLE_PERIOD * SMI_SAMPLE_IDLEMIN); ir_raw_event_store_with_filter(rc_dev, &rawir); - smi_set(IR_Init_Reg, rbIRhighidle); } + smi_set(IR_Init_Reg, rbIRVld); ir_raw_event_handle(rc_dev); } @@ -151,7 +157,7 @@ rc_dev->dev.parent = &dev->pci_dev->dev; rc_dev->map_name = dev->info->rc_map; - rc_dev->timeout = MS_TO_NS(100); + rc_dev->timeout = US_TO_NS(SMI_SAMPLE_PERIOD * SMI_SAMPLE_IDLEMIN); rc_dev->rx_resolution = US_TO_NS(SMI_SAMPLE_PERIOD); ir->rc_dev = rc_dev; @@ -174,7 +180,7 @@ struct smi_rc *ir = &dev->ir; struct rc_dev *rc_dev = ir->rc_dev; - smi_ir_stop(ir); rc_unregister_device(rc_dev); + smi_ir_stop(ir); ir->rc_dev = NULL; } --- linux-5.8.0.orig/drivers/media/pci/solo6x10/solo6x10-g723.c +++ linux-5.8.0/drivers/media/pci/solo6x10/solo6x10-g723.c @@ -385,7 +385,7 @@ ret = snd_ctl_add(card, snd_ctl_new1(&kctl, solo_dev)); if (ret < 0) - return ret; + goto snd_error; ret = solo_snd_pcm_init(solo_dev); if (ret < 0) --- linux-5.8.0.orig/drivers/media/pci/ttpci/av7110.c +++ linux-5.8.0/drivers/media/pci/ttpci/av7110.c @@ -406,14 +406,15 @@ case DATA_CI_GET: { u8 *data = av7110->debi_virt; + u8 data_0 = data[0]; - if ((data[0] < 2) && data[2] == 0xff) { + if (data_0 < 2 && data[2] == 0xff) { int flags = 0; if (data[5] > 0) flags |= CA_CI_MODULE_PRESENT; if (data[5] > 5) flags |= CA_CI_MODULE_READY; - av7110->ci_slot[data[0]].flags = flags; + av7110->ci_slot[data_0].flags = flags; } else ci_get_data(&av7110->ci_rbuffer, av7110->debi_virt, --- linux-5.8.0.orig/drivers/media/pci/ttpci/budget-core.c +++ linux-5.8.0/drivers/media/pci/ttpci/budget-core.c @@ -369,20 +369,25 @@ ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &budget->hw_frontend); if (ret < 0) - return ret; + goto err_release_dmx; budget->mem_frontend.source = DMX_MEMORY_FE; ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &budget->mem_frontend); if (ret < 0) - return ret; + goto err_release_dmx; ret = dvbdemux->dmx.connect_frontend(&dvbdemux->dmx, &budget->hw_frontend); if (ret < 0) - return ret; + goto err_release_dmx; dvb_net_init(&budget->dvb_adapter, &budget->dvb_net, &dvbdemux->dmx); return 0; + +err_release_dmx: + dvb_dmxdev_release(&budget->dmxdev); + dvb_dmx_release(&budget->demux); + return ret; } static void budget_unregister(struct budget *budget) --- linux-5.8.0.orig/drivers/media/pci/tw5864/tw5864-video.c +++ linux-5.8.0/drivers/media/pci/tw5864/tw5864-video.c @@ -767,6 +767,9 @@ fintv->type = V4L2_FRMIVAL_TYPE_STEPWISE; ret = tw5864_frameinterval_get(input, &frameinterval); + if (ret) + return ret; + fintv->stepwise.step = frameinterval; fintv->stepwise.min = frameinterval; fintv->stepwise.max = frameinterval; @@ -785,6 +788,9 @@ cp->capability = V4L2_CAP_TIMEPERFRAME; ret = tw5864_frameinterval_get(input, &cp->timeperframe); + if (ret) + return ret; + cp->timeperframe.numerator *= input->frame_interval; cp->capturemode = 0; cp->readbuffers = 2; --- linux-5.8.0.orig/drivers/media/platform/aspeed-video.c +++ linux-5.8.0/drivers/media/platform/aspeed-video.c @@ -1551,12 +1551,12 @@ V4L2_JPEG_CHROMA_SUBSAMPLING_420, mask, V4L2_JPEG_CHROMA_SUBSAMPLING_444); - if (video->ctrl_handler.error) { + rc = video->ctrl_handler.error; + if (rc) { v4l2_ctrl_handler_free(&video->ctrl_handler); v4l2_device_unregister(v4l2_dev); - dev_err(video->dev, "Failed to init controls: %d\n", - video->ctrl_handler.error); + dev_err(video->dev, "Failed to init controls: %d\n", rc); return rc; } --- linux-5.8.0.orig/drivers/media/platform/coda/coda-jpeg.c +++ linux-5.8.0/drivers/media/platform/coda/coda-jpeg.c @@ -327,8 +327,11 @@ "only 8-bit quantization tables supported\n"); continue; } - if (!ctx->params.jpeg_qmat_tab[i]) + if (!ctx->params.jpeg_qmat_tab[i]) { ctx->params.jpeg_qmat_tab[i] = kmalloc(64, GFP_KERNEL); + if (!ctx->params.jpeg_qmat_tab[i]) + return -ENOMEM; + } memcpy(ctx->params.jpeg_qmat_tab[i], quantization_tables[i].start, 64); } --- linux-5.8.0.orig/drivers/media/platform/davinci/vpif_capture.c +++ linux-5.8.0/drivers/media/platform/davinci/vpif_capture.c @@ -1482,8 +1482,6 @@ /* Unregister video device */ video_unregister_device(&ch->video_dev); } - kfree(vpif_obj.sd); - v4l2_device_unregister(&vpif_obj.v4l2_dev); return err; } --- linux-5.8.0.orig/drivers/media/platform/davinci/vpss.c +++ linux-5.8.0/drivers/media/platform/davinci/vpss.c @@ -505,19 +505,31 @@ static int __init vpss_init(void) { + int ret; + if (!request_mem_region(VPSS_CLK_CTRL, 4, "vpss_clock_control")) return -EBUSY; oper_cfg.vpss_regs_base2 = ioremap(VPSS_CLK_CTRL, 4); if (unlikely(!oper_cfg.vpss_regs_base2)) { - release_mem_region(VPSS_CLK_CTRL, 4); - return -ENOMEM; + ret = -ENOMEM; + goto err_ioremap; } writel(VPSS_CLK_CTRL_VENCCLKEN | - VPSS_CLK_CTRL_DACCLKEN, oper_cfg.vpss_regs_base2); + VPSS_CLK_CTRL_DACCLKEN, oper_cfg.vpss_regs_base2); + + ret = platform_driver_register(&vpss_driver); + if (ret) + goto err_pd_register; + + return 0; - return platform_driver_register(&vpss_driver); +err_pd_register: + iounmap(oper_cfg.vpss_regs_base2); +err_ioremap: + release_mem_region(VPSS_CLK_CTRL, 4); + return ret; } subsys_initcall(vpss_init); module_exit(vpss_exit); --- linux-5.8.0.orig/drivers/media/platform/exynos4-is/fimc-isp.c +++ linux-5.8.0/drivers/media/platform/exynos4-is/fimc-isp.c @@ -305,8 +305,10 @@ if (on) { ret = pm_runtime_get_sync(&is->pdev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put(&is->pdev->dev); return ret; + } set_bit(IS_ST_PWR_ON, &is->state); ret = fimc_is_start_firmware(is); --- linux-5.8.0.orig/drivers/media/platform/exynos4-is/fimc-lite.c +++ linux-5.8.0/drivers/media/platform/exynos4-is/fimc-lite.c @@ -470,7 +470,7 @@ set_bit(ST_FLITE_IN_USE, &fimc->state); ret = pm_runtime_get_sync(&fimc->pdev->dev); if (ret < 0) - goto unlock; + goto err_pm; ret = v4l2_fh_open(file); if (ret < 0) --- linux-5.8.0.orig/drivers/media/platform/exynos4-is/media-dev.c +++ linux-5.8.0/drivers/media/platform/exynos4-is/media-dev.c @@ -484,8 +484,10 @@ return -ENXIO; ret = pm_runtime_get_sync(fmd->pmf); - if (ret < 0) + if (ret < 0) { + pm_runtime_put(fmd->pmf); return ret; + } fmd->num_sensors = 0; @@ -1268,6 +1270,7 @@ if (IS_ERR(pctl->state_default)) return PTR_ERR(pctl->state_default); + /* PINCTRL_STATE_IDLE is optional */ pctl->state_idle = pinctrl_lookup_state(pctl->pinctrl, PINCTRL_STATE_IDLE); return 0; --- linux-5.8.0.orig/drivers/media/platform/exynos4-is/mipi-csis.c +++ linux-5.8.0/drivers/media/platform/exynos4-is/mipi-csis.c @@ -510,8 +510,10 @@ if (enable) { s5pcsis_clear_counters(state); ret = pm_runtime_get_sync(&state->pdev->dev); - if (ret && ret != 1) + if (ret && ret != 1) { + pm_runtime_put_noidle(&state->pdev->dev); return ret; + } } mutex_lock(&state->lock); --- linux-5.8.0.orig/drivers/media/platform/marvell-ccic/mcam-core.c +++ linux-5.8.0/drivers/media/platform/marvell-ccic/mcam-core.c @@ -1940,6 +1940,7 @@ out: v4l2_async_notifier_unregister(&cam->notifier); v4l2_device_unregister(&cam->v4l2_dev); + v4l2_async_notifier_cleanup(&cam->notifier); return ret; } EXPORT_SYMBOL_GPL(mccic_register); @@ -1961,6 +1962,7 @@ v4l2_ctrl_handler_free(&cam->ctrl_handler); v4l2_async_notifier_unregister(&cam->notifier); v4l2_device_unregister(&cam->v4l2_dev); + v4l2_async_notifier_cleanup(&cam->notifier); } EXPORT_SYMBOL_GPL(mccic_shutdown); --- linux-5.8.0.orig/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +++ linux-5.8.0/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -571,6 +571,13 @@ if (!q_data) return -EINVAL; + if (*num_planes) { + for (i = 0; i < *num_planes; i++) + if (sizes[i] < q_data->sizeimage[i]) + return -EINVAL; + return 0; + } + *num_planes = q_data->fmt->colplanes; for (i = 0; i < q_data->fmt->colplanes; i++) { sizes[i] = q_data->sizeimage[i]; @@ -1074,6 +1081,11 @@ return PTR_ERR_OR_ZERO(jpeg->clk_jdec_smi); } +static inline void mtk_jpeg_clk_release(struct mtk_jpeg_dev *jpeg) +{ + put_device(jpeg->larb); +} + static int mtk_jpeg_probe(struct platform_device *pdev) { struct mtk_jpeg_dev *jpeg; @@ -1177,6 +1189,7 @@ v4l2_device_unregister(&jpeg->v4l2_dev); err_dev_register: + mtk_jpeg_clk_release(jpeg); err_clk_init: @@ -1194,6 +1207,7 @@ video_device_release(jpeg->dec_vdev); v4l2_m2m_release(jpeg->m2m_dev); v4l2_device_unregister(&jpeg->v4l2_dev); + mtk_jpeg_clk_release(jpeg); return 0; } --- linux-5.8.0.orig/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c +++ linux-5.8.0/drivers/media/platform/mtk-mdp/mtk_mdp_comp.c @@ -96,6 +96,7 @@ { struct device_node *larb_node; struct platform_device *larb_pdev; + int ret; int i; if (comp_id < 0 || comp_id >= MTK_MDP_COMP_ID_MAX) { @@ -113,8 +114,8 @@ if (IS_ERR(comp->clk[i])) { if (PTR_ERR(comp->clk[i]) != -EPROBE_DEFER) dev_err(dev, "Failed to get clock\n"); - - return PTR_ERR(comp->clk[i]); + ret = PTR_ERR(comp->clk[i]); + goto put_dev; } /* Only RDMA needs two clocks */ @@ -133,20 +134,27 @@ if (!larb_node) { dev_err(dev, "Missing mediadek,larb phandle in %pOF node\n", node); - return -EINVAL; + ret = -EINVAL; + goto put_dev; } larb_pdev = of_find_device_by_node(larb_node); if (!larb_pdev) { dev_warn(dev, "Waiting for larb device %pOF\n", larb_node); of_node_put(larb_node); - return -EPROBE_DEFER; + ret = -EPROBE_DEFER; + goto put_dev; } of_node_put(larb_node); comp->larb_dev = &larb_pdev->dev; return 0; + +put_dev: + of_node_put(comp->dev_node); + + return ret; } void mtk_mdp_comp_deinit(struct device *dev, struct mtk_mdp_comp *comp) --- linux-5.8.0.orig/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +++ linux-5.8.0/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c @@ -48,11 +48,14 @@ dec_clk->clk_info = devm_kcalloc(&pdev->dev, dec_clk->clk_num, sizeof(*clk_info), GFP_KERNEL); - if (!dec_clk->clk_info) - return -ENOMEM; + if (!dec_clk->clk_info) { + ret = -ENOMEM; + goto put_device; + } } else { mtk_v4l2_err("Failed to get vdec clock count"); - return -EINVAL; + ret = -EINVAL; + goto put_device; } for (i = 0; i < dec_clk->clk_num; i++) { @@ -61,25 +64,29 @@ "clock-names", i, &clk_info->clk_name); if (ret) { mtk_v4l2_err("Failed to get clock name id = %d", i); - return ret; + goto put_device; } clk_info->vcodec_clk = devm_clk_get(&pdev->dev, clk_info->clk_name); if (IS_ERR(clk_info->vcodec_clk)) { mtk_v4l2_err("devm_clk_get (%d)%s fail", i, clk_info->clk_name); - return PTR_ERR(clk_info->vcodec_clk); + ret = PTR_ERR(clk_info->vcodec_clk); + goto put_device; } } pm_runtime_enable(&pdev->dev); - + return 0; +put_device: + put_device(pm->larbvdec); return ret; } void mtk_vcodec_release_dec_pm(struct mtk_vcodec_dev *dev) { pm_runtime_disable(dev->pm.dev); + put_device(dev->pm.larbvdec); } void mtk_vcodec_dec_pw_on(struct mtk_vcodec_pm *pm) --- linux-5.8.0.orig/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c +++ linux-5.8.0/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c @@ -49,14 +49,16 @@ node = of_parse_phandle(dev->of_node, "mediatek,larb", 1); if (!node) { mtk_v4l2_err("no mediatek,larb found"); - return -ENODEV; + ret = -ENODEV; + goto put_larbvenc; } pdev = of_find_device_by_node(node); of_node_put(node); if (!pdev) { mtk_v4l2_err("no mediatek,larb device found"); - return -ENODEV; + ret = -ENODEV; + goto put_larbvenc; } pm->larbvenclt = &pdev->dev; @@ -69,11 +71,14 @@ enc_clk->clk_info = devm_kcalloc(&pdev->dev, enc_clk->clk_num, sizeof(*clk_info), GFP_KERNEL); - if (!enc_clk->clk_info) - return -ENOMEM; + if (!enc_clk->clk_info) { + ret = -ENOMEM; + goto put_larbvenclt; + } } else { mtk_v4l2_err("Failed to get venc clock count"); - return -EINVAL; + ret = -EINVAL; + goto put_larbvenclt; } for (i = 0; i < enc_clk->clk_num; i++) { @@ -82,17 +87,24 @@ "clock-names", i, &clk_info->clk_name); if (ret) { mtk_v4l2_err("venc failed to get clk name %d", i); - return ret; + goto put_larbvenclt; } clk_info->vcodec_clk = devm_clk_get(&pdev->dev, clk_info->clk_name); if (IS_ERR(clk_info->vcodec_clk)) { mtk_v4l2_err("venc devm_clk_get (%d)%s fail", i, clk_info->clk_name); - return PTR_ERR(clk_info->vcodec_clk); + ret = PTR_ERR(clk_info->vcodec_clk); + goto put_larbvenclt; } } + return 0; + +put_larbvenclt: + put_device(pm->larbvenclt); +put_larbvenc: + put_device(pm->larbvenc); return ret; } --- linux-5.8.0.orig/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c +++ linux-5.8.0/drivers/media/platform/mtk-vcodec/vdec/vdec_vp9_if.c @@ -891,7 +891,8 @@ memset(inst->seg_id_buf.va, 0, inst->seg_id_buf.size); if (vsi->show_frame & BIT(2)) { - if (vpu_dec_start(&inst->vpu, NULL, 0)) { + ret = vpu_dec_start(&inst->vpu, NULL, 0); + if (ret) { mtk_vcodec_err(inst, "vpu trig decoder failed"); goto DECODE_ERROR; } --- linux-5.8.0.orig/drivers/media/platform/mx2_emmaprp.c +++ linux-5.8.0/drivers/media/platform/mx2_emmaprp.c @@ -852,8 +852,11 @@ platform_set_drvdata(pdev, pcdev); irq = platform_get_irq(pdev, 0); - if (irq < 0) - return irq; + if (irq < 0) { + ret = irq; + goto rel_vdev; + } + ret = devm_request_irq(&pdev->dev, irq, emmaprp_irq, 0, dev_name(&pdev->dev), pcdev); if (ret) --- linux-5.8.0.orig/drivers/media/platform/omap3isp/isp.c +++ linux-5.8.0/drivers/media/platform/omap3isp/isp.c @@ -2328,8 +2328,10 @@ mem = platform_get_resource(pdev, IORESOURCE_MEM, i); isp->mmio_base[map_idx] = devm_ioremap_resource(isp->dev, mem); - if (IS_ERR(isp->mmio_base[map_idx])) - return PTR_ERR(isp->mmio_base[map_idx]); + if (IS_ERR(isp->mmio_base[map_idx])) { + ret = PTR_ERR(isp->mmio_base[map_idx]); + goto error; + } } ret = isp_get_clocks(isp); --- linux-5.8.0.orig/drivers/media/platform/omap3isp/isppreview.c +++ linux-5.8.0/drivers/media/platform/omap3isp/isppreview.c @@ -2287,7 +2287,7 @@ me->ops = &preview_media_ops; ret = media_entity_pads_init(me, PREV_PADS_NUM, pads); if (ret < 0) - return ret; + goto error_handler_free; preview_init_formats(sd, NULL); @@ -2320,6 +2320,8 @@ omap3isp_video_cleanup(&prev->video_in); error_video_in: media_entity_cleanup(&prev->subdev.entity); +error_handler_free: + v4l2_ctrl_handler_free(&prev->ctrls); return ret; } --- linux-5.8.0.orig/drivers/media/platform/pxa_camera.c +++ linux-5.8.0/drivers/media/platform/pxa_camera.c @@ -1447,6 +1447,9 @@ struct pxa_camera_dev *pcdev = vb2_get_drv_priv(vb->vb2_queue); struct pxa_buffer *buf = vb2_to_pxa_buffer(vb); int ret = 0; +#ifdef DEBUG + int i; +#endif switch (pcdev->channels) { case 1: --- linux-5.8.0.orig/drivers/media/platform/qcom/camss/camss-csiphy.c +++ linux-5.8.0/drivers/media/platform/qcom/camss/camss-csiphy.c @@ -176,8 +176,10 @@ int ret; ret = pm_runtime_get_sync(dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_sync(dev); return ret; + } ret = csiphy_set_clock_rates(csiphy); if (ret < 0) { --- linux-5.8.0.orig/drivers/media/platform/qcom/camss/camss-video.c +++ linux-5.8.0/drivers/media/platform/qcom/camss/camss-video.c @@ -901,6 +901,7 @@ video->nformats = ARRAY_SIZE(formats_rdi_8x96); } } else { + ret = -EINVAL; goto error_video_register; } --- linux-5.8.0.orig/drivers/media/platform/qcom/camss/camss.c +++ linux-5.8.0/drivers/media/platform/qcom/camss/camss.c @@ -504,7 +504,6 @@ return num_subdevs; err_cleanup: - v4l2_async_notifier_cleanup(&camss->notifier); of_node_put(node); return ret; } @@ -835,29 +834,38 @@ camss->csid_num = 4; camss->vfe_num = 2; } else { - return -EINVAL; + ret = -EINVAL; + goto err_free; } camss->csiphy = devm_kcalloc(dev, camss->csiphy_num, sizeof(*camss->csiphy), GFP_KERNEL); - if (!camss->csiphy) - return -ENOMEM; + if (!camss->csiphy) { + ret = -ENOMEM; + goto err_free; + } camss->csid = devm_kcalloc(dev, camss->csid_num, sizeof(*camss->csid), GFP_KERNEL); - if (!camss->csid) - return -ENOMEM; + if (!camss->csid) { + ret = -ENOMEM; + goto err_free; + } camss->vfe = devm_kcalloc(dev, camss->vfe_num, sizeof(*camss->vfe), GFP_KERNEL); - if (!camss->vfe) - return -ENOMEM; + if (!camss->vfe) { + ret = -ENOMEM; + goto err_free; + } v4l2_async_notifier_init(&camss->notifier); num_subdevs = camss_of_parse_ports(camss); - if (num_subdevs < 0) - return num_subdevs; + if (num_subdevs < 0) { + ret = num_subdevs; + goto err_cleanup; + } ret = camss_init_subdevices(camss); if (ret < 0) @@ -936,6 +944,8 @@ v4l2_device_unregister(&camss->v4l2_dev); err_cleanup: v4l2_async_notifier_cleanup(&camss->notifier); +err_free: + kfree(camss); return ret; } --- linux-5.8.0.orig/drivers/media/platform/qcom/venus/core.c +++ linux-5.8.0/drivers/media/platform/qcom/venus/core.c @@ -224,13 +224,15 @@ ret = dma_set_mask_and_coherent(dev, core->res->dma_mask); if (ret) - return ret; + goto err_core_put; if (!dev->dma_parms) { dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms), GFP_KERNEL); - if (!dev->dma_parms) - return -ENOMEM; + if (!dev->dma_parms) { + ret = -ENOMEM; + goto err_core_put; + } } dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); @@ -242,11 +244,11 @@ IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "venus", core); if (ret) - return ret; + goto err_core_put; ret = hfi_create(core, &venus_core_ops); if (ret) - return ret; + goto err_core_put; pm_runtime_enable(dev); @@ -287,8 +289,10 @@ goto err_core_deinit; ret = pm_runtime_put_sync(dev); - if (ret) + if (ret) { + pm_runtime_get_noresume(dev); goto err_dev_unregister; + } return 0; @@ -299,9 +303,13 @@ err_venus_shutdown: venus_shutdown(core); err_runtime_disable: + pm_runtime_put_noidle(dev); pm_runtime_set_suspended(dev); pm_runtime_disable(dev); hfi_destroy(core); +err_core_put: + if (core->pm_ops->core_put) + core->pm_ops->core_put(dev); return ret; } @@ -351,12 +359,26 @@ if (ret) return ret; + if (pm_ops->core_power) { + ret = pm_ops->core_power(dev, POWER_OFF); + if (ret) + return ret; + } + ret = icc_set_bw(core->cpucfg_path, 0, 0); if (ret) - return ret; + goto err_cpucfg_path; - if (pm_ops->core_power) - ret = pm_ops->core_power(dev, POWER_OFF); + ret = icc_set_bw(core->video_path, 0, 0); + if (ret) + goto err_video_path; + + return ret; + +err_video_path: + icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0); +err_cpucfg_path: + pm_ops->core_power(dev, POWER_ON); return ret; } @@ -367,16 +389,20 @@ const struct venus_pm_ops *pm_ops = core->pm_ops; int ret; + ret = icc_set_bw(core->video_path, kbps_to_icc(20000), 0); + if (ret) + return ret; + + ret = icc_set_bw(core->cpucfg_path, kbps_to_icc(1000), 0); + if (ret) + return ret; + if (pm_ops->core_power) { ret = pm_ops->core_power(dev, POWER_ON); if (ret) return ret; } - ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000)); - if (ret) - return ret; - return hfi_core_resume(core, false); } --- linux-5.8.0.orig/drivers/media/platform/qcom/venus/pm_helpers.c +++ linux-5.8.0/drivers/media/platform/qcom/venus/pm_helpers.c @@ -212,6 +212,16 @@ } mutex_unlock(&core->lock); + /* + * keep minimum bandwidth vote for "video-mem" path, + * so that clks can be disabled during vdec_session_release(). + * Actual bandwidth drop will be done during device supend + * so that device can power down without any warnings. + */ + + if (!total_avg && !total_peak) + total_avg = kbps_to_icc(1000); + dev_dbg(core->dev, "total: avg_bw: %u, peak_bw: %u\n", total_avg, total_peak); @@ -496,6 +506,10 @@ list_for_each_entry(inst_pos, &core->instances, list) { if (inst_pos == inst) continue; + + if (inst_pos->state != INST_START) + continue; + vpp_freq = inst_pos->clk_data.codec_freq_data->vpp_freq; coreid = inst_pos->clk_data.core_id; --- linux-5.8.0.orig/drivers/media/platform/qcom/venus/vdec.c +++ linux-5.8.0/drivers/media/platform/qcom/venus/vdec.c @@ -1088,8 +1088,6 @@ break; } - INIT_LIST_HEAD(&inst->registeredbufs); - return ret; } @@ -1189,6 +1187,14 @@ static void vdec_buf_cleanup(struct vb2_buffer *vb) { struct venus_inst *inst = vb2_get_drv_priv(vb->vb2_queue); + struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); + struct venus_buffer *buf = to_venus_buffer(vbuf); + + mutex_lock(&inst->lock); + if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) + if (!list_empty(&inst->registeredbufs)) + list_del_init(&buf->reg_list); + mutex_unlock(&inst->lock); inst->buf_count--; if (!inst->buf_count) --- linux-5.8.0.orig/drivers/media/platform/rcar-fcp.c +++ linux-5.8.0/drivers/media/platform/rcar-fcp.c @@ -103,8 +103,10 @@ return 0; ret = pm_runtime_get_sync(fcp->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(fcp->dev); return ret; + } return 0; } --- linux-5.8.0.orig/drivers/media/platform/rcar-vin/rcar-csi2.c +++ linux-5.8.0/drivers/media/platform/rcar-vin/rcar-csi2.c @@ -361,7 +361,6 @@ struct media_pad pads[NR_OF_RCAR_CSI2_PAD]; struct v4l2_async_notifier notifier; - struct v4l2_async_subdev asd; struct v4l2_subdev *remote; struct v4l2_mbus_framefmt mf; @@ -810,6 +809,8 @@ static int rcsi2_parse_dt(struct rcar_csi2 *priv) { + struct v4l2_async_subdev *asd; + struct fwnode_handle *fwnode; struct device_node *ep; struct v4l2_fwnode_endpoint v4l2_ep = { .bus_type = 0 }; int ret; @@ -833,24 +834,19 @@ return ret; } - priv->asd.match.fwnode = - fwnode_graph_get_remote_endpoint(of_fwnode_handle(ep)); - priv->asd.match_type = V4L2_ASYNC_MATCH_FWNODE; - + fwnode = fwnode_graph_get_remote_endpoint(of_fwnode_handle(ep)); of_node_put(ep); - v4l2_async_notifier_init(&priv->notifier); - - ret = v4l2_async_notifier_add_subdev(&priv->notifier, &priv->asd); - if (ret) { - fwnode_handle_put(priv->asd.match.fwnode); - return ret; - } + dev_dbg(priv->dev, "Found '%pOF'\n", to_of_node(fwnode)); + v4l2_async_notifier_init(&priv->notifier); priv->notifier.ops = &rcar_csi2_notify_ops; - dev_dbg(priv->dev, "Found '%pOF'\n", - to_of_node(priv->asd.match.fwnode)); + asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, fwnode, + sizeof(*asd)); + fwnode_handle_put(fwnode); + if (IS_ERR(asd)) + return PTR_ERR(asd); ret = v4l2_async_subdev_notifier_register(&priv->subdev, &priv->notifier); --- linux-5.8.0.orig/drivers/media/platform/rcar-vin/rcar-dma.c +++ linux-5.8.0/drivers/media/platform/rcar-vin/rcar-dma.c @@ -1392,8 +1392,10 @@ int ret; ret = pm_runtime_get_sync(vin->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(vin->dev); return ret; + } /* Make register writes take effect immediately. */ vnmc = rvin_read(vin, VNMC_REG); --- linux-5.8.0.orig/drivers/media/platform/rcar_drif.c +++ linux-5.8.0/drivers/media/platform/rcar_drif.c @@ -185,7 +185,6 @@ /* OF graph endpoint's V4L2 async data */ struct rcar_drif_graph_ep { struct v4l2_subdev *subdev; /* Async matched subdev */ - struct v4l2_async_subdev asd; /* Async sub-device descriptor */ }; /* DMA buffer */ @@ -1109,12 +1108,6 @@ struct rcar_drif_sdr *sdr = container_of(notifier, struct rcar_drif_sdr, notifier); - if (sdr->ep.asd.match.fwnode != - of_fwnode_handle(subdev->dev->of_node)) { - rdrif_err(sdr, "subdev %s cannot bind\n", subdev->name); - return -EINVAL; - } - v4l2_set_subdev_hostdata(subdev, sdr); sdr->ep.subdev = subdev; rdrif_dbg(sdr, "bound asd %s\n", subdev->name); @@ -1218,7 +1211,7 @@ { struct v4l2_async_notifier *notifier = &sdr->notifier; struct fwnode_handle *fwnode, *ep; - int ret; + struct v4l2_async_subdev *asd; v4l2_async_notifier_init(notifier); @@ -1227,26 +1220,21 @@ if (!ep) return 0; + /* Get the endpoint properties */ + rcar_drif_get_ep_properties(sdr, ep); + fwnode = fwnode_graph_get_remote_port_parent(ep); + fwnode_handle_put(ep); if (!fwnode) { dev_warn(sdr->dev, "bad remote port parent\n"); - fwnode_handle_put(ep); return -EINVAL; } - sdr->ep.asd.match.fwnode = fwnode; - sdr->ep.asd.match_type = V4L2_ASYNC_MATCH_FWNODE; - ret = v4l2_async_notifier_add_subdev(notifier, &sdr->ep.asd); - if (ret) { - fwnode_handle_put(fwnode); - return ret; - } - - /* Get the endpoint properties */ - rcar_drif_get_ep_properties(sdr, ep); - + asd = v4l2_async_notifier_add_fwnode_subdev(notifier, fwnode, + sizeof(*asd)); fwnode_handle_put(fwnode); - fwnode_handle_put(ep); + if (IS_ERR(asd)) + return PTR_ERR(asd); return 0; } --- linux-5.8.0.orig/drivers/media/platform/rockchip/rga/rga-buf.c +++ linux-5.8.0/drivers/media/platform/rockchip/rga/rga-buf.c @@ -81,6 +81,7 @@ ret = pm_runtime_get_sync(rga->dev); if (ret < 0) { + pm_runtime_put_noidle(rga->dev); rga_buf_return_buffers(q, VB2_BUF_STATE_QUEUED); return ret; } --- linux-5.8.0.orig/drivers/media/platform/rockchip/rga/rga-hw.c +++ linux-5.8.0/drivers/media/platform/rockchip/rga/rga-hw.c @@ -200,22 +200,25 @@ dst_info.data.format = ctx->out.fmt->hw_format; dst_info.data.swap = ctx->out.fmt->color_swap; - if (ctx->in.fmt->hw_format >= RGA_COLOR_FMT_YUV422SP) { - if (ctx->out.fmt->hw_format < RGA_COLOR_FMT_YUV422SP) { - switch (ctx->in.colorspace) { - case V4L2_COLORSPACE_REC709: - src_info.data.csc_mode = - RGA_SRC_CSC_MODE_BT709_R0; - break; - default: - src_info.data.csc_mode = - RGA_SRC_CSC_MODE_BT601_R0; - break; - } + /* + * CSC mode must only be set when the colorspace families differ between + * input and output. It must remain unset (zeroed) if both are the same. + */ + + if (RGA_COLOR_FMT_IS_YUV(ctx->in.fmt->hw_format) && + RGA_COLOR_FMT_IS_RGB(ctx->out.fmt->hw_format)) { + switch (ctx->in.colorspace) { + case V4L2_COLORSPACE_REC709: + src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0; + break; + default: + src_info.data.csc_mode = RGA_SRC_CSC_MODE_BT601_R0; + break; } } - if (ctx->out.fmt->hw_format >= RGA_COLOR_FMT_YUV422SP) { + if (RGA_COLOR_FMT_IS_RGB(ctx->in.fmt->hw_format) && + RGA_COLOR_FMT_IS_YUV(ctx->out.fmt->hw_format)) { switch (ctx->out.colorspace) { case V4L2_COLORSPACE_REC709: dst_info.data.csc_mode = RGA_SRC_CSC_MODE_BT709_R0; --- linux-5.8.0.orig/drivers/media/platform/rockchip/rga/rga-hw.h +++ linux-5.8.0/drivers/media/platform/rockchip/rga/rga-hw.h @@ -95,6 +95,11 @@ #define RGA_COLOR_FMT_CP_8BPP 15 #define RGA_COLOR_FMT_MASK 15 +#define RGA_COLOR_FMT_IS_YUV(fmt) \ + (((fmt) >= RGA_COLOR_FMT_YUV422SP) && ((fmt) < RGA_COLOR_FMT_CP_1BPP)) +#define RGA_COLOR_FMT_IS_RGB(fmt) \ + ((fmt) < RGA_COLOR_FMT_YUV422SP) + #define RGA_COLOR_NONE_SWAP 0 #define RGA_COLOR_RB_SWAP 1 #define RGA_COLOR_ALPHA_SWAP 2 --- linux-5.8.0.orig/drivers/media/platform/s3c-camif/camif-core.c +++ linux-5.8.0/drivers/media/platform/s3c-camif/camif-core.c @@ -464,7 +464,7 @@ ret = camif_media_dev_init(camif); if (ret < 0) - goto err_alloc; + goto err_pm; ret = camif_register_sensor(camif); if (ret < 0) @@ -498,10 +498,9 @@ media_device_unregister(&camif->media_dev); media_device_cleanup(&camif->media_dev); camif_unregister_media_entities(camif); -err_alloc: +err_pm: pm_runtime_put(dev); pm_runtime_disable(dev); -err_pm: camif_clk_put(camif); err_clk: s3c_camif_unregister_subdev(camif); --- linux-5.8.0.orig/drivers/media/platform/s5p-g2d/g2d.c +++ linux-5.8.0/drivers/media/platform/s5p-g2d/g2d.c @@ -695,21 +695,13 @@ vfd->lock = &dev->mutex; vfd->v4l2_dev = &dev->v4l2_dev; vfd->device_caps = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING; - ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0); - if (ret) { - v4l2_err(&dev->v4l2_dev, "Failed to register video device\n"); - goto rel_vdev; - } - video_set_drvdata(vfd, dev); - dev->vfd = vfd; - v4l2_info(&dev->v4l2_dev, "device registered as /dev/video%d\n", - vfd->num); + platform_set_drvdata(pdev, dev); dev->m2m_dev = v4l2_m2m_init(&g2d_m2m_ops); if (IS_ERR(dev->m2m_dev)) { v4l2_err(&dev->v4l2_dev, "Failed to init mem2mem device\n"); ret = PTR_ERR(dev->m2m_dev); - goto unreg_video_dev; + goto rel_vdev; } def_frame.stride = (def_frame.width * def_frame.fmt->depth) >> 3; @@ -717,14 +709,24 @@ of_id = of_match_node(exynos_g2d_match, pdev->dev.of_node); if (!of_id) { ret = -ENODEV; - goto unreg_video_dev; + goto free_m2m; } dev->variant = (struct g2d_variant *)of_id->data; + ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0); + if (ret) { + v4l2_err(&dev->v4l2_dev, "Failed to register video device\n"); + goto free_m2m; + } + video_set_drvdata(vfd, dev); + dev->vfd = vfd; + v4l2_info(&dev->v4l2_dev, "device registered as /dev/video%d\n", + vfd->num); + return 0; -unreg_video_dev: - video_unregister_device(dev->vfd); +free_m2m: + v4l2_m2m_release(dev->m2m_dev); rel_vdev: video_device_release(vfd); unreg_v4l2_dev: --- linux-5.8.0.orig/drivers/media/platform/s5p-mfc/s5p_mfc_pm.c +++ linux-5.8.0/drivers/media/platform/s5p-mfc/s5p_mfc_pm.c @@ -79,8 +79,10 @@ int i, ret = 0; ret = pm_runtime_get_sync(pm->device); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(pm->device); return ret; + } /* clock control */ for (i = 0; i < pm->num_clocks; i++) { --- linux-5.8.0.orig/drivers/media/platform/sti/bdisp/bdisp-v4l2.c +++ linux-5.8.0/drivers/media/platform/sti/bdisp/bdisp-v4l2.c @@ -1371,7 +1371,7 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { dev_err(dev, "failed to set PM\n"); - goto err_dbg; + goto err_pm; } /* Filters */ @@ -1399,7 +1399,6 @@ bdisp_hw_free_filters(bdisp->dev); err_pm: pm_runtime_put(dev); -err_dbg: bdisp_debugfs_remove(bdisp); err_v4l2: v4l2_device_unregister(&bdisp->v4l2_dev); --- linux-5.8.0.orig/drivers/media/platform/sti/delta/delta-v4l2.c +++ linux-5.8.0/drivers/media/platform/sti/delta/delta-v4l2.c @@ -954,8 +954,10 @@ /* enable the hardware */ if (!dec->pm) { ret = delta_get_sync(ctx); - if (ret) + if (ret) { + delta_put_autosuspend(ctx); goto err; + } } /* decode this access unit */ --- linux-5.8.0.orig/drivers/media/platform/sti/hva/hva-hw.c +++ linux-5.8.0/drivers/media/platform/sti/hva/hva-hw.c @@ -272,6 +272,7 @@ if (pm_runtime_get_sync(dev) < 0) { dev_err(dev, "%s failed to get pm_runtime\n", HVA_PREFIX); + pm_runtime_put_noidle(dev); mutex_unlock(&hva->protect_mutex); return -EFAULT; } @@ -388,7 +389,7 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { dev_err(dev, "%s failed to set PM\n", HVA_PREFIX); - goto err_clk; + goto err_pm; } /* check IP hardware version */ @@ -553,6 +554,7 @@ if (pm_runtime_get_sync(dev) < 0) { seq_puts(s, "Cannot wake up IP\n"); + pm_runtime_put_noidle(dev); mutex_unlock(&hva->protect_mutex); return; } --- linux-5.8.0.orig/drivers/media/platform/stm32/stm32-dcmi.c +++ linux-5.8.0/drivers/media/platform/stm32/stm32-dcmi.c @@ -733,7 +733,7 @@ if (ret < 0) { dev_err(dcmi->dev, "%s: Failed to start streaming, cannot get sync (%d)\n", __func__, ret); - goto err_release_buffers; + goto err_pm_put; } ret = media_pipeline_start(&dcmi->vdev->entity, &dcmi->pipeline); @@ -837,8 +837,6 @@ err_pm_put: pm_runtime_put(dcmi->dev); - -err_release_buffers: spin_lock_irq(&dcmi->irqlock); /* * Return all buffers to vb2 in QUEUED state. --- linux-5.8.0.orig/drivers/media/platform/ti-vpe/vpe.c +++ linux-5.8.0/drivers/media/platform/ti-vpe/vpe.c @@ -2475,6 +2475,8 @@ r = pm_runtime_get_sync(&pdev->dev); WARN_ON(r < 0); + if (r) + pm_runtime_put_noidle(&pdev->dev); return r < 0 ? r : 0; } --- linux-5.8.0.orig/drivers/media/platform/vsp1/vsp1_dl.c +++ linux-5.8.0/drivers/media/platform/vsp1/vsp1_dl.c @@ -431,6 +431,8 @@ if (!pool) return NULL; + pool->vsp1 = vsp1; + spin_lock_init(&pool->lock); INIT_LIST_HEAD(&pool->free); --- linux-5.8.0.orig/drivers/media/platform/vsp1/vsp1_drm.c +++ linux-5.8.0/drivers/media/platform/vsp1/vsp1_drm.c @@ -245,7 +245,7 @@ brx = &vsp1->bru->entity; else if (pipe->brx && !drm_pipe->force_brx_release) brx = pipe->brx; - else if (!vsp1->bru->entity.pipe) + else if (vsp1_feature(vsp1, VSP1_HAS_BRU) && !vsp1->bru->entity.pipe) brx = &vsp1->bru->entity; else brx = &vsp1->brs->entity; @@ -462,9 +462,9 @@ * make sure it is present in the pipeline's list of entities if it * wasn't already. */ - if (!use_uif) { + if (drm_pipe->uif && !use_uif) { drm_pipe->uif->pipe = NULL; - } else if (!drm_pipe->uif->pipe) { + } else if (drm_pipe->uif && !drm_pipe->uif->pipe) { drm_pipe->uif->pipe = pipe; list_add_tail(&drm_pipe->uif->list_pipe, &pipe->entities); } --- linux-5.8.0.orig/drivers/media/platform/vsp1/vsp1_drv.c +++ linux-5.8.0/drivers/media/platform/vsp1/vsp1_drv.c @@ -562,7 +562,12 @@ int ret; ret = pm_runtime_get_sync(vsp1->dev); - return ret < 0 ? ret : 0; + if (ret < 0) { + pm_runtime_put_noidle(vsp1->dev); + return ret; + } + + return 0; } /* @@ -845,12 +850,12 @@ /* Configure device parameters based on the version register. */ pm_runtime_enable(&pdev->dev); - ret = pm_runtime_get_sync(&pdev->dev); + ret = vsp1_device_get(vsp1); if (ret < 0) goto done; vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION); - pm_runtime_put_sync(&pdev->dev); + vsp1_device_put(vsp1); for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) { if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) == @@ -877,8 +882,10 @@ } done: - if (ret) + if (ret) { pm_runtime_disable(&pdev->dev); + rcar_fcp_put(vsp1->fcp); + } return ret; } --- linux-5.8.0.orig/drivers/media/rc/Makefile +++ linux-5.8.0/drivers/media/rc/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_RC_CORE) += rc-core.o rc-core-y := rc-main.o rc-ir-raw.o rc-core-$(CONFIG_LIRC) += lirc_dev.o +rc-core-$(CONFIG_MEDIA_CEC_RC) += keymaps/rc-cec.o rc-core-$(CONFIG_BPF_LIRC_MODE2) += bpf-lirc.o obj-$(CONFIG_IR_NEC_DECODER) += ir-nec-decoder.o obj-$(CONFIG_IR_RC5_DECODER) += ir-rc5-decoder.o --- linux-5.8.0.orig/drivers/media/rc/ati_remote.c +++ linux-5.8.0/drivers/media/rc/ati_remote.c @@ -835,6 +835,10 @@ err("%s: endpoint_in message size==0? \n", __func__); return -ENODEV; } + if (!usb_endpoint_is_int_out(endpoint_out)) { + err("%s: Unexpected endpoint_out\n", __func__); + return -ENODEV; + } ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL); rc_dev = rc_allocate_device(RC_DRIVER_SCANCODE); --- linux-5.8.0.orig/drivers/media/rc/gpio-ir-tx.c +++ linux-5.8.0/drivers/media/rc/gpio-ir-tx.c @@ -19,8 +19,6 @@ struct gpio_desc *gpio; unsigned int carrier; unsigned int duty_cycle; - /* we need a spinlock to hold the cpu while transmitting */ - spinlock_t lock; }; static const struct of_device_id gpio_ir_tx_of_match[] = { @@ -53,12 +51,11 @@ static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf, uint count) { - unsigned long flags; ktime_t edge; s32 delta; int i; - spin_lock_irqsave(&gpio_ir->lock, flags); + local_irq_disable(); edge = ktime_get(); @@ -72,14 +69,11 @@ } gpiod_set_value(gpio_ir->gpio, 0); - - spin_unlock_irqrestore(&gpio_ir->lock, flags); } static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf, uint count) { - unsigned long flags; ktime_t edge; /* * delta should never exceed 0.5 seconds (IR_MAX_DURATION) and on @@ -95,7 +89,7 @@ space = DIV_ROUND_CLOSEST((100 - gpio_ir->duty_cycle) * (NSEC_PER_SEC / 100), gpio_ir->carrier); - spin_lock_irqsave(&gpio_ir->lock, flags); + local_irq_disable(); edge = ktime_get(); @@ -128,19 +122,20 @@ edge = last; } } - - spin_unlock_irqrestore(&gpio_ir->lock, flags); } static int gpio_ir_tx(struct rc_dev *dev, unsigned int *txbuf, unsigned int count) { struct gpio_ir *gpio_ir = dev->priv; + unsigned long flags; + local_irq_save(flags); if (gpio_ir->carrier) gpio_ir_tx_modulated(gpio_ir, txbuf, count); else gpio_ir_tx_unmodulated(gpio_ir, txbuf, count); + local_irq_restore(flags); return count; } @@ -176,7 +171,6 @@ gpio_ir->carrier = 38000; gpio_ir->duty_cycle = 50; - spin_lock_init(&gpio_ir->lock); rc = devm_rc_register_device(&pdev->dev, rcdev); if (rc < 0) --- linux-5.8.0.orig/drivers/media/rc/ir-mce_kbd-decoder.c +++ linux-5.8.0/drivers/media/rc/ir-mce_kbd-decoder.c @@ -320,7 +320,7 @@ data->body); spin_lock(&data->keylock); if (scancode) { - delay = nsecs_to_jiffies(dev->timeout) + + delay = usecs_to_jiffies(dev->timeout) + msecs_to_jiffies(100); mod_timer(&data->rx_timeout, jiffies + delay); } else { --- linux-5.8.0.orig/drivers/media/rc/ite-cir.c +++ linux-5.8.0/drivers/media/rc/ite-cir.c @@ -1551,7 +1551,7 @@ rdev->s_rx_carrier_range = ite_set_rx_carrier_range; /* FIFO threshold is 17 bytes, so 17 * 8 samples minimum */ rdev->min_timeout = 17 * 8 * ITE_BAUDRATE_DIVISOR * - itdev->params.sample_period; + itdev->params.sample_period / 1000; rdev->timeout = IR_DEFAULT_TIMEOUT; rdev->max_timeout = 10 * IR_DEFAULT_TIMEOUT; rdev->rx_resolution = ITE_BAUDRATE_DIVISOR * --- linux-5.8.0.orig/drivers/media/rc/keymaps/Makefile +++ linux-5.8.0/drivers/media/rc/keymaps/Makefile @@ -21,7 +21,6 @@ rc-behold.o \ rc-behold-columbus.o \ rc-budget-ci-old.o \ - rc-cec.o \ rc-cinergy-1400.o \ rc-cinergy.o \ rc-d680-dmb.o \ --- linux-5.8.0.orig/drivers/media/rc/keymaps/rc-cec.c +++ linux-5.8.0/drivers/media/rc/keymaps/rc-cec.c @@ -1,6 +1,16 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* Keytable for the CEC remote control * + * This keymap is unusual in that it can't be built as a module, + * instead it is registered directly in rc-main.c if CONFIG_MEDIA_CEC_RC + * is set. This is because it can be called from drm_dp_cec_set_edid() via + * cec_register_adapter() in an asynchronous context, and it is not + * allowed to use request_module() to load rc-cec.ko in that case. + * + * Since this keymap is only used if CONFIG_MEDIA_CEC_RC is set, we + * just compile this keymap into the rc-core module and never as a + * separate module. + * * Copyright (c) 2015 by Kamil Debski */ @@ -152,7 +162,7 @@ /* 0x77-0xff: Reserved */ }; -static struct rc_map_list cec_map = { +struct rc_map_list cec_map = { .map = { .scan = cec, .size = ARRAY_SIZE(cec), @@ -160,19 +170,3 @@ .name = RC_MAP_CEC, } }; - -static int __init init_rc_map_cec(void) -{ - return rc_map_register(&cec_map); -} - -static void __exit exit_rc_map_cec(void) -{ - rc_map_unregister(&cec_map); -} - -module_init(init_rc_map_cec); -module_exit(exit_rc_map_cec); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Kamil Debski"); --- linux-5.8.0.orig/drivers/media/rc/mceusb.c +++ linux-5.8.0/drivers/media/rc/mceusb.c @@ -701,11 +701,18 @@ data[0], data[1]); break; case MCE_RSP_EQIRCFS: + if (!data[0] && !data[1]) { + dev_dbg(dev, "%s: no carrier", inout); + break; + } + // prescaler should make sense + if (data[0] > 8) + break; period = DIV_ROUND_CLOSEST((1U << data[0] * 2) * (data[1] + 1), 10); if (!period) break; - carrier = (1000 * 1000) / period; + carrier = USEC_PER_SEC / period; dev_dbg(dev, "%s carrier of %u Hz (period %uus)", inout, carrier, period); break; @@ -1169,7 +1176,7 @@ switch (subcmd) { /* the one and only 5-byte return value command */ case MCE_RSP_GETPORTSTATUS: - if (buf_in[5] == 0) + if (buf_in[5] == 0 && *hi < 8) ir->txports_cabled |= 1 << *hi; break; --- linux-5.8.0.orig/drivers/media/rc/rc-main.c +++ linux-5.8.0/drivers/media/rc/rc-main.c @@ -737,7 +737,7 @@ void rc_repeat(struct rc_dev *dev) { unsigned long flags; - unsigned int timeout = nsecs_to_jiffies(dev->timeout) + + unsigned int timeout = usecs_to_jiffies(dev->timeout) + msecs_to_jiffies(repeat_period(dev->last_protocol)); struct lirc_scancode sc = { .scancode = dev->last_scancode, .rc_proto = dev->last_protocol, @@ -855,7 +855,7 @@ ir_do_keydown(dev, protocol, scancode, keycode, toggle); if (dev->keypressed) { - dev->keyup_jiffies = jiffies + nsecs_to_jiffies(dev->timeout) + + dev->keyup_jiffies = jiffies + usecs_to_jiffies(dev->timeout) + msecs_to_jiffies(repeat_period(protocol)); mod_timer(&dev->timer_keyup, dev->keyup_jiffies); } @@ -1292,6 +1292,10 @@ } mutex_lock(&dev->lock); + if (!dev->registered) { + mutex_unlock(&dev->lock); + return -ENODEV; + } old_protocols = *current_protocols; new_protocols = old_protocols; @@ -1430,6 +1434,10 @@ return -EINVAL; mutex_lock(&dev->lock); + if (!dev->registered) { + mutex_unlock(&dev->lock); + return -ENODEV; + } new_filter = *filter; if (fattr->mask) @@ -1544,6 +1552,10 @@ int i; mutex_lock(&dev->lock); + if (!dev->registered) { + mutex_unlock(&dev->lock); + return -ENODEV; + } allowed = dev->allowed_wakeup_protocols; @@ -1601,25 +1613,25 @@ kfree(dev); } -#define ADD_HOTPLUG_VAR(fmt, val...) \ - do { \ - int err = add_uevent_var(env, fmt, val); \ - if (err) \ - return err; \ - } while (0) - static int rc_dev_uevent(struct device *device, struct kobj_uevent_env *env) { struct rc_dev *dev = to_rc_dev(device); + int ret = 0; + + mutex_lock(&dev->lock); - if (dev->rc_map.name) - ADD_HOTPLUG_VAR("NAME=%s", dev->rc_map.name); - if (dev->driver_name) - ADD_HOTPLUG_VAR("DRV_NAME=%s", dev->driver_name); - if (dev->device_name) - ADD_HOTPLUG_VAR("DEV_NAME=%s", dev->device_name); + if (!dev->registered) + ret = -ENODEV; + if (ret == 0 && dev->rc_map.name) + ret = add_uevent_var(env, "NAME=%s", dev->rc_map.name); + if (ret == 0 && dev->driver_name) + ret = add_uevent_var(env, "DRV_NAME=%s", dev->driver_name); + if (ret == 0 && dev->device_name) + ret = add_uevent_var(env, "DEV_NAME=%s", dev->device_name); - return 0; + mutex_unlock(&dev->lock); + + return ret; } /* @@ -1916,6 +1928,8 @@ goto out_raw; } + dev->registered = true; + rc = device_add(&dev->dev); if (rc) goto out_rx_free; @@ -1925,8 +1939,6 @@ dev->device_name ?: "Unspecified device", path ?: "N/A"); kfree(path); - dev->registered = true; - /* * once the the input device is registered in rc_setup_rx_device, * userspace can open the input device and rc_open() will be called @@ -2011,14 +2023,14 @@ del_timer_sync(&dev->timer_keyup); del_timer_sync(&dev->timer_repeat); - rc_free_rx_device(dev); - mutex_lock(&dev->lock); if (dev->users && dev->close) dev->close(dev); dev->registered = false; mutex_unlock(&dev->lock); + rc_free_rx_device(dev); + /* * lirc device should be freed with dev->registered = false, so * that userspace polling will get notified. @@ -2057,6 +2069,9 @@ led_trigger_register_simple("rc-feedback", &led_feedback); rc_map_register(&empty_map); +#ifdef CONFIG_MEDIA_CEC_RC + rc_map_register(&cec_map); +#endif return 0; } @@ -2066,6 +2081,9 @@ lirc_dev_exit(); class_unregister(&rc_class); led_trigger_unregister_simple(led_feedback); +#ifdef CONFIG_MEDIA_CEC_RC + rc_map_unregister(&cec_map); +#endif rc_map_unregister(&empty_map); } --- linux-5.8.0.orig/drivers/media/rc/serial_ir.c +++ linux-5.8.0/drivers/media/rc/serial_ir.c @@ -385,7 +385,7 @@ } while (!(sinp(UART_IIR) & UART_IIR_NO_INT)); /* still pending ? */ mod_timer(&serial_ir.timeout_timer, - jiffies + nsecs_to_jiffies(serial_ir.rcdev->timeout)); + jiffies + usecs_to_jiffies(serial_ir.rcdev->timeout)); ir_raw_event_handle(serial_ir.rcdev); --- linux-5.8.0.orig/drivers/media/rc/sunxi-cir.c +++ linux-5.8.0/drivers/media/rc/sunxi-cir.c @@ -137,6 +137,8 @@ } else if (status & REG_RXSTA_RPE) { ir_raw_event_set_idle(ir->rc, true); ir_raw_event_handle(ir->rc); + } else { + ir_raw_event_handle(ir->rc); } spin_unlock(&ir->ir_lock); --- linux-5.8.0.orig/drivers/media/test-drivers/vicodec/vicodec-core.c +++ linux-5.8.0/drivers/media/test-drivers/vicodec/vicodec-core.c @@ -1994,6 +1994,7 @@ } ctrl = v4l2_ctrl_request_hdl_ctrl_find(hdl, vicodec_ctrl_stateless_state.id); + v4l2_ctrl_request_hdl_put(hdl); if (!ctrl) { v4l2_info(&ctx->dev->v4l2_dev, "Missing required codec control\n"); --- linux-5.8.0.orig/drivers/media/test-drivers/vivid/vivid-meta-out.c +++ linux-5.8.0/drivers/media/test-drivers/vivid/vivid-meta-out.c @@ -164,10 +164,11 @@ { struct vivid_meta_out_buf *meta = vb2_plane_vaddr(&buf->vb.vb2_buf, 0); - tpg_s_brightness(&dev->tpg, meta->brightness); - tpg_s_contrast(&dev->tpg, meta->contrast); - tpg_s_saturation(&dev->tpg, meta->saturation); - tpg_s_hue(&dev->tpg, meta->hue); + v4l2_ctrl_s_ctrl(dev->brightness, meta->brightness); + v4l2_ctrl_s_ctrl(dev->contrast, meta->contrast); + v4l2_ctrl_s_ctrl(dev->saturation, meta->saturation); + v4l2_ctrl_s_ctrl(dev->hue, meta->hue); + dprintk(dev, 2, " %s brightness %u contrast %u saturation %u hue %d\n", __func__, meta->brightness, meta->contrast, meta->saturation, meta->hue); --- linux-5.8.0.orig/drivers/media/tuners/qm1d1c0042.c +++ linux-5.8.0/drivers/media/tuners/qm1d1c0042.c @@ -343,8 +343,10 @@ if (val == reg_initval[reg_index][0x00]) break; } - if (reg_index >= QM1D1C0042_NUM_REG_ROWS) + if (reg_index >= QM1D1C0042_NUM_REG_ROWS) { + ret = -EINVAL; goto failed; + } memcpy(state->regs, reg_initval[reg_index], QM1D1C0042_NUM_REGS); usleep_range(2000, 3000); --- linux-5.8.0.orig/drivers/media/tuners/tuner-simple.c +++ linux-5.8.0/drivers/media/tuners/tuner-simple.c @@ -500,7 +500,7 @@ case TUNER_TENA_9533_DI: case TUNER_YMEC_TVF_5533MF: tuner_dbg("This tuner doesn't have FM. Most cards have a TEA5767 for FM\n"); - return 0; + return -EINVAL; case TUNER_PHILIPS_FM1216ME_MK3: case TUNER_PHILIPS_FM1236_MK3: case TUNER_PHILIPS_FMD1216ME_MK3: @@ -702,7 +702,8 @@ TUNER_RATIO_SELECT_50; /* 50 kHz step */ /* Bandswitch byte */ - simple_radio_bandswitch(fe, &buffer[0]); + if (simple_radio_bandswitch(fe, &buffer[0])) + return 0; /* Convert from 1/16 kHz V4L steps to 1/20 MHz (=50 kHz) PLL steps freq * (1 Mhz / 16000 V4L steps) * (20 PLL steps / 1 MHz) = --- linux-5.8.0.orig/drivers/media/usb/dvb-usb-v2/lmedm04.c +++ linux-5.8.0/drivers/media/usb/dvb-usb-v2/lmedm04.c @@ -391,7 +391,7 @@ ep = usb_pipe_endpoint(d->udev, lme_int->lme_urb->pipe); if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK) - lme_int->lme_urb->pipe = usb_rcvbulkpipe(d->udev, 0xa), + lme_int->lme_urb->pipe = usb_rcvbulkpipe(d->udev, 0xa); usb_submit_urb(lme_int->lme_urb, GFP_ATOMIC); info("INT Interrupt Service Started"); --- linux-5.8.0.orig/drivers/media/usb/dvb-usb/Kconfig +++ linux-5.8.0/drivers/media/usb/dvb-usb/Kconfig @@ -151,6 +151,7 @@ config DVB_USB_CXUSB_ANALOG bool "Analog support for the Conexant USB2.0 hybrid reference design" depends on DVB_USB_CXUSB && VIDEO_V4L2 + depends on VIDEO_V4L2=y || VIDEO_V4L2=DVB_USB_CXUSB select VIDEO_CX25840 select VIDEOBUF2_VMALLOC help --- linux-5.8.0.orig/drivers/media/usb/dvb-usb/gp8psk.c +++ linux-5.8.0/drivers/media/usb/dvb-usb/gp8psk.c @@ -182,7 +182,7 @@ static int gp8psk_power_ctrl(struct dvb_usb_device *d, int onoff) { - u8 status, buf; + u8 status = 0, buf; int gp_product_id = le16_to_cpu(d->udev->descriptor.idProduct); if (onoff) { --- linux-5.8.0.orig/drivers/media/usb/em28xx/em28xx-core.c +++ linux-5.8.0/drivers/media/usb/em28xx/em28xx-core.c @@ -956,14 +956,10 @@ usb_bufs->buf[i] = kzalloc(sb_size, GFP_KERNEL); if (!usb_bufs->buf[i]) { - em28xx_uninit_usb_xfer(dev, mode); - for (i--; i >= 0; i--) kfree(usb_bufs->buf[i]); - kfree(usb_bufs->buf); - usb_bufs->buf = NULL; - + em28xx_uninit_usb_xfer(dev, mode); return -ENOMEM; } --- linux-5.8.0.orig/drivers/media/usb/go7007/go7007-usb.c +++ linux-5.8.0/drivers/media/usb/go7007/go7007-usb.c @@ -1132,6 +1132,10 @@ go->hpi_ops = &go7007_usb_onboard_hpi_ops; go->hpi_context = usb; + ep = usb->usbdev->ep_in[4]; + if (!ep) + return -ENODEV; + /* Allocate the URB and buffer for receiving incoming interrupts */ usb->intr_urb = usb_alloc_urb(0, GFP_KERNEL); if (usb->intr_urb == NULL) @@ -1141,7 +1145,6 @@ if (usb->intr_urb->transfer_buffer == NULL) goto allocfail; - ep = usb->usbdev->ep_in[4]; if (usb_endpoint_type(&ep->desc) == USB_ENDPOINT_XFER_BULK) usb_fill_bulk_urb(usb->intr_urb, usb->usbdev, usb_rcvbulkpipe(usb->usbdev, 4), @@ -1263,9 +1266,13 @@ /* Allocate the URBs and buffers for receiving the video stream */ if (board->flags & GO7007_USB_EZUSB) { + if (!usb->usbdev->ep_in[6]) + goto allocfail; v_urb_len = 1024; video_pipe = usb_rcvbulkpipe(usb->usbdev, 6); } else { + if (!usb->usbdev->ep_in[1]) + goto allocfail; v_urb_len = 512; video_pipe = usb_rcvbulkpipe(usb->usbdev, 1); } @@ -1285,6 +1292,8 @@ /* Allocate the URBs and buffers for receiving the audio stream */ if ((board->flags & GO7007_USB_EZUSB) && (board->main_info.flags & GO7007_BOARD_HAS_AUDIO)) { + if (!usb->usbdev->ep_in[8]) + goto allocfail; for (i = 0; i < 8; ++i) { usb->audio_urbs[i] = usb_alloc_urb(0, GFP_KERNEL); if (usb->audio_urbs[i] == NULL) --- linux-5.8.0.orig/drivers/media/usb/gspca/gspca.c +++ linux-5.8.0/drivers/media/usb/gspca/gspca.c @@ -1575,6 +1575,7 @@ input_unregister_device(gspca_dev->input_dev); #endif v4l2_ctrl_handler_free(gspca_dev->vdev.ctrl_handler); + v4l2_device_unregister(&gspca_dev->v4l2_dev); kfree(gspca_dev->usb_buf); kfree(gspca_dev); return ret; --- linux-5.8.0.orig/drivers/media/usb/msi2500/msi2500.c +++ linux-5.8.0/drivers/media/usb/msi2500/msi2500.c @@ -1230,7 +1230,7 @@ } dev->master = master; - master->bus_num = 0; + master->bus_num = -1; master->num_chipselect = 1; master->transfer_one_message = msi2500_transfer_one_message; spi_master_set_devdata(master, dev); --- linux-5.8.0.orig/drivers/media/usb/pwc/pwc-if.c +++ linux-5.8.0/drivers/media/usb/pwc/pwc-if.c @@ -155,16 +155,17 @@ /***************************************************************************/ /* Private functions */ -static void *pwc_alloc_urb_buffer(struct device *dev, +static void *pwc_alloc_urb_buffer(struct usb_device *dev, size_t size, dma_addr_t *dma_handle) { + struct device *dmadev = dev->bus->sysdev; void *buffer = kmalloc(size, GFP_KERNEL); if (!buffer) return NULL; - *dma_handle = dma_map_single(dev, buffer, size, DMA_FROM_DEVICE); - if (dma_mapping_error(dev, *dma_handle)) { + *dma_handle = dma_map_single(dmadev, buffer, size, DMA_FROM_DEVICE); + if (dma_mapping_error(dmadev, *dma_handle)) { kfree(buffer); return NULL; } @@ -172,12 +173,14 @@ return buffer; } -static void pwc_free_urb_buffer(struct device *dev, +static void pwc_free_urb_buffer(struct usb_device *dev, size_t size, void *buffer, dma_addr_t dma_handle) { - dma_unmap_single(dev, dma_handle, size, DMA_FROM_DEVICE); + struct device *dmadev = dev->bus->sysdev; + + dma_unmap_single(dmadev, dma_handle, size, DMA_FROM_DEVICE); kfree(buffer); } @@ -282,6 +285,7 @@ static void pwc_isoc_handler(struct urb *urb) { struct pwc_device *pdev = (struct pwc_device *)urb->context; + struct device *dmadev = urb->dev->bus->sysdev; int i, fst, flen; unsigned char *iso_buf = NULL; @@ -328,7 +332,7 @@ /* Reset ISOC error counter. We did get here, after all. */ pdev->visoc_errors = 0; - dma_sync_single_for_cpu(&urb->dev->dev, + dma_sync_single_for_cpu(dmadev, urb->transfer_dma, urb->transfer_buffer_length, DMA_FROM_DEVICE); @@ -379,7 +383,7 @@ pdev->vlast_packet_size = flen; } - dma_sync_single_for_device(&urb->dev->dev, + dma_sync_single_for_device(dmadev, urb->transfer_dma, urb->transfer_buffer_length, DMA_FROM_DEVICE); @@ -461,7 +465,7 @@ urb->pipe = usb_rcvisocpipe(udev, pdev->vendpoint); urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP; urb->transfer_buffer_length = ISO_BUFFER_SIZE; - urb->transfer_buffer = pwc_alloc_urb_buffer(&udev->dev, + urb->transfer_buffer = pwc_alloc_urb_buffer(udev, urb->transfer_buffer_length, &urb->transfer_dma); if (urb->transfer_buffer == NULL) { @@ -524,7 +528,7 @@ if (urb) { PWC_DEBUG_MEMORY("Freeing URB\n"); if (urb->transfer_buffer) - pwc_free_urb_buffer(&urb->dev->dev, + pwc_free_urb_buffer(urb->dev, urb->transfer_buffer_length, urb->transfer_buffer, urb->transfer_dma); --- linux-5.8.0.orig/drivers/media/usb/tm6000/tm6000-dvb.c +++ linux-5.8.0/drivers/media/usb/tm6000/tm6000-dvb.c @@ -141,6 +141,10 @@ if (ret < 0) { printk(KERN_ERR "tm6000: error %i in %s during pipe reset\n", ret, __func__); + + kfree(dvb->bulk_urb->transfer_buffer); + usb_free_urb(dvb->bulk_urb); + dvb->bulk_urb = NULL; return ret; } else printk(KERN_ERR "tm6000: pipe reset\n"); --- linux-5.8.0.orig/drivers/media/usb/tm6000/tm6000-video.c +++ linux-5.8.0/drivers/media/usb/tm6000/tm6000-video.c @@ -461,11 +461,12 @@ if (dev->urb_buffer) return 0; - dev->urb_buffer = kmalloc_array(num_bufs, sizeof(void *), GFP_KERNEL); + dev->urb_buffer = kmalloc_array(num_bufs, sizeof(*dev->urb_buffer), + GFP_KERNEL); if (!dev->urb_buffer) return -ENOMEM; - dev->urb_dma = kmalloc_array(num_bufs, sizeof(dma_addr_t *), + dev->urb_dma = kmalloc_array(num_bufs, sizeof(*dev->urb_dma), GFP_KERNEL); if (!dev->urb_dma) return -ENOMEM; --- linux-5.8.0.orig/drivers/media/usb/usbtv/usbtv-audio.c +++ linux-5.8.0/drivers/media/usb/usbtv/usbtv-audio.c @@ -371,7 +371,7 @@ cancel_work_sync(&usbtv->snd_trigger); if (usbtv->snd && usbtv->udev) { - snd_card_free(usbtv->snd); + snd_card_free_when_closed(usbtv->snd); usbtv->snd = NULL; } } --- linux-5.8.0.orig/drivers/media/usb/usbtv/usbtv-core.c +++ linux-5.8.0/drivers/media/usb/usbtv/usbtv-core.c @@ -113,7 +113,8 @@ usbtv_audio_fail: /* we must not free at this point */ - usb_get_dev(usbtv->udev); + v4l2_device_get(&usbtv->v4l2_dev); + /* this will undo the v4l2_device_get() */ usbtv_video_free(usbtv); usbtv_video_fail: --- linux-5.8.0.orig/drivers/media/usb/uvc/uvc_ctrl.c +++ linux-5.8.0/drivers/media/usb/uvc/uvc_ctrl.c @@ -773,12 +773,16 @@ offset &= 7; mask = ((1LL << bits) - 1) << offset; - for (; bits > 0; data++) { + while (1) { u8 byte = *data & mask; value |= offset > 0 ? (byte >> offset) : (byte << (-offset)); bits -= 8 - (offset > 0 ? offset : 0); + if (bits <= 0) + break; + offset -= 8; mask = (1 << bits) - 1; + data++; } /* Sign-extend the value if needed. */ @@ -1844,30 +1848,35 @@ { struct uvc_entity *entity; struct uvc_control *ctrl; - unsigned int i, found = 0; + unsigned int i; + bool found; u32 reqflags; u16 size; u8 *data = NULL; int ret; /* Find the extension unit. */ + found = false; list_for_each_entry(entity, &chain->entities, chain) { if (UVC_ENTITY_TYPE(entity) == UVC_VC_EXTENSION_UNIT && - entity->id == xqry->unit) + entity->id == xqry->unit) { + found = true; break; + } } - if (entity->id != xqry->unit) { + if (!found) { uvc_trace(UVC_TRACE_CONTROL, "Extension unit %u not found.\n", xqry->unit); return -ENOENT; } /* Find the control and perform delayed initialization if needed. */ + found = false; for (i = 0; i < entity->ncontrols; ++i) { ctrl = &entity->controls[i]; if (ctrl->index == xqry->selector - 1) { - found = 1; + found = true; break; } } @@ -2024,13 +2033,6 @@ goto done; } - /* - * Retrieve control flags from the device. Ignore errors and work with - * default flag values from the uvc_ctrl array when the device doesn't - * properly implement GET_INFO on standard controls. - */ - uvc_ctrl_get_flags(dev, ctrl, &ctrl->info); - ctrl->initialized = 1; uvc_trace(UVC_TRACE_CONTROL, "Added control %pUl/%u to device %s " @@ -2253,6 +2255,13 @@ if (uvc_entity_match_guid(ctrl->entity, info->entity) && ctrl->index == info->index) { uvc_ctrl_add_info(dev, ctrl, info); + /* + * Retrieve control flags from the device. Ignore errors + * and work with default flag values from the uvc_ctrl + * array when the device doesn't properly implement + * GET_INFO on standard controls. + */ + uvc_ctrl_get_flags(dev, ctrl, &ctrl->info); break; } } --- linux-5.8.0.orig/drivers/media/usb/uvc/uvc_driver.c +++ linux-5.8.0/drivers/media/usb/uvc/uvc_driver.c @@ -214,6 +214,11 @@ .guid = UVC_GUID_FORMAT_CNF4, .fcc = V4L2_PIX_FMT_CNF4, }, + { + .name = "HEVC", + .guid = UVC_GUID_FORMAT_HEVC, + .fcc = V4L2_PIX_FMT_HEVC, + }, }; /* ------------------------------------------------------------------------ @@ -967,7 +972,10 @@ unsigned int i; extra_size = roundup(extra_size, sizeof(*entity->pads)); - num_inputs = (type & UVC_TERM_OUTPUT) ? num_pads : num_pads - 1; + if (num_pads) + num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1; + else + num_inputs = 0; size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads + num_inputs; entity = kzalloc(size, GFP_KERNEL); @@ -983,7 +991,7 @@ for (i = 0; i < num_inputs; ++i) entity->pads[i].flags = MEDIA_PAD_FL_SINK; - if (!UVC_ENTITY_IS_OTERM(entity)) + if (!UVC_ENTITY_IS_OTERM(entity) && num_pads) entity->pads[num_pads-1].flags = MEDIA_PAD_FL_SOURCE; entity->bNrInPins = num_inputs; --- linux-5.8.0.orig/drivers/media/usb/uvc/uvc_entity.c +++ linux-5.8.0/drivers/media/usb/uvc/uvc_entity.c @@ -73,10 +73,45 @@ int ret; if (UVC_ENTITY_TYPE(entity) != UVC_TT_STREAMING) { + u32 function; + v4l2_subdev_init(&entity->subdev, &uvc_subdev_ops); strscpy(entity->subdev.name, entity->name, sizeof(entity->subdev.name)); + switch (UVC_ENTITY_TYPE(entity)) { + case UVC_VC_SELECTOR_UNIT: + function = MEDIA_ENT_F_VID_MUX; + break; + case UVC_VC_PROCESSING_UNIT: + case UVC_VC_EXTENSION_UNIT: + /* For lack of a better option. */ + function = MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER; + break; + case UVC_COMPOSITE_CONNECTOR: + case UVC_COMPONENT_CONNECTOR: + function = MEDIA_ENT_F_CONN_COMPOSITE; + break; + case UVC_SVIDEO_CONNECTOR: + function = MEDIA_ENT_F_CONN_SVIDEO; + break; + case UVC_ITT_CAMERA: + function = MEDIA_ENT_F_CAM_SENSOR; + break; + case UVC_TT_VENDOR_SPECIFIC: + case UVC_ITT_VENDOR_SPECIFIC: + case UVC_ITT_MEDIA_TRANSPORT_INPUT: + case UVC_OTT_VENDOR_SPECIFIC: + case UVC_OTT_DISPLAY: + case UVC_OTT_MEDIA_TRANSPORT_OUTPUT: + case UVC_EXTERNAL_VENDOR_SPECIFIC: + default: + function = MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN; + break; + } + + entity->subdev.entity.function = function; + ret = media_entity_pads_init(&entity->subdev.entity, entity->num_pads, entity->pads); --- linux-5.8.0.orig/drivers/media/usb/uvc/uvc_v4l2.c +++ linux-5.8.0/drivers/media/usb/uvc/uvc_v4l2.c @@ -247,11 +247,41 @@ if (ret < 0) goto done; + /* After the probe, update fmt with the values returned from + * negotiation with the device. Some devices return invalid bFormatIndex + * and bFrameIndex values, in which case we can only assume they have + * accepted the requested format as-is. + */ + for (i = 0; i < stream->nformats; ++i) { + if (probe->bFormatIndex == stream->format[i].index) { + format = &stream->format[i]; + break; + } + } + + if (i == stream->nformats) + uvc_trace(UVC_TRACE_FORMAT, + "Unknown bFormatIndex %u, using default\n", + probe->bFormatIndex); + + for (i = 0; i < format->nframes; ++i) { + if (probe->bFrameIndex == format->frame[i].bFrameIndex) { + frame = &format->frame[i]; + break; + } + } + + if (i == format->nframes) + uvc_trace(UVC_TRACE_FORMAT, + "Unknown bFrameIndex %u, using default\n", + probe->bFrameIndex); + fmt->fmt.pix.width = frame->wWidth; fmt->fmt.pix.height = frame->wHeight; fmt->fmt.pix.field = V4L2_FIELD_NONE; fmt->fmt.pix.bytesperline = uvc_v4l2_get_bytesperline(format, frame); fmt->fmt.pix.sizeimage = probe->dwMaxVideoFrameSize; + fmt->fmt.pix.pixelformat = format->fcc; fmt->fmt.pix.colorspace = format->colorspace; if (uvc_format != NULL) --- linux-5.8.0.orig/drivers/media/usb/uvc/uvcvideo.h +++ linux-5.8.0/drivers/media/usb/uvc/uvcvideo.h @@ -165,6 +165,10 @@ {0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, \ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} +#define UVC_GUID_FORMAT_HEVC \ + { 'H', 'E', 'V', 'C', 0x00, 0x00, 0x10, 0x00, \ + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} + /* ------------------------------------------------------------------------ * Driver specific constants. --- linux-5.8.0.orig/drivers/media/v4l2-core/v4l2-ctrls.c +++ linux-5.8.0/drivers/media/v4l2-core/v4l2-ctrls.c @@ -1929,7 +1929,8 @@ case V4L2_CTRL_TYPE_INTEGER_MENU: if (ptr.p_s32[idx] < ctrl->minimum || ptr.p_s32[idx] > ctrl->maximum) return -ERANGE; - if (ctrl->menu_skip_mask & (1ULL << ptr.p_s32[idx])) + if (ptr.p_s32[idx] < BITS_PER_LONG_LONG && + (ctrl->menu_skip_mask & BIT_ULL(ptr.p_s32[idx]))) return -EINVAL; if (ctrl->type == V4L2_CTRL_TYPE_MENU && ctrl->qmenu[ptr.p_s32[idx]][0] == '\0') --- linux-5.8.0.orig/drivers/media/v4l2-core/v4l2-fwnode.c +++ linux-5.8.0/drivers/media/v4l2-core/v4l2-fwnode.c @@ -93,7 +93,7 @@ const struct v4l2_fwnode_bus_conv *conv = get_v4l2_fwnode_bus_conv_by_fwnode_bus(type); - return conv ? conv->mbus_type : V4L2_MBUS_UNKNOWN; + return conv ? conv->mbus_type : V4L2_MBUS_INVALID; } static const char * @@ -436,6 +436,10 @@ v4l2_fwnode_mbus_type_to_string(vep->bus_type), vep->bus_type); mbus_type = v4l2_fwnode_bus_type_to_mbus(bus_type); + if (mbus_type == V4L2_MBUS_INVALID) { + pr_debug("unsupported bus type %u\n", bus_type); + return -EINVAL; + } if (vep->bus_type != V4L2_MBUS_UNKNOWN) { if (mbus_type != V4L2_MBUS_UNKNOWN && --- linux-5.8.0.orig/drivers/media/v4l2-core/v4l2-ioctl.c +++ linux-5.8.0/drivers/media/v4l2-core/v4l2-ioctl.c @@ -3186,14 +3186,16 @@ #ifdef CONFIG_COMPAT_32BIT_TIME case VIDIOC_DQEVENT_TIME32: { struct v4l2_event *ev = parg; - struct v4l2_event_time32 ev32 = { - .type = ev->type, - .pending = ev->pending, - .sequence = ev->sequence, - .timestamp.tv_sec = ev->timestamp.tv_sec, - .timestamp.tv_nsec = ev->timestamp.tv_nsec, - .id = ev->id, - }; + struct v4l2_event_time32 ev32; + + memset(&ev32, 0, sizeof(ev32)); + + ev32.type = ev->type; + ev32.pending = ev->pending; + ev32.sequence = ev->sequence; + ev32.timestamp.tv_sec = ev->timestamp.tv_sec; + ev32.timestamp.tv_nsec = ev->timestamp.tv_nsec; + ev32.id = ev->id; memcpy(&ev32.u, &ev->u, sizeof(ev->u)); memcpy(&ev32.reserved, &ev->reserved, sizeof(ev->reserved)); @@ -3207,21 +3209,23 @@ case VIDIOC_DQBUF_TIME32: case VIDIOC_PREPARE_BUF_TIME32: { struct v4l2_buffer *vb = parg; - struct v4l2_buffer_time32 vb32 = { - .index = vb->index, - .type = vb->type, - .bytesused = vb->bytesused, - .flags = vb->flags, - .field = vb->field, - .timestamp.tv_sec = vb->timestamp.tv_sec, - .timestamp.tv_usec = vb->timestamp.tv_usec, - .timecode = vb->timecode, - .sequence = vb->sequence, - .memory = vb->memory, - .m.userptr = vb->m.userptr, - .length = vb->length, - .request_fd = vb->request_fd, - }; + struct v4l2_buffer_time32 vb32; + + memset(&vb32, 0, sizeof(vb32)); + + vb32.index = vb->index; + vb32.type = vb->type; + vb32.bytesused = vb->bytesused; + vb32.flags = vb->flags; + vb32.field = vb->field; + vb32.timestamp.tv_sec = vb->timestamp.tv_sec; + vb32.timestamp.tv_usec = vb->timestamp.tv_usec; + vb32.timecode = vb->timecode; + vb32.sequence = vb->sequence; + vb32.memory = vb->memory; + vb32.m.userptr = vb->m.userptr; + vb32.length = vb->length; + vb32.request_fd = vb->request_fd; if (copy_to_user(arg, &vb32, sizeof(vb32))) return -EFAULT; @@ -3243,7 +3247,7 @@ v4l2_kioctl func) { char sbuf[128]; - void *mbuf = NULL; + void *mbuf = NULL, *array_buf = NULL; void *parg = (void *)arg; long err = -EINVAL; bool has_array_args; @@ -3278,20 +3282,14 @@ has_array_args = err; if (has_array_args) { - /* - * When adding new types of array args, make sure that the - * parent argument to ioctl (which contains the pointer to the - * array) fits into sbuf (so that mbuf will still remain - * unused up to here). - */ - mbuf = kvmalloc(array_size, GFP_KERNEL); + array_buf = kvmalloc(array_size, GFP_KERNEL); err = -ENOMEM; - if (NULL == mbuf) + if (array_buf == NULL) goto out_array_args; err = -EFAULT; - if (copy_from_user(mbuf, user_ptr, array_size)) + if (copy_from_user(array_buf, user_ptr, array_size)) goto out_array_args; - *kernel_ptr = mbuf; + *kernel_ptr = array_buf; } /* Handles IOCTL */ @@ -3310,7 +3308,7 @@ if (has_array_args) { *kernel_ptr = (void __force *)user_ptr; - if (copy_to_user(user_ptr, mbuf, array_size)) + if (copy_to_user(user_ptr, array_buf, array_size)) err = -EFAULT; goto out_array_args; } @@ -3325,6 +3323,7 @@ if (video_put_user((void __user *)arg, parg, orig_cmd)) err = -EFAULT; out: + kvfree(array_buf); kvfree(mbuf); return err; } --- linux-5.8.0.orig/drivers/memory/brcmstb_dpfe.c +++ linux-5.8.0/drivers/memory/brcmstb_dpfe.c @@ -648,8 +648,10 @@ return (ret == -ENOENT) ? -EPROBE_DEFER : ret; ret = __verify_firmware(&init, fw); - if (ret) - return -EFAULT; + if (ret) { + ret = -EFAULT; + goto release_fw; + } __disable_dcpu(priv); @@ -668,18 +670,20 @@ ret = __write_firmware(priv->dmem, dmem, dmem_size, is_big_endian); if (ret) - return ret; + goto release_fw; ret = __write_firmware(priv->imem, imem, imem_size, is_big_endian); if (ret) - return ret; + goto release_fw; ret = __verify_fw_checksum(&init, priv, header, init.chksum); if (ret) - return ret; + goto release_fw; __enable_dcpu(priv); - return 0; +release_fw: + release_firmware(fw); + return ret; } static ssize_t generic_show(unsigned int command, u32 response[], --- linux-5.8.0.orig/drivers/memory/emif.c +++ linux-5.8.0/drivers/memory/emif.c @@ -163,35 +163,12 @@ static int __init_or_module emif_debugfs_init(struct emif_data *emif) { - struct dentry *dentry; - int ret; - - dentry = debugfs_create_dir(dev_name(emif->dev), NULL); - if (!dentry) { - ret = -ENOMEM; - goto err0; - } - emif->debugfs_root = dentry; - - dentry = debugfs_create_file("regcache_dump", S_IRUGO, - emif->debugfs_root, emif, &emif_regdump_fops); - if (!dentry) { - ret = -ENOMEM; - goto err1; - } - - dentry = debugfs_create_file("mr4", S_IRUGO, - emif->debugfs_root, emif, &emif_mr4_fops); - if (!dentry) { - ret = -ENOMEM; - goto err1; - } - + emif->debugfs_root = debugfs_create_dir(dev_name(emif->dev), NULL); + debugfs_create_file("regcache_dump", S_IRUGO, emif->debugfs_root, emif, + &emif_regdump_fops); + debugfs_create_file("mr4", S_IRUGO, emif->debugfs_root, emif, + &emif_mr4_fops); return 0; -err1: - debugfs_remove_recursive(emif->debugfs_root); -err0: - return ret; } static void __exit emif_debugfs_exit(struct emif_data *emif) --- linux-5.8.0.orig/drivers/memory/fsl-corenet-cf.c +++ linux-5.8.0/drivers/memory/fsl-corenet-cf.c @@ -211,10 +211,8 @@ dev_set_drvdata(&pdev->dev, ccf); irq = platform_get_irq(pdev, 0); - if (!irq) { - dev_err(&pdev->dev, "%s: no irq\n", __func__); - return -ENXIO; - } + if (irq < 0) + return irq; ret = devm_request_irq(&pdev->dev, irq, ccf_irq, 0, pdev->name, ccf); if (ret) { --- linux-5.8.0.orig/drivers/memory/jz4780-nemc.c +++ linux-5.8.0/drivers/memory/jz4780-nemc.c @@ -288,6 +288,8 @@ nemc->dev = dev; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return -EINVAL; nemc->base = devm_ioremap_resource(dev, res); if (IS_ERR(nemc->base)) { dev_err(dev, "failed to get I/O memory\n"); --- linux-5.8.0.orig/drivers/memory/mtk-smi.c +++ linux-5.8.0/drivers/memory/mtk-smi.c @@ -127,7 +127,7 @@ int mtk_smi_larb_get(struct device *larbdev) { - int ret = pm_runtime_get_sync(larbdev); + int ret = pm_runtime_resume_and_get(larbdev); return (ret < 0) ? ret : 0; } @@ -336,7 +336,7 @@ int ret; /* Power on smi-common. */ - ret = pm_runtime_get_sync(larb->smi_common_dev); + ret = pm_runtime_resume_and_get(larb->smi_common_dev); if (ret < 0) { dev_err(dev, "Failed to pm get for smi-common(%d).\n", ret); return ret; --- linux-5.8.0.orig/drivers/memory/omap-gpmc.c +++ linux-5.8.0/drivers/memory/omap-gpmc.c @@ -949,7 +949,7 @@ int ret; u32 old_base, size; - if (cs > gpmc_cs_num) { + if (cs >= gpmc_cs_num) { pr_err("%s: requested chip-select is disabled\n", __func__); return -ENODEV; } @@ -984,7 +984,7 @@ struct resource *res = &gpmc->mem; int r = -1; - if (cs > gpmc_cs_num) { + if (cs >= gpmc_cs_num) { pr_err("%s: requested chip-select is disabled\n", __func__); return -ENODEV; } @@ -2274,6 +2274,10 @@ } } #else +void gpmc_read_settings_dt(struct device_node *np, struct gpmc_settings *p) +{ + memset(p, 0, sizeof(*p)); +} static int gpmc_probe_dt(struct platform_device *pdev) { return 0; --- linux-5.8.0.orig/drivers/memory/samsung/exynos5422-dmc.c +++ linux-5.8.0/drivers/memory/samsung/exynos5422-dmc.c @@ -270,12 +270,14 @@ * This function switches between these banks according to the * currently used clock source. */ -static void exynos5_switch_timing_regs(struct exynos5_dmc *dmc, bool set) +static int exynos5_switch_timing_regs(struct exynos5_dmc *dmc, bool set) { unsigned int reg; int ret; ret = regmap_read(dmc->clk_regmap, CDREX_LPDDR3PHY_CON3, ®); + if (ret) + return ret; if (set) reg |= EXYNOS5_TIMING_SET_SWI; @@ -283,6 +285,8 @@ reg &= ~EXYNOS5_TIMING_SET_SWI; regmap_write(dmc->clk_regmap, CDREX_LPDDR3PHY_CON3, reg); + + return 0; } /** @@ -516,7 +520,7 @@ /* * Delays are long enough, so use them for the new coming clock. */ - exynos5_switch_timing_regs(dmc, USE_MX_MSPLL_TIMINGS); + ret = exynos5_switch_timing_regs(dmc, USE_MX_MSPLL_TIMINGS); return ret; } @@ -577,7 +581,9 @@ clk_set_rate(dmc->fout_bpll, target_rate); - exynos5_switch_timing_regs(dmc, USE_BPLL_TIMINGS); + ret = exynos5_switch_timing_regs(dmc, USE_BPLL_TIMINGS); + if (ret) + goto disable_clocks; ret = clk_set_parent(dmc->mout_mclk_cdrex, dmc->mout_bpll); if (ret) --- linux-5.8.0.orig/drivers/memory/tegra/tegra124.c +++ linux-5.8.0/drivers/memory/tegra/tegra124.c @@ -957,7 +957,6 @@ static const unsigned int tegra124_group_drm[] = { TEGRA_SWGROUP_DC, TEGRA_SWGROUP_DCB, - TEGRA_SWGROUP_GPU, TEGRA_SWGROUP_VIC, }; --- linux-5.8.0.orig/drivers/memory/tegra/tegra186-emc.c +++ linux-5.8.0/drivers/memory/tegra/tegra186-emc.c @@ -185,7 +185,7 @@ if (IS_ERR(emc->clk)) { err = PTR_ERR(emc->clk); dev_err(&pdev->dev, "failed to get EMC clock: %d\n", err); - return err; + goto put_bpmp; } platform_set_drvdata(pdev, emc); @@ -201,7 +201,7 @@ err = tegra_bpmp_transfer(emc->bpmp, &msg); if (err < 0) { dev_err(&pdev->dev, "failed to EMC DVFS pairs: %d\n", err); - return err; + goto put_bpmp; } emc->debugfs.min_rate = ULONG_MAX; @@ -211,8 +211,10 @@ emc->dvfs = devm_kmalloc_array(&pdev->dev, emc->num_dvfs, sizeof(*emc->dvfs), GFP_KERNEL); - if (!emc->dvfs) - return -ENOMEM; + if (!emc->dvfs) { + err = -ENOMEM; + goto put_bpmp; + } dev_dbg(&pdev->dev, "%u DVFS pairs:\n", emc->num_dvfs); @@ -237,7 +239,7 @@ "failed to set rate range [%lu-%lu] for %pC\n", emc->debugfs.min_rate, emc->debugfs.max_rate, emc->clk); - return err; + goto put_bpmp; } emc->debugfs.root = debugfs_create_dir("emc", NULL); @@ -254,6 +256,10 @@ emc, &tegra186_emc_debug_max_rate_fops); return 0; + +put_bpmp: + tegra_bpmp_put(emc->bpmp); + return err; } static int tegra186_emc_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/memory/ti-aemif.c +++ linux-5.8.0/drivers/memory/ti-aemif.c @@ -378,8 +378,10 @@ */ for_each_available_child_of_node(np, child_np) { ret = of_aemif_parse_abus_config(pdev, child_np); - if (ret < 0) + if (ret < 0) { + of_node_put(child_np); goto error; + } } } else if (pdata && pdata->num_abus_data > 0) { for (i = 0; i < pdata->num_abus_data; i++, aemif->num_cs++) { @@ -405,8 +407,10 @@ for_each_available_child_of_node(np, child_np) { ret = of_platform_populate(child_np, NULL, dev_lookup, dev); - if (ret < 0) + if (ret < 0) { + of_node_put(child_np); goto error; + } } } else if (pdata) { for (i = 0; i < pdata->num_sub_devices; i++) { --- linux-5.8.0.orig/drivers/memstick/core/memstick.c +++ linux-5.8.0/drivers/memstick/core/memstick.c @@ -441,6 +441,9 @@ } else if (host->card->stop) host->card->stop(host->card); + if (host->removing) + goto out_power_off; + card = memstick_alloc_card(host); if (!card) { @@ -465,7 +468,6 @@ host->card = card; if (device_register(&card->dev)) { put_device(&card->dev); - kfree(host->card); host->card = NULL; } } else @@ -545,6 +547,7 @@ */ void memstick_remove_host(struct memstick_host *host) { + host->removing = 1; flush_workqueue(workqueue); mutex_lock(&host->lock); if (host->card) --- linux-5.8.0.orig/drivers/memstick/host/r592.c +++ linux-5.8.0/drivers/memstick/host/r592.c @@ -759,8 +759,10 @@ goto error3; dev->mmio = pci_ioremap_bar(pdev, 0); - if (!dev->mmio) + if (!dev->mmio) { + error = -ENOMEM; goto error4; + } dev->irq = pdev->irq; spin_lock_init(&dev->irq_lock); @@ -786,12 +788,14 @@ &dev->dummy_dma_page_physical_address, GFP_KERNEL); r592_stop_dma(dev , 0); - if (request_irq(dev->irq, &r592_irq, IRQF_SHARED, - DRV_NAME, dev)) + error = request_irq(dev->irq, &r592_irq, IRQF_SHARED, + DRV_NAME, dev); + if (error) goto error6; r592_update_card_detect(dev); - if (memstick_add_host(host)) + error = memstick_add_host(host); + if (error) goto error7; message("driver successfully loaded"); --- linux-5.8.0.orig/drivers/message/fusion/mptscsih.c +++ linux-5.8.0/drivers/message/fusion/mptscsih.c @@ -1176,8 +1176,10 @@ MPT_SCSI_HOST *hd; int sz1; - if((hd = shost_priv(host)) == NULL) - return; + if (host == NULL) + hd = NULL; + else + hd = shost_priv(host); mptscsih_shutdown(pdev); @@ -1193,14 +1195,15 @@ "Free'd ScsiLookup (%d) memory\n", ioc->name, sz1)); - kfree(hd->info_kbuf); + if (hd) + kfree(hd->info_kbuf); /* NULL the Scsi_Host pointer */ ioc->sh = NULL; - scsi_host_put(host); - + if (host) + scsi_host_put(host); mpt_detach(pdev); } --- linux-5.8.0.orig/drivers/mfd/arizona-core.c +++ linux-5.8.0/drivers/mfd/arizona-core.c @@ -1426,6 +1426,15 @@ arizona_irq_exit(arizona); err_pm: pm_runtime_disable(arizona->dev); + + switch (arizona->pdata.clk32k_src) { + case ARIZONA_32KZ_MCLK1: + case ARIZONA_32KZ_MCLK2: + arizona_clk32k_disable(arizona); + break; + default: + break; + } err_reset: arizona_enable_reset(arizona); regulator_disable(arizona->dcvdd); @@ -1448,6 +1457,15 @@ regulator_disable(arizona->dcvdd); regulator_put(arizona->dcvdd); + switch (arizona->pdata.clk32k_src) { + case ARIZONA_32KZ_MCLK1: + case ARIZONA_32KZ_MCLK2: + arizona_clk32k_disable(arizona); + break; + default: + break; + } + mfd_remove_devices(arizona->dev); arizona_free_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, arizona); arizona_free_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, arizona); --- linux-5.8.0.orig/drivers/mfd/bd9571mwv.c +++ linux-5.8.0/drivers/mfd/bd9571mwv.c @@ -185,9 +185,9 @@ return ret; } - ret = mfd_add_devices(bd->dev, PLATFORM_DEVID_AUTO, bd9571mwv_cells, - ARRAY_SIZE(bd9571mwv_cells), NULL, 0, - regmap_irq_get_domain(bd->irq_data)); + ret = devm_mfd_add_devices(bd->dev, PLATFORM_DEVID_AUTO, + bd9571mwv_cells, ARRAY_SIZE(bd9571mwv_cells), + NULL, 0, regmap_irq_get_domain(bd->irq_data)); if (ret) { regmap_del_irq_chip(bd->irq, bd->irq_data); return ret; --- linux-5.8.0.orig/drivers/mfd/dln2.c +++ linux-5.8.0/drivers/mfd/dln2.c @@ -287,7 +287,11 @@ len = urb->actual_length - sizeof(struct dln2_header); if (handle == DLN2_HANDLE_EVENT) { + unsigned long flags; + + spin_lock_irqsave(&dln2->event_cb_lock, flags); dln2_run_event_callbacks(dln2, id, echo, data, len); + spin_unlock_irqrestore(&dln2->event_cb_lock, flags); } else { /* URB will be re-submitted in _dln2_transfer (free_rx_slot) */ if (dln2_transfer_complete(dln2, urb, handle, echo)) --- linux-5.8.0.orig/drivers/mfd/gateworks-gsc.c +++ linux-5.8.0/drivers/mfd/gateworks-gsc.c @@ -234,7 +234,7 @@ ret = devm_regmap_add_irq_chip(dev, gsc->regmap, client->irq, IRQF_ONESHOT | IRQF_SHARED | - IRQF_TRIGGER_FALLING, 0, + IRQF_TRIGGER_LOW, 0, &gsc_irq_chip, &irq_data); if (ret) return ret; --- linux-5.8.0.orig/drivers/mfd/htc-i2cpld.c +++ linux-5.8.0/drivers/mfd/htc-i2cpld.c @@ -346,6 +346,7 @@ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_READ_BYTE_DATA)) { dev_warn(dev, "i2c adapter %d non-functional\n", pdata->i2c_adapter_id); + i2c_put_adapter(adapter); return -EINVAL; } @@ -360,6 +361,7 @@ /* I2C device registration failed, contineu with the next */ dev_warn(dev, "Unable to add I2C device for 0x%x\n", plat_chip_data->addr); + i2c_put_adapter(adapter); return PTR_ERR(client); } --- linux-5.8.0.orig/drivers/mfd/intel-lpss-pci.c +++ linux-5.8.0/drivers/mfd/intel-lpss-pci.c @@ -201,6 +201,9 @@ { PCI_VDEVICE(INTEL, 0x1ac4), (kernel_ulong_t)&bxt_info }, { PCI_VDEVICE(INTEL, 0x1ac6), (kernel_ulong_t)&bxt_info }, { PCI_VDEVICE(INTEL, 0x1aee), (kernel_ulong_t)&bxt_uart_info }, + /* EBG */ + { PCI_VDEVICE(INTEL, 0x1bad), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x1bae), (kernel_ulong_t)&bxt_uart_info }, /* GLK */ { PCI_VDEVICE(INTEL, 0x31ac), (kernel_ulong_t)&glk_i2c_info }, { PCI_VDEVICE(INTEL, 0x31ae), (kernel_ulong_t)&glk_i2c_info }, @@ -230,6 +233,22 @@ { PCI_VDEVICE(INTEL, 0x34ea), (kernel_ulong_t)&bxt_i2c_info }, { PCI_VDEVICE(INTEL, 0x34eb), (kernel_ulong_t)&bxt_i2c_info }, { PCI_VDEVICE(INTEL, 0x34fb), (kernel_ulong_t)&spt_info }, + /* TGL-H */ + { PCI_VDEVICE(INTEL, 0x43a7), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x43a8), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x43a9), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x43aa), (kernel_ulong_t)&bxt_info }, + { PCI_VDEVICE(INTEL, 0x43ab), (kernel_ulong_t)&bxt_info }, + { PCI_VDEVICE(INTEL, 0x43ad), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43ae), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43d8), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43da), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x43e8), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43e9), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43ea), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43eb), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x43fb), (kernel_ulong_t)&bxt_info }, + { PCI_VDEVICE(INTEL, 0x43fd), (kernel_ulong_t)&bxt_info }, /* EHL */ { PCI_VDEVICE(INTEL, 0x4b28), (kernel_ulong_t)&bxt_uart_info }, { PCI_VDEVICE(INTEL, 0x4b29), (kernel_ulong_t)&bxt_uart_info }, --- linux-5.8.0.orig/drivers/mfd/ioc3.c +++ linux-5.8.0/drivers/mfd/ioc3.c @@ -616,7 +616,10 @@ /* Remove all already added MFD devices */ mfd_remove_devices(&ipd->pdev->dev); if (ipd->domain) { + struct fwnode_handle *fn = ipd->domain->fwnode; + irq_domain_remove(ipd->domain); + irq_domain_free_fwnode(fn); free_irq(ipd->domain_irq, (void *)ipd); } pci_iounmap(pdev, regs); @@ -643,7 +646,10 @@ /* Release resources */ mfd_remove_devices(&ipd->pdev->dev); if (ipd->domain) { + struct fwnode_handle *fn = ipd->domain->fwnode; + irq_domain_remove(ipd->domain); + irq_domain_free_fwnode(fn); free_irq(ipd->domain_irq, (void *)ipd); } pci_iounmap(pdev, ipd->regs); --- linux-5.8.0.orig/drivers/mfd/sm501.c +++ linux-5.8.0/drivers/mfd/sm501.c @@ -1415,8 +1415,14 @@ goto err_claim; } - return sm501_init_dev(sm); + ret = sm501_init_dev(sm); + if (ret) + goto err_unmap; + return 0; + + err_unmap: + iounmap(sm->regs); err_claim: release_mem_region(sm->io_res->start, 0x100); err_res: --- linux-5.8.0.orig/drivers/mfd/sprd-sc27xx-spi.c +++ linux-5.8.0/drivers/mfd/sprd-sc27xx-spi.c @@ -256,7 +256,7 @@ } ret = devm_regmap_add_irq_chip(&spi->dev, ddata->regmap, ddata->irq, - IRQF_ONESHOT | IRQF_NO_SUSPEND, 0, + IRQF_ONESHOT, 0, &ddata->irq_chip, &ddata->irq_data); if (ret) { dev_err(&spi->dev, "Failed to add PMIC irq chip %d\n", ret); @@ -272,9 +272,34 @@ return ret; } + device_init_wakeup(&spi->dev, true); return 0; } +#ifdef CONFIG_PM_SLEEP +static int sprd_pmic_suspend(struct device *dev) +{ + struct sprd_pmic *ddata = dev_get_drvdata(dev); + + if (device_may_wakeup(dev)) + enable_irq_wake(ddata->irq); + + return 0; +} + +static int sprd_pmic_resume(struct device *dev) +{ + struct sprd_pmic *ddata = dev_get_drvdata(dev); + + if (device_may_wakeup(dev)) + disable_irq_wake(ddata->irq); + + return 0; +} +#endif + +static SIMPLE_DEV_PM_OPS(sprd_pmic_pm_ops, sprd_pmic_suspend, sprd_pmic_resume); + static const struct of_device_id sprd_pmic_match[] = { { .compatible = "sprd,sc2731", .data = &sc2731_data }, {}, @@ -285,6 +310,7 @@ .driver = { .name = "sc27xx-pmic", .of_match_table = sprd_pmic_match, + .pm = &sprd_pmic_pm_ops, }, .probe = sprd_pmic_probe, }; --- linux-5.8.0.orig/drivers/mfd/wm831x-auxadc.c +++ linux-5.8.0/drivers/mfd/wm831x-auxadc.c @@ -93,11 +93,10 @@ wait_for_completion_timeout(&req->done, msecs_to_jiffies(500)); mutex_lock(&wm831x->auxadc_lock); - - list_del(&req->list); ret = req->val; out: + list_del(&req->list); mutex_unlock(&wm831x->auxadc_lock); kfree(req); --- linux-5.8.0.orig/drivers/misc/cardreader/rts5227.c +++ linux-5.8.0/drivers/misc/cardreader/rts5227.c @@ -338,6 +338,11 @@ { rts5227_extra_init_hw(pcr); + /* Power down OCP for power consumption */ + if (!pcr->card_exist) + rtsx_pci_write_register(pcr, FPDCTL, OC_POWER_DOWN, + OC_POWER_DOWN); + rtsx_pci_write_register(pcr, FUNC_FORCE_CTL, FUNC_FORCE_UPME_XMT_DBG, FUNC_FORCE_UPME_XMT_DBG); rtsx_pci_write_register(pcr, PCLK_CTL, 0x04, 0x04); --- linux-5.8.0.orig/drivers/misc/cardreader/rtsx_pcr.c +++ linux-5.8.0/drivers/misc/cardreader/rtsx_pcr.c @@ -1172,10 +1172,6 @@ rtsx_pci_write_register(pcr, REG_OCPGLITCH, SD_OCP_GLITCH_MASK, pcr->hw_param.ocp_glitch); rtsx_pci_enable_ocp(pcr); - } else { - /* OC power down */ - rtsx_pci_write_register(pcr, FPDCTL, OC_POWER_DOWN, - OC_POWER_DOWN); } } } @@ -1536,12 +1532,14 @@ ret = mfd_add_devices(&pcidev->dev, pcr->id, rtsx_pcr_cells, ARRAY_SIZE(rtsx_pcr_cells), NULL, 0, NULL); if (ret < 0) - goto disable_irq; + goto free_slots; schedule_delayed_work(&pcr->idle_work, msecs_to_jiffies(200)); return 0; +free_slots: + kfree(pcr->slots); disable_irq: free_irq(pcr->irq, (void *)pcr); disable_msi: --- linux-5.8.0.orig/drivers/misc/cxl/pci.c +++ linux-5.8.0/drivers/misc/cxl/pci.c @@ -393,8 +393,8 @@ *capp_unit_id = get_capp_unit_id(np, *phb_index); of_node_put(np); if (!*capp_unit_id) { - pr_err("cxl: invalid capp unit id (phb_index: %d)\n", - *phb_index); + pr_err("cxl: No capp unit found for PHB[%lld,%d]. Make sure the adapter is on a capi-compatible slot\n", + *chipid, *phb_index); return -ENODEV; } --- linux-5.8.0.orig/drivers/misc/cxl/sysfs.c +++ linux-5.8.0/drivers/misc/cxl/sysfs.c @@ -624,7 +624,7 @@ rc = kobject_init_and_add(&cr->kobj, &afu_config_record_type, &afu->dev.kobj, "cr%i", cr->cr); if (rc) - goto err; + goto err1; rc = sysfs_create_bin_file(&cr->kobj, &cr->config_attr); if (rc) --- linux-5.8.0.orig/drivers/misc/eeprom/at24.c +++ linux-5.8.0/drivers/misc/eeprom/at24.c @@ -692,10 +692,6 @@ nvmem_config.word_size = 1; nvmem_config.size = byte_len; - at24->nvmem = devm_nvmem_register(dev, &nvmem_config); - if (IS_ERR(at24->nvmem)) - return PTR_ERR(at24->nvmem); - i2c_set_clientdata(client, at24); err = regulator_enable(at24->vcc_reg); @@ -708,6 +704,13 @@ pm_runtime_set_active(dev); pm_runtime_enable(dev); + at24->nvmem = devm_nvmem_register(dev, &nvmem_config); + if (IS_ERR(at24->nvmem)) { + pm_runtime_disable(dev); + regulator_disable(at24->vcc_reg); + return PTR_ERR(at24->nvmem); + } + /* * Perform a one-byte test read to verify that the * chip is functional. --- linux-5.8.0.orig/drivers/misc/eeprom/at25.c +++ linux-5.8.0/drivers/misc/eeprom/at25.c @@ -358,7 +358,7 @@ at25->nvmem_config.reg_read = at25_ee_read; at25->nvmem_config.reg_write = at25_ee_write; at25->nvmem_config.priv = at25; - at25->nvmem_config.stride = 4; + at25->nvmem_config.stride = 1; at25->nvmem_config.word_size = 1; at25->nvmem_config.size = chip.byte_len; --- linux-5.8.0.orig/drivers/misc/eeprom/eeprom_93xx46.c +++ linux-5.8.0/drivers/misc/eeprom/eeprom_93xx46.c @@ -35,6 +35,10 @@ EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH, }; +static const struct eeprom_93xx46_devtype_data microchip_93lc46b_data = { + .quirks = EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE, +}; + struct eeprom_93xx46_dev { struct spi_device *spi; struct eeprom_93xx46_platform_data *pdata; @@ -55,6 +59,11 @@ return edev->pdata->quirks & EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH; } +static inline bool has_quirk_extra_read_cycle(struct eeprom_93xx46_dev *edev) +{ + return edev->pdata->quirks & EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE; +} + static int eeprom_93xx46_read(void *priv, unsigned int off, void *val, size_t count) { @@ -96,6 +105,11 @@ dev_dbg(&edev->spi->dev, "read cmd 0x%x, %d Hz\n", cmd_addr, edev->spi->max_speed_hz); + if (has_quirk_extra_read_cycle(edev)) { + cmd_addr <<= 1; + bits += 1; + } + spi_message_init(&m); t[0].tx_buf = (char *)&cmd_addr; @@ -363,6 +377,7 @@ static const struct of_device_id eeprom_93xx46_of_table[] = { { .compatible = "eeprom-93xx46", }, { .compatible = "atmel,at93c46d", .data = &atmel_at93c46d_data, }, + { .compatible = "microchip,93lc46b", .data = µchip_93lc46b_data, }, {} }; MODULE_DEVICE_TABLE(of, eeprom_93xx46_of_table); @@ -511,3 +526,4 @@ MODULE_DESCRIPTION("Driver for 93xx46 EEPROMs"); MODULE_AUTHOR("Anatolij Gustschin "); MODULE_ALIAS("spi:93xx46"); +MODULE_ALIAS("spi:eeprom-93xx46"); --- linux-5.8.0.orig/drivers/misc/fastrpc.c +++ linux-5.8.0/drivers/misc/fastrpc.c @@ -515,12 +515,13 @@ { struct fastrpc_dma_buf_attachment *a = attachment->priv; struct sg_table *table; + int ret; table = &a->sgt; - if (!dma_map_sg(attachment->dev, table->sgl, table->nents, dir)) - return ERR_PTR(-ENOMEM); - + ret = dma_map_sgtable(attachment->dev, table, dir, 0); + if (ret) + table = ERR_PTR(ret); return table; } @@ -528,7 +529,7 @@ struct sg_table *table, enum dma_data_direction dir) { - dma_unmap_sg(attach->dev, table->sgl, table->nents, dir); + dma_unmap_sgtable(attach->dev, table, dir, 0); } static void fastrpc_release(struct dma_buf *dmabuf) @@ -942,6 +943,11 @@ if (!fl->cctx->rpdev) return -EPIPE; + if (handle == FASTRPC_INIT_HANDLE && !kernel) { + dev_warn_ratelimited(fl->sctx->dev, "user app trying to send a kernel RPC message (%d)\n", handle); + return -EPERM; + } + ctx = fastrpc_context_alloc(fl, kernel, sc, args); if (IS_ERR(ctx)) return PTR_ERR(ctx); --- linux-5.8.0.orig/drivers/misc/habanalabs/debugfs.c +++ linux-5.8.0/drivers/misc/habanalabs/debugfs.c @@ -19,7 +19,7 @@ static struct dentry *hl_debug_root; static int hl_debugfs_i2c_read(struct hl_device *hdev, u8 i2c_bus, u8 i2c_addr, - u8 i2c_reg, u32 *val) + u8 i2c_reg, long *val) { struct armcp_packet pkt; int rc; @@ -36,7 +36,7 @@ pkt.i2c_reg = i2c_reg; rc = hdev->asic_funcs->send_cpu_message(hdev, (u32 *) &pkt, sizeof(pkt), - 0, (long *) val); + 0, val); if (rc) dev_err(hdev->dev, "Failed to read from I2C, error %d\n", rc); @@ -827,7 +827,7 @@ struct hl_dbg_device_entry *entry = file_inode(f)->i_private; struct hl_device *hdev = entry->hdev; char tmp_buf[32]; - u32 val; + long val; ssize_t rc; if (*ppos) @@ -842,7 +842,7 @@ return rc; } - sprintf(tmp_buf, "0x%02x\n", val); + sprintf(tmp_buf, "0x%02lx\n", val); rc = simple_read_from_buffer(buf, count, ppos, tmp_buf, strlen(tmp_buf)); @@ -982,7 +982,7 @@ return 0; sprintf(tmp_buf, "0x%llx\n", hdev->clock_gating_mask); - rc = simple_read_from_buffer(buf, strlen(tmp_buf) + 1, ppos, tmp_buf, + rc = simple_read_from_buffer(buf, count, ppos, tmp_buf, strlen(tmp_buf) + 1); return rc; --- linux-5.8.0.orig/drivers/misc/habanalabs/device.c +++ linux-5.8.0/drivers/misc/habanalabs/device.c @@ -106,6 +106,8 @@ list_del(&hpriv->dev_node); mutex_unlock(&hdev->fpriv_list_lock); + put_pid(hpriv->taskpid); + kfree(hpriv); return 0; @@ -227,16 +229,16 @@ static void device_cdev_sysfs_del(struct hl_device *hdev) { - /* device_release() won't be called so must free devices explicitly */ - if (!hdev->cdev_sysfs_created) { - kfree(hdev->dev_ctrl); - kfree(hdev->dev); - return; - } + if (!hdev->cdev_sysfs_created) + goto put_devices; hl_sysfs_fini(hdev); cdev_device_del(&hdev->cdev_ctrl, hdev->dev_ctrl); cdev_device_del(&hdev->cdev, hdev->dev); + +put_devices: + put_device(hdev->dev); + put_device(hdev->dev_ctrl); } /* @@ -980,6 +982,7 @@ GFP_KERNEL); if (!hdev->kernel_ctx) { rc = -ENOMEM; + hl_mmu_fini(hdev); goto out_err; } @@ -991,6 +994,7 @@ "failed to init kernel ctx in hard reset\n"); kfree(hdev->kernel_ctx); hdev->kernel_ctx = NULL; + hl_mmu_fini(hdev); goto out_err; } } @@ -1027,7 +1031,7 @@ goto out_err; } - hl_set_max_power(hdev, hdev->max_power); + hl_set_max_power(hdev); } else { rc = hdev->asic_funcs->soft_reset_late_init(hdev); if (rc) { @@ -1268,6 +1272,11 @@ goto out_disabled; } + /* Need to call this again because the max power might change, + * depending on card type for certain ASICs + */ + hl_set_max_power(hdev); + /* * hl_hwmon_init() must be called after device_late_init(), because only * there we get the information from the device about which @@ -1307,9 +1316,9 @@ early_fini: device_early_fini(hdev); free_dev_ctrl: - kfree(hdev->dev_ctrl); + put_device(hdev->dev_ctrl); free_dev: - kfree(hdev->dev); + put_device(hdev->dev); out_disabled: hdev->disabled = true; if (add_cdev_sysfs_on_err) --- linux-5.8.0.orig/drivers/misc/habanalabs/firmware_if.c +++ linux-5.8.0/drivers/misc/habanalabs/firmware_if.c @@ -13,6 +13,7 @@ #include #include +#define FW_FILE_MAX_SIZE 0x1400000 /* maximum size of 20MB */ /** * hl_fw_load_fw_to_device() - Load F/W code to device's memory. * @hdev: pointer to hl_device structure. @@ -45,6 +46,14 @@ dev_dbg(hdev->dev, "%s firmware size == %zu\n", fw_name, fw_size); + if (fw_size > FW_FILE_MAX_SIZE) { + dev_err(hdev->dev, + "FW file size %zu exceeds maximum of %u bytes\n", + fw_size, FW_FILE_MAX_SIZE); + rc = -EINVAL; + goto out; + } + fw_data = (const u64 *) fw->data; memcpy_toio(dst, fw_data, fw_size); --- linux-5.8.0.orig/drivers/misc/habanalabs/gaudi/gaudi.c +++ linux-5.8.0/drivers/misc/habanalabs/gaudi/gaudi.c @@ -154,6 +154,29 @@ [PACKET_LOAD_AND_EXE] = sizeof(struct packet_load_and_exe) }; +static inline bool validate_packet_id(enum packet_id id) +{ + switch (id) { + case PACKET_WREG_32: + case PACKET_WREG_BULK: + case PACKET_MSG_LONG: + case PACKET_MSG_SHORT: + case PACKET_CP_DMA: + case PACKET_REPEAT: + case PACKET_MSG_PROT: + case PACKET_FENCE: + case PACKET_LIN_DMA: + case PACKET_NOP: + case PACKET_STOP: + case PACKET_ARB_POINT: + case PACKET_WAIT: + case PACKET_LOAD_AND_EXE: + return true; + default: + return false; + } +} + static const char * const gaudi_tpc_interrupts_cause[GAUDI_NUM_OF_TPC_INTR_CAUSE] = { "tpc_address_exceed_slm", @@ -424,7 +447,7 @@ prop->num_of_events = GAUDI_EVENT_SIZE; prop->tpc_enabled_mask = TPC_ENABLED_MASK; - prop->max_power_default = MAX_POWER_DEFAULT; + prop->max_power_default = MAX_POWER_DEFAULT_PCI; prop->cb_pool_cb_cnt = GAUDI_CB_POOL_CB_CNT; prop->cb_pool_cb_size = GAUDI_CB_POOL_CB_SIZE; @@ -652,11 +675,17 @@ size_t fw_size; void *cpu_addr; dma_addr_t dma_handle; - int rc; + int rc, count = 5; +again: rc = request_firmware(&fw, GAUDI_TPC_FW_FILE, hdev->dev); + if (rc == -EINTR && count-- > 0) { + msleep(50); + goto again; + } + if (rc) { - dev_err(hdev->dev, "Firmware file %s is not found!\n", + dev_err(hdev->dev, "Failed to load firmware file %s\n", GAUDI_TPC_FW_FILE); goto out; } @@ -2541,6 +2570,7 @@ { struct gaudi_device *gaudi = hdev->asic_specific; u32 qman_offset; + bool enable; int i; /* In case we are during debug session, don't enable the clock gate @@ -2550,46 +2580,43 @@ return; for (i = GAUDI_PCI_DMA_1, qman_offset = 0 ; i < GAUDI_HBM_DMA_1 ; i++) { - if (!(hdev->clock_gating_mask & - (BIT_ULL(gaudi_dma_assignment[i])))) - continue; + enable = !!(hdev->clock_gating_mask & + (BIT_ULL(gaudi_dma_assignment[i]))); qman_offset = gaudi_dma_assignment[i] * DMA_QMAN_OFFSET; - WREG32(mmDMA0_QM_CGM_CFG1 + qman_offset, QMAN_CGM1_PWR_GATE_EN); + WREG32(mmDMA0_QM_CGM_CFG1 + qman_offset, + enable ? QMAN_CGM1_PWR_GATE_EN : 0); WREG32(mmDMA0_QM_CGM_CFG + qman_offset, - QMAN_UPPER_CP_CGM_PWR_GATE_EN); + enable ? QMAN_UPPER_CP_CGM_PWR_GATE_EN : 0); } for (i = GAUDI_HBM_DMA_1 ; i < GAUDI_DMA_MAX ; i++) { - if (!(hdev->clock_gating_mask & - (BIT_ULL(gaudi_dma_assignment[i])))) - continue; + enable = !!(hdev->clock_gating_mask & + (BIT_ULL(gaudi_dma_assignment[i]))); qman_offset = gaudi_dma_assignment[i] * DMA_QMAN_OFFSET; - WREG32(mmDMA0_QM_CGM_CFG1 + qman_offset, QMAN_CGM1_PWR_GATE_EN); + WREG32(mmDMA0_QM_CGM_CFG1 + qman_offset, + enable ? QMAN_CGM1_PWR_GATE_EN : 0); WREG32(mmDMA0_QM_CGM_CFG + qman_offset, - QMAN_COMMON_CP_CGM_PWR_GATE_EN); + enable ? QMAN_COMMON_CP_CGM_PWR_GATE_EN : 0); } - if (hdev->clock_gating_mask & (BIT_ULL(GAUDI_ENGINE_ID_MME_0))) { - WREG32(mmMME0_QM_CGM_CFG1, QMAN_CGM1_PWR_GATE_EN); - WREG32(mmMME0_QM_CGM_CFG, QMAN_COMMON_CP_CGM_PWR_GATE_EN); - } + enable = !!(hdev->clock_gating_mask & (BIT_ULL(GAUDI_ENGINE_ID_MME_0))); + WREG32(mmMME0_QM_CGM_CFG1, enable ? QMAN_CGM1_PWR_GATE_EN : 0); + WREG32(mmMME0_QM_CGM_CFG, enable ? QMAN_COMMON_CP_CGM_PWR_GATE_EN : 0); - if (hdev->clock_gating_mask & (BIT_ULL(GAUDI_ENGINE_ID_MME_2))) { - WREG32(mmMME2_QM_CGM_CFG1, QMAN_CGM1_PWR_GATE_EN); - WREG32(mmMME2_QM_CGM_CFG, QMAN_COMMON_CP_CGM_PWR_GATE_EN); - } + enable = !!(hdev->clock_gating_mask & (BIT_ULL(GAUDI_ENGINE_ID_MME_2))); + WREG32(mmMME2_QM_CGM_CFG1, enable ? QMAN_CGM1_PWR_GATE_EN : 0); + WREG32(mmMME2_QM_CGM_CFG, enable ? QMAN_COMMON_CP_CGM_PWR_GATE_EN : 0); for (i = 0, qman_offset = 0 ; i < TPC_NUMBER_OF_ENGINES ; i++) { - if (!(hdev->clock_gating_mask & - (BIT_ULL(GAUDI_ENGINE_ID_TPC_0 + i)))) - continue; + enable = !!(hdev->clock_gating_mask & + (BIT_ULL(GAUDI_ENGINE_ID_TPC_0 + i))); WREG32(mmTPC0_QM_CGM_CFG1 + qman_offset, - QMAN_CGM1_PWR_GATE_EN); + enable ? QMAN_CGM1_PWR_GATE_EN : 0); WREG32(mmTPC0_QM_CGM_CFG + qman_offset, - QMAN_COMMON_CP_CGM_PWR_GATE_EN); + enable ? QMAN_COMMON_CP_CGM_PWR_GATE_EN : 0); qman_offset += TPC_QMAN_OFFSET; } @@ -3859,6 +3886,12 @@ PACKET_HEADER_PACKET_ID_MASK) >> PACKET_HEADER_PACKET_ID_SHIFT); + if (!validate_packet_id(pkt_id)) { + dev_err(hdev->dev, "Invalid packet id %u\n", pkt_id); + rc = -EINVAL; + break; + } + pkt_size = gaudi_packet_sizes[pkt_id]; cb_parsed_length += pkt_size; if (cb_parsed_length > parser->user_cb_size) { @@ -4082,6 +4115,12 @@ PACKET_HEADER_PACKET_ID_MASK) >> PACKET_HEADER_PACKET_ID_SHIFT); + if (!validate_packet_id(pkt_id)) { + dev_err(hdev->dev, "Invalid packet id %u\n", pkt_id); + rc = -EINVAL; + break; + } + pkt_size = gaudi_packet_sizes[pkt_id]; cb_parsed_length += pkt_size; if (cb_parsed_length > parser->user_cb_size) { @@ -6208,6 +6247,15 @@ strncpy(prop->armcp_info.card_name, GAUDI_DEFAULT_CARD_NAME, CARD_NAME_MAX_LEN); + hdev->card_type = le32_to_cpu(hdev->asic_prop.armcp_info.card_type); + + if (hdev->card_type == armcp_card_type_pci) + prop->max_power_default = MAX_POWER_DEFAULT_PCI; + else if (hdev->card_type == armcp_card_type_pmc) + prop->max_power_default = MAX_POWER_DEFAULT_PMC; + + hdev->max_power = prop->max_power_default; + return 0; } @@ -6243,7 +6291,7 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << + *mask |= ((u64) !is_eng_idle) << (GAUDI_ENGINE_ID_DMA_0 + dma_id); if (s) seq_printf(s, fmt, dma_id, @@ -6266,7 +6314,8 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << (GAUDI_ENGINE_ID_TPC_0 + i); + *mask |= ((u64) !is_eng_idle) << + (GAUDI_ENGINE_ID_TPC_0 + i); if (s) seq_printf(s, fmt, i, is_eng_idle ? "Y" : "N", @@ -6294,7 +6343,8 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << (GAUDI_ENGINE_ID_MME_0 + i); + *mask |= ((u64) !is_eng_idle) << + (GAUDI_ENGINE_ID_MME_0 + i); if (s) { if (!is_slave) seq_printf(s, fmt, i, --- linux-5.8.0.orig/drivers/misc/habanalabs/gaudi/gaudiP.h +++ linux-5.8.0/drivers/misc/habanalabs/gaudi/gaudiP.h @@ -41,7 +41,8 @@ #define GAUDI_MAX_CLK_FREQ 2200000000ull /* 2200 MHz */ -#define MAX_POWER_DEFAULT 200000 /* 200W */ +#define MAX_POWER_DEFAULT_PCI 200000 /* 200W */ +#define MAX_POWER_DEFAULT_PMC 350000 /* 350W */ #define GAUDI_CPU_TIMEOUT_USEC 15000000 /* 15s */ --- linux-5.8.0.orig/drivers/misc/habanalabs/gaudi/gaudi_coresight.c +++ linux-5.8.0/drivers/misc/habanalabs/gaudi/gaudi_coresight.c @@ -523,7 +523,7 @@ } static bool gaudi_etr_validate_address(struct hl_device *hdev, u64 addr, - u32 size, bool *is_host) + u64 size, bool *is_host) { struct asic_fixed_properties *prop = &hdev->asic_prop; struct gaudi_device *gaudi = hdev->asic_specific; @@ -535,6 +535,12 @@ return false; } + if (addr > (addr + size)) { + dev_err(hdev->dev, + "ETR buffer size %llu overflow\n", size); + return false; + } + /* PMMU and HPMMU addresses are equal, check only one of them */ if ((gaudi->hw_cap_initialized & HW_CAP_MMU) && hl_mem_area_inside_range(addr, size, --- linux-5.8.0.orig/drivers/misc/habanalabs/gaudi/gaudi_security.c +++ linux-5.8.0/drivers/misc/habanalabs/gaudi/gaudi_security.c @@ -832,8 +832,7 @@ PROT_BITS_OFFS; word_offset = ((mmMME0_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmMME0_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmMME0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmMME0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmMME0_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmMME0_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmMME0_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -1312,8 +1311,7 @@ PROT_BITS_OFFS; word_offset = ((mmMME2_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmMME2_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmMME2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmMME2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmMME2_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmMME2_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmMME2_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -1791,8 +1789,7 @@ word_offset = ((mmDMA0_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA0_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA0_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA0_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA0_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -2187,8 +2184,7 @@ word_offset = ((mmDMA1_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA1_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA1_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA1_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA1_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA1_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA1_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -2583,8 +2579,7 @@ word_offset = ((mmDMA2_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA2_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA2_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA2_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA2_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -2979,8 +2974,7 @@ word_offset = ((mmDMA3_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA3_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA3_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA3_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA3_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA3_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA3_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -3375,8 +3369,7 @@ word_offset = ((mmDMA4_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA4_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA4_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA4_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA4_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA4_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA4_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -3771,8 +3764,7 @@ word_offset = ((mmDMA5_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA5_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA5_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA5_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA5_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA5_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA5_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -4167,8 +4159,8 @@ word_offset = ((mmDMA6_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA6_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA6_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + + mask = 1 << ((mmDMA6_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA6_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA6_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA6_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -4563,8 +4555,7 @@ word_offset = ((mmDMA7_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmDMA7_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmDMA7_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmDMA7_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmDMA7_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmDMA7_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmDMA7_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -5492,8 +5483,7 @@ word_offset = ((mmTPC0_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC0_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC0_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC0_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC0_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC0_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -5948,8 +5938,7 @@ word_offset = ((mmTPC1_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC1_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC1_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC1_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC1_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC1_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC1_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -6403,8 +6392,7 @@ PROT_BITS_OFFS; word_offset = ((mmTPC2_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC2_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC2_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC2_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC2_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC2_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -6858,8 +6846,7 @@ PROT_BITS_OFFS; word_offset = ((mmTPC3_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC3_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC3_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC3_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC3_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC3_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC3_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -7313,8 +7300,7 @@ PROT_BITS_OFFS; word_offset = ((mmTPC4_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC4_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC4_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC4_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC4_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC4_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC4_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -7768,8 +7754,7 @@ PROT_BITS_OFFS; word_offset = ((mmTPC5_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC5_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC5_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC5_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC5_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC5_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC5_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -8224,8 +8209,7 @@ word_offset = ((mmTPC6_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC6_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC6_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC6_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC6_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC6_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC6_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); @@ -8682,8 +8666,7 @@ PROT_BITS_OFFS; word_offset = ((mmTPC7_QM_ARB_MST_CHOISE_PUSH_OFST_23 & PROT_BITS_OFFS) >> 7) << 2; - mask = 1 << ((mmTPC7_QM_ARB_MST_QUIET_PER & 0x7F) >> 2); - mask |= 1 << ((mmTPC7_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); + mask = 1 << ((mmTPC7_QM_ARB_SLV_CHOISE_WDT & 0x7F) >> 2); mask |= 1 << ((mmTPC7_QM_ARB_MSG_MAX_INFLIGHT & 0x7F) >> 2); mask |= 1 << ((mmTPC7_QM_ARB_MSG_AWUSER_31_11 & 0x7F) >> 2); mask |= 1 << ((mmTPC7_QM_ARB_MSG_AWUSER_SEC_PROP & 0x7F) >> 2); --- linux-5.8.0.orig/drivers/misc/habanalabs/goya/goya.c +++ linux-5.8.0/drivers/misc/habanalabs/goya/goya.c @@ -139,6 +139,25 @@ [PACKET_STOP] = sizeof(struct packet_stop) }; +static inline bool validate_packet_id(enum packet_id id) +{ + switch (id) { + case PACKET_WREG_32: + case PACKET_WREG_BULK: + case PACKET_MSG_LONG: + case PACKET_MSG_SHORT: + case PACKET_CP_DMA: + case PACKET_MSG_PROT: + case PACKET_FENCE: + case PACKET_LIN_DMA: + case PACKET_NOP: + case PACKET_STOP: + return true; + default: + return false; + } +} + static u64 goya_mmu_regs[GOYA_MMU_REGS_NUM] = { mmDMA_QM_0_GLBL_NON_SECURE_PROPS, mmDMA_QM_1_GLBL_NON_SECURE_PROPS, @@ -3381,6 +3400,12 @@ PACKET_HEADER_PACKET_ID_MASK) >> PACKET_HEADER_PACKET_ID_SHIFT); + if (!validate_packet_id(pkt_id)) { + dev_err(hdev->dev, "Invalid packet id %u\n", pkt_id); + rc = -EINVAL; + break; + } + pkt_size = goya_packet_sizes[pkt_id]; cb_parsed_length += pkt_size; if (cb_parsed_length > parser->user_cb_size) { @@ -3616,6 +3641,12 @@ PACKET_HEADER_PACKET_ID_MASK) >> PACKET_HEADER_PACKET_ID_SHIFT); + if (!validate_packet_id(pkt_id)) { + dev_err(hdev->dev, "Invalid packet id %u\n", pkt_id); + rc = -EINVAL; + break; + } + pkt_size = goya_packet_sizes[pkt_id]; cb_parsed_length += pkt_size; if (cb_parsed_length > parser->user_cb_size) { @@ -5067,7 +5098,8 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << (GOYA_ENGINE_ID_DMA_0 + i); + *mask |= ((u64) !is_eng_idle) << + (GOYA_ENGINE_ID_DMA_0 + i); if (s) seq_printf(s, dma_fmt, i, is_eng_idle ? "Y" : "N", qm_glbl_sts0, dma_core_sts0); @@ -5090,7 +5122,8 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << (GOYA_ENGINE_ID_TPC_0 + i); + *mask |= ((u64) !is_eng_idle) << + (GOYA_ENGINE_ID_TPC_0 + i); if (s) seq_printf(s, fmt, i, is_eng_idle ? "Y" : "N", qm_glbl_sts0, cmdq_glbl_sts0, tpc_cfg_sts); @@ -5110,7 +5143,7 @@ is_idle &= is_eng_idle; if (mask) - *mask |= !is_eng_idle << GOYA_ENGINE_ID_MME_0; + *mask |= ((u64) !is_eng_idle) << GOYA_ENGINE_ID_MME_0; if (s) { seq_printf(s, fmt, 0, is_eng_idle ? "Y" : "N", qm_glbl_sts0, cmdq_glbl_sts0, mme_arch_sts); --- linux-5.8.0.orig/drivers/misc/habanalabs/goya/goya_coresight.c +++ linux-5.8.0/drivers/misc/habanalabs/goya/goya_coresight.c @@ -358,11 +358,17 @@ } static int goya_etr_validate_address(struct hl_device *hdev, u64 addr, - u32 size) + u64 size) { struct asic_fixed_properties *prop = &hdev->asic_prop; u64 range_start, range_end; + if (addr > (addr + size)) { + dev_err(hdev->dev, + "ETR buffer size %llu overflow\n", size); + return false; + } + if (hdev->mmu_enable) { range_start = prop->dmmu.start_addr; range_end = prop->dmmu.end_addr; --- linux-5.8.0.orig/drivers/misc/habanalabs/habanalabs.h +++ linux-5.8.0/drivers/misc/habanalabs/habanalabs.h @@ -1408,6 +1408,8 @@ * details. * @in_reset: is device in reset flow. * @curr_pll_profile: current PLL profile. + * @card_type: Various ASICs have several card types. This indicates the card + * type of the current device. * @cs_active_cnt: number of active command submissions on this device (active * means already in H/W queues) * @major: habanalabs kernel driver major. @@ -1503,6 +1505,7 @@ u64 clock_gating_mask; atomic_t in_reset; enum hl_pll_frequency curr_pll_profile; + enum armcp_card_types card_type; int cs_active_cnt; u32 major; u32 high_pll; @@ -1587,7 +1590,7 @@ * * Return: true if the area is inside the valid range, false otherwise. */ -static inline bool hl_mem_area_inside_range(u64 address, u32 size, +static inline bool hl_mem_area_inside_range(u64 address, u64 size, u64 range_start_address, u64 range_end_address) { u64 end_address = address + size; @@ -1792,7 +1795,7 @@ void hl_set_pwm_info(struct hl_device *hdev, int sensor_index, u32 attr, long value); u64 hl_get_max_power(struct hl_device *hdev); -void hl_set_max_power(struct hl_device *hdev, u64 value); +void hl_set_max_power(struct hl_device *hdev); int hl_set_voltage(struct hl_device *hdev, int sensor_index, u32 attr, long value); int hl_set_current(struct hl_device *hdev, --- linux-5.8.0.orig/drivers/misc/habanalabs/habanalabs_drv.c +++ linux-5.8.0/drivers/misc/habanalabs/habanalabs_drv.c @@ -456,6 +456,7 @@ .id_table = ids, .probe = hl_pci_probe, .remove = hl_pci_remove, + .shutdown = hl_pci_remove, .driver.pm = &hl_pm_ops, }; --- linux-5.8.0.orig/drivers/misc/habanalabs/include/gaudi/gaudi_masks.h +++ linux-5.8.0/drivers/misc/habanalabs/include/gaudi/gaudi_masks.h @@ -378,15 +378,15 @@ ((((y) & RAZWI_INITIATOR_Y_MASK) << RAZWI_INITIATOR_Y_SHIFT) | \ (((x) & RAZWI_INITIATOR_X_MASK) << RAZWI_INITIATOR_X_SHIFT)) -#define RAZWI_INITIATOR_ID_X_Y_TPC0_NIC0 RAZWI_INITIATOR_ID_X_Y(1, 0) -#define RAZWI_INITIATOR_ID_X_Y_TPC1 RAZWI_INITIATOR_ID_X_Y(2, 0) -#define RAZWI_INITIATOR_ID_X_Y_MME0_0 RAZWI_INITIATOR_ID_X_Y(3, 0) -#define RAZWI_INITIATOR_ID_X_Y_MME0_1 RAZWI_INITIATOR_ID_X_Y(4, 0) -#define RAZWI_INITIATOR_ID_X_Y_MME1_0 RAZWI_INITIATOR_ID_X_Y(5, 0) -#define RAZWI_INITIATOR_ID_X_Y_MME1_1 RAZWI_INITIATOR_ID_X_Y(6, 0) -#define RAZWI_INITIATOR_ID_X_Y_TPC2 RAZWI_INITIATOR_ID_X_Y(7, 0) +#define RAZWI_INITIATOR_ID_X_Y_TPC0_NIC0 RAZWI_INITIATOR_ID_X_Y(1, 1) +#define RAZWI_INITIATOR_ID_X_Y_TPC1 RAZWI_INITIATOR_ID_X_Y(2, 1) +#define RAZWI_INITIATOR_ID_X_Y_MME0_0 RAZWI_INITIATOR_ID_X_Y(3, 1) +#define RAZWI_INITIATOR_ID_X_Y_MME0_1 RAZWI_INITIATOR_ID_X_Y(4, 1) +#define RAZWI_INITIATOR_ID_X_Y_MME1_0 RAZWI_INITIATOR_ID_X_Y(5, 1) +#define RAZWI_INITIATOR_ID_X_Y_MME1_1 RAZWI_INITIATOR_ID_X_Y(6, 1) +#define RAZWI_INITIATOR_ID_X_Y_TPC2 RAZWI_INITIATOR_ID_X_Y(7, 1) #define RAZWI_INITIATOR_ID_X_Y_TPC3_PCI_CPU_PSOC \ - RAZWI_INITIATOR_ID_X_Y(8, 0) + RAZWI_INITIATOR_ID_X_Y(8, 1) #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_0 RAZWI_INITIATOR_ID_X_Y(0, 1) #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_S_0 RAZWI_INITIATOR_ID_X_Y(9, 1) #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_S_1 RAZWI_INITIATOR_ID_X_Y(0, 2) @@ -395,14 +395,14 @@ #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_0 RAZWI_INITIATOR_ID_X_Y(9, 3) #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_W_N_1 RAZWI_INITIATOR_ID_X_Y(0, 4) #define RAZWI_INITIATOR_ID_X_Y_DMA_IF_E_N_1 RAZWI_INITIATOR_ID_X_Y(9, 4) -#define RAZWI_INITIATOR_ID_X_Y_TPC4_NIC1_NIC2 RAZWI_INITIATOR_ID_X_Y(1, 5) -#define RAZWI_INITIATOR_ID_X_Y_TPC5 RAZWI_INITIATOR_ID_X_Y(2, 5) -#define RAZWI_INITIATOR_ID_X_Y_MME2_0 RAZWI_INITIATOR_ID_X_Y(3, 5) -#define RAZWI_INITIATOR_ID_X_Y_MME2_1 RAZWI_INITIATOR_ID_X_Y(4, 5) -#define RAZWI_INITIATOR_ID_X_Y_MME3_0 RAZWI_INITIATOR_ID_X_Y(5, 5) -#define RAZWI_INITIATOR_ID_X_Y_MME3_1 RAZWI_INITIATOR_ID_X_Y(6, 5) -#define RAZWI_INITIATOR_ID_X_Y_TPC6 RAZWI_INITIATOR_ID_X_Y(7, 5) -#define RAZWI_INITIATOR_ID_X_Y_TPC7_NIC4_NIC5 RAZWI_INITIATOR_ID_X_Y(8, 5) +#define RAZWI_INITIATOR_ID_X_Y_TPC4_NIC1_NIC2 RAZWI_INITIATOR_ID_X_Y(1, 6) +#define RAZWI_INITIATOR_ID_X_Y_TPC5 RAZWI_INITIATOR_ID_X_Y(2, 6) +#define RAZWI_INITIATOR_ID_X_Y_MME2_0 RAZWI_INITIATOR_ID_X_Y(3, 6) +#define RAZWI_INITIATOR_ID_X_Y_MME2_1 RAZWI_INITIATOR_ID_X_Y(4, 6) +#define RAZWI_INITIATOR_ID_X_Y_MME3_0 RAZWI_INITIATOR_ID_X_Y(5, 6) +#define RAZWI_INITIATOR_ID_X_Y_MME3_1 RAZWI_INITIATOR_ID_X_Y(6, 6) +#define RAZWI_INITIATOR_ID_X_Y_TPC6 RAZWI_INITIATOR_ID_X_Y(7, 6) +#define RAZWI_INITIATOR_ID_X_Y_TPC7_NIC4_NIC5 RAZWI_INITIATOR_ID_X_Y(8, 6) #define PSOC_ETR_AXICTL_PROTCTRLBIT1_SHIFT 1 @@ -452,7 +452,6 @@ #define QM_ARB_ERR_MSG_EN_MASK (\ QM_ARB_ERR_MSG_EN_CHOISE_OVF_MASK |\ - QM_ARB_ERR_MSG_EN_CHOISE_WDT_MASK |\ QM_ARB_ERR_MSG_EN_AXI_LBW_ERR_MASK) #endif /* GAUDI_MASKS_H_ */ --- linux-5.8.0.orig/drivers/misc/habanalabs/memory.c +++ linux-5.8.0/drivers/misc/habanalabs/memory.c @@ -66,6 +66,11 @@ num_pgs = (args->alloc.mem_size + (page_size - 1)) >> page_shift; total_size = num_pgs << page_shift; + if (!total_size) { + dev_err(hdev->dev, "Cannot allocate 0 bytes\n"); + return -EINVAL; + } + contiguous = args->flags & HL_MEM_CONTIGUOUS; if (contiguous) { @@ -93,7 +98,7 @@ phys_pg_pack->contiguous = contiguous; phys_pg_pack->pages = kvmalloc_array(num_pgs, sizeof(u64), GFP_KERNEL); - if (!phys_pg_pack->pages) { + if (ZERO_OR_NULL_PTR(phys_pg_pack->pages)) { rc = -ENOMEM; goto pages_arr_err; } @@ -683,7 +688,7 @@ phys_pg_pack->pages = kvmalloc_array(total_npages, sizeof(u64), GFP_KERNEL); - if (!phys_pg_pack->pages) { + if (ZERO_OR_NULL_PTR(phys_pg_pack->pages)) { rc = -ENOMEM; goto page_pack_arr_mem_err; } --- linux-5.8.0.orig/drivers/misc/habanalabs/mmu.c +++ linux-5.8.0/drivers/misc/habanalabs/mmu.c @@ -450,7 +450,7 @@ hdev->mmu_shadow_hop0 = kvmalloc_array(prop->max_asid, prop->mmu_hop_table_size, GFP_KERNEL | __GFP_ZERO); - if (!hdev->mmu_shadow_hop0) { + if (ZERO_OR_NULL_PTR(hdev->mmu_shadow_hop0)) { rc = -ENOMEM; goto err_pool_add; } --- linux-5.8.0.orig/drivers/misc/habanalabs/pci.c +++ linux-5.8.0/drivers/misc/habanalabs/pci.c @@ -378,15 +378,17 @@ rc = hdev->asic_funcs->init_iatu(hdev); if (rc) { dev_err(hdev->dev, "Failed to initialize iATU\n"); - goto disable_device; + goto unmap_pci_bars; } rc = hl_pci_set_dma_mask(hdev); if (rc) - goto disable_device; + goto unmap_pci_bars; return 0; +unmap_pci_bars: + hl_pci_bars_unmap(hdev); disable_device: pci_clear_master(pdev); pci_disable_device(pdev); --- linux-5.8.0.orig/drivers/misc/habanalabs/sysfs.c +++ linux-5.8.0/drivers/misc/habanalabs/sysfs.c @@ -81,7 +81,7 @@ return result; } -void hl_set_max_power(struct hl_device *hdev, u64 value) +void hl_set_max_power(struct hl_device *hdev) { struct armcp_packet pkt; int rc; @@ -90,7 +90,7 @@ pkt.ctl = cpu_to_le32(ARMCP_PACKET_MAX_POWER_SET << ARMCP_PKT_CTL_OPCODE_SHIFT); - pkt.value = cpu_to_le64(value); + pkt.value = cpu_to_le64(hdev->max_power); rc = hdev->asic_funcs->send_cpu_message(hdev, (u32 *) &pkt, sizeof(pkt), 0, NULL); @@ -316,7 +316,7 @@ } hdev->max_power = value; - hl_set_max_power(hdev, value); + hl_set_max_power(hdev); out: return count; @@ -419,6 +419,7 @@ hdev->pm_mng_profile = PM_AUTO; else hdev->pm_mng_profile = PM_MANUAL; + hdev->max_power = hdev->asic_prop.max_power_default; hdev->asic_funcs->add_device_attr(hdev, &hl_dev_clks_attr_group); --- linux-5.8.0.orig/drivers/misc/lkdtm/Makefile +++ linux-5.8.0/drivers/misc/lkdtm/Makefile @@ -16,7 +16,7 @@ OBJCOPYFLAGS := OBJCOPYFLAGS_rodata_objcopy.o := \ - --rename-section .text=.rodata,alloc,readonly,load + --rename-section .noinstr.text=.rodata,alloc,readonly,load targets += rodata.o rodata_objcopy.o $(obj)/rodata_objcopy.o: $(obj)/rodata.o FORCE $(call if_changed,objcopy) --- linux-5.8.0.orig/drivers/misc/lkdtm/bugs.c +++ linux-5.8.0/drivers/misc/lkdtm/bugs.c @@ -13,7 +13,7 @@ #include #include -#ifdef CONFIG_X86_32 +#if IS_ENABLED(CONFIG_X86_32) && !IS_ENABLED(CONFIG_UML) #include #endif @@ -118,9 +118,8 @@ /* Use default char array length that triggers stack protection. */ char data[8] __aligned(sizeof(void *)); - __lkdtm_CORRUPT_STACK(&data); - - pr_info("Corrupted stack containing char array ...\n"); + pr_info("Corrupting stack containing char array ...\n"); + __lkdtm_CORRUPT_STACK((void *)&data); } /* Same as above but will only get a canary with -fstack-protector-strong */ @@ -131,9 +130,8 @@ unsigned long *ptr; } data __aligned(sizeof(void *)); - __lkdtm_CORRUPT_STACK(&data); - - pr_info("Corrupted stack containing union ...\n"); + pr_info("Corrupting stack containing union ...\n"); + __lkdtm_CORRUPT_STACK((void *)&data); } void lkdtm_UNALIGNED_LOAD_STORE_WRITE(void) @@ -248,6 +246,7 @@ kfree(not_checked); kfree(checked); + pr_err("FAIL: survived array bounds overflow!\n"); } void lkdtm_CORRUPT_LIST_ADD(void) @@ -419,7 +418,7 @@ void lkdtm_DOUBLE_FAULT(void) { -#ifdef CONFIG_X86_32 +#if IS_ENABLED(CONFIG_X86_32) && !IS_ENABLED(CONFIG_UML) /* * Trigger #DF by setting the stack limit to zero. This clobbers * a GDT TLS slot, which is okay because the current task will die @@ -454,38 +453,42 @@ #endif } -#ifdef CONFIG_ARM64_PTR_AUTH +#ifdef CONFIG_ARM64 static noinline void change_pac_parameters(void) { - /* Reset the keys of current task */ - ptrauth_thread_init_kernel(current); - ptrauth_thread_switch_kernel(current); + if (IS_ENABLED(CONFIG_ARM64_PTR_AUTH)) { + /* Reset the keys of current task */ + ptrauth_thread_init_kernel(current); + ptrauth_thread_switch_kernel(current); + } } +#endif -#define CORRUPT_PAC_ITERATE 10 noinline void lkdtm_CORRUPT_PAC(void) { +#ifdef CONFIG_ARM64 +#define CORRUPT_PAC_ITERATE 10 int i; + if (!IS_ENABLED(CONFIG_ARM64_PTR_AUTH)) + pr_err("FAIL: kernel not built with CONFIG_ARM64_PTR_AUTH\n"); + if (!system_supports_address_auth()) { - pr_err("FAIL: arm64 pointer authentication feature not present\n"); + pr_err("FAIL: CPU lacks pointer authentication feature\n"); return; } - pr_info("Change the PAC parameters to force function return failure\n"); + pr_info("changing PAC parameters to force function return failure...\n"); /* - * Pac is a hash value computed from input keys, return address and + * PAC is a hash value computed from input keys, return address and * stack pointer. As pac has fewer bits so there is a chance of * collision, so iterate few times to reduce the collision probability. */ for (i = 0; i < CORRUPT_PAC_ITERATE; i++) change_pac_parameters(); - pr_err("FAIL: %s test failed. Kernel may be unstable from here\n", __func__); -} -#else /* !CONFIG_ARM64_PTR_AUTH */ -noinline void lkdtm_CORRUPT_PAC(void) -{ - pr_err("FAIL: arm64 pointer authentication config disabled\n"); -} + pr_err("FAIL: survived PAC changes! Kernel may be unstable from here\n"); +#else + pr_err("XFAIL: this test is arm64-only\n"); #endif +} --- linux-5.8.0.orig/drivers/misc/lkdtm/heap.c +++ linux-5.8.0/drivers/misc/lkdtm/heap.c @@ -58,11 +58,12 @@ int *base, *val, saw; size_t len = 1024; /* - * The slub allocator uses the first word to store the free - * pointer in some configurations. Use the middle of the - * allocation to avoid running into the freelist + * The slub allocator will use the either the first word or + * the middle of the allocation to store the free pointer, + * depending on configurations. Store in the second word to + * avoid running into the freelist. */ - size_t offset = (len / sizeof(*base)) / 2; + size_t offset = sizeof(*base); base = kmalloc(len, GFP_KERNEL); if (!base) { --- linux-5.8.0.orig/drivers/misc/lkdtm/lkdtm.h +++ linux-5.8.0/drivers/misc/lkdtm/lkdtm.h @@ -31,9 +31,7 @@ void lkdtm_STACK_GUARD_PAGE_LEADING(void); void lkdtm_STACK_GUARD_PAGE_TRAILING(void); void lkdtm_UNSET_SMEP(void); -#ifdef CONFIG_X86_32 void lkdtm_DOUBLE_FAULT(void); -#endif void lkdtm_CORRUPT_PAC(void); /* lkdtm_heap.c */ --- linux-5.8.0.orig/drivers/misc/lkdtm/perms.c +++ linux-5.8.0/drivers/misc/lkdtm/perms.c @@ -57,6 +57,7 @@ } pr_info("attempting bad execution at %px\n", func); func(); + pr_err("FAIL: func returned\n"); } static void execute_user_location(void *dst) @@ -75,20 +76,22 @@ return; pr_info("attempting bad execution at %px\n", func); func(); + pr_err("FAIL: func returned\n"); } void lkdtm_WRITE_RO(void) { - /* Explicitly cast away "const" for the test. */ - unsigned long *ptr = (unsigned long *)&rodata; + /* Explicitly cast away "const" for the test and make volatile. */ + volatile unsigned long *ptr = (unsigned long *)&rodata; pr_info("attempting bad rodata write at %px\n", ptr); *ptr ^= 0xabcd1234; + pr_err("FAIL: survived bad write\n"); } void lkdtm_WRITE_RO_AFTER_INIT(void) { - unsigned long *ptr = &ro_after_init; + volatile unsigned long *ptr = &ro_after_init; /* * Verify we were written to during init. Since an Oops @@ -102,19 +105,21 @@ pr_info("attempting bad ro_after_init write at %px\n", ptr); *ptr ^= 0xabcd1234; + pr_err("FAIL: survived bad write\n"); } void lkdtm_WRITE_KERN(void) { size_t size; - unsigned char *ptr; + volatile unsigned char *ptr; size = (unsigned long)do_overwritten - (unsigned long)do_nothing; ptr = (unsigned char *)do_overwritten; pr_info("attempting bad %zu byte write at %px\n", size, ptr); - memcpy(ptr, (unsigned char *)do_nothing, size); + memcpy((void *)ptr, (unsigned char *)do_nothing, size); flush_icache_range((unsigned long)ptr, (unsigned long)(ptr + size)); + pr_err("FAIL: survived bad write\n"); do_overwritten(); } @@ -193,9 +198,11 @@ pr_info("attempting bad read at %px\n", ptr); tmp = *ptr; tmp += 0xc0dec0de; + pr_err("FAIL: survived bad read\n"); pr_info("attempting bad write at %px\n", ptr); *ptr = tmp; + pr_err("FAIL: survived bad write\n"); vm_munmap(user_addr, PAGE_SIZE); } @@ -203,19 +210,20 @@ void lkdtm_ACCESS_NULL(void) { unsigned long tmp; - unsigned long *ptr = (unsigned long *)NULL; + volatile unsigned long *ptr = (unsigned long *)NULL; pr_info("attempting bad read at %px\n", ptr); tmp = *ptr; tmp += 0xc0dec0de; + pr_err("FAIL: survived bad read\n"); pr_info("attempting bad write at %px\n", ptr); *ptr = tmp; + pr_err("FAIL: survived bad write\n"); } void __init lkdtm_perms_init(void) { /* Make sure we can write to __ro_after_init values during __init */ ro_after_init |= 0xAA; - } --- linux-5.8.0.orig/drivers/misc/lkdtm/rodata.c +++ linux-5.8.0/drivers/misc/lkdtm/rodata.c @@ -5,7 +5,7 @@ */ #include "lkdtm.h" -void notrace lkdtm_rodata_do_nothing(void) +void noinstr lkdtm_rodata_do_nothing(void) { /* Does nothing. We just want an architecture agnostic "return". */ } --- linux-5.8.0.orig/drivers/misc/lkdtm/usercopy.c +++ linux-5.8.0/drivers/misc/lkdtm/usercopy.c @@ -304,19 +304,22 @@ return; } - pr_info("attempting good copy_to_user from kernel rodata\n"); + pr_info("attempting good copy_to_user from kernel rodata: %px\n", + test_text); if (copy_to_user((void __user *)user_addr, test_text, unconst + sizeof(test_text))) { pr_warn("copy_to_user failed unexpectedly?!\n"); goto free_user; } - pr_info("attempting bad copy_to_user from kernel text\n"); + pr_info("attempting bad copy_to_user from kernel text: %px\n", + vm_mmap); if (copy_to_user((void __user *)user_addr, vm_mmap, unconst + PAGE_SIZE)) { pr_warn("copy_to_user failed, but lacked Oops\n"); goto free_user; } + pr_err("FAIL: survived bad copy_to_user()\n"); free_user: vm_munmap(user_addr, PAGE_SIZE); --- linux-5.8.0.orig/drivers/misc/mei/client.h +++ linux-5.8.0/drivers/misc/mei/client.h @@ -164,11 +164,11 @@ * * @cl: host client * - * Return: mtu + * Return: mtu or 0 if client is not connected */ static inline size_t mei_cl_mtu(const struct mei_cl *cl) { - return cl->me_cl->props.max_msg_length; + return cl->me_cl ? cl->me_cl->props.max_msg_length : 0; } /** --- linux-5.8.0.orig/drivers/misc/mei/hbm.c +++ linux-5.8.0/drivers/misc/mei/hbm.c @@ -1300,7 +1300,7 @@ return -EPROTO; } - dev->dev_state = MEI_DEV_POWER_DOWN; + mei_set_devstate(dev, MEI_DEV_POWER_DOWN); dev_info(dev->dev, "hbm: stop response: resetting.\n"); /* force the reset */ return -EPROTO; --- linux-5.8.0.orig/drivers/misc/mei/hw-me-regs.h +++ linux-5.8.0/drivers/misc/mei/hw-me-regs.h @@ -99,6 +99,11 @@ #define MEI_DEV_ID_MCC 0x4B70 /* Mule Creek Canyon (EHL) */ #define MEI_DEV_ID_MCC_4 0x4B75 /* Mule Creek Canyon 4 (EHL) */ +#define MEI_DEV_ID_EBG 0x1BE0 /* Emmitsburg WS */ + +#define MEI_DEV_ID_ADP_S 0x7AE8 /* Alder Lake Point S */ +#define MEI_DEV_ID_ADP_LP 0x7A60 /* Alder Lake Point LP */ + /* * MEI HW Section */ --- linux-5.8.0.orig/drivers/misc/mei/pci-me.c +++ linux-5.8.0/drivers/misc/mei/pci-me.c @@ -23,6 +23,9 @@ #include "hw-me-regs.h" #include "hw-me.h" +static bool disable_msi; +module_param(disable_msi, bool, 0); + /* mei_pci_tbl - PCI Device ID Table */ static const struct pci_device_id mei_me_pci_tbl[] = { {MEI_PCI_DEVICE(MEI_DEV_ID_82946GZ, MEI_ME_ICH_CFG)}, @@ -105,6 +108,11 @@ {MEI_PCI_DEVICE(MEI_DEV_ID_CDF, MEI_ME_PCH8_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_EBG, MEI_ME_PCH15_SPS_CFG)}, + + {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_S, MEI_ME_PCH15_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_LP, MEI_ME_PCH15_CFG)}, + /* required last entry */ {0, } }; @@ -206,7 +214,8 @@ hw->mem_addr = pcim_iomap_table(pdev)[0]; hw->read_fws = mei_me_read_fws; - pci_enable_msi(pdev); + if (!disable_msi) + pci_enable_msi(pdev); hw->irq = pdev->irq; --- linux-5.8.0.orig/drivers/misc/mic/scif/scif_rma.c +++ linux-5.8.0/drivers/misc/mic/scif/scif_rma.c @@ -1384,6 +1384,8 @@ (prot & SCIF_PROT_WRITE) ? FOLL_WRITE : 0, pinned_pages->pages); if (nr_pages != pinned_pages->nr_pages) { + if (pinned_pages->nr_pages < 0) + pinned_pages->nr_pages = 0; if (try_upgrade) { if (ulimit) __scif_dec_pinned_vm_lock(mm, nr_pages); @@ -1400,7 +1402,6 @@ if (pinned_pages->nr_pages < nr_pages) { err = -EFAULT; - pinned_pages->nr_pages = nr_pages; goto dec_pinned; } @@ -1413,7 +1414,6 @@ __scif_dec_pinned_vm_lock(mm, nr_pages); /* Something went wrong! Rollback */ error_unmap: - pinned_pages->nr_pages = nr_pages; scif_destroy_pinned_pages(pinned_pages); *pages = NULL; dev_dbg(scif_info.mdev.this_device, --- linux-5.8.0.orig/drivers/misc/mic/vop/vop_main.c +++ linux-5.8.0/drivers/misc/mic/vop/vop_main.c @@ -320,7 +320,7 @@ /* First assign the vring's allocated in host memory */ vqconfig = _vop_vq_config(vdev->desc) + index; memcpy_fromio(&config, vqconfig, sizeof(config)); - _vr_size = vring_size(le16_to_cpu(config.num), MIC_VIRTIO_RING_ALIGN); + _vr_size = round_up(vring_size(le16_to_cpu(config.num), MIC_VIRTIO_RING_ALIGN), 4); vr_size = PAGE_ALIGN(_vr_size + sizeof(struct _mic_vring_info)); va = vpdev->hw_ops->remap(vpdev, le64_to_cpu(config.address), vr_size); if (!va) --- linux-5.8.0.orig/drivers/misc/mic/vop/vop_vringh.c +++ linux-5.8.0/drivers/misc/mic/vop/vop_vringh.c @@ -296,7 +296,7 @@ num = le16_to_cpu(vqconfig[i].num); mutex_init(&vvr->vr_mutex); - vr_size = PAGE_ALIGN(vring_size(num, MIC_VIRTIO_RING_ALIGN) + + vr_size = PAGE_ALIGN(round_up(vring_size(num, MIC_VIRTIO_RING_ALIGN), 4) + sizeof(struct _mic_vring_info)); vr->va = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, @@ -308,7 +308,7 @@ goto err; } vr->len = vr_size; - vr->info = vr->va + vring_size(num, MIC_VIRTIO_RING_ALIGN); + vr->info = vr->va + round_up(vring_size(num, MIC_VIRTIO_RING_ALIGN), 4); vr->info->magic = cpu_to_le32(MIC_MAGIC + vdev->virtio_id + i); vr_addr = dma_map_single(&vpdev->dev, vr->va, vr_size, DMA_BIDIRECTIONAL); @@ -602,6 +602,7 @@ size_t partlen; bool dma = VOP_USE_DMA && vi->dma_ch; int err = 0; + size_t offset = 0; if (dma) { dma_alignment = 1 << vi->dma_ch->device->copy_align; @@ -655,13 +656,20 @@ * We are copying to IO below and should ideally use something * like copy_from_user_toio(..) if it existed. */ - if (copy_from_user((void __force *)dbuf, ubuf, len)) { - err = -EFAULT; - dev_err(vop_dev(vdev), "%s %d err %d\n", - __func__, __LINE__, err); - goto err; + while (len) { + partlen = min_t(size_t, len, VOP_INT_DMA_BUF_SIZE); + + if (copy_from_user(vvr->buf, ubuf + offset, partlen)) { + err = -EFAULT; + dev_err(vop_dev(vdev), "%s %d err %d\n", + __func__, __LINE__, err); + goto err; + } + memcpy_toio(dbuf + offset, vvr->buf, partlen); + offset += partlen; + vdev->out_bytes += partlen; + len -= partlen; } - vdev->out_bytes += len; err = 0; err: vpdev->hw_ops->unmap(vpdev, dbuf); --- linux-5.8.0.orig/drivers/misc/ocxl/Kconfig +++ linux-5.8.0/drivers/misc/ocxl/Kconfig @@ -9,9 +9,8 @@ config OCXL tristate "OpenCAPI coherent accelerator support" - depends on PPC_POWERNV && PCI && EEH + depends on PPC_POWERNV && PCI && EEH && HOTPLUG_PCI_POWERNV select OCXL_BASE - select HOTPLUG_PCI_POWERNV default m help Select this option to enable the ocxl driver for Open --- linux-5.8.0.orig/drivers/misc/pci_endpoint_test.c +++ linux-5.8.0/drivers/misc/pci_endpoint_test.c @@ -806,8 +806,10 @@ pci_set_master(pdev); - if (!pci_endpoint_test_alloc_irq_vectors(test, irq_type)) + if (!pci_endpoint_test_alloc_irq_vectors(test, irq_type)) { + err = -EINVAL; goto err_disable_irq; + } for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) { if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { @@ -844,8 +846,10 @@ goto err_ida_remove; } - if (!pci_endpoint_test_request_irq(test)) + if (!pci_endpoint_test_request_irq(test)) { + err = -EINVAL; goto err_kfree_test_name; + } misc_device = &test->miscdev; misc_device->minor = MISC_DYNAMIC_MINOR; --- linux-5.8.0.orig/drivers/misc/pvpanic.c +++ linux-5.8.0/drivers/misc/pvpanic.c @@ -172,6 +172,7 @@ { .compatible = "qemu,pvpanic-mmio", }, {} }; +MODULE_DEVICE_TABLE(of, pvpanic_mmio_match); static struct platform_driver pvpanic_mmio_driver = { .driver = { --- linux-5.8.0.orig/drivers/misc/vmw_vmci/vmci_context.c +++ linux-5.8.0/drivers/misc/vmw_vmci/vmci_context.c @@ -743,7 +743,7 @@ return VMCI_ERROR_MORE_DATA; } - dbells = kmalloc(data_size, GFP_ATOMIC); + dbells = kzalloc(data_size, GFP_ATOMIC); if (!dbells) return VMCI_ERROR_NO_MEM; --- linux-5.8.0.orig/drivers/misc/vmw_vmci/vmci_queue_pair.c +++ linux-5.8.0/drivers/misc/vmw_vmci/vmci_queue_pair.c @@ -537,6 +537,9 @@ queue_page_size = num_pages * sizeof(*queue->kernel_if->u.h.page); + if (queue_size + queue_page_size > KMALLOC_MAX_SIZE) + return NULL; + queue = kzalloc(queue_size + queue_page_size, GFP_KERNEL); if (queue) { queue->q_header = NULL; @@ -630,7 +633,7 @@ for (i = 0; i < num_pages; i++) { if (dirty) - set_page_dirty(pages[i]); + set_page_dirty_lock(pages[i]); put_page(pages[i]); pages[i] = NULL; @@ -657,8 +660,9 @@ if (retval < (int)produce_q->kernel_if->num_pages) { pr_debug("get_user_pages_fast(produce) failed (retval=%d)", retval); - qp_release_pages(produce_q->kernel_if->u.h.header_page, - retval, false); + if (retval > 0) + qp_release_pages(produce_q->kernel_if->u.h.header_page, + retval, false); err = VMCI_ERROR_NO_MEM; goto out; } @@ -670,8 +674,9 @@ if (retval < (int)consume_q->kernel_if->num_pages) { pr_debug("get_user_pages_fast(consume) failed (retval=%d)", retval); - qp_release_pages(consume_q->kernel_if->u.h.header_page, - retval, false); + if (retval > 0) + qp_release_pages(consume_q->kernel_if->u.h.header_page, + retval, false); qp_release_pages(produce_q->kernel_if->u.h.header_page, produce_q->kernel_if->num_pages, false); err = VMCI_ERROR_NO_MEM; --- linux-5.8.0.orig/drivers/mmc/core/block.c +++ linux-5.8.0/drivers/mmc/core/block.c @@ -583,7 +583,7 @@ memcpy(&(idata->ic.response), cmd.resp, sizeof(cmd.resp)); - if (idata->rpmb || (cmd.flags & MMC_RSP_R1B)) { + if (idata->rpmb || (cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) { /* * Ensure RPMB/R1B command has completed by polling CMD13 * "Send Status". --- linux-5.8.0.orig/drivers/mmc/core/bus.c +++ linux-5.8.0/drivers/mmc/core/bus.c @@ -387,11 +387,6 @@ mmc_remove_card_debugfs(card); #endif - if (host->cqe_enabled) { - host->cqe_ops->cqe_disable(host); - host->cqe_enabled = false; - } - if (mmc_card_present(card)) { if (mmc_host_is_spi(card->host)) { pr_info("%s: SPI card removed\n", @@ -404,6 +399,10 @@ of_node_put(card->dev.of_node); } + if (host->cqe_enabled) { + host->cqe_ops->cqe_disable(host); + host->cqe_enabled = false; + } + put_device(&card->dev); } - --- linux-5.8.0.orig/drivers/mmc/core/mmc.c +++ linux-5.8.0/drivers/mmc/core/mmc.c @@ -423,10 +423,6 @@ /* EXT_CSD value is in units of 10ms, but we store in ms */ card->ext_csd.part_time = 10 * ext_csd[EXT_CSD_PART_SWITCH_TIME]; - /* Some eMMC set the value too low so set a minimum */ - if (card->ext_csd.part_time && - card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME) - card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME; /* Sleep / awake timeout in 100ns units */ if (sa_shift > 0 && sa_shift <= 0x17) @@ -616,6 +612,17 @@ card->ext_csd.data_sector_size = 512; } + /* + * GENERIC_CMD6_TIME is to be used "unless a specific timeout is defined + * when accessing a specific field", so use it here if there is no + * PARTITION_SWITCH_TIME. + */ + if (!card->ext_csd.part_time) + card->ext_csd.part_time = card->ext_csd.generic_cmd6_time; + /* Some eMMC set the value too low so set a minimum */ + if (card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME) + card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME; + /* eMMC v5 or later */ if (card->ext_csd.rev >= 7) { memcpy(card->ext_csd.fwrev, &ext_csd[EXT_CSD_FIRMWARE_VERSION], --- linux-5.8.0.orig/drivers/mmc/core/queue.c +++ linux-5.8.0/drivers/mmc/core/queue.c @@ -190,7 +190,7 @@ q->limits.discard_granularity = card->pref_erase << 9; /* granularity must not be greater than max. discard */ if (card->pref_erase > max_discard) - q->limits.discard_granularity = 0; + q->limits.discard_granularity = SECTOR_SIZE; if (mmc_can_secure_erase_trim(card)) blk_queue_flag_set(QUEUE_FLAG_SECERASE, q); } @@ -384,8 +384,10 @@ "merging was advertised but not possible"); blk_queue_max_segments(mq->queue, mmc_get_max_segments(host)); - if (mmc_card_mmc(card)) + if (mmc_card_mmc(card) && card->ext_csd.data_sector_size) { block_size = card->ext_csd.data_sector_size; + WARN_ON(block_size != 512 && block_size != 4096); + } blk_queue_logical_block_size(mq->queue, block_size); /* --- linux-5.8.0.orig/drivers/mmc/core/sdio_cis.c +++ linux-5.8.0/drivers/mmc/core/sdio_cis.c @@ -20,12 +20,17 @@ #include "sdio_cis.h" #include "sdio_ops.h" +#define SDIO_READ_CIS_TIMEOUT_MS (10 * 1000) /* 10s */ + static int cistpl_vers_1(struct mmc_card *card, struct sdio_func *func, const unsigned char *buf, unsigned size) { unsigned i, nr_strings; char **buffer, *string; + if (size < 2) + return 0; + /* Find all null-terminated (including zero length) strings in the TPLLV1_INFO field. Trailing garbage is ignored. */ buf += 2; @@ -263,6 +268,8 @@ do { unsigned char tpl_code, tpl_link; + unsigned long timeout = jiffies + + msecs_to_jiffies(SDIO_READ_CIS_TIMEOUT_MS); ret = mmc_io_rw_direct(card, 0, 0, ptr++, 0, &tpl_code); if (ret) @@ -315,6 +322,8 @@ prev = &this->next; if (ret == -ENOENT) { + if (time_after(jiffies, timeout)) + break; /* warn about unknown tuples */ pr_warn_ratelimited("%s: queuing unknown" " CIS tuple 0x%02x (%u bytes)\n", --- linux-5.8.0.orig/drivers/mmc/core/sdio_ops.c +++ linux-5.8.0/drivers/mmc/core/sdio_ops.c @@ -121,6 +121,7 @@ struct sg_table sgtable; unsigned int nents, left_size, i; unsigned int seg_size = card->host->max_seg_size; + int err; WARN_ON(blksz == 0); @@ -170,28 +171,32 @@ mmc_set_data_timeout(&data, card); - mmc_wait_for_req(card->host, &mrq); + mmc_pre_req(card->host, &mrq); - if (nents > 1) - sg_free_table(&sgtable); + mmc_wait_for_req(card->host, &mrq); if (cmd.error) - return cmd.error; - if (data.error) - return data.error; - - if (mmc_host_is_spi(card->host)) { + err = cmd.error; + else if (data.error) + err = data.error; + else if (mmc_host_is_spi(card->host)) /* host driver already reported errors */ - } else { - if (cmd.resp[0] & R5_ERROR) - return -EIO; - if (cmd.resp[0] & R5_FUNCTION_NUMBER) - return -EINVAL; - if (cmd.resp[0] & R5_OUT_OF_RANGE) - return -ERANGE; - } + err = 0; + else if (cmd.resp[0] & R5_ERROR) + err = -EIO; + else if (cmd.resp[0] & R5_FUNCTION_NUMBER) + err = -EINVAL; + else if (cmd.resp[0] & R5_OUT_OF_RANGE) + err = -ERANGE; + else + err = 0; + + mmc_post_req(card->host, &mrq, err); + + if (nents > 1) + sg_free_table(&sgtable); - return 0; + return err; } int sdio_reset(struct mmc_host *host) --- linux-5.8.0.orig/drivers/mmc/host/mmci.c +++ linux-5.8.0/drivers/mmc/host/mmci.c @@ -1239,7 +1239,11 @@ if (!cmd->busy_timeout) cmd->busy_timeout = 10 * MSEC_PER_SEC; - clks = (unsigned long long)cmd->busy_timeout * host->cclk; + if (cmd->busy_timeout > host->mmc->max_busy_timeout) + clks = (unsigned long long)host->mmc->max_busy_timeout * host->cclk; + else + clks = (unsigned long long)cmd->busy_timeout * host->cclk; + do_div(clks, MSEC_PER_SEC); writel_relaxed(clks, host->base + MMCIDATATIMER); } @@ -2089,6 +2093,10 @@ mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY; } + /* Variants with mandatory busy timeout in HW needs R1B responses. */ + if (variant->busy_timeout) + mmc->caps |= MMC_CAP_NEED_RSP_BUSY; + /* Prepare a CMD12 - needed to clear the DPSM on some variants. */ host->stop_abort.opcode = MMC_STOP_TRANSMISSION; host->stop_abort.arg = 0; --- linux-5.8.0.orig/drivers/mmc/host/mtk-sd.c +++ linux-5.8.0/drivers/mmc/host/mtk-sd.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -414,6 +415,7 @@ struct pinctrl_state *pins_uhs; struct delayed_work req_timeout; int irq; /* host interrupt */ + struct reset_control *reset; struct clk *src_clk; /* msdc source clock */ struct clk *h_clk; /* msdc h_clk */ @@ -438,7 +440,7 @@ static const struct mtk_mmc_compatible mt8135_compat = { .clk_div_bits = 8, - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg = MSDC_PAD_TUNE, .async_fifo = false, @@ -477,7 +479,7 @@ static const struct mtk_mmc_compatible mt2701_compat = { .clk_div_bits = 12, - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg = MSDC_PAD_TUNE0, .async_fifo = true, @@ -503,7 +505,7 @@ static const struct mtk_mmc_compatible mt7622_compat = { .clk_div_bits = 12, - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg = MSDC_PAD_TUNE0, .async_fifo = true, @@ -516,7 +518,7 @@ static const struct mtk_mmc_compatible mt8516_compat = { .clk_div_bits = 12, - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg = MSDC_PAD_TUNE0, .async_fifo = true, @@ -527,7 +529,7 @@ static const struct mtk_mmc_compatible mt7620_compat = { .clk_div_bits = 8, - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg = MSDC_PAD_TUNE, .async_fifo = false, @@ -1055,13 +1057,13 @@ static void msdc_request_done(struct msdc_host *host, struct mmc_request *mrq) { unsigned long flags; - bool ret; - ret = cancel_delayed_work(&host->req_timeout); - if (!ret) { - /* delay work already running */ - return; - } + /* + * No need check the return value of cancel_delayed_work, as only ONE + * path will go here! + */ + cancel_delayed_work(&host->req_timeout); + spin_lock_irqsave(&host->lock, flags); host->mrq = NULL; spin_unlock_irqrestore(&host->lock, flags); @@ -1083,7 +1085,7 @@ bool done = false; bool sbc_error; unsigned long flags; - u32 *rsp = cmd->resp; + u32 *rsp; if (mrq->sbc && cmd == mrq->cmd && (events & (MSDC_INT_ACMDRDY | MSDC_INT_ACMDCRCERR @@ -1104,6 +1106,7 @@ if (done) return true; + rsp = cmd->resp; sdr_clr_bits(host->base + MSDC_INTEN, cmd_ints_mask); @@ -1291,7 +1294,7 @@ static bool msdc_data_xfer_done(struct msdc_host *host, u32 events, struct mmc_request *mrq, struct mmc_data *data) { - struct mmc_command *stop = data->stop; + struct mmc_command *stop; unsigned long flags; bool done; unsigned int check_data = events & @@ -1307,6 +1310,7 @@ if (done) return true; + stop = data->stop; if (check_data || (stop && stop->error)) { dev_dbg(host->dev, "DMA status: 0x%8X\n", @@ -1516,6 +1520,12 @@ u32 val; u32 tune_reg = host->dev_comp->pad_tune_reg; + if (host->reset) { + reset_control_assert(host->reset); + usleep_range(10, 50); + reset_control_deassert(host->reset); + } + /* Configure to MMC/SD mode, clock free running */ sdr_set_bits(host->base + MSDC_CFG, MSDC_CFG_MODE | MSDC_CFG_CKPDN); @@ -2273,6 +2283,11 @@ if (IS_ERR(host->src_clk_cg)) host->src_clk_cg = NULL; + host->reset = devm_reset_control_get_optional_exclusive(&pdev->dev, + "hrst"); + if (IS_ERR(host->reset)) + return PTR_ERR(host->reset); + host->irq = platform_get_irq(pdev, 0); if (host->irq < 0) { ret = -EINVAL; --- linux-5.8.0.orig/drivers/mmc/host/mxs-mmc.c +++ linux-5.8.0/drivers/mmc/host/mxs-mmc.c @@ -643,7 +643,7 @@ ret = mmc_of_parse(mmc); if (ret) - goto out_clk_disable; + goto out_free_dma; mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; --- linux-5.8.0.orig/drivers/mmc/host/owl-mmc.c +++ linux-5.8.0/drivers/mmc/host/owl-mmc.c @@ -641,7 +641,7 @@ owl_host->irq = platform_get_irq(pdev, 0); if (owl_host->irq < 0) { ret = -EINVAL; - goto err_free_host; + goto err_release_channel; } ret = devm_request_irq(&pdev->dev, owl_host->irq, owl_irq_handler, @@ -649,19 +649,21 @@ if (ret) { dev_err(&pdev->dev, "Failed to request irq %d\n", owl_host->irq); - goto err_free_host; + goto err_release_channel; } ret = mmc_add_host(mmc); if (ret) { dev_err(&pdev->dev, "Failed to add host\n"); - goto err_free_host; + goto err_release_channel; } dev_dbg(&pdev->dev, "Owl MMC Controller Initialized\n"); return 0; +err_release_channel: + dma_release_channel(owl_host->dma); err_free_host: mmc_free_host(mmc); @@ -675,6 +677,7 @@ mmc_remove_host(mmc); disable_irq(owl_host->irq); + dma_release_channel(owl_host->dma); mmc_free_host(mmc); return 0; --- linux-5.8.0.orig/drivers/mmc/host/pxamci.c +++ linux-5.8.0/drivers/mmc/host/pxamci.c @@ -731,6 +731,7 @@ host->power = devm_gpiod_get_optional(dev, "power", GPIOD_OUT_LOW); if (IS_ERR(host->power)) { + ret = PTR_ERR(host->power); dev_err(dev, "Failed requesting gpio_power\n"); goto out; } --- linux-5.8.0.orig/drivers/mmc/host/renesas_sdhi_core.c +++ linux-5.8.0/drivers/mmc/host/renesas_sdhi_core.c @@ -997,6 +997,7 @@ tmio_mmc_host_remove(host); renesas_sdhi_clk_disable(host); + tmio_mmc_host_free(host); return 0; } --- linux-5.8.0.orig/drivers/mmc/host/renesas_sdhi_internal_dmac.c +++ linux-5.8.0/drivers/mmc/host/renesas_sdhi_internal_dmac.c @@ -186,8 +186,8 @@ mmc_get_dma_dir(data))) goto force_pio; - /* This DMAC cannot handle if buffer is not 8-bytes alignment */ - if (!IS_ALIGNED(sg_dma_address(sg), 8)) + /* This DMAC cannot handle if buffer is not 128-bytes alignment */ + if (!IS_ALIGNED(sg_dma_address(sg), 128)) goto force_pio_with_unmap; if (data->flags & MMC_DATA_READ) { @@ -229,15 +229,12 @@ DTRAN_CTRL_DM_START); } -static void renesas_sdhi_internal_dmac_complete_tasklet_fn(unsigned long arg) +static bool renesas_sdhi_internal_dmac_complete(struct tmio_mmc_host *host) { - struct tmio_mmc_host *host = (struct tmio_mmc_host *)arg; enum dma_data_direction dir; - spin_lock_irq(&host->lock); - if (!host->data) - goto out; + return false; if (host->data->flags & MMC_DATA_READ) dir = DMA_FROM_DEVICE; @@ -250,6 +247,17 @@ if (dir == DMA_FROM_DEVICE) clear_bit(SDHI_INTERNAL_DMAC_RX_IN_USE, &global_flags); + return true; +} + +static void renesas_sdhi_internal_dmac_complete_tasklet_fn(unsigned long arg) +{ + struct tmio_mmc_host *host = (struct tmio_mmc_host *)arg; + + spin_lock_irq(&host->lock); + if (!renesas_sdhi_internal_dmac_complete(host)) + goto out; + tmio_mmc_do_data_irq(host); out: spin_unlock_irq(&host->lock); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-acpi.c +++ linux-5.8.0/drivers/mmc/host/sdhci-acpi.c @@ -535,6 +535,11 @@ .caps = MMC_CAP_NONREMOVABLE, }; +struct amd_sdhci_host { + bool tuned_clock; + bool dll_enabled; +}; + /* AMD sdhci reset dll register. */ #define SDHCI_AMD_RESET_DLL_REGISTER 0x908 @@ -545,39 +550,96 @@ return MMC_SET_DRIVER_TYPE_A; } -static void sdhci_acpi_amd_hs400_dll(struct sdhci_host *host) +static void sdhci_acpi_amd_hs400_dll(struct sdhci_host *host, bool enable) { + struct sdhci_acpi_host *acpi_host = sdhci_priv(host); + struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host); + /* AMD Platform requires dll setting */ sdhci_writel(host, 0x40003210, SDHCI_AMD_RESET_DLL_REGISTER); usleep_range(10, 20); - sdhci_writel(host, 0x40033210, SDHCI_AMD_RESET_DLL_REGISTER); + if (enable) + sdhci_writel(host, 0x40033210, SDHCI_AMD_RESET_DLL_REGISTER); + + amd_host->dll_enabled = enable; } /* - * For AMD Platform it is required to disable the tuning - * bit first controller to bring to HS Mode from HS200 - * mode, later enable to tune to HS400 mode. + * The initialization sequence for HS400 is: + * HS->HS200->Perform Tuning->HS->HS400 + * + * The re-tuning sequence is: + * HS400->DDR52->HS->HS200->Perform Tuning->HS->HS400 + * + * The AMD eMMC Controller can only use the tuned clock while in HS200 and HS400 + * mode. If we switch to a different mode, we need to disable the tuned clock. + * If we have previously performed tuning and switch back to HS200 or + * HS400, we can re-enable the tuned clock. + * */ static void amd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) { struct sdhci_host *host = mmc_priv(mmc); + struct sdhci_acpi_host *acpi_host = sdhci_priv(host); + struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host); unsigned int old_timing = host->timing; + u16 val; sdhci_set_ios(mmc, ios); - if (old_timing == MMC_TIMING_MMC_HS200 && - ios->timing == MMC_TIMING_MMC_HS) - sdhci_writew(host, 0x9, SDHCI_HOST_CONTROL2); - if (old_timing != MMC_TIMING_MMC_HS400 && - ios->timing == MMC_TIMING_MMC_HS400) { - sdhci_writew(host, 0x80, SDHCI_HOST_CONTROL2); - sdhci_acpi_amd_hs400_dll(host); + + if (old_timing != host->timing && amd_host->tuned_clock) { + if (host->timing == MMC_TIMING_MMC_HS400 || + host->timing == MMC_TIMING_MMC_HS200) { + val = sdhci_readw(host, SDHCI_HOST_CONTROL2); + val |= SDHCI_CTRL_TUNED_CLK; + sdhci_writew(host, val, SDHCI_HOST_CONTROL2); + } else { + val = sdhci_readw(host, SDHCI_HOST_CONTROL2); + val &= ~SDHCI_CTRL_TUNED_CLK; + sdhci_writew(host, val, SDHCI_HOST_CONTROL2); + } + + /* DLL is only required for HS400 */ + if (host->timing == MMC_TIMING_MMC_HS400 && + !amd_host->dll_enabled) + sdhci_acpi_amd_hs400_dll(host, true); + } +} + +static int amd_sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) +{ + int err; + struct sdhci_host *host = mmc_priv(mmc); + struct sdhci_acpi_host *acpi_host = sdhci_priv(host); + struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host); + + amd_host->tuned_clock = false; + + err = sdhci_execute_tuning(mmc, opcode); + + if (!err && !host->tuning_err) + amd_host->tuned_clock = true; + + return err; +} + +static void amd_sdhci_reset(struct sdhci_host *host, u8 mask) +{ + struct sdhci_acpi_host *acpi_host = sdhci_priv(host); + struct amd_sdhci_host *amd_host = sdhci_acpi_priv(acpi_host); + + if (mask & SDHCI_RESET_ALL) { + amd_host->tuned_clock = false; + sdhci_acpi_amd_hs400_dll(host, false); } + + sdhci_reset(host, mask); } static const struct sdhci_ops sdhci_acpi_ops_amd = { .set_clock = sdhci_set_clock, .set_bus_width = sdhci_set_bus_width, - .reset = sdhci_reset, + .reset = amd_sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, }; @@ -599,8 +661,46 @@ (host->mmc->caps & MMC_CAP_1_8V_DDR)) host->mmc->caps2 = MMC_CAP2_HS400_1_8V; + /* + * There are two types of presets out in the wild: + * 1) Default/broken presets. + * These presets have two sets of problems: + * a) The clock divisor for SDR12, SDR25, and SDR50 is too small. + * This results in clock frequencies that are 2x higher than + * acceptable. i.e., SDR12 = 25 MHz, SDR25 = 50 MHz, SDR50 = + * 100 MHz.x + * b) The HS200 and HS400 driver strengths don't match. + * By default, the SDR104 preset register has a driver strength of + * A, but the (internal) HS400 preset register has a driver + * strength of B. As part of initializing HS400, HS200 tuning + * needs to be performed. Having different driver strengths + * between tuning and operation is wrong. It results in different + * rise/fall times that lead to incorrect sampling. + * 2) Firmware with properly initialized presets. + * These presets have proper clock divisors. i.e., SDR12 => 12MHz, + * SDR25 => 25 MHz, SDR50 => 50 MHz. Additionally the HS200 and + * HS400 preset driver strengths match. + * + * Enabling presets for HS400 doesn't work for the following reasons: + * 1) sdhci_set_ios has a hard coded list of timings that are used + * to determine if presets should be enabled. + * 2) sdhci_get_preset_value is using a non-standard register to + * read out HS400 presets. The AMD controller doesn't support this + * non-standard register. In fact, it doesn't expose the HS400 + * preset register anywhere in the SDHCI memory map. This results + * in reading a garbage value and using the wrong presets. + * + * Since HS400 and HS200 presets must be identical, we could + * instead use the the SDR104 preset register. + * + * If the above issues are resolved we could remove this quirk for + * firmware that that has valid presets (i.e., SDR12 <= 12 MHz). + */ + host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; + host->mmc_host_ops.select_drive_strength = amd_select_drive_strength; host->mmc_host_ops.set_ios = amd_set_ios; + host->mmc_host_ops.execute_tuning = amd_sdhci_execute_tuning; return 0; } @@ -612,6 +712,7 @@ SDHCI_QUIRK_32BIT_ADMA_SIZE, .quirks2 = SDHCI_QUIRK2_BROKEN_64_BIT_DMA, .probe_slot = sdhci_acpi_emmc_amd_probe_slot, + .priv_size = sizeof(struct amd_sdhci_host), }; struct sdhci_acpi_uid_slot { --- linux-5.8.0.orig/drivers/mmc/host/sdhci-brcmstb.c +++ linux-5.8.0/drivers/mmc/host/sdhci-brcmstb.c @@ -316,11 +316,7 @@ static void sdhci_brcmstb_shutdown(struct platform_device *pdev) { - int ret; - - ret = sdhci_pltfm_unregister(pdev); - if (ret) - dev_err(&pdev->dev, "failed to shutdown\n"); + sdhci_pltfm_suspend(&pdev->dev); } MODULE_DEVICE_TABLE(of, sdhci_brcm_of_match); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-cadence.c +++ linux-5.8.0/drivers/mmc/host/sdhci-cadence.c @@ -202,57 +202,6 @@ return FIELD_GET(SDHCI_CDNS_HRS06_MODE, tmp); } -static void sdhci_cdns_set_uhs_signaling(struct sdhci_host *host, - unsigned int timing) -{ - struct sdhci_cdns_priv *priv = sdhci_cdns_priv(host); - u32 mode; - - switch (timing) { - case MMC_TIMING_MMC_HS: - mode = SDHCI_CDNS_HRS06_MODE_MMC_SDR; - break; - case MMC_TIMING_MMC_DDR52: - mode = SDHCI_CDNS_HRS06_MODE_MMC_DDR; - break; - case MMC_TIMING_MMC_HS200: - mode = SDHCI_CDNS_HRS06_MODE_MMC_HS200; - break; - case MMC_TIMING_MMC_HS400: - if (priv->enhanced_strobe) - mode = SDHCI_CDNS_HRS06_MODE_MMC_HS400ES; - else - mode = SDHCI_CDNS_HRS06_MODE_MMC_HS400; - break; - default: - mode = SDHCI_CDNS_HRS06_MODE_SD; - break; - } - - sdhci_cdns_set_emmc_mode(priv, mode); - - /* For SD, fall back to the default handler */ - if (mode == SDHCI_CDNS_HRS06_MODE_SD) - sdhci_set_uhs_signaling(host, timing); -} - -static const struct sdhci_ops sdhci_cdns_ops = { - .set_clock = sdhci_set_clock, - .get_timeout_clock = sdhci_cdns_get_timeout_clock, - .set_bus_width = sdhci_set_bus_width, - .reset = sdhci_reset, - .set_uhs_signaling = sdhci_cdns_set_uhs_signaling, -}; - -static const struct sdhci_pltfm_data sdhci_cdns_uniphier_pltfm_data = { - .ops = &sdhci_cdns_ops, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, -}; - -static const struct sdhci_pltfm_data sdhci_cdns_pltfm_data = { - .ops = &sdhci_cdns_ops, -}; - static int sdhci_cdns_set_tune_val(struct sdhci_host *host, unsigned int val) { struct sdhci_cdns_priv *priv = sdhci_cdns_priv(host); @@ -286,23 +235,24 @@ return 0; } -static int sdhci_cdns_execute_tuning(struct mmc_host *mmc, u32 opcode) +/* + * In SD mode, software must not use the hardware tuning and instead perform + * an almost identical procedure to eMMC. + */ +static int sdhci_cdns_execute_tuning(struct sdhci_host *host, u32 opcode) { - struct sdhci_host *host = mmc_priv(mmc); int cur_streak = 0; int max_streak = 0; int end_of_streak = 0; int i; /* - * This handler only implements the eMMC tuning that is specific to - * this controller. Fall back to the standard method for SD timing. + * Do not execute tuning for UHS_SDR50 or UHS_DDR50. + * The delay is set by probe, based on the DT properties. */ - if (host->timing != MMC_TIMING_MMC_HS200) - return sdhci_execute_tuning(mmc, opcode); - - if (WARN_ON(opcode != MMC_SEND_TUNING_BLOCK_HS200)) - return -EINVAL; + if (host->timing != MMC_TIMING_MMC_HS200 && + host->timing != MMC_TIMING_UHS_SDR104) + return 0; for (i = 0; i < SDHCI_CDNS_MAX_TUNING_LOOP; i++) { if (sdhci_cdns_set_tune_val(host, i) || @@ -325,6 +275,58 @@ return sdhci_cdns_set_tune_val(host, end_of_streak - max_streak / 2); } +static void sdhci_cdns_set_uhs_signaling(struct sdhci_host *host, + unsigned int timing) +{ + struct sdhci_cdns_priv *priv = sdhci_cdns_priv(host); + u32 mode; + + switch (timing) { + case MMC_TIMING_MMC_HS: + mode = SDHCI_CDNS_HRS06_MODE_MMC_SDR; + break; + case MMC_TIMING_MMC_DDR52: + mode = SDHCI_CDNS_HRS06_MODE_MMC_DDR; + break; + case MMC_TIMING_MMC_HS200: + mode = SDHCI_CDNS_HRS06_MODE_MMC_HS200; + break; + case MMC_TIMING_MMC_HS400: + if (priv->enhanced_strobe) + mode = SDHCI_CDNS_HRS06_MODE_MMC_HS400ES; + else + mode = SDHCI_CDNS_HRS06_MODE_MMC_HS400; + break; + default: + mode = SDHCI_CDNS_HRS06_MODE_SD; + break; + } + + sdhci_cdns_set_emmc_mode(priv, mode); + + /* For SD, fall back to the default handler */ + if (mode == SDHCI_CDNS_HRS06_MODE_SD) + sdhci_set_uhs_signaling(host, timing); +} + +static const struct sdhci_ops sdhci_cdns_ops = { + .set_clock = sdhci_set_clock, + .get_timeout_clock = sdhci_cdns_get_timeout_clock, + .set_bus_width = sdhci_set_bus_width, + .reset = sdhci_reset, + .platform_execute_tuning = sdhci_cdns_execute_tuning, + .set_uhs_signaling = sdhci_cdns_set_uhs_signaling, +}; + +static const struct sdhci_pltfm_data sdhci_cdns_uniphier_pltfm_data = { + .ops = &sdhci_cdns_ops, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, +}; + +static const struct sdhci_pltfm_data sdhci_cdns_pltfm_data = { + .ops = &sdhci_cdns_ops, +}; + static void sdhci_cdns_hs400_enhanced_strobe(struct mmc_host *mmc, struct mmc_ios *ios) { @@ -385,7 +387,6 @@ priv->hrs_addr = host->ioaddr; priv->enhanced_strobe = false; host->ioaddr += SDHCI_CDNS_SRS_BASE; - host->mmc_host_ops.execute_tuning = sdhci_cdns_execute_tuning; host->mmc_host_ops.hs400_enhanced_strobe = sdhci_cdns_hs400_enhanced_strobe; sdhci_enable_v4_mode(host); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-esdhc-imx.c +++ linux-5.8.0/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1705,9 +1705,10 @@ struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); - int dead = (readl(host->ioaddr + SDHCI_INT_STATUS) == 0xffffffff); + int dead; pm_runtime_get_sync(&pdev->dev); + dead = (readl(host->ioaddr + SDHCI_INT_STATUS) == 0xffffffff); pm_runtime_disable(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-esdhc.h +++ linux-5.8.0/drivers/mmc/host/sdhci-esdhc.h @@ -5,6 +5,7 @@ * Copyright (c) 2007 Freescale Semiconductor, Inc. * Copyright (c) 2009 MontaVista Software, Inc. * Copyright (c) 2010 Pengutronix e.K. + * Copyright 2020 NXP * Author: Wolfram Sang */ @@ -88,6 +89,7 @@ /* DLL Config 0 Register */ #define ESDHC_DLLCFG0 0x160 #define ESDHC_DLL_ENABLE 0x80000000 +#define ESDHC_DLL_RESET 0x40000000 #define ESDHC_DLL_FREQ_SEL 0x08000000 /* DLL Config 1 Register */ --- linux-5.8.0.orig/drivers/mmc/host/sdhci-iproc.c +++ linux-5.8.0/drivers/mmc/host/sdhci-iproc.c @@ -294,9 +294,27 @@ }; MODULE_DEVICE_TABLE(of, sdhci_iproc_of_match); +/* + * This is a duplicate of bcm2835_(pltfrm_)data without caps quirks + * which are provided by the ACPI table. + */ +static const struct sdhci_pltfm_data sdhci_bcm_arasan_data = { + .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION | + SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | + SDHCI_QUIRK_NO_HISPD_BIT, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, + .ops = &sdhci_iproc_32only_ops, +}; + +static const struct sdhci_iproc_data bcm_arasan_data = { + .pdata = &sdhci_bcm_arasan_data, +}; + static const struct acpi_device_id sdhci_iproc_acpi_ids[] = { { .id = "BRCM5871", .driver_data = (kernel_ulong_t)&iproc_cygnus_data }, { .id = "BRCM5872", .driver_data = (kernel_ulong_t)&iproc_data }, + { .id = "BCM2847", .driver_data = (kernel_ulong_t)&bcm_arasan_data }, + { .id = "BRCME88C", .driver_data = (kernel_ulong_t)&bcm2711_data }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(acpi, sdhci_iproc_acpi_ids); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-msm.c +++ linux-5.8.0/drivers/mmc/host/sdhci-msm.c @@ -1158,7 +1158,7 @@ static int sdhci_msm_execute_tuning(struct mmc_host *mmc, u32 opcode) { struct sdhci_host *host = mmc_priv(mmc); - int tuning_seq_cnt = 3; + int tuning_seq_cnt = 10; u8 phase, tuned_phases[16], tuned_phase_cnt = 0; int rc; struct mmc_ios ios = host->mmc->ios; @@ -1214,6 +1214,22 @@ } while (++phase < ARRAY_SIZE(tuned_phases)); if (tuned_phase_cnt) { + if (tuned_phase_cnt == ARRAY_SIZE(tuned_phases)) { + /* + * All phases valid is _almost_ as bad as no phases + * valid. Probably all phases are not really reliable + * but we didn't detect where the unreliable place is. + * That means we'll essentially be guessing and hoping + * we get a good phase. Better to try a few times. + */ + dev_dbg(mmc_dev(mmc), "%s: All phases valid; try again\n", + mmc_hostname(mmc)); + if (--tuning_seq_cnt) { + tuned_phase_cnt = 0; + goto retry; + } + } + rc = msm_find_most_appropriate_phase(host, tuned_phases, tuned_phase_cnt); if (rc < 0) --- linux-5.8.0.orig/drivers/mmc/host/sdhci-of-arasan.c +++ linux-5.8.0/drivers/mmc/host/sdhci-of-arasan.c @@ -30,7 +30,10 @@ #define SDHCI_ARASAN_VENDOR_REGISTER 0x78 #define SDHCI_ARASAN_ITAPDLY_REGISTER 0xF0F8 +#define SDHCI_ARASAN_ITAPDLY_SEL_MASK 0xFF + #define SDHCI_ARASAN_OTAPDLY_REGISTER 0xF0FC +#define SDHCI_ARASAN_OTAPDLY_SEL_MASK 0x3F #define SDHCI_ARASAN_CQE_BASE_ADDR 0x200 #define VENDOR_ENHANCED_STROBE BIT(0) @@ -600,14 +603,8 @@ u8 tap_delay, tap_max = 0; int ret; - /* - * This is applicable for SDHCI_SPEC_300 and above - * ZynqMP does not set phase for <=25MHz clock. - * If degrees is zero, no need to do anything. - */ - if (host->version < SDHCI_SPEC_300 || - host->timing == MMC_TIMING_LEGACY || - host->timing == MMC_TIMING_UHS_SDR12 || !degrees) + /* This is applicable for SDHCI_SPEC_300 and above */ + if (host->version < SDHCI_SPEC_300) return 0; switch (host->timing) { @@ -638,6 +635,9 @@ if (ret) pr_err("Error setting Output Tap Delay\n"); + /* Release DLL Reset */ + zynqmp_pm_sd_dll_reset(node_id, PM_DLL_RESET_RELEASE); + return ret; } @@ -668,16 +668,13 @@ u8 tap_delay, tap_max = 0; int ret; - /* - * This is applicable for SDHCI_SPEC_300 and above - * ZynqMP does not set phase for <=25MHz clock. - * If degrees is zero, no need to do anything. - */ - if (host->version < SDHCI_SPEC_300 || - host->timing == MMC_TIMING_LEGACY || - host->timing == MMC_TIMING_UHS_SDR12 || !degrees) + /* This is applicable for SDHCI_SPEC_300 and above */ + if (host->version < SDHCI_SPEC_300) return 0; + /* Assert DLL Reset */ + zynqmp_pm_sd_dll_reset(node_id, PM_DLL_RESET_ASSERT); + switch (host->timing) { case MMC_TIMING_MMC_HS: case MMC_TIMING_SD_HS: @@ -733,14 +730,8 @@ struct sdhci_host *host = sdhci_arasan->host; u8 tap_delay, tap_max = 0; - /* - * This is applicable for SDHCI_SPEC_300 and above - * Versal does not set phase for <=25MHz clock. - * If degrees is zero, no need to do anything. - */ - if (host->version < SDHCI_SPEC_300 || - host->timing == MMC_TIMING_LEGACY || - host->timing == MMC_TIMING_UHS_SDR12 || !degrees) + /* This is applicable for SDHCI_SPEC_300 and above */ + if (host->version < SDHCI_SPEC_300) return 0; switch (host->timing) { @@ -773,6 +764,7 @@ regval = sdhci_readl(host, SDHCI_ARASAN_OTAPDLY_REGISTER); regval |= SDHCI_OTAPDLY_ENABLE; sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER); + regval &= ~SDHCI_ARASAN_OTAPDLY_SEL_MASK; regval |= tap_delay; sdhci_writel(host, regval, SDHCI_ARASAN_OTAPDLY_REGISTER); } @@ -804,14 +796,8 @@ struct sdhci_host *host = sdhci_arasan->host; u8 tap_delay, tap_max = 0; - /* - * This is applicable for SDHCI_SPEC_300 and above - * Versal does not set phase for <=25MHz clock. - * If degrees is zero, no need to do anything. - */ - if (host->version < SDHCI_SPEC_300 || - host->timing == MMC_TIMING_LEGACY || - host->timing == MMC_TIMING_UHS_SDR12 || !degrees) + /* This is applicable for SDHCI_SPEC_300 and above */ + if (host->version < SDHCI_SPEC_300) return 0; switch (host->timing) { @@ -846,6 +832,7 @@ sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER); regval |= SDHCI_ITAPDLY_ENABLE; sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER); + regval &= ~SDHCI_ARASAN_ITAPDLY_SEL_MASK; regval |= tap_delay; sdhci_writel(host, regval, SDHCI_ARASAN_ITAPDLY_REGISTER); regval &= ~SDHCI_ITAPDLY_CHGWIN; @@ -1025,7 +1012,6 @@ static void arasan_dt_parse_clk_phases(struct device *dev, struct sdhci_arasan_clk_data *clk_data) { - int *iclk_phase, *oclk_phase; u32 mio_bank = 0; int i; @@ -1037,28 +1023,32 @@ clk_data->set_clk_delays = sdhci_arasan_set_clk_delays; if (of_device_is_compatible(dev->of_node, "xlnx,zynqmp-8.9a")) { - iclk_phase = (int [MMC_TIMING_MMC_HS400 + 1]) ZYNQMP_ICLK_PHASE; - oclk_phase = (int [MMC_TIMING_MMC_HS400 + 1]) ZYNQMP_OCLK_PHASE; + u32 zynqmp_iclk_phase[MMC_TIMING_MMC_HS400 + 1] = + ZYNQMP_ICLK_PHASE; + u32 zynqmp_oclk_phase[MMC_TIMING_MMC_HS400 + 1] = + ZYNQMP_OCLK_PHASE; of_property_read_u32(dev->of_node, "xlnx,mio-bank", &mio_bank); if (mio_bank == 2) { - oclk_phase[MMC_TIMING_UHS_SDR104] = 90; - oclk_phase[MMC_TIMING_MMC_HS200] = 90; + zynqmp_oclk_phase[MMC_TIMING_UHS_SDR104] = 90; + zynqmp_oclk_phase[MMC_TIMING_MMC_HS200] = 90; } for (i = 0; i <= MMC_TIMING_MMC_HS400; i++) { - clk_data->clk_phase_in[i] = iclk_phase[i]; - clk_data->clk_phase_out[i] = oclk_phase[i]; + clk_data->clk_phase_in[i] = zynqmp_iclk_phase[i]; + clk_data->clk_phase_out[i] = zynqmp_oclk_phase[i]; } } if (of_device_is_compatible(dev->of_node, "xlnx,versal-8.9a")) { - iclk_phase = (int [MMC_TIMING_MMC_HS400 + 1]) VERSAL_ICLK_PHASE; - oclk_phase = (int [MMC_TIMING_MMC_HS400 + 1]) VERSAL_OCLK_PHASE; + u32 versal_iclk_phase[MMC_TIMING_MMC_HS400 + 1] = + VERSAL_ICLK_PHASE; + u32 versal_oclk_phase[MMC_TIMING_MMC_HS400 + 1] = + VERSAL_OCLK_PHASE; for (i = 0; i <= MMC_TIMING_MMC_HS400; i++) { - clk_data->clk_phase_in[i] = iclk_phase[i]; - clk_data->clk_phase_out[i] = oclk_phase[i]; + clk_data->clk_phase_in[i] = versal_iclk_phase[i]; + clk_data->clk_phase_out[i] = versal_oclk_phase[i]; } } @@ -1196,16 +1186,19 @@ static struct sdhci_arasan_of_data intel_keembay_emmc_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_emmc_pdata, + .clk_ops = &arasan_clk_ops, }; static struct sdhci_arasan_of_data intel_keembay_sd_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_sd_pdata, + .clk_ops = &arasan_clk_ops, }; static struct sdhci_arasan_of_data intel_keembay_sdio_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_sdio_pdata, + .clk_ops = &arasan_clk_ops, }; static const struct of_device_id sdhci_arasan_of_match[] = { @@ -1299,6 +1292,8 @@ clk_data->sdcardclk_hw.init = &sdcardclk_init; clk_data->sdcardclk = devm_clk_register(dev, &clk_data->sdcardclk_hw); + if (IS_ERR(clk_data->sdcardclk)) + return PTR_ERR(clk_data->sdcardclk); clk_data->sdcardclk_hw.init = NULL; ret = of_clk_add_provider(np, of_clk_src_simple_get, @@ -1349,6 +1344,8 @@ clk_data->sampleclk_hw.init = &sampleclk_init; clk_data->sampleclk = devm_clk_register(dev, &clk_data->sampleclk_hw); + if (IS_ERR(clk_data->sampleclk)) + return PTR_ERR(clk_data->sampleclk); clk_data->sampleclk_hw.init = NULL; ret = of_clk_add_provider(np, of_clk_src_simple_get, --- linux-5.8.0.orig/drivers/mmc/host/sdhci-of-dwcmshc.c +++ linux-5.8.0/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -16,6 +16,8 @@ #include "sdhci-pltfm.h" +#define SDHCI_DWCMSHC_ARG2_STUFF GENMASK(31, 16) + /* DWCMSHC specific Mode Select value */ #define DWCMSHC_CTRL_HS400 0x7 @@ -49,6 +51,29 @@ sdhci_adma_write_desc(host, desc, addr, len, cmd); } +static void dwcmshc_check_auto_cmd23(struct mmc_host *mmc, + struct mmc_request *mrq) +{ + struct sdhci_host *host = mmc_priv(mmc); + + /* + * No matter V4 is enabled or not, ARGUMENT2 register is 32-bit + * block count register which doesn't support stuff bits of + * CMD23 argument on dwcmsch host controller. + */ + if (mrq->sbc && (mrq->sbc->arg & SDHCI_DWCMSHC_ARG2_STUFF)) + host->flags &= ~SDHCI_AUTO_CMD23; + else + host->flags |= SDHCI_AUTO_CMD23; +} + +static void dwcmshc_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + dwcmshc_check_auto_cmd23(mmc, mrq); + + sdhci_request(mmc, mrq); +} + static void dwcmshc_set_uhs_signaling(struct sdhci_host *host, unsigned int timing) { @@ -87,6 +112,7 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_pdata = { .ops = &sdhci_dwcmshc_ops, .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, }; static int dwcmshc_probe(struct platform_device *pdev) @@ -133,6 +159,8 @@ sdhci_get_of_property(pdev); + host->mmc_host_ops.request = dwcmshc_request; + err = sdhci_add_host(host); if (err) goto err_clk; --- linux-5.8.0.orig/drivers/mmc/host/sdhci-of-esdhc.c +++ linux-5.8.0/drivers/mmc/host/sdhci-of-esdhc.c @@ -4,6 +4,7 @@ * * Copyright (c) 2007, 2010, 2012 Freescale Semiconductor, Inc. * Copyright (c) 2009 MontaVista Software, Inc. + * Copyright 2020 NXP * * Authors: Xiaobo Xie * Anton Vorontsov @@ -19,6 +20,7 @@ #include #include #include +#include #include #include #include "sdhci-pltfm.h" @@ -81,6 +83,7 @@ bool quirk_tuning_erratum_type2; bool quirk_ignore_data_inhibit; bool quirk_delay_before_data_reset; + bool quirk_trans_complete_erratum; bool in_sw_tuning; unsigned int peripheral_clock; const struct esdhc_clk_fixup *clk_fixup; @@ -742,6 +745,21 @@ if (host->mmc->actual_clock == MMC_HS200_MAX_DTR) temp |= ESDHC_DLL_FREQ_SEL; sdhci_writel(host, temp, ESDHC_DLLCFG0); + + temp |= ESDHC_DLL_RESET; + sdhci_writel(host, temp, ESDHC_DLLCFG0); + udelay(1); + temp &= ~ESDHC_DLL_RESET; + sdhci_writel(host, temp, ESDHC_DLLCFG0); + + /* Wait max 20 ms */ + if (read_poll_timeout(sdhci_readl, temp, + temp & ESDHC_DLL_STS_SLV_LOCK, + 10, 20000, false, + host, ESDHC_DLLSTAT0)) + pr_err("%s: timeout for delay chain lock.\n", + mmc_hostname(host->mmc)); + temp = sdhci_readl(host, ESDHC_TBCTL); sdhci_writel(host, temp | ESDHC_HS400_WNDW_ADJUST, ESDHC_TBCTL); @@ -1051,6 +1069,17 @@ esdhc_tuning_block_enable(host, true); + /* + * The eSDHC controller takes the data timeout value into account + * during tuning. If the SD card is too slow sending the response, the + * timer will expire and a "Buffer Read Ready" interrupt without data + * is triggered. This leads to tuning errors. + * + * Just set the timeout to the maximum value because the core will + * already take care of it in sdhci_send_tuning(). + */ + sdhci_writeb(host, 0xe, SDHCI_TIMEOUT_CONTROL); + hs400_tuning = host->flags & SDHCI_HS400_TUNING; do { @@ -1177,10 +1206,11 @@ static u32 esdhc_irq(struct sdhci_host *host, u32 intmask) { + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); u32 command; - if (of_find_compatible_node(NULL, NULL, - "fsl,p2020-esdhc")) { + if (esdhc->quirk_trans_complete_erratum) { command = SDHCI_GET_CMD(sdhci_readw(host, SDHCI_COMMAND)); if (command == MMC_WRITE_MULTIPLE_BLOCK && @@ -1294,6 +1324,8 @@ static struct soc_device_attribute soc_unreliable_pulse_detection[] = { { .family = "QorIQ LX2160A", .revision = "1.0", }, + { .family = "QorIQ LX2160A", .revision = "2.0", }, + { .family = "QorIQ LS1028A", .revision = "1.0", }, { }, }; @@ -1334,8 +1366,10 @@ esdhc->clk_fixup = match->data; np = pdev->dev.of_node; - if (of_device_is_compatible(np, "fsl,p2020-esdhc")) + if (of_device_is_compatible(np, "fsl,p2020-esdhc")) { esdhc->quirk_delay_before_data_reset = true; + esdhc->quirk_trans_complete_erratum = true; + } clk = of_clk_get(np, 0); if (!IS_ERR(clk)) { --- linux-5.8.0.orig/drivers/mmc/host/sdhci-pci-core.c +++ linux-5.8.0/drivers/mmc/host/sdhci-pci-core.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include #include @@ -232,6 +234,14 @@ sdhci_dumpregs(mmc_priv(mmc)); } +static void sdhci_cqhci_reset(struct sdhci_host *host, u8 mask) +{ + if ((host->mmc->caps2 & MMC_CAP2_CQE) && (mask & SDHCI_RESET_ALL) && + host->mmc->cqe_private) + cqhci_deactivate(host->mmc); + sdhci_reset(host, mask); +} + /*****************************************************************************\ * * * Hardware specific quirk handling * @@ -508,6 +518,8 @@ bool rpm_retune_ok; u32 glk_rx_ctrl1; u32 glk_tun_val; + u32 active_ltr; + u32 idle_ltr; }; static const guid_t intel_dsm_guid = @@ -653,6 +665,15 @@ } } +static void sdhci_intel_set_uhs_signaling(struct sdhci_host *host, + unsigned int timing) +{ + /* Set UHS timing to SDR25 for High Speed mode */ + if (timing == MMC_TIMING_MMC_HS || timing == MMC_TIMING_SD_HS) + timing = MMC_TIMING_UHS_SDR25; + sdhci_set_uhs_signaling(host, timing); +} + #define INTEL_HS400_ES_REG 0x78 #define INTEL_HS400_ES_BIT BIT(0) @@ -709,7 +730,7 @@ .enable_dma = sdhci_pci_enable_dma, .set_bus_width = sdhci_set_bus_width, .reset = sdhci_reset, - .set_uhs_signaling = sdhci_set_uhs_signaling, + .set_uhs_signaling = sdhci_intel_set_uhs_signaling, .hw_reset = sdhci_pci_hw_reset, }; @@ -718,8 +739,8 @@ .set_power = sdhci_intel_set_power, .enable_dma = sdhci_pci_enable_dma, .set_bus_width = sdhci_set_bus_width, - .reset = sdhci_reset, - .set_uhs_signaling = sdhci_set_uhs_signaling, + .reset = sdhci_cqhci_reset, + .set_uhs_signaling = sdhci_intel_set_uhs_signaling, .hw_reset = sdhci_pci_hw_reset, .irq = sdhci_cqhci_irq, }; @@ -752,6 +773,108 @@ return 0; } +#define INTEL_ACTIVELTR 0x804 +#define INTEL_IDLELTR 0x808 + +#define INTEL_LTR_REQ BIT(15) +#define INTEL_LTR_SCALE_MASK GENMASK(11, 10) +#define INTEL_LTR_SCALE_1US (2 << 10) +#define INTEL_LTR_SCALE_32US (3 << 10) +#define INTEL_LTR_VALUE_MASK GENMASK(9, 0) + +static void intel_cache_ltr(struct sdhci_pci_slot *slot) +{ + struct intel_host *intel_host = sdhci_pci_priv(slot); + struct sdhci_host *host = slot->host; + + intel_host->active_ltr = readl(host->ioaddr + INTEL_ACTIVELTR); + intel_host->idle_ltr = readl(host->ioaddr + INTEL_IDLELTR); +} + +static void intel_ltr_set(struct device *dev, s32 val) +{ + struct sdhci_pci_chip *chip = dev_get_drvdata(dev); + struct sdhci_pci_slot *slot = chip->slots[0]; + struct intel_host *intel_host = sdhci_pci_priv(slot); + struct sdhci_host *host = slot->host; + u32 ltr; + + pm_runtime_get_sync(dev); + + /* + * Program latency tolerance (LTR) accordingly what has been asked + * by the PM QoS layer or disable it in case we were passed + * negative value or PM_QOS_LATENCY_ANY. + */ + ltr = readl(host->ioaddr + INTEL_ACTIVELTR); + + if (val == PM_QOS_LATENCY_ANY || val < 0) { + ltr &= ~INTEL_LTR_REQ; + } else { + ltr |= INTEL_LTR_REQ; + ltr &= ~INTEL_LTR_SCALE_MASK; + ltr &= ~INTEL_LTR_VALUE_MASK; + + if (val > INTEL_LTR_VALUE_MASK) { + val >>= 5; + if (val > INTEL_LTR_VALUE_MASK) + val = INTEL_LTR_VALUE_MASK; + ltr |= INTEL_LTR_SCALE_32US | val; + } else { + ltr |= INTEL_LTR_SCALE_1US | val; + } + } + + if (ltr == intel_host->active_ltr) + goto out; + + writel(ltr, host->ioaddr + INTEL_ACTIVELTR); + writel(ltr, host->ioaddr + INTEL_IDLELTR); + + /* Cache the values into lpss structure */ + intel_cache_ltr(slot); +out: + pm_runtime_put_autosuspend(dev); +} + +static bool intel_use_ltr(struct sdhci_pci_chip *chip) +{ + switch (chip->pdev->device) { + case PCI_DEVICE_ID_INTEL_BYT_EMMC: + case PCI_DEVICE_ID_INTEL_BYT_EMMC2: + case PCI_DEVICE_ID_INTEL_BYT_SDIO: + case PCI_DEVICE_ID_INTEL_BYT_SD: + case PCI_DEVICE_ID_INTEL_BSW_EMMC: + case PCI_DEVICE_ID_INTEL_BSW_SDIO: + case PCI_DEVICE_ID_INTEL_BSW_SD: + return false; + default: + return true; + } +} + +static void intel_ltr_expose(struct sdhci_pci_chip *chip) +{ + struct device *dev = &chip->pdev->dev; + + if (!intel_use_ltr(chip)) + return; + + dev->power.set_latency_tolerance = intel_ltr_set; + dev_pm_qos_expose_latency_tolerance(dev); +} + +static void intel_ltr_hide(struct sdhci_pci_chip *chip) +{ + struct device *dev = &chip->pdev->dev; + + if (!intel_use_ltr(chip)) + return; + + dev_pm_qos_hide_latency_tolerance(dev); + dev->power.set_latency_tolerance = NULL; +} + static void byt_probe_slot(struct sdhci_pci_slot *slot) { struct mmc_host_ops *ops = &slot->host->mmc_host_ops; @@ -766,6 +889,43 @@ ops->start_signal_voltage_switch = intel_start_signal_voltage_switch; device_property_read_u32(dev, "max-frequency", &mmc->f_max); + + if (!mmc->slotno) { + slot->chip->slots[mmc->slotno] = slot; + intel_ltr_expose(slot->chip); + } +} + +static void byt_add_debugfs(struct sdhci_pci_slot *slot) +{ + struct intel_host *intel_host = sdhci_pci_priv(slot); + struct mmc_host *mmc = slot->host->mmc; + struct dentry *dir = mmc->debugfs_root; + + if (!intel_use_ltr(slot->chip)) + return; + + debugfs_create_x32("active_ltr", 0444, dir, &intel_host->active_ltr); + debugfs_create_x32("idle_ltr", 0444, dir, &intel_host->idle_ltr); + + intel_cache_ltr(slot); +} + +static int byt_add_host(struct sdhci_pci_slot *slot) +{ + int ret = sdhci_add_host(slot->host); + + if (!ret) + byt_add_debugfs(slot); + return ret; +} + +static void byt_remove_slot(struct sdhci_pci_slot *slot, int dead) +{ + struct mmc_host *mmc = slot->host->mmc; + + if (!mmc->slotno) + intel_ltr_hide(slot->chip); } static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) @@ -786,7 +946,8 @@ static bool glk_broken_cqhci(struct sdhci_pci_slot *slot) { return slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_GLK_EMMC && - dmi_match(DMI_BIOS_VENDOR, "LENOVO"); + (dmi_match(DMI_BIOS_VENDOR, "LENOVO") || + dmi_match(DMI_SYS_VENDOR, "IRBIS")); } static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot) @@ -846,6 +1007,8 @@ if (ret) goto cleanup; + byt_add_debugfs(slot); + return 0; cleanup: @@ -1023,6 +1186,8 @@ #endif .allow_runtime_pm = true, .probe_slot = byt_emmc_probe_slot, + .add_host = byt_add_host, + .remove_slot = byt_remove_slot, .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC | SDHCI_QUIRK_NO_LED, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | @@ -1036,6 +1201,7 @@ .allow_runtime_pm = true, .probe_slot = glk_emmc_probe_slot, .add_host = glk_emmc_add_host, + .remove_slot = byt_remove_slot, #ifdef CONFIG_PM_SLEEP .suspend = sdhci_cqhci_suspend, .resume = sdhci_cqhci_resume, @@ -1066,6 +1232,8 @@ SDHCI_QUIRK2_PRESET_VALUE_BROKEN, .allow_runtime_pm = true, .probe_slot = ni_byt_sdio_probe_slot, + .add_host = byt_add_host, + .remove_slot = byt_remove_slot, .ops = &sdhci_intel_byt_ops, .priv_size = sizeof(struct intel_host), }; @@ -1083,6 +1251,8 @@ SDHCI_QUIRK2_PRESET_VALUE_BROKEN, .allow_runtime_pm = true, .probe_slot = byt_sdio_probe_slot, + .add_host = byt_add_host, + .remove_slot = byt_remove_slot, .ops = &sdhci_intel_byt_ops, .priv_size = sizeof(struct intel_host), }; @@ -1102,6 +1272,8 @@ .allow_runtime_pm = true, .own_cd_for_runtime_pm = true, .probe_slot = byt_sd_probe_slot, + .add_host = byt_add_host, + .remove_slot = byt_remove_slot, .ops = &sdhci_intel_byt_ops, .priv_size = sizeof(struct intel_host), }; --- linux-5.8.0.orig/drivers/mmc/host/sdhci-pci-o2micro.c +++ linux-5.8.0/drivers/mmc/host/sdhci-pci-o2micro.c @@ -561,6 +561,12 @@ slot->host->mmc_host_ops.get_cd = sdhci_o2_get_cd; } + if (chip->pdev->device == PCI_DEVICE_ID_O2_SEABIRD1) { + slot->host->mmc_host_ops.get_cd = sdhci_o2_get_cd; + host->mmc->caps2 |= MMC_CAP2_NO_SDIO; + host->quirks2 |= SDHCI_QUIRK2_PRESET_VALUE_BROKEN; + } + host->mmc_host_ops.execute_tuning = sdhci_o2_execute_tuning; if (chip->pdev->device != PCI_DEVICE_ID_O2_FUJIN2) --- linux-5.8.0.orig/drivers/mmc/host/sdhci-pltfm.h +++ linux-5.8.0/drivers/mmc/host/sdhci-pltfm.h @@ -111,8 +111,13 @@ return host->private; } +extern const struct dev_pm_ops sdhci_pltfm_pmops; +#ifdef CONFIG_PM_SLEEP int sdhci_pltfm_suspend(struct device *dev); int sdhci_pltfm_resume(struct device *dev); -extern const struct dev_pm_ops sdhci_pltfm_pmops; +#else +static inline int sdhci_pltfm_suspend(struct device *dev) { return 0; } +static inline int sdhci_pltfm_resume(struct device *dev) { return 0; } +#endif #endif /* _DRIVERS_MMC_SDHCI_PLTFM_H */ --- linux-5.8.0.orig/drivers/mmc/host/sdhci-sprd.c +++ linux-5.8.0/drivers/mmc/host/sdhci-sprd.c @@ -708,14 +708,14 @@ { struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_sprd_host *sprd_host = TO_SPRD_HOST(host); - struct mmc_host *mmc = host->mmc; - mmc_remove_host(mmc); + sdhci_remove_host(host, 0); + clk_disable_unprepare(sprd_host->clk_sdio); clk_disable_unprepare(sprd_host->clk_enable); clk_disable_unprepare(sprd_host->clk_2x_enable); - mmc_free_host(mmc); + sdhci_pltfm_free(pdev); return 0; } --- linux-5.8.0.orig/drivers/mmc/host/sdhci-tegra.c +++ linux-5.8.0/drivers/mmc/host/sdhci-tegra.c @@ -101,6 +101,12 @@ #define NVQUIRK_DIS_CARD_CLK_CONFIG_TAP BIT(8) #define NVQUIRK_CQHCI_DCMD_R1B_CMD_TIMING BIT(9) +/* + * NVQUIRK_HAS_TMCLK is for SoC's having separate timeout clock for Tegra + * SDMMC hardware data timeout. + */ +#define NVQUIRK_HAS_TMCLK BIT(10) + /* SDMMC CQE Base Address for Tegra Host Ver 4.1 and Higher */ #define SDHCI_TEGRA_CQE_BASE_ADDR 0xF000 @@ -131,6 +137,7 @@ struct sdhci_tegra { const struct sdhci_tegra_soc_data *soc_data; struct gpio_desc *power_gpio; + struct clk *tmclk; bool ddr_signaling; bool pad_calib_required; bool pad_control_available; @@ -1256,7 +1263,7 @@ * busy wait mode. */ val = sdhci_readl(host, SDHCI_TEGRA_VENDOR_MISC_CTRL); - if (cmd && cmd->busy_timeout >= 11 * HZ) + if (cmd && cmd->busy_timeout >= 11 * MSEC_PER_SEC) val |= SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; else val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; @@ -1409,7 +1416,6 @@ static const struct sdhci_pltfm_data sdhci_tegra210_pdata = { .quirks = SDHCI_QUIRK_BROKEN_TIMEOUT_VAL | - SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | SDHCI_QUIRK_SINGLE_POWER_WRITE | SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC | @@ -1425,7 +1431,8 @@ NVQUIRK_HAS_PADCALIB | NVQUIRK_DIS_CARD_CLK_CONFIG_TAP | NVQUIRK_ENABLE_SDR50 | - NVQUIRK_ENABLE_SDR104, + NVQUIRK_ENABLE_SDR104 | + NVQUIRK_HAS_TMCLK, .min_tap_delay = 106, .max_tap_delay = 185, }; @@ -1447,7 +1454,6 @@ static const struct sdhci_pltfm_data sdhci_tegra186_pdata = { .quirks = SDHCI_QUIRK_BROKEN_TIMEOUT_VAL | - SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | SDHCI_QUIRK_SINGLE_POWER_WRITE | SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC | @@ -1464,6 +1470,7 @@ NVQUIRK_DIS_CARD_CLK_CONFIG_TAP | NVQUIRK_ENABLE_SDR50 | NVQUIRK_ENABLE_SDR104 | + NVQUIRK_HAS_TMCLK | NVQUIRK_CQHCI_DCMD_R1B_CMD_TIMING, .min_tap_delay = 84, .max_tap_delay = 136, @@ -1476,7 +1483,8 @@ NVQUIRK_HAS_PADCALIB | NVQUIRK_DIS_CARD_CLK_CONFIG_TAP | NVQUIRK_ENABLE_SDR50 | - NVQUIRK_ENABLE_SDR104, + NVQUIRK_ENABLE_SDR104 | + NVQUIRK_HAS_TMCLK, .min_tap_delay = 96, .max_tap_delay = 139, }; @@ -1604,6 +1612,43 @@ goto err_power_req; } + /* + * Tegra210 has a separate SDMMC_LEGACY_TM clock used for host + * timeout clock and SW can choose TMCLK or SDCLK for hardware + * data timeout through the bit USE_TMCLK_FOR_DATA_TIMEOUT of + * the register SDHCI_TEGRA_VENDOR_SYS_SW_CTRL. + * + * USE_TMCLK_FOR_DATA_TIMEOUT bit default is set to 1 and SDMMC uses + * 12Mhz TMCLK which is advertised in host capability register. + * With TMCLK of 12Mhz provides maximum data timeout period that can + * be achieved is 11s better than using SDCLK for data timeout. + * + * So, TMCLK is set to 12Mhz and kept enabled all the time on SoC's + * supporting separate TMCLK. + */ + + if (soc_data->nvquirks & NVQUIRK_HAS_TMCLK) { + clk = devm_clk_get(&pdev->dev, "tmclk"); + if (IS_ERR(clk)) { + rc = PTR_ERR(clk); + if (rc == -EPROBE_DEFER) + goto err_power_req; + + dev_warn(&pdev->dev, "failed to get tmclk: %d\n", rc); + clk = NULL; + } + + clk_set_rate(clk, 12000000); + rc = clk_prepare_enable(clk); + if (rc) { + dev_err(&pdev->dev, + "failed to enable tmclk: %d\n", rc); + goto err_power_req; + } + + tegra_host->tmclk = clk; + } + clk = devm_clk_get(mmc_dev(host->mmc), NULL); if (IS_ERR(clk)) { rc = PTR_ERR(clk); @@ -1647,6 +1692,7 @@ err_rst_get: clk_disable_unprepare(pltfm_host->clk); err_clk_get: + clk_disable_unprepare(tegra_host->tmclk); err_power_req: err_parse_dt: sdhci_pltfm_free(pdev); @@ -1664,6 +1710,7 @@ reset_control_assert(tegra_host->rst); usleep_range(2000, 4000); clk_disable_unprepare(pltfm_host->clk); + clk_disable_unprepare(tegra_host->tmclk); sdhci_pltfm_free(pdev); --- linux-5.8.0.orig/drivers/mmc/host/sdhci-xenon.c +++ linux-5.8.0/drivers/mmc/host/sdhci-xenon.c @@ -167,7 +167,12 @@ /* Disable tuning request and auto-retuning again */ xenon_retune_setup(host); - xenon_set_acg(host, true); + /* + * The ACG should be turned off at the early init time, in order + * to solve a possible issues with the 1.8V regulator stabilization. + * The feature is enabled in later stage. + */ + xenon_set_acg(host, false); xenon_set_sdclk_off_idle(host, sdhc_id, false); --- linux-5.8.0.orig/drivers/mmc/host/sdhci.c +++ linux-5.8.0/drivers/mmc/host/sdhci.c @@ -1384,9 +1384,11 @@ /* * In case of Version 4.10 or later, use of 'Auto CMD Auto * Select' is recommended rather than use of 'Auto CMD12 - * Enable' or 'Auto CMD23 Enable'. + * Enable' or 'Auto CMD23 Enable'. We require Version 4 Mode + * here because some controllers (e.g sdhci-of-dwmshc) expect it. */ - if (host->version >= SDHCI_SPEC_410 && (use_cmd12 || use_cmd23)) { + if (host->version >= SDHCI_SPEC_410 && host->v4_mode && + (use_cmd12 || use_cmd23)) { *mode |= SDHCI_TRNS_AUTO_SEL; ctrl2 = sdhci_readw(host, SDHCI_HOST_CONTROL2); @@ -3992,10 +3994,10 @@ if (host->v4_mode) sdhci_do_enable_v4_mode(host); - of_property_read_u64(mmc_dev(host->mmc)->of_node, - "sdhci-caps-mask", &dt_caps_mask); - of_property_read_u64(mmc_dev(host->mmc)->of_node, - "sdhci-caps", &dt_caps); + device_property_read_u64_array(mmc_dev(host->mmc), + "sdhci-caps-mask", &dt_caps_mask, 1); + device_property_read_u64_array(mmc_dev(host->mmc), + "sdhci-caps", &dt_caps, 1); v = ver ? *ver : sdhci_readw(host, SDHCI_HOST_VERSION); host->version = (v & SDHCI_SPEC_VER_MASK) >> SDHCI_SPEC_VER_SHIFT; --- linux-5.8.0.orig/drivers/mmc/host/usdhi6rol0.c +++ linux-5.8.0/drivers/mmc/host/usdhi6rol0.c @@ -1858,10 +1858,12 @@ ret = mmc_add_host(mmc); if (ret < 0) - goto e_clk_off; + goto e_release_dma; return 0; +e_release_dma: + usdhi6_dma_release(host); e_clk_off: clk_disable_unprepare(host->clk); e_free_mmc: --- linux-5.8.0.orig/drivers/mmc/host/via-sdmmc.c +++ linux-5.8.0/drivers/mmc/host/via-sdmmc.c @@ -1259,11 +1259,14 @@ static int via_sd_suspend(struct pci_dev *pcidev, pm_message_t state) { struct via_crdr_mmc_host *host; + unsigned long flags; host = pci_get_drvdata(pcidev); + spin_lock_irqsave(&host->lock, flags); via_save_pcictrlreg(host); via_save_sdcreg(host); + spin_unlock_irqrestore(&host->lock, flags); pci_save_state(pcidev); pci_enable_wake(pcidev, pci_choose_state(pcidev, state), 0); --- linux-5.8.0.orig/drivers/most/core.c +++ linux-5.8.0/drivers/most/core.c @@ -1283,10 +1283,8 @@ struct most_channel *c; if (!iface || !iface->enqueue || !iface->configure || - !iface->poison_channel || (iface->num_channels > MAX_CHANNELS)) { - dev_err(iface->dev, "Bad interface or channel overflow\n"); + !iface->poison_channel || (iface->num_channels > MAX_CHANNELS)) return -EINVAL; - } id = ida_simple_get(&mdev_id, 0, 0, GFP_KERNEL); if (id < 0) { --- linux-5.8.0.orig/drivers/mtd/hyperbus/hbmc-am654.c +++ linux-5.8.0/drivers/mtd/hyperbus/hbmc-am654.c @@ -70,7 +70,8 @@ platform_set_drvdata(pdev, priv); - ret = of_address_to_resource(np, 0, &res); + priv->hbdev.np = of_get_next_child(np, NULL); + ret = of_address_to_resource(priv->hbdev.np, 0, &res); if (ret) return ret; @@ -103,7 +104,6 @@ priv->ctlr.dev = dev; priv->ctlr.ops = &am654_hbmc_ops; priv->hbdev.ctlr = &priv->ctlr; - priv->hbdev.np = of_get_next_child(dev->of_node, NULL); ret = hyperbus_register_device(&priv->hbdev); if (ret) { dev_err(dev, "failed to register controller\n"); --- linux-5.8.0.orig/drivers/mtd/lpddr/lpddr2_nvm.c +++ linux-5.8.0/drivers/mtd/lpddr/lpddr2_nvm.c @@ -393,6 +393,17 @@ return lpddr2_nvm_do_block_op(mtd, start_add, len, LPDDR2_NVM_LOCK); } +static const struct mtd_info lpddr2_nvm_mtd_info = { + .type = MTD_RAM, + .writesize = 1, + .flags = (MTD_CAP_NVRAM | MTD_POWERUP_LOCK), + ._read = lpddr2_nvm_read, + ._write = lpddr2_nvm_write, + ._erase = lpddr2_nvm_erase, + ._unlock = lpddr2_nvm_unlock, + ._lock = lpddr2_nvm_lock, +}; + /* * lpddr2_nvm driver probe method */ @@ -433,6 +444,7 @@ .pfow_base = OW_BASE_ADDRESS, .fldrv_priv = pcm_data, }; + if (IS_ERR(map->virt)) return PTR_ERR(map->virt); @@ -444,22 +456,13 @@ return PTR_ERR(pcm_data->ctl_regs); /* Populate mtd_info data structure */ - *mtd = (struct mtd_info) { - .dev = { .parent = &pdev->dev }, - .name = pdev->dev.init_name, - .type = MTD_RAM, - .priv = map, - .size = resource_size(add_range), - .erasesize = ERASE_BLOCKSIZE * pcm_data->bus_width, - .writesize = 1, - .writebufsize = WRITE_BUFFSIZE * pcm_data->bus_width, - .flags = (MTD_CAP_NVRAM | MTD_POWERUP_LOCK), - ._read = lpddr2_nvm_read, - ._write = lpddr2_nvm_write, - ._erase = lpddr2_nvm_erase, - ._unlock = lpddr2_nvm_unlock, - ._lock = lpddr2_nvm_lock, - }; + *mtd = lpddr2_nvm_mtd_info; + mtd->dev.parent = &pdev->dev; + mtd->name = pdev->dev.init_name; + mtd->priv = map; + mtd->size = resource_size(add_range); + mtd->erasesize = ERASE_BLOCKSIZE * pcm_data->bus_width; + mtd->writebufsize = WRITE_BUFFSIZE * pcm_data->bus_width; /* Verify the presence of the device looking for PFOW string */ if (!lpddr2_nvm_pfow_present(map)) { --- linux-5.8.0.orig/drivers/mtd/mtdchar.c +++ linux-5.8.0/drivers/mtd/mtdchar.c @@ -355,9 +355,6 @@ uint32_t retlen; int ret = 0; - if (!(file->f_mode & FMODE_WRITE)) - return -EPERM; - if (length > 4096) return -EINVAL; @@ -643,6 +640,48 @@ pr_debug("MTD_ioctl\n"); + /* + * Check the file mode to require "dangerous" commands to have write + * permissions. + */ + switch (cmd) { + /* "safe" commands */ + case MEMGETREGIONCOUNT: + case MEMGETREGIONINFO: + case MEMGETINFO: + case MEMREADOOB: + case MEMREADOOB64: + case MEMLOCK: + case MEMUNLOCK: + case MEMISLOCKED: + case MEMGETOOBSEL: + case MEMGETBADBLOCK: + case MEMSETBADBLOCK: + case OTPSELECT: + case OTPGETREGIONCOUNT: + case OTPGETREGIONINFO: + case OTPLOCK: + case ECCGETLAYOUT: + case ECCGETSTATS: + case MTDFILEMODE: + case BLKPG: + case BLKRRPART: + break; + + /* "dangerous" commands */ + case MEMERASE: + case MEMERASE64: + case MEMWRITEOOB: + case MEMWRITEOOB64: + case MEMWRITE: + if (!(file->f_mode & FMODE_WRITE)) + return -EPERM; + break; + + default: + return -ENOTTY; + } + switch (cmd) { case MEMGETREGIONCOUNT: if (copy_to_user(argp, &(mtd->numeraseregions), sizeof(int))) @@ -690,9 +729,6 @@ { struct erase_info *erase; - if(!(file->f_mode & FMODE_WRITE)) - return -EPERM; - erase=kzalloc(sizeof(struct erase_info),GFP_KERNEL); if (!erase) ret = -ENOMEM; @@ -985,9 +1021,6 @@ ret = 0; break; } - - default: - ret = -ENOTTY; } return ret; @@ -1031,6 +1064,11 @@ struct mtd_oob_buf32 buf; struct mtd_oob_buf32 __user *buf_user = argp; + if (!(file->f_mode & FMODE_WRITE)) { + ret = -EPERM; + break; + } + if (copy_from_user(&buf, argp, sizeof(buf))) ret = -EFAULT; else --- linux-5.8.0.orig/drivers/mtd/mtdcore.c +++ linux-5.8.0/drivers/mtd/mtdcore.c @@ -1013,6 +1013,8 @@ } } + master->usecount++; + while (mtd->parent) { mtd->usecount++; mtd = mtd->parent; @@ -1079,6 +1081,8 @@ mtd = mtd->parent; } + master->usecount--; + if (master->_put_device) master->_put_device(master); --- linux-5.8.0.orig/drivers/mtd/mtdoops.c +++ linux-5.8.0/drivers/mtd/mtdoops.c @@ -279,12 +279,13 @@ kmsg_dump_get_buffer(dumper, true, cxt->oops_buf + MTDOOPS_HEADER_SIZE, record_size - MTDOOPS_HEADER_SIZE, NULL); - /* Panics must be written immediately */ - if (reason != KMSG_DUMP_OOPS) + if (reason != KMSG_DUMP_OOPS) { + /* Panics must be written immediately */ mtdoops_write(cxt, 1); - - /* For other cases, schedule work to write it "nicely" */ - schedule_work(&cxt->work_write); + } else { + /* For other cases, schedule work to write it "nicely" */ + schedule_work(&cxt->work_write); + } } static void mtdoops_notify_add(struct mtd_info *mtd) --- linux-5.8.0.orig/drivers/mtd/nand/raw/ams-delta.c +++ linux-5.8.0/drivers/mtd/nand/raw/ams-delta.c @@ -400,12 +400,14 @@ return 0; } +#ifdef CONFIG_OF static const struct of_device_id gpio_nand_of_id_table[] = { { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, gpio_nand_of_id_table); +#endif static const struct platform_device_id gpio_nand_plat_id_table[] = { { --- linux-5.8.0.orig/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ linux-5.8.0/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -1918,6 +1918,22 @@ edu_writel(ctrl, EDU_STOP, 0); /* force stop */ edu_readl(ctrl, EDU_STOP); + if (!ret && edu_cmd == EDU_CMD_READ) { + u64 err_addr = 0; + + /* + * check for ECC errors here, subpage ECC errors are + * retained in ECC error address register + */ + err_addr = brcmnand_get_uncorrecc_addr(ctrl); + if (!err_addr) { + err_addr = brcmnand_get_correcc_addr(ctrl); + if (err_addr) + ret = -EUCLEAN; + } else + ret = -EBADMSG; + } + return ret; } @@ -2124,6 +2140,7 @@ u64 err_addr = 0; int err; bool retry = true; + bool edu_err = false; dev_dbg(ctrl->dev, "read %llx -> %p\n", (unsigned long long)addr, buf); @@ -2141,6 +2158,10 @@ else return -EIO; } + + if (has_edu(ctrl) && err_addr) + edu_err = true; + } else { if (oob) memset(oob, 0x99, mtd->oobsize); @@ -2188,6 +2209,11 @@ if (mtd_is_bitflip(err)) { unsigned int corrected = brcmnand_count_corrected(ctrl); + /* in case of EDU correctable error we read again using PIO */ + if (edu_err) + err = brcmnand_read_by_pio(mtd, chip, addr, trans, buf, + oob, &err_addr); + dev_dbg(ctrl->dev, "corrected error at 0x%llx\n", (unsigned long long)err_addr); mtd->ecc_stats.corrected += corrected; @@ -3023,8 +3049,9 @@ if (ret < 0) goto err; - /* set edu transfer function to call */ - ctrl->dma_trans = brcmnand_edu_trans; + if (has_edu(ctrl)) + /* set edu transfer function to call */ + ctrl->dma_trans = brcmnand_edu_trans; } /* Disable automatic device ID config, direct addressing */ --- linux-5.8.0.orig/drivers/mtd/nand/raw/fsl_upm.c +++ linux-5.8.0/drivers/mtd/nand/raw/fsl_upm.c @@ -62,7 +62,6 @@ static void fun_wait_rnb(struct fsl_upm_nand *fun) { if (fun->rnb_gpio[fun->mchip_number] >= 0) { - struct mtd_info *mtd = nand_to_mtd(&fun->chip); int cnt = 1000000; while (--cnt && !fun_chip_ready(&fun->chip)) --- linux-5.8.0.orig/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ linux-5.8.0/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -149,8 +149,10 @@ int ret; ret = pm_runtime_get_sync(this->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(this->dev); return ret; + } ret = gpmi_reset_block(r->gpmi_regs, false); if (ret) @@ -1612,7 +1614,7 @@ /* Extract interleaved payload data and ECC bits */ for (step = 0; step < nfc_geo->ecc_chunk_count; step++) { if (buf) - nand_extract_bits(buf, step * eccsize, tmp_buf, + nand_extract_bits(buf, step * eccsize * 8, tmp_buf, src_bit_off, eccsize * 8); src_bit_off += eccsize * 8; @@ -2253,7 +2255,7 @@ void *buf_read = NULL; const void *buf_write = NULL; bool direct = false; - struct completion *completion; + struct completion *dma_completion, *bch_completion; unsigned long to; if (check_only) @@ -2264,8 +2266,10 @@ this->transfers[i].direction = DMA_NONE; ret = pm_runtime_get_sync(this->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(this->dev); return ret; + } /* * This driver currently supports only one NAND chip. Plus, dies share @@ -2348,22 +2352,24 @@ this->resources.bch_regs + HW_BCH_FLASH0LAYOUT1); } + desc->callback = dma_irq_callback; + desc->callback_param = this; + dma_completion = &this->dma_done; + bch_completion = NULL; + + init_completion(dma_completion); + if (this->bch && buf_read) { writel(BM_BCH_CTRL_COMPLETE_IRQ_EN, this->resources.bch_regs + HW_BCH_CTRL_SET); - completion = &this->bch_done; - } else { - desc->callback = dma_irq_callback; - desc->callback_param = this; - completion = &this->dma_done; + bch_completion = &this->bch_done; + init_completion(bch_completion); } - init_completion(completion); - dmaengine_submit(desc); dma_async_issue_pending(get_dma_chan(this)); - to = wait_for_completion_timeout(completion, msecs_to_jiffies(1000)); + to = wait_for_completion_timeout(dma_completion, msecs_to_jiffies(1000)); if (!to) { dev_err(this->dev, "DMA timeout, last DMA\n"); gpmi_dump_info(this); @@ -2371,6 +2377,16 @@ goto unmap; } + if (this->bch && buf_read) { + to = wait_for_completion_timeout(bch_completion, msecs_to_jiffies(1000)); + if (!to) { + dev_err(this->dev, "BCH timeout, last DMA\n"); + gpmi_dump_info(this); + ret = -ETIMEDOUT; + goto unmap; + } + } + writel(BM_BCH_CTRL_COMPLETE_IRQ_EN, this->resources.bch_regs + HW_BCH_CTRL_CLR); gpmi_clear_bch(this); --- linux-5.8.0.orig/drivers/mtd/nand/raw/meson_nand.c +++ linux-5.8.0/drivers/mtd/nand/raw/meson_nand.c @@ -510,7 +510,7 @@ } static void meson_nfc_dma_buffer_release(struct nand_chip *nand, - int infolen, int datalen, + int datalen, int infolen, enum dma_data_direction dir) { struct meson_nfc *nfc = nand_get_controller_data(nand); @@ -1044,9 +1044,12 @@ ret = clk_set_rate(nfc->device_clk, 24000000); if (ret) - goto err_phase_rx; + goto err_disable_rx; return 0; + +err_disable_rx: + clk_disable_unprepare(nfc->phase_rx); err_phase_rx: clk_disable_unprepare(nfc->phase_tx); err_phase_tx: --- linux-5.8.0.orig/drivers/mtd/nand/raw/qcom_nandc.c +++ linux-5.8.0/drivers/mtd/nand/raw/qcom_nandc.c @@ -459,11 +459,13 @@ * among different NAND controllers. * @ecc_modes - ecc mode for NAND * @is_bam - whether NAND controller is using BAM + * @is_qpic - whether NAND CTRL is part of qpic IP * @dev_cmd_reg_start - NAND_DEV_CMD_* registers starting offset */ struct qcom_nandc_props { u32 ecc_modes; bool is_bam; + bool is_qpic; u32 dev_cmd_reg_start; }; @@ -1568,6 +1570,8 @@ struct qcom_nand_controller *nandc = get_qcom_nand_controller(chip); int i; + nandc_read_buffer_sync(nandc, true); + for (i = 0; i < cw_cnt; i++) { u32 flash = le32_to_cpu(nandc->reg_read_buf[i]); @@ -2774,7 +2778,8 @@ u32 nand_ctrl; /* kill onenand */ - nandc_write(nandc, SFLASHC_BURST_CFG, 0); + if (!nandc->props->is_qpic) + nandc_write(nandc, SFLASHC_BURST_CFG, 0); nandc_write(nandc, dev_cmd_reg_addr(nandc, NAND_DEV_CMD_VLD), NAND_DEV_CMD_VLD_VAL); @@ -3035,12 +3040,14 @@ static const struct qcom_nandc_props ipq4019_nandc_props = { .ecc_modes = (ECC_BCH_4BIT | ECC_BCH_8BIT), .is_bam = true, + .is_qpic = true, .dev_cmd_reg_start = 0x0, }; static const struct qcom_nandc_props ipq8074_nandc_props = { .ecc_modes = (ECC_BCH_4BIT | ECC_BCH_8BIT), .is_bam = true, + .is_qpic = true, .dev_cmd_reg_start = 0x7000, }; --- linux-5.8.0.orig/drivers/mtd/nand/raw/stm32_fmc2_nand.c +++ linux-5.8.0/drivers/mtd/nand/raw/stm32_fmc2_nand.c @@ -1791,7 +1791,7 @@ return ret; } - if (cs > FMC2_MAX_CE) { + if (cs >= FMC2_MAX_CE) { dev_err(nfc->dev, "invalid reg value: %d\n", cs); return -EINVAL; } --- linux-5.8.0.orig/drivers/mtd/nand/raw/vf610_nfc.c +++ linux-5.8.0/drivers/mtd/nand/raw/vf610_nfc.c @@ -852,8 +852,10 @@ } of_id = of_match_device(vf610_nfc_dt_ids, &pdev->dev); - if (!of_id) - return -ENODEV; + if (!of_id) { + err = -ENODEV; + goto err_disable_clk; + } nfc->variant = (enum vf610_nfc_variant)of_id->data; --- linux-5.8.0.orig/drivers/mtd/nand/spi/gigadevice.c +++ linux-5.8.0/drivers/mtd/nand/spi/gigadevice.c @@ -21,7 +21,7 @@ #define GD5FXGQ4UXFXXG_STATUS_ECC_UNCOR_ERROR (7 << 4) static SPINAND_OP_VARIANTS(read_cache_variants, - SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0), + SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0), @@ -29,7 +29,7 @@ SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0)); static SPINAND_OP_VARIANTS(read_cache_variants_f, - SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0), + SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_X4_OP_3A(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0), SPINAND_PAGE_READ_FROM_CACHE_X2_OP_3A(0, 1, NULL, 0), @@ -202,7 +202,7 @@ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), - 0, + SPINAND_HAS_QE_BIT, SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout, gd5fxgq4xa_ecc_get_status)), SPINAND_INFO("GD5F2GQ4xA", @@ -212,7 +212,7 @@ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), - 0, + SPINAND_HAS_QE_BIT, SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout, gd5fxgq4xa_ecc_get_status)), SPINAND_INFO("GD5F4GQ4xA", @@ -222,7 +222,7 @@ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), - 0, + SPINAND_HAS_QE_BIT, SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout, gd5fxgq4xa_ecc_get_status)), SPINAND_INFO("GD5F1GQ4UExxG", @@ -232,7 +232,7 @@ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), - 0, + SPINAND_HAS_QE_BIT, SPINAND_ECCINFO(&gd5fxgq4_variant2_ooblayout, gd5fxgq4uexxg_ecc_get_status)), SPINAND_INFO("GD5F1GQ4UFxxG", @@ -242,7 +242,7 @@ SPINAND_INFO_OP_VARIANTS(&read_cache_variants_f, &write_cache_variants, &update_cache_variants), - 0, + SPINAND_HAS_QE_BIT, SPINAND_ECCINFO(&gd5fxgq4_variant2_ooblayout, gd5fxgq4ufxxg_ecc_get_status)), }; --- linux-5.8.0.orig/drivers/mtd/parsers/afs.c +++ linux-5.8.0/drivers/mtd/parsers/afs.c @@ -370,10 +370,8 @@ return i; out_free_parts: - while (i >= 0) { + while (--i >= 0) kfree(parts[i].name); - i--; - } kfree(parts); *pparts = NULL; return ret; --- linux-5.8.0.orig/drivers/mtd/parsers/cmdlinepart.c +++ linux-5.8.0/drivers/mtd/parsers/cmdlinepart.c @@ -226,7 +226,7 @@ struct cmdline_mtd_partition *this_mtd; struct mtd_partition *parts; int mtd_id_len, num_parts; - char *p, *mtd_id, *semicol; + char *p, *mtd_id, *semicol, *open_parenth; /* * Replace the first ';' by a NULL char so strrchr can work @@ -236,6 +236,14 @@ if (semicol) *semicol = '\0'; + /* + * make sure that part-names with ":" will not be handled as + * part of the mtd-id with an ":" + */ + open_parenth = strchr(s, '('); + if (open_parenth) + *open_parenth = '\0'; + mtd_id = s; /* @@ -245,6 +253,10 @@ */ p = strrchr(s, ':'); + /* Restore the '(' now. */ + if (open_parenth) + *open_parenth = '('; + /* Restore the ';' now. */ if (semicol) *semicol = ';'; --- linux-5.8.0.orig/drivers/mtd/parsers/parser_imagetag.c +++ linux-5.8.0/drivers/mtd/parsers/parser_imagetag.c @@ -83,6 +83,7 @@ pr_err("invalid rootfs address: %*ph\n", (int)sizeof(buf->flash_image_start), buf->flash_image_start); + ret = -EINVAL; goto out; } @@ -92,6 +93,7 @@ pr_err("invalid kernel address: %*ph\n", (int)sizeof(buf->kernel_address), buf->kernel_address); + ret = -EINVAL; goto out; } @@ -100,6 +102,7 @@ pr_err("invalid kernel length: %*ph\n", (int)sizeof(buf->kernel_length), buf->kernel_length); + ret = -EINVAL; goto out; } @@ -108,6 +111,7 @@ pr_err("invalid total length: %*ph\n", (int)sizeof(buf->total_length), buf->total_length); + ret = -EINVAL; goto out; } --- linux-5.8.0.orig/drivers/mtd/spi-nor/atmel.c +++ linux-5.8.0/drivers/mtd/spi-nor/atmel.c @@ -8,39 +8,78 @@ #include "core.h" -static const struct flash_info atmel_parts[] = { - /* Atmel -- some are (confusingly) marketed as "DataFlash" */ - { "at25fs010", INFO(0x1f6601, 0, 32 * 1024, 4, SECT_4K) }, - { "at25fs040", INFO(0x1f6604, 0, 64 * 1024, 8, SECT_4K) }, +/* + * The Atmel AT25FS010/AT25FS040 parts have some weird configuration for the + * block protection bits. We don't support them. But legacy behavior in linux + * is to unlock the whole flash array on startup. Therefore, we have to support + * exactly this operation. + */ +static int atmel_at25fs_lock(struct spi_nor *nor, loff_t ofs, uint64_t len) +{ + return -EOPNOTSUPP; +} - { "at25df041a", INFO(0x1f4401, 0, 64 * 1024, 8, SECT_4K) }, - { "at25df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K) }, - { "at25df321a", INFO(0x1f4701, 0, 64 * 1024, 64, SECT_4K) }, - { "at25df641", INFO(0x1f4800, 0, 64 * 1024, 128, SECT_4K) }, +static int atmel_at25fs_unlock(struct spi_nor *nor, loff_t ofs, uint64_t len) +{ + int ret; - { "at25sl321", INFO(0x1f4216, 0, 64 * 1024, 64, - SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + /* We only support unlocking the whole flash array */ + if (ofs || len != nor->params->size) + return -EINVAL; + + /* Write 0x00 to the status register to disable write protection */ + ret = spi_nor_write_sr_and_check(nor, 0); + if (ret) + dev_dbg(nor->dev, "unable to clear BP bits, WP# asserted?\n"); - { "at26f004", INFO(0x1f0400, 0, 64 * 1024, 8, SECT_4K) }, - { "at26df081a", INFO(0x1f4501, 0, 64 * 1024, 16, SECT_4K) }, - { "at26df161a", INFO(0x1f4601, 0, 64 * 1024, 32, SECT_4K) }, - { "at26df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K) }, + return ret; +} - { "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) }, +static int atmel_at25fs_is_locked(struct spi_nor *nor, loff_t ofs, uint64_t len) +{ + return -EOPNOTSUPP; +} + +static const struct spi_nor_locking_ops atmel_at25fs_locking_ops = { + .lock = atmel_at25fs_lock, + .unlock = atmel_at25fs_unlock, + .is_locked = atmel_at25fs_is_locked, }; -static void atmel_default_init(struct spi_nor *nor) +static void atmel_at25fs_default_init(struct spi_nor *nor) { - nor->flags |= SNOR_F_HAS_LOCK; + nor->params->locking_ops = &atmel_at25fs_locking_ops; } -static const struct spi_nor_fixups atmel_fixups = { - .default_init = atmel_default_init, +static const struct spi_nor_fixups atmel_at25fs_fixups = { + .default_init = atmel_at25fs_default_init, +}; + +static const struct flash_info atmel_parts[] = { + /* Atmel -- some are (confusingly) marketed as "DataFlash" */ + { "at25fs010", INFO(0x1f6601, 0, 32 * 1024, 4, SECT_4K | SPI_NOR_HAS_LOCK) + .fixups = &atmel_at25fs_fixups }, + { "at25fs040", INFO(0x1f6604, 0, 64 * 1024, 8, SECT_4K | SPI_NOR_HAS_LOCK) + .fixups = &atmel_at25fs_fixups }, + + { "at25df041a", INFO(0x1f4401, 0, 64 * 1024, 8, SECT_4K | SPI_NOR_HAS_LOCK) }, + { "at25df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_LOCK) }, + { "at25df321a", INFO(0x1f4701, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_LOCK) }, + { "at25df641", INFO(0x1f4800, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_HAS_LOCK) }, + + { "at25sl321", INFO(0x1f4216, 0, 64 * 1024, 64, + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + + { "at26f004", INFO(0x1f0400, 0, 64 * 1024, 8, SECT_4K) }, + { "at26df081a", INFO(0x1f4501, 0, 64 * 1024, 16, SECT_4K | SPI_NOR_HAS_LOCK) }, + { "at26df161a", INFO(0x1f4601, 0, 64 * 1024, 32, SECT_4K | SPI_NOR_HAS_LOCK) }, + { "at26df321", INFO(0x1f4700, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_LOCK) }, + + { "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) }, }; const struct spi_nor_manufacturer spi_nor_atmel = { .name = "atmel", .parts = atmel_parts, .nparts = ARRAY_SIZE(atmel_parts), - .fixups = &atmel_fixups, }; --- linux-5.8.0.orig/drivers/mtd/spi-nor/controllers/cadence-quadspi.c +++ linux-5.8.0/drivers/mtd/spi-nor/controllers/cadence-quadspi.c @@ -475,7 +475,7 @@ /* Setup dummy clock cycles */ dummy_clk = nor->read_dummy; if (dummy_clk > CQSPI_DUMMY_CLKS_MAX) - dummy_clk = CQSPI_DUMMY_CLKS_MAX; + return -EOPNOTSUPP; if (dummy_clk / 8) { reg |= (1 << CQSPI_REG_RD_INSTR_MODE_EN_LSB); --- linux-5.8.0.orig/drivers/mtd/spi-nor/controllers/hisi-sfc.c +++ linux-5.8.0/drivers/mtd/spi-nor/controllers/hisi-sfc.c @@ -399,8 +399,10 @@ for_each_available_child_of_node(dev->of_node, np) { ret = hisi_spi_nor_register(np, host); - if (ret) + if (ret) { + of_node_put(np); goto fail; + } if (host->num_chip == HIFMC_MAX_CHIP_NUM) { dev_warn(dev, "Flash device number exceeds the maximum chipselect number\n"); --- linux-5.8.0.orig/drivers/mtd/spi-nor/controllers/intel-spi-pci.c +++ linux-5.8.0/drivers/mtd/spi-nor/controllers/intel-spi-pci.c @@ -69,6 +69,7 @@ { PCI_VDEVICE(INTEL, 0x18e0), (unsigned long)&bxt_info }, { PCI_VDEVICE(INTEL, 0x19e0), (unsigned long)&bxt_info }, { PCI_VDEVICE(INTEL, 0x34a4), (unsigned long)&bxt_info }, + { PCI_VDEVICE(INTEL, 0x43a4), (unsigned long)&cnl_info }, { PCI_VDEVICE(INTEL, 0x4b24), (unsigned long)&bxt_info }, { PCI_VDEVICE(INTEL, 0x4da4), (unsigned long)&bxt_info }, { PCI_VDEVICE(INTEL, 0xa0a4), (unsigned long)&bxt_info }, --- linux-5.8.0.orig/drivers/mtd/spi-nor/controllers/intel-spi.c +++ linux-5.8.0/drivers/mtd/spi-nor/controllers/intel-spi.c @@ -612,6 +612,15 @@ return 0; } + /* + * We hope that HW sequencer will do the right thing automatically and + * with the SW sequencer we cannot use preopcode anyway, so just ignore + * the Write Disable operation and pretend it was completed + * successfully. + */ + if (opcode == SPINOR_OP_WRDI) + return 0; + writel(0, ispi->base + FADDR); /* Write the value beforehand */ --- linux-5.8.0.orig/drivers/mtd/spi-nor/core.c +++ linux-5.8.0/drivers/mtd/spi-nor/core.c @@ -906,7 +906,7 @@ * * Return: 0 on success, -errno otherwise. */ -static int spi_nor_write_sr_and_check(struct spi_nor *nor, u8 sr1) +int spi_nor_write_sr_and_check(struct spi_nor *nor, u8 sr1) { if (nor->flags & SNOR_F_HAS_16BIT_SR) return spi_nor_write_16bit_sr_and_check(nor, sr1); @@ -1212,14 +1212,15 @@ erase = &map->erase_type[i]; + /* Alignment is not mandatory for overlaid regions */ + if (region->offset & SNOR_OVERLAID_REGION && + region->size <= len) + return erase; + /* Don't erase more than what the user has asked for. */ if (erase->size > len) continue; - /* Alignment is not mandatory for overlaid regions */ - if (region->offset & SNOR_OVERLAID_REGION) - return erase; - spi_nor_div_by_erase_size(erase, addr, &rem); if (rem) continue; @@ -1363,6 +1364,7 @@ goto destroy_erase_cmd_list; if (prev_erase != erase || + erase->size != cmd->size || region->offset & SNOR_OVERLAID_REGION) { cmd = spi_nor_init_erase_cmd(region, erase); if (IS_ERR(cmd)) { @@ -2701,11 +2703,10 @@ memcpy(&sfdp_params, nor->params, sizeof(sfdp_params)); - if (spi_nor_parse_sfdp(nor, &sfdp_params)) { + if (spi_nor_parse_sfdp(nor, nor->params)) { + memcpy(nor->params, &sfdp_params, sizeof(*nor->params)); nor->addr_width = 0; nor->flags &= ~SNOR_F_4B_OPCODES; - } else { - memcpy(nor->params, &sfdp_params, sizeof(*nor->params)); } } @@ -2916,20 +2917,27 @@ } /** - * spi_nor_unlock_all() - Unlocks the entire flash memory array. + * spi_nor_try_unlock_all() - Tries to unlock the entire flash memory array. * @nor: pointer to a 'struct spi_nor'. * * Some SPI NOR flashes are write protected by default after a power-on reset * cycle, in order to avoid inadvertent writes during power-up. Backward * compatibility imposes to unlock the entire flash memory array at power-up * by default. + * + * Unprotecting the entire flash array will fail for boards which are hardware + * write-protected. Thus any errors are ignored. */ -static int spi_nor_unlock_all(struct spi_nor *nor) +static void spi_nor_try_unlock_all(struct spi_nor *nor) { - if (nor->flags & SNOR_F_HAS_LOCK) - return spi_nor_unlock(&nor->mtd, 0, nor->params->size); + int ret; - return 0; + if (!(nor->flags & SNOR_F_HAS_LOCK)) + return; + + ret = spi_nor_unlock(&nor->mtd, 0, nor->params->size); + if (ret) + dev_dbg(nor->dev, "Failed to unlock the entire flash memory array\n"); } static int spi_nor_init(struct spi_nor *nor) @@ -2942,11 +2950,7 @@ return err; } - err = spi_nor_unlock_all(nor); - if (err) { - dev_dbg(nor->dev, "Failed to unlock the entire flash memory array\n"); - return err; - } + spi_nor_try_unlock_all(nor); if (nor->addr_width == 4 && !(nor->flags & SNOR_F_4B_OPCODES)) { /* @@ -3009,13 +3013,15 @@ /* already configured from SFDP */ } else if (nor->info->addr_width) { nor->addr_width = nor->info->addr_width; - } else if (nor->mtd.size > 0x1000000) { - /* enable 4-byte addressing if the device exceeds 16MiB */ - nor->addr_width = 4; } else { nor->addr_width = 3; } + if (nor->addr_width == 3 && nor->mtd.size > 0x1000000) { + /* enable 4-byte addressing if the device exceeds 16MiB */ + nor->addr_width = 4; + } + if (nor->addr_width > SPI_NOR_MAX_ADDR_WIDTH) { dev_dbg(nor->dev, "address width is too large: %u\n", nor->addr_width); --- linux-5.8.0.orig/drivers/mtd/spi-nor/core.h +++ linux-5.8.0/drivers/mtd/spi-nor/core.h @@ -409,6 +409,7 @@ int spi_nor_sr1_bit6_quad_enable(struct spi_nor *nor); int spi_nor_sr2_bit1_quad_enable(struct spi_nor *nor); int spi_nor_sr2_bit7_quad_enable(struct spi_nor *nor); +int spi_nor_write_sr_and_check(struct spi_nor *nor, u8 sr1); int spi_nor_xread_sr(struct spi_nor *nor, u8 *sr); ssize_t spi_nor_read_data(struct spi_nor *nor, loff_t from, size_t len, --- linux-5.8.0.orig/drivers/mtd/spi-nor/sfdp.c +++ linux-5.8.0/drivers/mtd/spi-nor/sfdp.c @@ -759,7 +759,7 @@ int i; for (i = 0; i < SNOR_ERASE_TYPE_MAX; i++) { - if (!(erase_type & BIT(i))) + if (!(erase[i].size && erase_type & BIT(erase[i].idx))) continue; if (region->size & erase[i].size_mask) { spi_nor_region_mark_overlay(region); @@ -829,6 +829,7 @@ offset = (region[i].offset & ~SNOR_ERASE_FLAGS_MASK) + region[i].size; } + spi_nor_region_mark_end(®ion[i - 1]); save_uniform_erase_type = map->uniform_erase_type; map->uniform_erase_type = spi_nor_sort_erase_mask(map, @@ -852,8 +853,6 @@ if (!(regions_erase_type & BIT(erase[i].idx))) spi_nor_set_erase_type(&erase[i], 0, 0xFF); - spi_nor_region_mark_end(®ion[i - 1]); - return 0; } --- linux-5.8.0.orig/drivers/mtd/spi-nor/sst.c +++ linux-5.8.0/drivers/mtd/spi-nor/sst.c @@ -18,7 +18,8 @@ SECT_4K | SST_WRITE) }, { "sst25vf032b", INFO(0xbf254a, 0, 64 * 1024, 64, SECT_4K | SST_WRITE) }, - { "sst25vf064c", INFO(0xbf254b, 0, 64 * 1024, 128, SECT_4K) }, + { "sst25vf064c", INFO(0xbf254b, 0, 64 * 1024, 128, + SECT_4K | SPI_NOR_4BIT_BP) }, { "sst25wf512", INFO(0xbf2501, 0, 64 * 1024, 1, SECT_4K | SST_WRITE) }, { "sst25wf010", INFO(0xbf2502, 0, 64 * 1024, 2, --- linux-5.8.0.orig/drivers/mtd/ubi/fastmap-wl.c +++ linux-5.8.0/drivers/mtd/ubi/fastmap-wl.c @@ -381,6 +381,11 @@ ubi->fm_anchor = NULL; } + if (ubi->fm_next_anchor) { + return_unused_peb(ubi, ubi->fm_next_anchor); + ubi->fm_next_anchor = NULL; + } + if (ubi->fm) { for (i = 0; i < ubi->fm->used_blocks; i++) kfree(ubi->fm->e[i]); --- linux-5.8.0.orig/drivers/mtd/ubi/wl.c +++ linux-5.8.0/drivers/mtd/ubi/wl.c @@ -1086,7 +1086,8 @@ if (!err) { spin_lock(&ubi->wl_lock); - if (!ubi->fm_next_anchor && e->pnum < UBI_FM_MAX_START) { + if (!ubi->fm_disabled && !ubi->fm_next_anchor && + e->pnum < UBI_FM_MAX_START) { /* Abort anchor production, if needed it will be * enabled again in the wear leveling started below. */ @@ -1638,6 +1639,19 @@ !ubi->thread_enabled || ubi_dbg_is_bgt_disabled(ubi)) { set_current_state(TASK_INTERRUPTIBLE); spin_unlock(&ubi->wl_lock); + + /* + * Check kthread_should_stop() after we set the task + * state to guarantee that we either see the stop bit + * and exit or the task state is reset to runnable such + * that it's not scheduled out indefinitely and detects + * the stop bit at kthread_should_stop(). + */ + if (kthread_should_stop()) { + set_current_state(TASK_RUNNING); + break; + } + schedule(); continue; } --- linux-5.8.0.orig/drivers/net/Kconfig +++ linux-5.8.0/drivers/net/Kconfig @@ -87,12 +87,12 @@ select CRYPTO_CURVE25519_X86 if X86 && 64BIT select ARM_CRYPTO if ARM select ARM64_CRYPTO if ARM64 - select CRYPTO_CHACHA20_NEON if (ARM || ARM64) && KERNEL_MODE_NEON + select CRYPTO_CHACHA20_NEON if ARM || (ARM64 && KERNEL_MODE_NEON) select CRYPTO_POLY1305_NEON if ARM64 && KERNEL_MODE_NEON select CRYPTO_POLY1305_ARM if ARM select CRYPTO_CURVE25519_NEON if ARM && KERNEL_MODE_NEON select CRYPTO_CHACHA_MIPS if CPU_MIPS32_R2 - select CRYPTO_POLY1305_MIPS if CPU_MIPS32 || (CPU_MIPS64 && 64BIT) + select CRYPTO_POLY1305_MIPS if MIPS help WireGuard is a secure, fast, and easy to use replacement for IPSec that uses modern cryptography and clever networking tricks. It's --- linux-5.8.0.orig/drivers/net/bareudp.c +++ linux-5.8.0/drivers/net/bareudp.c @@ -385,7 +385,7 @@ goto free_dst; min_headroom = LL_RESERVED_SPACE(dst->dev) + dst->header_len + - BAREUDP_BASE_HLEN + info->options_len + sizeof(struct iphdr); + BAREUDP_BASE_HLEN + info->options_len + sizeof(struct ipv6hdr); err = skb_cow_head(skb, min_headroom); if (unlikely(err)) @@ -539,6 +539,7 @@ SET_NETDEV_DEVTYPE(dev, &bareudp_type); dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; dev->features |= NETIF_F_RXCSUM; + dev->features |= NETIF_F_LLTX; dev->features |= NETIF_F_GSO_SOFTWARE; dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; dev->hw_features |= NETIF_F_GSO_SOFTWARE; @@ -648,11 +649,20 @@ return 0; } +static void bareudp_dellink(struct net_device *dev, struct list_head *head) +{ + struct bareudp_dev *bareudp = netdev_priv(dev); + + list_del(&bareudp->next); + unregister_netdevice_queue(dev, head); +} + static int bareudp_newlink(struct net *net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack) { struct bareudp_conf conf; + LIST_HEAD(list_kill); int err; err = bareudp2info(data, &conf, extack); @@ -665,17 +675,14 @@ err = bareudp_link_config(dev, tb); if (err) - return err; + goto err_unconfig; return 0; -} - -static void bareudp_dellink(struct net_device *dev, struct list_head *head) -{ - struct bareudp_dev *bareudp = netdev_priv(dev); - list_del(&bareudp->next); - unregister_netdevice_queue(dev, head); +err_unconfig: + bareudp_dellink(dev, &list_kill); + unregister_netdevice_many(&list_kill); + return err; } static size_t bareudp_get_size(const struct net_device *dev) --- linux-5.8.0.orig/drivers/net/bonding/bond_main.c +++ linux-5.8.0/drivers/net/bonding/bond_main.c @@ -1195,6 +1195,7 @@ bond_dev->type = slave_dev->type; bond_dev->hard_header_len = slave_dev->hard_header_len; + bond_dev->needed_headroom = slave_dev->needed_headroom; bond_dev->addr_len = slave_dev->addr_len; memcpy(bond_dev->broadcast, slave_dev->broadcast, @@ -1339,7 +1340,39 @@ slave->dev->flags &= ~IFF_SLAVE; } -static struct slave *bond_alloc_slave(struct bonding *bond) +static void slave_kobj_release(struct kobject *kobj) +{ + struct slave *slave = to_slave(kobj); + struct bonding *bond = bond_get_bond_by_slave(slave); + + cancel_delayed_work_sync(&slave->notify_work); + if (BOND_MODE(bond) == BOND_MODE_8023AD) + kfree(SLAVE_AD_INFO(slave)); + + kfree(slave); +} + +static struct kobj_type slave_ktype = { + .release = slave_kobj_release, +#ifdef CONFIG_SYSFS + .sysfs_ops = &slave_sysfs_ops, +#endif +}; + +static int bond_kobj_init(struct slave *slave) +{ + int err; + + err = kobject_init_and_add(&slave->kobj, &slave_ktype, + &(slave->dev->dev.kobj), "bonding_slave"); + if (err) + kobject_put(&slave->kobj); + + return err; +} + +static struct slave *bond_alloc_slave(struct bonding *bond, + struct net_device *slave_dev) { struct slave *slave = NULL; @@ -1347,11 +1380,17 @@ if (!slave) return NULL; + slave->bond = bond; + slave->dev = slave_dev; + + if (bond_kobj_init(slave)) + return NULL; + if (BOND_MODE(bond) == BOND_MODE_8023AD) { SLAVE_AD_INFO(slave) = kzalloc(sizeof(struct ad_slave_info), GFP_KERNEL); if (!SLAVE_AD_INFO(slave)) { - kfree(slave); + kobject_put(&slave->kobj); return NULL; } } @@ -1360,17 +1399,6 @@ return slave; } -static void bond_free_slave(struct slave *slave) -{ - struct bonding *bond = bond_get_bond_by_slave(slave); - - cancel_delayed_work_sync(&slave->notify_work); - if (BOND_MODE(bond) == BOND_MODE_8023AD) - kfree(SLAVE_AD_INFO(slave)); - - kfree(slave); -} - static void bond_fill_ifbond(struct bonding *bond, struct ifbond *info) { info->bond_mode = BOND_MODE(bond); @@ -1554,14 +1582,12 @@ goto err_undo_flags; } - new_slave = bond_alloc_slave(bond); + new_slave = bond_alloc_slave(bond, slave_dev); if (!new_slave) { res = -ENOMEM; goto err_undo_flags; } - new_slave->bond = bond; - new_slave->dev = slave_dev; /* Set the new_slave's queue_id to be zero. Queue ID mapping * is set via sysfs or module option if desired. */ @@ -1883,7 +1909,7 @@ dev_set_mtu(slave_dev, new_slave->original_mtu); err_free: - bond_free_slave(new_slave); + kobject_put(&new_slave->kobj); err_undo_flags: /* Enslave of first slave has failed and we need to fix master's mac */ @@ -2063,7 +2089,7 @@ if (!netif_is_bond_master(slave_dev)) slave_dev->priv_flags &= ~IFF_BONDING; - bond_free_slave(slave); + kobject_put(&slave->kobj); return 0; } @@ -2084,7 +2110,8 @@ int ret; ret = __bond_release_one(bond_dev, slave_dev, false, true); - if (ret == 0 && !bond_has_slaves(bond)) { + if (ret == 0 && !bond_has_slaves(bond) && + bond_dev->reg_state != NETREG_UNREGISTERING) { bond_dev->priv_flags |= IFF_DISABLE_NETPOLL; netdev_info(bond_dev, "Destroying bond\n"); bond_remove_proc_entry(bond); @@ -2824,6 +2851,9 @@ if (bond_time_in_interval(bond, last_rx, 1)) { bond_propose_link_state(slave, BOND_LINK_UP); commit++; + } else if (slave->link == BOND_LINK_BACK) { + bond_propose_link_state(slave, BOND_LINK_FAIL); + commit++; } continue; } @@ -2932,6 +2962,19 @@ continue; + case BOND_LINK_FAIL: + bond_set_slave_link_state(slave, BOND_LINK_FAIL, + BOND_SLAVE_NOTIFY_NOW); + bond_set_slave_inactive_flags(slave, + BOND_SLAVE_NOTIFY_NOW); + + /* A slave has just been enslaved and has become + * the current active slave. + */ + if (rtnl_dereference(bond->curr_active_slave)) + RCU_INIT_POINTER(bond->current_arp_slave, NULL); + continue; + default: slave_err(bond->dev, slave->dev, "impossible: link_new_state %d on slave\n", @@ -2982,8 +3025,6 @@ return should_notify_rtnl; } - bond_set_slave_inactive_flags(curr_arp_slave, BOND_SLAVE_NOTIFY_LATER); - bond_for_each_slave_rcu(bond, slave, iter) { if (!found && !before && bond_slave_is_up(slave)) before = slave; @@ -4431,13 +4472,23 @@ return ret; } +static u32 bond_mode_bcast_speed(struct slave *slave, u32 speed) +{ + if (speed == 0 || speed == SPEED_UNKNOWN) + speed = slave->speed; + else + speed = min(speed, slave->speed); + + return speed; +} + static int bond_ethtool_get_link_ksettings(struct net_device *bond_dev, struct ethtool_link_ksettings *cmd) { struct bonding *bond = netdev_priv(bond_dev); - unsigned long speed = 0; struct list_head *iter; struct slave *slave; + u32 speed = 0; cmd->base.duplex = DUPLEX_UNKNOWN; cmd->base.port = PORT_OTHER; @@ -4449,8 +4500,13 @@ */ bond_for_each_slave(bond, slave, iter) { if (bond_slave_can_tx(slave)) { - if (slave->speed != SPEED_UNKNOWN) - speed += slave->speed; + if (slave->speed != SPEED_UNKNOWN) { + if (BOND_MODE(bond) == BOND_MODE_BROADCAST) + speed = bond_mode_bcast_speed(slave, + speed); + else + speed += slave->speed; + } if (cmd->base.duplex == DUPLEX_UNKNOWN && slave->duplex != DUPLEX_UNKNOWN) cmd->base.duplex = slave->duplex; --- linux-5.8.0.orig/drivers/net/bonding/bond_sysfs_slave.c +++ linux-5.8.0/drivers/net/bonding/bond_sysfs_slave.c @@ -121,7 +121,6 @@ }; #define to_slave_attr(_at) container_of(_at, struct slave_attribute, attr) -#define to_slave(obj) container_of(obj, struct slave, kobj) static ssize_t slave_show(struct kobject *kobj, struct attribute *attr, char *buf) @@ -132,28 +131,15 @@ return slave_attr->show(slave, buf); } -static const struct sysfs_ops slave_sysfs_ops = { +const struct sysfs_ops slave_sysfs_ops = { .show = slave_show, }; -static struct kobj_type slave_ktype = { -#ifdef CONFIG_SYSFS - .sysfs_ops = &slave_sysfs_ops, -#endif -}; - int bond_sysfs_slave_add(struct slave *slave) { const struct slave_attribute **a; int err; - err = kobject_init_and_add(&slave->kobj, &slave_ktype, - &(slave->dev->dev.kobj), "bonding_slave"); - if (err) { - kobject_put(&slave->kobj); - return err; - } - for (a = slave_attrs; *a; ++a) { err = sysfs_create_file(&slave->kobj, &((*a)->attr)); if (err) { @@ -171,6 +157,4 @@ for (a = slave_attrs; *a; ++a) sysfs_remove_file(&slave->kobj, &((*a)->attr)); - - kobject_put(&slave->kobj); } --- linux-5.8.0.orig/drivers/net/can/Kconfig +++ linux-5.8.0/drivers/net/can/Kconfig @@ -123,6 +123,7 @@ config CAN_KVASER_PCIEFD depends on PCI tristate "Kvaser PCIe FD cards" + select CRC32 help This is a driver for the Kvaser PCI Express CAN FD family. --- linux-5.8.0.orig/drivers/net/can/Makefile +++ linux-5.8.0/drivers/net/can/Makefile @@ -7,12 +7,7 @@ obj-$(CONFIG_CAN_VXCAN) += vxcan.o obj-$(CONFIG_CAN_SLCAN) += slcan.o -obj-$(CONFIG_CAN_DEV) += can-dev.o -can-dev-y += dev.o -can-dev-y += rx-offload.o - -can-dev-$(CONFIG_CAN_LEDS) += led.o - +obj-y += dev/ obj-y += rcar/ obj-y += spi/ obj-y += usb/ --- linux-5.8.0.orig/drivers/net/can/c_can/c_can.c +++ linux-5.8.0/drivers/net/can/c_can/c_can.c @@ -212,18 +212,6 @@ .brp_inc = 1, }; -static inline void c_can_pm_runtime_enable(const struct c_can_priv *priv) -{ - if (priv->device) - pm_runtime_enable(priv->device); -} - -static inline void c_can_pm_runtime_disable(const struct c_can_priv *priv) -{ - if (priv->device) - pm_runtime_disable(priv->device); -} - static inline void c_can_pm_runtime_get_sync(const struct c_can_priv *priv) { if (priv->device) @@ -1304,12 +1292,22 @@ time_after(time_out, jiffies)) cpu_relax(); - if (time_after(jiffies, time_out)) - return -ETIMEDOUT; + if (time_after(jiffies, time_out)) { + ret = -ETIMEDOUT; + goto err_out; + } ret = c_can_start(dev); - if (!ret) - c_can_irq_control(priv, true); + if (ret) + goto err_out; + + c_can_irq_control(priv, true); + + return 0; + +err_out: + c_can_reset_ram(priv, false); + c_can_pm_runtime_put_sync(priv); return ret; } @@ -1334,7 +1332,6 @@ int register_c_can_dev(struct net_device *dev) { - struct c_can_priv *priv = netdev_priv(dev); int err; /* Deactivate pins to prevent DRA7 DCAN IP from being @@ -1344,28 +1341,19 @@ */ pinctrl_pm_select_sleep_state(dev->dev.parent); - c_can_pm_runtime_enable(priv); - dev->flags |= IFF_ECHO; /* we support local echo */ dev->netdev_ops = &c_can_netdev_ops; err = register_candev(dev); - if (err) - c_can_pm_runtime_disable(priv); - else + if (!err) devm_can_led_init(dev); - return err; } EXPORT_SYMBOL_GPL(register_c_can_dev); void unregister_c_can_dev(struct net_device *dev) { - struct c_can_priv *priv = netdev_priv(dev); - unregister_candev(dev); - - c_can_pm_runtime_disable(priv); } EXPORT_SYMBOL_GPL(unregister_c_can_dev); --- linux-5.8.0.orig/drivers/net/can/c_can/c_can_pci.c +++ linux-5.8.0/drivers/net/can/c_can/c_can_pci.c @@ -239,12 +239,13 @@ { struct net_device *dev = pci_get_drvdata(pdev); struct c_can_priv *priv = netdev_priv(dev); + void __iomem *addr = priv->base; unregister_c_can_dev(dev); free_c_can_dev(dev); - pci_iounmap(pdev, priv->base); + pci_iounmap(pdev, addr); pci_disable_msi(pdev); pci_clear_master(pdev); pci_release_regions(pdev); --- linux-5.8.0.orig/drivers/net/can/c_can/c_can_platform.c +++ linux-5.8.0/drivers/net/can/c_can/c_can_platform.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -386,6 +387,7 @@ platform_set_drvdata(pdev, dev); SET_NETDEV_DEV(dev, &pdev->dev); + pm_runtime_enable(priv->device); ret = register_c_can_dev(dev); if (ret) { dev_err(&pdev->dev, "registering %s failed (err=%d)\n", @@ -398,6 +400,7 @@ return 0; exit_free_device: + pm_runtime_disable(priv->device); free_c_can_dev(dev); exit: dev_err(&pdev->dev, "probe failed\n"); @@ -408,9 +411,10 @@ static int c_can_plat_remove(struct platform_device *pdev) { struct net_device *dev = platform_get_drvdata(pdev); + struct c_can_priv *priv = netdev_priv(dev); unregister_c_can_dev(dev); - + pm_runtime_disable(priv->device); free_c_can_dev(dev); return 0; --- linux-5.8.0.orig/drivers/net/can/dev/Makefile +++ linux-5.8.0/drivers/net/can/dev/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-$(CONFIG_CAN_DEV) += can-dev.o +can-dev-y += dev.o +can-dev-y += rx-offload.o + +can-dev-$(CONFIG_CAN_LEDS) += led.o --- linux-5.8.0.orig/drivers/net/can/dev/dev.c +++ linux-5.8.0/drivers/net/can/dev/dev.c @@ -0,0 +1,1311 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2005 Marc Kleine-Budde, Pengutronix + * Copyright (C) 2006 Andrey Volkov, Varma Electronics + * Copyright (C) 2008-2009 Wolfgang Grandegger + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MOD_DESC "CAN device driver interface" + +MODULE_DESCRIPTION(MOD_DESC); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Wolfgang Grandegger "); + +/* CAN DLC to real data length conversion helpers */ + +static const u8 dlc2len[] = {0, 1, 2, 3, 4, 5, 6, 7, + 8, 12, 16, 20, 24, 32, 48, 64}; + +/* get data length from can_dlc with sanitized can_dlc */ +u8 can_dlc2len(u8 can_dlc) +{ + return dlc2len[can_dlc & 0x0F]; +} +EXPORT_SYMBOL_GPL(can_dlc2len); + +static const u8 len2dlc[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, /* 0 - 8 */ + 9, 9, 9, 9, /* 9 - 12 */ + 10, 10, 10, 10, /* 13 - 16 */ + 11, 11, 11, 11, /* 17 - 20 */ + 12, 12, 12, 12, /* 21 - 24 */ + 13, 13, 13, 13, 13, 13, 13, 13, /* 25 - 32 */ + 14, 14, 14, 14, 14, 14, 14, 14, /* 33 - 40 */ + 14, 14, 14, 14, 14, 14, 14, 14, /* 41 - 48 */ + 15, 15, 15, 15, 15, 15, 15, 15, /* 49 - 56 */ + 15, 15, 15, 15, 15, 15, 15, 15}; /* 57 - 64 */ + +/* map the sanitized data length to an appropriate data length code */ +u8 can_len2dlc(u8 len) +{ + if (unlikely(len > 64)) + return 0xF; + + return len2dlc[len]; +} +EXPORT_SYMBOL_GPL(can_len2dlc); + +#ifdef CONFIG_CAN_CALC_BITTIMING +#define CAN_CALC_MAX_ERROR 50 /* in one-tenth of a percent */ +#define CAN_CALC_SYNC_SEG 1 + +/* Bit-timing calculation derived from: + * + * Code based on LinCAN sources and H8S2638 project + * Copyright 2004-2006 Pavel Pisa - DCE FELK CVUT cz + * Copyright 2005 Stanislav Marek + * email: pisa@cmp.felk.cvut.cz + * + * Calculates proper bit-timing parameters for a specified bit-rate + * and sample-point, which can then be used to set the bit-timing + * registers of the CAN controller. You can find more information + * in the header file linux/can/netlink.h. + */ +static int +can_update_sample_point(const struct can_bittiming_const *btc, + unsigned int sample_point_nominal, unsigned int tseg, + unsigned int *tseg1_ptr, unsigned int *tseg2_ptr, + unsigned int *sample_point_error_ptr) +{ + unsigned int sample_point_error, best_sample_point_error = UINT_MAX; + unsigned int sample_point, best_sample_point = 0; + unsigned int tseg1, tseg2; + int i; + + for (i = 0; i <= 1; i++) { + tseg2 = tseg + CAN_CALC_SYNC_SEG - + (sample_point_nominal * (tseg + CAN_CALC_SYNC_SEG)) / + 1000 - i; + tseg2 = clamp(tseg2, btc->tseg2_min, btc->tseg2_max); + tseg1 = tseg - tseg2; + if (tseg1 > btc->tseg1_max) { + tseg1 = btc->tseg1_max; + tseg2 = tseg - tseg1; + } + + sample_point = 1000 * (tseg + CAN_CALC_SYNC_SEG - tseg2) / + (tseg + CAN_CALC_SYNC_SEG); + sample_point_error = abs(sample_point_nominal - sample_point); + + if (sample_point <= sample_point_nominal && + sample_point_error < best_sample_point_error) { + best_sample_point = sample_point; + best_sample_point_error = sample_point_error; + *tseg1_ptr = tseg1; + *tseg2_ptr = tseg2; + } + } + + if (sample_point_error_ptr) + *sample_point_error_ptr = best_sample_point_error; + + return best_sample_point; +} + +static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt, + const struct can_bittiming_const *btc) +{ + struct can_priv *priv = netdev_priv(dev); + unsigned int bitrate; /* current bitrate */ + unsigned int bitrate_error; /* difference between current and nominal value */ + unsigned int best_bitrate_error = UINT_MAX; + unsigned int sample_point_error; /* difference between current and nominal value */ + unsigned int best_sample_point_error = UINT_MAX; + unsigned int sample_point_nominal; /* nominal sample point */ + unsigned int best_tseg = 0; /* current best value for tseg */ + unsigned int best_brp = 0; /* current best value for brp */ + unsigned int brp, tsegall, tseg, tseg1 = 0, tseg2 = 0; + u64 v64; + + /* Use CiA recommended sample points */ + if (bt->sample_point) { + sample_point_nominal = bt->sample_point; + } else { + if (bt->bitrate > 800000) + sample_point_nominal = 750; + else if (bt->bitrate > 500000) + sample_point_nominal = 800; + else + sample_point_nominal = 875; + } + + /* tseg even = round down, odd = round up */ + for (tseg = (btc->tseg1_max + btc->tseg2_max) * 2 + 1; + tseg >= (btc->tseg1_min + btc->tseg2_min) * 2; tseg--) { + tsegall = CAN_CALC_SYNC_SEG + tseg / 2; + + /* Compute all possible tseg choices (tseg=tseg1+tseg2) */ + brp = priv->clock.freq / (tsegall * bt->bitrate) + tseg % 2; + + /* choose brp step which is possible in system */ + brp = (brp / btc->brp_inc) * btc->brp_inc; + if (brp < btc->brp_min || brp > btc->brp_max) + continue; + + bitrate = priv->clock.freq / (brp * tsegall); + bitrate_error = abs(bt->bitrate - bitrate); + + /* tseg brp biterror */ + if (bitrate_error > best_bitrate_error) + continue; + + /* reset sample point error if we have a better bitrate */ + if (bitrate_error < best_bitrate_error) + best_sample_point_error = UINT_MAX; + + can_update_sample_point(btc, sample_point_nominal, tseg / 2, + &tseg1, &tseg2, &sample_point_error); + if (sample_point_error > best_sample_point_error) + continue; + + best_sample_point_error = sample_point_error; + best_bitrate_error = bitrate_error; + best_tseg = tseg / 2; + best_brp = brp; + + if (bitrate_error == 0 && sample_point_error == 0) + break; + } + + if (best_bitrate_error) { + /* Error in one-tenth of a percent */ + v64 = (u64)best_bitrate_error * 1000; + do_div(v64, bt->bitrate); + bitrate_error = (u32)v64; + if (bitrate_error > CAN_CALC_MAX_ERROR) { + netdev_err(dev, + "bitrate error %d.%d%% too high\n", + bitrate_error / 10, bitrate_error % 10); + return -EDOM; + } + netdev_warn(dev, "bitrate error %d.%d%%\n", + bitrate_error / 10, bitrate_error % 10); + } + + /* real sample point */ + bt->sample_point = can_update_sample_point(btc, sample_point_nominal, + best_tseg, &tseg1, &tseg2, + NULL); + + v64 = (u64)best_brp * 1000 * 1000 * 1000; + do_div(v64, priv->clock.freq); + bt->tq = (u32)v64; + bt->prop_seg = tseg1 / 2; + bt->phase_seg1 = tseg1 - bt->prop_seg; + bt->phase_seg2 = tseg2; + + /* check for sjw user settings */ + if (!bt->sjw || !btc->sjw_max) { + bt->sjw = 1; + } else { + /* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */ + if (bt->sjw > btc->sjw_max) + bt->sjw = btc->sjw_max; + /* bt->sjw must not be higher than tseg2 */ + if (tseg2 < bt->sjw) + bt->sjw = tseg2; + } + + bt->brp = best_brp; + + /* real bitrate */ + bt->bitrate = priv->clock.freq / + (bt->brp * (CAN_CALC_SYNC_SEG + tseg1 + tseg2)); + + return 0; +} +#else /* !CONFIG_CAN_CALC_BITTIMING */ +static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt, + const struct can_bittiming_const *btc) +{ + netdev_err(dev, "bit-timing calculation not available\n"); + return -EINVAL; +} +#endif /* CONFIG_CAN_CALC_BITTIMING */ + +/* Checks the validity of the specified bit-timing parameters prop_seg, + * phase_seg1, phase_seg2 and sjw and tries to determine the bitrate + * prescaler value brp. You can find more information in the header + * file linux/can/netlink.h. + */ +static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt, + const struct can_bittiming_const *btc) +{ + struct can_priv *priv = netdev_priv(dev); + int tseg1, alltseg; + u64 brp64; + + tseg1 = bt->prop_seg + bt->phase_seg1; + if (!bt->sjw) + bt->sjw = 1; + if (bt->sjw > btc->sjw_max || + tseg1 < btc->tseg1_min || tseg1 > btc->tseg1_max || + bt->phase_seg2 < btc->tseg2_min || bt->phase_seg2 > btc->tseg2_max) + return -ERANGE; + + brp64 = (u64)priv->clock.freq * (u64)bt->tq; + if (btc->brp_inc > 1) + do_div(brp64, btc->brp_inc); + brp64 += 500000000UL - 1; + do_div(brp64, 1000000000UL); /* the practicable BRP */ + if (btc->brp_inc > 1) + brp64 *= btc->brp_inc; + bt->brp = (u32)brp64; + + if (bt->brp < btc->brp_min || bt->brp > btc->brp_max) + return -EINVAL; + + alltseg = bt->prop_seg + bt->phase_seg1 + bt->phase_seg2 + 1; + bt->bitrate = priv->clock.freq / (bt->brp * alltseg); + bt->sample_point = ((tseg1 + 1) * 1000) / alltseg; + + return 0; +} + +/* Checks the validity of predefined bitrate settings */ +static int +can_validate_bitrate(struct net_device *dev, struct can_bittiming *bt, + const u32 *bitrate_const, + const unsigned int bitrate_const_cnt) +{ + struct can_priv *priv = netdev_priv(dev); + unsigned int i; + + for (i = 0; i < bitrate_const_cnt; i++) { + if (bt->bitrate == bitrate_const[i]) + break; + } + + if (i >= priv->bitrate_const_cnt) + return -EINVAL; + + return 0; +} + +static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt, + const struct can_bittiming_const *btc, + const u32 *bitrate_const, + const unsigned int bitrate_const_cnt) +{ + int err; + + /* Depending on the given can_bittiming parameter structure the CAN + * timing parameters are calculated based on the provided bitrate OR + * alternatively the CAN timing parameters (tq, prop_seg, etc.) are + * provided directly which are then checked and fixed up. + */ + if (!bt->tq && bt->bitrate && btc) + err = can_calc_bittiming(dev, bt, btc); + else if (bt->tq && !bt->bitrate && btc) + err = can_fixup_bittiming(dev, bt, btc); + else if (!bt->tq && bt->bitrate && bitrate_const) + err = can_validate_bitrate(dev, bt, bitrate_const, + bitrate_const_cnt); + else + err = -EINVAL; + + return err; +} + +static void can_update_state_error_stats(struct net_device *dev, + enum can_state new_state) +{ + struct can_priv *priv = netdev_priv(dev); + + if (new_state <= priv->state) + return; + + switch (new_state) { + case CAN_STATE_ERROR_WARNING: + priv->can_stats.error_warning++; + break; + case CAN_STATE_ERROR_PASSIVE: + priv->can_stats.error_passive++; + break; + case CAN_STATE_BUS_OFF: + priv->can_stats.bus_off++; + break; + default: + break; + } +} + +static int can_tx_state_to_frame(struct net_device *dev, enum can_state state) +{ + switch (state) { + case CAN_STATE_ERROR_ACTIVE: + return CAN_ERR_CRTL_ACTIVE; + case CAN_STATE_ERROR_WARNING: + return CAN_ERR_CRTL_TX_WARNING; + case CAN_STATE_ERROR_PASSIVE: + return CAN_ERR_CRTL_TX_PASSIVE; + default: + return 0; + } +} + +static int can_rx_state_to_frame(struct net_device *dev, enum can_state state) +{ + switch (state) { + case CAN_STATE_ERROR_ACTIVE: + return CAN_ERR_CRTL_ACTIVE; + case CAN_STATE_ERROR_WARNING: + return CAN_ERR_CRTL_RX_WARNING; + case CAN_STATE_ERROR_PASSIVE: + return CAN_ERR_CRTL_RX_PASSIVE; + default: + return 0; + } +} + +void can_change_state(struct net_device *dev, struct can_frame *cf, + enum can_state tx_state, enum can_state rx_state) +{ + struct can_priv *priv = netdev_priv(dev); + enum can_state new_state = max(tx_state, rx_state); + + if (unlikely(new_state == priv->state)) { + netdev_warn(dev, "%s: oops, state did not change", __func__); + return; + } + + netdev_dbg(dev, "New error state: %d\n", new_state); + + can_update_state_error_stats(dev, new_state); + priv->state = new_state; + + if (!cf) + return; + + if (unlikely(new_state == CAN_STATE_BUS_OFF)) { + cf->can_id |= CAN_ERR_BUSOFF; + return; + } + + cf->can_id |= CAN_ERR_CRTL; + cf->data[1] |= tx_state >= rx_state ? + can_tx_state_to_frame(dev, tx_state) : 0; + cf->data[1] |= tx_state <= rx_state ? + can_rx_state_to_frame(dev, rx_state) : 0; +} +EXPORT_SYMBOL_GPL(can_change_state); + +/* Local echo of CAN messages + * + * CAN network devices *should* support a local echo functionality + * (see Documentation/networking/can.rst). To test the handling of CAN + * interfaces that do not support the local echo both driver types are + * implemented. In the case that the driver does not support the echo + * the IFF_ECHO remains clear in dev->flags. This causes the PF_CAN core + * to perform the echo as a fallback solution. + */ +static void can_flush_echo_skb(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + struct net_device_stats *stats = &dev->stats; + int i; + + for (i = 0; i < priv->echo_skb_max; i++) { + if (priv->echo_skb[i]) { + kfree_skb(priv->echo_skb[i]); + priv->echo_skb[i] = NULL; + stats->tx_dropped++; + stats->tx_aborted_errors++; + } + } +} + +/* Put the skb on the stack to be looped backed locally lateron + * + * The function is typically called in the start_xmit function + * of the device driver. The driver must protect access to + * priv->echo_skb, if necessary. + */ +void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, + unsigned int idx) +{ + struct can_priv *priv = netdev_priv(dev); + + BUG_ON(idx >= priv->echo_skb_max); + + /* check flag whether this packet has to be looped back */ + if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK || + (skb->protocol != htons(ETH_P_CAN) && + skb->protocol != htons(ETH_P_CANFD))) { + kfree_skb(skb); + return; + } + + if (!priv->echo_skb[idx]) { + skb = can_create_echo_skb(skb); + if (!skb) + return; + + /* make settings for echo to reduce code in irq context */ + skb->pkt_type = PACKET_BROADCAST; + skb->ip_summed = CHECKSUM_UNNECESSARY; + skb->dev = dev; + + /* save this skb for tx interrupt echo handling */ + priv->echo_skb[idx] = skb; + } else { + /* locking problem with netif_stop_queue() ?? */ + netdev_err(dev, "%s: BUG! echo_skb is occupied!\n", __func__); + kfree_skb(skb); + } +} +EXPORT_SYMBOL_GPL(can_put_echo_skb); + +struct sk_buff * +__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr) +{ + struct can_priv *priv = netdev_priv(dev); + + if (idx >= priv->echo_skb_max) { + netdev_err(dev, "%s: BUG! Trying to access can_priv::echo_skb out of bounds (%u/max %u)\n", + __func__, idx, priv->echo_skb_max); + return NULL; + } + + if (priv->echo_skb[idx]) { + /* Using "struct canfd_frame::len" for the frame + * length is supported on both CAN and CANFD frames. + */ + struct sk_buff *skb = priv->echo_skb[idx]; + struct canfd_frame *cf = (struct canfd_frame *)skb->data; + + /* get the real payload length for netdev statistics */ + if (cf->can_id & CAN_RTR_FLAG) + *len_ptr = 0; + else + *len_ptr = cf->len; + + priv->echo_skb[idx] = NULL; + + return skb; + } + + return NULL; +} + +/* Get the skb from the stack and loop it back locally + * + * The function is typically called when the TX done interrupt + * is handled in the device driver. The driver must protect + * access to priv->echo_skb, if necessary. + */ +unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx) +{ + struct sk_buff *skb; + u8 len; + + skb = __can_get_echo_skb(dev, idx, &len); + if (!skb) + return 0; + + skb_get(skb); + if (netif_rx(skb) == NET_RX_SUCCESS) + dev_consume_skb_any(skb); + else + dev_kfree_skb_any(skb); + + return len; +} +EXPORT_SYMBOL_GPL(can_get_echo_skb); + +/* Remove the skb from the stack and free it. + * + * The function is typically called when TX failed. + */ +void can_free_echo_skb(struct net_device *dev, unsigned int idx) +{ + struct can_priv *priv = netdev_priv(dev); + + BUG_ON(idx >= priv->echo_skb_max); + + if (priv->echo_skb[idx]) { + dev_kfree_skb_any(priv->echo_skb[idx]); + priv->echo_skb[idx] = NULL; + } +} +EXPORT_SYMBOL_GPL(can_free_echo_skb); + +/* CAN device restart for bus-off recovery */ +static void can_restart(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + struct net_device_stats *stats = &dev->stats; + struct sk_buff *skb; + struct can_frame *cf; + int err; + + BUG_ON(netif_carrier_ok(dev)); + + /* No synchronization needed because the device is bus-off and + * no messages can come in or go out. + */ + can_flush_echo_skb(dev); + + /* send restart message upstream */ + skb = alloc_can_err_skb(dev, &cf); + if (!skb) + goto restart; + + cf->can_id |= CAN_ERR_RESTARTED; + + stats->rx_packets++; + stats->rx_bytes += cf->can_dlc; + + netif_rx_ni(skb); + +restart: + netdev_dbg(dev, "restarted\n"); + priv->can_stats.restarts++; + + /* Now restart the device */ + err = priv->do_set_mode(dev, CAN_MODE_START); + + netif_carrier_on(dev); + if (err) + netdev_err(dev, "Error %d during restart", err); +} + +static void can_restart_work(struct work_struct *work) +{ + struct delayed_work *dwork = to_delayed_work(work); + struct can_priv *priv = container_of(dwork, struct can_priv, + restart_work); + + can_restart(priv->dev); +} + +int can_restart_now(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + /* A manual restart is only permitted if automatic restart is + * disabled and the device is in the bus-off state + */ + if (priv->restart_ms) + return -EINVAL; + if (priv->state != CAN_STATE_BUS_OFF) + return -EBUSY; + + cancel_delayed_work_sync(&priv->restart_work); + can_restart(dev); + + return 0; +} + +/* CAN bus-off + * + * This functions should be called when the device goes bus-off to + * tell the netif layer that no more packets can be sent or received. + * If enabled, a timer is started to trigger bus-off recovery. + */ +void can_bus_off(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + netdev_info(dev, "bus-off\n"); + + netif_carrier_off(dev); + + if (priv->restart_ms) + schedule_delayed_work(&priv->restart_work, + msecs_to_jiffies(priv->restart_ms)); +} +EXPORT_SYMBOL_GPL(can_bus_off); + +static void can_setup(struct net_device *dev) +{ + dev->type = ARPHRD_CAN; + dev->mtu = CAN_MTU; + dev->hard_header_len = 0; + dev->addr_len = 0; + dev->tx_queue_len = 10; + + /* New-style flags. */ + dev->flags = IFF_NOARP; + dev->features = NETIF_F_HW_CSUM; +} + +struct sk_buff *alloc_can_skb(struct net_device *dev, struct can_frame **cf) +{ + struct sk_buff *skb; + + skb = netdev_alloc_skb(dev, sizeof(struct can_skb_priv) + + sizeof(struct can_frame)); + if (unlikely(!skb)) + return NULL; + + skb->protocol = htons(ETH_P_CAN); + skb->pkt_type = PACKET_BROADCAST; + skb->ip_summed = CHECKSUM_UNNECESSARY; + + skb_reset_mac_header(skb); + skb_reset_network_header(skb); + skb_reset_transport_header(skb); + + can_skb_reserve(skb); + can_skb_prv(skb)->ifindex = dev->ifindex; + can_skb_prv(skb)->skbcnt = 0; + + *cf = skb_put_zero(skb, sizeof(struct can_frame)); + + return skb; +} +EXPORT_SYMBOL_GPL(alloc_can_skb); + +struct sk_buff *alloc_canfd_skb(struct net_device *dev, + struct canfd_frame **cfd) +{ + struct sk_buff *skb; + + skb = netdev_alloc_skb(dev, sizeof(struct can_skb_priv) + + sizeof(struct canfd_frame)); + if (unlikely(!skb)) + return NULL; + + skb->protocol = htons(ETH_P_CANFD); + skb->pkt_type = PACKET_BROADCAST; + skb->ip_summed = CHECKSUM_UNNECESSARY; + + skb_reset_mac_header(skb); + skb_reset_network_header(skb); + skb_reset_transport_header(skb); + + can_skb_reserve(skb); + can_skb_prv(skb)->ifindex = dev->ifindex; + can_skb_prv(skb)->skbcnt = 0; + + *cfd = skb_put_zero(skb, sizeof(struct canfd_frame)); + + return skb; +} +EXPORT_SYMBOL_GPL(alloc_canfd_skb); + +struct sk_buff *alloc_can_err_skb(struct net_device *dev, struct can_frame **cf) +{ + struct sk_buff *skb; + + skb = alloc_can_skb(dev, cf); + if (unlikely(!skb)) + return NULL; + + (*cf)->can_id = CAN_ERR_FLAG; + (*cf)->can_dlc = CAN_ERR_DLC; + + return skb; +} +EXPORT_SYMBOL_GPL(alloc_can_err_skb); + +/* Allocate and setup space for the CAN network device */ +struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max, + unsigned int txqs, unsigned int rxqs) +{ + struct can_ml_priv *can_ml; + struct net_device *dev; + struct can_priv *priv; + int size; + + /* We put the driver's priv, the CAN mid layer priv and the + * echo skb into the netdevice's priv. The memory layout for + * the netdev_priv is like this: + * + * +-------------------------+ + * | driver's priv | + * +-------------------------+ + * | struct can_ml_priv | + * +-------------------------+ + * | array of struct sk_buff | + * +-------------------------+ + */ + + size = ALIGN(sizeof_priv, NETDEV_ALIGN) + sizeof(struct can_ml_priv); + + if (echo_skb_max) + size = ALIGN(size, sizeof(struct sk_buff *)) + + echo_skb_max * sizeof(struct sk_buff *); + + dev = alloc_netdev_mqs(size, "can%d", NET_NAME_UNKNOWN, can_setup, + txqs, rxqs); + if (!dev) + return NULL; + + priv = netdev_priv(dev); + priv->dev = dev; + + can_ml = (void *)priv + ALIGN(sizeof_priv, NETDEV_ALIGN); + can_set_ml_priv(dev, can_ml); + + if (echo_skb_max) { + priv->echo_skb_max = echo_skb_max; + priv->echo_skb = (void *)priv + + (size - echo_skb_max * sizeof(struct sk_buff *)); + } + + priv->state = CAN_STATE_STOPPED; + + INIT_DELAYED_WORK(&priv->restart_work, can_restart_work); + + return dev; +} +EXPORT_SYMBOL_GPL(alloc_candev_mqs); + +/* Free space of the CAN network device */ +void free_candev(struct net_device *dev) +{ + free_netdev(dev); +} +EXPORT_SYMBOL_GPL(free_candev); + +/* changing MTU and control mode for CAN/CANFD devices */ +int can_change_mtu(struct net_device *dev, int new_mtu) +{ + struct can_priv *priv = netdev_priv(dev); + + /* Do not allow changing the MTU while running */ + if (dev->flags & IFF_UP) + return -EBUSY; + + /* allow change of MTU according to the CANFD ability of the device */ + switch (new_mtu) { + case CAN_MTU: + /* 'CANFD-only' controllers can not switch to CAN_MTU */ + if (priv->ctrlmode_static & CAN_CTRLMODE_FD) + return -EINVAL; + + priv->ctrlmode &= ~CAN_CTRLMODE_FD; + break; + + case CANFD_MTU: + /* check for potential CANFD ability */ + if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) && + !(priv->ctrlmode_static & CAN_CTRLMODE_FD)) + return -EINVAL; + + priv->ctrlmode |= CAN_CTRLMODE_FD; + break; + + default: + return -EINVAL; + } + + dev->mtu = new_mtu; + return 0; +} +EXPORT_SYMBOL_GPL(can_change_mtu); + +/* Common open function when the device gets opened. + * + * This function should be called in the open function of the device + * driver. + */ +int open_candev(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + if (!priv->bittiming.bitrate) { + netdev_err(dev, "bit-timing not yet defined\n"); + return -EINVAL; + } + + /* For CAN FD the data bitrate has to be >= the arbitration bitrate */ + if ((priv->ctrlmode & CAN_CTRLMODE_FD) && + (!priv->data_bittiming.bitrate || + priv->data_bittiming.bitrate < priv->bittiming.bitrate)) { + netdev_err(dev, "incorrect/missing data bit-timing\n"); + return -EINVAL; + } + + /* Switch carrier on if device was stopped while in bus-off state */ + if (!netif_carrier_ok(dev)) + netif_carrier_on(dev); + + return 0; +} +EXPORT_SYMBOL_GPL(open_candev); + +#ifdef CONFIG_OF +/* Common function that can be used to understand the limitation of + * a transceiver when it provides no means to determine these limitations + * at runtime. + */ +void of_can_transceiver(struct net_device *dev) +{ + struct device_node *dn; + struct can_priv *priv = netdev_priv(dev); + struct device_node *np = dev->dev.parent->of_node; + int ret; + + dn = of_get_child_by_name(np, "can-transceiver"); + if (!dn) + return; + + ret = of_property_read_u32(dn, "max-bitrate", &priv->bitrate_max); + of_node_put(dn); + if ((ret && ret != -EINVAL) || (!ret && !priv->bitrate_max)) + netdev_warn(dev, "Invalid value for transceiver max bitrate. Ignoring bitrate limit.\n"); +} +EXPORT_SYMBOL_GPL(of_can_transceiver); +#endif + +/* Common close function for cleanup before the device gets closed. + * + * This function should be called in the close function of the device + * driver. + */ +void close_candev(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + cancel_delayed_work_sync(&priv->restart_work); + can_flush_echo_skb(dev); +} +EXPORT_SYMBOL_GPL(close_candev); + +/* CAN netlink interface */ +static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = { + [IFLA_CAN_STATE] = { .type = NLA_U32 }, + [IFLA_CAN_CTRLMODE] = { .len = sizeof(struct can_ctrlmode) }, + [IFLA_CAN_RESTART_MS] = { .type = NLA_U32 }, + [IFLA_CAN_RESTART] = { .type = NLA_U32 }, + [IFLA_CAN_BITTIMING] = { .len = sizeof(struct can_bittiming) }, + [IFLA_CAN_BITTIMING_CONST] + = { .len = sizeof(struct can_bittiming_const) }, + [IFLA_CAN_CLOCK] = { .len = sizeof(struct can_clock) }, + [IFLA_CAN_BERR_COUNTER] = { .len = sizeof(struct can_berr_counter) }, + [IFLA_CAN_DATA_BITTIMING] + = { .len = sizeof(struct can_bittiming) }, + [IFLA_CAN_DATA_BITTIMING_CONST] + = { .len = sizeof(struct can_bittiming_const) }, + [IFLA_CAN_TERMINATION] = { .type = NLA_U16 }, +}; + +static int can_validate(struct nlattr *tb[], struct nlattr *data[], + struct netlink_ext_ack *extack) +{ + bool is_can_fd = false; + + /* Make sure that valid CAN FD configurations always consist of + * - nominal/arbitration bittiming + * - data bittiming + * - control mode with CAN_CTRLMODE_FD set + */ + + if (!data) + return 0; + + if (data[IFLA_CAN_CTRLMODE]) { + struct can_ctrlmode *cm = nla_data(data[IFLA_CAN_CTRLMODE]); + + is_can_fd = cm->flags & cm->mask & CAN_CTRLMODE_FD; + } + + if (is_can_fd) { + if (!data[IFLA_CAN_BITTIMING] || !data[IFLA_CAN_DATA_BITTIMING]) + return -EOPNOTSUPP; + } + + if (data[IFLA_CAN_DATA_BITTIMING]) { + if (!is_can_fd || !data[IFLA_CAN_BITTIMING]) + return -EOPNOTSUPP; + } + + return 0; +} + +static int can_changelink(struct net_device *dev, struct nlattr *tb[], + struct nlattr *data[], + struct netlink_ext_ack *extack) +{ + struct can_priv *priv = netdev_priv(dev); + int err; + + /* We need synchronization with dev->stop() */ + ASSERT_RTNL(); + + if (data[IFLA_CAN_BITTIMING]) { + struct can_bittiming bt; + + /* Do not allow changing bittiming while running */ + if (dev->flags & IFF_UP) + return -EBUSY; + + /* Calculate bittiming parameters based on + * bittiming_const if set, otherwise pass bitrate + * directly via do_set_bitrate(). Bail out if neither + * is given. + */ + if (!priv->bittiming_const && !priv->do_set_bittiming) + return -EOPNOTSUPP; + + memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt)); + err = can_get_bittiming(dev, &bt, + priv->bittiming_const, + priv->bitrate_const, + priv->bitrate_const_cnt); + if (err) + return err; + + if (priv->bitrate_max && bt.bitrate > priv->bitrate_max) { + netdev_err(dev, "arbitration bitrate surpasses transceiver capabilities of %d bps\n", + priv->bitrate_max); + return -EINVAL; + } + + memcpy(&priv->bittiming, &bt, sizeof(bt)); + + if (priv->do_set_bittiming) { + /* Finally, set the bit-timing registers */ + err = priv->do_set_bittiming(dev); + if (err) + return err; + } + } + + if (data[IFLA_CAN_CTRLMODE]) { + struct can_ctrlmode *cm; + u32 ctrlstatic; + u32 maskedflags; + + /* Do not allow changing controller mode while running */ + if (dev->flags & IFF_UP) + return -EBUSY; + cm = nla_data(data[IFLA_CAN_CTRLMODE]); + ctrlstatic = priv->ctrlmode_static; + maskedflags = cm->flags & cm->mask; + + /* check whether provided bits are allowed to be passed */ + if (cm->mask & ~(priv->ctrlmode_supported | ctrlstatic)) + return -EOPNOTSUPP; + + /* do not check for static fd-non-iso if 'fd' is disabled */ + if (!(maskedflags & CAN_CTRLMODE_FD)) + ctrlstatic &= ~CAN_CTRLMODE_FD_NON_ISO; + + /* make sure static options are provided by configuration */ + if ((maskedflags & ctrlstatic) != ctrlstatic) + return -EOPNOTSUPP; + + /* clear bits to be modified and copy the flag values */ + priv->ctrlmode &= ~cm->mask; + priv->ctrlmode |= maskedflags; + + /* CAN_CTRLMODE_FD can only be set when driver supports FD */ + if (priv->ctrlmode & CAN_CTRLMODE_FD) + dev->mtu = CANFD_MTU; + else + dev->mtu = CAN_MTU; + } + + if (data[IFLA_CAN_RESTART_MS]) { + /* Do not allow changing restart delay while running */ + if (dev->flags & IFF_UP) + return -EBUSY; + priv->restart_ms = nla_get_u32(data[IFLA_CAN_RESTART_MS]); + } + + if (data[IFLA_CAN_RESTART]) { + /* Do not allow a restart while not running */ + if (!(dev->flags & IFF_UP)) + return -EINVAL; + err = can_restart_now(dev); + if (err) + return err; + } + + if (data[IFLA_CAN_DATA_BITTIMING]) { + struct can_bittiming dbt; + + /* Do not allow changing bittiming while running */ + if (dev->flags & IFF_UP) + return -EBUSY; + + /* Calculate bittiming parameters based on + * data_bittiming_const if set, otherwise pass bitrate + * directly via do_set_bitrate(). Bail out if neither + * is given. + */ + if (!priv->data_bittiming_const && !priv->do_set_data_bittiming) + return -EOPNOTSUPP; + + memcpy(&dbt, nla_data(data[IFLA_CAN_DATA_BITTIMING]), + sizeof(dbt)); + err = can_get_bittiming(dev, &dbt, + priv->data_bittiming_const, + priv->data_bitrate_const, + priv->data_bitrate_const_cnt); + if (err) + return err; + + if (priv->bitrate_max && dbt.bitrate > priv->bitrate_max) { + netdev_err(dev, "canfd data bitrate surpasses transceiver capabilities of %d bps\n", + priv->bitrate_max); + return -EINVAL; + } + + memcpy(&priv->data_bittiming, &dbt, sizeof(dbt)); + + if (priv->do_set_data_bittiming) { + /* Finally, set the bit-timing registers */ + err = priv->do_set_data_bittiming(dev); + if (err) + return err; + } + } + + if (data[IFLA_CAN_TERMINATION]) { + const u16 termval = nla_get_u16(data[IFLA_CAN_TERMINATION]); + const unsigned int num_term = priv->termination_const_cnt; + unsigned int i; + + if (!priv->do_set_termination) + return -EOPNOTSUPP; + + /* check whether given value is supported by the interface */ + for (i = 0; i < num_term; i++) { + if (termval == priv->termination_const[i]) + break; + } + if (i >= num_term) + return -EINVAL; + + /* Finally, set the termination value */ + err = priv->do_set_termination(dev, termval); + if (err) + return err; + + priv->termination = termval; + } + + return 0; +} + +static size_t can_get_size(const struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + size_t size = 0; + + if (priv->bittiming.bitrate) /* IFLA_CAN_BITTIMING */ + size += nla_total_size(sizeof(struct can_bittiming)); + if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */ + size += nla_total_size(sizeof(struct can_bittiming_const)); + size += nla_total_size(sizeof(struct can_clock)); /* IFLA_CAN_CLOCK */ + size += nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */ + size += nla_total_size(sizeof(struct can_ctrlmode)); /* IFLA_CAN_CTRLMODE */ + size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */ + if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */ + size += nla_total_size(sizeof(struct can_berr_counter)); + if (priv->data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */ + size += nla_total_size(sizeof(struct can_bittiming)); + if (priv->data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */ + size += nla_total_size(sizeof(struct can_bittiming_const)); + if (priv->termination_const) { + size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */ + size += nla_total_size(sizeof(*priv->termination_const) * /* IFLA_CAN_TERMINATION_CONST */ + priv->termination_const_cnt); + } + if (priv->bitrate_const) /* IFLA_CAN_BITRATE_CONST */ + size += nla_total_size(sizeof(*priv->bitrate_const) * + priv->bitrate_const_cnt); + if (priv->data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */ + size += nla_total_size(sizeof(*priv->data_bitrate_const) * + priv->data_bitrate_const_cnt); + size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */ + + return size; +} + +static int can_fill_info(struct sk_buff *skb, const struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + struct can_ctrlmode cm = {.flags = priv->ctrlmode}; + struct can_berr_counter bec = { }; + enum can_state state = priv->state; + + if (priv->do_get_state) + priv->do_get_state(dev, &state); + + if ((priv->bittiming.bitrate && + nla_put(skb, IFLA_CAN_BITTIMING, + sizeof(priv->bittiming), &priv->bittiming)) || + + (priv->bittiming_const && + nla_put(skb, IFLA_CAN_BITTIMING_CONST, + sizeof(*priv->bittiming_const), priv->bittiming_const)) || + + nla_put(skb, IFLA_CAN_CLOCK, sizeof(priv->clock), &priv->clock) || + nla_put_u32(skb, IFLA_CAN_STATE, state) || + nla_put(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm) || + nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) || + + (priv->do_get_berr_counter && + !priv->do_get_berr_counter(dev, &bec) && + nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) || + + (priv->data_bittiming.bitrate && + nla_put(skb, IFLA_CAN_DATA_BITTIMING, + sizeof(priv->data_bittiming), &priv->data_bittiming)) || + + (priv->data_bittiming_const && + nla_put(skb, IFLA_CAN_DATA_BITTIMING_CONST, + sizeof(*priv->data_bittiming_const), + priv->data_bittiming_const)) || + + (priv->termination_const && + (nla_put_u16(skb, IFLA_CAN_TERMINATION, priv->termination) || + nla_put(skb, IFLA_CAN_TERMINATION_CONST, + sizeof(*priv->termination_const) * + priv->termination_const_cnt, + priv->termination_const))) || + + (priv->bitrate_const && + nla_put(skb, IFLA_CAN_BITRATE_CONST, + sizeof(*priv->bitrate_const) * + priv->bitrate_const_cnt, + priv->bitrate_const)) || + + (priv->data_bitrate_const && + nla_put(skb, IFLA_CAN_DATA_BITRATE_CONST, + sizeof(*priv->data_bitrate_const) * + priv->data_bitrate_const_cnt, + priv->data_bitrate_const)) || + + (nla_put(skb, IFLA_CAN_BITRATE_MAX, + sizeof(priv->bitrate_max), + &priv->bitrate_max)) + ) + + return -EMSGSIZE; + + return 0; +} + +static size_t can_get_xstats_size(const struct net_device *dev) +{ + return sizeof(struct can_device_stats); +} + +static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + if (nla_put(skb, IFLA_INFO_XSTATS, + sizeof(priv->can_stats), &priv->can_stats)) + goto nla_put_failure; + return 0; + +nla_put_failure: + return -EMSGSIZE; +} + +static int can_newlink(struct net *src_net, struct net_device *dev, + struct nlattr *tb[], struct nlattr *data[], + struct netlink_ext_ack *extack) +{ + return -EOPNOTSUPP; +} + +static void can_dellink(struct net_device *dev, struct list_head *head) +{ +} + +static struct rtnl_link_ops can_link_ops __read_mostly = { + .kind = "can", + .netns_refund = true, + .maxtype = IFLA_CAN_MAX, + .policy = can_policy, + .setup = can_setup, + .validate = can_validate, + .newlink = can_newlink, + .changelink = can_changelink, + .dellink = can_dellink, + .get_size = can_get_size, + .fill_info = can_fill_info, + .get_xstats_size = can_get_xstats_size, + .fill_xstats = can_fill_xstats, +}; + +/* Register the CAN network device */ +int register_candev(struct net_device *dev) +{ + struct can_priv *priv = netdev_priv(dev); + + /* Ensure termination_const, termination_const_cnt and + * do_set_termination consistency. All must be either set or + * unset. + */ + if ((!priv->termination_const != !priv->termination_const_cnt) || + (!priv->termination_const != !priv->do_set_termination)) + return -EINVAL; + + if (!priv->bitrate_const != !priv->bitrate_const_cnt) + return -EINVAL; + + if (!priv->data_bitrate_const != !priv->data_bitrate_const_cnt) + return -EINVAL; + + dev->rtnl_link_ops = &can_link_ops; + netif_carrier_off(dev); + + return register_netdev(dev); +} +EXPORT_SYMBOL_GPL(register_candev); + +/* Unregister the CAN network device */ +void unregister_candev(struct net_device *dev) +{ + unregister_netdev(dev); +} +EXPORT_SYMBOL_GPL(unregister_candev); + +/* Test if a network device is a candev based device + * and return the can_priv* if so. + */ +struct can_priv *safe_candev_priv(struct net_device *dev) +{ + if (dev->type != ARPHRD_CAN || dev->rtnl_link_ops != &can_link_ops) + return NULL; + + return netdev_priv(dev); +} +EXPORT_SYMBOL_GPL(safe_candev_priv); + +static __init int can_dev_init(void) +{ + int err; + + can_led_notifier_init(); + + err = rtnl_link_register(&can_link_ops); + if (!err) + pr_info(MOD_DESC "\n"); + + return err; +} +module_init(can_dev_init); + +static __exit void can_dev_exit(void) +{ + rtnl_link_unregister(&can_link_ops); + + can_led_notifier_exit(); +} +module_exit(can_dev_exit); + +MODULE_ALIAS_RTNL_LINK("can"); --- linux-5.8.0.orig/drivers/net/can/dev/rx-offload.c +++ linux-5.8.0/drivers/net/can/dev/rx-offload.c @@ -0,0 +1,365 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2014 Protonic Holland, + * David Jander + * Copyright (C) 2014-2017 Pengutronix, + * Marc Kleine-Budde + */ + +#include +#include + +struct can_rx_offload_cb { + u32 timestamp; +}; + +static inline struct can_rx_offload_cb * +can_rx_offload_get_cb(struct sk_buff *skb) +{ + BUILD_BUG_ON(sizeof(struct can_rx_offload_cb) > sizeof(skb->cb)); + + return (struct can_rx_offload_cb *)skb->cb; +} + +static inline bool +can_rx_offload_le(struct can_rx_offload *offload, + unsigned int a, unsigned int b) +{ + if (offload->inc) + return a <= b; + else + return a >= b; +} + +static inline unsigned int +can_rx_offload_inc(struct can_rx_offload *offload, unsigned int *val) +{ + if (offload->inc) + return (*val)++; + else + return (*val)--; +} + +static int can_rx_offload_napi_poll(struct napi_struct *napi, int quota) +{ + struct can_rx_offload *offload = container_of(napi, + struct can_rx_offload, + napi); + struct net_device *dev = offload->dev; + struct net_device_stats *stats = &dev->stats; + struct sk_buff *skb; + int work_done = 0; + + while ((work_done < quota) && + (skb = skb_dequeue(&offload->skb_queue))) { + struct can_frame *cf = (struct can_frame *)skb->data; + + work_done++; + stats->rx_packets++; + stats->rx_bytes += cf->can_dlc; + netif_receive_skb(skb); + } + + if (work_done < quota) { + napi_complete_done(napi, work_done); + + /* Check if there was another interrupt */ + if (!skb_queue_empty(&offload->skb_queue)) + napi_reschedule(&offload->napi); + } + + can_led_event(offload->dev, CAN_LED_EVENT_RX); + + return work_done; +} + +static inline void +__skb_queue_add_sort(struct sk_buff_head *head, struct sk_buff *new, + int (*compare)(struct sk_buff *a, struct sk_buff *b)) +{ + struct sk_buff *pos, *insert = NULL; + + skb_queue_reverse_walk(head, pos) { + const struct can_rx_offload_cb *cb_pos, *cb_new; + + cb_pos = can_rx_offload_get_cb(pos); + cb_new = can_rx_offload_get_cb(new); + + netdev_dbg(new->dev, + "%s: pos=0x%08x, new=0x%08x, diff=%10d, queue_len=%d\n", + __func__, + cb_pos->timestamp, cb_new->timestamp, + cb_new->timestamp - cb_pos->timestamp, + skb_queue_len(head)); + + if (compare(pos, new) < 0) + continue; + insert = pos; + break; + } + if (!insert) + __skb_queue_head(head, new); + else + __skb_queue_after(head, insert, new); +} + +static int can_rx_offload_compare(struct sk_buff *a, struct sk_buff *b) +{ + const struct can_rx_offload_cb *cb_a, *cb_b; + + cb_a = can_rx_offload_get_cb(a); + cb_b = can_rx_offload_get_cb(b); + + /* Subtract two u32 and return result as int, to keep + * difference steady around the u32 overflow. + */ + return cb_b->timestamp - cb_a->timestamp; +} + +/** + * can_rx_offload_offload_one() - Read one CAN frame from HW + * @offload: pointer to rx_offload context + * @n: number of mailbox to read + * + * The task of this function is to read a CAN frame from mailbox @n + * from the device and return the mailbox's content as a struct + * sk_buff. + * + * If the struct can_rx_offload::skb_queue exceeds the maximal queue + * length (struct can_rx_offload::skb_queue_len_max) or no skb can be + * allocated, the mailbox contents is discarded by reading it into an + * overflow buffer. This way the mailbox is marked as free by the + * driver. + * + * Return: A pointer to skb containing the CAN frame on success. + * + * NULL if the mailbox @n is empty. + * + * ERR_PTR() in case of an error + */ +static struct sk_buff * +can_rx_offload_offload_one(struct can_rx_offload *offload, unsigned int n) +{ + struct sk_buff *skb; + struct can_rx_offload_cb *cb; + bool drop = false; + u32 timestamp; + + /* If queue is full drop frame */ + if (unlikely(skb_queue_len(&offload->skb_queue) > + offload->skb_queue_len_max)) + drop = true; + + skb = offload->mailbox_read(offload, n, ×tamp, drop); + /* Mailbox was empty. */ + if (unlikely(!skb)) + return NULL; + + /* There was a problem reading the mailbox, propagate + * error value. + */ + if (unlikely(IS_ERR(skb))) { + offload->dev->stats.rx_dropped++; + offload->dev->stats.rx_fifo_errors++; + + return skb; + } + + /* Mailbox was read. */ + cb = can_rx_offload_get_cb(skb); + cb->timestamp = timestamp; + + return skb; +} + +int can_rx_offload_irq_offload_timestamp(struct can_rx_offload *offload, + u64 pending) +{ + struct sk_buff_head skb_queue; + unsigned int i; + + __skb_queue_head_init(&skb_queue); + + for (i = offload->mb_first; + can_rx_offload_le(offload, i, offload->mb_last); + can_rx_offload_inc(offload, &i)) { + struct sk_buff *skb; + + if (!(pending & BIT_ULL(i))) + continue; + + skb = can_rx_offload_offload_one(offload, i); + if (IS_ERR_OR_NULL(skb)) + continue; + + __skb_queue_add_sort(&skb_queue, skb, can_rx_offload_compare); + } + + if (!skb_queue_empty(&skb_queue)) { + unsigned long flags; + u32 queue_len; + + spin_lock_irqsave(&offload->skb_queue.lock, flags); + skb_queue_splice_tail(&skb_queue, &offload->skb_queue); + spin_unlock_irqrestore(&offload->skb_queue.lock, flags); + + queue_len = skb_queue_len(&offload->skb_queue); + if (queue_len > offload->skb_queue_len_max / 8) + netdev_dbg(offload->dev, "%s: queue_len=%d\n", + __func__, queue_len); + + can_rx_offload_schedule(offload); + } + + return skb_queue_len(&skb_queue); +} +EXPORT_SYMBOL_GPL(can_rx_offload_irq_offload_timestamp); + +int can_rx_offload_irq_offload_fifo(struct can_rx_offload *offload) +{ + struct sk_buff *skb; + int received = 0; + + while (1) { + skb = can_rx_offload_offload_one(offload, 0); + if (IS_ERR(skb)) + continue; + if (!skb) + break; + + skb_queue_tail(&offload->skb_queue, skb); + received++; + } + + if (received) + can_rx_offload_schedule(offload); + + return received; +} +EXPORT_SYMBOL_GPL(can_rx_offload_irq_offload_fifo); + +int can_rx_offload_queue_sorted(struct can_rx_offload *offload, + struct sk_buff *skb, u32 timestamp) +{ + struct can_rx_offload_cb *cb; + unsigned long flags; + + if (skb_queue_len(&offload->skb_queue) > + offload->skb_queue_len_max) { + dev_kfree_skb_any(skb); + return -ENOBUFS; + } + + cb = can_rx_offload_get_cb(skb); + cb->timestamp = timestamp; + + spin_lock_irqsave(&offload->skb_queue.lock, flags); + __skb_queue_add_sort(&offload->skb_queue, skb, can_rx_offload_compare); + spin_unlock_irqrestore(&offload->skb_queue.lock, flags); + + can_rx_offload_schedule(offload); + + return 0; +} +EXPORT_SYMBOL_GPL(can_rx_offload_queue_sorted); + +unsigned int can_rx_offload_get_echo_skb(struct can_rx_offload *offload, + unsigned int idx, u32 timestamp) +{ + struct net_device *dev = offload->dev; + struct net_device_stats *stats = &dev->stats; + struct sk_buff *skb; + u8 len; + int err; + + skb = __can_get_echo_skb(dev, idx, &len); + if (!skb) + return 0; + + err = can_rx_offload_queue_sorted(offload, skb, timestamp); + if (err) { + stats->rx_errors++; + stats->tx_fifo_errors++; + } + + return len; +} +EXPORT_SYMBOL_GPL(can_rx_offload_get_echo_skb); + +int can_rx_offload_queue_tail(struct can_rx_offload *offload, + struct sk_buff *skb) +{ + if (skb_queue_len(&offload->skb_queue) > + offload->skb_queue_len_max) { + dev_kfree_skb_any(skb); + return -ENOBUFS; + } + + skb_queue_tail(&offload->skb_queue, skb); + can_rx_offload_schedule(offload); + + return 0; +} +EXPORT_SYMBOL_GPL(can_rx_offload_queue_tail); + +static int can_rx_offload_init_queue(struct net_device *dev, + struct can_rx_offload *offload, + unsigned int weight) +{ + offload->dev = dev; + + /* Limit queue len to 4x the weight (rounted to next power of two) */ + offload->skb_queue_len_max = 2 << fls(weight); + offload->skb_queue_len_max *= 4; + skb_queue_head_init(&offload->skb_queue); + + netif_napi_add(dev, &offload->napi, can_rx_offload_napi_poll, weight); + + dev_dbg(dev->dev.parent, "%s: skb_queue_len_max=%d\n", + __func__, offload->skb_queue_len_max); + + return 0; +} + +int can_rx_offload_add_timestamp(struct net_device *dev, + struct can_rx_offload *offload) +{ + unsigned int weight; + + if (offload->mb_first > BITS_PER_LONG_LONG || + offload->mb_last > BITS_PER_LONG_LONG || !offload->mailbox_read) + return -EINVAL; + + if (offload->mb_first < offload->mb_last) { + offload->inc = true; + weight = offload->mb_last - offload->mb_first; + } else { + offload->inc = false; + weight = offload->mb_first - offload->mb_last; + } + + return can_rx_offload_init_queue(dev, offload, weight); +} +EXPORT_SYMBOL_GPL(can_rx_offload_add_timestamp); + +int can_rx_offload_add_fifo(struct net_device *dev, + struct can_rx_offload *offload, unsigned int weight) +{ + if (!offload->mailbox_read) + return -EINVAL; + + return can_rx_offload_init_queue(dev, offload, weight); +} +EXPORT_SYMBOL_GPL(can_rx_offload_add_fifo); + +void can_rx_offload_enable(struct can_rx_offload *offload) +{ + napi_enable(&offload->napi); +} +EXPORT_SYMBOL_GPL(can_rx_offload_enable); + +void can_rx_offload_del(struct can_rx_offload *offload) +{ + netif_napi_del(&offload->napi); + skb_queue_purge(&offload->skb_queue); +} +EXPORT_SYMBOL_GPL(can_rx_offload_del); --- linux-5.8.0.orig/drivers/net/can/flexcan.c +++ linux-5.8.0/drivers/net/can/flexcan.c @@ -321,8 +321,7 @@ static const struct flexcan_devtype_data fsl_ls1021a_r2_devtype_data = { .quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS | - FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_BROKEN_PERR_STATE | - FLEXCAN_QUIRK_USE_OFF_TIMESTAMP, + FLEXCAN_QUIRK_BROKEN_PERR_STATE | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP, }; static const struct can_bittiming_const flexcan_bittiming_const = { @@ -545,11 +544,17 @@ static int flexcan_chip_freeze(struct flexcan_priv *priv) { struct flexcan_regs __iomem *regs = priv->regs; - unsigned int timeout = 1000 * 1000 * 10 / priv->can.bittiming.bitrate; + unsigned int timeout; + u32 bitrate = priv->can.bittiming.bitrate; u32 reg; + if (bitrate) + timeout = 1000 * 1000 * 10 / bitrate; + else + timeout = FLEXCAN_TIMEOUT_US / 10; + reg = priv->read(®s->mcr); - reg |= FLEXCAN_MCR_HALT; + reg |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_HALT; priv->write(reg, ®s->mcr); while (timeout-- && !(priv->read(®s->mcr) & FLEXCAN_MCR_FRZ_ACK)) @@ -615,8 +620,10 @@ int err; err = pm_runtime_get_sync(priv->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_noidle(priv->dev); return err; + } err = __flexcan_get_berr_counter(dev, bec); @@ -1083,10 +1090,13 @@ flexcan_set_bittiming(dev); + /* set freeze, halt */ + err = flexcan_chip_freeze(priv); + if (err) + goto out_chip_disable; + /* MCR * - * enable freeze - * halt now * only supervisor access * enable warning int * enable individual RX masking @@ -1095,9 +1105,8 @@ */ reg_mcr = priv->read(®s->mcr); reg_mcr &= ~FLEXCAN_MCR_MAXMB(0xff); - reg_mcr |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_HALT | FLEXCAN_MCR_SUPV | - FLEXCAN_MCR_WRN_EN | FLEXCAN_MCR_IRMQ | FLEXCAN_MCR_IDAM_C | - FLEXCAN_MCR_MAXMB(priv->tx_mb_idx); + reg_mcr |= FLEXCAN_MCR_SUPV | FLEXCAN_MCR_WRN_EN | FLEXCAN_MCR_IRMQ | + FLEXCAN_MCR_IDAM_C | FLEXCAN_MCR_MAXMB(priv->tx_mb_idx); /* MCR * @@ -1228,14 +1237,10 @@ priv->write(reg_mecr, ®s->mecr); } - err = flexcan_transceiver_enable(priv); - if (err) - goto out_chip_disable; - /* synchronize with the can bus */ err = flexcan_chip_unfreeze(priv); if (err) - goto out_transceiver_disable; + goto out_chip_disable; priv->can.state = CAN_STATE_ERROR_ACTIVE; @@ -1253,25 +1258,28 @@ return 0; - out_transceiver_disable: - flexcan_transceiver_disable(priv); out_chip_disable: flexcan_chip_disable(priv); return err; } -/* flexcan_chip_stop +/* __flexcan_chip_stop * - * this functions is entered with clocks enabled + * this function is entered with clocks enabled */ -static void flexcan_chip_stop(struct net_device *dev) +static int __flexcan_chip_stop(struct net_device *dev, bool disable_on_error) { struct flexcan_priv *priv = netdev_priv(dev); struct flexcan_regs __iomem *regs = priv->regs; + int err; /* freeze + disable module */ - flexcan_chip_freeze(priv); - flexcan_chip_disable(priv); + err = flexcan_chip_freeze(priv); + if (err && !disable_on_error) + return err; + err = flexcan_chip_disable(priv); + if (err && !disable_on_error) + goto out_chip_unfreeze; /* Disable all interrupts */ priv->write(0, ®s->imask2); @@ -1279,8 +1287,24 @@ priv->write(priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL, ®s->ctrl); - flexcan_transceiver_disable(priv); priv->can.state = CAN_STATE_STOPPED; + + return 0; + + out_chip_unfreeze: + flexcan_chip_unfreeze(priv); + + return err; +} + +static inline int flexcan_chip_stop_disable_on_error(struct net_device *dev) +{ + return __flexcan_chip_stop(dev, true); +} + +static inline int flexcan_chip_stop(struct net_device *dev) +{ + return __flexcan_chip_stop(dev, false); } static int flexcan_open(struct net_device *dev) @@ -1289,17 +1313,23 @@ int err; err = pm_runtime_get_sync(priv->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_noidle(priv->dev); return err; + } err = open_candev(dev); if (err) goto out_runtime_put; - err = request_irq(dev->irq, flexcan_irq, IRQF_SHARED, dev->name, dev); + err = flexcan_transceiver_enable(priv); if (err) goto out_close; + err = request_irq(dev->irq, flexcan_irq, IRQF_SHARED, dev->name, dev); + if (err) + goto out_transceiver_disable; + priv->mb_size = sizeof(struct flexcan_mb) + CAN_MAX_DLEN; priv->mb_count = (sizeof(priv->regs->mb[0]) / priv->mb_size) + (sizeof(priv->regs->mb[1]) / priv->mb_size); @@ -1348,6 +1378,8 @@ can_rx_offload_del(&priv->offload); out_free_irq: free_irq(dev->irq, dev); + out_transceiver_disable: + flexcan_transceiver_disable(priv); out_close: close_candev(dev); out_runtime_put: @@ -1362,10 +1394,11 @@ netif_stop_queue(dev); can_rx_offload_disable(&priv->offload); - flexcan_chip_stop(dev); + flexcan_chip_stop_disable_on_error(dev); can_rx_offload_del(&priv->offload); free_irq(dev->irq, dev); + flexcan_transceiver_disable(priv); close_candev(dev); pm_runtime_put(priv->dev); @@ -1428,10 +1461,14 @@ if (err) goto out_chip_disable; - /* set freeze, halt and activate FIFO, restrict register access */ + /* set freeze, halt */ + err = flexcan_chip_freeze(priv); + if (err) + goto out_chip_disable; + + /* activate FIFO, restrict register access */ reg = priv->read(®s->mcr); - reg |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_HALT | - FLEXCAN_MCR_FEN | FLEXCAN_MCR_SUPV; + reg |= FLEXCAN_MCR_FEN | FLEXCAN_MCR_SUPV; priv->write(reg, ®s->mcr); /* Currently we only support newer versions of this core @@ -1674,6 +1711,8 @@ { struct net_device *dev = platform_get_drvdata(pdev); + device_set_wakeup_enable(&pdev->dev, false); + device_set_wakeup_capable(&pdev->dev, false); unregister_flexcandev(dev); pm_runtime_disable(&pdev->dev); free_candev(dev); @@ -1700,8 +1739,6 @@ err = flexcan_chip_disable(priv); if (err) return err; - - err = pm_runtime_force_suspend(device); } netif_stop_queue(dev); netif_device_detach(dev); @@ -1727,10 +1764,6 @@ if (err) return err; } else { - err = pm_runtime_force_resume(device); - if (err) - return err; - err = flexcan_chip_enable(priv); } } @@ -1761,8 +1794,16 @@ struct net_device *dev = dev_get_drvdata(device); struct flexcan_priv *priv = netdev_priv(dev); - if (netif_running(dev) && device_may_wakeup(device)) - flexcan_enable_wakeup_irq(priv, true); + if (netif_running(dev)) { + int err; + + if (device_may_wakeup(device)) + flexcan_enable_wakeup_irq(priv, true); + + err = pm_runtime_force_suspend(device); + if (err) + return err; + } return 0; } @@ -1772,8 +1813,16 @@ struct net_device *dev = dev_get_drvdata(device); struct flexcan_priv *priv = netdev_priv(dev); - if (netif_running(dev) && device_may_wakeup(device)) - flexcan_enable_wakeup_irq(priv, false); + if (netif_running(dev)) { + int err; + + err = pm_runtime_force_resume(device); + if (err) + return err; + + if (device_may_wakeup(device)) + flexcan_enable_wakeup_irq(priv, false); + } return 0; } --- linux-5.8.0.orig/drivers/net/can/kvaser_pciefd.c +++ linux-5.8.0/drivers/net/can/kvaser_pciefd.c @@ -57,6 +57,7 @@ #define KVASER_PCIEFD_KCAN_STAT_REG 0x418 #define KVASER_PCIEFD_KCAN_MODE_REG 0x41c #define KVASER_PCIEFD_KCAN_BTRN_REG 0x420 +#define KVASER_PCIEFD_KCAN_BUS_LOAD_REG 0x424 #define KVASER_PCIEFD_KCAN_BTRD_REG 0x428 #define KVASER_PCIEFD_KCAN_PWM_REG 0x430 /* Loopback control register */ @@ -287,12 +288,12 @@ static const struct can_bittiming_const kvaser_pciefd_bittiming_const = { .name = KVASER_PCIEFD_DRV_NAME, .tseg1_min = 1, - .tseg1_max = 255, + .tseg1_max = 512, .tseg2_min = 1, .tseg2_max = 32, .sjw_max = 16, .brp_min = 1, - .brp_max = 4096, + .brp_max = 8192, .brp_inc = 1, }; @@ -692,8 +693,10 @@ return err; err = kvaser_pciefd_bus_on(can); - if (err) + if (err) { + close_candev(netdev); return err; + } return 0; } @@ -947,6 +950,9 @@ timer_setup(&can->bec_poll_timer, kvaser_pciefd_bec_poll_timer, 0); + /* Disable Bus load reporting */ + iowrite32(0, can->reg_base + KVASER_PCIEFD_KCAN_BUS_LOAD_REG); + tx_npackets = ioread32(can->reg_base + KVASER_PCIEFD_KCAN_TX_NPACKETS_REG); if (((tx_npackets >> KVASER_PCIEFD_KCAN_TX_NPACKETS_MAX_SHIFT) & --- linux-5.8.0.orig/drivers/net/can/m_can/Kconfig +++ linux-5.8.0/drivers/net/can/m_can/Kconfig @@ -16,7 +16,8 @@ config CAN_M_CAN_TCAN4X5X depends on CAN_M_CAN - depends on REGMAP_SPI + depends on SPI + select REGMAP_SPI tristate "TCAN4X5X M_CAN device" help Say Y here if you want support for Texas Instruments TCAN4x5x --- linux-5.8.0.orig/drivers/net/can/m_can/m_can.c +++ linux-5.8.0/drivers/net/can/m_can/m_can.c @@ -380,10 +380,6 @@ cccr &= ~CCCR_CSR; if (enable) { - /* Clear the Clock stop request if it was set */ - if (cccr & CCCR_CSR) - cccr &= ~CCCR_CSR; - /* enable m_can configuration */ m_can_write(cdev, M_CAN_CCCR, cccr | CCCR_INIT); udelay(5); @@ -506,9 +502,6 @@ } while ((rxfs & RXFS_FFL_MASK) && (quota > 0)) { - if (rxfs & RXFS_RFL) - netdev_warn(dev, "Rx FIFO 0 Message Lost\n"); - m_can_read_fifo(dev, rxfs); quota--; @@ -665,7 +658,7 @@ unsigned int ecr; switch (new_state) { - case CAN_STATE_ERROR_ACTIVE: + case CAN_STATE_ERROR_WARNING: /* error warning state */ cdev->can.can_stats.error_warning++; cdev->can.state = CAN_STATE_ERROR_WARNING; @@ -694,7 +687,7 @@ __m_can_get_berr_counter(dev, &bec); switch (new_state) { - case CAN_STATE_ERROR_ACTIVE: + case CAN_STATE_ERROR_WARNING: /* error warning state */ cf->can_id |= CAN_ERR_CRTL; cf->data[1] = (bec.txerr > bec.rxerr) ? @@ -889,7 +882,7 @@ { struct m_can_classdev *cdev = netdev_priv(dev); - m_can_rx_handler(dev, 1); + m_can_rx_handler(dev, M_CAN_NAPI_WEIGHT); m_can_enable_all_interrupts(cdev); @@ -956,6 +949,8 @@ struct net_device_stats *stats = &dev->stats; u32 ir; + if (pm_runtime_suspended(cdev->dev)) + return IRQ_NONE; ir = m_can_read(cdev, M_CAN_IR); if (!ir) return IRQ_NONE; @@ -1031,7 +1026,7 @@ .name = KBUILD_MODNAME, .tseg1_min = 2, /* Time segment 1 = prop_seg + phase_seg1 */ .tseg1_max = 256, - .tseg2_min = 1, /* Time segment 2 = phase_seg2 */ + .tseg2_min = 2, /* Time segment 2 = phase_seg2 */ .tseg2_max = 128, .sjw_max = 128, .brp_min = 1, @@ -1383,6 +1378,8 @@ &m_can_data_bittiming_const_31X; break; case 32: + case 33: + /* Support both MCAN version v3.2.x and v3.3.0 */ m_can_dev->can.bittiming_const = m_can_dev->bit_timing ? m_can_dev->bit_timing : &m_can_bittiming_const_31X; @@ -1414,6 +1411,9 @@ /* disable all interrupts */ m_can_disable_all_interrupts(cdev); + /* Set init mode to disengage from the network */ + m_can_config_endisable(cdev, true); + /* set the state as STOPPED */ cdev->can.state = CAN_STATE_STOPPED; } @@ -1648,7 +1648,7 @@ INIT_WORK(&cdev->tx_work, m_can_tx_work_queue); err = request_threaded_irq(dev->irq, NULL, m_can_isr, - IRQF_ONESHOT | IRQF_TRIGGER_FALLING, + IRQF_ONESHOT, dev->name, dev); } else { err = request_irq(dev->irq, m_can_isr, IRQF_SHARED, dev->name, @@ -1812,6 +1812,12 @@ } EXPORT_SYMBOL_GPL(m_can_class_allocate_dev); +void m_can_class_free_dev(struct net_device *net) +{ + free_candev(net); +} +EXPORT_SYMBOL_GPL(m_can_class_free_dev); + int m_can_class_register(struct m_can_classdev *m_can_dev) { int ret; @@ -1850,7 +1856,6 @@ if (ret) { if (m_can_dev->pm_clock_support) pm_runtime_disable(m_can_dev->dev); - free_candev(m_can_dev->net); } return ret; @@ -1906,10 +1911,6 @@ void m_can_class_unregister(struct m_can_classdev *m_can_dev) { unregister_candev(m_can_dev->net); - - m_can_clk_stop(m_can_dev); - - free_candev(m_can_dev->net); } EXPORT_SYMBOL_GPL(m_can_class_unregister); --- linux-5.8.0.orig/drivers/net/can/m_can/m_can.h +++ linux-5.8.0/drivers/net/can/m_can/m_can.h @@ -99,6 +99,7 @@ }; struct m_can_classdev *m_can_class_allocate_dev(struct device *dev); +void m_can_class_free_dev(struct net_device *net); int m_can_class_register(struct m_can_classdev *cdev); void m_can_class_unregister(struct m_can_classdev *cdev); int m_can_class_get_clocks(struct m_can_classdev *cdev); --- linux-5.8.0.orig/drivers/net/can/m_can/m_can_platform.c +++ linux-5.8.0/drivers/net/can/m_can/m_can_platform.c @@ -67,32 +67,36 @@ return -ENOMEM; priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; + if (!priv) { + ret = -ENOMEM; + goto probe_fail; + } mcan_class->device_data = priv; - m_can_class_get_clocks(mcan_class); + ret = m_can_class_get_clocks(mcan_class); + if (ret) + goto probe_fail; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "m_can"); addr = devm_ioremap_resource(&pdev->dev, res); irq = platform_get_irq_byname(pdev, "int0"); if (IS_ERR(addr) || irq < 0) { ret = -EINVAL; - goto failed_ret; + goto probe_fail; } /* message ram could be shared */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "message_ram"); if (!res) { ret = -ENODEV; - goto failed_ret; + goto probe_fail; } mram_addr = devm_ioremap(&pdev->dev, res->start, resource_size(res)); if (!mram_addr) { ret = -ENOMEM; - goto failed_ret; + goto probe_fail; } priv->base = addr; @@ -111,9 +115,10 @@ m_can_init_ram(mcan_class); - ret = m_can_class_register(mcan_class); + return m_can_class_register(mcan_class); -failed_ret: +probe_fail: + m_can_class_free_dev(mcan_class->net); return ret; } @@ -134,6 +139,8 @@ m_can_class_unregister(mcan_class); + m_can_class_free_dev(mcan_class->net); + platform_set_drvdata(pdev, NULL); return 0; @@ -144,8 +151,6 @@ struct net_device *ndev = dev_get_drvdata(dev); struct m_can_classdev *mcan_class = netdev_priv(ndev); - m_can_class_suspend(dev); - clk_disable_unprepare(mcan_class->cclk); clk_disable_unprepare(mcan_class->hclk); --- linux-5.8.0.orig/drivers/net/can/m_can/tcan4x5x.c +++ linux-5.8.0/drivers/net/can/m_can/tcan4x5x.c @@ -88,7 +88,7 @@ #define TCAN4X5X_MRAM_START 0x8000 #define TCAN4X5X_MCAN_OFFSET 0x1000 -#define TCAN4X5X_MAX_REGISTER 0x8fff +#define TCAN4X5X_MAX_REGISTER 0x8ffc #define TCAN4X5X_CLEAR_ALL_INT 0xffffffff #define TCAN4X5X_SET_ALL_INT 0xffffffff @@ -129,30 +129,6 @@ int reg_offset; }; -static struct can_bittiming_const tcan4x5x_bittiming_const = { - .name = DEVICE_NAME, - .tseg1_min = 2, - .tseg1_max = 31, - .tseg2_min = 2, - .tseg2_max = 16, - .sjw_max = 16, - .brp_min = 1, - .brp_max = 32, - .brp_inc = 1, -}; - -static struct can_bittiming_const tcan4x5x_data_bittiming_const = { - .name = DEVICE_NAME, - .tseg1_min = 1, - .tseg1_max = 32, - .tseg2_min = 1, - .tseg2_max = 16, - .sjw_max = 16, - .brp_min = 1, - .brp_max = 32, - .brp_inc = 1, -}; - static void tcan4x5x_check_wake(struct tcan4x5x_priv *priv) { int wake_state = 0; @@ -352,14 +328,14 @@ if (ret) return ret; + /* Zero out the MCAN buffers */ + m_can_init_ram(cdev); + ret = regmap_update_bits(tcan4x5x->regmap, TCAN4X5X_CONFIG, TCAN4X5X_MODE_SEL_MASK, TCAN4X5X_MODE_NORMAL); if (ret) return ret; - /* Zero out the MCAN buffers */ - m_can_init_ram(cdev); - return ret; } @@ -440,14 +416,18 @@ return -ENOMEM; priv = devm_kzalloc(&spi->dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; + if (!priv) { + ret = -ENOMEM; + goto out_m_can_class_free_dev; + } priv->power = devm_regulator_get_optional(&spi->dev, "vsup"); - if (PTR_ERR(priv->power) == -EPROBE_DEFER) - return -EPROBE_DEFER; - else + if (PTR_ERR(priv->power) == -EPROBE_DEFER) { + ret = -EPROBE_DEFER; + goto out_m_can_class_free_dev; + } else { priv->power = NULL; + } mcan_class->device_data = priv; @@ -460,8 +440,10 @@ } /* Sanity check */ - if (freq < 20000000 || freq > TCAN4X5X_EXT_CLK_DEF) - return -ERANGE; + if (freq < 20000000 || freq > TCAN4X5X_EXT_CLK_DEF) { + ret = -ERANGE; + goto out_m_can_class_free_dev; + } priv->reg_offset = TCAN4X5X_MCAN_OFFSET; priv->mram_start = TCAN4X5X_MRAM_START; @@ -473,8 +455,6 @@ mcan_class->dev = &spi->dev; mcan_class->ops = &tcan4x5x_ops; mcan_class->is_peripheral = true; - mcan_class->bit_timing = &tcan4x5x_bittiming_const; - mcan_class->data_timing = &tcan4x5x_data_bittiming_const; mcan_class->net->irq = spi->irq; spi_set_drvdata(spi, priv); @@ -483,14 +463,18 @@ spi->bits_per_word = 32; ret = spi_setup(spi); if (ret) - goto out_clk; + goto out_m_can_class_free_dev; priv->regmap = devm_regmap_init(&spi->dev, &tcan4x5x_bus, &spi->dev, &tcan4x5x_regmap); + if (IS_ERR(priv->regmap)) { + ret = PTR_ERR(priv->regmap); + goto out_m_can_class_free_dev; + } ret = tcan4x5x_power_enable(priv->power, 1); if (ret) - goto out_clk; + goto out_m_can_class_free_dev; ret = tcan4x5x_parse_config(mcan_class); if (ret) @@ -509,13 +493,10 @@ out_power: tcan4x5x_power_enable(priv->power, 0); -out_clk: - if (!IS_ERR(mcan_class->cclk)) { - clk_disable_unprepare(mcan_class->cclk); - clk_disable_unprepare(mcan_class->hclk); - } - + out_m_can_class_free_dev: + m_can_class_free_dev(mcan_class->net); dev_err(&spi->dev, "Probe failed, err=%d\n", ret); + return ret; } @@ -523,9 +504,11 @@ { struct tcan4x5x_priv *priv = spi_get_drvdata(spi); + m_can_class_unregister(priv->mcan_dev); + tcan4x5x_power_enable(priv->power, 0); - m_can_class_unregister(priv->mcan_dev); + m_can_class_free_dev(priv->mcan_dev->net); return 0; } --- linux-5.8.0.orig/drivers/net/can/peak_canfd/peak_canfd.c +++ linux-5.8.0/drivers/net/can/peak_canfd/peak_canfd.c @@ -262,8 +262,7 @@ cf_len = get_can_dlc(pucan_msg_get_dlc(msg)); /* if this frame is an echo, */ - if ((rx_msg_flags & PUCAN_MSG_LOOPED_BACK) && - !(rx_msg_flags & PUCAN_MSG_SELF_RECEIVE)) { + if (rx_msg_flags & PUCAN_MSG_LOOPED_BACK) { unsigned long flags; spin_lock_irqsave(&priv->echo_lock, flags); @@ -277,7 +276,13 @@ netif_wake_queue(priv->ndev); spin_unlock_irqrestore(&priv->echo_lock, flags); - return 0; + + /* if this frame is only an echo, stop here. Otherwise, + * continue to push this application self-received frame into + * its own rx queue. + */ + if (!(rx_msg_flags & PUCAN_MSG_SELF_RECEIVE)) + return 0; } /* otherwise, it should be pushed into rx fifo */ --- linux-5.8.0.orig/drivers/net/can/sja1000/sja1000.c +++ linux-5.8.0/drivers/net/can/sja1000/sja1000.c @@ -474,7 +474,6 @@ netdev_dbg(dev, "arbitration lost interrupt\n"); alc = priv->read_reg(priv, SJA1000_ALC); priv->can.can_stats.arbitration_lost++; - stats->tx_errors++; cf->can_id |= CAN_ERR_LOSTARB; cf->data[0] = alc & 0x1f; } --- linux-5.8.0.orig/drivers/net/can/slcan.c +++ linux-5.8.0/drivers/net/can/slcan.c @@ -516,6 +516,7 @@ int i; char name[IFNAMSIZ]; struct net_device *dev = NULL; + struct can_ml_priv *can_ml; struct slcan *sl; int size; @@ -538,7 +539,8 @@ dev->base_addr = i; sl = netdev_priv(dev); - dev->ml_priv = (void *)sl + ALIGN(sizeof(*sl), NETDEV_ALIGN); + can_ml = (void *)sl + ALIGN(sizeof(*sl), NETDEV_ALIGN); + can_set_ml_priv(dev, can_ml); /* Initialize channel control data */ sl->magic = SLCAN_MAGIC; --- linux-5.8.0.orig/drivers/net/can/softing/softing_main.c +++ linux-5.8.0/drivers/net/can/softing/softing_main.c @@ -382,8 +382,13 @@ /* check or determine and set bittime */ ret = open_candev(ndev); - if (!ret) - ret = softing_startstop(ndev, 1); + if (ret) + return ret; + + ret = softing_startstop(ndev, 1); + if (ret < 0) + close_candev(ndev); + return ret; } --- linux-5.8.0.orig/drivers/net/can/sun4i_can.c +++ linux-5.8.0/drivers/net/can/sun4i_can.c @@ -604,7 +604,6 @@ netdev_dbg(dev, "arbitration lost interrupt\n"); alc = readl(priv->base + SUN4I_REG_STA_ADDR); priv->can.can_stats.arbitration_lost++; - stats->tx_errors++; if (likely(skb)) { cf->can_id |= CAN_ERR_LOSTARB; cf->data[0] = (alc >> 8) & 0x1f; --- linux-5.8.0.orig/drivers/net/can/ti_hecc.c +++ linux-5.8.0/drivers/net/can/ti_hecc.c @@ -887,7 +887,8 @@ priv->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->base)) { dev_err(&pdev->dev, "hecc ioremap failed\n"); - return PTR_ERR(priv->base); + err = PTR_ERR(priv->base); + goto probe_exit_candev; } /* handle hecc-ram memory */ @@ -900,7 +901,8 @@ priv->hecc_ram = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->hecc_ram)) { dev_err(&pdev->dev, "hecc-ram ioremap failed\n"); - return PTR_ERR(priv->hecc_ram); + err = PTR_ERR(priv->hecc_ram); + goto probe_exit_candev; } /* handle mbx memory */ @@ -913,13 +915,14 @@ priv->mbx = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->mbx)) { dev_err(&pdev->dev, "mbx ioremap failed\n"); - return PTR_ERR(priv->mbx); + err = PTR_ERR(priv->mbx); + goto probe_exit_candev; } irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (!irq) { dev_err(&pdev->dev, "No irq resource\n"); - goto probe_exit; + goto probe_exit_candev; } priv->ndev = ndev; @@ -950,7 +953,7 @@ err = clk_prepare_enable(priv->clk); if (err) { dev_err(&pdev->dev, "clk_prepare_enable() failed\n"); - goto probe_exit_clk; + goto probe_exit_release_clk; } priv->offload.mailbox_read = ti_hecc_mailbox_read; @@ -959,7 +962,7 @@ err = can_rx_offload_add_timestamp(ndev, &priv->offload); if (err) { dev_err(&pdev->dev, "can_rx_offload_add_timestamp() failed\n"); - goto probe_exit_clk; + goto probe_exit_disable_clk; } err = register_candev(ndev); @@ -977,11 +980,13 @@ probe_exit_offload: can_rx_offload_del(&priv->offload); -probe_exit_clk: +probe_exit_disable_clk: + clk_disable_unprepare(priv->clk); +probe_exit_release_clk: clk_put(priv->clk); probe_exit_candev: free_candev(ndev); -probe_exit: + return err; } --- linux-5.8.0.orig/drivers/net/can/usb/gs_usb.c +++ linux-5.8.0/drivers/net/can/usb/gs_usb.c @@ -63,21 +63,27 @@ }; /* data types passed between host and device */ + +/* The firmware on the original USB2CAN by Geschwister Schneider + * Technologie Entwicklungs- und Vertriebs UG exchanges all data + * between the host and the device in host byte order. This is done + * with the struct gs_host_config::byte_order member, which is sent + * first to indicate the desired byte order. + * + * The widely used open source firmware candleLight doesn't support + * this feature and exchanges the data in little endian byte order. + */ struct gs_host_config { - u32 byte_order; + __le32 byte_order; } __packed; -/* All data exchanged between host and device is exchanged in host byte order, - * thanks to the struct gs_host_config byte_order member, which is sent first - * to indicate the desired byte order. - */ struct gs_device_config { u8 reserved1; u8 reserved2; u8 reserved3; u8 icount; - u32 sw_version; - u32 hw_version; + __le32 sw_version; + __le32 hw_version; } __packed; #define GS_CAN_MODE_NORMAL 0 @@ -87,26 +93,26 @@ #define GS_CAN_MODE_ONE_SHOT BIT(3) struct gs_device_mode { - u32 mode; - u32 flags; + __le32 mode; + __le32 flags; } __packed; struct gs_device_state { - u32 state; - u32 rxerr; - u32 txerr; + __le32 state; + __le32 rxerr; + __le32 txerr; } __packed; struct gs_device_bittiming { - u32 prop_seg; - u32 phase_seg1; - u32 phase_seg2; - u32 sjw; - u32 brp; + __le32 prop_seg; + __le32 phase_seg1; + __le32 phase_seg2; + __le32 sjw; + __le32 brp; } __packed; struct gs_identify_mode { - u32 mode; + __le32 mode; } __packed; #define GS_CAN_FEATURE_LISTEN_ONLY BIT(0) @@ -117,23 +123,23 @@ #define GS_CAN_FEATURE_IDENTIFY BIT(5) struct gs_device_bt_const { - u32 feature; - u32 fclk_can; - u32 tseg1_min; - u32 tseg1_max; - u32 tseg2_min; - u32 tseg2_max; - u32 sjw_max; - u32 brp_min; - u32 brp_max; - u32 brp_inc; + __le32 feature; + __le32 fclk_can; + __le32 tseg1_min; + __le32 tseg1_max; + __le32 tseg2_min; + __le32 tseg2_max; + __le32 sjw_max; + __le32 brp_min; + __le32 brp_max; + __le32 brp_inc; } __packed; #define GS_CAN_FLAG_OVERFLOW 1 struct gs_host_frame { u32 echo_id; - u32 can_id; + __le32 can_id; u8 can_dlc; u8 channel; @@ -329,13 +335,13 @@ if (!skb) return; - cf->can_id = hf->can_id; + cf->can_id = le32_to_cpu(hf->can_id); cf->can_dlc = get_can_dlc(hf->can_dlc); memcpy(cf->data, hf->data, 8); /* ERROR frames tell us information about the controller */ - if (hf->can_id & CAN_ERR_FLAG) + if (le32_to_cpu(hf->can_id) & CAN_ERR_FLAG) gs_update_state(dev, cf); netdev->stats.rx_packets++; @@ -418,11 +424,11 @@ if (!dbt) return -ENOMEM; - dbt->prop_seg = bt->prop_seg; - dbt->phase_seg1 = bt->phase_seg1; - dbt->phase_seg2 = bt->phase_seg2; - dbt->sjw = bt->sjw; - dbt->brp = bt->brp; + dbt->prop_seg = cpu_to_le32(bt->prop_seg); + dbt->phase_seg1 = cpu_to_le32(bt->phase_seg1); + dbt->phase_seg2 = cpu_to_le32(bt->phase_seg2); + dbt->sjw = cpu_to_le32(bt->sjw); + dbt->brp = cpu_to_le32(bt->brp); /* request bit timings */ rc = usb_control_msg(interface_to_usbdev(intf), @@ -503,7 +509,7 @@ cf = (struct can_frame *)skb->data; - hf->can_id = cf->can_id; + hf->can_id = cpu_to_le32(cf->can_id); hf->can_dlc = cf->can_dlc; memcpy(hf->data, cf->data, cf->can_dlc); @@ -573,6 +579,7 @@ int rc, i; struct gs_device_mode *dm; u32 ctrlmode; + u32 flags = 0; rc = open_candev(netdev); if (rc) @@ -640,24 +647,24 @@ /* flags */ ctrlmode = dev->can.ctrlmode; - dm->flags = 0; if (ctrlmode & CAN_CTRLMODE_LOOPBACK) - dm->flags |= GS_CAN_MODE_LOOP_BACK; + flags |= GS_CAN_MODE_LOOP_BACK; else if (ctrlmode & CAN_CTRLMODE_LISTENONLY) - dm->flags |= GS_CAN_MODE_LISTEN_ONLY; + flags |= GS_CAN_MODE_LISTEN_ONLY; /* Controller is not allowed to retry TX * this mode is unavailable on atmels uc3c hardware */ if (ctrlmode & CAN_CTRLMODE_ONE_SHOT) - dm->flags |= GS_CAN_MODE_ONE_SHOT; + flags |= GS_CAN_MODE_ONE_SHOT; if (ctrlmode & CAN_CTRLMODE_3_SAMPLES) - dm->flags |= GS_CAN_MODE_TRIPLE_SAMPLE; + flags |= GS_CAN_MODE_TRIPLE_SAMPLE; /* finally start device */ - dm->mode = GS_CAN_MODE_START; + dm->mode = cpu_to_le32(GS_CAN_MODE_START); + dm->flags = cpu_to_le32(flags); rc = usb_control_msg(interface_to_usbdev(dev->iface), usb_sndctrlpipe(interface_to_usbdev(dev->iface), 0), GS_USB_BREQ_MODE, @@ -737,9 +744,9 @@ return -ENOMEM; if (do_identify) - imode->mode = GS_CAN_IDENTIFY_ON; + imode->mode = cpu_to_le32(GS_CAN_IDENTIFY_ON); else - imode->mode = GS_CAN_IDENTIFY_OFF; + imode->mode = cpu_to_le32(GS_CAN_IDENTIFY_OFF); rc = usb_control_msg(interface_to_usbdev(dev->iface), usb_sndctrlpipe(interface_to_usbdev(dev->iface), @@ -790,6 +797,7 @@ struct net_device *netdev; int rc; struct gs_device_bt_const *bt_const; + u32 feature; bt_const = kmalloc(sizeof(*bt_const), GFP_KERNEL); if (!bt_const) @@ -830,14 +838,14 @@ /* dev settup */ strcpy(dev->bt_const.name, "gs_usb"); - dev->bt_const.tseg1_min = bt_const->tseg1_min; - dev->bt_const.tseg1_max = bt_const->tseg1_max; - dev->bt_const.tseg2_min = bt_const->tseg2_min; - dev->bt_const.tseg2_max = bt_const->tseg2_max; - dev->bt_const.sjw_max = bt_const->sjw_max; - dev->bt_const.brp_min = bt_const->brp_min; - dev->bt_const.brp_max = bt_const->brp_max; - dev->bt_const.brp_inc = bt_const->brp_inc; + dev->bt_const.tseg1_min = le32_to_cpu(bt_const->tseg1_min); + dev->bt_const.tseg1_max = le32_to_cpu(bt_const->tseg1_max); + dev->bt_const.tseg2_min = le32_to_cpu(bt_const->tseg2_min); + dev->bt_const.tseg2_max = le32_to_cpu(bt_const->tseg2_max); + dev->bt_const.sjw_max = le32_to_cpu(bt_const->sjw_max); + dev->bt_const.brp_min = le32_to_cpu(bt_const->brp_min); + dev->bt_const.brp_max = le32_to_cpu(bt_const->brp_max); + dev->bt_const.brp_inc = le32_to_cpu(bt_const->brp_inc); dev->udev = interface_to_usbdev(intf); dev->iface = intf; @@ -854,28 +862,29 @@ /* can settup */ dev->can.state = CAN_STATE_STOPPED; - dev->can.clock.freq = bt_const->fclk_can; + dev->can.clock.freq = le32_to_cpu(bt_const->fclk_can); dev->can.bittiming_const = &dev->bt_const; dev->can.do_set_bittiming = gs_usb_set_bittiming; dev->can.ctrlmode_supported = 0; - if (bt_const->feature & GS_CAN_FEATURE_LISTEN_ONLY) + feature = le32_to_cpu(bt_const->feature); + if (feature & GS_CAN_FEATURE_LISTEN_ONLY) dev->can.ctrlmode_supported |= CAN_CTRLMODE_LISTENONLY; - if (bt_const->feature & GS_CAN_FEATURE_LOOP_BACK) + if (feature & GS_CAN_FEATURE_LOOP_BACK) dev->can.ctrlmode_supported |= CAN_CTRLMODE_LOOPBACK; - if (bt_const->feature & GS_CAN_FEATURE_TRIPLE_SAMPLE) + if (feature & GS_CAN_FEATURE_TRIPLE_SAMPLE) dev->can.ctrlmode_supported |= CAN_CTRLMODE_3_SAMPLES; - if (bt_const->feature & GS_CAN_FEATURE_ONE_SHOT) + if (feature & GS_CAN_FEATURE_ONE_SHOT) dev->can.ctrlmode_supported |= CAN_CTRLMODE_ONE_SHOT; SET_NETDEV_DEV(netdev, &intf->dev); - if (dconf->sw_version > 1) - if (bt_const->feature & GS_CAN_FEATURE_IDENTIFY) + if (le32_to_cpu(dconf->sw_version) > 1) + if (feature & GS_CAN_FEATURE_IDENTIFY) netdev->ethtool_ops = &gs_usb_ethtool_ops; kfree(bt_const); @@ -910,7 +919,7 @@ if (!hconf) return -ENOMEM; - hconf->byte_order = 0x0000beef; + hconf->byte_order = cpu_to_le32(0x0000beef); /* send host config */ rc = usb_control_msg(interface_to_usbdev(intf), --- linux-5.8.0.orig/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +++ linux-5.8.0/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c @@ -367,7 +367,7 @@ .tseg2_max = 32, .sjw_max = 16, .brp_min = 1, - .brp_max = 4096, + .brp_max = 8192, .brp_inc = 1, }; --- linux-5.8.0.orig/drivers/net/can/usb/mcba_usb.c +++ linux-5.8.0/drivers/net/can/usb/mcba_usb.c @@ -326,8 +326,6 @@ if (!ctx) return NETDEV_TX_BUSY; - can_put_echo_skb(skb, priv->netdev, ctx->ndx); - if (cf->can_id & CAN_EFF_FLAG) { /* SIDH | SIDL | EIDH | EIDL * 28 - 21 | 20 19 18 x x x 17 16 | 15 - 8 | 7 - 0 @@ -357,6 +355,8 @@ if (cf->can_id & CAN_RTR_FLAG) usb_msg.dlc |= MCBA_DLC_RTR_MASK; + can_put_echo_skb(skb, priv->netdev, ctx->ndx); + err = mcba_usb_xmit(priv, (struct mcba_usb_msg *)&usb_msg, ctx); if (err) goto xmit_failed; --- linux-5.8.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ linux-5.8.0/drivers/net/can/usb/peak_usb/pcan_usb_core.c @@ -130,14 +130,55 @@ /* protect from getting time before setting now */ if (ktime_to_ns(time_ref->tv_host)) { u64 delta_us; + s64 delta_ts = 0; - delta_us = ts - time_ref->ts_dev_2; - if (ts < time_ref->ts_dev_2) - delta_us &= (1 << time_ref->adapter->ts_used_bits) - 1; + /* General case: dev_ts_1 < dev_ts_2 < ts, with: + * + * - dev_ts_1 = previous sync timestamp + * - dev_ts_2 = last sync timestamp + * - ts = event timestamp + * - ts_period = known sync period (theoretical) + * ~ dev_ts2 - dev_ts1 + * *but*: + * + * - time counters wrap (see adapter->ts_used_bits) + * - sometimes, dev_ts_1 < ts < dev_ts2 + * + * "normal" case (sync time counters increase): + * must take into account case when ts wraps (tsw) + * + * < ts_period > < > + * | | | + * ---+--------+----+-------0-+--+--> + * ts_dev_1 | ts_dev_2 | + * ts tsw + */ + if (time_ref->ts_dev_1 < time_ref->ts_dev_2) { + /* case when event time (tsw) wraps */ + if (ts < time_ref->ts_dev_1) + delta_ts = BIT_ULL(time_ref->adapter->ts_used_bits); - delta_us += time_ref->ts_total; + /* Otherwise, sync time counter (ts_dev_2) has wrapped: + * handle case when event time (tsn) hasn't. + * + * < ts_period > < > + * | | | + * ---+--------+--0-+---------+--+--> + * ts_dev_1 | ts_dev_2 | + * tsn ts + */ + } else if (time_ref->ts_dev_1 < ts) { + delta_ts = -BIT_ULL(time_ref->adapter->ts_used_bits); + } - delta_us *= time_ref->adapter->us_per_ts_scale; + /* add delay between last sync and event timestamps */ + delta_ts += (signed int)(ts - time_ref->ts_dev_2); + + /* add time from beginning to last sync */ + delta_ts += time_ref->ts_total; + + /* convert ticks number into microseconds */ + delta_us = delta_ts * time_ref->adapter->us_per_ts_scale; delta_us >>= time_ref->adapter->us_per_ts_shift; *time = ktime_add_us(time_ref->tv_host_0, delta_us); --- linux-5.8.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_fd.c +++ linux-5.8.0/drivers/net/can/usb/peak_usb/pcan_usb_fd.c @@ -468,12 +468,18 @@ struct pucan_msg *rx_msg) { struct pucan_rx_msg *rm = (struct pucan_rx_msg *)rx_msg; - struct peak_usb_device *dev = usb_if->dev[pucan_msg_get_channel(rm)]; - struct net_device *netdev = dev->netdev; + struct peak_usb_device *dev; + struct net_device *netdev; struct canfd_frame *cfd; struct sk_buff *skb; const u16 rx_msg_flags = le16_to_cpu(rm->flags); + if (pucan_msg_get_channel(rm) >= ARRAY_SIZE(usb_if->dev)) + return -ENOMEM; + + dev = usb_if->dev[pucan_msg_get_channel(rm)]; + netdev = dev->netdev; + if (rx_msg_flags & PUCAN_MSG_EXT_DATA_LEN) { /* CANFD frame case */ skb = alloc_canfd_skb(netdev, &cfd); @@ -506,11 +512,11 @@ else memcpy(cfd->data, rm->d, cfd->len); - peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(rm->ts_low)); - netdev->stats.rx_packets++; netdev->stats.rx_bytes += cfd->len; + peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(rm->ts_low)); + return 0; } @@ -519,15 +525,21 @@ struct pucan_msg *rx_msg) { struct pucan_status_msg *sm = (struct pucan_status_msg *)rx_msg; - struct peak_usb_device *dev = usb_if->dev[pucan_stmsg_get_channel(sm)]; - struct pcan_usb_fd_device *pdev = - container_of(dev, struct pcan_usb_fd_device, dev); + struct pcan_usb_fd_device *pdev; enum can_state new_state = CAN_STATE_ERROR_ACTIVE; enum can_state rx_state, tx_state; - struct net_device *netdev = dev->netdev; + struct peak_usb_device *dev; + struct net_device *netdev; struct can_frame *cf; struct sk_buff *skb; + if (pucan_stmsg_get_channel(sm) >= ARRAY_SIZE(usb_if->dev)) + return -ENOMEM; + + dev = usb_if->dev[pucan_stmsg_get_channel(sm)]; + pdev = container_of(dev, struct pcan_usb_fd_device, dev); + netdev = dev->netdev; + /* nothing should be sent while in BUS_OFF state */ if (dev->can.state == CAN_STATE_BUS_OFF) return 0; @@ -566,11 +578,11 @@ if (!skb) return -ENOMEM; - peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(sm->ts_low)); - netdev->stats.rx_packets++; netdev->stats.rx_bytes += cf->can_dlc; + peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(sm->ts_low)); + return 0; } @@ -579,9 +591,14 @@ struct pucan_msg *rx_msg) { struct pucan_error_msg *er = (struct pucan_error_msg *)rx_msg; - struct peak_usb_device *dev = usb_if->dev[pucan_ermsg_get_channel(er)]; - struct pcan_usb_fd_device *pdev = - container_of(dev, struct pcan_usb_fd_device, dev); + struct pcan_usb_fd_device *pdev; + struct peak_usb_device *dev; + + if (pucan_ermsg_get_channel(er) >= ARRAY_SIZE(usb_if->dev)) + return -EINVAL; + + dev = usb_if->dev[pucan_ermsg_get_channel(er)]; + pdev = container_of(dev, struct pcan_usb_fd_device, dev); /* keep a trace of tx and rx error counters for later use */ pdev->bec.txerr = er->tx_err_cnt; @@ -595,11 +612,17 @@ struct pucan_msg *rx_msg) { struct pcan_ufd_ovr_msg *ov = (struct pcan_ufd_ovr_msg *)rx_msg; - struct peak_usb_device *dev = usb_if->dev[pufd_omsg_get_channel(ov)]; - struct net_device *netdev = dev->netdev; + struct peak_usb_device *dev; + struct net_device *netdev; struct can_frame *cf; struct sk_buff *skb; + if (pufd_omsg_get_channel(ov) >= ARRAY_SIZE(usb_if->dev)) + return -EINVAL; + + dev = usb_if->dev[pufd_omsg_get_channel(ov)]; + netdev = dev->netdev; + /* allocate an skb to store the error frame */ skb = alloc_can_err_skb(netdev, &cf); if (!skb) @@ -716,6 +739,9 @@ u16 tx_msg_size, tx_msg_flags; u8 can_dlc; + if (cfd->len > CANFD_MAX_DLEN) + return -EINVAL; + tx_msg_size = ALIGN(sizeof(struct pucan_tx_msg) + cfd->len, 4); tx_msg->size = cpu_to_le16(tx_msg_size); tx_msg->type = cpu_to_le16(PUCAN_MSG_CAN_TX); --- linux-5.8.0.orig/drivers/net/can/vcan.c +++ linux-5.8.0/drivers/net/can/vcan.c @@ -153,7 +153,7 @@ dev->addr_len = 0; dev->tx_queue_len = 0; dev->flags = IFF_NOARP; - dev->ml_priv = netdev_priv(dev); + can_set_ml_priv(dev, netdev_priv(dev)); /* set flags according to driver capabilities */ if (echo) --- linux-5.8.0.orig/drivers/net/can/vxcan.c +++ linux-5.8.0/drivers/net/can/vxcan.c @@ -39,6 +39,7 @@ struct net_device *peer; struct canfd_frame *cfd = (struct canfd_frame *)skb->data; struct net_device_stats *peerstats, *srcstats = &dev->stats; + u8 len; if (can_dropped_invalid_skb(dev, skb)) return NETDEV_TX_OK; @@ -61,12 +62,13 @@ skb->dev = peer; skb->ip_summed = CHECKSUM_UNNECESSARY; + len = cfd->len; if (netif_rx_ni(skb) == NET_RX_SUCCESS) { srcstats->tx_packets++; - srcstats->tx_bytes += cfd->len; + srcstats->tx_bytes += len; peerstats = &peer->stats; peerstats->rx_packets++; - peerstats->rx_bytes += cfd->len; + peerstats->rx_bytes += len; } out_unlock: @@ -139,6 +141,8 @@ static void vxcan_setup(struct net_device *dev) { + struct can_ml_priv *can_ml; + dev->type = ARPHRD_CAN; dev->mtu = CANFD_MTU; dev->hard_header_len = 0; @@ -147,7 +151,9 @@ dev->flags = (IFF_NOARP|IFF_ECHO); dev->netdev_ops = &vxcan_netdev_ops; dev->needs_free_netdev = true; - dev->ml_priv = netdev_priv(dev) + ALIGN(sizeof(struct vxcan_priv), NETDEV_ALIGN); + + can_ml = netdev_priv(dev) + ALIGN(sizeof(struct vxcan_priv), NETDEV_ALIGN); + can_set_ml_priv(dev, can_ml); } /* forward declaration for rtnl_create_link() */ --- linux-5.8.0.orig/drivers/net/can/xilinx_can.c +++ linux-5.8.0/drivers/net/can/xilinx_can.c @@ -1391,7 +1391,7 @@ if (ret < 0) { netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", __func__, ret); - return ret; + goto err; } ret = request_irq(ndev->irq, xcan_interrupt, priv->irq_flags, @@ -1475,6 +1475,7 @@ if (ret < 0) { netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", __func__, ret); + pm_runtime_put(priv->dev); return ret; } @@ -1789,7 +1790,7 @@ if (ret < 0) { netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", __func__, ret); - goto err_pmdisable; + goto err_disableclks; } if (priv->read_reg(priv, XCAN_SR_OFFSET) != XCAN_SR_CONFIG_MASK) { @@ -1824,7 +1825,6 @@ err_disableclks: pm_runtime_put(priv->dev); -err_pmdisable: pm_runtime_disable(&pdev->dev); err_free: free_candev(ndev); --- linux-5.8.0.orig/drivers/net/dsa/b53/b53_common.c +++ linux-5.8.0/drivers/net/dsa/b53/b53_common.c @@ -512,6 +512,19 @@ } EXPORT_SYMBOL(b53_imp_vlan_setup); +static void b53_port_set_learning(struct b53_device *dev, int port, + bool learning) +{ + u16 reg; + + b53_read16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, ®); + if (learning) + reg &= ~BIT(port); + else + reg |= BIT(port); + b53_write16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, reg); +} + int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy) { struct b53_device *dev = ds->priv; @@ -525,6 +538,7 @@ cpu_port = dsa_to_port(ds, port)->cpu_dp->index; b53_br_egress_floods(ds, port, true, true); + b53_port_set_learning(dev, port, false); if (dev->ops->irq_enable) ret = dev->ops->irq_enable(dev, port); @@ -658,6 +672,7 @@ b53_brcm_hdr_setup(dev->ds, port); b53_br_egress_floods(dev->ds, port, true, true); + b53_port_set_learning(dev, port, false); } static void b53_enable_mib(struct b53_device *dev) @@ -1004,13 +1019,6 @@ b53_disable_port(ds, port); } - /* Let DSA handle the case were multiple bridges span the same switch - * device and different VLAN awareness settings are requested, which - * would be breaking filtering semantics for any of the other bridge - * devices. (not hardware supported) - */ - ds->vlan_filtering_is_global = true; - return ret; } @@ -1362,7 +1370,7 @@ !(vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED)) return -EINVAL; - if (vlan->vid_end > dev->num_vlans) + if (vlan->vid_end >= dev->num_vlans) return -ERANGE; b53_enable_vlan(dev, true, ds->vlan_filtering); @@ -1555,6 +1563,8 @@ return ret; switch (ret) { + case -ETIMEDOUT: + return ret; case -ENOSPC: dev_dbg(dev->dev, "{%pM,%.4d} no space left in ARL\n", addr, vid); @@ -1795,6 +1805,8 @@ b53_write16(dev, B53_PVLAN_PAGE, B53_PVLAN_PORT_MASK(port), pvlan); dev->ports[port].vlan_ctl_mask = pvlan; + b53_port_set_learning(dev, port, true); + return 0; } EXPORT_SYMBOL(b53_br_join); @@ -1842,6 +1854,7 @@ vl->untag |= BIT(port) | BIT(cpu_port); b53_set_vlan_entry(dev, pvid, vl); } + b53_port_set_learning(dev, port, false); } EXPORT_SYMBOL(b53_br_leave); @@ -2561,6 +2574,13 @@ dev->priv = priv; dev->ops = ops; ds->ops = &b53_switch_ops; + /* Let DSA handle the case were multiple bridges span the same switch + * device and different VLAN awareness settings are requested, which + * would be breaking filtering semantics for any of the other bridge + * devices. (not hardware supported) + */ + ds->vlan_filtering_is_global = true; + mutex_init(&dev->reg_mutex); mutex_init(&dev->stats_mutex); --- linux-5.8.0.orig/drivers/net/dsa/b53/b53_regs.h +++ linux-5.8.0/drivers/net/dsa/b53/b53_regs.h @@ -115,6 +115,7 @@ #define B53_UC_FLOOD_MASK 0x32 #define B53_MC_FLOOD_MASK 0x34 #define B53_IPMC_FLOOD_MASK 0x36 +#define B53_DIS_LEARNING 0x3c /* * Override Ports 0-7 State on devices with xMII interfaces (8 bit) --- linux-5.8.0.orig/drivers/net/dsa/bcm_sf2.c +++ linux-5.8.0/drivers/net/dsa/bcm_sf2.c @@ -172,23 +172,10 @@ reg &= ~P_TXQ_PSM_VDD(port); core_writel(priv, reg, CORE_MEM_PSM_VDD_CTRL); - /* Enable learning */ - reg = core_readl(priv, CORE_DIS_LEARN); - reg &= ~BIT(port); - core_writel(priv, reg, CORE_DIS_LEARN); - /* Enable Broadcom tags for that port if requested */ - if (priv->brcm_tag_mask & BIT(port)) { + if (priv->brcm_tag_mask & BIT(port)) b53_brcm_hdr_setup(ds, port); - /* Disable learning on ASP port */ - if (port == 7) { - reg = core_readl(priv, CORE_DIS_LEARN); - reg |= BIT(port); - core_writel(priv, reg, CORE_DIS_LEARN); - } - } - /* Configure Traffic Class to QoS mapping, allow each priority to map * to a different queue number */ @@ -442,15 +429,19 @@ /* Find our integrated MDIO bus node */ dn = of_find_compatible_node(NULL, NULL, "brcm,unimac-mdio"); priv->master_mii_bus = of_mdio_find_bus(dn); - if (!priv->master_mii_bus) + if (!priv->master_mii_bus) { + of_node_put(dn); return -EPROBE_DEFER; + } get_device(&priv->master_mii_bus->dev); priv->master_mii_dn = dn; priv->slave_mii_bus = devm_mdiobus_alloc(ds->dev); - if (!priv->slave_mii_bus) + if (!priv->slave_mii_bus) { + of_node_put(dn); return -ENOMEM; + } priv->slave_mii_bus->priv = priv; priv->slave_mii_bus->name = "sf2 slave mii"; @@ -501,8 +492,10 @@ * in bits 15:8 and the patch level in bits 7:0 which is exactly what * the REG_PHY_REVISION register layout is. */ - - return priv->hw_params.gphy_rev; + if (priv->int_phy_mask & BIT(port)) + return priv->hw_params.gphy_rev; + else + return 0; } static void bcm_sf2_sw_validate(struct dsa_switch *ds, int port, --- linux-5.8.0.orig/drivers/net/dsa/lantiq_gswip.c +++ linux-5.8.0/drivers/net/dsa/lantiq_gswip.c @@ -26,6 +26,7 @@ */ #include +#include #include #include #include @@ -91,9 +92,7 @@ GSWIP_MDIO_PHY_FDUP_MASK) /* GSWIP MII Registers */ -#define GSWIP_MII_CFG0 0x00 -#define GSWIP_MII_CFG1 0x02 -#define GSWIP_MII_CFG5 0x04 +#define GSWIP_MII_CFGp(p) (0x2 * (p)) #define GSWIP_MII_CFG_EN BIT(14) #define GSWIP_MII_CFG_LDCLKDIS BIT(12) #define GSWIP_MII_CFG_MODE_MIIP 0x0 @@ -391,17 +390,9 @@ static void gswip_mii_mask_cfg(struct gswip_priv *priv, u32 clear, u32 set, int port) { - switch (port) { - case 0: - gswip_mii_mask(priv, clear, set, GSWIP_MII_CFG0); - break; - case 1: - gswip_mii_mask(priv, clear, set, GSWIP_MII_CFG1); - break; - case 5: - gswip_mii_mask(priv, clear, set, GSWIP_MII_CFG5); - break; - } + /* There's no MII_CFG register for the CPU port */ + if (!dsa_is_cpu_port(priv->ds, port)) + gswip_mii_mask(priv, clear, set, GSWIP_MII_CFGp(port)); } static void gswip_mii_mask_pcdu(struct gswip_priv *priv, u32 clear, u32 set, @@ -805,9 +796,8 @@ gswip_mdio_mask(priv, 0xff, 0x09, GSWIP_MDIO_MDC_CFG1); /* Disable the xMII link */ - gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, 0); - gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, 1); - gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, 5); + for (i = 0; i < priv->hw_info->max_ports; i++) + gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, i); /* enable special tag insertion on cpu port */ gswip_switch_mask(priv, 0, GSWIP_FDMA_PCTRL_STEN, @@ -1430,11 +1420,12 @@ phylink_set(mask, Pause); phylink_set(mask, Asym_Pause); - /* With the exclusion of MII and Reverse MII, we support Gigabit, - * including Half duplex + /* With the exclusion of MII, Reverse MII and Reduced MII, we + * support Gigabit, including Half duplex */ if (state->interface != PHY_INTERFACE_MODE_MII && - state->interface != PHY_INTERFACE_MODE_REVMII) { + state->interface != PHY_INTERFACE_MODE_REVMII && + state->interface != PHY_INTERFACE_MODE_RMII) { phylink_set(mask, 1000baseT_Full); phylink_set(mask, 1000baseT_Half); } @@ -1524,9 +1515,7 @@ { struct gswip_priv *priv = ds->priv; - /* Enable the xMII interface only for the external PHY */ - if (interface != PHY_INTERFACE_MODE_INTERNAL) - gswip_mii_mask_cfg(priv, 0, GSWIP_MII_CFG_EN, port); + gswip_mii_mask_cfg(priv, 0, GSWIP_MII_CFG_EN, port); } static void gswip_get_strings(struct dsa_switch *ds, int port, u32 stringset, @@ -1821,6 +1810,16 @@ i++; } + /* The standalone PHY11G requires 300ms to be fully + * initialized and ready for any MDIO communication after being + * taken out of reset. For the SoC-internal GPHY variant there + * is no (known) documentation for the minimum time after a + * reset. Use the same value as for the standalone variant as + * some users have reported internal PHYs not being detected + * without any delay. + */ + msleep(300); + return 0; remove_gphy: --- linux-5.8.0.orig/drivers/net/dsa/microchip/ksz8795.c +++ linux-5.8.0/drivers/net/dsa/microchip/ksz8795.c @@ -1269,7 +1269,7 @@ } /* set the real number of ports */ - dev->ds->num_ports = dev->port_cnt; + dev->ds->num_ports = dev->port_cnt + 1; return 0; } --- linux-5.8.0.orig/drivers/net/dsa/microchip/ksz_common.c +++ linux-5.8.0/drivers/net/dsa/microchip/ksz_common.c @@ -103,14 +103,8 @@ INIT_DELAYED_WORK(&dev->mib_read, ksz_mib_read_work); - /* Read MIB counters every 30 seconds to avoid overflow. */ - dev->mib_read_interval = msecs_to_jiffies(30000); - for (i = 0; i < dev->mib_port_cnt; i++) dev->dev_ops->port_init_cnt(dev, i); - - /* Start the timer 2 seconds later. */ - schedule_delayed_work(&dev->mib_read, msecs_to_jiffies(2000)); } EXPORT_SYMBOL_GPL(ksz_init_mib_timer); @@ -144,7 +138,9 @@ /* Read all MIB counters when the link is going down. */ if (!phydev->link) { p->read = true; - schedule_delayed_work(&dev->mib_read, 0); + /* timer started */ + if (dev->mib_read_interval) + schedule_delayed_work(&dev->mib_read, 0); } mutex_lock(&dev->dev_mutex); if (!phydev->link) @@ -460,6 +456,12 @@ return ret; } + /* Read MIB counters every 30 seconds to avoid overflow. */ + dev->mib_read_interval = msecs_to_jiffies(30000); + + /* Start the MIB timer. */ + schedule_delayed_work(&dev->mib_read, 0); + return 0; } EXPORT_SYMBOL(ksz_switch_register); --- linux-5.8.0.orig/drivers/net/dsa/mt7530.c +++ linux-5.8.0/drivers/net/dsa/mt7530.c @@ -1501,7 +1501,7 @@ phylink_set(mask, 100baseT_Full); if (state->interface != PHY_INTERFACE_MODE_MII) { - phylink_set(mask, 1000baseT_Half); + /* This switch only supports 1G full-duplex. */ phylink_set(mask, 1000baseT_Full); if (port == 5) phylink_set(mask, 1000baseX_Full); --- linux-5.8.0.orig/drivers/net/dsa/mv88e6xxx/chip.c +++ linux-5.8.0/drivers/net/dsa/mv88e6xxx/chip.c @@ -1671,7 +1671,11 @@ if (!entry.portvec) entry.state = 0; } else { - entry.portvec |= BIT(port); + if (state == MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC) + entry.portvec = BIT(port); + else + entry.portvec |= BIT(port); + entry.state = state; } @@ -2299,6 +2303,8 @@ usleep_range(10000, 20000); gpiod_set_value_cansleep(gpiod, 0); usleep_range(10000, 20000); + + mv88e6xxx_g1_wait_eeprom_done(chip); } } @@ -3485,7 +3491,6 @@ .port_set_frame_mode = mv88e6351_port_set_frame_mode, .port_set_egress_floods = mv88e6352_port_set_egress_floods, .port_set_ether_type = mv88e6351_port_set_ether_type, - .port_set_jumbo_size = mv88e6165_port_set_jumbo_size, .port_egress_rate_limiting = mv88e6095_port_egress_rate_limiting, .port_pause_limit = mv88e6097_port_pause_limit, .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, --- linux-5.8.0.orig/drivers/net/dsa/mv88e6xxx/global1.c +++ linux-5.8.0/drivers/net/dsa/mv88e6xxx/global1.c @@ -75,6 +75,37 @@ return mv88e6xxx_g1_wait_bit(chip, MV88E6XXX_G1_STS, bit, 1); } +void mv88e6xxx_g1_wait_eeprom_done(struct mv88e6xxx_chip *chip) +{ + const unsigned long timeout = jiffies + 1 * HZ; + u16 val; + int err; + + /* Wait up to 1 second for the switch to finish reading the + * EEPROM. + */ + while (time_before(jiffies, timeout)) { + err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_STS, &val); + if (err) { + dev_err(chip->dev, "Error reading status"); + return; + } + + /* If the switch is still resetting, it may not + * respond on the bus, and so MDIO read returns + * 0xffff. Differentiate between that, and waiting for + * the EEPROM to be done by bit 0 being set. + */ + if (val != 0xffff && + val & BIT(MV88E6XXX_G1_STS_IRQ_EEPROM_DONE)) + return; + + usleep_range(1000, 2000); + } + + dev_err(chip->dev, "Timeout waiting for EEPROM done"); +} + /* Offset 0x01: Switch MAC Address Register Bytes 0 & 1 * Offset 0x02: Switch MAC Address Register Bytes 2 & 3 * Offset 0x03: Switch MAC Address Register Bytes 4 & 5 --- linux-5.8.0.orig/drivers/net/dsa/mv88e6xxx/global1.h +++ linux-5.8.0/drivers/net/dsa/mv88e6xxx/global1.h @@ -278,6 +278,7 @@ int mv88e6185_g1_reset(struct mv88e6xxx_chip *chip); int mv88e6352_g1_reset(struct mv88e6xxx_chip *chip); int mv88e6250_g1_reset(struct mv88e6xxx_chip *chip); +void mv88e6xxx_g1_wait_eeprom_done(struct mv88e6xxx_chip *chip); int mv88e6185_g1_ppu_enable(struct mv88e6xxx_chip *chip); int mv88e6185_g1_ppu_disable(struct mv88e6xxx_chip *chip); --- linux-5.8.0.orig/drivers/net/dsa/mv88e6xxx/global1_vtu.c +++ linux-5.8.0/drivers/net/dsa/mv88e6xxx/global1_vtu.c @@ -125,11 +125,9 @@ * Offset 0x08: VTU/STU Data Register 2 * Offset 0x09: VTU/STU Data Register 3 */ - -static int mv88e6185_g1_vtu_data_read(struct mv88e6xxx_chip *chip, - struct mv88e6xxx_vtu_entry *entry) +static int mv88e6185_g1_vtu_stu_data_read(struct mv88e6xxx_chip *chip, + u16 *regs) { - u16 regs[3]; int i; /* Read all 3 VTU/STU Data registers */ @@ -142,12 +140,45 @@ return err; } - /* Extract MemberTag and PortState data */ + return 0; +} + +static int mv88e6185_g1_vtu_data_read(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) +{ + u16 regs[3]; + int err; + int i; + + err = mv88e6185_g1_vtu_stu_data_read(chip, regs); + if (err) + return err; + + /* Extract MemberTag data */ for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { unsigned int member_offset = (i % 4) * 4; - unsigned int state_offset = member_offset + 2; entry->member[i] = (regs[i / 4] >> member_offset) & 0x3; + } + + return 0; +} + +static int mv88e6185_g1_stu_data_read(struct mv88e6xxx_chip *chip, + struct mv88e6xxx_vtu_entry *entry) +{ + u16 regs[3]; + int err; + int i; + + err = mv88e6185_g1_vtu_stu_data_read(chip, regs); + if (err) + return err; + + /* Extract PortState data */ + for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { + unsigned int state_offset = (i % 4) * 4 + 2; + entry->state[i] = (regs[i / 4] >> state_offset) & 0x3; } @@ -320,6 +351,10 @@ if (err) return err; + err = mv88e6185_g1_stu_data_read(chip, entry); + if (err) + return err; + /* VTU DBNum[3:0] are located in VTU Operation 3:0 * VTU DBNum[5:4] are located in VTU Operation 9:8 */ @@ -349,6 +384,10 @@ if (err) return err; + err = mv88e6185_g1_stu_data_read(chip, entry); + if (err) + return err; + /* VTU DBNum[3:0] are located in VTU Operation 3:0 * VTU DBNum[7:4] are located in VTU Operation 11:8 */ @@ -374,16 +413,20 @@ return err; if (entry->valid) { - /* Fetch (and mask) VLAN PortState data from the STU */ - err = mv88e6xxx_g1_vtu_stu_get(chip, entry); + err = mv88e6185_g1_vtu_data_read(chip, entry); if (err) return err; - err = mv88e6185_g1_vtu_data_read(chip, entry); + err = mv88e6xxx_g1_vtu_fid_read(chip, entry); if (err) return err; - err = mv88e6xxx_g1_vtu_fid_read(chip, entry); + /* Fetch VLAN PortState data from the STU */ + err = mv88e6xxx_g1_vtu_stu_get(chip, entry); + if (err) + return err; + + err = mv88e6185_g1_stu_data_read(chip, entry); if (err) return err; } --- linux-5.8.0.orig/drivers/net/dsa/ocelot/felix.c +++ linux-5.8.0/drivers/net/dsa/ocelot/felix.c @@ -613,12 +613,11 @@ struct ocelot *ocelot = ds->priv; struct felix *felix = ocelot_to_felix(ocelot); - if (felix->info->mdio_bus_free) - felix->info->mdio_bus_free(ocelot); - ocelot_deinit_timestamp(ocelot); - /* stop workqueue thread */ ocelot_deinit(ocelot); + + if (felix->info->mdio_bus_free) + felix->info->mdio_bus_free(ocelot); } static int felix_hwtstamp_get(struct dsa_switch *ds, int port, --- linux-5.8.0.orig/drivers/net/dsa/ocelot/felix_vsc9959.c +++ linux-5.8.0/drivers/net/dsa/ocelot/felix_vsc9959.c @@ -607,17 +607,17 @@ [VCAP_IS2_HK_DIP_EQ_SIP] = {118, 1}, /* IP4_TCP_UDP (TYPE=100) */ [VCAP_IS2_HK_TCP] = {119, 1}, - [VCAP_IS2_HK_L4_SPORT] = {120, 16}, - [VCAP_IS2_HK_L4_DPORT] = {136, 16}, + [VCAP_IS2_HK_L4_DPORT] = {120, 16}, + [VCAP_IS2_HK_L4_SPORT] = {136, 16}, [VCAP_IS2_HK_L4_RNG] = {152, 8}, [VCAP_IS2_HK_L4_SPORT_EQ_DPORT] = {160, 1}, [VCAP_IS2_HK_L4_SEQUENCE_EQ0] = {161, 1}, - [VCAP_IS2_HK_L4_URG] = {162, 1}, - [VCAP_IS2_HK_L4_ACK] = {163, 1}, - [VCAP_IS2_HK_L4_PSH] = {164, 1}, - [VCAP_IS2_HK_L4_RST] = {165, 1}, - [VCAP_IS2_HK_L4_SYN] = {166, 1}, - [VCAP_IS2_HK_L4_FIN] = {167, 1}, + [VCAP_IS2_HK_L4_FIN] = {162, 1}, + [VCAP_IS2_HK_L4_SYN] = {163, 1}, + [VCAP_IS2_HK_L4_RST] = {164, 1}, + [VCAP_IS2_HK_L4_PSH] = {165, 1}, + [VCAP_IS2_HK_L4_ACK] = {166, 1}, + [VCAP_IS2_HK_L4_URG] = {167, 1}, [VCAP_IS2_HK_L4_1588_DOM] = {168, 8}, [VCAP_IS2_HK_L4_1588_VER] = {176, 4}, /* IP4_OTHER (TYPE=101) */ @@ -1105,8 +1105,21 @@ } } +/* Watermark encode + * Bit 8: Unit; 0:1, 1:16 + * Bit 7-0: Value to be multiplied with unit + */ +static u16 vsc9959_wm_enc(u16 value) +{ + if (value >= BIT(8)) + return BIT(8) | (value / 16); + + return value; +} + static const struct ocelot_ops vsc9959_ops = { .reset = vsc9959_reset, + .wm_enc = vsc9959_wm_enc, }; static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot) @@ -1215,8 +1228,28 @@ static void vsc9959_sched_speed_set(struct ocelot *ocelot, int port, u32 speed) { + u8 tas_speed; + + switch (speed) { + case SPEED_10: + tas_speed = OCELOT_SPEED_10; + break; + case SPEED_100: + tas_speed = OCELOT_SPEED_100; + break; + case SPEED_1000: + tas_speed = OCELOT_SPEED_1000; + break; + case SPEED_2500: + tas_speed = OCELOT_SPEED_2500; + break; + default: + tas_speed = OCELOT_SPEED_1000; + break; + } + ocelot_rmw_rix(ocelot, - QSYS_TAG_CONFIG_LINK_SPEED(speed), + QSYS_TAG_CONFIG_LINK_SPEED(tas_speed), QSYS_TAG_CONFIG_LINK_SPEED_M, QSYS_TAG_CONFIG, port); } --- linux-5.8.0.orig/drivers/net/dsa/qca/ar9331.c +++ linux-5.8.0/drivers/net/dsa/qca/ar9331.c @@ -160,6 +160,8 @@ struct dsa_switch ds; struct dsa_switch_ops ops; struct irq_domain *irqdomain; + u32 irq_mask; + struct mutex lock_irq; struct mii_bus *mbus; /* mdio master */ struct mii_bus *sbus; /* mdio slave */ struct regmap *regmap; @@ -518,32 +520,44 @@ static void ar9331_sw_mask_irq(struct irq_data *d) { struct ar9331_sw_priv *priv = irq_data_get_irq_chip_data(d); - struct regmap *regmap = priv->regmap; - int ret; - ret = regmap_update_bits(regmap, AR9331_SW_REG_GINT_MASK, - AR9331_SW_GINT_PHY_INT, 0); - if (ret) - dev_err(priv->dev, "could not mask IRQ\n"); + priv->irq_mask = 0; } static void ar9331_sw_unmask_irq(struct irq_data *d) { struct ar9331_sw_priv *priv = irq_data_get_irq_chip_data(d); + + priv->irq_mask = AR9331_SW_GINT_PHY_INT; +} + +static void ar9331_sw_irq_bus_lock(struct irq_data *d) +{ + struct ar9331_sw_priv *priv = irq_data_get_irq_chip_data(d); + + mutex_lock(&priv->lock_irq); +} + +static void ar9331_sw_irq_bus_sync_unlock(struct irq_data *d) +{ + struct ar9331_sw_priv *priv = irq_data_get_irq_chip_data(d); struct regmap *regmap = priv->regmap; int ret; ret = regmap_update_bits(regmap, AR9331_SW_REG_GINT_MASK, - AR9331_SW_GINT_PHY_INT, - AR9331_SW_GINT_PHY_INT); + AR9331_SW_GINT_PHY_INT, priv->irq_mask); if (ret) - dev_err(priv->dev, "could not unmask IRQ\n"); + dev_err(priv->dev, "failed to change IRQ mask\n"); + + mutex_unlock(&priv->lock_irq); } static struct irq_chip ar9331_sw_irq_chip = { .name = AR9331_SW_NAME, .irq_mask = ar9331_sw_mask_irq, .irq_unmask = ar9331_sw_unmask_irq, + .irq_bus_lock = ar9331_sw_irq_bus_lock, + .irq_bus_sync_unlock = ar9331_sw_irq_bus_sync_unlock, }; static int ar9331_sw_irq_map(struct irq_domain *domain, unsigned int irq, @@ -582,6 +596,7 @@ return irq ? irq : -EINVAL; } + mutex_init(&priv->lock_irq); ret = devm_request_threaded_irq(dev, irq, NULL, ar9331_sw_irq, IRQF_ONESHOT, AR9331_SW_NAME, priv); if (ret) { --- linux-5.8.0.orig/drivers/net/dsa/realtek-smi-core.h +++ linux-5.8.0/drivers/net/dsa/realtek-smi-core.h @@ -25,6 +25,9 @@ const char *name; }; +/** + * struct rtl8366_vlan_mc - Virtual LAN member configuration + */ struct rtl8366_vlan_mc { u16 vid; u16 untag; @@ -119,7 +122,6 @@ int rtl8366_mc_is_used(struct realtek_smi *smi, int mc_index, int *used); int rtl8366_set_vlan(struct realtek_smi *smi, int vid, u32 member, u32 untag, u32 fid); -int rtl8366_get_pvid(struct realtek_smi *smi, int port, int *val); int rtl8366_set_pvid(struct realtek_smi *smi, unsigned int port, unsigned int vid); int rtl8366_enable_vlan4k(struct realtek_smi *smi, bool enable); --- linux-5.8.0.orig/drivers/net/dsa/rtl8366.c +++ linux-5.8.0/drivers/net/dsa/rtl8366.c @@ -36,113 +36,66 @@ } EXPORT_SYMBOL_GPL(rtl8366_mc_is_used); -int rtl8366_set_vlan(struct realtek_smi *smi, int vid, u32 member, - u32 untag, u32 fid) +/** + * rtl8366_obtain_mc() - retrieve or allocate a VLAN member configuration + * @smi: the Realtek SMI device instance + * @vid: the VLAN ID to look up or allocate + * @vlanmc: the pointer will be assigned to a pointer to a valid member config + * if successful + * @return: index of a new member config or negative error number + */ +static int rtl8366_obtain_mc(struct realtek_smi *smi, int vid, + struct rtl8366_vlan_mc *vlanmc) { struct rtl8366_vlan_4k vlan4k; int ret; int i; - /* Update the 4K table */ - ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (ret) - return ret; - - vlan4k.member = member; - vlan4k.untag = untag; - vlan4k.fid = fid; - ret = smi->ops->set_vlan_4k(smi, &vlan4k); - if (ret) - return ret; - - /* Try to find an existing MC entry for this VID */ + /* Try to find an existing member config entry for this VID */ for (i = 0; i < smi->num_vlan_mc; i++) { - struct rtl8366_vlan_mc vlanmc; - - ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (ret) + ret = smi->ops->get_vlan_mc(smi, i, vlanmc); + if (ret) { + dev_err(smi->dev, "error searching for VLAN MC %d for VID %d\n", + i, vid); return ret; - - if (vid == vlanmc.vid) { - /* update the MC entry */ - vlanmc.member = member; - vlanmc.untag = untag; - vlanmc.fid = fid; - - ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); - break; } - } - - return ret; -} -EXPORT_SYMBOL_GPL(rtl8366_set_vlan); -int rtl8366_get_pvid(struct realtek_smi *smi, int port, int *val) -{ - struct rtl8366_vlan_mc vlanmc; - int ret; - int index; - - ret = smi->ops->get_mc_index(smi, port, &index); - if (ret) - return ret; - - ret = smi->ops->get_vlan_mc(smi, index, &vlanmc); - if (ret) - return ret; - - *val = vlanmc.vid; - return 0; -} -EXPORT_SYMBOL_GPL(rtl8366_get_pvid); - -int rtl8366_set_pvid(struct realtek_smi *smi, unsigned int port, - unsigned int vid) -{ - struct rtl8366_vlan_mc vlanmc; - struct rtl8366_vlan_4k vlan4k; - int ret; - int i; - - /* Try to find an existing MC entry for this VID */ - for (i = 0; i < smi->num_vlan_mc; i++) { - ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (ret) - return ret; - - if (vid == vlanmc.vid) { - ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (ret) - return ret; - - ret = smi->ops->set_mc_index(smi, port, i); - return ret; - } + if (vid == vlanmc->vid) + return i; } /* We have no MC entry for this VID, try to find an empty one */ for (i = 0; i < smi->num_vlan_mc; i++) { - ret = smi->ops->get_vlan_mc(smi, i, &vlanmc); - if (ret) + ret = smi->ops->get_vlan_mc(smi, i, vlanmc); + if (ret) { + dev_err(smi->dev, "error searching for VLAN MC %d for VID %d\n", + i, vid); return ret; + } - if (vlanmc.vid == 0 && vlanmc.member == 0) { + if (vlanmc->vid == 0 && vlanmc->member == 0) { /* Update the entry from the 4K table */ ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); - if (ret) + if (ret) { + dev_err(smi->dev, "error looking for 4K VLAN MC %d for VID %d\n", + i, vid); return ret; + } - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (ret) + vlanmc->vid = vid; + vlanmc->member = vlan4k.member; + vlanmc->untag = vlan4k.untag; + vlanmc->fid = vlan4k.fid; + ret = smi->ops->set_vlan_mc(smi, i, vlanmc); + if (ret) { + dev_err(smi->dev, "unable to set/update VLAN MC %d for VID %d\n", + i, vid); return ret; + } - ret = smi->ops->set_mc_index(smi, port, i); - return ret; + dev_dbg(smi->dev, "created new MC at index %d for VID %d\n", + i, vid); + return i; } } @@ -160,24 +113,110 @@ if (ret) return ret; - vlanmc.vid = vid; - vlanmc.member = vlan4k.member; - vlanmc.untag = vlan4k.untag; - vlanmc.fid = vlan4k.fid; - ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); - if (ret) + vlanmc->vid = vid; + vlanmc->member = vlan4k.member; + vlanmc->untag = vlan4k.untag; + vlanmc->fid = vlan4k.fid; + ret = smi->ops->set_vlan_mc(smi, i, vlanmc); + if (ret) { + dev_err(smi->dev, "unable to set/update VLAN MC %d for VID %d\n", + i, vid); return ret; - - ret = smi->ops->set_mc_index(smi, port, i); - return ret; + } + dev_dbg(smi->dev, "recycled MC at index %i for VID %d\n", + i, vid); + return i; } } - dev_err(smi->dev, - "all VLAN member configurations are in use\n"); - + dev_err(smi->dev, "all VLAN member configurations are in use\n"); return -ENOSPC; } + +int rtl8366_set_vlan(struct realtek_smi *smi, int vid, u32 member, + u32 untag, u32 fid) +{ + struct rtl8366_vlan_mc vlanmc; + struct rtl8366_vlan_4k vlan4k; + int mc; + int ret; + + if (!smi->ops->is_vlan_valid(smi, vid)) + return -EINVAL; + + dev_dbg(smi->dev, + "setting VLAN%d 4k members: 0x%02x, untagged: 0x%02x\n", + vid, member, untag); + + /* Update the 4K table */ + ret = smi->ops->get_vlan_4k(smi, vid, &vlan4k); + if (ret) + return ret; + + vlan4k.member |= member; + vlan4k.untag |= untag; + vlan4k.fid = fid; + ret = smi->ops->set_vlan_4k(smi, &vlan4k); + if (ret) + return ret; + + dev_dbg(smi->dev, + "resulting VLAN%d 4k members: 0x%02x, untagged: 0x%02x\n", + vid, vlan4k.member, vlan4k.untag); + + /* Find or allocate a member config for this VID */ + ret = rtl8366_obtain_mc(smi, vid, &vlanmc); + if (ret < 0) + return ret; + mc = ret; + + /* Update the MC entry */ + vlanmc.member |= member; + vlanmc.untag |= untag; + vlanmc.fid = fid; + + /* Commit updates to the MC entry */ + ret = smi->ops->set_vlan_mc(smi, mc, &vlanmc); + if (ret) + dev_err(smi->dev, "failed to commit changes to VLAN MC index %d for VID %d\n", + mc, vid); + else + dev_dbg(smi->dev, + "resulting VLAN%d MC members: 0x%02x, untagged: 0x%02x\n", + vid, vlanmc.member, vlanmc.untag); + + return ret; +} +EXPORT_SYMBOL_GPL(rtl8366_set_vlan); + +int rtl8366_set_pvid(struct realtek_smi *smi, unsigned int port, + unsigned int vid) +{ + struct rtl8366_vlan_mc vlanmc; + int mc; + int ret; + + if (!smi->ops->is_vlan_valid(smi, vid)) + return -EINVAL; + + /* Find or allocate a member config for this VID */ + ret = rtl8366_obtain_mc(smi, vid, &vlanmc); + if (ret < 0) + return ret; + mc = ret; + + ret = smi->ops->set_mc_index(smi, port, mc); + if (ret) { + dev_err(smi->dev, "set PVID: failed to set MC index %d for port %d\n", + mc, port); + return ret; + } + + dev_dbg(smi->dev, "set PVID: the PVID for port %d set to %d using existing MC index %d\n", + port, vid, mc); + + return 0; +} EXPORT_SYMBOL_GPL(rtl8366_set_pvid); int rtl8366_enable_vlan4k(struct realtek_smi *smi, bool enable) @@ -376,7 +415,8 @@ if (!smi->ops->is_vlan_valid(smi, vid)) return; - dev_info(smi->dev, "add VLAN on port %d, %s, %s\n", + dev_info(smi->dev, "add VLAN %d on port %d, %s, %s\n", + vlan->vid_begin, port, untagged ? "untagged" : "tagged", pvid ? " PVID" : "no PVID"); @@ -384,36 +424,31 @@ if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port)) dev_err(smi->dev, "port is DSA or CPU port\n"); - for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) { - int pvid_val = 0; - - dev_info(smi->dev, "add VLAN %04x\n", vid); + for (vid = vlan->vid_begin; vid <= vlan->vid_end; vid++) { member |= BIT(port); if (untagged) untag |= BIT(port); - /* To ensure that we have a valid MC entry for this VLAN, - * initialize the port VLAN ID here. - */ - ret = rtl8366_get_pvid(smi, port, &pvid_val); - if (ret < 0) { - dev_err(smi->dev, "could not lookup PVID for port %d\n", - port); - return; - } - if (pvid_val == 0) { - ret = rtl8366_set_pvid(smi, port, vid); - if (ret < 0) - return; - } - } + ret = rtl8366_set_vlan(smi, vid, member, untag, 0); + if (ret) + dev_err(smi->dev, + "failed to set up VLAN %04x", + vid); - ret = rtl8366_set_vlan(smi, port, member, untag, 0); - if (ret) - dev_err(smi->dev, - "failed to set up VLAN %04x", - vid); + if (!pvid) + continue; + + ret = rtl8366_set_pvid(smi, port, vid); + if (ret) + dev_err(smi->dev, + "failed to set PVID on port %d to VLAN %04x", + port, vid); + + if (!ret) + dev_dbg(smi->dev, "VLAN add: added VLAN %d with PVID on port %d\n", + vid, port); + } } EXPORT_SYMBOL_GPL(rtl8366_vlan_add); @@ -439,13 +474,19 @@ return ret; if (vid == vlanmc.vid) { - /* clear VLAN member configurations */ - vlanmc.vid = 0; - vlanmc.priority = 0; - vlanmc.member = 0; - vlanmc.untag = 0; - vlanmc.fid = 0; - + /* Remove this port from the VLAN */ + vlanmc.member &= ~BIT(port); + vlanmc.untag &= ~BIT(port); + /* + * If no ports are members of this VLAN + * anymore then clear the whole member + * config so it can be reused. + */ + if (!vlanmc.member && vlanmc.untag) { + vlanmc.vid = 0; + vlanmc.priority = 0; + vlanmc.fid = 0; + } ret = smi->ops->set_vlan_mc(smi, i, &vlanmc); if (ret) { dev_err(smi->dev, --- linux-5.8.0.orig/drivers/net/dsa/rtl8366rb.c +++ linux-5.8.0/drivers/net/dsa/rtl8366rb.c @@ -1270,7 +1270,7 @@ if (smi->vlan4k_enabled) max = RTL8366RB_NUM_VIDS - 1; - if (vlan == 0 || vlan >= max) + if (vlan == 0 || vlan > max) return false; return true; --- linux-5.8.0.orig/drivers/net/dsa/sja1105/sja1105_main.c +++ linux-5.8.0/drivers/net/dsa/sja1105/sja1105_main.c @@ -1834,7 +1834,7 @@ speed = SPEED_1000; else if (bmcr & BMCR_SPEED100) speed = SPEED_100; - else if (bmcr & BMCR_SPEED10) + else speed = SPEED_10; sja1105_sgmii_pcs_force_speed(priv, speed); --- linux-5.8.0.orig/drivers/net/ethernet/allwinner/sun4i-emac.c +++ linux-5.8.0/drivers/net/ethernet/allwinner/sun4i-emac.c @@ -830,13 +830,13 @@ db->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(db->clk)) { ret = PTR_ERR(db->clk); - goto out_iounmap; + goto out_dispose_mapping; } ret = clk_prepare_enable(db->clk); if (ret) { dev_err(&pdev->dev, "Error couldn't enable clock (%d)\n", ret); - goto out_iounmap; + goto out_dispose_mapping; } ret = sunxi_sram_claim(&pdev->dev); @@ -895,6 +895,8 @@ sunxi_sram_release(&pdev->dev); out_clk_disable_unprepare: clk_disable_unprepare(db->clk); +out_dispose_mapping: + irq_dispose_mapping(ndev->irq); out_iounmap: iounmap(db->membase); out: @@ -913,6 +915,7 @@ unregister_netdev(ndev); sunxi_sram_release(&pdev->dev); clk_disable_unprepare(db->clk); + irq_dispose_mapping(ndev->irq); iounmap(db->membase); free_netdev(ndev); --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_admin_defs.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_admin_defs.h @@ -1,37 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 - 2016 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef _ENA_ADMIN_H_ #define _ENA_ADMIN_H_ +#define ENA_ADMIN_RSS_KEY_PARTS 10 enum ena_admin_aq_opcode { ENA_ADMIN_CREATE_SQ = 1, @@ -55,6 +29,7 @@ ENA_ADMIN_RESOURCE_BUSY = 7, }; +/* subcommands for the set/get feature admin commands */ enum ena_admin_aq_feature_id { ENA_ADMIN_DEVICE_ATTRIBUTES = 1, ENA_ADMIN_MAX_QUEUES_NUM = 2, @@ -63,7 +38,7 @@ ENA_ADMIN_MAX_QUEUES_EXT = 7, ENA_ADMIN_RSS_HASH_FUNCTION = 10, ENA_ADMIN_STATELESS_OFFLOAD_CONFIG = 11, - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG = 12, + ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG = 12, ENA_ADMIN_MTU = 14, ENA_ADMIN_RSS_HASH_INPUT = 18, ENA_ADMIN_INTERRUPT_MODERATION = 20, @@ -117,6 +92,8 @@ enum ena_admin_get_stats_type { ENA_ADMIN_GET_STATS_TYPE_BASIC = 0, ENA_ADMIN_GET_STATS_TYPE_EXTENDED = 1, + /* extra HW stats for specific network interface */ + ENA_ADMIN_GET_STATS_TYPE_ENI = 2, }; enum ena_admin_get_stats_scope { @@ -193,7 +170,7 @@ u16 extended_status; /* indicates to the driver which AQ entry has been consumed by the - * device and could be reused + * device and could be reused */ u16 sq_head_indx; }; @@ -238,8 +215,8 @@ */ u8 sq_caps_3; - /* associated completion queue id. This CQ must be created prior to - * SQ creation + /* associated completion queue id. This CQ must be created prior to SQ + * creation */ u16 cq_idx; @@ -378,7 +355,7 @@ u16 queue_idx; /* device id, value 0xFFFF means mine. only privileged device can get - * stats of other device + * stats of other device */ u16 device_id; }; @@ -410,10 +387,43 @@ u32 tx_drops_high; }; +/* ENI Statistics Command. */ +struct ena_admin_eni_stats { + /* The number of packets shaped due to inbound aggregate BW + * allowance being exceeded + */ + u64 bw_in_allowance_exceeded; + + /* The number of packets shaped due to outbound aggregate BW + * allowance being exceeded + */ + u64 bw_out_allowance_exceeded; + + /* The number of packets shaped due to PPS allowance being exceeded */ + u64 pps_allowance_exceeded; + + /* The number of packets shaped due to connection tracking + * allowance being exceeded and leading to failure in establishment + * of new connections + */ + u64 conntrack_allowance_exceeded; + + /* The number of packets shaped due to linklocal packet rate + * allowance being exceeded + */ + u64 linklocal_allowance_exceeded; +}; + struct ena_admin_acq_get_stats_resp { struct ena_admin_acq_common_desc acq_common_desc; - struct ena_admin_basic_stats basic_stats; + union { + u64 raw[7]; + + struct ena_admin_basic_stats basic_stats; + + struct ena_admin_eni_stats eni_stats; + } u; }; struct ena_admin_get_set_feature_common_desc { @@ -440,7 +450,9 @@ u32 device_version; - /* bitmap of ena_admin_aq_feature_id */ + /* bitmap of ena_admin_aq_feature_id, which represents supported + * subcommands for the set/get feature admin commands. + */ u32 supported_features; u32 reserved3; @@ -491,37 +503,65 @@ ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY = 2, }; +enum ena_admin_accel_mode_feat { + ENA_ADMIN_DISABLE_META_CACHING = 0, + ENA_ADMIN_LIMIT_TX_BURST = 1, +}; + +struct ena_admin_accel_mode_get { + /* bit field of enum ena_admin_accel_mode_feat */ + u16 supported_flags; + + /* maximum burst size between two doorbells. The size is in bytes */ + u16 max_tx_burst_size; +}; + +struct ena_admin_accel_mode_set { + /* bit field of enum ena_admin_accel_mode_feat */ + u16 enabled_flags; + + u16 reserved; +}; + +struct ena_admin_accel_mode_req { + union { + u32 raw[2]; + + struct ena_admin_accel_mode_get get; + + struct ena_admin_accel_mode_set set; + } u; +}; + struct ena_admin_feature_llq_desc { u32 max_llq_num; u32 max_llq_depth; - /* specify the header locations the device supports. bitfield of - * enum ena_admin_llq_header_location. + /* specify the header locations the device supports. bitfield of enum + * ena_admin_llq_header_location. */ u16 header_location_ctrl_supported; /* the header location the driver selected to use. */ u16 header_location_ctrl_enabled; - /* if inline header is specified - this is the size of descriptor - * list entry. If header in a separate ring is specified - this is - * the size of header ring entry. bitfield of enum - * ena_admin_llq_ring_entry_size. specify the entry sizes the device - * supports + /* if inline header is specified - this is the size of descriptor list + * entry. If header in a separate ring is specified - this is the size + * of header ring entry. bitfield of enum ena_admin_llq_ring_entry_size. + * specify the entry sizes the device supports */ u16 entry_size_ctrl_supported; /* the entry size the driver selected to use. */ u16 entry_size_ctrl_enabled; - /* valid only if inline header is specified. First entry associated - * with the packet includes descriptors and header. Rest of the - * entries occupied by descriptors. This parameter defines the max - * number of descriptors precedding the header in the first entry. - * The field is bitfield of enum - * ena_admin_llq_num_descs_before_header and specify the values the - * device supports + /* valid only if inline header is specified. First entry associated with + * the packet includes descriptors and header. Rest of the entries + * occupied by descriptors. This parameter defines the max number of + * descriptors precedding the header in the first entry. The field is + * bitfield of enum ena_admin_llq_num_descs_before_header and specify + * the values the device supports */ u16 desc_num_before_header_supported; @@ -529,17 +569,20 @@ u16 desc_num_before_header_enabled; /* valid only if inline was chosen. bitfield of enum - * ena_admin_llq_stride_ctrl + * ena_admin_llq_stride_ctrl */ u16 descriptors_stride_ctrl_supported; /* the stride control the driver selected to use */ u16 descriptors_stride_ctrl_enabled; - /* Maximum size in bytes taken by llq entries in a single tx burst. - * Set to 0 when there is no such limit. + /* reserved */ + u32 reserved1; + + /* accelerated low latency queues requirement. driver needs to + * support those requirements in order to use accelerated llq */ - u32 max_tx_burst_size; + struct ena_admin_accel_mode_req accel_mode; }; struct ena_admin_queue_ext_feature_fields { @@ -561,8 +604,8 @@ u32 max_tx_header_size; - /* Maximum Descriptors number, including meta descriptor, allowed for - * a single Tx packet + /* Maximum Descriptors number, including meta descriptor, allowed for a + * single Tx packet */ u16 max_per_packet_tx_descs; @@ -585,8 +628,8 @@ u32 max_header_size; - /* Maximum Descriptors number, including meta descriptor, allowed for - * a single Tx packet + /* Maximum Descriptors number, including meta descriptor, allowed for a + * single Tx packet */ u16 max_packet_tx_descs; @@ -674,11 +717,11 @@ }; struct ena_admin_feature_rss_flow_hash_control { - u32 keys_num; + u32 key_parts; u32 reserved; - u32 key[10]; + u32 key[ENA_ADMIN_RSS_KEY_PARTS]; }; struct ena_admin_feature_rss_flow_hash_function { @@ -816,7 +859,9 @@ /* 0 : reserved * 1 : rx_offset * 2 : interrupt_moderation - * 31:3 : reserved + * 3 : rx_buf_mirroring + * 4 : rss_configurable_function_key + * 31:5 : reserved */ u32 driver_supported_features; }; @@ -972,7 +1017,7 @@ struct ena_admin_aenq_common_desc { u16 group; - u16 syndrom; + u16 syndrome; /* 0 : phase * 7:1 : reserved - MBZ @@ -996,7 +1041,7 @@ ENA_ADMIN_AENQ_GROUPS_NUM = 5, }; -enum ena_admin_aenq_notification_syndrom { +enum ena_admin_aenq_notification_syndrome { ENA_ADMIN_SUSPEND = 0, ENA_ADMIN_RESUME = 1, ENA_ADMIN_UPDATE_HINTS = 2, @@ -1129,6 +1174,10 @@ #define ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK BIT(1) #define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_SHIFT 2 #define ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK BIT(2) +#define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_SHIFT 3 +#define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK BIT(3) +#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT 4 +#define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK BIT(4) /* aenq_common_desc */ #define ENA_ADMIN_AENQ_COMMON_DESC_PHASE_MASK BIT(0) --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_com.c +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_com.c @@ -1,33 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #include "ena_com.h" @@ -98,7 +71,7 @@ dma_addr_t addr) { if ((addr & GENMASK_ULL(ena_dev->dma_addr_bits - 1, 0)) != addr) { - pr_err("dma address has more bits that the device supports\n"); + pr_err("DMA address has more bits that the device supports\n"); return -EINVAL; } @@ -108,16 +81,16 @@ return 0; } -static int ena_com_admin_init_sq(struct ena_com_admin_queue *queue) +static int ena_com_admin_init_sq(struct ena_com_admin_queue *admin_queue) { - struct ena_com_admin_sq *sq = &queue->sq; - u16 size = ADMIN_SQ_SIZE(queue->q_depth); + struct ena_com_admin_sq *sq = &admin_queue->sq; + u16 size = ADMIN_SQ_SIZE(admin_queue->q_depth); - sq->entries = dma_alloc_coherent(queue->q_dmadev, size, &sq->dma_addr, - GFP_KERNEL); + sq->entries = dma_alloc_coherent(admin_queue->q_dmadev, size, + &sq->dma_addr, GFP_KERNEL); if (!sq->entries) { - pr_err("memory allocation failed\n"); + pr_err("Memory allocation failed\n"); return -ENOMEM; } @@ -130,16 +103,16 @@ return 0; } -static int ena_com_admin_init_cq(struct ena_com_admin_queue *queue) +static int ena_com_admin_init_cq(struct ena_com_admin_queue *admin_queue) { - struct ena_com_admin_cq *cq = &queue->cq; - u16 size = ADMIN_CQ_SIZE(queue->q_depth); + struct ena_com_admin_cq *cq = &admin_queue->cq; + u16 size = ADMIN_CQ_SIZE(admin_queue->q_depth); - cq->entries = dma_alloc_coherent(queue->q_dmadev, size, &cq->dma_addr, - GFP_KERNEL); + cq->entries = dma_alloc_coherent(admin_queue->q_dmadev, size, + &cq->dma_addr, GFP_KERNEL); if (!cq->entries) { - pr_err("memory allocation failed\n"); + pr_err("Memory allocation failed\n"); return -ENOMEM; } @@ -149,20 +122,20 @@ return 0; } -static int ena_com_admin_init_aenq(struct ena_com_dev *dev, +static int ena_com_admin_init_aenq(struct ena_com_dev *ena_dev, struct ena_aenq_handlers *aenq_handlers) { - struct ena_com_aenq *aenq = &dev->aenq; + struct ena_com_aenq *aenq = &ena_dev->aenq; u32 addr_low, addr_high, aenq_caps; u16 size; - dev->aenq.q_depth = ENA_ASYNC_QUEUE_DEPTH; + ena_dev->aenq.q_depth = ENA_ASYNC_QUEUE_DEPTH; size = ADMIN_AENQ_SIZE(ENA_ASYNC_QUEUE_DEPTH); - aenq->entries = dma_alloc_coherent(dev->dmadev, size, &aenq->dma_addr, - GFP_KERNEL); + aenq->entries = dma_alloc_coherent(ena_dev->dmadev, size, + &aenq->dma_addr, GFP_KERNEL); if (!aenq->entries) { - pr_err("memory allocation failed\n"); + pr_err("Memory allocation failed\n"); return -ENOMEM; } @@ -172,18 +145,18 @@ addr_low = ENA_DMA_ADDR_TO_UINT32_LOW(aenq->dma_addr); addr_high = ENA_DMA_ADDR_TO_UINT32_HIGH(aenq->dma_addr); - writel(addr_low, dev->reg_bar + ENA_REGS_AENQ_BASE_LO_OFF); - writel(addr_high, dev->reg_bar + ENA_REGS_AENQ_BASE_HI_OFF); + writel(addr_low, ena_dev->reg_bar + ENA_REGS_AENQ_BASE_LO_OFF); + writel(addr_high, ena_dev->reg_bar + ENA_REGS_AENQ_BASE_HI_OFF); aenq_caps = 0; - aenq_caps |= dev->aenq.q_depth & ENA_REGS_AENQ_CAPS_AENQ_DEPTH_MASK; + aenq_caps |= ena_dev->aenq.q_depth & ENA_REGS_AENQ_CAPS_AENQ_DEPTH_MASK; aenq_caps |= (sizeof(struct ena_admin_aenq_entry) << ENA_REGS_AENQ_CAPS_AENQ_ENTRY_SIZE_SHIFT) & ENA_REGS_AENQ_CAPS_AENQ_ENTRY_SIZE_MASK; - writel(aenq_caps, dev->reg_bar + ENA_REGS_AENQ_CAPS_OFF); + writel(aenq_caps, ena_dev->reg_bar + ENA_REGS_AENQ_CAPS_OFF); if (unlikely(!aenq_handlers)) { - pr_err("aenq handlers pointer is NULL\n"); + pr_err("AENQ handlers pointer is NULL\n"); return -EINVAL; } @@ -199,31 +172,31 @@ atomic_dec(&queue->outstanding_cmds); } -static struct ena_comp_ctx *get_comp_ctxt(struct ena_com_admin_queue *queue, +static struct ena_comp_ctx *get_comp_ctxt(struct ena_com_admin_queue *admin_queue, u16 command_id, bool capture) { - if (unlikely(command_id >= queue->q_depth)) { - pr_err("command id is larger than the queue size. cmd_id: %u queue size %d\n", - command_id, queue->q_depth); + if (unlikely(command_id >= admin_queue->q_depth)) { + pr_err("Command id is larger than the queue size. cmd_id: %u queue size %d\n", + command_id, admin_queue->q_depth); return NULL; } - if (unlikely(!queue->comp_ctx)) { + if (unlikely(!admin_queue->comp_ctx)) { pr_err("Completion context is NULL\n"); return NULL; } - if (unlikely(queue->comp_ctx[command_id].occupied && capture)) { + if (unlikely(admin_queue->comp_ctx[command_id].occupied && capture)) { pr_err("Completion context is occupied\n"); return NULL; } if (capture) { - atomic_inc(&queue->outstanding_cmds); - queue->comp_ctx[command_id].occupied = true; + atomic_inc(&admin_queue->outstanding_cmds); + admin_queue->comp_ctx[command_id].occupied = true; } - return &queue->comp_ctx[command_id]; + return &admin_queue->comp_ctx[command_id]; } static struct ena_comp_ctx *__ena_com_submit_admin_cmd(struct ena_com_admin_queue *admin_queue, @@ -244,7 +217,7 @@ /* In case of queue FULL */ cnt = (u16)atomic_read(&admin_queue->outstanding_cmds); if (cnt >= admin_queue->q_depth) { - pr_debug("admin queue is full.\n"); + pr_debug("Admin queue is full.\n"); admin_queue->stats.out_of_space++; return ERR_PTR(-ENOSPC); } @@ -284,20 +257,21 @@ return comp_ctx; } -static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *queue) +static int ena_com_init_comp_ctxt(struct ena_com_admin_queue *admin_queue) { - size_t size = queue->q_depth * sizeof(struct ena_comp_ctx); + size_t size = admin_queue->q_depth * sizeof(struct ena_comp_ctx); struct ena_comp_ctx *comp_ctx; u16 i; - queue->comp_ctx = devm_kzalloc(queue->q_dmadev, size, GFP_KERNEL); - if (unlikely(!queue->comp_ctx)) { - pr_err("memory allocation failed\n"); + admin_queue->comp_ctx = + devm_kzalloc(admin_queue->q_dmadev, size, GFP_KERNEL); + if (unlikely(!admin_queue->comp_ctx)) { + pr_err("Memory allocation failed\n"); return -ENOMEM; } - for (i = 0; i < queue->q_depth; i++) { - comp_ctx = get_comp_ctxt(queue, i, false); + for (i = 0; i < admin_queue->q_depth; i++) { + comp_ctx = get_comp_ctxt(admin_queue, i, false); if (comp_ctx) init_completion(&comp_ctx->wait_event); } @@ -363,7 +337,7 @@ } if (!io_sq->desc_addr.virt_addr) { - pr_err("memory allocation failed\n"); + pr_err("Memory allocation failed\n"); return -ENOMEM; } } @@ -389,7 +363,7 @@ devm_kzalloc(ena_dev->dmadev, size, GFP_KERNEL); if (!io_sq->bounce_buf_ctrl.base_buffer) { - pr_err("bounce buffer memory allocation failed\n"); + pr_err("Bounce buffer memory allocation failed\n"); return -ENOMEM; } @@ -403,6 +377,8 @@ 0x0, io_sq->llq_info.desc_list_entry_size); io_sq->llq_buf_ctrl.descs_left_in_line = io_sq->llq_info.descs_num_before_header; + io_sq->disable_meta_caching = + io_sq->llq_info.disable_meta_caching; if (io_sq->llq_info.max_entries_in_tx_burst > 0) io_sq->entries_in_tx_burst_left = @@ -447,7 +423,7 @@ } if (!io_cq->cdesc_addr.virt_addr) { - pr_err("memory allocation failed\n"); + pr_err("Memory allocation failed\n"); return -ENOMEM; } @@ -523,7 +499,7 @@ static int ena_com_comp_status_to_errno(u8 comp_status) { if (unlikely(comp_status != 0)) - pr_err("admin command failed[%u]\n", comp_status); + pr_err("Admin command failed[%u]\n", comp_status); switch (comp_status) { case ENA_ADMIN_SUCCESS: @@ -537,6 +513,8 @@ case ENA_ADMIN_ILLEGAL_PARAMETER: case ENA_ADMIN_UNKNOWN_ERROR: return -EINVAL; + case ENA_ADMIN_RESOURCE_BUSY: + return -EAGAIN; } return -EINVAL; @@ -601,7 +579,7 @@ return ret; } -/** +/* * Set the LLQ configurations of the firmware * * The driver provides only the enabled feature values to the device, @@ -626,6 +604,10 @@ cmd.u.llq.desc_num_before_header_enabled = llq_info->descs_num_before_header; cmd.u.llq.descriptors_stride_ctrl_enabled = llq_info->desc_stride_ctrl; + cmd.u.llq.accel_mode.u.set.enabled_flags = + BIT(ENA_ADMIN_DISABLE_META_CACHING) | + BIT(ENA_ADMIN_LIMIT_TX_BURST); + ret = ena_com_execute_admin_command(admin_queue, (struct ena_admin_aq_entry *)&cmd, sizeof(cmd), @@ -643,6 +625,7 @@ struct ena_llq_configurations *llq_default_cfg) { struct ena_com_llq_info *llq_info = &ena_dev->llq_info; + struct ena_admin_accel_mode_get llq_accel_mode_get; u16 supported_feat; int rc; @@ -710,7 +693,7 @@ /* The desc list entry size should be whole multiply of 8 * This requirement comes from __iowrite64_copy() */ - pr_err("illegal entry size %d\n", llq_info->desc_list_entry_size); + pr_err("Illegal entry size %d\n", llq_info->desc_list_entry_size); return -EINVAL; } @@ -742,9 +725,17 @@ llq_default_cfg->llq_num_decs_before_header, supported_feat, llq_info->descs_num_before_header); } + /* Check for accelerated queue supported */ + llq_accel_mode_get = llq_features->accel_mode.u.get; - llq_info->max_entries_in_tx_burst = - (u16)(llq_features->max_tx_burst_size / llq_default_cfg->llq_ring_entry_size_value); + llq_info->disable_meta_caching = + !!(llq_accel_mode_get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING)); + + if (llq_accel_mode_get.supported_flags & BIT(ENA_ADMIN_LIMIT_TX_BURST)) + llq_info->max_entries_in_tx_burst = + llq_accel_mode_get.max_tx_burst_size / + llq_default_cfg->llq_ring_entry_size_value; rc = ena_com_set_llq(ena_dev); if (rc) @@ -843,7 +834,7 @@ } if (unlikely(i == timeout)) { - pr_err("reading reg failed for timeout. expected: req id[%hu] offset[%hu] actual: req id[%hu] offset[%hu]\n", + pr_err("Reading reg failed for timeout. expected: req id[%hu] offset[%hu] actual: req id[%hu] offset[%hu]\n", mmio_read->seq_num, offset, read_resp->req_id, read_resp->reg_off); ret = ENA_MMIO_READ_TIMEOUT; @@ -910,7 +901,7 @@ sizeof(destroy_resp)); if (unlikely(ret && (ret != -ENODEV))) - pr_err("failed to destroy io sq error: %d\n", ret); + pr_err("Failed to destroy io sq error: %d\n", ret); return ret; } @@ -1019,7 +1010,7 @@ &get_cmd.control_buffer.address, control_buf_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -1066,11 +1057,10 @@ (ena_dev->rss).hash_key; netdev_rss_key_fill(&hash_key->key, sizeof(hash_key->key)); - /* The key is stored in the device in u32 array - * as well as the API requires the key to be passed in this - * format. Thus the size of our array should be divided by 4 + /* The key buffer is stored in the device in an array of + * uint32 elements. */ - hash_key->keys_num = sizeof(hash_key->key) / sizeof(u32); + hash_key->key_parts = ENA_ADMIN_RSS_KEY_PARTS; } static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev) @@ -1134,13 +1124,13 @@ int ret; ret = ena_com_get_feature(ena_dev, &get_resp, - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG, 0); + ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG, 0); if (unlikely(ret)) return ret; if ((get_resp.u.ind_table.min_size > log_size) || (get_resp.u.ind_table.max_size < log_size)) { - pr_err("indirect table size doesn't fit. requested size: %d while min is:%d and max %d\n", + pr_err("Indirect table size doesn't fit. requested size: %d while min is:%d and max %d\n", 1 << log_size, 1 << get_resp.u.ind_table.min_size, 1 << get_resp.u.ind_table.max_size); return -EINVAL; @@ -1233,7 +1223,7 @@ &create_cmd.sq_ba, io_sq->desc_addr.phys_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } } @@ -1262,7 +1252,7 @@ cmd_completion.llq_descriptors_offset); } - pr_debug("created sq[%u], depth[%u]\n", io_sq->idx, io_sq->q_depth); + pr_debug("Created sq[%u], depth[%u]\n", io_sq->idx, io_sq->q_depth); return ret; } @@ -1375,7 +1365,7 @@ &create_cmd.cq_ba, io_cq->cdesc_addr.phys_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -1404,7 +1394,7 @@ (u32 __iomem *)((uintptr_t)ena_dev->reg_bar + cmd_completion.numa_node_register_offset); - pr_debug("created cq[%u], depth[%u]\n", io_cq->idx, io_cq->q_depth); + pr_debug("Created cq[%u], depth[%u]\n", io_cq->idx, io_cq->q_depth); return ret; } @@ -1597,12 +1587,12 @@ return -ETIME; } - pr_info("ena device version: %d.%d\n", + pr_info("ENA device version: %d.%d\n", (ver & ENA_REGS_VERSION_MAJOR_VERSION_MASK) >> ENA_REGS_VERSION_MAJOR_VERSION_SHIFT, ver & ENA_REGS_VERSION_MINOR_VERSION_MASK); - pr_info("ena controller version: %d.%d.%d implementation version %d\n", + pr_info("ENA controller version: %d.%d.%d implementation version %d\n", (ctrl_ver & ENA_REGS_CONTROLLER_VERSION_MAJOR_VERSION_MASK) >> ENA_REGS_CONTROLLER_VERSION_MAJOR_VERSION_SHIFT, (ctrl_ver & ENA_REGS_CONTROLLER_VERSION_MINOR_VERSION_MASK) >> @@ -1625,6 +1615,19 @@ return 0; } +static void +ena_com_free_ena_admin_queue_comp_ctx(struct ena_com_dev *ena_dev, + struct ena_com_admin_queue *admin_queue) + +{ + if (!admin_queue->comp_ctx) + return; + + devm_kfree(ena_dev->dmadev, admin_queue->comp_ctx); + + admin_queue->comp_ctx = NULL; +} + void ena_com_admin_destroy(struct ena_com_dev *ena_dev) { struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue; @@ -1633,9 +1636,8 @@ struct ena_com_aenq *aenq = &ena_dev->aenq; u16 size; - if (admin_queue->comp_ctx) - devm_kfree(ena_dev->dmadev, admin_queue->comp_ctx); - admin_queue->comp_ctx = NULL; + ena_com_free_ena_admin_queue_comp_ctx(ena_dev, admin_queue); + size = ADMIN_SQ_SIZE(admin_queue->q_depth); if (sq->entries) dma_free_coherent(ena_dev->dmadev, size, sq->entries, @@ -1913,6 +1915,7 @@ memcpy(&get_feat_ctx->dev_attr, &get_resp.u.dev_attr, sizeof(get_resp.u.dev_attr)); + ena_dev->supported_features = get_resp.u.dev_attr.supported_features; if (ena_dev->supported_features & BIT(ENA_ADMIN_MAX_QUEUES_EXT)) { @@ -1991,10 +1994,10 @@ /* ena_handle_specific_aenq_event: * return the handler that is relevant to the specific event group */ -static ena_aenq_handler ena_com_get_specific_aenq_cb(struct ena_com_dev *dev, +static ena_aenq_handler ena_com_get_specific_aenq_cb(struct ena_com_dev *ena_dev, u16 group) { - struct ena_aenq_handlers *aenq_handlers = dev->aenq.aenq_handlers; + struct ena_aenq_handlers *aenq_handlers = ena_dev->aenq.aenq_handlers; if ((group < ENA_MAX_HANDLERS) && aenq_handlers->handlers[group]) return aenq_handlers->handlers[group]; @@ -2006,11 +2009,11 @@ * handles the aenq incoming events. * pop events from the queue and apply the specific handler */ -void ena_com_aenq_intr_handler(struct ena_com_dev *dev, void *data) +void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data) { struct ena_admin_aenq_entry *aenq_e; struct ena_admin_aenq_common_desc *aenq_common; - struct ena_com_aenq *aenq = &dev->aenq; + struct ena_com_aenq *aenq = &ena_dev->aenq; u64 timestamp; ena_aenq_handler handler_cb; u16 masked_head, processed = 0; @@ -2030,12 +2033,13 @@ dma_rmb(); timestamp = (u64)aenq_common->timestamp_low | - ((u64)aenq_common->timestamp_high << 32); - pr_debug("AENQ! Group[%x] Syndrom[%x] timestamp: [%llus]\n", - aenq_common->group, aenq_common->syndrom, timestamp); + ((u64)aenq_common->timestamp_high << 32); + + pr_debug("AENQ! Group[%x] Syndrome[%x] timestamp: [%llus]\n", + aenq_common->group, aenq_common->syndrome, timestamp); /* Handle specific event*/ - handler_cb = ena_com_get_specific_aenq_cb(dev, + handler_cb = ena_com_get_specific_aenq_cb(ena_dev, aenq_common->group); handler_cb(data, aenq_e); /* call the actual event handler*/ @@ -2060,7 +2064,8 @@ /* write the aenq doorbell after all AENQ descriptors were read */ mb(); - writel_relaxed((u32)aenq->head, dev->reg_bar + ENA_REGS_AENQ_HEAD_DB_OFF); + writel_relaxed((u32)aenq->head, + ena_dev->reg_bar + ENA_REGS_AENQ_HEAD_DB_OFF); } int ena_com_dev_reset(struct ena_com_dev *ena_dev, @@ -2152,6 +2157,21 @@ return ret; } +int ena_com_get_eni_stats(struct ena_com_dev *ena_dev, + struct ena_admin_eni_stats *stats) +{ + struct ena_com_stats_ctx ctx; + int ret; + + memset(&ctx, 0x0, sizeof(ctx)); + ret = ena_get_dev_stats(ena_dev, &ctx, ENA_ADMIN_GET_STATS_TYPE_ENI); + if (likely(ret == 0)) + memcpy(stats, &ctx.get_resp.u.eni_stats, + sizeof(ctx.get_resp.u.eni_stats)); + + return ret; +} + int ena_com_get_dev_basic_stats(struct ena_com_dev *ena_dev, struct ena_admin_basic_stats *stats) { @@ -2161,8 +2181,8 @@ memset(&ctx, 0x0, sizeof(ctx)); ret = ena_get_dev_stats(ena_dev, &ctx, ENA_ADMIN_GET_STATS_TYPE_BASIC); if (likely(ret == 0)) - memcpy(stats, &ctx.get_resp.basic_stats, - sizeof(ctx.get_resp.basic_stats)); + memcpy(stats, &ctx.get_resp.u.basic_stats, + sizeof(ctx.get_resp.u.basic_stats)); return ret; } @@ -2258,7 +2278,7 @@ &cmd.control_buffer.address, rss->hash_key_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -2316,7 +2336,7 @@ } memcpy(hash_key->key, key, key_len); rss->hash_init_val = init_val; - hash_key->keys_num = key_len >> 2; + hash_key->key_parts = key_len / sizeof(hash_key->key[0]); } break; case ENA_ADMIN_CRC32: @@ -2371,7 +2391,8 @@ ena_dev->rss.hash_key; if (key) - memcpy(key, hash_key->key, (size_t)(hash_key->keys_num) << 2); + memcpy(key, hash_key->key, + (size_t)(hash_key->key_parts) * sizeof(hash_key->key[0])); return 0; } @@ -2427,7 +2448,7 @@ &cmd.control_buffer.address, rss->hash_ctrl_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } cmd.control_buffer.length = sizeof(*hash_ctrl); @@ -2488,7 +2509,7 @@ available_fields = hash_ctrl->selected_fields[i].fields & hash_ctrl->supported_fields[i].fields; if (available_fields != hash_ctrl->selected_fields[i].fields) { - pr_err("hash control doesn't support all the desire configuration. proto %x supported %x selected %x\n", + pr_err("Hash control doesn't support all the desire configuration. proto %x supported %x selected %x\n", i, hash_ctrl->supported_fields[i].fields, hash_ctrl->selected_fields[i].fields); return -EOPNOTSUPP; @@ -2526,7 +2547,7 @@ /* Make sure all the fields are supported */ supported_fields = hash_ctrl->supported_fields[proto].fields; if ((hash_fields & supported_fields) != hash_fields) { - pr_err("proto %d doesn't support the required fields %x. supports only: %x\n", + pr_err("Proto %d doesn't support the required fields %x. supports only: %x\n", proto, hash_fields, supported_fields); } @@ -2566,9 +2587,9 @@ int ret; if (!ena_com_check_supported_feature_id( - ena_dev, ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG)) { + ena_dev, ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG)) { pr_debug("Feature %d isn't supported\n", - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG); + ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG); return -EOPNOTSUPP; } @@ -2583,7 +2604,7 @@ cmd.aq_common_descriptor.opcode = ENA_ADMIN_SET_FEATURE; cmd.aq_common_descriptor.flags = ENA_ADMIN_AQ_COMMON_DESC_CTRL_DATA_INDIRECT_MASK; - cmd.feat_common.feature_id = ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG; + cmd.feat_common.feature_id = ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG; cmd.u.ind_table.size = rss->tbl_log_size; cmd.u.ind_table.inline_index = 0xFFFFFFFF; @@ -2591,7 +2612,7 @@ &cmd.control_buffer.address, rss->rss_ind_tbl_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -2621,7 +2642,7 @@ sizeof(struct ena_admin_rss_ind_table_entry); rc = ena_com_get_feature_ex(ena_dev, &get_resp, - ENA_ADMIN_RSS_REDIRECTION_TABLE_CONFIG, + ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG, rss->rss_ind_tbl_dma_addr, tbl_size, 0); if (unlikely(rc)) @@ -2704,8 +2725,7 @@ host_attr->debug_area_virt_addr = dma_alloc_coherent(ena_dev->dmadev, debug_area_size, - &host_attr->debug_area_dma_addr, - GFP_KERNEL); + &host_attr->debug_area_dma_addr, GFP_KERNEL); if (unlikely(!host_attr->debug_area_virt_addr)) { host_attr->debug_area_size = 0; return -ENOMEM; @@ -2762,7 +2782,7 @@ &cmd.u.host_attr.debug_ba, host_attr->debug_area_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -2770,7 +2790,7 @@ &cmd.u.host_attr.os_info_ba, host_attr->host_info_dma_addr); if (unlikely(ret)) { - pr_err("memory address set failed\n"); + pr_err("Memory address set failed\n"); return ret; } @@ -2889,7 +2909,7 @@ (llq_info->descs_num_before_header * sizeof(struct ena_eth_io_tx_desc)); if (unlikely(ena_dev->tx_max_header_size == 0)) { - pr_err("the size of the LLQ entry is smaller than needed\n"); + pr_err("The size of the LLQ entry is smaller than needed\n"); return -EINVAL; } --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_com.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_com.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef ENA_COM @@ -73,7 +46,7 @@ /*****************************************************************************/ /* ENA adaptive interrupt moderation settings */ -#define ENA_INTR_INITIAL_TX_INTERVAL_USECS 64 +#define ENA_INTR_INITIAL_TX_INTERVAL_USECS 0 #define ENA_INTR_INITIAL_RX_INTERVAL_USECS 0 #define ENA_DEFAULT_INTR_DELAY_RESOLUTION 1 @@ -127,6 +100,7 @@ u16 descs_num_before_header; u16 descs_per_entry; u16 max_entries_in_tx_burst; + bool disable_meta_caching; }; struct ena_com_io_cq { @@ -189,6 +163,8 @@ enum queue_direction direction; enum ena_admin_placement_policy_type mem_queue_type; + bool disable_meta_caching; + u32 msix_vector; struct ena_com_tx_meta cached_tx_meta; struct ena_com_llq_info llq_info; @@ -230,11 +206,11 @@ }; struct ena_com_stats_admin { - u32 aborted_cmd; - u32 submitted_cmd; - u32 completed_cmd; - u32 out_of_space; - u32 no_completion; + u64 aborted_cmd; + u64 submitted_cmd; + u64 completed_cmd; + u64 out_of_space; + u64 no_completion; }; struct ena_com_admin_queue { @@ -533,7 +509,7 @@ * This method goes over the async event notification queue and calls the proper * aenq handler. */ -void ena_com_aenq_intr_handler(struct ena_com_dev *dev, void *data); +void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data); /* ena_com_abort_admin_commands - Abort all the outstanding admin commands. * @ena_dev: ENA communication layer struct @@ -613,6 +589,15 @@ int ena_com_get_dev_basic_stats(struct ena_com_dev *ena_dev, struct ena_admin_basic_stats *stats); +/* ena_com_get_eni_stats - Get extended network interface statistics + * @ena_dev: ENA communication layer struct + * @stats: stats return value + * + * @return: 0 on Success and negative value otherwise. + */ +int ena_com_get_eni_stats(struct ena_com_dev *ena_dev, + struct ena_admin_eni_stats *stats); + /* ena_com_set_dev_mtu - Configure the device mtu. * @ena_dev: ENA communication layer struct * @mtu: mtu value --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_common_defs.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_common_defs.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 - 2016 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef _ENA_COMMON_H_ #define _ENA_COMMON_H_ --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_eth_com.c +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_eth_com.c @@ -1,33 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #include "ena_eth_com.h" @@ -45,8 +18,9 @@ cdesc = (struct ena_eth_io_rx_cdesc_base *)(io_cq->cdesc_addr.virt_addr + (head_masked * io_cq->cdesc_entry_size_in_bytes)); - desc_phase = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >> - ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT; + desc_phase = (READ_ONCE(cdesc->status) & + ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >> + ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT; if (desc_phase != expected_phase) return NULL; @@ -89,7 +63,7 @@ } io_sq->entries_in_tx_burst_left--; - pr_debug("decreasing entries_in_tx_burst_left of queue %d to %d\n", + pr_debug("Decreasing entries_in_tx_burst_left of queue %d to %d\n", io_sq->qid, io_sq->entries_in_tx_burst_left); } @@ -128,12 +102,12 @@ if (unlikely((header_offset + header_len) > llq_info->desc_list_entry_size)) { - pr_err("trying to write header larger than llq entry can accommodate\n"); + pr_err("Trying to write header larger than llq entry can accommodate\n"); return -EFAULT; } if (unlikely(!bounce_buffer)) { - pr_err("bounce buffer is NULL\n"); + pr_err("Bounce buffer is NULL\n"); return -EFAULT; } @@ -151,7 +125,7 @@ bounce_buffer = pkt_ctrl->curr_bounce_buf; if (unlikely(!bounce_buffer)) { - pr_err("bounce buffer is NULL\n"); + pr_err("Bounce buffer is NULL\n"); return NULL; } @@ -262,8 +236,9 @@ ena_com_cq_inc_head(io_cq); count++; - last = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >> - ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT; + last = (READ_ONCE(cdesc->status) & + ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >> + ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT; } while (!last); if (last) { @@ -275,7 +250,7 @@ io_cq->cur_rx_pkt_cdesc_count = 0; io_cq->cur_rx_pkt_cdesc_start_idx = head_masked; - pr_debug("ena q_id: %d packets were completed. first desc idx %u descs# %d\n", + pr_debug("ENA q_id: %d packets were completed. first desc idx %u descs# %d\n", io_cq->qid, *first_cdesc_idx, count); } else { io_cq->cur_rx_pkt_cdesc_count += count; @@ -285,13 +260,15 @@ return count; } -static int ena_com_create_and_store_tx_meta_desc(struct ena_com_io_sq *io_sq, - struct ena_com_tx_ctx *ena_tx_ctx) +static int ena_com_create_meta(struct ena_com_io_sq *io_sq, + struct ena_com_tx_meta *ena_meta) { struct ena_eth_io_tx_meta_desc *meta_desc = NULL; - struct ena_com_tx_meta *ena_meta = &ena_tx_ctx->ena_meta; meta_desc = get_sq_desc(io_sq); + if (unlikely(!meta_desc)) + return -EFAULT; + memset(meta_desc, 0x0, sizeof(struct ena_eth_io_tx_meta_desc)); meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_META_DESC_MASK; @@ -299,7 +276,7 @@ meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK; /* bits 0-9 of the mss */ - meta_desc->word2 |= (ena_meta->mss << + meta_desc->word2 |= ((u32)ena_meta->mss << ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT) & ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK; /* bits 10-13 of the mss */ @@ -309,33 +286,57 @@ /* Extended meta desc */ meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK; - meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_META_STORE_MASK; - meta_desc->len_ctrl |= (io_sq->phase << + meta_desc->len_ctrl |= ((u32)io_sq->phase << ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT) & ENA_ETH_IO_TX_META_DESC_PHASE_MASK; meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_FIRST_MASK; + meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_META_STORE_MASK; + meta_desc->word2 |= ena_meta->l3_hdr_len & ENA_ETH_IO_TX_META_DESC_L3_HDR_LEN_MASK; meta_desc->word2 |= (ena_meta->l3_hdr_offset << ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT) & ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK; - meta_desc->word2 |= (ena_meta->l4_hdr_len << + meta_desc->word2 |= ((u32)ena_meta->l4_hdr_len << ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT) & ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK; - meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_META_STORE_MASK; + return ena_com_sq_update_tail(io_sq); +} + +static int ena_com_create_and_store_tx_meta_desc(struct ena_com_io_sq *io_sq, + struct ena_com_tx_ctx *ena_tx_ctx, + bool *have_meta) +{ + struct ena_com_tx_meta *ena_meta = &ena_tx_ctx->ena_meta; + + /* When disable meta caching is set, don't bother to save the meta and + * compare it to the stored version, just create the meta + */ + if (io_sq->disable_meta_caching) { + if (unlikely(!ena_tx_ctx->meta_valid)) + return -EINVAL; - /* Cached the meta desc */ - memcpy(&io_sq->cached_tx_meta, ena_meta, - sizeof(struct ena_com_tx_meta)); + *have_meta = true; + return ena_com_create_meta(io_sq, ena_meta); + } - return ena_com_sq_update_tail(io_sq); + if (ena_com_meta_desc_changed(io_sq, ena_tx_ctx)) { + *have_meta = true; + /* Cache the meta desc */ + memcpy(&io_sq->cached_tx_meta, ena_meta, + sizeof(struct ena_com_tx_meta)); + return ena_com_create_meta(io_sq, ena_meta); + } + + *have_meta = false; + return 0; } static void ena_com_rx_set_flags(struct ena_com_rx_ctx *ena_rx_ctx, - struct ena_eth_io_rx_cdesc_base *cdesc) + struct ena_eth_io_rx_cdesc_base *cdesc) { ena_rx_ctx->l3_proto = cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_L3_PROTO_IDX_MASK; @@ -356,7 +357,7 @@ (cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT; - pr_debug("ena_rx_ctx->l3_proto %d ena_rx_ctx->l4_proto %d\nena_rx_ctx->l3_csum_err %d ena_rx_ctx->l4_csum_err %d\nhash frag %d frag: %d cdesc_status: %x\n", + pr_debug("l3_proto %d l4_proto %d l3_csum_err %d l4_csum_err %d hash %d frag %d cdesc_status %x\n", ena_rx_ctx->l3_proto, ena_rx_ctx->l4_proto, ena_rx_ctx->l3_csum_err, ena_rx_ctx->l4_csum_err, ena_rx_ctx->hash, ena_rx_ctx->frag, cdesc->status); @@ -389,7 +390,7 @@ } if (unlikely(header_len > io_sq->tx_max_header_size)) { - pr_err("header size is too large %d max header: %d\n", + pr_err("Header size is too large %d max header: %d\n", header_len, io_sq->tx_max_header_size); return -EINVAL; } @@ -402,12 +403,10 @@ if (unlikely(rc)) return rc; - have_meta = ena_tx_ctx->meta_valid && ena_com_meta_desc_changed(io_sq, - ena_tx_ctx); - if (have_meta) { - rc = ena_com_create_and_store_tx_meta_desc(io_sq, ena_tx_ctx); - if (unlikely(rc)) - return rc; + rc = ena_com_create_and_store_tx_meta_desc(io_sq, ena_tx_ctx, &have_meta); + if (unlikely(rc)) { + pr_err("Failed to create and store tx meta desc\n"); + return rc; } /* If the caller doesn't want to send packets */ @@ -426,16 +425,16 @@ if (!have_meta) desc->len_ctrl |= ENA_ETH_IO_TX_DESC_FIRST_MASK; - desc->buff_addr_hi_hdr_sz |= (header_len << + desc->buff_addr_hi_hdr_sz |= ((u32)header_len << ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT) & ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK; - desc->len_ctrl |= (io_sq->phase << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) & + desc->len_ctrl |= ((u32)io_sq->phase << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) & ENA_ETH_IO_TX_DESC_PHASE_MASK; desc->len_ctrl |= ENA_ETH_IO_TX_DESC_COMP_REQ_MASK; /* Bits 0-9 */ - desc->meta_ctrl |= (ena_tx_ctx->req_id << + desc->meta_ctrl |= ((u32)ena_tx_ctx->req_id << ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT) & ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK; @@ -481,7 +480,7 @@ memset(desc, 0x0, sizeof(struct ena_eth_io_tx_desc)); - desc->len_ctrl |= (io_sq->phase << + desc->len_ctrl |= ((u32)io_sq->phase << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) & ENA_ETH_IO_TX_DESC_PHASE_MASK; } @@ -517,6 +516,7 @@ { struct ena_com_rx_buf_info *ena_buf = &ena_rx_ctx->ena_bufs[0]; struct ena_eth_io_rx_cdesc_base *cdesc = NULL; + u16 q_depth = io_cq->q_depth; u16 cdesc_idx = 0; u16 nb_hw_desc; u16 i = 0; @@ -529,7 +529,7 @@ return 0; } - pr_debug("fetch rx packet: queue %d completed desc: %d\n", io_cq->qid, + pr_debug("Fetch rx packet: queue %d completed desc: %d\n", io_cq->qid, nb_hw_desc); if (unlikely(nb_hw_desc > ena_rx_ctx->max_bufs)) { @@ -544,6 +544,8 @@ do { ena_buf[i].len = cdesc->length; ena_buf[i].req_id = cdesc->req_id; + if (unlikely(ena_buf[i].req_id >= q_depth)) + return -EIO; if (++i >= nb_hw_desc) break; @@ -585,9 +587,9 @@ desc->length = ena_buf->len; desc->ctrl = ENA_ETH_IO_RX_DESC_FIRST_MASK | - ENA_ETH_IO_RX_DESC_LAST_MASK | - (io_sq->phase & ENA_ETH_IO_RX_DESC_PHASE_MASK) | - ENA_ETH_IO_RX_DESC_COMP_REQ_MASK; + ENA_ETH_IO_RX_DESC_LAST_MASK | + (io_sq->phase & ENA_ETH_IO_RX_DESC_PHASE_MASK) | + ENA_ETH_IO_RX_DESC_COMP_REQ_MASK; desc->req_id = req_id; --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_eth_com.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_eth_com.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef ENA_ETH_COM_H_ @@ -157,7 +130,8 @@ llq_info = &io_sq->llq_info; num_descs = ena_tx_ctx->num_bufs; - if (unlikely(ena_com_meta_desc_changed(io_sq, ena_tx_ctx))) + if (llq_info->disable_meta_caching || + unlikely(ena_com_meta_desc_changed(io_sq, ena_tx_ctx))) ++num_descs; if (num_descs > llq_info->descs_num_before_header) { @@ -166,7 +140,7 @@ llq_info->descs_per_entry); } - pr_debug("queue: %d num_descs: %d num_entries_needed: %d\n", io_sq->qid, + pr_debug("Queue: %d num_descs: %d num_entries_needed: %d\n", io_sq->qid, num_descs, num_entries_needed); return num_entries_needed > io_sq->entries_in_tx_burst_left; @@ -177,13 +151,13 @@ u16 max_entries_in_tx_burst = io_sq->llq_info.max_entries_in_tx_burst; u16 tail = io_sq->tail; - pr_debug("write submission queue doorbell for queue: %d tail: %d\n", + pr_debug("Write submission queue doorbell for queue: %d tail: %d\n", io_sq->qid, tail); writel(tail, io_sq->db_addr); if (is_llq_max_tx_burst_exists(io_sq)) { - pr_debug("reset available entries in tx burst for queue %d to %d\n", + pr_debug("Reset available entries in tx burst for queue %d to %d\n", io_sq->qid, max_entries_in_tx_burst); io_sq->entries_in_tx_burst_left = max_entries_in_tx_burst; } --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_eth_io_defs.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_eth_io_defs.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 - 2016 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef _ENA_ETH_IO_H_ #define _ENA_ETH_IO_H_ --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_ethtool.c @@ -1,33 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #include @@ -41,12 +14,17 @@ #define ENA_STAT_ENA_COM_ENTRY(stat) { \ .name = #stat, \ - .stat_offset = offsetof(struct ena_com_stats_admin, stat) \ + .stat_offset = offsetof(struct ena_com_stats_admin, stat) / sizeof(u64) \ } #define ENA_STAT_ENTRY(stat, stat_type) { \ .name = #stat, \ - .stat_offset = offsetof(struct ena_stats_##stat_type, stat) \ + .stat_offset = offsetof(struct ena_stats_##stat_type, stat) / sizeof(u64) \ +} + +#define ENA_STAT_HW_ENTRY(stat, stat_type) { \ + .name = #stat, \ + .stat_offset = offsetof(struct ena_admin_##stat_type, stat) / sizeof(u64) \ } #define ENA_STAT_RX_ENTRY(stat) \ @@ -58,6 +36,9 @@ #define ENA_STAT_GLOBAL_ENTRY(stat) \ ENA_STAT_ENTRY(stat, dev) +#define ENA_STAT_ENI_ENTRY(stat) \ + ENA_STAT_HW_ENTRY(stat, eni_stats) + static const struct ena_stats ena_stats_global_strings[] = { ENA_STAT_GLOBAL_ENTRY(tx_timeout), ENA_STAT_GLOBAL_ENTRY(suspend), @@ -68,6 +49,14 @@ ENA_STAT_GLOBAL_ENTRY(admin_q_pause), }; +static const struct ena_stats ena_stats_eni_strings[] = { + ENA_STAT_ENI_ENTRY(bw_in_allowance_exceeded), + ENA_STAT_ENI_ENTRY(bw_out_allowance_exceeded), + ENA_STAT_ENI_ENTRY(pps_allowance_exceeded), + ENA_STAT_ENI_ENTRY(conntrack_allowance_exceeded), + ENA_STAT_ENI_ENTRY(linklocal_allowance_exceeded), +}; + static const struct ena_stats ena_stats_tx_strings[] = { ENA_STAT_TX_ENTRY(cnt), ENA_STAT_TX_ENTRY(bytes), @@ -100,6 +89,11 @@ ENA_STAT_RX_ENTRY(bad_req_id), ENA_STAT_RX_ENTRY(empty_rx_ring), ENA_STAT_RX_ENTRY(csum_unchecked), + ENA_STAT_RX_ENTRY(xdp_aborted), + ENA_STAT_RX_ENTRY(xdp_drop), + ENA_STAT_RX_ENTRY(xdp_pass), + ENA_STAT_RX_ENTRY(xdp_tx), + ENA_STAT_RX_ENTRY(xdp_invalid), }; static const struct ena_stats ena_stats_ena_com_strings[] = { @@ -110,10 +104,12 @@ ENA_STAT_ENA_COM_ENTRY(no_completion), }; -#define ENA_STATS_ARRAY_GLOBAL ARRAY_SIZE(ena_stats_global_strings) -#define ENA_STATS_ARRAY_TX ARRAY_SIZE(ena_stats_tx_strings) -#define ENA_STATS_ARRAY_RX ARRAY_SIZE(ena_stats_rx_strings) -#define ENA_STATS_ARRAY_ENA_COM ARRAY_SIZE(ena_stats_ena_com_strings) +#define ENA_STATS_ARRAY_GLOBAL ARRAY_SIZE(ena_stats_global_strings) +#define ENA_STATS_ARRAY_TX ARRAY_SIZE(ena_stats_tx_strings) +#define ENA_STATS_ARRAY_RX ARRAY_SIZE(ena_stats_rx_strings) +#define ENA_STATS_ARRAY_ENA_COM ARRAY_SIZE(ena_stats_ena_com_strings) +#define ENA_STATS_ARRAY_ENI(adapter) \ + (ARRAY_SIZE(ena_stats_eni_strings) * (adapter)->eni_stats_supported) static void ena_safe_update_stat(u64 *src, u64 *dst, struct u64_stats_sync *syncp) @@ -134,29 +130,30 @@ u64 *ptr; int i, j; - for (i = 0; i < adapter->num_io_queues; i++) { + for (i = 0; i < adapter->num_io_queues + adapter->xdp_num_queues; i++) { /* Tx stats */ ring = &adapter->tx_ring[i]; for (j = 0; j < ENA_STATS_ARRAY_TX; j++) { ena_stats = &ena_stats_tx_strings[j]; - ptr = (u64 *)((uintptr_t)&ring->tx_stats + - (uintptr_t)ena_stats->stat_offset); + ptr = (u64 *)&ring->tx_stats + ena_stats->stat_offset; ena_safe_update_stat(ptr, (*data)++, &ring->syncp); } + /* XDP TX queues don't have a RX queue counterpart */ + if (!ENA_IS_XDP_INDEX(adapter, i)) { + /* Rx stats */ + ring = &adapter->rx_ring[i]; - /* Rx stats */ - ring = &adapter->rx_ring[i]; - - for (j = 0; j < ENA_STATS_ARRAY_RX; j++) { - ena_stats = &ena_stats_rx_strings[j]; + for (j = 0; j < ENA_STATS_ARRAY_RX; j++) { + ena_stats = &ena_stats_rx_strings[j]; - ptr = (u64 *)((uintptr_t)&ring->rx_stats + - (uintptr_t)ena_stats->stat_offset); + ptr = (u64 *)&ring->rx_stats + + ena_stats->stat_offset; - ena_safe_update_stat(ptr, (*data)++, &ring->syncp); + ena_safe_update_stat(ptr, (*data)++, &ring->syncp); + } } } } @@ -164,24 +161,23 @@ static void ena_dev_admin_queue_stats(struct ena_adapter *adapter, u64 **data) { const struct ena_stats *ena_stats; - u32 *ptr; + u64 *ptr; int i; for (i = 0; i < ENA_STATS_ARRAY_ENA_COM; i++) { ena_stats = &ena_stats_ena_com_strings[i]; - ptr = (u32 *)((uintptr_t)&adapter->ena_dev->admin_queue.stats + - (uintptr_t)ena_stats->stat_offset); + ptr = (u64 *)&adapter->ena_dev->admin_queue.stats + + ena_stats->stat_offset; *(*data)++ = *ptr; } } -static void ena_get_ethtool_stats(struct net_device *netdev, - struct ethtool_stats *stats, - u64 *data) +static void ena_get_stats(struct ena_adapter *adapter, + u64 *data, + bool eni_stats_needed) { - struct ena_adapter *adapter = netdev_priv(netdev); const struct ena_stats *ena_stats; u64 *ptr; int i; @@ -189,16 +185,48 @@ for (i = 0; i < ENA_STATS_ARRAY_GLOBAL; i++) { ena_stats = &ena_stats_global_strings[i]; - ptr = (u64 *)((uintptr_t)&adapter->dev_stats + - (uintptr_t)ena_stats->stat_offset); + ptr = (u64 *)&adapter->dev_stats + ena_stats->stat_offset; ena_safe_update_stat(ptr, data++, &adapter->syncp); } + if (eni_stats_needed) { + ena_update_hw_stats(adapter); + for (i = 0; i < ENA_STATS_ARRAY_ENI(adapter); i++) { + ena_stats = &ena_stats_eni_strings[i]; + + ptr = (u64 *)&adapter->eni_stats + + ena_stats->stat_offset; + + ena_safe_update_stat(ptr, data++, &adapter->syncp); + } + } + ena_queue_stats(adapter, &data); ena_dev_admin_queue_stats(adapter, &data); } +static void ena_get_ethtool_stats(struct net_device *netdev, + struct ethtool_stats *stats, + u64 *data) +{ + struct ena_adapter *adapter = netdev_priv(netdev); + + ena_get_stats(adapter, data, adapter->eni_stats_supported); +} + +static int ena_get_sw_stats_count(struct ena_adapter *adapter) +{ + return adapter->num_io_queues * (ENA_STATS_ARRAY_TX + ENA_STATS_ARRAY_RX) + + adapter->xdp_num_queues * ENA_STATS_ARRAY_TX + + ENA_STATS_ARRAY_GLOBAL + ENA_STATS_ARRAY_ENA_COM; +} + +static int ena_get_hw_stats_count(struct ena_adapter *adapter) +{ + return ENA_STATS_ARRAY_ENI(adapter); +} + int ena_get_sset_count(struct net_device *netdev, int sset) { struct ena_adapter *adapter = netdev_priv(netdev); @@ -206,31 +234,38 @@ if (sset != ETH_SS_STATS) return -EOPNOTSUPP; - return adapter->num_io_queues * (ENA_STATS_ARRAY_TX + ENA_STATS_ARRAY_RX) - + ENA_STATS_ARRAY_GLOBAL + ENA_STATS_ARRAY_ENA_COM; + return ena_get_sw_stats_count(adapter) + ena_get_hw_stats_count(adapter); } static void ena_queue_strings(struct ena_adapter *adapter, u8 **data) { const struct ena_stats *ena_stats; + bool is_xdp; int i, j; - for (i = 0; i < adapter->num_io_queues; i++) { + for (i = 0; i < adapter->num_io_queues + adapter->xdp_num_queues; i++) { + is_xdp = ENA_IS_XDP_INDEX(adapter, i); /* Tx stats */ for (j = 0; j < ENA_STATS_ARRAY_TX; j++) { ena_stats = &ena_stats_tx_strings[j]; snprintf(*data, ETH_GSTRING_LEN, - "queue_%u_tx_%s", i, ena_stats->name); + "queue_%u_%s_%s", i, + is_xdp ? "xdp_tx" : "tx", ena_stats->name); (*data) += ETH_GSTRING_LEN; } - /* Rx stats */ - for (j = 0; j < ENA_STATS_ARRAY_RX; j++) { - ena_stats = &ena_stats_rx_strings[j]; - snprintf(*data, ETH_GSTRING_LEN, - "queue_%u_rx_%s", i, ena_stats->name); - (*data) += ETH_GSTRING_LEN; + if (!is_xdp) { + /* RX stats, in XDP there isn't a RX queue + * counterpart + */ + for (j = 0; j < ENA_STATS_ARRAY_RX; j++) { + ena_stats = &ena_stats_rx_strings[j]; + + snprintf(*data, ETH_GSTRING_LEN, + "queue_%u_rx_%s", i, ena_stats->name); + (*data) += ETH_GSTRING_LEN; + } } } } @@ -249,25 +284,43 @@ } } -static void ena_get_strings(struct net_device *netdev, u32 sset, u8 *data) +static void ena_get_strings(struct ena_adapter *adapter, + u8 *data, + bool eni_stats_needed) { - struct ena_adapter *adapter = netdev_priv(netdev); const struct ena_stats *ena_stats; int i; - if (sset != ETH_SS_STATS) - return; - for (i = 0; i < ENA_STATS_ARRAY_GLOBAL; i++) { ena_stats = &ena_stats_global_strings[i]; memcpy(data, ena_stats->name, ETH_GSTRING_LEN); data += ETH_GSTRING_LEN; } + if (eni_stats_needed) { + for (i = 0; i < ENA_STATS_ARRAY_ENI(adapter); i++) { + ena_stats = &ena_stats_eni_strings[i]; + memcpy(data, ena_stats->name, ETH_GSTRING_LEN); + data += ETH_GSTRING_LEN; + } + } + ena_queue_strings(adapter, &data); ena_com_dev_strings(&data); } +static void ena_get_ethtool_strings(struct net_device *netdev, + u32 sset, + u8 *data) +{ + struct ena_adapter *adapter = netdev_priv(netdev); + + if (sset != ETH_SS_STATS) + return; + + ena_get_strings(adapter, data, adapter->eni_stats_supported); +} + static int ena_get_link_ksettings(struct net_device *netdev, struct ethtool_link_ksettings *link_ksettings) { @@ -847,7 +900,7 @@ .get_ringparam = ena_get_ringparam, .set_ringparam = ena_set_ringparam, .get_sset_count = ena_get_sset_count, - .get_strings = ena_get_strings, + .get_strings = ena_get_ethtool_strings, .get_ethtool_stats = ena_get_ethtool_stats, .get_rxnfc = ena_get_rxnfc, .set_rxnfc = ena_set_rxnfc, @@ -875,7 +928,7 @@ int strings_num; int i, rc; - strings_num = ena_get_sset_count(netdev, ETH_SS_STATS); + strings_num = ena_get_sw_stats_count(adapter); if (strings_num <= 0) { netif_err(adapter, drv, netdev, "Can't get stats num\n"); return; @@ -886,7 +939,7 @@ GFP_ATOMIC); if (!strings_buf) { netif_err(adapter, drv, netdev, - "failed to alloc strings_buf\n"); + "Failed to allocate strings_buf\n"); return; } @@ -895,13 +948,13 @@ GFP_ATOMIC); if (!data_buf) { netif_err(adapter, drv, netdev, - "failed to allocate data buf\n"); + "Failed to allocate data buf\n"); devm_kfree(&adapter->pdev->dev, strings_buf); return; } - ena_get_strings(netdev, ETH_SS_STATS, strings_buf); - ena_get_ethtool_stats(netdev, NULL, data_buf); + ena_get_strings(adapter, strings_buf, false); + ena_get_stats(adapter, data_buf, false); /* If there is a buffer, dump stats, otherwise print them to dmesg */ if (buf) --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_netdev.c +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_netdev.c @@ -1,33 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -139,7 +112,7 @@ ret = ena_com_set_dev_mtu(adapter->ena_dev, new_mtu); if (!ret) { - netif_dbg(adapter, drv, dev, "set MTU to %d\n", new_mtu); + netif_dbg(adapter, drv, dev, "Set MTU to %d\n", new_mtu); update_rx_ring_mtu(adapter, new_mtu); dev->mtu = new_mtu; } else { @@ -178,7 +151,7 @@ */ if (unlikely(rc)) { netif_err(adapter, tx_queued, dev, - "failed to prepare tx bufs\n"); + "Failed to prepare tx bufs\n"); u64_stats_update_begin(&ring->syncp); ring->tx_stats.prepare_ctx_err++; u64_stats_update_end(&ring->syncp); @@ -292,7 +265,7 @@ u64_stats_update_begin(&xdp_ring->syncp); xdp_ring->tx_stats.dma_mapping_err++; u64_stats_update_end(&xdp_ring->syncp); - netdev_warn(adapter->netdev, "failed to map xdp buff\n"); + netif_warn(adapter, tx_queued, adapter->netdev, "Failed to map xdp buff\n"); xdp_return_frame_rx_napi(tx_info->xdpf); tx_info->xdpf = NULL; @@ -307,7 +280,7 @@ struct ena_rx_buffer *rx_info) { struct ena_adapter *adapter = netdev_priv(dev); - struct ena_com_tx_ctx ena_tx_ctx = {0}; + struct ena_com_tx_ctx ena_tx_ctx = {}; struct ena_tx_buffer *tx_info; struct ena_ring *xdp_ring; u16 next_to_use, req_id; @@ -365,6 +338,7 @@ { struct bpf_prog *xdp_prog; u32 verdict = XDP_PASS; + u64 *xdp_stat; rcu_read_lock(); xdp_prog = READ_ONCE(rx_ring->xdp_bpf_prog); @@ -374,17 +348,31 @@ verdict = bpf_prog_run_xdp(xdp_prog, xdp); - if (verdict == XDP_TX) + if (verdict == XDP_TX) { ena_xdp_xmit_buff(rx_ring->netdev, xdp, rx_ring->qid + rx_ring->adapter->num_io_queues, rx_info); - else if (unlikely(verdict == XDP_ABORTED)) + + xdp_stat = &rx_ring->rx_stats.xdp_tx; + } else if (unlikely(verdict == XDP_ABORTED)) { trace_xdp_exception(rx_ring->netdev, xdp_prog, verdict); - else if (unlikely(verdict > XDP_TX)) + xdp_stat = &rx_ring->rx_stats.xdp_aborted; + } else if (unlikely(verdict == XDP_DROP)) { + xdp_stat = &rx_ring->rx_stats.xdp_drop; + } else if (unlikely(verdict == XDP_PASS)) { + xdp_stat = &rx_ring->rx_stats.xdp_pass; + } else { bpf_warn_invalid_xdp_action(verdict); + xdp_stat = &rx_ring->rx_stats.xdp_invalid; + } + + u64_stats_update_begin(&rx_ring->syncp); + (*xdp_stat)++; + u64_stats_update_end(&rx_ring->syncp); out: rcu_read_unlock(); + return verdict; } @@ -549,7 +537,7 @@ if (!old_bpf_prog) netif_info(adapter, drv, adapter->netdev, - "xdp program set, changing the max_mtu from %d to %d", + "XDP program is set, changing the max_mtu from %d to %d", prev_mtu, netdev->max_mtu); } else if (rc == ENA_XDP_CURRENT_MTU_TOO_LARGE) { @@ -655,6 +643,7 @@ txr->sgl_size = adapter->max_tx_sgl_size; txr->smoothed_interval = ena_com_get_nonadaptive_moderation_interval_tx(ena_dev); + txr->disable_meta_caching = adapter->disable_meta_caching; /* Don't init RX queues for xdp queues */ if (!ENA_IS_XDP_INDEX(adapter, i)) { @@ -806,24 +795,6 @@ adapter->num_io_queues); } -static int validate_rx_req_id(struct ena_ring *rx_ring, u16 req_id) -{ - if (likely(req_id < rx_ring->ring_size)) - return 0; - - netif_err(rx_ring->adapter, rx_err, rx_ring->netdev, - "Invalid rx req_id: %hu\n", req_id); - - u64_stats_update_begin(&rx_ring->syncp); - rx_ring->rx_stats.bad_req_id++; - u64_stats_update_end(&rx_ring->syncp); - - /* Trigger device reset */ - rx_ring->adapter->reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID; - set_bit(ENA_FLAG_TRIGGER_RESET, &rx_ring->adapter->flags); - return -EFAULT; -} - /* ena_setup_rx_resources - allocate I/O Rx resources (Descriptors) * @adapter: network interface device structure * @qid: queue index @@ -943,10 +914,14 @@ static int ena_alloc_rx_page(struct ena_ring *rx_ring, struct ena_rx_buffer *rx_info, gfp_t gfp) { + int headroom = rx_ring->rx_headroom; struct ena_com_buf *ena_buf; struct page *page; dma_addr_t dma; + /* restore page offset value in case it has been changed by device */ + rx_info->page_offset = headroom; + /* if previous allocated page is not used */ if (unlikely(rx_info->page)) return 0; @@ -959,8 +934,11 @@ return -ENOMEM; } + /* To enable NIC-side port-mirroring, AKA SPAN port, + * we make the buffer readable from the nic as well + */ dma = dma_map_page(rx_ring->dev, page, 0, ENA_PAGE_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); if (unlikely(dma_mapping_error(rx_ring->dev, dma))) { u64_stats_update_begin(&rx_ring->syncp); rx_ring->rx_stats.dma_mapping_err++; @@ -970,13 +948,12 @@ return -EIO; } netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev, - "alloc page %p, rx_info %p\n", page, rx_info); + "Allocate page %p, rx_info %p\n", page, rx_info); rx_info->page = page; - rx_info->page_offset = 0; ena_buf = &rx_info->ena_buf; - ena_buf->paddr = dma + rx_ring->rx_headroom; - ena_buf->len = ENA_PAGE_SIZE - rx_ring->rx_headroom; + ena_buf->paddr = dma + headroom; + ena_buf->len = ENA_PAGE_SIZE - headroom; return 0; } @@ -993,10 +970,9 @@ return; } - dma_unmap_page(rx_ring->dev, - ena_buf->paddr - rx_ring->rx_headroom, + dma_unmap_page(rx_ring->dev, ena_buf->paddr - rx_ring->rx_headroom, ENA_PAGE_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); __free_page(page); rx_info->page = NULL; @@ -1021,7 +997,7 @@ GFP_ATOMIC | __GFP_COMP); if (unlikely(rc < 0)) { netif_warn(rx_ring->adapter, rx_err, rx_ring->netdev, - "failed to alloc buffer for rx queue %d\n", + "Failed to allocate buffer for rx queue %d\n", rx_ring->qid); break; } @@ -1030,7 +1006,7 @@ req_id); if (unlikely(rc)) { netif_warn(rx_ring->adapter, rx_status, rx_ring->netdev, - "failed to add buffer for rx queue %d\n", + "Failed to add buffer for rx queue %d\n", rx_ring->qid); break; } @@ -1042,9 +1018,9 @@ u64_stats_update_begin(&rx_ring->syncp); rx_ring->rx_stats.refil_partial++; u64_stats_update_end(&rx_ring->syncp); - netdev_warn(rx_ring->netdev, - "refilled rx qid %d with only %d buffers (from %d)\n", - rx_ring->qid, i, num); + netif_warn(rx_ring->adapter, rx_err, rx_ring->netdev, + "Refilled rx qid %d with only %d buffers (from %d)\n", + rx_ring->qid, i, num); } /* ena_com_write_sq_doorbell issues a wmb() */ @@ -1085,7 +1061,7 @@ if (unlikely(rc != bufs_num)) netif_warn(rx_ring->adapter, rx_status, rx_ring->netdev, - "refilling Queue %d failed. allocated %d buffers from: %d\n", + "Refilling Queue %d failed. allocated %d buffers from: %d\n", i, rc, bufs_num); } } @@ -1143,14 +1119,14 @@ continue; if (print_once) { - netdev_notice(tx_ring->netdev, - "free uncompleted tx skb qid %d idx 0x%x\n", - tx_ring->qid, i); + netif_notice(tx_ring->adapter, ifdown, tx_ring->netdev, + "Free uncompleted tx skb qid %d idx 0x%x\n", + tx_ring->qid, i); print_once = false; } else { - netdev_dbg(tx_ring->netdev, - "free uncompleted tx skb qid %d idx 0x%x\n", - tx_ring->qid, i); + netif_dbg(tx_ring->adapter, ifdown, tx_ring->netdev, + "Free uncompleted tx skb qid %d idx 0x%x\n", + tx_ring->qid, i); } ena_unmap_tx_buff(tx_ring, tx_info); @@ -1371,15 +1347,10 @@ struct ena_rx_buffer *rx_info; u16 len, req_id, buf = 0; void *va; - int rc; len = ena_bufs[buf].len; req_id = ena_bufs[buf].req_id; - rc = validate_rx_req_id(rx_ring, req_id); - if (unlikely(rc < 0)) - return NULL; - rx_info = &rx_ring->rx_buffer_info[req_id]; if (unlikely(!rx_info->page)) { @@ -1394,7 +1365,8 @@ /* save virt address of first buffer */ va = page_address(rx_info->page) + rx_info->page_offset; - prefetch(va + NET_IP_ALIGN); + + prefetch(va); if (len <= rx_ring->rx_copybreak) { skb = ena_alloc_skb(rx_ring, false); @@ -1402,7 +1374,7 @@ return NULL; netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev, - "rx allocated small packet. len %d. data_len %d\n", + "RX allocated small packet. len %d. data_len %d\n", skb->len, skb->data_len); /* sync this buffer for CPU use */ @@ -1431,15 +1403,13 @@ do { dma_unmap_page(rx_ring->dev, dma_unmap_addr(&rx_info->ena_buf, paddr), - ENA_PAGE_SIZE, DMA_FROM_DEVICE); + ENA_PAGE_SIZE, DMA_BIDIRECTIONAL); skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_info->page, rx_info->page_offset, len, ENA_PAGE_SIZE); - /* The offset is non zero only for the first buffer */ - rx_info->page_offset = 0; netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev, - "rx skb updated. len %d. data_len %d\n", + "RX skb updated. len %d. data_len %d\n", skb->len, skb->data_len); rx_info->page = NULL; @@ -1455,10 +1425,6 @@ len = ena_bufs[buf].len; req_id = ena_bufs[buf].req_id; - rc = validate_rx_req_id(rx_ring, req_id); - if (unlikely(rc < 0)) - return NULL; - rx_info = &rx_ring->rx_buffer_info[req_id]; } while (1); @@ -1559,8 +1525,7 @@ int ret; rx_info = &rx_ring->rx_buffer_info[rx_ring->ena_bufs[0].req_id]; - xdp->data = page_address(rx_info->page) + - rx_info->page_offset + rx_ring->rx_headroom; + xdp->data = page_address(rx_info->page) + rx_info->page_offset; xdp_set_data_meta_invalid(xdp); xdp->data_hard_start = page_address(rx_info->page); xdp->data_end = xdp->data + rx_ring->ena_bufs[0].len; @@ -1627,8 +1592,9 @@ if (unlikely(ena_rx_ctx.descs == 0)) break; + /* First descriptor might have an offset set by the device */ rx_info = &rx_ring->rx_buffer_info[rx_ring->ena_bufs[0].req_id]; - rx_info->page_offset = ena_rx_ctx.pkt_offset; + rx_info->page_offset += ena_rx_ctx.pkt_offset; netif_dbg(rx_ring->adapter, rx_status, rx_ring->netdev, "rx_poll: q %d got packet from ena. descs #: %d l3 proto %d l4 proto %d hash: %x\n", @@ -1646,6 +1612,11 @@ &next_to_clean); if (unlikely(!skb)) { + /* The page might not actually be freed here since the + * page reference count is incremented in + * ena_xdp_xmit_buff(), and it will be decreased only + * when send completion was received from the device + */ if (xdp_verdict == XDP_TX) ena_free_rx_page(rx_ring, &rx_ring->rx_buffer_info[rx_ring->ena_bufs[0].req_id]); @@ -1707,12 +1678,18 @@ error: adapter = netdev_priv(rx_ring->netdev); - u64_stats_update_begin(&rx_ring->syncp); - rx_ring->rx_stats.bad_desc_num++; - u64_stats_update_end(&rx_ring->syncp); + if (rc == -ENOSPC) { + u64_stats_update_begin(&rx_ring->syncp); + rx_ring->rx_stats.bad_desc_num++; + u64_stats_update_end(&rx_ring->syncp); + adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS; + } else { + u64_stats_update_begin(&rx_ring->syncp); + rx_ring->rx_stats.bad_req_id++; + u64_stats_update_end(&rx_ring->syncp); + adapter->reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID; + } - /* Too many desc from the device. Trigger reset */ - adapter->reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS; set_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags); return 0; @@ -1773,6 +1750,7 @@ u64_stats_update_begin(&tx_ring->syncp); tx_ring->tx_stats.unmask_interrupt++; u64_stats_update_end(&tx_ring->syncp); + /* It is a shared MSI-X. * Tx and Rx CQ have pointer to it. * So we use one of them to reach the intr reg @@ -1913,7 +1891,10 @@ /* Update numa and unmask the interrupt only when schedule * from the interrupt context (vs from sk_busy_loop) */ - if (napi_complete_done(napi, rx_work_done)) { + if (napi_complete_done(napi, rx_work_done) && + READ_ONCE(ena_napi->interrupts_masked)) { + smp_rmb(); /* make sure interrupts_masked is read */ + WRITE_ONCE(ena_napi->interrupts_masked, false); /* We apply adaptive moderation on Rx path only. * Tx uses static interrupt moderation. */ @@ -1961,6 +1942,9 @@ ena_napi->first_interrupt = true; + WRITE_ONCE(ena_napi->interrupts_masked, true); + smp_wmb(); /* write interrupts_masked before calling napi */ + napi_schedule_irqoff(&ena_napi->napi); return IRQ_HANDLED; @@ -1984,7 +1968,7 @@ /* Reserved the max msix vectors we might need */ msix_vecs = ENA_MAX_MSIX_VEC(adapter->max_num_io_queues); netif_dbg(adapter, probe, adapter->netdev, - "trying to enable MSI-X, vectors %d\n", msix_vecs); + "Trying to enable MSI-X, vectors %d\n", msix_vecs); irq_cnt = pci_alloc_irq_vectors(adapter->pdev, ENA_MIN_MSIX_VEC, msix_vecs, PCI_IRQ_MSIX); @@ -1997,7 +1981,7 @@ if (irq_cnt != msix_vecs) { netif_notice(adapter, probe, adapter->netdev, - "enable only %d MSI-X (out of %d), reduce the number of queues\n", + "Enable only %d MSI-X (out of %d), reduce the number of queues\n", irq_cnt, msix_vecs); adapter->num_io_queues = irq_cnt - ENA_ADMIN_MSIX_VEC; } @@ -2067,12 +2051,12 @@ irq->data); if (rc) { netif_err(adapter, probe, adapter->netdev, - "failed to request admin irq\n"); + "Failed to request admin irq\n"); return rc; } netif_dbg(adapter, probe, adapter->netdev, - "set affinity hint of mgmnt irq.to 0x%lx (irq vector: %d)\n", + "Set affinity hint of mgmnt irq.to 0x%lx (irq vector: %d)\n", irq->affinity_hint_mask.bits[0], irq->vector); irq_set_affinity_hint(irq->vector, &irq->affinity_hint_mask); @@ -2105,7 +2089,7 @@ } netif_dbg(adapter, ifup, adapter->netdev, - "set affinity hint of irq. index %d to 0x%lx (irq vector: %d)\n", + "Set affinity hint of irq. index %d to 0x%lx (irq vector: %d)\n", i, irq->affinity_hint_mask.bits[0], irq->vector); irq_set_affinity_hint(irq->vector, &irq->affinity_hint_mask); @@ -2177,27 +2161,23 @@ int i; for (i = first_index; i < first_index + count; i++) { - /* Check if napi was initialized before */ - if (!ENA_IS_XDP_INDEX(adapter, i) || - adapter->ena_napi[i].xdp_ring) - netif_napi_del(&adapter->ena_napi[i].napi); - else - WARN_ON(ENA_IS_XDP_INDEX(adapter, i) && - adapter->ena_napi[i].xdp_ring); + netif_napi_del(&adapter->ena_napi[i].napi); + + WARN_ON(!ENA_IS_XDP_INDEX(adapter, i) && + adapter->ena_napi[i].xdp_ring); } } static void ena_init_napi_in_range(struct ena_adapter *adapter, int first_index, int count) { - struct ena_napi *napi = {0}; int i; for (i = first_index; i < first_index + count; i++) { - napi = &adapter->ena_napi[i]; + struct ena_napi *napi = &adapter->ena_napi[i]; netif_napi_add(adapter->netdev, - &adapter->ena_napi[i].napi, + &napi->napi, ENA_IS_XDP_INDEX(adapter, i) ? ena_xdp_io_poll : ena_io_poll, ENA_NAPI_BUDGET); @@ -2549,7 +2529,7 @@ { int io_queue_count, rc, i; - netdev_dbg(adapter->netdev, "%s\n", __func__); + netif_dbg(adapter, ifup, adapter->netdev, "%s\n", __func__); io_queue_count = adapter->num_io_queues + adapter->xdp_num_queues; ena_setup_io_intr(adapter); @@ -2633,7 +2613,8 @@ rc = ena_com_dev_reset(adapter->ena_dev, adapter->reset_reason); if (rc) - dev_err(&adapter->pdev->dev, "Device reset failed\n"); + netif_err(adapter, ifdown, adapter->netdev, + "Device reset failed\n"); /* stop submitting admin commands on a device that was reset */ ena_com_set_admin_running_state(adapter->ena_dev, false); } @@ -2776,7 +2757,9 @@ return dev_was_up ? ena_open(adapter->netdev) : 0; } -static void ena_tx_csum(struct ena_com_tx_ctx *ena_tx_ctx, struct sk_buff *skb) +static void ena_tx_csum(struct ena_com_tx_ctx *ena_tx_ctx, + struct sk_buff *skb, + bool disable_meta_caching) { u32 mss = skb_shinfo(skb)->gso_size; struct ena_com_tx_meta *ena_meta = &ena_tx_ctx->ena_meta; @@ -2820,7 +2803,9 @@ ena_meta->l3_hdr_len = skb_network_header_len(skb); ena_meta->l3_hdr_offset = skb_network_offset(skb); ena_tx_ctx->meta_valid = 1; - + } else if (disable_meta_caching) { + memset(ena_meta, 0, sizeof(*ena_meta)); + ena_tx_ctx->meta_valid = 1; } else { ena_tx_ctx->meta_valid = 0; } @@ -2951,7 +2936,7 @@ u64_stats_update_begin(&tx_ring->syncp); tx_ring->tx_stats.dma_mapping_err++; u64_stats_update_end(&tx_ring->syncp); - netdev_warn(adapter->netdev, "failed to map skb\n"); + netif_warn(adapter, tx_queued, adapter->netdev, "Failed to map skb\n"); tx_info->skb = NULL; @@ -3004,7 +2989,7 @@ ena_tx_ctx.header_len = header_len; /* set flags and meta data */ - ena_tx_csum(&ena_tx_ctx, skb); + ena_tx_csum(&ena_tx_ctx, skb, tx_ring->disable_meta_caching); rc = ena_xmit_common(dev, tx_ring, @@ -3089,13 +3074,14 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev, struct pci_dev *pdev) { + struct device *dev = &pdev->dev; struct ena_admin_host_info *host_info; int rc; /* Allocate only the host info */ rc = ena_com_allocate_host_info(ena_dev); if (rc) { - pr_err("Cannot allocate host info\n"); + dev_err(dev, "Cannot allocate host info\n"); return; } @@ -3118,14 +3104,16 @@ host_info->driver_supported_features = ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK | - ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK; + ENA_ADMIN_HOST_INFO_INTERRUPT_MODERATION_MASK | + ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK | + ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK; rc = ena_com_set_host_attributes(ena_dev); if (rc) { if (rc == -EOPNOTSUPP) - pr_warn("Cannot set host attributes\n"); + dev_warn(dev, "Cannot set host attributes\n"); else - pr_err("Cannot set host attributes\n"); + dev_err(dev, "Cannot set host attributes\n"); goto err; } @@ -3153,7 +3141,8 @@ rc = ena_com_allocate_debug_area(adapter->ena_dev, debug_area_size); if (rc) { - pr_err("Cannot allocate debug area\n"); + netif_err(adapter, drv, adapter->netdev, + "Cannot allocate debug area\n"); return; } @@ -3173,6 +3162,19 @@ ena_com_delete_debug_area(adapter->ena_dev); } +int ena_update_hw_stats(struct ena_adapter *adapter) +{ + int rc = 0; + + rc = ena_com_get_eni_stats(adapter->ena_dev, &adapter->eni_stats); + if (rc) { + dev_info_once(&adapter->pdev->dev, "Failed to get ENI stats\n"); + return rc; + } + + return 0; +} + static void ena_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) { @@ -3271,10 +3273,71 @@ return 0; } +static void set_default_llq_configurations(struct ena_llq_configurations *llq_config) +{ + llq_config->llq_header_location = ENA_ADMIN_INLINE_HEADER; + llq_config->llq_stride_ctrl = ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY; + llq_config->llq_num_decs_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; + llq_config->llq_ring_entry_size = ENA_ADMIN_LIST_ENTRY_SIZE_128B; + llq_config->llq_ring_entry_size_value = 128; +} + +static int ena_set_queues_placement_policy(struct pci_dev *pdev, + struct ena_com_dev *ena_dev, + struct ena_admin_feature_llq_desc *llq, + struct ena_llq_configurations *llq_default_configurations) +{ + int rc; + u32 llq_feature_mask; + + llq_feature_mask = 1 << ENA_ADMIN_LLQ; + if (!(ena_dev->supported_features & llq_feature_mask)) { + dev_err(&pdev->dev, + "LLQ is not supported Fallback to host mode policy.\n"); + ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; + return 0; + } + + rc = ena_com_config_dev_mode(ena_dev, llq, llq_default_configurations); + if (unlikely(rc)) { + dev_err(&pdev->dev, + "Failed to configure the device mode. Fallback to host mode policy.\n"); + ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; + } + + return 0; +} + +static int ena_map_llq_mem_bar(struct pci_dev *pdev, struct ena_com_dev *ena_dev, + int bars) +{ + bool has_mem_bar = !!(bars & BIT(ENA_MEM_BAR)); + + if (!has_mem_bar) { + if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { + dev_err(&pdev->dev, + "ENA device does not expose LLQ bar. Fallback to host mode policy.\n"); + ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; + } + + return 0; + } + + ena_dev->mem_bar = devm_ioremap_wc(&pdev->dev, + pci_resource_start(pdev, ENA_MEM_BAR), + pci_resource_len(pdev, ENA_MEM_BAR)); + + if (!ena_dev->mem_bar) + return -EFAULT; + + return 0; +} + static int ena_device_init(struct ena_com_dev *ena_dev, struct pci_dev *pdev, struct ena_com_dev_get_features_ctx *get_feat_ctx, bool *wd_state) { + struct ena_llq_configurations llq_config; struct device *dev = &pdev->dev; bool readless_supported; u32 aenq_groups; @@ -3283,7 +3346,7 @@ rc = ena_com_mmio_reg_read_request_init(ena_dev); if (rc) { - dev_err(dev, "failed to init mmio read less\n"); + dev_err(dev, "Failed to init mmio read less\n"); return rc; } @@ -3301,7 +3364,7 @@ rc = ena_com_validate_version(ena_dev); if (rc) { - dev_err(dev, "device version is too low\n"); + dev_err(dev, "Device version is too low\n"); goto err_mmio_read_less; } @@ -3312,16 +3375,9 @@ goto err_mmio_read_less; } - rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(dma_width)); - if (rc) { - dev_err(dev, "pci_set_dma_mask failed 0x%x\n", rc); - goto err_mmio_read_less; - } - - rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(dma_width)); + rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(dma_width)); if (rc) { - dev_err(dev, "err_pci_set_consistent_dma_mask failed 0x%x\n", - rc); + dev_err(dev, "dma_set_mask_and_coherent failed %d\n", rc); goto err_mmio_read_less; } @@ -3365,6 +3421,15 @@ *wd_state = !!(aenq_groups & BIT(ENA_ADMIN_KEEP_ALIVE)); + set_default_llq_configurations(&llq_config); + + rc = ena_set_queues_placement_policy(pdev, ena_dev, &get_feat_ctx->llq, + &llq_config); + if (rc) { + dev_err(dev, "ENA device init failed\n"); + goto err_admin_init; + } + return 0; err_admin_init: @@ -3497,9 +3562,10 @@ netif_carrier_on(adapter->netdev); mod_timer(&adapter->timer_service, round_jiffies(jiffies + HZ)); - dev_err(&pdev->dev, "Device reset completed successfully\n"); adapter->last_keep_alive_jiffies = jiffies; + dev_err(&pdev->dev, "Device reset completed successfully\n"); + return rc; err_disable_msix: ena_free_mgmnt_irq(adapter); @@ -3523,16 +3589,14 @@ { struct ena_adapter *adapter = container_of(work, struct ena_adapter, reset_task); - struct pci_dev *pdev = adapter->pdev; - if (unlikely(!test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags))) { - dev_err(&pdev->dev, - "device reset schedule while reset bit is off\n"); - return; - } rtnl_lock(); - ena_destroy_device(adapter, false); - ena_restore_device(adapter); + + if (likely(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags))) { + ena_destroy_device(adapter, false); + ena_restore_device(adapter); + } + rtnl_unlock(); } @@ -3614,7 +3678,7 @@ } u64_stats_update_begin(&tx_ring->syncp); - tx_ring->tx_stats.missed_tx = missed_tx; + tx_ring->tx_stats.missed_tx += missed_tx; u64_stats_update_end(&tx_ring->syncp); return rc; @@ -3703,7 +3767,7 @@ u64_stats_update_end(&rx_ring->syncp); netif_err(adapter, drv, adapter->netdev, - "trigger refill for ring %d\n", i); + "Trigger refill for ring %d\n", i); napi_schedule(rx_ring->napi); rx_ring->empty_rx_queue = 0; @@ -3871,54 +3935,6 @@ return max_num_io_queues; } -static int ena_set_queues_placement_policy(struct pci_dev *pdev, - struct ena_com_dev *ena_dev, - struct ena_admin_feature_llq_desc *llq, - struct ena_llq_configurations *llq_default_configurations) -{ - bool has_mem_bar; - int rc; - u32 llq_feature_mask; - - llq_feature_mask = 1 << ENA_ADMIN_LLQ; - if (!(ena_dev->supported_features & llq_feature_mask)) { - dev_err(&pdev->dev, - "LLQ is not supported Fallback to host mode policy.\n"); - ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; - return 0; - } - - has_mem_bar = pci_select_bars(pdev, IORESOURCE_MEM) & BIT(ENA_MEM_BAR); - - rc = ena_com_config_dev_mode(ena_dev, llq, llq_default_configurations); - if (unlikely(rc)) { - dev_err(&pdev->dev, - "Failed to configure the device mode. Fallback to host mode policy.\n"); - ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; - return 0; - } - - /* Nothing to config, exit */ - if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST) - return 0; - - if (!has_mem_bar) { - dev_err(&pdev->dev, - "ENA device does not expose LLQ bar. Fallback to host mode policy.\n"); - ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; - return 0; - } - - ena_dev->mem_bar = devm_ioremap_wc(&pdev->dev, - pci_resource_start(pdev, ENA_MEM_BAR), - pci_resource_len(pdev, ENA_MEM_BAR)); - - if (!ena_dev->mem_bar) - return -EFAULT; - - return 0; -} - static void ena_set_dev_offloads(struct ena_com_dev_get_features_ctx *feat, struct net_device *netdev) { @@ -4034,14 +4050,6 @@ pci_release_selected_regions(pdev, release_bars); } -static void set_default_llq_configurations(struct ena_llq_configurations *llq_config) -{ - llq_config->llq_header_location = ENA_ADMIN_INLINE_HEADER; - llq_config->llq_ring_entry_size = ENA_ADMIN_LIST_ENTRY_SIZE_128B; - llq_config->llq_stride_ctrl = ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY; - llq_config->llq_num_decs_before_header = ENA_ADMIN_LLQ_NUM_DESCS_BEFORE_HEADER_2; - llq_config->llq_ring_entry_size_value = 128; -} static int ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *ctx) { @@ -4121,15 +4129,13 @@ */ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { - struct ena_calc_queue_size_ctx calc_queue_ctx = { 0 }; + struct ena_calc_queue_size_ctx calc_queue_ctx = {}; struct ena_com_dev_get_features_ctx get_feat_ctx; - struct ena_llq_configurations llq_config; struct ena_com_dev *ena_dev = NULL; struct ena_adapter *adapter; struct net_device *netdev; static int adapters_found; u32 max_num_io_queues; - char *queue_type_str; bool wd_state; int bars, rc; @@ -4141,6 +4147,12 @@ return rc; } + rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(ENA_MAX_PHYS_ADDR_SIZE_BITS)); + if (rc) { + dev_err(&pdev->dev, "dma_set_mask_and_coherent failed %d\n", rc); + goto err_disable_device; + } + pci_set_master(pdev); ena_dev = vzalloc(sizeof(*ena_dev)); @@ -4161,7 +4173,7 @@ pci_resource_start(pdev, ENA_REG_BAR), pci_resource_len(pdev, ENA_REG_BAR)); if (!ena_dev->reg_bar) { - dev_err(&pdev->dev, "failed to remap regs bar\n"); + dev_err(&pdev->dev, "Failed to remap regs bar\n"); rc = -EFAULT; goto err_free_region; } @@ -4172,19 +4184,16 @@ rc = ena_device_init(ena_dev, pdev, &get_feat_ctx, &wd_state); if (rc) { - dev_err(&pdev->dev, "ena device init failed\n"); + dev_err(&pdev->dev, "ENA device init failed\n"); if (rc == -ETIME) rc = -EPROBE_DEFER; goto err_free_region; } - set_default_llq_configurations(&llq_config); - - rc = ena_set_queues_placement_policy(pdev, ena_dev, &get_feat_ctx.llq, - &llq_config); + rc = ena_map_llq_mem_bar(pdev, ena_dev, bars); if (rc) { - dev_err(&pdev->dev, "ena device init failed\n"); - goto err_device_destroy; + dev_err(&pdev->dev, "ENA llq bar mapping failed\n"); + goto err_free_ena_dev; } calc_queue_ctx.ena_dev = ena_dev; @@ -4241,6 +4250,11 @@ adapter->xdp_num_queues = 0; adapter->rx_copybreak = ENA_DEFAULT_RX_COPYBREAK; + if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) + adapter->disable_meta_caching = + !!(get_feat_ctx.llq.accel_mode.u.get.supported_flags & + BIT(ENA_ADMIN_DISABLE_META_CACHING)); + adapter->wd_state = wd_state; snprintf(adapter->name, ENA_NAME_MAX_LEN, "ena_%d", adapters_found); @@ -4278,6 +4292,11 @@ ena_config_debug_area(adapter); + if (!ena_update_hw_stats(adapter)) + adapter->eni_stats_supported = true; + else + adapter->eni_stats_supported = false; + memcpy(adapter->netdev->perm_addr, adapter->mac_addr, netdev->addr_len); netif_carrier_off(netdev); @@ -4300,15 +4319,10 @@ timer_setup(&adapter->timer_service, ena_timer_service, 0); mod_timer(&adapter->timer_service, round_jiffies(jiffies + HZ)); - if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_HOST) - queue_type_str = "Regular"; - else - queue_type_str = "Low Latency"; - dev_info(&pdev->dev, - "%s found at mem %lx, mac addr %pM, Placement policy: %s\n", + "%s found at mem %lx, mac addr %pM\n", DEVICE_NAME, (long)pci_resource_start(pdev, 0), - netdev->dev_addr, queue_type_str); + netdev->dev_addr); set_bit(ENA_FLAG_DEVICE_RUNNING, &adapter->flags); @@ -4366,8 +4380,11 @@ netdev->rx_cpu_rmap = NULL; } #endif /* CONFIG_RFS_ACCEL */ - del_timer_sync(&adapter->timer_service); + /* Make sure timer and reset routine won't be called after + * freeing device resources. + */ + del_timer_sync(&adapter->timer_service); cancel_work_sync(&adapter->reset_task); rtnl_lock(); /* lock released inside the below if-else block */ @@ -4420,13 +4437,12 @@ __ena_shutoff(pdev, true); } -#ifdef CONFIG_PM /* ena_suspend - PM suspend callback - * @pdev: PCI device information struct - * @state:power state + * @dev_d: Device information struct */ -static int ena_suspend(struct pci_dev *pdev, pm_message_t state) +static int __maybe_unused ena_suspend(struct device *dev_d) { + struct pci_dev *pdev = to_pci_dev(dev_d); struct ena_adapter *adapter = pci_get_drvdata(pdev); u64_stats_update_begin(&adapter->syncp); @@ -4436,7 +4452,7 @@ rtnl_lock(); if (unlikely(test_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags))) { dev_err(&pdev->dev, - "ignoring device reset request as the device is being suspended\n"); + "Ignoring device reset request as the device is being suspended\n"); clear_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags); } ena_destroy_device(adapter, true); @@ -4445,12 +4461,11 @@ } /* ena_resume - PM resume callback - * @pdev: PCI device information struct - * + * @dev_d: Device information struct */ -static int ena_resume(struct pci_dev *pdev) +static int __maybe_unused ena_resume(struct device *dev_d) { - struct ena_adapter *adapter = pci_get_drvdata(pdev); + struct ena_adapter *adapter = dev_get_drvdata(dev_d); int rc; u64_stats_update_begin(&adapter->syncp); @@ -4462,7 +4477,8 @@ rtnl_unlock(); return rc; } -#endif + +static SIMPLE_DEV_PM_OPS(ena_pm_ops, ena_suspend, ena_resume); static struct pci_driver ena_pci_driver = { .name = DRV_MODULE_NAME, @@ -4470,10 +4486,7 @@ .probe = ena_probe, .remove = ena_remove, .shutdown = ena_shutdown, -#ifdef CONFIG_PM - .suspend = ena_suspend, - .resume = ena_resume, -#endif + .driver.pm = &ena_pm_ops, .sriov_configure = pci_sriov_configure_simple, }; @@ -4514,7 +4527,7 @@ ENA_ADMIN_AENQ_LINK_CHANGE_DESC_LINK_STATUS_MASK; if (status) { - netdev_dbg(adapter->netdev, "%s\n", __func__); + netif_dbg(adapter, ifup, adapter->netdev, "%s\n", __func__); set_bit(ENA_FLAG_LINK_UP, &adapter->flags); if (!test_bit(ENA_FLAG_ONGOING_RESET, &adapter->flags)) netif_carrier_on(adapter->netdev); @@ -4539,6 +4552,9 @@ tx_drops = ((u64)desc->tx_drops_high << 32) | desc->tx_drops_low; u64_stats_update_begin(&adapter->syncp); + /* These stats are accumulated by the device, so the counters indicate + * all drops since last reset. + */ adapter->dev_stats.rx_drops = rx_drops; adapter->dev_stats.tx_drops = tx_drops; u64_stats_update_end(&adapter->syncp); @@ -4555,7 +4571,7 @@ aenq_e->aenq_common_desc.group, ENA_ADMIN_NOTIFICATION); - switch (aenq_e->aenq_common_desc.syndrom) { + switch (aenq_e->aenq_common_desc.syndrome) { case ENA_ADMIN_UPDATE_HINTS: hints = (struct ena_admin_ena_hw_hints *) (&aenq_e->inline_data_w4); @@ -4564,7 +4580,7 @@ default: netif_err(adapter, drv, adapter->netdev, "Invalid aenq notification link state %d\n", - aenq_e->aenq_common_desc.syndrom); + aenq_e->aenq_common_desc.syndrome); } } --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_netdev.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_netdev.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef ENA_H @@ -167,6 +140,7 @@ struct ena_ring *rx_ring; struct ena_ring *xdp_ring; bool first_interrupt; + bool interrupts_masked; u32 qid; struct dim dim; }; @@ -260,6 +234,11 @@ u64 bad_req_id; u64 empty_rx_ring; u64 csum_unchecked; + u64 xdp_aborted; + u64 xdp_drop; + u64 xdp_pass; + u64 xdp_tx; + u64 xdp_invalid; }; struct ena_ring { @@ -297,6 +276,7 @@ u8 tx_max_header_size; bool first_interrupt; + bool disable_meta_caching; u16 no_interrupt_event_cnt; /* cpu for TPH */ @@ -398,10 +378,13 @@ bool wd_state; bool dev_up_before_reset; + bool disable_meta_caching; unsigned long last_keep_alive_jiffies; struct u64_stats_sync syncp; struct ena_stats_dev dev_stats; + struct ena_admin_eni_stats eni_stats; + bool eni_stats_supported; /* last queue index that was checked for uncompleted tx packets */ u32 last_monitored_tx_qid; @@ -419,6 +402,8 @@ void ena_dump_stats_to_buf(struct ena_adapter *adapter, u8 *buf); +int ena_update_hw_stats(struct ena_adapter *adapter); + int ena_update_queue_sizes(struct ena_adapter *adapter, u32 new_tx_size, u32 new_rx_size); --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_pci_id_tbl.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_pci_id_tbl.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef ENA_PCI_ID_TBL_H_ @@ -53,10 +26,15 @@ #define PCI_DEV_ID_ENA_LLQ_VF 0xec21 #endif +#ifndef PCI_DEV_ID_ENA_RESRV0 +#define PCI_DEV_ID_ENA_RESRV0 0x0051 +#endif + #define ENA_PCI_ID_TABLE_ENTRY(devid) \ {PCI_DEVICE(PCI_VENDOR_ID_AMAZON, devid)}, static const struct pci_device_id ena_pci_tbl[] = { + ENA_PCI_ID_TABLE_ENTRY(PCI_DEV_ID_ENA_RESRV0) ENA_PCI_ID_TABLE_ENTRY(PCI_DEV_ID_ENA_PF) ENA_PCI_ID_TABLE_ENTRY(PCI_DEV_ID_ENA_LLQ_PF) ENA_PCI_ID_TABLE_ENTRY(PCI_DEV_ID_ENA_VF) --- linux-5.8.0.orig/drivers/net/ethernet/amazon/ena/ena_regs_defs.h +++ linux-5.8.0/drivers/net/ethernet/amazon/ena/ena_regs_defs.h @@ -1,33 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* - * Copyright 2015 - 2016 Amazon.com, Inc. or its affiliates. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef _ENA_REGS_H_ #define _ENA_REGS_H_ --- linux-5.8.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-common.h +++ linux-5.8.0/drivers/net/ethernet/amd/xgbe/xgbe-common.h @@ -1279,10 +1279,18 @@ #define MDIO_PMA_10GBR_FECCTRL 0x00ab #endif +#ifndef MDIO_PMA_RX_CTRL1 +#define MDIO_PMA_RX_CTRL1 0x8051 +#endif + #ifndef MDIO_PCS_DIG_CTRL #define MDIO_PCS_DIG_CTRL 0x8000 #endif +#ifndef MDIO_PCS_DIGITAL_STAT +#define MDIO_PCS_DIGITAL_STAT 0x8010 +#endif + #ifndef MDIO_AN_XNP #define MDIO_AN_XNP 0x0016 #endif @@ -1358,6 +1366,8 @@ #define XGBE_KR_TRAINING_ENABLE BIT(1) #define XGBE_PCS_CL37_BP BIT(12) +#define XGBE_PCS_PSEQ_STATE_MASK 0x1c +#define XGBE_PCS_PSEQ_STATE_POWER_GOOD 0x10 #define XGBE_AN_CL37_INT_CMPLT BIT(0) #define XGBE_AN_CL37_INT_MASK 0x01 @@ -1375,6 +1385,10 @@ #define XGBE_PMA_CDR_TRACK_EN_OFF 0x00 #define XGBE_PMA_CDR_TRACK_EN_ON 0x01 +#define XGBE_PMA_RX_RST_0_MASK BIT(4) +#define XGBE_PMA_RX_RST_0_RESET_ON 0x10 +#define XGBE_PMA_RX_RST_0_RESET_OFF 0x00 + /* Bit setting and getting macros * The get macro will extract the current bit field value from within * the variable --- linux-5.8.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ linux-5.8.0/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1443,6 +1443,7 @@ return; netif_tx_stop_all_queues(netdev); + netif_carrier_off(pdata->netdev); xgbe_stop_timers(pdata); flush_workqueue(pdata->dev_workqueue); --- linux-5.8.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +++ linux-5.8.0/drivers/net/ethernet/amd/xgbe/xgbe-mdio.c @@ -1345,7 +1345,7 @@ &an_restart); if (an_restart) { xgbe_phy_config_aneg(pdata); - return; + goto adjust_link; } if (pdata->phy.link) { @@ -1396,7 +1396,6 @@ pdata->phy_if.phy_impl.stop(pdata); pdata->phy.link = 0; - netif_carrier_off(pdata->netdev); xgbe_phy_adjust_link(pdata); } --- linux-5.8.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ linux-5.8.0/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -921,6 +921,9 @@ if ((phy_id & 0xfffffff0) != 0x03625d10) return false; + /* Reset PHY - wait for self-clearing reset bit to clear */ + genphy_soft_reset(phy_data->phydev); + /* Disable RGMII mode */ phy_write(phy_data->phydev, 0x18, 0x7007); reg = phy_read(phy_data->phydev, 0x18); @@ -1948,6 +1951,27 @@ xgbe_phy_put_comm_ownership(pdata); } +static void xgbe_phy_rx_reset(struct xgbe_prv_data *pdata) +{ + int reg; + + reg = XMDIO_READ_BITS(pdata, MDIO_MMD_PCS, MDIO_PCS_DIGITAL_STAT, + XGBE_PCS_PSEQ_STATE_MASK); + if (reg == XGBE_PCS_PSEQ_STATE_POWER_GOOD) { + /* Mailbox command timed out, reset of RX block is required. + * This can be done by asseting the reset bit and wait for + * its compeletion. + */ + XMDIO_WRITE_BITS(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_RX_CTRL1, + XGBE_PMA_RX_RST_0_MASK, XGBE_PMA_RX_RST_0_RESET_ON); + ndelay(20); + XMDIO_WRITE_BITS(pdata, MDIO_MMD_PMAPMD, MDIO_PMA_RX_CTRL1, + XGBE_PMA_RX_RST_0_MASK, XGBE_PMA_RX_RST_0_RESET_OFF); + usleep_range(40, 50); + netif_err(pdata, link, pdata->netdev, "firmware mailbox reset performed\n"); + } +} + static void xgbe_phy_perform_ratechange(struct xgbe_prv_data *pdata, unsigned int cmd, unsigned int sub_cmd) { @@ -1955,9 +1979,11 @@ unsigned int wait; /* Log if a previous command did not complete */ - if (XP_IOREAD_BITS(pdata, XP_DRIVER_INT_RO, STATUS)) + if (XP_IOREAD_BITS(pdata, XP_DRIVER_INT_RO, STATUS)) { netif_dbg(pdata, link, pdata->netdev, "firmware mailbox not ready for command\n"); + xgbe_phy_rx_reset(pdata); + } /* Construct the command */ XP_SET_BITS(s0, XP_DRIVER_SCRATCH_0, COMMAND, cmd); @@ -1979,6 +2005,9 @@ netif_dbg(pdata, link, pdata->netdev, "firmware mailbox command did not complete\n"); + + /* Reset on error */ + xgbe_phy_rx_reset(pdata); } static void xgbe_phy_rrc(struct xgbe_prv_data *pdata) @@ -2575,6 +2604,14 @@ if (reg & MDIO_STAT1_LSTATUS) return 1; + if (pdata->phy.autoneg == AUTONEG_ENABLE && + phy_data->port_mode == XGBE_PORT_MODE_BACKPLANE) { + if (!test_bit(XGBE_LINK_INIT, &pdata->dev_state)) { + netif_carrier_off(pdata->netdev); + *an_restart = 1; + } + } + /* No link, attempt a receiver reset cycle */ if (phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) { phy_data->rrc_count = 0; --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c @@ -123,21 +123,21 @@ "MACSec OutUnctrlHitDropRedir", }; -static const char *aq_macsec_txsc_stat_names[] = { +static const char * const aq_macsec_txsc_stat_names[] = { "MACSecTXSC%d ProtectedPkts", "MACSecTXSC%d EncryptedPkts", "MACSecTXSC%d ProtectedOctets", "MACSecTXSC%d EncryptedOctets", }; -static const char *aq_macsec_txsa_stat_names[] = { +static const char * const aq_macsec_txsa_stat_names[] = { "MACSecTXSC%dSA%d HitDropRedirect", "MACSecTXSC%dSA%d Protected2Pkts", "MACSecTXSC%dSA%d ProtectedPkts", "MACSecTXSC%dSA%d EncryptedPkts", }; -static const char *aq_macsec_rxsa_stat_names[] = { +static const char * const aq_macsec_rxsa_stat_names[] = { "MACSecRXSC%dSA%d UntaggedHitPkts", "MACSecRXSC%dSA%d CtrlHitDrpRedir", "MACSecRXSC%dSA%d NotUsingSa", --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/aq_main.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/aq_main.c @@ -70,8 +70,10 @@ goto err_exit; err = aq_nic_start(aq_nic); - if (err < 0) + if (err < 0) { + aq_nic_stop(aq_nic); goto err_exit; + } err_exit: if (err < 0) --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c @@ -782,7 +782,7 @@ int err = 0; if (count > (HW_ATL_A0_MAC_MAX - HW_ATL_A0_MAC_MIN)) { - err = EBADRQC; + err = -EBADRQC; goto err_exit; } for (self->aq_nic_cfg->mc_list_count = 0U; --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c @@ -1536,7 +1536,7 @@ return aq_hw_err_from_flags(self); } -/** +/* * @brief Set VLAN filter table * @details Configure VLAN filter table to accept (and assign the queue) traffic * for the particular vlan ids. --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-2.0-only -/* - * aQuantia Corporation Network Driver - * Copyright (C) 2014-2019 aQuantia Corporation. All rights reserved +/* Atlantic Network Driver + * + * Copyright (C) 2014-2019 aQuantia Corporation + * Copyright (C) 2019-2020 Marvell International Ltd. */ /* File hw_atl_llh.c: Definitions of bitfield and register access functions for @@ -1724,6 +1725,16 @@ return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_MDIO); } +u32 hw_atl_sem_reset1_get(struct aq_hw_s *self) +{ + return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_RESET1); +} + +u32 hw_atl_sem_reset2_get(struct aq_hw_s *self) +{ + return hw_atl_reg_glb_cpu_sem_get(self, HW_ATL_FW_SM_RESET2); +} + u32 hw_atl_scrpad_get(struct aq_hw_s *aq_hw, u32 scratch_scp) { return aq_hw_read_reg(aq_hw, --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h @@ -1,7 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* - * aQuantia Corporation Network Driver - * Copyright (C) 2014-2019 aQuantia Corporation. All rights reserved +/* Atlantic Network Driver + * + * Copyright (C) 2014-2019 aQuantia Corporation + * Copyright (C) 2019-2020 Marvell International Ltd. */ /* File hw_atl_llh.h: Declarations of bitfield and register access functions for @@ -838,6 +839,9 @@ /* get global microprocessor mdio semaphore */ u32 hw_atl_sem_mdio_get(struct aq_hw_s *self); +u32 hw_atl_sem_reset1_get(struct aq_hw_s *self); +u32 hw_atl_sem_reset2_get(struct aq_hw_s *self); + /* get global microprocessor scratch pad register */ u32 hw_atl_scrpad_get(struct aq_hw_s *aq_hw, u32 scratch_scp); --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h @@ -1,7 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* - * aQuantia Corporation Network Driver - * Copyright (C) 2014-2019 aQuantia Corporation. All rights reserved +/* Atlantic Network Driver + * + * Copyright (C) 2014-2019 aQuantia Corporation + * Copyright (C) 2019-2020 Marvell International Ltd. */ /* File hw_atl_llh_internal.h: Preprocessor definitions @@ -2837,7 +2838,11 @@ /* Default value of bitfield MDIO Address [F:0] */ #define HW_ATL_MDIO_ADDRESS_DEFAULT 0x0 +#define HW_ATL_MIF_RESET_TIMEOUT_ADR 0x00000348 + #define HW_ATL_FW_SM_MDIO 0x0U #define HW_ATL_FW_SM_RAM 0x2U +#define HW_ATL_FW_SM_RESET1 0x3U +#define HW_ATL_FW_SM_RESET2 0x4U #endif /* HW_ATL_LLH_INTERNAL_H */ --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c @@ -46,6 +46,7 @@ #define HW_ATL_FW_VER_1X 0x01050006U #define HW_ATL_FW_VER_2X 0x02000000U #define HW_ATL_FW_VER_3X 0x03000000U +#define HW_ATL_FW_VER_4X 0x04000000U #define FORCE_FLASHLESS 0 @@ -72,14 +73,13 @@ self->fw_ver_actual = hw_atl_utils_get_fw_version(self); - if (hw_atl_utils_ver_match(HW_ATL_FW_VER_1X, - self->fw_ver_actual) == 0) { + if (hw_atl_utils_ver_match(HW_ATL_FW_VER_1X, self->fw_ver_actual)) { *fw_ops = &aq_fw_1x_ops; - } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_2X, - self->fw_ver_actual) == 0) { + } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_2X, self->fw_ver_actual)) { *fw_ops = &aq_fw_2x_ops; - } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_3X, - self->fw_ver_actual) == 0) { + } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_3X, self->fw_ver_actual)) { + *fw_ops = &aq_fw_2x_ops; + } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_4X, self->fw_ver_actual)) { *fw_ops = &aq_fw_2x_ops; } else { aq_pr_err("Bad FW version detected: %x\n", @@ -239,6 +239,7 @@ int hw_atl_utils_soft_reset(struct aq_hw_s *self) { + int ver = hw_atl_utils_get_fw_version(self); u32 boot_exit_code = 0; u32 val; int k; @@ -259,14 +260,12 @@ self->rbl_enabled = (boot_exit_code != 0); - /* FW 1.x may bootup in an invalid POWER state (WOL feature). - * We should work around this by forcing its state back to DEINIT - */ - if (!hw_atl_utils_ver_match(HW_ATL_FW_VER_1X, - aq_hw_read_reg(self, - HW_ATL_MPI_FW_VERSION))) { + if (hw_atl_utils_ver_match(HW_ATL_FW_VER_1X, ver)) { int err = 0; + /* FW 1.x may bootup in an invalid POWER state (WOL feature). + * We should work around this by forcing its state back to DEINIT + */ hw_atl_utils_mpi_set_state(self, MPI_DEINIT); err = readx_poll_timeout_atomic(hw_atl_utils_mpi_get_state, self, val, @@ -275,6 +274,27 @@ 10, 10000U); if (err) return err; + } else if (hw_atl_utils_ver_match(HW_ATL_FW_VER_4X, ver)) { + u64 sem_timeout = aq_hw_read_reg(self, HW_ATL_MIF_RESET_TIMEOUT_ADR); + + /* Acquire 2 semaphores before issuing reset for FW 4.x */ + if (sem_timeout > 3000) + sem_timeout = 3000; + sem_timeout = sem_timeout * 1000; + + if (sem_timeout != 0) { + int err; + + err = readx_poll_timeout_atomic(hw_atl_sem_reset1_get, self, val, + val == 1U, 1U, sem_timeout); + if (err) + aq_pr_err("reset sema1 timeout"); + + err = readx_poll_timeout_atomic(hw_atl_sem_reset2_get, self, val, + val == 1U, 1U, sem_timeout); + if (err) + aq_pr_err("reset sema2 timeout"); + } } if (self->rbl_enabled) @@ -434,20 +454,20 @@ p, cnt, MCP_AREA_SETTINGS); } -int hw_atl_utils_ver_match(u32 ver_expected, u32 ver_actual) +bool hw_atl_utils_ver_match(u32 ver_expected, u32 ver_actual) { const u32 dw_major_mask = 0xff000000U; const u32 dw_minor_mask = 0x00ffffffU; - int err = 0; + bool ver_match; - err = (dw_major_mask & (ver_expected ^ ver_actual)) ? -EOPNOTSUPP : 0; - if (err < 0) + ver_match = (dw_major_mask & (ver_expected ^ ver_actual)) ? false : true; + if (!ver_match) goto err_exit; - err = ((dw_minor_mask & ver_expected) > (dw_minor_mask & ver_actual)) ? - -EOPNOTSUPP : 0; + ver_match = ((dw_minor_mask & ver_expected) > (dw_minor_mask & ver_actual)) ? + false : true; err_exit: - return err; + return ver_match; } static int hw_atl_utils_init_ucp(struct aq_hw_s *self, --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.h @@ -635,7 +635,7 @@ int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self, struct hw_atl_utils_fw_rpc **rpc); -int hw_atl_utils_ver_match(u32 ver_expected, u32 ver_actual); +bool hw_atl_utils_ver_match(u32 ver_expected, u32 ver_actual); extern const struct aq_fw_ops aq_fw_1x_ops; extern const struct aq_fw_ops aq_fw_2x_ops; --- linux-5.8.0.orig/drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2_utils.c +++ linux-5.8.0/drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2_utils.c @@ -36,8 +36,7 @@ self->fw_ver_actual = hw_atl2_utils_get_fw_version(self); - if (hw_atl_utils_ver_match(HW_ATL2_FW_VER_1X, - self->fw_ver_actual) == 0) { + if (hw_atl_utils_ver_match(HW_ATL2_FW_VER_1X, self->fw_ver_actual)) { *fw_ops = &aq_a2_fw_ops; } else { aq_pr_err("Bad FW version detected: %x, but continue\n", --- linux-5.8.0.orig/drivers/net/ethernet/arc/emac_mdio.c +++ linux-5.8.0/drivers/net/ethernet/arc/emac_mdio.c @@ -153,6 +153,7 @@ if (IS_ERR(data->reset_gpio)) { error = PTR_ERR(data->reset_gpio); dev_err(priv->dev, "Failed to request gpio: %d\n", error); + mdiobus_free(bus); return error; } --- linux-5.8.0.orig/drivers/net/ethernet/atheros/ag71xx.c +++ linux-5.8.0/drivers/net/ethernet/atheros/ag71xx.c @@ -223,8 +223,6 @@ #define AG71XX_REG_RX_SM 0x01b0 #define AG71XX_REG_TX_SM 0x01b4 -#define ETH_SWITCH_HEADER_LEN 2 - #define AG71XX_DEFAULT_MSG_ENABLE \ (NETIF_MSG_DRV \ | NETIF_MSG_PROBE \ @@ -787,7 +785,7 @@ static unsigned int ag71xx_max_frame_len(unsigned int mtu) { - return ETH_SWITCH_HEADER_LEN + ETH_HLEN + VLAN_HLEN + mtu + ETH_FCS_LEN; + return ETH_HLEN + VLAN_HLEN + mtu + ETH_FCS_LEN; } static void ag71xx_hw_set_macaddr(struct ag71xx *ag, unsigned char *mac) --- linux-5.8.0.orig/drivers/net/ethernet/atheros/alx/ethtool.c +++ linux-5.8.0/drivers/net/ethernet/atheros/alx/ethtool.c @@ -46,6 +46,8 @@ #include "reg.h" #include "hw.h" +extern const bool enable_wol; + /* The order of these strings must match the order of the fields in * struct alx_hw_stats * See hw.h @@ -310,11 +312,50 @@ } } +static void alx_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct alx_priv *alx = netdev_priv(netdev); + struct alx_hw *hw = &alx->hw; + + if (!enable_wol) + return; + + wol->supported = WAKE_MAGIC | WAKE_PHY; + wol->wolopts = 0; + + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) + wol->wolopts |= WAKE_MAGIC; + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) + wol->wolopts |= WAKE_PHY; +} + +static int alx_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct alx_priv *alx = netdev_priv(netdev); + struct alx_hw *hw = &alx->hw; + + if (!enable_wol || (wol->wolopts & ~(WAKE_MAGIC | WAKE_PHY))) + return -EOPNOTSUPP; + + hw->sleep_ctrl = 0; + + if (wol->wolopts & WAKE_MAGIC) + hw->sleep_ctrl |= ALX_SLEEP_WOL_MAGIC; + if (wol->wolopts & WAKE_PHY) + hw->sleep_ctrl |= ALX_SLEEP_WOL_PHY; + + device_set_wakeup_enable(&alx->hw.pdev->dev, hw->sleep_ctrl); + + return 0; +} + const struct ethtool_ops alx_ethtool_ops = { .get_pauseparam = alx_get_pauseparam, .set_pauseparam = alx_set_pauseparam, .get_msglevel = alx_get_msglevel, .set_msglevel = alx_set_msglevel, + .get_wol = alx_get_wol, + .set_wol = alx_set_wol, .get_link = ethtool_op_get_link, .get_strings = alx_get_strings, .get_sset_count = alx_get_sset_count, --- linux-5.8.0.orig/drivers/net/ethernet/atheros/alx/hw.c +++ linux-5.8.0/drivers/net/ethernet/atheros/alx/hw.c @@ -332,6 +332,16 @@ alx_write_mem32(hw, ALX_STAD1, val); } +static void alx_enable_osc(struct alx_hw *hw) +{ + u32 val; + + /* rising edge */ + val = alx_read_mem32(hw, ALX_MISC); + alx_write_mem32(hw, ALX_MISC, val & ~ALX_MISC_INTNLOSC_OPEN); + alx_write_mem32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); +} + static void alx_reset_osc(struct alx_hw *hw, u8 rev) { u32 val, val2; @@ -774,7 +784,6 @@ return err; } - void alx_post_phy_link(struct alx_hw *hw) { u16 phy_val, len, agc; @@ -848,6 +857,65 @@ } } +/* NOTE: + * 1. phy link must be established before calling this function + * 2. wol option (pattern,magic,link,etc.) is configed before call it. + */ +int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex) +{ + u32 master, mac, phy, val; + int err = 0; + + master = alx_read_mem32(hw, ALX_MASTER); + master &= ~ALX_MASTER_PCLKSEL_SRDS; + mac = hw->rx_ctrl; + /* 10/100 half */ + ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_10_100); + mac &= ~(ALX_MAC_CTRL_FULLD | ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN); + + phy = alx_read_mem32(hw, ALX_PHY_CTRL); + phy &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_CLS); + phy |= ALX_PHY_CTRL_RST_ANALOG | ALX_PHY_CTRL_HIB_PULSE | + ALX_PHY_CTRL_HIB_EN; + + /* without any activity */ + if (!(hw->sleep_ctrl & ALX_SLEEP_ACTIVE)) { + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + if (err) + return err; + phy |= ALX_PHY_CTRL_IDDQ | ALX_PHY_CTRL_POWER_DOWN; + } else { + if (hw->sleep_ctrl & (ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_CIFS)) + mac |= ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_BRD_EN; + if (hw->sleep_ctrl & ALX_SLEEP_CIFS) + mac |= ALX_MAC_CTRL_TX_EN; + if (duplex == DUPLEX_FULL) + mac |= ALX_MAC_CTRL_FULLD; + if (speed == SPEED_1000) + ALX_SET_FIELD(mac, ALX_MAC_CTRL_SPEED, + ALX_MAC_CTRL_SPEED_1000); + phy |= ALX_PHY_CTRL_DSPRST_OUT; + err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_S3DIG10, + ALX_MIIEXT_S3DIG10_SL); + if (err) + return err; + } + + alx_enable_osc(hw); + hw->rx_ctrl = mac; + alx_write_mem32(hw, ALX_MASTER, master); + alx_write_mem32(hw, ALX_MAC_CTRL, mac); + alx_write_mem32(hw, ALX_PHY_CTRL, phy); + + /* set val of PDLL D3PLLOFF */ + val = alx_read_mem32(hw, ALX_PDLL_TRNS1); + val |= ALX_PDLL_TRNS1_D3PLLOFF_EN; + alx_write_mem32(hw, ALX_PDLL_TRNS1, val); + + return 0; +} + bool alx_phy_configured(struct alx_hw *hw) { u32 cfg, hw_cfg; @@ -920,6 +988,26 @@ return alx_read_phy_reg(hw, ALX_MII_ISR, &isr); } +int alx_config_wol(struct alx_hw *hw) +{ + u32 wol = 0; + int err = 0; + + /* turn on magic packet event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) + wol |= ALX_WOL0_MAGIC_EN | ALX_WOL0_PME_MAGIC_EN; + + /* turn on link up event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) { + wol |= ALX_WOL0_LINK_EN | ALX_WOL0_PME_LINK; + /* only link up can wake up */ + err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP); + } + alx_write_mem32(hw, ALX_WOL0, wol); + + return err; +} + void alx_disable_rss(struct alx_hw *hw) { u32 ctrl = alx_read_mem32(hw, ALX_RXQ0); @@ -1044,6 +1132,70 @@ alx_post_write(hw); } +int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex) +{ + int i, err; + u16 lpa; + + err = alx_read_phy_link(hw); + if (err) + return err; + + if (hw->link_speed == SPEED_UNKNOWN) { + *speed = SPEED_UNKNOWN; + *duplex = DUPLEX_UNKNOWN; + return 0; + } + + err = alx_read_phy_reg(hw, MII_LPA, &lpa); + if (err) + return err; + + if (!(lpa & LPA_LPACK)) { + *speed = hw->link_speed; + return 0; + } + + if (lpa & LPA_10FULL) { + *speed = SPEED_10; + *duplex = DUPLEX_FULL; + } else if (lpa & LPA_10HALF) { + *speed = SPEED_10; + *duplex = DUPLEX_HALF; + } else if (lpa & LPA_100FULL) { + *speed = SPEED_100; + *duplex = DUPLEX_FULL; + } else { + *speed = SPEED_100; + *duplex = DUPLEX_HALF; + } + + if (*speed == hw->link_speed && *duplex == hw->duplex) + return 0; + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + if (err) + return err; + err = alx_setup_speed_duplex(hw, alx_speed_to_ethadv(*speed, *duplex) | + ADVERTISED_Autoneg, ALX_FC_ANEG | + ALX_FC_RX | ALX_FC_TX); + if (err) + return err; + + /* wait for linkup */ + for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) { + msleep(100); + + err = alx_read_phy_link(hw); + if (err < 0) + return err; + if (hw->link_speed != SPEED_UNKNOWN) + break; + } + if (i == ALX_MAX_SETUP_LNK_CYCLE) + return -ETIMEDOUT; + + return 0; +} bool alx_get_phy_info(struct alx_hw *hw) { --- linux-5.8.0.orig/drivers/net/ethernet/atheros/alx/hw.h +++ linux-5.8.0/drivers/net/ethernet/atheros/alx/hw.h @@ -487,6 +487,8 @@ u8 flowctrl; u32 adv_cfg; + u32 sleep_ctrl; + spinlock_t mdio_lock; struct mdio_if_info mdio; u16 phy_id[2]; @@ -549,12 +551,14 @@ void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en); int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl); void alx_post_phy_link(struct alx_hw *hw); +int alx_pre_suspend(struct alx_hw *hw, int speed, u8 duplex); int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data); int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data); int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata); int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data); int alx_read_phy_link(struct alx_hw *hw); int alx_clear_phy_intr(struct alx_hw *hw); +int alx_config_wol(struct alx_hw *hw); void alx_cfg_mac_flowcontrol(struct alx_hw *hw, u8 fc); void alx_start_mac(struct alx_hw *hw); int alx_reset_mac(struct alx_hw *hw); @@ -563,6 +567,7 @@ void alx_configure_basic(struct alx_hw *hw); void alx_mask_msix(struct alx_hw *hw, int index, bool mask); void alx_disable_rss(struct alx_hw *hw); +int alx_select_powersaving_speed(struct alx_hw *hw, int *speed, u8 *duplex); bool alx_get_phy_info(struct alx_hw *hw); void alx_update_hw_stats(struct alx_hw *hw); --- linux-5.8.0.orig/drivers/net/ethernet/atheros/alx/main.c +++ linux-5.8.0/drivers/net/ethernet/atheros/alx/main.c @@ -51,6 +51,11 @@ static const char alx_drv_name[] = "alx"; +/* disable WoL by default */ +bool enable_wol; +module_param(enable_wol, bool, 0644); +MODULE_PARM_DESC(enable_wol, "Enable Wake on Lan feature"); + static void alx_free_txbuf(struct alx_tx_queue *txq, int entry) { struct alx_buffer *txb = &txq->bufs[entry]; @@ -1069,6 +1074,7 @@ alx->dev->max_mtu = ALX_MAX_FRAME_LEN(ALX_MAX_FRAME_SIZE); alx->tx_ringsz = 256; alx->rx_ringsz = 512; + hw->sleep_ctrl = ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_WOL_PHY; hw->imt = 200; alx->int_mask = ALX_ISR_MISC; hw->dma_chnl = hw->max_dma_chnl; @@ -1347,6 +1353,66 @@ return 0; } +static int __alx_shutdown(struct pci_dev *pdev, bool *wol_en) +{ + struct alx_priv *alx = pci_get_drvdata(pdev); + struct net_device *netdev = alx->dev; + struct alx_hw *hw = &alx->hw; + int err, speed; + u8 duplex; + + netif_device_detach(netdev); + + if (netif_running(netdev)) + __alx_stop(alx); + +#ifdef CONFIG_PM_SLEEP + err = pci_save_state(pdev); + if (err) + return err; +#endif + + err = alx_select_powersaving_speed(hw, &speed, &duplex); + if (err) + return err; + err = alx_clear_phy_intr(hw); + if (err) + return err; + err = alx_pre_suspend(hw, speed, duplex); + if (err) + return err; + err = alx_config_wol(hw); + if (err) + return err; + + *wol_en = false; + if (hw->sleep_ctrl & ALX_SLEEP_ACTIVE) { + netif_info(alx, wol, netdev, + "wol: ctrl=%X, speed=%X\n", + hw->sleep_ctrl, speed); + device_set_wakeup_enable(&pdev->dev, true); + *wol_en = true; + } + + pci_disable_device(pdev); + + return 0; +} + +static void alx_shutdown(struct pci_dev *pdev) +{ + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (!err) { + pci_wake_from_d3(pdev, wol_en); + pci_set_power_state(pdev, PCI_D3hot); + } else { + dev_err(&pdev->dev, "shutdown fail %d\n", err); + } +} + static void alx_link_check(struct work_struct *work) { struct alx_priv *alx; @@ -1837,6 +1903,8 @@ goto out_unmap; } + device_set_wakeup_enable(&pdev->dev, hw->sleep_ctrl); + netdev_info(netdev, "Qualcomm Atheros AR816x/AR817x Ethernet [%pM]\n", netdev->dev_addr); @@ -1875,41 +1943,95 @@ #ifdef CONFIG_PM_SLEEP static int alx_suspend(struct device *dev) { - struct alx_priv *alx = dev_get_drvdata(dev); + struct pci_dev *pdev = to_pci_dev(dev); + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (err) { + dev_err(&pdev->dev, "shutdown fail in suspend %d\n", err); + return err; + } + + if (wol_en) { + pci_prepare_to_sleep(pdev); + } else { + pci_wake_from_d3(pdev, false); + pci_set_power_state(pdev, PCI_D3hot); + } - if (!netif_running(alx->dev)) - return 0; - netif_device_detach(alx->dev); - __alx_stop(alx); return 0; } static int alx_resume(struct device *dev) { - struct alx_priv *alx = dev_get_drvdata(dev); + struct pci_dev *pdev = to_pci_dev(dev); + struct alx_priv *alx = pci_get_drvdata(pdev); + struct net_device *netdev = alx->dev; struct alx_hw *hw = &alx->hw; int err; + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + pci_save_state(pdev); + + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + hw->link_speed = SPEED_UNKNOWN; + alx->int_mask = ALX_ISR_MISC; + + alx_reset_pcie(hw); alx_reset_phy(hw); - if (!netif_running(alx->dev)) - return 0; - netif_device_attach(alx->dev); + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + pci_save_state(pdev); - rtnl_lock(); - err = __alx_open(alx, true); - rtnl_unlock(); + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + hw->link_speed = SPEED_UNKNOWN; + alx->int_mask = ALX_ISR_MISC; + + alx_reset_pcie(hw); + alx_reset_phy(hw); + + err = alx_reset_mac(hw); + if (err) { + netif_err(alx, hw, alx->dev, + "resume:reset_mac fail %d\n", err); + return -EIO; + } + + err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); + if (err) { + netif_err(alx, hw, alx->dev, + "resume:setup_speed_duplex fail %d\n", err); + return -EIO; + } + + if (netif_running(netdev)) { + rtnl_lock(); + err = __alx_open(alx, true); + rtnl_unlock(); + if (err) + return err; + } + + netif_device_attach(netdev); return err; } +#endif +#ifdef CONFIG_PM_SLEEP static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); #define ALX_PM_OPS (&alx_pm_ops) #else #define ALX_PM_OPS NULL #endif - static pci_ers_result_t alx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state) { @@ -1952,6 +2074,8 @@ } pci_set_master(pdev); + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); alx_reset_pcie(hw); if (!alx_reset_mac(hw)) @@ -2006,6 +2130,7 @@ .id_table = alx_pci_tbl, .probe = alx_probe, .remove = alx_remove, + .shutdown = alx_shutdown, .err_handler = &alx_err_handlers, .driver.pm = ALX_PM_OPS, }; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/Kconfig +++ linux-5.8.0/drivers/net/ethernet/broadcom/Kconfig @@ -88,6 +88,7 @@ config CNIC tristate "QLogic CNIC support" depends on PCI && (IPV6 || IPV6=n) + depends on MMU select BNX2 select UIO help --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/b44.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/b44.c @@ -2383,7 +2383,8 @@ goto err_out_free_dev; } - if (dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30))) { + err = dma_set_mask_and_coherent(sdev->dma_dev, DMA_BIT_MASK(30)); + if (err) { dev_err(sdev->dev, "Required 30BIT DMA mask unsupported by the system\n"); goto err_out_powerdown; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/bcmsysport.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/bcmsysport.c @@ -2462,8 +2462,10 @@ priv->tx_rings = devm_kcalloc(&pdev->dev, txq, sizeof(struct bcm_sysport_tx_ring), GFP_KERNEL); - if (!priv->tx_rings) - return -ENOMEM; + if (!priv->tx_rings) { + ret = -ENOMEM; + goto err_free_netdev; + } priv->is_lite = params->is_lite; priv->num_rx_desc_words = params->num_rx_desc_words; @@ -2526,6 +2528,7 @@ NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; dev->hw_features |= dev->features; dev->vlan_features |= dev->features; + dev->max_mtu = UMAC_MAX_MTU_SIZE; /* Request the WOL interrupt and advertise suspend if available */ priv->wol_irq_disabled = 1; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1141,6 +1141,9 @@ static void bnxt_queue_fw_reset_work(struct bnxt *bp, unsigned long delay) { + if (!(test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))) + return; + if (BNXT_PF(bp)) queue_delayed_work(bnxt_pf_wq, &bp->fw_reset_task, delay); else @@ -1155,14 +1158,6 @@ schedule_work(&bp->sp_task); } -static void bnxt_cancel_sp_work(struct bnxt *bp) -{ - if (BNXT_PF(bp)) - flush_workqueue(bnxt_pf_wq); - else - cancel_work_sync(&bp->sp_task); -} - static void bnxt_sched_reset(struct bnxt *bp, struct bnxt_rx_ring_info *rxr) { if (!rxr->bnapi->in_reset) { @@ -4193,7 +4188,8 @@ u32 bar_offset = BNXT_GRCPF_REG_CHIMP_COMM; u16 dst = BNXT_HWRM_CHNL_CHIMP; - if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state)) + if (BNXT_NO_FW_ACCESS(bp) && + le16_to_cpu(req->req_type) != HWRM_FUNC_RESET) return -EBUSY; if (msg_len > BNXT_HWRM_MAX_REQ_LEN) { @@ -5525,7 +5521,7 @@ struct hwrm_ring_free_output *resp = bp->hwrm_cmd_resp_addr; u16 error_code; - if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state)) + if (BNXT_NO_FW_ACCESS(bp)) return 0; bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_RING_FREE, cmpl_ring_id, -1); @@ -6499,8 +6495,10 @@ ctx->tqm_fp_rings_count = resp->tqm_fp_rings_count; if (!ctx->tqm_fp_rings_count) ctx->tqm_fp_rings_count = bp->max_q; + else if (ctx->tqm_fp_rings_count > BNXT_MAX_TQM_FP_RINGS) + ctx->tqm_fp_rings_count = BNXT_MAX_TQM_FP_RINGS; - tqm_rings = ctx->tqm_fp_rings_count + 1; + tqm_rings = ctx->tqm_fp_rings_count + BNXT_MAX_TQM_SP_RINGS; ctx_pg = kcalloc(tqm_rings, sizeof(*ctx_pg), GFP_KERNEL); if (!ctx_pg) { kfree(ctx); @@ -6634,7 +6632,8 @@ pg_attr = &req.tqm_sp_pg_size_tqm_sp_lvl, pg_dir = &req.tqm_sp_page_dir, ena = FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_SP; - i < 9; i++, num_entries++, pg_attr++, pg_dir++, ena <<= 1) { + i < BNXT_MAX_TQM_RINGS; + i++, num_entries++, pg_attr++, pg_dir++, ena <<= 1) { if (!(enables & ena)) continue; @@ -7497,7 +7496,7 @@ if (set_tpa) tpa_flags = bp->flags & BNXT_FLAG_TPA; - else if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state)) + else if (BNXT_NO_FW_ACCESS(bp)) return 0; for (i = 0; i < bp->nr_vnics; i++) { rc = bnxt_hwrm_vnic_set_tpa(bp, i, tpa_flags); @@ -7973,10 +7972,18 @@ bp->irq_tbl[0].handler = bnxt_inta; } +static int bnxt_init_int_mode(struct bnxt *bp); + static int bnxt_setup_int_mode(struct bnxt *bp) { int rc; + if (!bp->irq_tbl) { + rc = bnxt_init_int_mode(bp); + if (rc || !bp->irq_tbl) + return rc ?: -ENODEV; + } + if (bp->flags & BNXT_FLAG_USING_MSIX) bnxt_setup_msix(bp); else @@ -8161,7 +8168,7 @@ static int bnxt_init_int_mode(struct bnxt *bp) { - int rc = 0; + int rc = -ENODEV; if (bp->flags & BNXT_FLAG_MSIX_CAP) rc = bnxt_init_msix(bp); @@ -8395,9 +8402,10 @@ txr->dev_state = BNXT_DEV_STATE_CLOSING; } } + /* Drop carrier first to prevent TX timeout */ + netif_carrier_off(bp->dev); /* Stop all TX queues */ netif_tx_disable(bp->dev); - netif_carrier_off(bp->dev); } void bnxt_tx_enable(struct bnxt *bp) @@ -8423,6 +8431,11 @@ u16 fec; netif_carrier_on(bp->dev); + speed = bnxt_fw_to_ethtool_speed(bp->link_info.link_speed); + if (speed == SPEED_UNKNOWN) { + netdev_info(bp->dev, "NIC Link is Up, speed unknown\n"); + return; + } if (bp->link_info.duplex == BNXT_LINK_DUPLEX_FULL) duplex = "full"; else @@ -8435,7 +8448,6 @@ flow_ctrl = "ON - receive"; else flow_ctrl = "none"; - speed = bnxt_fw_to_ethtool_speed(bp->link_info.link_speed); netdev_info(bp->dev, "NIC Link is Up, %u Mbps %s duplex, Flow control: %s\n", speed, duplex, flow_ctrl); if (bp->flags & BNXT_FLAG_EEE_CAP) @@ -8800,7 +8812,8 @@ { struct hwrm_func_drv_if_change_output *resp = bp->hwrm_cmd_resp_addr; struct hwrm_func_drv_if_change_input req = {0}; - bool resc_reinit = false, fw_reset = false; + bool fw_reset = !bp->irq_tbl; + bool resc_reinit = false; u32 flags = 0; int rc; @@ -8828,6 +8841,7 @@ if (test_bit(BNXT_STATE_IN_FW_RESET, &bp->state) && !fw_reset) { netdev_err(bp->dev, "RESET_DONE not set during FW reset.\n"); + set_bit(BNXT_STATE_ABORT_ERR, &bp->state); return -ENODEV; } if (resc_reinit || fw_reset) { @@ -8987,16 +9001,17 @@ struct hwrm_temp_monitor_query_input req = {0}; struct hwrm_temp_monitor_query_output *resp; struct bnxt *bp = dev_get_drvdata(dev); - u32 temp = 0; + u32 len = 0; + int rc; resp = bp->hwrm_cmd_resp_addr; bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_TEMP_MONITOR_QUERY, -1, -1); mutex_lock(&bp->hwrm_cmd_lock); - if (!_hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT)) - temp = resp->temp * 1000; /* display millidegree */ + rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); + if (!rc) + len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */ mutex_unlock(&bp->hwrm_cmd_lock); - - return sprintf(buf, "%u\n", temp); + return rc ?: len; } static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0); @@ -9016,7 +9031,16 @@ static void bnxt_hwmon_open(struct bnxt *bp) { + struct hwrm_temp_monitor_query_input req = {0}; struct pci_dev *pdev = bp->pdev; + int rc; + + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_TEMP_MONITOR_QUERY, -1, -1); + rc = hwrm_send_message_silent(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); + if (rc == -EACCES || rc == -EOPNOTSUPP) { + bnxt_hwmon_close(bp); + return; + } if (bp->hwmon_dev) return; @@ -9178,15 +9202,15 @@ } } - bnxt_enable_napi(bp); - bnxt_debug_dev_init(bp); - rc = bnxt_init_nic(bp, irq_re_init); if (rc) { netdev_err(bp->dev, "bnxt_init_nic err: %x\n", rc); - goto open_err; + goto open_err_irq; } + bnxt_enable_napi(bp); + bnxt_debug_dev_init(bp); + if (link_re_init) { mutex_lock(&bp->link_lock); rc = bnxt_update_phy_setting(bp); @@ -9217,10 +9241,6 @@ bnxt_vf_reps_open(bp); return 0; -open_err: - bnxt_debug_dev_exit(bp); - bnxt_disable_napi(bp); - open_err_irq: bnxt_del_napi(bp); @@ -9236,7 +9256,10 @@ { int rc = 0; - rc = __bnxt_open_nic(bp, irq_re_init, link_re_init); + if (test_bit(BNXT_STATE_ABORT_ERR, &bp->state)) + rc = -EIO; + if (!rc) + rc = __bnxt_open_nic(bp, irq_re_init, link_re_init); if (rc) { netdev_err(bp->dev, "nic open fail (rc: %x)\n", rc); dev_close(bp->dev); @@ -10932,7 +10955,8 @@ if (dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)) != 0 && dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)) != 0) { dev_err(&pdev->dev, "System does not support DMA, aborting\n"); - goto init_err_disable; + rc = -EIO; + goto init_err_release; } pci_set_master(pdev); @@ -11494,15 +11518,19 @@ if (BNXT_PF(bp)) bnxt_sriov_disable(bp); - bnxt_dl_fw_reporters_destroy(bp, true); if (BNXT_PF(bp)) devlink_port_type_clear(&bp->dl_port); pci_disable_pcie_error_reporting(pdev); unregister_netdev(dev); + clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state); + /* Flush any pending tasks */ + cancel_work_sync(&bp->sp_task); + cancel_delayed_work_sync(&bp->fw_reset_task); + bp->sp_event = 0; + + bnxt_dl_fw_reporters_destroy(bp, true); bnxt_dl_unregister(bp); bnxt_shutdown_tc(bp); - bnxt_cancel_sp_work(bp); - bp->sp_event = 0; bnxt_clear_int_mode(bp); bnxt_hwrm_func_drv_unrgtr(bp); @@ -11801,7 +11829,7 @@ static void bnxt_vpd_read_info(struct bnxt *bp) { struct pci_dev *pdev = bp->pdev; - int i, len, pos, ro_size; + int i, len, pos, ro_size, size; ssize_t vpd_size; u8 *vpd_data; @@ -11836,7 +11864,8 @@ if (len + pos > vpd_size) goto read_sn; - strlcpy(bp->board_partno, &vpd_data[pos], min(len, BNXT_VPD_FLD_LEN)); + size = min(len, BNXT_VPD_FLD_LEN - 1); + memcpy(bp->board_partno, &vpd_data[pos], size); read_sn: pos = pci_vpd_find_info_keyword(vpd_data, i, ro_size, @@ -11849,7 +11878,8 @@ if (len + pos > vpd_size) goto exit; - strlcpy(bp->board_serialno, &vpd_data[pos], min(len, BNXT_VPD_FLD_LEN)); + size = min(len, BNXT_VPD_FLD_LEN - 1); + memcpy(bp->board_serialno, &vpd_data[pos], size); exit: kfree(vpd_data); } @@ -12044,6 +12074,7 @@ create_singlethread_workqueue("bnxt_pf_wq"); if (!bnxt_pf_wq) { dev_err(&pdev->dev, "Unable to create workqueue.\n"); + rc = -ENOMEM; goto init_err_pci_clean; } } @@ -12065,6 +12096,7 @@ (long)pci_resource_start(pdev, 0), dev->dev_addr); pcie_print_link_status(pdev); + pci_save_state(pdev); return 0; init_err_cleanup: @@ -12222,6 +12254,9 @@ return PCI_ERS_RESULT_DISCONNECT; } + if (state == pci_channel_io_frozen) + set_bit(BNXT_STATE_PCI_CHANNEL_IO_FROZEN, &bp->state); + if (netif_running(netdev)) bnxt_close(netdev); @@ -12246,10 +12281,10 @@ */ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) { + pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT; struct net_device *netdev = pci_get_drvdata(pdev); struct bnxt *bp = netdev_priv(netdev); - int err = 0; - pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT; + int err = 0, off; netdev_info(bp->dev, "PCI Slot Reset\n"); @@ -12260,24 +12295,26 @@ "Cannot re-enable PCI device after reset.\n"); } else { pci_set_master(pdev); + /* Upon fatal error, our device internal logic that latches to + * BAR value is getting reset and will restore only upon + * rewritting the BARs. + * + * As pci_restore_state() does not re-write the BARs if the + * value is same as saved value earlier, driver needs to + * write the BARs to 0 to force restore, in case of fatal error. + */ + if (test_and_clear_bit(BNXT_STATE_PCI_CHANNEL_IO_FROZEN, + &bp->state)) { + for (off = PCI_BASE_ADDRESS_0; + off <= PCI_BASE_ADDRESS_5; off += 4) + pci_write_config_dword(bp->pdev, off, 0); + } + pci_restore_state(pdev); + pci_save_state(pdev); err = bnxt_hwrm_func_reset(bp); - if (!err) { - err = bnxt_hwrm_func_qcaps(bp); - if (!err && netif_running(netdev)) - err = bnxt_open(netdev); - } - bnxt_ulp_start(bp, err); - if (!err) { - bnxt_reenable_sriov(bp); + if (!err) result = PCI_ERS_RESULT_RECOVERED; - } - } - - if (result != PCI_ERS_RESULT_RECOVERED) { - if (netif_running(netdev)) - dev_close(netdev); - pci_disable_device(pdev); } rtnl_unlock(); @@ -12295,10 +12332,21 @@ static void bnxt_io_resume(struct pci_dev *pdev) { struct net_device *netdev = pci_get_drvdata(pdev); + struct bnxt *bp = netdev_priv(netdev); + int err; + netdev_info(bp->dev, "PCI Slot Resume\n"); rtnl_lock(); - netif_device_attach(netdev); + err = bnxt_hwrm_func_qcaps(bp); + if (!err && netif_running(netdev)) + err = bnxt_open(netdev); + + bnxt_ulp_start(bp, err); + if (!err) { + bnxt_reenable_sriov(bp); + netif_device_attach(netdev); + } rtnl_unlock(); } --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ linux-5.8.0/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1341,6 +1341,11 @@ struct bnxt_ctx_pg_info **ctx_pg_tbl; }; +#define BNXT_MAX_TQM_SP_RINGS 1 +#define BNXT_MAX_TQM_FP_RINGS 8 +#define BNXT_MAX_TQM_RINGS \ + (BNXT_MAX_TQM_SP_RINGS + BNXT_MAX_TQM_FP_RINGS) + struct bnxt_ctx_mem_info { u32 qp_max_entries; u16 qp_min_qp1_entries; @@ -1379,7 +1384,7 @@ struct bnxt_ctx_pg_info stat_mem; struct bnxt_ctx_pg_info mrav_mem; struct bnxt_ctx_pg_info tim_mem; - struct bnxt_ctx_pg_info *tqm_mem[9]; + struct bnxt_ctx_pg_info *tqm_mem[BNXT_MAX_TQM_RINGS]; }; struct bnxt_fw_health { @@ -1672,6 +1677,11 @@ #define BNXT_STATE_ABORT_ERR 5 #define BNXT_STATE_FW_FATAL_COND 6 #define BNXT_STATE_DRV_REGISTERED 7 +#define BNXT_STATE_PCI_CHANNEL_IO_FROZEN 8 + +#define BNXT_NO_FW_ACCESS(bp) \ + (test_bit(BNXT_STATE_FW_FATAL_COND, &(bp)->state) || \ + pci_channel_offline((bp)->pdev)) struct bnxt_irq *irq_tbl; int total_irqs; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -494,20 +494,13 @@ static int bnxt_get_num_ring_stats(struct bnxt *bp) { int rx, tx, cmn; - bool sh = false; - - if (bp->flags & BNXT_FLAG_SHARED_RINGS) - sh = true; rx = NUM_RING_RX_HW_STATS + NUM_RING_RX_SW_STATS + bnxt_get_num_tpa_ring_stats(bp); tx = NUM_RING_TX_HW_STATS; cmn = NUM_RING_CMN_SW_STATS; - if (sh) - return (rx + tx + cmn) * bp->cp_nr_rings; - else - return rx * bp->rx_nr_rings + tx * bp->tx_nr_rings + - cmn * bp->cp_nr_rings; + return rx * bp->rx_nr_rings + tx * bp->tx_nr_rings + + cmn * bp->cp_nr_rings; } static int bnxt_get_num_stats(struct bnxt *bp) @@ -847,7 +840,7 @@ int max_tx_sch_inputs; /* Get the most up-to-date max_tx_sch_inputs. */ - if (BNXT_NEW_RM(bp)) + if (netif_running(dev) && BNXT_NEW_RM(bp)) bnxt_hwrm_func_resc_qcaps(bp, false); max_tx_sch_inputs = hw_resc->max_tx_sch_inputs; @@ -1742,9 +1735,12 @@ if (!BNXT_PHY_CFG_ABLE(bp)) return -EOPNOTSUPP; + mutex_lock(&bp->link_lock); if (epause->autoneg) { - if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) - return -EINVAL; + if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) { + rc = -EINVAL; + goto pause_exit; + } link_info->autoneg |= BNXT_AUTONEG_FLOW_CTRL; if (bp->hwrm_spec_code >= 0x10201) @@ -1765,11 +1761,11 @@ if (epause->tx_pause) link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_TX; - if (netif_running(dev)) { - mutex_lock(&bp->link_lock); + if (netif_running(dev)) rc = bnxt_hwrm_set_pause(bp); - mutex_unlock(&bp->link_lock); - } + +pause_exit: + mutex_unlock(&bp->link_lock); return rc; } @@ -2270,6 +2266,9 @@ if (rc != 0) return rc; + if (!dir_entries || !entry_length) + return -EIO; + /* Insert 2 bytes of directory info (count and size of entries) */ if (len < 2) return -EINVAL; @@ -2503,8 +2502,7 @@ struct bnxt *bp = netdev_priv(dev); struct ethtool_eee *eee = &bp->eee; struct bnxt_link_info *link_info = &bp->link_info; - u32 advertising = - _bnxt_fw_to_ethtool_adv_spds(link_info->advertising, 0); + u32 advertising; int rc = 0; if (!BNXT_PHY_CFG_ABLE(bp)) @@ -2513,19 +2511,23 @@ if (!(bp->flags & BNXT_FLAG_EEE_CAP)) return -EOPNOTSUPP; + mutex_lock(&bp->link_lock); + advertising = _bnxt_fw_to_ethtool_adv_spds(link_info->advertising, 0); if (!edata->eee_enabled) goto eee_ok; if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) { netdev_warn(dev, "EEE requires autoneg\n"); - return -EINVAL; + rc = -EINVAL; + goto eee_exit; } if (edata->tx_lpi_enabled) { if (bp->lpi_tmr_hi && (edata->tx_lpi_timer > bp->lpi_tmr_hi || edata->tx_lpi_timer < bp->lpi_tmr_lo)) { netdev_warn(dev, "Valid LPI timer range is %d and %d microsecs\n", bp->lpi_tmr_lo, bp->lpi_tmr_hi); - return -EINVAL; + rc = -EINVAL; + goto eee_exit; } else if (!bp->lpi_tmr_hi) { edata->tx_lpi_timer = eee->tx_lpi_timer; } @@ -2535,7 +2537,8 @@ } else if (edata->advertised & ~advertising) { netdev_warn(dev, "EEE advertised %x must be a subset of autoneg advertised speeds %x\n", edata->advertised, advertising); - return -EINVAL; + rc = -EINVAL; + goto eee_exit; } eee->advertised = edata->advertised; @@ -2547,6 +2550,8 @@ if (netif_running(dev)) rc = bnxt_hwrm_set_link_setting(bp, false, true); +eee_exit: + mutex_unlock(&bp->link_lock); return rc; } @@ -2681,7 +2686,7 @@ /* Read A2 portion of the EEPROM */ if (length) { start -= ETH_MODULE_SFF_8436_LEN; - rc = bnxt_read_sfp_module_eeprom_info(bp, I2C_DEV_ADDR_A2, 1, + rc = bnxt_read_sfp_module_eeprom_info(bp, I2C_DEV_ADDR_A2, 0, start, length, data); } return rc; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c @@ -222,8 +222,12 @@ int bnxt_get_ulp_stat_ctxs(struct bnxt *bp) { - if (bnxt_ulp_registered(bp->edev, BNXT_ROCE_ULP)) - return BNXT_MIN_ROCE_STAT_CTXS; + if (bnxt_ulp_registered(bp->edev, BNXT_ROCE_ULP)) { + struct bnxt_en_dev *edev = bp->edev; + + if (edev->ulp_tbl[BNXT_ROCE_ULP].msix_requested) + return BNXT_MIN_ROCE_STAT_CTXS; + } return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -1364,7 +1364,7 @@ case ETHER_FLOW: eth_mask = &cmd->fs.m_u.ether_spec; /* don't allow mask which isn't valid */ - if (VALIDATE_MASK(eth_mask->h_source) || + if (VALIDATE_MASK(eth_mask->h_dest) || VALIDATE_MASK(eth_mask->h_source) || VALIDATE_MASK(eth_mask->h_proto)) { netdev_err(dev, "rxnfc: Unsupported mask\n"); @@ -4052,8 +4052,10 @@ clk_disable_unprepare(priv->clk); err = register_netdev(dev); - if (err) + if (err) { + bcmgenet_mii_exit(dev); goto err; + } return err; --- linux-5.8.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-5.8.0/drivers/net/ethernet/broadcom/tg3.c @@ -7221,8 +7221,8 @@ static inline void tg3_reset_task_cancel(struct tg3 *tp) { - cancel_work_sync(&tp->reset_task); - tg3_flag_clear(tp, RESET_TASK_PENDING); + if (test_and_clear_bit(TG3_FLAG_RESET_TASK_PENDING, tp->tg3_flags)) + cancel_work_sync(&tp->reset_task); tg3_flag_clear(tp, TX_RECOVERY_PENDING); } @@ -11209,18 +11209,27 @@ tg3_halt(tp, RESET_KIND_SHUTDOWN, 0); err = tg3_init_hw(tp, true); - if (err) + if (err) { + tg3_full_unlock(tp); + tp->irq_sync = 0; + tg3_napi_enable(tp); + /* Clear this flag so that tg3_reset_task_cancel() will not + * call cancel_work_sync() and wait forever. + */ + tg3_flag_clear(tp, RESET_TASK_PENDING); + dev_close(tp->dev); goto out; + } tg3_netif_start(tp); -out: tg3_full_unlock(tp); if (!err) tg3_phy_start(tp); tg3_flag_clear(tp, RESET_TASK_PENDING); +out: rtnl_unlock(); } --- linux-5.8.0.orig/drivers/net/ethernet/cadence/macb_main.c +++ linux-5.8.0/drivers/net/ethernet/cadence/macb_main.c @@ -578,7 +578,7 @@ if (bp->caps & MACB_CAPS_MACB_IS_EMAC) { if (state->interface == PHY_INTERFACE_MODE_RMII) ctrl |= MACB_BIT(RM9200_RMII); - } else { + } else if (macb_is_gem(bp)) { ctrl &= ~(GEM_BIT(SGMIIEN) | GEM_BIT(PCSSEL)); if (state->interface == PHY_INTERFACE_MODE_SGMII) @@ -639,13 +639,15 @@ ctrl |= MACB_BIT(FD); if (!(bp->caps & MACB_CAPS_MACB_IS_EMAC)) { - ctrl &= ~(GEM_BIT(GBE) | MACB_BIT(PAE)); + ctrl &= ~MACB_BIT(PAE); + if (macb_is_gem(bp)) { + ctrl &= ~GEM_BIT(GBE); - if (speed == SPEED_1000) - ctrl |= GEM_BIT(GBE); + if (speed == SPEED_1000) + ctrl |= GEM_BIT(GBE); + } - /* We do not support MLO_PAUSE_RX yet */ - if (tx_pause) + if (rx_pause) ctrl |= MACB_BIT(PAE); macb_set_tx_clk(bp->tx_clk, speed, ndev); @@ -1870,7 +1872,8 @@ static int macb_pad_and_fcs(struct sk_buff **skb, struct net_device *ndev) { - bool cloned = skb_cloned(*skb) || skb_header_cloned(*skb); + bool cloned = skb_cloned(*skb) || skb_header_cloned(*skb) || + skb_is_nonlinear(*skb); int padlen = ETH_ZLEN - (*skb)->len; int headroom = skb_headroom(*skb); int tailroom = skb_tailroom(*skb); --- linux-5.8.0.orig/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c +++ linux-5.8.0/drivers/net/ethernet/cavium/liquidio/cn23xx_pf_device.c @@ -1167,7 +1167,7 @@ oct->pf_num = ((fdl_bit >> CN23XX_PCIE_SRIOV_FDL_BIT_POS) & CN23XX_PCIE_SRIOV_FDL_MASK); } else { - ret = EINVAL; + ret = -EINVAL; /* Under some virtual environments, extended PCI regs are * inaccessible, in which case the above read will have failed. --- linux-5.8.0.orig/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c +++ linux-5.8.0/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c @@ -1219,7 +1219,7 @@ */ if (netdev->phydev) { netif_carrier_off(netdev); - phy_start_aneg(netdev->phydev); + phy_start(netdev->phydev); } netif_wake_queue(netdev); @@ -1247,8 +1247,10 @@ napi_disable(&p->napi); netif_stop_queue(netdev); - if (netdev->phydev) + if (netdev->phydev) { + phy_stop(netdev->phydev); phy_disconnect(netdev->phydev); + } netif_carrier_off(netdev); --- linux-5.8.0.orig/drivers/net/ethernet/cavium/thunder/nicvf_main.c +++ linux-5.8.0/drivers/net/ethernet/cavium/thunder/nicvf_main.c @@ -2042,11 +2042,11 @@ /* Save message data locally to prevent them from * being overwritten by next ndo_set_rx_mode call(). */ - spin_lock(&nic->rx_mode_wq_lock); + spin_lock_bh(&nic->rx_mode_wq_lock); mode = vf_work->mode; mc = vf_work->mc; vf_work->mc = NULL; - spin_unlock(&nic->rx_mode_wq_lock); + spin_unlock_bh(&nic->rx_mode_wq_lock); __nicvf_set_rx_mode_task(mode, mc, nic); } @@ -2180,6 +2180,9 @@ nic->max_queues *= 2; nic->ptp_clock = ptp_clock; + /* Initialize mutex that serializes usage of VF's mailbox */ + mutex_init(&nic->rx_mode_mtx); + /* MAP VF's configuration registers */ nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); if (!nic->reg_base) { @@ -2256,7 +2259,6 @@ INIT_WORK(&nic->rx_mode_work.work, nicvf_set_rx_mode_task); spin_lock_init(&nic->rx_mode_wq_lock); - mutex_init(&nic->rx_mode_mtx); err = register_netdev(netdev); if (err) { --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb3/sge.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb3/sge.c @@ -3176,6 +3176,7 @@ GFP_KERNEL | __GFP_COMP); if (!avail) { CH_ALERT(adapter, "free list queue 0 initialization failed\n"); + ret = -ENOMEM; goto err; } if (avail < q->fl[0].size) --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c @@ -145,13 +145,13 @@ int err; /* do a set-tcb for smac-sel and CWR bit.. */ - err = set_tcb_tflag(adap, f, f->tid, TF_CCTRL_CWR_S, 1, 1); - if (err) - goto smac_err; - err = set_tcb_field(adap, f, f->tid, TCB_SMAC_SEL_W, TCB_SMAC_SEL_V(TCB_SMAC_SEL_M), TCB_SMAC_SEL_V(f->smt->idx), 1); + if (err) + goto smac_err; + + err = set_tcb_tflag(adap, f, f->tid, TF_CCTRL_CWR_S, 1, 1); if (!err) return 0; @@ -865,6 +865,7 @@ FW_FILTER_WR_DIRSTEERHASH_V(f->fs.dirsteerhash) | FW_FILTER_WR_LPBK_V(f->fs.action == FILTER_SWITCH) | FW_FILTER_WR_DMAC_V(f->fs.newdmac) | + FW_FILTER_WR_SMAC_V(f->fs.newsmac) | FW_FILTER_WR_INSVLAN_V(f->fs.newvlan == VLAN_INSERT || f->fs.newvlan == VLAN_REWRITE) | FW_FILTER_WR_RMVLAN_V(f->fs.newvlan == VLAN_REMOVE || @@ -882,7 +883,8 @@ FW_FILTER_WR_OVLAN_VLD_V(f->fs.val.ovlan_vld) | FW_FILTER_WR_IVLAN_VLDM_V(f->fs.mask.ivlan_vld) | FW_FILTER_WR_OVLAN_VLDM_V(f->fs.mask.ovlan_vld)); - fwr->smac_sel = 0; + if (f->fs.newsmac) + fwr->smac_sel = f->smt->idx; fwr->rx_chan_rx_rpl_iq = htons(FW_FILTER_WR_RX_CHAN_V(0) | FW_FILTER_WR_RX_RPL_IQ_V(adapter->sge.fw_evtq.abs_id)); @@ -1321,11 +1323,8 @@ TX_QUEUE_V(f->fs.nat_mode) | T5_OPT_2_VALID_F | RX_CHANNEL_V(cxgb4_port_e2cchan(f->dev)) | - CONG_CNTRL_V((f->fs.action == FILTER_DROP) | - (f->fs.dirsteer << 1)) | PACE_V((f->fs.maskhash) | - ((f->fs.dirsteerhash) << 1)) | - CCTRL_ECN_V(f->fs.action == FILTER_SWITCH)); + ((f->fs.dirsteerhash) << 1))); } static void mk_act_open_req(struct filter_entry *f, struct sk_buff *skb, @@ -1361,11 +1360,8 @@ TX_QUEUE_V(f->fs.nat_mode) | T5_OPT_2_VALID_F | RX_CHANNEL_V(cxgb4_port_e2cchan(f->dev)) | - CONG_CNTRL_V((f->fs.action == FILTER_DROP) | - (f->fs.dirsteer << 1)) | PACE_V((f->fs.maskhash) | - ((f->fs.dirsteerhash) << 1)) | - CCTRL_ECN_V(f->fs.action == FILTER_SWITCH)); + ((f->fs.dirsteerhash) << 1))); } static int cxgb4_set_hash_filter(struct net_device *dev, @@ -1906,13 +1902,16 @@ static int configure_filter_tcb(struct adapter *adap, unsigned int tid, struct filter_entry *f) { - if (f->fs.hitcnts) + if (f->fs.hitcnts) { set_tcb_field(adap, f, tid, TCB_TIMESTAMP_W, - TCB_TIMESTAMP_V(TCB_TIMESTAMP_M) | + TCB_TIMESTAMP_V(TCB_TIMESTAMP_M), + TCB_TIMESTAMP_V(0ULL), + 1); + set_tcb_field(adap, f, tid, TCB_RTT_TS_RECENT_AGE_W, TCB_RTT_TS_RECENT_AGE_V(TCB_RTT_TS_RECENT_AGE_M), - TCB_TIMESTAMP_V(0ULL) | TCB_RTT_TS_RECENT_AGE_V(0ULL), 1); + } if (f->fs.newdmac) set_tcb_tflag(adap, f, tid, TF_CCTRL_ECE_S, 1, @@ -2034,6 +2033,20 @@ } return; } + switch (f->fs.action) { + case FILTER_PASS: + if (f->fs.dirsteer) + set_tcb_tflag(adap, f, tid, + TF_DIRECT_STEER_S, 1, 1); + break; + case FILTER_DROP: + set_tcb_tflag(adap, f, tid, TF_DROP_S, 1, 1); + break; + case FILTER_SWITCH: + set_tcb_tflag(adap, f, tid, TF_LPBK_S, 1, 1); + break; + } + break; default: @@ -2101,22 +2114,11 @@ if (ctx) ctx->result = 0; } else if (ret == FW_FILTER_WR_FLT_ADDED) { - int err = 0; - - if (f->fs.newsmac) - err = configure_filter_smac(adap, f); - - if (!err) { - f->pending = 0; /* async setup completed */ - f->valid = 1; - if (ctx) { - ctx->result = 0; - ctx->tid = idx; - } - } else { - clear_filter(adap, f); - if (ctx) - ctx->result = err; + f->pending = 0; /* async setup completed */ + f->valid = 1; + if (ctx) { + ctx->result = 0; + ctx->tid = idx; } } else { /* Something went wrong. Issue a warning about the --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c @@ -229,7 +229,7 @@ { struct mps_entries_ref *mps_entry, *tmp; - if (!list_empty(&adap->mps_ref)) + if (list_empty(&adap->mps_ref)) return; spin_lock(&adap->mps_ref_lock); --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c @@ -60,6 +60,89 @@ PEDIT_FIELDS(IP6_, DST_127_96, 4, nat_lip, 12), }; +static const struct cxgb4_natmode_config cxgb4_natmode_config_array[] = { + /* Default supported NAT modes */ + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_NONE, + .natmode = NAT_MODE_NONE, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP, + .natmode = NAT_MODE_DIP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_DPORT, + .natmode = NAT_MODE_DIP_DP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_DPORT | + CXGB4_ACTION_NATMODE_SIP, + .natmode = NAT_MODE_DIP_DP_SIP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_DPORT | + CXGB4_ACTION_NATMODE_SPORT, + .natmode = NAT_MODE_DIP_DP_SP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_SIP | CXGB4_ACTION_NATMODE_SPORT, + .natmode = NAT_MODE_SIP_SP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_SIP | + CXGB4_ACTION_NATMODE_SPORT, + .natmode = NAT_MODE_DIP_SIP_SP, + }, + { + .chip = CHELSIO_T5, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_SIP | + CXGB4_ACTION_NATMODE_DPORT | + CXGB4_ACTION_NATMODE_SPORT, + .natmode = NAT_MODE_ALL, + }, + /* T6+ can ignore L4 ports when they're disabled. */ + { + .chip = CHELSIO_T6, + .flags = CXGB4_ACTION_NATMODE_SIP, + .natmode = NAT_MODE_SIP_SP, + }, + { + .chip = CHELSIO_T6, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_SPORT, + .natmode = NAT_MODE_DIP_DP_SP, + }, + { + .chip = CHELSIO_T6, + .flags = CXGB4_ACTION_NATMODE_DIP | CXGB4_ACTION_NATMODE_SIP, + .natmode = NAT_MODE_ALL, + }, +}; + +static void cxgb4_action_natmode_tweak(struct ch_filter_specification *fs, + u8 natmode_flags) +{ + u8 i = 0; + + /* Translate the enabled NAT 4-tuple fields to one of the + * hardware supported NAT mode configurations. This ensures + * that we pick a valid combination, where the disabled fields + * do not get overwritten to 0. + */ + for (i = 0; i < ARRAY_SIZE(cxgb4_natmode_config_array); i++) { + if (cxgb4_natmode_config_array[i].flags == natmode_flags) { + fs->nat_mode = cxgb4_natmode_config_array[i].natmode; + return; + } + } +} + static struct ch_tc_flower_entry *allocate_flower_entry(void) { struct ch_tc_flower_entry *new = kzalloc(sizeof(*new), GFP_KERNEL); @@ -287,7 +370,8 @@ } static void process_pedit_field(struct ch_filter_specification *fs, u32 val, - u32 mask, u32 offset, u8 htype) + u32 mask, u32 offset, u8 htype, + u8 *natmode_flags) { switch (htype) { case FLOW_ACT_MANGLE_HDR_TYPE_ETH: @@ -312,67 +396,102 @@ switch (offset) { case PEDIT_IP4_SRC: offload_pedit(fs, val, mask, IP4_SRC); + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; break; case PEDIT_IP4_DST: offload_pedit(fs, val, mask, IP4_DST); + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; } - fs->nat_mode = NAT_MODE_ALL; break; case FLOW_ACT_MANGLE_HDR_TYPE_IP6: switch (offset) { case PEDIT_IP6_SRC_31_0: offload_pedit(fs, val, mask, IP6_SRC_31_0); + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; break; case PEDIT_IP6_SRC_63_32: offload_pedit(fs, val, mask, IP6_SRC_63_32); + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; break; case PEDIT_IP6_SRC_95_64: offload_pedit(fs, val, mask, IP6_SRC_95_64); + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; break; case PEDIT_IP6_SRC_127_96: offload_pedit(fs, val, mask, IP6_SRC_127_96); + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; break; case PEDIT_IP6_DST_31_0: offload_pedit(fs, val, mask, IP6_DST_31_0); + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; break; case PEDIT_IP6_DST_63_32: offload_pedit(fs, val, mask, IP6_DST_63_32); + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; break; case PEDIT_IP6_DST_95_64: offload_pedit(fs, val, mask, IP6_DST_95_64); + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; break; case PEDIT_IP6_DST_127_96: offload_pedit(fs, val, mask, IP6_DST_127_96); + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; } - fs->nat_mode = NAT_MODE_ALL; break; case FLOW_ACT_MANGLE_HDR_TYPE_TCP: switch (offset) { case PEDIT_TCP_SPORT_DPORT: - if (~mask & PEDIT_TCP_UDP_SPORT_MASK) + if (~mask & PEDIT_TCP_UDP_SPORT_MASK) { fs->nat_fport = val; - else + *natmode_flags |= CXGB4_ACTION_NATMODE_SPORT; + } else { fs->nat_lport = val >> 16; + *natmode_flags |= CXGB4_ACTION_NATMODE_DPORT; + } } - fs->nat_mode = NAT_MODE_ALL; break; case FLOW_ACT_MANGLE_HDR_TYPE_UDP: switch (offset) { case PEDIT_UDP_SPORT_DPORT: - if (~mask & PEDIT_TCP_UDP_SPORT_MASK) + if (~mask & PEDIT_TCP_UDP_SPORT_MASK) { fs->nat_fport = val; - else + *natmode_flags |= CXGB4_ACTION_NATMODE_SPORT; + } else { fs->nat_lport = val >> 16; + *natmode_flags |= CXGB4_ACTION_NATMODE_DPORT; + } } - fs->nat_mode = NAT_MODE_ALL; + break; } } +static int cxgb4_action_natmode_validate(struct adapter *adap, u8 natmode_flags, + struct netlink_ext_ack *extack) +{ + u8 i = 0; + + /* Extract the NAT mode to enable based on what 4-tuple fields + * are enabled to be overwritten. This ensures that the + * disabled fields don't get overwritten to 0. + */ + for (i = 0; i < ARRAY_SIZE(cxgb4_natmode_config_array); i++) { + const struct cxgb4_natmode_config *c; + + c = &cxgb4_natmode_config_array[i]; + if (CHELSIO_CHIP_VERSION(adap->params.chip) >= c->chip && + natmode_flags == c->flags) + return 0; + } + NL_SET_ERR_MSG_MOD(extack, "Unsupported NAT mode 4-tuple combination"); + return -EOPNOTSUPP; +} + void cxgb4_process_flow_actions(struct net_device *in, struct flow_action *actions, struct ch_filter_specification *fs) { struct flow_action_entry *act; + u8 natmode_flags = 0; int i; flow_action_for_each(i, act, actions) { @@ -423,13 +542,17 @@ val = act->mangle.val; offset = act->mangle.offset; - process_pedit_field(fs, val, mask, offset, htype); + process_pedit_field(fs, val, mask, offset, htype, + &natmode_flags); } break; default: break; } } + if (natmode_flags) + cxgb4_action_natmode_tweak(fs, natmode_flags); + } static bool valid_l4_mask(u32 mask) @@ -446,7 +569,8 @@ } static bool valid_pedit_action(struct net_device *dev, - const struct flow_action_entry *act) + const struct flow_action_entry *act, + u8 *natmode_flags) { u32 mask, offset; u8 htype; @@ -471,7 +595,10 @@ case FLOW_ACT_MANGLE_HDR_TYPE_IP4: switch (offset) { case PEDIT_IP4_SRC: + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; + break; case PEDIT_IP4_DST: + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; break; default: netdev_err(dev, "%s: Unsupported pedit field\n", @@ -485,10 +612,13 @@ case PEDIT_IP6_SRC_63_32: case PEDIT_IP6_SRC_95_64: case PEDIT_IP6_SRC_127_96: + *natmode_flags |= CXGB4_ACTION_NATMODE_SIP; + break; case PEDIT_IP6_DST_31_0: case PEDIT_IP6_DST_63_32: case PEDIT_IP6_DST_95_64: case PEDIT_IP6_DST_127_96: + *natmode_flags |= CXGB4_ACTION_NATMODE_DIP; break; default: netdev_err(dev, "%s: Unsupported pedit field\n", @@ -504,6 +634,10 @@ __func__); return false; } + if (~mask & PEDIT_TCP_UDP_SPORT_MASK) + *natmode_flags |= CXGB4_ACTION_NATMODE_SPORT; + else + *natmode_flags |= CXGB4_ACTION_NATMODE_DPORT; break; default: netdev_err(dev, "%s: Unsupported pedit field\n", @@ -519,6 +653,10 @@ __func__); return false; } + if (~mask & PEDIT_TCP_UDP_SPORT_MASK) + *natmode_flags |= CXGB4_ACTION_NATMODE_SPORT; + else + *natmode_flags |= CXGB4_ACTION_NATMODE_DPORT; break; default: netdev_err(dev, "%s: Unsupported pedit field\n", @@ -537,10 +675,12 @@ struct flow_action *actions, struct netlink_ext_ack *extack) { + struct adapter *adap = netdev2adap(dev); struct flow_action_entry *act; bool act_redir = false; bool act_pedit = false; bool act_vlan = false; + u8 natmode_flags = 0; int i; if (!flow_action_basic_hw_stats_check(actions, extack)) @@ -553,7 +693,6 @@ /* Do nothing */ break; case FLOW_ACTION_REDIRECT: { - struct adapter *adap = netdev2adap(dev); struct net_device *n_dev, *target_dev; unsigned int i; bool found = false; @@ -603,7 +742,8 @@ } break; case FLOW_ACTION_MANGLE: { - bool pedit_valid = valid_pedit_action(dev, act); + bool pedit_valid = valid_pedit_action(dev, act, + &natmode_flags); if (!pedit_valid) return -EOPNOTSUPP; @@ -622,6 +762,15 @@ return -EINVAL; } + if (act_pedit) { + int ret; + + ret = cxgb4_action_natmode_validate(adap, natmode_flags, + extack); + if (ret) + return ret; + } + return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h @@ -108,6 +108,21 @@ #define PEDIT_TCP_SPORT_DPORT 0x0 #define PEDIT_UDP_SPORT_DPORT 0x0 +enum cxgb4_action_natmode_flags { + CXGB4_ACTION_NATMODE_NONE = 0, + CXGB4_ACTION_NATMODE_DIP = (1 << 0), + CXGB4_ACTION_NATMODE_SIP = (1 << 1), + CXGB4_ACTION_NATMODE_DPORT = (1 << 2), + CXGB4_ACTION_NATMODE_SPORT = (1 << 3), +}; + +/* TC PEDIT action to NATMODE translation entry */ +struct cxgb4_natmode_config { + enum chip_type chip; + u8 flags; + u8 natmode; +}; + void cxgb4_process_flow_actions(struct net_device *in, struct flow_action *actions, struct ch_filter_specification *fs); --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c @@ -62,6 +62,7 @@ int cxgb4_thermal_init(struct adapter *adap) { struct ch_thermal *ch_thermal = &adap->ch_thermal; + char ch_tz_name[THERMAL_NAME_LENGTH]; int num_trip = CXGB4_NUM_TRIPS; u32 param, val; int ret; @@ -82,7 +83,8 @@ ch_thermal->trip_type = THERMAL_TRIP_CRITICAL; } - ch_thermal->tzdev = thermal_zone_device_register("cxgb4", num_trip, + snprintf(ch_tz_name, sizeof(ch_tz_name), "cxgb4_%s", adap->name); + ch_thermal->tzdev = thermal_zone_device_register(ch_tz_name, num_trip, 0, adap, &cxgb4_thermal_ops, NULL, 0, 0); @@ -97,7 +99,9 @@ int cxgb4_thermal_remove(struct adapter *adap) { - if (adap->ch_thermal.tzdev) + if (adap->ch_thermal.tzdev) { thermal_zone_device_unregister(adap->ch_thermal.tzdev); + adap->ch_thermal.tzdev = NULL; + } return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h @@ -44,6 +44,9 @@ #define MAX_ULD_QSETS 16 +/* ulp_mem_io + ulptx_idata + payload + padding */ +#define MAX_IMM_ULPTX_WR_LEN (32 + 8 + 256 + 8) + /* CPL message priority levels */ enum { CPL_PRIORITY_DATA = 0, /* data messages */ --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/sge.c +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/sge.c @@ -2655,17 +2655,22 @@ * @skb: the packet * * Returns true if a packet can be sent as an offload WR with immediate - * data. We currently use the same limit as for Ethernet packets. + * data. + * FW_OFLD_TX_DATA_WR limits the payload to 255 bytes due to 8-bit field. + * However, FW_ULPTX_WR commands have a 256 byte immediate only + * payload limit. */ static inline int is_ofld_imm(const struct sk_buff *skb) { struct work_request_hdr *req = (struct work_request_hdr *)skb->data; unsigned long opcode = FW_WR_OP_G(ntohl(req->wr_hi)); - if (opcode == FW_CRYPTO_LOOKASIDE_WR) + if (unlikely(opcode == FW_ULPTX_WR)) + return skb->len <= MAX_IMM_ULPTX_WR_LEN; + else if (opcode == FW_CRYPTO_LOOKASIDE_WR) return skb->len <= SGE_MAX_WR_LEN; else - return skb->len <= MAX_IMM_TX_PKT_LEN; + return skb->len <= MAX_IMM_OFLD_TX_DATA_WR_LEN; } /** --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h @@ -219,6 +219,7 @@ CH_PCI_ID_TABLE_FENTRY(0x6089), /* Custom T62100-KR */ CH_PCI_ID_TABLE_FENTRY(0x608a), /* Custom T62100-CR */ CH_PCI_ID_TABLE_FENTRY(0x608b), /* Custom T6225-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6092), /* Custom T62100-CR-LOM */ CH_PCI_DEVICE_ID_TABLE_DEFINE_END; #endif /* __T4_PCI_ID_TBL_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/chelsio/cxgb4/t4_tcb.h +++ linux-5.8.0/drivers/net/ethernet/chelsio/cxgb4/t4_tcb.h @@ -40,6 +40,13 @@ #define TCB_L2T_IX_M 0xfffULL #define TCB_L2T_IX_V(x) ((x) << TCB_L2T_IX_S) +#define TCB_T_FLAGS_W 1 +#define TCB_T_FLAGS_S 0 +#define TCB_T_FLAGS_M 0xffffffffffffffffULL +#define TCB_T_FLAGS_V(x) ((__u64)(x) << TCB_T_FLAGS_S) + +#define TCB_FIELD_COOKIE_TFLAG 1 + #define TCB_SMAC_SEL_W 0 #define TCB_SMAC_SEL_S 24 #define TCB_SMAC_SEL_M 0xffULL @@ -50,6 +57,10 @@ #define TCB_T_FLAGS_M 0xffffffffffffffffULL #define TCB_T_FLAGS_V(x) ((__u64)(x) << TCB_T_FLAGS_S) +#define TF_DROP_S 22 +#define TF_DIRECT_STEER_S 23 +#define TF_LPBK_S 59 + #define TF_CCTRL_ECE_S 60 #define TF_CCTRL_CWR_S 61 #define TF_CCTRL_RFR_S 62 --- linux-5.8.0.orig/drivers/net/ethernet/cisco/enic/enic.h +++ linux-5.8.0/drivers/net/ethernet/cisco/enic/enic.h @@ -169,6 +169,7 @@ u16 num_vfs; #endif spinlock_t enic_api_lock; + bool enic_api_busy; struct enic_port_profile *pp; /* work queue cache line section */ --- linux-5.8.0.orig/drivers/net/ethernet/cisco/enic/enic_api.c +++ linux-5.8.0/drivers/net/ethernet/cisco/enic/enic_api.c @@ -34,6 +34,12 @@ struct vnic_dev *vdev = enic->vdev; spin_lock(&enic->enic_api_lock); + while (enic->enic_api_busy) { + spin_unlock(&enic->enic_api_lock); + cpu_relax(); + spin_lock(&enic->enic_api_lock); + } + spin_lock_bh(&enic->devcmd_lock); vnic_dev_cmd_proxy_by_index_start(vdev, vf); --- linux-5.8.0.orig/drivers/net/ethernet/cisco/enic/enic_main.c +++ linux-5.8.0/drivers/net/ethernet/cisco/enic/enic_main.c @@ -2140,8 +2140,6 @@ int done; int err; - BUG_ON(in_interrupt()); - err = start(vdev, arg); if (err) return err; @@ -2329,6 +2327,13 @@ rss_hash_bits, rss_base_cpu, rss_enable); } +static void enic_set_api_busy(struct enic *enic, bool busy) +{ + spin_lock(&enic->enic_api_lock); + enic->enic_api_busy = busy; + spin_unlock(&enic->enic_api_lock); +} + static void enic_reset(struct work_struct *work) { struct enic *enic = container_of(work, struct enic, reset); @@ -2338,7 +2343,9 @@ rtnl_lock(); - spin_lock(&enic->enic_api_lock); + /* Stop any activity from infiniband */ + enic_set_api_busy(enic, true); + enic_stop(enic->netdev); enic_dev_soft_reset(enic); enic_reset_addr_lists(enic); @@ -2346,7 +2353,10 @@ enic_set_rss_nic_cfg(enic); enic_dev_set_ig_vlan_rewrite_mode(enic); enic_open(enic->netdev); - spin_unlock(&enic->enic_api_lock); + + /* Allow infiniband to fiddle with the device again */ + enic_set_api_busy(enic, false); + call_netdevice_notifiers(NETDEV_REBOOT, enic->netdev); rtnl_unlock(); @@ -2358,7 +2368,9 @@ rtnl_lock(); - spin_lock(&enic->enic_api_lock); + /* Stop any activity from infiniband */ + enic_set_api_busy(enic, true); + enic_dev_hang_notify(enic); enic_stop(enic->netdev); enic_dev_hang_reset(enic); @@ -2367,7 +2379,10 @@ enic_set_rss_nic_cfg(enic); enic_dev_set_ig_vlan_rewrite_mode(enic); enic_open(enic->netdev); - spin_unlock(&enic->enic_api_lock); + + /* Allow infiniband to fiddle with the device again */ + enic_set_api_busy(enic, false); + call_netdevice_notifiers(NETDEV_REBOOT, enic->netdev); rtnl_unlock(); --- linux-5.8.0.orig/drivers/net/ethernet/cortina/gemini.c +++ linux-5.8.0/drivers/net/ethernet/cortina/gemini.c @@ -2389,7 +2389,7 @@ dev_info(dev, "probe %s ID %d\n", dev_name(dev), id); - netdev = alloc_etherdev_mq(sizeof(*port), TX_QUEUE_NUM); + netdev = devm_alloc_etherdev_mqs(dev, sizeof(*port), TX_QUEUE_NUM, TX_QUEUE_NUM); if (!netdev) { dev_err(dev, "Can't allocate ethernet device #%d\n", id); return -ENOMEM; @@ -2446,8 +2446,8 @@ port->reset = devm_reset_control_get_exclusive(dev, NULL); if (IS_ERR(port->reset)) { dev_err(dev, "no reset\n"); - clk_disable_unprepare(port->pclk); - return PTR_ERR(port->reset); + ret = PTR_ERR(port->reset); + goto unprepare; } reset_control_reset(port->reset); usleep_range(100, 500); @@ -2502,26 +2502,25 @@ IRQF_SHARED, port_names[port->id], port); - if (ret) { - clk_disable_unprepare(port->pclk); - return ret; - } + if (ret) + goto unprepare; ret = register_netdev(netdev); - if (!ret) { + if (ret) + goto unprepare; + + netdev_info(netdev, + "irq %d, DMA @ 0x%pap, GMAC @ 0x%pap\n", + port->irq, &dmares->start, + &gmacres->start); + ret = gmac_setup_phy(netdev); + if (ret) netdev_info(netdev, - "irq %d, DMA @ 0x%pap, GMAC @ 0x%pap\n", - port->irq, &dmares->start, - &gmacres->start); - ret = gmac_setup_phy(netdev); - if (ret) - netdev_info(netdev, - "PHY init failed, deferring to ifup time\n"); - return 0; - } + "PHY init failed, deferring to ifup time\n"); + return 0; - port->netdev = NULL; - free_netdev(netdev); +unprepare: + clk_disable_unprepare(port->pclk); return ret; } @@ -2530,7 +2529,6 @@ struct gemini_ethernet_port *port = platform_get_drvdata(pdev); gemini_port_remove(port); - free_netdev(port->netdev); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/davicom/dm9000.c +++ linux-5.8.0/drivers/net/ethernet/davicom/dm9000.c @@ -133,6 +133,8 @@ u32 wake_state; int ip_summed; + + struct regulator *power_supply; }; /* debug code */ @@ -1452,7 +1454,7 @@ if (ret) { dev_err(dev, "failed to request reset gpio %d: %d\n", reset_gpios, ret); - return -ENODEV; + goto out_regulator_disable; } /* According to manual PWRST# Low Period Min 1ms */ @@ -1464,8 +1466,10 @@ if (!pdata) { pdata = dm9000_parse_dt(&pdev->dev); - if (IS_ERR(pdata)) - return PTR_ERR(pdata); + if (IS_ERR(pdata)) { + ret = PTR_ERR(pdata); + goto out_regulator_disable; + } } /* Init network device */ @@ -1482,6 +1486,8 @@ db->dev = &pdev->dev; db->ndev = ndev; + if (!IS_ERR(power)) + db->power_supply = power; spin_lock_init(&db->lock); mutex_init(&db->addr_lock); @@ -1504,7 +1510,7 @@ goto out; } - db->irq_wake = platform_get_irq(pdev, 1); + db->irq_wake = platform_get_irq_optional(pdev, 1); if (db->irq_wake >= 0) { dev_dbg(db->dev, "wakeup irq %d\n", db->irq_wake); @@ -1706,6 +1712,10 @@ dm9000_release_board(pdev, db); free_netdev(ndev); +out_regulator_disable: + if (!IS_ERR(power)) + regulator_disable(power); + return ret; } @@ -1763,10 +1773,13 @@ dm9000_drv_remove(struct platform_device *pdev) { struct net_device *ndev = platform_get_drvdata(pdev); + struct board_info *dm = to_dm9000_board(ndev); unregister_netdev(ndev); - dm9000_release_board(pdev, netdev_priv(ndev)); + dm9000_release_board(pdev, dm); free_netdev(ndev); /* free device structure */ + if (dm->power_supply) + regulator_disable(dm->power_supply); dev_dbg(&pdev->dev, "released and freed device\n"); return 0; --- linux-5.8.0.orig/drivers/net/ethernet/dec/tulip/de2104x.c +++ linux-5.8.0/drivers/net/ethernet/dec/tulip/de2104x.c @@ -85,7 +85,7 @@ #define DSL CONFIG_DE2104X_DSL #endif -#define DE_RX_RING_SIZE 64 +#define DE_RX_RING_SIZE 128 #define DE_TX_RING_SIZE 64 #define DE_RING_BYTES \ ((sizeof(struct de_desc) * DE_RX_RING_SIZE) + \ --- linux-5.8.0.orig/drivers/net/ethernet/ethoc.c +++ linux-5.8.0/drivers/net/ethernet/ethoc.c @@ -1207,7 +1207,7 @@ ret = mdiobus_register(priv->mdio); if (ret) { dev_err(&netdev->dev, "failed to register MDIO bus\n"); - goto free2; + goto free3; } ret = ethoc_mdio_probe(netdev); @@ -1239,6 +1239,7 @@ netif_napi_del(&priv->napi); error: mdiobus_unregister(priv->mdio); +free3: mdiobus_free(priv->mdio); free2: clk_disable_unprepare(priv->clk); --- linux-5.8.0.orig/drivers/net/ethernet/faraday/ftgmac100.c +++ linux-5.8.0/drivers/net/ethernet/faraday/ftgmac100.c @@ -1308,6 +1308,7 @@ */ if (unlikely(priv->need_mac_restart)) { ftgmac100_start_hw(priv); + priv->need_mac_restart = false; /* Re-enable "bad" interrupts */ iowrite32(FTGMAC100_INT_BAD, @@ -1817,6 +1818,11 @@ priv->rxdes0_edorr_mask = BIT(30); priv->txdes0_edotr_mask = BIT(30); priv->is_aspeed = true; + /* Disable ast2600 problematic HW arbitration */ + if (of_device_is_compatible(np, "aspeed,ast2600-mac")) { + iowrite32(FTGMAC100_TM_DEFAULT, + priv->base + FTGMAC100_OFFSET_TM); + } } else { priv->rxdes0_edorr_mask = BIT(15); priv->txdes0_edotr_mask = BIT(15); @@ -1902,6 +1908,8 @@ clk_disable_unprepare(priv->rclk); clk_disable_unprepare(priv->clk); err_ncsi_dev: + if (priv->ndev) + ncsi_unregister_dev(priv->ndev); ftgmac100_destroy_mdio(netdev); err_setup_mdio: iounmap(priv->base); @@ -1921,6 +1929,8 @@ netdev = platform_get_drvdata(pdev); priv = netdev_priv(netdev); + if (priv->ndev) + ncsi_unregister_dev(priv->ndev); unregister_netdev(netdev); clk_disable_unprepare(priv->rclk); --- linux-5.8.0.orig/drivers/net/ethernet/faraday/ftgmac100.h +++ linux-5.8.0/drivers/net/ethernet/faraday/ftgmac100.h @@ -170,6 +170,14 @@ #define FTGMAC100_MACCR_SW_RST (1 << 31) /* + * test mode control register + */ +#define FTGMAC100_TM_RQ_TX_VALID_DIS (1 << 28) +#define FTGMAC100_TM_RQ_RR_IDLE_PREV (1 << 27) +#define FTGMAC100_TM_DEFAULT \ + (FTGMAC100_TM_RQ_TX_VALID_DIS | FTGMAC100_TM_RQ_RR_IDLE_PREV) + +/* * PHY control register */ #define FTGMAC100_PHYCR_MDC_CYCTHR_MASK 0x3f --- linux-5.8.0.orig/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ linux-5.8.0/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -174,12 +174,17 @@ #define DPAA_PARSE_RESULTS_SIZE sizeof(struct fman_prs_result) #define DPAA_TIME_STAMP_SIZE 8 #define DPAA_HASH_RESULTS_SIZE 8 +#define DPAA_HWA_SIZE (DPAA_PARSE_RESULTS_SIZE + DPAA_TIME_STAMP_SIZE \ + + DPAA_HASH_RESULTS_SIZE) +#define DPAA_RX_PRIV_DATA_DEFAULT_SIZE (DPAA_TX_PRIV_DATA_SIZE + \ + dpaa_rx_extra_headroom) #ifdef CONFIG_DPAA_ERRATUM_A050385 -#define DPAA_RX_PRIV_DATA_SIZE (DPAA_A050385_ALIGN - (DPAA_PARSE_RESULTS_SIZE\ - + DPAA_TIME_STAMP_SIZE + DPAA_HASH_RESULTS_SIZE)) +#define DPAA_RX_PRIV_DATA_A050385_SIZE (DPAA_A050385_ALIGN - DPAA_HWA_SIZE) +#define DPAA_RX_PRIV_DATA_SIZE (fman_has_errata_a050385() ? \ + DPAA_RX_PRIV_DATA_A050385_SIZE : \ + DPAA_RX_PRIV_DATA_DEFAULT_SIZE) #else -#define DPAA_RX_PRIV_DATA_SIZE (u16)(DPAA_TX_PRIV_DATA_SIZE + \ - dpaa_rx_extra_headroom) +#define DPAA_RX_PRIV_DATA_SIZE DPAA_RX_PRIV_DATA_DEFAULT_SIZE #endif #define DPAA_ETH_PCD_RXQ_NUM 128 @@ -2115,6 +2120,15 @@ skb_copy_header(new_skb, skb); new_skb->dev = skb->dev; + /* Copy relevant timestamp info from the old skb to the new */ + if (priv->tx_tstamp) { + skb_shinfo(new_skb)->tx_flags = skb_shinfo(skb)->tx_flags; + skb_shinfo(new_skb)->hwtstamps = skb_shinfo(skb)->hwtstamps; + skb_shinfo(new_skb)->tskey = skb_shinfo(skb)->tskey; + if (skb->sk) + skb_set_owner_w(new_skb, skb->sk); + } + /* We move the headroom when we align it so we have to reset the * network and transport header offsets relative to the new data * pointer. The checksum offload relies on these offsets. @@ -2122,7 +2136,6 @@ skb_set_network_header(new_skb, skb_network_offset(skb)); skb_set_transport_header(new_skb, skb_transport_offset(skb)); - /* TODO: does timestamping need the result in the old skb? */ dev_kfree_skb(skb); *s = new_skb; @@ -2840,7 +2853,8 @@ return err; } -static inline u16 dpaa_get_headroom(struct dpaa_buffer_layout *bl) +static u16 dpaa_get_headroom(struct dpaa_buffer_layout *bl, + enum port_type port) { u16 headroom; @@ -2854,10 +2868,12 @@ * * Also make sure the headroom is a multiple of data_align bytes */ - headroom = (u16)(bl->priv_data_size + DPAA_PARSE_RESULTS_SIZE + - DPAA_TIME_STAMP_SIZE + DPAA_HASH_RESULTS_SIZE); + headroom = (u16)(bl[port].priv_data_size + DPAA_HWA_SIZE); - return ALIGN(headroom, DPAA_FD_DATA_ALIGNMENT); + if (port == RX) + return ALIGN(headroom, DPAA_FD_RX_DATA_ALIGNMENT); + else + return ALIGN(headroom, DPAA_FD_DATA_ALIGNMENT); } static int dpaa_eth_probe(struct platform_device *pdev) @@ -3025,8 +3041,8 @@ goto free_dpaa_fqs; } - priv->tx_headroom = dpaa_get_headroom(&priv->buf_layout[TX]); - priv->rx_headroom = dpaa_get_headroom(&priv->buf_layout[RX]); + priv->tx_headroom = dpaa_get_headroom(priv->buf_layout, TX); + priv->rx_headroom = dpaa_get_headroom(priv->buf_layout, RX); /* All real interfaces need their ports initialized */ err = dpaa_eth_init_ports(mac_dev, dpaa_bp, &port_fqs, --- linux-5.8.0.orig/drivers/net/ethernet/freescale/dpaa2/Kconfig +++ linux-5.8.0/drivers/net/ethernet/freescale/dpaa2/Kconfig @@ -3,6 +3,7 @@ tristate "Freescale DPAA2 Ethernet" depends on FSL_MC_BUS && FSL_MC_DPIO select PHYLINK + select FSL_XGMAC_MDIO help This is the DPAA2 Ethernet driver supporting Freescale SoCs with DPAA2 (DataPath Acceleration Architecture v2). --- linux-5.8.0.orig/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ linux-5.8.0/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -1109,7 +1109,7 @@ buf_array, count); if (ret < 0) { if (ret == -EBUSY && - retries++ >= DPAA2_ETH_SWP_BUSY_RETRIES) + retries++ < DPAA2_ETH_SWP_BUSY_RETRIES) continue; netdev_err(priv->net_dev, "dpaa2_io_service_acquire() failed\n"); return; @@ -2207,7 +2207,7 @@ free: fsl_mc_object_free(dpcon); - return NULL; + return ERR_PTR(err); } static void free_dpcon(struct dpaa2_eth_priv *priv, @@ -2231,8 +2231,8 @@ return NULL; channel->dpcon = setup_dpcon(priv); - if (IS_ERR_OR_NULL(channel->dpcon)) { - err = PTR_ERR_OR_ZERO(channel->dpcon); + if (IS_ERR(channel->dpcon)) { + err = PTR_ERR(channel->dpcon); goto err_setup; } --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/Kconfig +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/Kconfig @@ -14,6 +14,7 @@ config FSL_ENETC_VF tristate "ENETC VF driver" depends on PCI && PCI_MSI + select FSL_ENETC_MDIO select PHYLIB help This driver supports NXP ENETC gigabit ethernet controller PCIe --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc.c @@ -34,7 +34,10 @@ return NETDEV_TX_BUSY; } + enetc_lock_mdio(); count = enetc_map_tx_buffs(tx_ring, skb, priv->active_offloads); + enetc_unlock_mdio(); + if (unlikely(!count)) goto drop_packet_err; @@ -240,7 +243,7 @@ skb_tx_timestamp(skb); /* let H/W know BD ring has been updated */ - enetc_wr_reg(tx_ring->tpir, i); /* includes wmb() */ + enetc_wr_reg_hot(tx_ring->tpir, i); /* includes wmb() */ return count; @@ -263,11 +266,15 @@ struct enetc_int_vector *v = data; int i; + enetc_lock_mdio(); + /* disable interrupts */ - enetc_wr_reg(v->rbier, 0); + enetc_wr_reg_hot(v->rbier, 0); for_each_set_bit(i, &v->tx_rings_map, ENETC_MAX_NUM_TXQS) - enetc_wr_reg(v->tbier_base + ENETC_BDR_OFF(i), 0); + enetc_wr_reg_hot(v->tbier_base + ENETC_BDR_OFF(i), 0); + + enetc_unlock_mdio(); napi_schedule_irqoff(&v->napi); @@ -286,6 +293,8 @@ int work_done; int i; + enetc_lock_mdio(); + for (i = 0; i < v->count_tx_rings; i++) if (!enetc_clean_tx_ring(&v->tx_ring[i], budget)) complete = false; @@ -294,24 +303,28 @@ if (work_done == budget) complete = false; - if (!complete) + if (!complete) { + enetc_unlock_mdio(); return budget; + } napi_complete_done(napi, work_done); /* enable interrupts */ - enetc_wr_reg(v->rbier, ENETC_RBIER_RXTIE); + enetc_wr_reg_hot(v->rbier, ENETC_RBIER_RXTIE); for_each_set_bit(i, &v->tx_rings_map, ENETC_MAX_NUM_TXQS) - enetc_wr_reg(v->tbier_base + ENETC_BDR_OFF(i), - ENETC_TBIER_TXTIE); + enetc_wr_reg_hot(v->tbier_base + ENETC_BDR_OFF(i), + ENETC_TBIER_TXTIE); + + enetc_unlock_mdio(); return work_done; } static int enetc_bd_ready_count(struct enetc_bdr *tx_ring, int ci) { - int pi = enetc_rd_reg(tx_ring->tcir) & ENETC_TBCIR_IDX_MASK; + int pi = enetc_rd_reg_hot(tx_ring->tcir) & ENETC_TBCIR_IDX_MASK; return pi >= ci ? pi - ci : tx_ring->bd_count - ci + pi; } @@ -321,8 +334,8 @@ { u32 lo, hi, tstamp_lo; - lo = enetc_rd(hw, ENETC_SICTR0); - hi = enetc_rd(hw, ENETC_SICTR1); + lo = enetc_rd_hot(hw, ENETC_SICTR0); + hi = enetc_rd_hot(hw, ENETC_SICTR1); tstamp_lo = le32_to_cpu(txbd->wb.tstamp); if (lo <= tstamp_lo) hi -= 1; @@ -336,6 +349,12 @@ if (skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS) { memset(&shhwtstamps, 0, sizeof(shhwtstamps)); shhwtstamps.hwtstamp = ns_to_ktime(tstamp); + /* Ensure skb_mstamp_ns, which might have been populated with + * the txtime, is not mistaken for a software timestamp, + * because this will prevent the dispatch of our hardware + * timestamp to the socket. + */ + skb->tstamp = ktime_set(0, 0); skb_tstamp_tx(skb, &shhwtstamps); } } @@ -351,6 +370,7 @@ i = tx_ring->next_to_clean; tx_swbd = &tx_ring->tx_swbd[i]; + bds_to_clean = enetc_bd_ready_count(tx_ring, i); do_tstamp = false; @@ -398,8 +418,8 @@ if (is_eof) { tx_frm_cnt++; /* re-arm interrupt source */ - enetc_wr_reg(tx_ring->idr, BIT(tx_ring->index) | - BIT(16 + tx_ring->index)); + enetc_wr_reg_hot(tx_ring->idr, BIT(tx_ring->index) | + BIT(16 + tx_ring->index)); } if (unlikely(!bds_to_clean)) @@ -480,8 +500,6 @@ if (likely(j)) { rx_ring->next_to_alloc = i; /* keep track from page reuse */ rx_ring->next_to_use = i; - /* update ENETC's consumer index */ - enetc_wr_reg(rx_ring->rcir, i); } return j; @@ -499,8 +517,8 @@ u64 tstamp; if (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_TSTMP) { - lo = enetc_rd(hw, ENETC_SICTR0); - hi = enetc_rd(hw, ENETC_SICTR1); + lo = enetc_rd_reg_hot(hw->reg + ENETC_SICTR0); + hi = enetc_rd_reg_hot(hw->reg + ENETC_SICTR1); rxbd = enetc_rxbd_ext(rxbd); tstamp_lo = le32_to_cpu(rxbd->ext.tstamp); if (lo <= tstamp_lo) @@ -516,9 +534,8 @@ static void enetc_get_offloads(struct enetc_bdr *rx_ring, union enetc_rx_bd *rxbd, struct sk_buff *skb) { -#ifdef CONFIG_FSL_ENETC_PTP_CLOCK struct enetc_ndev_priv *priv = netdev_priv(rx_ring->ndev); -#endif + /* TODO: hashing */ if (rx_ring->ndev->features & NETIF_F_RXCSUM) { u16 inet_csum = le16_to_cpu(rxbd->r.inet_csum); @@ -527,12 +544,31 @@ skb->ip_summed = CHECKSUM_COMPLETE; } - /* copy VLAN to skb, if one is extracted, for now we assume it's a - * standard TPID, but HW also supports custom values - */ - if (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_VLAN) - __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), - le16_to_cpu(rxbd->r.vlan_opt)); + if (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_VLAN) { + __be16 tpid = 0; + + switch (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_TPID) { + case 0: + tpid = htons(ETH_P_8021Q); + break; + case 1: + tpid = htons(ETH_P_8021AD); + break; + case 2: + tpid = htons(enetc_port_rd(&priv->si->hw, + ENETC_PCVLANR1)); + break; + case 3: + tpid = htons(enetc_port_rd(&priv->si->hw, + ENETC_PCVLANR2)); + break; + default: + break; + } + + __vlan_hwaccel_put_tag(skb, tpid, le16_to_cpu(rxbd->r.vlan_opt)); + } + #ifdef CONFIG_FSL_ENETC_PTP_CLOCK if (priv->active_offloads & ENETC_F_RX_TSTAMP) enetc_get_rx_tstamp(rx_ring->ndev, rxbd, skb); @@ -652,6 +688,8 @@ if (cleaned_cnt >= ENETC_RXBD_BUNDLE) { int count = enetc_refill_rx_ring(rx_ring, cleaned_cnt); + /* update ENETC's consumer index */ + enetc_wr_reg_hot(rx_ring->rcir, rx_ring->next_to_use); cleaned_cnt -= count; } @@ -660,7 +698,7 @@ if (!bd_status) break; - enetc_wr_reg(rx_ring->idr, BIT(rx_ring->index)); + enetc_wr_reg_hot(rx_ring->idr, BIT(rx_ring->index)); dma_rmb(); /* for reading other rxbd fields */ size = le16_to_cpu(rxbd->r.buf_len); skb = enetc_map_rx_buff_to_skb(rx_ring, i, size); @@ -1036,13 +1074,12 @@ return 0; } -static int enetc_configure_si(struct enetc_ndev_priv *priv) +int enetc_configure_si(struct enetc_ndev_priv *priv) { struct enetc_si *si = priv->si; struct enetc_hw *hw = &si->hw; int err; - enetc_setup_cbdr(hw, &si->cbd_ring); /* set SI cache attributes */ enetc_wr(hw, ENETC_SICAR0, ENETC_SICAR_RD_COHERENT | ENETC_SICAR_WR_COHERENT); @@ -1088,6 +1125,8 @@ if (err) return err; + enetc_setup_cbdr(&si->hw, &si->cbd_ring); + priv->cls_rules = kcalloc(si->num_fs_entries, sizeof(*priv->cls_rules), GFP_KERNEL); if (!priv->cls_rules) { @@ -1095,14 +1134,8 @@ goto err_alloc_cls; } - err = enetc_configure_si(priv); - if (err) - goto err_config_si; - return 0; -err_config_si: - kfree(priv->cls_rules); err_alloc_cls: enetc_clear_cbdr(&si->hw); enetc_free_cbdr(priv->dev, &si->cbd_ring); @@ -1188,6 +1221,8 @@ rx_ring->idr = hw->reg + ENETC_SIRXIDR; enetc_refill_rx_ring(rx_ring, enetc_bd_unused(rx_ring)); + /* update ENETC's consumer index */ + enetc_rxbdr_wr(hw, idx, ENETC_RBCIR, rx_ring->next_to_use); /* enable ring */ enetc_rxbdr_wr(hw, idx, ENETC_RBMR, rbmr); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc.h +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc.h @@ -270,6 +270,7 @@ void enetc_init_si_rings_params(struct enetc_ndev_priv *priv); int enetc_alloc_si_resources(struct enetc_ndev_priv *priv); void enetc_free_si_resources(struct enetc_ndev_priv *priv); +int enetc_configure_si(struct enetc_ndev_priv *priv); int enetc_open(struct net_device *ndev); int enetc_close(struct net_device *ndev); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -141,8 +141,8 @@ { ENETC_PM0_R255, "MAC rx 128-255 byte packets" }, { ENETC_PM0_R511, "MAC rx 256-511 byte packets" }, { ENETC_PM0_R1023, "MAC rx 512-1023 byte packets" }, - { ENETC_PM0_R1518, "MAC rx 1024-1518 byte packets" }, - { ENETC_PM0_R1519X, "MAC rx 1519 to max-octet packets" }, + { ENETC_PM0_R1522, "MAC rx 1024-1522 byte packets" }, + { ENETC_PM0_R1523X, "MAC rx 1523 to max-octet packets" }, { ENETC_PM0_ROVR, "MAC rx oversized packets" }, { ENETC_PM0_RJBR, "MAC rx jabber packets" }, { ENETC_PM0_RFRG, "MAC rx fragment packets" }, @@ -161,9 +161,13 @@ { ENETC_PM0_TBCA, "MAC tx broadcast frames" }, { ENETC_PM0_TPKT, "MAC tx packets" }, { ENETC_PM0_TUND, "MAC tx undersized packets" }, + { ENETC_PM0_T64, "MAC tx 64 byte packets" }, { ENETC_PM0_T127, "MAC tx 65-127 byte packets" }, + { ENETC_PM0_T255, "MAC tx 128-255 byte packets" }, + { ENETC_PM0_T511, "MAC tx 256-511 byte packets" }, { ENETC_PM0_T1023, "MAC tx 512-1023 byte packets" }, - { ENETC_PM0_T1518, "MAC tx 1024-1518 byte packets" }, + { ENETC_PM0_T1522, "MAC tx 1024-1522 byte packets" }, + { ENETC_PM0_T1523X, "MAC tx 1523 to max-octet packets" }, { ENETC_PM0_TCNP, "MAC tx control packets" }, { ENETC_PM0_TDFR, "MAC tx deferred packets" }, { ENETC_PM0_TMCOL, "MAC tx multiple collisions" }, --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -166,6 +166,8 @@ #define ENETC_PSIPMAR0(n) (0x0100 + (n) * 0x8) /* n = SI index */ #define ENETC_PSIPMAR1(n) (0x0104 + (n) * 0x8) #define ENETC_PVCLCTR 0x0208 +#define ENETC_PCVLANR1 0x0210 +#define ENETC_PCVLANR2 0x0214 #define ENETC_VLAN_TYPE_C BIT(0) #define ENETC_VLAN_TYPE_S BIT(1) #define ENETC_PVCLCTR_OVTPIDL(bmp) ((bmp) & 0xff) /* VLAN_TYPE */ @@ -190,6 +192,8 @@ #define ENETC_CBS_BW_MASK GENMASK(6, 0) #define ENETC_PTCCBSR1(n) (0x1114 + (n) * 8) /* n = 0 to 7*/ #define ENETC_RSSHASH_KEY_SIZE 40 +#define ENETC_PRSSCAPR 0x1404 +#define ENETC_PRSSCAPR_GET_NUM_RSS(val) (BIT((val) & 0xf) * 32) #define ENETC_PRSSK(n) (0x1410 + (n) * 4) /* n = [0..9] */ #define ENETC_PSIVLANFMR 0x1700 #define ENETC_PSIVLANFMR_VS BIT(0) @@ -224,6 +228,8 @@ #define ENETC_PM0_MAXFRM 0x8014 #define ENETC_SET_TX_MTU(val) ((val) << 16) #define ENETC_SET_MAXFRM(val) ((val) & 0xffff) +#define ENETC_PM0_RX_FIFO 0x801c +#define ENETC_PM0_RX_FIFO_VAL 1 #define ENETC_PM0_IF_MODE 0x8300 #define ENETC_PMO_IFM_RG BIT(2) #define ENETC_PM0_IFM_RLP (BIT(5) | BIT(11)) @@ -258,8 +264,8 @@ #define ENETC_PM0_R255 0x8180 #define ENETC_PM0_R511 0x8188 #define ENETC_PM0_R1023 0x8190 -#define ENETC_PM0_R1518 0x8198 -#define ENETC_PM0_R1519X 0x81A0 +#define ENETC_PM0_R1522 0x8198 +#define ENETC_PM0_R1523X 0x81A0 #define ENETC_PM0_ROVR 0x81A8 #define ENETC_PM0_RJBR 0x81B0 #define ENETC_PM0_RFRG 0x81B8 @@ -278,9 +284,13 @@ #define ENETC_PM0_TBCA 0x8250 #define ENETC_PM0_TPKT 0x8260 #define ENETC_PM0_TUND 0x8268 +#define ENETC_PM0_T64 0x8270 #define ENETC_PM0_T127 0x8278 +#define ENETC_PM0_T255 0x8280 +#define ENETC_PM0_T511 0x8288 #define ENETC_PM0_T1023 0x8290 -#define ENETC_PM0_T1518 0x8298 +#define ENETC_PM0_T1522 0x8298 +#define ENETC_PM0_T1523X 0x82A0 #define ENETC_PM0_TCNP 0x82C0 #define ENETC_PM0_TDFR 0x82D0 #define ENETC_PM0_TMCOL 0x82D8 @@ -315,14 +325,100 @@ void __iomem *global; }; -/* general register accessors */ -#define enetc_rd_reg(reg) ioread32((reg)) -#define enetc_wr_reg(reg, val) iowrite32((val), (reg)) +/* ENETC register accessors */ + +/* MDIO issue workaround (on LS1028A) - + * Due to a hardware issue, an access to MDIO registers + * that is concurrent with other ENETC register accesses + * may lead to the MDIO access being dropped or corrupted. + * To protect the MDIO accesses a readers-writers locking + * scheme is used, where the MDIO register accesses are + * protected by write locks to insure exclusivity, while + * the remaining ENETC registers are accessed under read + * locks since they only compete with MDIO accesses. + */ +extern rwlock_t enetc_mdio_lock; + +/* use this locking primitive only on the fast datapath to + * group together multiple non-MDIO register accesses to + * minimize the overhead of the lock + */ +static inline void enetc_lock_mdio(void) +{ + read_lock(&enetc_mdio_lock); +} + +static inline void enetc_unlock_mdio(void) +{ + read_unlock(&enetc_mdio_lock); +} + +/* use these accessors only on the fast datapath under + * the enetc_lock_mdio() locking primitive to minimize + * the overhead of the lock + */ +static inline u32 enetc_rd_reg_hot(void __iomem *reg) +{ + lockdep_assert_held(&enetc_mdio_lock); + + return ioread32(reg); +} + +static inline void enetc_wr_reg_hot(void __iomem *reg, u32 val) +{ + lockdep_assert_held(&enetc_mdio_lock); + + iowrite32(val, reg); +} + +/* internal helpers for the MDIO w/a */ +static inline u32 _enetc_rd_reg_wa(void __iomem *reg) +{ + u32 val; + + enetc_lock_mdio(); + val = ioread32(reg); + enetc_unlock_mdio(); + + return val; +} + +static inline void _enetc_wr_reg_wa(void __iomem *reg, u32 val) +{ + enetc_lock_mdio(); + iowrite32(val, reg); + enetc_unlock_mdio(); +} + +static inline u32 _enetc_rd_mdio_reg_wa(void __iomem *reg) +{ + unsigned long flags; + u32 val; + + write_lock_irqsave(&enetc_mdio_lock, flags); + val = ioread32(reg); + write_unlock_irqrestore(&enetc_mdio_lock, flags); + + return val; +} + +static inline void _enetc_wr_mdio_reg_wa(void __iomem *reg, u32 val) +{ + unsigned long flags; + + write_lock_irqsave(&enetc_mdio_lock, flags); + iowrite32(val, reg); + write_unlock_irqrestore(&enetc_mdio_lock, flags); +} + #ifdef ioread64 -#define enetc_rd_reg64(reg) ioread64((reg)) +static inline u64 _enetc_rd_reg64(void __iomem *reg) +{ + return ioread64(reg); +} #else /* using this to read out stats on 32b systems */ -static inline u64 enetc_rd_reg64(void __iomem *reg) +static inline u64 _enetc_rd_reg64(void __iomem *reg) { u32 low, high, tmp; @@ -336,12 +432,31 @@ } #endif +static inline u64 _enetc_rd_reg64_wa(void __iomem *reg) +{ + u64 val; + + enetc_lock_mdio(); + val = _enetc_rd_reg64(reg); + enetc_unlock_mdio(); + + return val; +} + +/* general register accessors */ +#define enetc_rd_reg(reg) _enetc_rd_reg_wa((reg)) +#define enetc_wr_reg(reg, val) _enetc_wr_reg_wa((reg), (val)) #define enetc_rd(hw, off) enetc_rd_reg((hw)->reg + (off)) #define enetc_wr(hw, off, val) enetc_wr_reg((hw)->reg + (off), val) -#define enetc_rd64(hw, off) enetc_rd_reg64((hw)->reg + (off)) +#define enetc_rd_hot(hw, off) enetc_rd_reg_hot((hw)->reg + (off)) +#define enetc_wr_hot(hw, off, val) enetc_wr_reg_hot((hw)->reg + (off), val) +#define enetc_rd64(hw, off) _enetc_rd_reg64_wa((hw)->reg + (off)) /* port register accessors - PF only */ #define enetc_port_rd(hw, off) enetc_rd_reg((hw)->port + (off)) #define enetc_port_wr(hw, off, val) enetc_wr_reg((hw)->port + (off), val) +#define enetc_port_rd_mdio(hw, off) _enetc_rd_mdio_reg_wa((hw)->port + (off)) +#define enetc_port_wr_mdio(hw, off, val) _enetc_wr_mdio_reg_wa(\ + (hw)->port + (off), val) /* global register accessors - PF only */ #define enetc_global_rd(hw, off) enetc_rd_reg((hw)->global + (off)) #define enetc_global_wr(hw, off, val) enetc_wr_reg((hw)->global + (off), val) @@ -455,6 +570,7 @@ #define ENETC_RXBD_LSTATUS(flags) ((flags) << 16) #define ENETC_RXBD_FLAG_VLAN BIT(9) #define ENETC_RXBD_FLAG_TSTMP BIT(10) +#define ENETC_RXBD_FLAG_TPID GENMASK(1, 0) #define ENETC_MAC_ADDR_FILT_CNT 8 /* # of supported entries per port */ #define EMETC_MAC_ADDR_FILT_RES 3 /* # of reserved entries at the beginning */ --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_mdio.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_mdio.c @@ -16,13 +16,13 @@ static inline u32 _enetc_mdio_rd(struct enetc_mdio_priv *mdio_priv, int off) { - return enetc_port_rd(mdio_priv->hw, mdio_priv->mdio_base + off); + return enetc_port_rd_mdio(mdio_priv->hw, mdio_priv->mdio_base + off); } static inline void _enetc_mdio_wr(struct enetc_mdio_priv *mdio_priv, int off, u32 val) { - enetc_port_wr(mdio_priv->hw, mdio_priv->mdio_base + off, val); + enetc_port_wr_mdio(mdio_priv->hw, mdio_priv->mdio_base + off, val); } #define enetc_mdio_rd(mdio_priv, off) \ @@ -174,3 +174,7 @@ return hw; } EXPORT_SYMBOL_GPL(enetc_hw_alloc); + +/* Lock for MDIO access errata on LS1028A */ +DEFINE_RWLOCK(enetc_mdio_lock); +EXPORT_SYMBOL_GPL(enetc_mdio_lock); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -189,7 +189,6 @@ { struct enetc_ndev_priv *priv = netdev_priv(ndev); struct enetc_pf *pf = enetc_si_priv(priv->si); - char vlan_promisc_simap = pf->vlan_promisc_simap; struct enetc_hw *hw = &priv->si->hw; bool uprom = false, mprom = false; struct enetc_mac_filter *filter; @@ -202,16 +201,12 @@ psipmr = ENETC_PSIPMR_SET_UP(0) | ENETC_PSIPMR_SET_MP(0); uprom = true; mprom = true; - /* Enable VLAN promiscuous mode for SI0 (PF) */ - vlan_promisc_simap |= BIT(0); } else if (ndev->flags & IFF_ALLMULTI) { /* enable multi cast promisc mode for SI0 (PF) */ psipmr = ENETC_PSIPMR_SET_MP(0); mprom = true; } - enetc_set_vlan_promisc(&pf->si->hw, vlan_promisc_simap); - /* first 2 filter entries belong to PF */ if (!uprom) { /* Update unicast filters */ @@ -501,6 +496,12 @@ enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_RGAUTO); if (enetc_global_rd(hw, ENETC_G_EPFBLPR(1)) == ENETC_G_EPFBLPR1_XGMII) enetc_port_wr(hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII); + + /* On LS1028A, the MAC RX FIFO defaults to 2, which is too high + * and may lead to RX lock-up under traffic. Set it to 1 instead, + * as recommended by the hardware team. + */ + enetc_port_wr(hw, ENETC_PM0_RX_FIFO, ENETC_PM0_RX_FIFO_VAL); } static void enetc_configure_port_pmac(struct enetc_hw *hw) @@ -833,6 +834,51 @@ of_node_put(priv->phy_node); } +/* Initialize the entire shared memory for the flow steering entries + * of this port (PF + VFs) + */ +static int enetc_init_port_rfs_memory(struct enetc_si *si) +{ + struct enetc_cmd_rfse rfse = {0}; + struct enetc_hw *hw = &si->hw; + int num_rfs, i, err = 0; + u32 val; + + val = enetc_port_rd(hw, ENETC_PRFSCAPR); + num_rfs = ENETC_PRFSCAPR_GET_NUM_RFS(val); + + for (i = 0; i < num_rfs; i++) { + err = enetc_set_fs_entry(si, &rfse, i); + if (err) + break; + } + + return err; +} + +static int enetc_init_port_rss_memory(struct enetc_si *si) +{ + struct enetc_hw *hw = &si->hw; + int num_rss, err; + int *rss_table; + u32 val; + + val = enetc_port_rd(hw, ENETC_PRSSCAPR); + num_rss = ENETC_PRSSCAPR_GET_NUM_RSS(val); + if (!num_rss) + return 0; + + rss_table = kcalloc(num_rss, sizeof(*rss_table), GFP_KERNEL); + if (!rss_table) + return -ENOMEM; + + err = enetc_set_rss_table(si, rss_table, num_rss); + + kfree(rss_table); + + return err; +} + static int enetc_pf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -887,6 +933,24 @@ goto err_alloc_si_res; } + err = enetc_init_port_rfs_memory(si); + if (err) { + dev_err(&pdev->dev, "Failed to initialize RFS memory\n"); + goto err_init_port_rfs; + } + + err = enetc_init_port_rss_memory(si); + if (err) { + dev_err(&pdev->dev, "Failed to initialize RSS memory\n"); + goto err_init_port_rss; + } + + err = enetc_configure_si(priv); + if (err) { + dev_err(&pdev->dev, "Failed to configure SI\n"); + goto err_config_si; + } + err = enetc_alloc_msix(priv); if (err) { dev_err(&pdev->dev, "MSIX alloc failed\n"); @@ -909,6 +973,9 @@ enetc_mdio_remove(pf); enetc_of_put_phy(priv); enetc_free_msix(priv); +err_config_si: +err_init_port_rss: +err_init_port_rfs: err_alloc_msix: enetc_free_si_resources(priv); err_alloc_si_res: --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_qos.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_qos.c @@ -95,18 +95,8 @@ gcl_config->atc = 0xff; gcl_config->acl_len = cpu_to_le16(gcl_len); - if (!admin_conf->base_time) { - gcl_data->btl = - cpu_to_le32(enetc_rd(&priv->si->hw, ENETC_SICTR0)); - gcl_data->bth = - cpu_to_le32(enetc_rd(&priv->si->hw, ENETC_SICTR1)); - } else { - gcl_data->btl = - cpu_to_le32(lower_32_bits(admin_conf->base_time)); - gcl_data->bth = - cpu_to_le32(upper_32_bits(admin_conf->base_time)); - } - + gcl_data->btl = cpu_to_le32(lower_32_bits(admin_conf->base_time)); + gcl_data->bth = cpu_to_le32(upper_32_bits(admin_conf->base_time)); gcl_data->ct = cpu_to_le32(admin_conf->cycle_time); gcl_data->cte = cpu_to_le32(admin_conf->cycle_time_extension); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ linux-5.8.0/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -182,6 +182,12 @@ goto err_alloc_si_res; } + err = enetc_configure_si(priv); + if (err) { + dev_err(&pdev->dev, "Failed to configure SI\n"); + goto err_config_si; + } + err = enetc_alloc_msix(priv); if (err) { dev_err(&pdev->dev, "MSIX alloc failed\n"); @@ -198,6 +204,7 @@ err_reg_netdev: enetc_free_msix(priv); +err_config_si: err_alloc_msix: enetc_free_si_resources(priv); err_alloc_si_res: --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fec.h +++ linux-5.8.0/drivers/net/ethernet/freescale/fec.h @@ -456,6 +456,12 @@ */ #define FEC_QUIRK_HAS_FRREG (1 << 16) +/* Some FEC hardware blocks need the MMFR cleared at setup time to avoid + * the generation of an MII event. This must be avoided in the older + * FEC blocks where it will stop MII events being generated. + */ +#define FEC_QUIRK_CLEAR_SETUP_MII (1 << 17) + struct bufdesc_prop { int qid; /* Address of Rx and Tx buffers */ --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fec_main.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fec_main.c @@ -100,14 +100,14 @@ static const struct fec_devinfo fec_imx28_info = { .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME | FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC | - FEC_QUIRK_HAS_FRREG, + FEC_QUIRK_HAS_FRREG | FEC_QUIRK_CLEAR_SETUP_MII, }; static const struct fec_devinfo fec_imx6q_info = { .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR006358 | - FEC_QUIRK_HAS_RACC, + FEC_QUIRK_HAS_RACC | FEC_QUIRK_CLEAR_SETUP_MII, }; static const struct fec_devinfo fec_mvf600_info = { @@ -119,7 +119,8 @@ FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | FEC_QUIRK_HAS_VLAN | FEC_QUIRK_HAS_AVB | FEC_QUIRK_ERR007885 | FEC_QUIRK_BUG_CAPTURE | - FEC_QUIRK_HAS_RACC | FEC_QUIRK_HAS_COALESCE, + FEC_QUIRK_HAS_RACC | FEC_QUIRK_HAS_COALESCE | + FEC_QUIRK_CLEAR_SETUP_MII, }; static const struct fec_devinfo fec_imx6ul_info = { @@ -127,7 +128,7 @@ FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR007885 | FEC_QUIRK_BUG_CAPTURE | FEC_QUIRK_HAS_RACC | - FEC_QUIRK_HAS_COALESCE, + FEC_QUIRK_HAS_COALESCE | FEC_QUIRK_CLEAR_SETUP_MII, }; static struct platform_device_id fec_devtype[] = { @@ -1808,7 +1809,7 @@ int ret = 0, frame_start, frame_addr, frame_op; bool is_c45 = !!(regnum & MII_ADDR_C45); - ret = pm_runtime_get_sync(dev); + ret = pm_runtime_resume_and_get(dev); if (ret < 0) return ret; @@ -1867,11 +1868,9 @@ int ret, frame_start, frame_addr; bool is_c45 = !!(regnum & MII_ADDR_C45); - ret = pm_runtime_get_sync(dev); + ret = pm_runtime_resume_and_get(dev); if (ret < 0) return ret; - else - ret = 0; if (is_c45) { frame_start = FEC_MMFR_ST_C45; @@ -1913,6 +1912,27 @@ return ret; } +static void fec_enet_phy_reset_after_clk_enable(struct net_device *ndev) +{ + struct fec_enet_private *fep = netdev_priv(ndev); + struct phy_device *phy_dev = ndev->phydev; + + if (phy_dev) { + phy_reset_after_clk_enable(phy_dev); + } else if (fep->phy_node) { + /* + * If the PHY still is not bound to the MAC, but there is + * OF PHY node and a matching PHY device instance already, + * use the OF PHY node to obtain the PHY device instance, + * and then use that PHY device instance when triggering + * the PHY reset. + */ + phy_dev = of_phy_find_device(fep->phy_node); + phy_reset_after_clk_enable(phy_dev); + put_device(&phy_dev->mdio.dev); + } +} + static int fec_enet_clk_enable(struct net_device *ndev, bool enable) { struct fec_enet_private *fep = netdev_priv(ndev); @@ -1939,7 +1959,7 @@ if (ret) goto failed_clk_ref; - phy_reset_after_clk_enable(ndev->phydev); + fec_enet_phy_reset_after_clk_enable(ndev); } else { clk_disable_unprepare(fep->clk_enet_out); if (fep->clk_ptp) { @@ -2115,15 +2135,17 @@ if (suppress_preamble) fep->phy_speed |= BIT(7); - /* Clear MMFR to avoid to generate MII event by writing MSCR. - * MII event generation condition: - * - writing MSCR: - * - mmfr[31:0]_not_zero & mscr[7:0]_is_zero & - * mscr_reg_data_in[7:0] != 0 - * - writing MMFR: - * - mscr[7:0]_not_zero - */ - writel(0, fep->hwp + FEC_MII_DATA); + if (fep->quirks & FEC_QUIRK_CLEAR_SETUP_MII) { + /* Clear MMFR to avoid to generate MII event by writing MSCR. + * MII event generation condition: + * - writing MSCR: + * - mmfr[31:0]_not_zero & mscr[7:0]_is_zero & + * mscr_reg_data_in[7:0] != 0 + * - writing MMFR: + * - mscr[7:0]_not_zero + */ + writel(0, fep->hwp + FEC_MII_DATA); + } writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED); @@ -2145,9 +2167,9 @@ fep->mii_bus->parent = &pdev->dev; err = of_mdiobus_register(fep->mii_bus, node); - of_node_put(node); if (err) goto err_out_free_mdiobus; + of_node_put(node); mii_cnt++; @@ -2160,6 +2182,7 @@ err_out_free_mdiobus: mdiobus_free(fep->mii_bus); err_out: + of_node_put(node); return err; } @@ -2253,7 +2276,7 @@ u32 i, off; int ret; - ret = pm_runtime_get_sync(dev); + ret = pm_runtime_resume_and_get(dev); if (ret < 0) return; @@ -2954,7 +2977,7 @@ int ret; bool reset_again; - ret = pm_runtime_get_sync(&fep->pdev->dev); + ret = pm_runtime_resume_and_get(&fep->pdev->dev); if (ret < 0) return ret; @@ -2985,16 +3008,16 @@ /* Init MAC prior to mii bus probe */ fec_restart(ndev); - /* Probe and connect to PHY when open the interface */ - ret = fec_enet_mii_probe(ndev); - if (ret) - goto err_enet_mii_probe; - /* Call phy_reset_after_clk_enable() again if it failed during * phy_reset_after_clk_enable() before because the PHY wasn't probed. */ if (reset_again) - phy_reset_after_clk_enable(ndev->phydev); + fec_enet_phy_reset_after_clk_enable(ndev); + + /* Probe and connect to PHY when open the interface */ + ret = fec_enet_mii_probe(ndev); + if (ret) + goto err_enet_mii_probe; if (fep->quirks & FEC_QUIRK_ERR006687) imx6q_cpuidle_fec_irqs_used(); @@ -3714,11 +3737,11 @@ failed_irq: failed_init: fec_ptp_stop(pdev); - if (fep->reg_phy) - regulator_disable(fep->reg_phy); failed_reset: pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); + if (fep->reg_phy) + regulator_disable(fep->reg_phy); failed_regulator: clk_disable_unprepare(fep->clk_ahb); failed_clk_ahb: @@ -3746,7 +3769,7 @@ struct device_node *np = pdev->dev.of_node; int ret; - ret = pm_runtime_get_sync(&pdev->dev); + ret = pm_runtime_resume_and_get(&pdev->dev); if (ret < 0) return ret; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fec_ptp.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fec_ptp.c @@ -382,9 +382,16 @@ u64 ns; unsigned long flags; + mutex_lock(&adapter->ptp_clk_mutex); + /* Check the ptp clock */ + if (!adapter->ptp_clk_on) { + mutex_unlock(&adapter->ptp_clk_mutex); + return -EINVAL; + } spin_lock_irqsave(&adapter->tmreg_lock, flags); ns = timecounter_read(&adapter->tc); spin_unlock_irqrestore(&adapter->tmreg_lock, flags); + mutex_unlock(&adapter->ptp_clk_mutex); *ts = ns_to_timespec64(ns); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman.c @@ -1398,8 +1398,7 @@ { struct fman_fpm_regs __iomem *fpm_rg = fman->fpm_regs; u16 fm_clk_freq = fman->state->fm_clk_freq; - u32 tmp, intgr, ts_freq; - u64 frac; + u32 tmp, intgr, ts_freq, frac; ts_freq = (u32)(1 << fman->state->count1_micro_bit); /* configure timestamp so that bit 8 will count 1 microsecond --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman_dtsec.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman_dtsec.c @@ -1200,7 +1200,7 @@ list_for_each(pos, &dtsec->multicast_addr_hash->lsts[bucket]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break; @@ -1213,7 +1213,7 @@ list_for_each(pos, &dtsec->unicast_addr_hash->lsts[bucket]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman_mac.h +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman_mac.h @@ -252,7 +252,7 @@ struct eth_hash_t *hash; /* Allocate address hash table */ - hash = kmalloc_array(size, sizeof(struct eth_hash_t *), GFP_KERNEL); + hash = kmalloc(sizeof(*hash), GFP_KERNEL); if (!hash) return NULL; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman_memac.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman_memac.c @@ -852,7 +852,6 @@ tmp = ioread32be(®s->command_config); tmp &= ~CMD_CFG_PFC_MODE; - priority = 0; iowrite32be(tmp, ®s->command_config); @@ -982,7 +981,7 @@ list_for_each(pos, &memac->multicast_addr_hash->lsts[hash]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman_port.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman_port.c @@ -1767,6 +1767,7 @@ struct fman_port *port; struct fman *fman; struct device_node *fm_node, *port_node; + struct platform_device *fm_pdev; struct resource res; struct resource *dev_res; u32 val; @@ -1791,8 +1792,14 @@ goto return_err; } - fman = dev_get_drvdata(&of_find_device_by_node(fm_node)->dev); + fm_pdev = of_find_device_by_node(fm_node); of_node_put(fm_node); + if (!fm_pdev) { + err = -EINVAL; + goto return_err; + } + + fman = dev_get_drvdata(&fm_pdev->dev); if (!fman) { err = -EINVAL; goto return_err; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fman/fman_tgec.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fman/fman_tgec.c @@ -626,7 +626,7 @@ list_for_each(pos, &tgec->multicast_addr_hash->lsts[hash]) { hash_entry = ETH_HASH_ENTRY_OBJ(pos); - if (hash_entry->addr == addr) { + if (hash_entry && hash_entry->addr == addr) { list_del_init(&hash_entry->node); kfree(hash_entry); break; --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c @@ -223,3 +223,4 @@ }; module_platform_driver(fs_enet_bb_mdio_driver); +MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/fs_enet/mii-fec.c +++ linux-5.8.0/drivers/net/ethernet/freescale/fs_enet/mii-fec.c @@ -224,3 +224,4 @@ }; module_platform_driver(fs_enet_fec_mdio_driver); +MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/net/ethernet/freescale/gianfar.c +++ linux-5.8.0/drivers/net/ethernet/freescale/gianfar.c @@ -750,8 +750,10 @@ continue; err = gfar_parse_group(child, priv, model); - if (err) + if (err) { + of_node_put(child); goto err_grp_init; + } } } else { /* SQ_SG_MODE */ err = gfar_parse_group(np, priv, model); @@ -1827,20 +1829,12 @@ fcb_len = GMAC_FCB_LEN + GMAC_TXPAL_LEN; /* make space for additional header when fcb is needed */ - if (fcb_len && unlikely(skb_headroom(skb) < fcb_len)) { - struct sk_buff *skb_new; - - skb_new = skb_realloc_headroom(skb, fcb_len); - if (!skb_new) { + if (fcb_len) { + if (unlikely(skb_cow_head(skb, fcb_len))) { dev->stats.tx_errors++; dev_kfree_skb_any(skb); return NETDEV_TX_OK; } - - if (skb->sk) - skb_set_owner_w(skb_new, skb->sk); - dev_consume_skb_any(skb); - skb = skb_new; } /* total number of fragments in the SKB */ @@ -2397,6 +2391,10 @@ if (lstatus & BD_LFLAG(RXBD_LAST)) size -= skb->len; + WARN(size < 0, "gianfar: rx fragment size underflow"); + if (size < 0) + return false; + skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, rxb->page_offset + RXBUF_ALIGNMENT, size, GFAR_RXB_TRUESIZE); @@ -2559,6 +2557,17 @@ if (lstatus & BD_LFLAG(RXBD_EMPTY)) break; + /* lost RXBD_LAST descriptor due to overrun */ + if (skb && + (lstatus & BD_LFLAG(RXBD_FIRST))) { + /* discard faulty buffer */ + dev_kfree_skb(skb); + skb = NULL; + rx_queue->stats.rx_dropped++; + + /* can continue normally */ + } + /* order rx buffer descriptor reads */ rmb(); @@ -3378,7 +3387,7 @@ if (dev->features & NETIF_F_IP_CSUM || priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER) - dev->needed_headroom = GMAC_FCB_LEN; + dev->needed_headroom = GMAC_FCB_LEN + GMAC_TXPAL_LEN; /* Initializing some of the rx/tx queue level parameters */ for (i = 0; i < priv->num_tx_queues; i++) { --- linux-5.8.0.orig/drivers/net/ethernet/freescale/ucc_geth.c +++ linux-5.8.0/drivers/net/ethernet/freescale/ucc_geth.c @@ -3889,6 +3889,7 @@ INIT_WORK(&ugeth->timeout_work, ucc_geth_timeout_work); netif_napi_add(dev, &ugeth->napi, ucc_geth_poll, 64); dev->mtu = 1500; + dev->max_mtu = 1518; ugeth->msg_enable = netif_msg_init(debug.msg_enable, UGETH_MSG_DEFAULT); ugeth->phy_interface = phy_interface; @@ -3934,12 +3935,12 @@ struct device_node *np = ofdev->dev.of_node; unregister_netdev(dev); - free_netdev(dev); ucc_geth_memclean(ugeth); if (of_phy_is_fixed_link(np)) of_phy_deregister_fixed_link(np); of_node_put(ugeth->ug_info->tbi_node); of_node_put(ugeth->ug_info->phy_node); + free_netdev(dev); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/freescale/ucc_geth.h +++ linux-5.8.0/drivers/net/ethernet/freescale/ucc_geth.h @@ -575,7 +575,14 @@ u32 vtagtable[0x8]; /* 8 4-byte VLAN tags */ u32 tqptr; /* a base pointer to the Tx Queues Memory Region */ - u8 res2[0x80 - 0x74]; + u8 res2[0x78 - 0x74]; + u64 snums_en; + u32 l2l3baseptr; /* top byte consists of a few other bit fields */ + + u16 mtu[8]; + u8 res3[0xa8 - 0x94]; + u32 wrrtablebase; /* top byte is reserved */ + u8 res4[0xc0 - 0xac]; } __packed; /* structure representing Extended Filtering Global Parameters in PRAM */ --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns/hns_enet.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns/hns_enet.c @@ -1663,8 +1663,10 @@ for (j = 0; j < fetch_num; j++) { /* alloc one skb and init */ skb = hns_assemble_skb(ndev); - if (!skb) + if (!skb) { + ret = -ENOMEM; goto out; + } rd = &tx_ring_data(priv, skb->queue_mapping); hns_nic_net_xmit_hw(ndev, skb, rd); @@ -2282,8 +2284,10 @@ priv->enet_ver = AE_VERSION_1; else if (acpi_dev_found(hns_enet_acpi_match[1].id)) priv->enet_ver = AE_VERSION_2; - else - return -ENXIO; + else { + ret = -ENXIO; + goto out_read_prop_fail; + } /* try to find port-idx-in-ae first */ ret = acpi_node_get_property_reference(dev->fwnode, @@ -2299,7 +2303,8 @@ priv->fwnode = args.fwnode; } else { dev_err(dev, "cannot read cfg data from OF or acpi\n"); - return -ENXIO; + ret = -ENXIO; + goto out_read_prop_fail; } ret = device_property_read_u32(dev, "port-idx-in-ae", &port_id); --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c @@ -415,6 +415,10 @@ /* for mutl buffer*/ new_skb = skb_copy(skb, GFP_ATOMIC); dev_kfree_skb_any(skb); + if (!new_skb) { + netdev_err(ndev, "skb alloc failed\n"); + return; + } skb = new_skb; check_ok = 0; --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h @@ -168,7 +168,7 @@ #define hclge_mbx_ring_ptr_move_crq(crq) \ (crq->next_to_use = (crq->next_to_use + 1) % crq->desc_num) #define hclge_mbx_tail_ptr_move_arq(arq) \ - (arq.tail = (arq.tail + 1) % HCLGE_MBX_MAX_ARQ_MSG_SIZE) + (arq.tail = (arq.tail + 1) % HCLGE_MBX_MAX_ARQ_MSG_NUM) #define hclge_mbx_head_ptr_move_arq(arq) \ - (arq.head = (arq.head + 1) % HCLGE_MBX_MAX_ARQ_MSG_SIZE) + (arq.head = (arq.head + 1) % HCLGE_MBX_MAX_ARQ_MSG_NUM) #endif --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "hnae3.h" #include "hns3_enet.h" @@ -780,7 +781,7 @@ * and it is udp packet, which has a dest port as the IANA assigned. * the hardware is expected to do the checksum offload, but the * hardware will not do the checksum offload when udp dest port is - * 4789. + * 4789 or 6081. */ static bool hns3_tunnel_csum_bug(struct sk_buff *skb) { @@ -789,7 +790,8 @@ l4.hdr = skb_transport_header(skb); if (!(!skb->encapsulation && - l4.udp->dest == htons(IANA_VXLAN_UDP_PORT))) + (l4.udp->dest == htons(IANA_VXLAN_UDP_PORT) || + l4.udp->dest == htons(GENEVE_UDP_PORT)))) return false; skb_checksum_help(skb); --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h @@ -1011,16 +1011,16 @@ #define HCLGE_FD_AD_DROP_B 0 #define HCLGE_FD_AD_DIRECT_QID_B 1 #define HCLGE_FD_AD_QID_S 2 -#define HCLGE_FD_AD_QID_M GENMASK(12, 2) +#define HCLGE_FD_AD_QID_M GENMASK(11, 2) #define HCLGE_FD_AD_USE_COUNTER_B 12 #define HCLGE_FD_AD_COUNTER_NUM_S 13 #define HCLGE_FD_AD_COUNTER_NUM_M GENMASK(20, 13) #define HCLGE_FD_AD_NXT_STEP_B 20 #define HCLGE_FD_AD_NXT_KEY_S 21 -#define HCLGE_FD_AD_NXT_KEY_M GENMASK(26, 21) +#define HCLGE_FD_AD_NXT_KEY_M GENMASK(25, 21) #define HCLGE_FD_AD_WR_RULE_ID_B 0 #define HCLGE_FD_AD_RULE_ID_S 1 -#define HCLGE_FD_AD_RULE_ID_M GENMASK(13, 1) +#define HCLGE_FD_AD_RULE_ID_M GENMASK(12, 1) struct hclge_fd_ad_config_cmd { u8 stage; --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.h +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.h @@ -35,8 +35,6 @@ #define HCLGE_DBG_DFX_SSU_2_OFFSET 12 -#pragma pack(1) - struct hclge_qos_pri_map_cmd { u8 pri0_tc : 4, pri1_tc : 4; @@ -85,8 +83,6 @@ struct hclge_dbg_reg_common_msg reg_msg; }; -#pragma pack() - static struct hclge_dbg_dfx_message hclge_dbg_bios_common_reg[] = { {false, "Reserved"}, {true, "BP_CPU_STATE"}, --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -751,7 +751,8 @@ handle->flags |= HNAE3_SUPPORT_SERDES_SERIAL_LOOPBACK; handle->flags |= HNAE3_SUPPORT_SERDES_PARALLEL_LOOPBACK; - if (hdev->hw.mac.phydev) { + if (hdev->hw.mac.phydev && hdev->hw.mac.phydev->drv && + hdev->hw.mac.phydev->drv->set_loopback) { count += 1; handle->flags |= HNAE3_SUPPORT_PHY_LOOPBACK; } @@ -5002,9 +5003,9 @@ case BIT(INNER_SRC_MAC): for (i = 0; i < ETH_ALEN; i++) { calc_x(key_x[ETH_ALEN - 1 - i], rule->tuples.src_mac[i], - rule->tuples.src_mac[i]); + rule->tuples_mask.src_mac[i]); calc_y(key_y[ETH_ALEN - 1 - i], rule->tuples.src_mac[i], - rule->tuples.src_mac[i]); + rule->tuples_mask.src_mac[i]); } return true; @@ -6070,8 +6071,7 @@ fs->h_ext.vlan_tci = cpu_to_be16(rule->tuples.vlan_tag1); fs->m_ext.vlan_tci = rule->unused_tuple & BIT(INNER_VLAN_TAG_FST) ? - cpu_to_be16(VLAN_VID_MASK) : - cpu_to_be16(rule->tuples_mask.vlan_tag1); + 0 : cpu_to_be16(rule->tuples_mask.vlan_tag1); } if (fs->flow_type & FLOW_MAC_EXT) { @@ -9291,12 +9291,19 @@ void hclge_reset_vf_queue(struct hclge_vport *vport, u16 queue_id) { + struct hnae3_handle *handle = &vport->nic; struct hclge_dev *hdev = vport->back; int reset_try_times = 0; int reset_status; u16 queue_gid; int ret; + if (queue_id >= handle->kinfo.num_tqps) { + dev_warn(&hdev->pdev->dev, "Invalid vf queue id(%u)\n", + queue_id); + return; + } + queue_gid = hclge_covert_handle_qid_global(&vport->nic, queue_id); ret = hclge_send_reset_tqp_cmd(hdev, queue_gid, true); --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c @@ -158,21 +158,31 @@ struct hclge_vport *vport) { struct hnae3_ring_chain_node *cur_chain, *new_chain; + struct hclge_dev *hdev = vport->back; int ring_num; - int i = 0; + int i; ring_num = req->msg.ring_num; if (ring_num > HCLGE_MBX_MAX_RING_CHAIN_PARAM_NUM) return -ENOMEM; + for (i = 0; i < ring_num; i++) { + if (req->msg.param[i].tqp_index >= vport->nic.kinfo.rss_size) { + dev_err(&hdev->pdev->dev, "tqp index(%u) is out of range(0-%u)\n", + req->msg.param[i].tqp_index, + vport->nic.kinfo.rss_size - 1); + return -EINVAL; + } + } + hnae3_set_bit(ring_chain->flag, HNAE3_RING_TYPE_B, - req->msg.param[i].ring_type); + req->msg.param[0].ring_type); ring_chain->tqp_index = hclge_get_queue_id(vport->nic.kinfo.tqp - [req->msg.param[i].tqp_index]); + [req->msg.param[0].tqp_index]); hnae3_set_field(ring_chain->int_gl_idx, HNAE3_RING_GL_IDX_M, - HNAE3_RING_GL_IDX_S, req->msg.param[i].int_gl_index); + HNAE3_RING_GL_IDX_S, req->msg.param[0].int_gl_index); cur_chain = ring_chain; @@ -581,6 +591,17 @@ index = mbx_req->msg.data[0]; + /* Check the query index of rss_hash_key from VF, make sure no + * more than the size of rss_hash_key. + */ + if (((index + 1) * HCLGE_RSS_MBX_RESP_LEN) > + sizeof(vport[0].rss_hash_key)) { + dev_warn(&hdev->pdev->dev, + "failed to get the rss hash key, the index(%u) invalid !\n", + index); + return; + } + memcpy(resp_msg->data, &hdev->vport[0].rss_hash_key[index * HCLGE_RSS_MBX_RESP_LEN], HCLGE_RSS_MBX_RESP_LEN); --- linux-5.8.0.orig/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +++ linux-5.8.0/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c @@ -3146,8 +3146,8 @@ hclgevf_uninit_msi(hdev); } - hclgevf_pci_uninit(hdev); hclgevf_cmd_uninit(hdev); + hclgevf_pci_uninit(hdev); hclgevf_uninit_mac_list(hdev); } --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/Kconfig +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/Kconfig @@ -6,6 +6,7 @@ config HINIC tristate "Huawei Intelligent PCIE Network Interface Card" depends on (PCI_MSI && (X86 || ARM64)) + select NET_DEVLINK help This driver supports HiNIC PCIE Ethernet cards. To compile this driver as part of the kernel, choose Y here. --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.c @@ -112,6 +112,26 @@ return HINIC_API_CMD_STATUS_GET(val, CONS_IDX); } +static void dump_api_chain_reg(struct hinic_api_cmd_chain *chain) +{ + u32 addr, val; + + addr = HINIC_CSR_API_CMD_STATUS_ADDR(chain->chain_type); + val = hinic_hwif_read_reg(chain->hwif, addr); + + dev_err(&chain->hwif->pdev->dev, "Chain type: 0x%x, cpld error: 0x%x, check error: 0x%x, current fsm: 0x%x\n", + chain->chain_type, HINIC_API_CMD_STATUS_GET(val, CPLD_ERR), + HINIC_API_CMD_STATUS_GET(val, CHKSUM_ERR), + HINIC_API_CMD_STATUS_GET(val, FSM)); + + dev_err(&chain->hwif->pdev->dev, "Chain hw current ci: 0x%x\n", + HINIC_API_CMD_STATUS_GET(val, CONS_IDX)); + + addr = HINIC_CSR_API_CMD_CHAIN_PI_ADDR(chain->chain_type); + val = hinic_hwif_read_reg(chain->hwif, addr); + dev_err(&chain->hwif->pdev->dev, "Chain hw current pi: 0x%x\n", val); +} + /** * chain_busy - check if the chain is still processing last requests * @chain: chain to check @@ -131,8 +151,10 @@ /* check for a space for a new command */ if (chain->cons_idx == MASKED_IDX(chain, prod_idx + 1)) { - dev_err(&pdev->dev, "API CMD chain %d is busy\n", - chain->chain_type); + dev_err(&pdev->dev, "API CMD chain %d is busy, cons_idx: %d, prod_idx: %d\n", + chain->chain_type, chain->cons_idx, + chain->prod_idx); + dump_api_chain_reg(chain); return -EBUSY; } break; @@ -332,6 +354,7 @@ err = wait_for_status_poll(chain); if (err) { dev_err(&pdev->dev, "API CMD Poll status timeout\n"); + dump_api_chain_reg(chain); break; } break; --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.h +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_api_cmd.h @@ -103,10 +103,14 @@ HINIC_API_CMD_STATUS_HEADER_##member##_MASK) #define HINIC_API_CMD_STATUS_CONS_IDX_SHIFT 0 +#define HINIC_API_CMD_STATUS_FSM_SHIFT 24 #define HINIC_API_CMD_STATUS_CHKSUM_ERR_SHIFT 28 +#define HINIC_API_CMD_STATUS_CPLD_ERR_SHIFT 30 #define HINIC_API_CMD_STATUS_CONS_IDX_MASK 0xFFFFFF +#define HINIC_API_CMD_STATUS_FSM_MASK 0xFU #define HINIC_API_CMD_STATUS_CHKSUM_ERR_MASK 0x3 +#define HINIC_API_CMD_STATUS_CPLD_ERR_MASK 0x1U #define HINIC_API_CMD_STATUS_GET(val, member) \ (((val) >> HINIC_API_CMD_STATUS_##member##_SHIFT) & \ --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c @@ -401,6 +401,7 @@ spin_unlock_bh(&cmdq->cmdq_lock); + hinic_dump_ceq_info(cmdq->hwdev); return -ETIMEDOUT; } @@ -807,6 +808,7 @@ cmdq_type = HINIC_CMDQ_SYNC; for (; cmdq_type < HINIC_MAX_CMDQ_TYPES; cmdq_type++) { + cmdqs->cmdq[cmdq_type].hwdev = hwdev; err = init_cmdq(&cmdqs->cmdq[cmdq_type], &cmdqs->saved_wqs[cmdq_type], cmdq_type, db_area[cmdq_type]); --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.h +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.h @@ -130,6 +130,8 @@ }; struct hinic_cmdq { + struct hinic_hwdev *hwdev; + struct hinic_wq *wq; enum hinic_cmdq_type cmdq_type; --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c @@ -253,9 +253,9 @@ &fw_ctxt, sizeof(fw_ctxt), &fw_ctxt, &out_size); if (err || (out_size != sizeof(fw_ctxt)) || fw_ctxt.status) { - dev_err(&pdev->dev, "Failed to init FW ctxt, ret = %d\n", - fw_ctxt.status); - return -EFAULT; + dev_err(&pdev->dev, "Failed to init FW ctxt, err: %d, status: 0x%x, out size: 0x%x\n", + err, fw_ctxt.status, out_size); + return -EIO; } return 0; @@ -420,9 +420,9 @@ &cmd_base_qpn, sizeof(cmd_base_qpn), &cmd_base_qpn, &out_size); if (err || (out_size != sizeof(cmd_base_qpn)) || cmd_base_qpn.status) { - dev_err(&pdev->dev, "Failed to get base qpn, status = %d\n", - cmd_base_qpn.status); - return -EFAULT; + dev_err(&pdev->dev, "Failed to get base qpn, err: %d, status: 0x%x, out size: 0x%x\n", + err, cmd_base_qpn.status, out_size); + return -EIO; } *base_qpn = cmd_base_qpn.qpn; --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c @@ -953,3 +953,42 @@ for (q_id = 0; q_id < ceqs->num_ceqs; q_id++) remove_eq(&ceqs->ceq[q_id]); } + +void hinic_dump_ceq_info(struct hinic_hwdev *hwdev) +{ + struct hinic_eq *eq = NULL; + u32 addr, ci, pi; + int q_id; + + for (q_id = 0; q_id < hwdev->func_to_io.ceqs.num_ceqs; q_id++) { + eq = &hwdev->func_to_io.ceqs.ceq[q_id]; + addr = EQ_CONS_IDX_REG_ADDR(eq); + ci = hinic_hwif_read_reg(hwdev->hwif, addr); + addr = EQ_PROD_IDX_REG_ADDR(eq); + pi = hinic_hwif_read_reg(hwdev->hwif, addr); + dev_err(&hwdev->hwif->pdev->dev, "Ceq id: %d, ci: 0x%08x, sw_ci: 0x%08x, pi: 0x%x, tasklet_state: 0x%lx, wrap: %d, ceqe: 0x%x\n", + q_id, ci, eq->cons_idx, pi, + eq->ceq_tasklet.state, + eq->wrapped, be32_to_cpu(*(__be32 *)(GET_CURR_CEQ_ELEM(eq)))); + } +} + +void hinic_dump_aeq_info(struct hinic_hwdev *hwdev) +{ + struct hinic_aeq_elem *aeqe_pos = NULL; + struct hinic_eq *eq = NULL; + u32 addr, ci, pi; + int q_id; + + for (q_id = 0; q_id < hwdev->aeqs.num_aeqs; q_id++) { + eq = &hwdev->aeqs.aeq[q_id]; + addr = EQ_CONS_IDX_REG_ADDR(eq); + ci = hinic_hwif_read_reg(hwdev->hwif, addr); + addr = EQ_PROD_IDX_REG_ADDR(eq); + pi = hinic_hwif_read_reg(hwdev->hwif, addr); + aeqe_pos = GET_CURR_AEQ_ELEM(eq); + dev_err(&hwdev->hwif->pdev->dev, "Aeq id: %d, ci: 0x%08x, pi: 0x%x, work_state: 0x%x, wrap: %d, desc: 0x%x\n", + q_id, ci, pi, work_busy(&eq->aeq_work.work), + eq->wrapped, be32_to_cpu(aeqe_pos->desc)); + } +} --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.h @@ -162,7 +162,7 @@ struct hinic_aeq_elem { u8 data[HINIC_AEQE_DATA_SIZE]; - u32 desc; + __be32 desc; }; struct hinic_eq_work { @@ -254,4 +254,8 @@ void hinic_ceqs_free(struct hinic_ceqs *ceqs); +void hinic_dump_ceq_info(struct hinic_hwdev *hwdev); + +void hinic_dump_aeq_info(struct hinic_hwdev *hwdev); + #endif --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_if.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_if.c @@ -21,6 +21,8 @@ #define WAIT_HWIF_READY_TIMEOUT 10000 +#define HINIC_SELFTEST_RESULT 0x883C + /** * hinic_msix_attr_set - set message attribute for msix entry * @hwif: the HW interface of a pci function device @@ -369,6 +371,26 @@ return HINIC_FA0_GET(attr0, PF_IDX); } +static void __print_selftest_reg(struct hinic_hwif *hwif) +{ + u32 addr, attr0, attr1; + + addr = HINIC_CSR_FUNC_ATTR1_ADDR; + attr1 = hinic_hwif_read_reg(hwif, addr); + + if (attr1 == HINIC_PCIE_LINK_DOWN) { + dev_err(&hwif->pdev->dev, "PCIE is link down\n"); + return; + } + + addr = HINIC_CSR_FUNC_ATTR0_ADDR; + attr0 = hinic_hwif_read_reg(hwif, addr); + if (HINIC_FA0_GET(attr0, FUNC_TYPE) != HINIC_VF && + !HINIC_FA0_GET(attr0, PCI_INTF_IDX)) + dev_err(&hwif->pdev->dev, "Selftest reg: 0x%08x\n", + hinic_hwif_read_reg(hwif, HINIC_SELFTEST_RESULT)); +} + /** * hinic_init_hwif - initialize the hw interface * @hwif: the HW interface of a pci function device @@ -398,6 +420,7 @@ err = wait_hwif_ready(hwif); if (err) { dev_err(&pdev->dev, "HW interface is not ready\n"); + __print_selftest_reg(hwif); goto err_hwif_ready; } --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_if.h +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_if.h @@ -12,6 +12,8 @@ #include #include +#define HINIC_PCIE_LINK_DOWN 0xFFFFFFFF + #define HINIC_DMA_ATTR_ST_SHIFT 0 #define HINIC_DMA_ATTR_AT_SHIFT 8 #define HINIC_DMA_ATTR_PH_SHIFT 10 @@ -249,13 +251,17 @@ static inline u32 hinic_hwif_read_reg(struct hinic_hwif *hwif, u32 reg) { - return be32_to_cpu(readl(hwif->cfg_regs_bar + reg)); + u32 out = readl(hwif->cfg_regs_bar + reg); + + return be32_to_cpu(*(__be32 *)&out); } static inline void hinic_hwif_write_reg(struct hinic_hwif *hwif, u32 reg, u32 val) { - writel(cpu_to_be32(val), hwif->cfg_regs_bar + reg); + __be32 in = cpu_to_be32(val); + + writel(*(u32 *)&in, hwif->cfg_regs_bar + reg); } int hinic_msix_attr_set(struct hinic_hwif *hwif, u16 msix_index, --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_mbox.c @@ -650,6 +650,7 @@ if (!wait_for_completion_timeout(done, jif)) { dev_err(&hwdev->hwif->pdev->dev, "Send mailbox segment timeout\n"); dump_mox_reg(hwdev); + hinic_dump_aeq_info(hwdev); return -ETIMEDOUT; } @@ -897,6 +898,7 @@ set_mbox_to_func_event(func_to_func, EVENT_TIMEOUT); dev_err(&func_to_func->hwif->pdev->dev, "Send mbox msg timeout, msg_id: %d\n", msg_info.msg_id); + hinic_dump_aeq_info(func_to_func->hwdev); err = -ETIMEDOUT; goto err_send_mbox; } --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c @@ -45,6 +45,8 @@ #define MGMT_MSG_TIMEOUT 5000 +#define SET_FUNC_PORT_MBOX_TIMEOUT 30000 + #define SET_FUNC_PORT_MGMT_TIMEOUT 25000 #define mgmt_to_pfhwdev(pf_mgmt) \ @@ -274,6 +276,7 @@ if (!wait_for_completion_timeout(recv_done, timeo)) { dev_err(&pdev->dev, "MGMT timeout, MSG id = %d\n", msg_id); + hinic_dump_aeq_info(pf_to_mgmt->hwdev); err = -ETIMEDOUT; goto unlock_sync_msg; } @@ -358,16 +361,20 @@ return -EINVAL; } - if (cmd == HINIC_PORT_CMD_SET_FUNC_STATE) - timeout = SET_FUNC_PORT_MGMT_TIMEOUT; + if (HINIC_IS_VF(hwif)) { + if (cmd == HINIC_PORT_CMD_SET_FUNC_STATE) + timeout = SET_FUNC_PORT_MBOX_TIMEOUT; - if (HINIC_IS_VF(hwif)) return hinic_mbox_to_pf(pf_to_mgmt->hwdev, mod, cmd, buf_in, - in_size, buf_out, out_size, 0); - else + in_size, buf_out, out_size, timeout); + } else { + if (cmd == HINIC_PORT_CMD_SET_FUNC_STATE) + timeout = SET_FUNC_PORT_MGMT_TIMEOUT; + return msg_to_mgmt_sync(pf_to_mgmt, mod, cmd, buf_in, in_size, buf_out, out_size, MGMT_DIRECT_SEND, MSG_NOT_RESP, timeout); + } } static void recv_mgmt_msg_work_handler(struct work_struct *work) --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_main.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_main.c @@ -168,6 +168,24 @@ return err; } +static void enable_txqs_napi(struct hinic_dev *nic_dev) +{ + int num_txqs = hinic_hwdev_num_qps(nic_dev->hwdev); + int i; + + for (i = 0; i < num_txqs; i++) + napi_enable(&nic_dev->txqs[i].napi); +} + +static void disable_txqs_napi(struct hinic_dev *nic_dev) +{ + int num_txqs = hinic_hwdev_num_qps(nic_dev->hwdev); + int i; + + for (i = 0; i < num_txqs; i++) + napi_disable(&nic_dev->txqs[i].napi); +} + /** * free_txqs - Free the Logical Tx Queues of specific NIC device * @nic_dev: the specific NIC device @@ -394,6 +412,8 @@ goto err_create_txqs; } + enable_txqs_napi(nic_dev); + err = create_rxqs(nic_dev); if (err) { netif_err(nic_dev, drv, netdev, @@ -475,6 +495,7 @@ } err_create_rxqs: + disable_txqs_napi(nic_dev); free_txqs(nic_dev); err_create_txqs: @@ -488,6 +509,9 @@ struct hinic_dev *nic_dev = netdev_priv(netdev); unsigned int flags; + /* Disable txq napi firstly to aviod rewaking txq in free_tx_poll */ + disable_txqs_napi(nic_dev); + down(&nic_dev->mgmt_lock); flags = nic_dev->flags; --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_port.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_port.c @@ -58,11 +58,11 @@ sizeof(port_mac_cmd), &port_mac_cmd, &out_size); if (err || out_size != sizeof(port_mac_cmd) || - (port_mac_cmd.status && - port_mac_cmd.status != HINIC_PF_SET_VF_ALREADY && - port_mac_cmd.status != HINIC_MGMT_STATUS_EXIST)) { - dev_err(&pdev->dev, "Failed to change MAC, ret = %d\n", - port_mac_cmd.status); + (port_mac_cmd.status && + (port_mac_cmd.status != HINIC_PF_SET_VF_ALREADY || !HINIC_IS_VF(hwif)) && + port_mac_cmd.status != HINIC_MGMT_STATUS_EXIST)) { + dev_err(&pdev->dev, "Failed to change MAC, err: %d, status: 0x%x, out size: 0x%x\n", + err, port_mac_cmd.status, out_size); return -EFAULT; } @@ -129,8 +129,8 @@ &port_mac_cmd, sizeof(port_mac_cmd), &port_mac_cmd, &out_size); if (err || (out_size != sizeof(port_mac_cmd)) || port_mac_cmd.status) { - dev_err(&pdev->dev, "Failed to get mac, ret = %d\n", - port_mac_cmd.status); + dev_err(&pdev->dev, "Failed to get mac, err: %d, status: 0x%x, out size: 0x%x\n", + err, port_mac_cmd.status, out_size); return -EFAULT; } @@ -172,9 +172,9 @@ err = hinic_port_msg_cmd(hwdev, HINIC_PORT_CMD_CHANGE_MTU, &port_mtu_cmd, sizeof(port_mtu_cmd), &port_mtu_cmd, &out_size); - if (err || (out_size != sizeof(port_mtu_cmd)) || port_mtu_cmd.status) { - dev_err(&pdev->dev, "Failed to set mtu, ret = %d\n", - port_mtu_cmd.status); + if (err || out_size != sizeof(port_mtu_cmd) || port_mtu_cmd.status) { + dev_err(&pdev->dev, "Failed to set mtu, err: %d, status: 0x%x, out size: 0x%x\n", + err, port_mtu_cmd.status, out_size); return -EFAULT; } @@ -264,8 +264,8 @@ &link_cmd, sizeof(link_cmd), &link_cmd, &out_size); if (err || (out_size != sizeof(link_cmd)) || link_cmd.status) { - dev_err(&pdev->dev, "Failed to get link state, ret = %d\n", - link_cmd.status); + dev_err(&pdev->dev, "Failed to get link state, err: %d, status: 0x%x, out size: 0x%x\n", + err, link_cmd.status, out_size); return -EINVAL; } @@ -298,8 +298,8 @@ &port_state, sizeof(port_state), &port_state, &out_size); if (err || (out_size != sizeof(port_state)) || port_state.status) { - dev_err(&pdev->dev, "Failed to set port state, ret = %d\n", - port_state.status); + dev_err(&pdev->dev, "Failed to set port state, err: %d, status: 0x%x, out size: 0x%x\n", + err, port_state.status, out_size); return -EFAULT; } @@ -330,8 +330,8 @@ &func_state, sizeof(func_state), &func_state, &out_size); if (err || (out_size != sizeof(func_state)) || func_state.status) { - dev_err(&pdev->dev, "Failed to set port func state, ret = %d\n", - func_state.status); + dev_err(&pdev->dev, "Failed to set port func state, err: %d, status: 0x%x, out size: 0x%x\n", + err, func_state.status, out_size); return -EFAULT; } @@ -361,9 +361,9 @@ port_cap, &out_size); if (err || (out_size != sizeof(*port_cap)) || port_cap->status) { dev_err(&pdev->dev, - "Failed to get port capabilities, ret = %d\n", - port_cap->status); - return -EINVAL; + "Failed to get port capabilities, err: %d, status: 0x%x, out size: 0x%x\n", + err, port_cap->status, out_size); + return -EIO; } return 0; @@ -393,9 +393,9 @@ &tso_cfg, &out_size); if (err || out_size != sizeof(tso_cfg) || tso_cfg.status) { dev_err(&pdev->dev, - "Failed to set port tso, ret = %d\n", - tso_cfg.status); - return -EINVAL; + "Failed to set port tso, err: %d, status: 0x%x, out size: 0x%x\n", + err, tso_cfg.status, out_size); + return -EIO; } return 0; @@ -423,9 +423,9 @@ &rx_csum_cfg, &out_size); if (err || !out_size || rx_csum_cfg.status) { dev_err(&pdev->dev, - "Failed to set rx csum offload, ret = %d\n", - rx_csum_cfg.status); - return -EINVAL; + "Failed to set rx csum offload, err: %d, status: 0x%x, out size: 0x%x\n", + err, rx_csum_cfg.status, out_size); + return -EIO; } return 0; @@ -480,9 +480,9 @@ &rq_num, &out_size); if (err || !out_size || rq_num.status) { dev_err(&pdev->dev, - "Failed to rxq number, ret = %d\n", - rq_num.status); - return -EINVAL; + "Failed to set rxq number, err: %d, status: 0x%x, out size: 0x%x\n", + err, rq_num.status, out_size); + return -EIO; } return 0; @@ -508,9 +508,9 @@ &lro_cfg, &out_size); if (err || !out_size || lro_cfg.status) { dev_err(&pdev->dev, - "Failed to set lro offload, ret = %d\n", - lro_cfg.status); - return -EINVAL; + "Failed to set lro offload, err: %d, status: 0x%x, out size: 0x%x\n", + err, lro_cfg.status, out_size); + return -EIO; } return 0; @@ -542,10 +542,10 @@ if (err || !out_size || lro_timer.status) { dev_err(&pdev->dev, - "Failed to set lro timer, ret = %d\n", - lro_timer.status); + "Failed to set lro timer, err: %d, status: 0x%x, out size: 0x%x\n", + err, lro_timer.status, out_size); - return -EINVAL; + return -EIO; } return 0; --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_sriov.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_sriov.c @@ -38,11 +38,10 @@ err = hinic_port_msg_cmd(hwdev, HINIC_PORT_CMD_SET_MAC, &mac_info, sizeof(mac_info), &mac_info, &out_size); if (err || out_size != sizeof(mac_info) || - (mac_info.status && mac_info.status != HINIC_PF_SET_VF_ALREADY && - mac_info.status != HINIC_MGMT_STATUS_EXIST)) { - dev_err(&hwdev->func_to_io.hwif->pdev->dev, "Failed to change MAC, ret = %d\n", - mac_info.status); - return -EFAULT; + (mac_info.status && mac_info.status != HINIC_MGMT_STATUS_EXIST)) { + dev_err(&hwdev->func_to_io.hwif->pdev->dev, "Failed to set MAC, err: %d, status: 0x%x, out size: 0x%x\n", + err, mac_info.status, out_size); + return -EIO; } return 0; @@ -452,8 +451,7 @@ static int hinic_check_mac_info(u8 status, u16 vlan_id) { - if ((status && status != HINIC_MGMT_STATUS_EXIST && - status != HINIC_PF_SET_VF_ALREADY) || + if ((status && status != HINIC_MGMT_STATUS_EXIST) || (vlan_id & CHECK_IPSU_15BIT && status == HINIC_MGMT_STATUS_EXIST)) return -EINVAL; @@ -495,12 +493,6 @@ return -EINVAL; } - if (mac_info.status == HINIC_PF_SET_VF_ALREADY) { - dev_warn(&hwdev->hwif->pdev->dev, - "PF has already set VF MAC. Ignore update operation\n"); - return HINIC_PF_SET_VF_ALREADY; - } - if (mac_info.status == HINIC_MGMT_STATUS_EXIST) dev_warn(&hwdev->hwif->pdev->dev, "MAC is repeated. Ignore update operation\n"); --- linux-5.8.0.orig/drivers/net/ethernet/huawei/hinic/hinic_tx.c +++ linux-5.8.0/drivers/net/ethernet/huawei/hinic/hinic_tx.c @@ -684,18 +684,6 @@ return budget; } -static void tx_napi_add(struct hinic_txq *txq, int weight) -{ - netif_napi_add(txq->netdev, &txq->napi, free_tx_poll, weight); - napi_enable(&txq->napi); -} - -static void tx_napi_del(struct hinic_txq *txq) -{ - napi_disable(&txq->napi); - netif_napi_del(&txq->napi); -} - static irqreturn_t tx_irq(int irq, void *data) { struct hinic_txq *txq = data; @@ -724,7 +712,7 @@ struct hinic_sq *sq = txq->sq; int err; - tx_napi_add(txq, nic_dev->tx_weight); + netif_napi_add(txq->netdev, &txq->napi, free_tx_poll, nic_dev->tx_weight); hinic_hwdev_msix_set(nic_dev->hwdev, sq->msix_entry, TX_IRQ_NO_PENDING, TX_IRQ_NO_COALESC, @@ -734,7 +722,7 @@ err = request_irq(sq->irq, tx_irq, 0, txq->irq_name, txq); if (err) { dev_err(&pdev->dev, "Failed to request Tx irq\n"); - tx_napi_del(txq); + netif_napi_del(&txq->napi); return err; } @@ -746,7 +734,7 @@ struct hinic_sq *sq = txq->sq; free_irq(sq->irq, txq); - tx_napi_del(txq); + netif_napi_del(&txq->napi); } /** --- linux-5.8.0.orig/drivers/net/ethernet/ibm/ibmveth.c +++ linux-5.8.0/drivers/net/ethernet/ibm/ibmveth.c @@ -1031,12 +1031,6 @@ ret = -EOPNOTSUPP; } - if (!ether_addr_equal(ether_header->h_source, netdev->dev_addr)) { - netdev_dbg(netdev, "source packet MAC address does not match veth device's, dropping packet.\n"); - netdev->stats.tx_dropped++; - ret = -EOPNOTSUPP; - } - return ret; } @@ -1349,6 +1343,7 @@ int offset = ibmveth_rxq_frame_offset(adapter); int csum_good = ibmveth_rxq_csum_good(adapter); int lrg_pkt = ibmveth_rxq_large_packet(adapter); + __sum16 iph_check = 0; skb = ibmveth_rxq_get_buffer(adapter); @@ -1385,16 +1380,26 @@ skb_put(skb, length); skb->protocol = eth_type_trans(skb, netdev); - if (csum_good) { - skb->ip_summed = CHECKSUM_UNNECESSARY; - ibmveth_rx_csum_helper(skb, adapter); + /* PHYP without PLSO support places a -1 in the ip + * checksum for large send frames. + */ + if (skb->protocol == cpu_to_be16(ETH_P_IP)) { + struct iphdr *iph = (struct iphdr *)skb->data; + + iph_check = iph->check; } - if (length > netdev->mtu + ETH_HLEN) { + if ((length > netdev->mtu + ETH_HLEN) || + lrg_pkt || iph_check == 0xffff) { ibmveth_rx_mss_helper(skb, mss, lrg_pkt); adapter->rx_large_packets++; } + if (csum_good) { + skb->ip_summed = CHECKSUM_UNNECESSARY; + ibmveth_rx_csum_helper(skb, adapter); + } + napi_gro_receive(napi, skb); /* send it up */ netdev->stats.rx_packets++; --- linux-5.8.0.orig/drivers/net/ethernet/ibm/ibmvnic.c +++ linux-5.8.0/drivers/net/ethernet/ibm/ibmvnic.c @@ -250,8 +250,13 @@ if (!ltb->buff) return; + /* VIOS automatically unmaps the long term buffer at remote + * end for the following resets: + * FAILOVER, MOBILITY, TIMEOUT. + */ if (adapter->reset_reason != VNIC_RESET_FAILOVER && - adapter->reset_reason != VNIC_RESET_MOBILITY) + adapter->reset_reason != VNIC_RESET_MOBILITY && + adapter->reset_reason != VNIC_RESET_TIMEOUT) send_request_unmap(adapter, ltb->map_id); dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr); } @@ -412,6 +417,8 @@ if (adapter->rx_pool[i].active) replenish_rx_pool(adapter, &adapter->rx_pool[i]); } + + netdev_dbg(adapter->netdev, "Replenished %d pools\n", i); } static void release_stats_buffers(struct ibmvnic_adapter *adapter) @@ -479,6 +486,9 @@ int i, j, rc; u64 *size_array; + if (!adapter->rx_pool) + return -1; + size_array = (u64 *)((u8 *)(adapter->login_rsp_buf) + be32_to_cpu(adapter->login_rsp_buf->off_rxadd_buff_size)); @@ -649,6 +659,9 @@ int tx_scrqs; int i, rc; + if (!adapter->tx_pool) + return -1; + tx_scrqs = be32_to_cpu(adapter->login_rsp_buf->num_txsubm_subcrqs); for (i = 0; i < tx_scrqs; i++) { rc = reset_one_tx_pool(adapter, &adapter->tso_pool[i]); @@ -840,7 +853,7 @@ static int ibmvnic_login(struct net_device *netdev) { struct ibmvnic_adapter *adapter = netdev_priv(netdev); - unsigned long timeout = msecs_to_jiffies(30000); + unsigned long timeout = msecs_to_jiffies(20000); int retry_count = 0; int retries = 10; bool retry; @@ -856,10 +869,8 @@ adapter->init_done_rc = 0; reinit_completion(&adapter->init_done); rc = send_login(adapter); - if (rc) { - netdev_warn(netdev, "Unable to login\n"); + if (rc) return rc; - } if (!wait_for_completion_timeout(&adapter->init_done, timeout)) { @@ -917,6 +928,7 @@ __ibmvnic_set_mac(netdev, adapter->mac_addr); + netdev_dbg(netdev, "[S:%d] Login succeeded\n", adapter->state); return 0; } @@ -940,13 +952,14 @@ release_rx_pools(adapter); release_napi(adapter); + release_login_buffer(adapter); release_login_rsp_buffer(adapter); } static int set_link_state(struct ibmvnic_adapter *adapter, u8 link_state) { struct net_device *netdev = adapter->netdev; - unsigned long timeout = msecs_to_jiffies(30000); + unsigned long timeout = msecs_to_jiffies(20000); union ibmvnic_crq crq; bool resend; int rc; @@ -1191,18 +1204,27 @@ if (adapter->state != VNIC_CLOSED) { rc = ibmvnic_login(netdev); if (rc) - return rc; + goto out; rc = init_resources(adapter); if (rc) { netdev_err(netdev, "failed to initialize resources\n"); release_resources(adapter); - return rc; + goto out; } } rc = __ibmvnic_open(netdev); +out: + /* + * If open fails due to a pending failover, set device state and + * return. Device operation will be handled by reset routine. + */ + if (rc && adapter->failover_pending) { + adapter->state = VNIC_OPEN; + rc = 0; + } return rc; } @@ -1327,10 +1349,8 @@ adapter->state = VNIC_CLOSING; rc = set_link_state(adapter, IBMVNIC_LOGICAL_LNK_DN); - if (rc) - return rc; adapter->state = VNIC_CLOSED; - return 0; + return rc; } static int ibmvnic_close(struct net_device *netdev) @@ -1338,6 +1358,10 @@ struct ibmvnic_adapter *adapter = netdev_priv(netdev); int rc; + netdev_dbg(netdev, "[S:%d FOP:%d FRR:%d] Closing\n", + adapter->state, adapter->failover_pending, + adapter->force_reset_recovery); + /* If device failover is pending, just set device state and return. * Device operation will be handled by reset routine. */ @@ -1593,6 +1617,9 @@ skb_copy_from_linear_data(skb, dst, skb->len); } + /* post changes to long_term_buff *dst before VIOS accessing it */ + dma_wmb(); + tx_pool->consumer_index = (tx_pool->consumer_index + 1) % tx_pool->num_buffers; @@ -1822,6 +1849,9 @@ int rc; rc = 0; + if (!is_valid_ether_addr(addr->sa_data)) + return -EADDRNOTAVAIL; + ether_addr_copy(adapter->mac_addr, addr->sa_data); if (adapter->state != VNIC_PROBED) rc = __ibmvnic_set_mac(netdev, addr->sa_data); @@ -1921,10 +1951,19 @@ struct net_device *netdev = adapter->netdev; int i, rc; - netdev_dbg(adapter->netdev, "Re-setting driver (%d)\n", - rwi->reset_reason); + netdev_dbg(adapter->netdev, + "[S:%d FOP:%d] Reset reason %d, reset_state %d\n", + adapter->state, adapter->failover_pending, + rwi->reset_reason, reset_state); rtnl_lock(); + /* + * Now that we have the rtnl lock, clear any pending failover. + * This will ensure ibmvnic_open() has either completed or will + * block until failover is complete. + */ + if (rwi->reset_reason == VNIC_RESET_FAILOVER) + adapter->failover_pending = false; netif_carrier_off(netdev); adapter->reset_reason = rwi->reset_reason; @@ -2011,7 +2050,10 @@ adapter->req_rx_add_entries_per_subcrq != old_num_rx_slots || adapter->req_tx_entries_per_subcrq != - old_num_tx_slots) { + old_num_tx_slots || + !adapter->rx_pool || + !adapter->tso_pool || + !adapter->tx_pool) { release_rx_pools(adapter); release_tx_pools(adapter); release_napi(adapter); @@ -2023,12 +2065,18 @@ } else { rc = reset_tx_pools(adapter); - if (rc) + if (rc) { + netdev_dbg(adapter->netdev, "reset tx pools failed (%d)\n", + rc); goto out; + } rc = reset_rx_pools(adapter); - if (rc) + if (rc) { + netdev_dbg(adapter->netdev, "reset rx pools failed (%d)\n", + rc); goto out; + } } ibmvnic_disable_irqs(adapter); } @@ -2052,14 +2100,19 @@ for (i = 0; i < adapter->req_rx_queues; i++) napi_schedule(&adapter->napi[i]); - if (adapter->reset_reason != VNIC_RESET_FAILOVER) + if (adapter->reset_reason == VNIC_RESET_FAILOVER || + adapter->reset_reason == VNIC_RESET_MOBILITY) { call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, netdev); + call_netdevice_notifiers(NETDEV_RESEND_IGMP, netdev); + } rc = 0; out: rtnl_unlock(); + netdev_dbg(adapter->netdev, "[S:%d FOP:%d] Reset done, rc %d\n", + adapter->state, adapter->failover_pending, rc); return rc; } @@ -2123,6 +2176,11 @@ if (rc) return IBMVNIC_OPEN_FAILED; + call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, netdev); + call_netdevice_notifiers(NETDEV_RESEND_IGMP, netdev); + + netdev_dbg(adapter->netdev, "[S:%d FOP:%d] Hard reset done, rc %d\n", + adapter->state, adapter->failover_pending, rc); return 0; } @@ -2145,17 +2203,6 @@ return rwi; } -static void free_all_rwi(struct ibmvnic_adapter *adapter) -{ - struct ibmvnic_rwi *rwi; - - rwi = get_next_rwi(adapter); - while (rwi) { - kfree(rwi); - rwi = get_next_rwi(adapter); - } -} - static void __ibmvnic_reset(struct work_struct *work) { struct ibmvnic_rwi *rwi; @@ -2187,7 +2234,6 @@ if (!saved_state) { reset_state = adapter->state; - adapter->state = VNIC_RESETTING; saved_state = true; } spin_unlock_irqrestore(&adapter->state_lock, flags); @@ -2196,6 +2242,13 @@ /* CHANGE_PARAM requestor holds rtnl_lock */ rc = do_change_param_reset(adapter, rwi, reset_state); } else if (adapter->force_reset_recovery) { + /* + * Since we are doing a hard reset now, clear the + * failover_pending flag so we don't ignore any + * future MOBILITY or other resets. + */ + adapter->failover_pending = false; + /* Transport event occurred during previous reset */ if (adapter->wait_for_reset) { /* Previous was CHANGE_PARAM; caller locked */ @@ -2207,8 +2260,15 @@ rc = do_hard_reset(adapter, rwi, reset_state); rtnl_unlock(); } - } else if (!(rwi->reset_reason == VNIC_RESET_FATAL && - adapter->from_passive_init)) { + if (rc) { + /* give backing device time to settle down */ + netdev_dbg(adapter->netdev, + "[S:%d] Hard reset failed, waiting 60 secs\n", + adapter->state); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(60 * HZ); + } + } else { rc = do_reset(adapter, rwi, reset_state); } kfree(rwi); @@ -2218,9 +2278,9 @@ else adapter->state = reset_state; rc = 0; - } else if (rc && rc != IBMVNIC_INIT_FAILED && - !adapter->force_reset_recovery) - break; + } + if (rc) + netdev_dbg(adapter->netdev, "Reset failed, rc=%d\n", rc); rwi = get_next_rwi(adapter); @@ -2234,12 +2294,12 @@ complete(&adapter->reset_done); } - if (rc) { - netdev_dbg(adapter->netdev, "Reset failed\n"); - free_all_rwi(adapter); - } - clear_bit_unlock(0, &adapter->resetting); + + netdev_dbg(adapter->netdev, + "[S:%d FRR:%d WFR:%d] Done processing resets\n", + adapter->state, adapter->force_reset_recovery, + adapter->wait_for_reset); } static void __ibmvnic_delayed_reset(struct work_struct *work) @@ -2260,9 +2320,17 @@ unsigned long flags; int ret; + spin_lock_irqsave(&adapter->rwi_lock, flags); + + /* + * If failover is pending don't schedule any other reset. + * Instead let the failover complete. If there is already a + * a failover reset scheduled, we will detect and drop the + * duplicate reset when walking the ->rwi_list below. + */ if (adapter->state == VNIC_REMOVING || adapter->state == VNIC_REMOVED || - adapter->failover_pending) { + (adapter->failover_pending && reason != VNIC_RESET_FAILOVER)) { ret = EBUSY; netdev_dbg(netdev, "Adapter removing or pending failover, skipping reset\n"); goto err; @@ -2274,13 +2342,11 @@ goto err; } - spin_lock_irqsave(&adapter->rwi_lock, flags); - list_for_each(entry, &adapter->rwi_list) { tmp = list_entry(entry, struct ibmvnic_rwi, list); if (tmp->reset_reason == reason) { - netdev_dbg(netdev, "Skipping matching reset\n"); - spin_unlock_irqrestore(&adapter->rwi_lock, flags); + netdev_dbg(netdev, "Skipping matching reset, reason=%d\n", + reason); ret = EBUSY; goto err; } @@ -2288,8 +2354,6 @@ rwi = kzalloc(sizeof(*rwi), GFP_ATOMIC); if (!rwi) { - spin_unlock_irqrestore(&adapter->rwi_lock, flags); - ibmvnic_close(netdev); ret = ENOMEM; goto err; } @@ -2302,12 +2366,17 @@ } rwi->reset_reason = reason; list_add_tail(&rwi->list, &adapter->rwi_list); - spin_unlock_irqrestore(&adapter->rwi_lock, flags); netdev_dbg(adapter->netdev, "Scheduling reset (reason %d)\n", reason); schedule_work(&adapter->ibmvnic_reset); - return 0; + ret = 0; err: + /* ibmvnic_close() below can block, so drop the lock first */ + spin_unlock_irqrestore(&adapter->rwi_lock, flags); + + if (ret == ENOMEM) + ibmvnic_close(netdev); + return -ret; } @@ -2315,6 +2384,12 @@ { struct ibmvnic_adapter *adapter = netdev_priv(dev); + if (test_bit(0, &adapter->resetting)) { + netdev_err(adapter->netdev, + "Adapter is resetting, skip timeout reset\n"); + return; + } + ibmvnic_reset(adapter, VNIC_RESET_TIMEOUT); } @@ -2356,6 +2431,12 @@ if (!pending_scrq(adapter, adapter->rx_scrq[scrq_num])) break; + /* The queue entry at the current index is peeked at above + * to determine that there is a valid descriptor awaiting + * processing. We want to be sure that the current slot + * holds a valid descriptor before reading its contents. + */ + dma_rmb(); next = ibmvnic_next_scrq(adapter, adapter->rx_scrq[scrq_num]); rx_buff = (struct ibmvnic_rx_buff *)be64_to_cpu(next-> @@ -2380,6 +2461,8 @@ offset = be16_to_cpu(next->rx_comp.off_frame_data); flags = next->rx_comp.flags; skb = rx_buff->skb; + /* load long_term_buff before copying to skb */ + dma_rmb(); skb_copy_to_linear_data(skb, rx_buff->data + offset, length); @@ -2814,15 +2897,24 @@ { int rc; + if (!scrq) { + netdev_dbg(adapter->netdev, "Invalid scrq reset.\n"); + return -EINVAL; + } + if (scrq->irq) { free_irq(scrq->irq, scrq); irq_dispose_mapping(scrq->irq); scrq->irq = 0; } - - memset(scrq->msgs, 0, 4 * PAGE_SIZE); - atomic_set(&scrq->used, 0); - scrq->cur = 0; + if (scrq->msgs) { + memset(scrq->msgs, 0, 4 * PAGE_SIZE); + atomic_set(&scrq->used, 0); + scrq->cur = 0; + } else { + netdev_dbg(adapter->netdev, "Invalid scrq reset\n"); + return -EINVAL; + } rc = h_reg_sub_crq(adapter->vdev->unit_address, scrq->msg_token, 4 * PAGE_SIZE, &scrq->crq_num, &scrq->hw_irq); @@ -2833,6 +2925,9 @@ { int i, rc; + if (!adapter->tx_scrq || !adapter->rx_scrq) + return -EINVAL; + for (i = 0; i < adapter->req_tx_queues; i++) { netdev_dbg(adapter->netdev, "Re-setting tx_scrq[%d]\n", i); rc = reset_one_sub_crq_queue(adapter, adapter->tx_scrq[i]); @@ -3051,13 +3146,18 @@ unsigned int pool = scrq->pool_index; int num_entries = 0; + /* The queue entry at the current index is peeked at above + * to determine that there is a valid descriptor awaiting + * processing. We want to be sure that the current slot + * holds a valid descriptor before reading its contents. + */ + dma_rmb(); + next = ibmvnic_next_scrq(adapter, scrq); for (i = 0; i < next->tx_comp.num_comps; i++) { - if (next->tx_comp.rcs[i]) { + if (next->tx_comp.rcs[i]) dev_err(dev, "tx error %x\n", next->tx_comp.rcs[i]); - continue; - } index = be32_to_cpu(next->tx_comp.correlators[i]); if (index & IBMVNIC_TSO_POOL_MASK) { tx_pool = &adapter->tso_pool[pool]; @@ -3451,6 +3551,11 @@ } spin_unlock_irqrestore(&scrq->lock, flags); + /* Ensure that the entire buffer descriptor has been + * loaded before reading its contents + */ + dma_rmb(); + return entry; } @@ -3656,15 +3761,16 @@ struct ibmvnic_login_rsp_buffer *login_rsp_buffer; struct ibmvnic_login_buffer *login_buffer; struct device *dev = &adapter->vdev->dev; + struct vnic_login_client_data *vlcd; dma_addr_t rsp_buffer_token; dma_addr_t buffer_token; size_t rsp_buffer_size; union ibmvnic_crq crq; + int client_data_len; size_t buffer_size; __be64 *tx_list_p; __be64 *rx_list_p; - int client_data_len; - struct vnic_login_client_data *vlcd; + int rc; int i; if (!adapter->tx_scrq || !adapter->rx_scrq) { @@ -3673,7 +3779,9 @@ return -1; } + release_login_buffer(adapter); release_login_rsp_buffer(adapter); + client_data_len = vnic_client_data_len(adapter); buffer_size = @@ -3768,16 +3876,25 @@ crq.login.cmd = LOGIN; crq.login.ioba = cpu_to_be32(buffer_token); crq.login.len = cpu_to_be32(buffer_size); - ibmvnic_send_crq(adapter, &crq); + + adapter->login_pending = true; + rc = ibmvnic_send_crq(adapter, &crq); + if (rc) { + adapter->login_pending = false; + netdev_err(adapter->netdev, "Failed to send login, rc=%d\n", rc); + goto buf_rsp_map_failed; + } return 0; buf_rsp_map_failed: kfree(login_rsp_buffer); + adapter->login_rsp_buf = NULL; buf_rsp_alloc_failed: dma_unmap_single(dev, buffer_token, buffer_size, DMA_TO_DEVICE); buf_map_failed: kfree(login_buffer); + adapter->login_buf = NULL; buf_alloc_failed: return -1; } @@ -4179,8 +4296,13 @@ dev_err(dev, "Error %ld in CHANGE_MAC_ADDR_RSP\n", rc); goto out; } + /* crq->change_mac_addr.mac_addr is the requested one + * crq->change_mac_addr_rsp.mac_addr is the returned valid one. + */ ether_addr_copy(netdev->dev_addr, &crq->change_mac_addr_rsp.mac_addr[0]); + ether_addr_copy(adapter->mac_addr, + &crq->change_mac_addr_rsp.mac_addr[0]); out: complete(&adapter->fw_done); return rc; @@ -4294,6 +4416,15 @@ struct ibmvnic_login_buffer *login = adapter->login_buf; int i; + /* CHECK: Test/set of login_pending does not need to be atomic + * because only ibmvnic_tasklet tests/clears this. + */ + if (!adapter->login_pending) { + netdev_warn(netdev, "Ignoring unexpected login response\n"); + return 0; + } + adapter->login_pending = false; + dma_unmap_single(dev, adapter->login_buf_token, adapter->login_buf_sz, DMA_TO_DEVICE); dma_unmap_single(dev, adapter->login_rsp_buf_token, @@ -4323,7 +4454,7 @@ adapter->req_rx_add_queues != be32_to_cpu(login_rsp->num_rxadd_subcrqs))) { dev_err(dev, "FATAL: Inconsistent login and login rsp\n"); - ibmvnic_remove(adapter->vdev); + ibmvnic_reset(adapter, VNIC_RESET_FATAL); return -EIO; } release_login_buffer(adapter); @@ -4590,7 +4721,7 @@ case IBMVNIC_1GBPS: adapter->speed = SPEED_1000; break; - case IBMVNIC_10GBP: + case IBMVNIC_10GBPS: adapter->speed = SPEED_10000; break; case IBMVNIC_25GBPS: @@ -4605,6 +4736,9 @@ case IBMVNIC_100GBPS: adapter->speed = SPEED_100000; break; + case IBMVNIC_200GBPS: + adapter->speed = SPEED_200000; + break; default: if (netif_carrier_ok(netdev)) netdev_warn(netdev, "Unknown speed 0x%08x\n", rspeed); @@ -4638,12 +4772,31 @@ case IBMVNIC_CRQ_INIT: dev_info(dev, "Partner initialized\n"); adapter->from_passive_init = true; - adapter->failover_pending = false; + /* Discard any stale login responses from prev reset. + * CHECK: should we clear even on INIT_COMPLETE? + */ + adapter->login_pending = false; + if (!completion_done(&adapter->init_done)) { complete(&adapter->init_done); adapter->init_done_rc = -EIO; } - ibmvnic_reset(adapter, VNIC_RESET_FAILOVER); + rc = ibmvnic_reset(adapter, VNIC_RESET_FAILOVER); + if (rc && rc != -EBUSY) { + /* We were unable to schedule the failover + * reset either because the adapter was still + * probing (eg: during kexec) or we could not + * allocate memory. Clear the failover_pending + * flag since no one else will. We ignore + * EBUSY because it means either FAILOVER reset + * is already scheduled or the adapter is + * being removed. + */ + netdev_err(netdev, + "Error %ld scheduling failover reset\n", + rc); + adapter->failover_pending = false; + } break; case IBMVNIC_CRQ_INIT_COMPLETE: dev_info(dev, "Partner initialization complete\n"); @@ -4809,6 +4962,12 @@ while (!done) { /* Pull all the valid messages off the CRQ */ while ((crq = ibmvnic_next_crq(adapter)) != NULL) { + /* This barrier makes sure ibmvnic_next_crq()'s + * crq->generic.first & IBMVNIC_CRQ_CMD_RSP is loaded + * before ibmvnic_handle_crq()'s + * switch(gen_crq->first) and switch(gen_crq->cmd). + */ + dma_rmb(); ibmvnic_handle_crq(crq, adapter); crq->generic.first = 0; } @@ -4855,6 +5014,9 @@ } while (rc == H_BUSY || H_IS_LONG_BUSY(rc)); /* Clean out the queue */ + if (!crq->msgs) + return -EINVAL; + memset(crq->msgs, 0, PAGE_SIZE); crq->cur = 0; crq->active = false; @@ -4974,7 +5136,7 @@ static int ibmvnic_reset_init(struct ibmvnic_adapter *adapter) { struct device *dev = &adapter->vdev->dev; - unsigned long timeout = msecs_to_jiffies(30000); + unsigned long timeout = msecs_to_jiffies(20000); u64 old_num_rx_queues, old_num_tx_queues; int rc; @@ -5103,6 +5265,7 @@ dev_set_drvdata(&dev->dev, netdev); adapter->vdev = dev; adapter->netdev = netdev; + adapter->login_pending = false; ether_addr_copy(adapter->mac_addr, mac_addr_p); ether_addr_copy(netdev->dev_addr, adapter->mac_addr); @@ -5194,12 +5357,18 @@ unsigned long flags; spin_lock_irqsave(&adapter->state_lock, flags); - if (adapter->state == VNIC_RESETTING) { - spin_unlock_irqrestore(&adapter->state_lock, flags); - return -EBUSY; - } + /* If ibmvnic_reset() is scheduling a reset, wait for it to + * finish. Then, set the state to REMOVING to prevent it from + * scheduling any more work and to have reset functions ignore + * any resets that have already been scheduled. Drop the lock + * after setting state, so __ibmvnic_reset() which is called + * from the flush_work() below, can make progress. + */ + spin_lock(&adapter->rwi_lock); adapter->state = VNIC_REMOVING; + spin_unlock(&adapter->rwi_lock); + spin_unlock_irqrestore(&adapter->state_lock, flags); flush_work(&adapter->ibmvnic_reset); --- linux-5.8.0.orig/drivers/net/ethernet/ibm/ibmvnic.h +++ linux-5.8.0/drivers/net/ethernet/ibm/ibmvnic.h @@ -373,7 +373,7 @@ #define IBMVNIC_10MBPS 0x40000000 #define IBMVNIC_100MBPS 0x20000000 #define IBMVNIC_1GBPS 0x10000000 -#define IBMVNIC_10GBP 0x08000000 +#define IBMVNIC_10GBPS 0x08000000 #define IBMVNIC_40GBPS 0x04000000 #define IBMVNIC_100GBPS 0x02000000 #define IBMVNIC_25GBPS 0x01000000 @@ -941,8 +941,7 @@ VNIC_CLOSING, VNIC_CLOSED, VNIC_REMOVING, - VNIC_REMOVED, - VNIC_RESETTING}; + VNIC_REMOVED}; enum ibmvnic_reset_reason {VNIC_RESET_FAILOVER = 1, VNIC_RESET_MOBILITY, @@ -1079,12 +1078,14 @@ struct tasklet_struct tasklet; enum vnic_state state; enum ibmvnic_reset_reason reset_reason; + /* when taking both state and rwi locks, take state lock first */ spinlock_t rwi_lock; struct list_head rwi_list; struct work_struct ibmvnic_reset; struct delayed_work ibmvnic_delayed_reset; unsigned long resetting; bool napi_enabled, from_passive_init; + bool login_pending; bool failover_pending; bool force_reset_recovery; @@ -1092,6 +1093,8 @@ struct ibmvnic_tunables desired; struct ibmvnic_tunables fallback; - /* Used for serializatin of state field */ + /* Used for serialization of state field. When taking both state + * and rwi locks, take state lock first. + */ spinlock_t state_lock; }; --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/82571.c +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/82571.c @@ -899,6 +899,8 @@ } else { data &= ~IGP02E1000_PM_D0_LPLU; ret_val = e1e_wphy(hw, IGP02E1000_PHY_POWER_MGMT, data); + if (ret_val) + return ret_val; /* LPLU and SmartSpeed are mutually exclusive. LPLU is used * during Dx states where the power conservation is most * important. During driver activity we should enable --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/e1000.h +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/e1000.h @@ -436,6 +436,7 @@ #define FLAG2_DFLT_CRC_STRIPPING BIT(12) #define FLAG2_CHECK_RX_HWTSTAMP BIT(13) #define FLAG2_CHECK_SYSTIM_OVERFLOW BIT(14) +#define FLAG2_ENABLE_S0IX_FLOWS BIT(15) #define E1000_RX_DESC_PS(R, i) \ (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/ethtool.c +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -23,6 +23,13 @@ int stat_offset; }; +static const char e1000e_priv_flags_strings[][ETH_GSTRING_LEN] = { +#define E1000E_PRIV_FLAGS_S0IX_ENABLED BIT(0) + "s0ix-enabled", +}; + +#define E1000E_PRIV_FLAGS_STR_LEN ARRAY_SIZE(e1000e_priv_flags_strings) + #define E1000_STAT(str, m) { \ .stat_string = str, \ .type = E1000_STATS, \ @@ -1777,6 +1784,8 @@ return E1000_TEST_LEN; case ETH_SS_STATS: return E1000_STATS_LEN; + case ETH_SS_PRIV_FLAGS: + return E1000E_PRIV_FLAGS_STR_LEN; default: return -EOPNOTSUPP; } @@ -2098,6 +2107,10 @@ p += ETH_GSTRING_LEN; } break; + case ETH_SS_PRIV_FLAGS: + memcpy(data, e1000e_priv_flags_strings, + E1000E_PRIV_FLAGS_STR_LEN * ETH_GSTRING_LEN); + break; } } @@ -2306,6 +2319,37 @@ return 0; } +static u32 e1000e_get_priv_flags(struct net_device *netdev) +{ + struct e1000_adapter *adapter = netdev_priv(netdev); + u32 priv_flags = 0; + + if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) + priv_flags |= E1000E_PRIV_FLAGS_S0IX_ENABLED; + + return priv_flags; +} + +static int e1000e_set_priv_flags(struct net_device *netdev, u32 priv_flags) +{ + struct e1000_adapter *adapter = netdev_priv(netdev); + unsigned int flags2 = adapter->flags2; + + flags2 &= ~FLAG2_ENABLE_S0IX_FLOWS; + if (priv_flags & E1000E_PRIV_FLAGS_S0IX_ENABLED) { + struct e1000_hw *hw = &adapter->hw; + + if (hw->mac.type < e1000_pch_cnp) + return -EINVAL; + flags2 |= FLAG2_ENABLE_S0IX_FLOWS; + } + + if (flags2 != adapter->flags2) + adapter->flags2 = flags2; + + return 0; +} + static const struct ethtool_ops e1000_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS, .get_drvinfo = e1000_get_drvinfo, @@ -2337,6 +2381,8 @@ .set_eee = e1000e_set_eee, .get_link_ksettings = e1000_get_link_ksettings, .set_link_ksettings = e1000_set_link_ksettings, + .get_priv_flags = e1000e_get_priv_flags, + .set_priv_flags = e1000e_set_priv_flags, }; void e1000e_set_ethtool_ops(struct net_device *netdev) --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/hw.h +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/hw.h @@ -680,6 +680,7 @@ bool kmrn_lock_loss_workaround_enabled; struct e1000_shadow_ram shadow_ram[E1000_ICH8_SHADOW_RAM_WORDS]; bool nvm_k1_enabled; + bool disable_k1_off; bool eee_disable; u16 eee_lp_ability; enum e1000_ulp_state ulp_state; --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -1237,6 +1237,9 @@ return 0; if (er32(FWSM) & E1000_ICH_FWSM_FW_VALID) { + struct e1000_adapter *adapter = hw->adapter; + bool firmware_bug = false; + if (force) { /* Request ME un-configure ULP mode in the PHY */ mac_reg = er32(H2ME); @@ -1245,16 +1248,24 @@ ew32(H2ME, mac_reg); } - /* Poll up to 300msec for ME to clear ULP_CFG_DONE. */ + /* Poll up to 2.5 seconds for ME to clear ULP_CFG_DONE. + * If this takes more than 1 second, show a warning indicating a + * firmware bug + */ while (er32(FWSM) & E1000_FWSM_ULP_CFG_DONE) { - if (i++ == 30) { + if (i++ == 250) { ret_val = -E1000_ERR_PHY; goto out; } + if (i > 100 && !firmware_bug) + firmware_bug = true; usleep_range(10000, 11000); } - e_dbg("ULP_CONFIG_DONE cleared after %dmsec\n", i * 10); + if (firmware_bug) + e_warn("ULP_CONFIG_DONE took %dmsec. This is a firmware bug\n", i * 10); + else + e_dbg("ULP_CONFIG_DONE cleared after %dmsec\n", i * 10); if (force) { mac_reg = er32(H2ME); @@ -1546,6 +1557,9 @@ fextnvm6 &= ~E1000_FEXTNVM6_K1_OFF_ENABLE; } + if (hw->dev_spec.ich8lan.disable_k1_off == true) + fextnvm6 &= ~E1000_FEXTNVM6_K1_OFF_ENABLE; + ew32(FEXTNVM6, fextnvm6); } --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -107,45 +107,6 @@ {0, NULL} }; -struct e1000e_me_supported { - u16 device_id; /* supported device ID */ -}; - -static const struct e1000e_me_supported me_supported[] = { - {E1000_DEV_ID_PCH_LPT_I217_LM}, - {E1000_DEV_ID_PCH_LPTLP_I218_LM}, - {E1000_DEV_ID_PCH_I218_LM2}, - {E1000_DEV_ID_PCH_I218_LM3}, - {E1000_DEV_ID_PCH_SPT_I219_LM}, - {E1000_DEV_ID_PCH_SPT_I219_LM2}, - {E1000_DEV_ID_PCH_LBG_I219_LM3}, - {E1000_DEV_ID_PCH_SPT_I219_LM4}, - {E1000_DEV_ID_PCH_SPT_I219_LM5}, - {E1000_DEV_ID_PCH_CNP_I219_LM6}, - {E1000_DEV_ID_PCH_CNP_I219_LM7}, - {E1000_DEV_ID_PCH_ICP_I219_LM8}, - {E1000_DEV_ID_PCH_ICP_I219_LM9}, - {E1000_DEV_ID_PCH_CMP_I219_LM10}, - {E1000_DEV_ID_PCH_CMP_I219_LM11}, - {E1000_DEV_ID_PCH_CMP_I219_LM12}, - {E1000_DEV_ID_PCH_TGP_I219_LM13}, - {E1000_DEV_ID_PCH_TGP_I219_LM14}, - {E1000_DEV_ID_PCH_TGP_I219_LM15}, - {0} -}; - -static bool e1000e_check_me(u16 device_id) -{ - struct e1000e_me_supported *id; - - for (id = (struct e1000e_me_supported *)me_supported; - id->device_id; id++) - if (device_id == id->device_id) - return true; - - return false; -} - /** * __ew32_prepare - prepare to write to MAC CSR register on certain parts * @hw: pointer to the HW structure @@ -5994,15 +5955,19 @@ struct e1000_adapter *adapter; adapter = container_of(work, struct e1000_adapter, reset_task); + rtnl_lock(); /* don't run the task if already down */ - if (test_bit(__E1000_DOWN, &adapter->state)) + if (test_bit(__E1000_DOWN, &adapter->state)) { + rtnl_unlock(); return; + } if (!(adapter->flags & FLAG_RESTART_NOW)) { e1000e_dump(adapter); e_err("Reset adapter unexpectedly\n"); } e1000e_reinit_locked(adapter); + rtnl_unlock(); } /** @@ -6456,13 +6421,13 @@ /* Ungate PGCB clock */ mac_data = er32(FEXTNVM9); - mac_data |= BIT(28); + mac_data &= ~BIT(28); ew32(FEXTNVM9, mac_data); /* Enable K1 off to enable mPHY Power Gating */ mac_data = er32(FEXTNVM6); mac_data |= BIT(31); - ew32(FEXTNVM12, mac_data); + ew32(FEXTNVM6, mac_data); /* Enable mPHY power gating for any link and speed */ mac_data = er32(FEXTNVM8); @@ -6506,11 +6471,11 @@ /* Disable K1 off */ mac_data = er32(FEXTNVM6); mac_data &= ~BIT(31); - ew32(FEXTNVM12, mac_data); + ew32(FEXTNVM6, mac_data); /* Disable Ungate PGCB clock */ mac_data = er32(FEXTNVM9); - mac_data &= ~BIT(28); + mac_data |= BIT(28); ew32(FEXTNVM9, mac_data); /* Cancel not waking from dynamic @@ -6943,7 +6908,6 @@ struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev)); struct e1000_adapter *adapter = netdev_priv(netdev); struct pci_dev *pdev = to_pci_dev(dev); - struct e1000_hw *hw = &adapter->hw; int rc; e1000e_flush_lpic(pdev); @@ -6951,13 +6915,13 @@ e1000e_pm_freeze(dev); rc = __e1000_shutdown(pdev, false); - if (rc) + if (rc) { e1000e_pm_thaw(dev); - - /* Introduce S0ix implementation */ - if (hw->mac.type >= e1000_pch_cnp && - !e1000e_check_me(hw->adapter->pdev->device)) - e1000e_s0ix_entry_flow(adapter); + } else { + /* Introduce S0ix implementation */ + if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) + e1000e_s0ix_entry_flow(adapter); + } return rc; } @@ -6967,12 +6931,10 @@ struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev)); struct e1000_adapter *adapter = netdev_priv(netdev); struct pci_dev *pdev = to_pci_dev(dev); - struct e1000_hw *hw = &adapter->hw; int rc; /* Introduce S0ix implementation */ - if (hw->mac.type >= e1000_pch_cnp && - !e1000e_check_me(hw->adapter->pdev->device)) + if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) e1000e_s0ix_exit_flow(adapter); rc = __e1000_resume(pdev); @@ -7636,6 +7598,9 @@ if (!(adapter->flags & FLAG_HAS_AMT)) e1000e_get_hw_control(adapter); + if (hw->mac.type >= e1000_pch_cnp) + adapter->flags2 |= FLAG2_ENABLE_S0IX_FLOWS; + strlcpy(netdev->name, "eth%d", sizeof(netdev->name)); err = register_netdev(netdev); if (err) --- linux-5.8.0.orig/drivers/net/ethernet/intel/e1000e/phy.c +++ linux-5.8.0/drivers/net/ethernet/intel/e1000e/phy.c @@ -203,7 +203,7 @@ * Increasing the time out as testing showed failures with * the lower time out */ - for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 3); i++) { + for (i = 0; i < (E1000_GEN_POLL_TIMEOUT * 10); i++) { udelay(50); mdic = er32(MDIC); if (mdic & E1000_MDIC_READY) --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e.h +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e.h @@ -129,6 +129,7 @@ __I40E_RESET_INTR_RECEIVED, __I40E_REINIT_REQUESTED, __I40E_PF_RESET_REQUESTED, + __I40E_PF_RESET_AND_REBUILD_REQUESTED, __I40E_CORE_RESET_REQUESTED, __I40E_GLOBAL_RESET_REQUESTED, __I40E_EMP_RESET_INTR_RECEIVED, @@ -150,11 +151,14 @@ __I40E_CLIENT_RESET, __I40E_VIRTCHNL_OP_PENDING, __I40E_RECOVERY_MODE, + __I40E_VF_RESETS_DISABLED, /* disable resets during i40e_remove */ /* This must be last as it determines the size of the BITMAP */ __I40E_STATE_SIZE__, }; #define I40E_PF_RESET_FLAG BIT_ULL(__I40E_PF_RESET_REQUESTED) +#define I40E_PF_RESET_AND_REBUILD_FLAG \ + BIT_ULL(__I40E_PF_RESET_AND_REBUILD_REQUESTED) /* VSI state flags */ enum i40e_vsi_state_t { --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h @@ -1211,7 +1211,7 @@ #define I40E_AQC_SET_VSI_PROMISC_BROADCAST 0x04 #define I40E_AQC_SET_VSI_DEFAULT 0x08 #define I40E_AQC_SET_VSI_PROMISC_VLAN 0x10 -#define I40E_AQC_SET_VSI_PROMISC_TX 0x8000 +#define I40E_AQC_SET_VSI_PROMISC_RX_ONLY 0x8000 __le16 seid; #define I40E_AQC_VSI_PROM_CMD_SEID_MASK 0x3FF __le16 vlan_tag; --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_common.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_common.c @@ -1970,6 +1970,21 @@ } /** + * i40e_is_aq_api_ver_ge + * @aq: pointer to AdminQ info containing HW API version to compare + * @maj: API major value + * @min: API minor value + * + * Assert whether current HW API version is greater/equal than provided. + **/ +static bool i40e_is_aq_api_ver_ge(struct i40e_adminq_info *aq, u16 maj, + u16 min) +{ + return (aq->api_maj_ver > maj || + (aq->api_maj_ver == maj && aq->api_min_ver >= min)); +} + +/** * i40e_aq_add_vsi * @hw: pointer to the hw struct * @vsi_ctx: pointer to a vsi context struct @@ -2094,18 +2109,16 @@ if (set) { flags |= I40E_AQC_SET_VSI_PROMISC_UNICAST; - if (rx_only_promisc && - (((hw->aq.api_maj_ver == 1) && (hw->aq.api_min_ver >= 5)) || - (hw->aq.api_maj_ver > 1))) - flags |= I40E_AQC_SET_VSI_PROMISC_TX; + if (rx_only_promisc && i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + flags |= I40E_AQC_SET_VSI_PROMISC_RX_ONLY; } cmd->promiscuous_flags = cpu_to_le16(flags); cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); - if (((hw->aq.api_maj_ver >= 1) && (hw->aq.api_min_ver >= 5)) || - (hw->aq.api_maj_ver > 1)) - cmd->valid_flags |= cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_TX); + if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + cmd->valid_flags |= + cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_RX_ONLY); cmd->seid = cpu_to_le16(seid); status = i40e_asq_send_command(hw, &desc, NULL, 0, cmd_details); @@ -2202,11 +2215,17 @@ i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_set_vsi_promiscuous_modes); - if (enable) + if (enable) { flags |= I40E_AQC_SET_VSI_PROMISC_UNICAST; + if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + flags |= I40E_AQC_SET_VSI_PROMISC_RX_ONLY; + } cmd->promiscuous_flags = cpu_to_le16(flags); cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); + if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) + cmd->valid_flags |= + cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_RX_ONLY); cmd->seid = cpu_to_le16(seid); cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -4877,7 +4877,7 @@ enum i40e_admin_queue_err adq_err; struct i40e_vsi *vsi = np->vsi; struct i40e_pf *pf = vsi->back; - bool is_reset_needed; + u32 reset_needed = 0; i40e_status status; u32 i, j; @@ -4922,9 +4922,11 @@ flags_complete: changed_flags = orig_flags ^ new_flags; - is_reset_needed = !!(changed_flags & (I40E_FLAG_VEB_STATS_ENABLED | - I40E_FLAG_LEGACY_RX | I40E_FLAG_SOURCE_PRUNING_DISABLED | - I40E_FLAG_DISABLE_FW_LLDP)); + if (changed_flags & I40E_FLAG_DISABLE_FW_LLDP) + reset_needed = I40E_PF_RESET_AND_REBUILD_FLAG; + if (changed_flags & (I40E_FLAG_VEB_STATS_ENABLED | + I40E_FLAG_LEGACY_RX | I40E_FLAG_SOURCE_PRUNING_DISABLED)) + reset_needed = BIT(__I40E_PF_RESET_REQUESTED); /* Before we finalize any flag changes, we need to perform some * checks to ensure that the changes are supported and safe. @@ -5041,7 +5043,7 @@ case I40E_AQ_RC_EEXIST: dev_warn(&pf->pdev->dev, "FW LLDP agent is already running\n"); - is_reset_needed = false; + reset_needed = 0; break; case I40E_AQ_RC_EPERM: dev_warn(&pf->pdev->dev, @@ -5070,8 +5072,8 @@ /* Issue reset to cause things to take effect, as additional bits * are added we will need to create a mask of bits requiring reset */ - if (is_reset_needed) - i40e_do_reset(pf, BIT(__I40E_PF_RESET_REQUESTED), true); + if (reset_needed) + i40e_do_reset(pf, reset_needed, true); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_main.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -44,6 +44,8 @@ static void i40e_determine_queue_usage(struct i40e_pf *pf); static int i40e_setup_pf_filter_control(struct i40e_pf *pf); static void i40e_prep_for_reset(struct i40e_pf *pf, bool lock_acquired); +static void i40e_reset_and_rebuild(struct i40e_pf *pf, bool reinit, + bool lock_acquired); static int i40e_reset(struct i40e_pf *pf); static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired); static int i40e_setup_misc_vector_for_recovery_mode(struct i40e_pf *pf); @@ -2601,7 +2603,7 @@ return; if (!test_and_clear_bit(__I40E_MACVLAN_SYNC_PENDING, pf->state)) return; - if (test_and_set_bit(__I40E_VF_DISABLE, pf->state)) { + if (test_bit(__I40E_VF_DISABLE, pf->state)) { set_bit(__I40E_MACVLAN_SYNC_PENDING, pf->state); return; } @@ -2619,7 +2621,6 @@ } } } - clear_bit(__I40E_VF_DISABLE, pf->state); } /** @@ -3996,8 +3997,16 @@ } if (icr0 & I40E_PFINT_ICR0_VFLR_MASK) { - ena_mask &= ~I40E_PFINT_ICR0_ENA_VFLR_MASK; - set_bit(__I40E_VFLR_EVENT_PENDING, pf->state); + /* disable any further VFLR event notifications */ + if (test_bit(__I40E_VF_RESETS_DISABLED, pf->state)) { + u32 reg = rd32(hw, I40E_PFINT_ICR0_ENA); + + reg &= ~I40E_PFINT_ICR0_VFLR_MASK; + wr32(hw, I40E_PFINT_ICR0_ENA, reg); + } else { + ena_mask &= ~I40E_PFINT_ICR0_ENA_VFLR_MASK; + set_bit(__I40E_VFLR_EVENT_PENDING, pf->state); + } } if (icr0 & I40E_PFINT_ICR0_GRST_MASK) { @@ -5898,7 +5907,7 @@ ch->enabled_tc = !i40e_is_channel_macvlan(ch) && enabled_tc; ch->seid = ctxt.seid; ch->vsi_number = ctxt.vsi_number; - ch->stat_counter_idx = cpu_to_le16(ctxt.info.stat_counter_idx); + ch->stat_counter_idx = le16_to_cpu(ctxt.info.stat_counter_idx); /* copy just the sections touched not the entire info * since not all sections are valid as returned by @@ -7543,8 +7552,8 @@ i40e_set_cld_element(struct i40e_cloud_filter *filter, struct i40e_aqc_cloud_filters_element_data *cld) { - int i, j; u32 ipa; + int i; memset(cld, 0, sizeof(*cld)); ether_addr_copy(cld->outer_mac, filter->dst_mac); @@ -7555,14 +7564,14 @@ if (filter->n_proto == ETH_P_IPV6) { #define IPV6_MAX_INDEX (ARRAY_SIZE(filter->dst_ipv6) - 1) - for (i = 0, j = 0; i < ARRAY_SIZE(filter->dst_ipv6); - i++, j += 2) { + for (i = 0; i < ARRAY_SIZE(filter->dst_ipv6); i++) { ipa = be32_to_cpu(filter->dst_ipv6[IPV6_MAX_INDEX - i]); - ipa = cpu_to_le32(ipa); - memcpy(&cld->ipaddr.raw_v6.data[j], &ipa, sizeof(ipa)); + + *(__le32 *)&cld->ipaddr.raw_v6.data[i * 2] = cpu_to_le32(ipa); } } else { ipa = be32_to_cpu(filter->dst_ipv4); + memcpy(&cld->ipaddr.v4.data, &ipa, sizeof(ipa)); } @@ -7610,6 +7619,8 @@ if (filter->flags >= ARRAY_SIZE(flag_table)) return I40E_ERR_CONFIG; + memset(&cld_filter, 0, sizeof(cld_filter)); + /* copy element needed to add cloud filter from filter */ i40e_set_cld_element(filter, &cld_filter); @@ -7673,10 +7684,13 @@ return -EOPNOTSUPP; /* adding filter using src_port/src_ip is not supported at this stage */ - if (filter->src_port || filter->src_ipv4 || + if (filter->src_port || + (filter->src_ipv4 && filter->n_proto != ETH_P_IPV6) || !ipv6_addr_any(&filter->ip.v6.src_ip6)) return -EOPNOTSUPP; + memset(&cld_filter, 0, sizeof(cld_filter)); + /* copy element needed to add cloud filter from filter */ i40e_set_cld_element(filter, &cld_filter.element); @@ -7700,7 +7714,7 @@ cpu_to_le16(I40E_AQC_ADD_CLOUD_FILTER_MAC_VLAN_PORT); } - } else if (filter->dst_ipv4 || + } else if ((filter->dst_ipv4 && filter->n_proto != ETH_P_IPV6) || !ipv6_addr_any(&filter->ip.v6.dst_ip6)) { cld_filter.element.flags = cpu_to_le16(I40E_AQC_ADD_CLOUD_FILTER_IP_PORT); @@ -8479,6 +8493,13 @@ dev_dbg(&pf->pdev->dev, "PFR requested\n"); i40e_handle_reset_warning(pf, lock_acquired); + } else if (reset_flags & I40E_PF_RESET_AND_REBUILD_FLAG) { + /* Request a PF Reset + * + * Resets PF and reinitializes PFs VSI. + */ + i40e_prep_for_reset(pf, lock_acquired); + i40e_reset_and_rebuild(pf, true, lock_acquired); dev_info(&pf->pdev->dev, pf->flags & I40E_FLAG_DISABLE_FW_LLDP ? "FW LLDP is disabled\n" : @@ -9945,7 +9966,6 @@ int old_recovery_mode_bit = test_bit(__I40E_RECOVERY_MODE, pf->state); struct i40e_vsi *vsi = pf->vsi[pf->lan_vsi]; struct i40e_hw *hw = &pf->hw; - u8 set_fc_aq_fail = 0; i40e_status ret; u32 val; int v; @@ -10071,13 +10091,6 @@ i40e_stat_str(&pf->hw, ret), i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); - /* make sure our flow control settings are restored */ - ret = i40e_set_fc(&pf->hw, &set_fc_aq_fail, true); - if (ret) - dev_dbg(&pf->pdev->dev, "setting flow control: ret = %s last_status = %s\n", - i40e_stat_str(&pf->hw, ret), - i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status)); - /* Rebuild the VSIs and VEBs that existed before reset. * They are still in our local switch element arrays, so only * need to rebuild the switch model in the HW. @@ -11760,6 +11773,8 @@ struct i40e_aqc_configure_partition_bw_data bw_data; i40e_status status; + memset(&bw_data, 0, sizeof(bw_data)); + /* Set the valid bit for this PF */ bw_data.pf_valid_bits = cpu_to_le16(BIT(pf->hw.pf_id)); bw_data.max_bw[pf->hw.pf_id] = pf->max_bw & I40E_ALT_BW_VALUE_MASK; @@ -14760,7 +14775,6 @@ int err; u32 val; u32 i; - u8 set_fc_aq_fail; err = pci_enable_device_mem(pdev); if (err) @@ -15082,24 +15096,6 @@ } INIT_LIST_HEAD(&pf->vsi[pf->lan_vsi]->ch_list); - /* Make sure flow control is set according to current settings */ - err = i40e_set_fc(hw, &set_fc_aq_fail, true); - if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_GET) - dev_dbg(&pf->pdev->dev, - "Set fc with err %s aq_err %s on get_phy_cap\n", - i40e_stat_str(hw, err), - i40e_aq_str(hw, hw->aq.asq_last_status)); - if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_SET) - dev_dbg(&pf->pdev->dev, - "Set fc with err %s aq_err %s on set_phy_config\n", - i40e_stat_str(hw, err), - i40e_aq_str(hw, hw->aq.asq_last_status)); - if (set_fc_aq_fail & I40E_SET_FC_AQ_FAIL_UPDATE) - dev_dbg(&pf->pdev->dev, - "Set fc with err %s aq_err %s on get_link_info\n", - i40e_stat_str(hw, err), - i40e_aq_str(hw, hw->aq.asq_last_status)); - /* if FDIR VSI was set up, start it now */ for (i = 0; i < pf->num_alloc_vsi; i++) { if (pf->vsi[i] && pf->vsi[i]->type == I40E_VSI_FDIR) { @@ -15156,6 +15152,8 @@ if (err) { dev_info(&pdev->dev, "setup of misc vector failed: %d\n", err); + i40e_cloud_filter_exit(pf); + i40e_fdir_teardown(pf); goto err_vsis; } } @@ -15352,6 +15350,14 @@ i40e_write_rx_ctl(hw, I40E_PFQF_HENA(0), 0); i40e_write_rx_ctl(hw, I40E_PFQF_HENA(1), 0); + while (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state)) + usleep_range(1000, 2000); + + if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { + set_bit(__I40E_VF_RESETS_DISABLED, pf->state); + i40e_free_vfs(pf); + pf->flags &= ~I40E_FLAG_SRIOV_ENABLED; + } /* no more scheduling of any task */ set_bit(__I40E_SUSPENDED, pf->state); set_bit(__I40E_DOWN, pf->state); @@ -15378,11 +15384,6 @@ */ i40e_notify_client_of_netdev_close(pf->vsi[pf->lan_vsi], false); - if (pf->flags & I40E_FLAG_SRIOV_ENABLED) { - i40e_free_vfs(pf); - pf->flags &= ~I40E_FLAG_SRIOV_ENABLED; - } - i40e_fdir_teardown(pf); /* If there is a switch structure or any orphans, remove them. --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -1783,7 +1783,7 @@ skb_record_rx_queue(skb, rx_ring->queue_index); if (qword & BIT(I40E_RX_DESC_STATUS_L2TAG1P_SHIFT)) { - u16 vlan_tag = rx_desc->wb.qword0.lo_dword.l2tag1; + __le16 vlan_tag = rx_desc->wb.qword0.lo_dword.l2tag1; __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), le16_to_cpu(vlan_tag)); @@ -1851,6 +1851,7 @@ * the adapter for another receive * * @rx_buffer: buffer containing the page + * @rx_buffer_pgcnt: buffer page refcount pre xdp_do_redirect() call * * If page is reusable, rx_buffer->page_offset is adjusted to point to * an unused region in the page. @@ -1873,7 +1874,8 @@ * * In either case, if the page is reusable its refcount is increased. **/ -static bool i40e_can_reuse_rx_page(struct i40e_rx_buffer *rx_buffer) +static bool i40e_can_reuse_rx_page(struct i40e_rx_buffer *rx_buffer, + int rx_buffer_pgcnt) { unsigned int pagecnt_bias = rx_buffer->pagecnt_bias; struct page *page = rx_buffer->page; @@ -1884,7 +1886,7 @@ #if (PAGE_SIZE < 8192) /* if we are only owner of page we can reuse it */ - if (unlikely((page_count(page) - pagecnt_bias) > 1)) + if (unlikely((rx_buffer_pgcnt - pagecnt_bias) > 1)) return false; #else #define I40E_LAST_OFFSET \ @@ -1943,17 +1945,25 @@ * i40e_get_rx_buffer - Fetch Rx buffer and synchronize data for use * @rx_ring: rx descriptor ring to transact packets on * @size: size of buffer to add to skb + * @rx_buffer_pgcnt: buffer page refcount * * This function will pull an Rx buffer from the ring and synchronize it * for use by the CPU. */ static struct i40e_rx_buffer *i40e_get_rx_buffer(struct i40e_ring *rx_ring, - const unsigned int size) + const unsigned int size, + int *rx_buffer_pgcnt) { struct i40e_rx_buffer *rx_buffer; rx_buffer = i40e_rx_bi(rx_ring, rx_ring->next_to_clean); - prefetchw(rx_buffer->page); + *rx_buffer_pgcnt = +#if (PAGE_SIZE < 8192) + page_count(rx_buffer->page); +#else + 0; +#endif + prefetch_page_address(rx_buffer->page); /* we are reusing so sync this buffer for CPU use */ dma_sync_single_range_for_cpu(rx_ring->dev, @@ -2107,14 +2117,16 @@ * i40e_put_rx_buffer - Clean up used buffer and either recycle or free * @rx_ring: rx descriptor ring to transact packets on * @rx_buffer: rx buffer to pull data from + * @rx_buffer_pgcnt: rx buffer page refcount pre xdp_do_redirect() call * * This function will clean up the contents of the rx_buffer. It will * either recycle the buffer or unmap it and free the associated resources. */ static void i40e_put_rx_buffer(struct i40e_ring *rx_ring, - struct i40e_rx_buffer *rx_buffer) + struct i40e_rx_buffer *rx_buffer, + int rx_buffer_pgcnt) { - if (i40e_can_reuse_rx_page(rx_buffer)) { + if (i40e_can_reuse_rx_page(rx_buffer, rx_buffer_pgcnt)) { /* hand second half of page back to the ring */ i40e_reuse_rx_page(rx_ring, rx_buffer); } else { @@ -2328,6 +2340,7 @@ while (likely(total_rx_packets < (unsigned int)budget)) { struct i40e_rx_buffer *rx_buffer; union i40e_rx_desc *rx_desc; + int rx_buffer_pgcnt; unsigned int size; u64 qword; @@ -2370,7 +2383,7 @@ break; i40e_trace(clean_rx_irq, rx_ring, rx_desc, skb); - rx_buffer = i40e_get_rx_buffer(rx_ring, size); + rx_buffer = i40e_get_rx_buffer(rx_ring, size, &rx_buffer_pgcnt); /* retrieve a buffer from the ring */ if (!skb) { @@ -2413,7 +2426,7 @@ break; } - i40e_put_rx_buffer(rx_ring, rx_buffer); + i40e_put_rx_buffer(rx_ring, rx_buffer, rx_buffer_pgcnt); cleaned_count++; if (i40e_is_non_eop(rx_ring, rx_desc, skb)) @@ -3075,13 +3088,16 @@ l4_proto = ip.v4->protocol; } else if (*tx_flags & I40E_TX_FLAGS_IPV6) { + int ret; + tunnel |= I40E_TX_CTX_EXT_IP_IPV6; exthdr = ip.hdr + sizeof(*ip.v6); l4_proto = ip.v6->nexthdr; - if (l4.hdr != exthdr) - ipv6_skip_exthdr(skb, exthdr - skb->data, - &l4_proto, &frag_off); + ret = ipv6_skip_exthdr(skb, exthdr - skb->data, + &l4_proto, &frag_off); + if (ret < 0) + return -1; } /* define outer transport */ --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -55,12 +55,7 @@ pfe.event = VIRTCHNL_EVENT_LINK_CHANGE; pfe.severity = PF_EVENT_SEVERITY_INFO; - - /* Always report link is down if the VF queues aren't enabled */ - if (!vf->queues_enabled) { - pfe.event_data.link_event.link_status = false; - pfe.event_data.link_event.link_speed = 0; - } else if (vf->link_forced) { + if (vf->link_forced) { pfe.event_data.link_event.link_status = vf->link_up; pfe.event_data.link_event.link_speed = (vf->link_up ? VIRTCHNL_LINK_SPEED_40GB : 0); @@ -70,7 +65,6 @@ pfe.event_data.link_event.link_speed = i40e_virtchnl_link_speed(ls->link_speed); } - i40e_aq_send_msg_to_vf(hw, abs_vf_id, VIRTCHNL_OP_EVENT, 0, (u8 *)&pfe, sizeof(pfe), NULL); } @@ -1126,6 +1120,7 @@ struct i40e_pf *pf = vf->pf; struct i40e_hw *hw = &pf->hw; struct i40e_mac_filter *f; + struct hlist_node *h; i40e_status aq_ret = 0; struct i40e_vsi *vsi; int bkt; @@ -1165,7 +1160,8 @@ } return aq_ret; } else if (i40e_getnum_vf_vsi_vlan_filters(vsi)) { - hash_for_each(vsi->mac_filter_hash, bkt, f, hlist) { + spin_lock_bh(&vsi->mac_filter_hash_lock); + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { if (f->vlan < 0 || f->vlan > I40E_MAX_VLANID) continue; aq_ret = i40e_aq_set_vsi_mc_promisc_on_vlan(hw, @@ -1198,6 +1194,7 @@ i40e_aq_str(&pf->hw, aq_err)); } } + spin_unlock_bh(&vsi->mac_filter_hash_lock); return aq_ret; } aq_ret = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid, allmulti, @@ -1334,7 +1331,8 @@ * @vf: pointer to the VF structure * @flr: VFLR was issued or not * - * Returns true if the VF is reset, false otherwise. + * Returns true if the VF is in reset, resets successfully, or resets + * are disabled and false otherwise. **/ bool i40e_reset_vf(struct i40e_vf *vf, bool flr) { @@ -1344,11 +1342,14 @@ u32 reg; int i; + if (test_bit(__I40E_VF_RESETS_DISABLED, pf->state)) + return true; + /* If the VFs have been disabled, this means something else is * resetting the VF, so we shouldn't continue. */ if (test_and_set_bit(__I40E_VF_DISABLE, pf->state)) - return false; + return true; i40e_trigger_vf_reset(vf, flr); @@ -1512,6 +1513,15 @@ i40e_notify_client_of_vf_enable(pf, 0); + /* Disable IOV before freeing resources. This lets any VF drivers + * running in the host get themselves cleaned up before we yank + * the carpet out from underneath their feet. + */ + if (!pci_vfs_assigned(pf->pdev)) + pci_disable_sriov(pf->pdev); + else + dev_warn(&pf->pdev->dev, "VFs are assigned - not disabling SR-IOV\n"); + /* Amortize wait time by stopping all VFs at the same time */ for (i = 0; i < pf->num_alloc_vfs; i++) { if (test_bit(I40E_VF_STATE_INIT, &pf->vf[i].vf_states)) @@ -1527,15 +1537,6 @@ i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[i].lan_vsi_idx]); } - /* Disable IOV before freeing resources. This lets any VF drivers - * running in the host get themselves cleaned up before we yank - * the carpet out from underneath their feet. - */ - if (!pci_vfs_assigned(pf->pdev)) - pci_disable_sriov(pf->pdev); - else - dev_warn(&pf->pdev->dev, "VFs are assigned - not disabling SR-IOV\n"); - /* free up VF resources */ tmp = pf->num_alloc_vfs; pf->num_alloc_vfs = 0; @@ -1699,7 +1700,7 @@ if (num_vfs) { if (!(pf->flags & I40E_FLAG_VEB_MODE_ENABLED)) { pf->flags |= I40E_FLAG_VEB_MODE_ENABLED; - i40e_do_reset_safe(pf, I40E_PF_RESET_FLAG); + i40e_do_reset_safe(pf, I40E_PF_RESET_AND_REBUILD_FLAG); } ret = i40e_pci_sriov_enable(pdev, num_vfs); goto sriov_configure_out; @@ -1708,7 +1709,7 @@ if (!pci_vfs_assigned(pf->pdev)) { i40e_free_vfs(pf); pf->flags &= ~I40E_FLAG_VEB_MODE_ENABLED; - i40e_do_reset_safe(pf, I40E_PF_RESET_FLAG); + i40e_do_reset_safe(pf, I40E_PF_RESET_AND_REBUILD_FLAG); } else { dev_warn(&pdev->dev, "Unable to free VFs because some are assigned to VMs.\n"); ret = -EINVAL; @@ -2388,8 +2389,6 @@ } } - vf->queues_enabled = true; - error_param: /* send the response to the VF */ return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES, @@ -2411,9 +2410,6 @@ struct i40e_pf *pf = vf->pf; i40e_status aq_ret = 0; - /* Immediately mark queues as disabled */ - vf->queues_enabled = false; - if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) { aq_ret = I40E_ERR_PARAM; goto error_param; @@ -2662,6 +2658,10 @@ spin_unlock_bh(&vsi->mac_filter_hash_lock); goto error_param; } + if (is_valid_ether_addr(al->list[i].addr) && + is_zero_ether_addr(vf->default_lan_addr.addr)) + ether_addr_copy(vf->default_lan_addr.addr, + al->list[i].addr); } } spin_unlock_bh(&vsi->mac_filter_hash_lock); @@ -2689,6 +2689,7 @@ { struct virtchnl_ether_addr_list *al = (struct virtchnl_ether_addr_list *)msg; + bool was_unimac_deleted = false; struct i40e_pf *pf = vf->pf; struct i40e_vsi *vsi = NULL; i40e_status ret = 0; @@ -2708,6 +2709,8 @@ ret = I40E_ERR_INVALID_MAC_ADDR; goto error_param; } + if (ether_addr_equal(al->list[i].addr, vf->default_lan_addr.addr)) + was_unimac_deleted = true; } vsi = pf->vsi[vf->lan_vsi_idx]; @@ -2728,10 +2731,25 @@ dev_err(&pf->pdev->dev, "Unable to program VF %d MAC filters, error %d\n", vf->vf_id, ret); + if (vf->trusted && was_unimac_deleted) { + struct i40e_mac_filter *f; + struct hlist_node *h; + u8 *macaddr = NULL; + int bkt; + + /* set last unicast mac address as default */ + spin_lock_bh(&vsi->mac_filter_hash_lock); + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { + if (is_valid_ether_addr(f->macaddr)) + macaddr = f->macaddr; + } + if (macaddr) + ether_addr_copy(vf->default_lan_addr.addr, macaddr); + spin_unlock_bh(&vsi->mac_filter_hash_lock); + } error_param: /* send the response to the VF */ - return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DEL_ETH_ADDR, - ret); + return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DEL_ETH_ADDR, ret); } /** @@ -3969,20 +3987,16 @@ goto error_param; vf = &pf->vf[vf_id]; - vsi = pf->vsi[vf->lan_vsi_idx]; /* When the VF is resetting wait until it is done. * It can take up to 200 milliseconds, * but wait for up to 300 milliseconds to be safe. - * If the VF is indeed in reset, the vsi pointer has - * to show on the newly loaded vsi under pf->vsi[id]. + * Acquire the VSI pointer only after the VF has been + * properly initialized. */ for (i = 0; i < 15; i++) { - if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { - if (i > 0) - vsi = pf->vsi[vf->lan_vsi_idx]; + if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) break; - } msleep(20); } if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { @@ -3991,6 +4005,7 @@ ret = -EAGAIN; goto error_param; } + vsi = pf->vsi[vf->lan_vsi_idx]; if (is_multicast_ether_addr(mac)) { dev_err(&pf->pdev->dev, --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h @@ -99,7 +99,6 @@ unsigned int tx_rate; /* Tx bandwidth limit in Mbps */ bool link_forced; bool link_up; /* only valid if VF link is forced */ - bool queues_enabled; /* true if the VF queues are enabled */ bool spoofchk; u16 num_vlan; --- linux-5.8.0.orig/drivers/net/ethernet/intel/i40e/i40e_xsk.c +++ linux-5.8.0/drivers/net/ethernet/intel/i40e/i40e_xsk.c @@ -215,8 +215,11 @@ } while (count); no_buffers: - if (rx_ring->next_to_use != ntu) + if (rx_ring->next_to_use != ntu) { + /* clear the status bits for the next_to_use descriptor */ + rx_desc->wb.qword1.status_error_len = 0; i40e_release_rx_desc(rx_ring, ntu); + } return ok; } @@ -336,12 +339,12 @@ * SBP is *not* set in PRT_SBPVSI (default not set). */ skb = i40e_construct_skb_zc(rx_ring, *bi); - *bi = NULL; if (!skb) { rx_ring->rx_stats.alloc_buff_failed++; break; } + *bi = NULL; cleaned_count++; i40e_inc_ntc(rx_ring); --- linux-5.8.0.orig/drivers/net/ethernet/intel/iavf/iavf_main.c +++ linux-5.8.0/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -1786,7 +1786,8 @@ goto err_alloc; } - if (iavf_process_config(adapter)) + err = iavf_process_config(adapter); + if (err) goto err_alloc; adapter->current_op = VIRTCHNL_OP_UNKNOWN; @@ -1844,11 +1845,9 @@ netif_tx_stop_all_queues(netdev); if (CLIENT_ALLOWED(adapter)) { err = iavf_lan_add_device(adapter); - if (err) { - rtnl_unlock(); + if (err) dev_info(&pdev->dev, "Failed to add VF to client API service list: %d\n", err); - } } dev_info(&pdev->dev, "MAC address: %pM\n", adapter->hw.mac.addr); if (netdev->features & NETIF_F_GRO) @@ -1863,8 +1862,10 @@ adapter->rss_key = kzalloc(adapter->rss_key_size, GFP_KERNEL); adapter->rss_lut = kzalloc(adapter->rss_lut_size, GFP_KERNEL); - if (!adapter->rss_key || !adapter->rss_lut) + if (!adapter->rss_key || !adapter->rss_lut) { + err = -ENOMEM; goto err_mem; + } if (RSS_AQ(adapter)) adapter->aq_required |= IAVF_FLAG_AQ_CONFIGURE_RSS; else @@ -1946,7 +1947,10 @@ iavf_send_api_ver(adapter); } } else { - if (!iavf_process_aq_command(adapter) && + /* An error will be returned if no commands were + * processed; use this opportunity to update stats + */ + if (iavf_process_aq_command(adapter) && adapter->state == __IAVF_RUNNING) iavf_request_stats(adapter); } @@ -3772,7 +3776,6 @@ return err; } -#ifdef CONFIG_PM /** * iavf_suspend - Power management suspend routine * @pdev: PCI device information struct @@ -3780,11 +3783,10 @@ * * Called when the system (VM) is entering sleep/suspend. **/ -static int iavf_suspend(struct pci_dev *pdev, pm_message_t state) +static int __maybe_unused iavf_suspend(struct device *dev_d) { - struct net_device *netdev = pci_get_drvdata(pdev); + struct net_device *netdev = dev_get_drvdata(dev_d); struct iavf_adapter *adapter = netdev_priv(netdev); - int retval = 0; netif_device_detach(netdev); @@ -3802,12 +3804,6 @@ clear_bit(__IAVF_IN_CRITICAL_TASK, &adapter->crit_section); - retval = pci_save_state(pdev); - if (retval) - return retval; - - pci_disable_device(pdev); - return 0; } @@ -3817,24 +3813,13 @@ * * Called when the system (VM) is resumed from sleep/suspend. **/ -static int iavf_resume(struct pci_dev *pdev) +static int __maybe_unused iavf_resume(struct device *dev_d) { - struct iavf_adapter *adapter = pci_get_drvdata(pdev); - struct net_device *netdev = adapter->netdev; + struct pci_dev *pdev = to_pci_dev(dev_d); + struct net_device *netdev = pci_get_drvdata(pdev); + struct iavf_adapter *adapter = netdev_priv(netdev); u32 err; - pci_set_power_state(pdev, PCI_D0); - pci_restore_state(pdev); - /* pci_restore_state clears dev->state_saved so call - * pci_save_state to restore it. - */ - pci_save_state(pdev); - - err = pci_enable_device_mem(pdev); - if (err) { - dev_err(&pdev->dev, "Cannot enable PCI device from suspend.\n"); - return err; - } pci_set_master(pdev); rtnl_lock(); @@ -3858,7 +3843,6 @@ return err; } -#endif /* CONFIG_PM */ /** * iavf_remove - Device Removal Routine * @pdev: PCI device information struct @@ -3960,16 +3944,15 @@ pci_disable_device(pdev); } +static SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume); + static struct pci_driver iavf_driver = { - .name = iavf_driver_name, - .id_table = iavf_pci_tbl, - .probe = iavf_probe, - .remove = iavf_remove, -#ifdef CONFIG_PM - .suspend = iavf_suspend, - .resume = iavf_resume, -#endif - .shutdown = iavf_shutdown, + .name = iavf_driver_name, + .id_table = iavf_pci_tbl, + .probe = iavf_probe, + .remove = iavf_remove, + .driver.pm = &iavf_pm_ops, + .shutdown = iavf_shutdown, }; /** --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice.h +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice.h @@ -68,7 +68,9 @@ #define ICE_INT_NAME_STR_LEN (IFNAMSIZ + 16) #define ICE_AQ_LEN 64 #define ICE_MBXSQ_LEN 64 -#define ICE_MIN_MSIX 2 +#define ICE_MIN_LAN_TXRX_MSIX 1 +#define ICE_MIN_LAN_OICR_MSIX 1 +#define ICE_MIN_MSIX (ICE_MIN_LAN_TXRX_MSIX + ICE_MIN_LAN_OICR_MSIX) #define ICE_FDIR_MSIX 1 #define ICE_NO_VSI 0xffff #define ICE_VSI_MAP_CONTIG 0 @@ -427,9 +429,7 @@ struct ice_hw_port_stats stats_prev; struct ice_hw hw; u8 stat_prev_loaded:1; /* has previous stats been loaded */ -#ifdef CONFIG_DCB u16 dcbx_cap; -#endif /* CONFIG_DCB */ u32 tx_timeout_count; unsigned long tx_timeout_last_recovery; u32 tx_timeout_recovery_level; --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_dcb_nl.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_dcb_nl.c @@ -136,7 +136,7 @@ if (!test_bit(ICE_FLAG_DCB_CAPABLE, pf->flags)) return -EINVAL; - *num = IEEE_8021QAZ_MAX_TCS; + *num = pf->hw.func_caps.common_cap.maxtc; return 0; } @@ -160,6 +160,10 @@ { struct ice_pf *pf = ice_netdev_to_pf(netdev); + /* if FW LLDP agent is running, DCBNL not allowed to change mode */ + if (test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags)) + return ICE_DCB_NO_HW_CHG; + /* No support for LLD_MANAGED modes or CEE+IEEE */ if ((mode & DCB_CAP_DCBX_LLD_MANAGED) || ((mode & DCB_CAP_DCBX_VER_IEEE) && (mode & DCB_CAP_DCBX_VER_CEE)) || --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -8,6 +8,7 @@ #include "ice_fltr.h" #include "ice_lib.h" #include "ice_dcb_lib.h" +#include struct ice_stats { char stat_string[ETH_GSTRING_LEN]; @@ -1256,6 +1257,9 @@ status = ice_init_pf_dcb(pf, true); if (status) dev_warn(dev, "Fail to init DCB\n"); + + pf->dcbx_cap &= ~DCB_CAP_DCBX_LLD_MANAGED; + pf->dcbx_cap |= DCB_CAP_DCBX_HOST; } else { enum ice_status status; bool dcbx_agent_status; @@ -1298,6 +1302,9 @@ if (status) dev_dbg(dev, "Fail to enable MIB change events\n"); + pf->dcbx_cap &= ~DCB_CAP_DCBX_HOST; + pf->dcbx_cap |= DCB_CAP_DCBX_LLD_MANAGED; + ice_nway_reset(netdev); } } @@ -3141,8 +3148,8 @@ */ static int ice_get_max_txq(struct ice_pf *pf) { - return min_t(int, num_online_cpus(), - pf->hw.func_caps.common_cap.num_txq); + return min3(pf->num_lan_msix, (u16)num_online_cpus(), + (u16)pf->hw.func_caps.common_cap.num_txq); } /** @@ -3151,8 +3158,8 @@ */ static int ice_get_max_rxq(struct ice_pf *pf) { - return min_t(int, num_online_cpus(), - pf->hw.func_caps.common_cap.num_rxq); + return min3(pf->num_lan_msix, (u16)num_online_cpus(), + (u16)pf->hw.func_caps.common_cap.num_rxq); } /** @@ -3205,6 +3212,18 @@ } /** + * ice_get_valid_rss_size - return valid number of RSS queues + * @hw: pointer to the HW structure + * @new_size: requested RSS queues + */ +static int ice_get_valid_rss_size(struct ice_hw *hw, int new_size) +{ + struct ice_hw_common_caps *caps = &hw->func_caps.common_cap; + + return min_t(int, new_size, BIT(caps->rss_table_entry_width)); +} + +/** * ice_vsi_set_dflt_rss_lut - set default RSS LUT with requested RSS size * @vsi: VSI to reconfigure RSS LUT on * @req_rss_size: requested range of queue numbers for hashing @@ -3231,14 +3250,10 @@ return -ENOMEM; /* set RSS LUT parameters */ - if (!test_bit(ICE_FLAG_RSS_ENA, pf->flags)) { + if (!test_bit(ICE_FLAG_RSS_ENA, pf->flags)) vsi->rss_size = 1; - } else { - struct ice_hw_common_caps *caps = &hw->func_caps.common_cap; - - vsi->rss_size = min_t(int, req_rss_size, - BIT(caps->rss_table_entry_width)); - } + else + vsi->rss_size = ice_get_valid_rss_size(hw, req_rss_size); /* create/set RSS LUT */ ice_fill_rss_lut(lut, vsi->rss_table_size, vsi->rss_size); @@ -3317,9 +3332,12 @@ ice_vsi_recfg_qs(vsi, new_rx, new_tx); - if (new_rx && !netif_is_rxfh_configured(dev)) + if (!netif_is_rxfh_configured(dev)) return ice_vsi_set_dflt_rss_lut(vsi, new_rx); + /* Update rss_size due to change in Rx queues */ + vsi->rss_size = ice_get_valid_rss_size(&pf->hw, new_rx); + return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c @@ -1577,7 +1577,13 @@ sizeof(struct in6_addr)); input->ip.v6.l4_header = fsp->h_u.usr_ip6_spec.l4_4_bytes; input->ip.v6.tc = fsp->h_u.usr_ip6_spec.tclass; - input->ip.v6.proto = fsp->h_u.usr_ip6_spec.l4_proto; + + /* if no protocol requested, use IPPROTO_NONE */ + if (!fsp->m_u.usr_ip6_spec.l4_proto) + input->ip.v6.proto = IPPROTO_NONE; + else + input->ip.v6.proto = fsp->h_u.usr_ip6_spec.l4_proto; + memcpy(input->mask.v6.dst_ip, fsp->m_u.usr_ip6_spec.ip6dst, sizeof(struct in6_addr)); memcpy(input->mask.v6.src_ip, fsp->m_u.usr_ip6_spec.ip6src, --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_flex_pipe.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_flex_pipe.c @@ -2922,6 +2922,8 @@ ICE_FLOW_ENTRY_HNDL(e)); list_del(&p->l_entry); + + mutex_destroy(&p->entries_lock); devm_kfree(ice_hw_to_dev(hw), p); } mutex_unlock(&hw->fl_profs_locks[blk_idx]); @@ -3039,7 +3041,7 @@ memset(prof_redir->t, 0, prof_redir->count * sizeof(*prof_redir->t)); - memset(es->t, 0, es->count * sizeof(*es->t)); + memset(es->t, 0, es->count * sizeof(*es->t) * es->fvw); memset(es->ref_count, 0, es->count * sizeof(*es->ref_count)); memset(es->written, 0, es->count * sizeof(*es->written)); } @@ -3150,10 +3152,12 @@ es->ref_count = devm_kcalloc(ice_hw_to_dev(hw), es->count, sizeof(*es->ref_count), GFP_KERNEL); + if (!es->ref_count) + goto err; es->written = devm_kcalloc(ice_hw_to_dev(hw), es->count, sizeof(*es->written), GFP_KERNEL); - if (!es->ref_count) + if (!es->written) goto err; } return 0; --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_lib.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_lib.c @@ -154,8 +154,9 @@ switch (vsi->type) { case ICE_VSI_PF: - vsi->alloc_txq = min_t(int, ice_get_avail_txq_count(pf), - num_online_cpus()); + vsi->alloc_txq = min3(pf->num_lan_msix, + ice_get_avail_txq_count(pf), + (u16)num_online_cpus()); if (vsi->req_txq) { vsi->alloc_txq = vsi->req_txq; vsi->num_txq = vsi->req_txq; @@ -167,8 +168,9 @@ if (!test_bit(ICE_FLAG_RSS_ENA, pf->flags)) { vsi->alloc_rxq = 1; } else { - vsi->alloc_rxq = min_t(int, ice_get_avail_rxq_count(pf), - num_online_cpus()); + vsi->alloc_rxq = min3(pf->num_lan_msix, + ice_get_avail_rxq_count(pf), + (u16)num_online_cpus()); if (vsi->req_rxq) { vsi->alloc_rxq = vsi->req_rxq; vsi->num_rxq = vsi->req_rxq; @@ -177,7 +179,9 @@ pf->num_lan_rx = vsi->alloc_rxq; - vsi->num_q_vectors = max_t(int, vsi->alloc_rxq, vsi->alloc_txq); + vsi->num_q_vectors = min_t(int, pf->num_lan_msix, + max_t(int, vsi->alloc_rxq, + vsi->alloc_txq)); break; case ICE_VSI_VF: vf = &pf->vf[vsi->vf_id]; @@ -240,7 +244,7 @@ * ice_vsi_delete - delete a VSI from the switch * @vsi: pointer to VSI being removed */ -void ice_vsi_delete(struct ice_vsi *vsi) +static void ice_vsi_delete(struct ice_vsi *vsi) { struct ice_pf *pf = vsi->back; struct ice_vsi_ctx *ctxt; @@ -307,7 +311,7 @@ * * Returns 0 on success, negative on failure */ -int ice_vsi_clear(struct ice_vsi *vsi) +static int ice_vsi_clear(struct ice_vsi *vsi) { struct ice_pf *pf = NULL; struct device *dev; @@ -557,7 +561,7 @@ * ice_vsi_put_qs - Release queues from VSI to PF * @vsi: the VSI that is going to release queues */ -void ice_vsi_put_qs(struct ice_vsi *vsi) +static void ice_vsi_put_qs(struct ice_vsi *vsi) { struct ice_pf *pf = vsi->back; int i; @@ -1190,6 +1194,18 @@ { int i; + /* Avoid stale references by clearing map from vector to ring */ + if (vsi->q_vectors) { + ice_for_each_q_vector(vsi, i) { + struct ice_q_vector *q_vector = vsi->q_vectors[i]; + + if (q_vector) { + q_vector->tx.ring = NULL; + q_vector->rx.ring = NULL; + } + } + } + if (vsi->tx_rings) { for (i = 0; i < vsi->alloc_txq; i++) { if (vsi->tx_rings[i]) { @@ -2254,7 +2270,7 @@ if (status) { dev_err(dev, "VSI %d failed lan queue config, error %s\n", vsi->vsi_num, ice_stat_str(status)); - goto unroll_vector_base; + goto unroll_clear_rings; } /* Add switch rule to drop all Tx Flow Control Frames, of look up --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_lib.h +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_lib.h @@ -43,10 +43,6 @@ void ice_cfg_sw_lldp(struct ice_vsi *vsi, bool tx, bool create); -void ice_vsi_delete(struct ice_vsi *vsi); - -int ice_vsi_clear(struct ice_vsi *vsi); - #ifdef CONFIG_DCB int ice_vsi_cfg_tc(struct ice_vsi *vsi, u8 ena_tc); #endif /* CONFIG_DCB */ @@ -77,8 +73,6 @@ void ice_write_qrxflxp_cntxt(struct ice_hw *hw, u16 pf_q, u32 rxdid, u32 prio); -void ice_vsi_put_qs(struct ice_vsi *vsi); - void ice_vsi_dis_irq(struct ice_vsi *vsi); void ice_vsi_free_irq(struct ice_vsi *vsi); --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_main.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_main.c @@ -2605,10 +2605,8 @@ return -EBUSY; vsi = ice_pf_vsi_setup(pf, pf->hw.port_info); - if (!vsi) { - status = -ENOMEM; - goto unroll_vsi_setup; - } + if (!vsi) + return -ENOMEM; status = ice_cfg_netdev(vsi); if (status) { @@ -2655,12 +2653,7 @@ } unroll_vsi_setup: - if (vsi) { - ice_vsi_free_q_vectors(vsi); - ice_vsi_delete(vsi); - ice_vsi_put_qs(vsi); - ice_vsi_clear(vsi); - } + ice_vsi_release(vsi); return status; } @@ -2863,18 +2856,14 @@ if (v_actual < v_budget) { dev_warn(dev, "not enough OS MSI-X vectors. requested = %d, obtained = %d\n", v_budget, v_actual); -/* 2 vectors each for LAN and RDMA (traffic + OICR), one for flow director */ -#define ICE_MIN_LAN_VECS 2 -#define ICE_MIN_RDMA_VECS 2 -#define ICE_MIN_VECS (ICE_MIN_LAN_VECS + ICE_MIN_RDMA_VECS + 1) - if (v_actual < ICE_MIN_LAN_VECS) { + if (v_actual < ICE_MIN_MSIX) { /* error if we can't get minimum vectors */ pci_disable_msix(pf->pdev); err = -ERANGE; goto msix_err; } else { - pf->num_lan_msix = ICE_MIN_LAN_VECS; + pf->num_lan_msix = ICE_MIN_LAN_TXRX_MSIX; } } @@ -3845,9 +3834,15 @@ goto err_update_filters; } - /* Add filter for new MAC. If filter exists, just return success */ + /* Add filter for new MAC. If filter exists, return success */ status = ice_fltr_add_mac(vsi, mac, ICE_FWD_TO_VSI); if (status == ICE_ERR_ALREADY_EXISTS) { + /* Although this MAC filter is already present in hardware it's + * possible in some cases (e.g. bonding) that dev_addr was + * modified outside of the driver and needs to be restored back + * to this value. + */ + memcpy(netdev->dev_addr, mac, netdev->addr_len); netdev_dbg(netdev, "filter for MAC %pM already exists\n", mac); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_txrx.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_txrx.c @@ -1919,12 +1919,15 @@ ICE_TX_CTX_EIPT_IPV4_NO_CSUM; l4_proto = ip.v4->protocol; } else if (first->tx_flags & ICE_TX_FLAGS_IPV6) { + int ret; + tunnel |= ICE_TX_CTX_EIPT_IPV6; exthdr = ip.hdr + sizeof(*ip.v6); l4_proto = ip.v6->nexthdr; - if (l4.hdr != exthdr) - ipv6_skip_exthdr(skb, exthdr - skb->data, - &l4_proto, &frag_off); + ret = ipv6_skip_exthdr(skb, exthdr - skb->data, + &l4_proto, &frag_off); + if (ret < 0) + return -1; } /* define outer transport */ --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c @@ -1902,6 +1902,29 @@ } /** + * ice_vc_get_max_frame_size - get max frame size allowed for VF + * @vf: VF used to determine max frame size + * + * Max frame size is determined based on the current port's max frame size and + * whether a port VLAN is configured on this VF. The VF is not aware whether + * it's in a port VLAN so the PF needs to account for this in max frame size + * checks and sending the max frame size to the VF. + */ +static u16 ice_vc_get_max_frame_size(struct ice_vf *vf) +{ + struct ice_vsi *vsi = vf->pf->vsi[vf->lan_vsi_idx]; + struct ice_port_info *pi = vsi->port_info; + u16 max_frame_size; + + max_frame_size = pi->phy.link_info.max_frame_size; + + if (vf->port_vlan_info) + max_frame_size -= VLAN_HLEN; + + return max_frame_size; +} + +/** * ice_vc_get_vf_res_msg * @vf: pointer to the VF info * @msg: pointer to the msg buffer @@ -1983,6 +2006,7 @@ vfres->max_vectors = pf->num_msix_per_vf; vfres->rss_key_size = ICE_VSIQF_HKEY_ARRAY_SIZE; vfres->rss_lut_size = ICE_VSIQF_HLUT_ARRAY_SIZE; + vfres->max_mtu = ice_vc_get_max_frame_size(vf); vfres->vsi_res[0].vsi_id = vf->lan_vsi_num; vfres->vsi_res[0].vsi_type = VIRTCHNL_VSI_SRIOV; @@ -2975,6 +2999,8 @@ /* copy Rx queue info from VF into VSI */ if (qpi->rxq.ring_len > 0) { + u16 max_frame_size = ice_vc_get_max_frame_size(vf); + num_rxq++; vsi->rx_rings[i]->dma = qpi->rxq.dma_ring_addr; vsi->rx_rings[i]->count = qpi->rxq.ring_len; @@ -2987,7 +3013,7 @@ } vsi->rx_buf_len = qpi->rxq.databuffer_size; vsi->rx_rings[i]->rx_buf_len = vsi->rx_buf_len; - if (qpi->rxq.max_pkt_size >= (16 * 1024) || + if (qpi->rxq.max_pkt_size > max_frame_size || qpi->rxq.max_pkt_size < 64) { v_ret = VIRTCHNL_STATUS_ERR_PARAM; goto error_param; @@ -2995,6 +3021,11 @@ } vsi->max_frame = qpi->rxq.max_pkt_size; + /* add space for the port VLAN since the VF driver is not + * expected to account for it in the MTU calculation + */ + if (vf->port_vlan_info) + vsi->max_frame += VLAN_HLEN; } /* VF can request to configure less than allocated queues --- linux-5.8.0.orig/drivers/net/ethernet/intel/ice/ice_xsk.c +++ linux-5.8.0/drivers/net/ethernet/intel/ice/ice_xsk.c @@ -445,8 +445,11 @@ } } while (--count); - if (rx_ring->next_to_use != ntu) + if (rx_ring->next_to_use != ntu) { + /* clear the status bits for the next_to_use descriptor */ + rx_desc->wb.status_error0 = 0; ice_release_rx_desc(rx_ring, ntu); + } return ret; } --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc.h +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc.h @@ -298,18 +298,14 @@ #define IGC_RX_HDR_LEN IGC_RXBUFFER_256 /* Transmit and receive latency (for PTP timestamps) */ -/* FIXME: These values were estimated using the ones that i225 has as - * basis, they seem to provide good numbers with ptp4l/phc2sys, but we - * need to confirm them. - */ -#define IGC_I225_TX_LATENCY_10 9542 -#define IGC_I225_TX_LATENCY_100 1024 -#define IGC_I225_TX_LATENCY_1000 178 -#define IGC_I225_TX_LATENCY_2500 64 -#define IGC_I225_RX_LATENCY_10 20662 -#define IGC_I225_RX_LATENCY_100 2213 -#define IGC_I225_RX_LATENCY_1000 448 -#define IGC_I225_RX_LATENCY_2500 160 +#define IGC_I225_TX_LATENCY_10 240 +#define IGC_I225_TX_LATENCY_100 58 +#define IGC_I225_TX_LATENCY_1000 80 +#define IGC_I225_TX_LATENCY_2500 1325 +#define IGC_I225_RX_LATENCY_10 6450 +#define IGC_I225_RX_LATENCY_100 185 +#define IGC_I225_RX_LATENCY_1000 300 +#define IGC_I225_RX_LATENCY_2500 1485 /* RX and TX descriptor control thresholds. * PTHRESH - MAC will consider prefetch if it has fewer than this number of @@ -547,7 +543,7 @@ void igc_ptp_suspend(struct igc_adapter *adapter); void igc_ptp_stop(struct igc_adapter *adapter); void igc_ptp_rx_rgtstamp(struct igc_q_vector *q_vector, struct sk_buff *skb); -void igc_ptp_rx_pktstamp(struct igc_q_vector *q_vector, void *va, +void igc_ptp_rx_pktstamp(struct igc_q_vector *q_vector, __le32 *va, struct sk_buff *skb); int igc_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); int igc_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc_ethtool.c @@ -1588,12 +1588,18 @@ cmd->base.phy_address = hw->phy.addr; /* advertising link modes */ - ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Half); - ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Full); - ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Half); - ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Full); - ethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full); - ethtool_link_ksettings_add_link_mode(cmd, advertising, 2500baseT_Full); + if (hw->phy.autoneg_advertised & ADVERTISE_10_HALF) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Half); + if (hw->phy.autoneg_advertised & ADVERTISE_10_FULL) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 10baseT_Full); + if (hw->phy.autoneg_advertised & ADVERTISE_100_HALF) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Half); + if (hw->phy.autoneg_advertised & ADVERTISE_100_FULL) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 100baseT_Full); + if (hw->phy.autoneg_advertised & ADVERTISE_1000_FULL) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 1000baseT_Full); + if (hw->phy.autoneg_advertised & ADVERTISE_2500_FULL) + ethtool_link_ksettings_add_link_mode(cmd, advertising, 2500baseT_Full); /* set autoneg settings */ if (hw->mac.autoneg == 1) { @@ -1602,6 +1608,9 @@ Autoneg); } + /* Set pause flow control settings */ + ethtool_link_ksettings_add_link_mode(cmd, supported, Pause); + switch (hw->fc.requested_mode) { case igc_fc_full: ethtool_link_ksettings_add_link_mode(cmd, advertising, Pause); @@ -1616,12 +1625,11 @@ Asym_Pause); break; default: - ethtool_link_ksettings_add_link_mode(cmd, advertising, Pause); - ethtool_link_ksettings_add_link_mode(cmd, advertising, - Asym_Pause); + break; } - status = rd32(IGC_STATUS); + status = pm_runtime_suspended(&adapter->pdev->dev) ? + 0 : rd32(IGC_STATUS); if (status & IGC_STATUS_LU) { if (status & IGC_STATUS_SPEED_1000) { @@ -1705,6 +1713,12 @@ ethtool_convert_link_mode_to_legacy_u32(&advertising, cmd->link_modes.advertising); + /* Converting to legacy u32 drops ETHTOOL_LINK_MODE_2500baseT_Full_BIT. + * We have to check this and convert it to ADVERTISE_2500_FULL + * (aka ETHTOOL_LINK_MODE_2500baseX_Full_BIT) explicitly. + */ + if (ethtool_link_ksettings_test_link_mode(cmd, advertising, 2500baseT_Full)) + advertising |= ADVERTISE_2500_FULL; if (cmd->base.autoneg == AUTONEG_ENABLE) { hw->mac.autoneg = 1; --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc_i225.c +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc_i225.c @@ -219,9 +219,9 @@ u16 *data) { struct igc_nvm_info *nvm = &hw->nvm; + s32 ret_val = -IGC_ERR_NVM; u32 attempts = 100000; u32 i, k, eewr = 0; - s32 ret_val = 0; /* A check for invalid values: offset too large, too many words, * too many words for the offset, and not enough words. @@ -229,7 +229,6 @@ if (offset >= nvm->word_size || (words > (nvm->word_size - offset)) || words == 0) { hw_dbg("nvm parameter(s) out of bounds\n"); - ret_val = -IGC_ERR_NVM; goto out; } --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc_mac.c +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc_mac.c @@ -642,7 +642,7 @@ } out: - return 0; + return ret_val; } /** --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc_main.c +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc_main.c @@ -3870,10 +3870,19 @@ adapter = container_of(work, struct igc_adapter, reset_task); + rtnl_lock(); + /* If we're already down or resetting, just bail */ + if (test_bit(__IGC_DOWN, &adapter->state) || + test_bit(__IGC_RESETTING, &adapter->state)) { + rtnl_unlock(); + return; + } + igc_rings_dump(adapter); igc_regs_dump(adapter); netdev_err(adapter->netdev, "Reset adapter\n"); igc_reinit_locked(adapter); + rtnl_unlock(); } /** @@ -3915,21 +3924,23 @@ } /** - * igc_get_stats - Get System Network Statistics + * igc_get_stats64 - Get System Network Statistics * @netdev: network interface device structure + * @stats: rtnl_link_stats64 pointer * * Returns the address of the device statistics structure. * The statistics are updated here and also from the timer callback. */ -static struct net_device_stats *igc_get_stats(struct net_device *netdev) +static void igc_get_stats64(struct net_device *netdev, + struct rtnl_link_stats64 *stats) { struct igc_adapter *adapter = netdev_priv(netdev); + spin_lock(&adapter->stats64_lock); if (!test_bit(__IGC_RESETTING, &adapter->state)) igc_update_stats(adapter); - - /* only return the current stats */ - return &netdev->stats; + memcpy(stats, &adapter->stats64, sizeof(*stats)); + spin_unlock(&adapter->stats64_lock); } static netdev_features_t igc_fix_features(struct net_device *netdev, @@ -4849,7 +4860,7 @@ .ndo_set_rx_mode = igc_set_rx_mode, .ndo_set_mac_address = igc_set_mac, .ndo_change_mtu = igc_change_mtu, - .ndo_get_stats = igc_get_stats, + .ndo_get_stats64 = igc_get_stats64, .ndo_fix_features = igc_fix_features, .ndo_set_features = igc_set_features, .ndo_features_check = igc_features_check, @@ -5158,6 +5169,8 @@ device_set_wakeup_enable(&adapter->pdev->dev, adapter->flags & IGC_FLAG_WOL_SUPPORTED); + igc_ptp_init(adapter); + /* reset the hardware with the new settings */ igc_reset(adapter); @@ -5174,9 +5187,6 @@ /* carrier off reporting is important to ethtool even BEFORE open */ netif_carrier_off(netdev); - /* do hw tstamp init after resetting */ - igc_ptp_init(adapter); - /* Check if Media Autosense is enabled */ adapter->ei = *ei; --- linux-5.8.0.orig/drivers/net/ethernet/intel/igc/igc_ptp.c +++ linux-5.8.0/drivers/net/ethernet/intel/igc/igc_ptp.c @@ -160,46 +160,54 @@ } /** - * igc_ptp_rx_pktstamp - retrieve Rx per packet timestamp + * igc_ptp_rx_pktstamp - Retrieve timestamp from Rx packet buffer * @q_vector: Pointer to interrupt specific structure * @va: Pointer to address containing Rx buffer * @skb: Buffer containing timestamp and packet * - * This function is meant to retrieve the first timestamp from the - * first buffer of an incoming frame. The value is stored in little - * endian format starting on byte 0. There's a second timestamp - * starting on byte 8. - **/ -void igc_ptp_rx_pktstamp(struct igc_q_vector *q_vector, void *va, + * This function retrieves the timestamp saved in the beginning of packet + * buffer. While two timestamps are available, one in timer0 reference and the + * other in timer1 reference, this function considers only the timestamp in + * timer0 reference. + */ +void igc_ptp_rx_pktstamp(struct igc_q_vector *q_vector, __le32 *va, struct sk_buff *skb) { struct igc_adapter *adapter = q_vector->adapter; - __le64 *regval = (__le64 *)va; - int adjust = 0; + u64 regval; + int adjust; - /* The timestamp is recorded in little endian format. - * DWORD: | 0 | 1 | 2 | 3 - * Field: | Timer0 Low | Timer0 High | Timer1 Low | Timer1 High + /* Timestamps are saved in little endian at the beginning of the packet + * buffer following the layout: + * + * DWORD: | 0 | 1 | 2 | 3 | + * Field: | Timer1 SYSTIML | Timer1 SYSTIMH | Timer0 SYSTIML | Timer0 SYSTIMH | + * + * SYSTIML holds the nanoseconds part while SYSTIMH holds the seconds + * part of the timestamp. */ - igc_ptp_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), - le64_to_cpu(regval[0])); + regval = le32_to_cpu(va[2]); + regval |= (u64)le32_to_cpu(va[3]) << 32; + igc_ptp_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), regval); - /* adjust timestamp for the RX latency based on link speed */ - if (adapter->hw.mac.type == igc_i225) { - switch (adapter->link_speed) { - case SPEED_10: - adjust = IGC_I225_RX_LATENCY_10; - break; - case SPEED_100: - adjust = IGC_I225_RX_LATENCY_100; - break; - case SPEED_1000: - adjust = IGC_I225_RX_LATENCY_1000; - break; - case SPEED_2500: - adjust = IGC_I225_RX_LATENCY_2500; - break; - } + /* Adjust timestamp for the RX latency based on link speed */ + switch (adapter->link_speed) { + case SPEED_10: + adjust = IGC_I225_RX_LATENCY_10; + break; + case SPEED_100: + adjust = IGC_I225_RX_LATENCY_100; + break; + case SPEED_1000: + adjust = IGC_I225_RX_LATENCY_1000; + break; + case SPEED_2500: + adjust = IGC_I225_RX_LATENCY_2500; + break; + default: + adjust = 0; + netdev_warn_once(adapter->netdev, "Imprecise timestamp\n"); + break; } skb_hwtstamps(skb)->hwtstamp = ktime_sub_ns(skb_hwtstamps(skb)->hwtstamp, adjust); @@ -471,12 +479,31 @@ struct sk_buff *skb = adapter->ptp_tx_skb; struct skb_shared_hwtstamps shhwtstamps; struct igc_hw *hw = &adapter->hw; + int adjust = 0; u64 regval; regval = rd32(IGC_TXSTMPL); regval |= (u64)rd32(IGC_TXSTMPH) << 32; igc_ptp_systim_to_hwtstamp(adapter, &shhwtstamps, regval); + switch (adapter->link_speed) { + case SPEED_10: + adjust = IGC_I225_TX_LATENCY_10; + break; + case SPEED_100: + adjust = IGC_I225_TX_LATENCY_100; + break; + case SPEED_1000: + adjust = IGC_I225_TX_LATENCY_1000; + break; + case SPEED_2500: + adjust = IGC_I225_TX_LATENCY_2500; + break; + } + + shhwtstamps.hwtstamp = + ktime_add_ns(shhwtstamps.hwtstamp, adjust); + /* Clear the lock early before calling skb_tstamp_tx so that * applications are not woken up before the lock bit is clear. We use * a copy of the skb pointer to ensure other threads can't change it @@ -608,8 +635,6 @@ adapter->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE; adapter->tstamp_config.tx_type = HWTSTAMP_TX_OFF; - igc_ptp_reset(adapter); - adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps, &adapter->pdev->dev); if (IS_ERR(adapter->ptp_clock)) { --- linux-5.8.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c +++ linux-5.8.0/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c @@ -192,7 +192,7 @@ } /* alloc the udl from per cpu ddp pool */ - ddp->udl = dma_pool_alloc(ddp_pool->pool, GFP_KERNEL, &ddp->udp); + ddp->udl = dma_pool_alloc(ddp_pool->pool, GFP_ATOMIC, &ddp->udp); if (!ddp->udl) { e_err(drv, "failed allocated ddp context\n"); goto out_noddp_unmap; --- linux-5.8.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +++ linux-5.8.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c @@ -575,6 +575,11 @@ return -EINVAL; } + if (xs->props.mode != XFRM_MODE_TRANSPORT) { + netdev_err(dev, "Unsupported mode for ipsec offload\n"); + return -EINVAL; + } + if (ixgbe_ipsec_check_mgmt_ip(xs)) { netdev_err(dev, "IPsec IP addr clash with mgmt filters\n"); return -EINVAL; --- linux-5.8.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-5.8.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -1947,7 +1947,8 @@ return (page_to_nid(page) != numa_mem_id()) || page_is_pfmemalloc(page); } -static bool ixgbe_can_reuse_rx_page(struct ixgbe_rx_buffer *rx_buffer) +static bool ixgbe_can_reuse_rx_page(struct ixgbe_rx_buffer *rx_buffer, + int rx_buffer_pgcnt) { unsigned int pagecnt_bias = rx_buffer->pagecnt_bias; struct page *page = rx_buffer->page; @@ -1958,7 +1959,7 @@ #if (PAGE_SIZE < 8192) /* if we are only owner of page we can reuse it */ - if (unlikely((page_ref_count(page) - pagecnt_bias) > 1)) + if (unlikely((rx_buffer_pgcnt - pagecnt_bias) > 1)) return false; #else /* The last offset is a bit aggressive in that we assume the @@ -2023,11 +2024,18 @@ static struct ixgbe_rx_buffer *ixgbe_get_rx_buffer(struct ixgbe_ring *rx_ring, union ixgbe_adv_rx_desc *rx_desc, struct sk_buff **skb, - const unsigned int size) + const unsigned int size, + int *rx_buffer_pgcnt) { struct ixgbe_rx_buffer *rx_buffer; rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean]; + *rx_buffer_pgcnt = +#if (PAGE_SIZE < 8192) + page_count(rx_buffer->page); +#else + 0; +#endif prefetchw(rx_buffer->page); *skb = rx_buffer->skb; @@ -2057,9 +2065,10 @@ static void ixgbe_put_rx_buffer(struct ixgbe_ring *rx_ring, struct ixgbe_rx_buffer *rx_buffer, - struct sk_buff *skb) + struct sk_buff *skb, + int rx_buffer_pgcnt) { - if (ixgbe_can_reuse_rx_page(rx_buffer)) { + if (ixgbe_can_reuse_rx_page(rx_buffer, rx_buffer_pgcnt)) { /* hand second half of page back to the ring */ ixgbe_reuse_rx_page(rx_ring, rx_buffer); } else { @@ -2310,6 +2319,7 @@ union ixgbe_adv_rx_desc *rx_desc; struct ixgbe_rx_buffer *rx_buffer; struct sk_buff *skb; + int rx_buffer_pgcnt; unsigned int size; /* return some buffers to hardware, one at a time is too slow */ @@ -2329,7 +2339,7 @@ */ dma_rmb(); - rx_buffer = ixgbe_get_rx_buffer(rx_ring, rx_desc, &skb, size); + rx_buffer = ixgbe_get_rx_buffer(rx_ring, rx_desc, &skb, size, &rx_buffer_pgcnt); /* retrieve a buffer from the ring */ if (!skb) { @@ -2374,7 +2384,7 @@ break; } - ixgbe_put_rx_buffer(rx_ring, rx_buffer, skb); + ixgbe_put_rx_buffer(rx_ring, rx_buffer, skb, rx_buffer_pgcnt); cleaned_count++; /* place incomplete frames back on ring for completion */ @@ -9582,8 +9592,10 @@ ixgbe_atr_compute_perfect_hash_82599(&input->filter, mask); err = ixgbe_fdir_write_perfect_filter_82599(hw, &input->filter, input->sw_idx, queue); - if (!err) - ixgbe_update_ethtool_fdir_entry(adapter, input, input->sw_idx); + if (err) + goto err_out_w_lock; + + ixgbe_update_ethtool_fdir_entry(adapter, input, input->sw_idx); spin_unlock(&adapter->fdir_perfect_lock); if ((uhtid != 0x800) && (adapter->jump_tables[uhtid])) --- linux-5.8.0.orig/drivers/net/ethernet/intel/ixgbevf/ipsec.c +++ linux-5.8.0/drivers/net/ethernet/intel/ixgbevf/ipsec.c @@ -272,6 +272,11 @@ return -EINVAL; } + if (xs->props.mode != XFRM_MODE_TRANSPORT) { + netdev_err(dev, "Unsupported mode for ipsec offload\n"); + return -EINVAL; + } + if (xs->xso.flags & XFRM_OFFLOAD_INBOUND) { struct rx_sa rsa; --- linux-5.8.0.orig/drivers/net/ethernet/korina.c +++ linux-5.8.0/drivers/net/ethernet/korina.c @@ -219,7 +219,7 @@ dev_kfree_skb_any(skb); spin_unlock_irqrestore(&lp->lock, flags); - return NETDEV_TX_BUSY; + return NETDEV_TX_OK; } } @@ -1113,7 +1113,7 @@ return rc; probe_err_register: - kfree(lp->td_ring); + kfree((struct dma_desc *)KSEG0ADDR(lp->td_ring)); probe_err_td_ring: iounmap(lp->tx_dma_regs); probe_err_dma_tx: @@ -1133,6 +1133,7 @@ iounmap(lp->eth_regs); iounmap(lp->rx_dma_regs); iounmap(lp->tx_dma_regs); + kfree((struct dma_desc *)KSEG0ADDR(lp->td_ring)); unregister_netdev(bif->dev); free_netdev(bif->dev); --- linux-5.8.0.orig/drivers/net/ethernet/lantiq_xrx200.c +++ linux-5.8.0/drivers/net/ethernet/lantiq_xrx200.c @@ -230,8 +230,8 @@ } if (rx < budget) { - napi_complete(&ch->napi); - ltq_dma_enable_irq(&ch->dma); + if (napi_complete_done(&ch->napi, rx)) + ltq_dma_enable_irq(&ch->dma); } return rx; @@ -245,6 +245,7 @@ int pkts = 0; int bytes = 0; + netif_tx_lock(net_dev); while (pkts < budget) { struct ltq_dma_desc *desc = &ch->dma.desc_base[ch->tx_free]; @@ -268,9 +269,13 @@ net_dev->stats.tx_bytes += bytes; netdev_completed_queue(ch->priv->net_dev, pkts, bytes); + netif_tx_unlock(net_dev); + if (netif_queue_stopped(net_dev)) + netif_wake_queue(net_dev); + if (pkts < budget) { - napi_complete(&ch->napi); - ltq_dma_enable_irq(&ch->dma); + if (napi_complete_done(&ch->napi, pkts)) + ltq_dma_enable_irq(&ch->dma); } return pkts; @@ -342,10 +347,12 @@ { struct xrx200_chan *ch = ptr; - ltq_dma_disable_irq(&ch->dma); - ltq_dma_ack_irq(&ch->dma); + if (napi_schedule_prep(&ch->napi)) { + __napi_schedule(&ch->napi); + ltq_dma_disable_irq(&ch->dma); + } - napi_schedule(&ch->napi); + ltq_dma_ack_irq(&ch->dma); return IRQ_HANDLED; } @@ -499,7 +506,7 @@ /* setup NAPI */ netif_napi_add(net_dev, &priv->chan_rx.napi, xrx200_poll_rx, 32); - netif_napi_add(net_dev, &priv->chan_tx.napi, xrx200_tx_housekeeping, 32); + netif_tx_napi_add(net_dev, &priv->chan_tx.napi, xrx200_tx_housekeeping, 32); platform_set_drvdata(pdev, priv); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/mvneta.c +++ linux-5.8.0/drivers/net/ethernet/marvell/mvneta.c @@ -3372,27 +3372,20 @@ txq->last_desc = txq->size - 1; txq->buf = kmalloc_array(txq->size, sizeof(*txq->buf), GFP_KERNEL); - if (!txq->buf) { - dma_free_coherent(pp->dev->dev.parent, - txq->size * MVNETA_DESC_ALIGNED_SIZE, - txq->descs, txq->descs_phys); + if (!txq->buf) return -ENOMEM; - } /* Allocate DMA buffers for TSO MAC/IP/TCP headers */ txq->tso_hdrs = dma_alloc_coherent(pp->dev->dev.parent, txq->size * TSO_HEADER_SIZE, &txq->tso_hdrs_phys, GFP_KERNEL); - if (!txq->tso_hdrs) { - kfree(txq->buf); - dma_free_coherent(pp->dev->dev.parent, - txq->size * MVNETA_DESC_ALIGNED_SIZE, - txq->descs, txq->descs_phys); + if (!txq->tso_hdrs) return -ENOMEM; - } /* Setup XPS mapping */ - if (txq_number > 1) + if (pp->neta_armada3700) + cpu = 0; + else if (txq_number > 1) cpu = txq->id % num_present_cpus(); else cpu = pp->rxq_def % num_present_cpus(); @@ -4159,6 +4152,11 @@ node_online); struct mvneta_pcpu_port *port = per_cpu_ptr(pp->ports, cpu); + /* Armada 3700's per-cpu interrupt for mvneta is broken, all interrupts + * are routed to CPU 0, so we don't need all the cpu-hotplug support + */ + if (pp->neta_armada3700) + return 0; spin_lock(&pp->lock); /* @@ -4381,7 +4379,7 @@ struct bpf_prog *old_prog; if (prog && dev->mtu > MVNETA_MAX_RX_BUF_SIZE) { - NL_SET_ERR_MSG_MOD(extack, "Jumbo frames not supported on XDP"); + NL_SET_ERR_MSG_MOD(extack, "MTU too large for XDP"); return -EOPNOTSUPP; } @@ -5209,7 +5207,7 @@ err = mvneta_port_power_up(pp, pp->phy_interface); if (err < 0) { dev_err(&pdev->dev, "can't power up port\n"); - return err; + goto err_netdev; } /* Armada3700 network controller does not support per-cpu --- linux-5.8.0.orig/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ linux-5.8.0/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -1076,7 +1076,7 @@ u32 val; /* If the thread isn't used, don't do anything */ - if (smp_processor_id() > port->priv->nthreads) + if (smp_processor_id() >= port->priv->nthreads) return; val = MVPP2_CAUSE_MISC_SUM_MASK | @@ -1132,7 +1132,7 @@ regmap_read(priv->sysctrl_base, GENCONF_CTRL0, &val); if (port->gop_id == 2) - val |= GENCONF_CTRL0_PORT0_RGMII | GENCONF_CTRL0_PORT1_RGMII; + val |= GENCONF_CTRL0_PORT0_RGMII; else if (port->gop_id == 3) val |= GENCONF_CTRL0_PORT1_RGMII_MII; regmap_write(priv->sysctrl_base, GENCONF_CTRL0, val); @@ -2081,7 +2081,7 @@ int queue; /* If the thread isn't used, don't do anything */ - if (smp_processor_id() > port->priv->nthreads) + if (smp_processor_id() >= port->priv->nthreads) return; for (queue = 0; queue < port->ntxqs; queue++) { @@ -2164,17 +2164,18 @@ static void mvpp2_tx_pkts_coal_set(struct mvpp2_port *port, struct mvpp2_tx_queue *txq) { - unsigned int thread = mvpp2_cpu_to_thread(port->priv, get_cpu()); + unsigned int thread; u32 val; if (txq->done_pkts_coal > MVPP2_TXQ_THRESH_MASK) txq->done_pkts_coal = MVPP2_TXQ_THRESH_MASK; val = (txq->done_pkts_coal << MVPP2_TXQ_THRESH_OFFSET); - mvpp2_thread_write(port->priv, thread, MVPP2_TXQ_NUM_REG, txq->id); - mvpp2_thread_write(port->priv, thread, MVPP2_TXQ_THRESH_REG, val); - - put_cpu(); + /* PKT-coalescing registers are per-queue + per-thread */ + for (thread = 0; thread < MVPP2_MAX_THREADS; thread++) { + mvpp2_thread_write(port->priv, thread, MVPP2_TXQ_NUM_REG, txq->id); + mvpp2_thread_write(port->priv, thread, MVPP2_TXQ_THRESH_REG, val); + } } static u32 mvpp2_usec_to_cycles(u32 usec, unsigned long clk_hz) @@ -2981,6 +2982,7 @@ err = mvpp2_rx_refill(port, bm_pool, pool); if (err) { netdev_err(port->dev, "failed to refill BM pools\n"); + dev_kfree_skb_any(skb); goto err_drop_frame; } @@ -3706,6 +3708,7 @@ if (!valid) { netdev_err(port->dev, "invalid configuration: no dt or link IRQ"); + err = -ENOENT; goto err_free_irq; } @@ -4555,7 +4558,7 @@ struct mvpp2 *priv = port->priv; struct mvpp2_txq_pcpu *txq_pcpu; unsigned int thread; - int queue, err; + int queue, err, val; /* Checks for hardware constraints */ if (port->first_rxq + port->nrxqs > @@ -4569,6 +4572,18 @@ mvpp2_egress_disable(port); mvpp2_port_disable(port); + if (mvpp2_is_xlg(port->phy_interface)) { + val = readl(port->base + MVPP22_XLG_CTRL0_REG); + val &= ~MVPP22_XLG_CTRL0_FORCE_LINK_PASS; + val |= MVPP22_XLG_CTRL0_FORCE_LINK_DOWN; + writel(val, port->base + MVPP22_XLG_CTRL0_REG); + } else { + val = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG); + val &= ~MVPP2_GMAC_FORCE_LINK_PASS; + val |= MVPP2_GMAC_FORCE_LINK_DOWN; + writel(val, port->base + MVPP2_GMAC_AUTONEG_CONFIG); + } + port->tx_time_coal = MVPP2_TXDONE_COAL_USEC; port->txqs = devm_kcalloc(dev, port->ntxqs, sizeof(*port->txqs), @@ -4756,12 +4771,16 @@ eth_hw_addr_random(dev); } +static struct mvpp2_port *mvpp2_phylink_to_port(struct phylink_config *config) +{ + return container_of(config, struct mvpp2_port, phylink_config); +} + static void mvpp2_phylink_validate(struct phylink_config *config, unsigned long *supported, struct phylink_link_state *state) { - struct mvpp2_port *port = container_of(config, struct mvpp2_port, - phylink_config); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, }; /* Invalid combinations */ @@ -4784,8 +4803,6 @@ phylink_set(mask, Autoneg); phylink_set_port_modes(mask); - phylink_set(mask, Pause); - phylink_set(mask, Asym_Pause); switch (state->interface) { case PHY_INTERFACE_MODE_10GBASER: @@ -4902,8 +4919,7 @@ static void mvpp2_phylink_mac_pcs_get_state(struct phylink_config *config, struct phylink_link_state *state) { - struct mvpp2_port *port = container_of(config, struct mvpp2_port, - phylink_config); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); if (port->priv->hw_version == MVPP22 && port->gop_id == 0) { u32 mode = readl(port->base + MVPP22_XLG_CTRL3_REG); @@ -4920,8 +4936,7 @@ static void mvpp2_mac_an_restart(struct phylink_config *config) { - struct mvpp2_port *port = container_of(config, struct mvpp2_port, - phylink_config); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); u32 val = readl(port->base + MVPP2_GMAC_AUTONEG_CONFIG); writel(val | MVPP2_GMAC_IN_BAND_RESTART_AN, @@ -5094,13 +5109,12 @@ static void mvpp2_mac_config(struct phylink_config *config, unsigned int mode, const struct phylink_link_state *state) { - struct net_device *dev = to_net_dev(config->dev); - struct mvpp2_port *port = netdev_priv(dev); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); bool change_interface = port->phy_interface != state->interface; /* Check for invalid configuration */ if (mvpp2_is_xlg(state->interface) && port->gop_id != 0) { - netdev_err(dev, "Invalid mode on %s\n", dev->name); + netdev_err(port->dev, "Invalid mode on %s\n", port->dev->name); return; } @@ -5140,8 +5154,7 @@ int speed, int duplex, bool tx_pause, bool rx_pause) { - struct net_device *dev = to_net_dev(config->dev); - struct mvpp2_port *port = netdev_priv(dev); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); u32 val; if (mvpp2_is_xlg(interface)) { @@ -5188,14 +5201,13 @@ mvpp2_egress_enable(port); mvpp2_ingress_enable(port); - netif_tx_wake_all_queues(dev); + netif_tx_wake_all_queues(port->dev); } static void mvpp2_mac_link_down(struct phylink_config *config, unsigned int mode, phy_interface_t interface) { - struct net_device *dev = to_net_dev(config->dev); - struct mvpp2_port *port = netdev_priv(dev); + struct mvpp2_port *port = mvpp2_phylink_to_port(config); u32 val; if (!phylink_autoneg_inband(mode)) { @@ -5212,7 +5224,7 @@ } } - netif_tx_stop_all_queues(dev); + netif_tx_stop_all_queues(port->dev); mvpp2_egress_disable(port); mvpp2_ingress_disable(port); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c +++ linux-5.8.0/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c @@ -29,16 +29,16 @@ /* Clear entry invalidation bit */ pe->tcam[MVPP2_PRS_TCAM_INV_WORD] &= ~MVPP2_PRS_TCAM_INV_MASK; - /* Write tcam index - indirect access */ - mvpp2_write(priv, MVPP2_PRS_TCAM_IDX_REG, pe->index); - for (i = 0; i < MVPP2_PRS_TCAM_WORDS; i++) - mvpp2_write(priv, MVPP2_PRS_TCAM_DATA_REG(i), pe->tcam[i]); - /* Write sram index - indirect access */ mvpp2_write(priv, MVPP2_PRS_SRAM_IDX_REG, pe->index); for (i = 0; i < MVPP2_PRS_SRAM_WORDS; i++) mvpp2_write(priv, MVPP2_PRS_SRAM_DATA_REG(i), pe->sram[i]); + /* Write tcam index - indirect access */ + mvpp2_write(priv, MVPP2_PRS_TCAM_IDX_REG, pe->index); + for (i = 0; i < MVPP2_PRS_TCAM_WORDS; i++) + mvpp2_write(priv, MVPP2_PRS_TCAM_DATA_REG(i), pe->tcam[i]); + return 0; } @@ -405,6 +405,38 @@ return -EINVAL; } +/* Drop flow control pause frames */ +static void mvpp2_prs_drop_fc(struct mvpp2 *priv) +{ + unsigned char da[ETH_ALEN] = { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x01 }; + struct mvpp2_prs_entry pe; + unsigned int len; + + memset(&pe, 0, sizeof(pe)); + + /* For all ports - drop flow control frames */ + pe.index = MVPP2_PE_FC_DROP; + mvpp2_prs_tcam_lu_set(&pe, MVPP2_PRS_LU_MAC); + + /* Set match on DA */ + len = ETH_ALEN; + while (len--) + mvpp2_prs_tcam_data_byte_set(&pe, len, da[len], 0xff); + + mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_DROP_MASK, + MVPP2_PRS_RI_DROP_MASK); + + mvpp2_prs_sram_bits_set(&pe, MVPP2_PRS_SRAM_LU_GEN_BIT, 1); + mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_FLOWS); + + /* Mask all ports */ + mvpp2_prs_tcam_port_map_set(&pe, MVPP2_PRS_PORT_MASK); + + /* Update shadow table and hw entry */ + mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_MAC); + mvpp2_prs_hw_write(priv, &pe); +} + /* Enable/disable dropping all mac da's */ static void mvpp2_prs_mac_drop_all_set(struct mvpp2 *priv, int port, bool add) { @@ -1162,6 +1194,7 @@ mvpp2_prs_hw_write(priv, &pe); /* Create dummy entries for drop all and promiscuous modes */ + mvpp2_prs_drop_fc(priv); mvpp2_prs_mac_drop_all_set(priv, 0, false); mvpp2_prs_mac_promisc_set(priv, 0, MVPP2_PRS_L2_UNI_CAST, false); mvpp2_prs_mac_promisc_set(priv, 0, MVPP2_PRS_L2_MULTI_CAST, false); @@ -1647,8 +1680,9 @@ mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_IP6); mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_L3_IP6, MVPP2_PRS_RI_L3_PROTO_MASK); - /* Skip eth_type + 4 bytes of IPv6 header */ - mvpp2_prs_sram_shift_set(&pe, MVPP2_ETH_TYPE_LEN + 4, + /* Jump to DIP of IPV6 header */ + mvpp2_prs_sram_shift_set(&pe, MVPP2_ETH_TYPE_LEN + 8 + + MVPP2_MAX_L3_ADDR_SIZE, MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD); /* Set L3 offset */ mvpp2_prs_sram_offset_set(&pe, MVPP2_PRS_SRAM_UDF_TYPE_L3, --- linux-5.8.0.orig/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.h +++ linux-5.8.0/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.h @@ -129,7 +129,7 @@ #define MVPP2_PE_VID_EDSA_FLTR_DEFAULT (MVPP2_PRS_TCAM_SRAM_SIZE - 7) #define MVPP2_PE_VLAN_DBL (MVPP2_PRS_TCAM_SRAM_SIZE - 6) #define MVPP2_PE_VLAN_NONE (MVPP2_PRS_TCAM_SRAM_SIZE - 5) -/* reserved */ +#define MVPP2_PE_FC_DROP (MVPP2_PRS_TCAM_SRAM_SIZE - 4) #define MVPP2_PE_MAC_MC_PROMISCUOUS (MVPP2_PRS_TCAM_SRAM_SIZE - 3) #define MVPP2_PE_MAC_UC_PROMISCUOUS (MVPP2_PRS_TCAM_SRAM_SIZE - 2) #define MVPP2_PE_MAC_NON_PROMISCUOUS (MVPP2_PRS_TCAM_SRAM_SIZE - 1) --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/cgx.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/cgx.c @@ -833,8 +833,10 @@ if (!lmac) return -ENOMEM; lmac->name = kcalloc(1, sizeof("cgx_fwi_xxx_yyy"), GFP_KERNEL); - if (!lmac->name) - return -ENOMEM; + if (!lmac->name) { + err = -ENOMEM; + goto err_lmac_free; + } sprintf(lmac->name, "cgx_fwi_%d_%d", cgx->cgx_id, i); lmac->lmac_id = i; lmac->cgx = cgx; @@ -845,7 +847,7 @@ CGX_LMAC_FWI + i * 9), cgx_fwi_event_handler, 0, lmac->name, lmac); if (err) - return err; + goto err_irq; /* Enable interrupt */ cgx_write(cgx, lmac->lmac_id, CGXX_CMRX_INT_ENA_W1S, @@ -857,6 +859,12 @@ } return cgx_lmac_verify_fwi_version(cgx); + +err_irq: + kfree(lmac->name); +err_lmac_free: + kfree(lmac); + return err; } static int cgx_lmac_exit(struct cgx *cgx) --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/common.h +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/common.h @@ -43,7 +43,7 @@ void *base; dma_addr_t iova; int alloc_sz; - u8 entry_sz; + u16 entry_sz; u8 align; u32 qsize; }; --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/mbox.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/mbox.c @@ -17,7 +17,7 @@ static const u16 msgs_offset = ALIGN(sizeof(struct mbox_hdr), MBOX_MSG_ALIGN); -void otx2_mbox_reset(struct otx2_mbox *mbox, int devid) +void __otx2_mbox_reset(struct otx2_mbox *mbox, int devid) { void *hw_mbase = mbox->hwbase + (devid * MBOX_SIZE); struct otx2_mbox_dev *mdev = &mbox->dev[devid]; @@ -26,13 +26,21 @@ tx_hdr = hw_mbase + mbox->tx_start; rx_hdr = hw_mbase + mbox->rx_start; - spin_lock(&mdev->mbox_lock); mdev->msg_size = 0; mdev->rsp_size = 0; tx_hdr->num_msgs = 0; tx_hdr->msg_size = 0; rx_hdr->num_msgs = 0; rx_hdr->msg_size = 0; +} +EXPORT_SYMBOL(__otx2_mbox_reset); + +void otx2_mbox_reset(struct otx2_mbox *mbox, int devid) +{ + struct otx2_mbox_dev *mdev = &mbox->dev[devid]; + + spin_lock(&mdev->mbox_lock); + __otx2_mbox_reset(mbox, devid); spin_unlock(&mdev->mbox_lock); } EXPORT_SYMBOL(otx2_mbox_reset); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/mbox.h +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/mbox.h @@ -93,6 +93,7 @@ }; void otx2_mbox_reset(struct otx2_mbox *mbox, int devid); +void __otx2_mbox_reset(struct otx2_mbox *mbox, int devid); void otx2_mbox_destroy(struct otx2_mbox *mbox); int otx2_mbox_init(struct otx2_mbox *mbox, void __force *hwbase, struct pci_dev *pdev, void __force *reg_base, --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/npc.h +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/npc.h @@ -77,6 +77,8 @@ NPC_LT_LD_ICMP, NPC_LT_LD_SCTP, NPC_LT_LD_ICMP6, + NPC_LT_LD_CUSTOM0, + NPC_LT_LD_CUSTOM1, NPC_LT_LD_IGMP = 8, NPC_LT_LD_ESP, NPC_LT_LD_AH, @@ -85,8 +87,6 @@ NPC_LT_LD_NSH, NPC_LT_LD_TU_MPLS_IN_NSH, NPC_LT_LD_TU_MPLS_IN_IP, - NPC_LT_LD_CUSTOM0 = 0xE, - NPC_LT_LD_CUSTOM1 = 0xF, }; enum npc_kpu_le_ltype { --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu.c @@ -2143,8 +2143,10 @@ INTR_MASK(rvu->hw->total_pfs) & ~1ULL); for (irq = 0; irq < rvu->num_vec; irq++) { - if (rvu->irq_allocated[irq]) + if (rvu->irq_allocated[irq]) { free_irq(pci_irq_vector(rvu->pdev, irq), rvu); + rvu->irq_allocated[irq] = false; + } } pci_free_irq_vectors(rvu->pdev); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu.h +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu.h @@ -463,6 +463,7 @@ int rvu_get_nixlf_count(struct rvu *rvu); void rvu_nix_lf_teardown(struct rvu *rvu, u16 pcifunc, int blkaddr, int npalf); int nix_get_nixlf(struct rvu *rvu, u16 pcifunc, int *nixlf, int *nix_blkaddr); +int nix_update_bcast_mce_list(struct rvu *rvu, u16 pcifunc, bool add); /* NPC APIs */ int rvu_npc_init(struct rvu *rvu); @@ -477,7 +478,7 @@ void rvu_npc_enable_promisc_entry(struct rvu *rvu, u16 pcifunc, int nixlf); void rvu_npc_install_bcast_match_entry(struct rvu *rvu, u16 pcifunc, int nixlf, u64 chan); -void rvu_npc_disable_bcast_entry(struct rvu *rvu, u16 pcifunc); +void rvu_npc_enable_bcast_entry(struct rvu *rvu, u16 pcifunc, bool enable); int rvu_npc_update_rxvlan(struct rvu *rvu, u16 pcifunc, int nixlf); void rvu_npc_disable_mcam_entries(struct rvu *rvu, u16 pcifunc, int nixlf); void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c @@ -452,6 +452,9 @@ int pf = rvu_get_pf(req->hdr.pcifunc); u8 cgx_id, lmac_id; + if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc)) + return -EPERM; + rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id); cgx_lmac_addr_set(cgx_id, lmac_id, req->mac_addr); @@ -468,6 +471,9 @@ int rc = 0, i; u64 cfg; + if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc)) + return -EPERM; + rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id); rsp->hdr.rc = rc; --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c @@ -144,12 +144,14 @@ char __user *buffer, size_t count, loff_t *ppos) { - int index, off = 0, flag = 0, go_back = 0, off_prev; + int index, off = 0, flag = 0, go_back = 0, len = 0; struct rvu *rvu = filp->private_data; int lf, pf, vf, pcifunc; struct rvu_block block; int bytes_not_copied; + int lf_str_size = 12; int buf_size = 2048; + char *lfs; char *buf; /* don't allow partial reads */ @@ -159,12 +161,20 @@ buf = kzalloc(buf_size, GFP_KERNEL); if (!buf) return -ENOSPC; - off += scnprintf(&buf[off], buf_size - 1 - off, "\npcifunc\t\t"); + + lfs = kzalloc(lf_str_size, GFP_KERNEL); + if (!lfs) { + kfree(buf); + return -ENOMEM; + } + off += scnprintf(&buf[off], buf_size - 1 - off, "%-*s", lf_str_size, + "pcifunc"); for (index = 0; index < BLK_COUNT; index++) - if (strlen(rvu->hw->block[index].name)) - off += scnprintf(&buf[off], buf_size - 1 - off, - "%*s\t", (index - 1) * 2, - rvu->hw->block[index].name); + if (strlen(rvu->hw->block[index].name)) { + off += scnprintf(&buf[off], buf_size - 1 - off, + "%-*s", lf_str_size, + rvu->hw->block[index].name); + } off += scnprintf(&buf[off], buf_size - 1 - off, "\n"); for (pf = 0; pf < rvu->hw->total_pfs; pf++) { for (vf = 0; vf <= rvu->hw->total_vfs; vf++) { @@ -173,14 +183,15 @@ continue; if (vf) { + sprintf(lfs, "PF%d:VF%d", pf, vf - 1); go_back = scnprintf(&buf[off], buf_size - 1 - off, - "PF%d:VF%d\t\t", pf, - vf - 1); + "%-*s", lf_str_size, lfs); } else { + sprintf(lfs, "PF%d", pf); go_back = scnprintf(&buf[off], buf_size - 1 - off, - "PF%d\t\t", pf); + "%-*s", lf_str_size, lfs); } off += go_back; @@ -188,20 +199,22 @@ block = rvu->hw->block[index]; if (!strlen(block.name)) continue; - off_prev = off; + len = 0; + lfs[len] = '\0'; for (lf = 0; lf < block.lf.max; lf++) { if (block.fn_map[lf] != pcifunc) continue; flag = 1; - off += scnprintf(&buf[off], buf_size - 1 - - off, "%3d,", lf); + len += sprintf(&lfs[len], "%d,", lf); } - if (flag && off_prev != off) - off--; - else - go_back++; + + if (flag) + len--; + lfs[len] = '\0'; off += scnprintf(&buf[off], buf_size - 1 - off, - "\t"); + "%-*s", lf_str_size, lfs); + if (!strlen(lfs)) + go_back += lf_str_size; } if (!flag) off -= go_back; @@ -213,6 +226,7 @@ } bytes_not_copied = copy_to_user(buffer, buf, off); + kfree(lfs); kfree(buf); if (bytes_not_copied) @@ -332,7 +346,7 @@ u16 pcifunc; int ret, lf; - cmd_buf = memdup_user(buffer, count); + cmd_buf = memdup_user(buffer, count + 1); if (IS_ERR(cmd_buf)) return -ENOMEM; --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c @@ -17,7 +17,6 @@ #include "npc.h" #include "cgx.h" -static int nix_update_bcast_mce_list(struct rvu *rvu, u16 pcifunc, bool add); static int rvu_nix_get_bpid(struct rvu *rvu, struct nix_bp_cfg_req *req, int type, int chan_id); @@ -2020,7 +2019,7 @@ return 0; } -static int nix_update_bcast_mce_list(struct rvu *rvu, u16 pcifunc, bool add) +int nix_update_bcast_mce_list(struct rvu *rvu, u16 pcifunc, bool add) { int err = 0, idx, next_idx, last_idx; struct nix_mce_list *mce_list; @@ -2065,7 +2064,7 @@ /* Disable MCAM entry in NPC */ if (!mce_list->count) { - rvu_npc_disable_bcast_entry(rvu, pcifunc); + rvu_npc_enable_bcast_entry(rvu, pcifunc, false); goto end; } --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c @@ -530,7 +530,7 @@ NIX_INTF_RX, &entry, true); } -void rvu_npc_disable_bcast_entry(struct rvu *rvu, u16 pcifunc) +void rvu_npc_enable_bcast_entry(struct rvu *rvu, u16 pcifunc, bool enable) { struct npc_mcam *mcam = &rvu->hw->mcam; int blkaddr, index; @@ -543,7 +543,7 @@ pcifunc = pcifunc & ~RVU_PFVF_FUNC_MASK; index = npc_get_nixlf_mcam_index(mcam, pcifunc, 0, NIXLF_BCAST_ENTRY); - npc_enable_mcam_entry(rvu, mcam, blkaddr, index, false); + npc_enable_mcam_entry(rvu, mcam, blkaddr, index, enable); } void rvu_npc_update_flowkey_alg_idx(struct rvu *rvu, u16 pcifunc, int nixlf, @@ -622,23 +622,35 @@ nixlf, NIXLF_UCAST_ENTRY); npc_enable_mcam_entry(rvu, mcam, blkaddr, index, enable); - /* For PF, ena/dis promisc and bcast MCAM match entries */ - if (pcifunc & RVU_PFVF_FUNC_MASK) + /* For PF, ena/dis promisc and bcast MCAM match entries. + * For VFs add/delete from bcast list when RX multicast + * feature is present. + */ + if (pcifunc & RVU_PFVF_FUNC_MASK && !rvu->hw->cap.nix_rx_multicast) return; /* For bcast, enable/disable only if it's action is not * packet replication, incase if action is replication - * then this PF's nixlf is removed from bcast replication + * then this PF/VF's nixlf is removed from bcast replication * list. */ - index = npc_get_nixlf_mcam_index(mcam, pcifunc, + index = npc_get_nixlf_mcam_index(mcam, pcifunc & ~RVU_PFVF_FUNC_MASK, nixlf, NIXLF_BCAST_ENTRY); bank = npc_get_bank(mcam, index); *(u64 *)&action = rvu_read64(rvu, blkaddr, NPC_AF_MCAMEX_BANKX_ACTION(index & (mcam->banksize - 1), bank)); - if (action.op != NIX_RX_ACTIONOP_MCAST) + + /* VFs will not have BCAST entry */ + if (action.op != NIX_RX_ACTIONOP_MCAST && + !(pcifunc & RVU_PFVF_FUNC_MASK)) { npc_enable_mcam_entry(rvu, mcam, blkaddr, index, enable); + } else { + nix_update_bcast_mce_list(rvu, pcifunc, enable); + /* Enable PF's BCAST entry for packet replication */ + rvu_npc_enable_bcast_entry(rvu, pcifunc, enable); + } + if (enable) rvu_npc_enable_promisc_entry(rvu, pcifunc, nixlf); else @@ -2054,10 +2066,10 @@ index = find_next_bit(mcam->bmap, mcam->bmap_entries, entry); if (index >= mcam->bmap_entries) break; + entry = index + 1; if (mcam->entry2cntr_map[index] != req->cntr) continue; - entry = index + 1; npc_unmap_mcam_entry_and_cntr(rvu, mcam, blkaddr, index, req->cntr); } --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c @@ -384,10 +384,11 @@ dma_addr_t iova; u8 *buf; - buf = napi_alloc_frag(pool->rbsize); + buf = napi_alloc_frag(pool->rbsize + OTX2_ALIGN); if (unlikely(!buf)) return -ENOMEM; + buf = PTR_ALIGN(buf, OTX2_ALIGN); iova = dma_map_single_attrs(pfvf->dev, buf, pool->rbsize, DMA_FROM_DEVICE, DMA_ATTR_SKIP_CPU_SYNC); if (unlikely(dma_mapping_error(pfvf->dev, iova))) { --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c @@ -370,8 +370,8 @@ dst_mbox = &pf->mbox; dst_size = dst_mbox->mbox.tx_size - ALIGN(sizeof(*mbox_hdr), MBOX_MSG_ALIGN); - /* Check if msgs fit into destination area */ - if (mbox_hdr->msg_size > dst_size) + /* Check if msgs fit into destination area and has valid size */ + if (mbox_hdr->msg_size > dst_size || !mbox_hdr->msg_size) return -EINVAL; dst_mdev = &dst_mbox->mbox.dev[0]; @@ -526,10 +526,10 @@ end: offset = mbox->rx_start + msg->next_msgoff; + if (mdev->msgs_acked == (vf_mbox->up_num_msgs - 1)) + __otx2_mbox_reset(mbox, 0); mdev->msgs_acked++; } - - otx2_mbox_reset(mbox, vf_idx); } static irqreturn_t otx2_pfvf_mbox_intr_handler(int irq, void *pf_irq) @@ -803,10 +803,11 @@ msg = (struct mbox_msghdr *)(mdev->mbase + offset); otx2_process_pfaf_mbox_msg(pf, msg); offset = mbox->rx_start + msg->next_msgoff; + if (mdev->msgs_acked == (af_mbox->num_msgs - 1)) + __otx2_mbox_reset(mbox, 0); mdev->msgs_acked++; } - otx2_mbox_reset(mbox, 0); } static void otx2_handle_link_event(struct otx2_nic *pf) @@ -1560,10 +1561,13 @@ err = otx2_rxtx_enable(pf, true); if (err) - goto err_free_cints; + goto err_tx_stop_queues; return 0; +err_tx_stop_queues: + netif_tx_stop_all_queues(netdev); + netif_carrier_off(netdev); err_free_cints: otx2_free_cints(pf, qidx); vec = pci_irq_vector(pf->pdev, @@ -1588,6 +1592,7 @@ struct otx2_nic *pf = netdev_priv(netdev); struct otx2_cq_poll *cq_poll = NULL; struct otx2_qset *qset = &pf->qset; + struct otx2_rss_info *rss; int qidx, vec, wrk; netif_carrier_off(netdev); @@ -1600,6 +1605,10 @@ /* First stop packet Rx/Tx */ otx2_rxtx_enable(pf, false); + /* Clear RSS enable flag */ + rss = &pf->hw.rss_info; + rss->enable = false; + /* Cleanup Queue IRQ */ vec = pci_irq_vector(pf->pdev, pf->hw.nix_msixoff + NIX_LF_QINT_VEC_START); --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c @@ -524,6 +524,7 @@ sqe_hdr->ol3type = NIX_SENDL3TYPE_IP4_CKSUM; } else if (skb->protocol == htons(ETH_P_IPV6)) { proto = ipv6_hdr(skb)->nexthdr; + sqe_hdr->ol3type = NIX_SENDL3TYPE_IP6; } if (proto == IPPROTO_TCP) --- linux-5.8.0.orig/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +++ linux-5.8.0/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c @@ -99,10 +99,10 @@ msg = (struct mbox_msghdr *)(mdev->mbase + offset); otx2vf_process_vfaf_mbox_msg(af_mbox->pfvf, msg); offset = mbox->rx_start + msg->next_msgoff; + if (mdev->msgs_acked == (af_mbox->num_msgs - 1)) + __otx2_mbox_reset(mbox, 0); mdev->msgs_acked++; } - - otx2_mbox_reset(mbox, 0); } static int otx2vf_process_mbox_msg_up(struct otx2_nic *vf, --- linux-5.8.0.orig/drivers/net/ethernet/marvell/pxa168_eth.c +++ linux-5.8.0/drivers/net/ethernet/marvell/pxa168_eth.c @@ -1547,8 +1547,8 @@ mdiobus_unregister(pep->smi_bus); mdiobus_free(pep->smi_bus); - unregister_netdev(dev); cancel_work_sync(&pep->tx_timeout_task); + unregister_netdev(dev); free_netdev(dev); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/mediatek/Kconfig +++ linux-5.8.0/drivers/net/ethernet/mediatek/Kconfig @@ -17,6 +17,7 @@ config NET_MEDIATEK_STAR_EMAC tristate "MediaTek STAR Ethernet MAC support" select PHYLIB + select REGMAP_MMIO help This driver supports the ethernet MAC IP first used on MediaTek MT85** SoCs. --- linux-5.8.0.orig/drivers/net/ethernet/mediatek/mtk_star_emac.c +++ linux-5.8.0/drivers/net/ethernet/mediatek/mtk_star_emac.c @@ -966,6 +966,7 @@ mtk_star_adjust_link, 0, priv->phy_intf); if (!priv->phydev) { netdev_err(ndev, "failed to connect to PHY\n"); + ret = -ENODEV; goto err_free_irq; } @@ -1053,7 +1054,7 @@ err_drop_packet: dev_kfree_skb(skb); ndev->stats.tx_dropped++; - return NETDEV_TX_BUSY; + return NETDEV_TX_OK; } /* Returns the number of bytes sent or a negative number on the first @@ -1224,8 +1225,6 @@ goto push_new_skb; } - desc_data.dma_addr = new_dma_addr; - /* We can't fail anymore at this point: it's safe to unmap the skb. */ mtk_star_dma_unmap_rx(priv, &desc_data); @@ -1235,6 +1234,9 @@ desc_data.skb->dev = ndev; netif_receive_skb(desc_data.skb); + /* update dma_addr for new skb */ + desc_data.dma_addr = new_dma_addr; + push_new_skb: desc_data.len = skb_tailroom(new_skb); desc_data.skb = new_skb; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c @@ -47,7 +47,7 @@ #define EN_ETHTOOL_SHORT_MASK cpu_to_be16(0xffff) #define EN_ETHTOOL_WORD_MASK cpu_to_be32(0xffffffff) -static int mlx4_en_moderation_update(struct mlx4_en_priv *priv) +int mlx4_en_moderation_update(struct mlx4_en_priv *priv) { int i, t; int err = 0; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -1378,8 +1378,10 @@ tx_ring->cons, tx_ring->prod); priv->port_stats.tx_timeout++; - en_dbg(DRV, priv, "Scheduling watchdog\n"); - queue_work(mdev->workqueue, &priv->watchdog_task); + if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state)) { + en_dbg(DRV, priv, "Scheduling port restart\n"); + queue_work(mdev->workqueue, &priv->restart_task); + } } @@ -1733,6 +1735,7 @@ mlx4_en_deactivate_cq(priv, cq); goto tx_err; } + clear_bit(MLX4_EN_TX_RING_STATE_RECOVERING, &tx_ring->state); if (t != TX_XDP) { tx_ring->tx_queue = netdev_get_tx_queue(dev, i); tx_ring->recycle_ring = NULL; @@ -1829,6 +1832,7 @@ local_bh_enable(); } + clear_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state); netif_tx_start_all_queues(dev); netif_device_attach(dev); @@ -1999,7 +2003,7 @@ static void mlx4_en_restart(struct work_struct *work) { struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, - watchdog_task); + restart_task); struct mlx4_en_dev *mdev = priv->mdev; struct net_device *dev = priv->dev; @@ -2377,7 +2381,7 @@ if (netif_running(dev)) { mutex_lock(&mdev->state_lock); if (!mdev->device_up) { - /* NIC is probably restarting - let watchdog task reset + /* NIC is probably restarting - let restart task reset * the port */ en_dbg(DRV, priv, "Change MTU called with card down!?\n"); } else { @@ -2386,7 +2390,9 @@ if (err) { en_err(priv, "Failed restarting port:%d\n", priv->port); - queue_work(mdev->workqueue, &priv->watchdog_task); + if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, + &priv->state)) + queue_work(mdev->workqueue, &priv->restart_task); } } mutex_unlock(&mdev->state_lock); @@ -2849,7 +2855,8 @@ if (err) { en_err(priv, "Failed starting port %d for XDP change\n", priv->port); - queue_work(mdev->workqueue, &priv->watchdog_task); + if (!test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state)) + queue_work(mdev->workqueue, &priv->restart_task); } } @@ -3246,7 +3253,7 @@ priv->counter_index = MLX4_SINK_COUNTER_INDEX(mdev->dev); spin_lock_init(&priv->stats_lock); INIT_WORK(&priv->rx_mode_task, mlx4_en_do_set_rx_mode); - INIT_WORK(&priv->watchdog_task, mlx4_en_restart); + INIT_WORK(&priv->restart_task, mlx4_en_restart); INIT_WORK(&priv->linkstate_task, mlx4_en_linkstate); INIT_DELAYED_WORK(&priv->stats_task, mlx4_en_do_get_stats); INIT_DELAYED_WORK(&priv->service_task, mlx4_en_service_task); @@ -3633,6 +3640,8 @@ en_err(priv, "Failed starting port\n"); } + if (!err) + err = mlx4_en_moderation_update(priv); out: mutex_unlock(&mdev->state_lock); kfree(tmp); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -943,6 +943,9 @@ bool clean_complete = true; int done; + if (!budget) + return 0; + if (priv->tx_ring_num[TX_XDP]) { xdp_tx_cq = priv->tx_cq[TX_XDP][cq->ring]; if (xdp_tx_cq->xdp_busy) { --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -350,7 +350,7 @@ .dma = tx_info->map0_dma, }; - if (!mlx4_en_rx_recycle(ring->recycle_ring, &frame)) { + if (!napi_mode || !mlx4_en_rx_recycle(ring->recycle_ring, &frame)) { dma_unmap_page(priv->ddev, tx_info->map0_dma, PAGE_SIZE, priv->dma_dir); put_page(tx_info->page); @@ -392,6 +392,35 @@ return cnt; } +static void mlx4_en_handle_err_cqe(struct mlx4_en_priv *priv, struct mlx4_err_cqe *err_cqe, + u16 cqe_index, struct mlx4_en_tx_ring *ring) +{ + struct mlx4_en_dev *mdev = priv->mdev; + struct mlx4_en_tx_info *tx_info; + struct mlx4_en_tx_desc *tx_desc; + u16 wqe_index; + int desc_size; + + en_err(priv, "CQE error - cqn 0x%x, ci 0x%x, vendor syndrome: 0x%x syndrome: 0x%x\n", + ring->sp_cqn, cqe_index, err_cqe->vendor_err_syndrome, err_cqe->syndrome); + print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET, 16, 1, err_cqe, sizeof(*err_cqe), + false); + + wqe_index = be16_to_cpu(err_cqe->wqe_index) & ring->size_mask; + tx_info = &ring->tx_info[wqe_index]; + desc_size = tx_info->nr_txbb << LOG_TXBB_SIZE; + en_err(priv, "Related WQE - qpn 0x%x, wqe index 0x%x, wqe size 0x%x\n", ring->qpn, + wqe_index, desc_size); + tx_desc = ring->buf + (wqe_index << LOG_TXBB_SIZE); + print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET, 16, 1, tx_desc, desc_size, false); + + if (test_and_set_bit(MLX4_EN_STATE_FLAG_RESTARTING, &priv->state)) + return; + + en_err(priv, "Scheduling port restart\n"); + queue_work(mdev->workqueue, &priv->restart_task); +} + int mlx4_en_process_tx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int napi_budget) { @@ -438,13 +467,10 @@ dma_rmb(); if (unlikely((cqe->owner_sr_opcode & MLX4_CQE_OPCODE_MASK) == - MLX4_CQE_OPCODE_ERROR)) { - struct mlx4_err_cqe *cqe_err = (struct mlx4_err_cqe *)cqe; - - en_err(priv, "CQE error - vendor syndrome: 0x%x syndrome: 0x%x\n", - cqe_err->vendor_err_syndrome, - cqe_err->syndrome); - } + MLX4_CQE_OPCODE_ERROR)) + if (!test_and_set_bit(MLX4_EN_TX_RING_STATE_RECOVERING, &ring->state)) + mlx4_en_handle_err_cqe(priv, (struct mlx4_err_cqe *)cqe, index, + ring); /* Skip over last polled CQE */ new_index = be16_to_cpu(cqe->wqe_index) & size_mask; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/fw.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/fw.c @@ -1864,8 +1864,8 @@ #define INIT_HCA_LOG_RD_OFFSET (INIT_HCA_QPC_OFFSET + 0x77) #define INIT_HCA_MCAST_OFFSET 0x0c0 #define INIT_HCA_MC_BASE_OFFSET (INIT_HCA_MCAST_OFFSET + 0x00) -#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x12) -#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x16) +#define INIT_HCA_LOG_MC_ENTRY_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x13) +#define INIT_HCA_LOG_MC_HASH_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x17) #define INIT_HCA_UC_STEERING_OFFSET (INIT_HCA_MCAST_OFFSET + 0x18) #define INIT_HCA_LOG_MC_TABLE_SZ_OFFSET (INIT_HCA_MCAST_OFFSET + 0x1b) #define INIT_HCA_DEVICE_MANAGED_FLOW_STEERING_EN 0x6 @@ -1873,7 +1873,7 @@ #define INIT_HCA_DRIVER_VERSION_SZ 0x40 #define INIT_HCA_FS_PARAM_OFFSET 0x1d0 #define INIT_HCA_FS_BASE_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x00) -#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x12) +#define INIT_HCA_FS_LOG_ENTRY_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x13) #define INIT_HCA_FS_A0_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x18) #define INIT_HCA_FS_LOG_TABLE_SZ_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x1b) #define INIT_HCA_FS_ETH_BITS_OFFSET (INIT_HCA_FS_PARAM_OFFSET + 0x21) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/fw.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/fw.h @@ -182,8 +182,8 @@ u64 cmpt_base; u64 mtt_base; u64 global_caps; - u16 log_mc_entry_sz; - u16 log_mc_hash_sz; + u8 log_mc_entry_sz; + u8 log_mc_hash_sz; u16 hca_core_clock; /* Internal Clock Frequency (in MHz) */ u8 log_num_qps; u8 log_num_srqs; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h @@ -271,6 +271,10 @@ } buf[MLX4_EN_CACHE_SIZE]; }; +enum { + MLX4_EN_TX_RING_STATE_RECOVERING, +}; + struct mlx4_en_priv; struct mlx4_en_tx_ring { @@ -317,6 +321,7 @@ * Only queue_stopped might be used if BQL is not properly working. */ unsigned long queue_stopped; + unsigned long state; struct mlx4_hwq_resources sp_wqres; struct mlx4_qp sp_qp; struct mlx4_qp_context sp_context; @@ -530,6 +535,10 @@ struct mutex mutex; /* for mutual access to stats bitmap */ }; +enum { + MLX4_EN_STATE_FLAG_RESTARTING, +}; + struct mlx4_en_priv { struct mlx4_en_dev *mdev; struct mlx4_en_port_profile *prof; @@ -595,7 +604,7 @@ struct mlx4_en_cq *rx_cq[MAX_RX_RINGS]; struct mlx4_qp drop_qp; struct work_struct rx_mode_task; - struct work_struct watchdog_task; + struct work_struct restart_task; struct work_struct linkstate_task; struct delayed_work stats_task; struct delayed_work service_task; @@ -643,6 +652,7 @@ u32 pflags; u8 rss_key[MLX4_EN_RSS_KEY_SIZE]; u8 rss_hash_fn; + unsigned long state; }; enum mlx4_en_wol { @@ -787,6 +797,7 @@ #define DEV_FEATURE_CHANGED(dev, new_features, feature) \ ((dev->features & feature) ^ (new_features & feature)) +int mlx4_en_moderation_update(struct mlx4_en_priv *priv); int mlx4_en_reset_config(struct net_device *dev, struct hwtstamp_config ts_config, netdev_features_t new_features); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/mr.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/mr.c @@ -114,7 +114,7 @@ goto err_out; for (i = 0; i <= buddy->max_order; ++i) { - s = BITS_TO_LONGS(1 << (buddy->max_order - i)); + s = BITS_TO_LONGS(1UL << (buddy->max_order - i)); buddy->bits[i] = kvmalloc_array(s, sizeof(long), GFP_KERNEL | __GFP_ZERO); if (!buddy->bits[i]) goto err_out_free; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c @@ -4986,6 +4986,7 @@ if (!fs_rule->mirr_mbox) { mlx4_err(dev, "rule mirroring mailbox is null\n"); + mlx4_free_cmd_mailbox(dev, mailbox); return -EINVAL; } memcpy(mailbox->buf, fs_rule->mirr_mbox, fs_rule->mirr_mbox_size); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/Kconfig +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/Kconfig @@ -173,6 +173,7 @@ config MLX5_EN_TLS bool "TLS cryptography-offload accelaration" depends on MLX5_CORE_EN + depends on XPS depends on MLX5_FPGA_TLS || MLX5_TLS default y help --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/Makefile +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/Makefile @@ -74,7 +74,8 @@ en_accel/ipsec_stats.o mlx5_core-$(CONFIG_MLX5_EN_TLS) += en_accel/tls.o en_accel/tls_rxtx.o en_accel/tls_stats.o \ - en_accel/ktls.o en_accel/ktls_tx.o + en_accel/fs_tcp.o en_accel/ktls.o en_accel/ktls_txrx.o \ + en_accel/ktls_tx.o en_accel/ktls_rx.o mlx5_core-$(CONFIG_MLX5_SW_STEERING) += steering/dr_domain.o steering/dr_table.o \ steering/dr_matcher.o steering/dr_rule.o \ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h @@ -43,9 +43,20 @@ u32 *p_key_id); void mlx5_ktls_destroy_key(struct mlx5_core_dev *mdev, u32 key_id); +static inline bool mlx5_accel_is_ktls_tx(struct mlx5_core_dev *mdev) +{ + return MLX5_CAP_GEN(mdev, tls_tx); +} + +static inline bool mlx5_accel_is_ktls_rx(struct mlx5_core_dev *mdev) +{ + return MLX5_CAP_GEN(mdev, tls_rx); +} + static inline bool mlx5_accel_is_ktls_device(struct mlx5_core_dev *mdev) { - if (!MLX5_CAP_GEN(mdev, tls_tx)) + if (!mlx5_accel_is_ktls_tx(mdev) && + !mlx5_accel_is_ktls_rx(mdev)) return false; if (!MLX5_CAP_GEN(mdev, log_max_dek)) @@ -67,6 +78,12 @@ return false; } #else +static inline bool mlx5_accel_is_ktls_tx(struct mlx5_core_dev *mdev) +{ return false; } + +static inline bool mlx5_accel_is_ktls_rx(struct mlx5_core_dev *mdev) +{ return false; } + static inline int mlx5_ktls_create_key(struct mlx5_core_dev *mdev, struct tls_crypto_info *crypto_info, --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -69,12 +69,10 @@ MLX5_CMD_DELIVERY_STAT_CMD_DESCR_ERR = 0x10, }; -static struct mlx5_cmd_work_ent *alloc_cmd(struct mlx5_cmd *cmd, - struct mlx5_cmd_msg *in, - struct mlx5_cmd_msg *out, - void *uout, int uout_size, - mlx5_cmd_cbk_t cbk, - void *context, int page_queue) +static struct mlx5_cmd_work_ent * +cmd_alloc_ent(struct mlx5_cmd *cmd, struct mlx5_cmd_msg *in, + struct mlx5_cmd_msg *out, void *uout, int uout_size, + mlx5_cmd_cbk_t cbk, void *context, int page_queue) { gfp_t alloc_flags = cbk ? GFP_ATOMIC : GFP_KERNEL; struct mlx5_cmd_work_ent *ent; @@ -83,6 +81,7 @@ if (!ent) return ERR_PTR(-ENOMEM); + ent->idx = -EINVAL; ent->in = in; ent->out = out; ent->uout = uout; @@ -91,10 +90,16 @@ ent->context = context; ent->cmd = cmd; ent->page_queue = page_queue; + refcount_set(&ent->refcnt, 1); return ent; } +static void cmd_free_ent(struct mlx5_cmd_work_ent *ent) +{ + kfree(ent); +} + static u8 alloc_token(struct mlx5_cmd *cmd) { u8 token; @@ -109,7 +114,7 @@ return token; } -static int alloc_ent(struct mlx5_cmd *cmd) +static int cmd_alloc_index(struct mlx5_cmd *cmd) { unsigned long flags; int ret; @@ -123,7 +128,7 @@ return ret < cmd->max_reg_cmds ? ret : -ENOMEM; } -static void free_ent(struct mlx5_cmd *cmd, int idx) +static void cmd_free_index(struct mlx5_cmd *cmd, int idx) { unsigned long flags; @@ -132,6 +137,22 @@ spin_unlock_irqrestore(&cmd->alloc_lock, flags); } +static void cmd_ent_get(struct mlx5_cmd_work_ent *ent) +{ + refcount_inc(&ent->refcnt); +} + +static void cmd_ent_put(struct mlx5_cmd_work_ent *ent) +{ + if (!refcount_dec_and_test(&ent->refcnt)) + return; + + if (ent->idx >= 0) + cmd_free_index(ent->cmd, ent->idx); + + cmd_free_ent(ent); +} + static struct mlx5_cmd_layout *get_inst(struct mlx5_cmd *cmd, int idx) { return cmd->cmd_buf + (idx << cmd->log_stride); @@ -219,11 +240,6 @@ ent->ret = -ETIMEDOUT; } -static void free_cmd(struct mlx5_cmd_work_ent *ent) -{ - kfree(ent); -} - static int verify_signature(struct mlx5_cmd_work_ent *ent) { struct mlx5_cmd_mailbox *next = ent->out->next; @@ -837,11 +853,22 @@ struct mlx5_core_dev *dev = container_of(ent->cmd, struct mlx5_core_dev, cmd); + mlx5_cmd_eq_recover(dev); + + /* Maybe got handled by eq recover ? */ + if (!test_bit(MLX5_CMD_ENT_STATE_PENDING_COMP, &ent->state)) { + mlx5_core_warn(dev, "cmd[%d]: %s(0x%x) Async, recovered after timeout\n", ent->idx, + mlx5_command_str(msg_to_opcode(ent->in)), msg_to_opcode(ent->in)); + goto out; /* phew, already handled */ + } + ent->ret = -ETIMEDOUT; - mlx5_core_warn(dev, "%s(0x%x) timeout. Will cause a leak of a command resource\n", - mlx5_command_str(msg_to_opcode(ent->in)), - msg_to_opcode(ent->in)); + mlx5_core_warn(dev, "cmd[%d]: %s(0x%x) Async, timeout. Will cause a leak of a command resource\n", + ent->idx, mlx5_command_str(msg_to_opcode(ent->in)), msg_to_opcode(ent->in)); mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true); + +out: + cmd_ent_put(ent); /* for the cmd_ent_get() took on schedule delayed work */ } static void free_msg(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *msg); @@ -856,6 +883,25 @@ return cmd->allowed_opcode == opcode; } +static int cmd_alloc_index_retry(struct mlx5_cmd *cmd) +{ + unsigned long alloc_end = jiffies + msecs_to_jiffies(1000); + int idx; + +retry: + idx = cmd_alloc_index(cmd); + if (idx < 0 && time_before(jiffies, alloc_end)) { + /* Index allocation can fail on heavy load of commands. This is a temporary + * situation as the current command already holds the semaphore, meaning that + * another command completion is being handled and it is expected to release + * the entry index soon. + */ + cpu_relax(); + goto retry; + } + return idx; +} + static void cmd_work_handler(struct work_struct *work) { struct mlx5_cmd_work_ent *ent = container_of(work, struct mlx5_cmd_work_ent, work); @@ -873,14 +919,14 @@ sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem; down(sem); if (!ent->page_queue) { - alloc_ret = alloc_ent(cmd); + alloc_ret = cmd_alloc_index_retry(cmd); if (alloc_ret < 0) { mlx5_core_err_rl(dev, "failed to allocate command entry\n"); if (ent->callback) { ent->callback(-EAGAIN, ent->context); mlx5_free_cmd_msg(dev, ent->out); free_msg(dev, ent->in); - free_cmd(ent); + cmd_ent_put(ent); } else { ent->ret = -EAGAIN; complete(&ent->done); @@ -916,8 +962,8 @@ ent->ts1 = ktime_get_ns(); cmd_mode = cmd->mode; - if (ent->callback) - schedule_delayed_work(&ent->cb_timeout_work, cb_timeout); + if (ent->callback && schedule_delayed_work(&ent->cb_timeout_work, cb_timeout)) + cmd_ent_get(ent); set_bit(MLX5_CMD_ENT_STATE_PENDING_COMP, &ent->state); /* Skip sending command to fw if internal error */ @@ -933,13 +979,10 @@ MLX5_SET(mbox_out, ent->out, syndrome, drv_synd); mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true); - /* no doorbell, no need to keep the entry */ - free_ent(cmd, ent->idx); - if (ent->callback) - free_cmd(ent); return; } + cmd_ent_get(ent); /* for the _real_ FW event on completion */ /* ring doorbell after the descriptor is valid */ mlx5_core_dbg(dev, "writing 0x%x to command doorbell\n", 1 << ent->idx); wmb(); @@ -983,6 +1026,35 @@ } } +enum { + MLX5_CMD_TIMEOUT_RECOVER_MSEC = 5 * 1000, +}; + +static void wait_func_handle_exec_timeout(struct mlx5_core_dev *dev, + struct mlx5_cmd_work_ent *ent) +{ + unsigned long timeout = msecs_to_jiffies(MLX5_CMD_TIMEOUT_RECOVER_MSEC); + + mlx5_cmd_eq_recover(dev); + + /* Re-wait on the ent->done after executing the recovery flow. If the + * recovery flow (or any other recovery flow running simultaneously) + * has recovered an EQE, it should cause the entry to be completed by + * the command interface. + */ + if (wait_for_completion_timeout(&ent->done, timeout)) { + mlx5_core_warn(dev, "cmd[%d]: %s(0x%x) recovered after timeout\n", ent->idx, + mlx5_command_str(msg_to_opcode(ent->in)), msg_to_opcode(ent->in)); + return; + } + + mlx5_core_warn(dev, "cmd[%d]: %s(0x%x) No done completion\n", ent->idx, + mlx5_command_str(msg_to_opcode(ent->in)), msg_to_opcode(ent->in)); + + ent->ret = -ETIMEDOUT; + mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true); +} + static int wait_func(struct mlx5_core_dev *dev, struct mlx5_cmd_work_ent *ent) { unsigned long timeout = msecs_to_jiffies(MLX5_CMD_TIMEOUT_MSEC); @@ -994,12 +1066,10 @@ ent->ret = -ECANCELED; goto out_err; } - if (cmd->mode == CMD_MODE_POLLING || ent->polling) { + if (cmd->mode == CMD_MODE_POLLING || ent->polling) wait_for_completion(&ent->done); - } else if (!wait_for_completion_timeout(&ent->done, timeout)) { - ent->ret = -ETIMEDOUT; - mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true); - } + else if (!wait_for_completion_timeout(&ent->done, timeout)) + wait_func_handle_exec_timeout(dev, ent); out_err: err = ent->ret; @@ -1039,11 +1109,16 @@ if (callback && page_queue) return -EINVAL; - ent = alloc_cmd(cmd, in, out, uout, uout_size, callback, context, - page_queue); + ent = cmd_alloc_ent(cmd, in, out, uout, uout_size, + callback, context, page_queue); if (IS_ERR(ent)) return PTR_ERR(ent); + /* put for this ent is when consumed, depending on the use case + * 1) (!callback) blocking flow: by caller after wait_func completes + * 2) (callback) flow: by mlx5_cmd_comp_handler() when ent is handled + */ + ent->token = token; ent->polling = force_polling; @@ -1062,12 +1137,10 @@ } if (callback) - goto out; + goto out; /* mlx5_cmd_comp_handler() will put(ent) */ err = wait_func(dev, ent); - if (err == -ETIMEDOUT) - goto out; - if (err == -ECANCELED) + if (err == -ETIMEDOUT || err == -ECANCELED) goto out_free; ds = ent->ts2 - ent->ts1; @@ -1085,7 +1158,7 @@ *status = ent->status; out_free: - free_cmd(ent); + cmd_ent_put(ent); out: return err; } @@ -1516,14 +1589,19 @@ if (!forced) { mlx5_core_err(dev, "Command completion arrived after timeout (entry idx = %d).\n", ent->idx); - free_ent(cmd, ent->idx); - free_cmd(ent); + cmd_ent_put(ent); } continue; } - if (ent->callback) - cancel_delayed_work(&ent->cb_timeout_work); + if (ent->callback && cancel_delayed_work(&ent->cb_timeout_work)) + cmd_ent_put(ent); /* timeout work was canceled */ + + if (!forced || /* Real FW completion */ + pci_channel_offline(dev->pdev) || /* FW is inaccessible */ + dev->state == MLX5_DEVICE_STATE_INTERNAL_ERROR) + cmd_ent_put(ent); + if (ent->page_queue) sem = &cmd->pages_sem; else @@ -1545,10 +1623,6 @@ ent->ret, deliv_status_to_str(ent->status), ent->status); } - /* only real completion will free the entry slot */ - if (!forced) - free_ent(cmd, ent->idx); - if (ent->callback) { ds = ent->ts2 - ent->ts1; if (ent->op < MLX5_CMD_OP_MAX) { @@ -1576,10 +1650,13 @@ free_msg(dev, ent->in); err = err ? err : ent->status; - if (!forced) - free_cmd(ent); + /* final consumer is done, release ent */ + cmd_ent_put(ent); callback(err, context); } else { + /* release wait_func() so mlx5_cmd_invoke() + * can make the final ent_put() + */ complete(&ent->done); } up(sem); @@ -1589,8 +1666,11 @@ void mlx5_cmd_trigger_completions(struct mlx5_core_dev *dev) { + struct mlx5_cmd *cmd = &dev->cmd; + unsigned long bitmask; unsigned long flags; u64 vector; + int i; /* wait for pending handlers to complete */ mlx5_eq_synchronize_cmd_irq(dev); @@ -1599,11 +1679,20 @@ if (!vector) goto no_trig; + bitmask = vector; + /* we must increment the allocated entries refcount before triggering the completions + * to guarantee pending commands will not get freed in the meanwhile. + * For that reason, it also has to be done inside the alloc_lock. + */ + for_each_set_bit(i, &bitmask, (1 << cmd->log_sz)) + cmd_ent_get(cmd->ent_arr[i]); vector |= MLX5_TRIGGERED_CMD_COMP; spin_unlock_irqrestore(&dev->cmd.alloc_lock, flags); mlx5_core_dbg(dev, "vector 0x%llx\n", vector); mlx5_cmd_comp_handler(dev, vector, true); + for_each_set_bit(i, &bitmask, (1 << cmd->log_sz)) + cmd_ent_put(cmd->ent_arr[i]); return; no_trig: --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/devlink.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/devlink.c @@ -92,6 +92,12 @@ struct netlink_ext_ack *extack) { struct mlx5_core_dev *dev = devlink_priv(devlink); + + if (mlx5_lag_is_active(dev)) { + NL_SET_ERR_MSG_MOD(extack, "reload is unsupported in Lag mode\n"); + return -EOPNOTSUPP; + } + mlx5_unload_one(dev, false); return 0; @@ -205,6 +211,10 @@ NL_SET_ERR_MSG_MOD(extack, "Device doesn't support RoCE"); return -EOPNOTSUPP; } + if (mlx5_core_is_mp_slave(dev) || mlx5_lag_is_active(dev)) { + NL_SET_ERR_MSG_MOD(extack, "Multi port slave/Lag device can't configure RoCE"); + return -EOPNOTSUPP; + } return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -89,9 +89,15 @@ MLX5_MPWRQ_LOG_WQE_SZ - PAGE_SHIFT : 0) #define MLX5_MPWRQ_PAGES_PER_WQE BIT(MLX5_MPWRQ_WQE_PAGE_ORDER) -#define MLX5_MTT_OCTW(npages) (ALIGN(npages, 8) / 2) -#define MLX5E_REQUIRED_WQE_MTTS (ALIGN(MLX5_MPWRQ_PAGES_PER_WQE, 8)) -#define MLX5E_LOG_ALIGNED_MPWQE_PPW (ilog2(MLX5E_REQUIRED_WQE_MTTS)) +#define MLX5_ALIGN_MTTS(mtts) (ALIGN(mtts, 8)) +#define MLX5_ALIGNED_MTTS_OCTW(mtts) ((mtts) / 2) +#define MLX5_MTT_OCTW(mtts) (MLX5_ALIGNED_MTTS_OCTW(MLX5_ALIGN_MTTS(mtts))) +/* Add another page to MLX5E_REQUIRED_WQE_MTTS as a buffer between + * WQEs, This page will absorb write overflow by the hardware, when + * receiving packets larger than MTU. These oversize packets are + * dropped by the driver at a later stage. + */ +#define MLX5E_REQUIRED_WQE_MTTS (MLX5_ALIGN_MTTS(MLX5_MPWRQ_PAGES_PER_WQE + 1)) #define MLX5E_REQUIRED_MTTS(wqes) (wqes * MLX5E_REQUIRED_WQE_MTTS) #define MLX5E_MAX_RQ_NUM_MTTS \ ((1 << 16) * 2) /* So that MLX5_MTT_OCTW(num_mtts) fits into u16 */ @@ -191,13 +197,8 @@ struct mlx5e_tx_wqe { struct mlx5_wqe_ctrl_seg ctrl; - union { - struct { - struct mlx5_wqe_eth_seg eth; - struct mlx5_wqe_data_seg data[0]; - }; - u8 tls_progress_params_ctx[0]; - }; + struct mlx5_wqe_eth_seg eth; + struct mlx5_wqe_data_seg data[0]; }; struct mlx5e_rx_wqe_ll { @@ -213,10 +214,7 @@ struct mlx5_wqe_ctrl_seg ctrl; struct mlx5_wqe_umr_ctrl_seg uctrl; struct mlx5_mkey_seg mkc; - union { - struct mlx5_mtt inline_mtts[0]; - u8 tls_static_params_ctx[0]; - }; + struct mlx5_mtt inline_mtts[0]; }; extern const char mlx5e_self_tests[][ETH_GSTRING_LEN]; @@ -271,6 +269,7 @@ MLX5E_RQ_STATE_AM, MLX5E_RQ_STATE_NO_CSUM_COMPLETE, MLX5E_RQ_STATE_CSUM_FULL, /* cqe_csum_full hw bit is set */ + MLX5E_RQ_STATE_FPGA_TLS, /* FPGA TLS enabled */ }; struct mlx5e_cq { @@ -604,7 +603,7 @@ struct dim dim; /* Dynamic Interrupt Moderation */ /* XDP */ - struct bpf_prog *xdp_prog; + struct bpf_prog __rcu *xdp_prog; struct mlx5e_xdpsq *xdpsq; DECLARE_BITMAP(flags, 8); struct page_pool *page_pool; @@ -621,6 +620,7 @@ u32 rqn; struct mlx5_core_dev *mdev; struct mlx5_core_mkey umr_mkey; + struct mlx5e_dma_info wqe_overflow; /* XDP read-mostly */ struct xdp_rxq_info xdp_rxq; @@ -651,9 +651,11 @@ /* AF_XDP zero-copy */ struct mlx5e_rq xskrq; struct mlx5e_xdpsq xsksq; - struct mlx5e_icosq xskicosq; - /* xskicosq can be accessed from any CPU - the spinlock protects it. */ - spinlock_t xskicosq_lock; + + /* Async ICOSQ */ + struct mlx5e_icosq async_icosq; + /* async_icosq can be accessed from any CPU - the spinlock protects it. */ + spinlock_t async_icosq_lock; /* data path - accessed per napi poll */ struct irq_desc *irq_desc; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h @@ -105,11 +105,16 @@ bool mlx5e_tunnel_inner_ft_supported(struct mlx5_core_dev *mdev); +struct mlx5e_ttc_rule { + struct mlx5_flow_handle *rule; + struct mlx5_flow_destination default_dest; +}; + /* L3/L4 traffic type classifier */ struct mlx5e_ttc_table { - struct mlx5e_flow_table ft; - struct mlx5_flow_handle *rules[MLX5E_NUM_TT]; - struct mlx5_flow_handle *tunnel_rules[MLX5E_NUM_TUNNEL_TT]; + struct mlx5e_flow_table ft; + struct mlx5e_ttc_rule rules[MLX5E_NUM_TT]; + struct mlx5_flow_handle *tunnel_rules[MLX5E_NUM_TUNNEL_TT]; }; /* NIC prio FTS */ @@ -118,6 +123,9 @@ MLX5E_L2_FT_LEVEL, MLX5E_TTC_FT_LEVEL, MLX5E_INNER_TTC_FT_LEVEL, +#ifdef CONFIG_MLX5_EN_TLS + MLX5E_ACCEL_FS_TCP_FT_LEVEL, +#endif #ifdef CONFIG_MLX5_EN_ARFS MLX5E_ARFS_FT_LEVEL #endif @@ -211,6 +219,10 @@ static inline int mlx5e_arfs_disable(struct mlx5e_priv *priv) { return -EOPNOTSUPP; } #endif +#ifdef CONFIG_MLX5_EN_TLS +struct mlx5e_accel_fs_tcp; +#endif + struct mlx5e_flow_steering { struct mlx5_flow_namespace *ns; #ifdef CONFIG_MLX5_EN_RXNFC @@ -224,6 +236,9 @@ #ifdef CONFIG_MLX5_EN_ARFS struct mlx5e_arfs_tables arfs; #endif +#ifdef CONFIG_MLX5_EN_TLS + struct mlx5e_accel_fs_tcp *accel_tcp; +#endif }; struct ttc_params { @@ -248,6 +263,11 @@ struct mlx5e_ttc_table *ttc); void mlx5e_destroy_flow_table(struct mlx5e_flow_table *ft); +int mlx5e_ttc_fwd_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type, + struct mlx5_flow_destination *new_dest); +struct mlx5_flow_destination +mlx5e_ttc_get_default_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type); +int mlx5e_ttc_fwd_default_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type); void mlx5e_enable_cvlan_filter(struct mlx5e_priv *priv); void mlx5e_disable_cvlan_filter(struct mlx5e_priv *priv); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/health.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/health.c @@ -212,8 +212,8 @@ { u32 data_size; + int err = 0; u32 offset; - int err; for (offset = 0; offset < value_len; offset += data_size) { data_size = value_len - offset; @@ -245,7 +245,7 @@ err = devlink_fmsg_binary_pair_nest_start(fmsg, "data"); if (err) - return err; + goto free_page; cmd = mlx5_rsc_dump_cmd_create(mdev, key); if (IS_ERR(cmd)) { --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/params.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/params.h @@ -11,33 +11,33 @@ u16 chunk_size; }; +struct mlx5e_cq_param { + u32 cqc[MLX5_ST_SZ_DW(cqc)]; + struct mlx5_wq_param wq; + u16 eq_ix; + u8 cq_period_mode; +}; + struct mlx5e_rq_param { + struct mlx5e_cq_param cqp; u32 rqc[MLX5_ST_SZ_DW(rqc)]; struct mlx5_wq_param wq; struct mlx5e_rq_frags_info frags_info; }; struct mlx5e_sq_param { + struct mlx5e_cq_param cqp; u32 sqc[MLX5_ST_SZ_DW(sqc)]; struct mlx5_wq_param wq; bool is_mpw; }; -struct mlx5e_cq_param { - u32 cqc[MLX5_ST_SZ_DW(cqc)]; - struct mlx5_wq_param wq; - u16 eq_ix; - u8 cq_period_mode; -}; - struct mlx5e_channel_param { struct mlx5e_rq_param rq; - struct mlx5e_sq_param sq; + struct mlx5e_sq_param txq_sq; struct mlx5e_sq_param xdp_sq; struct mlx5e_sq_param icosq; - struct mlx5e_cq_param rx_cq; - struct mlx5e_cq_param tx_cq; - struct mlx5e_cq_param icosq_cq; + struct mlx5e_sq_param async_icosq; }; static inline bool mlx5e_qid_get_ch_if_in_group(struct mlx5e_params *params, --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/port.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/port.c @@ -487,11 +487,8 @@ int err; int i; - if (!MLX5_CAP_GEN(dev, pcam_reg)) - return -EOPNOTSUPP; - - if (!MLX5_CAP_PCAM_REG(dev, pplm)) - return -EOPNOTSUPP; + if (!MLX5_CAP_GEN(dev, pcam_reg) || !MLX5_CAP_PCAM_REG(dev, pplm)) + return false; MLX5_SET(pplm_reg, in, local_port, 1); err = mlx5_core_access_reg(dev, in, sz, out, sz, MLX5_REG_PPLM, 0, 0); @@ -569,6 +566,9 @@ if (fec_policy >= (1 << MLX5E_FEC_LLRS_272_257_1) && !fec_50g_per_lane) return -EOPNOTSUPP; + if (fec_policy && !mlx5e_fec_in_caps(dev, fec_policy)) + return -EOPNOTSUPP; + MLX5_SET(pplm_reg, in, local_port, 1); err = mlx5_core_access_reg(dev, in, sz, out, sz, MLX5_REG_PPLM, 0, 0); if (err) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c @@ -187,7 +187,7 @@ struct mlx5e_priv *priv; /* A given netdev is not a representor or not a slave of LAG configuration */ - if (!mlx5e_eswitch_rep(netdev) || !bond_slave_get_rtnl(netdev)) + if (!mlx5e_eswitch_rep(netdev) || !netif_is_lag_port(netdev)) return false; priv = netdev_priv(netdev); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/rep/neigh.c @@ -109,11 +109,25 @@ rtnl_unlock(); } +struct neigh_update_work { + struct work_struct work; + struct neighbour *n; + struct mlx5e_neigh_hash_entry *nhe; +}; + +static void mlx5e_release_neigh_update_work(struct neigh_update_work *update_work) +{ + neigh_release(update_work->n); + mlx5e_rep_neigh_entry_release(update_work->nhe); + kfree(update_work); +} + static void mlx5e_rep_neigh_update(struct work_struct *work) { - struct mlx5e_neigh_hash_entry *nhe = - container_of(work, struct mlx5e_neigh_hash_entry, neigh_update_work); - struct neighbour *n = nhe->n; + struct neigh_update_work *update_work = container_of(work, struct neigh_update_work, + work); + struct mlx5e_neigh_hash_entry *nhe = update_work->nhe; + struct neighbour *n = update_work->n; struct mlx5e_encap_entry *e; unsigned char ha[ETH_ALEN]; struct mlx5e_priv *priv; @@ -145,30 +159,42 @@ mlx5e_rep_update_flows(priv, e, neigh_connected, ha); mlx5e_encap_put(priv, e); } - mlx5e_rep_neigh_entry_release(nhe); rtnl_unlock(); - neigh_release(n); + mlx5e_release_neigh_update_work(update_work); } -static void mlx5e_rep_queue_neigh_update_work(struct mlx5e_priv *priv, - struct mlx5e_neigh_hash_entry *nhe, - struct neighbour *n) +static struct neigh_update_work *mlx5e_alloc_neigh_update_work(struct mlx5e_priv *priv, + struct neighbour *n) { - /* Take a reference to ensure the neighbour and mlx5 encap - * entry won't be destructed until we drop the reference in - * delayed work. - */ - neigh_hold(n); + struct neigh_update_work *update_work; + struct mlx5e_neigh_hash_entry *nhe; + struct mlx5e_neigh m_neigh = {}; - /* This assignment is valid as long as the the neigh reference - * is taken - */ - nhe->n = n; + update_work = kzalloc(sizeof(*update_work), GFP_ATOMIC); + if (WARN_ON(!update_work)) + return NULL; + + m_neigh.dev = n->dev; + m_neigh.family = n->ops->family; + memcpy(&m_neigh.dst_ip, n->primary_key, n->tbl->key_len); - if (!queue_work(priv->wq, &nhe->neigh_update_work)) { - mlx5e_rep_neigh_entry_release(nhe); - neigh_release(n); + /* Obtain reference to nhe as last step in order not to release it in + * atomic context. + */ + rcu_read_lock(); + nhe = mlx5e_rep_neigh_entry_lookup(priv, &m_neigh); + rcu_read_unlock(); + if (!nhe) { + kfree(update_work); + return NULL; } + + INIT_WORK(&update_work->work, mlx5e_rep_neigh_update); + neigh_hold(n); + update_work->n = n; + update_work->nhe = nhe; + + return update_work; } static int mlx5e_rep_netevent_event(struct notifier_block *nb, @@ -180,7 +206,7 @@ struct net_device *netdev = rpriv->netdev; struct mlx5e_priv *priv = netdev_priv(netdev); struct mlx5e_neigh_hash_entry *nhe = NULL; - struct mlx5e_neigh m_neigh = {}; + struct neigh_update_work *update_work; struct neigh_parms *p; struct neighbour *n; bool found = false; @@ -195,17 +221,11 @@ #endif return NOTIFY_DONE; - m_neigh.dev = n->dev; - m_neigh.family = n->ops->family; - memcpy(&m_neigh.dst_ip, n->primary_key, n->tbl->key_len); - - rcu_read_lock(); - nhe = mlx5e_rep_neigh_entry_lookup(priv, &m_neigh); - rcu_read_unlock(); - if (!nhe) + update_work = mlx5e_alloc_neigh_update_work(priv, n); + if (!update_work) return NOTIFY_DONE; - mlx5e_rep_queue_neigh_update_work(priv, nhe, n); + queue_work(priv->wq, &update_work->work); break; case NETEVENT_DELAY_PROBE_TIME_UPDATE: @@ -351,7 +371,6 @@ (*nhe)->priv = priv; memcpy(&(*nhe)->m_neigh, &e->m_neigh, sizeof(e->m_neigh)); - INIT_WORK(&(*nhe)->neigh_update_work, mlx5e_rep_neigh_update); spin_lock_init(&(*nhe)->encap_list_lock); INIT_LIST_HEAD(&(*nhe)->encap_list); refcount_set(&(*nhe)->refcnt, 1); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c @@ -107,12 +107,16 @@ mlx5e_tc_encap_flows_del(priv, e, &flow_list); if (neigh_connected && !(e->flags & MLX5_ENCAP_ENTRY_VALID)) { + struct net_device *route_dev; + ether_addr_copy(e->h_dest, ha); ether_addr_copy(eth->h_dest, ha); /* Update the encap source mac, in case that we delete * the flows when encap source mac changed. */ - ether_addr_copy(eth->h_source, e->route_dev->dev_addr); + route_dev = __dev_get_by_index(dev_net(priv->netdev), e->route_dev_ifindex); + if (route_dev) + ether_addr_copy(eth->h_source, route_dev->dev_addr); mlx5e_tc_encap_flows_add(priv, e, &flow_list); } @@ -623,6 +627,11 @@ if (!reg_c0) return true; + /* If reg_c0 is not equal to the default flow tag then skb->mark + * is not supported and must be reset back to 0. + */ + skb->mark = 0; + priv = netdev_priv(skb->dev); esw = priv->mdev->priv.eswitch; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c @@ -77,13 +77,13 @@ return 0; } -static int mlx5e_route_lookup_ipv4(struct mlx5e_priv *priv, - struct net_device *mirred_dev, - struct net_device **out_dev, - struct net_device **route_dev, - struct flowi4 *fl4, - struct neighbour **out_n, - u8 *out_ttl) +static int mlx5e_route_lookup_ipv4_get(struct mlx5e_priv *priv, + struct net_device *mirred_dev, + struct net_device **out_dev, + struct net_device **route_dev, + struct flowi4 *fl4, + struct neighbour **out_n, + u8 *out_ttl) { struct neighbour *n; struct rtable *rt; @@ -117,18 +117,28 @@ ip_rt_put(rt); return ret; } + dev_hold(*route_dev); if (!(*out_ttl)) *out_ttl = ip4_dst_hoplimit(&rt->dst); n = dst_neigh_lookup(&rt->dst, &fl4->daddr); ip_rt_put(rt); - if (!n) + if (!n) { + dev_put(*route_dev); return -ENOMEM; + } *out_n = n; return 0; } +static void mlx5e_route_lookup_ipv4_put(struct net_device *route_dev, + struct neighbour *n) +{ + neigh_release(n); + dev_put(route_dev); +} + static const char *mlx5e_netdev_kind(struct net_device *dev) { if (dev->rtnl_link_ops) @@ -193,8 +203,8 @@ fl4.saddr = tun_key->u.ipv4.src; ttl = tun_key->ttl; - err = mlx5e_route_lookup_ipv4(priv, mirred_dev, &out_dev, &route_dev, - &fl4, &n, &ttl); + err = mlx5e_route_lookup_ipv4_get(priv, mirred_dev, &out_dev, &route_dev, + &fl4, &n, &ttl); if (err) return err; @@ -223,7 +233,7 @@ e->m_neigh.family = n->ops->family; memcpy(&e->m_neigh.dst_ip, n->primary_key, n->tbl->key_len); e->out_dev = out_dev; - e->route_dev = route_dev; + e->route_dev_ifindex = route_dev->ifindex; /* It's important to add the neigh to the hash table before checking * the neigh validity state. So if we'll get a notification, in case the @@ -278,7 +288,7 @@ e->flags |= MLX5_ENCAP_ENTRY_VALID; mlx5e_rep_queue_neigh_stats_work(netdev_priv(out_dev)); - neigh_release(n); + mlx5e_route_lookup_ipv4_put(route_dev, n); return err; destroy_neigh_entry: @@ -286,18 +296,18 @@ free_encap: kfree(encap_header); release_neigh: - neigh_release(n); + mlx5e_route_lookup_ipv4_put(route_dev, n); return err; } #if IS_ENABLED(CONFIG_INET) && IS_ENABLED(CONFIG_IPV6) -static int mlx5e_route_lookup_ipv6(struct mlx5e_priv *priv, - struct net_device *mirred_dev, - struct net_device **out_dev, - struct net_device **route_dev, - struct flowi6 *fl6, - struct neighbour **out_n, - u8 *out_ttl) +static int mlx5e_route_lookup_ipv6_get(struct mlx5e_priv *priv, + struct net_device *mirred_dev, + struct net_device **out_dev, + struct net_device **route_dev, + struct flowi6 *fl6, + struct neighbour **out_n, + u8 *out_ttl) { struct dst_entry *dst; struct neighbour *n; @@ -318,15 +328,25 @@ return ret; } + dev_hold(*route_dev); n = dst_neigh_lookup(dst, &fl6->daddr); dst_release(dst); - if (!n) + if (!n) { + dev_put(*route_dev); return -ENOMEM; + } *out_n = n; return 0; } +static void mlx5e_route_lookup_ipv6_put(struct net_device *route_dev, + struct neighbour *n) +{ + neigh_release(n); + dev_put(route_dev); +} + int mlx5e_tc_tun_create_header_ipv6(struct mlx5e_priv *priv, struct net_device *mirred_dev, struct mlx5e_encap_entry *e) @@ -348,8 +368,8 @@ fl6.daddr = tun_key->u.ipv6.dst; fl6.saddr = tun_key->u.ipv6.src; - err = mlx5e_route_lookup_ipv6(priv, mirred_dev, &out_dev, &route_dev, - &fl6, &n, &ttl); + err = mlx5e_route_lookup_ipv6_get(priv, mirred_dev, &out_dev, &route_dev, + &fl6, &n, &ttl); if (err) return err; @@ -378,7 +398,7 @@ e->m_neigh.family = n->ops->family; memcpy(&e->m_neigh.dst_ip, n->primary_key, n->tbl->key_len); e->out_dev = out_dev; - e->route_dev = route_dev; + e->route_dev_ifindex = route_dev->ifindex; /* It's importent to add the neigh to the hash table before checking * the neigh validity state. So if we'll get a notification, in case the @@ -433,7 +453,7 @@ e->flags |= MLX5_ENCAP_ENTRY_VALID; mlx5e_rep_queue_neigh_stats_work(netdev_priv(out_dev)); - neigh_release(n); + mlx5e_route_lookup_ipv6_put(route_dev, n); return err; destroy_neigh_entry: @@ -441,7 +461,7 @@ free_encap: kfree(encap_header); release_neigh: - neigh_release(n); + mlx5e_route_lookup_ipv6_put(route_dev, n); return err; } #endif --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c @@ -227,6 +227,10 @@ option_key = (struct geneve_opt *)&enc_opts.key->data[0]; option_mask = (struct geneve_opt *)&enc_opts.mask->data[0]; + if (option_mask->opt_class == 0 && option_mask->type == 0 && + !memchr_inv(option_mask->opt_data, 0, option_mask->length * 4)) + return 0; + if (option_key->length > max_tlv_option_data_len) { NL_SET_ERR_MSG_MOD(extack, "Matching on GENEVE options: unsupported option len"); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h @@ -11,8 +11,18 @@ enum mlx5e_icosq_wqe_type { MLX5E_ICOSQ_WQE_NOP, MLX5E_ICOSQ_WQE_UMR_RX, +#ifdef CONFIG_MLX5_EN_TLS + MLX5E_ICOSQ_WQE_UMR_TLS, + MLX5E_ICOSQ_WQE_SET_PSV_TLS, + MLX5E_ICOSQ_WQE_GET_PSV_TLS, +#endif }; +static inline bool mlx5e_skb_is_multicast(struct sk_buff *skb) +{ + return skb->pkt_type == PACKET_MULTICAST || skb->pkt_type == PACKET_BROADCAST; +} + static inline bool mlx5e_wqc_has_room_for(struct mlx5_wq_cyc *wq, u16 cc, u16 pc, u16 n) { @@ -114,9 +124,19 @@ struct { struct mlx5e_rq *rq; } umr; +#ifdef CONFIG_MLX5_EN_TLS + struct { + struct mlx5e_ktls_offload_context_rx *priv_rx; + } tls_set_params; + struct { + struct mlx5e_ktls_rx_resync_buf *buf; + } tls_get_params; +#endif }; }; +void mlx5e_free_icosq_descs(struct mlx5e_icosq *sq); + static inline u16 mlx5e_icosq_get_next_pi(struct mlx5e_icosq *sq, u16 size) { struct mlx5_wq_cyc *wq = &sq->wq; @@ -182,7 +202,7 @@ static inline bool mlx5e_transport_inline_tx_wqe(struct mlx5_wqe_ctrl_seg *cseg) { - return cseg && !!cseg->tisn; + return cseg && !!cseg->tis_tir_num; } static inline u8 @@ -279,6 +299,15 @@ u8 tun_l4_proto; }; +static inline void mlx5e_eseg_swp_offsets_add_vlan(struct mlx5_wqe_eth_seg *eseg) +{ + /* SWP offsets are in 2-bytes words */ + eseg->swp_outer_l3_offset += VLAN_HLEN / 2; + eseg->swp_outer_l4_offset += VLAN_HLEN / 2; + eseg->swp_inner_l3_offset += VLAN_HLEN / 2; + eseg->swp_inner_l4_offset += VLAN_HLEN / 2; +} + static inline void mlx5e_set_eseg_swp(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg, struct mlx5e_swp_spec *swp_spec) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c @@ -121,7 +121,7 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct mlx5e_dma_info *di, u32 *len, struct xdp_buff *xdp) { - struct bpf_prog *prog = READ_ONCE(rq->xdp_prog); + struct bpf_prog *prog = rcu_dereference(rq->xdp_prog); u32 act; int err; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h @@ -85,7 +85,7 @@ clear_bit(MLX5E_STATE_XDP_TX_ENABLED, &priv->state); /* Let other device's napi(s) and XSK wakeups see our new state. */ - synchronize_rcu(); + synchronize_net(); } static inline bool mlx5e_xdp_tx_is_enabled(struct mlx5e_priv *priv) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c @@ -31,7 +31,6 @@ { struct xdp_buff *xdp = wi->umr.dma_info[page_idx].xsk; u32 cqe_bcnt32 = cqe_bcnt; - bool consumed; /* Check packet size. Note LRO doesn't use linear SKB */ if (unlikely(cqe_bcnt > rq->hw_mtu)) { @@ -51,10 +50,6 @@ xsk_buff_dma_sync_for_cpu(xdp); prefetch(xdp->data); - rcu_read_lock(); - consumed = mlx5e_xdp_handle(rq, NULL, &cqe_bcnt32, xdp); - rcu_read_unlock(); - /* Possible flows: * - XDP_REDIRECT to XSKMAP: * The page is owned by the userspace from now. @@ -70,7 +65,7 @@ * allocated first from the Reuse Ring, so it has enough space. */ - if (likely(consumed)) { + if (likely(mlx5e_xdp_handle(rq, NULL, &cqe_bcnt32, xdp))) { if (likely(__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags))) __set_bit(page_idx, wi->xdp_xmit_bitmap); /* non-atomic */ return NULL; /* page/packet was consumed by XDP */ @@ -88,7 +83,6 @@ u32 cqe_bcnt) { struct xdp_buff *xdp = wi->di->xsk; - bool consumed; /* wi->offset is not used in this function, because xdp->data and the * DMA address point directly to the necessary place. Furthermore, the @@ -107,11 +101,7 @@ return NULL; } - rcu_read_lock(); - consumed = mlx5e_xdp_handle(rq, NULL, &cqe_bcnt, xdp); - rcu_read_unlock(); - - if (likely(consumed)) + if (likely(mlx5e_xdp_handle(rq, NULL, &cqe_bcnt, xdp))) return NULL; /* page/packet was consumed by XDP */ /* XDP_PASS: copy the data from the UMEM to a new SKB. The frame reuse --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c @@ -34,31 +34,13 @@ } } -static void mlx5e_build_xskicosq_param(struct mlx5e_priv *priv, - u8 log_wq_size, - struct mlx5e_sq_param *param) -{ - void *sqc = param->sqc; - void *wq = MLX5_ADDR_OF(sqc, sqc, wq); - - mlx5e_build_sq_param_common(priv, param); - - MLX5_SET(wq, wq, log_wq_sz, log_wq_size); -} - static void mlx5e_build_xsk_cparam(struct mlx5e_priv *priv, struct mlx5e_params *params, struct mlx5e_xsk_param *xsk, struct mlx5e_channel_param *cparam) { - const u8 xskicosq_size = MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE; - mlx5e_build_rq_param(priv, params, xsk, &cparam->rq); mlx5e_build_xdpsq_param(priv, params, &cparam->xdp_sq); - mlx5e_build_xskicosq_param(priv, xskicosq_size, &cparam->icosq); - mlx5e_build_rx_cq_param(priv, params, xsk, &cparam->rx_cq); - mlx5e_build_tx_cq_param(priv, params, &cparam->tx_cq); - mlx5e_build_ico_cq_param(priv, xskicosq_size, &cparam->icosq_cq); } int mlx5e_open_xsk(struct mlx5e_priv *priv, struct mlx5e_params *params, @@ -66,7 +48,6 @@ struct mlx5e_channel *c) { struct mlx5e_channel_param *cparam; - struct dim_cq_moder icocq_moder = {}; int err; if (!mlx5e_validate_xsk_param(params, xsk, priv->mdev)) @@ -78,7 +59,7 @@ mlx5e_build_xsk_cparam(priv, params, xsk, cparam); - err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam->rx_cq, &c->xskrq.cq); + err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam->rq.cqp, &c->xskrq.cq); if (unlikely(err)) goto err_free_cparam; @@ -86,7 +67,7 @@ if (unlikely(err)) goto err_close_rx_cq; - err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam->tx_cq, &c->xsksq.cq); + err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam->xdp_sq.cqp, &c->xsksq.cq); if (unlikely(err)) goto err_close_rq; @@ -100,31 +81,12 @@ if (unlikely(err)) goto err_close_tx_cq; - err = mlx5e_open_cq(c, icocq_moder, &cparam->icosq_cq, &c->xskicosq.cq); - if (unlikely(err)) - goto err_close_sq; - - /* Create a dedicated SQ for posting NOPs whenever we need an IRQ to be - * triggered and NAPI to be called on the correct CPU. - */ - err = mlx5e_open_icosq(c, params, &cparam->icosq, &c->xskicosq); - if (unlikely(err)) - goto err_close_icocq; - kvfree(cparam); - spin_lock_init(&c->xskicosq_lock); - set_bit(MLX5E_CHANNEL_STATE_XSK, c->state); return 0; -err_close_icocq: - mlx5e_close_cq(&c->xskicosq.cq); - -err_close_sq: - mlx5e_close_xdpsq(&c->xsksq); - err_close_tx_cq: mlx5e_close_cq(&c->xsksq.cq); @@ -143,37 +105,31 @@ void mlx5e_close_xsk(struct mlx5e_channel *c) { clear_bit(MLX5E_CHANNEL_STATE_XSK, c->state); - napi_synchronize(&c->napi); - synchronize_rcu(); /* Sync with the XSK wakeup. */ + synchronize_net(); /* Sync with the XSK wakeup and with NAPI. */ mlx5e_close_rq(&c->xskrq); mlx5e_close_cq(&c->xskrq.cq); - mlx5e_close_icosq(&c->xskicosq); - mlx5e_close_cq(&c->xskicosq.cq); mlx5e_close_xdpsq(&c->xsksq); mlx5e_close_cq(&c->xsksq.cq); memset(&c->xskrq, 0, sizeof(c->xskrq)); memset(&c->xsksq, 0, sizeof(c->xsksq)); - memset(&c->xskicosq, 0, sizeof(c->xskicosq)); } void mlx5e_activate_xsk(struct mlx5e_channel *c) { - mlx5e_activate_icosq(&c->xskicosq); set_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state); /* TX queue is created active. */ - spin_lock(&c->xskicosq_lock); - mlx5e_trigger_irq(&c->xskicosq); - spin_unlock(&c->xskicosq_lock); + spin_lock_bh(&c->async_icosq_lock); + mlx5e_trigger_irq(&c->async_icosq); + spin_unlock_bh(&c->async_icosq_lock); } void mlx5e_deactivate_xsk(struct mlx5e_channel *c) { mlx5e_deactivate_rq(&c->xskrq); /* TX queue is disabled on close. */ - mlx5e_deactivate_icosq(&c->xskicosq); } static int mlx5e_redirect_xsk_rqt(struct mlx5e_priv *priv, u16 ix, u32 rqn) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c @@ -26,19 +26,19 @@ return -ENXIO; if (!napi_if_scheduled_mark_missed(&c->napi)) { - /* To avoid WQE overrun, don't post a NOP if XSKICOSQ is not + /* To avoid WQE overrun, don't post a NOP if async_icosq is not * active and not polled by NAPI. Return 0, because the upcoming * activate will trigger the IRQ for us. */ - if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &c->xskicosq.state))) + if (unlikely(!test_bit(MLX5E_SQ_STATE_ENABLED, &c->async_icosq.state))) return 0; - if (test_and_set_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->xskicosq.state)) + if (test_and_set_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->async_icosq.state)) return 0; - spin_lock(&c->xskicosq_lock); - mlx5e_trigger_irq(&c->xskicosq); - spin_unlock(&c->xskicosq_lock); + spin_lock_bh(&c->async_icosq_lock); + mlx5e_trigger_irq(&c->async_icosq); + spin_unlock_bh(&c->async_icosq_lock); } return 0; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/en_accel.h @@ -37,6 +37,7 @@ #include #include #include "en_accel/ipsec_rxtx.h" +#include "en_accel/tls.h" #include "en_accel/tls_rxtx.h" #include "en.h" #include "en/txrx.h" @@ -50,7 +51,7 @@ } static inline void -mlx5e_tx_tunnel_accel(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg) +mlx5e_tx_tunnel_accel(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg, u16 ihs) { struct mlx5e_swp_spec swp_spec = {}; unsigned int offset = 0; @@ -84,6 +85,8 @@ } mlx5e_set_eseg_swp(skb, eseg, &swp_spec); + if (skb_vlan_tag_present(skb) && ihs) + mlx5e_eseg_swp_offsets_add_vlan(eseg); } #else @@ -147,4 +150,13 @@ return true; } +static inline int mlx5e_accel_init_rx(struct mlx5e_priv *priv) +{ + return mlx5e_ktls_init_rx(priv); +} + +static inline void mlx5e_accel_cleanup_rx(struct mlx5e_priv *priv) +{ + mlx5e_ktls_cleanup_rx(priv); +} #endif /* __MLX5E_EN_ACCEL_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c @@ -0,0 +1,402 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB +/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ + +#include +#include "en_accel/fs_tcp.h" +#include "fs_core.h" + +enum accel_fs_tcp_type { + ACCEL_FS_IPV4_TCP, + ACCEL_FS_IPV6_TCP, + ACCEL_FS_TCP_NUM_TYPES, +}; + +struct mlx5e_accel_fs_tcp { + struct mlx5e_flow_table tables[ACCEL_FS_TCP_NUM_TYPES]; + struct mlx5_flow_handle *default_rules[ACCEL_FS_TCP_NUM_TYPES]; +}; + +static enum mlx5e_traffic_types fs_accel2tt(enum accel_fs_tcp_type i) +{ + switch (i) { + case ACCEL_FS_IPV4_TCP: + return MLX5E_TT_IPV4_TCP; + default: /* ACCEL_FS_IPV6_TCP */ + return MLX5E_TT_IPV6_TCP; + } +} + +static void accel_fs_tcp_set_ipv4_flow(struct mlx5_flow_spec *spec, struct sock *sk) +{ + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, outer_headers.ip_protocol); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.ip_protocol, IPPROTO_TCP); + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, outer_headers.ip_version); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.ip_version, 4); + memcpy(MLX5_ADDR_OF(fte_match_param, spec->match_value, + outer_headers.src_ipv4_src_ipv6.ipv4_layout.ipv4), + &inet_sk(sk)->inet_daddr, 4); + memcpy(MLX5_ADDR_OF(fte_match_param, spec->match_value, + outer_headers.dst_ipv4_dst_ipv6.ipv4_layout.ipv4), + &inet_sk(sk)->inet_rcv_saddr, 4); + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, + outer_headers.src_ipv4_src_ipv6.ipv4_layout.ipv4); + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, + outer_headers.dst_ipv4_dst_ipv6.ipv4_layout.ipv4); +} + +#if IS_ENABLED(CONFIG_IPV6) +static void accel_fs_tcp_set_ipv6_flow(struct mlx5_flow_spec *spec, struct sock *sk) +{ + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, outer_headers.ip_protocol); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.ip_protocol, IPPROTO_TCP); + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, outer_headers.ip_version); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.ip_version, 6); + memcpy(MLX5_ADDR_OF(fte_match_param, spec->match_value, + outer_headers.src_ipv4_src_ipv6.ipv6_layout.ipv6), + &sk->sk_v6_daddr, 16); + memcpy(MLX5_ADDR_OF(fte_match_param, spec->match_value, + outer_headers.dst_ipv4_dst_ipv6.ipv6_layout.ipv6), + &inet6_sk(sk)->saddr, 16); + memset(MLX5_ADDR_OF(fte_match_param, spec->match_criteria, + outer_headers.src_ipv4_src_ipv6.ipv6_layout.ipv6), + 0xff, 16); + memset(MLX5_ADDR_OF(fte_match_param, spec->match_criteria, + outer_headers.dst_ipv4_dst_ipv6.ipv6_layout.ipv6), + 0xff, 16); +} +#endif + +void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule) +{ + mlx5_del_flow_rules(rule); +} + +struct mlx5_flow_handle *mlx5e_accel_fs_add_sk(struct mlx5e_priv *priv, + struct sock *sk, u32 tirn, + uint32_t flow_tag) +{ + struct mlx5_flow_destination dest = {}; + struct mlx5e_flow_table *ft = NULL; + struct mlx5e_accel_fs_tcp *fs_tcp; + MLX5_DECLARE_FLOW_ACT(flow_act); + struct mlx5_flow_handle *flow; + struct mlx5_flow_spec *spec; + + spec = kvzalloc(sizeof(*spec), GFP_KERNEL); + if (!spec) + return ERR_PTR(-ENOMEM); + + fs_tcp = priv->fs.accel_tcp; + + spec->match_criteria_enable = MLX5_MATCH_OUTER_HEADERS; + + switch (sk->sk_family) { + case AF_INET: + accel_fs_tcp_set_ipv4_flow(spec, sk); + ft = &fs_tcp->tables[ACCEL_FS_IPV4_TCP]; + mlx5e_dbg(HW, priv, "%s flow is %pI4:%d -> %pI4:%d\n", __func__, + &inet_sk(sk)->inet_rcv_saddr, + inet_sk(sk)->inet_sport, + &inet_sk(sk)->inet_daddr, + inet_sk(sk)->inet_dport); + break; +#if IS_ENABLED(CONFIG_IPV6) + case AF_INET6: + if (!sk->sk_ipv6only && + ipv6_addr_type(&sk->sk_v6_daddr) == IPV6_ADDR_MAPPED) { + accel_fs_tcp_set_ipv4_flow(spec, sk); + ft = &fs_tcp->tables[ACCEL_FS_IPV4_TCP]; + } else { + accel_fs_tcp_set_ipv6_flow(spec, sk); + ft = &fs_tcp->tables[ACCEL_FS_IPV6_TCP]; + } + break; +#endif + default: + break; + } + + if (!ft) { + flow = ERR_PTR(-EINVAL); + goto out; + } + + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, + outer_headers.tcp_dport); + MLX5_SET_TO_ONES(fte_match_param, spec->match_criteria, + outer_headers.tcp_sport); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.tcp_dport, + ntohs(inet_sk(sk)->inet_sport)); + MLX5_SET(fte_match_param, spec->match_value, outer_headers.tcp_sport, + ntohs(inet_sk(sk)->inet_dport)); + + dest.type = MLX5_FLOW_DESTINATION_TYPE_TIR; + dest.tir_num = tirn; + if (flow_tag != MLX5_FS_DEFAULT_FLOW_TAG) { + spec->flow_context.flow_tag = flow_tag; + spec->flow_context.flags = FLOW_CONTEXT_HAS_TAG; + } + + flow = mlx5_add_flow_rules(ft->t, spec, &flow_act, &dest, 1); + + if (IS_ERR(flow)) + netdev_err(priv->netdev, "mlx5_add_flow_rules() failed, flow is %ld\n", + PTR_ERR(flow)); + +out: + kvfree(spec); + return flow; +} + +static int accel_fs_tcp_add_default_rule(struct mlx5e_priv *priv, + enum accel_fs_tcp_type type) +{ + struct mlx5e_flow_table *accel_fs_t; + struct mlx5_flow_destination dest; + struct mlx5e_accel_fs_tcp *fs_tcp; + MLX5_DECLARE_FLOW_ACT(flow_act); + struct mlx5_flow_handle *rule; + int err = 0; + + fs_tcp = priv->fs.accel_tcp; + accel_fs_t = &fs_tcp->tables[type]; + + dest = mlx5e_ttc_get_default_dest(priv, fs_accel2tt(type)); + rule = mlx5_add_flow_rules(accel_fs_t->t, NULL, &flow_act, &dest, 1); + if (IS_ERR(rule)) { + err = PTR_ERR(rule); + netdev_err(priv->netdev, + "%s: add default rule failed, accel_fs type=%d, err %d\n", + __func__, type, err); + return err; + } + + fs_tcp->default_rules[type] = rule; + return 0; +} + +#define MLX5E_ACCEL_FS_TCP_NUM_GROUPS (2) +#define MLX5E_ACCEL_FS_TCP_GROUP1_SIZE (BIT(16) - 1) +#define MLX5E_ACCEL_FS_TCP_GROUP2_SIZE (BIT(0)) +#define MLX5E_ACCEL_FS_TCP_TABLE_SIZE (MLX5E_ACCEL_FS_TCP_GROUP1_SIZE +\ + MLX5E_ACCEL_FS_TCP_GROUP2_SIZE) +static int accel_fs_tcp_create_groups(struct mlx5e_flow_table *ft, + enum accel_fs_tcp_type type) +{ + int inlen = MLX5_ST_SZ_BYTES(create_flow_group_in); + void *outer_headers_c; + int ix = 0; + u32 *in; + int err; + u8 *mc; + + ft->g = kcalloc(MLX5E_ACCEL_FS_TCP_NUM_GROUPS, sizeof(*ft->g), GFP_KERNEL); + in = kvzalloc(inlen, GFP_KERNEL); + if (!in || !ft->g) { + kvfree(ft->g); + kvfree(in); + return -ENOMEM; + } + + mc = MLX5_ADDR_OF(create_flow_group_in, in, match_criteria); + outer_headers_c = MLX5_ADDR_OF(fte_match_param, mc, outer_headers); + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, ip_protocol); + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, ip_version); + + switch (type) { + case ACCEL_FS_IPV4_TCP: + case ACCEL_FS_IPV6_TCP: + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, tcp_dport); + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, tcp_sport); + break; + default: + err = -EINVAL; + goto out; + } + + switch (type) { + case ACCEL_FS_IPV4_TCP: + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, + src_ipv4_src_ipv6.ipv4_layout.ipv4); + MLX5_SET_TO_ONES(fte_match_set_lyr_2_4, outer_headers_c, + dst_ipv4_dst_ipv6.ipv4_layout.ipv4); + break; + case ACCEL_FS_IPV6_TCP: + memset(MLX5_ADDR_OF(fte_match_set_lyr_2_4, outer_headers_c, + src_ipv4_src_ipv6.ipv6_layout.ipv6), + 0xff, 16); + memset(MLX5_ADDR_OF(fte_match_set_lyr_2_4, outer_headers_c, + dst_ipv4_dst_ipv6.ipv6_layout.ipv6), + 0xff, 16); + break; + default: + err = -EINVAL; + goto out; + } + + MLX5_SET_CFG(in, match_criteria_enable, MLX5_MATCH_OUTER_HEADERS); + MLX5_SET_CFG(in, start_flow_index, ix); + ix += MLX5E_ACCEL_FS_TCP_GROUP1_SIZE; + MLX5_SET_CFG(in, end_flow_index, ix - 1); + ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in); + if (IS_ERR(ft->g[ft->num_groups])) + goto err; + ft->num_groups++; + + /* Default Flow Group */ + memset(in, 0, inlen); + MLX5_SET_CFG(in, start_flow_index, ix); + ix += MLX5E_ACCEL_FS_TCP_GROUP2_SIZE; + MLX5_SET_CFG(in, end_flow_index, ix - 1); + ft->g[ft->num_groups] = mlx5_create_flow_group(ft->t, in); + if (IS_ERR(ft->g[ft->num_groups])) + goto err; + ft->num_groups++; + + kvfree(in); + return 0; + +err: + err = PTR_ERR(ft->g[ft->num_groups]); + ft->g[ft->num_groups] = NULL; +out: + kvfree(in); + + return err; +} + +static int accel_fs_tcp_create_table(struct mlx5e_priv *priv, enum accel_fs_tcp_type type) +{ + struct mlx5e_flow_table *ft = &priv->fs.accel_tcp->tables[type]; + struct mlx5_flow_table_attr ft_attr = {}; + int err; + + ft->num_groups = 0; + + ft_attr.max_fte = MLX5E_ACCEL_FS_TCP_TABLE_SIZE; + ft_attr.level = MLX5E_ACCEL_FS_TCP_FT_LEVEL; + ft_attr.prio = MLX5E_NIC_PRIO; + + ft->t = mlx5_create_flow_table(priv->fs.ns, &ft_attr); + if (IS_ERR(ft->t)) { + err = PTR_ERR(ft->t); + ft->t = NULL; + return err; + } + + netdev_dbg(priv->netdev, "Created fs accel table id %u level %u\n", + ft->t->id, ft->t->level); + + err = accel_fs_tcp_create_groups(ft, type); + if (err) + goto err; + + err = accel_fs_tcp_add_default_rule(priv, type); + if (err) + goto err; + + return 0; +err: + mlx5e_destroy_flow_table(ft); + return err; +} + +static int accel_fs_tcp_disable(struct mlx5e_priv *priv) +{ + int err, i; + + for (i = 0; i < ACCEL_FS_TCP_NUM_TYPES; i++) { + /* Modify ttc rules destination to point back to the indir TIRs */ + err = mlx5e_ttc_fwd_default_dest(priv, fs_accel2tt(i)); + if (err) { + netdev_err(priv->netdev, + "%s: modify ttc[%d] default destination failed, err(%d)\n", + __func__, fs_accel2tt(i), err); + return err; + } + } + + return 0; +} + +static int accel_fs_tcp_enable(struct mlx5e_priv *priv) +{ + struct mlx5_flow_destination dest = {}; + int err, i; + + dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; + for (i = 0; i < ACCEL_FS_TCP_NUM_TYPES; i++) { + dest.ft = priv->fs.accel_tcp->tables[i].t; + + /* Modify ttc rules destination to point on the accel_fs FTs */ + err = mlx5e_ttc_fwd_dest(priv, fs_accel2tt(i), &dest); + if (err) { + netdev_err(priv->netdev, + "%s: modify ttc[%d] destination to accel failed, err(%d)\n", + __func__, fs_accel2tt(i), err); + return err; + } + } + return 0; +} + +static void accel_fs_tcp_destroy_table(struct mlx5e_priv *priv, int i) +{ + struct mlx5e_accel_fs_tcp *fs_tcp; + + fs_tcp = priv->fs.accel_tcp; + if (IS_ERR_OR_NULL(fs_tcp->tables[i].t)) + return; + + mlx5_del_flow_rules(fs_tcp->default_rules[i]); + mlx5e_destroy_flow_table(&fs_tcp->tables[i]); + fs_tcp->tables[i].t = NULL; +} + +void mlx5e_accel_fs_tcp_destroy(struct mlx5e_priv *priv) +{ + int i; + + if (!priv->fs.accel_tcp) + return; + + accel_fs_tcp_disable(priv); + + for (i = 0; i < ACCEL_FS_TCP_NUM_TYPES; i++) + accel_fs_tcp_destroy_table(priv, i); + + kfree(priv->fs.accel_tcp); + priv->fs.accel_tcp = NULL; +} + +int mlx5e_accel_fs_tcp_create(struct mlx5e_priv *priv) +{ + int i, err; + + if (!MLX5_CAP_FLOWTABLE_NIC_RX(priv->mdev, ft_field_support.outer_ip_version)) + return -EOPNOTSUPP; + + priv->fs.accel_tcp = kzalloc(sizeof(*priv->fs.accel_tcp), GFP_KERNEL); + if (!priv->fs.accel_tcp) + return -ENOMEM; + + for (i = 0; i < ACCEL_FS_TCP_NUM_TYPES; i++) { + err = accel_fs_tcp_create_table(priv, i); + if (err) + goto err_destroy_tables; + } + + err = accel_fs_tcp_enable(priv); + if (err) + goto err_destroy_tables; + + return 0; + +err_destroy_tables: + while (--i >= 0) + accel_fs_tcp_destroy_table(priv, i); + + kfree(priv->fs.accel_tcp); + priv->fs.accel_tcp = NULL; + return err; +} --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ +/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ + +#ifndef __MLX5E_ACCEL_FS_TCP_H__ +#define __MLX5E_ACCEL_FS_TCP_H__ + +#include "en.h" + +#ifdef CONFIG_MLX5_EN_TLS +int mlx5e_accel_fs_tcp_create(struct mlx5e_priv *priv); +void mlx5e_accel_fs_tcp_destroy(struct mlx5e_priv *priv); +struct mlx5_flow_handle *mlx5e_accel_fs_add_sk(struct mlx5e_priv *priv, + struct sock *sk, u32 tirn, + uint32_t flow_tag); +void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule); +#else +static inline int mlx5e_accel_fs_tcp_create(struct mlx5e_priv *priv) { return 0; } +static inline void mlx5e_accel_fs_tcp_destroy(struct mlx5e_priv *priv) {} +static inline struct mlx5_flow_handle *mlx5e_accel_fs_add_sk(struct mlx5e_priv *priv, + struct sock *sk, u32 tirn, + uint32_t flow_tag) +{ return ERR_PTR(-EOPNOTSUPP); } +static inline void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule) {} +#endif + +#endif /* __MLX5E_ACCEL_FS_TCP_H__ */ + --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_stats.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_stats.c @@ -76,7 +76,7 @@ static MLX5E_DECLARE_STATS_GRP_OP_NUM_STATS(ipsec_sw) { - return NUM_IPSEC_SW_COUNTERS; + return priv->ipsec ? NUM_IPSEC_SW_COUNTERS : 0; } static inline MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(ipsec_sw) {} @@ -105,7 +105,7 @@ static MLX5E_DECLARE_STATS_GRP_OP_NUM_STATS(ipsec_hw) { - return (mlx5_fpga_ipsec_device_caps(priv->mdev)) ? NUM_IPSEC_HW_COUNTERS : 0; + return (priv->ipsec && mlx5_fpga_ipsec_device_caps(priv->mdev)) ? NUM_IPSEC_HW_COUNTERS : 0; } static MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(ipsec_hw) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.c @@ -3,31 +3,8 @@ #include "en.h" #include "en_accel/ktls.h" - -u16 mlx5e_ktls_get_stop_room(struct mlx5e_txqsq *sq) -{ - u16 num_dumps, stop_room = 0; - - num_dumps = mlx5e_ktls_dumps_num_wqes(sq, MAX_SKB_FRAGS, TLS_MAX_PAYLOAD_SIZE); - - stop_room += mlx5e_stop_room_for_wqe(MLX5E_KTLS_STATIC_WQEBBS); - stop_room += mlx5e_stop_room_for_wqe(MLX5E_KTLS_PROGRESS_WQEBBS); - stop_room += num_dumps * mlx5e_stop_room_for_wqe(MLX5E_KTLS_DUMP_WQEBBS); - - return stop_room; -} - -static int mlx5e_ktls_create_tis(struct mlx5_core_dev *mdev, u32 *tisn) -{ - u32 in[MLX5_ST_SZ_DW(create_tis_in)] = {}; - void *tisc; - - tisc = MLX5_ADDR_OF(create_tis_in, in, ctx); - - MLX5_SET(tisc, tisc, tls_en, 1); - - return mlx5e_create_tis(mdev, in, tisn); -} +#include "en_accel/ktls_utils.h" +#include "en_accel/fs_tcp.h" static int mlx5e_ktls_add(struct net_device *netdev, struct sock *sk, enum tls_offload_ctx_dir direction, @@ -35,42 +12,17 @@ u32 start_offload_tcp_sn) { struct mlx5e_priv *priv = netdev_priv(netdev); - struct mlx5e_ktls_offload_context_tx *tx_priv; - struct tls_context *tls_ctx = tls_get_ctx(sk); struct mlx5_core_dev *mdev = priv->mdev; int err; - if (WARN_ON(direction != TLS_OFFLOAD_CTX_DIR_TX)) - return -EINVAL; - if (WARN_ON(!mlx5e_ktls_type_check(mdev, crypto_info))) return -EOPNOTSUPP; - tx_priv = kvzalloc(sizeof(*tx_priv), GFP_KERNEL); - if (!tx_priv) - return -ENOMEM; - - tx_priv->expected_seq = start_offload_tcp_sn; - tx_priv->crypto_info = *(struct tls12_crypto_info_aes_gcm_128 *)crypto_info; - mlx5e_set_ktls_tx_priv_ctx(tls_ctx, tx_priv); - - /* tc and underlay_qpn values are not in use for tls tis */ - err = mlx5e_ktls_create_tis(mdev, &tx_priv->tisn); - if (err) - goto create_tis_fail; - - err = mlx5_ktls_create_key(mdev, crypto_info, &tx_priv->key_id); - if (err) - goto encryption_key_create_fail; - - mlx5e_ktls_tx_offload_set_pending(tx_priv); - - return 0; + if (direction == TLS_OFFLOAD_CTX_DIR_TX) + err = mlx5e_ktls_add_tx(netdev, sk, crypto_info, start_offload_tcp_sn); + else + err = mlx5e_ktls_add_rx(netdev, sk, crypto_info, start_offload_tcp_sn); -encryption_key_create_fail: - mlx5e_destroy_tis(priv->mdev, tx_priv->tisn); -create_tis_fail: - kvfree(tx_priv); return err; } @@ -78,29 +30,72 @@ struct tls_context *tls_ctx, enum tls_offload_ctx_dir direction) { - struct mlx5e_priv *priv = netdev_priv(netdev); - struct mlx5e_ktls_offload_context_tx *tx_priv = - mlx5e_get_ktls_tx_priv_ctx(tls_ctx); + if (direction == TLS_OFFLOAD_CTX_DIR_TX) + mlx5e_ktls_del_tx(netdev, tls_ctx); + else + mlx5e_ktls_del_rx(netdev, tls_ctx); +} - mlx5e_destroy_tis(priv->mdev, tx_priv->tisn); - mlx5_ktls_destroy_key(priv->mdev, tx_priv->key_id); - kvfree(tx_priv); +static int mlx5e_ktls_resync(struct net_device *netdev, + struct sock *sk, u32 seq, u8 *rcd_sn, + enum tls_offload_ctx_dir direction) +{ + if (unlikely(direction != TLS_OFFLOAD_CTX_DIR_RX)) + return -EOPNOTSUPP; + + mlx5e_ktls_rx_resync(netdev, sk, seq, rcd_sn); + return 0; } static const struct tlsdev_ops mlx5e_ktls_ops = { .tls_dev_add = mlx5e_ktls_add, .tls_dev_del = mlx5e_ktls_del, + .tls_dev_resync = mlx5e_ktls_resync, }; void mlx5e_ktls_build_netdev(struct mlx5e_priv *priv) { struct net_device *netdev = priv->netdev; + struct mlx5_core_dev *mdev = priv->mdev; - if (!mlx5_accel_is_ktls_device(priv->mdev)) - return; + if (mlx5_accel_is_ktls_tx(mdev)) { + netdev->hw_features |= NETIF_F_HW_TLS_TX; + netdev->features |= NETIF_F_HW_TLS_TX; + } - netdev->hw_features |= NETIF_F_HW_TLS_TX; - netdev->features |= NETIF_F_HW_TLS_TX; + if (mlx5_accel_is_ktls_rx(mdev)) + netdev->hw_features |= NETIF_F_HW_TLS_RX; netdev->tlsdev_ops = &mlx5e_ktls_ops; } + +int mlx5e_ktls_set_feature_rx(struct net_device *netdev, bool enable) +{ + struct mlx5e_priv *priv = netdev_priv(netdev); + int err = 0; + + mutex_lock(&priv->state_lock); + if (enable) + err = mlx5e_accel_fs_tcp_create(priv); + else + mlx5e_accel_fs_tcp_destroy(priv); + mutex_unlock(&priv->state_lock); + + return err; +} + +int mlx5e_ktls_init_rx(struct mlx5e_priv *priv) +{ + int err = 0; + + if (priv->netdev->features & NETIF_F_HW_TLS_RX) + err = mlx5e_accel_fs_tcp_create(priv); + + return err; +} + +void mlx5e_ktls_cleanup_rx(struct mlx5e_priv *priv) +{ + if (priv->netdev->features & NETIF_F_HW_TLS_RX) + mlx5e_accel_fs_tcp_destroy(priv); +} --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls.h @@ -7,122 +7,32 @@ #include "en.h" #ifdef CONFIG_MLX5_EN_TLS -#include -#include "accel/tls.h" -#include "en_accel/tls_rxtx.h" - -#define MLX5E_KTLS_STATIC_UMR_WQE_SZ \ - (offsetof(struct mlx5e_umr_wqe, tls_static_params_ctx) + \ - MLX5_ST_SZ_BYTES(tls_static_params)) -#define MLX5E_KTLS_STATIC_WQEBBS \ - (DIV_ROUND_UP(MLX5E_KTLS_STATIC_UMR_WQE_SZ, MLX5_SEND_WQE_BB)) - -#define MLX5E_KTLS_PROGRESS_WQE_SZ \ - (offsetof(struct mlx5e_tx_wqe, tls_progress_params_ctx) + \ - MLX5_ST_SZ_BYTES(tls_progress_params)) -#define MLX5E_KTLS_PROGRESS_WQEBBS \ - (DIV_ROUND_UP(MLX5E_KTLS_PROGRESS_WQE_SZ, MLX5_SEND_WQE_BB)) - -struct mlx5e_dump_wqe { - struct mlx5_wqe_ctrl_seg ctrl; - struct mlx5_wqe_data_seg data; -}; - -#define MLX5E_TLS_FETCH_UMR_WQE(sq, pi) \ - ((struct mlx5e_umr_wqe *)mlx5e_fetch_wqe(&(sq)->wq, pi, MLX5E_KTLS_STATIC_UMR_WQE_SZ)) -#define MLX5E_TLS_FETCH_PROGRESS_WQE(sq, pi) \ - ((struct mlx5e_tx_wqe *)mlx5e_fetch_wqe(&(sq)->wq, pi, MLX5E_KTLS_PROGRESS_WQE_SZ)) -#define MLX5E_TLS_FETCH_DUMP_WQE(sq, pi) \ - ((struct mlx5e_dump_wqe *)mlx5e_fetch_wqe(&(sq)->wq, pi, \ - sizeof(struct mlx5e_dump_wqe))) - -#define MLX5E_KTLS_DUMP_WQEBBS \ - (DIV_ROUND_UP(sizeof(struct mlx5e_dump_wqe), MLX5_SEND_WQE_BB)) - -enum { - MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD = 0, - MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_OFFLOAD = 1, - MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_AUTHENTICATION = 2, -}; - -enum { - MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_START = 0, - MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_TRACKING = 1, - MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_SEARCHING = 2, -}; - -struct mlx5e_ktls_offload_context_tx { - struct tls_offload_context_tx *tx_ctx; - struct tls12_crypto_info_aes_gcm_128 crypto_info; - u32 expected_seq; - u32 tisn; - u32 key_id; - bool ctx_post_pending; -}; - -struct mlx5e_ktls_offload_context_tx_shadow { - struct tls_offload_context_tx tx_ctx; - struct mlx5e_ktls_offload_context_tx *priv_tx; -}; - -static inline void -mlx5e_set_ktls_tx_priv_ctx(struct tls_context *tls_ctx, - struct mlx5e_ktls_offload_context_tx *priv_tx) -{ - struct tls_offload_context_tx *tx_ctx = tls_offload_ctx_tx(tls_ctx); - struct mlx5e_ktls_offload_context_tx_shadow *shadow; - - BUILD_BUG_ON(sizeof(*shadow) > TLS_OFFLOAD_CONTEXT_SIZE_TX); - shadow = (struct mlx5e_ktls_offload_context_tx_shadow *)tx_ctx; +void mlx5e_ktls_build_netdev(struct mlx5e_priv *priv); +int mlx5e_ktls_init_rx(struct mlx5e_priv *priv); +void mlx5e_ktls_cleanup_rx(struct mlx5e_priv *priv); +int mlx5e_ktls_set_feature_rx(struct net_device *netdev, bool enable); +#else - shadow->priv_tx = priv_tx; - priv_tx->tx_ctx = tx_ctx; +static inline void mlx5e_ktls_build_netdev(struct mlx5e_priv *priv) +{ } -static inline struct mlx5e_ktls_offload_context_tx * -mlx5e_get_ktls_tx_priv_ctx(struct tls_context *tls_ctx) +static inline int mlx5e_ktls_init_rx(struct mlx5e_priv *priv) { - struct tls_offload_context_tx *tx_ctx = tls_offload_ctx_tx(tls_ctx); - struct mlx5e_ktls_offload_context_tx_shadow *shadow; - - BUILD_BUG_ON(sizeof(*shadow) > TLS_OFFLOAD_CONTEXT_SIZE_TX); - - shadow = (struct mlx5e_ktls_offload_context_tx_shadow *)tx_ctx; - - return shadow->priv_tx; + return 0; } -void mlx5e_ktls_build_netdev(struct mlx5e_priv *priv); -void mlx5e_ktls_tx_offload_set_pending(struct mlx5e_ktls_offload_context_tx *priv_tx); - -bool mlx5e_ktls_handle_tx_skb(struct tls_context *tls_ctx, struct mlx5e_txqsq *sq, - struct sk_buff *skb, int datalen, - struct mlx5e_accel_tx_tls_state *state); -void mlx5e_ktls_tx_handle_resync_dump_comp(struct mlx5e_txqsq *sq, - struct mlx5e_tx_wqe_info *wi, - u32 *dma_fifo_cc); -u16 mlx5e_ktls_get_stop_room(struct mlx5e_txqsq *sq); - -static inline u8 -mlx5e_ktls_dumps_num_wqes(struct mlx5e_txqsq *sq, unsigned int nfrags, - unsigned int sync_len) +static inline void mlx5e_ktls_cleanup_rx(struct mlx5e_priv *priv) { - /* Given the MTU and sync_len, calculates an upper bound for the - * number of DUMP WQEs needed for the TX resync of a record. - */ - return nfrags + DIV_ROUND_UP(sync_len, sq->hw_mtu); } -#else -static inline void mlx5e_ktls_build_netdev(struct mlx5e_priv *priv) +static inline int mlx5e_ktls_set_feature_rx(struct net_device *netdev, bool enable) { + netdev_warn(netdev, "kTLS is not supported\n"); + return -EOPNOTSUPP; } -static inline void -mlx5e_ktls_tx_handle_resync_dump_comp(struct mlx5e_txqsq *sq, - struct mlx5e_tx_wqe_info *wi, - u32 *dma_fifo_cc) {} #endif #endif /* __MLX5E_TLS_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c @@ -0,0 +1,680 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB +// Copyright (c) 2019 Mellanox Technologies. + +#include +#include "en_accel/en_accel.h" +#include "en_accel/tls.h" +#include "en_accel/ktls_txrx.h" +#include "en_accel/ktls_utils.h" +#include "en_accel/fs_tcp.h" + +struct accel_rule { + struct work_struct work; + struct mlx5e_priv *priv; + struct mlx5_flow_handle *rule; +}; + +#define PROGRESS_PARAMS_WRITE_UNIT 64 +#define PROGRESS_PARAMS_PADDED_SIZE \ + (ALIGN(sizeof(struct mlx5_wqe_tls_progress_params_seg), \ + PROGRESS_PARAMS_WRITE_UNIT)) + +struct mlx5e_ktls_rx_resync_buf { + union { + struct mlx5_wqe_tls_progress_params_seg progress; + u8 pad[PROGRESS_PARAMS_PADDED_SIZE]; + } ____cacheline_aligned_in_smp; + dma_addr_t dma_addr; + struct mlx5e_ktls_offload_context_rx *priv_rx; +}; + +enum { + MLX5E_PRIV_RX_FLAG_DELETING, + MLX5E_NUM_PRIV_RX_FLAGS, +}; + +struct mlx5e_ktls_rx_resync_ctx { + struct tls_offload_resync_async core; + struct work_struct work; + struct mlx5e_priv *priv; + refcount_t refcnt; + __be64 sw_rcd_sn_be; + u32 seq; +}; + +struct mlx5e_ktls_offload_context_rx { + struct tls12_crypto_info_aes_gcm_128 crypto_info; + struct accel_rule rule; + struct sock *sk; + struct mlx5e_rq_stats *stats; + struct completion add_ctx; + u32 tirn; + u32 key_id; + u32 rxq; + DECLARE_BITMAP(flags, MLX5E_NUM_PRIV_RX_FLAGS); + + /* resync */ + struct mlx5e_ktls_rx_resync_ctx resync; +}; + +static bool mlx5e_ktls_priv_rx_put(struct mlx5e_ktls_offload_context_rx *priv_rx) +{ + if (!refcount_dec_and_test(&priv_rx->resync.refcnt)) + return false; + + kfree(priv_rx); + return true; +} + +static void mlx5e_ktls_priv_rx_get(struct mlx5e_ktls_offload_context_rx *priv_rx) +{ + refcount_inc(&priv_rx->resync.refcnt); +} + +static int mlx5e_ktls_create_tir(struct mlx5_core_dev *mdev, u32 *tirn, u32 rqtn) +{ + int err, inlen; + void *tirc; + u32 *in; + + inlen = MLX5_ST_SZ_BYTES(create_tir_in); + in = kvzalloc(inlen, GFP_KERNEL); + if (!in) + return -ENOMEM; + + tirc = MLX5_ADDR_OF(create_tir_in, in, ctx); + + MLX5_SET(tirc, tirc, transport_domain, mdev->mlx5e_res.td.tdn); + MLX5_SET(tirc, tirc, disp_type, MLX5_TIRC_DISP_TYPE_INDIRECT); + MLX5_SET(tirc, tirc, rx_hash_fn, MLX5_RX_HASH_FN_INVERTED_XOR8); + MLX5_SET(tirc, tirc, indirect_table, rqtn); + MLX5_SET(tirc, tirc, tls_en, 1); + MLX5_SET(tirc, tirc, self_lb_block, + MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST | + MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST); + + err = mlx5_core_create_tir(mdev, in, tirn); + + kvfree(in); + return err; +} + +static void accel_rule_handle_work(struct work_struct *work) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct accel_rule *accel_rule; + struct mlx5_flow_handle *rule; + + accel_rule = container_of(work, struct accel_rule, work); + priv_rx = container_of(accel_rule, struct mlx5e_ktls_offload_context_rx, rule); + if (unlikely(test_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags))) + goto out; + + rule = mlx5e_accel_fs_add_sk(accel_rule->priv, priv_rx->sk, + priv_rx->tirn, MLX5_FS_DEFAULT_FLOW_TAG); + if (!IS_ERR_OR_NULL(rule)) + accel_rule->rule = rule; +out: + complete(&priv_rx->add_ctx); +} + +static void accel_rule_init(struct accel_rule *rule, struct mlx5e_priv *priv, + struct sock *sk) +{ + INIT_WORK(&rule->work, accel_rule_handle_work); + rule->priv = priv; +} + +static void icosq_fill_wi(struct mlx5e_icosq *sq, u16 pi, + struct mlx5e_icosq_wqe_info *wi) +{ + sq->db.wqe_info[pi] = *wi; +} + +static struct mlx5_wqe_ctrl_seg * +post_static_params(struct mlx5e_icosq *sq, + struct mlx5e_ktls_offload_context_rx *priv_rx) +{ + struct mlx5e_set_tls_static_params_wqe *wqe; + struct mlx5e_icosq_wqe_info wi; + u16 pi, num_wqebbs, room; + + num_wqebbs = MLX5E_TLS_SET_STATIC_PARAMS_WQEBBS; + room = mlx5e_stop_room_for_wqe(num_wqebbs); + if (unlikely(!mlx5e_wqc_has_room_for(&sq->wq, sq->cc, sq->pc, room))) + return ERR_PTR(-ENOSPC); + + pi = mlx5e_icosq_get_next_pi(sq, num_wqebbs); + wqe = MLX5E_TLS_FETCH_SET_STATIC_PARAMS_WQE(sq, pi); + mlx5e_ktls_build_static_params(wqe, sq->pc, sq->sqn, &priv_rx->crypto_info, + priv_rx->tirn, priv_rx->key_id, + priv_rx->resync.seq, false, + TLS_OFFLOAD_CTX_DIR_RX); + wi = (struct mlx5e_icosq_wqe_info) { + .wqe_type = MLX5E_ICOSQ_WQE_UMR_TLS, + .num_wqebbs = num_wqebbs, + .tls_set_params.priv_rx = priv_rx, + }; + icosq_fill_wi(sq, pi, &wi); + sq->pc += num_wqebbs; + + return &wqe->ctrl; +} + +static struct mlx5_wqe_ctrl_seg * +post_progress_params(struct mlx5e_icosq *sq, + struct mlx5e_ktls_offload_context_rx *priv_rx, + u32 next_record_tcp_sn) +{ + struct mlx5e_set_tls_progress_params_wqe *wqe; + struct mlx5e_icosq_wqe_info wi; + u16 pi, num_wqebbs, room; + + num_wqebbs = MLX5E_TLS_SET_PROGRESS_PARAMS_WQEBBS; + room = mlx5e_stop_room_for_wqe(num_wqebbs); + if (unlikely(!mlx5e_wqc_has_room_for(&sq->wq, sq->cc, sq->pc, room))) + return ERR_PTR(-ENOSPC); + + pi = mlx5e_icosq_get_next_pi(sq, num_wqebbs); + wqe = MLX5E_TLS_FETCH_SET_PROGRESS_PARAMS_WQE(sq, pi); + mlx5e_ktls_build_progress_params(wqe, sq->pc, sq->sqn, priv_rx->tirn, false, + next_record_tcp_sn, + TLS_OFFLOAD_CTX_DIR_RX); + wi = (struct mlx5e_icosq_wqe_info) { + .wqe_type = MLX5E_ICOSQ_WQE_SET_PSV_TLS, + .num_wqebbs = num_wqebbs, + .tls_set_params.priv_rx = priv_rx, + }; + + icosq_fill_wi(sq, pi, &wi); + sq->pc += num_wqebbs; + + return &wqe->ctrl; +} + +static int post_rx_param_wqes(struct mlx5e_channel *c, + struct mlx5e_ktls_offload_context_rx *priv_rx, + u32 next_record_tcp_sn) +{ + struct mlx5_wqe_ctrl_seg *cseg; + struct mlx5e_icosq *sq; + int err; + + err = 0; + sq = &c->async_icosq; + spin_lock_bh(&c->async_icosq_lock); + + cseg = post_static_params(sq, priv_rx); + if (IS_ERR(cseg)) + goto err_out; + cseg = post_progress_params(sq, priv_rx, next_record_tcp_sn); + if (IS_ERR(cseg)) + goto err_out; + + mlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, cseg); +unlock: + spin_unlock_bh(&c->async_icosq_lock); + + return err; + +err_out: + priv_rx->stats->tls_resync_req_skip++; + err = PTR_ERR(cseg); + complete(&priv_rx->add_ctx); + goto unlock; +} + +static void +mlx5e_set_ktls_rx_priv_ctx(struct tls_context *tls_ctx, + struct mlx5e_ktls_offload_context_rx *priv_rx) +{ + struct mlx5e_ktls_offload_context_rx **ctx = + __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_RX); + + BUILD_BUG_ON(sizeof(struct mlx5e_ktls_offload_context_rx *) > + TLS_OFFLOAD_CONTEXT_SIZE_RX); + + *ctx = priv_rx; +} + +static struct mlx5e_ktls_offload_context_rx * +mlx5e_get_ktls_rx_priv_ctx(struct tls_context *tls_ctx) +{ + struct mlx5e_ktls_offload_context_rx **ctx = + __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_RX); + + return *ctx; +} + +/* Re-sync */ +/* Runs in work context */ +static int +resync_post_get_progress_params(struct mlx5e_icosq *sq, + struct mlx5e_ktls_offload_context_rx *priv_rx) +{ + struct mlx5e_get_tls_progress_params_wqe *wqe; + struct mlx5e_ktls_rx_resync_buf *buf; + struct mlx5e_icosq_wqe_info wi; + struct mlx5_wqe_ctrl_seg *cseg; + struct mlx5_seg_get_psv *psv; + struct device *pdev; + int err; + u16 pi; + + buf = kzalloc(sizeof(*buf), GFP_KERNEL); + if (unlikely(!buf)) { + err = -ENOMEM; + goto err_out; + } + + pdev = sq->channel->priv->mdev->device; + buf->dma_addr = dma_map_single(pdev, &buf->progress, + PROGRESS_PARAMS_PADDED_SIZE, DMA_FROM_DEVICE); + if (unlikely(dma_mapping_error(pdev, buf->dma_addr))) { + err = -ENOMEM; + goto err_free; + } + + buf->priv_rx = priv_rx; + + BUILD_BUG_ON(MLX5E_KTLS_GET_PROGRESS_WQEBBS != 1); + + spin_lock_bh(&sq->channel->async_icosq_lock); + + if (unlikely(!mlx5e_wqc_has_room_for(&sq->wq, sq->cc, sq->pc, 1))) { + spin_unlock_bh(&sq->channel->async_icosq_lock); + err = -ENOSPC; + goto err_dma_unmap; + } + + pi = mlx5e_icosq_get_next_pi(sq, 1); + wqe = MLX5E_TLS_FETCH_GET_PROGRESS_PARAMS_WQE(sq, pi); + +#define GET_PSV_DS_CNT (DIV_ROUND_UP(sizeof(*wqe), MLX5_SEND_WQE_DS)) + + cseg = &wqe->ctrl; + cseg->opmod_idx_opcode = + cpu_to_be32((sq->pc << 8) | MLX5_OPCODE_GET_PSV | + (MLX5_OPC_MOD_TLS_TIR_PROGRESS_PARAMS << 24)); + cseg->qpn_ds = + cpu_to_be32((sq->sqn << MLX5_WQE_CTRL_QPN_SHIFT) | GET_PSV_DS_CNT); + + psv = &wqe->psv; + psv->num_psv = 1 << 4; + psv->l_key = sq->channel->mkey_be; + psv->psv_index[0] = cpu_to_be32(priv_rx->tirn); + psv->va = cpu_to_be64(buf->dma_addr); + + wi = (struct mlx5e_icosq_wqe_info) { + .wqe_type = MLX5E_ICOSQ_WQE_GET_PSV_TLS, + .num_wqebbs = 1, + .tls_get_params.buf = buf, + }; + icosq_fill_wi(sq, pi, &wi); + sq->pc++; + mlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, cseg); + spin_unlock_bh(&sq->channel->async_icosq_lock); + + return 0; + +err_dma_unmap: + dma_unmap_single(pdev, buf->dma_addr, PROGRESS_PARAMS_PADDED_SIZE, DMA_FROM_DEVICE); +err_free: + kfree(buf); +err_out: + priv_rx->stats->tls_resync_req_skip++; + return err; +} + +/* Function is called with elevated refcount. + * It decreases it only if no WQE is posted. + */ +static void resync_handle_work(struct work_struct *work) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + struct mlx5e_channel *c; + struct mlx5e_icosq *sq; + + resync = container_of(work, struct mlx5e_ktls_rx_resync_ctx, work); + priv_rx = container_of(resync, struct mlx5e_ktls_offload_context_rx, resync); + + if (unlikely(test_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags))) { + mlx5e_ktls_priv_rx_put(priv_rx); + return; + } + + c = resync->priv->channels.c[priv_rx->rxq]; + sq = &c->async_icosq; + + if (resync_post_get_progress_params(sq, priv_rx)) + mlx5e_ktls_priv_rx_put(priv_rx); +} + +static void resync_init(struct mlx5e_ktls_rx_resync_ctx *resync, + struct mlx5e_priv *priv) +{ + INIT_WORK(&resync->work, resync_handle_work); + resync->priv = priv; + refcount_set(&resync->refcnt, 1); +} + +/* Function can be called with the refcount being either elevated or not. + * It does not affect the refcount. + */ +static int resync_handle_seq_match(struct mlx5e_ktls_offload_context_rx *priv_rx, + struct mlx5e_channel *c) +{ + struct tls12_crypto_info_aes_gcm_128 *info = &priv_rx->crypto_info; + struct mlx5_wqe_ctrl_seg *cseg; + struct mlx5e_icosq *sq; + int err; + + memcpy(info->rec_seq, &priv_rx->resync.sw_rcd_sn_be, sizeof(info->rec_seq)); + err = 0; + + sq = &c->async_icosq; + spin_lock_bh(&c->async_icosq_lock); + + cseg = post_static_params(sq, priv_rx); + if (IS_ERR(cseg)) { + priv_rx->stats->tls_resync_res_skip++; + err = PTR_ERR(cseg); + goto unlock; + } + /* Do not increment priv_rx refcnt, CQE handling is empty */ + mlx5e_notify_hw(&sq->wq, sq->pc, sq->uar_map, cseg); + priv_rx->stats->tls_resync_res_ok++; +unlock: + spin_unlock_bh(&c->async_icosq_lock); + + return err; +} + +/* Function can be called with the refcount being either elevated or not. + * It decreases the refcount and may free the kTLS priv context. + * Refcount is not elevated only if tls_dev_del has been called, but GET_PSV was + * already in flight. + */ +void mlx5e_ktls_handle_get_psv_completion(struct mlx5e_icosq_wqe_info *wi, + struct mlx5e_icosq *sq) +{ + struct mlx5e_ktls_rx_resync_buf *buf = wi->tls_get_params.buf; + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + u8 tracker_state, auth_state, *ctx; + struct device *dev; + u32 hw_seq; + + priv_rx = buf->priv_rx; + resync = &priv_rx->resync; + dev = resync->priv->mdev->device; + if (unlikely(test_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags))) + goto out; + + dma_sync_single_for_cpu(dev, buf->dma_addr, PROGRESS_PARAMS_PADDED_SIZE, + DMA_FROM_DEVICE); + + ctx = buf->progress.ctx; + tracker_state = MLX5_GET(tls_progress_params, ctx, record_tracker_state); + auth_state = MLX5_GET(tls_progress_params, ctx, auth_state); + if (tracker_state != MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_TRACKING || + auth_state != MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD) { + priv_rx->stats->tls_resync_req_skip++; + goto out; + } + + hw_seq = MLX5_GET(tls_progress_params, ctx, hw_resync_tcp_sn); + tls_offload_rx_resync_async_request_end(priv_rx->sk, cpu_to_be32(hw_seq)); + priv_rx->stats->tls_resync_req_end++; +out: + mlx5e_ktls_priv_rx_put(priv_rx); + dma_unmap_single(dev, buf->dma_addr, PROGRESS_PARAMS_PADDED_SIZE, DMA_FROM_DEVICE); + kfree(buf); +} + +/* Runs in NAPI. + * Function elevates the refcount, unless no work is queued. + */ +static bool resync_queue_get_psv(struct sock *sk) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + + priv_rx = mlx5e_get_ktls_rx_priv_ctx(tls_get_ctx(sk)); + if (unlikely(!priv_rx)) + return false; + + if (unlikely(test_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags))) + return false; + + resync = &priv_rx->resync; + mlx5e_ktls_priv_rx_get(priv_rx); + if (unlikely(!queue_work(resync->priv->tls->rx_wq, &resync->work))) + mlx5e_ktls_priv_rx_put(priv_rx); + + return true; +} + +/* Runs in NAPI */ +static void resync_update_sn(struct mlx5e_rq *rq, struct sk_buff *skb) +{ + struct ethhdr *eth = (struct ethhdr *)(skb->data); + struct net_device *netdev = rq->netdev; + struct sock *sk = NULL; + unsigned int datalen; + struct iphdr *iph; + struct tcphdr *th; + __be32 seq; + int depth = 0; + + __vlan_get_protocol(skb, eth->h_proto, &depth); + iph = (struct iphdr *)(skb->data + depth); + + if (iph->version == 4) { + depth += sizeof(struct iphdr); + th = (void *)iph + sizeof(struct iphdr); + + sk = inet_lookup_established(dev_net(netdev), &tcp_hashinfo, + iph->saddr, th->source, iph->daddr, + th->dest, netdev->ifindex); +#if IS_ENABLED(CONFIG_IPV6) + } else { + struct ipv6hdr *ipv6h = (struct ipv6hdr *)iph; + + depth += sizeof(struct ipv6hdr); + th = (void *)ipv6h + sizeof(struct ipv6hdr); + + sk = __inet6_lookup_established(dev_net(netdev), &tcp_hashinfo, + &ipv6h->saddr, th->source, + &ipv6h->daddr, ntohs(th->dest), + netdev->ifindex, 0); +#endif + } + + depth += sizeof(struct tcphdr); + + if (unlikely(!sk)) + return; + + if (unlikely(sk->sk_state == TCP_TIME_WAIT)) + goto unref; + + if (unlikely(!resync_queue_get_psv(sk))) + goto unref; + + seq = th->seq; + datalen = skb->len - depth; + tls_offload_rx_resync_async_request_start(sk, seq, datalen); + rq->stats->tls_resync_req_start++; + +unref: + sock_gen_put(sk); +} + +void mlx5e_ktls_rx_resync(struct net_device *netdev, struct sock *sk, + u32 seq, u8 *rcd_sn) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + struct mlx5e_priv *priv; + struct mlx5e_channel *c; + + priv_rx = mlx5e_get_ktls_rx_priv_ctx(tls_get_ctx(sk)); + if (unlikely(!priv_rx)) + return; + + resync = &priv_rx->resync; + resync->sw_rcd_sn_be = *(__be64 *)rcd_sn; + resync->seq = seq; + + priv = netdev_priv(netdev); + c = priv->channels.c[priv_rx->rxq]; + + resync_handle_seq_match(priv_rx, c); +} + +/* End of resync section */ + +void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb, + struct mlx5_cqe64 *cqe, u32 *cqe_bcnt) +{ + struct mlx5e_rq_stats *stats = rq->stats; + + switch (get_cqe_tls_offload(cqe)) { + case CQE_TLS_OFFLOAD_DECRYPTED: + skb->decrypted = 1; + stats->tls_decrypted_packets++; + stats->tls_decrypted_bytes += *cqe_bcnt; + break; + case CQE_TLS_OFFLOAD_RESYNC: + stats->tls_resync_req_pkt++; + resync_update_sn(rq, skb); + break; + default: /* CQE_TLS_OFFLOAD_ERROR: */ + stats->tls_err++; + break; + } +} + +void mlx5e_ktls_handle_ctx_completion(struct mlx5e_icosq_wqe_info *wi) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx = wi->tls_set_params.priv_rx; + struct accel_rule *rule = &priv_rx->rule; + + if (unlikely(test_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags))) { + complete(&priv_rx->add_ctx); + return; + } + queue_work(rule->priv->tls->rx_wq, &rule->work); +} + +static int mlx5e_ktls_sk_get_rxq(struct sock *sk) +{ + int rxq = sk_rx_queue_get(sk); + + if (unlikely(rxq == -1)) + rxq = 0; + + return rxq; +} + +int mlx5e_ktls_add_rx(struct net_device *netdev, struct sock *sk, + struct tls_crypto_info *crypto_info, + u32 start_offload_tcp_sn) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + struct tls_context *tls_ctx; + struct mlx5_core_dev *mdev; + struct mlx5e_priv *priv; + int rxq, err; + u32 rqtn; + + tls_ctx = tls_get_ctx(sk); + priv = netdev_priv(netdev); + mdev = priv->mdev; + priv_rx = kzalloc(sizeof(*priv_rx), GFP_KERNEL); + if (unlikely(!priv_rx)) + return -ENOMEM; + + err = mlx5_ktls_create_key(mdev, crypto_info, &priv_rx->key_id); + if (err) + goto err_create_key; + + priv_rx->crypto_info = + *(struct tls12_crypto_info_aes_gcm_128 *)crypto_info; + + rxq = mlx5e_ktls_sk_get_rxq(sk); + priv_rx->rxq = rxq; + priv_rx->sk = sk; + + priv_rx->stats = &priv->channel_stats[rxq].rq; + mlx5e_set_ktls_rx_priv_ctx(tls_ctx, priv_rx); + + rqtn = priv->direct_tir[rxq].rqt.rqtn; + + err = mlx5e_ktls_create_tir(mdev, &priv_rx->tirn, rqtn); + if (err) + goto err_create_tir; + + init_completion(&priv_rx->add_ctx); + + accel_rule_init(&priv_rx->rule, priv, sk); + resync = &priv_rx->resync; + resync_init(resync, priv); + tls_offload_ctx_rx(tls_ctx)->resync_async = &resync->core; + tls_offload_rx_resync_set_type(sk, TLS_OFFLOAD_SYNC_TYPE_DRIVER_REQ_ASYNC); + + err = post_rx_param_wqes(priv->channels.c[rxq], priv_rx, start_offload_tcp_sn); + if (err) + goto err_post_wqes; + + priv_rx->stats->tls_ctx++; + + return 0; + +err_post_wqes: + mlx5_core_destroy_tir(mdev, priv_rx->tirn); +err_create_tir: + mlx5_ktls_destroy_key(mdev, priv_rx->key_id); +err_create_key: + kfree(priv_rx); + return err; +} + +void mlx5e_ktls_del_rx(struct net_device *netdev, struct tls_context *tls_ctx) +{ + struct mlx5e_ktls_offload_context_rx *priv_rx; + struct mlx5e_ktls_rx_resync_ctx *resync; + struct mlx5_core_dev *mdev; + struct mlx5e_priv *priv; + + priv = netdev_priv(netdev); + mdev = priv->mdev; + + priv_rx = mlx5e_get_ktls_rx_priv_ctx(tls_ctx); + set_bit(MLX5E_PRIV_RX_FLAG_DELETING, priv_rx->flags); + mlx5e_set_ktls_rx_priv_ctx(tls_ctx, NULL); + synchronize_net(); /* Sync with NAPI */ + if (!cancel_work_sync(&priv_rx->rule.work)) + /* completion is needed, as the priv_rx in the add flow + * is maintained on the wqe info (wi), not on the socket. + */ + wait_for_completion(&priv_rx->add_ctx); + resync = &priv_rx->resync; + if (cancel_work_sync(&resync->work)) + mlx5e_ktls_priv_rx_put(priv_rx); + + priv_rx->stats->tls_del++; + if (priv_rx->rule.rule) + mlx5e_accel_fs_del_sk(priv_rx->rule.rule); + + mlx5_core_destroy_tir(mdev, priv_rx->tirn); + mlx5_ktls_destroy_key(mdev, priv_rx->key_id); + /* priv_rx should normally be freed here, but if there is an outstanding + * GET_PSV, deallocation will be delayed until the CQE for GET_PSV is + * processed. + */ + mlx5e_ktls_priv_rx_put(priv_rx); +} --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c @@ -1,105 +1,139 @@ // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB // Copyright (c) 2019 Mellanox Technologies. -#include -#include "en.h" -#include "en/txrx.h" -#include "en_accel/ktls.h" +#include "en_accel/ktls_txrx.h" +#include "en_accel/ktls_utils.h" -enum { - MLX5E_STATIC_PARAMS_CONTEXT_TLS_1_2 = 0x2, +struct mlx5e_dump_wqe { + struct mlx5_wqe_ctrl_seg ctrl; + struct mlx5_wqe_data_seg data; }; -enum { - MLX5E_ENCRYPTION_STANDARD_TLS = 0x1, -}; +#define MLX5E_KTLS_DUMP_WQEBBS \ + (DIV_ROUND_UP(sizeof(struct mlx5e_dump_wqe), MLX5_SEND_WQE_BB)) -#define EXTRACT_INFO_FIELDS do { \ - salt = info->salt; \ - rec_seq = info->rec_seq; \ - salt_sz = sizeof(info->salt); \ - rec_seq_sz = sizeof(info->rec_seq); \ -} while (0) +static u8 +mlx5e_ktls_dumps_num_wqes(struct mlx5e_txqsq *sq, unsigned int nfrags, + unsigned int sync_len) +{ + /* Given the MTU and sync_len, calculates an upper bound for the + * number of DUMP WQEs needed for the TX resync of a record. + */ + return nfrags + DIV_ROUND_UP(sync_len, sq->hw_mtu); +} -static void -fill_static_params_ctx(void *ctx, struct mlx5e_ktls_offload_context_tx *priv_tx) +u16 mlx5e_ktls_get_stop_room(struct mlx5e_txqsq *sq) { - struct tls12_crypto_info_aes_gcm_128 *info = &priv_tx->crypto_info; - char *initial_rn, *gcm_iv; - u16 salt_sz, rec_seq_sz; - char *salt, *rec_seq; - u8 tls_version; - - EXTRACT_INFO_FIELDS; - - gcm_iv = MLX5_ADDR_OF(tls_static_params, ctx, gcm_iv); - initial_rn = MLX5_ADDR_OF(tls_static_params, ctx, initial_record_number); - - memcpy(gcm_iv, salt, salt_sz); - memcpy(initial_rn, rec_seq, rec_seq_sz); - - tls_version = MLX5E_STATIC_PARAMS_CONTEXT_TLS_1_2; - - MLX5_SET(tls_static_params, ctx, tls_version, tls_version); - MLX5_SET(tls_static_params, ctx, const_1, 1); - MLX5_SET(tls_static_params, ctx, const_2, 2); - MLX5_SET(tls_static_params, ctx, encryption_standard, - MLX5E_ENCRYPTION_STANDARD_TLS); - MLX5_SET(tls_static_params, ctx, dek_index, priv_tx->key_id); + u16 num_dumps, stop_room = 0; + + num_dumps = mlx5e_ktls_dumps_num_wqes(sq, MAX_SKB_FRAGS, TLS_MAX_PAYLOAD_SIZE); + + stop_room += mlx5e_stop_room_for_wqe(MLX5E_TLS_SET_STATIC_PARAMS_WQEBBS); + stop_room += mlx5e_stop_room_for_wqe(MLX5E_TLS_SET_PROGRESS_PARAMS_WQEBBS); + stop_room += num_dumps * mlx5e_stop_room_for_wqe(MLX5E_KTLS_DUMP_WQEBBS); + + return stop_room; } -static void -build_static_params(struct mlx5e_umr_wqe *wqe, u16 pc, u32 sqn, - struct mlx5e_ktls_offload_context_tx *priv_tx, - bool fence) -{ - struct mlx5_wqe_ctrl_seg *cseg = &wqe->ctrl; - struct mlx5_wqe_umr_ctrl_seg *ucseg = &wqe->uctrl; - -#define STATIC_PARAMS_DS_CNT \ - DIV_ROUND_UP(MLX5E_KTLS_STATIC_UMR_WQE_SZ, MLX5_SEND_WQE_DS) - - cseg->opmod_idx_opcode = cpu_to_be32((pc << 8) | MLX5_OPCODE_UMR | - (MLX5_OPC_MOD_TLS_TIS_STATIC_PARAMS << 24)); - cseg->qpn_ds = cpu_to_be32((sqn << MLX5_WQE_CTRL_QPN_SHIFT) | - STATIC_PARAMS_DS_CNT); - cseg->fm_ce_se = fence ? MLX5_FENCE_MODE_INITIATOR_SMALL : 0; - cseg->tisn = cpu_to_be32(priv_tx->tisn << 8); +static int mlx5e_ktls_create_tis(struct mlx5_core_dev *mdev, u32 *tisn) +{ + u32 in[MLX5_ST_SZ_DW(create_tis_in)] = {}; + void *tisc; + + tisc = MLX5_ADDR_OF(create_tis_in, in, ctx); - ucseg->flags = MLX5_UMR_INLINE; - ucseg->bsf_octowords = cpu_to_be16(MLX5_ST_SZ_BYTES(tls_static_params) / 16); + MLX5_SET(tisc, tisc, tls_en, 1); - fill_static_params_ctx(wqe->tls_static_params_ctx, priv_tx); + return mlx5e_create_tis(mdev, in, tisn); } +struct mlx5e_ktls_offload_context_tx { + struct tls_offload_context_tx *tx_ctx; + struct tls12_crypto_info_aes_gcm_128 crypto_info; + u32 expected_seq; + u32 tisn; + u32 key_id; + bool ctx_post_pending; +}; + static void -fill_progress_params_ctx(void *ctx, struct mlx5e_ktls_offload_context_tx *priv_tx) +mlx5e_set_ktls_tx_priv_ctx(struct tls_context *tls_ctx, + struct mlx5e_ktls_offload_context_tx *priv_tx) { - MLX5_SET(tls_progress_params, ctx, tisn, priv_tx->tisn); - MLX5_SET(tls_progress_params, ctx, record_tracker_state, - MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_START); - MLX5_SET(tls_progress_params, ctx, auth_state, - MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD); + struct mlx5e_ktls_offload_context_tx **ctx = + __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_TX); + + BUILD_BUG_ON(sizeof(struct mlx5e_ktls_offload_context_tx *) > + TLS_OFFLOAD_CONTEXT_SIZE_TX); + + *ctx = priv_tx; } -static void -build_progress_params(struct mlx5e_tx_wqe *wqe, u16 pc, u32 sqn, - struct mlx5e_ktls_offload_context_tx *priv_tx, - bool fence) +static struct mlx5e_ktls_offload_context_tx * +mlx5e_get_ktls_tx_priv_ctx(struct tls_context *tls_ctx) +{ + struct mlx5e_ktls_offload_context_tx **ctx = + __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_TX); + + return *ctx; +} + +int mlx5e_ktls_add_tx(struct net_device *netdev, struct sock *sk, + struct tls_crypto_info *crypto_info, u32 start_offload_tcp_sn) { - struct mlx5_wqe_ctrl_seg *cseg = &wqe->ctrl; + struct mlx5e_ktls_offload_context_tx *priv_tx; + struct tls_context *tls_ctx; + struct mlx5_core_dev *mdev; + struct mlx5e_priv *priv; + int err; + + tls_ctx = tls_get_ctx(sk); + priv = netdev_priv(netdev); + mdev = priv->mdev; + + priv_tx = kzalloc(sizeof(*priv_tx), GFP_KERNEL); + if (!priv_tx) + return -ENOMEM; -#define PROGRESS_PARAMS_DS_CNT \ - DIV_ROUND_UP(MLX5E_KTLS_PROGRESS_WQE_SZ, MLX5_SEND_WQE_DS) + err = mlx5_ktls_create_key(mdev, crypto_info, &priv_tx->key_id); + if (err) + goto err_create_key; + + priv_tx->expected_seq = start_offload_tcp_sn; + priv_tx->crypto_info = + *(struct tls12_crypto_info_aes_gcm_128 *)crypto_info; + priv_tx->tx_ctx = tls_offload_ctx_tx(tls_ctx); + + mlx5e_set_ktls_tx_priv_ctx(tls_ctx, priv_tx); + + err = mlx5e_ktls_create_tis(mdev, &priv_tx->tisn); + if (err) + goto err_create_tis; + + priv_tx->ctx_post_pending = true; - cseg->opmod_idx_opcode = - cpu_to_be32((pc << 8) | MLX5_OPCODE_SET_PSV | - (MLX5_OPC_MOD_TLS_TIS_PROGRESS_PARAMS << 24)); - cseg->qpn_ds = cpu_to_be32((sqn << MLX5_WQE_CTRL_QPN_SHIFT) | - PROGRESS_PARAMS_DS_CNT); - cseg->fm_ce_se = fence ? MLX5_FENCE_MODE_INITIATOR_SMALL : 0; + return 0; - fill_progress_params_ctx(wqe->tls_progress_params_ctx, priv_tx); +err_create_tis: + mlx5_ktls_destroy_key(mdev, priv_tx->key_id); +err_create_key: + kfree(priv_tx); + return err; +} + +void mlx5e_ktls_del_tx(struct net_device *netdev, struct tls_context *tls_ctx) +{ + struct mlx5e_ktls_offload_context_tx *priv_tx; + struct mlx5_core_dev *mdev; + struct mlx5e_priv *priv; + + priv_tx = mlx5e_get_ktls_tx_priv_ctx(tls_ctx); + priv = netdev_priv(netdev); + mdev = priv->mdev; + + mlx5e_destroy_tis(mdev, priv_tx->tisn); + mlx5_ktls_destroy_key(mdev, priv_tx->key_id); + kfree(priv_tx); } static void tx_fill_wi(struct mlx5e_txqsq *sq, @@ -115,11 +149,6 @@ }; } -void mlx5e_ktls_tx_offload_set_pending(struct mlx5e_ktls_offload_context_tx *priv_tx) -{ - priv_tx->ctx_post_pending = true; -} - static bool mlx5e_ktls_tx_offload_test_and_clear_pending(struct mlx5e_ktls_offload_context_tx *priv_tx) { @@ -135,12 +164,15 @@ struct mlx5e_ktls_offload_context_tx *priv_tx, bool fence) { - u16 pi, num_wqebbs = MLX5E_KTLS_STATIC_WQEBBS; - struct mlx5e_umr_wqe *umr_wqe; + struct mlx5e_set_tls_static_params_wqe *wqe; + u16 pi, num_wqebbs; + num_wqebbs = MLX5E_TLS_SET_STATIC_PARAMS_WQEBBS; pi = mlx5e_txqsq_get_next_pi(sq, num_wqebbs); - umr_wqe = MLX5E_TLS_FETCH_UMR_WQE(sq, pi); - build_static_params(umr_wqe, sq->pc, sq->sqn, priv_tx, fence); + wqe = MLX5E_TLS_FETCH_SET_STATIC_PARAMS_WQE(sq, pi); + mlx5e_ktls_build_static_params(wqe, sq->pc, sq->sqn, &priv_tx->crypto_info, + priv_tx->tisn, priv_tx->key_id, 0, fence, + TLS_OFFLOAD_CTX_DIR_TX); tx_fill_wi(sq, pi, num_wqebbs, 0, NULL); sq->pc += num_wqebbs; } @@ -150,12 +182,14 @@ struct mlx5e_ktls_offload_context_tx *priv_tx, bool fence) { - u16 pi, num_wqebbs = MLX5E_KTLS_PROGRESS_WQEBBS; - struct mlx5e_tx_wqe *wqe; + struct mlx5e_set_tls_progress_params_wqe *wqe; + u16 pi, num_wqebbs; + num_wqebbs = MLX5E_TLS_SET_PROGRESS_PARAMS_WQEBBS; pi = mlx5e_txqsq_get_next_pi(sq, num_wqebbs); - wqe = MLX5E_TLS_FETCH_PROGRESS_WQE(sq, pi); - build_progress_params(wqe, sq->pc, sq->sqn, priv_tx, fence); + wqe = MLX5E_TLS_FETCH_SET_PROGRESS_PARAMS_WQE(sq, pi); + mlx5e_ktls_build_progress_params(wqe, sq->pc, sq->sqn, priv_tx->tisn, fence, 0, + TLS_OFFLOAD_CTX_DIR_TX); tx_fill_wi(sq, pi, num_wqebbs, 0, NULL); sq->pc += num_wqebbs; } @@ -284,7 +318,7 @@ cseg->opmod_idx_opcode = cpu_to_be32((sq->pc << 8) | MLX5_OPCODE_DUMP); cseg->qpn_ds = cpu_to_be32((sq->sqn << 8) | ds_cnt); - cseg->tisn = cpu_to_be32(tisn << 8); + cseg->tis_tir_num = cpu_to_be32(tisn << 8); cseg->fm_ce_se = first ? MLX5_FENCE_MODE_INITIATOR_SMALL : 0; fsz = skb_frag_size(frag); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.c @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB +/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ + +#include "en_accel/ktls_txrx.h" +#include "en_accel/ktls_utils.h" + +enum { + MLX5E_STATIC_PARAMS_CONTEXT_TLS_1_2 = 0x2, +}; + +enum { + MLX5E_ENCRYPTION_STANDARD_TLS = 0x1, +}; + +#define EXTRACT_INFO_FIELDS do { \ + salt = info->salt; \ + rec_seq = info->rec_seq; \ + salt_sz = sizeof(info->salt); \ + rec_seq_sz = sizeof(info->rec_seq); \ +} while (0) + +static void +fill_static_params(struct mlx5_wqe_tls_static_params_seg *params, + struct tls12_crypto_info_aes_gcm_128 *info, + u32 key_id, u32 resync_tcp_sn) +{ + char *initial_rn, *gcm_iv; + u16 salt_sz, rec_seq_sz; + char *salt, *rec_seq; + u8 tls_version; + u8 *ctx; + + ctx = params->ctx; + + EXTRACT_INFO_FIELDS; + + gcm_iv = MLX5_ADDR_OF(tls_static_params, ctx, gcm_iv); + initial_rn = MLX5_ADDR_OF(tls_static_params, ctx, initial_record_number); + + memcpy(gcm_iv, salt, salt_sz); + memcpy(initial_rn, rec_seq, rec_seq_sz); + + tls_version = MLX5E_STATIC_PARAMS_CONTEXT_TLS_1_2; + + MLX5_SET(tls_static_params, ctx, tls_version, tls_version); + MLX5_SET(tls_static_params, ctx, const_1, 1); + MLX5_SET(tls_static_params, ctx, const_2, 2); + MLX5_SET(tls_static_params, ctx, encryption_standard, + MLX5E_ENCRYPTION_STANDARD_TLS); + MLX5_SET(tls_static_params, ctx, resync_tcp_sn, resync_tcp_sn); + MLX5_SET(tls_static_params, ctx, dek_index, key_id); +} + +void +mlx5e_ktls_build_static_params(struct mlx5e_set_tls_static_params_wqe *wqe, + u16 pc, u32 sqn, + struct tls12_crypto_info_aes_gcm_128 *info, + u32 tis_tir_num, u32 key_id, u32 resync_tcp_sn, + bool fence, enum tls_offload_ctx_dir direction) +{ + struct mlx5_wqe_umr_ctrl_seg *ucseg = &wqe->uctrl; + struct mlx5_wqe_ctrl_seg *cseg = &wqe->ctrl; + u8 opmod = direction == TLS_OFFLOAD_CTX_DIR_TX ? + MLX5_OPC_MOD_TLS_TIS_STATIC_PARAMS : + MLX5_OPC_MOD_TLS_TIR_STATIC_PARAMS; + +#define STATIC_PARAMS_DS_CNT DIV_ROUND_UP(sizeof(*wqe), MLX5_SEND_WQE_DS) + + cseg->opmod_idx_opcode = cpu_to_be32((pc << 8) | MLX5_OPCODE_UMR | (opmod << 24)); + cseg->qpn_ds = cpu_to_be32((sqn << MLX5_WQE_CTRL_QPN_SHIFT) | + STATIC_PARAMS_DS_CNT); + cseg->fm_ce_se = fence ? MLX5_FENCE_MODE_INITIATOR_SMALL : 0; + cseg->tis_tir_num = cpu_to_be32(tis_tir_num << 8); + + ucseg->flags = MLX5_UMR_INLINE; + ucseg->bsf_octowords = cpu_to_be16(MLX5_ST_SZ_BYTES(tls_static_params) / 16); + + fill_static_params(&wqe->params, info, key_id, resync_tcp_sn); +} + +static void +fill_progress_params(struct mlx5_wqe_tls_progress_params_seg *params, u32 tis_tir_num, + u32 next_record_tcp_sn) +{ + u8 *ctx = params->ctx; + + params->tis_tir_num = cpu_to_be32(tis_tir_num); + + MLX5_SET(tls_progress_params, ctx, next_record_tcp_sn, + next_record_tcp_sn); + MLX5_SET(tls_progress_params, ctx, record_tracker_state, + MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_START); + MLX5_SET(tls_progress_params, ctx, auth_state, + MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD); +} + +void +mlx5e_ktls_build_progress_params(struct mlx5e_set_tls_progress_params_wqe *wqe, + u16 pc, u32 sqn, + u32 tis_tir_num, bool fence, + u32 next_record_tcp_sn, + enum tls_offload_ctx_dir direction) +{ + struct mlx5_wqe_ctrl_seg *cseg = &wqe->ctrl; + u8 opmod = direction == TLS_OFFLOAD_CTX_DIR_TX ? + MLX5_OPC_MOD_TLS_TIS_PROGRESS_PARAMS : + MLX5_OPC_MOD_TLS_TIR_PROGRESS_PARAMS; + +#define PROGRESS_PARAMS_DS_CNT DIV_ROUND_UP(sizeof(*wqe), MLX5_SEND_WQE_DS) + + cseg->opmod_idx_opcode = + cpu_to_be32((pc << 8) | MLX5_OPCODE_SET_PSV | (opmod << 24)); + cseg->qpn_ds = cpu_to_be32((sqn << MLX5_WQE_CTRL_QPN_SHIFT) | + PROGRESS_PARAMS_DS_CNT); + cseg->fm_ce_se = fence ? MLX5_FENCE_MODE_INITIATOR_SMALL : 0; + + fill_progress_params(&wqe->params, tis_tir_num, next_record_tcp_sn); +} + --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_txrx.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ +/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ + +#ifndef __MLX5E_KTLS_TXRX_H__ +#define __MLX5E_KTLS_TXRX_H__ + +#ifdef CONFIG_MLX5_EN_TLS + +#include +#include "en.h" +#include "en/txrx.h" + +struct mlx5e_accel_tx_tls_state { + u32 tls_tisn; +}; + +u16 mlx5e_ktls_get_stop_room(struct mlx5e_txqsq *sq); + +bool mlx5e_ktls_handle_tx_skb(struct tls_context *tls_ctx, struct mlx5e_txqsq *sq, + struct sk_buff *skb, int datalen, + struct mlx5e_accel_tx_tls_state *state); +void mlx5e_ktls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb, + struct mlx5_cqe64 *cqe, u32 *cqe_bcnt); + +void mlx5e_ktls_handle_ctx_completion(struct mlx5e_icosq_wqe_info *wi); +void mlx5e_ktls_handle_get_psv_completion(struct mlx5e_icosq_wqe_info *wi, + struct mlx5e_icosq *sq); + +void mlx5e_ktls_tx_handle_resync_dump_comp(struct mlx5e_txqsq *sq, + struct mlx5e_tx_wqe_info *wi, + u32 *dma_fifo_cc); +#else +static inline void +mlx5e_ktls_tx_handle_resync_dump_comp(struct mlx5e_txqsq *sq, + struct mlx5e_tx_wqe_info *wi, + u32 *dma_fifo_cc) +{ +} + +#endif /* CONFIG_MLX5_EN_TLS */ + +#endif /* __MLX5E_TLS_TXRX_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_utils.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_utils.h @@ -0,0 +1,86 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ +/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ + +#ifndef __MLX5E_KTLS_UTILS_H__ +#define __MLX5E_KTLS_UTILS_H__ + +#include +#include "en.h" +#include "accel/tls.h" + +enum { + MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD = 0, + MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_OFFLOAD = 1, + MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_AUTHENTICATION = 2, +}; + +enum { + MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_START = 0, + MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_TRACKING = 1, + MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_SEARCHING = 2, +}; + +int mlx5e_ktls_add_tx(struct net_device *netdev, struct sock *sk, + struct tls_crypto_info *crypto_info, u32 start_offload_tcp_sn); +void mlx5e_ktls_del_tx(struct net_device *netdev, struct tls_context *tls_ctx); +int mlx5e_ktls_add_rx(struct net_device *netdev, struct sock *sk, + struct tls_crypto_info *crypto_info, u32 start_offload_tcp_sn); +void mlx5e_ktls_del_rx(struct net_device *netdev, struct tls_context *tls_ctx); +void mlx5e_ktls_rx_resync(struct net_device *netdev, struct sock *sk, u32 seq, u8 *rcd_sn); + +struct mlx5e_set_tls_static_params_wqe { + struct mlx5_wqe_ctrl_seg ctrl; + struct mlx5_wqe_umr_ctrl_seg uctrl; + struct mlx5_mkey_seg mkc; + struct mlx5_wqe_tls_static_params_seg params; +}; + +struct mlx5e_set_tls_progress_params_wqe { + struct mlx5_wqe_ctrl_seg ctrl; + struct mlx5_wqe_tls_progress_params_seg params; +}; + +struct mlx5e_get_tls_progress_params_wqe { + struct mlx5_wqe_ctrl_seg ctrl; + struct mlx5_seg_get_psv psv; +}; + +#define MLX5E_TLS_SET_STATIC_PARAMS_WQEBBS \ + (DIV_ROUND_UP(sizeof(struct mlx5e_set_tls_static_params_wqe), MLX5_SEND_WQE_BB)) + +#define MLX5E_TLS_SET_PROGRESS_PARAMS_WQEBBS \ + (DIV_ROUND_UP(sizeof(struct mlx5e_set_tls_progress_params_wqe), MLX5_SEND_WQE_BB)) + +#define MLX5E_KTLS_GET_PROGRESS_WQEBBS \ + (DIV_ROUND_UP(sizeof(struct mlx5e_get_tls_progress_params_wqe), MLX5_SEND_WQE_BB)) + +#define MLX5E_TLS_FETCH_SET_STATIC_PARAMS_WQE(sq, pi) \ + ((struct mlx5e_set_tls_static_params_wqe *)\ + mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_set_tls_static_params_wqe))) + +#define MLX5E_TLS_FETCH_SET_PROGRESS_PARAMS_WQE(sq, pi) \ + ((struct mlx5e_set_tls_progress_params_wqe *)\ + mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_set_tls_progress_params_wqe))) + +#define MLX5E_TLS_FETCH_GET_PROGRESS_PARAMS_WQE(sq, pi) \ + ((struct mlx5e_get_tls_progress_params_wqe *)\ + mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_get_tls_progress_params_wqe))) + +#define MLX5E_TLS_FETCH_DUMP_WQE(sq, pi) \ + ((struct mlx5e_dump_wqe *)\ + mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_dump_wqe))) + +void +mlx5e_ktls_build_static_params(struct mlx5e_set_tls_static_params_wqe *wqe, + u16 pc, u32 sqn, + struct tls12_crypto_info_aes_gcm_128 *info, + u32 tis_tir_num, u32 key_id, u32 resync_tcp_sn, + bool fence, enum tls_offload_ctx_dir direction); +void +mlx5e_ktls_build_progress_params(struct mlx5e_set_tls_progress_params_wqe *wqe, + u16 pc, u32 sqn, + u32 tis_tir_num, bool fence, + u32 next_record_tcp_sn, + enum tls_offload_ctx_dir direction); + +#endif /* __MLX5E_TLS_UTILS_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c @@ -197,6 +197,7 @@ return; } + /* FPGA */ if (!mlx5_accel_is_tls_device(priv->mdev)) return; @@ -221,11 +222,21 @@ int mlx5e_tls_init(struct mlx5e_priv *priv) { - struct mlx5e_tls *tls = kzalloc(sizeof(*tls), GFP_KERNEL); + struct mlx5e_tls *tls; + if (!mlx5_accel_is_tls_device(priv->mdev)) + return 0; + + tls = kzalloc(sizeof(*tls), GFP_KERNEL); if (!tls) return -ENOMEM; + tls->rx_wq = create_singlethread_workqueue("mlx5e_tls_rx"); + if (!tls->rx_wq) { + kfree(tls); + return -ENOMEM; + } + priv->tls = tls; return 0; } @@ -237,20 +248,7 @@ if (!tls) return; + destroy_workqueue(tls->rx_wq); kfree(tls); priv->tls = NULL; } - -u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq) -{ - struct mlx5_core_dev *mdev = sq->channel->mdev; - - if (!mlx5_accel_is_tls_device(mdev)) - return 0; - - if (MLX5_CAP_GEN(mdev, tls_tx)) - return mlx5e_ktls_get_stop_room(sq); - - /* Resync SKB. */ - return mlx5e_stop_room_for_wqe(MLX5_SEND_WQE_MAX_WQEBBS); -} --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.h @@ -53,6 +53,7 @@ struct mlx5e_tls { struct mlx5e_tls_sw_stats sw_stats; + struct workqueue_struct *rx_wq; }; struct mlx5e_tls_offload_context_tx { @@ -86,6 +87,11 @@ base); } +static inline bool mlx5e_is_tls_on(struct mlx5e_priv *priv) +{ + return priv->tls; +} + void mlx5e_tls_build_netdev(struct mlx5e_priv *priv); int mlx5e_tls_init(struct mlx5e_priv *priv); void mlx5e_tls_cleanup(struct mlx5e_priv *priv); @@ -94,8 +100,6 @@ int mlx5e_tls_get_strings(struct mlx5e_priv *priv, uint8_t *data); int mlx5e_tls_get_stats(struct mlx5e_priv *priv, u64 *data); -u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq); - #else static inline void mlx5e_tls_build_netdev(struct mlx5e_priv *priv) @@ -104,17 +108,13 @@ mlx5e_ktls_build_netdev(priv); } +static inline bool mlx5e_is_tls_on(struct mlx5e_priv *priv) { return false; } static inline int mlx5e_tls_init(struct mlx5e_priv *priv) { return 0; } static inline void mlx5e_tls_cleanup(struct mlx5e_priv *priv) { } static inline int mlx5e_tls_get_count(struct mlx5e_priv *priv) { return 0; } static inline int mlx5e_tls_get_strings(struct mlx5e_priv *priv, uint8_t *data) { return 0; } static inline int mlx5e_tls_get_stats(struct mlx5e_priv *priv, u64 *data) { return 0; } -static inline u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq) -{ - return 0; -} - #endif #endif /* __MLX5E_TLS_H__ */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.c @@ -278,9 +278,10 @@ if (WARN_ON_ONCE(tls_ctx->netdev != netdev)) goto err_out; - if (MLX5_CAP_GEN(sq->channel->mdev, tls_tx)) + if (mlx5_accel_is_ktls_tx(sq->channel->mdev)) return mlx5e_ktls_handle_tx_skb(tls_ctx, sq, skb, datalen, state); + /* FPGA */ skb_seq = ntohl(tcp_hdr(skb)->seq); context = mlx5e_get_tls_tx_context(tls_ctx); expected_seq = context->expected_seq; @@ -305,7 +306,7 @@ void mlx5e_tls_handle_tx_wqe(struct mlx5e_txqsq *sq, struct mlx5_wqe_ctrl_seg *cseg, struct mlx5e_accel_tx_tls_state *state) { - cseg->tisn = cpu_to_be32(state->tls_tisn << 8); + cseg->tis_tir_num = cpu_to_be32(state->tls_tisn << 8); } static int tls_update_resync_sn(struct net_device *netdev, @@ -354,15 +355,13 @@ return 0; } -void mlx5e_tls_handle_rx_skb(struct net_device *netdev, struct sk_buff *skb, - u32 *cqe_bcnt) +/* FPGA tls rx handler */ +void mlx5e_tls_handle_rx_skb_metadata(struct mlx5e_rq *rq, struct sk_buff *skb, + u32 *cqe_bcnt) { struct mlx5e_tls_metadata *mdata; struct mlx5e_priv *priv; - if (!is_metadata_hdr_valid(skb)) - return; - /* Use the metadata */ mdata = (struct mlx5e_tls_metadata *)(skb->data + ETH_HLEN); switch (mdata->content.recv.syndrome) { @@ -370,13 +369,13 @@ skb->decrypted = 1; break; case SYNDROM_RESYNC_REQUEST: - tls_update_resync_sn(netdev, skb, mdata); - priv = netdev_priv(netdev); + tls_update_resync_sn(rq->netdev, skb, mdata); + priv = netdev_priv(rq->netdev); atomic64_inc(&priv->tls->sw_stats.rx_tls_resync_request); break; case SYNDROM_AUTH_FAILED: /* Authentication failure will be observed and verified by kTLS */ - priv = netdev_priv(netdev); + priv = netdev_priv(rq->netdev); atomic64_inc(&priv->tls->sw_stats.rx_tls_auth_fail); break; default: @@ -387,3 +386,18 @@ remove_metadata_hdr(skb); *cqe_bcnt -= MLX5E_METADATA_ETHER_LEN; } + +u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq) +{ + struct mlx5_core_dev *mdev = sq->channel->mdev; + + if (!mlx5_accel_is_tls_device(mdev)) + return 0; + + if (mlx5_accel_is_ktls_device(mdev)) + return mlx5e_ktls_get_stop_room(sq); + + /* FPGA */ + /* Resync SKB. */ + return mlx5e_stop_room_for_wqe(MLX5_SEND_WQE_MAX_WQEBBS); +} --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_rxtx.h @@ -34,23 +34,47 @@ #ifndef __MLX5E_TLS_RXTX_H__ #define __MLX5E_TLS_RXTX_H__ +#include "accel/accel.h" +#include "en_accel/ktls_txrx.h" + #ifdef CONFIG_MLX5_EN_TLS #include #include "en.h" #include "en/txrx.h" -struct mlx5e_accel_tx_tls_state { - u32 tls_tisn; -}; +u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq); bool mlx5e_tls_handle_tx_skb(struct net_device *netdev, struct mlx5e_txqsq *sq, struct sk_buff *skb, struct mlx5e_accel_tx_tls_state *state); void mlx5e_tls_handle_tx_wqe(struct mlx5e_txqsq *sq, struct mlx5_wqe_ctrl_seg *cseg, struct mlx5e_accel_tx_tls_state *state); -void mlx5e_tls_handle_rx_skb(struct net_device *netdev, struct sk_buff *skb, - u32 *cqe_bcnt); +void mlx5e_tls_handle_rx_skb_metadata(struct mlx5e_rq *rq, struct sk_buff *skb, + u32 *cqe_bcnt); + +static inline void +mlx5e_tls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb, + struct mlx5_cqe64 *cqe, u32 *cqe_bcnt) +{ + if (unlikely(get_cqe_tls_offload(cqe))) /* cqe bit indicates a TLS device */ + return mlx5e_ktls_handle_rx_skb(rq, skb, cqe, cqe_bcnt); + + if (unlikely(test_bit(MLX5E_RQ_STATE_FPGA_TLS, &rq->state) && is_metadata_hdr_valid(skb))) + return mlx5e_tls_handle_rx_skb_metadata(rq, skb, cqe_bcnt); +} + +#else + +static inline bool +mlx5e_accel_is_tls(struct mlx5_cqe64 *cqe, struct sk_buff *skb) { return false; } +static inline void +mlx5e_tls_handle_rx_skb(struct mlx5e_rq *rq, struct sk_buff *skb, + struct mlx5_cqe64 *cqe, u32 *cqe_bcnt) {} +static inline u16 mlx5e_tls_get_stop_room(struct mlx5e_txqsq *sq) +{ + return 0; +} #endif /* CONFIG_MLX5_EN_TLS */ --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_stats.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls_stats.c @@ -35,7 +35,6 @@ #include #include "en.h" -#include "accel/tls.h" #include "fpga/sdk.h" #include "en_accel/tls.h" @@ -51,9 +50,14 @@ #define NUM_TLS_SW_COUNTERS ARRAY_SIZE(mlx5e_tls_sw_stats_desc) +static bool is_tls_atomic_stats(struct mlx5e_priv *priv) +{ + return priv->tls && !mlx5_accel_is_ktls_device(priv->mdev); +} + int mlx5e_tls_get_count(struct mlx5e_priv *priv) { - if (!priv->tls) + if (!is_tls_atomic_stats(priv)) return 0; return NUM_TLS_SW_COUNTERS; @@ -63,7 +67,7 @@ { unsigned int i, idx = 0; - if (!priv->tls) + if (!is_tls_atomic_stats(priv)) return 0; for (i = 0; i < NUM_TLS_SW_COUNTERS; i++) @@ -77,7 +81,7 @@ { int i, idx = 0; - if (!priv->tls) + if (!is_tls_atomic_stats(priv)) return 0; for (i = 0; i < NUM_TLS_SW_COUNTERS; i++) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c @@ -90,23 +90,15 @@ static int arfs_disable(struct mlx5e_priv *priv) { - struct mlx5_flow_destination dest = {}; - struct mlx5e_tir *tir = priv->indir_tir; - int err = 0; - int tt; - int i; + int err, i; - dest.type = MLX5_FLOW_DESTINATION_TYPE_TIR; for (i = 0; i < ARFS_NUM_TYPES; i++) { - dest.tir_num = tir[i].tirn; - tt = arfs_get_tt(i); - /* Modify ttc rules destination to bypass the aRFS tables*/ - err = mlx5_modify_rule_destination(priv->fs.ttc.rules[tt], - &dest, NULL); + /* Modify ttc rules destination back to their default */ + err = mlx5e_ttc_fwd_default_dest(priv, arfs_get_tt(i)); if (err) { netdev_err(priv->netdev, - "%s: modify ttc destination failed\n", - __func__); + "%s: modify ttc[%d] default destination failed, err(%d)\n", + __func__, arfs_get_tt(i), err); return err; } } @@ -125,21 +117,17 @@ int mlx5e_arfs_enable(struct mlx5e_priv *priv) { struct mlx5_flow_destination dest = {}; - int err = 0; - int tt; - int i; + int err, i; dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; for (i = 0; i < ARFS_NUM_TYPES; i++) { dest.ft = priv->fs.arfs.arfs_tables[i].ft.t; - tt = arfs_get_tt(i); /* Modify ttc rules destination to point on the aRFS FTs */ - err = mlx5_modify_rule_destination(priv->fs.ttc.rules[tt], - &dest, NULL); + err = mlx5e_ttc_fwd_dest(priv, arfs_get_tt(i), &dest); if (err) { netdev_err(priv->netdev, - "%s: modify ttc destination failed err=%d\n", - __func__, err); + "%s: modify ttc[%d] dest to arfs, failed err(%d)\n", + __func__, arfs_get_tt(i), err); arfs_disable(priv); return err; } @@ -186,8 +174,10 @@ return -EINVAL; } + /* FIXME: Must use mlx5e_ttc_get_default_dest(), + * but can't since TTC default is not setup yet ! + */ dest.tir_num = tir[tt].tirn; - arfs_t->default_rule = mlx5_add_flow_rules(arfs_t->ft.t, NULL, &flow_act, &dest, 1); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c @@ -1151,6 +1151,7 @@ { struct mlx5e_channels new_channels = {}; bool reset_channels = true; + bool opened; int err = 0; mutex_lock(&priv->state_lock); @@ -1159,22 +1160,24 @@ mlx5e_params_calc_trust_tx_min_inline_mode(priv->mdev, &new_channels.params, trust_state); - if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { - priv->channels.params = new_channels.params; + opened = test_bit(MLX5E_STATE_OPENED, &priv->state); + if (!opened) reset_channels = false; - } /* Skip if tx_min_inline is the same */ if (new_channels.params.tx_min_inline_mode == priv->channels.params.tx_min_inline_mode) reset_channels = false; - if (reset_channels) + if (reset_channels) { err = mlx5e_safe_switch_channels(priv, &new_channels, mlx5e_update_trust_state_hw, &trust_state); - else + } else { err = mlx5e_update_trust_state_hw(priv, &trust_state); + if (!err && !opened) + priv->channels.params = new_channels.params; + } mutex_unlock(&priv->state_lock); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c @@ -427,12 +427,18 @@ goto out; } - new_channels.params = priv->channels.params; + new_channels.params = *cur_params; new_channels.params.num_channels = count; if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { + struct mlx5e_params old_params; + + old_params = *cur_params; *cur_params = new_channels.params; err = mlx5e_num_channels_changed(priv); + if (err) + *cur_params = old_params; + goto out; } @@ -499,7 +505,7 @@ #define MLX5E_MAX_COAL_FRAMES MLX5_MAX_CQ_COUNT static void -mlx5e_set_priv_channels_coalesce(struct mlx5e_priv *priv, struct ethtool_coalesce *coal) +mlx5e_set_priv_channels_tx_coalesce(struct mlx5e_priv *priv, struct ethtool_coalesce *coal) { struct mlx5_core_dev *mdev = priv->mdev; int tc; @@ -514,6 +520,17 @@ coal->tx_coalesce_usecs, coal->tx_max_coalesced_frames); } + } +} + +static void +mlx5e_set_priv_channels_rx_coalesce(struct mlx5e_priv *priv, struct ethtool_coalesce *coal) +{ + struct mlx5_core_dev *mdev = priv->mdev; + int i; + + for (i = 0; i < priv->channels.num; ++i) { + struct mlx5e_channel *c = priv->channels.c[i]; mlx5_core_modify_cq_moderation(mdev, &c->rq.cq.mcq, coal->rx_coalesce_usecs, @@ -560,21 +577,9 @@ tx_moder->pkts = coal->tx_max_coalesced_frames; new_channels.params.tx_dim_enabled = !!coal->use_adaptive_tx_coalesce; - if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { - priv->channels.params = new_channels.params; - goto out; - } - /* we are opened */ - reset_rx = !!coal->use_adaptive_rx_coalesce != priv->channels.params.rx_dim_enabled; reset_tx = !!coal->use_adaptive_tx_coalesce != priv->channels.params.tx_dim_enabled; - if (!reset_rx && !reset_tx) { - mlx5e_set_priv_channels_coalesce(priv, coal); - priv->channels.params = new_channels.params; - goto out; - } - if (reset_rx) { u8 mode = MLX5E_GET_PFLAG(&new_channels.params, MLX5E_PFLAG_RX_CQE_BASED_MODER); @@ -588,6 +593,20 @@ mlx5e_reset_tx_moderation(&new_channels.params, mode); } + if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { + priv->channels.params = new_channels.params; + goto out; + } + + if (!reset_rx && !reset_tx) { + if (!coal->use_adaptive_rx_coalesce) + mlx5e_set_priv_channels_rx_coalesce(priv, coal); + if (!coal->use_adaptive_tx_coalesce) + mlx5e_set_priv_channels_tx_coalesce(priv, coal); + priv->channels.params = new_channels.params; + goto out; + } + err = mlx5e_safe_switch_channels(priv, &new_channels, NULL, NULL); out: @@ -990,6 +1009,22 @@ return mlx5e_ethtool_get_link_ksettings(priv, link_ksettings); } +static int mlx5e_speed_validate(struct net_device *netdev, bool ext, + const unsigned long link_modes, u8 autoneg) +{ + /* Extended link-mode has no speed limitations. */ + if (ext) + return 0; + + if ((link_modes & MLX5E_PROT_MASK(MLX5E_56GBASE_R4)) && + autoneg != AUTONEG_ENABLE) { + netdev_err(netdev, "%s: 56G link speed requires autoneg enabled\n", + __func__); + return -EINVAL; + } + return 0; +} + static u32 mlx5e_ethtool2ptys_adver_link(const unsigned long *link_modes) { u32 i, ptys_modes = 0; @@ -1082,13 +1117,9 @@ link_modes = autoneg == AUTONEG_ENABLE ? ethtool2ptys_adver_func(adver) : mlx5e_port_speed2linkmodes(mdev, speed, !ext); - if ((link_modes & MLX5E_PROT_MASK(MLX5E_56GBASE_R4)) && - autoneg != AUTONEG_ENABLE) { - netdev_err(priv->netdev, "%s: 56G link speed requires autoneg enabled\n", - __func__); - err = -EINVAL; + err = mlx5e_speed_validate(priv->netdev, ext, link_modes, autoneg); + if (err) goto out; - } link_modes = link_modes & eproto.cap; if (!link_modes) { @@ -1816,6 +1847,7 @@ { struct mlx5e_priv *priv = netdev_priv(netdev); struct mlx5_core_dev *mdev = priv->mdev; + int err; if (!MLX5_CAP_GEN(mdev, cqe_compression)) return -EOPNOTSUPP; @@ -1825,7 +1857,10 @@ return -EINVAL; } - mlx5e_modify_rx_cqe_compression_locked(priv, enable); + err = mlx5e_modify_rx_cqe_compression_locked(priv, enable); + if (err) + return err; + priv->channels.params.rx_cqe_compress_def = enable; return 0; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c @@ -217,6 +217,9 @@ break; } + if (WARN_ONCE(*rule_p, "VLAN rule already exists type %d", rule_type)) + return 0; + *rule_p = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1); if (IS_ERR(*rule_p)) { @@ -397,8 +400,7 @@ for_each_set_bit(i, priv->fs.vlan.active_svlans, VLAN_N_VID) mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_STAG_VID, i); - if (priv->fs.vlan.cvlan_filter_disabled && - !(priv->netdev->flags & IFF_PROMISC)) + if (priv->fs.vlan.cvlan_filter_disabled) mlx5e_add_any_vid_rules(priv); } @@ -415,8 +417,12 @@ for_each_set_bit(i, priv->fs.vlan.active_svlans, VLAN_N_VID) mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_MATCH_STAG_VID, i); - if (priv->fs.vlan.cvlan_filter_disabled && - !(priv->netdev->flags & IFF_PROMISC)) + WARN_ON_ONCE(!(test_bit(MLX5E_STATE_DESTROYING, &priv->state))); + + /* must be called after DESTROY bit is set and + * set_rx_mode is called and flushed + */ + if (priv->fs.vlan.cvlan_filter_disabled) mlx5e_del_any_vid_rules(priv); } @@ -672,9 +678,9 @@ int i; for (i = 0; i < MLX5E_NUM_TT; i++) { - if (!IS_ERR_OR_NULL(ttc->rules[i])) { - mlx5_del_flow_rules(ttc->rules[i]); - ttc->rules[i] = NULL; + if (!IS_ERR_OR_NULL(ttc->rules[i].rule)) { + mlx5_del_flow_rules(ttc->rules[i].rule); + ttc->rules[i].rule = NULL; } } @@ -857,7 +863,8 @@ struct mlx5e_ttc_table *ttc) { struct mlx5_flow_destination dest = {}; - struct mlx5_flow_handle **rules; + struct mlx5_flow_handle **trules; + struct mlx5e_ttc_rule *rules; struct mlx5_flow_table *ft; int tt; int err; @@ -867,39 +874,47 @@ dest.type = MLX5_FLOW_DESTINATION_TYPE_TIR; for (tt = 0; tt < MLX5E_NUM_TT; tt++) { + struct mlx5e_ttc_rule *rule = &rules[tt]; + if (tt == MLX5E_TT_ANY) dest.tir_num = params->any_tt_tirn; else dest.tir_num = params->indir_tirn[tt]; - rules[tt] = mlx5e_generate_ttc_rule(priv, ft, &dest, - ttc_rules[tt].etype, - ttc_rules[tt].proto); - if (IS_ERR(rules[tt])) + + rule->rule = mlx5e_generate_ttc_rule(priv, ft, &dest, + ttc_rules[tt].etype, + ttc_rules[tt].proto); + if (IS_ERR(rule->rule)) { + err = PTR_ERR(rule->rule); + rule->rule = NULL; goto del_rules; + } + rule->default_dest = dest; } if (!params->inner_ttc || !mlx5e_tunnel_inner_ft_supported(priv->mdev)) return 0; - rules = ttc->tunnel_rules; + trules = ttc->tunnel_rules; dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; dest.ft = params->inner_ttc->ft.t; for (tt = 0; tt < MLX5E_NUM_TUNNEL_TT; tt++) { if (!mlx5e_tunnel_proto_supported(priv->mdev, ttc_tunnel_rules[tt].proto)) continue; - rules[tt] = mlx5e_generate_ttc_rule(priv, ft, &dest, - ttc_tunnel_rules[tt].etype, - ttc_tunnel_rules[tt].proto); - if (IS_ERR(rules[tt])) + trules[tt] = mlx5e_generate_ttc_rule(priv, ft, &dest, + ttc_tunnel_rules[tt].etype, + ttc_tunnel_rules[tt].proto); + if (IS_ERR(trules[tt])) { + err = PTR_ERR(trules[tt]); + trules[tt] = NULL; goto del_rules; + } } return 0; del_rules: - err = PTR_ERR(rules[tt]); - rules[tt] = NULL; mlx5e_cleanup_ttc_rules(ttc); return err; } @@ -921,6 +936,7 @@ in = kvzalloc(inlen, GFP_KERNEL); if (!in) { kfree(ft->g); + ft->g = NULL; return -ENOMEM; } @@ -1015,33 +1031,38 @@ struct mlx5e_ttc_table *ttc) { struct mlx5_flow_destination dest = {}; - struct mlx5_flow_handle **rules; + struct mlx5e_ttc_rule *rules; struct mlx5_flow_table *ft; int err; int tt; ft = ttc->ft.t; rules = ttc->rules; - dest.type = MLX5_FLOW_DESTINATION_TYPE_TIR; + for (tt = 0; tt < MLX5E_NUM_TT; tt++) { + struct mlx5e_ttc_rule *rule = &rules[tt]; + if (tt == MLX5E_TT_ANY) dest.tir_num = params->any_tt_tirn; else dest.tir_num = params->indir_tirn[tt]; - rules[tt] = mlx5e_generate_inner_ttc_rule(priv, ft, &dest, - ttc_rules[tt].etype, - ttc_rules[tt].proto); - if (IS_ERR(rules[tt])) + rule->rule = mlx5e_generate_inner_ttc_rule(priv, ft, &dest, + ttc_rules[tt].etype, + ttc_rules[tt].proto); + if (IS_ERR(rule->rule)) { + err = PTR_ERR(rule->rule); + rule->rule = NULL; goto del_rules; + } + rule->default_dest = dest; } return 0; del_rules: - err = PTR_ERR(rules[tt]); - rules[tt] = NULL; + mlx5e_cleanup_ttc_rules(ttc); return err; } @@ -1061,6 +1082,7 @@ in = kvzalloc(inlen, GFP_KERNEL); if (!in) { kfree(ft->g); + ft->g = NULL; return -ENOMEM; } @@ -1210,6 +1232,30 @@ return err; } +int mlx5e_ttc_fwd_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type, + struct mlx5_flow_destination *new_dest) +{ + return mlx5_modify_rule_destination(priv->fs.ttc.rules[type].rule, new_dest, NULL); +} + +struct mlx5_flow_destination +mlx5e_ttc_get_default_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type) +{ + struct mlx5_flow_destination *dest = &priv->fs.ttc.rules[type].default_dest; + + WARN_ONCE(dest->type != MLX5_FLOW_DESTINATION_TYPE_TIR, + "TTC[%d] default dest is not setup yet", type); + + return *dest; +} + +int mlx5e_ttc_fwd_default_dest(struct mlx5e_priv *priv, enum mlx5e_traffic_types type) +{ + struct mlx5_flow_destination dest = mlx5e_ttc_get_default_dest(priv, type); + + return mlx5e_ttc_fwd_dest(priv, type, &dest); +} + static void mlx5e_del_l2_flow_rule(struct mlx5e_priv *priv, struct mlx5e_l2_rule *ai) { @@ -1340,6 +1386,7 @@ ft->g[ft->num_groups] = NULL; mlx5e_destroy_groups(ft); kvfree(in); + kfree(ft->g); return err; } --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -258,12 +258,17 @@ static int mlx5e_create_umr_mkey(struct mlx5_core_dev *mdev, u64 npages, u8 page_shift, - struct mlx5_core_mkey *umr_mkey) + struct mlx5_core_mkey *umr_mkey, + dma_addr_t filler_addr) { - int inlen = MLX5_ST_SZ_BYTES(create_mkey_in); + struct mlx5_mtt *mtt; + int inlen; void *mkc; u32 *in; int err; + int i; + + inlen = MLX5_ST_SZ_BYTES(create_mkey_in) + sizeof(*mtt) * npages; in = kvzalloc(inlen, GFP_KERNEL); if (!in) @@ -283,6 +288,18 @@ MLX5_SET(mkc, mkc, translations_octword_size, MLX5_MTT_OCTW(npages)); MLX5_SET(mkc, mkc, log_page_size, page_shift); + MLX5_SET(create_mkey_in, in, translations_octword_actual_size, + MLX5_MTT_OCTW(npages)); + + /* Initialize the mkey with all MTTs pointing to a default + * page (filler_addr). When the channels are activated, UMR + * WQEs will redirect the RX WQEs to the actual memory from + * the RQ's pool, while the gaps (wqe_overflow) remain mapped + * to the default page. + */ + mtt = MLX5_ADDR_OF(create_mkey_in, in, klm_pas_mtt); + for (i = 0 ; i < npages ; i++) + mtt[i].ptag = cpu_to_be64(filler_addr); err = mlx5_core_create_mkey(mdev, umr_mkey, in, inlen); @@ -294,12 +311,13 @@ { u64 num_mtts = MLX5E_REQUIRED_MTTS(mlx5_wq_ll_get_size(&rq->mpwqe.wq)); - return mlx5e_create_umr_mkey(mdev, num_mtts, PAGE_SHIFT, &rq->umr_mkey); + return mlx5e_create_umr_mkey(mdev, num_mtts, PAGE_SHIFT, &rq->umr_mkey, + rq->wqe_overflow.addr); } -static inline u64 mlx5e_get_mpwqe_offset(struct mlx5e_rq *rq, u16 wqe_ix) +static u64 mlx5e_get_mpwqe_offset(u16 wqe_ix) { - return (wqe_ix << MLX5E_LOG_ALIGNED_MPWQE_PPW) << PAGE_SHIFT; + return MLX5E_REQUIRED_MTTS(wqe_ix) << PAGE_SHIFT; } static void mlx5e_init_frags_partition(struct mlx5e_rq *rq) @@ -362,6 +380,28 @@ mlx5e_reporter_rq_cqe_err(rq); } +static int mlx5e_alloc_mpwqe_rq_drop_page(struct mlx5e_rq *rq) +{ + rq->wqe_overflow.page = alloc_page(GFP_KERNEL); + if (!rq->wqe_overflow.page) + return -ENOMEM; + + rq->wqe_overflow.addr = dma_map_page(rq->pdev, rq->wqe_overflow.page, 0, + PAGE_SIZE, rq->buff.map_dir); + if (dma_mapping_error(rq->pdev, rq->wqe_overflow.addr)) { + __free_page(rq->wqe_overflow.page); + return -ENOMEM; + } + return 0; +} + +static void mlx5e_free_mpwqe_rq_drop_page(struct mlx5e_rq *rq) +{ + dma_unmap_page(rq->pdev, rq->wqe_overflow.addr, PAGE_SIZE, + rq->buff.map_dir); + __free_page(rq->wqe_overflow.page); +} + static int mlx5e_alloc_rq(struct mlx5e_channel *c, struct mlx5e_params *params, struct mlx5e_xsk_param *xsk, @@ -401,7 +441,7 @@ if (params->xdp_prog) bpf_prog_inc(params->xdp_prog); - rq->xdp_prog = params->xdp_prog; + RCU_INIT_POINTER(rq->xdp_prog, params->xdp_prog); rq_xdp_ix = rq->ix; if (xsk) @@ -410,7 +450,7 @@ if (err < 0) goto err_rq_wq_destroy; - rq->buff.map_dir = rq->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE; + rq->buff.map_dir = params->xdp_prog ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE; rq->buff.headroom = mlx5e_get_rq_headroom(mdev, params, xsk); pool_size = 1 << params->log_rq_mtu_frames; @@ -421,6 +461,10 @@ if (err) goto err_rq_wq_destroy; + err = mlx5e_alloc_mpwqe_rq_drop_page(rq); + if (err) + goto err_rq_wq_destroy; + rq->mpwqe.wq.db = &rq->mpwqe.wq.db[MLX5_RCV_DBR]; wq_sz = mlx5_wq_ll_get_size(&rq->mpwqe.wq); @@ -459,7 +503,7 @@ err = mlx5e_create_rq_umr_mkey(mdev, rq); if (err) - goto err_rq_wq_destroy; + goto err_rq_drop_page; rq->mkey_be = cpu_to_be32(rq->umr_mkey.key); err = mlx5e_rq_alloc_mpwqe_info(rq, c); @@ -551,7 +595,7 @@ mlx5_wq_ll_get_wqe(&rq->mpwqe.wq, i); u32 byte_count = rq->mpwqe.num_strides << rq->mpwqe.log_stride_sz; - u64 dma_offset = mlx5e_get_mpwqe_offset(rq, i); + u64 dma_offset = mlx5e_get_mpwqe_offset(i); wqe->data[0].addr = cpu_to_be64(dma_offset + rq->buff.headroom); wqe->data[0].byte_count = cpu_to_be32(byte_count); @@ -598,6 +642,8 @@ case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: kvfree(rq->mpwqe.info); mlx5_core_destroy_mkey(mdev, &rq->umr_mkey); +err_rq_drop_page: + mlx5e_free_mpwqe_rq_drop_page(rq); break; default: /* MLX5_WQ_TYPE_CYCLIC */ kvfree(rq->wqe.frags); @@ -605,8 +651,8 @@ } err_rq_wq_destroy: - if (rq->xdp_prog) - bpf_prog_put(rq->xdp_prog); + if (params->xdp_prog) + bpf_prog_put(params->xdp_prog); xdp_rxq_info_unreg(&rq->xdp_rxq); page_pool_destroy(rq->page_pool); mlx5_wq_destroy(&rq->wq_ctrl); @@ -616,15 +662,22 @@ static void mlx5e_free_rq(struct mlx5e_rq *rq) { + struct mlx5e_channel *c = rq->channel; + struct bpf_prog *old_prog = NULL; int i; - if (rq->xdp_prog) - bpf_prog_put(rq->xdp_prog); + /* drop_rq has neither channel nor xdp_prog. */ + if (c) + old_prog = rcu_dereference_protected(rq->xdp_prog, + lockdep_is_held(&c->priv->state_lock)); + if (old_prog) + bpf_prog_put(old_prog); switch (rq->wq_type) { case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: kvfree(rq->mpwqe.info); mlx5_core_destroy_mkey(rq->mdev, &rq->umr_mkey); + mlx5e_free_mpwqe_rq_drop_page(rq); break; default: /* MLX5_WQ_TYPE_CYCLIC */ kvfree(rq->wqe.frags); @@ -873,6 +926,9 @@ if (err) goto err_destroy_rq; + if (mlx5e_is_tls_on(c->priv) && !mlx5_accel_is_ktls_device(c->mdev)) + __set_bit(MLX5E_RQ_STATE_FPGA_TLS, &c->rq.state); /* must be FPGA */ + if (MLX5_CAP_ETH(c->mdev, cqe_checksum_full)) __set_bit(MLX5E_RQ_STATE_CSUM_FULL, &c->rq.state); @@ -905,7 +961,7 @@ void mlx5e_deactivate_rq(struct mlx5e_rq *rq) { clear_bit(MLX5E_RQ_STATE_ENABLED, &rq->state); - napi_synchronize(&rq->channel->napi); /* prevent mlx5e_post_rx_wqes */ + synchronize_net(); /* Sync with NAPI to prevent mlx5e_post_rx_wqes. */ } void mlx5e_close_rq(struct mlx5e_rq *rq) @@ -1350,12 +1406,10 @@ static void mlx5e_deactivate_txqsq(struct mlx5e_txqsq *sq) { - struct mlx5e_channel *c = sq->channel; struct mlx5_wq_cyc *wq = &sq->wq; clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state); - /* prevent netif_tx_wake_queue */ - napi_synchronize(&c->napi); + synchronize_net(); /* Sync with NAPI to prevent netif_tx_wake_queue. */ mlx5e_tx_disable_queue(sq->txq); @@ -1430,10 +1484,8 @@ void mlx5e_deactivate_icosq(struct mlx5e_icosq *icosq) { - struct mlx5e_channel *c = icosq->channel; - clear_bit(MLX5E_SQ_STATE_ENABLED, &icosq->state); - napi_synchronize(&c->napi); + synchronize_net(); /* Sync with NAPI. */ } void mlx5e_close_icosq(struct mlx5e_icosq *sq) @@ -1441,6 +1493,7 @@ struct mlx5e_channel *c = sq->channel; mlx5e_destroy_sq(c->mdev, sq->sqn); + mlx5e_free_icosq_descs(sq); mlx5e_free_icosq(sq); } @@ -1511,7 +1564,7 @@ struct mlx5e_channel *c = sq->channel; clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state); - napi_synchronize(&c->napi); + synchronize_net(); /* Sync with NAPI. */ mlx5e_destroy_sq(c->mdev, sq->sqn); mlx5e_free_xdpsq_descs(sq); @@ -1675,7 +1728,7 @@ for (tc = 0; tc < c->num_tc; tc++) { err = mlx5e_open_cq(c, params->tx_cq_moderation, - &cparam->tx_cq, &c->sq[tc].cq); + &cparam->txq_sq.cqp, &c->sq[tc].cq); if (err) goto err_close_tx_cqs; } @@ -1707,7 +1760,7 @@ int txq_ix = c->ix + tc * params->num_channels; err = mlx5e_open_txqsq(c, c->priv->tisn[c->lag_port][tc], txq_ix, - params, &cparam->sq, &c->sq[tc], tc); + params, &cparam->txq_sq, &c->sq[tc], tc); if (err) goto err_close_sqs; } @@ -1817,34 +1870,43 @@ struct dim_cq_moder icocq_moder = {0, 0}; int err; - err = mlx5e_open_cq(c, icocq_moder, &cparam->icosq_cq, &c->icosq.cq); + err = mlx5e_open_cq(c, icocq_moder, &cparam->icosq.cqp, &c->async_icosq.cq); if (err) return err; + err = mlx5e_open_cq(c, icocq_moder, &cparam->async_icosq.cqp, &c->icosq.cq); + if (err) + goto err_close_async_icosq_cq; + err = mlx5e_open_tx_cqs(c, params, cparam); if (err) goto err_close_icosq_cq; - err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam->tx_cq, &c->xdpsq.cq); + err = mlx5e_open_cq(c, params->tx_cq_moderation, &cparam->xdp_sq.cqp, &c->xdpsq.cq); if (err) goto err_close_tx_cqs; - err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam->rx_cq, &c->rq.cq); + err = mlx5e_open_cq(c, params->rx_cq_moderation, &cparam->rq.cqp, &c->rq.cq); if (err) goto err_close_xdp_tx_cqs; - /* XDP SQ CQ params are same as normal TXQ sq CQ params */ err = c->xdp ? mlx5e_open_cq(c, params->tx_cq_moderation, - &cparam->tx_cq, &c->rq_xdpsq.cq) : 0; + &cparam->xdp_sq.cqp, &c->rq_xdpsq.cq) : 0; if (err) goto err_close_rx_cq; napi_enable(&c->napi); - err = mlx5e_open_icosq(c, params, &cparam->icosq, &c->icosq); + spin_lock_init(&c->async_icosq_lock); + + err = mlx5e_open_icosq(c, params, &cparam->async_icosq, &c->async_icosq); if (err) goto err_disable_napi; + err = mlx5e_open_icosq(c, params, &cparam->icosq, &c->icosq); + if (err) + goto err_close_async_icosq; + err = mlx5e_open_sqs(c, params, cparam); if (err) goto err_close_icosq; @@ -1879,6 +1941,9 @@ err_close_icosq: mlx5e_close_icosq(&c->icosq); +err_close_async_icosq: + mlx5e_close_icosq(&c->async_icosq); + err_disable_napi: napi_disable(&c->napi); @@ -1897,6 +1962,9 @@ err_close_icosq_cq: mlx5e_close_cq(&c->icosq.cq); +err_close_async_icosq_cq: + mlx5e_close_cq(&c->async_icosq.cq); + return err; } @@ -1908,6 +1976,7 @@ mlx5e_close_xdpsq(&c->rq_xdpsq); mlx5e_close_sqs(c); mlx5e_close_icosq(&c->icosq); + mlx5e_close_icosq(&c->async_icosq); napi_disable(&c->napi); if (c->xdp) mlx5e_close_cq(&c->rq_xdpsq.cq); @@ -1915,6 +1984,7 @@ mlx5e_close_cq(&c->xdpsq.cq); mlx5e_close_tx_cqs(c); mlx5e_close_cq(&c->icosq.cq); + mlx5e_close_cq(&c->async_icosq.cq); } static u8 mlx5e_enumerate_lag_port(struct mlx5_core_dev *mdev, int ix) @@ -1995,6 +2065,7 @@ for (tc = 0; tc < c->num_tc; tc++) mlx5e_activate_txqsq(&c->sq[tc]); mlx5e_activate_icosq(&c->icosq); + mlx5e_activate_icosq(&c->async_icosq); mlx5e_activate_rq(&c->rq); if (test_bit(MLX5E_CHANNEL_STATE_XSK, c->state)) @@ -2009,6 +2080,7 @@ mlx5e_deactivate_xsk(c); mlx5e_deactivate_rq(&c->rq); + mlx5e_deactivate_icosq(&c->async_icosq); mlx5e_deactivate_icosq(&c->icosq); for (tc = 0; tc < c->num_tc; tc++) mlx5e_deactivate_txqsq(&c->sq[tc]); @@ -2138,6 +2210,7 @@ MLX5_SET(rqc, rqc, scatter_fcs, params->scatter_fcs_en); param->wq.buf_numa_node = dev_to_node(mdev->device); + mlx5e_build_rx_cq_param(priv, params, xsk, ¶m->cqp); } static void mlx5e_build_drop_rq_param(struct mlx5e_priv *priv, @@ -2180,6 +2253,7 @@ mlx5e_build_sq_param_common(priv, param); MLX5_SET(wq, wq, log_wq_sz, params->log_sq_size); MLX5_SET(sqc, sqc, allow_swp, allow_swp); + mlx5e_build_tx_cq_param(priv, params, ¶m->cqp); } static void mlx5e_build_common_cq_param(struct mlx5e_priv *priv, @@ -2256,6 +2330,7 @@ MLX5_SET(wq, wq, log_wq_sz, log_wq_size); MLX5_SET(sqc, sqc, reg_umr, MLX5_CAP_ETH(priv->mdev, reg_umr_sq)); + mlx5e_build_ico_cq_param(priv, log_wq_size, ¶m->cqp); } void mlx5e_build_xdpsq_param(struct mlx5e_priv *priv, @@ -2268,6 +2343,7 @@ mlx5e_build_sq_param_common(priv, param); MLX5_SET(wq, wq, log_wq_sz, params->log_sq_size); param->is_mpw = MLX5E_GET_PFLAG(params, MLX5E_PFLAG_XDP_TX_MPWQE); + mlx5e_build_tx_cq_param(priv, params, ¶m->cqp); } static u8 mlx5e_build_icosq_log_wq_sz(struct mlx5e_params *params, @@ -2275,29 +2351,37 @@ { switch (params->rq_wq_type) { case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ: - return order_base_2(MLX5E_UMR_WQEBBS) + - mlx5e_get_rq_log_wq_sz(rqp->rqc); + return max_t(u8, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE, + order_base_2(MLX5E_UMR_WQEBBS) + + mlx5e_get_rq_log_wq_sz(rqp->rqc)); default: /* MLX5_WQ_TYPE_CYCLIC */ return MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE; } } +static u8 mlx5e_build_async_icosq_log_wq_sz(struct net_device *netdev) +{ + if (netdev->hw_features & NETIF_F_HW_TLS_RX) + return MLX5E_PARAMS_DEFAULT_LOG_SQ_SIZE; + + return MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE; +} + static void mlx5e_build_channel_param(struct mlx5e_priv *priv, struct mlx5e_params *params, struct mlx5e_channel_param *cparam) { - u8 icosq_log_wq_sz; + u8 icosq_log_wq_sz, async_icosq_log_wq_sz; mlx5e_build_rq_param(priv, params, NULL, &cparam->rq); icosq_log_wq_sz = mlx5e_build_icosq_log_wq_sz(params, &cparam->rq); + async_icosq_log_wq_sz = mlx5e_build_async_icosq_log_wq_sz(priv->netdev); - mlx5e_build_sq_param(priv, params, &cparam->sq); + mlx5e_build_sq_param(priv, params, &cparam->txq_sq); mlx5e_build_xdpsq_param(priv, params, &cparam->xdp_sq); mlx5e_build_icosq_param(priv, icosq_log_wq_sz, &cparam->icosq); - mlx5e_build_rx_cq_param(priv, params, NULL, &cparam->rx_cq); - mlx5e_build_tx_cq_param(priv, params, &cparam->tx_cq); - mlx5e_build_ico_cq_param(priv, icosq_log_wq_sz, &cparam->icosq_cq); + mlx5e_build_icosq_param(priv, async_icosq_log_wq_sz, &cparam->async_icosq); } int mlx5e_open_channels(struct mlx5e_priv *priv, @@ -3077,7 +3161,8 @@ mlx5_set_port_admin_status(mdev, state); - if (!MLX5_ESWITCH_MANAGER(mdev) || mlx5_eswitch_mode(esw) == MLX5_ESWITCH_OFFLOADS) + if (!MLX5_ESWITCH_MANAGER(mdev) || mlx5_eswitch_mode(esw) == MLX5_ESWITCH_OFFLOADS || + !MLX5_CAP_GEN(mdev, uplink_follow)) return; if (state == MLX5_PORT_UP) @@ -3522,18 +3607,23 @@ new_channels.params.num_tc = tc ? tc : 1; if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) { + struct mlx5e_params old_params; + + old_params = priv->channels.params; priv->channels.params = new_channels.params; + err = mlx5e_num_channels_changed(priv); + if (err) + priv->channels.params = old_params; + goto out; } err = mlx5e_safe_switch_channels(priv, &new_channels, mlx5e_num_channels_changed_ctx, NULL); - if (err) - goto out; - priv->max_opened_tc = max_t(u8, priv->max_opened_tc, - new_channels.params.num_tc); out: + priv->max_opened_tc = max_t(u8, priv->max_opened_tc, + priv->channels.params.num_tc); mutex_unlock(&priv->state_lock); return err; } @@ -3574,6 +3664,7 @@ s->rx_packets += rq_stats->packets + xskrq_stats->packets; s->rx_bytes += rq_stats->bytes + xskrq_stats->bytes; + s->multicast += rq_stats->mcast_packets + xskrq_stats->mcast_packets; for (j = 0; j < priv->max_opened_tc; j++) { struct mlx5e_sq_stats *sq_stats = &channel_stats->sq[j]; @@ -3589,7 +3680,6 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) { struct mlx5e_priv *priv = netdev_priv(dev); - struct mlx5e_vport_stats *vstats = &priv->stats.vport; struct mlx5e_pport_stats *pstats = &priv->stats.pport; /* In switchdev mode, monitor counters doesn't monitor @@ -3603,10 +3693,17 @@ } if (mlx5e_is_uplink_rep(priv)) { + struct mlx5e_vport_stats *vstats = &priv->stats.vport; + stats->rx_packets = PPORT_802_3_GET(pstats, a_frames_received_ok); stats->rx_bytes = PPORT_802_3_GET(pstats, a_octets_received_ok); stats->tx_packets = PPORT_802_3_GET(pstats, a_frames_transmitted_ok); stats->tx_bytes = PPORT_802_3_GET(pstats, a_octets_transmitted_ok); + + /* vport multicast also counts packets that are dropped due to steering + * or rx out of buffer + */ + stats->multicast = VPORT_COUNTER_GET(vstats, received_eth_multicast.packets); } else { mlx5e_fold_sw_stats64(priv, stats); } @@ -3624,12 +3721,6 @@ stats->rx_errors = stats->rx_length_errors + stats->rx_crc_errors + stats->rx_frame_errors; stats->tx_errors = stats->tx_aborted_errors + stats->tx_carrier_errors; - - /* vport multicast also counts packets that are dropped due to steering - * or rx out of buffer - */ - stats->multicast = - VPORT_COUNTER_GET(vstats, received_eth_multicast.packets); } static void mlx5e_set_rx_mode(struct net_device *dev) @@ -3671,7 +3762,7 @@ struct mlx5e_priv *priv = netdev_priv(netdev); struct mlx5_core_dev *mdev = priv->mdev; struct mlx5e_channels new_channels = {}; - struct mlx5e_params *old_params; + struct mlx5e_params *cur_params; int err = 0; bool reset; @@ -3684,8 +3775,8 @@ goto out; } - old_params = &priv->channels.params; - if (enable && !MLX5E_GET_PFLAG(old_params, MLX5E_PFLAG_RX_STRIDING_RQ)) { + cur_params = &priv->channels.params; + if (enable && !MLX5E_GET_PFLAG(cur_params, MLX5E_PFLAG_RX_STRIDING_RQ)) { netdev_warn(netdev, "can't set LRO with legacy RQ\n"); err = -EINVAL; goto out; @@ -3693,18 +3784,23 @@ reset = test_bit(MLX5E_STATE_OPENED, &priv->state); - new_channels.params = *old_params; + new_channels.params = *cur_params; new_channels.params.lro_en = enable; - if (old_params->rq_wq_type != MLX5_WQ_TYPE_CYCLIC) { - if (mlx5e_rx_mpwqe_is_linear_skb(mdev, old_params, NULL) == + if (cur_params->rq_wq_type != MLX5_WQ_TYPE_CYCLIC) { + if (mlx5e_rx_mpwqe_is_linear_skb(mdev, cur_params, NULL) == mlx5e_rx_mpwqe_is_linear_skb(mdev, &new_channels.params, NULL)) reset = false; } if (!reset) { - *old_params = new_channels.params; + struct mlx5e_params old_params; + + old_params = *cur_params; + *cur_params = new_channels.params; err = mlx5e_modify_tirs_lro(priv); + if (err) + *cur_params = old_params; goto out; } @@ -3847,6 +3943,7 @@ #ifdef CONFIG_MLX5_EN_ARFS err |= MLX5E_HANDLE_FEATURE(NETIF_F_NTUPLE, set_feature_arfs); #endif + err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_TLS_RX, mlx5e_ktls_set_feature_rx); if (err) { netdev->features = oper_features; @@ -3976,9 +4073,16 @@ } if (!reset) { + unsigned int old_mtu = params->sw_mtu; + params->sw_mtu = new_mtu; - if (preactivate) - preactivate(priv, NULL); + if (preactivate) { + err = preactivate(priv, NULL); + if (err) { + params->sw_mtu = old_mtu; + goto out; + } + } netdev->mtu = params->sw_mtu; goto out; } @@ -4274,6 +4378,21 @@ mlx5e_vxlan_queue_work(priv, be16_to_cpu(ti->port), 0); } +static bool mlx5e_gre_tunnel_inner_proto_offload_supported(struct mlx5_core_dev *mdev, + struct sk_buff *skb) +{ + switch (skb->inner_protocol) { + case htons(ETH_P_IP): + case htons(ETH_P_IPV6): + case htons(ETH_P_TEB): + return true; + case htons(ETH_P_MPLS_UC): + case htons(ETH_P_MPLS_MC): + return MLX5_CAP_ETH(mdev, tunnel_stateless_mpls_over_gre); + } + return false; +} + static netdev_features_t mlx5e_tunnel_features_check(struct mlx5e_priv *priv, struct sk_buff *skb, netdev_features_t features) @@ -4296,7 +4415,9 @@ switch (proto) { case IPPROTO_GRE: - return features; + if (mlx5e_gre_tunnel_inner_proto_offload_supported(priv->mdev, skb)) + return features; + break; case IPPROTO_IPIP: case IPPROTO_IPV6: if (mlx5e_tunnel_proto_supported(priv->mdev, IPPROTO_IPIP)) @@ -4423,6 +4544,16 @@ return 0; } +static void mlx5e_rq_replace_xdp_prog(struct mlx5e_rq *rq, struct bpf_prog *prog) +{ + struct bpf_prog *old_prog; + + old_prog = rcu_replace_pointer(rq->xdp_prog, prog, + lockdep_is_held(&rq->channel->priv->state_lock)); + if (old_prog) + bpf_prog_put(old_prog); +} + static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog) { struct mlx5e_priv *priv = netdev_priv(netdev); @@ -4481,29 +4612,12 @@ */ for (i = 0; i < priv->channels.num; i++) { struct mlx5e_channel *c = priv->channels.c[i]; - bool xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state); - clear_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state); - if (xsk_open) - clear_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state); - napi_synchronize(&c->napi); - /* prevent mlx5e_poll_rx_cq from accessing rq->xdp_prog */ - - old_prog = xchg(&c->rq.xdp_prog, prog); - if (old_prog) - bpf_prog_put(old_prog); - - if (xsk_open) { - old_prog = xchg(&c->xskrq.xdp_prog, prog); - if (old_prog) - bpf_prog_put(old_prog); + mlx5e_rq_replace_xdp_prog(&c->rq, prog); + if (test_bit(MLX5E_CHANNEL_STATE_XSK, c->state)) { + bpf_prog_inc(prog); + mlx5e_rq_replace_xdp_prog(&c->xskrq, prog); } - - set_bit(MLX5E_RQ_STATE_ENABLED, &c->rq.state); - if (xsk_open) - set_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state); - /* napi_schedule in case we have missed anything */ - napi_schedule(&c->napi); } unlock: @@ -4996,7 +5110,7 @@ FT_CAP(modify_root) && FT_CAP(identified_miss_table_mode) && FT_CAP(flow_table_modify)) { -#ifdef CONFIG_MLX5_ESWITCH +#if IS_ENABLED(CONFIG_MLX5_CLS_ACT) netdev->hw_features |= NETIF_F_HW_TC; #endif #ifdef CONFIG_MLX5_EN_ARFS @@ -5137,12 +5251,18 @@ if (err) goto err_destroy_flow_steering; + err = mlx5e_accel_init_rx(priv); + if (err) + goto err_tc_nic_cleanup; + #ifdef CONFIG_MLX5_EN_ARFS priv->netdev->rx_cpu_rmap = mlx5_eq_table_get_rmap(priv->mdev); #endif return 0; +err_tc_nic_cleanup: + mlx5e_tc_nic_cleanup(priv); err_destroy_flow_steering: mlx5e_destroy_flow_steering(priv); err_destroy_xsk_tirs: @@ -5166,6 +5286,7 @@ static void mlx5e_cleanup_nic_rx(struct mlx5e_priv *priv) { + mlx5e_accel_cleanup_rx(priv); mlx5e_tc_nic_cleanup(priv); mlx5e_destroy_flow_steering(priv); mlx5e_destroy_direct_tirs(priv, priv->xsk_tir); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -717,7 +717,9 @@ netdev->features |= NETIF_F_NETNS_LOCAL; +#if IS_ENABLED(CONFIG_MLX5_CLS_ACT) netdev->hw_features |= NETIF_F_HW_TC; +#endif netdev->hw_features |= NETIF_F_SG; netdev->hw_features |= NETIF_F_IP_CSUM; netdev->hw_features |= NETIF_F_IPV6_CSUM; @@ -1081,8 +1083,9 @@ mlx5e_rep_tc_enable(priv); - mlx5_modify_vport_admin_state(mdev, MLX5_VPORT_STATE_OP_MOD_UPLINK, - 0, 0, MLX5_VPORT_ADMIN_STATE_AUTO); + if (MLX5_CAP_GEN(mdev, uplink_follow)) + mlx5_modify_vport_admin_state(mdev, MLX5_VPORT_STATE_OP_MOD_UPLINK, + 0, 0, MLX5_VPORT_ADMIN_STATE_AUTO); mlx5_lag_add(mdev, netdev); priv->events_nb.notifier_call = uplink_rep_async_event; mlx5_notifier_register(mdev, &priv->events_nb); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_rep.h @@ -133,12 +133,6 @@ /* encap list sharing the same neigh */ struct list_head encap_list; - /* valid only when the neigh reference is taken during - * neigh_update_work workqueue callback. - */ - struct neighbour *n; - struct work_struct neigh_update_work; - /* neigh hash entry can be deleted only when the refcount is zero. * refcount is needed to avoid neigh hash entry removal by TC, while * it's used by the neigh notification call. @@ -191,7 +185,7 @@ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ struct net_device *out_dev; - struct net_device *route_dev; + int route_dev_ifindex; struct mlx5e_tc_tunnel *tunnel; int reformat_type; u8 flags; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -50,6 +50,7 @@ #include "en/xdp.h" #include "en/xsk/rx.h" #include "en/health.h" +#include "en/txrx.h" static inline bool mlx5e_rx_hw_stamp(struct hwtstamp_config *config) { @@ -480,7 +481,6 @@ struct mlx5e_icosq *sq = &rq->channel->icosq; struct mlx5_wq_cyc *wq = &sq->wq; struct mlx5e_umr_wqe *umr_wqe; - u16 xlt_offset = ix << (MLX5E_LOG_ALIGNED_MPWQE_PPW - 1); u16 pi; int err; int i; @@ -511,7 +511,8 @@ umr_wqe->ctrl.opmod_idx_opcode = cpu_to_be32((sq->pc << MLX5_WQE_CTRL_WQE_INDEX_SHIFT) | MLX5_OPCODE_UMR); - umr_wqe->uctrl.xlt_offset = cpu_to_be16(xlt_offset); + umr_wqe->uctrl.xlt_offset = + cpu_to_be16(MLX5_ALIGNED_MTTS_OCTW(MLX5E_REQUIRED_MTTS(ix))); sq->db.wqe_info[pi] = (struct mlx5e_icosq_wqe_info) { .wqe_type = MLX5E_ICOSQ_WQE_UMR_RX, @@ -578,6 +579,33 @@ return !!err; } +void mlx5e_free_icosq_descs(struct mlx5e_icosq *sq) +{ + u16 sqcc; + + sqcc = sq->cc; + + while (sqcc != sq->pc) { + struct mlx5e_icosq_wqe_info *wi; + u16 ci; + + ci = mlx5_wq_cyc_ctr2ix(&sq->wq, sqcc); + wi = &sq->db.wqe_info[ci]; + sqcc += wi->num_wqebbs; +#ifdef CONFIG_MLX5_EN_TLS + switch (wi->wqe_type) { + case MLX5E_ICOSQ_WQE_SET_PSV_TLS: + mlx5e_ktls_handle_ctx_completion(wi); + break; + case MLX5E_ICOSQ_WQE_GET_PSV_TLS: + mlx5e_ktls_handle_get_psv_completion(wi, sq); + break; + } +#endif + } + sq->cc = sqcc; +} + int mlx5e_poll_ico_cq(struct mlx5e_cq *cq) { struct mlx5e_icosq *sq = container_of(cq, struct mlx5e_icosq, cq); @@ -633,6 +661,16 @@ break; case MLX5E_ICOSQ_WQE_NOP: break; +#ifdef CONFIG_MLX5_EN_TLS + case MLX5E_ICOSQ_WQE_UMR_TLS: + break; + case MLX5E_ICOSQ_WQE_SET_PSV_TLS: + mlx5e_ktls_handle_ctx_completion(wi); + break; + case MLX5E_ICOSQ_WQE_GET_PSV_TLS: + mlx5e_ktls_handle_get_psv_completion(wi, sq); + break; +#endif default: netdev_WARN_ONCE(cq->channel->netdev, "Bad WQE type in ICOSQ WQE info: 0x%x\n", @@ -982,9 +1020,7 @@ skb->mac_len = ETH_HLEN; -#ifdef CONFIG_MLX5_EN_TLS - mlx5e_tls_handle_rx_skb(netdev, skb, &cqe_bcnt); -#endif + mlx5e_tls_handle_rx_skb(rq, skb, cqe, &cqe_bcnt); if (lro_num_seg > 1) { mlx5e_lro_update_hdr(skb, cqe, cqe_bcnt); @@ -1020,6 +1056,9 @@ mlx5e_enable_ecn(rq, skb); skb->protocol = eth_type_trans(skb, netdev); + + if (unlikely(mlx5e_skb_is_multicast(skb))) + stats->mcast_packets++; } static inline void mlx5e_complete_rx_cqe(struct mlx5e_rq *rq, @@ -1072,7 +1111,6 @@ struct xdp_buff xdp; struct sk_buff *skb; void *va, *data; - bool consumed; u32 frag_size; va = page_address(di->page) + wi->offset; @@ -1084,11 +1122,8 @@ prefetchw(va); /* xdp_frame data area */ prefetch(data); - rcu_read_lock(); mlx5e_fill_xdp_buff(rq, va, rx_headroom, cqe_bcnt, &xdp); - consumed = mlx5e_xdp_handle(rq, di, &cqe_bcnt, &xdp); - rcu_read_unlock(); - if (consumed) + if (mlx5e_xdp_handle(rq, di, &cqe_bcnt, &xdp)) return NULL; /* page/packet was consumed by XDP */ rx_headroom = xdp.data - xdp.data_hard_start; @@ -1238,8 +1273,10 @@ if (rep->vlan && skb_vlan_tag_present(skb)) skb_vlan_pop(skb); - if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) + if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) { + dev_kfree_skb_any(skb); goto free_wqe; + } napi_gro_receive(rq->cq.napi, skb); @@ -1294,8 +1331,10 @@ mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb); - if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) + if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) { + dev_kfree_skb_any(skb); goto mpwrq_cqe_out; + } napi_gro_receive(rq->cq.napi, skb); @@ -1369,7 +1408,6 @@ struct sk_buff *skb; void *va, *data; u32 frag_size; - bool consumed; /* Check packet size. Note LRO doesn't use linear SKB */ if (unlikely(cqe_bcnt > rq->hw_mtu)) { @@ -1386,11 +1424,8 @@ prefetchw(va); /* xdp_frame data area */ prefetch(data); - rcu_read_lock(); mlx5e_fill_xdp_buff(rq, va, rx_headroom, cqe_bcnt32, &xdp); - consumed = mlx5e_xdp_handle(rq, di, &cqe_bcnt32, &xdp); - rcu_read_unlock(); - if (consumed) { + if (mlx5e_xdp_handle(rq, di, &cqe_bcnt32, &xdp)) { if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)) __set_bit(page_idx, wi->xdp_xmit_bitmap); /* non-atomic */ return NULL; /* page/packet was consumed by XDP */ @@ -1501,7 +1536,7 @@ } while ((++work_done < budget) && (cqe = mlx5_cqwq_get_cqe(cqwq))); out: - if (rq->xdp_prog) + if (rcu_access_pointer(rq->xdp_prog)) mlx5e_xdp_rx_poll_complete(rq); mlx5_cqwq_update_db_record(cqwq); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_stats.c @@ -163,6 +163,19 @@ { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_congst_umr) }, { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_arfs_err) }, { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_recover) }, +#ifdef CONFIG_MLX5_EN_TLS + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_decrypted_packets) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_decrypted_bytes) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_ctx) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_del) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_req_pkt) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_req_start) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_req_end) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_req_skip) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_res_ok) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_resync_res_skip) }, + { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_tls_err) }, +#endif { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, ch_events) }, { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, ch_poll) }, { MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, ch_arm) }, @@ -275,6 +288,19 @@ s->rx_congst_umr += rq_stats->congst_umr; s->rx_arfs_err += rq_stats->arfs_err; s->rx_recover += rq_stats->recover; +#ifdef CONFIG_MLX5_EN_TLS + s->rx_tls_decrypted_packets += rq_stats->tls_decrypted_packets; + s->rx_tls_decrypted_bytes += rq_stats->tls_decrypted_bytes; + s->rx_tls_ctx += rq_stats->tls_ctx; + s->rx_tls_del += rq_stats->tls_del; + s->rx_tls_resync_req_pkt += rq_stats->tls_resync_req_pkt; + s->rx_tls_resync_req_start += rq_stats->tls_resync_req_start; + s->rx_tls_resync_req_end += rq_stats->tls_resync_req_end; + s->rx_tls_resync_req_skip += rq_stats->tls_resync_req_skip; + s->rx_tls_resync_res_ok += rq_stats->tls_resync_res_ok; + s->rx_tls_resync_res_skip += rq_stats->tls_resync_res_skip; + s->rx_tls_err += rq_stats->tls_err; +#endif s->ch_events += ch_stats->events; s->ch_poll += ch_stats->poll; s->ch_arm += ch_stats->arm; @@ -1475,6 +1501,19 @@ { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, congst_umr) }, { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, arfs_err) }, { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, recover) }, +#ifdef CONFIG_MLX5_EN_TLS + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_decrypted_packets) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_decrypted_bytes) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_ctx) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_del) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_req_pkt) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_req_start) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_req_end) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_req_skip) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_res_ok) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_resync_res_skip) }, + { MLX5E_DECLARE_RX_STAT(struct mlx5e_rq_stats, tls_err) }, +#endif }; static const struct counter_desc sq_stats_desc[] = { --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_stats.h @@ -119,6 +119,7 @@ u64 tx_nop; u64 rx_lro_packets; u64 rx_lro_bytes; + u64 rx_mcast_packets; u64 rx_ecn_mark; u64 rx_removed_vlan_packets; u64 rx_csum_unnecessary; @@ -186,6 +187,18 @@ u64 tx_tls_skip_no_sync_data; u64 tx_tls_drop_no_sync_data; u64 tx_tls_drop_bypass_req; + + u64 rx_tls_decrypted_packets; + u64 rx_tls_decrypted_bytes; + u64 rx_tls_ctx; + u64 rx_tls_del; + u64 rx_tls_resync_req_pkt; + u64 rx_tls_resync_req_start; + u64 rx_tls_resync_req_end; + u64 rx_tls_resync_req_skip; + u64 rx_tls_resync_res_ok; + u64 rx_tls_resync_res_skip; + u64 rx_tls_err; #endif u64 rx_xsk_packets; @@ -286,6 +299,7 @@ u64 csum_none; u64 lro_packets; u64 lro_bytes; + u64 mcast_packets; u64 ecn_mark; u64 removed_vlan_packets; u64 xdp_drop; @@ -305,6 +319,19 @@ u64 congst_umr; u64 arfs_err; u64 recover; +#ifdef CONFIG_MLX5_EN_TLS + u64 tls_decrypted_packets; + u64 tls_decrypted_bytes; + u64 tls_ctx; + u64 tls_del; + u64 tls_resync_req_pkt; + u64 tls_resync_req_start; + u64 tls_resync_req_end; + u64 tls_resync_req_skip; + u64 tls_resync_res_ok; + u64 tls_resync_res_skip; + u64 tls_err; +#endif }; struct mlx5e_sq_stats { --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -66,6 +66,7 @@ #include "lib/devcom.h" #include "lib/geneve.h" #include "diag/en_tc_tracepoint.h" +#include #define MLX5_MH_ACT_SZ MLX5_UN_SZ_BYTES(set_add_copy_action_in_auto) @@ -1149,6 +1150,9 @@ struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts; struct mlx5_flow_handle *rule; + if (attr->flags & MLX5_ESW_ATTR_FLAG_SLOW_PATH) + return mlx5_eswitch_add_offloaded_rule(esw, spec, attr); + if (flow_flag_test(flow, CT)) { mod_hdr_acts = &attr->parse_attr->mod_hdr_acts; @@ -1178,6 +1182,9 @@ { flow_flag_clear(flow, OFFLOADED); + if (attr->flags & MLX5_ESW_ATTR_FLAG_SLOW_PATH) + goto offload_rule_0; + if (flow_flag_test(flow, CT)) { mlx5_tc_ct_delete_flow(flow->priv, flow, attr); return; @@ -1186,6 +1193,7 @@ if (attr->split_count) mlx5_eswitch_del_fwd_rule(esw, flow->rule[1], attr); +offload_rule_0: mlx5_eswitch_del_offloaded_rule(esw, flow->rule[0], attr); } @@ -1399,11 +1407,8 @@ mlx5e_put_flow_tunnel_id(flow); - if (flow_flag_test(flow, NOT_READY)) { + if (flow_flag_test(flow, NOT_READY)) remove_unready_flow(flow); - kvfree(attr->parse_attr); - return; - } if (mlx5e_is_offloaded_flow(flow)) { if (flow_flag_test(flow, SLOW)) @@ -2234,8 +2239,8 @@ BIT(FLOW_DISSECTOR_KEY_ENC_OPTS) | BIT(FLOW_DISSECTOR_KEY_MPLS))) { NL_SET_ERR_MSG_MOD(extack, "Unsupported key"); - netdev_warn(priv->netdev, "Unsupported key used: 0x%x\n", - dissector->used_keys); + netdev_dbg(priv->netdev, "Unsupported key used: 0x%x\n", + dissector->used_keys); return -EOPNOTSUPP; } @@ -2552,6 +2557,16 @@ *match_level = MLX5_MATCH_L4; } + /* Currenlty supported only for MPLS over UDP */ + if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS) && + !netif_is_bareudp(filter_dev)) { + NL_SET_ERR_MSG_MOD(extack, + "Matching on MPLS is supported only for MPLS over UDP"); + netdev_err(priv->netdev, + "Matching on MPLS is supported only for MPLS over UDP\n"); + return -EOPNOTSUPP; + } + return 0; } @@ -2734,6 +2749,22 @@ OFFLOAD(UDP_DPORT, 16, U16_MAX, udp.dest, 0, udp_dport), }; +static unsigned long mask_to_le(unsigned long mask, int size) +{ + __be32 mask_be32; + __be16 mask_be16; + + if (size == 32) { + mask_be32 = (__force __be32)(mask); + mask = (__force unsigned long)cpu_to_le32(be32_to_cpu(mask_be32)); + } else if (size == 16) { + mask_be32 = (__force __be32)(mask); + mask_be16 = *(__be16 *)&mask_be32; + mask = (__force unsigned long)cpu_to_le16(be16_to_cpu(mask_be16)); + } + + return mask; +} static int offload_pedit_fields(struct mlx5e_priv *priv, int namespace, struct pedit_headers_action *hdrs, @@ -2747,9 +2778,7 @@ u32 *s_masks_p, *a_masks_p, s_mask, a_mask; struct mlx5e_tc_mod_hdr_acts *mod_acts; struct mlx5_fields *f; - unsigned long mask; - __be32 mask_be32; - __be16 mask_be16; + unsigned long mask, field_mask; int err; u8 cmd; @@ -2815,14 +2844,7 @@ if (skip) continue; - if (f->field_bsize == 32) { - mask_be32 = (__force __be32)(mask); - mask = (__force unsigned long)cpu_to_le32(be32_to_cpu(mask_be32)); - } else if (f->field_bsize == 16) { - mask_be32 = (__force __be32)(mask); - mask_be16 = *(__be16 *)&mask_be32; - mask = (__force unsigned long)cpu_to_le16(be16_to_cpu(mask_be16)); - } + mask = mask_to_le(mask, f->field_bsize); first = find_first_bit(&mask, f->field_bsize); next_z = find_next_zero_bit(&mask, f->field_bsize, first); @@ -2853,9 +2875,10 @@ if (cmd == MLX5_ACTION_TYPE_SET) { int start; + field_mask = mask_to_le(f->field_mask, f->field_bsize); + /* if field is bit sized it can start not from first bit */ - start = find_first_bit((unsigned long *)&f->field_mask, - f->field_bsize); + start = find_first_bit(&field_mask, f->field_bsize); MLX5_SET(set_action_in, action, offset, first - start); /* length is num of bits to be written, zero means length of 32 */ @@ -4501,6 +4524,7 @@ return flow; err_free: + dealloc_mod_hdr_actions(&parse_attr->mod_hdr_acts); mlx5e_flow_put(priv, flow); out: return ERR_PTR(err); @@ -4635,6 +4659,7 @@ return 0; err_free: + dealloc_mod_hdr_actions(&parse_attr->mod_hdr_acts); mlx5e_flow_put(priv, flow); kvfree(parse_attr); out: @@ -4841,13 +4866,13 @@ return err; } -static int apply_police_params(struct mlx5e_priv *priv, u32 rate, +static int apply_police_params(struct mlx5e_priv *priv, u64 rate, struct netlink_ext_ack *extack) { struct mlx5e_rep_priv *rpriv = priv->ppriv; struct mlx5_eswitch *esw; + u32 rate_mbps = 0; u16 vport_num; - u32 rate_mbps; int err; vport_num = rpriv->rep->vport; @@ -4864,7 +4889,11 @@ * Moreover, if rate is non zero we choose to configure to a minimum of * 1 mbit/sec. */ - rate_mbps = rate ? max_t(u32, (rate * 8 + 500000) / 1000000, 1) : 0; + if (rate) { + rate = (rate * BITS_PER_BYTE) + 500000; + rate_mbps = max_t(u32, do_div(rate, 1000000), 1); + } + err = mlx5_esw_modify_vport_rate(esw, vport_num, rate_mbps); if (err) NL_SET_ERR_MSG_MOD(extack, "failed applying action to hardware"); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c @@ -38,7 +38,6 @@ #include "en/txrx.h" #include "ipoib/ipoib.h" #include "en_accel/en_accel.h" -#include "en_accel/ktls.h" #include "lib/clock.h" static void mlx5e_dma_unmap_wqe_err(struct mlx5e_txqsq *sq, u8 num_dma) @@ -341,8 +340,8 @@ dseg = wqe->data; #if IS_ENABLED(CONFIG_GENEVE) - if (skb->encapsulation) - mlx5e_tx_tunnel_accel(skb, eseg); + if (skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) + mlx5e_tx_tunnel_accel(skb, eseg, ihs); #endif mlx5e_txwqe_build_eseg_csum(sq, skb, eseg); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c @@ -121,13 +121,17 @@ struct mlx5e_xdpsq *xsksq = &c->xsksq; struct mlx5e_rq *xskrq = &c->xskrq; struct mlx5e_rq *rq = &c->rq; - bool xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state); bool aff_change = false; bool busy_xsk = false; bool busy = false; int work_done = 0; + bool xsk_open; int i; + rcu_read_lock(); + + xsk_open = test_bit(MLX5E_CHANNEL_STATE_XSK, c->state); + ch_stats->poll++; for (i = 0; i < c->num_tc; i++) @@ -149,17 +153,17 @@ } mlx5e_poll_ico_cq(&c->icosq.cq); + if (mlx5e_poll_ico_cq(&c->async_icosq.cq)) + /* Don't clear the flag if nothing was polled to prevent + * queueing more WQEs and overflowing the async ICOSQ. + */ + clear_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->async_icosq.state); busy |= INDIRECT_CALL_2(rq->post_wqes, mlx5e_post_rx_mpwqes, mlx5e_post_rx_wqes, rq); if (xsk_open) { - if (mlx5e_poll_ico_cq(&c->xskicosq.cq)) - /* Don't clear the flag if nothing was polled to prevent - * queueing more WQEs and overflowing XSKICOSQ. - */ - clear_bit(MLX5E_SQ_STATE_PENDING_XSK_TX, &c->xskicosq.state); busy |= mlx5e_poll_xdpsq_cq(&xsksq->cq); busy_xsk |= mlx5e_napi_xsk_post(xsksq, xskrq); } @@ -167,8 +171,10 @@ busy |= busy_xsk; if (busy) { - if (likely(mlx5e_channel_no_affinity_change(c))) - return budget; + if (likely(mlx5e_channel_no_affinity_change(c))) { + work_done = budget; + goto out; + } ch_stats->aff_change++; aff_change = true; if (budget && work_done == budget) @@ -176,7 +182,7 @@ } if (unlikely(!napi_complete_done(napi, work_done))) - return work_done; + goto out; ch_stats->arm++; @@ -189,11 +195,11 @@ mlx5e_cq_arm(&rq->cq); mlx5e_cq_arm(&c->icosq.cq); + mlx5e_cq_arm(&c->async_icosq.cq); mlx5e_cq_arm(&c->xdpsq.cq); if (xsk_open) { mlx5e_handle_rx_dim(xskrq); - mlx5e_cq_arm(&c->xskicosq.cq); mlx5e_cq_arm(&xsksq->cq); mlx5e_cq_arm(&xskrq->cq); } @@ -203,6 +209,9 @@ ch_stats->force_irq++; } +out: + rcu_read_unlock(); + return work_done; } --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eq.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/eq.c @@ -189,6 +189,29 @@ return count_eqe; } +static void mlx5_eq_async_int_lock(struct mlx5_eq_async *eq, unsigned long *flags) + __acquires(&eq->lock) +{ + if (in_irq()) + spin_lock(&eq->lock); + else + spin_lock_irqsave(&eq->lock, *flags); +} + +static void mlx5_eq_async_int_unlock(struct mlx5_eq_async *eq, unsigned long *flags) + __releases(&eq->lock) +{ + if (in_irq()) + spin_unlock(&eq->lock); + else + spin_unlock_irqrestore(&eq->lock, *flags); +} + +enum async_eq_nb_action { + ASYNC_EQ_IRQ_HANDLER = 0, + ASYNC_EQ_RECOVER = 1, +}; + static int mlx5_eq_async_int(struct notifier_block *nb, unsigned long action, void *data) { @@ -198,11 +221,14 @@ struct mlx5_eq_table *eqt; struct mlx5_core_dev *dev; struct mlx5_eqe *eqe; + unsigned long flags; int num_eqes = 0; dev = eq->dev; eqt = dev->priv.eq_table; + mlx5_eq_async_int_lock(eq_async, &flags); + eqe = next_eqe_sw(eq); if (!eqe) goto out; @@ -223,8 +249,19 @@ out: eq_update_ci(eq, 1); + mlx5_eq_async_int_unlock(eq_async, &flags); - return 0; + return unlikely(action == ASYNC_EQ_RECOVER) ? num_eqes : 0; +} + +void mlx5_cmd_eq_recover(struct mlx5_core_dev *dev) +{ + struct mlx5_eq_async *eq = &dev->priv.eq_table->cmd_eq; + int eqes; + + eqes = mlx5_eq_async_int(&eq->irq_nb, ASYNC_EQ_RECOVER, NULL); + if (eqes) + mlx5_core_warn(dev, "Recovered %d EQEs on cmd_eq\n", eqes); } static void init_eq_buf(struct mlx5_eq *eq) @@ -569,6 +606,7 @@ int err; eq->irq_nb.notifier_call = mlx5_eq_async_int; + spin_lock_init(&eq->lock); err = create_async_eq(dev, &eq->core, param); if (err) { @@ -656,8 +694,10 @@ cleanup_async_eq(dev, &table->pages_eq, "pages"); cleanup_async_eq(dev, &table->async_eq, "async"); + mlx5_cmd_allowed_opcode(dev, MLX5_CMD_OP_DESTROY_EQ); mlx5_cmd_use_polling(dev); cleanup_async_eq(dev, &table->cmd_eq, "cmd"); + mlx5_cmd_allowed_opcode(dev, CMD_ALLOWED_OPCODE_ALL); mlx5_eq_notifier_unregister(dev, &table->cq_err_nb); } --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c @@ -95,22 +95,21 @@ return 0; } - if (!IS_ERR_OR_NULL(vport->egress.acl)) - return 0; + if (!vport->egress.acl) { + vport->egress.acl = esw_acl_table_create(esw, vport->vport, + MLX5_FLOW_NAMESPACE_ESW_EGRESS, + table_size); + if (IS_ERR(vport->egress.acl)) { + err = PTR_ERR(vport->egress.acl); + vport->egress.acl = NULL; + goto out; + } - vport->egress.acl = esw_acl_table_create(esw, vport->vport, - MLX5_FLOW_NAMESPACE_ESW_EGRESS, - table_size); - if (IS_ERR_OR_NULL(vport->egress.acl)) { - err = PTR_ERR(vport->egress.acl); - vport->egress.acl = NULL; - goto out; + err = esw_acl_egress_lgcy_groups_create(esw, vport); + if (err) + goto out; } - err = esw_acl_egress_lgcy_groups_create(esw, vport); - if (err) - goto out; - esw_debug(esw->dev, "vport[%d] configure egress rules, vlan(%d) qos(%d)\n", vport->vport, vport->info.vlan, vport->info.qos); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c @@ -165,7 +165,7 @@ table_size++; vport->egress.acl = esw_acl_table_create(esw, vport->vport, MLX5_FLOW_NAMESPACE_ESW_EGRESS, table_size); - if (IS_ERR_OR_NULL(vport->egress.acl)) { + if (IS_ERR(vport->egress.acl)) { err = PTR_ERR(vport->egress.acl); vport->egress.acl = NULL; return err; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c @@ -180,7 +180,7 @@ vport->ingress.acl = esw_acl_table_create(esw, vport->vport, MLX5_FLOW_NAMESPACE_ESW_INGRESS, table_size); - if (IS_ERR_OR_NULL(vport->ingress.acl)) { + if (IS_ERR(vport->ingress.acl)) { err = PTR_ERR(vport->ingress.acl); vport->ingress.acl = NULL; return err; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c @@ -258,7 +258,7 @@ vport->ingress.acl = esw_acl_table_create(esw, vport->vport, MLX5_FLOW_NAMESPACE_ESW_INGRESS, num_ftes); - if (IS_ERR_OR_NULL(vport->ingress.acl)) { + if (IS_ERR(vport->ingress.acl)) { err = PTR_ERR(vport->ingress.acl); vport->ingress.acl = NULL; return err; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -1118,6 +1118,10 @@ struct mlx5_vport *vport; vport = mlx5_eswitch_get_vport(esw, vport_num); + + if (!vport->qos.enabled) + return -EOPNOTSUPP; + MLX5_SET(scheduling_context, ctx, max_average_bw, rate_mbps); return mlx5_modify_scheduling_element_cmd(esw->dev, @@ -1384,6 +1388,7 @@ int i; mlx5_esw_for_each_vf_vport(esw, i, vport, esw->esw_funcs.num_vfs) { + memset(&vport->qos, 0, sizeof(vport->qos)); memset(&vport->info, 0, sizeof(vport->info)); vport->info.link_state = MLX5_VPORT_ADMIN_STATE_AUTO; } @@ -2100,12 +2105,15 @@ max_guarantee = evport->info.min_rate; } - return max_t(u32, max_guarantee / fw_max_bw_share, 1); + if (max_guarantee) + return max_t(u32, max_guarantee / fw_max_bw_share, 1); + return 0; } -static int normalize_vports_min_rate(struct mlx5_eswitch *esw, u32 divider) +static int normalize_vports_min_rate(struct mlx5_eswitch *esw) { u32 fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share); + u32 divider = calculate_vports_min_rate_divider(esw); struct mlx5_vport *evport; u32 vport_max_rate; u32 vport_min_rate; @@ -2118,9 +2126,9 @@ continue; vport_min_rate = evport->info.min_rate; vport_max_rate = evport->info.max_rate; - bw_share = MLX5_MIN_BW_SHARE; + bw_share = 0; - if (vport_min_rate) + if (divider) bw_share = MLX5_RATE_TO_BW_SHARE(vport_min_rate, divider, fw_max_bw_share); @@ -2145,7 +2153,6 @@ struct mlx5_vport *evport = mlx5_eswitch_get_vport(esw, vport); u32 fw_max_bw_share; u32 previous_min_rate; - u32 divider; bool min_rate_supported; bool max_rate_supported; int err = 0; @@ -2170,8 +2177,7 @@ previous_min_rate = evport->info.min_rate; evport->info.min_rate = min_rate; - divider = calculate_vports_min_rate_divider(esw); - err = normalize_vports_min_rate(esw, divider); + err = normalize_vports_min_rate(esw); if (err) { evport->info.min_rate = previous_min_rate; goto unlock; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -1219,35 +1219,37 @@ } esw->fdb_table.offloads.send_to_vport_grp = g; - /* create peer esw miss group */ - memset(flow_group_in, 0, inlen); - - esw_set_flow_group_source_port(esw, flow_group_in); - - if (!mlx5_eswitch_vport_match_metadata_enabled(esw)) { - match_criteria = MLX5_ADDR_OF(create_flow_group_in, - flow_group_in, - match_criteria); - - MLX5_SET_TO_ONES(fte_match_param, match_criteria, - misc_parameters.source_eswitch_owner_vhca_id); - - MLX5_SET(create_flow_group_in, flow_group_in, - source_eswitch_owner_vhca_id_valid, 1); - } - - MLX5_SET(create_flow_group_in, flow_group_in, start_flow_index, ix); - MLX5_SET(create_flow_group_in, flow_group_in, end_flow_index, - ix + esw->total_vports - 1); - ix += esw->total_vports; - - g = mlx5_create_flow_group(fdb, flow_group_in); - if (IS_ERR(g)) { - err = PTR_ERR(g); - esw_warn(dev, "Failed to create peer miss flow group err(%d)\n", err); - goto peer_miss_err; + if (MLX5_CAP_ESW(esw->dev, merged_eswitch)) { + /* create peer esw miss group */ + memset(flow_group_in, 0, inlen); + + esw_set_flow_group_source_port(esw, flow_group_in); + + if (!mlx5_eswitch_vport_match_metadata_enabled(esw)) { + match_criteria = MLX5_ADDR_OF(create_flow_group_in, + flow_group_in, + match_criteria); + + MLX5_SET_TO_ONES(fte_match_param, match_criteria, + misc_parameters.source_eswitch_owner_vhca_id); + + MLX5_SET(create_flow_group_in, flow_group_in, + source_eswitch_owner_vhca_id_valid, 1); + } + + MLX5_SET(create_flow_group_in, flow_group_in, start_flow_index, ix); + MLX5_SET(create_flow_group_in, flow_group_in, end_flow_index, + ix + esw->total_vports - 1); + ix += esw->total_vports; + + g = mlx5_create_flow_group(fdb, flow_group_in); + if (IS_ERR(g)) { + err = PTR_ERR(g); + esw_warn(dev, "Failed to create peer miss flow group err(%d)\n", err); + goto peer_miss_err; + } + esw->fdb_table.offloads.peer_miss_grp = g; } - esw->fdb_table.offloads.peer_miss_grp = g; /* create miss group */ memset(flow_group_in, 0, inlen); @@ -1282,7 +1284,8 @@ miss_rule_err: mlx5_destroy_flow_group(esw->fdb_table.offloads.miss_grp); miss_err: - mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp); + if (MLX5_CAP_ESW(esw->dev, merged_eswitch)) + mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp); peer_miss_err: mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_grp); send_vport_err: @@ -1306,7 +1309,8 @@ mlx5_del_flow_rules(esw->fdb_table.offloads.miss_rule_multi); mlx5_del_flow_rules(esw->fdb_table.offloads.miss_rule_uni); mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_grp); - mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp); + if (MLX5_CAP_ESW(esw->dev, merged_eswitch)) + mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp); mlx5_destroy_flow_group(esw->fdb_table.offloads.miss_grp); mlx5_esw_chains_destroy(esw); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -106,8 +106,8 @@ #define ETHTOOL_PRIO_NUM_LEVELS 1 #define ETHTOOL_NUM_PRIOS 11 #define ETHTOOL_MIN_LEVEL (KERNEL_MIN_LEVEL + ETHTOOL_NUM_PRIOS) -/* Vlan, mac, ttc, inner ttc, aRFS */ -#define KERNEL_NIC_PRIO_NUM_LEVELS 5 +/* Vlan, mac, ttc, inner ttc, {aRFS/accel} */ +#define KERNEL_NIC_PRIO_NUM_LEVELS 6 #define KERNEL_NIC_NUM_PRIOS 1 /* One more level for tc */ #define KERNEL_MIN_LEVEL (KERNEL_NIC_PRIO_NUM_LEVELS + 1) @@ -520,6 +520,13 @@ goto out; } + if (rule->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_PORT && + --fte->dests_size) { + fte->modify_mask |= BIT(MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION); + fte->action.action &= ~MLX5_FLOW_CONTEXT_ACTION_ALLOW; + goto out; + } + if ((fte->action.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST) && --fte->dests_size) { fte->modify_mask |= @@ -655,7 +662,7 @@ fte->action = *flow_act; fte->flow_context = spec->flow_context; - tree_init_node(&fte->node, NULL, del_sw_fte); + tree_init_node(&fte->node, del_hw_fte, del_sw_fte); return fte; } @@ -847,18 +854,15 @@ { struct mlx5_flow_root_namespace *root = find_root(&prio->node); struct mlx5_flow_table *iter; - int i = 0; int err; fs_for_each_ft(iter, prio) { - i++; err = root->cmds->modify_flow_table(root, iter, ft); if (err) { - mlx5_core_warn(dev, "Failed to modify flow table %d\n", - iter->id); + mlx5_core_err(dev, + "Failed to modify flow table id %d, type %d, err %d\n", + iter->id, iter->type, err); /* The driver is out of sync with the FW */ - if (i > 1) - WARN_ON(true); return err; } } @@ -1123,6 +1127,7 @@ destroy_ft: root->cmds->destroy_flow_table(root, ft); free_ft: + rhltable_destroy(&ft->fgs_hash); kfree(ft); unlock_root: mutex_unlock(&root->chain_lock); @@ -1743,6 +1748,7 @@ if (!fte_tmp) continue; rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte_tmp); + /* No error check needed here, because insert_fte() is not called */ up_write_ref_node(&fte_tmp->node, false); tree_put_node(&fte_tmp->node, false); kmem_cache_free(steering->ftes_cache, fte); @@ -1795,7 +1801,8 @@ up_write_ref_node(&g->node, false); rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte); up_write_ref_node(&fte->node, false); - tree_put_node(&fte->node, false); + if (IS_ERR(rule)) + tree_put_node(&fte->node, false); return rule; } rule = ERR_PTR(-ENOENT); @@ -1894,7 +1901,8 @@ up_write_ref_node(&g->node, false); rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte); up_write_ref_node(&fte->node, false); - tree_put_node(&fte->node, false); + if (IS_ERR(rule)) + tree_put_node(&fte->node, false); tree_put_node(&g->node, false); return rule; @@ -1999,12 +2007,15 @@ down_write_ref_node(&fte->node, false); for (i = handle->num_rules - 1; i >= 0; i--) tree_remove_node(&handle->rule[i]->node, true); - if (fte->modify_mask && fte->dests_size) { - modify_fte(fte); + if (fte->dests_size) { + if (fte->modify_mask) + modify_fte(fte); up_write_ref_node(&fte->node, false); - } else { + } else if (list_empty(&fte->node.children)) { del_hw_fte(&fte->node); - up_write(&fte->node.lock); + /* Avoid double call to del_hw_fte */ + fte->node.del_hw_func = NULL; + up_write_ref_node(&fte->node, false); tree_put_node(&fte->node, false); } kfree(handle); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/fw.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/fw.c @@ -35,6 +35,7 @@ #include #include "mlx5_core.h" #include "../../mlxfw/mlxfw.h" +#include "accel/tls.h" enum { MCQS_IDENTIFIER_BOOT_IMG = 0x1, @@ -236,7 +237,7 @@ return err; } - if (MLX5_CAP_GEN(dev, tls_tx)) { + if (mlx5_accel_is_ktls_tx(dev) || mlx5_accel_is_ktls_rx(dev)) { err = mlx5_core_get_caps(dev, MLX5_CAP_TLS); if (err) return err; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c @@ -550,8 +550,9 @@ switch (clock->ptp_info.pin_config[pin].func) { case PTP_PF_EXTTS: ptp_event.index = pin; - ptp_event.timestamp = timecounter_cyc2time(&clock->tc, - be64_to_cpu(eqe->data.pps.time_stamp)); + ptp_event.timestamp = + mlx5_timecounter_cyc2time(clock, + be64_to_cpu(eqe->data.pps.time_stamp)); if (clock->pps_info.enabled) { ptp_event.type = PTP_CLOCK_PPSUSR; ptp_event.pps_times.ts_real = --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h @@ -37,6 +37,7 @@ struct mlx5_eq_async { struct mlx5_eq core; struct notifier_block irq_nb; + spinlock_t lock; /* To avoid irq EQ handle races with resiliency flows */ }; struct mlx5_eq_comp { @@ -81,6 +82,7 @@ struct cpumask *mlx5_eq_comp_cpumask(struct mlx5_core_dev *dev, int ix); u32 mlx5_eq_poll_irq_disabled(struct mlx5_eq_comp *eq); +void mlx5_cmd_eq_recover(struct mlx5_core_dev *dev); void mlx5_eq_synchronize_async_irq(struct mlx5_core_dev *dev); void mlx5_eq_synchronize_cmd_irq(struct mlx5_core_dev *dev); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -50,6 +50,7 @@ #ifdef CONFIG_RFS_ACCEL #include #endif +#include #include #include "mlx5_core.h" #include "lib/eq.h" @@ -232,7 +233,10 @@ strncat(string, ",", remaining_size); remaining_size = max_t(int, 0, driver_ver_sz - strlen(string)); - strncat(string, DRIVER_VERSION, remaining_size); + + snprintf(string + strlen(string), remaining_size, "%u.%u.%u", + (u8)((LINUX_VERSION_CODE >> 16) & 0xff), (u8)((LINUX_VERSION_CODE >> 8) & 0xff), + (u16)(LINUX_VERSION_CODE & 0xffff)); /*Send the command*/ MLX5_SET(set_driver_version_in, in, opcode, @@ -1362,7 +1366,8 @@ dev_err(&pdev->dev, "mlx5_crdump_enable failed with error code %d\n", err); pci_save_state(pdev); - devlink_reload_enable(devlink); + if (!mlx5_core_is_mp_slave(dev)) + devlink_reload_enable(devlink); return 0; err_load_one: --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c @@ -375,6 +375,24 @@ npages, ec_function, func_id); } +static u32 fwp_fill_manage_pages_out(struct fw_page *fwp, u32 *out, u32 index, + u32 npages) +{ + u32 pages_set = 0; + unsigned int n; + + for_each_clear_bit(n, &fwp->bitmask, MLX5_NUM_4K_IN_PAGE) { + MLX5_ARRAY_SET64(manage_pages_out, out, pas, index + pages_set, + fwp->addr + (n * MLX5_ADAPTER_PAGE_SIZE)); + pages_set++; + + if (!--npages) + break; + } + + return pages_set; +} + static int reclaim_pages_cmd(struct mlx5_core_dev *dev, u32 *in, int in_size, u32 *out, int out_size) { @@ -398,8 +416,7 @@ if (fwp->func_id != func_id) continue; - MLX5_ARRAY_SET64(manage_pages_out, out, pas, i, fwp->addr); - i++; + i += fwp_fill_manage_pages_out(fwp, out, i, npages - i); } MLX5_SET(manage_pages_out, out, output_num_entries, i); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c @@ -115,7 +115,7 @@ return 0; err_request_irq: - for (; i >= 0; i--) { + while (i--) { struct mlx5_irq *irq = mlx5_irq_get(dev, i); int irqn = pci_irq_vector(dev->pdev, i); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/rdma.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/rdma.c @@ -116,7 +116,7 @@ static void mlx5_rdma_del_roce_addr(struct mlx5_core_dev *dev) { mlx5_core_roce_gid_set(dev, 0, 0, 0, - NULL, NULL, false, 0, 0); + NULL, NULL, false, 0, 1); } static void mlx5_rdma_make_default_gid(struct mlx5_core_dev *dev, union ib_gid *gid) --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c @@ -92,6 +92,7 @@ caps->eswitch_manager = MLX5_CAP_GEN(mdev, eswitch_manager); caps->gvmi = MLX5_CAP_GEN(mdev, vhca_id); caps->flex_protocols = MLX5_CAP_GEN(mdev, flex_parser_protocols); + caps->sw_format_ver = MLX5_CAP_GEN(mdev, steering_format_version); if (mlx5dr_matcher_supp_flex_parser_icmp_v4(caps)) { caps->flex_parser_id_icmp_dw0 = MLX5_CAP_GEN(mdev, flex_parser_id_icmp_dw0); --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c @@ -223,6 +223,11 @@ if (ret) return ret; + if (dmn->info.caps.sw_format_ver != MLX5_STEERING_FORMAT_CONNECTX_5) { + mlx5dr_err(dmn, "SW steering is not supported on this device\n"); + return -EOPNOTSUPP; + } + ret = dr_domain_query_fdb_caps(mdev, dmn); if (ret) return ret; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h @@ -621,6 +621,7 @@ u8 max_ft_level; u16 roce_min_src_udp; u8 num_esw_ports; + u8 sw_format_ver; bool eswitch_manager; bool rx_sw_owner; bool tx_sw_owner; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c @@ -279,29 +279,9 @@ /* The order of the actions are must to be keep, only the following * order is supported by SW steering: - * TX: push vlan -> modify header -> encap + * TX: modify header -> push vlan -> encap * RX: decap -> pop vlan -> modify header */ - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH) { - tmp_action = create_action_push_vlan(domain, &fte->action.vlan[0]); - if (!tmp_action) { - err = -ENOMEM; - goto free_actions; - } - fs_dr_actions[fs_dr_num_actions++] = tmp_action; - actions[num_actions++] = tmp_action; - } - - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2) { - tmp_action = create_action_push_vlan(domain, &fte->action.vlan[1]); - if (!tmp_action) { - err = -ENOMEM; - goto free_actions; - } - fs_dr_actions[fs_dr_num_actions++] = tmp_action; - actions[num_actions++] = tmp_action; - } - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_DECAP) { enum mlx5dr_action_reformat_type decap_type = DR_ACTION_REFORMAT_TYP_TNL_L2_TO_L2; @@ -354,6 +334,26 @@ actions[num_actions++] = fte->action.modify_hdr->action.dr_action; + if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH) { + tmp_action = create_action_push_vlan(domain, &fte->action.vlan[0]); + if (!tmp_action) { + err = -ENOMEM; + goto free_actions; + } + fs_dr_actions[fs_dr_num_actions++] = tmp_action; + actions[num_actions++] = tmp_action; + } + + if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2) { + tmp_action = create_action_push_vlan(domain, &fte->action.vlan[1]); + if (!tmp_action) { + err = -ENOMEM; + goto free_actions; + } + fs_dr_actions[fs_dr_num_actions++] = tmp_action; + actions[num_actions++] = tmp_action; + } + if (delay_encap_set) actions[num_actions++] = fte->action.pkt_reformat->action.dr_action; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlxsw/core.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -558,7 +558,8 @@ if (trans->core->fw_flash_in_progress) timeout = msecs_to_jiffies(MLXSW_EMAD_TIMEOUT_DURING_FW_FLASH_MS); - queue_delayed_work(trans->core->emad_wq, &trans->timeout_dw, timeout); + queue_delayed_work(trans->core->emad_wq, &trans->timeout_dw, + timeout << trans->retries); } static int mlxsw_emad_transmit(struct mlxsw_core *mlxsw_core, @@ -607,6 +608,9 @@ err = mlxsw_emad_transmit(trans->core, trans); if (err == 0) return; + + if (!atomic_dec_and_test(&trans->active)) + return; } else { err = -EIO; } @@ -1483,6 +1487,8 @@ if (!reload) devlink_resources_unregister(devlink, NULL); mlxsw_core->bus->fini(mlxsw_core->bus_priv); + if (!reload) + devlink_free(devlink); return; --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlxsw/core_thermal.c @@ -19,7 +19,7 @@ #define MLXSW_THERMAL_ASIC_TEMP_NORM 75000 /* 75C */ #define MLXSW_THERMAL_ASIC_TEMP_HIGH 85000 /* 85C */ #define MLXSW_THERMAL_ASIC_TEMP_HOT 105000 /* 105C */ -#define MLXSW_THERMAL_ASIC_TEMP_CRIT 110000 /* 110C */ +#define MLXSW_THERMAL_ASIC_TEMP_CRIT 140000 /* 140C */ #define MLXSW_THERMAL_HYSTERESIS_TEMP 5000 /* 5C */ #define MLXSW_THERMAL_MODULE_TEMP_SHIFT (MLXSW_THERMAL_HYSTERESIS_TEMP * 2) #define MLXSW_THERMAL_ZONE_MAX_NAME 16 @@ -178,6 +178,12 @@ if (err) return err; + if (crit_temp > emerg_temp) { + dev_warn(dev, "%s : Critical threshold %d is above emergency threshold %d\n", + tz->tzdev->type, crit_temp, emerg_temp); + return 0; + } + /* According to the system thermal requirements, the thermal zones are * defined with four trip points. The critical and emergency * temperature thresholds, provided by QSFP module are set as "active" @@ -192,11 +198,8 @@ tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM].temp = crit_temp; tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH].temp = crit_temp; tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT].temp = emerg_temp; - if (emerg_temp > crit_temp) - tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT].temp = emerg_temp + + tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT].temp = emerg_temp + MLXSW_THERMAL_MODULE_TEMP_SHIFT; - else - tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT].temp = emerg_temp; return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +++ linux-5.8.0/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c @@ -292,13 +292,14 @@ int err; group->tcam = tcam; - mutex_init(&group->lock); INIT_LIST_HEAD(&group->region_list); err = mlxsw_sp_acl_tcam_group_id_get(tcam, &group->id); if (err) return err; + mutex_init(&group->lock); + return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/microchip/lan743x_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/microchip/lan743x_ethtool.c @@ -780,7 +780,9 @@ wol->supported = 0; wol->wolopts = 0; - phy_ethtool_get_wol(netdev->phydev, wol); + + if (netdev->phydev) + phy_ethtool_get_wol(netdev->phydev, wol); wol->supported |= WAKE_BCAST | WAKE_UCAST | WAKE_MCAST | WAKE_MAGIC | WAKE_PHY | WAKE_ARP; @@ -809,9 +811,8 @@ device_set_wakeup_enable(&adapter->pdev->dev, (bool)wol->wolopts); - phy_ethtool_set_wol(netdev->phydev, wol); - - return 0; + return netdev->phydev ? phy_ethtool_set_wol(netdev->phydev, wol) + : -ENETDOWN; } #endif /* CONFIG_PM */ --- linux-5.8.0.orig/drivers/net/ethernet/microchip/lan743x_main.c +++ linux-5.8.0/drivers/net/ethernet/microchip/lan743x_main.c @@ -148,7 +148,8 @@ int_sts = lan743x_csr_read(adapter, INT_STS); if (int_sts & INT_BIT_SW_GP_) { - lan743x_csr_write(adapter, INT_STS, INT_BIT_SW_GP_); + /* disable the interrupt to prevent repeated re-triggering */ + lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_SW_GP_); intr->software_isr_flag = 1; } } @@ -675,14 +676,12 @@ static int lan743x_dp_write(struct lan743x_adapter *adapter, u32 select, u32 addr, u32 length, u32 *buf) { - int ret = -EIO; u32 dp_sel; int i; - mutex_lock(&adapter->dp_lock); if (lan743x_csr_wait_for_bit(adapter, DP_SEL, DP_SEL_DPRDY_, 1, 40, 100, 100)) - goto unlock; + return -EIO; dp_sel = lan743x_csr_read(adapter, DP_SEL); dp_sel &= ~DP_SEL_MASK_; dp_sel |= select; @@ -694,13 +693,10 @@ lan743x_csr_write(adapter, DP_CMD, DP_CMD_WRITE_); if (lan743x_csr_wait_for_bit(adapter, DP_SEL, DP_SEL_DPRDY_, 1, 40, 100, 100)) - goto unlock; + return -EIO; } - ret = 0; -unlock: - mutex_unlock(&adapter->dp_lock); - return ret; + return 0; } static u32 lan743x_mac_mii_access(u16 id, u16 index, int read) @@ -1017,16 +1013,16 @@ static int lan743x_phy_open(struct lan743x_adapter *adapter) { struct lan743x_phy *phy = &adapter->phy; + struct phy_device *phydev = NULL; struct device_node *phynode; - struct phy_device *phydev; struct net_device *netdev; int ret = -EIO; netdev = adapter->netdev; phynode = of_node_get(adapter->pdev->dev.of_node); - adapter->phy_mode = PHY_INTERFACE_MODE_GMII; if (phynode) { + /* try devicetree phy, or fixed link */ of_get_phy_mode(phynode, &adapter->phy_mode); if (of_phy_is_fixed_link(phynode)) { @@ -1042,13 +1038,15 @@ lan743x_phy_link_status_change, 0, adapter->phy_mode); of_node_put(phynode); - if (!phydev) - goto return_error; - } else { + } + + if (!phydev) { + /* try internal phy */ phydev = phy_find_first(adapter->mdiobus); if (!phydev) goto return_error; + adapter->phy_mode = PHY_INTERFACE_MODE_GMII; ret = phy_connect_direct(netdev, phydev, lan743x_phy_link_status_change, adapter->phy_mode); @@ -1308,13 +1306,13 @@ goto clear_active; if (!(buffer_info->flags & TX_BUFFER_INFO_FLAG_TIMESTAMP_REQUESTED)) { - dev_kfree_skb(buffer_info->skb); + dev_kfree_skb_any(buffer_info->skb); goto clear_skb; } if (cleanup) { lan743x_ptp_unrequest_tx_timestamp(tx->adapter); - dev_kfree_skb(buffer_info->skb); + dev_kfree_skb_any(buffer_info->skb); } else { ignore_sync = (buffer_info->flags & TX_BUFFER_INFO_FLAG_IGNORE_SYNC) != 0; @@ -1624,7 +1622,7 @@ if (required_number_of_descriptors > lan743x_tx_get_avail_desc(tx)) { if (required_number_of_descriptors > (tx->ring_size - 1)) { - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); } else { /* save to overflow buffer */ tx->overflow_skb = skb; @@ -1657,7 +1655,7 @@ start_frame_length, do_timestamp, skb->ip_summed == CHECKSUM_PARTIAL)) { - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); goto unlock; } @@ -1676,7 +1674,7 @@ * frame assembler clean up was performed inside * lan743x_tx_frame_add_fragment */ - dev_kfree_skb(skb); + dev_kfree_skb_irq(skb); goto unlock; } } @@ -1964,6 +1962,14 @@ length, GFP_ATOMIC | GFP_DMA); } +static void lan743x_rx_update_tail(struct lan743x_rx *rx, int index) +{ + /* update the tail once per 8 descriptors */ + if ((index & 7) == 7) + lan743x_csr_write(rx->adapter, RX_TAIL(rx->channel_number), + index); +} + static int lan743x_rx_init_ring_element(struct lan743x_rx *rx, int index, struct sk_buff *skb) { @@ -1994,6 +2000,7 @@ descriptor->data0 = (RX_DESC_DATA0_OWN_ | (length & RX_DESC_DATA0_BUF_LENGTH_MASK_)); skb_reserve(buffer_info->skb, RX_HEAD_PADDING); + lan743x_rx_update_tail(rx, index); return 0; } @@ -2012,6 +2019,7 @@ descriptor->data0 = (RX_DESC_DATA0_OWN_ | ((buffer_info->buffer_length) & RX_DESC_DATA0_BUF_LENGTH_MASK_)); + lan743x_rx_update_tail(rx, index); } static void lan743x_rx_release_ring_element(struct lan743x_rx *rx, int index) @@ -2223,6 +2231,7 @@ { struct lan743x_rx *rx = container_of(napi, struct lan743x_rx, napi); struct lan743x_adapter *adapter = rx->adapter; + int result = RX_PROCESS_RESULT_NOTHING_TO_DO; u32 rx_tail_flags = 0; int count; @@ -2231,27 +2240,19 @@ lan743x_csr_write(adapter, DMAC_INT_STS, DMAC_INT_BIT_RXFRM_(rx->channel_number)); } - count = 0; - while (count < weight) { - int rx_process_result = lan743x_rx_process_packet(rx); - - if (rx_process_result == RX_PROCESS_RESULT_PACKET_RECEIVED) { - count++; - } else if (rx_process_result == - RX_PROCESS_RESULT_NOTHING_TO_DO) { + for (count = 0; count < weight; count++) { + result = lan743x_rx_process_packet(rx); + if (result == RX_PROCESS_RESULT_NOTHING_TO_DO) break; - } else if (rx_process_result == - RX_PROCESS_RESULT_PACKET_DROPPED) { - continue; - } } rx->frame_count += count; - if (count == weight) - goto done; + if (count == weight || result == RX_PROCESS_RESULT_PACKET_RECEIVED) + return weight; if (!napi_complete_done(napi, count)) - goto done; + return count; + /* re-arm interrupts, must write to rx tail on some chip variants */ if (rx->vector_flags & LAN743X_VECTOR_FLAG_VECTOR_ENABLE_AUTO_SET) rx_tail_flags |= RX_TAIL_SET_TOP_INT_VEC_EN_; if (rx->vector_flags & LAN743X_VECTOR_FLAG_SOURCE_ENABLE_AUTO_SET) { @@ -2261,10 +2262,10 @@ INT_BIT_DMA_RX_(rx->channel_number)); } - /* update RX_TAIL */ - lan743x_csr_write(adapter, RX_TAIL(rx->channel_number), - rx_tail_flags | rx->last_tail); -done: + if (rx_tail_flags) + lan743x_csr_write(adapter, RX_TAIL(rx->channel_number), + rx_tail_flags | rx->last_tail); + return count; } @@ -2409,7 +2410,7 @@ netif_napi_add(adapter->netdev, &rx->napi, lan743x_rx_napi_poll, - rx->ring_size - 1); + NAPI_POLL_WEIGHT); lan743x_csr_write(adapter, DMAC_CMD, DMAC_CMD_RX_SWR_(rx->channel_number)); @@ -2735,7 +2736,6 @@ adapter->intr.irq = adapter->pdev->irq; lan743x_csr_write(adapter, INT_EN_CLR, 0xFFFFFFFF); - mutex_init(&adapter->dp_lock); ret = lan743x_gpio_init(adapter); if (ret) --- linux-5.8.0.orig/drivers/net/ethernet/microchip/lan743x_main.h +++ linux-5.8.0/drivers/net/ethernet/microchip/lan743x_main.h @@ -712,9 +712,6 @@ struct lan743x_csr csr; struct lan743x_intr intr; - /* lock, used to prevent concurrent access to data port */ - struct mutex dp_lock; - struct lan743x_gpio gpio; struct lan743x_ptp ptp; --- linux-5.8.0.orig/drivers/net/ethernet/mscc/Makefile +++ linux-5.8.0/drivers/net/ethernet/mscc/Makefile @@ -2,4 +2,4 @@ obj-$(CONFIG_MSCC_OCELOT_SWITCH) += mscc_ocelot_common.o mscc_ocelot_common-y := ocelot.o ocelot_io.o mscc_ocelot_common-y += ocelot_regs.o ocelot_tc.o ocelot_police.o ocelot_ace.o ocelot_flower.o ocelot_ptp.o -obj-$(CONFIG_MSCC_OCELOT_SWITCH_OCELOT) += ocelot_board.o +obj-$(CONFIG_MSCC_OCELOT_SWITCH_OCELOT) += ocelot_vsc7514.o --- linux-5.8.0.orig/drivers/net/ethernet/mscc/ocelot.c +++ linux-5.8.0/drivers/net/ethernet/mscc/ocelot.c @@ -396,18 +396,6 @@ } } -/* Watermark encode - * Bit 8: Unit; 0:1, 1:16 - * Bit 7-0: Value to be multiplied with unit - */ -static u16 ocelot_wm_enc(u16 value) -{ - if (value >= BIT(8)) - return BIT(8) | (value / 16); - - return value; -} - void ocelot_adjust_link(struct ocelot *ocelot, int port, struct phy_device *phydev) { @@ -1605,14 +1593,14 @@ addr[0] = 0; if (!new) { - addr[2] = mc->ports << 0; - addr[1] = mc->ports << 8; + addr[1] = mc->ports >> 8; + addr[2] = mc->ports & 0xff; ocelot_mact_forget(ocelot, addr, vid); } mc->ports |= BIT(port); - addr[2] = mc->ports << 0; - addr[1] = mc->ports << 8; + addr[1] = mc->ports >> 8; + addr[2] = mc->ports & 0xff; return ocelot_mact_learn(ocelot, 0, addr, vid, ENTRYTYPE_MACv4); } @@ -1636,9 +1624,9 @@ return -ENOENT; memcpy(addr, mc->addr, ETH_ALEN); - addr[2] = mc->ports << 0; - addr[1] = mc->ports << 8; addr[0] = 0; + addr[1] = mc->ports >> 8; + addr[2] = mc->ports & 0xff; ocelot_mact_forget(ocelot, addr, vid); mc->ports &= ~BIT(port); @@ -1648,8 +1636,8 @@ return 0; } - addr[2] = mc->ports << 0; - addr[1] = mc->ports << 8; + addr[1] = mc->ports >> 8; + addr[2] = mc->ports & 0xff; return ocelot_mact_learn(ocelot, 0, addr, vid, ENTRYTYPE_MACv4); } @@ -1907,10 +1895,8 @@ struct net_device *dev = netdev_notifier_info_to_dev(ptr); int ret = 0; - if (!ocelot_netdevice_dev_check(dev)) - return 0; - if (event == NETDEV_PRECHANGEUPPER && + ocelot_netdevice_dev_check(dev) && netif_is_lag_master(info->upper_dev)) { struct netdev_lag_upper_info *lag_upper_info = info->upper_info; struct netlink_ext_ack *extack; @@ -2012,7 +1998,8 @@ { struct ocelot_port *ocelot_port = ocelot->ports[port]; int maxlen = sdu + ETH_HLEN + ETH_FCS_LEN; - int atop_wm; + int pause_start, pause_stop; + int atop, atop_tot; if (port == ocelot->npi) { maxlen += OCELOT_TAG_LEN; @@ -2025,20 +2012,20 @@ ocelot_port_writel(ocelot_port, maxlen, DEV_MAC_MAXLEN_CFG); - /* Set Pause WM hysteresis - * 152 = 6 * maxlen / OCELOT_BUFFER_CELL_SZ - * 101 = 4 * maxlen / OCELOT_BUFFER_CELL_SZ - */ - ocelot_write_rix(ocelot, SYS_PAUSE_CFG_PAUSE_ENA | - SYS_PAUSE_CFG_PAUSE_STOP(101) | - SYS_PAUSE_CFG_PAUSE_START(152), SYS_PAUSE_CFG, port); + /* Set Pause watermark hysteresis */ + pause_start = 6 * maxlen / OCELOT_BUFFER_CELL_SZ; + pause_stop = 4 * maxlen / OCELOT_BUFFER_CELL_SZ; + ocelot_rmw_rix(ocelot, SYS_PAUSE_CFG_PAUSE_START(pause_start), + SYS_PAUSE_CFG_PAUSE_START_M, SYS_PAUSE_CFG, port); + ocelot_rmw_rix(ocelot, SYS_PAUSE_CFG_PAUSE_STOP(pause_stop), + SYS_PAUSE_CFG_PAUSE_STOP_M, SYS_PAUSE_CFG, port); - /* Tail dropping watermark */ - atop_wm = (ocelot->shared_queue_sz - 9 * maxlen) / + /* Tail dropping watermarks */ + atop_tot = (ocelot->shared_queue_sz - 9 * maxlen) / OCELOT_BUFFER_CELL_SZ; - ocelot_write_rix(ocelot, ocelot_wm_enc(9 * maxlen), - SYS_ATOP, port); - ocelot_write(ocelot, ocelot_wm_enc(atop_wm), SYS_ATOP_TOT_CFG); + atop = (9 * maxlen) / OCELOT_BUFFER_CELL_SZ; + ocelot_write_rix(ocelot, ocelot->ops->wm_enc(atop), SYS_ATOP, port); + ocelot_write(ocelot, ocelot->ops->wm_enc(atop_tot), SYS_ATOP_TOT_CFG); } EXPORT_SYMBOL(ocelot_port_set_maxlen); @@ -2094,6 +2081,10 @@ ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_HIGH_CFG); ocelot_port_writel(ocelot_port, 0, DEV_MAC_FC_MAC_LOW_CFG); + /* Enable transmission of pause frames */ + ocelot_rmw_rix(ocelot, SYS_PAUSE_CFG_PAUSE_ENA, SYS_PAUSE_CFG_PAUSE_ENA, + SYS_PAUSE_CFG, port); + /* Drop frames with multicast source address */ ocelot_rmw_gix(ocelot, ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA, ANA_PORT_DROP_CFG_DROP_MC_SMAC_ENA, --- linux-5.8.0.orig/drivers/net/ethernet/mscc/ocelot_vsc7514.c +++ linux-5.8.0/drivers/net/ethernet/mscc/ocelot_vsc7514.c @@ -0,0 +1,639 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Microsemi Ocelot Switch driver + * + * Copyright (c) 2017 Microsemi Corporation + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ocelot.h" + +#define IFH_EXTRACT_BITFIELD64(x, o, w) (((x) >> (o)) & GENMASK_ULL((w) - 1, 0)) +#define VSC7514_VCAP_IS2_CNT 64 +#define VSC7514_VCAP_IS2_ENTRY_WIDTH 376 +#define VSC7514_VCAP_IS2_ACTION_WIDTH 99 +#define VSC7514_VCAP_PORT_CNT 11 + +static int ocelot_parse_ifh(u32 *_ifh, struct frame_info *info) +{ + u8 llen, wlen; + u64 ifh[2]; + + ifh[0] = be64_to_cpu(((__force __be64 *)_ifh)[0]); + ifh[1] = be64_to_cpu(((__force __be64 *)_ifh)[1]); + + wlen = IFH_EXTRACT_BITFIELD64(ifh[0], 7, 8); + llen = IFH_EXTRACT_BITFIELD64(ifh[0], 15, 6); + + info->len = OCELOT_BUFFER_CELL_SZ * wlen + llen - 80; + + info->timestamp = IFH_EXTRACT_BITFIELD64(ifh[0], 21, 32); + + info->port = IFH_EXTRACT_BITFIELD64(ifh[1], 43, 4); + + info->tag_type = IFH_EXTRACT_BITFIELD64(ifh[1], 16, 1); + info->vid = IFH_EXTRACT_BITFIELD64(ifh[1], 0, 12); + + return 0; +} + +static int ocelot_rx_frame_word(struct ocelot *ocelot, u8 grp, bool ifh, + u32 *rval) +{ + u32 val; + u32 bytes_valid; + + val = ocelot_read_rix(ocelot, QS_XTR_RD, grp); + if (val == XTR_NOT_READY) { + if (ifh) + return -EIO; + + do { + val = ocelot_read_rix(ocelot, QS_XTR_RD, grp); + } while (val == XTR_NOT_READY); + } + + switch (val) { + case XTR_ABORT: + return -EIO; + case XTR_EOF_0: + case XTR_EOF_1: + case XTR_EOF_2: + case XTR_EOF_3: + case XTR_PRUNED: + bytes_valid = XTR_VALID_BYTES(val); + val = ocelot_read_rix(ocelot, QS_XTR_RD, grp); + if (val == XTR_ESCAPE) + *rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp); + else + *rval = val; + + return bytes_valid; + case XTR_ESCAPE: + *rval = ocelot_read_rix(ocelot, QS_XTR_RD, grp); + + return 4; + default: + *rval = val; + + return 4; + } +} + +static irqreturn_t ocelot_xtr_irq_handler(int irq, void *arg) +{ + struct ocelot *ocelot = arg; + int i = 0, grp = 0; + int err = 0; + + if (!(ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp))) + return IRQ_NONE; + + do { + struct skb_shared_hwtstamps *shhwtstamps; + struct ocelot_port_private *priv; + struct ocelot_port *ocelot_port; + u64 tod_in_ns, full_ts_in_ns; + struct frame_info info = {}; + struct net_device *dev; + u32 ifh[4], val, *buf; + struct timespec64 ts; + int sz, len, buf_len; + struct sk_buff *skb; + + for (i = 0; i < OCELOT_TAG_LEN / 4; i++) { + err = ocelot_rx_frame_word(ocelot, grp, true, &ifh[i]); + if (err != 4) + break; + } + + if (err != 4) + break; + + /* At this point the IFH was read correctly, so it is safe to + * presume that there is no error. The err needs to be reset + * otherwise a frame could come in CPU queue between the while + * condition and the check for error later on. And in that case + * the new frame is just removed and not processed. + */ + err = 0; + + ocelot_parse_ifh(ifh, &info); + + ocelot_port = ocelot->ports[info.port]; + priv = container_of(ocelot_port, struct ocelot_port_private, + port); + dev = priv->dev; + + skb = netdev_alloc_skb(dev, info.len); + + if (unlikely(!skb)) { + netdev_err(dev, "Unable to allocate sk_buff\n"); + err = -ENOMEM; + break; + } + buf_len = info.len - ETH_FCS_LEN; + buf = (u32 *)skb_put(skb, buf_len); + + len = 0; + do { + sz = ocelot_rx_frame_word(ocelot, grp, false, &val); + *buf++ = val; + len += sz; + } while (len < buf_len); + + /* Read the FCS */ + sz = ocelot_rx_frame_word(ocelot, grp, false, &val); + /* Update the statistics if part of the FCS was read before */ + len -= ETH_FCS_LEN - sz; + + if (unlikely(dev->features & NETIF_F_RXFCS)) { + buf = (u32 *)skb_put(skb, ETH_FCS_LEN); + *buf = val; + } + + if (sz < 0) { + err = sz; + break; + } + + if (ocelot->ptp) { + ocelot_ptp_gettime64(&ocelot->ptp_info, &ts); + + tod_in_ns = ktime_set(ts.tv_sec, ts.tv_nsec); + if ((tod_in_ns & 0xffffffff) < info.timestamp) + full_ts_in_ns = (((tod_in_ns >> 32) - 1) << 32) | + info.timestamp; + else + full_ts_in_ns = (tod_in_ns & GENMASK_ULL(63, 32)) | + info.timestamp; + + shhwtstamps = skb_hwtstamps(skb); + memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps)); + shhwtstamps->hwtstamp = full_ts_in_ns; + } + + /* Everything we see on an interface that is in the HW bridge + * has already been forwarded. + */ + if (ocelot->bridge_mask & BIT(info.port)) + skb->offload_fwd_mark = 1; + + skb->protocol = eth_type_trans(skb, dev); + if (!skb_defer_rx_timestamp(skb)) + netif_rx(skb); + dev->stats.rx_bytes += len; + dev->stats.rx_packets++; + } while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)); + + if (err) + while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp)) + ocelot_read_rix(ocelot, QS_XTR_RD, grp); + + return IRQ_HANDLED; +} + +static irqreturn_t ocelot_ptp_rdy_irq_handler(int irq, void *arg) +{ + struct ocelot *ocelot = arg; + + ocelot_get_txtstamp(ocelot); + + return IRQ_HANDLED; +} + +static const struct of_device_id mscc_ocelot_match[] = { + { .compatible = "mscc,vsc7514-switch" }, + { } +}; +MODULE_DEVICE_TABLE(of, mscc_ocelot_match); + +static int ocelot_reset(struct ocelot *ocelot) +{ + int retries = 100; + u32 val; + + regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_INIT], 1); + regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1); + + do { + msleep(1); + regmap_field_read(ocelot->regfields[SYS_RESET_CFG_MEM_INIT], + &val); + } while (val && --retries); + + if (!retries) + return -ETIMEDOUT; + + regmap_field_write(ocelot->regfields[SYS_RESET_CFG_MEM_ENA], 1); + regmap_field_write(ocelot->regfields[SYS_RESET_CFG_CORE_ENA], 1); + + return 0; +} + +/* Watermark encode + * Bit 8: Unit; 0:1, 1:16 + * Bit 7-0: Value to be multiplied with unit + */ +static u16 ocelot_wm_enc(u16 value) +{ + if (value >= BIT(8)) + return BIT(8) | (value / 16); + + return value; +} + +static const struct ocelot_ops ocelot_ops = { + .reset = ocelot_reset, + .wm_enc = ocelot_wm_enc, +}; + +static const struct vcap_field vsc7514_vcap_is2_keys[] = { + /* Common: 46 bits */ + [VCAP_IS2_TYPE] = { 0, 4}, + [VCAP_IS2_HK_FIRST] = { 4, 1}, + [VCAP_IS2_HK_PAG] = { 5, 8}, + [VCAP_IS2_HK_IGR_PORT_MASK] = { 13, 12}, + [VCAP_IS2_HK_RSV2] = { 25, 1}, + [VCAP_IS2_HK_HOST_MATCH] = { 26, 1}, + [VCAP_IS2_HK_L2_MC] = { 27, 1}, + [VCAP_IS2_HK_L2_BC] = { 28, 1}, + [VCAP_IS2_HK_VLAN_TAGGED] = { 29, 1}, + [VCAP_IS2_HK_VID] = { 30, 12}, + [VCAP_IS2_HK_DEI] = { 42, 1}, + [VCAP_IS2_HK_PCP] = { 43, 3}, + /* MAC_ETYPE / MAC_LLC / MAC_SNAP / OAM common */ + [VCAP_IS2_HK_L2_DMAC] = { 46, 48}, + [VCAP_IS2_HK_L2_SMAC] = { 94, 48}, + /* MAC_ETYPE (TYPE=000) */ + [VCAP_IS2_HK_MAC_ETYPE_ETYPE] = {142, 16}, + [VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD0] = {158, 16}, + [VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD1] = {174, 8}, + [VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD2] = {182, 3}, + /* MAC_LLC (TYPE=001) */ + [VCAP_IS2_HK_MAC_LLC_L2_LLC] = {142, 40}, + /* MAC_SNAP (TYPE=010) */ + [VCAP_IS2_HK_MAC_SNAP_L2_SNAP] = {142, 40}, + /* MAC_ARP (TYPE=011) */ + [VCAP_IS2_HK_MAC_ARP_SMAC] = { 46, 48}, + [VCAP_IS2_HK_MAC_ARP_ADDR_SPACE_OK] = { 94, 1}, + [VCAP_IS2_HK_MAC_ARP_PROTO_SPACE_OK] = { 95, 1}, + [VCAP_IS2_HK_MAC_ARP_LEN_OK] = { 96, 1}, + [VCAP_IS2_HK_MAC_ARP_TARGET_MATCH] = { 97, 1}, + [VCAP_IS2_HK_MAC_ARP_SENDER_MATCH] = { 98, 1}, + [VCAP_IS2_HK_MAC_ARP_OPCODE_UNKNOWN] = { 99, 1}, + [VCAP_IS2_HK_MAC_ARP_OPCODE] = {100, 2}, + [VCAP_IS2_HK_MAC_ARP_L3_IP4_DIP] = {102, 32}, + [VCAP_IS2_HK_MAC_ARP_L3_IP4_SIP] = {134, 32}, + [VCAP_IS2_HK_MAC_ARP_DIP_EQ_SIP] = {166, 1}, + /* IP4_TCP_UDP / IP4_OTHER common */ + [VCAP_IS2_HK_IP4] = { 46, 1}, + [VCAP_IS2_HK_L3_FRAGMENT] = { 47, 1}, + [VCAP_IS2_HK_L3_FRAG_OFS_GT0] = { 48, 1}, + [VCAP_IS2_HK_L3_OPTIONS] = { 49, 1}, + [VCAP_IS2_HK_IP4_L3_TTL_GT0] = { 50, 1}, + [VCAP_IS2_HK_L3_TOS] = { 51, 8}, + [VCAP_IS2_HK_L3_IP4_DIP] = { 59, 32}, + [VCAP_IS2_HK_L3_IP4_SIP] = { 91, 32}, + [VCAP_IS2_HK_DIP_EQ_SIP] = {123, 1}, + /* IP4_TCP_UDP (TYPE=100) */ + [VCAP_IS2_HK_TCP] = {124, 1}, + [VCAP_IS2_HK_L4_SPORT] = {125, 16}, + [VCAP_IS2_HK_L4_DPORT] = {141, 16}, + [VCAP_IS2_HK_L4_RNG] = {157, 8}, + [VCAP_IS2_HK_L4_SPORT_EQ_DPORT] = {165, 1}, + [VCAP_IS2_HK_L4_SEQUENCE_EQ0] = {166, 1}, + [VCAP_IS2_HK_L4_URG] = {167, 1}, + [VCAP_IS2_HK_L4_ACK] = {168, 1}, + [VCAP_IS2_HK_L4_PSH] = {169, 1}, + [VCAP_IS2_HK_L4_RST] = {170, 1}, + [VCAP_IS2_HK_L4_SYN] = {171, 1}, + [VCAP_IS2_HK_L4_FIN] = {172, 1}, + [VCAP_IS2_HK_L4_1588_DOM] = {173, 8}, + [VCAP_IS2_HK_L4_1588_VER] = {181, 4}, + /* IP4_OTHER (TYPE=101) */ + [VCAP_IS2_HK_IP4_L3_PROTO] = {124, 8}, + [VCAP_IS2_HK_L3_PAYLOAD] = {132, 56}, + /* IP6_STD (TYPE=110) */ + [VCAP_IS2_HK_IP6_L3_TTL_GT0] = { 46, 1}, + [VCAP_IS2_HK_L3_IP6_SIP] = { 47, 128}, + [VCAP_IS2_HK_IP6_L3_PROTO] = {175, 8}, + /* OAM (TYPE=111) */ + [VCAP_IS2_HK_OAM_MEL_FLAGS] = {142, 7}, + [VCAP_IS2_HK_OAM_VER] = {149, 5}, + [VCAP_IS2_HK_OAM_OPCODE] = {154, 8}, + [VCAP_IS2_HK_OAM_FLAGS] = {162, 8}, + [VCAP_IS2_HK_OAM_MEPID] = {170, 16}, + [VCAP_IS2_HK_OAM_CCM_CNTS_EQ0] = {186, 1}, + [VCAP_IS2_HK_OAM_IS_Y1731] = {187, 1}, +}; + +static const struct vcap_field vsc7514_vcap_is2_actions[] = { + [VCAP_IS2_ACT_HIT_ME_ONCE] = { 0, 1}, + [VCAP_IS2_ACT_CPU_COPY_ENA] = { 1, 1}, + [VCAP_IS2_ACT_CPU_QU_NUM] = { 2, 3}, + [VCAP_IS2_ACT_MASK_MODE] = { 5, 2}, + [VCAP_IS2_ACT_MIRROR_ENA] = { 7, 1}, + [VCAP_IS2_ACT_LRN_DIS] = { 8, 1}, + [VCAP_IS2_ACT_POLICE_ENA] = { 9, 1}, + [VCAP_IS2_ACT_POLICE_IDX] = { 10, 9}, + [VCAP_IS2_ACT_POLICE_VCAP_ONLY] = { 19, 1}, + [VCAP_IS2_ACT_PORT_MASK] = { 20, 11}, + [VCAP_IS2_ACT_REW_OP] = { 31, 9}, + [VCAP_IS2_ACT_SMAC_REPLACE_ENA] = { 40, 1}, + [VCAP_IS2_ACT_RSV] = { 41, 2}, + [VCAP_IS2_ACT_ACL_ID] = { 43, 6}, + [VCAP_IS2_ACT_HIT_CNT] = { 49, 32}, +}; + +static const struct vcap_props vsc7514_vcap_props[] = { + [VCAP_IS2] = { + .tg_width = 2, + .sw_count = 4, + .entry_count = VSC7514_VCAP_IS2_CNT, + .entry_width = VSC7514_VCAP_IS2_ENTRY_WIDTH, + .action_count = VSC7514_VCAP_IS2_CNT + + VSC7514_VCAP_PORT_CNT + 2, + .action_width = 99, + .action_type_width = 1, + .action_table = { + [IS2_ACTION_TYPE_NORMAL] = { + .width = 49, + .count = 2 + }, + [IS2_ACTION_TYPE_SMAC_SIP] = { + .width = 6, + .count = 4 + }, + }, + .counter_words = 4, + .counter_width = 32, + }, +}; + +static struct ptp_clock_info ocelot_ptp_clock_info = { + .owner = THIS_MODULE, + .name = "ocelot ptp", + .max_adj = 0x7fffffff, + .n_alarm = 0, + .n_ext_ts = 0, + .n_per_out = OCELOT_PTP_PINS_NUM, + .n_pins = OCELOT_PTP_PINS_NUM, + .pps = 0, + .gettime64 = ocelot_ptp_gettime64, + .settime64 = ocelot_ptp_settime64, + .adjtime = ocelot_ptp_adjtime, + .adjfine = ocelot_ptp_adjfine, + .verify = ocelot_ptp_verify, + .enable = ocelot_ptp_enable, +}; + +static int mscc_ocelot_probe(struct platform_device *pdev) +{ + struct device_node *np = pdev->dev.of_node; + struct device_node *ports, *portnp; + int err, irq_xtr, irq_ptp_rdy; + struct ocelot *ocelot; + struct regmap *hsio; + unsigned int i; + + struct { + enum ocelot_target id; + char *name; + u8 optional:1; + } io_target[] = { + { SYS, "sys" }, + { REW, "rew" }, + { QSYS, "qsys" }, + { ANA, "ana" }, + { QS, "qs" }, + { S2, "s2" }, + { PTP, "ptp", 1 }, + }; + + if (!np && !pdev->dev.platform_data) + return -ENODEV; + + ocelot = devm_kzalloc(&pdev->dev, sizeof(*ocelot), GFP_KERNEL); + if (!ocelot) + return -ENOMEM; + + platform_set_drvdata(pdev, ocelot); + ocelot->dev = &pdev->dev; + + for (i = 0; i < ARRAY_SIZE(io_target); i++) { + struct regmap *target; + struct resource *res; + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, + io_target[i].name); + + target = ocelot_regmap_init(ocelot, res); + if (IS_ERR(target)) { + if (io_target[i].optional) { + ocelot->targets[io_target[i].id] = NULL; + continue; + } + return PTR_ERR(target); + } + + ocelot->targets[io_target[i].id] = target; + } + + hsio = syscon_regmap_lookup_by_compatible("mscc,ocelot-hsio"); + if (IS_ERR(hsio)) { + dev_err(&pdev->dev, "missing hsio syscon\n"); + return PTR_ERR(hsio); + } + + ocelot->targets[HSIO] = hsio; + + err = ocelot_chip_init(ocelot, &ocelot_ops); + if (err) + return err; + + irq_xtr = platform_get_irq_byname(pdev, "xtr"); + if (irq_xtr < 0) + return -ENODEV; + + err = devm_request_threaded_irq(&pdev->dev, irq_xtr, NULL, + ocelot_xtr_irq_handler, IRQF_ONESHOT, + "frame extraction", ocelot); + if (err) + return err; + + irq_ptp_rdy = platform_get_irq_byname(pdev, "ptp_rdy"); + if (irq_ptp_rdy > 0 && ocelot->targets[PTP]) { + err = devm_request_threaded_irq(&pdev->dev, irq_ptp_rdy, NULL, + ocelot_ptp_rdy_irq_handler, + IRQF_ONESHOT, "ptp ready", + ocelot); + if (err) + return err; + + /* Both the PTP interrupt and the PTP bank are available */ + ocelot->ptp = 1; + } + + ports = of_get_child_by_name(np, "ethernet-ports"); + if (!ports) { + dev_err(&pdev->dev, "no ethernet-ports child node found\n"); + return -ENODEV; + } + + ocelot->num_phys_ports = of_get_child_count(ports); + + ocelot->ports = devm_kcalloc(&pdev->dev, ocelot->num_phys_ports, + sizeof(struct ocelot_port *), GFP_KERNEL); + + ocelot->vcap_is2_keys = vsc7514_vcap_is2_keys; + ocelot->vcap_is2_actions = vsc7514_vcap_is2_actions; + ocelot->vcap = vsc7514_vcap_props; + + ocelot_init(ocelot); + if (ocelot->ptp) { + err = ocelot_init_timestamp(ocelot, &ocelot_ptp_clock_info); + if (err) { + dev_err(ocelot->dev, + "Timestamp initialization failed\n"); + ocelot->ptp = 0; + } + } + + /* No NPI port */ + ocelot_configure_cpu(ocelot, -1, OCELOT_TAG_PREFIX_NONE, + OCELOT_TAG_PREFIX_NONE); + + for_each_available_child_of_node(ports, portnp) { + struct ocelot_port_private *priv; + struct ocelot_port *ocelot_port; + struct device_node *phy_node; + phy_interface_t phy_mode; + struct phy_device *phy; + struct resource *res; + struct phy *serdes; + void __iomem *regs; + char res_name[8]; + u32 port; + + if (of_property_read_u32(portnp, "reg", &port)) + continue; + + snprintf(res_name, sizeof(res_name), "port%d", port); + + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, + res_name); + regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(regs)) + continue; + + phy_node = of_parse_phandle(portnp, "phy-handle", 0); + if (!phy_node) + continue; + + phy = of_phy_find_device(phy_node); + of_node_put(phy_node); + if (!phy) + continue; + + err = ocelot_probe_port(ocelot, port, regs, phy); + if (err) { + of_node_put(portnp); + goto out_put_ports; + } + + ocelot_port = ocelot->ports[port]; + priv = container_of(ocelot_port, struct ocelot_port_private, + port); + + of_get_phy_mode(portnp, &phy_mode); + + ocelot_port->phy_mode = phy_mode; + + switch (ocelot_port->phy_mode) { + case PHY_INTERFACE_MODE_NA: + continue; + case PHY_INTERFACE_MODE_SGMII: + break; + case PHY_INTERFACE_MODE_QSGMII: + /* Ensure clock signals and speed is set on all + * QSGMII links + */ + ocelot_port_writel(ocelot_port, + DEV_CLOCK_CFG_LINK_SPEED + (OCELOT_SPEED_1000), + DEV_CLOCK_CFG); + break; + default: + dev_err(ocelot->dev, + "invalid phy mode for port%d, (Q)SGMII only\n", + port); + of_node_put(portnp); + err = -EINVAL; + goto out_put_ports; + } + + serdes = devm_of_phy_get(ocelot->dev, portnp, NULL); + if (IS_ERR(serdes)) { + err = PTR_ERR(serdes); + if (err == -EPROBE_DEFER) + dev_dbg(ocelot->dev, "deferring probe\n"); + else + dev_err(ocelot->dev, + "missing SerDes phys for port%d\n", + port); + + of_node_put(portnp); + goto out_put_ports; + } + + priv->serdes = serdes; + } + + register_netdevice_notifier(&ocelot_netdevice_nb); + register_switchdev_notifier(&ocelot_switchdev_nb); + register_switchdev_blocking_notifier(&ocelot_switchdev_blocking_nb); + + dev_info(&pdev->dev, "Ocelot switch probed\n"); + +out_put_ports: + of_node_put(ports); + return err; +} + +static int mscc_ocelot_remove(struct platform_device *pdev) +{ + struct ocelot *ocelot = platform_get_drvdata(pdev); + + ocelot_deinit_timestamp(ocelot); + ocelot_deinit(ocelot); + unregister_switchdev_blocking_notifier(&ocelot_switchdev_blocking_nb); + unregister_switchdev_notifier(&ocelot_switchdev_nb); + unregister_netdevice_notifier(&ocelot_netdevice_nb); + + return 0; +} + +static struct platform_driver mscc_ocelot_driver = { + .probe = mscc_ocelot_probe, + .remove = mscc_ocelot_remove, + .driver = { + .name = "ocelot-switch", + .of_match_table = mscc_ocelot_match, + }, +}; + +module_platform_driver(mscc_ocelot_driver); + +MODULE_DESCRIPTION("Microsemi Ocelot switch driver"); +MODULE_AUTHOR("Alexandre Belloni "); +MODULE_LICENSE("Dual MIT/GPL"); --- linux-5.8.0.orig/drivers/net/ethernet/natsemi/macsonic.c +++ linux-5.8.0/drivers/net/ethernet/natsemi/macsonic.c @@ -506,10 +506,14 @@ err = register_netdev(dev); if (err) - goto out; + goto undo_probe; return 0; +undo_probe: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out: free_netdev(dev); @@ -584,12 +588,16 @@ err = register_netdev(ndev); if (err) - goto out; + goto undo_probe; nubus_set_drvdata(board, ndev); return 0; +undo_probe: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); out: free_netdev(ndev); return err; --- linux-5.8.0.orig/drivers/net/ethernet/natsemi/xtsonic.c +++ linux-5.8.0/drivers/net/ethernet/natsemi/xtsonic.c @@ -229,11 +229,14 @@ sonic_msg_init(dev); if ((err = register_netdev(dev))) - goto out1; + goto undo_probe1; return 0; -out1: +undo_probe1: + dma_free_coherent(lp->device, + SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), + lp->descriptors, lp->descriptors_laddr); release_region(dev->base_addr, SONIC_MEM_SIZE); out: free_netdev(dev); --- linux-5.8.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-5.8.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4197,6 +4197,9 @@ return ret; } +#define VXGE_PXE_FIRMWARE "vxge/X3fw-pxe.ncf" +#define VXGE_FIRMWARE "vxge/X3fw.ncf" + static int vxge_probe_fw_update(struct vxgedev *vdev) { u32 maj, min, bld; @@ -4239,9 +4242,9 @@ } } if (gpxe) - fw_name = "vxge/X3fw-pxe.ncf"; + fw_name = VXGE_PXE_FIRMWARE; else - fw_name = "vxge/X3fw.ncf"; + fw_name = VXGE_FIRMWARE; ret = vxge_fw_upgrade(vdev, fw_name, 0); /* -EINVAL and -ENOENT are not fatal errors for flashing firmware on @@ -4846,3 +4849,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-5.8.0.orig/drivers/net/ethernet/netronome/nfp/flower/main.c +++ linux-5.8.0/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -860,9 +860,6 @@ skb_queue_purge(&app_priv->cmsg_skbs_low); flush_work(&app_priv->cmsg_work); - flow_indr_dev_unregister(nfp_flower_indr_setup_tc_cb, app, - nfp_flower_setup_indr_tc_release); - if (app_priv->flower_ext_feats & NFP_FL_FEATS_VF_RLIM) nfp_flower_qos_cleanup(app); @@ -951,6 +948,9 @@ static void nfp_flower_stop(struct nfp_app *app) { nfp_tunnel_config_stop(app); + + flow_indr_dev_unregister(nfp_flower_indr_setup_tc_cb, app, + nfp_flower_setup_indr_tc_release); } static int --- linux-5.8.0.orig/drivers/net/ethernet/netronome/nfp/flower/metadata.c +++ linux-5.8.0/drivers/net/ethernet/netronome/nfp/flower/metadata.c @@ -327,8 +327,14 @@ goto err_free_ctx_entry; } + /* Do net allocate a mask-id for pre_tun_rules. These flows are used to + * configure the pre_tun table and are never actually send to the + * firmware as an add-flow message. This causes the mask-id allocation + * on the firmware to get out of sync if allocated here. + */ new_mask_id = 0; - if (!nfp_check_mask_add(app, nfp_flow->mask_data, + if (!nfp_flow->pre_tun_rule.dev && + !nfp_check_mask_add(app, nfp_flow->mask_data, nfp_flow->meta.mask_len, &nfp_flow->meta.flags, &new_mask_id)) { NL_SET_ERR_MSG_MOD(extack, "invalid entry: cannot allocate a new mask id"); @@ -359,7 +365,8 @@ goto err_remove_mask; } - if (!nfp_check_mask_remove(app, nfp_flow->mask_data, + if (!nfp_flow->pre_tun_rule.dev && + !nfp_check_mask_remove(app, nfp_flow->mask_data, nfp_flow->meta.mask_len, NULL, &new_mask_id)) { NL_SET_ERR_MSG_MOD(extack, "invalid entry: cannot release mask id"); @@ -374,8 +381,10 @@ return 0; err_remove_mask: - nfp_check_mask_remove(app, nfp_flow->mask_data, nfp_flow->meta.mask_len, - NULL, &new_mask_id); + if (!nfp_flow->pre_tun_rule.dev) + nfp_check_mask_remove(app, nfp_flow->mask_data, + nfp_flow->meta.mask_len, + NULL, &new_mask_id); err_remove_rhash: WARN_ON_ONCE(rhashtable_remove_fast(&priv->stats_ctx_table, &ctx_entry->ht_node, @@ -406,9 +415,10 @@ __nfp_modify_flow_metadata(priv, nfp_flow); - nfp_check_mask_remove(app, nfp_flow->mask_data, - nfp_flow->meta.mask_len, &nfp_flow->meta.flags, - &new_mask_id); + if (!nfp_flow->pre_tun_rule.dev) + nfp_check_mask_remove(app, nfp_flow->mask_data, + nfp_flow->meta.mask_len, &nfp_flow->meta.flags, + &new_mask_id); /* Update flow payload with mask ids. */ nfp_flow->unmasked_data[NFP_FL_MASK_ID_LOCATION] = new_mask_id; --- linux-5.8.0.orig/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +++ linux-5.8.0/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c @@ -16,8 +16,9 @@ #define NFP_FL_MAX_ROUTES 32 #define NFP_TUN_PRE_TUN_RULE_LIMIT 32 -#define NFP_TUN_PRE_TUN_RULE_DEL 0x1 -#define NFP_TUN_PRE_TUN_IDX_BIT 0x8 +#define NFP_TUN_PRE_TUN_RULE_DEL BIT(0) +#define NFP_TUN_PRE_TUN_IDX_BIT BIT(3) +#define NFP_TUN_PRE_TUN_IPV6_BIT BIT(7) /** * struct nfp_tun_pre_run_rule - rule matched before decap @@ -61,6 +62,7 @@ * @flags: options part of the request * @tun_info.ipv6: dest IPv6 address of active route * @tun_info.egress_port: port the encapsulated packet egressed + * @tun_info.extra: reserved for future use * @tun_info: tunnels that have sent traffic in reported period */ struct nfp_tun_active_tuns_v6 { @@ -70,6 +72,7 @@ struct route_ip_info_v6 { struct in6_addr ipv6; __be32 egress_port; + __be32 extra[2]; } tun_info[]; }; @@ -1266,6 +1269,7 @@ { struct nfp_flower_priv *app_priv = app->priv; struct nfp_tun_offloaded_mac *mac_entry; + struct nfp_flower_meta_tci *key_meta; struct nfp_tun_pre_tun_rule payload; struct net_device *internal_dev; int err; @@ -1288,6 +1292,15 @@ if (!mac_entry) return -ENOENT; + /* Set/clear IPV6 bit. cpu_to_be16() swap will lead to MSB being + * set/clear for port_idx. + */ + key_meta = (struct nfp_flower_meta_tci *)flow->unmasked_data; + if (key_meta->nfp_flow_key_layer & NFP_FLOWER_LAYER_IPV6) + mac_entry->index |= NFP_TUN_PRE_TUN_IPV6_BIT; + else + mac_entry->index &= ~NFP_TUN_PRE_TUN_IPV6_BIT; + payload.port_idx = cpu_to_be16(mac_entry->index); /* Copy mac id and vlan to flow - dev may not exist at delete time. */ --- linux-5.8.0.orig/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c @@ -829,8 +829,8 @@ struct nfp_eth_table_port *eth_port; struct nfp_port *port; - param->active_fec = ETHTOOL_FEC_NONE_BIT; - param->fec = ETHTOOL_FEC_NONE_BIT; + param->active_fec = ETHTOOL_FEC_NONE; + param->fec = ETHTOOL_FEC_NONE; port = nfp_port_from_netdev(netdev); eth_port = nfp_port_get_eth_port(port); --- linux-5.8.0.orig/drivers/net/ethernet/pasemi/pasemi_mac.c +++ linux-5.8.0/drivers/net/ethernet/pasemi/pasemi_mac.c @@ -1078,16 +1078,20 @@ mac->tx = pasemi_mac_setup_tx_resources(dev); - if (!mac->tx) + if (!mac->tx) { + ret = -ENOMEM; goto out_tx_ring; + } /* We might already have allocated rings in case mtu was changed * before interface was brought up. */ if (dev->mtu > 1500 && !mac->num_cs) { pasemi_mac_setup_csrings(mac); - if (!mac->num_cs) + if (!mac->num_cs) { + ret = -ENOMEM; goto out_tx_ring; + } } /* Zero out rmon counters */ --- linux-5.8.0.orig/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c +++ linux-5.8.0/drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c @@ -247,12 +247,11 @@ goto err_out_pci_disable_device; } - pci_set_master(pdev); pcie_print_link_status(pdev); err = ionic_map_bars(ionic); if (err) - goto err_out_pci_clear_master; + goto err_out_pci_disable_device; /* Configure the device */ err = ionic_setup(ionic); @@ -260,6 +259,7 @@ dev_err(dev, "Cannot setup device: %d, aborting\n", err); goto err_out_unmap_bars; } + pci_set_master(pdev); err = ionic_identify(ionic); if (err) { @@ -350,6 +350,7 @@ ionic_reset(ionic); err_out_teardown: ionic_dev_teardown(ionic); + pci_clear_master(pdev); /* Don't fail the probe for these errors, keep * the hw interface around for inspection */ @@ -358,8 +359,6 @@ err_out_unmap_bars: ionic_unmap_bars(ionic); pci_release_regions(pdev); -err_out_pci_clear_master: - pci_clear_master(pdev); err_out_pci_disable_device: pci_disable_device(pdev); err_out_debugfs_del_dev: @@ -389,9 +388,9 @@ ionic_port_reset(ionic); ionic_reset(ionic); ionic_dev_teardown(ionic); + pci_clear_master(pdev); ionic_unmap_bars(ionic); pci_release_regions(pdev); - pci_clear_master(pdev); pci_disable_device(pdev); ionic_debugfs_del_dev(ionic); mutex_destroy(&ionic->dev_cmd_lock); --- linux-5.8.0.orig/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c @@ -126,6 +126,11 @@ ethtool_link_ksettings_zero_link_mode(ks, supported); + if (!idev->port_info) { + netdev_err(netdev, "port_info not initialized\n"); + return -EOPNOTSUPP; + } + /* The port_info data is found in a DMA space that the NIC keeps * up-to-date, so there's no need to request the data from the * NIC, we already have it in our memory space. --- linux-5.8.0.orig/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ linux-5.8.0/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -103,6 +103,12 @@ link_up = link_status == IONIC_PORT_OPER_STATUS_UP; if (link_up) { + if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) { + mutex_lock(&lif->queue_lock); + ionic_start_queues(lif); + mutex_unlock(&lif->queue_lock); + } + if (!netif_carrier_ok(netdev)) { u32 link_speed; @@ -112,12 +118,6 @@ link_speed / 1000); netif_carrier_on(netdev); } - - if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) { - mutex_lock(&lif->queue_lock); - ionic_start_queues(lif); - mutex_unlock(&lif->queue_lock); - } } else { if (netif_carrier_ok(netdev)) { netdev_info(netdev, "Link down\n"); @@ -723,7 +723,7 @@ eid = le64_to_cpu(comp->event.eid); /* Have we run out of new completions to process? */ - if (eid <= lif->last_eid) + if ((s64)(eid - lif->last_eid) <= 0) return false; lif->last_eid = eid; @@ -1495,7 +1495,6 @@ if (lif->rxqcqs) { for (i = 0; i < lif->nxqs; i++) { ionic_lif_qcq_deinit(lif, lif->rxqcqs[i].qcq); - ionic_rx_flush(&lif->rxqcqs[i].qcq->cq); ionic_rx_empty(&lif->rxqcqs[i].qcq->q); } } --- linux-5.8.0.orig/drivers/net/ethernet/pensando/ionic/ionic_txrx.c +++ linux-5.8.0/drivers/net/ethernet/pensando/ionic/ionic_txrx.c @@ -266,18 +266,6 @@ return work_done; } -void ionic_rx_flush(struct ionic_cq *cq) -{ - struct ionic_dev *idev = &cq->lif->ionic->idev; - u32 work_done; - - work_done = ionic_rx_walk_cq(cq, cq->num_descs); - - if (work_done) - ionic_intr_credits(idev->intr_ctrl, cq->bound_intr->index, - work_done, IONIC_INTR_CRED_RESET_COALESCE); -} - static struct page *ionic_rx_page_alloc(struct ionic_queue *q, dma_addr_t *dma_addr) { @@ -349,7 +337,7 @@ unsigned int i, j; unsigned int len; - len = netdev->mtu + ETH_HLEN; + len = netdev->mtu + ETH_HLEN + VLAN_HLEN; nfrags = round_up(len, PAGE_SIZE) / PAGE_SIZE; for (i = ionic_q_space_avail(q); i; i--) { @@ -1001,15 +989,17 @@ { int sg_elems = q->lif->qtype_info[IONIC_QTYPE_TXQ].max_sg_elems; struct ionic_tx_stats *stats = q_to_tx_stats(q); + int ndescs; int err; - /* If TSO, need roundup(skb->len/mss) descs */ + /* Each desc is mss long max, so a descriptor for each gso_seg */ if (skb_is_gso(skb)) - return (skb->len / skb_shinfo(skb)->gso_size) + 1; + ndescs = skb_shinfo(skb)->gso_segs; + else + ndescs = 1; - /* If non-TSO, just need 1 desc and nr_frags sg elems */ if (skb_shinfo(skb)->nr_frags <= sg_elems) - return 1; + return ndescs; /* Too many frags, so linearize */ err = skb_linearize(skb); @@ -1018,8 +1008,7 @@ stats->linearize++; - /* Need 1 desc and zero sg elems */ - return 1; + return ndescs; } static int ionic_maybe_stop_tx(struct ionic_queue *q, int ndescs) --- linux-5.8.0.orig/drivers/net/ethernet/pensando/ionic/ionic_txrx.h +++ linux-5.8.0/drivers/net/ethernet/pensando/ionic/ionic_txrx.h @@ -4,7 +4,6 @@ #ifndef _IONIC_TXRX_H_ #define _IONIC_TXRX_H_ -void ionic_rx_flush(struct ionic_cq *cq); void ionic_tx_flush(struct ionic_cq *cq); void ionic_rx_fill(struct ionic_queue *q); --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/Kconfig +++ linux-5.8.0/drivers/net/ethernet/qlogic/Kconfig @@ -78,6 +78,7 @@ depends on PCI select ZLIB_INFLATE select CRC8 + select CRC32 select NET_DEVLINK help This enables the support for ... --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -564,11 +564,6 @@ .ndo_set_features = netxen_set_features, }; -static inline bool netxen_function_zero(struct pci_dev *pdev) -{ - return (PCI_FUNC(pdev->devfn) == 0) ? true : false; -} - static inline void netxen_set_interrupt_mode(struct netxen_adapter *adapter, u32 mode) { @@ -664,7 +659,7 @@ netxen_initialize_interrupt_registers(adapter); netxen_set_msix_bit(pdev, 0); - if (netxen_function_zero(pdev)) { + if (adapter->portnum == 0) { if (!netxen_setup_msi_interrupts(adapter, num_msix)) netxen_set_interrupt_mode(adapter, NETXEN_MSI_MODE); else --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_cxt.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_cxt.c @@ -1673,9 +1673,9 @@ ilog2(rounded_conn_num)); STORE_RT_REG_AGG(p_hwfn, SRC_REG_FIRSTFREE_RT_OFFSET, - p_hwfn->p_cxt_mngr->first_free); + p_hwfn->p_cxt_mngr->src_t2.first_free); STORE_RT_REG_AGG(p_hwfn, SRC_REG_LASTFREE_RT_OFFSET, - p_hwfn->p_cxt_mngr->last_free); + p_hwfn->p_cxt_mngr->src_t2.last_free); } /* Timers PF */ @@ -2355,6 +2355,11 @@ elem_size = SRQ_CXT_SIZE; p_blk = &p_cli->pf_blks[SRQ_BLK]; break; + case QED_ELEM_XRC_SRQ: + p_cli = &p_hwfn->p_cxt_mngr->clients[ILT_CLI_TSDM]; + elem_size = XRC_SRQ_CXT_SIZE; + p_blk = &p_cli->pf_blks[SRQ_BLK]; + break; case QED_ELEM_TASK: p_cli = &p_hwfn->p_cxt_mngr->clients[ILT_CLI_CDUT]; elem_size = TYPE1_TASK_CXT_SIZE(p_hwfn); --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_cxt.h +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_cxt.h @@ -352,9 +352,6 @@ /* SRC T2 */ struct qed_src_t2 src_t2; - u32 t2_num_pages; - u64 first_free; - u64 last_free; /* total number of SRQ's for this hwfn */ u32 srq_count; --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_dev.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_dev.c @@ -4191,7 +4191,8 @@ cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) | BIT(QED_MF_LLH_PROTO_CLSS) | BIT(QED_MF_LL2_NON_UNICAST) | - BIT(QED_MF_INTER_PF_SWITCH); + BIT(QED_MF_INTER_PF_SWITCH) | + BIT(QED_MF_DISABLE_ARFS); break; case NVM_CFG1_GLOB_MF_MODE_DEFAULT: cdev->mf_bits = BIT(QED_MF_LLH_MAC_CLSS) | @@ -4204,6 +4205,14 @@ DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n", cdev->mf_bits); + + /* In CMT the PF is unknown when the GFS block processes the + * packet. Therefore cannot use searcher as it has a per PF + * database, and thus ARFS must be disabled. + * + */ + if (QED_IS_CMT(cdev)) + cdev->mf_bits |= BIT(QED_MF_DISABLE_ARFS); } DP_INFO(p_hwfn, "Multi function mode is 0x%lx\n", --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_iwarp.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_iwarp.c @@ -2746,14 +2746,18 @@ iwarp_info->partial_fpdus = kcalloc((u16)p_hwfn->p_rdma_info->num_qps, sizeof(*iwarp_info->partial_fpdus), GFP_KERNEL); - if (!iwarp_info->partial_fpdus) + if (!iwarp_info->partial_fpdus) { + rc = -ENOMEM; goto err; + } iwarp_info->max_num_partial_fpdus = (u16)p_hwfn->p_rdma_info->num_qps; iwarp_info->mpa_intermediate_buf = kzalloc(buff_size, GFP_KERNEL); - if (!iwarp_info->mpa_intermediate_buf) + if (!iwarp_info->mpa_intermediate_buf) { + rc = -ENOMEM; goto err; + } /* The mpa_bufs array serves for pending RX packets received on the * mpa ll2 that don't have place on the tx ring and require later @@ -2763,8 +2767,10 @@ iwarp_info->mpa_bufs = kcalloc(data.input.rx_num_desc, sizeof(*iwarp_info->mpa_bufs), GFP_KERNEL); - if (!iwarp_info->mpa_bufs) + if (!iwarp_info->mpa_bufs) { + rc = -ENOMEM; goto err; + } INIT_LIST_HEAD(&iwarp_info->mpa_buf_pending_list); INIT_LIST_HEAD(&iwarp_info->mpa_buf_list); --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_l2.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_l2.c @@ -2001,6 +2001,9 @@ struct qed_ptt *p_ptt, struct qed_arfs_config_params *p_cfg_params) { + if (test_bit(QED_MF_DISABLE_ARFS, &p_hwfn->cdev->mf_bits)) + return; + if (p_cfg_params->mode != QED_FILTER_CONFIG_MODE_DISABLE) { qed_gft_config(p_hwfn, p_ptt, p_hwfn->rel_pf_id, p_cfg_params->tcp, --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_main.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_main.c @@ -289,6 +289,8 @@ dev_info->fw_eng = FW_ENGINEERING_VERSION; dev_info->b_inter_pf_switch = test_bit(QED_MF_INTER_PF_SWITCH, &cdev->mf_bits); + if (!test_bit(QED_MF_DISABLE_ARFS, &cdev->mf_bits)) + dev_info->b_arfs_capable = true; dev_info->tx_switching = true; if (hw_info->b_wol_support == QED_WOL_SUPPORT_PME) --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_rdma.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_rdma.c @@ -404,6 +404,7 @@ qed_rdma_bmap_free(p_hwfn, &p_hwfn->p_rdma_info->srq_map, 1); qed_rdma_bmap_free(p_hwfn, &p_hwfn->p_rdma_info->real_cid_map, 1); qed_rdma_bmap_free(p_hwfn, &p_hwfn->p_rdma_info->xrc_srq_map, 1); + qed_rdma_bmap_free(p_hwfn, &p_hwfn->p_rdma_info->xrcd_map, 1); kfree(p_rdma_info->port); kfree(p_rdma_info->dev); --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qed/qed_sriov.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qed/qed_sriov.c @@ -97,6 +97,7 @@ p_ramrod->personality = PERSONALITY_ETH; break; case QED_PCI_ETH_ROCE: + case QED_PCI_ETH_IWARP: p_ramrod->personality = PERSONALITY_RDMA_AND_ETH; break; default: --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qede/qede_filter.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qede/qede_filter.c @@ -336,6 +336,9 @@ { int i; + if (!edev->dev_info.common.b_arfs_capable) + return -EINVAL; + edev->arfs = vzalloc(sizeof(*edev->arfs)); if (!edev->arfs) return -ENOMEM; --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qede/qede_fp.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qede/qede_fp.c @@ -1738,6 +1738,11 @@ ntohs(udp_hdr(skb)->dest) != gnv_port)) return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } else if (l4_proto == IPPROTO_IPIP) { + /* IPIP tunnels are unknown to the device or at least unsupported natively, + * offloads for them can't be done trivially, so disable them for such skb. + */ + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); } } --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qede/qede_main.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -827,7 +827,7 @@ NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_TC; - if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) + if (edev->dev_info.common.b_arfs_capable) hw_features |= NETIF_F_NTUPLE; if (edev->dev_info.common.vxlan_enable || @@ -2278,7 +2278,7 @@ qede_vlan_mark_nonconfigured(edev); edev->ops->fastpath_stop(edev->cdev); - if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) { + if (edev->dev_info.common.b_arfs_capable) { qede_poll_for_freeing_arfs_filters(edev); qede_free_arfs(edev); } @@ -2345,10 +2345,9 @@ if (rc) goto err2; - if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) { - rc = qede_alloc_arfs(edev); - if (rc) - DP_NOTICE(edev, "aRFS memory allocation failed\n"); + if (qede_alloc_arfs(edev)) { + edev->ndev->features &= ~NETIF_F_NTUPLE; + edev->dev_info.common.b_arfs_capable = false; } qede_napi_add_enable(edev); --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c @@ -2251,7 +2251,8 @@ /* Boot either flash image or firmware image from host file system */ if (qlcnic_load_fw_file == 1) { - if (qlcnic_83xx_load_fw_image_from_host(adapter)) + err = qlcnic_83xx_load_fw_image_from_host(adapter); + if (err) return err; } else { QLC_SHARED_REG_WR32(adapter, QLCNIC_FW_IMG_VALID, --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -2509,6 +2509,7 @@ qlcnic_sriov_vf_register_map(ahw); break; default: + err = -EINVAL; goto err_out_free_hw_res; } --- linux-5.8.0.orig/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c +++ linux-5.8.0/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c @@ -1426,6 +1426,7 @@ if (fw_dump->tmpl_hdr == NULL || current_version > prev_version) { vfree(fw_dump->tmpl_hdr); + fw_dump->tmpl_hdr = NULL; if (qlcnic_83xx_md_check_extended_dump_capability(adapter)) extended = !qlcnic_83xx_extend_md_capab(adapter); @@ -1444,6 +1445,8 @@ struct qlcnic_83xx_dump_template_hdr *hdr; hdr = fw_dump->tmpl_hdr; + if (!hdr) + return; hdr->drv_cap_mask = 0x1f; fw_dump->cap_mask = 0x1f; dev_info(&pdev->dev, --- linux-5.8.0.orig/drivers/net/ethernet/qualcomm/emac/emac.c +++ linux-5.8.0/drivers/net/ethernet/qualcomm/emac/emac.c @@ -474,13 +474,24 @@ ret = clk_prepare_enable(adpt->clk[EMAC_CLK_CFG_AHB]); if (ret) - return ret; + goto disable_clk_axi; ret = clk_set_rate(adpt->clk[EMAC_CLK_HIGH_SPEED], 19200000); if (ret) - return ret; + goto disable_clk_cfg_ahb; - return clk_prepare_enable(adpt->clk[EMAC_CLK_HIGH_SPEED]); + ret = clk_prepare_enable(adpt->clk[EMAC_CLK_HIGH_SPEED]); + if (ret) + goto disable_clk_cfg_ahb; + + return 0; + +disable_clk_cfg_ahb: + clk_disable_unprepare(adpt->clk[EMAC_CLK_CFG_AHB]); +disable_clk_axi: + clk_disable_unprepare(adpt->clk[EMAC_CLK_AXI]); + + return ret; } /* Enable clocks; needs emac_clks_phase1_init to be called before */ --- linux-5.8.0.orig/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +++ linux-5.8.0/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c @@ -188,6 +188,11 @@ dev = skb->dev; port = rmnet_get_port_rcu(dev); + if (unlikely(!port)) { + atomic_long_inc(&skb->dev->rx_nohandler); + kfree_skb(skb); + goto done; + } switch (port->rmnet_mode) { case RMNET_EPMODE_VND: --- linux-5.8.0.orig/drivers/net/ethernet/realtek/r8169_main.c +++ linux-5.8.0/drivers/net/ethernet/realtek/r8169_main.c @@ -1031,7 +1031,7 @@ { /* based on RTL8168FP_OOBMAC_BASE in vendor driver */ if (tp->mac_version == RTL_GIGA_MAC_VER_52 && type == ERIAR_OOB) - *cmd |= 0x7f0 << 18; + *cmd |= 0xf70 << 18; } DECLARE_RTL_COND(rtl_eriar_cond) @@ -2113,11 +2113,18 @@ void r8169_apply_firmware(struct rtl8169_private *tp) { + int val; + /* TODO: release firmware if rtl_fw_write_firmware signals failure. */ if (tp->rtl_fw) { rtl_fw_write_firmware(tp, tp->rtl_fw); /* At least one firmware doesn't reset tp->ocp_base. */ tp->ocp_base = OCP_STD_PHY_BASE; + + /* PHY soft reset may still be in progress */ + phy_read_poll_timeout(tp->phydev, MII_BMCR, val, + !(val & BMCR_RESET), + 50000, 600000, true); } } @@ -2272,7 +2279,9 @@ } switch (tp->mac_version) { - case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_33: + case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26: + case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30: + case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33: case RTL_GIGA_MAC_VER_37: case RTL_GIGA_MAC_VER_39: case RTL_GIGA_MAC_VER_43: @@ -2302,7 +2311,9 @@ static void rtl_pll_power_up(struct rtl8169_private *tp) { switch (tp->mac_version) { - case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_33: + case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26: + case RTL_GIGA_MAC_VER_29 ... RTL_GIGA_MAC_VER_30: + case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33: case RTL_GIGA_MAC_VER_37: case RTL_GIGA_MAC_VER_39: case RTL_GIGA_MAC_VER_43: @@ -2386,14 +2397,14 @@ static void r8168e_hw_jumbo_enable(struct rtl8169_private *tp) { - RTL_W8(tp, MaxTxPacketSize, 0x3f); + RTL_W8(tp, MaxTxPacketSize, 0x24); RTL_W8(tp, Config3, RTL_R8(tp, Config3) | Jumbo_En0); RTL_W8(tp, Config4, RTL_R8(tp, Config4) | 0x01); } static void r8168e_hw_jumbo_disable(struct rtl8169_private *tp) { - RTL_W8(tp, MaxTxPacketSize, 0x0c); + RTL_W8(tp, MaxTxPacketSize, 0x3f); RTL_W8(tp, Config3, RTL_R8(tp, Config3) & ~Jumbo_En0); RTL_W8(tp, Config4, RTL_R8(tp, Config4) & ~0x01); } @@ -2951,7 +2962,7 @@ { 0x08, 0x0001, 0x0002 }, { 0x09, 0x0000, 0x0080 }, { 0x19, 0x0000, 0x0224 }, - { 0x00, 0x0000, 0x0004 }, + { 0x00, 0x0000, 0x0008 }, { 0x0c, 0x3df0, 0x0200 }, }; @@ -2968,7 +2979,7 @@ { 0x06, 0x00c0, 0x0020 }, { 0x0f, 0xffff, 0x5200 }, { 0x19, 0x0000, 0x0224 }, - { 0x00, 0x0000, 0x0004 }, + { 0x00, 0x0000, 0x0008 }, { 0x0c, 0x3df0, 0x0200 }, }; @@ -4051,9 +4062,71 @@ return -EIO; } -static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb) +static bool rtl_skb_is_udp(struct sk_buff *skb) { - return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34; + int no = skb_network_offset(skb); + struct ipv6hdr *i6h, _i6h; + struct iphdr *ih, _ih; + + switch (vlan_get_protocol(skb)) { + case htons(ETH_P_IP): + ih = skb_header_pointer(skb, no, sizeof(_ih), &_ih); + return ih && ih->protocol == IPPROTO_UDP; + case htons(ETH_P_IPV6): + i6h = skb_header_pointer(skb, no, sizeof(_i6h), &_i6h); + return i6h && i6h->nexthdr == IPPROTO_UDP; + default: + return false; + } +} + +#define RTL_MIN_PATCH_LEN 47 + +/* see rtl8125_get_patch_pad_len() in r8125 vendor driver */ +static unsigned int rtl8125_quirk_udp_padto(struct rtl8169_private *tp, + struct sk_buff *skb) +{ + unsigned int padto = 0, len = skb->len; + + if (rtl_is_8125(tp) && len < 128 + RTL_MIN_PATCH_LEN && + rtl_skb_is_udp(skb) && skb_transport_header_was_set(skb)) { + unsigned int trans_data_len = skb_tail_pointer(skb) - + skb_transport_header(skb); + + if (trans_data_len >= offsetof(struct udphdr, len) && + trans_data_len < RTL_MIN_PATCH_LEN) { + u16 dest = ntohs(udp_hdr(skb)->dest); + + /* dest is a standard PTP port */ + if (dest == 319 || dest == 320) + padto = len + RTL_MIN_PATCH_LEN - trans_data_len; + } + + if (trans_data_len < sizeof(struct udphdr)) + padto = max_t(unsigned int, padto, + len + sizeof(struct udphdr) - trans_data_len); + } + + return padto; +} + +static unsigned int rtl_quirk_packet_padto(struct rtl8169_private *tp, + struct sk_buff *skb) +{ + unsigned int padto; + + padto = rtl8125_quirk_udp_padto(tp, skb); + + switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_34: + case RTL_GIGA_MAC_VER_60: + case RTL_GIGA_MAC_VER_61: + padto = max_t(unsigned int, padto, ETH_ZLEN); + default: + break; + } + + return padto; } static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts) @@ -4125,8 +4198,10 @@ opts[1] |= transport_offset << TCPHO_SHIFT; } else { - if (unlikely(rtl_test_hw_pad_bug(tp, skb))) - return !eth_skb_pad(skb); + unsigned int padto = rtl_quirk_packet_padto(tp, skb); + + /* skb_padto would free the skb on error */ + return !__skb_put_padto(skb, padto, false); } return true; @@ -4305,18 +4380,12 @@ rtl_chip_supports_csum_v2(tp)) features &= ~NETIF_F_ALL_TSO; } else if (skb->ip_summed == CHECKSUM_PARTIAL) { - if (skb->len < ETH_ZLEN) { - switch (tp->mac_version) { - case RTL_GIGA_MAC_VER_11: - case RTL_GIGA_MAC_VER_12: - case RTL_GIGA_MAC_VER_17: - case RTL_GIGA_MAC_VER_34: - features &= ~NETIF_F_CSUM_MASK; - break; - default: - break; - } - } + /* work around hw bug on some chip versions */ + if (skb->len < ETH_ZLEN) + features &= ~NETIF_F_CSUM_MASK; + + if (rtl_quirk_packet_padto(tp, skb)) + features &= ~NETIF_F_CSUM_MASK; if (transport_offset > TCPHO_MAX && rtl_chip_supports_csum_v2(tp)) @@ -4552,7 +4621,7 @@ } rtl_irq_disable(tp); - napi_schedule_irqoff(&tp->napi); + napi_schedule(&tp->napi); out: rtl_ack_events(tp, status); @@ -4666,9 +4735,9 @@ cancel_work_sync(&tp->wk.work); - phy_disconnect(tp->phydev); + free_irq(pci_irq_vector(pdev, 0), tp); - pci_free_irq(pdev, 0, tp); + phy_disconnect(tp->phydev); dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray, tp->RxPhyAddr); @@ -4719,8 +4788,8 @@ rtl_request_firmware(tp); - retval = pci_request_irq(pdev, 0, rtl8169_interrupt, NULL, tp, - dev->name); + retval = request_irq(pci_irq_vector(pdev, 0), rtl8169_interrupt, + IRQF_SHARED, dev->name, tp); if (retval < 0) goto err_release_fw_2; @@ -4752,7 +4821,7 @@ return retval; err_free_irq: - pci_free_irq(pdev, 0, tp); + free_irq(pci_irq_vector(pdev, 0), tp); err_release_fw_2: rtl_release_firmware(tp); rtl8169_rx_clear(tp); @@ -4864,6 +4933,10 @@ if (netif_running(tp->dev)) __rtl8169_resume(tp); + /* Reportedly at least Asus X453MA truncates packets otherwise */ + if (tp->mac_version == RTL_GIGA_MAC_VER_37) + rtl_init_rxcfg(tp); + return 0; } @@ -5281,8 +5354,7 @@ /* Disable ASPM completely as that cause random device stop working * problems as well as full system hangs for some PCIe devices users. */ - rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | - PCIE_LINK_STATE_L1); + rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_1); tp->aspm_manageable = !rc; /* enable device (incl. PCI PM wakeup and hotplug setup) */ --- linux-5.8.0.orig/drivers/net/ethernet/renesas/ravb_main.c +++ linux-5.8.0/drivers/net/ethernet/renesas/ravb_main.c @@ -1747,12 +1747,16 @@ config.flags = 0; config.tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF; - if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_V2_L2_EVENT) + switch (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE) { + case RAVB_RXTSTAMP_TYPE_V2_L2_EVENT: config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT; - else if (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE_ALL) + break; + case RAVB_RXTSTAMP_TYPE_ALL: config.rx_filter = HWTSTAMP_FILTER_ALL; - else + break; + default: config.rx_filter = HWTSTAMP_FILTER_NONE; + } return copy_to_user(req->ifr_data, &config, sizeof(config)) ? -EFAULT : 0; --- linux-5.8.0.orig/drivers/net/ethernet/renesas/sh_eth.c +++ linux-5.8.0/drivers/net/ethernet/renesas/sh_eth.c @@ -550,6 +550,8 @@ EESR_TDE, .fdr_value = 0x0000070f, + .trscer_err_mask = DESC_I_RINT8 | DESC_I_RINT5, + .no_psr = 1, .apr = 1, .mpr = 1, @@ -770,6 +772,8 @@ .fdr_value = 0x0000070f, + .trscer_err_mask = DESC_I_RINT8 | DESC_I_RINT5, + .apr = 1, .mpr = 1, .tpauser = 1, @@ -1079,6 +1083,9 @@ EESIPR_CEEFIP | EESIPR_CELFIP | EESIPR_RRFIP | EESIPR_RTLFIP | EESIPR_RTSFIP | EESIPR_PREIP | EESIPR_CERFIP, + + .trscer_err_mask = DESC_I_RINT8, + .tsu = 1, .dual_port = 1, }; @@ -2596,10 +2603,10 @@ /* Free all the skbuffs in the Rx queue and the DMA buffer. */ sh_eth_ring_free(ndev); - pm_runtime_put_sync(&mdp->pdev->dev); - mdp->is_opened = 0; + pm_runtime_put(&mdp->pdev->dev); + return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/sgi/ioc3-eth.c +++ linux-5.8.0/drivers/net/ethernet/sgi/ioc3-eth.c @@ -951,7 +951,7 @@ dma_free_coherent(ip->dma_dev, RX_RING_SIZE, ip->rxr, ip->rxr_dma); if (ip->tx_ring) - dma_free_coherent(ip->dma_dev, TX_RING_SIZE, ip->tx_ring, + dma_free_coherent(ip->dma_dev, TX_RING_SIZE + SZ_16K - 1, ip->tx_ring, ip->txr_dma); out_free: free_netdev(dev); @@ -964,7 +964,7 @@ struct ioc3_private *ip = netdev_priv(dev); dma_free_coherent(ip->dma_dev, RX_RING_SIZE, ip->rxr, ip->rxr_dma); - dma_free_coherent(ip->dma_dev, TX_RING_SIZE, ip->tx_ring, ip->txr_dma); + dma_free_coherent(ip->dma_dev, TX_RING_SIZE + SZ_16K - 1, ip->tx_ring, ip->txr_dma); unregister_netdev(dev); del_timer_sync(&ip->ioc3_timer); --- linux-5.8.0.orig/drivers/net/ethernet/socionext/netsec.c +++ linux-5.8.0/drivers/net/ethernet/socionext/netsec.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -1707,14 +1708,17 @@ goto err1; /* set phy power down */ - data = netsec_phy_read(priv->mii_bus, priv->phy_addr, MII_BMCR) | - BMCR_PDOWN; - netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, data); + data = netsec_phy_read(priv->mii_bus, priv->phy_addr, MII_BMCR); + netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, + data | BMCR_PDOWN); ret = netsec_reset_hardware(priv, true); if (ret) goto err2; + /* Restore phy power state */ + netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, data); + spin_lock_init(&priv->desc_ring[NETSEC_RING_TX].lock); spin_lock_init(&priv->desc_ring[NETSEC_RING_RX].lock); @@ -1836,6 +1840,14 @@ static int netsec_of_probe(struct platform_device *pdev, struct netsec_priv *priv, u32 *phy_addr) { + int err; + + err = of_get_phy_mode(pdev->dev.of_node, &priv->phy_interface); + if (err) { + dev_err(&pdev->dev, "missing required property 'phy-mode'\n"); + return err; + } + priv->phy_np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_np) { dev_err(&pdev->dev, "missing required property 'phy-handle'\n"); @@ -1862,6 +1874,14 @@ if (!IS_ENABLED(CONFIG_ACPI)) return -ENODEV; + /* ACPI systems are assumed to configure the PHY in firmware, so + * there is really no need to discover the PHY mode from the DSDT. + * Since firmware is known to exist in the field that configures the + * PHY correctly but passes the wrong mode string in the phy-mode + * device property, we have no choice but to ignore it. + */ + priv->phy_interface = PHY_INTERFACE_MODE_NA; + ret = device_property_read_u32(&pdev->dev, "phy-channel", phy_addr); if (ret) { dev_err(&pdev->dev, @@ -1998,13 +2018,6 @@ priv->msg_enable = NETIF_MSG_TX_ERR | NETIF_MSG_HW | NETIF_MSG_DRV | NETIF_MSG_LINK | NETIF_MSG_PROBE; - priv->phy_interface = device_get_phy_mode(&pdev->dev); - if ((int)priv->phy_interface < 0) { - dev_err(&pdev->dev, "missing required property 'phy-mode'\n"); - ret = -ENODEV; - goto free_ndev; - } - priv->ioaddr = devm_ioremap(&pdev->dev, mmio_res->start, resource_size(mmio_res)); if (!priv->ioaddr) { --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c @@ -247,13 +247,7 @@ goto err_parse_dt; } - ret = dma_set_mask_and_coherent(&pdev->dev, - DMA_BIT_MASK(dwmac->ops->addr_width)); - if (ret) { - dev_err(&pdev->dev, "DMA mask set failed\n"); - goto err_dma_mask; - } - + plat_dat->addr64 = dwmac->ops->addr_width; plat_dat->init = imx_dwmac_init; plat_dat->exit = imx_dwmac_exit; plat_dat->fix_mac_speed = imx_dwmac_fix_speed; @@ -273,7 +267,6 @@ err_dwmac_init: err_drv_probe: imx_dwmac_exit(pdev, plat_dat->bsp_priv); -err_dma_mask: err_parse_dt: err_match_data: stmmac_remove_config_dt(pdev, plat_dat); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c @@ -232,9 +232,11 @@ static int intel_mgbe_common_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { + char clk_name[20]; int ret; int i; + plat->phy_addr = -1; plat->clk_csr = 5; plat->has_gmac = 0; plat->has_gmac4 = 1; @@ -297,8 +299,10 @@ plat->ptp_max_adj = plat->clk_ptp_rate; /* Set system clock */ + sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev)); + plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev, - "stmmac-clk", NULL, 0, + clk_name, NULL, 0, plat->clk_ptp_rate); if (IS_ERR(plat->stmmac_clk)) { @@ -338,7 +342,6 @@ struct plat_stmmacenet_data *plat) { plat->bus_id = 1; - plat->phy_addr = 0; plat->phy_interface = PHY_INTERFACE_MODE_SGMII; plat->serdes_powerup = intel_serdes_powerup; @@ -355,7 +358,6 @@ struct plat_stmmacenet_data *plat) { plat->bus_id = 1; - plat->phy_addr = 0; plat->phy_interface = PHY_INTERFACE_MODE_RGMII; return ehl_common_data(pdev, plat); @@ -369,7 +371,7 @@ struct plat_stmmacenet_data *plat) { plat->bus_id = 2; - plat->phy_addr = 1; + plat->addr64 = 32; return ehl_common_data(pdev, plat); } @@ -401,7 +403,7 @@ struct plat_stmmacenet_data *plat) { plat->bus_id = 3; - plat->phy_addr = 1; + plat->addr64 = 32; return ehl_common_data(pdev, plat); } @@ -443,7 +445,6 @@ struct plat_stmmacenet_data *plat) { plat->bus_id = 1; - plat->phy_addr = 0; plat->phy_interface = PHY_INTERFACE_MODE_SGMII; plat->serdes_powerup = intel_serdes_powerup; plat->serdes_powerdown = intel_serdes_powerdown; @@ -653,7 +654,6 @@ pci_free_irq_vectors(pdev); - clk_disable_unprepare(priv->plat->stmmac_clk); clk_unregister_fixed_rate(priv->plat->stmmac_clk); pcim_iounmap_regions(pdev, BIT(0)); @@ -712,6 +712,8 @@ #define PCI_DEVICE_ID_INTEL_EHL_PSE1_RGMII1G_ID 0x4bb0 #define PCI_DEVICE_ID_INTEL_EHL_PSE1_SGMII1G_ID 0x4bb1 #define PCI_DEVICE_ID_INTEL_EHL_PSE1_SGMII2G5_ID 0x4bb2 +#define PCI_DEVICE_ID_INTEL_TGLH_SGMII1G_0_ID 0x43ac +#define PCI_DEVICE_ID_INTEL_TGLH_SGMII1G_1_ID 0x43a2 #define PCI_DEVICE_ID_INTEL_TGL_SGMII1G_ID 0xa0ac static const struct pci_device_id intel_eth_pci_id_table[] = { @@ -726,6 +728,8 @@ { PCI_DEVICE_DATA(INTEL, EHL_PSE1_SGMII1G_ID, &ehl_pse1_sgmii1g_info) }, { PCI_DEVICE_DATA(INTEL, EHL_PSE1_SGMII2G5_ID, &ehl_pse1_sgmii1g_info) }, { PCI_DEVICE_DATA(INTEL, TGL_SGMII1G_ID, &tgl_sgmii1g_info) }, + { PCI_DEVICE_DATA(INTEL, TGLH_SGMII1G_0_ID, &tgl_sgmii1g_info) }, + { PCI_DEVICE_DATA(INTEL, TGLH_SGMII1G_1_ID, &tgl_sgmii1g_info) }, {} }; MODULE_DEVICE_TABLE(pci, intel_eth_pci_id_table); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c @@ -351,6 +351,7 @@ plat_dat->has_gmac = true; plat_dat->bsp_priv = gmac; plat_dat->fix_mac_speed = ipq806x_gmac_fix_mac_speed; + plat_dat->multicast_filter_bins = 0; err = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res); if (err) --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c @@ -30,7 +30,6 @@ #define PRG_ETH0_EXT_RMII_MODE 4 /* mux to choose between fclk_div2 (bit unset) and mpll2 (bit set) */ -#define PRG_ETH0_CLK_M250_SEL_SHIFT 4 #define PRG_ETH0_CLK_M250_SEL_MASK GENMASK(4, 4) /* TX clock delay in ns = "8ns / 4 * tx_dly_val" (where 8ns are exactly one @@ -170,8 +169,9 @@ } clk_configs->m250_mux.reg = dwmac->regs + PRG_ETH0; - clk_configs->m250_mux.shift = PRG_ETH0_CLK_M250_SEL_SHIFT; - clk_configs->m250_mux.mask = PRG_ETH0_CLK_M250_SEL_MASK; + clk_configs->m250_mux.shift = __ffs(PRG_ETH0_CLK_M250_SEL_MASK); + clk_configs->m250_mux.mask = PRG_ETH0_CLK_M250_SEL_MASK >> + clk_configs->m250_mux.shift; clk = meson8b_dwmac_register_clk(dwmac, "m250_sel", mux_parent_names, MUX_CLK_NUM_PARENTS, &clk_mux_ops, &clk_configs->m250_mux.hw); @@ -316,7 +316,7 @@ return -EINVAL; }; - if (rx_dly_config & PRG_ETH0_ADJ_ENABLE) { + if (delay_config & PRG_ETH0_ADJ_ENABLE) { if (!dwmac->timing_adj_clk) { dev_err(dwmac->dev, "The timing-adjustment clock is mandatory for the RX delay re-timing\n"); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c @@ -64,6 +64,7 @@ * @variant: reference to the current board variant * @regmap: regmap for using the syscon * @internal_phy_powered: Does the internal PHY is enabled + * @use_internal_phy: Is the internal PHY selected for use * @mux_handle: Internal pointer used by mdio-mux lib */ struct sunxi_priv_data { @@ -74,6 +75,7 @@ const struct emac_variant *variant; struct regmap_field *regmap_field; bool internal_phy_powered; + bool use_internal_phy; void *mux_handle; }; @@ -539,8 +541,11 @@ .dma_interrupt = sun8i_dwmac_dma_interrupt, }; +static int sun8i_dwmac_power_internal_phy(struct stmmac_priv *priv); + static int sun8i_dwmac_init(struct platform_device *pdev, void *priv) { + struct net_device *ndev = platform_get_drvdata(pdev); struct sunxi_priv_data *gmac = priv; int ret; @@ -554,13 +559,25 @@ ret = clk_prepare_enable(gmac->tx_clk); if (ret) { - if (gmac->regulator) - regulator_disable(gmac->regulator); dev_err(&pdev->dev, "Could not enable AHB clock\n"); - return ret; + goto err_disable_regulator; + } + + if (gmac->use_internal_phy) { + ret = sun8i_dwmac_power_internal_phy(netdev_priv(ndev)); + if (ret) + goto err_disable_clk; } return 0; + +err_disable_clk: + clk_disable_unprepare(gmac->tx_clk); +err_disable_regulator: + if (gmac->regulator) + regulator_disable(gmac->regulator); + + return ret; } static void sun8i_dwmac_core_init(struct mac_device_info *hw, @@ -831,7 +848,6 @@ struct sunxi_priv_data *gmac = priv->plat->bsp_priv; u32 reg, val; int ret = 0; - bool need_power_ephy = false; if (current_child ^ desired_child) { regmap_field_read(gmac->regmap_field, ®); @@ -839,13 +855,12 @@ case DWMAC_SUN8I_MDIO_MUX_INTERNAL_ID: dev_info(priv->device, "Switch mux to internal PHY"); val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SELECT; - - need_power_ephy = true; + gmac->use_internal_phy = true; break; case DWMAC_SUN8I_MDIO_MUX_EXTERNAL_ID: dev_info(priv->device, "Switch mux to external PHY"); val = (reg & ~H3_EPHY_MUX_MASK) | H3_EPHY_SHUTDOWN; - need_power_ephy = false; + gmac->use_internal_phy = false; break; default: dev_err(priv->device, "Invalid child ID %x\n", @@ -853,7 +868,7 @@ return -EINVAL; } regmap_field_write(gmac->regmap_field, val); - if (need_power_ephy) { + if (gmac->use_internal_phy) { ret = sun8i_dwmac_power_internal_phy(priv); if (ret) return ret; @@ -883,22 +898,23 @@ return ret; } -static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv) +static int sun8i_dwmac_set_syscon(struct device *dev, + struct plat_stmmacenet_data *plat) { - struct sunxi_priv_data *gmac = priv->plat->bsp_priv; - struct device_node *node = priv->device->of_node; + struct sunxi_priv_data *gmac = plat->bsp_priv; + struct device_node *node = dev->of_node; int ret; u32 reg, val; ret = regmap_field_read(gmac->regmap_field, &val); if (ret) { - dev_err(priv->device, "Fail to read from regmap field.\n"); + dev_err(dev, "Fail to read from regmap field.\n"); return ret; } reg = gmac->variant->default_syscon_value; if (reg != val) - dev_warn(priv->device, + dev_warn(dev, "Current syscon value is not the default %x (expect %x)\n", val, reg); @@ -911,9 +927,9 @@ /* Force EPHY xtal frequency to 24MHz. */ reg |= H3_EPHY_CLK_SEL; - ret = of_mdio_parse_addr(priv->device, priv->plat->phy_node); + ret = of_mdio_parse_addr(dev, plat->phy_node); if (ret < 0) { - dev_err(priv->device, "Could not parse MDIO addr\n"); + dev_err(dev, "Could not parse MDIO addr\n"); return ret; } /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY @@ -929,17 +945,17 @@ if (!of_property_read_u32(node, "allwinner,tx-delay-ps", &val)) { if (val % 100) { - dev_err(priv->device, "tx-delay must be a multiple of 100\n"); + dev_err(dev, "tx-delay must be a multiple of 100\n"); return -EINVAL; } val /= 100; - dev_dbg(priv->device, "set tx-delay to %x\n", val); + dev_dbg(dev, "set tx-delay to %x\n", val); if (val <= gmac->variant->tx_delay_max) { reg &= ~(gmac->variant->tx_delay_max << SYSCON_ETXDC_SHIFT); reg |= (val << SYSCON_ETXDC_SHIFT); } else { - dev_err(priv->device, "Invalid TX clock delay: %d\n", + dev_err(dev, "Invalid TX clock delay: %d\n", val); return -EINVAL; } @@ -947,17 +963,17 @@ if (!of_property_read_u32(node, "allwinner,rx-delay-ps", &val)) { if (val % 100) { - dev_err(priv->device, "rx-delay must be a multiple of 100\n"); + dev_err(dev, "rx-delay must be a multiple of 100\n"); return -EINVAL; } val /= 100; - dev_dbg(priv->device, "set rx-delay to %x\n", val); + dev_dbg(dev, "set rx-delay to %x\n", val); if (val <= gmac->variant->rx_delay_max) { reg &= ~(gmac->variant->rx_delay_max << SYSCON_ERXDC_SHIFT); reg |= (val << SYSCON_ERXDC_SHIFT); } else { - dev_err(priv->device, "Invalid RX clock delay: %d\n", + dev_err(dev, "Invalid RX clock delay: %d\n", val); return -EINVAL; } @@ -968,7 +984,7 @@ if (gmac->variant->support_rmii) reg &= ~SYSCON_RMII_EN; - switch (priv->plat->interface) { + switch (plat->interface) { case PHY_INTERFACE_MODE_MII: /* default */ break; @@ -982,8 +998,8 @@ reg |= SYSCON_RMII_EN | SYSCON_ETCS_EXT_GMII; break; default: - dev_err(priv->device, "Unsupported interface mode: %s", - phy_modes(priv->plat->interface)); + dev_err(dev, "Unsupported interface mode: %s", + phy_modes(plat->interface)); return -EINVAL; } @@ -1004,17 +1020,10 @@ struct sunxi_priv_data *gmac = priv; if (gmac->variant->soc_has_internal_phy) { - /* sun8i_dwmac_exit could be called with mdiomux uninit */ - if (gmac->mux_handle) - mdio_mux_uninit(gmac->mux_handle); if (gmac->internal_phy_powered) sun8i_dwmac_unpower_internal_phy(gmac); } - sun8i_dwmac_unset_syscon(gmac); - - reset_control_put(gmac->rst_ephy); - clk_disable_unprepare(gmac->tx_clk); if (gmac->regulator) @@ -1049,16 +1058,11 @@ { struct mac_device_info *mac; struct stmmac_priv *priv = ppriv; - int ret; mac = devm_kzalloc(priv->device, sizeof(*mac), GFP_KERNEL); if (!mac) return NULL; - ret = sun8i_dwmac_set_syscon(priv); - if (ret) - return NULL; - mac->pcsr = priv->ioaddr; mac->mac = &sun8i_dwmac_ops; mac->dma = &sun8i_dwmac_dma_ops; @@ -1134,10 +1138,6 @@ if (ret) return ret; - plat_dat = stmmac_probe_config_dt(pdev, &stmmac_res.mac); - if (IS_ERR(plat_dat)) - return PTR_ERR(plat_dat); - gmac = devm_kzalloc(dev, sizeof(*gmac), GFP_KERNEL); if (!gmac) return -ENOMEM; @@ -1201,11 +1201,15 @@ ret = of_get_phy_mode(dev->of_node, &interface); if (ret) return -EINVAL; - plat_dat->interface = interface; + + plat_dat = stmmac_probe_config_dt(pdev, &stmmac_res.mac); + if (IS_ERR(plat_dat)) + return PTR_ERR(plat_dat); /* platform data specifying hardware features and callbacks. * hardware features were copied from Allwinner drivers. */ + plat_dat->interface = interface; plat_dat->rx_coe = STMMAC_RX_COE_TYPE2; plat_dat->tx_coe = 1; plat_dat->has_sun8i = true; @@ -1213,10 +1217,16 @@ plat_dat->init = sun8i_dwmac_init; plat_dat->exit = sun8i_dwmac_exit; plat_dat->setup = sun8i_dwmac_setup; + plat_dat->tx_fifo_size = 4096; + plat_dat->rx_fifo_size = 16384; + + ret = sun8i_dwmac_set_syscon(&pdev->dev, plat_dat); + if (ret) + goto dwmac_deconfig; ret = sun8i_dwmac_init(pdev, plat_dat->bsp_priv); if (ret) - return ret; + goto dwmac_syscon; ret = stmmac_dvr_probe(&pdev->dev, plat_dat, &stmmac_res); if (ret) @@ -1230,7 +1240,7 @@ if (gmac->variant->soc_has_internal_phy) { ret = get_ephy_nodes(priv); if (ret) - goto dwmac_exit; + goto dwmac_remove; ret = sun8i_dwmac_register_mdio_mux(priv); if (ret) { dev_err(&pdev->dev, "Failed to register mux\n"); @@ -1239,15 +1249,42 @@ } else { ret = sun8i_dwmac_reset(priv); if (ret) - goto dwmac_exit; + goto dwmac_remove; } return ret; dwmac_mux: - sun8i_dwmac_unset_syscon(gmac); + reset_control_put(gmac->rst_ephy); + clk_put(gmac->ephy_clk); +dwmac_remove: + stmmac_dvr_remove(&pdev->dev); dwmac_exit: + sun8i_dwmac_exit(pdev, gmac); +dwmac_syscon: + sun8i_dwmac_unset_syscon(gmac); +dwmac_deconfig: + stmmac_remove_config_dt(pdev, plat_dat); + + return ret; +} + +static int sun8i_dwmac_remove(struct platform_device *pdev) +{ + struct net_device *ndev = platform_get_drvdata(pdev); + struct stmmac_priv *priv = netdev_priv(ndev); + struct sunxi_priv_data *gmac = priv->plat->bsp_priv; + + if (gmac->variant->soc_has_internal_phy) { + mdio_mux_uninit(gmac->mux_handle); + sun8i_dwmac_unpower_internal_phy(gmac); + reset_control_put(gmac->rst_ephy); + clk_put(gmac->ephy_clk); + } + stmmac_pltfr_remove(pdev); -return ret; + sun8i_dwmac_unset_syscon(gmac); + + return 0; } static const struct of_device_id sun8i_dwmac_match[] = { @@ -1269,7 +1306,7 @@ static struct platform_driver sun8i_dwmac_driver = { .probe = sun8i_dwmac_probe, - .remove = stmmac_pltfr_remove, + .remove = sun8i_dwmac_remove, .driver = { .name = "dwmac-sun8i", .pm = &stmmac_pltfr_pm_ops, --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c @@ -164,6 +164,9 @@ value = GMAC_FRAME_FILTER_PR | GMAC_FRAME_FILTER_PCF; } else if (dev->flags & IFF_ALLMULTI) { value = GMAC_FRAME_FILTER_PM; /* pass all multi */ + } else if (!netdev_mc_empty(dev) && (mcbitslog2 == 0)) { + /* Fall back to all multicast if we've no filter */ + value = GMAC_FRAME_FILTER_PM; } else if (!netdev_mc_empty(dev)) { struct netdev_hw_addr *ha; --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -1160,7 +1160,6 @@ .pcs_get_adv_lp = dwmac4_get_adv_lp, .debug = dwmac4_debug, .set_filter = dwmac4_set_filter, - .flex_pps_config = dwmac5_flex_pps_config, .set_mac_loopback = dwmac4_set_mac_loopback, .update_vlan_hash = dwmac4_update_vlan_hash, .sarc_configure = dwmac4_sarc_configure, @@ -1202,6 +1201,7 @@ .pcs_get_adv_lp = dwmac4_get_adv_lp, .debug = dwmac4_debug, .set_filter = dwmac4_set_filter, + .flex_pps_config = dwmac5_flex_pps_config, .set_mac_loopback = dwmac4_set_mac_loopback, .update_vlan_hash = dwmac4_update_vlan_hash, .sarc_configure = dwmac4_sarc_configure, --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c @@ -500,10 +500,15 @@ return 0; } -static void dwmac4_set_sec_addr(struct dma_desc *p, dma_addr_t addr) +static void dwmac4_set_sec_addr(struct dma_desc *p, dma_addr_t addr, bool buf2_valid) { p->des2 = cpu_to_le32(lower_32_bits(addr)); - p->des3 = cpu_to_le32(upper_32_bits(addr) | RDES3_BUFFER2_VALID_ADDR); + p->des3 = cpu_to_le32(upper_32_bits(addr)); + + if (buf2_valid) + p->des3 |= cpu_to_le32(RDES3_BUFFER2_VALID_ADDR); + else + p->des3 &= cpu_to_le32(~RDES3_BUFFER2_VALID_ADDR); } static void dwmac4_set_tbs(struct dma_edesc *p, u32 sec, u32 nsec) --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c @@ -124,6 +124,23 @@ ioaddr + DMA_CHAN_INTR_ENA(chan)); } +static void dwmac410_dma_init_channel(void __iomem *ioaddr, + struct stmmac_dma_cfg *dma_cfg, u32 chan) +{ + u32 value; + + /* common channel control register config */ + value = readl(ioaddr + DMA_CHAN_CONTROL(chan)); + if (dma_cfg->pblx8) + value = value | DMA_BUS_MODE_PBL; + + writel(value, ioaddr + DMA_CHAN_CONTROL(chan)); + + /* Mask interrupts by writing to CSR7 */ + writel(DMA_CHAN_INTR_DEFAULT_MASK_4_10, + ioaddr + DMA_CHAN_INTR_ENA(chan)); +} + static void dwmac4_dma_init(void __iomem *ioaddr, struct stmmac_dma_cfg *dma_cfg, int atds) { @@ -523,7 +540,7 @@ const struct stmmac_dma_ops dwmac410_dma_ops = { .reset = dwmac4_dma_reset, .init = dwmac4_dma_init, - .init_chan = dwmac4_dma_init_channel, + .init_chan = dwmac410_dma_init_channel, .init_rx_chan = dwmac4_dma_init_rx_chan, .init_tx_chan = dwmac4_dma_init_tx_chan, .axi = dwmac4_dma_axi, --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c @@ -22,7 +22,7 @@ return readl_poll_timeout(ioaddr + DMA_BUS_MODE, value, !(value & DMA_BUS_MODE_SFT_RESET), - 10000, 100000); + 10000, 1000000); } void dwmac4_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan) @@ -53,10 +53,6 @@ value &= ~DMA_CONTROL_ST; writel(value, ioaddr + DMA_CHAN_TX_CONTROL(chan)); - - value = readl(ioaddr + GMAC_CONFIG); - value &= ~GMAC_CONFIG_TE; - writel(value, ioaddr + GMAC_CONFIG); } void dwmac4_dma_start_rx(void __iomem *ioaddr, u32 chan) --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac5.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac5.c @@ -572,68 +572,24 @@ int dwmac5_est_configure(void __iomem *ioaddr, struct stmmac_est *cfg, unsigned int ptp_rate) { - u32 speed, total_offset, offset, ctrl, ctr_low; - u32 extcfg = readl(ioaddr + GMAC_EXT_CONFIG); - u32 mac_cfg = readl(ioaddr + GMAC_CONFIG); int i, ret = 0x0; - u64 total_ctr; - - if (extcfg & GMAC_CONFIG_EIPG_EN) { - offset = (extcfg & GMAC_CONFIG_EIPG) >> GMAC_CONFIG_EIPG_SHIFT; - offset = 104 + (offset * 8); - } else { - offset = (mac_cfg & GMAC_CONFIG_IPG) >> GMAC_CONFIG_IPG_SHIFT; - offset = 96 - (offset * 8); - } - - speed = mac_cfg & (GMAC_CONFIG_PS | GMAC_CONFIG_FES); - speed = speed >> GMAC_CONFIG_FES_SHIFT; - - switch (speed) { - case 0x0: - offset = offset * 1000; /* 1G */ - break; - case 0x1: - offset = offset * 400; /* 2.5G */ - break; - case 0x2: - offset = offset * 100000; /* 10M */ - break; - case 0x3: - offset = offset * 10000; /* 100M */ - break; - default: - return -EINVAL; - } - - offset = offset / 1000; + u32 ctrl; ret |= dwmac5_est_write(ioaddr, BTR_LOW, cfg->btr[0], false); ret |= dwmac5_est_write(ioaddr, BTR_HIGH, cfg->btr[1], false); ret |= dwmac5_est_write(ioaddr, TER, cfg->ter, false); ret |= dwmac5_est_write(ioaddr, LLR, cfg->gcl_size, false); + ret |= dwmac5_est_write(ioaddr, CTR_LOW, cfg->ctr[0], false); + ret |= dwmac5_est_write(ioaddr, CTR_HIGH, cfg->ctr[1], false); if (ret) return ret; - total_offset = 0; for (i = 0; i < cfg->gcl_size; i++) { - ret = dwmac5_est_write(ioaddr, i, cfg->gcl[i] + offset, true); + ret = dwmac5_est_write(ioaddr, i, cfg->gcl[i], true); if (ret) return ret; - - total_offset += offset; } - total_ctr = cfg->ctr[0] + cfg->ctr[1] * 1000000000ULL; - total_ctr += total_offset; - - ctr_low = do_div(total_ctr, 1000000000); - - ret |= dwmac5_est_write(ioaddr, CTR_LOW, ctr_low, false); - ret |= dwmac5_est_write(ioaddr, CTR_HIGH, total_ctr, false); - if (ret) - return ret; - ctrl = readl(ioaddr + MTL_EST_CONTROL); ctrl &= ~PTOV; ctrl |= ((1000000000 / ptp_rate) * 6) << PTOV_SHIFT; --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwmac_lib.c @@ -23,7 +23,7 @@ return readl_poll_timeout(ioaddr + DMA_BUS_MODE, value, !(value & DMA_BUS_MODE_SFT_RESET), - 10000, 100000); + 10000, 200000); } /* CSR1 enables the transmit DMA to check for new descriptor */ --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c @@ -293,7 +293,7 @@ return 0; } -static void dwxgmac2_set_sec_addr(struct dma_desc *p, dma_addr_t addr) +static void dwxgmac2_set_sec_addr(struct dma_desc *p, dma_addr_t addr, bool is_valid) { p->des2 = cpu_to_le32(lower_32_bits(addr)); p->des3 = cpu_to_le32(upper_32_bits(addr)); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -91,7 +91,7 @@ int (*get_rx_hash)(struct dma_desc *p, u32 *hash, enum pkt_hash_types *type); int (*get_rx_header_len)(struct dma_desc *p, unsigned int *len); - void (*set_sec_addr)(struct dma_desc *p, dma_addr_t addr); + void (*set_sec_addr)(struct dma_desc *p, dma_addr_t addr, bool buf2_valid); void (*set_sarc)(struct dma_desc *p, u32 sarc_type); void (*set_vlan_tag)(struct dma_desc *p, u16 tag, u16 inner_tag, u32 inner_type); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -203,6 +203,8 @@ int eee_enabled; int eee_active; int tx_lpi_timer; + int tx_lpi_enabled; + int eee_tw_timer; unsigned int mode; unsigned int chain_mode; int extend_desc; --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -652,6 +652,7 @@ edata->eee_enabled = priv->eee_enabled; edata->eee_active = priv->eee_active; edata->tx_lpi_timer = priv->tx_lpi_timer; + edata->tx_lpi_enabled = priv->tx_lpi_enabled; return phylink_ethtool_get_eee(priv->phylink, edata); } @@ -662,24 +663,26 @@ struct stmmac_priv *priv = netdev_priv(dev); int ret; - if (!edata->eee_enabled) { + if (!priv->dma_cap.eee) + return -EOPNOTSUPP; + + if (priv->tx_lpi_enabled != edata->tx_lpi_enabled) + netdev_warn(priv->dev, + "Setting EEE tx-lpi is not supported\n"); + + if (!edata->eee_enabled) stmmac_disable_eee_mode(priv); - } else { - /* We are asking for enabling the EEE but it is safe - * to verify all by invoking the eee_init function. - * In case of failure it will return an error. - */ - edata->eee_enabled = stmmac_eee_init(priv); - if (!edata->eee_enabled) - return -EOPNOTSUPP; - } ret = phylink_ethtool_set_eee(priv->phylink, edata); if (ret) return ret; - priv->eee_enabled = edata->eee_enabled; - priv->tx_lpi_timer = edata->tx_lpi_timer; + if (edata->eee_enabled && + priv->tx_lpi_timer != edata->tx_lpi_timer) { + priv->tx_lpi_timer = edata->tx_lpi_timer; + stmmac_eee_init(priv); + } + return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -94,7 +94,7 @@ static int eee_timer = STMMAC_DEFAULT_LPI_TIMER; module_param(eee_timer, int, 0644); MODULE_PARM_DESC(eee_timer, "LPI tx expiration time in msec"); -#define STMMAC_LPI_T(x) (jiffies + msecs_to_jiffies(x)) +#define STMMAC_LPI_T(x) (jiffies + usecs_to_jiffies(x)) /* By default the driver will use the ring mode to manage tx and rx descriptors, * but allow user to force to use the chain instead of the ring @@ -176,32 +176,6 @@ } } -/** - * stmmac_stop_all_queues - Stop all queues - * @priv: driver private structure - */ -static void stmmac_stop_all_queues(struct stmmac_priv *priv) -{ - u32 tx_queues_cnt = priv->plat->tx_queues_to_use; - u32 queue; - - for (queue = 0; queue < tx_queues_cnt; queue++) - netif_tx_stop_queue(netdev_get_tx_queue(priv->dev, queue)); -} - -/** - * stmmac_start_all_queues - Start all queues - * @priv: driver private structure - */ -static void stmmac_start_all_queues(struct stmmac_priv *priv) -{ - u32 tx_queues_cnt = priv->plat->tx_queues_to_use; - u32 queue; - - for (queue = 0; queue < tx_queues_cnt; queue++) - netif_tx_start_queue(netdev_get_tx_queue(priv->dev, queue)); -} - static void stmmac_service_event_schedule(struct stmmac_priv *priv) { if (!test_bit(STMMAC_DOWN, &priv->state) && @@ -370,7 +344,7 @@ struct stmmac_priv *priv = from_timer(priv, t, eee_ctrl_timer); stmmac_enable_eee_mode(priv); - mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer)); + mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer)); } /** @@ -383,7 +357,7 @@ */ bool stmmac_eee_init(struct stmmac_priv *priv) { - int tx_lpi_timer = priv->tx_lpi_timer; + int eee_tw_timer = priv->eee_tw_timer; /* Using PCS we cannot dial with the phy registers at this stage * so we do not support extra feature like EEE. @@ -403,7 +377,7 @@ if (priv->eee_enabled) { netdev_dbg(priv->dev, "disable EEE\n"); del_timer_sync(&priv->eee_ctrl_timer); - stmmac_set_eee_timer(priv, priv->hw, 0, tx_lpi_timer); + stmmac_set_eee_timer(priv, priv->hw, 0, eee_tw_timer); } mutex_unlock(&priv->lock); return false; @@ -411,11 +385,12 @@ if (priv->eee_active && !priv->eee_enabled) { timer_setup(&priv->eee_ctrl_timer, stmmac_eee_ctrl_timer, 0); - mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer)); stmmac_set_eee_timer(priv, priv->hw, STMMAC_DEFAULT_LIT_LS, - tx_lpi_timer); + eee_tw_timer); } + mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer)); + mutex_unlock(&priv->lock); netdev_dbg(priv->dev, "Energy-Efficient Ethernet initialized\n"); return true; @@ -930,6 +905,7 @@ stmmac_mac_set(priv, priv->ioaddr, false); priv->eee_active = false; + priv->tx_lpi_enabled = false; stmmac_eee_init(priv); stmmac_set_eee_pls(priv, priv->hw, false); } @@ -1027,6 +1003,7 @@ if (phy && priv->dma_cap.eee) { priv->eee_active = phy_init_eee(phy, 1) >= 0; priv->eee_enabled = stmmac_eee_init(priv); + priv->tx_lpi_enabled = priv->eee_enabled; stmmac_set_eee_pls(priv, priv->hw, true); } } @@ -1298,9 +1275,10 @@ return -ENOMEM; buf->sec_addr = page_pool_get_dma_addr(buf->sec_page); - stmmac_set_desc_sec_addr(priv, p, buf->sec_addr); + stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, true); } else { buf->sec_page = NULL; + stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, false); } buf->addr = page_pool_get_dma_addr(buf->page); @@ -1549,6 +1527,19 @@ } /** + * stmmac_free_tx_skbufs - free TX skb buffers + * @priv: private structure + */ +static void stmmac_free_tx_skbufs(struct stmmac_priv *priv) +{ + u32 tx_queue_cnt = priv->plat->tx_queues_to_use; + u32 queue; + + for (queue = 0; queue < tx_queue_cnt; queue++) + dma_free_tx_skbufs(priv, queue); +} + +/** * free_dma_rx_desc_resources - free RX dma desc resources * @priv: private structure */ @@ -2057,7 +2048,7 @@ if ((priv->eee_enabled) && (!priv->tx_path_in_lpi_mode)) { stmmac_enable_eee_mode(priv); - mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(eee_timer)); + mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer)); } /* We still have pending packets, let's call for a new scheduling */ @@ -2156,7 +2147,7 @@ spin_lock_irqsave(&ch->lock, flags); stmmac_disable_dma_irq(priv, priv->ioaddr, chan, 1, 0); spin_unlock_irqrestore(&ch->lock, flags); - __napi_schedule_irqoff(&ch->rx_napi); + __napi_schedule(&ch->rx_napi); } } @@ -2165,7 +2156,7 @@ spin_lock_irqsave(&ch->lock, flags); stmmac_disable_dma_irq(priv, priv->ioaddr, chan, 0, 1); spin_unlock_irqrestore(&ch->lock, flags); - __napi_schedule_irqoff(&ch->tx_napi); + __napi_schedule(&ch->tx_napi); } } @@ -2690,7 +2681,11 @@ netdev_warn(priv->dev, "PTP init failed\n"); } - priv->tx_lpi_timer = STMMAC_DEFAULT_TWT_LS; + priv->eee_tw_timer = STMMAC_DEFAULT_TWT_LS; + + /* Convert the timer from msec to usec */ + if (!priv->tx_lpi_timer) + priv->tx_lpi_timer = eee_timer * 1000; if (priv->use_riwt) { if (!priv->rx_riwt) @@ -2729,6 +2724,10 @@ stmmac_enable_tbs(priv, priv->ioaddr, enable, chan); } + /* Configure real RX and TX queues */ + netif_set_real_num_rx_queues(dev, priv->plat->rx_queues_to_use); + netif_set_real_num_tx_queues(dev, priv->plat->tx_queues_to_use); + /* Start the ball rolling... */ stmmac_start_all_dma(priv); @@ -2855,7 +2854,7 @@ } stmmac_enable_all_queues(priv); - stmmac_start_all_queues(priv); + netif_tx_start_all_queues(priv->dev); return 0; @@ -2889,15 +2888,10 @@ struct stmmac_priv *priv = netdev_priv(dev); u32 chan; - if (priv->eee_enabled) - del_timer_sync(&priv->eee_ctrl_timer); - /* Stop and disconnect the PHY */ phylink_stop(priv->phylink); phylink_disconnect_phy(priv->phylink); - stmmac_stop_all_queues(priv); - stmmac_disable_all_queues(priv); for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++) @@ -2910,6 +2904,11 @@ if (priv->lpi_irq > 0) free_irq(priv->lpi_irq, dev); + if (priv->eee_enabled) { + priv->tx_path_in_lpi_mode = false; + del_timer_sync(&priv->eee_ctrl_timer); + } + /* Stop TX/RX DMA and clear the descriptors */ stmmac_stop_all_dma(priv); @@ -3595,7 +3594,10 @@ DMA_FROM_DEVICE); stmmac_set_desc_addr(priv, p, buf->addr); - stmmac_set_desc_sec_addr(priv, p, buf->sec_addr); + if (priv->sph) + stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, true); + else + stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, false); stmmac_refill_desc3(priv, rx_q, p); rx_q->rx_count_frames++; @@ -3971,6 +3973,7 @@ { struct stmmac_priv *priv = netdev_priv(dev); int txfifosz = priv->plat->tx_fifo_size; + const int mtu = new_mtu; if (txfifosz == 0) txfifosz = priv->dma_cap.tx_fifo_size; @@ -3988,7 +3991,7 @@ if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB)) return -EINVAL; - dev->mtu = new_mtu; + dev->mtu = mtu; netdev_update_features(dev); @@ -4812,10 +4815,6 @@ stmmac_check_ether_addr(priv); - /* Configure real RX and TX queues */ - netif_set_real_num_rx_queues(ndev, priv->plat->rx_queues_to_use); - netif_set_real_num_tx_queues(ndev, priv->plat->tx_queues_to_use); - ndev->netdev_ops = &stmmac_netdev_ops; ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | @@ -4840,6 +4839,14 @@ dev_info(priv->device, "SPH feature enabled\n"); } + /* The current IP register MAC_HW_Feature1[ADDR64] only define + * 32/40/64 bit width, but some SOC support others like i.MX8MP + * support 34 bits but it map to 40 bits width in MAC_HW_Feature1[ADDR64]. + * So overwrite dma_cap.addr64 according to HW real design. + */ + if (priv->plat->addr64) + priv->dma_cap.addr64 = priv->plat->addr64; + if (priv->dma_cap.addr64) { ret = dma_set_mask_and_coherent(device, DMA_BIT_MASK(priv->dma_cap.addr64)); @@ -5025,13 +5032,16 @@ netdev_info(priv->dev, "%s: removing driver", __func__); stmmac_stop_all_dma(priv); + stmmac_mac_set(priv, priv->ioaddr, false); + netif_carrier_off(ndev); + unregister_netdev(ndev); + /* Serdes power down needs to happen after VLAN filter + * is deleted that is triggered by unregister_netdev(). + */ if (priv->plat->serdes_powerdown) priv->plat->serdes_powerdown(ndev, priv->plat->bsp_priv); - stmmac_mac_set(priv, priv->ioaddr, false); - netif_carrier_off(ndev); - unregister_netdev(ndev); #ifdef CONFIG_DEBUG_FS stmmac_exit_fs(ndev); #endif @@ -5071,13 +5081,17 @@ mutex_lock(&priv->lock); netif_device_detach(ndev); - stmmac_stop_all_queues(priv); stmmac_disable_all_queues(priv); for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++) del_timer_sync(&priv->tx_queue[chan].txtimer); + if (priv->eee_enabled) { + priv->tx_path_in_lpi_mode = false; + del_timer_sync(&priv->eee_ctrl_timer); + } + /* Stop TX/RX DMA */ stmmac_stop_all_dma(priv); @@ -5133,6 +5147,8 @@ tx_q->cur_tx = 0; tx_q->dirty_tx = 0; tx_q->mss = 0; + + netdev_tx_reset_queue(netdev_get_tx_queue(priv->dev, queue)); } } @@ -5182,10 +5198,18 @@ return ret; } + if (!device_may_wakeup(priv->device)) { + rtnl_lock(); + phylink_start(priv->phylink); + rtnl_unlock(); + } + + rtnl_lock(); mutex_lock(&priv->lock); stmmac_reset_queues_param(priv); + stmmac_free_tx_skbufs(priv); stmmac_clear_descriptors(priv); stmmac_hw_setup(ndev, false); @@ -5196,15 +5220,8 @@ stmmac_enable_all_queues(priv); - stmmac_start_all_queues(priv); - mutex_unlock(&priv->lock); - - if (!device_may_wakeup(priv->device)) { - rtnl_lock(); - phylink_start(priv->phylink); - rtnl_unlock(); - } + rtnl_unlock(); phylink_mac_change(priv->phylink, true); --- linux-5.8.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +++ linux-5.8.0/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c @@ -322,6 +322,32 @@ if (!priv->dma_cap.av) return -EOPNOTSUPP; + /* Port Transmit Rate and Speed Divider */ + switch (priv->speed) { + case SPEED_10000: + ptr = 32; + speed_div = 10000000; + break; + case SPEED_5000: + ptr = 32; + speed_div = 5000000; + break; + case SPEED_2500: + ptr = 8; + speed_div = 2500000; + break; + case SPEED_1000: + ptr = 8; + speed_div = 1000000; + break; + case SPEED_100: + ptr = 4; + speed_div = 100000; + break; + default: + return -EOPNOTSUPP; + } + mode_to_use = priv->plat->tx_queues_cfg[queue].mode_to_use; if (mode_to_use == MTL_QUEUE_DCB && qopt->enable) { ret = stmmac_dma_qmode(priv, priv->ioaddr, queue, MTL_QUEUE_AVB); @@ -330,12 +356,13 @@ priv->plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_AVB; } else if (!qopt->enable) { - return stmmac_dma_qmode(priv, priv->ioaddr, queue, MTL_QUEUE_DCB); - } + ret = stmmac_dma_qmode(priv, priv->ioaddr, queue, + MTL_QUEUE_DCB); + if (ret) + return ret; - /* Port Transmit Rate and Speed Divider */ - ptr = (priv->speed == SPEED_100) ? 4 : 8; - speed_div = (priv->speed == SPEED_100) ? 100000 : 1000000; + priv->plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB; + } /* Final adjustments for HW */ value = div_s64(qopt->idleslope * 1024ll * ptr, speed_div); @@ -605,7 +632,8 @@ { u32 size, wid = priv->dma_cap.estwid, dep = priv->dma_cap.estdep; struct plat_stmmacenet_data *plat = priv->plat; - struct timespec64 time; + struct timespec64 time, current_time; + ktime_t current_time_ns; bool fpe = false; int i, ret = 0; u64 ctr; @@ -700,7 +728,22 @@ } /* Adjust for real system time */ - time = ktime_to_timespec64(qopt->base_time); + priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, ¤t_time); + current_time_ns = timespec64_to_ktime(current_time); + if (ktime_after(qopt->base_time, current_time_ns)) { + time = ktime_to_timespec64(qopt->base_time); + } else { + ktime_t base_time; + s64 n; + + n = div64_s64(ktime_sub_ns(current_time_ns, qopt->base_time), + qopt->cycle_time); + base_time = ktime_add_ns(qopt->base_time, + (n + 1) * qopt->cycle_time); + + time = ktime_to_timespec64(base_time); + } + priv->plat->est->btr[0] = (u32)time.tv_nsec; priv->plat->est->btr[1] = (u32)time.tv_sec; --- linux-5.8.0.orig/drivers/net/ethernet/sun/niu.c +++ linux-5.8.0/drivers/net/ethernet/sun/niu.c @@ -3931,8 +3931,6 @@ mp->rx_mcasts += RXMAC_MC_FRM_CNT_COUNT; if (val & XRXMAC_STATUS_RXBCAST_CNT_EXP) mp->rx_bcasts += RXMAC_BC_FRM_CNT_COUNT; - if (val & XRXMAC_STATUS_RXBCAST_CNT_EXP) - mp->rx_bcasts += RXMAC_BC_FRM_CNT_COUNT; if (val & XRXMAC_STATUS_RXHIST1_CNT_EXP) mp->rx_hist_cnt1 += RXMAC_HIST_CNT1_COUNT; if (val & XRXMAC_STATUS_RXHIST2_CNT_EXP) --- linux-5.8.0.orig/drivers/net/ethernet/tehuti/tehuti.c +++ linux-5.8.0/drivers/net/ethernet/tehuti/tehuti.c @@ -2040,6 +2040,7 @@ /*bdx_hw_reset(priv); */ if (bdx_read_mac(priv)) { pr_err("load MAC address failed\n"); + err = -EFAULT; goto err_out_iomap; } SET_NETDEV_DEV(ndev, &pdev->dev); --- linux-5.8.0.orig/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ linux-5.8.0/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -172,6 +172,8 @@ if (phy->speed == 10 && phy_interface_is_rgmii(phy)) /* Can be used with in band mode only */ mac_control |= CPSW_SL_CTL_EXT_EN; + if (phy->speed == 100 && phy->interface == PHY_INTERFACE_MODE_RMII) + mac_control |= CPSW_SL_CTL_IFCTL_A; if (phy->duplex) mac_control |= CPSW_SL_CTL_FULLDUPLEX; @@ -223,6 +225,9 @@ u32 port_mask, unreg_mcast = 0; int ret; + if (!netif_running(ndev) || !vid) + return 0; + ret = pm_runtime_get_sync(common->dev); if (ret < 0) { pm_runtime_put_noidle(common->dev); @@ -246,6 +251,9 @@ struct am65_cpsw_common *common = am65_ndev_to_common(ndev); int ret; + if (!netif_running(ndev) || !vid) + return 0; + ret = pm_runtime_get_sync(common->dev); if (ret < 0) { pm_runtime_put_noidle(common->dev); @@ -571,6 +579,16 @@ return 0; } +static int cpsw_restore_vlans(struct net_device *vdev, int vid, void *arg) +{ + struct am65_cpsw_port *port = arg; + + if (!vdev) + return 0; + + return am65_cpsw_nuss_ndo_slave_add_vid(port->ndev, 0, vid); +} + static int am65_cpsw_nuss_ndo_slave_open(struct net_device *ndev) { struct am65_cpsw_common *common = am65_ndev_to_common(ndev); @@ -644,6 +662,9 @@ } } + /* restore vlan configurations */ + vlan_for_each(ndev, cpsw_restore_vlans, port); + phy_attached_info(port->slave.phy); phy_start(port->slave.phy); --- linux-5.8.0.orig/drivers/net/ethernet/ti/am65-cpts.c +++ linux-5.8.0/drivers/net/ethernet/ti/am65-cpts.c @@ -1016,8 +1016,7 @@ if (IS_ERR_OR_NULL(cpts->ptp_clock)) { dev_err(dev, "Failed to register ptp clk %ld\n", PTR_ERR(cpts->ptp_clock)); - if (!cpts->ptp_clock) - ret = -ENODEV; + ret = cpts->ptp_clock ? PTR_ERR(cpts->ptp_clock) : -ENODEV; goto refclk_disable; } cpts->phc_index = ptp_clock_index(cpts->ptp_clock); --- linux-5.8.0.orig/drivers/net/ethernet/ti/cpsw.c +++ linux-5.8.0/drivers/net/ethernet/ti/cpsw.c @@ -838,9 +838,12 @@ if (ret < 0) goto err_cleanup; - if (cpts_register(cpsw->cpts)) - dev_err(priv->dev, "error registering cpts device\n"); - + if (cpsw->cpts) { + if (cpts_register(cpsw->cpts)) + dev_err(priv->dev, "error registering cpts device\n"); + else + writel(0x10, &cpsw->wr_regs->misc_en); + } } cpsw_restore(priv); @@ -1116,7 +1119,7 @@ HOST_PORT_NUM, ALE_VLAN, vid); ret |= cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, 0, ALE_VLAN, vid); - ret |= cpsw_ale_flush_multicast(cpsw->ale, 0, vid); + ret |= cpsw_ale_flush_multicast(cpsw->ale, ALE_PORT_HOST, vid); err: pm_runtime_put(cpsw->dev); return ret; @@ -1637,6 +1640,7 @@ CPSW_MAX_QUEUES, CPSW_MAX_QUEUES); if (!ndev) { dev_err(dev, "error allocating net_device\n"); + ret = -ENOMEM; goto clean_cpts; } @@ -1722,7 +1726,6 @@ /* Enable misc CPTS evnt_pend IRQ */ cpts_set_irqpoll(cpsw->cpts, false); - writel(0x10, &cpsw->wr_regs->misc_en); skip_cpts: cpsw_notice(priv, probe, --- linux-5.8.0.orig/drivers/net/ethernet/ti/cpsw_ethtool.c +++ linux-5.8.0/drivers/net/ethernet/ti/cpsw_ethtool.c @@ -727,7 +727,6 @@ (1 << HWTSTAMP_TX_ON); info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) | - (1 << HWTSTAMP_FILTER_PTP_V1_L4_EVENT) | (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); return 0; } --- linux-5.8.0.orig/drivers/net/ethernet/ti/cpsw_new.c +++ linux-5.8.0/drivers/net/ethernet/ti/cpsw_new.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -872,8 +873,12 @@ if (ret < 0) goto err_cleanup; - if (cpts_register(cpsw->cpts)) - dev_err(priv->dev, "error registering cpts device\n"); + if (cpsw->cpts) { + if (cpts_register(cpsw->cpts)) + dev_err(priv->dev, "error registering cpts device\n"); + else + writel(0x10, &cpsw->wr_regs->misc_en); + } napi_enable(&cpsw->napi_rx); napi_enable(&cpsw->napi_tx); @@ -1032,19 +1037,34 @@ return ret; } + /* reset the return code as pm_runtime_get_sync() can return + * non zero values as well. + */ + ret = 0; for (i = 0; i < cpsw->data.slaves; i++) { if (cpsw->slaves[i].ndev && - vid == cpsw->slaves[i].port_vlan) + vid == cpsw->slaves[i].port_vlan) { + ret = -EINVAL; goto err; + } } dev_dbg(priv->dev, "removing vlanid %d from vlan filter\n", vid); - cpsw_ale_del_vlan(cpsw->ale, vid, 0); - cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, - HOST_PORT_NUM, ALE_VLAN, vid); - cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, - 0, ALE_VLAN, vid); - cpsw_ale_flush_multicast(cpsw->ale, 0, vid); + ret = cpsw_ale_del_vlan(cpsw->ale, vid, 0); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_vlan() failed: ret %d\n", ret); + ret = cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, + HOST_PORT_NUM, ALE_VLAN, vid); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_ucast() failed: ret %d\n", + ret); + ret = cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, + 0, ALE_VLAN, vid); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_mcast failed. ret %d\n", + ret); + cpsw_ale_flush_multicast(cpsw->ale, ALE_PORT_HOST, vid); + ret = 0; err: pm_runtime_put(cpsw->dev); return ret; @@ -1993,7 +2013,6 @@ /* Enable misc CPTS evnt_pend IRQ */ cpts_set_irqpoll(cpsw->cpts, false); - writel(0x10, &cpsw->wr_regs->misc_en); skip_cpts: ret = cpsw_register_notifiers(cpsw); @@ -2055,9 +2074,61 @@ return 0; } +static int __maybe_unused cpsw_suspend(struct device *dev) +{ + struct cpsw_common *cpsw = dev_get_drvdata(dev); + int i; + + rtnl_lock(); + + for (i = 0; i < cpsw->data.slaves; i++) { + struct net_device *ndev = cpsw->slaves[i].ndev; + + if (!(ndev && netif_running(ndev))) + continue; + + cpsw_ndo_stop(ndev); + } + + rtnl_unlock(); + + /* Select sleep pin state */ + pinctrl_pm_select_sleep_state(dev); + + return 0; +} + +static int __maybe_unused cpsw_resume(struct device *dev) +{ + struct cpsw_common *cpsw = dev_get_drvdata(dev); + int i; + + /* Select default pin state */ + pinctrl_pm_select_default_state(dev); + + /* shut up ASSERT_RTNL() warning in netif_set_real_num_tx/rx_queues */ + rtnl_lock(); + + for (i = 0; i < cpsw->data.slaves; i++) { + struct net_device *ndev = cpsw->slaves[i].ndev; + + if (!(ndev && netif_running(ndev))) + continue; + + cpsw_ndo_open(ndev); + } + + rtnl_unlock(); + + return 0; +} + +static SIMPLE_DEV_PM_OPS(cpsw_pm_ops, cpsw_suspend, cpsw_resume); + static struct platform_driver cpsw_driver = { .driver = { .name = "cpsw-switch", + .pm = &cpsw_pm_ops, .of_match_table = cpsw_of_mtable, }, .probe = cpsw_probe, --- linux-5.8.0.orig/drivers/net/ethernet/ti/cpsw_priv.c +++ linux-5.8.0/drivers/net/ethernet/ti/cpsw_priv.c @@ -639,13 +639,10 @@ break; case HWTSTAMP_FILTER_ALL: case HWTSTAMP_FILTER_NTP_ALL: - return -ERANGE; case HWTSTAMP_FILTER_PTP_V1_L4_EVENT: case HWTSTAMP_FILTER_PTP_V1_L4_SYNC: case HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ: - priv->rx_ts_enabled = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; - cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; - break; + return -ERANGE; case HWTSTAMP_FILTER_PTP_V2_L4_EVENT: case HWTSTAMP_FILTER_PTP_V2_L4_SYNC: case HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ: --- linux-5.8.0.orig/drivers/net/ethernet/ti/cpts.c +++ linux-5.8.0/drivers/net/ethernet/ti/cpts.c @@ -613,6 +613,7 @@ ptp_clock_unregister(cpts->clock); cpts->clock = NULL; + cpts->phc_index = -1; cpts_write32(cpts, 0, int_enable); cpts_write32(cpts, 0, control); @@ -798,6 +799,7 @@ cpts->cc.read = cpts_systim_read; cpts->cc.mask = CLOCKSOURCE_MASK(32); cpts->info = cpts_info; + cpts->phc_index = -1; if (n_ext_ts) cpts->info.n_ext_ts = n_ext_ts; --- linux-5.8.0.orig/drivers/net/ethernet/toshiba/spider_net.c +++ linux-5.8.0/drivers/net/ethernet/toshiba/spider_net.c @@ -283,8 +283,8 @@ descr = descr->next; } while (descr != chain->ring); - dma_free_coherent(&card->pdev->dev, chain->num_desc, - chain->hwring, chain->dma_addr); + dma_free_coherent(&card->pdev->dev, chain->num_desc * sizeof(struct spider_net_hw_descr), + chain->hwring, chain->dma_addr); } /** --- linux-5.8.0.orig/drivers/net/ethernet/xilinx/ll_temac_main.c +++ linux-5.8.0/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -106,7 +106,7 @@ */ #define HARD_ACS_RDY_POLL_NS (20 * NSEC_PER_MSEC) -/** +/* * temac_indirect_busywait - Wait for current indirect register access * to complete. */ @@ -121,7 +121,7 @@ return 0; } -/** +/* * temac_indirect_in32 - Indirect register read access. This function * must be called without lp->indirect_lock being held. */ @@ -136,7 +136,7 @@ return val; } -/** +/* * temac_indirect_in32_locked - Indirect register read access. This * function must be called with lp->indirect_lock being held. Use * this together with spin_lock_irqsave/spin_lock_irqrestore to avoid @@ -164,7 +164,7 @@ return temac_ior(lp, XTE_LSW0_OFFSET); } -/** +/* * temac_indirect_out32 - Indirect register write access. This function * must be called without lp->indirect_lock being held. */ @@ -177,7 +177,7 @@ spin_unlock_irqrestore(lp->indirect_lock, flags); } -/** +/* * temac_indirect_out32_locked - Indirect register write access. This * function must be called with lp->indirect_lock being held. Use * this together with spin_lock_irqsave/spin_lock_irqrestore to avoid @@ -202,7 +202,7 @@ WARN_ON(temac_indirect_busywait(lp)); } -/** +/* * temac_dma_in32_* - Memory mapped DMA read, these function expects a * register input that is based on DCR word addresses which are then * converted to memory mapped byte addresses. To be assigned to @@ -218,7 +218,7 @@ return ioread32(lp->sdma_regs + (reg << 2)); } -/** +/* * temac_dma_out32_* - Memory mapped DMA read, these function expects * a register input that is based on DCR word addresses which are then * converted to memory mapped byte addresses. To be assigned to @@ -240,7 +240,7 @@ */ #ifdef CONFIG_PPC_DCR -/** +/* * temac_dma_dcr_in32 - DCR based DMA read */ static u32 temac_dma_dcr_in(struct temac_local *lp, int reg) @@ -248,7 +248,7 @@ return dcr_read(lp->sdma_dcrs, reg); } -/** +/* * temac_dma_dcr_out32 - DCR based DMA write */ static void temac_dma_dcr_out(struct temac_local *lp, int reg, u32 value) @@ -256,7 +256,7 @@ dcr_write(lp->sdma_dcrs, reg, value); } -/** +/* * temac_dcr_setup - If the DMA is DCR based, then setup the address and * I/O functions */ @@ -293,7 +293,7 @@ #endif -/** +/* * temac_dma_bd_release - Release buffer descriptor rings */ static void temac_dma_bd_release(struct net_device *ndev) @@ -323,7 +323,7 @@ lp->tx_bd_v, lp->tx_bd_p); } -/** +/* * temac_dma_bd_init - Setup buffer descriptor rings */ static int temac_dma_bd_init(struct net_device *ndev) @@ -593,7 +593,7 @@ {} }; -/** +/* * temac_setoptions */ static u32 temac_setoptions(struct net_device *ndev, u32 options) @@ -1351,7 +1351,6 @@ struct device_node *temac_np = dev_of_node(&pdev->dev), *dma_np; struct temac_local *lp; struct net_device *ndev; - struct resource *res; const void *addr; __be32 *p; bool little_endian; @@ -1407,10 +1406,8 @@ } /* map device registers */ - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - lp->regs = devm_ioremap(&pdev->dev, res->start, - resource_size(res)); - if (!lp->regs) { + lp->regs = devm_platform_ioremap_resource_byname(pdev, 0); + if (IS_ERR(lp->regs)) { dev_err(&pdev->dev, "could not map TEMAC registers\n"); return -ENOMEM; } @@ -1502,13 +1499,11 @@ of_node_put(dma_np); } else if (pdata) { /* 2nd memory resource specifies DMA registers */ - res = platform_get_resource(pdev, IORESOURCE_MEM, 1); - lp->sdma_regs = devm_ioremap(&pdev->dev, res->start, - resource_size(res)); - if (!lp->sdma_regs) { + lp->sdma_regs = devm_platform_ioremap_resource(pdev, 1); + if (IS_ERR(lp->sdma_regs)) { dev_err(&pdev->dev, "could not map DMA registers\n"); - return -ENOMEM; + return PTR_ERR(lp->sdma_regs); } if (pdata->dma_little_endian) { lp->dma_in = temac_dma_in32_le; --- linux-5.8.0.orig/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ linux-5.8.0/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -1805,6 +1805,18 @@ lp->options = XAE_OPTION_DEFAULTS; lp->rx_bd_num = RX_BD_NUM_DEFAULT; lp->tx_bd_num = TX_BD_NUM_DEFAULT; + + lp->clk = devm_clk_get_optional(&pdev->dev, NULL); + if (IS_ERR(lp->clk)) { + ret = PTR_ERR(lp->clk); + goto free_netdev; + } + ret = clk_prepare_enable(lp->clk); + if (ret) { + dev_err(&pdev->dev, "Unable to enable clock: %d\n", ret); + goto free_netdev; + } + /* Map device registers */ ethres = platform_get_resource(pdev, IORESOURCE_MEM, 0); lp->regs = devm_ioremap_resource(&pdev->dev, ethres); @@ -1980,20 +1992,6 @@ lp->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (lp->phy_node) { - lp->clk = devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(lp->clk)) { - dev_warn(&pdev->dev, "Failed to get clock: %ld\n", - PTR_ERR(lp->clk)); - lp->clk = NULL; - } else { - ret = clk_prepare_enable(lp->clk); - if (ret) { - dev_err(&pdev->dev, "Unable to enable clock: %d\n", - ret); - goto free_netdev; - } - } - ret = axienet_mdio_setup(lp); if (ret) dev_warn(&pdev->dev, --- linux-5.8.0.orig/drivers/net/geneve.c +++ linux-5.8.0/drivers/net/geneve.c @@ -221,8 +221,7 @@ if (ip_tunnel_collect_metadata() || gs->collect_md) { __be16 flags; - flags = TUNNEL_KEY | TUNNEL_GENEVE_OPT | - (gnvh->oam ? TUNNEL_OAM : 0) | + flags = TUNNEL_KEY | (gnvh->oam ? TUNNEL_OAM : 0) | (gnvh->critical ? TUNNEL_CRIT_OPT : 0); tun_dst = udp_tun_rx_dst(skb, geneve_get_sk_family(gs), flags, @@ -773,7 +772,8 @@ struct net_device *dev, struct geneve_sock *gs4, struct flowi4 *fl4, - const struct ip_tunnel_info *info) + const struct ip_tunnel_info *info, + __be16 dport, __be16 sport) { bool use_cache = ip_tunnel_dst_cache_usable(skb, info); struct geneve_dev *geneve = netdev_priv(dev); @@ -789,6 +789,8 @@ fl4->flowi4_proto = IPPROTO_UDP; fl4->daddr = info->key.u.ipv4.dst; fl4->saddr = info->key.u.ipv4.src; + fl4->fl4_dport = dport; + fl4->fl4_sport = sport; tos = info->key.tos; if ((tos == 1) && !geneve->collect_md) { @@ -823,7 +825,8 @@ struct net_device *dev, struct geneve_sock *gs6, struct flowi6 *fl6, - const struct ip_tunnel_info *info) + const struct ip_tunnel_info *info, + __be16 dport, __be16 sport) { bool use_cache = ip_tunnel_dst_cache_usable(skb, info); struct geneve_dev *geneve = netdev_priv(dev); @@ -839,6 +842,9 @@ fl6->flowi6_proto = IPPROTO_UDP; fl6->daddr = info->key.u.ipv6.dst; fl6->saddr = info->key.u.ipv6.src; + fl6->fl6_dport = dport; + fl6->fl6_sport = sport; + prio = info->key.tos; if ((prio == 1) && !geneve->collect_md) { prio = ip_tunnel_get_dsfield(ip_hdr(skb), skb); @@ -885,14 +891,15 @@ __be16 sport; int err; - rt = geneve_get_v4_rt(skb, dev, gs4, &fl4, info); + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); + rt = geneve_get_v4_rt(skb, dev, gs4, &fl4, info, + geneve->info.key.tp_dst, sport); if (IS_ERR(rt)) return PTR_ERR(rt); skb_tunnel_check_pmtu(skb, &rt->dst, GENEVE_IPV4_HLEN + info->options_len); - sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); if (geneve->collect_md) { tos = ip_tunnel_ecn_encap(key->tos, ip_hdr(skb), skb); ttl = key->ttl; @@ -947,13 +954,14 @@ __be16 sport; int err; - dst = geneve_get_v6_dst(skb, dev, gs6, &fl6, info); + sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); + dst = geneve_get_v6_dst(skb, dev, gs6, &fl6, info, + geneve->info.key.tp_dst, sport); if (IS_ERR(dst)) return PTR_ERR(dst); skb_tunnel_check_pmtu(skb, dst, GENEVE_IPV6_HLEN + info->options_len); - sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); if (geneve->collect_md) { prio = ip_tunnel_ecn_encap(key->tos, ip_hdr(skb), skb); ttl = key->ttl; @@ -1034,13 +1042,18 @@ { struct ip_tunnel_info *info = skb_tunnel_info(skb); struct geneve_dev *geneve = netdev_priv(dev); + __be16 sport; if (ip_tunnel_info_af(info) == AF_INET) { struct rtable *rt; struct flowi4 fl4; + struct geneve_sock *gs4 = rcu_dereference(geneve->sock4); + sport = udp_flow_src_port(geneve->net, skb, + 1, USHRT_MAX, true); - rt = geneve_get_v4_rt(skb, dev, gs4, &fl4, info); + rt = geneve_get_v4_rt(skb, dev, gs4, &fl4, info, + geneve->info.key.tp_dst, sport); if (IS_ERR(rt)) return PTR_ERR(rt); @@ -1050,9 +1063,13 @@ } else if (ip_tunnel_info_af(info) == AF_INET6) { struct dst_entry *dst; struct flowi6 fl6; + struct geneve_sock *gs6 = rcu_dereference(geneve->sock6); + sport = udp_flow_src_port(geneve->net, skb, + 1, USHRT_MAX, true); - dst = geneve_get_v6_dst(skb, dev, gs6, &fl6, info); + dst = geneve_get_v6_dst(skb, dev, gs6, &fl6, info, + geneve->info.key.tp_dst, sport); if (IS_ERR(dst)) return PTR_ERR(dst); @@ -1063,8 +1080,7 @@ return -EINVAL; } - info->key.tp_src = udp_flow_src_port(geneve->net, skb, - 1, USHRT_MAX, true); + info->key.tp_src = sport; info->key.tp_dst = geneve->info.key.tp_dst; return 0; } --- linux-5.8.0.orig/drivers/net/gtp.c +++ linux-5.8.0/drivers/net/gtp.c @@ -663,10 +663,6 @@ gtp = netdev_priv(dev); - err = gtp_encap_enable(gtp, data); - if (err < 0) - return err; - if (!data[IFLA_GTP_PDP_HASHSIZE]) { hashsize = 1024; } else { @@ -677,12 +673,16 @@ err = gtp_hashtable_new(gtp, hashsize); if (err < 0) - goto out_encap; + return err; + + err = gtp_encap_enable(gtp, data); + if (err < 0) + goto out_hashtable; err = register_netdevice(dev); if (err < 0) { netdev_dbg(dev, "failed to register new netdev %d\n", err); - goto out_hashtable; + goto out_encap; } gn = net_generic(dev_net(dev), gtp_net_id); @@ -693,11 +693,11 @@ return 0; +out_encap: + gtp_encap_disable(gtp); out_hashtable: kfree(gtp->addr_hash); kfree(gtp->tid_hash); -out_encap: - gtp_encap_disable(gtp); return err; } @@ -1179,6 +1179,7 @@ goto nlmsg_failure; if (nla_put_u32(skb, GTPA_VERSION, pctx->gtp_version) || + nla_put_u32(skb, GTPA_LINK, pctx->dev->ifindex) || nla_put_be32(skb, GTPA_PEER_ADDRESS, pctx->peer_addr_ip4.s_addr) || nla_put_be32(skb, GTPA_MS_ADDRESS, pctx->ms_addr_ip4.s_addr)) goto nla_put_failure; --- linux-5.8.0.orig/drivers/net/hyperv/hyperv_net.h +++ linux-5.8.0/drivers/net/hyperv/hyperv_net.h @@ -973,6 +973,9 @@ /* Serial number of the VF to team with */ u32 vf_serial; + /* Is the current data path through the VF NIC? */ + bool data_path_is_vf; + /* Used to temporarily save the config info across hibernation */ struct netvsc_device_info *saved_netvsc_dev_info; }; --- linux-5.8.0.orig/drivers/net/hyperv/netvsc.c +++ linux-5.8.0/drivers/net/hyperv/netvsc.c @@ -1175,8 +1175,11 @@ ret = rndis_filter_receive(ndev, net_device, nvchan, data, buflen); - if (unlikely(ret != NVSP_STAT_SUCCESS)) + if (unlikely(ret != NVSP_STAT_SUCCESS)) { + /* Drop incomplete packet */ + nvchan->rsc.cnt = 0; status = NVSP_STAT_FAIL; + } } enq_receive_complete(ndev, net_device, q_idx, --- linux-5.8.0.orig/drivers/net/hyperv/netvsc_drv.c +++ linux-5.8.0/drivers/net/hyperv/netvsc_drv.c @@ -367,7 +367,7 @@ } rcu_read_unlock(); - while (unlikely(txq >= ndev->real_num_tx_queues)) + while (txq >= ndev->real_num_tx_queues) txq -= ndev->real_num_tx_queues; return txq; @@ -502,7 +502,7 @@ int rc; skb->dev = vf_netdev; - skb->queue_mapping = qdisc_skb_cb(skb)->slave_dev_queue_mapping; + skb_record_rx_queue(skb, qdisc_skb_cb(skb)->slave_dev_queue_mapping); rc = dev_queue_xmit(skb); if (likely(rc == NET_XMIT_SUCCESS || rc == NET_XMIT_CN)) { @@ -532,12 +532,13 @@ u32 hash; struct hv_page_buffer pb[MAX_PAGE_BUFFER_COUNT]; - /* if VF is present and up then redirect packets - * already called with rcu_read_lock_bh + /* If VF is present and up then redirect packets to it. + * Skip the VF if it is marked down or has no carrier. + * If netpoll is in uses, then VF can not be used either. */ vf_netdev = rcu_dereference_bh(net_device_ctx->vf_netdev); if (vf_netdev && netif_running(vf_netdev) && - !netpoll_tx_running(net)) + netif_carrier_ok(vf_netdev) && !netpoll_tx_running(net)) return netvsc_vf_xmit(net, vf_netdev, skb); /* We will atmost need two pages to describe the rndis @@ -2322,7 +2323,16 @@ return NOTIFY_OK; } -/* VF up/down change detected, schedule to change data path */ +/* Change the data path when VF UP/DOWN/CHANGE are detected. + * + * Typically a UP or DOWN event is followed by a CHANGE event, so + * net_device_ctx->data_path_is_vf is used to cache the current data path + * to avoid the duplicate call of netvsc_switch_datapath() and the duplicate + * message. + * + * During hibernation, if a VF NIC driver (e.g. mlx5) preserves the network + * interface, there is only the CHANGE event and no UP or DOWN event. + */ static int netvsc_vf_changed(struct net_device *vf_netdev) { struct net_device_context *net_device_ctx; @@ -2339,6 +2349,10 @@ if (!netvsc_dev) return NOTIFY_DONE; + if (net_device_ctx->data_path_is_vf == vf_is_up) + return NOTIFY_OK; + net_device_ctx->data_path_is_vf = vf_is_up; + netvsc_switch_datapath(ndev, vf_is_up); netdev_info(ndev, "Data path switched %s VF: %s\n", vf_is_up ? "to" : "from", vf_netdev->name); @@ -2543,8 +2557,8 @@ static int netvsc_suspend(struct hv_device *dev) { struct net_device_context *ndev_ctx; - struct net_device *vf_netdev, *net; struct netvsc_device *nvdev; + struct net_device *net; int ret; net = hv_get_drvdata(dev); @@ -2560,10 +2574,6 @@ goto out; } - vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); - if (vf_netdev) - netvsc_unregister_vf(vf_netdev); - /* Save the current config info */ ndev_ctx->saved_netvsc_dev_info = netvsc_devinfo_get(nvdev); @@ -2584,6 +2594,12 @@ rtnl_lock(); net_device_ctx = netdev_priv(net); + + /* Reset the data path to the netvsc NIC before re-opening the vmbus + * channel. Later netvsc_netdev_event() will switch the data path to + * the VF upon the UP or CHANGE event. + */ + net_device_ctx->data_path_is_vf = false; device_info = net_device_ctx->saved_netvsc_dev_info; ret = netvsc_attach(net, device_info); @@ -2651,6 +2667,7 @@ return netvsc_unregister_vf(event_dev); case NETDEV_UP: case NETDEV_DOWN: + case NETDEV_CHANGE: return netvsc_vf_changed(event_dev); default: return NOTIFY_DONE; --- linux-5.8.0.orig/drivers/net/hyperv/rndis_filter.c +++ linux-5.8.0/drivers/net/hyperv/rndis_filter.c @@ -458,8 +458,6 @@ return ret; drop: - /* Drop incomplete packet */ - nvchan->rsc.cnt = 0; return NVSP_STAT_FAIL; } --- linux-5.8.0.orig/drivers/net/ieee802154/adf7242.c +++ linux-5.8.0/drivers/net/ieee802154/adf7242.c @@ -882,7 +882,9 @@ int ret; u8 lqi, len_u8, *data; - adf7242_read_reg(lp, 0, &len_u8); + ret = adf7242_read_reg(lp, 0, &len_u8); + if (ret) + return ret; len = len_u8; --- linux-5.8.0.orig/drivers/net/ieee802154/ca8210.c +++ linux-5.8.0/drivers/net/ieee802154/ca8210.c @@ -2925,6 +2925,7 @@ ); if (!priv->irq_workqueue) { dev_crit(&priv->spi->dev, "alloc of irq_workqueue failed!\n"); + destroy_workqueue(priv->mlme_workqueue); return -ENOMEM; } --- linux-5.8.0.orig/drivers/net/ipa/gsi.c +++ linux-5.8.0/drivers/net/ipa/gsi.c @@ -1249,7 +1249,7 @@ /* Hardware requires a 2^n ring size, with alignment equal to size */ ring->virt = dma_alloc_coherent(dev, size, &addr, GFP_KERNEL); if (ring->virt && addr % size) { - dma_free_coherent(dev, size, ring->virt, ring->addr); + dma_free_coherent(dev, size, ring->virt, addr); dev_err(dev, "unable to alloc 0x%zx-aligned ring buffer\n", size); return -EINVAL; /* Not a good error value, but distinct */ @@ -1566,6 +1566,7 @@ if (!channel->gsi) continue; /* Ignore uninitialized channels */ + ret = -EINVAL; dev_err(gsi->dev, "channel %u not supported by hardware\n", channel_id - 1); channel_id = gsi->channel_count; --- linux-5.8.0.orig/drivers/net/ipa/gsi_reg.h +++ linux-5.8.0/drivers/net/ipa/gsi_reg.h @@ -48,16 +48,6 @@ #define GSI_INTER_EE_N_SRC_EV_CH_IRQ_OFFSET(ee) \ (0x0000c01c + 0x1000 * (ee)) -#define GSI_INTER_EE_SRC_CH_IRQ_CLR_OFFSET \ - GSI_INTER_EE_N_SRC_CH_IRQ_CLR_OFFSET(GSI_EE_AP) -#define GSI_INTER_EE_N_SRC_CH_IRQ_CLR_OFFSET(ee) \ - (0x0000c028 + 0x1000 * (ee)) - -#define GSI_INTER_EE_SRC_EV_CH_IRQ_CLR_OFFSET \ - GSI_INTER_EE_N_SRC_EV_CH_IRQ_CLR_OFFSET(GSI_EE_AP) -#define GSI_INTER_EE_N_SRC_EV_CH_IRQ_CLR_OFFSET(ee) \ - (0x0000c02c + 0x1000 * (ee)) - #define GSI_CH_C_CNTXT_0_OFFSET(ch) \ GSI_EE_N_CH_C_CNTXT_0_OFFSET((ch), GSI_EE_AP) #define GSI_EE_N_CH_C_CNTXT_0_OFFSET(ch, ee) \ --- linux-5.8.0.orig/drivers/net/ipa/gsi_trans.c +++ linux-5.8.0/drivers/net/ipa/gsi_trans.c @@ -157,6 +157,9 @@ /* The allocator will give us a power-of-2 number of pages. But we * can't guarantee that, so request it. That way we won't waste any * memory that would be available beyond the required space. + * + * Note that gsi_trans_pool_exit_dma() assumes the total allocated + * size is exactly (count * size). */ total_size = get_order(total_size) << PAGE_SHIFT; @@ -176,7 +179,9 @@ void gsi_trans_pool_exit_dma(struct device *dev, struct gsi_trans_pool *pool) { - dma_free_coherent(dev, pool->size, pool->base, pool->addr); + size_t total_size = pool->count * pool->size; + + dma_free_coherent(dev, total_size, pool->base, pool->addr); memset(pool, 0, sizeof(*pool)); } @@ -363,22 +368,31 @@ return trans; } -/* Free a previously-allocated transaction (used only in case of error) */ +/* Free a previously-allocated transaction */ void gsi_trans_free(struct gsi_trans *trans) { + refcount_t *refcount = &trans->refcount; struct gsi_trans_info *trans_info; + bool last; - if (!refcount_dec_and_test(&trans->refcount)) + /* We must hold the lock to release the last reference */ + if (refcount_dec_not_one(refcount)) return; trans_info = &trans->gsi->channel[trans->channel_id].trans_info; spin_lock_bh(&trans_info->spinlock); - list_del(&trans->links); + /* Reference might have been added before we got the lock */ + last = refcount_dec_and_test(refcount); + if (last) + list_del(&trans->links); spin_unlock_bh(&trans_info->spinlock); + if (!last) + return; + ipa_gsi_trans_release(trans); /* Releasing the reserved TREs implicitly frees the sgl[] and @@ -398,15 +412,24 @@ /* assert(which < trans->tre_count); */ - /* Set the page information for the buffer. We also need to fill in - * the DMA address and length for the buffer (something dma_map_sg() - * normally does). + /* Commands are quite different from data transfer requests. + * Their payloads come from a pool whose memory is allocated + * using dma_alloc_coherent(). We therefore do *not* map them + * for DMA (unlike what we do for pages and skbs). + * + * When a transaction completes, the SGL is normally unmapped. + * A command transaction has direction DMA_NONE, which tells + * gsi_trans_complete() to skip the unmapping step. + * + * The only things we use directly in a command scatter/gather + * entry are the DMA address and length. We still need the SG + * table flags to be maintained though, so assign a NULL page + * pointer for that purpose. */ sg = &trans->sgl[which]; - - sg_set_buf(sg, buf, size); + sg_assign_page(sg, NULL); sg_dma_address(sg) = addr; - sg_dma_len(sg) = sg->length; + sg_dma_len(sg) = size; info = &trans->info[which]; info->opcode = opcode; --- linux-5.8.0.orig/drivers/net/ipa/ipa_cmd.c +++ linux-5.8.0/drivers/net/ipa/ipa_cmd.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. - * Copyright (C) 2019-2020 Linaro Ltd. + * Copyright (C) 2019-2021 Linaro Ltd. */ #include @@ -175,21 +175,23 @@ : field_max(IP_FLTRT_FLAGS_NHASH_ADDR_FMASK); if (mem->offset > offset_max || ipa->mem_offset > offset_max - mem->offset) { - dev_err(dev, "IPv%c %s%s table region offset too large " - "(0x%04x + 0x%04x > 0x%04x)\n", - ipv6 ? '6' : '4', hashed ? "hashed " : "", - route ? "route" : "filter", - ipa->mem_offset, mem->offset, offset_max); + dev_err(dev, "IPv%c %s%s table region offset too large\n", + ipv6 ? '6' : '4', hashed ? "hashed " : "", + route ? "route" : "filter"); + dev_err(dev, " (0x%04x + 0x%04x > 0x%04x)\n", + ipa->mem_offset, mem->offset, offset_max); + return false; } if (mem->offset > ipa->mem_size || mem->size > ipa->mem_size - mem->offset) { - dev_err(dev, "IPv%c %s%s table region out of range " - "(0x%04x + 0x%04x > 0x%04x)\n", - ipv6 ? '6' : '4', hashed ? "hashed " : "", - route ? "route" : "filter", - mem->offset, mem->size, ipa->mem_size); + dev_err(dev, "IPv%c %s%s table region out of range\n", + ipv6 ? '6' : '4', hashed ? "hashed " : "", + route ? "route" : "filter"); + dev_err(dev, " (0x%04x + 0x%04x > 0x%04x)\n", + mem->offset, mem->size, ipa->mem_size); + return false; } @@ -205,22 +207,36 @@ u32 size_max; u32 size; + /* In ipa_cmd_hdr_init_local_add() we record the offset and size + * of the header table memory area. Make sure the offset and size + * fit in the fields that need to hold them, and that the entire + * range is within the overall IPA memory range. + */ offset_max = field_max(HDR_INIT_LOCAL_FLAGS_HDR_ADDR_FMASK); if (mem->offset > offset_max || ipa->mem_offset > offset_max - mem->offset) { - dev_err(dev, "header table region offset too large " - "(0x%04x + 0x%04x > 0x%04x)\n", - ipa->mem_offset + mem->offset, offset_max); + dev_err(dev, "header table region offset too large\n"); + dev_err(dev, " (0x%04x + 0x%04x > 0x%04x)\n", + ipa->mem_offset, mem->offset, offset_max); + return false; } size_max = field_max(HDR_INIT_LOCAL_FLAGS_TABLE_SIZE_FMASK); size = ipa->mem[IPA_MEM_MODEM_HEADER].size; size += ipa->mem[IPA_MEM_AP_HEADER].size; - if (mem->offset > ipa->mem_size || size > ipa->mem_size - mem->offset) { - dev_err(dev, "header table region out of range " - "(0x%04x + 0x%04x > 0x%04x)\n", - mem->offset, size, ipa->mem_size); + + if (size > size_max) { + dev_err(dev, "header table region size too large\n"); + dev_err(dev, " (0x%04x > 0x%08x)\n", size, size_max); + + return false; + } + if (size > ipa->mem_size || mem->offset > ipa->mem_size - size) { + dev_err(dev, "header table region out of range\n"); + dev_err(dev, " (0x%04x + 0x%04x > 0x%04x)\n", + mem->offset, size, ipa->mem_size); + return false; } @@ -244,11 +260,15 @@ if (ipa->version != IPA_VERSION_3_5_1) bit_count += hweight32(REGISTER_WRITE_FLAGS_OFFSET_HIGH_FMASK); BUILD_BUG_ON(bit_count > 32); - offset_max = ~0 >> (32 - bit_count); + offset_max = ~0U >> (32 - bit_count); + /* Make sure the offset can be represented by the field(s) + * that holds it. Also make sure the offset is not outside + * the overall IPA memory range. + */ if (offset > offset_max || ipa->mem_offset > offset_max - offset) { dev_err(dev, "%s offset too large 0x%04x + 0x%04x > 0x%04x)\n", - ipa->mem_offset + offset, offset_max); + name, ipa->mem_offset, offset, offset_max); return false; } @@ -261,12 +281,24 @@ const char *name; u32 offset; - offset = ipa_reg_filt_rout_hash_flush_offset(ipa->version); - name = "filter/route hash flush"; - if (!ipa_cmd_register_write_offset_valid(ipa, name, offset)) - return false; + /* If hashed tables are supported, ensure the hash flush register + * offset will fit in a register write IPA immediate command. + */ + if (ipa->version != IPA_VERSION_4_2) { + offset = ipa_reg_filt_rout_hash_flush_offset(ipa->version); + name = "filter/route hash flush"; + if (!ipa_cmd_register_write_offset_valid(ipa, name, offset)) + return false; + } - offset = IPA_REG_ENDP_STATUS_N_OFFSET(IPA_ENDPOINT_COUNT); + /* Each endpoint can have a status endpoint associated with it, + * and this is recorded in an endpoint register. If the modem + * crashes, we reset the status endpoint for all modem endpoints + * using a register write IPA immediate command. Make sure the + * worst case (highest endpoint number) offset of that endpoint + * fits in the register write command field(s) that must hold it. + */ + offset = IPA_REG_ENDP_STATUS_N_OFFSET(IPA_ENDPOINT_COUNT - 1); name = "maximal endpoint status"; if (!ipa_cmd_register_write_offset_valid(ipa, name, offset)) return false; --- linux-5.8.0.orig/drivers/net/ipa/ipa_endpoint.c +++ linux-5.8.0/drivers/net/ipa/ipa_endpoint.c @@ -1447,6 +1447,9 @@ void ipa_endpoint_suspend(struct ipa *ipa) { + if (!ipa->setup_complete) + return; + if (ipa->modem_netdev) ipa_modem_suspend(ipa->modem_netdev); @@ -1458,6 +1461,9 @@ void ipa_endpoint_resume(struct ipa *ipa) { + if (!ipa->setup_complete) + return; + ipa_endpoint_resume_one(ipa->name_map[IPA_ENDPOINT_AP_COMMAND_TX]); ipa_endpoint_resume_one(ipa->name_map[IPA_ENDPOINT_AP_LAN_RX]); --- linux-5.8.0.orig/drivers/net/ipa/ipa_modem.c +++ linux-5.8.0/drivers/net/ipa/ipa_modem.c @@ -216,6 +216,7 @@ ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]->netdev = netdev; ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]->netdev = netdev; + SET_NETDEV_DEV(netdev, &ipa->pdev->dev); priv = netdev_priv(netdev); priv->ipa = ipa; --- linux-5.8.0.orig/drivers/net/ipa/ipa_qmi.c +++ linux-5.8.0/drivers/net/ipa/ipa_qmi.c @@ -249,6 +249,7 @@ .decoded_size = IPA_QMI_DRIVER_INIT_COMPLETE_REQ_SZ, .fn = ipa_server_driver_init_complete, }, + { }, }; /* Handle an INIT_DRIVER response message from the modem. */ @@ -269,6 +270,7 @@ .decoded_size = IPA_QMI_INIT_DRIVER_RSP_SZ, .fn = ipa_client_init_driver, }, + { }, }; /* Return a pointer to an init modem driver request structure, which contains --- linux-5.8.0.orig/drivers/net/ipa/ipa_table.c +++ linux-5.8.0/drivers/net/ipa/ipa_table.c @@ -521,7 +521,7 @@ val = ioread32(endpoint->ipa->reg_virt + offset); /* Zero all filter-related fields, preserving the rest */ - u32_replace_bits(val, 0, IPA_REG_ENDP_FILTER_HASH_MSK_ALL); + u32p_replace_bits(&val, 0, IPA_REG_ENDP_FILTER_HASH_MSK_ALL); iowrite32(val, endpoint->ipa->reg_virt + offset); } @@ -572,7 +572,7 @@ val = ioread32(ipa->reg_virt + offset); /* Zero all route-related fields, preserving the rest */ - u32_replace_bits(val, 0, IPA_REG_ENDP_ROUTER_HASH_MSK_ALL); + u32p_replace_bits(&val, 0, IPA_REG_ENDP_ROUTER_HASH_MSK_ALL); iowrite32(val, ipa->reg_virt + offset); } --- linux-5.8.0.orig/drivers/net/ipvlan/ipvlan_main.c +++ linux-5.8.0/drivers/net/ipvlan/ipvlan_main.c @@ -106,12 +106,21 @@ kfree(port); } +#define IPVLAN_ALWAYS_ON_OFLOADS \ + (NETIF_F_SG | NETIF_F_HW_CSUM | \ + NETIF_F_GSO_ROBUST | NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ENCAP_ALL) + +#define IPVLAN_ALWAYS_ON \ + (IPVLAN_ALWAYS_ON_OFLOADS | NETIF_F_LLTX | NETIF_F_VLAN_CHALLENGED) + #define IPVLAN_FEATURES \ - (NETIF_F_SG | NETIF_F_CSUM_MASK | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \ + (NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \ NETIF_F_GSO | NETIF_F_ALL_TSO | NETIF_F_GSO_ROBUST | \ NETIF_F_GRO | NETIF_F_RXCSUM | \ NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER) + /* NETIF_F_GSO_ENCAP_ALL NETIF_F_GSO_SOFTWARE Newly added */ + #define IPVLAN_STATE_MASK \ ((1<<__LINK_STATE_NOCARRIER) | (1<<__LINK_STATE_DORMANT)) @@ -125,7 +134,9 @@ dev->state = (dev->state & ~IPVLAN_STATE_MASK) | (phy_dev->state & IPVLAN_STATE_MASK); dev->features = phy_dev->features & IPVLAN_FEATURES; - dev->features |= NETIF_F_LLTX | NETIF_F_VLAN_CHALLENGED; + dev->features |= IPVLAN_ALWAYS_ON; + dev->vlan_features = phy_dev->vlan_features & IPVLAN_FEATURES; + dev->vlan_features |= IPVLAN_ALWAYS_ON_OFLOADS; dev->hw_enc_features |= dev->features; dev->gso_max_size = phy_dev->gso_max_size; dev->gso_max_segs = phy_dev->gso_max_segs; @@ -227,7 +238,14 @@ { struct ipvl_dev *ipvlan = netdev_priv(dev); - return features & (ipvlan->sfeatures | ~IPVLAN_FEATURES); + features |= NETIF_F_ALL_FOR_ALL; + features &= (ipvlan->sfeatures | ~IPVLAN_FEATURES); + features = netdev_increment_features(ipvlan->phy_dev->features, + features, features); + features |= IPVLAN_ALWAYS_ON; + features &= (IPVLAN_FEATURES | IPVLAN_ALWAYS_ON); + + return features; } static void ipvlan_change_rx_flags(struct net_device *dev, int change) @@ -734,10 +752,9 @@ case NETDEV_FEAT_CHANGE: list_for_each_entry(ipvlan, &port->ipvlans, pnode) { - ipvlan->dev->features = dev->features & IPVLAN_FEATURES; ipvlan->dev->gso_max_size = dev->gso_max_size; ipvlan->dev->gso_max_segs = dev->gso_max_segs; - netdev_features_change(ipvlan->dev); + netdev_update_features(ipvlan->dev); } break; --- linux-5.8.0.orig/drivers/net/macsec.c +++ linux-5.8.0/drivers/net/macsec.c @@ -1077,6 +1077,7 @@ struct macsec_rx_sa *rx_sa; struct macsec_rxh_data *rxd; struct macsec_dev *macsec; + unsigned int len; sci_t sci; u32 hdr_pn; bool cbit; @@ -1232,9 +1233,10 @@ macsec_rxsc_put(rx_sc); skb_orphan(skb); + len = skb->len; ret = gro_cells_receive(&macsec->gro_cells, skb); if (ret == NET_RX_SUCCESS) - count_rx(dev, skb->len); + count_rx(dev, len); else macsec->secy.netdev->stats.rx_dropped++; --- linux-5.8.0.orig/drivers/net/macvlan.c +++ linux-5.8.0/drivers/net/macvlan.c @@ -1269,6 +1269,9 @@ static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack) { + struct nlattr *nla, *head; + int rem, len; + if (tb[IFLA_ADDRESS]) { if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) return -EINVAL; @@ -1316,6 +1319,20 @@ return -EADDRNOTAVAIL; } + if (data[IFLA_MACVLAN_MACADDR_DATA]) { + head = nla_data(data[IFLA_MACVLAN_MACADDR_DATA]); + len = nla_len(data[IFLA_MACVLAN_MACADDR_DATA]); + + nla_for_each_attr(nla, head, len, rem) { + if (nla_type(nla) != IFLA_MACVLAN_MACADDR || + nla_len(nla) != ETH_ALEN) + return -EINVAL; + + if (!is_valid_ether_addr(nla_data(nla))) + return -EADDRNOTAVAIL; + } + } + if (data[IFLA_MACVLAN_MACADDR_COUNT]) return -EINVAL; @@ -1372,10 +1389,6 @@ len = nla_len(data[IFLA_MACVLAN_MACADDR_DATA]); nla_for_each_attr(nla, head, len, rem) { - if (nla_type(nla) != IFLA_MACVLAN_MACADDR || - nla_len(nla) != ETH_ALEN) - continue; - addr = nla_data(nla); ret = macvlan_hash_add_source(vlan, addr); if (ret) --- linux-5.8.0.orig/drivers/net/netdevsim/dev.c +++ linux-5.8.0/drivers/net/netdevsim/dev.c @@ -94,6 +94,7 @@ .open = simple_open, .write = nsim_dev_take_snapshot_write, .llseek = generic_file_llseek, + .owner = THIS_MODULE, }; static ssize_t nsim_dev_trap_fa_cookie_read(struct file *file, @@ -186,6 +187,7 @@ .read = nsim_dev_trap_fa_cookie_read, .write = nsim_dev_trap_fa_cookie_write, .llseek = generic_file_llseek, + .owner = THIS_MODULE, }; static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev) @@ -985,23 +987,25 @@ mutex_init(&nsim_dev->port_list_lock); nsim_dev->fw_update_status = true; - nsim_dev->fib_data = nsim_fib_create(devlink, extack); - if (IS_ERR(nsim_dev->fib_data)) - return PTR_ERR(nsim_dev->fib_data); - nsim_devlink_param_load_driverinit_values(devlink); err = nsim_dev_dummy_region_init(nsim_dev, devlink); if (err) - goto err_fib_destroy; + return err; err = nsim_dev_traps_init(devlink); if (err) goto err_dummy_region_exit; + nsim_dev->fib_data = nsim_fib_create(devlink, extack); + if (IS_ERR(nsim_dev->fib_data)) { + err = PTR_ERR(nsim_dev->fib_data); + goto err_traps_exit; + } + err = nsim_dev_health_init(nsim_dev, devlink); if (err) - goto err_traps_exit; + goto err_fib_destroy; err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); if (err) @@ -1016,12 +1020,12 @@ err_health_exit: nsim_dev_health_exit(nsim_dev); +err_fib_destroy: + nsim_fib_destroy(devlink, nsim_dev->fib_data); err_traps_exit: nsim_dev_traps_exit(devlink); err_dummy_region_exit: nsim_dev_dummy_region_exit(nsim_dev); -err_fib_destroy: - nsim_fib_destroy(devlink, nsim_dev->fib_data); return err; } @@ -1052,15 +1056,9 @@ if (err) goto err_devlink_free; - nsim_dev->fib_data = nsim_fib_create(devlink, NULL); - if (IS_ERR(nsim_dev->fib_data)) { - err = PTR_ERR(nsim_dev->fib_data); - goto err_resources_unregister; - } - err = devlink_register(devlink, &nsim_bus_dev->dev); if (err) - goto err_fib_destroy; + goto err_resources_unregister; err = devlink_params_register(devlink, nsim_devlink_params, ARRAY_SIZE(nsim_devlink_params)); @@ -1080,9 +1078,15 @@ if (err) goto err_traps_exit; + nsim_dev->fib_data = nsim_fib_create(devlink, NULL); + if (IS_ERR(nsim_dev->fib_data)) { + err = PTR_ERR(nsim_dev->fib_data); + goto err_debugfs_exit; + } + err = nsim_dev_health_init(nsim_dev, devlink); if (err) - goto err_debugfs_exit; + goto err_fib_destroy; err = nsim_bpf_dev_init(nsim_dev); if (err) @@ -1100,6 +1104,8 @@ nsim_bpf_dev_exit(nsim_dev); err_health_exit: nsim_dev_health_exit(nsim_dev); +err_fib_destroy: + nsim_fib_destroy(devlink, nsim_dev->fib_data); err_debugfs_exit: nsim_dev_debugfs_exit(nsim_dev); err_traps_exit: @@ -1111,8 +1117,6 @@ ARRAY_SIZE(nsim_devlink_params)); err_dl_unregister: devlink_unregister(devlink); -err_fib_destroy: - nsim_fib_destroy(devlink, nsim_dev->fib_data); err_resources_unregister: devlink_resources_unregister(devlink, NULL); err_devlink_free: @@ -1129,10 +1133,10 @@ debugfs_remove(nsim_dev->take_snapshot); nsim_dev_port_del_all(nsim_dev); nsim_dev_health_exit(nsim_dev); + nsim_fib_destroy(devlink, nsim_dev->fib_data); nsim_dev_traps_exit(devlink); nsim_dev_dummy_region_exit(nsim_dev); mutex_destroy(&nsim_dev->port_list_lock); - nsim_fib_destroy(devlink, nsim_dev->fib_data); } void nsim_dev_remove(struct nsim_bus_dev *nsim_bus_dev) --- linux-5.8.0.orig/drivers/net/netdevsim/health.c +++ linux-5.8.0/drivers/net/netdevsim/health.c @@ -261,6 +261,7 @@ .open = simple_open, .write = nsim_dev_health_break_write, .llseek = generic_file_llseek, + .owner = THIS_MODULE, }; int nsim_dev_health_init(struct nsim_dev *nsim_dev, struct devlink *devlink) --- linux-5.8.0.orig/drivers/net/netdevsim/netdev.c +++ linux-5.8.0/drivers/net/netdevsim/netdev.c @@ -293,6 +293,7 @@ dev_net_set(dev, nsim_dev_net(nsim_dev)); ns = netdev_priv(dev); ns->netdev = dev; + u64_stats_init(&ns->syncp); ns->nsim_dev = nsim_dev; ns->nsim_dev_port = nsim_dev_port; ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; --- linux-5.8.0.orig/drivers/net/phy/Kconfig +++ linux-5.8.0/drivers/net/phy/Kconfig @@ -217,6 +217,7 @@ depends on 64BIT depends on PCI select MDIO_CAVIUM + select MDIO_DEVRES help This driver supports the MDIO interfaces found on Cavium ThunderX SoCs when the MDIO bus device appears as a PCI --- linux-5.8.0.orig/drivers/net/phy/broadcom.c +++ linux-5.8.0/drivers/net/phy/broadcom.c @@ -26,7 +26,46 @@ MODULE_AUTHOR("Maciej W. Rozycki"); MODULE_LICENSE("GPL"); -static int bcm54xx_config_clock_delay(struct phy_device *phydev); +static int bcm54xx_config_clock_delay(struct phy_device *phydev) +{ + int rc, val; + + /* handling PHY's internal RX clock delay */ + val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC); + val |= MII_BCM54XX_AUXCTL_MISC_WREN; + if (phydev->interface == PHY_INTERFACE_MODE_RGMII || + phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { + /* Disable RGMII RXC-RXD skew */ + val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN; + } + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || + phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { + /* Enable RGMII RXC-RXD skew */ + val |= MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN; + } + rc = bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC, + val); + if (rc < 0) + return rc; + + /* handling PHY's internal TX clock delay */ + val = bcm_phy_read_shadow(phydev, BCM54810_SHD_CLK_CTL); + if (phydev->interface == PHY_INTERFACE_MODE_RGMII || + phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { + /* Disable internal TX clock delay */ + val &= ~BCM54810_SHD_CLK_CTL_GTXCLK_EN; + } + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || + phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { + /* Enable internal TX clock delay */ + val |= BCM54810_SHD_CLK_CTL_GTXCLK_EN; + } + rc = bcm_phy_write_shadow(phydev, BCM54810_SHD_CLK_CTL, val); + if (rc < 0) + return rc; + + return 0; +} static int bcm54210e_config_init(struct phy_device *phydev) { @@ -64,45 +103,62 @@ return 0; } -static int bcm54xx_config_clock_delay(struct phy_device *phydev) +static int bcm54616s_config_init(struct phy_device *phydev) { int rc, val; - /* handling PHY's internal RX clock delay */ + if (phydev->interface != PHY_INTERFACE_MODE_SGMII && + phydev->interface != PHY_INTERFACE_MODE_1000BASEX) + return 0; + + /* Ensure proper interface mode is selected. */ + /* Disable RGMII mode */ val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC); + if (val < 0) + return val; + val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN; val |= MII_BCM54XX_AUXCTL_MISC_WREN; - if (phydev->interface == PHY_INTERFACE_MODE_RGMII || - phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { - /* Disable RGMII RXC-RXD skew */ - val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN; - } - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || - phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { - /* Enable RGMII RXC-RXD skew */ - val |= MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN; - } rc = bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC, val); if (rc < 0) return rc; - /* handling PHY's internal TX clock delay */ - val = bcm_phy_read_shadow(phydev, BCM54810_SHD_CLK_CTL); - if (phydev->interface == PHY_INTERFACE_MODE_RGMII || - phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) { - /* Disable internal TX clock delay */ - val &= ~BCM54810_SHD_CLK_CTL_GTXCLK_EN; - } - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || - phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) { - /* Enable internal TX clock delay */ - val |= BCM54810_SHD_CLK_CTL_GTXCLK_EN; - } - rc = bcm_phy_write_shadow(phydev, BCM54810_SHD_CLK_CTL, val); + /* Select 1000BASE-X register set (primary SerDes) */ + val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_MODE); + if (val < 0) + return val; + val |= BCM54XX_SHD_MODE_1000BX; + rc = bcm_phy_write_shadow(phydev, BCM54XX_SHD_MODE, val); if (rc < 0) return rc; - return 0; + /* Power down SerDes interface */ + rc = phy_set_bits(phydev, MII_BMCR, BMCR_PDOWN); + if (rc < 0) + return rc; + + /* Select proper interface mode */ + val &= ~BCM54XX_SHD_INTF_SEL_MASK; + val |= phydev->interface == PHY_INTERFACE_MODE_SGMII ? + BCM54XX_SHD_INTF_SEL_SGMII : + BCM54XX_SHD_INTF_SEL_GBIC; + rc = bcm_phy_write_shadow(phydev, BCM54XX_SHD_MODE, val); + if (rc < 0) + return rc; + + /* Power up SerDes interface */ + rc = phy_clear_bits(phydev, MII_BMCR, BMCR_PDOWN); + if (rc < 0) + return rc; + + /* Select copper register set */ + val &= ~BCM54XX_SHD_MODE_1000BX; + rc = bcm_phy_write_shadow(phydev, BCM54XX_SHD_MODE, val); + if (rc < 0) + return rc; + + /* Power up copper interface */ + return phy_clear_bits(phydev, MII_BMCR, BMCR_PDOWN); } /* Needs SMDSP clock enabled via bcm54xx_phydsp_config() */ @@ -283,15 +339,21 @@ bcm54xx_adjust_rxrefclk(phydev); - if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54210E) { + switch (BRCM_PHY_MODEL(phydev)) { + case PHY_ID_BCM50610: + case PHY_ID_BCM50610M: + err = bcm54xx_config_clock_delay(phydev); + break; + case PHY_ID_BCM54210E: err = bcm54210e_config_init(phydev); - if (err) - return err; - } else if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54612E) { + break; + case PHY_ID_BCM54612E: err = bcm54612e_config_init(phydev); - if (err) - return err; - } else if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) { + break; + case PHY_ID_BCM54616S: + err = bcm54616s_config_init(phydev); + break; + case PHY_ID_BCM54810: /* For BCM54810, we need to disable BroadR-Reach function */ val = bcm_phy_read_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL); @@ -299,9 +361,10 @@ err = bcm_phy_write_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL, val); - if (err < 0) - return err; + break; } + if (err) + return err; bcm54xx_phydsp_config(phydev); @@ -332,6 +395,11 @@ if (ret < 0) return ret; + /* Upon exiting power down, the PHY remains in an internal reset state + * for 40us + */ + fsleep(40); + return bcm54xx_config_init(phydev); } @@ -475,7 +543,7 @@ static int bcm54616s_probe(struct phy_device *phydev) { - int val, intf_sel; + int val; val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_MODE); if (val < 0) @@ -487,8 +555,7 @@ * RGMII-1000Base-X is properly supported, but RGMII-100Base-FX * support is still missing as of now. */ - intf_sel = (val & BCM54XX_SHD_INTF_SEL_MASK) >> 1; - if (intf_sel == 1) { + if ((val & BCM54XX_SHD_INTF_SEL_MASK) == BCM54XX_SHD_INTF_SEL_RGMII) { val = bcm_phy_read_shadow(phydev, BCM54616S_SHD_100FX_CTRL); if (val < 0) return val; @@ -500,6 +567,8 @@ */ if (!(val & BCM54616S_100FX_MODE)) phydev->dev_flags |= PHY_BCM_FLAGS_MODE_1000BX; + + phydev->port = PORT_FIBRE; } return 0; --- linux-5.8.0.orig/drivers/net/phy/dp83867.c +++ linux-5.8.0/drivers/net/phy/dp83867.c @@ -215,9 +215,9 @@ if (wol->wolopts & WAKE_MAGICSECURE) { phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RXFSOP1, (wol->sopass[1] << 8) | wol->sopass[0]); - phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RXFSOP1, + phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RXFSOP2, (wol->sopass[3] << 8) | wol->sopass[2]); - phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RXFSOP1, + phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RXFSOP3, (wol->sopass[5] << 8) | wol->sopass[4]); val_rxcfg |= DP83867_WOL_SEC_EN; --- linux-5.8.0.orig/drivers/net/phy/dp83869.c +++ linux-5.8.0/drivers/net/phy/dp83869.c @@ -416,6 +416,10 @@ if (ret) return ret; + if (dp83869->mode == DP83869_RGMII_100_BASE || + dp83869->mode == DP83869_RGMII_1000_BASE) + phydev->port = PORT_FIBRE; + return dp83869_config_init(phydev); } --- linux-5.8.0.orig/drivers/net/phy/lxt.c +++ linux-5.8.0/drivers/net/phy/lxt.c @@ -218,6 +218,7 @@ phy_write(phydev, MII_BMCR, val); /* Remember that the port is in fiber mode. */ phydev->priv = lxt973_probe; + phydev->port = PORT_FIBRE; } else { phydev->priv = NULL; } --- linux-5.8.0.orig/drivers/net/phy/marvell.c +++ linux-5.8.0/drivers/net/phy/marvell.c @@ -1449,6 +1449,7 @@ phydev->asym_pause = 0; phydev->speed = SPEED_UNKNOWN; phydev->duplex = DUPLEX_UNKNOWN; + phydev->port = fiber ? PORT_FIBRE : PORT_TP; if (phydev->autoneg == AUTONEG_ENABLE) err = marvell_read_status_page_an(phydev, fiber, status); --- linux-5.8.0.orig/drivers/net/phy/marvell10g.c +++ linux-5.8.0/drivers/net/phy/marvell10g.c @@ -205,13 +205,6 @@ MV_V2_TEMP_CTRL_MASK, val); } -static void mv3310_hwmon_disable(void *data) -{ - struct phy_device *phydev = data; - - mv3310_hwmon_config(phydev, false); -} - static int mv3310_hwmon_probe(struct phy_device *phydev) { struct device *dev = &phydev->mdio.dev; @@ -235,10 +228,6 @@ if (ret) return ret; - ret = devm_add_action_or_reset(dev, mv3310_hwmon_disable, phydev); - if (ret) - return ret; - priv->hwmon_dev = devm_hwmon_device_register_with_info(dev, priv->hwmon_name, phydev, &mv3310_hwmon_chip_info, NULL); @@ -423,6 +412,11 @@ return phy_sfp_probe(phydev, &mv3310_sfp_ops); } +static void mv3310_remove(struct phy_device *phydev) +{ + mv3310_hwmon_config(phydev, false); +} + static int mv3310_suspend(struct phy_device *phydev) { return mv3310_power_down(phydev); @@ -615,6 +609,7 @@ phydev->link = 1; phydev->speed = SPEED_10000; phydev->duplex = DUPLEX_FULL; + phydev->port = PORT_FIBRE; return 0; } @@ -674,6 +669,7 @@ phydev->duplex = cssr1 & MV_PCS_CSSR1_DUPLEX_FULL ? DUPLEX_FULL : DUPLEX_HALF; + phydev->port = PORT_TP; phydev->mdix = cssr1 & MV_PCS_CSSR1_MDIX ? ETH_TP_MDI_X : ETH_TP_MDI; @@ -762,6 +758,7 @@ .read_status = mv3310_read_status, .get_tunable = mv3310_get_tunable, .set_tunable = mv3310_set_tunable, + .remove = mv3310_remove, }, { .phy_id = MARVELL_PHY_ID_88E2110, @@ -776,6 +773,7 @@ .read_status = mv3310_read_status, .get_tunable = mv3310_get_tunable, .set_tunable = mv3310_set_tunable, + .remove = mv3310_remove, }, }; --- linux-5.8.0.orig/drivers/net/phy/micrel.c +++ linux-5.8.0/drivers/net/phy/micrel.c @@ -308,14 +308,19 @@ return kszphy_config_reset(phydev); } +static int ksz8041_fiber_mode(struct phy_device *phydev) +{ + struct device_node *of_node = phydev->mdio.dev.of_node; + + return of_property_read_bool(of_node, "micrel,fiber-mode"); +} + static int ksz8041_config_init(struct phy_device *phydev) { __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, }; - struct device_node *of_node = phydev->mdio.dev.of_node; - /* Limit supported and advertised modes in fiber mode */ - if (of_property_read_bool(of_node, "micrel,fiber-mode")) { + if (ksz8041_fiber_mode(phydev)) { phydev->dev_flags |= MICREL_PHY_FXEN; linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, mask); linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, mask); @@ -1143,6 +1148,9 @@ } } + if (ksz8041_fiber_mode(phydev)) + phydev->port = PORT_FIBRE; + /* Support legacy board-file configuration */ if (phydev->dev_flags & MICREL_PHY_50MHZ_CLK) { priv->rmii_ref_clk_sel = true; @@ -1263,6 +1271,7 @@ .probe = kszphy_probe, .config_init = ksz8081_config_init, .ack_interrupt = kszphy_ack_interrupt, + .soft_reset = genphy_soft_reset, .config_intr = kszphy_config_intr, .get_sset_count = kszphy_get_sset_count, .get_strings = kszphy_get_strings, --- linux-5.8.0.orig/drivers/net/phy/mscc/mscc.h +++ linux-5.8.0/drivers/net/phy/mscc/mscc.h @@ -102,6 +102,7 @@ #define PHY_MCB_S6G_READ BIT(30) #define PHY_S6G_PLL5G_CFG0 0x06 +#define PHY_S6G_PLL5G_CFG2 0x08 #define PHY_S6G_LCPLL_CFG 0x11 #define PHY_S6G_PLL_CFG 0x2b #define PHY_S6G_COMMON_CFG 0x2c @@ -121,6 +122,9 @@ #define PHY_S6G_PLL_FSM_CTRL_DATA_POS 8 #define PHY_S6G_PLL_FSM_ENA_POS 7 +#define PHY_S6G_CFG2_FSM_DIS 1 +#define PHY_S6G_CFG2_FSM_CLK_BP 23 + #define MSCC_EXT_PAGE_ACCESS 31 #define MSCC_PHY_PAGE_STANDARD 0x0000 /* Standard registers */ #define MSCC_PHY_PAGE_EXTENDED 0x0001 /* Extended registers */ @@ -381,6 +385,10 @@ }; #endif /* CONFIG_OF_MDIO */ +enum csr_target { + MACRO_CTRL = 0x07, +}; + #if IS_ENABLED(CONFIG_MACSEC) int vsc8584_macsec_init(struct phy_device *phydev); void vsc8584_handle_macsec_interrupt(struct phy_device *phydev); --- linux-5.8.0.orig/drivers/net/phy/mscc/mscc_macsec.c +++ linux-5.8.0/drivers/net/phy/mscc/mscc_macsec.c @@ -977,7 +977,6 @@ switch (phydev->phy_id & phydev->drv->phy_id_mask) { case PHY_ID_VSC856X: - case PHY_ID_VSC8575: case PHY_ID_VSC8582: case PHY_ID_VSC8584: INIT_LIST_HEAD(&vsc8531->macsec_flows); --- linux-5.8.0.orig/drivers/net/phy/mscc/mscc_main.c +++ linux-5.8.0/drivers/net/phy/mscc/mscc_main.c @@ -710,6 +710,113 @@ return __phy_package_read(phydev, regnum); } +static u32 vsc85xx_csr_read(struct phy_device *phydev, + enum csr_target target, u32 reg) +{ + unsigned long deadline; + u32 val, val_l, val_h; + + phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_CSR_CNTL); + + /* CSR registers are grouped under different Target IDs. + * 6-bit Target_ID is split between MSCC_EXT_PAGE_CSR_CNTL_20 and + * MSCC_EXT_PAGE_CSR_CNTL_19 registers. + * Target_ID[5:2] maps to bits[3:0] of MSCC_EXT_PAGE_CSR_CNTL_20 + * and Target_ID[1:0] maps to bits[13:12] of MSCC_EXT_PAGE_CSR_CNTL_19. + */ + + /* Setup the Target ID */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_20, + MSCC_PHY_CSR_CNTL_20_TARGET(target >> 2)); + + if ((target >> 2 == 0x1) || (target >> 2 == 0x3)) + /* non-MACsec access */ + target &= 0x3; + else + target = 0; + + /* Trigger CSR Action - Read into the CSR's */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_19, + MSCC_PHY_CSR_CNTL_19_CMD | MSCC_PHY_CSR_CNTL_19_READ | + MSCC_PHY_CSR_CNTL_19_REG_ADDR(reg) | + MSCC_PHY_CSR_CNTL_19_TARGET(target)); + + /* Wait for register access*/ + deadline = jiffies + msecs_to_jiffies(PROC_CMD_NCOMPLETED_TIMEOUT_MS); + do { + usleep_range(500, 1000); + val = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_19); + } while (time_before(jiffies, deadline) && + !(val & MSCC_PHY_CSR_CNTL_19_CMD)); + + if (!(val & MSCC_PHY_CSR_CNTL_19_CMD)) + return 0xffffffff; + + /* Read the Least Significant Word (LSW) (17) */ + val_l = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_17); + + /* Read the Most Significant Word (MSW) (18) */ + val_h = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_18); + + phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, + MSCC_PHY_PAGE_STANDARD); + + return (val_h << 16) | val_l; +} + +static int vsc85xx_csr_write(struct phy_device *phydev, + enum csr_target target, u32 reg, u32 val) +{ + unsigned long deadline; + + phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_CSR_CNTL); + + /* CSR registers are grouped under different Target IDs. + * 6-bit Target_ID is split between MSCC_EXT_PAGE_CSR_CNTL_20 and + * MSCC_EXT_PAGE_CSR_CNTL_19 registers. + * Target_ID[5:2] maps to bits[3:0] of MSCC_EXT_PAGE_CSR_CNTL_20 + * and Target_ID[1:0] maps to bits[13:12] of MSCC_EXT_PAGE_CSR_CNTL_19. + */ + + /* Setup the Target ID */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_20, + MSCC_PHY_CSR_CNTL_20_TARGET(target >> 2)); + + /* Write the Least Significant Word (LSW) (17) */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_17, (u16)val); + + /* Write the Most Significant Word (MSW) (18) */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_18, (u16)(val >> 16)); + + if ((target >> 2 == 0x1) || (target >> 2 == 0x3)) + /* non-MACsec access */ + target &= 0x3; + else + target = 0; + + /* Trigger CSR Action - Write into the CSR's */ + phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_19, + MSCC_PHY_CSR_CNTL_19_CMD | + MSCC_PHY_CSR_CNTL_19_REG_ADDR(reg) | + MSCC_PHY_CSR_CNTL_19_TARGET(target)); + + /* Wait for register access */ + deadline = jiffies + msecs_to_jiffies(PROC_CMD_NCOMPLETED_TIMEOUT_MS); + do { + usleep_range(500, 1000); + val = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_19); + } while (time_before(jiffies, deadline) && + !(val & MSCC_PHY_CSR_CNTL_19_CMD)); + + if (!(val & MSCC_PHY_CSR_CNTL_19_CMD)) + return -ETIMEDOUT; + + phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, + MSCC_PHY_PAGE_STANDARD); + + return 0; +} + /* bus->mdio_lock should be locked when using this function */ static void vsc8584_csr_write(struct phy_device *phydev, u16 addr, u32 val) { @@ -1131,6 +1238,92 @@ return ret; } +/* Access LCPLL Cfg_2 */ +static void vsc8584_pll5g_cfg2_wr(struct phy_device *phydev, + bool disable_fsm) +{ + u32 rd_dat; + + rd_dat = vsc85xx_csr_read(phydev, MACRO_CTRL, PHY_S6G_PLL5G_CFG2); + rd_dat &= ~BIT(PHY_S6G_CFG2_FSM_DIS); + rd_dat |= (disable_fsm << PHY_S6G_CFG2_FSM_DIS); + vsc85xx_csr_write(phydev, MACRO_CTRL, PHY_S6G_PLL5G_CFG2, rd_dat); +} + +/* trigger a read to the spcified MCB */ +static int vsc8584_mcb_rd_trig(struct phy_device *phydev, + u32 mcb_reg_addr, u8 mcb_slave_num) +{ + u32 rd_dat = 0; + + /* read MCB */ + vsc85xx_csr_write(phydev, MACRO_CTRL, mcb_reg_addr, + (0x40000000 | (1L << mcb_slave_num))); + + return read_poll_timeout(vsc85xx_csr_read, rd_dat, + !(rd_dat & 0x40000000), + 4000, 200000, 0, + phydev, MACRO_CTRL, mcb_reg_addr); +} + +/* trigger a write to the spcified MCB */ +static int vsc8584_mcb_wr_trig(struct phy_device *phydev, + u32 mcb_reg_addr, + u8 mcb_slave_num) +{ + u32 rd_dat = 0; + + /* write back MCB */ + vsc85xx_csr_write(phydev, MACRO_CTRL, mcb_reg_addr, + (0x80000000 | (1L << mcb_slave_num))); + + return read_poll_timeout(vsc85xx_csr_read, rd_dat, + !(rd_dat & 0x80000000), + 4000, 200000, 0, + phydev, MACRO_CTRL, mcb_reg_addr); +} + +/* Sequence to Reset LCPLL for the VIPER and ELISE PHY */ +static int vsc8584_pll5g_reset(struct phy_device *phydev) +{ + bool dis_fsm; + int ret = 0; + + ret = vsc8584_mcb_rd_trig(phydev, 0x11, 0); + if (ret < 0) + goto done; + dis_fsm = 1; + + /* Reset LCPLL */ + vsc8584_pll5g_cfg2_wr(phydev, dis_fsm); + + /* write back LCPLL MCB */ + ret = vsc8584_mcb_wr_trig(phydev, 0x11, 0); + if (ret < 0) + goto done; + + /* 10 mSec sleep while LCPLL is hold in reset */ + usleep_range(10000, 20000); + + /* read LCPLL MCB into CSRs */ + ret = vsc8584_mcb_rd_trig(phydev, 0x11, 0); + if (ret < 0) + goto done; + dis_fsm = 0; + + /* Release the Reset of LCPLL */ + vsc8584_pll5g_cfg2_wr(phydev, dis_fsm); + + /* write back LCPLL MCB */ + ret = vsc8584_mcb_wr_trig(phydev, 0x11, 0); + if (ret < 0) + goto done; + + usleep_range(110000, 200000); +done: + return ret; +} + /* bus->mdio_lock should be locked when using this function */ static int vsc8584_config_pre_init(struct phy_device *phydev) { @@ -1379,6 +1572,11 @@ if (ret) goto err; + ret = phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, + MSCC_PHY_PAGE_STANDARD); + if (ret) + goto err; + if (!phy_interface_is_rgmii(phydev)) { val = PROC_CMD_MCB_ACCESS_MAC_CONF | PROC_CMD_RST_CONF_PORT | PROC_CMD_READ_MOD_WRITE_PORT; @@ -1546,8 +1744,16 @@ {0x16b2, 0x00007000}, {0x16b4, 0x00000814}, }; + struct device *dev = &phydev->mdio.dev; unsigned int i; u16 reg; + int ret; + + ret = vsc8584_pll5g_reset(phydev); + if (ret < 0) { + dev_err(dev, "failed LCPLL reset, ret: %d\n", ret); + return ret; + } phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_STANDARD); @@ -1582,101 +1788,6 @@ return 0; } -static u32 vsc85xx_csr_ctrl_phy_read(struct phy_device *phydev, - u32 target, u32 reg) -{ - unsigned long deadline; - u32 val, val_l, val_h; - - phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_CSR_CNTL); - - /* CSR registers are grouped under different Target IDs. - * 6-bit Target_ID is split between MSCC_EXT_PAGE_CSR_CNTL_20 and - * MSCC_EXT_PAGE_CSR_CNTL_19 registers. - * Target_ID[5:2] maps to bits[3:0] of MSCC_EXT_PAGE_CSR_CNTL_20 - * and Target_ID[1:0] maps to bits[13:12] of MSCC_EXT_PAGE_CSR_CNTL_19. - */ - - /* Setup the Target ID */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_20, - MSCC_PHY_CSR_CNTL_20_TARGET(target >> 2)); - - /* Trigger CSR Action - Read into the CSR's */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_19, - MSCC_PHY_CSR_CNTL_19_CMD | MSCC_PHY_CSR_CNTL_19_READ | - MSCC_PHY_CSR_CNTL_19_REG_ADDR(reg) | - MSCC_PHY_CSR_CNTL_19_TARGET(target & 0x3)); - - /* Wait for register access*/ - deadline = jiffies + msecs_to_jiffies(PROC_CMD_NCOMPLETED_TIMEOUT_MS); - do { - usleep_range(500, 1000); - val = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_19); - } while (time_before(jiffies, deadline) && - !(val & MSCC_PHY_CSR_CNTL_19_CMD)); - - if (!(val & MSCC_PHY_CSR_CNTL_19_CMD)) - return 0xffffffff; - - /* Read the Least Significant Word (LSW) (17) */ - val_l = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_17); - - /* Read the Most Significant Word (MSW) (18) */ - val_h = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_18); - - phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, - MSCC_PHY_PAGE_STANDARD); - - return (val_h << 16) | val_l; -} - -static int vsc85xx_csr_ctrl_phy_write(struct phy_device *phydev, - u32 target, u32 reg, u32 val) -{ - unsigned long deadline; - - phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, MSCC_PHY_PAGE_CSR_CNTL); - - /* CSR registers are grouped under different Target IDs. - * 6-bit Target_ID is split between MSCC_EXT_PAGE_CSR_CNTL_20 and - * MSCC_EXT_PAGE_CSR_CNTL_19 registers. - * Target_ID[5:2] maps to bits[3:0] of MSCC_EXT_PAGE_CSR_CNTL_20 - * and Target_ID[1:0] maps to bits[13:12] of MSCC_EXT_PAGE_CSR_CNTL_19. - */ - - /* Setup the Target ID */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_20, - MSCC_PHY_CSR_CNTL_20_TARGET(target >> 2)); - - /* Write the Least Significant Word (LSW) (17) */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_17, (u16)val); - - /* Write the Most Significant Word (MSW) (18) */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_18, (u16)(val >> 16)); - - /* Trigger CSR Action - Write into the CSR's */ - phy_base_write(phydev, MSCC_EXT_PAGE_CSR_CNTL_19, - MSCC_PHY_CSR_CNTL_19_CMD | - MSCC_PHY_CSR_CNTL_19_REG_ADDR(reg) | - MSCC_PHY_CSR_CNTL_19_TARGET(target & 0x3)); - - /* Wait for register access */ - deadline = jiffies + msecs_to_jiffies(PROC_CMD_NCOMPLETED_TIMEOUT_MS); - do { - usleep_range(500, 1000); - val = phy_base_read(phydev, MSCC_EXT_PAGE_CSR_CNTL_19); - } while (time_before(jiffies, deadline) && - !(val & MSCC_PHY_CSR_CNTL_19_CMD)); - - if (!(val & MSCC_PHY_CSR_CNTL_19_CMD)) - return -ETIMEDOUT; - - phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, - MSCC_PHY_PAGE_STANDARD); - - return 0; -} - static int __phy_write_mcb_s6g(struct phy_device *phydev, u32 reg, u8 mcb, u32 op) { @@ -1684,15 +1795,15 @@ u32 val; int ret; - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, reg, - op | (1 << mcb)); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, reg, + op | (1 << mcb)); if (ret) return -EINVAL; deadline = jiffies + msecs_to_jiffies(PROC_CMD_NCOMPLETED_TIMEOUT_MS); do { usleep_range(500, 1000); - val = vsc85xx_csr_ctrl_phy_read(phydev, PHY_MCB_TARGET, reg); + val = vsc85xx_csr_read(phydev, PHY_MCB_TARGET, reg); if (val == 0xffffffff) return -EIO; @@ -1751,7 +1862,11 @@ val &= ~MAC_CFG_MASK; val |= MAC_CFG_QSGMII; ret = phy_base_write(phydev, MSCC_PHY_MAC_CFG_FASTLINK, val); + if (ret) + goto err; + ret = phy_base_write(phydev, MSCC_EXT_PAGE_ACCESS, + MSCC_PHY_PAGE_STANDARD); if (ret) goto err; @@ -1767,41 +1882,41 @@ /* lcpll mcb */ phy_update_mcb_s6g(phydev, PHY_S6G_LCPLL_CFG, 0); /* pll5gcfg0 */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_PLL5G_CFG0, 0x7036f145); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_PLL5G_CFG0, 0x7036f145); if (ret) goto err; phy_commit_mcb_s6g(phydev, PHY_S6G_LCPLL_CFG, 0); /* pllcfg */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_PLL_CFG, - (3 << PHY_S6G_PLL_ENA_OFFS_POS) | - (120 << PHY_S6G_PLL_FSM_CTRL_DATA_POS) - | (0 << PHY_S6G_PLL_FSM_ENA_POS)); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_PLL_CFG, + (3 << PHY_S6G_PLL_ENA_OFFS_POS) | + (120 << PHY_S6G_PLL_FSM_CTRL_DATA_POS) + | (0 << PHY_S6G_PLL_FSM_ENA_POS)); if (ret) goto err; /* commoncfg */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_COMMON_CFG, - (0 << PHY_S6G_SYS_RST_POS) | - (0 << PHY_S6G_ENA_LANE_POS) | - (0 << PHY_S6G_ENA_LOOP_POS) | - (0 << PHY_S6G_QRATE_POS) | - (3 << PHY_S6G_IF_MODE_POS)); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_COMMON_CFG, + (0 << PHY_S6G_SYS_RST_POS) | + (0 << PHY_S6G_ENA_LANE_POS) | + (0 << PHY_S6G_ENA_LOOP_POS) | + (0 << PHY_S6G_QRATE_POS) | + (3 << PHY_S6G_IF_MODE_POS)); if (ret) goto err; /* misccfg */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_MISC_CFG, 1); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_MISC_CFG, 1); if (ret) goto err; /* gpcfg */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_GPC_CFG, 768); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_GPC_CFG, 768); if (ret) goto err; @@ -1812,8 +1927,8 @@ usleep_range(500, 1000); phy_update_mcb_s6g(phydev, PHY_MCB_S6G_CFG, 0); /* read 6G MCB into CSRs */ - reg = vsc85xx_csr_ctrl_phy_read(phydev, PHY_MCB_TARGET, - PHY_S6G_PLL_STATUS); + reg = vsc85xx_csr_read(phydev, PHY_MCB_TARGET, + PHY_S6G_PLL_STATUS); if (reg == 0xffffffff) { mutex_unlock(&phydev->mdio.bus->mdio_lock); return -EIO; @@ -1827,8 +1942,8 @@ } /* misccfg */ - ret = vsc85xx_csr_ctrl_phy_write(phydev, PHY_MCB_TARGET, - PHY_S6G_MISC_CFG, 0); + ret = vsc85xx_csr_write(phydev, PHY_MCB_TARGET, + PHY_S6G_MISC_CFG, 0); if (ret) goto err; @@ -1839,8 +1954,8 @@ usleep_range(500, 1000); phy_update_mcb_s6g(phydev, PHY_MCB_S6G_CFG, 0); /* read 6G MCB into CSRs */ - reg = vsc85xx_csr_ctrl_phy_read(phydev, PHY_MCB_TARGET, - PHY_S6G_IB_STATUS0); + reg = vsc85xx_csr_read(phydev, PHY_MCB_TARGET, + PHY_S6G_IB_STATUS0); if (reg == 0xffffffff) { mutex_unlock(&phydev->mdio.bus->mdio_lock); return -EIO; --- linux-5.8.0.orig/drivers/net/phy/phy.c +++ linux-5.8.0/drivers/net/phy/phy.c @@ -293,14 +293,16 @@ phydev->autoneg = autoneg; - phydev->speed = speed; + if (autoneg == AUTONEG_DISABLE) { + phydev->speed = speed; + phydev->duplex = duplex; + } linkmode_copy(phydev->advertising, advertising); linkmode_mod_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, phydev->advertising, autoneg == AUTONEG_ENABLE); - phydev->duplex = duplex; phydev->master_slave_set = cmd->base.master_slave_cfg; phydev->mdix_ctrl = cmd->base.eth_tp_mdix_ctrl; @@ -325,7 +327,7 @@ if (phydev->interface == PHY_INTERFACE_MODE_MOCA) cmd->base.port = PORT_BNC; else - cmd->base.port = PORT_MII; + cmd->base.port = phydev->port; cmd->base.transceiver = phy_is_internal(phydev) ? XCVR_INTERNAL : XCVR_EXTERNAL; cmd->base.phy_address = phydev->mdio.addr; @@ -948,7 +950,7 @@ { struct net_device *dev = phydev->attached_dev; - if (!phy_is_started(phydev)) { + if (!phy_is_started(phydev) && phydev->state != PHY_DOWN) { WARN(1, "called from state %s\n", phy_state_to_str(phydev->state)); return; --- linux-5.8.0.orig/drivers/net/phy/phy_device.c +++ linux-5.8.0/drivers/net/phy/phy_device.c @@ -607,6 +607,7 @@ dev->pause = 0; dev->asym_pause = 0; dev->link = 0; + dev->port = PORT_TP; dev->interface = PHY_INTERFACE_MODE_GMII; dev->autoneg = AUTONEG_ENABLE; @@ -616,7 +617,9 @@ if (c45_ids) dev->c45_ids = *c45_ids; dev->irq = bus->irq[addr]; + dev_set_name(&mdiodev->dev, PHY_ID_FMT, bus->id, addr); + device_initialize(&mdiodev->dev); dev->state = PHY_DOWN; @@ -650,10 +653,8 @@ ret = phy_request_driver_module(dev, phy_id); } - if (!ret) { - device_initialize(&mdiodev->dev); - } else { - kfree(dev); + if (ret) { + put_device(&mdiodev->dev); dev = ERR_PTR(ret); } @@ -1092,10 +1093,6 @@ if (ret < 0) return ret; - ret = phy_disable_interrupts(phydev); - if (ret) - return ret; - if (phydev->drv->config_init) ret = phydev->drv->config_init(phydev); @@ -1358,6 +1355,14 @@ phydev->state = PHY_READY; + /* Port is set to PORT_TP by default and the actual PHY driver will set + * it to different value depending on the PHY configuration. If we have + * the generic PHY driver we can't figure it out, thus set the old + * legacy PORT_MII value. + */ + if (using_genphy) + phydev->port = PORT_MII; + /* Initial carrier state is off as the phy is about to be * (re)initialized. */ @@ -1372,6 +1377,10 @@ if (err) goto error; + err = phy_disable_interrupts(phydev); + if (err) + return err; + phy_resume(phydev); phy_led_triggers_register(phydev); @@ -1631,7 +1640,8 @@ phy_led_triggers_unregister(phydev); - module_put(phydev->mdio.dev.driver->owner); + if (phydev->mdio.dev.driver) + module_put(phydev->mdio.dev.driver->owner); /* If the device had no specific driver before (i.e. - it * was using the generic driver), we unbind the device --- linux-5.8.0.orig/drivers/net/phy/realtek.c +++ linux-5.8.0/drivers/net/phy/realtek.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0+ -/* - * drivers/net/phy/realtek.c +/* drivers/net/phy/realtek.c * * Driver for Realtek PHYs * @@ -32,9 +31,9 @@ #define RTL8211F_TX_DELAY BIT(8) #define RTL8211F_RX_DELAY BIT(3) -#define RTL8211E_TX_DELAY BIT(1) -#define RTL8211E_RX_DELAY BIT(2) -#define RTL8211E_MODE_MII_GMII BIT(3) +#define RTL8211E_CTRL_DELAY BIT(13) +#define RTL8211E_TX_DELAY BIT(12) +#define RTL8211E_RX_DELAY BIT(11) #define RTL8201F_ISR 0x1e #define RTL8201F_IER 0x13 @@ -246,16 +245,16 @@ /* enable TX/RX delay for rgmii-* modes, and disable them for rgmii. */ switch (phydev->interface) { case PHY_INTERFACE_MODE_RGMII: - val = 0; + val = RTL8211E_CTRL_DELAY | 0; break; case PHY_INTERFACE_MODE_RGMII_ID: - val = RTL8211E_TX_DELAY | RTL8211E_RX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_TX_DELAY | RTL8211E_RX_DELAY; break; case PHY_INTERFACE_MODE_RGMII_RXID: - val = RTL8211E_RX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_RX_DELAY; break; case PHY_INTERFACE_MODE_RGMII_TXID: - val = RTL8211E_TX_DELAY; + val = RTL8211E_CTRL_DELAY | RTL8211E_TX_DELAY; break; default: /* the rest of the modes imply leaving delays as is. */ return 0; @@ -263,11 +262,12 @@ /* According to a sample driver there is a 0x1c config register on the * 0xa4 extension page (0x7) layout. It can be used to disable/enable - * the RX/TX delays otherwise controlled by RXDLY/TXDLY pins. It can - * also be used to customize the whole configuration register: - * 8:6 = PHY Address, 5:4 = Auto-Negotiation, 3 = Interface Mode Select, - * 2 = RX Delay, 1 = TX Delay, 0 = SELRGV (see original PHY datasheet - * for details). + * the RX/TX delays otherwise controlled by RXDLY/TXDLY pins. + * The configuration register definition: + * 14 = reserved + * 13 = Force Tx RX Delay controlled by bit12 bit11, + * 12 = RX Delay, 11 = TX Delay + * 10:0 = Test && debug settings reserved by realtek */ oldpage = phy_select_page(phydev, 0x7); if (oldpage < 0) @@ -277,7 +277,8 @@ if (ret) goto err_restore_page; - ret = __phy_modify(phydev, 0x1c, RTL8211E_TX_DELAY | RTL8211E_RX_DELAY, + ret = __phy_modify(phydev, 0x1c, RTL8211E_CTRL_DELAY + | RTL8211E_TX_DELAY | RTL8211E_RX_DELAY, val); err_restore_page: @@ -541,6 +542,8 @@ { PHY_ID_MATCH_EXACT(0x00008201), .name = "RTL8201CP Ethernet", + .read_page = rtl821x_read_page, + .write_page = rtl821x_write_page, }, { PHY_ID_MATCH_EXACT(0x001cc816), .name = "RTL8201F Fast Ethernet", --- linux-5.8.0.orig/drivers/net/phy/sfp-bus.c +++ linux-5.8.0/drivers/net/phy/sfp-bus.c @@ -44,6 +44,17 @@ phylink_set(modes, 2500baseX_Full); } +static void sfp_quirk_ubnt_uf_instant(const struct sfp_eeprom_id *id, + unsigned long *modes) +{ + /* Ubiquiti U-Fiber Instant module claims that support all transceiver + * types including 10G Ethernet which is not truth. So clear all claimed + * modes and set only one mode which module supports: 1000baseX_Full. + */ + phylink_zero(modes); + phylink_set(modes, 1000baseX_Full); +} + static const struct sfp_quirk sfp_quirks[] = { { // Alcatel Lucent G-010S-P can operate at 2500base-X, but @@ -63,6 +74,10 @@ .vendor = "HUAWEI", .part = "MA5671A", .modes = sfp_quirk_2500basex, + }, { + .vendor = "UBNT", + .part = "UF-INSTANT", + .modes = sfp_quirk_ubnt_uf_instant, }, }; --- linux-5.8.0.orig/drivers/net/phy/sfp.c +++ linux-5.8.0/drivers/net/phy/sfp.c @@ -219,6 +219,7 @@ struct sfp_bus *sfp_bus; struct phy_device *mod_phy; const struct sff_data *type; + size_t i2c_block_size; u32 max_power_mW; unsigned int (*get_state)(struct sfp *); @@ -272,8 +273,21 @@ static bool sfp_module_supported(const struct sfp_eeprom_id *id) { - return id->base.phys_id == SFF8024_ID_SFP && - id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP; + if (id->base.phys_id == SFF8024_ID_SFP && + id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP) + return true; + + /* SFP GPON module Ubiquiti U-Fiber Instant has in its EEPROM stored + * phys id SFF instead of SFP. Therefore mark this module explicitly + * as supported based on vendor name and pn match. + */ + if (id->base.phys_id == SFF8024_ID_SFF_8472 && + id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP && + !memcmp(id->base.vendor_name, "UBNT ", 16) && + !memcmp(id->base.vendor_pn, "UF-INSTANT ", 16)) + return true; + + return false; } static const struct sff_data sfp_data = { @@ -336,6 +350,7 @@ { struct i2c_msg msgs[2]; u8 bus_addr = a2 ? 0x51 : 0x50; + size_t block_size = sfp->i2c_block_size; size_t this_len; int ret; @@ -350,8 +365,8 @@ while (len) { this_len = len; - if (this_len > 16) - this_len = 16; + if (this_len > block_size) + this_len = block_size; msgs[1].len = this_len; @@ -1272,6 +1287,20 @@ struct sfp *sfp = container_of(work, struct sfp, hwmon_probe.work); int err, i; + /* hwmon interface needs to access 16bit registers in atomic way to + * guarantee coherency of the diagnostic monitoring data. If it is not + * possible to guarantee coherency because EEPROM is broken in such way + * that does not support atomic 16bit read operation then we have to + * skip registration of hwmon device. + */ + if (sfp->i2c_block_size < 2) { + dev_info(sfp->dev, + "skipping hwmon device registration due to broken EEPROM\n"); + dev_info(sfp->dev, + "diagnostic EEPROM area cannot be read atomically to guarantee data coherency\n"); + return; + } + err = sfp_read(sfp, true, 0, &sfp->diag, sizeof(sfp->diag)); if (err < 0) { if (sfp->hwmon_tries--) { @@ -1632,6 +1661,32 @@ return 0; } +/* GPON modules based on Realtek RTL8672 and RTL9601C chips (e.g. V-SOL + * V2801F, CarlitoxxPro CPGOS03-0490, Ubiquiti U-Fiber Instant, ...) do + * not support multibyte reads from the EEPROM. Each multi-byte read + * operation returns just one byte of EEPROM followed by zeros. There is + * no way to identify which modules are using Realtek RTL8672 and RTL9601C + * chips. Moreover every OEM of V-SOL V2801F module puts its own vendor + * name and vendor id into EEPROM, so there is even no way to detect if + * module is V-SOL V2801F. Therefore check for those zeros in the read + * data and then based on check switch to reading EEPROM to one byte + * at a time. + */ +static bool sfp_id_needs_byte_io(struct sfp *sfp, void *buf, size_t len) +{ + size_t i, block_size = sfp->i2c_block_size; + + /* Already using byte IO */ + if (block_size == 1) + return false; + + for (i = 1; i < len; i += block_size) { + if (memchr_inv(buf + i, '\0', min(block_size - 1, len - i))) + return false; + } + return true; +} + static int sfp_sm_mod_probe(struct sfp *sfp, bool report) { /* SFP module inserted - read I2C data */ @@ -1640,18 +1695,51 @@ u8 check; int ret; - ret = sfp_read(sfp, false, 0, &id, sizeof(id)); + /* Some SFP modules and also some Linux I2C drivers do not like reads + * longer than 16 bytes, so read the EEPROM in chunks of 16 bytes at + * a time. + */ + sfp->i2c_block_size = 16; + + ret = sfp_read(sfp, false, 0, &id.base, sizeof(id.base)); if (ret < 0) { if (report) dev_err(sfp->dev, "failed to read EEPROM: %d\n", ret); return -EAGAIN; } - if (ret != sizeof(id)) { + if (ret != sizeof(id.base)) { dev_err(sfp->dev, "EEPROM short read: %d\n", ret); return -EAGAIN; } + /* Some SFP modules (e.g. Nokia 3FE46541AA) lock up if read from + * address 0x51 is just one byte at a time. Also SFF-8472 requires + * that EEPROM supports atomic 16bit read operation for diagnostic + * fields, so do not switch to one byte reading at a time unless it + * is really required and we have no other option. + */ + if (sfp_id_needs_byte_io(sfp, &id.base, sizeof(id.base))) { + dev_info(sfp->dev, + "Detected broken RTL8672/RTL9601C emulated EEPROM\n"); + dev_info(sfp->dev, + "Switching to reading EEPROM to one byte at a time\n"); + sfp->i2c_block_size = 1; + + ret = sfp_read(sfp, false, 0, &id.base, sizeof(id.base)); + if (ret < 0) { + if (report) + dev_err(sfp->dev, "failed to read EEPROM: %d\n", + ret); + return -EAGAIN; + } + + if (ret != sizeof(id.base)) { + dev_err(sfp->dev, "EEPROM short read: %d\n", ret); + return -EAGAIN; + } + } + /* Cotsworks do not seem to update the checksums when they * do the final programming with the final module part number, * serial number and date code. @@ -1675,6 +1763,18 @@ } } + ret = sfp_read(sfp, false, SFP_CC_BASE + 1, &id.ext, sizeof(id.ext)); + if (ret < 0) { + if (report) + dev_err(sfp->dev, "failed to read EEPROM: %d\n", ret); + return -EAGAIN; + } + + if (ret != sizeof(id.ext)) { + dev_err(sfp->dev, "EEPROM short read: %d\n", ret); + return -EAGAIN; + } + check = sfp_check(&id.ext, sizeof(id.ext) - 1); if (check != id.ext.cc_ext) { if (cotsworks) { @@ -2344,7 +2444,8 @@ continue; sfp->gpio_irq[i] = gpiod_to_irq(sfp->gpio[i]); - if (!sfp->gpio_irq[i]) { + if (sfp->gpio_irq[i] < 0) { + sfp->gpio_irq[i] = 0; sfp->need_poll = true; continue; } --- linux-5.8.0.orig/drivers/net/tap.c +++ linux-5.8.0/drivers/net/tap.c @@ -1093,10 +1093,9 @@ return -ENOLINK; } ret = 0; - u = tap->dev->type; + dev_get_mac_address(&sa, dev_net(tap->dev), tap->dev->name); if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) || - copy_to_user(&ifr->ifr_hwaddr.sa_data, tap->dev->dev_addr, ETH_ALEN) || - put_user(u, &ifr->ifr_hwaddr.sa_family)) + copy_to_user(&ifr->ifr_hwaddr, &sa, sizeof(sa))) ret = -EFAULT; tap_put_tap_dev(tap); rtnl_unlock(); @@ -1111,7 +1110,7 @@ rtnl_unlock(); return -ENOLINK; } - ret = dev_set_mac_address(tap->dev, &sa, NULL); + ret = dev_set_mac_address_user(tap->dev, &sa, NULL); tap_put_tap_dev(tap); rtnl_unlock(); return ret; --- linux-5.8.0.orig/drivers/net/team/team.c +++ linux-5.8.0/drivers/net/team/team.c @@ -287,7 +287,7 @@ for (i--; i >= 0; i--) __team_option_inst_del_option(team, dst_opts[i]); - i = option_count - 1; + i = option_count; alloc_rollback: for (i--; i >= 0; i--) kfree(dst_opts[i]); @@ -991,7 +991,8 @@ unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM; - list_for_each_entry(port, &team->port_list, list) { + rcu_read_lock(); + list_for_each_entry_rcu(port, &team->port_list, list) { vlan_features = netdev_increment_features(vlan_features, port->dev->vlan_features, TEAM_VLAN_FEATURES); @@ -1005,6 +1006,7 @@ if (port->dev->hard_header_len > max_hard_header_len) max_hard_header_len = port->dev->hard_header_len; } + rcu_read_unlock(); team->dev->vlan_features = vlan_features; team->dev->hw_enc_features = enc_features | NETIF_F_GSO_ENCAP_ALL | @@ -1020,9 +1022,7 @@ static void team_compute_features(struct team *team) { - mutex_lock(&team->lock); __team_compute_features(team); - mutex_unlock(&team->lock); netdev_change_features(team->dev); } @@ -2112,6 +2112,7 @@ dev->header_ops = port_dev->header_ops; dev->type = port_dev->type; dev->hard_header_len = port_dev->hard_header_len; + dev->needed_headroom = port_dev->needed_headroom; dev->addr_len = port_dev->addr_len; dev->mtu = port_dev->mtu; memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len); --- linux-5.8.0.orig/drivers/net/tun.c +++ linux-5.8.0/drivers/net/tun.c @@ -1434,7 +1434,7 @@ int i; if (it->nr_segs > MAX_SKB_FRAGS + 1) - return ERR_PTR(-ENOMEM); + return ERR_PTR(-EMSGSIZE); local_bh_disable(); skb = napi_get_frags(&tfile->napi); @@ -1994,12 +1994,15 @@ struct tun_file *tfile = file->private_data; struct tun_struct *tun = tun_get(tfile); ssize_t result; + int noblock = 0; if (!tun) return -EBADFD; - result = tun_get_user(tun, tfile, NULL, from, - file->f_flags & O_NONBLOCK, false); + if ((file->f_flags & O_NONBLOCK) || (iocb->ki_flags & IOCB_NOWAIT)) + noblock = 1; + + result = tun_get_user(tun, tfile, NULL, from, noblock, false); tun_put(tun); return result; @@ -2218,10 +2221,15 @@ struct tun_file *tfile = file->private_data; struct tun_struct *tun = tun_get(tfile); ssize_t len = iov_iter_count(to), ret; + int noblock = 0; if (!tun) return -EBADFD; - ret = tun_do_read(tun, tfile, to, file->f_flags & O_NONBLOCK, NULL); + + if ((file->f_flags & O_NONBLOCK) || (iocb->ki_flags & IOCB_NOWAIT)) + noblock = 1; + + ret = tun_do_read(tun, tfile, to, noblock, NULL); ret = min_t(ssize_t, ret, len); if (ret > 0) iocb->ki_pos = ret; @@ -3182,15 +3190,14 @@ case SIOCGIFHWADDR: /* Get hw address */ - memcpy(ifr.ifr_hwaddr.sa_data, tun->dev->dev_addr, ETH_ALEN); - ifr.ifr_hwaddr.sa_family = tun->dev->type; + dev_get_mac_address(&ifr.ifr_hwaddr, net, tun->dev->name); if (copy_to_user(argp, &ifr, ifreq_len)) ret = -EFAULT; break; case SIOCSIFHWADDR: /* Set hw address */ - ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr, NULL); + ret = dev_set_mac_address_user(tun->dev, &ifr.ifr_hwaddr, NULL); break; case TUNGETSNDBUF: --- linux-5.8.0.orig/drivers/net/usb/asix_common.c +++ linux-5.8.0/drivers/net/usb/asix_common.c @@ -296,7 +296,7 @@ netdev_dbg(dev->net, "asix_get_phy_addr()\n"); - if (ret < 0) { + if (ret < 2) { netdev_err(dev->net, "Error reading PHYID register: %02x\n", ret); goto out; } --- linux-5.8.0.orig/drivers/net/usb/ax88179_178a.c +++ linux-5.8.0/drivers/net/usb/ax88179_178a.c @@ -1823,6 +1823,7 @@ .status = ax88179_status, .link_reset = ax88179_link_reset, .reset = ax88179_reset, + .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup, --- linux-5.8.0.orig/drivers/net/usb/cdc-phonet.c +++ linux-5.8.0/drivers/net/usb/cdc-phonet.c @@ -387,6 +387,8 @@ err = register_netdev(dev); if (err) { + /* Set disconnected flag so that disconnect() returns early. */ + pnd->disconnected = 1; usb_driver_release_interface(&usbpn_driver, data_intf); goto out; } --- linux-5.8.0.orig/drivers/net/usb/cdc_ether.c +++ linux-5.8.0/drivers/net/usb/cdc_ether.c @@ -794,6 +794,13 @@ .driver_info = 0, }, +/* Lenovo Powered USB-C Travel Hub (4X90S92381, based on Realtek RTL8153) */ +{ + USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x721e, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + /* ThinkPad USB-C Dock Gen 2 (based on Realtek RTL8153) */ { USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0xa387, USB_CLASS_COMM, --- linux-5.8.0.orig/drivers/net/usb/cdc_ncm.c +++ linux-5.8.0/drivers/net/usb/cdc_ncm.c @@ -1198,7 +1198,10 @@ * accordingly. Otherwise, we should check here. */ if (ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END) - delayed_ndp_size = ALIGN(ctx->max_ndp_size, ctx->tx_ndp_modulus); + delayed_ndp_size = ctx->max_ndp_size + + max_t(u32, + ctx->tx_ndp_modulus, + ctx->tx_modulus + ctx->tx_remainder) - 1; else delayed_ndp_size = 0; @@ -1409,7 +1412,8 @@ if (!(dev->driver_info->flags & FLAG_SEND_ZLP) && skb_out->len > ctx->min_tx_pkt) { padding_count = ctx->tx_curr_size - skb_out->len; - skb_put_zero(skb_out, padding_count); + if (!WARN_ON(padding_count > ctx->tx_curr_size)) + skb_put_zero(skb_out, padding_count); } else if (skb_out->len < ctx->tx_curr_size && (skb_out->len % dev->maxpacket) == 0) { skb_put_u8(skb_out, 0); /* force short packet */ @@ -1862,9 +1866,6 @@ * USB_CDC_NOTIFY_NETWORK_CONNECTION notification shall be * sent by device after USB_CDC_NOTIFY_SPEED_CHANGE. */ - netif_info(dev, link, dev->net, - "network connection: %sconnected\n", - !!event->wValue ? "" : "dis"); usbnet_link_change(dev, !!event->wValue, 0); break; --- linux-5.8.0.orig/drivers/net/usb/dm9601.c +++ linux-5.8.0/drivers/net/usb/dm9601.c @@ -625,6 +625,10 @@ USB_DEVICE(0x0a46, 0x1269), /* DM9621A USB to Fast Ethernet Adapter */ .driver_info = (unsigned long)&dm9601_info, }, + { + USB_DEVICE(0x0586, 0x3427), /* ZyXEL Keenetic Plus DSL xDSL modem */ + .driver_info = (unsigned long)&dm9601_info, + }, {}, // END }; --- linux-5.8.0.orig/drivers/net/usb/ipheth.c +++ linux-5.8.0/drivers/net/usb/ipheth.c @@ -59,7 +59,7 @@ #define IPHETH_USBINTF_SUBCLASS 253 #define IPHETH_USBINTF_PROTO 1 -#define IPHETH_BUF_SIZE 1516 +#define IPHETH_BUF_SIZE 1514 #define IPHETH_IP_ALIGN 2 /* padding at front of URB */ #define IPHETH_TX_TIMEOUT (5 * HZ) --- linux-5.8.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-5.8.0/drivers/net/usb/qmi_wwan.c @@ -441,13 +441,6 @@ goto err; } - /* we don't want to modify a running netdev */ - if (netif_running(dev->net)) { - netdev_err(dev->net, "Cannot change a running device\n"); - ret = -EBUSY; - goto err; - } - ret = qmimux_register_device(dev->net, mux_id); if (!ret) { info->flags |= QMI_WWAN_FLAG_MUX; @@ -477,13 +470,6 @@ if (!rtnl_trylock()) return restart_syscall(); - /* we don't want to modify a running netdev */ - if (netif_running(dev->net)) { - netdev_err(dev->net, "Cannot change a running device\n"); - ret = -EBUSY; - goto err; - } - del_dev = qmimux_find_dev(dev, mux_id); if (!del_dev) { netdev_err(dev->net, "mux_id not present\n"); @@ -1058,6 +1044,7 @@ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0512)}, /* Quectel EG12/EM12 */ + {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */ {QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */ /* 3. Combined interface devices matching on interface number */ @@ -1092,7 +1079,7 @@ {QMI_FIXED_INTF(0x05c6, 0x9011, 4)}, {QMI_FIXED_INTF(0x05c6, 0x9021, 1)}, {QMI_FIXED_INTF(0x05c6, 0x9022, 2)}, - {QMI_FIXED_INTF(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */ + {QMI_QUIRK_SET_DTR(0x05c6, 0x9025, 4)}, /* Alcatel-sbell ASB TL131 TDD LTE (China Mobile) */ {QMI_FIXED_INTF(0x05c6, 0x9026, 3)}, {QMI_FIXED_INTF(0x05c6, 0x902e, 5)}, {QMI_FIXED_INTF(0x05c6, 0x9031, 5)}, @@ -1279,6 +1266,7 @@ {QMI_FIXED_INTF(0x19d2, 0x1255, 4)}, {QMI_FIXED_INTF(0x19d2, 0x1256, 4)}, {QMI_FIXED_INTF(0x19d2, 0x1270, 5)}, /* ZTE MF667 */ + {QMI_FIXED_INTF(0x19d2, 0x1275, 3)}, /* ZTE P685M */ {QMI_FIXED_INTF(0x19d2, 0x1401, 2)}, {QMI_FIXED_INTF(0x19d2, 0x1402, 2)}, /* ZTE MF60 */ {QMI_FIXED_INTF(0x19d2, 0x1424, 2)}, @@ -1331,6 +1319,7 @@ {QMI_FIXED_INTF(0x1bc7, 0x1101, 3)}, /* Telit ME910 dual modem */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1201, 2)}, /* Telit LE920, LE920A4 */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x1230, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1260, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1261, 2)}, /* Telit LE910Cx */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1900, 1)}, /* Telit LN940 series */ @@ -1345,12 +1334,14 @@ {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ + {QMI_QUIRK_SET_DTR(0x1e2d, 0x006f, 8)}, /* Cinterion PLS83/PLS63 */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ {QMI_FIXED_INTF(0x1e2d, 0x0063, 10)}, /* Cinterion ALASxx (1 RmNet) */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 4)}, /* Cinterion PHxx,PXxx (2 RmNet) */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 5)}, /* Cinterion PHxx,PXxx (2 RmNet) */ {QMI_FIXED_INTF(0x1e2d, 0x0083, 4)}, /* Cinterion PHxx,PXxx (1 RmNet + USB Audio)*/ {QMI_QUIRK_SET_DTR(0x1e2d, 0x00b0, 4)}, /* Cinterion CLS8 */ + {QMI_FIXED_INTF(0x1e2d, 0x00b7, 0)}, /* Cinterion MV31 RmNet */ {QMI_FIXED_INTF(0x413c, 0x81a2, 8)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */ {QMI_FIXED_INTF(0x413c, 0x81a3, 8)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */ {QMI_FIXED_INTF(0x413c, 0x81a4, 8)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */ @@ -1375,6 +1366,7 @@ {QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)}, /* Fibocom NL678 series */ {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */ {QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/ + {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ /* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ --- linux-5.8.0.orig/drivers/net/usb/r8152.c +++ linux-5.8.0/drivers/net/usb/r8152.c @@ -1504,7 +1504,7 @@ sa->sa_family = dev->type; - ret = eth_platform_get_mac_address(&dev->dev, sa->sa_data); + ret = eth_platform_get_mac_address(&tp->udev->dev, sa->sa_data); if (ret < 0) { if (tp->version == RTL_VER_01) { ret = pla_ocp_read(tp, PLA_IDR, 8, sa->sa_data); @@ -3033,29 +3033,6 @@ device_set_wakeup_enable(&tp->udev->dev, false); } -static void r8153_mac_clk_spd(struct r8152 *tp, bool enable) -{ - /* MAC clock speed down */ - if (enable) { - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, - ALDPS_SPDWN_RATIO); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, - EEE_SPDWN_RATIO); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, - PKT_AVAIL_SPDWN_EN | SUSPEND_SPDWN_EN | - U1U2_SPDWN_EN | L1_SPDWN_EN); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4, - PWRSAVE_SPDWN_EN | RXDV_SPDWN_EN | TX10MIDLE_EN | - TP100_SPDWN_EN | TP500_SPDWN_EN | EEE_SPDWN_EN | - TP1000_SPDWN_EN); - } else { - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, 0); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, 0); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, 0); - ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4, 0); - } -} - static void r8153_u1u2en(struct r8152 *tp, bool enable) { u8 u1u2[8]; @@ -3355,11 +3332,9 @@ if (enable) { r8153_u1u2en(tp, false); r8153_u2p3en(tp, false); - r8153_mac_clk_spd(tp, true); rtl_runtime_suspend_enable(tp, true); } else { rtl_runtime_suspend_enable(tp, false); - r8153_mac_clk_spd(tp, false); switch (tp->version) { case RTL_VER_03: @@ -4695,7 +4670,6 @@ { u32 ocp_data; - r8153_mac_clk_spd(tp, false); rxdy_gated_en(tp, true); r8153_teredo_off(tp); @@ -4746,8 +4720,6 @@ { u32 ocp_data; - r8153_mac_clk_spd(tp, true); - ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); ocp_data &= ~NOW_IS_OOB; ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data); @@ -5473,10 +5445,15 @@ ocp_write_word(tp, MCU_TYPE_USB, USB_CONNECT_TIMER, 0x0001); + /* MAC clock speed down */ + ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, 0); + ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, 0); + ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, 0); + ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4, 0); + r8153_power_cut_en(tp, false); rtl_runtime_suspend_enable(tp, false); r8153_u1u2en(tp, true); - r8153_mac_clk_spd(tp, false); usb_enable_lpm(tp->udev); ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_CONFIG6); @@ -6542,7 +6519,10 @@ ops->in_nway = rtl8153_in_nway; ops->hw_phy_cfg = r8153_hw_phy_cfg; ops->autosuspend_en = rtl8153_runtime_enable; - tp->rx_buf_sz = 32 * 1024; + if (tp->udev->speed < USB_SPEED_SUPER) + tp->rx_buf_sz = 16 * 1024; + else + tp->rx_buf_sz = 32 * 1024; tp->eee_en = true; tp->eee_adv = MDIO_EEE_1000T | MDIO_EEE_100TX; break; @@ -6893,6 +6873,7 @@ {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720c)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7214)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x721e)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0xa387)}, {REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)}, {REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff)}, --- linux-5.8.0.orig/drivers/net/usb/rndis_host.c +++ linux-5.8.0/drivers/net/usb/rndis_host.c @@ -201,7 +201,7 @@ dev_dbg(&info->control->dev, "rndis response error, code %d\n", retval); } - msleep(20); + msleep(40); } dev_dbg(&info->control->dev, "rndis response timeout\n"); return -ETIMEDOUT; @@ -387,7 +387,7 @@ reply_len = sizeof *phym; retval = rndis_query(dev, intf, u.buf, RNDIS_OID_GEN_PHYSICAL_MEDIUM, - 0, (void **) &phym, &reply_len); + reply_len, (void **)&phym, &reply_len); if (retval != 0 || !phym) { /* OID is optional so don't fail here. */ phym_unspec = cpu_to_le32(RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED); --- linux-5.8.0.orig/drivers/net/usb/rtl8150.c +++ linux-5.8.0/drivers/net/usb/rtl8150.c @@ -274,12 +274,20 @@ return 1; } -static inline void set_ethernet_addr(rtl8150_t * dev) +static void set_ethernet_addr(rtl8150_t *dev) { - u8 node_id[6]; + u8 node_id[ETH_ALEN]; + int ret; - get_registers(dev, IDR, sizeof(node_id), node_id); - memcpy(dev->netdev->dev_addr, node_id, sizeof(node_id)); + ret = get_registers(dev, IDR, sizeof(node_id), node_id); + + if (ret == sizeof(node_id)) { + ether_addr_copy(dev->netdev->dev_addr, node_id); + } else { + eth_hw_addr_random(dev->netdev); + netdev_notice(dev->netdev, "Assigned a random MAC address: %pM\n", + dev->netdev->dev_addr); + } } static int rtl8150_set_mac_address(struct net_device *netdev, void *p) --- linux-5.8.0.orig/drivers/net/veth.c +++ linux-5.8.0/drivers/net/veth.c @@ -301,8 +301,7 @@ if (rxq < rcv->real_num_rx_queues) { rq = &rcv_priv->rq[rxq]; rcv_xdp = rcu_access_pointer(rq->xdp_prog); - if (rcv_xdp) - skb_record_rx_queue(skb, rxq); + skb_record_rx_queue(skb, rxq); } skb_tx_timestamp(skb); --- linux-5.8.0.orig/drivers/net/virtio_net.c +++ linux-5.8.0/drivers/net/virtio_net.c @@ -63,6 +63,11 @@ VIRTIO_NET_F_GUEST_CSUM }; +#define GUEST_OFFLOAD_LRO_MASK ((1ULL << VIRTIO_NET_F_GUEST_TSO4) | \ + (1ULL << VIRTIO_NET_F_GUEST_TSO6) | \ + (1ULL << VIRTIO_NET_F_GUEST_ECN) | \ + (1ULL << VIRTIO_NET_F_GUEST_UFO)) + struct virtnet_stat_desc { char desc[ETH_GSTRING_LEN]; size_t offset; @@ -2088,14 +2093,16 @@ get_online_cpus(); err = _virtnet_set_queues(vi, queue_pairs); - if (!err) { - netif_set_real_num_tx_queues(dev, queue_pairs); - netif_set_real_num_rx_queues(dev, queue_pairs); - - virtnet_set_affinity(vi); + if (err) { + put_online_cpus(); + goto err; } + virtnet_set_affinity(vi); put_online_cpus(); + netif_set_real_num_tx_queues(dev, queue_pairs); + netif_set_real_num_rx_queues(dev, queue_pairs); + err: return err; } @@ -2547,7 +2554,8 @@ if (features & NETIF_F_LRO) offloads = vi->guest_offloads_capable; else - offloads = 0; + offloads = vi->guest_offloads_capable & + ~GUEST_OFFLOAD_LRO_MASK; err = virtnet_set_guest_offloads(vi, offloads); if (err) @@ -3083,6 +3091,7 @@ dev_err(&vdev->dev, "device MTU appears to have changed it is now %d < %d", mtu, dev->min_mtu); + err = -EINVAL; goto free; } --- linux-5.8.0.orig/drivers/net/vmxnet3/vmxnet3_drv.c +++ linux-5.8.0/drivers/net/vmxnet3/vmxnet3_drv.c @@ -886,7 +886,8 @@ switch (protocol) { case IPPROTO_TCP: - ctx->l4_hdr_size = tcp_hdrlen(skb); + ctx->l4_hdr_size = skb->encapsulation ? inner_tcp_hdrlen(skb) : + tcp_hdrlen(skb); break; case IPPROTO_UDP: ctx->l4_hdr_size = sizeof(struct udphdr); @@ -1031,7 +1032,6 @@ /* Use temporary descriptor to avoid touching bits multiple times */ union Vmxnet3_GenericDesc tempTxDesc; #endif - struct udphdr *udph; count = txd_estimate(skb); @@ -1134,8 +1134,7 @@ gdesc->txd.om = VMXNET3_OM_ENCAP; gdesc->txd.msscof = ctx.mss; - udph = udp_hdr(skb); - if (udph->check) + if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM) gdesc->txd.oco = 1; } else { gdesc->txd.hlen = ctx.l4_offset + ctx.l4_hdr_size; @@ -3370,6 +3369,7 @@ .ndo_change_mtu = vmxnet3_change_mtu, .ndo_fix_features = vmxnet3_fix_features, .ndo_set_features = vmxnet3_set_features, + .ndo_features_check = vmxnet3_features_check, .ndo_get_stats64 = vmxnet3_get_stats64, .ndo_tx_timeout = vmxnet3_tx_timeout, .ndo_set_rx_mode = vmxnet3_set_mc, --- linux-5.8.0.orig/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ linux-5.8.0/drivers/net/vmxnet3/vmxnet3_ethtool.c @@ -267,6 +267,34 @@ return features; } +netdev_features_t vmxnet3_features_check(struct sk_buff *skb, + struct net_device *netdev, + netdev_features_t features) +{ + struct vmxnet3_adapter *adapter = netdev_priv(netdev); + + /* Validate if the tunneled packet is being offloaded by the device */ + if (VMXNET3_VERSION_GE_4(adapter) && + skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) { + u8 l4_proto = 0; + + switch (vlan_get_protocol(skb)) { + case htons(ETH_P_IP): + l4_proto = ip_hdr(skb)->protocol; + break; + case htons(ETH_P_IPV6): + l4_proto = ipv6_hdr(skb)->nexthdr; + break; + default: + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } + + if (l4_proto != IPPROTO_UDP) + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } + return features; +} + static void vmxnet3_enable_encap_offloads(struct net_device *netdev) { struct vmxnet3_adapter *adapter = netdev_priv(netdev); --- linux-5.8.0.orig/drivers/net/vmxnet3/vmxnet3_int.h +++ linux-5.8.0/drivers/net/vmxnet3/vmxnet3_int.h @@ -470,6 +470,10 @@ netdev_features_t vmxnet3_fix_features(struct net_device *netdev, netdev_features_t features); +netdev_features_t +vmxnet3_features_check(struct sk_buff *skb, + struct net_device *netdev, netdev_features_t features); + int vmxnet3_set_features(struct net_device *netdev, netdev_features_t features); --- linux-5.8.0.orig/drivers/net/vrf.c +++ linux-5.8.0/drivers/net/vrf.c @@ -332,8 +332,7 @@ return ret; } -static int vrf_finish_direct(struct net *net, struct sock *sk, - struct sk_buff *skb) +static void vrf_finish_direct(struct sk_buff *skb) { struct net_device *vrf_dev = skb->dev; @@ -352,7 +351,8 @@ skb_pull(skb, ETH_HLEN); } - return 1; + /* reset skb device */ + nf_reset_ct(skb); } #if IS_ENABLED(CONFIG_IPV6) @@ -431,15 +431,41 @@ return skb; } +static int vrf_output6_direct_finish(struct net *net, struct sock *sk, + struct sk_buff *skb) +{ + vrf_finish_direct(skb); + + return vrf_ip6_local_out(net, sk, skb); +} + static int vrf_output6_direct(struct net *net, struct sock *sk, struct sk_buff *skb) { + int err = 1; + skb->protocol = htons(ETH_P_IPV6); - return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, - net, sk, skb, NULL, skb->dev, - vrf_finish_direct, - !(IPCB(skb)->flags & IPSKB_REROUTED)); + if (!(IPCB(skb)->flags & IPSKB_REROUTED)) + err = nf_hook(NFPROTO_IPV6, NF_INET_POST_ROUTING, net, sk, skb, + NULL, skb->dev, vrf_output6_direct_finish); + + if (likely(err == 1)) + vrf_finish_direct(skb); + + return err; +} + +static int vrf_ip6_out_direct_finish(struct net *net, struct sock *sk, + struct sk_buff *skb) +{ + int err; + + err = vrf_output6_direct(net, sk, skb); + if (likely(err == 1)) + err = vrf_ip6_local_out(net, sk, skb); + + return err; } static struct sk_buff *vrf_ip6_out_direct(struct net_device *vrf_dev, @@ -452,18 +478,15 @@ skb->dev = vrf_dev; err = nf_hook(NFPROTO_IPV6, NF_INET_LOCAL_OUT, net, sk, - skb, NULL, vrf_dev, vrf_output6_direct); + skb, NULL, vrf_dev, vrf_ip6_out_direct_finish); if (likely(err == 1)) err = vrf_output6_direct(net, sk, skb); - /* reset skb device */ if (likely(err == 1)) - nf_reset_ct(skb); - else - skb = NULL; + return skb; - return skb; + return NULL; } static struct sk_buff *vrf_ip6_out(struct net_device *vrf_dev, @@ -643,15 +666,41 @@ return skb; } +static int vrf_output_direct_finish(struct net *net, struct sock *sk, + struct sk_buff *skb) +{ + vrf_finish_direct(skb); + + return vrf_ip_local_out(net, sk, skb); +} + static int vrf_output_direct(struct net *net, struct sock *sk, struct sk_buff *skb) { + int err = 1; + skb->protocol = htons(ETH_P_IP); - return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, - net, sk, skb, NULL, skb->dev, - vrf_finish_direct, - !(IPCB(skb)->flags & IPSKB_REROUTED)); + if (!(IPCB(skb)->flags & IPSKB_REROUTED)) + err = nf_hook(NFPROTO_IPV4, NF_INET_POST_ROUTING, net, sk, skb, + NULL, skb->dev, vrf_output_direct_finish); + + if (likely(err == 1)) + vrf_finish_direct(skb); + + return err; +} + +static int vrf_ip_out_direct_finish(struct net *net, struct sock *sk, + struct sk_buff *skb) +{ + int err; + + err = vrf_output_direct(net, sk, skb); + if (likely(err == 1)) + err = vrf_ip_local_out(net, sk, skb); + + return err; } static struct sk_buff *vrf_ip_out_direct(struct net_device *vrf_dev, @@ -664,18 +713,15 @@ skb->dev = vrf_dev; err = nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, net, sk, - skb, NULL, vrf_dev, vrf_output_direct); + skb, NULL, vrf_dev, vrf_ip_out_direct_finish); if (likely(err == 1)) err = vrf_output_direct(net, sk, skb); - /* reset skb device */ if (likely(err == 1)) - nf_reset_ct(skb); - else - skb = NULL; + return skb; - return skb; + return NULL; } static struct sk_buff *vrf_ip_out(struct net_device *vrf_dev, @@ -993,11 +1039,17 @@ int orig_iif = skb->skb_iif; bool need_strict = rt6_need_strict(&ipv6_hdr(skb)->daddr); bool is_ndisc = ipv6_ndisc_frame(skb); + bool is_ll_src; /* loopback, multicast & non-ND link-local traffic; do not push through - * packet taps again. Reset pkt_type for upper layers to process skb + * packet taps again. Reset pkt_type for upper layers to process skb. + * for packets with lladdr src, however, skip so that the dst can be + * determine at input using original ifindex in the case that daddr + * needs strict */ - if (skb->pkt_type == PACKET_LOOPBACK || (need_strict && !is_ndisc)) { + is_ll_src = ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL; + if (skb->pkt_type == PACKET_LOOPBACK || + (need_strict && !is_ndisc && !is_ll_src)) { skb->dev = vrf_dev; skb->skb_iif = vrf_dev->ifindex; IP6CB(skb)->flags |= IP6SKB_L3SLAVE; --- linux-5.8.0.orig/drivers/net/vxlan.c +++ linux-5.8.0/drivers/net/vxlan.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -95,6 +96,167 @@ ip_tunnel_collect_metadata(); } +static struct ip_fan_map *vxlan_fan_find_map(struct vxlan_dev *vxlan, __be32 daddr) +{ + struct ip_fan_map *fan_map; + + rcu_read_lock(); + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + if (fan_map->overlay == + (daddr & inet_make_mask(fan_map->overlay_prefix))) { + rcu_read_unlock(); + return fan_map; + } + } + rcu_read_unlock(); + + return NULL; +} + +static void vxlan_fan_flush_map(struct vxlan_dev *vxlan) +{ + struct ip_fan_map *fan_map; + + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + } +} + +static int vxlan_fan_del_map(struct vxlan_dev *vxlan, __be32 overlay) +{ + struct ip_fan_map *fan_map; + + fan_map = vxlan_fan_find_map(vxlan, overlay); + if (!fan_map) + return -ENOENT; + + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + + return 0; +} + +static int vxlan_fan_add_map(struct vxlan_dev *vxlan, struct ifla_fan_map *map) +{ + __be32 overlay_mask, underlay_mask; + struct ip_fan_map *fan_map; + + overlay_mask = inet_make_mask(map->overlay_prefix); + underlay_mask = inet_make_mask(map->underlay_prefix); + + netdev_dbg(vxlan->dev, "vfam: map: o %x/%d u %x/%d om %x um %x\n", + map->overlay, map->overlay_prefix, + map->underlay, map->underlay_prefix, + overlay_mask, underlay_mask); + + if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) + return -EINVAL; + + if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) + return -EINVAL; + + /* Special case: overlay 0 and underlay 0: flush all mappings */ + if (!map->overlay && !map->underlay) { + vxlan_fan_flush_map(vxlan); + return 0; + } + + /* Special case: overlay set and underlay 0: clear map for overlay */ + if (!map->underlay) + return vxlan_fan_del_map(vxlan, map->overlay); + + if (vxlan_fan_find_map(vxlan, map->overlay)) + return -EEXIST; + + fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); + fan_map->underlay = map->underlay; + fan_map->overlay = map->overlay; + fan_map->underlay_prefix = map->underlay_prefix; + fan_map->overlay_mask = ntohl(overlay_mask); + fan_map->overlay_prefix = map->overlay_prefix; + + list_add_tail_rcu(&fan_map->list, &vxlan->fan.fan_maps); + + return 0; +} + +static int vxlan_parse_fan_map(struct nlattr *data[], struct vxlan_dev *vxlan) +{ + struct ifla_fan_map *map; + struct nlattr *attr; + int rem, rv; + + nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { + map = nla_data(attr); + rv = vxlan_fan_add_map(vxlan, map); + if (rv) + return rv; + } + + return 0; +} + +static int vxlan_fan_build_rdst(struct vxlan_dev *vxlan, struct sk_buff *skb, + struct vxlan_rdst *fan_rdst) +{ + struct ip_fan_map *f_map; + union vxlan_addr *va; + u32 daddr, underlay; + struct arphdr *arp; + void *arp_ptr; + struct ethhdr *eth; + struct iphdr *iph; + + eth = eth_hdr(skb); + switch (eth->h_proto) { + case htons(ETH_P_IP): + iph = ip_hdr(skb); + if (!iph) + return -EINVAL; + daddr = iph->daddr; + break; + case htons(ETH_P_ARP): + arp = arp_hdr(skb); + if (!arp) + return -EINVAL; + arp_ptr = arp + 1; + netdev_dbg(vxlan->dev, + "vfbr: arp sha %pM sip %pI4 tha %pM tip %pI4\n", + arp_ptr, arp_ptr + skb->dev->addr_len, + arp_ptr + skb->dev->addr_len + 4, + arp_ptr + (skb->dev->addr_len * 2) + 4); + arp_ptr += (skb->dev->addr_len * 2) + 4; + memcpy(&daddr, arp_ptr, 4); + break; + default: + netdev_dbg(vxlan->dev, "vfbr: unknown eth p %x\n", eth->h_proto); + return -EINVAL; + } + + f_map = vxlan_fan_find_map(vxlan, daddr); + if (!f_map) + return -EINVAL; + + daddr = ntohl(daddr); + underlay = ntohl(f_map->underlay); + if (!underlay) + return -EINVAL; + + memset(fan_rdst, 0, sizeof(*fan_rdst)); + va = &fan_rdst->remote_ip; + va->sa.sa_family = AF_INET; + fan_rdst->remote_vni = vxlan->default_dst.remote_vni; + va->sin.sin_addr.s_addr = htonl(underlay | + ((daddr & ~f_map->overlay_mask) >> + (32 - f_map->overlay_prefix - + (32 - f_map->underlay_prefix)))); + netdev_dbg(vxlan->dev, "vfbr: daddr %x ul %x dst %x\n", + daddr, underlay, va->sin.sin_addr.s_addr); + + return 0; +} + #if IS_ENABLED(CONFIG_IPV6) static inline bool vxlan_addr_equal(const union vxlan_addr *a, const union vxlan_addr *b) @@ -2697,6 +2859,13 @@ goto tx_error; } + if (fan_has_map(&vxlan->fan) && rt->rt_flags & RTCF_LOCAL) { + netdev_dbg(dev, "discard fan to localhost %pI4\n", + &dst->sin.sin_addr.s_addr); + ip_rt_put(rt); + goto tx_free; + } + if (!info) { /* Bypass encapsulation if the destination is local */ err = encap_bypass_if_local(skb, dev, vxlan, dst, @@ -2722,7 +2891,7 @@ ndst = &rt->dst; skb_tunnel_check_pmtu(skb, ndst, VXLAN_HEADROOM); - tos = ip_tunnel_ecn_encap(RT_TOS(tos), old_iph, skb); + tos = ip_tunnel_ecn_encap(tos, old_iph, skb); ttl = ttl ? : ip4_dst_hoplimit(&rt->dst); err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr), vni, md, flags, udp_sum); @@ -2762,7 +2931,7 @@ skb_tunnel_check_pmtu(skb, ndst, VXLAN6_HEADROOM); - tos = ip_tunnel_ecn_encap(RT_TOS(tos), old_iph, skb); + tos = ip_tunnel_ecn_encap(tos, old_iph, skb); ttl = ttl ? : ip6_dst_hoplimit(ndst); skb_scrub_packet(skb, xnet); err = vxlan_build_skb(skb, ndst, sizeof(struct ipv6hdr), @@ -2793,6 +2962,7 @@ dev->stats.tx_carrier_errors++; dst_release(ndst); dev->stats.tx_errors++; +tx_free: kfree_skb(skb); } @@ -2879,6 +3049,20 @@ #endif } + if (fan_has_map(&vxlan->fan)) { + struct vxlan_rdst fan_rdst; + + netdev_dbg(vxlan->dev, "vxlan_xmit p %x d %pM\n", + eth->h_proto, eth->h_dest); + if (vxlan_fan_build_rdst(vxlan, skb, &fan_rdst)) { + dev->stats.tx_dropped++; + kfree_skb(skb); + return NETDEV_TX_OK; + } + vxlan_xmit_one(skb, dev, vni, &fan_rdst, 0); + return NETDEV_TX_OK; + } + eth = eth_hdr(skb); f = vxlan_find_mac(vxlan, eth->h_dest, vni); did_rsc = false; @@ -3275,6 +3459,8 @@ spin_lock_init(&vxlan->hash_lock[h]); INIT_HLIST_HEAD(&vxlan->fdb_head[h]); } + + INIT_LIST_HEAD(&vxlan->fan.fan_maps); } static void vxlan_ether_setup(struct net_device *dev) @@ -3767,6 +3953,9 @@ dev->gso_max_segs = lowerdev->gso_max_segs; needed_headroom = lowerdev->hard_header_len; + needed_headroom += lowerdev->needed_headroom; + + dev->needed_tailroom = lowerdev->needed_tailroom; max_mtu = lowerdev->mtu - (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); @@ -3846,8 +4035,10 @@ if (dst->remote_ifindex) { remote_dev = __dev_get_by_index(net, dst->remote_ifindex); - if (!remote_dev) + if (!remote_dev) { + err = -ENODEV; goto errout; + } err = netdev_upper_dev_link(remote_dev, dev, extack); if (err) @@ -3966,6 +4157,12 @@ conf->remote_ip.sa.sa_family = AF_INET6; } + if (data[IFLA_VXLAN_FAN_MAP]) { + err = vxlan_parse_fan_map(data, vxlan); + if (err) + return err; + } + if (data[IFLA_VXLAN_LOCAL]) { if (changelink && (conf->saddr.sa.sa_family != AF_INET)) { NL_SET_ERR_MSG_ATTR(extack, tb[IFLA_VXLAN_LOCAL], "New local address family does not match old"); @@ -4300,6 +4497,7 @@ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_UDP_ZERO_CSUM6_RX */ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_TX */ nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_REMCSUM_RX */ + nla_total_size(sizeof(struct ip_fan_map) * 256) + 0; } @@ -4346,6 +4544,26 @@ } } + if (fan_has_map(&vxlan->fan)) { + struct nlattr *fan_nest; + struct ip_fan_map *fan_map; + + fan_nest = nla_nest_start(skb, IFLA_VXLAN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; + list_for_each_entry_rcu(fan_map, &vxlan->fan.fan_maps, list) { + struct ifla_fan_map map; + + map.underlay = fan_map->underlay; + map.underlay_prefix = fan_map->underlay_prefix; + map.overlay = fan_map->overlay; + map.overlay_prefix = fan_map->overlay_prefix; + if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) + goto nla_put_failure; + } + nla_nest_end(skb, fan_nest); + } + if (nla_put_u8(skb, IFLA_VXLAN_TTL, vxlan->cfg.ttl) || nla_put_u8(skb, IFLA_VXLAN_TTL_INHERIT, !!(vxlan->cfg.flags & VXLAN_F_TTL_INHERIT)) || @@ -4678,12 +4896,27 @@ return register_nexthop_notifier(net, &vxlan_nexthop_notifier_block); } +#ifdef CONFIG_SYSCTL +static struct ctl_table_header *vxlan_fan_header; +static unsigned int vxlan_fan_version = 4; + +static struct ctl_table vxlan_fan_sysctls[] = { + { + .procname = "vxlan", + .data = &vxlan_fan_version, + .maxlen = sizeof(vxlan_fan_version), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + {}, +}; +#endif /* CONFIG_SYSCTL */ + static void vxlan_destroy_tunnels(struct net *net, struct list_head *head) { struct vxlan_net *vn = net_generic(net, vxlan_net_id); struct vxlan_dev *vxlan, *next; struct net_device *dev, *aux; - unsigned int h; for_each_netdev_safe(net, dev, aux) if (dev->rtnl_link_ops == &vxlan_link_ops) @@ -4697,14 +4930,13 @@ unregister_netdevice_queue(vxlan->dev, head); } - for (h = 0; h < PORT_HASH_SIZE; ++h) - WARN_ON_ONCE(!hlist_empty(&vn->sock_list[h])); } static void __net_exit vxlan_exit_batch_net(struct list_head *net_list) { struct net *net; LIST_HEAD(list); + unsigned int h; rtnl_lock(); list_for_each_entry(net, net_list, exit_list) @@ -4714,6 +4946,13 @@ unregister_netdevice_many(&list); rtnl_unlock(); + + list_for_each_entry(net, net_list, exit_list) { + struct vxlan_net *vn = net_generic(net, vxlan_net_id); + + for (h = 0; h < PORT_HASH_SIZE; ++h) + WARN_ON_ONCE(!hlist_empty(&vn->sock_list[h])); + } } static struct pernet_operations vxlan_net_ops = { @@ -4745,7 +4984,20 @@ if (rc) goto out4; +#ifdef CONFIG_SYSCTL + vxlan_fan_header = register_net_sysctl(&init_net, "net/fan", + vxlan_fan_sysctls); + if (!vxlan_fan_header) { + rc = -ENOMEM; + goto sysctl_failed; + } +#endif /* CONFIG_SYSCTL */ + return 0; +#ifdef CONFIG_SYSCTL +sysctl_failed: + rtnl_link_unregister(&vxlan_link_ops); +#endif /* CONFIG_SYSCTL */ out4: unregister_switchdev_notifier(&vxlan_switchdev_notifier_block); out3: @@ -4759,6 +5011,9 @@ static void __exit vxlan_cleanup_module(void) { +#ifdef CONFIG_SYSCTL + unregister_net_sysctl_table(vxlan_fan_header); +#endif /* CONFIG_SYSCTL */ rtnl_link_unregister(&vxlan_link_ops); unregister_switchdev_notifier(&vxlan_switchdev_notifier_block); unregister_netdevice_notifier(&vxlan_notifier_block); --- linux-5.8.0.orig/drivers/net/wan/Kconfig +++ linux-5.8.0/drivers/net/wan/Kconfig @@ -282,6 +282,7 @@ tristate "Slic Maxim ds26522 card support" depends on SPI depends on FSL_SOC || ARCH_MXC || ARCH_LAYERSCAPE || COMPILE_TEST + select BITREVERSE help This module initializes and configures the slic maxim card in T1 or E1 mode. --- linux-5.8.0.orig/drivers/net/wan/cosa.c +++ linux-5.8.0/drivers/net/wan/cosa.c @@ -889,6 +889,7 @@ chan->tx_status = 1; spin_unlock_irqrestore(&cosa->lock, flags); up(&chan->wsem); + kfree(kbuf); return -ERESTARTSYS; } } --- linux-5.8.0.orig/drivers/net/wan/fsl_ucc_hdlc.c +++ linux-5.8.0/drivers/net/wan/fsl_ucc_hdlc.c @@ -204,14 +204,18 @@ priv->rx_skbuff = kcalloc(priv->rx_ring_size, sizeof(*priv->rx_skbuff), GFP_KERNEL); - if (!priv->rx_skbuff) + if (!priv->rx_skbuff) { + ret = -ENOMEM; goto free_ucc_pram; + } priv->tx_skbuff = kcalloc(priv->tx_ring_size, sizeof(*priv->tx_skbuff), GFP_KERNEL); - if (!priv->tx_skbuff) + if (!priv->tx_skbuff) { + ret = -ENOMEM; goto free_rx_skbuff; + } priv->skb_curtx = 0; priv->skb_dirtytx = 0; --- linux-5.8.0.orig/drivers/net/wan/hdlc.c +++ linux-5.8.0/drivers/net/wan/hdlc.c @@ -46,7 +46,15 @@ static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *p, struct net_device *orig_dev) { - struct hdlc_device *hdlc = dev_to_hdlc(dev); + struct hdlc_device *hdlc; + + /* First make sure "dev" is an HDLC device */ + if (!(dev->priv_flags & IFF_WAN_HDLC)) { + kfree_skb(skb); + return NET_RX_SUCCESS; + } + + hdlc = dev_to_hdlc(dev); if (!net_eq(dev_net(dev), &init_net)) { kfree_skb(skb); @@ -229,7 +237,8 @@ dev->min_mtu = 68; dev->max_mtu = HDLC_MAX_MTU; dev->type = ARPHRD_RAWHDLC; - dev->hard_header_len = 16; + dev->hard_header_len = 0; + dev->needed_headroom = 0; dev->addr_len = 0; dev->header_ops = &hdlc_null_ops; } --- linux-5.8.0.orig/drivers/net/wan/hdlc_cisco.c +++ linux-5.8.0/drivers/net/wan/hdlc_cisco.c @@ -118,6 +118,7 @@ skb_put(skb, sizeof(struct cisco_packet)); skb->priority = TC_PRIO_CONTROL; skb->dev = dev; + skb->protocol = htons(ETH_P_HDLC); skb_reset_network_header(skb); dev_queue_xmit(skb); @@ -370,6 +371,7 @@ memcpy(&state(hdlc)->settings, &new_settings, size); spin_lock_init(&state(hdlc)->lock); dev->header_ops = &cisco_header_ops; + dev->hard_header_len = sizeof(struct hdlc_header); dev->type = ARPHRD_CISCO; call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev); netif_dormant_on(dev); --- linux-5.8.0.orig/drivers/net/wan/hdlc_fr.c +++ linux-5.8.0/drivers/net/wan/hdlc_fr.c @@ -273,63 +273,69 @@ static int fr_hard_header(struct sk_buff **skb_p, u16 dlci) { - u16 head_len; struct sk_buff *skb = *skb_p; - switch (skb->protocol) { - case cpu_to_be16(NLPID_CCITT_ANSI_LMI): - head_len = 4; - skb_push(skb, head_len); - skb->data[3] = NLPID_CCITT_ANSI_LMI; - break; - - case cpu_to_be16(NLPID_CISCO_LMI): - head_len = 4; - skb_push(skb, head_len); - skb->data[3] = NLPID_CISCO_LMI; - break; - - case cpu_to_be16(ETH_P_IP): - head_len = 4; - skb_push(skb, head_len); - skb->data[3] = NLPID_IP; - break; - - case cpu_to_be16(ETH_P_IPV6): - head_len = 4; - skb_push(skb, head_len); - skb->data[3] = NLPID_IPV6; - break; - - case cpu_to_be16(ETH_P_802_3): - head_len = 10; - if (skb_headroom(skb) < head_len) { - struct sk_buff *skb2 = skb_realloc_headroom(skb, - head_len); + if (!skb->dev) { /* Control packets */ + switch (dlci) { + case LMI_CCITT_ANSI_DLCI: + skb_push(skb, 4); + skb->data[3] = NLPID_CCITT_ANSI_LMI; + break; + + case LMI_CISCO_DLCI: + skb_push(skb, 4); + skb->data[3] = NLPID_CISCO_LMI; + break; + + default: + return -EINVAL; + } + + } else if (skb->dev->type == ARPHRD_DLCI) { + switch (skb->protocol) { + case htons(ETH_P_IP): + skb_push(skb, 4); + skb->data[3] = NLPID_IP; + break; + + case htons(ETH_P_IPV6): + skb_push(skb, 4); + skb->data[3] = NLPID_IPV6; + break; + + default: + skb_push(skb, 10); + skb->data[3] = FR_PAD; + skb->data[4] = NLPID_SNAP; + /* OUI 00-00-00 indicates an Ethertype follows */ + skb->data[5] = 0x00; + skb->data[6] = 0x00; + skb->data[7] = 0x00; + /* This should be an Ethertype: */ + *(__be16 *)(skb->data + 8) = skb->protocol; + } + + } else if (skb->dev->type == ARPHRD_ETHER) { + if (skb_headroom(skb) < 10) { + struct sk_buff *skb2 = skb_realloc_headroom(skb, 10); if (!skb2) return -ENOBUFS; dev_kfree_skb(skb); skb = *skb_p = skb2; } - skb_push(skb, head_len); + skb_push(skb, 10); skb->data[3] = FR_PAD; skb->data[4] = NLPID_SNAP; - skb->data[5] = FR_PAD; + /* OUI 00-80-C2 stands for the 802.1 organization */ + skb->data[5] = 0x00; skb->data[6] = 0x80; skb->data[7] = 0xC2; + /* PID 00-07 stands for Ethernet frames without FCS */ skb->data[8] = 0x00; - skb->data[9] = 0x07; /* bridged Ethernet frame w/out FCS */ - break; + skb->data[9] = 0x07; - default: - head_len = 10; - skb_push(skb, head_len); - skb->data[3] = FR_PAD; - skb->data[4] = NLPID_SNAP; - skb->data[5] = FR_PAD; - skb->data[6] = FR_PAD; - skb->data[7] = FR_PAD; - *(__be16*)(skb->data + 8) = skb->protocol; + } else { + return -EINVAL; } dlci_to_q922(skb->data, dlci); @@ -425,14 +431,16 @@ skb_put(skb, pad); memset(skb->data + len, 0, pad); } - skb->protocol = cpu_to_be16(ETH_P_802_3); } + skb->dev = dev; if (!fr_hard_header(&skb, pvc->dlci)) { dev->stats.tx_bytes += skb->len; dev->stats.tx_packets++; if (pvc->state.fecn) /* TX Congestion counter */ dev->stats.tx_compressed++; skb->dev = pvc->frad; + skb->protocol = htons(ETH_P_HDLC); + skb_reset_network_header(skb); dev_queue_xmit(skb); return NETDEV_TX_OK; } @@ -492,10 +500,8 @@ memset(skb->data, 0, len); skb_reserve(skb, 4); if (lmi == LMI_CISCO) { - skb->protocol = cpu_to_be16(NLPID_CISCO_LMI); fr_hard_header(&skb, LMI_CISCO_DLCI); } else { - skb->protocol = cpu_to_be16(NLPID_CCITT_ANSI_LMI); fr_hard_header(&skb, LMI_CCITT_ANSI_DLCI); } data = skb_tail_pointer(skb); @@ -555,6 +561,7 @@ skb_put(skb, i); skb->priority = TC_PRIO_CONTROL; skb->dev = dev; + skb->protocol = htons(ETH_P_HDLC); skb_reset_network_header(skb); dev_queue_xmit(skb); @@ -1041,7 +1048,7 @@ { dev->type = ARPHRD_DLCI; dev->flags = IFF_POINTOPOINT; - dev->hard_header_len = 10; + dev->hard_header_len = 0; dev->addr_len = 2; netif_keep_dst(dev); } @@ -1093,6 +1100,7 @@ dev->mtu = HDLC_MAX_MTU; dev->min_mtu = 68; dev->max_mtu = HDLC_MAX_MTU; + dev->needed_headroom = 10; dev->priv_flags |= IFF_NO_QUEUE; dev->ml_priv = pvc; --- linux-5.8.0.orig/drivers/net/wan/hdlc_ppp.c +++ linux-5.8.0/drivers/net/wan/hdlc_ppp.c @@ -251,6 +251,7 @@ skb->priority = TC_PRIO_CONTROL; skb->dev = dev; + skb->protocol = htons(ETH_P_HDLC); skb_reset_network_header(skb); skb_queue_tail(&tx_queue, skb); } @@ -383,11 +384,8 @@ } for (opt = data; len; len -= opt[1], opt += opt[1]) { - if (len < 2 || len < opt[1]) { - dev->stats.rx_errors++; - kfree(out); - return; /* bad packet, drop silently */ - } + if (len < 2 || opt[1] < 2 || len < opt[1]) + goto err_out; if (pid == PID_LCP) switch (opt[0]) { @@ -395,6 +393,8 @@ continue; /* MRU always OK and > 1500 bytes? */ case LCP_OPTION_ACCM: /* async control character map */ + if (opt[1] < sizeof(valid_accm)) + goto err_out; if (!memcmp(opt, valid_accm, sizeof(valid_accm))) continue; @@ -406,6 +406,8 @@ } break; case LCP_OPTION_MAGIC: + if (len < 6) + goto err_out; if (opt[1] != 6 || (!opt[2] && !opt[3] && !opt[4] && !opt[5])) break; /* reject invalid magic number */ @@ -424,6 +426,11 @@ ppp_cp_event(dev, pid, RCR_GOOD, CP_CONF_ACK, id, req_len, data); kfree(out); + return; + +err_out: + dev->stats.rx_errors++; + kfree(out); } static int ppp_rx(struct sk_buff *skb) @@ -562,6 +569,13 @@ unsigned long flags; spin_lock_irqsave(&ppp->lock, flags); + /* mod_timer could be called after we entered this function but + * before we got the lock. + */ + if (timer_pending(&proto->timer)) { + spin_unlock_irqrestore(&ppp->lock, flags); + return; + } switch (proto->state) { case STOPPING: case REQ_SENT: --- linux-5.8.0.orig/drivers/net/wan/hdlc_raw_eth.c +++ linux-5.8.0/drivers/net/wan/hdlc_raw_eth.c @@ -99,6 +99,7 @@ old_qlen = dev->tx_queue_len; ether_setup(dev); dev->tx_queue_len = old_qlen; + dev->priv_flags &= ~IFF_TX_SKB_SHARING; eth_hw_addr_random(dev); call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev); netif_dormant_off(dev); --- linux-5.8.0.orig/drivers/net/wan/hdlc_x25.c +++ linux-5.8.0/drivers/net/wan/hdlc_x25.c @@ -23,6 +23,8 @@ struct x25_state { x25_hdlc_proto settings; + bool up; + spinlock_t up_lock; /* Protects "up" */ }; static int x25_ioctl(struct net_device *dev, struct ifreq *ifr); @@ -105,16 +107,32 @@ static netdev_tx_t x25_xmit(struct sk_buff *skb, struct net_device *dev) { + hdlc_device *hdlc = dev_to_hdlc(dev); + struct x25_state *x25st = state(hdlc); int result; + /* There should be a pseudo header of 1 byte added by upper layers. + * Check to make sure it is there before reading it. + */ + if (skb->len < 1) { + kfree_skb(skb); + return NETDEV_TX_OK; + } + + spin_lock_bh(&x25st->up_lock); + if (!x25st->up) { + spin_unlock_bh(&x25st->up_lock); + kfree_skb(skb); + return NETDEV_TX_OK; + } - /* X.25 to LAPB */ switch (skb->data[0]) { case X25_IFACE_DATA: /* Data to be transmitted */ skb_pull(skb, 1); skb_reset_network_header(skb); if ((result = lapb_data_request(dev, skb)) != LAPB_OK) dev_kfree_skb(skb); + spin_unlock_bh(&x25st->up_lock); return NETDEV_TX_OK; case X25_IFACE_CONNECT: @@ -143,6 +161,7 @@ break; } + spin_unlock_bh(&x25st->up_lock); dev_kfree_skb(skb); return NETDEV_TX_OK; } @@ -160,16 +179,17 @@ .data_transmit = x25_data_transmit, }; hdlc_device *hdlc = dev_to_hdlc(dev); + struct x25_state *x25st = state(hdlc); struct lapb_parms_struct params; int result; result = lapb_register(dev, &cb); if (result != LAPB_OK) - return result; + return -ENOMEM; result = lapb_getparms(dev, ¶ms); if (result != LAPB_OK) - return result; + return -EINVAL; if (state(hdlc)->settings.dce) params.mode = params.mode | LAPB_DCE; @@ -184,7 +204,11 @@ result = lapb_setparms(dev, ¶ms); if (result != LAPB_OK) - return result; + return -EINVAL; + + spin_lock_bh(&x25st->up_lock); + x25st->up = true; + spin_unlock_bh(&x25st->up_lock); return 0; } @@ -193,6 +217,13 @@ static void x25_close(struct net_device *dev) { + hdlc_device *hdlc = dev_to_hdlc(dev); + struct x25_state *x25st = state(hdlc); + + spin_lock_bh(&x25st->up_lock); + x25st->up = false; + spin_unlock_bh(&x25st->up_lock); + lapb_unregister(dev); } @@ -201,15 +232,28 @@ static int x25_rx(struct sk_buff *skb) { struct net_device *dev = skb->dev; + hdlc_device *hdlc = dev_to_hdlc(dev); + struct x25_state *x25st = state(hdlc); if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) { dev->stats.rx_dropped++; return NET_RX_DROP; } - if (lapb_data_received(dev, skb) == LAPB_OK) + spin_lock_bh(&x25st->up_lock); + if (!x25st->up) { + spin_unlock_bh(&x25st->up_lock); + kfree_skb(skb); + dev->stats.rx_dropped++; + return NET_RX_DROP; + } + + if (lapb_data_received(dev, skb) == LAPB_OK) { + spin_unlock_bh(&x25st->up_lock); return NET_RX_SUCCESS; + } + spin_unlock_bh(&x25st->up_lock); dev->stats.rx_errors++; dev_kfree_skb_any(skb); return NET_RX_DROP; @@ -294,6 +338,17 @@ return result; memcpy(&state(hdlc)->settings, &new_settings, size); + state(hdlc)->up = false; + spin_lock_init(&state(hdlc)->up_lock); + + /* There's no header_ops so hard_header_len should be 0. */ + dev->hard_header_len = 0; + /* When transmitting data: + * first we'll remove a pseudo header of 1 byte, + * then we'll prepend an LAPB header of at most 3 bytes. + */ + dev->needed_headroom = 3 - 1; + dev->type = ARPHRD_X25; call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev); netif_dormant_off(dev); --- linux-5.8.0.orig/drivers/net/wan/lapbether.c +++ linux-5.8.0/drivers/net/wan/lapbether.c @@ -157,6 +157,12 @@ if (!netif_running(dev)) goto drop; + /* There should be a pseudo header of 1 byte added by upper layers. + * Check to make sure it is there before reading it. + */ + if (skb->len < 1) + goto drop; + switch (skb->data[0]) { case X25_IFACE_DATA: break; @@ -192,8 +198,6 @@ struct net_device *dev; int size = skb->len; - skb->protocol = htons(ETH_P_X25); - ptr = skb_push(skb, 2); *ptr++ = size % 256; @@ -204,6 +208,10 @@ skb->dev = dev = lapbeth->ethdev; + skb->protocol = htons(ETH_P_DEC); + + skb_reset_network_header(skb); + dev_hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0); dev_queue_xmit(skb); @@ -275,7 +283,6 @@ return -ENODEV; } - netif_start_queue(dev); return 0; } @@ -283,8 +290,6 @@ { int err; - netif_stop_queue(dev); - if ((err = lapb_unregister(dev)) != LAPB_OK) pr_err("lapb_unregister error: %d\n", err); @@ -305,6 +310,7 @@ dev->netdev_ops = &lapbeth_netdev_ops; dev->needs_free_netdev = true; dev->type = ARPHRD_X25; + dev->hard_header_len = 0; dev->mtu = 1000; dev->addr_len = 0; } @@ -331,7 +337,9 @@ * then this driver prepends a length field of 2 bytes, * then the underlying Ethernet device prepends its own header. */ - ndev->hard_header_len = -1 + 3 + 2 + dev->hard_header_len; + ndev->needed_headroom = -1 + 3 + 2 + dev->hard_header_len + + dev->needed_headroom; + ndev->needed_tailroom = dev->needed_tailroom; lapbeth = netdev_priv(ndev); lapbeth->axdev = ndev; --- linux-5.8.0.orig/drivers/net/wan/lmc/lmc_main.c +++ linux-5.8.0/drivers/net/wan/lmc/lmc_main.c @@ -912,6 +912,8 @@ break; default: printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name); + unregister_hdlc_device(dev); + return -EIO; break; } --- linux-5.8.0.orig/drivers/net/wireguard/device.c +++ linux-5.8.0/drivers/net/wireguard/device.c @@ -138,7 +138,7 @@ else if (skb->protocol == htons(ETH_P_IPV6)) net_dbg_ratelimited("%s: No peer has allowed IPs matching %pI6\n", dev->name, &ipv6_hdr(skb)->daddr); - goto err; + goto err_icmp; } family = READ_ONCE(peer->endpoint.addr.sa_family); @@ -201,12 +201,13 @@ err_peer: wg_peer_put(peer); -err: - ++dev->stats.tx_errors; +err_icmp: if (skb->protocol == htons(ETH_P_IP)) icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_HOST_UNREACH, 0); else if (skb->protocol == htons(ETH_P_IPV6)) icmpv6_ndo_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_ADDR_UNREACH, 0); +err: + ++dev->stats.tx_errors; kfree_skb(skb); return ret; } @@ -234,8 +235,8 @@ destroy_workqueue(wg->handshake_receive_wq); destroy_workqueue(wg->handshake_send_wq); destroy_workqueue(wg->packet_crypt_wq); - wg_packet_queue_free(&wg->decrypt_queue, true); - wg_packet_queue_free(&wg->encrypt_queue, true); + wg_packet_queue_free(&wg->decrypt_queue); + wg_packet_queue_free(&wg->encrypt_queue); rcu_barrier(); /* Wait for all the peers to be actually freed. */ wg_ratelimiter_uninit(); memzero_explicit(&wg->static_identity, sizeof(wg->static_identity)); @@ -337,12 +338,12 @@ goto err_destroy_handshake_send; ret = wg_packet_queue_init(&wg->encrypt_queue, wg_packet_encrypt_worker, - true, MAX_QUEUED_PACKETS); + MAX_QUEUED_PACKETS); if (ret < 0) goto err_destroy_packet_crypt; ret = wg_packet_queue_init(&wg->decrypt_queue, wg_packet_decrypt_worker, - true, MAX_QUEUED_PACKETS); + MAX_QUEUED_PACKETS); if (ret < 0) goto err_free_encrypt_queue; @@ -367,9 +368,9 @@ err_uninit_ratelimiter: wg_ratelimiter_uninit(); err_free_decrypt_queue: - wg_packet_queue_free(&wg->decrypt_queue, true); + wg_packet_queue_free(&wg->decrypt_queue); err_free_encrypt_queue: - wg_packet_queue_free(&wg->encrypt_queue, true); + wg_packet_queue_free(&wg->encrypt_queue); err_destroy_packet_crypt: destroy_workqueue(wg->packet_crypt_wq); err_destroy_handshake_send: --- linux-5.8.0.orig/drivers/net/wireguard/device.h +++ linux-5.8.0/drivers/net/wireguard/device.h @@ -27,13 +27,14 @@ struct crypt_queue { struct ptr_ring ring; - union { - struct { - struct multicore_worker __percpu *worker; - int last_cpu; - }; - struct work_struct work; - }; + struct multicore_worker __percpu *worker; + int last_cpu; +}; + +struct prev_queue { + struct sk_buff *head, *tail, *peeked; + struct { struct sk_buff *next, *prev; } empty; // Match first 2 members of struct sk_buff. + atomic_t count; }; struct wg_device { --- linux-5.8.0.orig/drivers/net/wireguard/noise.c +++ linux-5.8.0/drivers/net/wireguard/noise.c @@ -87,15 +87,12 @@ void wg_noise_handshake_clear(struct noise_handshake *handshake) { + down_write(&handshake->lock); wg_index_hashtable_remove( handshake->entry.peer->device->index_hashtable, &handshake->entry); - down_write(&handshake->lock); handshake_zero(handshake); up_write(&handshake->lock); - wg_index_hashtable_remove( - handshake->entry.peer->device->index_hashtable, - &handshake->entry); } static struct noise_keypair *keypair_create(struct wg_peer *peer) --- linux-5.8.0.orig/drivers/net/wireguard/peer.c +++ linux-5.8.0/drivers/net/wireguard/peer.c @@ -32,27 +32,22 @@ peer = kzalloc(sizeof(*peer), GFP_KERNEL); if (unlikely(!peer)) return ERR_PTR(ret); - peer->device = wg; + if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL)) + goto err; + peer->device = wg; wg_noise_handshake_init(&peer->handshake, &wg->static_identity, public_key, preshared_key, peer); - if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL)) - goto err_1; - if (wg_packet_queue_init(&peer->tx_queue, wg_packet_tx_worker, false, - MAX_QUEUED_PACKETS)) - goto err_2; - if (wg_packet_queue_init(&peer->rx_queue, NULL, false, - MAX_QUEUED_PACKETS)) - goto err_3; - peer->internal_id = atomic64_inc_return(&peer_counter); peer->serial_work_cpu = nr_cpumask_bits; wg_cookie_init(&peer->latest_cookie); wg_timers_init(peer); wg_cookie_checker_precompute_peer_keys(peer); spin_lock_init(&peer->keypairs.keypair_update_lock); - INIT_WORK(&peer->transmit_handshake_work, - wg_packet_handshake_send_worker); + INIT_WORK(&peer->transmit_handshake_work, wg_packet_handshake_send_worker); + INIT_WORK(&peer->transmit_packet_work, wg_packet_tx_worker); + wg_prev_queue_init(&peer->tx_queue); + wg_prev_queue_init(&peer->rx_queue); rwlock_init(&peer->endpoint_lock); kref_init(&peer->refcount); skb_queue_head_init(&peer->staged_packet_queue); @@ -68,11 +63,7 @@ pr_debug("%s: Peer %llu created\n", wg->dev->name, peer->internal_id); return peer; -err_3: - wg_packet_queue_free(&peer->tx_queue, false); -err_2: - dst_cache_destroy(&peer->endpoint_cache); -err_1: +err: kfree(peer); return ERR_PTR(ret); } @@ -197,8 +188,7 @@ struct wg_peer *peer = container_of(rcu, struct wg_peer, rcu); dst_cache_destroy(&peer->endpoint_cache); - wg_packet_queue_free(&peer->rx_queue, false); - wg_packet_queue_free(&peer->tx_queue, false); + WARN_ON(wg_prev_queue_peek(&peer->tx_queue) || wg_prev_queue_peek(&peer->rx_queue)); /* The final zeroing takes care of clearing any remaining handshake key * material and other potentially sensitive information. --- linux-5.8.0.orig/drivers/net/wireguard/peer.h +++ linux-5.8.0/drivers/net/wireguard/peer.h @@ -36,7 +36,7 @@ struct wg_peer { struct wg_device *device; - struct crypt_queue tx_queue, rx_queue; + struct prev_queue tx_queue, rx_queue; struct sk_buff_head staged_packet_queue; int serial_work_cpu; struct noise_keypairs keypairs; @@ -45,7 +45,7 @@ rwlock_t endpoint_lock; struct noise_handshake handshake; atomic64_t last_sent_handshake; - struct work_struct transmit_handshake_work, clear_peer_work; + struct work_struct transmit_handshake_work, clear_peer_work, transmit_packet_work; struct cookie latest_cookie; struct hlist_node pubkey_hash; u64 rx_bytes, tx_bytes; --- linux-5.8.0.orig/drivers/net/wireguard/peerlookup.c +++ linux-5.8.0/drivers/net/wireguard/peerlookup.c @@ -167,9 +167,13 @@ struct index_hashtable_entry *old, struct index_hashtable_entry *new) { - if (unlikely(hlist_unhashed(&old->index_hash))) - return false; + bool ret; + spin_lock_bh(&table->lock); + ret = !hlist_unhashed(&old->index_hash); + if (unlikely(!ret)) + goto out; + new->index = old->index; hlist_replace_rcu(&old->index_hash, &new->index_hash); @@ -180,8 +184,9 @@ * simply gets dropped, which isn't terrible. */ INIT_HLIST_NODE(&old->index_hash); +out: spin_unlock_bh(&table->lock); - return true; + return ret; } void wg_index_hashtable_remove(struct index_hashtable *table, --- linux-5.8.0.orig/drivers/net/wireguard/queueing.c +++ linux-5.8.0/drivers/net/wireguard/queueing.c @@ -9,8 +9,7 @@ wg_packet_percpu_multicore_worker_alloc(work_func_t function, void *ptr) { int cpu; - struct multicore_worker __percpu *worker = - alloc_percpu(struct multicore_worker); + struct multicore_worker __percpu *worker = alloc_percpu(struct multicore_worker); if (!worker) return NULL; @@ -23,7 +22,7 @@ } int wg_packet_queue_init(struct crypt_queue *queue, work_func_t function, - bool multicore, unsigned int len) + unsigned int len) { int ret; @@ -31,25 +30,78 @@ ret = ptr_ring_init(&queue->ring, len, GFP_KERNEL); if (ret) return ret; - if (function) { - if (multicore) { - queue->worker = wg_packet_percpu_multicore_worker_alloc( - function, queue); - if (!queue->worker) { - ptr_ring_cleanup(&queue->ring, NULL); - return -ENOMEM; - } - } else { - INIT_WORK(&queue->work, function); - } + queue->worker = wg_packet_percpu_multicore_worker_alloc(function, queue); + if (!queue->worker) { + ptr_ring_cleanup(&queue->ring, NULL); + return -ENOMEM; } return 0; } -void wg_packet_queue_free(struct crypt_queue *queue, bool multicore) +void wg_packet_queue_free(struct crypt_queue *queue) { - if (multicore) - free_percpu(queue->worker); + free_percpu(queue->worker); WARN_ON(!__ptr_ring_empty(&queue->ring)); ptr_ring_cleanup(&queue->ring, NULL); } + +#define NEXT(skb) ((skb)->prev) +#define STUB(queue) ((struct sk_buff *)&queue->empty) + +void wg_prev_queue_init(struct prev_queue *queue) +{ + NEXT(STUB(queue)) = NULL; + queue->head = queue->tail = STUB(queue); + queue->peeked = NULL; + atomic_set(&queue->count, 0); + BUILD_BUG_ON( + offsetof(struct sk_buff, next) != offsetof(struct prev_queue, empty.next) - + offsetof(struct prev_queue, empty) || + offsetof(struct sk_buff, prev) != offsetof(struct prev_queue, empty.prev) - + offsetof(struct prev_queue, empty)); +} + +static void __wg_prev_queue_enqueue(struct prev_queue *queue, struct sk_buff *skb) +{ + WRITE_ONCE(NEXT(skb), NULL); + WRITE_ONCE(NEXT(xchg_release(&queue->head, skb)), skb); +} + +bool wg_prev_queue_enqueue(struct prev_queue *queue, struct sk_buff *skb) +{ + if (!atomic_add_unless(&queue->count, 1, MAX_QUEUED_PACKETS)) + return false; + __wg_prev_queue_enqueue(queue, skb); + return true; +} + +struct sk_buff *wg_prev_queue_dequeue(struct prev_queue *queue) +{ + struct sk_buff *tail = queue->tail, *next = smp_load_acquire(&NEXT(tail)); + + if (tail == STUB(queue)) { + if (!next) + return NULL; + queue->tail = next; + tail = next; + next = smp_load_acquire(&NEXT(next)); + } + if (next) { + queue->tail = next; + atomic_dec(&queue->count); + return tail; + } + if (tail != READ_ONCE(queue->head)) + return NULL; + __wg_prev_queue_enqueue(queue, STUB(queue)); + next = smp_load_acquire(&NEXT(tail)); + if (next) { + queue->tail = next; + atomic_dec(&queue->count); + return tail; + } + return NULL; +} + +#undef NEXT +#undef STUB --- linux-5.8.0.orig/drivers/net/wireguard/queueing.h +++ linux-5.8.0/drivers/net/wireguard/queueing.h @@ -17,12 +17,13 @@ struct wg_peer; struct multicore_worker; struct crypt_queue; +struct prev_queue; struct sk_buff; /* queueing.c APIs: */ int wg_packet_queue_init(struct crypt_queue *queue, work_func_t function, - bool multicore, unsigned int len); -void wg_packet_queue_free(struct crypt_queue *queue, bool multicore); + unsigned int len); +void wg_packet_queue_free(struct crypt_queue *queue); struct multicore_worker __percpu * wg_packet_percpu_multicore_worker_alloc(work_func_t function, void *ptr); @@ -135,8 +136,31 @@ return cpu; } +void wg_prev_queue_init(struct prev_queue *queue); + +/* Multi producer */ +bool wg_prev_queue_enqueue(struct prev_queue *queue, struct sk_buff *skb); + +/* Single consumer */ +struct sk_buff *wg_prev_queue_dequeue(struct prev_queue *queue); + +/* Single consumer */ +static inline struct sk_buff *wg_prev_queue_peek(struct prev_queue *queue) +{ + if (queue->peeked) + return queue->peeked; + queue->peeked = wg_prev_queue_dequeue(queue); + return queue->peeked; +} + +/* Single consumer */ +static inline void wg_prev_queue_drop_peeked(struct prev_queue *queue) +{ + queue->peeked = NULL; +} + static inline int wg_queue_enqueue_per_device_and_peer( - struct crypt_queue *device_queue, struct crypt_queue *peer_queue, + struct crypt_queue *device_queue, struct prev_queue *peer_queue, struct sk_buff *skb, struct workqueue_struct *wq, int *next_cpu) { int cpu; @@ -145,8 +169,9 @@ /* We first queue this up for the peer ingestion, but the consumer * will wait for the state to change to CRYPTED or DEAD before. */ - if (unlikely(ptr_ring_produce_bh(&peer_queue->ring, skb))) + if (unlikely(!wg_prev_queue_enqueue(peer_queue, skb))) return -ENOSPC; + /* Then we queue it up in the device queue, which consumes the * packet as soon as it can. */ @@ -157,9 +182,7 @@ return 0; } -static inline void wg_queue_enqueue_per_peer(struct crypt_queue *queue, - struct sk_buff *skb, - enum packet_state state) +static inline void wg_queue_enqueue_per_peer_tx(struct sk_buff *skb, enum packet_state state) { /* We take a reference, because as soon as we call atomic_set, the * peer can be freed from below us. @@ -167,14 +190,12 @@ struct wg_peer *peer = wg_peer_get(PACKET_PEER(skb)); atomic_set_release(&PACKET_CB(skb)->state, state); - queue_work_on(wg_cpumask_choose_online(&peer->serial_work_cpu, - peer->internal_id), - peer->device->packet_crypt_wq, &queue->work); + queue_work_on(wg_cpumask_choose_online(&peer->serial_work_cpu, peer->internal_id), + peer->device->packet_crypt_wq, &peer->transmit_packet_work); wg_peer_put(peer); } -static inline void wg_queue_enqueue_per_peer_napi(struct sk_buff *skb, - enum packet_state state) +static inline void wg_queue_enqueue_per_peer_rx(struct sk_buff *skb, enum packet_state state) { /* We take a reference, because as soon as we call atomic_set, the * peer can be freed from below us. --- linux-5.8.0.orig/drivers/net/wireguard/receive.c +++ linux-5.8.0/drivers/net/wireguard/receive.c @@ -444,7 +444,6 @@ int wg_packet_rx_poll(struct napi_struct *napi, int budget) { struct wg_peer *peer = container_of(napi, struct wg_peer, napi); - struct crypt_queue *queue = &peer->rx_queue; struct noise_keypair *keypair; struct endpoint endpoint; enum packet_state state; @@ -455,11 +454,10 @@ if (unlikely(budget <= 0)) return 0; - while ((skb = __ptr_ring_peek(&queue->ring)) != NULL && + while ((skb = wg_prev_queue_peek(&peer->rx_queue)) != NULL && (state = atomic_read_acquire(&PACKET_CB(skb)->state)) != PACKET_STATE_UNCRYPTED) { - __ptr_ring_discard_one(&queue->ring); - peer = PACKET_PEER(skb); + wg_prev_queue_drop_peeked(&peer->rx_queue); keypair = PACKET_CB(skb)->keypair; free = true; @@ -508,7 +506,7 @@ enum packet_state state = likely(decrypt_packet(skb, PACKET_CB(skb)->keypair)) ? PACKET_STATE_CRYPTED : PACKET_STATE_DEAD; - wg_queue_enqueue_per_peer_napi(skb, state); + wg_queue_enqueue_per_peer_rx(skb, state); if (need_resched()) cond_resched(); } @@ -531,12 +529,10 @@ if (unlikely(READ_ONCE(peer->is_dead))) goto err; - ret = wg_queue_enqueue_per_device_and_peer(&wg->decrypt_queue, - &peer->rx_queue, skb, - wg->packet_crypt_wq, - &wg->decrypt_queue.last_cpu); + ret = wg_queue_enqueue_per_device_and_peer(&wg->decrypt_queue, &peer->rx_queue, skb, + wg->packet_crypt_wq, &wg->decrypt_queue.last_cpu); if (unlikely(ret == -EPIPE)) - wg_queue_enqueue_per_peer_napi(skb, PACKET_STATE_DEAD); + wg_queue_enqueue_per_peer_rx(skb, PACKET_STATE_DEAD); if (likely(!ret || ret == -EPIPE)) { rcu_read_unlock_bh(); return; --- linux-5.8.0.orig/drivers/net/wireguard/send.c +++ linux-5.8.0/drivers/net/wireguard/send.c @@ -239,8 +239,7 @@ wg_packet_send_staged_packets(peer); } -static void wg_packet_create_data_done(struct sk_buff *first, - struct wg_peer *peer) +static void wg_packet_create_data_done(struct wg_peer *peer, struct sk_buff *first) { struct sk_buff *skb, *next; bool is_keepalive, data_sent = false; @@ -262,22 +261,19 @@ void wg_packet_tx_worker(struct work_struct *work) { - struct crypt_queue *queue = container_of(work, struct crypt_queue, - work); + struct wg_peer *peer = container_of(work, struct wg_peer, transmit_packet_work); struct noise_keypair *keypair; enum packet_state state; struct sk_buff *first; - struct wg_peer *peer; - while ((first = __ptr_ring_peek(&queue->ring)) != NULL && + while ((first = wg_prev_queue_peek(&peer->tx_queue)) != NULL && (state = atomic_read_acquire(&PACKET_CB(first)->state)) != PACKET_STATE_UNCRYPTED) { - __ptr_ring_discard_one(&queue->ring); - peer = PACKET_PEER(first); + wg_prev_queue_drop_peeked(&peer->tx_queue); keypair = PACKET_CB(first)->keypair; if (likely(state == PACKET_STATE_CRYPTED)) - wg_packet_create_data_done(first, peer); + wg_packet_create_data_done(peer, first); else kfree_skb_list(first); @@ -306,16 +302,14 @@ break; } } - wg_queue_enqueue_per_peer(&PACKET_PEER(first)->tx_queue, first, - state); + wg_queue_enqueue_per_peer_tx(first, state); if (need_resched()) cond_resched(); } } -static void wg_packet_create_data(struct sk_buff *first) +static void wg_packet_create_data(struct wg_peer *peer, struct sk_buff *first) { - struct wg_peer *peer = PACKET_PEER(first); struct wg_device *wg = peer->device; int ret = -EINVAL; @@ -323,13 +317,10 @@ if (unlikely(READ_ONCE(peer->is_dead))) goto err; - ret = wg_queue_enqueue_per_device_and_peer(&wg->encrypt_queue, - &peer->tx_queue, first, - wg->packet_crypt_wq, - &wg->encrypt_queue.last_cpu); + ret = wg_queue_enqueue_per_device_and_peer(&wg->encrypt_queue, &peer->tx_queue, first, + wg->packet_crypt_wq, &wg->encrypt_queue.last_cpu); if (unlikely(ret == -EPIPE)) - wg_queue_enqueue_per_peer(&peer->tx_queue, first, - PACKET_STATE_DEAD); + wg_queue_enqueue_per_peer_tx(first, PACKET_STATE_DEAD); err: rcu_read_unlock_bh(); if (likely(!ret || ret == -EPIPE)) @@ -393,7 +384,7 @@ packets.prev->next = NULL; wg_peer_get(keypair->entry.peer); PACKET_CB(packets.next)->keypair = keypair; - wg_packet_create_data(packets.next); + wg_packet_create_data(peer, packets.next); return; out_invalid: --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/ce.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/ce.c @@ -1555,7 +1555,7 @@ ret = ath10k_ce_alloc_shadow_base(ar, src_ring, nentries); if (ret) { dma_free_coherent(ar->dev, - (nentries * sizeof(struct ce_desc_64) + + (nentries * sizeof(struct ce_desc) + CE_DESC_RING_ALIGN), src_ring->base_addr_owner_space_unaligned, base_addr); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/htt_rx.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/htt_rx.c @@ -142,6 +142,14 @@ BUILD_BUG_ON(HTT_RX_RING_FILL_LEVEL >= HTT_RX_RING_SIZE / 2); idx = __le32_to_cpu(*htt->rx_ring.alloc_idx.vaddr); + + if (idx < 0 || idx >= htt->rx_ring.size) { + ath10k_err(htt->ar, "rx ring index is not valid, firmware malfunctioning?\n"); + idx &= htt->rx_ring.size_mask; + ret = -ENOMEM; + goto fail; + } + while (num > 0) { skb = dev_alloc_skb(HTT_RX_BUF_SIZE + HTT_RX_DESC_ALIGN); if (!skb) { @@ -941,6 +949,7 @@ u8 preamble = 0; u8 group_id; u32 info1, info2, info3; + u32 stbc, nsts_su; info1 = __le32_to_cpu(rxd->ppdu_start.info1); info2 = __le32_to_cpu(rxd->ppdu_start.info2); @@ -985,11 +994,16 @@ */ bw = info2 & 3; sgi = info3 & 1; + stbc = (info2 >> 3) & 1; group_id = (info2 >> 4) & 0x3F; if (GROUP_ID_IS_SU_MIMO(group_id)) { mcs = (info3 >> 4) & 0x0F; - nss = ((info2 >> 10) & 0x07) + 1; + nsts_su = ((info2 >> 10) & 0x07); + if (stbc) + nss = (nsts_su >> 2) + 1; + else + nss = (nsts_su + 1); } else { /* Hardware doesn't decode VHT-SIG-B into Rx descriptor * so it's impossible to decode MCS. Also since @@ -3575,12 +3589,14 @@ } if (ar->htt.disable_tx_comp) { - arsta->tx_retries += peer_stats->retry_pkts; arsta->tx_failed += peer_stats->failed_pkts; - ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx retries %d tx failed %d\n", - arsta->tx_retries, arsta->tx_failed); + ath10k_dbg(ar, ATH10K_DBG_HTT, "tx failed %d\n", + arsta->tx_failed); } + arsta->tx_retries += peer_stats->retry_pkts; + ath10k_dbg(ar, ATH10K_DBG_HTT, "htt tx retries %d", arsta->tx_retries); + if (ath10k_debug_is_extd_tx_stats_enabled(ar)) ath10k_accumulate_per_peer_tx_stats(ar, arsta, peer_stats, rate_idx); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/htt_tx.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -1591,7 +1591,9 @@ err_unmap_msdu: dma_unmap_single(dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE); err_free_msdu_id: + spin_lock_bh(&htt->tx_lock); ath10k_htt_tx_free_msdu_id(htt, msdu_id); + spin_unlock_bh(&htt->tx_lock); err: return res; } @@ -1798,7 +1800,9 @@ err_unmap_msdu: dma_unmap_single(dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE); err_free_msdu_id: + spin_lock_bh(&htt->tx_lock); ath10k_htt_tx_free_msdu_id(htt, msdu_id); + spin_unlock_bh(&htt->tx_lock); err: return res; } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/mac.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/mac.c @@ -3680,23 +3680,16 @@ static int ath10k_mac_tx_wmi_mgmt(struct ath10k *ar, struct sk_buff *skb) { struct sk_buff_head *q = &ar->wmi_mgmt_tx_queue; - int ret = 0; - - spin_lock_bh(&ar->data_lock); - if (skb_queue_len(q) == ATH10K_MAX_NUM_MGMT_PENDING) { + if (skb_queue_len_lockless(q) >= ATH10K_MAX_NUM_MGMT_PENDING) { ath10k_warn(ar, "wmi mgmt tx queue is full\n"); - ret = -ENOSPC; - goto unlock; + return -ENOSPC; } - __skb_queue_tail(q, skb); + skb_queue_tail(q, skb); ieee80211_queue_work(ar->hw, &ar->wmi_mgmt_tx_work); -unlock: - spin_unlock_bh(&ar->data_lock); - - return ret; + return 0; } static enum ath10k_mac_tx_path @@ -7283,7 +7276,7 @@ struct ieee80211_channel *channel) { int ret; - enum wmi_bss_survey_req_type type = WMI_BSS_SURVEY_REQ_TYPE_READ_CLEAR; + enum wmi_bss_survey_req_type type = WMI_BSS_SURVEY_REQ_TYPE_READ; lockdep_assert_held(&ar->conf_mutex); @@ -8528,7 +8521,9 @@ if (!ath10k_peer_stats_enabled(ar)) return; + mutex_lock(&ar->conf_mutex); ath10k_debug_fw_stats_request(ar); + mutex_unlock(&ar->conf_mutex); sinfo->rx_duration = arsta->rx_duration; sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION); @@ -8547,12 +8542,13 @@ sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); if (ar->htt.disable_tx_comp) { - sinfo->tx_retries = arsta->tx_retries; - sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES); sinfo->tx_failed = arsta->tx_failed; sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED); } + sinfo->tx_retries = arsta->tx_retries; + sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES); + ath10k_mac_sta_get_peer_stats_info(ar, sta, sinfo); } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/sdio.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/sdio.c @@ -557,6 +557,10 @@ le16_to_cpu(htc_hdr->len), ATH10K_HTC_MBOX_MAX_PAYLOAD_LENGTH); ret = -ENOMEM; + + queue_work(ar->workqueue, &ar->restart_work); + ath10k_warn(ar, "exceeds length, start recovery\n"); + goto err; } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/snoc.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/snoc.c @@ -1042,12 +1042,13 @@ ret = ath10k_snoc_init_pipes(ar); if (ret) { ath10k_err(ar, "failed to initialize CE: %d\n", ret); - goto err_wlan_enable; + goto err_free_rri; } return 0; -err_wlan_enable: +err_free_rri: + ath10k_ce_free_rri(ar); ath10k_snoc_wlan_disable(ar); return ret; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/usb.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/usb.c @@ -997,6 +997,8 @@ ar_usb = ath10k_usb_priv(ar); ret = ath10k_usb_create(ar, interface); + if (ret) + goto err; ar_usb->ar = ar; ar->dev_id = product_id; @@ -1009,7 +1011,7 @@ ret = ath10k_core_register(ar, &bus_params); if (ret) { ath10k_warn(ar, "failed to register driver core: %d\n", ret); - goto err; + goto err_usb_destroy; } /* TODO: remove this once USB support is fully implemented */ @@ -1017,6 +1019,9 @@ return 0; +err_usb_destroy: + ath10k_usb_destroy(ar); + err: ath10k_core_destroy(ar); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/wmi-tlv.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/wmi-tlv.c @@ -240,8 +240,10 @@ __le32_to_cpu(stat->last_tx_rate_code), __le32_to_cpu(stat->last_tx_bitrate_kbps)); + rcu_read_lock(); sta = ieee80211_find_sta_by_ifaddr(ar->hw, stat->peer_macaddr.addr, NULL); if (!sta) { + rcu_read_unlock(); ath10k_warn(ar, "not found station for peer stats\n"); return -EINVAL; } @@ -251,6 +253,7 @@ arsta->rx_bitrate_kbps = __le32_to_cpu(stat->last_rx_bitrate_kbps); arsta->tx_rate_code = __le32_to_cpu(stat->last_tx_rate_code); arsta->tx_bitrate_kbps = __le32_to_cpu(stat->last_tx_bitrate_kbps); + rcu_read_unlock(); return 0; } @@ -573,13 +576,13 @@ case WMI_TDLS_TEARDOWN_REASON_TX: case WMI_TDLS_TEARDOWN_REASON_RSSI: case WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT: + rcu_read_lock(); station = ieee80211_find_sta_by_ifaddr(ar->hw, ev->peer_macaddr.addr, NULL); if (!station) { ath10k_warn(ar, "did not find station from tdls peer event"); - kfree(tb); - return; + goto exit; } arvif = ath10k_get_arvif(ar, __le32_to_cpu(ev->vdev_id)); ieee80211_tdls_oper_request( @@ -590,6 +593,9 @@ ); break; } + +exit: + rcu_read_unlock(); kfree(tb); } @@ -1401,13 +1407,15 @@ switch (tag) { case WMI_TLV_TAG_STRUCT_SERVICE_AVAILABLE_EVENT: + arg->service_map_ext_valid = true; arg->service_map_ext_len = *(__le32 *)ptr; arg->service_map_ext = ptr + sizeof(__le32); return 0; default: break; } - return -EPROTO; + + return 0; } static int ath10k_wmi_tlv_op_pull_svc_avail(struct ath10k *ar, --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/wmi.c +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/wmi.c @@ -5750,8 +5750,13 @@ ret); } - ath10k_wmi_map_svc_ext(ar, arg.service_map_ext, ar->wmi.svc_map, - __le32_to_cpu(arg.service_map_ext_len)); + /* + * Initialization of "arg.service_map_ext_valid" to ZERO is necessary + * for the below logic to work. + */ + if (arg.service_map_ext_valid) + ath10k_wmi_map_svc_ext(ar, arg.service_map_ext, ar->wmi.svc_map, + __le32_to_cpu(arg.service_map_ext_len)); } static int ath10k_wmi_event_temperature(struct ath10k *ar, struct sk_buff *skb) --- linux-5.8.0.orig/drivers/net/wireless/ath/ath10k/wmi.h +++ linux-5.8.0/drivers/net/wireless/ath/ath10k/wmi.h @@ -6906,6 +6906,7 @@ }; struct wmi_svc_avail_ev_arg { + bool service_map_ext_valid; __le32 service_map_ext_len; const __le32 *service_map_ext; }; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/ahb.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/ahb.c @@ -981,12 +981,16 @@ static int ath11k_ahb_remove(struct platform_device *pdev) { struct ath11k_base *ab = platform_get_drvdata(pdev); + unsigned long left; reinit_completion(&ab->driver_recovery); - if (test_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags)) - wait_for_completion_timeout(&ab->driver_recovery, - ATH11K_AHB_RECOVERY_TIMEOUT); + if (test_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags)) { + left = wait_for_completion_timeout(&ab->driver_recovery, + ATH11K_AHB_RECOVERY_TIMEOUT); + if (!left) + ath11k_warn(ab, "failed to receive recovery response completion\n"); + } set_bit(ATH11K_FLAG_UNREGISTERING, &ab->dev_flags); cancel_work_sync(&ab->restart_work); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/core.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/core.c @@ -653,6 +653,7 @@ complete(&ar->scan.started); complete(&ar->scan.completed); complete(&ar->peer_assoc_done); + complete(&ar->peer_delete_done); complete(&ar->install_key_done); complete(&ar->vdev_setup_done); complete(&ar->bss_survey_done); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/core.h +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/core.h @@ -487,6 +487,7 @@ u8 lmac_id; struct completion peer_assoc_done; + struct completion peer_delete_done; int install_key_status; struct completion install_key_done; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/dp_rx.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -1423,7 +1423,7 @@ } spin_unlock_bh(&ar->data_lock); - ppdu_info = kzalloc(sizeof(*ppdu_info), GFP_KERNEL); + ppdu_info = kzalloc(sizeof(*ppdu_info), GFP_ATOMIC); if (!ppdu_info) return NULL; @@ -2162,6 +2162,7 @@ struct ieee80211_rx_status *rx_status) { u8 channel_num; + struct ieee80211_channel *channel; rx_status->freq = 0; rx_status->rate_idx = 0; @@ -2179,9 +2180,12 @@ rx_status->band = NL80211_BAND_5GHZ; } else { spin_lock_bh(&ar->data_lock); - rx_status->band = ar->rx_channel->band; - channel_num = - ieee80211_frequency_to_channel(ar->rx_channel->center_freq); + channel = ar->rx_channel; + if (channel) { + rx_status->band = channel->band; + channel_num = + ieee80211_frequency_to_channel(channel->center_freq); + } spin_unlock_bh(&ar->data_lock); ath11k_dbg_dump(ar->ab, ATH11K_DBG_DATA, NULL, "rx_desc: ", rx_desc, sizeof(struct hal_rx_desc)); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/dp_tx.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/dp_tx.c @@ -509,6 +509,8 @@ u32 msdu_id; u8 mac_id; + spin_lock_bh(&status_ring->lock); + ath11k_hal_srng_access_begin(ab, status_ring); while ((ATH11K_TX_COMPL_NEXT(tx_ring->tx_status_head) != @@ -528,6 +530,8 @@ ath11k_hal_srng_access_end(ab, status_ring); + spin_unlock_bh(&status_ring->lock); + while (ATH11K_TX_COMPL_NEXT(tx_ring->tx_status_tail) != tx_ring->tx_status_head) { struct hal_wbm_release_ring *tx_status; u32 desc_id; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/mac.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/mac.c @@ -3912,7 +3912,8 @@ if (enable) { tlv_filter = ath11k_mac_mon_status_filter_default; - tlv_filter.rx_filter = ath11k_debug_rx_filter(ar); + if (ath11k_debug_rx_filter(ar)) + tlv_filter.rx_filter = ath11k_debug_rx_filter(ar); } ring_id = ar->dp.rx_mon_status_refill_ring.refill_buf_ring.ring_id; @@ -4370,8 +4371,22 @@ err_peer_del: if (arvif->vdev_type == WMI_VDEV_TYPE_AP) { + reinit_completion(&ar->peer_delete_done); + + ret = ath11k_wmi_send_peer_delete_cmd(ar, vif->addr, + arvif->vdev_id); + if (ret) { + ath11k_warn(ar->ab, "failed to delete peer vdev_id %d addr %pM\n", + arvif->vdev_id, vif->addr); + return ret; + } + + ret = ath11k_wait_for_peer_delete_done(ar, arvif->vdev_id, + vif->addr); + if (ret) + return ret; + ar->num_peers--; - ath11k_wmi_send_peer_delete_cmd(ar, vif->addr, arvif->vdev_id); } err_vdev_del: @@ -5824,7 +5839,7 @@ ret = ath11k_mac_setup_channels_rates(ar, cap->supported_bands); if (ret) - goto err_free; + goto err; ath11k_mac_setup_ht_vht_cap(ar, cap, &ht_cap); ath11k_mac_setup_he_cap(ar, cap); @@ -5938,7 +5953,9 @@ err_free: kfree(ar->mac.sbands[NL80211_BAND_2GHZ].channels); kfree(ar->mac.sbands[NL80211_BAND_5GHZ].channels); + kfree(ar->mac.sbands[NL80211_BAND_6GHZ].channels); +err: SET_IEEE80211_DEV(ar->hw, NULL); return ret; } @@ -6032,6 +6049,7 @@ mutex_init(&ar->conf_mutex); init_completion(&ar->vdev_setup_done); init_completion(&ar->peer_assoc_done); + init_completion(&ar->peer_delete_done); init_completion(&ar->install_key_done); init_completion(&ar->bss_survey_done); init_completion(&ar->scan.started); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/peer.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/peer.c @@ -177,12 +177,36 @@ return ath11k_wait_for_peer_common(ar->ab, vdev_id, addr, false); } +int ath11k_wait_for_peer_delete_done(struct ath11k *ar, u32 vdev_id, + const u8 *addr) +{ + int ret; + unsigned long time_left; + + ret = ath11k_wait_for_peer_deleted(ar, vdev_id, addr); + if (ret) { + ath11k_warn(ar->ab, "failed wait for peer deleted"); + return ret; + } + + time_left = wait_for_completion_timeout(&ar->peer_delete_done, + 3 * HZ); + if (time_left == 0) { + ath11k_warn(ar->ab, "Timeout in receiving peer delete response\n"); + return -ETIMEDOUT; + } + + return 0; +} + int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr) { int ret; lockdep_assert_held(&ar->conf_mutex); + reinit_completion(&ar->peer_delete_done); + ret = ath11k_wmi_send_peer_delete_cmd(ar, addr, vdev_id); if (ret) { ath11k_warn(ar->ab, @@ -191,7 +215,7 @@ return ret; } - ret = ath11k_wait_for_peer_deleted(ar, vdev_id, addr); + ret = ath11k_wait_for_peer_delete_done(ar, vdev_id, addr); if (ret) return ret; @@ -250,8 +274,22 @@ spin_unlock_bh(&ar->ab->base_lock); ath11k_warn(ar->ab, "failed to find peer %pM on vdev %i after creation\n", param->peer_addr, param->vdev_id); - ath11k_wmi_send_peer_delete_cmd(ar, param->peer_addr, - param->vdev_id); + + reinit_completion(&ar->peer_delete_done); + + ret = ath11k_wmi_send_peer_delete_cmd(ar, param->peer_addr, + param->vdev_id); + if (ret) { + ath11k_warn(ar->ab, "failed to delete peer vdev_id %d addr %pM\n", + param->vdev_id, param->peer_addr); + return ret; + } + + ret = ath11k_wait_for_peer_delete_done(ar, param->vdev_id, + param->peer_addr); + if (ret) + return ret; + return -ENOENT; } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/peer.h +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/peer.h @@ -41,5 +41,7 @@ int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr); int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif, struct ieee80211_sta *sta, struct peer_create_params *param); +int ath11k_wait_for_peer_delete_done(struct ath11k *ar, u32 vdev_id, + const u8 *addr); #endif /* _PEER_H_ */ --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/qmi.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/qmi.c @@ -1560,15 +1560,17 @@ struct qmi_wlanfw_ind_register_resp_msg_v01 *resp; struct qmi_handle *handle = &ab->qmi.handle; struct qmi_txn txn; - int ret = 0; + int ret; req = kzalloc(sizeof(*req), GFP_KERNEL); if (!req) return -ENOMEM; resp = kzalloc(sizeof(*resp), GFP_KERNEL); - if (!resp) + if (!resp) { + ret = -ENOMEM; goto resp_out; + } req->client_id_valid = 1; req->client_id = QMI_WLANFW_CLIENT_ID; @@ -2419,6 +2421,7 @@ ATH11K_QMI_WLFW_SERVICE_INS_ID_V01); if (ret < 0) { ath11k_warn(ab, "failed to add qmi lookup\n"); + destroy_workqueue(ab->qmi.event_wq); return ret; } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/reg.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/reg.c @@ -80,6 +80,7 @@ */ init_country_param.flags = ALPHA_IS_SET; memcpy(&init_country_param.cc_info.alpha2, request->alpha2, 2); + init_country_param.cc_info.alpha2[2] = 0; ret = ath11k_wmi_send_init_country_cmd(ar, init_country_param); if (ret) @@ -202,7 +203,7 @@ ab = ar->ab; pdev_id = ar->pdev_idx; - spin_lock(&ab->base_lock); + spin_lock_bh(&ab->base_lock); if (init) { /* Apply the regd received during init through @@ -223,7 +224,7 @@ if (!regd) { ret = -EINVAL; - spin_unlock(&ab->base_lock); + spin_unlock_bh(&ab->base_lock); goto err; } @@ -234,7 +235,7 @@ if (regd_copy) ath11k_copy_regd(regd, regd_copy); - spin_unlock(&ab->base_lock); + spin_unlock_bh(&ab->base_lock); if (!regd_copy) { ret = -ENOMEM; @@ -580,7 +581,6 @@ if (!tmp_regd) goto ret; - tmp_regd->n_reg_rules = num_rules; memcpy(tmp_regd->alpha2, reg_info->alpha2, REG_ALPHA2_LEN + 1); memcpy(alpha2, reg_info->alpha2, REG_ALPHA2_LEN + 1); alpha2[2] = '\0'; @@ -593,7 +593,7 @@ /* Update reg_rules[] below. Firmware is expected to * send these rules in order(2G rules first and then 5G) */ - for (; i < tmp_regd->n_reg_rules; i++) { + for (; i < num_rules; i++) { if (reg_info->num_2g_reg_rules && (i < reg_info->num_2g_reg_rules)) { reg_rule = reg_info->reg_rules_2g_ptr + i; @@ -648,6 +648,8 @@ flags); } + tmp_regd->n_reg_rules = i; + if (intersect) { default_regd = ab->default_regd[reg_info->phy_id]; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath11k/wmi.c +++ linux-5.8.0/drivers/net/wireless/ath/ath11k/wmi.c @@ -5051,15 +5051,26 @@ static void ath11k_peer_delete_resp_event(struct ath11k_base *ab, struct sk_buff *skb) { struct wmi_peer_delete_resp_event peer_del_resp; + struct ath11k *ar; if (ath11k_pull_peer_del_resp_ev(ab, skb, &peer_del_resp) != 0) { ath11k_warn(ab, "failed to extract peer delete resp"); return; } - /* TODO: Do we need to validate whether ath11k_peer_find() return NULL - * Why this is needed when there is HTT event for peer delete - */ + rcu_read_lock(); + ar = ath11k_mac_get_ar_by_vdev_id(ab, peer_del_resp.vdev_id); + if (!ar) { + ath11k_warn(ab, "invalid vdev id in peer delete resp ev %d", + peer_del_resp.vdev_id); + rcu_read_unlock(); + return; + } + + complete(&ar->peer_delete_done); + rcu_read_unlock(); + ath11k_dbg(ab, ATH11K_DBG_WMI, "peer delete resp for vdev id %d addr %pM\n", + peer_del_resp.vdev_id, peer_del_resp.peer_macaddr.addr); } static inline const char *ath11k_wmi_vdev_resp_print(u32 vdev_resp_status) --- linux-5.8.0.orig/drivers/net/wireless/ath/ath6kl/main.c +++ linux-5.8.0/drivers/net/wireless/ath/ath6kl/main.c @@ -430,6 +430,9 @@ ath6kl_dbg(ATH6KL_DBG_TRC, "new station %pM aid=%d\n", mac_addr, aid); + if (aid < 1 || aid > AP_MAX_NUM_STA) + return; + if (assoc_req_len > sizeof(struct ieee80211_hdr_3addr)) { struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) assoc_info; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath6kl/wmi.c +++ linux-5.8.0/drivers/net/wireless/ath/ath6kl/wmi.c @@ -2645,6 +2645,11 @@ return -EINVAL; } + if (tsid >= 16) { + ath6kl_err("invalid tsid: %d\n", tsid); + return -EINVAL; + } + skb = ath6kl_wmi_get_new_buf(sizeof(*cmd)); if (!skb) return -ENOMEM; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/ath9k.h +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/ath9k.h @@ -177,7 +177,8 @@ s8 txq; u8 keyix; u8 rtscts_rate; - u8 retries : 7; + u8 retries : 6; + u8 dyn_smps : 1; u8 baw_tracked : 1; u8 tx_power; enum ath9k_key_type keytype:2; --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/debug.c +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/debug.c @@ -1223,8 +1223,11 @@ ah->nf_override = val; - if (ah->curchan) + if (ah->curchan) { + ath9k_ps_wakeup(sc); ath9k_hw_loadnf(ah, ah->curchan); + ath9k_ps_restore(sc); + } return count; } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/hif_usb.c +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/hif_usb.c @@ -449,10 +449,19 @@ spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); /* The pending URBs have to be canceled. */ + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); list_for_each_entry_safe(tx_buf, tx_buf_tmp, &hif_dev->tx.tx_pending, list) { + usb_get_urb(tx_buf->urb); + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); usb_kill_urb(tx_buf->urb); + list_del(&tx_buf->list); + usb_free_urb(tx_buf->urb); + kfree(tx_buf->buf); + kfree(tx_buf); + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); } + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); usb_kill_anchored_urbs(&hif_dev->mgmt_submitted); } @@ -762,27 +771,37 @@ struct tx_buf *tx_buf = NULL, *tx_buf_tmp = NULL; unsigned long flags; + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); list_for_each_entry_safe(tx_buf, tx_buf_tmp, &hif_dev->tx.tx_buf, list) { + usb_get_urb(tx_buf->urb); + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); usb_kill_urb(tx_buf->urb); list_del(&tx_buf->list); usb_free_urb(tx_buf->urb); kfree(tx_buf->buf); kfree(tx_buf); + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); } + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); hif_dev->tx.flags |= HIF_USB_TX_FLUSH; spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); list_for_each_entry_safe(tx_buf, tx_buf_tmp, &hif_dev->tx.tx_pending, list) { + usb_get_urb(tx_buf->urb); + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); usb_kill_urb(tx_buf->urb); list_del(&tx_buf->list); usb_free_urb(tx_buf->urb); kfree(tx_buf->buf); kfree(tx_buf); + spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); } + spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); usb_kill_anchored_urbs(&hif_dev->mgmt_submitted); } --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c @@ -974,7 +974,7 @@ struct ath_htc_rx_status *rxstatus; struct ath_rx_status rx_stats; bool decrypt_error = false; - __be16 rs_datalen; + u16 rs_datalen; bool is_phyerr; if (skb->len < HTC_RX_FRAME_HEADER_SIZE) { --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/htc_hst.c +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -339,6 +339,8 @@ if (skb) { htc_hdr = (struct htc_frame_hdr *) skb->data; + if (htc_hdr->endpoint_id >= ARRAY_SIZE(htc_handle->endpoint)) + goto ret; endpoint = &htc_handle->endpoint[htc_hdr->endpoint_id]; skb_pull(skb, sizeof(struct htc_frame_hdr)); --- linux-5.8.0.orig/drivers/net/wireless/ath/ath9k/xmit.c +++ linux-5.8.0/drivers/net/wireless/ath/ath9k/xmit.c @@ -1271,6 +1271,11 @@ is_40, is_sgi, is_sp); if (rix < 8 && (tx_info->flags & IEEE80211_TX_CTL_STBC)) info->rates[i].RateFlags |= ATH9K_RATESERIES_STBC; + if (rix >= 8 && fi->dyn_smps) { + info->rates[i].RateFlags |= + ATH9K_RATESERIES_RTS_CTS; + info->flags |= ATH9K_TXDESC_CTSENA; + } info->txpower[i] = ath_get_rate_txpower(sc, bf, rix, is_40, false); @@ -2114,6 +2119,7 @@ fi->keyix = an->ps_key; else fi->keyix = ATH9K_TXKEYIX_INVALID; + fi->dyn_smps = sta && sta->smps_mode == IEEE80211_SMPS_DYNAMIC; fi->keytype = keytype; fi->framelen = framelen; fi->tx_power = txpower; --- linux-5.8.0.orig/drivers/net/wireless/ath/wcn36xx/main.c +++ linux-5.8.0/drivers/net/wireless/ath/wcn36xx/main.c @@ -163,7 +163,7 @@ .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16, .mcs = { .rx_mask = { 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, - .rx_highest = cpu_to_le16(72), + .rx_highest = cpu_to_le16(150), .tx_params = IEEE80211_HT_MCS_TX_DEFINED, } } --- linux-5.8.0.orig/drivers/net/wireless/ath/wil6210/Kconfig +++ linux-5.8.0/drivers/net/wireless/ath/wil6210/Kconfig @@ -2,6 +2,7 @@ config WIL6210 tristate "Wilocity 60g WiFi card wil6210 support" select WANT_DEV_COREDUMP + select CRC32 depends on CFG80211 depends on PCI default n --- linux-5.8.0.orig/drivers/net/wireless/broadcom/b43/phy_n.c +++ linux-5.8.0/drivers/net/wireless/broadcom/b43/phy_n.c @@ -5308,7 +5308,7 @@ for (i = 0; i < 4; i++) { if (dev->phy.rev >= 3) - table[i] = coef[i]; + coef[i] = table[i]; else coef[i] = 0; } --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -84,6 +84,8 @@ #define BRCMF_ND_INFO_TIMEOUT msecs_to_jiffies(2000) +#define BRCMF_PS_MAX_TIMEOUT_MS 2000 + #define BRCMF_ASSOC_PARAMS_FIXED_SIZE \ (sizeof(struct brcmf_assoc_params_le) - sizeof(u16)) @@ -2133,7 +2135,8 @@ BRCMF_WSEC_MAX_PSK_LEN); else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) { /* clean up user-space RSNE */ - if (brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0)) { + err = brcmf_fil_iovar_data_set(ifp, "wpaie", NULL, 0); + if (err) { bphy_err(drvr, "failed to clean up user-space RSNE\n"); goto done; } @@ -2941,6 +2944,12 @@ else bphy_err(drvr, "error (%d)\n", err); } + + err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret", + min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS)); + if (err) + bphy_err(drvr, "Unable to set pm timeout, (%d)\n", err); + done: brcmf_dbg(TRACE, "Exit\n"); return err; @@ -5566,7 +5575,8 @@ return false; } -static bool brcmf_is_linkdown(const struct brcmf_event_msg *e) +static bool brcmf_is_linkdown(struct brcmf_cfg80211_vif *vif, + const struct brcmf_event_msg *e) { u32 event = e->event_code; u16 flags = e->flags; @@ -5575,6 +5585,8 @@ (event == BRCMF_E_DISASSOC_IND) || ((event == BRCMF_E_LINK) && (!(flags & BRCMF_EVENT_MSG_LINK)))) { brcmf_dbg(CONN, "Processing link down\n"); + clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state); + clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state); return true; } return false; @@ -6022,7 +6034,7 @@ } else brcmf_bss_connect_done(cfg, ndev, e, true); brcmf_net_setcarrier(ifp, true); - } else if (brcmf_is_linkdown(e)) { + } else if (brcmf_is_linkdown(ifp->vif, e)) { brcmf_dbg(CONN, "Linkdown\n"); if (!brcmf_is_ibssmode(ifp->vif)) { brcmf_bss_connect_done(cfg, ndev, e, false); --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -483,7 +483,7 @@ ret = brcmf_proto_hdrpull(drvr, true, skb, ifp); if (ret || !(*ifp) || !(*ifp)->ndev) { - if (ret != -ENODATA && *ifp) + if (ret != -ENODATA && *ifp && (*ifp)->ndev) (*ifp)->ndev->stats.rx_errors++; brcmu_pkt_buf_free_skb(skb); return -ENODATA; --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/dmi.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/dmi.c @@ -40,6 +40,18 @@ BRCM_CC_43340_CHIP_ID, 2, "pov-tab-p1006w-data" }; +static const struct brcmf_dmi_data predia_basic_data = { + BRCM_CC_43341_CHIP_ID, 2, "predia-basic" +}; + +/* Note the Voyo winpad A15 tablet uses the same Ampak AP6330 module, with the + * exact same nvram file as the Prowise-PT301 tablet. Since the nvram for the + * Prowise-PT301 is already in linux-firmware we just point to that here. + */ +static const struct brcmf_dmi_data voyo_winpad_a15_data = { + BRCM_CC_4330_CHIP_ID, 4, "Prowise-PT301" +}; + static const struct dmi_system_id dmi_platform_data[] = { { /* ACEPC T8 Cherry Trail Z8350 mini PC */ @@ -111,6 +123,26 @@ }, .driver_data = (void *)&pov_tab_p1006w_data, }, + { + /* Predia Basic tablet (+ with keyboard dock) */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), + DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"), + /* Mx.WT107.KUBNGEA02 with the version-nr dropped */ + DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"), + }, + .driver_data = (void *)&predia_basic_data, + }, + { + /* Voyo winpad A15 tablet */ + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), + DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"), + /* Above strings are too generic, also match on BIOS date */ + DMI_MATCH(DMI_BIOS_DATE, "11/20/2014"), + }, + .driver_data = (void *)&voyo_winpad_a15_data, + }, {} }; --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c @@ -304,10 +304,12 @@ { struct brcmf_fweh_info *fweh = &drvr->fweh; - /* cancel the worker */ - cancel_work_sync(&fweh->event_work); - WARN_ON(!list_empty(&fweh->event_q)); - memset(fweh->evt_handler, 0, sizeof(fweh->evt_handler)); + /* cancel the worker if initialized */ + if (fweh->event_work.func) { + cancel_work_sync(&fweh->event_work); + WARN_ON(!list_empty(&fweh->event_q)); + memset(fweh->evt_handler, 0, sizeof(fweh->evt_handler)); + } } /** --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h @@ -19,7 +19,7 @@ #define BRCMF_ARP_OL_PEER_AUTO_REPLY 0x00000008 #define BRCMF_BSS_INFO_VERSION 109 /* curr ver of brcmf_bss_info_le struct */ -#define BRCMF_BSS_RSSI_ON_CHANNEL 0x0002 +#define BRCMF_BSS_RSSI_ON_CHANNEL 0x0004 #define BRCMF_STA_BRCM 0x00000001 /* Running a Broadcom driver */ #define BRCMF_STA_WME 0x00000002 /* WMM association */ --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c @@ -621,6 +621,7 @@ static void brcmf_fws_psq_flush(struct brcmf_fws_info *fws, struct pktq *q, int ifidx) { + struct brcmf_fws_hanger_item *hi; bool (*matchfn)(struct sk_buff *, void *) = NULL; struct sk_buff *skb; int prec; @@ -632,6 +633,9 @@ skb = brcmu_pktq_pdeq_match(q, prec, matchfn, &ifidx); while (skb) { hslot = brcmf_skb_htod_tag_get_field(skb, HSLOT); + hi = &fws->hanger.items[hslot]; + WARN_ON(skb != hi->pkt); + hi->state = BRCMF_FWS_HANGER_ITEM_STATE_FREE; brcmf_fws_hanger_poppkt(&fws->hanger, hslot, &skb, true); brcmu_pkt_buf_free_skb(skb); --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c @@ -1619,6 +1619,8 @@ BRCMF_TX_IOCTL_MAX_MSG_SIZE, msgbuf->ioctbuf, msgbuf->ioctbuf_handle); + if (msgbuf->txflow_wq) + destroy_workqueue(msgbuf->txflow_wq); kfree(msgbuf); } return -ENOMEM; --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c @@ -1936,16 +1936,18 @@ fwreq = brcmf_pcie_prepare_fw_request(devinfo); if (!fwreq) { ret = -ENOMEM; - goto fail_bus; + goto fail_brcmf; } ret = brcmf_fw_get_firmwares(bus->dev, fwreq, brcmf_pcie_setup); if (ret < 0) { kfree(fwreq); - goto fail_bus; + goto fail_brcmf; } return 0; +fail_brcmf: + brcmf_free(&devinfo->pdev->dev); fail_bus: kfree(bus->msgbuf); kfree(bus); --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -3699,7 +3699,11 @@ if (bus->idlecount > bus->idletime) { brcmf_dbg(SDIO, "idle\n"); sdio_claim_host(bus->sdiodev->func1); - brcmf_sdio_wd_timer(bus, false); +#ifdef DEBUG + if (!BRCMF_FWCON_ON() || + bus->console_interval == 0) +#endif + brcmf_sdio_wd_timer(bus, false); bus->idlecount = 0; brcmf_sdio_bus_sleep(bus, true, false); sdio_release_host(bus->sdiodev->func1); @@ -4223,6 +4227,7 @@ brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL, CY_43012_MESBUSYCTRL, &err); break; + case SDIO_DEVICE_ID_BROADCOM_4329: case SDIO_DEVICE_ID_BROADCOM_4339: brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes for 4339\n", CY_4339_F2_WATERMARK); @@ -4487,6 +4492,7 @@ brcmf_sdiod_intr_unregister(bus->sdiodev); brcmf_detach(bus->sdiodev->dev); + brcmf_free(bus->sdiodev->dev); cancel_work_sync(&bus->datawork); if (bus->brcmf_wq) --- linux-5.8.0.orig/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c +++ linux-5.8.0/drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c @@ -5065,8 +5065,10 @@ pi->pi_fptr.radioloftget = wlc_lcnphy_get_radio_loft; pi->pi_fptr.detach = wlc_phy_detach_lcnphy; - if (!wlc_phy_txpwr_srom_read_lcnphy(pi)) + if (!wlc_phy_txpwr_srom_read_lcnphy(pi)) { + kfree(pi->u.pi_lcnphy); return false; + } if (LCNREV_IS(pi->pubpi.phy_rev, 1)) { if (pi_lcn->lcnphy_tempsense_option == 3) { --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlegacy/common.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlegacy/common.c @@ -4286,8 +4286,8 @@ * power savings, even without L1. */ if (il->cfg->set_l0s) { - pcie_capability_read_word(il->pci_dev, PCI_EXP_LNKCTL, &lctl); - if (lctl & PCI_EXP_LNKCTL_ASPM_L1) { + ret = pcie_capability_read_word(il->pci_dev, PCI_EXP_LNKCTL, &lctl); + if (!ret && (lctl & PCI_EXP_LNKCTL_ASPM_L1)) { /* L1-ASPM enabled; disable(!) L0S */ il_set_bit(il, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/cfg/22000.c @@ -338,6 +338,7 @@ const char iwl_ax200_name[] = "Intel(R) Wi-Fi 6 AX200 160MHz"; const char iwl_ax201_name[] = "Intel(R) Wi-Fi 6 AX201 160MHz"; const char iwl_ax101_name[] = "Intel(R) Wi-Fi 6 AX101"; +const char iwl_ax203_name[] = "Intel(R) Wi-Fi 6 AX203"; const char iwl_ax200_killer_1650w_name[] = "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)"; @@ -357,6 +358,18 @@ .num_rbds = IWL_NUM_RBDS_22000_HE, }; +const struct iwl_cfg iwl_qu_b0_hr_b0 = { + .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, + IWL_DEVICE_22500, + /* + * This device doesn't support receiving BlockAck with a large bitmap + * so we need to restrict the size of transmitted aggregation to the + * HT size; mac80211 would otherwise pick the HE max (256) by default. + */ + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + .num_rbds = IWL_NUM_RBDS_22000_HE, +}; + const struct iwl_cfg iwl_ax201_cfg_qu_hr = { .name = "Intel(R) Wi-Fi 6 AX201 160MHz", .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, @@ -383,6 +396,18 @@ .num_rbds = IWL_NUM_RBDS_22000_HE, }; +const struct iwl_cfg iwl_qu_c0_hr_b0 = { + .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, + IWL_DEVICE_22500, + /* + * This device doesn't support receiving BlockAck with a large bitmap + * so we need to restrict the size of transmitted aggregation to the + * HT size; mac80211 would otherwise pick the HE max (256) by default. + */ + .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, + .num_rbds = IWL_NUM_RBDS_22000_HE, +}; + const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { .name = "Intel(R) Wi-Fi 6 AX201 160MHz", .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/fw/api/sta.h @@ -5,10 +5,9 @@ * * GPL LICENSE SUMMARY * - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH - * Copyright(c) 2018 - 2019 Intel Corporation + * Copyright(c) 2012-2014, 2018 - 2020 Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as @@ -28,10 +27,9 @@ * * BSD LICENSE * - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH - * Copyright(c) 2018 - 2019 Intel Corporation + * Copyright(c) 2012-2014, 2018 - 2020 Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -128,7 +126,9 @@ STA_FLG_MAX_AGG_SIZE_256K = (5 << STA_FLG_MAX_AGG_SIZE_SHIFT), STA_FLG_MAX_AGG_SIZE_512K = (6 << STA_FLG_MAX_AGG_SIZE_SHIFT), STA_FLG_MAX_AGG_SIZE_1024K = (7 << STA_FLG_MAX_AGG_SIZE_SHIFT), - STA_FLG_MAX_AGG_SIZE_MSK = (7 << STA_FLG_MAX_AGG_SIZE_SHIFT), + STA_FLG_MAX_AGG_SIZE_2M = (8 << STA_FLG_MAX_AGG_SIZE_SHIFT), + STA_FLG_MAX_AGG_SIZE_4M = (9 << STA_FLG_MAX_AGG_SIZE_SHIFT), + STA_FLG_MAX_AGG_SIZE_MSK = (0xf << STA_FLG_MAX_AGG_SIZE_SHIFT), STA_FLG_AGG_MPDU_DENS_SHIFT = 23, STA_FLG_AGG_MPDU_DENS_2US = (4 << STA_FLG_AGG_MPDU_DENS_SHIFT), --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/fw/api/time-event.h @@ -8,7 +8,7 @@ * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH - * Copyright(c) 2018 - 2019 Intel Corporation + * Copyright(c) 2018 - 2020 Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as @@ -31,7 +31,7 @@ * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH - * Copyright(c) 2018 - 2019 Intel Corporation + * Copyright(c) 2018 - 2020 Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -421,12 +421,14 @@ * able to run the GO Negotiation. Will not be fragmented and not * repetitive. Valid only on the P2P Device MAC. Only the duration will * be taken into account. + * @SESSION_PROTECT_CONF_MAX_ID: not used */ enum iwl_mvm_session_prot_conf_id { SESSION_PROTECT_CONF_ASSOC, SESSION_PROTECT_CONF_GO_CLIENT_ASSOC, SESSION_PROTECT_CONF_P2P_DEVICE_DISCOV, SESSION_PROTECT_CONF_P2P_GO_NEGOTIATION, + SESSION_PROTECT_CONF_MAX_ID, }; /* SESSION_PROTECTION_CONF_ID_E_VER_1 */ /** @@ -459,7 +461,7 @@ * @mac_id: the mac id for which the session protection started / ended * @status: 1 means success, 0 means failure * @start: 1 means the session protection started, 0 means it ended - * @conf_id: the configuration id of the session that started / eneded + * @conf_id: see &enum iwl_mvm_session_prot_conf_id * * Note that any session protection will always get two notifications: start * and end even the firmware could not schedule it. --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -488,14 +488,14 @@ #define IWL_CFG_RF_ID_HR 0x7 #define IWL_CFG_RF_ID_HR1 0x4 -#define IWL_CFG_NO_160 0x0 -#define IWL_CFG_160 0x1 +#define IWL_CFG_NO_160 0x1 +#define IWL_CFG_160 0x0 #define IWL_CFG_CORES_BT 0x0 #define IWL_CFG_CORES_BT_GNSS 0x5 #define IWL_SUBDEVICE_RF_ID(subdevice) ((u16)((subdevice) & 0x00F0) >> 4) -#define IWL_SUBDEVICE_NO_160(subdevice) ((u16)((subdevice) & 0x0100) >> 9) +#define IWL_SUBDEVICE_NO_160(subdevice) ((u16)((subdevice) & 0x0200) >> 9) #define IWL_SUBDEVICE_CORES(subdevice) ((u16)((subdevice) & 0x1C00) >> 10) struct iwl_dev_info { @@ -539,6 +539,7 @@ extern const char iwl9560_killer_1550i_name[]; extern const char iwl9560_killer_1550s_name[]; extern const char iwl_ax200_name[]; +extern const char iwl_ax203_name[]; extern const char iwl_ax201_name[]; extern const char iwl_ax101_name[]; extern const char iwl_ax200_killer_1650w_name[]; @@ -618,6 +619,8 @@ extern const struct iwl_cfg iwl_qu_b0_hr1_b0; extern const struct iwl_cfg iwl_qu_c0_hr1_b0; extern const struct iwl_cfg iwl_quz_a0_hr1_b0; +extern const struct iwl_cfg iwl_qu_b0_hr_b0; +extern const struct iwl_cfg iwl_qu_c0_hr_b0; extern const struct iwl_cfg iwl_ax200_cfg_cc; extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/iwl-csr.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/iwl-csr.h @@ -147,6 +147,16 @@ #define CSR_MAC_SHADOW_REG_CTL2 (CSR_BASE + 0x0AC) #define CSR_MAC_SHADOW_REG_CTL2_RX_WAKE 0xFFFF +/* LTR control (since IWL_DEVICE_FAMILY_22000) */ +#define CSR_LTR_LONG_VAL_AD (CSR_BASE + 0x0D4) +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_REQ 0x80000000 +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_SCALE 0x1c000000 +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_VAL 0x03ff0000 +#define CSR_LTR_LONG_VAL_AD_SNOOP_REQ 0x00008000 +#define CSR_LTR_LONG_VAL_AD_SNOOP_SCALE 0x00001c00 +#define CSR_LTR_LONG_VAL_AD_SNOOP_VAL 0x000003ff +#define CSR_LTR_LONG_VAL_AD_SCALE_USEC 2 + /* GIO Chicken Bits (PCI Express bus link power management) */ #define CSR_GIO_CHICKEN_BITS (CSR_BASE+0x100) --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c @@ -797,7 +797,7 @@ struct iwl_fw_ini_trigger_tlv *old_trig = (void *)old->data; __le32 *new_data = new_trig->data, *old_data = old_trig->data; u32 new_dwords_num = iwl_tlv_array_len(new, new_trig, data); - u32 old_dwords_num = iwl_tlv_array_len(new, new_trig, data); + u32 old_dwords_num = iwl_tlv_array_len(old, old_trig, data); int i, j; for (i = 0; i < new_dwords_num; i++) { @@ -947,9 +947,8 @@ struct iwl_rx_packet *pkt = tp_data->fw_pkt; struct iwl_cmd_header *wanted_hdr = (void *)&trig_data; - if (pkt && ((wanted_hdr->cmd == 0 && wanted_hdr->group_id == 0) || - (pkt->hdr.cmd == wanted_hdr->cmd && - pkt->hdr.group_id == wanted_hdr->group_id))) { + if (pkt && (pkt->hdr.cmd == wanted_hdr->cmd && + pkt->hdr.group_id == wanted_hdr->group_id)) { struct iwl_rx_packet *fw_pkt = kmemdup(pkt, sizeof(*pkt) + iwl_rx_packet_payload_len(pkt), @@ -1012,6 +1011,9 @@ enum iwl_fw_ini_buffer_location *ini_dest = &fwrt->trans->dbg.ini_dest; int ret, i; + if (*ini_dest != IWL_FW_INI_LOCATION_INVALID) + return; + IWL_DEBUG_FW(fwrt, "WRT: Generating active triggers list, domain 0x%x\n", fwrt->trans->dbg.domains_bitmap); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/iwl-prph.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/iwl-prph.h @@ -355,6 +355,12 @@ #define RADIO_RSP_ADDR_POS (6) #define RADIO_RSP_RD_CMD (3) +/* LTR control (Qu only) */ +#define HPM_MAC_LTR_CSR 0xa0348c +#define HPM_MAC_LRT_ENABLE_ALL 0xf +/* also uses CSR_LTR_* for values */ +#define HPM_UMAC_LTR 0xa03480 + /* FW monitor */ #define MON_BUFF_SAMPLE_CTL (0xa03c00) #define MON_BUFF_BASE_ADDR (0xa03c1c) --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -316,6 +316,7 @@ #define IWL_MGMT_TID 15 #define IWL_FRAME_LIMIT 64 #define IWL_MAX_RX_HW_QUEUES 16 +#define IWL_9000_MAX_RX_HW_QUEUES 6 /** * enum iwl_wowlan_status - WoWLAN image/device status --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c @@ -514,7 +514,10 @@ const size_t bufsz = sizeof(buf); int pos = 0; + mutex_lock(&mvm->mutex); iwl_mvm_get_sync_time(mvm, &curr_gp2, &curr_os); + mutex_unlock(&mvm->mutex); + do_div(curr_os, NSEC_PER_USEC); diff = curr_os - curr_gp2; pos += scnprintf(buf + pos, bufsz - pos, "diff=%lld\n", diff); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/fw.c @@ -132,7 +132,14 @@ .dataflags[0] = IWL_HCMD_DFL_NOCOPY, }; - /* Do not configure default queue, it is configured via context info */ + /* + * The default queue is configured via context info, so if we + * have a single queue, there's nothing to do here. + */ + if (mvm->trans->num_rx_queues == 1) + return 0; + + /* skip the default queue */ num_queues = mvm->trans->num_rx_queues - 1; size = struct_size(cmd, data, num_queues); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -3049,7 +3049,7 @@ /* this would be a mac80211 bug ... but don't crash */ if (WARN_ON_ONCE(!mvmvif->phy_ctxt)) - return -EINVAL; + return test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status) ? 0 : -EINVAL; /* * If we are in a STA removal flow and in DQA mode: @@ -3096,6 +3096,9 @@ goto out_unlock; } + if (vif->type == NL80211_IFTYPE_STATION) + vif->bss_conf.he_support = sta->he_cap.has_he; + if (sta->tdls && (vif->p2p || iwl_mvm_tdls_sta_count(mvm, NULL) == @@ -3685,9 +3688,12 @@ tail->apply_time_max_delay = cpu_to_le32(delay); IWL_DEBUG_TE(mvm, - "ROC: Requesting to remain on channel %u for %ums (requested = %ums, max_delay = %ums, dtim_interval = %ums)\n", - channel->hw_value, req_dur, duration, delay, - dtim_interval); + "ROC: Requesting to remain on channel %u for %ums\n", + channel->hw_value, req_dur); + IWL_DEBUG_TE(mvm, + "\t(requested = %ums, max_delay = %ums, dtim_interval = %ums)\n", + duration, delay, dtim_interval); + /* Set the node address */ memcpy(tail->node_addr, vif->addr, ETH_ALEN); @@ -4198,6 +4204,9 @@ iwl_mvm_binding_remove_vif(mvm, vif); out: + if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_CHANNEL_SWITCH_CMD) && + switching_chanctx) + return; mvmvif->phy_ctxt = NULL; iwl_mvm_power_update_mac(mvm); } --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -311,6 +311,12 @@ iwl_mvm_mu_mimo_grp_notif, RX_HANDLER_SYNC), RX_HANDLER_GRP(DATA_PATH_GROUP, STA_PM_NOTIF, iwl_mvm_sta_pm_notif, RX_HANDLER_SYNC), + RX_HANDLER_GRP(MAC_CONF_GROUP, PROBE_RESPONSE_DATA_NOTIF, + iwl_mvm_probe_resp_data_notif, + RX_HANDLER_ASYNC_LOCKED), + RX_HANDLER_GRP(MAC_CONF_GROUP, CHANNEL_SWITCH_NOA_NOTIF, + iwl_mvm_channel_switch_noa_notif, + RX_HANDLER_SYNC), }; #undef RX_HANDLER #undef RX_HANDLER_GRP @@ -834,6 +840,10 @@ if (!mvm->scan_cmd) goto out_free; + /* invalidate ids to prevent accidental removal of sta_id 0 */ + mvm->aux_sta.sta_id = IWL_MVM_INVALID_STA; + mvm->snif_sta.sta_id = IWL_MVM_INVALID_STA; + /* Set EBS as successful as long as not stated otherwise by the FW. */ mvm->last_ebs_successful = true; @@ -1234,6 +1244,7 @@ reprobe = container_of(wk, struct iwl_mvm_reprobe, work); if (device_reprobe(reprobe->dev)) dev_err(reprobe->dev, "reprobe failed!\n"); + put_device(reprobe->dev); kfree(reprobe); module_put(THIS_MODULE); } @@ -1284,7 +1295,7 @@ module_put(THIS_MODULE); return; } - reprobe->dev = mvm->trans->dev; + reprobe->dev = get_device(mvm->trans->dev); INIT_WORK(&reprobe->work, iwl_mvm_reprobe_wk); schedule_work(&reprobe->work); } else if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/sta.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/sta.c @@ -196,6 +196,7 @@ mpdu_dens = sta->ht_cap.ampdu_density; } + if (sta->vht_cap.vht_supported) { agg_size = sta->vht_cap.cap & IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; @@ -205,6 +206,23 @@ agg_size = sta->ht_cap.ampdu_factor; } + /* D6.0 10.12.2 A-MPDU length limit rules + * A STA indicates the maximum length of the A-MPDU preEOF padding + * that it can receive in an HE PPDU in the Maximum A-MPDU Length + * Exponent field in its HT Capabilities, VHT Capabilities, + * and HE 6 GHz Band Capabilities elements (if present) and the + * Maximum AMPDU Length Exponent Extension field in its HE + * Capabilities element + */ + if (sta->he_cap.has_he) + agg_size += u8_get_bits(sta->he_cap.he_cap_elem.mac_cap_info[3], + IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK); + + /* Limit to max A-MPDU supported by FW */ + if (agg_size > (STA_FLG_MAX_AGG_SIZE_4M >> STA_FLG_MAX_AGG_SIZE_SHIFT)) + agg_size = (STA_FLG_MAX_AGG_SIZE_4M >> + STA_FLG_MAX_AGG_SIZE_SHIFT); + add_sta_cmd.station_flags |= cpu_to_le32(agg_size << STA_FLG_MAX_AGG_SIZE_SHIFT); add_sta_cmd.station_flags |= @@ -2083,6 +2101,9 @@ lockdep_assert_held(&mvm->mutex); + if (WARN_ON_ONCE(mvm->snif_sta.sta_id == IWL_MVM_INVALID_STA)) + return -EINVAL; + iwl_mvm_disable_txq(mvm, NULL, mvm->snif_queue, IWL_MAX_TID_COUNT, 0); ret = iwl_mvm_rm_sta_common(mvm, mvm->snif_sta.sta_id); if (ret) @@ -2097,6 +2118,9 @@ lockdep_assert_held(&mvm->mutex); + if (WARN_ON_ONCE(mvm->aux_sta.sta_id == IWL_MVM_INVALID_STA)) + return -EINVAL; + iwl_mvm_disable_txq(mvm, NULL, mvm->aux_queue, IWL_MAX_TID_COUNT, 0); ret = iwl_mvm_rm_sta_common(mvm, mvm->aux_sta.sta_id); if (ret) --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c @@ -638,11 +638,32 @@ } } +static void iwl_mvm_cancel_session_protection(struct iwl_mvm *mvm, + struct iwl_mvm_vif *mvmvif) +{ + struct iwl_mvm_session_prot_cmd cmd = { + .id_and_color = + cpu_to_le32(FW_CMD_ID_AND_COLOR(mvmvif->id, + mvmvif->color)), + .action = cpu_to_le32(FW_CTXT_ACTION_REMOVE), + .conf_id = cpu_to_le32(mvmvif->time_event_data.id), + }; + int ret; + + ret = iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(SESSION_PROTECTION_CMD, + MAC_CONF_GROUP, 0), + 0, sizeof(cmd), &cmd); + if (ret) + IWL_ERR(mvm, + "Couldn't send the SESSION_PROTECTION_CMD: %d\n", ret); +} + static bool __iwl_mvm_remove_time_event(struct iwl_mvm *mvm, struct iwl_mvm_time_event_data *te_data, u32 *uid) { u32 id; + struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(te_data->vif); /* * It is possible that by the time we got to this point the time @@ -660,14 +681,29 @@ iwl_mvm_te_clear_data(mvm, te_data); spin_unlock_bh(&mvm->time_event_lock); - /* - * It is possible that by the time we try to remove it, the time event - * has already ended and removed. In such a case there is no need to - * send a removal command. + /* When session protection is supported, the te_data->id field + * is reused to save session protection's configuration. */ - if (id == TE_MAX) { - IWL_DEBUG_TE(mvm, "TE 0x%x has already ended\n", *uid); + if (fw_has_capa(&mvm->fw->ucode_capa, + IWL_UCODE_TLV_CAPA_SESSION_PROT_CMD)) { + if (mvmvif && id < SESSION_PROTECT_CONF_MAX_ID) { + /* Session protection is still ongoing. Cancel it */ + iwl_mvm_cancel_session_protection(mvm, mvmvif); + if (te_data->vif->type == NL80211_IFTYPE_P2P_DEVICE) { + set_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status); + iwl_mvm_roc_finished(mvm); + } + } return false; + } else { + /* It is possible that by the time we try to remove it, the + * time event has already ended and removed. In such a case + * there is no need to send a removal command. + */ + if (id == TE_MAX) { + IWL_DEBUG_TE(mvm, "TE 0x%x has already ended\n", *uid); + return false; + } } return true; @@ -768,6 +804,7 @@ struct iwl_rx_packet *pkt = rxb_addr(rxb); struct iwl_mvm_session_prot_notif *notif = (void *)pkt->data; struct ieee80211_vif *vif; + struct iwl_mvm_vif *mvmvif; rcu_read_lock(); vif = iwl_mvm_rcu_dereference_vif_id(mvm, le32_to_cpu(notif->mac_id), @@ -776,9 +813,10 @@ if (!vif) goto out_unlock; + mvmvif = iwl_mvm_vif_from_mac80211(vif); + /* The vif is not a P2P_DEVICE, maintain its time_event_data */ if (vif->type != NL80211_IFTYPE_P2P_DEVICE) { - struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif); struct iwl_mvm_time_event_data *te_data = &mvmvif->time_event_data; @@ -813,10 +851,14 @@ if (!le32_to_cpu(notif->status) || !le32_to_cpu(notif->start)) { /* End TE, notify mac80211 */ + mvmvif->time_event_data.id = SESSION_PROTECT_CONF_MAX_ID; ieee80211_remain_on_channel_expired(mvm->hw); set_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status); iwl_mvm_roc_finished(mvm); } else if (le32_to_cpu(notif->start)) { + if (WARN_ON(mvmvif->time_event_data.id != + le32_to_cpu(notif->conf_id))) + goto out_unlock; set_bit(IWL_MVM_STATUS_ROC_RUNNING, &mvm->status); ieee80211_ready_on_channel(mvm->hw); /* Start TE */ } @@ -842,20 +884,24 @@ lockdep_assert_held(&mvm->mutex); + /* The time_event_data.id field is reused to save session + * protection's configuration. + */ switch (type) { case IEEE80211_ROC_TYPE_NORMAL: - cmd.conf_id = - cpu_to_le32(SESSION_PROTECT_CONF_P2P_DEVICE_DISCOV); + mvmvif->time_event_data.id = + SESSION_PROTECT_CONF_P2P_DEVICE_DISCOV; break; case IEEE80211_ROC_TYPE_MGMT_TX: - cmd.conf_id = - cpu_to_le32(SESSION_PROTECT_CONF_P2P_GO_NEGOTIATION); + mvmvif->time_event_data.id = + SESSION_PROTECT_CONF_P2P_GO_NEGOTIATION; break; default: WARN_ONCE(1, "Got an invalid ROC type\n"); return -EINVAL; } + cmd.conf_id = cpu_to_le32(mvmvif->time_event_data.id); return iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(SESSION_PROTECTION_CMD, MAC_CONF_GROUP, 0), 0, sizeof(cmd), &cmd); @@ -957,25 +1003,6 @@ __iwl_mvm_remove_time_event(mvm, te_data, &uid); } -static void iwl_mvm_cancel_session_protection(struct iwl_mvm *mvm, - struct iwl_mvm_vif *mvmvif) -{ - struct iwl_mvm_session_prot_cmd cmd = { - .id_and_color = - cpu_to_le32(FW_CMD_ID_AND_COLOR(mvmvif->id, - mvmvif->color)), - .action = cpu_to_le32(FW_CTXT_ACTION_REMOVE), - }; - int ret; - - ret = iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(SESSION_PROTECTION_CMD, - MAC_CONF_GROUP, 0), - 0, sizeof(cmd), &cmd); - if (ret) - IWL_ERR(mvm, - "Couldn't send the SESSION_PROTECTION_CMD: %d\n", ret); -} - void iwl_mvm_stop_roc(struct iwl_mvm *mvm, struct ieee80211_vif *vif) { struct iwl_mvm_vif *mvmvif; @@ -985,10 +1012,13 @@ IWL_UCODE_TLV_CAPA_SESSION_PROT_CMD)) { mvmvif = iwl_mvm_vif_from_mac80211(vif); - iwl_mvm_cancel_session_protection(mvm, mvmvif); - - if (vif->type == NL80211_IFTYPE_P2P_DEVICE) + if (vif->type == NL80211_IFTYPE_P2P_DEVICE) { + iwl_mvm_cancel_session_protection(mvm, mvmvif); set_bit(IWL_MVM_STATUS_NEED_FLUSH_P2P, &mvm->status); + } else { + iwl_mvm_remove_aux_roc_te(mvm, mvmvif, + &mvmvif->time_event_data); + } iwl_mvm_roc_finished(mvm); @@ -1101,10 +1131,15 @@ cpu_to_le32(FW_CMD_ID_AND_COLOR(mvmvif->id, mvmvif->color)), .action = cpu_to_le32(FW_CTXT_ACTION_ADD), - .conf_id = cpu_to_le32(SESSION_PROTECT_CONF_ASSOC), .duration_tu = cpu_to_le32(MSEC_TO_TU(duration)), }; + /* The time_event_data.id field is reused to save session + * protection's configuration. + */ + mvmvif->time_event_data.id = SESSION_PROTECT_CONF_ASSOC; + cmd.conf_id = cpu_to_le32(mvmvif->time_event_data.id); + lockdep_assert_held(&mvm->mutex); spin_lock_bh(&mvm->time_event_lock); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/mvm/tx.c @@ -837,6 +837,7 @@ next = skb_gso_segment(skb, netdev_flags); skb_shinfo(skb)->gso_size = mss; + skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; if (WARN_ON_ONCE(IS_ERR(next))) return -EINVAL; else if (next) @@ -859,6 +860,8 @@ if (tcp_payload_len > mss) { skb_shinfo(tmp)->gso_size = mss; + skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 : + SKB_GSO_TCPV6; } else { if (qos) { u8 *qc; --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c @@ -122,6 +122,15 @@ const struct fw_img *fw) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); + u32 ltr_val = CSR_LTR_LONG_VAL_AD_NO_SNOOP_REQ | + u32_encode_bits(CSR_LTR_LONG_VAL_AD_SCALE_USEC, + CSR_LTR_LONG_VAL_AD_NO_SNOOP_SCALE) | + u32_encode_bits(250, + CSR_LTR_LONG_VAL_AD_NO_SNOOP_VAL) | + CSR_LTR_LONG_VAL_AD_SNOOP_REQ | + u32_encode_bits(CSR_LTR_LONG_VAL_AD_SCALE_USEC, + CSR_LTR_LONG_VAL_AD_SNOOP_SCALE) | + u32_encode_bits(250, CSR_LTR_LONG_VAL_AD_SNOOP_VAL); struct iwl_context_info_gen3 *ctxt_info_gen3; struct iwl_prph_scratch *prph_scratch; struct iwl_prph_scratch_ctrl_cfg *prph_sc_ctrl; @@ -236,8 +245,10 @@ /* Allocate IML */ iml_img = dma_alloc_coherent(trans->dev, trans->iml_len, &trans_pcie->iml_dma_addr, GFP_KERNEL); - if (!iml_img) - return -ENOMEM; + if (!iml_img) { + ret = -ENOMEM; + goto err_free_ctxt_info; + } memcpy(iml_img, trans->iml, trans->iml_len); @@ -252,6 +263,22 @@ iwl_set_bit(trans, CSR_CTXT_INFO_BOOT_CTRL, CSR_AUTO_FUNC_BOOT_ENA); + + /* + * To workaround hardware latency issues during the boot process, + * initialize the LTR to ~250 usec (see ltr_val above). + * The firmware initializes this again later (to a smaller value). + */ + if ((trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_AX210 || + trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_22000) && + !trans->trans_cfg->integrated) { + iwl_write32(trans, CSR_LTR_LONG_VAL_AD, ltr_val); + } else if (trans->trans_cfg->integrated && + trans->trans_cfg->device_family == IWL_DEVICE_FAMILY_22000) { + iwl_write_prph(trans, HPM_MAC_LTR_CSR, HPM_MAC_LRT_ENABLE_ALL); + iwl_write_prph(trans, HPM_UMAC_LTR, ltr_val); + } + if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) iwl_write_umac_prph(trans, UREG_CPU_INIT_RUN, 1); else @@ -259,6 +286,11 @@ return 0; +err_free_ctxt_info: + dma_free_coherent(trans->dev, sizeof(*trans_pcie->ctxt_info_gen3), + trans_pcie->ctxt_info_gen3, + trans_pcie->ctxt_info_dma_addr); + trans_pcie->ctxt_info_gen3 = NULL; err_free_prph_info: dma_free_coherent(trans->dev, sizeof(*prph_info), --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -536,6 +536,7 @@ {IWL_PCI_DEVICE(0x2725, 0x0090, iwlax211_2ax_cfg_so_gf_a0)}, {IWL_PCI_DEVICE(0x2725, 0x0020, iwlax210_2ax_cfg_ty_gf_a0)}, + {IWL_PCI_DEVICE(0x2725, 0x0024, iwlax210_2ax_cfg_ty_gf_a0)}, {IWL_PCI_DEVICE(0x2725, 0x0310, iwlax210_2ax_cfg_ty_gf_a0)}, {IWL_PCI_DEVICE(0x2725, 0x0510, iwlax210_2ax_cfg_ty_gf_a0)}, {IWL_PCI_DEVICE(0x2725, 0x0A10, iwlax210_2ax_cfg_ty_gf_a0)}, @@ -940,6 +941,11 @@ IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, iwl_qu_b0_hr1_b0, iwl_ax101_name), + _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, + IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, + IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, + IWL_CFG_ANY, IWL_CFG_ANY, + iwl_qu_b0_hr_b0, iwl_ax203_name), /* Qu C step */ _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, @@ -947,6 +953,11 @@ IWL_CFG_RF_TYPE_HR1, IWL_CFG_ANY, IWL_CFG_ANY, IWL_CFG_ANY, iwl_qu_c0_hr1_b0, iwl_ax101_name), + _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, + IWL_CFG_MAC_TYPE_QU, SILICON_C_STEP, + IWL_CFG_RF_TYPE_HR2, IWL_CFG_ANY, + IWL_CFG_ANY, IWL_CFG_ANY, + iwl_qu_c0_hr_b0, iwl_ax203_name), /* QuZ */ _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY, --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -1607,11 +1607,15 @@ struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); int max_irqs, num_irqs, i, ret; u16 pci_cmd; + u32 max_rx_queues = IWL_MAX_RX_HW_QUEUES; if (!cfg_trans->mq_rx_supported) goto enable_msi; - max_irqs = min_t(u32, num_online_cpus() + 2, IWL_MAX_RX_HW_QUEUES); + if (cfg_trans->device_family <= IWL_DEVICE_FAMILY_9000) + max_rx_queues = IWL_9000_MAX_RX_HW_QUEUES; + + max_irqs = min_t(u32, num_online_cpus() + 2, max_rx_queues); for (i = 0; i < max_irqs; i++) trans_pcie->msix_entries[i].entry = i; @@ -2025,7 +2029,7 @@ int ret; struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); - spin_lock_irqsave(&trans_pcie->reg_lock, *flags); + spin_lock_bh(&trans_pcie->reg_lock); if (trans_pcie->cmd_hold_nic_awake) goto out; @@ -2110,7 +2114,7 @@ } err: - spin_unlock_irqrestore(&trans_pcie->reg_lock, *flags); + spin_unlock_bh(&trans_pcie->reg_lock); return false; } @@ -2148,25 +2152,45 @@ * scheduled on different CPUs (after we drop reg_lock). */ out: - spin_unlock_irqrestore(&trans_pcie->reg_lock, *flags); + spin_unlock_bh(&trans_pcie->reg_lock); } static int iwl_trans_pcie_read_mem(struct iwl_trans *trans, u32 addr, void *buf, int dwords) { unsigned long flags; - int offs, ret = 0; + int offs = 0; u32 *vals = buf; - if (iwl_trans_grab_nic_access(trans, &flags)) { - iwl_write32(trans, HBUS_TARG_MEM_RADDR, addr); - for (offs = 0; offs < dwords; offs++) - vals[offs] = iwl_read32(trans, HBUS_TARG_MEM_RDAT); - iwl_trans_release_nic_access(trans, &flags); - } else { - ret = -EBUSY; + while (offs < dwords) { + /* limit the time we spin here under lock to 1/2s */ + unsigned long end = jiffies + HZ / 2; + bool resched = false; + + if (iwl_trans_grab_nic_access(trans, &flags)) { + iwl_write32(trans, HBUS_TARG_MEM_RADDR, + addr + 4 * offs); + + while (offs < dwords) { + vals[offs] = iwl_read32(trans, + HBUS_TARG_MEM_RDAT); + offs++; + + if (time_after(jiffies, end)) { + resched = true; + break; + } + } + iwl_trans_release_nic_access(trans, &flags); + + if (resched) + cond_resched(); + } else { + return -EBUSY; + } } - return ret; + + return 0; } static int iwl_trans_pcie_write_mem(struct iwl_trans *trans, u32 addr, @@ -2412,11 +2436,10 @@ u32 mask, u32 value) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); - unsigned long flags; - spin_lock_irqsave(&trans_pcie->reg_lock, flags); + spin_lock_bh(&trans_pcie->reg_lock); __iwl_trans_pcie_set_bits_mask(trans, reg, mask, value); - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); + spin_unlock_bh(&trans_pcie->reg_lock); } static const char *get_csr_string(int cmd) --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c @@ -822,7 +822,6 @@ struct iwl_txq *txq = trans->txqs.txq[trans->txqs.cmd.q_id]; struct iwl_device_cmd *out_cmd; struct iwl_cmd_meta *out_meta; - unsigned long flags; void *dup_buf = NULL; dma_addr_t phys_addr; int i, cmd_pos, idx; @@ -1035,11 +1034,11 @@ if (txq->read_ptr == txq->write_ptr && txq->wd_timeout) mod_timer(&txq->stuck_timer, jiffies + txq->wd_timeout); - spin_lock_irqsave(&trans_pcie->reg_lock, flags); + spin_lock(&trans_pcie->reg_lock); /* Increment and update queue's write index */ txq->write_ptr = iwl_queue_inc_wrap(trans, txq->write_ptr); iwl_pcie_gen2_txq_inc_wr_ptr(trans, txq); - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); + spin_unlock(&trans_pcie->reg_lock); out: spin_unlock_bh(&txq->lock); --- linux-5.8.0.orig/drivers/net/wireless/intel/iwlwifi/pcie/tx.c +++ linux-5.8.0/drivers/net/wireless/intel/iwlwifi/pcie/tx.c @@ -660,6 +660,11 @@ struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_txq *txq = trans->txqs.txq[txq_id]; + if (!txq) { + IWL_ERR(trans, "Trying to free a queue that wasn't allocated?\n"); + return; + } + spin_lock_bh(&txq->lock); while (txq->write_ptr != txq->read_ptr) { IWL_DEBUG_TX_REPLY(trans, "Q %d Free %d\n", @@ -677,12 +682,10 @@ txq->read_ptr = iwl_queue_inc_wrap(trans, txq->read_ptr); if (txq->read_ptr == txq->write_ptr) { - unsigned long flags; - - spin_lock_irqsave(&trans_pcie->reg_lock, flags); + spin_lock(&trans_pcie->reg_lock); if (txq_id == trans->txqs.cmd.q_id) iwl_pcie_clear_cmd_in_flight(trans); - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); + spin_unlock(&trans_pcie->reg_lock); } } @@ -1289,7 +1292,6 @@ { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_txq *txq = trans->txqs.txq[txq_id]; - unsigned long flags; int nfreed = 0; u16 r; @@ -1320,9 +1322,10 @@ } if (txq->read_ptr == txq->write_ptr) { - spin_lock_irqsave(&trans_pcie->reg_lock, flags); + /* BHs are also disabled due to txq->lock */ + spin_lock(&trans_pcie->reg_lock); iwl_pcie_clear_cmd_in_flight(trans); - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); + spin_unlock(&trans_pcie->reg_lock); } iwl_pcie_txq_progress(txq); @@ -1531,7 +1534,6 @@ struct iwl_txq *txq = trans->txqs.txq[trans->txqs.cmd.q_id]; struct iwl_device_cmd *out_cmd; struct iwl_cmd_meta *out_meta; - unsigned long flags; void *dup_buf = NULL; dma_addr_t phys_addr; int idx; @@ -1774,20 +1776,19 @@ if (txq->read_ptr == txq->write_ptr && txq->wd_timeout) mod_timer(&txq->stuck_timer, jiffies + txq->wd_timeout); - spin_lock_irqsave(&trans_pcie->reg_lock, flags); + spin_lock(&trans_pcie->reg_lock); ret = iwl_pcie_set_cmd_in_flight(trans, cmd); if (ret < 0) { idx = ret; - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); - goto out; + goto unlock_reg; } /* Increment and update queue's write index */ txq->write_ptr = iwl_queue_inc_wrap(trans, txq->write_ptr); iwl_pcie_txq_inc_wr_ptr(trans, txq); - spin_unlock_irqrestore(&trans_pcie->reg_lock, flags); - + unlock_reg: + spin_unlock(&trans_pcie->reg_lock); out: spin_unlock_bh(&txq->lock); free_dup_buf: --- linux-5.8.0.orig/drivers/net/wireless/intersil/orinoco/orinoco_usb.c +++ linux-5.8.0/drivers/net/wireless/intersil/orinoco/orinoco_usb.c @@ -1223,13 +1223,6 @@ if (skb->len < ETH_HLEN) goto drop; - ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_TX, 0); - if (!ctx) - goto busy; - - memset(ctx->buf, 0, BULK_BUF_SIZE); - buf = ctx->buf->data; - tx_control = 0; err = orinoco_process_xmit_skb(skb, dev, priv, &tx_control, @@ -1237,6 +1230,13 @@ if (err) goto drop; + ctx = ezusb_alloc_ctx(upriv, EZUSB_RID_TX, 0); + if (!ctx) + goto drop; + + memset(ctx->buf, 0, BULK_BUF_SIZE); + buf = ctx->buf->data; + { __le16 *tx_cntl = (__le16 *)buf; *tx_cntl = cpu_to_le16(tx_control); --- linux-5.8.0.orig/drivers/net/wireless/intersil/p54/p54pci.c +++ linux-5.8.0/drivers/net/wireless/intersil/p54/p54pci.c @@ -329,10 +329,12 @@ struct p54p_desc *desc; dma_addr_t mapping; u32 idx, i; + __le32 device_addr; spin_lock_irqsave(&priv->lock, flags); idx = le32_to_cpu(ring_control->host_idx[1]); i = idx % ARRAY_SIZE(ring_control->tx_data); + device_addr = ((struct p54_hdr *)skb->data)->req_id; mapping = pci_map_single(priv->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); @@ -346,7 +348,7 @@ desc = &ring_control->tx_data[i]; desc->host_addr = cpu_to_le32(mapping); - desc->device_addr = ((struct p54_hdr *)skb->data)->req_id; + desc->device_addr = device_addr; desc->len = cpu_to_le16(skb->len); desc->flags = 0; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/fw.h +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/fw.h @@ -217,6 +217,7 @@ #define TLV_TYPE_CHANNEL_STATS (PROPRIETARY_TLV_BASE_ID + 198) #define TLV_BTCOEX_WL_AGGR_WINSIZE (PROPRIETARY_TLV_BASE_ID + 202) #define TLV_BTCOEX_WL_SCANTIME (PROPRIETARY_TLV_BASE_ID + 203) +#define TLV_TYPE_LED_CONTROL (PROPRIETARY_TLV_BASE_ID + 205) #define TLV_TYPE_BSS_MODE (PROPRIETARY_TLV_BASE_ID + 206) #define TLV_TYPE_RANDOM_MAC (PROPRIETARY_TLV_BASE_ID + 236) #define TLV_TYPE_CHAN_ATTR_CFG (PROPRIETARY_TLV_BASE_ID + 237) @@ -364,6 +365,7 @@ #define HostCmd_CMD_802_11_AD_HOC_JOIN 0x002c #define HostCmd_CMD_802_11_AD_HOC_STOP 0x0040 #define HostCmd_CMD_802_11_MAC_ADDRESS 0x004D +#define HostCmd_CMD_802_11_LED_CONTROL 0X004E #define HostCmd_CMD_802_11D_DOMAIN_INFO 0x005b #define HostCmd_CMD_802_11_KEY_MATERIAL 0x005e #define HostCmd_CMD_802_11_BG_SCAN_CONFIG 0x006b @@ -954,7 +956,7 @@ struct mwifiex_aes_param { u8 pn[WPA_PN_SIZE]; __le16 key_len; - u8 key[WLAN_KEY_LEN_CCMP]; + u8 key[WLAN_KEY_LEN_CCMP_256]; } __packed; struct mwifiex_wapi_param { @@ -1196,6 +1198,16 @@ u8 oper_mode; } __packed; +struct mwifiex_led_param { + __le16 mode; + __le16 on; +} __packed; + +struct mwifiex_ie_types_led_param { + struct mwifiex_ie_types_header header; + struct mwifiex_led_param led_cfg; +} __packed; + struct host_cmd_ds_802_11_ad_hoc_start { u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 bss_mode; @@ -1319,6 +1331,11 @@ } params; } __packed; +struct host_cmd_ds_802_11_led_control { + __le16 action; + __le16 num_led; +} __packed; + enum SNMP_MIB_INDEX { OP_RATE_SET_I = 1, DTIM_PERIOD_I = 3, @@ -2373,6 +2390,7 @@ struct host_cmd_sdio_sp_rx_aggr_cfg sdio_rx_aggr_cfg; struct host_cmd_ds_multi_chan_policy mc_policy; struct host_cmd_ds_robust_coex coex; + struct host_cmd_ds_802_11_led_control led_cfg; struct host_cmd_ds_wakeup_reason hs_wakeup_reason; struct host_cmd_ds_gtk_rekey_params rekey; struct host_cmd_ds_chan_region_cfg reg_cfg; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/join.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/join.c @@ -877,6 +877,8 @@ memset(adhoc_start->ssid, 0, IEEE80211_MAX_SSID_LEN); + if (req_ssid->ssid_len > IEEE80211_MAX_SSID_LEN) + req_ssid->ssid_len = IEEE80211_MAX_SSID_LEN; memcpy(adhoc_start->ssid, req_ssid->ssid, req_ssid->ssid_len); mwifiex_dbg(adapter, INFO, "info: ADHOC_S_CMD: SSID = %s\n", --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/main.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/main.c @@ -728,8 +728,10 @@ static int mwifiex_open(struct net_device *dev) { - netif_carrier_off(dev); + struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); + netif_carrier_off(dev); + mwifiex_set_led(priv->adapter, MWIFIEX_LED_ON); return 0; } @@ -760,6 +762,7 @@ cfg80211_sched_scan_stopped(priv->wdev.wiphy, 0); } + mwifiex_set_led(priv->adapter, MWIFIEX_LED_OFF); return 0; } @@ -1469,6 +1472,8 @@ priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); mwifiex_deauthenticate(priv, NULL); + mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); + mwifiex_uninit_sw(adapter); adapter->is_up = false; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/main.h +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/main.h @@ -132,6 +132,10 @@ #define PKT_TYPE_MGMT 0xE5 +#define MWIFIEX_LED_ON 1 +#define MWIFIEX_LED_OFF 0 +#define MWIFIEX_LED_MAX 3 + /* * Do not check for data_received for USB, as data_received * is handled in mwifiex_usb_recv for USB @@ -700,6 +704,7 @@ struct mwifiex_user_scan_chan hidden_chan[MWIFIEX_USER_SCAN_CHAN_MAX]; u8 assoc_resp_ht_param; bool ht_param_present; + bool is_edge_gateway; }; @@ -1495,6 +1500,7 @@ struct cmd_ctrl_node *cmd_queued); int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, struct cfg80211_ssid *req_ssid); +int mwifiex_set_led(struct mwifiex_adapter *adapter, int on); int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type); int mwifiex_enable_hs(struct mwifiex_adapter *adapter); int mwifiex_disable_auto_ds(struct mwifiex_private *priv); --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/pcie.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -229,6 +229,8 @@ const struct pci_device_id *ent) { struct pcie_service_card *card; + struct mwifiex_private *priv; + struct pci_dev *pdev_host; int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", @@ -267,6 +269,14 @@ return -1; } + priv = mwifiex_get_priv(card->adapter, MWIFIEX_BSS_ROLE_STA); + pdev_host = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0720, NULL); + if (!pdev_host) + pdev_host = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID, 0x1028, 0x0733, NULL); + if (pdev_host) { + priv->is_edge_gateway = true; + pci_dev_put(pdev_host); + } return 0; } @@ -377,6 +387,8 @@ clear_bit(MWIFIEX_IFACE_WORK_DEVICE_DUMP, &card->work_flags); clear_bit(MWIFIEX_IFACE_WORK_CARD_RESET, &card->work_flags); mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); + + card->pci_reset_ongoing = true; } /* @@ -405,6 +417,8 @@ dev_err(&pdev->dev, "reinit failed: %d\n", ret); else mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); + + card->pci_reset_ongoing = false; } static const struct pci_error_handlers mwifiex_pcie_err_handler = { @@ -2995,7 +3009,19 @@ int ret; u32 fw_status; - cancel_work_sync(&card->work); + /* Perform the cancel_work_sync() only when we're not resetting + * the card. It's because that function never returns if we're + * in reset path. If we're here when resetting the card, it means + * that we failed to reset the card (reset failure path). + */ + if (!card->pci_reset_ongoing) { + mwifiex_dbg(adapter, MSG, "performing cancel_work_sync()...\n"); + cancel_work_sync(&card->work); + mwifiex_dbg(adapter, MSG, "cancel_work_sync() done\n"); + } else { + mwifiex_dbg(adapter, MSG, + "skipped cancel_work_sync() because we're in card reset failure path\n"); + } ret = mwifiex_read_reg(adapter, reg->fw_status, &fw_status); if (fw_status == FIRMWARE_READY_PCIE) { --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/pcie.h +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/pcie.h @@ -391,6 +391,8 @@ struct mwifiex_msix_context share_irq_ctx; struct work_struct work; unsigned long work_flags; + + bool pci_reset_ongoing; }; static inline int --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/scan.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/scan.c @@ -1889,7 +1889,7 @@ chan, CFG80211_BSS_FTYPE_UNKNOWN, bssid, timestamp, cap_info_bitmap, beacon_period, - ie_buf, ie_len, rssi, GFP_KERNEL); + ie_buf, ie_len, rssi, GFP_ATOMIC); if (bss) { bss_priv = (struct mwifiex_bss_priv *)bss->priv; bss_priv->band = band; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/sdio.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/sdio.c @@ -1976,6 +1976,8 @@ kfree(card->mpa_rx.buf); card->mpa_tx.buf_size = 0; card->mpa_rx.buf_size = 0; + card->mpa_tx.buf = NULL; + card->mpa_rx.buf = NULL; } return ret; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/sdio.h +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/sdio.h @@ -36,9 +36,9 @@ #define SD8897_DEFAULT_FW_NAME "mrvl/sd8897_uapsta.bin" #define SD8887_DEFAULT_FW_NAME "mrvl/sd8887_uapsta.bin" #define SD8801_DEFAULT_FW_NAME "mrvl/sd8801_uapsta.bin" -#define SD8977_DEFAULT_FW_NAME "mrvl/sd8977_uapsta.bin" +#define SD8977_DEFAULT_FW_NAME "mrvl/sdsd8977_combo_v2.bin" #define SD8987_DEFAULT_FW_NAME "mrvl/sd8987_uapsta.bin" -#define SD8997_DEFAULT_FW_NAME "mrvl/sd8997_uapsta.bin" +#define SD8997_DEFAULT_FW_NAME "mrvl/sdsd8997_combo_v4.bin" #define BLOCK_MODE 1 #define BYTE_MODE 0 --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -424,6 +424,31 @@ return 0; } +static int mwifiex_cmd_802_11_led_cfg(struct mwifiex_private *priv, + struct host_cmd_ds_command *cmd, + u16 cmd_action, + struct mwifiex_led_param *ledcfg_param) +{ + struct host_cmd_ds_802_11_led_control *led_cfg = &cmd->params.led_cfg; + struct mwifiex_ie_types_led_param *led_tlv; + u8 *pos; + + cmd->command = cpu_to_le16(HostCmd_CMD_802_11_LED_CONTROL); + cmd->size = cpu_to_le16(S_DS_GEN); + le16_add_cpu(&cmd->size, sizeof(struct host_cmd_ds_802_11_led_control)); + + led_cfg->action = cpu_to_le16(cmd_action); + led_cfg->num_led = cpu_to_le16(MWIFIEX_LED_MAX); + + pos = (u8 *)led_cfg + sizeof(struct host_cmd_ds_802_11_led_control); + led_tlv = (void *)pos; + led_tlv->header.type = cpu_to_le16(TLV_TYPE_LED_CONTROL); + led_tlv->header.len = cpu_to_le16(sizeof(struct mwifiex_led_param)); + memcpy(&led_tlv->led_cfg, ledcfg_param, sizeof(struct mwifiex_led_param)); + le16_add_cpu(&cmd->size, sizeof(struct mwifiex_ie_types_led_param)); + return 0; +} + /* * This function prepares command to set/get MAC address. * @@ -1992,6 +2017,10 @@ ret = mwifiex_cmd_802_11_hs_cfg(priv, cmd_ptr, cmd_action, (struct mwifiex_hs_config_param *) data_buf); break; + case HostCmd_CMD_802_11_LED_CONTROL: + ret = mwifiex_cmd_802_11_led_cfg(priv, cmd_ptr, cmd_action, + data_buf); + break; case HostCmd_CMD_802_11_SCAN: ret = mwifiex_cmd_802_11_scan(cmd_ptr, data_buf); break; --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c @@ -580,6 +580,11 @@ { struct host_cmd_ds_802_11_key_material *key = &resp->params.key_material; + int len; + + len = le16_to_cpu(key->key_param_set.key_len); + if (len > sizeof(key->key_param_set.key)) + return -EINVAL; if (le16_to_cpu(key->action) == HostCmd_ACT_GEN_SET) { if ((le16_to_cpu(key->key_param_set.key_info) & KEY_MCAST)) { @@ -593,9 +598,8 @@ memset(priv->aes_key.key_param_set.key, 0, sizeof(key->key_param_set.key)); - priv->aes_key.key_param_set.key_len = key->key_param_set.key_len; - memcpy(priv->aes_key.key_param_set.key, key->key_param_set.key, - le16_to_cpu(priv->aes_key.key_param_set.key_len)); + priv->aes_key.key_param_set.key_len = cpu_to_le16(len); + memcpy(priv->aes_key.key_param_set.key, key->key_param_set.key, len); return 0; } @@ -610,9 +614,14 @@ struct host_cmd_ds_command *resp) { struct host_cmd_ds_802_11_key_material_v2 *key_v2; - __le16 len; + int len; key_v2 = &resp->params.key_material_v2; + + len = le16_to_cpu(key_v2->key_param_set.key_params.aes.key_len); + if (len > sizeof(key_v2->key_param_set.key_params.aes.key)) + return -EINVAL; + if (le16_to_cpu(key_v2->action) == HostCmd_ACT_GEN_SET) { if ((le16_to_cpu(key_v2->key_param_set.key_info) & KEY_MCAST)) { mwifiex_dbg(priv->adapter, INFO, "info: key: GTK is set\n"); @@ -626,12 +635,11 @@ return 0; memset(priv->aes_key_v2.key_param_set.key_params.aes.key, 0, - WLAN_KEY_LEN_CCMP); + sizeof(key_v2->key_param_set.key_params.aes.key)); priv->aes_key_v2.key_param_set.key_params.aes.key_len = - key_v2->key_param_set.key_params.aes.key_len; - len = priv->aes_key_v2.key_param_set.key_params.aes.key_len; + cpu_to_le16(len); memcpy(priv->aes_key_v2.key_param_set.key_params.aes.key, - key_v2->key_param_set.key_params.aes.key, le16_to_cpu(len)); + key_v2->key_param_set.key_params.aes.key, len); return 0; } @@ -1400,6 +1408,8 @@ case HostCmd_CMD_ROBUST_COEX: ret = mwifiex_ret_robust_coex(priv, resp, data_buf); break; + case HostCmd_CMD_802_11_LED_CONTROL: + break; case HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG: break; case HostCmd_CMD_CHAN_REGION_CFG: --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c @@ -570,6 +570,24 @@ } EXPORT_SYMBOL_GPL(mwifiex_enable_hs); +int mwifiex_set_led(struct mwifiex_adapter *adapter, int on) +{ + struct mwifiex_private *priv; + struct mwifiex_led_param ledcfg; + + priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA); + if (!priv->is_edge_gateway) + return -ENODEV; + + memset(&ledcfg, 0, sizeof(struct mwifiex_led_param)); + ledcfg.on = cpu_to_le16(on); + + return mwifiex_send_cmd(priv, + HostCmd_CMD_802_11_LED_CONTROL, + HostCmd_ACT_GEN_SET, 0, + &ledcfg, true); +} + /* * IOCTL request handler to get BSS information. * --- linux-5.8.0.orig/drivers/net/wireless/marvell/mwifiex/usb.c +++ linux-5.8.0/drivers/net/wireless/marvell/mwifiex/usb.c @@ -1353,7 +1353,8 @@ skb_dequeue(&port->tx_aggr.aggr_list))) mwifiex_write_data_complete(adapter, skb_tmp, 0, -1); - del_timer_sync(&port->tx_aggr.timer_cnxt.hold_timer); + if (port->tx_aggr.timer_cnxt.hold_timer.function) + del_timer_sync(&port->tx_aggr.timer_cnxt.hold_timer); port->tx_aggr.timer_cnxt.is_hold_timer_set = false; port->tx_aggr.timer_cnxt.hold_tmo_msecs = 0; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/dma.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/dma.c @@ -306,7 +306,6 @@ }; struct ieee80211_hw *hw; int len, n = 0, ret = -ENOMEM; - struct mt76_queue_entry e; struct mt76_txwi_cache *t; struct sk_buff *iter; dma_addr_t addr; @@ -348,6 +347,11 @@ } tx_info.nbuf = n; + if (q->queued + (tx_info.nbuf + 1) / 2 >= q->ndesc - 1) { + ret = -ENOMEM; + goto unmap; + } + dma_sync_single_for_cpu(dev->dev, t->dma_addr, dev->drv->txwi_size, DMA_TO_DEVICE); ret = dev->drv->tx_prepare_skb(dev, txwi, qid, wcid, sta, &tx_info); @@ -356,11 +360,6 @@ if (ret < 0) goto unmap; - if (q->queued + (tx_info.nbuf + 1) / 2 >= q->ndesc - 1) { - ret = -ENOMEM; - goto unmap; - } - return mt76_dma_add_buf(dev, q, tx_info.buf, tx_info.nbuf, tx_info.info, tx_info.skb, t); @@ -370,9 +369,7 @@ tx_info.buf[n].len, DMA_TO_DEVICE); free: - e.skb = tx_info.skb; - e.txwi = t; - dev->drv->tx_complete_skb(dev, qid, &e); + dev_kfree_skb(tx_info.skb); mt76_put_txwi(dev, t); return ret; } @@ -464,22 +461,27 @@ mt76_add_fragment(struct mt76_dev *dev, struct mt76_queue *q, void *data, int len, bool more) { - struct page *page = virt_to_head_page(data); - int offset = data - page_address(page); struct sk_buff *skb = q->rx_head; struct skb_shared_info *shinfo = skb_shinfo(skb); + int nr_frags = shinfo->nr_frags; - if (shinfo->nr_frags < ARRAY_SIZE(shinfo->frags)) { - offset += q->buf_offset; - skb_add_rx_frag(skb, shinfo->nr_frags, page, offset, len, - q->buf_size); + if (nr_frags < ARRAY_SIZE(shinfo->frags)) { + struct page *page = virt_to_head_page(data); + int offset = data - page_address(page) + q->buf_offset; + + skb_add_rx_frag(skb, nr_frags, page, offset, len, q->buf_size); + } else { + skb_free_frag(data); } if (more) return; q->rx_head = NULL; - dev->drv->rx_skb(dev, q - dev->q_rx, skb); + if (nr_frags < ARRAY_SIZE(shinfo->frags)) + dev->drv->rx_skb(dev, q - dev->q_rx, skb); + else + dev_kfree_skb(skb); } static int --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mac80211.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mac80211.c @@ -299,6 +299,7 @@ ieee80211_hw_set(hw, SUPPORT_FAST_XMIT); ieee80211_hw_set(hw, SUPPORTS_CLONED_SKBS); ieee80211_hw_set(hw, SUPPORTS_AMSDU_IN_AMPDU); + ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER); ieee80211_hw_set(hw, TX_AMSDU); ieee80211_hw_set(hw, TX_FRAG_LIST); ieee80211_hw_set(hw, MFP_CAPABLE); --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7603/pci.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7603/pci.c @@ -55,7 +55,8 @@ return 0; error: - ieee80211_free_hw(mt76_hw(dev)); + mt76_free_device(&dev->mt76); + return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/mac.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/mac.c @@ -980,15 +980,17 @@ if (cmd == SET_KEY) { if (cipher == MT_CIPHER_TKIP) { /* Rx/Tx MIC keys are swapped */ + memcpy(data, key, 16); memcpy(data + 16, key + 24, 8); memcpy(data + 24, key + 16, 8); + } else { + if (cipher != MT_CIPHER_BIP_CMAC_128 && wcid->cipher) + memmove(data + 16, data, 16); + if (cipher != MT_CIPHER_BIP_CMAC_128 || !wcid->cipher) + memcpy(data, key, keylen); + else if (cipher == MT_CIPHER_BIP_CMAC_128) + memcpy(data + 16, key, 16); } - if (cipher != MT_CIPHER_BIP_CMAC_128 && wcid->cipher) - memmove(data + 16, data, 16); - if (cipher != MT_CIPHER_BIP_CMAC_128 || !wcid->cipher) - memcpy(data, key, keylen); - else if (cipher == MT_CIPHER_BIP_CMAC_128) - memcpy(data + 16, key, 16); } else { if (wcid->cipher & ~BIT(cipher)) { if (cipher != MT_CIPHER_BIP_CMAC_128) @@ -1824,6 +1826,23 @@ } EXPORT_SYMBOL_GPL(mt7615_dma_reset); +void mt7615_tx_token_put(struct mt7615_dev *dev) +{ + struct mt76_txwi_cache *txwi; + int id; + + spin_lock_bh(&dev->token_lock); + idr_for_each_entry(&dev->token, txwi, id) { + mt7615_txp_skb_unmap(&dev->mt76, txwi); + if (txwi->skb) + dev_kfree_skb_any(txwi->skb); + mt76_put_txwi(&dev->mt76, txwi); + } + spin_unlock_bh(&dev->token_lock); + idr_destroy(&dev->token); +} +EXPORT_SYMBOL_GPL(mt7615_tx_token_put); + void mt7615_mac_reset_work(struct work_struct *work) { struct mt7615_phy *phy2; @@ -1867,6 +1886,9 @@ mt76_wr(dev, MT_MCU_INT_EVENT, MT_MCU_INT_EVENT_PDMA_STOPPED); + mt7615_tx_token_put(dev); + idr_init(&dev->token); + if (mt7615_wait_reset_state(dev, MT_MCU_CMD_RESET_DONE)) { mt7615_dma_reset(dev); --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c @@ -180,8 +180,10 @@ struct mt7615_mcu_rxd *rxd = (struct mt7615_mcu_rxd *)skb->data; int ret = 0; - if (seq != rxd->seq) - return -EAGAIN; + if (seq != rxd->seq) { + ret = -EAGAIN; + goto out; + } switch (cmd) { case MCU_CMD_PATCH_SEM_CONTROL: @@ -208,6 +210,7 @@ default: break; } +out: dev_kfree_skb(skb); return ret; @@ -1206,8 +1209,12 @@ skb = enable ? wskb : sskb; err = __mt76_mcu_skb_send_msg(&dev->mt76, skb, cmd, true); - if (err < 0) + if (err < 0) { + skb = enable ? sskb : wskb; + dev_kfree_skb(skb); + return err; + } cmd = enable ? MCU_EXT_CMD_STA_REC_UPDATE : MCU_EXT_CMD_WTBL_UPDATE; skb = enable ? sskb : wskb; @@ -2007,7 +2014,8 @@ sizeof(dev->mt76.hw->wiphy->fw_version), "%.10s-%.15s", hdr->fw_ver, hdr->build_date); - if (!strncmp(hdr->fw_ver, "2.0", sizeof(hdr->fw_ver))) { + if (!is_mt7615(&dev->mt76) && + !strncmp(hdr->fw_ver, "2.0", sizeof(hdr->fw_ver))) { dev->fw_ver = MT7615_FIRMWARE_V2; dev->mcu_ops = &sta_update_ops; } else { @@ -2574,11 +2582,11 @@ int mt7615_mcu_set_fcc5_lpn(struct mt7615_dev *dev, int val) { struct { - u16 tag; - u16 min_lpn; + __le16 tag; + __le16 min_lpn; } req = { - .tag = 0x1, - .min_lpn = val, + .tag = cpu_to_le16(0x1), + .min_lpn = cpu_to_le16(val), }; return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, @@ -2589,14 +2597,27 @@ const struct mt7615_dfs_pulse *pulse) { struct { - u16 tag; - struct mt7615_dfs_pulse pulse; + __le16 tag; + __le32 max_width; /* us */ + __le32 max_pwr; /* dbm */ + __le32 min_pwr; /* dbm */ + __le32 min_stgr_pri; /* us */ + __le32 max_stgr_pri; /* us */ + __le32 min_cr_pri; /* us */ + __le32 max_cr_pri; /* us */ } req = { - .tag = 0x3, + .tag = cpu_to_le16(0x3), +#define __req_field(field) .field = cpu_to_le32(pulse->field) + __req_field(max_width), + __req_field(max_pwr), + __req_field(min_pwr), + __req_field(min_stgr_pri), + __req_field(max_stgr_pri), + __req_field(min_cr_pri), + __req_field(max_cr_pri), +#undef __req_field }; - memcpy(&req.pulse, pulse, sizeof(*pulse)); - return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, &req, sizeof(req), true); } @@ -2605,16 +2626,45 @@ const struct mt7615_dfs_pattern *pattern) { struct { - u16 tag; - u16 radar_type; - struct mt7615_dfs_pattern pattern; + __le16 tag; + __le16 radar_type; + u8 enb; + u8 stgr; + u8 min_crpn; + u8 max_crpn; + u8 min_crpr; + u8 min_pw; + u8 max_pw; + __le32 min_pri; + __le32 max_pri; + u8 min_crbn; + u8 max_crbn; + u8 min_stgpn; + u8 max_stgpn; + u8 min_stgpr; } req = { - .tag = 0x2, - .radar_type = index, + .tag = cpu_to_le16(0x2), + .radar_type = cpu_to_le16(index), +#define __req_field_u8(field) .field = pattern->field +#define __req_field_u32(field) .field = cpu_to_le32(pattern->field) + __req_field_u8(enb), + __req_field_u8(stgr), + __req_field_u8(min_crpn), + __req_field_u8(max_crpn), + __req_field_u8(min_crpr), + __req_field_u8(min_pw), + __req_field_u8(max_pw), + __req_field_u32(min_pri), + __req_field_u32(max_pri), + __req_field_u8(min_crbn), + __req_field_u8(max_crbn), + __req_field_u8(min_stgpn), + __req_field_u8(max_stgpn), + __req_field_u8(min_stgpr), +#undef __req_field_u8 +#undef __req_field_u32 }; - memcpy(&req.pattern, pattern, sizeof(*pattern)); - return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, &req, sizeof(req), true); } @@ -2625,9 +2675,9 @@ u8 pulse_num; u8 rsv[3]; struct { - u32 start_time; - u16 width; - s16 power; + __le32 start_time; + __le16 width; + __le16 power; } pattern[32]; } req = { .pulse_num = dev->radar_pattern.n_pulses, @@ -2640,10 +2690,11 @@ /* TODO: add some noise here */ for (i = 0; i < dev->radar_pattern.n_pulses; i++) { - req.pattern[i].width = dev->radar_pattern.width; - req.pattern[i].power = dev->radar_pattern.power; - req.pattern[i].start_time = start_time + - i * dev->radar_pattern.period; + u32 ts = start_time + i * dev->radar_pattern.period; + + req.pattern[i].width = cpu_to_le16(dev->radar_pattern.width); + req.pattern[i].power = cpu_to_le16(dev->radar_pattern.power); + req.pattern[i].start_time = cpu_to_le32(ts); } return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_PATTERN, --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/mmio.c @@ -196,7 +196,8 @@ return 0; error: - ieee80211_free_hw(mt76_hw(dev)); + mt76_free_device(&dev->mt76); + return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h @@ -547,7 +547,7 @@ void mt7615_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid, struct mt76_queue_entry *e); - +void mt7615_tx_token_put(struct mt7615_dev *dev); void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, struct sk_buff *skb); void mt7615_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps); --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/pci_init.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/pci_init.c @@ -146,9 +146,7 @@ void mt7615_unregister_device(struct mt7615_dev *dev) { - struct mt76_txwi_cache *txwi; bool mcu_running; - int id; mcu_running = mt7615_wait_for_mcu_init(dev); @@ -158,15 +156,7 @@ mt7615_mcu_exit(dev); mt7615_dma_cleanup(dev); - spin_lock_bh(&dev->token_lock); - idr_for_each_entry(&dev->token, txwi, id) { - mt7615_txp_skb_unmap(&dev->mt76, txwi); - if (txwi->skb) - dev_kfree_skb_any(txwi->skb); - mt76_put_txwi(&dev->mt76, txwi); - } - spin_unlock_bh(&dev->token_lock); - idr_destroy(&dev->token); + mt7615_tx_token_put(dev); tasklet_disable(&dev->irq_tasklet); --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/usb.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/usb.c @@ -166,12 +166,16 @@ lockdep_assert_held(&dev->mt76.mutex); - if (!sta) - return -EINVAL; + if (!sta) { + err = -EINVAL; + goto out; + } cipher = mt7615_mac_get_cipher(key->cipher); - if (cipher == MT_CIPHER_NONE) - return -EOPNOTSUPP; + if (cipher == MT_CIPHER_NONE) { + err = -EOPNOTSUPP; + goto out; + } wcid = &wd->sta->wcid; @@ -179,19 +183,22 @@ err = mt7615_mac_wtbl_update_key(dev, wcid, key->key, key->keylen, cipher, key->cmd); if (err < 0) - return err; + goto out; err = mt7615_mac_wtbl_update_pk(dev, wcid, cipher, key->keyidx, key->cmd); if (err < 0) - return err; + goto out; if (key->cmd == SET_KEY) wcid->cipher |= BIT(cipher); else wcid->cipher &= ~BIT(cipher); - return 0; +out: + kfree(key->key); + + return err; } void mt7663u_wtbl_work(struct work_struct *work) --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7615/usb_mcu.c @@ -34,7 +34,6 @@ ret = mt76u_bulk_msg(&dev->mt76, skb->data, skb->len, NULL, 1000, ep); - dev_kfree_skb(skb); if (ret < 0) goto out; @@ -43,6 +42,7 @@ out: mutex_unlock(&mdev->mcu.mutex); + dev_kfree_skb(skb); return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt76x0/pci.c @@ -192,7 +192,8 @@ return 0; error: - ieee80211_free_hw(mt76_hw(dev)); + mt76_free_device(&dev->mt76); + return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c @@ -88,7 +88,8 @@ return 0; error: - ieee80211_free_hw(mt76_hw(dev)); + mt76_free_device(&dev->mt76); + return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c @@ -227,6 +227,7 @@ .read = seq_read, .llseek = seq_lseek, .release = single_release, + .owner = THIS_MODULE, }; static int mt7915_read_temperature(struct seq_file *s, void *data) @@ -384,6 +385,7 @@ return 0; } +#ifdef CONFIG_MAC80211_DEBUGFS /** per-station debugfs **/ /* usage: */ @@ -453,6 +455,7 @@ .read = seq_read, .llseek = seq_lseek, .release = single_release, + .owner = THIS_MODULE, }; void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif, @@ -461,3 +464,4 @@ debugfs_create_file("fixed_rate", 0600, dir, sta, &fops_fixed_rate); debugfs_create_file("stats", 0400, dir, sta, &fops_sta_stats); } +#endif --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7915/init.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7915/init.c @@ -691,8 +691,12 @@ spin_lock_bh(&dev->token_lock); idr_for_each_entry(&dev->token, txwi, id) { mt7915_txp_skb_unmap(&dev->mt76, txwi); - if (txwi->skb) - dev_kfree_skb_any(txwi->skb); + if (txwi->skb) { + struct ieee80211_hw *hw; + + hw = mt76_tx_status_get_hw(&dev->mt76, txwi->skb); + ieee80211_free_txskb(hw, txwi->skb); + } mt76_put_txwi(&dev->mt76, txwi); } spin_unlock_bh(&dev->token_lock); --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7915/mac.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7915/mac.c @@ -844,7 +844,7 @@ if (sta || !(info->flags & IEEE80211_TX_CTL_NO_ACK)) mt7915_tx_status(sta, hw, info, NULL); - dev_kfree_skb(skb); + ieee80211_free_txskb(hw, skb); } void mt7915_txp_skb_unmap(struct mt76_dev *dev, --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c @@ -505,15 +505,22 @@ mt7915_mcu_tx_rate_report(struct mt7915_dev *dev, struct sk_buff *skb) { struct mt7915_mcu_ra_info *ra = (struct mt7915_mcu_ra_info *)skb->data; - u16 wcidx = le16_to_cpu(ra->wlan_idx); - struct mt76_wcid *wcid = rcu_dereference(dev->mt76.wcid[wcidx]); - struct mt7915_sta *msta = container_of(wcid, struct mt7915_sta, wcid); - struct mt7915_sta_stats *stats = &msta->stats; - struct mt76_phy *mphy = &dev->mphy; struct rate_info rate = {}, prob_rate = {}; + u16 probe = le16_to_cpu(ra->prob_up_rate); u16 attempts = le16_to_cpu(ra->attempts); u16 curr = le16_to_cpu(ra->curr_rate); - u16 probe = le16_to_cpu(ra->prob_up_rate); + u16 wcidx = le16_to_cpu(ra->wlan_idx); + struct mt76_phy *mphy = &dev->mphy; + struct mt7915_sta_stats *stats; + struct mt7915_sta *msta; + struct mt76_wcid *wcid; + + if (wcidx >= MT76_N_WCIDS) + return; + + wcid = rcu_dereference(dev->mt76.wcid[wcidx]); + msta = container_of(wcid, struct mt7915_sta, wcid); + stats = &msta->stats; if (msta->wcid.ext_phy && dev->mt76.phy2) mphy = dev->mt76.phy2; @@ -2260,14 +2267,6 @@ struct bss_info_bcn *bcn; int len = MT7915_BEACON_UPDATE_SIZE + MAX_BEACON_SIZE; - rskb = mt7915_mcu_alloc_sta_req(dev, mvif, NULL, len); - if (IS_ERR(rskb)) - return PTR_ERR(rskb); - - tlv = mt7915_mcu_add_tlv(rskb, BSS_INFO_OFFLOAD, sizeof(*bcn)); - bcn = (struct bss_info_bcn *)tlv; - bcn->enable = en; - skb = ieee80211_beacon_get_template(hw, vif, &offs); if (!skb) return -EINVAL; @@ -2278,6 +2277,16 @@ return -EINVAL; } + rskb = mt7915_mcu_alloc_sta_req(dev, mvif, NULL, len); + if (IS_ERR(rskb)) { + dev_kfree_skb(skb); + return PTR_ERR(rskb); + } + + tlv = mt7915_mcu_add_tlv(rskb, BSS_INFO_OFFLOAD, sizeof(*bcn)); + bcn = (struct bss_info_bcn *)tlv; + bcn->enable = en; + if (mvif->band_idx) { info = IEEE80211_SKB_CB(skb); info->hw_queue |= MT_TX_HW_QUEUE_EXT_PHY; @@ -2665,7 +2674,7 @@ struct { u8 ver; u8 pad; - u16 len; + __le16 len; u8 level; u8 rsv[3]; __le32 module_idx; @@ -2899,12 +2908,12 @@ int mt7915_mcu_set_fcc5_lpn(struct mt7915_dev *dev, int val) { struct { - u32 tag; - u16 min_lpn; + __le32 tag; + __le16 min_lpn; u8 rsv[2]; } __packed req = { - .tag = 0x1, - .min_lpn = val, + .tag = cpu_to_le32(0x1), + .min_lpn = cpu_to_le16(val), }; return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, @@ -2915,13 +2924,28 @@ const struct mt7915_dfs_pulse *pulse) { struct { - u32 tag; - struct mt7915_dfs_pulse pulse; + __le32 tag; + + __le32 max_width; /* us */ + __le32 max_pwr; /* dbm */ + __le32 min_pwr; /* dbm */ + __le32 min_stgr_pri; /* us */ + __le32 max_stgr_pri; /* us */ + __le32 min_cr_pri; /* us */ + __le32 max_cr_pri; /* us */ } __packed req = { - .tag = 0x3, - }; + .tag = cpu_to_le32(0x3), - memcpy(&req.pulse, pulse, sizeof(*pulse)); +#define __req_field(field) .field = cpu_to_le32(pulse->field) + __req_field(max_width), + __req_field(max_pwr), + __req_field(min_pwr), + __req_field(min_stgr_pri), + __req_field(max_stgr_pri), + __req_field(min_cr_pri), + __req_field(max_cr_pri), +#undef __req_field + }; return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, &req, sizeof(req), true); @@ -2931,15 +2955,49 @@ const struct mt7915_dfs_pattern *pattern) { struct { - u32 tag; - u16 radar_type; - struct mt7915_dfs_pattern pattern; + __le32 tag; + __le16 radar_type; + + u8 enb; + u8 stgr; + u8 min_crpn; + u8 max_crpn; + u8 min_crpr; + u8 min_pw; + u32 min_pri; + u32 max_pri; + u8 max_pw; + u8 min_crbn; + u8 max_crbn; + u8 min_stgpn; + u8 max_stgpn; + u8 min_stgpr; + u8 rsv[2]; + u32 min_stgpr_diff; } __packed req = { - .tag = 0x2, - .radar_type = index, - }; + .tag = cpu_to_le32(0x2), + .radar_type = cpu_to_le16(index), - memcpy(&req.pattern, pattern, sizeof(*pattern)); +#define __req_field_u8(field) .field = pattern->field +#define __req_field_u32(field) .field = cpu_to_le32(pattern->field) + __req_field_u8(enb), + __req_field_u8(stgr), + __req_field_u8(min_crpn), + __req_field_u8(max_crpn), + __req_field_u8(min_crpr), + __req_field_u8(min_pw), + __req_field_u32(min_pri), + __req_field_u32(max_pri), + __req_field_u8(max_pw), + __req_field_u8(min_crbn), + __req_field_u8(max_crbn), + __req_field_u8(min_stgpn), + __req_field_u8(max_stgpn), + __req_field_u8(min_stgpr), + __req_field_u32(min_stgpr_diff), +#undef __req_field_u8 +#undef __req_field_u32 + }; return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_RDD_TH, &req, sizeof(req), true); @@ -3169,12 +3227,12 @@ u8 drop_tx_idx; u8 sta_idx; /* 256 sta */ u8 rsv[2]; - u32 val; + __le32 val; } __packed req = { .action = MT_SPR_ENABLE, .arg_num = 1, .band_idx = mvif->band_idx, - .val = enable, + .val = cpu_to_le32(enable), }; return __mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_SET_SPR, --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt76/mt7915/pci.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt76/mt7915/pci.c @@ -142,7 +142,7 @@ dev = container_of(mdev, struct mt7915_dev, mt76); ret = mt7915_alloc_device(pdev, dev); if (ret) - return ret; + goto error; mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); mdev->rev = (mt7915_l1_rr(dev, MT_HW_CHIPID) << 16) | @@ -163,7 +163,8 @@ return 0; error: - ieee80211_free_hw(mt76_hw(dev)); + mt76_free_device(&dev->mt76); + return ret; } --- linux-5.8.0.orig/drivers/net/wireless/mediatek/mt7601u/dma.c +++ linux-5.8.0/drivers/net/wireless/mediatek/mt7601u/dma.c @@ -152,8 +152,7 @@ if (new_p) { /* we have one extra ref from the allocator */ - __free_pages(e->p, MT_RX_ORDER); - + put_page(e->p); e->p = new_p; } } @@ -310,7 +309,6 @@ } e = &q->e[q->end]; - e->skb = skb; usb_fill_bulk_urb(e->urb, usb_dev, snd_pipe, skb->data, skb->len, mt7601u_complete_tx, q); ret = usb_submit_urb(e->urb, GFP_ATOMIC); @@ -328,6 +326,7 @@ q->end = (q->end + 1) % q->entries; q->used++; + e->skb = skb; if (q->used >= q->entries) ieee80211_stop_queue(dev->hw, skb_get_queue_mapping(skb)); --- linux-5.8.0.orig/drivers/net/wireless/quantenna/qtnfmac/commands.c +++ linux-5.8.0/drivers/net/wireless/quantenna/qtnfmac/commands.c @@ -869,6 +869,7 @@ default: pr_warn("VIF%u.%u: unsupported iftype %d\n", vif->mac->macid, vif->vifid, vif->wdev.iftype); + dev_kfree_skb(cmd_skb); ret = -EINVAL; goto out; } @@ -1924,6 +1925,7 @@ break; default: pr_err("unsupported iftype %d\n", vif->wdev.iftype); + dev_kfree_skb(cmd_skb); ret = -EINVAL; goto out; } --- linux-5.8.0.orig/drivers/net/wireless/quantenna/qtnfmac/core.c +++ linux-5.8.0/drivers/net/wireless/quantenna/qtnfmac/core.c @@ -446,8 +446,11 @@ } wiphy = qtnf_wiphy_allocate(bus, pdev); - if (!wiphy) + if (!wiphy) { + if (pdev) + platform_device_unregister(pdev); return ERR_PTR(-ENOMEM); + } mac = wiphy_priv(wiphy); --- linux-5.8.0.orig/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c +++ linux-5.8.0/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c @@ -299,19 +299,19 @@ sysctl_bar = qtnf_map_bar(pdev, QTN_SYSCTL_BAR); if (IS_ERR(sysctl_bar)) { pr_err("failed to map BAR%u\n", QTN_SYSCTL_BAR); - return ret; + return PTR_ERR(sysctl_bar); } dmareg_bar = qtnf_map_bar(pdev, QTN_DMA_BAR); if (IS_ERR(dmareg_bar)) { pr_err("failed to map BAR%u\n", QTN_DMA_BAR); - return ret; + return PTR_ERR(dmareg_bar); } epmem_bar = qtnf_map_bar(pdev, QTN_SHMEM_BAR); if (IS_ERR(epmem_bar)) { pr_err("failed to map BAR%u\n", QTN_SHMEM_BAR); - return ret; + return PTR_ERR(epmem_bar); } chipid = qtnf_chip_id_get(sysctl_bar); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -5795,7 +5795,6 @@ ret = usb_submit_urb(urb, GFP_KERNEL); if (ret) { usb_unanchor_urb(urb); - usb_free_urb(urb); goto error; } @@ -5804,6 +5803,7 @@ rtl8xxxu_write32(priv, REG_USB_HIMR, val32); error: + usb_free_urb(urb); return ret; } @@ -6318,6 +6318,7 @@ struct rtl8xxxu_priv *priv = hw->priv; struct rtl8xxxu_rx_urb *rx_urb; struct rtl8xxxu_tx_urb *tx_urb; + struct sk_buff *skb; unsigned long flags; int ret, i; @@ -6368,6 +6369,13 @@ rx_urb->hw = hw; ret = rtl8xxxu_submit_rx_urb(priv, rx_urb); + if (ret) { + if (ret != -ENOMEM) { + skb = (struct sk_buff *)rx_urb->urb.context; + dev_kfree_skb(skb); + } + rtl8xxxu_queue_rx_urb(priv, rx_urb); + } } schedule_delayed_work(&priv->ra_watchdog, 2 * HZ); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtlwifi/core.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtlwifi/core.c @@ -78,7 +78,6 @@ RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD, "Firmware callback routine entered!\n"); - complete(&rtlpriv->firmware_loading_complete); if (!firmware) { if (rtlpriv->cfg->alt_fw_name) { err = request_firmware(&firmware, @@ -91,13 +90,13 @@ } pr_err("Selected firmware is not available\n"); rtlpriv->max_fw_size = 0; - return; + goto exit; } found_alt: if (firmware->size > rtlpriv->max_fw_size) { pr_err("Firmware is too big!\n"); release_firmware(firmware); - return; + goto exit; } if (!is_wow) { memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, @@ -109,6 +108,9 @@ rtlpriv->rtlhal.wowlan_fwsize = firmware->size; } release_firmware(firmware); + +exit: + complete(&rtlpriv->firmware_loading_complete); } void rtl_fw_cb(const struct firmware *firmware, void *context) --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtlwifi/usb.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtlwifi/usb.c @@ -718,8 +718,11 @@ usb_anchor_urb(urb, &rtlusb->rx_submitted); err = usb_submit_urb(urb, GFP_KERNEL); - if (err) + if (err) { + usb_unanchor_urb(urb); + usb_free_urb(urb); goto err_out; + } usb_free_urb(urb); } return 0; --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/coex.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/coex.c @@ -1934,7 +1934,8 @@ if (coex_stat->wl_under_ips) return; - if (coex->freeze && !coex_stat->bt_setup_link) + if (coex->freeze && coex_dm->reason == COEX_RSN_BTINFO && + !coex_stat->bt_setup_link) return; coex_stat->cnt_wl[COEX_CNT_WL_COEXRUN]++; --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/debug.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/debug.c @@ -147,6 +147,8 @@ { int tmp_len; + memset(tmp, 0, size); + if (count < num) return -EFAULT; --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/fw.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/fw.c @@ -456,7 +456,7 @@ SET_RA_INFO_INIT_RA_LVL(h2c_pkt, si->init_ra_lv); SET_RA_INFO_SGI_EN(h2c_pkt, si->sgi_enable); SET_RA_INFO_BW_MODE(h2c_pkt, si->bw_mode); - SET_RA_INFO_LDPC(h2c_pkt, si->ldpc_en); + SET_RA_INFO_LDPC(h2c_pkt, !!si->ldpc_en); SET_RA_INFO_NO_UPDATE(h2c_pkt, no_update); SET_RA_INFO_VHT_EN(h2c_pkt, si->vht_enable); SET_RA_INFO_DIS_PT(h2c_pkt, disable_pt); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/main.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/main.c @@ -722,8 +722,6 @@ stbc_en = VHT_STBC_EN; if (sta->vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC) ldpc_en = VHT_LDPC_EN; - if (sta->vht_cap.cap & IEEE80211_VHT_CAP_SHORT_GI_80) - is_support_sgi = true; } else if (sta->ht_cap.ht_supported) { ra_mask |= (sta->ht_cap.mcs.rx_mask[1] << 20) | (sta->ht_cap.mcs.rx_mask[0] << 12); @@ -731,9 +729,6 @@ stbc_en = HT_STBC_EN; if (sta->ht_cap.cap & IEEE80211_HT_CAP_LDPC_CODING) ldpc_en = HT_LDPC_EN; - if (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20 || - sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) - is_support_sgi = true; } if (efuse->hw_cap.nss == 1) @@ -775,12 +770,18 @@ switch (sta->bandwidth) { case IEEE80211_STA_RX_BW_80: bw_mode = RTW_CHANNEL_WIDTH_80; + is_support_sgi = sta->vht_cap.vht_supported && + (sta->vht_cap.cap & IEEE80211_VHT_CAP_SHORT_GI_80); break; case IEEE80211_STA_RX_BW_40: bw_mode = RTW_CHANNEL_WIDTH_40; + is_support_sgi = sta->ht_cap.ht_supported && + (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40); break; default: bw_mode = RTW_CHANNEL_WIDTH_20; + is_support_sgi = sta->ht_cap.ht_supported && + (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20); break; } @@ -1464,6 +1465,9 @@ ret = rtw_load_firmware(rtwdev, RTW_WOWLAN_FW); if (ret) { rtw_warn(rtwdev, "no wow firmware loaded\n"); + wait_for_completion(&rtwdev->fw.completion); + if (rtwdev->fw.firmware) + release_firmware(rtwdev->fw.firmware); return ret; } } @@ -1478,6 +1482,8 @@ struct rtw_rsvd_page *rsvd_pkt, *tmp; unsigned long flags; + rtw_wait_firmware_completion(rtwdev); + if (fw->firmware) release_firmware(fw->firmware); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/pci.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/pci.c @@ -14,8 +14,11 @@ #include "debug.h" static bool rtw_disable_msi; +static bool rtw_pci_disable_aspm; module_param_named(disable_msi, rtw_disable_msi, bool, 0644); +module_param_named(disable_aspm, rtw_pci_disable_aspm, bool, 0644); MODULE_PARM_DESC(disable_msi, "Set Y to disable MSI interrupt support"); +MODULE_PARM_DESC(disable_aspm, "Set Y to disable PCI ASPM support"); static u32 rtw_pci_tx_queue_idx_addr[] = { [RTW_TX_QUEUE_BK] = RTK_PCI_TXBD_IDX_BKQ, @@ -1200,6 +1203,9 @@ u8 value; int ret; + if (rtw_pci_disable_aspm) + return; + ret = rtw_dbi_read8(rtwdev, RTK_PCIE_LINK_CFG, &value); if (ret) { rtw_err(rtwdev, "failed to read CLKREQ_L1, ret=%d", ret); @@ -1219,6 +1225,9 @@ u8 value; int ret; + if (rtw_pci_disable_aspm) + return; + ret = rtw_dbi_read8(rtwdev, RTK_PCIE_LINK_CFG, &value); if (ret) { rtw_err(rtwdev, "failed to read ASPM, ret=%d", ret); @@ -1590,6 +1599,8 @@ if (chip->ops->shutdown) chip->ops->shutdown(rtwdev); + + pci_set_power_state(pdev, PCI_D3hot); } EXPORT_SYMBOL(rtw_pci_shutdown); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/pci.h +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/pci.h @@ -9,8 +9,8 @@ #define RTK_BEQ_TX_DESC_NUM 256 #define RTK_MAX_RX_DESC_NUM 512 -/* 8K + rx desc size */ -#define RTK_PCI_RX_BUF_SIZE (8192 + 24) +/* 11K + rx desc size */ +#define RTK_PCI_RX_BUF_SIZE (11454 + 24) #define RTK_PCI_CTRL 0x300 #define BIT_RST_TRXDMA_INTF BIT(20) --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/phy.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/phy.c @@ -147,12 +147,13 @@ { struct rtw_chip_info *chip = rtwdev->chip; struct rtw_hal *hal = &rtwdev->hal; - const struct rtw_hw_reg *dig_cck = &chip->dig_cck[0]; u32 addr, mask; u8 path; - if (dig_cck) + if (chip->dig_cck) { + const struct rtw_hw_reg *dig_cck = &chip->dig_cck[0]; rtw_write32_mask(rtwdev, dig_cck->addr, dig_cck->mask, igi >> 1); + } for (path = 0; path < hal->rf_path_num; path++) { addr = chip->dig[path].addr; --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/rtw8723d.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/rtw8723d.c @@ -60,8 +60,8 @@ #define WLAN_MAX_AGG_NR 0x0A #define WLAN_AMPDU_MAX_TIME 0x1C #define WLAN_ANT_SEL 0x82 -#define WLAN_LTR_IDLE_LAT 0x883C883C -#define WLAN_LTR_ACT_LAT 0x880B880B +#define WLAN_LTR_IDLE_LAT 0x90039003 +#define WLAN_LTR_ACT_LAT 0x883c883c #define WLAN_LTR_CTRL1 0xCB004010 #define WLAN_LTR_CTRL2 0x01233425 --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/rtw8822ce.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/rtw8822ce.c @@ -11,6 +11,10 @@ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0xC822), .driver_data = (kernel_ulong_t)&rtw8822c_hw_spec }, + { + PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0xC82F), + .driver_data = (kernel_ulong_t)&rtw8822c_hw_spec + }, {} }; MODULE_DEVICE_TABLE(pci, rtw_8822ce_id_table); --- linux-5.8.0.orig/drivers/net/wireless/realtek/rtw88/tx.c +++ linux-5.8.0/drivers/net/wireless/realtek/rtw88/tx.c @@ -156,7 +156,7 @@ if (skb_queue_len(&tx_report->queue) == 0) return; - WARN(1, "purge skb(s) not reported by firmware\n"); + rtw_dbg(rtwdev, RTW_DBG_TX, "purge skb(s) not reported by firmware\n"); spin_lock_irqsave(&tx_report->q_lock, flags); skb_queue_purge(&tx_report->queue); --- linux-5.8.0.orig/drivers/net/wireless/rsi/rsi_91x_hal.c +++ linux-5.8.0/drivers/net/wireless/rsi/rsi_91x_hal.c @@ -248,7 +248,8 @@ rsi_set_len_qno(&data_desc->len_qno, (skb->len - FRAME_DESC_SZ), RSI_WIFI_MGMT_Q); - if ((skb->len - header_size) == EAPOL4_PACKET_LEN) { + if (((skb->len - header_size) == EAPOL4_PACKET_LEN) || + ((skb->len - header_size) == EAPOL4_PACKET_LEN - 2)) { data_desc->misc_flags |= RSI_DESC_REQUIRE_CFM_TO_HOST; xtend_desc->confirm_frame_type = EAPOL4_CONFIRM; --- linux-5.8.0.orig/drivers/net/wireless/rsi/rsi_91x_sdio.c +++ linux-5.8.0/drivers/net/wireless/rsi/rsi_91x_sdio.c @@ -153,9 +153,7 @@ if (adapter->priv->fsm_state == FSM_FW_NOT_LOADED) return; - dev->sdio_irq_task = current; - rsi_interrupt_handler(adapter); - dev->sdio_irq_task = NULL; + rsi_set_event(&dev->rx_thread.event); } /** @@ -1059,8 +1057,6 @@ rsi_dbg(ERR_ZONE, "%s: Unable to init rx thrd\n", __func__); goto fail_kill_thread; } - skb_queue_head_init(&sdev->rx_q.head); - sdev->rx_q.num_rx_pkts = 0; sdio_claim_host(pfunction); if (sdio_claim_irq(pfunction, rsi_handle_interrupt)) { --- linux-5.8.0.orig/drivers/net/wireless/rsi/rsi_91x_sdio_ops.c +++ linux-5.8.0/drivers/net/wireless/rsi/rsi_91x_sdio_ops.c @@ -60,39 +60,20 @@ return status; } +static void rsi_rx_handler(struct rsi_hw *adapter); + void rsi_sdio_rx_thread(struct rsi_common *common) { struct rsi_hw *adapter = common->priv; struct rsi_91x_sdiodev *sdev = adapter->rsi_dev; - struct sk_buff *skb; - int status; do { rsi_wait_event(&sdev->rx_thread.event, EVENT_WAIT_FOREVER); rsi_reset_event(&sdev->rx_thread.event); + rsi_rx_handler(adapter); + } while (!atomic_read(&sdev->rx_thread.thread_done)); - while (true) { - if (atomic_read(&sdev->rx_thread.thread_done)) - goto out; - - skb = skb_dequeue(&sdev->rx_q.head); - if (!skb) - break; - if (sdev->rx_q.num_rx_pkts > 0) - sdev->rx_q.num_rx_pkts--; - status = rsi_read_pkt(common, skb->data, skb->len); - if (status) { - rsi_dbg(ERR_ZONE, "Failed to read the packet\n"); - dev_kfree_skb(skb); - break; - } - dev_kfree_skb(skb); - } - } while (1); - -out: rsi_dbg(INFO_ZONE, "%s: Terminated SDIO RX thread\n", __func__); - skb_queue_purge(&sdev->rx_q.head); atomic_inc(&sdev->rx_thread.thread_done); complete_and_exit(&sdev->rx_thread.completion, 0); } @@ -113,10 +94,6 @@ u32 rcv_pkt_len = 0; int status = 0; u8 value = 0; - struct sk_buff *skb; - - if (dev->rx_q.num_rx_pkts >= RSI_MAX_RX_PKTS) - return 0; num_blks = ((adapter->interrupt_status & 1) | ((adapter->interrupt_status >> RECV_NUM_BLOCKS) << 1)); @@ -144,22 +121,19 @@ rcv_pkt_len = (num_blks * 256); - skb = dev_alloc_skb(rcv_pkt_len); - if (!skb) - return -ENOMEM; - - status = rsi_sdio_host_intf_read_pkt(adapter, skb->data, rcv_pkt_len); + status = rsi_sdio_host_intf_read_pkt(adapter, dev->pktbuffer, + rcv_pkt_len); if (status) { rsi_dbg(ERR_ZONE, "%s: Failed to read packet from card\n", __func__); - dev_kfree_skb(skb); return status; } - skb_put(skb, rcv_pkt_len); - skb_queue_tail(&dev->rx_q.head, skb); - dev->rx_q.num_rx_pkts++; - rsi_set_event(&dev->rx_thread.event); + status = rsi_read_pkt(common, dev->pktbuffer, rcv_pkt_len); + if (status) { + rsi_dbg(ERR_ZONE, "Failed to read the packet\n"); + return status; + } return 0; } @@ -251,12 +225,12 @@ } /** - * rsi_interrupt_handler() - This function read and process SDIO interrupts. + * rsi_rx_handler() - Read and process SDIO interrupts. * @adapter: Pointer to the adapter structure. * * Return: None. */ -void rsi_interrupt_handler(struct rsi_hw *adapter) +static void rsi_rx_handler(struct rsi_hw *adapter) { struct rsi_common *common = adapter->priv; struct rsi_91x_sdiodev *dev = --- linux-5.8.0.orig/drivers/net/wireless/rsi/rsi_91x_usb.c +++ linux-5.8.0/drivers/net/wireless/rsi/rsi_91x_usb.c @@ -741,24 +741,24 @@ if (ret < 0) goto fail; } else { - if ((rsi_usb_master_reg_write(adapter, - NWP_WWD_INTERRUPT_TIMER, - NWP_WWD_INT_TIMER_CLKS, - RSI_9116_REG_SIZE)) < 0) { + ret = rsi_usb_master_reg_write(adapter, + NWP_WWD_INTERRUPT_TIMER, + NWP_WWD_INT_TIMER_CLKS, + RSI_9116_REG_SIZE); + if (ret < 0) goto fail; - } - if ((rsi_usb_master_reg_write(adapter, - NWP_WWD_SYSTEM_RESET_TIMER, - NWP_WWD_SYS_RESET_TIMER_CLKS, - RSI_9116_REG_SIZE)) < 0) { + ret = rsi_usb_master_reg_write(adapter, + NWP_WWD_SYSTEM_RESET_TIMER, + NWP_WWD_SYS_RESET_TIMER_CLKS, + RSI_9116_REG_SIZE); + if (ret < 0) goto fail; - } - if ((rsi_usb_master_reg_write(adapter, - NWP_WWD_MODE_AND_RSTART, - NWP_WWD_TIMER_DISABLE, - RSI_9116_REG_SIZE)) < 0) { + ret = rsi_usb_master_reg_write(adapter, + NWP_WWD_MODE_AND_RSTART, + NWP_WWD_TIMER_DISABLE, + RSI_9116_REG_SIZE); + if (ret < 0) goto fail; - } } rsi_dbg(INFO_ZONE, "Reset card done\n"); --- linux-5.8.0.orig/drivers/net/wireless/rsi/rsi_sdio.h +++ linux-5.8.0/drivers/net/wireless/rsi/rsi_sdio.h @@ -111,11 +111,6 @@ u32 buf_available_counter; }; -struct rsi_sdio_rx_q { - u8 num_rx_pkts; - struct sk_buff_head head; -}; - struct rsi_91x_sdiodev { struct sdio_func *pfunction; struct task_struct *sdio_irq_task; @@ -128,11 +123,10 @@ u16 tx_blk_size; u8 write_fail; bool buff_status_updated; - struct rsi_sdio_rx_q rx_q; struct rsi_thread rx_thread; + u8 pktbuffer[8192] __aligned(4); }; -void rsi_interrupt_handler(struct rsi_hw *adapter); int rsi_init_sdio_slave_regs(struct rsi_hw *adapter); int rsi_sdio_read_register(struct rsi_hw *adapter, u32 addr, u8 *data); int rsi_sdio_host_intf_read_pkt(struct rsi_hw *adapter, u8 *pkt, u32 length); --- linux-5.8.0.orig/drivers/net/wireless/st/cw1200/main.c +++ linux-5.8.0/drivers/net/wireless/st/cw1200/main.c @@ -381,6 +381,7 @@ CW1200_LINK_ID_MAX, cw1200_skb_dtor, priv)) { + destroy_workqueue(priv->workqueue); ieee80211_free_hw(hw); return NULL; } @@ -392,6 +393,7 @@ for (; i > 0; i--) cw1200_queue_deinit(&priv->tx_queue[i - 1]); cw1200_queue_stats_deinit(&priv->tx_queue_stats); + destroy_workqueue(priv->workqueue); ieee80211_free_hw(hw); return NULL; } --- linux-5.8.0.orig/drivers/net/wireless/ti/wl1251/event.c +++ linux-5.8.0/drivers/net/wireless/ti/wl1251/event.c @@ -70,7 +70,7 @@ break; } - return 0; + return ret; } static void wl1251_event_mbox_dump(struct event_mailbox *mbox) --- linux-5.8.0.orig/drivers/net/wireless/ti/wl12xx/main.c +++ linux-5.8.0/drivers/net/wireless/ti/wl12xx/main.c @@ -635,7 +635,6 @@ wl->quirks |= WLCORE_QUIRK_LEGACY_NVS | WLCORE_QUIRK_DUAL_PROBE_TMPL | WLCORE_QUIRK_TKIP_HEADER_SPACE | - WLCORE_QUIRK_START_STA_FAILS | WLCORE_QUIRK_AP_ZERO_SESSION_ID; wl->sr_fw_name = WL127X_FW_NAME_SINGLE; wl->mr_fw_name = WL127X_FW_NAME_MULTI; @@ -659,7 +658,6 @@ wl->quirks |= WLCORE_QUIRK_LEGACY_NVS | WLCORE_QUIRK_DUAL_PROBE_TMPL | WLCORE_QUIRK_TKIP_HEADER_SPACE | - WLCORE_QUIRK_START_STA_FAILS | WLCORE_QUIRK_AP_ZERO_SESSION_ID; wl->plt_fw_name = WL127X_PLT_FW_NAME; wl->sr_fw_name = WL127X_FW_NAME_SINGLE; @@ -688,7 +686,6 @@ wl->quirks |= WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN | WLCORE_QUIRK_DUAL_PROBE_TMPL | WLCORE_QUIRK_TKIP_HEADER_SPACE | - WLCORE_QUIRK_START_STA_FAILS | WLCORE_QUIRK_AP_ZERO_SESSION_ID; wlcore_set_min_fw_ver(wl, WL128X_CHIP_VER, --- linux-5.8.0.orig/drivers/net/wireless/ti/wlcore/cmd.h +++ linux-5.8.0/drivers/net/wireless/ti/wlcore/cmd.h @@ -458,7 +458,6 @@ KEY_TKIP = 2, KEY_AES = 3, KEY_GEM = 4, - KEY_IGTK = 5, }; struct wl1271_cmd_set_keys { --- linux-5.8.0.orig/drivers/net/wireless/ti/wlcore/main.c +++ linux-5.8.0/drivers/net/wireless/ti/wlcore/main.c @@ -2864,21 +2864,8 @@ if (is_ibss) ret = wl12xx_cmd_role_start_ibss(wl, wlvif); - else { - if (wl->quirks & WLCORE_QUIRK_START_STA_FAILS) { - /* - * TODO: this is an ugly workaround for wl12xx fw - * bug - we are not able to tx/rx after the first - * start_sta, so make dummy start+stop calls, - * and then call start_sta again. - * this should be fixed in the fw. - */ - wl12xx_cmd_role_start_sta(wl, wlvif); - wl12xx_cmd_role_stop_sta(wl, wlvif); - } - + else ret = wl12xx_cmd_role_start_sta(wl, wlvif); - } return ret; } @@ -3550,9 +3537,6 @@ case WL1271_CIPHER_SUITE_GEM: key_type = KEY_GEM; break; - case WLAN_CIPHER_SUITE_AES_CMAC: - key_type = KEY_IGTK; - break; default: wl1271_error("Unknown key algo 0x%x", key_conf->cipher); @@ -6222,7 +6206,6 @@ WLAN_CIPHER_SUITE_TKIP, WLAN_CIPHER_SUITE_CCMP, WL1271_CIPHER_SUITE_GEM, - WLAN_CIPHER_SUITE_AES_CMAC, }; /* The tx descriptor buffer */ --- linux-5.8.0.orig/drivers/net/wireless/ti/wlcore/wlcore.h +++ linux-5.8.0/drivers/net/wireless/ti/wlcore/wlcore.h @@ -547,9 +547,6 @@ /* Each RX/TX transaction requires an end-of-transaction transfer */ #define WLCORE_QUIRK_END_OF_TRANSACTION BIT(0) -/* the first start_role(sta) sometimes doesn't work on wl12xx */ -#define WLCORE_QUIRK_START_STA_FAILS BIT(1) - /* wl127x and SPI don't support SDIO block size alignment */ #define WLCORE_QUIRK_TX_BLOCKSIZE_ALIGN BIT(2) --- linux-5.8.0.orig/drivers/net/xen-netback/common.h +++ linux-5.8.0/drivers/net/xen-netback/common.h @@ -140,6 +140,20 @@ char name[QUEUE_NAME_SIZE]; /* DEVNAME-qN */ struct xenvif *vif; /* Parent VIF */ + /* + * TX/RX common EOI handling. + * When feature-split-event-channels = 0, interrupt handler sets + * NETBK_COMMON_EOI, otherwise NETBK_RX_EOI and NETBK_TX_EOI are set + * by the RX and TX interrupt handlers. + * RX and TX handler threads will issue an EOI when either + * NETBK_COMMON_EOI or their specific bits (NETBK_RX_EOI or + * NETBK_TX_EOI) are set and they will reset those bits. + */ + atomic_t eoi_pending; +#define NETBK_RX_EOI 0x01 +#define NETBK_TX_EOI 0x02 +#define NETBK_COMMON_EOI 0x04 + /* Use NAPI for guest TX */ struct napi_struct napi; /* When feature-split-event-channels = 0, tx_irq = rx_irq. */ @@ -375,6 +389,7 @@ irqreturn_t xenvif_ctrl_irq_fn(int irq, void *data); +bool xenvif_have_rx_work(struct xenvif_queue *queue, bool test_kthread); void xenvif_rx_action(struct xenvif_queue *queue); void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb); --- linux-5.8.0.orig/drivers/net/xen-netback/interface.c +++ linux-5.8.0/drivers/net/xen-netback/interface.c @@ -77,12 +77,28 @@ !vif->disabled; } +static bool xenvif_handle_tx_interrupt(struct xenvif_queue *queue) +{ + bool rc; + + rc = RING_HAS_UNCONSUMED_REQUESTS(&queue->tx); + if (rc) + napi_schedule(&queue->napi); + return rc; +} + static irqreturn_t xenvif_tx_interrupt(int irq, void *dev_id) { struct xenvif_queue *queue = dev_id; + int old; - if (RING_HAS_UNCONSUMED_REQUESTS(&queue->tx)) - napi_schedule(&queue->napi); + old = atomic_fetch_or(NETBK_TX_EOI, &queue->eoi_pending); + WARN(old & NETBK_TX_EOI, "Interrupt while EOI pending\n"); + + if (!xenvif_handle_tx_interrupt(queue)) { + atomic_andnot(NETBK_TX_EOI, &queue->eoi_pending); + xen_irq_lateeoi(irq, XEN_EOI_FLAG_SPURIOUS); + } return IRQ_HANDLED; } @@ -116,19 +132,48 @@ return work_done; } +static bool xenvif_handle_rx_interrupt(struct xenvif_queue *queue) +{ + bool rc; + + rc = xenvif_have_rx_work(queue, false); + if (rc) + xenvif_kick_thread(queue); + return rc; +} + static irqreturn_t xenvif_rx_interrupt(int irq, void *dev_id) { struct xenvif_queue *queue = dev_id; + int old; - xenvif_kick_thread(queue); + old = atomic_fetch_or(NETBK_RX_EOI, &queue->eoi_pending); + WARN(old & NETBK_RX_EOI, "Interrupt while EOI pending\n"); + + if (!xenvif_handle_rx_interrupt(queue)) { + atomic_andnot(NETBK_RX_EOI, &queue->eoi_pending); + xen_irq_lateeoi(irq, XEN_EOI_FLAG_SPURIOUS); + } return IRQ_HANDLED; } irqreturn_t xenvif_interrupt(int irq, void *dev_id) { - xenvif_tx_interrupt(irq, dev_id); - xenvif_rx_interrupt(irq, dev_id); + struct xenvif_queue *queue = dev_id; + int old; + bool has_rx, has_tx; + + old = atomic_fetch_or(NETBK_COMMON_EOI, &queue->eoi_pending); + WARN(old, "Interrupt while EOI pending\n"); + + has_tx = xenvif_handle_tx_interrupt(queue); + has_rx = xenvif_handle_rx_interrupt(queue); + + if (!has_rx && !has_tx) { + atomic_andnot(NETBK_COMMON_EOI, &queue->eoi_pending); + xen_irq_lateeoi(irq, XEN_EOI_FLAG_SPURIOUS); + } return IRQ_HANDLED; } @@ -603,7 +648,7 @@ if (req_prod - rsp_prod > RING_SIZE(&vif->ctrl)) goto err_unmap; - err = bind_interdomain_evtchn_to_irq(vif->domid, evtchn); + err = bind_interdomain_evtchn_to_irq_lateeoi(vif->domid, evtchn); if (err < 0) goto err_unmap; @@ -707,7 +752,7 @@ if (tx_evtchn == rx_evtchn) { /* feature-split-event-channels == 0 */ - err = bind_interdomain_evtchn_to_irqhandler( + err = bind_interdomain_evtchn_to_irqhandler_lateeoi( queue->vif->domid, tx_evtchn, xenvif_interrupt, 0, queue->name, queue); if (err < 0) @@ -718,7 +763,7 @@ /* feature-split-event-channels == 1 */ snprintf(queue->tx_irq_name, sizeof(queue->tx_irq_name), "%s-tx", queue->name); - err = bind_interdomain_evtchn_to_irqhandler( + err = bind_interdomain_evtchn_to_irqhandler_lateeoi( queue->vif->domid, tx_evtchn, xenvif_tx_interrupt, 0, queue->tx_irq_name, queue); if (err < 0) @@ -728,7 +773,7 @@ snprintf(queue->rx_irq_name, sizeof(queue->rx_irq_name), "%s-rx", queue->name); - err = bind_interdomain_evtchn_to_irqhandler( + err = bind_interdomain_evtchn_to_irqhandler_lateeoi( queue->vif->domid, rx_evtchn, xenvif_rx_interrupt, 0, queue->rx_irq_name, queue); if (err < 0) --- linux-5.8.0.orig/drivers/net/xen-netback/netback.c +++ linux-5.8.0/drivers/net/xen-netback/netback.c @@ -162,6 +162,10 @@ if (more_to_do) napi_schedule(&queue->napi); + else if (atomic_fetch_andnot(NETBK_TX_EOI | NETBK_COMMON_EOI, + &queue->eoi_pending) & + (NETBK_TX_EOI | NETBK_COMMON_EOI)) + xen_irq_lateeoi(queue->tx_irq, 0); } static void tx_add_credit(struct xenvif_queue *queue) @@ -1336,7 +1340,15 @@ NULL, queue->pages_to_map, nr_mops); - BUG_ON(ret); + if (ret) { + unsigned int i; + + netdev_err(queue->vif->dev, "Map fail: nr %u ret %d\n", + nr_mops, ret); + for (i = 0; i < nr_mops; ++i) + WARN_ON_ONCE(queue->tx_map_ops[i].status == + GNTST_okay); + } } work_done = xenvif_tx_submit(queue); @@ -1636,9 +1648,14 @@ irqreturn_t xenvif_ctrl_irq_fn(int irq, void *data) { struct xenvif *vif = data; + unsigned int eoi_flag = XEN_EOI_FLAG_SPURIOUS; - while (xenvif_ctrl_work_todo(vif)) + while (xenvif_ctrl_work_todo(vif)) { xenvif_ctrl_action(vif); + eoi_flag = 0; + } + + xen_irq_lateeoi(irq, eoi_flag); return IRQ_HANDLED; } --- linux-5.8.0.orig/drivers/net/xen-netback/rx.c +++ linux-5.8.0/drivers/net/xen-netback/rx.c @@ -38,10 +38,15 @@ RING_IDX prod, cons; struct sk_buff *skb; int needed; + unsigned long flags; + + spin_lock_irqsave(&queue->rx_queue.lock, flags); skb = skb_peek(&queue->rx_queue); - if (!skb) + if (!skb) { + spin_unlock_irqrestore(&queue->rx_queue.lock, flags); return false; + } needed = DIV_ROUND_UP(skb->len, XEN_PAGE_SIZE); if (skb_is_gso(skb)) @@ -49,6 +54,8 @@ if (skb->sw_hash) needed++; + spin_unlock_irqrestore(&queue->rx_queue.lock, flags); + do { prod = queue->rx.sring->req_prod; cons = queue->rx.req_cons; @@ -490,13 +497,13 @@ return queue->stalled && prod - cons >= 1; } -static bool xenvif_have_rx_work(struct xenvif_queue *queue) +bool xenvif_have_rx_work(struct xenvif_queue *queue, bool test_kthread) { return xenvif_rx_ring_slots_available(queue) || (queue->vif->stall_timeout && (xenvif_rx_queue_stalled(queue) || xenvif_rx_queue_ready(queue))) || - kthread_should_stop() || + (test_kthread && kthread_should_stop()) || queue->vif->disabled; } @@ -527,15 +534,20 @@ { DEFINE_WAIT(wait); - if (xenvif_have_rx_work(queue)) + if (xenvif_have_rx_work(queue, true)) return; for (;;) { long ret; prepare_to_wait(&queue->wq, &wait, TASK_INTERRUPTIBLE); - if (xenvif_have_rx_work(queue)) + if (xenvif_have_rx_work(queue, true)) break; + if (atomic_fetch_andnot(NETBK_RX_EOI | NETBK_COMMON_EOI, + &queue->eoi_pending) & + (NETBK_RX_EOI | NETBK_COMMON_EOI)) + xen_irq_lateeoi(queue->rx_irq, 0); + ret = schedule_timeout(xenvif_rx_queue_timeout(queue)); if (!ret) break; --- linux-5.8.0.orig/drivers/net/xen-netback/xenbus.c +++ linux-5.8.0/drivers/net/xen-netback/xenbus.c @@ -534,12 +534,14 @@ return -ENOMEM; snprintf(node, maxlen, "%s/rate", dev->nodename); vif->credit_watch.node = node; + vif->credit_watch.will_handle = NULL; vif->credit_watch.callback = xen_net_rate_changed; err = register_xenbus_watch(&vif->credit_watch); if (err) { pr_err("Failed to set watcher %s\n", vif->credit_watch.node); kfree(node); vif->credit_watch.node = NULL; + vif->credit_watch.will_handle = NULL; vif->credit_watch.callback = NULL; } return err; @@ -586,6 +588,7 @@ snprintf(node, maxlen, "%s/request-multicast-control", dev->otherend); vif->mcast_ctrl_watch.node = node; + vif->mcast_ctrl_watch.will_handle = NULL; vif->mcast_ctrl_watch.callback = xen_mcast_ctrl_changed; err = register_xenbus_watch(&vif->mcast_ctrl_watch); if (err) { @@ -593,6 +596,7 @@ vif->mcast_ctrl_watch.node); kfree(node); vif->mcast_ctrl_watch.node = NULL; + vif->mcast_ctrl_watch.will_handle = NULL; vif->mcast_ctrl_watch.callback = NULL; } return err; @@ -797,7 +801,7 @@ xenvif_carrier_on(be->vif); unregister_hotplug_status_watch(be); - err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch, + err = xenbus_watch_pathfmt(dev, &be->hotplug_status_watch, NULL, hotplug_status_changed, "%s/%s", dev->nodename, "hotplug-status"); if (!err) --- linux-5.8.0.orig/drivers/nfc/s3fwrn5/Kconfig +++ linux-5.8.0/drivers/nfc/s3fwrn5/Kconfig @@ -2,6 +2,7 @@ config NFC_S3FWRN5 tristate select CRYPTO + select CRYPTO_HASH help Core driver for Samsung S3FWRN5 NFC chip. Contains core utilities of chip. It's intended to be used by PHYs to avoid duplicating lots --- linux-5.8.0.orig/drivers/nfc/s3fwrn5/firmware.c +++ linux-5.8.0/drivers/nfc/s3fwrn5/firmware.c @@ -293,8 +293,10 @@ if (ret < 0) return ret; - if (fw->fw->size < S3FWRN5_FW_IMAGE_HEADER_SIZE) + if (fw->fw->size < S3FWRN5_FW_IMAGE_HEADER_SIZE) { + release_firmware(fw->fw); return -EINVAL; + } memcpy(fw->date, fw->fw->data + 0x00, 12); fw->date[12] = '\0'; --- linux-5.8.0.orig/drivers/nfc/s3fwrn5/i2c.c +++ linux-5.8.0/drivers/nfc/s3fwrn5/i2c.c @@ -26,8 +26,8 @@ struct i2c_client *i2c_dev; struct nci_dev *ndev; - unsigned int gpio_en; - unsigned int gpio_fw_wake; + int gpio_en; + int gpio_fw_wake; struct mutex mutex; --- linux-5.8.0.orig/drivers/nfc/st95hf/core.c +++ linux-5.8.0/drivers/nfc/st95hf/core.c @@ -966,7 +966,7 @@ rc = down_killable(&stcontext->exchange_lock); if (rc) { WARN(1, "Semaphore is not found up in st95hf_in_send_cmd\n"); - return rc; + goto free_skb_resp; } rc = st95hf_spi_send(&stcontext->spicontext, skb->data, --- linux-5.8.0.orig/drivers/ntb/hw/amd/ntb_hw_amd.c +++ linux-5.8.0/drivers/ntb/hw/amd/ntb_hw_amd.c @@ -1203,6 +1203,7 @@ err_dma_mask: pci_clear_master(pdev); + pci_release_regions(pdev); err_pci_regions: pci_disable_device(pdev); err_pci_enable: --- linux-5.8.0.orig/drivers/ntb/hw/intel/ntb_hw_gen1.c +++ linux-5.8.0/drivers/ntb/hw/intel/ntb_hw_gen1.c @@ -1893,7 +1893,7 @@ goto err_init_dev; } else { rc = -EINVAL; - goto err_ndev; + goto err_init_pci; } ndev_reset_unsafe_flags(ndev); --- linux-5.8.0.orig/drivers/nvdimm/btt.c +++ linux-5.8.0/drivers/nvdimm/btt.c @@ -1490,10 +1490,8 @@ { struct btt *btt = bdev->bd_disk->private_data; int rc; - unsigned int len; - len = hpage_nr_pages(page) * PAGE_SIZE; - rc = btt_do_bvec(btt, NULL, page, len, 0, op, sector); + rc = btt_do_bvec(btt, NULL, page, thp_size(page), 0, op, sector); if (rc == 0) page_endio(page, op_is_write(op), 0); --- linux-5.8.0.orig/drivers/nvdimm/bus.c +++ linux-5.8.0/drivers/nvdimm/bus.c @@ -1037,9 +1037,25 @@ dimm_name = "bus"; } + /* Validate command family support against bus declared support */ if (cmd == ND_CMD_CALL) { + unsigned long *mask; + if (copy_from_user(&pkg, p, sizeof(pkg))) return -EFAULT; + + if (nvdimm) { + if (pkg.nd_family > NVDIMM_FAMILY_MAX) + return -EINVAL; + mask = &nd_desc->dimm_family_mask; + } else { + if (pkg.nd_family > NVDIMM_BUS_FAMILY_MAX) + return -EINVAL; + mask = &nd_desc->bus_family_mask; + } + + if (!test_bit(pkg.nd_family, mask)) + return -EINVAL; } if (!desc || --- linux-5.8.0.orig/drivers/nvdimm/claim.c +++ linux-5.8.0/drivers/nvdimm/claim.c @@ -268,7 +268,7 @@ if (rw == READ) { if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align))) return -EIO; - if (memcpy_mcsafe(buf, nsio->addr + offset, size) != 0) + if (copy_mc_to_kernel(buf, nsio->addr + offset, size) != 0) return -EIO; return 0; } --- linux-5.8.0.orig/drivers/nvdimm/dimm_devs.c +++ linux-5.8.0/drivers/nvdimm/dimm_devs.c @@ -335,16 +335,16 @@ } static DEVICE_ATTR_RO(state); -static ssize_t available_slots_show(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t __available_slots_show(struct nvdimm_drvdata *ndd, char *buf) { - struct nvdimm_drvdata *ndd = dev_get_drvdata(dev); + struct device *dev; ssize_t rc; u32 nfree; if (!ndd) return -ENXIO; + dev = ndd->dev; nvdimm_bus_lock(dev); nfree = nd_label_nfree(ndd); if (nfree - 1 > nfree) { @@ -356,6 +356,18 @@ nvdimm_bus_unlock(dev); return rc; } + +static ssize_t available_slots_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + ssize_t rc; + + nd_device_lock(dev); + rc = __available_slots_show(dev_get_drvdata(dev), buf); + nd_device_unlock(dev); + + return rc; +} static DEVICE_ATTR_RO(available_slots); __weak ssize_t security_show(struct device *dev, --- linux-5.8.0.orig/drivers/nvdimm/label.c +++ linux-5.8.0/drivers/nvdimm/label.c @@ -980,6 +980,15 @@ } } + /* release slots associated with any invalidated UUIDs */ + mutex_lock(&nd_mapping->lock); + list_for_each_entry_safe(label_ent, e, &nd_mapping->labels, list) + if (test_and_clear_bit(ND_LABEL_REAP, &label_ent->flags)) { + reap_victim(nd_mapping, label_ent); + list_move(&label_ent->list, &list); + } + mutex_unlock(&nd_mapping->lock); + /* * Find the resource associated with the first label in the set * per the v1.2 namespace specification. @@ -999,8 +1008,10 @@ if (is_old_resource(res, old_res_list, old_num_resources)) continue; /* carry-over */ slot = nd_label_alloc_slot(ndd); - if (slot == UINT_MAX) + if (slot == UINT_MAX) { + rc = -ENXIO; goto abort; + } dev_dbg(ndd->dev, "allocated: %d\n", slot); nd_label = to_label(ndd, slot); --- linux-5.8.0.orig/drivers/nvdimm/namespace_devs.c +++ linux-5.8.0/drivers/nvdimm/namespace_devs.c @@ -1635,11 +1635,11 @@ return a->mode; } - if (a == &dev_attr_nstype.attr || a == &dev_attr_size.attr - || a == &dev_attr_holder.attr - || a == &dev_attr_holder_class.attr - || a == &dev_attr_force_raw.attr - || a == &dev_attr_mode.attr) + /* base is_namespace_io() attributes */ + if (a == &dev_attr_nstype.attr || a == &dev_attr_size.attr || + a == &dev_attr_holder.attr || a == &dev_attr_holder_class.attr || + a == &dev_attr_force_raw.attr || a == &dev_attr_mode.attr || + a == &dev_attr_resource.attr) return a->mode; return 0; --- linux-5.8.0.orig/drivers/nvdimm/pmem.c +++ linux-5.8.0/drivers/nvdimm/pmem.c @@ -125,7 +125,7 @@ while (len) { mem = kmap_atomic(page); chunk = min_t(unsigned int, len, PAGE_SIZE - off); - rem = memcpy_mcsafe(mem + off, pmem_addr, chunk); + rem = copy_mc_to_kernel(mem + off, pmem_addr, chunk); kunmap_atomic(mem); if (rem) return BLK_STS_IOERR; @@ -238,11 +238,9 @@ blk_status_t rc; if (op_is_write(op)) - rc = pmem_do_write(pmem, page, 0, sector, - hpage_nr_pages(page) * PAGE_SIZE); + rc = pmem_do_write(pmem, page, 0, sector, thp_size(page)); else - rc = pmem_do_read(pmem, page, 0, sector, - hpage_nr_pages(page) * PAGE_SIZE); + rc = pmem_do_read(pmem, page, 0, sector, thp_size(page)); /* * The ->rw_page interface is subtle and tricky. The core * retries on any error, so we can only invoke page_endio() in @@ -305,7 +303,7 @@ /* * Use the 'no check' versions of copy_from_iter_flushcache() and - * copy_to_iter_mcsafe() to bypass HARDENED_USERCOPY overhead. Bounds + * copy_mc_to_iter() to bypass HARDENED_USERCOPY overhead. Bounds * checking, both file offset and device offset, is handled by * dax_iomap_actor() */ @@ -318,7 +316,7 @@ static size_t pmem_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, size_t bytes, struct iov_iter *i) { - return _copy_to_iter_mcsafe(addr, bytes, i); + return _copy_mc_to_iter(addr, bytes, i); } static const struct dax_operations pmem_dax_ops = { --- linux-5.8.0.orig/drivers/nvdimm/security.c +++ linux-5.8.0/drivers/nvdimm/security.c @@ -450,14 +450,19 @@ else dev_dbg(&nvdimm->dev, "overwrite completed\n"); - if (nvdimm->sec.overwrite_state) - sysfs_notify_dirent(nvdimm->sec.overwrite_state); + /* + * Mark the overwrite work done and update dimm security flags, + * then send a sysfs event notification to wake up userspace + * poll threads to picked up the changed state. + */ nvdimm->sec.overwrite_tmo = 0; clear_bit(NDD_SECURITY_OVERWRITE, &nvdimm->flags); clear_bit(NDD_WORK_PENDING, &nvdimm->flags); - put_device(&nvdimm->dev); nvdimm->sec.flags = nvdimm_security_flags(nvdimm, NVDIMM_USER); - nvdimm->sec.flags = nvdimm_security_flags(nvdimm, NVDIMM_MASTER); + nvdimm->sec.ext_flags = nvdimm_security_flags(nvdimm, NVDIMM_MASTER); + if (nvdimm->sec.overwrite_state) + sysfs_notify_dirent(nvdimm->sec.overwrite_state); + put_device(&nvdimm->dev); } void nvdimm_security_overwrite_query(struct work_struct *work) --- linux-5.8.0.orig/drivers/nvme/host/Kconfig +++ linux-5.8.0/drivers/nvme/host/Kconfig @@ -73,6 +73,7 @@ depends on INET depends on BLK_DEV_NVME select NVME_FABRICS + select CRYPTO select CRYPTO_CRC32C help This provides support for the NVMe over Fabrics protocol using --- linux-5.8.0.orig/drivers/nvme/host/core.c +++ linux-5.8.0/drivers/nvme/host/core.c @@ -304,11 +304,32 @@ return true; nvme_req(req)->status = NVME_SC_HOST_ABORTED_CMD; + nvme_req(req)->flags |= NVME_REQ_CANCELLED; blk_mq_force_complete_rq(req); return true; } EXPORT_SYMBOL_GPL(nvme_cancel_request); +void nvme_cancel_tagset(struct nvme_ctrl *ctrl) +{ + if (ctrl->tagset) { + blk_mq_tagset_busy_iter(ctrl->tagset, + nvme_cancel_request, ctrl); + blk_mq_tagset_wait_completed_request(ctrl->tagset); + } +} +EXPORT_SYMBOL_GPL(nvme_cancel_tagset); + +void nvme_cancel_admin_tagset(struct nvme_ctrl *ctrl) +{ + if (ctrl->admin_tagset) { + blk_mq_tagset_busy_iter(ctrl->admin_tagset, + nvme_cancel_request, ctrl); + blk_mq_tagset_wait_completed_request(ctrl->admin_tagset); + } +} +EXPORT_SYMBOL_GPL(nvme_cancel_admin_tagset); + bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, enum nvme_ctrl_state new_state) { @@ -362,6 +383,16 @@ break; } break; + case NVME_CTRL_DELETING_NOIO: + switch (old_state) { + case NVME_CTRL_DELETING: + case NVME_CTRL_DEAD: + changed = true; + /* FALLTHRU */ + default: + break; + } + break; case NVME_CTRL_DEAD: switch (old_state) { case NVME_CTRL_DELETING: @@ -399,6 +430,7 @@ case NVME_CTRL_CONNECTING: return false; case NVME_CTRL_DELETING: + case NVME_CTRL_DELETING_NOIO: case NVME_CTRL_DEAD: return true; default: @@ -1293,8 +1325,21 @@ } length = (io.nblocks + 1) << ns->lba_shift; - meta_len = (io.nblocks + 1) * ns->ms; - metadata = nvme_to_user_ptr(io.metadata); + + if ((io.control & NVME_RW_PRINFO_PRACT) && + ns->ms == sizeof(struct t10_pi_tuple)) { + /* + * Protection information is stripped/inserted by the + * controller. + */ + if (nvme_to_user_ptr(io.metadata)) + return -EINVAL; + meta_len = 0; + metadata = NULL; + } else { + meta_len = (io.nblocks + 1) * ns->ms; + metadata = nvme_to_user_ptr(io.metadata); + } if (ns->features & NVME_NS_EXT_LBAS) { length += meta_len; @@ -1754,30 +1799,18 @@ blk_queue_max_write_zeroes_sectors(queue, UINT_MAX); } -static void nvme_config_write_zeroes(struct gendisk *disk, struct nvme_ns *ns) +/* + * Even though NVMe spec explicitly states that MDTS is not applicable to the + * write-zeroes, we are cautious and limit the size to the controllers + * max_hw_sectors value, which is based on the MDTS field and possibly other + * limiting factors. + */ +static void nvme_config_write_zeroes(struct request_queue *q, + struct nvme_ctrl *ctrl) { - u64 max_blocks; - - if (!(ns->ctrl->oncs & NVME_CTRL_ONCS_WRITE_ZEROES) || - (ns->ctrl->quirks & NVME_QUIRK_DISABLE_WRITE_ZEROES)) - return; - /* - * Even though NVMe spec explicitly states that MDTS is not - * applicable to the write-zeroes:- "The restriction does not apply to - * commands that do not transfer data between the host and the - * controller (e.g., Write Uncorrectable ro Write Zeroes command).". - * In order to be more cautious use controller's max_hw_sectors value - * to configure the maximum sectors for the write-zeroes which is - * configured based on the controller's MDTS field in the - * nvme_init_identify() if available. - */ - if (ns->ctrl->max_hw_sectors == UINT_MAX) - max_blocks = (u64)USHRT_MAX + 1; - else - max_blocks = ns->ctrl->max_hw_sectors + 1; - - blk_queue_max_write_zeroes_sectors(disk->queue, - nvme_lba_to_sect(ns, max_blocks)); + if ((ctrl->oncs & NVME_CTRL_ONCS_WRITE_ZEROES) && + !(ctrl->quirks & NVME_QUIRK_DISABLE_WRITE_ZEROES)) + blk_queue_max_write_zeroes_sectors(q, ctrl->max_hw_sectors); } static int nvme_report_ns_ids(struct nvme_ctrl *ctrl, unsigned int nsid, @@ -1833,6 +1866,50 @@ return 0; } +static int nvme_configure_metadata(struct nvme_ns *ns, struct nvme_id_ns *id) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + + /* + * The PI implementation requires the metadata size to be equal to the + * t10 pi tuple size. + */ + ns->ms = le16_to_cpu(id->lbaf[id->flbas & NVME_NS_FLBAS_LBA_MASK].ms); + if (ns->ms == sizeof(struct t10_pi_tuple)) + ns->pi_type = id->dps & NVME_NS_DPS_PI_MASK; + else + ns->pi_type = 0; + + ns->features &= ~(NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS); + if (!ns->ms || !(ctrl->ops->flags & NVME_F_METADATA_SUPPORTED)) + return 0; + if (ctrl->ops->flags & NVME_F_FABRICS) { + /* + * The NVMe over Fabrics specification only supports metadata as + * part of the extended data LBA. We rely on HCA/HBA support to + * remap the separate metadata buffer from the block layer. + */ + if (WARN_ON_ONCE(!(id->flbas & NVME_NS_FLBAS_META_EXT))) + return -EINVAL; + if (ctrl->max_integrity_segments) + ns->features |= + (NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS); + } else { + /* + * For PCIe controllers, we can't easily remap the separate + * metadata buffer from the block layer and thus require a + * separate metadata buffer for block layer metadata/PI support. + * We allow extended LBAs for the passthrough interface, though. + */ + if (id->flbas & NVME_NS_FLBAS_META_EXT) + ns->features |= NVME_NS_EXT_LBAS; + else + ns->features |= NVME_NS_METADATA_SUPPORTED; + } + + return 0; +} + static void nvme_update_disk_info(struct gendisk *disk, struct nvme_ns *ns, struct nvme_id_ns *id) { @@ -1844,7 +1921,7 @@ /* unsupported block size, set capacity to 0 later */ bs = (1 << 9); } - blk_mq_freeze_queue(disk->queue); + blk_integrity_unregister(disk); atomic_bs = phys_bs = bs; @@ -1903,14 +1980,10 @@ set_capacity_revalidate_and_notify(disk, capacity, false); nvme_config_discard(disk, ns); - nvme_config_write_zeroes(disk, ns); + nvme_config_write_zeroes(disk->queue, ns->ctrl); if (id->nsattr & NVME_NS_ATTR_RO) set_disk_ro(disk, true); - else - set_disk_ro(disk, false); - - blk_mq_unfreeze_queue(disk->queue); } static int __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id) @@ -1918,7 +1991,9 @@ struct nvme_ns *ns = disk->private_data; struct nvme_ctrl *ctrl = ns->ctrl; u32 iob; + int ret; + blk_mq_freeze_queue(ns->disk->queue); /* * If identify namespace failed, use default 512 byte block size so * block layer can use before failing read/write for 0 capacity. @@ -1933,48 +2008,28 @@ else iob = nvme_lba_to_sect(ns, le16_to_cpu(id->noiob)); - ns->features = 0; - ns->ms = le16_to_cpu(id->lbaf[id->flbas & NVME_NS_FLBAS_LBA_MASK].ms); - /* the PI implementation requires metadata equal t10 pi tuple size */ - if (ns->ms == sizeof(struct t10_pi_tuple)) - ns->pi_type = id->dps & NVME_NS_DPS_PI_MASK; - else - ns->pi_type = 0; - - if (ns->ms) { - /* - * For PCIe only the separate metadata pointer is supported, - * as the block layer supplies metadata in a separate bio_vec - * chain. For Fabrics, only metadata as part of extended data - * LBA is supported on the wire per the Fabrics specification, - * but the HBA/HCA will do the remapping from the separate - * metadata buffers for us. - */ - if (id->flbas & NVME_NS_FLBAS_META_EXT) { - ns->features |= NVME_NS_EXT_LBAS; - if ((ctrl->ops->flags & NVME_F_FABRICS) && - (ctrl->ops->flags & NVME_F_METADATA_SUPPORTED) && - ctrl->max_integrity_segments) - ns->features |= NVME_NS_METADATA_SUPPORTED; - } else { - if (WARN_ON_ONCE(ctrl->ops->flags & NVME_F_FABRICS)) - return -EINVAL; - if (ctrl->ops->flags & NVME_F_METADATA_SUPPORTED) - ns->features |= NVME_NS_METADATA_SUPPORTED; - } - } - + ret = nvme_configure_metadata(ns, id); + if (ret) + goto out_unfreeze; if (iob) blk_queue_chunk_sectors(ns->queue, rounddown_pow_of_two(iob)); nvme_update_disk_info(disk, ns, id); + blk_mq_unfreeze_queue(ns->disk->queue); + #ifdef CONFIG_NVME_MULTIPATH if (ns->head->disk) { + blk_mq_freeze_queue(ns->head->disk->queue); nvme_update_disk_info(ns->head->disk, ns, id); blk_queue_stack_limits(ns->head->disk->queue, ns->queue); nvme_mpath_update_disk_size(ns->head->disk); + blk_mq_unfreeze_queue(ns->head->disk->queue); } #endif return 0; + +out_unfreeze: + blk_mq_unfreeze_queue(ns->disk->queue); + return ret; } static int nvme_revalidate_disk(struct gendisk *disk) @@ -2704,6 +2759,11 @@ NULL, }; +static inline bool nvme_discovery_ctrl(struct nvme_ctrl *ctrl) +{ + return ctrl->opts && ctrl->opts->discovery_nqn; +} + static bool nvme_validate_cntlid(struct nvme_subsystem *subsys, struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) { @@ -2723,7 +2783,7 @@ } if ((id->cmic & NVME_CTRL_CMIC_MULTI_CTRL) || - (ctrl->opts && ctrl->opts->discovery_nqn)) + nvme_discovery_ctrl(ctrl)) continue; dev_err(ctrl->device, @@ -2884,7 +2944,7 @@ if (!(ctrl->ops->flags & NVME_F_FABRICS)) ctrl->cntlid = le16_to_cpu(id->cntlid); - if (!ctrl->identified) { + if (!ctrl->identified && !nvme_discovery_ctrl(ctrl)) { int i; ret = nvme_init_subsystem(ctrl, id); @@ -2984,7 +3044,7 @@ goto out_free; } - if (!ctrl->opts->discovery_nqn && !ctrl->kas) { + if (!nvme_discovery_ctrl(ctrl) && !ctrl->kas) { dev_err(ctrl->device, "keep-alive support is mandatory for fabrics\n"); ret = -EINVAL; @@ -3049,10 +3109,26 @@ return -EWOULDBLOCK; } + nvme_get_ctrl(ctrl); + if (!try_module_get(ctrl->ops->module)) { + nvme_put_ctrl(ctrl); + return -EINVAL; + } + file->private_data = ctrl; return 0; } +static int nvme_dev_release(struct inode *inode, struct file *file) +{ + struct nvme_ctrl *ctrl = + container_of(inode->i_cdev, struct nvme_ctrl, cdev); + + module_put(ctrl->ops->module); + nvme_put_ctrl(ctrl); + return 0; +} + static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp) { struct nvme_ns *ns; @@ -3115,6 +3191,7 @@ static const struct file_operations nvme_dev_fops = { .owner = THIS_MODULE, .open = nvme_dev_open, + .release = nvme_dev_release, .unlocked_ioctl = nvme_dev_ioctl, .compat_ioctl = compat_ptr_ioctl, }; @@ -3313,10 +3390,6 @@ { struct nvme_ctrl *ctrl = dev_get_drvdata(dev); - /* Can't delete non-created controllers */ - if (!ctrl->created) - return -EBUSY; - if (device_remove_file_self(dev, attr)) nvme_delete_ctrl_sync(ctrl); return count; @@ -3344,6 +3417,7 @@ [NVME_CTRL_RESETTING] = "resetting", [NVME_CTRL_CONNECTING] = "connecting", [NVME_CTRL_DELETING] = "deleting", + [NVME_CTRL_DELETING_NOIO]= "deleting (no IO)", [NVME_CTRL_DEAD] = "dead", }; @@ -3911,6 +3985,9 @@ if (ctrl->state == NVME_CTRL_DEAD) nvme_kill_queues(ctrl); + /* this is a no-op when called from the controller reset handler */ + nvme_change_ctrl_state(ctrl, NVME_CTRL_DELETING_NOIO); + down_write(&ctrl->namespaces_rwsem); list_splice_init(&ctrl->namespaces, &ns_list); up_write(&ctrl->namespaces_rwsem); @@ -4114,7 +4191,6 @@ nvme_queue_scan(ctrl); nvme_start_queues(ctrl); } - ctrl->created = true; } EXPORT_SYMBOL_GPL(nvme_start_ctrl); @@ -4133,7 +4209,7 @@ container_of(dev, struct nvme_ctrl, ctrl_device); struct nvme_subsystem *subsys = ctrl->subsys; - if (subsys && ctrl->instance != subsys->instance) + if (!subsys || ctrl->instance != subsys->instance) ida_simple_remove(&nvme_instance_ida, ctrl->instance); kfree(ctrl->effects); @@ -4272,7 +4348,7 @@ } EXPORT_SYMBOL_GPL(nvme_unfreeze); -void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) +int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout) { struct nvme_ns *ns; @@ -4283,6 +4359,7 @@ break; } up_read(&ctrl->namespaces_rwsem); + return timeout; } EXPORT_SYMBOL_GPL(nvme_wait_freeze_timeout); @@ -4330,8 +4407,7 @@ } EXPORT_SYMBOL_GPL(nvme_start_queues); - -void nvme_sync_queues(struct nvme_ctrl *ctrl) +void nvme_sync_io_queues(struct nvme_ctrl *ctrl) { struct nvme_ns *ns; @@ -4339,7 +4415,12 @@ list_for_each_entry(ns, &ctrl->namespaces, list) blk_sync_queue(ns->queue); up_read(&ctrl->namespaces_rwsem); +} +EXPORT_SYMBOL_GPL(nvme_sync_io_queues); +void nvme_sync_queues(struct nvme_ctrl *ctrl) +{ + nvme_sync_io_queues(ctrl); if (ctrl->admin_q) blk_sync_queue(ctrl->admin_q); } --- linux-5.8.0.orig/drivers/nvme/host/fabrics.c +++ linux-5.8.0/drivers/nvme/host/fabrics.c @@ -547,7 +547,7 @@ blk_status_t nvmf_fail_nonready_command(struct nvme_ctrl *ctrl, struct request *rq) { - if (ctrl->state != NVME_CTRL_DELETING && + if (ctrl->state != NVME_CTRL_DELETING_NOIO && ctrl->state != NVME_CTRL_DEAD && !blk_noretry_request(rq) && !(rq->cmd_flags & REQ_NVME_MPATH)) return BLK_STS_RESOURCE; @@ -565,10 +565,14 @@ struct nvme_request *req = nvme_req(rq); /* - * If we are in some state of setup or teardown only allow - * internally generated commands. + * currently we have a problem sending passthru commands + * on the admin_q if the controller is not LIVE because we can't + * make sure that they are going out after the admin connect, + * controller enable and/or other commands in the initialization + * sequence. until the controller will be LIVE, fail with + * BLK_STS_RESOURCE so that they will be rescheduled. */ - if (!blk_rq_is_passthrough(rq) || (req->flags & NVME_REQ_USERCMD)) + if (rq->q == ctrl->admin_q && (req->flags & NVME_REQ_USERCMD)) return false; /* @@ -576,9 +580,8 @@ * which is require to set the queue live in the appropinquate states. */ switch (ctrl->state) { - case NVME_CTRL_NEW: case NVME_CTRL_CONNECTING: - if (nvme_is_fabrics(req->cmd) && + if (blk_rq_is_passthrough(rq) && nvme_is_fabrics(req->cmd) && req->cmd->fabrics.fctype == nvme_fabrics_type_connect) return true; break; --- linux-5.8.0.orig/drivers/nvme/host/fabrics.h +++ linux-5.8.0/drivers/nvme/host/fabrics.h @@ -182,7 +182,8 @@ static inline bool nvmf_check_ready(struct nvme_ctrl *ctrl, struct request *rq, bool queue_live) { - if (likely(ctrl->state == NVME_CTRL_LIVE)) + if (likely(ctrl->state == NVME_CTRL_LIVE || + ctrl->state == NVME_CTRL_DELETING)) return true; return __nvmf_check_ready(ctrl, rq, queue_live); } --- linux-5.8.0.orig/drivers/nvme/host/fc.c +++ linux-5.8.0/drivers/nvme/host/fc.c @@ -825,6 +825,7 @@ break; case NVME_CTRL_DELETING: + case NVME_CTRL_DELETING_NOIO: default: /* no action to take - let it delete */ break; @@ -1938,7 +1939,7 @@ sizeof(op->rsp_iu), DMA_FROM_DEVICE); if (opstate == FCPOP_STATE_ABORTED) - status = cpu_to_le16(NVME_SC_HOST_PATH_ERROR << 1); + status = cpu_to_le16(NVME_SC_HOST_ABORTED_CMD << 1); else if (freq->status) { status = cpu_to_le16(NVME_SC_HOST_PATH_ERROR << 1); dev_info(ctrl->ctrl.device, @@ -2075,7 +2076,7 @@ if (fc_dma_mapping_error(ctrl->lport->dev, op->fcp_req.cmddma)) { dev_err(ctrl->dev, "FCP Op failed - cmdiu dma mapping failed.\n"); - ret = EFAULT; + ret = -EFAULT; goto out_on_error; } @@ -2085,7 +2086,7 @@ if (fc_dma_mapping_error(ctrl->lport->dev, op->fcp_req.rspdma)) { dev_err(ctrl->dev, "FCP Op failed - rspiu dma mapping failed.\n"); - ret = EFAULT; + ret = -EFAULT; } atomic_set(&op->state, FCPOP_STATE_IDLE); @@ -2157,6 +2158,7 @@ struct nvme_fc_fcp_op *aen_op; int i; + cancel_work_sync(&ctrl->ctrl.async_event_work); aen_op = ctrl->aen_ops; for (i = 0; i < NVME_NR_AEN_COMMANDS; i++, aen_op++) { __nvme_fc_exit_request(ctrl, aen_op); @@ -2748,6 +2750,7 @@ struct nvme_fc_ctrl *ctrl = to_fc_ctrl(nctrl); struct nvme_fc_fcp_op *op = blk_mq_rq_to_pdu(req); + op->nreq.flags |= NVME_REQ_CANCELLED; __nvme_fc_abort_op(ctrl, op); return true; } @@ -3666,12 +3669,14 @@ spin_lock_irqsave(&nvme_fc_lock, flags); list_for_each_entry(lport, &nvme_fc_lport_list, port_list) { if (lport->localport.node_name != laddr.nn || - lport->localport.port_name != laddr.pn) + lport->localport.port_name != laddr.pn || + lport->localport.port_state != FC_OBJSTATE_ONLINE) continue; list_for_each_entry(rport, &lport->endp_list, endp_list) { if (rport->remoteport.node_name != raddr.nn || - rport->remoteport.port_name != raddr.pn) + rport->remoteport.port_name != raddr.pn || + rport->remoteport.port_state != FC_OBJSTATE_ONLINE) continue; /* if fail to get reference fall through. Will error */ --- linux-5.8.0.orig/drivers/nvme/host/multipath.c +++ linux-5.8.0/drivers/nvme/host/multipath.c @@ -167,9 +167,18 @@ static bool nvme_path_is_disabled(struct nvme_ns *ns) { - return ns->ctrl->state != NVME_CTRL_LIVE || - test_bit(NVME_NS_ANA_PENDING, &ns->flags) || - test_bit(NVME_NS_REMOVING, &ns->flags); + /* + * We don't treat NVME_CTRL_DELETING as a disabled path as I/O should + * still be able to complete assuming that the controller is connected. + * Otherwise it will fail immediately and return to the requeue list. + */ + if (ns->ctrl->state != NVME_CTRL_LIVE && + ns->ctrl->state != NVME_CTRL_DELETING) + return true; + if (test_bit(NVME_NS_ANA_PENDING, &ns->flags) || + test_bit(NVME_NS_REMOVING, &ns->flags)) + return true; + return false; } static struct nvme_ns *__nvme_find_path(struct nvme_ns_head *head, int node) @@ -233,7 +242,7 @@ } for (ns = nvme_next_ns(head, old); - ns != old; + ns && ns != old; ns = nvme_next_ns(head, ns)) { if (nvme_path_is_disabled(ns)) continue; @@ -246,6 +255,17 @@ fallback = ns; } + /* + * The loop above skips the current path for round-robin semantics. + * Fall back to the current path if either: + * - no other optimized path found and current is optimized, + * - no other usable path found and current is usable. + */ + if (!nvme_path_is_disabled(old) && + (old->ana_state == NVME_ANA_OPTIMIZED || + (!fallback && old->ana_state == NVME_ANA_NONOPTIMIZED))) + return old; + if (!fallback) return NULL; found = fallback; @@ -266,10 +286,13 @@ struct nvme_ns *ns; ns = srcu_dereference(head->current_path[node], &head->srcu); - if (READ_ONCE(head->subsys->iopolicy) == NVME_IOPOLICY_RR && ns) - ns = nvme_round_robin_path(head, node, ns); - if (unlikely(!ns || !nvme_path_is_optimized(ns))) - ns = __nvme_find_path(head, node); + if (unlikely(!ns)) + return __nvme_find_path(head, node); + + if (READ_ONCE(head->subsys->iopolicy) == NVME_IOPOLICY_RR) + return nvme_round_robin_path(head, node, ns); + if (unlikely(!nvme_path_is_optimized(ns))) + return __nvme_find_path(head, node); return ns; } @@ -316,7 +339,7 @@ trace_block_bio_remap(bio->bi_disk->queue, bio, disk_devt(ns->head->disk), bio->bi_iter.bi_sector); - ret = direct_make_request(bio); + ret = generic_make_request(bio); } else if (nvme_available_path(head)) { dev_warn_ratelimited(dev, "no usable path - requeuing I/O\n"); @@ -565,6 +588,9 @@ { struct nvme_ctrl *ctrl = container_of(work, struct nvme_ctrl, ana_work); + if (ctrl->state != NVME_CTRL_LIVE) + return; + nvme_read_ana_log(ctrl); } --- linux-5.8.0.orig/drivers/nvme/host/nvme.h +++ linux-5.8.0/drivers/nvme/host/nvme.h @@ -186,6 +186,7 @@ NVME_CTRL_RESETTING, NVME_CTRL_CONNECTING, NVME_CTRL_DELETING, + NVME_CTRL_DELETING_NOIO, NVME_CTRL_DEAD, }; @@ -270,7 +271,6 @@ struct nvme_command ka_cmd; struct work_struct fw_act_work; unsigned long events; - bool created; #ifdef CONFIG_NVME_MULTIPATH /* asymmetric namespace access: */ @@ -510,6 +510,8 @@ void nvme_complete_rq(struct request *req); bool nvme_cancel_request(struct request *req, void *data, bool reserved); +void nvme_cancel_tagset(struct nvme_ctrl *ctrl); +void nvme_cancel_admin_tagset(struct nvme_ctrl *ctrl); bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, enum nvme_ctrl_state new_state); bool nvme_wait_reset(struct nvme_ctrl *ctrl); @@ -535,9 +537,10 @@ void nvme_start_queues(struct nvme_ctrl *ctrl); void nvme_kill_queues(struct nvme_ctrl *ctrl); void nvme_sync_queues(struct nvme_ctrl *ctrl); +void nvme_sync_io_queues(struct nvme_ctrl *ctrl); void nvme_unfreeze(struct nvme_ctrl *ctrl); void nvme_wait_freeze(struct nvme_ctrl *ctrl); -void nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); +int nvme_wait_freeze_timeout(struct nvme_ctrl *ctrl, long timeout); void nvme_start_freeze(struct nvme_ctrl *ctrl); #define NVME_QID_ANY -1 --- linux-5.8.0.orig/drivers/nvme/host/pci.c +++ linux-5.8.0/drivers/nvme/host/pci.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -192,6 +193,7 @@ u16 q_depth; u16 cq_vector; u16 sq_tail; + u16 last_sq_tail; u16 cq_head; u16 qid; u8 cq_phase; @@ -285,9 +287,21 @@ nvmeq->dbbuf_cq_ei = &dev->dbbuf_eis[cq_idx(qid, dev->db_stride)]; } +static void nvme_dbbuf_free(struct nvme_queue *nvmeq) +{ + if (!nvmeq->qid) + return; + + nvmeq->dbbuf_sq_db = NULL; + nvmeq->dbbuf_cq_db = NULL; + nvmeq->dbbuf_sq_ei = NULL; + nvmeq->dbbuf_cq_ei = NULL; +} + static void nvme_dbbuf_set(struct nvme_dev *dev) { struct nvme_command c; + unsigned int i; if (!dev->dbbuf_dbs) return; @@ -301,6 +315,9 @@ dev_warn(dev->ctrl.device, "unable to set dbbuf\n"); /* Free memory and continue on */ nvme_dbbuf_dma_free(dev); + + for (i = 1; i <= dev->online_queues; i++) + nvme_dbbuf_free(&dev->queues[i]); } } @@ -453,11 +470,24 @@ return 0; } -static inline void nvme_write_sq_db(struct nvme_queue *nvmeq) +/* + * Write sq tail if we are asked to, or if the next command would wrap. + */ +static inline void nvme_write_sq_db(struct nvme_queue *nvmeq, bool write_sq) { + if (!write_sq) { + u16 next_tail = nvmeq->sq_tail + 1; + + if (next_tail == nvmeq->q_depth) + next_tail = 0; + if (next_tail != nvmeq->last_sq_tail) + return; + } + if (nvme_dbbuf_update_and_check_event(nvmeq->sq_tail, nvmeq->dbbuf_sq_db, nvmeq->dbbuf_sq_ei)) writel(nvmeq->sq_tail, nvmeq->q_db); + nvmeq->last_sq_tail = nvmeq->sq_tail; } /** @@ -474,8 +504,7 @@ cmd, sizeof(*cmd)); if (++nvmeq->sq_tail == nvmeq->q_depth) nvmeq->sq_tail = 0; - if (write_sq) - nvme_write_sq_db(nvmeq); + nvme_write_sq_db(nvmeq, write_sq); spin_unlock(&nvmeq->sq_lock); } @@ -484,7 +513,8 @@ struct nvme_queue *nvmeq = hctx->driver_data; spin_lock(&nvmeq->sq_lock); - nvme_write_sq_db(nvmeq); + if (nvmeq->sq_tail != nvmeq->last_sq_tail) + nvme_write_sq_db(nvmeq, true); spin_unlock(&nvmeq->sq_lock); } @@ -514,50 +544,71 @@ return true; } -static void nvme_unmap_data(struct nvme_dev *dev, struct request *req) +static void nvme_free_prps(struct nvme_dev *dev, struct request *req) { - struct nvme_iod *iod = blk_mq_rq_to_pdu(req); const int last_prp = dev->ctrl.page_size / sizeof(__le64) - 1; - dma_addr_t dma_addr = iod->first_dma, next_dma_addr; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + dma_addr_t dma_addr = iod->first_dma; int i; - if (iod->dma_len) { - dma_unmap_page(dev->dev, dma_addr, iod->dma_len, - rq_dma_dir(req)); - return; + for (i = 0; i < iod->npages; i++) { + __le64 *prp_list = nvme_pci_iod_list(req)[i]; + dma_addr_t next_dma_addr = le64_to_cpu(prp_list[last_prp]); + + dma_pool_free(dev->prp_page_pool, prp_list, dma_addr); + dma_addr = next_dma_addr; } - WARN_ON_ONCE(!iod->nents); +} - if (is_pci_p2pdma_page(sg_page(iod->sg))) - pci_p2pdma_unmap_sg(dev->dev, iod->sg, iod->nents, - rq_dma_dir(req)); - else - dma_unmap_sg(dev->dev, iod->sg, iod->nents, rq_dma_dir(req)); +static void nvme_free_sgls(struct nvme_dev *dev, struct request *req) +{ + const int last_sg = SGES_PER_PAGE - 1; + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); + dma_addr_t dma_addr = iod->first_dma; + int i; + for (i = 0; i < iod->npages; i++) { + struct nvme_sgl_desc *sg_list = nvme_pci_iod_list(req)[i]; + dma_addr_t next_dma_addr = le64_to_cpu((sg_list[last_sg]).addr); - if (iod->npages == 0) - dma_pool_free(dev->prp_small_pool, nvme_pci_iod_list(req)[0], - dma_addr); + dma_pool_free(dev->prp_page_pool, sg_list, dma_addr); + dma_addr = next_dma_addr; + } - for (i = 0; i < iod->npages; i++) { - void *addr = nvme_pci_iod_list(req)[i]; +} - if (iod->use_sgl) { - struct nvme_sgl_desc *sg_list = addr; +static void nvme_unmap_sg(struct nvme_dev *dev, struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); - next_dma_addr = - le64_to_cpu((sg_list[SGES_PER_PAGE - 1]).addr); - } else { - __le64 *prp_list = addr; + if (is_pci_p2pdma_page(sg_page(iod->sg))) + pci_p2pdma_unmap_sg(dev->dev, iod->sg, iod->nents, + rq_dma_dir(req)); + else + dma_unmap_sg(dev->dev, iod->sg, iod->nents, rq_dma_dir(req)); +} - next_dma_addr = le64_to_cpu(prp_list[last_prp]); - } +static void nvme_unmap_data(struct nvme_dev *dev, struct request *req) +{ + struct nvme_iod *iod = blk_mq_rq_to_pdu(req); - dma_pool_free(dev->prp_page_pool, addr, dma_addr); - dma_addr = next_dma_addr; + if (iod->dma_len) { + dma_unmap_page(dev->dev, iod->first_dma, iod->dma_len, + rq_dma_dir(req)); + return; } + WARN_ON_ONCE(!iod->nents); + + nvme_unmap_sg(dev, req); + if (iod->npages == 0) + dma_pool_free(dev->prp_small_pool, nvme_pci_iod_list(req)[0], + iod->first_dma); + else if (iod->use_sgl) + nvme_free_sgls(dev, req); + else + nvme_free_prps(dev, req); mempool_free(iod->sg, dev->iod_mempool); } @@ -634,7 +685,7 @@ __le64 *old_prp_list = prp_list; prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); if (!prp_list) - return BLK_STS_RESOURCE; + goto free_prps; list[iod->npages++] = prp_list; prp_list[0] = old_prp_list[i - 1]; old_prp_list[i - 1] = cpu_to_le64(prp_dma); @@ -654,14 +705,14 @@ dma_addr = sg_dma_address(sg); dma_len = sg_dma_len(sg); } - done: cmnd->dptr.prp1 = cpu_to_le64(sg_dma_address(iod->sg)); cmnd->dptr.prp2 = cpu_to_le64(iod->first_dma); - return BLK_STS_OK; - - bad_sgl: +free_prps: + nvme_free_prps(dev, req); + return BLK_STS_RESOURCE; +bad_sgl: WARN(DO_ONCE(nvme_print_sgl, iod->sg, iod->nents), "Invalid SGL for payload:%d nents:%d\n", blk_rq_payload_bytes(req), iod->nents); @@ -733,7 +784,7 @@ sg_list = dma_pool_alloc(pool, GFP_ATOMIC, &sgl_dma); if (!sg_list) - return BLK_STS_RESOURCE; + goto free_sgls; i = 0; nvme_pci_iod_list(req)[iod->npages++] = sg_list; @@ -746,6 +797,9 @@ } while (--entries > 0); return BLK_STS_OK; +free_sgls: + nvme_free_sgls(dev, req); + return BLK_STS_RESOURCE; } static blk_status_t nvme_setup_prp_simple(struct nvme_dev *dev, @@ -814,7 +868,7 @@ sg_init_table(iod->sg, blk_rq_nr_phys_segments(req)); iod->nents = blk_rq_map_sg(req->q, req, iod->sg); if (!iod->nents) - goto out; + goto out_free_sg; if (is_pci_p2pdma_page(sg_page(iod->sg))) nr_mapped = pci_p2pdma_map_sg_attrs(dev->dev, iod->sg, @@ -823,16 +877,21 @@ nr_mapped = dma_map_sg_attrs(dev->dev, iod->sg, iod->nents, rq_dma_dir(req), DMA_ATTR_NO_WARN); if (!nr_mapped) - goto out; + goto out_free_sg; iod->use_sgl = nvme_pci_use_sgls(dev, req); if (iod->use_sgl) ret = nvme_pci_setup_sgls(dev, req, &cmnd->rw, nr_mapped); else ret = nvme_pci_setup_prps(dev, req, &cmnd->rw); -out: if (ret != BLK_STS_OK) - nvme_unmap_data(dev, req); + goto out_unmap_sg; + return BLK_STS_OK; + +out_unmap_sg: + nvme_unmap_sg(dev, req); +out_free_sg: + mempool_free(iod->sg, dev->iod_mempool); return ret; } @@ -940,28 +999,29 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx) { struct nvme_completion *cqe = &nvmeq->cqes[idx]; + __u16 command_id = READ_ONCE(cqe->command_id); struct request *req; - if (unlikely(cqe->command_id >= nvmeq->q_depth)) { - dev_warn(nvmeq->dev->ctrl.device, - "invalid id %d completed on queue %d\n", - cqe->command_id, le16_to_cpu(cqe->sq_id)); - return; - } - /* * AEN requests are special as they don't time out and can * survive any kind of queue freeze and often don't respond to * aborts. We don't even bother to allocate a struct request * for them but rather special case them here. */ - if (unlikely(nvme_is_aen_req(nvmeq->qid, cqe->command_id))) { + if (unlikely(nvme_is_aen_req(nvmeq->qid, command_id))) { nvme_complete_async_event(&nvmeq->dev->ctrl, cqe->status, &cqe->result); return; } - req = blk_mq_tag_to_rq(nvme_queue_tagset(nvmeq), cqe->command_id); + req = blk_mq_tag_to_rq(nvme_queue_tagset(nvmeq), command_id); + if (unlikely(!req)) { + dev_warn(nvmeq->dev->ctrl.device, + "invalid id %d completed on queue %d\n", + command_id, le16_to_cpu(cqe->sq_id)); + return; + } + trace_nvme_sq(req, cqe->sq_head, nvmeq->sq_tail); nvme_end_request(req, cqe->status, cqe->result); } @@ -1250,8 +1310,8 @@ dev_warn_ratelimited(dev->ctrl.device, "I/O %d QID %d timeout, disable controller\n", req->tag, nvmeq->qid); - nvme_dev_disable(dev, true); nvme_req(req)->flags |= NVME_REQ_CANCELLED; + nvme_dev_disable(dev, true); return BLK_EH_DONE; case NVME_CTRL_RESETTING: return BLK_EH_RESET_TIMER; @@ -1268,10 +1328,10 @@ dev_warn(dev->ctrl.device, "I/O %d QID %d timeout, reset controller\n", req->tag, nvmeq->qid); + nvme_req(req)->flags |= NVME_REQ_CANCELLED; nvme_dev_disable(dev, false); nvme_reset_ctrl(&dev->ctrl); - nvme_req(req)->flags |= NVME_REQ_CANCELLED; return BLK_EH_DONE; } @@ -1496,6 +1556,7 @@ struct nvme_dev *dev = nvmeq->dev; nvmeq->sq_tail = 0; + nvmeq->last_sq_tail = 0; nvmeq->cq_head = 0; nvmeq->cq_phase = 1; nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride]; @@ -1765,6 +1826,9 @@ if (dev->cmb_size) return; + if (NVME_CAP_CMBS(dev->ctrl.cap)) + writel(NVME_CMBMSC_CRE, dev->bar + NVME_REG_CMBMSC); + dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ); if (!dev->cmbsz) return; @@ -1779,6 +1843,16 @@ return; /* + * Tell the controller about the host side address mapping the CMB, + * and enable CMB decoding for the NVMe 1.4+ scheme: + */ + if (NVME_CAP_CMBS(dev->ctrl.cap)) { + hi_lo_writeq(NVME_CMBMSC_CRE | NVME_CMBMSC_CMSE | + (pci_bus_address(pdev, bar) + offset), + dev->bar + NVME_REG_CMBMSC); + } + + /* * Controllers may support a CMB size larger than their BAR, * for example, due to being behind a bridge. Reduce the CMB to * the reported size of the BAR @@ -3093,7 +3167,8 @@ { PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS | NVME_QUIRK_MEDIUM_PRIO_SQ | - NVME_QUIRK_NO_TEMP_THRESH_CHANGE }, + NVME_QUIRK_NO_TEMP_THRESH_CHANGE | + NVME_QUIRK_DISABLE_WRITE_ZEROES, }, { PCI_VDEVICE(INTEL, 0xf1a6), /* Intel 760p/Pro 7600p */ .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */ @@ -3102,7 +3177,8 @@ { PCI_DEVICE(0x126f, 0x2263), /* Silicon Motion unidentified */ .driver_data = NVME_QUIRK_NO_NS_DESC_LIST, }, { PCI_DEVICE(0x1bb1, 0x0100), /* Seagate Nytro Flash Storage */ - .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, + .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY | + NVME_QUIRK_NO_NS_DESC_LIST, }, { PCI_DEVICE(0x1c58, 0x0003), /* HGST adapter */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x1c58, 0x0023), /* WDC SN200 adapter */ @@ -3112,7 +3188,14 @@ { PCI_DEVICE(0x144d, 0xa821), /* Samsung PM1725 */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x144d, 0xa822), /* Samsung PM1725a */ - .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, + .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY | + NVME_QUIRK_DISABLE_WRITE_ZEROES| + NVME_QUIRK_IGNORE_DEV_SUBNQN, }, + { PCI_DEVICE(0x1987, 0x5016), /* Phison E16 */ + .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, }, + { PCI_DEVICE(0x1b4b, 0x1092), /* Lexar 256 GB SSD */ + .driver_data = NVME_QUIRK_NO_NS_DESC_LIST | + NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x1d1d, 0x1f1f), /* LighNVM qemu device */ .driver_data = NVME_QUIRK_LIGHTNVM, }, { PCI_DEVICE(0x1d1d, 0x2807), /* CNEX WL */ @@ -3127,6 +3210,10 @@ { PCI_DEVICE(0x1c5c, 0x1504), /* SK Hynix PC400 */ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) }, + { PCI_DEVICE(0x2646, 0x2262), /* KINGSTON SKC2000 NVMe SSD */ + .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, + { PCI_DEVICE(0x2646, 0x2263), /* KINGSTON A2000 NVMe SSD */ + .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001), .driver_data = NVME_QUIRK_SINGLE_VECTOR }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) }, --- linux-5.8.0.orig/drivers/nvme/host/rdma.c +++ linux-5.8.0/drivers/nvme/host/rdma.c @@ -96,6 +96,7 @@ int cm_error; struct completion cm_done; bool pi_support; + struct mutex queue_lock; }; struct nvme_rdma_ctrl { @@ -553,6 +554,7 @@ int ret; queue = &ctrl->queues[idx]; + mutex_init(&queue->queue_lock); queue->ctrl = ctrl; if (idx && ctrl->ctrl.max_integrity_segments) queue->pi_support = true; @@ -572,7 +574,8 @@ if (IS_ERR(queue->cm_id)) { dev_info(ctrl->ctrl.device, "failed to create CM ID: %ld\n", PTR_ERR(queue->cm_id)); - return PTR_ERR(queue->cm_id); + ret = PTR_ERR(queue->cm_id); + goto out_destroy_mutex; } if (ctrl->ctrl.opts->mask & NVMF_OPT_HOST_TRADDR) @@ -602,6 +605,8 @@ out_destroy_cm_id: rdma_destroy_id(queue->cm_id); nvme_rdma_destroy_queue_ib(queue); +out_destroy_mutex: + mutex_destroy(&queue->queue_lock); return ret; } @@ -613,9 +618,10 @@ static void nvme_rdma_stop_queue(struct nvme_rdma_queue *queue) { - if (!test_and_clear_bit(NVME_RDMA_Q_LIVE, &queue->flags)) - return; - __nvme_rdma_stop_queue(queue); + mutex_lock(&queue->queue_lock); + if (test_and_clear_bit(NVME_RDMA_Q_LIVE, &queue->flags)) + __nvme_rdma_stop_queue(queue); + mutex_unlock(&queue->queue_lock); } static void nvme_rdma_free_queue(struct nvme_rdma_queue *queue) @@ -625,6 +631,7 @@ nvme_rdma_destroy_queue_ib(queue); rdma_destroy_id(queue->cm_id); + mutex_destroy(&queue->queue_lock); } static void nvme_rdma_free_io_queues(struct nvme_rdma_ctrl *ctrl) @@ -703,8 +710,11 @@ return ret; ctrl->ctrl.queue_count = nr_io_queues + 1; - if (ctrl->ctrl.queue_count < 2) - return 0; + if (ctrl->ctrl.queue_count < 2) { + dev_err(ctrl->ctrl.device, + "unable to set any I/O queues\n"); + return -ENOMEM; + } dev_info(ctrl->ctrl.device, "creating %d I/O queues.\n", nr_io_queues); @@ -808,6 +818,7 @@ blk_mq_free_tag_set(ctrl->ctrl.admin_tagset); } if (ctrl->async_event_sqe.data) { + cancel_work_sync(&ctrl->ctrl.async_event_work); nvme_rdma_free_qe(ctrl->device->dev, &ctrl->async_event_sqe, sizeof(struct nvme_command), DMA_TO_DEVICE); ctrl->async_event_sqe.data = NULL; @@ -826,7 +837,7 @@ return error; ctrl->device = ctrl->queues[0].device; - ctrl->ctrl.numa_node = dev_to_node(ctrl->device->dev->dma_device); + ctrl->ctrl.numa_node = ibdev_to_node(ctrl->device->dev); /* T10-PI support */ if (ctrl->device->dev->attrs.device_cap_flags & @@ -885,12 +896,16 @@ error = nvme_init_identify(&ctrl->ctrl); if (error) - goto out_stop_queue; + goto out_quiesce_queue; return 0; +out_quiesce_queue: + blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); out_stop_queue: nvme_rdma_stop_queue(&ctrl->queues[0]); + nvme_cancel_admin_tagset(&ctrl->ctrl); out_cleanup_queue: if (new) blk_cleanup_queue(ctrl->ctrl.admin_q); @@ -941,18 +956,36 @@ ret = PTR_ERR(ctrl->ctrl.connect_q); goto out_free_tag_set; } - } else { - blk_mq_update_nr_hw_queues(&ctrl->tag_set, - ctrl->ctrl.queue_count - 1); } ret = nvme_rdma_start_io_queues(ctrl); if (ret) goto out_cleanup_connect_q; + if (!new) { + nvme_start_queues(&ctrl->ctrl); + if (!nvme_wait_freeze_timeout(&ctrl->ctrl, NVME_IO_TIMEOUT)) { + /* + * If we timed out waiting for freeze we are likely to + * be stuck. Fail the controller initialization just + * to be safe. + */ + ret = -ENODEV; + goto out_wait_freeze_timed_out; + } + blk_mq_update_nr_hw_queues(ctrl->ctrl.tagset, + ctrl->ctrl.queue_count - 1); + nvme_unfreeze(&ctrl->ctrl); + } + return 0; +out_wait_freeze_timed_out: + nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); + nvme_rdma_stop_io_queues(ctrl); out_cleanup_connect_q: + nvme_cancel_tagset(&ctrl->ctrl); if (new) blk_cleanup_queue(ctrl->ctrl.connect_q); out_free_tag_set: @@ -967,6 +1000,7 @@ bool remove) { blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); nvme_rdma_stop_queue(&ctrl->queues[0]); if (ctrl->ctrl.admin_tagset) { blk_mq_tagset_busy_iter(ctrl->ctrl.admin_tagset, @@ -982,7 +1016,9 @@ bool remove) { if (ctrl->ctrl.queue_count > 1) { + nvme_start_freeze(&ctrl->ctrl); nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); nvme_rdma_stop_io_queues(ctrl); if (ctrl->ctrl.tagset) { blk_mq_tagset_busy_iter(ctrl->ctrl.tagset, @@ -1076,11 +1112,12 @@ changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_LIVE); if (!changed) { /* - * state change failure is ok if we're in DELETING state, + * state change failure is ok if we started ctrl delete, * unless we're during creation of a new controller to * avoid races with teardown flow. */ - WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING); + WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING && + ctrl->ctrl.state != NVME_CTRL_DELETING_NOIO); WARN_ON_ONCE(new); ret = -EINVAL; goto destroy_io; @@ -1090,10 +1127,18 @@ return 0; destroy_io: - if (ctrl->ctrl.queue_count > 1) + if (ctrl->ctrl.queue_count > 1) { + nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); + nvme_rdma_stop_io_queues(ctrl); + nvme_cancel_tagset(&ctrl->ctrl); nvme_rdma_destroy_io_queues(ctrl, new); + } destroy_admin: + blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); nvme_rdma_stop_queue(&ctrl->queues[0]); + nvme_cancel_admin_tagset(&ctrl->ctrl); nvme_rdma_destroy_admin_queue(ctrl, new); return ret; } @@ -1133,8 +1178,9 @@ blk_mq_unquiesce_queue(ctrl->ctrl.admin_q); if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) { - /* state change failure is ok if we're in DELETING state */ - WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING); + /* state change failure is ok if we started ctrl delete */ + WARN_ON_ONCE(ctrl->ctrl.state != NVME_CTRL_DELETING && + ctrl->ctrl.state != NVME_CTRL_DELETING_NOIO); return; } @@ -1146,6 +1192,7 @@ if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_RESETTING)) return; + dev_warn(ctrl->ctrl.device, "starting error recovery\n"); queue_work(nvme_reset_wq, &ctrl->err_work); } @@ -1715,6 +1762,14 @@ return; } + /* sanity checking for received data length */ + if (unlikely(wc->byte_len < len)) { + dev_err(queue->ctrl->ctrl.device, + "Unexpected nvme completion length(%d)\n", wc->byte_len); + nvme_rdma_error_recovery(queue->ctrl); + return; + } + ib_dma_sync_single_for_cpu(ibdev, qe->dma, len, DMA_FROM_DEVICE); /* * AEN requests are special as they don't time out and can @@ -1874,7 +1929,6 @@ complete(&queue->cm_done); return 0; case RDMA_CM_EVENT_REJECTED: - nvme_rdma_destroy_queue_ib(queue); cm_error = nvme_rdma_conn_rejected(queue, ev); break; case RDMA_CM_EVENT_ROUTE_ERROR: @@ -1912,6 +1966,18 @@ return 0; } +static void nvme_rdma_complete_timed_out(struct request *rq) +{ + struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq); + struct nvme_rdma_queue *queue = req->queue; + + nvme_rdma_stop_queue(queue); + if (blk_mq_request_started(rq) && !blk_mq_request_completed(rq)) { + nvme_req(rq)->status = NVME_SC_HOST_ABORTED_CMD; + blk_mq_complete_request(rq); + } +} + static enum blk_eh_timer_return nvme_rdma_timeout(struct request *rq, bool reserved) { @@ -1922,29 +1988,29 @@ dev_warn(ctrl->ctrl.device, "I/O %d QID %d timeout\n", rq->tag, nvme_rdma_queue_idx(queue)); - /* - * Restart the timer if a controller reset is already scheduled. Any - * timed out commands would be handled before entering the connecting - * state. - */ - if (ctrl->ctrl.state == NVME_CTRL_RESETTING) - return BLK_EH_RESET_TIMER; - if (ctrl->ctrl.state != NVME_CTRL_LIVE) { /* - * Teardown immediately if controller times out while starting - * or we are already started error recovery. all outstanding - * requests are completed on shutdown, so we return BLK_EH_DONE. + * If we are resetting, connecting or deleting we should + * complete immediately because we may block controller + * teardown or setup sequence + * - ctrl disable/shutdown fabrics requests + * - connect requests + * - initialization admin requests + * - I/O requests that entered after unquiescing and + * the controller stopped responding + * + * All other requests should be cancelled by the error + * recovery work, so it's fine that we fail it here. */ - flush_work(&ctrl->err_work); - nvme_rdma_teardown_io_queues(ctrl, false); - nvme_rdma_teardown_admin_queue(ctrl, false); + nvme_rdma_complete_timed_out(rq); return BLK_EH_DONE; } - dev_warn(ctrl->ctrl.device, "starting error recovery\n"); + /* + * LIVE state should trigger the normal error recovery which will + * handle completing this request. + */ nvme_rdma_error_recovery(ctrl); - return BLK_EH_RESET_TIMER; } --- linux-5.8.0.orig/drivers/nvme/host/tcp.c +++ linux-5.8.0/drivers/nvme/host/tcp.c @@ -76,6 +76,7 @@ int io_cpu; spinlock_t lock; + struct mutex queue_lock; struct mutex send_mutex; struct list_head send_list; @@ -199,7 +200,7 @@ static inline size_t nvme_tcp_req_cur_length(struct nvme_tcp_request *req) { - return min_t(size_t, req->iter.bvec->bv_len - req->iter.iov_offset, + return min_t(size_t, iov_iter_single_seg_count(&req->iter), req->pdu_len - req->pdu_sent); } @@ -260,6 +261,16 @@ } } +static inline void nvme_tcp_send_all(struct nvme_tcp_queue *queue) +{ + int ret; + + /* drain the send queue as much as we can... */ + do { + ret = nvme_tcp_try_send(queue); + } while (ret > 0); +} + static inline void nvme_tcp_queue_request(struct nvme_tcp_request *req, bool sync) { @@ -276,9 +287,9 @@ * directly, otherwise queue io_work. Also, only do that if we * are on the same cpu, so we don't introduce contention. */ - if (queue->io_cpu == smp_processor_id() && + if (queue->io_cpu == raw_smp_processor_id() && sync && empty && mutex_trylock(&queue->send_mutex)) { - nvme_tcp_try_send(queue); + nvme_tcp_send_all(queue); mutex_unlock(&queue->send_mutex); } else { queue_work_on(queue->io_cpu, nvme_tcp_wq, &queue->io_work); @@ -447,6 +458,7 @@ if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_RESETTING)) return; + dev_warn(ctrl->device, "starting error recovery\n"); queue_work(nvme_reset_wq, &to_tcp_ctrl(ctrl)->err_work); } @@ -538,6 +550,13 @@ req->pdu_len = le32_to_cpu(pdu->r2t_length); req->pdu_sent = 0; + if (unlikely(!req->pdu_len)) { + dev_err(queue->ctrl->ctrl.device, + "req %d r2t len is %u, probably a bug...\n", + rq->tag, req->pdu_len); + return -EPROTO; + } + if (unlikely(req->data_sent + req->pdu_len > req->data_len)) { dev_err(queue->ctrl->ctrl.device, "req %d r2t len %u exceeded data len %u (%zu sent)\n", @@ -887,12 +906,11 @@ else flags |= MSG_MORE | MSG_SENDPAGE_NOTLAST; - /* can't zcopy slab pages */ - if (unlikely(PageSlab(page))) { - ret = sock_no_sendpage(queue->sock, page, offset, len, + if (sendpage_ok(page)) { + ret = kernel_sendpage(queue->sock, page, offset, len, flags); } else { - ret = kernel_sendpage(queue->sock, page, offset, len, + ret = sock_no_sendpage(queue->sock, page, offset, len, flags); } if (ret <= 0) @@ -1180,6 +1198,7 @@ sock_release(queue->sock); kfree(queue->pdu); + mutex_destroy(&queue->queue_lock); } static int nvme_tcp_init_connection(struct nvme_tcp_queue *queue) @@ -1341,6 +1360,7 @@ struct nvme_tcp_queue *queue = &ctrl->queues[qid]; int ret, rcv_pdu_size; + mutex_init(&queue->queue_lock); queue->ctrl = ctrl; INIT_LIST_HEAD(&queue->send_list); spin_lock_init(&queue->lock); @@ -1359,7 +1379,7 @@ if (ret) { dev_err(nctrl->device, "failed to create socket: %d\n", ret); - return ret; + goto err_destroy_mutex; } /* Single syn retry */ @@ -1468,6 +1488,8 @@ err_sock: sock_release(queue->sock); queue->sock = NULL; +err_destroy_mutex: + mutex_destroy(&queue->queue_lock); return ret; } @@ -1495,10 +1517,10 @@ struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl); struct nvme_tcp_queue *queue = &ctrl->queues[qid]; - if (!test_and_clear_bit(NVME_TCP_Q_LIVE, &queue->flags)) - return; - - __nvme_tcp_stop_queue(queue); + mutex_lock(&queue->queue_lock); + if (test_and_clear_bit(NVME_TCP_Q_LIVE, &queue->flags)) + __nvme_tcp_stop_queue(queue); + mutex_unlock(&queue->queue_lock); } static int nvme_tcp_start_queue(struct nvme_ctrl *nctrl, int idx) @@ -1566,6 +1588,7 @@ static void nvme_tcp_free_admin_queue(struct nvme_ctrl *ctrl) { if (to_tcp_ctrl(ctrl)->async_req.pdu) { + cancel_work_sync(&ctrl->async_event_work); nvme_tcp_free_async_req(to_tcp_ctrl(ctrl)); to_tcp_ctrl(ctrl)->async_req.pdu = NULL; } @@ -1703,8 +1726,11 @@ return ret; ctrl->queue_count = nr_io_queues + 1; - if (ctrl->queue_count < 2) - return 0; + if (ctrl->queue_count < 2) { + dev_err(ctrl->device, + "unable to set any I/O queues\n"); + return -ENOMEM; + } dev_info(ctrl->device, "creating %d I/O queues.\n", nr_io_queues); @@ -1744,18 +1770,36 @@ ret = PTR_ERR(ctrl->connect_q); goto out_free_tag_set; } - } else { - blk_mq_update_nr_hw_queues(ctrl->tagset, - ctrl->queue_count - 1); } ret = nvme_tcp_start_io_queues(ctrl); if (ret) goto out_cleanup_connect_q; + if (!new) { + nvme_start_queues(ctrl); + if (!nvme_wait_freeze_timeout(ctrl, NVME_IO_TIMEOUT)) { + /* + * If we timed out waiting for freeze we are likely to + * be stuck. Fail the controller initialization just + * to be safe. + */ + ret = -ENODEV; + goto out_wait_freeze_timed_out; + } + blk_mq_update_nr_hw_queues(ctrl->tagset, + ctrl->queue_count - 1); + nvme_unfreeze(ctrl); + } + return 0; +out_wait_freeze_timed_out: + nvme_stop_queues(ctrl); + nvme_sync_io_queues(ctrl); + nvme_tcp_stop_io_queues(ctrl); out_cleanup_connect_q: + nvme_cancel_tagset(ctrl); if (new) blk_cleanup_queue(ctrl->connect_q); out_free_tag_set: @@ -1817,12 +1861,16 @@ error = nvme_init_identify(ctrl); if (error) - goto out_stop_queue; + goto out_quiesce_queue; return 0; +out_quiesce_queue: + blk_mq_quiesce_queue(ctrl->admin_q); + blk_sync_queue(ctrl->admin_q); out_stop_queue: nvme_tcp_stop_queue(ctrl, 0); + nvme_cancel_admin_tagset(ctrl); out_cleanup_queue: if (new) blk_cleanup_queue(ctrl->admin_q); @@ -1841,6 +1889,7 @@ bool remove) { blk_mq_quiesce_queue(ctrl->admin_q); + blk_sync_queue(ctrl->admin_q); nvme_tcp_stop_queue(ctrl, 0); if (ctrl->admin_tagset) { blk_mq_tagset_busy_iter(ctrl->admin_tagset, @@ -1857,7 +1906,10 @@ { if (ctrl->queue_count <= 1) return; + blk_mq_quiesce_queue(ctrl->admin_q); + nvme_start_freeze(ctrl); nvme_stop_queues(ctrl); + nvme_sync_io_queues(ctrl); nvme_tcp_stop_io_queues(ctrl); if (ctrl->tagset) { blk_mq_tagset_busy_iter(ctrl->tagset, @@ -1923,11 +1975,12 @@ if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_LIVE)) { /* - * state change failure is ok if we're in DELETING state, + * state change failure is ok if we started ctrl delete, * unless we're during creation of a new controller to * avoid races with teardown flow. */ - WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING); + WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING && + ctrl->state != NVME_CTRL_DELETING_NOIO); WARN_ON_ONCE(new); ret = -EINVAL; goto destroy_io; @@ -1937,10 +1990,18 @@ return 0; destroy_io: - if (ctrl->queue_count > 1) + if (ctrl->queue_count > 1) { + nvme_stop_queues(ctrl); + nvme_sync_io_queues(ctrl); + nvme_tcp_stop_io_queues(ctrl); + nvme_cancel_tagset(ctrl); nvme_tcp_destroy_io_queues(ctrl, new); + } destroy_admin: + blk_mq_quiesce_queue(ctrl->admin_q); + blk_sync_queue(ctrl->admin_q); nvme_tcp_stop_queue(ctrl, 0); + nvme_cancel_admin_tagset(ctrl); nvme_tcp_destroy_admin_queue(ctrl, new); return ret; } @@ -1983,8 +2044,9 @@ blk_mq_unquiesce_queue(ctrl->admin_q); if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING)) { - /* state change failure is ok if we're in DELETING state */ - WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING); + /* state change failure is ok if we started ctrl delete */ + WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING && + ctrl->state != NVME_CTRL_DELETING_NOIO); return; } @@ -2019,8 +2081,9 @@ nvme_tcp_teardown_ctrl(ctrl, false); if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING)) { - /* state change failure is ok if we're in DELETING state */ - WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING); + /* state change failure is ok if we started ctrl delete */ + WARN_ON_ONCE(ctrl->state != NVME_CTRL_DELETING && + ctrl->state != NVME_CTRL_DELETING_NOIO); return; } @@ -2110,40 +2173,52 @@ nvme_tcp_queue_request(&ctrl->async_req, true); } +static void nvme_tcp_complete_timed_out(struct request *rq) +{ + struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq); + struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl; + + nvme_tcp_stop_queue(ctrl, nvme_tcp_queue_id(req->queue)); + if (blk_mq_request_started(rq) && !blk_mq_request_completed(rq)) { + nvme_req(rq)->status = NVME_SC_HOST_ABORTED_CMD; + blk_mq_complete_request(rq); + } +} + static enum blk_eh_timer_return nvme_tcp_timeout(struct request *rq, bool reserved) { struct nvme_tcp_request *req = blk_mq_rq_to_pdu(rq); - struct nvme_tcp_ctrl *ctrl = req->queue->ctrl; + struct nvme_ctrl *ctrl = &req->queue->ctrl->ctrl; struct nvme_tcp_cmd_pdu *pdu = req->pdu; - /* - * Restart the timer if a controller reset is already scheduled. Any - * timed out commands would be handled before entering the connecting - * state. - */ - if (ctrl->ctrl.state == NVME_CTRL_RESETTING) - return BLK_EH_RESET_TIMER; - - dev_warn(ctrl->ctrl.device, + dev_warn(ctrl->device, "queue %d: timeout request %#x type %d\n", nvme_tcp_queue_id(req->queue), rq->tag, pdu->hdr.type); - if (ctrl->ctrl.state != NVME_CTRL_LIVE) { + if (ctrl->state != NVME_CTRL_LIVE) { /* - * Teardown immediately if controller times out while starting - * or we are already started error recovery. all outstanding - * requests are completed on shutdown, so we return BLK_EH_DONE. + * If we are resetting, connecting or deleting we should + * complete immediately because we may block controller + * teardown or setup sequence + * - ctrl disable/shutdown fabrics requests + * - connect requests + * - initialization admin requests + * - I/O requests that entered after unquiescing and + * the controller stopped responding + * + * All other requests should be cancelled by the error + * recovery work, so it's fine that we fail it here. */ - flush_work(&ctrl->err_work); - nvme_tcp_teardown_io_queues(&ctrl->ctrl, false); - nvme_tcp_teardown_admin_queue(&ctrl->ctrl, false); + nvme_tcp_complete_timed_out(rq); return BLK_EH_DONE; } - dev_warn(ctrl->ctrl.device, "starting error recovery\n"); - nvme_tcp_error_recovery(&ctrl->ctrl); - + /* + * LIVE state should trigger the normal error recovery which will + * handle completing this request. + */ + nvme_tcp_error_recovery(ctrl); return BLK_EH_RESET_TIMER; } --- linux-5.8.0.orig/drivers/nvme/target/admin-cmd.c +++ linux-5.8.0/drivers/nvme/target/admin-cmd.c @@ -473,7 +473,6 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req) { struct nvmet_ctrl *ctrl = req->sq->ctrl; - struct nvmet_ns *ns; struct nvme_id_ns *id; u16 status = 0; @@ -490,18 +489,21 @@ } /* return an all zeroed buffer if we can't find an active namespace */ - ns = nvmet_find_namespace(ctrl, req->cmd->identify.nsid); - if (!ns) + req->ns = nvmet_find_namespace(ctrl, req->cmd->identify.nsid); + if (!req->ns) { + status = 0; goto done; + } - nvmet_ns_revalidate(ns); + nvmet_ns_revalidate(req->ns); /* * nuse = ncap = nsze isn't always true, but we have no way to find * that out from the underlying device. */ - id->ncap = id->nsze = cpu_to_le64(ns->size >> ns->blksize_shift); - switch (req->port->ana_state[ns->anagrpid]) { + id->ncap = id->nsze = + cpu_to_le64(req->ns->size >> req->ns->blksize_shift); + switch (req->port->ana_state[req->ns->anagrpid]) { case NVME_ANA_INACCESSIBLE: case NVME_ANA_PERSISTENT_LOSS: break; @@ -510,8 +512,8 @@ break; } - if (ns->bdev) - nvmet_bdev_set_limits(ns->bdev, id); + if (req->ns->bdev) + nvmet_bdev_set_limits(req->ns->bdev, id); /* * We just provide a single LBA format that matches what the @@ -525,27 +527,28 @@ * controllers, but also with any other user of the block device. */ id->nmic = (1 << 0); - id->anagrpid = cpu_to_le32(ns->anagrpid); + id->anagrpid = cpu_to_le32(req->ns->anagrpid); - memcpy(&id->nguid, &ns->nguid, sizeof(id->nguid)); + memcpy(&id->nguid, &req->ns->nguid, sizeof(id->nguid)); - id->lbaf[0].ds = ns->blksize_shift; + id->lbaf[0].ds = req->ns->blksize_shift; - if (ctrl->pi_support && nvmet_ns_has_pi(ns)) { + if (ctrl->pi_support && nvmet_ns_has_pi(req->ns)) { id->dpc = NVME_NS_DPC_PI_FIRST | NVME_NS_DPC_PI_LAST | NVME_NS_DPC_PI_TYPE1 | NVME_NS_DPC_PI_TYPE2 | NVME_NS_DPC_PI_TYPE3; id->mc = NVME_MC_EXTENDED_LBA; - id->dps = ns->pi_type; + id->dps = req->ns->pi_type; id->flbas = NVME_NS_FLBAS_META_EXT; - id->lbaf[0].ms = cpu_to_le16(ns->metadata_size); + id->lbaf[0].ms = cpu_to_le16(req->ns->metadata_size); } - if (ns->readonly) + if (req->ns->readonly) id->nsattr |= (1 << 0); - nvmet_put_namespace(ns); done: - status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id)); + if (!status) + status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id)); + kfree(id); out: nvmet_req_complete(req, status); --- linux-5.8.0.orig/drivers/nvme/target/configfs.c +++ linux-5.8.0/drivers/nvme/target/configfs.c @@ -1035,6 +1035,7 @@ up_write(&nvmet_config_sem); kfree_rcu(new_model, rcuhead); + kfree(new_model_number); return count; } --- linux-5.8.0.orig/drivers/nvme/target/core.c +++ linux-5.8.0/drivers/nvme/target/core.c @@ -396,6 +396,9 @@ static void nvmet_start_keep_alive_timer(struct nvmet_ctrl *ctrl) { + if (unlikely(ctrl->kato == 0)) + return; + pr_debug("ctrl %d start keep-alive timer for %d secs\n", ctrl->cntlid, ctrl->kato); @@ -405,6 +408,9 @@ static void nvmet_stop_keep_alive_timer(struct nvmet_ctrl *ctrl) { + if (unlikely(ctrl->kato == 0)) + return; + pr_debug("ctrl %d stop keep-alive\n", ctrl->cntlid); cancel_delayed_work_sync(&ctrl->ka_work); @@ -917,8 +923,6 @@ req->error_loc = NVMET_NO_ERROR_LOC; req->error_slba = 0; - trace_nvmet_req_init(req, req->cmd); - /* no support for fused commands yet */ if (unlikely(flags & (NVME_CMD_FUSE_FIRST | NVME_CMD_FUSE_SECOND))) { req->error_loc = offsetof(struct nvme_common_command, flags); @@ -948,6 +952,8 @@ if (status) goto fail; + trace_nvmet_req_init(req, req->cmd); + if (unlikely(!percpu_ref_tryget_live(&sq->ref))) { status = NVME_SC_INVALID_FIELD | NVME_SC_DNR; goto fail; @@ -1119,9 +1125,20 @@ { lockdep_assert_held(&ctrl->lock); - if (nvmet_cc_iosqes(ctrl->cc) != NVME_NVM_IOSQES || - nvmet_cc_iocqes(ctrl->cc) != NVME_NVM_IOCQES || - nvmet_cc_mps(ctrl->cc) != 0 || + /* + * Only I/O controllers should verify iosqes,iocqes. + * Strictly speaking, the spec says a discovery controller + * should verify iosqes,iocqes are zeroed, however that + * would break backwards compatibility, so don't enforce it. + */ + if (ctrl->subsys->type != NVME_NQN_DISC && + (nvmet_cc_iosqes(ctrl->cc) != NVME_NVM_IOSQES || + nvmet_cc_iocqes(ctrl->cc) != NVME_NVM_IOCQES)) { + ctrl->csts = NVME_CSTS_CFS; + return; + } + + if (nvmet_cc_mps(ctrl->cc) != 0 || nvmet_cc_ams(ctrl->cc) != 0 || nvmet_cc_css(ctrl->cc) != 0) { ctrl->csts = NVME_CSTS_CFS; @@ -1136,7 +1153,8 @@ * in case a host died before it enabled the controller. Hence, simply * reset the keep alive timer when the controller is enabled. */ - mod_delayed_work(system_wq, &ctrl->ka_work, ctrl->kato * HZ); + if (ctrl->kato) + mod_delayed_work(system_wq, &ctrl->ka_work, ctrl->kato * HZ); } static void nvmet_clear_ctrl(struct nvmet_ctrl *ctrl) --- linux-5.8.0.orig/drivers/nvme/target/fc.c +++ linux-5.8.0/drivers/nvme/target/fc.c @@ -2362,9 +2362,9 @@ return; if (fcpreq->fcp_error || fcpreq->transferred_length != fcpreq->transfer_length) { - spin_lock(&fod->flock); + spin_lock_irqsave(&fod->flock, flags); fod->abort = true; - spin_unlock(&fod->flock); + spin_unlock_irqrestore(&fod->flock, flags); nvmet_req_complete(&fod->req, NVME_SC_INTERNAL); return; --- linux-5.8.0.orig/drivers/nvme/target/loop.c +++ linux-5.8.0/drivers/nvme/target/loop.c @@ -583,6 +583,9 @@ if (ret) goto out_put_ctrl; + changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING); + WARN_ON_ONCE(!changed); + ret = -ENOMEM; ctrl->ctrl.sqsize = opts->queue_size - 1; --- linux-5.8.0.orig/drivers/nvme/target/rdma.c +++ linux-5.8.0/drivers/nvme/target/rdma.c @@ -801,9 +801,8 @@ nvmet_req_uninit(&rsp->req); nvmet_rdma_release_rsp(rsp); if (wc->status != IB_WC_WR_FLUSH_ERR) { - pr_info("RDMA WRITE for CQE 0x%p failed with status %s (%d).\n", - wc->wr_cqe, ib_wc_status_msg(wc->status), - wc->status); + pr_info("RDMA WRITE for CQE failed with status %s (%d).\n", + ib_wc_status_msg(wc->status), wc->status); nvmet_rdma_error_comp(queue); } return; @@ -1219,6 +1218,14 @@ } ndev->inline_data_size = nport->inline_data_size; ndev->inline_page_count = inline_page_count; + + if (nport->pi_enable && !(cm_id->device->attrs.device_cap_flags & + IB_DEVICE_INTEGRITY_HANDOVER)) { + pr_warn("T10-PI is not supported by device %s. Disabling it\n", + cm_id->device->name); + nport->pi_enable = false; + } + ndev->device = cm_id->device; kref_init(&ndev->ref); @@ -1640,6 +1647,16 @@ spin_lock_irqsave(&queue->state_lock, flags); switch (queue->state) { case NVMET_RDMA_Q_CONNECTING: + while (!list_empty(&queue->rsp_wait_list)) { + struct nvmet_rdma_rsp *rsp; + + rsp = list_first_entry(&queue->rsp_wait_list, + struct nvmet_rdma_rsp, + wait_list); + list_del(&rsp->wait_list); + nvmet_rdma_put_rsp(rsp); + } + fallthrough; case NVMET_RDMA_Q_LIVE: queue->state = NVMET_RDMA_Q_DISCONNECTING; disconnect = true; @@ -1844,14 +1861,6 @@ goto out_destroy_id; } - if (port->nport->pi_enable && - !(cm_id->device->attrs.device_cap_flags & - IB_DEVICE_INTEGRITY_HANDOVER)) { - pr_err("T10-PI is not supported for %pISpcs\n", addr); - ret = -EINVAL; - goto out_destroy_id; - } - port->cm_id = cm_id; return 0; --- linux-5.8.0.orig/drivers/nvme/target/tcp.c +++ linux-5.8.0/drivers/nvme/target/tcp.c @@ -160,6 +160,11 @@ static inline u16 nvmet_tcp_cmd_tag(struct nvmet_tcp_queue *queue, struct nvmet_tcp_cmd *cmd) { + if (unlikely(!queue->nr_cmds)) { + /* We didn't allocate cmds yet, send 0xffff */ + return USHRT_MAX; + } + return cmd - queue->cmds; } @@ -297,7 +302,7 @@ length = cmd->pdu_len; cmd->nr_mapped = DIV_ROUND_UP(length, PAGE_SIZE); offset = cmd->rbytes_done; - cmd->sg_idx = DIV_ROUND_UP(offset, PAGE_SIZE); + cmd->sg_idx = offset / PAGE_SIZE; sg_offset = offset % PAGE_SIZE; sg = &cmd->req.sg[cmd->sg_idx]; @@ -310,6 +315,7 @@ length -= iov_len; sg = sg_next(sg); iov++; + sg_offset = 0; } iov_iter_kvec(&cmd->recv_msg.msg_iter, READ, cmd->iov, @@ -370,7 +376,7 @@ return NVME_SC_INTERNAL; } -static void nvmet_tcp_ddgst(struct ahash_request *hash, +static void nvmet_tcp_send_ddgst(struct ahash_request *hash, struct nvmet_tcp_cmd *cmd) { ahash_request_set_crypt(hash, cmd->req.sg, @@ -378,6 +384,23 @@ crypto_ahash_digest(hash); } +static void nvmet_tcp_recv_ddgst(struct ahash_request *hash, + struct nvmet_tcp_cmd *cmd) +{ + struct scatterlist sg; + struct kvec *iov; + int i; + + crypto_ahash_init(hash); + for (i = 0, iov = cmd->iov; i < cmd->nr_mapped; i++, iov++) { + sg_init_one(&sg, iov->iov_base, iov->iov_len); + ahash_request_set_crypt(hash, &sg, NULL, iov->iov_len); + crypto_ahash_update(hash); + } + ahash_request_set_crypt(hash, NULL, (void *)&cmd->exp_ddgst, 0); + crypto_ahash_final(hash); +} + static void nvmet_setup_c2h_data_pdu(struct nvmet_tcp_cmd *cmd) { struct nvme_tcp_data_pdu *pdu = cmd->data_pdu; @@ -402,7 +425,7 @@ if (queue->data_digest) { pdu->hdr.flags |= NVME_TCP_F_DDGST; - nvmet_tcp_ddgst(queue->snd_hash, cmd); + nvmet_tcp_send_ddgst(queue->snd_hash, cmd); } if (cmd->queue->hdr_digest) { @@ -872,7 +895,10 @@ struct nvme_tcp_data_pdu *data = &queue->pdu.data; struct nvmet_tcp_cmd *cmd; - cmd = &queue->cmds[data->ttag]; + if (likely(queue->nr_cmds)) + cmd = &queue->cmds[data->ttag]; + else + cmd = &queue->connect; if (le32_to_cpu(data->data_offset) != cmd->rbytes_done) { pr_err("ttag %u unexpected data offset %u (expected %u)\n", @@ -1054,7 +1080,7 @@ { struct nvmet_tcp_queue *queue = cmd->queue; - nvmet_tcp_ddgst(queue->rcv_hash, cmd); + nvmet_tcp_recv_ddgst(queue->rcv_hash, cmd); queue->offset = 0; queue->left = NVME_TCP_DIGEST_LENGTH; queue->rcv_state = NVMET_TCP_RECV_DDGST; @@ -1076,13 +1102,13 @@ } nvmet_tcp_unmap_pdu_iovec(cmd); + if (queue->data_digest) { + nvmet_tcp_prep_recv_ddgst(cmd); + return 0; + } if (!(cmd->flags & NVMET_TCP_F_INIT_FAILED) && cmd->rbytes_done == cmd->req.transfer_len) { - if (queue->data_digest) { - nvmet_tcp_prep_recv_ddgst(cmd); - return 0; - } cmd->req.execute(&cmd->req); } @@ -1462,17 +1488,27 @@ if (inet->rcv_tos > 0) ip_sock_set_tos(sock->sk, inet->rcv_tos); + ret = 0; write_lock_bh(&sock->sk->sk_callback_lock); - sock->sk->sk_user_data = queue; - queue->data_ready = sock->sk->sk_data_ready; - sock->sk->sk_data_ready = nvmet_tcp_data_ready; - queue->state_change = sock->sk->sk_state_change; - sock->sk->sk_state_change = nvmet_tcp_state_change; - queue->write_space = sock->sk->sk_write_space; - sock->sk->sk_write_space = nvmet_tcp_write_space; + if (sock->sk->sk_state != TCP_ESTABLISHED) { + /* + * If the socket is already closing, don't even start + * consuming it + */ + ret = -ENOTCONN; + } else { + sock->sk->sk_user_data = queue; + queue->data_ready = sock->sk->sk_data_ready; + sock->sk->sk_data_ready = nvmet_tcp_data_ready; + queue->state_change = sock->sk->sk_state_change; + sock->sk->sk_state_change = nvmet_tcp_state_change; + queue->write_space = sock->sk->sk_write_space; + sock->sk->sk_write_space = nvmet_tcp_write_space; + queue_work_on(queue->cpu, nvmet_tcp_wq, &queue->io_work); + } write_unlock_bh(&sock->sk->sk_callback_lock); - return 0; + return ret; } static int nvmet_tcp_alloc_queue(struct nvmet_tcp_port *port, @@ -1523,8 +1559,6 @@ if (ret) goto out_destroy_sq; - queue_work_on(queue->cpu, nvmet_tcp_wq, &queue->io_work); - return 0; out_destroy_sq: mutex_lock(&nvmet_tcp_queue_mutex); --- linux-5.8.0.orig/drivers/nvme/target/trace.h +++ linux-5.8.0/drivers/nvme/target/trace.h @@ -46,19 +46,12 @@ return req->sq->ctrl; } -static inline void __assign_disk_name(char *name, struct nvmet_req *req, - bool init) +static inline void __assign_req_name(char *name, struct nvmet_req *req) { - struct nvmet_ctrl *ctrl = nvmet_req_to_ctrl(req); - struct nvmet_ns *ns; - - if ((init && req->sq->qid) || (!init && req->cq->qid)) { - ns = nvmet_find_namespace(ctrl, req->cmd->rw.nsid); - strncpy(name, ns->device_path, DISK_NAME_LEN); - return; - } - - memset(name, 0, DISK_NAME_LEN); + if (req->ns) + strncpy(name, req->ns->device_path, DISK_NAME_LEN); + else + memset(name, 0, DISK_NAME_LEN); } #endif @@ -81,7 +74,7 @@ TP_fast_assign( __entry->cmd = cmd; __entry->ctrl = nvmet_req_to_ctrl(req); - __assign_disk_name(__entry->disk, req, true); + __assign_req_name(__entry->disk, req); __entry->qid = req->sq->qid; __entry->cid = cmd->common.command_id; __entry->opcode = cmd->common.opcode; @@ -121,7 +114,7 @@ __entry->cid = req->cqe->command_id; __entry->result = le64_to_cpu(req->cqe->result.u64); __entry->status = le16_to_cpu(req->cqe->status) >> 1; - __assign_disk_name(__entry->disk, req, false); + __assign_req_name(__entry->disk, req); ), TP_printk("nvmet%s: %sqid=%d, cmdid=%u, res=%#llx, status=%#x", __print_ctrl_name(__entry->ctrl), --- linux-5.8.0.orig/drivers/nvmem/core.c +++ linux-5.8.0/drivers/nvmem/core.c @@ -355,16 +355,14 @@ blocking_notifier_call_chain(&nvmem_notifier, NVMEM_CELL_ADD, cell); } -static int nvmem_cell_info_to_nvmem_cell(struct nvmem_device *nvmem, - const struct nvmem_cell_info *info, - struct nvmem_cell *cell) +static int nvmem_cell_info_to_nvmem_cell_nodup(struct nvmem_device *nvmem, + const struct nvmem_cell_info *info, + struct nvmem_cell *cell) { cell->nvmem = nvmem; cell->offset = info->offset; cell->bytes = info->bytes; - cell->name = kstrdup_const(info->name, GFP_KERNEL); - if (!cell->name) - return -ENOMEM; + cell->name = info->name; cell->bit_offset = info->bit_offset; cell->nbits = info->nbits; @@ -376,13 +374,30 @@ if (!IS_ALIGNED(cell->offset, nvmem->stride)) { dev_err(&nvmem->dev, "cell %s unaligned to nvmem stride %d\n", - cell->name, nvmem->stride); + cell->name ?: "", nvmem->stride); return -EINVAL; } return 0; } +static int nvmem_cell_info_to_nvmem_cell(struct nvmem_device *nvmem, + const struct nvmem_cell_info *info, + struct nvmem_cell *cell) +{ + int err; + + err = nvmem_cell_info_to_nvmem_cell_nodup(nvmem, info, cell); + if (err) + return err; + + cell->name = kstrdup_const(info->name, GFP_KERNEL); + if (!cell->name) + return -ENOMEM; + + return 0; +} + /** * nvmem_add_cells() - Add cell information to an nvmem device * @@ -524,7 +539,9 @@ for_each_child_of_node(parent, child) { addr = of_get_property(child, "reg", &len); - if (!addr || (len < 2 * sizeof(u32))) { + if (!addr) + continue; + if (len < 2 * sizeof(u32)) { dev_err(dev, "nvmem: invalid reg on %pOF\n", child); return -EINVAL; } @@ -555,6 +572,7 @@ cell->name, nvmem->stride); /* Cells already added will be freed later. */ kfree_const(cell->name); + of_node_put(cell->np); kfree(cell); return -EINVAL; } @@ -823,6 +841,7 @@ { struct device_node *nvmem_np; + struct nvmem_device *nvmem; int index = 0; if (id) @@ -832,7 +851,9 @@ if (!nvmem_np) return ERR_PTR(-ENOENT); - return __nvmem_device_get(nvmem_np, device_match_of_node); + nvmem = __nvmem_device_get(nvmem_np, device_match_of_node); + of_node_put(nvmem_np); + return nvmem; } EXPORT_SYMBOL_GPL(of_nvmem_device_get); #endif @@ -1433,7 +1454,7 @@ if (!nvmem) return -EINVAL; - rc = nvmem_cell_info_to_nvmem_cell(nvmem, info, &cell); + rc = nvmem_cell_info_to_nvmem_cell_nodup(nvmem, info, &cell); if (rc) return rc; @@ -1463,7 +1484,7 @@ if (!nvmem) return -EINVAL; - rc = nvmem_cell_info_to_nvmem_cell(nvmem, info, &cell); + rc = nvmem_cell_info_to_nvmem_cell_nodup(nvmem, info, &cell); if (rc) return rc; --- linux-5.8.0.orig/drivers/nvmem/qcom-spmi-sdam.c +++ linux-5.8.0/drivers/nvmem/qcom-spmi-sdam.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2017, 2020-2021, The Linux Foundation. All rights reserved. */ #include @@ -18,7 +18,6 @@ #define SDAM_PBS_TRIG_CLR 0xE6 struct sdam_chip { - struct platform_device *pdev; struct regmap *regmap; struct nvmem_config sdam_config; unsigned int base; @@ -65,7 +64,7 @@ size_t bytes) { struct sdam_chip *sdam = priv; - struct device *dev = &sdam->pdev->dev; + struct device *dev = sdam->sdam_config.dev; int rc; if (!sdam_is_valid(sdam, offset, bytes)) { @@ -86,7 +85,7 @@ size_t bytes) { struct sdam_chip *sdam = priv; - struct device *dev = &sdam->pdev->dev; + struct device *dev = sdam->sdam_config.dev; int rc; if (!sdam_is_valid(sdam, offset, bytes)) { --- linux-5.8.0.orig/drivers/nvmem/sprd-efuse.c +++ linux-5.8.0/drivers/nvmem/sprd-efuse.c @@ -378,8 +378,8 @@ return -ENOMEM; efuse->base = devm_platform_ioremap_resource(pdev, 0); - if (!efuse->base) - return -ENOMEM; + if (IS_ERR(efuse->base)) + return PTR_ERR(efuse->base); ret = of_hwspin_lock_get_id(np, 0); if (ret < 0) { --- linux-5.8.0.orig/drivers/of/address.c +++ linux-5.8.0/drivers/of/address.c @@ -980,6 +980,11 @@ /* Don't error out as we'd break some existing DTs */ continue; } + if (range.cpu_addr == OF_BAD_ADDR) { + pr_err("translation of DMA address(%llx) to CPU address failed node(%pOF)\n", + range.bus_addr, node); + continue; + } dma_offset = range.cpu_addr - range.bus_addr; /* Take lower and upper limits */ @@ -1010,6 +1015,48 @@ } /** + * of_dma_get_max_cpu_address - Gets highest CPU address suitable for DMA + * @np: The node to start searching from or NULL to start from the root + * + * Gets the highest CPU physical address that is addressable by all DMA masters + * in the sub-tree pointed by np, or the whole tree if NULL is passed. If no + * DMA constrained device is found, it returns PHYS_ADDR_MAX. + */ +phys_addr_t __init of_dma_get_max_cpu_address(struct device_node *np) +{ + phys_addr_t max_cpu_addr = PHYS_ADDR_MAX; + struct of_range_parser parser; + phys_addr_t subtree_max_addr; + struct device_node *child; + struct of_range range; + const __be32 *ranges; + u64 cpu_end = 0; + int len; + + if (!np) + np = of_root; + + ranges = of_get_property(np, "dma-ranges", &len); + if (ranges && len) { + of_dma_range_parser_init(&parser, np); + for_each_of_range(&parser, &range) + if (range.cpu_addr + range.size > cpu_end) + cpu_end = range.cpu_addr + range.size - 1; + + if (max_cpu_addr > cpu_end) + max_cpu_addr = cpu_end; + } + + for_each_available_child_of_node(np, child) { + subtree_max_addr = of_dma_get_max_cpu_address(child); + if (max_cpu_addr > subtree_max_addr) + max_cpu_addr = subtree_max_addr; + } + + return max_cpu_addr; +} + +/** * of_dma_is_coherent - Check if device is coherent * @np: device node * @@ -1019,11 +1066,13 @@ */ bool of_dma_is_coherent(struct device_node *np) { - struct device_node *node = of_node_get(np); + struct device_node *node; if (IS_ENABLED(CONFIG_OF_DMA_DEFAULT_COHERENT)) return true; + node = of_node_get(np); + while (node) { if (of_property_read_bool(node, "dma-coherent")) { of_node_put(node); --- linux-5.8.0.orig/drivers/of/fdt.c +++ linux-5.8.0/drivers/of/fdt.c @@ -1149,8 +1149,16 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, bool nomap) { - if (nomap) - return memblock_remove(base, size); + if (nomap) { + /* + * If the memory is already reserved (by another region), we + * should not allow it to be marked nomap. + */ + if (memblock_is_region_reserved(base, size)) + return -EBUSY; + + return memblock_mark_nomap(base, size); + } return memblock_reserve(base, size); } --- linux-5.8.0.orig/drivers/of/of_reserved_mem.c +++ linux-5.8.0/drivers/of/of_reserved_mem.c @@ -200,6 +200,16 @@ if (ra->base > rb->base) return 1; + /* + * Put the dynamic allocations (address == 0, size == 0) before static + * allocations at address 0x0 so that overlap detection works + * correctly. + */ + if (ra->size < rb->size) + return -1; + if (ra->size > rb->size) + return 1; + return 0; } @@ -217,8 +227,7 @@ this = &reserved_mem[i]; next = &reserved_mem[i + 1]; - if (!(this->base && next->base)) - continue; + if (this->base + this->size > next->base) { phys_addr_t this_end, next_end; --- linux-5.8.0.orig/drivers/of/unittest.c +++ linux-5.8.0/drivers/of/unittest.c @@ -868,6 +868,26 @@ #endif } +static void __init of_unittest_dma_get_max_cpu_address(void) +{ + struct device_node *np; + phys_addr_t cpu_addr; + + if (!IS_ENABLED(CONFIG_OF_ADDRESS)) + return; + + np = of_find_node_by_path("/testcase-data/address-tests"); + if (!np) { + pr_err("missing testcase data\n"); + return; + } + + cpu_addr = of_dma_get_max_cpu_address(np); + unittest(cpu_addr == 0x4fffffff, + "of_dma_get_max_cpu_address: wrong CPU addr %pad (expecting %x)\n", + &cpu_addr, 0x4fffffff); +} + static void __init of_unittest_dma_ranges_one(const char *path, u64 expect_dma_addr, u64 expect_paddr, u64 expect_size) { @@ -3252,6 +3272,7 @@ of_unittest_changeset(); of_unittest_parse_interrupts(); of_unittest_parse_interrupts_extended(); + of_unittest_dma_get_max_cpu_address(); of_unittest_parse_dma_ranges(); of_unittest_pci_dma_ranges(); of_unittest_match_node(); --- linux-5.8.0.orig/drivers/opp/core.c +++ linux-5.8.0/drivers/opp/core.c @@ -862,8 +862,10 @@ * have OPP table for the device, while others don't and * opp_set_rate() just needs to behave like clk_set_rate(). */ - if (!_get_opp_count(opp_table)) - return 0; + if (!_get_opp_count(opp_table)) { + ret = 0; + goto put_opp_table; + } if (!opp_table->required_opp_tables && !opp_table->regulators && !opp_table->paths) { @@ -874,7 +876,7 @@ ret = _set_opp_bw(opp_table, NULL, dev, true); if (ret) - return ret; + goto put_opp_table; if (opp_table->regulator_enabled) { regulator_disable(opp_table->regulators[0]); @@ -901,10 +903,13 @@ /* Return early if nothing to do */ if (old_freq == freq) { - dev_dbg(dev, "%s: old/new frequencies (%lu Hz) are same, nothing to do\n", - __func__, freq); - ret = 0; - goto put_opp_table; + if (!opp_table->required_opp_tables && !opp_table->regulators && + !opp_table->paths) { + dev_dbg(dev, "%s: old/new frequencies (%lu Hz) are same, nothing to do\n", + __func__, freq); + ret = 0; + goto put_opp_table; + } } /* @@ -1124,6 +1129,10 @@ struct opp_device *opp_dev, *temp; int i; + /* Drop the lock as soon as we can */ + list_del(&opp_table->node); + mutex_unlock(&opp_table_lock); + _of_clear_opp_table(opp_table); /* Release clk */ @@ -1151,10 +1160,7 @@ mutex_destroy(&opp_table->genpd_virt_dev_lock); mutex_destroy(&opp_table->lock); - list_del(&opp_table->node); kfree(opp_table); - - mutex_unlock(&opp_table_lock); } void dev_pm_opp_put_opp_table(struct opp_table *opp_table) @@ -1260,13 +1266,19 @@ } EXPORT_SYMBOL_GPL(dev_pm_opp_remove); -void _opp_remove_all_static(struct opp_table *opp_table) +bool _opp_remove_all_static(struct opp_table *opp_table) { struct dev_pm_opp *opp, *tmp; + bool ret = true; mutex_lock(&opp_table->lock); - if (!opp_table->parsed_static_opps || --opp_table->parsed_static_opps) + if (!opp_table->parsed_static_opps) { + ret = false; + goto unlock; + } + + if (--opp_table->parsed_static_opps) goto unlock; list_for_each_entry_safe(opp, tmp, &opp_table->opp_list, node) { @@ -1276,6 +1288,8 @@ unlock: mutex_unlock(&opp_table->lock); + + return ret; } /** @@ -1905,6 +1919,9 @@ { int index; + if (!opp_table->genpd_virt_devs) + return; + for (index = 0; index < opp_table->required_opp_count; index++) { if (!opp_table->genpd_virt_devs[index]) continue; @@ -1951,6 +1968,9 @@ if (!opp_table) return ERR_PTR(-ENOMEM); + if (opp_table->genpd_virt_devs) + return opp_table; + /* * If the genpd's OPP table isn't already initialized, parsing of the * required-opps fail for dev. We should retry this after genpd's OPP @@ -2377,13 +2397,15 @@ return; } - _opp_remove_all_static(opp_table); + /* + * Drop the extra reference only if the OPP table was successfully added + * with dev_pm_opp_of_add_table() earlier. + **/ + if (_opp_remove_all_static(opp_table)) + dev_pm_opp_put_opp_table(opp_table); /* Drop reference taken by _find_opp_table() */ dev_pm_opp_put_opp_table(opp_table); - - /* Drop reference taken while the OPP table was added */ - dev_pm_opp_put_opp_table(opp_table); } /** --- linux-5.8.0.orig/drivers/opp/of.c +++ linux-5.8.0/drivers/opp/of.c @@ -732,7 +732,6 @@ struct device *dev, struct device_node *np) { struct dev_pm_opp *new_opp; - u64 rate = 0; u32 val; int ret; bool rate_not_available = false; @@ -749,7 +748,8 @@ /* Check if the OPP supports hardware's hierarchy of versions or not */ if (!_opp_is_supported(dev, opp_table, np)) { - dev_dbg(dev, "OPP not supported by hardware: %llu\n", rate); + dev_dbg(dev, "OPP not supported by hardware: %lu\n", + new_opp->rate); goto free_opp; } --- linux-5.8.0.orig/drivers/opp/opp.h +++ linux-5.8.0/drivers/opp/opp.h @@ -212,7 +212,7 @@ /* Routines internal to opp core */ void dev_pm_opp_get(struct dev_pm_opp *opp); -void _opp_remove_all_static(struct opp_table *opp_table); +bool _opp_remove_all_static(struct opp_table *opp_table); void _get_opp_table_kref(struct opp_table *opp_table); int _get_opp_count(struct opp_table *opp_table); struct opp_table *_find_opp_table(struct device *dev); --- linux-5.8.0.orig/drivers/parisc/sba_iommu.c +++ linux-5.8.0/drivers/parisc/sba_iommu.c @@ -1270,7 +1270,7 @@ ** (one that doesn't overlap memory or LMMIO space) in the ** IBASE and IMASK registers. */ - ioc->ibase = READ_REG(ioc->ioc_hpa + IOC_IBASE); + ioc->ibase = READ_REG(ioc->ioc_hpa + IOC_IBASE) & ~0x1fffffULL; iova_space_size = ~(READ_REG(ioc->ioc_hpa + IOC_IMASK) & 0xFFFFFFFFUL) + 1; if ((ioc->ibase < 0xfed00000UL) && ((ioc->ibase + iova_space_size) > 0xfee00000UL)) { --- linux-5.8.0.orig/drivers/pci/access.c +++ linux-5.8.0/drivers/pci/access.c @@ -204,17 +204,13 @@ static DECLARE_WAIT_QUEUE_HEAD(pci_cfg_wait); static noinline void pci_wait_cfg(struct pci_dev *dev) + __must_hold(&pci_lock) { - DECLARE_WAITQUEUE(wait, current); - - __add_wait_queue(&pci_cfg_wait, &wait); do { - set_current_state(TASK_UNINTERRUPTIBLE); raw_spin_unlock_irq(&pci_lock); - schedule(); + wait_event(pci_cfg_wait, !dev->block_cfg_access); raw_spin_lock_irq(&pci_lock); } while (dev->block_cfg_access); - __remove_wait_queue(&pci_cfg_wait, &wait); } /* Returns 0 on success, negative values indicate error. */ --- linux-5.8.0.orig/drivers/pci/ats.c +++ linux-5.8.0/drivers/pci/ats.c @@ -325,6 +325,21 @@ return pdev->pasid_required; } + +/** + * pci_pri_supported - Check if PRI is supported. + * @pdev: PCI device structure + * + * Returns true if PRI capability is present, false otherwise. + */ +bool pci_pri_supported(struct pci_dev *pdev) +{ + /* VFs share the PF PRI */ + if (pci_physfn(pdev)->pri_cap) + return true; + return false; +} +EXPORT_SYMBOL_GPL(pci_pri_supported); #endif /* CONFIG_PCI_PRI */ #ifdef CONFIG_PCI_PASID --- linux-5.8.0.orig/drivers/pci/bus.c +++ linux-5.8.0/drivers/pci/bus.c @@ -322,12 +322,8 @@ dev->match_driver = true; retval = device_attach(&dev->dev); - if (retval < 0 && retval != -EPROBE_DEFER) { + if (retval < 0 && retval != -EPROBE_DEFER) pci_warn(dev, "device attach failed (%d)\n", retval); - pci_proc_detach_device(dev); - pci_remove_sysfs_dev_files(dev); - return; - } pci_dev_assign_added(dev, true); } --- linux-5.8.0.orig/drivers/pci/controller/cadence/pcie-cadence-ep.c +++ linux-5.8.0/drivers/pci/controller/cadence/pcie-cadence-ep.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include "pcie-cadence.h" @@ -440,8 +439,7 @@ epc = devm_pci_epc_create(dev, &cdns_pcie_epc_ops); if (IS_ERR(epc)) { dev_err(dev, "failed to create epc device\n"); - ret = PTR_ERR(epc); - goto err_init; + return PTR_ERR(epc); } epc_set_drvdata(epc, ep); @@ -453,7 +451,7 @@ resource_size(pcie->mem_res), PAGE_SIZE); if (ret < 0) { dev_err(dev, "failed to initialize the memory space\n"); - goto err_init; + return ret; } ep->irq_cpu_addr = pci_epc_mem_alloc_addr(epc, &ep->irq_phys_addr, @@ -472,8 +470,5 @@ free_epc_mem: pci_epc_mem_exit(epc); - err_init: - pm_runtime_put_sync(dev); - return ret; } --- linux-5.8.0.orig/drivers/pci/controller/cadence/pcie-cadence-host.c +++ linux-5.8.0/drivers/pci/controller/cadence/pcie-cadence-host.c @@ -7,7 +7,6 @@ #include #include #include -#include #include "pcie-cadence.h" @@ -70,6 +69,7 @@ { struct cdns_pcie *pcie = &rc->pcie; u32 value, ctrl; + u32 id; /* * Set the root complex BAR configuration register: @@ -89,8 +89,12 @@ cdns_pcie_writel(pcie, CDNS_PCIE_LM_RC_BAR_CFG, value); /* Set root port configuration space */ - if (rc->vendor_id != 0xffff) - cdns_pcie_rp_writew(pcie, PCI_VENDOR_ID, rc->vendor_id); + if (rc->vendor_id != 0xffff) { + id = CDNS_PCIE_LM_ID_VENDOR(rc->vendor_id) | + CDNS_PCIE_LM_ID_SUBSYS(rc->vendor_id); + cdns_pcie_writel(pcie, CDNS_PCIE_LM_ID, id); + } + if (rc->device_id != 0xffff) cdns_pcie_rp_writew(pcie, PCI_DEVICE_ID, rc->device_id); @@ -250,7 +254,7 @@ ret = cdns_pcie_host_init(dev, &resources, rc); if (ret) - goto err_init; + return ret; list_splice_init(&resources, &bridge->windows); bridge->dev.parent = dev; @@ -268,8 +272,5 @@ err_host_probe: pci_free_resource_list(&resources); - err_init: - pm_runtime_put_sync(dev); - return ret; } --- linux-5.8.0.orig/drivers/pci/controller/dwc/pcie-designware-ep.c +++ linux-5.8.0/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -505,7 +505,8 @@ u32 reg; int i; - hdr_type = dw_pcie_readb_dbi(pci, PCI_HEADER_TYPE); + hdr_type = dw_pcie_readb_dbi(pci, PCI_HEADER_TYPE) & + PCI_HEADER_TYPE_MASK; if (hdr_type != PCI_HEADER_TYPE_NORMAL) { dev_err(pci->dev, "PCIe controller is not set to EP mode (hdr_type:0x%x)!\n", --- linux-5.8.0.orig/drivers/pci/controller/dwc/pcie-qcom.c +++ linux-5.8.0/drivers/pci/controller/dwc/pcie-qcom.c @@ -45,7 +45,13 @@ #define PCIE_CAP_CPL_TIMEOUT_DISABLE 0x10 #define PCIE20_PARF_PHY_CTRL 0x40 +#define PHY_CTRL_PHY_TX0_TERM_OFFSET_MASK GENMASK(20, 16) +#define PHY_CTRL_PHY_TX0_TERM_OFFSET(x) ((x) << 16) + #define PCIE20_PARF_PHY_REFCLK 0x4C +#define PHY_REFCLK_SSP_EN BIT(16) +#define PHY_REFCLK_USE_PAD BIT(12) + #define PCIE20_PARF_DBI_BASE_ADDR 0x168 #define PCIE20_PARF_SLV_ADDR_SPACE_SIZE 0x16C #define PCIE20_PARF_MHI_CLOCK_RESET_CTRL 0x174 @@ -77,6 +83,18 @@ #define DBI_RO_WR_EN 1 #define PERST_DELAY_US 1000 +/* PARF registers */ +#define PCIE20_PARF_PCS_DEEMPH 0x34 +#define PCS_DEEMPH_TX_DEEMPH_GEN1(x) ((x) << 16) +#define PCS_DEEMPH_TX_DEEMPH_GEN2_3_5DB(x) ((x) << 8) +#define PCS_DEEMPH_TX_DEEMPH_GEN2_6DB(x) ((x) << 0) + +#define PCIE20_PARF_PCS_SWING 0x38 +#define PCS_SWING_TX_SWING_FULL(x) ((x) << 8) +#define PCS_SWING_TX_SWING_LOW(x) ((x) << 0) + +#define PCIE20_PARF_CONFIG_BITS 0x50 +#define PHY_RX0_EQ(x) ((x) << 24) #define PCIE20_v3_PARF_SLV_ADDR_SPACE_SIZE 0x358 #define SLV_ADDR_SPACE_SZ 0x10000000 @@ -88,11 +106,14 @@ struct clk *iface_clk; struct clk *core_clk; struct clk *phy_clk; + struct clk *aux_clk; + struct clk *ref_clk; struct reset_control *pci_reset; struct reset_control *axi_reset; struct reset_control *ahb_reset; struct reset_control *por_reset; struct reset_control *phy_reset; + struct reset_control *ext_reset; struct regulator_bulk_data supplies[QCOM_PCIE_2_1_0_MAX_SUPPLY]; }; @@ -246,6 +267,14 @@ if (IS_ERR(res->phy_clk)) return PTR_ERR(res->phy_clk); + res->aux_clk = devm_clk_get_optional(dev, "aux"); + if (IS_ERR(res->aux_clk)) + return PTR_ERR(res->aux_clk); + + res->ref_clk = devm_clk_get_optional(dev, "ref"); + if (IS_ERR(res->ref_clk)) + return PTR_ERR(res->ref_clk); + res->pci_reset = devm_reset_control_get_exclusive(dev, "pci"); if (IS_ERR(res->pci_reset)) return PTR_ERR(res->pci_reset); @@ -262,6 +291,10 @@ if (IS_ERR(res->por_reset)) return PTR_ERR(res->por_reset); + res->ext_reset = devm_reset_control_get_optional_exclusive(dev, "ext"); + if (IS_ERR(res->ext_reset)) + return PTR_ERR(res->ext_reset); + res->phy_reset = devm_reset_control_get_exclusive(dev, "phy"); return PTR_ERR_OR_ZERO(res->phy_reset); } @@ -270,14 +303,20 @@ { struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; + clk_disable_unprepare(res->phy_clk); reset_control_assert(res->pci_reset); reset_control_assert(res->axi_reset); reset_control_assert(res->ahb_reset); reset_control_assert(res->por_reset); - reset_control_assert(res->pci_reset); + reset_control_assert(res->ext_reset); + reset_control_assert(res->phy_reset); clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->core_clk); - clk_disable_unprepare(res->phy_clk); + clk_disable_unprepare(res->aux_clk); + clk_disable_unprepare(res->ref_clk); + + writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); + regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); } @@ -286,9 +325,20 @@ struct qcom_pcie_resources_2_1_0 *res = &pcie->res.v2_1_0; struct dw_pcie *pci = pcie->pci; struct device *dev = pci->dev; + struct device_node *node = dev->of_node; u32 val; int ret; + /* reset the PCIe interface as uboot can leave it undefined state */ + reset_control_assert(res->pci_reset); + reset_control_assert(res->axi_reset); + reset_control_assert(res->ahb_reset); + reset_control_assert(res->por_reset); + reset_control_assert(res->ext_reset); + reset_control_assert(res->phy_reset); + + writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL); + ret = regulator_bulk_enable(ARRAY_SIZE(res->supplies), res->supplies); if (ret < 0) { dev_err(dev, "cannot enable regulators\n"); @@ -307,32 +357,66 @@ goto err_assert_ahb; } - ret = clk_prepare_enable(res->phy_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable phy clock\n"); - goto err_clk_phy; - } - ret = clk_prepare_enable(res->core_clk); if (ret) { dev_err(dev, "cannot prepare/enable core clock\n"); goto err_clk_core; } + ret = clk_prepare_enable(res->aux_clk); + if (ret) { + dev_err(dev, "cannot prepare/enable aux clock\n"); + goto err_clk_aux; + } + + ret = clk_prepare_enable(res->ref_clk); + if (ret) { + dev_err(dev, "cannot prepare/enable ref clock\n"); + goto err_clk_ref; + } + ret = reset_control_deassert(res->ahb_reset); if (ret) { dev_err(dev, "cannot deassert ahb reset\n"); goto err_deassert_ahb; } + ret = reset_control_deassert(res->ext_reset); + if (ret) { + dev_err(dev, "cannot deassert ext reset\n"); + goto err_deassert_ahb; + } + /* enable PCIe clocks and resets */ val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); val &= ~BIT(0); writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); + if (of_device_is_compatible(node, "qcom,pcie-ipq8064")) { + writel(PCS_DEEMPH_TX_DEEMPH_GEN1(24) | + PCS_DEEMPH_TX_DEEMPH_GEN2_3_5DB(24) | + PCS_DEEMPH_TX_DEEMPH_GEN2_6DB(34), + pcie->parf + PCIE20_PARF_PCS_DEEMPH); + writel(PCS_SWING_TX_SWING_FULL(120) | + PCS_SWING_TX_SWING_LOW(120), + pcie->parf + PCIE20_PARF_PCS_SWING); + writel(PHY_RX0_EQ(4), pcie->parf + PCIE20_PARF_CONFIG_BITS); + } + + if (of_device_is_compatible(node, "qcom,pcie-ipq8064")) { + /* set TX termination offset */ + val = readl(pcie->parf + PCIE20_PARF_PHY_CTRL); + val &= ~PHY_CTRL_PHY_TX0_TERM_OFFSET_MASK; + val |= PHY_CTRL_PHY_TX0_TERM_OFFSET(7); + writel(val, pcie->parf + PCIE20_PARF_PHY_CTRL); + } + /* enable external reference clock */ val = readl(pcie->parf + PCIE20_PARF_PHY_REFCLK); - val |= BIT(16); + /* USE_PAD is required only for ipq806x */ + if (!of_device_is_compatible(node, "qcom,pcie-apq8064")) + val &= ~PHY_REFCLK_USE_PAD; + val |= PHY_REFCLK_SSP_EN; writel(val, pcie->parf + PCIE20_PARF_PHY_REFCLK); ret = reset_control_deassert(res->phy_reset); @@ -359,6 +443,12 @@ return ret; } + ret = clk_prepare_enable(res->phy_clk); + if (ret) { + dev_err(dev, "cannot prepare/enable phy clock\n"); + goto err_deassert_ahb; + } + /* wait for clock acquisition */ usleep_range(1000, 1500); @@ -372,10 +462,12 @@ return 0; err_deassert_ahb: + clk_disable_unprepare(res->ref_clk); +err_clk_ref: + clk_disable_unprepare(res->aux_clk); +err_clk_aux: clk_disable_unprepare(res->core_clk); err_clk_core: - clk_disable_unprepare(res->phy_clk); -err_clk_phy: clk_disable_unprepare(res->iface_clk); err_assert_ahb: regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); --- linux-5.8.0.orig/drivers/pci/controller/pci-aardvark.c +++ linux-5.8.0/drivers/pci/controller/pci-aardvark.c @@ -9,7 +9,7 @@ */ #include -#include +#include #include #include #include @@ -608,7 +608,7 @@ * Initialize the configuration space of the PCI-to-PCI bridge * associated with the given PCIe interface. */ -static void advk_sw_pci_bridge_init(struct advk_pcie *pcie) +static int advk_sw_pci_bridge_init(struct advk_pcie *pcie) { struct pci_bridge_emul *bridge = &pcie->bridge; @@ -634,8 +634,7 @@ bridge->data = pcie; bridge->ops = &advk_pci_bridge_emul_ops; - pci_bridge_emul_init(bridge, 0); - + return pci_bridge_emul_init(bridge, 0); } static bool advk_pcie_valid_device(struct advk_pcie *pcie, struct pci_bus *bus, @@ -1069,7 +1068,9 @@ } ret = phy_power_on(pcie->phy); - if (ret) { + if (ret == -EOPNOTSUPP) { + dev_warn(&pcie->pdev->dev, "PHY unsupported by firmware\n"); + } else if (ret) { phy_exit(pcie->phy); return ret; } @@ -1169,7 +1170,11 @@ advk_pcie_setup_hw(pcie); - advk_sw_pci_bridge_init(pcie); + ret = advk_sw_pci_bridge_init(pcie); + if (ret) { + dev_err(dev, "Failed to register emulated root PCI bridge\n"); + return ret; + } ret = advk_pcie_init_irq_domain(pcie); if (ret) { --- linux-5.8.0.orig/drivers/pci/controller/pci-hyperv.c +++ linux-5.8.0/drivers/pci/controller/pci-hyperv.c @@ -1275,11 +1275,25 @@ exit_unlock: spin_unlock_irqrestore(&hbus->retarget_msi_interrupt_lock, flags); - if (res) { + /* + * During hibernation, when a CPU is offlined, the kernel tries + * to move the interrupt to the remaining CPUs that haven't + * been offlined yet. In this case, the below hv_do_hypercall() + * always fails since the vmbus channel has been closed: + * refer to cpu_disable_common() -> fixup_irqs() -> + * irq_migrate_all_off_this_cpu() -> migrate_one_irq(). + * + * Suppress the error message for hibernation because the failure + * during hibernation does not matter (at this time all the devices + * have been frozen). Note: the correct affinity info is still updated + * into the irqdata data structure in migrate_one_irq() -> + * irq_do_set_affinity() -> hv_set_affinity(), so later when the VM + * resumes, hv_pci_restore_msi_state() is able to correctly restore + * the interrupt with the correct affinity. + */ + if (res && hbus->state != hv_pcibus_removing) dev_err(&hbus->hdev->device, "%s() failed: %#llx", __func__, res); - return; - } pci_msi_unmask_irq(data); } @@ -3368,6 +3382,34 @@ return 0; } +static int hv_pci_restore_msi_msg(struct pci_dev *pdev, void *arg) +{ + struct msi_desc *entry; + struct irq_data *irq_data; + + for_each_pci_msi_entry(entry, pdev) { + irq_data = irq_get_irq_data(entry->irq); + if (WARN_ON_ONCE(!irq_data)) + return -EINVAL; + + hv_compose_msi_msg(irq_data, &entry->msg); + } + + return 0; +} + +/* + * Upon resume, pci_restore_msi_state() -> ... -> __pci_write_msi_msg() + * directly writes the MSI/MSI-X registers via MMIO, but since Hyper-V + * doesn't trap and emulate the MMIO accesses, here hv_compose_msi_msg() + * must be used to ask Hyper-V to re-create the IOMMU Interrupt Remapping + * Table entries. + */ +static void hv_pci_restore_msi_state(struct hv_pcibus_device *hbus) +{ + pci_walk_bus(hbus->pci_bus, hv_pci_restore_msi_msg, NULL); +} + static int hv_pci_resume(struct hv_device *hdev) { struct hv_pcibus_device *hbus = hv_get_drvdata(hdev); @@ -3401,6 +3443,8 @@ prepopulate_bars(hbus); + hv_pci_restore_msi_state(hbus); + hbus->state = hv_pcibus_installed; return 0; out: --- linux-5.8.0.orig/drivers/pci/controller/pci-loongson.c +++ linux-5.8.0/drivers/pci/controller/pci-loongson.c @@ -37,11 +37,11 @@ { dev->class = PCI_CLASS_BRIDGE_PCI << 8; } -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_LOONGSON, +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_LOONGSON, DEV_PCIE_PORT_0, bridge_class_quirk); -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_LOONGSON, +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_LOONGSON, DEV_PCIE_PORT_1, bridge_class_quirk); -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_LOONGSON, +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_LOONGSON, DEV_PCIE_PORT_2, bridge_class_quirk); static void system_bus_quirk(struct pci_dev *pdev) --- linux-5.8.0.orig/drivers/pci/controller/pci-tegra.c +++ linux-5.8.0/drivers/pci/controller/pci-tegra.c @@ -181,13 +181,6 @@ #define AFI_PEXBIAS_CTRL_0 0x168 -#define RP_PRIV_XP_DL 0x00000494 -#define RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD (0x1ff << 1) - -#define RP_RX_HDR_LIMIT 0x00000e00 -#define RP_RX_HDR_LIMIT_PW_MASK (0xff << 8) -#define RP_RX_HDR_LIMIT_PW (0x0e << 8) - #define RP_ECTL_2_R1 0x00000e84 #define RP_ECTL_2_R1_RX_CTLE_1C_MASK 0xffff @@ -323,7 +316,6 @@ bool program_uphy; bool update_clamp_threshold; bool program_deskew_time; - bool raw_violation_fixup; bool update_fc_timer; bool has_cache_bars; struct { @@ -659,23 +651,6 @@ writel(value, port->base + RP_VEND_CTL0); } - /* Fixup for read after write violation. */ - if (soc->raw_violation_fixup) { - value = readl(port->base + RP_RX_HDR_LIMIT); - value &= ~RP_RX_HDR_LIMIT_PW_MASK; - value |= RP_RX_HDR_LIMIT_PW; - writel(value, port->base + RP_RX_HDR_LIMIT); - - value = readl(port->base + RP_PRIV_XP_DL); - value |= RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD; - writel(value, port->base + RP_PRIV_XP_DL); - - value = readl(port->base + RP_VEND_XP); - value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK; - value |= soc->update_fc_threshold; - writel(value, port->base + RP_VEND_XP); - } - if (soc->update_fc_timer) { value = readl(port->base + RP_VEND_XP); value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK; @@ -2416,7 +2391,6 @@ .program_uphy = true, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = true, .ectl.enable = false, @@ -2446,7 +2420,6 @@ .program_uphy = true, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false, @@ -2459,8 +2432,6 @@ .pads_pll_ctl = PADS_PLL_CTL_TEGRA30, .tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN, .pads_refclk_cfg0 = 0x44ac44ac, - /* FC threshold is bit[25:18] */ - .update_fc_threshold = 0x03fc0000, .has_pex_clkreq_en = true, .has_pex_bias_ctrl = true, .has_intr_prsnt_sense = true, @@ -2470,7 +2441,6 @@ .program_uphy = true, .update_clamp_threshold = true, .program_deskew_time = false, - .raw_violation_fixup = true, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false, @@ -2494,7 +2464,6 @@ .program_uphy = true, .update_clamp_threshold = true, .program_deskew_time = true, - .raw_violation_fixup = false, .update_fc_timer = true, .has_cache_bars = false, .ectl = { @@ -2536,7 +2505,6 @@ .program_uphy = false, .update_clamp_threshold = false, .program_deskew_time = false, - .raw_violation_fixup = false, .update_fc_timer = false, .has_cache_bars = false, .ectl.enable = false, --- linux-5.8.0.orig/drivers/pci/controller/pci-xgene-msi.c +++ linux-5.8.0/drivers/pci/controller/pci-xgene-msi.c @@ -384,13 +384,9 @@ if (!msi_group->gic_irq) continue; - irq_set_chained_handler(msi_group->gic_irq, - xgene_msi_isr); - err = irq_set_handler_data(msi_group->gic_irq, msi_group); - if (err) { - pr_err("failed to register GIC IRQ handler\n"); - return -EINVAL; - } + irq_set_chained_handler_and_data(msi_group->gic_irq, + xgene_msi_isr, msi_group); + /* * Statically allocate MSI GIC IRQs to each CPU core. * With 8-core X-Gene v1, 2 MSI GIC IRQs are allocated --- linux-5.8.0.orig/drivers/pci/controller/pcie-brcmstb.c +++ linux-5.8.0/drivers/pci/controller/pcie-brcmstb.c @@ -716,6 +716,7 @@ usleep_range(100, 200); /* Set SCB_MAX_BURST_SIZE, CFG_READ_UR_MODE, SCB_ACCESS_EN */ + tmp = readl(base + PCIE_MISC_MISC_CTRL); u32p_replace_bits(&tmp, 1, PCIE_MISC_MISC_CTRL_SCB_ACCESS_EN_MASK); u32p_replace_bits(&tmp, 1, PCIE_MISC_MISC_CTRL_CFG_READ_UR_MODE_MASK); u32p_replace_bits(&tmp, PCIE_MISC_MISC_CTRL_MAX_BURST_SIZE_128, --- linux-5.8.0.orig/drivers/pci/controller/pcie-iproc-msi.c +++ linux-5.8.0/drivers/pci/controller/pcie-iproc-msi.c @@ -209,15 +209,20 @@ struct iproc_msi *msi = irq_data_get_irq_chip_data(data); int target_cpu = cpumask_first(mask); int curr_cpu; + int ret; curr_cpu = hwirq_to_cpu(msi, data->hwirq); if (curr_cpu == target_cpu) - return IRQ_SET_MASK_OK_DONE; + ret = IRQ_SET_MASK_OK_DONE; + else { + /* steer MSI to the target CPU */ + data->hwirq = hwirq_to_canonical_hwirq(msi, data->hwirq) + target_cpu; + ret = IRQ_SET_MASK_OK; + } - /* steer MSI to the target CPU */ - data->hwirq = hwirq_to_canonical_hwirq(msi, data->hwirq) + target_cpu; + irq_data_update_effective_affinity(data, cpumask_of(target_cpu)); - return IRQ_SET_MASK_OK; + return ret; } static void iproc_msi_irq_compose_msi_msg(struct irq_data *data, --- linux-5.8.0.orig/drivers/pci/controller/pcie-iproc.c +++ linux-5.8.0/drivers/pci/controller/pcie-iproc.c @@ -192,8 +192,15 @@ .imap_window_offset = 0x4, }, { - /* IARR1/IMAP1 (currently unused) */ - .type = IPROC_PCIE_IB_MAP_INVALID, + /* IARR1/IMAP1 */ + .type = IPROC_PCIE_IB_MAP_MEM, + .size_unit = SZ_1M, + .region_sizes = { 8 }, + .nr_sizes = 1, + .nr_windows = 8, + .imap_addr_offset = 0x4, + .imap_window_offset = 0x8, + }, { /* IARR2/IMAP2 */ @@ -307,7 +314,7 @@ }; /* iProc PCIe PAXB BCMA registers */ -static const u16 iproc_pcie_reg_paxb_bcma[] = { +static const u16 iproc_pcie_reg_paxb_bcma[IPROC_PCIE_MAX_NUM_REG] = { [IPROC_PCIE_CLK_CTRL] = 0x000, [IPROC_PCIE_CFG_IND_ADDR] = 0x120, [IPROC_PCIE_CFG_IND_DATA] = 0x124, @@ -318,7 +325,7 @@ }; /* iProc PCIe PAXB registers */ -static const u16 iproc_pcie_reg_paxb[] = { +static const u16 iproc_pcie_reg_paxb[IPROC_PCIE_MAX_NUM_REG] = { [IPROC_PCIE_CLK_CTRL] = 0x000, [IPROC_PCIE_CFG_IND_ADDR] = 0x120, [IPROC_PCIE_CFG_IND_DATA] = 0x124, @@ -334,7 +341,7 @@ }; /* iProc PCIe PAXB v2 registers */ -static const u16 iproc_pcie_reg_paxb_v2[] = { +static const u16 iproc_pcie_reg_paxb_v2[IPROC_PCIE_MAX_NUM_REG] = { [IPROC_PCIE_CLK_CTRL] = 0x000, [IPROC_PCIE_CFG_IND_ADDR] = 0x120, [IPROC_PCIE_CFG_IND_DATA] = 0x124, @@ -351,6 +358,8 @@ [IPROC_PCIE_OMAP3] = 0xdf8, [IPROC_PCIE_IARR0] = 0xd00, [IPROC_PCIE_IMAP0] = 0xc00, + [IPROC_PCIE_IARR1] = 0xd08, + [IPROC_PCIE_IMAP1] = 0xd70, [IPROC_PCIE_IARR2] = 0xd10, [IPROC_PCIE_IMAP2] = 0xcc0, [IPROC_PCIE_IARR3] = 0xe00, @@ -363,7 +372,7 @@ }; /* iProc PCIe PAXC v1 registers */ -static const u16 iproc_pcie_reg_paxc[] = { +static const u16 iproc_pcie_reg_paxc[IPROC_PCIE_MAX_NUM_REG] = { [IPROC_PCIE_CLK_CTRL] = 0x000, [IPROC_PCIE_CFG_IND_ADDR] = 0x1f0, [IPROC_PCIE_CFG_IND_DATA] = 0x1f4, @@ -372,7 +381,7 @@ }; /* iProc PCIe PAXC v2 registers */ -static const u16 iproc_pcie_reg_paxc_v2[] = { +static const u16 iproc_pcie_reg_paxc_v2[IPROC_PCIE_MAX_NUM_REG] = { [IPROC_PCIE_MSI_GIC_MODE] = 0x050, [IPROC_PCIE_MSI_BASE_ADDR] = 0x074, [IPROC_PCIE_MSI_WINDOW_SIZE] = 0x078, --- linux-5.8.0.orig/drivers/pci/controller/pcie-mediatek.c +++ linux-5.8.0/drivers/pci/controller/pcie-mediatek.c @@ -1049,14 +1049,14 @@ err = of_pci_get_devfn(child); if (err < 0) { dev_err(dev, "failed to parse devfn: %d\n", err); - return err; + goto error_put_node; } slot = PCI_SLOT(err); err = mtk_pcie_parse_port(pcie, child, slot); if (err) - return err; + goto error_put_node; } err = mtk_pcie_subsys_powerup(pcie); @@ -1072,6 +1072,9 @@ mtk_pcie_subsys_powerdown(pcie); return 0; +error_put_node: + of_node_put(child); + return err; } static int mtk_pcie_probe(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/pci/controller/pcie-rcar-host.c +++ linux-5.8.0/drivers/pci/controller/pcie-rcar-host.c @@ -803,7 +803,7 @@ } /* setup MSI data target */ - msi->pages = __get_free_pages(GFP_KERNEL, 0); + msi->pages = __get_free_pages(GFP_KERNEL | GFP_DMA32, 0); rcar_pcie_hw_enable_msi(host); return 0; @@ -986,7 +986,7 @@ err = pm_runtime_get_sync(pcie->dev); if (err < 0) { dev_err(pcie->dev, "pm_runtime_get_sync failed\n"); - goto err_pm_disable; + goto err_pm_put; } err = rcar_pcie_get_resources(host); @@ -1057,8 +1057,6 @@ err_pm_put: pm_runtime_put(dev); - -err_pm_disable: pm_runtime_disable(dev); pci_free_resource_list(&host->resources); --- linux-5.8.0.orig/drivers/pci/controller/vmd.c +++ linux-5.8.0/drivers/pci/controller/vmd.c @@ -47,6 +47,12 @@ * bus numbering */ VMD_FEAT_HAS_BUS_RESTRICTIONS = (1 << 1), + + /* + * Device may use MSI-X vector 0 for software triggering and will not + * be used for MSI remapping + */ + VMD_FEAT_OFFSET_FIRST_VECTOR = (1 << 3), }; /* @@ -98,6 +104,7 @@ struct irq_domain *irq_domain; struct pci_bus *bus; u8 busn_start; + u8 first_vec; }; static inline struct vmd_dev *vmd_from_bus(struct pci_bus *bus) @@ -193,11 +200,11 @@ */ static struct vmd_irq_list *vmd_next_irq(struct vmd_dev *vmd, struct msi_desc *desc) { - int i, best = 1; unsigned long flags; + int i, best; - if (vmd->msix_count == 1) - return &vmd->irqs[0]; + if (vmd->msix_count == 1 + vmd->first_vec) + return &vmd->irqs[vmd->first_vec]; /* * White list for fast-interrupt handlers. All others will share the @@ -207,11 +214,12 @@ case PCI_CLASS_STORAGE_EXPRESS: break; default: - return &vmd->irqs[0]; + return &vmd->irqs[vmd->first_vec]; } raw_spin_lock_irqsave(&list_lock, flags); - for (i = 1; i < vmd->msix_count; i++) + best = vmd->first_vec + 1; + for (i = best; i < vmd->msix_count; i++) if (vmd->irqs[i].count < vmd->irqs[best].count) best = i; vmd->irqs[best].count++; @@ -560,6 +568,7 @@ if (!vmd->bus) { pci_free_resource_list(&resources); irq_domain_remove(vmd->irq_domain); + irq_domain_free_fwnode(fn); return -ENODEV; } @@ -600,6 +609,7 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id) { + unsigned long features = (unsigned long) id->driver_data; struct vmd_dev *vmd; int i, err; @@ -624,12 +634,15 @@ dma_set_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32))) return -ENODEV; + if (features & VMD_FEAT_OFFSET_FIRST_VECTOR) + vmd->first_vec = 1; + vmd->msix_count = pci_msix_vec_count(dev); if (vmd->msix_count < 0) return -ENODEV; - vmd->msix_count = pci_alloc_irq_vectors(dev, 1, vmd->msix_count, - PCI_IRQ_MSIX); + vmd->msix_count = pci_alloc_irq_vectors(dev, vmd->first_vec + 1, + vmd->msix_count, PCI_IRQ_MSIX); if (vmd->msix_count < 0) return vmd->msix_count; @@ -653,7 +666,7 @@ spin_lock_init(&vmd->cfg_lock); pci_set_drvdata(dev, vmd); - err = vmd_enable_domain(vmd, (unsigned long) id->driver_data); + err = vmd_enable_domain(vmd, features); if (err) return err; @@ -673,6 +686,7 @@ static void vmd_remove(struct pci_dev *dev) { struct vmd_dev *vmd = pci_get_drvdata(dev); + struct fwnode_handle *fn = vmd->irq_domain->fwnode; sysfs_remove_link(&vmd->dev->dev.kobj, "domain"); pci_stop_root_bus(vmd->bus); @@ -680,6 +694,7 @@ vmd_cleanup_srcu(vmd); vmd_detach_resources(vmd); irq_domain_remove(vmd->irq_domain); + irq_domain_free_fwnode(fn); } #ifdef CONFIG_PM_SLEEP @@ -722,11 +737,14 @@ .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW | VMD_FEAT_HAS_BUS_RESTRICTIONS,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x467f), - .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS,}, + .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS | + VMD_FEAT_OFFSET_FIRST_VECTOR,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x4c3d), - .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS,}, + .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS | + VMD_FEAT_OFFSET_FIRST_VECTOR,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B), - .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS,}, + .driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS | + VMD_FEAT_OFFSET_FIRST_VECTOR,}, {0,} }; MODULE_DEVICE_TABLE(pci, vmd_ids); --- linux-5.8.0.orig/drivers/pci/ecam.c +++ linux-5.8.0/drivers/pci/ecam.c @@ -168,4 +168,14 @@ .write = pci_generic_config_write32, } }; + +/* ECAM ops for 32-bit read only (non-compliant) */ +const struct pci_ecam_ops pci_32b_read_ops = { + .bus_shift = 20, + .pci_ops = { + .map_bus = pci_ecam_map_bus, + .read = pci_generic_config_read32, + .write = pci_generic_config_write, + } +}; #endif --- linux-5.8.0.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-5.8.0/drivers/pci/hotplug/acpiphp_glue.c @@ -122,13 +122,21 @@ struct acpiphp_context *context; acpi_lock_hp_context(); + context = acpiphp_get_context(adev); - if (!context || context->func.parent->is_going_away) { - acpi_unlock_hp_context(); - return NULL; + if (!context) + goto unlock; + + if (context->func.parent->is_going_away) { + acpiphp_put_context(context); + context = NULL; + goto unlock; } + get_bridge(context->func.parent); acpiphp_put_context(context); + +unlock: acpi_unlock_hp_context(); return context; } --- linux-5.8.0.orig/drivers/pci/hotplug/rpadlpar_sysfs.c +++ linux-5.8.0/drivers/pci/hotplug/rpadlpar_sysfs.c @@ -34,12 +34,11 @@ if (nbytes >= MAX_DRC_NAME_LEN) return 0; - memcpy(drc_name, buf, nbytes); + strscpy(drc_name, buf, nbytes + 1); end = strchr(drc_name, '\n'); - if (!end) - end = &drc_name[nbytes]; - *end = '\0'; + if (end) + *end = '\0'; rc = dlpar_add_slot(drc_name); if (rc) @@ -65,12 +64,11 @@ if (nbytes >= MAX_DRC_NAME_LEN) return 0; - memcpy(drc_name, buf, nbytes); + strscpy(drc_name, buf, nbytes + 1); end = strchr(drc_name, '\n'); - if (!end) - end = &drc_name[nbytes]; - *end = '\0'; + if (end) + *end = '\0'; rc = dlpar_remove_slot(drc_name); if (rc) --- linux-5.8.0.orig/drivers/pci/hotplug/s390_pci_hpc.c +++ linux-5.8.0/drivers/pci/hotplug/s390_pci_hpc.c @@ -83,20 +83,19 @@ struct zpci_dev *zdev = container_of(hotplug_slot, struct zpci_dev, hotplug_slot); struct pci_dev *pdev; - struct zpci_bus *zbus = zdev->zbus; int rc; if (!zpci_fn_configured(zdev->state)) return -EIO; - pdev = pci_get_slot(zbus->bus, zdev->devfn); - if (pdev) { - if (pci_num_vf(pdev)) - return -EBUSY; - - pci_stop_and_remove_bus_device_locked(pdev); + pdev = pci_get_slot(zdev->zbus->bus, zdev->devfn); + if (pdev && pci_num_vf(pdev)) { pci_dev_put(pdev); + return -EBUSY; } + pci_dev_put(pdev); + + zpci_remove_device(zdev, false); rc = zpci_disable_device(zdev); if (rc) --- linux-5.8.0.orig/drivers/pci/iov.c +++ linux-5.8.0/drivers/pci/iov.c @@ -180,6 +180,7 @@ virtfn->device = iov->vf_device; virtfn->is_virtfn = 1; virtfn->physfn = pci_dev_get(dev); + virtfn->no_command_memory = 1; if (id == 0) pci_read_vf_config_common(virtfn); --- linux-5.8.0.orig/drivers/pci/pci-acpi.c +++ linux-5.8.0/drivers/pci/pci-acpi.c @@ -944,6 +944,16 @@ if (!dev->is_hotplug_bridge) return false; + /* Assume D3 support if the bridge is power-manageable by ACPI. */ + adev = ACPI_COMPANION(&dev->dev); + if (!adev && !pci_dev_is_added(dev)) { + adev = acpi_pci_find_companion(&dev->dev); + ACPI_COMPANION_SET(&dev->dev, adev); + } + + if (adev && acpi_device_power_manageable(adev)) + return true; + /* * Look for a special _DSD property for the root port and if it * is set we know the hierarchy behind it supports D3 just fine. @@ -1050,7 +1060,7 @@ { while (bus->parent) { if (acpi_pm_device_can_wakeup(&bus->self->dev)) - return acpi_pm_set_bridge_wakeup(&bus->self->dev, enable); + return acpi_pm_set_device_wakeup(&bus->self->dev, enable); bus = bus->parent; } @@ -1058,7 +1068,7 @@ /* We have reached the root bus. */ if (bus->bridge) { if (acpi_pm_device_can_wakeup(bus->bridge)) - return acpi_pm_set_bridge_wakeup(bus->bridge, enable); + return acpi_pm_set_device_wakeup(bus->bridge, enable); } return 0; } --- linux-5.8.0.orig/drivers/pci/pci-bridge-emul.c +++ linux-5.8.0/drivers/pci/pci-bridge-emul.c @@ -21,8 +21,9 @@ #include "pci-bridge-emul.h" #define PCI_BRIDGE_CONF_END PCI_STD_HEADER_SIZEOF +#define PCI_CAP_PCIE_SIZEOF (PCI_EXP_SLTSTA2 + 2) #define PCI_CAP_PCIE_START PCI_BRIDGE_CONF_END -#define PCI_CAP_PCIE_END (PCI_CAP_PCIE_START + PCI_EXP_SLTSTA2 + 2) +#define PCI_CAP_PCIE_END (PCI_CAP_PCIE_START + PCI_CAP_PCIE_SIZEOF) /** * struct pci_bridge_reg_behavior - register bits behaviors @@ -46,7 +47,8 @@ u32 w1c; }; -static const struct pci_bridge_reg_behavior pci_regs_behavior[] = { +static const +struct pci_bridge_reg_behavior pci_regs_behavior[PCI_STD_HEADER_SIZEOF / 4] = { [PCI_VENDOR_ID / 4] = { .ro = ~0 }, [PCI_COMMAND / 4] = { .rw = (PCI_COMMAND_IO | PCI_COMMAND_MEMORY | @@ -164,7 +166,8 @@ }, }; -static const struct pci_bridge_reg_behavior pcie_cap_regs_behavior[] = { +static const +struct pci_bridge_reg_behavior pcie_cap_regs_behavior[PCI_CAP_PCIE_SIZEOF / 4] = { [PCI_CAP_LIST_ID / 4] = { /* * Capability ID, Next Capability Pointer and @@ -260,6 +263,8 @@ int pci_bridge_emul_init(struct pci_bridge_emul *bridge, unsigned int flags) { + BUILD_BUG_ON(sizeof(bridge->conf) != PCI_BRIDGE_CONF_END); + bridge->conf.class_revision |= cpu_to_le32(PCI_CLASS_BRIDGE_PCI << 16); bridge->conf.header_type = PCI_HEADER_TYPE_BRIDGE; bridge->conf.cache_line_size = 0x10; --- linux-5.8.0.orig/drivers/pci/pci.c +++ linux-5.8.0/drivers/pci/pci.c @@ -3539,7 +3539,14 @@ return 0; pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap); - return (cap & PCI_REBAR_CAP_SIZES) >> 4; + cap &= PCI_REBAR_CAP_SIZES; + + /* Sapphire RX 5600 XT Pulse has an invalid cap dword for BAR 0 */ + if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f && + bar == 0 && cap == 0x7000) + cap = 0x3f000; + + return cap >> 4; } /** @@ -3965,6 +3972,10 @@ ret = logic_pio_register_range(range); if (ret) kfree(range); + + /* Ignore duplicates due to deferred probing */ + if (ret == -EEXIST) + ret = 0; #endif return ret; @@ -6165,19 +6176,21 @@ while (*p) { count = 0; if (sscanf(p, "%d%n", &align_order, &count) == 1 && - p[count] == '@') { + p[count] == '@') { p += count + 1; + if (align_order > 63) { + pr_err("PCI: Invalid requested alignment (order %d)\n", + align_order); + align_order = PAGE_SHIFT; + } } else { - align_order = -1; + align_order = PAGE_SHIFT; } ret = pci_dev_str_match(dev, p, &p); if (ret == 1) { *resize = true; - if (align_order == -1) - align = PAGE_SIZE; - else - align = 1 << align_order; + align = 1ULL << align_order; break; } else if (ret < 0) { pr_err("PCI: Can't parse resource_alignment parameter: %s\n", --- linux-5.8.0.orig/drivers/pci/pcie/Kconfig +++ linux-5.8.0/drivers/pci/pcie/Kconfig @@ -133,14 +133,6 @@ This is only useful if you have devices that support PTM, but it is safe to enable even if you don't. -config PCIE_BW - bool "PCI Express Bandwidth Change Notification" - depends on PCIEPORTBUS - help - This enables PCI Express Bandwidth Change Notification. If - you know link width or rate changes occur only to correct - unreliable links, you may answer Y. - config PCIE_EDR bool "PCI Express Error Disconnect Recover support" depends on PCIE_DPC && ACPI --- linux-5.8.0.orig/drivers/pci/pcie/Makefile +++ linux-5.8.0/drivers/pci/pcie/Makefile @@ -12,5 +12,4 @@ obj-$(CONFIG_PCIE_PME) += pme.o obj-$(CONFIG_PCIE_DPC) += dpc.o obj-$(CONFIG_PCIE_PTM) += ptm.o -obj-$(CONFIG_PCIE_BW) += bw_notification.o obj-$(CONFIG_PCIE_EDR) += edr.o --- linux-5.8.0.orig/drivers/pci/pcie/aspm.c +++ linux-5.8.0/drivers/pci/pcie/aspm.c @@ -624,7 +624,8 @@ aspm_calc_l1ss_info(link, &upreg, &dwreg); /* Save default state */ - link->aspm_default = link->aspm_enabled; + link->aspm_default = parent->dev_flags & PCI_DEV_FLAGS_ENABLE_ASPM ? + ASPM_STATE_ALL : link->aspm_enabled; /* Setup initial capable state. Will be updated later */ link->aspm_capable = link->aspm_support; @@ -1182,6 +1183,7 @@ cnt += sprintf(buffer + cnt, "[%s] ", policy_str[i]); else cnt += sprintf(buffer + cnt, "%s ", policy_str[i]); + cnt += sprintf(buffer + cnt, "\n"); return cnt; } --- linux-5.8.0.orig/drivers/pci/pcie/portdrv.h +++ linux-5.8.0/drivers/pci/pcie/portdrv.h @@ -53,12 +53,6 @@ static inline int pcie_dpc_init(void) { return 0; } #endif -#ifdef CONFIG_PCIE_BW -int pcie_bandwidth_notification_init(void); -#else -static inline int pcie_bandwidth_notification_init(void) { return 0; } -#endif - /* Port Type */ #define PCIE_ANY_PORT (~0) --- linux-5.8.0.orig/drivers/pci/pcie/portdrv_pci.c +++ linux-5.8.0/drivers/pci/pcie/portdrv_pci.c @@ -248,7 +248,6 @@ pcie_pme_init(); pcie_dpc_init(); pcie_hp_init(); - pcie_bandwidth_notification_init(); } static int __init pcie_portdrv_init(void) --- linux-5.8.0.orig/drivers/pci/quirks.c +++ linux-5.8.0/drivers/pci/quirks.c @@ -205,6 +205,21 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on); +/* The BAR0 ~ BAR4 of Marvell 9125 device can't be accessed +* by IO resource file, and need to skip the files +*/ +static void quirk_marvell_mask_bar(struct pci_dev *dev) +{ + int i; + + for (i = 0; i < 5; i++) + if (dev->resource[i].start) + dev->resource[i].start = + dev->resource[i].end = 0; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9125, + quirk_marvell_mask_bar); + /* * The Mellanox Tavor device gives false positive parity errors. Mark this * device with a broken_parity_status to allow PCI scanning code to "skip" @@ -4055,6 +4070,9 @@ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0, quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c135 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9215, + quirk_dma_func1_alias); /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c127 */ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9220, quirk_dma_func1_alias); @@ -4422,6 +4440,8 @@ if (ACPI_FAILURE(status)) return -ENODEV; + acpi_put_table(header); + /* Filter out flags not applicable to multifunction */ acs_flags &= (PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_EC | PCI_ACS_DT); @@ -4647,6 +4667,7 @@ return false; switch (dev->device) { + case 0x06ac ... 0x06c3: /* Comet Lake */ case 0xa110 ... 0xa11f: case 0xa167 ... 0xa16a: /* Sunrise Point */ case 0xa290 ... 0xa29f: case 0xa2e7 ... 0xa2ee: /* Union Point */ case 0x9d10 ... 0x9d1b: /* 7th & 8th Gen Mobile */ @@ -5177,6 +5198,27 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_no_flr); DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_no_flr); +static void quirk_intel_th_rtit_bar(struct pci_dev *dev) +{ + struct resource *r = &dev->resource[4]; + + /* + * Hello, Denverton! + * Denverton reports 2k of RTIT_BAR (resource 4), which can't be + * right given the 16 threads. When Intel TH gets enabled, the + * actual resource overlaps the XHCI MMIO space and causes it + * to die. + * We're not really using RTIT_BAR at all at the moment, so it's + * a safe choice to disable this resource. + */ + if (r->end == r->start + 0x7ff) { + r->flags = 0; + r->start = 0; + r->end = 0; + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x19e1, quirk_intel_th_rtit_bar); + static void quirk_no_ext_tags(struct pci_dev *pdev) { struct pci_host_bridge *bridge = pci_find_host_bridge(pdev->bus); @@ -5205,7 +5247,8 @@ */ static void quirk_amd_harvest_no_ats(struct pci_dev *pdev) { - if (pdev->device == 0x7340 && pdev->revision != 0xc5) + if ((pdev->device == 0x7312 && pdev->revision != 0x00) || + (pdev->device == 0x7340 && pdev->revision != 0xc5)) return; pci_info(pdev, "disabling ATS\n"); @@ -5216,6 +5259,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_amd_harvest_no_ats); /* AMD Iceland dGPU */ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6900, quirk_amd_harvest_no_ats); +/* AMD Navi10 dGPU */ +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7312, quirk_amd_harvest_no_ats); /* AMD Navi14 dGPU */ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7340, quirk_amd_harvest_no_ats); #endif /* CONFIG_PCI_ATS */ @@ -5609,17 +5654,26 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x2142, pci_fixup_no_d0_pme); /* - * Device [12d8:0x400e] and [12d8:0x400f] + * Device 12d8:0x400e [OHCI] and 12d8:0x400f [EHCI] + * * These devices advertise PME# support in all power states but don't * reliably assert it. + * + * These devices also advertise MSI, but documentation (PI7C9X440SL.pdf) + * says "The MSI Function is not implemented on this device" in chapters + * 7.3.27, 7.3.29-7.3.31. */ -static void pci_fixup_no_pme(struct pci_dev *dev) +static void pci_fixup_no_msi_no_pme(struct pci_dev *dev) { +#ifdef CONFIG_PCI_MSI + pci_info(dev, "MSI is not implemented on this device, disabling it\n"); + dev->no_msi = 1; +#endif pci_info(dev, "PME# is unreliable, disabling it\n"); dev->pme_support = 0; } -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_pme); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_pme); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400e, pci_fixup_no_msi_no_pme); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_PERICOM, 0x400f, pci_fixup_no_msi_no_pme); static void apex_pci_fixup_class(struct pci_dev *pdev) { @@ -5627,3 +5681,57 @@ } DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a, PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class); + +/* + * Device [8086:9a09], [8086:a0b0] and [8086:a0bc] + * BIOS may not be able to access config space of devices under VMD domain, so + * it relies on software to enable ASPM for links under VMD. + */ +static const struct pci_device_id vmd_bridge_tbl[] = { + { PCI_VDEVICE(INTEL, 0x9a09) }, + { PCI_VDEVICE(INTEL, 0xa0b0) }, + { PCI_VDEVICE(INTEL, 0xa0bc) }, + { } +}; + +static void pci_fixup_enable_aspm(struct pci_dev *pdev) +{ + if (!pci_match_id(vmd_bridge_tbl, pdev)) + return; + + pdev->dev_flags |= PCI_DEV_FLAGS_ENABLE_ASPM; +} +DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, + PCI_CLASS_BRIDGE_PCI, 8, pci_fixup_enable_aspm); + +static void pci_fixup_enable_vmd_nvme_ltr(struct pci_dev *pdev) +{ + struct pci_dev *parent; + int pos; + u16 val; + + parent = pci_upstream_bridge(pdev); + if (!parent) + return; + + if (!pci_match_id(vmd_bridge_tbl, parent)) + return; + + pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_LTR); + if (!pos) + return; + + pci_read_config_word(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, &val); + if (val) + return; + + pci_read_config_word(pdev, pos + PCI_LTR_MAX_NOSNOOP_LAT, &val); + if (val) + return; + + /* 3145728ns, i.e. 0x300000ns */ + pci_write_config_word(pdev, pos + PCI_LTR_MAX_SNOOP_LAT, 0x1003); + pci_write_config_word(pdev, pos + PCI_LTR_MAX_NOSNOOP_LAT, 0x1003); +} +DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID, + PCI_CLASS_STORAGE_EXPRESS, 0, pci_fixup_enable_vmd_nvme_ltr); --- linux-5.8.0.orig/drivers/pci/setup-res.c +++ linux-5.8.0/drivers/pci/setup-res.c @@ -409,10 +409,16 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size) { struct resource *res = dev->resource + resno; + struct pci_host_bridge *host; int old, ret; u32 sizes; u16 cmd; + /* Check if we must preserve the firmware's resource assignment */ + host = pci_find_host_bridge(dev->bus); + if (host->preserve_config) + return -ENOTSUPP; + /* Make sure the resource isn't assigned before resizing it. */ if (!(res->flags & IORESOURCE_UNSET)) return -EBUSY; --- linux-5.8.0.orig/drivers/pci/slot.c +++ linux-5.8.0/drivers/pci/slot.c @@ -268,16 +268,19 @@ slot_name = make_slot_name(name); if (!slot_name) { err = -ENOMEM; + kfree(slot); goto err; } + INIT_LIST_HEAD(&slot->list); + list_add(&slot->list, &parent->slots); + err = kobject_init_and_add(&slot->kobj, &pci_slot_ktype, NULL, "%s", slot_name); - if (err) + if (err) { + kobject_put(&slot->kobj); goto err; - - INIT_LIST_HEAD(&slot->list); - list_add(&slot->list, &parent->slots); + } down_read(&pci_bus_sem); list_for_each_entry(dev, &parent->devices, bus_list) @@ -293,7 +296,6 @@ mutex_unlock(&pci_slot_mutex); return slot; err: - kfree(slot); slot = ERR_PTR(err); goto out; } --- linux-5.8.0.orig/drivers/pci/syscall.c +++ linux-5.8.0/drivers/pci/syscall.c @@ -20,7 +20,7 @@ u16 word; u32 dword; long err; - long cfg_ret; + int cfg_ret; if (!capable(CAP_SYS_ADMIN)) return -EPERM; @@ -46,7 +46,7 @@ } err = -EIO; - if (cfg_ret != PCIBIOS_SUCCESSFUL) + if (cfg_ret) goto error; switch (len) { @@ -105,7 +105,7 @@ if (err) break; err = pci_user_write_config_byte(dev, off, byte); - if (err != PCIBIOS_SUCCESSFUL) + if (err) err = -EIO; break; @@ -114,7 +114,7 @@ if (err) break; err = pci_user_write_config_word(dev, off, word); - if (err != PCIBIOS_SUCCESSFUL) + if (err) err = -EIO; break; @@ -123,7 +123,7 @@ if (err) break; err = pci_user_write_config_dword(dev, off, dword); - if (err != PCIBIOS_SUCCESSFUL) + if (err) err = -EIO; break; --- linux-5.8.0.orig/drivers/perf/thunderx2_pmu.c +++ linux-5.8.0/drivers/perf/thunderx2_pmu.c @@ -805,14 +805,17 @@ list_for_each_entry(rentry, &list, node) { if (resource_type(rentry->res) == IORESOURCE_MEM) { res = *rentry->res; + rentry = NULL; break; } } + acpi_dev_free_resource_list(&list); - if (!rentry->res) + if (rentry) { + dev_err(dev, "PMU type %d: Fail to find resource\n", type); return NULL; + } - acpi_dev_free_resource_list(&list); base = devm_ioremap_resource(dev, &res); if (IS_ERR(base)) { dev_err(dev, "PMU type %d: Fail to map resource\n", type); --- linux-5.8.0.orig/drivers/perf/xgene_pmu.c +++ linux-5.8.0/drivers/perf/xgene_pmu.c @@ -1453,17 +1453,6 @@ } #if defined(CONFIG_ACPI) -static int acpi_pmu_dev_add_resource(struct acpi_resource *ares, void *data) -{ - struct resource *res = data; - - if (ares->type == ACPI_RESOURCE_TYPE_FIXED_MEMORY32) - acpi_dev_resource_memory(ares, res); - - /* Always tell the ACPI core to skip this resource */ - return 1; -} - static struct xgene_pmu_dev_ctx *acpi_get_pmu_hw_inf(struct xgene_pmu *xgene_pmu, struct acpi_device *adev, u32 type) @@ -1475,6 +1464,7 @@ struct hw_pmu_info *inf; void __iomem *dev_csr; struct resource res; + struct resource_entry *rentry; int enable_bit; int rc; @@ -1483,11 +1473,23 @@ return NULL; INIT_LIST_HEAD(&resource_list); - rc = acpi_dev_get_resources(adev, &resource_list, - acpi_pmu_dev_add_resource, &res); + rc = acpi_dev_get_resources(adev, &resource_list, NULL, NULL); + if (rc <= 0) { + dev_err(dev, "PMU type %d: No resources found\n", type); + return NULL; + } + + list_for_each_entry(rentry, &resource_list, node) { + if (resource_type(rentry->res) == IORESOURCE_MEM) { + res = *rentry->res; + rentry = NULL; + break; + } + } acpi_dev_free_resource_list(&resource_list); - if (rc < 0) { - dev_err(dev, "PMU type %d: No resource address found\n", type); + + if (rentry) { + dev_err(dev, "PMU type %d: No memory resource found\n", type); return NULL; } --- linux-5.8.0.orig/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c +++ linux-5.8.0/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c @@ -270,11 +270,6 @@ reg |= params->mode << USB_PHY_UTMI_CTL_1_PHY_MODE_SHIFT; brcm_usb_writel(reg, usb_phy + USB_PHY_UTMI_CTL_1); - /* Fix the incorrect default */ - reg = brcm_usb_readl(ctrl + USB_CTRL_SETUP); - reg &= ~USB_CTRL_SETUP_tca_drv_sel_MASK; - brcm_usb_writel(reg, ctrl + USB_CTRL_SETUP); - usb_init_common(params); /* --- linux-5.8.0.orig/drivers/phy/cadence/phy-cadence-salvo.c +++ linux-5.8.0/drivers/phy/cadence/phy-cadence-salvo.c @@ -88,7 +88,7 @@ #define TB_ADDR_TX_RCVDETSC_CTRL 0x4124 /* TB_ADDR_TX_RCVDETSC_CTRL */ -#define RXDET_IN_P3_32KHZ BIT(1) +#define RXDET_IN_P3_32KHZ BIT(0) struct cdns_reg_pairs { u16 val; --- linux-5.8.0.orig/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c +++ linux-5.8.0/drivers/phy/lantiq/phy-lantiq-rcu-usb2.c @@ -124,8 +124,16 @@ reset_control_deassert(priv->phy_reset); ret = clk_prepare_enable(priv->phy_gate_clk); - if (ret) + if (ret) { dev_err(dev, "failed to enable PHY gate\n"); + return ret; + } + + /* + * at least the xrx200 usb2 phy requires some extra time to be + * operational after enabling the clock + */ + usleep_range(100, 200); return ret; } --- linux-5.8.0.orig/drivers/phy/marvell/phy-armada38x-comphy.c +++ linux-5.8.0/drivers/phy/marvell/phy-armada38x-comphy.c @@ -41,6 +41,7 @@ struct a38x_comphy { void __iomem *base; + void __iomem *conf; struct device *dev; struct a38x_comphy_lane lane[MAX_A38X_COMPHY]; }; @@ -54,6 +55,21 @@ { 0, 0, 3 }, }; +static void a38x_set_conf(struct a38x_comphy_lane *lane, bool enable) +{ + struct a38x_comphy *priv = lane->priv; + u32 conf; + + if (priv->conf) { + conf = readl_relaxed(priv->conf); + if (enable) + conf |= BIT(lane->port); + else + conf &= ~BIT(lane->port); + writel(conf, priv->conf); + } +} + static void a38x_comphy_set_reg(struct a38x_comphy_lane *lane, unsigned int offset, u32 mask, u32 value) { @@ -97,6 +113,7 @@ { struct a38x_comphy_lane *lane = phy_get_drvdata(phy); unsigned int gen; + int ret; if (mode != PHY_MODE_ETHERNET) return -EINVAL; @@ -115,13 +132,20 @@ return -EINVAL; } + a38x_set_conf(lane, false); + a38x_comphy_set_speed(lane, gen, gen); - return a38x_comphy_poll(lane, COMPHY_STAT1, - COMPHY_STAT1_PLL_RDY_TX | - COMPHY_STAT1_PLL_RDY_RX, - COMPHY_STAT1_PLL_RDY_TX | - COMPHY_STAT1_PLL_RDY_RX); + ret = a38x_comphy_poll(lane, COMPHY_STAT1, + COMPHY_STAT1_PLL_RDY_TX | + COMPHY_STAT1_PLL_RDY_RX, + COMPHY_STAT1_PLL_RDY_TX | + COMPHY_STAT1_PLL_RDY_RX); + + if (ret == 0) + a38x_set_conf(lane, true); + + return ret; } static const struct phy_ops a38x_comphy_ops = { @@ -174,14 +198,21 @@ if (!priv) return -ENOMEM; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - base = devm_ioremap_resource(&pdev->dev, res); + base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(base)) return PTR_ERR(base); priv->dev = &pdev->dev; priv->base = base; + /* Optional */ + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "conf"); + if (res) { + priv->conf = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->conf)) + return PTR_ERR(priv->conf); + } + for_each_available_child_of_node(pdev->dev.of_node, child) { struct phy *phy; int ret; --- linux-5.8.0.orig/drivers/phy/marvell/phy-mvebu-a3700-comphy.c +++ linux-5.8.0/drivers/phy/marvell/phy-mvebu-a3700-comphy.c @@ -26,7 +26,6 @@ #define COMPHY_SIP_POWER_ON 0x82000001 #define COMPHY_SIP_POWER_OFF 0x82000002 #define COMPHY_SIP_PLL_LOCK 0x82000003 -#define COMPHY_FW_NOT_SUPPORTED (-1) #define COMPHY_FW_MODE_SATA 0x1 #define COMPHY_FW_MODE_SGMII 0x2 @@ -112,10 +111,19 @@ unsigned long mode) { struct arm_smccc_res res; + s32 ret; arm_smccc_smc(function, lane, mode, 0, 0, 0, 0, 0, &res); + ret = res.a0; - return res.a0; + switch (ret) { + case SMCCC_RET_SUCCESS: + return 0; + case SMCCC_RET_NOT_SUPPORTED: + return -EOPNOTSUPP; + default: + return -EINVAL; + } } static int mvebu_a3700_comphy_get_fw_mode(int lane, int port, @@ -220,7 +228,7 @@ } ret = mvebu_a3700_comphy_smc(COMPHY_SIP_POWER_ON, lane->id, fw_param); - if (ret == COMPHY_FW_NOT_SUPPORTED) + if (ret == -EOPNOTSUPP) dev_err(lane->dev, "unsupported SMC call, try updating your firmware\n"); --- linux-5.8.0.orig/drivers/phy/marvell/phy-mvebu-cp110-comphy.c +++ linux-5.8.0/drivers/phy/marvell/phy-mvebu-cp110-comphy.c @@ -123,7 +123,6 @@ #define COMPHY_SIP_POWER_ON 0x82000001 #define COMPHY_SIP_POWER_OFF 0x82000002 -#define COMPHY_FW_NOT_SUPPORTED (-1) /* * A lane is described by the following bitfields: @@ -273,10 +272,19 @@ unsigned long lane, unsigned long mode) { struct arm_smccc_res res; + s32 ret; arm_smccc_smc(function, phys, lane, mode, 0, 0, 0, 0, &res); + ret = res.a0; - return res.a0; + switch (ret) { + case SMCCC_RET_SUCCESS: + return 0; + case SMCCC_RET_NOT_SUPPORTED: + return -EOPNOTSUPP; + default: + return -EINVAL; + } } static int mvebu_comphy_get_mode(bool fw_mode, int lane, int port, @@ -819,7 +827,7 @@ if (!ret) return ret; - if (ret == COMPHY_FW_NOT_SUPPORTED) + if (ret == -EOPNOTSUPP) dev_err(priv->dev, "unsupported SMC call, try updating your firmware\n"); --- linux-5.8.0.orig/drivers/phy/motorola/phy-cpcap-usb.c +++ linux-5.8.0/drivers/phy/motorola/phy-cpcap-usb.c @@ -661,35 +661,42 @@ generic_phy = devm_phy_create(ddata->dev, NULL, &ops); if (IS_ERR(generic_phy)) { error = PTR_ERR(generic_phy); - return PTR_ERR(generic_phy); + goto out_reg_disable; } phy_set_drvdata(generic_phy, ddata); phy_provider = devm_of_phy_provider_register(ddata->dev, of_phy_simple_xlate); - if (IS_ERR(phy_provider)) - return PTR_ERR(phy_provider); + if (IS_ERR(phy_provider)) { + error = PTR_ERR(phy_provider); + goto out_reg_disable; + } error = cpcap_usb_init_optional_pins(ddata); if (error) - return error; + goto out_reg_disable; cpcap_usb_init_optional_gpios(ddata); error = cpcap_usb_init_iio(ddata); if (error) - return error; + goto out_reg_disable; error = cpcap_usb_init_interrupts(pdev, ddata); if (error) - return error; + goto out_reg_disable; usb_add_phy_dev(&ddata->phy); atomic_set(&ddata->active, 1); schedule_delayed_work(&ddata->detect_work, msecs_to_jiffies(1)); return 0; + +out_reg_disable: + regulator_disable(ddata->vusb); + + return error; } static int cpcap_usb_phy_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/phy/qualcomm/Kconfig +++ linux-5.8.0/drivers/phy/qualcomm/Kconfig @@ -111,7 +111,7 @@ config PHY_QCOM_USB_HS_28NM tristate "Qualcomm 28nm High-Speed PHY" - depends on ARCH_QCOM || COMPILE_TEST + depends on OF && (ARCH_QCOM || COMPILE_TEST) depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in select GENERIC_PHY help @@ -122,7 +122,7 @@ config PHY_QCOM_USB_SS tristate "Qualcomm USB Super-Speed PHY driver" - depends on ARCH_QCOM || COMPILE_TEST + depends on OF && (ARCH_QCOM || COMPILE_TEST) depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in select GENERIC_PHY help --- linux-5.8.0.orig/drivers/phy/qualcomm/phy-qcom-qmp.c +++ linux-5.8.0/drivers/phy/qualcomm/phy-qcom-qmp.c @@ -504,8 +504,8 @@ QMP_PHY_INIT_CFG(QSERDES_COM_BG_TRIM, 0xf), QMP_PHY_INIT_CFG(QSERDES_COM_LOCK_CMP_EN, 0x1), QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_MAP, 0x0), - QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER1, 0x1f), - QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER2, 0x3f), + QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER1, 0xff), + QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_TIMER2, 0x1f), QMP_PHY_INIT_CFG(QSERDES_COM_CMN_CONFIG, 0x6), QMP_PHY_INIT_CFG(QSERDES_COM_PLL_IVCO, 0xf), QMP_PHY_INIT_CFG(QSERDES_COM_HSCLK_SEL, 0x0), @@ -531,7 +531,6 @@ QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN1_MODE0, 0x0), QMP_PHY_INIT_CFG(QSERDES_COM_INTEGLOOP_GAIN0_MODE0, 0x80), QMP_PHY_INIT_CFG(QSERDES_COM_BIAS_EN_CTRL_BY_PSM, 0x1), - QMP_PHY_INIT_CFG(QSERDES_COM_VCO_TUNE_CTRL, 0xa), QMP_PHY_INIT_CFG(QSERDES_COM_SSC_EN_CENTER, 0x1), QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER1, 0x31), QMP_PHY_INIT_CFG(QSERDES_COM_SSC_PER2, 0x1), @@ -540,7 +539,6 @@ QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE1, 0x2f), QMP_PHY_INIT_CFG(QSERDES_COM_SSC_STEP_SIZE2, 0x19), QMP_PHY_INIT_CFG(QSERDES_COM_CLK_EP_DIV, 0x19), - QMP_PHY_INIT_CFG(QSERDES_RX_SIGDET_CNTRL, 0x7), }; static const struct qmp_phy_init_tbl ipq8074_pcie_tx_tbl[] = { @@ -548,6 +546,8 @@ QMP_PHY_INIT_CFG(QSERDES_TX_LANE_MODE, 0x6), QMP_PHY_INIT_CFG(QSERDES_TX_RES_CODE_LANE_OFFSET, 0x2), QMP_PHY_INIT_CFG(QSERDES_TX_RCV_DETECT_LVL_2, 0x12), + QMP_PHY_INIT_CFG(QSERDES_TX_EMP_POST1_LVL, 0x36), + QMP_PHY_INIT_CFG(QSERDES_TX_SLEW_CNTL, 0x0a), }; static const struct qmp_phy_init_tbl ipq8074_pcie_rx_tbl[] = { @@ -558,7 +558,6 @@ QMP_PHY_INIT_CFG(QSERDES_RX_RX_EQU_ADAPTOR_CNTRL4, 0xdb), QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x4b), QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_GAIN, 0x4), - QMP_PHY_INIT_CFG(QSERDES_RX_UCDR_SO_GAIN_HALF, 0x4), }; static const struct qmp_phy_init_tbl ipq8074_pcie_pcs_tbl[] = { @@ -1673,6 +1672,9 @@ .pwrdn_ctrl = SW_PWRDN, }; +static const char * const ipq8074_pciephy_clk_l[] = { + "aux", "cfg_ahb", +}; /* list of resets */ static const char * const ipq8074_pciephy_reset_l[] = { "phy", "common", @@ -1690,8 +1692,8 @@ .rx_tbl_num = ARRAY_SIZE(ipq8074_pcie_rx_tbl), .pcs_tbl = ipq8074_pcie_pcs_tbl, .pcs_tbl_num = ARRAY_SIZE(ipq8074_pcie_pcs_tbl), - .clk_list = NULL, - .num_clks = 0, + .clk_list = ipq8074_pciephy_clk_l, + .num_clks = ARRAY_SIZE(ipq8074_pciephy_clk_l), .reset_list = ipq8074_pciephy_reset_l, .num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l), .vreg_list = NULL, --- linux-5.8.0.orig/drivers/phy/qualcomm/phy-qcom-qmp.h +++ linux-5.8.0/drivers/phy/qualcomm/phy-qcom-qmp.h @@ -77,6 +77,8 @@ #define QSERDES_COM_CORECLK_DIV_MODE1 0x1bc /* Only for QMP V2 PHY - TX registers */ +#define QSERDES_TX_EMP_POST1_LVL 0x018 +#define QSERDES_TX_SLEW_CNTL 0x040 #define QSERDES_TX_RES_CODE_LANE_OFFSET 0x054 #define QSERDES_TX_DEBUG_BUS_SEL 0x064 #define QSERDES_TX_HIGHZ_TRANSCEIVEREN_BIAS_DRVR_EN 0x068 --- linux-5.8.0.orig/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ linux-5.8.0/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -111,6 +111,7 @@ struct work_struct work; struct mutex lock; /* protects rphys[...].powered */ enum usb_dr_mode dr_mode; + int irq; bool extcon_host; bool is_otg_channel; bool uses_otg_pins; @@ -389,12 +390,38 @@ rcar_gen3_device_recognition(ch); } +static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch) +{ + struct rcar_gen3_chan *ch = _ch; + void __iomem *usb2_base = ch->base; + u32 status = readl(usb2_base + USB2_OBINTSTA); + irqreturn_t ret = IRQ_NONE; + + if (status & USB2_OBINT_BITS) { + dev_vdbg(ch->dev, "%s: %08x\n", __func__, status); + writel(USB2_OBINT_BITS, usb2_base + USB2_OBINTSTA); + rcar_gen3_device_recognition(ch); + ret = IRQ_HANDLED; + } + + return ret; +} + static int rcar_gen3_phy_usb2_init(struct phy *p) { struct rcar_gen3_phy *rphy = phy_get_drvdata(p); struct rcar_gen3_chan *channel = rphy->ch; void __iomem *usb2_base = channel->base; u32 val; + int ret; + + if (!rcar_gen3_is_any_rphy_initialized(channel) && channel->irq >= 0) { + INIT_WORK(&channel->work, rcar_gen3_phy_usb2_work); + ret = request_irq(channel->irq, rcar_gen3_phy_usb2_irq, + IRQF_SHARED, dev_name(channel->dev), channel); + if (ret < 0) + dev_err(channel->dev, "No irq handler (%d)\n", channel->irq); + } /* Initialize USB2 part */ val = readl(usb2_base + USB2_INT_ENABLE); @@ -433,6 +460,9 @@ val &= ~USB2_INT_ENABLE_UCOM_INTEN; writel(val, usb2_base + USB2_INT_ENABLE); + if (channel->irq >= 0 && !rcar_gen3_is_any_rphy_initialized(channel)) + free_irq(channel->irq, channel); + return 0; } @@ -503,23 +533,6 @@ .owner = THIS_MODULE, }; -static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch) -{ - struct rcar_gen3_chan *ch = _ch; - void __iomem *usb2_base = ch->base; - u32 status = readl(usb2_base + USB2_OBINTSTA); - irqreturn_t ret = IRQ_NONE; - - if (status & USB2_OBINT_BITS) { - dev_vdbg(ch->dev, "%s: %08x\n", __func__, status); - writel(USB2_OBINT_BITS, usb2_base + USB2_OBINTSTA); - rcar_gen3_device_recognition(ch); - ret = IRQ_HANDLED; - } - - return ret; -} - static const struct of_device_id rcar_gen3_phy_usb2_match_table[] = { { .compatible = "renesas,usb2-phy-r8a77470", @@ -598,7 +611,7 @@ struct phy_provider *provider; struct resource *res; const struct phy_ops *phy_usb2_ops; - int irq, ret = 0, i; + int ret = 0, i; if (!dev->of_node) { dev_err(dev, "This driver needs device tree\n"); @@ -614,16 +627,8 @@ if (IS_ERR(channel->base)) return PTR_ERR(channel->base); - /* call request_irq for OTG */ - irq = platform_get_irq_optional(pdev, 0); - if (irq >= 0) { - INIT_WORK(&channel->work, rcar_gen3_phy_usb2_work); - irq = devm_request_irq(dev, irq, rcar_gen3_phy_usb2_irq, - IRQF_SHARED, dev_name(dev), channel); - if (irq < 0) - dev_err(dev, "No irq handler (%d)\n", irq); - } - + /* get irq number here and request_irq for OTG in phy_init */ + channel->irq = platform_get_irq_optional(pdev, 0); channel->dr_mode = rcar_gen3_get_dr_mode(dev->of_node); if (channel->dr_mode != USB_DR_MODE_UNKNOWN) { int ret; @@ -649,8 +654,10 @@ */ pm_runtime_enable(dev); phy_usb2_ops = of_device_get_match_data(dev); - if (!phy_usb2_ops) - return -EINVAL; + if (!phy_usb2_ops) { + ret = -EINVAL; + goto error; + } mutex_init(&channel->lock); for (i = 0; i < NUM_OF_PHYS; i++) { --- linux-5.8.0.orig/drivers/phy/rockchip/phy-rockchip-emmc.c +++ linux-5.8.0/drivers/phy/rockchip/phy-rockchip-emmc.c @@ -240,15 +240,17 @@ * - SDHCI driver to get the PHY * - SDHCI driver to init the PHY * - * The clock is optional, so upon any error we just set to NULL. + * The clock is optional, using clk_get_optional() to get the clock + * and do error processing if the return value != NULL * * NOTE: we don't do anything special for EPROBE_DEFER here. Given the * above expected use case, EPROBE_DEFER isn't sensible to expect, so * it's just like any other error. */ - rk_phy->emmcclk = clk_get(&phy->dev, "emmcclk"); + rk_phy->emmcclk = clk_get_optional(&phy->dev, "emmcclk"); if (IS_ERR(rk_phy->emmcclk)) { - dev_dbg(&phy->dev, "Error getting emmcclk: %d\n", ret); + ret = PTR_ERR(rk_phy->emmcclk); + dev_err(&phy->dev, "Error getting emmcclk: %d\n", ret); rk_phy->emmcclk = NULL; } --- linux-5.8.0.orig/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ linux-5.8.0/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -714,7 +714,9 @@ struct phy_usb_instance *inst = phy_get_drvdata(phy); struct exynos5_usbdrd_phy *phy_drd = to_usbdrd_phy(inst); - return exynos5420_usbdrd_phy_calibrate(phy_drd); + if (inst->phy_cfg->id == EXYNOS5_DRDPHY_UTMI) + return exynos5420_usbdrd_phy_calibrate(phy_drd); + return 0; } static const struct phy_ops exynos5_usbdrd_phy_ops = { --- linux-5.8.0.orig/drivers/phy/tegra/xusb.c +++ linux-5.8.0/drivers/phy/tegra/xusb.c @@ -688,7 +688,7 @@ * reference to retrieve usb-phy details. */ port->usb_phy.dev = &lane->pad->lanes[port->index]->dev; - port->usb_phy.dev->driver = port->padctl->dev->driver; + port->usb_phy.dev->driver = port->dev.driver; port->usb_phy.otg->usb_phy = &port->usb_phy; port->usb_phy.otg->set_peripheral = tegra_xusb_set_peripheral; port->usb_phy.otg->set_host = tegra_xusb_set_host; @@ -1242,6 +1242,7 @@ reset: reset_control_assert(padctl->rst); remove: + platform_set_drvdata(pdev, NULL); soc->ops->remove(padctl); return err; } --- linux-5.8.0.orig/drivers/phy/ti/phy-am654-serdes.c +++ linux-5.8.0/drivers/phy/ti/phy-am654-serdes.c @@ -725,8 +725,10 @@ pm_runtime_enable(dev); phy = devm_phy_create(dev, NULL, &ops); - if (IS_ERR(phy)) - return PTR_ERR(phy); + if (IS_ERR(phy)) { + ret = PTR_ERR(phy); + goto clk_err; + } phy_set_drvdata(phy, am654_phy); phy_provider = devm_of_phy_provider_register(dev, serdes_am654_xlate); --- linux-5.8.0.orig/drivers/phy/ti/phy-omap-usb2.c +++ linux-5.8.0/drivers/phy/ti/phy-omap-usb2.c @@ -22,10 +22,15 @@ #include #include #include +#include #define USB2PHY_ANA_CONFIG1 0x4c #define USB2PHY_DISCON_BYP_LATCH BIT(31) +#define USB2PHY_CHRG_DET 0x14 +#define USB2PHY_CHRG_DET_USE_CHG_DET_REG BIT(29) +#define USB2PHY_CHRG_DET_DIS_CHG_DET BIT(28) + /* SoC Specific USB2_OTG register definitions */ #define AM654_USB2_OTG_PD BIT(8) #define AM654_USB2_VBUS_DET_EN BIT(5) @@ -43,6 +48,7 @@ #define OMAP_USB2_HAS_START_SRP BIT(0) #define OMAP_USB2_HAS_SET_VBUS BIT(1) #define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT BIT(2) +#define OMAP_USB2_DISABLE_CHRG_DET BIT(3) struct omap_usb { struct usb_phy phy; @@ -236,6 +242,13 @@ omap_usb_writel(phy->phy_base, USB2PHY_ANA_CONFIG1, val); } + if (phy->flags & OMAP_USB2_DISABLE_CHRG_DET) { + val = omap_usb_readl(phy->phy_base, USB2PHY_CHRG_DET); + val |= USB2PHY_CHRG_DET_USE_CHG_DET_REG | + USB2PHY_CHRG_DET_DIS_CHG_DET; + omap_usb_writel(phy->phy_base, USB2PHY_CHRG_DET, val); + } + return 0; } @@ -329,6 +342,26 @@ }; MODULE_DEVICE_TABLE(of, omap_usb2_id_table); +static void omap_usb2_init_errata(struct omap_usb *phy) +{ + static const struct soc_device_attribute am65x_sr10_soc_devices[] = { + { .family = "AM65X", .revision = "SR1.0" }, + { /* sentinel */ } + }; + + /* + * Errata i2075: USB2PHY: USB2PHY Charger Detect is Enabled by + * Default Without VBUS Presence. + * + * AM654x SR1.0 has a silicon bug due to which D+ is pulled high after + * POR, which could cause enumeration failure with some USB hubs. + * Disabling the USB2_PHY Charger Detect function will put D+ + * into the normal state. + */ + if (soc_device_match(am65x_sr10_soc_devices)) + phy->flags |= OMAP_USB2_DISABLE_CHRG_DET; +} + static int omap_usb2_probe(struct platform_device *pdev) { struct omap_usb *phy; @@ -366,14 +399,14 @@ phy->mask = phy_data->mask; phy->power_on = phy_data->power_on; phy->power_off = phy_data->power_off; + phy->flags = phy_data->flags; - if (phy_data->flags & OMAP_USB2_CALIBRATE_FALSE_DISCONNECT) { - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - phy->phy_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(phy->phy_base)) - return PTR_ERR(phy->phy_base); - phy->flags |= OMAP_USB2_CALIBRATE_FALSE_DISCONNECT; - } + omap_usb2_init_errata(phy); + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + phy->phy_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(phy->phy_base)) + return PTR_ERR(phy->phy_base); phy->syscon_phy_power = syscon_regmap_lookup_by_phandle(node, "syscon-phy-power"); --- linux-5.8.0.orig/drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c +++ linux-5.8.0/drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c @@ -345,7 +345,7 @@ #define D22 40 SIG_EXPR_LIST_DECL_SESG(D22, SD1CLK, SD1, SIG_DESC_SET(SCU414, 8)); -SIG_EXPR_LIST_DECL_SEMG(D22, PWM8, PWM8G0, PWM8, SIG_DESC_SET(SCU414, 8)); +SIG_EXPR_LIST_DECL_SEMG(D22, PWM8, PWM8G0, PWM8, SIG_DESC_SET(SCU4B4, 8)); PIN_DECL_2(D22, GPIOF0, SD1CLK, PWM8); GROUP_DECL(PWM8G0, D22); --- linux-5.8.0.orig/drivers/pinctrl/aspeed/pinctrl-aspeed.c +++ linux-5.8.0/drivers/pinctrl/aspeed/pinctrl-aspeed.c @@ -277,13 +277,76 @@ static bool aspeed_expr_is_gpio(const struct aspeed_sig_expr *expr) { /* - * The signal type is GPIO if the signal name has "GPIO" as a prefix. - * strncmp (rather than strcmp) is used to implement the prefix - * requirement. + * We need to differentiate between GPIO and non-GPIO signals to + * implement the gpio_request_enable() interface. For better or worse + * the ASPEED pinctrl driver uses the expression names to determine + * whether an expression will mux a pin for GPIO. * - * expr->signal might look like "GPIOT3" in the GPIO case. + * Generally we have the following - A GPIO such as B1 has: + * + * - expr->signal set to "GPIOB1" + * - expr->function set to "GPIOB1" + * + * Using this fact we can determine whether the provided expression is + * a GPIO expression by testing the signal name for the string prefix + * "GPIO". + * + * However, some GPIOs are input-only, and the ASPEED datasheets name + * them differently. An input-only GPIO such as T0 has: + * + * - expr->signal set to "GPIT0" + * - expr->function set to "GPIT0" + * + * It's tempting to generalise the prefix test from "GPIO" to "GPI" to + * account for both GPIOs and GPIs, but in doing so we run aground on + * another feature: + * + * Some pins in the ASPEED BMC SoCs have a "pass-through" GPIO + * function where the input state of one pin is replicated as the + * output state of another (as if they were shorted together - a mux + * configuration that is typically enabled by hardware strapping). + * This feature allows the BMC to pass e.g. power button state through + * to the host while the BMC is yet to boot, but take control of the + * button state once the BMC has booted by muxing each pin as a + * separate, pin-specific GPIO. + * + * Conceptually this pass-through mode is a form of GPIO and is named + * as such in the datasheets, e.g. "GPID0". This naming similarity + * trips us up with the simple GPI-prefixed-signal-name scheme + * discussed above, as the pass-through configuration is not what we + * want when muxing a pin as GPIO for the GPIO subsystem. + * + * On e.g. the AST2400, a pass-through function "GPID0" is grouped on + * balls A18 and D16, where we have: + * + * For ball A18: + * - expr->signal set to "GPID0IN" + * - expr->function set to "GPID0" + * + * For ball D16: + * - expr->signal set to "GPID0OUT" + * - expr->function set to "GPID0" + * + * By contrast, the pin-specific GPIO expressions for the same pins are + * as follows: + * + * For ball A18: + * - expr->signal looks like "GPIOD0" + * - expr->function looks like "GPIOD0" + * + * For ball D16: + * - expr->signal looks like "GPIOD1" + * - expr->function looks like "GPIOD1" + * + * Testing both the signal _and_ function names gives us the means + * differentiate the pass-through GPIO pinmux configuration from the + * pin-specific configuration that the GPIO subsystem is after: An + * expression is a pin-specific (non-pass-through) GPIO configuration + * if the signal prefix is "GPI" and the signal name matches the + * function name. */ - return strncmp(expr->signal, "GPIO", 4) == 0; + return !strncmp(expr->signal, "GPI", 3) && + !strcmp(expr->signal, expr->function); } static bool aspeed_gpio_in_exprs(const struct aspeed_sig_expr **exprs) @@ -515,7 +578,7 @@ val = pmap->val << __ffs(pconf->mask); rc = regmap_update_bits(pdata->scu, pconf->reg, - pmap->mask, val); + pconf->mask, val); if (rc < 0) return rc; --- linux-5.8.0.orig/drivers/pinctrl/aspeed/pinmux-aspeed.h +++ linux-5.8.0/drivers/pinctrl/aspeed/pinmux-aspeed.h @@ -452,10 +452,11 @@ * evaluation of the descriptors. * * @signal: The signal name for the priority level on the pin. If the signal - * type is GPIO, then the signal name must begin with the string - * "GPIO", e.g. GPIOA0, GPIOT4 etc. + * type is GPIO, then the signal name must begin with the + * prefix "GPI", e.g. GPIOA0, GPIT0 etc. * @function: The name of the function the signal participates in for the - * associated expression + * associated expression. For pin-specific GPIO, the function + * name must match the signal name. * @ndescs: The number of signal descriptors in the expression * @descs: Pointer to an array of signal descriptors that comprise the * function expression --- linux-5.8.0.orig/drivers/pinctrl/bcm/Kconfig +++ linux-5.8.0/drivers/pinctrl/bcm/Kconfig @@ -23,6 +23,7 @@ select PINMUX select PINCONF select GENERIC_PINCONF + select GPIOLIB select GPIOLIB_IRQCHIP default ARCH_BCM2835 || ARCH_BRCMSTB help --- linux-5.8.0.orig/drivers/pinctrl/devicetree.c +++ linux-5.8.0/drivers/pinctrl/devicetree.c @@ -129,9 +129,8 @@ if (!np_pctldev || of_node_is_root(np_pctldev)) { of_node_put(np_pctldev); ret = driver_deferred_probe_check_state(p->dev); - /* keep deferring if modules are enabled unless we've timed out */ - if (IS_ENABLED(CONFIG_MODULES) && !allow_default && - (ret == -ENODEV)) + /* keep deferring if modules are enabled */ + if (IS_ENABLED(CONFIG_MODULES) && !allow_default && ret < 0) ret = -EPROBE_DEFER; return ret; } --- linux-5.8.0.orig/drivers/pinctrl/intel/pinctrl-baytrail.c +++ linux-5.8.0/drivers/pinctrl/intel/pinctrl-baytrail.c @@ -1049,7 +1049,6 @@ break; case PIN_CONFIG_INPUT_DEBOUNCE: debounce = readl(db_reg); - debounce &= ~BYT_DEBOUNCE_PULSE_MASK; if (arg) conf |= BYT_DEBOUNCE_EN; @@ -1058,24 +1057,31 @@ switch (arg) { case 375: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_375US; break; case 750: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_750US; break; case 1500: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_1500US; break; case 3000: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_3MS; break; case 6000: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_6MS; break; case 12000: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_12MS; break; case 24000: + debounce &= ~BYT_DEBOUNCE_PULSE_MASK; debounce |= BYT_DEBOUNCE_PULSE_24MS; break; default: --- linux-5.8.0.orig/drivers/pinctrl/intel/pinctrl-intel.c +++ linux-5.8.0/drivers/pinctrl/intel/pinctrl-intel.c @@ -62,10 +62,10 @@ #define PADCFG1_TERM_UP BIT(13) #define PADCFG1_TERM_SHIFT 10 #define PADCFG1_TERM_MASK GENMASK(12, 10) -#define PADCFG1_TERM_20K 4 -#define PADCFG1_TERM_2K 3 -#define PADCFG1_TERM_5K 2 -#define PADCFG1_TERM_1K 1 +#define PADCFG1_TERM_20K BIT(2) +#define PADCFG1_TERM_5K BIT(1) +#define PADCFG1_TERM_1K BIT(0) +#define PADCFG1_TERM_833 (BIT(1) | BIT(0)) #define PADCFG2 0x008 #define PADCFG2_DEBEN BIT(0) @@ -540,12 +540,12 @@ return -EINVAL; switch (term) { + case PADCFG1_TERM_833: + arg = 833; + break; case PADCFG1_TERM_1K: arg = 1000; break; - case PADCFG1_TERM_2K: - arg = 2000; - break; case PADCFG1_TERM_5K: arg = 5000; break; @@ -561,6 +561,11 @@ return -EINVAL; switch (term) { + case PADCFG1_TERM_833: + if (!(community->features & PINCTRL_FEATURE_1K_PD)) + return -EINVAL; + arg = 833; + break; case PADCFG1_TERM_1K: if (!(community->features & PINCTRL_FEATURE_1K_PD)) return -EINVAL; @@ -629,6 +634,10 @@ value |= PADCFG1_TERM_UP; + /* Set default strength value in case none is given */ + if (arg == 1) + arg = 5000; + switch (arg) { case 20000: value |= PADCFG1_TERM_20K << PADCFG1_TERM_SHIFT; @@ -636,12 +645,12 @@ case 5000: value |= PADCFG1_TERM_5K << PADCFG1_TERM_SHIFT; break; - case 2000: - value |= PADCFG1_TERM_2K << PADCFG1_TERM_SHIFT; - break; case 1000: value |= PADCFG1_TERM_1K << PADCFG1_TERM_SHIFT; break; + case 833: + value |= PADCFG1_TERM_833 << PADCFG1_TERM_SHIFT; + break; default: ret = -EINVAL; } @@ -651,6 +660,10 @@ case PIN_CONFIG_BIAS_PULL_DOWN: value &= ~(PADCFG1_TERM_UP | PADCFG1_TERM_MASK); + /* Set default strength value in case none is given */ + if (arg == 1) + arg = 5000; + switch (arg) { case 20000: value |= PADCFG1_TERM_20K << PADCFG1_TERM_SHIFT; @@ -665,6 +678,13 @@ } value |= PADCFG1_TERM_1K << PADCFG1_TERM_SHIFT; break; + case 833: + if (!(community->features & PINCTRL_FEATURE_1K_PD)) { + ret = -EINVAL; + break; + } + value |= PADCFG1_TERM_833 << PADCFG1_TERM_SHIFT; + break; default: ret = -EINVAL; } --- linux-5.8.0.orig/drivers/pinctrl/intel/pinctrl-jasperlake.c +++ linux-5.8.0/drivers/pinctrl/intel/pinctrl-jasperlake.c @@ -16,7 +16,7 @@ #define JSL_PAD_OWN 0x020 #define JSL_PADCFGLOCK 0x080 -#define JSL_HOSTSW_OWN 0x0b0 +#define JSL_HOSTSW_OWN 0x0c0 #define JSL_GPI_IS 0x100 #define JSL_GPI_IE 0x120 --- linux-5.8.0.orig/drivers/pinctrl/intel/pinctrl-merrifield.c +++ linux-5.8.0/drivers/pinctrl/intel/pinctrl-merrifield.c @@ -741,6 +741,10 @@ mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK; bits |= BUFCFG_PU_EN; + /* Set default strength value in case none is given */ + if (arg == 1) + arg = 20000; + switch (arg) { case 50000: bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT; @@ -761,6 +765,10 @@ mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK; bits |= BUFCFG_PD_EN; + /* Set default strength value in case none is given */ + if (arg == 1) + arg = 20000; + switch (arg) { case 50000: bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT; --- linux-5.8.0.orig/drivers/pinctrl/intel/pinctrl-tigerlake.c +++ linux-5.8.0/drivers/pinctrl/intel/pinctrl-tigerlake.c @@ -380,8 +380,366 @@ .ncommunities = ARRAY_SIZE(tgllp_communities), }; +/* Tiger Lake-H */ +static const struct pinctrl_pin_desc tglh_pins[] = { + /* GPP_A */ + PINCTRL_PIN(0, "SPI0_IO_2"), + PINCTRL_PIN(1, "SPI0_IO_3"), + PINCTRL_PIN(2, "SPI0_MOSI_IO_0"), + PINCTRL_PIN(3, "SPI0_MISO_IO_1"), + PINCTRL_PIN(4, "SPI0_TPM_CSB"), + PINCTRL_PIN(5, "SPI0_FLASH_0_CSB"), + PINCTRL_PIN(6, "SPI0_FLASH_1_CSB"), + PINCTRL_PIN(7, "SPI0_CLK"), + PINCTRL_PIN(8, "ESPI_IO_0"), + PINCTRL_PIN(9, "ESPI_IO_1"), + PINCTRL_PIN(10, "ESPI_IO_2"), + PINCTRL_PIN(11, "ESPI_IO_3"), + PINCTRL_PIN(12, "ESPI_CS0B"), + PINCTRL_PIN(13, "ESPI_CLK"), + PINCTRL_PIN(14, "ESPI_RESETB"), + PINCTRL_PIN(15, "ESPI_CS1B"), + PINCTRL_PIN(16, "ESPI_CS2B"), + PINCTRL_PIN(17, "ESPI_CS3B"), + PINCTRL_PIN(18, "ESPI_ALERT0B"), + PINCTRL_PIN(19, "ESPI_ALERT1B"), + PINCTRL_PIN(20, "ESPI_ALERT2B"), + PINCTRL_PIN(21, "ESPI_ALERT3B"), + PINCTRL_PIN(22, "GPPC_A_14"), + PINCTRL_PIN(23, "SPI0_CLK_LOOPBK"), + PINCTRL_PIN(24, "ESPI_CLK_LOOPBK"), + /* GPP_R */ + PINCTRL_PIN(25, "HDA_BCLK"), + PINCTRL_PIN(26, "HDA_SYNC"), + PINCTRL_PIN(27, "HDA_SDO"), + PINCTRL_PIN(28, "HDA_SDI_0"), + PINCTRL_PIN(29, "HDA_RSTB"), + PINCTRL_PIN(30, "HDA_SDI_1"), + PINCTRL_PIN(31, "GPP_R_6"), + PINCTRL_PIN(32, "GPP_R_7"), + PINCTRL_PIN(33, "GPP_R_8"), + PINCTRL_PIN(34, "PCIE_LNK_DOWN"), + PINCTRL_PIN(35, "ISH_UART0_RTSB"), + PINCTRL_PIN(36, "SX_EXIT_HOLDOFFB"), + PINCTRL_PIN(37, "CLKOUT_48"), + PINCTRL_PIN(38, "ISH_GP_7"), + PINCTRL_PIN(39, "ISH_GP_0"), + PINCTRL_PIN(40, "ISH_GP_1"), + PINCTRL_PIN(41, "ISH_GP_2"), + PINCTRL_PIN(42, "ISH_GP_3"), + PINCTRL_PIN(43, "ISH_GP_4"), + PINCTRL_PIN(44, "ISH_GP_5"), + /* GPP_B */ + PINCTRL_PIN(45, "GSPI0_CS1B"), + PINCTRL_PIN(46, "GSPI1_CS1B"), + PINCTRL_PIN(47, "VRALERTB"), + PINCTRL_PIN(48, "CPU_GP_2"), + PINCTRL_PIN(49, "CPU_GP_3"), + PINCTRL_PIN(50, "SRCCLKREQB_0"), + PINCTRL_PIN(51, "SRCCLKREQB_1"), + PINCTRL_PIN(52, "SRCCLKREQB_2"), + PINCTRL_PIN(53, "SRCCLKREQB_3"), + PINCTRL_PIN(54, "SRCCLKREQB_4"), + PINCTRL_PIN(55, "SRCCLKREQB_5"), + PINCTRL_PIN(56, "I2S_MCLK"), + PINCTRL_PIN(57, "SLP_S0B"), + PINCTRL_PIN(58, "PLTRSTB"), + PINCTRL_PIN(59, "SPKR"), + PINCTRL_PIN(60, "GSPI0_CS0B"), + PINCTRL_PIN(61, "GSPI0_CLK"), + PINCTRL_PIN(62, "GSPI0_MISO"), + PINCTRL_PIN(63, "GSPI0_MOSI"), + PINCTRL_PIN(64, "GSPI1_CS0B"), + PINCTRL_PIN(65, "GSPI1_CLK"), + PINCTRL_PIN(66, "GSPI1_MISO"), + PINCTRL_PIN(67, "GSPI1_MOSI"), + PINCTRL_PIN(68, "SML1ALERTB"), + PINCTRL_PIN(69, "GSPI0_CLK_LOOPBK"), + PINCTRL_PIN(70, "GSPI1_CLK_LOOPBK"), + /* vGPIO_0 */ + PINCTRL_PIN(71, "ESPI_USB_OCB_0"), + PINCTRL_PIN(72, "ESPI_USB_OCB_1"), + PINCTRL_PIN(73, "ESPI_USB_OCB_2"), + PINCTRL_PIN(74, "ESPI_USB_OCB_3"), + PINCTRL_PIN(75, "USB_CPU_OCB_0"), + PINCTRL_PIN(76, "USB_CPU_OCB_1"), + PINCTRL_PIN(77, "USB_CPU_OCB_2"), + PINCTRL_PIN(78, "USB_CPU_OCB_3"), + /* GPP_D */ + PINCTRL_PIN(79, "SPI1_CSB"), + PINCTRL_PIN(80, "SPI1_CLK"), + PINCTRL_PIN(81, "SPI1_MISO_IO_1"), + PINCTRL_PIN(82, "SPI1_MOSI_IO_0"), + PINCTRL_PIN(83, "SML1CLK"), + PINCTRL_PIN(84, "I2S2_SFRM"), + PINCTRL_PIN(85, "I2S2_TXD"), + PINCTRL_PIN(86, "I2S2_RXD"), + PINCTRL_PIN(87, "I2S2_SCLK"), + PINCTRL_PIN(88, "SML0CLK"), + PINCTRL_PIN(89, "SML0DATA"), + PINCTRL_PIN(90, "GPP_D_11"), + PINCTRL_PIN(91, "ISH_UART0_CTSB"), + PINCTRL_PIN(92, "SPI1_IO_2"), + PINCTRL_PIN(93, "SPI1_IO_3"), + PINCTRL_PIN(94, "SML1DATA"), + PINCTRL_PIN(95, "GSPI3_CS0B"), + PINCTRL_PIN(96, "GSPI3_CLK"), + PINCTRL_PIN(97, "GSPI3_MISO"), + PINCTRL_PIN(98, "GSPI3_MOSI"), + PINCTRL_PIN(99, "UART3_RXD"), + PINCTRL_PIN(100, "UART3_TXD"), + PINCTRL_PIN(101, "UART3_RTSB"), + PINCTRL_PIN(102, "UART3_CTSB"), + PINCTRL_PIN(103, "SPI1_CLK_LOOPBK"), + PINCTRL_PIN(104, "GSPI3_CLK_LOOPBK"), + /* GPP_C */ + PINCTRL_PIN(105, "SMBCLK"), + PINCTRL_PIN(106, "SMBDATA"), + PINCTRL_PIN(107, "SMBALERTB"), + PINCTRL_PIN(108, "ISH_UART0_RXD"), + PINCTRL_PIN(109, "ISH_UART0_TXD"), + PINCTRL_PIN(110, "SML0ALERTB"), + PINCTRL_PIN(111, "ISH_I2C2_SDA"), + PINCTRL_PIN(112, "ISH_I2C2_SCL"), + PINCTRL_PIN(113, "UART0_RXD"), + PINCTRL_PIN(114, "UART0_TXD"), + PINCTRL_PIN(115, "UART0_RTSB"), + PINCTRL_PIN(116, "UART0_CTSB"), + PINCTRL_PIN(117, "UART1_RXD"), + PINCTRL_PIN(118, "UART1_TXD"), + PINCTRL_PIN(119, "UART1_RTSB"), + PINCTRL_PIN(120, "UART1_CTSB"), + PINCTRL_PIN(121, "I2C0_SDA"), + PINCTRL_PIN(122, "I2C0_SCL"), + PINCTRL_PIN(123, "I2C1_SDA"), + PINCTRL_PIN(124, "I2C1_SCL"), + PINCTRL_PIN(125, "UART2_RXD"), + PINCTRL_PIN(126, "UART2_TXD"), + PINCTRL_PIN(127, "UART2_RTSB"), + PINCTRL_PIN(128, "UART2_CTSB"), + /* GPP_S */ + PINCTRL_PIN(129, "SNDW1_CLK"), + PINCTRL_PIN(130, "SNDW1_DATA"), + PINCTRL_PIN(131, "SNDW2_CLK"), + PINCTRL_PIN(132, "SNDW2_DATA"), + PINCTRL_PIN(133, "SNDW3_CLK"), + PINCTRL_PIN(134, "SNDW3_DATA"), + PINCTRL_PIN(135, "SNDW4_CLK"), + PINCTRL_PIN(136, "SNDW4_DATA"), + /* GPP_G */ + PINCTRL_PIN(137, "DDPA_CTRLCLK"), + PINCTRL_PIN(138, "DDPA_CTRLDATA"), + PINCTRL_PIN(139, "DNX_FORCE_RELOAD"), + PINCTRL_PIN(140, "GMII_MDC_0"), + PINCTRL_PIN(141, "GMII_MDIO_0"), + PINCTRL_PIN(142, "SLP_DRAMB"), + PINCTRL_PIN(143, "GPPC_G_6"), + PINCTRL_PIN(144, "GPPC_G_7"), + PINCTRL_PIN(145, "ISH_SPI_CSB"), + PINCTRL_PIN(146, "ISH_SPI_CLK"), + PINCTRL_PIN(147, "ISH_SPI_MISO"), + PINCTRL_PIN(148, "ISH_SPI_MOSI"), + PINCTRL_PIN(149, "DDP1_CTRLCLK"), + PINCTRL_PIN(150, "DDP1_CTRLDATA"), + PINCTRL_PIN(151, "DDP2_CTRLCLK"), + PINCTRL_PIN(152, "DDP2_CTRLDATA"), + PINCTRL_PIN(153, "GSPI2_CLK_LOOPBK"), + /* vGPIO */ + PINCTRL_PIN(154, "CNV_BTEN"), + PINCTRL_PIN(155, "CNV_BT_HOST_WAKEB"), + PINCTRL_PIN(156, "CNV_BT_IF_SELECT"), + PINCTRL_PIN(157, "vCNV_BT_UART_TXD"), + PINCTRL_PIN(158, "vCNV_BT_UART_RXD"), + PINCTRL_PIN(159, "vCNV_BT_UART_CTS_B"), + PINCTRL_PIN(160, "vCNV_BT_UART_RTS_B"), + PINCTRL_PIN(161, "vCNV_MFUART1_TXD"), + PINCTRL_PIN(162, "vCNV_MFUART1_RXD"), + PINCTRL_PIN(163, "vCNV_MFUART1_CTS_B"), + PINCTRL_PIN(164, "vCNV_MFUART1_RTS_B"), + PINCTRL_PIN(165, "vUART0_TXD"), + PINCTRL_PIN(166, "vUART0_RXD"), + PINCTRL_PIN(167, "vUART0_CTS_B"), + PINCTRL_PIN(168, "vUART0_RTS_B"), + PINCTRL_PIN(169, "vISH_UART0_TXD"), + PINCTRL_PIN(170, "vISH_UART0_RXD"), + PINCTRL_PIN(171, "vISH_UART0_CTS_B"), + PINCTRL_PIN(172, "vISH_UART0_RTS_B"), + PINCTRL_PIN(173, "vCNV_BT_I2S_BCLK"), + PINCTRL_PIN(174, "vCNV_BT_I2S_WS_SYNC"), + PINCTRL_PIN(175, "vCNV_BT_I2S_SDO"), + PINCTRL_PIN(176, "vCNV_BT_I2S_SDI"), + PINCTRL_PIN(177, "vI2S2_SCLK"), + PINCTRL_PIN(178, "vI2S2_SFRM"), + PINCTRL_PIN(179, "vI2S2_TXD"), + PINCTRL_PIN(180, "vI2S2_RXD"), + /* GPP_E */ + PINCTRL_PIN(181, "SATAXPCIE_0"), + PINCTRL_PIN(182, "SATAXPCIE_1"), + PINCTRL_PIN(183, "SATAXPCIE_2"), + PINCTRL_PIN(184, "CPU_GP_0"), + PINCTRL_PIN(185, "SATA_DEVSLP_0"), + PINCTRL_PIN(186, "SATA_DEVSLP_1"), + PINCTRL_PIN(187, "SATA_DEVSLP_2"), + PINCTRL_PIN(188, "CPU_GP_1"), + PINCTRL_PIN(189, "SATA_LEDB"), + PINCTRL_PIN(190, "USB2_OCB_0"), + PINCTRL_PIN(191, "USB2_OCB_1"), + PINCTRL_PIN(192, "USB2_OCB_2"), + PINCTRL_PIN(193, "USB2_OCB_3"), + /* GPP_F */ + PINCTRL_PIN(194, "SATAXPCIE_3"), + PINCTRL_PIN(195, "SATAXPCIE_4"), + PINCTRL_PIN(196, "SATAXPCIE_5"), + PINCTRL_PIN(197, "SATAXPCIE_6"), + PINCTRL_PIN(198, "SATAXPCIE_7"), + PINCTRL_PIN(199, "SATA_DEVSLP_3"), + PINCTRL_PIN(200, "SATA_DEVSLP_4"), + PINCTRL_PIN(201, "SATA_DEVSLP_5"), + PINCTRL_PIN(202, "SATA_DEVSLP_6"), + PINCTRL_PIN(203, "SATA_DEVSLP_7"), + PINCTRL_PIN(204, "SATA_SCLOCK"), + PINCTRL_PIN(205, "SATA_SLOAD"), + PINCTRL_PIN(206, "SATA_SDATAOUT1"), + PINCTRL_PIN(207, "SATA_SDATAOUT0"), + PINCTRL_PIN(208, "PS_ONB"), + PINCTRL_PIN(209, "M2_SKT2_CFG_0"), + PINCTRL_PIN(210, "M2_SKT2_CFG_1"), + PINCTRL_PIN(211, "M2_SKT2_CFG_2"), + PINCTRL_PIN(212, "M2_SKT2_CFG_3"), + PINCTRL_PIN(213, "L_VDDEN"), + PINCTRL_PIN(214, "L_BKLTEN"), + PINCTRL_PIN(215, "L_BKLTCTL"), + PINCTRL_PIN(216, "VNN_CTRL"), + PINCTRL_PIN(217, "GPP_F_23"), + /* GPP_H */ + PINCTRL_PIN(218, "SRCCLKREQB_6"), + PINCTRL_PIN(219, "SRCCLKREQB_7"), + PINCTRL_PIN(220, "SRCCLKREQB_8"), + PINCTRL_PIN(221, "SRCCLKREQB_9"), + PINCTRL_PIN(222, "SRCCLKREQB_10"), + PINCTRL_PIN(223, "SRCCLKREQB_11"), + PINCTRL_PIN(224, "SRCCLKREQB_12"), + PINCTRL_PIN(225, "SRCCLKREQB_13"), + PINCTRL_PIN(226, "SRCCLKREQB_14"), + PINCTRL_PIN(227, "SRCCLKREQB_15"), + PINCTRL_PIN(228, "SML2CLK"), + PINCTRL_PIN(229, "SML2DATA"), + PINCTRL_PIN(230, "SML2ALERTB"), + PINCTRL_PIN(231, "SML3CLK"), + PINCTRL_PIN(232, "SML3DATA"), + PINCTRL_PIN(233, "SML3ALERTB"), + PINCTRL_PIN(234, "SML4CLK"), + PINCTRL_PIN(235, "SML4DATA"), + PINCTRL_PIN(236, "SML4ALERTB"), + PINCTRL_PIN(237, "ISH_I2C0_SDA"), + PINCTRL_PIN(238, "ISH_I2C0_SCL"), + PINCTRL_PIN(239, "ISH_I2C1_SDA"), + PINCTRL_PIN(240, "ISH_I2C1_SCL"), + PINCTRL_PIN(241, "TIME_SYNC_0"), + /* GPP_J */ + PINCTRL_PIN(242, "CNV_PA_BLANKING"), + PINCTRL_PIN(243, "CPU_C10_GATEB"), + PINCTRL_PIN(244, "CNV_BRI_DT"), + PINCTRL_PIN(245, "CNV_BRI_RSP"), + PINCTRL_PIN(246, "CNV_RGI_DT"), + PINCTRL_PIN(247, "CNV_RGI_RSP"), + PINCTRL_PIN(248, "CNV_MFUART2_RXD"), + PINCTRL_PIN(249, "CNV_MFUART2_TXD"), + PINCTRL_PIN(250, "GPP_J_8"), + PINCTRL_PIN(251, "GPP_J_9"), + /* GPP_K */ + PINCTRL_PIN(252, "GSXDOUT"), + PINCTRL_PIN(253, "GSXSLOAD"), + PINCTRL_PIN(254, "GSXDIN"), + PINCTRL_PIN(255, "GSXSRESETB"), + PINCTRL_PIN(256, "GSXCLK"), + PINCTRL_PIN(257, "ADR_COMPLETE"), + PINCTRL_PIN(258, "DDSP_HPD_A"), + PINCTRL_PIN(259, "DDSP_HPD_B"), + PINCTRL_PIN(260, "CORE_VID_0"), + PINCTRL_PIN(261, "CORE_VID_1"), + PINCTRL_PIN(262, "DDSP_HPD_C"), + PINCTRL_PIN(263, "GPP_K_11"), + PINCTRL_PIN(264, "SYS_PWROK"), + PINCTRL_PIN(265, "SYS_RESETB"), + PINCTRL_PIN(266, "MLK_RSTB"), + /* GPP_I */ + PINCTRL_PIN(267, "PMCALERTB"), + PINCTRL_PIN(268, "DDSP_HPD_1"), + PINCTRL_PIN(269, "DDSP_HPD_2"), + PINCTRL_PIN(270, "DDSP_HPD_3"), + PINCTRL_PIN(271, "DDSP_HPD_4"), + PINCTRL_PIN(272, "DDPB_CTRLCLK"), + PINCTRL_PIN(273, "DDPB_CTRLDATA"), + PINCTRL_PIN(274, "DDPC_CTRLCLK"), + PINCTRL_PIN(275, "DDPC_CTRLDATA"), + PINCTRL_PIN(276, "FUSA_DIAGTEST_EN"), + PINCTRL_PIN(277, "FUSA_DIAGTEST_MODE"), + PINCTRL_PIN(278, "USB2_OCB_4"), + PINCTRL_PIN(279, "USB2_OCB_5"), + PINCTRL_PIN(280, "USB2_OCB_6"), + PINCTRL_PIN(281, "USB2_OCB_7"), + /* JTAG */ + PINCTRL_PIN(282, "JTAG_TDO"), + PINCTRL_PIN(283, "JTAGX"), + PINCTRL_PIN(284, "PRDYB"), + PINCTRL_PIN(285, "PREQB"), + PINCTRL_PIN(286, "JTAG_TDI"), + PINCTRL_PIN(287, "JTAG_TMS"), + PINCTRL_PIN(288, "JTAG_TCK"), + PINCTRL_PIN(289, "DBG_PMODE"), + PINCTRL_PIN(290, "CPU_TRSTB"), +}; + +static const struct intel_padgroup tglh_community0_gpps[] = { + TGL_GPP(0, 0, 24, 0), /* GPP_A */ + TGL_GPP(1, 25, 44, 128), /* GPP_R */ + TGL_GPP(2, 45, 70, 32), /* GPP_B */ + TGL_GPP(3, 71, 78, INTEL_GPIO_BASE_NOMAP), /* vGPIO_0 */ +}; + +static const struct intel_padgroup tglh_community1_gpps[] = { + TGL_GPP(0, 79, 104, 96), /* GPP_D */ + TGL_GPP(1, 105, 128, 64), /* GPP_C */ + TGL_GPP(2, 129, 136, 160), /* GPP_S */ + TGL_GPP(3, 137, 153, 192), /* GPP_G */ + TGL_GPP(4, 154, 180, 224), /* vGPIO */ +}; + +static const struct intel_padgroup tglh_community3_gpps[] = { + TGL_GPP(0, 181, 193, 256), /* GPP_E */ + TGL_GPP(1, 194, 217, 288), /* GPP_F */ +}; + +static const struct intel_padgroup tglh_community4_gpps[] = { + TGL_GPP(0, 218, 241, 320), /* GPP_H */ + TGL_GPP(1, 242, 251, 384), /* GPP_J */ + TGL_GPP(2, 252, 266, 352), /* GPP_K */ +}; + +static const struct intel_padgroup tglh_community5_gpps[] = { + TGL_GPP(0, 267, 281, 416), /* GPP_I */ + TGL_GPP(1, 282, 290, INTEL_GPIO_BASE_NOMAP), /* JTAG */ +}; + +static const struct intel_community tglh_communities[] = { + TGL_COMMUNITY(0, 0, 78, tglh_community0_gpps), + TGL_COMMUNITY(1, 79, 180, tglh_community1_gpps), + TGL_COMMUNITY(2, 181, 217, tglh_community3_gpps), + TGL_COMMUNITY(3, 218, 266, tglh_community4_gpps), + TGL_COMMUNITY(4, 267, 290, tglh_community5_gpps), +}; + +static const struct intel_pinctrl_soc_data tglh_soc_data = { + .pins = tglh_pins, + .npins = ARRAY_SIZE(tglh_pins), + .communities = tglh_communities, + .ncommunities = ARRAY_SIZE(tglh_communities), +}; + static const struct acpi_device_id tgl_pinctrl_acpi_match[] = { { "INT34C5", (kernel_ulong_t)&tgllp_soc_data }, + { "INT34C6", (kernel_ulong_t)&tglh_soc_data }, { } }; MODULE_DEVICE_TABLE(acpi, tgl_pinctrl_acpi_match); --- linux-5.8.0.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c +++ linux-5.8.0/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c @@ -243,6 +243,33 @@ return EINT_NA; } +/* + * Virtual GPIO only used inside SOC and not being exported to outside SOC. + * Some modules use virtual GPIO as eint (e.g. pmif or usb). + * In MTK platform, external interrupt (EINT) and GPIO is 1-1 mapping + * and we can set GPIO as eint. + * But some modules use specific eint which doesn't have real GPIO pin. + * So we use virtual GPIO to map it. + */ + +bool mtk_is_virt_gpio(struct mtk_pinctrl *hw, unsigned int gpio_n) +{ + const struct mtk_pin_desc *desc; + bool virt_gpio = false; + + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n]; + + /* if the GPIO is not supported for eint mode */ + if (desc->eint.eint_m == NO_EINT_SUPPORT) + return virt_gpio; + + if (desc->funcs && !desc->funcs[desc->eint.eint_m].name) + virt_gpio = true; + + return virt_gpio; +} +EXPORT_SYMBOL_GPL(mtk_is_virt_gpio); + static int mtk_xt_get_gpio_n(void *data, unsigned long eint_n, unsigned int *gpio_n, struct gpio_chip **gpio_chip) @@ -295,6 +322,9 @@ if (err) return err; + if (mtk_is_virt_gpio(hw, gpio_n)) + return 0; + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio_n]; err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_MODE, @@ -891,6 +921,10 @@ err = hw->soc->bias_set(hw, desc, pullup); if (err) return err; + } else if (hw->soc->bias_set_combo) { + err = hw->soc->bias_set_combo(hw, desc, pullup, arg); + if (err) + return err; } else { return -ENOTSUPP; } --- linux-5.8.0.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h +++ linux-5.8.0/drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h @@ -315,4 +315,5 @@ int mtk_pinconf_adv_drive_get(struct mtk_pinctrl *hw, const struct mtk_pin_desc *desc, u32 *val); +bool mtk_is_virt_gpio(struct mtk_pinctrl *hw, unsigned int gpio_n); #endif /* __PINCTRL_MTK_COMMON_V2_H */ --- linux-5.8.0.orig/drivers/pinctrl/mediatek/pinctrl-paris.c +++ linux-5.8.0/drivers/pinctrl/mediatek/pinctrl-paris.c @@ -769,6 +769,13 @@ if (gpio >= hw->soc->npins) return -EINVAL; + /* + * "Virtual" GPIOs are always and only used for interrupts + * Since they are only used for interrupts, they are always inputs + */ + if (mtk_is_virt_gpio(hw, gpio)) + return 1; + desc = (const struct mtk_pin_desc *)&hw->soc->pins[gpio]; err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_DIR, &value); --- linux-5.8.0.orig/drivers/pinctrl/mvebu/pinctrl-armada-xp.c +++ linux-5.8.0/drivers/pinctrl/mvebu/pinctrl-armada-xp.c @@ -414,7 +414,7 @@ MPP_VAR_FUNCTION(0x1, "i2c0", "sck", V_98DX3236_PLUS)), MPP_MODE(15, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_98DX3236_PLUS), - MPP_VAR_FUNCTION(0x4, "i2c0", "sda", V_98DX3236_PLUS)), + MPP_VAR_FUNCTION(0x1, "i2c0", "sda", V_98DX3236_PLUS)), MPP_MODE(16, MPP_VAR_FUNCTION(0x0, "gpo", NULL, V_98DX3236_PLUS), MPP_VAR_FUNCTION(0x4, "dev", "oe", V_98DX3236_PLUS)), --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-amd.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-amd.c @@ -156,7 +156,7 @@ pin_reg |= BIT(DB_TMR_OUT_UNIT_OFF); pin_reg &= ~BIT(DB_TMR_LARGE_OFF); } else if (debounce < 250000) { - time = debounce / 15600; + time = debounce / 15625; pin_reg |= time & DB_TMR_OUT_MASK; pin_reg &= ~BIT(DB_TMR_OUT_UNIT_OFF); pin_reg |= BIT(DB_TMR_LARGE_OFF); @@ -166,14 +166,14 @@ pin_reg |= BIT(DB_TMR_OUT_UNIT_OFF); pin_reg |= BIT(DB_TMR_LARGE_OFF); } else { - pin_reg &= ~DB_CNTRl_MASK; + pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF); ret = -EINVAL; } } else { pin_reg &= ~BIT(DB_TMR_OUT_UNIT_OFF); pin_reg &= ~BIT(DB_TMR_LARGE_OFF); pin_reg &= ~DB_TMR_OUT_MASK; - pin_reg &= ~DB_CNTRl_MASK; + pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF); } writel(pin_reg, gpio_dev->base + offset * 4); raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); @@ -438,7 +438,6 @@ pin_reg &= ~BIT(LEVEL_TRIG_OFF); pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF); pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF; - pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF; irq_set_handler_locked(d, handle_edge_irq); break; @@ -446,7 +445,6 @@ pin_reg &= ~BIT(LEVEL_TRIG_OFF); pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF); pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF; - pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF; irq_set_handler_locked(d, handle_edge_irq); break; @@ -454,7 +452,6 @@ pin_reg &= ~BIT(LEVEL_TRIG_OFF); pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF); pin_reg |= BOTH_EADGE << ACTIVE_LEVEL_OFF; - pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF; irq_set_handler_locked(d, handle_edge_irq); break; @@ -462,8 +459,6 @@ pin_reg |= LEVEL_TRIGGER << LEVEL_TRIG_OFF; pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF); pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF; - pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF); - pin_reg |= DB_TYPE_PRESERVE_LOW_GLITCH << DB_CNTRL_OFF; irq_set_handler_locked(d, handle_level_irq); break; @@ -471,8 +466,6 @@ pin_reg |= LEVEL_TRIGGER << LEVEL_TRIG_OFF; pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF); pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF; - pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF); - pin_reg |= DB_TYPE_PRESERVE_HIGH_GLITCH << DB_CNTRL_OFF; irq_set_handler_locked(d, handle_level_irq); break; --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-falcon.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-falcon.c @@ -431,24 +431,28 @@ /* load and remap the pad resources of the different banks */ for_each_compatible_node(np, NULL, "lantiq,pad-falcon") { - struct platform_device *ppdev = of_find_device_by_node(np); const __be32 *bank = of_get_property(np, "lantiq,bank", NULL); struct resource res; + struct platform_device *ppdev; u32 avail; int pins; if (!of_device_is_available(np)) continue; - if (!ppdev) { - dev_err(&pdev->dev, "failed to find pad pdev\n"); - continue; - } if (!bank || *bank >= PORTS) continue; if (of_address_to_resource(np, 0, &res)) continue; + + ppdev = of_find_device_by_node(np); + if (!ppdev) { + dev_err(&pdev->dev, "failed to find pad pdev\n"); + continue; + } + falcon_info.clk[*bank] = clk_get(&ppdev->dev, NULL); + put_device(&ppdev->dev); if (IS_ERR(falcon_info.clk[*bank])) { dev_err(&ppdev->dev, "failed to get clock\n"); of_node_put(np); --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-ingenic.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-ingenic.c @@ -1704,7 +1704,7 @@ static void ingenic_gpio_set_value(struct ingenic_gpio_chip *jzgc, u8 offset, int value) { - if (jzgc->jzpc->info->version >= ID_JZ4760) + if (jzgc->jzpc->info->version >= ID_JZ4770) ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_PAT0, offset, !!value); else ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_DATA, offset, !!value); @@ -1734,7 +1734,7 @@ break; } - if (jzgc->jzpc->info->version >= ID_JZ4760) { + if (jzgc->jzpc->info->version >= ID_JZ4770) { reg1 = JZ4760_GPIO_PAT1; reg2 = JZ4760_GPIO_PAT0; } else { @@ -1774,7 +1774,7 @@ struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc); int irq = irqd->hwirq; - if (jzgc->jzpc->info->version >= ID_JZ4760) + if (jzgc->jzpc->info->version >= ID_JZ4770) ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_INT, irq, true); else ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_SELECT, irq, true); @@ -1790,7 +1790,7 @@ ingenic_gpio_irq_mask(irqd); - if (jzgc->jzpc->info->version >= ID_JZ4760) + if (jzgc->jzpc->info->version >= ID_JZ4770) ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_INT, irq, false); else ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_SELECT, irq, false); @@ -1810,12 +1810,12 @@ */ high = ingenic_gpio_get_value(jzgc, irq); if (high) - irq_set_type(jzgc, irq, IRQ_TYPE_EDGE_FALLING); + irq_set_type(jzgc, irq, IRQ_TYPE_LEVEL_LOW); else - irq_set_type(jzgc, irq, IRQ_TYPE_EDGE_RISING); + irq_set_type(jzgc, irq, IRQ_TYPE_LEVEL_HIGH); } - if (jzgc->jzpc->info->version >= ID_JZ4760) + if (jzgc->jzpc->info->version >= ID_JZ4770) ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_FLAG, irq, false); else ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_DATA, irq, true); @@ -1848,7 +1848,7 @@ */ bool high = ingenic_gpio_get_value(jzgc, irqd->hwirq); - type = high ? IRQ_TYPE_EDGE_FALLING : IRQ_TYPE_EDGE_RISING; + type = high ? IRQ_TYPE_LEVEL_LOW : IRQ_TYPE_LEVEL_HIGH; } irq_set_type(jzgc, irqd->hwirq, type); @@ -1872,7 +1872,7 @@ chained_irq_enter(irq_chip, desc); - if (jzgc->jzpc->info->version >= ID_JZ4760) + if (jzgc->jzpc->info->version >= ID_JZ4770) flag = ingenic_gpio_read_reg(jzgc, JZ4760_GPIO_FLAG); else flag = ingenic_gpio_read_reg(jzgc, JZ4740_GPIO_FLAG); @@ -1954,8 +1954,9 @@ struct ingenic_pinctrl *jzpc = jzgc->jzpc; unsigned int pin = gc->base + offset; - if (jzpc->info->version >= ID_JZ4760) { - if (ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PAT1)) + if (jzpc->info->version >= ID_JZ4770) { + if (ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_INT) || + ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PAT1)) return GPIO_LINE_DIRECTION_IN; return GPIO_LINE_DIRECTION_OUT; } @@ -2011,7 +2012,7 @@ ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2); ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1); ingenic_shadow_config_pin_load(jzpc, pin); - } else if (jzpc->info->version >= ID_JZ4760) { + } else if (jzpc->info->version >= ID_JZ4770) { ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); ingenic_config_pin(jzpc, pin, GPIO_MSK, false); ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2); @@ -2019,7 +2020,7 @@ } else { ingenic_config_pin(jzpc, pin, JZ4740_GPIO_FUNC, true); ingenic_config_pin(jzpc, pin, JZ4740_GPIO_TRIG, func & 0x2); - ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, func > 0); + ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, func & 0x1); } return 0; @@ -2069,7 +2070,7 @@ ingenic_shadow_config_pin(jzpc, pin, GPIO_MSK, true); ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input); ingenic_shadow_config_pin_load(jzpc, pin); - } else if (jzpc->info->version >= ID_JZ4760) { + } else if (jzpc->info->version >= ID_JZ4770) { ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); ingenic_config_pin(jzpc, pin, GPIO_MSK, true); ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input); @@ -2099,7 +2100,7 @@ unsigned int offt = pin / PINS_PER_GPIO_CHIP; bool pull; - if (jzpc->info->version >= ID_JZ4760) + if (jzpc->info->version >= ID_JZ4770) pull = !ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PEN); else pull = !ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_PULL_DIS); @@ -2149,7 +2150,7 @@ REG_SET(X1830_GPIO_PEH), bias << idxh); } - } else if (jzpc->info->version >= ID_JZ4760) { + } else if (jzpc->info->version >= ID_JZ4770) { ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PEN, !bias); } else { ingenic_config_pin(jzpc, pin, JZ4740_GPIO_PULL_DIS, !bias); @@ -2159,7 +2160,7 @@ static void ingenic_set_output_level(struct ingenic_pinctrl *jzpc, unsigned int pin, bool high) { - if (jzpc->info->version >= ID_JZ4760) + if (jzpc->info->version >= ID_JZ4770) ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, high); else ingenic_config_pin(jzpc, pin, JZ4740_GPIO_DATA, high); --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-mcp23s08.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-mcp23s08.c @@ -87,7 +87,7 @@ }; EXPORT_SYMBOL_GPL(mcp23x08_regmap); -static const struct reg_default mcp23x16_defaults[] = { +static const struct reg_default mcp23x17_defaults[] = { {.reg = MCP_IODIR << 1, .def = 0xffff}, {.reg = MCP_IPOL << 1, .def = 0x0000}, {.reg = MCP_GPINTEN << 1, .def = 0x0000}, @@ -98,23 +98,23 @@ {.reg = MCP_OLAT << 1, .def = 0x0000}, }; -static const struct regmap_range mcp23x16_volatile_range = { +static const struct regmap_range mcp23x17_volatile_range = { .range_min = MCP_INTF << 1, .range_max = MCP_GPIO << 1, }; -static const struct regmap_access_table mcp23x16_volatile_table = { - .yes_ranges = &mcp23x16_volatile_range, +static const struct regmap_access_table mcp23x17_volatile_table = { + .yes_ranges = &mcp23x17_volatile_range, .n_yes_ranges = 1, }; -static const struct regmap_range mcp23x16_precious_range = { - .range_min = MCP_GPIO << 1, +static const struct regmap_range mcp23x17_precious_range = { + .range_min = MCP_INTCAP << 1, .range_max = MCP_GPIO << 1, }; -static const struct regmap_access_table mcp23x16_precious_table = { - .yes_ranges = &mcp23x16_precious_range, +static const struct regmap_access_table mcp23x17_precious_table = { + .yes_ranges = &mcp23x17_precious_range, .n_yes_ranges = 1, }; @@ -124,10 +124,10 @@ .reg_stride = 2, .max_register = MCP_OLAT << 1, - .volatile_table = &mcp23x16_volatile_table, - .precious_table = &mcp23x16_precious_table, - .reg_defaults = mcp23x16_defaults, - .num_reg_defaults = ARRAY_SIZE(mcp23x16_defaults), + .volatile_table = &mcp23x17_volatile_table, + .precious_table = &mcp23x17_precious_table, + .reg_defaults = mcp23x17_defaults, + .num_reg_defaults = ARRAY_SIZE(mcp23x17_defaults), .cache_type = REGCACHE_FLAT, .val_format_endian = REGMAP_ENDIAN_LITTLE, }; --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-mcp23s08_spi.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-mcp23s08_spi.c @@ -119,13 +119,15 @@ return -EINVAL; } - copy = devm_kmemdup(dev, &config, sizeof(config), GFP_KERNEL); + copy = devm_kmemdup(dev, config, sizeof(*config), GFP_KERNEL); if (!copy) return -ENOMEM; copy->name = name; mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, copy); + if (IS_ERR(mcp->regmap)) + dev_err(dev, "regmap init failed for %s\n", mcp->chip.label); return PTR_ERR_OR_ZERO(mcp->regmap); } --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-rockchip.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-rockchip.c @@ -3153,7 +3153,9 @@ if (!bank->domain) return -ENXIO; + clk_enable(bank->clk); virq = irq_create_mapping(bank->domain, offset); + clk_disable(bank->clk); return (virq) ? : -ENXIO; } @@ -3727,12 +3729,15 @@ static int __maybe_unused rockchip_pinctrl_resume(struct device *dev) { struct rockchip_pinctrl *info = dev_get_drvdata(dev); - int ret = regmap_write(info->regmap_base, RK3288_GRF_GPIO6C_IOMUX, - rk3288_grf_gpio6c_iomux | - GPIO6C6_SEL_WRITE_ENABLE); + int ret; - if (ret) - return ret; + if (info->ctrl->type == RK3288) { + ret = regmap_write(info->regmap_base, RK3288_GRF_GPIO6C_IOMUX, + rk3288_grf_gpio6c_iomux | + GPIO6C6_SEL_WRITE_ENABLE); + if (ret) + return ret; + } return pinctrl_force_default(info->pctl_dev); } --- linux-5.8.0.orig/drivers/pinctrl/pinctrl-single.c +++ linux-5.8.0/drivers/pinctrl/pinctrl-single.c @@ -916,7 +916,7 @@ /* If pinconf isn't supported, don't parse properties in below. */ if (!PCS_HAS_PINCONF) - return 0; + return -ENOTSUPP; /* cacluate how much properties are supported in current node */ for (i = 0; i < ARRAY_SIZE(prop2); i++) { @@ -928,7 +928,7 @@ nconfs++; } if (!nconfs) - return 0; + return -ENOTSUPP; func->conf = devm_kcalloc(pcs->dev, nconfs, sizeof(struct pcs_conf_vals), @@ -1056,9 +1056,12 @@ if (PCS_HAS_PINCONF && function) { res = pcs_parse_pinconf(pcs, np, function, map); - if (res) + if (res == 0) + *num_maps = 2; + else if (res == -ENOTSUPP) + *num_maps = 1; + else goto free_pingroups; - *num_maps = 2; } else { *num_maps = 1; } --- linux-5.8.0.orig/drivers/pinctrl/qcom/pinctrl-msm.c +++ linux-5.8.0/drivers/pinctrl/qcom/pinctrl-msm.c @@ -48,6 +48,7 @@ * @dual_edge_irqs: Bitmap of irqs that need sw emulated dual edge * detection. * @skip_wake_irqs: Skip IRQs that are handled by wakeup interrupt controller + * @disabled_for_mux: These IRQs were disabled because we muxed away. * @soc; Reference to soc_data of platform specific data. * @regs: Base addresses for the TLMM tiles. */ @@ -68,6 +69,7 @@ DECLARE_BITMAP(dual_edge_irqs, MAX_NR_GPIO); DECLARE_BITMAP(enabled_irqs, MAX_NR_GPIO); DECLARE_BITMAP(skip_wake_irqs, MAX_NR_GPIO); + DECLARE_BITMAP(disabled_for_mux, MAX_NR_GPIO); const struct msm_pinctrl_soc_data *soc; void __iomem *regs[MAX_NR_TILES]; @@ -92,6 +94,14 @@ MSM_ACCESSOR(intr_status) MSM_ACCESSOR(intr_target) +static void msm_ack_intr_status(struct msm_pinctrl *pctrl, + const struct msm_pingroup *g) +{ + u32 val = g->intr_ack_high ? BIT(g->intr_status_bit) : 0; + + msm_writel_intr_status(val, pctrl, g); +} + static int msm_get_groups_count(struct pinctrl_dev *pctldev) { struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); @@ -167,6 +177,10 @@ unsigned group) { struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); + struct gpio_chip *gc = &pctrl->chip; + unsigned int irq = irq_find_mapping(gc->irq.domain, group); + struct irq_data *d = irq_get_irq_data(irq); + unsigned int gpio_func = pctrl->soc->gpio_func; const struct msm_pingroup *g; unsigned long flags; u32 val, mask; @@ -183,6 +197,20 @@ if (WARN_ON(i == g->nfuncs)) return -EINVAL; + /* + * If an GPIO interrupt is setup on this pin then we need special + * handling. Specifically interrupt detection logic will still see + * the pin twiddle even when we're muxed away. + * + * When we see a pin with an interrupt setup on it then we'll disable + * (mask) interrupts on it when we mux away until we mux back. Note + * that disable_irq() refcounts and interrupts are disabled as long as + * at least one disable_irq() has been called. + */ + if (d && i != gpio_func && + !test_and_set_bit(d->hwirq, pctrl->disabled_for_mux)) + disable_irq(irq); + raw_spin_lock_irqsave(&pctrl->lock, flags); val = msm_readl_ctl(pctrl, g); @@ -192,6 +220,20 @@ raw_spin_unlock_irqrestore(&pctrl->lock, flags); + if (d && i == gpio_func && + test_and_clear_bit(d->hwirq, pctrl->disabled_for_mux)) { + /* + * Clear interrupts detected while not GPIO since we only + * masked things. + */ + if (d->parent_data && test_bit(d->hwirq, pctrl->skip_wake_irqs)) + irq_chip_set_parent_state(d, IRQCHIP_STATE_PENDING, false); + else + msm_ack_intr_status(pctrl, g); + + enable_irq(irq); + } + return 0; } @@ -206,8 +248,7 @@ if (!g->nfuncs) return 0; - /* For now assume function 0 is GPIO because it always is */ - return msm_pinmux_set_mux(pctldev, g->funcs[0], offset); + return msm_pinmux_set_mux(pctldev, g->funcs[pctrl->soc->gpio_func], offset); } static const struct pinmux_ops msm_pinmux_ops = { @@ -757,7 +798,7 @@ raw_spin_unlock_irqrestore(&pctrl->lock, flags); } -static void msm_gpio_irq_clear_unmask(struct irq_data *d, bool status_clear) +static void msm_gpio_irq_unmask(struct irq_data *d) { struct gpio_chip *gc = irq_data_get_irq_chip_data(d); struct msm_pinctrl *pctrl = gpiochip_get_data(gc); @@ -775,17 +816,6 @@ raw_spin_lock_irqsave(&pctrl->lock, flags); - if (status_clear) { - /* - * clear the interrupt status bit before unmask to avoid - * any erroneous interrupts that would have got latched - * when the interrupt is not in use. - */ - val = msm_readl_intr_status(pctrl, g); - val &= ~BIT(g->intr_status_bit); - msm_writel_intr_status(val, pctrl, g); - } - val = msm_readl_intr_cfg(pctrl, g); val |= BIT(g->intr_raw_status_bit); val |= BIT(g->intr_enable_bit); @@ -798,21 +828,14 @@ static void msm_gpio_irq_enable(struct irq_data *d) { - /* - * Clear the interrupt that may be pending before we enable - * the line. - * This is especially a problem with the GPIOs routed to the - * PDC. These GPIOs are direct-connect interrupts to the GIC. - * Disabling the interrupt line at the PDC does not prevent - * the interrupt from being latched at the GIC. The state at - * GIC needs to be cleared before enabling. - */ - if (d->parent_data) { - irq_chip_set_parent_state(d, IRQCHIP_STATE_PENDING, 0); + struct gpio_chip *gc = irq_data_get_irq_chip_data(d); + struct msm_pinctrl *pctrl = gpiochip_get_data(gc); + + if (d->parent_data) irq_chip_enable_parent(d); - } - msm_gpio_irq_clear_unmask(d, true); + if (!test_bit(d->hwirq, pctrl->skip_wake_irqs)) + msm_gpio_irq_unmask(d); } static void msm_gpio_irq_disable(struct irq_data *d) @@ -827,11 +850,6 @@ msm_gpio_irq_mask(d); } -static void msm_gpio_irq_unmask(struct irq_data *d) -{ - msm_gpio_irq_clear_unmask(d, false); -} - /** * msm_gpio_update_dual_edge_parent() - Prime next edge for IRQs handled by parent. * @d: The irq dta. @@ -884,7 +902,6 @@ struct msm_pinctrl *pctrl = gpiochip_get_data(gc); const struct msm_pingroup *g; unsigned long flags; - u32 val; if (test_bit(d->hwirq, pctrl->skip_wake_irqs)) { if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) @@ -896,12 +913,7 @@ raw_spin_lock_irqsave(&pctrl->lock, flags); - val = msm_readl_intr_status(pctrl, g); - if (g->intr_ack_high) - val |= BIT(g->intr_status_bit); - else - val &= ~BIT(g->intr_status_bit); - msm_writel_intr_status(val, pctrl, g); + msm_ack_intr_status(pctrl, g); if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) msm_gpio_update_dual_edge_pos(pctrl, g, d); @@ -926,6 +938,7 @@ struct msm_pinctrl *pctrl = gpiochip_get_data(gc); const struct msm_pingroup *g; unsigned long flags; + bool was_enabled; u32 val; if (msm_gpio_needs_dual_edge_parent_workaround(d, type)) { @@ -987,6 +1000,7 @@ * could cause the INTR_STATUS to be set for EDGE interrupts. */ val = msm_readl_intr_cfg(pctrl, g); + was_enabled = val & BIT(g->intr_raw_status_bit); val |= BIT(g->intr_raw_status_bit); if (g->intr_detection_width == 2) { val &= ~(3 << g->intr_detection_bit); @@ -1036,6 +1050,14 @@ } msm_writel_intr_cfg(val, pctrl, g); + /* + * The first time we set RAW_STATUS_EN it could trigger an interrupt. + * Clear the interrupt. This is safe because we have + * IRQCHIP_SET_TYPE_MASKED. + */ + if (!was_enabled) + msm_ack_intr_status(pctrl, g); + if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) msm_gpio_update_dual_edge_pos(pctrl, g, d); @@ -1060,12 +1082,10 @@ * when TLMM is powered on. To allow that, enable the GPIO * summary line to be wakeup capable at GIC. */ - if (d->parent_data) - irq_chip_set_wake_parent(d, on); - - irq_set_irq_wake(pctrl->irq, on); + if (d->parent_data && test_bit(d->hwirq, pctrl->skip_wake_irqs)) + return irq_chip_set_wake_parent(d, on); - return 0; + return irq_set_irq_wake(pctrl->irq, on); } static int msm_gpio_irq_reqres(struct irq_data *d) @@ -1089,6 +1109,14 @@ ret = -EINVAL; goto out; } + + /* + * The disable / clear-enable workaround we do in msm_pinmux_set_mux() + * only works if disable is not lazy since we only clear any bogus + * interrupt in hardware. Explicitly mark the interrupt as UNLAZY. + */ + irq_set_status_flags(d->irq, IRQ_DISABLE_UNLAZY); + return 0; out: module_put(gc->owner); @@ -1226,6 +1254,8 @@ pctrl->irq_chip.irq_release_resources = msm_gpio_irq_relres; pctrl->irq_chip.irq_set_affinity = msm_gpio_irq_set_affinity; pctrl->irq_chip.irq_set_vcpu_affinity = msm_gpio_irq_set_vcpu_affinity; + pctrl->irq_chip.flags = IRQCHIP_MASK_ON_SUSPEND | + IRQCHIP_SET_TYPE_MASKED; np = of_parse_phandle(pctrl->dev->of_node, "wakeup-parent", 0); if (np) { --- linux-5.8.0.orig/drivers/pinctrl/qcom/pinctrl-msm.h +++ linux-5.8.0/drivers/pinctrl/qcom/pinctrl-msm.h @@ -116,6 +116,7 @@ * @wakeirq_dual_edge_errata: If true then GPIOs using the wakeirq_map need * to be aware that their parent can't handle dual * edge interrupts. + * @gpio_func: Which function number is GPIO (usually 0). */ struct msm_pinctrl_soc_data { const struct pinctrl_pin_desc *pins; @@ -132,6 +133,7 @@ const struct msm_gpio_wakeirq_map *wakeirq_map; unsigned int nwakeirq_map; bool wakeirq_dual_edge_errata; + unsigned int gpio_func; }; extern const struct dev_pm_ops msm_pinctrl_dev_pm_ops; --- linux-5.8.0.orig/drivers/pinctrl/qcom/pinctrl-sm8250.c +++ linux-5.8.0/drivers/pinctrl/qcom/pinctrl-sm8250.c @@ -1308,11 +1308,27 @@ [178] = PINGROUP(178, WEST, _, _, _, _, _, _, _, _, _), [179] = PINGROUP(179, WEST, _, _, _, _, _, _, _, _, _), [180] = UFS_RESET(ufs_reset, 0xb8000), - [181] = SDC_PINGROUP(sdc2_clk, 0x7000, 14, 6), + [181] = SDC_PINGROUP(sdc2_clk, 0xb7000, 14, 6), [182] = SDC_PINGROUP(sdc2_cmd, 0xb7000, 11, 3), [183] = SDC_PINGROUP(sdc2_data, 0xb7000, 9, 0), }; +static const struct msm_gpio_wakeirq_map sm8250_pdc_map[] = { + { 0, 79 }, { 1, 84 }, { 2, 80 }, { 3, 82 }, { 4, 107 }, { 7, 43 }, + { 11, 42 }, { 14, 44 }, { 15, 52 }, { 19, 67 }, { 23, 68 }, { 24, 105 }, + { 27, 92 }, { 28, 106 }, { 31, 69 }, { 35, 70 }, { 39, 37 }, + { 40, 108 }, { 43, 71 }, { 45, 72 }, { 47, 83 }, { 51, 74 }, { 55, 77 }, + { 59, 78 }, { 63, 75 }, { 64, 81 }, { 65, 87 }, { 66, 88 }, { 67, 89 }, + { 68, 54 }, { 70, 85 }, { 77, 46 }, { 80, 90 }, { 81, 91 }, { 83, 97 }, + { 84, 98 }, { 86, 99 }, { 87, 100 }, { 88, 101 }, { 89, 102 }, + { 92, 103 }, { 93, 104 }, { 100, 53 }, { 103, 47 }, { 104, 48 }, + { 108, 49 }, { 109, 94 }, { 110, 95 }, { 111, 96 }, { 112, 55 }, + { 113, 56 }, { 118, 50 }, { 121, 51 }, { 122, 57 }, { 123, 58 }, + { 124, 45 }, { 126, 59 }, { 128, 76 }, { 129, 86 }, { 132, 93 }, + { 133, 65 }, { 134, 66 }, { 136, 62 }, { 137, 63 }, { 138, 64 }, + { 142, 60 }, { 143, 61 } +}; + static const struct msm_pinctrl_soc_data sm8250_pinctrl = { .pins = sm8250_pins, .npins = ARRAY_SIZE(sm8250_pins), @@ -1323,6 +1339,8 @@ .ngpios = 181, .tiles = sm8250_tiles, .ntiles = ARRAY_SIZE(sm8250_tiles), + .wakeirq_map = sm8250_pdc_map, + .nwakeirq_map = ARRAY_SIZE(sm8250_pdc_map), }; static int sm8250_pinctrl_probe(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c +++ linux-5.8.0/drivers/pinctrl/sunxi/pinctrl-sunxi.c @@ -1142,20 +1142,22 @@ if (bank == pctl->desc->irq_banks) return; + chained_irq_enter(chip, desc); + reg = sunxi_irq_status_reg_from_bank(pctl->desc, bank); val = readl(pctl->membase + reg); if (val) { int irqoffset; - chained_irq_enter(chip, desc); for_each_set_bit(irqoffset, &val, IRQ_PER_BANK) { int pin_irq = irq_find_mapping(pctl->domain, bank * IRQ_PER_BANK + irqoffset); generic_handle_irq(pin_irq); } - chained_irq_exit(chip, desc); } + + chained_irq_exit(chip, desc); } static int sunxi_pinctrl_add_function(struct sunxi_pinctrl *pctl, --- linux-5.8.0.orig/drivers/platform/chrome/cros_ec_ishtp.c +++ linux-5.8.0/drivers/platform/chrome/cros_ec_ishtp.c @@ -681,8 +681,10 @@ /* Register croc_ec_dev mfd */ rv = cros_ec_dev_init(client_data); - if (rv) + if (rv) { + down_write(&init_lock); goto end_cros_ec_dev_init_error; + } return 0; --- linux-5.8.0.orig/drivers/platform/chrome/cros_ec_lightbar.c +++ linux-5.8.0/drivers/platform/chrome/cros_ec_lightbar.c @@ -116,6 +116,8 @@ param = (struct ec_params_lightbar *)msg->data; param->cmd = LIGHTBAR_CMD_VERSION; + msg->outsize = sizeof(param->cmd); + msg->result = sizeof(resp->version); ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); if (ret < 0) { ret = 0; --- linux-5.8.0.orig/drivers/platform/chrome/cros_ec_sensorhub_ring.c +++ linux-5.8.0/drivers/platform/chrome/cros_ec_sensorhub_ring.c @@ -419,9 +419,7 @@ * Disable filtering since we might add more jitter * if b is in a random point in time. */ - new_timestamp = fifo_timestamp - - fifo_info->timestamp * 1000 + - in->timestamp * 1000; + new_timestamp = c - b * 1000 + a * 1000; /* * The timestamp can be stale if we had to use the fifo * info timestamp. --- linux-5.8.0.orig/drivers/platform/chrome/cros_ec_spi.c +++ linux-5.8.0/drivers/platform/chrome/cros_ec_spi.c @@ -743,7 +743,6 @@ int err; spi->bits_per_word = 8; - spi->mode = SPI_MODE_0; spi->rt = true; err = spi_setup(spi); if (err < 0) --- linux-5.8.0.orig/drivers/platform/olpc/olpc-ec.c +++ linux-5.8.0/drivers/platform/olpc/olpc-ec.c @@ -426,11 +426,8 @@ /* get the EC revision */ err = olpc_ec_cmd(EC_FIRMWARE_REV, NULL, 0, &ec->version, 1); - if (err) { - ec_priv = NULL; - kfree(ec); - return err; - } + if (err) + goto error; config.dev = pdev->dev.parent; config.driver_data = ec; @@ -439,11 +436,17 @@ &config); if (IS_ERR(ec->dcon_rdev)) { dev_err(&pdev->dev, "failed to register DCON regulator\n"); - return PTR_ERR(ec->dcon_rdev); + err = PTR_ERR(ec->dcon_rdev); + goto error; } ec->dbgfs_dir = olpc_ec_setup_debugfs(); + return 0; + +error: + ec_priv = NULL; + kfree(ec); return err; } --- linux-5.8.0.orig/drivers/platform/x86/Kconfig +++ linux-5.8.0/drivers/platform/x86/Kconfig @@ -462,6 +462,20 @@ This is a driver for enabling wifi on some Fujitsu-Siemens Amilo laptops. +config DELL_UART_BACKLIGHT + tristate "Dell AIO UART Backlight driver" + depends on SERIAL_8250 + depends on ACPI + ---help--- + Say Y here if you want to support Dell AIO UART backlight interface. + The Dell AIO machines released after 2017 come with a UART interface + to communicate with the backlight scalar board. This driver creates + a standard backlight interface and talks to the scalar board through + UART to adjust the AIO screen brightness. + + To compile this driver as a module, choose M here: the module will + be called dell_uart_backlight. + config FUJITSU_LAPTOP tristate "Fujitsu Laptop Extras" depends on ACPI @@ -469,6 +483,7 @@ depends on BACKLIGHT_CLASS_DEVICE depends on ACPI_VIDEO || ACPI_VIDEO = n select INPUT_SPARSEKMAP + select NEW_LEDS select LEDS_CLASS help This is a driver for laptops built by Fujitsu: @@ -1091,6 +1106,7 @@ depends on ACPI_WMI depends on INPUT select INPUT_SPARSEKMAP + select NEW_LEDS select LEDS_CLASS help This driver adds support for hotkeys as well as control of keyboard --- linux-5.8.0.orig/drivers/platform/x86/Makefile +++ linux-5.8.0/drivers/platform/x86/Makefile @@ -42,6 +42,7 @@ obj-$(CONFIG_DELL_LAPTOP) += dell-laptop.o obj-$(CONFIG_DELL_RBTN) += dell-rbtn.o obj-$(CONFIG_DELL_RBU) += dell_rbu.o +obj-$(CONFIG_DELL_UART_BACKLIGHT) += dell-uart-backlight.o obj-$(CONFIG_DELL_SMO8800) += dell-smo8800.o obj-$(CONFIG_DELL_WMI) += dell-wmi.o obj-$(CONFIG_DELL_WMI_DESCRIPTOR) += dell-wmi-descriptor.o --- linux-5.8.0.orig/drivers/platform/x86/acer-wmi.c +++ linux-5.8.0/drivers/platform/x86/acer-wmi.c @@ -30,6 +30,7 @@ #include #include +ACPI_MODULE_NAME(KBUILD_MODNAME); MODULE_AUTHOR("Carlos Corbacho"); MODULE_DESCRIPTION("Acer Laptop WMI Extras Driver"); MODULE_LICENSE("GPL"); @@ -80,7 +81,7 @@ enum acer_wmi_event_ids { WMID_HOTKEY_EVENT = 0x1, - WMID_ACCEL_EVENT = 0x5, + WMID_ACCEL_OR_KBD_DOCK_EVENT = 0x5, }; static const struct key_entry acer_wmi_keymap[] __initconst = { @@ -111,6 +112,7 @@ {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */ {KE_IGNORE, 0x81, {KEY_SLEEP} }, {KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad Toggle */ + {KE_IGNORE, 0x84, {KEY_KBDILLUMTOGGLE} }, /* Automatic Keyboard background light toggle */ {KE_KEY, KEY_TOUCHPAD_ON, {KEY_TOUCHPAD_ON} }, {KE_KEY, KEY_TOUCHPAD_OFF, {KEY_TOUCHPAD_OFF} }, {KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} }, @@ -127,7 +129,9 @@ u8 function; u8 key_num; u16 device_state; - u32 reserved; + u16 reserved1; + u8 kbd_dock_state; + u8 reserved2; } __attribute__((packed)); /* @@ -205,14 +209,13 @@ /* * Interface capability flags */ -#define ACER_CAP_MAILLED (1<<0) -#define ACER_CAP_WIRELESS (1<<1) -#define ACER_CAP_BLUETOOTH (1<<2) -#define ACER_CAP_BRIGHTNESS (1<<3) -#define ACER_CAP_THREEG (1<<4) -#define ACER_CAP_ACCEL (1<<5) -#define ACER_CAP_RFBTN (1<<6) -#define ACER_CAP_ANY (0xFFFFFFFF) +#define ACER_CAP_MAILLED BIT(0) +#define ACER_CAP_WIRELESS BIT(1) +#define ACER_CAP_BLUETOOTH BIT(2) +#define ACER_CAP_BRIGHTNESS BIT(3) +#define ACER_CAP_THREEG BIT(4) +#define ACER_CAP_SET_FUNCTION_MODE BIT(5) +#define ACER_CAP_KBD_DOCK BIT(6) /* * Interface type flags @@ -235,6 +238,7 @@ static int brightness = -1; static int threeg = -1; static int force_series; +static int force_caps = -1; static bool ec_raw_mode; static bool has_type_aa; static u16 commun_func_bitmap; @@ -244,11 +248,13 @@ module_param(brightness, int, 0444); module_param(threeg, int, 0444); module_param(force_series, int, 0444); +module_param(force_caps, int, 0444); module_param(ec_raw_mode, bool, 0444); MODULE_PARM_DESC(mailled, "Set initial state of Mail LED"); MODULE_PARM_DESC(brightness, "Set initial LCD backlight brightness"); MODULE_PARM_DESC(threeg, "Set initial state of 3G hardware"); MODULE_PARM_DESC(force_series, "Force a different laptop series"); +MODULE_PARM_DESC(force_caps, "Force the capability bitmask to this value"); MODULE_PARM_DESC(ec_raw_mode, "Enable EC raw mode"); struct acer_data { @@ -318,6 +324,15 @@ return 1; } +static int __init set_force_caps(const struct dmi_system_id *dmi) +{ + if (force_caps == -1) { + force_caps = (uintptr_t)dmi->driver_data; + pr_info("Found %s, set force_caps to 0x%x\n", dmi->ident, force_caps); + } + return 1; +} + static struct quirk_entry quirk_unknown = { }; @@ -496,6 +511,33 @@ }, .driver_data = &quirk_acer_travelmate_2490, }, + { + .callback = set_force_caps, + .ident = "Acer Aspire Switch 10E SW3-016", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW3-016"), + }, + .driver_data = (void *)ACER_CAP_KBD_DOCK, + }, + { + .callback = set_force_caps, + .ident = "Acer Aspire Switch 10 SW5-012", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), + }, + .driver_data = (void *)ACER_CAP_KBD_DOCK, + }, + { + .callback = set_force_caps, + .ident = "Acer One 10 (S1003)", + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), + }, + .driver_data = (void *)ACER_CAP_KBD_DOCK, + }, {} }; @@ -1252,10 +1294,8 @@ interface->capability |= ACER_CAP_THREEG; if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_BLUETOOTH) interface->capability |= ACER_CAP_BLUETOOTH; - if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_RFBTN) { - interface->capability |= ACER_CAP_RFBTN; + if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_RFBTN) commun_func_bitmap &= ~ACER_WMID3_GDS_RFBTN; - } commun_fn_key_number = type_aa->commun_fn_key_number; } @@ -1519,7 +1559,7 @@ struct acpi_buffer output; union acpi_object out_obj[5]; - if (!has_cap(ACER_CAP_ACCEL)) + if (!acer_wmi_accel_dev) return -1; output.length = sizeof(out_obj); @@ -1543,6 +1583,71 @@ } /* + * Switch series keyboard dock status + */ +static int acer_kbd_dock_state_to_sw_tablet_mode(u8 kbd_dock_state) +{ + switch (kbd_dock_state) { + case 0x01: /* Docked, traditional clamshell laptop mode */ + return 0; + case 0x04: /* Stand-alone tablet */ + case 0x40: /* Docked, tent mode, keyboard not usable */ + return 1; + default: + pr_warn("Unknown kbd_dock_state 0x%02x\n", kbd_dock_state); + } + + return 0; +} + +static void acer_kbd_dock_get_initial_state(void) +{ + u8 *output, input[8] = { 0x05, 0x00, }; + struct acpi_buffer input_buf = { sizeof(input), input }; + struct acpi_buffer output_buf = { ACPI_ALLOCATE_BUFFER, NULL }; + union acpi_object *obj; + acpi_status status; + int sw_tablet_mode; + + status = wmi_evaluate_method(WMID_GUID3, 0, 0x2, &input_buf, &output_buf); + if (ACPI_FAILURE(status)) { + ACPI_EXCEPTION((AE_INFO, status, "Error getting keyboard-dock initial status")); + return; + } + + obj = output_buf.pointer; + if (!obj || obj->type != ACPI_TYPE_BUFFER || obj->buffer.length != 8) { + pr_err("Unexpected output format getting keyboard-dock initial status\n"); + goto out_free_obj; + } + + output = obj->buffer.pointer; + if (output[0] != 0x00 || (output[3] != 0x05 && output[3] != 0x45)) { + pr_err("Unexpected output [0]=0x%02x [3]=0x%02x getting keyboard-dock initial status\n", + output[0], output[3]); + goto out_free_obj; + } + + sw_tablet_mode = acer_kbd_dock_state_to_sw_tablet_mode(output[4]); + input_report_switch(acer_wmi_input_dev, SW_TABLET_MODE, sw_tablet_mode); + +out_free_obj: + kfree(obj); +} + +static void acer_kbd_dock_event(const struct event_return_value *event) +{ + int sw_tablet_mode; + + if (!has_cap(ACER_CAP_KBD_DOCK)) + return; + + sw_tablet_mode = acer_kbd_dock_state_to_sw_tablet_mode(event->kbd_dock_state); + input_report_switch(acer_wmi_input_dev, SW_TABLET_MODE, sw_tablet_mode); + input_sync(acer_wmi_input_dev); +} + +/* * Rfkill devices */ static void acer_rfkill_update(struct work_struct *ignored); @@ -1769,8 +1874,9 @@ sparse_keymap_report_event(acer_wmi_input_dev, scancode, 1, true); } break; - case WMID_ACCEL_EVENT: + case WMID_ACCEL_OR_KBD_DOCK_EVENT: acer_gsensor_event(); + acer_kbd_dock_event(&return_value); break; default: pr_warn("Unknown function number - %d - %d\n", @@ -1893,8 +1999,6 @@ gsensor_handle = acpi_device_handle(adev); acpi_dev_put(adev); - interface->capability |= ACER_CAP_ACCEL; - acer_wmi_accel_dev = input_allocate_device(); if (!acer_wmi_accel_dev) return -ENOMEM; @@ -1920,11 +2024,6 @@ return err; } -static void acer_wmi_accel_destroy(void) -{ - input_unregister_device(acer_wmi_accel_dev); -} - static int __init acer_wmi_input_setup(void) { acpi_status status; @@ -1942,6 +2041,9 @@ if (err) goto err_free_dev; + if (has_cap(ACER_CAP_KBD_DOCK)) + input_set_capability(acer_wmi_input_dev, EV_SW, SW_TABLET_MODE); + status = wmi_install_notify_handler(ACERWMID_EVENT_GUID, acer_wmi_notify, NULL); if (ACPI_FAILURE(status)) { @@ -1949,6 +2051,9 @@ goto err_free_dev; } + if (has_cap(ACER_CAP_KBD_DOCK)) + acer_kbd_dock_get_initial_state(); + err = input_register_device(acer_wmi_input_dev); if (err) goto err_uninstall_notifier; @@ -2079,7 +2184,7 @@ if (has_cap(ACER_CAP_BRIGHTNESS)) set_u32(data->brightness, ACER_CAP_BRIGHTNESS); - if (has_cap(ACER_CAP_ACCEL)) + if (acer_wmi_accel_dev) acer_gsensor_init(); return 0; @@ -2180,7 +2285,7 @@ } /* WMID always provides brightness methods */ interface->capability |= ACER_CAP_BRIGHTNESS; - } else if (!wmi_has_guid(WMID_GUID2) && interface && !has_type_aa) { + } else if (!wmi_has_guid(WMID_GUID2) && interface && !has_type_aa && force_caps == -1) { pr_err("No WMID device detection method found\n"); return -ENODEV; } @@ -2210,7 +2315,14 @@ if (acpi_video_get_backlight_type() != acpi_backlight_vendor) interface->capability &= ~ACER_CAP_BRIGHTNESS; - if (wmi_has_guid(WMID_GUID3)) { + if (wmi_has_guid(WMID_GUID3)) + interface->capability |= ACER_CAP_SET_FUNCTION_MODE; + + if (force_caps != -1) + interface->capability = force_caps; + + if (wmi_has_guid(WMID_GUID3) && + (interface->capability & ACER_CAP_SET_FUNCTION_MODE)) { if (ACPI_FAILURE(acer_wmi_enable_rf_button())) pr_warn("Cannot enable RF Button Driver\n"); @@ -2269,8 +2381,8 @@ error_platform_register: if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); - if (has_cap(ACER_CAP_ACCEL)) - acer_wmi_accel_destroy(); + if (acer_wmi_accel_dev) + input_unregister_device(acer_wmi_accel_dev); return err; } @@ -2280,8 +2392,8 @@ if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); - if (has_cap(ACER_CAP_ACCEL)) - acer_wmi_accel_destroy(); + if (acer_wmi_accel_dev) + input_unregister_device(acer_wmi_accel_dev); remove_debugfs(); platform_device_unregister(acer_platform_device); --- linux-5.8.0.orig/drivers/platform/x86/asus-nb-wmi.c +++ linux-5.8.0/drivers/platform/x86/asus-nb-wmi.c @@ -110,6 +110,20 @@ .wmi_force_als_set = true, }; +static struct quirk_entry quirk_asus_ga401i = { + .wmi_backlight_power = true, + .wmi_backlight_set_devstate = true, +}; + +static struct quirk_entry quirk_asus_ga502i = { + .wmi_backlight_power = true, + .wmi_backlight_set_devstate = true, +}; + +static struct quirk_entry quirk_asus_use_kbd_dock_devid = { + .use_kbd_dock_devid = true, +}; + static int dmi_matched(const struct dmi_system_id *dmi) { pr_info("Identified laptop model '%s'\n", dmi->ident); @@ -411,6 +425,106 @@ }, .driver_data = &quirk_asus_forceals, }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA401IH", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA401IH"), + }, + .driver_data = &quirk_asus_ga401i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA401II", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA401II"), + }, + .driver_data = &quirk_asus_ga401i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA401IU", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA401IU"), + }, + .driver_data = &quirk_asus_ga401i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA401IV", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA401IV"), + }, + .driver_data = &quirk_asus_ga401i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA401IVC", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA401IVC"), + }, + .driver_data = &quirk_asus_ga401i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA502II", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA502II"), + }, + .driver_data = &quirk_asus_ga502i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA502IU", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA502IU"), + }, + .driver_data = &quirk_asus_ga502i, + }, + { + .callback = dmi_matched, + .ident = "ASUSTeK COMPUTER INC. GA502IV", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GA502IV"), + }, + .driver_data = &quirk_asus_ga502i, + }, + { + .callback = dmi_matched, + .ident = "Asus Transformer T100TA / T100HA / T100CHI", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + /* Match *T100* */ + DMI_MATCH(DMI_PRODUCT_NAME, "T100"), + }, + .driver_data = &quirk_asus_use_kbd_dock_devid, + }, + { + .callback = dmi_matched, + .ident = "Asus Transformer T101HA", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "T101HA"), + }, + .driver_data = &quirk_asus_use_kbd_dock_devid, + }, + { + .callback = dmi_matched, + .ident = "Asus Transformer T200TA", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "T200TA"), + }, + .driver_data = &quirk_asus_use_kbd_dock_devid, + }, {}, }; --- linux-5.8.0.orig/drivers/platform/x86/asus-wmi.c +++ linux-5.8.0/drivers/platform/x86/asus-wmi.c @@ -365,12 +365,14 @@ if (err) goto err_free_dev; - result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_KBD_DOCK); - if (result >= 0) { - input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE); - input_report_switch(asus->inputdev, SW_TABLET_MODE, !result); - } else if (result != -ENODEV) { - pr_err("Error checking for keyboard-dock: %d\n", result); + if (asus->driver->quirks->use_kbd_dock_devid) { + result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_KBD_DOCK); + if (result >= 0) { + input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE); + input_report_switch(asus->inputdev, SW_TABLET_MODE, !result); + } else if (result != -ENODEV) { + pr_err("Error checking for keyboard-dock: %d\n", result); + } } err = input_register_device(asus->inputdev); @@ -2114,7 +2116,7 @@ return; } - if (code == NOTIFY_KBD_DOCK_CHANGE) { + if (asus->driver->quirks->use_kbd_dock_devid && code == NOTIFY_KBD_DOCK_CHANGE) { result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_KBD_DOCK); if (result >= 0) { --- linux-5.8.0.orig/drivers/platform/x86/asus-wmi.h +++ linux-5.8.0/drivers/platform/x86/asus-wmi.h @@ -33,6 +33,7 @@ bool wmi_backlight_native; bool wmi_backlight_set_devstate; bool wmi_force_als_set; + bool use_kbd_dock_devid; int wapf; /* * For machines with AMD graphic chips, it will send out WMI event --- linux-5.8.0.orig/drivers/platform/x86/dell-smbios-base.c +++ linux-5.8.0/drivers/platform/x86/dell-smbios-base.c @@ -594,6 +594,7 @@ if (wmi && smm) { pr_err("No SMBIOS backends available (wmi: %d, smm: %d)\n", wmi, smm); + ret = -ENODEV; goto fail_create_group; } --- linux-5.8.0.orig/drivers/platform/x86/dell-uart-backlight.c +++ linux-5.8.0/drivers/platform/x86/dell-uart-backlight.c @@ -0,0 +1,530 @@ +/* + * Dell AIO Serial Backlight Driver + * + * Copyright (C) 2017 AceLan Kao + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 +#include +#include +#include +#include +#include +#include +#include + +#include "dell-uart-backlight.h" + +struct dell_uart_backlight { + struct device *dev; + struct backlight_device *dell_uart_bd; + struct mutex brightness_mutex; + int line; + int bl_power; +}; +struct uart_8250_port *serial8250_get_port(int line); +static struct tty_struct *tty; +static struct file *ftty; + +unsigned int (*io_serial_in)(struct uart_port *p, int offset); +int (*uart_write)(struct tty_struct *tty, const unsigned char *buf, int count); +int (*uart_chars_in_buffer)(struct tty_struct *tty); + +static bool force; +module_param(force, bool, 0444); +MODULE_PARM_DESC(force, "load the driver regardless of the scalar status"); + +static struct dell_uart_bl_cmd uart_cmd[] = { + /* + * Get Firmware Version: Tool uses this command to get firmware version. + * Command: 0x6A 0x06 0x8F (Length:3 Type: 0x0A, Cmd:6 Checksum:0x8F) + * Return data: 0x0D 0x06 Data checksum (Length:13,Cmd:0x06, + * Data :F/W version(APRILIA=APR27-VXXX,PHINE=PHI23-VXXX), + * checksum:SUM(Length and Cmd and Data)xor 0xFF . + */ + [DELL_UART_GET_FIRMWARE_VER] = { + .cmd = {0x6A, 0x06, 0x8F}, + .tx_len = 3, + }, + /* + * Get Scalar Status: Tool uses this command to check if scalar IC controls brightness. + * Command: 0x6A 0x1F 0x8F (Length:3 Type: 0x0A, Cmd:0x1F Checksum:0x76) + * Return data: 0x04 0x1F Data checksum + * (Data = 0: scalar cannot adjust brightness, Data = 1: scalar can adjust brightness) + */ + [DELL_UART_GET_SCALAR] = { + .cmd = {0x6A,0x1F,0x76}, + .ret = {0x04,0x1F,0x00,0x00}, + .tx_len = 3, + .rx_len = 4, + }, + /* + * Get Brightness level: Application uses this command for scaler to + * get brightness. + * Command: 0x6A 0x0C 0x89 + * (Length:3 Type: 0x0A, Cmd:0x0C, Checksum:0x89) + * Return data: 0x04 0x0C Data checksum + * (Length:4 Cmd: 0x0C Data: brightness level + * checksum: SUM(Length and Cmd and Data)xor 0xFF) + * brightness level which ranges from 0~100. + */ + [DELL_UART_GET_BRIGHTNESS] = { + .cmd = {0x6A, 0x0C, 0x89}, + .ret = {0x04, 0x0C, 0x00, 0x00}, + .tx_len = 3, + .rx_len = 4, + }, + /* Set Brightness level: Application uses this command for scaler to + * set brightness. + * Command: 0x8A 0x0B Byte2 Checksum (Length:4 Type: 0x0A, Cmd:0x0B) + * where Byte2 is the brightness level which ranges from 0~100. + * Return data: 0x03 0x0B 0xF1(Length:3,Cmd:B,checksum:0xF1) + * Scaler must send the 3bytes ack within 1 second when success, + * other value if error + */ + [DELL_UART_SET_BRIGHTNESS] = { + .cmd = {0x8A, 0x0B, 0x0, 0x0}, + .ret = {0x03, 0x0B, 0xF1}, + .tx_len = 4, + .rx_len = 3, + }, + /* + * Screen ON/OFF Control: Application uses this command to control + * screen ON or OFF. + * Command: 0x8A 0x0E Byte2 Checksum (Length:4 Type: 0x0A, Cmd:0x0E) + * where + * Byte2=0 to turn OFF the screen. + * Byte2=1 to turn ON the screen + * Other value of Byte2 is reserved and invalid. + * Return data: 0x03 0x0E 0xEE(Length:3,Cmd:E,checksum:0xEE) + */ + [DELL_UART_SET_BACKLIGHT_POWER] = { + .cmd = {0x8A, 0x0E, 0x00, 0x0}, + .ret = {0x03, 0x0E, 0xEE}, + .tx_len = 4, + .rx_len = 3, + }, +}; + +static const struct dmi_system_id dell_uart_backlight_alpha_platform[] = { + { + .ident = "Dell Inspiron 7777 AIO", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7777 AIO"), + }, + }, + { + .ident = "Dell Inspiron 5477 AIO", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5477 AIO"), + }, + }, + { + .ident = "Dell OptiPlex 7769 AIO", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 7769 AIO"), + }, + }, + { + .ident = "Dell OptiPlex 5260 AIO", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 5260 AIO"), + }, + }, + { } +}; + +static int dell_uart_write(struct uart_8250_port *up, __u8 *buf, int len) +{ + int actual = 0; + struct uart_port *port = &up->port; + + tty_port_tty_wakeup(&port->state->port); + tty = tty_port_tty_get(&port->state->port); + actual = uart_write(tty, buf, len); + while (uart_chars_in_buffer(tty)) + udelay(10); + + return actual; +} + +static int dell_uart_read(struct uart_8250_port *up, __u8 *buf, int len) +{ + int i, retry; + unsigned long flags; + + spin_lock_irqsave(&up->port.lock, flags); + for (i = 0; i < len; i++) { + retry = 10; + while (!(io_serial_in(&up->port, UART_LSR) & UART_LSR_DR)) { + if (--retry == 0) + break; + mdelay(20); + } + + if (retry == 0) + break; + buf[i] = io_serial_in(&up->port, UART_RX); + } + spin_unlock_irqrestore(&up->port.lock, flags); + + return i; +} + +static void dell_uart_dump_cmd(const char *func, const char *prefix, + const char *cmd, int len) +{ + char buf[80]; + + snprintf(buf, 80, "dell_uart_backlight:%s:%s", func, prefix); + if (len != 0) + print_hex_dump_debug(buf, DUMP_PREFIX_NONE, + 16, 1, cmd, len, false); + else + pr_debug("dell_uart_backlight:%s:%sNULL\n", func, prefix); + +} + +/* + * checksum: SUM(Length and Cmd and Data)xor 0xFF) + */ +static unsigned char dell_uart_checksum(unsigned char *buf, int len) +{ + unsigned char val = 0; + + while (len-- > 0) + val += buf[len]; + + return val ^ 0xff; +} + +/* + * There is no command to get backlight power status, + * so we set the backlight power to "on" while initializing, + * and then track and report its status by bl_power variable + */ +static inline int dell_uart_get_bl_power(struct dell_uart_backlight *dell_pdata) +{ + return dell_pdata->bl_power; +} + +static int dell_uart_set_bl_power(struct backlight_device *bd, int power) +{ + struct dell_uart_bl_cmd *bl_cmd = + &uart_cmd[DELL_UART_SET_BACKLIGHT_POWER]; + struct dell_uart_backlight *dell_pdata = bl_get_data(bd); + struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); + int rx_len; + + if (power != FB_BLANK_POWERDOWN) + power = FB_BLANK_UNBLANK; + + bl_cmd->cmd[2] = power ? 0 : 1; + bl_cmd->cmd[3] = dell_uart_checksum(bl_cmd->cmd, bl_cmd->tx_len - 1); + + dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); + + if (mutex_lock_killable(&dell_pdata->brightness_mutex) < 0) { + pr_debug("Failed to get mutex_lock"); + return 0; + } + + dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); + rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + + mutex_unlock(&dell_pdata->brightness_mutex); + + dell_uart_dump_cmd(__func__, "rx: ", bl_cmd->ret, rx_len); + + bd->props.power = power; + dell_pdata->bl_power = power; + + return 0; +} + +static int dell_uart_get_brightness(struct backlight_device *bd) +{ + struct dell_uart_bl_cmd *bl_cmd = &uart_cmd[DELL_UART_GET_BRIGHTNESS]; + struct dell_uart_backlight *dell_pdata = bl_get_data(bd); + struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); + int rx_len, brightness = 0; + + dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); + + if (mutex_lock_killable(&dell_pdata->brightness_mutex) < 0) { + pr_debug("Failed to get mutex_lock"); + return 0; + } + + dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); + rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + + mutex_unlock(&dell_pdata->brightness_mutex); + + dell_uart_dump_cmd(__func__, "rx: ", bl_cmd->ret, rx_len); + + brightness = (unsigned int)bl_cmd->ret[2]; + + return brightness; +} + +static int dell_uart_update_status(struct backlight_device *bd) +{ + struct dell_uart_bl_cmd *bl_cmd = &uart_cmd[DELL_UART_SET_BRIGHTNESS]; + struct dell_uart_backlight *dell_pdata = bl_get_data(bd); + struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); + int rx_len; + + bl_cmd->cmd[2] = bd->props.brightness; + bl_cmd->cmd[3] = dell_uart_checksum(bl_cmd->cmd, bl_cmd->tx_len - 1); + + dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); + + if (mutex_lock_killable(&dell_pdata->brightness_mutex) < 0) { + pr_debug("Failed to get mutex_lock"); + return 0; + } + + dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); + rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + + mutex_unlock(&dell_pdata->brightness_mutex); + + dell_uart_dump_cmd(__func__, "rx: ", bl_cmd->ret, rx_len); + + if (bd->props.power != dell_uart_get_bl_power(dell_pdata)) + dell_uart_set_bl_power(bd, bd->props.power); + + return 0; +} + +static int dell_uart_get_scalar_status(struct dell_uart_backlight *dell_pdata) +{ + struct dell_uart_bl_cmd *bl_cmd = &uart_cmd[DELL_UART_GET_SCALAR]; + struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); + int rx_len; + int status = 0, retry = 50; + + dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); + + if (mutex_lock_killable(&dell_pdata->brightness_mutex) < 0) { + pr_debug("Failed to get mutex_lock"); + return 0; + } + + dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); + do { + rx_len = dell_uart_read(uart, bl_cmd->ret, bl_cmd->rx_len); + if (rx_len == 0) + msleep(100); + } while (rx_len == 0 && --retry); + + mutex_unlock(&dell_pdata->brightness_mutex); + + dell_uart_dump_cmd(__func__, "rx: ", bl_cmd->ret, rx_len); + + if (rx_len == 4) + status = (unsigned int)bl_cmd->ret[2]; + + return status; +} + +static int dell_uart_show_firmware_ver(struct dell_uart_backlight *dell_pdata) +{ + struct dell_uart_bl_cmd *bl_cmd = &uart_cmd[DELL_UART_GET_FIRMWARE_VER]; + struct uart_8250_port *uart = serial8250_get_port(dell_pdata->line); + int rx_len = 0, retry = 10; + + dell_uart_dump_cmd(__func__, "tx: ", bl_cmd->cmd, bl_cmd->tx_len); + + if (mutex_lock_killable(&dell_pdata->brightness_mutex) < 0) { + pr_debug("Failed to get mutex_lock"); + return -1; + } + + dell_uart_write(uart, bl_cmd->cmd, bl_cmd->tx_len); + while (retry-- > 0) { + /* first byte is data length */ + dell_uart_read(uart, bl_cmd->ret, 1); + rx_len = (int)bl_cmd->ret[0]; + if (bl_cmd->ret[0] > 80 || bl_cmd->ret[0] == 0) { + pr_debug("Failed to get firmware version\n"); + if (retry == 0) { + mutex_unlock(&dell_pdata->brightness_mutex); + return -1; + } + msleep(100); + continue; + } + + dell_uart_read(uart, bl_cmd->ret+1, rx_len-1); + break; + } + mutex_unlock(&dell_pdata->brightness_mutex); + + dell_uart_dump_cmd(__func__, "rx: ", bl_cmd->ret, rx_len); + + pr_debug("Firmare str(%d)= %s\n", (int)bl_cmd->ret[0], bl_cmd->ret+2); + return rx_len; +} + +static const struct backlight_ops dell_uart_backlight_ops = { + .get_brightness = dell_uart_get_brightness, + .update_status = dell_uart_update_status, +}; + +static int dell_uart_startup(struct dell_uart_backlight *dell_pdata) +{ + struct uart_8250_port *uartp; + struct uart_port *port; + + dell_pdata->line = 0; + uartp = serial8250_get_port(dell_pdata->line); + port = &uartp->port; + tty = port->state->port.tty; + io_serial_in = port->serial_in; + uart_write = tty->driver->ops->write; + uart_chars_in_buffer = tty->driver->ops->chars_in_buffer; + + return 0; +} + +static int dell_uart_bl_add(struct acpi_device *dev) +{ + struct dell_uart_backlight *dell_pdata; + struct backlight_properties props; + struct backlight_device *dell_uart_bd; + + dell_pdata = kzalloc(sizeof(struct dell_uart_backlight), GFP_KERNEL); + if (!dell_pdata) { + pr_debug("Failed to allocate memory for dell_uart_backlight\n"); + return -ENOMEM; + } + dell_pdata->dev = &dev->dev; + dell_uart_startup(dell_pdata); + dev->driver_data = dell_pdata; + + mutex_init(&dell_pdata->brightness_mutex); + + if (!force) { + if (dmi_check_system(dell_uart_backlight_alpha_platform)) { + /* try another command to make sure there is no scalar IC */ + if (dell_uart_show_firmware_ver(dell_pdata) <= 4) { + pr_debug("Scalar is not in charge of brightness adjustment.\n"); + kzfree(dell_pdata); + return -ENODEV; + } + } + else if (!dell_uart_get_scalar_status(dell_pdata)) { + pr_debug("Scalar is not in charge of brightness adjustment.\n"); + kzfree(dell_pdata); + return -ENODEV; + } + } + dell_uart_show_firmware_ver(dell_pdata); + + memset(&props, 0, sizeof(struct backlight_properties)); + props.type = BACKLIGHT_PLATFORM; + props.max_brightness = 100; + + dell_uart_bd = backlight_device_register("dell_uart_backlight", + &dev->dev, + dell_pdata, + &dell_uart_backlight_ops, + &props); + if (IS_ERR(dell_uart_bd)) { + kzfree(dell_pdata); + pr_debug("Backlight registration failed\n"); + return PTR_ERR(dell_uart_bd); + } + + dell_pdata->dell_uart_bd = dell_uart_bd; + + dell_uart_set_bl_power(dell_uart_bd, FB_BLANK_UNBLANK); + dell_uart_bd->props.brightness = 100; + backlight_update_status(dell_uart_bd); + + /* unregister acpi backlight interface */ + acpi_video_set_dmi_backlight_type(acpi_backlight_vendor); + + return 0; +} + +static int dell_uart_bl_remove(struct acpi_device *dev) +{ + struct dell_uart_backlight *dell_pdata = dev->driver_data; + + backlight_device_unregister(dell_pdata->dell_uart_bd); + kzfree(dell_pdata); + + return 0; +} + +static int dell_uart_bl_suspend(struct device *dev) +{ + filp_close(ftty, NULL); + return 0; +} + +static int dell_uart_bl_resume(struct device *dev) +{ + ftty = filp_open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY, 0); + return 0; +} + +static SIMPLE_DEV_PM_OPS(dell_uart_bl_pm, dell_uart_bl_suspend, dell_uart_bl_resume); + +static const struct acpi_device_id dell_uart_bl_ids[] = { + {"DELL0501", 0}, + {"", 0}, +}; + +static struct acpi_driver dell_uart_backlight_driver = { + .name = "Dell AIO serial backlight", + .ids = dell_uart_bl_ids, + .ops = { + .add = dell_uart_bl_add, + .remove = dell_uart_bl_remove, + }, + .drv.pm = &dell_uart_bl_pm, +}; + +static int __init dell_uart_bl_init(void) +{ + ftty = filp_open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY, 0); + if (IS_ERR(ftty)) { + pr_debug("cannot open /dev/ttyS0\n"); + return -EINVAL; + } + + return acpi_bus_register_driver(&dell_uart_backlight_driver); +} + +static void __exit dell_uart_bl_exit(void) +{ + filp_close(ftty, NULL); + + acpi_bus_unregister_driver(&dell_uart_backlight_driver); +} + +module_init(dell_uart_bl_init); +module_exit(dell_uart_bl_exit); +MODULE_DEVICE_TABLE(acpi, dell_uart_bl_ids); +MODULE_DESCRIPTION("Dell AIO Serial Backlight module"); +MODULE_AUTHOR("AceLan Kao "); +MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/drivers/platform/x86/dell-uart-backlight.h +++ linux-5.8.0/drivers/platform/x86/dell-uart-backlight.h @@ -0,0 +1,36 @@ +/* + * Dell AIO Serial Backlight Driver + * + * Copyright (C) 2017 AceLan Kao + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 _DELL_UART_BACKLIGHT_H_ +#define _DELL_UART_BACKLIGHT_H_ + +enum { + DELL_UART_GET_FIRMWARE_VER, + DELL_UART_GET_SCALAR, + DELL_UART_GET_BRIGHTNESS, + DELL_UART_SET_BRIGHTNESS, + DELL_UART_SET_BACKLIGHT_POWER, +}; + +struct dell_uart_bl_cmd { + unsigned char cmd[10]; + unsigned char ret[80]; + unsigned short tx_len; + unsigned short rx_len; +}; + +#endif /* _DELL_UART_BACKLIGHT_H_ */ --- linux-5.8.0.orig/drivers/platform/x86/hp-wmi.c +++ linux-5.8.0/drivers/platform/x86/hp-wmi.c @@ -32,6 +32,10 @@ MODULE_ALIAS("wmi:95F24279-4D7B-4334-9387-ACCDC67EF61C"); MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4"); +static int enable_tablet_mode_sw = -1; +module_param(enable_tablet_mode_sw, int, 0444); +MODULE_PARM_DESC(enable_tablet_mode_sw, "Enable SW_TABLET_MODE reporting (-1=auto, 0=no, 1=yes)"); + #define HPWMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C" #define HPWMI_BIOS_GUID "5FB7F034-2C63-45e9-BE91-3D44E2C707E4" @@ -246,7 +250,8 @@ ret = bios_return->return_code; if (ret) { - if (ret != HPWMI_RET_UNKNOWN_CMDTYPE) + if (ret != HPWMI_RET_UNKNOWN_COMMAND && + ret != HPWMI_RET_UNKNOWN_CMDTYPE) pr_warn("query 0x%x returned error 0x%x\n", query, ret); goto out_free; } @@ -652,10 +657,12 @@ } /* Tablet mode */ - val = hp_wmi_hw_state(HPWMI_TABLET_MASK); - if (!(val < 0)) { - __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit); - input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val); + if (enable_tablet_mode_sw > 0) { + val = hp_wmi_hw_state(HPWMI_TABLET_MASK); + if (val >= 0) { + __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit); + input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val); + } } err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL); --- linux-5.8.0.orig/drivers/platform/x86/i2c-multi-instantiate.c +++ linux-5.8.0/drivers/platform/x86/i2c-multi-instantiate.c @@ -166,13 +166,29 @@ {} }; -static const struct i2c_inst_data int3515_data[] = { - { "tps6598x", IRQ_RESOURCE_APIC, 0 }, - { "tps6598x", IRQ_RESOURCE_APIC, 1 }, - { "tps6598x", IRQ_RESOURCE_APIC, 2 }, - { "tps6598x", IRQ_RESOURCE_APIC, 3 }, - {} -}; +/* + * Device with _HID INT3515 (TI PD controllers) has some unresolved interrupt + * issues. The most common problem seen is interrupt flood. + * + * There are at least two known causes. Firstly, on some boards, the + * I2CSerialBus resource index does not match the Interrupt resource, i.e. they + * are not one-to-one mapped like in the array below. Secondly, on some boards + * the IRQ line from the PD controller is not actually connected at all. But the + * interrupt flood is also seen on some boards where those are not a problem, so + * there are some other problems as well. + * + * Because of the issues with the interrupt, the device is disabled for now. If + * you wish to debug the issues, uncomment the below, and add an entry for the + * INT3515 device to the i2c_multi_instance_ids table. + * + * static const struct i2c_inst_data int3515_data[] = { + * { "tps6598x", IRQ_RESOURCE_APIC, 0 }, + * { "tps6598x", IRQ_RESOURCE_APIC, 1 }, + * { "tps6598x", IRQ_RESOURCE_APIC, 2 }, + * { "tps6598x", IRQ_RESOURCE_APIC, 3 }, + * { } + * }; + */ /* * Note new device-ids must also be added to i2c_multi_instantiate_ids in @@ -181,7 +197,6 @@ static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = { { "BSG1160", (unsigned long)bsg1160_data }, { "BSG2150", (unsigned long)bsg2150_data }, - { "INT3515", (unsigned long)int3515_data }, { } }; MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids); --- linux-5.8.0.orig/drivers/platform/x86/ideapad-laptop.c +++ linux-5.8.0/drivers/platform/x86/ideapad-laptop.c @@ -92,6 +92,7 @@ struct dentry *debug; unsigned long cfg; bool has_hw_rfkill_switch; + bool has_touchpad_switch; const char *fnesc_guid; }; @@ -535,7 +536,9 @@ } else if (attr == &dev_attr_fn_lock.attr) { supported = acpi_has_method(priv->adev->handle, "HALS") && acpi_has_method(priv->adev->handle, "SALS"); - } else + } else if (attr == &dev_attr_touchpad.attr) + supported = priv->has_touchpad_switch; + else supported = true; return supported ? attr->mode : 0; @@ -867,6 +870,9 @@ { unsigned long value; + if (!priv->has_touchpad_switch) + return; + /* Without reading from EC touchpad LED doesn't switch state */ if (!read_ec_data(priv->adev->handle, VPCCMD_R_TOUCHPAD, &value)) { /* Some IdeaPads don't really turn off touchpad - they only @@ -989,6 +995,9 @@ priv->platform_device = pdev; priv->has_hw_rfkill_switch = dmi_check_system(hw_rfkill_list); + /* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */ + priv->has_touchpad_switch = !acpi_dev_present("ELAN0634", NULL, -1); + ret = ideapad_sysfs_init(priv); if (ret) return ret; @@ -1006,6 +1015,10 @@ if (!priv->has_hw_rfkill_switch) write_ec_cmd(priv->adev->handle, VPCCMD_W_RF, 1); + /* The same for Touchpad */ + if (!priv->has_touchpad_switch) + write_ec_cmd(priv->adev->handle, VPCCMD_W_TOUCHPAD, 1); + for (i = 0; i < IDEAPAD_RFKILL_DEV_NUM; i++) if (test_bit(ideapad_rfk_data[i].cfgbit, &priv->cfg)) ideapad_register_rfkill(priv, i); --- linux-5.8.0.orig/drivers/platform/x86/intel-hid.c +++ linux-5.8.0/drivers/platform/x86/intel-hid.c @@ -21,6 +21,7 @@ static const struct acpi_device_id intel_hid_ids[] = { {"INT33D5", 0}, {"INTC1051", 0}, + {"INTC1054", 0}, {"", 0}, }; MODULE_DEVICE_TABLE(acpi, intel_hid_ids); @@ -86,6 +87,13 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP Spectre x2 Detachable"), }, }, + { + .ident = "Lenovo ThinkPad X1 Tablet Gen 2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_FAMILY, "ThinkPad X1 Tablet Gen 2"), + }, + }, { } }; @@ -571,7 +579,7 @@ return AE_OK; if (acpi_match_device_ids(dev, ids) == 0) - if (acpi_create_platform_device(dev, NULL)) + if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL))) dev_info(&dev->dev, "intel-hid: created platform device\n"); --- linux-5.8.0.orig/drivers/platform/x86/intel-vbtn.c +++ linux-5.8.0/drivers/platform/x86/intel-vbtn.c @@ -15,9 +15,13 @@ #include #include +/* Returned when NOT in tablet mode on some HP Stream x360 11 models */ +#define VGBS_TABLET_MODE_FLAG_ALT 0x10 /* When NOT in tablet mode, VGBS returns with the flag 0x40 */ -#define TABLET_MODE_FLAG 0x40 -#define DOCK_MODE_FLAG 0x80 +#define VGBS_TABLET_MODE_FLAG 0x40 +#define VGBS_DOCK_MODE_FLAG 0x80 + +#define VGBS_TABLET_MODE_FLAGS (VGBS_TABLET_MODE_FLAG | VGBS_TABLET_MODE_FLAG_ALT) MODULE_LICENSE("GPL"); MODULE_AUTHOR("AceLan Kao"); @@ -43,8 +47,16 @@ }; static const struct key_entry intel_vbtn_switchmap[] = { - { KE_SW, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */ - { KE_SW, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */ + /* + * SW_DOCK should only be reported for docking stations, but DSDTs using the + * intel-vbtn code, always seem to use this for 2-in-1s / convertibles and set + * SW_DOCK=1 when in laptop-mode (in tandem with setting SW_TABLET_MODE=0). + * This causes userspace to think the laptop is docked to a port-replicator + * and to disable suspend-on-lid-close, which is undesirable. + * Map the dock events to KEY_IGNORE to avoid this broken SW_DOCK reporting. + */ + { KE_IGNORE, 0xCA, { .sw = { SW_DOCK, 1 } } }, /* Docked */ + { KE_IGNORE, 0xCB, { .sw = { SW_DOCK, 0 } } }, /* Undocked */ { KE_SW, 0xCC, { .sw = { SW_TABLET_MODE, 1 } } }, /* Tablet */ { KE_SW, 0xCD, { .sw = { SW_TABLET_MODE, 0 } } }, /* Laptop */ }; @@ -72,9 +84,9 @@ if (ACPI_FAILURE(status)) return; - m = !(vgbs & TABLET_MODE_FLAG); + m = !(vgbs & VGBS_TABLET_MODE_FLAGS); input_report_switch(priv->input_dev, SW_TABLET_MODE, m); - m = (vgbs & DOCK_MODE_FLAG) ? 1 : 0; + m = (vgbs & VGBS_DOCK_MODE_FLAG) ? 1 : 0; input_report_switch(priv->input_dev, SW_DOCK, m); } @@ -167,20 +179,66 @@ return ACPI_SUCCESS(status); } +/* + * There are several laptops (non 2-in-1) models out there which support VGBS, + * but simply always return 0, which we translate to SW_TABLET_MODE=1. This in + * turn causes userspace (libinput) to suppress events from the builtin + * keyboard and touchpad, making the laptop essentially unusable. + * + * Since the problem of wrongly reporting SW_TABLET_MODE=1 in combination + * with libinput, leads to a non-usable system. Where as OTOH many people will + * not even notice when SW_TABLET_MODE is not being reported, a DMI based allow + * list is used here. This list mainly matches on the chassis-type of 2-in-1s. + * + * There are also some 2-in-1s which use the intel-vbtn ACPI interface to report + * SW_TABLET_MODE with a chassis-type of 8 ("Portable") or 10 ("Notebook"), + * these are matched on a per model basis, since many normal laptops with a + * possible broken VGBS ACPI-method also use these chassis-types. + */ +static const struct dmi_system_id dmi_switches_allow_list[] = { + { + .matches = { + DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "31" /* Convertible */), + }, + }, + { + .matches = { + DMI_EXACT_MATCH(DMI_CHASSIS_TYPE, "32" /* Detachable */), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Venue 11 Pro 7130"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion 13 x360 PC"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Switch SA5-271"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7352"), + }, + }, + {} /* Array terminator */ +}; + static bool intel_vbtn_has_switches(acpi_handle handle) { - const char *chassis_type = dmi_get_system_info(DMI_CHASSIS_TYPE); unsigned long long vgbs; acpi_status status; - /* - * Some normal laptops have a VGBS method despite being non-convertible - * and their VGBS method always returns 0, causing detect_tablet_mode() - * to report SW_TABLET_MODE=1 to userspace, which causes issues. - * These laptops have a DMI chassis_type of 9 ("Laptop"), do not report - * switches on any devices with a DMI chassis_type of 9. - */ - if (chassis_type && strcmp(chassis_type, "9") == 0) + if (!dmi_check_system(dmi_switches_allow_list)) return false; status = acpi_evaluate_integer(handle, "VGBS", NULL, &vgbs); @@ -299,7 +357,7 @@ return AE_OK; if (acpi_match_device_ids(dev, ids) == 0) - if (acpi_create_platform_device(dev, NULL)) + if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL))) dev_info(&dev->dev, "intel-vbtn: created platform device\n"); --- linux-5.8.0.orig/drivers/platform/x86/intel_ips.c +++ linux-5.8.0/drivers/platform/x86/intel_ips.c @@ -1432,6 +1432,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook"), }, }, + { + .callback = ips_blacklist_callback, + .ident = "G60JX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "G60JX"), + }, + }, { } /* terminating entry */ }; --- linux-5.8.0.orig/drivers/platform/x86/intel_pmc_core.c +++ linux-5.8.0/drivers/platform/x86/intel_pmc_core.c @@ -154,6 +154,7 @@ .ltr_show_sts = spt_ltr_show_map, .msr_sts = msr_map, .slp_s0_offset = SPT_PMC_SLP_S0_RES_COUNTER_OFFSET, + .slp_s0_res_counter_step = SPT_PMC_SLP_S0_RES_COUNTER_STEP, .ltr_ignore_offset = SPT_PMC_LTR_IGNORE_OFFSET, .regmap_length = SPT_PMC_MMIO_REG_LEN, .ppfear0_offset = SPT_PMC_XRAM_PPFEAR0A, @@ -380,6 +381,7 @@ static const struct pmc_reg_map cnp_reg_map = { .pfear_sts = ext_cnp_pfear_map, .slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET, + .slp_s0_res_counter_step = SPT_PMC_SLP_S0_RES_COUNTER_STEP, .slps0_dbg_maps = cnp_slps0_dbg_maps, .ltr_show_sts = cnp_ltr_show_map, .msr_sts = msr_map, @@ -396,6 +398,7 @@ static const struct pmc_reg_map icl_reg_map = { .pfear_sts = ext_icl_pfear_map, .slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET, + .slp_s0_res_counter_step = ICL_PMC_SLP_S0_RES_COUNTER_STEP, .slps0_dbg_maps = cnp_slps0_dbg_maps, .ltr_show_sts = cnp_ltr_show_map, .msr_sts = msr_map, @@ -409,13 +412,13 @@ .ltr_ignore_max = ICL_NUM_IP_IGN_ALLOWED, }; -static const struct pmc_bit_map tgl_lpm0_map[] = { +static const struct pmc_bit_map tgl_clocksource_status_map[] = { {"USB2PLL_OFF_STS", BIT(18)}, {"PCIe/USB3.1_Gen2PLL_OFF_STS", BIT(19)}, {"PCIe_Gen3PLL_OFF_STS", BIT(20)}, {"OPIOPLL_OFF_STS", BIT(21)}, {"OCPLL_OFF_STS", BIT(22)}, - {"AudioPLL_OFF_STS", BIT(23)}, + {"MainPLL_OFF_STS", BIT(23)}, {"MIPIPLL_OFF_STS", BIT(24)}, {"Fast_XTAL_Osc_OFF_STS", BIT(25)}, {"AC_Ring_Osc_OFF_STS", BIT(26)}, @@ -425,35 +428,35 @@ {} }; -static const struct pmc_bit_map tgl_lpm1_map[] = { - {"SPI_PG_STS", BIT(2)}, - {"xHCI_PG_STS", BIT(3)}, - {"PCIe_Ctrller_A_PG_STS", BIT(4)}, - {"PCIe_Ctrller_B_PG_STS", BIT(5)}, - {"PCIe_Ctrller_C_PG_STS", BIT(6)}, - {"GBE_PG_STS", BIT(7)}, - {"SATA_PG_STS", BIT(8)}, - {"HDA0_PG_STS", BIT(9)}, - {"HDA1_PG_STS", BIT(10)}, - {"HDA2_PG_STS", BIT(11)}, - {"HDA3_PG_STS", BIT(12)}, - {"PCIe_Ctrller_D_PG_STS", BIT(13)}, - {"ISIO_PG_STS", BIT(14)}, - {"SMB_PG_STS", BIT(16)}, - {"ISH_PG_STS", BIT(17)}, - {"ITH_PG_STS", BIT(19)}, - {"SDX_PG_STS", BIT(20)}, - {"xDCI_PG_STS", BIT(25)}, - {"DCI_PG_STS", BIT(26)}, - {"CSME0_PG_STS", BIT(27)}, - {"CSME_KVM_PG_STS", BIT(28)}, - {"CSME1_PG_STS", BIT(29)}, - {"CSME_CLINK_PG_STS", BIT(30)}, - {"CSME2_PG_STS", BIT(31)}, +static const struct pmc_bit_map tgl_power_gating_status_map[] = { + {"CSME_PG_STS", BIT(0)}, + {"SATA_PG_STS", BIT(1)}, + {"xHCI_PG_STS", BIT(2)}, + {"UFSX2_PG_STS", BIT(3)}, + {"OTG_PG_STS", BIT(5)}, + {"SPA_PG_STS", BIT(6)}, + {"SPB_PG_STS", BIT(7)}, + {"SPC_PG_STS", BIT(8)}, + {"SPD_PG_STS", BIT(9)}, + {"SPE_PG_STS", BIT(10)}, + {"SPF_PG_STS", BIT(11)}, + {"LSX_PG_STS", BIT(13)}, + {"P2SB_PG_STS", BIT(14)}, + {"PSF_PG_STS", BIT(15)}, + {"SBR_PG_STS", BIT(16)}, + {"OPIDMI_PG_STS", BIT(17)}, + {"THC0_PG_STS", BIT(18)}, + {"THC1_PG_STS", BIT(19)}, + {"GBETSN_PG_STS", BIT(20)}, + {"GBE_PG_STS", BIT(21)}, + {"LPSS_PG_STS", BIT(22)}, + {"MMP_UFSX2_PG_STS", BIT(23)}, + {"MMP_UFSX2B_PG_STS", BIT(24)}, + {"FIA_PG_STS", BIT(25)}, {} }; -static const struct pmc_bit_map tgl_lpm2_map[] = { +static const struct pmc_bit_map tgl_d3_status_map[] = { {"ADSP_D3_STS", BIT(0)}, {"SATA_D3_STS", BIT(1)}, {"xHCI0_D3_STS", BIT(2)}, @@ -468,7 +471,7 @@ {} }; -static const struct pmc_bit_map tgl_lpm3_map[] = { +static const struct pmc_bit_map tgl_vnn_req_status_map[] = { {"GPIO_COM0_VNN_REQ_STS", BIT(1)}, {"GPIO_COM1_VNN_REQ_STS", BIT(2)}, {"GPIO_COM2_VNN_REQ_STS", BIT(3)}, @@ -493,7 +496,7 @@ {} }; -static const struct pmc_bit_map tgl_lpm4_map[] = { +static const struct pmc_bit_map tgl_vnn_misc_status_map[] = { {"CPU_C10_REQ_STS_0", BIT(0)}, {"PCIe_LPM_En_REQ_STS_3", BIT(3)}, {"ITH_REQ_STS_5", BIT(5)}, @@ -509,7 +512,7 @@ {} }; -static const struct pmc_bit_map tgl_lpm5_map[] = { +static const struct pmc_bit_map tgl_signal_status_map[] = { {"LSX_Wake0_En_STS", BIT(0)}, {"LSX_Wake0_Pol_STS", BIT(1)}, {"LSX_Wake1_En_STS", BIT(2)}, @@ -546,18 +549,19 @@ }; static const struct pmc_bit_map *tgl_lpm_maps[] = { - tgl_lpm0_map, - tgl_lpm1_map, - tgl_lpm2_map, - tgl_lpm3_map, - tgl_lpm4_map, - tgl_lpm5_map, + tgl_clocksource_status_map, + tgl_power_gating_status_map, + tgl_d3_status_map, + tgl_vnn_req_status_map, + tgl_vnn_misc_status_map, + tgl_signal_status_map, NULL }; static const struct pmc_reg_map tgl_reg_map = { .pfear_sts = ext_tgl_pfear_map, .slp_s0_offset = CNP_PMC_SLP_S0_RES_COUNTER_OFFSET, + .slp_s0_res_counter_step = TGL_PMC_SLP_S0_RES_COUNTER_STEP, .ltr_show_sts = cnp_ltr_show_map, .msr_sts = msr_map, .ltr_ignore_offset = CNP_PMC_LTR_IGNORE_OFFSET, @@ -586,9 +590,9 @@ writel(val, pmcdev->regbase + reg_offset); } -static inline u64 pmc_core_adjust_slp_s0_step(u32 value) +static inline u64 pmc_core_adjust_slp_s0_step(struct pmc_dev *pmcdev, u32 value) { - return (u64)value * SPT_PMC_SLP_S0_RES_COUNTER_STEP; + return (u64)value * pmcdev->map->slp_s0_res_counter_step; } static int pmc_core_dev_state_get(void *data, u64 *val) @@ -598,7 +602,7 @@ u32 value; value = pmc_core_reg_read(pmcdev, map->slp_s0_offset); - *val = pmc_core_adjust_slp_s0_step(value); + *val = pmc_core_adjust_slp_s0_step(pmcdev, value); return 0; } @@ -795,7 +799,7 @@ msleep(10); val_high = pmc_core_reg_read(pmcdev, SPT_PMC_MFPMC_OFFSET); - for (index = 0; map[index].name && index < 8; index++) { + for (index = 0; index < 8 && map[index].name; index++) { seq_printf(s, "%-32s\tState: %s\n", map[index].name, map[index].bit_mask & val_low ? "Not power gated" : @@ -851,34 +855,45 @@ } DEFINE_SHOW_ATTRIBUTE(pmc_core_pll); -static ssize_t pmc_core_ltr_ignore_write(struct file *file, - const char __user *userbuf, - size_t count, loff_t *ppos) +static int pmc_core_send_ltr_ignore(u32 value) { struct pmc_dev *pmcdev = &pmc; const struct pmc_reg_map *map = pmcdev->map; - u32 val, buf_size, fd; - int err; - - buf_size = count < 64 ? count : 64; - - err = kstrtou32_from_user(userbuf, buf_size, 10, &val); - if (err) - return err; + u32 reg; + int err = 0; mutex_lock(&pmcdev->lock); - if (val > map->ltr_ignore_max) { + if (value > map->ltr_ignore_max) { err = -EINVAL; goto out_unlock; } - fd = pmc_core_reg_read(pmcdev, map->ltr_ignore_offset); - fd |= (1U << val); - pmc_core_reg_write(pmcdev, map->ltr_ignore_offset, fd); + reg = pmc_core_reg_read(pmcdev, map->ltr_ignore_offset); + reg |= BIT(value); + pmc_core_reg_write(pmcdev, map->ltr_ignore_offset, reg); out_unlock: mutex_unlock(&pmcdev->lock); + + return err; +} + +static ssize_t pmc_core_ltr_ignore_write(struct file *file, + const char __user *userbuf, + size_t count, loff_t *ppos) +{ + u32 buf_size, value; + int err; + + buf_size = min_t(u32, count, 64); + + err = kstrtou32_from_user(userbuf, buf_size, 10, &value); + if (err) + return err; + + err = pmc_core_send_ltr_ignore(value); + return err == 0 ? count : err; } @@ -1231,6 +1246,15 @@ pmcdev->pmc_xram_read_bit = pmc_core_check_read_lock_bit(); dmi_check_system(pmc_core_dmi_table); + /* + * On TGL, due to a hardware limitation, the GBE LTR blocks PC10 when + * a cable is attached. Tell the PMC to ignore it. + */ + if (pmcdev->map == &tgl_reg_map) { + dev_dbg(&pdev->dev, "ignoring GBE LTR\n"); + pmc_core_send_ltr_ignore(3); + } + pmc_core_dbgfs_register(pmcdev); device_initialized = true; --- linux-5.8.0.orig/drivers/platform/x86/intel_pmc_core.h +++ linux-5.8.0/drivers/platform/x86/intel_pmc_core.h @@ -30,7 +30,7 @@ #define SPT_PMC_MPHY_CORE_STS_1 0x1142 #define SPT_PMC_MPHY_COM_STS_0 0x1155 #define SPT_PMC_MMIO_REG_LEN 0x1000 -#define SPT_PMC_SLP_S0_RES_COUNTER_STEP 0x64 +#define SPT_PMC_SLP_S0_RES_COUNTER_STEP 0x68 #define PMC_BASE_ADDR_MASK ~(SPT_PMC_MMIO_REG_LEN - 1) #define MTPMC_MASK 0xffff0000 #define PPFEAR_MAX_NUM_ENTRIES 12 @@ -185,8 +185,10 @@ #define ICL_PPFEAR_NUM_ENTRIES 9 #define ICL_NUM_IP_IGN_ALLOWED 20 #define ICL_PMC_LTR_WIGIG 0x1BFC +#define ICL_PMC_SLP_S0_RES_COUNTER_STEP 0x64 #define TGL_NUM_IP_IGN_ALLOWED 22 +#define TGL_PMC_SLP_S0_RES_COUNTER_STEP 0x7A /* * Tigerlake Power Management Controller register offsets @@ -245,6 +247,7 @@ const struct pmc_bit_map *msr_sts; const struct pmc_bit_map **lpm_sts; const u32 slp_s0_offset; + const int slp_s0_res_counter_step; const u32 ltr_ignore_offset; const int regmap_length; const u32 ppfear0_offset; --- linux-5.8.0.orig/drivers/platform/x86/mlx-platform.c +++ linux-5.8.0/drivers/platform/x86/mlx-platform.c @@ -310,24 +310,6 @@ }; /* Platform hotplug devices */ -static struct i2c_board_info mlxplat_mlxcpld_psu[] = { - { - I2C_BOARD_INFO("24c02", 0x51), - }, - { - I2C_BOARD_INFO("24c02", 0x50), - }, -}; - -static struct i2c_board_info mlxplat_mlxcpld_ng_psu[] = { - { - I2C_BOARD_INFO("24c32", 0x51), - }, - { - I2C_BOARD_INFO("24c32", 0x50), - }, -}; - static struct i2c_board_info mlxplat_mlxcpld_pwr[] = { { I2C_BOARD_INFO("dps460", 0x59), @@ -374,15 +356,13 @@ .label = "psu1", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(0), - .hpdev.brdinfo = &mlxplat_mlxcpld_psu[0], - .hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, { .label = "psu2", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(1), - .hpdev.brdinfo = &mlxplat_mlxcpld_psu[1], - .hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, }; @@ -449,7 +429,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_PSU_MASK_DEF, .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = MLXPLAT_CPLD_PSU_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_psu), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_psu_items_data), .inversed = 1, .health = false, }, @@ -458,7 +438,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_PWR_MASK_DEF, .reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET, .mask = MLXPLAT_CPLD_PWR_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_pwr), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_pwr_items_data), .inversed = 0, .health = false, }, @@ -467,7 +447,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_FAN_MASK_DEF, .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, .mask = MLXPLAT_CPLD_FAN_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_fan), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_fan_items_data), .inversed = 1, .health = false, }, @@ -488,7 +468,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_MASK_CARRIER, .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = MLXPLAT_CPLD_PSU_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_psu), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_psu_items_data), .inversed = 1, .health = false, }, @@ -497,7 +477,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_MASK_CARRIER, .reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET, .mask = MLXPLAT_CPLD_PWR_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_pwr), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_pwr_items_data), .inversed = 0, .health = false, }, @@ -506,7 +486,7 @@ .aggr_mask = MLXPLAT_CPLD_AGGR_MASK_CARRIER, .reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET, .mask = MLXPLAT_CPLD_FAN_MASK, - .count = ARRAY_SIZE(mlxplat_mlxcpld_fan), + .count = ARRAY_SIZE(mlxplat_mlxcpld_default_fan_items_data), .inversed = 1, .health = false, }, @@ -594,15 +574,13 @@ .label = "psu1", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(0), - .hpdev.brdinfo = &mlxplat_mlxcpld_psu[0], - .hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, { .label = "psu2", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(1), - .hpdev.brdinfo = &mlxplat_mlxcpld_psu[1], - .hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, }; @@ -752,15 +730,13 @@ .label = "psu1", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(0), - .hpdev.brdinfo = &mlxplat_mlxcpld_ng_psu[0], - .hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, { .label = "psu2", .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET, .mask = BIT(1), - .hpdev.brdinfo = &mlxplat_mlxcpld_ng_psu[1], - .hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR, + .hpdev.nr = MLXPLAT_CPLD_NR_NONE, }, }; --- linux-5.8.0.orig/drivers/platform/x86/thinkpad_acpi.c +++ linux-5.8.0/drivers/platform/x86/thinkpad_acpi.c @@ -2569,7 +2569,7 @@ */ static int hotkey_kthread(void *data) { - struct tp_nvram_state s[2]; + struct tp_nvram_state s[2] = { 0 }; u32 poll_mask, event_mask; unsigned int si, so; unsigned long t; @@ -3214,7 +3214,14 @@ in_tablet_mode = hotkey_gmms_get_tablet_mode(res, &has_tablet_mode); - if (has_tablet_mode) + /* + * The Yoga 11e series has 2 accelerometers described by a + * BOSC0200 ACPI node. This setup relies on a Windows service + * which calls special ACPI methods on this node to report + * the laptop/tent/tablet mode to the EC. The bmc150 iio driver + * does not support this, so skip the hotkey on these models. + */ + if (has_tablet_mode && !acpi_dev_present("BOSC0200", "1", -1)) tp_features.hotkey_tablet = TP_HOTKEY_TABLET_USES_GMMS; type = "GMMS"; } else if (acpi_evalf(hkey_handle, &res, "MHKG", "qd")) { @@ -4064,13 +4071,19 @@ case TP_HKEY_EV_KEY_NUMLOCK: case TP_HKEY_EV_KEY_FN: - case TP_HKEY_EV_KEY_FN_ESC: /* key press events, we just ignore them as long as the EC * is still reporting them in the normal keyboard stream */ *send_acpi_ev = false; *ignore_acpi_ev = true; return true; + case TP_HKEY_EV_KEY_FN_ESC: + /* Get the media key status to foce the status LED to update */ + acpi_evalf(hkey_handle, NULL, "GMKS", "v"); + *send_acpi_ev = false; + *ignore_acpi_ev = true; + return true; + case TP_HKEY_EV_TABLET_CHANGED: tpacpi_input_send_tabletsw(); hotkey_tablet_mode_notify_change(); @@ -4220,6 +4233,7 @@ pr_err("error while attempting to reset the event firmware interface\n"); tpacpi_send_radiosw_update(); + tpacpi_input_send_tabletsw(); hotkey_tablet_mode_notify_change(); hotkey_wakeup_reason_notify_change(); hotkey_wakeup_hotunplug_complete_notify_change(); @@ -6829,8 +6843,10 @@ list_for_each_entry(child, &device->children, node) { acpi_status status = acpi_evaluate_object(child->handle, "_BCL", NULL, &buffer); - if (ACPI_FAILURE(status)) + if (ACPI_FAILURE(status)) { + buffer.length = ACPI_ALLOCATE_BUFFER; continue; + } obj = (union acpi_object *)buffer.pointer; if (!obj || (obj->type != ACPI_TYPE_PACKAGE)) { @@ -6963,10 +6979,13 @@ pr_warn("Cannot enable backlight brightness support, ACPI is already handling it. Refer to the acpi_backlight kernel parameter.\n"); return 1; } - } else if (tp_features.bright_acpimode && brightness_enable > 1) { - pr_notice("Standard ACPI backlight interface not available, thinkpad_acpi native brightness control enabled\n"); + } else if (!tp_features.bright_acpimode) { + pr_notice("ACPI backlight interface not available\n"); + return 1; } + pr_notice("ACPI native brightness control enabled\n"); + /* * Check for module parameter bogosity, note that we * init brightness_mode to TPACPI_BRGHT_MODE_MAX in order to be @@ -8761,8 +8780,11 @@ TPACPI_Q_LNV3('N', '1', 'T', TPACPI_FAN_2CTL), /* P71 */ TPACPI_Q_LNV3('N', '1', 'U', TPACPI_FAN_2CTL), /* P51 */ TPACPI_Q_LNV3('N', '2', 'C', TPACPI_FAN_2CTL), /* P52 / P72 */ + TPACPI_Q_LNV3('N', '2', 'N', TPACPI_FAN_2CTL), /* P53 / P73 */ TPACPI_Q_LNV3('N', '2', 'E', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (1st gen) */ TPACPI_Q_LNV3('N', '2', 'O', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (2nd gen) */ + TPACPI_Q_LNV3('N', '2', 'V', TPACPI_FAN_2CTL), /* P1 / X1 Extreme (3nd gen) */ + TPACPI_Q_LNV3('N', '3', '0', TPACPI_FAN_2CTL), /* P15 (1st gen) / P15v (1st gen) */ }; static int __init fan_init(struct ibm_init_struct *iibm) @@ -9679,6 +9701,7 @@ TPACPI_Q_LNV3('R', '0', 'B', true), /* Thinkpad 11e gen 3 */ TPACPI_Q_LNV3('R', '0', 'C', true), /* Thinkpad 13 */ TPACPI_Q_LNV3('R', '0', 'J', true), /* Thinkpad 13 gen 2 */ + TPACPI_Q_LNV3('R', '0', 'K', true), /* Thinkpad 11e gen 4 celeron BIOS */ }; static int __init tpacpi_battery_init(struct ibm_init_struct *ibm) --- linux-5.8.0.orig/drivers/platform/x86/toshiba_acpi.c +++ linux-5.8.0/drivers/platform/x86/toshiba_acpi.c @@ -1478,7 +1478,7 @@ struct toshiba_acpi_dev *dev = PDE_DATA(file_inode(file)); char *buffer; char *cmd; - int lcd_out, crt_out, tv_out; + int lcd_out = -1, crt_out = -1, tv_out = -1; int remain = count; int value; int ret; @@ -1510,7 +1510,6 @@ kfree(cmd); - lcd_out = crt_out = tv_out = -1; ret = get_video_status(dev, &video_out); if (!ret) { unsigned int new_video_out = video_out; --- linux-5.8.0.orig/drivers/platform/x86/touchscreen_dmi.c +++ linux-5.8.0/drivers/platform/x86/touchscreen_dmi.c @@ -263,6 +263,16 @@ .properties = digma_citi_e200_props, }; +static const struct property_entry estar_beauty_hd_props[] = { + PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), + { } +}; + +static const struct ts_dmi_data estar_beauty_hd_data = { + .acpi_name = "GDIX1001:00", + .properties = estar_beauty_hd_props, +}; + static const struct property_entry gp_electronic_t701_props[] = { PROPERTY_ENTRY_U32("touchscreen-size-x", 960), PROPERTY_ENTRY_U32("touchscreen-size-y", 640), @@ -295,6 +305,21 @@ .properties = irbis_tw90_props, }; +static const struct property_entry irbis_tw118_props[] = { + PROPERTY_ENTRY_U32("touchscreen-min-x", 20), + PROPERTY_ENTRY_U32("touchscreen-min-y", 30), + PROPERTY_ENTRY_U32("touchscreen-size-x", 1960), + PROPERTY_ENTRY_U32("touchscreen-size-y", 1510), + PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-irbis-tw118.fw"), + PROPERTY_ENTRY_U32("silead,max-fingers", 10), + { } +}; + +static const struct ts_dmi_data irbis_tw118_data = { + .acpi_name = "MSSL1680:00", + .properties = irbis_tw118_props, +}; + static const struct property_entry itworks_tw891_props[] = { PROPERTY_ENTRY_U32("touchscreen-min-x", 1), PROPERTY_ENTRY_U32("touchscreen-min-y", 5), @@ -606,6 +631,23 @@ .properties = pov_mobii_wintab_p1006w_v10_props, }; +static const struct property_entry predia_basic_props[] = { + PROPERTY_ENTRY_U32("touchscreen-min-x", 3), + PROPERTY_ENTRY_U32("touchscreen-min-y", 10), + PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), + PROPERTY_ENTRY_U32("touchscreen-size-y", 1144), + PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), + PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-predia-basic.fw"), + PROPERTY_ENTRY_U32("silead,max-fingers", 10), + PROPERTY_ENTRY_BOOL("silead,home-button"), + { } +}; + +static const struct ts_dmi_data predia_basic_data = { + .acpi_name = "MSSL1680:00", + .properties = predia_basic_props, +}; + static const struct property_entry schneider_sct101ctm_props[] = { PROPERTY_ENTRY_U32("touchscreen-size-x", 1715), PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), @@ -894,6 +936,14 @@ }, }, { + /* Estar Beauty HD (MID 7316R) */ + .driver_data = (void *)&estar_beauty_hd_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Estar"), + DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"), + }, + }, + { /* GP-electronic T701 */ .driver_data = (void *)&gp_electronic_t701_data, .matches = { @@ -920,6 +970,14 @@ }, }, { + /* Irbis TW118 */ + .driver_data = (void *)&irbis_tw118_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"), + DMI_MATCH(DMI_PRODUCT_NAME, "TW118"), + }, + }, + { /* I.T.Works TW891 */ .driver_data = (void *)&itworks_tw891_data, .matches = { @@ -1085,6 +1143,16 @@ }, }, { + /* Predia Basic tablet) */ + .driver_data = (void *)&predia_basic_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), + DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"), + /* Above matches are too generic, add bios-version match */ + DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"), + }, + }, + { /* Point of View mobii wintab p800w (v2.1) */ .driver_data = (void *)&pov_mobii_wintab_p800w_v21_data, .matches = { --- linux-5.8.0.orig/drivers/pnp/isapnp/core.c +++ linux-5.8.0/drivers/pnp/isapnp/core.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include "../base.h" @@ -950,7 +951,7 @@ .disable = isapnp_disable_resources, }; -static int __init isapnp_init(void) +static int __init real_isapnp_init(void) { int cards; struct pnp_card *card; @@ -1044,6 +1045,16 @@ return 0; } +static void __init async_isapnp_init(void *unused, async_cookie_t cookie) +{ + (void)real_isapnp_init(); +} + +static int __init isapnp_init(void) +{ + async_schedule(async_isapnp_init, NULL); + return 0; +} device_initcall(isapnp_init); /* format is: noisapnp */ --- linux-5.8.0.orig/drivers/power/reset/at91-sama5d2_shdwc.c +++ linux-5.8.0/drivers/power/reset/at91-sama5d2_shdwc.c @@ -37,7 +37,7 @@ #define AT91_SHDW_MR 0x04 /* Shut Down Mode Register */ #define AT91_SHDW_WKUPDBC_SHIFT 24 -#define AT91_SHDW_WKUPDBC_MASK GENMASK(31, 16) +#define AT91_SHDW_WKUPDBC_MASK GENMASK(26, 24) #define AT91_SHDW_WKUPDBC(x) (((x) << AT91_SHDW_WKUPDBC_SHIFT) \ & AT91_SHDW_WKUPDBC_MASK) --- linux-5.8.0.orig/drivers/power/supply/88pm860x_battery.c +++ linux-5.8.0/drivers/power/supply/88pm860x_battery.c @@ -433,7 +433,7 @@ int ret; int data; int bat_remove; - int soc; + int soc = 0; /* measure enable on GPADC1 */ data = MEAS1_GP1; @@ -496,7 +496,9 @@ } mutex_unlock(&info->lock); - calc_soc(info, OCV_MODE_ACTIVE, &soc); + ret = calc_soc(info, OCV_MODE_ACTIVE, &soc); + if (ret < 0) + goto out; data = pm860x_reg_read(info->i2c, PM8607_POWER_UP_LOG); bat_remove = data & BAT_WU_LOG; --- linux-5.8.0.orig/drivers/power/supply/Kconfig +++ linux-5.8.0/drivers/power/supply/Kconfig @@ -229,6 +229,7 @@ config CHARGER_SBS tristate "SBS Compliant charger" depends on I2C + select REGMAP_I2C help Say Y to include support for SBS compliant battery chargers. --- linux-5.8.0.orig/drivers/power/supply/axp20x_usb_power.c +++ linux-5.8.0/drivers/power/supply/axp20x_usb_power.c @@ -593,6 +593,7 @@ power->axp20x_id = axp_data->axp20x_id; power->regmap = axp20x->regmap; power->num_irqs = axp_data->num_irq_names; + INIT_DELAYED_WORK(&power->vbus_detect, axp20x_usb_power_poll_vbus); if (power->axp20x_id == AXP202_ID) { /* Enable vbus valid checking */ @@ -645,7 +646,6 @@ } } - INIT_DELAYED_WORK(&power->vbus_detect, axp20x_usb_power_poll_vbus); if (axp20x_usb_vbus_needs_polling(power)) queue_delayed_work(system_wq, &power->vbus_detect, 0); --- linux-5.8.0.orig/drivers/power/supply/axp288_charger.c +++ linux-5.8.0/drivers/power/supply/axp288_charger.c @@ -548,14 +548,15 @@ /* * The HP Pavilion x2 10 series comes in a number of variants: - * Bay Trail SoC + AXP288 PMIC, DMI_BOARD_NAME: "815D" - * Cherry Trail SoC + AXP288 PMIC, DMI_BOARD_NAME: "813E" - * Cherry Trail SoC + TI PMIC, DMI_BOARD_NAME: "827C" or "82F4" + * Bay Trail SoC + AXP288 PMIC, Micro-USB, DMI_BOARD_NAME: "8021" + * Bay Trail SoC + AXP288 PMIC, Type-C, DMI_BOARD_NAME: "815D" + * Cherry Trail SoC + AXP288 PMIC, Type-C, DMI_BOARD_NAME: "813E" + * Cherry Trail SoC + TI PMIC, Type-C, DMI_BOARD_NAME: "827C" or "82F4" * - * The variants with the AXP288 PMIC are all kinds of special: + * The variants with the AXP288 + Type-C connector are all kinds of special: * - * 1. All variants use a Type-C connector which the AXP288 does not support, so - * when using a Type-C charger it is not recognized. Unlike most AXP288 devices, + * 1. They use a Type-C connector which the AXP288 does not support, so when + * using a Type-C charger it is not recognized. Unlike most AXP288 devices, * this model actually has mostly working ACPI AC / Battery code, the ACPI code * "solves" this by simply setting the input_current_limit to 3A. * There are still some issues with the ACPI code, so we use this native driver, @@ -578,12 +579,17 @@ */ static const struct dmi_system_id axp288_hp_x2_dmi_ids[] = { { - /* - * Bay Trail model has "Hewlett-Packard" as sys_vendor, Cherry - * Trail model has "HP", so we only match on product_name. - */ .matches = { - DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"), + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "815D"), + }, + }, + { + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "HP"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "813E"), }, }, {} /* Terminating entry */ --- linux-5.8.0.orig/drivers/power/supply/bq24190_charger.c +++ linux-5.8.0/drivers/power/supply/bq24190_charger.c @@ -448,8 +448,10 @@ return -EINVAL; ret = pm_runtime_get_sync(bdi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(bdi->dev); return ret; + } ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v); if (ret) @@ -1075,8 +1077,10 @@ dev_dbg(bdi->dev, "prop: %d\n", psp); ret = pm_runtime_get_sync(bdi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(bdi->dev); return ret; + } switch (psp) { case POWER_SUPPLY_PROP_CHARGE_TYPE: @@ -1147,8 +1151,10 @@ dev_dbg(bdi->dev, "prop: %d\n", psp); ret = pm_runtime_get_sync(bdi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(bdi->dev); return ret; + } switch (psp) { case POWER_SUPPLY_PROP_ONLINE: @@ -1408,8 +1414,10 @@ dev_dbg(bdi->dev, "prop: %d\n", psp); ret = pm_runtime_get_sync(bdi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(bdi->dev); return ret; + } switch (psp) { case POWER_SUPPLY_PROP_STATUS: @@ -1454,8 +1462,10 @@ dev_dbg(bdi->dev, "prop: %d\n", psp); ret = pm_runtime_get_sync(bdi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(bdi->dev); return ret; + } switch (psp) { case POWER_SUPPLY_PROP_ONLINE: --- linux-5.8.0.orig/drivers/power/supply/bq25890_charger.c +++ linux-5.8.0/drivers/power/supply/bq25890_charger.c @@ -295,7 +295,7 @@ /* TODO: BQ25896 has max ICHG 3008 mA */ [TBL_ICHG] = { .rt = {0, 5056000, 64000} }, /* uA */ [TBL_ITERM] = { .rt = {64000, 1024000, 64000} }, /* uA */ - [TBL_IILIM] = { .rt = {50000, 3200000, 50000} }, /* uA */ + [TBL_IILIM] = { .rt = {100000, 3250000, 50000} }, /* uA */ [TBL_VREG] = { .rt = {3840000, 4608000, 16000} }, /* uV */ [TBL_BOOSTV] = { .rt = {4550000, 5510000, 64000} }, /* uV */ [TBL_SYSVMIN] = { .rt = {3000000, 3700000, 100000} }, /* uV */ --- linux-5.8.0.orig/drivers/power/supply/bq27xxx_battery.c +++ linux-5.8.0/drivers/power/supply/bq27xxx_battery.c @@ -1678,8 +1678,6 @@ status = POWER_SUPPLY_STATUS_FULL; else if (di->cache.flags & BQ27000_FLAG_CHGS) status = POWER_SUPPLY_STATUS_CHARGING; - else if (power_supply_am_i_supplied(di->bat) > 0) - status = POWER_SUPPLY_STATUS_NOT_CHARGING; else status = POWER_SUPPLY_STATUS_DISCHARGING; } else { @@ -1691,6 +1689,10 @@ status = POWER_SUPPLY_STATUS_CHARGING; } + if ((status == POWER_SUPPLY_STATUS_DISCHARGING) && + (power_supply_am_i_supplied(di->bat) > 0)) + status = POWER_SUPPLY_STATUS_NOT_CHARGING; + val->intval = status; return 0; --- linux-5.8.0.orig/drivers/power/supply/cpcap-battery.c +++ linux-5.8.0/drivers/power/supply/cpcap-battery.c @@ -561,17 +561,21 @@ POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE, &prop); if (error) - return error; + goto out_put; /* Allow charger const voltage lower than battery const voltage */ if (const_charge_voltage > prop.intval) - return 0; + goto out_put; val.intval = const_charge_voltage; - return power_supply_set_property(charger, + error = power_supply_set_property(charger, POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE, &val); +out_put: + power_supply_put(charger); + + return error; } static int cpcap_battery_set_property(struct power_supply *psy, @@ -666,7 +670,7 @@ error = devm_request_threaded_irq(ddata->dev, irq, NULL, cpcap_battery_irq_thread, - IRQF_SHARED, + IRQF_SHARED | IRQF_ONESHOT, name, ddata); if (error) { dev_err(ddata->dev, "could not get irq %s: %i\n", --- linux-5.8.0.orig/drivers/power/supply/cpcap-charger.c +++ linux-5.8.0/drivers/power/supply/cpcap-charger.c @@ -301,6 +301,8 @@ &prop); if (!error) voltage = prop.intval; + + power_supply_put(battery); } return voltage; @@ -708,7 +710,7 @@ error = devm_request_threaded_irq(ddata->dev, irq, NULL, cpcap_charger_irq_thread, - IRQF_SHARED, + IRQF_SHARED | IRQF_ONESHOT, name, ddata); if (error) { dev_err(ddata->dev, "could not get irq %s: %i\n", --- linux-5.8.0.orig/drivers/power/supply/max17042_battery.c +++ linux-5.8.0/drivers/power/supply/max17042_battery.c @@ -85,9 +85,10 @@ POWER_SUPPLY_PROP_TEMP_MAX, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_SCOPE, + POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, + // these two have to be at the end on the list POWER_SUPPLY_PROP_CURRENT_NOW, POWER_SUPPLY_PROP_CURRENT_AVG, - POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, }; static int max17042_get_temperature(struct max17042_chip *chip, int *temp) --- linux-5.8.0.orig/drivers/power/supply/test_power.c +++ linux-5.8.0/drivers/power/supply/test_power.c @@ -353,6 +353,7 @@ static int param_get_ac_online(char *buffer, const struct kernel_param *kp) { strcpy(buffer, map_get_key(map_ac_online, ac_online, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } @@ -366,6 +367,7 @@ static int param_get_usb_online(char *buffer, const struct kernel_param *kp) { strcpy(buffer, map_get_key(map_ac_online, usb_online, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } @@ -380,6 +382,7 @@ static int param_get_battery_status(char *buffer, const struct kernel_param *kp) { strcpy(buffer, map_get_key(map_status, battery_status, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } @@ -394,6 +397,7 @@ static int param_get_battery_health(char *buffer, const struct kernel_param *kp) { strcpy(buffer, map_get_key(map_health, battery_health, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } @@ -409,6 +413,7 @@ const struct kernel_param *kp) { strcpy(buffer, map_get_key(map_present, battery_present, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } @@ -426,6 +431,7 @@ { strcpy(buffer, map_get_key(map_technology, battery_technology, "unknown")); + strcat(buffer, "\n"); return strlen(buffer); } --- linux-5.8.0.orig/drivers/powercap/intel_rapl_common.c +++ linux-5.8.0/drivers/powercap/intel_rapl_common.c @@ -1423,7 +1423,7 @@ id = x86_match_cpu(rapl_ids); if (!id) { - pr_err("driver does not support CPU family %d model %d\n", + pr_info("driver does not support CPU family %d model %d\n", boot_cpu_data.x86, boot_cpu_data.x86_model); return -ENODEV; --- linux-5.8.0.orig/drivers/powercap/powercap_sys.c +++ linux-5.8.0/drivers/powercap/powercap_sys.c @@ -224,46 +224,46 @@ for (i = 0; i < MAX_CONSTRAINTS_PER_ZONE; ++i) { ret = create_constraint_attribute(i, "power_limit_uw", - S_IWUSR | S_IRUGO, + S_IWUSR | S_IRUSR, &constraint_attrs[i].power_limit_attr, show_constraint_power_limit_uw, store_constraint_power_limit_uw); if (ret) goto err_alloc; ret = create_constraint_attribute(i, "time_window_us", - S_IWUSR | S_IRUGO, + S_IWUSR | S_IRUSR, &constraint_attrs[i].time_window_attr, show_constraint_time_window_us, store_constraint_time_window_us); if (ret) goto err_alloc; - ret = create_constraint_attribute(i, "name", S_IRUGO, + ret = create_constraint_attribute(i, "name", S_IRUSR, &constraint_attrs[i].name_attr, show_constraint_name, NULL); if (ret) goto err_alloc; - ret = create_constraint_attribute(i, "max_power_uw", S_IRUGO, + ret = create_constraint_attribute(i, "max_power_uw", S_IRUSR, &constraint_attrs[i].max_power_attr, show_constraint_max_power_uw, NULL); if (ret) goto err_alloc; - ret = create_constraint_attribute(i, "min_power_uw", S_IRUGO, + ret = create_constraint_attribute(i, "min_power_uw", S_IRUSR, &constraint_attrs[i].min_power_attr, show_constraint_min_power_uw, NULL); if (ret) goto err_alloc; ret = create_constraint_attribute(i, "max_time_window_us", - S_IRUGO, + S_IRUSR, &constraint_attrs[i].max_time_window_attr, show_constraint_max_time_window_us, NULL); if (ret) goto err_alloc; ret = create_constraint_attribute(i, "min_time_window_us", - S_IRUGO, + S_IRUSR, &constraint_attrs[i].min_time_window_attr, show_constraint_min_time_window_us, NULL); @@ -362,23 +362,29 @@ int count = 0; power_zone->zone_dev_attrs[count++] = &dev_attr_name.attr; - if (power_zone->ops->get_max_energy_range_uj) + if (power_zone->ops->get_max_energy_range_uj) { + dev_attr_max_energy_range_uj.attr.mode = S_IRUSR; power_zone->zone_dev_attrs[count++] = &dev_attr_max_energy_range_uj.attr; + } if (power_zone->ops->get_energy_uj) { if (power_zone->ops->reset_energy_uj) - dev_attr_energy_uj.attr.mode = S_IWUSR | S_IRUGO; + dev_attr_energy_uj.attr.mode = S_IWUSR | S_IRUSR; else - dev_attr_energy_uj.attr.mode = S_IRUGO; + dev_attr_energy_uj.attr.mode = S_IRUSR; power_zone->zone_dev_attrs[count++] = &dev_attr_energy_uj.attr; } - if (power_zone->ops->get_power_uw) + if (power_zone->ops->get_power_uw) { + dev_attr_power_uw.attr.mode = S_IRUSR; power_zone->zone_dev_attrs[count++] = &dev_attr_power_uw.attr; - if (power_zone->ops->get_max_power_range_uw) + } + if (power_zone->ops->get_max_power_range_uw) { + dev_attr_max_power_range_uw.attr.mode = S_IRUSR; power_zone->zone_dev_attrs[count++] = &dev_attr_max_power_range_uw.attr; + } power_zone->zone_dev_attrs[count] = NULL; power_zone->zone_attr_count = count; } --- linux-5.8.0.orig/drivers/ps3/ps3stor_lib.c +++ linux-5.8.0/drivers/ps3/ps3stor_lib.c @@ -189,7 +189,7 @@ dev->bounce_lpar = ps3_mm_phys_to_lpar(__pa(dev->bounce_buf)); dev->bounce_dma = dma_map_single(&dev->sbd.core, dev->bounce_buf, dev->bounce_size, DMA_BIDIRECTIONAL); - if (!dev->bounce_dma) { + if (dma_mapping_error(&dev->sbd.core, dev->bounce_dma)) { dev_err(&dev->sbd.core, "%s:%u: map DMA region failed\n", __func__, __LINE__); error = -ENODEV; --- linux-5.8.0.orig/drivers/ptp/Kconfig +++ linux-5.8.0/drivers/ptp/Kconfig @@ -64,6 +64,7 @@ depends on NETWORK_PHY_TIMESTAMPING depends on PHYLIB depends on PTP_1588_CLOCK + select CRC32 help Supports the DP83640 PHYTER with IEEE 1588 features. @@ -78,6 +79,7 @@ config PTP_1588_CLOCK_INES tristate "ZHAW InES PTP time stamping IP core" depends on NETWORK_PHY_TIMESTAMPING + depends on HAS_IOMEM depends on PHYLIB depends on PTP_1588_CLOCK help --- linux-5.8.0.orig/drivers/ptp/ptp_clock.c +++ linux-5.8.0/drivers/ptp/ptp_clock.c @@ -179,6 +179,9 @@ { struct ptp_clock *ptp = container_of(dev, struct ptp_clock, dev); + /* Release the clock's resources. */ + if (ptp->pps_source) + pps_unregister_source(ptp->pps_source); ptp_cleanup_pin_groups(ptp); mutex_destroy(&ptp->tsevq_mux); mutex_destroy(&ptp->pincfg_mux); @@ -307,11 +310,6 @@ kthread_cancel_delayed_work_sync(&ptp->aux_work); kthread_destroy_worker(ptp->kworker); } - - /* Release the clock's resources. */ - if (ptp->pps_source) - pps_unregister_source(ptp->pps_source); - posix_clock_unregister(&ptp->clock); return 0; --- linux-5.8.0.orig/drivers/pwm/pwm-bcm-iproc.c +++ linux-5.8.0/drivers/pwm/pwm-bcm-iproc.c @@ -85,8 +85,6 @@ u64 tmp, multi, rate; u32 value, prescale; - rate = clk_get_rate(ip->clk); - value = readl(ip->base + IPROC_PWM_CTRL_OFFSET); if (value & BIT(IPROC_PWM_CTRL_EN_SHIFT(pwm->hwpwm))) @@ -99,6 +97,13 @@ else state->polarity = PWM_POLARITY_INVERSED; + rate = clk_get_rate(ip->clk); + if (rate == 0) { + state->period = 0; + state->duty_cycle = 0; + return; + } + value = readl(ip->base + IPROC_PWM_PRESCALE_OFFSET); prescale = value >> IPROC_PWM_PRESCALE_SHIFT(pwm->hwpwm); prescale &= IPROC_PWM_PRESCALE_MAX; --- linux-5.8.0.orig/drivers/pwm/pwm-img.c +++ linux-5.8.0/drivers/pwm/pwm-img.c @@ -277,6 +277,8 @@ return PTR_ERR(pwm->pwm_clk); } + platform_set_drvdata(pdev, pwm); + pm_runtime_set_autosuspend_delay(&pdev->dev, IMG_PWM_PM_TIMEOUT); pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_enable(&pdev->dev); @@ -313,7 +315,6 @@ goto err_suspend; } - platform_set_drvdata(pdev, pwm); return 0; err_suspend: --- linux-5.8.0.orig/drivers/pwm/pwm-imx27.c +++ linux-5.8.0/drivers/pwm/pwm-imx27.c @@ -235,8 +235,9 @@ period_cycles /= prescale; c = clkrate * state->duty_cycle; - do_div(c, NSEC_PER_SEC * prescale); + do_div(c, NSEC_PER_SEC); duty_cycles = c; + duty_cycles /= prescale; /* * according to imx pwm RM, the real period value should be PERIOD --- linux-5.8.0.orig/drivers/pwm/pwm-lp3943.c +++ linux-5.8.0/drivers/pwm/pwm-lp3943.c @@ -275,6 +275,7 @@ lp3943_pwm->chip.dev = &pdev->dev; lp3943_pwm->chip.ops = &lp3943_pwm_ops; lp3943_pwm->chip.npwm = LP3943_NUM_PWMS; + lp3943_pwm->chip.base = -1; platform_set_drvdata(pdev, lp3943_pwm); --- linux-5.8.0.orig/drivers/pwm/pwm-lpss.c +++ linux-5.8.0/drivers/pwm/pwm-lpss.c @@ -93,10 +93,12 @@ * The equation is: * base_unit = round(base_unit_range * freq / c) */ - base_unit_range = BIT(lpwm->info->base_unit_bits) - 1; + base_unit_range = BIT(lpwm->info->base_unit_bits); freq *= base_unit_range; base_unit = DIV_ROUND_CLOSEST_ULL(freq, c); + /* base_unit must not be 0 and we also want to avoid overflowing it */ + base_unit = clamp_val(base_unit, 1, base_unit_range - 1); on_time_div = 255ULL * duty_ns; do_div(on_time_div, period_ns); @@ -104,8 +106,7 @@ orig_ctrl = ctrl = pwm_lpss_read(pwm); ctrl &= ~PWM_ON_TIME_DIV_MASK; - ctrl &= ~(base_unit_range << PWM_BASE_UNIT_SHIFT); - base_unit &= base_unit_range; + ctrl &= ~((base_unit_range - 1) << PWM_BASE_UNIT_SHIFT); ctrl |= (u32) base_unit << PWM_BASE_UNIT_SHIFT; ctrl |= on_time_div; --- linux-5.8.0.orig/drivers/pwm/pwm-rockchip.c +++ linux-5.8.0/drivers/pwm/pwm-rockchip.c @@ -288,6 +288,8 @@ const struct of_device_id *id; struct rockchip_pwm_chip *pc; struct resource *r; + u32 enable_conf, ctrl; + bool enabled; int ret, count; id = of_match_device(rockchip_pwm_dt_ids, &pdev->dev); @@ -335,9 +337,9 @@ return ret; } - ret = clk_prepare(pc->pclk); + ret = clk_prepare_enable(pc->pclk); if (ret) { - dev_err(&pdev->dev, "Can't prepare APB clk: %d\n", ret); + dev_err(&pdev->dev, "Can't prepare enable APB clk: %d\n", ret); goto err_clk; } @@ -354,21 +356,26 @@ pc->chip.of_pwm_n_cells = 3; } + enable_conf = pc->data->enable_conf; + ctrl = readl_relaxed(pc->base + pc->data->regs.ctrl); + enabled = (ctrl & enable_conf) == enable_conf; + ret = pwmchip_add(&pc->chip); if (ret < 0) { - clk_unprepare(pc->clk); dev_err(&pdev->dev, "pwmchip_add() failed: %d\n", ret); goto err_pclk; } /* Keep the PWM clk enabled if the PWM appears to be up and running. */ - if (!pwm_is_enabled(pc->chip.pwms)) + if (!enabled) clk_disable(pc->clk); + clk_disable(pc->pclk); + return 0; err_pclk: - clk_unprepare(pc->pclk); + clk_disable_unprepare(pc->pclk); err_clk: clk_disable_unprepare(pc->clk); --- linux-5.8.0.orig/drivers/pwm/pwm-sun4i.c +++ linux-5.8.0/drivers/pwm/pwm-sun4i.c @@ -294,12 +294,8 @@ ctrl |= BIT_CH(PWM_CLK_GATING, pwm->hwpwm); - if (state->enabled) { + if (state->enabled) ctrl |= BIT_CH(PWM_EN, pwm->hwpwm); - } else { - ctrl &= ~BIT_CH(PWM_EN, pwm->hwpwm); - ctrl &= ~BIT_CH(PWM_CLK_GATING, pwm->hwpwm); - } sun4i_pwm_writel(sun4i_pwm, ctrl, PWM_CTRL_REG); --- linux-5.8.0.orig/drivers/pwm/pwm-zx.c +++ linux-5.8.0/drivers/pwm/pwm-zx.c @@ -238,6 +238,7 @@ ret = pwmchip_add(&zpc->chip); if (ret < 0) { dev_err(&pdev->dev, "failed to add PWM chip: %d\n", ret); + clk_disable_unprepare(zpc->pclk); return ret; } --- linux-5.8.0.orig/drivers/rapidio/Kconfig +++ linux-5.8.0/drivers/rapidio/Kconfig @@ -37,7 +37,7 @@ config RAPIDIO_DMA_ENGINE bool "DMA Engine support for RapidIO" depends on RAPIDIO - select DMADEVICES + depends on DMADEVICES select DMA_ENGINE help Say Y here if you want to use DMA Engine frameork for RapidIO data --- linux-5.8.0.orig/drivers/rapidio/devices/rio_mport_cdev.c +++ linux-5.8.0/drivers/rapidio/devices/rio_mport_cdev.c @@ -871,15 +871,16 @@ rmcd_error("pin_user_pages_fast err=%ld", pinned); nr_pages = 0; - } else + } else { rmcd_error("pinned %ld out of %ld pages", pinned, nr_pages); + /* + * Set nr_pages up to mean "how many pages to unpin, in + * the error handler: + */ + nr_pages = pinned; + } ret = -EFAULT; - /* - * Set nr_pages up to mean "how many pages to unpin, in - * the error handler: - */ - nr_pages = pinned; goto err_pg; } @@ -1679,6 +1680,7 @@ struct rio_dev *rdev; struct rio_switch *rswitch = NULL; struct rio_mport *mport; + struct device *dev; size_t size; u32 rval; u32 swpinfo = 0; @@ -1693,8 +1695,10 @@ rmcd_debug(RDEV, "name:%s ct:0x%x did:0x%x hc:0x%x", dev_info.name, dev_info.comptag, dev_info.destid, dev_info.hopcount); - if (bus_find_device_by_name(&rio_bus_type, NULL, dev_info.name)) { + dev = bus_find_device_by_name(&rio_bus_type, NULL, dev_info.name); + if (dev) { rmcd_debug(RDEV, "device %s already exists", dev_info.name); + put_device(dev); return -EEXIST; } --- linux-5.8.0.orig/drivers/ras/cec.c +++ linux-5.8.0/drivers/ras/cec.c @@ -553,20 +553,20 @@ .priority = MCE_PRIO_CEC, }; -static void __init cec_init(void) +static int __init cec_init(void) { if (ce_arr.disabled) - return; + return -ENODEV; ce_arr.array = (void *)get_zeroed_page(GFP_KERNEL); if (!ce_arr.array) { pr_err("Error allocating CE array page!\n"); - return; + return -ENOMEM; } if (create_debugfs_nodes()) { free_page((unsigned long)ce_arr.array); - return; + return -ENOMEM; } INIT_DELAYED_WORK(&cec_work, cec_work_fn); @@ -575,6 +575,7 @@ mce_register_decode_chain(&cec_nb); pr_info("Correctable Errors collector initialized.\n"); + return 0; } late_initcall(cec_init); --- linux-5.8.0.orig/drivers/regulator/axp20x-regulator.c +++ linux-5.8.0/drivers/regulator/axp20x-regulator.c @@ -42,8 +42,9 @@ #define AXP20X_DCDC2_V_OUT_MASK GENMASK(5, 0) #define AXP20X_DCDC3_V_OUT_MASK GENMASK(7, 0) -#define AXP20X_LDO24_V_OUT_MASK GENMASK(7, 4) +#define AXP20X_LDO2_V_OUT_MASK GENMASK(7, 4) #define AXP20X_LDO3_V_OUT_MASK GENMASK(6, 0) +#define AXP20X_LDO4_V_OUT_MASK GENMASK(3, 0) #define AXP20X_LDO5_V_OUT_MASK GENMASK(7, 4) #define AXP20X_PWR_OUT_EXTEN_MASK BIT_MASK(0) @@ -542,14 +543,14 @@ AXP20X_PWR_OUT_CTRL, AXP20X_PWR_OUT_DCDC3_MASK), AXP_DESC_FIXED(AXP20X, LDO1, "ldo1", "acin", 1300), AXP_DESC(AXP20X, LDO2, "ldo2", "ldo24in", 1800, 3300, 100, - AXP20X_LDO24_V_OUT, AXP20X_LDO24_V_OUT_MASK, + AXP20X_LDO24_V_OUT, AXP20X_LDO2_V_OUT_MASK, AXP20X_PWR_OUT_CTRL, AXP20X_PWR_OUT_LDO2_MASK), AXP_DESC(AXP20X, LDO3, "ldo3", "ldo3in", 700, 3500, 25, AXP20X_LDO3_V_OUT, AXP20X_LDO3_V_OUT_MASK, AXP20X_PWR_OUT_CTRL, AXP20X_PWR_OUT_LDO3_MASK), AXP_DESC_RANGES(AXP20X, LDO4, "ldo4", "ldo24in", axp20x_ldo4_ranges, AXP20X_LDO4_V_OUT_NUM_VOLTAGES, - AXP20X_LDO24_V_OUT, AXP20X_LDO24_V_OUT_MASK, + AXP20X_LDO24_V_OUT, AXP20X_LDO4_V_OUT_MASK, AXP20X_PWR_OUT_CTRL, AXP20X_PWR_OUT_LDO4_MASK), AXP_DESC_IO(AXP20X, LDO5, "ldo5", "ldo5in", 1800, 3300, 100, AXP20X_LDO5_V_OUT, AXP20X_LDO5_V_OUT_MASK, @@ -593,7 +594,7 @@ AXP22X_DLDO1_V_OUT, AXP22X_DLDO1_V_OUT_MASK, AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_DLDO1_MASK), AXP_DESC(AXP22X, DLDO2, "dldo2", "dldoin", 700, 3300, 100, - AXP22X_DLDO2_V_OUT, AXP22X_PWR_OUT_DLDO2_MASK, + AXP22X_DLDO2_V_OUT, AXP22X_DLDO2_V_OUT_MASK, AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_DLDO2_MASK), AXP_DESC(AXP22X, DLDO3, "dldo3", "dldoin", 700, 3300, 100, AXP22X_DLDO3_V_OUT, AXP22X_DLDO3_V_OUT_MASK, @@ -1069,7 +1070,7 @@ static int axp20x_regulator_parse_dt(struct platform_device *pdev) { struct device_node *np, *regulators; - int ret; + int ret = 0; u32 dcdcfreq = 0; np = of_node_get(pdev->dev.parent->of_node); @@ -1084,13 +1085,12 @@ ret = axp20x_set_dcdc_freq(pdev, dcdcfreq); if (ret < 0) { dev_err(&pdev->dev, "Error setting dcdc frequency: %d\n", ret); - return ret; } - of_node_put(regulators); } - return 0; + of_node_put(np); + return ret; } static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 workmode) --- linux-5.8.0.orig/drivers/regulator/bd718x7-regulator.c +++ linux-5.8.0/drivers/regulator/bd718x7-regulator.c @@ -15,6 +15,36 @@ #include #include +/* Typical regulator startup times as per data sheet in uS */ +#define BD71847_BUCK1_STARTUP_TIME 144 +#define BD71847_BUCK2_STARTUP_TIME 162 +#define BD71847_BUCK3_STARTUP_TIME 162 +#define BD71847_BUCK4_STARTUP_TIME 240 +#define BD71847_BUCK5_STARTUP_TIME 270 +#define BD71847_BUCK6_STARTUP_TIME 200 +#define BD71847_LDO1_STARTUP_TIME 440 +#define BD71847_LDO2_STARTUP_TIME 370 +#define BD71847_LDO3_STARTUP_TIME 310 +#define BD71847_LDO4_STARTUP_TIME 400 +#define BD71847_LDO5_STARTUP_TIME 530 +#define BD71847_LDO6_STARTUP_TIME 400 + +#define BD71837_BUCK1_STARTUP_TIME 160 +#define BD71837_BUCK2_STARTUP_TIME 180 +#define BD71837_BUCK3_STARTUP_TIME 180 +#define BD71837_BUCK4_STARTUP_TIME 180 +#define BD71837_BUCK5_STARTUP_TIME 160 +#define BD71837_BUCK6_STARTUP_TIME 240 +#define BD71837_BUCK7_STARTUP_TIME 220 +#define BD71837_BUCK8_STARTUP_TIME 200 +#define BD71837_LDO1_STARTUP_TIME 440 +#define BD71837_LDO2_STARTUP_TIME 370 +#define BD71837_LDO3_STARTUP_TIME 310 +#define BD71837_LDO4_STARTUP_TIME 400 +#define BD71837_LDO5_STARTUP_TIME 310 +#define BD71837_LDO6_STARTUP_TIME 400 +#define BD71837_LDO7_STARTUP_TIME 530 + /* * BUCK1/2/3/4 * BUCK1RAMPRATE[1:0] BUCK1 DVS ramp rate setting @@ -560,6 +590,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD718XX_REG_BUCK1_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK1_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -594,6 +625,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD718XX_REG_BUCK2_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK2_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -629,6 +661,7 @@ .linear_range_selectors = bd71847_buck3_volt_range_sel, .enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK3_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -656,6 +689,7 @@ .vsel_range_mask = BD71847_BUCK4_RANGE_MASK, .linear_range_selectors = bd71847_buck4_volt_range_sel, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK4_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -678,6 +712,7 @@ .vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK, .enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK5_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -702,6 +737,7 @@ .vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK, .enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71847_BUCK6_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -728,6 +764,7 @@ .linear_range_selectors = bd718xx_ldo1_volt_range_sel, .enable_reg = BD718XX_REG_LDO1_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO1_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -750,6 +787,7 @@ .n_voltages = ARRAY_SIZE(ldo_2_volts), .enable_reg = BD718XX_REG_LDO2_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO2_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -773,6 +811,7 @@ .vsel_mask = BD718XX_LDO3_MASK, .enable_reg = BD718XX_REG_LDO3_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO3_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -796,6 +835,7 @@ .vsel_mask = BD718XX_LDO4_MASK, .enable_reg = BD718XX_REG_LDO4_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO4_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -822,6 +862,7 @@ .linear_range_selectors = bd71847_ldo5_volt_range_sel, .enable_reg = BD718XX_REG_LDO5_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO5_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -847,6 +888,7 @@ .vsel_mask = BD718XX_LDO6_MASK, .enable_reg = BD718XX_REG_LDO6_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71847_LDO6_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -873,6 +915,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD718XX_REG_BUCK1_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK1_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -907,6 +950,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD718XX_REG_BUCK2_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK2_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -938,6 +982,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD71837_REG_BUCK3_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK3_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -967,6 +1012,7 @@ .vsel_mask = DVS_BUCK_RUN_MASK, .enable_reg = BD71837_REG_BUCK4_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK4_STARTUP_TIME, .owner = THIS_MODULE, .of_parse_cb = buck_set_hw_dvs_levels, }, @@ -1000,6 +1046,7 @@ .linear_range_selectors = bd71837_buck5_volt_range_sel, .enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK5_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1024,6 +1071,7 @@ .vsel_mask = BD71837_BUCK6_MASK, .enable_reg = BD718XX_REG_2ND_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK6_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1046,6 +1094,7 @@ .vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK, .enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK7_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1070,6 +1119,7 @@ .vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK, .enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL, .enable_mask = BD718XX_BUCK_EN, + .enable_time = BD71837_BUCK8_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1096,6 +1146,7 @@ .linear_range_selectors = bd718xx_ldo1_volt_range_sel, .enable_reg = BD718XX_REG_LDO1_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO1_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1118,6 +1169,7 @@ .n_voltages = ARRAY_SIZE(ldo_2_volts), .enable_reg = BD718XX_REG_LDO2_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO2_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1141,6 +1193,7 @@ .vsel_mask = BD718XX_LDO3_MASK, .enable_reg = BD718XX_REG_LDO3_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO3_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1164,6 +1217,7 @@ .vsel_mask = BD718XX_LDO4_MASK, .enable_reg = BD718XX_REG_LDO4_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO4_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1189,6 +1243,7 @@ .vsel_mask = BD71837_LDO5_MASK, .enable_reg = BD718XX_REG_LDO5_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO5_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1216,6 +1271,7 @@ .vsel_mask = BD718XX_LDO6_MASK, .enable_reg = BD718XX_REG_LDO6_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO6_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { @@ -1241,6 +1297,7 @@ .vsel_mask = BD71837_LDO7_MASK, .enable_reg = BD71837_REG_LDO7_VOLT, .enable_mask = BD718XX_LDO_EN, + .enable_time = BD71837_LDO7_STARTUP_TIME, .owner = THIS_MODULE, }, .init = { --- linux-5.8.0.orig/drivers/regulator/core.c +++ linux-5.8.0/drivers/regulator/core.c @@ -235,8 +235,8 @@ static void regulator_unlock_recursive(struct regulator_dev *rdev, unsigned int n_coupled) { - struct regulator_dev *c_rdev; - int i; + struct regulator_dev *c_rdev, *supply_rdev; + int i, supply_n_coupled; for (i = n_coupled; i > 0; i--) { c_rdev = rdev->coupling_desc.coupled_rdevs[i - 1]; @@ -244,10 +244,13 @@ if (!c_rdev) continue; - if (c_rdev->supply && !regulator_supply_is_couple(c_rdev)) - regulator_unlock_recursive( - c_rdev->supply->rdev, - c_rdev->coupling_desc.n_coupled); + if (c_rdev->supply && !regulator_supply_is_couple(c_rdev)) { + supply_rdev = c_rdev->supply->rdev; + supply_n_coupled = supply_rdev->coupling_desc.n_coupled; + + regulator_unlock_recursive(supply_rdev, + supply_n_coupled); + } regulator_unlock(c_rdev); } @@ -1276,7 +1279,6 @@ /** * set_machine_constraints - sets regulator constraints * @rdev: regulator source - * @constraints: constraints to apply * * Allows platform initialisation code to define and constrain * regulator circuits e.g. valid voltage/current ranges, etc. NOTE: @@ -1284,21 +1286,11 @@ * regulator operations to proceed i.e. set_voltage, set_current_limit, * set_mode. */ -static int set_machine_constraints(struct regulator_dev *rdev, - const struct regulation_constraints *constraints) +static int set_machine_constraints(struct regulator_dev *rdev) { int ret = 0; const struct regulator_ops *ops = rdev->desc->ops; - if (constraints) - rdev->constraints = kmemdup(constraints, sizeof(*constraints), - GFP_KERNEL); - else - rdev->constraints = kzalloc(sizeof(*constraints), - GFP_KERNEL); - if (!rdev->constraints) - return -ENOMEM; - ret = machine_constraints_voltage(rdev, rdev->constraints); if (ret != 0) return ret; @@ -1460,7 +1452,7 @@ const char *consumer_dev_name, const char *supply) { - struct regulator_map *node; + struct regulator_map *node, *new_node; int has_dev; if (supply == NULL) @@ -1471,6 +1463,22 @@ else has_dev = 0; + new_node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL); + if (new_node == NULL) + return -ENOMEM; + + new_node->regulator = rdev; + new_node->supply = supply; + + if (has_dev) { + new_node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL); + if (new_node->dev_name == NULL) { + kfree(new_node); + return -ENOMEM; + } + } + + mutex_lock(®ulator_list_mutex); list_for_each_entry(node, ®ulator_map_list, list) { if (node->dev_name && consumer_dev_name) { if (strcmp(node->dev_name, consumer_dev_name) != 0) @@ -1488,26 +1496,19 @@ node->regulator->desc->name, supply, dev_name(&rdev->dev), rdev_get_name(rdev)); - return -EBUSY; + goto fail; } - node = kzalloc(sizeof(struct regulator_map), GFP_KERNEL); - if (node == NULL) - return -ENOMEM; - - node->regulator = rdev; - node->supply = supply; - - if (has_dev) { - node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL); - if (node->dev_name == NULL) { - kfree(node); - return -ENOMEM; - } - } + list_add(&new_node->list, ®ulator_map_list); + mutex_unlock(®ulator_list_mutex); - list_add(&node->list, ®ulator_map_list); return 0; + +fail: + mutex_unlock(®ulator_list_mutex); + kfree(new_node->dev_name); + kfree(new_node); + return -EBUSY; } static void unset_regulator_supplies(struct regulator_dev *rdev) @@ -1579,45 +1580,54 @@ const char *supply_name) { struct regulator *regulator; - char buf[REG_STR_SIZE]; - int err, size; + int err = 0; + + if (dev) { + char buf[REG_STR_SIZE]; + int size; + + size = snprintf(buf, REG_STR_SIZE, "%s-%s", + dev->kobj.name, supply_name); + if (size >= REG_STR_SIZE) + return NULL; + + supply_name = kstrdup(buf, GFP_KERNEL); + if (supply_name == NULL) + return NULL; + } else { + supply_name = kstrdup_const(supply_name, GFP_KERNEL); + if (supply_name == NULL) + return NULL; + } regulator = kzalloc(sizeof(*regulator), GFP_KERNEL); - if (regulator == NULL) + if (regulator == NULL) { + kfree(supply_name); return NULL; + } - regulator_lock(rdev); regulator->rdev = rdev; + regulator->supply_name = supply_name; + + regulator_lock(rdev); list_add(®ulator->list, &rdev->consumer_list); + regulator_unlock(rdev); if (dev) { regulator->dev = dev; /* Add a link to the device sysfs entry */ - size = snprintf(buf, REG_STR_SIZE, "%s-%s", - dev->kobj.name, supply_name); - if (size >= REG_STR_SIZE) - goto overflow_err; - - regulator->supply_name = kstrdup(buf, GFP_KERNEL); - if (regulator->supply_name == NULL) - goto overflow_err; - err = sysfs_create_link_nowarn(&rdev->dev.kobj, &dev->kobj, - buf); + supply_name); if (err) { rdev_dbg(rdev, "could not add device link %s err %d\n", dev->kobj.name, err); /* non-fatal */ } - } else { - regulator->supply_name = kstrdup_const(supply_name, GFP_KERNEL); - if (regulator->supply_name == NULL) - goto overflow_err; } - regulator->debugfs = debugfs_create_dir(regulator->supply_name, - rdev->debugfs); + if (err != -EEXIST) + regulator->debugfs = debugfs_create_dir(supply_name, rdev->debugfs); if (!regulator->debugfs) { rdev_dbg(rdev, "Failed to create debugfs directory\n"); } else { @@ -1641,13 +1651,7 @@ _regulator_is_enabled(rdev)) regulator->always_on = true; - regulator_unlock(rdev); return regulator; -overflow_err: - list_del(®ulator->list); - kfree(regulator); - regulator_unlock(rdev); - return NULL; } static int _regulator_get_enable_time(struct regulator_dev *rdev) @@ -1772,13 +1776,13 @@ { struct regulator_dev *r; struct device *dev = rdev->dev.parent; - int ret; + int ret = 0; /* No supply to resolve? */ if (!rdev->supply_name) return 0; - /* Supply already resolved? */ + /* Supply already resolved? (fast-path without locking contention) */ if (rdev->supply) return 0; @@ -1788,7 +1792,7 @@ /* Did the lookup explicitly defer for us? */ if (ret == -EPROBE_DEFER) - return ret; + goto out; if (have_full_constraints()) { r = dummy_regulator_rdev; @@ -1796,8 +1800,20 @@ } else { dev_err(dev, "Failed to resolve %s-supply for %s\n", rdev->supply_name, rdev->desc->name); - return -EPROBE_DEFER; + ret = -EPROBE_DEFER; + goto out; + } + } + + if (r == rdev) { + dev_err(dev, "Supply for %s (%s) resolved to itself\n", + rdev->desc->name, rdev->supply_name); + if (!have_full_constraints()) { + ret = -EINVAL; + goto out; } + r = dummy_regulator_rdev; + get_device(&r->dev); } /* @@ -1809,7 +1825,8 @@ if (r->dev.parent && r->dev.parent != rdev->dev.parent) { if (!device_is_bound(r->dev.parent)) { put_device(&r->dev); - return -EPROBE_DEFER; + ret = -EPROBE_DEFER; + goto out; } } @@ -1817,15 +1834,32 @@ ret = regulator_resolve_supply(r); if (ret < 0) { put_device(&r->dev); - return ret; + goto out; + } + + /* + * Recheck rdev->supply with rdev->mutex lock held to avoid a race + * between rdev->supply null check and setting rdev->supply in + * set_supply() from concurrent tasks. + */ + regulator_lock(rdev); + + /* Supply just resolved by a concurrent task? */ + if (rdev->supply) { + regulator_unlock(rdev); + put_device(&r->dev); + goto out; } ret = set_supply(rdev, r); if (ret < 0) { + regulator_unlock(rdev); put_device(&r->dev); - return ret; + goto out; } + regulator_unlock(rdev); + /* * In set_machine_constraints() we may have turned this regulator on * but we couldn't propagate to the supply if it hadn't been resolved @@ -1836,11 +1870,12 @@ if (ret < 0) { _regulator_put(rdev->supply); rdev->supply = NULL; - return ret; + goto out; } } - return 0; +out: + return ret; } /* Internal regulator request function */ @@ -2222,10 +2257,13 @@ static int regulator_ena_gpio_request(struct regulator_dev *rdev, const struct regulator_config *config) { - struct regulator_enable_gpio *pin; + struct regulator_enable_gpio *pin, *new_pin; struct gpio_desc *gpiod; gpiod = config->ena_gpiod; + new_pin = kzalloc(sizeof(*new_pin), GFP_KERNEL); + + mutex_lock(®ulator_list_mutex); list_for_each_entry(pin, ®ulator_ena_gpio_list, list) { if (pin->gpiod == gpiod) { @@ -2234,9 +2272,13 @@ } } - pin = kzalloc(sizeof(struct regulator_enable_gpio), GFP_KERNEL); - if (pin == NULL) + if (new_pin == NULL) { + mutex_unlock(®ulator_list_mutex); return -ENOMEM; + } + + pin = new_pin; + new_pin = NULL; pin->gpiod = gpiod; list_add(&pin->list, ®ulator_ena_gpio_list); @@ -2244,6 +2286,10 @@ update_ena_gpio_to_rdev: pin->request_count++; rdev->ena_pin = pin; + + mutex_unlock(®ulator_list_mutex); + kfree(new_pin); + return 0; } @@ -4033,6 +4079,8 @@ ret = rdev->desc->fixed_uV; } else if (rdev->supply) { ret = regulator_get_voltage_rdev(rdev->supply->rdev); + } else if (rdev->supply_name) { + return -EPROBE_DEFER; } else { return -EINVAL; } @@ -4880,13 +4928,9 @@ return; } - regulator_lock(c_rdev); - c_desc->coupled_rdevs[i] = c_rdev; c_desc->n_resolved++; - regulator_unlock(c_rdev); - regulator_resolve_coupling(c_rdev); } } @@ -4971,7 +5015,10 @@ if (!of_check_coupling_data(rdev)) return -EPERM; + mutex_lock(®ulator_list_mutex); rdev->coupling_desc.coupler = regulator_find_coupler(rdev); + mutex_unlock(®ulator_list_mutex); + if (IS_ERR(rdev->coupling_desc.coupler)) { err = PTR_ERR(rdev->coupling_desc.coupler); rdev_err(rdev, "failed to get coupler: %d\n", err); @@ -5016,14 +5063,12 @@ regulator_register(const struct regulator_desc *regulator_desc, const struct regulator_config *cfg) { - const struct regulation_constraints *constraints = NULL; const struct regulator_init_data *init_data; struct regulator_config *config = NULL; static atomic_t regulator_no = ATOMIC_INIT(-1); struct regulator_dev *rdev; bool dangling_cfg_gpiod = false; bool dangling_of_gpiod = false; - bool reg_device_fail = false; struct device *dev; int ret, i; @@ -5073,6 +5118,7 @@ ret = -ENOMEM; goto rinse; } + device_initialize(&rdev->dev); /* * Duplicate the config so the driver could override it after @@ -5080,9 +5126,8 @@ */ config = kmemdup(cfg, sizeof(*cfg), GFP_KERNEL); if (config == NULL) { - kfree(rdev); ret = -ENOMEM; - goto rinse; + goto clean; } init_data = regulator_of_get_init_data(dev, regulator_desc, config, @@ -5094,10 +5139,8 @@ * from a gpio extender or something else. */ if (PTR_ERR(init_data) == -EPROBE_DEFER) { - kfree(config); - kfree(rdev); ret = -EPROBE_DEFER; - goto rinse; + goto clean; } /* @@ -5138,9 +5181,7 @@ } if (config->ena_gpiod) { - mutex_lock(®ulator_list_mutex); ret = regulator_ena_gpio_request(rdev, config); - mutex_unlock(®ulator_list_mutex); if (ret != 0) { rdev_err(rdev, "Failed to request enable GPIO: %d\n", ret); @@ -5156,49 +5197,59 @@ rdev->dev.parent = dev; dev_set_name(&rdev->dev, "regulator.%lu", (unsigned long) atomic_inc_return(®ulator_no)); + dev_set_drvdata(&rdev->dev, rdev); /* set regulator constraints */ if (init_data) - constraints = &init_data->constraints; + rdev->constraints = kmemdup(&init_data->constraints, + sizeof(*rdev->constraints), + GFP_KERNEL); + else + rdev->constraints = kzalloc(sizeof(*rdev->constraints), + GFP_KERNEL); + if (!rdev->constraints) { + ret = -ENOMEM; + goto wash; + } if (init_data && init_data->supply_regulator) rdev->supply_name = init_data->supply_regulator; else if (regulator_desc->supply_name) rdev->supply_name = regulator_desc->supply_name; - /* - * Attempt to resolve the regulator supply, if specified, - * but don't return an error if we fail because we will try - * to resolve it again later as more regulators are added. - */ - if (regulator_resolve_supply(rdev)) - rdev_dbg(rdev, "unable to resolve supply\n"); - - ret = set_machine_constraints(rdev, constraints); + ret = set_machine_constraints(rdev); + if (ret == -EPROBE_DEFER) { + /* Regulator might be in bypass mode and so needs its supply + * to set the constraints */ + /* FIXME: this currently triggers a chicken-and-egg problem + * when creating -SUPPLY symlink in sysfs to a regulator + * that is just being created */ + ret = regulator_resolve_supply(rdev); + if (!ret) + ret = set_machine_constraints(rdev); + else + rdev_dbg(rdev, "unable to resolve supply early: %pe\n", + ERR_PTR(ret)); + } if (ret < 0) goto wash; - mutex_lock(®ulator_list_mutex); ret = regulator_init_coupling(rdev); - mutex_unlock(®ulator_list_mutex); if (ret < 0) goto wash; /* add consumers devices */ if (init_data) { - mutex_lock(®ulator_list_mutex); for (i = 0; i < init_data->num_consumer_supplies; i++) { ret = set_consumer_device_supply(rdev, init_data->consumer_supplies[i].dev_name, init_data->consumer_supplies[i].supply); if (ret < 0) { - mutex_unlock(®ulator_list_mutex); dev_err(dev, "Failed to set supply %s\n", init_data->consumer_supplies[i].supply); goto unset_supplies; } } - mutex_unlock(®ulator_list_mutex); } if (!rdev->desc->ops->get_voltage && @@ -5206,12 +5257,9 @@ !rdev->desc->fixed_uV) rdev->is_switch = true; - dev_set_drvdata(&rdev->dev, rdev); - ret = device_register(&rdev->dev); - if (ret != 0) { - reg_device_fail = true; + ret = device_add(&rdev->dev); + if (ret != 0) goto unset_supplies; - } rdev_init_debugfs(rdev); @@ -5233,18 +5281,14 @@ mutex_unlock(®ulator_list_mutex); wash: kfree(rdev->coupling_desc.coupled_rdevs); - kfree(rdev->constraints); mutex_lock(®ulator_list_mutex); regulator_ena_gpio_free(rdev); mutex_unlock(®ulator_list_mutex); clean: if (dangling_of_gpiod) gpiod_put(config->ena_gpiod); - if (reg_device_fail) - put_device(&rdev->dev); - else - kfree(rdev); kfree(config); + put_device(&rdev->dev); rinse: if (dangling_cfg_gpiod) gpiod_put(cfg->ena_gpiod); --- linux-5.8.0.orig/drivers/regulator/pfuze100-regulator.c +++ linux-5.8.0/drivers/regulator/pfuze100-regulator.c @@ -833,11 +833,14 @@ * the switched regulator till yet. */ if (pfuze_chip->flags & PFUZE_FLAG_DISABLE_SW) { - if (pfuze_chip->regulator_descs[i].sw_reg) { - desc->ops = &pfuze100_sw_disable_regulator_ops; - desc->enable_val = 0x8; - desc->disable_val = 0x0; - desc->enable_time = 500; + if (pfuze_chip->chip_id == PFUZE100 || + pfuze_chip->chip_id == PFUZE200) { + if (pfuze_chip->regulator_descs[i].sw_reg) { + desc->ops = &pfuze100_sw_disable_regulator_ops; + desc->enable_val = 0x8; + desc->disable_val = 0x0; + desc->enable_time = 500; + } } } --- linux-5.8.0.orig/drivers/regulator/pwm-regulator.c +++ linux-5.8.0/drivers/regulator/pwm-regulator.c @@ -279,7 +279,7 @@ return ret; } - drvdata->state = -EINVAL; + drvdata->state = -ENOTRECOVERABLE; drvdata->duty_cycle_table = duty_cycle_table; drvdata->desc.ops = &pwm_regulator_voltage_table_ops; drvdata->desc.n_voltages = length / sizeof(*duty_cycle_table); --- linux-5.8.0.orig/drivers/regulator/qcom-rpmh-regulator.c +++ linux-5.8.0/drivers/regulator/qcom-rpmh-regulator.c @@ -726,7 +726,16 @@ static const struct rpmh_vreg_hw_data pmic5_hfsmps515 = { .regulator_type = VRM, .ops = &rpmh_regulator_vrm_ops, - .voltage_range = REGULATOR_LINEAR_RANGE(2800000, 0, 4, 1600), + .voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 235, 16000), + .n_voltages = 236, + .pmic_mode_map = pmic_mode_map_pmic5_smps, + .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, +}; + +static const struct rpmh_vreg_hw_data pmic5_hfsmps515_1 = { + .regulator_type = VRM, + .ops = &rpmh_regulator_vrm_ops, + .voltage_range = REGULATOR_LINEAR_RANGE(900000, 0, 4, 16000), .n_voltages = 5, .pmic_mode_map = pmic_mode_map_pmic5_smps, .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, @@ -874,6 +883,19 @@ RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4"), RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l6"), RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l5-l6"), + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo_lv, "vdd-l7"), + {}, +}; + +static const struct rpmh_vreg_init_data pm8009_1_vreg_data[] = { + RPMH_VREG("smps1", "smp%s1", &pmic5_hfsmps510, "vdd-s1"), + RPMH_VREG("smps2", "smp%s2", &pmic5_hfsmps515_1, "vdd-s2"), + RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1"), + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2"), + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3"), + RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4"), + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l6"), + RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l5-l6"), RPMH_VREG("ldo7", "ldo%s6", &pmic5_pldo_lv, "vdd-l7"), {}, }; @@ -977,6 +999,10 @@ .data = pm8009_vreg_data, }, { + .compatible = "qcom,pm8009-1-rpmh-regulators", + .data = pm8009_1_vreg_data, + }, + { .compatible = "qcom,pm8150-rpmh-regulators", .data = pm8150_vreg_data, }, --- linux-5.8.0.orig/drivers/regulator/rohm-regulator.c +++ linux-5.8.0/drivers/regulator/rohm-regulator.c @@ -52,9 +52,12 @@ char *prop; unsigned int reg, mask, omask, oreg = desc->enable_reg; - for (i = 0; i < ROHM_DVS_LEVEL_MAX && !ret; i++) { - if (dvs->level_map & (1 << i)) { - switch (i + 1) { + for (i = 0; i < ROHM_DVS_LEVEL_VALID_AMOUNT && !ret; i++) { + int bit; + + bit = BIT(i); + if (dvs->level_map & bit) { + switch (bit) { case ROHM_DVS_LEVEL_RUN: prop = "rohm,dvs-run-voltage"; reg = dvs->run_reg; --- linux-5.8.0.orig/drivers/regulator/s5m8767.c +++ linux-5.8.0/drivers/regulator/s5m8767.c @@ -544,14 +544,18 @@ rdata = devm_kcalloc(&pdev->dev, pdata->num_regulators, sizeof(*rdata), GFP_KERNEL); - if (!rdata) + if (!rdata) { + of_node_put(regulators_np); return -ENOMEM; + } rmode = devm_kcalloc(&pdev->dev, pdata->num_regulators, sizeof(*rmode), GFP_KERNEL); - if (!rmode) + if (!rmode) { + of_node_put(regulators_np); return -ENOMEM; + } pdata->regulators = rdata; pdata->opmode = rmode; @@ -573,10 +577,13 @@ "s5m8767,pmic-ext-control", GPIOD_OUT_HIGH | GPIOD_FLAGS_BIT_NONEXCLUSIVE, "s5m8767"); - if (PTR_ERR(rdata->ext_control_gpiod) == -ENOENT) + if (PTR_ERR(rdata->ext_control_gpiod) == -ENOENT) { rdata->ext_control_gpiod = NULL; - else if (IS_ERR(rdata->ext_control_gpiod)) + } else if (IS_ERR(rdata->ext_control_gpiod)) { + of_node_put(reg_np); + of_node_put(regulators_np); return PTR_ERR(rdata->ext_control_gpiod); + } rdata->id = i; rdata->initdata = of_get_regulator_init_data( --- linux-5.8.0.orig/drivers/regulator/ti-abb-regulator.c +++ linux-5.8.0/drivers/regulator/ti-abb-regulator.c @@ -342,8 +342,17 @@ return ret; } - /* If data is exactly the same, then just update index, no change */ info = &abb->info[sel]; + /* + * When Linux kernel is starting up, we are'nt sure of the + * Bias configuration that bootloader has configured. + * So, we get to know the actual setting the first time + * we are asked to transition. + */ + if (abb->current_info_idx == -EINVAL) + goto just_set_abb; + + /* If data is exactly the same, then just update index, no change */ oinfo = &abb->info[abb->current_info_idx]; if (!memcmp(info, oinfo, sizeof(*info))) { dev_dbg(dev, "%s: Same data new idx=%d, old idx=%d\n", __func__, @@ -351,6 +360,7 @@ goto out; } +just_set_abb: ret = ti_abb_set_opp(rdev, abb, info); out: --- linux-5.8.0.orig/drivers/remoteproc/mtk_scp_ipi.c +++ linux-5.8.0/drivers/remoteproc/mtk_scp_ipi.c @@ -30,10 +30,8 @@ scp_ipi_handler_t handler, void *priv) { - if (!scp) { - dev_err(scp->dev, "scp device is not ready\n"); + if (!scp) return -EPROBE_DEFER; - } if (WARN_ON(id >= SCP_IPI_MAX) || WARN_ON(handler == NULL)) return -EINVAL; --- linux-5.8.0.orig/drivers/remoteproc/qcom_q6v5.c +++ linux-5.8.0/drivers/remoteproc/qcom_q6v5.c @@ -153,6 +153,8 @@ { int ret; + q6v5->running = false; + qcom_smem_state_update_bits(q6v5->state, BIT(q6v5->stop_bit), BIT(q6v5->stop_bit)); --- linux-5.8.0.orig/drivers/remoteproc/qcom_q6v5_adsp.c +++ linux-5.8.0/drivers/remoteproc/qcom_q6v5_adsp.c @@ -184,8 +184,10 @@ dev_pm_genpd_set_performance_state(adsp->dev, INT_MAX); ret = pm_runtime_get_sync(adsp->dev); - if (ret) + if (ret) { + pm_runtime_put_noidle(adsp->dev); goto disable_xo_clk; + } ret = clk_bulk_prepare_enable(adsp->num_clks, adsp->clks); if (ret) { @@ -353,15 +355,12 @@ struct platform_device *pdev) { struct device_node *syscon; - struct resource *res; int ret; - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - adsp->qdsp6ss_base = devm_ioremap(&pdev->dev, res->start, - resource_size(res)); - if (!adsp->qdsp6ss_base) { + adsp->qdsp6ss_base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(adsp->qdsp6ss_base)) { dev_err(adsp->dev, "failed to map QDSP6SS registers\n"); - return -ENOMEM; + return PTR_ERR(adsp->qdsp6ss_base); } syscon = of_parse_phandle(pdev->dev.of_node, "qcom,halt-regs", 0); --- linux-5.8.0.orig/drivers/remoteproc/qcom_q6v5_mss.c +++ linux-5.8.0/drivers/remoteproc/qcom_q6v5_mss.c @@ -347,8 +347,11 @@ for (i = 0; i < pd_count; i++) { dev_pm_genpd_set_performance_state(pds[i], INT_MAX); ret = pm_runtime_get_sync(pds[i]); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(pds[i]); + dev_pm_genpd_set_performance_state(pds[i], 0); goto unroll_pd_votes; + } } return 0; @@ -407,6 +410,12 @@ { struct q6v5 *qproc = rproc->priv; + /* MBA is restricted to a maximum size of 1M */ + if (fw->size > qproc->mba_size || fw->size > SZ_1M) { + dev_err(qproc->dev, "MBA firmware load failed\n"); + return -EINVAL; + } + memcpy(qproc->mba_region, fw->data, fw->size); return 0; @@ -1138,15 +1147,14 @@ } else if (phdr->p_filesz) { /* Replace "xxx.xxx" with "xxx.bxx" */ sprintf(fw_name + fw_name_len - 3, "b%02d", i); - ret = request_firmware(&seg_fw, fw_name, qproc->dev); + ret = request_firmware_into_buf(&seg_fw, fw_name, qproc->dev, + ptr, phdr->p_filesz); if (ret) { dev_err(qproc->dev, "failed to load %s\n", fw_name); iounmap(ptr); goto release_firmware; } - memcpy(ptr, seg_fw->data, seg_fw->size); - release_firmware(seg_fw); } --- linux-5.8.0.orig/drivers/remoteproc/qcom_q6v5_pas.c +++ linux-5.8.0/drivers/remoteproc/qcom_q6v5_pas.c @@ -88,8 +88,11 @@ for (i = 0; i < pd_count; i++) { dev_pm_genpd_set_performance_state(pds[i], INT_MAX); ret = pm_runtime_get_sync(pds[i]); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(pds[i]); + dev_pm_genpd_set_performance_state(pds[i], 0); goto unroll_pd_votes; + } } return 0; --- linux-5.8.0.orig/drivers/remoteproc/qcom_sysmon.c +++ linux-5.8.0/drivers/remoteproc/qcom_sysmon.c @@ -22,6 +22,9 @@ struct rproc_subdev subdev; struct rproc *rproc; + int state; + struct mutex state_lock; + struct list_head node; const char *name; @@ -448,7 +451,10 @@ .ssr_event = SSCTL_SSR_EVENT_BEFORE_POWERUP }; + mutex_lock(&sysmon->state_lock); + sysmon->state = SSCTL_SSR_EVENT_BEFORE_POWERUP; blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)&event); + mutex_unlock(&sysmon->state_lock); return 0; } @@ -472,20 +478,25 @@ .ssr_event = SSCTL_SSR_EVENT_AFTER_POWERUP }; + mutex_lock(&sysmon->state_lock); + sysmon->state = SSCTL_SSR_EVENT_AFTER_POWERUP; blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)&event); + mutex_unlock(&sysmon->state_lock); mutex_lock(&sysmon_lock); list_for_each_entry(target, &sysmon_list, node) { - if (target == sysmon || - target->rproc->state != RPROC_RUNNING) + if (target == sysmon) continue; + mutex_lock(&target->state_lock); event.subsys_name = target->name; + event.ssr_event = target->state; if (sysmon->ssctl_version == 2) ssctl_send_event(sysmon, &event); else if (sysmon->ept) sysmon_send_event(sysmon, &event); + mutex_unlock(&target->state_lock); } mutex_unlock(&sysmon_lock); @@ -500,7 +511,10 @@ .ssr_event = SSCTL_SSR_EVENT_BEFORE_SHUTDOWN }; + mutex_lock(&sysmon->state_lock); + sysmon->state = SSCTL_SSR_EVENT_BEFORE_SHUTDOWN; blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)&event); + mutex_unlock(&sysmon->state_lock); /* Don't request graceful shutdown if we've crashed */ if (crashed) @@ -521,7 +535,10 @@ .ssr_event = SSCTL_SSR_EVENT_AFTER_SHUTDOWN }; + mutex_lock(&sysmon->state_lock); + sysmon->state = SSCTL_SSR_EVENT_AFTER_SHUTDOWN; blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)&event); + mutex_unlock(&sysmon->state_lock); } /** @@ -534,11 +551,10 @@ void *data) { struct qcom_sysmon *sysmon = container_of(nb, struct qcom_sysmon, nb); - struct rproc *rproc = sysmon->rproc; struct sysmon_event *sysmon_event = data; /* Skip non-running rprocs and the originating instance */ - if (rproc->state != RPROC_RUNNING || + if (sysmon->state != SSCTL_SSR_EVENT_AFTER_POWERUP || !strcmp(sysmon_event->subsys_name, sysmon->name)) { dev_dbg(sysmon->dev, "not notifying %s\n", sysmon->name); return NOTIFY_DONE; @@ -591,6 +607,7 @@ init_completion(&sysmon->ind_comp); init_completion(&sysmon->shutdown_comp); mutex_init(&sysmon->lock); + mutex_init(&sysmon->state_lock); sysmon->shutdown_irq = of_irq_get_byname(sysmon->dev->of_node, "shutdown-ack"); --- linux-5.8.0.orig/drivers/reset/reset-intel-gw.c +++ linux-5.8.0/drivers/reset/reset-intel-gw.c @@ -15,9 +15,9 @@ #define RCU_RST_STAT 0x0024 #define RCU_RST_REQ 0x0048 -#define REG_OFFSET GENMASK(31, 16) -#define BIT_OFFSET GENMASK(15, 8) -#define STAT_BIT_OFFSET GENMASK(7, 0) +#define REG_OFFSET_MASK GENMASK(31, 16) +#define BIT_OFFSET_MASK GENMASK(15, 8) +#define STAT_BIT_OFFSET_MASK GENMASK(7, 0) #define to_reset_data(x) container_of(x, struct intel_reset_data, rcdev) @@ -51,11 +51,11 @@ unsigned long id, u32 *rst_req, u32 *req_bit, u32 *stat_bit) { - *rst_req = FIELD_GET(REG_OFFSET, id); - *req_bit = FIELD_GET(BIT_OFFSET, id); + *rst_req = FIELD_GET(REG_OFFSET_MASK, id); + *req_bit = FIELD_GET(BIT_OFFSET_MASK, id); if (data->soc_data->legacy) - *stat_bit = FIELD_GET(STAT_BIT_OFFSET, id); + *stat_bit = FIELD_GET(STAT_BIT_OFFSET_MASK, id); else *stat_bit = *req_bit; @@ -141,14 +141,14 @@ if (spec->args[1] > 31) return -EINVAL; - id = FIELD_PREP(REG_OFFSET, spec->args[0]); - id |= FIELD_PREP(BIT_OFFSET, spec->args[1]); + id = FIELD_PREP(REG_OFFSET_MASK, spec->args[0]); + id |= FIELD_PREP(BIT_OFFSET_MASK, spec->args[1]); if (data->soc_data->legacy) { if (spec->args[2] > 31) return -EINVAL; - id |= FIELD_PREP(STAT_BIT_OFFSET, spec->args[2]); + id |= FIELD_PREP(STAT_BIT_OFFSET_MASK, spec->args[2]); } return id; @@ -210,11 +210,11 @@ if (ret) return ret; - data->reboot_id = FIELD_PREP(REG_OFFSET, rb_id[0]); - data->reboot_id |= FIELD_PREP(BIT_OFFSET, rb_id[1]); + data->reboot_id = FIELD_PREP(REG_OFFSET_MASK, rb_id[0]); + data->reboot_id |= FIELD_PREP(BIT_OFFSET_MASK, rb_id[1]); if (data->soc_data->legacy) - data->reboot_id |= FIELD_PREP(STAT_BIT_OFFSET, rb_id[2]); + data->reboot_id |= FIELD_PREP(STAT_BIT_OFFSET_MASK, rb_id[2]); data->restart_nb.notifier_call = intel_reset_restart_handler; data->restart_nb.priority = 128; --- linux-5.8.0.orig/drivers/rpmsg/mtk_rpmsg.c +++ linux-5.8.0/drivers/rpmsg/mtk_rpmsg.c @@ -200,7 +200,6 @@ struct rpmsg_device *rpdev; struct mtk_rpmsg_device *mdev; struct platform_device *pdev = mtk_subdev->pdev; - int ret; mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); if (!mdev) @@ -219,13 +218,7 @@ rpdev->dev.parent = &pdev->dev; rpdev->dev.release = mtk_rpmsg_release_device; - ret = rpmsg_register_device(rpdev); - if (ret) { - kfree(mdev); - return ret; - } - - return 0; + return rpmsg_register_device(rpdev); } static void mtk_register_device_work_function(struct work_struct *register_work) --- linux-5.8.0.orig/drivers/rpmsg/qcom_glink_native.c +++ linux-5.8.0/drivers/rpmsg/qcom_glink_native.c @@ -970,7 +970,7 @@ return -EINVAL; } - complete(&channel->open_ack); + complete_all(&channel->open_ack); return 0; } @@ -1178,7 +1178,7 @@ __be32 *val = defaults; int size; - if (glink->intentless) + if (glink->intentless || !completion_done(&channel->open_ack)) return 0; prop = of_find_property(np, "qcom,intents", NULL); @@ -1413,7 +1413,7 @@ channel->rcid = ret; spin_unlock_irqrestore(&glink->idr_lock, flags); - complete(&channel->open_req); + complete_all(&channel->open_req); if (create_device) { rpdev = kzalloc(sizeof(*rpdev), GFP_KERNEL); --- linux-5.8.0.orig/drivers/rpmsg/qcom_smd.c +++ linux-5.8.0/drivers/rpmsg/qcom_smd.c @@ -1338,7 +1338,7 @@ ret = of_property_read_u32(node, key, &edge->edge_id); if (ret) { dev_err(dev, "edge missing %s property\n", key); - return -EINVAL; + goto put_node; } edge->remote_pid = QCOM_SMEM_HOST_ANY; @@ -1349,32 +1349,37 @@ edge->mbox_client.knows_txdone = true; edge->mbox_chan = mbox_request_channel(&edge->mbox_client, 0); if (IS_ERR(edge->mbox_chan)) { - if (PTR_ERR(edge->mbox_chan) != -ENODEV) - return PTR_ERR(edge->mbox_chan); + if (PTR_ERR(edge->mbox_chan) != -ENODEV) { + ret = PTR_ERR(edge->mbox_chan); + goto put_node; + } edge->mbox_chan = NULL; syscon_np = of_parse_phandle(node, "qcom,ipc", 0); if (!syscon_np) { dev_err(dev, "no qcom,ipc node\n"); - return -ENODEV; + ret = -ENODEV; + goto put_node; } edge->ipc_regmap = syscon_node_to_regmap(syscon_np); - if (IS_ERR(edge->ipc_regmap)) - return PTR_ERR(edge->ipc_regmap); + if (IS_ERR(edge->ipc_regmap)) { + ret = PTR_ERR(edge->ipc_regmap); + goto put_node; + } key = "qcom,ipc"; ret = of_property_read_u32_index(node, key, 1, &edge->ipc_offset); if (ret < 0) { dev_err(dev, "no offset in %s\n", key); - return -EINVAL; + goto put_node; } ret = of_property_read_u32_index(node, key, 2, &edge->ipc_bit); if (ret < 0) { dev_err(dev, "no bit in %s\n", key); - return -EINVAL; + goto put_node; } } @@ -1385,7 +1390,8 @@ irq = irq_of_parse_and_map(node, 0); if (irq < 0) { dev_err(dev, "required smd interrupt missing\n"); - return -EINVAL; + ret = irq; + goto put_node; } ret = devm_request_irq(dev, irq, @@ -1393,12 +1399,18 @@ node->name, edge); if (ret) { dev_err(dev, "failed to request smd irq\n"); - return ret; + goto put_node; } edge->irq = irq; return 0; + +put_node: + of_node_put(node); + edge->of_node = NULL; + + return ret; } /* --- linux-5.8.0.orig/drivers/rtc/Kconfig +++ linux-5.8.0/drivers/rtc/Kconfig @@ -681,6 +681,7 @@ tristate "Samsung S2M/S5M series" depends on MFD_SEC_CORE || COMPILE_TEST select REGMAP_IRQ + select REGMAP_I2C help If you say yes here you will get support for the RTC of Samsung S2MPS14 and S5M PMIC series. @@ -1285,7 +1286,7 @@ config RTC_DRV_ZYNQMP tristate "Xilinx Zynq Ultrascale+ MPSoC RTC" - depends on OF + depends on OF && HAS_IOMEM help If you say yes here you get support for the RTC controller found on Xilinx Zynq Ultrascale+ MPSoC. --- linux-5.8.0.orig/drivers/rtc/rtc-cpcap.c +++ linux-5.8.0/drivers/rtc/rtc-cpcap.c @@ -261,7 +261,7 @@ return PTR_ERR(rtc->rtc_dev); rtc->rtc_dev->ops = &cpcap_rtc_ops; - rtc->rtc_dev->range_max = (1 << 14) * SECS_PER_DAY - 1; + rtc->rtc_dev->range_max = (timeu64_t) (DAY_MASK + 1) * SECS_PER_DAY - 1; err = cpcap_get_vendor(dev, rtc->regmap, &rtc->vendor); if (err) --- linux-5.8.0.orig/drivers/rtc/rtc-ds1307.c +++ linux-5.8.0/drivers/rtc/rtc-ds1307.c @@ -352,6 +352,10 @@ regmap_update_bits(ds1307->regmap, DS1340_REG_FLAG, DS1340_BIT_OSF, 0); break; + case ds_1388: + regmap_update_bits(ds1307->regmap, DS1388_REG_FLAG, + DS1388_BIT_OSF, 0); + break; case mcp794xx: /* * these bits were cleared when preparing the date/time --- linux-5.8.0.orig/drivers/rtc/rtc-ep93xx.c +++ linux-5.8.0/drivers/rtc/rtc-ep93xx.c @@ -33,7 +33,7 @@ static int ep93xx_rtc_get_swcomp(struct device *dev, unsigned short *preload, unsigned short *delete) { - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); unsigned long comp; comp = readl(ep93xx_rtc->mmio_base + EP93XX_RTC_SWCOMP); @@ -51,7 +51,7 @@ static int ep93xx_rtc_read_time(struct device *dev, struct rtc_time *tm) { - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); unsigned long time; time = readl(ep93xx_rtc->mmio_base + EP93XX_RTC_DATA); @@ -62,7 +62,7 @@ static int ep93xx_rtc_set_time(struct device *dev, struct rtc_time *tm) { - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); unsigned long secs = rtc_tm_to_time64(tm); writel(secs + 1, ep93xx_rtc->mmio_base + EP93XX_RTC_LOAD); --- linux-5.8.0.orig/drivers/rtc/rtc-goldfish.c +++ linux-5.8.0/drivers/rtc/rtc-goldfish.c @@ -73,6 +73,7 @@ rtc_alarm64 = rtc_tm_to_time64(&alrm->time) * NSEC_PER_SEC; writel((rtc_alarm64 >> 32), base + TIMER_ALARM_HIGH); writel(rtc_alarm64, base + TIMER_ALARM_LOW); + writel(1, base + TIMER_IRQ_ENABLED); } else { /* * if this function was called with enabled=0 --- linux-5.8.0.orig/drivers/rtc/rtc-pcf2127.c +++ linux-5.8.0/drivers/rtc/rtc-pcf2127.c @@ -232,10 +232,8 @@ if (ret) return ret; - ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD, - val, bytes); - - return ret ?: bytes; + return regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD, + val, bytes); } static int pcf2127_nvmem_write(void *priv, unsigned int offset, @@ -250,10 +248,8 @@ if (ret) return ret; - ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD, - val, bytes); - - return ret ?: bytes; + return regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD, + val, bytes); } /* watchdog driver */ @@ -324,6 +320,37 @@ .set_timeout = pcf2127_wdt_set_timeout, }; +static int pcf2127_watchdog_init(struct device *dev, struct pcf2127 *pcf2127) +{ + u32 wdd_timeout; + int ret; + + if (!IS_ENABLED(CONFIG_WATCHDOG) || + !device_property_read_bool(dev, "reset-source")) + return 0; + + pcf2127->wdd.parent = dev; + pcf2127->wdd.info = &pcf2127_wdt_info; + pcf2127->wdd.ops = &pcf2127_watchdog_ops; + pcf2127->wdd.min_timeout = PCF2127_WD_VAL_MIN; + pcf2127->wdd.max_timeout = PCF2127_WD_VAL_MAX; + pcf2127->wdd.timeout = PCF2127_WD_VAL_DEFAULT; + pcf2127->wdd.min_hw_heartbeat_ms = 500; + pcf2127->wdd.status = WATCHDOG_NOWAYOUT_INIT_STATUS; + + watchdog_set_drvdata(&pcf2127->wdd, pcf2127); + + /* Test if watchdog timer is started by bootloader */ + ret = regmap_read(pcf2127->regmap, PCF2127_REG_WD_VAL, &wdd_timeout); + if (ret) + return ret; + + if (wdd_timeout) + set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status); + + return devm_watchdog_register_device(dev, &pcf2127->wdd); +} + /* sysfs interface */ static ssize_t timestamp0_store(struct device *dev, @@ -419,7 +446,6 @@ const char *name, bool has_nvmem) { struct pcf2127 *pcf2127; - u32 wdd_timeout; int ret = 0; dev_dbg(dev, "%s\n", __func__); @@ -441,17 +467,6 @@ pcf2127->rtc->range_max = RTC_TIMESTAMP_END_2099; pcf2127->rtc->set_start_time = true; /* Sets actual start to 1970 */ - pcf2127->wdd.parent = dev; - pcf2127->wdd.info = &pcf2127_wdt_info; - pcf2127->wdd.ops = &pcf2127_watchdog_ops; - pcf2127->wdd.min_timeout = PCF2127_WD_VAL_MIN; - pcf2127->wdd.max_timeout = PCF2127_WD_VAL_MAX; - pcf2127->wdd.timeout = PCF2127_WD_VAL_DEFAULT; - pcf2127->wdd.min_hw_heartbeat_ms = 500; - pcf2127->wdd.status = WATCHDOG_NOWAYOUT_INIT_STATUS; - - watchdog_set_drvdata(&pcf2127->wdd, pcf2127); - if (has_nvmem) { struct nvmem_config nvmem_cfg = { .priv = pcf2127, @@ -481,19 +496,7 @@ return ret; } - /* Test if watchdog timer is started by bootloader */ - ret = regmap_read(pcf2127->regmap, PCF2127_REG_WD_VAL, &wdd_timeout); - if (ret) - return ret; - - if (wdd_timeout) - set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status); - -#ifdef CONFIG_WATCHDOG - ret = devm_watchdog_register_device(dev, &pcf2127->wdd); - if (ret) - return ret; -#endif /* CONFIG_WATCHDOG */ + pcf2127_watchdog_init(dev, pcf2127); /* * Disable battery low/switch-over timestamp and interrupts. --- linux-5.8.0.orig/drivers/rtc/rtc-pl031.c +++ linux-5.8.0/drivers/rtc/rtc-pl031.c @@ -275,6 +275,7 @@ struct pl031_local *ldata = dev_get_drvdata(dev); writel(rtc_tm_to_time64(&alarm->time), ldata->base + RTC_MR); + pl031_alarm_irq_enable(dev, alarm->enabled); return 0; } @@ -360,8 +361,10 @@ device_init_wakeup(&adev->dev, true); ldata->rtc = devm_rtc_allocate_device(&adev->dev); - if (IS_ERR(ldata->rtc)) - return PTR_ERR(ldata->rtc); + if (IS_ERR(ldata->rtc)) { + ret = PTR_ERR(ldata->rtc); + goto out; + } ldata->rtc->ops = ops; ldata->rtc->range_min = vendor->range_min; --- linux-5.8.0.orig/drivers/rtc/rtc-rx8010.c +++ linux-5.8.0/drivers/rtc/rtc-rx8010.c @@ -407,16 +407,26 @@ } } -static struct rtc_class_ops rx8010_rtc_ops = { +static const struct rtc_class_ops rx8010_rtc_ops_default = { .read_time = rx8010_get_time, .set_time = rx8010_set_time, .ioctl = rx8010_ioctl, }; +static const struct rtc_class_ops rx8010_rtc_ops_alarm = { + .read_time = rx8010_get_time, + .set_time = rx8010_set_time, + .ioctl = rx8010_ioctl, + .read_alarm = rx8010_read_alarm, + .set_alarm = rx8010_set_alarm, + .alarm_irq_enable = rx8010_alarm_irq_enable, +}; + static int rx8010_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct i2c_adapter *adapter = client->adapter; + const struct rtc_class_ops *rtc_ops; struct rx8010_data *rx8010; int err = 0; @@ -447,16 +457,16 @@ if (err) { dev_err(&client->dev, "unable to request IRQ\n"); - client->irq = 0; - } else { - rx8010_rtc_ops.read_alarm = rx8010_read_alarm; - rx8010_rtc_ops.set_alarm = rx8010_set_alarm; - rx8010_rtc_ops.alarm_irq_enable = rx8010_alarm_irq_enable; + return err; } + + rtc_ops = &rx8010_rtc_ops_alarm; + } else { + rtc_ops = &rx8010_rtc_ops_default; } rx8010->rtc = devm_rtc_device_register(&client->dev, client->name, - &rx8010_rtc_ops, THIS_MODULE); + rtc_ops, THIS_MODULE); if (IS_ERR(rx8010->rtc)) { dev_err(&client->dev, "unable to register the class device\n"); --- linux-5.8.0.orig/drivers/rtc/rtc-sun6i.c +++ linux-5.8.0/drivers/rtc/rtc-sun6i.c @@ -272,7 +272,7 @@ 300000000); if (IS_ERR(rtc->int_osc)) { pr_crit("Couldn't register the internal oscillator\n"); - return; + goto err; } parents[0] = clk_hw_get_name(rtc->int_osc); @@ -290,7 +290,7 @@ rtc->losc = clk_register(NULL, &rtc->hw); if (IS_ERR(rtc->losc)) { pr_crit("Couldn't register the LOSC clock\n"); - return; + goto err_register; } of_property_read_string_index(node, "clock-output-names", 1, @@ -301,7 +301,7 @@ &rtc->lock); if (IS_ERR(rtc->ext_losc)) { pr_crit("Couldn't register the LOSC external gate\n"); - return; + goto err_register; } clk_data->num = 2; @@ -314,6 +314,8 @@ of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); return; +err_register: + clk_hw_unregister_fixed_rate(rtc->int_osc); err: kfree(clk_data); } --- linux-5.8.0.orig/drivers/s390/block/dasd.c +++ linux-5.8.0/drivers/s390/block/dasd.c @@ -2980,6 +2980,12 @@ if (!block) return -EINVAL; + /* + * If the request is an ERP request there is nothing to requeue. + * This will be done with the remaining original request. + */ + if (cqr->refers) + return 0; spin_lock_irq(&cqr->dq->lock); req = (struct request *) cqr->callback_data; blk_mq_requeue_request(req, false); @@ -3081,7 +3087,8 @@ basedev = block->base; spin_lock_irq(&dq->lock); - if (basedev->state < DASD_STATE_READY) { + if (basedev->state < DASD_STATE_READY || + test_bit(DASD_FLAG_OFFLINE, &basedev->flags)) { DBF_DEV_EVENT(DBF_ERR, basedev, "device not ready for request %p", req); rc = BLK_STS_IOERR; @@ -3516,8 +3523,6 @@ struct dasd_device *device; struct dasd_block *block; - cdev->handler = NULL; - device = dasd_device_from_cdev(cdev); if (IS_ERR(device)) { dasd_remove_sysfs_files(cdev); @@ -3536,6 +3541,7 @@ * no quite down yet. */ dasd_set_target_state(device, DASD_STATE_NEW); + cdev->handler = NULL; /* dasd_delete_device destroys the device reference. */ block = device->block; dasd_delete_device(device); --- linux-5.8.0.orig/drivers/s390/block/dasd_alias.c +++ linux-5.8.0/drivers/s390/block/dasd_alias.c @@ -256,7 +256,6 @@ return; device->discipline->get_uid(device, &uid); spin_lock_irqsave(&lcu->lock, flags); - list_del_init(&device->alias_list); /* make sure that the workers don't use this device */ if (device == lcu->suc_data.device) { spin_unlock_irqrestore(&lcu->lock, flags); @@ -283,6 +282,7 @@ spin_lock_irqsave(&aliastree.lock, flags); spin_lock(&lcu->lock); + list_del_init(&device->alias_list); if (list_empty(&lcu->grouplist) && list_empty(&lcu->active_devices) && list_empty(&lcu->inactive_devices)) { @@ -462,11 +462,19 @@ spin_unlock_irqrestore(&lcu->lock, flags); rc = dasd_sleep_on(cqr); - if (rc && !suborder_not_supported(cqr)) { + if (!rc) + goto out; + + if (suborder_not_supported(cqr)) { + /* suborder not supported or device unusable for IO */ + rc = -EOPNOTSUPP; + } else { + /* IO failed but should be retried */ spin_lock_irqsave(&lcu->lock, flags); lcu->flags |= NEED_UAC_UPDATE; spin_unlock_irqrestore(&lcu->lock, flags); } +out: dasd_sfree_request(cqr, cqr->memdev); return rc; } @@ -503,6 +511,14 @@ return rc; spin_lock_irqsave(&lcu->lock, flags); + /* + * there is another update needed skip the remaining handling + * the data might already be outdated + * but especially do not add the device to an LCU with pending + * update + */ + if (lcu->flags & NEED_UAC_UPDATE) + goto out; lcu->pav = NO_PAV; for (i = 0; i < MAX_DEVICES_PER_LCU; ++i) { switch (lcu->uac->unit[i].ua_type) { @@ -521,6 +537,7 @@ alias_list) { _add_device_to_lcu(lcu, device, refdev); } +out: spin_unlock_irqrestore(&lcu->lock, flags); return 0; } @@ -625,6 +642,7 @@ } if (lcu->flags & UPDATE_PENDING) { list_move(&device->alias_list, &lcu->active_devices); + private->pavgroup = NULL; _schedule_lcu_update(lcu, device); } spin_unlock_irqrestore(&lcu->lock, flags); --- linux-5.8.0.orig/drivers/s390/block/dasd_diag.c +++ linux-5.8.0/drivers/s390/block/dasd_diag.c @@ -319,7 +319,7 @@ struct dasd_diag_characteristics *rdc_data; struct vtoc_cms_label *label; struct dasd_block *block; - struct dasd_diag_bio bio; + struct dasd_diag_bio *bio; unsigned int sb, bsize; blocknum_t end_block; int rc; @@ -395,29 +395,36 @@ rc = -ENOMEM; goto out; } + bio = kzalloc(sizeof(*bio), GFP_KERNEL); + if (bio == NULL) { + DBF_DEV_EVENT(DBF_WARNING, device, "%s", + "No memory to allocate initialization bio"); + rc = -ENOMEM; + goto out_label; + } rc = 0; end_block = 0; /* try all sizes - needed for ECKD devices */ for (bsize = 512; bsize <= PAGE_SIZE; bsize <<= 1) { mdsk_init_io(device, bsize, 0, &end_block); - memset(&bio, 0, sizeof (struct dasd_diag_bio)); - bio.type = MDSK_READ_REQ; - bio.block_number = private->pt_block + 1; - bio.buffer = label; + memset(bio, 0, sizeof(*bio)); + bio->type = MDSK_READ_REQ; + bio->block_number = private->pt_block + 1; + bio->buffer = label; memset(&private->iob, 0, sizeof (struct dasd_diag_rw_io)); private->iob.dev_nr = rdc_data->dev_nr; private->iob.key = 0; private->iob.flags = 0; /* do synchronous io */ private->iob.block_count = 1; private->iob.interrupt_params = 0; - private->iob.bio_list = &bio; + private->iob.bio_list = bio; private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT; rc = dia250(&private->iob, RW_BIO); if (rc == 3) { pr_warn("%s: A 64-bit DIAG call failed\n", dev_name(&device->cdev->dev)); rc = -EOPNOTSUPP; - goto out_label; + goto out_bio; } mdsk_term_io(device); if (rc == 0) @@ -427,7 +434,7 @@ pr_warn("%s: Accessing the DASD failed because of an incorrect format (rc=%d)\n", dev_name(&device->cdev->dev), rc); rc = -EIO; - goto out_label; + goto out_bio; } /* check for label block */ if (memcmp(label->label_id, DASD_DIAG_CMS1, @@ -457,6 +464,8 @@ (rc == 4) ? ", read-only device" : ""); rc = 0; } +out_bio: + kfree(bio); out_label: free_page((long) label); out: --- linux-5.8.0.orig/drivers/s390/block/dasd_fba.c +++ linux-5.8.0/drivers/s390/block/dasd_fba.c @@ -40,6 +40,7 @@ MODULE_LICENSE("GPL"); static struct dasd_discipline dasd_fba_discipline; +static void *dasd_fba_zero_page; struct dasd_fba_private { struct dasd_fba_characteristics rdc_data; @@ -270,7 +271,7 @@ ccw->cmd_code = DASD_FBA_CCW_WRITE; ccw->flags |= CCW_FLAG_SLI; ccw->count = count; - ccw->cda = (__u32) (addr_t) page_to_phys(ZERO_PAGE(0)); + ccw->cda = (__u32) (addr_t) dasd_fba_zero_page; } /* @@ -830,6 +831,11 @@ int ret; ASCEBC(dasd_fba_discipline.ebcname, 4); + + dasd_fba_zero_page = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); + if (!dasd_fba_zero_page) + return -ENOMEM; + ret = ccw_driver_register(&dasd_fba_driver); if (!ret) wait_for_device_probe(); @@ -841,6 +847,7 @@ dasd_fba_cleanup(void) { ccw_driver_unregister(&dasd_fba_driver); + free_page((unsigned long)dasd_fba_zero_page); } module_init(dasd_fba_init); --- linux-5.8.0.orig/drivers/s390/cio/css.c +++ linux-5.8.0/drivers/s390/cio/css.c @@ -677,6 +677,11 @@ rc = css_evaluate_known_subchannel(sch, 1); if (rc == -EAGAIN) css_schedule_eval(sch->schid); + /* + * The loop might take long time for platforms with lots of + * known devices. Allow scheduling here. + */ + cond_resched(); } return 0; } --- linux-5.8.0.orig/drivers/s390/cio/device.c +++ linux-5.8.0/drivers/s390/cio/device.c @@ -1664,10 +1664,10 @@ struct io_subchannel_private *io_priv = to_io_private(sch); set_io_private(sch, NULL); - put_device(&sch->dev); - put_device(&cdev->dev); dma_free_coherent(&sch->dev, sizeof(*io_priv->dma_area), io_priv->dma_area, io_priv->dma_area_dma); + put_device(&sch->dev); + put_device(&cdev->dev); kfree(io_priv); } --- linux-5.8.0.orig/drivers/s390/cio/vfio_ccw_ops.c +++ linux-5.8.0/drivers/s390/cio/vfio_ccw_ops.c @@ -539,7 +539,7 @@ if (ret) return ret; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0; } case VFIO_DEVICE_GET_REGION_INFO: { @@ -557,7 +557,7 @@ if (ret) return ret; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0; } case VFIO_DEVICE_GET_IRQ_INFO: { @@ -578,7 +578,7 @@ if (info.count == -1) return -EINVAL; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0; } case VFIO_DEVICE_SET_IRQS: { --- linux-5.8.0.orig/drivers/s390/crypto/pkey_api.c +++ linux-5.8.0/drivers/s390/crypto/pkey_api.c @@ -34,9 +34,6 @@ #define KEYBLOBBUFSIZE 8192 /* key buffer size used for internal processing */ #define MAXAPQNSINLIST 64 /* max 64 apqns within a apqn list */ -/* mask of available pckmo subfunctions, fetched once at module init */ -static cpacf_mask_t pckmo_functions; - /* * debug feature data and functions */ @@ -90,6 +87,9 @@ const struct pkey_clrkey *clrkey, struct pkey_protkey *protkey) { + /* mask of available pckmo subfunctions */ + static cpacf_mask_t pckmo_functions; + long fc; int keysize; u8 paramblock[64]; @@ -113,11 +113,13 @@ return -EINVAL; } - /* - * Check if the needed pckmo subfunction is available. - * These subfunctions can be enabled/disabled by customers - * in the LPAR profile or may even change on the fly. - */ + /* Did we already check for PCKMO ? */ + if (!pckmo_functions.bytes[0]) { + /* no, so check now */ + if (!cpacf_query(CPACF_PCKMO, &pckmo_functions)) + return -ENODEV; + } + /* check for the pckmo subfunction we need now */ if (!cpacf_test_func(&pckmo_functions, fc)) { DEBUG_ERR("%s pckmo functions not available\n", __func__); return -ENODEV; @@ -1838,7 +1840,7 @@ */ static int __init pkey_init(void) { - cpacf_mask_t kmc_functions; + cpacf_mask_t func_mask; /* * The pckmo instruction should be available - even if we don't @@ -1846,15 +1848,15 @@ * is also the minimum level for the kmc instructions which * are able to work with protected keys. */ - if (!cpacf_query(CPACF_PCKMO, &pckmo_functions)) + if (!cpacf_query(CPACF_PCKMO, &func_mask)) return -ENODEV; /* check for kmc instructions available */ - if (!cpacf_query(CPACF_KMC, &kmc_functions)) + if (!cpacf_query(CPACF_KMC, &func_mask)) return -ENODEV; - if (!cpacf_test_func(&kmc_functions, CPACF_KMC_PAES_128) || - !cpacf_test_func(&kmc_functions, CPACF_KMC_PAES_192) || - !cpacf_test_func(&kmc_functions, CPACF_KMC_PAES_256)) + if (!cpacf_test_func(&func_mask, CPACF_KMC_PAES_128) || + !cpacf_test_func(&func_mask, CPACF_KMC_PAES_192) || + !cpacf_test_func(&func_mask, CPACF_KMC_PAES_256)) return -ENODEV; pkey_debug_init(); --- linux-5.8.0.orig/drivers/s390/crypto/vfio_ap_drv.c +++ linux-5.8.0/drivers/s390/crypto/vfio_ap_drv.c @@ -71,15 +71,11 @@ static void vfio_ap_queue_dev_remove(struct ap_device *apdev) { struct vfio_ap_queue *q; - int apid, apqi; mutex_lock(&matrix_dev->lock); q = dev_get_drvdata(&apdev->device); + vfio_ap_mdev_reset_queue(q, 1); dev_set_drvdata(&apdev->device, NULL); - apid = AP_QID_CARD(q->apqn); - apqi = AP_QID_QUEUE(q->apqn); - vfio_ap_mdev_reset_queue(apid, apqi, 1); - vfio_ap_irq_disable(q); kfree(q); mutex_unlock(&matrix_dev->lock); } --- linux-5.8.0.orig/drivers/s390/crypto/vfio_ap_ops.c +++ linux-5.8.0/drivers/s390/crypto/vfio_ap_ops.c @@ -25,6 +25,7 @@ #define VFIO_AP_MDEV_NAME_HWVIRT "VFIO AP Passthrough Device" static int vfio_ap_mdev_reset_queues(struct mdev_device *mdev); +static struct vfio_ap_queue *vfio_ap_find_queue(int apqn); static int match_apqn(struct device *dev, const void *data) { @@ -49,20 +50,15 @@ int apqn) { struct vfio_ap_queue *q; - struct device *dev; if (!test_bit_inv(AP_QID_CARD(apqn), matrix_mdev->matrix.apm)) return NULL; if (!test_bit_inv(AP_QID_QUEUE(apqn), matrix_mdev->matrix.aqm)) return NULL; - dev = driver_find_device(&matrix_dev->vfio_ap_drv->driver, NULL, - &apqn, match_apqn); - if (!dev) - return NULL; - q = dev_get_drvdata(dev); - q->matrix_mdev = matrix_mdev; - put_device(dev); + q = vfio_ap_find_queue(apqn); + if (q) + q->matrix_mdev = matrix_mdev; return q; } @@ -119,13 +115,18 @@ */ static void vfio_ap_free_aqic_resources(struct vfio_ap_queue *q) { - if (q->saved_isc != VFIO_AP_ISC_INVALID && q->matrix_mdev) + if (!q) + return; + if (q->saved_isc != VFIO_AP_ISC_INVALID && + !WARN_ON(!(q->matrix_mdev && q->matrix_mdev->kvm))) { kvm_s390_gisc_unregister(q->matrix_mdev->kvm, q->saved_isc); - if (q->saved_pfn && q->matrix_mdev) + q->saved_isc = VFIO_AP_ISC_INVALID; + } + if (q->saved_pfn && !WARN_ON(!q->matrix_mdev)) { vfio_unpin_pages(mdev_dev(q->matrix_mdev->mdev), &q->saved_pfn, 1); - q->saved_pfn = 0; - q->saved_isc = VFIO_AP_ISC_INVALID; + q->saved_pfn = 0; + } } /** @@ -144,7 +145,7 @@ * Returns if ap_aqic function failed with invalid, deconfigured or * checkstopped AP. */ -struct ap_queue_status vfio_ap_irq_disable(struct vfio_ap_queue *q) +static struct ap_queue_status vfio_ap_irq_disable(struct vfio_ap_queue *q) { struct ap_qirq_ctrl aqic_gisa = {}; struct ap_queue_status status; @@ -1114,48 +1115,70 @@ return NOTIFY_OK; } -static void vfio_ap_irq_disable_apqn(int apqn) +static struct vfio_ap_queue *vfio_ap_find_queue(int apqn) { struct device *dev; - struct vfio_ap_queue *q; + struct vfio_ap_queue *q = NULL; dev = driver_find_device(&matrix_dev->vfio_ap_drv->driver, NULL, &apqn, match_apqn); if (dev) { q = dev_get_drvdata(dev); - vfio_ap_irq_disable(q); put_device(dev); } + + return q; } -int vfio_ap_mdev_reset_queue(unsigned int apid, unsigned int apqi, +int vfio_ap_mdev_reset_queue(struct vfio_ap_queue *q, unsigned int retry) { struct ap_queue_status status; + int ret; int retry2 = 2; - int apqn = AP_MKQID(apid, apqi); - do { - status = ap_zapq(apqn); - switch (status.response_code) { - case AP_RESPONSE_NORMAL: - while (!status.queue_empty && retry2--) { - msleep(20); - status = ap_tapq(apqn, NULL); - } - WARN_ON_ONCE(retry2 <= 0); - return 0; - case AP_RESPONSE_RESET_IN_PROGRESS: - case AP_RESPONSE_BUSY: + if (!q) + return 0; + +retry_zapq: + status = ap_zapq(q->apqn); + switch (status.response_code) { + case AP_RESPONSE_NORMAL: + ret = 0; + break; + case AP_RESPONSE_RESET_IN_PROGRESS: + if (retry--) { msleep(20); - break; - default: - /* things are really broken, give up */ - return -EIO; + goto retry_zapq; } - } while (retry--); + ret = -EBUSY; + break; + case AP_RESPONSE_Q_NOT_AVAIL: + case AP_RESPONSE_DECONFIGURED: + case AP_RESPONSE_CHECKSTOPPED: + WARN_ON_ONCE(status.irq_enabled); + ret = -EBUSY; + goto free_resources; + default: + /* things are really broken, give up */ + WARN(true, "PQAP/ZAPQ completed with invalid rc (%x)\n", + status.response_code); + return -EIO; + } + + /* wait for the reset to take effect */ + while (retry2--) { + if (status.queue_empty && !status.irq_enabled) + break; + msleep(20); + status = ap_tapq(q->apqn, NULL); + } + WARN_ON_ONCE(retry2 <= 0); - return -EBUSY; +free_resources: + vfio_ap_free_aqic_resources(q); + + return ret; } static int vfio_ap_mdev_reset_queues(struct mdev_device *mdev) @@ -1163,13 +1186,15 @@ int ret; int rc = 0; unsigned long apid, apqi; + struct vfio_ap_queue *q; struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev); for_each_set_bit_inv(apid, matrix_mdev->matrix.apm, matrix_mdev->matrix.apm_max + 1) { for_each_set_bit_inv(apqi, matrix_mdev->matrix.aqm, matrix_mdev->matrix.aqm_max + 1) { - ret = vfio_ap_mdev_reset_queue(apid, apqi, 1); + q = vfio_ap_find_queue(AP_MKQID(apid, apqi)); + ret = vfio_ap_mdev_reset_queue(q, 1); /* * Regardless whether a queue turns out to be busy, or * is not operational, we need to continue resetting @@ -1177,7 +1202,6 @@ */ if (ret) rc = ret; - vfio_ap_irq_disable_apqn(AP_MKQID(apid, apqi)); } } @@ -1255,7 +1279,7 @@ info.num_regions = 0; info.num_irqs = 0; - return copy_to_user((void __user *)arg, &info, minsz); + return copy_to_user((void __user *)arg, &info, minsz) ? -EFAULT : 0; } static ssize_t vfio_ap_mdev_ioctl(struct mdev_device *mdev, --- linux-5.8.0.orig/drivers/s390/crypto/vfio_ap_private.h +++ linux-5.8.0/drivers/s390/crypto/vfio_ap_private.h @@ -88,11 +88,6 @@ struct mdev_device *mdev; }; -extern int vfio_ap_mdev_register(void); -extern void vfio_ap_mdev_unregister(void); -int vfio_ap_mdev_reset_queue(unsigned int apid, unsigned int apqi, - unsigned int retry); - struct vfio_ap_queue { struct ap_matrix_mdev *matrix_mdev; unsigned long saved_pfn; @@ -100,5 +95,10 @@ #define VFIO_AP_ISC_INVALID 0xff unsigned char saved_isc; }; -struct ap_queue_status vfio_ap_irq_disable(struct vfio_ap_queue *q); + +int vfio_ap_mdev_register(void); +void vfio_ap_mdev_unregister(void); +int vfio_ap_mdev_reset_queue(struct vfio_ap_queue *q, + unsigned int retry); + #endif /* _VFIO_AP_PRIVATE_H_ */ --- linux-5.8.0.orig/drivers/s390/crypto/zcrypt_api.c +++ linux-5.8.0/drivers/s390/crypto/zcrypt_api.c @@ -1429,7 +1429,8 @@ if (!reqcnt) return -ENOMEM; zcrypt_perdev_reqcnt(reqcnt, AP_DEVICES); - if (copy_to_user((int __user *) arg, reqcnt, sizeof(reqcnt))) + if (copy_to_user((int __user *) arg, reqcnt, + sizeof(u32) * AP_DEVICES)) rc = -EFAULT; kfree(reqcnt); return rc; --- linux-5.8.0.orig/drivers/s390/crypto/zcrypt_ccamisc.c +++ linux-5.8.0/drivers/s390/crypto/zcrypt_ccamisc.c @@ -1685,9 +1685,9 @@ *nr_apqns = 0; /* fetch status of all crypto cards */ - device_status = kmalloc_array(MAX_ZDEV_ENTRIES_EXT, - sizeof(struct zcrypt_device_status_ext), - GFP_KERNEL); + device_status = kvmalloc_array(MAX_ZDEV_ENTRIES_EXT, + sizeof(struct zcrypt_device_status_ext), + GFP_KERNEL); if (!device_status) return -ENOMEM; zcrypt_device_status_mask_ext(device_status); @@ -1755,7 +1755,7 @@ verify = 0; } - kfree(device_status); + kvfree(device_status); return rc; } EXPORT_SYMBOL(cca_findcard2); --- linux-5.8.0.orig/drivers/s390/net/qeth_core.h +++ linux-5.8.0/drivers/s390/net/qeth_core.h @@ -397,12 +397,13 @@ QETH_QDIO_BUF_EMPTY, /* Filled by driver; owned by hardware in order to be sent. */ QETH_QDIO_BUF_PRIMED, - /* Identified to be pending in TPQ. */ + /* Discovered by the TX completion code: */ QETH_QDIO_BUF_PENDING, - /* Found in completion queue. */ - QETH_QDIO_BUF_IN_CQ, - /* Handled via transfer pending / completion queue. */ - QETH_QDIO_BUF_HANDLED_DELAYED, + /* Finished by the TX completion code: */ + QETH_QDIO_BUF_NEED_QAOB, + /* Received QAOB notification on CQ: */ + QETH_QDIO_BUF_QAOB_OK, + QETH_QDIO_BUF_QAOB_ERROR, }; struct qeth_qdio_out_buffer { @@ -415,7 +416,7 @@ int is_header[QDIO_MAX_ELEMENTS_PER_BUFFER]; struct qeth_qdio_out_q *q; - struct qeth_qdio_out_buffer *next_pending; + struct list_head list_entry; }; struct qeth_card; @@ -485,6 +486,7 @@ struct qdio_buffer *qdio_bufs[QDIO_MAX_BUFFERS_PER_Q]; struct qeth_qdio_out_buffer *bufs[QDIO_MAX_BUFFERS_PER_Q]; struct qdio_outbuf_state *bufstates; /* convenience pointer */ + struct list_head pending_bufs; struct qeth_out_q_stats stats; u8 next_buf_to_fill; u8 max_elements; @@ -680,6 +682,11 @@ int inter_packet_jumbo; }; +enum qeth_pnso_mode { + QETH_PNSO_NONE, + QETH_PNSO_BRIDGEPORT, +}; + #define QETH_BROADCAST_WITH_ECHO 0x01 #define QETH_BROADCAST_WITHOUT_ECHO 0x02 struct qeth_card_info { @@ -696,6 +703,7 @@ /* no bitfield, we take a pointer on these two: */ u8 has_lp2lp_cso_v6; u8 has_lp2lp_cso_v4; + enum qeth_pnso_mode pnso_mode; enum qeth_card_types type; enum qeth_link_types link_type; int broadcast_capable; @@ -765,6 +773,7 @@ u8 buf_element; int e_offset; int qdio_err; + u8 bufs_refill; }; struct carrier_info { @@ -835,7 +844,6 @@ struct napi_struct napi; struct qeth_rx rx; struct delayed_work buffer_reclaim_work; - int reclaim_index; struct work_struct close_dev_work; }; --- linux-5.8.0.orig/drivers/s390/net/qeth_core_main.c +++ linux-5.8.0/drivers/s390/net/qeth_core_main.c @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -72,9 +73,6 @@ static void qeth_notify_skbs(struct qeth_qdio_out_q *queue, struct qeth_qdio_out_buffer *buf, enum iucv_tx_notify notification); -static void qeth_tx_complete_buf(struct qeth_qdio_out_buffer *buf, bool error, - int budget); -static int qeth_init_qdio_out_buf(struct qeth_qdio_out_q *, int); static void qeth_close_dev_handler(struct work_struct *work) { @@ -204,12 +202,17 @@ void qeth_clear_working_pool_list(struct qeth_card *card) { struct qeth_buffer_pool_entry *pool_entry, *tmp; + struct qeth_qdio_q *queue = card->qdio.in_q; + unsigned int i; QETH_CARD_TEXT(card, 5, "clwrklst"); list_for_each_entry_safe(pool_entry, tmp, &card->qdio.in_buf_pool.entry_list, list){ list_del(&pool_entry->list); } + + for (i = 0; i < ARRAY_SIZE(queue->bufs); i++) + queue->bufs[i].pool_entry = NULL; } EXPORT_SYMBOL_GPL(qeth_clear_working_pool_list); @@ -462,54 +465,14 @@ return n; } -static void qeth_cleanup_handled_pending(struct qeth_qdio_out_q *q, int bidx, - int forced_cleanup) -{ - if (q->card->options.cq != QETH_CQ_ENABLED) - return; - - if (q->bufs[bidx]->next_pending != NULL) { - struct qeth_qdio_out_buffer *head = q->bufs[bidx]; - struct qeth_qdio_out_buffer *c = q->bufs[bidx]->next_pending; - - while (c) { - if (forced_cleanup || - atomic_read(&c->state) == - QETH_QDIO_BUF_HANDLED_DELAYED) { - struct qeth_qdio_out_buffer *f = c; - QETH_CARD_TEXT(f->q->card, 5, "fp"); - QETH_CARD_TEXT_(f->q->card, 5, "%lx", (long) f); - /* release here to avoid interleaving between - outbound tasklet and inbound tasklet - regarding notifications and lifecycle */ - qeth_tx_complete_buf(c, forced_cleanup, 0); - - c = f->next_pending; - WARN_ON_ONCE(head->next_pending != f); - head->next_pending = c; - kmem_cache_free(qeth_qdio_outbuf_cache, f); - } else { - head = c; - c = c->next_pending; - } - - } - } - if (forced_cleanup && (atomic_read(&(q->bufs[bidx]->state)) == - QETH_QDIO_BUF_HANDLED_DELAYED)) { - /* for recovery situations */ - qeth_init_qdio_out_buf(q, bidx); - QETH_CARD_TEXT(q->card, 2, "clprecov"); - } -} - - static void qeth_qdio_handle_aob(struct qeth_card *card, unsigned long phys_aob_addr) { + enum qeth_qdio_out_buffer_state new_state = QETH_QDIO_BUF_QAOB_OK; struct qaob *aob; struct qeth_qdio_out_buffer *buffer; enum iucv_tx_notify notification; + struct qeth_qdio_out_q *queue; unsigned int i; aob = (struct qaob *) phys_to_virt(phys_aob_addr); @@ -518,34 +481,46 @@ buffer = (struct qeth_qdio_out_buffer *) aob->user1; QETH_CARD_TEXT_(card, 5, "%lx", aob->user1); - if (atomic_cmpxchg(&buffer->state, QETH_QDIO_BUF_PRIMED, - QETH_QDIO_BUF_IN_CQ) == QETH_QDIO_BUF_PRIMED) { - notification = TX_NOTIFY_OK; - } else { - WARN_ON_ONCE(atomic_read(&buffer->state) != - QETH_QDIO_BUF_PENDING); - atomic_set(&buffer->state, QETH_QDIO_BUF_IN_CQ); - notification = TX_NOTIFY_DELAYED_OK; + if (aob->aorc) { + QETH_CARD_TEXT_(card, 2, "aorc%02X", aob->aorc); + new_state = QETH_QDIO_BUF_QAOB_ERROR; } - if (aob->aorc != 0) { - QETH_CARD_TEXT_(card, 2, "aorc%02X", aob->aorc); + switch (atomic_xchg(&buffer->state, new_state)) { + case QETH_QDIO_BUF_PRIMED: + /* Faster than TX completion code, let it handle the async + * completion for us. + */ + break; + case QETH_QDIO_BUF_PENDING: + /* TX completion code is active and will handle the async + * completion for us. + */ + break; + case QETH_QDIO_BUF_NEED_QAOB: + /* TX completion code is already finished. */ notification = qeth_compute_cq_notification(aob->aorc, 1); - } - qeth_notify_skbs(buffer->q, buffer, notification); + qeth_notify_skbs(buffer->q, buffer, notification); - /* Free dangling allocations. The attached skbs are handled by - * qeth_cleanup_handled_pending(). - */ - for (i = 0; - i < aob->sb_count && i < QETH_MAX_BUFFER_ELEMENTS(card); - i++) { - void *data = phys_to_virt(aob->sba[i]); + /* Free dangling allocations. The attached skbs are handled by + * qeth_tx_complete_pending_bufs(). + */ + for (i = 0; + i < aob->sb_count && i < QETH_MAX_BUFFER_ELEMENTS(card); + i++) { + void *data = phys_to_virt(aob->sba[i]); + + if (data && buffer->is_header[i]) + kmem_cache_free(qeth_core_header_cache, data); + } - if (data && buffer->is_header[i]) - kmem_cache_free(qeth_core_header_cache, data); + queue = buffer->q; + atomic_set(&buffer->state, QETH_QDIO_BUF_EMPTY); + napi_schedule(&queue->napi); + break; + default: + WARN_ON_ONCE(1); } - atomic_set(&buffer->state, QETH_QDIO_BUF_HANDLED_DELAYED); qdio_release_aob(aob); } @@ -1403,7 +1378,7 @@ skb_queue_walk(&buf->skb_list, skb) { QETH_CARD_TEXT_(q->card, 5, "skbn%d", notification); QETH_CARD_TEXT_(q->card, 5, "%lx", (long) skb); - if (skb->protocol == htons(ETH_P_AF_IUCV) && skb->sk) + if (skb->sk && skb->sk->sk_family == PF_IUCV) iucv_sk(skb->sk)->sk_txnotify(skb, notification); } } @@ -1414,12 +1389,6 @@ struct qeth_qdio_out_q *queue = buf->q; struct sk_buff *skb; - /* release may never happen from within CQ tasklet scope */ - WARN_ON_ONCE(atomic_read(&buf->state) == QETH_QDIO_BUF_IN_CQ); - - if (atomic_read(&buf->state) == QETH_QDIO_BUF_PENDING) - qeth_notify_skbs(queue, buf, TX_NOTIFY_GENERALERROR); - /* Empty buffer? */ if (buf->next_element_to_fill == 0) return; @@ -1481,14 +1450,38 @@ atomic_set(&buf->state, QETH_QDIO_BUF_EMPTY); } +static void qeth_tx_complete_pending_bufs(struct qeth_card *card, + struct qeth_qdio_out_q *queue, + bool drain) +{ + struct qeth_qdio_out_buffer *buf, *tmp; + + list_for_each_entry_safe(buf, tmp, &queue->pending_bufs, list_entry) { + if (drain || atomic_read(&buf->state) == QETH_QDIO_BUF_EMPTY) { + QETH_CARD_TEXT(card, 5, "fp"); + QETH_CARD_TEXT_(card, 5, "%lx", (long) buf); + + if (drain) + qeth_notify_skbs(queue, buf, + TX_NOTIFY_GENERALERROR); + qeth_tx_complete_buf(buf, drain, 0); + + list_del(&buf->list_entry); + kmem_cache_free(qeth_qdio_outbuf_cache, buf); + } + } +} + static void qeth_drain_output_queue(struct qeth_qdio_out_q *q, bool free) { int j; + qeth_tx_complete_pending_bufs(q->card, q, true); + for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; ++j) { if (!q->bufs[j]) continue; - qeth_cleanup_handled_pending(q, j, 1); + qeth_clear_output_buffer(q, q->bufs[j], true, 0); if (free) { kmem_cache_free(qeth_qdio_outbuf_cache, q->bufs[j]); @@ -2614,7 +2607,6 @@ skb_queue_head_init(&newbuf->skb_list); lockdep_set_class(&newbuf->skb_list.lock, &qdio_out_skb_queue_key); newbuf->q = q; - newbuf->next_pending = q->bufs[bidx]; atomic_set(&newbuf->state, QETH_QDIO_BUF_EMPTY); q->bufs[bidx] = newbuf; return 0; @@ -2633,15 +2625,28 @@ static struct qeth_qdio_out_q *qeth_alloc_output_queue(void) { struct qeth_qdio_out_q *q = kzalloc(sizeof(*q), GFP_KERNEL); + unsigned int i; if (!q) return NULL; - if (qdio_alloc_buffers(q->qdio_bufs, QDIO_MAX_BUFFERS_PER_Q)) { - kfree(q); - return NULL; + if (qdio_alloc_buffers(q->qdio_bufs, QDIO_MAX_BUFFERS_PER_Q)) + goto err_qdio_bufs; + + for (i = 0; i < QDIO_MAX_BUFFERS_PER_Q; i++) { + if (qeth_init_qdio_out_buf(q, i)) + goto err_out_bufs; } + return q; + +err_out_bufs: + while (i > 0) + kmem_cache_free(qeth_qdio_outbuf_cache, q->bufs[--i]); + qdio_free_buffers(q->qdio_bufs, QDIO_MAX_BUFFERS_PER_Q); +err_qdio_bufs: + kfree(q); + return NULL; } static void qeth_tx_completion_timer(struct timer_list *timer) @@ -2654,7 +2659,7 @@ static int qeth_alloc_qdio_queues(struct qeth_card *card) { - int i, j; + unsigned int i; QETH_CARD_TEXT(card, 2, "allcqdbf"); @@ -2683,16 +2688,10 @@ card->qdio.out_qs[i] = queue; queue->card = card; queue->queue_no = i; + INIT_LIST_HEAD(&queue->pending_bufs); timer_setup(&queue->timer, qeth_tx_completion_timer, 0); queue->coalesce_usecs = QETH_TX_COALESCE_USECS; queue->max_coalesced_frames = QETH_TX_MAX_COALESCED_FRAMES; - - /* give outbound qeth_qdio_buffers their qdio_buffers */ - for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; ++j) { - WARN_ON(queue->bufs[j]); - if (qeth_init_qdio_out_buf(queue, j)) - goto out_freeoutqbufs; - } } /* completion */ @@ -2701,13 +2700,6 @@ return 0; -out_freeoutqbufs: - while (j > 0) { - --j; - kmem_cache_free(qeth_qdio_outbuf_cache, - card->qdio.out_qs[i]->bufs[j]); - card->qdio.out_qs[i]->bufs[j] = NULL; - } out_freeoutq: while (i > 0) { qeth_free_output_queue(card->qdio.out_qs[--i]); @@ -2951,7 +2943,7 @@ static int qeth_init_input_buffer(struct qeth_card *card, struct qeth_qdio_buffer *buf) { - struct qeth_buffer_pool_entry *pool_entry; + struct qeth_buffer_pool_entry *pool_entry = buf->pool_entry; int i; if ((card->options.cq == QETH_CQ_ENABLED) && (!buf->rx_skb)) { @@ -2962,9 +2954,13 @@ return -ENOMEM; } - pool_entry = qeth_find_free_buffer_pool_entry(card); - if (!pool_entry) - return -ENOBUFS; + if (!pool_entry) { + pool_entry = qeth_find_free_buffer_pool_entry(card); + if (!pool_entry) + return -ENOBUFS; + + buf->pool_entry = pool_entry; + } /* * since the buffer is accessed only from the input_tasklet @@ -2972,8 +2968,6 @@ * the QETH_IN_BUF_REQUEUE_THRESHOLD we should never run out off * buffers */ - - buf->pool_entry = pool_entry; for (i = 0; i < QETH_MAX_BUFFER_ELEMENTS(card); ++i) { buf->buffer->element[i].length = PAGE_SIZE; buf->buffer->element[i].addr = @@ -3468,20 +3462,15 @@ return 0; } -static void qeth_queue_input_buffer(struct qeth_card *card, int index) +static unsigned int qeth_rx_refill_queue(struct qeth_card *card, + unsigned int count) { struct qeth_qdio_q *queue = card->qdio.in_q; struct list_head *lh; - int count; int i; int rc; int newcount = 0; - count = (index < queue->next_buf_to_init)? - card->qdio.in_buf_pool.buf_count - - (queue->next_buf_to_init - index) : - card->qdio.in_buf_pool.buf_count - - (queue->next_buf_to_init + QDIO_MAX_BUFFERS_PER_Q - index); /* only requeue at a certain threshold to avoid SIGAs */ if (count >= QETH_IN_BUF_REQUEUE_THRESHOLD(card)) { for (i = queue->next_buf_to_init; @@ -3509,12 +3498,11 @@ i++; if (i == card->qdio.in_buf_pool.buf_count) { QETH_CARD_TEXT(card, 2, "qsarbw"); - card->reclaim_index = index; schedule_delayed_work( &card->buffer_reclaim_work, QETH_RECLAIM_WORK_TIME); } - return; + return 0; } /* @@ -3531,7 +3519,10 @@ } queue->next_buf_to_init = QDIO_BUFNR(queue->next_buf_to_init + count); + return count; } + + return 0; } static void qeth_buffer_reclaim_work(struct work_struct *work) @@ -3539,8 +3530,10 @@ struct qeth_card *card = container_of(work, struct qeth_card, buffer_reclaim_work.work); - QETH_CARD_TEXT_(card, 2, "brw:%x", card->reclaim_index); - qeth_queue_input_buffer(card, card->reclaim_index); + local_bh_disable(); + napi_schedule(&card->napi); + /* kick-start the NAPI softirq: */ + local_bh_enable(); } static void qeth_handle_send_error(struct qeth_card *card, @@ -5767,6 +5760,7 @@ static unsigned int qeth_rx_poll(struct qeth_card *card, int budget) { + struct qeth_rx *ctx = &card->rx; unsigned int work_done = 0; while (budget > 0) { @@ -5802,8 +5796,11 @@ if (done) { QETH_CARD_STAT_INC(card, rx_bufs); qeth_put_buffer_pool_entry(card, buffer->pool_entry); - qeth_queue_input_buffer(card, card->rx.b_index); + buffer->pool_entry = NULL; card->rx.b_count--; + ctx->bufs_refill++; + ctx->bufs_refill -= qeth_rx_refill_queue(card, + ctx->bufs_refill); /* Step forward to next buffer: */ card->rx.b_index = QDIO_BUFNR(card->rx.b_index + 1); @@ -5843,9 +5840,16 @@ if (card->options.cq == QETH_CQ_ENABLED) qeth_cq_poll(card); - /* Exhausted the RX budget. Keep IRQ disabled, we get called again. */ - if (budget && work_done >= budget) - return work_done; + if (budget) { + struct qeth_rx *ctx = &card->rx; + + /* Process any substantial refill backlog: */ + ctx->bufs_refill -= qeth_rx_refill_queue(card, ctx->bufs_refill); + + /* Exhausted the RX budget. Keep IRQ disabled, we get called again. */ + if (work_done >= budget) + return work_done; + } if (napi_complete_done(napi, work_done) && qdio_start_irq(CARD_DDEV(card))) @@ -5866,26 +5870,65 @@ QDIO_OUTBUF_STATE_FLAG_PENDING)) { WARN_ON_ONCE(card->options.cq != QETH_CQ_ENABLED); - if (atomic_cmpxchg(&buffer->state, QETH_QDIO_BUF_PRIMED, - QETH_QDIO_BUF_PENDING) == - QETH_QDIO_BUF_PRIMED) - qeth_notify_skbs(queue, buffer, TX_NOTIFY_PENDING); - QETH_CARD_TEXT_(card, 5, "pel%u", bidx); - /* prepare the queue slot for re-use: */ - qeth_scrub_qdio_buffer(buffer->buffer, queue->max_elements); - if (qeth_init_qdio_out_buf(queue, bidx)) { - QETH_CARD_TEXT(card, 2, "outofbuf"); - qeth_schedule_recovery(card); - } + switch (atomic_cmpxchg(&buffer->state, + QETH_QDIO_BUF_PRIMED, + QETH_QDIO_BUF_PENDING)) { + case QETH_QDIO_BUF_PRIMED: + /* We have initial ownership, no QAOB (yet): */ + qeth_notify_skbs(queue, buffer, TX_NOTIFY_PENDING); - return; - } + /* Handle race with qeth_qdio_handle_aob(): */ + switch (atomic_xchg(&buffer->state, + QETH_QDIO_BUF_NEED_QAOB)) { + case QETH_QDIO_BUF_PENDING: + /* No concurrent QAOB notification. */ + + /* Prepare the queue slot for immediate re-use: */ + qeth_scrub_qdio_buffer(buffer->buffer, queue->max_elements); + if (qeth_init_qdio_out_buf(queue, bidx)) { + QETH_CARD_TEXT(card, 2, "outofbuf"); + qeth_schedule_recovery(card); + } - if (card->options.cq == QETH_CQ_ENABLED) + list_add(&buffer->list_entry, + &queue->pending_bufs); + /* Skip clearing the buffer: */ + return; + case QETH_QDIO_BUF_QAOB_OK: + qeth_notify_skbs(queue, buffer, + TX_NOTIFY_DELAYED_OK); + error = false; + break; + case QETH_QDIO_BUF_QAOB_ERROR: + qeth_notify_skbs(queue, buffer, + TX_NOTIFY_DELAYED_GENERALERROR); + error = true; + break; + default: + WARN_ON_ONCE(1); + } + + break; + case QETH_QDIO_BUF_QAOB_OK: + /* qeth_qdio_handle_aob() already received a QAOB: */ + qeth_notify_skbs(queue, buffer, TX_NOTIFY_OK); + error = false; + break; + case QETH_QDIO_BUF_QAOB_ERROR: + /* qeth_qdio_handle_aob() already received a QAOB: */ + qeth_notify_skbs(queue, buffer, TX_NOTIFY_GENERALERROR); + error = true; + break; + default: + WARN_ON_ONCE(1); + } + } else if (card->options.cq == QETH_CQ_ENABLED) { qeth_notify_skbs(queue, buffer, qeth_compute_cq_notification(sflags, 0)); + } + qeth_clear_output_buffer(queue, buffer, error, budget); } @@ -5906,6 +5949,8 @@ unsigned int bytes = 0; int completed; + qeth_tx_complete_pending_bufs(card, queue, false); + if (qeth_out_queue_is_empty(queue)) { napi_complete(napi); return 0; @@ -5938,7 +5983,6 @@ qeth_handle_send_error(card, buffer, error); qeth_iqd_tx_complete(queue, bidx, error, budget); - qeth_cleanup_handled_pending(queue, bidx, false); } netdev_tx_completed_queue(txq, packets, bytes); @@ -6986,9 +7030,7 @@ card->data.state = CH_STATE_UP; netif_tx_start_all_queues(dev); - napi_enable(&card->napi); local_bh_disable(); - napi_schedule(&card->napi); if (IS_IQD(card)) { struct qeth_qdio_out_q *queue; unsigned int i; @@ -7000,8 +7042,12 @@ napi_schedule(&queue->napi); } } + + napi_enable(&card->napi); + napi_schedule(&card->napi); /* kick-start the NAPI softirq: */ local_bh_enable(); + return 0; } EXPORT_SYMBOL_GPL(qeth_open); @@ -7011,6 +7057,11 @@ struct qeth_card *card = dev->ml_priv; QETH_CARD_TEXT(card, 4, "qethstop"); + + napi_disable(&card->napi); + cancel_delayed_work_sync(&card->buffer_reclaim_work); + qdio_stop_irq(CARD_DDEV(card)); + if (IS_IQD(card)) { struct qeth_qdio_out_q *queue; unsigned int i; @@ -7031,9 +7082,6 @@ netif_tx_disable(dev); } - napi_disable(&card->napi); - qdio_stop_irq(CARD_DDEV(card)); - return 0; } EXPORT_SYMBOL_GPL(qeth_stop); --- linux-5.8.0.orig/drivers/s390/net/qeth_l2_main.c +++ linux-5.8.0/drivers/s390/net/qeth_l2_main.c @@ -273,6 +273,17 @@ return qeth_l2_send_setdelvlan(card, vid, IPA_CMD_DELVLAN); } +static void qeth_l2_set_pnso_mode(struct qeth_card *card, + enum qeth_pnso_mode mode) +{ + spin_lock_irq(get_ccwdev_lock(CARD_RDEV(card))); + WRITE_ONCE(card->info.pnso_mode, mode); + spin_unlock_irq(get_ccwdev_lock(CARD_RDEV(card))); + + if (mode == QETH_PNSO_NONE) + drain_workqueue(card->event_wq); +} + static void qeth_l2_stop_card(struct qeth_card *card) { QETH_CARD_TEXT(card, 2, "stopcard"); @@ -285,13 +296,12 @@ if (card->state == CARD_STATE_SOFTSETUP) { qeth_clear_ipacmd_list(card); qeth_drain_output_queues(card); - cancel_delayed_work_sync(&card->buffer_reclaim_work); card->state = CARD_STATE_DOWN; } qeth_qdio_clear_card(card, 0); qeth_clear_working_pool_list(card); - flush_workqueue(card->event_wq); + qeth_l2_set_pnso_mode(card, QETH_PNSO_NONE); qeth_flush_local_addrs(card); card->info.promisc_mode = 0; } @@ -1111,12 +1121,6 @@ NULL }; - /* Role should not change by itself, but if it did, */ - /* information from the hardware is authoritative. */ - mutex_lock(&data->card->sbp_lock); - data->card->options.sbp.role = entry->role; - mutex_unlock(&data->card->sbp_lock); - snprintf(env_locrem, sizeof(env_locrem), "BRIDGEPORT=statechange"); snprintf(env_role, sizeof(env_role), "ROLE=%s", (entry->role == QETH_SBP_ROLE_NONE) ? "none" : @@ -1142,6 +1146,10 @@ int extrasize; QETH_CARD_TEXT(card, 2, "brstchng"); + if (qports->num_entries == 0) { + QETH_CARD_TEXT(card, 2, "BPempty"); + return; + } if (qports->entry_length != sizeof(struct qeth_sbp_port_entry)) { QETH_CARD_TEXT_(card, 2, "BPsz%04x", qports->entry_length); return; @@ -1161,19 +1169,34 @@ } struct qeth_addr_change_data { - struct work_struct worker; + struct delayed_work dwork; struct qeth_card *card; struct qeth_ipacmd_addr_change ac_event; }; static void qeth_addr_change_event_worker(struct work_struct *work) { - struct qeth_addr_change_data *data = - container_of(work, struct qeth_addr_change_data, worker); + struct delayed_work *dwork = to_delayed_work(work); + struct qeth_addr_change_data *data; + struct qeth_card *card; int i; + data = container_of(dwork, struct qeth_addr_change_data, dwork); + card = data->card; + QETH_CARD_TEXT(data->card, 4, "adrchgew"); + + if (READ_ONCE(card->info.pnso_mode) == QETH_PNSO_NONE) + goto free; + if (data->ac_event.lost_event_mask) { + /* Potential re-config in progress, try again later: */ + if (!mutex_trylock(&card->sbp_lock)) { + queue_delayed_work(card->event_wq, dwork, + msecs_to_jiffies(100)); + return; + } + dev_info(&data->card->gdev->dev, "Address change notification stopped on %s (%s)\n", data->card->dev->name, @@ -1182,8 +1205,9 @@ : (data->ac_event.lost_event_mask == 0x02) ? "Bridge port state change" : "Unknown reason"); - mutex_lock(&data->card->sbp_lock); + data->card->options.sbp.hostnotification = 0; + card->info.pnso_mode = QETH_PNSO_NONE; mutex_unlock(&data->card->sbp_lock); qeth_bridge_emit_host_event(data->card, anev_abort, 0, NULL, NULL); @@ -1197,6 +1221,8 @@ &entry->token, &entry->addr_lnid); } + +free: kfree(data); } @@ -1208,6 +1234,9 @@ struct qeth_addr_change_data *data; int extrasize; + if (card->info.pnso_mode == QETH_PNSO_NONE) + return; + QETH_CARD_TEXT(card, 4, "adrchgev"); if (cmd->hdr.return_code != 0x0000) { if (cmd->hdr.return_code == 0x0010) { @@ -1227,11 +1256,11 @@ QETH_CARD_TEXT(card, 2, "ACNalloc"); return; } - INIT_WORK(&data->worker, qeth_addr_change_event_worker); + INIT_DELAYED_WORK(&data->dwork, qeth_addr_change_event_worker); data->card = card; memcpy(&data->ac_event, hostevs, sizeof(struct qeth_ipacmd_addr_change) + extrasize); - queue_work(card->event_wq, &data->worker); + queue_delayed_work(card->event_wq, &data->dwork, 0); } /* SETBRIDGEPORT support; sending commands */ @@ -1552,9 +1581,14 @@ if (enable) { qeth_bridge_emit_host_event(card, anev_reset, 0, NULL, NULL); + qeth_l2_set_pnso_mode(card, QETH_PNSO_BRIDGEPORT); rc = qeth_l2_pnso(card, 1, qeth_bridgeport_an_set_cb, card); - } else + if (rc) + qeth_l2_set_pnso_mode(card, QETH_PNSO_NONE); + } else { rc = qeth_l2_pnso(card, 0, NULL, NULL); + qeth_l2_set_pnso_mode(card, QETH_PNSO_NONE); + } return rc; } --- linux-5.8.0.orig/drivers/s390/net/qeth_l2_sys.c +++ linux-5.8.0/drivers/s390/net/qeth_l2_sys.c @@ -157,6 +157,7 @@ rc = -EBUSY; else if (qeth_card_hw_is_reachable(card)) { rc = qeth_bridgeport_an_set(card, enable); + /* sbp_lock ensures ordering vs notifications-stopped events */ if (!rc) card->options.sbp.hostnotification = enable; } else --- linux-5.8.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-5.8.0/drivers/s390/net/qeth_l3_main.c @@ -1169,7 +1169,6 @@ qeth_l3_clear_ip_htable(card, 1); qeth_clear_ipacmd_list(card); qeth_drain_output_queues(card); - cancel_delayed_work_sync(&card->buffer_reclaim_work); card->state = CARD_STATE_DOWN; } @@ -1853,7 +1852,7 @@ struct net_device *dev, netdev_features_t features) { - if (qeth_get_ip_version(skb) != 4) + if (vlan_get_protocol(skb) != htons(ETH_P_IP)) features &= ~NETIF_F_HW_VLAN_CTAG_TX; return qeth_features_check(skb, dev, features); } --- linux-5.8.0.orig/drivers/s390/scsi/zfcp_fsf.c +++ linux-5.8.0/drivers/s390/scsi/zfcp_fsf.c @@ -434,7 +434,7 @@ return; } - del_timer(&req->timer); + del_timer_sync(&req->timer); zfcp_fsf_protstatus_eval(req); zfcp_fsf_fsfstatus_eval(req); req->handler(req); @@ -867,7 +867,7 @@ req->qdio_req.qdio_outb_usage = atomic_read(&qdio->req_q_free); req->issued = get_tod_clock(); if (zfcp_qdio_send(qdio, &req->qdio_req)) { - del_timer(&req->timer); + del_timer_sync(&req->timer); /* lookup request again, list might have changed */ zfcp_reqlist_find_rm(adapter->req_list, req_id); zfcp_erp_adapter_reopen(adapter, 0, "fsrs__1"); --- linux-5.8.0.orig/drivers/s390/virtio/virtio_ccw.c +++ linux-5.8.0/drivers/s390/virtio/virtio_ccw.c @@ -117,7 +117,7 @@ }; /* the highest virtio-ccw revision we support */ -#define VIRTIO_CCW_REV_MAX 1 +#define VIRTIO_CCW_REV_MAX 2 struct virtio_ccw_vq_info { struct virtqueue *vq; @@ -952,7 +952,7 @@ u8 old_status = vcdev->dma_area->status; struct ccw1 *ccw; - if (vcdev->revision < 1) + if (vcdev->revision < 2) return vcdev->dma_area->status; ccw = ccw_device_dma_zalloc(vcdev->cdev, sizeof(*ccw)); --- linux-5.8.0.orig/drivers/scsi/aacraid/commctrl.c +++ linux-5.8.0/drivers/scsi/aacraid/commctrl.c @@ -25,6 +25,7 @@ #include #include #include +#include #include /* ssleep prototype */ #include #include @@ -226,6 +227,12 @@ return status; } +struct compat_fib_ioctl { + u32 fibctx; + s32 wait; + compat_uptr_t fib; +}; + /** * next_getadapter_fib - get the next fib * @dev: adapter to use @@ -244,8 +251,19 @@ struct list_head * entry; unsigned long flags; - if(copy_from_user((void *)&f, arg, sizeof(struct fib_ioctl))) - return -EFAULT; + if (in_compat_syscall()) { + struct compat_fib_ioctl cf; + + if (copy_from_user(&cf, arg, sizeof(struct compat_fib_ioctl))) + return -EFAULT; + + f.fibctx = cf.fibctx; + f.wait = cf.wait; + f.fib = compat_ptr(cf.fib); + } else { + if (copy_from_user(&f, arg, sizeof(struct fib_ioctl))) + return -EFAULT; + } /* * Verify that the HANDLE passed in was a valid AdapterFibContext * --- linux-5.8.0.orig/drivers/scsi/aacraid/linit.c +++ linux-5.8.0/drivers/scsi/aacraid/linit.c @@ -1182,63 +1182,6 @@ return aac_do_ioctl(aac, cmd, (void __user *)arg); } -#ifdef CONFIG_COMPAT -static long aac_compat_do_ioctl(struct aac_dev *dev, unsigned cmd, unsigned long arg) -{ - long ret; - switch (cmd) { - case FSACTL_MINIPORT_REV_CHECK: - case FSACTL_SENDFIB: - case FSACTL_OPEN_GET_ADAPTER_FIB: - case FSACTL_CLOSE_GET_ADAPTER_FIB: - case FSACTL_SEND_RAW_SRB: - case FSACTL_GET_PCI_INFO: - case FSACTL_QUERY_DISK: - case FSACTL_DELETE_DISK: - case FSACTL_FORCE_DELETE_DISK: - case FSACTL_GET_CONTAINERS: - case FSACTL_SEND_LARGE_FIB: - ret = aac_do_ioctl(dev, cmd, (void __user *)arg); - break; - - case FSACTL_GET_NEXT_ADAPTER_FIB: { - struct fib_ioctl __user *f; - - f = compat_alloc_user_space(sizeof(*f)); - ret = 0; - if (clear_user(f, sizeof(*f))) - ret = -EFAULT; - if (copy_in_user(f, (void __user *)arg, sizeof(struct fib_ioctl) - sizeof(u32))) - ret = -EFAULT; - if (!ret) - ret = aac_do_ioctl(dev, cmd, f); - break; - } - - default: - ret = -ENOIOCTLCMD; - break; - } - return ret; -} - -static int aac_compat_ioctl(struct scsi_device *sdev, unsigned int cmd, - void __user *arg) -{ - struct aac_dev *dev = (struct aac_dev *)sdev->host->hostdata; - if (!capable(CAP_SYS_RAWIO)) - return -EPERM; - return aac_compat_do_ioctl(dev, cmd, (unsigned long)arg); -} - -static long aac_compat_cfg_ioctl(struct file *file, unsigned cmd, unsigned long arg) -{ - if (!capable(CAP_SYS_RAWIO)) - return -EPERM; - return aac_compat_do_ioctl(file->private_data, cmd, arg); -} -#endif - static ssize_t aac_show_model(struct device *device, struct device_attribute *attr, char *buf) { @@ -1523,7 +1466,7 @@ .owner = THIS_MODULE, .unlocked_ioctl = aac_cfg_ioctl, #ifdef CONFIG_COMPAT - .compat_ioctl = aac_compat_cfg_ioctl, + .compat_ioctl = aac_cfg_ioctl, #endif .open = aac_cfg_open, .llseek = noop_llseek, @@ -1536,7 +1479,7 @@ .info = aac_info, .ioctl = aac_ioctl, #ifdef CONFIG_COMPAT - .compat_ioctl = aac_compat_ioctl, + .compat_ioctl = aac_ioctl, #endif .queuecommand = aac_queuecommand, .bios_param = aac_biosparm, --- linux-5.8.0.orig/drivers/scsi/arm/cumana_2.c +++ linux-5.8.0/drivers/scsi/arm/cumana_2.c @@ -450,7 +450,7 @@ if (info->info.scsi.dma != NO_DMA) free_dma(info->info.scsi.dma); - free_irq(ec->irq, host); + free_irq(ec->irq, info); out_release: fas216_release(host); --- linux-5.8.0.orig/drivers/scsi/arm/eesox.c +++ linux-5.8.0/drivers/scsi/arm/eesox.c @@ -571,7 +571,7 @@ if (info->info.scsi.dma != NO_DMA) free_dma(info->info.scsi.dma); - free_irq(ec->irq, host); + free_irq(ec->irq, info); out_remove: fas216_remove(host); --- linux-5.8.0.orig/drivers/scsi/arm/powertec.c +++ linux-5.8.0/drivers/scsi/arm/powertec.c @@ -378,7 +378,7 @@ if (info->info.scsi.dma != NO_DMA) free_dma(info->info.scsi.dma); - free_irq(ec->irq, host); + free_irq(ec->irq, info); out_release: fas216_release(host); --- linux-5.8.0.orig/drivers/scsi/bfa/bfad.c +++ linux-5.8.0/drivers/scsi/bfa/bfad.c @@ -749,6 +749,7 @@ if (bfad->pci_bar0_kva == NULL) { printk(KERN_ERR "Fail to map bar0\n"); + rc = -ENODEV; goto out_release_region; } --- linux-5.8.0.orig/drivers/scsi/bnx2fc/Kconfig +++ linux-5.8.0/drivers/scsi/bnx2fc/Kconfig @@ -5,6 +5,7 @@ depends on (IPV6 || IPV6=n) depends on LIBFC depends on LIBFCOE + depends on MMU select NETDEVICES select ETHERNET select NET_VENDOR_BROADCOM --- linux-5.8.0.orig/drivers/scsi/bnx2i/Kconfig +++ linux-5.8.0/drivers/scsi/bnx2i/Kconfig @@ -4,6 +4,7 @@ depends on NET depends on PCI depends on (IPV6 || IPV6=n) + depends on MMU select SCSI_ISCSI_ATTRS select NETDEVICES select ETHERNET --- linux-5.8.0.orig/drivers/scsi/csiostor/csio_hw.c +++ linux-5.8.0/drivers/scsi/csiostor/csio_hw.c @@ -2384,7 +2384,7 @@ FW_HDR_FW_VER_MICRO_G(c), FW_HDR_FW_VER_BUILD_G(c), FW_HDR_FW_VER_MAJOR_G(k), FW_HDR_FW_VER_MINOR_G(k), FW_HDR_FW_VER_MICRO_G(k), FW_HDR_FW_VER_BUILD_G(k)); - ret = EINVAL; + ret = -EINVAL; goto bye; } --- linux-5.8.0.orig/drivers/scsi/cxgbi/cxgb4i/Kconfig +++ linux-5.8.0/drivers/scsi/cxgbi/cxgb4i/Kconfig @@ -4,6 +4,7 @@ depends on PCI && INET && (IPV6 || IPV6=n) depends on THERMAL || !THERMAL depends on ETHERNET + depends on TLS || TLS=n select NET_VENDOR_CHELSIO select CHELSIO_T4 select CHELSIO_LIB --- linux-5.8.0.orig/drivers/scsi/device_handler/scsi_dh_alua.c +++ linux-5.8.0/drivers/scsi/device_handler/scsi_dh_alua.c @@ -658,8 +658,8 @@ rcu_read_lock(); list_for_each_entry_rcu(h, &tmp_pg->dh_list, node) { - /* h->sdev should always be valid */ - BUG_ON(!h->sdev); + if (!h->sdev) + continue; h->sdev->access_state = desc[0]; } rcu_read_unlock(); @@ -705,7 +705,8 @@ pg->expiry = 0; rcu_read_lock(); list_for_each_entry_rcu(h, &pg->dh_list, node) { - BUG_ON(!h->sdev); + if (!h->sdev) + continue; h->sdev->access_state = (pg->state & SCSI_ACCESS_STATE_MASK); if (pg->pref) @@ -1147,7 +1148,6 @@ spin_lock(&h->pg_lock); pg = rcu_dereference_protected(h->pg, lockdep_is_held(&h->pg_lock)); rcu_assign_pointer(h->pg, NULL); - h->sdev = NULL; spin_unlock(&h->pg_lock); if (pg) { spin_lock_irq(&pg->lock); @@ -1156,6 +1156,7 @@ kref_put(&pg->kref, release_port_group); } sdev->handler_data = NULL; + synchronize_rcu(); kfree(h); } --- linux-5.8.0.orig/drivers/scsi/fcoe/fcoe_ctlr.c +++ linux-5.8.0/drivers/scsi/fcoe/fcoe_ctlr.c @@ -255,9 +255,9 @@ WARN_ON(!fcf_dev); new->fcf_dev = NULL; fcoe_fcf_device_delete(fcf_dev); - kfree(new); mutex_unlock(&cdev->lock); } + kfree(new); } /** --- linux-5.8.0.orig/drivers/scsi/fnic/fnic_main.c +++ linux-5.8.0/drivers/scsi/fnic/fnic_main.c @@ -741,6 +741,7 @@ for (i = 0; i < FNIC_IO_LOCKS; i++) spin_lock_init(&fnic->io_req_lock[i]); + err = -ENOMEM; fnic->io_req_pool = mempool_create_slab_pool(2, fnic_io_req_cache); if (!fnic->io_req_pool) goto err_out_free_resources; --- linux-5.8.0.orig/drivers/scsi/fnic/vnic_dev.c +++ linux-5.8.0/drivers/scsi/fnic/vnic_dev.c @@ -444,7 +444,8 @@ fetch_index = ioread32(&vdev->devcmd2->wq.ctrl->fetch_index); if (fetch_index == 0xFFFFFFFF) { /* check for hardware gone */ pr_err("error in devcmd2 init"); - return -ENODEV; + err = -ENODEV; + goto err_free_wq; } /* @@ -460,7 +461,7 @@ err = vnic_dev_alloc_desc_ring(vdev, &vdev->devcmd2->results_ring, DEVCMD2_RING_SIZE, DEVCMD2_DESC_SIZE); if (err) - goto err_free_wq; + goto err_disable_wq; vdev->devcmd2->result = (struct devcmd2_result *) vdev->devcmd2->results_ring.descs; @@ -481,8 +482,9 @@ err_free_desc_ring: vnic_dev_free_desc_ring(vdev, &vdev->devcmd2->results_ring); -err_free_wq: +err_disable_wq: vnic_wq_disable(&vdev->devcmd2->wq); +err_free_wq: vnic_wq_free(&vdev->devcmd2->wq); err_free_devcmd2: kfree(vdev->devcmd2); --- linux-5.8.0.orig/drivers/scsi/hpsa.c +++ linux-5.8.0/drivers/scsi/hpsa.c @@ -8835,7 +8835,7 @@ /* hook into SCSI subsystem */ rc = hpsa_scsi_add_host(h); if (rc) - goto clean7; /* perf, sg, cmd, irq, shost, pci, lu, aer/h */ + goto clean8; /* lastlogicals, perf, sg, cmd, irq, shost, pci, lu, aer/h */ /* Monitor the controller for firmware lockups */ h->heartbeat_sample_interval = HEARTBEAT_SAMPLE_INTERVAL; @@ -8850,6 +8850,8 @@ HPSA_EVENT_MONITOR_INTERVAL); return 0; +clean8: /* lastlogicals, perf, sg, cmd, irq, shost, pci, lu, aer/h */ + kfree(h->lastlogicals); clean7: /* perf, sg, cmd, irq, shost, pci, lu, aer/h */ hpsa_free_performant_mode(h); h->access.set_intr_mask(h, HPSA_INTR_OFF); --- linux-5.8.0.orig/drivers/scsi/ibmvscsi/ibmvfc.c +++ linux-5.8.0/drivers/scsi/ibmvscsi/ibmvfc.c @@ -2917,8 +2917,10 @@ unsigned long flags = 0; spin_lock_irqsave(shost->host_lock, flags); - if (sdev->type == TYPE_DISK) + if (sdev->type == TYPE_DISK) { sdev->allow_restart = 1; + blk_queue_rq_timeout(sdev->request_queue, 120 * HZ); + } spin_unlock_irqrestore(shost->host_lock, flags); return 0; } @@ -4928,6 +4930,7 @@ if (IS_ERR(vhost->work_thread)) { dev_err(dev, "Couldn't create kernel thread: %ld\n", PTR_ERR(vhost->work_thread)); + rc = PTR_ERR(vhost->work_thread); goto free_host_mem; } --- linux-5.8.0.orig/drivers/scsi/ibmvscsi/ibmvscsi.c +++ linux-5.8.0/drivers/scsi/ibmvscsi/ibmvscsi.c @@ -807,13 +807,29 @@ } /** + * ibmvscsi_set_request_limit - Set the adapter request_limit in response to + * an adapter failure, reset, or SRP Login. Done under host lock to prevent + * race with SCSI command submission. + * @hostdata: adapter to adjust + * @limit: new request limit + */ +static void ibmvscsi_set_request_limit(struct ibmvscsi_host_data *hostdata, int limit) +{ + unsigned long flags; + + spin_lock_irqsave(hostdata->host->host_lock, flags); + atomic_set(&hostdata->request_limit, limit); + spin_unlock_irqrestore(hostdata->host->host_lock, flags); +} + +/** * ibmvscsi_reset_host - Reset the connection to the server * @hostdata: struct ibmvscsi_host_data to reset */ static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata) { scsi_block_requests(hostdata->host); - atomic_set(&hostdata->request_limit, 0); + ibmvscsi_set_request_limit(hostdata, 0); purge_requests(hostdata, DID_ERROR); hostdata->action = IBMVSCSI_HOST_ACTION_RESET; @@ -1146,13 +1162,13 @@ dev_info(hostdata->dev, "SRP_LOGIN_REJ reason %u\n", evt_struct->xfer_iu->srp.login_rej.reason); /* Login failed. */ - atomic_set(&hostdata->request_limit, -1); + ibmvscsi_set_request_limit(hostdata, -1); return; default: dev_err(hostdata->dev, "Invalid login response typecode 0x%02x!\n", evt_struct->xfer_iu->srp.login_rsp.opcode); /* Login failed. */ - atomic_set(&hostdata->request_limit, -1); + ibmvscsi_set_request_limit(hostdata, -1); return; } @@ -1163,7 +1179,7 @@ * This value is set rather than added to request_limit because * request_limit could have been set to -1 by this client. */ - atomic_set(&hostdata->request_limit, + ibmvscsi_set_request_limit(hostdata, be32_to_cpu(evt_struct->xfer_iu->srp.login_rsp.req_lim_delta)); /* If we had any pending I/Os, kick them */ @@ -1195,13 +1211,13 @@ login->req_buf_fmt = cpu_to_be16(SRP_BUF_FORMAT_DIRECT | SRP_BUF_FORMAT_INDIRECT); - spin_lock_irqsave(hostdata->host->host_lock, flags); /* Start out with a request limit of 0, since this is negotiated in * the login request we are just sending and login requests always * get sent by the driver regardless of request_limit. */ - atomic_set(&hostdata->request_limit, 0); + ibmvscsi_set_request_limit(hostdata, 0); + spin_lock_irqsave(hostdata->host->host_lock, flags); rc = ibmvscsi_send_srp_event(evt_struct, hostdata, login_timeout * 2); spin_unlock_irqrestore(hostdata->host->host_lock, flags); dev_info(hostdata->dev, "sent SRP login\n"); @@ -1781,7 +1797,7 @@ return; case VIOSRP_CRQ_XPORT_EVENT: /* Hypervisor telling us the connection is closed */ scsi_block_requests(hostdata->host); - atomic_set(&hostdata->request_limit, 0); + ibmvscsi_set_request_limit(hostdata, 0); if (crq->format == 0x06) { /* We need to re-setup the interpartition connection */ dev_info(hostdata->dev, "Re-enabling adapter!\n"); @@ -2137,12 +2153,12 @@ } hostdata->action = IBMVSCSI_HOST_ACTION_NONE; + spin_unlock_irqrestore(hostdata->host->host_lock, flags); if (rc) { - atomic_set(&hostdata->request_limit, -1); + ibmvscsi_set_request_limit(hostdata, -1); dev_err(hostdata->dev, "error after %s\n", action); } - spin_unlock_irqrestore(hostdata->host->host_lock, flags); scsi_unblock_requests(hostdata->host); } @@ -2226,7 +2242,7 @@ init_waitqueue_head(&hostdata->work_wait_q); hostdata->host = host; hostdata->dev = dev; - atomic_set(&hostdata->request_limit, -1); + ibmvscsi_set_request_limit(hostdata, -1); hostdata->host->max_sectors = IBMVSCSI_MAX_SECTORS_DEFAULT; if (map_persist_bufs(hostdata)) { --- linux-5.8.0.orig/drivers/scsi/iscsi_tcp.c +++ linux-5.8.0/drivers/scsi/iscsi_tcp.c @@ -736,6 +736,7 @@ struct iscsi_tcp_conn *tcp_conn = conn->dd_data; struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data; struct sockaddr_in6 addr; + struct socket *sock; int rc; switch(param) { @@ -747,13 +748,17 @@ spin_unlock_bh(&conn->session->frwd_lock); return -ENOTCONN; } + sock = tcp_sw_conn->sock; + sock_hold(sock->sk); + spin_unlock_bh(&conn->session->frwd_lock); + if (param == ISCSI_PARAM_LOCAL_PORT) - rc = kernel_getsockname(tcp_sw_conn->sock, + rc = kernel_getsockname(sock, (struct sockaddr *)&addr); else - rc = kernel_getpeername(tcp_sw_conn->sock, + rc = kernel_getpeername(sock, (struct sockaddr *)&addr); - spin_unlock_bh(&conn->session->frwd_lock); + sock_put(sock->sk); if (rc < 0) return rc; @@ -775,6 +780,7 @@ struct iscsi_tcp_conn *tcp_conn; struct iscsi_sw_tcp_conn *tcp_sw_conn; struct sockaddr_in6 addr; + struct socket *sock; int rc; switch (param) { @@ -789,16 +795,18 @@ return -ENOTCONN; } tcp_conn = conn->dd_data; - tcp_sw_conn = tcp_conn->dd_data; - if (!tcp_sw_conn->sock) { + sock = tcp_sw_conn->sock; + if (!sock) { spin_unlock_bh(&session->frwd_lock); return -ENOTCONN; } + sock_hold(sock->sk); + spin_unlock_bh(&session->frwd_lock); - rc = kernel_getsockname(tcp_sw_conn->sock, + rc = kernel_getsockname(sock, (struct sockaddr *)&addr); - spin_unlock_bh(&session->frwd_lock); + sock_put(sock->sk); if (rc < 0) return rc; --- linux-5.8.0.orig/drivers/scsi/libfc/fc_disc.c +++ linux-5.8.0/drivers/scsi/libfc/fc_disc.c @@ -581,8 +581,12 @@ if (PTR_ERR(fp) == -FC_EX_CLOSED) goto out; - if (IS_ERR(fp)) - goto redisc; + if (IS_ERR(fp)) { + mutex_lock(&disc->disc_mutex); + fc_disc_restart(disc); + mutex_unlock(&disc->disc_mutex); + goto out; + } cp = fc_frame_payload_get(fp, sizeof(*cp)); if (!cp) @@ -609,7 +613,7 @@ new_rdata->disc_id = disc->disc_id; fc_rport_login(new_rdata); } - goto out; + goto free_fp; } rdata->disc_id = disc->disc_id; mutex_unlock(&rdata->rp_mutex); @@ -626,10 +630,10 @@ fc_disc_restart(disc); mutex_unlock(&disc->disc_mutex); } +free_fp: + fc_frame_free(fp); out: kref_put(&rdata->kref, fc_rport_destroy); - if (!IS_ERR(fp)) - fc_frame_free(fp); } /** --- linux-5.8.0.orig/drivers/scsi/libfc/fc_exch.c +++ linux-5.8.0/drivers/scsi/libfc/fc_exch.c @@ -1619,8 +1619,13 @@ rc = fc_exch_done_locked(ep); WARN_ON(fc_seq_exch(sp) != ep); spin_unlock_bh(&ep->ex_lock); - if (!rc) + if (!rc) { fc_exch_delete(ep); + } else { + FC_EXCH_DBG(ep, "ep is completed already," + "hence skip calling the resp\n"); + goto skip_resp; + } } /* @@ -1639,6 +1644,7 @@ if (!fc_invoke_resp(ep, sp, fp)) fc_frame_free(fp); +skip_resp: fc_exch_release(ep); return; rel: @@ -1895,10 +1901,16 @@ fc_exch_hold(ep); - if (!rc) + if (!rc) { fc_exch_delete(ep); + } else { + FC_EXCH_DBG(ep, "ep is completed already," + "hence skip calling the resp\n"); + goto skip_resp; + } fc_invoke_resp(ep, sp, ERR_PTR(-FC_EX_CLOSED)); +skip_resp: fc_seq_set_resp(sp, NULL, ep->arg); fc_exch_release(ep); } --- linux-5.8.0.orig/drivers/scsi/libiscsi.c +++ linux-5.8.0/drivers/scsi/libiscsi.c @@ -533,8 +533,8 @@ if (conn->task == task) conn->task = NULL; - if (conn->ping_task == task) - conn->ping_task = NULL; + if (READ_ONCE(conn->ping_task) == task) + WRITE_ONCE(conn->ping_task, NULL); /* release get from queueing */ __iscsi_put_task(task); @@ -738,6 +738,9 @@ task->conn->session->age); } + if (unlikely(READ_ONCE(conn->ping_task) == INVALID_SCSI_TASK)) + WRITE_ONCE(conn->ping_task, task); + if (!ihost->workq) { if (iscsi_prep_mgmt_task(conn, task)) goto free_task; @@ -941,8 +944,11 @@ struct iscsi_nopout hdr; struct iscsi_task *task; - if (!rhdr && conn->ping_task) - return -EINVAL; + if (!rhdr) { + if (READ_ONCE(conn->ping_task)) + return -EINVAL; + WRITE_ONCE(conn->ping_task, INVALID_SCSI_TASK); + } memset(&hdr, 0, sizeof(struct iscsi_nopout)); hdr.opcode = ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE; @@ -957,11 +963,12 @@ task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0); if (!task) { + if (!rhdr) + WRITE_ONCE(conn->ping_task, NULL); iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n"); return -EIO; } else if (!rhdr) { /* only track our nops */ - conn->ping_task = task; conn->last_ping = jiffies; } @@ -984,7 +991,7 @@ struct iscsi_conn *conn = task->conn; int rc = 0; - if (conn->ping_task != task) { + if (READ_ONCE(conn->ping_task) != task) { /* * If this is not in response to one of our * nops then it must be from userspace. @@ -1525,14 +1532,9 @@ } rc = iscsi_prep_scsi_cmd_pdu(conn->task); if (rc) { - if (rc == -ENOMEM || rc == -EACCES) { - spin_lock_bh(&conn->taskqueuelock); - list_add_tail(&conn->task->running, - &conn->cmdqueue); - conn->task = NULL; - spin_unlock_bh(&conn->taskqueuelock); - goto done; - } else + if (rc == -ENOMEM || rc == -EACCES) + fail_scsi_task(conn->task, DID_IMM_RETRY); + else fail_scsi_task(conn->task, DID_ABORT); spin_lock_bh(&conn->taskqueuelock); continue; @@ -1923,7 +1925,7 @@ */ static int iscsi_has_ping_timed_out(struct iscsi_conn *conn) { - if (conn->ping_task && + if (READ_ONCE(conn->ping_task) && time_before_eq(conn->last_recv + (conn->recv_timeout * HZ) + (conn->ping_timeout * HZ), jiffies)) return 1; @@ -2058,7 +2060,7 @@ * Checking the transport already or nop from a cmd timeout still * running */ - if (conn->ping_task) { + if (READ_ONCE(conn->ping_task)) { task->have_checked_conn = true; rc = BLK_EH_RESET_TIMER; goto done; @@ -3331,125 +3333,125 @@ switch(param) { case ISCSI_PARAM_FAST_ABORT: - len = sprintf(buf, "%d\n", session->fast_abort); + len = sysfs_emit(buf, "%d\n", session->fast_abort); break; case ISCSI_PARAM_ABORT_TMO: - len = sprintf(buf, "%d\n", session->abort_timeout); + len = sysfs_emit(buf, "%d\n", session->abort_timeout); break; case ISCSI_PARAM_LU_RESET_TMO: - len = sprintf(buf, "%d\n", session->lu_reset_timeout); + len = sysfs_emit(buf, "%d\n", session->lu_reset_timeout); break; case ISCSI_PARAM_TGT_RESET_TMO: - len = sprintf(buf, "%d\n", session->tgt_reset_timeout); + len = sysfs_emit(buf, "%d\n", session->tgt_reset_timeout); break; case ISCSI_PARAM_INITIAL_R2T_EN: - len = sprintf(buf, "%d\n", session->initial_r2t_en); + len = sysfs_emit(buf, "%d\n", session->initial_r2t_en); break; case ISCSI_PARAM_MAX_R2T: - len = sprintf(buf, "%hu\n", session->max_r2t); + len = sysfs_emit(buf, "%hu\n", session->max_r2t); break; case ISCSI_PARAM_IMM_DATA_EN: - len = sprintf(buf, "%d\n", session->imm_data_en); + len = sysfs_emit(buf, "%d\n", session->imm_data_en); break; case ISCSI_PARAM_FIRST_BURST: - len = sprintf(buf, "%u\n", session->first_burst); + len = sysfs_emit(buf, "%u\n", session->first_burst); break; case ISCSI_PARAM_MAX_BURST: - len = sprintf(buf, "%u\n", session->max_burst); + len = sysfs_emit(buf, "%u\n", session->max_burst); break; case ISCSI_PARAM_PDU_INORDER_EN: - len = sprintf(buf, "%d\n", session->pdu_inorder_en); + len = sysfs_emit(buf, "%d\n", session->pdu_inorder_en); break; case ISCSI_PARAM_DATASEQ_INORDER_EN: - len = sprintf(buf, "%d\n", session->dataseq_inorder_en); + len = sysfs_emit(buf, "%d\n", session->dataseq_inorder_en); break; case ISCSI_PARAM_DEF_TASKMGMT_TMO: - len = sprintf(buf, "%d\n", session->def_taskmgmt_tmo); + len = sysfs_emit(buf, "%d\n", session->def_taskmgmt_tmo); break; case ISCSI_PARAM_ERL: - len = sprintf(buf, "%d\n", session->erl); + len = sysfs_emit(buf, "%d\n", session->erl); break; case ISCSI_PARAM_TARGET_NAME: - len = sprintf(buf, "%s\n", session->targetname); + len = sysfs_emit(buf, "%s\n", session->targetname); break; case ISCSI_PARAM_TARGET_ALIAS: - len = sprintf(buf, "%s\n", session->targetalias); + len = sysfs_emit(buf, "%s\n", session->targetalias); break; case ISCSI_PARAM_TPGT: - len = sprintf(buf, "%d\n", session->tpgt); + len = sysfs_emit(buf, "%d\n", session->tpgt); break; case ISCSI_PARAM_USERNAME: - len = sprintf(buf, "%s\n", session->username); + len = sysfs_emit(buf, "%s\n", session->username); break; case ISCSI_PARAM_USERNAME_IN: - len = sprintf(buf, "%s\n", session->username_in); + len = sysfs_emit(buf, "%s\n", session->username_in); break; case ISCSI_PARAM_PASSWORD: - len = sprintf(buf, "%s\n", session->password); + len = sysfs_emit(buf, "%s\n", session->password); break; case ISCSI_PARAM_PASSWORD_IN: - len = sprintf(buf, "%s\n", session->password_in); + len = sysfs_emit(buf, "%s\n", session->password_in); break; case ISCSI_PARAM_IFACE_NAME: - len = sprintf(buf, "%s\n", session->ifacename); + len = sysfs_emit(buf, "%s\n", session->ifacename); break; case ISCSI_PARAM_INITIATOR_NAME: - len = sprintf(buf, "%s\n", session->initiatorname); + len = sysfs_emit(buf, "%s\n", session->initiatorname); break; case ISCSI_PARAM_BOOT_ROOT: - len = sprintf(buf, "%s\n", session->boot_root); + len = sysfs_emit(buf, "%s\n", session->boot_root); break; case ISCSI_PARAM_BOOT_NIC: - len = sprintf(buf, "%s\n", session->boot_nic); + len = sysfs_emit(buf, "%s\n", session->boot_nic); break; case ISCSI_PARAM_BOOT_TARGET: - len = sprintf(buf, "%s\n", session->boot_target); + len = sysfs_emit(buf, "%s\n", session->boot_target); break; case ISCSI_PARAM_AUTO_SND_TGT_DISABLE: - len = sprintf(buf, "%u\n", session->auto_snd_tgt_disable); + len = sysfs_emit(buf, "%u\n", session->auto_snd_tgt_disable); break; case ISCSI_PARAM_DISCOVERY_SESS: - len = sprintf(buf, "%u\n", session->discovery_sess); + len = sysfs_emit(buf, "%u\n", session->discovery_sess); break; case ISCSI_PARAM_PORTAL_TYPE: - len = sprintf(buf, "%s\n", session->portal_type); + len = sysfs_emit(buf, "%s\n", session->portal_type); break; case ISCSI_PARAM_CHAP_AUTH_EN: - len = sprintf(buf, "%u\n", session->chap_auth_en); + len = sysfs_emit(buf, "%u\n", session->chap_auth_en); break; case ISCSI_PARAM_DISCOVERY_LOGOUT_EN: - len = sprintf(buf, "%u\n", session->discovery_logout_en); + len = sysfs_emit(buf, "%u\n", session->discovery_logout_en); break; case ISCSI_PARAM_BIDI_CHAP_EN: - len = sprintf(buf, "%u\n", session->bidi_chap_en); + len = sysfs_emit(buf, "%u\n", session->bidi_chap_en); break; case ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL: - len = sprintf(buf, "%u\n", session->discovery_auth_optional); + len = sysfs_emit(buf, "%u\n", session->discovery_auth_optional); break; case ISCSI_PARAM_DEF_TIME2WAIT: - len = sprintf(buf, "%d\n", session->time2wait); + len = sysfs_emit(buf, "%d\n", session->time2wait); break; case ISCSI_PARAM_DEF_TIME2RETAIN: - len = sprintf(buf, "%d\n", session->time2retain); + len = sysfs_emit(buf, "%d\n", session->time2retain); break; case ISCSI_PARAM_TSID: - len = sprintf(buf, "%u\n", session->tsid); + len = sysfs_emit(buf, "%u\n", session->tsid); break; case ISCSI_PARAM_ISID: - len = sprintf(buf, "%02x%02x%02x%02x%02x%02x\n", + len = sysfs_emit(buf, "%02x%02x%02x%02x%02x%02x\n", session->isid[0], session->isid[1], session->isid[2], session->isid[3], session->isid[4], session->isid[5]); break; case ISCSI_PARAM_DISCOVERY_PARENT_IDX: - len = sprintf(buf, "%u\n", session->discovery_parent_idx); + len = sysfs_emit(buf, "%u\n", session->discovery_parent_idx); break; case ISCSI_PARAM_DISCOVERY_PARENT_TYPE: if (session->discovery_parent_type) - len = sprintf(buf, "%s\n", + len = sysfs_emit(buf, "%s\n", session->discovery_parent_type); else - len = sprintf(buf, "\n"); + len = sysfs_emit(buf, "\n"); break; default: return -ENOSYS; @@ -3481,16 +3483,16 @@ case ISCSI_PARAM_CONN_ADDRESS: case ISCSI_HOST_PARAM_IPADDRESS: if (sin) - len = sprintf(buf, "%pI4\n", &sin->sin_addr.s_addr); + len = sysfs_emit(buf, "%pI4\n", &sin->sin_addr.s_addr); else - len = sprintf(buf, "%pI6\n", &sin6->sin6_addr); + len = sysfs_emit(buf, "%pI6\n", &sin6->sin6_addr); break; case ISCSI_PARAM_CONN_PORT: case ISCSI_PARAM_LOCAL_PORT: if (sin) - len = sprintf(buf, "%hu\n", be16_to_cpu(sin->sin_port)); + len = sysfs_emit(buf, "%hu\n", be16_to_cpu(sin->sin_port)); else - len = sprintf(buf, "%hu\n", + len = sysfs_emit(buf, "%hu\n", be16_to_cpu(sin6->sin6_port)); break; default: @@ -3509,88 +3511,88 @@ switch(param) { case ISCSI_PARAM_PING_TMO: - len = sprintf(buf, "%u\n", conn->ping_timeout); + len = sysfs_emit(buf, "%u\n", conn->ping_timeout); break; case ISCSI_PARAM_RECV_TMO: - len = sprintf(buf, "%u\n", conn->recv_timeout); + len = sysfs_emit(buf, "%u\n", conn->recv_timeout); break; case ISCSI_PARAM_MAX_RECV_DLENGTH: - len = sprintf(buf, "%u\n", conn->max_recv_dlength); + len = sysfs_emit(buf, "%u\n", conn->max_recv_dlength); break; case ISCSI_PARAM_MAX_XMIT_DLENGTH: - len = sprintf(buf, "%u\n", conn->max_xmit_dlength); + len = sysfs_emit(buf, "%u\n", conn->max_xmit_dlength); break; case ISCSI_PARAM_HDRDGST_EN: - len = sprintf(buf, "%d\n", conn->hdrdgst_en); + len = sysfs_emit(buf, "%d\n", conn->hdrdgst_en); break; case ISCSI_PARAM_DATADGST_EN: - len = sprintf(buf, "%d\n", conn->datadgst_en); + len = sysfs_emit(buf, "%d\n", conn->datadgst_en); break; case ISCSI_PARAM_IFMARKER_EN: - len = sprintf(buf, "%d\n", conn->ifmarker_en); + len = sysfs_emit(buf, "%d\n", conn->ifmarker_en); break; case ISCSI_PARAM_OFMARKER_EN: - len = sprintf(buf, "%d\n", conn->ofmarker_en); + len = sysfs_emit(buf, "%d\n", conn->ofmarker_en); break; case ISCSI_PARAM_EXP_STATSN: - len = sprintf(buf, "%u\n", conn->exp_statsn); + len = sysfs_emit(buf, "%u\n", conn->exp_statsn); break; case ISCSI_PARAM_PERSISTENT_PORT: - len = sprintf(buf, "%d\n", conn->persistent_port); + len = sysfs_emit(buf, "%d\n", conn->persistent_port); break; case ISCSI_PARAM_PERSISTENT_ADDRESS: - len = sprintf(buf, "%s\n", conn->persistent_address); + len = sysfs_emit(buf, "%s\n", conn->persistent_address); break; case ISCSI_PARAM_STATSN: - len = sprintf(buf, "%u\n", conn->statsn); + len = sysfs_emit(buf, "%u\n", conn->statsn); break; case ISCSI_PARAM_MAX_SEGMENT_SIZE: - len = sprintf(buf, "%u\n", conn->max_segment_size); + len = sysfs_emit(buf, "%u\n", conn->max_segment_size); break; case ISCSI_PARAM_KEEPALIVE_TMO: - len = sprintf(buf, "%u\n", conn->keepalive_tmo); + len = sysfs_emit(buf, "%u\n", conn->keepalive_tmo); break; case ISCSI_PARAM_LOCAL_PORT: - len = sprintf(buf, "%u\n", conn->local_port); + len = sysfs_emit(buf, "%u\n", conn->local_port); break; case ISCSI_PARAM_TCP_TIMESTAMP_STAT: - len = sprintf(buf, "%u\n", conn->tcp_timestamp_stat); + len = sysfs_emit(buf, "%u\n", conn->tcp_timestamp_stat); break; case ISCSI_PARAM_TCP_NAGLE_DISABLE: - len = sprintf(buf, "%u\n", conn->tcp_nagle_disable); + len = sysfs_emit(buf, "%u\n", conn->tcp_nagle_disable); break; case ISCSI_PARAM_TCP_WSF_DISABLE: - len = sprintf(buf, "%u\n", conn->tcp_wsf_disable); + len = sysfs_emit(buf, "%u\n", conn->tcp_wsf_disable); break; case ISCSI_PARAM_TCP_TIMER_SCALE: - len = sprintf(buf, "%u\n", conn->tcp_timer_scale); + len = sysfs_emit(buf, "%u\n", conn->tcp_timer_scale); break; case ISCSI_PARAM_TCP_TIMESTAMP_EN: - len = sprintf(buf, "%u\n", conn->tcp_timestamp_en); + len = sysfs_emit(buf, "%u\n", conn->tcp_timestamp_en); break; case ISCSI_PARAM_IP_FRAGMENT_DISABLE: - len = sprintf(buf, "%u\n", conn->fragment_disable); + len = sysfs_emit(buf, "%u\n", conn->fragment_disable); break; case ISCSI_PARAM_IPV4_TOS: - len = sprintf(buf, "%u\n", conn->ipv4_tos); + len = sysfs_emit(buf, "%u\n", conn->ipv4_tos); break; case ISCSI_PARAM_IPV6_TC: - len = sprintf(buf, "%u\n", conn->ipv6_traffic_class); + len = sysfs_emit(buf, "%u\n", conn->ipv6_traffic_class); break; case ISCSI_PARAM_IPV6_FLOW_LABEL: - len = sprintf(buf, "%u\n", conn->ipv6_flow_label); + len = sysfs_emit(buf, "%u\n", conn->ipv6_flow_label); break; case ISCSI_PARAM_IS_FW_ASSIGNED_IPV6: - len = sprintf(buf, "%u\n", conn->is_fw_assigned_ipv6); + len = sysfs_emit(buf, "%u\n", conn->is_fw_assigned_ipv6); break; case ISCSI_PARAM_TCP_XMIT_WSF: - len = sprintf(buf, "%u\n", conn->tcp_xmit_wsf); + len = sysfs_emit(buf, "%u\n", conn->tcp_xmit_wsf); break; case ISCSI_PARAM_TCP_RECV_WSF: - len = sprintf(buf, "%u\n", conn->tcp_recv_wsf); + len = sysfs_emit(buf, "%u\n", conn->tcp_recv_wsf); break; case ISCSI_PARAM_LOCAL_IPADDR: - len = sprintf(buf, "%s\n", conn->local_ipaddr); + len = sysfs_emit(buf, "%s\n", conn->local_ipaddr); break; default: return -ENOSYS; @@ -3608,13 +3610,13 @@ switch (param) { case ISCSI_HOST_PARAM_NETDEV_NAME: - len = sprintf(buf, "%s\n", ihost->netdev); + len = sysfs_emit(buf, "%s\n", ihost->netdev); break; case ISCSI_HOST_PARAM_HWADDRESS: - len = sprintf(buf, "%s\n", ihost->hwaddress); + len = sysfs_emit(buf, "%s\n", ihost->hwaddress); break; case ISCSI_HOST_PARAM_INITIATOR_NAME: - len = sprintf(buf, "%s\n", ihost->initiatorname); + len = sysfs_emit(buf, "%s\n", ihost->initiatorname); break; default: return -ENOSYS; --- linux-5.8.0.orig/drivers/scsi/libsas/sas_ata.c +++ linux-5.8.0/drivers/scsi/libsas/sas_ata.c @@ -209,7 +209,10 @@ task->num_scatter = si; } - task->data_dir = qc->dma_dir; + if (qc->tf.protocol == ATA_PROT_NODATA) + task->data_dir = DMA_NONE; + else + task->data_dir = qc->dma_dir; task->scatter = qc->sg; task->ata_task.retry_count = 1; task->task_state_flags = SAS_TASK_STATE_PENDING; --- linux-5.8.0.orig/drivers/scsi/libsas/sas_discover.c +++ linux-5.8.0/drivers/scsi/libsas/sas_discover.c @@ -182,10 +182,11 @@ pr_warn("driver on host %s cannot handle device %016llx, error:%d\n", dev_name(sas_ha->dev), SAS_ADDR(dev->sas_addr), res); + return res; } set_bit(SAS_DEV_FOUND, &dev->state); kref_get(&dev->kref); - return res; + return 0; } --- linux-5.8.0.orig/drivers/scsi/libsas/sas_scsi_host.c +++ linux-5.8.0/drivers/scsi/libsas/sas_scsi_host.c @@ -466,6 +466,9 @@ struct sas_internal *i = to_sas_internal(host->transportt); unsigned long flags; + if (current != host->ehandler) + return FAILED; + if (!i->dft->lldd_abort_task) return FAILED; --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_debugfs.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_debugfs.c @@ -2426,7 +2426,7 @@ memset(dstbuf, 0, 33); size = (nbytes < 32) ? nbytes : 32; if (copy_from_user(dstbuf, buf, size)) - return 0; + return -EFAULT; if (dent == phba->debug_InjErrLBA) { if ((dstbuf[0] == 'o') && (dstbuf[1] == 'f') && @@ -2435,7 +2435,7 @@ } if ((tmp == 0) && (kstrtoull(dstbuf, 0, &tmp))) - return 0; + return -EINVAL; if (dent == phba->debug_writeGuard) phba->lpfc_injerr_wgrd_cnt = (uint32_t)tmp; --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_els.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_els.c @@ -3512,6 +3512,9 @@ FC_TLV_DESC_LENGTH_FROM_SZ(prdf->reg_d1)); prdf->reg_d1.reg_desc.count = cpu_to_be32(ELS_RDF_REG_TAG_CNT); prdf->reg_d1.desc_tags[0] = cpu_to_be32(ELS_DTAG_LNK_INTEGRITY); + prdf->reg_d1.desc_tags[1] = cpu_to_be32(ELS_DTAG_DELIVERY); + prdf->reg_d1.desc_tags[2] = cpu_to_be32(ELS_DTAG_PEER_CONGEST); + prdf->reg_d1.desc_tags[3] = cpu_to_be32(ELS_DTAG_CONGESTION); lpfc_debugfs_disc_trc(vport, LPFC_DISC_TRC_ELS_CMD, "Issue RDF: did:x%x", @@ -4644,7 +4647,9 @@ out: if (ndlp && NLP_CHK_NODE_ACT(ndlp) && shost) { spin_lock_irq(shost->host_lock); - ndlp->nlp_flag &= ~(NLP_ACC_REGLOGIN | NLP_RM_DFLT_RPI); + if (mbox) + ndlp->nlp_flag &= ~NLP_ACC_REGLOGIN; + ndlp->nlp_flag &= ~NLP_RM_DFLT_RPI; spin_unlock_irq(shost->host_lock); /* If the node is not being used by another discovery thread, --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_hbadisc.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -71,6 +71,7 @@ static void lpfc_disc_flush_list(struct lpfc_vport *vport); static void lpfc_unregister_fcfi_cmpl(struct lpfc_hba *, LPFC_MBOXQ_t *); static int lpfc_fcf_inuse(struct lpfc_hba *); +static void lpfc_mbx_cmpl_read_sparam(struct lpfc_hba *, LPFC_MBOXQ_t *); void lpfc_terminate_rport_io(struct fc_rport *rport) @@ -1138,11 +1139,13 @@ return; } - void lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) { struct lpfc_vport *vport = pmb->vport; + LPFC_MBOXQ_t *sparam_mb; + struct lpfc_dmabuf *sparam_mp; + int rc; if (pmb->u.mb.mbxStatus) goto out; @@ -1167,12 +1170,42 @@ } /* Start discovery by sending a FLOGI. port_state is identically - * LPFC_FLOGI while waiting for FLOGI cmpl. Check if sending - * the FLOGI is being deferred till after MBX_READ_SPARAM completes. + * LPFC_FLOGI while waiting for FLOGI cmpl. */ if (vport->port_state != LPFC_FLOGI) { - if (!(phba->hba_flag & HBA_DEFER_FLOGI)) + /* Issue MBX_READ_SPARAM to update CSPs before FLOGI if + * bb-credit recovery is in place. + */ + if (phba->bbcredit_support && phba->cfg_enable_bbcr && + !(phba->link_flag & LS_LOOPBACK_MODE)) { + sparam_mb = mempool_alloc(phba->mbox_mem_pool, + GFP_KERNEL); + if (!sparam_mb) + goto sparam_out; + + rc = lpfc_read_sparam(phba, sparam_mb, 0); + if (rc) { + mempool_free(sparam_mb, phba->mbox_mem_pool); + goto sparam_out; + } + sparam_mb->vport = vport; + sparam_mb->mbox_cmpl = lpfc_mbx_cmpl_read_sparam; + rc = lpfc_sli_issue_mbox(phba, sparam_mb, MBX_NOWAIT); + if (rc == MBX_NOT_FINISHED) { + sparam_mp = (struct lpfc_dmabuf *) + sparam_mb->ctx_buf; + lpfc_mbuf_free(phba, sparam_mp->virt, + sparam_mp->phys); + kfree(sparam_mp); + sparam_mb->ctx_buf = NULL; + mempool_free(sparam_mb, phba->mbox_mem_pool); + goto sparam_out; + } + + phba->hba_flag |= HBA_DEFER_FLOGI; + } else { lpfc_initial_flogi(vport); + } } else { if (vport->fc_flag & FC_PT2PT) lpfc_disc_start(vport); @@ -1184,6 +1217,7 @@ "0306 CONFIG_LINK mbxStatus error x%x " "HBA state x%x\n", pmb->u.mb.mbxStatus, vport->port_state); +sparam_out: mempool_free(pmb, phba->mbox_mem_pool); lpfc_linkdown(phba); @@ -3239,21 +3273,6 @@ lpfc_linkup(phba); sparam_mbox = NULL; - if (!(phba->hba_flag & HBA_FCOE_MODE)) { - cfglink_mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); - if (!cfglink_mbox) - goto out; - vport->port_state = LPFC_LOCAL_CFG_LINK; - lpfc_config_link(phba, cfglink_mbox); - cfglink_mbox->vport = vport; - cfglink_mbox->mbox_cmpl = lpfc_mbx_cmpl_local_config_link; - rc = lpfc_sli_issue_mbox(phba, cfglink_mbox, MBX_NOWAIT); - if (rc == MBX_NOT_FINISHED) { - mempool_free(cfglink_mbox, phba->mbox_mem_pool); - goto out; - } - } - sparam_mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); if (!sparam_mbox) goto out; @@ -3274,7 +3293,20 @@ goto out; } - if (phba->hba_flag & HBA_FCOE_MODE) { + if (!(phba->hba_flag & HBA_FCOE_MODE)) { + cfglink_mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); + if (!cfglink_mbox) + goto out; + vport->port_state = LPFC_LOCAL_CFG_LINK; + lpfc_config_link(phba, cfglink_mbox); + cfglink_mbox->vport = vport; + cfglink_mbox->mbox_cmpl = lpfc_mbx_cmpl_local_config_link; + rc = lpfc_sli_issue_mbox(phba, cfglink_mbox, MBX_NOWAIT); + if (rc == MBX_NOT_FINISHED) { + mempool_free(cfglink_mbox, phba->mbox_mem_pool); + goto out; + } + } else { vport->port_state = LPFC_VPORT_UNKNOWN; /* * Add the driver's default FCF record at FCF index 0 now. This @@ -3331,10 +3363,6 @@ } /* Reset FCF roundrobin bmask for new discovery */ lpfc_sli4_clear_fcf_rr_bmask(phba); - } else { - if (phba->bbcredit_support && phba->cfg_enable_bbcr && - !(phba->link_flag & LS_LOOPBACK_MODE)) - phba->hba_flag |= HBA_DEFER_FLOGI; } /* Prepare for LINK up registrations */ --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_hw4.h +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_hw4.h @@ -4797,7 +4797,7 @@ uint32_t fc_hdr_wd5; /* word 15 */ }; -#define ELS_RDF_REG_TAG_CNT 1 +#define ELS_RDF_REG_TAG_CNT 4 struct lpfc_els_rdf_reg_desc { struct fc_df_desc_fpin_reg reg_desc; /* descriptor header */ __be32 desc_tags[ELS_RDF_REG_TAG_CNT]; --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_init.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_init.c @@ -11257,7 +11257,6 @@ { cpumask_clear(&eqhdl->aff_mask); irq_clear_status_flags(eqhdl->irq, IRQ_NO_BALANCING); - irq_set_affinity_hint(eqhdl->irq, &eqhdl->aff_mask); } /** --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_mem.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_mem.c @@ -586,8 +586,6 @@ * Description: Allocates a DMA-mapped receive buffer from the lpfc_hrb_pool PCI * pool along a non-DMA-mapped container for it. * - * Notes: Not interrupt-safe. Must be called with no locks held. - * * Returns: * pointer to HBQ on success * NULL on failure @@ -597,7 +595,7 @@ { struct rqb_dmabuf *dma_buf; - dma_buf = kzalloc(sizeof(struct rqb_dmabuf), GFP_KERNEL); + dma_buf = kzalloc(sizeof(*dma_buf), GFP_KERNEL); if (!dma_buf) return NULL; @@ -720,7 +718,6 @@ drqe.address_hi = putPaddrHigh(rqb_entry->dbuf.phys); rc = lpfc_sli4_rq_put(rqb_entry->hrq, rqb_entry->drq, &hrqe, &drqe); if (rc < 0) { - (rqbp->rqb_free_buffer)(phba, rqb_entry); lpfc_printf_log(phba, KERN_ERR, LOG_INIT, "6409 Cannot post to HRQ %d: %x %x %x " "DRQ %x %x\n", @@ -730,6 +727,7 @@ rqb_entry->hrq->entry_count, rqb_entry->drq->host_index, rqb_entry->drq->hba_index); + (rqbp->rqb_free_buffer)(phba, rqb_entry); } else { list_add_tail(&rqb_entry->hbuf.list, &rqbp->rqb_buffer_list); rqbp->buffer_count++; --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_nvme.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_nvme.c @@ -713,6 +713,9 @@ return -ENODEV; } + if (!vport->phba->sli4_hba.nvmels_wq) + return -ENOMEM; + /* * there are two dma buf in the request, actually there is one and * the second one is just the start address + cmd size. --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_nvmet.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_nvmet.c @@ -2112,7 +2112,7 @@ } tgtp->tport_unreg_cmp = &tport_unreg_cmp; nvmet_fc_unregister_targetport(phba->targetport); - if (!wait_for_completion_timeout(tgtp->tport_unreg_cmp, + if (!wait_for_completion_timeout(&tport_unreg_cmp, msecs_to_jiffies(LPFC_NVMET_WAIT_TMO))) lpfc_printf_log(phba, KERN_ERR, LOG_NVME, "6179 Unreg targetport x%px timeout " --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_sli.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_sli.c @@ -7254,12 +7254,16 @@ struct rqb_dmabuf *rqb_buffer; LIST_HEAD(rqb_buf_list); - spin_lock_irqsave(&phba->hbalock, flags); rqbp = hrq->rqbp; for (i = 0; i < count; i++) { + spin_lock_irqsave(&phba->hbalock, flags); /* IF RQ is already full, don't bother */ - if (rqbp->buffer_count + i >= rqbp->entry_count - 1) + if (rqbp->buffer_count + i >= rqbp->entry_count - 1) { + spin_unlock_irqrestore(&phba->hbalock, flags); break; + } + spin_unlock_irqrestore(&phba->hbalock, flags); + rqb_buffer = rqbp->rqb_alloc_buffer(phba); if (!rqb_buffer) break; @@ -7268,6 +7272,8 @@ rqb_buffer->idx = idx; list_add_tail(&rqb_buffer->hbuf.list, &rqb_buf_list); } + + spin_lock_irqsave(&phba->hbalock, flags); while (!list_empty(&rqb_buf_list)) { list_remove_head(&rqb_buf_list, rqb_buffer, struct rqb_dmabuf, hbuf.list); --- linux-5.8.0.orig/drivers/scsi/lpfc/lpfc_vport.c +++ linux-5.8.0/drivers/scsi/lpfc/lpfc_vport.c @@ -642,27 +642,16 @@ vport->port_state < LPFC_VPORT_READY) return -EAGAIN; } + /* - * This is a bit of a mess. We want to ensure the shost doesn't get - * torn down until we're done with the embedded lpfc_vport structure. - * - * Beyond holding a reference for this function, we also need a - * reference for outstanding I/O requests we schedule during delete - * processing. But once we scsi_remove_host() we can no longer obtain - * a reference through scsi_host_get(). - * - * So we take two references here. We release one reference at the - * bottom of the function -- after delinking the vport. And we - * release the other at the completion of the unreg_vpi that get's - * initiated after we've disposed of all other resources associated - * with the port. + * Take early refcount for outstanding I/O requests we schedule during + * delete processing for unreg_vpi. Always keep this before + * scsi_remove_host() as we can no longer obtain a reference through + * scsi_host_get() after scsi_host_remove as shost is set to SHOST_DEL. */ if (!scsi_host_get(shost)) return VPORT_INVAL; - if (!scsi_host_get(shost)) { - scsi_host_put(shost); - return VPORT_INVAL; - } + lpfc_free_sysfs_attr(vport); lpfc_debugfs_terminate(vport); @@ -809,8 +798,9 @@ if (!(vport->vpi_state & LPFC_VPI_REGISTERED) || lpfc_mbx_unreg_vpi(vport)) scsi_host_put(shost); - } else + } else { scsi_host_put(shost); + } lpfc_free_vpi(phba, vport->vpi); vport->work_port_events = 0; --- linux-5.8.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-5.8.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -5602,9 +5602,13 @@ &instance->irq_context[i])) { dev_err(&instance->pdev->dev, "Failed to register IRQ for vector %d.\n", i); - for (j = 0; j < i; j++) + for (j = 0; j < i; j++) { + if (j < instance->low_latency_index_start) + irq_set_affinity_hint( + pci_irq_vector(pdev, j), NULL); free_irq(pci_irq_vector(pdev, j), &instance->irq_context[j]); + } /* Retry irq register for IO_APIC*/ instance->msix_vectors = 0; instance->msix_load_balance = false; @@ -5642,6 +5646,9 @@ if (instance->msix_vectors) for (i = 0; i < instance->msix_vectors; i++) { + if (i < instance->low_latency_index_start) + irq_set_affinity_hint( + pci_irq_vector(instance->pdev, i), NULL); free_irq(pci_irq_vector(instance->pdev, i), &instance->irq_context[i]); } @@ -8072,7 +8079,7 @@ int error = 0, i; void *sense = NULL; dma_addr_t sense_handle; - unsigned long *sense_ptr; + void *sense_ptr; u32 opcode = 0; int ret = DCMD_SUCCESS; @@ -8195,6 +8202,13 @@ } if (ioc->sense_len) { + /* make sure the pointer is part of the frame */ + if (ioc->sense_off > + (sizeof(union megasas_frame) - sizeof(__le64))) { + error = -EINVAL; + goto out; + } + sense = dma_alloc_coherent(&instance->pdev->dev, ioc->sense_len, &sense_handle, GFP_KERNEL); if (!sense) { @@ -8202,12 +8216,9 @@ goto out; } - sense_ptr = - (unsigned long *) ((unsigned long)cmd->frame + ioc->sense_off); - if (instance->consistent_mask_64bit) - *sense_ptr = cpu_to_le64(sense_handle); - else - *sense_ptr = cpu_to_le32(sense_handle); + /* always store 64 bits regardless of addressing */ + sense_ptr = (void *)cmd->frame + ioc->sense_off; + put_unaligned_le64(sense_handle, sense_ptr); } /* --- linux-5.8.0.orig/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ linux-5.8.0/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -3690,7 +3690,7 @@ instance = irq_ctx->instance; if (irq_ctx->irq_line_enable) { - disable_irq(irq_ctx->os_irq); + disable_irq_nosync(irq_ctx->os_irq); irq_ctx->irq_line_enable = false; } --- linux-5.8.0.orig/drivers/scsi/mesh.c +++ linux-5.8.0/drivers/scsi/mesh.c @@ -1045,6 +1045,8 @@ while ((in_8(&mr->bus_status1) & BS1_RST) != 0) udelay(1); printk("done\n"); + if (ms->dma_started) + halt_dma(ms); handle_reset(ms); /* request_q is empty, no point in mesh_start() */ return; @@ -1357,7 +1359,8 @@ ms->conn_tgt, ms->data_ptr, scsi_bufflen(cmd), ms->tgts[ms->conn_tgt].data_goes_out); } - scsi_dma_unmap(cmd); + if (cmd) + scsi_dma_unmap(cmd); ms->dma_started = 0; } @@ -1712,6 +1715,9 @@ spin_lock_irqsave(ms->host->host_lock, flags); + if (ms->dma_started) + halt_dma(ms); + /* Reset the controller & dbdma channel */ out_le32(&md->control, (RUN|PAUSE|FLUSH|WAKE) << 16); /* stop dma */ out_8(&mr->exception, 0xff); /* clear all exception bits */ --- linux-5.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_base.c +++ linux-5.8.0/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -1732,7 +1732,7 @@ reply_q = container_of(irqpoll, struct adapter_reply_queue, irqpoll); if (reply_q->irq_line_enable) { - disable_irq(reply_q->os_irq); + disable_irq_nosync(reply_q->os_irq); reply_q->irq_line_enable = false; } num_entries = _base_process_reply_queue(reply_q); @@ -1741,6 +1741,13 @@ reply_q->irq_poll_scheduled = false; reply_q->irq_line_enable = true; enable_irq(reply_q->os_irq); + /* + * Go for one more round of processing the + * reply descriptor post queue incase if HBA + * Firmware has posted some reply descriptors + * while reenabling the IRQ. + */ + _base_process_reply_queue(reply_q); } return num_entries; @@ -1808,18 +1815,22 @@ /* TMs are on msix_index == 0 */ if (reply_q->msix_index == 0) continue; + synchronize_irq(pci_irq_vector(ioc->pdev, reply_q->msix_index)); if (reply_q->irq_poll_scheduled) { /* Calling irq_poll_disable will wait for any pending * callbacks to have completed. */ irq_poll_disable(&reply_q->irqpoll); irq_poll_enable(&reply_q->irqpoll); - reply_q->irq_poll_scheduled = false; - reply_q->irq_line_enable = true; - enable_irq(reply_q->os_irq); - continue; + /* check how the scheduled poll has ended, + * clean up only if necessary + */ + if (reply_q->irq_poll_scheduled) { + reply_q->irq_poll_scheduled = false; + reply_q->irq_line_enable = true; + enable_irq(reply_q->os_irq); + } } - synchronize_irq(pci_irq_vector(ioc->pdev, reply_q->msix_index)); } } @@ -6428,7 +6439,7 @@ r = _base_handshake_req_reply_wait(ioc, sizeof(Mpi2IOCInitRequest_t), (u32 *)&mpi_request, - sizeof(Mpi2IOCInitReply_t), (u16 *)&mpi_reply, 10); + sizeof(Mpi2IOCInitReply_t), (u16 *)&mpi_reply, 30); if (r != 0) { ioc_err(ioc, "%s: handshake failed (r=%d)\n", __func__, r); @@ -7324,14 +7335,18 @@ ioc->pend_os_device_add_sz++; ioc->pend_os_device_add = kzalloc(ioc->pend_os_device_add_sz, GFP_KERNEL); - if (!ioc->pend_os_device_add) + if (!ioc->pend_os_device_add) { + r = -ENOMEM; goto out_free_resources; + } ioc->device_remove_in_progress_sz = ioc->pend_os_device_add_sz; ioc->device_remove_in_progress = kzalloc(ioc->device_remove_in_progress_sz, GFP_KERNEL); - if (!ioc->device_remove_in_progress) + if (!ioc->device_remove_in_progress) { + r = -ENOMEM; goto out_free_resources; + } ioc->fwfault_debug = mpt3sas_fwfault_debug; --- linux-5.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_base.h +++ linux-5.8.0/drivers/scsi/mpt3sas/mpt3sas_base.h @@ -76,9 +76,9 @@ #define MPT3SAS_DRIVER_NAME "mpt3sas" #define MPT3SAS_AUTHOR "Avago Technologies " #define MPT3SAS_DESCRIPTION "LSI MPT Fusion SAS 3.0 Device Driver" -#define MPT3SAS_DRIVER_VERSION "34.100.00.00" -#define MPT3SAS_MAJOR_VERSION 34 -#define MPT3SAS_MINOR_VERSION 100 +#define MPT3SAS_DRIVER_VERSION "35.101.00.00" +#define MPT3SAS_MAJOR_VERSION 35 +#define MPT3SAS_MINOR_VERSION 101 #define MPT3SAS_BUILD_VERSION 0 #define MPT3SAS_RELEASE_VERSION 00 @@ -420,6 +420,7 @@ * @flags: MPT_TARGET_FLAGS_XXX flags * @deleted: target flaged for deletion * @tm_busy: target is busy with TM request. + * @port: hba port entry containing target's port number info * @sas_dev: The sas_device associated with this target * @pcie_dev: The pcie device associated with this target */ @@ -432,6 +433,7 @@ u32 flags; u8 deleted; u8 tm_busy; + struct hba_port *port; struct _sas_device *sas_dev; struct _pcie_device *pcie_dev; }; @@ -534,6 +536,9 @@ * addition routine. * @chassis_slot: chassis slot * @is_chassis_slot_valid: chassis slot valid or not + * @port: hba port entry containing device's port number info + * @rphy: device's sas_rphy address used to identify this device structure in + * target_alloc callback function */ struct _sas_device { struct list_head list; @@ -560,6 +565,8 @@ u8 is_chassis_slot_valid; u8 connector_name[5]; struct kref refcount; + struct hba_port *port; + struct sas_rphy *rphy; }; static inline void sas_device_get(struct _sas_device *s) @@ -730,6 +737,7 @@ * @remote_identify: attached device identification * @rphy: sas transport rphy object * @port: sas transport wide/narrow port object + * @hba_port: hba port entry containing port's port number info * @phy_list: _sas_phy list objects belonging to this port */ struct _sas_port { @@ -738,6 +746,7 @@ struct sas_identify remote_identify; struct sas_rphy *rphy; struct sas_port *port; + struct hba_port *hba_port; struct list_head phy_list; }; @@ -751,6 +760,7 @@ * @handle: device handle for this phy * @attached_handle: device handle for attached device * @phy_belongs_to_port: port has been created for this phy + * @port: hba port entry containing port number info */ struct _sas_phy { struct list_head port_siblings; @@ -761,6 +771,8 @@ u16 handle; u16 attached_handle; u8 phy_belongs_to_port; + u8 hba_vphy; + struct hba_port *port; }; /** @@ -776,6 +788,8 @@ * @responding: used in _scsih_expander_device_mark_responding * @phy: a list of phys that make up this sas_host/expander * @sas_port_list: list of ports attached to this sas_host/expander + * @port: hba port entry containing node's port number info + * @rphy: sas_rphy object of this expander */ struct _sas_node { struct list_head list; @@ -787,11 +801,12 @@ u16 enclosure_handle; u64 enclosure_logical_id; u8 responding; + struct hba_port *port; struct _sas_phy *phy; struct list_head sas_port_list; + struct sas_rphy *rphy; }; - /** * struct _enclosure_node - enclosure information * @list: list of enclosures @@ -1009,6 +1024,46 @@ dma_addr_t reply_post_free_dma; }; +/** + * struct virtual_phy - vSES phy structure + * sas_address: SAS Address of vSES device + * phy_mask: vSES device's phy number + * flags: flags used to manage this structure + */ +struct virtual_phy { + struct list_head list; + u64 sas_address; + u32 phy_mask; + u8 flags; +}; + +#define MPT_VPHY_FLAG_DIRTY_PHY 0x01 + +/** + * struct hba_port - Saves each HBA's Wide/Narrow port info + * @sas_address: sas address of this wide/narrow port's attached device + * @phy_mask: HBA PHY's belonging to this port + * @port_id: port number + * @flags: hba port flags + * @vphys_mask : mask of vSES devices Phy number + * @vphys_list : list containing vSES device structures + */ +struct hba_port { + struct list_head list; + u64 sas_address; + u32 phy_mask; + u8 port_id; + u8 flags; + u32 vphys_mask; + struct list_head vphys_list; +}; + +/* hba port flags */ +#define HBA_PORT_FLAG_DIRTY_PORT 0x01 +#define HBA_PORT_FLAG_NEW_PORT 0x02 + +#define MULTIPATH_DISABLED_PORT_ID 0xFF + typedef void (*MPT3SAS_FLUSH_RUNNING_CMDS)(struct MPT3SAS_ADAPTER *ioc); /** * struct MPT3SAS_ADAPTER - per adapter struct @@ -1189,6 +1244,8 @@ * which ensures the syncrhonization between cli/sysfs_show path. * @atomic_desc_capable: Atomic Request Descriptor support. * @GET_MSIX_INDEX: Get the msix index of high iops queues. + * @multipath_on_hba: flag to determine multipath on hba is enabled or not + * @port_table_list: list containing HBA's wide/narrow port's info */ struct MPT3SAS_ADAPTER { struct list_head list; @@ -1479,6 +1536,9 @@ PUT_SMID_IO_FP_HIP put_smid_hi_priority; PUT_SMID_DEFAULT put_smid_default; GET_MSIX_INDEX get_msix_index_for_smlio; + + u8 multipath_on_hba; + struct list_head port_table_list; }; struct mpt3sas_debugfs_buffer { @@ -1612,20 +1672,27 @@ void mpt3sas_scsih_set_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); void mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); -void mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address); +void mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, + struct hba_port *port); void mpt3sas_device_remove_by_sas_address(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address); + u64 sas_address, struct hba_port *port); u8 mpt3sas_check_for_pending_internal_cmds(struct MPT3SAS_ADAPTER *ioc, u16 smid); +struct hba_port * +mpt3sas_get_port_by_id(struct MPT3SAS_ADAPTER *ioc, u8 port, + u8 bypass_dirty_port_flag); struct _sas_node *mpt3sas_scsih_expander_find_by_handle( struct MPT3SAS_ADAPTER *ioc, u16 handle); struct _sas_node *mpt3sas_scsih_expander_find_by_sas_address( - struct MPT3SAS_ADAPTER *ioc, u64 sas_address); + struct MPT3SAS_ADAPTER *ioc, u64 sas_address, + struct hba_port *port); struct _sas_device *mpt3sas_get_sdev_by_addr( - struct MPT3SAS_ADAPTER *ioc, u64 sas_address); + struct MPT3SAS_ADAPTER *ioc, u64 sas_address, + struct hba_port *port); struct _sas_device *__mpt3sas_get_sdev_by_addr( - struct MPT3SAS_ADAPTER *ioc, u64 sas_address); + struct MPT3SAS_ADAPTER *ioc, u64 sas_address, + struct hba_port *port); struct _sas_device *mpt3sas_get_sdev_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle); struct _pcie_device *mpt3sas_get_pdev_by_handle(struct MPT3SAS_ADAPTER *ioc, @@ -1635,6 +1702,11 @@ struct _raid_device * mpt3sas_raid_device_find_by_handle(struct MPT3SAS_ADAPTER *ioc, u16 handle); void mpt3sas_scsih_change_queue_depth(struct scsi_device *sdev, int qdepth); +struct _sas_device * +__mpt3sas_get_sdev_by_rphy(struct MPT3SAS_ADAPTER *ioc, struct sas_rphy *rphy); +struct virtual_phy * +mpt3sas_get_vphy_by_phy(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *port, u32 phy); /* config shared API */ u8 mpt3sas_config_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, @@ -1752,18 +1824,26 @@ u8 mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply); struct _sas_port *mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, - u16 handle, u64 sas_address); + u16 handle, u64 sas_address, struct hba_port *port); void mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, - u64 sas_address_parent); + u64 sas_address_parent, struct hba_port *port); int mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy *mpt3sas_phy, Mpi2SasPhyPage0_t phy_pg0, struct device *parent_dev); int mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy *mpt3sas_phy, Mpi2ExpanderPage1_t expander_pg1, struct device *parent_dev); void mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address, u16 handle, u8 phy_number, u8 link_rate); + u64 sas_address, u16 handle, u8 phy_number, u8 link_rate, + struct hba_port *port); extern struct sas_function_template mpt3sas_transport_functions; extern struct scsi_transport_template *mpt3sas_transport_template; +void +mpt3sas_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, + struct _sas_node *sas_node, struct _sas_phy *mpt3sas_phy); +void +mpt3sas_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, + struct _sas_node *sas_node, struct _sas_phy *mpt3sas_phy, + u64 sas_address, struct hba_port *port); /* trigger data externs */ void mpt3sas_send_trigger_data_event(struct MPT3SAS_ADAPTER *ioc, struct SL_WH_TRIGGERS_EVENT_DATA_T *event_data); --- linux-5.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_ctl.c +++ linux-5.8.0/drivers/scsi/mpt3sas/mpt3sas_ctl.c @@ -664,7 +664,7 @@ Mpi26NVMeEncapsulatedRequest_t *nvme_encap_request = NULL; struct _pcie_device *pcie_device = NULL; u16 smid; - u8 timeout; + unsigned long timeout; u8 issue_reset; u32 sz, sz_arg; void *psge; @@ -902,8 +902,10 @@ (Mpi2SmpPassthroughRequest_t *)mpi_request; u8 *data; - /* ioc determines which port to use */ - smp_request->PhysicalPort = 0xFF; + if (!ioc->multipath_on_hba) { + /* ioc determines which port to use */ + smp_request->PhysicalPort = 0xFF; + } if (smp_request->PassthroughFlags & MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE) data = (u8 *)&smp_request->SGL; --- linux-5.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_scsih.c +++ linux-5.8.0/drivers/scsi/mpt3sas/mpt3sas_scsih.c @@ -159,6 +159,15 @@ MODULE_PARM_DESC(enable_sdev_max_qd, "Enable sdev max qd as can_queue, def=disabled(0)"); +static int multipath_on_hba = -1; +module_param(multipath_on_hba, int, 0); +MODULE_PARM_DESC(multipath_on_hba, + "Multipath support to add same target device\n\t\t" + "as many times as it is visible to HBA from various paths\n\t\t" + "(by default:\n\t\t" + "\t SAS 2.0 & SAS 3.0 HBA - This will be disabled,\n\t\t" + "\t SAS 3.5 HBA - This will be enabled)"); + /* raid transport support */ static struct raid_template *mpt3sas_raid_template; static struct raid_template *mpt2sas_raid_template; @@ -357,6 +366,87 @@ } /** + * mpt3sas_get_port_by_id - get hba port entry corresponding to provided + * port number from port list + * @ioc: per adapter object + * @port_id: port number + * @bypass_dirty_port_flag: when set look the matching hba port entry even + * if hba port entry is marked as dirty. + * + * Search for hba port entry corresponding to provided port number, + * if available return port object otherwise return NULL. + */ +struct hba_port * +mpt3sas_get_port_by_id(struct MPT3SAS_ADAPTER *ioc, + u8 port_id, u8 bypass_dirty_port_flag) +{ + struct hba_port *port, *port_next; + + /* + * When multipath_on_hba is disabled then + * search the hba_port entry using default + * port id i.e. 255 + */ + if (!ioc->multipath_on_hba) + port_id = MULTIPATH_DISABLED_PORT_ID; + + list_for_each_entry_safe(port, port_next, + &ioc->port_table_list, list) { + if (port->port_id != port_id) + continue; + if (bypass_dirty_port_flag) + return port; + if (port->flags & HBA_PORT_FLAG_DIRTY_PORT) + continue; + return port; + } + + /* + * Allocate hba_port object for default port id (i.e. 255) + * when multipath_on_hba is disabled for the HBA. + * And add this object to port_table_list. + */ + if (!ioc->multipath_on_hba) { + port = kzalloc(sizeof(struct hba_port), GFP_KERNEL); + if (!port) + return NULL; + + port->port_id = port_id; + ioc_info(ioc, + "hba_port entry: %p, port: %d is added to hba_port list\n", + port, port->port_id); + list_add_tail(&port->list, + &ioc->port_table_list); + return port; + } + return NULL; +} + +/** + * mpt3sas_get_vphy_by_phy - get virtual_phy object corresponding to phy number + * @ioc: per adapter object + * @port: hba_port object + * @phy: phy number + * + * Return virtual_phy object corresponding to phy number. + */ +struct virtual_phy * +mpt3sas_get_vphy_by_phy(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *port, u32 phy) +{ + struct virtual_phy *vphy, *vphy_next; + + if (!port->vphys_mask) + return NULL; + + list_for_each_entry_safe(vphy, vphy_next, &port->vphys_list, list) { + if (vphy->phy_mask & (1 << phy)) + return vphy; + } + return NULL; +} + +/** * _scsih_is_boot_device - search for matching boot device. * @sas_address: sas address * @device_name: device name specified in INDENTIFY fram @@ -614,48 +704,105 @@ return ret; } + +/** + * __mpt3sas_get_sdev_by_rphy - sas device search + * @ioc: per adapter object + * @rphy: sas_rphy pointer + * + * Context: This function will acquire ioc->sas_device_lock and will release + * before returning the sas_device object. + * + * This searches for sas_device from rphy object + * then return sas_device object. + */ struct _sas_device * -__mpt3sas_get_sdev_by_addr(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address) +__mpt3sas_get_sdev_by_rphy(struct MPT3SAS_ADAPTER *ioc, + struct sas_rphy *rphy) { struct _sas_device *sas_device; assert_spin_locked(&ioc->sas_device_lock); - list_for_each_entry(sas_device, &ioc->sas_device_list, list) - if (sas_device->sas_address == sas_address) - goto found_device; + list_for_each_entry(sas_device, &ioc->sas_device_list, list) { + if (sas_device->rphy != rphy) + continue; + sas_device_get(sas_device); + return sas_device; + } - list_for_each_entry(sas_device, &ioc->sas_device_init_list, list) - if (sas_device->sas_address == sas_address) - goto found_device; + sas_device = NULL; + list_for_each_entry(sas_device, &ioc->sas_device_init_list, list) { + if (sas_device->rphy != rphy) + continue; + sas_device_get(sas_device); + return sas_device; + } return NULL; +} -found_device: - sas_device_get(sas_device); - return sas_device; +/** + * mpt3sas_get_sdev_by_addr - get _sas_device object corresponding to provided + * sas address from sas_device_list list + * @ioc: per adapter object + * @port: port number + * + * Search for _sas_device object corresponding to provided sas address, + * if available return _sas_device object address otherwise return NULL. + */ +struct _sas_device * +__mpt3sas_get_sdev_by_addr(struct MPT3SAS_ADAPTER *ioc, + u64 sas_address, struct hba_port *port) +{ + struct _sas_device *sas_device; + + if (!port) + return NULL; + + assert_spin_locked(&ioc->sas_device_lock); + + list_for_each_entry(sas_device, &ioc->sas_device_list, list) { + if (sas_device->sas_address != sas_address) + continue; + if (sas_device->port != port) + continue; + sas_device_get(sas_device); + return sas_device; + } + + list_for_each_entry(sas_device, &ioc->sas_device_init_list, list) { + if (sas_device->sas_address != sas_address) + continue; + if (sas_device->port != port) + continue; + sas_device_get(sas_device); + return sas_device; + } + + return NULL; } /** * mpt3sas_get_sdev_by_addr - sas device search * @ioc: per adapter object * @sas_address: sas address + * @port: hba port entry * Context: Calling function should acquire ioc->sas_device_lock * - * This searches for sas_device based on sas_address, then return sas_device - * object. + * This searches for sas_device based on sas_address & port number, + * then return sas_device object. */ struct _sas_device * mpt3sas_get_sdev_by_addr(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address) + u64 sas_address, struct hba_port *port) { struct _sas_device *sas_device; unsigned long flags; spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_device = __mpt3sas_get_sdev_by_addr(ioc, - sas_address); + sas_address, port); spin_unlock_irqrestore(&ioc->sas_device_lock, flags); return sas_device; @@ -824,13 +971,17 @@ } /** - * mpt3sas_device_remove_by_sas_address - removing device object by sas address + * mpt3sas_device_remove_by_sas_address - removing device object by + * sas address & port number * @ioc: per adapter object * @sas_address: device sas_address + * @port: hba port entry + * + * Return nothing. */ void mpt3sas_device_remove_by_sas_address(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address) + u64 sas_address, struct hba_port *port) { struct _sas_device *sas_device; unsigned long flags; @@ -839,7 +990,7 @@ return; spin_lock_irqsave(&ioc->sas_device_lock, flags); - sas_device = __mpt3sas_get_sdev_by_addr(ioc, sas_address); + sas_device = __mpt3sas_get_sdev_by_addr(ioc, sas_address, port); if (sas_device) { list_del_init(&sas_device->list); sas_device_put(sas_device); @@ -884,7 +1035,7 @@ } if (!mpt3sas_transport_port_add(ioc, sas_device->handle, - sas_device->sas_address_parent)) { + sas_device->sas_address_parent, sas_device->port)) { _scsih_sas_device_remove(ioc, sas_device); } else if (!sas_device->starget) { /* @@ -895,7 +1046,8 @@ if (!ioc->is_driver_loading) { mpt3sas_transport_port_remove(ioc, sas_device->sas_address, - sas_device->sas_address_parent); + sas_device->sas_address_parent, + sas_device->port); _scsih_sas_device_remove(ioc, sas_device); } } else @@ -1432,21 +1584,26 @@ * mpt3sas_scsih_expander_find_by_sas_address - expander device search * @ioc: per adapter object * @sas_address: sas address + * @port: hba port entry * Context: Calling function should acquire ioc->sas_node_lock. * - * This searches for expander device based on sas_address, then returns the - * sas_node object. + * This searches for expander device based on sas_address & port number, + * then returns the sas_node object. */ struct _sas_node * mpt3sas_scsih_expander_find_by_sas_address(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address) + u64 sas_address, struct hba_port *port) { - struct _sas_node *sas_expander, *r; + struct _sas_node *sas_expander, *r = NULL; + + if (!port) + return r; - r = NULL; list_for_each_entry(sas_expander, &ioc->sas_expander_list, list) { if (sas_expander->sas_address != sas_address) continue; + if (sas_expander->port != port) + continue; r = sas_expander; goto out; } @@ -1684,6 +1841,7 @@ if (pcie_device) { sas_target_priv_data->handle = pcie_device->handle; sas_target_priv_data->sas_address = pcie_device->wwid; + sas_target_priv_data->port = NULL; sas_target_priv_data->pcie_dev = pcie_device; pcie_device->starget = starget; pcie_device->id = starget->id; @@ -1701,12 +1859,12 @@ /* sas/sata devices */ spin_lock_irqsave(&ioc->sas_device_lock, flags); rphy = dev_to_rphy(starget->dev.parent); - sas_device = __mpt3sas_get_sdev_by_addr(ioc, - rphy->identify.sas_address); + sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); if (sas_device) { sas_target_priv_data->handle = sas_device->handle; sas_target_priv_data->sas_address = sas_device->sas_address; + sas_target_priv_data->port = sas_device->port; sas_target_priv_data->sas_dev = sas_device; sas_device->starget = starget; sas_device->id = starget->id; @@ -1862,7 +2020,8 @@ } else if (!(sas_target_priv_data->flags & MPT_TARGET_FLAGS_VOLUME)) { spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_device = __mpt3sas_get_sdev_by_addr(ioc, - sas_target_priv_data->sas_address); + sas_target_priv_data->sas_address, + sas_target_priv_data->port); if (sas_device && (sas_device->starget == NULL)) { sdev_printk(KERN_INFO, sdev, "%s : sas_device->starget set to starget @ %d\n", @@ -2467,7 +2626,8 @@ spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_device = __mpt3sas_get_sdev_by_addr(ioc, - sas_device_priv_data->sas_target->sas_address); + sas_device_priv_data->sas_target->sas_address, + sas_device_priv_data->sas_target->port); if (!sas_device) { spin_unlock_irqrestore(&ioc->sas_device_lock, flags); dfailprintk(ioc, @@ -3443,11 +3603,13 @@ * _scsih_ublock_io_device - prepare device to be deleted * @ioc: per adapter object * @sas_address: sas address + * @port: hba port entry * * unblock then put device in offline state */ static void -_scsih_ublock_io_device(struct MPT3SAS_ADAPTER *ioc, u64 sas_address) +_scsih_ublock_io_device(struct MPT3SAS_ADAPTER *ioc, + u64 sas_address, struct hba_port *port) { struct MPT3SAS_DEVICE *sas_device_priv_data; struct scsi_device *sdev; @@ -3459,6 +3621,8 @@ if (sas_device_priv_data->sas_target->sas_address != sas_address) continue; + if (sas_device_priv_data->sas_target->port != port) + continue; if (sas_device_priv_data->block) _scsih_internal_device_unblock(sdev, sas_device_priv_data); @@ -3559,7 +3723,8 @@ SAS_END_DEVICE) { spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_device = __mpt3sas_get_sdev_by_addr(ioc, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); if (sas_device) { set_bit(sas_device->handle, ioc->blocking_handles); @@ -3578,7 +3743,8 @@ SAS_FANOUT_EXPANDER_DEVICE) { expander_sibling = mpt3sas_scsih_expander_find_by_sas_address( - ioc, mpt3sas_port->remote_identify.sas_address); + ioc, mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); _scsih_block_io_to_children_attached_to_ex(ioc, expander_sibling); } @@ -3667,6 +3833,7 @@ struct _tr_list *delayed_tr; u32 ioc_state; u8 tr_method = 0; + struct hba_port *port = NULL; if (ioc->pci_error_recovery) { dewtprintk(ioc, @@ -3695,6 +3862,7 @@ sas_target_priv_data = sas_device->starget->hostdata; sas_target_priv_data->deleted = 1; sas_address = sas_device->sas_address; + port = sas_device->port; } spin_unlock_irqrestore(&ioc->sas_device_lock, flags); if (!sas_device) { @@ -3742,7 +3910,7 @@ pcie_device->enclosure_level, pcie_device->connector_name)); } - _scsih_ublock_io_device(ioc, sas_address); + _scsih_ublock_io_device(ioc, sas_address, port); sas_target_priv_data->handle = MPT3SAS_INVALID_DEVICE_HANDLE; } @@ -5516,6 +5684,614 @@ } /** + * _scsih_update_vphys_after_reset - update the Port's + * vphys_list after reset + * @ioc: per adapter object + * + * Returns nothing. + */ +static void +_scsih_update_vphys_after_reset(struct MPT3SAS_ADAPTER *ioc) +{ + u16 sz, ioc_status; + int i; + Mpi2ConfigReply_t mpi_reply; + Mpi2SasIOUnitPage0_t *sas_iounit_pg0 = NULL; + u16 attached_handle; + u64 attached_sas_addr; + u8 found = 0, port_id; + Mpi2SasPhyPage0_t phy_pg0; + struct hba_port *port, *port_next, *mport; + struct virtual_phy *vphy, *vphy_next; + struct _sas_device *sas_device; + + /* + * Mark all the vphys objects as dirty. + */ + list_for_each_entry_safe(port, port_next, + &ioc->port_table_list, list) { + if (!port->vphys_mask) + continue; + list_for_each_entry_safe(vphy, vphy_next, + &port->vphys_list, list) { + vphy->flags |= MPT_VPHY_FLAG_DIRTY_PHY; + } + } + + /* + * Read SASIOUnitPage0 to get each HBA Phy's data. + */ + sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + + (ioc->sas_hba.num_phys * sizeof(Mpi2SasIOUnit0PhyData_t)); + sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL); + if (!sas_iounit_pg0) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + return; + } + if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, + sas_iounit_pg0, sz)) != 0) + goto out; + ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) + goto out; + /* + * Loop over each HBA Phy. + */ + for (i = 0; i < ioc->sas_hba.num_phys; i++) { + /* + * Check whether Phy's Negotiation Link Rate is > 1.5G or not. + */ + if ((sas_iounit_pg0->PhyData[i].NegotiatedLinkRate >> 4) < + MPI2_SAS_NEG_LINK_RATE_1_5) + continue; + /* + * Check whether Phy is connected to SEP device or not, + * if it is SEP device then read the Phy's SASPHYPage0 data to + * determine whether Phy is a virtual Phy or not. if it is + * virtual phy then it is conformed that the attached remote + * device is a HBA's vSES device. + */ + if (!(le32_to_cpu( + sas_iounit_pg0->PhyData[i].ControllerPhyDeviceInfo) & + MPI2_SAS_DEVICE_INFO_SEP)) + continue; + + if ((mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, + i))) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + continue; + } + + if (!(le32_to_cpu(phy_pg0.PhyInfo) & + MPI2_SAS_PHYINFO_VIRTUAL_PHY)) + continue; + /* + * Get the vSES device's SAS Address. + */ + attached_handle = le16_to_cpu( + sas_iounit_pg0->PhyData[i].AttachedDevHandle); + if (_scsih_get_sas_address(ioc, attached_handle, + &attached_sas_addr) != 0) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + continue; + } + + found = 0; + port = port_next = NULL; + /* + * Loop over each virtual_phy object from + * each port's vphys_list. + */ + list_for_each_entry_safe(port, + port_next, &ioc->port_table_list, list) { + if (!port->vphys_mask) + continue; + list_for_each_entry_safe(vphy, vphy_next, + &port->vphys_list, list) { + /* + * Continue with next virtual_phy object + * if the object is not marked as dirty. + */ + if (!(vphy->flags & MPT_VPHY_FLAG_DIRTY_PHY)) + continue; + + /* + * Continue with next virtual_phy object + * if the object's SAS Address is not equals + * to current Phy's vSES device SAS Address. + */ + if (vphy->sas_address != attached_sas_addr) + continue; + /* + * Enable current Phy number bit in object's + * phy_mask field. + */ + if (!(vphy->phy_mask & (1 << i))) + vphy->phy_mask = (1 << i); + /* + * Get hba_port object from hba_port table + * corresponding to current phy's Port ID. + * if there is no hba_port object corresponding + * to Phy's Port ID then create a new hba_port + * object & add to hba_port table. + */ + port_id = sas_iounit_pg0->PhyData[i].Port; + mport = mpt3sas_get_port_by_id(ioc, port_id, 1); + if (!mport) { + mport = kzalloc( + sizeof(struct hba_port), GFP_KERNEL); + if (!mport) + break; + mport->port_id = port_id; + ioc_info(ioc, + "%s: hba_port entry: %p, port: %d is added to hba_port list\n", + __func__, mport, mport->port_id); + list_add_tail(&mport->list, + &ioc->port_table_list); + } + /* + * If mport & port pointers are not pointing to + * same hba_port object then it means that vSES + * device's Port ID got changed after reset and + * hence move current virtual_phy object from + * port's vphys_list to mport's vphys_list. + */ + if (port != mport) { + if (!mport->vphys_mask) + INIT_LIST_HEAD( + &mport->vphys_list); + mport->vphys_mask |= (1 << i); + port->vphys_mask &= ~(1 << i); + list_move(&vphy->list, + &mport->vphys_list); + sas_device = mpt3sas_get_sdev_by_addr( + ioc, attached_sas_addr, port); + if (sas_device) + sas_device->port = mport; + } + /* + * Earlier while updating the hba_port table, + * it is determined that there is no other + * direct attached device with mport's Port ID, + * Hence mport was marked as dirty. Only vSES + * device has this Port ID, so unmark the mport + * as dirt. + */ + if (mport->flags & HBA_PORT_FLAG_DIRTY_PORT) { + mport->sas_address = 0; + mport->phy_mask = 0; + mport->flags &= + ~HBA_PORT_FLAG_DIRTY_PORT; + } + /* + * Unmark current virtual_phy object as dirty. + */ + vphy->flags &= ~MPT_VPHY_FLAG_DIRTY_PHY; + found = 1; + break; + } + if (found) + break; + } + } +out: + kfree(sas_iounit_pg0); +} + +/** + * _scsih_get_port_table_after_reset - Construct temporary port table + * @ioc: per adapter object + * @port_table: address where port table needs to be constructed + * + * return number of HBA port entries available after reset. + */ +static int +_scsih_get_port_table_after_reset(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *port_table) +{ + u16 sz, ioc_status; + int i, j; + Mpi2ConfigReply_t mpi_reply; + Mpi2SasIOUnitPage0_t *sas_iounit_pg0 = NULL; + u16 attached_handle; + u64 attached_sas_addr; + u8 found = 0, port_count = 0, port_id; + + sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys + * sizeof(Mpi2SasIOUnit0PhyData_t)); + sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL); + if (!sas_iounit_pg0) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + return port_count; + } + + if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, + sas_iounit_pg0, sz)) != 0) + goto out; + ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & MPI2_IOCSTATUS_MASK; + if (ioc_status != MPI2_IOCSTATUS_SUCCESS) + goto out; + for (i = 0; i < ioc->sas_hba.num_phys; i++) { + found = 0; + if ((sas_iounit_pg0->PhyData[i].NegotiatedLinkRate >> 4) < + MPI2_SAS_NEG_LINK_RATE_1_5) + continue; + attached_handle = + le16_to_cpu(sas_iounit_pg0->PhyData[i].AttachedDevHandle); + if (_scsih_get_sas_address( + ioc, attached_handle, &attached_sas_addr) != 0) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + continue; + } + + for (j = 0; j < port_count; j++) { + port_id = sas_iounit_pg0->PhyData[i].Port; + if (port_table[j].port_id == port_id && + port_table[j].sas_address == attached_sas_addr) { + port_table[j].phy_mask |= (1 << i); + found = 1; + break; + } + } + + if (found) + continue; + + port_id = sas_iounit_pg0->PhyData[i].Port; + port_table[port_count].port_id = port_id; + port_table[port_count].phy_mask = (1 << i); + port_table[port_count].sas_address = attached_sas_addr; + port_count++; + } +out: + kfree(sas_iounit_pg0); + return port_count; +} + +enum hba_port_matched_codes { + NOT_MATCHED = 0, + MATCHED_WITH_ADDR_AND_PHYMASK, + MATCHED_WITH_ADDR_SUBPHYMASK_AND_PORT, + MATCHED_WITH_ADDR_AND_SUBPHYMASK, + MATCHED_WITH_ADDR, +}; + +/** + * _scsih_look_and_get_matched_port_entry - Get matched hba port entry + * from HBA port table + * @ioc: per adapter object + * @port_entry - hba port entry from temporary port table which needs to be + * searched for matched entry in the HBA port table + * @matched_port_entry - save matched hba port entry here + * @count - count of matched entries + * + * return type of matched entry found. + */ +static enum hba_port_matched_codes +_scsih_look_and_get_matched_port_entry(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *port_entry, + struct hba_port **matched_port_entry, int *count) +{ + struct hba_port *port_table_entry, *matched_port = NULL; + enum hba_port_matched_codes matched_code = NOT_MATCHED; + int lcount = 0; + *matched_port_entry = NULL; + + list_for_each_entry(port_table_entry, &ioc->port_table_list, list) { + if (!(port_table_entry->flags & HBA_PORT_FLAG_DIRTY_PORT)) + continue; + + if ((port_table_entry->sas_address == port_entry->sas_address) + && (port_table_entry->phy_mask == port_entry->phy_mask)) { + matched_code = MATCHED_WITH_ADDR_AND_PHYMASK; + matched_port = port_table_entry; + break; + } + + if ((port_table_entry->sas_address == port_entry->sas_address) + && (port_table_entry->phy_mask & port_entry->phy_mask) + && (port_table_entry->port_id == port_entry->port_id)) { + matched_code = MATCHED_WITH_ADDR_SUBPHYMASK_AND_PORT; + matched_port = port_table_entry; + continue; + } + + if ((port_table_entry->sas_address == port_entry->sas_address) + && (port_table_entry->phy_mask & port_entry->phy_mask)) { + if (matched_code == + MATCHED_WITH_ADDR_SUBPHYMASK_AND_PORT) + continue; + matched_code = MATCHED_WITH_ADDR_AND_SUBPHYMASK; + matched_port = port_table_entry; + continue; + } + + if (port_table_entry->sas_address == port_entry->sas_address) { + if (matched_code == + MATCHED_WITH_ADDR_SUBPHYMASK_AND_PORT) + continue; + if (matched_code == MATCHED_WITH_ADDR_AND_SUBPHYMASK) + continue; + matched_code = MATCHED_WITH_ADDR; + matched_port = port_table_entry; + lcount++; + } + } + + *matched_port_entry = matched_port; + if (matched_code == MATCHED_WITH_ADDR) + *count = lcount; + return matched_code; +} + +/** + * _scsih_del_phy_part_of_anther_port - remove phy if it + * is a part of anther port + *@ioc: per adapter object + *@port_table: port table after reset + *@index: hba port entry index + *@port_count: number of ports available after host reset + *@offset: HBA phy bit offset + * + */ +static void +_scsih_del_phy_part_of_anther_port(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *port_table, + int index, u8 port_count, int offset) +{ + struct _sas_node *sas_node = &ioc->sas_hba; + u32 i, found = 0; + + for (i = 0; i < port_count; i++) { + if (i == index) + continue; + + if (port_table[i].phy_mask & (1 << offset)) { + mpt3sas_transport_del_phy_from_an_existing_port( + ioc, sas_node, &sas_node->phy[offset]); + found = 1; + break; + } + } + if (!found) + port_table[index].phy_mask |= (1 << offset); +} + +/** + * _scsih_add_or_del_phys_from_existing_port - add/remove phy to/from + * right port + *@ioc: per adapter object + *@hba_port_entry: hba port table entry + *@port_table: temporary port table + *@index: hba port entry index + *@port_count: number of ports available after host reset + * + */ +static void +_scsih_add_or_del_phys_from_existing_port(struct MPT3SAS_ADAPTER *ioc, + struct hba_port *hba_port_entry, struct hba_port *port_table, + int index, int port_count) +{ + u32 phy_mask, offset = 0; + struct _sas_node *sas_node = &ioc->sas_hba; + + phy_mask = hba_port_entry->phy_mask ^ port_table[index].phy_mask; + + for (offset = 0; offset < ioc->sas_hba.num_phys; offset++) { + if (phy_mask & (1 << offset)) { + if (!(port_table[index].phy_mask & (1 << offset))) { + _scsih_del_phy_part_of_anther_port( + ioc, port_table, index, port_count, + offset); + continue; + } + if (sas_node->phy[offset].phy_belongs_to_port) + mpt3sas_transport_del_phy_from_an_existing_port( + ioc, sas_node, &sas_node->phy[offset]); + mpt3sas_transport_add_phy_to_an_existing_port( + ioc, sas_node, &sas_node->phy[offset], + hba_port_entry->sas_address, + hba_port_entry); + } + } +} + +/** + * _scsih_del_dirty_vphy - delete virtual_phy objects marked as dirty. + * @ioc: per adapter object + * + * Returns nothing. + */ +static void +_scsih_del_dirty_vphy(struct MPT3SAS_ADAPTER *ioc) +{ + struct hba_port *port, *port_next; + struct virtual_phy *vphy, *vphy_next; + + list_for_each_entry_safe(port, port_next, + &ioc->port_table_list, list) { + if (!port->vphys_mask) + continue; + list_for_each_entry_safe(vphy, vphy_next, + &port->vphys_list, list) { + if (vphy->flags & MPT_VPHY_FLAG_DIRTY_PHY) { + drsprintk(ioc, ioc_info(ioc, + "Deleting vphy %p entry from port id: %d\t, Phy_mask 0x%08x\n", + vphy, port->port_id, + vphy->phy_mask)); + port->vphys_mask &= ~vphy->phy_mask; + list_del(&vphy->list); + kfree(vphy); + } + } + if (!port->vphys_mask && !port->sas_address) + port->flags |= HBA_PORT_FLAG_DIRTY_PORT; + } +} + +/** + * _scsih_del_dirty_port_entries - delete dirty port entries from port list + * after host reset + *@ioc: per adapter object + * + */ +static void +_scsih_del_dirty_port_entries(struct MPT3SAS_ADAPTER *ioc) +{ + struct hba_port *port, *port_next; + + list_for_each_entry_safe(port, port_next, + &ioc->port_table_list, list) { + if (!(port->flags & HBA_PORT_FLAG_DIRTY_PORT) || + port->flags & HBA_PORT_FLAG_NEW_PORT) + continue; + + drsprintk(ioc, ioc_info(ioc, + "Deleting port table entry %p having Port: %d\t Phy_mask 0x%08x\n", + port, port->port_id, port->phy_mask)); + list_del(&port->list); + kfree(port); + } +} + +/** + * _scsih_sas_port_refresh - Update HBA port table after host reset + * @ioc: per adapter object + */ +static void +_scsih_sas_port_refresh(struct MPT3SAS_ADAPTER *ioc) +{ + u32 port_count = 0; + struct hba_port *port_table; + struct hba_port *port_table_entry; + struct hba_port *port_entry = NULL; + int i, j, count = 0, lcount = 0; + int ret; + u64 sas_addr; + + drsprintk(ioc, ioc_info(ioc, + "updating ports for sas_host(0x%016llx)\n", + (unsigned long long)ioc->sas_hba.sas_address)); + + port_table = kcalloc(ioc->sas_hba.num_phys, + sizeof(struct hba_port), GFP_KERNEL); + if (!port_table) + return; + + port_count = _scsih_get_port_table_after_reset(ioc, port_table); + if (!port_count) + return; + + drsprintk(ioc, ioc_info(ioc, "New Port table\n")); + for (j = 0; j < port_count; j++) + drsprintk(ioc, ioc_info(ioc, + "Port: %d\t Phy_mask 0x%08x\t sas_addr(0x%016llx)\n", + port_table[j].port_id, + port_table[j].phy_mask, port_table[j].sas_address)); + + list_for_each_entry(port_table_entry, &ioc->port_table_list, list) + port_table_entry->flags |= HBA_PORT_FLAG_DIRTY_PORT; + + drsprintk(ioc, ioc_info(ioc, "Old Port table\n")); + port_table_entry = NULL; + list_for_each_entry(port_table_entry, &ioc->port_table_list, list) { + drsprintk(ioc, ioc_info(ioc, + "Port: %d\t Phy_mask 0x%08x\t sas_addr(0x%016llx)\n", + port_table_entry->port_id, + port_table_entry->phy_mask, + port_table_entry->sas_address)); + } + + for (j = 0; j < port_count; j++) { + ret = _scsih_look_and_get_matched_port_entry(ioc, + &port_table[j], &port_entry, &count); + if (!port_entry) { + drsprintk(ioc, ioc_info(ioc, + "No Matched entry for sas_addr(0x%16llx), Port:%d\n", + port_table[j].sas_address, + port_table[j].port_id)); + continue; + } + + switch (ret) { + case MATCHED_WITH_ADDR_SUBPHYMASK_AND_PORT: + case MATCHED_WITH_ADDR_AND_SUBPHYMASK: + _scsih_add_or_del_phys_from_existing_port(ioc, + port_entry, port_table, j, port_count); + break; + case MATCHED_WITH_ADDR: + sas_addr = port_table[j].sas_address; + for (i = 0; i < port_count; i++) { + if (port_table[i].sas_address == sas_addr) + lcount++; + } + + if (count > 1 || lcount > 1) + port_entry = NULL; + else + _scsih_add_or_del_phys_from_existing_port(ioc, + port_entry, port_table, j, port_count); + } + + if (!port_entry) + continue; + + if (port_entry->port_id != port_table[j].port_id) + port_entry->port_id = port_table[j].port_id; + port_entry->flags &= ~HBA_PORT_FLAG_DIRTY_PORT; + port_entry->phy_mask = port_table[j].phy_mask; + } + + port_table_entry = NULL; +} + +/** + * _scsih_alloc_vphy - allocate virtual_phy object + * @ioc: per adapter object + * @port_id: Port ID number + * @phy_num: HBA Phy number + * + * Returns allocated virtual_phy object. + */ +static struct virtual_phy * +_scsih_alloc_vphy(struct MPT3SAS_ADAPTER *ioc, u8 port_id, u8 phy_num) +{ + struct virtual_phy *vphy; + struct hba_port *port; + + port = mpt3sas_get_port_by_id(ioc, port_id, 0); + if (!port) + return NULL; + + vphy = mpt3sas_get_vphy_by_phy(ioc, port, phy_num); + if (!vphy) { + vphy = kzalloc(sizeof(struct virtual_phy), GFP_KERNEL); + if (!vphy) + return NULL; + + /* + * Enable bit corresponding to HBA phy number on its + * parent hba_port object's vphys_mask field. + */ + port->vphys_mask |= (1 << phy_num); + vphy->phy_mask |= (1 << phy_num); + + INIT_LIST_HEAD(&port->vphys_list); + list_add_tail(&vphy->list, &port->vphys_list); + + ioc_info(ioc, + "vphy entry: %p, port id: %d, phy:%d is added to port's vphys_list\n", + vphy, port->port_id, phy_num); + } + return vphy; +} + +/** * _scsih_sas_host_refresh - refreshing sas host object contents * @ioc: per adapter object * Context: user @@ -5533,7 +6309,9 @@ Mpi2ConfigReply_t mpi_reply; Mpi2SasIOUnitPage0_t *sas_iounit_pg0 = NULL; u16 attached_handle; - u8 link_rate; + u8 link_rate, port_id; + struct hba_port *port; + Mpi2SasPhyPage0_t phy_pg0; dtmprintk(ioc, ioc_info(ioc, "updating handles for sas_host(0x%016llx)\n", @@ -5557,15 +6335,57 @@ for (i = 0; i < ioc->sas_hba.num_phys ; i++) { link_rate = sas_iounit_pg0->PhyData[i].NegotiatedLinkRate >> 4; if (i == 0) - ioc->sas_hba.handle = le16_to_cpu(sas_iounit_pg0-> - PhyData[0].ControllerDevHandle); + ioc->sas_hba.handle = le16_to_cpu( + sas_iounit_pg0->PhyData[0].ControllerDevHandle); + port_id = sas_iounit_pg0->PhyData[i].Port; + if (!(mpt3sas_get_port_by_id(ioc, port_id, 0))) { + port = kzalloc(sizeof(struct hba_port), GFP_KERNEL); + if (!port) + goto out; + + port->port_id = port_id; + ioc_info(ioc, + "hba_port entry: %p, port: %d is added to hba_port list\n", + port, port->port_id); + if (ioc->shost_recovery) + port->flags = HBA_PORT_FLAG_NEW_PORT; + list_add_tail(&port->list, &ioc->port_table_list); + } + /* + * Check whether current Phy belongs to HBA vSES device or not. + */ + if (le32_to_cpu(sas_iounit_pg0->PhyData[i].ControllerPhyDeviceInfo) & + MPI2_SAS_DEVICE_INFO_SEP && + (link_rate >= MPI2_SAS_NEG_LINK_RATE_1_5)) { + if ((mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, + &phy_pg0, i))) { + ioc_err(ioc, + "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + goto out; + } + if (!(le32_to_cpu(phy_pg0.PhyInfo) & + MPI2_SAS_PHYINFO_VIRTUAL_PHY)) + continue; + /* + * Allocate a virtual_phy object for vSES device, if + * this vSES device is hot added. + */ + if (!_scsih_alloc_vphy(ioc, port_id, i)) + goto out; + ioc->sas_hba.phy[i].hba_vphy = 1; + } + ioc->sas_hba.phy[i].handle = ioc->sas_hba.handle; attached_handle = le16_to_cpu(sas_iounit_pg0->PhyData[i]. AttachedDevHandle); if (attached_handle && link_rate < MPI2_SAS_NEG_LINK_RATE_1_5) link_rate = MPI2_SAS_NEG_LINK_RATE_1_5; + ioc->sas_hba.phy[i].port = + mpt3sas_get_port_by_id(ioc, port_id, 0); mpt3sas_transport_update_links(ioc, ioc->sas_hba.sas_address, - attached_handle, i, link_rate); + attached_handle, i, link_rate, + ioc->sas_hba.phy[i].port); } out: kfree(sas_iounit_pg0); @@ -5590,7 +6410,8 @@ u16 ioc_status; u16 sz; u8 device_missing_delay; - u8 num_phys; + u8 num_phys, port_id; + struct hba_port *port; mpt3sas_config_get_number_hba_phys(ioc, &num_phys); if (!num_phys) { @@ -5683,8 +6504,40 @@ if (i == 0) ioc->sas_hba.handle = le16_to_cpu(sas_iounit_pg0-> PhyData[0].ControllerDevHandle); + + port_id = sas_iounit_pg0->PhyData[i].Port; + if (!(mpt3sas_get_port_by_id(ioc, port_id, 0))) { + port = kzalloc(sizeof(struct hba_port), GFP_KERNEL); + if (!port) + goto out; + + port->port_id = port_id; + ioc_info(ioc, + "hba_port entry: %p, port: %d is added to hba_port list\n", + port, port->port_id); + list_add_tail(&port->list, + &ioc->port_table_list); + } + + /* + * Check whether current Phy belongs to HBA vSES device or not. + */ + if ((le32_to_cpu(phy_pg0.PhyInfo) & + MPI2_SAS_PHYINFO_VIRTUAL_PHY) && + (phy_pg0.NegotiatedLinkRate >> 4) >= + MPI2_SAS_NEG_LINK_RATE_1_5) { + /* + * Allocate a virtual_phy object for vSES device. + */ + if (!_scsih_alloc_vphy(ioc, port_id, i)) + goto out; + ioc->sas_hba.phy[i].hba_vphy = 1; + } + ioc->sas_hba.phy[i].handle = ioc->sas_hba.handle; ioc->sas_hba.phy[i].phy_id = i; + ioc->sas_hba.phy[i].port = + mpt3sas_get_port_by_id(ioc, port_id, 0); mpt3sas_transport_add_host_phy(ioc, &ioc->sas_hba.phy[i], phy_pg0, ioc->sas_hba.parent_dev); } @@ -5738,6 +6591,7 @@ int i; unsigned long flags; struct _sas_port *mpt3sas_port = NULL; + u8 port_id; int rc = 0; @@ -5770,10 +6624,13 @@ __FILE__, __LINE__, __func__); return -1; } + + port_id = expander_pg0.PhysicalPort; if (sas_address_parent != ioc->sas_hba.sas_address) { spin_lock_irqsave(&ioc->sas_node_lock, flags); sas_expander = mpt3sas_scsih_expander_find_by_sas_address(ioc, - sas_address_parent); + sas_address_parent, + mpt3sas_get_port_by_id(ioc, port_id, 0)); spin_unlock_irqrestore(&ioc->sas_node_lock, flags); if (!sas_expander) { rc = _scsih_expander_add(ioc, parent_handle); @@ -5785,7 +6642,7 @@ spin_lock_irqsave(&ioc->sas_node_lock, flags); sas_address = le64_to_cpu(expander_pg0.SASAddress); sas_expander = mpt3sas_scsih_expander_find_by_sas_address(ioc, - sas_address); + sas_address, mpt3sas_get_port_by_id(ioc, port_id, 0)); spin_unlock_irqrestore(&ioc->sas_node_lock, flags); if (sas_expander) @@ -5803,6 +6660,13 @@ sas_expander->num_phys = expander_pg0.NumPhys; sas_expander->sas_address_parent = sas_address_parent; sas_expander->sas_address = sas_address; + sas_expander->port = mpt3sas_get_port_by_id(ioc, port_id, 0); + if (!sas_expander->port) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + rc = -1; + goto out_fail; + } ioc_info(ioc, "expander_add: handle(0x%04x), parent(0x%04x), sas_addr(0x%016llx), phys(%d)\n", handle, parent_handle, @@ -5821,7 +6685,7 @@ INIT_LIST_HEAD(&sas_expander->sas_port_list); mpt3sas_port = mpt3sas_transport_port_add(ioc, handle, - sas_address_parent); + sas_address_parent, sas_expander->port); if (!mpt3sas_port) { ioc_err(ioc, "failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); @@ -5829,6 +6693,7 @@ goto out_fail; } sas_expander->parent_dev = &mpt3sas_port->rphy->dev; + sas_expander->rphy = mpt3sas_port->rphy; for (i = 0 ; i < sas_expander->num_phys ; i++) { if ((mpt3sas_config_get_expander_pg1(ioc, &mpi_reply, @@ -5840,6 +6705,8 @@ } sas_expander->phy[i].handle = handle; sas_expander->phy[i].phy_id = i; + sas_expander->phy[i].port = + mpt3sas_get_port_by_id(ioc, port_id, 0); if ((mpt3sas_transport_add_expander_phy(ioc, &sas_expander->phy[i], expander_pg1, @@ -5867,7 +6734,7 @@ if (mpt3sas_port) mpt3sas_transport_port_remove(ioc, sas_expander->sas_address, - sas_address_parent); + sas_address_parent, sas_expander->port); kfree(sas_expander); return rc; } @@ -5878,7 +6745,8 @@ * @sas_address: expander sas_address */ void -mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address) +mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, + struct hba_port *port) { struct _sas_node *sas_expander; unsigned long flags; @@ -5886,9 +6754,12 @@ if (ioc->shost_recovery) return; + if (!port) + return; + spin_lock_irqsave(&ioc->sas_node_lock, flags); sas_expander = mpt3sas_scsih_expander_find_by_sas_address(ioc, - sas_address); + sas_address, port); spin_unlock_irqrestore(&ioc->sas_node_lock, flags); if (sas_expander) _scsih_expander_node_remove(ioc, sas_expander); @@ -6011,7 +6882,7 @@ { Mpi2ConfigReply_t mpi_reply; Mpi2SasDevicePage0_t sas_device_pg0; - struct _sas_device *sas_device; + struct _sas_device *sas_device = NULL; struct _enclosure_node *enclosure_dev = NULL; u32 ioc_status; unsigned long flags; @@ -6019,6 +6890,7 @@ struct scsi_target *starget; struct MPT3SAS_TARGET *sas_target_priv_data; u32 device_info; + struct hba_port *port; if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) @@ -6041,8 +6913,11 @@ spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_address = le64_to_cpu(sas_device_pg0.SASAddress); + port = mpt3sas_get_port_by_id(ioc, sas_device_pg0.PhysicalPort, 0); + if (!port) + goto out_unlock; sas_device = __mpt3sas_get_sdev_by_addr(ioc, - sas_address); + sas_address, port); if (!sas_device) goto out_unlock; @@ -6098,7 +6973,7 @@ goto out_unlock; spin_unlock_irqrestore(&ioc->sas_device_lock, flags); - _scsih_ublock_io_device(ioc, sas_address); + _scsih_ublock_io_device(ioc, sas_address, port); if (sas_device) sas_device_put(sas_device); @@ -6132,6 +7007,7 @@ u32 ioc_status; u64 sas_address; u32 device_info; + u8 port_id; if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) { @@ -6168,8 +7044,9 @@ sas_device_pg0.AccessStatus)) return -1; + port_id = sas_device_pg0.PhysicalPort; sas_device = mpt3sas_get_sdev_by_addr(ioc, - sas_address); + sas_address, mpt3sas_get_port_by_id(ioc, port_id, 0)); if (sas_device) { clear_bit(handle, ioc->pend_os_device_add); sas_device_put(sas_device); @@ -6210,6 +7087,12 @@ sas_device->phy = sas_device_pg0.PhyNum; sas_device->fast_path = (le16_to_cpu(sas_device_pg0.Flags) & MPI25_SAS_DEVICE0_FLAGS_FAST_PATH_CAPABLE) ? 1 : 0; + sas_device->port = mpt3sas_get_port_by_id(ioc, port_id, 0); + if (!sas_device->port) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + goto out; + } if (le16_to_cpu(sas_device_pg0.Flags) & MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) { @@ -6243,6 +7126,7 @@ else _scsih_sas_device_add(ioc, sas_device); +out: sas_device_put(sas_device); return 0; } @@ -6275,7 +7159,8 @@ if (sas_device->starget && sas_device->starget->hostdata) { sas_target_priv_data = sas_device->starget->hostdata; sas_target_priv_data->deleted = 1; - _scsih_ublock_io_device(ioc, sas_device->sas_address); + _scsih_ublock_io_device(ioc, sas_device->sas_address, + sas_device->port); sas_target_priv_data->handle = MPT3SAS_INVALID_DEVICE_HANDLE; } @@ -6283,7 +7168,8 @@ if (!ioc->hide_drives) mpt3sas_transport_port_remove(ioc, sas_device->sas_address, - sas_device->sas_address_parent); + sas_device->sas_address_parent, + sas_device->port); ioc_info(ioc, "removing handle(0x%04x), sas_addr(0x%016llx)\n", sas_device->handle, (u64)sas_device->sas_address); @@ -6394,6 +7280,7 @@ u64 sas_address; unsigned long flags; u8 link_rate, prev_link_rate; + struct hba_port *port; Mpi2EventDataSasTopologyChangeList_t *event_data = (Mpi2EventDataSasTopologyChangeList_t *) fw_event->event_data; @@ -6415,6 +7302,7 @@ } parent_handle = le16_to_cpu(event_data->ExpanderDevHandle); + port = mpt3sas_get_port_by_id(ioc, event_data->PhysicalPort, 0); /* handle expander add */ if (event_data->ExpStatus == MPI2_EVENT_SAS_TOPO_ES_ADDED) @@ -6427,6 +7315,7 @@ if (sas_expander) { sas_address = sas_expander->sas_address; max_phys = sas_expander->num_phys; + port = sas_expander->port; } else if (parent_handle < ioc->sas_hba.num_phys) { sas_address = ioc->sas_hba.sas_address; max_phys = ioc->sas_hba.num_phys; @@ -6469,7 +7358,7 @@ break; mpt3sas_transport_update_links(ioc, sas_address, - handle, phy_number, link_rate); + handle, phy_number, link_rate, port); if (link_rate < MPI2_SAS_NEG_LINK_RATE_1_5) break; @@ -6488,7 +7377,7 @@ break; mpt3sas_transport_update_links(ioc, sas_address, - handle, phy_number, link_rate); + handle, phy_number, link_rate, port); _scsih_add_device(ioc, handle, phy_number, 0); @@ -6503,7 +7392,7 @@ /* handle expander removal */ if (event_data->ExpStatus == MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING && sas_expander) - mpt3sas_expander_remove(ioc, sas_address); + mpt3sas_expander_remove(ioc, sas_address, port); return 0; } @@ -6604,7 +7493,8 @@ spin_lock_irqsave(&ioc->sas_device_lock, flags); sas_address = le64_to_cpu(event_data->SASAddress); sas_device = __mpt3sas_get_sdev_by_addr(ioc, - sas_address); + sas_address, + mpt3sas_get_port_by_id(ioc, event_data->PhysicalPort, 0)); if (!sas_device || !sas_device->starget) goto out; @@ -6753,7 +7643,7 @@ if (pcie_device->starget && pcie_device->starget->hostdata) { sas_target_priv_data = pcie_device->starget->hostdata; sas_target_priv_data->deleted = 1; - _scsih_ublock_io_device(ioc, pcie_device->wwid); + _scsih_ublock_io_device(ioc, pcie_device->wwid, NULL); sas_target_priv_data->handle = MPT3SAS_INVALID_DEVICE_HANDLE; } @@ -6875,7 +7765,7 @@ spin_unlock_irqrestore(&ioc->pcie_device_lock, flags); pcie_device_put(pcie_device); - _scsih_ublock_io_device(ioc, wwid); + _scsih_ublock_io_device(ioc, wwid, NULL); return; } @@ -8044,7 +8934,9 @@ parent_handle = le16_to_cpu(sas_device_pg0.ParentDevHandle); if (!_scsih_get_sas_address(ioc, parent_handle, &sas_address)) mpt3sas_transport_update_links(ioc, sas_address, handle, - sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5); + sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5, + mpt3sas_get_port_by_id(ioc, + sas_device_pg0.PhysicalPort, 0)); _scsih_ir_fastpath(ioc, handle, element->PhysDiskNum); _scsih_add_device(ioc, handle, 0, 1); @@ -8350,7 +9242,9 @@ parent_handle = le16_to_cpu(sas_device_pg0.ParentDevHandle); if (!_scsih_get_sas_address(ioc, parent_handle, &sas_address)) mpt3sas_transport_update_links(ioc, sas_address, handle, - sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5); + sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5, + mpt3sas_get_port_by_id(ioc, + sas_device_pg0.PhysicalPort, 0)); _scsih_add_device(ioc, handle, 0, 1); @@ -8475,6 +9369,8 @@ struct _sas_device *sas_device = NULL; struct _enclosure_node *enclosure_dev = NULL; unsigned long flags; + struct hba_port *port = mpt3sas_get_port_by_id( + ioc, sas_device_pg0->PhysicalPort, 0); if (sas_device_pg0->EnclosureHandle) { enclosure_dev = @@ -8486,69 +9382,71 @@ } spin_lock_irqsave(&ioc->sas_device_lock, flags); list_for_each_entry(sas_device, &ioc->sas_device_list, list) { - if ((sas_device->sas_address == le64_to_cpu( - sas_device_pg0->SASAddress)) && (sas_device->slot == - le16_to_cpu(sas_device_pg0->Slot))) { - sas_device->responding = 1; - starget = sas_device->starget; - if (starget && starget->hostdata) { - sas_target_priv_data = starget->hostdata; - sas_target_priv_data->tm_busy = 0; - sas_target_priv_data->deleted = 0; - } else - sas_target_priv_data = NULL; - if (starget) { - starget_printk(KERN_INFO, starget, - "handle(0x%04x), sas_addr(0x%016llx)\n", - le16_to_cpu(sas_device_pg0->DevHandle), - (unsigned long long) - sas_device->sas_address); + if (sas_device->sas_address != le64_to_cpu( + sas_device_pg0->SASAddress)) + continue; + if (sas_device->slot != le16_to_cpu(sas_device_pg0->Slot)) + continue; + if (sas_device->port != port) + continue; + sas_device->responding = 1; + starget = sas_device->starget; + if (starget && starget->hostdata) { + sas_target_priv_data = starget->hostdata; + sas_target_priv_data->tm_busy = 0; + sas_target_priv_data->deleted = 0; + } else + sas_target_priv_data = NULL; + if (starget) { + starget_printk(KERN_INFO, starget, + "handle(0x%04x), sas_addr(0x%016llx)\n", + le16_to_cpu(sas_device_pg0->DevHandle), + (unsigned long long) + sas_device->sas_address); - if (sas_device->enclosure_handle != 0) - starget_printk(KERN_INFO, starget, - "enclosure logical id(0x%016llx)," - " slot(%d)\n", - (unsigned long long) - sas_device->enclosure_logical_id, - sas_device->slot); - } - if (le16_to_cpu(sas_device_pg0->Flags) & - MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) { - sas_device->enclosure_level = - sas_device_pg0->EnclosureLevel; - memcpy(&sas_device->connector_name[0], - &sas_device_pg0->ConnectorName[0], 4); - } else { - sas_device->enclosure_level = 0; - sas_device->connector_name[0] = '\0'; - } + if (sas_device->enclosure_handle != 0) + starget_printk(KERN_INFO, starget, + "enclosure logical id(0x%016llx), slot(%d)\n", + (unsigned long long) + sas_device->enclosure_logical_id, + sas_device->slot); + } + if (le16_to_cpu(sas_device_pg0->Flags) & + MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) { + sas_device->enclosure_level = + sas_device_pg0->EnclosureLevel; + memcpy(&sas_device->connector_name[0], + &sas_device_pg0->ConnectorName[0], 4); + } else { + sas_device->enclosure_level = 0; + sas_device->connector_name[0] = '\0'; + } - sas_device->enclosure_handle = - le16_to_cpu(sas_device_pg0->EnclosureHandle); - sas_device->is_chassis_slot_valid = 0; - if (enclosure_dev) { - sas_device->enclosure_logical_id = le64_to_cpu( - enclosure_dev->pg0.EnclosureLogicalID); - if (le16_to_cpu(enclosure_dev->pg0.Flags) & - MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) { - sas_device->is_chassis_slot_valid = 1; - sas_device->chassis_slot = - enclosure_dev->pg0.ChassisSlot; - } + sas_device->enclosure_handle = + le16_to_cpu(sas_device_pg0->EnclosureHandle); + sas_device->is_chassis_slot_valid = 0; + if (enclosure_dev) { + sas_device->enclosure_logical_id = le64_to_cpu( + enclosure_dev->pg0.EnclosureLogicalID); + if (le16_to_cpu(enclosure_dev->pg0.Flags) & + MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID) { + sas_device->is_chassis_slot_valid = 1; + sas_device->chassis_slot = + enclosure_dev->pg0.ChassisSlot; } + } - if (sas_device->handle == le16_to_cpu( - sas_device_pg0->DevHandle)) - goto out; - pr_info("\thandle changed from(0x%04x)!!!\n", - sas_device->handle); - sas_device->handle = le16_to_cpu( - sas_device_pg0->DevHandle); - if (sas_target_priv_data) - sas_target_priv_data->handle = - le16_to_cpu(sas_device_pg0->DevHandle); + if (sas_device->handle == le16_to_cpu( + sas_device_pg0->DevHandle)) goto out; - } + pr_info("\thandle changed from(0x%04x)!!!\n", + sas_device->handle); + sas_device->handle = le16_to_cpu( + sas_device_pg0->DevHandle); + if (sas_target_priv_data) + sas_target_priv_data->handle = + le16_to_cpu(sas_device_pg0->DevHandle); + goto out; } out: spin_unlock_irqrestore(&ioc->sas_device_lock, flags); @@ -8899,6 +9797,8 @@ u16 handle = le16_to_cpu(expander_pg0->DevHandle); u16 enclosure_handle = le16_to_cpu(expander_pg0->EnclosureHandle); u64 sas_address = le64_to_cpu(expander_pg0->SASAddress); + struct hba_port *port = mpt3sas_get_port_by_id( + ioc, expander_pg0->PhysicalPort, 0); if (enclosure_handle) enclosure_dev = @@ -8909,6 +9809,8 @@ list_for_each_entry(sas_expander, &ioc->sas_expander_list, list) { if (sas_expander->sas_address != sas_address) continue; + if (sas_expander->port != port) + continue; sas_expander->responding = 1; if (enclosure_dev) { @@ -8948,6 +9850,7 @@ u16 ioc_status; u64 sas_address; u16 handle; + u8 port; ioc_info(ioc, "search for expanders: start\n"); @@ -8965,9 +9868,12 @@ handle = le16_to_cpu(expander_pg0.DevHandle); sas_address = le64_to_cpu(expander_pg0.SASAddress); - pr_info("\texpander present: handle(0x%04x), sas_addr(0x%016llx)\n", - handle, - (unsigned long long)sas_address); + port = expander_pg0.PhysicalPort; + pr_info( + "\texpander present: handle(0x%04x), sas_addr(0x%016llx), port:%d\n", + handle, (unsigned long long)sas_address, + (ioc->multipath_on_hba ? + port : MULTIPATH_DISABLED_PORT_ID)); _scsih_mark_responding_expander(ioc, &expander_pg0); } @@ -9089,7 +9995,8 @@ mpt3sas_transport_update_links(ioc, sas_expander->sas_address, le16_to_cpu(expander_pg1.AttachedDevHandle), i, - expander_pg1.NegotiatedLinkRate >> 4); + expander_pg1.NegotiatedLinkRate >> 4, + sas_expander->port); } } @@ -9108,7 +10015,7 @@ Mpi2RaidPhysDiskPage0_t pd_pg0; Mpi2EventIrConfigElement_t element; Mpi2ConfigReply_t mpi_reply; - u8 phys_disk_num; + u8 phys_disk_num, port_id; u16 ioc_status; u16 handle, parent_handle; u64 sas_address; @@ -9138,8 +10045,10 @@ } handle = le16_to_cpu(expander_pg0.DevHandle); spin_lock_irqsave(&ioc->sas_node_lock, flags); + port_id = expander_pg0.PhysicalPort; expander_device = mpt3sas_scsih_expander_find_by_sas_address( - ioc, le64_to_cpu(expander_pg0.SASAddress)); + ioc, le64_to_cpu(expander_pg0.SASAddress), + mpt3sas_get_port_by_id(ioc, port_id, 0)); spin_unlock_irqrestore(&ioc->sas_node_lock, flags); if (expander_device) _scsih_refresh_expander_links(ioc, expander_device, @@ -9198,9 +10107,11 @@ ioc_info(ioc, "\tBEFORE adding phys disk: handle (0x%04x), sas_addr(0x%016llx)\n", handle, (u64)le64_to_cpu(sas_device_pg0.SASAddress)); + port_id = sas_device_pg0.PhysicalPort; mpt3sas_transport_update_links(ioc, sas_address, handle, sas_device_pg0.PhyNum, - MPI2_SAS_NEG_LINK_RATE_1_5); + MPI2_SAS_NEG_LINK_RATE_1_5, + mpt3sas_get_port_by_id(ioc, port_id, 0)); set_bit(handle, ioc->pd_handles); retry_count = 0; /* This will retry adding the end device. @@ -9286,8 +10197,10 @@ if (!(_scsih_is_end_device( le32_to_cpu(sas_device_pg0.DeviceInfo)))) continue; + port_id = sas_device_pg0.PhysicalPort; sas_device = mpt3sas_get_sdev_by_addr(ioc, - le64_to_cpu(sas_device_pg0.SASAddress)); + le64_to_cpu(sas_device_pg0.SASAddress), + mpt3sas_get_port_by_id(ioc, port_id, 0)); if (sas_device) { sas_device_put(sas_device); continue; @@ -9298,7 +10211,8 @@ handle, (u64)le64_to_cpu(sas_device_pg0.SASAddress)); mpt3sas_transport_update_links(ioc, sas_address, handle, - sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5); + sas_device_pg0.PhyNum, MPI2_SAS_NEG_LINK_RATE_1_5, + mpt3sas_get_port_by_id(ioc, port_id, 0)); retry_count = 0; /* This will retry adding the end device. * _scsih_add_device() will decide on retries and @@ -9402,6 +10316,10 @@ dtmprintk(ioc, ioc_info(ioc, "%s: MPT3_IOC_DONE_RESET\n", __func__)); if ((!ioc->is_driver_loading) && !(disable_discovery > 0 && !ioc->sas_hba.num_phys)) { + if (ioc->multipath_on_hba) { + _scsih_sas_port_refresh(ioc); + _scsih_update_vphys_after_reset(ioc); + } _scsih_prep_device_scan(ioc); _scsih_create_enclosure_list_after_reset(ioc); _scsih_search_responding_sas_devices(ioc); @@ -9447,6 +10365,8 @@ ssleep(1); } _scsih_remove_unresponding_devices(ioc); + _scsih_del_dirty_vphy(ioc); + _scsih_del_dirty_port_entries(ioc); _scsih_scan_for_devices_after_reset(ioc); _scsih_set_nvme_max_shutdown_latency(ioc); break; @@ -9727,21 +10647,25 @@ if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) mpt3sas_device_remove_by_sas_address(ioc, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); else if (mpt3sas_port->remote_identify.device_type == SAS_EDGE_EXPANDER_DEVICE || mpt3sas_port->remote_identify.device_type == SAS_FANOUT_EXPANDER_DEVICE) mpt3sas_expander_remove(ioc, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); } mpt3sas_transport_port_remove(ioc, sas_expander->sas_address, - sas_expander->sas_address_parent); + sas_expander->sas_address_parent, sas_expander->port); - ioc_info(ioc, "expander_remove: handle(0x%04x), sas_addr(0x%016llx)\n", - sas_expander->handle, (unsigned long long) - sas_expander->sas_address); + ioc_info(ioc, + "expander_remove: handle(0x%04x), sas_addr(0x%016llx), port:%d\n", + sas_expander->handle, (unsigned long long) + sas_expander->sas_address, + sas_expander->port->port_id); spin_lock_irqsave(&ioc->sas_node_lock, flags); list_del(&sas_expander->list); @@ -9905,6 +10829,7 @@ struct workqueue_struct *wq; unsigned long flags; Mpi2ConfigReply_t mpi_reply; + struct hba_port *port, *port_next; ioc->remove_host = 1; @@ -9955,13 +10880,21 @@ if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) mpt3sas_device_remove_by_sas_address(ioc, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); else if (mpt3sas_port->remote_identify.device_type == SAS_EDGE_EXPANDER_DEVICE || mpt3sas_port->remote_identify.device_type == SAS_FANOUT_EXPANDER_DEVICE) mpt3sas_expander_remove(ioc, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); + } + + list_for_each_entry_safe(port, port_next, + &ioc->port_table_list, list) { + list_del(&port->list); + kfree(port); } /* free phys attached to the sas_host */ @@ -10040,6 +10973,7 @@ unsigned long flags; int rc; int tid; + struct hba_port *port; /* no Bios, return immediately */ if (!ioc->bios_pg3.BiosVersion) @@ -10081,19 +11015,24 @@ handle = sas_device->handle; sas_address_parent = sas_device->sas_address_parent; sas_address = sas_device->sas_address; + port = sas_device->port; list_move_tail(&sas_device->list, &ioc->sas_device_list); spin_unlock_irqrestore(&ioc->sas_device_lock, flags); if (ioc->hide_drives) return; + + if (!port) + return; + if (!mpt3sas_transport_port_add(ioc, handle, - sas_address_parent)) { + sas_address_parent, port)) { _scsih_sas_device_remove(ioc, sas_device); } else if (!sas_device->starget) { if (!ioc->is_driver_loading) { mpt3sas_transport_port_remove(ioc, sas_address, - sas_address_parent); + sas_address_parent, port); _scsih_sas_device_remove(ioc, sas_device); } } @@ -10181,7 +11120,7 @@ while ((sas_device = get_next_sas_device(ioc))) { if (!mpt3sas_transport_port_add(ioc, sas_device->handle, - sas_device->sas_address_parent)) { + sas_device->sas_address_parent, sas_device->port)) { _scsih_sas_device_remove(ioc, sas_device); sas_device_put(sas_device); continue; @@ -10195,7 +11134,8 @@ if (!ioc->is_driver_loading) { mpt3sas_transport_port_remove(ioc, sas_device->sas_address, - sas_device->sas_address_parent); + sas_device->sas_address_parent, + sas_device->port); _scsih_sas_device_remove(ioc, sas_device); sas_device_put(sas_device); continue; @@ -10625,6 +11565,12 @@ ioc->mfg_pg10_hide_flag = MFG_PAGE10_EXPOSE_ALL_DISKS; break; } + + if (multipath_on_hba == -1 || multipath_on_hba == 0) + ioc->multipath_on_hba = 0; + else + ioc->multipath_on_hba = 1; + break; case MPI25_VERSION: case MPI26_VERSION: @@ -10672,6 +11618,23 @@ ioc->combined_reply_index_count = MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G3; } + + switch (ioc->is_gen35_ioc) { + case 0: + if (multipath_on_hba == -1 || multipath_on_hba == 0) + ioc->multipath_on_hba = 0; + else + ioc->multipath_on_hba = 1; + break; + case 1: + if (multipath_on_hba == -1 || multipath_on_hba > 0) + ioc->multipath_on_hba = 1; + else + ioc->multipath_on_hba = 0; + default: + break; + } + break; default: return -ENODEV; @@ -10732,6 +11695,7 @@ INIT_LIST_HEAD(&ioc->delayed_event_ack_list); INIT_LIST_HEAD(&ioc->delayed_tr_volume_list); INIT_LIST_HEAD(&ioc->reply_queue_list); + INIT_LIST_HEAD(&ioc->port_table_list); sprintf(ioc->name, "%s_cm%d", ioc->driver_name, ioc->id); --- linux-5.8.0.orig/drivers/scsi/mpt3sas/mpt3sas_transport.c +++ linux-5.8.0/drivers/scsi/mpt3sas/mpt3sas_transport.c @@ -61,9 +61,28 @@ #include "mpt3sas_base.h" /** + * _transport_get_port_id_by_sas_phy - get zone's port id that Phy belong to + * @phy - sas_phy object + * + * Return Port number + */ +static inline u8 +_transport_get_port_id_by_sas_phy(struct sas_phy *phy) +{ + u8 port_id = 0xFF; + struct hba_port *port = phy->hostdata; + + if (port) + port_id = port->port_id; + + return port_id; +} + +/** * _transport_sas_node_find_by_sas_address - sas node search * @ioc: per adapter object * @sas_address: sas address of expander or sas host + * @port: hba port entry * Context: Calling function should acquire ioc->sas_node_lock. * * Search for either hba phys or expander device based on handle, then returns @@ -71,13 +90,56 @@ */ static struct _sas_node * _transport_sas_node_find_by_sas_address(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address) + u64 sas_address, struct hba_port *port) { if (ioc->sas_hba.sas_address == sas_address) return &ioc->sas_hba; else return mpt3sas_scsih_expander_find_by_sas_address(ioc, - sas_address); + sas_address, port); +} + +/** + * _transport_get_port_id_by_rphy - Get Port number from rphy object + * @ioc: per adapter object + * @rphy: sas_rphy object + * + * Returns Port number. + */ +static u8 +_transport_get_port_id_by_rphy(struct MPT3SAS_ADAPTER *ioc, + struct sas_rphy *rphy) +{ + struct _sas_node *sas_expander; + struct _sas_device *sas_device; + unsigned long flags; + u8 port_id = 0xFF; + + if (!rphy) + return port_id; + + if (rphy->identify.device_type == SAS_EDGE_EXPANDER_DEVICE || + rphy->identify.device_type == SAS_FANOUT_EXPANDER_DEVICE) { + spin_lock_irqsave(&ioc->sas_node_lock, flags); + list_for_each_entry(sas_expander, + &ioc->sas_expander_list, list) { + if (sas_expander->rphy == rphy) { + port_id = sas_expander->port->port_id; + break; + } + } + spin_unlock_irqrestore(&ioc->sas_node_lock, flags); + } else if (rphy->identify.device_type == SAS_END_DEVICE) { + spin_lock_irqsave(&ioc->sas_device_lock, flags); + sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); + if (sas_device) { + port_id = sas_device->port->port_id; + sas_device_put(sas_device); + } + spin_unlock_irqrestore(&ioc->sas_device_lock, flags); + } + + return port_id; } /** @@ -288,7 +350,7 @@ */ static int _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address, struct sas_expander_device *edev) + u64 sas_address, struct sas_expander_device *edev, u8 port_id) { Mpi2SmpPassthroughRequest_t *mpi_request; Mpi2SmpPassthroughReply_t *mpi_reply; @@ -355,7 +417,7 @@ memset(mpi_request, 0, sizeof(Mpi2SmpPassthroughRequest_t)); mpi_request->Function = MPI2_FUNCTION_SMP_PASSTHROUGH; - mpi_request->PhysicalPort = 0xFF; + mpi_request->PhysicalPort = port_id; mpi_request->SASAddress = cpu_to_le64(sas_address); mpi_request->RequestDataLength = cpu_to_le16(data_out_sz); psge = &mpi_request->SGL; @@ -439,6 +501,7 @@ struct _sas_port *mpt3sas_port) { u64 sas_address = mpt3sas_port->remote_identify.sas_address; + struct hba_port *port = mpt3sas_port->hba_port; enum sas_device_type device_type = mpt3sas_port->remote_identify.device_type; @@ -448,10 +511,11 @@ ioc->logging_level |= MPT_DEBUG_TRANSPORT; if (device_type == SAS_END_DEVICE) - mpt3sas_device_remove_by_sas_address(ioc, sas_address); + mpt3sas_device_remove_by_sas_address(ioc, + sas_address, port); else if (device_type == SAS_EDGE_EXPANDER_DEVICE || device_type == SAS_FANOUT_EXPANDER_DEVICE) - mpt3sas_expander_remove(ioc, sas_address); + mpt3sas_expander_remove(ioc, sas_address, port); ioc->logging_level &= ~MPT_DEBUG_TRANSPORT; } @@ -500,16 +564,17 @@ } /** - * _transport_add_phy_to_an_existing_port - adding new phy to existing port + * mpt3sas_transport_add_phy_to_an_existing_port - adding new phy to existing port * @ioc: per adapter object * @sas_node: sas node object (either expander or sas host) * @mpt3sas_phy: mpt3sas per phy object * @sas_address: sas address of device/expander were phy needs to be added to + * @port: hba port entry */ -static void -_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, +void +mpt3sas_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, struct _sas_phy *mpt3sas_phy, - u64 sas_address) + u64 sas_address, struct hba_port *port) { struct _sas_port *mpt3sas_port; struct _sas_phy *phy_srch; @@ -517,11 +582,16 @@ if (mpt3sas_phy->phy_belongs_to_port == 1) return; + if (!port) + return; + list_for_each_entry(mpt3sas_port, &sas_node->sas_port_list, port_list) { if (mpt3sas_port->remote_identify.sas_address != sas_address) continue; + if (mpt3sas_port->hba_port != port) + continue; list_for_each_entry(phy_srch, &mpt3sas_port->phy_list, port_siblings) { if (phy_srch == mpt3sas_phy) @@ -534,13 +604,13 @@ } /** - * _transport_del_phy_from_an_existing_port - delete phy from existing port + * mpt3sas_transport_del_phy_from_an_existing_port - delete phy from existing port * @ioc: per adapter object * @sas_node: sas node object (either expander or sas host) * @mpt3sas_phy: mpt3sas per phy object */ -static void -_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, +void +mpt3sas_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, struct _sas_phy *mpt3sas_phy) { struct _sas_port *mpt3sas_port, *next; @@ -556,7 +626,11 @@ if (phy_srch != mpt3sas_phy) continue; - if (mpt3sas_port->num_phys == 1) + /* + * Don't delete port during host reset, + * just delete phy. + */ + if (mpt3sas_port->num_phys == 1 && !ioc->shost_recovery) _transport_delete_port(ioc, mpt3sas_port); else _transport_delete_phy(ioc, mpt3sas_port, @@ -571,21 +645,24 @@ * @ioc: per adapter object * @sas_node: sas node object (either expander or sas host) * @sas_address: sas address of device being added + * @port: hba port entry * * See the explanation above from _transport_delete_duplicate_port */ static void _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, - u64 sas_address) + u64 sas_address, struct hba_port *port) { int i; for (i = 0; i < sas_node->num_phys; i++) { if (sas_node->phy[i].remote_identify.sas_address != sas_address) continue; + if (sas_node->phy[i].port != port) + continue; if (sas_node->phy[i].phy_belongs_to_port == 1) - _transport_del_phy_from_an_existing_port(ioc, sas_node, - &sas_node->phy[i]); + mpt3sas_transport_del_phy_from_an_existing_port(ioc, + sas_node, &sas_node->phy[i]); } } @@ -594,6 +671,7 @@ * @ioc: per adapter object * @handle: handle of attached device * @sas_address: sas address of parent expander or sas host + * @port: hba port entry * Context: This function will acquire ioc->sas_node_lock. * * Adding new port object to the sas_node->sas_port_list. @@ -602,7 +680,7 @@ */ struct _sas_port * mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle, - u64 sas_address) + u64 sas_address, struct hba_port *hba_port) { struct _sas_phy *mpt3sas_phy, *next; struct _sas_port *mpt3sas_port; @@ -612,6 +690,13 @@ struct _sas_device *sas_device = NULL; int i; struct sas_port *port; + struct virtual_phy *vphy = NULL; + + if (!hba_port) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + return NULL; + } mpt3sas_port = kzalloc(sizeof(struct _sas_port), GFP_KERNEL); @@ -624,7 +709,8 @@ INIT_LIST_HEAD(&mpt3sas_port->port_list); INIT_LIST_HEAD(&mpt3sas_port->phy_list); spin_lock_irqsave(&ioc->sas_node_lock, flags); - sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); + sas_node = _transport_sas_node_find_by_sas_address(ioc, + sas_address, hba_port); spin_unlock_irqrestore(&ioc->sas_node_lock, flags); if (!sas_node) { @@ -646,16 +732,32 @@ goto out_fail; } + mpt3sas_port->hba_port = hba_port; _transport_sanity_check(ioc, sas_node, - mpt3sas_port->remote_identify.sas_address); + mpt3sas_port->remote_identify.sas_address, hba_port); for (i = 0; i < sas_node->num_phys; i++) { if (sas_node->phy[i].remote_identify.sas_address != mpt3sas_port->remote_identify.sas_address) continue; + if (sas_node->phy[i].port != hba_port) + continue; list_add_tail(&sas_node->phy[i].port_siblings, &mpt3sas_port->phy_list); mpt3sas_port->num_phys++; + if (sas_node->handle <= ioc->sas_hba.num_phys) { + if (!sas_node->phy[i].hba_vphy) { + hba_port->phy_mask |= (1 << i); + continue; + } + + vphy = mpt3sas_get_vphy_by_phy(ioc, hba_port, i); + if (!vphy) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + goto out_fail; + } + } } if (!mpt3sas_port->num_phys) { @@ -664,6 +766,18 @@ goto out_fail; } + if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) { + sas_device = mpt3sas_get_sdev_by_addr(ioc, + mpt3sas_port->remote_identify.sas_address, + mpt3sas_port->hba_port); + if (!sas_device) { + ioc_err(ioc, "failure at %s:%d/%s()!\n", + __FILE__, __LINE__, __func__); + goto out_fail; + } + sas_device->pend_sas_rphy_add = 1; + } + if (!sas_node->parent_dev) { ioc_err(ioc, "failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); @@ -686,29 +800,31 @@ mpt3sas_phy->phy_id); sas_port_add_phy(port, mpt3sas_phy->phy); mpt3sas_phy->phy_belongs_to_port = 1; + mpt3sas_phy->port = hba_port; } mpt3sas_port->port = port; - if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) + if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) { rphy = sas_end_device_alloc(port); - else + sas_device->rphy = rphy; + if (sas_node->handle <= ioc->sas_hba.num_phys) { + if (!vphy) + hba_port->sas_address = + sas_device->sas_address; + else + vphy->sas_address = + sas_device->sas_address; + } + } else { rphy = sas_expander_alloc(port, mpt3sas_port->remote_identify.device_type); + if (sas_node->handle <= ioc->sas_hba.num_phys) + hba_port->sas_address = + mpt3sas_port->remote_identify.sas_address; + } rphy->identify = mpt3sas_port->remote_identify; - if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) { - sas_device = mpt3sas_get_sdev_by_addr(ioc, - mpt3sas_port->remote_identify.sas_address); - if (!sas_device) { - dfailprintk(ioc, - ioc_info(ioc, "failure at %s:%d/%s()!\n", - __FILE__, __LINE__, __func__)); - goto out_fail; - } - sas_device->pend_sas_rphy_add = 1; - } - if ((sas_rphy_add(rphy))) { ioc_err(ioc, "failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); @@ -735,7 +851,7 @@ MPI2_SAS_DEVICE_INFO_FANOUT_EXPANDER) _transport_expander_report_manufacture(ioc, mpt3sas_port->remote_identify.sas_address, - rphy_to_expander_device(rphy)); + rphy_to_expander_device(rphy), hba_port->port_id); return mpt3sas_port; out_fail: @@ -751,6 +867,7 @@ * @ioc: per adapter object * @sas_address: sas address of attached device * @sas_address_parent: sas address of parent expander or sas host + * @port: hba port entry * Context: This function will acquire ioc->sas_node_lock. * * Removing object and freeing associated memory from the @@ -758,7 +875,7 @@ */ void mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, - u64 sas_address_parent) + u64 sas_address_parent, struct hba_port *port) { int i; unsigned long flags; @@ -766,10 +883,15 @@ struct _sas_node *sas_node; u8 found = 0; struct _sas_phy *mpt3sas_phy, *next_phy; + struct hba_port *hba_port_next, *hba_port = NULL; + struct virtual_phy *vphy, *vphy_next = NULL; + + if (!port) + return; spin_lock_irqsave(&ioc->sas_node_lock, flags); sas_node = _transport_sas_node_find_by_sas_address(ioc, - sas_address_parent); + sas_address_parent, port); if (!sas_node) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return; @@ -778,6 +900,8 @@ port_list) { if (mpt3sas_port->remote_identify.sas_address != sas_address) continue; + if (mpt3sas_port->hba_port != port) + continue; found = 1; list_del(&mpt3sas_port->port_list); goto out; @@ -788,6 +912,61 @@ return; } + if (sas_node->handle <= ioc->sas_hba.num_phys && + (ioc->multipath_on_hba)) { + if (port->vphys_mask) { + list_for_each_entry_safe(vphy, vphy_next, + &port->vphys_list, list) { + if (vphy->sas_address != sas_address) + continue; + ioc_info(ioc, + "remove vphy entry: %p of port:%p,from %d port's vphys list\n", + vphy, port, port->port_id); + port->vphys_mask &= ~vphy->phy_mask; + list_del(&vphy->list); + kfree(vphy); + } + } + + list_for_each_entry_safe(hba_port, hba_port_next, + &ioc->port_table_list, list) { + if (hba_port != port) + continue; + /* + * Delete hba_port object if + * - hba_port object's sas address matches with current + * removed device's sas address and no vphy's + * associated with it. + * - Current removed device is a vSES device and + * none of the other direct attached device have + * this vSES device's port number (hence hba_port + * object sas_address field will be zero). + */ + if ((hba_port->sas_address == sas_address || + !hba_port->sas_address) && !hba_port->vphys_mask) { + ioc_info(ioc, + "remove hba_port entry: %p port: %d from hba_port list\n", + hba_port, hba_port->port_id); + list_del(&hba_port->list); + kfree(hba_port); + } else if (hba_port->sas_address == sas_address && + hba_port->vphys_mask) { + /* + * Current removed device is a non vSES device + * and a vSES device has the same port number + * as of current device's port number. Hence + * only clear the sas_address filed, don't + * delete the hba_port object. + */ + ioc_info(ioc, + "clearing sas_address from hba_port entry: %p port: %d from hba_port list\n", + hba_port, hba_port->port_id); + port->sas_address = 0; + } + break; + } + } + for (i = 0; i < sas_node->num_phys; i++) { if (sas_node->phy[i].remote_identify.sas_address == sas_address) memset(&sas_node->phy[i].remote_identify, 0 , @@ -864,6 +1043,7 @@ phy_pg0.ProgrammedLinkRate & MPI2_SAS_PRATE_MIN_RATE_MASK); phy->maximum_linkrate = _transport_convert_phy_link_rate( phy_pg0.ProgrammedLinkRate >> 4); + phy->hostdata = mpt3sas_phy->port; if ((sas_phy_add(phy))) { ioc_err(ioc, "failure at %s:%d/%s()!\n", @@ -934,6 +1114,7 @@ expander_pg1.ProgrammedLinkRate & MPI2_SAS_PRATE_MIN_RATE_MASK); phy->maximum_linkrate = _transport_convert_phy_link_rate( expander_pg1.ProgrammedLinkRate >> 4); + phy->hostdata = mpt3sas_phy->port; if ((sas_phy_add(phy))) { ioc_err(ioc, "failure at %s:%d/%s()!\n", @@ -961,20 +1142,26 @@ * @handle: attached device handle * @phy_number: phy number * @link_rate: new link rate + * @port: hba port entry + * + * Return nothing. */ void mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, - u64 sas_address, u16 handle, u8 phy_number, u8 link_rate) + u64 sas_address, u16 handle, u8 phy_number, u8 link_rate, + struct hba_port *port) { unsigned long flags; struct _sas_node *sas_node; struct _sas_phy *mpt3sas_phy; + struct hba_port *hba_port = NULL; if (ioc->shost_recovery || ioc->pci_error_recovery) return; spin_lock_irqsave(&ioc->sas_node_lock, flags); - sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); + sas_node = _transport_sas_node_find_by_sas_address(ioc, + sas_address, port); if (!sas_node) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return; @@ -986,8 +1173,19 @@ if (handle && (link_rate >= MPI2_SAS_NEG_LINK_RATE_1_5)) { _transport_set_identify(ioc, handle, &mpt3sas_phy->remote_identify); - _transport_add_phy_to_an_existing_port(ioc, sas_node, - mpt3sas_phy, mpt3sas_phy->remote_identify.sas_address); + if ((sas_node->handle <= ioc->sas_hba.num_phys) && + (ioc->multipath_on_hba)) { + list_for_each_entry(hba_port, + &ioc->port_table_list, list) { + if (hba_port->sas_address == sas_address && + hba_port == port) + hba_port->phy_mask |= + (1 << mpt3sas_phy->phy_id); + } + } + mpt3sas_transport_add_phy_to_an_existing_port(ioc, sas_node, + mpt3sas_phy, mpt3sas_phy->remote_identify.sas_address, + port); } else memset(&mpt3sas_phy->remote_identify, 0 , sizeof(struct sas_identify)); @@ -1122,7 +1320,7 @@ memset(mpi_request, 0, sizeof(Mpi2SmpPassthroughRequest_t)); mpi_request->Function = MPI2_FUNCTION_SMP_PASSTHROUGH; - mpi_request->PhysicalPort = 0xFF; + mpi_request->PhysicalPort = _transport_get_port_id_by_sas_phy(phy); mpi_request->VF_ID = 0; /* TODO */ mpi_request->VP_ID = 0; mpi_request->SASAddress = cpu_to_le64(phy->identify.sas_address); @@ -1212,10 +1410,13 @@ unsigned long flags; Mpi2ConfigReply_t mpi_reply; Mpi2SasPhyPage1_t phy_pg1; + struct hba_port *port = phy->hostdata; + int port_id = port->port_id; spin_lock_irqsave(&ioc->sas_node_lock, flags); if (_transport_sas_node_find_by_sas_address(ioc, - phy->identify.sas_address) == NULL) { + phy->identify.sas_address, + mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return -EINVAL; } @@ -1265,8 +1466,7 @@ int rc; spin_lock_irqsave(&ioc->sas_device_lock, flags); - sas_device = __mpt3sas_get_sdev_by_addr(ioc, - rphy->identify.sas_address); + sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); if (sas_device) { *identifier = sas_device->enclosure_logical_id; rc = 0; @@ -1295,8 +1495,7 @@ int rc; spin_lock_irqsave(&ioc->sas_device_lock, flags); - sas_device = __mpt3sas_get_sdev_by_addr(ioc, - rphy->identify.sas_address); + sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); if (sas_device) { rc = sas_device->slot; sas_device_put(sas_device); @@ -1417,7 +1616,7 @@ memset(mpi_request, 0, sizeof(Mpi2SmpPassthroughRequest_t)); mpi_request->Function = MPI2_FUNCTION_SMP_PASSTHROUGH; - mpi_request->PhysicalPort = 0xFF; + mpi_request->PhysicalPort = _transport_get_port_id_by_sas_phy(phy); mpi_request->VF_ID = 0; /* TODO */ mpi_request->VP_ID = 0; mpi_request->SASAddress = cpu_to_le64(phy->identify.sas_address); @@ -1499,11 +1698,14 @@ struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); Mpi2SasIoUnitControlReply_t mpi_reply; Mpi2SasIoUnitControlRequest_t mpi_request; + struct hba_port *port = phy->hostdata; + int port_id = port->port_id; unsigned long flags; spin_lock_irqsave(&ioc->sas_node_lock, flags); if (_transport_sas_node_find_by_sas_address(ioc, - phy->identify.sas_address) == NULL) { + phy->identify.sas_address, + mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return -EINVAL; } @@ -1556,10 +1758,13 @@ int rc = 0; unsigned long flags; int i, discovery_active; + struct hba_port *port = phy->hostdata; + int port_id = port->port_id; spin_lock_irqsave(&ioc->sas_node_lock, flags); if (_transport_sas_node_find_by_sas_address(ioc, - phy->identify.sas_address) == NULL) { + phy->identify.sas_address, + mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return -EINVAL; } @@ -1693,10 +1898,13 @@ int i; int rc = 0; unsigned long flags; + struct hba_port *port = phy->hostdata; + int port_id = port->port_id; spin_lock_irqsave(&ioc->sas_node_lock, flags); if (_transport_sas_node_find_by_sas_address(ioc, - phy->identify.sas_address) == NULL) { + phy->identify.sas_address, + mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { spin_unlock_irqrestore(&ioc->sas_node_lock, flags); return -EINVAL; } @@ -1898,7 +2106,7 @@ memset(mpi_request, 0, sizeof(Mpi2SmpPassthroughRequest_t)); mpi_request->Function = MPI2_FUNCTION_SMP_PASSTHROUGH; - mpi_request->PhysicalPort = 0xFF; + mpi_request->PhysicalPort = _transport_get_port_id_by_rphy(ioc, rphy); mpi_request->SASAddress = (rphy) ? cpu_to_le64(rphy->identify.sas_address) : cpu_to_le64(ioc->sas_hba.sas_address); --- linux-5.8.0.orig/drivers/scsi/mvumi.c +++ linux-5.8.0/drivers/scsi/mvumi.c @@ -2425,6 +2425,7 @@ if (IS_ERR(mhba->dm_thread)) { dev_err(&mhba->pdev->dev, "failed to create device scan thread\n"); + ret = PTR_ERR(mhba->dm_thread); mutex_unlock(&mhba->sas_discovery_mutex); goto fail_create_thread; } --- linux-5.8.0.orig/drivers/scsi/myrs.c +++ linux-5.8.0/drivers/scsi/myrs.c @@ -2274,12 +2274,12 @@ if (cs->mmio_base) { cs->disable_intr(cs); iounmap(cs->mmio_base); + cs->mmio_base = NULL; } if (cs->irq) free_irq(cs->irq, cs); if (cs->io_addr) release_region(cs->io_addr, 0x80); - iounmap(cs->mmio_base); pci_set_drvdata(pdev, NULL); pci_disable_device(pdev); scsi_host_put(cs->host); --- linux-5.8.0.orig/drivers/scsi/pm8001/pm8001_hwi.c +++ linux-5.8.0/drivers/scsi/pm8001/pm8001_hwi.c @@ -3224,10 +3224,15 @@ pm8001_ha->memoryMap.region[NVMD].virt_ptr, fw_control_context->len); kfree(ccb->fw_control_context); + /* To avoid race condition, complete should be + * called after the message is copied to + * fw_control_context->usrAddr + */ + complete(pm8001_ha->nvmd_completion); + PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n")); ccb->task = NULL; ccb->ccb_tag = 0xFFFFFFFF; pm8001_tag_free(pm8001_ha, tag); - complete(pm8001_ha->nvmd_completion); } int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb) --- linux-5.8.0.orig/drivers/scsi/pm8001/pm8001_init.c +++ linux-5.8.0/drivers/scsi/pm8001/pm8001_init.c @@ -1106,7 +1106,8 @@ pm8001_init_sas_add(pm8001_ha); /* phy setting support for motherboard controller */ - if (pm8001_configure_phy_settings(pm8001_ha)) + rc = pm8001_configure_phy_settings(pm8001_ha); + if (rc) goto err_out_shost; pm8001_post_sas_ha_init(shost, chip); --- linux-5.8.0.orig/drivers/scsi/pm8001/pm8001_sas.c +++ linux-5.8.0/drivers/scsi/pm8001/pm8001_sas.c @@ -818,7 +818,7 @@ res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); if (res) - return res; + goto ex_err; ccb = &pm8001_ha->ccb_info[ccb_tag]; ccb->device = pm8001_dev; ccb->ccb_tag = ccb_tag; --- linux-5.8.0.orig/drivers/scsi/pm8001/pm80xx_hwi.c +++ linux-5.8.0/drivers/scsi/pm8001/pm80xx_hwi.c @@ -3352,7 +3352,7 @@ pm8001_get_attached_sas_addr(phy, phy->sas_phy.attached_sas_addr); spin_unlock_irqrestore(&phy->sas_phy.frame_rcvd_lock, flags); if (pm8001_ha->flags == PM8001F_RUN_TIME) - msleep(200);/*delay a moment to wait disk to spinup*/ + mdelay(200); /* delay a moment to wait for disk to spin up */ pm8001_bytes_dmaed(pm8001_ha, phy_id); } --- linux-5.8.0.orig/drivers/scsi/qedf/qedf_main.c +++ linux-5.8.0/drivers/scsi/qedf/qedf_main.c @@ -704,7 +704,7 @@ rdata = fcport->rdata; if (!rdata || !kref_get_unless_zero(&rdata->kref)) { QEDF_ERR(&qedf->dbg_ctx, "stale rport, sc_cmd=%p\n", sc_cmd); - rc = 1; + rc = SUCCESS; goto out; } @@ -3843,7 +3843,7 @@ container_of(work, struct qedf_ctx, stag_work.work); if (!qedf) { - QEDF_ERR(&qedf->dbg_ctx, "qedf is NULL"); + QEDF_ERR(NULL, "qedf is NULL"); return; } QEDF_ERR(&qedf->dbg_ctx, "Performing software context reset.\n"); --- linux-5.8.0.orig/drivers/scsi/qedi/qedi_fw.c +++ linux-5.8.0/drivers/scsi/qedi/qedi_fw.c @@ -59,6 +59,7 @@ "Freeing tid=0x%x for cid=0x%x\n", cmd->task_id, qedi_conn->iscsi_conn_id); + spin_lock(&qedi_conn->list_lock); if (likely(cmd->io_cmd_in_list)) { cmd->io_cmd_in_list = false; list_del_init(&cmd->io_cmd); @@ -69,6 +70,7 @@ cmd->task_id, qedi_conn->iscsi_conn_id, &cmd->io_cmd); } + spin_unlock(&qedi_conn->list_lock); cmd->state = RESPONSE_RECEIVED; qedi_clear_task_idx(qedi, cmd->task_id); @@ -122,6 +124,7 @@ "Freeing tid=0x%x for cid=0x%x\n", cmd->task_id, qedi_conn->iscsi_conn_id); + spin_lock(&qedi_conn->list_lock); if (likely(cmd->io_cmd_in_list)) { cmd->io_cmd_in_list = false; list_del_init(&cmd->io_cmd); @@ -132,6 +135,7 @@ cmd->task_id, qedi_conn->iscsi_conn_id, &cmd->io_cmd); } + spin_unlock(&qedi_conn->list_lock); cmd->state = RESPONSE_RECEIVED; qedi_clear_task_idx(qedi, cmd->task_id); @@ -222,11 +226,13 @@ tmf_hdr = (struct iscsi_tm *)qedi_cmd->task->hdr; + spin_lock(&qedi_conn->list_lock); if (likely(qedi_cmd->io_cmd_in_list)) { qedi_cmd->io_cmd_in_list = false; list_del_init(&qedi_cmd->io_cmd); qedi_conn->active_cmd_count--; } + spin_unlock(&qedi_conn->list_lock); if (((tmf_hdr->flags & ISCSI_FLAG_TM_FUNC_MASK) == ISCSI_TM_FUNC_LOGICAL_UNIT_RESET) || @@ -288,11 +294,13 @@ ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK; qedi_conn->gen_pdu.resp_wr_ptr = qedi_conn->gen_pdu.resp_buf + pld_len; + spin_lock(&qedi_conn->list_lock); if (likely(cmd->io_cmd_in_list)) { cmd->io_cmd_in_list = false; list_del_init(&cmd->io_cmd); qedi_conn->active_cmd_count--; } + spin_unlock(&qedi_conn->list_lock); memset(task_ctx, '\0', sizeof(*task_ctx)); @@ -817,8 +825,11 @@ qedi_clear_task_idx(qedi_conn->qedi, rtid); spin_lock(&qedi_conn->list_lock); - list_del_init(&dbg_cmd->io_cmd); - qedi_conn->active_cmd_count--; + if (likely(dbg_cmd->io_cmd_in_list)) { + dbg_cmd->io_cmd_in_list = false; + list_del_init(&dbg_cmd->io_cmd); + qedi_conn->active_cmd_count--; + } spin_unlock(&qedi_conn->list_lock); qedi_cmd->state = CLEANUP_RECV; wake_up_interruptible(&qedi_conn->wait_queue); @@ -1236,6 +1247,7 @@ qedi_conn->cmd_cleanup_req++; qedi_iscsi_cleanup_task(ctask, true); + cmd->io_cmd_in_list = false; list_del_init(&cmd->io_cmd); qedi_conn->active_cmd_count--; QEDI_WARN(&qedi->dbg_ctx, @@ -1447,8 +1459,11 @@ spin_unlock_bh(&qedi_conn->tmf_work_lock); spin_lock(&qedi_conn->list_lock); - list_del_init(&cmd->io_cmd); - qedi_conn->active_cmd_count--; + if (likely(cmd->io_cmd_in_list)) { + cmd->io_cmd_in_list = false; + list_del_init(&cmd->io_cmd); + qedi_conn->active_cmd_count--; + } spin_unlock(&qedi_conn->list_lock); clear_bit(QEDI_CONN_FW_CLEANUP, &qedi_conn->flags); --- linux-5.8.0.orig/drivers/scsi/qedi/qedi_iscsi.c +++ linux-5.8.0/drivers/scsi/qedi/qedi_iscsi.c @@ -975,11 +975,13 @@ { struct qedi_cmd *cmd, *cmd_tmp; + spin_lock(&qedi_conn->list_lock); list_for_each_entry_safe(cmd, cmd_tmp, &qedi_conn->active_cmd_list, io_cmd) { list_del_init(&cmd->io_cmd); qedi_conn->active_cmd_count--; } + spin_unlock(&qedi_conn->list_lock); } static void qedi_ep_disconnect(struct iscsi_endpoint *ep) --- linux-5.8.0.orig/drivers/scsi/qedi/qedi_main.c +++ linux-5.8.0/drivers/scsi/qedi/qedi_main.c @@ -1127,6 +1127,15 @@ schedule_delayed_work(&qedi->recovery_work, 0); } +static void qedi_set_conn_recovery(struct iscsi_cls_session *cls_session) +{ + struct iscsi_session *session = cls_session->dd_data; + struct iscsi_conn *conn = session->leadconn; + struct qedi_conn *qedi_conn = conn->dd_data; + + qedi_start_conn_recovery(qedi_conn->qedi, qedi_conn); +} + static void qedi_link_update(void *dev, struct qed_link_output *link) { struct qedi_ctx *qedi = (struct qedi_ctx *)dev; @@ -1138,6 +1147,7 @@ QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, "Link Down event.\n"); atomic_set(&qedi->link_state, QEDI_LINK_DOWN); + iscsi_host_for_each_session(qedi->shost, qedi_set_conn_recovery); } } @@ -1620,6 +1630,7 @@ if (!qedi->global_queues[i]) { QEDI_ERR(&qedi->dbg_ctx, "Unable to allocation global queue %d.\n", i); + status = -ENOMEM; goto mem_alloc_failure; } @@ -2190,7 +2201,7 @@ chap_name); break; case ISCSI_BOOT_TGT_CHAP_SECRET: - rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN, chap_secret); break; case ISCSI_BOOT_TGT_REV_CHAP_NAME: @@ -2198,7 +2209,7 @@ mchap_name); break; case ISCSI_BOOT_TGT_REV_CHAP_SECRET: - rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_NAME_MAX_LEN, + rc = sprintf(buf, "%.*s\n", NVM_ISCSI_CFG_CHAP_PWD_MAX_LEN, mchap_secret); break; case ISCSI_BOOT_TGT_FLAGS: @@ -2657,7 +2668,7 @@ QEDI_ERR(&qedi->dbg_ctx, "Unable to start offload thread!\n"); rc = -ENODEV; - goto free_cid_que; + goto free_tmf_thread; } INIT_DELAYED_WORK(&qedi->recovery_work, qedi_recovery_handler); @@ -2679,6 +2690,8 @@ return 0; +free_tmf_thread: + destroy_workqueue(qedi->tmf_thread); free_cid_que: qedi_release_cid_que(qedi); free_uio: --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_attr.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_attr.c @@ -157,6 +157,14 @@ vha->host_no); } break; + case 10: + if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) { + ql_log(ql_log_info, vha, 0x70e9, + "Issuing MPI firmware dump on host#%ld.\n", + vha->host_no); + ha->isp_ops->mpi_fw_dump(vha, 0); + } + break; } return count; } @@ -744,8 +752,6 @@ qla83xx_idc_audit(vha, IDC_AUDIT_TIMESTAMP); qla83xx_idc_unlock(vha, 0); break; - } else if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) { - qla27xx_reset_mpi(vha); } else { /* Make sure FC side is not in reset */ WARN_ON_ONCE(qla2x00_wait_for_hba_online(vha) != --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_dbg.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_dbg.c @@ -209,6 +209,7 @@ wrt_reg_word(®->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED); wrt_reg_word(®->mailbox1, LSW(addr)); wrt_reg_word(®->mailbox8, MSW(addr)); + wrt_reg_word(®->mailbox10, 0); wrt_reg_word(®->mailbox2, MSW(LSD(dump_dma))); wrt_reg_word(®->mailbox3, LSW(LSD(dump_dma))); --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_def.h +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_def.h @@ -1605,7 +1605,7 @@ */ uint8_t firmware_options[2]; - uint16_t frame_payload_size; + __le16 frame_payload_size; __le16 max_iocb_allocation; __le16 execution_throttle; uint8_t retry_count; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_gbl.h +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_gbl.h @@ -936,6 +936,5 @@ /* nvme.c */ void qla_nvme_unregister_remote_port(struct fc_port *fcport); -void qla27xx_reset_mpi(scsi_qla_host_t *vha); void qla_handle_els_plogi_done(scsi_qla_host_t *vha, struct event_arg *ea); #endif /* _QLA_GBL_H */ --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_gs.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_gs.c @@ -1505,11 +1505,11 @@ static uint qla25xx_fdmi_port_speed_capability(struct qla_hw_data *ha) { + uint speeds = 0; + if (IS_CNA_CAPABLE(ha)) return FDMI_PORT_SPEED_10GB; if (IS_QLA28XX(ha) || IS_QLA27XX(ha)) { - uint speeds = 0; - if (ha->max_supported_speed == 2) { if (ha->min_supported_speed <= 6) speeds |= FDMI_PORT_SPEED_64GB; @@ -1536,9 +1536,16 @@ } return speeds; } - if (IS_QLA2031(ha)) - return FDMI_PORT_SPEED_16GB|FDMI_PORT_SPEED_8GB| - FDMI_PORT_SPEED_4GB; + if (IS_QLA2031(ha)) { + if ((ha->pdev->subsystem_vendor == 0x103C) && + (ha->pdev->subsystem_device == 0x8002)) { + speeds = FDMI_PORT_SPEED_16GB; + } else { + speeds = FDMI_PORT_SPEED_16GB|FDMI_PORT_SPEED_8GB| + FDMI_PORT_SPEED_4GB; + } + return speeds; + } if (IS_QLA25XX(ha)) return FDMI_PORT_SPEED_8GB|FDMI_PORT_SPEED_4GB| FDMI_PORT_SPEED_2GB|FDMI_PORT_SPEED_1GB; @@ -3436,7 +3443,6 @@ list_for_each_entry(fcport, &vha->vp_fcports, list) { if ((fcport->flags & FCF_FABRIC_DEVICE) != 0) { fcport->scan_state = QLA_FCPORT_SCAN; - fcport->logout_on_delete = 0; } } goto login_logout; @@ -3532,10 +3538,22 @@ } if (fcport->scan_state != QLA_FCPORT_FOUND) { + bool do_delete = false; + + if (fcport->scan_needed && + fcport->disc_state == DSC_LOGIN_PEND) { + /* Cable got disconnected after we sent + * a login. Do delete to prevent timeout. + */ + fcport->logout_on_delete = 1; + do_delete = true; + } + fcport->scan_needed = 0; - if ((qla_dual_mode_enabled(vha) || - qla_ini_mode_enabled(vha)) && - atomic_read(&fcport->state) == FCS_ONLINE) { + if (((qla_dual_mode_enabled(vha) || + qla_ini_mode_enabled(vha)) && + atomic_read(&fcport->state) == FCS_ONLINE) || + do_delete) { if (fcport->loop_id != FC_NO_LOOP_ID) { if (fcport->flags & FCF_FCP2_DEVICE) fcport->logout_on_delete = 0; @@ -3736,6 +3754,18 @@ unsigned long flags; const char *name = sp->name; + if (res == QLA_OS_TIMER_EXPIRED) { + /* switch is ignoring all commands. + * This might be a zone disable behavior. + * This means we hit 64s timeout. + * 22s GPNFT + 44s Abort = 64s + */ + ql_dbg(ql_dbg_disc, vha, 0xffff, + "%s: Switch Zone check please .\n", + name); + qla2x00_mark_all_devices_lost(vha); + } + /* * We are in an Interrupt context, queue up this * sp for GNNFT_DONE work. This will allow all --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_init.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_init.c @@ -63,6 +63,16 @@ qla2x00_rel_sp(sp); } +void qla2xxx_rel_done_warning(srb_t *sp, int res) +{ + WARN_ONCE(1, "Calling done() of an already freed srb %p object\n", sp); +} + +void qla2xxx_rel_free_warning(srb_t *sp) +{ + WARN_ONCE(1, "Calling free() of an already freed srb %p object\n", sp); +} + /* Asynchronous Login/Logout Routines -------------------------------------- */ unsigned long @@ -1259,9 +1269,10 @@ lio->u.logio.flags |= SRB_LOGIN_NVME_PRLI; ql_dbg(ql_dbg_disc, vha, 0x211b, - "Async-prli - %8phC hdl=%x, loopid=%x portid=%06x retries=%d %s.\n", + "Async-prli - %8phC hdl=%x, loopid=%x portid=%06x retries=%d fc4type %x priority %x %s.\n", fcport->port_name, sp->handle, fcport->loop_id, fcport->d_id.b24, - fcport->login_retry, NVME_TARGET(vha->hw, fcport) ? "nvme" : "fc"); + fcport->login_retry, fcport->fc4_type, vha->hw->fc4_type_priority, + NVME_TARGET(vha->hw, fcport) ? "nvme" : "fcp"); rval = qla2x00_start_sp(sp); if (rval != QLA_SUCCESS) { @@ -1923,26 +1934,58 @@ break; } - /* - * Retry PRLI with other FC-4 type if failure occurred on dual - * FCP/NVMe port - */ - if (NVME_FCP_TARGET(ea->fcport)) { - ql_dbg(ql_dbg_disc, vha, 0x2118, - "%s %d %8phC post %s prli\n", - __func__, __LINE__, ea->fcport->port_name, - (ea->fcport->fc4_type & FS_FC4TYPE_NVME) ? - "NVMe" : "FCP"); - if (vha->hw->fc4_type_priority == FC4_PRIORITY_NVME) + ql_dbg(ql_dbg_disc, vha, 0x2118, + "%s %d %8phC priority %s, fc4type %x\n", + __func__, __LINE__, ea->fcport->port_name, + vha->hw->fc4_type_priority == FC4_PRIORITY_FCP ? + "FCP" : "NVMe", ea->fcport->fc4_type); + + if (N2N_TOPO(vha->hw)) { + if (vha->hw->fc4_type_priority == FC4_PRIORITY_NVME) { ea->fcport->fc4_type &= ~FS_FC4TYPE_NVME; - else + ea->fcport->fc4_type |= FS_FC4TYPE_FCP; + } else { ea->fcport->fc4_type &= ~FS_FC4TYPE_FCP; - } + ea->fcport->fc4_type |= FS_FC4TYPE_NVME; + } - ea->fcport->flags &= ~FCF_ASYNC_SENT; - ea->fcport->keep_nport_handle = 0; - ea->fcport->logout_on_delete = 1; - qlt_schedule_sess_for_deletion(ea->fcport); + if (ea->fcport->n2n_link_reset_cnt < 3) { + ea->fcport->n2n_link_reset_cnt++; + vha->relogin_jif = jiffies + 2 * HZ; + /* + * PRLI failed. Reset link to kick start + * state machine + */ + set_bit(N2N_LINK_RESET, &vha->dpc_flags); + } else { + ql_log(ql_log_warn, vha, 0x2119, + "%s %d %8phC Unable to reconnect\n", + __func__, __LINE__, + ea->fcport->port_name); + } + } else { + /* + * switch connect. login failed. Take connection down + * and allow relogin to retrigger + */ + if (NVME_FCP_TARGET(ea->fcport)) { + ql_dbg(ql_dbg_disc, vha, 0x2118, + "%s %d %8phC post %s prli\n", + __func__, __LINE__, + ea->fcport->port_name, + (ea->fcport->fc4_type & FS_FC4TYPE_NVME) + ? "NVMe" : "FCP"); + if (vha->hw->fc4_type_priority == FC4_PRIORITY_NVME) + ea->fcport->fc4_type &= ~FS_FC4TYPE_NVME; + else + ea->fcport->fc4_type &= ~FS_FC4TYPE_FCP; + } + + ea->fcport->flags &= ~FCF_ASYNC_SENT; + ea->fcport->keep_nport_handle = 0; + ea->fcport->logout_on_delete = 1; + qlt_schedule_sess_for_deletion(ea->fcport); + } break; } } @@ -3288,6 +3331,8 @@ j, fwdt->dump_size); dump_size += fwdt->dump_size; } + /* Add space for spare MPI fw dump. */ + dump_size += ha->fwdt[1].dump_size; } else { req_q_size = req->length * sizeof(request_t); rsp_q_size = rsp->length * sizeof(response_t); @@ -4603,18 +4648,18 @@ nv->firmware_options[1] = BIT_7 | BIT_5; nv->add_firmware_options[0] = BIT_5; nv->add_firmware_options[1] = BIT_5 | BIT_4; - nv->frame_payload_size = 2048; + nv->frame_payload_size = cpu_to_le16(2048); nv->special_options[1] = BIT_7; } else if (IS_QLA2200(ha)) { nv->firmware_options[0] = BIT_2 | BIT_1; nv->firmware_options[1] = BIT_7 | BIT_5; nv->add_firmware_options[0] = BIT_5; nv->add_firmware_options[1] = BIT_5 | BIT_4; - nv->frame_payload_size = 1024; + nv->frame_payload_size = cpu_to_le16(1024); } else if (IS_QLA2100(ha)) { nv->firmware_options[0] = BIT_3 | BIT_1; nv->firmware_options[1] = BIT_5; - nv->frame_payload_size = 1024; + nv->frame_payload_size = cpu_to_le16(1024); } nv->max_iocb_allocation = cpu_to_le16(256); --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_inline.h +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_inline.h @@ -207,10 +207,15 @@ return sp; } +void qla2xxx_rel_done_warning(srb_t *sp, int res); +void qla2xxx_rel_free_warning(srb_t *sp); + static inline void qla2xxx_rel_qpair_sp(struct qla_qpair *qpair, srb_t *sp) { sp->qpair = NULL; + sp->done = qla2xxx_rel_done_warning; + sp->free = qla2xxx_rel_free_warning; mempool_free(sp, qpair->srb_mempool); QLA_QPAIR_MARK_NOT_BUSY(qpair); } --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_iocb.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_iocb.c @@ -2305,8 +2305,8 @@ pkt = req->ring_ptr; memset(pkt, 0, REQUEST_ENTRY_SIZE); if (IS_QLAFX00(ha)) { - wrt_reg_byte((void __iomem *)&pkt->entry_count, req_cnt); - wrt_reg_word((void __iomem *)&pkt->handle, handle); + wrt_reg_byte((u8 __force __iomem *)&pkt->entry_count, req_cnt); + wrt_reg_dword((__le32 __force __iomem *)&pkt->handle, handle); } else { pkt->entry_count = req_cnt; pkt->handle = handle; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_isr.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_isr.c @@ -766,7 +766,7 @@ ql_log(ql_log_warn, vha, 0x02f0, "MPI Heartbeat stop. MPI reset is%s needed. " "MB0[%xh] MB1[%xh] MB2[%xh] MB3[%xh]\n", - mb[0] & BIT_8 ? "" : " not", + mb[1] & BIT_8 ? "" : " not", mb[0], mb[1], mb[2], mb[3]); if ((mb[1] & BIT_8) == 0) --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_mbx.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_mbx.c @@ -333,14 +333,6 @@ if (time_after(jiffies, wait_time)) break; - /* - * Check if it's UNLOADING, cause we cannot poll in - * this case, or else a NULL pointer dereference - * is triggered. - */ - if (unlikely(test_bit(UNLOADING, &base_vha->dpc_flags))) - return QLA_FUNCTION_TIMEOUT; - /* Check for pending interrupts. */ qla2x00_poll(ha->rsp_q_map[0]); @@ -3952,9 +3944,6 @@ fcport->scan_state = QLA_FCPORT_FOUND; fcport->n2n_flag = 1; fcport->keep_nport_handle = 1; - fcport->fc4_type = FS_FC4TYPE_FCP; - if (vha->flags.nvme_enabled) - fcport->fc4_type |= FS_FC4TYPE_NVME; if (wwn_to_u64(vha->port_name) > wwn_to_u64(fcport->port_name)) { @@ -4234,7 +4223,8 @@ if (MSW(addr) || IS_FWI2_CAPABLE(vha->hw)) { mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED; mcp->mb[8] = MSW(addr); - mcp->out_mb = MBX_8|MBX_0; + mcp->mb[10] = 0; + mcp->out_mb = MBX_10|MBX_8|MBX_0; } else { mcp->mb[0] = MBC_DUMP_RISC_RAM; mcp->out_mb = MBX_0; @@ -4916,7 +4906,7 @@ "Done %s.\n", __func__); } - dma_free_coherent(&ha->pdev->dev, DMA_POOL_SIZE, + dma_free_coherent(&ha->pdev->dev, ELS_CMD_MAP_SIZE, els_cmd_map, els_cmd_map_dma); return rval; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_nvme.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_nvme.c @@ -536,6 +536,11 @@ struct nvme_private *priv = fd->private; struct qla_nvme_rport *qla_rport = rport->private; + if (!priv) { + /* nvme association has been torn down */ + return rval; + } + fcport = qla_rport->fcport; if (!qpair || !fcport || (qpair && !qpair->fw_started) || @@ -678,7 +683,7 @@ struct nvme_fc_port_template *tmpl; struct qla_hw_data *ha; struct nvme_fc_port_info pinfo; - int ret = EINVAL; + int ret = -EINVAL; if (!IS_ENABLED(CONFIG_NVME_FC)) return ret; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_os.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_os.c @@ -2017,6 +2017,11 @@ /* Determine queue resources */ ha->max_req_queues = ha->max_rsp_queues = 1; ha->msix_count = QLA_BASE_VECTORS; + + /* Check if FW supports MQ or not */ + if (!(ha->fw_attributes & BIT_6)) + goto mqiobase_exit; + if (!ql2xmqsupport || !ql2xnvmeenable || (!IS_QLA25XX(ha) && !IS_QLA81XX(ha))) goto mqiobase_exit; @@ -2829,10 +2834,6 @@ /* This may fail but that's ok */ pci_enable_pcie_error_reporting(pdev); - /* Turn off T10-DIF when FC-NVMe is enabled */ - if (ql2xnvmeenable) - ql2xenabledif = 0; - ha = kzalloc(sizeof(struct qla_hw_data), GFP_KERNEL); if (!ha) { ql_log_pci(ql_log_fatal, pdev, 0x0009, --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_target.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_target.c @@ -1229,14 +1229,15 @@ case DSC_DELETE_PEND: return; case DSC_DELETED: - if (tgt && tgt->tgt_stop && (tgt->sess_count == 0)) - wake_up_all(&tgt->waitQ); - if (sess->vha->fcport_count == 0) - wake_up_all(&sess->vha->fcport_waitQ); - if (!sess->plogi_link[QLT_PLOGI_LINK_SAME_WWN] && - !sess->plogi_link[QLT_PLOGI_LINK_CONFLICT]) + !sess->plogi_link[QLT_PLOGI_LINK_CONFLICT]) { + if (tgt && tgt->tgt_stop && tgt->sess_count == 0) + wake_up_all(&tgt->waitQ); + + if (sess->vha->fcport_count == 0) + wake_up_all(&sess->vha->fcport_waitQ); return; + } break; case DSC_UPD_FCPORT: /* @@ -1270,7 +1271,7 @@ qla24xx_chk_fcp_state(sess); - ql_dbg(ql_dbg_tgt, sess->vha, 0xe001, + ql_dbg(ql_dbg_disc, sess->vha, 0xe001, "Scheduling sess %p for deletion %8phC\n", sess, sess->port_name); @@ -3219,8 +3220,7 @@ if (!qpair->fw_started || (cmd->reset_count != qpair->chip_reset) || (cmd->sess && cmd->sess->deleted)) { cmd->state = QLA_TGT_STATE_PROCESSED; - res = 0; - goto free; + return 0; } ql_dbg_qp(ql_dbg_tgt, qpair, 0xe018, @@ -3231,8 +3231,9 @@ res = qlt_pre_xmit_response(cmd, &prm, xmit_type, scsi_status, &full_req_cnt); - if (unlikely(res != 0)) - goto free; + if (unlikely(res != 0)) { + return res; + } spin_lock_irqsave(qpair->qp_lock_ptr, flags); @@ -3252,8 +3253,7 @@ vha->flags.online, qla2x00_reset_active(vha), cmd->reset_count, qpair->chip_reset); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); - res = 0; - goto free; + return 0; } /* Does F/W have an IOCBs for this request */ @@ -3356,8 +3356,6 @@ qlt_unmap_sg(vha, cmd); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); -free: - vha->hw->tgt.tgt_ops->free_cmd(cmd); return res; } EXPORT_SYMBOL(qlt_xmit_response); @@ -5668,7 +5666,7 @@ /* found existing exchange */ qpair->retry_term_cnt++; if (qpair->retry_term_cnt >= 5) { - rc = EIO; + rc = -EIO; qpair->retry_term_cnt = 0; ql_log(ql_log_warn, vha, 0xffff, "Unable to send ABTS Respond. Dumping firmware.\n"); --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_target.h +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_target.h @@ -116,7 +116,6 @@ (min(1270, ((ql) > 0) ? (QLA_TGT_DATASEGS_PER_CMD_24XX + \ QLA_TGT_DATASEGS_PER_CONT_24XX*((ql) - 1)) : 0)) #endif -#endif #define GET_TARGET_ID(ha, iocb) ((HAS_EXTENDED_IDS(ha)) \ ? le16_to_cpu((iocb)->u.isp2x.target.extended) \ @@ -244,6 +243,7 @@ #ifndef CTIO_RET_TYPE #define CTIO_RET_TYPE 0x17 /* CTIO return entry */ #define ATIO_TYPE7 0x06 /* Accept target I/O entry for 24xx */ +#endif struct fcp_hdr { uint8_t r_ctl; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_tmpl.c +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_tmpl.c @@ -12,33 +12,6 @@ #define IOBASE(vha) IOBAR(ISPREG(vha)) #define INVALID_ENTRY ((struct qla27xx_fwdt_entry *)0xffffffffffffffffUL) -/* hardware_lock assumed held. */ -static void -qla27xx_write_remote_reg(struct scsi_qla_host *vha, - u32 addr, u32 data) -{ - struct device_reg_24xx __iomem *reg = &vha->hw->iobase->isp24; - - ql_dbg(ql_dbg_misc, vha, 0xd300, - "%s: addr/data = %xh/%xh\n", __func__, addr, data); - - wrt_reg_dword(®->iobase_addr, 0x40); - wrt_reg_dword(®->iobase_c4, data); - wrt_reg_dword(®->iobase_window, addr); -} - -void -qla27xx_reset_mpi(scsi_qla_host_t *vha) -{ - ql_dbg(ql_dbg_misc + ql_dbg_verbose, vha, 0xd301, - "Entered %s.\n", __func__); - - qla27xx_write_remote_reg(vha, 0x104050, 0x40004); - qla27xx_write_remote_reg(vha, 0x10405c, 0x4); - - vha->hw->stat.num_mpi_reset++; -} - static inline void qla27xx_insert16(uint16_t value, void *buf, ulong *len) { @@ -956,7 +929,8 @@ static inline int qla27xx_verify_template_checksum(struct qla27xx_fwdt_template *tmp) { - return qla27xx_template_checksum(tmp, tmp->template_size) == 0; + return qla27xx_template_checksum(tmp, + le32_to_cpu(tmp->template_size)) == 0; } static inline int @@ -972,7 +946,7 @@ ulong len = 0; if (qla27xx_fwdt_template_valid(tmp)) { - len = tmp->template_size; + len = le32_to_cpu(tmp->template_size); tmp = memcpy(buf, tmp, len); ql27xx_edit_template(vha, tmp); qla27xx_walk_template(vha, tmp, buf, &len); @@ -988,7 +962,7 @@ ulong len = 0; if (qla27xx_fwdt_template_valid(tmp)) { - len = tmp->template_size; + len = le32_to_cpu(tmp->template_size); qla27xx_walk_template(vha, tmp, NULL, &len); } @@ -1000,7 +974,7 @@ { struct qla27xx_fwdt_template *tmp = p; - return tmp->template_size; + return le32_to_cpu(tmp->template_size); } int @@ -1028,7 +1002,6 @@ qla27xx_mpi_fwdump(scsi_qla_host_t *vha, int hardware_locked) { ulong flags = 0; - bool need_mpi_reset = true; #ifndef __CHECKER__ if (!hardware_locked) @@ -1036,14 +1009,20 @@ #endif if (!vha->hw->mpi_fw_dump) { ql_log(ql_log_warn, vha, 0x02f3, "-> mpi_fwdump no buffer\n"); - } else if (vha->hw->mpi_fw_dumped) { - ql_log(ql_log_warn, vha, 0x02f4, - "-> MPI firmware already dumped (%p) -- ignoring request\n", - vha->hw->mpi_fw_dump); } else { struct fwdt *fwdt = &vha->hw->fwdt[1]; ulong len; void *buf = vha->hw->mpi_fw_dump; + bool walk_template_only = false; + + if (vha->hw->mpi_fw_dumped) { + /* Use the spare area for any further dumps. */ + buf += fwdt->dump_size; + walk_template_only = true; + ql_log(ql_log_warn, vha, 0x02f4, + "-> MPI firmware already dumped -- dump saving to temporary buffer %p.\n", + buf); + } ql_log(ql_log_warn, vha, 0x02f5, "-> fwdt1 running...\n"); if (!fwdt->template) { @@ -1058,9 +1037,10 @@ ql_log(ql_log_warn, vha, 0x02f7, "-> fwdt1 fwdump residual=%+ld\n", fwdt->dump_size - len); - } else { - need_mpi_reset = false; } + vha->hw->stat.num_mpi_reset++; + if (walk_template_only) + goto bailout; vha->hw->mpi_fw_dump_len = len; vha->hw->mpi_fw_dumped = 1; @@ -1072,8 +1052,6 @@ } bailout: - if (need_mpi_reset) - qla27xx_reset_mpi(vha); #ifndef __CHECKER__ if (!hardware_locked) spin_unlock_irqrestore(&vha->hw->hardware_lock, flags); --- linux-5.8.0.orig/drivers/scsi/qla2xxx/qla_tmpl.h +++ linux-5.8.0/drivers/scsi/qla2xxx/qla_tmpl.h @@ -13,7 +13,7 @@ struct __packed qla27xx_fwdt_template { __le32 template_type; __le32 entry_offset; - uint32_t template_size; + __le32 template_size; uint32_t count; /* borrow field for running/residual count */ __le32 entry_count; --- linux-5.8.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-5.8.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -646,7 +646,6 @@ { struct qla_tgt_cmd *cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd); - struct scsi_qla_host *vha = cmd->vha; if (cmd->aborted) { /* Cmd can loop during Q-full. tcm_qla2xxx_aborted_task @@ -659,7 +658,6 @@ cmd->se_cmd.transport_state, cmd->se_cmd.t_state, cmd->se_cmd.se_cmd_flags); - vha->hw->tgt.tgt_ops->free_cmd(cmd); return 0; } @@ -687,7 +685,6 @@ { struct qla_tgt_cmd *cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd); - struct scsi_qla_host *vha = cmd->vha; int xmit_type = QLA_TGT_XMIT_STATUS; if (cmd->aborted) { @@ -701,7 +698,6 @@ cmd, kref_read(&cmd->se_cmd.cmd_kref), cmd->se_cmd.transport_state, cmd->se_cmd.t_state, cmd->se_cmd.se_cmd_flags); - vha->hw->tgt.tgt_ops->free_cmd(cmd); return 0; } cmd->bufflen = se_cmd->data_length; --- linux-5.8.0.orig/drivers/scsi/qla4xxx/ql4_os.c +++ linux-5.8.0/drivers/scsi/qla4xxx/ql4_os.c @@ -1220,7 +1220,7 @@ le64_to_cpu(ql_iscsi_stats->iscsi_sequence_error); exit_host_stats: if (ql_iscsi_stats) - dma_free_coherent(&ha->pdev->dev, host_stats_size, + dma_free_coherent(&ha->pdev->dev, stats_size, ql_iscsi_stats, iscsi_stats_dma); ql4_printk(KERN_INFO, ha, "%s: Get host stats done\n", --- linux-5.8.0.orig/drivers/scsi/scsi_debug.c +++ linux-5.8.0/drivers/scsi/scsi_debug.c @@ -5486,9 +5486,11 @@ u64 d = ktime_get_boottime_ns() - ns_from_boot; if (kt <= d) { /* elapsed duration >= kt */ + spin_lock_irqsave(&sqp->qc_lock, iflags); sqcp->a_cmnd = NULL; atomic_dec(&devip->num_in_q); clear_bit(k, sqp->in_use_bm); + spin_unlock_irqrestore(&sqp->qc_lock, iflags); if (new_sd_dp) kfree(sd_dp); /* call scsi_done() from this thread */ @@ -6610,6 +6612,12 @@ pr_err("submit_queues must be 1 or more\n"); return -EINVAL; } + + if ((sdebug_max_queue > SDEBUG_CANQUEUE) || (sdebug_max_queue < 1)) { + pr_err("max_queue must be in range [1, %d]\n", SDEBUG_CANQUEUE); + return -EINVAL; + } + sdebug_q_arr = kcalloc(submit_queues, sizeof(struct sdebug_queue), GFP_KERNEL); if (sdebug_q_arr == NULL) @@ -6627,7 +6635,7 @@ k = sdeb_zbc_model_str(sdeb_zbc_model_s); if (k < 0) { ret = k; - goto free_vm; + goto free_q_arr; } sdeb_zbc_model = k; switch (sdeb_zbc_model) { @@ -6640,7 +6648,8 @@ break; default: pr_err("Invalid ZBC model\n"); - return -EINVAL; + ret = -EINVAL; + goto free_q_arr; } } if (sdeb_zbc_model != BLK_ZONED_NONE) { @@ -6767,6 +6776,7 @@ sdebug_erase_all_stores(false); xa_destroy(per_store_ap); + kfree(sdebug_q_arr); } device_initcall(scsi_debug_init); --- linux-5.8.0.orig/drivers/scsi/scsi_lib.c +++ linux-5.8.0/drivers/scsi/scsi_lib.c @@ -250,7 +250,8 @@ req = blk_get_request(sdev->request_queue, data_direction == DMA_TO_DEVICE ? - REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, BLK_MQ_REQ_PREEMPT); + REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, + rq_flags & RQF_PM ? BLK_MQ_REQ_PM : 0); if (IS_ERR(req)) return ret; rq = scsi_req(req); @@ -531,7 +532,7 @@ } } -static void scsi_free_sgtables(struct scsi_cmnd *cmd) +void scsi_free_sgtables(struct scsi_cmnd *cmd) { if (cmd->sdb.table.nents) sg_free_table_chained(&cmd->sdb.table, @@ -540,6 +541,7 @@ sg_free_table_chained(&cmd->prot_sdb->table, SCSI_INLINE_PROT_SG_CNT); } +EXPORT_SYMBOL_GPL(scsi_free_sgtables); static void scsi_mq_uninit_cmd(struct scsi_cmnd *cmd) { @@ -967,7 +969,7 @@ } /** - * scsi_init_io - SCSI I/O initialization function. + * scsi_alloc_sgtables - allocate S/G tables for a command * @cmd: command descriptor we wish to initialize * * Returns: @@ -975,7 +977,7 @@ * * BLK_STS_RESOURCE - if the failure is retryable * * BLK_STS_IOERR - if the failure is fatal */ -blk_status_t scsi_init_io(struct scsi_cmnd *cmd) +blk_status_t scsi_alloc_sgtables(struct scsi_cmnd *cmd) { struct scsi_device *sdev = cmd->device; struct request *rq = cmd->request; @@ -1067,7 +1069,7 @@ scsi_free_sgtables(cmd); return ret; } -EXPORT_SYMBOL(scsi_init_io); +EXPORT_SYMBOL(scsi_alloc_sgtables); /** * scsi_initialize_rq - initialize struct scsi_cmnd partially @@ -1155,7 +1157,7 @@ * submit a request without an attached bio. */ if (req->bio) { - blk_status_t ret = scsi_init_io(cmd); + blk_status_t ret = scsi_alloc_sgtables(cmd); if (unlikely(ret != BLK_STS_OK)) return ret; } else { @@ -1195,7 +1197,6 @@ struct request *req) { struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(req); - blk_status_t ret; if (!blk_rq_bytes(req)) cmd->sc_data_direction = DMA_NONE; @@ -1205,20 +1206,16 @@ cmd->sc_data_direction = DMA_FROM_DEVICE; if (blk_rq_is_scsi(req)) - ret = scsi_setup_scsi_cmnd(sdev, req); - else - ret = scsi_setup_fs_cmnd(sdev, req); - - if (ret != BLK_STS_OK) - scsi_free_sgtables(cmd); - - return ret; + return scsi_setup_scsi_cmnd(sdev, req); + return scsi_setup_fs_cmnd(sdev, req); } static blk_status_t scsi_prep_state_check(struct scsi_device *sdev, struct request *req) { switch (sdev->sdev_state) { + case SDEV_CREATED: + return BLK_STS_OK; case SDEV_OFFLINE: case SDEV_TRANSPORT_OFFLINE: /* @@ -1245,18 +1242,18 @@ return BLK_STS_RESOURCE; case SDEV_QUIESCE: /* - * If the devices is blocked we defer normal commands. + * If the device is blocked we only accept power management + * commands. */ - if (req && !(req->rq_flags & RQF_PREEMPT)) + if (req && WARN_ON_ONCE(!(req->rq_flags & RQF_PM))) return BLK_STS_RESOURCE; return BLK_STS_OK; default: /* * For any other not fully online state we only allow - * special commands. In particular any user initiated - * command is not allowed. + * power management commands. */ - if (req && !(req->rq_flags & RQF_PREEMPT)) + if (req && !(req->rq_flags & RQF_PM)) return BLK_STS_IOERR; return BLK_STS_OK; } @@ -2511,15 +2508,13 @@ EXPORT_SYMBOL_GPL(sdev_evt_send_simple); /** - * scsi_device_quiesce - Block user issued commands. + * scsi_device_quiesce - Block all commands except power management. * @sdev: scsi device to quiesce. * * This works by trying to transition to the SDEV_QUIESCE state * (which must be a legal transition). When the device is in this - * state, only special requests will be accepted, all others will - * be deferred. Since special requests may also be requeued requests, - * a successful return doesn't guarantee the device will be - * totally quiescent. + * state, only power management requests will be accepted, all others will + * be deferred. * * Must be called with user context, may sleep. * @@ -2581,12 +2576,12 @@ * device deleted during suspend) */ mutex_lock(&sdev->state_mutex); + if (sdev->sdev_state == SDEV_QUIESCE) + scsi_device_set_state(sdev, SDEV_RUNNING); if (sdev->quiesced_by) { sdev->quiesced_by = NULL; blk_clear_pm_only(sdev->request_queue); } - if (sdev->sdev_state == SDEV_QUIESCE) - scsi_device_set_state(sdev, SDEV_RUNNING); mutex_unlock(&sdev->state_mutex); } EXPORT_SYMBOL(scsi_device_resume); @@ -2841,8 +2836,10 @@ mutex_lock(&sdev->state_mutex); ret = scsi_internal_device_block_nowait(sdev); mutex_unlock(&sdev->state_mutex); - if (ret) + if (ret) { + scsi_device_put(sdev); break; + } } /* @@ -2949,6 +2946,78 @@ } EXPORT_SYMBOL(sdev_enable_disk_events); +static unsigned char designator_prio(const unsigned char *d) +{ + if (d[1] & 0x30) + /* not associated with LUN */ + return 0; + + if (d[3] == 0) + /* invalid length */ + return 0; + + /* + * Order of preference for lun descriptor: + * - SCSI name string + * - NAA IEEE Registered Extended + * - EUI-64 based 16-byte + * - EUI-64 based 12-byte + * - NAA IEEE Registered + * - NAA IEEE Extended + * - EUI-64 based 8-byte + * - SCSI name string (truncated) + * - T10 Vendor ID + * as longer descriptors reduce the likelyhood + * of identification clashes. + */ + + switch (d[1] & 0xf) { + case 8: + /* SCSI name string, variable-length UTF-8 */ + return 9; + case 3: + switch (d[4] >> 4) { + case 6: + /* NAA registered extended */ + return 8; + case 5: + /* NAA registered */ + return 5; + case 4: + /* NAA extended */ + return 4; + case 3: + /* NAA locally assigned */ + return 1; + default: + break; + } + break; + case 2: + switch (d[3]) { + case 16: + /* EUI64-based, 16 byte */ + return 7; + case 12: + /* EUI64-based, 12 byte */ + return 6; + case 8: + /* EUI64-based, 8 byte */ + return 3; + default: + break; + } + break; + case 1: + /* T10 vendor ID */ + return 1; + default: + break; + } + + return 0; +} + /** * scsi_vpd_lun_id - return a unique device identification * @sdev: SCSI device @@ -2965,7 +3034,7 @@ */ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len) { - u8 cur_id_type = 0xff; + u8 cur_id_prio = 0; u8 cur_id_size = 0; const unsigned char *d, *cur_id_str; const struct scsi_vpd *vpd_pg83; @@ -2978,20 +3047,6 @@ return -ENXIO; } - /* - * Look for the correct descriptor. - * Order of preference for lun descriptor: - * - SCSI name string - * - NAA IEEE Registered Extended - * - EUI-64 based 16-byte - * - EUI-64 based 12-byte - * - NAA IEEE Registered - * - NAA IEEE Extended - * - T10 Vendor ID - * as longer descriptors reduce the likelyhood - * of identification clashes. - */ - /* The id string must be at least 20 bytes + terminating NULL byte */ if (id_len < 21) { rcu_read_unlock(); @@ -3001,8 +3056,9 @@ memset(id, 0, id_len); d = vpd_pg83->data + 4; while (d < vpd_pg83->data + vpd_pg83->len) { - /* Skip designators not referring to the LUN */ - if ((d[1] & 0x30) != 0x00) + u8 prio = designator_prio(d); + + if (prio == 0 || cur_id_prio > prio) goto next_desig; switch (d[1] & 0xf) { @@ -3010,28 +3066,19 @@ /* T10 Vendor ID */ if (cur_id_size > d[3]) break; - /* Prefer anything */ - if (cur_id_type > 0x01 && cur_id_type != 0xff) - break; + cur_id_prio = prio; cur_id_size = d[3]; if (cur_id_size + 4 > id_len) cur_id_size = id_len - 4; cur_id_str = d + 4; - cur_id_type = d[1] & 0xf; id_size = snprintf(id, id_len, "t10.%*pE", cur_id_size, cur_id_str); break; case 0x2: /* EUI-64 */ - if (cur_id_size > d[3]) - break; - /* Prefer NAA IEEE Registered Extended */ - if (cur_id_type == 0x3 && - cur_id_size == d[3]) - break; + cur_id_prio = prio; cur_id_size = d[3]; cur_id_str = d + 4; - cur_id_type = d[1] & 0xf; switch (cur_id_size) { case 8: id_size = snprintf(id, id_len, @@ -3049,17 +3096,14 @@ cur_id_str); break; default: - cur_id_size = 0; break; } break; case 0x3: /* NAA */ - if (cur_id_size > d[3]) - break; + cur_id_prio = prio; cur_id_size = d[3]; cur_id_str = d + 4; - cur_id_type = d[1] & 0xf; switch (cur_id_size) { case 8: id_size = snprintf(id, id_len, @@ -3072,26 +3116,25 @@ cur_id_str); break; default: - cur_id_size = 0; break; } break; case 0x8: /* SCSI name string */ - if (cur_id_size + 4 > d[3]) + if (cur_id_size > d[3]) break; /* Prefer others for truncated descriptor */ - if (cur_id_size && d[3] > id_len) - break; + if (d[3] > id_len) { + prio = 2; + if (cur_id_prio > prio) + break; + } + cur_id_prio = prio; cur_id_size = id_size = d[3]; cur_id_str = d + 4; - cur_id_type = d[1] & 0xf; if (cur_id_size >= id_len) cur_id_size = id_len - 1; memcpy(id, cur_id_str, cur_id_size); - /* Decrease priority for truncated descriptor */ - if (cur_id_size != id_size) - cur_id_size = 6; break; default: break; --- linux-5.8.0.orig/drivers/scsi/scsi_scan.c +++ linux-5.8.0/drivers/scsi/scsi_scan.c @@ -1714,15 +1714,16 @@ */ static struct async_scan_data *scsi_prep_async_scan(struct Scsi_Host *shost) { - struct async_scan_data *data; + struct async_scan_data *data = NULL; unsigned long flags; if (strncmp(scsi_scan_type, "sync", 4) == 0) return NULL; + mutex_lock(&shost->scan_mutex); if (shost->async_scan) { shost_printk(KERN_DEBUG, shost, "%s called twice\n", __func__); - return NULL; + goto err; } data = kmalloc(sizeof(*data), GFP_KERNEL); @@ -1733,7 +1734,6 @@ goto err; init_completion(&data->prev_finished); - mutex_lock(&shost->scan_mutex); spin_lock_irqsave(shost->host_lock, flags); shost->async_scan = 1; spin_unlock_irqrestore(shost->host_lock, flags); @@ -1748,6 +1748,7 @@ return data; err: + mutex_unlock(&shost->scan_mutex); kfree(data); return NULL; } --- linux-5.8.0.orig/drivers/scsi/scsi_transport_iscsi.c +++ linux-5.8.0/drivers/scsi/scsi_transport_iscsi.c @@ -132,7 +132,11 @@ char *buf) { struct iscsi_internal *priv = dev_to_iscsi_internal(dev); - return sprintf(buf, "%llu\n", (unsigned long long)iscsi_handle(priv->iscsi_transport)); + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + return sysfs_emit(buf, "%llu\n", + (unsigned long long)iscsi_handle(priv->iscsi_transport)); } static DEVICE_ATTR(handle, S_IRUGO, show_transport_handle, NULL); @@ -142,7 +146,7 @@ struct device_attribute *attr,char *buf) \ { \ struct iscsi_internal *priv = dev_to_iscsi_internal(dev); \ - return sprintf(buf, format"\n", priv->iscsi_transport->name); \ + return sysfs_emit(buf, format"\n", priv->iscsi_transport->name);\ } \ static DEVICE_ATTR(name, S_IRUGO, show_transport_##name, NULL); @@ -183,7 +187,7 @@ show_ep_handle(struct device *dev, struct device_attribute *attr, char *buf) { struct iscsi_endpoint *ep = iscsi_dev_to_endpoint(dev); - return sprintf(buf, "%llu\n", (unsigned long long) ep->id); + return sysfs_emit(buf, "%llu\n", (unsigned long long) ep->id); } static ISCSI_ATTR(ep, handle, S_IRUGO, show_ep_handle, NULL); @@ -2314,7 +2318,9 @@ return conn; release_conn_ref: - put_device(&conn->dev); + device_unregister(&conn->dev); + put_device(&session->dev); + return NULL; release_parent_ref: put_device(&session->dev); free_conn: @@ -2882,6 +2888,9 @@ struct iscsi_cls_session *session; int err = 0, value = 0; + if (ev->u.set_param.len > PAGE_SIZE) + return -EINVAL; + session = iscsi_session_lookup(ev->u.set_param.sid); conn = iscsi_conn_lookup(ev->u.set_param.sid, ev->u.set_param.cid); if (!conn || !session) @@ -3029,6 +3038,9 @@ if (!transport->set_host_param) return -ENOSYS; + if (ev->u.set_host_param.len > PAGE_SIZE) + return -EINVAL; + shost = scsi_host_lookup(ev->u.set_host_param.host_no); if (!shost) { printk(KERN_ERR "set_host_param could not find host no %u\n", @@ -3291,7 +3303,7 @@ pr_err("%s could not find host no %u\n", __func__, ev->u.set_flashnode.host_no); err = -ENODEV; - goto put_host; + goto exit_set_fnode; } idx = ev->u.set_flashnode.flashnode_idx; @@ -3616,6 +3628,7 @@ { int err = 0; u32 portid; + u32 pdu_len; struct iscsi_uevent *ev = nlmsg_data(nlh); struct iscsi_transport *transport = NULL; struct iscsi_internal *priv; @@ -3623,6 +3636,9 @@ struct iscsi_cls_conn *conn; struct iscsi_endpoint *ep = NULL; + if (!netlink_capable(skb, CAP_SYS_ADMIN)) + return -EPERM; + if (nlh->nlmsg_type == ISCSI_UEVENT_PATH_UPDATE) *group = ISCSI_NL_GRP_UIP; else @@ -3755,6 +3771,14 @@ err = -EINVAL; break; case ISCSI_UEVENT_SEND_PDU: + pdu_len = nlh->nlmsg_len - sizeof(*nlh) - sizeof(*ev); + + if ((ev->u.send_pdu.hdr_size > pdu_len) || + (ev->u.send_pdu.data_size > (pdu_len - ev->u.send_pdu.hdr_size))) { + err = -EINVAL; + break; + } + conn = iscsi_conn_lookup(ev->u.send_pdu.sid, ev->u.send_pdu.cid); if (conn) { mutex_lock(&conn_mutex); @@ -3959,7 +3983,7 @@ conn->state < ARRAY_SIZE(connection_state_names)) state = connection_state_names[conn->state]; - return sprintf(buf, "%s\n", state); + return sysfs_emit(buf, "%s\n", state); } static ISCSI_CLASS_ATTR(conn, state, S_IRUGO, show_conn_state, NULL); @@ -4187,7 +4211,7 @@ char *buf) { struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); - return sprintf(buf, "%s\n", iscsi_session_state_name(session->state)); + return sysfs_emit(buf, "%s\n", iscsi_session_state_name(session->state)); } static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state, NULL); @@ -4196,7 +4220,7 @@ char *buf) { struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); - return sprintf(buf, "%d\n", session->creator); + return sysfs_emit(buf, "%d\n", session->creator); } static ISCSI_CLASS_ATTR(priv_sess, creator, S_IRUGO, show_priv_session_creator, NULL); @@ -4205,7 +4229,7 @@ char *buf) { struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); - return sprintf(buf, "%d\n", session->target_id); + return sysfs_emit(buf, "%d\n", session->target_id); } static ISCSI_CLASS_ATTR(priv_sess, target_id, S_IRUGO, show_priv_session_target_id, NULL); @@ -4218,8 +4242,8 @@ struct iscsi_cls_session *session = \ iscsi_dev_to_session(dev->parent); \ if (session->field == -1) \ - return sprintf(buf, "off\n"); \ - return sprintf(buf, format"\n", session->field); \ + return sysfs_emit(buf, "off\n"); \ + return sysfs_emit(buf, format"\n", session->field); \ } #define iscsi_priv_session_attr_store(field) \ --- linux-5.8.0.orig/drivers/scsi/scsi_transport_spi.c +++ linux-5.8.0/drivers/scsi/scsi_transport_spi.c @@ -117,12 +117,16 @@ sshdr = &sshdr_tmp; 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, - 0, NULL); + RQF_PM, NULL); if (driver_byte(result) != DRIVER_SENSE || sshdr->sense_key != UNIT_ATTENTION) break; @@ -1005,23 +1009,26 @@ */ lock_system_sleep(); + if (scsi_autopm_get_device(sdev)) + goto unlock_system_sleep; + if (unlikely(spi_dv_in_progress(starget))) - goto unlock; + goto put_autopm; if (unlikely(scsi_device_get(sdev))) - goto unlock; + goto put_autopm; spi_dv_in_progress(starget) = 1; buffer = kzalloc(len, GFP_KERNEL); if (unlikely(!buffer)) - goto out_put; + goto put_sdev; /* We need to verify that the actual device will quiesce; the * later target quiesce is just a nice to have */ if (unlikely(scsi_device_quiesce(sdev))) - goto out_free; + goto free_buffer; scsi_target_quiesce(starget); @@ -1041,12 +1048,16 @@ spi_initial_dv(starget) = 1; - out_free: +free_buffer: kfree(buffer); - out_put: + +put_sdev: spi_dv_in_progress(starget) = 0; scsi_device_put(sdev); -unlock: +put_autopm: + scsi_autopm_put_device(sdev); + +unlock_system_sleep: unlock_system_sleep(); } EXPORT_SYMBOL(spi_dv_device); --- linux-5.8.0.orig/drivers/scsi/scsi_transport_srp.c +++ linux-5.8.0/drivers/scsi/scsi_transport_srp.c @@ -541,7 +541,14 @@ res = mutex_lock_interruptible(&rport->mutex); if (res) goto out; - scsi_target_block(&shost->shost_gendev); + if (rport->state != SRP_RPORT_FAIL_FAST) + /* + * sdev state must be SDEV_TRANSPORT_OFFLINE, transition + * to SDEV_BLOCK is illegal. Calling scsi_target_unblock() + * later is ok though, scsi_internal_device_unblock_nowait() + * treats SDEV_TRANSPORT_OFFLINE like SDEV_BLOCK. + */ + scsi_target_block(&shost->shost_gendev); res = rport->state != SRP_RPORT_LOST ? i->f->reconnect(rport) : -ENODEV; pr_debug("%s (state %d): transport.reconnect() returned %d\n", dev_name(&shost->shost_gendev), rport->state, res); --- linux-5.8.0.orig/drivers/scsi/sd.c +++ linux-5.8.0/drivers/scsi/sd.c @@ -674,9 +674,9 @@ put_unaligned_be16(spsp, &cdb[2]); put_unaligned_be32(len, &cdb[6]); - ret = scsi_execute_req(sdev, cdb, - send ? DMA_TO_DEVICE : DMA_FROM_DEVICE, - buffer, len, NULL, SD_TIMEOUT, SD_MAX_RETRIES, NULL); + ret = scsi_execute(sdev, cdb, send ? DMA_TO_DEVICE : DMA_FROM_DEVICE, + buffer, len, NULL, NULL, SD_TIMEOUT, SD_MAX_RETRIES, 0, + RQF_PM, NULL); return ret <= 0 ? ret : -EIO; } #endif /* CONFIG_BLK_SED_OPAL */ @@ -866,7 +866,7 @@ cmd->transfersize = data_len; rq->timeout = SD_TIMEOUT; - return scsi_init_io(cmd); + return scsi_alloc_sgtables(cmd); } static blk_status_t sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd, @@ -897,7 +897,7 @@ cmd->transfersize = data_len; rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT; - return scsi_init_io(cmd); + return scsi_alloc_sgtables(cmd); } static blk_status_t sd_setup_write_same10_cmnd(struct scsi_cmnd *cmd, @@ -928,7 +928,7 @@ cmd->transfersize = data_len; rq->timeout = unmap ? SD_TIMEOUT : SD_WRITE_SAME_TIMEOUT; - return scsi_init_io(cmd); + return scsi_alloc_sgtables(cmd); } static blk_status_t sd_setup_write_zeroes_cmnd(struct scsi_cmnd *cmd) @@ -948,8 +948,10 @@ } } - if (sdp->no_write_same) + if (sdp->no_write_same) { + rq->rq_flags |= RQF_QUIET; return BLK_STS_TARGET; + } if (sdkp->ws16 || lba > 0xffffffff || nr_blocks > 0xffff) return sd_setup_write_same16_cmnd(cmd, false); @@ -1069,7 +1071,7 @@ * knows how much to actually write. */ rq->__data_len = sdp->sector_size; - ret = scsi_init_io(cmd); + ret = scsi_alloc_sgtables(cmd); rq->__data_len = blk_rq_bytes(rq); return ret; @@ -1187,23 +1189,24 @@ unsigned int dif; bool dix; - ret = scsi_init_io(cmd); + ret = scsi_alloc_sgtables(cmd); if (ret != BLK_STS_OK) return ret; + ret = BLK_STS_IOERR; if (!scsi_device_online(sdp) || sdp->changed) { scmd_printk(KERN_ERR, cmd, "device offline or changed\n"); - return BLK_STS_IOERR; + goto fail; } if (blk_rq_pos(rq) + blk_rq_sectors(rq) > get_capacity(rq->rq_disk)) { scmd_printk(KERN_ERR, cmd, "access beyond end of device\n"); - return BLK_STS_IOERR; + goto fail; } if ((blk_rq_pos(rq) & mask) || (blk_rq_sectors(rq) & mask)) { scmd_printk(KERN_ERR, cmd, "request not aligned to the logical block size\n"); - return BLK_STS_IOERR; + goto fail; } /* @@ -1225,7 +1228,7 @@ if (req_op(rq) == REQ_OP_ZONE_APPEND) { ret = sd_zbc_prepare_zone_append(cmd, &lba, nr_blocks); if (ret) - return ret; + goto fail; } fua = rq->cmd_flags & REQ_FUA ? 0x8 : 0; @@ -1253,7 +1256,7 @@ } if (unlikely(ret != BLK_STS_OK)) - return ret; + goto fail; /* * We shouldn't disconnect in the middle of a sector, so with a dumb @@ -1277,10 +1280,12 @@ blk_rq_sectors(rq))); /* - * This indicates that the command is ready from our end to be - * queued. + * This indicates that the command is ready from our end to be queued. */ return BLK_STS_OK; +fail: + scsi_free_sgtables(cmd); + return ret; } static blk_status_t sd_init_command(struct scsi_cmnd *cmd) @@ -2966,26 +2971,32 @@ if (sdkp->device->type == TYPE_ZBC) { /* Host-managed */ - q->limits.zoned = BLK_ZONED_HM; + blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HM); } else { sdkp->zoned = (buffer[8] >> 4) & 3; - if (sdkp->zoned == 1 && !disk_has_partitions(sdkp->disk)) { + if (sdkp->zoned == 1) { /* Host-aware */ - q->limits.zoned = BLK_ZONED_HA; + blk_queue_set_zoned(sdkp->disk, BLK_ZONED_HA); } else { - /* - * Treat drive-managed devices and host-aware devices - * with partitions as regular block devices. - */ - q->limits.zoned = BLK_ZONED_NONE; - if (sdkp->zoned == 2 && sdkp->first_scan) - sd_printk(KERN_NOTICE, sdkp, - "Drive-managed SMR disk\n"); + /* Regular disk or drive managed disk */ + blk_queue_set_zoned(sdkp->disk, BLK_ZONED_NONE); } } - if (blk_queue_is_zoned(q) && sdkp->first_scan) + + if (!sdkp->first_scan) + goto out; + + if (blk_queue_is_zoned(q)) { sd_printk(KERN_NOTICE, sdkp, "Host-%s zoned block device\n", q->limits.zoned == BLK_ZONED_HM ? "managed" : "aware"); + } else { + if (sdkp->zoned == 1) + sd_printk(KERN_NOTICE, sdkp, + "Host-aware SMR disk used as regular disk\n"); + else if (sdkp->zoned == 2) + sd_printk(KERN_NOTICE, sdkp, + "Drive-managed SMR disk\n"); + } out: kfree(buffer); @@ -3398,10 +3409,6 @@ sdkp->first_scan = 1; sdkp->max_medium_access_timeouts = SD_MAX_MEDIUM_TIMEOUTS; - error = sd_zbc_init_disk(sdkp); - if (error) - goto out_free_index; - sd_revalidate_disk(gd); gd->flags = GENHD_FL_EXT_DEVT; --- linux-5.8.0.orig/drivers/scsi/sd.h +++ linux-5.8.0/drivers/scsi/sd.h @@ -213,7 +213,6 @@ #ifdef CONFIG_BLK_DEV_ZONED -int sd_zbc_init_disk(struct scsi_disk *sdkp); void sd_zbc_release_disk(struct scsi_disk *sdkp); extern int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned char *buffer); extern void sd_zbc_print_zones(struct scsi_disk *sdkp); @@ -229,17 +228,6 @@ #else /* CONFIG_BLK_DEV_ZONED */ -static inline int sd_zbc_init(void) -{ - return 0; -} - -static inline int sd_zbc_init_disk(struct scsi_disk *sdkp) -{ - return 0; -} - -static inline void sd_zbc_exit(void) {} static inline void sd_zbc_release_disk(struct scsi_disk *sdkp) {} static inline int sd_zbc_read_zones(struct scsi_disk *sdkp, @@ -260,7 +248,7 @@ static inline unsigned int sd_zbc_complete(struct scsi_cmnd *cmd, unsigned int good_bytes, struct scsi_sense_hdr *sshdr) { - return 0; + return good_bytes; } static inline blk_status_t sd_zbc_prepare_zone_append(struct scsi_cmnd *cmd, --- linux-5.8.0.orig/drivers/scsi/sd_zbc.c +++ linux-5.8.0/drivers/scsi/sd_zbc.c @@ -59,6 +59,7 @@ zone.non_seq = 1; zone.len = logical_to_sectors(sdp, get_unaligned_be64(&buf[8])); + zone.capacity = zone.len; zone.start = logical_to_sectors(sdp, get_unaligned_be64(&buf[16])); zone.wp = logical_to_sectors(sdp, get_unaligned_be64(&buf[24])); if (zone.type != ZBC_ZONE_TYPE_CONV && @@ -633,6 +634,45 @@ return 0; } +void sd_zbc_print_zones(struct scsi_disk *sdkp) +{ + if (!sd_is_zoned(sdkp) || !sdkp->capacity) + return; + + if (sdkp->capacity & (sdkp->zone_blocks - 1)) + sd_printk(KERN_NOTICE, sdkp, + "%u zones of %u logical blocks + 1 runt zone\n", + sdkp->nr_zones - 1, + sdkp->zone_blocks); + else + sd_printk(KERN_NOTICE, sdkp, + "%u zones of %u logical blocks\n", + sdkp->nr_zones, + sdkp->zone_blocks); +} + +static int sd_zbc_init_disk(struct scsi_disk *sdkp) +{ + sdkp->zones_wp_offset = NULL; + spin_lock_init(&sdkp->zones_wp_offset_lock); + sdkp->rev_wp_offset = NULL; + mutex_init(&sdkp->rev_mutex); + INIT_WORK(&sdkp->zone_wp_offset_work, sd_zbc_update_wp_offset_workfn); + sdkp->zone_wp_update_buf = kzalloc(SD_BUF_SIZE, GFP_KERNEL); + if (!sdkp->zone_wp_update_buf) + return -ENOMEM; + + return 0; +} + +void sd_zbc_release_disk(struct scsi_disk *sdkp) +{ + kvfree(sdkp->zones_wp_offset); + sdkp->zones_wp_offset = NULL; + kfree(sdkp->zone_wp_update_buf); + sdkp->zone_wp_update_buf = NULL; +} + static void sd_zbc_revalidate_zones_cb(struct gendisk *disk) { struct scsi_disk *sdkp = scsi_disk(disk); @@ -645,9 +685,31 @@ unsigned int nr_zones) { struct gendisk *disk = sdkp->disk; + struct request_queue *q = disk->queue; + u32 max_append; int ret = 0; /* + * For all zoned disks, initialize zone append emulation data if not + * already done. This is necessary also for host-aware disks used as + * regular disks due to the presence of partitions as these partitions + * may be deleted and the disk zoned model changed back from + * BLK_ZONED_NONE to BLK_ZONED_HA. + */ + if (sd_is_zoned(sdkp) && !sdkp->zone_wp_update_buf) { + ret = sd_zbc_init_disk(sdkp); + if (ret) + return ret; + } + + /* + * There is nothing to do for regular disks, including host-aware disks + * that have partitions. + */ + if (!blk_queue_is_zoned(q)) + return 0; + + /* * Make sure revalidate zones are serialized to ensure exclusive * updates of the scsi disk data. */ @@ -681,6 +743,19 @@ kvfree(sdkp->rev_wp_offset); sdkp->rev_wp_offset = NULL; + if (ret) { + sdkp->zone_blocks = 0; + sdkp->nr_zones = 0; + sdkp->capacity = 0; + goto unlock; + } + + max_append = min_t(u32, logical_to_sectors(sdkp->device, zone_blocks), + q->limits.max_segments << (PAGE_SHIFT - 9)); + max_append = min_t(u32, max_append, queue_max_hw_sectors(q)); + + blk_queue_max_zone_append_sectors(q, max_append); + unlock: mutex_unlock(&sdkp->rev_mutex); @@ -693,7 +768,6 @@ struct request_queue *q = disk->queue; unsigned int nr_zones; u32 zone_blocks = 0; - u32 max_append; int ret; if (!sd_is_zoned(sdkp)) @@ -726,20 +800,6 @@ if (ret) goto err; - /* - * On the first scan 'chunk_sectors' isn't setup yet, so calling - * blk_queue_max_zone_append_sectors() will result in a WARN(). Defer - * this setting to the second scan. - */ - if (sdkp->first_scan) - return 0; - - max_append = min_t(u32, logical_to_sectors(sdkp->device, zone_blocks), - q->limits.max_segments << (PAGE_SHIFT - 9)); - max_append = min_t(u32, max_append, queue_max_hw_sectors(q)); - - blk_queue_max_zone_append_sectors(q, max_append); - return 0; err: @@ -747,45 +807,3 @@ return ret; } - -void sd_zbc_print_zones(struct scsi_disk *sdkp) -{ - if (!sd_is_zoned(sdkp) || !sdkp->capacity) - return; - - if (sdkp->capacity & (sdkp->zone_blocks - 1)) - sd_printk(KERN_NOTICE, sdkp, - "%u zones of %u logical blocks + 1 runt zone\n", - sdkp->nr_zones - 1, - sdkp->zone_blocks); - else - sd_printk(KERN_NOTICE, sdkp, - "%u zones of %u logical blocks\n", - sdkp->nr_zones, - sdkp->zone_blocks); -} - -int sd_zbc_init_disk(struct scsi_disk *sdkp) -{ - if (!sd_is_zoned(sdkp)) - return 0; - - sdkp->zones_wp_offset = NULL; - spin_lock_init(&sdkp->zones_wp_offset_lock); - sdkp->rev_wp_offset = NULL; - mutex_init(&sdkp->rev_mutex); - INIT_WORK(&sdkp->zone_wp_offset_work, sd_zbc_update_wp_offset_workfn); - sdkp->zone_wp_update_buf = kzalloc(SD_BUF_SIZE, GFP_KERNEL); - if (!sdkp->zone_wp_update_buf) - return -ENOMEM; - - return 0; -} - -void sd_zbc_release_disk(struct scsi_disk *sdkp) -{ - kvfree(sdkp->zones_wp_offset); - sdkp->zones_wp_offset = NULL; - kfree(sdkp->zone_wp_update_buf); - sdkp->zone_wp_update_buf = NULL; -} --- linux-5.8.0.orig/drivers/scsi/smartpqi/smartpqi.h +++ linux-5.8.0/drivers/scsi/smartpqi/smartpqi.h @@ -359,7 +359,7 @@ struct pqi_iu_header header; u8 event_type; u8 reserved2 : 7; - u8 request_acknowlege : 1; + u8 request_acknowledge : 1; __le16 event_id; __le32 additional_event_id; union { --- linux-5.8.0.orig/drivers/scsi/smartpqi/smartpqi_init.c +++ linux-5.8.0/drivers/scsi/smartpqi/smartpqi_init.c @@ -542,8 +542,7 @@ put_unaligned_be16(cdb_length, &cdb[7]); break; default: - dev_err(&ctrl_info->pci_dev->dev, "unknown command 0x%c\n", - cmd); + dev_err(&ctrl_info->pci_dev->dev, "unknown command 0x%c\n", cmd); break; } @@ -2462,7 +2461,6 @@ offload_to_mirror = (offload_to_mirror >= layout_map_count - 1) ? 0 : offload_to_mirror + 1; - WARN_ON(offload_to_mirror >= layout_map_count); device->offload_to_mirror = offload_to_mirror; /* * Avoid direct use of device->offload_to_mirror within this @@ -2915,10 +2913,14 @@ return rc; } -static unsigned int pqi_process_io_intr(struct pqi_ctrl_info *ctrl_info, - struct pqi_queue_group *queue_group) +static inline void pqi_invalid_response(struct pqi_ctrl_info *ctrl_info) +{ + pqi_take_ctrl_offline(ctrl_info); +} + +static int pqi_process_io_intr(struct pqi_ctrl_info *ctrl_info, struct pqi_queue_group *queue_group) { - unsigned int num_responses; + int num_responses; pqi_index_t oq_pi; pqi_index_t oq_ci; struct pqi_io_request *io_request; @@ -2930,6 +2932,13 @@ while (1) { oq_pi = readl(queue_group->oq_pi); + if (oq_pi >= ctrl_info->num_elements_per_oq) { + pqi_invalid_response(ctrl_info); + dev_err(&ctrl_info->pci_dev->dev, + "I/O interrupt: producer index (%u) out of range (0-%u): consumer index: %u\n", + oq_pi, ctrl_info->num_elements_per_oq - 1, oq_ci); + return -1; + } if (oq_pi == oq_ci) break; @@ -2938,10 +2947,22 @@ (oq_ci * PQI_OPERATIONAL_OQ_ELEMENT_LENGTH); request_id = get_unaligned_le16(&response->request_id); - WARN_ON(request_id >= ctrl_info->max_io_slots); + if (request_id >= ctrl_info->max_io_slots) { + pqi_invalid_response(ctrl_info); + dev_err(&ctrl_info->pci_dev->dev, + "request ID in response (%u) out of range (0-%u): producer index: %u consumer index: %u\n", + request_id, ctrl_info->max_io_slots - 1, oq_pi, oq_ci); + return -1; + } io_request = &ctrl_info->io_request_pool[request_id]; - WARN_ON(atomic_read(&io_request->refcount) == 0); + if (atomic_read(&io_request->refcount) == 0) { + pqi_invalid_response(ctrl_info); + dev_err(&ctrl_info->pci_dev->dev, + "request ID in response (%u) does not match an outstanding I/O request: producer index: %u consumer index: %u\n", + request_id, oq_pi, oq_ci); + return -1; + } switch (response->header.iu_type) { case PQI_RESPONSE_IU_RAID_PATH_IO_SUCCESS: @@ -2971,24 +2992,22 @@ io_request->error_info = ctrl_info->error_buffer + (get_unaligned_le16(&response->error_index) * PQI_ERROR_BUFFER_ELEMENT_LENGTH); - pqi_process_io_error(response->header.iu_type, - io_request); + pqi_process_io_error(response->header.iu_type, io_request); break; default: + pqi_invalid_response(ctrl_info); dev_err(&ctrl_info->pci_dev->dev, - "unexpected IU type: 0x%x\n", - response->header.iu_type); - break; + "unexpected IU type: 0x%x: producer index: %u consumer index: %u\n", + response->header.iu_type, oq_pi, oq_ci); + return -1; } - io_request->io_complete_callback(io_request, - io_request->context); + io_request->io_complete_callback(io_request, io_request->context); /* * Note that the I/O request structure CANNOT BE TOUCHED after * returning from the I/O completion callback! */ - oq_ci = (oq_ci + 1) % ctrl_info->num_elements_per_oq; } @@ -3301,9 +3320,9 @@ } } -static unsigned int pqi_process_event_intr(struct pqi_ctrl_info *ctrl_info) +static int pqi_process_event_intr(struct pqi_ctrl_info *ctrl_info) { - unsigned int num_events; + int num_events; pqi_index_t oq_pi; pqi_index_t oq_ci; struct pqi_event_queue *event_queue; @@ -3317,26 +3336,31 @@ while (1) { oq_pi = readl(event_queue->oq_pi); + if (oq_pi >= PQI_NUM_EVENT_QUEUE_ELEMENTS) { + pqi_invalid_response(ctrl_info); + dev_err(&ctrl_info->pci_dev->dev, + "event interrupt: producer index (%u) out of range (0-%u): consumer index: %u\n", + oq_pi, PQI_NUM_EVENT_QUEUE_ELEMENTS - 1, oq_ci); + return -1; + } + if (oq_pi == oq_ci) break; num_events++; - response = event_queue->oq_element_array + - (oq_ci * PQI_EVENT_OQ_ELEMENT_LENGTH); + response = event_queue->oq_element_array + (oq_ci * PQI_EVENT_OQ_ELEMENT_LENGTH); event_index = pqi_event_type_to_event_index(response->event_type); - if (event_index >= 0) { - if (response->request_acknowlege) { - event = &ctrl_info->events[event_index]; - event->pending = true; - event->event_type = response->event_type; - event->event_id = response->event_id; - event->additional_event_id = - response->additional_event_id; + if (event_index >= 0 && response->request_acknowledge) { + event = &ctrl_info->events[event_index]; + event->pending = true; + event->event_type = response->event_type; + event->event_id = response->event_id; + event->additional_event_id = response->additional_event_id; + if (event->event_type == PQI_EVENT_TYPE_OFA) pqi_ofa_capture_event_payload(event, response); - } } oq_ci = (oq_ci + 1) % PQI_NUM_EVENT_QUEUE_ELEMENTS; @@ -3451,7 +3475,8 @@ { struct pqi_ctrl_info *ctrl_info; struct pqi_queue_group *queue_group; - unsigned int num_responses_handled; + int num_io_responses_handled; + int num_events_handled; queue_group = data; ctrl_info = queue_group->ctrl_info; @@ -3459,17 +3484,25 @@ if (!pqi_is_valid_irq(ctrl_info)) return IRQ_NONE; - num_responses_handled = pqi_process_io_intr(ctrl_info, queue_group); + num_io_responses_handled = pqi_process_io_intr(ctrl_info, queue_group); + if (num_io_responses_handled < 0) + goto out; - if (irq == ctrl_info->event_irq) - num_responses_handled += pqi_process_event_intr(ctrl_info); + if (irq == ctrl_info->event_irq) { + num_events_handled = pqi_process_event_intr(ctrl_info); + if (num_events_handled < 0) + goto out; + } else { + num_events_handled = 0; + } - if (num_responses_handled) + if (num_io_responses_handled + num_events_handled > 0) atomic_inc(&ctrl_info->num_interrupts); pqi_start_io(ctrl_info, queue_group, RAID_PATH, NULL); pqi_start_io(ctrl_info, queue_group, AIO_PATH, NULL); +out: return IRQ_HANDLED; } --- linux-5.8.0.orig/drivers/scsi/sr.c +++ linux-5.8.0/drivers/scsi/sr.c @@ -392,15 +392,11 @@ struct request *rq = SCpnt->request; blk_status_t ret; - ret = scsi_init_io(SCpnt); + ret = scsi_alloc_sgtables(SCpnt); if (ret != BLK_STS_OK) - goto out; + return ret; cd = scsi_cd(rq->rq_disk); - /* from here on until we're complete, any goto out - * is used for a killable error condition */ - ret = BLK_STS_IOERR; - SCSI_LOG_HLQUEUE(1, scmd_printk(KERN_INFO, SCpnt, "Doing sr request, block = %d\n", block)); @@ -509,12 +505,12 @@ SCpnt->allowed = MAX_RETRIES; /* - * This indicates that the command is ready from our end to be - * queued. + * This indicates that the command is ready from our end to be queued. */ - ret = BLK_STS_OK; + return BLK_STS_OK; out: - return ret; + scsi_free_sgtables(SCpnt); + return BLK_STS_IOERR; } static int sr_block_open(struct block_device *bdev, fmode_t mode) --- linux-5.8.0.orig/drivers/scsi/st.c +++ linux-5.8.0/drivers/scsi/st.c @@ -1269,8 +1269,8 @@ spin_lock(&st_use_lock); if (STp->in_use) { spin_unlock(&st_use_lock); - scsi_tape_put(STp); DEBC_printk(STp, "Device already in use.\n"); + scsi_tape_put(STp); return (-EBUSY); } --- linux-5.8.0.orig/drivers/scsi/storvsc_drv.c +++ linux-5.8.0/drivers/scsi/storvsc_drv.c @@ -1921,6 +1921,12 @@ * from the host. */ host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT); +#if defined(CONFIG_X86_32) + dev_warn(&device->device, "adjusting sg_tablesize 0x%x -> 0x%x", + host->sg_tablesize, MAX_MULTIPAGE_BUFFER_COUNT); + host->sg_tablesize = MAX_MULTIPAGE_BUFFER_COUNT; +#endif + /* * For non-IDE disks, the host supports multiple channels. * Set the number of HW queues we are supporting. @@ -1935,8 +1941,10 @@ alloc_ordered_workqueue("storvsc_error_wq_%d", WQ_MEM_RECLAIM, host->host_no); - if (!host_dev->handle_error_wq) + if (!host_dev->handle_error_wq) { + ret = -ENOMEM; goto err_out2; + } INIT_WORK(&host_dev->host_scan_work, storvsc_host_scan); /* Register the HBA and start the scsi bus scan */ ret = scsi_add_host(host, &device->device); --- linux-5.8.0.orig/drivers/scsi/ufs/Kconfig +++ linux-5.8.0/drivers/scsi/ufs/Kconfig @@ -72,6 +72,7 @@ config SCSI_UFSHCD_PLATFORM tristate "Platform bus based UFS Controller support" depends on SCSI_UFSHCD + depends on HAS_IOMEM help This selects the UFS host controller support. Select this if you have an UFS controller on Platform bus. --- linux-5.8.0.orig/drivers/scsi/ufs/ti-j721e-ufs.c +++ linux-5.8.0/drivers/scsi/ufs/ti-j721e-ufs.c @@ -38,6 +38,7 @@ /* Select MPHY refclk frequency */ clk = devm_clk_get(dev, NULL); if (IS_ERR(clk)) { + ret = PTR_ERR(clk); dev_err(dev, "Cannot claim MPHY clock.\n"); goto clk_err; } --- linux-5.8.0.orig/drivers/scsi/ufs/ufs-mediatek.c +++ linux-5.8.0/drivers/scsi/ufs/ufs-mediatek.c @@ -440,7 +440,7 @@ return ret; } -static void ufs_mtk_device_reset(struct ufs_hba *hba) +static int ufs_mtk_device_reset(struct ufs_hba *hba) { struct arm_smccc_res res; @@ -461,6 +461,8 @@ usleep_range(10000, 15000); dev_info(hba->dev, "device reset done\n"); + + return 0; } static int ufs_mtk_link_set_hpm(struct ufs_hba *hba) @@ -585,13 +587,7 @@ static void ufs_mtk_fixup_dev_quirks(struct ufs_hba *hba) { - struct ufs_dev_info *dev_info = &hba->dev_info; - u16 mid = dev_info->wmanufacturerid; - ufshcd_fixup_dev_quirks(hba, ufs_mtk_dev_fixups); - - if (mid == UFS_VENDOR_SAMSUNG) - hba->dev_quirks &= ~UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE; } /** --- linux-5.8.0.orig/drivers/scsi/ufs/ufs-qcom.c +++ linux-5.8.0/drivers/scsi/ufs/ufs-qcom.c @@ -253,12 +253,17 @@ { int ret = 0; struct ufs_qcom_host *host = ufshcd_get_variant(hba); + bool reenable_intr = false; if (!host->core_reset) { dev_warn(hba->dev, "%s: reset control not set\n", __func__); goto out; } + reenable_intr = hba->is_irq_enabled; + disable_irq(hba->irq); + hba->is_irq_enabled = false; + ret = reset_control_assert(host->core_reset); if (ret) { dev_err(hba->dev, "%s: core_reset assert failed, err = %d\n", @@ -280,6 +285,11 @@ usleep_range(1000, 1100); + if (reenable_intr) { + enable_irq(hba->irq); + hba->is_irq_enabled = true; + } + out: return ret; } @@ -1604,9 +1614,6 @@ */ } mask <<= offset; - - pm_runtime_get_sync(host->hba->dev); - ufshcd_hold(host->hba, false); ufshcd_rmwl(host->hba, TEST_BUS_SEL, (u32)host->testbus.select_major << 19, REG_UFS_CFG1); @@ -1619,8 +1626,6 @@ * committed before returning. */ mb(); - ufshcd_release(host->hba); - pm_runtime_put_sync(host->hba->dev); return 0; } @@ -1671,13 +1676,13 @@ * * Toggles the (optional) reset line to reset the attached device. */ -static void ufs_qcom_device_reset(struct ufs_hba *hba) +static int ufs_qcom_device_reset(struct ufs_hba *hba) { struct ufs_qcom_host *host = ufshcd_get_variant(hba); /* reset gpio is optional */ if (!host->device_reset) - return; + return -EOPNOTSUPP; /* * The UFS device shall detect reset pulses of 1us, sleep for 10us to @@ -1688,6 +1693,8 @@ gpiod_set_value_cansleep(host->device_reset, 0); usleep_range(10, 15); + + return 0; } #if IS_ENABLED(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND) --- linux-5.8.0.orig/drivers/scsi/ufs/ufs-sysfs.c +++ linux-5.8.0/drivers/scsi/ufs/ufs-sysfs.c @@ -777,7 +777,8 @@ 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)) \ + if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, \ + _duname##_DESC_PARAM##_puname)) \ return -EINVAL; \ return ufs_sysfs_read_desc_param(hba, QUERY_DESC_IDN_##_duname, \ lun, _duname##_DESC_PARAM##_puname, buf, _size); \ --- linux-5.8.0.orig/drivers/scsi/ufs/ufs.h +++ linux-5.8.0/drivers/scsi/ufs/ufs.h @@ -585,13 +585,15 @@ * @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 lun, u8 param_offset) { 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); } --- linux-5.8.0.orig/drivers/scsi/ufs/ufs_quirks.h +++ linux-5.8.0/drivers/scsi/ufs/ufs_quirks.h @@ -12,6 +12,7 @@ #define UFS_ANY_VENDOR 0xFFFF #define UFS_ANY_MODEL "ANY_MODEL" +#define UFS_VENDOR_MICRON 0x12C #define UFS_VENDOR_TOSHIBA 0x198 #define UFS_VENDOR_SAMSUNG 0x1CE #define UFS_VENDOR_SKHYNIX 0x1AD --- linux-5.8.0.orig/drivers/scsi/ufs/ufshcd-pci.c +++ linux-5.8.0/drivers/scsi/ufs/ufshcd-pci.c @@ -67,9 +67,58 @@ return err; } +static int ufs_intel_resume(struct ufs_hba *hba, enum ufs_pm_op op) +{ + /* + * To support S4 (suspend-to-disk) with spm_lvl other than 5, the base + * address registers must be restored because the restore kernel can + * have used different addresses. + */ + 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); + + if (ufshcd_is_link_hibern8(hba)) { + int ret = ufshcd_uic_hibern8_exit(hba); + + if (!ret) { + ufshcd_set_link_active(hba); + } else { + dev_err(hba->dev, "%s: hibern8 exit failed %d\n", + __func__, ret); + /* + * Force reset and restore. Any other actions can lead + * to an unrecoverable state. + */ + ufshcd_set_link_off(hba); + } + } + + return 0; +} + +static int ufs_intel_ehl_init(struct ufs_hba *hba) +{ + hba->quirks |= UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8; + return 0; +} + static struct ufs_hba_variant_ops ufs_intel_cnl_hba_vops = { .name = "intel-pci", .link_startup_notify = ufs_intel_link_startup_notify, + .resume = ufs_intel_resume, +}; + +static struct ufs_hba_variant_ops ufs_intel_ehl_hba_vops = { + .name = "intel-pci", + .init = ufs_intel_ehl_init, + .link_startup_notify = ufs_intel_link_startup_notify, + .resume = ufs_intel_resume, }; #ifdef CONFIG_PM_SLEEP @@ -96,6 +145,30 @@ { return ufshcd_system_resume(dev_get_drvdata(dev)); } + +/** + * ufshcd_pci_poweroff - suspend-to-disk poweroff function + * @dev: pointer to PCI device handle + * + * Returns 0 if successful + * Returns non-zero otherwise + */ +static int ufshcd_pci_poweroff(struct device *dev) +{ + struct ufs_hba *hba = dev_get_drvdata(dev); + int spm_lvl = hba->spm_lvl; + int ret; + + /* + * For poweroff we need to set the UFS device to PowerDown mode. + * Force spm_lvl to ensure that. + */ + hba->spm_lvl = 5; + ret = ufshcd_system_suspend(hba); + hba->spm_lvl = spm_lvl; + return ret; +} + #endif /* !CONFIG_PM_SLEEP */ #ifdef CONFIG_PM @@ -190,8 +263,14 @@ } static const struct dev_pm_ops ufshcd_pci_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(ufshcd_pci_suspend, - ufshcd_pci_resume) +#ifdef CONFIG_PM_SLEEP + .suspend = ufshcd_pci_suspend, + .resume = ufshcd_pci_resume, + .freeze = ufshcd_pci_suspend, + .thaw = ufshcd_pci_resume, + .poweroff = ufshcd_pci_poweroff, + .restore = ufshcd_pci_resume, +#endif SET_RUNTIME_PM_OPS(ufshcd_pci_runtime_suspend, ufshcd_pci_runtime_resume, ufshcd_pci_runtime_idle) @@ -200,8 +279,8 @@ static const struct pci_device_id ufshcd_pci_tbl[] = { { PCI_VENDOR_ID_SAMSUNG, 0xC00C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { PCI_VDEVICE(INTEL, 0x9DFA), (kernel_ulong_t)&ufs_intel_cnl_hba_vops }, - { PCI_VDEVICE(INTEL, 0x4B41), (kernel_ulong_t)&ufs_intel_cnl_hba_vops }, - { PCI_VDEVICE(INTEL, 0x4B43), (kernel_ulong_t)&ufs_intel_cnl_hba_vops }, + { PCI_VDEVICE(INTEL, 0x4B41), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, + { PCI_VDEVICE(INTEL, 0x4B43), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, { } /* terminate list */ }; --- linux-5.8.0.orig/drivers/scsi/ufs/ufshcd.c +++ linux-5.8.0/drivers/scsi/ufs/ufshcd.c @@ -216,6 +216,8 @@ static struct ufs_dev_fix ufs_fixups[] = { /* UFS cards deviations table */ + UFS_FIX(UFS_VENDOR_MICRON, UFS_ANY_MODEL, + UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM), UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL, UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM), UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL, @@ -482,6 +484,9 @@ 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); + dev_err(hba->dev, "UPIU[%d] - PRDT - %d entries phys@0x%llx\n", tag, prdt_length, @@ -672,7 +677,11 @@ */ static inline void ufshcd_utrl_clear(struct ufs_hba *hba, u32 pos) { - ufshcd_writel(hba, ~(1 << pos), REG_UTP_TRANSFER_REQ_LIST_CLEAR); + if (hba->quirks & UFSHCI_QUIRK_BROKEN_REQ_LIST_CLR) + ufshcd_writel(hba, (1 << pos), REG_UTP_TRANSFER_REQ_LIST_CLEAR); + else + ufshcd_writel(hba, ~(1 << pos), + REG_UTP_TRANSFER_REQ_LIST_CLEAR); } /** @@ -682,7 +691,10 @@ */ static inline void ufshcd_utmrl_clear(struct ufs_hba *hba, u32 pos) { - ufshcd_writel(hba, ~(1 << pos), REG_UTP_TASK_REQ_LIST_CLEAR); + if (hba->quirks & UFSHCI_QUIRK_BROKEN_REQ_LIST_CLR) + ufshcd_writel(hba, (1 << pos), REG_UTP_TASK_REQ_LIST_CLEAR); + else + ufshcd_writel(hba, ~(1 << pos), REG_UTP_TASK_REQ_LIST_CLEAR); } /** @@ -1272,8 +1284,15 @@ } spin_unlock_irqrestore(hba->host->host_lock, irq_flags); + pm_runtime_get_noresume(hba->dev); + if (!pm_runtime_active(hba->dev)) { + pm_runtime_put_noidle(hba->dev); + ret = -EAGAIN; + goto out; + } start = ktime_get(); ret = ufshcd_devfreq_scale(hba, scale_up); + pm_runtime_put(hba->dev); trace_ufshcd_profile_clk_scaling(dev_name(hba->dev), (scale_up ? "up" : "down"), @@ -1314,6 +1333,7 @@ unsigned long flags; struct list_head *clk_list = &hba->clk_list_head; struct ufs_clk_info *clki; + ktime_t curr_t; if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; @@ -1321,6 +1341,7 @@ memset(stat, 0, sizeof(*stat)); spin_lock_irqsave(hba->host->host_lock, flags); + curr_t = ktime_get(); if (!scaling->window_start_t) goto start_window; @@ -1332,18 +1353,17 @@ */ stat->current_frequency = clki->curr_freq; if (scaling->is_busy_started) - scaling->tot_busy_t += ktime_to_us(ktime_sub(ktime_get(), - scaling->busy_start_t)); + scaling->tot_busy_t += ktime_us_delta(curr_t, + scaling->busy_start_t); - stat->total_time = jiffies_to_usecs((long)jiffies - - (long)scaling->window_start_t); + stat->total_time = ktime_us_delta(curr_t, scaling->window_start_t); stat->busy_time = scaling->tot_busy_t; start_window: - scaling->window_start_t = jiffies; + scaling->window_start_t = curr_t; scaling->tot_busy_t = 0; if (hba->outstanding_reqs) { - scaling->busy_start_t = ktime_get(); + scaling->busy_start_t = curr_t; scaling->is_busy_started = true; } else { scaling->busy_start_t = 0; @@ -1556,6 +1576,7 @@ int ufshcd_hold(struct ufs_hba *hba, bool async) { int rc = 0; + bool flush_result; unsigned long flags; if (!ufshcd_is_clkgating_allowed(hba)) @@ -1587,7 +1608,9 @@ break; } spin_unlock_irqrestore(hba->host->host_lock, flags); - flush_work(&hba->clk_gating.ungate_work); + flush_result = flush_work(&hba->clk_gating.ungate_work); + if (hba->clk_gating.is_suspended && !flush_result) + goto out; spin_lock_irqsave(hba->host->host_lock, flags); goto start; } @@ -1606,12 +1629,12 @@ */ /* fallthrough */ case CLKS_OFF: - ufshcd_scsi_block_requests(hba); hba->clk_gating.state = REQ_CLKS_ON; trace_ufshcd_clk_gating(dev_name(hba->dev), hba->clk_gating.state); - queue_work(hba->clk_gating.clk_gating_workq, - &hba->clk_gating.ungate_work); + if (queue_work(hba->clk_gating.clk_gating_workq, + &hba->clk_gating.ungate_work)) + ufshcd_scsi_block_requests(hba); /* * fall through to check if we should wait for this * work to be done or not. @@ -1719,8 +1742,9 @@ if (hba->clk_gating.active_reqs || hba->clk_gating.is_suspended || hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL - || ufshcd_any_tag_in_use(hba) || hba->outstanding_tasks + || hba->outstanding_tasks || hba->active_uic_cmd || hba->uic_async_done + || hba->clk_gating.state == CLKS_OFF || ufshcd_eh_in_progress(hba)) return; @@ -1877,6 +1901,7 @@ static void ufshcd_clk_scaling_start_busy(struct ufs_hba *hba) { bool queue_resume_work = false; + ktime_t curr_t = ktime_get(); if (!ufshcd_is_clkscaling_supported(hba)) return; @@ -1892,13 +1917,13 @@ &hba->clk_scaling.resume_work); if (!hba->clk_scaling.window_start_t) { - hba->clk_scaling.window_start_t = jiffies; + hba->clk_scaling.window_start_t = curr_t; hba->clk_scaling.tot_busy_t = 0; hba->clk_scaling.is_busy_started = false; } if (!hba->clk_scaling.is_busy_started) { - hba->clk_scaling.busy_start_t = ktime_get(); + hba->clk_scaling.busy_start_t = curr_t; hba->clk_scaling.is_busy_started = true; } } @@ -1925,8 +1950,11 @@ static inline void ufshcd_send_command(struct ufs_hba *hba, unsigned int task_tag) { - hba->lrb[task_tag].issue_time_stamp = ktime_get(); - hba->lrb[task_tag].compl_time_stamp = ktime_set(0, 0); + struct ufshcd_lrb *lrbp = &hba->lrb[task_tag]; + + lrbp->issue_time_stamp = ktime_get(); + lrbp->compl_time_stamp = ktime_set(0, 0); + ufshcd_vops_setup_xfer_req(hba, task_tag, (lrbp->cmd ? true : false)); ufshcd_add_command_trace(hba, task_tag, "send"); ufshcd_clk_scaling_start_busy(hba); __set_bit(task_tag, &hba->outstanding_reqs); @@ -2072,10 +2100,20 @@ unsigned long flags; if (wait_for_completion_timeout(&uic_cmd->done, - msecs_to_jiffies(UIC_CMD_TIMEOUT))) + msecs_to_jiffies(UIC_CMD_TIMEOUT))) { ret = uic_cmd->argument2 & MASK_UIC_COMMAND_RESULT; - else + } else { ret = -ETIMEDOUT; + dev_err(hba->dev, + "uic cmd 0x%x with arg3 0x%x completion timeout\n", + uic_cmd->command, uic_cmd->argument3); + + if (!uic_cmd->cmd_active) { + dev_err(hba->dev, "%s: UIC cmd has been completed, return the result\n", + __func__); + ret = uic_cmd->argument2 & MASK_UIC_COMMAND_RESULT; + } + } spin_lock_irqsave(hba->host->host_lock, flags); hba->active_uic_cmd = NULL; @@ -2107,6 +2145,7 @@ if (completion) init_completion(&uic_cmd->done); + uic_cmd->cmd_active = 1; ufshcd_dispatch_uic_cmd(hba, uic_cmd); return 0; @@ -2161,8 +2200,14 @@ return sg_segments; if (sg_segments) { - lrbp->utr_descriptor_ptr->prd_table_length = - cpu_to_le16((u16)sg_segments); + + 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))); + else + lrbp->utr_descriptor_ptr->prd_table_length = + cpu_to_le16((u16) (sg_segments)); prd_table = (struct ufshcd_sg_entry *)lrbp->ucd_prdt_ptr; @@ -2536,7 +2581,6 @@ /* issue command to the controller */ spin_lock_irqsave(hba->host->host_lock, flags); - ufshcd_vops_setup_xfer_req(hba, tag, true); ufshcd_send_command(hba, tag); out_unlock: spin_unlock_irqrestore(hba->host->host_lock, flags); @@ -2723,7 +2767,6 @@ /* Make sure descriptors are ready before ringing the doorbell */ wmb(); spin_lock_irqsave(hba->host->host_lock, flags); - ufshcd_vops_setup_xfer_req(hba, tag, false); ufshcd_send_command(hba, tag); spin_unlock_irqrestore(hba->host->host_lock, flags); @@ -3175,14 +3218,19 @@ /* Sanity checks */ if (ret || !buff_len) { - dev_err(hba->dev, "%s: Failed to get full descriptor length", - __func__); + 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 ret; } /* Check whether we need temp memory */ if (param_offset != 0 || param_size < buff_len) { - desc_buf = kmalloc(buff_len, GFP_KERNEL); + desc_buf = kzalloc(buff_len, GFP_KERNEL); if (!desc_buf) return -ENOMEM; } else { @@ -3196,25 +3244,25 @@ 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", + 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; } /* Sanity check */ if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id) { - dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header", + dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header\n", __func__, desc_buf[QUERY_DESC_DESC_TYPE_OFFSET]); ret = -EINVAL; goto out; } - /* Check wherher we will not copy more data, than available */ - if (is_kmalloc && param_size > buff_len) - param_size = buff_len; - - if (is_kmalloc) + if (is_kmalloc) { + /* Make sure we don't copy more data than available */ + if (param_offset + param_size > buff_len) + param_size = buff_len - param_offset; memcpy(param_read_buf, &desc_buf[param_offset], param_size); + } out: if (is_kmalloc) kfree(desc_buf); @@ -3354,7 +3402,7 @@ * 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)) + if (!ufs_is_valid_unit_desc_lun(&hba->dev_info, lun, param_offset)) return -EOPNOTSUPP; return ufshcd_read_desc_param(hba, QUERY_DESC_IDN_UNIT, lun, @@ -3511,11 +3559,21 @@ cpu_to_le32(upper_32_bits(cmd_desc_element_addr)); /* Response upiu and prdt offset should be in double words */ - utrdlp[i].response_upiu_offset = - cpu_to_le16(response_offset >> 2); - utrdlp[i].prd_table_offset = cpu_to_le16(prdt_offset >> 2); - utrdlp[i].response_upiu_length = - cpu_to_le16(ALIGNED_UPIU_SIZE >> 2); + if (hba->quirks & UFSHCD_QUIRK_PRDT_BYTE_GRAN) { + utrdlp[i].response_upiu_offset = + cpu_to_le16(response_offset); + utrdlp[i].prd_table_offset = + cpu_to_le16(prdt_offset); + utrdlp[i].response_upiu_length = + cpu_to_le16(ALIGNED_UPIU_SIZE); + } else { + utrdlp[i].response_upiu_offset = + cpu_to_le16(response_offset >> 2); + utrdlp[i].prd_table_offset = + cpu_to_le16(prdt_offset >> 2); + utrdlp[i].response_upiu_length = + cpu_to_le16(ALIGNED_UPIU_SIZE >> 2); + } ufshcd_init_lrb(hba, &hba->lrb[i], i); } @@ -3545,6 +3603,52 @@ "dme-link-startup: error code %d\n", ret); return ret; } +/** + * ufshcd_dme_reset - UIC command for DME_RESET + * @hba: per adapter instance + * + * DME_RESET command is issued in order to reset UniPro stack. + * This function now deals with cold reset. + * + * Returns 0 on success, non-zero value on failure + */ +static int ufshcd_dme_reset(struct ufs_hba *hba) +{ + struct uic_command uic_cmd = {0}; + int ret; + + uic_cmd.command = UIC_CMD_DME_RESET; + + ret = ufshcd_send_uic_cmd(hba, &uic_cmd); + if (ret) + dev_err(hba->dev, + "dme-enable: error code %d\n", ret); + + return ret; +} + +/** + * ufshcd_dme_enable - UIC command for DME_ENABLE + * @hba: per adapter instance + * + * DME_ENABLE command is issued in order to enable UniPro stack. + * + * Returns 0 on success, non-zero value on failure + */ +static int ufshcd_dme_enable(struct ufs_hba *hba) +{ + struct uic_command uic_cmd = {0}; + int ret; + + uic_cmd.command = UIC_CMD_DME_ENABLE; + + ret = ufshcd_send_uic_cmd(hba, &uic_cmd); + if (ret) + dev_err(hba->dev, + "dme-reset: error code %d\n", ret); + + return ret; +} static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba) { @@ -3749,10 +3853,18 @@ dev_err(hba->dev, "pwr ctrl cmd 0x%x with mode 0x%x completion timeout\n", cmd->command, cmd->argument3); + + if (!cmd->cmd_active) { + dev_err(hba->dev, "%s: Power Mode Change operation has been completed, go check UPMCRS\n", + __func__); + goto check_upmcrs; + } + ret = -ETIMEDOUT; goto out; } +check_upmcrs: status = ufshcd_get_upmcrs(hba); if (status != PWR_LOCAL) { dev_err(hba->dev, @@ -4085,25 +4197,27 @@ ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES), pwr_mode->hs_rate); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA0), - DL_FC0ProtectionTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA1), - DL_TC0ReplayTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA2), - DL_AFC0ReqTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA3), - DL_FC1ProtectionTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA4), - DL_TC1ReplayTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA5), - DL_AFC1ReqTimeOutVal_Default); - - ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalFC0ProtectionTimeOutVal), - DL_FC0ProtectionTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalTC0ReplayTimeOutVal), - DL_TC0ReplayTimeOutVal_Default); - ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalAFC0ReqTimeOutVal), - DL_AFC0ReqTimeOutVal_Default); + if (!(hba->quirks & UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING)) { + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA0), + DL_FC0ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA1), + DL_TC0ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA2), + DL_AFC0ReqTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA3), + DL_FC1ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA4), + DL_TC1ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PWRMODEUSERDATA5), + DL_AFC1ReqTimeOutVal_Default); + + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalFC0ProtectionTimeOutVal), + DL_FC0ProtectionTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalTC0ReplayTimeOutVal), + DL_TC0ReplayTimeOutVal_Default); + ufshcd_dme_set(hba, UIC_ARG_MIB(DME_LocalAFC0ReqTimeOutVal), + DL_AFC0ReqTimeOutVal_Default); + } ret = ufshcd_uic_change_pwr_mode(hba, pwr_mode->pwr_rx << 4 | pwr_mode->pwr_tx); @@ -4269,7 +4383,7 @@ } /** - * ufshcd_hba_enable - initialize the controller + * ufshcd_hba_execute_hce - initialize the controller * @hba: per adapter instance * * The controller resets itself and controller firmware initialization @@ -4278,7 +4392,7 @@ * * Returns 0 on success, non-zero value on failure */ -int ufshcd_hba_enable(struct ufs_hba *hba) +static int ufshcd_hba_execute_hce(struct ufs_hba *hba) { int retry; @@ -4326,6 +4440,32 @@ return 0; } + +int ufshcd_hba_enable(struct ufs_hba *hba) +{ + int ret; + + if (hba->quirks & UFSHCI_QUIRK_BROKEN_HCE) { + ufshcd_set_link_off(hba); + ufshcd_vops_hce_enable_notify(hba, PRE_CHANGE); + + /* 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"); + } + } else { + ret = ufshcd_hba_execute_hce(hba); + } + + return ret; +} EXPORT_SYMBOL_GPL(ufshcd_hba_enable); static int ufshcd_disable_tx_lcc(struct ufs_hba *hba, bool peer) @@ -4646,6 +4786,8 @@ struct request_queue *q = sdev->request_queue; blk_queue_update_dma_pad(q, PRDT_DATA_BYTE_COUNT_PAD - 1); + if (hba->quirks & UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE) + blk_queue_update_dma_alignment(q, PAGE_SIZE - 1); if (ufshcd_is_rpm_autosuspend_allowed(hba)) sdev->rpm_autosuspend = 1; @@ -4724,6 +4866,12 @@ /* overall command status of utrd */ ocs = ufshcd_get_tr_ocs(lrbp); + if (hba->quirks & UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR) { + if (be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_1) & + MASK_RSP_UPIU_RESULT) + ocs = OCS_SUCCESS; + } + switch (ocs) { case OCS_SUCCESS: result = ufshcd_get_req_rsp(lrbp->ucd_rsp_ptr); @@ -4825,11 +4973,14 @@ ufshcd_get_uic_cmd_result(hba); hba->active_uic_cmd->argument3 = ufshcd_get_dme_attr_val(hba); + if (!hba->uic_async_done) + hba->active_uic_cmd->cmd_active = 0; complete(&hba->active_uic_cmd->done); retval = IRQ_HANDLED; } if ((intr_status & UFSHCD_UIC_PWR_MASK) && hba->uic_async_done) { + hba->active_uic_cmd->cmd_active = 0; complete(hba->uic_async_done); retval = IRQ_HANDLED; } @@ -4902,7 +5053,8 @@ * false interrupt if device completes another request after resetting * aggregation and before reading the DB. */ - if (ufshcd_is_intr_aggr_allowed(hba)) + if (ufshcd_is_intr_aggr_allowed(hba) && + !(hba->quirks & UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR)) ufshcd_reset_intr_aggr(hba); tr_doorbell = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL); @@ -5881,7 +6033,7 @@ */ static irqreturn_t ufshcd_intr(int irq, void *__hba) { - u32 intr_status, enabled_intr_status; + u32 intr_status, enabled_intr_status = 0; irqreturn_t retval = IRQ_NONE; struct ufs_hba *hba = __hba; int retries = hba->nutrs; @@ -5895,7 +6047,7 @@ * read, make sure we handle them by checking the interrupt status * again in a loop until we process all of the reqs before returning. */ - do { + while (intr_status && retries--) { enabled_intr_status = intr_status & ufshcd_readl(hba, REG_INTERRUPT_ENABLE); if (intr_status) @@ -5904,9 +6056,9 @@ retval |= ufshcd_sl_intr(hba, enabled_intr_status); intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS); - } while (intr_status && --retries); + } - if (retval == IRQ_NONE) { + if (enabled_intr_status && retval == IRQ_NONE) { dev_err(hba->dev, "%s: Unhandled interrupt 0x%08x\n", __func__, intr_status); ufshcd_dump_regs(hba, 0, UFSHCI_REG_SPACE_SIZE, "host_regs: "); @@ -6264,19 +6416,16 @@ { struct Scsi_Host *host; struct ufs_hba *hba; - unsigned int tag; u32 pos; int err; - u8 resp = 0xF; - struct ufshcd_lrb *lrbp; + u8 resp = 0xF, lun; unsigned long flags; host = cmd->device->host; hba = shost_priv(host); - tag = cmd->request->tag; - lrbp = &hba->lrb[tag]; - err = ufshcd_issue_tm_cmd(hba, lrbp->lun, 0, UFS_LOGICAL_RESET, &resp); + lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun); + err = ufshcd_issue_tm_cmd(hba, lun, 0, UFS_LOGICAL_RESET, &resp); if (err || resp != UPIU_TASK_MANAGEMENT_FUNC_COMPL) { if (!err) err = resp; @@ -6285,7 +6434,7 @@ /* clear the commands that were pending for corresponding LUN */ for_each_set_bit(pos, &hba->outstanding_reqs, hba->nutrs) { - if (hba->lrb[pos].lun == lrbp->lun) { + if (hba->lrb[pos].lun == lun) { err = ufshcd_clear_cmd(hba, pos); if (err) break; @@ -6431,7 +6580,7 @@ /* command completed already */ dev_err(hba->dev, "%s: cmd at tag %d successfully cleared from DB.\n", __func__, tag); - goto out; + goto cleanup; } else { dev_err(hba->dev, "%s: no response from device. tag = %d, err %d\n", @@ -6465,6 +6614,7 @@ goto out; } +cleanup: scsi_dma_unmap(cmd); spin_lock_irqsave(host->host_lock, flags); @@ -6775,7 +6925,6 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba *hba) { int ret = 0; - struct scsi_device *sdev_rpmb; struct scsi_device *sdev_boot; hba->sdev_ufs_device = __scsi_add_device(hba->host, 0, 0, @@ -6788,14 +6937,14 @@ ufshcd_blk_pm_runtime_init(hba->sdev_ufs_device); scsi_device_put(hba->sdev_ufs_device); - sdev_rpmb = __scsi_add_device(hba->host, 0, 0, + hba->sdev_rpmb = __scsi_add_device(hba->host, 0, 0, ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_RPMB_WLUN), NULL); - if (IS_ERR(sdev_rpmb)) { - ret = PTR_ERR(sdev_rpmb); + if (IS_ERR(hba->sdev_rpmb)) { + ret = PTR_ERR(hba->sdev_rpmb); goto remove_sdev_ufs_device; } - ufshcd_blk_pm_runtime_init(sdev_rpmb); - scsi_device_put(sdev_rpmb); + ufshcd_blk_pm_runtime_init(hba->sdev_rpmb); + scsi_device_put(hba->sdev_rpmb); sdev_boot = __scsi_add_device(hba->host, 0, 0, ufshcd_upiu_wlun_to_scsi_wlun(UFS_UPIU_BOOT_WLUN), NULL); @@ -6815,20 +6964,30 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) { + struct ufs_dev_info *dev_info = &hba->dev_info; u8 lun; u32 d_lu_wb_buf_alloc; if (!ufshcd_is_wb_allowed(hba)) return; + /* + * Probe WB only for UFS-2.2 and UFS-3.1 (and later) devices or + * UFS devices with quirk UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES + * enabled + */ + if (!(dev_info->wspecversion >= 0x310 || + dev_info->wspecversion == 0x220 || + (hba->dev_quirks & UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES))) + goto wb_disabled; if (hba->desc_size.dev_desc < DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4) goto wb_disabled; - hba->dev_info.d_ext_ufs_feature_sup = + dev_info->d_ext_ufs_feature_sup = get_unaligned_be32(desc_buf + DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP); - if (!(hba->dev_info.d_ext_ufs_feature_sup & UFS_DEV_WRITE_BOOSTER_SUP)) + if (!(dev_info->d_ext_ufs_feature_sup & UFS_DEV_WRITE_BOOSTER_SUP)) goto wb_disabled; /* @@ -6837,17 +6996,17 @@ * a max of 1 lun would have wb buffer configured. * Now only shared buffer mode is supported. */ - hba->dev_info.b_wb_buffer_type = + dev_info->b_wb_buffer_type = desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; - hba->dev_info.b_presrv_uspc_en = + dev_info->b_presrv_uspc_en = desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN]; - if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_SHARED) { - hba->dev_info.d_wb_alloc_units = + if (dev_info->b_wb_buffer_type == WB_BUF_MODE_SHARED) { + dev_info->d_wb_alloc_units = get_unaligned_be32(desc_buf + DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); - if (!hba->dev_info.d_wb_alloc_units) + if (!dev_info->d_wb_alloc_units) goto wb_disabled; } else { for (lun = 0; lun < UFS_UPIU_MAX_WB_LUN_ID; lun++) { @@ -6858,7 +7017,7 @@ (u8 *)&d_lu_wb_buf_alloc, sizeof(d_lu_wb_buf_alloc)); if (d_lu_wb_buf_alloc) { - hba->dev_info.wb_dedicated_lu = lun; + dev_info->wb_dedicated_lu = lun; break; } } @@ -6947,14 +7106,7 @@ ufs_fixup_device_setup(hba); - /* - * Probe WB only for UFS-3.1 devices or UFS devices with quirk - * UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES enabled - */ - if (dev_info->wspecversion >= 0x310 || - dev_info->wspecversion == 0x220 || - (hba->dev_quirks & UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES)) - ufshcd_wb_probe(hba, desc_buf); + ufshcd_wb_probe(hba, desc_buf); /* * ufshcd_read_string_desc returns size of the string @@ -7357,6 +7509,63 @@ return ret; } +static int +ufshcd_send_request_sense(struct ufs_hba *hba, struct scsi_device *sdp); + +static int ufshcd_clear_ua_wlun(struct ufs_hba *hba, u8 wlun) +{ + struct scsi_device *sdp; + unsigned long flags; + int ret = 0; + + spin_lock_irqsave(hba->host->host_lock, flags); + if (wlun == UFS_UPIU_UFS_DEVICE_WLUN) + sdp = hba->sdev_ufs_device; + else if (wlun == UFS_UPIU_RPMB_WLUN) + sdp = hba->sdev_rpmb; + else + BUG(); + if (sdp) { + ret = scsi_device_get(sdp); + if (!ret && !scsi_device_online(sdp)) { + ret = -ENODEV; + scsi_device_put(sdp); + } + } else { + ret = -ENODEV; + } + spin_unlock_irqrestore(hba->host->host_lock, flags); + if (ret) + goto out_err; + + ret = ufshcd_send_request_sense(hba, sdp); + scsi_device_put(sdp); +out_err: + if (ret) + dev_err(hba->dev, "%s: UAC clear LU=%x ret = %d\n", + __func__, wlun, ret); + return ret; +} + +static int ufshcd_clear_ua_wluns(struct ufs_hba *hba) +{ + int ret = 0; + + if (!hba->wlun_dev_clr_ua) + goto out; + + ret = ufshcd_clear_ua_wlun(hba, UFS_UPIU_UFS_DEVICE_WLUN); + if (!ret) + ret = ufshcd_clear_ua_wlun(hba, UFS_UPIU_RPMB_WLUN); + if (!ret) + hba->wlun_dev_clr_ua = false; +out: + if (ret) + dev_err(hba->dev, "%s: Failed to clear UAC WLUNS ret = %d\n", + __func__, ret); + return ret; +} + /** * ufshcd_probe_hba - probe hba to detect device and initialize * @hba: per-adapter instance @@ -7472,6 +7681,8 @@ pm_runtime_put_sync(hba->dev); ufshcd_exit_clk_scaling(hba); ufshcd_hba_exit(hba); + } else { + ufshcd_clear_ua_wluns(hba); } } @@ -8459,7 +8670,8 @@ if ((ufs_get_pm_lvl_to_dev_pwr_mode(hba->spm_lvl) == hba->curr_dev_pwr_mode) && (ufs_get_pm_lvl_to_link_pwr_state(hba->spm_lvl) == - hba->uic_link_state)) + hba->uic_link_state) && + !hba->dev_info.b_rpm_dev_flush_capable) goto out; if (pm_runtime_suspended(hba->dev)) { @@ -8613,11 +8825,7 @@ if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba)) goto out; - if (pm_runtime_suspended(hba->dev)) { - ret = ufshcd_runtime_resume(hba); - if (ret) - goto out; - } + pm_runtime_get_sync(hba->dev); ret = ufshcd_suspend(hba, UFS_SHUTDOWN_PM); out: --- linux-5.8.0.orig/drivers/scsi/ufs/ufshcd.h +++ linux-5.8.0/drivers/scsi/ufs/ufshcd.h @@ -342,7 +342,7 @@ int (*resume)(struct ufs_hba *, enum ufs_pm_op); void (*dbg_register_dump)(struct ufs_hba *hba); int (*phy_initialization)(struct ufs_hba *); - void (*device_reset)(struct ufs_hba *hba); + int (*device_reset)(struct ufs_hba *hba); void (*config_scaling_param)(struct ufs_hba *hba, struct devfreq_dev_profile *profile, void *data); @@ -411,7 +411,7 @@ struct ufs_clk_scaling { int active_reqs; unsigned long tot_busy_t; - unsigned long window_start_t; + ktime_t window_start_t; ktime_t busy_start_t; struct device_attribute enable_attr; struct ufs_saved_pwr_info saved_pwr_info; @@ -520,6 +520,52 @@ * ops (get_ufs_hci_version) to get the correct version. */ UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION = 1 << 5, + + /* + * Clear handling for transfer/task request list is just opposite. + */ + UFSHCI_QUIRK_BROKEN_REQ_LIST_CLR = 1 << 6, + + /* + * This quirk needs to be enabled if host controller doesn't allow + * that the interrupt aggregation timer and counter are reset by s/w. + */ + UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR = 1 << 7, + + /* + * This quirks needs to be enabled if host controller cannot be + * enabled via HCE register. + */ + UFSHCI_QUIRK_BROKEN_HCE = 1 << 8, + + /* + * This quirk needs to be enabled if the host controller regards + * resolution of the values of PRDTO and PRDTL in UTRD as byte. + */ + UFSHCD_QUIRK_PRDT_BYTE_GRAN = 1 << 9, + + /* + * This quirk needs to be enabled if the host controller reports + * OCS FATAL ERROR with device error through sense data + */ + UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR = 1 << 10, + + /* + * This quirk needs to be enabled if the host controller has + * auto-hibernate capability but it doesn't work. + */ + UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8 = 1 << 11, + + /* + * This quirk needs to disable unipro timeout values + * before power mode change + */ + UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING = 1 << 13, + + /* + * This quirk allows only sg entries aligned with page size. + */ + UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE = 1 << 14, }; enum ufshcd_caps { @@ -646,6 +692,7 @@ * "UFS device" W-LU. */ struct scsi_device *sdev_ufs_device; + struct scsi_device *sdev_rpmb; enum ufs_dev_pwr_mode curr_dev_pwr_mode; enum uic_link_state uic_link_state; @@ -786,7 +833,8 @@ static inline bool ufshcd_is_auto_hibern8_supported(struct ufs_hba *hba) { - return (hba->capabilities & MASK_AUTO_HIBERN8_SUPPORT); + return (hba->capabilities & MASK_AUTO_HIBERN8_SUPPORT) && + !(hba->quirks & UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8); } static inline bool ufshcd_is_auto_hibern8_enabled(struct ufs_hba *hba) @@ -1133,9 +1181,17 @@ static inline void ufshcd_vops_device_reset(struct ufs_hba *hba) { if (hba->vops && hba->vops->device_reset) { - hba->vops->device_reset(hba); - ufshcd_set_ufs_dev_active(hba); - ufshcd_update_reg_hist(&hba->ufs_stats.dev_reset, 0); + int err = hba->vops->device_reset(hba); + + if (!err) { + ufshcd_set_ufs_dev_active(hba); + if (ufshcd_is_wb_allowed(hba)) { + hba->wb_enabled = false; + hba->wb_buf_flush_enabled = false; + } + } + if (err != -EOPNOTSUPP) + ufshcd_update_reg_hist(&hba->ufs_stats.dev_reset, err); } } --- linux-5.8.0.orig/drivers/slimbus/core.c +++ linux-5.8.0/drivers/slimbus/core.c @@ -301,8 +301,6 @@ { /* Remove all clients */ device_for_each_child(ctrl->dev, NULL, slim_ctrl_remove_device); - /* Enter Clock Pause */ - slim_ctrl_clk_pause(ctrl, false, 0); ida_simple_remove(&ctrl_ida, ctrl->id); return 0; @@ -326,8 +324,8 @@ mutex_lock(&ctrl->lock); sbdev->is_laddr_valid = false; mutex_unlock(&ctrl->lock); - - ida_simple_remove(&ctrl->laddr_ida, sbdev->laddr); + if (!ctrl->get_laddr) + ida_simple_remove(&ctrl->laddr_ida, sbdev->laddr); slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_DOWN); } EXPORT_SYMBOL_GPL(slim_report_absent); --- linux-5.8.0.orig/drivers/slimbus/qcom-ctrl.c +++ linux-5.8.0/drivers/slimbus/qcom-ctrl.c @@ -472,15 +472,10 @@ static void qcom_slim_prg_slew(struct platform_device *pdev, struct qcom_slim_ctrl *ctrl) { - struct resource *slew_mem; - if (!ctrl->slew_reg) { /* SLEW RATE register for this SLIMbus */ - slew_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, - "slew"); - ctrl->slew_reg = devm_ioremap(&pdev->dev, slew_mem->start, - resource_size(slew_mem)); - if (!ctrl->slew_reg) + ctrl->slew_reg = devm_platform_ioremap_resource_byname(pdev, "slew"); + if (IS_ERR(ctrl->slew_reg)) return; } --- linux-5.8.0.orig/drivers/slimbus/qcom-ngd-ctrl.c +++ linux-5.8.0/drivers/slimbus/qcom-ngd-ctrl.c @@ -1205,6 +1205,9 @@ struct qcom_slim_ngd_ctrl *ctrl = dev_get_drvdata(dev); int ret = 0; + if (!ctrl->qmi.handle) + return 0; + if (ctrl->state >= QCOM_SLIM_NGD_CTRL_ASLEEP) ret = qcom_slim_ngd_power_up(ctrl); if (ret) { @@ -1277,9 +1280,13 @@ { struct qcom_slim_ngd_qmi *qmi = container_of(hdl, struct qcom_slim_ngd_qmi, svc_event_hdl); + struct qcom_slim_ngd_ctrl *ctrl = + container_of(qmi, struct qcom_slim_ngd_ctrl, qmi); qmi->svc_info.sq_node = 0; qmi->svc_info.sq_port = 0; + + qcom_slim_ngd_enable(ctrl, false); } static struct qmi_ops qcom_slim_ngd_qmi_svc_event_ops = { @@ -1499,6 +1506,9 @@ struct qcom_slim_ngd_ctrl *ctrl = dev_get_drvdata(dev); int ret = 0; + if (!ctrl->qmi.handle) + return 0; + ret = qcom_slim_qmi_power_request(ctrl, false); if (ret && ret != -EBUSY) dev_info(ctrl->dev, "slim resource not idle:%d\n", ret); --- linux-5.8.0.orig/drivers/soc/amlogic/meson-canvas.c +++ linux-5.8.0/drivers/soc/amlogic/meson-canvas.c @@ -72,8 +72,10 @@ * current state, this driver probe cannot return -EPROBE_DEFER */ canvas = dev_get_drvdata(&canvas_pdev->dev); - if (!canvas) + if (!canvas) { + put_device(&canvas_pdev->dev); return ERR_PTR(-EINVAL); + } return canvas; } --- linux-5.8.0.orig/drivers/soc/aspeed/aspeed-lpc-snoop.c +++ linux-5.8.0/drivers/soc/aspeed/aspeed-lpc-snoop.c @@ -11,6 +11,7 @@ */ #include +#include #include #include #include @@ -67,6 +68,7 @@ struct aspeed_lpc_snoop { struct regmap *regmap; int irq; + struct clk *clk; struct aspeed_lpc_snoop_channel chan[NUM_SNOOP_CHANNELS]; }; @@ -282,22 +284,42 @@ return -ENODEV; } + lpc_snoop->clk = devm_clk_get(dev, NULL); + if (IS_ERR(lpc_snoop->clk)) { + rc = PTR_ERR(lpc_snoop->clk); + if (rc != -EPROBE_DEFER) + dev_err(dev, "couldn't get clock\n"); + return rc; + } + rc = clk_prepare_enable(lpc_snoop->clk); + if (rc) { + dev_err(dev, "couldn't enable clock\n"); + return rc; + } + rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev); if (rc) - return rc; + goto err; rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port); if (rc) - return rc; + goto err; /* Configuration of 2nd snoop channel port is optional */ if (of_property_read_u32_index(dev->of_node, "snoop-ports", 1, &port) == 0) { rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port); - if (rc) + if (rc) { aspeed_lpc_disable_snoop(lpc_snoop, 0); + goto err; + } } + return 0; + +err: + clk_disable_unprepare(lpc_snoop->clk); + return rc; } @@ -309,6 +331,8 @@ aspeed_lpc_disable_snoop(lpc_snoop, 0); aspeed_lpc_disable_snoop(lpc_snoop, 1); + clk_disable_unprepare(lpc_snoop->clk); + return 0; } --- linux-5.8.0.orig/drivers/soc/atmel/soc.c +++ linux-5.8.0/drivers/soc/atmel/soc.c @@ -265,8 +265,21 @@ return soc_dev; } +static const struct of_device_id at91_soc_allowed_list[] __initconst = { + { .compatible = "atmel,at91rm9200", }, + { .compatible = "atmel,at91sam9", }, + { .compatible = "atmel,sama5", }, + { .compatible = "atmel,samv7", }, + { } +}; + static int __init atmel_soc_device_init(void) { + struct device_node *np = of_find_node_by_path("/"); + + if (!of_match_node(at91_soc_allowed_list, np)) + return 0; + at91_soc_init(socs); return 0; --- linux-5.8.0.orig/drivers/soc/fsl/dpio/dpio-driver.c +++ linux-5.8.0/drivers/soc/fsl/dpio/dpio-driver.c @@ -95,7 +95,6 @@ { int error; struct fsl_mc_device_irq *irq; - cpumask_t mask; irq = dpio_dev->irqs[0]; error = devm_request_irq(&dpio_dev->dev, @@ -112,9 +111,7 @@ } /* set the affinity hint */ - cpumask_clear(&mask); - cpumask_set_cpu(cpu, &mask); - if (irq_set_affinity_hint(irq->msi_desc->irq, &mask)) + if (irq_set_affinity_hint(irq->msi_desc->irq, cpumask_of(cpu))) dev_err(&dpio_dev->dev, "irq_set_affinity failed irq %d cpu %d\n", irq->msi_desc->irq, cpu); --- linux-5.8.0.orig/drivers/soc/fsl/qbman/bman.c +++ linux-5.8.0/drivers/soc/fsl/qbman/bman.c @@ -660,7 +660,7 @@ } done: put_affine_portal(); - return 0; + return err; } struct gen_pool *bm_bpalloc; --- linux-5.8.0.orig/drivers/soc/mediatek/mtk-cmdq-helper.c +++ linux-5.8.0/drivers/soc/mediatek/mtk-cmdq-helper.c @@ -213,15 +213,16 @@ } EXPORT_SYMBOL(cmdq_pkt_write_mask); -int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event) +int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event, bool clear) { struct cmdq_instruction inst = { {0} }; + u32 clear_option = clear ? CMDQ_WFE_UPDATE : 0; if (event >= CMDQ_MAX_EVENT) return -EINVAL; inst.op = CMDQ_CODE_WFE; - inst.value = CMDQ_WFE_OPTION; + inst.value = CMDQ_WFE_OPTION | clear_option; inst.event = event; return cmdq_pkt_append_command(pkt, inst); --- linux-5.8.0.orig/drivers/soc/mediatek/mtk-scpsys.c +++ linux-5.8.0/drivers/soc/mediatek/mtk-scpsys.c @@ -524,6 +524,7 @@ for (i = 0; i < num; i++) { struct scp_domain *scpd = &scp->domains[i]; struct generic_pm_domain *genpd = &scpd->genpd; + bool on; /* * Initially turn on all domains to make the domains usable @@ -531,9 +532,9 @@ * software. The unused domains will be switched off during * late_init time. */ - genpd->power_on(genpd); + on = !WARN_ON(genpd->power_on(genpd) < 0); - pm_genpd_init(genpd, NULL, false); + pm_genpd_init(genpd, NULL, !on); } /* --- linux-5.8.0.orig/drivers/soc/qcom/apr.c +++ linux-5.8.0/drivers/soc/qcom/apr.c @@ -328,7 +328,7 @@ pds = pdr_add_lookup(apr->pdr, service_name, service_path); if (IS_ERR(pds) && PTR_ERR(pds) != -EALREADY) { - dev_err(dev, "pdr add lookup failed: %d\n", ret); + dev_err(dev, "pdr add lookup failed: %ld\n", PTR_ERR(pds)); return PTR_ERR(pds); } } --- linux-5.8.0.orig/drivers/soc/qcom/ocmem.c +++ linux-5.8.0/drivers/soc/qcom/ocmem.c @@ -189,6 +189,7 @@ { struct platform_device *pdev; struct device_node *devnode; + struct ocmem *ocmem; devnode = of_parse_phandle(dev->of_node, "sram", 0); if (!devnode || !devnode->parent) { @@ -202,7 +203,12 @@ return ERR_PTR(-EPROBE_DEFER); } - return platform_get_drvdata(pdev); + ocmem = platform_get_drvdata(pdev); + if (!ocmem) { + dev_err(dev, "Cannot get ocmem\n"); + return ERR_PTR(-ENODEV); + } + return ocmem; } EXPORT_SYMBOL(of_get_ocmem); --- linux-5.8.0.orig/drivers/soc/qcom/pdr_interface.c +++ linux-5.8.0/drivers/soc/qcom/pdr_interface.c @@ -278,13 +278,15 @@ list_for_each_entry_safe(ind, tmp, &pdr->indack_list, node) { pds = ind->pds; - pdr_send_indack_msg(pdr, pds, ind->transaction_id); mutex_lock(&pdr->status_lock); pds->state = ind->curr_state; pdr->status(pds->state, pds->service_path, pdr->priv); mutex_unlock(&pdr->status_lock); + /* Ack the indication after clients release the PD resources */ + pdr_send_indack_msg(pdr, pds, ind->transaction_id); + mutex_lock(&pdr->list_lock); list_del(&ind->node); mutex_unlock(&pdr->list_lock); @@ -566,7 +568,7 @@ int pdr_restart_pd(struct pdr_handle *pdr, struct pdr_service *pds) { struct servreg_restart_pd_resp resp; - struct servreg_restart_pd_req req; + struct servreg_restart_pd_req req = { 0 }; struct sockaddr_qrtr addr; struct pdr_service *tmp; struct qmi_txn txn; --- linux-5.8.0.orig/drivers/soc/qcom/pdr_internal.h +++ linux-5.8.0/drivers/soc/qcom/pdr_internal.h @@ -185,7 +185,7 @@ .data_type = QMI_STRUCT, .elem_len = SERVREG_DOMAIN_LIST_LENGTH, .elem_size = sizeof(struct servreg_location_entry), - .array_type = NO_ARRAY, + .array_type = VAR_LEN_ARRAY, .tlv_type = 0x12, .offset = offsetof(struct servreg_get_domain_list_resp, domain_list), --- linux-5.8.0.orig/drivers/soc/qcom/qcom-geni-se.c +++ linux-5.8.0/drivers/soc/qcom/qcom-geni-se.c @@ -282,10 +282,23 @@ static void geni_se_select_dma_mode(struct geni_se *se) { + u32 proto = geni_se_read_proto(se); u32 val; geni_se_irq_clear(se); + val = readl_relaxed(se->base + SE_GENI_M_IRQ_EN); + if (proto != GENI_SE_UART) { + val &= ~(M_CMD_DONE_EN | M_TX_FIFO_WATERMARK_EN); + val &= ~(M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN); + } + writel_relaxed(val, se->base + SE_GENI_M_IRQ_EN); + + val = readl_relaxed(se->base + SE_GENI_S_IRQ_EN); + if (proto != GENI_SE_UART) + val &= ~S_CMD_DONE_EN; + writel_relaxed(val, se->base + SE_GENI_S_IRQ_EN); + val = readl_relaxed(se->base + SE_GENI_DMA_MODE_EN); val |= GENI_DMA_MODE_EN; writel_relaxed(val, se->base + SE_GENI_DMA_MODE_EN); @@ -644,7 +657,7 @@ writel_relaxed(lower_32_bits(*iova), se->base + SE_DMA_TX_PTR_L); writel_relaxed(upper_32_bits(*iova), se->base + SE_DMA_TX_PTR_H); writel_relaxed(GENI_SE_DMA_EOT_BUF, se->base + SE_DMA_TX_ATTR); - writel_relaxed(len, se->base + SE_DMA_TX_LEN); + writel(len, se->base + SE_DMA_TX_LEN); return 0; } EXPORT_SYMBOL(geni_se_tx_dma_prep); @@ -681,7 +694,7 @@ writel_relaxed(upper_32_bits(*iova), se->base + SE_DMA_RX_PTR_H); /* RX does not have EOT buffer type bit. So just reset RX_ATTR */ writel_relaxed(0, se->base + SE_DMA_RX_ATTR); - writel_relaxed(len, se->base + SE_DMA_RX_LEN); + writel(len, se->base + SE_DMA_RX_LEN); return 0; } EXPORT_SYMBOL(geni_se_rx_dma_prep); --- linux-5.8.0.orig/drivers/soc/qcom/rpmh-internal.h +++ linux-5.8.0/drivers/soc/qcom/rpmh-internal.h @@ -8,6 +8,7 @@ #define __RPM_INTERNAL_H__ #include +#include #include #define TCS_TYPE_NR 4 @@ -106,6 +107,8 @@ * @lock: Synchronize state of the controller. If RPMH's cache * lock will also be held, the order is: drv->lock then * cache_lock. + * @tcs_wait: Wait queue used to wait for @tcs_in_use to free up a + * slot * @client: Handle to the DRV's client. */ struct rsc_drv { @@ -118,6 +121,7 @@ struct tcs_group tcs[TCS_TYPE_NR]; DECLARE_BITMAP(tcs_in_use, MAX_TCS_NR); spinlock_t lock; + wait_queue_head_t tcs_wait; struct rpmh_ctrlr client; }; --- linux-5.8.0.orig/drivers/soc/qcom/rpmh-rsc.c +++ linux-5.8.0/drivers/soc/qcom/rpmh-rsc.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -175,13 +176,21 @@ static void write_tcs_reg_sync(const struct rsc_drv *drv, int reg, int tcs_id, u32 data) { - u32 new_data; + int i; writel(data, tcs_reg_addr(drv, reg, tcs_id)); - if (readl_poll_timeout_atomic(tcs_reg_addr(drv, reg, tcs_id), new_data, - new_data == data, 1, USEC_PER_SEC)) - pr_err("%s: error writing %#x to %d:%#x\n", drv->name, - data, tcs_id, reg); + + /* + * Wait until we read back the same value. Use a counter rather than + * ktime for timeout since this may be called after timekeeping stops. + */ + for (i = 0; i < USEC_PER_SEC; i++) { + if (readl(tcs_reg_addr(drv, reg, tcs_id)) == data) + return; + udelay(1); + } + pr_err("%s: error writing %#x to %d:%#x\n", drv->name, + data, tcs_id, reg); } /** @@ -445,6 +454,7 @@ if (!drv->tcs[ACTIVE_TCS].num_tcs) enable_tcs_irq(drv, i, false); spin_unlock(&drv->lock); + wake_up(&drv->tcs_wait); if (req) rpmh_tx_done(req, err); } @@ -563,73 +573,34 @@ } /** - * tcs_write() - Store messages into a TCS right now, or return -EBUSY. + * claim_tcs_for_req() - Claim a tcs in the given tcs_group; only for active. * @drv: The controller. + * @tcs: The tcs_group used for ACTIVE_ONLY transfers. * @msg: The data to be sent. * - * Grabs a TCS for ACTIVE_ONLY transfers and writes the messages to it. + * Claims a tcs in the given tcs_group while making sure that no existing cmd + * is in flight that would conflict with the one in @msg. * - * If there are no free TCSes for ACTIVE_ONLY transfers or if a command for - * the same address is already transferring returns -EBUSY which means the - * client should retry shortly. + * Context: Must be called with the drv->lock held since that protects + * tcs_in_use. * - * Return: 0 on success, -EBUSY if client should retry, or an error. - * Client should have interrupts enabled for a bit before retrying. + * Return: The id of the claimed tcs or -EBUSY if a matching msg is in flight + * or the tcs_group is full. */ -static int tcs_write(struct rsc_drv *drv, const struct tcs_request *msg) +static int claim_tcs_for_req(struct rsc_drv *drv, struct tcs_group *tcs, + const struct tcs_request *msg) { - struct tcs_group *tcs; - int tcs_id; - unsigned long flags; int ret; - tcs = get_tcs_for_msg(drv, msg); - if (IS_ERR(tcs)) - return PTR_ERR(tcs); - - spin_lock_irqsave(&drv->lock, flags); /* * The h/w does not like if we send a request to the same address, * when one is already in-flight or being processed. */ ret = check_for_req_inflight(drv, tcs, msg); if (ret) - goto unlock; - - ret = find_free_tcs(tcs); - if (ret < 0) - goto unlock; - tcs_id = ret; - - tcs->req[tcs_id - tcs->offset] = msg; - set_bit(tcs_id, drv->tcs_in_use); - if (msg->state == RPMH_ACTIVE_ONLY_STATE && tcs->type != ACTIVE_TCS) { - /* - * Clear previously programmed WAKE commands in selected - * repurposed TCS to avoid triggering them. tcs->slots will be - * cleaned from rpmh_flush() by invoking rpmh_rsc_invalidate() - */ - write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, tcs_id, 0); - write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, 0); - enable_tcs_irq(drv, tcs_id, true); - } - spin_unlock_irqrestore(&drv->lock, flags); - - /* - * These two can be done after the lock is released because: - * - We marked "tcs_in_use" under lock. - * - Once "tcs_in_use" has been marked nobody else could be writing - * to these registers until the interrupt goes off. - * - The interrupt can't go off until we trigger w/ the last line - * of __tcs_set_trigger() below. - */ - __tcs_buffer_write(drv, tcs_id, 0, msg); - __tcs_set_trigger(drv, tcs_id, true); + return ret; - return 0; -unlock: - spin_unlock_irqrestore(&drv->lock, flags); - return ret; + return find_free_tcs(tcs); } /** @@ -656,18 +627,47 @@ */ int rpmh_rsc_send_data(struct rsc_drv *drv, const struct tcs_request *msg) { - int ret; + struct tcs_group *tcs; + int tcs_id; + unsigned long flags; - do { - ret = tcs_write(drv, msg); - if (ret == -EBUSY) { - pr_info_ratelimited("TCS Busy, retrying RPMH message send: addr=%#x\n", - msg->cmds[0].addr); - udelay(10); - } - } while (ret == -EBUSY); + tcs = get_tcs_for_msg(drv, msg); + if (IS_ERR(tcs)) + return PTR_ERR(tcs); - return ret; + spin_lock_irqsave(&drv->lock, flags); + + /* Wait forever for a free tcs. It better be there eventually! */ + wait_event_lock_irq(drv->tcs_wait, + (tcs_id = claim_tcs_for_req(drv, tcs, msg)) >= 0, + drv->lock); + + tcs->req[tcs_id - tcs->offset] = msg; + set_bit(tcs_id, drv->tcs_in_use); + if (msg->state == RPMH_ACTIVE_ONLY_STATE && tcs->type != ACTIVE_TCS) { + /* + * Clear previously programmed WAKE commands in selected + * repurposed TCS to avoid triggering them. tcs->slots will be + * cleaned from rpmh_flush() by invoking rpmh_rsc_invalidate() + */ + write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, tcs_id, 0); + write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, 0); + enable_tcs_irq(drv, tcs_id, true); + } + spin_unlock_irqrestore(&drv->lock, flags); + + /* + * These two can be done after the lock is released because: + * - We marked "tcs_in_use" under lock. + * - Once "tcs_in_use" has been marked nobody else could be writing + * to these registers until the interrupt goes off. + * - The interrupt can't go off until we trigger w/ the last line + * of __tcs_set_trigger() below. + */ + __tcs_buffer_write(drv, tcs_id, 0, msg); + __tcs_set_trigger(drv, tcs_id, true); + + return 0; } /** @@ -975,6 +975,7 @@ return ret; spin_lock_init(&drv->lock); + init_waitqueue_head(&drv->tcs_wait); bitmap_zero(drv->tcs_in_use, MAX_TCS_NR); irq = platform_get_irq(pdev, drv->id); @@ -1023,6 +1024,7 @@ .driver = { .name = "rpmh", .of_match_table = rpmh_drv_match, + .suppress_bind_attrs = true, }, }; --- linux-5.8.0.orig/drivers/soc/qcom/smp2p.c +++ linux-5.8.0/drivers/soc/qcom/smp2p.c @@ -318,15 +318,16 @@ static int smp2p_update_bits(void *data, u32 mask, u32 value) { struct smp2p_entry *entry = data; + unsigned long flags; u32 orig; u32 val; - spin_lock(&entry->lock); + spin_lock_irqsave(&entry->lock, flags); val = orig = readl(entry->value); val &= ~mask; val |= value; writel(val, entry->value); - spin_unlock(&entry->lock); + spin_unlock_irqrestore(&entry->lock, flags); if (val != orig) qcom_smp2p_kick(entry->smp2p); --- linux-5.8.0.orig/drivers/soc/renesas/rmobile-sysc.c +++ linux-5.8.0/drivers/soc/renesas/rmobile-sysc.c @@ -327,6 +327,7 @@ pmd = of_get_child_by_name(np, "pm-domains"); if (!pmd) { + iounmap(base); pr_warn("%pOF lacks pm-domains node\n", np); continue; } --- linux-5.8.0.orig/drivers/soc/samsung/exynos-asv.c +++ linux-5.8.0/drivers/soc/samsung/exynos-asv.c @@ -119,11 +119,6 @@ u32 product_id = 0; int ret, i; - cpu_dev = get_cpu_device(0); - ret = dev_pm_opp_get_opp_count(cpu_dev); - if (ret < 0) - return -EPROBE_DEFER; - asv = devm_kzalloc(&pdev->dev, sizeof(*asv), GFP_KERNEL); if (!asv) return -ENOMEM; @@ -134,7 +129,13 @@ return PTR_ERR(asv->chipid_regmap); } - regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PRO_ID, &product_id); + ret = regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PRO_ID, + &product_id); + if (ret < 0) { + dev_err(&pdev->dev, "Cannot read revision from ChipID: %d\n", + ret); + return -ENODEV; + } switch (product_id & EXYNOS_MASK) { case 0xE5422000: @@ -144,6 +145,11 @@ return -ENODEV; } + cpu_dev = get_cpu_device(0); + ret = dev_pm_opp_get_opp_count(cpu_dev); + if (ret < 0) + return -EPROBE_DEFER; + ret = of_property_read_u32(pdev->dev.of_node, "samsung,asv-bin", &asv->of_bin); if (ret < 0) --- linux-5.8.0.orig/drivers/soc/tegra/fuse/speedo-tegra210.c +++ linux-5.8.0/drivers/soc/tegra/fuse/speedo-tegra210.c @@ -94,7 +94,7 @@ unsigned int i; for (i = 0; i < num; i++) - if (value < speedos[num]) + if (value < speedos[i]) return i; return -EINVAL; --- linux-5.8.0.orig/drivers/soc/ti/knav_dma.c +++ linux-5.8.0/drivers/soc/ti/knav_dma.c @@ -759,8 +759,9 @@ pm_runtime_enable(kdev->dev); ret = pm_runtime_get_sync(kdev->dev); if (ret < 0) { + pm_runtime_put_noidle(kdev->dev); dev_err(kdev->dev, "unable to enable pktdma, err %d\n", ret); - return ret; + goto err_pm_disable; } /* Initialise all packet dmas */ @@ -774,7 +775,8 @@ if (list_empty(&kdev->list)) { dev_err(dev, "no valid dma instance\n"); - return -ENODEV; + ret = -ENODEV; + goto err_put_sync; } debugfs_create_file("knav_dma", S_IFREG | S_IRUGO, NULL, NULL, @@ -782,6 +784,13 @@ device_ready = true; return ret; + +err_put_sync: + pm_runtime_put_sync(kdev->dev); +err_pm_disable: + pm_runtime_disable(kdev->dev); + + return ret; } static int knav_dma_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/soc/ti/knav_qmss_queue.c +++ linux-5.8.0/drivers/soc/ti/knav_qmss_queue.c @@ -1794,6 +1794,7 @@ pm_runtime_enable(&pdev->dev); ret = pm_runtime_get_sync(&pdev->dev); if (ret < 0) { + pm_runtime_put_noidle(&pdev->dev); dev_err(dev, "Failed to enable QMSS\n"); return ret; } @@ -1861,9 +1862,10 @@ if (ret) goto err; - regions = of_get_child_by_name(node, "descriptor-regions"); + regions = of_get_child_by_name(node, "descriptor-regions"); if (!regions) { dev_err(dev, "descriptor-regions not specified\n"); + ret = -ENODEV; goto err; } ret = knav_queue_setup_regions(kdev, regions); --- linux-5.8.0.orig/drivers/soc/ti/omap_prm.c +++ linux-5.8.0/drivers/soc/ti/omap_prm.c @@ -231,6 +231,10 @@ struct ti_prm_platform_data *pdata = dev_get_platdata(reset->dev); int ret = 0; + /* Nothing to do if the reset is already deasserted */ + if (!omap_reset_status(rcdev, id)) + return 0; + has_rstst = reset->prm->data->rstst || (reset->prm->data->flags & OMAP_PRM_HAS_RSTST); @@ -265,8 +269,12 @@ reset->prm->data->name, id); exit: - if (reset->clkdm) + if (reset->clkdm) { + /* At least dra7 iva needs a delay before clkdm idle */ + if (has_rstst) + udelay(1); pdata->clkdm_allow_idle(reset->clkdm); + } return ret; } @@ -295,6 +303,7 @@ const struct omap_rst_map *map; struct ti_prm_platform_data *pdata = dev_get_platdata(&pdev->dev); char buf[32]; + u32 v; /* * Check if we have controllable resets. If either rstctrl is non-zero @@ -342,6 +351,16 @@ map++; } + /* Quirk handling to assert rst_map_012 bits on reset and avoid errors */ + if (prm->data->rstmap == rst_map_012) { + v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl); + if ((v & reset->mask) != reset->mask) { + dev_dbg(&pdev->dev, "Asserting all resets: %08x\n", v); + writel_relaxed(reset->mask, reset->prm->base + + reset->prm->data->rstctrl); + } + } + return devm_reset_controller_register(&pdev->dev, &reset->rcdev); } --- linux-5.8.0.orig/drivers/soc/ti/pm33xx.c +++ linux-5.8.0/drivers/soc/ti/pm33xx.c @@ -501,7 +501,7 @@ ret = am33xx_push_sram_idle(); if (ret) - goto err_free_sram; + goto err_unsetup_rtc; am33xx_pm_set_ipc_ops(); @@ -531,6 +531,9 @@ err_put_wkup_m3_ipc: wkup_m3_ipc_put(m3_ipc); +err_unsetup_rtc: + iounmap(rtc_base_virt); + clk_put(rtc_fck); err_free_sram: am33xx_pm_free_sram(); pm33xx_dev = NULL; --- linux-5.8.0.orig/drivers/soc/xilinx/zynqmp_power.c +++ linux-5.8.0/drivers/soc/xilinx/zynqmp_power.c @@ -205,7 +205,7 @@ rx_chan = mbox_request_channel_byname(client, "rx"); if (IS_ERR(rx_chan)) { dev_err(&pdev->dev, "Failed to request rx channel\n"); - return IS_ERR(rx_chan); + return PTR_ERR(rx_chan); } } else if (of_find_property(pdev->dev.of_node, "interrupts", NULL)) { irq = platform_get_irq(pdev, 0); --- linux-5.8.0.orig/drivers/soundwire/bus.c +++ linux-5.8.0/drivers/soundwire/bus.c @@ -390,10 +390,11 @@ return sdw_transfer(slave->bus, &msg); } -static int sdw_write_no_pm(struct sdw_slave *slave, u32 addr, u8 value) +int sdw_write_no_pm(struct sdw_slave *slave, u32 addr, u8 value) { return sdw_nwrite_no_pm(slave, addr, 1, &value); } +EXPORT_SYMBOL(sdw_write_no_pm); static int sdw_bread_no_pm(struct sdw_bus *bus, u16 dev_num, u32 addr) @@ -428,8 +429,7 @@ return sdw_transfer(bus, &msg); } -static int -sdw_read_no_pm(struct sdw_slave *slave, u32 addr) +int sdw_read_no_pm(struct sdw_slave *slave, u32 addr) { u8 buf; int ret; @@ -440,6 +440,19 @@ else return buf; } +EXPORT_SYMBOL(sdw_read_no_pm); + +static int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val) +{ + int tmp; + + tmp = sdw_read_no_pm(slave, addr); + if (tmp < 0) + return tmp; + + tmp = (tmp & ~mask) | val; + return sdw_write_no_pm(slave, addr, tmp); +} /** * sdw_nread() - Read "n" contiguous SDW Slave registers @@ -452,16 +465,16 @@ { int ret; - ret = pm_runtime_get_sync(slave->bus->dev); + ret = pm_runtime_get_sync(&slave->dev); if (ret < 0 && ret != -EACCES) { - pm_runtime_put_noidle(slave->bus->dev); + pm_runtime_put_noidle(&slave->dev); return ret; } ret = sdw_nread_no_pm(slave, addr, count, val); - pm_runtime_mark_last_busy(slave->bus->dev); - pm_runtime_put(slave->bus->dev); + pm_runtime_mark_last_busy(&slave->dev); + pm_runtime_put(&slave->dev); return ret; } @@ -478,16 +491,16 @@ { int ret; - ret = pm_runtime_get_sync(slave->bus->dev); + ret = pm_runtime_get_sync(&slave->dev); if (ret < 0 && ret != -EACCES) { - pm_runtime_put_noidle(slave->bus->dev); + pm_runtime_put_noidle(&slave->dev); return ret; } ret = sdw_nwrite_no_pm(slave, addr, count, val); - pm_runtime_mark_last_busy(slave->bus->dev); - pm_runtime_put(slave->bus->dev); + pm_runtime_mark_last_busy(&slave->dev); + pm_runtime_put(&slave->dev); return ret; } @@ -1075,7 +1088,7 @@ SDW_SCP_INT1_PARITY; /* Enable SCP interrupts */ - ret = sdw_update(slave, SDW_SCP_INTMASK1, val, val); + ret = sdw_update_no_pm(slave, SDW_SCP_INTMASK1, val, val); if (ret < 0) { dev_err(slave->bus->dev, "SDW_SCP_INTMASK1 write failed:%d\n", ret); @@ -1090,7 +1103,7 @@ val = prop->dp0_prop->imp_def_interrupts; val |= SDW_DP0_INT_PORT_READY | SDW_DP0_INT_BRA_FAILURE; - ret = sdw_update(slave, SDW_DP0_INTMASK, val, val); + ret = sdw_update_no_pm(slave, SDW_DP0_INTMASK, val, val); if (ret < 0) dev_err(slave->bus->dev, "SDW_DP0_INTMASK read failed:%d\n", ret); @@ -1250,7 +1263,7 @@ ret = pm_runtime_get_sync(&slave->dev); if (ret < 0 && ret != -EACCES) { dev_err(&slave->dev, "Failed to resume device: %d\n", ret); - pm_runtime_put_noidle(slave->bus->dev); + pm_runtime_put_noidle(&slave->dev); return ret; } --- linux-5.8.0.orig/drivers/soundwire/cadence_master.c +++ linux-5.8.0/drivers/soundwire/cadence_master.c @@ -397,10 +397,10 @@ if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) { no_ack = 1; dev_dbg_ratelimited(cdns->dev, "Msg Ack not received\n"); - if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) { - nack = 1; - dev_err_ratelimited(cdns->dev, "Msg NACK received\n"); - } + } + if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) { + nack = 1; + dev_err_ratelimited(cdns->dev, "Msg NACK received\n"); } } --- linux-5.8.0.orig/drivers/soundwire/intel_init.c +++ linux-5.8.0/drivers/soundwire/intel_init.c @@ -196,11 +196,12 @@ { acpi_status status; + res->handle = NULL; status = acpi_walk_namespace(ACPI_TYPE_DEVICE, parent_handle, 1, sdw_intel_acpi_cb, NULL, res, NULL); - if (ACPI_FAILURE(status)) + if (ACPI_FAILURE(status) || res->handle == NULL) return NULL; return sdw_intel_add_controller(res); --- linux-5.8.0.orig/drivers/soundwire/stream.c +++ linux-5.8.0/drivers/soundwire/stream.c @@ -716,6 +716,7 @@ kfree(wbuf); error_1: kfree(wr_msg); + bus->defer_msg.msg = NULL; return ret; } @@ -839,9 +840,10 @@ error: list_for_each_entry(m_rt, &stream->master_list, stream_node) { bus = m_rt->bus; - - kfree(bus->defer_msg.msg->buf); - kfree(bus->defer_msg.msg); + if (bus->defer_msg.msg) { + kfree(bus->defer_msg.msg->buf); + kfree(bus->defer_msg.msg); + } } msg_unlock: --- linux-5.8.0.orig/drivers/soundwire/sysfs_slave_dpn.c +++ linux-5.8.0/drivers/soundwire/sysfs_slave_dpn.c @@ -37,6 +37,7 @@ return -ENOMEM; \ dpn_attr->N = N; \ dpn_attr->dir = dir; \ + sysfs_attr_init(&dpn_attr->dev_attr.attr); \ dpn_attr->format_string = format_string; \ dpn_attr->dev_attr.attr.name = __stringify(field); \ dpn_attr->dev_attr.attr.mode = 0444; \ --- linux-5.8.0.orig/drivers/spi/Kconfig +++ linux-5.8.0/drivers/spi/Kconfig @@ -999,4 +999,7 @@ endif # SPI_SLAVE +config SPI_DYNAMIC + def_bool ACPI || OF_DYNAMIC || SPI_SLAVE + endif # SPI --- linux-5.8.0.orig/drivers/spi/atmel-quadspi.c +++ linux-5.8.0/drivers/spi/atmel-quadspi.c @@ -359,10 +359,14 @@ if (dummy_cycles) ifr |= QSPI_IFR_NBDUM(dummy_cycles); - /* Set data enable */ - if (op->data.nbytes) + /* Set data enable and data transfer type. */ + if (op->data.nbytes) { ifr |= QSPI_IFR_DATAEN; + if (op->addr.nbytes) + ifr |= QSPI_IFR_TFRTYP_MEM; + } + /* * If the QSPI controller is set in regular SPI mode, set it in * Serial Memory Mode (SMM). @@ -387,7 +391,7 @@ atmel_qspi_write(icr, aq, QSPI_WICR); atmel_qspi_write(ifr, aq, QSPI_IFR); } else { - if (op->data.dir == SPI_MEM_DATA_OUT) + if (op->data.nbytes && op->data.dir == SPI_MEM_DATA_OUT) ifr |= QSPI_IFR_SAMA5D2_WRITE_TRSFR; /* Set QSPI Instruction Frame registers */ @@ -529,7 +533,7 @@ struct resource *res; int irq, err = 0; - ctrl = spi_alloc_master(&pdev->dev, sizeof(*aq)); + ctrl = devm_spi_alloc_master(&pdev->dev, sizeof(*aq)); if (!ctrl) return -ENOMEM; @@ -551,8 +555,7 @@ aq->regs = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(aq->regs)) { dev_err(&pdev->dev, "missing registers\n"); - err = PTR_ERR(aq->regs); - goto exit; + return PTR_ERR(aq->regs); } /* Map the AHB memory */ @@ -560,8 +563,7 @@ aq->mem = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(aq->mem)) { dev_err(&pdev->dev, "missing AHB memory\n"); - err = PTR_ERR(aq->mem); - goto exit; + return PTR_ERR(aq->mem); } aq->mmap_size = resource_size(res); @@ -573,22 +575,21 @@ if (IS_ERR(aq->pclk)) { dev_err(&pdev->dev, "missing peripheral clock\n"); - err = PTR_ERR(aq->pclk); - goto exit; + return PTR_ERR(aq->pclk); } /* Enable the peripheral clock */ err = clk_prepare_enable(aq->pclk); if (err) { dev_err(&pdev->dev, "failed to enable the peripheral clock\n"); - goto exit; + return err; } aq->caps = of_device_get_match_data(&pdev->dev); if (!aq->caps) { dev_err(&pdev->dev, "Could not retrieve QSPI caps\n"); err = -EINVAL; - goto exit; + goto disable_pclk; } if (aq->caps->has_qspick) { @@ -632,8 +633,6 @@ clk_disable_unprepare(aq->qspick); disable_pclk: clk_disable_unprepare(aq->pclk); -exit: - spi_controller_put(ctrl); return err; } --- linux-5.8.0.orig/drivers/spi/spi-ar934x.c +++ linux-5.8.0/drivers/spi/spi-ar934x.c @@ -176,10 +176,11 @@ if (ret) return ret; - ctlr = spi_alloc_master(&pdev->dev, sizeof(*sp)); + ctlr = devm_spi_alloc_master(&pdev->dev, sizeof(*sp)); if (!ctlr) { dev_info(&pdev->dev, "failed to allocate spi controller\n"); - return -ENOMEM; + ret = -ENOMEM; + goto err_clk_disable; } /* disable flash mapping and expose spi controller registers */ @@ -202,7 +203,13 @@ sp->clk_freq = clk_get_rate(clk); sp->ctlr = ctlr; - return devm_spi_register_controller(&pdev->dev, ctlr); + ret = spi_register_controller(ctlr); + if (!ret) + return 0; + +err_clk_disable: + clk_disable_unprepare(clk); + return ret; } static int ar934x_spi_remove(struct platform_device *pdev) @@ -213,6 +220,7 @@ ctlr = dev_get_drvdata(&pdev->dev); sp = spi_controller_get_devdata(ctlr); + spi_unregister_controller(ctlr); clk_disable_unprepare(sp->clk); return 0; --- linux-5.8.0.orig/drivers/spi/spi-atmel.c +++ linux-5.8.0/drivers/spi/spi-atmel.c @@ -1592,7 +1592,7 @@ if (ret == 0) { as->use_dma = true; } else if (ret == -EPROBE_DEFER) { - return ret; + goto out_unmap_regs; } } else if (as->caps.has_pdc_support) { as->use_pdc = true; --- linux-5.8.0.orig/drivers/spi/spi-bcm-qspi.c +++ linux-5.8.0/drivers/spi/spi-bcm-qspi.c @@ -1295,7 +1295,7 @@ }, { .compatible = "brcm,spi-bcm-qspi", - .data = &bcm_qspi_rev_data, + .data = &bcm_qspi_no_rev_data, }, { .compatible = "brcm,spi-bcm7216-qspi", @@ -1334,7 +1334,7 @@ data = of_id->data; - master = spi_alloc_master(dev, sizeof(struct bcm_qspi)); + master = devm_spi_alloc_master(dev, sizeof(struct bcm_qspi)); if (!master) { dev_err(dev, "error allocating spi_master\n"); return -ENOMEM; @@ -1374,21 +1374,17 @@ if (res) { qspi->base[MSPI] = devm_ioremap_resource(dev, res); - if (IS_ERR(qspi->base[MSPI])) { - ret = PTR_ERR(qspi->base[MSPI]); - goto qspi_resource_err; - } + if (IS_ERR(qspi->base[MSPI])) + return PTR_ERR(qspi->base[MSPI]); } else { - goto qspi_resource_err; + return 0; } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "bspi"); if (res) { qspi->base[BSPI] = devm_ioremap_resource(dev, res); - if (IS_ERR(qspi->base[BSPI])) { - ret = PTR_ERR(qspi->base[BSPI]); - goto qspi_resource_err; - } + if (IS_ERR(qspi->base[BSPI])) + return PTR_ERR(qspi->base[BSPI]); qspi->bspi_mode = true; } else { qspi->bspi_mode = false; @@ -1399,18 +1395,14 @@ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cs_reg"); if (res) { qspi->base[CHIP_SELECT] = devm_ioremap_resource(dev, res); - if (IS_ERR(qspi->base[CHIP_SELECT])) { - ret = PTR_ERR(qspi->base[CHIP_SELECT]); - goto qspi_resource_err; - } + if (IS_ERR(qspi->base[CHIP_SELECT])) + return PTR_ERR(qspi->base[CHIP_SELECT]); } qspi->dev_ids = kcalloc(num_irqs, sizeof(struct bcm_qspi_dev_id), GFP_KERNEL); - if (!qspi->dev_ids) { - ret = -ENOMEM; - goto qspi_resource_err; - } + if (!qspi->dev_ids) + return -ENOMEM; for (val = 0; val < num_irqs; val++) { irq = -1; @@ -1491,7 +1483,7 @@ qspi->xfer_mode.addrlen = -1; qspi->xfer_mode.hp = -1; - ret = devm_spi_register_master(&pdev->dev, master); + ret = spi_register_master(master); if (ret < 0) { dev_err(dev, "can't register master\n"); goto qspi_reg_err; @@ -1504,8 +1496,6 @@ clk_disable_unprepare(qspi->clk); qspi_probe_err: kfree(qspi->dev_ids); -qspi_resource_err: - spi_master_put(master); return ret; } /* probe function to be called by SoC specific platform driver probe */ @@ -1515,10 +1505,10 @@ { struct bcm_qspi *qspi = platform_get_drvdata(pdev); + spi_unregister_master(qspi->master); bcm_qspi_hw_uninit(qspi); clk_disable_unprepare(qspi->clk); kfree(qspi->dev_ids); - spi_unregister_master(qspi->master); return 0; } --- linux-5.8.0.orig/drivers/spi/spi-bcm2835.c +++ linux-5.8.0/drivers/spi/spi-bcm2835.c @@ -1195,7 +1195,6 @@ struct spi_controller *ctlr = spi->controller; struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr); struct gpio_chip *chip; - enum gpio_lookup_flags lflags; u32 cs; /* @@ -1261,21 +1260,9 @@ if (!chip) return 0; - /* - * Retrieve the corresponding GPIO line used for CS. - * The inversion semantics will be handled by the GPIO core - * code, so we pass GPIOD_OUT_LOW for "unasserted" and - * the correct flag for inversion semantics. The SPI_CS_HIGH - * on spi->mode cannot be checked for polarity in this case - * as the flag use_gpio_descriptors enforces SPI_CS_HIGH. - */ - if (of_property_read_bool(spi->dev.of_node, "spi-cs-high")) - lflags = GPIO_ACTIVE_HIGH; - else - lflags = GPIO_ACTIVE_LOW; spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select, DRV_NAME, - lflags, + GPIO_LOOKUP_FLAGS_DEFAULT, GPIOD_OUT_LOW); if (IS_ERR(spi->cs_gpiod)) return PTR_ERR(spi->cs_gpiod); @@ -1293,7 +1280,7 @@ struct bcm2835_spi *bs; int err; - ctlr = spi_alloc_master(&pdev->dev, ALIGN(sizeof(*bs), + ctlr = devm_spi_alloc_master(&pdev->dev, ALIGN(sizeof(*bs), dma_get_cache_alignment())); if (!ctlr) return -ENOMEM; @@ -1313,10 +1300,8 @@ bs = spi_controller_get_devdata(ctlr); bs->regs = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(bs->regs)) { - err = PTR_ERR(bs->regs); - goto out_controller_put; - } + if (IS_ERR(bs->regs)) + return PTR_ERR(bs->regs); bs->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(bs->clk)) { @@ -1325,14 +1310,12 @@ dev_dbg(&pdev->dev, "could not get clk: %d\n", err); else dev_err(&pdev->dev, "could not get clk: %d\n", err); - goto out_controller_put; + return err; } bs->irq = platform_get_irq(pdev, 0); - if (bs->irq <= 0) { - err = bs->irq ? bs->irq : -ENODEV; - goto out_controller_put; - } + if (bs->irq <= 0) + return bs->irq ? bs->irq : -ENODEV; clk_prepare_enable(bs->clk); @@ -1366,8 +1349,6 @@ bcm2835_dma_release(ctlr, bs); out_clk_disable: clk_disable_unprepare(bs->clk); -out_controller_put: - spi_controller_put(ctlr); return err; } --- linux-5.8.0.orig/drivers/spi/spi-bcm2835aux.c +++ linux-5.8.0/drivers/spi/spi-bcm2835aux.c @@ -494,7 +494,7 @@ unsigned long clk_hz; int err; - master = spi_alloc_master(&pdev->dev, sizeof(*bs)); + master = devm_spi_alloc_master(&pdev->dev, sizeof(*bs)); if (!master) return -ENOMEM; @@ -524,29 +524,25 @@ /* the main area */ bs->regs = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(bs->regs)) { - err = PTR_ERR(bs->regs); - goto out_master_put; - } + if (IS_ERR(bs->regs)) + return PTR_ERR(bs->regs); bs->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(bs->clk)) { err = PTR_ERR(bs->clk); dev_err(&pdev->dev, "could not get clk: %d\n", err); - goto out_master_put; + return err; } bs->irq = platform_get_irq(pdev, 0); - if (bs->irq <= 0) { - err = bs->irq ? bs->irq : -ENODEV; - goto out_master_put; - } + if (bs->irq <= 0) + return bs->irq ? bs->irq : -ENODEV; /* this also enables the HW block */ err = clk_prepare_enable(bs->clk); if (err) { dev_err(&pdev->dev, "could not prepare clock: %d\n", err); - goto out_master_put; + return err; } /* just checking if the clock returns a sane value */ @@ -581,8 +577,6 @@ out_clk_disable: clk_disable_unprepare(bs->clk); -out_master_put: - spi_master_put(master); return err; } --- linux-5.8.0.orig/drivers/spi/spi-bcm63xx-hsspi.c +++ linux-5.8.0/drivers/spi/spi-bcm63xx-hsspi.c @@ -482,8 +482,10 @@ if (bs->pll_clk) { ret = clk_prepare_enable(bs->pll_clk); - if (ret) + if (ret) { + clk_disable_unprepare(bs->clk); return ret; + } } spi_master_resume(master); --- linux-5.8.0.orig/drivers/spi/spi-cadence.c +++ linux-5.8.0/drivers/spi/spi-cadence.c @@ -115,6 +115,7 @@ void __iomem *regs; struct clk *ref_clk; struct clk *pclk; + unsigned int clk_rate; u32 speed_hz; const u8 *txbuf; u8 *rxbuf; @@ -250,7 +251,7 @@ u32 ctrl_reg, baud_rate_val; unsigned long frequency; - frequency = clk_get_rate(xspi->ref_clk); + frequency = xspi->clk_rate; ctrl_reg = cdns_spi_read(xspi, CDNS_SPI_CR); @@ -558,8 +559,9 @@ master->auto_runtime_pm = true; master->mode_bits = SPI_CPOL | SPI_CPHA; + xspi->clk_rate = clk_get_rate(xspi->ref_clk); /* Set to default valid value */ - master->max_speed_hz = clk_get_rate(xspi->ref_clk) / 4; + master->max_speed_hz = xspi->clk_rate / 4; xspi->speed_hz = master->max_speed_hz; master->bits_per_word_mask = SPI_BPW_MASK(8); --- linux-5.8.0.orig/drivers/spi/spi-davinci.c +++ linux-5.8.0/drivers/spi/spi-davinci.c @@ -1040,13 +1040,13 @@ spi_bitbang_stop(&dspi->bitbang); clk_disable_unprepare(dspi->clk); - spi_master_put(master); if (dspi->dma_rx) { dma_release_channel(dspi->dma_rx); dma_release_channel(dspi->dma_tx); } + spi_master_put(master); return 0; } --- linux-5.8.0.orig/drivers/spi/spi-dw-dma.c +++ linux-5.8.0/drivers/spi/spi-dw-dma.c @@ -372,8 +372,20 @@ { u16 imr = 0, dma_ctrl = 0; + /* + * Having a Rx DMA channel serviced with higher priority than a Tx DMA + * channel might not be enough to provide a well balanced DMA-based + * SPI transfer interface. There might still be moments when the Tx DMA + * channel is occasionally handled faster than the Rx DMA channel. + * That in its turn will eventually cause the SPI Rx FIFO overflow if + * SPI bus speed is high enough to fill the SPI Rx FIFO in before it's + * cleared by the Rx DMA channel. In order to fix the problem the Tx + * DMA activity is intentionally slowed down by limiting the SPI Tx + * FIFO depth with a value twice bigger than the Tx burst length + * calculated earlier by the dw_spi_dma_maxburst_init() method. + */ dw_writel(dws, DW_SPI_DMARDLR, dws->rxburst - 1); - dw_writel(dws, DW_SPI_DMATDLR, dws->fifo_len - dws->txburst); + dw_writel(dws, DW_SPI_DMATDLR, dws->txburst); if (xfer->tx_buf) dma_ctrl |= SPI_DMA_TDMAE; --- linux-5.8.0.orig/drivers/spi/spi-dw-pci.c +++ linux-5.8.0/drivers/spi/spi-dw-pci.c @@ -127,18 +127,16 @@ if (desc->setup) { ret = desc->setup(dws); if (ret) - return ret; + goto err_free_irq_vectors; } } else { - pci_free_irq_vectors(pdev); - return -ENODEV; + ret = -ENODEV; + goto err_free_irq_vectors; } ret = dw_spi_add_host(&pdev->dev, dws); - if (ret) { - pci_free_irq_vectors(pdev); - return ret; - } + if (ret) + goto err_free_irq_vectors; /* PCI hook and SPI hook use the same drv data */ pci_set_drvdata(pdev, dws); @@ -152,6 +150,10 @@ pm_runtime_allow(&pdev->dev); return 0; + +err_free_irq_vectors: + pci_free_irq_vectors(pdev); + return ret; } static void spi_pci_remove(struct pci_dev *pdev) --- linux-5.8.0.orig/drivers/spi/spi-fsi.c +++ linux-5.8.0/drivers/spi/spi-fsi.c @@ -24,11 +24,16 @@ #define SPI_FSI_BASE 0x70000 #define SPI_FSI_INIT_TIMEOUT_MS 1000 -#define SPI_FSI_MAX_TRANSFER_SIZE 2048 +#define SPI_FSI_MAX_XFR_SIZE 2048 +#define SPI_FSI_MAX_XFR_SIZE_RESTRICTED 32 #define SPI_FSI_ERROR 0x0 #define SPI_FSI_COUNTER_CFG 0x1 #define SPI_FSI_COUNTER_CFG_LOOPS(x) (((u64)(x) & 0xffULL) << 32) +#define SPI_FSI_COUNTER_CFG_N2_RX BIT_ULL(8) +#define SPI_FSI_COUNTER_CFG_N2_TX BIT_ULL(9) +#define SPI_FSI_COUNTER_CFG_N2_IMPLICIT BIT_ULL(10) +#define SPI_FSI_COUNTER_CFG_N2_RELOAD BIT_ULL(11) #define SPI_FSI_CFG1 0x2 #define SPI_FSI_CLOCK_CFG 0x3 #define SPI_FSI_CLOCK_CFG_MM_ENABLE BIT_ULL(32) @@ -61,7 +66,7 @@ #define SPI_FSI_STATUS_RDR_OVERRUN BIT_ULL(62) #define SPI_FSI_STATUS_RDR_FULL BIT_ULL(63) #define SPI_FSI_STATUS_ANY_ERROR \ - (SPI_FSI_STATUS_ERROR | SPI_FSI_STATUS_TDR_UNDERRUN | \ + (SPI_FSI_STATUS_ERROR | \ SPI_FSI_STATUS_TDR_OVERRUN | SPI_FSI_STATUS_RDR_UNDERRUN | \ SPI_FSI_STATUS_RDR_OVERRUN) #define SPI_FSI_PORT_CTRL 0x9 @@ -70,6 +75,8 @@ struct device *dev; /* SPI controller device */ struct fsi_device *fsi; /* FSI2SPI CFAM engine device */ u32 base; + size_t max_xfr_size; + bool restricted; }; struct fsi_spi_sequence { @@ -205,8 +212,12 @@ if (rc) return rc; - return fsi_spi_write_reg(ctx, SPI_FSI_CLOCK_CFG, - SPI_FSI_CLOCK_CFG_RESET2); + rc = fsi_spi_write_reg(ctx, SPI_FSI_CLOCK_CFG, + SPI_FSI_CLOCK_CFG_RESET2); + if (rc) + return rc; + + return fsi_spi_write_reg(ctx, SPI_FSI_STATUS, 0ULL); } static int fsi_spi_sequence_add(struct fsi_spi_sequence *seq, u8 val) @@ -214,8 +225,8 @@ /* * Add the next byte of instruction to the 8-byte sequence register. * Then decrement the counter so that the next instruction will go in - * the right place. Return the number of "slots" left in the sequence - * register. + * the right place. Return the index of the slot we just filled in the + * sequence register. */ seq->data |= (u64)val << seq->bit; seq->bit -= 8; @@ -233,40 +244,71 @@ struct fsi_spi_sequence *seq, struct spi_transfer *transfer) { + bool docfg = false; int loops; int idx; int rc; + u8 val = 0; u8 len = min(transfer->len, 8U); u8 rem = transfer->len % len; + u64 cfg = 0ULL; loops = transfer->len / len; if (transfer->tx_buf) { - idx = fsi_spi_sequence_add(seq, - SPI_FSI_SEQUENCE_SHIFT_OUT(len)); + val = SPI_FSI_SEQUENCE_SHIFT_OUT(len); + idx = fsi_spi_sequence_add(seq, val); + if (rem) rem = SPI_FSI_SEQUENCE_SHIFT_OUT(rem); } else if (transfer->rx_buf) { - idx = fsi_spi_sequence_add(seq, - SPI_FSI_SEQUENCE_SHIFT_IN(len)); + val = SPI_FSI_SEQUENCE_SHIFT_IN(len); + idx = fsi_spi_sequence_add(seq, val); + if (rem) rem = SPI_FSI_SEQUENCE_SHIFT_IN(rem); } else { return -EINVAL; } + if (ctx->restricted) { + const int eidx = rem ? 5 : 6; + + while (loops > 1 && idx <= eidx) { + idx = fsi_spi_sequence_add(seq, val); + loops--; + docfg = true; + } + + if (loops > 1) { + dev_warn(ctx->dev, "No sequencer slots; aborting.\n"); + return -EINVAL; + } + } + if (loops > 1) { fsi_spi_sequence_add(seq, SPI_FSI_SEQUENCE_BRANCH(idx)); + docfg = true; + } - if (rem) - fsi_spi_sequence_add(seq, rem); + if (docfg) { + cfg = SPI_FSI_COUNTER_CFG_LOOPS(loops - 1); + if (transfer->rx_buf) + cfg |= SPI_FSI_COUNTER_CFG_N2_RX | + SPI_FSI_COUNTER_CFG_N2_TX | + SPI_FSI_COUNTER_CFG_N2_IMPLICIT | + SPI_FSI_COUNTER_CFG_N2_RELOAD; - rc = fsi_spi_write_reg(ctx, SPI_FSI_COUNTER_CFG, - SPI_FSI_COUNTER_CFG_LOOPS(loops - 1)); + rc = fsi_spi_write_reg(ctx, SPI_FSI_COUNTER_CFG, cfg); if (rc) return rc; + } else { + fsi_spi_write_reg(ctx, SPI_FSI_COUNTER_CFG, 0ULL); } + if (rem) + fsi_spi_sequence_add(seq, rem); + return 0; } @@ -275,6 +317,7 @@ { int rc = 0; u64 status = 0ULL; + u64 cfg = 0ULL; if (transfer->tx_buf) { int nb; @@ -312,6 +355,16 @@ u64 in = 0ULL; u8 *rx = transfer->rx_buf; + rc = fsi_spi_read_reg(ctx, SPI_FSI_COUNTER_CFG, &cfg); + if (rc) + return rc; + + if (cfg & SPI_FSI_COUNTER_CFG_N2_IMPLICIT) { + rc = fsi_spi_write_reg(ctx, SPI_FSI_DATA_TX, 0); + if (rc) + return rc; + } + while (transfer->len > recv) { do { rc = fsi_spi_read_reg(ctx, SPI_FSI_STATUS, @@ -350,7 +403,7 @@ u64 status = 0ULL; u64 wanted_clock_cfg = SPI_FSI_CLOCK_CFG_ECC_DISABLE | SPI_FSI_CLOCK_CFG_SCK_NO_DEL | - FIELD_PREP(SPI_FSI_CLOCK_CFG_SCK_DIV, 4); + FIELD_PREP(SPI_FSI_CLOCK_CFG_SCK_DIV, 19); end = jiffies + msecs_to_jiffies(SPI_FSI_INIT_TIMEOUT_MS); do { @@ -407,7 +460,7 @@ /* Sequencer must do shift out (tx) first. */ if (!transfer->tx_buf || - transfer->len > SPI_FSI_MAX_TRANSFER_SIZE) { + transfer->len > (ctx->max_xfr_size + 8)) { rc = -EINVAL; goto error; } @@ -431,7 +484,7 @@ /* Sequencer can only do shift in (rx) after tx. */ if (next->rx_buf) { - if (next->len > SPI_FSI_MAX_TRANSFER_SIZE) { + if (next->len > ctx->max_xfr_size) { rc = -EINVAL; goto error; } @@ -476,7 +529,9 @@ static size_t fsi_spi_max_transfer_size(struct spi_device *spi) { - return SPI_FSI_MAX_TRANSFER_SIZE; + struct fsi_spi *ctx = spi_controller_get_devdata(spi->controller); + + return ctx->max_xfr_size; } static int fsi_spi_probe(struct device *dev) @@ -524,6 +579,14 @@ ctx->fsi = fsi; ctx->base = base + SPI_FSI_BASE; + if (of_device_is_compatible(np, "ibm,fsi2spi-restricted")) { + ctx->restricted = true; + ctx->max_xfr_size = SPI_FSI_MAX_XFR_SIZE_RESTRICTED; + } else { + ctx->restricted = false; + ctx->max_xfr_size = SPI_FSI_MAX_XFR_SIZE; + } + rc = devm_spi_register_controller(dev, ctlr); if (rc) spi_controller_put(ctlr); --- linux-5.8.0.orig/drivers/spi/spi-fsl-dspi.c +++ linux-5.8.0/drivers/spi/spi-fsl-dspi.c @@ -174,17 +174,17 @@ .fifo_size = 16, }, [LS2080A] = { - .trans_mode = DSPI_DMA_MODE, + .trans_mode = DSPI_XSPI_MODE, .max_clock_factor = 8, .fifo_size = 4, }, [LS2085A] = { - .trans_mode = DSPI_DMA_MODE, + .trans_mode = DSPI_XSPI_MODE, .max_clock_factor = 8, .fifo_size = 4, }, [LX2160A] = { - .trans_mode = DSPI_DMA_MODE, + .trans_mode = DSPI_XSPI_MODE, .max_clock_factor = 8, .fifo_size = 4, }, @@ -1106,12 +1106,11 @@ #ifdef CONFIG_PM_SLEEP static int dspi_suspend(struct device *dev) { - struct spi_controller *ctlr = dev_get_drvdata(dev); - struct fsl_dspi *dspi = spi_controller_get_devdata(ctlr); + struct fsl_dspi *dspi = dev_get_drvdata(dev); if (dspi->irq) disable_irq(dspi->irq); - spi_controller_suspend(ctlr); + spi_controller_suspend(dspi->ctlr); clk_disable_unprepare(dspi->clk); pinctrl_pm_select_sleep_state(dev); @@ -1121,8 +1120,7 @@ static int dspi_resume(struct device *dev) { - struct spi_controller *ctlr = dev_get_drvdata(dev); - struct fsl_dspi *dspi = spi_controller_get_devdata(ctlr); + struct fsl_dspi *dspi = dev_get_drvdata(dev); int ret; pinctrl_pm_select_default_state(dev); @@ -1130,7 +1128,7 @@ ret = clk_prepare_enable(dspi->clk); if (ret) return ret; - spi_controller_resume(ctlr); + spi_controller_resume(dspi->ctlr); if (dspi->irq) enable_irq(dspi->irq); @@ -1193,7 +1191,7 @@ unsigned int mcr; /* Set idle states for all chip select signals to high */ - mcr = SPI_MCR_PCSIS(GENMASK(dspi->ctlr->num_chipselect - 1, 0)); + mcr = SPI_MCR_PCSIS(GENMASK(dspi->ctlr->max_native_cs - 1, 0)); if (dspi->devtype_data->trans_mode == DSPI_XSPI_MODE) mcr |= SPI_MCR_XSPI; @@ -1292,7 +1290,7 @@ pdata = dev_get_platdata(&pdev->dev); if (pdata) { - ctlr->num_chipselect = pdata->cs_num; + ctlr->num_chipselect = ctlr->max_native_cs = pdata->cs_num; ctlr->bus_num = pdata->bus_num; /* Only Coldfire uses platform data */ @@ -1305,7 +1303,7 @@ dev_err(&pdev->dev, "can't get spi-num-chipselects\n"); goto out_ctlr_put; } - ctlr->num_chipselect = cs_num; + ctlr->num_chipselect = ctlr->max_native_cs = cs_num; of_property_read_u32(np, "bus-num", &bus_num); ctlr->bus_num = bus_num; --- linux-5.8.0.orig/drivers/spi/spi-fsl-espi.c +++ linux-5.8.0/drivers/spi/spi-fsl-espi.c @@ -564,13 +564,14 @@ static irqreturn_t fsl_espi_irq(s32 irq, void *context_data) { struct fsl_espi *espi = context_data; - u32 events; + u32 events, mask; spin_lock(&espi->lock); /* Get interrupt events(tx/rx) */ events = fsl_espi_read_reg(espi, ESPI_SPIE); - if (!events) { + mask = fsl_espi_read_reg(espi, ESPI_SPIM); + if (!(events & mask)) { spin_unlock(&espi->lock); return IRQ_NONE; } --- linux-5.8.0.orig/drivers/spi/spi-fsl-lpspi.c +++ linux-5.8.0/drivers/spi/spi-fsl-lpspi.c @@ -971,9 +971,6 @@ spi_controller_get_devdata(controller); pm_runtime_disable(fsl_lpspi->dev); - - spi_master_put(controller); - return 0; } --- linux-5.8.0.orig/drivers/spi/spi-fsl-spi.c +++ linux-5.8.0/drivers/spi/spi-fsl-spi.c @@ -115,14 +115,13 @@ { struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master); struct fsl_spi_platform_data *pdata; - bool pol = spi->mode & SPI_CS_HIGH; struct spi_mpc8xxx_cs *cs = spi->controller_state; pdata = spi->dev.parent->parent->platform_data; if (value == BITBANG_CS_INACTIVE) { if (pdata->cs_control) - pdata->cs_control(spi, !pol); + pdata->cs_control(spi, false); } if (value == BITBANG_CS_ACTIVE) { @@ -134,7 +133,7 @@ fsl_spi_change_mode(spi); if (pdata->cs_control) - pdata->cs_control(spi, pol); + pdata->cs_control(spi, true); } } @@ -696,7 +695,7 @@ if (WARN_ON_ONCE(!pinfo->immr_spi_cs)) return; - iowrite32be(on ? SPI_BOOT_SEL_BIT : 0, pinfo->immr_spi_cs); + iowrite32be(on ? 0 : SPI_BOOT_SEL_BIT, pinfo->immr_spi_cs); } } @@ -716,10 +715,11 @@ type = fsl_spi_get_type(&ofdev->dev); if (type == TYPE_FSL) { struct fsl_spi_platform_data *pdata = dev_get_platdata(dev); + bool spisel_boot = false; #if IS_ENABLED(CONFIG_FSL_SOC) struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(pdata); - bool spisel_boot = of_property_read_bool(np, "fsl,spisel_boot"); + spisel_boot = of_property_read_bool(np, "fsl,spisel_boot"); if (spisel_boot) { pinfo->immr_spi_cs = ioremap(get_immrbase() + IMMR_SPI_CS_OFFSET, 4); if (!pinfo->immr_spi_cs) @@ -734,10 +734,14 @@ * supported on the GRLIB variant. */ ret = gpiod_count(dev, "cs"); - if (ret <= 0) + if (ret < 0) + ret = 0; + if (ret == 0 && !spisel_boot) { pdata->max_chipselect = 1; - else + } else { + pdata->max_chipselect = ret + spisel_boot; pdata->cs_control = fsl_spi_cs_control; + } } ret = of_address_to_resource(np, 0, &mem); --- linux-5.8.0.orig/drivers/spi/spi-geni-qcom.c +++ linux-5.8.0/drivers/spi/spi-geni-qcom.c @@ -414,6 +414,12 @@ unsigned int bytes_per_fifo_word = geni_byte_per_fifo_word(mas); unsigned int i = 0; + /* Stop the watermark IRQ if nothing to send */ + if (!mas->cur_xfer) { + writel(0, se->base + SE_GENI_TX_WATERMARK_REG); + return; + } + max_bytes = (mas->tx_fifo_depth - mas->tx_wm) * bytes_per_fifo_word; if (mas->tx_rem_bytes < max_bytes) max_bytes = mas->tx_rem_bytes; @@ -453,6 +459,14 @@ if (rx_last_byte_valid && rx_last_byte_valid < 4) rx_bytes -= bytes_per_fifo_word - rx_last_byte_valid; } + + /* Clear out the FIFO and bail if nowhere to put it */ + if (!mas->cur_xfer) { + for (i = 0; i < DIV_ROUND_UP(rx_bytes, bytes_per_fifo_word); i++) + readl(se->base + SE_GENI_RX_FIFOn); + return; + } + if (mas->rx_rem_bytes < rx_bytes) rx_bytes = mas->rx_rem_bytes; @@ -549,7 +563,7 @@ if (IS_ERR(clk)) return PTR_ERR(clk); - spi = spi_alloc_master(dev, sizeof(*mas)); + spi = devm_spi_alloc_master(dev, sizeof(*mas)); if (!spi) return -ENOMEM; @@ -595,7 +609,6 @@ free_irq(mas->irq, spi); spi_geni_probe_runtime_disable: pm_runtime_disable(dev); - spi_master_put(spi); return ret; } --- linux-5.8.0.orig/drivers/spi/spi-gpio.c +++ linux-5.8.0/drivers/spi/spi-gpio.c @@ -350,11 +350,6 @@ return 0; } -static void spi_gpio_put(void *data) -{ - spi_master_put(data); -} - static int spi_gpio_probe(struct platform_device *pdev) { int status; @@ -363,16 +358,10 @@ struct device *dev = &pdev->dev; struct spi_bitbang *bb; - master = spi_alloc_master(dev, sizeof(*spi_gpio)); + master = devm_spi_alloc_master(dev, sizeof(*spi_gpio)); if (!master) return -ENOMEM; - status = devm_add_action_or_reset(&pdev->dev, spi_gpio_put, master); - if (status) { - spi_master_put(master); - return status; - } - if (pdev->dev.of_node) status = spi_gpio_probe_dt(pdev, master); else @@ -432,7 +421,7 @@ if (status) return status; - return devm_spi_register_master(&pdev->dev, spi_master_get(master)); + return devm_spi_register_master(&pdev->dev, master); } MODULE_ALIAS("platform:" DRIVER_NAME); --- linux-5.8.0.orig/drivers/spi/spi-img-spfi.c +++ linux-5.8.0/drivers/spi/spi-img-spfi.c @@ -785,8 +785,10 @@ int ret; ret = pm_runtime_get_sync(dev); - if (ret) + if (ret) { + pm_runtime_put_noidle(dev); return ret; + } spfi_reset(spfi); pm_runtime_put(dev); --- linux-5.8.0.orig/drivers/spi/spi-lantiq-ssc.c +++ linux-5.8.0/drivers/spi/spi-lantiq-ssc.c @@ -184,6 +184,7 @@ unsigned int tx_fifo_size; unsigned int rx_fifo_size; unsigned int base_cs; + unsigned int fdx_tx_level; }; static u32 lantiq_ssc_readl(const struct lantiq_ssc_spi *spi, u32 reg) @@ -481,6 +482,7 @@ u32 data; unsigned int tx_free = tx_fifo_free(spi); + spi->fdx_tx_level = 0; while (spi->tx_todo && tx_free) { switch (spi->bits_per_word) { case 2 ... 8: @@ -509,6 +511,7 @@ lantiq_ssc_writel(spi, data, LTQ_SPI_TB); tx_free--; + spi->fdx_tx_level++; } } @@ -520,6 +523,13 @@ u32 data; unsigned int rx_fill = rx_fifo_level(spi); + /* + * Wait until all expected data to be shifted in. + * Otherwise, rx overrun may occur. + */ + while (rx_fill != spi->fdx_tx_level) + rx_fill = rx_fifo_level(spi); + while (rx_fill) { data = lantiq_ssc_readl(spi, LTQ_SPI_RB); @@ -899,7 +909,7 @@ master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 8) | SPI_BPW_MASK(16) | SPI_BPW_MASK(32); - spi->wq = alloc_ordered_workqueue(dev_name(dev), 0); + spi->wq = alloc_ordered_workqueue(dev_name(dev), WQ_MEM_RECLAIM); if (!spi->wq) { err = -ENOMEM; goto err_clk_put; --- linux-5.8.0.orig/drivers/spi/spi-loopback-test.c +++ linux-5.8.0/drivers/spi/spi-loopback-test.c @@ -90,7 +90,7 @@ { .description = "tx/rx-transfer - crossing PAGE_SIZE", .fill_option = FILL_COUNT_8, - .iterate_len = { ITERATE_MAX_LEN }, + .iterate_len = { ITERATE_LEN }, .iterate_tx_align = ITERATE_ALIGN, .iterate_rx_align = ITERATE_ALIGN, .transfer_count = 1, --- linux-5.8.0.orig/drivers/spi/spi-mem.c +++ linux-5.8.0/drivers/spi/spi-mem.c @@ -237,6 +237,7 @@ ret = pm_runtime_get_sync(ctlr->dev.parent); if (ret < 0) { + pm_runtime_put_noidle(ctlr->dev.parent); dev_err(&ctlr->dev, "Failed to power device: %d\n", ret); return ret; --- linux-5.8.0.orig/drivers/spi/spi-mt7621.c +++ linux-5.8.0/drivers/spi/spi-mt7621.c @@ -350,9 +350,10 @@ if (status) return status; - master = spi_alloc_master(&pdev->dev, sizeof(*rs)); + master = devm_spi_alloc_master(&pdev->dev, sizeof(*rs)); if (!master) { dev_info(&pdev->dev, "master allocation failed\n"); + clk_disable_unprepare(clk); return -ENOMEM; } @@ -377,10 +378,15 @@ ret = device_reset(&pdev->dev); if (ret) { dev_err(&pdev->dev, "SPI reset failed!\n"); + clk_disable_unprepare(clk); return ret; } - return devm_spi_register_controller(&pdev->dev, master); + ret = spi_register_controller(master); + if (ret) + clk_disable_unprepare(clk); + + return ret; } static int mt7621_spi_remove(struct platform_device *pdev) @@ -391,6 +397,7 @@ master = dev_get_drvdata(&pdev->dev); rs = spi_controller_get_devdata(master); + spi_unregister_controller(master); clk_disable_unprepare(rs->clk); return 0; --- linux-5.8.0.orig/drivers/spi/spi-mtk-nor.c +++ linux-5.8.0/drivers/spi/spi-mtk-nor.c @@ -89,7 +89,7 @@ // Buffered page program can do one 128-byte transfer #define MTK_NOR_PP_SIZE 128 -#define CLK_TO_US(sp, clkcnt) ((clkcnt) * 1000000 / sp->spi_freq) +#define CLK_TO_US(sp, clkcnt) DIV_ROUND_UP(clkcnt, sp->spi_freq / 1000000) struct mtk_nor { struct spi_controller *ctlr; @@ -177,6 +177,10 @@ if ((op->addr.nbytes == 3) || (op->addr.nbytes == 4)) { if ((op->data.dir == SPI_MEM_DATA_IN) && mtk_nor_match_read(op)) { + // limit size to prevent timeout calculation overflow + if (op->data.nbytes > 0x400000) + op->data.nbytes = 0x400000; + if ((op->addr.val & MTK_NOR_DMA_ALIGN_MASK) || (op->data.nbytes < MTK_NOR_DMA_ALIGN)) op->data.nbytes = 1; @@ -605,7 +609,7 @@ buffer = (u8 *)(((ulong)buffer + MTK_NOR_DMA_ALIGN) & ~MTK_NOR_DMA_ALIGN_MASK); - ctlr = spi_alloc_master(&pdev->dev, sizeof(*sp)); + ctlr = devm_spi_alloc_master(&pdev->dev, sizeof(*sp)); if (!ctlr) { dev_err(&pdev->dev, "failed to allocate spi controller\n"); return -ENOMEM; --- linux-5.8.0.orig/drivers/spi/spi-mxic.c +++ linux-5.8.0/drivers/spi/spi-mxic.c @@ -528,7 +528,7 @@ struct mxic_spi *mxic; int ret; - master = spi_alloc_master(&pdev->dev, sizeof(struct mxic_spi)); + master = devm_spi_alloc_master(&pdev->dev, sizeof(struct mxic_spi)); if (!master) return -ENOMEM; @@ -573,15 +573,9 @@ ret = spi_register_master(master); if (ret) { dev_err(&pdev->dev, "spi_register_master failed\n"); - goto err_put_master; + pm_runtime_disable(&pdev->dev); } - return 0; - -err_put_master: - spi_master_put(master); - pm_runtime_disable(&pdev->dev); - return ret; } --- linux-5.8.0.orig/drivers/spi/spi-mxs.c +++ linux-5.8.0/drivers/spi/spi-mxs.c @@ -607,6 +607,7 @@ ret = pm_runtime_get_sync(ssp->dev); if (ret < 0) { + pm_runtime_put_noidle(ssp->dev); dev_err(ssp->dev, "runtime_get_sync failed\n"); goto out_pm_runtime_disable; } --- linux-5.8.0.orig/drivers/spi/spi-npcm-fiu.c +++ linux-5.8.0/drivers/spi/spi-npcm-fiu.c @@ -677,10 +677,9 @@ struct npcm_fiu_spi *fiu; void __iomem *regbase; struct resource *res; - int ret; - int id; + int id, ret; - ctrl = spi_alloc_master(dev, sizeof(*fiu)); + ctrl = devm_spi_alloc_master(dev, sizeof(*fiu)); if (!ctrl) return -ENOMEM; @@ -738,9 +737,9 @@ ret = devm_spi_register_master(dev, ctrl); if (ret) - return ret; + clk_disable_unprepare(fiu->clk); - return 0; + return ret; } static int npcm_fiu_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/spi/spi-nxp-fspi.c +++ linux-5.8.0/drivers/spi/spi-nxp-fspi.c @@ -991,6 +991,7 @@ struct resource *res; struct nxp_fspi *f; int ret; + u32 reg; ctlr = spi_alloc_master(&pdev->dev, sizeof(*f)); if (!ctlr) @@ -1017,6 +1018,12 @@ goto err_put_ctrl; } + /* Clear potential interrupts */ + reg = fspi_readl(f, f->iobase + FSPI_INTR); + if (reg) + fspi_writel(f, reg, f->iobase + FSPI_INTR); + + /* find the resources - controller memory mapped space */ res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fspi_mmap"); if (!res) { --- linux-5.8.0.orig/drivers/spi/spi-omap2-mcspi.c +++ linux-5.8.0/drivers/spi/spi-omap2-mcspi.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -349,9 +348,19 @@ static int mcspi_wait_for_reg_bit(void __iomem *reg, unsigned long bit) { - u32 val; + unsigned long timeout; - return readl_poll_timeout(reg, val, val & bit, 1, MSEC_PER_SEC); + timeout = jiffies + msecs_to_jiffies(1000); + while (!(readl_relaxed(reg) & bit)) { + if (time_after(jiffies, timeout)) { + if (!(readl_relaxed(reg) & bit)) + return -ETIMEDOUT; + else + return 0; + } + cpu_relax(); + } + return 0; } static int mcspi_wait_for_completion(struct omap2_mcspi *mcspi, --- linux-5.8.0.orig/drivers/spi/spi-pic32.c +++ linux-5.8.0/drivers/spi/spi-pic32.c @@ -839,6 +839,7 @@ return 0; err_bailout: + pic32_spi_dma_unprep(pic32s); clk_disable_unprepare(pic32s->clk); err_master: spi_master_put(master); --- linux-5.8.0.orig/drivers/spi/spi-pxa2xx-pci.c +++ linux-5.8.0/drivers/spi/spi-pxa2xx-pci.c @@ -21,7 +21,8 @@ PORT_BSW1, PORT_BSW2, PORT_CE4100, - PORT_LPT, + PORT_LPT0, + PORT_LPT1, }; struct pxa_spi_info { @@ -57,8 +58,10 @@ static struct dw_dma_slave bsw2_tx_param = { .dst_id = 8 }; static struct dw_dma_slave bsw2_rx_param = { .src_id = 9 }; -static struct dw_dma_slave lpt_tx_param = { .dst_id = 0 }; -static struct dw_dma_slave lpt_rx_param = { .src_id = 1 }; +static struct dw_dma_slave lpt1_tx_param = { .dst_id = 0 }; +static struct dw_dma_slave lpt1_rx_param = { .src_id = 1 }; +static struct dw_dma_slave lpt0_tx_param = { .dst_id = 2 }; +static struct dw_dma_slave lpt0_rx_param = { .src_id = 3 }; static bool lpss_dma_filter(struct dma_chan *chan, void *param) { @@ -185,12 +188,19 @@ .num_chipselect = 1, .max_clk_rate = 50000000, }, - [PORT_LPT] = { + [PORT_LPT0] = { .type = LPSS_LPT_SSP, .port_id = 0, .setup = lpss_spi_setup, - .tx_param = &lpt_tx_param, - .rx_param = &lpt_rx_param, + .tx_param = &lpt0_tx_param, + .rx_param = &lpt0_rx_param, + }, + [PORT_LPT1] = { + .type = LPSS_LPT_SSP, + .port_id = 1, + .setup = lpss_spi_setup, + .tx_param = &lpt1_tx_param, + .rx_param = &lpt1_rx_param, }, }; @@ -285,8 +295,9 @@ { PCI_VDEVICE(INTEL, 0x2290), PORT_BSW1 }, { PCI_VDEVICE(INTEL, 0x22ac), PORT_BSW2 }, { PCI_VDEVICE(INTEL, 0x2e6a), PORT_CE4100 }, - { PCI_VDEVICE(INTEL, 0x9ce6), PORT_LPT }, - { }, + { PCI_VDEVICE(INTEL, 0x9ce5), PORT_LPT0 }, + { PCI_VDEVICE(INTEL, 0x9ce6), PORT_LPT1 }, + { } }; MODULE_DEVICE_TABLE(pci, pxa2xx_spi_pci_devices); --- linux-5.8.0.orig/drivers/spi/spi-pxa2xx.c +++ linux-5.8.0/drivers/spi/spi-pxa2xx.c @@ -1684,9 +1684,9 @@ } if (platform_info->is_slave) - controller = spi_alloc_slave(dev, sizeof(struct driver_data)); + controller = devm_spi_alloc_slave(dev, sizeof(*drv_data)); else - controller = spi_alloc_master(dev, sizeof(struct driver_data)); + controller = devm_spi_alloc_master(dev, sizeof(*drv_data)); if (!controller) { dev_err(&pdev->dev, "cannot alloc spi_controller\n"); @@ -1909,7 +1909,6 @@ free_irq(ssp->irq, drv_data); out_error_controller_alloc: - spi_controller_put(controller); pxa_ssp_free(ssp); return status; } --- linux-5.8.0.orig/drivers/spi/spi-qcom-qspi.c +++ linux-5.8.0/drivers/spi/spi-qcom-qspi.c @@ -429,7 +429,7 @@ dev = &pdev->dev; - master = spi_alloc_master(dev, sizeof(*ctrl)); + master = devm_spi_alloc_master(dev, sizeof(*ctrl)); if (!master) return -ENOMEM; @@ -440,32 +440,28 @@ spin_lock_init(&ctrl->lock); ctrl->dev = dev; ctrl->base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(ctrl->base)) { - ret = PTR_ERR(ctrl->base); - goto exit_probe_master_put; - } + if (IS_ERR(ctrl->base)) + return PTR_ERR(ctrl->base); ctrl->clks = devm_kcalloc(dev, QSPI_NUM_CLKS, sizeof(*ctrl->clks), GFP_KERNEL); - if (!ctrl->clks) { - ret = -ENOMEM; - goto exit_probe_master_put; - } + if (!ctrl->clks) + return -ENOMEM; ctrl->clks[QSPI_CLK_CORE].id = "core"; ctrl->clks[QSPI_CLK_IFACE].id = "iface"; ret = devm_clk_bulk_get(dev, QSPI_NUM_CLKS, ctrl->clks); if (ret) - goto exit_probe_master_put; + return ret; ret = platform_get_irq(pdev, 0); if (ret < 0) - goto exit_probe_master_put; + return ret; ret = devm_request_irq(dev, ret, qcom_qspi_irq, IRQF_TRIGGER_HIGH, dev_name(dev), ctrl); if (ret) { dev_err(dev, "Failed to request irq %d\n", ret); - goto exit_probe_master_put; + return ret; } master->max_speed_hz = 300000000; @@ -489,9 +485,6 @@ pm_runtime_disable(dev); -exit_probe_master_put: - spi_master_put(master); - return ret; } --- linux-5.8.0.orig/drivers/spi/spi-rb4xx.c +++ linux-5.8.0/drivers/spi/spi-rb4xx.c @@ -143,7 +143,7 @@ if (IS_ERR(spi_base)) return PTR_ERR(spi_base); - master = spi_alloc_master(&pdev->dev, sizeof(*rbspi)); + master = devm_spi_alloc_master(&pdev->dev, sizeof(*rbspi)); if (!master) return -ENOMEM; --- linux-5.8.0.orig/drivers/spi/spi-rockchip.c +++ linux-5.8.0/drivers/spi/spi-rockchip.c @@ -288,7 +288,7 @@ static void rockchip_spi_pio_reader(struct rockchip_spi *rs) { u32 words = readl_relaxed(rs->regs + ROCKCHIP_SPI_RXFLR); - u32 rx_left = rs->rx_left - words; + u32 rx_left = (rs->rx_left > words) ? rs->rx_left - words : 0; /* the hardware doesn't allow us to change fifo threshold * level while spi is enabled, so instead make sure to leave --- linux-5.8.0.orig/drivers/spi/spi-s3c24xx-fiq.S +++ linux-5.8.0/drivers/spi/spi-s3c24xx-fiq.S @@ -33,7 +33,6 @@ @ and an offset to the irq acknowledgment word ENTRY(s3c24xx_spi_fiq_rx) -s3c24xx_spi_fix_rx: .word fiq_rx_end - fiq_rx_start .word fiq_rx_irq_ack - fiq_rx_start fiq_rx_start: @@ -47,7 +46,7 @@ strb fiq_rtmp, [ fiq_rspi, # S3C2410_SPTDAT ] subs fiq_rcount, fiq_rcount, #1 - subnes pc, lr, #4 @@ return, still have work to do + subsne pc, lr, #4 @@ return, still have work to do @@ set IRQ controller so that next op will trigger IRQ mov fiq_rtmp, #0 @@ -59,7 +58,6 @@ fiq_rx_end: ENTRY(s3c24xx_spi_fiq_txrx) -s3c24xx_spi_fiq_txrx: .word fiq_txrx_end - fiq_txrx_start .word fiq_txrx_irq_ack - fiq_txrx_start fiq_txrx_start: @@ -74,7 +72,7 @@ strb fiq_rtmp, [ fiq_rspi, # S3C2410_SPTDAT ] subs fiq_rcount, fiq_rcount, #1 - subnes pc, lr, #4 @@ return, still have work to do + subsne pc, lr, #4 @@ return, still have work to do mov fiq_rtmp, #0 str fiq_rtmp, [ fiq_rirq, # S3C2410_INTMOD - S3C24XX_VA_IRQ ] @@ -86,7 +84,6 @@ fiq_txrx_end: ENTRY(s3c24xx_spi_fiq_tx) -s3c24xx_spi_fix_tx: .word fiq_tx_end - fiq_tx_start .word fiq_tx_irq_ack - fiq_tx_start fiq_tx_start: @@ -99,7 +96,7 @@ strb fiq_rtmp, [ fiq_rspi, # S3C2410_SPTDAT ] subs fiq_rcount, fiq_rcount, #1 - subnes pc, lr, #4 @@ return, still have work to do + subsne pc, lr, #4 @@ return, still have work to do mov fiq_rtmp, #0 str fiq_rtmp, [ fiq_rirq, # S3C2410_INTMOD - S3C24XX_VA_IRQ ] --- linux-5.8.0.orig/drivers/spi/spi-s3c64xx.c +++ linux-5.8.0/drivers/spi/spi-s3c64xx.c @@ -122,6 +122,7 @@ struct s3c64xx_spi_dma_data { struct dma_chan *ch; + dma_cookie_t cookie; enum dma_transfer_direction direction; }; @@ -264,12 +265,13 @@ spin_unlock_irqrestore(&sdd->lock, flags); } -static void prepare_dma(struct s3c64xx_spi_dma_data *dma, +static int prepare_dma(struct s3c64xx_spi_dma_data *dma, struct sg_table *sgt) { struct s3c64xx_spi_driver_data *sdd; struct dma_slave_config config; struct dma_async_tx_descriptor *desc; + int ret; memset(&config, 0, sizeof(config)); @@ -293,12 +295,24 @@ desc = dmaengine_prep_slave_sg(dma->ch, sgt->sgl, sgt->nents, dma->direction, DMA_PREP_INTERRUPT); + if (!desc) { + dev_err(&sdd->pdev->dev, "unable to prepare %s scatterlist", + dma->direction == DMA_DEV_TO_MEM ? "rx" : "tx"); + return -ENOMEM; + } desc->callback = s3c64xx_spi_dmacb; desc->callback_param = dma; - dmaengine_submit(desc); + dma->cookie = dmaengine_submit(desc); + ret = dma_submit_error(dma->cookie); + if (ret) { + dev_err(&sdd->pdev->dev, "DMA submission failed"); + return -EIO; + } + dma_async_issue_pending(dma->ch); + return 0; } static void s3c64xx_spi_set_cs(struct spi_device *spi, bool enable) @@ -348,11 +362,12 @@ return xfer->len > (FIFO_LVL_MASK(sdd) >> 1) + 1; } -static void s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd, +static int s3c64xx_enable_datapath(struct s3c64xx_spi_driver_data *sdd, struct spi_transfer *xfer, int dma_mode) { void __iomem *regs = sdd->regs; u32 modecfg, chcfg; + int ret = 0; modecfg = readl(regs + S3C64XX_SPI_MODE_CFG); modecfg &= ~(S3C64XX_SPI_MODE_TXDMA_ON | S3C64XX_SPI_MODE_RXDMA_ON); @@ -378,7 +393,7 @@ chcfg |= S3C64XX_SPI_CH_TXCH_ON; if (dma_mode) { modecfg |= S3C64XX_SPI_MODE_TXDMA_ON; - prepare_dma(&sdd->tx_dma, &xfer->tx_sg); + ret = prepare_dma(&sdd->tx_dma, &xfer->tx_sg); } else { switch (sdd->cur_bpw) { case 32: @@ -410,12 +425,17 @@ writel(((xfer->len * 8 / sdd->cur_bpw) & 0xffff) | S3C64XX_SPI_PACKET_CNT_EN, regs + S3C64XX_SPI_PACKET_CNT); - prepare_dma(&sdd->rx_dma, &xfer->rx_sg); + ret = prepare_dma(&sdd->rx_dma, &xfer->rx_sg); } } + if (ret) + return ret; + writel(modecfg, regs + S3C64XX_SPI_MODE_CFG); writel(chcfg, regs + S3C64XX_SPI_CH_CFG); + + return 0; } static u32 s3c64xx_spi_wait_for_timeout(struct s3c64xx_spi_driver_data *sdd, @@ -548,9 +568,10 @@ return 0; } -static void s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd) +static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd) { void __iomem *regs = sdd->regs; + int ret; u32 val; /* Disable Clock */ @@ -598,7 +619,9 @@ if (sdd->port_conf->clk_from_cmu) { /* The src_clk clock is divided internally by 2 */ - clk_set_rate(sdd->src_clk, sdd->cur_speed * 2); + ret = clk_set_rate(sdd->src_clk, sdd->cur_speed * 2); + if (ret) + return ret; } else { /* Configure Clock */ val = readl(regs + S3C64XX_SPI_CLK_CFG); @@ -612,6 +635,8 @@ val |= S3C64XX_SPI_ENCLK_ENABLE; writel(val, regs + S3C64XX_SPI_CLK_CFG); } + + return 0; } #define XFER_DMAADDR_INVALID DMA_BIT_MASK(32) @@ -654,7 +679,9 @@ sdd->cur_bpw = bpw; sdd->cur_speed = speed; sdd->cur_mode = spi->mode; - s3c64xx_spi_config(sdd); + status = s3c64xx_spi_config(sdd); + if (status) + return status; } if (!is_polling(sdd) && (xfer->len > fifo_len) && @@ -678,13 +705,18 @@ sdd->state &= ~RXBUSY; sdd->state &= ~TXBUSY; - s3c64xx_enable_datapath(sdd, xfer, use_dma); - /* Start the signals */ s3c64xx_spi_set_cs(spi, true); + status = s3c64xx_enable_datapath(sdd, xfer, use_dma); + spin_unlock_irqrestore(&sdd->lock, flags); + if (status) { + dev_err(&spi->dev, "failed to enable data path for transfer: %d\n", status); + break; + } + if (use_dma) status = s3c64xx_wait_for_dma(sdd, xfer); else --- linux-5.8.0.orig/drivers/spi/spi-sc18is602.c +++ linux-5.8.0/drivers/spi/spi-sc18is602.c @@ -238,13 +238,12 @@ struct sc18is602_platform_data *pdata = dev_get_platdata(dev); struct sc18is602 *hw; struct spi_master *master; - int error; if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C | I2C_FUNC_SMBUS_WRITE_BYTE_DATA)) return -EINVAL; - master = spi_alloc_master(dev, sizeof(struct sc18is602)); + master = devm_spi_alloc_master(dev, sizeof(struct sc18is602)); if (!master) return -ENOMEM; @@ -298,15 +297,7 @@ master->min_speed_hz = hw->freq / 128; master->max_speed_hz = hw->freq / 4; - error = devm_spi_register_master(dev, master); - if (error) - goto error_reg; - - return 0; - -error_reg: - spi_master_put(master); - return error; + return devm_spi_register_master(dev, master); } static const struct i2c_device_id sc18is602_id[] = { --- linux-5.8.0.orig/drivers/spi/spi-sh.c +++ linux-5.8.0/drivers/spi/spi-sh.c @@ -440,7 +440,7 @@ if (irq < 0) return irq; - master = spi_alloc_master(&pdev->dev, sizeof(struct spi_sh_data)); + master = devm_spi_alloc_master(&pdev->dev, sizeof(struct spi_sh_data)); if (master == NULL) { dev_err(&pdev->dev, "spi_alloc_master error.\n"); return -ENOMEM; @@ -458,16 +458,14 @@ break; default: dev_err(&pdev->dev, "No support width\n"); - ret = -ENODEV; - goto error1; + return -ENODEV; } ss->irq = irq; ss->master = master; ss->addr = devm_ioremap(&pdev->dev, res->start, resource_size(res)); if (ss->addr == NULL) { dev_err(&pdev->dev, "ioremap error.\n"); - ret = -ENOMEM; - goto error1; + return -ENOMEM; } INIT_LIST_HEAD(&ss->queue); spin_lock_init(&ss->lock); @@ -477,7 +475,7 @@ ret = request_irq(irq, spi_sh_irq, 0, "spi_sh", ss); if (ret < 0) { dev_err(&pdev->dev, "request_irq error\n"); - goto error1; + return ret; } master->num_chipselect = 2; @@ -496,9 +494,6 @@ error3: free_irq(irq, ss); - error1: - spi_master_put(master); - return ret; } --- linux-5.8.0.orig/drivers/spi/spi-sprd.c +++ linux-5.8.0/drivers/spi/spi-sprd.c @@ -563,11 +563,11 @@ ss->dma.dma_chan[SPRD_SPI_TX] = dma_request_chan(ss->dev, "tx_chn"); if (IS_ERR_OR_NULL(ss->dma.dma_chan[SPRD_SPI_TX])) { + dma_release_channel(ss->dma.dma_chan[SPRD_SPI_RX]); if (PTR_ERR(ss->dma.dma_chan[SPRD_SPI_TX]) == -EPROBE_DEFER) return PTR_ERR(ss->dma.dma_chan[SPRD_SPI_TX]); dev_err(ss->dev, "request TX DMA channel failed!\n"); - dma_release_channel(ss->dma.dma_chan[SPRD_SPI_RX]); return PTR_ERR(ss->dma.dma_chan[SPRD_SPI_TX]); } @@ -1017,6 +1017,7 @@ ret = pm_runtime_get_sync(ss->dev); if (ret < 0) { + pm_runtime_put_noidle(ss->dev); dev_err(ss->dev, "failed to resume SPI controller\n"); return ret; } --- linux-5.8.0.orig/drivers/spi/spi-st-ssc4.c +++ linux-5.8.0/drivers/spi/spi-st-ssc4.c @@ -375,13 +375,14 @@ ret = devm_spi_register_master(&pdev->dev, master); if (ret) { dev_err(&pdev->dev, "Failed to register master\n"); - goto clk_disable; + goto rpm_disable; } return 0; -clk_disable: +rpm_disable: pm_runtime_disable(&pdev->dev); +clk_disable: clk_disable_unprepare(spi_st->clk); put_master: spi_master_put(master); --- linux-5.8.0.orig/drivers/spi/spi-stm32-qspi.c +++ linux-5.8.0/drivers/spi/spi-stm32-qspi.c @@ -434,8 +434,10 @@ int ret; ret = pm_runtime_get_sync(qspi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(qspi->dev); return ret; + } mutex_lock(&qspi->lock); ret = stm32_qspi_send(mem, op); @@ -462,8 +464,10 @@ return -EINVAL; ret = pm_runtime_get_sync(qspi->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(qspi->dev); return ret; + } presc = DIV_ROUND_UP(qspi->clk_rate, spi->max_speed_hz) - 1; --- linux-5.8.0.orig/drivers/spi/spi-stm32.c +++ linux-5.8.0/drivers/spi/spi-stm32.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -441,7 +442,8 @@ { u32 div, mbrdiv; - div = DIV_ROUND_UP(spi->clk_rate, speed_hz); + /* Ensure spi->clk_rate is even */ + div = DIV_ROUND_UP(spi->clk_rate & ~0x1, speed_hz); /* * SPI framework set xfer->speed_hz to master->max_speed_hz if @@ -467,26 +469,36 @@ /** * stm32h7_spi_prepare_fthlv - Determine FIFO threshold level * @spi: pointer to the spi controller data structure + * @xfer_len: length of the message to be transferred */ -static u32 stm32h7_spi_prepare_fthlv(struct stm32_spi *spi) +static u32 stm32h7_spi_prepare_fthlv(struct stm32_spi *spi, u32 xfer_len) { - u32 fthlv, half_fifo; + u32 fthlv, half_fifo, packet; /* data packet should not exceed 1/2 of fifo space */ half_fifo = (spi->fifo_size / 2); + /* data_packet should not exceed transfer length */ + if (half_fifo > xfer_len) + packet = xfer_len; + else + packet = half_fifo; + if (spi->cur_bpw <= 8) - fthlv = half_fifo; + fthlv = packet; else if (spi->cur_bpw <= 16) - fthlv = half_fifo / 2; + fthlv = packet / 2; else - fthlv = half_fifo / 4; + fthlv = packet / 4; /* align packet size with data registers access */ if (spi->cur_bpw > 8) - fthlv -= (fthlv % 2); /* multiple of 2 */ + fthlv += (fthlv % 2) ? 1 : 0; else - fthlv -= (fthlv % 4); /* multiple of 4 */ + fthlv += (fthlv % 4) ? (4 - (fthlv % 4)) : 0; + + if (!fthlv) + fthlv = 1; return fthlv; } @@ -917,14 +929,18 @@ mask |= STM32H7_SPI_SR_RXP; if (!(sr & mask)) { - dev_dbg(spi->dev, "spurious IT (sr=0x%08x, ier=0x%08x)\n", - sr, ier); + dev_warn(spi->dev, "spurious IT (sr=0x%08x, ier=0x%08x)\n", + sr, ier); spin_unlock_irqrestore(&spi->lock, flags); return IRQ_NONE; } if (sr & STM32H7_SPI_SR_SUSP) { - dev_warn(spi->dev, "Communication suspended\n"); + static DEFINE_RATELIMIT_STATE(rs, + DEFAULT_RATELIMIT_INTERVAL * 10, + 1); + if (__ratelimit(&rs)) + dev_dbg_ratelimited(spi->dev, "Communication suspended\n"); if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0))) stm32h7_spi_read_rxfifo(spi, false); /* @@ -941,15 +957,8 @@ } if (sr & STM32H7_SPI_SR_OVR) { - dev_warn(spi->dev, "Overrun: received value discarded\n"); - if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0))) - stm32h7_spi_read_rxfifo(spi, false); - /* - * If overrun is detected while using DMA, it means that - * something went wrong, so stop the current transfer - */ - if (spi->cur_usedma) - end = true; + dev_err(spi->dev, "Overrun: RX data lost\n"); + end = true; } if (sr & STM32H7_SPI_SR_EOT) { @@ -966,13 +975,13 @@ if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0))) stm32h7_spi_read_rxfifo(spi, false); - writel_relaxed(mask, spi->base + STM32H7_SPI_IFCR); + writel_relaxed(sr & mask, spi->base + STM32H7_SPI_IFCR); spin_unlock_irqrestore(&spi->lock, flags); if (end) { - spi_finalize_current_transfer(master); stm32h7_spi_disable(spi); + spi_finalize_current_transfer(master); } return IRQ_HANDLED; @@ -1393,7 +1402,7 @@ cfg1_setb |= (bpw << STM32H7_SPI_CFG1_DSIZE_SHIFT) & STM32H7_SPI_CFG1_DSIZE; - spi->cur_fthlv = stm32h7_spi_prepare_fthlv(spi); + spi->cur_fthlv = stm32h7_spi_prepare_fthlv(spi, spi->cur_xferlen); fthlv = spi->cur_fthlv - 1; cfg1_clrb |= STM32H7_SPI_CFG1_FTHLV; @@ -1585,39 +1594,33 @@ unsigned long flags; unsigned int comm_type; int nb_words, ret = 0; + int mbr; spin_lock_irqsave(&spi->lock, flags); - if (spi->cur_bpw != transfer->bits_per_word) { - spi->cur_bpw = transfer->bits_per_word; - spi->cfg->set_bpw(spi); - } + spi->cur_xferlen = transfer->len; - if (spi->cur_speed != transfer->speed_hz) { - int mbr; - - /* Update spi->cur_speed with real clock speed */ - mbr = stm32_spi_prepare_mbr(spi, transfer->speed_hz, - spi->cfg->baud_rate_div_min, - spi->cfg->baud_rate_div_max); - if (mbr < 0) { - ret = mbr; - goto out; - } + spi->cur_bpw = transfer->bits_per_word; + spi->cfg->set_bpw(spi); - transfer->speed_hz = spi->cur_speed; - stm32_spi_set_mbr(spi, mbr); + /* Update spi->cur_speed with real clock speed */ + mbr = stm32_spi_prepare_mbr(spi, transfer->speed_hz, + spi->cfg->baud_rate_div_min, + spi->cfg->baud_rate_div_max); + if (mbr < 0) { + ret = mbr; + goto out; } - comm_type = stm32_spi_communication_type(spi_dev, transfer); - if (spi->cur_comm != comm_type) { - ret = spi->cfg->set_mode(spi, comm_type); + transfer->speed_hz = spi->cur_speed; + stm32_spi_set_mbr(spi, mbr); - if (ret < 0) - goto out; + comm_type = stm32_spi_communication_type(spi_dev, transfer); + ret = spi->cfg->set_mode(spi, comm_type); + if (ret < 0) + goto out; - spi->cur_comm = comm_type; - } + spi->cur_comm = comm_type; if (spi->cfg->set_data_idleness) spi->cfg->set_data_idleness(spi, transfer->len); @@ -1635,8 +1638,6 @@ goto out; } - spi->cur_xferlen = transfer->len; - dev_dbg(spi->dev, "transfer communication mode set to %d\n", spi->cur_comm); dev_dbg(spi->dev, @@ -1670,6 +1671,10 @@ struct stm32_spi *spi = spi_master_get_devdata(master); int ret; + /* Don't do anything on 0 bytes transfers */ + if (transfer->len == 0) + return 0; + spi->tx_buf = transfer->tx_buf; spi->rx_buf = transfer->rx_buf; spi->tx_len = spi->tx_buf ? transfer->len : 0; @@ -1996,6 +2001,8 @@ pm_runtime_disable(&pdev->dev); + pinctrl_pm_select_sleep_state(&pdev->dev); + return 0; } @@ -2007,13 +2014,18 @@ clk_disable_unprepare(spi->clk); - return 0; + return pinctrl_pm_select_sleep_state(dev); } static int stm32_spi_runtime_resume(struct device *dev) { struct spi_master *master = dev_get_drvdata(dev); struct stm32_spi *spi = spi_master_get_devdata(master); + int ret; + + ret = pinctrl_pm_select_default_state(dev); + if (ret) + return ret; return clk_prepare_enable(spi->clk); } @@ -2043,10 +2055,24 @@ return ret; ret = spi_master_resume(master); - if (ret) + if (ret) { clk_disable_unprepare(spi->clk); + return ret; + } - return ret; + ret = pm_runtime_get_sync(dev); + if (ret < 0) { + pm_runtime_put_noidle(dev); + dev_err(dev, "Unable to power device:%d\n", ret); + return ret; + } + + spi->cfg->config(spi); + + pm_runtime_mark_last_busy(dev); + pm_runtime_put_autosuspend(dev); + + return 0; } #endif --- linux-5.8.0.orig/drivers/spi/spi-synquacer.c +++ linux-5.8.0/drivers/spi/spi-synquacer.c @@ -490,6 +490,10 @@ val &= ~(SYNQUACER_HSSPI_DMPSEL_CS_MASK << SYNQUACER_HSSPI_DMPSEL_CS_SHIFT); val |= spi->chip_select << SYNQUACER_HSSPI_DMPSEL_CS_SHIFT; + + if (!enable) + val |= SYNQUACER_HSSPI_DMSTOP_STOP; + writel(val, sspi->regs + SYNQUACER_HSSPI_REG_DMSTART); } @@ -658,7 +662,8 @@ if (!master->max_speed_hz) { dev_err(&pdev->dev, "missing clock source\n"); - return -EINVAL; + ret = -EINVAL; + goto disable_clk; } master->min_speed_hz = master->max_speed_hz / 254; @@ -671,7 +676,7 @@ rx_irq = platform_get_irq(pdev, 0); if (rx_irq <= 0) { ret = rx_irq; - goto put_spi; + goto disable_clk; } snprintf(sspi->rx_irq_name, SYNQUACER_HSSPI_IRQ_NAME_MAX, "%s-rx", dev_name(&pdev->dev)); @@ -679,13 +684,13 @@ 0, sspi->rx_irq_name, sspi); if (ret) { dev_err(&pdev->dev, "request rx_irq failed (%d)\n", ret); - goto put_spi; + goto disable_clk; } tx_irq = platform_get_irq(pdev, 1); if (tx_irq <= 0) { ret = tx_irq; - goto put_spi; + goto disable_clk; } snprintf(sspi->tx_irq_name, SYNQUACER_HSSPI_IRQ_NAME_MAX, "%s-tx", dev_name(&pdev->dev)); @@ -693,7 +698,7 @@ 0, sspi->tx_irq_name, sspi); if (ret) { dev_err(&pdev->dev, "request tx_irq failed (%d)\n", ret); - goto put_spi; + goto disable_clk; } master->dev.of_node = np; @@ -711,7 +716,7 @@ ret = synquacer_spi_enable(master); if (ret) - goto fail_enable; + goto disable_clk; pm_runtime_set_active(sspi->dev); pm_runtime_enable(sspi->dev); @@ -724,7 +729,7 @@ disable_pm: pm_runtime_disable(sspi->dev); -fail_enable: +disable_clk: clk_disable_unprepare(sspi->clk); put_spi: spi_master_put(master); --- linux-5.8.0.orig/drivers/spi/spi-tegra114.c +++ linux-5.8.0/drivers/spi/spi-tegra114.c @@ -971,6 +971,7 @@ ret = pm_runtime_get_sync(tspi->dev); if (ret < 0) { + pm_runtime_put_noidle(tspi->dev); dev_err(tspi->dev, "pm runtime failed, e = %d\n", ret); if (cdata) tegra_spi_cleanup(spi); @@ -1479,6 +1480,7 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { + pm_runtime_put_noidle(dev); dev_err(dev, "pm runtime failed, e = %d\n", ret); return ret; } --- linux-5.8.0.orig/drivers/spi/spi-tegra20-sflash.c +++ linux-5.8.0/drivers/spi/spi-tegra20-sflash.c @@ -553,6 +553,7 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { + pm_runtime_put_noidle(dev); dev_err(dev, "pm runtime failed, e = %d\n", ret); return ret; } --- linux-5.8.0.orig/drivers/spi/spi-tegra20-slink.c +++ linux-5.8.0/drivers/spi/spi-tegra20-slink.c @@ -755,6 +755,7 @@ ret = pm_runtime_get_sync(tspi->dev); if (ret < 0) { + pm_runtime_put_noidle(tspi->dev); dev_err(tspi->dev, "pm runtime failed, e = %d\n", ret); return ret; } @@ -1192,6 +1193,7 @@ ret = pm_runtime_get_sync(dev); if (ret < 0) { + pm_runtime_put_noidle(dev); dev_err(dev, "pm runtime failed, e = %d\n", ret); return ret; } --- linux-5.8.0.orig/drivers/spi/spi-ti-qspi.c +++ linux-5.8.0/drivers/spi/spi-ti-qspi.c @@ -174,6 +174,7 @@ ret = pm_runtime_get_sync(qspi->dev); if (ret < 0) { + pm_runtime_put_noidle(qspi->dev); dev_err(qspi->dev, "pm_runtime_get_sync() failed\n"); return ret; } --- linux-5.8.0.orig/drivers/spi/spi.c +++ linux-5.8.0/drivers/spi/spi.c @@ -405,9 +405,11 @@ if (ret) return ret; - ret = sdrv->probe(spi); - if (ret) - dev_pm_domain_detach(dev, true); + if (sdrv->probe) { + ret = sdrv->probe(spi); + if (ret) + dev_pm_domain_detach(dev, true); + } return ret; } @@ -415,9 +417,10 @@ static int spi_drv_remove(struct device *dev) { const struct spi_driver *sdrv = to_spi_driver(dev->driver); - int ret; + int ret = 0; - ret = sdrv->remove(to_spi_device(dev)); + if (sdrv->remove) + ret = sdrv->remove(to_spi_device(dev)); dev_pm_domain_detach(dev, true); return ret; @@ -442,10 +445,8 @@ { sdrv->driver.owner = owner; sdrv->driver.bus = &spi_bus_type; - if (sdrv->probe) - sdrv->driver.probe = spi_drv_probe; - if (sdrv->remove) - sdrv->driver.remove = spi_drv_remove; + sdrv->driver.probe = spi_drv_probe; + sdrv->driver.remove = spi_drv_remove; if (sdrv->shutdown) sdrv->driver.shutdown = spi_drv_shutdown; return driver_register(&sdrv->driver); @@ -475,6 +476,12 @@ */ static DEFINE_MUTEX(board_lock); +/* + * Prevents addition of devices with same chip select and + * addition of devices below an unregistering controller. + */ +static DEFINE_MUTEX(spi_add_lock); + /** * spi_alloc_device - Allocate a new SPI device * @ctlr: Controller to which device is connected @@ -554,7 +561,6 @@ */ int spi_add_device(struct spi_device *spi) { - static DEFINE_MUTEX(spi_add_lock); struct spi_controller *ctlr = spi->controller; struct device *dev = ctlr->dev.parent; int status; @@ -582,6 +588,13 @@ goto done; } + /* Controller may unregister concurrently */ + if (IS_ENABLED(CONFIG_SPI_DYNAMIC) && + !device_is_registered(&ctlr->dev)) { + status = -ENODEV; + goto done; + } + /* Descriptors take precedence */ if (ctlr->cs_gpiods) spi->cs_gpiod = ctlr->cs_gpiods[spi->chip_select]; @@ -789,18 +802,16 @@ enable = !enable; if (spi->cs_gpiod || gpio_is_valid(spi->cs_gpio)) { - /* - * Honour the SPI_NO_CS flag and invert the enable line, as - * active low is default for SPI. Execution paths that handle - * polarity inversion in gpiolib (such as device tree) will - * enforce active high using the SPI_CS_HIGH resulting in a - * double inversion through the code above. - */ if (!(spi->mode & SPI_NO_CS)) { if (spi->cs_gpiod) + /* polarity handled by gpiolib */ gpiod_set_value_cansleep(spi->cs_gpiod, - !enable); + enable1); else + /* + * invert the enable line, as active low is + * default for SPI. + */ gpio_set_value_cansleep(spi->cs_gpio, !enable); } /* Some SPI masters need both GPIO CS & slave_select */ @@ -1076,6 +1087,7 @@ { struct spi_statistics *statm = &ctlr->statistics; struct spi_statistics *stats = &msg->spi->statistics; + u32 speed_hz = xfer->speed_hz; unsigned long long ms; if (spi_controller_is_slave(ctlr)) { @@ -1084,8 +1096,11 @@ return -EINTR; } } else { + if (!speed_hz) + speed_hz = 100000; + ms = 8LL * 1000LL * xfer->len; - do_div(ms, xfer->speed_hz); + do_div(ms, speed_hz); ms += ms + 200; /* some tolerance */ if (ms > UINT_MAX) @@ -1293,8 +1308,6 @@ if (msg->status && ctlr->handle_err) ctlr->handle_err(ctlr, msg); - spi_res_release(ctlr, msg); - spi_finalize_current_message(ctlr); return ret; @@ -1682,6 +1695,13 @@ spi_unmap_msg(ctlr, mesg); + /* In the prepare_messages callback the spi bus has the opportunity to + * split a transfer to smaller chunks. + * Release splited transfers here since spi_map_msg is done on the + * splited transfers. + */ + spi_res_release(ctlr, mesg); + if (ctlr->cur_msg_prepared && ctlr->unprepare_message) { ret = ctlr->unprepare_message(ctlr, mesg); if (ret) { @@ -1944,15 +1964,6 @@ } spi->chip_select = value; - /* - * For descriptors associated with the device, polarity inversion is - * handled in the gpiolib, so all gpio chip selects are "active high" - * in the logical sense, the gpiolib will invert the line if need be. - */ - if ((ctlr->use_gpio_descriptors) && ctlr->cs_gpiods && - ctlr->cs_gpiods[spi->chip_select]) - spi->mode |= SPI_CS_HIGH; - /* Device speed */ if (!of_property_read_u32(nc, "spi-max-frequency", &value)) spi->max_speed_hz = value; @@ -2405,6 +2416,49 @@ } EXPORT_SYMBOL_GPL(__spi_alloc_controller); +static void devm_spi_release_controller(struct device *dev, void *ctlr) +{ + spi_controller_put(*(struct spi_controller **)ctlr); +} + +/** + * __devm_spi_alloc_controller - resource-managed __spi_alloc_controller() + * @dev: physical device of SPI controller + * @size: how much zeroed driver-private data to allocate + * @slave: whether to allocate an SPI master (false) or SPI slave (true) + * Context: can sleep + * + * Allocate an SPI controller and automatically release a reference on it + * when @dev is unbound from its driver. Drivers are thus relieved from + * having to call spi_controller_put(). + * + * The arguments to this function are identical to __spi_alloc_controller(). + * + * Return: the SPI controller structure on success, else NULL. + */ +struct spi_controller *__devm_spi_alloc_controller(struct device *dev, + unsigned int size, + bool slave) +{ + struct spi_controller **ptr, *ctlr; + + ptr = devres_alloc(devm_spi_release_controller, sizeof(*ptr), + GFP_KERNEL); + if (!ptr) + return NULL; + + ctlr = __spi_alloc_controller(dev, size, slave); + if (ctlr) { + *ptr = ctlr; + devres_add(dev, ptr); + } else { + devres_free(ptr); + } + + return ctlr; +} +EXPORT_SYMBOL_GPL(__devm_spi_alloc_controller); + #ifdef CONFIG_OF static int of_spi_get_gpio_numbers(struct spi_controller *ctlr) { @@ -2741,6 +2795,11 @@ } EXPORT_SYMBOL_GPL(devm_spi_register_controller); +static int devm_spi_match_controller(struct device *dev, void *res, void *ctlr) +{ + return *(struct spi_controller **)res == ctlr; +} + static int __unregister(struct device *dev, void *null) { spi_unregister_device(to_spi_device(dev)); @@ -2764,6 +2823,10 @@ struct spi_controller *found; int id = ctlr->bus_num; + /* Prevent addition of new devices, unregister existing ones */ + if (IS_ENABLED(CONFIG_SPI_DYNAMIC)) + mutex_lock(&spi_add_lock); + device_for_each_child(&ctlr->dev, NULL, __unregister); /* First make sure that this controller was ever added */ @@ -2778,12 +2841,23 @@ list_del(&ctlr->list); mutex_unlock(&board_lock); - device_unregister(&ctlr->dev); + device_del(&ctlr->dev); + + /* Release the last reference on the controller if its driver + * has not yet been converted to devm_spi_alloc_master/slave(). + */ + if (!devres_find(ctlr->dev.parent, devm_spi_release_controller, + devm_spi_match_controller, ctlr)) + put_device(&ctlr->dev); + /* free bus id */ mutex_lock(&board_lock); if (found == ctlr) idr_remove(&spi_master_idr, id); mutex_unlock(&board_lock); + + if (IS_ENABLED(CONFIG_SPI_DYNAMIC)) + mutex_unlock(&spi_add_lock); } EXPORT_SYMBOL_GPL(spi_unregister_controller); --- linux-5.8.0.orig/drivers/spi/spidev.c +++ linux-5.8.0/drivers/spi/spidev.c @@ -224,6 +224,11 @@ for (n = n_xfers, k_tmp = k_xfers, u_tmp = u_xfers; n; n--, k_tmp++, u_tmp++) { + /* Ensure that also following allocations from rx_buf/tx_buf will meet + * DMA alignment requirements. + */ + unsigned int len_aligned = ALIGN(u_tmp->len, ARCH_KMALLOC_MINALIGN); + k_tmp->len = u_tmp->len; total += k_tmp->len; @@ -239,17 +244,17 @@ if (u_tmp->rx_buf) { /* this transfer needs space in RX bounce buffer */ - rx_total += k_tmp->len; + rx_total += len_aligned; if (rx_total > bufsiz) { status = -EMSGSIZE; goto done; } k_tmp->rx_buf = rx_buf; - rx_buf += k_tmp->len; + rx_buf += len_aligned; } if (u_tmp->tx_buf) { /* this transfer needs space in TX bounce buffer */ - tx_total += k_tmp->len; + tx_total += len_aligned; if (tx_total > bufsiz) { status = -EMSGSIZE; goto done; @@ -259,7 +264,7 @@ (uintptr_t) u_tmp->tx_buf, u_tmp->len)) goto done; - tx_buf += k_tmp->len; + tx_buf += len_aligned; } k_tmp->cs_change = !!u_tmp->cs_change; @@ -293,16 +298,16 @@ goto done; /* copy any rx data out of bounce buffer */ - rx_buf = spidev->rx_buffer; - for (n = n_xfers, u_tmp = u_xfers; n; n--, u_tmp++) { + for (n = n_xfers, k_tmp = k_xfers, u_tmp = u_xfers; + n; + n--, k_tmp++, u_tmp++) { if (u_tmp->rx_buf) { if (copy_to_user((u8 __user *) - (uintptr_t) u_tmp->rx_buf, rx_buf, + (uintptr_t) u_tmp->rx_buf, k_tmp->rx_buf, u_tmp->len)) { status = -EFAULT; goto done; } - rx_buf += u_tmp->len; } } status = total; --- linux-5.8.0.orig/drivers/spmi/spmi-pmic-arb.c +++ linux-5.8.0/drivers/spmi/spmi-pmic-arb.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2012-2015, 2017, The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2015, 2017, 2021, The Linux Foundation. All rights reserved. */ #include #include @@ -505,8 +505,7 @@ static void periph_interrupt(struct spmi_pmic_arb *pmic_arb, u16 apid) { unsigned int irq; - u32 status; - int id; + u32 status, id; u8 sid = (pmic_arb->apid_data[apid].ppid >> 8) & 0xF; u8 per = pmic_arb->apid_data[apid].ppid & 0xFF; --- linux-5.8.0.orig/drivers/staging/android/Kconfig +++ linux-5.8.0/drivers/staging/android/Kconfig @@ -4,7 +4,7 @@ if ANDROID config ASHMEM - bool "Enable the Anonymous Shared Memory Subsystem" + tristate "Enable the Anonymous Shared Memory Subsystem" depends on SHMEM help The ashmem subsystem is a new shared memory allocator, similar to --- linux-5.8.0.orig/drivers/staging/android/Makefile +++ linux-5.8.0/drivers/staging/android/Makefile @@ -3,4 +3,5 @@ obj-y += ion/ -obj-$(CONFIG_ASHMEM) += ashmem.o +ashmem_linux-y += ashmem.o +obj-$(CONFIG_ASHMEM) += ashmem_linux.o --- linux-5.8.0.orig/drivers/staging/android/ashmem.c +++ linux-5.8.0/drivers/staging/android/ashmem.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -95,6 +96,15 @@ 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; @@ -396,6 +406,7 @@ 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; @@ -407,6 +418,8 @@ 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 @@ -952,4 +965,18 @@ out: return ret; } -device_initcall(ashmem_init); + +static void __exit ashmem_exit(void) +{ + misc_deregister(&ashmem_misc); + unregister_shrinker(&ashmem_shrinker); + kmem_cache_destroy(ashmem_range_cachep); + kmem_cache_destroy(ashmem_area_cachep); +} + +module_init(ashmem_init); +module_exit(ashmem_exit); + +MODULE_AUTHOR("Google, Inc."); +MODULE_DESCRIPTION("Driver for Android shared memory device"); +MODULE_LICENSE("GPL v2"); --- linux-5.8.0.orig/drivers/staging/comedi/comedi_fops.c +++ linux-5.8.0/drivers/staging/comedi/comedi_fops.c @@ -2984,7 +2984,9 @@ v32.chanlist_len = cmd->chanlist_len; v32.data = ptr_to_compat(cmd->data); v32.data_len = cmd->data_len; - return copy_to_user(cmd32, &v32, sizeof(v32)); + if (copy_to_user(cmd32, &v32, sizeof(v32))) + return -EFAULT; + return 0; } /* Handle 32-bit COMEDI_CMD ioctl. */ --- linux-5.8.0.orig/drivers/staging/comedi/drivers/addi_apci_1032.c +++ linux-5.8.0/drivers/staging/comedi/drivers/addi_apci_1032.c @@ -260,6 +260,7 @@ struct apci1032_private *devpriv = dev->private; struct comedi_subdevice *s = dev->read_subdev; unsigned int ctrl; + unsigned short val; /* check interrupt is from this device */ if ((inl(devpriv->amcc_iobase + AMCC_OP_REG_INTCSR) & @@ -275,7 +276,8 @@ outl(ctrl & ~APCI1032_CTRL_INT_ENA, dev->iobase + APCI1032_CTRL_REG); s->state = inl(dev->iobase + APCI1032_STATUS_REG) & 0xffff; - comedi_buf_write_samples(s, &s->state, 1); + val = s->state; + comedi_buf_write_samples(s, &val, 1); comedi_handle_events(dev, s); /* enable the interrupt */ --- linux-5.8.0.orig/drivers/staging/comedi/drivers/addi_apci_1500.c +++ linux-5.8.0/drivers/staging/comedi/drivers/addi_apci_1500.c @@ -208,7 +208,7 @@ struct comedi_device *dev = d; struct apci1500_private *devpriv = dev->private; struct comedi_subdevice *s = dev->read_subdev; - unsigned int status = 0; + unsigned short status = 0; unsigned int val; val = inl(devpriv->amcc + AMCC_OP_REG_INTCSR); @@ -238,14 +238,14 @@ * * Mask Meaning * ---------- ------------------------------------------ - * 0x00000001 Event 1 has occurred - * 0x00000010 Event 2 has occurred - * 0x00000100 Counter/timer 1 has run down (not implemented) - * 0x00001000 Counter/timer 2 has run down (not implemented) - * 0x00010000 Counter 3 has run down (not implemented) - * 0x00100000 Watchdog has run down (not implemented) - * 0x01000000 Voltage error - * 0x10000000 Short-circuit error + * 0b00000001 Event 1 has occurred + * 0b00000010 Event 2 has occurred + * 0b00000100 Counter/timer 1 has run down (not implemented) + * 0b00001000 Counter/timer 2 has run down (not implemented) + * 0b00010000 Counter 3 has run down (not implemented) + * 0b00100000 Watchdog has run down (not implemented) + * 0b01000000 Voltage error + * 0b10000000 Short-circuit error */ comedi_buf_write_samples(s, &status, 1); comedi_handle_events(dev, s); --- linux-5.8.0.orig/drivers/staging/comedi/drivers/adv_pci1710.c +++ linux-5.8.0/drivers/staging/comedi/drivers/adv_pci1710.c @@ -300,11 +300,11 @@ static int pci1710_ai_read_sample(struct comedi_device *dev, struct comedi_subdevice *s, unsigned int cur_chan, - unsigned int *val) + unsigned short *val) { const struct boardtype *board = dev->board_ptr; struct pci1710_private *devpriv = dev->private; - unsigned int sample; + unsigned short sample; unsigned int chan; sample = inw(dev->iobase + PCI171X_AD_DATA_REG); @@ -345,7 +345,7 @@ pci1710_ai_setup_chanlist(dev, s, &insn->chanspec, 1, 1); for (i = 0; i < insn->n; i++) { - unsigned int val; + unsigned short val; /* start conversion */ outw(0, dev->iobase + PCI171X_SOFTTRG_REG); @@ -395,7 +395,7 @@ { struct comedi_cmd *cmd = &s->async->cmd; unsigned int status; - unsigned int val; + unsigned short val; int ret; status = inw(dev->iobase + PCI171X_STATUS_REG); @@ -455,7 +455,7 @@ } for (i = 0; i < devpriv->max_samples; i++) { - unsigned int val; + unsigned short val; int ret; ret = pci1710_ai_read_sample(dev, s, s->async->cur_chan, &val); --- linux-5.8.0.orig/drivers/staging/comedi/drivers/cb_pcidas.c +++ linux-5.8.0/drivers/staging/comedi/drivers/cb_pcidas.c @@ -1281,7 +1281,7 @@ devpriv->amcc + AMCC_OP_REG_INTCSR); ret = request_irq(pcidev->irq, cb_pcidas_interrupt, IRQF_SHARED, - dev->board_name, dev); + "cb_pcidas", dev); if (ret) { dev_dbg(dev->class_dev, "unable to allocate irq %d\n", pcidev->irq); @@ -1342,6 +1342,7 @@ if (dev->irq && board->has_ao_fifo) { dev->write_subdev = s; s->subdev_flags |= SDF_CMD_WRITE; + s->len_chanlist = s->n_chan; s->do_cmdtest = cb_pcidas_ao_cmdtest; s->do_cmd = cb_pcidas_ao_cmd; s->cancel = cb_pcidas_ao_cancel; --- linux-5.8.0.orig/drivers/staging/comedi/drivers/cb_pcidas64.c +++ linux-5.8.0/drivers/staging/comedi/drivers/cb_pcidas64.c @@ -4035,7 +4035,7 @@ init_stc_registers(dev); retval = request_irq(pcidev->irq, handle_interrupt, IRQF_SHARED, - dev->board_name, dev); + "cb_pcidas64", dev); if (retval) { dev_dbg(dev->class_dev, "unable to allocate irq %u\n", pcidev->irq); --- linux-5.8.0.orig/drivers/staging/comedi/drivers/das6402.c +++ linux-5.8.0/drivers/staging/comedi/drivers/das6402.c @@ -186,7 +186,7 @@ if (status & DAS6402_STATUS_FFULL) { async->events |= COMEDI_CB_OVERFLOW; } else if (status & DAS6402_STATUS_FFNE) { - unsigned int val; + unsigned short val; val = das6402_ai_read_sample(dev, s); comedi_buf_write_samples(s, &val, 1); --- linux-5.8.0.orig/drivers/staging/comedi/drivers/das800.c +++ linux-5.8.0/drivers/staging/comedi/drivers/das800.c @@ -427,7 +427,7 @@ struct comedi_cmd *cmd; unsigned long irq_flags; unsigned int status; - unsigned int val; + unsigned short val; bool fifo_empty; bool fifo_overflow; int i; --- linux-5.8.0.orig/drivers/staging/comedi/drivers/dmm32at.c +++ linux-5.8.0/drivers/staging/comedi/drivers/dmm32at.c @@ -404,7 +404,7 @@ { struct comedi_device *dev = d; unsigned char intstat; - unsigned int val; + unsigned short val; int i; if (!dev->attached) { --- linux-5.8.0.orig/drivers/staging/comedi/drivers/me4000.c +++ linux-5.8.0/drivers/staging/comedi/drivers/me4000.c @@ -924,7 +924,7 @@ struct comedi_subdevice *s = dev->read_subdev; int i; int c = 0; - unsigned int lval; + unsigned short lval; if (!dev->attached) return IRQ_NONE; --- linux-5.8.0.orig/drivers/staging/comedi/drivers/mf6x4.c +++ linux-5.8.0/drivers/staging/comedi/drivers/mf6x4.c @@ -112,8 +112,9 @@ struct mf6x4_private *devpriv = dev->private; unsigned int status; + /* EOLC goes low at end of conversion. */ status = ioread32(devpriv->gpioc_reg); - if (status & MF6X4_GPIOC_EOLC) + if ((status & MF6X4_GPIOC_EOLC) == 0) return 0; return -EBUSY; } --- linux-5.8.0.orig/drivers/staging/comedi/drivers/pcl711.c +++ linux-5.8.0/drivers/staging/comedi/drivers/pcl711.c @@ -184,7 +184,7 @@ struct comedi_device *dev = d; struct comedi_subdevice *s = dev->read_subdev; struct comedi_cmd *cmd = &s->async->cmd; - unsigned int data; + unsigned short data; if (!dev->attached) { dev_err(dev->class_dev, "spurious interrupt\n"); --- linux-5.8.0.orig/drivers/staging/comedi/drivers/pcl818.c +++ linux-5.8.0/drivers/staging/comedi/drivers/pcl818.c @@ -423,7 +423,7 @@ static bool pcl818_ai_write_sample(struct comedi_device *dev, struct comedi_subdevice *s, - unsigned int chan, unsigned int val) + unsigned int chan, unsigned short val) { struct pcl818_private *devpriv = dev->private; struct comedi_cmd *cmd = &s->async->cmd; --- linux-5.8.0.orig/drivers/staging/comedi/drivers/vmk80xx.c +++ linux-5.8.0/drivers/staging/comedi/drivers/vmk80xx.c @@ -667,6 +667,9 @@ if (!devpriv->ep_rx || !devpriv->ep_tx) return -ENODEV; + if (!usb_endpoint_maxp(devpriv->ep_rx) || !usb_endpoint_maxp(devpriv->ep_tx)) + return -EINVAL; + return 0; } --- linux-5.8.0.orig/drivers/staging/emxx_udc/emxx_udc.c +++ linux-5.8.0/drivers/staging/emxx_udc/emxx_udc.c @@ -2593,7 +2593,7 @@ if (req->unaligned) { if (!ep->virt_buf) - ep->virt_buf = dma_alloc_coherent(NULL, PAGE_SIZE, + ep->virt_buf = dma_alloc_coherent(udc->dev, PAGE_SIZE, &ep->phys_buf, GFP_ATOMIC | GFP_DMA); if (ep->epnum > 0) { @@ -3148,7 +3148,7 @@ for (i = 0; i < NUM_ENDPOINTS; i++) { ep = &udc->ep[i]; if (ep->virt_buf) - dma_free_coherent(NULL, PAGE_SIZE, (void *)ep->virt_buf, + dma_free_coherent(udc->dev, PAGE_SIZE, (void *)ep->virt_buf, ep->phys_buf); } --- linux-5.8.0.orig/drivers/staging/fieldbus/anybuss/arcx-anybus.c +++ linux-5.8.0/drivers/staging/fieldbus/anybuss/arcx-anybus.c @@ -293,7 +293,7 @@ regulator = devm_regulator_register(dev, &can_power_desc, &config); if (IS_ERR(regulator)) { err = PTR_ERR(regulator); - goto out_reset; + goto out_ida; } /* make controller info visible to userspace */ cd->class_dev = kzalloc(sizeof(*cd->class_dev), GFP_KERNEL); --- linux-5.8.0.orig/drivers/staging/fwserial/fwserial.c +++ linux-5.8.0/drivers/staging/fwserial/fwserial.c @@ -2189,6 +2189,7 @@ err = fw_core_add_address_handler(&port->rx_handler, &fw_high_memory_region); if (err) { + tty_port_destroy(&port->port); kfree(port); goto free_ports; } @@ -2271,6 +2272,7 @@ free_ports: for (--i; i >= 0; --i) { + fw_core_remove_address_handler(&serial->ports[i]->rx_handler); tty_port_destroy(&serial->ports[i]->port); kfree(serial->ports[i]); } --- linux-5.8.0.orig/drivers/staging/gasket/gasket_interrupt.c +++ linux-5.8.0/drivers/staging/gasket/gasket_interrupt.c @@ -487,14 +487,16 @@ int gasket_interrupt_set_eventfd(struct gasket_interrupt_data *interrupt_data, int interrupt, int event_fd) { - struct eventfd_ctx *ctx = eventfd_ctx_fdget(event_fd); - - if (IS_ERR(ctx)) - return PTR_ERR(ctx); + struct eventfd_ctx *ctx; if (interrupt < 0 || interrupt >= interrupt_data->num_interrupts) return -EINVAL; + ctx = eventfd_ctx_fdget(event_fd); + + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + interrupt_data->eventfd_ctxs[interrupt] = ctx; return 0; } @@ -505,6 +507,9 @@ if (interrupt < 0 || interrupt >= interrupt_data->num_interrupts) return -EINVAL; - interrupt_data->eventfd_ctxs[interrupt] = NULL; + if (interrupt_data->eventfd_ctxs[interrupt]) { + eventfd_ctx_put(interrupt_data->eventfd_ctxs[interrupt]); + interrupt_data->eventfd_ctxs[interrupt] = NULL; + } return 0; } --- linux-5.8.0.orig/drivers/staging/gdm724x/gdm_usb.c +++ linux-5.8.0/drivers/staging/gdm724x/gdm_usb.c @@ -56,20 +56,24 @@ static int request_mac_address(struct lte_udev *udev) { - u8 buf[16] = {0,}; - struct hci_packet *hci = (struct hci_packet *)buf; + struct hci_packet *hci; struct usb_device *usbdev = udev->usbdev; int actual; int ret = -1; + hci = kmalloc(struct_size(hci, data, 1), GFP_KERNEL); + if (!hci) + return -ENOMEM; + hci->cmd_evt = gdm_cpu_to_dev16(udev->gdm_ed, LTE_GET_INFORMATION); hci->len = gdm_cpu_to_dev16(udev->gdm_ed, 1); hci->data[0] = MAC_ADDRESS; - ret = usb_bulk_msg(usbdev, usb_sndbulkpipe(usbdev, 2), buf, 5, + ret = usb_bulk_msg(usbdev, usb_sndbulkpipe(usbdev, 2), hci, 5, &actual, 1000); udev->request_mac_addr = 1; + kfree(hci); return ret; } --- linux-5.8.0.orig/drivers/staging/greybus/audio_codec.c +++ linux-5.8.0/drivers/staging/greybus/audio_codec.c @@ -489,6 +489,7 @@ if (ret) { dev_err_ratelimited(dai->dev, "%d: Error during set_config\n", ret); + gb_pm_runtime_put_noidle(bundle); mutex_unlock(&codec->lock); return ret; } @@ -565,6 +566,7 @@ break; } if (ret) { + gb_pm_runtime_put_noidle(bundle); mutex_unlock(&codec->lock); dev_err_ratelimited(dai->dev, "set_data_size failed:%d\n", ret); --- linux-5.8.0.orig/drivers/staging/greybus/audio_topology.c +++ linux-5.8.0/drivers/staging/greybus/audio_topology.c @@ -460,6 +460,15 @@ val = ucontrol->value.integer.value[0] & mask; connect = !!val; + ret = gb_pm_runtime_get_sync(bundle); + if (ret) + return ret; + + ret = gb_audio_gb_get_control(module->mgmt_connection, data->ctl_id, + GB_AUDIO_INVALID_INDEX, &gbvalue); + if (ret) + goto exit; + /* update ucontrol */ if (gbvalue.value.integer_value[0] != val) { for (wi = 0; wi < wlist->num_widgets; wi++) { @@ -473,25 +482,17 @@ gbvalue.value.integer_value[0] = cpu_to_le32(ucontrol->value.integer.value[0]); - ret = gb_pm_runtime_get_sync(bundle); - if (ret) - return ret; - ret = gb_audio_gb_set_control(module->mgmt_connection, data->ctl_id, GB_AUDIO_INVALID_INDEX, &gbvalue); - - gb_pm_runtime_put_autosuspend(bundle); - - if (ret) { - dev_err_ratelimited(codec->dev, - "%d:Error in %s for %s\n", ret, - __func__, kcontrol->id.name); - return ret; - } } - return 0; +exit: + gb_pm_runtime_put_autosuspend(bundle); + if (ret) + dev_err_ratelimited(codec_dev, "%d:Error in %s for %s\n", ret, + __func__, kcontrol->id.name); + return ret; } #define SOC_DAPM_MIXER_GB(xname, kcount, data) \ --- linux-5.8.0.orig/drivers/staging/ks7010/ks_wlan_net.c +++ linux-5.8.0/drivers/staging/ks7010/ks_wlan_net.c @@ -1120,6 +1120,7 @@ { struct ks_wlan_private *priv = netdev_priv(dev); struct iw_scan_req *req = NULL; + int len; if (priv->sleep_mode == SLP_SLEEP) return -EPERM; @@ -1129,8 +1130,9 @@ if (wrqu->data.length == sizeof(struct iw_scan_req) && wrqu->data.flags & IW_SCAN_THIS_ESSID) { req = (struct iw_scan_req *)extra; - priv->scan_ssid_len = req->essid_len; - memcpy(priv->scan_ssid, req->essid, priv->scan_ssid_len); + len = min_t(int, req->essid_len, IW_ESSID_MAX_SIZE); + priv->scan_ssid_len = len; + memcpy(priv->scan_ssid, req->essid, len); } else { priv->scan_ssid_len = 0; } --- linux-5.8.0.orig/drivers/staging/media/allegro-dvt/allegro-core.c +++ linux-5.8.0/drivers/staging/media/allegro-dvt/allegro-core.c @@ -2422,8 +2422,6 @@ INIT_LIST_HEAD(&channel->buffers_reference); INIT_LIST_HEAD(&channel->buffers_intermediate); - list_add(&channel->list, &dev->channels); - channel->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, channel, allegro_queue_init); @@ -2432,6 +2430,7 @@ goto error; } + list_add(&channel->list, &dev->channels); file->private_data = &channel->fh; v4l2_fh_add(&channel->fh); @@ -3065,9 +3064,9 @@ return -EINVAL; } regs = devm_ioremap(&pdev->dev, res->start, resource_size(res)); - if (IS_ERR(regs)) { + if (!regs) { dev_err(&pdev->dev, "failed to map registers\n"); - return PTR_ERR(regs); + return -ENOMEM; } dev->regmap = devm_regmap_init_mmio(&pdev->dev, regs, &allegro_regmap_config); @@ -3085,9 +3084,9 @@ sram_regs = devm_ioremap(&pdev->dev, sram_res->start, resource_size(sram_res)); - if (IS_ERR(sram_regs)) { + if (!sram_regs) { dev_err(&pdev->dev, "failed to map sram\n"); - return PTR_ERR(sram_regs); + return -ENOMEM; } dev->sram = devm_regmap_init_mmio(&pdev->dev, sram_regs, &allegro_sram_config); --- linux-5.8.0.orig/drivers/staging/media/atomisp/pci/atomisp_subdev.c +++ linux-5.8.0/drivers/staging/media/atomisp/pci/atomisp_subdev.c @@ -349,12 +349,20 @@ return 0; } -static char *atomisp_pad_str[] = { "ATOMISP_SUBDEV_PAD_SINK", - "ATOMISP_SUBDEV_PAD_SOURCE_CAPTURE", - "ATOMISP_SUBDEV_PAD_SOURCE_VF", - "ATOMISP_SUBDEV_PAD_SOURCE_PREVIEW", - "ATOMISP_SUBDEV_PAD_SOURCE_VIDEO" - }; +static const char *atomisp_pad_str(unsigned int pad) +{ + static const char *const pad_str[] = { + "ATOMISP_SUBDEV_PAD_SINK", + "ATOMISP_SUBDEV_PAD_SOURCE_CAPTURE", + "ATOMISP_SUBDEV_PAD_SOURCE_VF", + "ATOMISP_SUBDEV_PAD_SOURCE_PREVIEW", + "ATOMISP_SUBDEV_PAD_SOURCE_VIDEO", + }; + + if (pad >= ARRAY_SIZE(pad_str)) + return "ATOMISP_INVALID_PAD"; + return pad_str[pad]; +} int atomisp_subdev_set_selection(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg, @@ -378,7 +386,7 @@ dev_dbg(isp->dev, "sel: pad %s tgt %s l %d t %d w %d h %d which %s f 0x%8.8x\n", - atomisp_pad_str[pad], target == V4L2_SEL_TGT_CROP + atomisp_pad_str(pad), target == V4L2_SEL_TGT_CROP ? "V4L2_SEL_TGT_CROP" : "V4L2_SEL_TGT_COMPOSE", r->left, r->top, r->width, r->height, which == V4L2_SUBDEV_FORMAT_TRY ? "V4L2_SUBDEV_FORMAT_TRY" @@ -610,7 +618,7 @@ enum atomisp_input_stream_id stream_id; dev_dbg(isp->dev, "ffmt: pad %s w %d h %d code 0x%8.8x which %s\n", - atomisp_pad_str[pad], ffmt->width, ffmt->height, ffmt->code, + atomisp_pad_str(pad), ffmt->width, ffmt->height, ffmt->code, which == V4L2_SUBDEV_FORMAT_TRY ? "V4L2_SUBDEV_FORMAT_TRY" : "V4L2_SUBDEV_FORMAT_ACTIVE"); --- linux-5.8.0.orig/drivers/staging/media/atomisp/pci/hmm/hmm.c +++ linux-5.8.0/drivers/staging/media/atomisp/pci/hmm/hmm.c @@ -269,7 +269,7 @@ hmm_set(bo->start, 0, bytes); dev_dbg(atomisp_dev, - "%s: pages: 0x%08x (%ld bytes), type: %d from highmem %d, user ptr %p, cached %d\n", + "%s: pages: 0x%08x (%zu bytes), type: %d from highmem %d, user ptr %p, cached %d\n", __func__, bo->start, bytes, type, from_highmem, userptr, cached); return bo->start; --- linux-5.8.0.orig/drivers/staging/media/atomisp/pci/sh_css.c +++ linux-5.8.0/drivers/staging/media/atomisp/pci/sh_css.c @@ -9521,7 +9521,7 @@ if (err) { IA_CSS_LEAVE_ERR(err); - return err; + goto ERR; } #endif for (i = 0; i < num_pipes; i++) --- linux-5.8.0.orig/drivers/staging/media/hantro/hantro_h264.c +++ linux-5.8.0/drivers/staging/media/hantro/hantro_h264.c @@ -327,7 +327,7 @@ */ dst_buf = hantro_get_dst_buf(ctx); buf = &dst_buf->vb2_buf; - dma_addr = vb2_dma_contig_plane_dma_addr(buf, 0); + dma_addr = hantro_get_dec_buf_addr(ctx, buf); } return dma_addr; --- linux-5.8.0.orig/drivers/staging/media/hantro/hantro_postproc.c +++ linux-5.8.0/drivers/staging/media/hantro/hantro_postproc.c @@ -118,7 +118,9 @@ unsigned int num_buffers = cap_queue->num_buffers; unsigned int i, buf_size; - buf_size = ctx->dst_fmt.plane_fmt[0].sizeimage; + buf_size = ctx->dst_fmt.plane_fmt[0].sizeimage + + hantro_h264_mv_size(ctx->dst_fmt.width, + ctx->dst_fmt.height); for (i = 0; i < num_buffers; ++i) { struct hantro_aux_buf *priv = &ctx->postproc.dec_q[i]; --- linux-5.8.0.orig/drivers/staging/media/hantro/hantro_v4l2.c +++ linux-5.8.0/drivers/staging/media/hantro/hantro_v4l2.c @@ -367,7 +367,7 @@ hantro_reset_fmt(raw_fmt, raw_vpu_fmt); raw_fmt->width = encoded_fmt->width; - raw_fmt->width = encoded_fmt->width; + raw_fmt->height = encoded_fmt->height; if (hantro_is_encoder_ctx(ctx)) hantro_set_fmt_out(ctx, raw_fmt); else --- linux-5.8.0.orig/drivers/staging/media/imx/imx-media-csc-scaler.c +++ linux-5.8.0/drivers/staging/media/imx/imx-media-csc-scaler.c @@ -869,11 +869,7 @@ struct ipu_csc_scaler_priv *priv = vdev_to_priv(vdev); struct video_device *vfd = priv->vdev.vfd; - mutex_lock(&priv->mutex); - video_unregister_device(vfd); - - mutex_unlock(&priv->mutex); } struct imx_media_video_dev * --- linux-5.8.0.orig/drivers/staging/media/imx/imx-media-dev.c +++ linux-5.8.0/drivers/staging/media/imx/imx-media-dev.c @@ -53,6 +53,7 @@ imxmd->m2m_vdev = imx_media_csc_scaler_device_init(imxmd); if (IS_ERR(imxmd->m2m_vdev)) { ret = PTR_ERR(imxmd->m2m_vdev); + imxmd->m2m_vdev = NULL; goto unlock; } @@ -107,10 +108,14 @@ v4l2_info(&imxmd->v4l2_dev, "Removing imx-media\n"); + if (imxmd->m2m_vdev) { + imx_media_csc_scaler_device_unregister(imxmd->m2m_vdev); + imxmd->m2m_vdev = NULL; + } + v4l2_async_notifier_unregister(&imxmd->notifier); imx_media_unregister_ipu_internal_subdevs(imxmd); v4l2_async_notifier_cleanup(&imxmd->notifier); - imx_media_csc_scaler_device_unregister(imxmd->m2m_vdev); media_device_unregister(&imxmd->md); v4l2_device_unregister(&imxmd->v4l2_dev); media_device_cleanup(&imxmd->md); --- linux-5.8.0.orig/drivers/staging/media/imx/imx7-media-csi.c +++ linux-5.8.0/drivers/staging/media/imx/imx7-media-csi.c @@ -499,6 +499,7 @@ struct v4l2_subdev_format *sink_fmt) { struct imx7_csi *csi = v4l2_get_subdevdata(sd); + struct media_entity *src; struct media_pad *pad; int ret; @@ -509,11 +510,21 @@ if (!csi->src_sd) return -EPIPE; + src = &csi->src_sd->entity; + + /* + * if the source is neither a CSI MUX or CSI-2 get the one directly + * upstream from this CSI + */ + if (src->function != MEDIA_ENT_F_VID_IF_BRIDGE && + src->function != MEDIA_ENT_F_VID_MUX) + src = &csi->sd.entity; + /* - * find the entity that is selected by the CSI mux. This is needed + * find the entity that is selected by the source. This is needed * to distinguish between a parallel or CSI-2 pipeline. */ - pad = imx_media_pipeline_pad(&csi->src_sd->entity, 0, 0, true); + pad = imx_media_pipeline_pad(src, 0, 0, true); if (!pad) return -ENODEV; @@ -1164,12 +1175,12 @@ struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier); struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK]; - /* The bound subdev must always be the CSI mux */ - if (WARN_ON(sd->entity.function != MEDIA_ENT_F_VID_MUX)) - return -ENXIO; - - /* Mark it as such via its group id */ - sd->grp_id = IMX_MEDIA_GRP_ID_CSI_MUX; + /* + * If the subdev is a video mux, it must be one of the CSI + * muxes. Mark it as such via its group id. + */ + if (sd->entity.function == MEDIA_ENT_F_VID_MUX) + sd->grp_id = IMX_MEDIA_GRP_ID_CSI_MUX; return v4l2_create_fwnode_links_to_pad(sd, sink); } --- linux-5.8.0.orig/drivers/staging/media/ipu3/ipu3-css-params.c +++ linux-5.8.0/drivers/staging/media/ipu3/ipu3-css-params.c @@ -159,7 +159,7 @@ memset(&cfg->scaler_coeffs_chroma, 0, sizeof(cfg->scaler_coeffs_chroma)); - memset(&cfg->scaler_coeffs_luma, 0, sizeof(*cfg->scaler_coeffs_luma)); + memset(&cfg->scaler_coeffs_luma, 0, sizeof(cfg->scaler_coeffs_luma)); do { phase_step_correction++; --- linux-5.8.0.orig/drivers/staging/media/phy-rockchip-dphy-rx0/phy-rockchip-dphy-rx0.c +++ linux-5.8.0/drivers/staging/media/phy-rockchip-dphy-rx0/phy-rockchip-dphy-rx0.c @@ -16,6 +16,7 @@ */ #include +#include #include #include #include --- linux-5.8.0.orig/drivers/staging/media/rkisp1/rkisp1-capture.c +++ linux-5.8.0/drivers/staging/media/rkisp1/rkisp1-capture.c @@ -967,6 +967,7 @@ ret = pm_runtime_get_sync(cap->rkisp1->dev); if (ret < 0) { + pm_runtime_put_noidle(cap->rkisp1->dev); dev_err(cap->rkisp1->dev, "power up failed %d\n", ret); goto err_destroy_dummy; } --- linux-5.8.0.orig/drivers/staging/media/rkisp1/rkisp1-common.h +++ linux-5.8.0/drivers/staging/media/rkisp1/rkisp1-common.h @@ -22,6 +22,9 @@ #include "rkisp1-regs.h" #include "uapi/rkisp1-config.h" +#define RKISP1_ISP_SD_SRC BIT(0) +#define RKISP1_ISP_SD_SINK BIT(1) + #define RKISP1_ISP_MAX_WIDTH 4032 #define RKISP1_ISP_MAX_HEIGHT 3024 #define RKISP1_ISP_MIN_WIDTH 32 --- linux-5.8.0.orig/drivers/staging/media/rkisp1/rkisp1-isp.c +++ linux-5.8.0/drivers/staging/media/rkisp1/rkisp1-isp.c @@ -23,10 +23,6 @@ #define RKISP1_ISP_DEV_NAME RKISP1_DRIVER_NAME "_isp" -#define RKISP1_DIR_SRC BIT(0) -#define RKISP1_DIR_SINK BIT(1) -#define RKISP1_DIR_SINK_SRC (RKISP1_DIR_SINK | RKISP1_DIR_SRC) - /* * NOTE: MIPI controller and input MUX are also configured in this file. * This is because ISP Subdev describes not only ISP submodule (input size, @@ -62,119 +58,119 @@ { .mbus_code = MEDIA_BUS_FMT_YUYV8_2X8, .pixel_enc = V4L2_PIXEL_ENC_YUV, - .direction = RKISP1_DIR_SRC, + .direction = RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SRGGB10_1X10, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW10, .bayer_pat = RKISP1_RAW_RGGB, .bus_width = 10, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SBGGR10_1X10, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW10, .bayer_pat = RKISP1_RAW_BGGR, .bus_width = 10, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGBRG10_1X10, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW10, .bayer_pat = RKISP1_RAW_GBRG, .bus_width = 10, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGRBG10_1X10, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW10, .bayer_pat = RKISP1_RAW_GRBG, .bus_width = 10, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SRGGB12_1X12, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW12, .bayer_pat = RKISP1_RAW_RGGB, .bus_width = 12, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SBGGR12_1X12, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW12, .bayer_pat = RKISP1_RAW_BGGR, .bus_width = 12, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGBRG12_1X12, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW12, .bayer_pat = RKISP1_RAW_GBRG, .bus_width = 12, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGRBG12_1X12, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW12, .bayer_pat = RKISP1_RAW_GRBG, .bus_width = 12, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SRGGB8_1X8, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW8, .bayer_pat = RKISP1_RAW_RGGB, .bus_width = 8, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SBGGR8_1X8, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW8, .bayer_pat = RKISP1_RAW_BGGR, .bus_width = 8, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGBRG8_1X8, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW8, .bayer_pat = RKISP1_RAW_GBRG, .bus_width = 8, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_SGRBG8_1X8, .pixel_enc = V4L2_PIXEL_ENC_BAYER, .mipi_dt = RKISP1_CIF_CSI2_DT_RAW8, .bayer_pat = RKISP1_RAW_GRBG, .bus_width = 8, - .direction = RKISP1_DIR_SINK_SRC, + .direction = RKISP1_ISP_SD_SINK | RKISP1_ISP_SD_SRC, }, { .mbus_code = MEDIA_BUS_FMT_YUYV8_1X16, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mipi_dt = RKISP1_CIF_CSI2_DT_YUV422_8b, .yuv_seq = RKISP1_CIF_ISP_ACQ_PROP_YCBYCR, .bus_width = 16, - .direction = RKISP1_DIR_SINK, + .direction = RKISP1_ISP_SD_SINK, }, { .mbus_code = MEDIA_BUS_FMT_YVYU8_1X16, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mipi_dt = RKISP1_CIF_CSI2_DT_YUV422_8b, .yuv_seq = RKISP1_CIF_ISP_ACQ_PROP_YCRYCB, .bus_width = 16, - .direction = RKISP1_DIR_SINK, + .direction = RKISP1_ISP_SD_SINK, }, { .mbus_code = MEDIA_BUS_FMT_UYVY8_1X16, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mipi_dt = RKISP1_CIF_CSI2_DT_YUV422_8b, .yuv_seq = RKISP1_CIF_ISP_ACQ_PROP_CBYCRY, .bus_width = 16, - .direction = RKISP1_DIR_SINK, + .direction = RKISP1_ISP_SD_SINK, }, { .mbus_code = MEDIA_BUS_FMT_VYUY8_1X16, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mipi_dt = RKISP1_CIF_CSI2_DT_YUV422_8b, .yuv_seq = RKISP1_CIF_ISP_ACQ_PROP_CRYCBY, .bus_width = 16, - .direction = RKISP1_DIR_SINK, + .direction = RKISP1_ISP_SD_SINK, }, }; @@ -574,9 +570,9 @@ int pos = 0; if (code->pad == RKISP1_ISP_PAD_SINK_VIDEO) { - dir = RKISP1_DIR_SINK; + dir = RKISP1_ISP_SD_SINK; } else if (code->pad == RKISP1_ISP_PAD_SOURCE_VIDEO) { - dir = RKISP1_DIR_SRC; + dir = RKISP1_ISP_SD_SRC; } else { if (code->index > 0) return -EINVAL; @@ -661,7 +657,7 @@ src_fmt->code = format->code; mbus_info = rkisp1_isp_mbus_info_get(src_fmt->code); - if (!mbus_info || !(mbus_info->direction & RKISP1_DIR_SRC)) { + if (!mbus_info || !(mbus_info->direction & RKISP1_ISP_SD_SRC)) { src_fmt->code = RKISP1_DEF_SRC_PAD_FMT; mbus_info = rkisp1_isp_mbus_info_get(src_fmt->code); } @@ -745,7 +741,7 @@ which); sink_fmt->code = format->code; mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); - if (!mbus_info || !(mbus_info->direction & RKISP1_DIR_SINK)) { + if (!mbus_info || !(mbus_info->direction & RKISP1_ISP_SD_SINK)) { sink_fmt->code = RKISP1_DEF_SINK_PAD_FMT; mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); } --- linux-5.8.0.orig/drivers/staging/media/rkisp1/rkisp1-params.c +++ linux-5.8.0/drivers/staging/media/rkisp1/rkisp1-params.c @@ -1297,7 +1297,6 @@ memset(hst.hist_weight, 0x01, sizeof(hst.hist_weight)); rkisp1_hst_config(params, &hst); rkisp1_param_set_bits(params, RKISP1_CIF_ISP_HIST_PROP, - ~RKISP1_CIF_ISP_HIST_PROP_MODE_MASK | rkisp1_hst_params_default_config.mode); /* set the range */ --- linux-5.8.0.orig/drivers/staging/media/rkisp1/rkisp1-resizer.c +++ linux-5.8.0/drivers/staging/media/rkisp1/rkisp1-resizer.c @@ -437,8 +437,8 @@ u32 pad = code->pad; int ret; - /* supported mbus codes are the same in isp sink pad */ - code->pad = RKISP1_ISP_PAD_SINK_VIDEO; + /* supported mbus codes are the same in isp video src pad */ + code->pad = RKISP1_ISP_PAD_SOURCE_VIDEO; ret = v4l2_subdev_call(&rsz->rkisp1->isp.sd, pad, enum_mbus_code, &dummy_cfg, code); @@ -542,7 +542,7 @@ which); sink_fmt->code = format->code; mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); - if (!mbus_info) { + if (!mbus_info || !(mbus_info->direction & RKISP1_ISP_SD_SRC)) { sink_fmt->code = RKISP1_DEF_FMT; mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); } @@ -553,11 +553,11 @@ src_fmt->code = sink_fmt->code; sink_fmt->width = clamp_t(u32, format->width, - rsz->config->min_rsz_width, - rsz->config->max_rsz_width); + RKISP1_ISP_MIN_WIDTH, + RKISP1_ISP_MAX_WIDTH); sink_fmt->height = clamp_t(u32, format->height, - rsz->config->min_rsz_height, - rsz->config->max_rsz_height); + RKISP1_ISP_MIN_HEIGHT, + RKISP1_ISP_MAX_HEIGHT); *format = *sink_fmt; --- linux-5.8.0.orig/drivers/staging/media/sunxi/cedrus/cedrus.c +++ linux-5.8.0/drivers/staging/media/sunxi/cedrus/cedrus.c @@ -96,6 +96,25 @@ .codec = CEDRUS_CODEC_H264, .required = false, }, + /* + * We only expose supported profiles information, + * and not levels as it's not clear what is supported + * for each hardware/core version. + * In any case, TRY/S_FMT will clamp the format resolution + * to the maximum supported. + */ + { + .cfg = { + .id = V4L2_CID_MPEG_VIDEO_H264_PROFILE, + .min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, + .def = V4L2_MPEG_VIDEO_H264_PROFILE_MAIN, + .max = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, + .menu_skip_mask = + BIT(V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED), + }, + .codec = CEDRUS_CODEC_H264, + .required = false, + }, { .cfg = { .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS, @@ -199,6 +218,7 @@ struct v4l2_ctrl *ctrl_test; unsigned int count; unsigned int i; + int ret = 0; list_for_each_entry(obj, &req->objects, list) { struct vb2_buffer *vb; @@ -243,12 +263,16 @@ if (!ctrl_test) { v4l2_info(&ctx->dev->v4l2_dev, "Missing required codec control\n"); - return -ENOENT; + ret = -ENOENT; + break; } } v4l2_ctrl_request_hdl_put(hdl); + if (ret) + return ret; + return vb2_request_validate(req); } --- linux-5.8.0.orig/drivers/staging/media/sunxi/cedrus/cedrus_video.c +++ linux-5.8.0/drivers/staging/media/sunxi/cedrus/cedrus_video.c @@ -454,8 +454,10 @@ if (V4L2_TYPE_IS_OUTPUT(vq->type)) { ret = pm_runtime_get_sync(dev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(dev->dev); goto err_cleanup; + } if (dev->dec_ops[ctx->current_codec]->start) { ret = dev->dec_ops[ctx->current_codec]->start(ctx); --- linux-5.8.0.orig/drivers/staging/most/sound/sound.c +++ linux-5.8.0/drivers/staging/most/sound/sound.c @@ -98,6 +98,8 @@ { unsigned int i = 0; + if (bytes < 2) + return; while (i < bytes - 2) { dest[i] = source[i + 2]; dest[i + 1] = source[i + 1]; --- linux-5.8.0.orig/drivers/staging/mt7621-dma/Makefile +++ linux-5.8.0/drivers/staging/mt7621-dma/Makefile @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_MTK_HSDMA) += mtk-hsdma.o +obj-$(CONFIG_MTK_HSDMA) += hsdma-mt7621.o ccflags-y += -I$(srctree)/drivers/dma --- linux-5.8.0.orig/drivers/staging/mt7621-dma/hsdma-mt7621.c +++ linux-5.8.0/drivers/staging/mt7621-dma/hsdma-mt7621.c @@ -0,0 +1,760 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2015, Michael Lee + * MTK HSDMA support + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "virt-dma.h" + +#define HSDMA_BASE_OFFSET 0x800 + +#define HSDMA_REG_TX_BASE 0x00 +#define HSDMA_REG_TX_CNT 0x04 +#define HSDMA_REG_TX_CTX 0x08 +#define HSDMA_REG_TX_DTX 0x0c +#define HSDMA_REG_RX_BASE 0x100 +#define HSDMA_REG_RX_CNT 0x104 +#define HSDMA_REG_RX_CRX 0x108 +#define HSDMA_REG_RX_DRX 0x10c +#define HSDMA_REG_INFO 0x200 +#define HSDMA_REG_GLO_CFG 0x204 +#define HSDMA_REG_RST_CFG 0x208 +#define HSDMA_REG_DELAY_INT 0x20c +#define HSDMA_REG_FREEQ_THRES 0x210 +#define HSDMA_REG_INT_STATUS 0x220 +#define HSDMA_REG_INT_MASK 0x228 +#define HSDMA_REG_SCH_Q01 0x280 +#define HSDMA_REG_SCH_Q23 0x284 + +#define HSDMA_DESCS_MAX 0xfff +#define HSDMA_DESCS_NUM 8 +#define HSDMA_DESCS_MASK (HSDMA_DESCS_NUM - 1) +#define HSDMA_NEXT_DESC(x) (((x) + 1) & HSDMA_DESCS_MASK) + +/* HSDMA_REG_INFO */ +#define HSDMA_INFO_INDEX_MASK 0xf +#define HSDMA_INFO_INDEX_SHIFT 24 +#define HSDMA_INFO_BASE_MASK 0xff +#define HSDMA_INFO_BASE_SHIFT 16 +#define HSDMA_INFO_RX_MASK 0xff +#define HSDMA_INFO_RX_SHIFT 8 +#define HSDMA_INFO_TX_MASK 0xff +#define HSDMA_INFO_TX_SHIFT 0 + +/* HSDMA_REG_GLO_CFG */ +#define HSDMA_GLO_TX_2B_OFFSET BIT(31) +#define HSDMA_GLO_CLK_GATE BIT(30) +#define HSDMA_GLO_BYTE_SWAP BIT(29) +#define HSDMA_GLO_MULTI_DMA BIT(10) +#define HSDMA_GLO_TWO_BUF BIT(9) +#define HSDMA_GLO_32B_DESC BIT(8) +#define HSDMA_GLO_BIG_ENDIAN BIT(7) +#define HSDMA_GLO_TX_DONE BIT(6) +#define HSDMA_GLO_BT_MASK 0x3 +#define HSDMA_GLO_BT_SHIFT 4 +#define HSDMA_GLO_RX_BUSY BIT(3) +#define HSDMA_GLO_RX_DMA BIT(2) +#define HSDMA_GLO_TX_BUSY BIT(1) +#define HSDMA_GLO_TX_DMA BIT(0) + +#define HSDMA_BT_SIZE_16BYTES (0 << HSDMA_GLO_BT_SHIFT) +#define HSDMA_BT_SIZE_32BYTES (1 << HSDMA_GLO_BT_SHIFT) +#define HSDMA_BT_SIZE_64BYTES (2 << HSDMA_GLO_BT_SHIFT) +#define HSDMA_BT_SIZE_128BYTES (3 << HSDMA_GLO_BT_SHIFT) + +#define HSDMA_GLO_DEFAULT (HSDMA_GLO_MULTI_DMA | \ + HSDMA_GLO_RX_DMA | HSDMA_GLO_TX_DMA | HSDMA_BT_SIZE_32BYTES) + +/* HSDMA_REG_RST_CFG */ +#define HSDMA_RST_RX_SHIFT 16 +#define HSDMA_RST_TX_SHIFT 0 + +/* HSDMA_REG_DELAY_INT */ +#define HSDMA_DELAY_INT_EN BIT(15) +#define HSDMA_DELAY_PEND_OFFSET 8 +#define HSDMA_DELAY_TIME_OFFSET 0 +#define HSDMA_DELAY_TX_OFFSET 16 +#define HSDMA_DELAY_RX_OFFSET 0 + +#define HSDMA_DELAY_INIT(x) (HSDMA_DELAY_INT_EN | \ + ((x) << HSDMA_DELAY_PEND_OFFSET)) +#define HSDMA_DELAY(x) ((HSDMA_DELAY_INIT(x) << \ + HSDMA_DELAY_TX_OFFSET) | HSDMA_DELAY_INIT(x)) + +/* HSDMA_REG_INT_STATUS */ +#define HSDMA_INT_DELAY_RX_COH BIT(31) +#define HSDMA_INT_DELAY_RX_INT BIT(30) +#define HSDMA_INT_DELAY_TX_COH BIT(29) +#define HSDMA_INT_DELAY_TX_INT BIT(28) +#define HSDMA_INT_RX_MASK 0x3 +#define HSDMA_INT_RX_SHIFT 16 +#define HSDMA_INT_RX_Q0 BIT(16) +#define HSDMA_INT_TX_MASK 0xf +#define HSDMA_INT_TX_SHIFT 0 +#define HSDMA_INT_TX_Q0 BIT(0) + +/* tx/rx dma desc flags */ +#define HSDMA_PLEN_MASK 0x3fff +#define HSDMA_DESC_DONE BIT(31) +#define HSDMA_DESC_LS0 BIT(30) +#define HSDMA_DESC_PLEN0(_x) (((_x) & HSDMA_PLEN_MASK) << 16) +#define HSDMA_DESC_TAG BIT(15) +#define HSDMA_DESC_LS1 BIT(14) +#define HSDMA_DESC_PLEN1(_x) ((_x) & HSDMA_PLEN_MASK) + +/* align 4 bytes */ +#define HSDMA_ALIGN_SIZE 3 +/* align size 128bytes */ +#define HSDMA_MAX_PLEN 0x3f80 + +struct hsdma_desc { + u32 addr0; + u32 flags; + u32 addr1; + u32 unused; +}; + +struct mtk_hsdma_sg { + dma_addr_t src_addr; + dma_addr_t dst_addr; + u32 len; +}; + +struct mtk_hsdma_desc { + struct virt_dma_desc vdesc; + unsigned int num_sgs; + struct mtk_hsdma_sg sg[1]; +}; + +struct mtk_hsdma_chan { + struct virt_dma_chan vchan; + unsigned int id; + dma_addr_t desc_addr; + int tx_idx; + int rx_idx; + struct hsdma_desc *tx_ring; + struct hsdma_desc *rx_ring; + struct mtk_hsdma_desc *desc; + unsigned int next_sg; +}; + +struct mtk_hsdam_engine { + struct dma_device ddev; + struct device_dma_parameters dma_parms; + void __iomem *base; + struct tasklet_struct task; + volatile unsigned long chan_issued; + + struct mtk_hsdma_chan chan[1]; +}; + +static inline struct mtk_hsdam_engine *mtk_hsdma_chan_get_dev( + struct mtk_hsdma_chan *chan) +{ + return container_of(chan->vchan.chan.device, struct mtk_hsdam_engine, + ddev); +} + +static inline struct mtk_hsdma_chan *to_mtk_hsdma_chan(struct dma_chan *c) +{ + return container_of(c, struct mtk_hsdma_chan, vchan.chan); +} + +static inline struct mtk_hsdma_desc *to_mtk_hsdma_desc( + struct virt_dma_desc *vdesc) +{ + return container_of(vdesc, struct mtk_hsdma_desc, vdesc); +} + +static inline u32 mtk_hsdma_read(struct mtk_hsdam_engine *hsdma, u32 reg) +{ + return readl(hsdma->base + reg); +} + +static inline void mtk_hsdma_write(struct mtk_hsdam_engine *hsdma, + unsigned int reg, u32 val) +{ + writel(val, hsdma->base + reg); +} + +static void mtk_hsdma_reset_chan(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + chan->tx_idx = 0; + chan->rx_idx = HSDMA_DESCS_NUM - 1; + + mtk_hsdma_write(hsdma, HSDMA_REG_TX_CTX, chan->tx_idx); + mtk_hsdma_write(hsdma, HSDMA_REG_RX_CRX, chan->rx_idx); + + mtk_hsdma_write(hsdma, HSDMA_REG_RST_CFG, + 0x1 << (chan->id + HSDMA_RST_TX_SHIFT)); + mtk_hsdma_write(hsdma, HSDMA_REG_RST_CFG, + 0x1 << (chan->id + HSDMA_RST_RX_SHIFT)); +} + +static void hsdma_dump_reg(struct mtk_hsdam_engine *hsdma) +{ + dev_dbg(hsdma->ddev.dev, "tbase %08x, tcnt %08x, " + "tctx %08x, tdtx: %08x, rbase %08x, " + "rcnt %08x, rctx %08x, rdtx %08x\n", + mtk_hsdma_read(hsdma, HSDMA_REG_TX_BASE), + mtk_hsdma_read(hsdma, HSDMA_REG_TX_CNT), + mtk_hsdma_read(hsdma, HSDMA_REG_TX_CTX), + mtk_hsdma_read(hsdma, HSDMA_REG_TX_DTX), + mtk_hsdma_read(hsdma, HSDMA_REG_RX_BASE), + mtk_hsdma_read(hsdma, HSDMA_REG_RX_CNT), + mtk_hsdma_read(hsdma, HSDMA_REG_RX_CRX), + mtk_hsdma_read(hsdma, HSDMA_REG_RX_DRX)); + + dev_dbg(hsdma->ddev.dev, "info %08x, glo %08x, delay %08x, intr_stat %08x, intr_mask %08x\n", + mtk_hsdma_read(hsdma, HSDMA_REG_INFO), + mtk_hsdma_read(hsdma, HSDMA_REG_GLO_CFG), + mtk_hsdma_read(hsdma, HSDMA_REG_DELAY_INT), + mtk_hsdma_read(hsdma, HSDMA_REG_INT_STATUS), + mtk_hsdma_read(hsdma, HSDMA_REG_INT_MASK)); +} + +static void hsdma_dump_desc(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + struct hsdma_desc *tx_desc; + struct hsdma_desc *rx_desc; + int i; + + dev_dbg(hsdma->ddev.dev, "tx idx: %d, rx idx: %d\n", + chan->tx_idx, chan->rx_idx); + + for (i = 0; i < HSDMA_DESCS_NUM; i++) { + tx_desc = &chan->tx_ring[i]; + rx_desc = &chan->rx_ring[i]; + + dev_dbg(hsdma->ddev.dev, "%d tx addr0: %08x, flags %08x, " + "tx addr1: %08x, rx addr0 %08x, flags %08x\n", + i, tx_desc->addr0, tx_desc->flags, + tx_desc->addr1, rx_desc->addr0, rx_desc->flags); + } +} + +static void mtk_hsdma_reset(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + int i; + + /* disable dma */ + mtk_hsdma_write(hsdma, HSDMA_REG_GLO_CFG, 0); + + /* disable intr */ + mtk_hsdma_write(hsdma, HSDMA_REG_INT_MASK, 0); + + /* init desc value */ + for (i = 0; i < HSDMA_DESCS_NUM; i++) { + chan->tx_ring[i].addr0 = 0; + chan->tx_ring[i].flags = HSDMA_DESC_LS0 | HSDMA_DESC_DONE; + } + for (i = 0; i < HSDMA_DESCS_NUM; i++) { + chan->rx_ring[i].addr0 = 0; + chan->rx_ring[i].flags = 0; + } + + /* reset */ + mtk_hsdma_reset_chan(hsdma, chan); + + /* enable intr */ + mtk_hsdma_write(hsdma, HSDMA_REG_INT_MASK, HSDMA_INT_RX_Q0); + + /* enable dma */ + mtk_hsdma_write(hsdma, HSDMA_REG_GLO_CFG, HSDMA_GLO_DEFAULT); +} + +static int mtk_hsdma_terminate_all(struct dma_chan *c) +{ + struct mtk_hsdma_chan *chan = to_mtk_hsdma_chan(c); + struct mtk_hsdam_engine *hsdma = mtk_hsdma_chan_get_dev(chan); + unsigned long timeout; + LIST_HEAD(head); + + spin_lock_bh(&chan->vchan.lock); + chan->desc = NULL; + clear_bit(chan->id, &hsdma->chan_issued); + vchan_get_all_descriptors(&chan->vchan, &head); + spin_unlock_bh(&chan->vchan.lock); + + vchan_dma_desc_free_list(&chan->vchan, &head); + + /* wait dma transfer complete */ + timeout = jiffies + msecs_to_jiffies(2000); + while (mtk_hsdma_read(hsdma, HSDMA_REG_GLO_CFG) & + (HSDMA_GLO_RX_BUSY | HSDMA_GLO_TX_BUSY)) { + if (time_after_eq(jiffies, timeout)) { + hsdma_dump_desc(hsdma, chan); + mtk_hsdma_reset(hsdma, chan); + dev_err(hsdma->ddev.dev, "timeout, reset it\n"); + break; + } + cpu_relax(); + } + + return 0; +} + +static int mtk_hsdma_start_transfer(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + dma_addr_t src, dst; + size_t len, tlen; + struct hsdma_desc *tx_desc, *rx_desc; + struct mtk_hsdma_sg *sg; + unsigned int i; + int rx_idx; + + sg = &chan->desc->sg[0]; + len = sg->len; + chan->desc->num_sgs = DIV_ROUND_UP(len, HSDMA_MAX_PLEN); + + /* tx desc */ + src = sg->src_addr; + for (i = 0; i < chan->desc->num_sgs; i++) { + tx_desc = &chan->tx_ring[chan->tx_idx]; + + if (len > HSDMA_MAX_PLEN) + tlen = HSDMA_MAX_PLEN; + else + tlen = len; + + if (i & 0x1) { + tx_desc->addr1 = src; + tx_desc->flags |= HSDMA_DESC_PLEN1(tlen); + } else { + tx_desc->addr0 = src; + tx_desc->flags = HSDMA_DESC_PLEN0(tlen); + + /* update index */ + chan->tx_idx = HSDMA_NEXT_DESC(chan->tx_idx); + } + + src += tlen; + len -= tlen; + } + if (i & 0x1) + tx_desc->flags |= HSDMA_DESC_LS0; + else + tx_desc->flags |= HSDMA_DESC_LS1; + + /* rx desc */ + rx_idx = HSDMA_NEXT_DESC(chan->rx_idx); + len = sg->len; + dst = sg->dst_addr; + for (i = 0; i < chan->desc->num_sgs; i++) { + rx_desc = &chan->rx_ring[rx_idx]; + if (len > HSDMA_MAX_PLEN) + tlen = HSDMA_MAX_PLEN; + else + tlen = len; + + rx_desc->addr0 = dst; + rx_desc->flags = HSDMA_DESC_PLEN0(tlen); + + dst += tlen; + len -= tlen; + + /* update index */ + rx_idx = HSDMA_NEXT_DESC(rx_idx); + } + + /* make sure desc and index all up to date */ + wmb(); + mtk_hsdma_write(hsdma, HSDMA_REG_TX_CTX, chan->tx_idx); + + return 0; +} + +static int gdma_next_desc(struct mtk_hsdma_chan *chan) +{ + struct virt_dma_desc *vdesc; + + vdesc = vchan_next_desc(&chan->vchan); + if (!vdesc) { + chan->desc = NULL; + return 0; + } + chan->desc = to_mtk_hsdma_desc(vdesc); + chan->next_sg = 0; + + return 1; +} + +static void mtk_hsdma_chan_done(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + struct mtk_hsdma_desc *desc; + int chan_issued; + + chan_issued = 0; + spin_lock_bh(&chan->vchan.lock); + desc = chan->desc; + if (likely(desc)) { + if (chan->next_sg == desc->num_sgs) { + list_del(&desc->vdesc.node); + vchan_cookie_complete(&desc->vdesc); + chan_issued = gdma_next_desc(chan); + } + } else { + dev_dbg(hsdma->ddev.dev, "no desc to complete\n"); + } + + if (chan_issued) + set_bit(chan->id, &hsdma->chan_issued); + spin_unlock_bh(&chan->vchan.lock); +} + +static irqreturn_t mtk_hsdma_irq(int irq, void *devid) +{ + struct mtk_hsdam_engine *hsdma = devid; + u32 status; + + status = mtk_hsdma_read(hsdma, HSDMA_REG_INT_STATUS); + if (unlikely(!status)) + return IRQ_NONE; + + if (likely(status & HSDMA_INT_RX_Q0)) + tasklet_schedule(&hsdma->task); + else + dev_dbg(hsdma->ddev.dev, "unhandle irq status %08x\n", status); + /* clean intr bits */ + mtk_hsdma_write(hsdma, HSDMA_REG_INT_STATUS, status); + + return IRQ_HANDLED; +} + +static void mtk_hsdma_issue_pending(struct dma_chan *c) +{ + struct mtk_hsdma_chan *chan = to_mtk_hsdma_chan(c); + struct mtk_hsdam_engine *hsdma = mtk_hsdma_chan_get_dev(chan); + + spin_lock_bh(&chan->vchan.lock); + if (vchan_issue_pending(&chan->vchan) && !chan->desc) { + if (gdma_next_desc(chan)) { + set_bit(chan->id, &hsdma->chan_issued); + tasklet_schedule(&hsdma->task); + } else { + dev_dbg(hsdma->ddev.dev, "no desc to issue\n"); + } + } + spin_unlock_bh(&chan->vchan.lock); +} + +static struct dma_async_tx_descriptor *mtk_hsdma_prep_dma_memcpy( + struct dma_chan *c, dma_addr_t dest, dma_addr_t src, + size_t len, unsigned long flags) +{ + struct mtk_hsdma_chan *chan = to_mtk_hsdma_chan(c); + struct mtk_hsdma_desc *desc; + + if (len <= 0) + return NULL; + + desc = kzalloc(sizeof(*desc), GFP_ATOMIC); + if (!desc) { + dev_err(c->device->dev, "alloc memcpy decs error\n"); + return NULL; + } + + desc->sg[0].src_addr = src; + desc->sg[0].dst_addr = dest; + desc->sg[0].len = len; + + return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); +} + +static enum dma_status mtk_hsdma_tx_status(struct dma_chan *c, + dma_cookie_t cookie, + struct dma_tx_state *state) +{ + return dma_cookie_status(c, cookie, state); +} + +static void mtk_hsdma_free_chan_resources(struct dma_chan *c) +{ + vchan_free_chan_resources(to_virt_chan(c)); +} + +static void mtk_hsdma_desc_free(struct virt_dma_desc *vdesc) +{ + kfree(container_of(vdesc, struct mtk_hsdma_desc, vdesc)); +} + +static void mtk_hsdma_tx(struct mtk_hsdam_engine *hsdma) +{ + struct mtk_hsdma_chan *chan; + + if (test_and_clear_bit(0, &hsdma->chan_issued)) { + chan = &hsdma->chan[0]; + if (chan->desc) + mtk_hsdma_start_transfer(hsdma, chan); + else + dev_dbg(hsdma->ddev.dev, "chan 0 no desc to issue\n"); + } +} + +static void mtk_hsdma_rx(struct mtk_hsdam_engine *hsdma) +{ + struct mtk_hsdma_chan *chan; + int next_idx, drx_idx, cnt; + + chan = &hsdma->chan[0]; + next_idx = HSDMA_NEXT_DESC(chan->rx_idx); + drx_idx = mtk_hsdma_read(hsdma, HSDMA_REG_RX_DRX); + + cnt = (drx_idx - next_idx) & HSDMA_DESCS_MASK; + if (!cnt) + return; + + chan->next_sg += cnt; + chan->rx_idx = (chan->rx_idx + cnt) & HSDMA_DESCS_MASK; + + /* update rx crx */ + wmb(); + mtk_hsdma_write(hsdma, HSDMA_REG_RX_CRX, chan->rx_idx); + + mtk_hsdma_chan_done(hsdma, chan); +} + +static void mtk_hsdma_tasklet(unsigned long arg) +{ + struct mtk_hsdam_engine *hsdma = (struct mtk_hsdam_engine *)arg; + + mtk_hsdma_rx(hsdma); + mtk_hsdma_tx(hsdma); +} + +static int mtk_hsdam_alloc_desc(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + int i; + + chan->tx_ring = dma_alloc_coherent(hsdma->ddev.dev, + 2 * HSDMA_DESCS_NUM * + sizeof(*chan->tx_ring), + &chan->desc_addr, GFP_ATOMIC | __GFP_ZERO); + if (!chan->tx_ring) + goto no_mem; + + chan->rx_ring = &chan->tx_ring[HSDMA_DESCS_NUM]; + + /* init tx ring value */ + for (i = 0; i < HSDMA_DESCS_NUM; i++) + chan->tx_ring[i].flags = HSDMA_DESC_LS0 | HSDMA_DESC_DONE; + + return 0; +no_mem: + return -ENOMEM; +} + +static void mtk_hsdam_free_desc(struct mtk_hsdam_engine *hsdma, + struct mtk_hsdma_chan *chan) +{ + if (chan->tx_ring) { + dma_free_coherent(hsdma->ddev.dev, + 2 * HSDMA_DESCS_NUM * sizeof(*chan->tx_ring), + chan->tx_ring, chan->desc_addr); + chan->tx_ring = NULL; + chan->rx_ring = NULL; + } +} + +static int mtk_hsdma_init(struct mtk_hsdam_engine *hsdma) +{ + struct mtk_hsdma_chan *chan; + int ret; + u32 reg; + + /* init desc */ + chan = &hsdma->chan[0]; + ret = mtk_hsdam_alloc_desc(hsdma, chan); + if (ret) + return ret; + + /* tx */ + mtk_hsdma_write(hsdma, HSDMA_REG_TX_BASE, chan->desc_addr); + mtk_hsdma_write(hsdma, HSDMA_REG_TX_CNT, HSDMA_DESCS_NUM); + /* rx */ + mtk_hsdma_write(hsdma, HSDMA_REG_RX_BASE, chan->desc_addr + + (sizeof(struct hsdma_desc) * HSDMA_DESCS_NUM)); + mtk_hsdma_write(hsdma, HSDMA_REG_RX_CNT, HSDMA_DESCS_NUM); + /* reset */ + mtk_hsdma_reset_chan(hsdma, chan); + + /* enable rx intr */ + mtk_hsdma_write(hsdma, HSDMA_REG_INT_MASK, HSDMA_INT_RX_Q0); + + /* enable dma */ + mtk_hsdma_write(hsdma, HSDMA_REG_GLO_CFG, HSDMA_GLO_DEFAULT); + + /* hardware info */ + reg = mtk_hsdma_read(hsdma, HSDMA_REG_INFO); + dev_info(hsdma->ddev.dev, "rx: %d, tx: %d\n", + (reg >> HSDMA_INFO_RX_SHIFT) & HSDMA_INFO_RX_MASK, + (reg >> HSDMA_INFO_TX_SHIFT) & HSDMA_INFO_TX_MASK); + + hsdma_dump_reg(hsdma); + + return ret; +} + +static void mtk_hsdma_uninit(struct mtk_hsdam_engine *hsdma) +{ + struct mtk_hsdma_chan *chan; + + /* disable dma */ + mtk_hsdma_write(hsdma, HSDMA_REG_GLO_CFG, 0); + + /* disable intr */ + mtk_hsdma_write(hsdma, HSDMA_REG_INT_MASK, 0); + + /* free desc */ + chan = &hsdma->chan[0]; + mtk_hsdam_free_desc(hsdma, chan); + + /* tx */ + mtk_hsdma_write(hsdma, HSDMA_REG_TX_BASE, 0); + mtk_hsdma_write(hsdma, HSDMA_REG_TX_CNT, 0); + /* rx */ + mtk_hsdma_write(hsdma, HSDMA_REG_RX_BASE, 0); + mtk_hsdma_write(hsdma, HSDMA_REG_RX_CNT, 0); + /* reset */ + mtk_hsdma_reset_chan(hsdma, chan); +} + +static const struct of_device_id mtk_hsdma_of_match[] = { + { .compatible = "mediatek,mt7621-hsdma" }, + { }, +}; + +static int mtk_hsdma_probe(struct platform_device *pdev) +{ + const struct of_device_id *match; + struct mtk_hsdma_chan *chan; + struct mtk_hsdam_engine *hsdma; + struct dma_device *dd; + int ret; + int irq; + void __iomem *base; + + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (ret) + return ret; + + match = of_match_device(mtk_hsdma_of_match, &pdev->dev); + if (!match) + return -EINVAL; + + hsdma = devm_kzalloc(&pdev->dev, sizeof(*hsdma), GFP_KERNEL); + if (!hsdma) + return -EINVAL; + + base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return PTR_ERR(base); + hsdma->base = base + HSDMA_BASE_OFFSET; + tasklet_init(&hsdma->task, mtk_hsdma_tasklet, (unsigned long)hsdma); + + irq = platform_get_irq(pdev, 0); + if (irq < 0) + return -EINVAL; + ret = devm_request_irq(&pdev->dev, irq, mtk_hsdma_irq, + 0, dev_name(&pdev->dev), hsdma); + if (ret) { + dev_err(&pdev->dev, "failed to request irq\n"); + return ret; + } + + device_reset(&pdev->dev); + + dd = &hsdma->ddev; + dma_cap_set(DMA_MEMCPY, dd->cap_mask); + dd->copy_align = HSDMA_ALIGN_SIZE; + dd->device_free_chan_resources = mtk_hsdma_free_chan_resources; + dd->device_prep_dma_memcpy = mtk_hsdma_prep_dma_memcpy; + dd->device_terminate_all = mtk_hsdma_terminate_all; + dd->device_tx_status = mtk_hsdma_tx_status; + dd->device_issue_pending = mtk_hsdma_issue_pending; + dd->dev = &pdev->dev; + dd->dev->dma_parms = &hsdma->dma_parms; + dma_set_max_seg_size(dd->dev, HSDMA_MAX_PLEN); + INIT_LIST_HEAD(&dd->channels); + + chan = &hsdma->chan[0]; + chan->id = 0; + chan->vchan.desc_free = mtk_hsdma_desc_free; + vchan_init(&chan->vchan, dd); + + /* init hardware */ + ret = mtk_hsdma_init(hsdma); + if (ret) { + dev_err(&pdev->dev, "failed to alloc ring descs\n"); + return ret; + } + + ret = dma_async_device_register(dd); + if (ret) { + dev_err(&pdev->dev, "failed to register dma device\n"); + goto err_uninit_hsdma; + } + + ret = of_dma_controller_register(pdev->dev.of_node, + of_dma_xlate_by_chan_id, hsdma); + if (ret) { + dev_err(&pdev->dev, "failed to register of dma controller\n"); + goto err_unregister; + } + + platform_set_drvdata(pdev, hsdma); + + return 0; + +err_unregister: + dma_async_device_unregister(dd); +err_uninit_hsdma: + mtk_hsdma_uninit(hsdma); + return ret; +} + +static int mtk_hsdma_remove(struct platform_device *pdev) +{ + struct mtk_hsdam_engine *hsdma = platform_get_drvdata(pdev); + + mtk_hsdma_uninit(hsdma); + + of_dma_controller_free(pdev->dev.of_node); + dma_async_device_unregister(&hsdma->ddev); + + return 0; +} + +static struct platform_driver mtk_hsdma_driver = { + .probe = mtk_hsdma_probe, + .remove = mtk_hsdma_remove, + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = mtk_hsdma_of_match, + }, +}; +module_platform_driver(mtk_hsdma_driver); + +MODULE_AUTHOR("Michael Lee "); +MODULE_DESCRIPTION("MTK HSDMA driver"); +MODULE_LICENSE("GPL v2"); --- linux-5.8.0.orig/drivers/staging/mt7621-pci/pci-mt7621.c +++ linux-5.8.0/drivers/staging/mt7621-pci/pci-mt7621.c @@ -653,16 +653,11 @@ return 0; } -static int mt7621_pcie_request_resources(struct mt7621_pcie *pcie, - struct list_head *res) +static void mt7621_pcie_add_resources(struct mt7621_pcie *pcie, + struct list_head *res) { - struct device *dev = pcie->dev; - pci_add_resource_offset(res, &pcie->io, pcie->offset.io); pci_add_resource_offset(res, &pcie->mem, pcie->offset.mem); - pci_add_resource(res, &pcie->busn); - - return devm_request_pci_bus_resources(dev, res); } static int mt7621_pcie_register_host(struct pci_host_bridge *host, @@ -738,11 +733,7 @@ setup_cm_memory_region(pcie); - err = mt7621_pcie_request_resources(pcie, &res); - if (err) { - dev_err(dev, "Error requesting resources\n"); - return err; - } + mt7621_pcie_add_resources(pcie, &res); err = mt7621_pcie_register_host(bridge, &res); if (err) { --- linux-5.8.0.orig/drivers/staging/octeon/ethernet-mdio.c +++ linux-5.8.0/drivers/staging/octeon/ethernet-mdio.c @@ -147,12 +147,6 @@ phy_node = of_parse_phandle(priv->of_node, "phy-handle", 0); if (!phy_node && of_phy_is_fixed_link(priv->of_node)) { - int rc; - - rc = of_phy_register_fixed_link(priv->of_node); - if (rc) - return rc; - phy_node = of_node_get(priv->of_node); } if (!phy_node) --- linux-5.8.0.orig/drivers/staging/octeon/ethernet-rx.c +++ linux-5.8.0/drivers/staging/octeon/ethernet-rx.c @@ -69,15 +69,17 @@ else port = work->word1.cn38xx.ipprt; - if ((work->word2.snoip.err_code == 10) && (work->word1.len <= 64)) { + if ((work->word2.snoip.err_code == 10) && (work->word1.len <= 64)) /* * Ignore length errors on min size packets. Some * equipment incorrectly pads packets to 64+4FCS * instead of 60+4FCS. Note these packets still get * counted as frame errors. */ - } else if (work->word2.snoip.err_code == 5 || - work->word2.snoip.err_code == 7) { + return 0; + + if (work->word2.snoip.err_code == 5 || + work->word2.snoip.err_code == 7) { /* * We received a packet with either an alignment error * or a FCS error. This may be signalling that we are @@ -108,7 +110,10 @@ /* Port received 0xd5 preamble */ work->packet_ptr.s.addr += i + 1; work->word1.len -= i + 5; - } else if ((*ptr & 0xf) == 0xd) { + return 0; + } + + if ((*ptr & 0xf) == 0xd) { /* Port received 0xd preamble */ work->packet_ptr.s.addr += i; work->word1.len -= i + 4; @@ -118,21 +123,20 @@ ((*(ptr + 1) & 0xf) << 4); ptr++; } - } else { - printk_ratelimited("Port %d unknown preamble, packet dropped\n", - port); - cvm_oct_free_work(work); - return 1; + return 0; } + + printk_ratelimited("Port %d unknown preamble, packet dropped\n", + port); + cvm_oct_free_work(work); + return 1; } - } else { - printk_ratelimited("Port %d receive error code %d, packet dropped\n", - port, work->word2.snoip.err_code); - cvm_oct_free_work(work); - return 1; } - return 0; + printk_ratelimited("Port %d receive error code %d, packet dropped\n", + port, work->word2.snoip.err_code); + cvm_oct_free_work(work); + return 1; } static void copy_segments_to_skb(struct cvmx_wqe *work, struct sk_buff *skb) --- linux-5.8.0.orig/drivers/staging/octeon/ethernet.c +++ linux-5.8.0/drivers/staging/octeon/ethernet.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -894,6 +895,14 @@ break; } + if (priv->of_node && of_phy_is_fixed_link(priv->of_node)) { + if (of_phy_register_fixed_link(priv->of_node)) { + netdev_err(dev, "Failed to register fixed link for interface %d, port %d\n", + interface, priv->port); + dev->netdev_ops = NULL; + } + } + if (!dev->netdev_ops) { free_netdev(dev); } else if (register_netdev(dev) < 0) { --- linux-5.8.0.orig/drivers/staging/ralink-gdma/Kconfig +++ linux-5.8.0/drivers/staging/ralink-gdma/Kconfig @@ -2,6 +2,7 @@ config DMA_RALINK tristate "RALINK DMA support" depends on RALINK && !SOC_RT288X + depends on DMADEVICES select DMA_ENGINE select DMA_VIRTUAL_CHANNELS --- linux-5.8.0.orig/drivers/staging/rtl8188eu/core/rtw_ap.c +++ linux-5.8.0/drivers/staging/rtl8188eu/core/rtw_ap.c @@ -791,6 +791,7 @@ p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SSID_IE_, &ie_len, pbss_network->ie_length - _BEACON_IE_OFFSET_); if (p && ie_len > 0) { + ie_len = min_t(int, ie_len, sizeof(pbss_network->ssid.ssid)); memset(&pbss_network->ssid, 0, sizeof(struct ndis_802_11_ssid)); memcpy(pbss_network->ssid.ssid, p + 2, ie_len); pbss_network->ssid.ssid_length = ie_len; @@ -811,6 +812,7 @@ p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &ie_len, pbss_network->ie_length - _BEACON_IE_OFFSET_); if (p) { + ie_len = min_t(int, ie_len, NDIS_802_11_LENGTH_RATES_EX); memcpy(supportRate, p + 2, ie_len); supportRateNum = ie_len; } @@ -819,6 +821,8 @@ p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _EXT_SUPPORTEDRATES_IE_, &ie_len, pbss_network->ie_length - _BEACON_IE_OFFSET_); if (p) { + ie_len = min_t(int, ie_len, + NDIS_802_11_LENGTH_RATES_EX - supportRateNum); memcpy(supportRate + supportRateNum, p + 2, ie_len); supportRateNum += ie_len; } @@ -934,6 +938,7 @@ pht_cap->mcs.rx_mask[0] = 0xff; pht_cap->mcs.rx_mask[1] = 0x0; + ie_len = min_t(int, ie_len, sizeof(pmlmepriv->htpriv.ht_cap)); memcpy(&pmlmepriv->htpriv.ht_cap, p + 2, ie_len); } --- linux-5.8.0.orig/drivers/staging/rtl8188eu/core/rtw_mlme.c +++ linux-5.8.0/drivers/staging/rtl8188eu/core/rtw_mlme.c @@ -1729,9 +1729,11 @@ if ((ndisauthmode == Ndis802_11AuthModeWPA) || (ndisauthmode == Ndis802_11AuthModeWPAPSK)) authmode = _WPA_IE_ID_; - if ((ndisauthmode == Ndis802_11AuthModeWPA2) || + else if ((ndisauthmode == Ndis802_11AuthModeWPA2) || (ndisauthmode == Ndis802_11AuthModeWPA2PSK)) authmode = _WPA2_IE_ID_; + else + authmode = 0x0; if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { memcpy(out_ie + ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len); --- linux-5.8.0.orig/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c +++ linux-5.8.0/drivers/staging/rtl8188eu/os_dep/ioctl_linux.c @@ -1144,9 +1144,11 @@ break; } sec_len = *(pos++); len -= 1; - if (sec_len > 0 && sec_len <= len) { + if (sec_len > 0 && + sec_len <= len && + sec_len <= 32) { ssid[ssid_index].ssid_length = sec_len; - memcpy(ssid[ssid_index].ssid, pos, ssid[ssid_index].ssid_length); + memcpy(ssid[ssid_index].ssid, pos, sec_len); ssid_index++; } pos += sec_len; --- linux-5.8.0.orig/drivers/staging/rtl8188eu/os_dep/usb_intf.c +++ linux-5.8.0/drivers/staging/rtl8188eu/os_dep/usb_intf.c @@ -41,6 +41,7 @@ {USB_DEVICE(0x2357, 0x0111)}, /* TP-Link TL-WN727N v5.21 */ {USB_DEVICE(0x2C4E, 0x0102)}, /* MERCUSYS MW150US v2 */ {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */ + {USB_DEVICE(0x7392, 0xb811)}, /* Edimax EW-7811UN V2 */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xffef)}, /* Rosewill RNX-N150NUB */ {} /* Terminating entry */ }; --- linux-5.8.0.orig/drivers/staging/rtl8192e/Kconfig +++ linux-5.8.0/drivers/staging/rtl8192e/Kconfig @@ -25,6 +25,7 @@ config RTLLIB_CRYPTO_TKIP tristate "Support for rtllib TKIP crypto" depends on RTLLIB + select CRYPTO select CRYPTO_ARC4 select CRYPTO_MICHAEL_MIC default y --- linux-5.8.0.orig/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c +++ linux-5.8.0/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c @@ -406,9 +406,10 @@ struct iw_scan_req *req = (struct iw_scan_req *)b; if (req->essid_len) { - ieee->current_network.ssid_len = req->essid_len; - memcpy(ieee->current_network.ssid, req->essid, - req->essid_len); + int len = min_t(int, req->essid_len, IW_ESSID_MAX_SIZE); + + ieee->current_network.ssid_len = len; + memcpy(ieee->current_network.ssid, req->essid, len); } } --- linux-5.8.0.orig/drivers/staging/rtl8192e/rtllib.h +++ linux-5.8.0/drivers/staging/rtl8192e/rtllib.h @@ -1105,7 +1105,7 @@ bool bWithAironetIE; bool bCkipSupported; bool bCcxRmEnable; - u16 CcxRmState[2]; + u8 CcxRmState[2]; bool bMBssidValid; u8 MBssidMask; u8 MBssid[ETH_ALEN]; --- linux-5.8.0.orig/drivers/staging/rtl8192e/rtllib_rx.c +++ linux-5.8.0/drivers/staging/rtl8192e/rtllib_rx.c @@ -1968,7 +1968,7 @@ info_element->data[2] == 0x96 && info_element->data[3] == 0x01) { if (info_element->len == 6) { - memcpy(network->CcxRmState, &info_element[4], 2); + memcpy(network->CcxRmState, &info_element->data[4], 2); if (network->CcxRmState[0] != 0) network->bCcxRmEnable = true; else --- linux-5.8.0.orig/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +++ linux-5.8.0/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c @@ -597,7 +597,7 @@ prxbIndicateArray = kmalloc_array(REORDER_WIN_SIZE, sizeof(struct ieee80211_rxb *), - GFP_KERNEL); + GFP_ATOMIC); if (!prxbIndicateArray) return; --- linux-5.8.0.orig/drivers/staging/rtl8192u/r8192U_core.c +++ linux-5.8.0/drivers/staging/rtl8192u/r8192U_core.c @@ -2374,7 +2374,7 @@ ret = eprom_read(dev, (EEPROM_TX_PW_INDEX_CCK >> 1)); if (ret < 0) return ret; - priv->EEPROMTxPowerLevelCCK = ((u16)ret & 0xff) >> 8; + priv->EEPROMTxPowerLevelCCK = ((u16)ret & 0xff00) >> 8; } else priv->EEPROMTxPowerLevelCCK = 0x10; RT_TRACE(COMP_EPROM, "CCK Tx Power Levl: 0x%02x\n", priv->EEPROMTxPowerLevelCCK); --- linux-5.8.0.orig/drivers/staging/rtl8192u/r8192U_wx.c +++ linux-5.8.0/drivers/staging/rtl8192u/r8192U_wx.c @@ -333,8 +333,10 @@ struct iw_scan_req *req = (struct iw_scan_req *)b; if (req->essid_len) { - ieee->current_network.ssid_len = req->essid_len; - memcpy(ieee->current_network.ssid, req->essid, req->essid_len); + int len = min_t(int, req->essid_len, IW_ESSID_MAX_SIZE); + + ieee->current_network.ssid_len = len; + memcpy(ieee->current_network.ssid, req->essid, len); } } --- linux-5.8.0.orig/drivers/staging/rtl8712/hal_init.c +++ linux-5.8.0/drivers/staging/rtl8712/hal_init.c @@ -33,7 +33,6 @@ { struct _adapter *adapter = context; - complete(&adapter->rtl8712_fw_ready); if (!firmware) { struct usb_device *udev = adapter->dvobjpriv.pusbdev; struct usb_interface *usb_intf = adapter->pusb_intf; @@ -41,11 +40,13 @@ dev_err(&udev->dev, "r8712u: Firmware request failed\n"); usb_put_dev(udev); usb_set_intfdata(usb_intf, NULL); + complete(&adapter->rtl8712_fw_ready); return; } adapter->fw = firmware; /* firmware available - start netdev */ register_netdev(adapter->pnetdev); + complete(&adapter->rtl8712_fw_ready); } static const char firmware_file[] = "rtlwifi/rtl8712u.bin"; --- linux-5.8.0.orig/drivers/staging/rtl8712/rtl871x_cmd.c +++ linux-5.8.0/drivers/staging/rtl8712/rtl871x_cmd.c @@ -197,8 +197,10 @@ psurveyPara->ss_ssidlen = 0; memset(psurveyPara->ss_ssid, 0, IW_ESSID_MAX_SIZE + 1); if ((pssid != NULL) && (pssid->SsidLength)) { - memcpy(psurveyPara->ss_ssid, pssid->Ssid, pssid->SsidLength); - psurveyPara->ss_ssidlen = cpu_to_le32(pssid->SsidLength); + int len = min_t(int, pssid->SsidLength, IW_ESSID_MAX_SIZE); + + memcpy(psurveyPara->ss_ssid, pssid->Ssid, len); + psurveyPara->ss_ssidlen = cpu_to_le32(len); } set_fwstate(pmlmepriv, _FW_UNDER_SURVEY); r8712_enqueue_cmd(pcmdpriv, ph2c); --- linux-5.8.0.orig/drivers/staging/rtl8712/rtl871x_ioctl_linux.c +++ linux-5.8.0/drivers/staging/rtl8712/rtl871x_ioctl_linux.c @@ -928,7 +928,7 @@ struct iw_point *dwrq = (struct iw_point *)awrq; len = dwrq->length; - ext = memdup_user(dwrq->pointer, len); + ext = strndup_user(dwrq->pointer, len); if (IS_ERR(ext)) return PTR_ERR(ext); --- linux-5.8.0.orig/drivers/staging/rtl8712/usb_intf.c +++ linux-5.8.0/drivers/staging/rtl8712/usb_intf.c @@ -595,13 +595,17 @@ if (pnetdev) { struct _adapter *padapter = netdev_priv(pnetdev); - usb_set_intfdata(pusb_intf, NULL); - release_firmware(padapter->fw); /* never exit with a firmware callback pending */ wait_for_completion(&padapter->rtl8712_fw_ready); + pnetdev = usb_get_intfdata(pusb_intf); + usb_set_intfdata(pusb_intf, NULL); + if (!pnetdev) + goto firmware_load_fail; + release_firmware(padapter->fw); if (drvpriv.drv_registered) padapter->surprise_removed = true; - unregister_netdev(pnetdev); /* will call netdev_close() */ + if (pnetdev->reg_state != NETREG_UNINITIALIZED) + unregister_netdev(pnetdev); /* will call netdev_close() */ flush_scheduled_work(); udelay(1); /* Stop driver mlme relation timer */ @@ -614,6 +618,7 @@ */ usb_put_dev(udev); } +firmware_load_fail: /* If we didn't unplug usb dongle and remove/insert module, driver * fails on sitesurvey for the first time when device is up. * Reset usb port for sitesurvey fail issue. --- linux-5.8.0.orig/drivers/staging/rtl8723bs/os_dep/sdio_intf.c +++ linux-5.8.0/drivers/staging/rtl8723bs/os_dep/sdio_intf.c @@ -21,6 +21,7 @@ { SDIO_DEVICE(0x024c, 0x0525), }, { SDIO_DEVICE(0x024c, 0x0623), }, { SDIO_DEVICE(0x024c, 0x0626), }, + { SDIO_DEVICE(0x024c, 0x0627), }, { SDIO_DEVICE(0x024c, 0xb723), }, { /* end: all zeroes */ }, }; --- linux-5.8.0.orig/drivers/staging/rtl8723bs/os_dep/wifi_regd.c +++ linux-5.8.0/drivers/staging/rtl8723bs/os_dep/wifi_regd.c @@ -34,7 +34,7 @@ NL80211_RRF_PASSIVE_SCAN) static const struct ieee80211_regdomain rtw_regdom_rd = { - .n_reg_rules = 3, + .n_reg_rules = 2, .alpha2 = "99", .reg_rules = { RTW_2GHZ_CH01_11, --- linux-5.8.0.orig/drivers/staging/rts5208/rtsx.c +++ linux-5.8.0/drivers/staging/rts5208/rtsx.c @@ -972,6 +972,7 @@ kfree(dev->chip); chip_alloc_fail: dev_err(&pci->dev, "%s failed\n", __func__); + scsi_host_put(host); scsi_host_alloc_fail: pci_release_regions(pci); return err; --- linux-5.8.0.orig/drivers/staging/signature-inclusion +++ linux-5.8.0/drivers/staging/signature-inclusion @@ -0,0 +1,20 @@ +# +# This file lists the staging drivers that are safe for signing +# and loading in a secure boot environment with signed module enforcement. +# +exfat.ko +rtl8192c-common.ko +rtl8192ce.ko +rtl8192cu.ko +rtl8192de.ko +rtl8192ee.ko +rtl8192se.ko +r8188eu.ko +r8192e_pci.ko +r8192u_usb.ko +r8712u.ko +r8822be.ko +rtllib_crypt_ccmp.ko +rtllib_crypt_tkip.ko +rtllib_crypt_wep.ko +rtllib.ko --- linux-5.8.0.orig/drivers/staging/speakup/main.c +++ linux-5.8.0/drivers/staging/speakup/main.c @@ -357,7 +357,6 @@ mark_cut_flag = 0; synth_printf("%s\n", spk_msg_get(MSG_CUT)); - speakup_clear_selection(); ret = speakup_set_selection(tty); switch (ret) { --- linux-5.8.0.orig/drivers/staging/speakup/selection.c +++ linux-5.8.0/drivers/staging/speakup/selection.c @@ -22,13 +22,6 @@ struct tty_struct *tty; }; -void speakup_clear_selection(void) -{ - console_lock(); - clear_selection(); - console_unlock(); -} - static void __speakup_set_selection(struct work_struct *work) { struct speakup_selection_work *ssw = @@ -51,6 +44,10 @@ goto unref; } + console_lock(); + clear_selection(); + console_unlock(); + set_selection_kernel(&sel, tty); unref: --- linux-5.8.0.orig/drivers/staging/speakup/speakup.h +++ linux-5.8.0/drivers/staging/speakup/speakup.h @@ -70,7 +70,6 @@ void speakup_start_ttys(void); void synth_buffer_add(u16 ch); void synth_buffer_clear(void); -void speakup_clear_selection(void); int speakup_set_selection(struct tty_struct *tty); void speakup_cancel_selection(void); int speakup_paste_selection(struct tty_struct *tty); --- linux-5.8.0.orig/drivers/staging/speakup/speakup_dectlk.c +++ linux-5.8.0/drivers/staging/speakup/speakup_dectlk.c @@ -37,7 +37,7 @@ static int in_escape; static int is_flushing; -static spinlock_t flush_lock; +static DEFINE_SPINLOCK(flush_lock); static DECLARE_WAIT_QUEUE_HEAD(flush); static struct var_t vars[] = { --- linux-5.8.0.orig/drivers/staging/speakup/spk_ttyio.c +++ linux-5.8.0/drivers/staging/speakup/spk_ttyio.c @@ -47,9 +47,12 @@ { struct spk_ldisc_data *ldisc_data; + if (tty != speakup_tty) + /* Somebody tried to use this line discipline outside speakup */ + return -ENODEV; + if (!tty->ops->write) return -EOPNOTSUPP; - speakup_tty = tty; ldisc_data = kmalloc(sizeof(*ldisc_data), GFP_KERNEL); if (!ldisc_data) @@ -57,7 +60,7 @@ init_completion(&ldisc_data->completion); ldisc_data->buf_free = true; - speakup_tty->disc_data = ldisc_data; + tty->disc_data = ldisc_data; return 0; } @@ -179,9 +182,25 @@ tty_unlock(tty); + mutex_lock(&speakup_tty_mutex); + speakup_tty = tty; ret = tty_set_ldisc(tty, N_SPEAKUP); if (ret) - pr_err("speakup: Failed to set N_SPEAKUP on tty\n"); + speakup_tty = NULL; + mutex_unlock(&speakup_tty_mutex); + + if (!ret) + /* Success */ + return 0; + + pr_err("speakup: Failed to set N_SPEAKUP on tty\n"); + + tty_lock(tty); + if (tty->ops->close) + tty->ops->close(tty, NULL); + tty_unlock(tty); + + tty_kclose(tty); return ret; } @@ -291,11 +310,13 @@ struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data; char rv; - if (wait_for_completion_timeout(&ldisc_data->completion, + if (!timeout) { + if (!try_wait_for_completion(&ldisc_data->completion)) + return 0xff; + } else if (wait_for_completion_timeout(&ldisc_data->completion, usecs_to_jiffies(timeout)) == 0) { - if (timeout) - pr_warn("spk_ttyio: timeout (%d) while waiting for input\n", - timeout); + pr_warn("spk_ttyio: timeout (%d) while waiting for input\n", + timeout); return 0xff; } --- linux-5.8.0.orig/drivers/staging/speakup/spk_types.h +++ linux-5.8.0/drivers/staging/speakup/spk_types.h @@ -32,6 +32,10 @@ E_NEW_DEFAULT, }; +/* + * Note: add new members at the end, speakupmap.h depends on the values of the + * enum starting from SPELL_DELAY (see inc_dec_var) + */ enum var_id_t { VERSION = 0, SYNTH, SILENT, SYNTH_DIRECT, KEYMAP, CHARS, @@ -42,9 +46,9 @@ SAY_CONTROL, SAY_WORD_CTL, NO_INTERRUPT, KEY_ECHO, SPELL_DELAY, PUNC_LEVEL, READING_PUNC, ATTRIB_BLEEP, BLEEPS, - RATE, PITCH, INFLECTION, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, + RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT, PAUSE, - CAPS_START, CAPS_STOP, CHARTAB, + CAPS_START, CAPS_STOP, CHARTAB, INFLECTION, MAXVARS }; --- linux-5.8.0.orig/drivers/staging/vc04_services/bcm2835-audio/bcm2835-ctl.c +++ linux-5.8.0/drivers/staging/vc04_services/bcm2835-audio/bcm2835-ctl.c @@ -224,7 +224,7 @@ { int err; - strcpy(chip->card->mixername, "Broadcom Mixer"); + strscpy(chip->card->mixername, "Broadcom Mixer", sizeof(chip->card->mixername)); err = create_ctls(chip, ARRAY_SIZE(snd_bcm2835_ctl), snd_bcm2835_ctl); if (err < 0) return err; @@ -261,7 +261,7 @@ int snd_bcm2835_new_headphones_ctl(struct bcm2835_chip *chip) { - strcpy(chip->card->mixername, "Broadcom Mixer"); + strscpy(chip->card->mixername, "Broadcom Mixer", sizeof(chip->card->mixername)); return create_ctls(chip, ARRAY_SIZE(snd_bcm2835_headphones_ctl), snd_bcm2835_headphones_ctl); } @@ -295,7 +295,7 @@ int snd_bcm2835_new_hdmi_ctl(struct bcm2835_chip *chip) { - strcpy(chip->card->mixername, "Broadcom Mixer"); + strscpy(chip->card->mixername, "Broadcom Mixer", sizeof(chip->card->mixername)); return create_ctls(chip, ARRAY_SIZE(snd_bcm2835_hdmi), snd_bcm2835_hdmi); } --- linux-5.8.0.orig/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c +++ linux-5.8.0/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c @@ -334,7 +334,7 @@ pcm->private_data = chip; pcm->nonatomic = true; - strcpy(pcm->name, name); + strscpy(pcm->name, name, sizeof(pcm->name)); if (!spdif) { chip->dest = route; chip->volume = 0; --- linux-5.8.0.orig/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c +++ linux-5.8.0/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c @@ -185,9 +185,9 @@ goto error; } - strcpy(card->driver, audio_driver->driver.name); - strcpy(card->shortname, audio_driver->shortname); - strcpy(card->longname, audio_driver->longname); + strscpy(card->driver, audio_driver->driver.name, sizeof(card->driver)); + strscpy(card->shortname, audio_driver->shortname, sizeof(card->shortname)); + strscpy(card->longname, audio_driver->longname, sizeof(card->longname)); err = audio_driver->newpcm(chip, audio_driver->shortname, audio_driver->route, --- linux-5.8.0.orig/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ linux-5.8.0/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -2805,6 +2805,7 @@ static int vchiq_remove(struct platform_device *pdev) { + platform_device_unregister(bcm2835_audio); platform_device_unregister(bcm2835_camera); vchiq_debugfs_deinit(); device_destroy(vchiq_class, vchiq_devid); --- linux-5.8.0.orig/drivers/staging/wfx/data_rx.c +++ linux-5.8.0/drivers/staging/wfx/data_rx.c @@ -80,7 +80,7 @@ goto drop; if (arg->status == HIF_STATUS_RX_FAIL_MIC) - hdr->flag |= RX_FLAG_MMIC_ERROR; + hdr->flag |= RX_FLAG_MMIC_ERROR | RX_FLAG_IV_STRIPPED; else if (arg->status) goto drop; --- linux-5.8.0.orig/drivers/staging/wfx/sta.c +++ linux-5.8.0/drivers/staging/wfx/sta.c @@ -773,17 +773,6 @@ return -EOPNOTSUPP; } - for (i = 0; i < ARRAY_SIZE(wdev->vif); i++) { - if (!wdev->vif[i]) { - wdev->vif[i] = vif; - wvif->id = i; - break; - } - } - if (i == ARRAY_SIZE(wdev->vif)) { - mutex_unlock(&wdev->conf_mutex); - return -EOPNOTSUPP; - } // FIXME: prefer use of container_of() to get vif wvif->vif = vif; wvif->wdev = wdev; @@ -801,11 +790,21 @@ init_completion(&wvif->scan_complete); INIT_WORK(&wvif->scan_work, wfx_hw_scan_work); - mutex_unlock(&wdev->conf_mutex); + wfx_tx_policy_init(wvif); + + for (i = 0; i < ARRAY_SIZE(wdev->vif); i++) { + if (!wdev->vif[i]) { + wdev->vif[i] = vif; + wvif->id = i; + break; + } + } + WARN(i == ARRAY_SIZE(wdev->vif), "try to instantiate more vif than supported"); hif_set_macaddr(wvif, vif->addr); - wfx_tx_policy_init(wvif); + mutex_unlock(&wdev->conf_mutex); + wvif = NULL; while ((wvif = wvif_iterate(wdev, wvif)) != NULL) { // Combo mode does not support Block Acks. We can re-enable them @@ -836,6 +835,7 @@ wvif->vif = NULL; mutex_unlock(&wdev->conf_mutex); + wvif = NULL; while ((wvif = wvif_iterate(wdev, wvif)) != NULL) { // Combo mode does not support Block Acks. We can re-enable them --- linux-5.8.0.orig/drivers/staging/wilc1000/mon.c +++ linux-5.8.0/drivers/staging/wilc1000/mon.c @@ -236,11 +236,10 @@ if (register_netdevice(wl->monitor_dev)) { netdev_err(real_dev, "register_netdevice failed\n"); + free_netdev(wl->monitor_dev); return NULL; } priv = netdev_priv(wl->monitor_dev); - if (!priv) - return NULL; priv->real_ndev = real_dev; --- linux-5.8.0.orig/drivers/staging/wilc1000/sdio.c +++ linux-5.8.0/drivers/staging/wilc1000/sdio.c @@ -151,9 +151,10 @@ wilc->dev = &func->dev; wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc"); - if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) + if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) { + kfree(sdio_priv); return -EPROBE_DEFER; - else if (!IS_ERR(wilc->rtc_clk)) + } else if (!IS_ERR(wilc->rtc_clk)) clk_prepare_enable(wilc->rtc_clk); dev_info(&func->dev, "Driver Initializing success\n"); --- linux-5.8.0.orig/drivers/staging/wilc1000/spi.c +++ linux-5.8.0/drivers/staging/wilc1000/spi.c @@ -112,9 +112,10 @@ wilc->dev_irq_num = spi->irq; wilc->rtc_clk = devm_clk_get(&spi->dev, "rtc_clk"); - if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) + if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) { + kfree(spi_priv); return -EPROBE_DEFER; - else if (!IS_ERR(wilc->rtc_clk)) + } else if (!IS_ERR(wilc->rtc_clk)) clk_prepare_enable(wilc->rtc_clk); return 0; --- linux-5.8.0.orig/drivers/staging/wlan-ng/hfa384x_usb.c +++ linux-5.8.0/drivers/staging/wlan-ng/hfa384x_usb.c @@ -524,13 +524,8 @@ */ void hfa384x_create(struct hfa384x *hw, struct usb_device *usb) { - memset(hw, 0, sizeof(*hw)); hw->usb = usb; - /* set up the endpoints */ - hw->endp_in = usb_rcvbulkpipe(usb, 1); - hw->endp_out = usb_sndbulkpipe(usb, 2); - /* Set up the waitq */ init_waitqueue_head(&hw->cmdq); --- linux-5.8.0.orig/drivers/staging/wlan-ng/prism2usb.c +++ linux-5.8.0/drivers/staging/wlan-ng/prism2usb.c @@ -61,23 +61,14 @@ const struct usb_device_id *id) { struct usb_device *dev; - const struct usb_endpoint_descriptor *epd; - const struct usb_host_interface *iface_desc = interface->cur_altsetting; + struct usb_endpoint_descriptor *bulk_in, *bulk_out; + struct usb_host_interface *iface_desc = interface->cur_altsetting; struct wlandevice *wlandev = NULL; struct hfa384x *hw = NULL; int result = 0; - if (iface_desc->desc.bNumEndpoints != 2) { - result = -ENODEV; - goto failed; - } - - result = -EINVAL; - epd = &iface_desc->endpoint[1].desc; - if (!usb_endpoint_is_bulk_in(epd)) - goto failed; - epd = &iface_desc->endpoint[2].desc; - if (!usb_endpoint_is_bulk_out(epd)) + result = usb_find_common_endpoints(iface_desc, &bulk_in, &bulk_out, NULL, NULL); + if (result) goto failed; dev = interface_to_usbdev(interface); @@ -96,6 +87,8 @@ } /* Initialize the hw data */ + hw->endp_in = usb_rcvbulkpipe(dev, bulk_in->bEndpointAddress); + hw->endp_out = usb_sndbulkpipe(dev, bulk_out->bEndpointAddress); hfa384x_create(hw, dev); hw->wlandev = wlandev; --- linux-5.8.0.orig/drivers/target/iscsi/cxgbit/cxgbit_target.c +++ linux-5.8.0/drivers/target/iscsi/cxgbit/cxgbit_target.c @@ -86,8 +86,7 @@ if (likely(cxgbit_skcb_flags(skb) & SKCBF_TX_ISO)) length += sizeof(struct cpl_tx_data_iso); -#define MAX_IMM_TX_PKT_LEN 256 - return length <= MAX_IMM_TX_PKT_LEN; + return length <= MAX_IMM_OFLD_TX_DATA_WR_LEN; } /* --- linux-5.8.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-5.8.0/drivers/target/iscsi/iscsi_target.c @@ -483,8 +483,7 @@ void iscsit_aborted_task(struct iscsi_conn *conn, struct iscsi_cmd *cmd) { spin_lock_bh(&conn->cmd_lock); - if (!list_empty(&cmd->i_conn_node) && - !(cmd->se_cmd.transport_state & CMD_T_FABRIC_STOP)) + if (!list_empty(&cmd->i_conn_node)) list_del_init(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); @@ -1389,14 +1388,27 @@ sg = cmd->first_data_sg; page_off = cmd->first_data_sg_off; + if (data_length && page_off) { + struct scatterlist first_sg; + u32 len = min_t(u32, data_length, sg->length - page_off); + + sg_init_table(&first_sg, 1); + sg_set_page(&first_sg, sg_page(sg), len, sg->offset + page_off); + + ahash_request_set_crypt(hash, &first_sg, NULL, len); + crypto_ahash_update(hash); + + data_length -= len; + sg = sg_next(sg); + } + while (data_length) { - u32 cur_len = min_t(u32, data_length, (sg->length - page_off)); + u32 cur_len = min_t(u32, data_length, sg->length); ahash_request_set_crypt(hash, sg, NULL, cur_len); crypto_ahash_update(hash); data_length -= cur_len; - page_off = 0; /* iscsit_map_iovec has already checked for invalid sg pointers */ sg = sg_next(sg); } @@ -4070,12 +4082,22 @@ spin_lock_bh(&conn->cmd_lock); list_splice_init(&conn->conn_cmd_list, &tmp_list); - list_for_each_entry(cmd, &tmp_list, i_conn_node) { + list_for_each_entry_safe(cmd, cmd_tmp, &tmp_list, i_conn_node) { struct se_cmd *se_cmd = &cmd->se_cmd; if (se_cmd->se_tfo != NULL) { spin_lock_irq(&se_cmd->t_state_lock); - se_cmd->transport_state |= CMD_T_FABRIC_STOP; + if (se_cmd->transport_state & CMD_T_ABORTED) { + /* + * LIO's abort path owns the cleanup for this, + * so put it back on the list and let + * aborted_task handle it. + */ + list_move_tail(&cmd->i_conn_node, + &conn->conn_cmd_list); + } else { + se_cmd->transport_state |= CMD_T_FABRIC_STOP; + } spin_unlock_irq(&se_cmd->t_state_lock); } } --- linux-5.8.0.orig/drivers/target/iscsi/iscsi_target_login.c +++ linux-5.8.0/drivers/target/iscsi/iscsi_target_login.c @@ -1149,7 +1149,7 @@ } void iscsi_target_login_sess_out(struct iscsi_conn *conn, - struct iscsi_np *np, bool zero_tsih, bool new_sess) + bool zero_tsih, bool new_sess) { if (!new_sess) goto old_sess_out; @@ -1167,7 +1167,6 @@ conn->sess = NULL; old_sess_out: - iscsi_stop_login_thread_timer(np); /* * If login negotiation fails check if the Time2Retain timer * needs to be restarted. @@ -1407,8 +1406,9 @@ new_sess_out: new_sess = true; old_sess_out: + iscsi_stop_login_thread_timer(np); tpg_np = conn->tpg_np; - iscsi_target_login_sess_out(conn, np, zero_tsih, new_sess); + iscsi_target_login_sess_out(conn, zero_tsih, new_sess); new_sess = false; if (tpg) { --- linux-5.8.0.orig/drivers/target/iscsi/iscsi_target_login.h +++ linux-5.8.0/drivers/target/iscsi/iscsi_target_login.h @@ -22,8 +22,7 @@ extern void iscsit_free_conn(struct iscsi_conn *); extern int iscsit_start_kthreads(struct iscsi_conn *); extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8); -extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *, - bool, bool); +extern void iscsi_target_login_sess_out(struct iscsi_conn *, bool, bool); extern int iscsi_target_login_thread(void *); extern void iscsi_handle_login_thread_timeout(struct timer_list *t); --- linux-5.8.0.orig/drivers/target/iscsi/iscsi_target_nego.c +++ linux-5.8.0/drivers/target/iscsi/iscsi_target_nego.c @@ -535,12 +535,11 @@ static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login) { - struct iscsi_np *np = login->np; bool zero_tsih = login->zero_tsih; iscsi_remove_failed_auth_entry(conn); iscsi_target_nego_release(conn); - iscsi_target_login_sess_out(conn, np, zero_tsih, true); + iscsi_target_login_sess_out(conn, zero_tsih, true); } struct conn_timeout { --- linux-5.8.0.orig/drivers/target/target_core_internal.h +++ linux-5.8.0/drivers/target/target_core_internal.h @@ -138,6 +138,7 @@ void release_se_kmem_caches(void); u32 scsi_get_new_index(scsi_index_t); void transport_subsystem_check_init(void); +void transport_uninit_session(struct se_session *); unsigned char *transport_dump_cmd_direction(struct se_cmd *); void transport_dump_dev_state(struct se_device *, char *, int *); void transport_dump_dev_info(struct se_device *, struct se_lun *, --- linux-5.8.0.orig/drivers/target/target_core_pr.c +++ linux-5.8.0/drivers/target/target_core_pr.c @@ -3731,6 +3731,7 @@ spin_unlock(&dev->t10_pr.registration_lock); put_unaligned_be32(add_len, &buf[4]); + target_set_cmd_data_length(cmd, 8 + add_len); transport_kunmap_data_sg(cmd); @@ -3749,7 +3750,7 @@ struct t10_pr_registration *pr_reg; unsigned char *buf; u64 pr_res_key; - u32 add_len = 16; /* Hardcoded to 16 when a reservation is held. */ + u32 add_len = 0; if (cmd->data_length < 8) { pr_err("PRIN SA READ_RESERVATIONS SCSI Data Length: %u" @@ -3767,8 +3768,9 @@ pr_reg = dev->dev_pr_res_holder; if (pr_reg) { /* - * Set the hardcoded Additional Length + * Set the Additional Length to 16 when a reservation is held */ + add_len = 16; put_unaligned_be32(add_len, &buf[4]); if (cmd->data_length < 22) @@ -3804,6 +3806,8 @@ (pr_reg->pr_res_type & 0x0f); } + target_set_cmd_data_length(cmd, 8 + add_len); + err: spin_unlock(&dev->dev_reservation_lock); transport_kunmap_data_sg(cmd); @@ -3822,7 +3826,7 @@ struct se_device *dev = cmd->se_dev; struct t10_reservation *pr_tmpl = &dev->t10_pr; unsigned char *buf; - u16 add_len = 8; /* Hardcoded to 8. */ + u16 len = 8; /* Hardcoded to 8. */ if (cmd->data_length < 6) { pr_err("PRIN SA REPORT_CAPABILITIES SCSI Data Length:" @@ -3834,7 +3838,7 @@ if (!buf) return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; - put_unaligned_be16(add_len, &buf[0]); + put_unaligned_be16(len, &buf[0]); buf[2] |= 0x10; /* CRH: Compatible Reservation Hanlding bit. */ buf[2] |= 0x08; /* SIP_C: Specify Initiator Ports Capable bit */ buf[2] |= 0x04; /* ATP_C: All Target Ports Capable bit */ @@ -3863,6 +3867,8 @@ buf[4] |= 0x02; /* PR_TYPE_WRITE_EXCLUSIVE */ buf[5] |= 0x01; /* PR_TYPE_EXCLUSIVE_ACCESS_ALLREG */ + target_set_cmd_data_length(cmd, len); + transport_kunmap_data_sg(cmd); return 0; @@ -4023,6 +4029,7 @@ * Set ADDITIONAL_LENGTH */ put_unaligned_be32(add_len, &buf[4]); + target_set_cmd_data_length(cmd, 8 + add_len); transport_kunmap_data_sg(cmd); --- linux-5.8.0.orig/drivers/target/target_core_pscsi.c +++ linux-5.8.0/drivers/target/target_core_pscsi.c @@ -939,6 +939,14 @@ return 0; fail: + if (bio) + bio_put(bio); + while (req->bio) { + bio = req->bio; + req->bio = bio->bi_next; + bio_put(bio); + } + req->biotail = NULL; return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; } --- linux-5.8.0.orig/drivers/target/target_core_transport.c +++ linux-5.8.0/drivers/target/target_core_transport.c @@ -236,6 +236,11 @@ } EXPORT_SYMBOL(transport_init_session); +void transport_uninit_session(struct se_session *se_sess) +{ + percpu_ref_exit(&se_sess->cmd_count); +} + /** * transport_alloc_session - allocate a session object and initialize it * @sup_prot_ops: bitmask that defines which T10-PI modes are supported. @@ -579,7 +584,7 @@ sbitmap_queue_free(&se_sess->sess_tag_pool); kvfree(se_sess->sess_cmd_map); } - percpu_ref_exit(&se_sess->cmd_count); + transport_uninit_session(se_sess); kmem_cache_free(se_sess_cache, se_sess); } EXPORT_SYMBOL(transport_free_session); @@ -868,11 +873,9 @@ } EXPORT_SYMBOL(target_complete_cmd); -void target_complete_cmd_with_length(struct se_cmd *cmd, u8 scsi_status, int length) +void target_set_cmd_data_length(struct se_cmd *cmd, int length) { - if ((scsi_status == SAM_STAT_GOOD || - cmd->se_cmd_flags & SCF_TREAT_READ_AS_NORMAL) && - length < cmd->data_length) { + if (length < cmd->data_length) { if (cmd->se_cmd_flags & SCF_UNDERFLOW_BIT) { cmd->residual_count += cmd->data_length - length; } else { @@ -882,6 +885,15 @@ cmd->data_length = length; } +} +EXPORT_SYMBOL(target_set_cmd_data_length); + +void target_complete_cmd_with_length(struct se_cmd *cmd, u8 scsi_status, int length) +{ + if (scsi_status == SAM_STAT_GOOD || + cmd->se_cmd_flags & SCF_TREAT_READ_AS_NORMAL) { + target_set_cmd_data_length(cmd, length); + } target_complete_cmd(cmd, scsi_status); } @@ -1835,7 +1847,8 @@ * out unpacked_lun for the original se_cmd. */ if (tm_type == TMR_ABORT_TASK && (flags & TARGET_SCF_LOOKUP_LUN_FROM_TAG)) { - if (!target_lookup_lun_from_tag(se_sess, tag, &unpacked_lun)) + if (!target_lookup_lun_from_tag(se_sess, tag, + &se_cmd->orig_fe_lun)) goto failure; } --- linux-5.8.0.orig/drivers/target/target_core_user.c +++ linux-5.8.0/drivers/target/target_core_user.c @@ -601,7 +601,7 @@ size = round_up(size+offset, PAGE_SIZE); while (size) { - flush_dcache_page(virt_to_page(start)); + flush_dcache_page(vmalloc_to_page(start)); start += PAGE_SIZE; size -= PAGE_SIZE; } @@ -669,15 +669,17 @@ void *from, *to = NULL; size_t copy_bytes, to_offset, offset; struct scatterlist *sg; - struct page *page; + struct page *page = NULL; for_each_sg(data_sg, sg, data_nents, i) { int sg_remaining = sg->length; from = kmap_atomic(sg_page(sg)) + sg->offset; while (sg_remaining > 0) { if (block_remaining == 0) { - if (to) + if (to) { + flush_dcache_page(page); kunmap_atomic(to); + } block_remaining = DATA_BLOCK_SIZE; dbi = tcmu_cmd_get_dbi(tcmu_cmd); @@ -722,7 +724,6 @@ memcpy(to + offset, from + sg->length - sg_remaining, copy_bytes); - tcmu_flush_dcache_range(to, copy_bytes); } sg_remaining -= copy_bytes; @@ -731,8 +732,10 @@ kunmap_atomic(from - sg->offset); } - if (to) + if (to) { + flush_dcache_page(page); kunmap_atomic(to); + } } static void gather_data_area(struct tcmu_dev *udev, struct tcmu_cmd *cmd, @@ -778,13 +781,13 @@ dbi = tcmu_cmd_get_dbi(cmd); page = tcmu_get_block_page(udev, dbi); from = kmap_atomic(page); + flush_dcache_page(page); } copy_bytes = min_t(size_t, sg_remaining, block_remaining); if (read_len < copy_bytes) copy_bytes = read_len; offset = DATA_BLOCK_SIZE - block_remaining; - tcmu_flush_dcache_range(from, copy_bytes); memcpy(to + sg->length - sg_remaining, from + offset, copy_bytes); @@ -1220,7 +1223,14 @@ struct tcmu_cmd_entry *entry = (void *) mb + CMDR_OFF + udev->cmdr_last_cleaned; - tcmu_flush_dcache_range(entry, sizeof(*entry)); + /* + * Flush max. up to end of cmd ring since current entry might + * be a padding that is shorter than sizeof(*entry) + */ + size_t ring_left = head_to_end(udev->cmdr_last_cleaned, + udev->cmdr_size); + tcmu_flush_dcache_range(entry, ring_left < sizeof(*entry) ? + ring_left : sizeof(*entry)); if (tcmu_hdr_get_op(entry->hdr.len_op) == TCMU_OP_PAD) { UPDATE_HEAD(udev->cmdr_last_cleaned, --- linux-5.8.0.orig/drivers/target/target_core_xcopy.c +++ linux-5.8.0/drivers/target/target_core_xcopy.c @@ -46,60 +46,83 @@ return 0; } -struct xcopy_dev_search_info { - const unsigned char *dev_wwn; - struct se_device *found_dev; -}; - +/** + * target_xcopy_locate_se_dev_e4_iter - compare XCOPY NAA device identifiers + * + * @se_dev: device being considered for match + * @dev_wwn: XCOPY requested NAA dev_wwn + * @return: 1 on match, 0 on no-match + */ static int target_xcopy_locate_se_dev_e4_iter(struct se_device *se_dev, - void *data) + const unsigned char *dev_wwn) { - struct xcopy_dev_search_info *info = data; unsigned char tmp_dev_wwn[XCOPY_NAA_IEEE_REGEX_LEN]; int rc; - if (!se_dev->dev_attrib.emulate_3pc) + if (!se_dev->dev_attrib.emulate_3pc) { + pr_debug("XCOPY: emulate_3pc disabled on se_dev %p\n", se_dev); return 0; + } memset(&tmp_dev_wwn[0], 0, XCOPY_NAA_IEEE_REGEX_LEN); target_xcopy_gen_naa_ieee(se_dev, &tmp_dev_wwn[0]); - rc = memcmp(&tmp_dev_wwn[0], info->dev_wwn, XCOPY_NAA_IEEE_REGEX_LEN); - if (rc != 0) - return 0; - - info->found_dev = se_dev; - pr_debug("XCOPY 0xe4: located se_dev: %p\n", se_dev); - - rc = target_depend_item(&se_dev->dev_group.cg_item); + rc = memcmp(&tmp_dev_wwn[0], dev_wwn, XCOPY_NAA_IEEE_REGEX_LEN); if (rc != 0) { - pr_err("configfs_depend_item attempt failed: %d for se_dev: %p\n", - rc, se_dev); - return rc; + pr_debug("XCOPY: skip non-matching: %*ph\n", + XCOPY_NAA_IEEE_REGEX_LEN, tmp_dev_wwn); + return 0; } + pr_debug("XCOPY 0xe4: located se_dev: %p\n", se_dev); - pr_debug("Called configfs_depend_item for se_dev: %p se_dev->se_dev_group: %p\n", - se_dev, &se_dev->dev_group); return 1; } -static int target_xcopy_locate_se_dev_e4(const unsigned char *dev_wwn, - struct se_device **found_dev) -{ - struct xcopy_dev_search_info info; - int ret; - - memset(&info, 0, sizeof(info)); - info.dev_wwn = dev_wwn; - - ret = target_for_each_device(target_xcopy_locate_se_dev_e4_iter, &info); - if (ret == 1) { - *found_dev = info.found_dev; - return 0; - } else { - pr_debug_ratelimited("Unable to locate 0xe4 descriptor for EXTENDED_COPY\n"); - return -EINVAL; +static int target_xcopy_locate_se_dev_e4(struct se_session *sess, + const unsigned char *dev_wwn, + struct se_device **_found_dev, + struct percpu_ref **_found_lun_ref) +{ + struct se_dev_entry *deve; + struct se_node_acl *nacl; + struct se_lun *this_lun = NULL; + struct se_device *found_dev = NULL; + + /* cmd with NULL sess indicates no associated $FABRIC_MOD */ + if (!sess) + goto err_out; + + pr_debug("XCOPY 0xe4: searching for: %*ph\n", + XCOPY_NAA_IEEE_REGEX_LEN, dev_wwn); + + nacl = sess->se_node_acl; + rcu_read_lock(); + hlist_for_each_entry_rcu(deve, &nacl->lun_entry_hlist, link) { + struct se_device *this_dev; + int rc; + + this_lun = rcu_dereference(deve->se_lun); + this_dev = rcu_dereference_raw(this_lun->lun_se_dev); + + rc = target_xcopy_locate_se_dev_e4_iter(this_dev, dev_wwn); + if (rc) { + if (percpu_ref_tryget_live(&this_lun->lun_ref)) + found_dev = this_dev; + break; + } } + rcu_read_unlock(); + if (found_dev == NULL) + goto err_out; + + pr_debug("lun_ref held for se_dev: %p se_dev->se_dev_group: %p\n", + found_dev, &found_dev->dev_group); + *_found_dev = found_dev; + *_found_lun_ref = &this_lun->lun_ref; + return 0; +err_out: + pr_debug_ratelimited("Unable to locate 0xe4 descriptor for EXTENDED_COPY\n"); + return -EINVAL; } static int target_xcopy_parse_tiddesc_e4(struct se_cmd *se_cmd, struct xcopy_op *xop, @@ -246,12 +269,16 @@ switch (xop->op_origin) { case XCOL_SOURCE_RECV_OP: - rc = target_xcopy_locate_se_dev_e4(xop->dst_tid_wwn, - &xop->dst_dev); + rc = target_xcopy_locate_se_dev_e4(se_cmd->se_sess, + xop->dst_tid_wwn, + &xop->dst_dev, + &xop->remote_lun_ref); break; case XCOL_DEST_RECV_OP: - rc = target_xcopy_locate_se_dev_e4(xop->src_tid_wwn, - &xop->src_dev); + rc = target_xcopy_locate_se_dev_e4(se_cmd->se_sess, + xop->src_tid_wwn, + &xop->src_dev, + &xop->remote_lun_ref); break; default: pr_err("XCOPY CSCD descriptor IDs not found in CSCD list - " @@ -391,18 +418,12 @@ static void xcopy_pt_undepend_remotedev(struct xcopy_op *xop) { - struct se_device *remote_dev; - if (xop->op_origin == XCOL_SOURCE_RECV_OP) - remote_dev = xop->dst_dev; + pr_debug("putting dst lun_ref for %p\n", xop->dst_dev); else - remote_dev = xop->src_dev; - - pr_debug("Calling configfs_undepend_item for" - " remote_dev: %p remote_dev->dev_group: %p\n", - remote_dev, &remote_dev->dev_group.cg_item); + pr_debug("putting src lun_ref for %p\n", xop->src_dev); - target_undepend_item(&remote_dev->dev_group.cg_item); + percpu_ref_put(xop->remote_lun_ref); } static void xcopy_pt_release_cmd(struct se_cmd *se_cmd) @@ -474,7 +495,7 @@ memset(&xcopy_pt_sess, 0, sizeof(struct se_session)); ret = transport_init_session(&xcopy_pt_sess); if (ret < 0) - return ret; + goto destroy_wq; xcopy_pt_nacl.se_tpg = &xcopy_pt_tpg; xcopy_pt_nacl.nacl_sess = &xcopy_pt_sess; @@ -483,12 +504,19 @@ xcopy_pt_sess.se_node_acl = &xcopy_pt_nacl; return 0; + +destroy_wq: + destroy_workqueue(xcopy_wq); + xcopy_wq = NULL; + return ret; } void target_xcopy_release_pt(void) { - if (xcopy_wq) + if (xcopy_wq) { destroy_workqueue(xcopy_wq); + transport_uninit_session(&xcopy_pt_sess); + } } /* --- linux-5.8.0.orig/drivers/target/target_core_xcopy.h +++ linux-5.8.0/drivers/target/target_core_xcopy.h @@ -27,6 +27,7 @@ struct se_device *dst_dev; unsigned char dst_tid_wwn[XCOPY_NAA_IEEE_REGEX_LEN]; unsigned char local_dev_wwn[XCOPY_NAA_IEEE_REGEX_LEN]; + struct percpu_ref *remote_lun_ref; sector_t src_lba; sector_t dst_lba; --- linux-5.8.0.orig/drivers/tee/amdtee/amdtee_private.h +++ linux-5.8.0/drivers/tee/amdtee/amdtee_private.h @@ -64,9 +64,13 @@ /** * struct amdtee_context_data - AMD-TEE driver context data * @sess_list: Keeps track of sessions opened in current TEE context + * @shm_list: Keeps track of buffers allocated and mapped in current TEE + * context */ struct amdtee_context_data { struct list_head sess_list; + struct list_head shm_list; + struct mutex shm_mutex; /* synchronizes access to @shm_list */ }; struct amdtee_driver_data { @@ -89,10 +93,6 @@ u32 buf_id; }; -struct amdtee_shm_context { - struct list_head shmdata_list; -}; - #define LOWER_TWO_BYTE_MASK 0x0000FFFF /** --- linux-5.8.0.orig/drivers/tee/amdtee/core.c +++ linux-5.8.0/drivers/tee/amdtee/core.c @@ -20,7 +20,6 @@ static struct amdtee_driver_data *drv_data; static DEFINE_MUTEX(session_list_mutex); -static struct amdtee_shm_context shmctx; static void amdtee_get_version(struct tee_device *teedev, struct tee_ioctl_version_data *vers) @@ -42,7 +41,8 @@ return -ENOMEM; INIT_LIST_HEAD(&ctxdata->sess_list); - INIT_LIST_HEAD(&shmctx.shmdata_list); + INIT_LIST_HEAD(&ctxdata->shm_list); + mutex_init(&ctxdata->shm_mutex); ctx->data = ctxdata; return 0; @@ -86,6 +86,7 @@ list_del(&sess->list_node); release_session(sess); } + mutex_destroy(&ctxdata->shm_mutex); kfree(ctxdata); ctx->data = NULL; @@ -152,14 +153,17 @@ u32 get_buffer_id(struct tee_shm *shm) { - u32 buf_id = 0; + struct amdtee_context_data *ctxdata = shm->ctx->data; struct amdtee_shm_data *shmdata; + u32 buf_id = 0; - list_for_each_entry(shmdata, &shmctx.shmdata_list, shm_node) + mutex_lock(&ctxdata->shm_mutex); + list_for_each_entry(shmdata, &ctxdata->shm_list, shm_node) if (shmdata->kaddr == shm->kaddr) { buf_id = shmdata->buf_id; break; } + mutex_unlock(&ctxdata->shm_mutex); return buf_id; } @@ -333,8 +337,9 @@ int amdtee_map_shmem(struct tee_shm *shm) { - struct shmem_desc shmem; + struct amdtee_context_data *ctxdata; struct amdtee_shm_data *shmnode; + struct shmem_desc shmem; int rc, count; u32 buf_id; @@ -362,7 +367,10 @@ shmnode->kaddr = shm->kaddr; shmnode->buf_id = buf_id; - list_add(&shmnode->shm_node, &shmctx.shmdata_list); + ctxdata = shm->ctx->data; + mutex_lock(&ctxdata->shm_mutex); + list_add(&shmnode->shm_node, &ctxdata->shm_list); + mutex_unlock(&ctxdata->shm_mutex); pr_debug("buf_id :[%x] kaddr[%p]\n", shmnode->buf_id, shmnode->kaddr); @@ -371,6 +379,7 @@ void amdtee_unmap_shmem(struct tee_shm *shm) { + struct amdtee_context_data *ctxdata; struct amdtee_shm_data *shmnode; u32 buf_id; @@ -381,12 +390,15 @@ /* Unmap the shared memory from TEE */ handle_unmap_shmem(buf_id); - list_for_each_entry(shmnode, &shmctx.shmdata_list, shm_node) + ctxdata = shm->ctx->data; + mutex_lock(&ctxdata->shm_mutex); + list_for_each_entry(shmnode, &ctxdata->shm_list, shm_node) if (buf_id == shmnode->buf_id) { list_del(&shmnode->shm_node); kfree(shmnode); break; } + mutex_unlock(&ctxdata->shm_mutex); } int amdtee_invoke_func(struct tee_context *ctx, --- linux-5.8.0.orig/drivers/tee/optee/call.c +++ linux-5.8.0/drivers/tee/optee/call.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -148,7 +149,8 @@ */ optee_cq_wait_for_completion(&optee->call_queue, &w); } else if (OPTEE_SMC_RETURN_IS_RPC(res.a0)) { - might_sleep(); + if (need_resched()) + cond_resched(); param.a0 = res.a0; param.a1 = res.a1; param.a2 = res.a2; @@ -534,7 +536,8 @@ static bool is_normal_memory(pgprot_t p) { #if defined(CONFIG_ARM) - return (pgprot_val(p) & L_PTE_MT_MASK) == L_PTE_MT_WRITEALLOC; + return (((pgprot_val(p) & L_PTE_MT_MASK) == L_PTE_MT_WRITEALLOC) || + ((pgprot_val(p) & L_PTE_MT_MASK) == L_PTE_MT_WRITEBACK)); #elif defined(CONFIG_ARM64) return (pgprot_val(p) & PTE_ATTRINDX_MASK) == PTE_ATTRINDX(MT_NORMAL); #else --- linux-5.8.0.orig/drivers/tee/tee_core.c +++ linux-5.8.0/drivers/tee/tee_core.c @@ -200,7 +200,8 @@ int name_len; int rc; - if (connection_method == TEE_IOCTL_LOGIN_PUBLIC) { + if (connection_method == TEE_IOCTL_LOGIN_PUBLIC || + connection_method == TEE_IOCTL_LOGIN_REE_KERNEL) { /* Nil UUID to be passed to TEE environment */ uuid_copy(uuid, &uuid_null); return 0; --- linux-5.8.0.orig/drivers/thermal/cpufreq_cooling.c +++ linux-5.8.0/drivers/thermal/cpufreq_cooling.c @@ -444,13 +444,11 @@ if (cpufreq_cdev->cpufreq_state == state) return 0; - cpufreq_cdev->cpufreq_state = state; - frequency = get_state_freq(cpufreq_cdev, state); ret = freq_qos_update_request(&cpufreq_cdev->qos_req, frequency); - - if (ret > 0) { + if (ret >= 0) { + cpufreq_cdev->cpufreq_state = state; cpus = cpufreq_cdev->policy->cpus; max_capacity = arch_scale_cpu_capacity(cpumask_first(cpus)); capacity = frequency * max_capacity; --- linux-5.8.0.orig/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c +++ linux-5.8.0/drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c @@ -146,12 +146,18 @@ return 0; } +static void int340x_thermal_critical(struct thermal_zone_device *zone) +{ + dev_dbg(&zone->device, "%s: critical temperature reached\n", zone->type); +} + static struct thermal_zone_device_ops int340x_thermal_zone_ops = { .get_temp = int340x_thermal_get_zone_temp, .get_trip_temp = int340x_thermal_get_trip_temp, .get_trip_type = int340x_thermal_get_trip_type, .set_trip_temp = int340x_thermal_set_trip_temp, .get_trip_hyst = int340x_thermal_get_trip_hyst, + .critical = int340x_thermal_critical, }; static int int340x_thermal_get_trip_config(acpi_handle handle, char *name, --- linux-5.8.0.orig/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +++ linux-5.8.0/drivers/thermal/intel/int340x_thermal/processor_thermal_device.c @@ -43,7 +43,7 @@ #define PCI_DEVICE_ID_PROC_ICL_THERMAL 0x8a03 /* JasperLake thermal reporting device */ -#define PCI_DEVICE_ID_PROC_JSL_THERMAL 0x4503 +#define PCI_DEVICE_ID_PROC_JSL_THERMAL 0x4E03 /* TigerLake thermal reporting device */ #define PCI_DEVICE_ID_PROC_TGL_THERMAL 0x9A03 --- linux-5.8.0.orig/drivers/thermal/intel/intel_pch_thermal.c +++ linux-5.8.0/drivers/thermal/intel/intel_pch_thermal.c @@ -263,10 +263,16 @@ return 0; } +static void pch_critical(struct thermal_zone_device *tzd) +{ + dev_dbg(&tzd->device, "%s: critical temperature reached\n", tzd->type); +} + static struct thermal_zone_device_ops tzd_ops = { .get_temp = pch_thermal_get_temp, .get_trip_type = pch_get_trip_type, .get_trip_temp = pch_get_trip_temp, + .critical = pch_critical, }; enum board_ids { --- linux-5.8.0.orig/drivers/thermal/qcom/qcom-spmi-temp-alarm.c +++ linux-5.8.0/drivers/thermal/qcom/qcom-spmi-temp-alarm.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2011-2015, 2017, The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2015, 2017, 2020, The Linux Foundation. All rights reserved. */ #include @@ -191,7 +191,7 @@ chip->temp = mili_celsius; } - *temp = chip->temp < 0 ? 0 : chip->temp; + *temp = chip->temp; return 0; } --- linux-5.8.0.orig/drivers/thermal/rcar_thermal.c +++ linux-5.8.0/drivers/thermal/rcar_thermal.c @@ -323,24 +323,6 @@ return 0; } -static int rcar_thermal_notify(struct thermal_zone_device *zone, - int trip, enum thermal_trip_type type) -{ - struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone); - struct device *dev = rcar_priv_to_dev(priv); - - switch (type) { - case THERMAL_TRIP_CRITICAL: - /* FIXME */ - dev_warn(dev, "Thermal reached to critical temperature\n"); - break; - default: - break; - } - - return 0; -} - static const struct thermal_zone_of_device_ops rcar_thermal_zone_of_ops = { .get_temp = rcar_thermal_of_get_temp, }; @@ -349,7 +331,6 @@ .get_temp = rcar_thermal_get_temp, .get_trip_type = rcar_thermal_get_trip_type, .get_trip_temp = rcar_thermal_get_trip_temp, - .notify = rcar_thermal_notify, }; /* --- linux-5.8.0.orig/drivers/thermal/thermal_core.c +++ linux-5.8.0/drivers/thermal/thermal_core.c @@ -369,6 +369,25 @@ msecs_to_jiffies(poweroff_delay_ms)); } +void thermal_zone_device_critical(struct thermal_zone_device *tz) +{ + dev_emerg(&tz->device, "%s: critical temperature reached, " + "shutting down\n", tz->type); + + mutex_lock(&poweroff_lock); + if (!power_off_triggered) { + /* + * Queue a backup emergency shutdown in the event of + * orderly_poweroff failure + */ + thermal_emergency_poweroff(); + orderly_poweroff(true); + power_off_triggered = true; + } + mutex_unlock(&poweroff_lock); +} +EXPORT_SYMBOL(thermal_zone_device_critical); + static void handle_critical_trips(struct thermal_zone_device *tz, int trip, enum thermal_trip_type trip_type) { @@ -385,22 +404,10 @@ if (tz->ops->notify) tz->ops->notify(tz, trip, trip_type); - if (trip_type == THERMAL_TRIP_CRITICAL) { - dev_emerg(&tz->device, - "critical temperature reached (%d C), shutting down\n", - tz->temperature / 1000); - mutex_lock(&poweroff_lock); - if (!power_off_triggered) { - /* - * Queue a backup emergency shutdown in the event of - * orderly_poweroff failure - */ - thermal_emergency_poweroff(); - orderly_poweroff(true); - power_off_triggered = true; - } - mutex_unlock(&poweroff_lock); - } + if (trip_type == THERMAL_TRIP_HOT && tz->ops->hot) + tz->ops->hot(tz); + else if (trip_type == THERMAL_TRIP_CRITICAL) + tz->ops->critical(tz); } static void handle_thermal_trip(struct thermal_zone_device *tz, int trip) @@ -467,7 +474,8 @@ if (atomic_read(&in_suspend)) return; - if (!tz->ops->get_temp) + if (WARN_ONCE(!tz->ops->get_temp, "'%s' must not be called without " + "'get_temp' ops set\n", __func__)) return; update_temperature(tz); @@ -1272,6 +1280,10 @@ tz->id = id; strlcpy(tz->type, type, sizeof(tz->type)); + + if (!ops->critical) + ops->critical = thermal_zone_device_critical; + tz->ops = ops; tz->tzp = tzp; tz->device.class = &thermal_class; --- linux-5.8.0.orig/drivers/thermal/thermal_sysfs.c +++ linux-5.8.0/drivers/thermal/thermal_sysfs.c @@ -770,6 +770,9 @@ { struct cooling_dev_stats *stats = cdev->stats; + if (!stats) + return; + spin_lock(&stats->lock); if (stats->state == new_state) --- linux-5.8.0.orig/drivers/thermal/ti-soc-thermal/omap4-thermal-data.c +++ linux-5.8.0/drivers/thermal/ti-soc-thermal/omap4-thermal-data.c @@ -37,20 +37,21 @@ /* * Temperature values in milli degree celsius - * ADC code values from 530 to 923 + * ADC code values from 13 to 107, see TRM + * "18.4.10.2.3 ADC Codes Versus Temperature". */ static const int omap4430_adc_to_temp[OMAP4430_ADC_END_VALUE - OMAP4430_ADC_START_VALUE + 1] = { - -38000, -35000, -34000, -32000, -30000, -28000, -26000, -24000, -22000, - -20000, -18000, -17000, -15000, -13000, -12000, -10000, -8000, -6000, - -5000, -3000, -1000, 0, 2000, 3000, 5000, 6000, 8000, 10000, 12000, - 13000, 15000, 17000, 19000, 21000, 23000, 25000, 27000, 28000, 30000, - 32000, 33000, 35000, 37000, 38000, 40000, 42000, 43000, 45000, 47000, - 48000, 50000, 52000, 53000, 55000, 57000, 58000, 60000, 62000, 64000, - 66000, 68000, 70000, 71000, 73000, 75000, 77000, 78000, 80000, 82000, - 83000, 85000, 87000, 88000, 90000, 92000, 93000, 95000, 97000, 98000, - 100000, 102000, 103000, 105000, 107000, 109000, 111000, 113000, 115000, - 117000, 118000, 120000, 122000, 123000, + -40000, -38000, -35000, -34000, -32000, -30000, -28000, -26000, -24000, + -22000, -20000, -18500, -17000, -15000, -13500, -12000, -10000, -8000, + -6500, -5000, -3500, -1500, 0, 2000, 3500, 5000, 6500, 8500, 10000, + 12000, 13500, 15000, 17000, 19000, 21000, 23000, 25000, 27000, 28500, + 30000, 32000, 33500, 35000, 37000, 38500, 40000, 42000, 43500, 45000, + 47000, 48500, 50000, 52000, 53500, 55000, 57000, 58500, 60000, 62000, + 64000, 66000, 68000, 70000, 71500, 73500, 75000, 77000, 78500, 80000, + 82000, 83500, 85000, 87000, 88500, 90000, 92000, 93500, 95000, 97000, + 98500, 100000, 102000, 103500, 105000, 107000, 109000, 111000, 113000, + 115000, 117000, 118500, 120000, 122000, 123500, 125000, }; /* OMAP4430 data */ --- linux-5.8.0.orig/drivers/thermal/ti-soc-thermal/omap4xxx-bandgap.h +++ linux-5.8.0/drivers/thermal/ti-soc-thermal/omap4xxx-bandgap.h @@ -53,9 +53,13 @@ * and thresholds for OMAP4430. */ -/* ADC conversion table limits */ -#define OMAP4430_ADC_START_VALUE 0 -#define OMAP4430_ADC_END_VALUE 127 +/* + * ADC conversion table limits. Ignore values outside the TRM listed + * range to avoid bogus thermal shutdowns. See omap4430 TRM chapter + * "18.4.10.2.3 ADC Codes Versus Temperature". + */ +#define OMAP4430_ADC_START_VALUE 13 +#define OMAP4430_ADC_END_VALUE 107 /* bandgap clock limits (no control on 4430) */ #define OMAP4430_MAX_FREQ 32768 #define OMAP4430_MIN_FREQ 32768 --- linux-5.8.0.orig/drivers/thermal/ti-soc-thermal/ti-thermal-common.c +++ linux-5.8.0/drivers/thermal/ti-soc-thermal/ti-thermal-common.c @@ -169,7 +169,7 @@ data = ti_bandgap_get_sensor_data(bgp, id); - if (!IS_ERR_OR_NULL(data)) + if (IS_ERR_OR_NULL(data)) data = ti_thermal_build_data(bgp, id); if (!data) --- linux-5.8.0.orig/drivers/thunderbolt/eeprom.c +++ linux-5.8.0/drivers/thunderbolt/eeprom.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include "tb.h" @@ -389,8 +390,8 @@ struct tb_drom_entry_header *entry = (void *) (sw->drom + pos); if (pos + 1 == drom_size || pos + entry->len > drom_size || !entry->len) { - tb_sw_warn(sw, "drom buffer overrun, aborting\n"); - return -EIO; + tb_sw_warn(sw, "DROM buffer overrun\n"); + return -EILSEQ; } switch (entry->type) { @@ -526,7 +527,8 @@ u16 size; u32 crc; struct tb_drom_header *header; - int res; + int res, retries = 1; + if (sw->drom) return 0; @@ -611,7 +613,17 @@ tb_sw_warn(sw, "drom device_rom_revision %#x unknown\n", header->device_rom_revision); - return tb_drom_parse_entries(sw); + res = tb_drom_parse_entries(sw); + /* If the DROM parsing fails, wait a moment and retry once */ + if (res == -EILSEQ && retries--) { + tb_sw_warn(sw, "parsing DROM failed, retrying\n"); + msleep(100); + res = tb_drom_read_n(sw, 0, sw->drom, size); + if (!res) + goto parse; + } + + return res; err: kfree(sw->drom); sw->drom = NULL; --- linux-5.8.0.orig/drivers/thunderbolt/icm.c +++ linux-5.8.0/drivers/thunderbolt/icm.c @@ -1973,7 +1973,9 @@ static void remove_unplugged_switch(struct tb_switch *sw) { - pm_runtime_get_sync(sw->dev.parent); + struct device *parent = get_device(sw->dev.parent); + + pm_runtime_get_sync(parent); /* * Signal this and switches below for rpm_complete because @@ -1984,8 +1986,10 @@ bus_for_each_dev(&tb_bus_type, &sw->dev, NULL, complete_rpm); tb_switch_remove(sw); - pm_runtime_mark_last_busy(sw->dev.parent); - pm_runtime_put_autosuspend(sw->dev.parent); + pm_runtime_mark_last_busy(parent); + pm_runtime_put_autosuspend(parent); + + put_device(parent); } static void icm_free_unplugged_children(struct tb_switch *sw) --- linux-5.8.0.orig/drivers/thunderbolt/nhi.c +++ linux-5.8.0/drivers/thunderbolt/nhi.c @@ -410,12 +410,23 @@ ring->vector = ret; - ring->irq = pci_irq_vector(ring->nhi->pdev, ring->vector); - if (ring->irq < 0) - return ring->irq; + ret = pci_irq_vector(ring->nhi->pdev, ring->vector); + if (ret < 0) + goto err_ida_remove; + + ring->irq = ret; irqflags = no_suspend ? IRQF_NO_SUSPEND : 0; - return request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring); + ret = request_irq(ring->irq, ring_msix, irqflags, "thunderbolt", ring); + if (ret) + goto err_ida_remove; + + return 0; + +err_ida_remove: + ida_simple_remove(&nhi->msix_ida, ring->vector); + + return ret; } static void ring_release_msix(struct tb_ring *ring) --- linux-5.8.0.orig/drivers/thunderbolt/switch.c +++ linux-5.8.0/drivers/thunderbolt/switch.c @@ -739,6 +739,7 @@ if (res == -ENODEV) { tb_dbg(port->sw->tb, " Port %d: not implemented\n", port->port); + port->disabled = true; return 0; } return res; @@ -764,12 +765,6 @@ tb_dump_port(port->sw->tb, &port->config); - /* Control port does not need HopID allocation */ - if (port->port) { - ida_init(&port->in_hopids); - ida_init(&port->out_hopids); - } - INIT_LIST_HEAD(&port->list); return 0; @@ -1719,10 +1714,8 @@ dma_port_free(sw->dma_port); tb_switch_for_each_port(sw, port) { - if (!port->disabled) { - ida_destroy(&port->in_hopids); - ida_destroy(&port->out_hopids); - } + ida_destroy(&port->in_hopids); + ida_destroy(&port->out_hopids); } kfree(sw->uuid); @@ -1902,6 +1895,12 @@ /* minimum setup for tb_find_cap and tb_drom_read to work */ sw->ports[i].sw = sw; sw->ports[i].port = i; + + /* Control port does not need HopID allocation */ + if (i) { + ida_init(&sw->ports[i].in_hopids); + ida_init(&sw->ports[i].out_hopids); + } } ret = tb_switch_find_vse_cap(sw, TB_VSE_CAP_PLUG_EVENTS); --- linux-5.8.0.orig/drivers/thunderbolt/tb.h +++ linux-5.8.0/drivers/thunderbolt/tb.h @@ -167,7 +167,7 @@ * @cap_adap: Offset of the adapter specific capability (%0 if not present) * @cap_usb4: Offset to the USB4 port capability (%0 if not present) * @port: Port number on switch - * @disabled: Disabled by eeprom + * @disabled: Disabled by eeprom or enabled but not implemented * @bonded: true if the port is bonded (two lanes combined as one) * @dual_link_port: If the switch is connected using two ports, points * to the other port. --- linux-5.8.0.orig/drivers/thunderbolt/xdomain.c +++ linux-5.8.0/drivers/thunderbolt/xdomain.c @@ -830,6 +830,7 @@ id = ida_simple_get(&xd->service_ids, 0, 0, GFP_KERNEL); if (id < 0) { + kfree(svc->key); kfree(svc); break; } --- linux-5.8.0.orig/drivers/tty/hvc/Kconfig +++ linux-5.8.0/drivers/tty/hvc/Kconfig @@ -81,6 +81,7 @@ bool "ARM JTAG DCC console" depends on ARM || ARM64 select HVC_DRIVER + select SERIAL_CORE_CONSOLE help This console uses the JTAG DCC on ARM to create a console under the HVC driver. This console is used through a JTAG only on ARM. If you don't have --- linux-5.8.0.orig/drivers/tty/hvc/hvcs.c +++ linux-5.8.0/drivers/tty/hvc/hvcs.c @@ -1216,13 +1216,6 @@ tty_wait_until_sent(tty, HVCS_CLOSE_WAIT); - /* - * This line is important because it tells hvcs_open that this - * device needs to be re-configured the next time hvcs_open is - * called. - */ - tty->driver_data = NULL; - free_irq(irq, hvcsd); return; } else if (hvcsd->port.count < 0) { @@ -1237,6 +1230,13 @@ { struct hvcs_struct *hvcsd = tty->driver_data; + /* + * This line is important because it tells hvcs_open that this + * device needs to be re-configured the next time hvcs_open is + * called. + */ + tty->driver_data = NULL; + tty_port_put(&hvcsd->port); } --- linux-5.8.0.orig/drivers/tty/ipwireless/network.c +++ linux-5.8.0/drivers/tty/ipwireless/network.c @@ -117,7 +117,7 @@ skb->len, notify_packet_sent, network); - if (ret == -1) { + if (ret < 0) { skb_pull(skb, 2); return 0; } @@ -134,7 +134,7 @@ notify_packet_sent, network); kfree(buf); - if (ret == -1) + if (ret < 0) return 0; } kfree_skb(skb); --- linux-5.8.0.orig/drivers/tty/ipwireless/tty.c +++ linux-5.8.0/drivers/tty/ipwireless/tty.c @@ -218,7 +218,7 @@ ret = ipwireless_send_packet(tty->hardware, IPW_CHANNEL_RAS, buf, count, ipw_write_packet_sent_callback, tty); - if (ret == -1) { + if (ret < 0) { mutex_unlock(&tty->ipw_tty_mutex); return 0; } --- linux-5.8.0.orig/drivers/tty/n_tty.c +++ linux-5.8.0/drivers/tty/n_tty.c @@ -2079,9 +2079,6 @@ return 0; } -extern ssize_t redirected_tty_write(struct file *, const char __user *, - size_t, loff_t *); - /** * job_control - check job control * @tty: tty @@ -2103,7 +2100,7 @@ /* NOTE: not yet done after every sleep pending a thorough check of the logic of this change. -- jlc */ /* don't stop on /dev/console */ - if (file->f_op->write == redirected_tty_write) + if (file->f_op->write_iter == redirected_tty_write) return 0; return __tty_check_change(tty, SIGTTIN); @@ -2307,7 +2304,7 @@ ssize_t retval = 0; /* Job control check -- must be done at start (POSIX.1 7.1.1.4). */ - if (L_TOSTOP(tty) && file->f_op->write != redirected_tty_write) { + if (L_TOSTOP(tty) && file->f_op->write_iter != redirected_tty_write) { retval = tty_check_change(tty); if (retval) return retval; --- linux-5.8.0.orig/drivers/tty/pty.c +++ linux-5.8.0/drivers/tty/pty.c @@ -120,10 +120,10 @@ spin_lock_irqsave(&to->port->lock, flags); /* Stuff the data into the input queue of the other end */ c = tty_insert_flip_string(to->port, buf, c); + spin_unlock_irqrestore(&to->port->lock, flags); /* And shovel */ if (c) tty_flip_buffer_push(to->port); - spin_unlock_irqrestore(&to->port->lock, flags); } return c; } --- linux-5.8.0.orig/drivers/tty/serial/21285.c +++ linux-5.8.0/drivers/tty/serial/21285.c @@ -50,25 +50,25 @@ static bool is_enabled(struct uart_port *port, int bit) { - unsigned long private_data = (unsigned long)port->private_data; + unsigned long *private_data = (unsigned long *)&port->private_data; - if (test_bit(bit, &private_data)) + if (test_bit(bit, private_data)) return true; return false; } static void enable(struct uart_port *port, int bit) { - unsigned long private_data = (unsigned long)port->private_data; + unsigned long *private_data = (unsigned long *)&port->private_data; - set_bit(bit, &private_data); + set_bit(bit, private_data); } static void disable(struct uart_port *port, int bit) { - unsigned long private_data = (unsigned long)port->private_data; + unsigned long *private_data = (unsigned long *)&port->private_data; - clear_bit(bit, &private_data); + clear_bit(bit, private_data); } #define is_tx_enabled(port) is_enabled(port, tx_enabled_bit) --- linux-5.8.0.orig/drivers/tty/serial/8250/8250_exar.c +++ linux-5.8.0/drivers/tty/serial/8250/8250_exar.c @@ -744,6 +744,24 @@ .exit = pci_xr17v35x_exit, }; +static const struct exar8250_board pbn_fastcom35x_2 = { + .num_ports = 2, + .setup = pci_xr17v35x_setup, + .exit = pci_xr17v35x_exit, +}; + +static const struct exar8250_board pbn_fastcom35x_4 = { + .num_ports = 4, + .setup = pci_xr17v35x_setup, + .exit = pci_xr17v35x_exit, +}; + +static const struct exar8250_board pbn_fastcom35x_8 = { + .num_ports = 8, + .setup = pci_xr17v35x_setup, + .exit = pci_xr17v35x_exit, +}; + static const struct exar8250_board pbn_exar_XR17V4358 = { .num_ports = 12, .setup = pci_xr17v35x_setup, @@ -811,9 +829,9 @@ EXAR_DEVICE(EXAR, XR17V358, pbn_exar_XR17V35x), EXAR_DEVICE(EXAR, XR17V4358, pbn_exar_XR17V4358), EXAR_DEVICE(EXAR, XR17V8358, pbn_exar_XR17V8358), - EXAR_DEVICE(COMMTECH, 4222PCIE, pbn_exar_XR17V35x), - EXAR_DEVICE(COMMTECH, 4224PCIE, pbn_exar_XR17V35x), - EXAR_DEVICE(COMMTECH, 4228PCIE, pbn_exar_XR17V35x), + EXAR_DEVICE(COMMTECH, 4222PCIE, pbn_fastcom35x_2), + EXAR_DEVICE(COMMTECH, 4224PCIE, pbn_fastcom35x_4), + EXAR_DEVICE(COMMTECH, 4228PCIE, pbn_fastcom35x_8), EXAR_DEVICE(COMMTECH, 4222PCI335, pbn_fastcom335_2), EXAR_DEVICE(COMMTECH, 4224PCI335, pbn_fastcom335_4), --- linux-5.8.0.orig/drivers/tty/serial/8250/8250_mtk.c +++ linux-5.8.0/drivers/tty/serial/8250/8250_mtk.c @@ -317,7 +317,7 @@ */ baud = tty_termios_baud_rate(termios); - serial8250_do_set_termios(port, termios, old); + serial8250_do_set_termios(port, termios, NULL); tty_termios_encode_baud_rate(termios, baud, baud); @@ -568,15 +568,22 @@ pm_runtime_enable(&pdev->dev); err = mtk8250_runtime_resume(&pdev->dev); if (err) - return err; + goto err_pm_disable; data->line = serial8250_register_8250_port(&uart); - if (data->line < 0) - return data->line; + if (data->line < 0) { + err = data->line; + goto err_pm_disable; + } data->rx_wakeup_irq = platform_get_irq_optional(pdev, 1); return 0; + +err_pm_disable: + pm_runtime_disable(&pdev->dev); + + return err; } static int mtk8250_remove(struct platform_device *pdev) --- linux-5.8.0.orig/drivers/tty/serial/8250/8250_omap.c +++ linux-5.8.0/drivers/tty/serial/8250/8250_omap.c @@ -184,11 +184,6 @@ struct omap8250_priv *priv) { u8 timeout = 255; - u8 old_mdr1; - - old_mdr1 = serial_in(up, UART_OMAP_MDR1); - if (old_mdr1 == priv->mdr1) - return; serial_out(up, UART_OMAP_MDR1, priv->mdr1); udelay(2); --- linux-5.8.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-5.8.0/drivers/tty/serial/8250/8250_pci.c @@ -5566,6 +5566,17 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_wch384_4 }, + /* + * Realtek RealManage + */ + { PCI_VENDOR_ID_REALTEK, 0x816a, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, pbn_b0_1_115200 }, + + { PCI_VENDOR_ID_REALTEK, 0x816b, + PCI_ANY_ID, PCI_ANY_ID, + 0, 0, pbn_b0_1_115200 }, + /* Fintek PCI serial cards */ { PCI_DEVICE(0x1c29, 0x1104), .driver_data = pbn_fintek_4 }, { PCI_DEVICE(0x1c29, 0x1108), .driver_data = pbn_fintek_8 }, --- linux-5.8.0.orig/drivers/tty/serial/8250/8250_port.c +++ linux-5.8.0/drivers/tty/serial/8250/8250_port.c @@ -2274,6 +2274,10 @@ if (port->irq && !(up->port.flags & UPF_NO_THRE_TEST)) { unsigned char iir1; + + if (port->irqflags & IRQF_SHARED) + disable_irq_nosync(port->irq); + /* * Test for UARTs that do not reassert THRE when the * transmitter is idle and the interrupt has already @@ -2283,8 +2287,6 @@ * allow register changes to become visible. */ spin_lock_irqsave(&port->lock, flags); - if (up->port.irqflags & IRQF_SHARED) - disable_irq_nosync(port->irq); wait_for_xmitr(up, UART_LSR_THRE); serial_port_out_sync(port, UART_IER, UART_IER_THRI); @@ -2296,9 +2298,10 @@ iir = serial_port_in(port, UART_IIR); serial_port_out(port, UART_IER, 0); + spin_unlock_irqrestore(&port->lock, flags); + if (port->irqflags & IRQF_SHARED) enable_irq(port->irq); - spin_unlock_irqrestore(&port->lock, flags); /* * If the interrupt is not reasserted, or we otherwise --- linux-5.8.0.orig/drivers/tty/serial/Kconfig +++ linux-5.8.0/drivers/tty/serial/Kconfig @@ -8,6 +8,7 @@ config SERIAL_EARLYCON bool + depends on SERIAL_CORE help Support for early consoles with the earlycon parameter. This enables the console before standard serial driver is probed. The console is --- linux-5.8.0.orig/drivers/tty/serial/amba-pl011.c +++ linux-5.8.0/drivers/tty/serial/amba-pl011.c @@ -308,8 +308,9 @@ */ static int pl011_fifo_to_tty(struct uart_amba_port *uap) { - u16 status; unsigned int ch, flag, fifotaken; + int sysrq; + u16 status; for (fifotaken = 0; fifotaken != 256; fifotaken++) { status = pl011_read(uap, REG_FR); @@ -344,10 +345,12 @@ flag = TTY_FRAME; } - if (uart_handle_sysrq_char(&uap->port, ch & 255)) - continue; + spin_unlock(&uap->port.lock); + sysrq = uart_handle_sysrq_char(&uap->port, ch & 255); + spin_lock(&uap->port.lock); - uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); + if (!sysrq) + uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); } return fifotaken; @@ -2241,9 +2244,8 @@ clk_disable(uap->clk); } -static void __init -pl011_console_get_options(struct uart_amba_port *uap, int *baud, - int *parity, int *bits) +static void pl011_console_get_options(struct uart_amba_port *uap, int *baud, + int *parity, int *bits) { if (pl011_read(uap, REG_CR) & UART01x_CR_UARTEN) { unsigned int lcr_h, ibrd, fbrd; @@ -2276,7 +2278,7 @@ } } -static int __init pl011_console_setup(struct console *co, char *options) +static int pl011_console_setup(struct console *co, char *options) { struct uart_amba_port *uap; int baud = 38400; @@ -2344,8 +2346,8 @@ * * Returns 0 if console matches; otherwise non-zero to use default matching */ -static int __init pl011_console_match(struct console *co, char *name, int idx, - char *options) +static int pl011_console_match(struct console *co, char *name, int idx, + char *options) { unsigned char iotype; resource_size_t addr; @@ -2616,7 +2618,7 @@ static int pl011_register_port(struct uart_amba_port *uap) { - int ret; + int ret, i; /* Ensure interrupts from this UART are masked and cleared */ pl011_write(0, uap, REG_IMSC); @@ -2627,6 +2629,9 @@ if (ret < 0) { dev_err(uap->port.dev, "Failed to register AMBA-PL011 driver\n"); + for (i = 0; i < ARRAY_SIZE(amba_ports); i++) + if (amba_ports[i] == uap) + amba_ports[i] = NULL; return ret; } } --- linux-5.8.0.orig/drivers/tty/serial/ar933x_uart.c +++ linux-5.8.0/drivers/tty/serial/ar933x_uart.c @@ -789,8 +789,10 @@ goto err_disable_clk; up->gpios = mctrl_gpio_init(port, 0); - if (IS_ERR(up->gpios) && PTR_ERR(up->gpios) != -ENOSYS) - return PTR_ERR(up->gpios); + if (IS_ERR(up->gpios) && PTR_ERR(up->gpios) != -ENOSYS) { + ret = PTR_ERR(up->gpios); + goto err_disable_clk; + } up->rts_gpiod = mctrl_gpio_to_gpiod(up->gpios, UART_GPIO_RTS); --- linux-5.8.0.orig/drivers/tty/serial/fsl_lpuart.c +++ linux-5.8.0/drivers/tty/serial/fsl_lpuart.c @@ -314,9 +314,10 @@ /* Forward declare this for the dma callbacks*/ static void lpuart_dma_tx_complete(void *arg); -static inline bool is_ls1028a_lpuart(struct lpuart_port *sport) +static inline bool is_layerscape_lpuart(struct lpuart_port *sport) { - return sport->devtype == LS1028A_LPUART; + return (sport->devtype == LS1021A_LPUART || + sport->devtype == LS1028A_LPUART); } static inline bool is_imx8qxp_lpuart(struct lpuart_port *sport) @@ -649,26 +650,24 @@ spin_lock_irqsave(&sport->port.lock, flags); /* Disable Rx & Tx */ - lpuart32_write(&sport->port, UARTCTRL, 0); + lpuart32_write(&sport->port, 0, UARTCTRL); temp = lpuart32_read(&sport->port, UARTFIFO); /* Enable Rx and Tx FIFO */ - lpuart32_write(&sport->port, UARTFIFO, - temp | UARTFIFO_RXFE | UARTFIFO_TXFE); + lpuart32_write(&sport->port, temp | UARTFIFO_RXFE | UARTFIFO_TXFE, UARTFIFO); /* flush Tx and Rx FIFO */ - lpuart32_write(&sport->port, UARTFIFO, - UARTFIFO_TXFLUSH | UARTFIFO_RXFLUSH); + lpuart32_write(&sport->port, UARTFIFO_TXFLUSH | UARTFIFO_RXFLUSH, UARTFIFO); /* explicitly clear RDRF */ if (lpuart32_read(&sport->port, UARTSTAT) & UARTSTAT_RDRF) { lpuart32_read(&sport->port, UARTDATA); - lpuart32_write(&sport->port, UARTFIFO, UARTFIFO_RXUF); + lpuart32_write(&sport->port, UARTFIFO_RXUF, UARTFIFO); } /* Enable Rx and Tx */ - lpuart32_write(&sport->port, UARTCTRL, UARTCTRL_RE | UARTCTRL_TE); + lpuart32_write(&sport->port, UARTCTRL_RE | UARTCTRL_TE, UARTCTRL); spin_unlock_irqrestore(&sport->port.lock, flags); return 0; @@ -677,12 +676,12 @@ static void lpuart32_poll_put_char(struct uart_port *port, unsigned char c) { lpuart32_wait_bit_set(port, UARTSTAT, UARTSTAT_TDRE); - lpuart32_write(port, UARTDATA, c); + lpuart32_write(port, c, UARTDATA); } static int lpuart32_poll_get_char(struct uart_port *port) { - if (!(lpuart32_read(port, UARTSTAT) & UARTSTAT_RDRF)) + if (!(lpuart32_read(port, UARTWATER) >> UARTWATER_RXCNT_OFF)) return NO_POLL_CHAR; return lpuart32_read(port, UARTDATA); @@ -1646,11 +1645,11 @@ UARTFIFO_FIFOSIZE_MASK); /* - * The LS1028A has a fixed length of 16 words. Although it supports the - * RX/TXSIZE fields their encoding is different. Eg the reference manual - * states 0b101 is 16 words. + * The LS1021A and LS1028A have a fixed FIFO depth of 16 words. + * Although they support the RX/TXSIZE fields, their encoding is + * different. Eg the reference manual states 0b101 is 16 words. */ - if (is_ls1028a_lpuart(sport)) { + if (is_layerscape_lpuart(sport)) { sport->rxfifo_size = 16; sport->txfifo_size = 16; sport->port.fifosize = sport->txfifo_size; --- linux-5.8.0.orig/drivers/tty/serial/imx.c +++ linux-5.8.0/drivers/tty/serial/imx.c @@ -873,8 +873,14 @@ struct imx_port *sport = dev_id; unsigned int usr1, usr2, ucr1, ucr2, ucr3, ucr4; irqreturn_t ret = IRQ_NONE; + unsigned long flags = 0; - spin_lock(&sport->port.lock); + /* + * IRQs might not be disabled upon entering this interrupt handler, + * e.g. when interrupt handlers are forced to be threaded. To support + * this scenario as well, disable IRQs when acquiring the spinlock. + */ + spin_lock_irqsave(&sport->port.lock, flags); usr1 = imx_uart_readl(sport, USR1); usr2 = imx_uart_readl(sport, USR2); @@ -944,7 +950,7 @@ ret = IRQ_HANDLED; } - spin_unlock(&sport->port.lock); + spin_unlock_irqrestore(&sport->port.lock, flags); return ret; } @@ -1937,16 +1943,6 @@ unsigned int ucr1; unsigned long flags = 0; int locked = 1; - int retval; - - retval = clk_enable(sport->clk_per); - if (retval) - return; - retval = clk_enable(sport->clk_ipg); - if (retval) { - clk_disable(sport->clk_per); - return; - } if (sport->port.sysrq) locked = 0; @@ -1982,9 +1978,6 @@ if (locked) spin_unlock_irqrestore(&sport->port.lock, flags); - - clk_disable(sport->clk_ipg); - clk_disable(sport->clk_per); } /* @@ -2085,15 +2078,14 @@ retval = uart_set_options(&sport->port, co, baud, parity, bits, flow); - clk_disable(sport->clk_ipg); if (retval) { - clk_unprepare(sport->clk_ipg); + clk_disable_unprepare(sport->clk_ipg); goto error_console; } - retval = clk_prepare(sport->clk_per); + retval = clk_prepare_enable(sport->clk_per); if (retval) - clk_unprepare(sport->clk_ipg); + clk_disable_unprepare(sport->clk_ipg); error_console: return retval; --- linux-5.8.0.orig/drivers/tty/serial/mvebu-uart.c +++ linux-5.8.0/drivers/tty/serial/mvebu-uart.c @@ -648,6 +648,14 @@ (val & STAT_TX_RDY(port)), 1, 10000); } +static void wait_for_xmite(struct uart_port *port) +{ + u32 val; + + readl_poll_timeout_atomic(port->membase + UART_STAT, val, + (val & STAT_TX_EMP), 1, 10000); +} + static void mvebu_uart_console_putchar(struct uart_port *port, int ch) { wait_for_xmitr(port); @@ -675,7 +683,7 @@ uart_console_write(port, s, count, mvebu_uart_console_putchar); - wait_for_xmitr(port); + wait_for_xmite(port); if (ier) writel(ier, port->membase + UART_CTRL(port)); --- linux-5.8.0.orig/drivers/tty/serial/pmac_zilog.c +++ linux-5.8.0/drivers/tty/serial/pmac_zilog.c @@ -1692,22 +1692,26 @@ #else +/* On PCI PowerMacs, pmz_probe() does an explicit search of the OpenFirmware + * tree to obtain the device_nodes needed to start the console before the + * macio driver. On Macs without OpenFirmware, global platform_devices take + * the place of those device_nodes. + */ extern struct platform_device scc_a_pdev, scc_b_pdev; static int __init pmz_init_port(struct uart_pmac_port *uap) { - struct resource *r_ports; - int irq; + struct resource *r_ports, *r_irq; r_ports = platform_get_resource(uap->pdev, IORESOURCE_MEM, 0); - irq = platform_get_irq(uap->pdev, 0); - if (!r_ports || irq <= 0) + r_irq = platform_get_resource(uap->pdev, IORESOURCE_IRQ, 0); + if (!r_ports || !r_irq) return -ENODEV; uap->port.mapbase = r_ports->start; uap->port.membase = (unsigned char __iomem *) r_ports->start; uap->port.iotype = UPIO_MEM; - uap->port.irq = irq; + uap->port.irq = r_irq->start; uap->port.uartclk = ZS_CLOCK; uap->port.fifosize = 1; uap->port.ops = &pmz_pops; --- linux-5.8.0.orig/drivers/tty/serial/qcom_geni_serial.c +++ linux-5.8.0/drivers/tty/serial/qcom_geni_serial.c @@ -954,7 +954,7 @@ sampling_rate = UART_OVERSAMPLING; /* Sampling rate is halved for IP versions >= 2.5 */ ver = geni_se_get_qup_hw_version(&port->se); - if (GENI_SE_VERSION_MAJOR(ver) >= 2 && GENI_SE_VERSION_MINOR(ver) >= 5) + if (ver >= QUP_SE_VERSION_2_5) sampling_rate /= 2; clk_rate = get_clk_div_rate(baud, sampling_rate, &clk_div); @@ -1047,7 +1047,7 @@ } #ifdef CONFIG_SERIAL_QCOM_GENI_CONSOLE -static int __init qcom_geni_console_setup(struct console *co, char *options) +static int qcom_geni_console_setup(struct console *co, char *options) { struct uart_port *uport; struct qcom_geni_serial_port *port; --- linux-5.8.0.orig/drivers/tty/serial/samsung_tty.c +++ linux-5.8.0/drivers/tty/serial/samsung_tty.c @@ -1911,9 +1911,11 @@ ourport->tx_irq = ret + 1; } - ret = platform_get_irq(platdev, 1); - if (ret > 0) - ourport->tx_irq = ret; + if (!s3c24xx_serial_has_interrupt_mask(port)) { + ret = platform_get_irq(platdev, 1); + if (ret > 0) + ourport->tx_irq = ret; + } /* * DMA is currently supported only on DT platforms, if DMA properties * are specified. --- linux-5.8.0.orig/drivers/tty/serial/serial_core.c +++ linux-5.8.0/drivers/tty/serial/serial_core.c @@ -1466,6 +1466,10 @@ { struct uart_state *state = tty->driver_data; struct uart_port *uport; + struct tty_port *port = &state->port; + + if (!tty_port_initialized(port)) + return; mutex_lock(&state->port.mutex); uport = uart_port_check(state); @@ -1914,24 +1918,12 @@ return uart_console(port) && (port->cons->flags & CON_ENABLED); } -static void __uart_port_spin_lock_init(struct uart_port *port) +static void uart_port_spin_lock_init(struct uart_port *port) { spin_lock_init(&port->lock); lockdep_set_class(&port->lock, &port_lock_key); } -/* - * Ensure that the serial console lock is initialised early. - * If this port is a console, then the spinlock is already initialised. - */ -static inline void uart_port_spin_lock_init(struct uart_port *port) -{ - if (uart_console(port)) - return; - - __uart_port_spin_lock_init(port); -} - #if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(CONFIG_CONSOLE_POLL) /** * uart_console_write - write a console message to a serial port @@ -2084,7 +2076,15 @@ struct ktermios termios; static struct ktermios dummy; - uart_port_spin_lock_init(port); + /* + * Ensure that the serial-console lock is initialised early. + * + * Note that the console-enabled check is needed because of kgdboc, + * which can end up calling uart_set_options() for an already enabled + * console via tty_find_polling_driver() and uart_poll_init(). + */ + if (!uart_console_enabled(port) && !port->console_reinit) + uart_port_spin_lock_init(port); memset(&termios, 0, sizeof(struct ktermios)); @@ -2376,13 +2376,6 @@ uart_change_pm(state, UART_PM_STATE_ON); /* - * If this driver supports console, and it hasn't been - * successfully registered yet, initialise spin lock for it. - */ - if (port->cons && !(port->cons->flags & CON_ENABLED)) - __uart_port_spin_lock_init(port); - - /* * Ensure that the modem control lines are de-activated. * keep the DTR setting that is set in uart_set_options() * We probably don't need a spinlock around this, but @@ -2798,10 +2791,12 @@ if (oldconsole && !newconsole) { ret = unregister_console(uport->cons); } else if (!oldconsole && newconsole) { - if (uart_console(uport)) + if (uart_console(uport)) { + uport->console_reinit = 1; register_console(uport->cons); - else + } else { ret = -ENOENT; + } } } else { ret = -ENXIO; @@ -2897,7 +2892,12 @@ goto out; } - uart_port_spin_lock_init(uport); + /* + * If this port is in use as a console then the spinlock is already + * initialised. + */ + if (!uart_console_enabled(uport)) + uart_port_spin_lock_init(uport); if (uport->cons && uport->dev) of_console_check(uport->dev->of_node, uport->cons->name, uport->line); --- linux-5.8.0.orig/drivers/tty/serial/serial_txx9.c +++ linux-5.8.0/drivers/tty/serial/serial_txx9.c @@ -1280,6 +1280,9 @@ #ifdef ENABLE_SERIAL_TXX9_PCI ret = pci_register_driver(&serial_txx9_pci_driver); + if (ret) { + platform_driver_unregister(&serial_txx9_plat_driver); + } #endif if (ret == 0) goto out; --- linux-5.8.0.orig/drivers/tty/serial/sifive.c +++ linux-5.8.0/drivers/tty/serial/sifive.c @@ -1000,6 +1000,7 @@ /* Set up clock divider */ ssp->clkin_rate = clk_get_rate(ssp->clk); ssp->baud_rate = SIFIVE_DEFAULT_BAUD_RATE; + ssp->port.uartclk = ssp->baud_rate * 16; __ssp_update_div(ssp); platform_set_drvdata(pdev, ssp); --- linux-5.8.0.orig/drivers/tty/serial/stm32-usart.c +++ linux-5.8.0/drivers/tty/serial/stm32-usart.c @@ -350,7 +350,6 @@ struct stm32_usart_offsets *ofs = &stm32port->info->ofs; struct circ_buf *xmit = &port->state->xmit; struct dma_async_tx_descriptor *desc = NULL; - dma_cookie_t cookie; unsigned int count, i; if (stm32port->tx_dma_busy) @@ -384,17 +383,18 @@ DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT); - if (!desc) { - for (i = count; i > 0; i--) - stm32_transmit_chars_pio(port); - return; - } + if (!desc) + goto fallback_err; desc->callback = stm32_tx_dma_complete; desc->callback_param = port; /* Push current DMA TX transaction in the pending queue */ - cookie = dmaengine_submit(desc); + if (dma_submit_error(dmaengine_submit(desc))) { + /* dma no yet started, safe to free resources */ + dmaengine_terminate_async(stm32port->tx_ch); + goto fallback_err; + } /* Issue pending DMA TX requests */ dma_async_issue_pending(stm32port->tx_ch); @@ -403,6 +403,11 @@ xmit->tail = (xmit->tail + count) & (UART_XMIT_SIZE - 1); port->icount.tx += count; + return; + +fallback_err: + for (i = count; i > 0; i--) + stm32_transmit_chars_pio(port); } static void stm32_transmit_chars(struct uart_port *port) @@ -962,7 +967,7 @@ return ret; if (stm32port->info->cfg.has_wakeup) { - stm32port->wakeirq = platform_get_irq(pdev, 1); + stm32port->wakeirq = platform_get_irq_optional(pdev, 1); if (stm32port->wakeirq <= 0 && stm32port->wakeirq != -ENXIO) return stm32port->wakeirq ? : -ENODEV; } @@ -1061,7 +1066,6 @@ struct device *dev = &pdev->dev; struct dma_slave_config config; struct dma_async_tx_descriptor *desc = NULL; - dma_cookie_t cookie; int ret; /* Request DMA RX channel */ @@ -1106,7 +1110,11 @@ desc->callback_param = NULL; /* Push current DMA transaction in the pending queue */ - cookie = dmaengine_submit(desc); + ret = dma_submit_error(dmaengine_submit(desc)); + if (ret) { + dmaengine_terminate_sync(stm32port->rx_ch); + goto config_err; + } /* Issue pending DMA requests */ dma_async_issue_pending(stm32port->rx_ch); --- linux-5.8.0.orig/drivers/tty/tty_io.c +++ linux-5.8.0/drivers/tty/tty_io.c @@ -143,12 +143,9 @@ DEFINE_MUTEX(tty_mutex); static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *); -static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *); -ssize_t redirected_tty_write(struct file *, const char __user *, - size_t, loff_t *); +static ssize_t tty_write(struct kiocb *, struct iov_iter *); static __poll_t tty_poll(struct file *, poll_table *); static int tty_open(struct inode *, struct file *); -long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg); #ifdef CONFIG_COMPAT static long tty_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg); @@ -438,8 +435,7 @@ return 0; } -static ssize_t hung_up_tty_write(struct file *file, const char __user *buf, - size_t count, loff_t *ppos) +static ssize_t hung_up_tty_write(struct kiocb *iocb, struct iov_iter *from) { return -EIO; } @@ -478,7 +474,8 @@ static const struct file_operations tty_fops = { .llseek = no_llseek, .read = tty_read, - .write = tty_write, + .write_iter = tty_write, + .splice_write = iter_file_splice_write, .poll = tty_poll, .unlocked_ioctl = tty_ioctl, .compat_ioctl = tty_compat_ioctl, @@ -491,7 +488,8 @@ static const struct file_operations console_fops = { .llseek = no_llseek, .read = tty_read, - .write = redirected_tty_write, + .write_iter = redirected_tty_write, + .splice_write = iter_file_splice_write, .poll = tty_poll, .unlocked_ioctl = tty_ioctl, .compat_ioctl = tty_compat_ioctl, @@ -503,7 +501,7 @@ static const struct file_operations hung_up_tty_fops = { .llseek = no_llseek, .read = hung_up_tty_read, - .write = hung_up_tty_write, + .write_iter = hung_up_tty_write, .poll = hung_up_tty_poll, .unlocked_ioctl = hung_up_tty_ioctl, .compat_ioctl = hung_up_tty_compat_ioctl, @@ -607,9 +605,9 @@ /* This breaks for file handles being sent over AF_UNIX sockets ? */ list_for_each_entry(priv, &tty->tty_files, list) { filp = priv->file; - if (filp->f_op->write == redirected_tty_write) + if (filp->f_op->write_iter == redirected_tty_write) cons_filp = filp; - if (filp->f_op->write != tty_write) + if (filp->f_op->write_iter != tty_write) continue; closecount++; __tty_fasync(-1, filp, 0); /* can't block */ @@ -902,9 +900,9 @@ ssize_t (*write)(struct tty_struct *, struct file *, const unsigned char *, size_t), struct tty_struct *tty, struct file *file, - const char __user *buf, - size_t count) + struct iov_iter *from) { + size_t count = iov_iter_count(from); ssize_t ret, written = 0; unsigned int chunk; @@ -956,14 +954,23 @@ size_t size = count; if (size > chunk) size = chunk; + ret = -EFAULT; - if (copy_from_user(tty->write_buf, buf, size)) + if (copy_from_iter(tty->write_buf, size, from) != size) break; + ret = write(tty, file, tty->write_buf, size); if (ret <= 0) break; + written += ret; - buf += ret; + if (ret > size) + break; + + /* FIXME! Have Al check this! */ + if (ret != size) + iov_iter_revert(from, size-ret); + count -= ret; if (!count) break; @@ -1023,8 +1030,7 @@ * write method will not be invoked in parallel for each device. */ -static ssize_t tty_write(struct file *file, const char __user *buf, - size_t count, loff_t *ppos) +static ssize_t file_tty_write(struct file *file, struct kiocb *iocb, struct iov_iter *from) { struct tty_struct *tty = file_tty(file); struct tty_ldisc *ld; @@ -1039,17 +1045,21 @@ tty_err(tty, "missing write_room method\n"); ld = tty_ldisc_ref_wait(tty); if (!ld) - return hung_up_tty_write(file, buf, count, ppos); + return hung_up_tty_write(iocb, from); if (!ld->ops->write) ret = -EIO; else - ret = do_tty_write(ld->ops->write, tty, file, buf, count); + ret = do_tty_write(ld->ops->write, tty, file, from); tty_ldisc_deref(ld); return ret; } -ssize_t redirected_tty_write(struct file *file, const char __user *buf, - size_t count, loff_t *ppos) +static ssize_t tty_write(struct kiocb *iocb, struct iov_iter *from) +{ + return file_tty_write(iocb->ki_filp, iocb, from); +} + +ssize_t redirected_tty_write(struct kiocb *iocb, struct iov_iter *iter) { struct file *p = NULL; @@ -1058,13 +1068,17 @@ p = get_file(redirect); spin_unlock(&redirect_lock); + /* + * We know the redirected tty is just another tty, we can can + * call file_tty_write() directly with that file pointer. + */ if (p) { ssize_t res; - res = vfs_write(p, buf, count, &p->f_pos); + res = file_tty_write(p, iocb, iter); fput(p); return res; } - return tty_write(file, buf, count, ppos); + return tty_write(iocb, iter); } /** @@ -1514,10 +1528,12 @@ tty->ops->shutdown(tty); tty_save_termios(tty); tty_driver_remove_tty(tty->driver, tty); - tty->port->itty = NULL; + if (tty->port) + tty->port->itty = NULL; if (tty->link) tty->link->port->itty = NULL; - tty_buffer_cancel_work(tty->port); + if (tty->port) + tty_buffer_cancel_work(tty->port); if (tty->link) tty_buffer_cancel_work(tty->link->port); @@ -2292,7 +2308,7 @@ { if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (file->f_op->write == redirected_tty_write) { + if (file->f_op->write_iter == redirected_tty_write) { struct file *f; spin_lock(&redirect_lock); f = redirect; @@ -2302,6 +2318,12 @@ fput(f); return 0; } + if (file->f_op->write_iter != tty_write) + return -ENOTTY; + if (!(file->f_mode & FMODE_WRITE)) + return -EBADF; + if (!(file->f_mode & FMODE_CAN_WRITE)) + return -EINVAL; spin_lock(&redirect_lock); if (redirect) { spin_unlock(&redirect_lock); @@ -2897,10 +2919,14 @@ struct task_struct *g, *p; struct pid *session; int i; + unsigned long flags; if (!tty) return; - session = tty->session; + + spin_lock_irqsave(&tty->ctrl_lock, flags); + session = get_pid(tty->session); + spin_unlock_irqrestore(&tty->ctrl_lock, flags); tty_ldisc_flush(tty); @@ -2932,6 +2958,7 @@ task_unlock(p); } while_each_thread(g, p); read_unlock(&tasklist_lock); + put_pid(session); #endif } --- linux-5.8.0.orig/drivers/tty/tty_jobctrl.c +++ linux-5.8.0/drivers/tty/tty_jobctrl.c @@ -103,8 +103,8 @@ put_pid(tty->session); put_pid(tty->pgrp); tty->pgrp = get_pid(task_pgrp(current)); - spin_unlock_irqrestore(&tty->ctrl_lock, flags); tty->session = get_pid(task_session(current)); + spin_unlock_irqrestore(&tty->ctrl_lock, flags); if (current->signal->tty) { tty_debug(tty, "current tty %s not NULL!!\n", current->signal->tty->name); @@ -293,20 +293,23 @@ spin_lock_irq(¤t->sighand->siglock); put_pid(current->signal->tty_old_pgrp); current->signal->tty_old_pgrp = NULL; - tty = tty_kref_get(current->signal->tty); + spin_unlock_irq(¤t->sighand->siglock); + if (tty) { unsigned long flags; + + tty_lock(tty); spin_lock_irqsave(&tty->ctrl_lock, flags); put_pid(tty->session); put_pid(tty->pgrp); tty->session = NULL; tty->pgrp = NULL; spin_unlock_irqrestore(&tty->ctrl_lock, flags); + tty_unlock(tty); tty_kref_put(tty); } - spin_unlock_irq(¤t->sighand->siglock); /* Now clear signal->tty under the lock */ read_lock(&tasklist_lock); session_clear_tty(task_session(current)); @@ -477,14 +480,19 @@ return -ENOTTY; if (retval) return retval; - if (!current->signal->tty || - (current->signal->tty != real_tty) || - (real_tty->session != task_session(current))) - return -ENOTTY; + if (get_user(pgrp_nr, p)) return -EFAULT; if (pgrp_nr < 0) return -EINVAL; + + spin_lock_irq(&real_tty->ctrl_lock); + if (!current->signal->tty || + (current->signal->tty != real_tty) || + (real_tty->session != task_session(current))) { + retval = -ENOTTY; + goto out_unlock_ctrl; + } rcu_read_lock(); pgrp = find_vpid(pgrp_nr); retval = -ESRCH; @@ -494,12 +502,12 @@ if (session_of_pgrp(pgrp) != task_session(current)) goto out_unlock; retval = 0; - spin_lock_irq(&tty->ctrl_lock); put_pid(real_tty->pgrp); real_tty->pgrp = get_pid(pgrp); - spin_unlock_irq(&tty->ctrl_lock); out_unlock: rcu_read_unlock(); +out_unlock_ctrl: + spin_unlock_irq(&real_tty->ctrl_lock); return retval; } @@ -511,20 +519,30 @@ * * Obtain the session id of the tty. If there is no session * return an error. - * - * Locking: none. Reference to current->signal->tty is safe. */ static int tiocgsid(struct tty_struct *tty, struct tty_struct *real_tty, pid_t __user *p) { + unsigned long flags; + pid_t sid; + /* * (tty == real_tty) is a cheap way of * testing if the tty is NOT a master pty. */ if (tty == real_tty && current->signal->tty != real_tty) return -ENOTTY; + + spin_lock_irqsave(&real_tty->ctrl_lock, flags); if (!real_tty->session) - return -ENOTTY; - return put_user(pid_vnr(real_tty->session), p); + goto err; + sid = pid_vnr(real_tty->session); + spin_unlock_irqrestore(&real_tty->ctrl_lock, flags); + + return put_user(sid, p); + +err: + spin_unlock_irqrestore(&real_tty->ctrl_lock, flags); + return -ENOTTY; } /* --- linux-5.8.0.orig/drivers/tty/vt/consolemap.c +++ linux-5.8.0/drivers/tty/vt/consolemap.c @@ -495,7 +495,7 @@ p2[unicode & 0x3f] = fontpos; - p->sum += (fontpos << 20) + unicode; + p->sum += (fontpos << 20U) + unicode; return 0; } --- linux-5.8.0.orig/drivers/tty/vt/keyboard.c +++ linux-5.8.0/drivers/tty/vt/keyboard.c @@ -742,8 +742,13 @@ return; if ((unsigned)value < ARRAY_SIZE(func_table)) { + unsigned long flags; + + spin_lock_irqsave(&func_buf_lock, flags); if (func_table[value]) puts_queue(vc, func_table[value]); + spin_unlock_irqrestore(&func_buf_lock, flags); + } else pr_err("k_fn called with value=%d\n", value); } @@ -1990,13 +1995,11 @@ #undef s #undef v -/* FIXME: This one needs untangling and locking */ +/* FIXME: This one needs untangling */ int vt_do_kdgkb_ioctl(int cmd, struct kbsentry __user *user_kdgkb, int perm) { struct kbsentry *kbs; - char *p; u_char *q; - u_char __user *up; int sz, fnw_sz; int delta; char *first_free, *fj, *fnw; @@ -2022,23 +2025,19 @@ i = kbs->kb_func; switch (cmd) { - case KDGKBSENT: - sz = sizeof(kbs->kb_string) - 1; /* sz should have been - a struct member */ - up = user_kdgkb->kb_string; - p = func_table[i]; - if(p) - for ( ; *p && sz; p++, sz--) - if (put_user(*p, up++)) { - ret = -EFAULT; - goto reterr; - } - if (put_user('\0', up)) { - ret = -EFAULT; - goto reterr; - } - kfree(kbs); - return ((p && *p) ? -EOVERFLOW : 0); + case KDGKBSENT: { + /* size should have been a struct member */ + ssize_t len = sizeof(user_kdgkb->kb_string); + + spin_lock_irqsave(&func_buf_lock, flags); + len = strlcpy(kbs->kb_string, func_table[i] ? : "", len); + spin_unlock_irqrestore(&func_buf_lock, flags); + + ret = copy_to_user(user_kdgkb->kb_string, kbs->kb_string, + len + 1) ? -EFAULT : 0; + + goto reterr; + } case KDSKBSENT: if (!perm) { ret = -EPERM; --- linux-5.8.0.orig/drivers/tty/vt/selection.c +++ linux-5.8.0/drivers/tty/vt/selection.c @@ -193,7 +193,7 @@ /* Allocate a new buffer before freeing the old one ... */ /* chars can take up to 4 bytes with unicode */ bp = kmalloc_array((vc_sel.end - vc_sel.start) / 2 + 1, unicode ? 4 : 1, - GFP_KERNEL); + GFP_KERNEL | __GFP_NOWARN); if (!bp) { printk(KERN_WARNING "selection: kmalloc() failed\n"); clear_selection(); --- linux-5.8.0.orig/drivers/tty/vt/vt.c +++ linux-5.8.0/drivers/tty/vt/vt.c @@ -106,6 +106,7 @@ #include #include #include +#include #define MAX_NR_CON_DRIVER 16 @@ -150,7 +151,7 @@ static int con_open(struct tty_struct *, struct file *); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear); + unsigned int cols, int do_clear, int mode); static void gotoxy(struct vc_data *vc, int new_x, int new_y); static void save_cur(struct vc_data *vc); static void reset_terminal(struct vc_data *vc, int do_clear); @@ -174,6 +175,9 @@ static int cur_default = CUR_DEFAULT; module_param(cur_default, int, S_IRUGO | S_IWUSR); +int vt_handoff = 0; +module_param_named(handoff, vt_handoff, int, S_IRUGO | S_IWUSR); + /* * ignore_poke: don't unblank the screen when things are typed. This is * mainly for the privacy of braille terminal users. @@ -1002,6 +1006,13 @@ } if (tty0dev) sysfs_notify(&tty0dev->kobj, NULL, "active"); + /* + * If we are switching away from a transparent VT the contents + * will be lost, convert it into a blank text console then + * it will be repainted blank if we ever switch back. + */ + if (old_vc->vc_mode == KD_TRANSPARENT) + old_vc->vc_mode = KD_TEXT; } else { hide_cursor(vc); redraw = 1; @@ -1148,7 +1159,7 @@ if (global_cursor_default == -1) global_cursor_default = 1; - vc_init(vc, vc->vc_rows, vc->vc_cols, 1); + vc_init(vc, vc->vc_rows, vc->vc_cols, 1, KD_TEXT); vcs_make_sysfs(currcons); atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); @@ -1196,7 +1207,7 @@ unsigned int old_rows, old_row_size, first_copied_row; unsigned int new_cols, new_rows, new_row_size, new_screen_size; unsigned int user; - unsigned short *newscreen; + unsigned short *oldscreen, *newscreen; struct uni_screen *new_uniscr = NULL; WARN_CONSOLE_UNLOCKED(); @@ -1294,10 +1305,11 @@ if (new_scr_end > new_origin) scr_memsetw((void *)new_origin, vc->vc_video_erase_char, new_scr_end - new_origin); - kfree(vc->vc_screenbuf); + oldscreen = vc->vc_screenbuf; vc->vc_screenbuf = newscreen; vc->vc_screenbuf_size = new_screen_size; set_origin(vc); + kfree(oldscreen); /* do part of a reset_terminal() */ vc->vc_top = 0; @@ -3325,7 +3337,7 @@ module_param_named(underline, default_underline_color, int, S_IRUGO | S_IWUSR); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear) + unsigned int cols, int do_clear, int mode) { int j, k ; @@ -3336,7 +3348,7 @@ set_origin(vc); vc->vc_pos = vc->vc_origin; - reset_vc(vc); + reset_vc(vc, mode); for (j=k=0; j<16; j++) { vc->vc_palette[k++] = default_red[j] ; vc->vc_palette[k++] = default_grn[j] ; @@ -3394,7 +3406,18 @@ mod_timer(&console_timer, jiffies + (blankinterval * HZ)); } + if (vt_handoff > 0 && vt_handoff <= MAX_NR_CONSOLES) { + currcons = vt_handoff - 1; + vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); + INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); + tty_port_init(&vc->port); + visual_init(vc, currcons, 1); + vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); + vc_init(vc, vc->vc_rows, vc->vc_cols, 0, KD_TRANSPARENT); + } for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) { + if (currcons == vt_handoff - 1) + continue; vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); tty_port_init(&vc->port); @@ -3402,9 +3425,14 @@ /* Assuming vc->vc_{cols,rows,screenbuf_size} are sane here. */ vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); vc_init(vc, vc->vc_rows, vc->vc_cols, - currcons || !vc->vc_sw->con_save_screen); + currcons || !vc->vc_sw->con_save_screen, KD_TEXT); } currcons = fg_console = 0; + if (vt_handoff > 0) { + printk(KERN_INFO "vt handoff: transparent VT on vt#%d\n", + vt_handoff); + currcons = fg_console = vt_handoff - 1; + } master_display_fg = vc = vc_cons[currcons].d; set_origin(vc); save_screen(vc); @@ -4615,27 +4643,6 @@ return rc; } -static int con_font_copy(struct vc_data *vc, struct console_font_op *op) -{ - int con = op->height; - int rc; - - - console_lock(); - if (vc->vc_mode != KD_TEXT) - rc = -EINVAL; - else if (!vc->vc_sw->con_font_copy) - rc = -ENOSYS; - else if (con < 0 || !vc_cons_allocated(con)) - rc = -ENOTTY; - else if (con == vc->vc_num) /* nothing to do */ - rc = 0; - else - rc = vc->vc_sw->con_font_copy(vc, con); - console_unlock(); - return rc; -} - int con_font_op(struct vc_data *vc, struct console_font_op *op) { switch (op->op) { @@ -4646,7 +4653,8 @@ case KD_FONT_OP_SET_DEFAULT: return con_font_default(vc, op); case KD_FONT_OP_COPY: - return con_font_copy(vc, op); + /* was buggy and never really used */ + return -EINVAL; } return -ENOSYS; } --- linux-5.8.0.orig/drivers/tty/vt/vt_ioctl.c +++ linux-5.8.0/drivers/tty/vt/vt_ioctl.c @@ -244,7 +244,7 @@ static inline int -do_fontx_ioctl(int cmd, struct consolefontdesc __user *user_cfd, int perm, struct console_font_op *op) +do_fontx_ioctl(struct vc_data *vc, int cmd, struct consolefontdesc __user *user_cfd, int perm, struct console_font_op *op) { struct consolefontdesc cfdarg; int i; @@ -262,15 +262,16 @@ op->height = cfdarg.charheight; op->charcount = cfdarg.charcount; op->data = cfdarg.chardata; - return con_font_op(vc_cons[fg_console].d, op); - case GIO_FONTX: { + return con_font_op(vc, op); + + case GIO_FONTX: op->op = KD_FONT_OP_GET; op->flags = KD_FONT_FLAG_OLD; op->width = 8; op->height = cfdarg.charheight; op->charcount = cfdarg.charcount; op->data = cfdarg.chardata; - i = con_font_op(vc_cons[fg_console].d, op); + i = con_font_op(vc, op); if (i) return i; cfdarg.charheight = op->height; @@ -278,7 +279,6 @@ if (copy_to_user(user_cfd, &cfdarg, sizeof(struct consolefontdesc))) return -EFAULT; return 0; - } } return -EINVAL; } @@ -893,12 +893,22 @@ console_lock(); vcp = vc_cons[i].d; if (vcp) { + int ret; + int save_scan_lines = vcp->vc_scan_lines; + int save_font_height = vcp->vc_font.height; + if (v.v_vlin) vcp->vc_scan_lines = v.v_vlin; if (v.v_clin) vcp->vc_font.height = v.v_clin; vcp->vc_resize_user = 1; - vc_resize(vcp, v.v_cols, v.v_rows); + ret = vc_resize(vcp, v.v_cols, v.v_rows); + if (ret) { + vcp->vc_scan_lines = save_scan_lines; + vcp->vc_font.height = save_font_height; + console_unlock(); + return ret; + } } console_unlock(); } @@ -914,7 +924,7 @@ op.height = 0; op.charcount = 256; op.data = up; - ret = con_font_op(vc_cons[fg_console].d, &op); + ret = con_font_op(vc, &op); break; } @@ -925,7 +935,7 @@ op.height = 32; op.charcount = 256; op.data = up; - ret = con_font_op(vc_cons[fg_console].d, &op); + ret = con_font_op(vc, &op); break; } @@ -942,7 +952,7 @@ case PIO_FONTX: case GIO_FONTX: - ret = do_fontx_ioctl(cmd, up, perm, &op); + ret = do_fontx_ioctl(vc, cmd, up, perm, &op); break; case PIO_FONTRESET: @@ -959,11 +969,11 @@ { op.op = KD_FONT_OP_SET_DEFAULT; op.data = NULL; - ret = con_font_op(vc_cons[fg_console].d, &op); + ret = con_font_op(vc, &op); if (ret) break; console_lock(); - con_set_default_unimap(vc_cons[fg_console].d); + con_set_default_unimap(vc); console_unlock(); break; } @@ -1042,9 +1052,9 @@ return ret; } -void reset_vc(struct vc_data *vc) +void reset_vc(struct vc_data *vc, int mode) { - vc->vc_mode = KD_TEXT; + vc->vc_mode = mode; vt_reset_unicode(vc->vc_num); vc->vt_mode.mode = VT_AUTO; vc->vt_mode.waitv = 0; @@ -1076,7 +1086,7 @@ */ if (tty) __do_SAK(tty); - reset_vc(vc); + reset_vc(vc, KD_TEXT); } console_unlock(); } @@ -1090,8 +1100,9 @@ }; static inline int -compat_fontx_ioctl(int cmd, struct compat_consolefontdesc __user *user_cfd, - int perm, struct console_font_op *op) +compat_fontx_ioctl(struct vc_data *vc, int cmd, + struct compat_consolefontdesc __user *user_cfd, + int perm, struct console_font_op *op) { struct compat_consolefontdesc cfdarg; int i; @@ -1109,7 +1120,8 @@ op->height = cfdarg.charheight; op->charcount = cfdarg.charcount; op->data = compat_ptr(cfdarg.chardata); - return con_font_op(vc_cons[fg_console].d, op); + return con_font_op(vc, op); + case GIO_FONTX: op->op = KD_FONT_OP_GET; op->flags = KD_FONT_FLAG_OLD; @@ -1117,7 +1129,7 @@ op->height = cfdarg.charheight; op->charcount = cfdarg.charcount; op->data = compat_ptr(cfdarg.chardata); - i = con_font_op(vc_cons[fg_console].d, op); + i = con_font_op(vc, op); if (i) return i; cfdarg.charheight = op->height; @@ -1207,7 +1219,7 @@ */ case PIO_FONTX: case GIO_FONTX: - return compat_fontx_ioctl(cmd, up, perm, &op); + return compat_fontx_ioctl(vc, cmd, up, perm, &op); case KDFONTOP: return compat_kdfontop_ioctl(up, perm, &op, vc); @@ -1311,7 +1323,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); if (old_vc_mode != vc->vc_mode) { if (vc->vc_mode == KD_TEXT) @@ -1383,7 +1395,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); /* * Fall through to normal (VT_AUTO) handling of the switch... --- linux-5.8.0.orig/drivers/uio/uio.c +++ linux-5.8.0/drivers/uio/uio.c @@ -413,10 +413,10 @@ return retval; } -static void uio_free_minor(struct uio_device *idev) +static void uio_free_minor(unsigned long minor) { mutex_lock(&minor_lock); - idr_remove(&uio_idr, idev->minor); + idr_remove(&uio_idr, minor); mutex_unlock(&minor_lock); } @@ -990,7 +990,7 @@ err_uio_dev_add_attributes: device_del(&idev->dev); err_device_create: - uio_free_minor(idev); + uio_free_minor(idev->minor); put_device(&idev->dev); return ret; } @@ -1042,13 +1042,13 @@ void uio_unregister_device(struct uio_info *info) { struct uio_device *idev; + unsigned long minor; if (!info || !info->uio_dev) return; idev = info->uio_dev; - - uio_free_minor(idev); + minor = idev->minor; mutex_lock(&idev->info_lock); uio_dev_del_attributes(idev); @@ -1064,6 +1064,8 @@ device_unregister(&idev->dev); + uio_free_minor(minor); + return; } EXPORT_SYMBOL_GPL(uio_unregister_device); --- linux-5.8.0.orig/drivers/usb/cdns3/cdns3-imx.c +++ linux-5.8.0/drivers/usb/cdns3/cdns3-imx.c @@ -149,7 +149,11 @@ } data->num_clks = ARRAY_SIZE(imx_cdns3_core_clks); - data->clks = (struct clk_bulk_data *)imx_cdns3_core_clks; + data->clks = devm_kmemdup(dev, imx_cdns3_core_clks, + sizeof(imx_cdns3_core_clks), GFP_KERNEL); + if (!data->clks) + return -ENOMEM; + ret = devm_clk_bulk_get(dev, data->num_clks, data->clks); if (ret) return ret; @@ -175,20 +179,11 @@ return ret; } -static int cdns_imx_remove_core(struct device *dev, void *data) -{ - struct platform_device *pdev = to_platform_device(dev); - - platform_device_unregister(pdev); - - return 0; -} - static int cdns_imx_remove(struct platform_device *pdev) { struct device *dev = &pdev->dev; - device_for_each_child(dev, NULL, cdns_imx_remove_core); + of_platform_depopulate(dev); platform_set_drvdata(pdev, NULL); return 0; --- linux-5.8.0.orig/drivers/usb/cdns3/ep0.c +++ linux-5.8.0/drivers/usb/cdns3/ep0.c @@ -138,49 +138,36 @@ struct usb_ctrlrequest *ctrl_req) { enum usb_device_state device_state = priv_dev->gadget.state; - struct cdns3_endpoint *priv_ep; u32 config = le16_to_cpu(ctrl_req->wValue); int result = 0; - int i; switch (device_state) { case USB_STATE_ADDRESS: - /* Configure non-control EPs */ - for (i = 0; i < CDNS3_ENDPOINTS_MAX_COUNT; i++) { - priv_ep = priv_dev->eps[i]; - if (!priv_ep) - continue; - - if (priv_ep->flags & EP_CLAIMED) - cdns3_ep_config(priv_ep); - } - result = cdns3_ep0_delegate_req(priv_dev, ctrl_req); - if (result) - return result; + if (result || !config) + goto reset_config; - if (config) { - cdns3_set_hw_configuration(priv_dev); - } else { - cdns3_hw_reset_eps_config(priv_dev); - usb_gadget_set_state(&priv_dev->gadget, - USB_STATE_ADDRESS); - } break; case USB_STATE_CONFIGURED: result = cdns3_ep0_delegate_req(priv_dev, ctrl_req); + if (!config && !result) + goto reset_config; - if (!config && !result) { - cdns3_hw_reset_eps_config(priv_dev); - usb_gadget_set_state(&priv_dev->gadget, - USB_STATE_ADDRESS); - } break; default: - result = -EINVAL; + return -EINVAL; } + return 0; + +reset_config: + if (result != USB_GADGET_DELAYED_STATUS) + cdns3_hw_reset_eps_config(priv_dev); + + usb_gadget_set_state(&priv_dev->gadget, + USB_STATE_ADDRESS); + return result; } @@ -701,9 +688,9 @@ struct cdns3_endpoint *priv_ep = ep_to_cdns3_ep(ep); struct cdns3_device *priv_dev = priv_ep->cdns3_dev; unsigned long flags; - int erdy_sent = 0; int ret = 0; u8 zlp = 0; + int i; spin_lock_irqsave(&priv_dev->lock, flags); trace_cdns3_ep0_queue(priv_dev, request); @@ -718,14 +705,18 @@ if (priv_dev->ep0_stage == CDNS3_STATUS_STAGE) { cdns3_select_ep(priv_dev, 0x00); - erdy_sent = !priv_dev->hw_configured_flag; - cdns3_set_hw_configuration(priv_dev); - - if (!erdy_sent) - cdns3_ep0_complete_setup(priv_dev, 0, 1); - - cdns3_allow_enable_l1(priv_dev, 1); + /* + * Configure all non-control EPs which are not enabled by class driver + */ + for (i = 0; i < CDNS3_ENDPOINTS_MAX_COUNT; i++) { + priv_ep = priv_dev->eps[i]; + if (priv_ep && priv_ep->flags & EP_CLAIMED && + !(priv_ep->flags & EP_ENABLED)) + cdns3_ep_config(priv_ep, 0); + } + cdns3_set_hw_configuration(priv_dev); + cdns3_ep0_complete_setup(priv_dev, 0, 1); request->actual = 0; priv_dev->status_completion_no_call = true; priv_dev->pending_status_request = request; @@ -809,6 +800,7 @@ struct cdns3_usb_regs __iomem *regs; struct cdns3_endpoint *priv_ep; u32 max_packet_size = 64; + u32 ep_cfg; regs = priv_dev->regs; @@ -840,8 +832,10 @@ BIT(0) | BIT(16)); } - writel(EP_CFG_ENABLE | EP_CFG_MAXPKTSIZE(max_packet_size), - ®s->ep_cfg); + ep_cfg = EP_CFG_ENABLE | EP_CFG_MAXPKTSIZE(max_packet_size); + + if (!(priv_ep->flags & EP_CONFIGURED)) + writel(ep_cfg, ®s->ep_cfg); writel(EP_STS_EN_SETUPEN | EP_STS_EN_DESCMISEN | EP_STS_EN_TRBERREN, ®s->ep_sts_en); @@ -849,8 +843,10 @@ /* init ep in */ cdns3_select_ep(priv_dev, USB_DIR_IN); - writel(EP_CFG_ENABLE | EP_CFG_MAXPKTSIZE(max_packet_size), - ®s->ep_cfg); + if (!(priv_ep->flags & EP_CONFIGURED)) + writel(ep_cfg, ®s->ep_cfg); + + priv_ep->flags |= EP_CONFIGURED; writel(EP_STS_EN_SETUPEN | EP_STS_EN_TRBERREN, ®s->ep_sts_en); --- linux-5.8.0.orig/drivers/usb/cdns3/gadget.c +++ linux-5.8.0/drivers/usb/cdns3/gadget.c @@ -242,9 +242,10 @@ return -ENOMEM; priv_ep->alloc_ring_size = ring_size; - memset(priv_ep->trb_pool, 0, ring_size); } + memset(priv_ep->trb_pool, 0, ring_size); + priv_ep->num_trbs = num_trbs; if (!priv_ep->num) @@ -260,8 +261,8 @@ */ link_trb->control = 0; } else { - link_trb->buffer = TRB_BUFFER(priv_ep->trb_pool_dma); - link_trb->control = TRB_CYCLE | TRB_TYPE(TRB_LINK) | TRB_TOGGLE; + link_trb->buffer = cpu_to_le32(TRB_BUFFER(priv_ep->trb_pool_dma)); + link_trb->control = cpu_to_le32(TRB_CYCLE | TRB_TYPE(TRB_LINK) | TRB_TOGGLE); } return 0; } @@ -295,6 +296,8 @@ */ void cdns3_hw_reset_eps_config(struct cdns3_device *priv_dev) { + int i; + writel(USB_CONF_CFGRST, &priv_dev->regs->usb_conf); cdns3_allow_enable_l1(priv_dev, 0); @@ -303,6 +306,10 @@ priv_dev->out_mem_is_allocated = 0; priv_dev->wait_for_setup = 0; priv_dev->using_streams = 0; + + for (i = 0; i < CDNS3_ENDPOINTS_MAX_COUNT; i++) + if (priv_dev->eps[i]) + priv_dev->eps[i]->flags &= ~EP_CONFIGURED; } /** @@ -846,10 +853,10 @@ priv_ep->wa1_trb_index = 0xFFFF; if (priv_ep->wa1_cycle_bit) { priv_ep->wa1_trb->control = - priv_ep->wa1_trb->control | 0x1; + priv_ep->wa1_trb->control | cpu_to_le32(0x1); } else { priv_ep->wa1_trb->control = - priv_ep->wa1_trb->control & ~0x1; + priv_ep->wa1_trb->control & cpu_to_le32(~0x1); } } } @@ -1007,17 +1014,16 @@ TRB_STREAM_ID(priv_req->request.stream_id) | TRB_ISP; if (!request->num_sgs) { - trb->buffer = TRB_BUFFER(trb_dma); + trb->buffer = cpu_to_le32(TRB_BUFFER(trb_dma)); length = request->length; } else { - trb->buffer = TRB_BUFFER(request->sg[sg_idx].dma_address); + trb->buffer = cpu_to_le32(TRB_BUFFER(request->sg[sg_idx].dma_address)); length = request->sg[sg_idx].length; } tdl = DIV_ROUND_UP(length, priv_ep->endpoint.maxpacket); - trb->length = TRB_BURST_LEN(16 /*priv_ep->trb_burst_size*/) | - TRB_LEN(length); + trb->length = cpu_to_le32(TRB_BURST_LEN(16) | TRB_LEN(length)); /* * For DEV_VER_V2 controller version we have enabled @@ -1026,11 +1032,11 @@ */ if (priv_dev->dev_ver >= DEV_VER_V2) { if (priv_dev->gadget.speed == USB_SPEED_SUPER) - trb->length |= TRB_TDL_SS_SIZE(tdl); + trb->length |= cpu_to_le32(TRB_TDL_SS_SIZE(tdl)); } priv_req->flags |= REQUEST_PENDING; - trb->control = control; + trb->control = cpu_to_le32(control); trace_cdns3_prepare_trb(priv_ep, priv_req->trb); @@ -1154,8 +1160,8 @@ TRBS_PER_SEGMENT > 2) ch_bit = TRB_CHAIN; - link_trb->control = ((priv_ep->pcs) ? TRB_CYCLE : 0) | - TRB_TYPE(TRB_LINK) | TRB_TOGGLE | ch_bit; + link_trb->control = cpu_to_le32(((priv_ep->pcs) ? TRB_CYCLE : 0) | + TRB_TYPE(TRB_LINK) | TRB_TOGGLE | ch_bit); } if (priv_dev->dev_ver <= DEV_VER_V2) @@ -1163,35 +1169,37 @@ /* set incorrect Cycle Bit for first trb*/ control = priv_ep->pcs ? 0 : TRB_CYCLE; + trb->length = 0; + if (priv_dev->dev_ver >= DEV_VER_V2) { + u16 td_size; + + td_size = DIV_ROUND_UP(request->length, + priv_ep->endpoint.maxpacket); + if (priv_dev->gadget.speed == USB_SPEED_SUPER) + trb->length = TRB_TDL_SS_SIZE(td_size); + else + control |= TRB_TDL_HS_SIZE(td_size); + } do { u32 length; - u16 td_size = 0; /* fill TRB */ control |= TRB_TYPE(TRB_NORMAL); - trb->buffer = TRB_BUFFER(request->num_sgs == 0 - ? trb_dma : request->sg[sg_iter].dma_address); + trb->buffer = cpu_to_le32(TRB_BUFFER(request->num_sgs == 0 + ? trb_dma : request->sg[sg_iter].dma_address)); if (likely(!request->num_sgs)) length = request->length; else length = request->sg[sg_iter].length; - if (likely(priv_dev->dev_ver >= DEV_VER_V2)) - td_size = DIV_ROUND_UP(length, - priv_ep->endpoint.maxpacket); - else if (priv_ep->flags & EP_TDLCHK_EN) + if (priv_ep->flags & EP_TDLCHK_EN) total_tdl += DIV_ROUND_UP(length, priv_ep->endpoint.maxpacket); - trb->length = TRB_BURST_LEN(priv_ep->trb_burst_size) | - TRB_LEN(length); - if (priv_dev->gadget.speed == USB_SPEED_SUPER) - trb->length |= TRB_TDL_SS_SIZE(td_size); - else - control |= TRB_TDL_HS_SIZE(td_size); - + trb->length |= cpu_to_le32(TRB_BURST_LEN(priv_ep->trb_burst_size) | + TRB_LEN(length)); pcs = priv_ep->pcs ? TRB_CYCLE : 0; /* @@ -1210,9 +1218,9 @@ } if (sg_iter) - trb->control = control; + trb->control = cpu_to_le32(control); else - priv_req->trb->control = control; + priv_req->trb->control = cpu_to_le32(control); control = 0; ++sg_iter; @@ -1226,7 +1234,7 @@ priv_req->flags |= REQUEST_PENDING; if (sg_iter == 1) - trb->control |= TRB_IOC | TRB_ISP; + trb->control |= cpu_to_le32(TRB_IOC | TRB_ISP); if (priv_dev->dev_ver < DEV_VER_V2 && (priv_ep->flags & EP_TDLCHK_EN)) { @@ -1252,7 +1260,7 @@ /* give the TD to the consumer*/ if (togle_pcs) - trb->control = trb->control ^ 1; + trb->control = trb->control ^ cpu_to_le32(1); if (priv_dev->dev_ver <= DEV_VER_V2) cdns3_wa1_tray_restore_cycle_bit(priv_dev, priv_ep); @@ -1314,7 +1322,6 @@ return; writel(USB_CONF_CFGSET, &priv_dev->regs->usb_conf); - writel(EP_CMD_ERDY | EP_CMD_REQ_CMPL, &priv_dev->regs->ep_cmd); cdns3_set_register_bit(&priv_dev->regs->usb_conf, USB_CONF_U1EN | USB_CONF_U2EN); @@ -1331,6 +1338,8 @@ cdns3_start_all_request(priv_dev, priv_ep); } } + + cdns3_allow_enable_l1(priv_dev, 1); } /** @@ -1390,7 +1399,7 @@ trb = &priv_ep->trb_pool[priv_req->start_trb]; - if ((trb->control & TRB_CYCLE) != priv_ep->ccs) + if ((le32_to_cpu(trb->control) & TRB_CYCLE) != priv_ep->ccs) goto finish; if (doorbell == 1 && current_index == priv_ep->dequeue) @@ -1439,7 +1448,7 @@ trb = priv_ep->trb_pool + priv_ep->dequeue; /* Request was dequeued and TRB was changed to TRB_LINK. */ - if (TRB_FIELD_TO_TYPE(trb->control) == TRB_LINK) { + if (TRB_FIELD_TO_TYPE(le32_to_cpu(trb->control)) == TRB_LINK) { trace_cdns3_complete_trb(priv_ep, trb); cdns3_move_deq_to_next_trb(priv_req); } @@ -1571,7 +1580,7 @@ * that host ignore the ERDY packet and driver has to send it * again. */ - if (tdl && (dbusy | !EP_STS_BUFFEMPTY(ep_sts_reg) | + if (tdl && (dbusy || !EP_STS_BUFFEMPTY(ep_sts_reg) || EP_STS_HOSTPP(ep_sts_reg))) { writel(EP_CMD_ERDY | EP_CMD_ERDY_SID(priv_ep->last_stream_id), @@ -1904,27 +1913,6 @@ return 0; } -static void cdns3_stream_ep_reconfig(struct cdns3_device *priv_dev, - struct cdns3_endpoint *priv_ep) -{ - if (!priv_ep->use_streams || priv_dev->gadget.speed < USB_SPEED_SUPER) - return; - - if (priv_dev->dev_ver >= DEV_VER_V3) { - u32 mask = BIT(priv_ep->num + (priv_ep->dir ? 16 : 0)); - - /* - * Stream capable endpoints are handled by using ep_tdl - * register. Other endpoints use TDL from TRB feature. - */ - cdns3_clear_register_bit(&priv_dev->regs->tdl_from_trb, mask); - } - - /* Enable Stream Bit TDL chk and SID chk */ - cdns3_set_register_bit(&priv_dev->regs->ep_cfg, EP_CFG_STREAM_EN | - EP_CFG_TDL_CHK | EP_CFG_SID_CHK); -} - static void cdns3_configure_dmult(struct cdns3_device *priv_dev, struct cdns3_endpoint *priv_ep) { @@ -1962,8 +1950,9 @@ /** * cdns3_ep_config Configure hardware endpoint * @priv_ep: extended endpoint object + * @enable: set EP_CFG_ENABLE bit in ep_cfg register. */ -void cdns3_ep_config(struct cdns3_endpoint *priv_ep) +int cdns3_ep_config(struct cdns3_endpoint *priv_ep, bool enable) { bool is_iso_ep = (priv_ep->type == USB_ENDPOINT_XFER_ISOC); struct cdns3_device *priv_dev = priv_ep->cdns3_dev; @@ -2024,7 +2013,7 @@ break; default: /* all other speed are not supported */ - return; + return -EINVAL; } if (max_packet_size == 1024) @@ -2034,11 +2023,33 @@ else priv_ep->trb_burst_size = 16; - ret = cdns3_ep_onchip_buffer_reserve(priv_dev, buffering + 1, - !!priv_ep->dir); - if (ret) { - dev_err(priv_dev->dev, "onchip mem is full, ep is invalid\n"); - return; + /* onchip buffer is only allocated before configuration */ + if (!priv_dev->hw_configured_flag) { + ret = cdns3_ep_onchip_buffer_reserve(priv_dev, buffering + 1, + !!priv_ep->dir); + if (ret) { + dev_err(priv_dev->dev, "onchip mem is full, ep is invalid\n"); + return ret; + } + } + + if (enable) + ep_cfg |= EP_CFG_ENABLE; + + if (priv_ep->use_streams && priv_dev->gadget.speed >= USB_SPEED_SUPER) { + if (priv_dev->dev_ver >= DEV_VER_V3) { + u32 mask = BIT(priv_ep->num + (priv_ep->dir ? 16 : 0)); + + /* + * Stream capable endpoints are handled by using ep_tdl + * register. Other endpoints use TDL from TRB feature. + */ + cdns3_clear_register_bit(&priv_dev->regs->tdl_from_trb, + mask); + } + + /* Enable Stream Bit TDL chk and SID chk */ + ep_cfg |= EP_CFG_STREAM_EN | EP_CFG_TDL_CHK | EP_CFG_SID_CHK; } ep_cfg |= EP_CFG_MAXPKTSIZE(max_packet_size) | @@ -2048,9 +2059,12 @@ cdns3_select_ep(priv_dev, bEndpointAddress); writel(ep_cfg, &priv_dev->regs->ep_cfg); + priv_ep->flags |= EP_CONFIGURED; dev_dbg(priv_dev->dev, "Configure %s: with val %08x\n", priv_ep->name, ep_cfg); + + return 0; } /* Find correct direction for HW endpoint according to description */ @@ -2191,7 +2205,7 @@ u32 bEndpointAddress; unsigned long flags; int enable = 1; - int ret; + int ret = 0; int val; priv_ep = ep_to_cdns3_ep(ep); @@ -2230,6 +2244,17 @@ bEndpointAddress = priv_ep->num | priv_ep->dir; cdns3_select_ep(priv_dev, bEndpointAddress); + /* + * For some versions of controller at some point during ISO OUT traffic + * DMA reads Transfer Ring for the EP which has never got doorbell. + * This issue was detected only on simulation, but to avoid this issue + * driver add protection against it. To fix it driver enable ISO OUT + * endpoint before setting DRBL. This special treatment of ISO OUT + * endpoints are recommended by controller specification. + */ + if (priv_ep->type == USB_ENDPOINT_XFER_ISOC && !priv_ep->dir) + enable = 0; + if (usb_ss_max_streams(comp_desc) && usb_endpoint_xfer_bulk(desc)) { /* * Enable stream support (SS mode) related interrupts @@ -2240,13 +2265,17 @@ EP_STS_EN_SIDERREN | EP_STS_EN_MD_EXITEN | EP_STS_EN_STREAMREN; priv_ep->use_streams = true; - cdns3_stream_ep_reconfig(priv_dev, priv_ep); + ret = cdns3_ep_config(priv_ep, enable); priv_dev->using_streams |= true; } + } else { + ret = cdns3_ep_config(priv_ep, enable); } - ret = cdns3_allocate_trb_pool(priv_ep); + if (ret) + goto exit; + ret = cdns3_allocate_trb_pool(priv_ep); if (ret) goto exit; @@ -2276,20 +2305,6 @@ writel(reg, &priv_dev->regs->ep_sts_en); - /* - * For some versions of controller at some point during ISO OUT traffic - * DMA reads Transfer Ring for the EP which has never got doorbell. - * This issue was detected only on simulation, but to avoid this issue - * driver add protection against it. To fix it driver enable ISO OUT - * endpoint before setting DRBL. This special treatment of ISO OUT - * endpoints are recommended by controller specification. - */ - if (priv_ep->type == USB_ENDPOINT_XFER_ISOC && !priv_ep->dir) - enable = 0; - - if (enable) - cdns3_set_register_bit(&priv_dev->regs->ep_cfg, EP_CFG_ENABLE); - ep->desc = desc; priv_ep->flags &= ~(EP_PENDING_REQUEST | EP_STALLED | EP_STALL_PENDING | EP_QUIRK_ISO_OUT_EN | EP_QUIRK_EXTRA_BUF_EN); @@ -2549,10 +2564,10 @@ /* Update ring only if removed request is on pending_req_list list */ if (req_on_hw_ring && link_trb) { - link_trb->buffer = TRB_BUFFER(priv_ep->trb_pool_dma + - ((priv_req->end_trb + 1) * TRB_SIZE)); - link_trb->control = (link_trb->control & TRB_CYCLE) | - TRB_TYPE(TRB_LINK) | TRB_CHAIN; + link_trb->buffer = cpu_to_le32(TRB_BUFFER(priv_ep->trb_pool_dma + + ((priv_req->end_trb + 1) * TRB_SIZE))); + link_trb->control = cpu_to_le32((le32_to_cpu(link_trb->control) & TRB_CYCLE) | + TRB_TYPE(TRB_LINK) | TRB_CHAIN); if (priv_ep->wa1_trb == priv_req->trb) cdns3_wa1_restore_cycle_bit(priv_ep); @@ -2607,7 +2622,7 @@ priv_req = to_cdns3_request(request); trb = priv_req->trb; if (trb) - trb->control = trb->control ^ TRB_CYCLE; + trb->control = trb->control ^ cpu_to_le32(TRB_CYCLE); } writel(EP_CMD_CSTALL | EP_CMD_EPRST, &priv_dev->regs->ep_cmd); @@ -2622,7 +2637,8 @@ if (request) { if (trb) - trb->control = trb->control ^ TRB_CYCLE; + trb->control = trb->control ^ cpu_to_le32(TRB_CYCLE); + cdns3_rearm_transfer(priv_ep, 1); } @@ -2987,12 +3003,12 @@ priv_dev = cdns->gadget_dev; - devm_free_irq(cdns->dev, cdns->dev_irq, priv_dev); pm_runtime_mark_last_busy(cdns->dev); pm_runtime_put_autosuspend(cdns->dev); usb_del_gadget_udc(&priv_dev->gadget); + devm_free_irq(cdns->dev, cdns->dev_irq, priv_dev); cdns3_free_all_eps(priv_dev); --- linux-5.8.0.orig/drivers/usb/cdns3/gadget.h +++ linux-5.8.0/drivers/usb/cdns3/gadget.h @@ -1067,7 +1067,7 @@ #define TRB_TDL_SS_SIZE_GET(p) (((p) & GENMASK(23, 17)) >> 17) /* transfer_len bitmasks - bits 31:24 */ -#define TRB_BURST_LEN(p) (((p) << 24) & GENMASK(31, 24)) +#define TRB_BURST_LEN(p) ((unsigned int)((p) << 24) & GENMASK(31, 24)) #define TRB_BURST_LEN_GET(p) (((p) & GENMASK(31, 24)) >> 24) /* Data buffer pointer bitmasks*/ @@ -1154,6 +1154,7 @@ #define EP_QUIRK_EXTRA_BUF_DET BIT(12) #define EP_QUIRK_EXTRA_BUF_EN BIT(13) #define EP_TDLCHK_EN BIT(15) +#define EP_CONFIGURED BIT(16) u32 flags; struct cdns3_request *descmis_req; @@ -1351,7 +1352,7 @@ int cdns3_init_ep0(struct cdns3_device *priv_dev, struct cdns3_endpoint *priv_ep); void cdns3_ep0_config(struct cdns3_device *priv_dev); -void cdns3_ep_config(struct cdns3_endpoint *priv_ep); +int cdns3_ep_config(struct cdns3_endpoint *priv_ep, bool enable); void cdns3_check_ep0_interrupt_proceed(struct cdns3_device *priv_dev, int dir); int __cdns3_gadget_wakeup(struct cdns3_device *priv_dev); --- linux-5.8.0.orig/drivers/usb/chipidea/ci_hdrc_imx.c +++ linux-5.8.0/drivers/usb/chipidea/ci_hdrc_imx.c @@ -57,7 +57,8 @@ static const struct ci_hdrc_imx_platform_flag imx6ul_usb_data = { .flags = CI_HDRC_SUPPORTS_RUNTIME_PM | - CI_HDRC_TURN_VBUS_EARLY_ON, + CI_HDRC_TURN_VBUS_EARLY_ON | + CI_HDRC_DISABLE_DEVICE_STREAMING, }; static const struct ci_hdrc_imx_platform_flag imx7d_usb_data = { @@ -138,9 +139,13 @@ misc_pdev = of_find_device_by_node(args.np); of_node_put(args.np); - if (!misc_pdev || !platform_get_drvdata(misc_pdev)) + if (!misc_pdev) return ERR_PTR(-EPROBE_DEFER); + if (!platform_get_drvdata(misc_pdev)) { + put_device(&misc_pdev->dev); + return ERR_PTR(-EPROBE_DEFER); + } data->dev = &misc_pdev->dev; /* --- linux-5.8.0.orig/drivers/usb/class/cdc-acm.c +++ linux-5.8.0/drivers/usb/class/cdc-acm.c @@ -147,17 +147,29 @@ #define acm_send_break(acm, ms) \ acm_ctrl_msg(acm, USB_CDC_REQ_SEND_BREAK, ms, NULL, 0) -static void acm_kill_urbs(struct acm *acm) +static void acm_poison_urbs(struct acm *acm) { int i; - usb_kill_urb(acm->ctrlurb); + usb_poison_urb(acm->ctrlurb); for (i = 0; i < ACM_NW; i++) - usb_kill_urb(acm->wb[i].urb); + usb_poison_urb(acm->wb[i].urb); for (i = 0; i < acm->rx_buflimit; i++) - usb_kill_urb(acm->read_urbs[i]); + usb_poison_urb(acm->read_urbs[i]); +} + +static void acm_unpoison_urbs(struct acm *acm) +{ + int i; + + for (i = 0; i < acm->rx_buflimit; i++) + usb_unpoison_urb(acm->read_urbs[i]); + for (i = 0; i < ACM_NW; i++) + usb_unpoison_urb(acm->wb[i].urb); + usb_unpoison_urb(acm->ctrlurb); } + /* * Write buffer management. * All of these assume proper locks taken by the caller. @@ -225,9 +237,10 @@ rc = usb_submit_urb(wb->urb, GFP_ATOMIC); if (rc < 0) { - dev_err(&acm->data->dev, - "%s - usb_submit_urb(write bulk) failed: %d\n", - __func__, rc); + if (rc != -EPERM) + dev_err(&acm->data->dev, + "%s - usb_submit_urb(write bulk) failed: %d\n", + __func__, rc); acm_write_done(acm, wb); } return rc; @@ -312,8 +325,10 @@ acm->iocount.dsr++; if (difference & ACM_CTRL_DCD) acm->iocount.dcd++; - if (newctrl & ACM_CTRL_BRK) + if (newctrl & ACM_CTRL_BRK) { acm->iocount.brk++; + tty_insert_flip_char(&acm->port, 0, TTY_BREAK); + } if (newctrl & ACM_CTRL_RI) acm->iocount.rng++; if (newctrl & ACM_CTRL_FRAMING) @@ -378,21 +393,19 @@ if (current_size < expected_size) { /* notification is transmitted fragmented, reassemble */ if (acm->nb_size < expected_size) { - if (acm->nb_size) { - kfree(acm->notification_buffer); - acm->nb_size = 0; - } + u8 *new_buffer; alloc_size = roundup_pow_of_two(expected_size); - /* - * kmalloc ensures a valid notification_buffer after a - * use of kfree in case the previous allocation was too - * small. Final freeing is done on disconnect. - */ - acm->notification_buffer = - kmalloc(alloc_size, GFP_ATOMIC); - if (!acm->notification_buffer) + /* Final freeing is done on disconnect. */ + new_buffer = krealloc(acm->notification_buffer, + alloc_size, GFP_ATOMIC); + if (!new_buffer) { + acm->nb_index = 0; goto exit; + } + + acm->notification_buffer = new_buffer; acm->nb_size = alloc_size; + dr = (struct usb_cdc_notification *)acm->notification_buffer; } copy_size = min(current_size, @@ -481,11 +494,6 @@ dev_vdbg(&acm->data->dev, "got urb %d, len %d, status %d\n", rb->index, urb->actual_length, status); - if (!acm->dev) { - dev_dbg(&acm->data->dev, "%s - disconnected\n", __func__); - return; - } - switch (status) { case 0: usb_mark_last_busy(acm->dev); @@ -509,6 +517,7 @@ "%s - cooling babbling device\n", __func__); usb_mark_last_busy(acm->dev); set_bit(rb->index, &acm->urbs_in_error_delay); + set_bit(ACM_ERROR_DELAY, &acm->flags); cooldown = true; break; default: @@ -534,7 +543,7 @@ if (stopped || stalled || cooldown) { if (stalled) - schedule_work(&acm->work); + schedule_delayed_work(&acm->dwork, 0); else if (cooldown) schedule_delayed_work(&acm->dwork, HZ / 2); return; @@ -564,13 +573,13 @@ acm_write_done(acm, wb); spin_unlock_irqrestore(&acm->write_lock, flags); set_bit(EVENT_TTY_WAKEUP, &acm->flags); - schedule_work(&acm->work); + schedule_delayed_work(&acm->dwork, 0); } static void acm_softint(struct work_struct *work) { int i; - struct acm *acm = container_of(work, struct acm, work); + struct acm *acm = container_of(work, struct acm, dwork.work); if (test_bit(EVENT_RX_STALL, &acm->flags)) { smp_mb(); /* against acm_suspend() */ @@ -586,7 +595,7 @@ if (test_and_clear_bit(ACM_ERROR_DELAY, &acm->flags)) { for (i = 0; i < acm->rx_buflimit; i++) if (test_and_clear_bit(i, &acm->urbs_in_error_delay)) - acm_submit_read_urb(acm, i, GFP_NOIO); + acm_submit_read_urb(acm, i, GFP_KERNEL); } if (test_and_clear_bit(EVENT_TTY_WAKEUP, &acm->flags)) @@ -649,7 +658,8 @@ res = acm_set_control(acm, val); if (res && (acm->ctrl_caps & USB_CDC_CAP_LINE)) - dev_err(&acm->control->dev, "failed to set dtr/rts\n"); + /* This is broken in too many devices to spam the logs */ + dev_dbg(&acm->control->dev, "failed to set dtr/rts\n"); } static int acm_port_activate(struct tty_port *port, struct tty_struct *tty) @@ -731,6 +741,7 @@ * Need to grab write_lock to prevent race with resume, but no need to * hold it due to the tty-port initialised flag. */ + acm_poison_urbs(acm); spin_lock_irq(&acm->write_lock); spin_unlock_irq(&acm->write_lock); @@ -747,7 +758,8 @@ usb_autopm_put_interface_async(acm->control); } - acm_kill_urbs(acm); + acm_unpoison_urbs(acm); + } static void acm_tty_cleanup(struct tty_struct *tty) @@ -1245,9 +1257,21 @@ } } } else { + int class = -1; + data_intf_num = union_header->bSlaveInterface0; control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); data_interface = usb_ifnum_to_if(usb_dev, data_intf_num); + + if (control_interface) + class = control_interface->cur_altsetting->desc.bInterfaceClass; + + if (class != USB_CLASS_COMM && class != USB_CLASS_CDC_DATA) { + dev_dbg(&intf->dev, "Broken union descriptor, assuming single interface\n"); + combined_interfaces = 1; + control_interface = data_interface = intf; + goto look_for_collapsed_interface; + } } if (!control_interface || !data_interface) { @@ -1354,7 +1378,6 @@ acm->ctrlsize = ctrlsize; acm->readsize = readsize; acm->rx_buflimit = num_rx_buf; - INIT_WORK(&acm->work, acm_softint); INIT_DELAYED_WORK(&acm->dwork, acm_softint); init_waitqueue_head(&acm->wioctl); spin_lock_init(&acm->write_lock); @@ -1506,12 +1529,16 @@ return 0; alloc_fail6: + if (!acm->combined_interfaces) { + /* Clear driver data so that disconnect() returns early. */ + usb_set_intfdata(data_interface, NULL); + usb_driver_release_interface(&acm_driver, data_interface); + } if (acm->country_codes) { device_remove_file(&acm->control->dev, &dev_attr_wCountryCodes); device_remove_file(&acm->control->dev, &dev_attr_iCountryCodeRelDate); - kfree(acm->country_codes); } device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities); alloc_fail5: @@ -1543,8 +1570,14 @@ if (!acm) return; - mutex_lock(&acm->mutex); acm->disconnected = true; + /* + * there is a circular dependency. acm_softint() can resubmit + * the URBs in error handling so we need to block any + * submission right away + */ + acm_poison_urbs(acm); + mutex_lock(&acm->mutex); if (acm->country_codes) { device_remove_file(&acm->control->dev, &dev_attr_wCountryCodes); @@ -1563,8 +1596,6 @@ tty_kref_put(tty); } - acm_kill_urbs(acm); - cancel_work_sync(&acm->work); cancel_delayed_work_sync(&acm->dwork); tty_unregister_device(acm_tty_driver, acm->minor); @@ -1606,8 +1637,7 @@ if (cnt) return 0; - acm_kill_urbs(acm); - cancel_work_sync(&acm->work); + acm_poison_urbs(acm); cancel_delayed_work_sync(&acm->dwork); acm->urbs_in_error_delay = 0; @@ -1620,6 +1650,7 @@ struct urb *urb; int rv = 0; + acm_unpoison_urbs(acm); spin_lock_irq(&acm->write_lock); if (--acm->susp_count) @@ -1698,6 +1729,15 @@ { USB_DEVICE(0x0870, 0x0001), /* Metricom GS Modem */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ }, + { USB_DEVICE(0x045b, 0x023c), /* Renesas USB Download mode */ + .driver_info = DISABLE_ECHO, /* Don't echo banner */ + }, + { USB_DEVICE(0x045b, 0x0248), /* Renesas USB Download mode */ + .driver_info = DISABLE_ECHO, /* Don't echo banner */ + }, + { USB_DEVICE(0x045b, 0x024D), /* Renesas USB Download mode */ + .driver_info = DISABLE_ECHO, /* Don't echo banner */ + }, { USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; andrey.arapov@gmail.com */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ }, @@ -1890,6 +1930,10 @@ { USB_DEVICE(0x04d8, 0x0083), /* Bootloader mode */ .driver_info = IGNORE_DEVICE, }, + + { USB_DEVICE(0x04d8, 0xf58b), + .driver_info = IGNORE_DEVICE, + }, #endif /*Samsung phone in firmware update mode */ @@ -1902,6 +1946,17 @@ .driver_info = IGNORE_DEVICE, }, + /* Exclude ETAS ES58x */ + { USB_DEVICE(0x108c, 0x0159), /* ES581.4 */ + .driver_info = IGNORE_DEVICE, + }, + { USB_DEVICE(0x108c, 0x0168), /* ES582.1 */ + .driver_info = IGNORE_DEVICE, + }, + { USB_DEVICE(0x108c, 0x0169), /* ES584.1 */ + .driver_info = IGNORE_DEVICE, + }, + { USB_DEVICE(0x1bc7, 0x0021), /* Telit 3G ACM only composition */ .driver_info = SEND_ZERO_PACKET, }, @@ -1909,6 +1964,25 @@ .driver_info = SEND_ZERO_PACKET, }, + /* Exclude Exar USB serial ports */ + { USB_DEVICE(0x04e2, 0x1400), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1401), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1402), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1403), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1410), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1411), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1412), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1414), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1420), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1421), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1422), .driver_info = IGNORE_DEVICE, }, + { USB_DEVICE(0x04e2, 0x1424), .driver_info = IGNORE_DEVICE, }, + + /* Exclude Goodix Fingerprint Reader */ + { USB_DEVICE(0x27c6, 0x5395), + .driver_info = IGNORE_DEVICE, + }, + /* control interfaces without any protocol set */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, USB_CDC_PROTO_NONE) }, --- linux-5.8.0.orig/drivers/usb/class/cdc-acm.h +++ linux-5.8.0/drivers/usb/class/cdc-acm.h @@ -112,8 +112,7 @@ # define ACM_ERROR_DELAY 3 unsigned long urbs_in_error_delay; /* these need to be restarted after a delay */ struct usb_cdc_line_coding line; /* bits, stop, parity */ - struct work_struct work; /* work queue entry for various purposes*/ - struct delayed_work dwork; /* for cool downs needed in error recovery */ + struct delayed_work dwork; /* work queue entry for various purposes */ unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ unsigned int ctrlout; /* output control lines (DTR, RTS) */ struct async_icount iocount; /* counters for control line changes */ --- linux-5.8.0.orig/drivers/usb/class/cdc-wdm.c +++ linux-5.8.0/drivers/usb/class/cdc-wdm.c @@ -58,6 +58,9 @@ #define WDM_MAX 16 +/* we cannot wait forever at flush() */ +#define WDM_FLUSH_TIMEOUT (30 * HZ) + /* CDC-WMC r1.1 requires wMaxCommand to be "at least 256 decimal (0x100)" */ #define WDM_DEFAULT_BUFSIZE 256 @@ -151,7 +154,7 @@ kfree(desc->outbuf); desc->outbuf = NULL; clear_bit(WDM_IN_USE, &desc->flags); - wake_up(&desc->wait); + wake_up_all(&desc->wait); } static void wdm_in_callback(struct urb *urb) @@ -393,6 +396,9 @@ if (test_bit(WDM_RESETTING, &desc->flags)) r = -EIO; + if (test_bit(WDM_DISCONNECTING, &desc->flags)) + r = -ENODEV; + if (r < 0) { rv = r; goto out_free_mem_pm; @@ -424,6 +430,7 @@ if (rv < 0) { desc->outbuf = NULL; clear_bit(WDM_IN_USE, &desc->flags); + wake_up_all(&desc->wait); /* for wdm_wait_for_response() */ dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv); rv = usb_translate_errors(rv); goto out_free_mem_pm; @@ -458,13 +465,23 @@ if (!desc->resp_count || !--desc->resp_count) goto out; + if (test_bit(WDM_DISCONNECTING, &desc->flags)) { + rv = -ENODEV; + goto out; + } + if (test_bit(WDM_RESETTING, &desc->flags)) { + rv = -EIO; + goto out; + } + set_bit(WDM_RESPONDING, &desc->flags); spin_unlock_irq(&desc->iuspin); rv = usb_submit_urb(desc->response, GFP_KERNEL); spin_lock_irq(&desc->iuspin); if (rv) { - dev_err(&desc->intf->dev, - "usb_submit_urb failed with result %d\n", rv); + if (!test_bit(WDM_DISCONNECTING, &desc->flags)) + dev_err(&desc->intf->dev, + "usb_submit_urb failed with result %d\n", rv); /* make sure the next notification trigger a submit */ clear_bit(WDM_RESPONDING, &desc->flags); @@ -583,28 +600,58 @@ return rv; } -static int wdm_flush(struct file *file, fl_owner_t id) +static int wdm_wait_for_response(struct file *file, long timeout) { struct wdm_device *desc = file->private_data; + long rv; /* Use long here because (int) MAX_SCHEDULE_TIMEOUT < 0. */ - wait_event(desc->wait, - /* - * needs both flags. We cannot do with one - * because resetting it would cause a race - * with write() yet we need to signal - * a disconnect - */ - !test_bit(WDM_IN_USE, &desc->flags) || - test_bit(WDM_DISCONNECTING, &desc->flags)); + /* + * Needs both flags. We cannot do with one because resetting it would + * cause a race with write() yet we need to signal a disconnect. + */ + rv = wait_event_interruptible_timeout(desc->wait, + !test_bit(WDM_IN_USE, &desc->flags) || + test_bit(WDM_DISCONNECTING, &desc->flags), + timeout); - /* cannot dereference desc->intf if WDM_DISCONNECTING */ + /* + * To report the correct error. This is best effort. + * We are inevitably racing with the hardware. + */ if (test_bit(WDM_DISCONNECTING, &desc->flags)) return -ENODEV; - if (desc->werr < 0) - dev_err(&desc->intf->dev, "Error in flush path: %d\n", - desc->werr); + if (!rv) + return -EIO; + if (rv < 0) + return -EINTR; + + spin_lock_irq(&desc->iuspin); + rv = desc->werr; + desc->werr = 0; + spin_unlock_irq(&desc->iuspin); + + return usb_translate_errors(rv); - return usb_translate_errors(desc->werr); +} + +/* + * You need to send a signal when you react to malicious or defective hardware. + * Also, don't abort when fsync() returned -EINVAL, for older kernels which do + * not implement wdm_flush() will return -EINVAL. + */ +static int wdm_fsync(struct file *file, loff_t start, loff_t end, int datasync) +{ + return wdm_wait_for_response(file, MAX_SCHEDULE_TIMEOUT); +} + +/* + * Same with wdm_fsync(), except it uses finite timeout in order to react to + * malicious or defective hardware which ceased communication after close() was + * implicitly called due to process termination. + */ +static int wdm_flush(struct file *file, fl_owner_t id) +{ + return wdm_wait_for_response(file, WDM_FLUSH_TIMEOUT); } static __poll_t wdm_poll(struct file *file, struct poll_table_struct *wait) @@ -729,6 +776,7 @@ .owner = THIS_MODULE, .read = wdm_read, .write = wdm_write, + .fsync = wdm_fsync, .open = wdm_open, .flush = wdm_flush, .release = wdm_release, @@ -988,9 +1036,9 @@ wake_up_all(&desc->wait); mutex_lock(&desc->rlock); mutex_lock(&desc->wlock); - kill_urbs(desc); cancel_work_sync(&desc->rxwork); cancel_work_sync(&desc->service_outs_intr); + kill_urbs(desc); mutex_unlock(&desc->wlock); mutex_unlock(&desc->rlock); --- linux-5.8.0.orig/drivers/usb/class/usblp.c +++ linux-5.8.0/drivers/usb/class/usblp.c @@ -274,8 +274,25 @@ #define usblp_reset(usblp)\ usblp_ctrl_msg(usblp, USBLP_REQ_RESET, USB_TYPE_CLASS, USB_DIR_OUT, USB_RECIP_OTHER, 0, NULL, 0) -#define usblp_hp_channel_change_request(usblp, channel, buffer) \ - usblp_ctrl_msg(usblp, USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST, USB_TYPE_VENDOR, USB_DIR_IN, USB_RECIP_INTERFACE, channel, buffer, 1) +static int usblp_hp_channel_change_request(struct usblp *usblp, int channel, u8 *new_channel) +{ + u8 *buf; + int ret; + + buf = kzalloc(1, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + ret = usblp_ctrl_msg(usblp, USBLP_REQ_HP_CHANNEL_CHANGE_REQUEST, + USB_TYPE_VENDOR, USB_DIR_IN, USB_RECIP_INTERFACE, + channel, buf, 1); + if (ret == 0) + *new_channel = buf[0]; + + kfree(buf); + + return ret; +} /* * See the description for usblp_select_alts() below for the usage @@ -477,16 +494,24 @@ /* No kernel lock - fine */ static __poll_t usblp_poll(struct file *file, struct poll_table_struct *wait) { - __poll_t ret; + struct usblp *usblp = file->private_data; + __poll_t ret = 0; unsigned long flags; - struct usblp *usblp = file->private_data; /* Should we check file->f_mode & FMODE_WRITE before poll_wait()? */ poll_wait(file, &usblp->rwait, wait); poll_wait(file, &usblp->wwait, wait); + + mutex_lock(&usblp->mut); + if (!usblp->present) + ret |= EPOLLHUP; + mutex_unlock(&usblp->mut); + spin_lock_irqsave(&usblp->lock, flags); - ret = ((usblp->bidir && usblp->rcomplete) ? EPOLLIN | EPOLLRDNORM : 0) | - ((usblp->no_paper || usblp->wcomplete) ? EPOLLOUT | EPOLLWRNORM : 0); + if (usblp->bidir && usblp->rcomplete) + ret |= EPOLLIN | EPOLLRDNORM; + if (usblp->no_paper || usblp->wcomplete) + ret |= EPOLLOUT | EPOLLWRNORM; spin_unlock_irqrestore(&usblp->lock, flags); return ret; } @@ -827,6 +852,11 @@ if (rv < 0) return rv; + if (!usblp->present) { + count = -ENODEV; + goto done; + } + if ((avail = usblp->rstatus) < 0) { printk(KERN_ERR "usblp%d: error %d reading from printer\n", usblp->minor, (int)avail); @@ -1307,14 +1337,17 @@ if (protocol < USBLP_FIRST_PROTOCOL || protocol > USBLP_LAST_PROTOCOL) return -EINVAL; - alts = usblp->protocol[protocol].alt_setting; - if (alts < 0) - return -EINVAL; - r = usb_set_interface(usblp->dev, usblp->ifnum, alts); - if (r < 0) { - printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n", - alts, usblp->ifnum); - return r; + /* Don't unnecessarily set the interface if there's a single alt. */ + if (usblp->intf->num_altsetting > 1) { + alts = usblp->protocol[protocol].alt_setting; + if (alts < 0) + return -EINVAL; + r = usb_set_interface(usblp->dev, usblp->ifnum, alts); + if (r < 0) { + printk(KERN_ERR "usblp: can't set desired altsetting %d on interface %d\n", + alts, usblp->ifnum); + return r; + } } usblp->bidir = (usblp->protocol[protocol].epread != NULL); --- linux-5.8.0.orig/drivers/usb/core/devio.c +++ linux-5.8.0/drivers/usb/core/devio.c @@ -482,11 +482,11 @@ if (userurb) { /* Async */ if (when == SUBMIT) - dev_info(&udev->dev, "userurb %pK, ep%d %s-%s, " + dev_info(&udev->dev, "userurb %px, ep%d %s-%s, " "length %u\n", userurb, ep, t, d, length); else - dev_info(&udev->dev, "userurb %pK, ep%d %s-%s, " + dev_info(&udev->dev, "userurb %px, ep%d %s-%s, " "actual_length %u status %d\n", userurb, ep, t, d, length, timeout_or_status); @@ -1983,7 +1983,7 @@ if (as) { int retval; - snoop(&ps->dev->dev, "reap %pK\n", as->userurb); + snoop(&ps->dev->dev, "reap %px\n", as->userurb); retval = processcompl(as, (void __user * __user *)arg); free_async(as); return retval; @@ -2000,7 +2000,7 @@ as = async_getcompleted(ps); if (as) { - snoop(&ps->dev->dev, "reap %pK\n", as->userurb); + snoop(&ps->dev->dev, "reap %px\n", as->userurb); retval = processcompl(as, (void __user * __user *)arg); free_async(as); } else { @@ -2130,7 +2130,7 @@ if (as) { int retval; - snoop(&ps->dev->dev, "reap %pK\n", as->userurb); + snoop(&ps->dev->dev, "reap %px\n", as->userurb); retval = processcompl_compat(as, (void __user * __user *)arg); free_async(as); return retval; @@ -2147,7 +2147,7 @@ as = async_getcompleted(ps); if (as) { - snoop(&ps->dev->dev, "reap %pK\n", as->userurb); + snoop(&ps->dev->dev, "reap %px\n", as->userurb); retval = processcompl_compat(as, (void __user * __user *)arg); free_async(as); } else { @@ -2612,7 +2612,7 @@ #endif case USBDEVFS_DISCARDURB: - snoop(&dev->dev, "%s: DISCARDURB %pK\n", __func__, p); + snoop(&dev->dev, "%s: DISCARDURB %px\n", __func__, p); ret = proc_unlinkurb(ps, p); break; --- linux-5.8.0.orig/drivers/usb/core/driver.c +++ linux-5.8.0/drivers/usb/core/driver.c @@ -269,8 +269,30 @@ if (error) return error; + /* Probe the USB device with the driver in hand, but only + * defer to a generic driver in case the current USB + * device driver has an id_table or a match function; i.e., + * when the device driver was explicitly matched against + * a device. + * + * If the device driver does not have either of these, + * then we assume that it can bind to any device and is + * not truly a more specialized/non-generic driver, so a + * return value of -ENODEV should not force the device + * to be handled by the generic USB driver, as there + * can still be another, more specialized, device driver. + * + * This accommodates the usbip driver. + * + * TODO: What if, in the future, there are multiple + * specialized USB device drivers for a particular device? + * In such cases, there is a need to try all matching + * specialised device drivers prior to setting the + * use_generic_driver bit. + */ error = udriver->probe(udev); - if (error == -ENODEV && udriver != &usb_generic_driver) { + if (error == -ENODEV && udriver != &usb_generic_driver && + (udriver->id_table || udriver->match)) { udev->use_generic_driver = 1; return -EPROBE_DEFER; } @@ -817,6 +839,22 @@ return NULL; } +bool usb_driver_applicable(struct usb_device *udev, + struct usb_device_driver *udrv) +{ + if (udrv->id_table && udrv->match) + return usb_device_match_id(udev, udrv->id_table) != NULL && + udrv->match(udev); + + if (udrv->id_table) + return usb_device_match_id(udev, udrv->id_table) != NULL; + + if (udrv->match) + return udrv->match(udev); + + return false; +} + static int usb_device_match(struct device *dev, struct device_driver *drv) { /* devices and interfaces are handled separately */ @@ -831,14 +869,14 @@ udev = to_usb_device(dev); udrv = to_usb_device_driver(drv); - if (udrv->id_table && - usb_device_match_id(udev, udrv->id_table) != NULL) { + /* If the device driver under consideration does not have a + * id_table or a match function, then let the driver's probe + * function decide. + */ + if (!udrv->id_table && !udrv->match) return 1; - } - if (udrv->match) - return udrv->match(udev); - return 0; + return usb_driver_applicable(udev, udrv); } else if (is_usb_interface(dev)) { struct usb_interface *intf; @@ -905,6 +943,27 @@ return 0; } +static int __usb_bus_reprobe_drivers(struct device *dev, void *data) +{ + struct usb_device_driver *new_udriver = data; + struct usb_device *udev; + int ret; + + /* Don't reprobe if current driver isn't usb_generic_driver */ + if (dev->driver != &usb_generic_driver.drvwrap.driver) + return 0; + + udev = to_usb_device(dev); + if (!usb_driver_applicable(udev, new_udriver)) + return 0; + + ret = device_reprobe(dev); + if (ret && ret != -EPROBE_DEFER) + dev_err(dev, "Failed to reprobe device (error %d)\n", ret); + + return 0; +} + /** * usb_register_device_driver - register a USB device (not interface) driver * @new_udriver: USB operations for the device driver @@ -934,13 +993,20 @@ retval = driver_register(&new_udriver->drvwrap.driver); - if (!retval) + if (!retval) { pr_info("%s: registered new device driver %s\n", usbcore_name, new_udriver->name); - else + /* + * Check whether any device could be better served with + * this new driver + */ + bus_for_each_dev(&usb_bus_type, NULL, new_udriver, + __usb_bus_reprobe_drivers); + } else { printk(KERN_ERR "%s: error %d registering device " " driver %s\n", usbcore_name, retval, new_udriver->name); + } return retval; } --- linux-5.8.0.orig/drivers/usb/core/generic.c +++ linux-5.8.0/drivers/usb/core/generic.c @@ -207,8 +207,7 @@ return 0; if (!udrv->id_table) return 0; - - return usb_device_match_id(udev, udrv->id_table) != NULL; + return usb_driver_applicable(udev, udrv); } static bool usb_generic_driver_match(struct usb_device *udev) --- linux-5.8.0.orig/drivers/usb/core/hcd.c +++ linux-5.8.0/drivers/usb/core/hcd.c @@ -1646,9 +1646,16 @@ /* pass ownership to the completion handler */ urb->status = status; - kcov_remote_start_usb((u64)urb->dev->bus->busnum); + /* + * This function can be called in task context inside another remote + * coverage collection section, but KCOV doesn't support that kind of + * recursion yet. Only collect coverage in softirq context for now. + */ + if (in_serving_softirq()) + kcov_remote_start_usb((u64)urb->dev->bus->busnum); urb->complete(urb); - kcov_remote_stop(); + if (in_serving_softirq()) + kcov_remote_stop(); usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count); --- linux-5.8.0.orig/drivers/usb/core/hub.c +++ linux-5.8.0/drivers/usb/core/hub.c @@ -821,9 +821,9 @@ * * Return: 0 if successful. A negative error code otherwise. */ -int usb_hub_set_port_power(struct usb_device *hdev, struct usb_hub *hub, - int port1, bool set) +int usb_hub_set_port_power(struct usb_hub *hub, int port1, bool set) { + struct usb_device *hdev = hub->hdev; int ret; if (set) @@ -2755,6 +2755,39 @@ || link_state == USB_SS_PORT_LS_COMP_MOD; } +static bool hub_port_power_cycle_required(struct usb_hub *hub, int port1, + u16 portstatus) +{ + u16 link_state; + + if (!hub_is_superspeed(hub->hdev)) + return false; + + link_state = portstatus & USB_PORT_STAT_LINK_STATE; + return link_state == USB_SS_PORT_LS_SS_DISABLED; +} + +static void hub_port_power_cycle(struct usb_hub *hub, int port1) +{ + struct usb_port *port_dev = hub->ports[port1 - 1]; + int ret; + + ret = usb_hub_set_port_power(hub, port1, false); + if (ret) { + dev_info(&port_dev->dev, "failed to disable port power\n"); + return; + } + + msleep(2 * hub_power_on_good_delay(hub)); + ret = usb_hub_set_port_power(hub, port1, true); + if (ret) { + dev_info(&port_dev->dev, "failed to enable port power\n"); + return; + } + + msleep(hub_power_on_good_delay(hub)); +} + static int hub_port_wait_reset(struct usb_hub *hub, int port1, struct usb_device *udev, unsigned int delay, bool warm) { @@ -3605,6 +3638,10 @@ if (status < 0) { dev_dbg(&udev->dev, "can't resume, status %d\n", status); hub_port_logical_disconnect(hub, port1); + if (hub_port_power_cycle_required(hub, port1, portstatus)) { + dev_dbg(&udev->dev, "device in disabled state, attempt power cycle\n"); + hub_port_power_cycle(hub, port1); + } } else { /* Try to enable USB2 hardware LPM */ usb_enable_usb2_hardware_lpm(udev); @@ -5241,10 +5278,7 @@ /* When halfway through our retry count, power-cycle the port */ if (i == (SET_CONFIG_TRIES / 2) - 1) { dev_info(&port_dev->dev, "attempt power cycle\n"); - usb_hub_set_port_power(hdev, hub, port1, false); - msleep(2 * hub_power_on_good_delay(hub)); - usb_hub_set_port_power(hdev, hub, port1, true); - msleep(hub_power_on_good_delay(hub)); + hub_port_power_cycle(hub, port1); } } if (hub->hdev->parent || --- linux-5.8.0.orig/drivers/usb/core/hub.h +++ linux-5.8.0/drivers/usb/core/hub.h @@ -114,8 +114,7 @@ int port1); extern void usb_hub_remove_port_device(struct usb_hub *hub, int port1); -extern int usb_hub_set_port_power(struct usb_device *hdev, struct usb_hub *hub, - int port1, bool set); +extern int usb_hub_set_port_power(struct usb_hub *hub, int port1, bool set); extern struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev); extern int hub_port_debounce(struct usb_hub *hub, int port1, bool must_be_connected); --- linux-5.8.0.orig/drivers/usb/core/message.c +++ linux-5.8.0/drivers/usb/core/message.c @@ -1205,6 +1205,34 @@ } } +/* + * usb_disable_device_endpoints -- Disable all endpoints for a device + * @dev: the device whose endpoints are being disabled + * @skip_ep0: 0 to disable endpoint 0, 1 to skip it. + */ +static void usb_disable_device_endpoints(struct usb_device *dev, int skip_ep0) +{ + struct usb_hcd *hcd = bus_to_hcd(dev->bus); + int i; + + if (hcd->driver->check_bandwidth) { + /* First pass: Cancel URBs, leave endpoint pointers intact. */ + for (i = skip_ep0; i < 16; ++i) { + usb_disable_endpoint(dev, i, false); + usb_disable_endpoint(dev, i + USB_DIR_IN, false); + } + /* Remove endpoints from the host controller internal state */ + mutex_lock(hcd->bandwidth_mutex); + usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); + mutex_unlock(hcd->bandwidth_mutex); + } + /* Second pass: remove endpoint pointers */ + for (i = skip_ep0; i < 16; ++i) { + usb_disable_endpoint(dev, i, true); + usb_disable_endpoint(dev, i + USB_DIR_IN, true); + } +} + /** * usb_disable_device - Disable all the endpoints for a USB device * @dev: the device whose endpoints are being disabled @@ -1218,7 +1246,6 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0) { int i; - struct usb_hcd *hcd = bus_to_hcd(dev->bus); /* getting rid of interfaces will disconnect * any drivers bound to them (a key side effect) @@ -1264,22 +1291,8 @@ dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__, skip_ep0 ? "non-ep0" : "all"); - if (hcd->driver->check_bandwidth) { - /* First pass: Cancel URBs, leave endpoint pointers intact. */ - for (i = skip_ep0; i < 16; ++i) { - usb_disable_endpoint(dev, i, false); - usb_disable_endpoint(dev, i + USB_DIR_IN, false); - } - /* Remove endpoints from the host controller internal state */ - mutex_lock(hcd->bandwidth_mutex); - usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); - mutex_unlock(hcd->bandwidth_mutex); - /* Second pass: remove endpoint pointers */ - } - for (i = skip_ep0; i < 16; ++i) { - usb_disable_endpoint(dev, i, true); - usb_disable_endpoint(dev, i + USB_DIR_IN, true); - } + + usb_disable_device_endpoints(dev, skip_ep0); } /** @@ -1522,6 +1535,9 @@ * The caller must own the device lock. * * Return: Zero on success, else a negative error code. + * + * If this routine fails the device will probably be in an unusable state + * with endpoints disabled, and interfaces only partially enabled. */ int usb_reset_configuration(struct usb_device *dev) { @@ -1537,10 +1553,7 @@ * calls during probe() are fine */ - for (i = 1; i < 16; ++i) { - usb_disable_endpoint(dev, i, true); - usb_disable_endpoint(dev, i + USB_DIR_IN, true); - } + usb_disable_device_endpoints(dev, 1); /* skip ep0*/ config = dev->actconfig; retval = 0; @@ -1553,34 +1566,10 @@ mutex_unlock(hcd->bandwidth_mutex); return -ENOMEM; } - /* Make sure we have enough bandwidth for each alternate setting 0 */ - for (i = 0; i < config->desc.bNumInterfaces; i++) { - struct usb_interface *intf = config->interface[i]; - struct usb_host_interface *alt; - - alt = usb_altnum_to_altsetting(intf, 0); - if (!alt) - alt = &intf->altsetting[0]; - if (alt != intf->cur_altsetting) - retval = usb_hcd_alloc_bandwidth(dev, NULL, - intf->cur_altsetting, alt); - if (retval < 0) - break; - } - /* If not, reinstate the old alternate settings */ + + /* xHCI adds all endpoints in usb_hcd_alloc_bandwidth */ + retval = usb_hcd_alloc_bandwidth(dev, config, NULL, NULL); if (retval < 0) { -reset_old_alts: - for (i--; i >= 0; i--) { - struct usb_interface *intf = config->interface[i]; - struct usb_host_interface *alt; - - alt = usb_altnum_to_altsetting(intf, 0); - if (!alt) - alt = &intf->altsetting[0]; - if (alt != intf->cur_altsetting) - usb_hcd_alloc_bandwidth(dev, NULL, - alt, intf->cur_altsetting); - } usb_enable_lpm(dev); mutex_unlock(hcd->bandwidth_mutex); return retval; @@ -1589,8 +1578,12 @@ USB_REQ_SET_CONFIGURATION, 0, config->desc.bConfigurationValue, 0, NULL, 0, USB_CTRL_SET_TIMEOUT); - if (retval < 0) - goto reset_old_alts; + if (retval < 0) { + usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); + usb_enable_lpm(dev); + mutex_unlock(hcd->bandwidth_mutex); + return retval; + } mutex_unlock(hcd->bandwidth_mutex); /* re-init hc/hcd interface/endpoint state */ --- linux-5.8.0.orig/drivers/usb/core/port.c +++ linux-5.8.0/drivers/usb/core/port.c @@ -217,7 +217,7 @@ if (retval < 0) return retval; - retval = usb_hub_set_port_power(hdev, hub, port1, true); + retval = usb_hub_set_port_power(hub, port1, true); msleep(hub_power_on_good_delay(hub)); if (udev && !retval) { /* @@ -273,7 +273,7 @@ if (retval < 0) return retval; - retval = usb_hub_set_port_power(hdev, hub, port1, false); + retval = usb_hub_set_port_power(hub, port1, false); usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION); if (!port_dev->is_superspeed) usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE); --- linux-5.8.0.orig/drivers/usb/core/quirks.c +++ linux-5.8.0/drivers/usb/core/quirks.c @@ -25,17 +25,23 @@ static char quirks_param[128]; -static int quirks_param_set(const char *val, const struct kernel_param *kp) +static int quirks_param_set(const char *value, const struct kernel_param *kp) { - char *p, *field; + char *val, *p, *field; u16 vid, pid; u32 flags; size_t i; int err; + val = kstrdup(value, GFP_KERNEL); + if (!val) + return -ENOMEM; + err = param_set_copystring(val, kp); - if (err) + if (err) { + kfree(val); return err; + } mutex_lock(&quirk_mutex); @@ -60,10 +66,11 @@ if (!quirk_list) { quirk_count = 0; mutex_unlock(&quirk_mutex); + kfree(val); return -ENOMEM; } - for (i = 0, p = (char *)val; p && *p;) { + for (i = 0, p = val; p && *p;) { /* Each entry consists of VID:PID:flags */ field = strsep(&p, ":"); if (!field) @@ -144,6 +151,7 @@ unlock: mutex_unlock(&quirk_mutex); + kfree(val); return 0; } @@ -334,12 +342,19 @@ { USB_DEVICE(0x06a3, 0x0006), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Agfa SNAPSCAN 1212U */ + { USB_DEVICE(0x06bd, 0x0001), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Guillemot Webcam Hercules Dualpix Exchange (2nd ID) */ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME }, /* Guillemot Webcam Hercules Dualpix Exchange*/ { USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Guillemot Hercules DJ Console audio card (BZ 208357) */ + { USB_DEVICE(0x06f8, 0xb000), .driver_info = + USB_QUIRK_ENDPOINT_BLACKLIST }, + /* Midiman M-Audio Keystation 88es */ { USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -362,13 +377,23 @@ { USB_DEVICE(0x0926, 0x0202), .driver_info = USB_QUIRK_ENDPOINT_BLACKLIST }, + /* Sound Devices MixPre-D */ + { USB_DEVICE(0x0926, 0x0208), .driver_info = + USB_QUIRK_ENDPOINT_BLACKLIST }, + /* Keytouch QWERTY Panel keyboard */ { USB_DEVICE(0x0926, 0x3333), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Kingston DataTraveler 3.0 */ + { USB_DEVICE(0x0951, 0x1666), .driver_info = USB_QUIRK_NO_LPM }, + /* X-Rite/Gretag-Macbeth Eye-One Pro display colorimeter */ { USB_DEVICE(0x0971, 0x2000), .driver_info = USB_QUIRK_NO_SET_INTF }, + /* ELMO L-12F document camera */ + { USB_DEVICE(0x09a1, 0x0028), .driver_info = USB_QUIRK_DELAY_CTRL_MSG }, + /* Broadcom BCM92035DGROM BT dongle */ { USB_DEVICE(0x0a5c, 0x2021), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -385,10 +410,17 @@ /* Generic RTL8153 based ethernet adapters */ { USB_DEVICE(0x0bda, 0x8153), .driver_info = USB_QUIRK_NO_LPM }, + /* SONiX USB DEVICE Touchpad */ + { USB_DEVICE(0x0c45, 0x7056), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + /* Action Semiconductor flash disk */ { USB_DEVICE(0x10d6, 0x2200), .driver_info = USB_QUIRK_STRING_FETCH_255 }, + /* novation SoundControl XL */ + { USB_DEVICE(0x1235, 0x0061), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Huawei 4G LTE module */ { USB_DEVICE(0x12d1, 0x15bb), .driver_info = USB_QUIRK_DISCONNECT_SUSPEND }, @@ -402,6 +434,10 @@ { USB_DEVICE(0x1532, 0x0116), .driver_info = USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL }, + /* Lenovo ThinkCenter A630Z TI024Gen3 usb-audio */ + { USB_DEVICE(0x17ef, 0xa012), .driver_info = + USB_QUIRK_DISCONNECT_SUSPEND }, + /* BUILDWIN Photo Frame */ { USB_DEVICE(0x1908, 0x1315), .driver_info = USB_QUIRK_HONOR_BNUMINTERFACES }, @@ -457,15 +493,18 @@ { USB_DEVICE(0x2386, 0x3119), .driver_info = USB_QUIRK_NO_LPM }, + { USB_DEVICE(0x2386, 0x350e), .driver_info = USB_QUIRK_NO_LPM }, + /* DJI CineSSD */ { USB_DEVICE(0x2ca3, 0x0031), .driver_info = USB_QUIRK_NO_LPM }, + /* Fibocom L850-GL LTE Modem */ + { USB_DEVICE(0x2cb7, 0x0007), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + /* INTEL VALUE SSD */ { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME }, - /* novation SoundControl XL */ - { USB_DEVICE(0x1235, 0x0061), .driver_info = USB_QUIRK_RESET_RESUME }, - { } /* terminating entry must be last */ }; @@ -500,7 +539,10 @@ * Matched for devices with USB_QUIRK_ENDPOINT_BLACKLIST. */ static const struct usb_device_id usb_endpoint_blacklist[] = { + { USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x01 }, + { USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x81 }, { USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0202, 1), .driver_info = 0x85 }, + { USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0208, 1), .driver_info = 0x85 }, { } }; --- linux-5.8.0.orig/drivers/usb/core/sysfs.c +++ linux-5.8.0/drivers/usb/core/sysfs.c @@ -889,7 +889,11 @@ size_t srclen, n; int cfgno; void *src; + int retval; + retval = usb_lock_device_interruptible(udev); + if (retval < 0) + return -EINTR; /* The binary attribute begins with the device descriptor. * Following that are the raw descriptor entries for all the * configurations (config plus subsidiary descriptors). @@ -914,6 +918,7 @@ off -= srclen; } } + usb_unlock_device(udev); return count - nleft; } --- linux-5.8.0.orig/drivers/usb/core/urb.c +++ linux-5.8.0/drivers/usb/core/urb.c @@ -772,11 +772,12 @@ EXPORT_SYMBOL_GPL(usb_block_urb); /** - * usb_kill_anchored_urbs - cancel transfer requests en masse + * usb_kill_anchored_urbs - kill all URBs associated with an anchor * @anchor: anchor the requests are bound to * - * this allows all outstanding URBs to be killed starting - * from the back of the queue + * This kills all outstanding URBs starting from the back of the queue, + * with guarantee that no completer callbacks will take place from the + * anchor after this function returns. * * This routine should not be called by a driver after its disconnect * method has returned. @@ -784,20 +785,26 @@ void usb_kill_anchored_urbs(struct usb_anchor *anchor) { struct urb *victim; + int surely_empty; - spin_lock_irq(&anchor->lock); - while (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.prev, struct urb, - anchor_list); - /* we must make sure the URB isn't freed before we kill it*/ - usb_get_urb(victim); - spin_unlock_irq(&anchor->lock); - /* this will unanchor the URB */ - usb_kill_urb(victim); - usb_put_urb(victim); + do { spin_lock_irq(&anchor->lock); - } - spin_unlock_irq(&anchor->lock); + while (!list_empty(&anchor->urb_list)) { + victim = list_entry(anchor->urb_list.prev, + struct urb, anchor_list); + /* make sure the URB isn't freed before we kill it */ + usb_get_urb(victim); + spin_unlock_irq(&anchor->lock); + /* this will unanchor the URB */ + usb_kill_urb(victim); + usb_put_urb(victim); + spin_lock_irq(&anchor->lock); + } + surely_empty = usb_anchor_check_wakeup(anchor); + + spin_unlock_irq(&anchor->lock); + cpu_relax(); + } while (!surely_empty); } EXPORT_SYMBOL_GPL(usb_kill_anchored_urbs); @@ -816,21 +823,27 @@ void usb_poison_anchored_urbs(struct usb_anchor *anchor) { struct urb *victim; + int surely_empty; - spin_lock_irq(&anchor->lock); - anchor->poisoned = 1; - while (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.prev, struct urb, - anchor_list); - /* we must make sure the URB isn't freed before we kill it*/ - usb_get_urb(victim); - spin_unlock_irq(&anchor->lock); - /* this will unanchor the URB */ - usb_poison_urb(victim); - usb_put_urb(victim); + do { spin_lock_irq(&anchor->lock); - } - spin_unlock_irq(&anchor->lock); + anchor->poisoned = 1; + while (!list_empty(&anchor->urb_list)) { + victim = list_entry(anchor->urb_list.prev, + struct urb, anchor_list); + /* make sure the URB isn't freed before we kill it */ + usb_get_urb(victim); + spin_unlock_irq(&anchor->lock); + /* this will unanchor the URB */ + usb_poison_urb(victim); + usb_put_urb(victim); + spin_lock_irq(&anchor->lock); + } + surely_empty = usb_anchor_check_wakeup(anchor); + + spin_unlock_irq(&anchor->lock); + cpu_relax(); + } while (!surely_empty); } EXPORT_SYMBOL_GPL(usb_poison_anchored_urbs); @@ -970,14 +983,20 @@ { struct urb *victim; unsigned long flags; + int surely_empty; - spin_lock_irqsave(&anchor->lock, flags); - while (!list_empty(&anchor->urb_list)) { - victim = list_entry(anchor->urb_list.prev, struct urb, - anchor_list); - __usb_unanchor_urb(victim, anchor); - } - spin_unlock_irqrestore(&anchor->lock, flags); + do { + spin_lock_irqsave(&anchor->lock, flags); + while (!list_empty(&anchor->urb_list)) { + victim = list_entry(anchor->urb_list.prev, + struct urb, anchor_list); + __usb_unanchor_urb(victim, anchor); + } + surely_empty = usb_anchor_check_wakeup(anchor); + + spin_unlock_irqrestore(&anchor->lock, flags); + cpu_relax(); + } while (!surely_empty); } EXPORT_SYMBOL_GPL(usb_scuttle_anchored_urbs); --- linux-5.8.0.orig/drivers/usb/core/usb.c +++ linux-5.8.0/drivers/usb/core/usb.c @@ -761,6 +761,38 @@ } EXPORT_SYMBOL_GPL(usb_put_intf); +/** + * usb_intf_get_dma_device - acquire a reference on the usb interface's DMA endpoint + * @intf: the usb interface + * + * While a USB device cannot perform DMA operations by itself, many USB + * controllers can. A call to usb_intf_get_dma_device() returns the DMA endpoint + * for the given USB interface, if any. The returned device structure must be + * released with put_device(). + * + * See also usb_get_dma_device(). + * + * Returns: A reference to the usb interface's DMA endpoint; or NULL if none + * exists. + */ +struct device *usb_intf_get_dma_device(struct usb_interface *intf) +{ + struct usb_device *udev = interface_to_usbdev(intf); + struct device *dmadev; + + if (!udev->bus) + return NULL; + + dmadev = get_device(udev->bus->sysdev); + if (!dmadev || !dmadev->dma_mask) { + put_device(dmadev); + return NULL; + } + + return dmadev; +} +EXPORT_SYMBOL_GPL(usb_intf_get_dma_device); + /* USB device locking * * USB devices and interfaces are locked using the semaphore in their --- linux-5.8.0.orig/drivers/usb/core/usb.h +++ linux-5.8.0/drivers/usb/core/usb.h @@ -74,6 +74,8 @@ const struct usb_device_id *id); extern const struct usb_device_id *usb_device_match_id(struct usb_device *udev, const struct usb_device_id *id); +extern bool usb_driver_applicable(struct usb_device *udev, + struct usb_device_driver *udrv); extern void usb_forced_unbind_intf(struct usb_interface *intf); extern void usb_unbind_and_rebind_marked_interfaces(struct usb_device *udev); --- linux-5.8.0.orig/drivers/usb/dwc2/gadget.c +++ linux-5.8.0/drivers/usb/dwc2/gadget.c @@ -712,8 +712,11 @@ */ static unsigned int dwc2_gadget_get_chain_limit(struct dwc2_hsotg_ep *hs_ep) { + const struct usb_endpoint_descriptor *ep_desc = hs_ep->ep.desc; int is_isoc = hs_ep->isochronous; unsigned int maxsize; + u32 mps = hs_ep->ep.maxpacket; + int dir_in = hs_ep->dir_in; if (is_isoc) maxsize = (hs_ep->dir_in ? DEV_DMA_ISOC_TX_NBYTES_LIMIT : @@ -722,6 +725,11 @@ else maxsize = DEV_DMA_NBYTES_LIMIT * MAX_DMA_DESC_NUM_GENERIC; + /* Interrupt OUT EP with mps not multiple of 4 */ + if (hs_ep->index) + if (usb_endpoint_xfer_int(ep_desc) && !dir_in && (mps % 4)) + maxsize = mps * MAX_DMA_DESC_NUM_GENERIC; + return maxsize; } @@ -737,11 +745,14 @@ * Isochronous - descriptor rx/tx bytes bitfield limit, * Control In/Bulk/Interrupt - multiple of mps. This will allow to not * have concatenations from various descriptors within one packet. + * Interrupt OUT - if mps not multiple of 4 then a single packet corresponds + * to a single descriptor. * * Selects corresponding mask for RX/TX bytes as well. */ static u32 dwc2_gadget_get_desc_params(struct dwc2_hsotg_ep *hs_ep, u32 *mask) { + const struct usb_endpoint_descriptor *ep_desc = hs_ep->ep.desc; u32 mps = hs_ep->ep.maxpacket; int dir_in = hs_ep->dir_in; u32 desc_size = 0; @@ -765,6 +776,13 @@ desc_size -= desc_size % mps; } + /* Interrupt OUT EP with mps not multiple of 4 */ + if (hs_ep->index) + if (usb_endpoint_xfer_int(ep_desc) && !dir_in && (mps % 4)) { + desc_size = mps; + *mask = DEV_DMA_NBYTES_MASK; + } + return desc_size; } @@ -1123,13 +1141,7 @@ length += (mps - (length % mps)); } - /* - * If more data to send, adjust DMA for EP0 out data stage. - * ureq->dma stays unchanged, hence increment it by already - * passed passed data count before starting new transaction. - */ - if (!index && hsotg->ep0_state == DWC2_EP0_DATA_OUT && - continuing) + if (continuing) offset = ureq->actual; /* Fill DDMA chain entries */ @@ -1531,7 +1543,6 @@ static struct dwc2_hsotg_ep *ep_from_windex(struct dwc2_hsotg *hsotg, u32 windex) { - struct dwc2_hsotg_ep *ep; int dir = (windex & USB_DIR_IN) ? 1 : 0; int idx = windex & 0x7F; @@ -1541,12 +1552,7 @@ if (idx > hsotg->num_of_eps) return NULL; - ep = index_to_ep(hsotg, idx, dir); - - if (idx && ep->dir_in != dir) - return NULL; - - return ep; + return index_to_ep(hsotg, idx, dir); } /** @@ -2320,22 +2326,36 @@ */ static unsigned int dwc2_gadget_get_xfersize_ddma(struct dwc2_hsotg_ep *hs_ep) { + const struct usb_endpoint_descriptor *ep_desc = hs_ep->ep.desc; struct dwc2_hsotg *hsotg = hs_ep->parent; unsigned int bytes_rem = 0; + unsigned int bytes_rem_correction = 0; struct dwc2_dma_desc *desc = hs_ep->desc_list; int i; u32 status; + u32 mps = hs_ep->ep.maxpacket; + int dir_in = hs_ep->dir_in; if (!desc) return -EINVAL; + /* Interrupt OUT EP with mps not multiple of 4 */ + if (hs_ep->index) + if (usb_endpoint_xfer_int(ep_desc) && !dir_in && (mps % 4)) + bytes_rem_correction = 4 - (mps % 4); + for (i = 0; i < hs_ep->desc_count; ++i) { status = desc->status; bytes_rem += status & DEV_DMA_NBYTES_MASK; + bytes_rem -= bytes_rem_correction; if (status & DEV_DMA_STS_MASK) dev_err(hsotg->dev, "descriptor %d closed with %x\n", i, status & DEV_DMA_STS_MASK); + + if (status & DEV_DMA_L) + break; + desc++; } --- linux-5.8.0.orig/drivers/usb/dwc2/hcd.c +++ linux-5.8.0/drivers/usb/dwc2/hcd.c @@ -1313,19 +1313,20 @@ if (num_packets > max_hc_pkt_count) { num_packets = max_hc_pkt_count; chan->xfer_len = num_packets * chan->max_packet; + } else if (chan->ep_is_in) { + /* + * Always program an integral # of max packets + * for IN transfers. + * Note: This assumes that the input buffer is + * aligned and sized accordingly. + */ + chan->xfer_len = num_packets * chan->max_packet; } } else { /* Need 1 packet for transfer length of 0 */ num_packets = 1; } - if (chan->ep_is_in) - /* - * Always program an integral # of max packets for IN - * transfers - */ - chan->xfer_len = num_packets * chan->max_packet; - if (chan->ep_type == USB_ENDPOINT_XFER_INT || chan->ep_type == USB_ENDPOINT_XFER_ISOC) /* @@ -4321,7 +4322,8 @@ if (hsotg->op_state == OTG_STATE_B_PERIPHERAL) goto unlock; - if (hsotg->params.power_down > DWC2_POWER_DOWN_PARAM_PARTIAL) + if (hsotg->params.power_down != DWC2_POWER_DOWN_PARAM_PARTIAL || + hsotg->flags.b.port_connect_status == 0) goto skip_power_saving; /* @@ -5397,7 +5399,7 @@ dwc2_writel(hsotg, hprt0, HPRT0); /* Wait for the HPRT0.PrtSusp register field to be set */ - if (dwc2_hsotg_wait_bit_set(hsotg, HPRT0, HPRT0_SUSP, 3000)) + if (dwc2_hsotg_wait_bit_set(hsotg, HPRT0, HPRT0_SUSP, 5000)) dev_warn(hsotg->dev, "Suspend wasn't generated\n"); /* --- linux-5.8.0.orig/drivers/usb/dwc2/hcd_intr.c +++ linux-5.8.0/drivers/usb/dwc2/hcd_intr.c @@ -500,7 +500,7 @@ &short_read); if (urb->actual_length + xfer_length > urb->length) { - dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__); + dev_dbg(hsotg->dev, "%s(): trimming xfer length\n", __func__); xfer_length = urb->length - urb->actual_length; } @@ -1977,6 +1977,18 @@ qtd->error_count++; dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb, qtd, DWC2_HC_XFER_XACT_ERR); + /* + * We can get here after a completed transaction + * (urb->actual_length >= urb->length) which was not reported + * as completed. If that is the case, and we do not abort + * the transfer, a transfer of size 0 will be enqueued + * subsequently. If urb->actual_length is not DMA-aligned, + * the buffer will then point to an unaligned address, and + * the resulting behavior is undefined. Bail out in that + * situation. + */ + if (qtd->urb->actual_length >= qtd->urb->length) + qtd->error_count = 3; dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd); dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_XACT_ERR); } --- linux-5.8.0.orig/drivers/usb/dwc2/params.c +++ linux-5.8.0/drivers/usb/dwc2/params.c @@ -860,7 +860,7 @@ int dwc2_init_params(struct dwc2_hsotg *hsotg) { const struct of_device_id *match; - void (*set_params)(void *data); + void (*set_params)(struct dwc2_hsotg *data); dwc2_set_default_params(hsotg); dwc2_get_device_properties(hsotg); --- linux-5.8.0.orig/drivers/usb/dwc2/platform.c +++ linux-5.8.0/drivers/usb/dwc2/platform.c @@ -582,18 +582,27 @@ if (hsotg->gadget_enabled) { retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget); if (retval) { + hsotg->gadget.udc = NULL; dwc2_hsotg_remove(hsotg); - goto error_init; + goto error_debugfs; } } #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */ return 0; +#if IS_ENABLED(CONFIG_USB_DWC2_PERIPHERAL) || \ + IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE) +error_debugfs: + dwc2_debugfs_exit(hsotg); + if (hsotg->hcd_enabled) + dwc2_hcd_remove(hsotg); +#endif error_init: if (hsotg->params.activate_stm_id_vb_detection) regulator_disable(hsotg->usb33d); error: - dwc2_lowlevel_hw_disable(hsotg); + if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) + dwc2_lowlevel_hw_disable(hsotg); return retval; } --- linux-5.8.0.orig/drivers/usb/dwc3/core.c +++ linux-5.8.0/drivers/usb/dwc3/core.c @@ -119,9 +119,7 @@ struct dwc3 *dwc = work_to_dwc(work); unsigned long flags; int ret; - - if (dwc->dr_mode != USB_DR_MODE_OTG) - return; + u32 reg; pm_runtime_get_sync(dwc->dev); @@ -172,6 +170,11 @@ otg_set_vbus(dwc->usb2_phy->otg, true); phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST); phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST); + if (dwc->dis_split_quirk) { + reg = dwc3_readl(dwc->regs, DWC3_GUCTL3); + reg |= DWC3_GUCTL3_SPLITDISABLE; + dwc3_writel(dwc->regs, DWC3_GUCTL3, reg); + } } break; case DWC3_GCTL_PRTCAP_DEVICE: @@ -203,6 +206,9 @@ { unsigned long flags; + if (dwc->dr_mode != USB_DR_MODE_OTG) + return; + spin_lock_irqsave(&dwc->lock, flags); dwc->desired_dr_role = mode; spin_unlock_irqrestore(&dwc->lock, flags); @@ -930,13 +936,6 @@ */ dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE); - /* Handle USB2.0-only core configuration */ - if (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == - DWC3_GHWPARAMS3_SSPHY_IFC_DIS) { - if (dwc->maximum_speed == USB_SPEED_SUPER) - dwc->maximum_speed = USB_SPEED_HIGH; - } - ret = dwc3_phy_setup(dwc); if (ret) goto err0; @@ -1357,6 +1356,9 @@ dwc->dis_metastability_quirk = device_property_read_bool(dev, "snps,dis_metastability_quirk"); + dwc->dis_split_quirk = device_property_read_bool(dev, + "snps,dis-split-quirk"); + dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; @@ -1382,6 +1384,8 @@ static void dwc3_check_params(struct dwc3 *dwc) { struct device *dev = dwc->dev; + unsigned int hwparam_gen = + DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3); /* Check for proper value of imod_interval */ if (dwc->imod_interval && !dwc3_has_imod(dwc)) { @@ -1413,17 +1417,23 @@ dwc->maximum_speed); /* fall through */ case USB_SPEED_UNKNOWN: - /* default to superspeed */ - dwc->maximum_speed = USB_SPEED_SUPER; - - /* - * default to superspeed plus if we are capable. - */ - if ((DWC3_IP_IS(DWC31) || DWC3_IP_IS(DWC32)) && - (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == - DWC3_GHWPARAMS3_SSPHY_IFC_GEN2)) + switch (hwparam_gen) { + case DWC3_GHWPARAMS3_SSPHY_IFC_GEN2: dwc->maximum_speed = USB_SPEED_SUPER_PLUS; - + break; + case DWC3_GHWPARAMS3_SSPHY_IFC_GEN1: + if (DWC3_IP_IS(DWC32)) + dwc->maximum_speed = USB_SPEED_SUPER_PLUS; + else + dwc->maximum_speed = USB_SPEED_SUPER; + break; + case DWC3_GHWPARAMS3_SSPHY_IFC_DIS: + dwc->maximum_speed = USB_SPEED_HIGH; + break; + default: + dwc->maximum_speed = USB_SPEED_SUPER; + break; + } break; } } @@ -1555,6 +1565,17 @@ err5: dwc3_event_buffers_cleanup(dwc); + + usb_phy_shutdown(dwc->usb2_phy); + usb_phy_shutdown(dwc->usb3_phy); + phy_exit(dwc->usb2_generic_phy); + phy_exit(dwc->usb3_generic_phy); + + usb_phy_set_suspend(dwc->usb2_phy, 1); + usb_phy_set_suspend(dwc->usb3_phy, 1); + phy_power_off(dwc->usb2_generic_phy); + phy_power_off(dwc->usb3_generic_phy); + dwc3_ulpi_exit(dwc); err4: @@ -1590,9 +1611,9 @@ dwc3_core_exit(dwc); dwc3_ulpi_exit(dwc); - pm_runtime_put_sync(&pdev->dev); - pm_runtime_allow(&pdev->dev); pm_runtime_disable(&pdev->dev); + pm_runtime_put_noidle(&pdev->dev); + pm_runtime_set_suspended(&pdev->dev); dwc3_free_event_buffers(dwc); dwc3_free_scratch_buffers(dwc); @@ -1729,7 +1750,7 @@ if (PMSG_IS_AUTO(msg)) break; - ret = dwc3_core_init(dwc); + ret = dwc3_core_init_for_resume(dwc); if (ret) return ret; @@ -1866,10 +1887,26 @@ return 0; } + +static void dwc3_complete(struct device *dev) +{ + struct dwc3 *dwc = dev_get_drvdata(dev); + u32 reg; + + if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST && + dwc->dis_split_quirk) { + reg = dwc3_readl(dwc->regs, DWC3_GUCTL3); + reg |= DWC3_GUCTL3_SPLITDISABLE; + dwc3_writel(dwc->regs, DWC3_GUCTL3, reg); + } +} +#else +#define dwc3_complete NULL #endif /* CONFIG_PM_SLEEP */ static const struct dev_pm_ops dwc3_dev_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS(dwc3_suspend, dwc3_resume) + .complete = dwc3_complete, SET_RUNTIME_PM_OPS(dwc3_runtime_suspend, dwc3_runtime_resume, dwc3_runtime_idle) }; --- linux-5.8.0.orig/drivers/usb/dwc3/core.h +++ linux-5.8.0/drivers/usb/dwc3/core.h @@ -138,6 +138,7 @@ #define DWC3_GEVNTCOUNT(n) (0xc40c + ((n) * 0x10)) #define DWC3_GHWPARAMS8 0xc600 +#define DWC3_GUCTL3 0xc60c #define DWC3_GFLADJ 0xc630 /* Device Registers */ @@ -284,6 +285,7 @@ /* Global USB2 PHY Vendor Control Register */ #define DWC3_GUSB2PHYACC_NEWREGREQ BIT(25) +#define DWC3_GUSB2PHYACC_DONE BIT(24) #define DWC3_GUSB2PHYACC_BUSY BIT(23) #define DWC3_GUSB2PHYACC_WRITE BIT(22) #define DWC3_GUSB2PHYACC_ADDR(n) (n << 16) @@ -380,6 +382,9 @@ /* Global User Control Register 2 */ #define DWC3_GUCTL2_RST_ACTBITLATER BIT(14) +/* Global User Control Register 3 */ +#define DWC3_GUCTL3_SPLITDISABLE BIT(14) + /* Device Configuration Register */ #define DWC3_DCFG_DEVADDR(addr) ((addr) << 3) #define DWC3_DCFG_DEVADDR_MASK DWC3_DCFG_DEVADDR(0x7f) @@ -706,6 +711,7 @@ #define DWC3_EP_IGNORE_NEXT_NOSTREAM BIT(8) #define DWC3_EP_FORCE_RESTART_STREAM BIT(9) #define DWC3_EP_FIRST_STREAM_PRIMED BIT(10) +#define DWC3_EP_PENDING_CLEAR_STALL BIT(11) /* This last one is specific to EP0 */ #define DWC3_EP0_DIR_IN BIT(31) @@ -1052,6 +1058,7 @@ * 2 - No de-emphasis * 3 - Reserved * @dis_metastability_quirk: set to disable metastability quirk. + * @dis_split_quirk: set to disable split boundary. * @imod_interval: set the interrupt moderation interval in 250ns * increments or 0 to disable. */ @@ -1245,6 +1252,8 @@ unsigned dis_metastability_quirk:1; + unsigned dis_split_quirk:1; + u16 imod_interval; }; --- linux-5.8.0.orig/drivers/usb/dwc3/dwc3-meson-g12a.c +++ linux-5.8.0/drivers/usb/dwc3/dwc3-meson-g12a.c @@ -747,7 +747,7 @@ ret = priv->drvdata->setup_regmaps(priv, base); if (ret) - return ret; + goto err_disable_clks; if (priv->vbus) { ret = regulator_enable(priv->vbus); --- linux-5.8.0.orig/drivers/usb/dwc3/dwc3-of-simple.c +++ linux-5.8.0/drivers/usb/dwc3/dwc3-of-simple.c @@ -176,6 +176,7 @@ { .compatible = "cavium,octeon-7130-usb-uctl" }, { .compatible = "sprd,sc9860-dwc3" }, { .compatible = "allwinner,sun50i-h6-dwc3" }, + { .compatible = "hisilicon,hi3670-dwc3" }, { /* Sentinel */ } }; MODULE_DEVICE_TABLE(of, of_dwc3_simple_match); --- linux-5.8.0.orig/drivers/usb/dwc3/dwc3-pci.c +++ linux-5.8.0/drivers/usb/dwc3/dwc3-pci.c @@ -40,6 +40,7 @@ #define PCI_DEVICE_ID_INTEL_TGPLP 0xa0ee #define PCI_DEVICE_ID_INTEL_TGPH 0x43ee #define PCI_DEVICE_ID_INTEL_JSP 0x4dee +#define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1 #define PCI_INTEL_BXT_DSM_GUID "732b85d5-b7a7-4a1b-9ba0-4bbd00ffd511" #define PCI_INTEL_BXT_FUNC_PMU_PWR 4 @@ -117,6 +118,8 @@ static const struct property_entry dwc3_pci_mrfld_properties[] = { PROPERTY_ENTRY_STRING("dr_mode", "otg"), PROPERTY_ENTRY_STRING("linux,extcon-name", "mrfld_bcove_pwrsrc"), + PROPERTY_ENTRY_BOOL("snps,dis_u3_susphy_quirk"), + PROPERTY_ENTRY_BOOL("snps,dis_u2_susphy_quirk"), PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"), {} }; @@ -147,7 +150,8 @@ if (pdev->vendor == PCI_VENDOR_ID_INTEL) { if (pdev->device == PCI_DEVICE_ID_INTEL_BXT || - pdev->device == PCI_DEVICE_ID_INTEL_BXT_M) { + pdev->device == PCI_DEVICE_ID_INTEL_BXT_M || + pdev->device == PCI_DEVICE_ID_INTEL_EHLLP) { guid_parse(PCI_INTEL_BXT_DSM_GUID, &dwc->guid); dwc->has_dsm_for_pm = true; } @@ -366,6 +370,9 @@ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_JSP), (kernel_ulong_t) &dwc3_pci_intel_properties, }, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLS), + (kernel_ulong_t) &dwc3_pci_intel_properties, }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NL_USB), (kernel_ulong_t) &dwc3_pci_amd_properties, }, { } /* Terminating Entry */ --- linux-5.8.0.orig/drivers/usb/dwc3/dwc3-qcom.c +++ linux-5.8.0/drivers/usb/dwc3/dwc3-qcom.c @@ -51,12 +51,14 @@ int dp_hs_phy_irq_index; int dm_hs_phy_irq_index; int ss_phy_irq_index; + bool is_urs; }; struct dwc3_qcom { struct device *dev; void __iomem *qscratch_base; struct platform_device *dwc3; + struct platform_device *urs_usb; struct clk **clks; int num_clocks; struct reset_control *resets; @@ -251,8 +253,10 @@ for (i = qcom->num_clocks - 1; i >= 0; i--) clk_disable_unprepare(qcom->clks[i]); + if (device_may_wakeup(qcom->dev)) + dwc3_qcom_enable_interrupts(qcom); + qcom->is_suspended = true; - dwc3_qcom_enable_interrupts(qcom); return 0; } @@ -265,7 +269,8 @@ if (!qcom->is_suspended) return 0; - dwc3_qcom_disable_interrupts(qcom); + if (device_may_wakeup(qcom->dev)) + dwc3_qcom_disable_interrupts(qcom); for (i = 0; i < qcom->num_clocks; i++) { ret = clk_prepare_enable(qcom->clks[i]); @@ -320,13 +325,15 @@ static int dwc3_qcom_get_irq(struct platform_device *pdev, const char *name, int num) { + struct dwc3_qcom *qcom = platform_get_drvdata(pdev); + struct platform_device *pdev_irq = qcom->urs_usb ? qcom->urs_usb : pdev; struct device_node *np = pdev->dev.of_node; int ret; if (np) - ret = platform_get_irq_byname(pdev, name); + ret = platform_get_irq_byname(pdev_irq, name); else - ret = platform_get_irq(pdev, num); + ret = platform_get_irq(pdev_irq, num); return ret; } @@ -457,6 +464,8 @@ struct dwc3_qcom *qcom = platform_get_drvdata(pdev); struct device *dev = &pdev->dev; struct resource *res, *child_res = NULL; + struct platform_device *pdev_irq = qcom->urs_usb ? qcom->urs_usb : + pdev; int irq; int ret; @@ -486,7 +495,7 @@ child_res[0].end = child_res[0].start + qcom->acpi_pdata->dwc3_core_base_size; - irq = platform_get_irq(pdev, 0); + irq = platform_get_irq(pdev_irq, 0); child_res[1].flags = IORESOURCE_IRQ; child_res[1].start = child_res[1].end = irq; @@ -528,16 +537,19 @@ ret = of_platform_populate(np, NULL, NULL, dev); if (ret) { dev_err(dev, "failed to register dwc3 core - %d\n", ret); - return ret; + goto node_put; } qcom->dwc3 = of_find_device_by_node(dwc3_np); if (!qcom->dwc3) { + ret = -ENODEV; dev_err(dev, "failed to get dwc3 platform device\n"); - return -ENODEV; } - return 0; +node_put: + of_node_put(dwc3_np); + + return ret; } static const struct dwc3_acpi_pdata sdm845_acpi_pdata = { @@ -550,6 +562,33 @@ .ss_phy_irq_index = 2 }; +static struct platform_device * +dwc3_qcom_create_urs_usb_platdev(struct device *dev) +{ + struct fwnode_handle *fwh; + struct acpi_device *adev; + char name[8]; + int ret; + int id; + + /* Figure out device id */ + ret = sscanf(fwnode_get_name(dev->fwnode), "URS%d", &id); + if (!ret) + return NULL; + + /* Find the child using name */ + snprintf(name, sizeof(name), "USB%d", id); + fwh = fwnode_get_named_child_node(dev->fwnode, name); + if (!fwh) + return NULL; + + adev = to_acpi_device_node(fwh); + if (!adev) + return NULL; + + return acpi_create_platform_device(adev, NULL); +} + static int dwc3_qcom_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; @@ -614,6 +653,14 @@ qcom->acpi_pdata->qscratch_base_offset; parent_res->end = parent_res->start + qcom->acpi_pdata->qscratch_base_size; + + if (qcom->acpi_pdata->is_urs) { + qcom->urs_usb = dwc3_qcom_create_urs_usb_platdev(dev); + if (!qcom->urs_usb) { + dev_err(dev, "failed to create URS USB platdev\n"); + return -ENODEV; + } + } } qcom->qscratch_base = devm_ioremap_resource(dev, parent_res); @@ -758,8 +805,22 @@ }; MODULE_DEVICE_TABLE(of, dwc3_qcom_of_match); +static const struct dwc3_acpi_pdata sdm845_acpi_urs_pdata = { + .qscratch_base_offset = SDM845_QSCRATCH_BASE_OFFSET, + .qscratch_base_size = SDM845_QSCRATCH_SIZE, + .dwc3_core_base_size = SDM845_DWC3_CORE_SIZE, + .hs_phy_irq_index = 1, + .dp_hs_phy_irq_index = 4, + .dm_hs_phy_irq_index = 3, + .ss_phy_irq_index = 2, + .is_urs = true, +}; + static const struct acpi_device_id dwc3_qcom_acpi_match[] = { { "QCOM2430", (unsigned long)&sdm845_acpi_pdata }, + { "QCOM0304", (unsigned long)&sdm845_acpi_urs_pdata }, + { "QCOM0497", (unsigned long)&sdm845_acpi_urs_pdata }, + { "QCOM04A6", (unsigned long)&sdm845_acpi_pdata }, { }, }; MODULE_DEVICE_TABLE(acpi, dwc3_qcom_acpi_match); --- linux-5.8.0.orig/drivers/usb/dwc3/ep0.c +++ linux-5.8.0/drivers/usb/dwc3/ep0.c @@ -524,6 +524,11 @@ ret = __dwc3_gadget_ep_set_halt(dep, set, true); if (ret) return -EINVAL; + + /* ClearFeature(Halt) may need delayed status */ + if (!set && (dep->flags & DWC3_EP_END_TRANSFER_PENDING)) + return USB_GADGET_DELAYED_STATUS; + break; default: return -EINVAL; @@ -942,12 +947,16 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc, struct dwc3_ep *dep, struct dwc3_request *req) { + unsigned int trb_length = 0; int ret; req->direction = !!dep->number; if (req->request.length == 0) { - dwc3_ep0_prepare_one_trb(dep, dwc->ep0_trb_addr, 0, + if (!req->direction) + trb_length = dep->endpoint.maxpacket; + + dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, trb_length, DWC3_TRBCTL_CONTROL_DATA, false); ret = dwc3_ep0_start_trans(dep); } else if (!IS_ALIGNED(req->request.length, dep->endpoint.maxpacket) @@ -994,9 +1003,12 @@ req->trb = &dwc->ep0_trb[dep->trb_enqueue - 1]; + if (!req->direction) + trb_length = dep->endpoint.maxpacket; + /* Now prepare one extra TRB to align transfer size */ dwc3_ep0_prepare_one_trb(dep, dwc->bounce_addr, - 0, DWC3_TRBCTL_CONTROL_DATA, + trb_length, DWC3_TRBCTL_CONTROL_DATA, false); ret = dwc3_ep0_start_trans(dep); } else { @@ -1042,6 +1054,18 @@ __dwc3_ep0_do_control_status(dwc, dep); } +void dwc3_ep0_send_delayed_status(struct dwc3 *dwc) +{ + unsigned int direction = !dwc->ep0_expect_in; + + dwc->delayed_status = false; + + if (dwc->ep0state != EP0_STATUS_PHASE) + return; + + __dwc3_ep0_do_control_status(dwc, dwc->eps[direction]); +} + static void dwc3_ep0_end_control_data(struct dwc3 *dwc, struct dwc3_ep *dep) { struct dwc3_gadget_ep_cmd_params params; --- linux-5.8.0.orig/drivers/usb/dwc3/gadget.c +++ linux-5.8.0/drivers/usb/dwc3/gadget.c @@ -1054,27 +1054,25 @@ * dwc3_prepare_one_trb - setup one TRB from one request * @dep: endpoint for which this request is prepared * @req: dwc3_request pointer + * @trb_length: buffer size of the TRB * @chain: should this TRB be chained to the next? * @node: only for isochronous endpoints. First TRB needs different type. */ static void dwc3_prepare_one_trb(struct dwc3_ep *dep, - struct dwc3_request *req, unsigned chain, unsigned node) + struct dwc3_request *req, unsigned int trb_length, + unsigned chain, unsigned node) { struct dwc3_trb *trb; - unsigned int length; dma_addr_t dma; unsigned stream_id = req->request.stream_id; unsigned short_not_ok = req->request.short_not_ok; unsigned no_interrupt = req->request.no_interrupt; unsigned is_last = req->request.is_last; - if (req->request.num_sgs > 0) { - length = sg_dma_len(req->start_sg); + if (req->request.num_sgs > 0) dma = sg_dma_address(req->start_sg); - } else { - length = req->request.length; + else dma = req->request.dma; - } trb = &dep->trb_pool[dep->trb_enqueue]; @@ -1086,7 +1084,7 @@ req->num_trbs++; - __dwc3_prepare_one_trb(dep, trb, dma, length, chain, node, + __dwc3_prepare_one_trb(dep, trb, dma, trb_length, chain, node, stream_id, short_not_ok, no_interrupt, is_last); } @@ -1096,16 +1094,27 @@ struct scatterlist *sg = req->start_sg; struct scatterlist *s; int i; - + unsigned int length = req->request.length; + unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc); + unsigned int rem = length % maxp; unsigned int remaining = req->request.num_mapped_sgs - req->num_queued_sgs; + /* + * If we resume preparing the request, then get the remaining length of + * the request and resume where we left off. + */ + for_each_sg(req->request.sg, s, req->num_queued_sgs, i) + length -= sg_dma_len(s); + for_each_sg(sg, s, remaining, i) { - unsigned int length = req->request.length; - unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc); - unsigned int rem = length % maxp; + unsigned int trb_length; unsigned chain = true; + trb_length = min_t(unsigned int, length, sg_dma_len(s)); + + length -= trb_length; + /* * IOMMU driver is coalescing the list of sgs which shares a * page boundary into one and giving it to USB driver. With @@ -1113,7 +1122,7 @@ * sgs passed. So mark the chain bit to false if it isthe last * mapped sg. */ - if (i == remaining - 1) + if ((i == remaining - 1) || !length) chain = false; if (rem && usb_endpoint_dir_out(dep->endpoint.desc) && !chain) { @@ -1123,7 +1132,7 @@ req->needs_extra_trb = true; /* prepare normal TRB */ - dwc3_prepare_one_trb(dep, req, true, i); + dwc3_prepare_one_trb(dep, req, trb_length, true, i); /* Now prepare one extra TRB to align transfer size */ trb = &dep->trb_pool[dep->trb_enqueue]; @@ -1134,8 +1143,39 @@ req->request.short_not_ok, req->request.no_interrupt, req->request.is_last); + } else if (req->request.zero && req->request.length && + !usb_endpoint_xfer_isoc(dep->endpoint.desc) && + !rem && !chain) { + struct dwc3 *dwc = dep->dwc; + struct dwc3_trb *trb; + + req->needs_extra_trb = true; + + /* Prepare normal TRB */ + dwc3_prepare_one_trb(dep, req, trb_length, true, i); + + /* Prepare one extra TRB to handle ZLP */ + trb = &dep->trb_pool[dep->trb_enqueue]; + req->num_trbs++; + __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, 0, + !req->direction, 1, + req->request.stream_id, + req->request.short_not_ok, + req->request.no_interrupt, + req->request.is_last); + + /* Prepare one more TRB to handle MPS alignment */ + if (!req->direction) { + trb = &dep->trb_pool[dep->trb_enqueue]; + req->num_trbs++; + __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, maxp, + false, 1, req->request.stream_id, + req->request.short_not_ok, + req->request.no_interrupt, + req->request.is_last); + } } else { - dwc3_prepare_one_trb(dep, req, chain, i); + dwc3_prepare_one_trb(dep, req, trb_length, chain, i); } /* @@ -1150,6 +1190,16 @@ req->num_queued_sgs++; + /* + * The number of pending SG entries may not correspond to the + * number of mapped SG entries. If all the data are queued, then + * don't include unused SG entries. + */ + if (length == 0) { + req->num_pending_sgs -= req->request.num_mapped_sgs - req->num_queued_sgs; + break; + } + if (!dwc3_calc_trbs_left(dep)) break; } @@ -1169,7 +1219,7 @@ req->needs_extra_trb = true; /* prepare normal TRB */ - dwc3_prepare_one_trb(dep, req, true, 0); + dwc3_prepare_one_trb(dep, req, length, true, 0); /* Now prepare one extra TRB to align transfer size */ trb = &dep->trb_pool[dep->trb_enqueue]; @@ -1180,6 +1230,7 @@ req->request.no_interrupt, req->request.is_last); } else if (req->request.zero && req->request.length && + !usb_endpoint_xfer_isoc(dep->endpoint.desc) && (IS_ALIGNED(req->request.length, maxp))) { struct dwc3 *dwc = dep->dwc; struct dwc3_trb *trb; @@ -1187,18 +1238,29 @@ req->needs_extra_trb = true; /* prepare normal TRB */ - dwc3_prepare_one_trb(dep, req, true, 0); + dwc3_prepare_one_trb(dep, req, length, true, 0); - /* Now prepare one extra TRB to handle ZLP */ + /* Prepare one extra TRB to handle ZLP */ trb = &dep->trb_pool[dep->trb_enqueue]; req->num_trbs++; __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, 0, - false, 1, req->request.stream_id, + !req->direction, 1, req->request.stream_id, req->request.short_not_ok, req->request.no_interrupt, req->request.is_last); + + /* Prepare one more TRB to handle MPS alignment for OUT */ + if (!req->direction) { + trb = &dep->trb_pool[dep->trb_enqueue]; + req->num_trbs++; + __dwc3_prepare_one_trb(dep, trb, dwc->bounce_addr, maxp, + false, 1, req->request.stream_id, + req->request.short_not_ok, + req->request.no_interrupt, + req->request.is_last); + } } else { - dwc3_prepare_one_trb(dep, req, false, 0); + dwc3_prepare_one_trb(dep, req, length, false, 0); } } @@ -1544,8 +1606,13 @@ if (dep->flags & DWC3_EP_WAIT_TRANSFER_COMPLETE) return 0; - /* Start the transfer only after the END_TRANSFER is completed */ - if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) { + /* + * Start the transfer only after the END_TRANSFER is completed + * and endpoint STALL is cleared. + */ + if ((dep->flags & DWC3_EP_END_TRANSFER_PENDING) || + (dep->flags & DWC3_EP_WEDGE) || + (dep->flags & DWC3_EP_STALL)) { dep->flags |= DWC3_EP_DELAY_START; return 0; } @@ -1673,6 +1740,8 @@ list_for_each_entry_safe(r, t, &dep->started_list, list) dwc3_gadget_move_cancelled_request(r); + dep->flags &= ~DWC3_EP_WAIT_TRANSFER_COMPLETE; + goto out; } } @@ -1738,6 +1807,18 @@ return 0; } + dwc3_stop_active_transfer(dep, true, true); + + list_for_each_entry_safe(req, tmp, &dep->started_list, list) + dwc3_gadget_move_cancelled_request(req); + + if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) { + dep->flags |= DWC3_EP_PENDING_CLEAR_STALL; + return 0; + } + + dwc3_gadget_ep_cleanup_cancelled_requests(dep); + ret = dwc3_send_clear_stall_ep_cmd(dep); if (ret) { dev_err(dwc->dev, "failed to clear STALL on %s\n", @@ -1747,18 +1828,11 @@ dep->flags &= ~(DWC3_EP_STALL | DWC3_EP_WEDGE); - dwc3_stop_active_transfer(dep, true, true); + if ((dep->flags & DWC3_EP_DELAY_START) && + !usb_endpoint_xfer_isoc(dep->endpoint.desc)) + __dwc3_gadget_kick_transfer(dep); - list_for_each_entry_safe(req, tmp, &dep->started_list, list) - dwc3_gadget_move_cancelled_request(req); - - list_for_each_entry_safe(req, tmp, &dep->pending_list, list) - dwc3_gadget_move_cancelled_request(req); - - if (!(dep->flags & DWC3_EP_END_TRANSFER_PENDING)) { - dep->flags &= ~DWC3_EP_DELAY_START; - dwc3_gadget_ep_cleanup_cancelled_requests(dep); - } + dep->flags &= ~DWC3_EP_DELAY_START; } return ret; @@ -2648,16 +2722,25 @@ ret = dwc3_gadget_ep_reclaim_trb_linear(dep, req, event, status); + req->request.actual = req->request.length - req->remaining; + + if (!dwc3_gadget_ep_request_completed(req)) + goto out; + if (req->needs_extra_trb) { + unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc); + ret = dwc3_gadget_ep_reclaim_trb_linear(dep, req, event, status); - req->needs_extra_trb = false; - } - req->request.actual = req->request.length - req->remaining; + /* Reclaim MPS padding TRB for ZLP */ + if (!req->direction && req->request.zero && req->request.length && + !usb_endpoint_xfer_isoc(dep->endpoint.desc) && + (IS_ALIGNED(req->request.length, maxp))) + ret = dwc3_gadget_ep_reclaim_trb_linear(dep, req, event, status); - if (!dwc3_gadget_ep_request_completed(req)) - goto out; + req->needs_extra_trb = false; + } dwc3_gadget_giveback(dep, req, status); @@ -2902,6 +2985,26 @@ dep->flags &= ~DWC3_EP_END_TRANSFER_PENDING; dep->flags &= ~DWC3_EP_TRANSFER_STARTED; dwc3_gadget_ep_cleanup_cancelled_requests(dep); + + if (dep->flags & DWC3_EP_PENDING_CLEAR_STALL) { + struct dwc3 *dwc = dep->dwc; + + dep->flags &= ~DWC3_EP_PENDING_CLEAR_STALL; + if (dwc3_send_clear_stall_ep_cmd(dep)) { + struct usb_ep *ep0 = &dwc->eps[0]->endpoint; + + dev_err(dwc->dev, "failed to clear STALL on %s\n", + dep->name); + if (dwc->delayed_status) + __dwc3_gadget_ep0_set_halt(ep0, 1); + return; + } + + dep->flags &= ~(DWC3_EP_STALL | DWC3_EP_WEDGE); + if (dwc->delayed_status) + dwc3_ep0_send_delayed_status(dwc); + } + if ((dep->flags & DWC3_EP_DELAY_START) && !usb_endpoint_xfer_isoc(dep->endpoint.desc)) __dwc3_gadget_kick_transfer(dep); --- linux-5.8.0.orig/drivers/usb/dwc3/gadget.h +++ linux-5.8.0/drivers/usb/dwc3/gadget.h @@ -111,6 +111,7 @@ int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request, gfp_t gfp_flags); int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol); +void dwc3_ep0_send_delayed_status(struct dwc3 *dwc); /** * dwc3_gadget_ep_get_transfer_index - Gets transfer index from HW --- linux-5.8.0.orig/drivers/usb/dwc3/ulpi.c +++ linux-5.8.0/drivers/usb/dwc3/ulpi.c @@ -7,6 +7,8 @@ * Author: Heikki Krogerus */ +#include +#include #include #include "core.h" @@ -17,14 +19,28 @@ DWC3_GUSB2PHYACC_ADDR(ULPI_ACCESS_EXTENDED) | \ DWC3_GUSB2PHYACC_EXTEND_ADDR(a) : DWC3_GUSB2PHYACC_ADDR(a)) -static int dwc3_ulpi_busyloop(struct dwc3 *dwc) +#define DWC3_ULPI_BASE_DELAY DIV_ROUND_UP(NSEC_PER_SEC, 60000000L) + +static int dwc3_ulpi_busyloop(struct dwc3 *dwc, u8 addr, bool read) { - unsigned count = 1000; + unsigned long ns = 5L * DWC3_ULPI_BASE_DELAY; + unsigned int count = 10000; u32 reg; + if (addr >= ULPI_EXT_VENDOR_SPECIFIC) + ns += DWC3_ULPI_BASE_DELAY; + + if (read) + ns += DWC3_ULPI_BASE_DELAY; + + reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); + if (reg & DWC3_GUSB2PHYCFG_SUSPHY) + usleep_range(1000, 1200); + while (count--) { + ndelay(ns); reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYACC(0)); - if (!(reg & DWC3_GUSB2PHYACC_BUSY)) + if (reg & DWC3_GUSB2PHYACC_DONE) return 0; cpu_relax(); } @@ -38,16 +54,10 @@ u32 reg; int ret; - reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); - if (reg & DWC3_GUSB2PHYCFG_SUSPHY) { - reg &= ~DWC3_GUSB2PHYCFG_SUSPHY; - dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); - } - reg = DWC3_GUSB2PHYACC_NEWREGREQ | DWC3_ULPI_ADDR(addr); dwc3_writel(dwc->regs, DWC3_GUSB2PHYACC(0), reg); - ret = dwc3_ulpi_busyloop(dwc); + ret = dwc3_ulpi_busyloop(dwc, addr, true); if (ret) return ret; @@ -61,17 +71,11 @@ struct dwc3 *dwc = dev_get_drvdata(dev); u32 reg; - reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); - if (reg & DWC3_GUSB2PHYCFG_SUSPHY) { - reg &= ~DWC3_GUSB2PHYCFG_SUSPHY; - dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); - } - reg = DWC3_GUSB2PHYACC_NEWREGREQ | DWC3_ULPI_ADDR(addr); reg |= DWC3_GUSB2PHYACC_WRITE | val; dwc3_writel(dwc->regs, DWC3_GUSB2PHYACC(0), reg); - return dwc3_ulpi_busyloop(dwc); + return dwc3_ulpi_busyloop(dwc, addr, false); } static const struct ulpi_ops dwc3_ulpi_ops = { --- linux-5.8.0.orig/drivers/usb/gadget/Kconfig +++ linux-5.8.0/drivers/usb/gadget/Kconfig @@ -265,6 +265,7 @@ depends on NET select USB_U_ETHER select USB_F_NCM + select CRC32 help NCM is an advanced protocol for Ethernet encapsulation, allows grouping of several ethernet frames into one USB transfer and @@ -314,6 +315,7 @@ depends on NET select USB_U_ETHER select USB_F_EEM + select CRC32 help CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM and therefore can be supported by more hardware. Technically ECM and --- linux-5.8.0.orig/drivers/usb/gadget/composite.c +++ linux-5.8.0/drivers/usb/gadget/composite.c @@ -392,8 +392,11 @@ spin_lock_irqsave(&cdev->lock, flags); - if (cdev->deactivations == 0) + if (cdev->deactivations == 0) { + spin_unlock_irqrestore(&cdev->lock, flags); status = usb_gadget_deactivate(cdev->gadget); + spin_lock_irqsave(&cdev->lock, flags); + } if (status == 0) cdev->deactivations++; @@ -424,8 +427,11 @@ status = -EINVAL; else { cdev->deactivations--; - if (cdev->deactivations == 0) + if (cdev->deactivations == 0) { + spin_unlock_irqrestore(&cdev->lock, flags); status = usb_gadget_activate(cdev->gadget); + spin_lock_irqsave(&cdev->lock, flags); + } } spin_unlock_irqrestore(&cdev->lock, flags); @@ -1085,7 +1091,7 @@ while (*sp) { s = *sp; language = cpu_to_le16(s->language); - for (tmp = buf; *tmp && tmp < &buf[126]; tmp++) { + for (tmp = buf; *tmp && tmp < &buf[USB_MAX_STRING_LEN]; tmp++) { if (*tmp == language) goto repeat; } @@ -1160,7 +1166,7 @@ collect_langs(sp, s->wData); } - for (len = 0; len <= 126 && s->wData[len]; len++) + for (len = 0; len <= USB_MAX_STRING_LEN && s->wData[len]; len++) continue; if (!len) return -EINVAL; --- linux-5.8.0.orig/drivers/usb/gadget/configfs.c +++ linux-5.8.0/drivers/usb/gadget/configfs.c @@ -97,21 +97,27 @@ struct list_head list; }; +#define USB_MAX_STRING_WITH_NULL_LEN (USB_MAX_STRING_LEN+1) + static int usb_string_copy(const char *s, char **s_copy) { int ret; char *str; char *copy = *s_copy; ret = strlen(s); - if (ret > 126) + if (ret > USB_MAX_STRING_LEN) return -EOVERFLOW; - str = kstrdup(s, GFP_KERNEL); - if (!str) - return -ENOMEM; + if (copy) { + str = copy; + } else { + str = kmalloc(USB_MAX_STRING_WITH_NULL_LEN, GFP_KERNEL); + if (!str) + return -ENOMEM; + } + strcpy(str, s); if (str[ret - 1] == '\n') str[ret - 1] = '\0'; - kfree(copy); *s_copy = str; return 0; } @@ -221,9 +227,16 @@ static ssize_t gadget_dev_desc_UDC_show(struct config_item *item, char *page) { - char *udc_name = to_gadget_info(item)->composite.gadget_driver.udc_name; + struct gadget_info *gi = to_gadget_info(item); + char *udc_name; + int ret; - return sprintf(page, "%s\n", udc_name ?: ""); + mutex_lock(&gi->lock); + udc_name = gi->composite.gadget_driver.udc_name; + ret = sprintf(page, "%s\n", udc_name ?: ""); + mutex_unlock(&gi->lock); + + return ret; } static int unregister_gadget(struct gadget_info *gi) @@ -1248,9 +1261,9 @@ cfg = container_of(c, struct config_usb_cfg, c); - list_for_each_entry_safe(f, tmp, &c->functions, list) { + list_for_each_entry_safe_reverse(f, tmp, &c->functions, list) { - list_move_tail(&f->list, &cfg->func_list); + list_move(&f->list, &cfg->func_list); if (f->unbind) { dev_dbg(&gi->cdev.gadget->dev, "unbind function '%s'/%p\n", @@ -1536,7 +1549,7 @@ .suspend = configfs_composite_suspend, .resume = configfs_composite_resume, - .max_speed = USB_SPEED_SUPER, + .max_speed = USB_SPEED_SUPER_PLUS, .driver = { .owner = THIS_MODULE, .name = "configfs-gadget", @@ -1576,7 +1589,7 @@ gi->composite.unbind = configfs_do_nothing; gi->composite.suspend = NULL; gi->composite.resume = NULL; - gi->composite.max_speed = USB_SPEED_SUPER; + gi->composite.max_speed = USB_SPEED_SUPER_PLUS; spin_lock_init(&gi->spinlock); mutex_init(&gi->lock); --- linux-5.8.0.orig/drivers/usb/gadget/function/f_acm.c +++ linux-5.8.0/drivers/usb/gadget/function/f_acm.c @@ -684,7 +684,7 @@ acm_ss_out_desc.bEndpointAddress = acm_fs_out_desc.bEndpointAddress; status = usb_assign_descriptors(f, acm_fs_function, acm_hs_function, - acm_ss_function, NULL); + acm_ss_function, acm_ss_function); if (status) goto fail; --- linux-5.8.0.orig/drivers/usb/gadget/function/f_fs.c +++ linux-5.8.0/drivers/usb/gadget/function/f_fs.c @@ -1324,10 +1324,11 @@ case FUNCTIONFS_ENDPOINT_DESC: { int desc_idx; - struct usb_endpoint_descriptor *desc; + struct usb_endpoint_descriptor desc1, *desc; switch (epfile->ffs->gadget->speed) { case USB_SPEED_SUPER: + case USB_SPEED_SUPER_PLUS: desc_idx = 2; break; case USB_SPEED_HIGH: @@ -1336,10 +1337,12 @@ default: desc_idx = 0; } + desc = epfile->ep->descs[desc_idx]; + memcpy(&desc1, desc, desc->bLength); spin_unlock_irq(&epfile->ffs->eps_lock); - ret = copy_to_user((void __user *)value, desc, desc->bLength); + ret = copy_to_user((void __user *)value, &desc1, desc1.bLength); if (ret) ret = -EFAULT; return ret; @@ -3172,7 +3175,8 @@ } if (likely(super)) { - func->function.ss_descriptors = vla_ptr(vlabuf, d, ss_descs); + func->function.ss_descriptors = func->function.ssp_descriptors = + vla_ptr(vlabuf, d, ss_descs); ss_len = ffs_do_descs(ffs->ss_descs_count, vla_ptr(vlabuf, d, raw_descs) + fs_len + hs_len, d_raw_descs__sz - fs_len - hs_len, @@ -3582,6 +3586,7 @@ func->function.fs_descriptors = NULL; func->function.hs_descriptors = NULL; func->function.ss_descriptors = NULL; + func->function.ssp_descriptors = NULL; func->interfaces_nums = NULL; ffs_event_add(ffs, FUNCTIONFS_UNBIND); --- linux-5.8.0.orig/drivers/usb/gadget/function/f_midi.c +++ linux-5.8.0/drivers/usb/gadget/function/f_midi.c @@ -1048,6 +1048,12 @@ f->ss_descriptors = usb_copy_descriptors(midi_function); if (!f->ss_descriptors) goto fail_f_midi; + + if (gadget_is_superspeed_plus(c->cdev->gadget)) { + f->ssp_descriptors = usb_copy_descriptors(midi_function); + if (!f->ssp_descriptors) + goto fail_f_midi; + } } kfree(midi_function); @@ -1315,7 +1321,7 @@ midi->id = kstrdup(opts->id, GFP_KERNEL); if (opts->id && !midi->id) { status = -ENOMEM; - goto setup_fail; + goto midi_free; } midi->in_ports = opts->in_ports; midi->out_ports = opts->out_ports; @@ -1327,7 +1333,7 @@ status = kfifo_alloc(&midi->in_req_fifo, midi->qlen, GFP_KERNEL); if (status) - goto setup_fail; + goto midi_free; spin_lock_init(&midi->transmit_lock); @@ -1343,9 +1349,13 @@ return &midi->func; +midi_free: + if (midi) + kfree(midi->id); + kfree(midi); setup_fail: mutex_unlock(&opts->lock); - kfree(midi); + return ERR_PTR(status); } --- linux-5.8.0.orig/drivers/usb/gadget/function/f_ncm.c +++ linux-5.8.0/drivers/usb/gadget/function/f_ncm.c @@ -85,8 +85,10 @@ /* peak (theoretical) bulk transfer rate in bits-per-second */ static inline unsigned ncm_bitrate(struct usb_gadget *g) { - if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER) - return 13 * 1024 * 8 * 1000 * 8; + if (gadget_is_superspeed(g) && g->speed >= USB_SPEED_SUPER_PLUS) + return 4250000000U; + else if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER) + return 3750000000U; else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH) return 13 * 512 * 8 * 1000 * 8; else @@ -1181,9 +1183,11 @@ int ndp_index; unsigned dg_len, dg_len2; unsigned ndp_len; + unsigned block_len; struct sk_buff *skb2; int ret = -EINVAL; - unsigned max_size = le32_to_cpu(ntb_parameters.dwNtbOutMaxSize); + unsigned ntb_max = le32_to_cpu(ntb_parameters.dwNtbOutMaxSize); + unsigned frame_max = le16_to_cpu(ecm_desc.wMaxSegmentSize); const struct ndp_parser_opts *opts = ncm->parser_opts; unsigned crc_len = ncm->is_crc ? sizeof(uint32_t) : 0; int dgram_counter; @@ -1205,8 +1209,9 @@ } tmp++; /* skip wSequence */ + block_len = get_ncm(&tmp, opts->block_length); /* (d)wBlockLength */ - if (get_ncm(&tmp, opts->block_length) > max_size) { + if (block_len > ntb_max) { INFO(port->func.config->cdev, "OUT size exceeded\n"); goto err; } @@ -1215,15 +1220,23 @@ /* Run through all the NDP's in the NTB */ do { - /* NCM 3.2 */ - if (((ndp_index % 4) != 0) && - (ndp_index < opts->nth_size)) { + /* + * NCM 3.2 + * dwNdpIndex + */ + if (((ndp_index % 4) != 0) || + (ndp_index < opts->nth_size) || + (ndp_index > (block_len - + opts->ndp_size))) { INFO(port->func.config->cdev, "Bad index: %#X\n", ndp_index); goto err; } - /* walk through NDP */ + /* + * walk through NDP + * dwSignature + */ tmp = (void *)(skb->data + ndp_index); if (get_unaligned_le32(tmp) != ncm->ndp_sign) { INFO(port->func.config->cdev, "Wrong NDP SIGN\n"); @@ -1234,14 +1247,15 @@ ndp_len = get_unaligned_le16(tmp++); /* * NCM 3.3.1 + * wLength * entry is 2 items * item size is 16/32 bits, opts->dgram_item_len * 2 bytes * minimal: struct usb_cdc_ncm_ndpX + normal entry + zero entry * Each entry is a dgram index and a dgram length. */ if ((ndp_len < opts->ndp_size - + 2 * 2 * (opts->dgram_item_len * 2)) - || (ndp_len % opts->ndplen_align != 0)) { + + 2 * 2 * (opts->dgram_item_len * 2)) || + (ndp_len % opts->ndplen_align != 0)) { INFO(port->func.config->cdev, "Bad NDP length: %#X\n", ndp_len); goto err; @@ -1258,8 +1272,21 @@ do { index = index2; + /* wDatagramIndex[0] */ + if ((index < opts->nth_size) || + (index > block_len - opts->dpe_size)) { + INFO(port->func.config->cdev, + "Bad index: %#X\n", index); + goto err; + } + dg_len = dg_len2; - if (dg_len < 14 + crc_len) { /* ethernet hdr + crc */ + /* + * wDatagramLength[0] + * ethernet hdr + crc or larger than max frame size + */ + if ((dg_len < 14 + crc_len) || + (dg_len > frame_max)) { INFO(port->func.config->cdev, "Bad dgram length: %#X\n", dg_len); goto err; @@ -1283,6 +1310,13 @@ index2 = get_ncm(&tmp, opts->dgram_item_len); dg_len2 = get_ncm(&tmp, opts->dgram_item_len); + /* wDatagramIndex[1] */ + if (index2 > block_len - opts->dpe_size) { + INFO(port->func.config->cdev, + "Bad index: %#X\n", index2); + goto err; + } + /* * Copy the data into a new skb. * This ensures the truesize is correct @@ -1299,7 +1333,6 @@ ndp_len -= 2 * (opts->dgram_item_len * 2); dgram_counter++; - if (index2 == 0 || dg_len2 == 0) break; } while (ndp_len > 2 * (opts->dgram_item_len * 2)); @@ -1503,7 +1536,7 @@ fs_ncm_notify_desc.bEndpointAddress; status = usb_assign_descriptors(f, ncm_fs_function, ncm_hs_function, - ncm_ss_function, NULL); + ncm_ss_function, ncm_ss_function); if (status) goto fail; --- linux-5.8.0.orig/drivers/usb/gadget/function/f_printer.c +++ linux-5.8.0/drivers/usb/gadget/function/f_printer.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -64,7 +65,7 @@ struct usb_gadget *gadget; s8 interface; struct usb_ep *in_ep, *out_ep; - + struct kref kref; struct list_head rx_reqs; /* List of free RX structs */ struct list_head rx_reqs_active; /* List of Active RX xfers */ struct list_head rx_buffers; /* List of completed xfers */ @@ -218,6 +219,13 @@ /*-------------------------------------------------------------------------*/ +static void printer_dev_free(struct kref *kref) +{ + struct printer_dev *dev = container_of(kref, struct printer_dev, kref); + + kfree(dev); +} + static struct usb_request * printer_req_alloc(struct usb_ep *ep, unsigned len, gfp_t gfp_flags) { @@ -348,6 +356,7 @@ spin_unlock_irqrestore(&dev->lock, flags); + kref_get(&dev->kref); DBG(dev, "printer_open returned %x\n", ret); return ret; } @@ -365,6 +374,7 @@ dev->printer_status &= ~PRINTER_SELECTED; spin_unlock_irqrestore(&dev->lock, flags); + kref_put(&dev->kref, printer_dev_free); DBG(dev, "printer_close\n"); return 0; @@ -1116,6 +1126,7 @@ printer_req_free(dev->in_ep, req); } + usb_free_all_descriptors(f); return ret; } @@ -1350,7 +1361,8 @@ struct f_printer_opts *opts; opts = container_of(f->fi, struct f_printer_opts, func_inst); - kfree(dev); + + kref_put(&dev->kref, printer_dev_free); mutex_lock(&opts->lock); --opts->refcnt; mutex_unlock(&opts->lock); @@ -1419,6 +1431,7 @@ return ERR_PTR(-ENOMEM); } + kref_init(&dev->kref); ++opts->refcnt; dev->minor = opts->minor; dev->pnp_string = opts->pnp_string; --- linux-5.8.0.orig/drivers/usb/gadget/function/f_rndis.c +++ linux-5.8.0/drivers/usb/gadget/function/f_rndis.c @@ -87,8 +87,10 @@ /* peak (theoretical) bulk transfer rate in bits-per-second */ static unsigned int bitrate(struct usb_gadget *g) { + if (gadget_is_superspeed(g) && g->speed >= USB_SPEED_SUPER_PLUS) + return 4250000000U; if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER) - return 13 * 1024 * 8 * 1000 * 8; + return 3750000000U; else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH) return 13 * 512 * 8 * 1000 * 8; else --- linux-5.8.0.orig/drivers/usb/gadget/function/f_tcm.c +++ linux-5.8.0/drivers/usb/gadget/function/f_tcm.c @@ -753,12 +753,13 @@ goto err_sts; return 0; + err_sts: - usb_ep_free_request(fu->ep_status, stream->req_status); - stream->req_status = NULL; -err_out: usb_ep_free_request(fu->ep_out, stream->req_out); stream->req_out = NULL; +err_out: + usb_ep_free_request(fu->ep_in, stream->req_in); + stream->req_in = NULL; out: return -ENOMEM; } --- linux-5.8.0.orig/drivers/usb/gadget/function/f_uac1.c +++ linux-5.8.0/drivers/usb/gadget/function/f_uac1.c @@ -499,6 +499,7 @@ uac1->as_out_alt = 0; uac1->as_in_alt = 0; + u_audio_stop_playback(&uac1->g_audio); u_audio_stop_capture(&uac1->g_audio); } --- linux-5.8.0.orig/drivers/usb/gadget/function/f_uac2.c +++ linux-5.8.0/drivers/usb/gadget/function/f_uac2.c @@ -215,10 +215,7 @@ .bDescriptorSubtype = UAC_MS_HEADER, .bcdADC = cpu_to_le16(0x200), .bCategory = UAC2_FUNCTION_IO_BOX, - .wTotalLength = cpu_to_le16(sizeof in_clk_src_desc - + sizeof out_clk_src_desc + sizeof usb_out_it_desc - + sizeof io_in_it_desc + sizeof usb_in_ot_desc - + sizeof io_out_ot_desc), + /* .wTotalLength = DYNAMIC */ .bmControls = 0, }; @@ -274,7 +271,7 @@ .bEndpointAddress = USB_DIR_OUT, .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, - .wMaxPacketSize = cpu_to_le16(1023), + /* .wMaxPacketSize = DYNAMIC */ .bInterval = 1, }; @@ -283,7 +280,7 @@ .bDescriptorType = USB_DT_ENDPOINT, .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, - .wMaxPacketSize = cpu_to_le16(1024), + /* .wMaxPacketSize = DYNAMIC */ .bInterval = 4, }; @@ -351,7 +348,7 @@ .bEndpointAddress = USB_DIR_IN, .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, - .wMaxPacketSize = cpu_to_le16(1023), + /* .wMaxPacketSize = DYNAMIC */ .bInterval = 1, }; @@ -360,7 +357,7 @@ .bDescriptorType = USB_DT_ENDPOINT, .bmAttributes = USB_ENDPOINT_XFER_ISOC | USB_ENDPOINT_SYNC_ASYNC, - .wMaxPacketSize = cpu_to_le16(1024), + /* .wMaxPacketSize = DYNAMIC */ .bInterval = 4, }; @@ -447,12 +444,28 @@ __le32 dRES; } __packed; -static void set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, +static int set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, struct usb_endpoint_descriptor *ep_desc, - unsigned int factor, bool is_playback) + enum usb_device_speed speed, bool is_playback) { int chmask, srate, ssize; - u16 max_packet_size; + u16 max_size_bw, max_size_ep; + unsigned int factor; + + switch (speed) { + case USB_SPEED_FULL: + max_size_ep = 1023; + factor = 1000; + break; + + case USB_SPEED_HIGH: + max_size_ep = 1024; + factor = 8000; + break; + + default: + return -EINVAL; + } if (is_playback) { chmask = uac2_opts->p_chmask; @@ -464,10 +477,12 @@ ssize = uac2_opts->c_ssize; } - max_packet_size = num_channels(chmask) * ssize * - DIV_ROUND_UP(srate, factor / (1 << (ep_desc->bInterval - 1))); - ep_desc->wMaxPacketSize = cpu_to_le16(min_t(u16, max_packet_size, - le16_to_cpu(ep_desc->wMaxPacketSize))); + max_size_bw = num_channels(chmask) * ssize * + ((srate / (factor / (1 << (ep_desc->bInterval - 1)))) + 1); + ep_desc->wMaxPacketSize = cpu_to_le16(min_t(u16, max_size_bw, + max_size_ep)); + + return 0; } /* Use macro to overcome line length limitation */ @@ -501,7 +516,7 @@ as_in_hdr_desc.bTerminalLink = usb_in_ot_desc.bTerminalID; iad_desc.bInterfaceCount = 1; - ac_hdr_desc.wTotalLength = 0; + ac_hdr_desc.wTotalLength = cpu_to_le16(sizeof(ac_hdr_desc)); if (EPIN_EN(opts)) { u16 len = le16_to_cpu(ac_hdr_desc.wTotalLength); @@ -673,10 +688,33 @@ } /* Calculate wMaxPacketSize according to audio bandwidth */ - set_ep_max_packet_size(uac2_opts, &fs_epin_desc, 1000, true); - set_ep_max_packet_size(uac2_opts, &fs_epout_desc, 1000, false); - set_ep_max_packet_size(uac2_opts, &hs_epin_desc, 8000, true); - set_ep_max_packet_size(uac2_opts, &hs_epout_desc, 8000, false); + ret = set_ep_max_packet_size(uac2_opts, &fs_epin_desc, USB_SPEED_FULL, + true); + if (ret < 0) { + dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + return ret; + } + + ret = set_ep_max_packet_size(uac2_opts, &fs_epout_desc, USB_SPEED_FULL, + false); + if (ret < 0) { + dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + return ret; + } + + ret = set_ep_max_packet_size(uac2_opts, &hs_epin_desc, USB_SPEED_HIGH, + true); + if (ret < 0) { + dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + return ret; + } + + ret = set_ep_max_packet_size(uac2_opts, &hs_epout_desc, USB_SPEED_HIGH, + false); + if (ret < 0) { + dev_err(dev, "%s:%d Error!\n", __func__, __LINE__); + return ret; + } if (EPOUT_EN(uac2_opts)) { agdev->out_ep = usb_ep_autoconfig(gadget, &fs_epout_desc); --- linux-5.8.0.orig/drivers/usb/gadget/function/u_audio.c +++ linux-5.8.0/drivers/usb/gadget/function/u_audio.c @@ -89,7 +89,12 @@ struct snd_uac_chip *uac = prm->uac; /* i/f shutting down */ - if (!prm->ep_enabled || req->status == -ESHUTDOWN) + if (!prm->ep_enabled) { + usb_ep_free_request(ep, req); + return; + } + + if (req->status == -ESHUTDOWN) return; /* @@ -336,8 +341,14 @@ for (i = 0; i < params->req_number; i++) { if (prm->ureq[i].req) { - usb_ep_dequeue(ep, prm->ureq[i].req); - usb_ep_free_request(ep, prm->ureq[i].req); + if (usb_ep_dequeue(ep, prm->ureq[i].req)) + usb_ep_free_request(ep, prm->ureq[i].req); + /* + * If usb_ep_dequeue() cannot successfully dequeue the + * request, the request will be freed by the completion + * callback. + */ + prm->ureq[i].req = NULL; } } --- linux-5.8.0.orig/drivers/usb/gadget/function/u_ether.c +++ linux-5.8.0/drivers/usb/gadget/function/u_ether.c @@ -45,9 +45,10 @@ #define UETH__VERSION "29-May-2008" /* Experiments show that both Linux and Windows hosts allow up to 16k - * frame sizes. Set the max size to 15k+52 to prevent allocating 32k + * frame sizes. Set the max MTU size to 15k+52 to prevent allocating 32k * blocks and still have efficient handling. */ -#define GETHER_MAX_ETH_FRAME_LEN 15412 +#define GETHER_MAX_MTU_SIZE 15412 +#define GETHER_MAX_ETH_FRAME_LEN (GETHER_MAX_MTU_SIZE + ETH_HLEN) struct eth_dev { /* lock is held while accessing port_usb @@ -93,7 +94,7 @@ static inline int qlen(struct usb_gadget *gadget, unsigned qmult) { if (gadget_is_dualspeed(gadget) && (gadget->speed == USB_SPEED_HIGH || - gadget->speed == USB_SPEED_SUPER)) + gadget->speed >= USB_SPEED_SUPER)) return qmult * DEFAULT_QLEN; else return DEFAULT_QLEN; @@ -786,7 +787,7 @@ /* MTU range: 14 - 15412 */ net->min_mtu = ETH_HLEN; - net->max_mtu = GETHER_MAX_ETH_FRAME_LEN; + net->max_mtu = GETHER_MAX_MTU_SIZE; dev->gadget = g; SET_NETDEV_DEV(net, &g->dev); @@ -848,7 +849,7 @@ /* MTU range: 14 - 15412 */ net->min_mtu = ETH_HLEN; - net->max_mtu = GETHER_MAX_ETH_FRAME_LEN; + net->max_mtu = GETHER_MAX_MTU_SIZE; return net; } --- linux-5.8.0.orig/drivers/usb/gadget/function/u_ether_configfs.h +++ linux-5.8.0/drivers/usb/gadget/function/u_ether_configfs.h @@ -169,12 +169,11 @@ size_t len) \ { \ struct f_##_f_##_opts *opts = to_f_##_f_##_opts(item); \ - int ret; \ + int ret = -EINVAL; \ u8 val; \ \ mutex_lock(&opts->lock); \ - ret = sscanf(page, "%02hhx", &val); \ - if (ret > 0) { \ + if (sscanf(page, "%02hhx", &val) > 0) { \ opts->_n_ = val; \ ret = len; \ } \ --- linux-5.8.0.orig/drivers/usb/gadget/function/u_serial.c +++ linux-5.8.0/drivers/usb/gadget/function/u_serial.c @@ -1391,6 +1391,7 @@ if (port->port.tty) tty_hangup(port->port.tty); } + port->suspended = false; spin_unlock_irqrestore(&port->port_lock, flags); /* disable endpoints, aborting down any active I/O */ --- linux-5.8.0.orig/drivers/usb/gadget/legacy/acm_ms.c +++ linux-5.8.0/drivers/usb/gadget/legacy/acm_ms.c @@ -200,8 +200,10 @@ struct usb_descriptor_header *usb_desc; usb_desc = usb_otg_descriptor_alloc(gadget); - if (!usb_desc) + if (!usb_desc) { + status = -ENOMEM; goto fail_string_ids; + } usb_otg_descriptor_init(gadget, usb_desc); otg_desc[0] = usb_desc; otg_desc[1] = NULL; --- linux-5.8.0.orig/drivers/usb/gadget/legacy/ether.c +++ linux-5.8.0/drivers/usb/gadget/legacy/ether.c @@ -403,8 +403,10 @@ struct usb_descriptor_header *usb_desc; usb_desc = usb_otg_descriptor_alloc(gadget); - if (!usb_desc) + if (!usb_desc) { + status = -ENOMEM; goto fail1; + } usb_otg_descriptor_init(gadget, usb_desc); otg_desc[0] = usb_desc; otg_desc[1] = NULL; --- linux-5.8.0.orig/drivers/usb/gadget/legacy/inode.c +++ linux-5.8.0/drivers/usb/gadget/legacy/inode.c @@ -2040,6 +2040,9 @@ return 0; Enomem: + kfree(CHIP); + CHIP = NULL; + return -ENOMEM; } --- linux-5.8.0.orig/drivers/usb/gadget/legacy/raw_gadget.c +++ linux-5.8.0/drivers/usb/gadget/legacy/raw_gadget.c @@ -564,9 +564,12 @@ return -ENODEV; } length = min(arg.length, event->length); - if (copy_to_user((void __user *)value, event, sizeof(*event) + length)) + if (copy_to_user((void __user *)value, event, sizeof(*event) + length)) { + kfree(event); return -EFAULT; + } + kfree(event); return 0; } --- linux-5.8.0.orig/drivers/usb/gadget/u_f.h +++ linux-5.8.0/drivers/usb/gadget/u_f.h @@ -14,6 +14,7 @@ #define __U_F_H__ #include +#include /* Variable Length Array Macros **********************************************/ #define vla_group(groupname) size_t groupname##__next = 0 @@ -21,21 +22,36 @@ #define vla_item(groupname, type, name, n) \ size_t groupname##_##name##__offset = ({ \ - size_t align_mask = __alignof__(type) - 1; \ - size_t offset = (groupname##__next + align_mask) & ~align_mask;\ - size_t size = (n) * sizeof(type); \ - groupname##__next = offset + size; \ + size_t offset = 0; \ + if (groupname##__next != SIZE_MAX) { \ + size_t align_mask = __alignof__(type) - 1; \ + size_t size = array_size(n, sizeof(type)); \ + offset = (groupname##__next + align_mask) & \ + ~align_mask; \ + if (check_add_overflow(offset, size, \ + &groupname##__next)) { \ + groupname##__next = SIZE_MAX; \ + offset = 0; \ + } \ + } \ offset; \ }) #define vla_item_with_sz(groupname, type, name, n) \ - size_t groupname##_##name##__sz = (n) * sizeof(type); \ - size_t groupname##_##name##__offset = ({ \ - size_t align_mask = __alignof__(type) - 1; \ - size_t offset = (groupname##__next + align_mask) & ~align_mask;\ - size_t size = groupname##_##name##__sz; \ - groupname##__next = offset + size; \ - offset; \ + size_t groupname##_##name##__sz = array_size(n, sizeof(type)); \ + size_t groupname##_##name##__offset = ({ \ + size_t offset = 0; \ + if (groupname##__next != SIZE_MAX) { \ + size_t align_mask = __alignof__(type) - 1; \ + offset = (groupname##__next + align_mask) & \ + ~align_mask; \ + if (check_add_overflow(offset, groupname##_##name##__sz,\ + &groupname##__next)) { \ + groupname##__next = SIZE_MAX; \ + offset = 0; \ + } \ + } \ + offset; \ }) #define vla_ptr(ptr, groupname, name) \ --- linux-5.8.0.orig/drivers/usb/gadget/udc/amd5536udc_pci.c +++ linux-5.8.0/drivers/usb/gadget/udc/amd5536udc_pci.c @@ -154,6 +154,11 @@ pci_set_master(pdev); pci_try_set_mwi(pdev); + dev->phys_addr = resource; + dev->irq = pdev->irq; + dev->pdev = pdev; + dev->dev = &pdev->dev; + /* init dma pools */ if (use_dma) { retval = init_dma_pools(dev); @@ -161,11 +166,6 @@ goto err_dma; } - dev->phys_addr = resource; - dev->irq = pdev->irq; - dev->pdev = pdev; - dev->dev = &pdev->dev; - /* general probing */ if (udc_probe(dev)) { retval = -ENODEV; --- linux-5.8.0.orig/drivers/usb/gadget/udc/aspeed-vhub/epn.c +++ linux-5.8.0/drivers/usb/gadget/udc/aspeed-vhub/epn.c @@ -420,7 +420,10 @@ u32 state, reg, loops; /* Stop DMA activity */ - writel(0, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT); + if (ep->epn.desc_mode) + writel(VHUB_EP_DMA_CTRL_RESET, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT); + else + writel(0, ep->epn.regs + AST_VHUB_EP_DMA_CTLSTAT); /* Wait for it to complete */ for (loops = 0; loops < 1000; loops++) { --- linux-5.8.0.orig/drivers/usb/gadget/udc/aspeed-vhub/hub.c +++ linux-5.8.0/drivers/usb/gadget/udc/aspeed-vhub/hub.c @@ -999,8 +999,10 @@ str_array[offset].s = NULL; ret = ast_vhub_str_alloc_add(vhub, &lang_str); - if (ret) + if (ret) { + of_node_put(child); break; + } } return ret; --- linux-5.8.0.orig/drivers/usb/gadget/udc/bcm63xx_udc.c +++ linux-5.8.0/drivers/usb/gadget/udc/bcm63xx_udc.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include --- linux-5.8.0.orig/drivers/usb/gadget/udc/bdc/Kconfig +++ linux-5.8.0/drivers/usb/gadget/udc/bdc/Kconfig @@ -17,7 +17,7 @@ comment "Platform Support" config USB_BDC_PCI tristate "BDC support for PCIe based platforms" - depends on USB_PCI + depends on USB_PCI && BROKEN default USB_BDC_UDC help Enable support for platforms which have BDC connected through PCIe, such as Lego3 FPGA platform. --- linux-5.8.0.orig/drivers/usb/gadget/udc/bdc/bdc_core.c +++ linux-5.8.0/drivers/usb/gadget/udc/bdc/bdc_core.c @@ -282,6 +282,7 @@ * in that case reinit is passed as 1 */ if (reinit) { + int i; /* Enable interrupts */ temp = bdc_readl(bdc->regs, BDC_BDCSC); temp |= BDC_GIE; @@ -291,6 +292,9 @@ /* Initialize SRR to 0 */ memset(bdc->srr.sr_bds, 0, NUM_SR_ENTRIES * sizeof(struct bdc_bd)); + /* clear ep flags to avoid post disconnect stops/deconfigs */ + for (i = 1; i < bdc->num_eps; ++i) + bdc->bdc_ep_array[i]->flags = 0; } else { /* One time initiaization only */ /* Enable status report function pointers */ @@ -599,9 +603,14 @@ static int bdc_suspend(struct device *dev) { struct bdc *bdc = dev_get_drvdata(dev); + int ret; - clk_disable_unprepare(bdc->clk); - return 0; + /* Halt the controller */ + ret = bdc_stop(bdc); + if (!ret) + clk_disable_unprepare(bdc->clk); + + return ret; } static int bdc_resume(struct device *dev) --- linux-5.8.0.orig/drivers/usb/gadget/udc/bdc/bdc_ep.c +++ linux-5.8.0/drivers/usb/gadget/udc/bdc/bdc_ep.c @@ -615,7 +615,6 @@ } bdc_dbg_bd_list(bdc, ep); /* only for ep0: config ep is called for ep0 from connect event */ - ep->flags |= BDC_EP_ENABLED; if (ep->ep_num == 1) return ret; @@ -759,10 +758,13 @@ __func__, ep->name, start_bdi, end_bdi); dev_dbg(bdc->dev, "ep_dequeue ep=%p ep->desc=%p\n", ep, (void *)ep->usb_ep.desc); - /* Stop the ep to see where the HW is ? */ - ret = bdc_stop_ep(bdc, ep->ep_num); - /* if there is an issue with stopping ep, then no need to go further */ - if (ret) + /* if still connected, stop the ep to see where the HW is ? */ + if (!(bdc_readl(bdc->regs, BDC_USPC) & BDC_PST_MASK)) { + ret = bdc_stop_ep(bdc, ep->ep_num); + /* if there is an issue, then no need to go further */ + if (ret) + return 0; + } else return 0; /* @@ -1911,7 +1913,9 @@ __func__, ep->name, ep->flags); if (!(ep->flags & BDC_EP_ENABLED)) { - dev_warn(bdc->dev, "%s is already disabled\n", ep->name); + if (bdc->gadget.speed != USB_SPEED_UNKNOWN) + dev_warn(bdc->dev, "%s is already disabled\n", + ep->name); return 0; } spin_lock_irqsave(&bdc->lock, flags); --- linux-5.8.0.orig/drivers/usb/gadget/udc/core.c +++ linux-5.8.0/drivers/usb/gadget/udc/core.c @@ -1479,10 +1479,13 @@ struct device_attribute *attr, const char *buf, size_t n) { struct usb_udc *udc = container_of(dev, struct usb_udc, dev); + ssize_t ret; + mutex_lock(&udc_lock); if (!udc->driver) { dev_err(dev, "soft-connect without a gadget driver\n"); - return -EOPNOTSUPP; + ret = -EOPNOTSUPP; + goto out; } if (sysfs_streq(buf, "connect")) { @@ -1493,10 +1496,14 @@ usb_gadget_udc_stop(udc); } else { dev_err(dev, "unsupported command '%s'\n", buf); - return -EINVAL; + ret = -EINVAL; + goto out; } - return n; + ret = n; +out: + mutex_unlock(&udc_lock); + return ret; } static DEVICE_ATTR_WO(soft_connect); --- linux-5.8.0.orig/drivers/usb/gadget/udc/dummy_hcd.c +++ linux-5.8.0/drivers/usb/gadget/udc/dummy_hcd.c @@ -2114,9 +2114,21 @@ dum_hcd->port_status &= ~USB_PORT_STAT_POWER; set_link_state(dum_hcd); break; - default: + case USB_PORT_FEAT_ENABLE: + case USB_PORT_FEAT_C_ENABLE: + case USB_PORT_FEAT_C_SUSPEND: + /* Not allowed for USB-3 */ + if (hcd->speed == HCD_USB3) + goto error; + fallthrough; + case USB_PORT_FEAT_C_CONNECTION: + case USB_PORT_FEAT_C_RESET: dum_hcd->port_status &= ~(1 << wValue); set_link_state(dum_hcd); + break; + default: + /* Disallow INDICATOR and C_OVER_CURRENT */ + goto error; } break; case GetHubDescriptor: @@ -2254,17 +2266,20 @@ } /* FALLS THROUGH */ case USB_PORT_FEAT_RESET: + if (!(dum_hcd->port_status & USB_PORT_STAT_CONNECTION)) + break; /* if it's already enabled, disable */ if (hcd->speed == HCD_USB3) { - dum_hcd->port_status = 0; dum_hcd->port_status = (USB_SS_PORT_STAT_POWER | USB_PORT_STAT_CONNECTION | USB_PORT_STAT_RESET); - } else + } else { dum_hcd->port_status &= ~(USB_PORT_STAT_ENABLE | USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED); + dum_hcd->port_status |= USB_PORT_STAT_RESET; + } /* * We want to reset device status. All but the * Self powered feature @@ -2276,19 +2291,19 @@ * interval? Is it still 50msec as for HS? */ dum_hcd->re_timeout = jiffies + msecs_to_jiffies(50); - /* FALLS THROUGH */ - default: - if (hcd->speed == HCD_USB3) { - if ((dum_hcd->port_status & - USB_SS_PORT_STAT_POWER) != 0) { - dum_hcd->port_status |= (1 << wValue); - } - } else - if ((dum_hcd->port_status & - USB_PORT_STAT_POWER) != 0) { - dum_hcd->port_status |= (1 << wValue); - } set_link_state(dum_hcd); + break; + case USB_PORT_FEAT_C_CONNECTION: + case USB_PORT_FEAT_C_RESET: + case USB_PORT_FEAT_C_ENABLE: + case USB_PORT_FEAT_C_SUSPEND: + /* Not allowed for USB-3, and ignored for USB-2 */ + if (hcd->speed == HCD_USB3) + goto error; + break; + default: + /* Disallow TEST, INDICATOR, and C_OVER_CURRENT */ + goto error; } break; case GetPortErrorCount: @@ -2734,7 +2749,7 @@ { int retval = -ENOMEM; int i; - struct dummy *dum[MAX_NUM_UDC]; + struct dummy *dum[MAX_NUM_UDC] = {}; if (usb_disabled()) return -ENODEV; --- linux-5.8.0.orig/drivers/usb/gadget/udc/fsl_udc_core.c +++ linux-5.8.0/drivers/usb/gadget/udc/fsl_udc_core.c @@ -1051,7 +1051,7 @@ u32 bitmask; struct ep_queue_head *qh; - if (!_ep || _ep->desc || !(_ep->desc->bEndpointAddress&0xF)) + if (!_ep || !_ep->desc || !(_ep->desc->bEndpointAddress&0xF)) return -ENODEV; ep = container_of(_ep, struct fsl_ep, ep); --- linux-5.8.0.orig/drivers/usb/gadget/udc/goku_udc.c +++ linux-5.8.0/drivers/usb/gadget/udc/goku_udc.c @@ -1757,6 +1757,7 @@ goto err; } + pci_set_drvdata(pdev, dev); spin_lock_init(&dev->lock); dev->pdev = pdev; dev->gadget.ops = &goku_ops; @@ -1790,7 +1791,6 @@ } dev->regs = (struct goku_udc_regs __iomem *) base; - pci_set_drvdata(pdev, dev); INFO(dev, "%s\n", driver_desc); INFO(dev, "version: " DRIVER_VERSION " %s\n", dmastr()); INFO(dev, "irq %d, pci mem %p\n", pdev->irq, base); --- linux-5.8.0.orig/drivers/usb/gadget/udc/net2280.c +++ linux-5.8.0/drivers/usb/gadget/udc/net2280.c @@ -3781,8 +3781,10 @@ return 0; done: - if (dev) + if (dev) { net2280_remove(pdev); + kfree(dev); + } return retval; } --- linux-5.8.0.orig/drivers/usb/gadget/usbstring.c +++ linux-5.8.0/drivers/usb/gadget/usbstring.c @@ -55,9 +55,9 @@ return -EINVAL; /* string descriptors have length, tag, then UTF16-LE text */ - len = min ((size_t) 126, strlen (s->s)); + len = min((size_t)USB_MAX_STRING_LEN, strlen(s->s)); len = utf8s_to_utf16s(s->s, len, UTF16_LITTLE_ENDIAN, - (wchar_t *) &buf[2], 126); + (wchar_t *) &buf[2], USB_MAX_STRING_LEN); if (len < 0) return -EINVAL; buf [0] = (len + 1) * 2; --- linux-5.8.0.orig/drivers/usb/host/ehci-hcd.c +++ linux-5.8.0/drivers/usb/host/ehci-hcd.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -573,6 +574,7 @@ struct ehci_hcd *ehci = hcd_to_ehci (hcd); u32 temp; u32 hcc_params; + int rc; hcd->uses_new_polling = 1; @@ -628,9 +630,20 @@ down_write(&ehci_cf_port_reset_rwsem); ehci->rh_state = EHCI_RH_RUNNING; ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag); + + /* Wait until HC become operational */ ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ msleep(5); + rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000); + up_write(&ehci_cf_port_reset_rwsem); + + if (rc) { + ehci_err(ehci, "USB %x.%x, controller refused to start: %d\n", + ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), rc); + return rc; + } + ehci->last_periodic_enable = ktime_get_real(); temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); --- linux-5.8.0.orig/drivers/usb/host/ehci-hub.c +++ linux-5.8.0/drivers/usb/host/ehci-hub.c @@ -14,7 +14,6 @@ */ /*-------------------------------------------------------------------------*/ -#include #define PORT_WAKE_BITS (PORT_WKOC_E|PORT_WKDISC_E|PORT_WKCONN_E) @@ -346,6 +345,9 @@ unlink_empty_async_suspended(ehci); + /* Some Synopsys controllers mistakenly leave IAA turned on */ + ehci_writel(ehci, STS_IAA, &ehci->regs->status); + /* Any IAA cycle that started before the suspend is now invalid */ end_iaa_cycle(ehci); ehci_handle_start_intr_unlinks(ehci); --- linux-5.8.0.orig/drivers/usb/host/ehci-omap.c +++ linux-5.8.0/drivers/usb/host/ehci-omap.c @@ -220,6 +220,7 @@ err_pm_runtime: pm_runtime_put_sync(dev); + pm_runtime_disable(dev); err_phy: for (i = 0; i < omap->nports; i++) { --- linux-5.8.0.orig/drivers/usb/host/ehci-tegra.c +++ linux-5.8.0/drivers/usb/host/ehci-tegra.c @@ -479,8 +479,8 @@ u_phy->otg->host = hcd_to_bus(hcd); irq = platform_get_irq(pdev, 0); - if (!irq) { - err = -ENODEV; + if (irq < 0) { + err = irq; goto cleanup_phy; } --- linux-5.8.0.orig/drivers/usb/host/fsl-mph-dr-of.c +++ linux-5.8.0/drivers/usb/host/fsl-mph-dr-of.c @@ -94,10 +94,13 @@ pdev->dev.coherent_dma_mask = ofdev->dev.coherent_dma_mask; - if (!pdev->dev.dma_mask) + if (!pdev->dev.dma_mask) { pdev->dev.dma_mask = &ofdev->dev.coherent_dma_mask; - else - dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + } else { + retval = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + if (retval) + goto error; + } retval = platform_device_add_data(pdev, pdata, sizeof(*pdata)); if (retval) --- linux-5.8.0.orig/drivers/usb/host/max3421-hcd.c +++ linux-5.8.0/drivers/usb/host/max3421-hcd.c @@ -1847,7 +1847,7 @@ struct max3421_hcd *max3421_hcd; struct usb_hcd *hcd = NULL; struct max3421_hcd_platform_data *pdata = NULL; - int retval = -ENOMEM; + int retval; if (spi_setup(spi) < 0) { dev_err(&spi->dev, "Unable to setup SPI bus"); @@ -1889,6 +1889,7 @@ goto error; } + retval = -ENOMEM; hcd = usb_create_hcd(&max3421_hcd_desc, &spi->dev, dev_name(&spi->dev)); if (!hcd) { --- linux-5.8.0.orig/drivers/usb/host/ohci-exynos.c +++ linux-5.8.0/drivers/usb/host/ohci-exynos.c @@ -171,9 +171,8 @@ hcd->rsrc_len = resource_size(res); irq = platform_get_irq(pdev, 0); - if (!irq) { - dev_err(&pdev->dev, "Failed to get IRQ\n"); - err = -ENODEV; + if (irq < 0) { + err = irq; goto fail_io; } --- linux-5.8.0.orig/drivers/usb/host/ohci-hcd.c +++ linux-5.8.0/drivers/usb/host/ohci-hcd.c @@ -102,7 +102,7 @@ /* Some boards misreport power switching/overcurrent */ -static bool distrust_firmware = true; +static bool distrust_firmware; module_param (distrust_firmware, bool, 0); MODULE_PARM_DESC (distrust_firmware, "true to distrust firmware power/overcurrent setup"); @@ -673,20 +673,24 @@ /* handle root hub init quirks ... */ val = roothub_a (ohci); - val &= ~(RH_A_PSM | RH_A_OCPM); + /* Configure for per-port over-current protection by default */ + val &= ~RH_A_NOCP; + val |= RH_A_OCPM; if (ohci->flags & OHCI_QUIRK_SUPERIO) { - /* NSC 87560 and maybe others */ + /* NSC 87560 and maybe others. + * Ganged power switching, no over-current protection. + */ val |= RH_A_NOCP; - val &= ~(RH_A_POTPGT | RH_A_NPS); - ohci_writel (ohci, val, &ohci->regs->roothub.a); + val &= ~(RH_A_POTPGT | RH_A_NPS | RH_A_PSM | RH_A_OCPM); } else if ((ohci->flags & OHCI_QUIRK_AMD756) || (ohci->flags & OHCI_QUIRK_HUB_POWER)) { /* hub power always on; required for AMD-756 and some - * Mac platforms. ganged overcurrent reporting, if any. + * Mac platforms. */ val |= RH_A_NPS; - ohci_writel (ohci, val, &ohci->regs->roothub.a); } + ohci_writel(ohci, val, &ohci->regs->roothub.a); + ohci_writel (ohci, RH_HS_LPSC, &ohci->regs->roothub.status); ohci_writel (ohci, (val & RH_A_NPS) ? 0 : RH_B_PPCM, &ohci->regs->roothub.b); --- linux-5.8.0.orig/drivers/usb/host/oxu210hp-hcd.c +++ linux-5.8.0/drivers/usb/host/oxu210hp-hcd.c @@ -4153,8 +4153,10 @@ oxu->is_otg = otg; ret = usb_add_hcd(hcd, irq, IRQF_SHARED); - if (ret < 0) + if (ret < 0) { + usb_put_hcd(hcd); return ERR_PTR(ret); + } device_wakeup_enable(hcd->self.controller); return hcd; --- linux-5.8.0.orig/drivers/usb/host/xhci-debugfs.c +++ linux-5.8.0/drivers/usb/host/xhci-debugfs.c @@ -273,7 +273,7 @@ static int xhci_endpoint_context_show(struct seq_file *s, void *unused) { - int dci; + int ep_index; dma_addr_t dma; struct xhci_hcd *xhci; struct xhci_ep_ctx *ep_ctx; @@ -282,9 +282,9 @@ xhci = hcd_to_xhci(bus_to_hcd(dev->udev->bus)); - for (dci = 1; dci < 32; dci++) { - ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, dci); - dma = dev->out_ctx->dma + dci * CTX_SIZE(xhci->hcc_params); + for (ep_index = 0; ep_index < 31; ep_index++) { + ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); + dma = dev->out_ctx->dma + (ep_index + 1) * CTX_SIZE(xhci->hcc_params); seq_printf(s, "%pad: %s\n", &dma, xhci_decode_ep_context(le32_to_cpu(ep_ctx->ep_info), le32_to_cpu(ep_ctx->ep_info2), --- linux-5.8.0.orig/drivers/usb/host/xhci-histb.c +++ linux-5.8.0/drivers/usb/host/xhci-histb.c @@ -240,7 +240,7 @@ /* Initialize dma_mask and coherent_dma_mask to 32-bits */ ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32)); if (ret) - return ret; + goto disable_pm; hcd = usb_create_hcd(driver, dev, dev_name(dev)); if (!hcd) { --- linux-5.8.0.orig/drivers/usb/host/xhci-hub.c +++ linux-5.8.0/drivers/usb/host/xhci-hub.c @@ -740,15 +740,6 @@ { u32 pls = status_reg & PORT_PLS_MASK; - /* resume state is a xHCI internal state. - * Do not report it to usb core, instead, pretend to be U3, - * thus usb core knows it's not ready for transfer - */ - if (pls == XDEV_RESUME) { - *status |= USB_SS_PORT_LS_U3; - return; - } - /* When the CAS bit is set then warm reset * should be performed on port */ @@ -771,6 +762,16 @@ pls |= USB_PORT_STAT_CONNECTION; } else { /* + * Resume state is an xHCI internal state. Do not report it to + * usb core, instead, pretend to be U3, thus usb core knows + * it's not ready for transfer. + */ + if (pls == XDEV_RESUME) { + *status |= USB_SS_PORT_LS_U3; + return; + } + + /* * If CAS bit isn't set but the Port is already at * Compliance Mode, fake a connection so the USB core * notices the Compliance state and resets the port. @@ -1706,6 +1707,10 @@ hcd->state = HC_STATE_SUSPENDED; bus_state->next_statechange = jiffies + msecs_to_jiffies(10); spin_unlock_irqrestore(&xhci->lock, flags); + + if (bus_state->bus_suspended) + usleep_range(5000, 10000); + return 0; } --- linux-5.8.0.orig/drivers/usb/host/xhci-mtk-sch.c +++ linux-5.8.0/drivers/usb/host/xhci-mtk-sch.c @@ -200,6 +200,8 @@ sch_ep->sch_tt = tt; sch_ep->ep = ep; + INIT_LIST_HEAD(&sch_ep->endpoint); + INIT_LIST_HEAD(&sch_ep->tt_endpoint); return sch_ep; } @@ -373,6 +375,7 @@ sch_ep->bw_budget_table[j]; } } + sch_ep->allocated = used; } static int check_sch_tt(struct usb_device *udev, @@ -541,6 +544,22 @@ return 0; } +static void destroy_sch_ep(struct usb_device *udev, + struct mu3h_sch_bw_info *sch_bw, struct mu3h_sch_ep_info *sch_ep) +{ + /* only release ep bw check passed by check_sch_bw() */ + if (sch_ep->allocated) + update_bus_bw(sch_bw, sch_ep, 0); + + list_del(&sch_ep->endpoint); + + if (sch_ep->sch_tt) { + list_del(&sch_ep->tt_endpoint); + drop_tt(udev); + } + kfree(sch_ep); +} + static bool need_bw_sch(struct usb_host_endpoint *ep, enum usb_device_speed speed, int has_tt) { @@ -583,6 +602,8 @@ mtk->sch_array = sch_array; + INIT_LIST_HEAD(&mtk->bw_ep_chk_list); + return 0; } EXPORT_SYMBOL_GPL(xhci_mtk_sch_init); @@ -601,19 +622,14 @@ struct xhci_ep_ctx *ep_ctx; struct xhci_slot_ctx *slot_ctx; struct xhci_virt_device *virt_dev; - struct mu3h_sch_bw_info *sch_bw; struct mu3h_sch_ep_info *sch_ep; - struct mu3h_sch_bw_info *sch_array; unsigned int ep_index; - int bw_index; - int ret = 0; xhci = hcd_to_xhci(hcd); virt_dev = xhci->devs[udev->slot_id]; ep_index = xhci_get_endpoint_index(&ep->desc); slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx); ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); - sch_array = mtk->sch_array; xhci_dbg(xhci, "%s() type:%d, speed:%d, mpkt:%d, dir:%d, ep:%p\n", __func__, usb_endpoint_type(&ep->desc), udev->speed, @@ -632,35 +648,13 @@ return 0; } - bw_index = get_bw_index(xhci, udev, ep); - sch_bw = &sch_array[bw_index]; - sch_ep = create_sch_ep(udev, ep, ep_ctx); if (IS_ERR_OR_NULL(sch_ep)) return -ENOMEM; setup_sch_info(udev, ep_ctx, sch_ep); - ret = check_sch_bw(udev, sch_bw, sch_ep); - if (ret) { - xhci_err(xhci, "Not enough bandwidth!\n"); - if (is_fs_or_ls(udev->speed)) - drop_tt(udev); - - kfree(sch_ep); - return -ENOSPC; - } - - list_add_tail(&sch_ep->endpoint, &sch_bw->bw_ep_list); - - ep_ctx->reserved[0] |= cpu_to_le32(EP_BPKTS(sch_ep->pkts) - | EP_BCSCOUNT(sch_ep->cs_count) | EP_BBM(sch_ep->burst_mode)); - ep_ctx->reserved[1] |= cpu_to_le32(EP_BOFFSET(sch_ep->offset) - | EP_BREPEAT(sch_ep->repeat)); - - xhci_dbg(xhci, " PKTS:%x, CSCOUNT:%x, BM:%x, OFFSET:%x, REPEAT:%x\n", - sch_ep->pkts, sch_ep->cs_count, sch_ep->burst_mode, - sch_ep->offset, sch_ep->repeat); + list_add_tail(&sch_ep->endpoint, &mtk->bw_ep_chk_list); return 0; } @@ -675,7 +669,7 @@ struct xhci_virt_device *virt_dev; struct mu3h_sch_bw_info *sch_array; struct mu3h_sch_bw_info *sch_bw; - struct mu3h_sch_ep_info *sch_ep; + struct mu3h_sch_ep_info *sch_ep, *tmp; int bw_index; xhci = hcd_to_xhci(hcd); @@ -694,17 +688,79 @@ bw_index = get_bw_index(xhci, udev, ep); sch_bw = &sch_array[bw_index]; - list_for_each_entry(sch_ep, &sch_bw->bw_ep_list, endpoint) { + list_for_each_entry_safe(sch_ep, tmp, &sch_bw->bw_ep_list, endpoint) { if (sch_ep->ep == ep) { - update_bus_bw(sch_bw, sch_ep, 0); - list_del(&sch_ep->endpoint); - if (is_fs_or_ls(udev->speed)) { - list_del(&sch_ep->tt_endpoint); - drop_tt(udev); - } - kfree(sch_ep); + destroy_sch_ep(udev, sch_bw, sch_ep); break; } } } EXPORT_SYMBOL_GPL(xhci_mtk_drop_ep_quirk); + +int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) +{ + struct xhci_hcd_mtk *mtk = hcd_to_mtk(hcd); + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct xhci_virt_device *virt_dev = xhci->devs[udev->slot_id]; + struct mu3h_sch_bw_info *sch_bw; + struct mu3h_sch_ep_info *sch_ep, *tmp; + int bw_index, ret; + + xhci_dbg(xhci, "%s() udev %s\n", __func__, dev_name(&udev->dev)); + + list_for_each_entry(sch_ep, &mtk->bw_ep_chk_list, endpoint) { + bw_index = get_bw_index(xhci, udev, sch_ep->ep); + sch_bw = &mtk->sch_array[bw_index]; + + ret = check_sch_bw(udev, sch_bw, sch_ep); + if (ret) { + xhci_err(xhci, "Not enough bandwidth!\n"); + return -ENOSPC; + } + } + + list_for_each_entry_safe(sch_ep, tmp, &mtk->bw_ep_chk_list, endpoint) { + struct xhci_ep_ctx *ep_ctx; + struct usb_host_endpoint *ep = sch_ep->ep; + unsigned int ep_index = xhci_get_endpoint_index(&ep->desc); + + bw_index = get_bw_index(xhci, udev, ep); + sch_bw = &mtk->sch_array[bw_index]; + + list_move_tail(&sch_ep->endpoint, &sch_bw->bw_ep_list); + + ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); + ep_ctx->reserved[0] |= cpu_to_le32(EP_BPKTS(sch_ep->pkts) + | EP_BCSCOUNT(sch_ep->cs_count) + | EP_BBM(sch_ep->burst_mode)); + ep_ctx->reserved[1] |= cpu_to_le32(EP_BOFFSET(sch_ep->offset) + | EP_BREPEAT(sch_ep->repeat)); + + xhci_dbg(xhci, " PKTS:%x, CSCOUNT:%x, BM:%x, OFFSET:%x, REPEAT:%x\n", + sch_ep->pkts, sch_ep->cs_count, sch_ep->burst_mode, + sch_ep->offset, sch_ep->repeat); + } + + return xhci_check_bandwidth(hcd, udev); +} +EXPORT_SYMBOL_GPL(xhci_mtk_check_bandwidth); + +void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) +{ + struct xhci_hcd_mtk *mtk = hcd_to_mtk(hcd); + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct mu3h_sch_bw_info *sch_bw; + struct mu3h_sch_ep_info *sch_ep, *tmp; + int bw_index; + + xhci_dbg(xhci, "%s() udev %s\n", __func__, dev_name(&udev->dev)); + + list_for_each_entry_safe(sch_ep, tmp, &mtk->bw_ep_chk_list, endpoint) { + bw_index = get_bw_index(xhci, udev, sch_ep->ep); + sch_bw = &mtk->sch_array[bw_index]; + destroy_sch_ep(udev, sch_bw, sch_ep); + } + + xhci_reset_bandwidth(hcd, udev); +} +EXPORT_SYMBOL_GPL(xhci_mtk_reset_bandwidth); --- linux-5.8.0.orig/drivers/usb/host/xhci-mtk.c +++ linux-5.8.0/drivers/usb/host/xhci-mtk.c @@ -347,6 +347,8 @@ static int xhci_mtk_setup(struct usb_hcd *hcd); static const struct xhci_driver_overrides xhci_mtk_overrides __initconst = { .reset = xhci_mtk_setup, + .check_bandwidth = xhci_mtk_check_bandwidth, + .reset_bandwidth = xhci_mtk_reset_bandwidth, }; static struct hc_driver __read_mostly xhci_mtk_hc_driver; @@ -395,6 +397,13 @@ xhci->quirks |= XHCI_SPURIOUS_SUCCESS; if (mtk->lpm_support) xhci->quirks |= XHCI_LPM_SUPPORT; + + /* + * MTK xHCI 0.96: PSA is 1 by default even if doesn't support stream, + * and it's 3 when support it. + */ + if (xhci->hci_version < 0x100 && HCC_MAX_PSA(xhci->hcc_params) == 4) + xhci->quirks |= XHCI_BROKEN_STREAMS; } /* called during probe() after chip reset completes */ @@ -546,7 +555,8 @@ if (ret) goto put_usb3_hcd; - if (HCC_MAX_PSA(xhci->hcc_params) >= 4) + if (HCC_MAX_PSA(xhci->hcc_params) >= 4 && + !(xhci->quirks & XHCI_BROKEN_STREAMS)) xhci->shared_hcd->can_do_streams = 1; ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED); --- linux-5.8.0.orig/drivers/usb/host/xhci-mtk.h +++ linux-5.8.0/drivers/usb/host/xhci-mtk.h @@ -59,6 +59,7 @@ * @ep_type: endpoint type * @maxpkt: max packet size of endpoint * @ep: address of usb_host_endpoint struct + * @allocated: the bandwidth is aready allocated from bus_bw * @offset: which uframe of the interval that transfer should be * scheduled first time within the interval * @repeat: the time gap between two uframes that transfers are @@ -86,6 +87,7 @@ u32 ep_type; u32 maxpkt; void *ep; + bool allocated; /* * mtk xHCI scheduling information put into reserved DWs * in ep context @@ -131,6 +133,7 @@ struct device *dev; struct usb_hcd *hcd; struct mu3h_sch_bw_info *sch_array; + struct list_head bw_ep_chk_list; struct mu3c_ippc_regs __iomem *ippc_regs; bool has_ippc; int num_u2_ports; @@ -166,6 +169,8 @@ struct usb_host_endpoint *ep); void xhci_mtk_drop_ep_quirk(struct usb_hcd *hcd, struct usb_device *udev, struct usb_host_endpoint *ep); +int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); +void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev); #else static inline int xhci_mtk_add_ep_quirk(struct usb_hcd *hcd, @@ -179,6 +184,16 @@ { } +static inline int xhci_mtk_check_bandwidth(struct usb_hcd *hcd, + struct usb_device *udev) +{ + return 0; +} + +static inline void xhci_mtk_reset_bandwidth(struct usb_hcd *hcd, + struct usb_device *udev) +{ +} #endif #endif /* _XHCI_MTK_H_ */ --- linux-5.8.0.orig/drivers/usb/host/xhci-mvebu.c +++ linux-5.8.0/drivers/usb/host/xhci-mvebu.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -73,6 +74,47 @@ return 0; } + +int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct device *dev = hcd->self.controller; + struct phy *phy; + int ret; + + /* Old bindings miss the PHY handle */ + phy = of_phy_get(dev->of_node, "usb3-phy"); + if (IS_ERR(phy) && PTR_ERR(phy) == -EPROBE_DEFER) + return -EPROBE_DEFER; + else if (IS_ERR(phy)) + goto phy_out; + + ret = phy_init(phy); + if (ret) + goto phy_put; + + ret = phy_set_mode(phy, PHY_MODE_USB_HOST_SS); + if (ret) + goto phy_exit; + + ret = phy_power_on(phy); + if (ret == -EOPNOTSUPP) { + /* Skip initializatin of XHCI PHY when it is unsupported by firmware */ + dev_warn(dev, "PHY unsupported by firmware\n"); + xhci->quirks |= XHCI_SKIP_PHY_INIT; + } + if (ret) + goto phy_exit; + + phy_power_off(phy); +phy_exit: + phy_exit(phy); +phy_put: + of_phy_put(phy); +phy_out: + + return 0; +} int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd) { --- linux-5.8.0.orig/drivers/usb/host/xhci-mvebu.h +++ linux-5.8.0/drivers/usb/host/xhci-mvebu.h @@ -12,12 +12,18 @@ #if IS_ENABLED(CONFIG_USB_XHCI_MVEBU) int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd); +int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd); int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd); #else static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd) { return 0; } + +static inline int xhci_mvebu_a3700_plat_setup(struct usb_hcd *hcd) +{ + return 0; +} static inline int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd) { --- linux-5.8.0.orig/drivers/usb/host/xhci-pci-renesas.c +++ linux-5.8.0/drivers/usb/host/xhci-pci-renesas.c @@ -50,20 +50,6 @@ #define RENESAS_RETRY 10000 #define RENESAS_DELAY 10 -#define ROM_VALID_01 0x2013 -#define ROM_VALID_02 0x2026 - -static int renesas_verify_fw_version(struct pci_dev *pdev, u32 version) -{ - switch (version) { - case ROM_VALID_01: - case ROM_VALID_02: - return 0; - } - dev_err(&pdev->dev, "FW has invalid version :%d\n", version); - return -EINVAL; -} - static int renesas_fw_download_image(struct pci_dev *dev, const u32 *fw, size_t step, bool rom) { @@ -202,10 +188,7 @@ version &= RENESAS_FW_VERSION_FIELD; version = version >> RENESAS_FW_VERSION_OFFSET; - - err = renesas_verify_fw_version(pdev, version); - if (err) - return err; + dev_dbg(&pdev->dev, "Found ROM version: %x\n", version); /* * Test if ROM is present and loaded, if so we can skip everything --- linux-5.8.0.orig/drivers/usb/host/xhci-pci.c +++ linux-5.8.0/drivers/usb/host/xhci-pci.c @@ -44,6 +44,7 @@ #define PCI_DEVICE_ID_INTEL_DNV_XHCI 0x19d0 #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_2C_XHCI 0x15b5 #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_4C_XHCI 0x15b6 +#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_XHCI 0x15c1 #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_XHCI 0x15db #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_XHCI 0x15d4 #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_XHCI 0x15e9 @@ -52,12 +53,17 @@ #define PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI 0x8a13 #define PCI_DEVICE_ID_INTEL_CML_XHCI 0xa3af #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI 0x9a13 +#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI 0x1138 #define PCI_DEVICE_ID_AMD_PROMONTORYA_4 0x43b9 #define PCI_DEVICE_ID_AMD_PROMONTORYA_3 0x43ba #define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb #define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc +#define PCI_DEVICE_ID_ASMEDIA_1042_XHCI 0x1042 #define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142 +#define PCI_DEVICE_ID_ASMEDIA_1142_XHCI 0x1242 +#define PCI_DEVICE_ID_ASMEDIA_2142_XHCI 0x2142 +#define PCI_DEVICE_ID_ASMEDIA_3242_XHCI 0x3242 static const char hcd_name[] = "xhci_hcd"; @@ -157,6 +163,9 @@ (pdev->device == 0x15e0 || pdev->device == 0x15e1)) xhci->quirks |= XHCI_SNPS_BROKEN_SUSPEND; + if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x15e5) + xhci->quirks |= XHCI_DISABLE_SPARSE; + if (pdev->vendor == PCI_VENDOR_ID_AMD) xhci->quirks |= XHCI_TRUST_TX_LENGTH; @@ -223,13 +232,15 @@ if (pdev->vendor == PCI_VENDOR_ID_INTEL && (pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_2C_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_4C_XHCI || + pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI || pdev->device == PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI || - pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI)) + pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI || + pdev->device == PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI)) xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW; if (pdev->vendor == PCI_VENDOR_ID_ETRON && @@ -260,13 +271,17 @@ xhci->quirks |= XHCI_LPM_SUPPORT; if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && - pdev->device == 0x1042) + pdev->device == PCI_DEVICE_ID_ASMEDIA_1042_XHCI) xhci->quirks |= XHCI_BROKEN_STREAMS; if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && - pdev->device == 0x1142) + pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI) { xhci->quirks |= XHCI_TRUST_TX_LENGTH; + xhci->quirks |= XHCI_NO_64BIT_SUPPORT; + } if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && - pdev->device == 0x2142) + (pdev->device == PCI_DEVICE_ID_ASMEDIA_1142_XHCI || + pdev->device == PCI_DEVICE_ID_ASMEDIA_2142_XHCI || + pdev->device == PCI_DEVICE_ID_ASMEDIA_3242_XHCI)) xhci->quirks |= XHCI_NO_64BIT_SUPPORT; if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && @@ -281,6 +296,11 @@ pdev->device == 0x9026) xhci->quirks |= XHCI_RESET_PLL_ON_DISCONNECT; + if (pdev->vendor == PCI_VENDOR_ID_AMD && + (pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_2 || + pdev->device == PCI_DEVICE_ID_AMD_PROMONTORYA_4)) + xhci->quirks |= XHCI_NO_SOFT_RETRY; + if (xhci->quirks & XHCI_RESET_ON_RESUME) xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, "QUIRK: Resetting on resume"); @@ -367,6 +387,15 @@ /* USB 2.0 roothub is stored in the PCI device now. */ hcd = dev_get_drvdata(&dev->dev); xhci = hcd_to_xhci(hcd); + + if (xhci->quirks & XHCI_DISABLE_SPARSE) { + u32 reg; + + reg = readl(hcd->regs + 0xC12C); + reg &= ~BIT(17); + writel(reg, hcd->regs + 0xC12C); + } + xhci->shared_hcd = usb_create_shared_hcd(&xhci_pci_hc_driver, &dev->dev, pci_name(dev), hcd); if (!xhci->shared_hcd) { --- linux-5.8.0.orig/drivers/usb/host/xhci-plat.c +++ linux-5.8.0/drivers/usb/host/xhci-plat.c @@ -44,6 +44,16 @@ priv->plat_start(hcd); } +static int xhci_priv_plat_setup(struct usb_hcd *hcd) +{ + struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd); + + if (!priv->plat_setup) + return 0; + + return priv->plat_setup(hcd); +} + static int xhci_priv_init_quirk(struct usb_hcd *hcd) { struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd); @@ -101,6 +111,7 @@ }; static const struct xhci_plat_priv xhci_plat_marvell_armada3700 = { + .plat_setup = xhci_mvebu_a3700_plat_setup, .init_quirk = xhci_mvebu_a3700_init_quirk, }; @@ -173,6 +184,8 @@ struct usb_hcd *hcd; int ret; int irq; + struct xhci_plat_priv *priv = NULL; + if (usb_disabled()) return -ENODEV; @@ -266,8 +279,7 @@ priv_match = of_device_get_match_data(&pdev->dev); if (priv_match) { - struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd); - + priv = hcd_to_xhci_priv(hcd); /* Just copy data for now */ if (priv_match) *priv = *priv_match; @@ -316,6 +328,16 @@ hcd->tpl_support = of_usb_host_tpl_support(sysdev->of_node); xhci->shared_hcd->tpl_support = hcd->tpl_support; + + if (priv) { + ret = xhci_priv_plat_setup(hcd); + if (ret) + goto disable_usb_phy; + } + + if ((xhci->quirks & XHCI_SKIP_PHY_INIT) || (priv && (priv->quirks & XHCI_SKIP_PHY_INIT))) + hcd->skip_phy_initialization = 1; + ret = usb_add_hcd(hcd, irq, IRQF_SHARED); if (ret) goto disable_usb_phy; --- linux-5.8.0.orig/drivers/usb/host/xhci-plat.h +++ linux-5.8.0/drivers/usb/host/xhci-plat.h @@ -13,6 +13,7 @@ struct xhci_plat_priv { const char *firmware_name; unsigned long long quirks; + int (*plat_setup)(struct usb_hcd *); void (*plat_start)(struct usb_hcd *); int (*init_quirk)(struct usb_hcd *); int (*resume_quirk)(struct usb_hcd *); --- linux-5.8.0.orig/drivers/usb/host/xhci-ring.c +++ linux-5.8.0/drivers/usb/host/xhci-ring.c @@ -699,11 +699,16 @@ dma_unmap_single(dev, seg->bounce_dma, ring->bounce_buf_len, DMA_FROM_DEVICE); /* for in tranfers we need to copy the data from bounce to sg */ - len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs, seg->bounce_buf, - seg->bounce_len, seg->bounce_offs); - if (len != seg->bounce_len) - xhci_warn(xhci, "WARN Wrong bounce buffer read length: %zu != %d\n", - len, seg->bounce_len); + if (urb->num_sgs) { + len = sg_pcopy_from_buffer(urb->sg, urb->num_sgs, seg->bounce_buf, + seg->bounce_len, seg->bounce_offs); + if (len != seg->bounce_len) + xhci_warn(xhci, "WARN Wrong bounce buffer read length: %zu != %d\n", + len, seg->bounce_len); + } else { + memcpy(urb->transfer_buffer + seg->bounce_offs, seg->bounce_buf, + seg->bounce_len); + } seg->bounce_len = 0; seg->bounce_offs = 0; } @@ -2302,7 +2307,8 @@ remaining = 0; break; case COMP_USB_TRANSACTION_ERROR: - if ((ep_ring->err_count++ > MAX_SOFT_RETRY) || + if (xhci->quirks & XHCI_NO_SOFT_RETRY || + (ep_ring->err_count++ > MAX_SOFT_RETRY) || le32_to_cpu(slot_ctx->tt_info) & TT_SLOT) break; *status = 0; @@ -2930,6 +2936,8 @@ trb->field[0] = cpu_to_le32(field1); trb->field[1] = cpu_to_le32(field2); trb->field[2] = cpu_to_le32(field3); + /* make sure TRB is fully written before giving it to the controller */ + wmb(); trb->field[3] = cpu_to_le32(field4); trace_xhci_queue_trb(ring, trb); @@ -3273,12 +3281,16 @@ /* create a max max_pkt sized bounce buffer pointed to by last trb */ if (usb_urb_dir_out(urb)) { - len = sg_pcopy_to_buffer(urb->sg, urb->num_sgs, - seg->bounce_buf, new_buff_len, enqd_len); - if (len != new_buff_len) - xhci_warn(xhci, - "WARN Wrong bounce buffer write length: %zu != %d\n", - len, new_buff_len); + if (urb->num_sgs) { + len = sg_pcopy_to_buffer(urb->sg, urb->num_sgs, + seg->bounce_buf, new_buff_len, enqd_len); + if (len != new_buff_len) + xhci_warn(xhci, "WARN Wrong bounce buffer write length: %zu != %d\n", + len, new_buff_len); + } else { + memcpy(seg->bounce_buf, urb->transfer_buffer + enqd_len, new_buff_len); + } + seg->bounce_dma = dma_map_single(dev, seg->bounce_buf, max_pkt, DMA_TO_DEVICE); } else { --- linux-5.8.0.orig/drivers/usb/host/xhci-tegra.c +++ linux-5.8.0/drivers/usb/host/xhci-tegra.c @@ -623,6 +623,13 @@ enable); if (err < 0) break; + + /* + * wait 500us for LFPS detector to be disabled before + * sending ACK + */ + if (!enable) + usleep_range(500, 1000); } if (err < 0) { @@ -1136,7 +1143,7 @@ unsigned int i, phy_count = 0; for (i = 0; i < tegra->soc->num_types; i++) { - if (!strncmp(tegra->soc->phy_types[i].name, "usb2", + if (!strncmp(tegra->soc->phy_types[i].name, name, strlen(name))) return tegra->phys[phy_count+port]; @@ -1258,6 +1265,8 @@ INIT_WORK(&tegra->id_work, tegra_xhci_id_work); tegra->id_nb.notifier_call = tegra_xhci_id_notify; + tegra->otg_usb2_port = -EINVAL; + tegra->otg_usb3_port = -EINVAL; for (i = 0; i < tegra->num_usb_phys; i++) { struct phy *phy = tegra_xusb_get_phy(tegra, "usb2", i); --- linux-5.8.0.orig/drivers/usb/host/xhci.c +++ linux-5.8.0/drivers/usb/host/xhci.c @@ -883,44 +883,42 @@ xhci_set_cmd_ring_deq(xhci); } -static void xhci_disable_port_wake_on_bits(struct xhci_hcd *xhci) +/* + * Disable port wake bits if do_wakeup is not set. + * + * Also clear a possible internal port wake state left hanging for ports that + * detected termination but never successfully enumerated (trained to 0U). + * Internal wake causes immediate xHCI wake after suspend. PORT_CSC write done + * at enumeration clears this wake, force one here as well for unconnected ports + */ + +static void xhci_disable_hub_port_wake(struct xhci_hcd *xhci, + struct xhci_hub *rhub, + bool do_wakeup) { - struct xhci_port **ports; - int port_index; unsigned long flags; u32 t1, t2, portsc; + int i; spin_lock_irqsave(&xhci->lock, flags); - /* disable usb3 ports Wake bits */ - port_index = xhci->usb3_rhub.num_ports; - ports = xhci->usb3_rhub.ports; - while (port_index--) { - t1 = readl(ports[port_index]->addr); - portsc = t1; - t1 = xhci_port_state_to_neutral(t1); - t2 = t1 & ~PORT_WAKE_BITS; - if (t1 != t2) { - writel(t2, ports[port_index]->addr); - xhci_dbg(xhci, "disable wake bits port %d-%d, portsc: 0x%x, write: 0x%x\n", - xhci->usb3_rhub.hcd->self.busnum, - port_index + 1, portsc, t2); - } - } + for (i = 0; i < rhub->num_ports; i++) { + portsc = readl(rhub->ports[i]->addr); + t1 = xhci_port_state_to_neutral(portsc); + t2 = t1; + + /* clear wake bits if do_wake is not set */ + if (!do_wakeup) + t2 &= ~PORT_WAKE_BITS; + + /* Don't touch csc bit if connected or connect change is set */ + if (!(portsc & (PORT_CSC | PORT_CONNECT))) + t2 |= PORT_CSC; - /* disable usb2 ports Wake bits */ - port_index = xhci->usb2_rhub.num_ports; - ports = xhci->usb2_rhub.ports; - while (port_index--) { - t1 = readl(ports[port_index]->addr); - portsc = t1; - t1 = xhci_port_state_to_neutral(t1); - t2 = t1 & ~PORT_WAKE_BITS; if (t1 != t2) { - writel(t2, ports[port_index]->addr); - xhci_dbg(xhci, "disable wake bits port %d-%d, portsc: 0x%x, write: 0x%x\n", - xhci->usb2_rhub.hcd->self.busnum, - port_index + 1, portsc, t2); + writel(t2, rhub->ports[i]->addr); + xhci_dbg(xhci, "config port %d-%d wake bits, portsc: 0x%x, write: 0x%x\n", + rhub->hcd->self.busnum, i + 1, portsc, t2); } } spin_unlock_irqrestore(&xhci->lock, flags); @@ -982,11 +980,14 @@ xhci->shared_hcd->state != HC_STATE_SUSPENDED) return -EINVAL; - xhci_dbc_suspend(xhci); - /* Clear root port wake on bits if wakeup not allowed. */ - if (!do_wakeup) - xhci_disable_port_wake_on_bits(xhci); + xhci_disable_hub_port_wake(xhci, &xhci->usb3_rhub, do_wakeup); + xhci_disable_hub_port_wake(xhci, &xhci->usb2_rhub, do_wakeup); + + if (!HCD_HW_ACCESSIBLE(hcd)) + return 0; + + xhci_dbc_suspend(xhci); /* Don't poll the roothubs on bus suspend. */ xhci_dbg(xhci, "%s: stopping port polling.\n", __func__); @@ -1085,6 +1086,7 @@ struct usb_hcd *secondary_hcd; int retval = 0; bool comp_timer_running = false; + bool pending_portevent = false; if (!hcd->state) return 0; @@ -1223,13 +1225,22 @@ done: if (retval == 0) { - /* Resume root hubs only when have pending events. */ - if (xhci_pending_portevent(xhci)) { + /* + * Resume roothubs only if there are pending events. + * USB 3 devices resend U3 LFPS wake after a 100ms delay if + * the first wake signalling failed, give it that chance. + */ + pending_portevent = xhci_pending_portevent(xhci); + if (!pending_portevent) { + msleep(120); + pending_portevent = xhci_pending_portevent(xhci); + } + + if (pending_portevent) { usb_hcd_resume_root_hub(xhci->shared_hcd); usb_hcd_resume_root_hub(hcd); } } - /* * If system is subject to the Quirk, Compliance Mode Timer needs to * be re-initialized Always after a system resume. Ports are subject @@ -1915,8 +1926,6 @@ ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); trace_xhci_add_endpoint(ep_ctx); - xhci_debugfs_create_endpoint(xhci, virt_dev, ep_index); - xhci_dbg(xhci, "add ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", (unsigned int) ep->desc.bEndpointAddress, udev->slot_id, @@ -2860,7 +2869,7 @@ * else should be touching the xhci->devs[slot_id] structure, so we * don't need to take the xhci->lock for manipulating that. */ -static int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) +int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) { int i; int ret = 0; @@ -2949,6 +2958,7 @@ xhci_check_bw_drop_ep_streams(xhci, virt_dev, i); virt_dev->eps[i].ring = virt_dev->eps[i].new_ring; virt_dev->eps[i].new_ring = NULL; + xhci_debugfs_create_endpoint(xhci, virt_dev, i); } command_cleanup: kfree(command->completion); @@ -2957,7 +2967,7 @@ return ret; } -static void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) +void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev) { struct xhci_hcd *xhci; struct xhci_virt_device *virt_dev; @@ -3236,10 +3246,11 @@ wait_for_completion(cfg_cmd->completion); - ep->ep_state &= ~EP_SOFT_CLEAR_TOGGLE; xhci_free_command(xhci, cfg_cmd); cleanup: xhci_free_command(xhci, stop_cmd); + if (ep->ep_state & EP_SOFT_CLEAR_TOGGLE) + ep->ep_state &= ~EP_SOFT_CLEAR_TOGGLE; } static int xhci_check_streams_endpoint(struct xhci_hcd *xhci, @@ -4639,19 +4650,19 @@ { unsigned long long timeout_ns; + if (xhci->quirks & XHCI_INTEL_HOST) + timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc); + else + timeout_ns = udev->u1_params.sel; + /* Prevent U1 if service interval is shorter than U1 exit latency */ if (usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc)) { - if (xhci_service_interval_to_ns(desc) <= udev->u1_params.mel) { + if (xhci_service_interval_to_ns(desc) <= timeout_ns) { dev_dbg(&udev->dev, "Disable U1, ESIT shorter than exit latency\n"); return USB3_LPM_DISABLED; } } - if (xhci->quirks & XHCI_INTEL_HOST) - timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc); - else - timeout_ns = udev->u1_params.sel; - /* The U1 timeout is encoded in 1us intervals. * Don't return a timeout of zero, because that's USB3_LPM_DISABLED. */ @@ -4703,19 +4714,19 @@ { unsigned long long timeout_ns; + if (xhci->quirks & XHCI_INTEL_HOST) + timeout_ns = xhci_calculate_intel_u2_timeout(udev, desc); + else + timeout_ns = udev->u2_params.sel; + /* Prevent U2 if service interval is shorter than U2 exit latency */ if (usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc)) { - if (xhci_service_interval_to_ns(desc) <= udev->u2_params.mel) { + if (xhci_service_interval_to_ns(desc) <= timeout_ns) { dev_dbg(&udev->dev, "Disable U2, ESIT shorter than exit latency\n"); return USB3_LPM_DISABLED; } } - if (xhci->quirks & XHCI_INTEL_HOST) - timeout_ns = xhci_calculate_intel_u2_timeout(udev, desc); - else - timeout_ns = udev->u2_params.sel; - /* The U2 timeout is encoded in 256us intervals */ timeout_ns = DIV_ROUND_UP_ULL(timeout_ns, 256 * 1000); /* If the necessary timeout value is bigger than what we can set in the @@ -5378,6 +5389,10 @@ drv->reset = over->reset; if (over->start) drv->start = over->start; + if (over->check_bandwidth) + drv->check_bandwidth = over->check_bandwidth; + if (over->reset_bandwidth) + drv->reset_bandwidth = over->reset_bandwidth; } } EXPORT_SYMBOL_GPL(xhci_init_driver); --- linux-5.8.0.orig/drivers/usb/host/xhci.h +++ linux-5.8.0/drivers/usb/host/xhci.h @@ -1874,6 +1874,9 @@ #define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34) #define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35) #define XHCI_RENESAS_FW_QUIRK BIT_ULL(36) +#define XHCI_SKIP_PHY_INIT BIT_ULL(37) +#define XHCI_DISABLE_SPARSE BIT_ULL(38) +#define XHCI_NO_SOFT_RETRY BIT_ULL(40) unsigned int num_active_eps; unsigned int limit_active_eps; @@ -1911,6 +1914,8 @@ size_t extra_priv_size; int (*reset)(struct usb_hcd *hcd); int (*start)(struct usb_hcd *hcd); + int (*check_bandwidth)(struct usb_hcd *, struct usb_device *); + void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *); }; #define XHCI_CFC_DELAY 10 @@ -2063,6 +2068,8 @@ void xhci_shutdown(struct usb_hcd *hcd); void xhci_init_driver(struct hc_driver *drv, const struct xhci_driver_overrides *over); +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_disable_slot(struct xhci_hcd *xhci, u32 slot_id); int xhci_ext_cap_init(struct xhci_hcd *xhci); --- linux-5.8.0.orig/drivers/usb/misc/adutux.c +++ linux-5.8.0/drivers/usb/misc/adutux.c @@ -209,6 +209,7 @@ if (status != 0) { if ((status != -ENOENT) && + (status != -ESHUTDOWN) && (status != -ECONNRESET)) { dev_dbg(&dev->udev->dev, "%s :nonzero status received: %d\n", __func__, --- linux-5.8.0.orig/drivers/usb/misc/apple-mfi-fastcharge.c +++ linux-5.8.0/drivers/usb/misc/apple-mfi-fastcharge.c @@ -120,8 +120,10 @@ dev_dbg(&mfi->udev->dev, "prop: %d\n", psp); ret = pm_runtime_get_sync(&mfi->udev->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(&mfi->udev->dev); return ret; + } switch (psp) { case POWER_SUPPLY_PROP_CHARGE_TYPE: @@ -163,17 +165,23 @@ .property_is_writeable = apple_mfi_fc_property_is_writeable }; +static bool mfi_fc_match(struct usb_device *udev) +{ + int idProduct; + + idProduct = le16_to_cpu(udev->descriptor.idProduct); + /* See comment above mfi_fc_id_table[] */ + return (idProduct >= 0x1200 && idProduct <= 0x12ff); +} + static int mfi_fc_probe(struct usb_device *udev) { struct power_supply_config battery_cfg = {}; struct mfi_device *mfi = NULL; - int err, idProduct; + int err; - idProduct = le16_to_cpu(udev->descriptor.idProduct); - /* See comment above mfi_fc_id_table[] */ - if (idProduct < 0x1200 || idProduct > 0x12ff) { + if (!mfi_fc_match(udev)) return -ENODEV; - } mfi = kzalloc(sizeof(struct mfi_device), GFP_KERNEL); if (!mfi) { @@ -220,6 +228,7 @@ .probe = mfi_fc_probe, .disconnect = mfi_fc_disconnect, .id_table = mfi_fc_id_table, + .match = mfi_fc_match, .generic_subclass = 1, }; --- linux-5.8.0.orig/drivers/usb/misc/iowarrior.c +++ linux-5.8.0/drivers/usb/misc/iowarrior.c @@ -2,8 +2,9 @@ /* * Native support for the I/O-Warrior USB devices * - * Copyright (c) 2003-2005 Code Mercenaries GmbH - * written by Christian Lucht + * Copyright (c) 2003-2005, 2020 Code Mercenaries GmbH + * written by Christian Lucht and + * Christoph Jung * * based on @@ -802,14 +803,28 @@ /* we have to check the report_size often, so remember it in the endianness suitable for our machine */ dev->report_size = usb_endpoint_maxp(dev->int_in_endpoint); - if ((dev->interface->cur_altsetting->desc.bInterfaceNumber == 0) && - ((dev->product_id == USB_DEVICE_ID_CODEMERCS_IOW56) || - (dev->product_id == USB_DEVICE_ID_CODEMERCS_IOW56AM) || - (dev->product_id == USB_DEVICE_ID_CODEMERCS_IOW28) || - (dev->product_id == USB_DEVICE_ID_CODEMERCS_IOW28L) || - (dev->product_id == USB_DEVICE_ID_CODEMERCS_IOW100))) - /* IOWarrior56 has wMaxPacketSize different from report size */ - dev->report_size = 7; + + /* + * Some devices need the report size to be different than the + * endpoint size. + */ + if (dev->interface->cur_altsetting->desc.bInterfaceNumber == 0) { + switch (dev->product_id) { + case USB_DEVICE_ID_CODEMERCS_IOW56: + case USB_DEVICE_ID_CODEMERCS_IOW56AM: + dev->report_size = 7; + break; + + case USB_DEVICE_ID_CODEMERCS_IOW28: + case USB_DEVICE_ID_CODEMERCS_IOW28L: + dev->report_size = 4; + break; + + case USB_DEVICE_ID_CODEMERCS_IOW100: + dev->report_size = 13; + break; + } + } /* create the urb and buffer for reading */ dev->int_in_urb = usb_alloc_urb(0, GFP_KERNEL); --- linux-5.8.0.orig/drivers/usb/misc/lvstest.c +++ linux-5.8.0/drivers/usb/misc/lvstest.c @@ -426,7 +426,7 @@ USB_DT_SS_HUB_SIZE, USB_CTRL_GET_TIMEOUT); if (ret < (USB_DT_HUB_NONVAR_SIZE + 2)) { dev_err(&hdev->dev, "wrong root hub descriptor read %d\n", ret); - return ret; + return ret < 0 ? ret : -EINVAL; } /* submit urb to poll interrupt endpoint */ --- linux-5.8.0.orig/drivers/usb/misc/sisusbvga/Kconfig +++ linux-5.8.0/drivers/usb/misc/sisusbvga/Kconfig @@ -16,7 +16,7 @@ config USB_SISUSBVGA_CON bool "Text console and mode switching support" if USB_SISUSBVGA - depends on VT + depends on VT && BROKEN select FONT_8x16 help Say Y here if you want a VGA text console via the USB dongle or --- linux-5.8.0.orig/drivers/usb/misc/sisusbvga/sisusb.c +++ linux-5.8.0/drivers/usb/misc/sisusbvga/sisusb.c @@ -761,7 +761,7 @@ u8 swap8, fromkern = kernbuffer ? 1 : 0; u16 swap16; u32 swap32, flag = (length >> 28) & 1; - char buf[4]; + u8 buf[4]; /* if neither kernbuffer not userbuffer are given, assume * data in obuf --- linux-5.8.0.orig/drivers/usb/misc/yurex.c +++ linux-5.8.0/drivers/usb/misc/yurex.c @@ -492,11 +492,14 @@ prepare_to_wait(&dev->waitq, &wait, TASK_INTERRUPTIBLE); dev_dbg(&dev->interface->dev, "%s - submit %c\n", __func__, dev->cntl_buffer[0]); - retval = usb_submit_urb(dev->cntl_urb, GFP_KERNEL); + retval = usb_submit_urb(dev->cntl_urb, GFP_ATOMIC); if (retval >= 0) timeout = schedule_timeout(YUREX_WRITE_TIMEOUT); finish_wait(&dev->waitq, &wait); + /* make sure URB is idle after timeout or (spurious) CMD_ACK */ + usb_kill_urb(dev->cntl_urb); + mutex_unlock(&dev->io_mutex); if (retval < 0) { --- linux-5.8.0.orig/drivers/usb/mtu3/mtu3_core.c +++ linux-5.8.0/drivers/usb/mtu3/mtu3_core.c @@ -131,8 +131,12 @@ mtu3_setbits(ibase, SSUSB_U2_CTRL(0), SSUSB_U2_PORT_DIS | SSUSB_U2_PORT_PDN); - if (mtu->ssusb->dr_mode == USB_DR_MODE_OTG) + if (mtu->ssusb->dr_mode == USB_DR_MODE_OTG) { mtu3_clrbits(ibase, SSUSB_U2_CTRL(0), SSUSB_U2_PORT_OTG_SEL); + if (mtu->is_u3_ip) + mtu3_clrbits(ibase, SSUSB_U3_CTRL(0), + SSUSB_U3_PORT_DUAL_MODE); + } mtu3_setbits(ibase, U3D_SSUSB_IP_PW_CTRL2, SSUSB_IP_DEV_PDN); } --- linux-5.8.0.orig/drivers/usb/mtu3/mtu3_debugfs.c +++ linux-5.8.0/drivers/usb/mtu3/mtu3_debugfs.c @@ -127,7 +127,7 @@ struct debugfs_regset32 *regset; struct mtu3_regset *mregs; - mregs = devm_kzalloc(mtu->dev, sizeof(*regset), GFP_KERNEL); + mregs = devm_kzalloc(mtu->dev, sizeof(*mregs), GFP_KERNEL); if (!mregs) return; --- linux-5.8.0.orig/drivers/usb/mtu3/mtu3_gadget.c +++ linux-5.8.0/drivers/usb/mtu3/mtu3_gadget.c @@ -587,6 +587,7 @@ spin_unlock_irqrestore(&mtu->lock, flags); + synchronize_irq(mtu->irq); return 0; } --- linux-5.8.0.orig/drivers/usb/musb/musb_core.c +++ linux-5.8.0/drivers/usb/musb/musb_core.c @@ -2005,10 +2005,14 @@ MUSB_DEVCTL_HR; switch (devctl & ~s) { case MUSB_QUIRK_B_DISCONNECT_99: - musb_dbg(musb, "Poll devctl in case of suspend after disconnect\n"); - schedule_delayed_work(&musb->irq_work, - msecs_to_jiffies(1000)); - break; + if (musb->quirk_retries && !musb->flush_irq_work) { + musb_dbg(musb, "Poll devctl in case of suspend after disconnect\n"); + schedule_delayed_work(&musb->irq_work, + msecs_to_jiffies(1000)); + musb->quirk_retries--; + break; + } + fallthrough; case MUSB_QUIRK_B_INVALID_VBUS_91: if (musb->quirk_retries && !musb->flush_irq_work) { musb_dbg(musb, @@ -2241,32 +2245,35 @@ { struct musb_pending_work *w; unsigned long flags; + bool is_suspended; int error; if (WARN_ON(!callback)) return -EINVAL; - if (pm_runtime_active(musb->controller)) - return callback(musb, data); + spin_lock_irqsave(&musb->list_lock, flags); + is_suspended = musb->is_runtime_suspended; - w = devm_kzalloc(musb->controller, sizeof(*w), GFP_ATOMIC); - if (!w) - return -ENOMEM; + if (is_suspended) { + w = devm_kzalloc(musb->controller, sizeof(*w), GFP_ATOMIC); + if (!w) { + error = -ENOMEM; + goto out_unlock; + } + + w->callback = callback; + w->data = data; - w->callback = callback; - w->data = data; - spin_lock_irqsave(&musb->list_lock, flags); - if (musb->is_runtime_suspended) { list_add_tail(&w->node, &musb->pending_list); error = 0; - } else { - dev_err(musb->controller, "could not add resume work %p\n", - callback); - devm_kfree(musb->controller, w); - error = -EINPROGRESS; } + +out_unlock: spin_unlock_irqrestore(&musb->list_lock, flags); + if (!is_suspended) + error = callback(musb, data); + return error; } EXPORT_SYMBOL_GPL(musb_queue_resume_work); --- linux-5.8.0.orig/drivers/usb/renesas_usbhs/fifo.c +++ linux-5.8.0/drivers/usb/renesas_usbhs/fifo.c @@ -126,6 +126,7 @@ } usbhs_pipe_clear_without_sequence(pipe, 0, 0); + usbhs_pipe_running(pipe, 0); __usbhsf_pkt_del(pkt); } --- linux-5.8.0.orig/drivers/usb/renesas_usbhs/pipe.c +++ linux-5.8.0/drivers/usb/renesas_usbhs/pipe.c @@ -746,6 +746,8 @@ void usbhs_pipe_free(struct usbhs_pipe *pipe) { + usbhsp_pipe_select(pipe); + usbhsp_pipe_cfg_set(pipe, 0xFFFF, 0); usbhsp_put_pipe(pipe); } --- linux-5.8.0.orig/drivers/usb/serial/ch341.c +++ linux-5.8.0/drivers/usb/serial/ch341.c @@ -76,10 +76,12 @@ #define CH341_QUIRK_LIMITED_PRESCALER BIT(0) static const struct usb_device_id id_table[] = { - { USB_DEVICE(0x4348, 0x5523) }, + { USB_DEVICE(0x1a86, 0x5512) }, + { USB_DEVICE(0x1a86, 0x5523) }, { USB_DEVICE(0x1a86, 0x7522) }, { USB_DEVICE(0x1a86, 0x7523) }, - { USB_DEVICE(0x1a86, 0x5523) }, + { USB_DEVICE(0x4348, 0x5523) }, + { USB_DEVICE(0x9986, 0x7523) }, { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-5.8.0.orig/drivers/usb/serial/cp210x.c +++ linux-5.8.0/drivers/usb/serial/cp210x.c @@ -61,6 +61,7 @@ { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ { USB_DEVICE(0x08FD, 0x000A) }, /* Digianswer A/S , ZigBee/802.15.4 MAC Device */ { USB_DEVICE(0x0908, 0x01FF) }, /* Siemens RUGGEDCOM USB Serial Console */ + { USB_DEVICE(0x0988, 0x0578) }, /* Teraoka AD2000 */ { USB_DEVICE(0x0B00, 0x3070) }, /* Ingenico 3070 */ { USB_DEVICE(0x0BED, 0x1100) }, /* MEI (TM) Cashflow-SC Bill/Voucher Acceptor */ { USB_DEVICE(0x0BED, 0x1101) }, /* MEI series 2000 Combo Acceptor */ @@ -145,6 +146,7 @@ { USB_DEVICE(0x10C4, 0x8857) }, /* CEL EM357 ZigBee USB Stick */ { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ + { USB_DEVICE(0x10C4, 0x88D8) }, /* Acuity Brands nLight Air Adapter */ { USB_DEVICE(0x10C4, 0x88FB) }, /* CESINEL MEDCAL STII Network Analyzer */ { USB_DEVICE(0x10C4, 0x8938) }, /* CESINEL MEDCAL S II Network Analyzer */ { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */ @@ -201,6 +203,9 @@ { USB_DEVICE(0x1901, 0x0194) }, /* GE Healthcare Remote Alarm Box */ { USB_DEVICE(0x1901, 0x0195) }, /* GE B850/B650/B450 CP2104 DP UART interface */ { USB_DEVICE(0x1901, 0x0196) }, /* GE B850 CP2105 DP UART interface */ + { USB_DEVICE(0x1901, 0x0197) }, /* GE CS1000 Display serial interface */ + { USB_DEVICE(0x1901, 0x0198) }, /* GE CS1000 M.2 Key E serial interface */ + { USB_DEVICE(0x199B, 0xBA30) }, /* LORD WSDA-200-USB */ { USB_DEVICE(0x19CF, 0x3000) }, /* Parrot NMEA GPS Flight Recorder */ { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */ { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */ @@ -272,6 +277,8 @@ .break_ctl = cp210x_break_ctl, .set_termios = cp210x_set_termios, .tx_empty = cp210x_tx_empty, + .throttle = usb_serial_generic_throttle, + .unthrottle = usb_serial_generic_unthrottle, .tiocmget = cp210x_tiocmget, .tiocmset = cp210x_tiocmset, .attach = cp210x_attach, @@ -915,6 +922,7 @@ u32 baud; u16 bits; u32 ctl_hs; + u32 flow_repl; cp210x_read_u32_reg(port, CP210X_GET_BAUDRATE, &baud); @@ -1015,6 +1023,22 @@ ctl_hs = le32_to_cpu(flow_ctl.ulControlHandshake); if (ctl_hs & CP210X_SERIAL_CTS_HANDSHAKE) { dev_dbg(dev, "%s - flow control = CRTSCTS\n", __func__); + /* + * When the port is closed, the CP210x hardware disables + * auto-RTS and RTS is deasserted but it leaves auto-CTS when + * in hardware flow control mode. When re-opening the port, if + * auto-CTS is enabled on the cp210x, then auto-RTS must be + * re-enabled in the driver. + */ + flow_repl = le32_to_cpu(flow_ctl.ulFlowReplace); + flow_repl &= ~CP210X_SERIAL_RTS_MASK; + flow_repl |= CP210X_SERIAL_RTS_SHIFT(CP210X_SERIAL_RTS_FLOW_CTL); + flow_ctl.ulFlowReplace = cpu_to_le32(flow_repl); + cp210x_write_reg_block(port, + CP210X_SET_FLOW, + &flow_ctl, + sizeof(flow_ctl)); + cflag |= CRTSCTS; } else { dev_dbg(dev, "%s - flow control = NONE\n", __func__); --- linux-5.8.0.orig/drivers/usb/serial/cyberjack.c +++ linux-5.8.0/drivers/usb/serial/cyberjack.c @@ -357,11 +357,12 @@ struct device *dev = &port->dev; int status = urb->status; unsigned long flags; + bool resubmitted = false; - set_bit(0, &port->write_urbs_free); if (status) { dev_dbg(dev, "%s - nonzero write bulk status received: %d\n", __func__, status); + set_bit(0, &port->write_urbs_free); return; } @@ -394,6 +395,8 @@ goto exit; } + resubmitted = true; + dev_dbg(dev, "%s - priv->wrsent=%d\n", __func__, priv->wrsent); dev_dbg(dev, "%s - priv->wrfilled=%d\n", __func__, priv->wrfilled); @@ -410,6 +413,8 @@ exit: spin_unlock_irqrestore(&priv->lock, flags); + if (!resubmitted) + set_bit(0, &port->write_urbs_free); usb_serial_port_softint(port); } --- linux-5.8.0.orig/drivers/usb/serial/digi_acceleport.c +++ linux-5.8.0/drivers/usb/serial/digi_acceleport.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -198,14 +197,12 @@ int dp_throttle_restart; wait_queue_head_t dp_flush_wait; wait_queue_head_t dp_close_wait; /* wait queue for close */ - struct work_struct dp_wakeup_work; struct usb_serial_port *dp_port; }; /* Local Function Declarations */ -static void digi_wakeup_write_lock(struct work_struct *work); static int digi_write_oob_command(struct usb_serial_port *port, unsigned char *buf, int count, int interruptible); static int digi_write_inb_command(struct usb_serial_port *port, @@ -356,26 +353,6 @@ return timeout; } - -/* - * Digi Wakeup Write - * - * Wake up port, line discipline, and tty processes sleeping - * on writes. - */ - -static void digi_wakeup_write_lock(struct work_struct *work) -{ - struct digi_port *priv = - container_of(work, struct digi_port, dp_wakeup_work); - struct usb_serial_port *port = priv->dp_port; - unsigned long flags; - - spin_lock_irqsave(&priv->dp_port_lock, flags); - tty_port_tty_wakeup(&port->port); - spin_unlock_irqrestore(&priv->dp_port_lock, flags); -} - /* * Digi Write OOB Command * @@ -986,6 +963,7 @@ unsigned long flags; int ret = 0; int status = urb->status; + bool wakeup; /* port and serial sanity check */ if (port == NULL || (priv = usb_get_serial_port_data(port)) == NULL) { @@ -1012,6 +990,7 @@ } /* try to send any buffered data on this port */ + wakeup = true; spin_lock_irqsave(&priv->dp_port_lock, flags); priv->dp_write_urb_in_use = 0; if (priv->dp_out_buf_len > 0) { @@ -1027,19 +1006,18 @@ if (ret == 0) { priv->dp_write_urb_in_use = 1; priv->dp_out_buf_len = 0; + wakeup = false; } } - /* wake up processes sleeping on writes immediately */ - tty_port_tty_wakeup(&port->port); - /* also queue up a wakeup at scheduler time, in case we */ - /* lost the race in write_chan(). */ - schedule_work(&priv->dp_wakeup_work); - spin_unlock_irqrestore(&priv->dp_port_lock, flags); + if (ret && ret != -EPERM) dev_err_console(port, "%s: usb_submit_urb failed, ret=%d, port=%d\n", __func__, ret, priv->dp_port_num); + + if (wakeup) + tty_port_tty_wakeup(&port->port); } static int digi_write_room(struct tty_struct *tty) @@ -1239,7 +1217,6 @@ init_waitqueue_head(&priv->dp_transmit_idle_wait); init_waitqueue_head(&priv->dp_flush_wait); init_waitqueue_head(&priv->dp_close_wait); - INIT_WORK(&priv->dp_wakeup_work, digi_wakeup_write_lock); priv->dp_port = port; init_waitqueue_head(&port->write_wait); @@ -1508,13 +1485,14 @@ rts = C_CRTSCTS(tty); if (tty && opcode == DIGI_CMD_READ_INPUT_SIGNALS) { + bool wakeup = false; + spin_lock_irqsave(&priv->dp_port_lock, flags); /* convert from digi flags to termiox flags */ if (val & DIGI_READ_INPUT_SIGNALS_CTS) { priv->dp_modem_signals |= TIOCM_CTS; - /* port must be open to use tty struct */ if (rts) - tty_port_tty_wakeup(&port->port); + wakeup = true; } else { priv->dp_modem_signals &= ~TIOCM_CTS; /* port must be open to use tty struct */ @@ -1533,6 +1511,9 @@ priv->dp_modem_signals &= ~TIOCM_CD; spin_unlock_irqrestore(&priv->dp_port_lock, flags); + + if (wakeup) + tty_port_tty_wakeup(&port->port); } else if (opcode == DIGI_CMD_TRANSMIT_IDLE) { spin_lock_irqsave(&priv->dp_port_lock, flags); priv->dp_transmit_idle = 1; --- linux-5.8.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-5.8.0/drivers/usb/serial/ftdi_sio.c @@ -713,6 +713,7 @@ { USB_DEVICE(XSENS_VID, XSENS_AWINDA_STATION_PID) }, { USB_DEVICE(XSENS_VID, XSENS_CONVERTER_PID) }, { USB_DEVICE(XSENS_VID, XSENS_MTDEVBOARD_PID) }, + { USB_DEVICE(XSENS_VID, XSENS_MTIUSBCONVERTER_PID) }, { USB_DEVICE(XSENS_VID, XSENS_MTW_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OMNI1509) }, { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, @@ -1036,6 +1037,11 @@ /* U-Blox devices */ { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) }, { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) }, + /* FreeCalypso USB adapters */ + { USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + { USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { } /* Terminating entry */ }; @@ -1380,8 +1386,9 @@ index_value = get_ftdi_divisor(tty, port); value = (u16)index_value; index = (u16)(index_value >> 16); - if ((priv->chip_type == FT2232C) || (priv->chip_type == FT2232H) || - (priv->chip_type == FT4232H) || (priv->chip_type == FT232H)) { + if (priv->chip_type == FT2232C || priv->chip_type == FT2232H || + priv->chip_type == FT4232H || priv->chip_type == FT232H || + priv->chip_type == FTX) { /* Probably the BM type needs the MSB of the encoded fractional * divider also moved like for the chips above. Any infos? */ index = (u16)((index << 8) | priv->interface); @@ -2480,12 +2487,11 @@ #define FTDI_RS_ERR_MASK (FTDI_RS_BI | FTDI_RS_PE | FTDI_RS_FE | FTDI_RS_OE) static int ftdi_process_packet(struct usb_serial_port *port, - struct ftdi_private *priv, char *packet, int len) + struct ftdi_private *priv, unsigned char *buf, int len) { + unsigned char status; int i; - char status; char flag; - char *ch; if (len < 2) { dev_dbg(&port->dev, "malformed packet\n"); @@ -2495,7 +2501,7 @@ /* Compare new line status to the old one, signal if different/ N.B. packet may be processed more than once, but differences are only processed once. */ - status = packet[0] & FTDI_STATUS_B0_MASK; + status = buf[0] & FTDI_STATUS_B0_MASK; if (status != priv->prev_status) { char diff_status = status ^ priv->prev_status; @@ -2521,13 +2527,12 @@ } /* save if the transmitter is empty or not */ - if (packet[1] & FTDI_RS_TEMT) + if (buf[1] & FTDI_RS_TEMT) priv->transmit_empty = 1; else priv->transmit_empty = 0; - len -= 2; - if (!len) + if (len == 2) return 0; /* status only */ /* @@ -2535,40 +2540,41 @@ * data payload to avoid over-reporting. */ flag = TTY_NORMAL; - if (packet[1] & FTDI_RS_ERR_MASK) { + if (buf[1] & FTDI_RS_ERR_MASK) { /* Break takes precedence over parity, which takes precedence * over framing errors */ - if (packet[1] & FTDI_RS_BI) { + if (buf[1] & FTDI_RS_BI) { flag = TTY_BREAK; port->icount.brk++; usb_serial_handle_break(port); - } else if (packet[1] & FTDI_RS_PE) { + } else if (buf[1] & FTDI_RS_PE) { flag = TTY_PARITY; port->icount.parity++; - } else if (packet[1] & FTDI_RS_FE) { + } else if (buf[1] & FTDI_RS_FE) { flag = TTY_FRAME; port->icount.frame++; } /* Overrun is special, not associated with a char */ - if (packet[1] & FTDI_RS_OE) { + if (buf[1] & FTDI_RS_OE) { port->icount.overrun++; tty_insert_flip_char(&port->port, 0, TTY_OVERRUN); } } - port->icount.rx += len; - ch = packet + 2; + port->icount.rx += len - 2; if (port->port.console && port->sysrq) { - for (i = 0; i < len; i++, ch++) { - if (!usb_serial_handle_sysrq_char(port, *ch)) - tty_insert_flip_char(&port->port, *ch, flag); + for (i = 2; i < len; i++) { + if (usb_serial_handle_sysrq_char(port, buf[i])) + continue; + tty_insert_flip_char(&port->port, buf[i], flag); } } else { - tty_insert_flip_string_fixed_flag(&port->port, ch, flag, len); + tty_insert_flip_string_fixed_flag(&port->port, buf + 2, flag, + len - 2); } - return len; + return len - 2; } static void ftdi_process_read_urb(struct urb *urb) --- linux-5.8.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-5.8.0/drivers/usb/serial/ftdi_sio_ids.h @@ -39,6 +39,13 @@ #define FTDI_LUMEL_PD12_PID 0x6002 +/* + * Custom USB adapters made by Falconia Partners LLC + * for FreeCalypso project, ID codes allocated to Falconia by FTDI. + */ +#define FTDI_FALCONIA_JTAG_BUF_PID 0x7150 +#define FTDI_FALCONIA_JTAG_UNBUF_PID 0x7151 + /* Sienna Serial Interface by Secyourit GmbH */ #define FTDI_SIENNA_PID 0x8348 @@ -160,6 +167,7 @@ #define XSENS_AWINDA_DONGLE_PID 0x0102 #define XSENS_MTW_PID 0x0200 /* Xsens MTw */ #define XSENS_MTDEVBOARD_PID 0x0300 /* Motion Tracker Development Board */ +#define XSENS_MTIUSBCONVERTER_PID 0x0301 /* MTi USB converter */ #define XSENS_CONVERTER_PID 0xD00D /* Xsens USB-serial converter */ /* Xsens devices using FTDI VID */ --- linux-5.8.0.orig/drivers/usb/serial/io_edgeport.c +++ linux-5.8.0/drivers/usb/serial/io_edgeport.c @@ -3003,26 +3003,32 @@ response = -ENODEV; } - usb_free_urb(edge_serial->interrupt_read_urb); - kfree(edge_serial->interrupt_in_buffer); - - usb_free_urb(edge_serial->read_urb); - kfree(edge_serial->bulk_in_buffer); - - kfree(edge_serial); - - return response; + goto error; } /* start interrupt read for this edgeport this interrupt will * continue as long as the edgeport is connected */ response = usb_submit_urb(edge_serial->interrupt_read_urb, GFP_KERNEL); - if (response) + if (response) { dev_err(ddev, "%s - Error %d submitting control urb\n", __func__, response); + + goto error; + } } return response; + +error: + usb_free_urb(edge_serial->interrupt_read_urb); + kfree(edge_serial->interrupt_in_buffer); + + usb_free_urb(edge_serial->read_urb); + kfree(edge_serial->bulk_in_buffer); + + kfree(edge_serial); + + return response; } --- linux-5.8.0.orig/drivers/usb/serial/iuu_phoenix.c +++ linux-5.8.0/drivers/usb/serial/iuu_phoenix.c @@ -353,10 +353,11 @@ struct usb_serial_port *port = urb->context; int result; char *buf_ptr = port->write_urb->transfer_buffer; - *buf_ptr++ = IUU_SET_LED; + if (xmas) { - get_random_bytes(buf_ptr, 6); - *(buf_ptr+7) = 1; + buf_ptr[0] = IUU_SET_LED; + get_random_bytes(buf_ptr + 1, 6); + buf_ptr[7] = 1; } else { iuu_rgbf_fill_buffer(buf_ptr, 255, 255, 0, 0, 0, 0, 255); } @@ -374,13 +375,14 @@ struct usb_serial_port *port = urb->context; int result; char *buf_ptr = port->write_urb->transfer_buffer; + if (xmas) { iuu_rxcmd(urb); return; - } else { - *buf_ptr++ = IUU_SET_LED; - iuu_rgbf_fill_buffer(buf_ptr, 0, 0, 255, 255, 0, 0, 255); } + + iuu_rgbf_fill_buffer(buf_ptr, 0, 0, 255, 255, 0, 0, 255); + usb_fill_bulk_urb(port->write_urb, port->serial->dev, usb_sndbulkpipe(port->serial->dev, port->bulk_out_endpointAddress), @@ -534,23 +536,29 @@ struct device *dev = &port->dev; int i; int status; - u8 rxcmd = IUU_UART_RX; + u8 *rxcmd; struct iuu_private *priv = usb_get_serial_port_data(port); if (iuu_led(port, 0xF000, 0, 0, 0xFF) < 0) return -EIO; + rxcmd = kmalloc(1, GFP_KERNEL); + if (!rxcmd) + return -ENOMEM; + + rxcmd[0] = IUU_UART_RX; + for (i = 0; i < 2; i++) { - status = bulk_immediate(port, &rxcmd, 1); + status = bulk_immediate(port, rxcmd, 1); if (status != IUU_OPERATION_OK) { dev_dbg(dev, "%s - uart_flush_write error\n", __func__); - return status; + goto out_free; } status = read_immediate(port, &priv->len, 1); if (status != IUU_OPERATION_OK) { dev_dbg(dev, "%s - uart_flush_read error\n", __func__); - return status; + goto out_free; } if (priv->len > 0) { @@ -558,12 +566,16 @@ status = read_immediate(port, priv->buf, priv->len); if (status != IUU_OPERATION_OK) { dev_dbg(dev, "%s - uart_flush_read error\n", __func__); - return status; + goto out_free; } } } dev_dbg(dev, "%s - uart_flush_read OK!\n", __func__); iuu_led(port, 0, 0xF000, 0, 0xFF); + +out_free: + kfree(rxcmd); + return status; } --- linux-5.8.0.orig/drivers/usb/serial/keyspan_pda.c +++ linux-5.8.0/drivers/usb/serial/keyspan_pda.c @@ -40,11 +40,12 @@ #define DRIVER_AUTHOR "Brian Warner " #define DRIVER_DESC "USB Keyspan PDA Converter driver" +#define KEYSPAN_TX_THRESHOLD 16 + struct keyspan_pda_private { int tx_room; int tx_throttled; - struct work_struct wakeup_work; - struct work_struct unthrottle_work; + struct work_struct unthrottle_work; struct usb_serial *serial; struct usb_serial_port *port; }; @@ -97,15 +98,6 @@ }; #endif -static void keyspan_pda_wakeup_write(struct work_struct *work) -{ - struct keyspan_pda_private *priv = - container_of(work, struct keyspan_pda_private, wakeup_work); - struct usb_serial_port *port = priv->port; - - tty_port_tty_wakeup(&port->port); -} - static void keyspan_pda_request_unthrottle(struct work_struct *work) { struct keyspan_pda_private *priv = @@ -120,7 +112,7 @@ 7, /* request_unthrottle */ USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT, - 16, /* value: threshold */ + KEYSPAN_TX_THRESHOLD, 0, /* index */ NULL, 0, @@ -139,6 +131,8 @@ int retval; int status = urb->status; struct keyspan_pda_private *priv; + unsigned long flags; + priv = usb_get_serial_port_data(port); switch (status) { @@ -172,18 +166,21 @@ break; case 1: /* status interrupt */ - if (len < 3) { + if (len < 2) { dev_warn(&port->dev, "short interrupt message received\n"); break; } - dev_dbg(&port->dev, "rx int, d1=%d, d2=%d\n", data[1], data[2]); + dev_dbg(&port->dev, "rx int, d1=%d\n", data[1]); switch (data[1]) { case 1: /* modemline change */ break; case 2: /* tx unthrottle interrupt */ + spin_lock_irqsave(&port->lock, flags); priv->tx_throttled = 0; + priv->tx_room = max(priv->tx_room, KEYSPAN_TX_THRESHOLD); + spin_unlock_irqrestore(&port->lock, flags); /* queue up a wakeup at scheduler time */ - schedule_work(&priv->wakeup_work); + usb_serial_port_softint(port); break; default: break; @@ -443,6 +440,7 @@ int request_unthrottle = 0; int rc = 0; struct keyspan_pda_private *priv; + unsigned long flags; priv = usb_get_serial_port_data(port); /* guess how much room is left in the device's ring buffer, and if we @@ -462,13 +460,13 @@ the TX urb is in-flight (wait until it completes) the device is full (wait until it says there is room) */ - spin_lock_bh(&port->lock); + spin_lock_irqsave(&port->lock, flags); if (!test_bit(0, &port->write_urbs_free) || priv->tx_throttled) { - spin_unlock_bh(&port->lock); + spin_unlock_irqrestore(&port->lock, flags); return 0; } clear_bit(0, &port->write_urbs_free); - spin_unlock_bh(&port->lock); + spin_unlock_irqrestore(&port->lock, flags); /* At this point the URB is in our control, nobody else can submit it again (the only sudden transition was the one from EINPROGRESS to @@ -514,7 +512,8 @@ goto exit; } } - if (count > priv->tx_room) { + + if (count >= priv->tx_room) { /* we're about to completely fill the Tx buffer, so we'll be throttled afterwards. */ count = priv->tx_room; @@ -547,7 +546,7 @@ rc = count; exit: - if (rc < 0) + if (rc <= 0) set_bit(0, &port->write_urbs_free); return rc; } @@ -556,27 +555,28 @@ static void keyspan_pda_write_bulk_callback(struct urb *urb) { struct usb_serial_port *port = urb->context; - struct keyspan_pda_private *priv; set_bit(0, &port->write_urbs_free); - priv = usb_get_serial_port_data(port); /* queue up a wakeup at scheduler time */ - schedule_work(&priv->wakeup_work); + usb_serial_port_softint(port); } static int keyspan_pda_write_room(struct tty_struct *tty) { struct usb_serial_port *port = tty->driver_data; - struct keyspan_pda_private *priv; - priv = usb_get_serial_port_data(port); - /* used by n_tty.c for processing of tabs and such. Giving it our - conservative guess is probably good enough, but needs testing by - running a console through the device. */ - return priv->tx_room; -} + struct keyspan_pda_private *priv = usb_get_serial_port_data(port); + unsigned long flags; + int room = 0; + spin_lock_irqsave(&port->lock, flags); + if (test_bit(0, &port->write_urbs_free) && !priv->tx_throttled) + room = priv->tx_room; + spin_unlock_irqrestore(&port->lock, flags); + + return room; +} static int keyspan_pda_chars_in_buffer(struct tty_struct *tty) { @@ -656,8 +656,12 @@ } static void keyspan_pda_close(struct usb_serial_port *port) { + struct keyspan_pda_private *priv = usb_get_serial_port_data(port); + usb_kill_urb(port->write_urb); usb_kill_urb(port->interrupt_in_urb); + + cancel_work_sync(&priv->unthrottle_work); } @@ -715,7 +719,6 @@ if (!priv) return -ENOMEM; - INIT_WORK(&priv->wakeup_work, keyspan_pda_wakeup_write); INIT_WORK(&priv->unthrottle_work, keyspan_pda_request_unthrottle); priv->serial = port->serial; priv->port = port; --- linux-5.8.0.orig/drivers/usb/serial/kl5kusb105.c +++ linux-5.8.0/drivers/usb/serial/kl5kusb105.c @@ -276,12 +276,12 @@ priv->cfg.unknown2 = cfg->unknown2; spin_unlock_irqrestore(&priv->lock, flags); + kfree(cfg); + /* READ_ON and urb submission */ rc = usb_serial_generic_open(tty, port); - if (rc) { - retval = rc; - goto err_free_cfg; - } + if (rc) + return rc; rc = usb_control_msg(port->serial->dev, usb_sndctrlpipe(port->serial->dev, 0), @@ -324,8 +324,6 @@ KLSI_TIMEOUT); err_generic_close: usb_serial_generic_close(port); -err_free_cfg: - kfree(cfg); return retval; } --- linux-5.8.0.orig/drivers/usb/serial/mos7720.c +++ linux-5.8.0/drivers/usb/serial/mos7720.c @@ -638,6 +638,8 @@ spin_unlock(&release_lock); return; } + mos_parport->shadowDCR = s->u.pc.ctr; + mos_parport->shadowECR = s->u.pc.ecr; write_parport_reg_nonblock(mos_parport, MOS7720_DCR, mos_parport->shadowDCR); write_parport_reg_nonblock(mos_parport, MOS7720_ECR, @@ -1248,8 +1250,10 @@ if (urb->transfer_buffer == NULL) { urb->transfer_buffer = kmalloc(URB_TRANSFER_BUFFER_SIZE, GFP_ATOMIC); - if (!urb->transfer_buffer) + if (!urb->transfer_buffer) { + bytes_sent = -ENOMEM; goto exit; + } } transfer_size = min(count, URB_TRANSFER_BUFFER_SIZE); --- linux-5.8.0.orig/drivers/usb/serial/mos7840.c +++ linux-5.8.0/drivers/usb/serial/mos7840.c @@ -883,8 +883,10 @@ if (urb->transfer_buffer == NULL) { urb->transfer_buffer = kmalloc(URB_TRANSFER_BUFFER_SIZE, GFP_ATOMIC); - if (!urb->transfer_buffer) + if (!urb->transfer_buffer) { + bytes_sent = -ENOMEM; goto exit; + } } transfer_size = min(count, URB_TRANSFER_BUFFER_SIZE); --- linux-5.8.0.orig/drivers/usb/serial/option.c +++ linux-5.8.0/drivers/usb/serial/option.c @@ -250,6 +250,7 @@ #define QUECTEL_PRODUCT_EP06 0x0306 #define QUECTEL_PRODUCT_EM12 0x0512 #define QUECTEL_PRODUCT_RM500Q 0x0800 +#define QUECTEL_PRODUCT_EC200T 0x6026 #define CMOTECH_VENDOR_ID 0x16d8 #define CMOTECH_PRODUCT_6001 0x6001 @@ -418,11 +419,14 @@ #define CINTERION_PRODUCT_PH8 0x0053 #define CINTERION_PRODUCT_AHXX 0x0055 #define CINTERION_PRODUCT_PLXX 0x0060 +#define CINTERION_PRODUCT_EXS82 0x006c #define CINTERION_PRODUCT_PH8_2RMNET 0x0082 #define CINTERION_PRODUCT_PH8_AUDIO 0x0083 #define CINTERION_PRODUCT_AHXX_2RMNET 0x0084 #define CINTERION_PRODUCT_AHXX_AUDIO 0x0085 #define CINTERION_PRODUCT_CLS8 0x00b0 +#define CINTERION_PRODUCT_MV31_MBIM 0x00b3 +#define CINTERION_PRODUCT_MV31_RMNET 0x00b7 /* Olivetti products */ #define OLIVETTI_VENDOR_ID 0x0b3c @@ -528,6 +532,7 @@ /* Cellient products */ #define CELLIENT_VENDOR_ID 0x2692 #define CELLIENT_PRODUCT_MEN200 0x9005 +#define CELLIENT_PRODUCT_MPL200 0x9025 /* Hyundai Petatel Inc. products */ #define PETATEL_VENDOR_ID 0x1ff4 @@ -560,6 +565,9 @@ /* Device flags */ +/* Highest interface number which can be used with NCTRL() and RSVD() */ +#define FLAG_IFNUM_MAX 7 + /* Interface does not support modem-control requests */ #define NCTRL(ifnum) ((BIT(ifnum) & 0xff) << 8) @@ -1094,12 +1102,15 @@ { USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M), .driver_info = RSVD(1) | RSVD(3) }, /* Quectel products using Quectel vendor ID */ - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21), - .driver_info = RSVD(4) }, - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25), - .driver_info = RSVD(4) }, - { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95), - .driver_info = RSVD(4) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0xff, 0xff), + .driver_info = NUMEP2 }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff), @@ -1108,10 +1119,13 @@ { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff), .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0xff, 0x30) }, /* EM160R-GL */ + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, 0x0620, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500Q, 0xff, 0xff, 0x10), .driver_info = ZLP }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) }, @@ -1182,6 +1196,10 @@ .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1053, 0xff), /* Telit FN980 (ECM) */ .driver_info = NCTRL(0) | RSVD(1) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1054, 0xff), /* Telit FT980-KS */ + .driver_info = NCTRL(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1055, 0xff), /* Telit FN980 (PCIe) */ + .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM), @@ -1194,6 +1212,8 @@ .driver_info = NCTRL(0) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1203, 0xff), /* Telit LE910Cx (RNDIS) */ + .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), @@ -1208,6 +1228,10 @@ { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1230, 0xff), /* Telit LE910Cx (rmnet) */ + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff), /* Telit LE910Cx (RNDIS) */ + .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x1260), .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) }, { USB_DEVICE(TELIT_VENDOR_ID, 0x1261), @@ -1545,7 +1569,8 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1274, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1275, 0xff, 0xff, 0xff) }, + { USB_DEVICE(ZTE_VENDOR_ID, 0x1275), /* ZTE P685M */ + .driver_info = RSVD(3) | RSVD(4) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1276, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1277, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1278, 0xff, 0xff, 0xff) }, @@ -1819,6 +1844,8 @@ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */ .driver_info = RSVD(7) }, + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9205, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT+ECM mode */ + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9206, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT-only mode */ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) }, { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), @@ -1883,12 +1910,17 @@ { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_AHXX_AUDIO, 0xff) }, { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_CLS8, 0xff), .driver_info = RSVD(0) | RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EXS82, 0xff) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) }, { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) }, { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_MBIM, 0xff), + .driver_info = RSVD(3)}, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff), + .driver_info = RSVD(0)}, { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100), .driver_info = RSVD(4) }, { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120), @@ -1976,6 +2008,8 @@ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) }, { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) }, { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) }, + { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MPL200), + .driver_info = RSVD(1) | RSVD(4) }, { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) }, { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) }, { USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, TPLINK_PRODUCT_LTE, 0xff, 0x00, 0x00) }, /* TP-Link LTE Module */ @@ -2025,12 +2059,14 @@ .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, { USB_DEVICE(0x0489, 0xe0b5), /* Foxconn T77W968 ESIM */ .driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, - { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 */ + { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */ .driver_info = RSVD(4) | RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ .driver_info = RSVD(6) }, + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ @@ -2078,6 +2114,14 @@ module_usb_serial_driver(serial_drivers, option_ids); +static bool iface_is_reserved(unsigned long device_flags, u8 ifnum) +{ + if (ifnum > FLAG_IFNUM_MAX) + return false; + + return device_flags & RSVD(ifnum); +} + static int option_probe(struct usb_serial *serial, const struct usb_device_id *id) { @@ -2094,7 +2138,7 @@ * the same class/subclass/protocol as the serial interfaces. Look at * the Windows driver .INF files for reserved interface numbers. */ - if (device_flags & RSVD(iface_desc->bInterfaceNumber)) + if (iface_is_reserved(device_flags, iface_desc->bInterfaceNumber)) return -ENODEV; /* @@ -2110,6 +2154,14 @@ return 0; } +static bool iface_no_modem_control(unsigned long device_flags, u8 ifnum) +{ + if (ifnum > FLAG_IFNUM_MAX) + return false; + + return device_flags & NCTRL(ifnum); +} + static int option_attach(struct usb_serial *serial) { struct usb_interface_descriptor *iface_desc; @@ -2125,7 +2177,7 @@ iface_desc = &serial->interface->cur_altsetting->desc; - if (!(device_flags & NCTRL(iface_desc->bInterfaceNumber))) + if (!iface_no_modem_control(device_flags, iface_desc->bInterfaceNumber)) data->use_send_setup = 1; if (device_flags & ZLP) --- linux-5.8.0.orig/drivers/usb/serial/pl2303.c +++ linux-5.8.0/drivers/usb/serial/pl2303.c @@ -100,6 +100,7 @@ { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD220TA_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD381_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LD381GC_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD960_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LD960TA_PRODUCT_ID) }, { USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) }, @@ -182,6 +183,7 @@ speed_t max_baud_rate; unsigned long quirks; unsigned int no_autoxonxoff:1; + unsigned int no_divisors:1; }; struct pl2303_serial_private { @@ -208,6 +210,7 @@ }, [TYPE_HXN] = { .max_baud_rate = 12000000, + .no_divisors = true, }, }; @@ -570,8 +573,12 @@ baud = min_t(speed_t, baud, spriv->type->max_baud_rate); /* * Use direct method for supported baud rates, otherwise use divisors. + * Newer chip types do not support divisor encoding. */ - baud_sup = pl2303_get_supported_baud_rate(baud); + if (spriv->type->no_divisors) + baud_sup = baud; + else + baud_sup = pl2303_get_supported_baud_rate(baud); if (baud == baud_sup) baud = pl2303_encode_baud_rate_direct(buf, baud); --- linux-5.8.0.orig/drivers/usb/serial/pl2303.h +++ linux-5.8.0/drivers/usb/serial/pl2303.h @@ -127,6 +127,7 @@ /* Hewlett-Packard POS Pole Displays */ #define HP_VENDOR_ID 0x03f0 +#define HP_LD381GC_PRODUCT_ID 0x0183 #define HP_LM920_PRODUCT_ID 0x026b #define HP_TD620_PRODUCT_ID 0x0956 #define HP_LD960_PRODUCT_ID 0x0b39 --- linux-5.8.0.orig/drivers/usb/serial/qcserial.c +++ linux-5.8.0/drivers/usb/serial/qcserial.c @@ -155,6 +155,7 @@ {DEVICE_SWI(0x1199, 0x9056)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9060)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9061)}, /* Sierra Wireless Modem */ + {DEVICE_SWI(0x1199, 0x9062)}, /* Sierra Wireless EM7305 QDL */ {DEVICE_SWI(0x1199, 0x9063)}, /* Sierra Wireless EM7305 */ {DEVICE_SWI(0x1199, 0x9070)}, /* Sierra Wireless MC74xx */ {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx */ --- linux-5.8.0.orig/drivers/usb/storage/realtek_cr.c +++ linux-5.8.0/drivers/usb/storage/realtek_cr.c @@ -41,6 +41,10 @@ module_param(auto_delink_en, int, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(auto_delink_en, "auto delink mode (0=firmware, 1=software [default])"); +static int enable_mmc = 1; +module_param(enable_mmc, int, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(enable_mmc, "enable mmc support"); + #ifdef CONFIG_REALTEK_AUTOPM static int ss_en = 1; module_param(ss_en, int, S_IRUGO | S_IWUSR); @@ -475,6 +479,27 @@ return 0; } +static int rts51x_lun_is_mmc_xd(struct us_data *us, u8 lun) +{ + struct rts51x_chip *chip = (struct rts51x_chip *)(us->extra); + + if (rts51x_check_status(us, lun)) + return -EIO; + + usb_stor_dbg(us,"cur_lun = 0x%02X\n", chip->status[lun].cur_lun); + usb_stor_dbg(us,"card_type = 0x%02X\n", chip->status[lun].card_type); + usb_stor_dbg(us,"detailed_type1= 0x%02X\n", chip->status[lun].detailed_type.detailed_type1); + switch (chip->status[lun].card_type) { + case 0x4: /* XD */ + return 1; + case 0x2: /* SD/MMC */ + if (chip->status[lun].detailed_type.detailed_type1 & 0x08) + return 1; + default: + return 0; + } +} + static int enable_oscillator(struct us_data *us) { int retval; @@ -850,6 +875,17 @@ chip->proto_handler_backup(srb, us); /* Check whether card is plugged in */ if (srb->cmnd[0] == TEST_UNIT_READY) { + if (!enable_mmc && rts51x_lun_is_mmc_xd(us, srb->device->lun)) { + usb_stor_dbg(us,"%s: lun is mmc/xd\n", __func__); + srb->result = SAM_STAT_CHECK_CONDITION; + memcpy(srb->sense_buffer, + media_not_present, + US_SENSE_SIZE); + CLR_LUN_READY(chip, srb->device->lun); + card_first_show = 1; + return; + } + if (srb->result == SAM_STAT_GOOD) { SET_LUN_READY(chip, srb->device->lun); if (card_first_show) { --- linux-5.8.0.orig/drivers/usb/storage/transport.c +++ linux-5.8.0/drivers/usb/storage/transport.c @@ -651,6 +651,13 @@ need_auto_sense = 1; } + /* Some devices (Kindle) require another command after SYNC CACHE */ + if ((us->fflags & US_FL_SENSE_AFTER_SYNC) && + srb->cmnd[0] == SYNCHRONIZE_CACHE) { + usb_stor_dbg(us, "-- sense after SYNC CACHE\n"); + need_auto_sense = 1; + } + /* * If we have a failure, we're going to do a REQUEST_SENSE * automatically. Note that we differentiate between a command --- linux-5.8.0.orig/drivers/usb/storage/uas.c +++ linux-5.8.0/drivers/usb/storage/uas.c @@ -662,8 +662,7 @@ if (devinfo->resetting) { cmnd->result = DID_ERROR << 16; cmnd->scsi_done(cmnd); - spin_unlock_irqrestore(&devinfo->lock, flags); - return 0; + goto zombie; } /* Find a free uas-tag */ @@ -699,6 +698,16 @@ cmdinfo->state &= ~(SUBMIT_DATA_IN_URB | SUBMIT_DATA_OUT_URB); err = uas_submit_urbs(cmnd, devinfo); + /* + * in case of fatal errors the SCSI layer is peculiar + * a command that has finished is a success for the purpose + * of queueing, no matter how fatal the error + */ + if (err == -ENODEV) { + cmnd->result = DID_ERROR << 16; + cmnd->scsi_done(cmnd); + goto zombie; + } if (err) { /* If we did nothing, give up now */ if (cmdinfo->state & SUBMIT_STATUS_URB) { @@ -709,6 +718,7 @@ } devinfo->cmnd[idx] = cmnd; +zombie: spin_unlock_irqrestore(&devinfo->lock, flags); return 0; } @@ -857,6 +867,9 @@ if (devinfo->flags & US_FL_NO_READ_CAPACITY_16) sdev->no_read_capacity_16 = 1; + /* Some disks cannot handle WRITE_SAME */ + if (devinfo->flags & US_FL_NO_SAME) + sdev->no_write_same = 1; /* * Some disks return the total number of blocks in response * to READ CAPACITY rather than the highest block number. --- linux-5.8.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-5.8.0/drivers/usb/storage/unusual_devs.h @@ -1337,6 +1337,13 @@ USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, 0), +/* Reported by Timo Aaltonen */ +UNUSUAL_DEV( 0x0af0, 0x7011, 0x0000, 0x9999, + "Option", + "Mass Storage", + USB_SC_DEVICE, USB_PR_DEVICE, option_ms_init, + 0 ), + /* * Reported by F. Aben * This device (wrongly) has a vendor-specific device descriptor. @@ -2212,6 +2219,18 @@ US_FL_NO_READ_DISC_INFO ), /* + * Reported by Matthias Schwarzott + * The Amazon Kindle treats SYNCHRONIZE CACHE as an indication that + * the host may be finished with it, and automatically ejects its + * emulated media unless it receives another command within one second. + */ +UNUSUAL_DEV( 0x1949, 0x0004, 0x0000, 0x9999, + "Amazon", + "Kindle", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_SENSE_AFTER_SYNC ), + +/* * Reported by Oliver Neukum * This device morphes spontaneously into another device if the access * pattern of Windows isn't followed. Thus writable media would be dirty @@ -2328,7 +2347,7 @@ "JMicron", "USB to ATA/ATAPI Bridge", USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_BROKEN_FUA ), + US_FL_BROKEN_FUA | US_FL_IGNORE_UAS ), /* Reported by Andrey Rahmatullin */ UNUSUAL_DEV( 0x4102, 0x1020, 0x0100, 0x0100, --- linux-5.8.0.orig/drivers/usb/storage/unusual_uas.h +++ linux-5.8.0/drivers/usb/storage/unusual_uas.h @@ -28,12 +28,22 @@ * and don't forget to CC: the USB development list */ -/* Reported-by: Julian Groß */ +/* Reported-by: Till Dörges */ +UNUSUAL_DEV(0x054c, 0x087d, 0x0000, 0x9999, + "Sony", + "PSZ-HA*", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_REPORT_OPCODES), + +/* + * Initially Reported-by: Julian Groß + * Further reports David C. Partridge + */ UNUSUAL_DEV(0x059f, 0x105f, 0x0000, 0x9999, "LaCie", "2Big Quadra USB3", USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_NO_REPORT_OPCODES), + US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), /* * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI @@ -80,6 +90,20 @@ USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_BROKEN_FUA), +/* Reported-by: Thinh Nguyen */ +UNUSUAL_DEV(0x154b, 0xf00b, 0x0000, 0x9999, + "PNY", + "Pro Elite SSD", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_ATA_1X), + +/* Reported-by: Thinh Nguyen */ +UNUSUAL_DEV(0x154b, 0xf00d, 0x0000, 0x9999, + "PNY", + "Pro Elite SSD", + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_ATA_1X), + /* Reported-by: Hans de Goede */ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, "VIA", --- linux-5.8.0.orig/drivers/usb/storage/usb.c +++ linux-5.8.0/drivers/usb/storage/usb.c @@ -541,6 +541,9 @@ case 'j': f |= US_FL_NO_REPORT_LUNS; break; + case 'k': + f |= US_FL_NO_SAME; + break; case 'l': f |= US_FL_NOT_LOCKABLE; break; --- linux-5.8.0.orig/drivers/usb/typec/altmodes/Kconfig +++ linux-5.8.0/drivers/usb/typec/altmodes/Kconfig @@ -20,6 +20,6 @@ to enable support for VirtualLink devices with NVIDIA GPUs. To compile this driver as a module, choose M here: the - module will be called typec_displayport. + module will be called typec_nvidia. endmenu --- linux-5.8.0.orig/drivers/usb/typec/mux/intel_pmc_mux.c +++ linux-5.8.0/drivers/usb/typec/mux/intel_pmc_mux.c @@ -56,14 +56,11 @@ #define PMC_USB_ALTMODE_ORI_SHIFT 1 #define PMC_USB_ALTMODE_UFP_SHIFT 3 -#define PMC_USB_ALTMODE_ORI_AUX_SHIFT 4 -#define PMC_USB_ALTMODE_ORI_HSL_SHIFT 5 /* DP specific Mode Data bits */ #define PMC_USB_ALTMODE_DP_MODE_SHIFT 8 /* TBT specific Mode Data bits */ -#define PMC_USB_ALTMODE_HPD_HIGH BIT(14) #define PMC_USB_ALTMODE_TBT_TYPE BIT(17) #define PMC_USB_ALTMODE_CABLE_TYPE BIT(18) #define PMC_USB_ALTMODE_ACTIVE_LINK BIT(20) @@ -174,15 +171,9 @@ req.mode_data = (port->orientation - 1) << PMC_USB_ALTMODE_ORI_SHIFT; req.mode_data |= (port->role - 1) << PMC_USB_ALTMODE_UFP_SHIFT; - req.mode_data |= sbu_orientation(port) << PMC_USB_ALTMODE_ORI_AUX_SHIFT; - req.mode_data |= hsl_orientation(port) << PMC_USB_ALTMODE_ORI_HSL_SHIFT; - req.mode_data |= (state->mode - TYPEC_STATE_MODAL) << PMC_USB_ALTMODE_DP_MODE_SHIFT; - if (data->status & DP_STATUS_HPD_STATE) - req.mode_data |= PMC_USB_ALTMODE_HPD_HIGH; - ret = pmc_usb_command(port, (void *)&req, sizeof(req)); if (ret) return ret; @@ -207,9 +198,6 @@ req.mode_data = (port->orientation - 1) << PMC_USB_ALTMODE_ORI_SHIFT; req.mode_data |= (port->role - 1) << PMC_USB_ALTMODE_UFP_SHIFT; - req.mode_data |= sbu_orientation(port) << PMC_USB_ALTMODE_ORI_AUX_SHIFT; - req.mode_data |= hsl_orientation(port) << PMC_USB_ALTMODE_ORI_HSL_SHIFT; - if (TBT_ADAPTER(data->device_mode) == TBT_ADAPTER_TBT3) req.mode_data |= PMC_USB_ALTMODE_TBT_TYPE; @@ -441,6 +429,7 @@ for (i = 0; i < pmc->num_ports; i++) { typec_switch_unregister(pmc->port[i].typec_sw); typec_mux_unregister(pmc->port[i].typec_mux); + usb_role_switch_unregister(pmc->port[i].usb_sw); } return ret; @@ -454,6 +443,7 @@ for (i = 0; i < pmc->num_ports; i++) { typec_switch_unregister(pmc->port[i].typec_sw); typec_mux_unregister(pmc->port[i].typec_mux); + usb_role_switch_unregister(pmc->port[i].usb_sw); } return 0; --- linux-5.8.0.orig/drivers/usb/typec/tcpm/tcpm.c +++ linux-5.8.0/drivers/usb/typec/tcpm/tcpm.c @@ -738,6 +738,7 @@ port->supply_voltage = mv; port->current_limit = max_ma; + power_supply_changed(port->psy); if (port->tcpc->set_current_limit) ret = port->tcpc->set_current_limit(port->tcpc, max_ma, mv); @@ -2157,6 +2158,7 @@ port->pps_data.supported = false; port->usb_type = POWER_SUPPLY_USB_TYPE_PD; + power_supply_changed(port->psy); /* * Select the source PDO providing the most power which has a @@ -2181,6 +2183,7 @@ port->pps_data.supported = true; port->usb_type = POWER_SUPPLY_USB_TYPE_PD_PPS; + power_supply_changed(port->psy); } continue; default: @@ -2338,6 +2341,7 @@ port->pps_data.out_volt)); port->pps_data.op_curr = min(port->pps_data.max_curr, port->pps_data.op_curr); + power_supply_changed(port->psy); } return src_pdo; @@ -2573,6 +2577,7 @@ return ret; } port->vbus_charge = charge; + power_supply_changed(port->psy); return 0; } @@ -2743,12 +2748,12 @@ static void tcpm_detach(struct tcpm_port *port) { - if (!port->attached) - return; - if (tcpm_port_is_disconnected(port)) port->hard_reset_count = 0; + if (!port->attached) + return; + tcpm_reset_port(port); } @@ -3321,13 +3326,31 @@ tcpm_set_state(port, SNK_HARD_RESET_SINK_OFF, 0); break; case SRC_HARD_RESET_VBUS_OFF: - tcpm_set_vconn(port, true); + /* + * 7.1.5 Response to Hard Resets + * Hard Reset Signaling indicates a communication failure has occurred and the + * Source Shall stop driving VCONN, Shall remove Rp from the VCONN pin and Shall + * drive VBUS to vSafe0V as shown in Figure 7-9. + */ + tcpm_set_vconn(port, false); tcpm_set_vbus(port, false); tcpm_set_roles(port, port->self_powered, TYPEC_SOURCE, tcpm_data_role_for_source(port)); - tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); + /* + * If tcpc fails to notify vbus off, TCPM will wait for PD_T_SAFE_0V + + * PD_T_SRC_RECOVER before turning vbus back on. + * From Table 7-12 Sequence Description for a Source Initiated Hard Reset: + * 4. Policy Engine waits tPSHardReset after sending Hard Reset Signaling and then + * tells the Device Policy Manager to instruct the power supply to perform a + * Hard Reset. The transition to vSafe0V Shall occur within tSafe0V (t2). + * 5. After tSrcRecover the Source applies power to VBUS in an attempt to + * re-establish communication with the Sink and resume USB Default Operation. + * The transition to vSafe5V Shall occur within tSrcTurnOn(t4). + */ + tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SAFE_0V + PD_T_SRC_RECOVER); break; case SRC_HARD_RESET_VBUS_ON: + tcpm_set_vconn(port, true); tcpm_set_vbus(port, true); port->tcpc->set_pd_rx(port->tcpc, true); tcpm_set_attached_state(port, true); @@ -3504,7 +3527,7 @@ */ tcpm_set_pwr_role(port, TYPEC_SOURCE); tcpm_pd_send_control(port, PD_CTRL_PS_RDY); - tcpm_set_state(port, SRC_STARTUP, 0); + tcpm_set_state(port, SRC_STARTUP, PD_T_SWAP_SRC_START); break; case VCONN_SWAP_ACCEPT: @@ -3887,7 +3910,11 @@ tcpm_set_state(port, SNK_HARD_RESET_WAIT_VBUS, 0); break; case SRC_HARD_RESET_VBUS_OFF: - tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, 0); + /* + * After establishing the vSafe0V voltage condition on VBUS, the Source Shall wait + * tSrcRecover before re-applying VCONN and restoring VBUS to vSafe5V. + */ + tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); break; case HARD_RESET_SEND: break; @@ -4667,7 +4694,7 @@ ret = -EINVAL; break; } - + power_supply_changed(port->psy); return ret; } @@ -4786,6 +4813,7 @@ err = devm_tcpm_psy_register(port); if (err) goto out_role_sw_put; + power_supply_changed(port->psy); port->typec_port = typec_register_port(port->dev, &port->typec_caps); if (IS_ERR(port->typec_port)) { --- linux-5.8.0.orig/drivers/usb/typec/tps6598x.c +++ linux-5.8.0/drivers/usb/typec/tps6598x.c @@ -62,7 +62,6 @@ struct tps6598x_rx_identity_reg { u8 status; struct usb_pd_identity identity; - u32 vdo[3]; } __packed; /* Standard Task return codes */ --- linux-5.8.0.orig/drivers/usb/typec/ucsi/displayport.c +++ linux-5.8.0/drivers/usb/typec/ucsi/displayport.c @@ -288,8 +288,6 @@ struct typec_altmode *alt; struct ucsi_dp *dp; - mutex_lock(&con->lock); - /* We can't rely on the firmware with the capabilities. */ desc->vdo |= DP_CAP_DP_SIGNALING | DP_CAP_RECEPTACLE; @@ -298,15 +296,12 @@ desc->vdo |= all_assignments << 16; alt = typec_port_register_altmode(con->port, desc); - if (IS_ERR(alt)) { - mutex_unlock(&con->lock); + if (IS_ERR(alt)) return alt; - } dp = devm_kzalloc(&alt->dev, sizeof(*dp), GFP_KERNEL); if (!dp) { typec_unregister_altmode(alt); - mutex_unlock(&con->lock); return ERR_PTR(-ENOMEM); } @@ -319,7 +314,5 @@ alt->ops = &ucsi_displayport_ops; typec_altmode_set_drvdata(alt, dp); - mutex_unlock(&con->lock); - return alt; } --- linux-5.8.0.orig/drivers/usb/typec/ucsi/psy.c +++ linux-5.8.0/drivers/usb/typec/ucsi/psy.c @@ -238,4 +238,13 @@ return; power_supply_unregister(con->psy); + con->psy = NULL; +} + +void ucsi_port_psy_changed(struct ucsi_connector *con) +{ + if (IS_ERR_OR_NULL(con->psy)) + return; + + power_supply_changed(con->psy); } --- linux-5.8.0.orig/drivers/usb/typec/ucsi/ucsi.c +++ linux-5.8.0/drivers/usb/typec/ucsi/ucsi.c @@ -146,40 +146,33 @@ return UCSI_CCI_LENGTH(cci); } -static int ucsi_run_command(struct ucsi *ucsi, u64 command, - void *data, size_t size) +int ucsi_send_command(struct ucsi *ucsi, u64 command, + void *data, size_t size) { u8 length; int ret; + mutex_lock(&ucsi->ppm_lock); + ret = ucsi_exec_command(ucsi, command); if (ret < 0) - return ret; + goto out; length = ret; if (data) { ret = ucsi->ops->read(ucsi, UCSI_MESSAGE_IN, data, size); if (ret) - return ret; + goto out; } ret = ucsi_acknowledge_command(ucsi); if (ret) - return ret; - - return length; -} + goto out; -int ucsi_send_command(struct ucsi *ucsi, u64 command, - void *retval, size_t size) -{ - int ret; - - mutex_lock(&ucsi->ppm_lock); - ret = ucsi_run_command(ucsi, command, retval, size); + ret = length; +out: mutex_unlock(&ucsi->ppm_lock); - return ret; } EXPORT_SYMBOL_GPL(ucsi_send_command); @@ -205,7 +198,7 @@ int i; command = UCSI_GET_CURRENT_CAM | UCSI_CONNECTOR_NUMBER(con->num); - ret = ucsi_run_command(con->ucsi, command, &cur, sizeof(cur)); + ret = ucsi_send_command(con->ucsi, command, &cur, sizeof(cur)); if (ret < 0) { if (con->ucsi->version > 0x0100) { dev_err(con->ucsi->dev, @@ -223,14 +216,18 @@ con->partner_altmode[i] == altmode); } -static u8 ucsi_altmode_next_mode(struct typec_altmode **alt, u16 svid) +static int ucsi_altmode_next_mode(struct typec_altmode **alt, u16 svid) { u8 mode = 1; int i; - for (i = 0; alt[i]; i++) + for (i = 0; alt[i]; i++) { + if (i > MODE_DISCOVERY_MAX) + return -ERANGE; + if (alt[i]->svid == svid) mode++; + } return mode; } @@ -265,8 +262,11 @@ goto err; } - desc->mode = ucsi_altmode_next_mode(con->port_altmode, - desc->svid); + ret = ucsi_altmode_next_mode(con->port_altmode, desc->svid); + if (ret < 0) + return ret; + + desc->mode = ret; switch (desc->svid) { case USB_TYPEC_DP_SID: @@ -299,8 +299,11 @@ goto err; } - desc->mode = ucsi_altmode_next_mode(con->partner_altmode, - desc->svid); + ret = ucsi_altmode_next_mode(con->partner_altmode, desc->svid); + if (ret < 0) + return ret; + + desc->mode = ret; alt = typec_partner_register_altmode(con->partner, desc); if (IS_ERR(alt)) { @@ -354,7 +357,7 @@ command |= UCSI_GET_ALTMODE_RECIPIENT(recipient); command |= UCSI_GET_ALTMODE_CONNECTOR_NUMBER(con->num); command |= UCSI_GET_ALTMODE_OFFSET(i); - len = ucsi_run_command(con->ucsi, command, &alt, sizeof(alt)); + len = ucsi_send_command(con->ucsi, command, &alt, sizeof(alt)); /* * We are collecting all altmodes first and then registering. * Some type-C device will return zero length data beyond last @@ -431,7 +434,7 @@ command |= UCSI_GET_ALTMODE_RECIPIENT(recipient); command |= UCSI_GET_ALTMODE_CONNECTOR_NUMBER(con->num); command |= UCSI_GET_ALTMODE_OFFSET(i); - len = ucsi_run_command(con->ucsi, command, alt, sizeof(alt)); + len = ucsi_send_command(con->ucsi, command, alt, sizeof(alt)); if (len <= 0) return len; @@ -502,7 +505,7 @@ command |= UCSI_GET_PDOS_PARTNER_PDO(is_partner); command |= UCSI_GET_PDOS_NUM_PDOS(UCSI_MAX_PDOS - 1); command |= UCSI_GET_PDOS_SRC_PDOS; - ret = ucsi_run_command(ucsi, command, con->src_pdos, + ret = ucsi_send_command(ucsi, command, con->src_pdos, sizeof(con->src_pdos)); if (ret < 0) { dev_err(ucsi->dev, "UCSI_GET_PDOS failed (%d)\n", ret); @@ -640,8 +643,10 @@ role = !!(con->status.flags & UCSI_CONSTAT_PWR_DIR); if (con->status.change & UCSI_CONSTAT_POWER_OPMODE_CHANGE || - con->status.change & UCSI_CONSTAT_POWER_LEVEL_CHANGE) + con->status.change & UCSI_CONSTAT_POWER_LEVEL_CHANGE) { ucsi_pwr_opmode_change(con); + ucsi_port_psy_changed(con); + } if (con->status.change & UCSI_CONSTAT_POWER_DIR_CHANGE) { typec_set_pwr_role(con->port, role); @@ -671,6 +676,8 @@ ucsi_register_partner(con); else ucsi_unregister_partner(con); + + ucsi_port_psy_changed(con); } if (con->status.change & UCSI_CONSTAT_CAM_CHANGE) { @@ -681,7 +688,7 @@ */ command = UCSI_GET_CAM_SUPPORTED; command |= UCSI_CONNECTOR_NUMBER(con->num); - ucsi_run_command(con->ucsi, command, NULL, 0); + ucsi_send_command(con->ucsi, command, NULL, 0); } if (con->status.change & UCSI_CONSTAT_PARTNER_CHANGE) @@ -736,20 +743,24 @@ u32 cci; int ret; + mutex_lock(&ucsi->ppm_lock); + ret = ucsi->ops->async_write(ucsi, UCSI_CONTROL, &command, sizeof(command)); if (ret < 0) - return ret; + goto out; tmo = jiffies + msecs_to_jiffies(UCSI_TIMEOUT_MS); do { - if (time_is_before_jiffies(tmo)) - return -ETIMEDOUT; + if (time_is_before_jiffies(tmo)) { + ret = -ETIMEDOUT; + goto out; + } ret = ucsi->ops->read(ucsi, UCSI_CCI, &cci, sizeof(cci)); if (ret) - return ret; + goto out; /* If the PPM is still doing something else, reset it again. */ if (cci & ~UCSI_CCI_RESET_COMPLETE) { @@ -757,13 +768,15 @@ &command, sizeof(command)); if (ret < 0) - return ret; + goto out; } msleep(20); } while (!(cci & UCSI_CCI_RESET_COMPLETE)); - return 0; +out: + mutex_unlock(&ucsi->ppm_lock); + return ret; } static int ucsi_role_cmd(struct ucsi_connector *con, u64 command) @@ -775,9 +788,7 @@ u64 c; /* PPM most likely stopped responding. Resetting everything. */ - mutex_lock(&con->ucsi->ppm_lock); ucsi_reset_ppm(con->ucsi); - mutex_unlock(&con->ucsi->ppm_lock); c = UCSI_SET_NOTIFICATION_ENABLE | con->ucsi->ntfy; ucsi_send_command(con->ucsi, c, NULL, 0); @@ -901,12 +912,15 @@ con->num = index + 1; con->ucsi = ucsi; + /* Delay other interactions with the con until registration is complete */ + mutex_lock(&con->lock); + /* Get connector capability */ command = UCSI_GET_CONNECTOR_CAPABILITY; command |= UCSI_CONNECTOR_NUMBER(con->num); - ret = ucsi_run_command(ucsi, command, &con->cap, sizeof(con->cap)); + ret = ucsi_send_command(ucsi, command, &con->cap, sizeof(con->cap)); if (ret < 0) - return ret; + goto out; if (con->cap.op_mode & UCSI_CONCAP_OPMODE_DRP) cap->data = TYPEC_PORT_DRD; @@ -938,27 +952,32 @@ ret = ucsi_register_port_psy(con); if (ret) - return ret; + goto out; /* Register the connector */ con->port = typec_register_port(ucsi->dev, cap); - if (IS_ERR(con->port)) - return PTR_ERR(con->port); + if (IS_ERR(con->port)) { + ret = PTR_ERR(con->port); + goto out; + } /* Alternate modes */ ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_CON); - if (ret) + if (ret) { dev_err(ucsi->dev, "con%d: failed to register alt modes\n", con->num); + goto out; + } /* Get the status */ command = UCSI_GET_CONNECTOR_STATUS | UCSI_CONNECTOR_NUMBER(con->num); - ret = ucsi_run_command(ucsi, command, &con->status, - sizeof(con->status)); + ret = ucsi_send_command(ucsi, command, &con->status, sizeof(con->status)); if (ret < 0) { dev_err(ucsi->dev, "con%d: failed to get status\n", con->num); - return 0; + ret = 0; + goto out; } + ret = 0; /* ucsi_send_command() returns length on success */ switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) { case UCSI_CONSTAT_PARTNER_TYPE_UFP: @@ -979,21 +998,26 @@ !!(con->status.flags & UCSI_CONSTAT_PWR_DIR)); ucsi_pwr_opmode_change(con); ucsi_register_partner(con); + ucsi_port_psy_changed(con); } if (con->partner) { ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_SOP); - if (ret) + if (ret) { dev_err(ucsi->dev, "con%d: failed to register alternate modes\n", con->num); - else + ret = 0; + } else { ucsi_altmode_update_active(con); + } } trace_ucsi_register_port(con->num, &con->status); - return 0; +out: + mutex_unlock(&con->lock); + return ret; } /** @@ -1009,8 +1033,6 @@ int ret; int i; - mutex_lock(&ucsi->ppm_lock); - /* Reset the PPM */ ret = ucsi_reset_ppm(ucsi); if (ret) { @@ -1021,13 +1043,13 @@ /* Enable basic notifications */ ucsi->ntfy = UCSI_ENABLE_NTFY_CMD_COMPLETE | UCSI_ENABLE_NTFY_ERROR; command = UCSI_SET_NOTIFICATION_ENABLE | ucsi->ntfy; - ret = ucsi_run_command(ucsi, command, NULL, 0); + ret = ucsi_send_command(ucsi, command, NULL, 0); if (ret < 0) goto err_reset; /* Get PPM capabilities */ command = UCSI_GET_CAPABILITY; - ret = ucsi_run_command(ucsi, command, &ucsi->cap, sizeof(ucsi->cap)); + ret = ucsi_send_command(ucsi, command, &ucsi->cap, sizeof(ucsi->cap)); if (ret < 0) goto err_reset; @@ -1054,12 +1076,10 @@ /* Enable all notifications */ ucsi->ntfy = UCSI_ENABLE_NTFY_ALL; command = UCSI_SET_NOTIFICATION_ENABLE | ucsi->ntfy; - ret = ucsi_run_command(ucsi, command, NULL, 0); + ret = ucsi_send_command(ucsi, command, NULL, 0); if (ret < 0) goto err_unregister; - mutex_unlock(&ucsi->ppm_lock); - return 0; err_unregister: @@ -1074,8 +1094,6 @@ err_reset: ucsi_reset_ppm(ucsi); err: - mutex_unlock(&ucsi->ppm_lock); - return ret; } EXPORT_SYMBOL_GPL(ucsi_init); --- linux-5.8.0.orig/drivers/usb/typec/ucsi/ucsi.h +++ linux-5.8.0/drivers/usb/typec/ucsi/ucsi.h @@ -340,9 +340,11 @@ #if IS_ENABLED(CONFIG_POWER_SUPPLY) int ucsi_register_port_psy(struct ucsi_connector *con); void ucsi_unregister_port_psy(struct ucsi_connector *con); +void ucsi_port_psy_changed(struct ucsi_connector *con); #else static inline int ucsi_register_port_psy(struct ucsi_connector *con) { return 0; } static inline void ucsi_unregister_port_psy(struct ucsi_connector *con) { } +static inline void ucsi_port_psy_changed(struct ucsi_connector *con) { } #endif /* CONFIG_POWER_SUPPLY */ #if IS_ENABLED(CONFIG_TYPEC_DP_ALTMODE) --- linux-5.8.0.orig/drivers/usb/typec/ucsi/ucsi_acpi.c +++ linux-5.8.0/drivers/usb/typec/ucsi/ucsi_acpi.c @@ -78,7 +78,7 @@ if (ret) goto out_clear_bit; - if (!wait_for_completion_timeout(&ua->complete, msecs_to_jiffies(5000))) + if (!wait_for_completion_timeout(&ua->complete, 60 * HZ)) ret = -ETIMEDOUT; out_clear_bit: @@ -112,11 +112,15 @@ static int ucsi_acpi_probe(struct platform_device *pdev) { + struct acpi_device *adev = ACPI_COMPANION(&pdev->dev); struct ucsi_acpi *ua; struct resource *res; acpi_status status; int ret; + if (adev->dep_unmet) + return -EPROBE_DEFER; + ua = devm_kzalloc(&pdev->dev, sizeof(*ua), GFP_KERNEL); if (!ua) return -ENOMEM; --- linux-5.8.0.orig/drivers/usb/usbip/stub_dev.c +++ linux-5.8.0/drivers/usb/usbip/stub_dev.c @@ -46,6 +46,8 @@ int sockfd = 0; struct socket *socket; int rv; + struct task_struct *tcp_rx = NULL; + struct task_struct *tcp_tx = NULL; if (!sdev) { dev_err(dev, "sdev is null\n"); @@ -69,23 +71,47 @@ } socket = sockfd_lookup(sockfd, &err); - if (!socket) + if (!socket) { + dev_err(dev, "failed to lookup sock"); goto err; + } - sdev->ud.tcp_socket = socket; - sdev->ud.sockfd = sockfd; + if (socket->type != SOCK_STREAM) { + dev_err(dev, "Expecting SOCK_STREAM - found %d", + socket->type); + goto sock_err; + } + /* unlock and create threads and get tasks */ spin_unlock_irq(&sdev->ud.lock); + tcp_rx = kthread_create(stub_rx_loop, &sdev->ud, "stub_rx"); + if (IS_ERR(tcp_rx)) { + sockfd_put(socket); + return -EINVAL; + } + tcp_tx = kthread_create(stub_tx_loop, &sdev->ud, "stub_tx"); + if (IS_ERR(tcp_tx)) { + kthread_stop(tcp_rx); + sockfd_put(socket); + return -EINVAL; + } - sdev->ud.tcp_rx = kthread_get_run(stub_rx_loop, &sdev->ud, - "stub_rx"); - sdev->ud.tcp_tx = kthread_get_run(stub_tx_loop, &sdev->ud, - "stub_tx"); + /* get task structs now */ + get_task_struct(tcp_rx); + get_task_struct(tcp_tx); + /* lock and update sdev->ud state */ spin_lock_irq(&sdev->ud.lock); + sdev->ud.tcp_socket = socket; + sdev->ud.sockfd = sockfd; + sdev->ud.tcp_rx = tcp_rx; + sdev->ud.tcp_tx = tcp_tx; sdev->ud.status = SDEV_ST_USED; spin_unlock_irq(&sdev->ud.lock); + wake_up_process(sdev->ud.tcp_rx); + wake_up_process(sdev->ud.tcp_tx); + } else { dev_info(dev, "stub down\n"); @@ -100,6 +126,8 @@ return count; +sock_err: + sockfd_put(socket); err: spin_unlock_irq(&sdev->ud.lock); return -EINVAL; --- linux-5.8.0.orig/drivers/usb/usbip/vhci_hcd.c +++ linux-5.8.0/drivers/usb/usbip/vhci_hcd.c @@ -396,6 +396,8 @@ default: usbip_dbg_vhci_rh(" ClearPortFeature: default %x\n", wValue); + if (wValue >= 32) + goto error; vhci_hcd->port_status[rhport] &= ~(1 << wValue); break; } @@ -593,6 +595,8 @@ pr_err("invalid port number %d\n", wIndex); goto error; } + if (wValue >= 32) + goto error; if (hcd->speed == HCD_USB3) { if ((vhci_hcd->port_status[rhport] & USB_SS_PORT_STAT_POWER) != 0) { --- linux-5.8.0.orig/drivers/usb/usbip/vhci_sysfs.c +++ linux-5.8.0/drivers/usb/usbip/vhci_sysfs.c @@ -312,6 +312,8 @@ struct vhci *vhci; int err; unsigned long flags; + struct task_struct *tcp_rx = NULL; + struct task_struct *tcp_tx = NULL; /* * @rhport: port number of vhci_hcd @@ -349,12 +351,35 @@ /* Extract socket from fd. */ socket = sockfd_lookup(sockfd, &err); - if (!socket) + if (!socket) { + dev_err(dev, "failed to lookup sock"); return -EINVAL; + } + if (socket->type != SOCK_STREAM) { + dev_err(dev, "Expecting SOCK_STREAM - found %d", + socket->type); + sockfd_put(socket); + return -EINVAL; + } + + /* create threads before locking */ + tcp_rx = kthread_create(vhci_rx_loop, &vdev->ud, "vhci_rx"); + if (IS_ERR(tcp_rx)) { + sockfd_put(socket); + return -EINVAL; + } + tcp_tx = kthread_create(vhci_tx_loop, &vdev->ud, "vhci_tx"); + if (IS_ERR(tcp_tx)) { + kthread_stop(tcp_rx); + sockfd_put(socket); + return -EINVAL; + } - /* now need lock until setting vdev status as used */ + /* get task structs now */ + get_task_struct(tcp_rx); + get_task_struct(tcp_tx); - /* begin a lock */ + /* now begin lock until setting vdev status set */ spin_lock_irqsave(&vhci->lock, flags); spin_lock(&vdev->ud.lock); @@ -364,6 +389,8 @@ spin_unlock_irqrestore(&vhci->lock, flags); sockfd_put(socket); + kthread_stop_put(tcp_rx); + kthread_stop_put(tcp_tx); dev_err(dev, "port %d already used\n", rhport); /* @@ -382,14 +409,16 @@ vdev->speed = speed; vdev->ud.sockfd = sockfd; vdev->ud.tcp_socket = socket; + vdev->ud.tcp_rx = tcp_rx; + vdev->ud.tcp_tx = tcp_tx; vdev->ud.status = VDEV_ST_NOTASSIGNED; spin_unlock(&vdev->ud.lock); spin_unlock_irqrestore(&vhci->lock, flags); /* end the lock */ - vdev->ud.tcp_rx = kthread_get_run(vhci_rx_loop, &vdev->ud, "vhci_rx"); - vdev->ud.tcp_tx = kthread_get_run(vhci_tx_loop, &vdev->ud, "vhci_tx"); + wake_up_process(vdev->ud.tcp_rx); + wake_up_process(vdev->ud.tcp_tx); rh_port_connect(vdev, speed); --- linux-5.8.0.orig/drivers/usb/usbip/vudc_sysfs.c +++ linux-5.8.0/drivers/usb/usbip/vudc_sysfs.c @@ -90,8 +90,9 @@ } static BIN_ATTR_RO(dev_desc, sizeof(struct usb_device_descriptor)); -static ssize_t usbip_sockfd_store(struct device *dev, struct device_attribute *attr, - const char *in, size_t count) +static ssize_t usbip_sockfd_store(struct device *dev, + struct device_attribute *attr, + const char *in, size_t count) { struct vudc *udc = (struct vudc *) dev_get_drvdata(dev); int rv; @@ -100,6 +101,8 @@ struct socket *socket; unsigned long flags; int ret; + struct task_struct *tcp_rx = NULL; + struct task_struct *tcp_tx = NULL; rv = kstrtoint(in, 0, &sockfd); if (rv != 0) @@ -138,24 +141,54 @@ goto unlock_ud; } - udc->ud.tcp_socket = socket; + if (socket->type != SOCK_STREAM) { + dev_err(dev, "Expecting SOCK_STREAM - found %d", + socket->type); + ret = -EINVAL; + goto sock_err; + } + /* unlock and create threads and get tasks */ spin_unlock_irq(&udc->ud.lock); spin_unlock_irqrestore(&udc->lock, flags); - udc->ud.tcp_rx = kthread_get_run(&v_rx_loop, - &udc->ud, "vudc_rx"); - udc->ud.tcp_tx = kthread_get_run(&v_tx_loop, - &udc->ud, "vudc_tx"); + tcp_rx = kthread_create(&v_rx_loop, &udc->ud, "vudc_rx"); + if (IS_ERR(tcp_rx)) { + sockfd_put(socket); + return -EINVAL; + } + tcp_tx = kthread_create(&v_tx_loop, &udc->ud, "vudc_tx"); + if (IS_ERR(tcp_tx)) { + kthread_stop(tcp_rx); + sockfd_put(socket); + return -EINVAL; + } + + /* get task structs now */ + get_task_struct(tcp_rx); + get_task_struct(tcp_tx); + /* lock and update udc->ud state */ spin_lock_irqsave(&udc->lock, flags); spin_lock_irq(&udc->ud.lock); + + udc->ud.tcp_socket = socket; + udc->ud.tcp_rx = tcp_rx; + udc->ud.tcp_tx = tcp_tx; udc->ud.status = SDEV_ST_USED; + spin_unlock_irq(&udc->ud.lock); ktime_get_ts64(&udc->start_time); v_start_timer(udc); udc->connected = 1; + + spin_unlock_irqrestore(&udc->lock, flags); + + wake_up_process(udc->ud.tcp_rx); + wake_up_process(udc->ud.tcp_tx); + return count; + } else { if (!udc->connected) { dev_err(dev, "Device not connected"); @@ -177,6 +210,8 @@ return count; +sock_err: + sockfd_put(socket); unlock_ud: spin_unlock_irq(&udc->ud.lock); unlock: --- linux-5.8.0.orig/drivers/vdpa/Kconfig +++ linux-5.8.0/drivers/vdpa/Kconfig @@ -12,6 +12,7 @@ tristate "vDPA device simulator" depends on RUNTIME_TESTING_MENU && HAS_DMA select VHOST_RING + select GENERIC_NET_UTILS default n help vDPA networking device simulator which loop TX traffic back --- linux-5.8.0.orig/drivers/vdpa/ifcvf/ifcvf_base.h +++ linux-5.8.0/drivers/vdpa/ifcvf/ifcvf_base.h @@ -84,7 +84,7 @@ void __iomem * const *base; char config_msix_name[256]; struct vdpa_callback config_cb; - + unsigned int config_irq; }; struct ifcvf_adapter { --- linux-5.8.0.orig/drivers/vdpa/ifcvf/ifcvf_main.c +++ linux-5.8.0/drivers/vdpa/ifcvf/ifcvf_main.c @@ -53,6 +53,7 @@ for (i = 0; i < queues; i++) devm_free_irq(&pdev->dev, vf->vring[i].irq, &vf->vring[i]); + devm_free_irq(&pdev->dev, vf->config_irq, vf); ifcvf_free_irq_vectors(pdev); } @@ -72,10 +73,14 @@ snprintf(vf->config_msix_name, 256, "ifcvf[%s]-config\n", pci_name(pdev)); vector = 0; - irq = pci_irq_vector(pdev, vector); - ret = devm_request_irq(&pdev->dev, irq, + vf->config_irq = pci_irq_vector(pdev, vector); + ret = devm_request_irq(&pdev->dev, vf->config_irq, ifcvf_config_changed, 0, vf->config_msix_name, vf); + if (ret) { + IFCVF_ERR(pdev, "Failed to request config irq\n"); + return ret; + } for (i = 0; i < IFCVF_MAX_QUEUE_PAIRS * 2; i++) { snprintf(vf->vring[i].msix_name, 256, "ifcvf[%s]-%d\n", --- linux-5.8.0.orig/drivers/vdpa/vdpa_sim/vdpa_sim.c +++ linux-5.8.0/drivers/vdpa/vdpa_sim/vdpa_sim.c @@ -70,6 +70,8 @@ u32 status; u32 generation; u64 features; + /* spinlock to synchronize iommu table */ + spinlock_t iommu_lock; }; static struct vdpasim *vdpasim_dev; @@ -118,7 +120,9 @@ for (i = 0; i < VDPASIM_VQ_NUM; i++) vdpasim_vq_reset(&vdpasim->vqs[i]); + spin_lock(&vdpasim->iommu_lock); vhost_iotlb_reset(vdpasim->iommu); + spin_unlock(&vdpasim->iommu_lock); vdpasim->features = 0; vdpasim->status = 0; @@ -236,8 +240,10 @@ /* For simplicity, use identical mapping to avoid e.g iova * allocator. */ + spin_lock(&vdpasim->iommu_lock); ret = vhost_iotlb_add_range(iommu, pa, pa + size - 1, pa, dir_to_perm(dir)); + spin_unlock(&vdpasim->iommu_lock); if (ret) return DMA_MAPPING_ERROR; @@ -251,8 +257,10 @@ struct vdpasim *vdpasim = dev_to_sim(dev); struct vhost_iotlb *iommu = vdpasim->iommu; + spin_lock(&vdpasim->iommu_lock); vhost_iotlb_del_range(iommu, (u64)dma_addr, (u64)dma_addr + size - 1); + spin_unlock(&vdpasim->iommu_lock); } static void *vdpasim_alloc_coherent(struct device *dev, size_t size, @@ -264,9 +272,10 @@ void *addr = kmalloc(size, flag); int ret; - if (!addr) + spin_lock(&vdpasim->iommu_lock); + if (!addr) { *dma_addr = DMA_MAPPING_ERROR; - else { + } else { u64 pa = virt_to_phys(addr); ret = vhost_iotlb_add_range(iommu, (u64)pa, @@ -279,6 +288,7 @@ } else *dma_addr = (dma_addr_t)pa; } + spin_unlock(&vdpasim->iommu_lock); return addr; } @@ -290,8 +300,11 @@ struct vdpasim *vdpasim = dev_to_sim(dev); struct vhost_iotlb *iommu = vdpasim->iommu; + spin_lock(&vdpasim->iommu_lock); vhost_iotlb_del_range(iommu, (u64)dma_addr, (u64)dma_addr + size - 1); + spin_unlock(&vdpasim->iommu_lock); + kfree(phys_to_virt((uintptr_t)dma_addr)); } @@ -318,9 +331,12 @@ INIT_WORK(&vdpasim->work, vdpasim_work); spin_lock_init(&vdpasim->lock); + spin_lock_init(&vdpasim->iommu_lock); dev = &vdpasim->vdpa.dev; - dev->coherent_dma_mask = DMA_BIT_MASK(64); + dev->dma_mask = &dev->coherent_dma_mask; + if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))) + goto err_iommu; set_dma_ops(dev, &vdpasim_dma_ops); vdpasim->iommu = vhost_iotlb_alloc(2048, 0); @@ -508,7 +524,7 @@ struct vdpasim *vdpasim = vdpa_to_sim(vdpa); if (offset + len < sizeof(struct virtio_net_config)) - memcpy(buf, &vdpasim->config + offset, len); + memcpy(buf, (u8 *)&vdpasim->config + offset, len); } static void vdpasim_set_config(struct vdpa_device *vdpa, unsigned int offset, @@ -532,6 +548,7 @@ u64 start = 0ULL, last = 0ULL - 1; int ret; + spin_lock(&vdpasim->iommu_lock); vhost_iotlb_reset(vdpasim->iommu); for (map = vhost_iotlb_itree_first(iotlb, start, last); map; @@ -541,10 +558,12 @@ if (ret) goto err; } + spin_unlock(&vdpasim->iommu_lock); return 0; err: vhost_iotlb_reset(vdpasim->iommu); + spin_unlock(&vdpasim->iommu_lock); return ret; } @@ -552,16 +571,23 @@ u64 pa, u32 perm) { struct vdpasim *vdpasim = vdpa_to_sim(vdpa); + int ret; - return vhost_iotlb_add_range(vdpasim->iommu, iova, - iova + size - 1, pa, perm); + spin_lock(&vdpasim->iommu_lock); + ret = vhost_iotlb_add_range(vdpasim->iommu, iova, iova + size - 1, pa, + perm); + spin_unlock(&vdpasim->iommu_lock); + + return ret; } static int vdpasim_dma_unmap(struct vdpa_device *vdpa, u64 iova, u64 size) { struct vdpasim *vdpasim = vdpa_to_sim(vdpa); + spin_lock(&vdpasim->iommu_lock); vhost_iotlb_del_range(vdpasim->iommu, iova, iova + size - 1); + spin_unlock(&vdpasim->iommu_lock); return 0; } --- linux-5.8.0.orig/drivers/vfio/Kconfig +++ linux-5.8.0/drivers/vfio/Kconfig @@ -21,7 +21,7 @@ menuconfig VFIO tristate "VFIO Non-Privileged userspace driver framework" - depends on IOMMU_API + select IOMMU_API select VFIO_IOMMU_TYPE1 if (X86 || S390 || ARM || ARM64) help VFIO provides a framework for secure userspace device drivers. --- linux-5.8.0.orig/drivers/vfio/pci/Kconfig +++ linux-5.8.0/drivers/vfio/pci/Kconfig @@ -42,6 +42,6 @@ config VFIO_PCI_NVLINK2 def_bool y - depends on VFIO_PCI && PPC_POWERNV + depends on VFIO_PCI && PPC_POWERNV && SPAPR_TCE_IOMMU help VFIO PCI support for P9 Witherspoon machine with NVIDIA V100 GPUs --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci.c +++ linux-5.8.0/drivers/vfio/pci/vfio_pci.c @@ -119,8 +119,6 @@ int i; struct vfio_pci_dummy_resource *dummy_res; - INIT_LIST_HEAD(&vdev->dummy_resources_list); - for (i = 0; i < PCI_STD_NUM_BARS; i++) { int bar = i + PCI_STD_RESOURCES; @@ -341,7 +339,7 @@ pdev->vendor == PCI_VENDOR_ID_INTEL && IS_ENABLED(CONFIG_VFIO_PCI_IGD)) { ret = vfio_pci_igd_init(vdev); - if (ret) { + if (ret && ret != -ENODEV) { pci_warn(pdev, "Failed to setup Intel IGD regions\n"); goto disable_exit; } @@ -1558,8 +1556,8 @@ mutex_unlock(&vdev->vma_lock); - if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, - vma->vm_end - vma->vm_start, vma->vm_page_prot)) + if (io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, + vma->vm_end - vma->vm_start, vma->vm_page_prot)) ret = VM_FAULT_SIGBUS; up_out: @@ -1887,6 +1885,7 @@ mutex_init(&vdev->igate); spin_lock_init(&vdev->irqlock); mutex_init(&vdev->ioeventfds_lock); + INIT_LIST_HEAD(&vdev->dummy_resources_list); INIT_LIST_HEAD(&vdev->ioeventfds_list); mutex_init(&vdev->vma_lock); INIT_LIST_HEAD(&vdev->vma_list); --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci_config.c +++ linux-5.8.0/drivers/vfio/pci/vfio_pci_config.c @@ -406,7 +406,7 @@ * PF SR-IOV capability, there's therefore no need to trigger * faults based on the virtual value. */ - return pdev->is_virtfn || (cmd & PCI_COMMAND_MEMORY); + return pdev->no_command_memory || (cmd & PCI_COMMAND_MEMORY); } /* @@ -520,8 +520,8 @@ count = vfio_default_config_read(vdev, pos, count, perm, offset, val); - /* Mask in virtual memory enable for SR-IOV devices */ - if (offset == PCI_COMMAND && vdev->pdev->is_virtfn) { + /* Mask in virtual memory enable */ + if (offset == PCI_COMMAND && vdev->pdev->no_command_memory) { u16 cmd = le16_to_cpu(*(__le16 *)&vdev->vconfig[PCI_COMMAND]); u32 tmp_val = le32_to_cpu(*val); @@ -589,9 +589,11 @@ * shows it disabled (phys_mem/io, then the device has * undergone some kind of backdoor reset and needs to be * restored before we allow it to enable the bars. - * SR-IOV devices will trigger this, but we catch them later + * SR-IOV devices will trigger this - for mem enable let's + * catch this now and for io enable it will be caught later */ - if ((new_mem && virt_mem && !phys_mem) || + if ((new_mem && virt_mem && !phys_mem && + !pdev->no_command_memory) || (new_io && virt_io && !phys_io) || vfio_need_bar_restore(vdev)) vfio_bar_restore(vdev); @@ -1734,12 +1736,14 @@ vconfig[PCI_INTERRUPT_PIN]); vconfig[PCI_INTERRUPT_PIN] = 0; /* Gratuitous for good VFs */ - + } + if (pdev->no_command_memory) { /* - * VFs do no implement the memory enable bit of the COMMAND - * register therefore we'll not have it set in our initial - * copy of config space after pci_enable_device(). For - * consistency with PFs, set the virtual enable bit here. + * VFs and devices that set pdev->no_command_memory do not + * implement the memory enable bit of the COMMAND register + * therefore we'll not have it set in our initial copy of + * config space after pci_enable_device(). For consistency + * with PFs, set the virtual enable bit here. */ *(__le16 *)&vconfig[PCI_COMMAND] |= cpu_to_le16(PCI_COMMAND_MEMORY); --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci_intrs.c +++ linux-5.8.0/drivers/vfio/pci/vfio_pci_intrs.c @@ -352,11 +352,13 @@ vdev->ctx[vector].producer.token = trigger; vdev->ctx[vector].producer.irq = irq; ret = irq_bypass_register_producer(&vdev->ctx[vector].producer); - if (unlikely(ret)) + if (unlikely(ret)) { dev_info(&pdev->dev, "irq bypass producer (token %p) registration fails: %d\n", vdev->ctx[vector].producer.token, ret); + vdev->ctx[vector].producer.token = NULL; + } vdev->ctx[vector].trigger = trigger; return 0; --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci_nvlink2.c +++ linux-5.8.0/drivers/vfio/pci/vfio_pci_nvlink2.c @@ -231,7 +231,7 @@ return -EINVAL; if (of_property_read_u32(npu_node, "memory-region", &mem_phandle)) - return -EINVAL; + return -ENODEV; mem_node = of_find_node_by_phandle(mem_phandle); if (!mem_node) @@ -393,7 +393,7 @@ int ret; struct vfio_pci_npu2_data *data; struct device_node *nvlink_dn; - u32 nvlink_index = 0; + u32 nvlink_index = 0, mem_phandle = 0; struct pci_dev *npdev = vdev->pdev; struct device_node *npu_node = pci_device_to_OF_node(npdev); struct pci_controller *hose = pci_bus_to_host(npdev->bus); @@ -408,6 +408,9 @@ if (!pnv_pci_get_gpu_dev(vdev->pdev)) return -ENODEV; + if (of_property_read_u32(npu_node, "memory-region", &mem_phandle)) + return -ENODEV; + /* * NPU2 normally has 8 ATSD registers (for concurrency) and 6 links * so we can allocate one register per link, using nvlink index as --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci_private.h +++ linux-5.8.0/drivers/vfio/pci/vfio_pci_private.h @@ -33,12 +33,14 @@ struct vfio_pci_ioeventfd { struct list_head next; + struct vfio_pci_device *vdev; struct virqfd *virqfd; void __iomem *addr; uint64_t data; loff_t pos; int bar; int count; + bool test_mem; }; struct vfio_pci_irq_ctx { --- linux-5.8.0.orig/drivers/vfio/pci/vfio_pci_rdwr.c +++ linux-5.8.0/drivers/vfio/pci/vfio_pci_rdwr.c @@ -37,17 +37,70 @@ #define vfio_ioread8 ioread8 #define vfio_iowrite8 iowrite8 +#define VFIO_IOWRITE(size) \ +static int vfio_pci_iowrite##size(struct vfio_pci_device *vdev, \ + bool test_mem, u##size val, void __iomem *io) \ +{ \ + if (test_mem) { \ + down_read(&vdev->memory_lock); \ + if (!__vfio_pci_memory_enabled(vdev)) { \ + up_read(&vdev->memory_lock); \ + return -EIO; \ + } \ + } \ + \ + vfio_iowrite##size(val, io); \ + \ + if (test_mem) \ + up_read(&vdev->memory_lock); \ + \ + return 0; \ +} + +VFIO_IOWRITE(8) +VFIO_IOWRITE(16) +VFIO_IOWRITE(32) +#ifdef iowrite64 +VFIO_IOWRITE(64) +#endif + +#define VFIO_IOREAD(size) \ +static int vfio_pci_ioread##size(struct vfio_pci_device *vdev, \ + bool test_mem, u##size *val, void __iomem *io) \ +{ \ + if (test_mem) { \ + down_read(&vdev->memory_lock); \ + if (!__vfio_pci_memory_enabled(vdev)) { \ + up_read(&vdev->memory_lock); \ + return -EIO; \ + } \ + } \ + \ + *val = vfio_ioread##size(io); \ + \ + if (test_mem) \ + up_read(&vdev->memory_lock); \ + \ + return 0; \ +} + +VFIO_IOREAD(8) +VFIO_IOREAD(16) +VFIO_IOREAD(32) + /* * Read or write from an __iomem region (MMIO or I/O port) with an excluded * range which is inaccessible. The excluded range drops writes and fills * reads with -1. This is intended for handling MSI-X vector tables and * leftover space for ROM BARs. */ -static ssize_t do_io_rw(void __iomem *io, char __user *buf, +static ssize_t do_io_rw(struct vfio_pci_device *vdev, bool test_mem, + void __iomem *io, char __user *buf, loff_t off, size_t count, size_t x_start, size_t x_end, bool iswrite) { ssize_t done = 0; + int ret; while (count) { size_t fillable, filled; @@ -66,9 +119,15 @@ if (copy_from_user(&val, buf, 4)) return -EFAULT; - vfio_iowrite32(val, io + off); + ret = vfio_pci_iowrite32(vdev, test_mem, + val, io + off); + if (ret) + return ret; } else { - val = vfio_ioread32(io + off); + ret = vfio_pci_ioread32(vdev, test_mem, + &val, io + off); + if (ret) + return ret; if (copy_to_user(buf, &val, 4)) return -EFAULT; @@ -82,9 +141,15 @@ if (copy_from_user(&val, buf, 2)) return -EFAULT; - vfio_iowrite16(val, io + off); + ret = vfio_pci_iowrite16(vdev, test_mem, + val, io + off); + if (ret) + return ret; } else { - val = vfio_ioread16(io + off); + ret = vfio_pci_ioread16(vdev, test_mem, + &val, io + off); + if (ret) + return ret; if (copy_to_user(buf, &val, 2)) return -EFAULT; @@ -98,9 +163,15 @@ if (copy_from_user(&val, buf, 1)) return -EFAULT; - vfio_iowrite8(val, io + off); + ret = vfio_pci_iowrite8(vdev, test_mem, + val, io + off); + if (ret) + return ret; } else { - val = vfio_ioread8(io + off); + ret = vfio_pci_ioread8(vdev, test_mem, + &val, io + off); + if (ret) + return ret; if (copy_to_user(buf, &val, 1)) return -EFAULT; @@ -178,14 +249,6 @@ count = min(count, (size_t)(end - pos)); - if (res->flags & IORESOURCE_MEM) { - down_read(&vdev->memory_lock); - if (!__vfio_pci_memory_enabled(vdev)) { - up_read(&vdev->memory_lock); - return -EIO; - } - } - if (bar == PCI_ROM_RESOURCE) { /* * The ROM can fill less space than the BAR, so we start the @@ -213,7 +276,8 @@ x_end = vdev->msix_offset + vdev->msix_size; } - done = do_io_rw(io, buf, pos, count, x_start, x_end, iswrite); + done = do_io_rw(vdev, res->flags & IORESOURCE_MEM, io, buf, pos, + count, x_start, x_end, iswrite); if (done >= 0) *ppos += done; @@ -221,9 +285,6 @@ if (bar == PCI_ROM_RESOURCE) pci_unmap_rom(pdev, io); out: - if (res->flags & IORESOURCE_MEM) - up_read(&vdev->memory_lock); - return done; } @@ -278,7 +339,12 @@ return ret; } - done = do_io_rw(iomem, buf, off, count, 0, 0, iswrite); + /* + * VGA MMIO is a legacy, non-BAR resource that hopefully allows + * probing, so we don't currently worry about access in relation + * to the memory enable bit in the command register. + */ + done = do_io_rw(vdev, false, iomem, buf, off, count, 0, 0, iswrite); vga_put(vdev->pdev, rsrc); @@ -290,30 +356,60 @@ return done; } -static int vfio_pci_ioeventfd_handler(void *opaque, void *unused) +static void vfio_pci_ioeventfd_do_write(struct vfio_pci_ioeventfd *ioeventfd, + bool test_mem) { - struct vfio_pci_ioeventfd *ioeventfd = opaque; - switch (ioeventfd->count) { case 1: - vfio_iowrite8(ioeventfd->data, ioeventfd->addr); + vfio_pci_iowrite8(ioeventfd->vdev, test_mem, + ioeventfd->data, ioeventfd->addr); break; case 2: - vfio_iowrite16(ioeventfd->data, ioeventfd->addr); + vfio_pci_iowrite16(ioeventfd->vdev, test_mem, + ioeventfd->data, ioeventfd->addr); break; case 4: - vfio_iowrite32(ioeventfd->data, ioeventfd->addr); + vfio_pci_iowrite32(ioeventfd->vdev, test_mem, + ioeventfd->data, ioeventfd->addr); break; #ifdef iowrite64 case 8: - vfio_iowrite64(ioeventfd->data, ioeventfd->addr); + vfio_pci_iowrite64(ioeventfd->vdev, test_mem, + ioeventfd->data, ioeventfd->addr); break; #endif } +} + +static int vfio_pci_ioeventfd_handler(void *opaque, void *unused) +{ + struct vfio_pci_ioeventfd *ioeventfd = opaque; + struct vfio_pci_device *vdev = ioeventfd->vdev; + + if (ioeventfd->test_mem) { + if (!down_read_trylock(&vdev->memory_lock)) + return 1; /* Lock contended, use thread */ + if (!__vfio_pci_memory_enabled(vdev)) { + up_read(&vdev->memory_lock); + return 0; + } + } + + vfio_pci_ioeventfd_do_write(ioeventfd, false); + + if (ioeventfd->test_mem) + up_read(&vdev->memory_lock); return 0; } +static void vfio_pci_ioeventfd_thread(void *opaque, void *unused) +{ + struct vfio_pci_ioeventfd *ioeventfd = opaque; + + vfio_pci_ioeventfd_do_write(ioeventfd, ioeventfd->test_mem); +} + long vfio_pci_ioeventfd(struct vfio_pci_device *vdev, loff_t offset, uint64_t data, int count, int fd) { @@ -378,14 +474,17 @@ goto out_unlock; } + ioeventfd->vdev = vdev; ioeventfd->addr = vdev->barmap[bar] + pos; ioeventfd->data = data; ioeventfd->pos = pos; ioeventfd->bar = bar; ioeventfd->count = count; + ioeventfd->test_mem = vdev->pdev->resource[bar].flags & IORESOURCE_MEM; ret = vfio_virqfd_enable(ioeventfd, vfio_pci_ioeventfd_handler, - NULL, NULL, &ioeventfd->virqfd, fd); + vfio_pci_ioeventfd_thread, NULL, + &ioeventfd->virqfd, fd); if (ret) { kfree(ioeventfd); goto out_unlock; --- linux-5.8.0.orig/drivers/vfio/platform/vfio_platform_common.c +++ linux-5.8.0/drivers/vfio/platform/vfio_platform_common.c @@ -267,7 +267,7 @@ ret = pm_runtime_get_sync(vdev->device); if (ret < 0) - goto err_pm; + goto err_rst; ret = vfio_platform_call_reset(vdev, &extra_dbg); if (ret && vdev->reset_required) { @@ -284,7 +284,6 @@ err_rst: pm_runtime_put(vdev->device); -err_pm: vfio_platform_irq_cleanup(vdev); err_irq: vfio_platform_regions_cleanup(vdev); --- linux-5.8.0.orig/drivers/vfio/vfio.c +++ linux-5.8.0/drivers/vfio/vfio.c @@ -926,6 +926,10 @@ struct vfio_unbound_dev *unbound; unsigned int i = 0; bool interrupted = false; + bool locked = true; + struct device_driver *drv; + + drv = dev->driver; /* * The group exists so long as we have a device reference. Get @@ -968,8 +972,11 @@ if (!device) break; - if (device->ops->request) + if (device->ops->request) { + device_unlock(dev); + locked = false; device->ops->request(device_data, i++); + } vfio_device_put(device); @@ -987,6 +994,20 @@ } } + if (!locked) { + device_lock(dev); + locked = true; + /* + * A concurrent operation may have released the driver + * successfully while we had dropped the lock, + * check for that. + */ + if (dev->driver != drv) { + vfio_group_put(group); + return NULL; + } + } + } while (1); remove_wait_queue(&vfio.release_q, &wait); @@ -1948,8 +1969,10 @@ if (!group) return -ENODEV; - if (group->dev_counter > 1) - return -EINVAL; + if (group->dev_counter > 1) { + ret = -EINVAL; + goto err_pin_pages; + } ret = vfio_group_add_container_user(group); if (ret) @@ -2050,6 +2073,9 @@ if (!group || !user_iova_pfn || !phys_pfn || !npage) return -EINVAL; + if (group->dev_counter > 1) + return -EINVAL; + if (npage > VFIO_PIN_PAGES_MAX_ENTRIES) return -E2BIG; --- linux-5.8.0.orig/drivers/vfio/vfio_iommu_type1.c +++ linux-5.8.0/drivers/vfio/vfio_iommu_type1.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -236,6 +237,18 @@ } } +static void vfio_iommu_populate_bitmap_full(struct vfio_iommu *iommu) +{ + struct rb_node *n; + unsigned long pgshift = __ffs(iommu->pgsize_bitmap); + + for (n = rb_first(&iommu->dma_list); n; n = rb_next(n)) { + struct vfio_dma *dma = rb_entry(n, struct vfio_dma, node); + + bitmap_set(dma->bitmap, 0, dma->size >> pgshift); + } +} + static int vfio_dma_bitmap_alloc_all(struct vfio_iommu *iommu, size_t pgsize) { struct rb_node *n; @@ -419,9 +432,11 @@ unsigned long vaddr, unsigned long *pfn, bool write_fault) { + pte_t *ptep; + spinlock_t *ptl; int ret; - ret = follow_pfn(vma, vaddr, pfn); + ret = follow_pte(vma->vm_mm, vaddr, &ptep, &ptl); if (ret) { bool unlocked = false; @@ -435,9 +450,17 @@ if (ret) return ret; - ret = follow_pfn(vma, vaddr, pfn); + ret = follow_pte(vma->vm_mm, vaddr, &ptep, &ptl); + if (ret) + return ret; } + if (write_fault && !pte_write(*ptep)) + ret = -EFAULT; + else + *pfn = pte_pfn(*ptep); + + pte_unmap_unlock(ptep, ptl); return ret; } @@ -693,7 +716,8 @@ ret = vfio_add_to_pfn_list(dma, iova, phys_pfn[i]); if (ret) { - vfio_unpin_page_external(dma, iova, do_accounting); + if (put_pfn(phys_pfn[i], dma->prot) && do_accounting) + vfio_lock_acct(dma, -1, true); goto pin_unwind; } @@ -944,6 +968,7 @@ static void vfio_remove_dma(struct vfio_iommu *iommu, struct vfio_dma *dma) { + WARN_ON(!RB_EMPTY_ROOT(&dma->pfn_list)); vfio_unmap_unpin(iommu, dma, true); vfio_unlink_dma(iommu, dma); put_task_struct(dma->task); @@ -1422,13 +1447,16 @@ static int vfio_iommu_replay(struct vfio_iommu *iommu, struct vfio_domain *domain) { - struct vfio_domain *d; + struct vfio_domain *d = NULL; struct rb_node *n; unsigned long limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; int ret; /* Arbitrarily pick the first domain in the list for lookups */ - d = list_first_entry(&iommu->domain_list, struct vfio_domain, next); + if (!list_empty(&iommu->domain_list)) + d = list_first_entry(&iommu->domain_list, + struct vfio_domain, next); + n = rb_first(&iommu->dma_list); for (; n; n = rb_next(n)) { @@ -1446,6 +1474,11 @@ phys_addr_t p; dma_addr_t i; + if (WARN_ON(!d)) { /* mapped w/o a domain?! */ + ret = -EINVAL; + goto unwind; + } + phys = iommu_iova_to_phys(d->domain, iova); if (WARN_ON(!phys)) { @@ -1475,7 +1508,7 @@ if (npage <= 0) { WARN_ON(!npage); ret = (int)npage; - return ret; + goto unwind; } phys = pfn << PAGE_SHIFT; @@ -1484,14 +1517,67 @@ ret = iommu_map(domain->domain, iova, phys, size, dma->prot | domain->prot); - if (ret) - return ret; + if (ret) { + if (!dma->iommu_mapped) + vfio_unpin_pages_remote(dma, iova, + phys >> PAGE_SHIFT, + size >> PAGE_SHIFT, + true); + goto unwind; + } iova += size; } + } + + /* All dmas are now mapped, defer to second tree walk for unwind */ + for (n = rb_first(&iommu->dma_list); n; n = rb_next(n)) { + struct vfio_dma *dma = rb_entry(n, struct vfio_dma, node); + dma->iommu_mapped = true; } + return 0; + +unwind: + for (; n; n = rb_prev(n)) { + struct vfio_dma *dma = rb_entry(n, struct vfio_dma, node); + dma_addr_t iova; + + if (dma->iommu_mapped) { + iommu_unmap(domain->domain, dma->iova, dma->size); + continue; + } + + iova = dma->iova; + while (iova < dma->iova + dma->size) { + phys_addr_t phys, p; + size_t size; + dma_addr_t i; + + phys = iommu_iova_to_phys(domain->domain, iova); + if (!phys) { + iova += PAGE_SIZE; + continue; + } + + size = PAGE_SIZE; + p = phys + size; + i = iova + size; + while (i < dma->iova + dma->size && + p == iommu_iova_to_phys(domain->domain, i)) { + size += PAGE_SIZE; + p += PAGE_SIZE; + i += PAGE_SIZE; + } + + iommu_unmap(domain->domain, iova, size); + vfio_unpin_pages_remote(dma, iova, phys >> PAGE_SHIFT, + size >> PAGE_SHIFT, true); + } + } + + return ret; } /* @@ -2181,23 +2267,6 @@ } } -static void vfio_sanity_check_pfn_list(struct vfio_iommu *iommu) -{ - struct rb_node *n; - - n = rb_first(&iommu->dma_list); - for (; n; n = rb_next(n)) { - struct vfio_dma *dma; - - dma = rb_entry(n, struct vfio_dma, node); - - if (WARN_ON(!RB_EMPTY_ROOT(&dma->pfn_list))) - break; - } - /* mdev vendor driver must unregister notifier */ - WARN_ON(iommu->notifier.head); -} - /* * Called when a domain is removed in detach. It is possible that * the removed domain decided the iova aperture window. Modify the @@ -2297,10 +2366,10 @@ kfree(group); if (list_empty(&iommu->external_domain->group_list)) { - vfio_sanity_check_pfn_list(iommu); - - if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu)) + if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu)) { + WARN_ON(iommu->notifier.head); vfio_iommu_unmap_unpin_all(iommu); + } kfree(iommu->external_domain); iommu->external_domain = NULL; @@ -2334,10 +2403,12 @@ */ if (list_empty(&domain->group_list)) { if (list_is_singular(&iommu->domain_list)) { - if (!iommu->external_domain) + if (!iommu->external_domain) { + WARN_ON(iommu->notifier.head); vfio_iommu_unmap_unpin_all(iommu); - else + } else { vfio_iommu_unmap_unpin_reaccount(iommu); + } } iommu_domain_free(domain->domain); list_del(&domain->next); @@ -2358,8 +2429,11 @@ * Removal of a group without dirty tracking may allow the iommu scope * to be promoted. */ - if (update_dirty_scope) + if (update_dirty_scope) { update_pinned_page_dirty_scope(iommu); + if (iommu->dirty_page_tracking) + vfio_iommu_populate_bitmap_full(iommu); + } mutex_unlock(&iommu->lock); } @@ -2418,7 +2492,6 @@ if (iommu->external_domain) { vfio_release_domain(iommu->external_domain, true); - vfio_sanity_check_pfn_list(iommu); kfree(iommu->external_domain); } @@ -2453,6 +2526,23 @@ return ret; } +static int vfio_iommu_type1_check_extension(struct vfio_iommu *iommu, + unsigned long arg) +{ + switch (arg) { + case VFIO_TYPE1_IOMMU: + case VFIO_TYPE1v2_IOMMU: + case VFIO_TYPE1_NESTING_IOMMU: + return 1; + case VFIO_DMA_CC_IOMMU: + if (!iommu) + return 0; + return vfio_domains_have_iommu_cache(iommu); + default: + return 0; + } +} + static int vfio_iommu_iova_add_cap(struct vfio_info_cap *caps, struct vfio_iommu_type1_info_cap_iova_range *cap_iovas, size_t size) @@ -2529,241 +2619,273 @@ return vfio_info_add_capability(caps, &cap_mig.header, sizeof(cap_mig)); } -static long vfio_iommu_type1_ioctl(void *iommu_data, - unsigned int cmd, unsigned long arg) +static int vfio_iommu_dma_avail_build_caps(struct vfio_iommu *iommu, + struct vfio_info_cap *caps) { - struct vfio_iommu *iommu = iommu_data; + struct vfio_iommu_type1_info_dma_avail cap_dma_avail; + + cap_dma_avail.header.id = VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL; + cap_dma_avail.header.version = 1; + + cap_dma_avail.avail = iommu->dma_avail; + + return vfio_info_add_capability(caps, &cap_dma_avail.header, + sizeof(cap_dma_avail)); +} + +static int vfio_iommu_type1_get_info(struct vfio_iommu *iommu, + unsigned long arg) +{ + struct vfio_iommu_type1_info info; unsigned long minsz; + struct vfio_info_cap caps = { .buf = NULL, .size = 0 }; + unsigned long capsz; + int ret; - if (cmd == VFIO_CHECK_EXTENSION) { - switch (arg) { - case VFIO_TYPE1_IOMMU: - case VFIO_TYPE1v2_IOMMU: - case VFIO_TYPE1_NESTING_IOMMU: - return 1; - case VFIO_DMA_CC_IOMMU: - if (!iommu) - return 0; - return vfio_domains_have_iommu_cache(iommu); - default: - return 0; - } - } else if (cmd == VFIO_IOMMU_GET_INFO) { - struct vfio_iommu_type1_info info; - struct vfio_info_cap caps = { .buf = NULL, .size = 0 }; - unsigned long capsz; - int ret; + minsz = offsetofend(struct vfio_iommu_type1_info, iova_pgsizes); - minsz = offsetofend(struct vfio_iommu_type1_info, iova_pgsizes); + /* For backward compatibility, cannot require this */ + capsz = offsetofend(struct vfio_iommu_type1_info, cap_offset); - /* For backward compatibility, cannot require this */ - capsz = offsetofend(struct vfio_iommu_type1_info, cap_offset); + if (copy_from_user(&info, (void __user *)arg, minsz)) + return -EFAULT; - if (copy_from_user(&info, (void __user *)arg, minsz)) - return -EFAULT; + if (info.argsz < minsz) + return -EINVAL; - if (info.argsz < minsz) - return -EINVAL; + if (info.argsz >= capsz) { + minsz = capsz; + info.cap_offset = 0; /* output, no-recopy necessary */ + } - if (info.argsz >= capsz) { - minsz = capsz; - info.cap_offset = 0; /* output, no-recopy necessary */ - } + mutex_lock(&iommu->lock); + info.flags = VFIO_IOMMU_INFO_PGSIZES; - mutex_lock(&iommu->lock); - info.flags = VFIO_IOMMU_INFO_PGSIZES; + info.iova_pgsizes = iommu->pgsize_bitmap; - info.iova_pgsizes = iommu->pgsize_bitmap; + ret = vfio_iommu_migration_build_caps(iommu, &caps); - ret = vfio_iommu_migration_build_caps(iommu, &caps); + if (!ret) + ret = vfio_iommu_dma_avail_build_caps(iommu, &caps); - if (!ret) - ret = vfio_iommu_iova_build_caps(iommu, &caps); + if (!ret) + ret = vfio_iommu_iova_build_caps(iommu, &caps); - mutex_unlock(&iommu->lock); + mutex_unlock(&iommu->lock); - if (ret) - return ret; + if (ret) + return ret; - if (caps.size) { - info.flags |= VFIO_IOMMU_INFO_CAPS; + if (caps.size) { + info.flags |= VFIO_IOMMU_INFO_CAPS; - if (info.argsz < sizeof(info) + caps.size) { - info.argsz = sizeof(info) + caps.size; - } else { - vfio_info_cap_shift(&caps, sizeof(info)); - if (copy_to_user((void __user *)arg + - sizeof(info), caps.buf, - caps.size)) { - kfree(caps.buf); - return -EFAULT; - } - info.cap_offset = sizeof(info); + if (info.argsz < sizeof(info) + caps.size) { + info.argsz = sizeof(info) + caps.size; + } else { + vfio_info_cap_shift(&caps, sizeof(info)); + if (copy_to_user((void __user *)arg + + sizeof(info), caps.buf, + caps.size)) { + kfree(caps.buf); + return -EFAULT; } - - kfree(caps.buf); + info.cap_offset = sizeof(info); } - return copy_to_user((void __user *)arg, &info, minsz) ? - -EFAULT : 0; + kfree(caps.buf); + } - } else if (cmd == VFIO_IOMMU_MAP_DMA) { - struct vfio_iommu_type1_dma_map map; - uint32_t mask = VFIO_DMA_MAP_FLAG_READ | - VFIO_DMA_MAP_FLAG_WRITE; + return copy_to_user((void __user *)arg, &info, minsz) ? + -EFAULT : 0; +} - minsz = offsetofend(struct vfio_iommu_type1_dma_map, size); +static int vfio_iommu_type1_map_dma(struct vfio_iommu *iommu, + unsigned long arg) +{ + struct vfio_iommu_type1_dma_map map; + unsigned long minsz; + uint32_t mask = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE; - if (copy_from_user(&map, (void __user *)arg, minsz)) - return -EFAULT; + minsz = offsetofend(struct vfio_iommu_type1_dma_map, size); - if (map.argsz < minsz || map.flags & ~mask) - return -EINVAL; + if (copy_from_user(&map, (void __user *)arg, minsz)) + return -EFAULT; - return vfio_dma_do_map(iommu, &map); + if (map.argsz < minsz || map.flags & ~mask) + return -EINVAL; - } else if (cmd == VFIO_IOMMU_UNMAP_DMA) { - struct vfio_iommu_type1_dma_unmap unmap; - struct vfio_bitmap bitmap = { 0 }; - int ret; + return vfio_dma_do_map(iommu, &map); +} - minsz = offsetofend(struct vfio_iommu_type1_dma_unmap, size); +static int vfio_iommu_type1_unmap_dma(struct vfio_iommu *iommu, + unsigned long arg) +{ + struct vfio_iommu_type1_dma_unmap unmap; + struct vfio_bitmap bitmap = { 0 }; + unsigned long minsz; + int ret; - if (copy_from_user(&unmap, (void __user *)arg, minsz)) - return -EFAULT; + minsz = offsetofend(struct vfio_iommu_type1_dma_unmap, size); - if (unmap.argsz < minsz || - unmap.flags & ~VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP) - return -EINVAL; + if (copy_from_user(&unmap, (void __user *)arg, minsz)) + return -EFAULT; - if (unmap.flags & VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP) { - unsigned long pgshift; + if (unmap.argsz < minsz || + unmap.flags & ~VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP) + return -EINVAL; - if (unmap.argsz < (minsz + sizeof(bitmap))) - return -EINVAL; + if (unmap.flags & VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP) { + unsigned long pgshift; - if (copy_from_user(&bitmap, - (void __user *)(arg + minsz), - sizeof(bitmap))) - return -EFAULT; + if (unmap.argsz < (minsz + sizeof(bitmap))) + return -EINVAL; - if (!access_ok((void __user *)bitmap.data, bitmap.size)) - return -EINVAL; + if (copy_from_user(&bitmap, + (void __user *)(arg + minsz), + sizeof(bitmap))) + return -EFAULT; - pgshift = __ffs(bitmap.pgsize); - ret = verify_bitmap_size(unmap.size >> pgshift, - bitmap.size); - if (ret) - return ret; - } + if (!access_ok((void __user *)bitmap.data, bitmap.size)) + return -EINVAL; - ret = vfio_dma_do_unmap(iommu, &unmap, &bitmap); + pgshift = __ffs(bitmap.pgsize); + ret = verify_bitmap_size(unmap.size >> pgshift, + bitmap.size); if (ret) return ret; + } - return copy_to_user((void __user *)arg, &unmap, minsz) ? + ret = vfio_dma_do_unmap(iommu, &unmap, &bitmap); + if (ret) + return ret; + + return copy_to_user((void __user *)arg, &unmap, minsz) ? -EFAULT : 0; - } else if (cmd == VFIO_IOMMU_DIRTY_PAGES) { - struct vfio_iommu_type1_dirty_bitmap dirty; - uint32_t mask = VFIO_IOMMU_DIRTY_PAGES_FLAG_START | - VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP | - VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP; - int ret = 0; +} - if (!iommu->v2) - return -EACCES; +static int vfio_iommu_type1_dirty_pages(struct vfio_iommu *iommu, + unsigned long arg) +{ + struct vfio_iommu_type1_dirty_bitmap dirty; + uint32_t mask = VFIO_IOMMU_DIRTY_PAGES_FLAG_START | + VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP | + VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP; + unsigned long minsz; + int ret = 0; - minsz = offsetofend(struct vfio_iommu_type1_dirty_bitmap, - flags); + if (!iommu->v2) + return -EACCES; - if (copy_from_user(&dirty, (void __user *)arg, minsz)) - return -EFAULT; + minsz = offsetofend(struct vfio_iommu_type1_dirty_bitmap, flags); - if (dirty.argsz < minsz || dirty.flags & ~mask) - return -EINVAL; + if (copy_from_user(&dirty, (void __user *)arg, minsz)) + return -EFAULT; - /* only one flag should be set at a time */ - if (__ffs(dirty.flags) != __fls(dirty.flags)) - return -EINVAL; + if (dirty.argsz < minsz || dirty.flags & ~mask) + return -EINVAL; - if (dirty.flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_START) { - size_t pgsize; + /* only one flag should be set at a time */ + if (__ffs(dirty.flags) != __fls(dirty.flags)) + return -EINVAL; - mutex_lock(&iommu->lock); - pgsize = 1 << __ffs(iommu->pgsize_bitmap); - if (!iommu->dirty_page_tracking) { - ret = vfio_dma_bitmap_alloc_all(iommu, pgsize); - if (!ret) - iommu->dirty_page_tracking = true; - } - mutex_unlock(&iommu->lock); - return ret; - } else if (dirty.flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP) { - mutex_lock(&iommu->lock); - if (iommu->dirty_page_tracking) { - iommu->dirty_page_tracking = false; - vfio_dma_bitmap_free_all(iommu); - } - mutex_unlock(&iommu->lock); - return 0; - } else if (dirty.flags & - VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP) { - struct vfio_iommu_type1_dirty_bitmap_get range; - unsigned long pgshift; - size_t data_size = dirty.argsz - minsz; - size_t iommu_pgsize; + if (dirty.flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_START) { + size_t pgsize; - if (!data_size || data_size < sizeof(range)) - return -EINVAL; + mutex_lock(&iommu->lock); + pgsize = 1 << __ffs(iommu->pgsize_bitmap); + if (!iommu->dirty_page_tracking) { + ret = vfio_dma_bitmap_alloc_all(iommu, pgsize); + if (!ret) + iommu->dirty_page_tracking = true; + } + mutex_unlock(&iommu->lock); + return ret; + } else if (dirty.flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP) { + mutex_lock(&iommu->lock); + if (iommu->dirty_page_tracking) { + iommu->dirty_page_tracking = false; + vfio_dma_bitmap_free_all(iommu); + } + mutex_unlock(&iommu->lock); + return 0; + } else if (dirty.flags & VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP) { + struct vfio_iommu_type1_dirty_bitmap_get range; + unsigned long pgshift; + size_t data_size = dirty.argsz - minsz; + size_t iommu_pgsize; - if (copy_from_user(&range, (void __user *)(arg + minsz), - sizeof(range))) - return -EFAULT; + if (!data_size || data_size < sizeof(range)) + return -EINVAL; - if (range.iova + range.size < range.iova) - return -EINVAL; - if (!access_ok((void __user *)range.bitmap.data, - range.bitmap.size)) - return -EINVAL; - - pgshift = __ffs(range.bitmap.pgsize); - ret = verify_bitmap_size(range.size >> pgshift, - range.bitmap.size); - if (ret) - return ret; + if (copy_from_user(&range, (void __user *)(arg + minsz), + sizeof(range))) + return -EFAULT; - mutex_lock(&iommu->lock); + if (range.iova + range.size < range.iova) + return -EINVAL; + if (!access_ok((void __user *)range.bitmap.data, + range.bitmap.size)) + return -EINVAL; - iommu_pgsize = (size_t)1 << __ffs(iommu->pgsize_bitmap); + pgshift = __ffs(range.bitmap.pgsize); + ret = verify_bitmap_size(range.size >> pgshift, + range.bitmap.size); + if (ret) + return ret; - /* allow only smallest supported pgsize */ - if (range.bitmap.pgsize != iommu_pgsize) { - ret = -EINVAL; - goto out_unlock; - } - if (range.iova & (iommu_pgsize - 1)) { - ret = -EINVAL; - goto out_unlock; - } - if (!range.size || range.size & (iommu_pgsize - 1)) { - ret = -EINVAL; - goto out_unlock; - } + mutex_lock(&iommu->lock); - if (iommu->dirty_page_tracking) - ret = vfio_iova_dirty_bitmap(range.bitmap.data, - iommu, range.iova, range.size, - range.bitmap.pgsize); - else - ret = -EINVAL; -out_unlock: - mutex_unlock(&iommu->lock); + iommu_pgsize = (size_t)1 << __ffs(iommu->pgsize_bitmap); - return ret; + /* allow only smallest supported pgsize */ + if (range.bitmap.pgsize != iommu_pgsize) { + ret = -EINVAL; + goto out_unlock; } + if (range.iova & (iommu_pgsize - 1)) { + ret = -EINVAL; + goto out_unlock; + } + if (!range.size || range.size & (iommu_pgsize - 1)) { + ret = -EINVAL; + goto out_unlock; + } + + if (iommu->dirty_page_tracking) + ret = vfio_iova_dirty_bitmap(range.bitmap.data, + iommu, range.iova, + range.size, + range.bitmap.pgsize); + else + ret = -EINVAL; +out_unlock: + mutex_unlock(&iommu->lock); + + return ret; } - return -ENOTTY; + return -EINVAL; +} + +static long vfio_iommu_type1_ioctl(void *iommu_data, + unsigned int cmd, unsigned long arg) +{ + struct vfio_iommu *iommu = iommu_data; + + switch (cmd) { + case VFIO_CHECK_EXTENSION: + return vfio_iommu_type1_check_extension(iommu, arg); + case VFIO_IOMMU_GET_INFO: + return vfio_iommu_type1_get_info(iommu, arg); + case VFIO_IOMMU_MAP_DMA: + return vfio_iommu_type1_map_dma(iommu, arg); + case VFIO_IOMMU_UNMAP_DMA: + return vfio_iommu_type1_unmap_dma(iommu, arg); + case VFIO_IOMMU_DIRTY_PAGES: + return vfio_iommu_type1_dirty_pages(iommu, arg); + default: + return -ENOTTY; + } } static int vfio_iommu_type1_register_notifier(void *iommu_data, @@ -2838,7 +2960,8 @@ * size */ bitmap_set(dma->bitmap, offset >> pgshift, - *copied >> pgshift); + ((offset + *copied - 1) >> pgshift) - + (offset >> pgshift) + 1); } } else *copied = copy_from_user(data, (void __user *)vaddr, --- linux-5.8.0.orig/drivers/vhost/net.c +++ linux-5.8.0/drivers/vhost/net.c @@ -863,6 +863,7 @@ size_t len, total_len = 0; int err; struct vhost_net_ubuf_ref *uninitialized_var(ubufs); + struct ubuf_info *ubuf; bool zcopy_used; int sent_pkts = 0; @@ -895,9 +896,7 @@ /* use msg_control to pass vhost zerocopy ubuf info to skb */ if (zcopy_used) { - struct ubuf_info *ubuf; ubuf = nvq->ubuf_info + nvq->upend_idx; - vq->heads[nvq->upend_idx].id = cpu_to_vhost32(vq, head); vq->heads[nvq->upend_idx].len = VHOST_DMA_IN_PROGRESS; ubuf->callback = vhost_zerocopy_callback; @@ -927,7 +926,8 @@ err = sock->ops->sendmsg(sock, &msg, len); if (unlikely(err < 0)) { if (zcopy_used) { - vhost_net_ubuf_put(ubufs); + if (vq->heads[ubuf->desc].len == VHOST_DMA_IN_PROGRESS) + vhost_net_ubuf_put(ubufs); nvq->upend_idx = ((unsigned)nvq->upend_idx - 1) % UIO_MAXIOV; } --- linux-5.8.0.orig/drivers/vhost/scsi.c +++ linux-5.8.0/drivers/vhost/scsi.c @@ -52,7 +52,6 @@ #define VHOST_SCSI_VERSION "v0.1" #define VHOST_SCSI_NAMELEN 256 #define VHOST_SCSI_MAX_CDB_SIZE 32 -#define VHOST_SCSI_DEFAULT_TAGS 256 #define VHOST_SCSI_PREALLOC_SGLS 2048 #define VHOST_SCSI_PREALLOC_UPAGES 2048 #define VHOST_SCSI_PREALLOC_PROT_SGLS 2048 @@ -189,6 +188,9 @@ * Writers must also take dev mutex and flush under it. */ int inflight_idx; + struct vhost_scsi_cmd *scsi_cmds; + struct sbitmap scsi_tags; + int max_cmds; }; struct vhost_scsi { @@ -320,11 +322,13 @@ return 1; } -static void vhost_scsi_release_cmd(struct se_cmd *se_cmd) +static void vhost_scsi_release_cmd_res(struct se_cmd *se_cmd) { struct vhost_scsi_cmd *tv_cmd = container_of(se_cmd, struct vhost_scsi_cmd, tvc_se_cmd); - struct se_session *se_sess = tv_cmd->tvc_nexus->tvn_se_sess; + struct vhost_scsi_virtqueue *svq = container_of(tv_cmd->tvc_vq, + struct vhost_scsi_virtqueue, vq); + struct vhost_scsi_inflight *inflight = tv_cmd->inflight; int i; if (tv_cmd->tvc_sgl_count) { @@ -336,8 +340,18 @@ put_page(sg_page(&tv_cmd->tvc_prot_sgl[i])); } - vhost_scsi_put_inflight(tv_cmd->inflight); - target_free_tag(se_sess, se_cmd); + sbitmap_clear_bit(&svq->scsi_tags, se_cmd->map_tag); + vhost_scsi_put_inflight(inflight); +} + +static void vhost_scsi_release_cmd(struct se_cmd *se_cmd) +{ + struct vhost_scsi_cmd *cmd = container_of(se_cmd, + struct vhost_scsi_cmd, tvc_se_cmd); + struct vhost_scsi *vs = cmd->tvc_vhost; + + llist_add(&cmd->tvc_completion_list, &vs->vs_completion_list); + vhost_work_queue(&vs->dev, &vs->vs_completion_work); } static u32 vhost_scsi_sess_get_index(struct se_session *se_sess) @@ -362,28 +376,15 @@ return 0; } -static void vhost_scsi_complete_cmd(struct vhost_scsi_cmd *cmd) -{ - struct vhost_scsi *vs = cmd->tvc_vhost; - - llist_add(&cmd->tvc_completion_list, &vs->vs_completion_list); - - vhost_work_queue(&vs->dev, &vs->vs_completion_work); -} - static int vhost_scsi_queue_data_in(struct se_cmd *se_cmd) { - struct vhost_scsi_cmd *cmd = container_of(se_cmd, - struct vhost_scsi_cmd, tvc_se_cmd); - vhost_scsi_complete_cmd(cmd); + transport_generic_free_cmd(se_cmd, 0); return 0; } static int vhost_scsi_queue_status(struct se_cmd *se_cmd) { - struct vhost_scsi_cmd *cmd = container_of(se_cmd, - struct vhost_scsi_cmd, tvc_se_cmd); - vhost_scsi_complete_cmd(cmd); + transport_generic_free_cmd(se_cmd, 0); return 0; } @@ -429,15 +430,6 @@ return evt; } -static void vhost_scsi_free_cmd(struct vhost_scsi_cmd *cmd) -{ - struct se_cmd *se_cmd = &cmd->tvc_se_cmd; - - /* TODO locking against target/backend threads? */ - transport_generic_free_cmd(se_cmd, 0); - -} - static int vhost_scsi_check_stop_free(struct se_cmd *se_cmd) { return target_put_sess_cmd(se_cmd); @@ -556,7 +548,7 @@ } else pr_err("Faulted on virtio_scsi_cmd_resp\n"); - vhost_scsi_free_cmd(cmd); + vhost_scsi_release_cmd_res(se_cmd); } vq = -1; @@ -566,31 +558,31 @@ } static struct vhost_scsi_cmd * -vhost_scsi_get_tag(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg, +vhost_scsi_get_cmd(struct vhost_virtqueue *vq, struct vhost_scsi_tpg *tpg, unsigned char *cdb, u64 scsi_tag, u16 lun, u8 task_attr, u32 exp_data_len, int data_direction) { + struct vhost_scsi_virtqueue *svq = container_of(vq, + struct vhost_scsi_virtqueue, vq); struct vhost_scsi_cmd *cmd; struct vhost_scsi_nexus *tv_nexus; - struct se_session *se_sess; struct scatterlist *sg, *prot_sg; struct page **pages; - int tag, cpu; + int tag; tv_nexus = tpg->tpg_nexus; if (!tv_nexus) { pr_err("Unable to locate active struct vhost_scsi_nexus\n"); return ERR_PTR(-EIO); } - se_sess = tv_nexus->tvn_se_sess; - tag = sbitmap_queue_get(&se_sess->sess_tag_pool, &cpu); + tag = sbitmap_get(&svq->scsi_tags, 0, false); if (tag < 0) { pr_err("Unable to obtain tag for vhost_scsi_cmd\n"); return ERR_PTR(-ENOMEM); } - cmd = &((struct vhost_scsi_cmd *)se_sess->sess_cmd_map)[tag]; + cmd = &svq->scsi_cmds[tag]; sg = cmd->tvc_sgl; prot_sg = cmd->tvc_prot_sgl; pages = cmd->tvc_upages; @@ -599,7 +591,6 @@ cmd->tvc_prot_sgl = prot_sg; cmd->tvc_upages = pages; cmd->tvc_se_cmd.map_tag = tag; - cmd->tvc_se_cmd.map_cpu = cpu; cmd->tvc_tag = scsi_tag; cmd->tvc_lun = lun; cmd->tvc_task_attr = task_attr; @@ -1065,11 +1056,11 @@ scsi_command_size(cdb), VHOST_SCSI_MAX_CDB_SIZE); goto err; } - cmd = vhost_scsi_get_tag(vq, tpg, cdb, tag, lun, task_attr, + cmd = vhost_scsi_get_cmd(vq, tpg, cdb, tag, lun, task_attr, exp_data_len + prot_bytes, data_direction); if (IS_ERR(cmd)) { - vq_err(vq, "vhost_scsi_get_tag failed %ld\n", + vq_err(vq, "vhost_scsi_get_cmd failed %ld\n", PTR_ERR(cmd)); goto err; } @@ -1088,7 +1079,7 @@ &prot_iter, exp_data_len, &data_iter))) { vq_err(vq, "Failed to map iov to sgl\n"); - vhost_scsi_release_cmd(&cmd->tvc_se_cmd); + vhost_scsi_release_cmd_res(&cmd->tvc_se_cmd); goto err; } } @@ -1373,6 +1364,83 @@ wait_for_completion(&old_inflight[i]->comp); } +static void vhost_scsi_destroy_vq_cmds(struct vhost_virtqueue *vq) +{ + struct vhost_scsi_virtqueue *svq = container_of(vq, + struct vhost_scsi_virtqueue, vq); + struct vhost_scsi_cmd *tv_cmd; + unsigned int i; + + if (!svq->scsi_cmds) + return; + + for (i = 0; i < svq->max_cmds; i++) { + tv_cmd = &svq->scsi_cmds[i]; + + kfree(tv_cmd->tvc_sgl); + kfree(tv_cmd->tvc_prot_sgl); + kfree(tv_cmd->tvc_upages); + } + + sbitmap_free(&svq->scsi_tags); + kfree(svq->scsi_cmds); + svq->scsi_cmds = NULL; +} + +static int vhost_scsi_setup_vq_cmds(struct vhost_virtqueue *vq, int max_cmds) +{ + struct vhost_scsi_virtqueue *svq = container_of(vq, + struct vhost_scsi_virtqueue, vq); + struct vhost_scsi_cmd *tv_cmd; + unsigned int i; + + if (svq->scsi_cmds) + return 0; + + if (sbitmap_init_node(&svq->scsi_tags, max_cmds, -1, GFP_KERNEL, + NUMA_NO_NODE)) + return -ENOMEM; + svq->max_cmds = max_cmds; + + svq->scsi_cmds = kcalloc(max_cmds, sizeof(*tv_cmd), GFP_KERNEL); + if (!svq->scsi_cmds) { + sbitmap_free(&svq->scsi_tags); + return -ENOMEM; + } + + for (i = 0; i < max_cmds; i++) { + tv_cmd = &svq->scsi_cmds[i]; + + tv_cmd->tvc_sgl = kcalloc(VHOST_SCSI_PREALLOC_SGLS, + sizeof(struct scatterlist), + GFP_KERNEL); + if (!tv_cmd->tvc_sgl) { + pr_err("Unable to allocate tv_cmd->tvc_sgl\n"); + goto out; + } + + tv_cmd->tvc_upages = kcalloc(VHOST_SCSI_PREALLOC_UPAGES, + sizeof(struct page *), + GFP_KERNEL); + if (!tv_cmd->tvc_upages) { + pr_err("Unable to allocate tv_cmd->tvc_upages\n"); + goto out; + } + + tv_cmd->tvc_prot_sgl = kcalloc(VHOST_SCSI_PREALLOC_PROT_SGLS, + sizeof(struct scatterlist), + GFP_KERNEL); + if (!tv_cmd->tvc_prot_sgl) { + pr_err("Unable to allocate tv_cmd->tvc_prot_sgl\n"); + goto out; + } + } + return 0; +out: + vhost_scsi_destroy_vq_cmds(vq); + return -ENOMEM; +} + /* * Called from vhost_scsi_ioctl() context to walk the list of available * vhost_scsi_tpg with an active struct vhost_scsi_nexus @@ -1427,10 +1495,9 @@ if (!strcmp(tv_tport->tport_name, t->vhost_wwpn)) { if (vs->vs_tpg && vs->vs_tpg[tpg->tport_tpgt]) { - kfree(vs_tpg); mutex_unlock(&tpg->tv_tpg_mutex); ret = -EEXIST; - goto out; + goto undepend; } /* * In order to ensure individual vhost-scsi configfs @@ -1442,9 +1509,8 @@ ret = target_depend_item(&se_tpg->tpg_group.cg_item); if (ret) { pr_warn("target_depend_item() failed: %d\n", ret); - kfree(vs_tpg); mutex_unlock(&tpg->tv_tpg_mutex); - goto out; + goto undepend; } tpg->tv_tpg_vhost_count++; tpg->vhost_scsi = vs; @@ -1457,6 +1523,17 @@ if (match) { memcpy(vs->vs_vhost_wwpn, t->vhost_wwpn, sizeof(vs->vs_vhost_wwpn)); + + for (i = VHOST_SCSI_VQ_IO; i < VHOST_SCSI_MAX_VQ; i++) { + vq = &vs->vqs[i].vq; + if (!vhost_vq_is_setup(vq)) + continue; + + ret = vhost_scsi_setup_vq_cmds(vq, vq->num); + if (ret) + goto destroy_vq_cmds; + } + for (i = 0; i < VHOST_SCSI_MAX_VQ; i++) { vq = &vs->vqs[i].vq; mutex_lock(&vq->mutex); @@ -1476,7 +1553,22 @@ vhost_scsi_flush(vs); kfree(vs->vs_tpg); vs->vs_tpg = vs_tpg; + goto out; +destroy_vq_cmds: + for (i--; i >= VHOST_SCSI_VQ_IO; i--) { + if (!vhost_vq_get_backend(&vs->vqs[i].vq)) + vhost_scsi_destroy_vq_cmds(&vs->vqs[i].vq); + } +undepend: + for (i = 0; i < VHOST_SCSI_MAX_TARGET; i++) { + tpg = vs_tpg[i]; + if (tpg) { + tpg->tv_tpg_vhost_count--; + target_undepend_item(&tpg->se_tpg.tpg_group.cg_item); + } + } + kfree(vs_tpg); out: mutex_unlock(&vs->dev.mutex); mutex_unlock(&vhost_scsi_mutex); @@ -1549,6 +1641,12 @@ mutex_lock(&vq->mutex); vhost_vq_set_backend(vq, NULL); mutex_unlock(&vq->mutex); + /* + * Make sure cmds are not running before tearing them + * down. + */ + vhost_scsi_flush(vs); + vhost_scsi_destroy_vq_cmds(vq); } } /* @@ -1842,23 +1940,6 @@ mutex_unlock(&vhost_scsi_mutex); } -static void vhost_scsi_free_cmd_map_res(struct se_session *se_sess) -{ - struct vhost_scsi_cmd *tv_cmd; - unsigned int i; - - if (!se_sess->sess_cmd_map) - return; - - for (i = 0; i < VHOST_SCSI_DEFAULT_TAGS; i++) { - tv_cmd = &((struct vhost_scsi_cmd *)se_sess->sess_cmd_map)[i]; - - kfree(tv_cmd->tvc_sgl); - kfree(tv_cmd->tvc_prot_sgl); - kfree(tv_cmd->tvc_upages); - } -} - static ssize_t vhost_scsi_tpg_attrib_fabric_prot_type_store( struct config_item *item, const char *page, size_t count) { @@ -1898,45 +1979,6 @@ NULL, }; -static int vhost_scsi_nexus_cb(struct se_portal_group *se_tpg, - struct se_session *se_sess, void *p) -{ - struct vhost_scsi_cmd *tv_cmd; - unsigned int i; - - for (i = 0; i < VHOST_SCSI_DEFAULT_TAGS; i++) { - tv_cmd = &((struct vhost_scsi_cmd *)se_sess->sess_cmd_map)[i]; - - tv_cmd->tvc_sgl = kcalloc(VHOST_SCSI_PREALLOC_SGLS, - sizeof(struct scatterlist), - GFP_KERNEL); - if (!tv_cmd->tvc_sgl) { - pr_err("Unable to allocate tv_cmd->tvc_sgl\n"); - goto out; - } - - tv_cmd->tvc_upages = kcalloc(VHOST_SCSI_PREALLOC_UPAGES, - sizeof(struct page *), - GFP_KERNEL); - if (!tv_cmd->tvc_upages) { - pr_err("Unable to allocate tv_cmd->tvc_upages\n"); - goto out; - } - - tv_cmd->tvc_prot_sgl = kcalloc(VHOST_SCSI_PREALLOC_PROT_SGLS, - sizeof(struct scatterlist), - GFP_KERNEL); - if (!tv_cmd->tvc_prot_sgl) { - pr_err("Unable to allocate tv_cmd->tvc_prot_sgl\n"); - goto out; - } - } - return 0; -out: - vhost_scsi_free_cmd_map_res(se_sess); - return -ENOMEM; -} - static int vhost_scsi_make_nexus(struct vhost_scsi_tpg *tpg, const char *name) { @@ -1960,12 +2002,9 @@ * struct se_node_acl for the vhost_scsi struct se_portal_group with * the SCSI Initiator port name of the passed configfs group 'name'. */ - tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, - VHOST_SCSI_DEFAULT_TAGS, - sizeof(struct vhost_scsi_cmd), + tv_nexus->tvn_se_sess = target_setup_session(&tpg->se_tpg, 0, 0, TARGET_PROT_DIN_PASS | TARGET_PROT_DOUT_PASS, - (unsigned char *)name, tv_nexus, - vhost_scsi_nexus_cb); + (unsigned char *)name, tv_nexus, NULL); if (IS_ERR(tv_nexus->tvn_se_sess)) { mutex_unlock(&tpg->tv_tpg_mutex); kfree(tv_nexus); @@ -2015,7 +2054,6 @@ " %s Initiator Port: %s\n", vhost_scsi_dump_proto_id(tpg->tport), tv_nexus->tvn_se_sess->se_node_acl->initiatorname); - vhost_scsi_free_cmd_map_res(se_sess); /* * Release the SCSI I_T Nexus to the emulated vhost Target Port */ --- linux-5.8.0.orig/drivers/vhost/vdpa.c +++ linux-5.8.0/drivers/vhost/vdpa.c @@ -304,8 +304,10 @@ static void vhost_vdpa_config_put(struct vhost_vdpa *v) { - if (v->config_ctx) + if (v->config_ctx) { eventfd_ctx_put(v->config_ctx); + v->config_ctx = NULL; + } } static long vhost_vdpa_set_config_call(struct vhost_vdpa *v, u32 __user *argp) @@ -325,8 +327,12 @@ if (!IS_ERR_OR_NULL(ctx)) eventfd_ctx_put(ctx); - if (IS_ERR(v->config_ctx)) - return PTR_ERR(v->config_ctx); + if (IS_ERR(v->config_ctx)) { + long ret = PTR_ERR(v->config_ctx); + + v->config_ctx = NULL; + return ret; + } v->vdpa->config->set_config_cb(v->vdpa, &cb); @@ -527,6 +533,11 @@ r = iommu_map(v->domain, iova, pa, size, perm_to_iommu_flags(perm)); + if (r) + vhost_iotlb_del_range(dev->iotlb, iova, iova + size - 1); + else + atomic64_add(size >> PAGE_SHIFT, &dev->mm->pinned_vm); + return r; } @@ -555,14 +566,16 @@ unsigned long list_size = PAGE_SIZE / sizeof(struct page *); unsigned int gup_flags = FOLL_LONGTERM; unsigned long npages, cur_base, map_pfn, last_pfn = 0; - unsigned long locked, lock_limit, pinned, i; + unsigned long lock_limit, sz2pin, nchunks, i; u64 iova = msg->iova; + long pinned; int ret = 0; if (vhost_iotlb_itree_first(iotlb, msg->iova, msg->iova + msg->size - 1)) return -EEXIST; + /* Limit the use of memory for bookkeeping */ page_list = (struct page **) __get_free_page(GFP_KERNEL); if (!page_list) return -ENOMEM; @@ -571,52 +584,75 @@ gup_flags |= FOLL_WRITE; npages = PAGE_ALIGN(msg->size + (iova & ~PAGE_MASK)) >> PAGE_SHIFT; - if (!npages) - return -EINVAL; + if (!npages) { + ret = -EINVAL; + goto free; + } mmap_read_lock(dev->mm); - locked = atomic64_add_return(npages, &dev->mm->pinned_vm); lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; - - if (locked > lock_limit) { + if (npages + atomic64_read(&dev->mm->pinned_vm) > lock_limit) { ret = -ENOMEM; - goto out; + goto unlock; } cur_base = msg->uaddr & PAGE_MASK; iova &= PAGE_MASK; + nchunks = 0; while (npages) { - pinned = min_t(unsigned long, npages, list_size); - ret = pin_user_pages(cur_base, pinned, - gup_flags, page_list, NULL); - if (ret != pinned) + sz2pin = min_t(unsigned long, npages, list_size); + pinned = pin_user_pages(cur_base, sz2pin, + gup_flags, page_list, NULL); + if (sz2pin != pinned) { + if (pinned < 0) { + ret = pinned; + } else { + unpin_user_pages(page_list, pinned); + ret = -ENOMEM; + } goto out; + } + nchunks++; if (!last_pfn) map_pfn = page_to_pfn(page_list[0]); - for (i = 0; i < ret; i++) { + for (i = 0; i < pinned; i++) { unsigned long this_pfn = page_to_pfn(page_list[i]); u64 csize; if (last_pfn && (this_pfn != last_pfn + 1)) { /* Pin a contiguous chunk of memory */ csize = (last_pfn - map_pfn + 1) << PAGE_SHIFT; - if (vhost_vdpa_map(v, iova, csize, - map_pfn << PAGE_SHIFT, - msg->perm)) + ret = vhost_vdpa_map(v, iova, csize, + map_pfn << PAGE_SHIFT, + msg->perm); + if (ret) { + /* + * Unpin the pages that are left unmapped + * from this point on in the current + * page_list. The remaining outstanding + * ones which may stride across several + * chunks will be covered in the common + * error path subsequently. + */ + unpin_user_pages(&page_list[i], + pinned - i); goto out; + } + map_pfn = this_pfn; iova += csize; + nchunks = 0; } last_pfn = this_pfn; } - cur_base += ret << PAGE_SHIFT; - npages -= ret; + cur_base += pinned << PAGE_SHIFT; + npages -= pinned; } /* Pin the rest chunk */ @@ -624,10 +660,27 @@ map_pfn << PAGE_SHIFT, msg->perm); out: if (ret) { + if (nchunks) { + unsigned long pfn; + + /* + * Unpin the outstanding pages which are yet to be + * mapped but haven't due to vdpa_map() or + * pin_user_pages() failure. + * + * Mapped pages are accounted in vdpa_map(), hence + * the corresponding unpinning will be handled by + * vdpa_unmap(). + */ + WARN_ON(!last_pfn); + for (pfn = map_pfn; pfn <= last_pfn; pfn++) + unpin_user_page(pfn_to_page(pfn)); + } vhost_vdpa_unmap(v, msg->iova, msg->size); - atomic64_sub(npages, &dev->mm->pinned_vm); } +unlock: mmap_read_unlock(dev->mm); +free: free_page((unsigned long)page_list); return ret; } --- linux-5.8.0.orig/drivers/vhost/vhost.c +++ linux-5.8.0/drivers/vhost/vhost.c @@ -298,6 +298,12 @@ __vhost_vq_meta_reset(d->vqs[i]); } +bool vhost_vq_is_setup(struct vhost_virtqueue *vq) +{ + return vq->avail && vq->desc && vq->used && vhost_vq_access_ok(vq); +} +EXPORT_SYMBOL_GPL(vhost_vq_is_setup); + static void vhost_vq_reset(struct vhost_dev *dev, struct vhost_virtqueue *vq) { @@ -321,8 +327,8 @@ vq->kick = NULL; vq->call_ctx = NULL; vq->log_ctx = NULL; - vhost_reset_is_le(vq); vhost_disable_cross_endian(vq); + vhost_reset_is_le(vq); vq->busyloop_timeout = 0; vq->umem = NULL; vq->iotlb = NULL; @@ -1283,6 +1289,11 @@ vring_used_t __user *used) { + /* If an IOTLB device is present, the vring addresses are + * GIOVAs. Access validation occurs at prefetch time. */ + if (vq->iotlb) + return true; + return access_ok(desc, vhost_get_desc_size(vq, num)) && access_ok(avail, vhost_get_avail_size(vq, num)) && access_ok(used, vhost_get_used_size(vq, num)); @@ -1376,10 +1387,6 @@ if (!vq_log_access_ok(vq, vq->log_base)) return false; - /* Access validation occurs at prefetch time with IOTLB */ - if (vq->iotlb) - return true; - return vq_access_ok(vq, vq->num, vq->desc, vq->avail, vq->used); } EXPORT_SYMBOL_GPL(vhost_vq_access_ok); @@ -1511,8 +1518,7 @@ /* Also validate log access for used ring if enabled. */ if ((a.flags & (0x1 << VHOST_VRING_F_LOG)) && !log_access_ok(vq->log_base, a.log_guest_addr, - sizeof *vq->used + - vq->num * sizeof *vq->used->ring)) + vhost_get_used_size(vq, vq->num))) return -EINVAL; } --- linux-5.8.0.orig/drivers/vhost/vhost.h +++ linux-5.8.0/drivers/vhost/vhost.h @@ -183,6 +183,7 @@ struct vhost_log *log, unsigned int *log_num); void vhost_discard_vq_desc(struct vhost_virtqueue *, int n); +bool vhost_vq_is_setup(struct vhost_virtqueue *vq); int vhost_vq_init_access(struct vhost_virtqueue *); int vhost_add_used(struct vhost_virtqueue *, unsigned int head, int len); int vhost_add_used_n(struct vhost_virtqueue *, struct vring_used_elem *heads, --- linux-5.8.0.orig/drivers/vhost/vringh.c +++ linux-5.8.0/drivers/vhost/vringh.c @@ -284,13 +284,14 @@ desc_max = vrh->vring.num; up_next = -1; + /* You must want something! */ + if (WARN_ON(!riov && !wiov)) + return -EINVAL; + if (riov) riov->i = riov->used = 0; - else if (wiov) + if (wiov) wiov->i = wiov->used = 0; - else - /* You must want something! */ - BUG(); for (;;) { void *addr; --- linux-5.8.0.orig/drivers/video/backlight/sky81452-backlight.c +++ linux-5.8.0/drivers/video/backlight/sky81452-backlight.c @@ -196,6 +196,7 @@ num_entry); if (ret < 0) { dev_err(dev, "led-sources node is invalid.\n"); + of_node_put(np); return ERR_PTR(-EINVAL); } --- linux-5.8.0.orig/drivers/video/console/Kconfig +++ linux-5.8.0/drivers/video/console/Kconfig @@ -22,52 +22,6 @@ Say Y. -config VGACON_SOFT_SCROLLBACK - bool "Enable Scrollback Buffer in System RAM" - depends on VGA_CONSOLE - default n - help - The scrollback buffer of the standard VGA console is located in - the VGA RAM. The size of this RAM is fixed and is quite small. - If you require a larger scrollback buffer, this can be placed in - System RAM which is dynamically allocated during initialization. - Placing the scrollback buffer in System RAM will slightly slow - down the console. - - If you want this feature, say 'Y' here and enter the amount of - RAM to allocate for this buffer. If unsure, say 'N'. - -config VGACON_SOFT_SCROLLBACK_SIZE - int "Scrollback Buffer Size (in KB)" - depends on VGACON_SOFT_SCROLLBACK - range 1 1024 - default "64" - help - Enter the amount of System RAM to allocate for scrollback - buffers of VGA consoles. Each 64KB will give you approximately - 16 80x25 screenfuls of scrollback buffer. - -config VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT - bool "Persistent Scrollback History for each console by default" - depends on VGACON_SOFT_SCROLLBACK - default n - help - Say Y here if the scrollback history should persist by default when - switching between consoles. Otherwise, the scrollback history will be - flushed each time the console is switched. This feature can also be - enabled using the boot command line parameter - 'vgacon.scrollback_persistent=1'. - - This feature might break your tool of choice to flush the scrollback - buffer, e.g. clear(1) will work fine but Debian's clear_console(1) - will be broken, which might cause security issues. - You can use the escape sequence \e[3J instead if this feature is - activated. - - Note that a buffer of VGACON_SOFT_SCROLLBACK_SIZE is taken for each - created tty device. - So if you use a RAM-constrained system, say N here. - config MDA_CONSOLE depends on !M68K && !PARISC && ISA tristate "MDA text console (dual-headed)" --- linux-5.8.0.orig/drivers/video/console/newport_con.c +++ linux-5.8.0/drivers/video/console/newport_con.c @@ -31,17 +31,14 @@ #include #include -#define FONT_DATA ((unsigned char *)font_vga_8x16.data) +#define NEWPORT_LEN 0x10000 -/* borrowed from fbcon.c */ -#define REFCOUNT(fd) (((int *)(fd))[-1]) -#define FNTSIZE(fd) (((int *)(fd))[-2]) -#define FNTCHARCNT(fd) (((int *)(fd))[-3]) -#define FONT_EXTRA_WORDS 3 +#define FONT_DATA ((unsigned char *)font_vga_8x16.data) static unsigned char *font_data[MAX_NR_CONSOLES]; static struct newport_regs *npregs; +static unsigned long newport_addr; static int logo_active; static int topscan; @@ -519,6 +516,7 @@ FNTSIZE(new_data) = size; FNTCHARCNT(new_data) = op->charcount; REFCOUNT(new_data) = 0; /* usage counter */ + FNTSUM(new_data) = 0; p = new_data; for (i = 0; i < op->charcount; i++) { @@ -701,7 +699,6 @@ static int newport_probe(struct gio_device *dev, const struct gio_device_id *id) { - unsigned long newport_addr; int err; if (!dev->resource.start) @@ -711,7 +708,7 @@ return -EBUSY; /* we only support one Newport as console */ newport_addr = dev->resource.start + 0xF0000; - if (!request_mem_region(newport_addr, 0x10000, "Newport")) + if (!request_mem_region(newport_addr, NEWPORT_LEN, "Newport")) return -ENODEV; npregs = (struct newport_regs *)/* ioremap cannot fail */ @@ -719,6 +716,11 @@ console_lock(); err = do_take_over_console(&newport_con, 0, MAX_NR_CONSOLES - 1, 1); console_unlock(); + + if (err) { + iounmap((void *)npregs); + release_mem_region(newport_addr, NEWPORT_LEN); + } return err; } @@ -726,6 +728,7 @@ { give_up_console(&newport_con); iounmap((void *)npregs); + release_mem_region(newport_addr, NEWPORT_LEN); } static struct gio_device_id newport_ids[] = { --- linux-5.8.0.orig/drivers/video/console/vgacon.c +++ linux-5.8.0/drivers/video/console/vgacon.c @@ -165,210 +165,6 @@ write_vga(12, (c->vc_visible_origin - vga_vram_base) / 2); } -#ifdef CONFIG_VGACON_SOFT_SCROLLBACK -/* software scrollback */ -struct vgacon_scrollback_info { - void *data; - int tail; - int size; - int rows; - int cnt; - int cur; - int save; - int restore; -}; - -static struct vgacon_scrollback_info *vgacon_scrollback_cur; -static struct vgacon_scrollback_info vgacon_scrollbacks[MAX_NR_CONSOLES]; -static bool scrollback_persistent = \ - IS_ENABLED(CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT); -module_param_named(scrollback_persistent, scrollback_persistent, bool, 0000); -MODULE_PARM_DESC(scrollback_persistent, "Enable persistent scrollback for all vga consoles"); - -static void vgacon_scrollback_reset(int vc_num, size_t reset_size) -{ - struct vgacon_scrollback_info *scrollback = &vgacon_scrollbacks[vc_num]; - - if (scrollback->data && reset_size > 0) - memset(scrollback->data, 0, reset_size); - - scrollback->cnt = 0; - scrollback->tail = 0; - scrollback->cur = 0; -} - -static void vgacon_scrollback_init(int vc_num) -{ - int pitch = vga_video_num_columns * 2; - size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024; - int rows = size / pitch; - void *data; - - data = kmalloc_array(CONFIG_VGACON_SOFT_SCROLLBACK_SIZE, 1024, - GFP_NOWAIT); - - vgacon_scrollbacks[vc_num].data = data; - vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num]; - - vgacon_scrollback_cur->rows = rows - 1; - vgacon_scrollback_cur->size = rows * pitch; - - vgacon_scrollback_reset(vc_num, size); -} - -static void vgacon_scrollback_switch(int vc_num) -{ - if (!scrollback_persistent) - vc_num = 0; - - if (!vgacon_scrollbacks[vc_num].data) { - vgacon_scrollback_init(vc_num); - } else { - if (scrollback_persistent) { - vgacon_scrollback_cur = &vgacon_scrollbacks[vc_num]; - } else { - size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024; - - vgacon_scrollback_reset(vc_num, size); - } - } -} - -static void vgacon_scrollback_startup(void) -{ - vgacon_scrollback_cur = &vgacon_scrollbacks[0]; - vgacon_scrollback_init(0); -} - -static void vgacon_scrollback_update(struct vc_data *c, int t, int count) -{ - void *p; - - if (!vgacon_scrollback_cur->data || !vgacon_scrollback_cur->size || - c->vc_num != fg_console) - return; - - p = (void *) (c->vc_origin + t * c->vc_size_row); - - while (count--) { - scr_memcpyw(vgacon_scrollback_cur->data + - vgacon_scrollback_cur->tail, - p, c->vc_size_row); - - vgacon_scrollback_cur->cnt++; - p += c->vc_size_row; - vgacon_scrollback_cur->tail += c->vc_size_row; - - if (vgacon_scrollback_cur->tail >= vgacon_scrollback_cur->size) - vgacon_scrollback_cur->tail = 0; - - if (vgacon_scrollback_cur->cnt > vgacon_scrollback_cur->rows) - vgacon_scrollback_cur->cnt = vgacon_scrollback_cur->rows; - - vgacon_scrollback_cur->cur = vgacon_scrollback_cur->cnt; - } -} - -static void vgacon_restore_screen(struct vc_data *c) -{ - c->vc_origin = c->vc_visible_origin; - vgacon_scrollback_cur->save = 0; - - if (!vga_is_gfx && !vgacon_scrollback_cur->restore) { - scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf, - c->vc_screenbuf_size > vga_vram_size ? - vga_vram_size : c->vc_screenbuf_size); - vgacon_scrollback_cur->restore = 1; - vgacon_scrollback_cur->cur = vgacon_scrollback_cur->cnt; - } -} - -static void vgacon_scrolldelta(struct vc_data *c, int lines) -{ - int start, end, count, soff; - - if (!lines) { - vgacon_restore_screen(c); - return; - } - - if (!vgacon_scrollback_cur->data) - return; - - if (!vgacon_scrollback_cur->save) { - vgacon_cursor(c, CM_ERASE); - vgacon_save_screen(c); - c->vc_origin = (unsigned long)c->vc_screenbuf; - vgacon_scrollback_cur->save = 1; - } - - vgacon_scrollback_cur->restore = 0; - start = vgacon_scrollback_cur->cur + lines; - end = start + abs(lines); - - if (start < 0) - start = 0; - - if (start > vgacon_scrollback_cur->cnt) - start = vgacon_scrollback_cur->cnt; - - if (end < 0) - end = 0; - - if (end > vgacon_scrollback_cur->cnt) - end = vgacon_scrollback_cur->cnt; - - vgacon_scrollback_cur->cur = start; - count = end - start; - soff = vgacon_scrollback_cur->tail - - ((vgacon_scrollback_cur->cnt - end) * c->vc_size_row); - soff -= count * c->vc_size_row; - - if (soff < 0) - soff += vgacon_scrollback_cur->size; - - count = vgacon_scrollback_cur->cnt - start; - - if (count > c->vc_rows) - count = c->vc_rows; - - if (count) { - int copysize; - - int diff = c->vc_rows - count; - void *d = (void *) c->vc_visible_origin; - void *s = (void *) c->vc_screenbuf; - - count *= c->vc_size_row; - /* how much memory to end of buffer left? */ - copysize = min(count, vgacon_scrollback_cur->size - soff); - scr_memcpyw(d, vgacon_scrollback_cur->data + soff, copysize); - d += copysize; - count -= copysize; - - if (count) { - scr_memcpyw(d, vgacon_scrollback_cur->data, count); - d += count; - } - - if (diff) - scr_memcpyw(d, s, diff * c->vc_size_row); - } else - vgacon_cursor(c, CM_MOVE); -} - -static void vgacon_flush_scrollback(struct vc_data *c) -{ - size_t size = CONFIG_VGACON_SOFT_SCROLLBACK_SIZE * 1024; - - vgacon_scrollback_reset(c->vc_num, size); -} -#else -#define vgacon_scrollback_startup(...) do { } while (0) -#define vgacon_scrollback_init(...) do { } while (0) -#define vgacon_scrollback_update(...) do { } while (0) -#define vgacon_scrollback_switch(...) do { } while (0) - static void vgacon_restore_screen(struct vc_data *c) { if (c->vc_origin != c->vc_visible_origin) @@ -382,11 +178,6 @@ vga_set_mem_top(c); } -static void vgacon_flush_scrollback(struct vc_data *c) -{ -} -#endif /* CONFIG_VGACON_SOFT_SCROLLBACK */ - static const char *vgacon_startup(void) { const char *display_desc = NULL; @@ -569,10 +360,7 @@ vgacon_xres = screen_info.orig_video_cols * VGA_FONTWIDTH; vgacon_yres = vga_scan_lines; - if (!vga_init_done) { - vgacon_scrollback_startup(); - vga_init_done = true; - } + vga_init_done = true; return display_desc; } @@ -863,7 +651,6 @@ vgacon_doresize(c, c->vc_cols, c->vc_rows); } - vgacon_scrollback_switch(c->vc_num); return 0; /* Redrawing not needed */ } @@ -1380,7 +1167,6 @@ oldo = c->vc_origin; delta = lines * c->vc_size_row; if (dir == SM_UP) { - vgacon_scrollback_update(c, t, lines); if (c->vc_scr_end + delta >= vga_vram_end) { scr_memcpyw((u16 *) vga_vram_base, (u16 *) (oldo + delta), @@ -1444,7 +1230,6 @@ .con_save_screen = vgacon_save_screen, .con_build_attr = vgacon_build_attr, .con_invert_region = vgacon_invert_region, - .con_flush_scrollback = vgacon_flush_scrollback, }; EXPORT_SYMBOL(vga_con); --- linux-5.8.0.orig/drivers/video/fbdev/Kconfig +++ linux-5.8.0/drivers/video/fbdev/Kconfig @@ -1269,6 +1269,7 @@ select FB_CFB_IMAGEBLIT select FB_BACKLIGHT if FB_ATY_BACKLIGHT select FB_MACMODES if PPC + select FB_ATY_CT if SPARC64 && PCI help This driver supports graphics boards with the ATI Mach64 chips. Say Y if you have such a graphics board. @@ -1279,7 +1280,6 @@ config FB_ATY_CT bool "Mach64 CT/VT/GT/LT (incl. 3D RAGE) support" depends on PCI && FB_ATY - default y if SPARC64 && PCI help Say Y here to support use of ATI's 64-bit Rage boards (or other boards based on the Mach64 CT, VT, GT, and LT chipsets) as a --- linux-5.8.0.orig/drivers/video/fbdev/atmel_lcdfb.c +++ linux-5.8.0/drivers/video/fbdev/atmel_lcdfb.c @@ -987,8 +987,8 @@ } INIT_LIST_HEAD(&pdata->pwr_gpios); - ret = -ENOMEM; for (i = 0; i < gpiod_count(dev, "atmel,power-control"); i++) { + ret = -ENOMEM; gpiod = devm_gpiod_get_index(dev, "atmel,power-control", i, GPIOD_ASIS); if (IS_ERR(gpiod)) --- linux-5.8.0.orig/drivers/video/fbdev/aty/radeon_base.c +++ linux-5.8.0/drivers/video/fbdev/aty/radeon_base.c @@ -2311,7 +2311,7 @@ ret = radeon_kick_out_firmware_fb(pdev); if (ret) - return ret; + goto err_release_fb; /* request the mem regions */ ret = pci_request_region(pdev, 0, "radeonfb framebuffer"); --- linux-5.8.0.orig/drivers/video/fbdev/controlfb.c +++ linux-5.8.0/drivers/video/fbdev/controlfb.c @@ -49,6 +49,8 @@ #include #ifdef CONFIG_PPC_PMAC #include +#endif +#ifdef CONFIG_BOOTX_TEXT #include #endif --- linux-5.8.0.orig/drivers/video/fbdev/core/bitblit.c +++ linux-5.8.0/drivers/video/fbdev/core/bitblit.c @@ -234,7 +234,7 @@ } static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg) + int fg, int bg) { struct fb_cursor cursor; struct fbcon_ops *ops = info->fbcon_par; @@ -247,15 +247,6 @@ cursor.set = 0; - if (softback_lines) { - if (y + softback_lines >= vc->vc_rows) { - mode = CM_ERASE; - ops->cursor_flash = 0; - return; - } else - y += softback_lines; - } - c = scr_readw((u16 *) vc->vc_pos); attribute = get_attribute(info, c); src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height)); --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon.c +++ linux-5.8.0/drivers/video/fbdev/core/fbcon.c @@ -122,12 +122,6 @@ /* logo_shown is an index to vc_cons when >= 0; otherwise follows FBCON_LOGO enums. */ static int logo_shown = FBCON_LOGO_CANSHOW; -/* Software scrollback */ -static int fbcon_softback_size = 32768; -static unsigned long softback_buf, softback_curr; -static unsigned long softback_in; -static unsigned long softback_top, softback_end; -static int softback_lines; /* console mappings */ static int first_fb_vc; static int last_fb_vc = MAX_NR_CONSOLES - 1; @@ -167,8 +161,6 @@ static const struct consw fb_con; -#define CM_SOFTBACK (8) - #define advance_row(p, delta) (unsigned short *)((unsigned long)(p) + (delta) * vc->vc_size_row) static int fbcon_set_origin(struct vc_data *); @@ -373,18 +365,6 @@ return color; } -static void fbcon_update_softback(struct vc_data *vc) -{ - int l = fbcon_softback_size / vc->vc_size_row; - - if (l > 5) - softback_end = softback_buf + l * vc->vc_size_row; - else - /* Smaller scrollback makes no sense, and 0 would screw - the operation totally */ - softback_top = 0; -} - static void fb_flashcursor(struct work_struct *work) { struct fb_info *info = container_of(work, struct fb_info, queue); @@ -414,7 +394,7 @@ c = scr_readw((u16 *) vc->vc_pos); mode = (!ops->cursor_flash || ops->cursor_state.enable) ? CM_ERASE : CM_DRAW; - ops->cursor(vc, info, mode, softback_lines, get_color(vc, info, c, 1), + ops->cursor(vc, info, mode, get_color(vc, info, c, 1), get_color(vc, info, c, 0)); console_unlock(); } @@ -471,13 +451,7 @@ } if (!strncmp(options, "scrollback:", 11)) { - options += 11; - if (*options) { - fbcon_softback_size = simple_strtoul(options, &options, 0); - if (*options == 'k' || *options == 'K') { - fbcon_softback_size *= 1024; - } - } + pr_warn("Ignoring scrollback size option\n"); continue; } @@ -1022,31 +996,6 @@ set_blitting_type(vc, info); - if (info->fix.type != FB_TYPE_TEXT) { - if (fbcon_softback_size) { - if (!softback_buf) { - softback_buf = - (unsigned long) - kvmalloc(fbcon_softback_size, - GFP_KERNEL); - if (!softback_buf) { - fbcon_softback_size = 0; - softback_top = 0; - } - } - } else { - if (softback_buf) { - kvfree((void *) softback_buf); - softback_buf = 0; - softback_top = 0; - } - } - if (softback_buf) - softback_in = softback_top = softback_curr = - softback_buf; - softback_lines = 0; - } - /* Setup default font */ if (!p->fontdata && !vc->vc_font.data) { if (!fontname[0] || !(font = find_font(fontname))) @@ -1086,7 +1035,7 @@ struct vc_data *svc = *default_mode; struct fbcon_display *t, *p = &fb_display[vc->vc_num]; int logo = 1, new_rows, new_cols, rows, cols, charcnt = 256; - int cap, ret; + int ret; if (WARN_ON(info_idx == -1)) return; @@ -1095,7 +1044,6 @@ con2fb_map[vc->vc_num] = info_idx; info = registered_fb[con2fb_map[vc->vc_num]]; - cap = info->flags; if (logo_shown < 0 && console_loglevel <= CONSOLE_LOGLEVEL_QUIET) logo_shown = FBCON_LOGO_DONTSHOW; @@ -1200,11 +1148,13 @@ ops->graphics = 0; - if ((cap & FBINFO_HWACCEL_COPYAREA) && - !(cap & FBINFO_HWACCEL_DISABLED)) - p->scrollmode = SCROLL_MOVE; - else /* default to something safe */ - p->scrollmode = SCROLL_REDRAW; + /* + * No more hw acceleration for fbcon. + * + * FIXME: Garbage collect all the now dead code after sufficient time + * has passed. + */ + p->scrollmode = SCROLL_REDRAW; /* * ++guenther: console.c:vc_allocate() relies on initializing @@ -1220,9 +1170,6 @@ if (logo) fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows); - if (vc == svc && softback_buf) - fbcon_update_softback(vc); - if (ops->rotate_font && ops->rotate_font(info, vc)) { ops->rotate = FB_ROTATE_UR; set_blitting_type(vc, info); @@ -1385,7 +1332,6 @@ { struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; struct fbcon_ops *ops = info->fbcon_par; - int y; int c = scr_readw((u16 *) vc->vc_pos); ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); @@ -1399,16 +1345,11 @@ fbcon_add_cursor_timer(info); ops->cursor_flash = (mode == CM_ERASE) ? 0 : 1; - if (mode & CM_SOFTBACK) { - mode &= ~CM_SOFTBACK; - y = softback_lines; - } else { - if (softback_lines) - fbcon_set_origin(vc); - y = 0; - } - ops->cursor(vc, info, mode, y, get_color(vc, info, c, 1), + if (!ops->cursor) + return; + + ops->cursor(vc, info, mode, get_color(vc, info, c, 1), get_color(vc, info, c, 0)); } @@ -1479,8 +1420,6 @@ if (con_is_visible(vc)) { update_screen(vc); - if (softback_buf) - fbcon_update_softback(vc); } } @@ -1618,99 +1557,6 @@ scrollback_current = 0; } -static void fbcon_redraw_softback(struct vc_data *vc, struct fbcon_display *p, - long delta) -{ - int count = vc->vc_rows; - unsigned short *d, *s; - unsigned long n; - int line = 0; - - d = (u16 *) softback_curr; - if (d == (u16 *) softback_in) - d = (u16 *) vc->vc_origin; - n = softback_curr + delta * vc->vc_size_row; - softback_lines -= delta; - if (delta < 0) { - if (softback_curr < softback_top && n < softback_buf) { - n += softback_end - softback_buf; - if (n < softback_top) { - softback_lines -= - (softback_top - n) / vc->vc_size_row; - n = softback_top; - } - } else if (softback_curr >= softback_top - && n < softback_top) { - softback_lines -= - (softback_top - n) / vc->vc_size_row; - n = softback_top; - } - } else { - if (softback_curr > softback_in && n >= softback_end) { - n += softback_buf - softback_end; - if (n > softback_in) { - n = softback_in; - softback_lines = 0; - } - } else if (softback_curr <= softback_in && n > softback_in) { - n = softback_in; - softback_lines = 0; - } - } - if (n == softback_curr) - return; - softback_curr = n; - s = (u16 *) softback_curr; - if (s == (u16 *) softback_in) - s = (u16 *) vc->vc_origin; - while (count--) { - unsigned short *start; - unsigned short *le; - unsigned short c; - int x = 0; - unsigned short attr = 1; - - start = s; - le = advance_row(s, 1); - do { - c = scr_readw(s); - if (attr != (c & 0xff00)) { - attr = c & 0xff00; - if (s > start) { - fbcon_putcs(vc, start, s - start, - line, x); - x += s - start; - start = s; - } - } - if (c == scr_readw(d)) { - if (s > start) { - fbcon_putcs(vc, start, s - start, - line, x); - x += s - start + 1; - start = s + 1; - } else { - x++; - start++; - } - } - s++; - d++; - } while (s < le); - if (s > start) - fbcon_putcs(vc, start, s - start, line, x); - line++; - if (d == (u16 *) softback_end) - d = (u16 *) softback_buf; - if (d == (u16 *) softback_in) - d = (u16 *) vc->vc_origin; - if (s == (u16 *) softback_end) - s = (u16 *) softback_buf; - if (s == (u16 *) softback_in) - s = (u16 *) vc->vc_origin; - } -} - static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p, int line, int count, int dy) { @@ -1850,31 +1696,6 @@ } } -static inline void fbcon_softback_note(struct vc_data *vc, int t, - int count) -{ - unsigned short *p; - - if (vc->vc_num != fg_console) - return; - p = (unsigned short *) (vc->vc_origin + t * vc->vc_size_row); - - while (count) { - scr_memcpyw((u16 *) softback_in, p, vc->vc_size_row); - count--; - p = advance_row(p, 1); - softback_in += vc->vc_size_row; - if (softback_in == softback_end) - softback_in = softback_buf; - if (softback_in == softback_top) { - softback_top += vc->vc_size_row; - if (softback_top == softback_end) - softback_top = softback_buf; - } - } - softback_curr = softback_in; -} - static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b, enum con_scroll dir, unsigned int count) { @@ -1897,8 +1718,6 @@ case SM_UP: if (count > vc->vc_rows) /* Maximum realistic size */ count = vc->vc_rows; - if (softback_top) - fbcon_softback_note(vc, t, count); if (logo_shown >= 0) goto redraw_up; switch (p->scrollmode) { @@ -2150,47 +1969,20 @@ { struct fbcon_ops *ops = info->fbcon_par; int fh = vc->vc_font.height; - int cap = info->flags; - u16 t = 0; - int ypan = FBCON_SWAP(ops->rotate, info->fix.ypanstep, - info->fix.xpanstep); - int ywrap = FBCON_SWAP(ops->rotate, info->fix.ywrapstep, t); int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual, info->var.xres_virtual); - int good_pan = (cap & FBINFO_HWACCEL_YPAN) && - divides(ypan, vc->vc_font.height) && vyres > yres; - int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) && - divides(ywrap, vc->vc_font.height) && - divides(vc->vc_font.height, vyres) && - divides(vc->vc_font.height, yres); - int reading_fast = cap & FBINFO_READS_FAST; - int fast_copyarea = (cap & FBINFO_HWACCEL_COPYAREA) && - !(cap & FBINFO_HWACCEL_DISABLED); - int fast_imageblit = (cap & FBINFO_HWACCEL_IMAGEBLIT) && - !(cap & FBINFO_HWACCEL_DISABLED); p->vrows = vyres/fh; if (yres > (fh * (vc->vc_rows + 1))) p->vrows -= (yres - (fh * vc->vc_rows)) / fh; if ((yres % fh) && (vyres % fh < yres % fh)) p->vrows--; - - if (good_wrap || good_pan) { - if (reading_fast || fast_copyarea) - p->scrollmode = good_wrap ? - SCROLL_WRAP_MOVE : SCROLL_PAN_MOVE; - else - p->scrollmode = good_wrap ? SCROLL_REDRAW : - SCROLL_PAN_REDRAW; - } else { - if (reading_fast || (fast_copyarea && !fast_imageblit)) - p->scrollmode = SCROLL_MOVE; - else - p->scrollmode = SCROLL_REDRAW; - } } +#define PITCH(w) (((w) + 7) >> 3) +#define CALC_FONTSZ(h, p, c) ((h) * (p) * (c)) /* size = height * pitch * charcount */ + static int fbcon_resize(struct vc_data *vc, unsigned int width, unsigned int height, unsigned int user) { @@ -2200,6 +1992,24 @@ struct fb_var_screeninfo var = info->var; int x_diff, y_diff, virt_w, virt_h, virt_fw, virt_fh; + if (p->userfont && FNTSIZE(vc->vc_font.data)) { + int size; + int pitch = PITCH(vc->vc_font.width); + + /* + * If user font, ensure that a possible change to user font + * height or width will not allow a font data out-of-bounds access. + * NOTE: must use original charcount in calculation as font + * charcount can change and cannot be used to determine the + * font data allocated size. + */ + if (pitch <= 0) + return -EINVAL; + size = CALC_FONTSZ(vc->vc_font.height, pitch, FNTCHARCNT(vc->vc_font.data)); + if (size > FNTSIZE(vc->vc_font.data)) + return -EINVAL; + } + virt_w = FBCON_SWAP(ops->rotate, width, height); virt_h = FBCON_SWAP(ops->rotate, height, width); virt_fw = FBCON_SWAP(ops->rotate, vc->vc_font.width, @@ -2248,14 +2058,6 @@ info = registered_fb[con2fb_map[vc->vc_num]]; ops = info->fbcon_par; - if (softback_top) { - if (softback_lines) - fbcon_set_origin(vc); - softback_top = softback_curr = softback_in = softback_buf; - softback_lines = 0; - fbcon_update_softback(vc); - } - if (logo_shown >= 0) { struct vc_data *conp2 = vc_cons[logo_shown].d; @@ -2471,6 +2273,9 @@ if (font->width <= 8) { j = vc->vc_font.height; + if (font->charcount * j > FNTSIZE(fontdata)) + return -EINVAL; + for (i = 0; i < font->charcount; i++) { memcpy(data, fontdata, j); memset(data + j, 0, 32 - j); @@ -2479,6 +2284,9 @@ } } else if (font->width <= 16) { j = vc->vc_font.height * 2; + if (font->charcount * j > FNTSIZE(fontdata)) + return -EINVAL; + for (i = 0; i < font->charcount; i++) { memcpy(data, fontdata, j); memset(data + j, 0, 64 - j); @@ -2486,6 +2294,9 @@ fontdata += j; } } else if (font->width <= 24) { + if (font->charcount * (vc->vc_font.height * sizeof(u32)) > FNTSIZE(fontdata)) + return -EINVAL; + for (i = 0; i < font->charcount; i++) { for (j = 0; j < vc->vc_font.height; j++) { *data++ = fontdata[0]; @@ -2498,6 +2309,9 @@ } } else { j = vc->vc_font.height * 4; + if (font->charcount * j > FNTSIZE(fontdata)) + return -EINVAL; + for (i = 0; i < font->charcount; i++) { memcpy(data, fontdata, j); memset(data + j, 0, 128 - j); @@ -2579,9 +2393,6 @@ int cnt; char *old_data = NULL; - if (con_is_visible(vc) && softback_lines) - fbcon_set_origin(vc); - resize = (w != vc->vc_font.width) || (h != vc->vc_font.height); if (p->userfont) old_data = vc->vc_font.data; @@ -2607,8 +2418,6 @@ cols /= w; rows /= h; vc_resize(vc, cols, rows); - if (con_is_visible(vc) && softback_buf) - fbcon_update_softback(vc); } else if (con_is_visible(vc) && vc->vc_mode == KD_TEXT) { fbcon_clear_margins(vc, 0); @@ -2652,7 +2461,7 @@ int size; int i, csum; u8 *new_data, *data = font->data; - int pitch = (font->width+7) >> 3; + int pitch = PITCH(font->width); /* Is there a reason why fbconsole couldn't handle any charcount >256? * If not this check should be changed to charcount < 256 */ @@ -2668,7 +2477,7 @@ if (fbcon_invalid_charcount(info, charcount)) return -EINVAL; - size = h * pitch * charcount; + size = CALC_FONTSZ(h, pitch, charcount); new_data = kmalloc(FONT_EXTRA_WORDS * sizeof(int) + size, GFP_USER); @@ -2767,19 +2576,7 @@ static u16 *fbcon_screen_pos(struct vc_data *vc, int offset) { - unsigned long p; - int line; - - if (vc->vc_num != fg_console || !softback_lines) - return (u16 *) (vc->vc_origin + offset); - line = offset / vc->vc_size_row; - if (line >= softback_lines) - return (u16 *) (vc->vc_origin + offset - - softback_lines * vc->vc_size_row); - p = softback_curr + offset; - if (p >= softback_end) - p += softback_buf - softback_end; - return (u16 *) p; + return (u16 *) (vc->vc_origin + offset); } static unsigned long fbcon_getxy(struct vc_data *vc, unsigned long pos, @@ -2793,22 +2590,7 @@ x = offset % vc->vc_cols; y = offset / vc->vc_cols; - if (vc->vc_num == fg_console) - y += softback_lines; ret = pos + (vc->vc_cols - x) * 2; - } else if (vc->vc_num == fg_console && softback_lines) { - unsigned long offset = pos - softback_curr; - - if (pos < softback_curr) - offset += softback_end - softback_buf; - offset /= 2; - x = offset % vc->vc_cols; - y = offset / vc->vc_cols; - ret = pos + (vc->vc_cols - x) * 2; - if (ret == softback_end) - ret = softback_buf; - if (ret == softback_in) - ret = vc->vc_origin; } else { /* Should not happen */ x = y = 0; @@ -2836,106 +2618,11 @@ a = ((a) & 0x88ff) | (((a) & 0x7000) >> 4) | (((a) & 0x0700) << 4); scr_writew(a, p++); - if (p == (u16 *) softback_end) - p = (u16 *) softback_buf; - if (p == (u16 *) softback_in) - p = (u16 *) vc->vc_origin; } } -static void fbcon_scrolldelta(struct vc_data *vc, int lines) -{ - struct fb_info *info = registered_fb[con2fb_map[fg_console]]; - struct fbcon_ops *ops = info->fbcon_par; - struct fbcon_display *disp = &fb_display[fg_console]; - int offset, limit, scrollback_old; - - if (softback_top) { - if (vc->vc_num != fg_console) - return; - if (vc->vc_mode != KD_TEXT || !lines) - return; - if (logo_shown >= 0) { - struct vc_data *conp2 = vc_cons[logo_shown].d; - - if (conp2->vc_top == logo_lines - && conp2->vc_bottom == conp2->vc_rows) - conp2->vc_top = 0; - if (logo_shown == vc->vc_num) { - unsigned long p, q; - int i; - - p = softback_in; - q = vc->vc_origin + - logo_lines * vc->vc_size_row; - for (i = 0; i < logo_lines; i++) { - if (p == softback_top) - break; - if (p == softback_buf) - p = softback_end; - p -= vc->vc_size_row; - q -= vc->vc_size_row; - scr_memcpyw((u16 *) q, (u16 *) p, - vc->vc_size_row); - } - softback_in = softback_curr = p; - update_region(vc, vc->vc_origin, - logo_lines * vc->vc_cols); - } - logo_shown = FBCON_LOGO_CANSHOW; - } - fbcon_cursor(vc, CM_ERASE | CM_SOFTBACK); - fbcon_redraw_softback(vc, disp, lines); - fbcon_cursor(vc, CM_DRAW | CM_SOFTBACK); - return; - } - - if (!scrollback_phys_max) - return; - - scrollback_old = scrollback_current; - scrollback_current -= lines; - if (scrollback_current < 0) - scrollback_current = 0; - else if (scrollback_current > scrollback_max) - scrollback_current = scrollback_max; - if (scrollback_current == scrollback_old) - return; - - if (fbcon_is_inactive(vc, info)) - return; - - fbcon_cursor(vc, CM_ERASE); - - offset = disp->yscroll - scrollback_current; - limit = disp->vrows; - switch (disp->scrollmode) { - case SCROLL_WRAP_MOVE: - info->var.vmode |= FB_VMODE_YWRAP; - break; - case SCROLL_PAN_MOVE: - case SCROLL_PAN_REDRAW: - limit -= vc->vc_rows; - info->var.vmode &= ~FB_VMODE_YWRAP; - break; - } - if (offset < 0) - offset += limit; - else if (offset >= limit) - offset -= limit; - - ops->var.xoffset = 0; - ops->var.yoffset = offset * vc->vc_font.height; - ops->update_start(info); - - if (!scrollback_current) - fbcon_cursor(vc, CM_DRAW); -} - static int fbcon_set_origin(struct vc_data *vc) { - if (softback_lines) - fbcon_scrolldelta(vc, softback_lines); return 0; } @@ -2999,8 +2686,6 @@ fbcon_set_palette(vc, color_table); update_screen(vc); - if (softback_buf) - fbcon_update_softback(vc); } } @@ -3411,7 +3096,6 @@ .con_font_default = fbcon_set_def_font, .con_font_copy = fbcon_copy_font, .con_set_palette = fbcon_set_palette, - .con_scrolldelta = fbcon_scrolldelta, .con_set_origin = fbcon_set_origin, .con_invert_region = fbcon_invert_region, .con_screen_pos = fbcon_screen_pos, @@ -3646,9 +3330,6 @@ } #endif - kvfree((void *)softback_buf); - softback_buf = 0UL; - for_each_registered_fb(i) { int pending = 0; --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon.h +++ linux-5.8.0/drivers/video/fbdev/core/fbcon.h @@ -62,7 +62,7 @@ void (*clear_margins)(struct vc_data *vc, struct fb_info *info, int color, int bottom_only); void (*cursor)(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg); + int fg, int bg); int (*update_start)(struct fb_info *info); int (*rotate_font)(struct fb_info *info, struct vc_data *vc); struct fb_var_screeninfo var; /* copy of the current fb_var_screeninfo */ @@ -152,13 +152,6 @@ #define attr_bgcol_ec(bgshift, vc, info) attr_col_ec(bgshift, vc, info, 0) #define attr_fgcol_ec(fgshift, vc, info) attr_col_ec(fgshift, vc, info, 1) -/* Font */ -#define REFCOUNT(fd) (((int *)(fd))[-1]) -#define FNTSIZE(fd) (((int *)(fd))[-2]) -#define FNTCHARCNT(fd) (((int *)(fd))[-3]) -#define FNTSUM(fd) (((int *)(fd))[-4]) -#define FONT_EXTRA_WORDS 4 - /* * Scroll Method */ --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon_ccw.c +++ linux-5.8.0/drivers/video/fbdev/core/fbcon_ccw.c @@ -219,7 +219,7 @@ } static void ccw_cursor(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg) + int fg, int bg) { struct fb_cursor cursor; struct fbcon_ops *ops = info->fbcon_par; @@ -236,15 +236,6 @@ cursor.set = 0; - if (softback_lines) { - if (y + softback_lines >= vc->vc_rows) { - mode = CM_ERASE; - ops->cursor_flash = 0; - return; - } else - y += softback_lines; - } - c = scr_readw((u16 *) vc->vc_pos); attribute = get_attribute(info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width)); --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon_cw.c +++ linux-5.8.0/drivers/video/fbdev/core/fbcon_cw.c @@ -202,7 +202,7 @@ } static void cw_cursor(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg) + int fg, int bg) { struct fb_cursor cursor; struct fbcon_ops *ops = info->fbcon_par; @@ -219,15 +219,6 @@ cursor.set = 0; - if (softback_lines) { - if (y + softback_lines >= vc->vc_rows) { - mode = CM_ERASE; - ops->cursor_flash = 0; - return; - } else - y += softback_lines; - } - c = scr_readw((u16 *) vc->vc_pos); attribute = get_attribute(info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width)); --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon_rotate.c +++ linux-5.8.0/drivers/video/fbdev/core/fbcon_rotate.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "fbcon.h" #include "fbcon_rotate.h" --- linux-5.8.0.orig/drivers/video/fbdev/core/fbcon_ud.c +++ linux-5.8.0/drivers/video/fbdev/core/fbcon_ud.c @@ -249,7 +249,7 @@ } static void ud_cursor(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg) + int fg, int bg) { struct fb_cursor cursor; struct fbcon_ops *ops = info->fbcon_par; @@ -267,15 +267,6 @@ cursor.set = 0; - if (softback_lines) { - if (y + softback_lines >= vc->vc_rows) { - mode = CM_ERASE; - ops->cursor_flash = 0; - return; - } else - y += softback_lines; - } - c = scr_readw((u16 *) vc->vc_pos); attribute = get_attribute(info, c); src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height)); --- linux-5.8.0.orig/drivers/video/fbdev/core/fbmem.c +++ linux-5.8.0/drivers/video/fbdev/core/fbmem.c @@ -957,7 +957,6 @@ int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) { - int flags = info->flags; int ret = 0; u32 activate; struct fb_var_screeninfo old_var; @@ -1007,6 +1006,10 @@ return 0; } + /* bitfill_aligned() assumes that it's at least 8x8 */ + if (var->xres < 8 || var->yres < 8) + return -EINVAL; + ret = info->fbops->fb_check_var(var, info); if (ret) @@ -1052,9 +1055,6 @@ event.data = &mode; fb_notifier_call_chain(FB_EVENT_MODE_CHANGE, &event); - if (flags & FBINFO_MISC_USEREVENT) - fbcon_update_vcs(info, activate & FB_ACTIVATE_ALL); - return 0; } EXPORT_SYMBOL(fb_set_var); @@ -1105,9 +1105,9 @@ return -EFAULT; console_lock(); lock_fb_info(info); - info->flags |= FBINFO_MISC_USEREVENT; ret = fb_set_var(info, &var); - info->flags &= ~FBINFO_MISC_USEREVENT; + if (!ret) + fbcon_update_vcs(info, var.activate & FB_ACTIVATE_ALL); unlock_fb_info(info); console_unlock(); if (!ret && copy_to_user(argp, &var, sizeof(var))) --- linux-5.8.0.orig/drivers/video/fbdev/core/fbsysfs.c +++ linux-5.8.0/drivers/video/fbdev/core/fbsysfs.c @@ -91,9 +91,9 @@ var->activate |= FB_ACTIVATE_FORCE; console_lock(); - fb_info->flags |= FBINFO_MISC_USEREVENT; err = fb_set_var(fb_info, var); - fb_info->flags &= ~FBINFO_MISC_USEREVENT; + if (!err) + fbcon_update_vcs(fb_info, var->activate & FB_ACTIVATE_ALL); console_unlock(); if (err) return err; --- linux-5.8.0.orig/drivers/video/fbdev/core/tileblit.c +++ linux-5.8.0/drivers/video/fbdev/core/tileblit.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "fbcon.h" @@ -80,7 +81,7 @@ } static void tile_cursor(struct vc_data *vc, struct fb_info *info, int mode, - int softback_lines, int fg, int bg) + int fg, int bg) { struct fb_tilecursor cursor; int use_sw = (vc->vc_cursor_type & 0x10); --- linux-5.8.0.orig/drivers/video/fbdev/efifb.c +++ linux-5.8.0/drivers/video/fbdev/efifb.c @@ -453,7 +453,7 @@ info->apertures->ranges[0].base = efifb_fix.smem_start; info->apertures->ranges[0].size = size_remap; - if (efi_enabled(EFI_BOOT) && + if (efi_enabled(EFI_MEMMAP) && !efi_mem_desc_lookup(efifb_fix.smem_start, &md)) { if ((efifb_fix.smem_start + efifb_fix.smem_len) > (md.phys_addr + (md.num_pages << EFI_PAGE_SHIFT))) { --- linux-5.8.0.orig/drivers/video/fbdev/hyperv_fb.c +++ linux-5.8.0/drivers/video/fbdev/hyperv_fb.c @@ -1030,7 +1030,6 @@ PCI_DEVICE_ID_HYPERV_VIDEO, NULL); if (!pdev) { pr_err("Unable to find PCI Hyper-V video\n"); - kfree(info->apertures); return -ENODEV; } @@ -1092,7 +1091,12 @@ goto err1; } - fb_virt = ioremap(par->mem->start, screen_fb_size); + /* + * Map the VRAM cacheable for performance. This is also required for + * VM Connect to display properly for ARM64 Linux VM, as the host also + * maps the VRAM cacheable. + */ + fb_virt = ioremap_cache(par->mem->start, screen_fb_size); if (!fb_virt) goto err2; @@ -1114,9 +1118,15 @@ getmem_done: remove_conflicting_framebuffers(info->apertures, KBUILD_MODNAME, false); - if (!gen2vm) + + if (gen2vm) { + /* framebuffer is reallocated, clear screen_info to avoid misuse from kexec */ + screen_info.lfb_size = 0; + screen_info.lfb_base = 0; + screen_info.orig_video_isVGA = 0; + } else { pci_dev_put(pdev); - kfree(info->apertures); + } return 0; @@ -1128,7 +1138,6 @@ err1: if (!gen2vm) pci_dev_put(pdev); - kfree(info->apertures); return -ENOMEM; } --- linux-5.8.0.orig/drivers/video/fbdev/neofb.c +++ linux-5.8.0/drivers/video/fbdev/neofb.c @@ -1819,6 +1819,7 @@ #else printk(KERN_ERR "neofb: Only 640x480, 800x600/480 and 1024x768 panels are currently supported\n"); + kfree(info->monspecs.modedb); return -1; #endif default: --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/dispc.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/dispc.c @@ -520,8 +520,11 @@ DSSDBG("dispc_runtime_get\n"); r = pm_runtime_get_sync(&dispc.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dispc.pdev->dev); + return r; + } + return 0; } EXPORT_SYMBOL(dispc_runtime_get); --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/dsi.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/dsi.c @@ -1137,8 +1137,11 @@ DSSDBG("dsi_runtime_get\n"); r = pm_runtime_get_sync(&dsi->pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dsi->pdev->dev); + return r; + } + return 0; } static void dsi_runtime_put(struct platform_device *dsidev) --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/dss.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/dss.c @@ -768,8 +768,11 @@ DSSDBG("dss_runtime_get\n"); r = pm_runtime_get_sync(&dss.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dss.pdev->dev); + return r; + } + return 0; } void dss_runtime_put(void) @@ -833,7 +836,7 @@ }; static const struct dss_features omap3630_dss_feats = { - .fck_div_max = 32, + .fck_div_max = 31, .dss_fck_multiplier = 1, .parent_clk_name = "dpll4_ck", .dpi_select_source = &dss_dpi_select_source_omap2_omap3, --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c @@ -39,9 +39,10 @@ DSSDBG("hdmi_runtime_get\n"); r = pm_runtime_get_sync(&hdmi.pdev->dev); - WARN_ON(r < 0); - if (r < 0) + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&hdmi.pdev->dev); return r; + } return 0; } --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c @@ -43,9 +43,10 @@ DSSDBG("hdmi_runtime_get\n"); r = pm_runtime_get_sync(&hdmi.pdev->dev); - WARN_ON(r < 0); - if (r < 0) + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&hdmi.pdev->dev); return r; + } return 0; } --- linux-5.8.0.orig/drivers/video/fbdev/omap2/omapfb/dss/venc.c +++ linux-5.8.0/drivers/video/fbdev/omap2/omapfb/dss/venc.c @@ -348,8 +348,11 @@ DSSDBG("venc_runtime_get\n"); r = pm_runtime_get_sync(&venc.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&venc.pdev->dev); + return r; + } + return 0; } static void venc_runtime_put(void) --- linux-5.8.0.orig/drivers/video/fbdev/ps3fb.c +++ linux-5.8.0/drivers/video/fbdev/ps3fb.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -824,12 +825,12 @@ var = info->var; fb_videomode_to_var(&var, vmode); console_lock(); - info->flags |= FBINFO_MISC_USEREVENT; /* Force, in case only special bits changed */ var.activate |= FB_ACTIVATE_FORCE; par->new_mode_id = val; retval = fb_set_var(info, &var); - info->flags &= ~FBINFO_MISC_USEREVENT; + if (!retval) + fbcon_update_vcs(info, var.activate & FB_ACTIVATE_ALL); console_unlock(); } break; --- linux-5.8.0.orig/drivers/video/fbdev/pvr2fb.c +++ linux-5.8.0/drivers/video/fbdev/pvr2fb.c @@ -1016,6 +1016,8 @@ if (!options || !*options) return 0; + cable_arg[0] = output_arg[0] = 0; + while ((this_opt = strsep(&options, ","))) { if (!*this_opt) continue; --- linux-5.8.0.orig/drivers/video/fbdev/pxafb.c +++ linux-5.8.0/drivers/video/fbdev/pxafb.c @@ -2417,8 +2417,8 @@ free_pages_exact(fbi->video_mem, fbi->video_mem_size); - dma_free_wc(&dev->dev, fbi->dma_buff_size, fbi->dma_buff, - fbi->dma_buff_phys); + dma_free_coherent(&dev->dev, fbi->dma_buff_size, fbi->dma_buff, + fbi->dma_buff_phys); return 0; } --- linux-5.8.0.orig/drivers/video/fbdev/savage/savagefb_driver.c +++ linux-5.8.0/drivers/video/fbdev/savage/savagefb_driver.c @@ -2157,6 +2157,8 @@ info->flags |= FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_IMAGEBLIT; + else + kfree(info->pixmap.addr); } #endif return err; --- linux-5.8.0.orig/drivers/video/fbdev/sis/init.c +++ linux-5.8.0/drivers/video/fbdev/sis/init.c @@ -2428,6 +2428,11 @@ i = 0; + if (SiS_Pr->ChipType == SIS_730) + queuedata = &FQBQData730[0]; + else + queuedata = &FQBQData[0]; + if(ModeNo > 0x13) { /* Get VCLK */ @@ -2445,12 +2450,6 @@ /* Get half colordepth */ colorth = colortharray[(SiS_Pr->SiS_ModeType - ModeEGA)]; - if(SiS_Pr->ChipType == SIS_730) { - queuedata = &FQBQData730[0]; - } else { - queuedata = &FQBQData[0]; - } - do { templ = SiS_CalcDelay2(SiS_Pr, queuedata[i]) * VCLK * colorth; --- linux-5.8.0.orig/drivers/video/fbdev/sm712fb.c +++ linux-5.8.0/drivers/video/fbdev/sm712fb.c @@ -1429,6 +1429,8 @@ static void smtc_unmap_smem(struct smtcfb_info *sfb) { if (sfb && sfb->fb->screen_base) { + if (sfb->chip_id == 0x720) + sfb->fb->screen_base -= 0x00200000; iounmap(sfb->fb->screen_base); sfb->fb->screen_base = NULL; } --- linux-5.8.0.orig/drivers/video/fbdev/udlfb.c +++ linux-5.8.0/drivers/video/fbdev/udlfb.c @@ -1017,6 +1017,7 @@ } vfree(dlfb->backing_buffer); kfree(dlfb->edid); + dlfb_free_urb_list(dlfb); usb_put_dev(dlfb->udev); kfree(dlfb); --- linux-5.8.0.orig/drivers/video/fbdev/vga16fb.c +++ linux-5.8.0/drivers/video/fbdev/vga16fb.c @@ -243,7 +243,7 @@ } static void vga16fb_clock_chip(struct vga16fb_par *par, - unsigned int pixclock, + unsigned int *pixclock, const struct fb_info *info, int mul, int div) { @@ -259,14 +259,14 @@ { 0 /* bad */, 0x00, 0x00}}; int err; - pixclock = (pixclock * mul) / div; + *pixclock = (*pixclock * mul) / div; best = vgaclocks; - err = pixclock - best->pixclock; + err = *pixclock - best->pixclock; if (err < 0) err = -err; for (ptr = vgaclocks + 1; ptr->pixclock; ptr++) { int tmp; - tmp = pixclock - ptr->pixclock; + tmp = *pixclock - ptr->pixclock; if (tmp < 0) tmp = -tmp; if (tmp < err) { err = tmp; @@ -275,7 +275,7 @@ } par->misc |= best->misc; par->clkdiv = best->seq_clock_mode; - pixclock = (best->pixclock * div) / mul; + *pixclock = (best->pixclock * div) / mul; } #define FAIL(X) return -EINVAL @@ -497,10 +497,10 @@ if (mode & MODE_8BPP) /* pixel clock == vga clock / 2 */ - vga16fb_clock_chip(par, var->pixclock, info, 1, 2); + vga16fb_clock_chip(par, &var->pixclock, info, 1, 2); else /* pixel clock == vga clock */ - vga16fb_clock_chip(par, var->pixclock, info, 1, 1); + vga16fb_clock_chip(par, &var->pixclock, info, 1, 1); var->red.offset = var->green.offset = var->blue.offset = var->transp.offset = 0; @@ -1121,7 +1121,7 @@ char oldop = setop(0); char oldsr = setsr(0); char oldmask = selectmask(); - const char *cdat = image->data; + const unsigned char *cdat = image->data; u32 dx = image->dx; char __iomem *where; int y; --- linux-5.8.0.orig/drivers/virt/fsl_hypervisor.c +++ linux-5.8.0/drivers/virt/fsl_hypervisor.c @@ -157,7 +157,7 @@ unsigned int i; long ret = 0; - int num_pinned; /* return value from get_user_pages() */ + int num_pinned = 0; /* return value from get_user_pages_fast() */ phys_addr_t remote_paddr; /* The next address in the remote buffer */ uint32_t count; /* The number of bytes left to copy */ @@ -174,7 +174,7 @@ return -EINVAL; /* - * The array of pages returned by get_user_pages() covers only + * The array of pages returned by get_user_pages_fast() covers only * page-aligned memory. Since the user buffer is probably not * page-aligned, we need to handle the discrepancy. * @@ -224,7 +224,7 @@ /* * 'pages' is an array of struct page pointers that's initialized by - * get_user_pages(). + * get_user_pages_fast(). */ pages = kcalloc(num_pages, sizeof(struct page *), GFP_KERNEL); if (!pages) { @@ -241,7 +241,7 @@ if (!sg_list_unaligned) { pr_debug("fsl-hv: could not allocate S/G list\n"); ret = -ENOMEM; - goto exit; + goto free_pages; } sg_list = PTR_ALIGN(sg_list_unaligned, sizeof(struct fh_sg_list)); @@ -250,7 +250,6 @@ num_pages, param.source != -1 ? FOLL_WRITE : 0, pages); if (num_pinned != num_pages) { - /* get_user_pages() failed */ pr_debug("fsl-hv: could not lock source buffer\n"); ret = (num_pinned < 0) ? num_pinned : -EFAULT; goto exit; @@ -292,13 +291,13 @@ virt_to_phys(sg_list), num_pages); exit: - if (pages) { - for (i = 0; i < num_pages; i++) - if (pages[i]) - put_page(pages[i]); + if (pages && (num_pinned > 0)) { + for (i = 0; i < num_pinned; i++) + put_page(pages[i]); } kfree(sg_list_unaligned); +free_pages: kfree(pages); if (!ret) --- linux-5.8.0.orig/drivers/virt/vboxguest/vboxguest_utils.c +++ linux-5.8.0/drivers/virt/vboxguest/vboxguest_utils.c @@ -467,7 +467,7 @@ * Cancellation fun. */ static int vbg_hgcm_do_call(struct vbg_dev *gdev, struct vmmdev_hgcm_call *call, - u32 timeout_ms, bool *leak_it) + u32 timeout_ms, bool interruptible, bool *leak_it) { int rc, cancel_rc, ret; long timeout; @@ -494,10 +494,15 @@ else timeout = msecs_to_jiffies(timeout_ms); - timeout = wait_event_interruptible_timeout( - gdev->hgcm_wq, - hgcm_req_done(gdev, &call->header), - timeout); + if (interruptible) { + timeout = wait_event_interruptible_timeout(gdev->hgcm_wq, + hgcm_req_done(gdev, &call->header), + timeout); + } else { + timeout = wait_event_timeout(gdev->hgcm_wq, + hgcm_req_done(gdev, &call->header), + timeout); + } /* timeout > 0 means hgcm_req_done has returned true, so success */ if (timeout > 0) @@ -630,7 +635,8 @@ hgcm_call_init_call(call, client_id, function, parms, parm_count, bounce_bufs); - ret = vbg_hgcm_do_call(gdev, call, timeout_ms, &leak_it); + ret = vbg_hgcm_do_call(gdev, call, timeout_ms, + requestor & VMMDEV_REQUESTOR_USERMODE, &leak_it); if (ret == 0) { *vbox_status = call->header.result; ret = hgcm_call_copy_back_result(call, parms, parm_count, --- linux-5.8.0.orig/drivers/virtio/virtio_ring.c +++ linux-5.8.0/drivers/virtio/virtio_ring.c @@ -1608,7 +1608,6 @@ vq->num_added = 0; vq->packed_ring = true; vq->use_dma_api = vring_use_dma_api(vdev); - list_add_tail(&vq->vq.list, &vdev->vqs); #ifdef DEBUG vq->in_use = false; vq->last_add_time_valid = false; @@ -1669,6 +1668,7 @@ cpu_to_le16(vq->packed.event_flags_shadow); } + list_add_tail(&vq->vq.list, &vdev->vqs); return &vq->vq; err_desc_extra: @@ -1676,9 +1676,9 @@ err_desc_state: kfree(vq); err_vq: - vring_free_queue(vdev, event_size_in_bytes, device, ring_dma_addr); + vring_free_queue(vdev, event_size_in_bytes, device, device_event_dma_addr); err_device: - vring_free_queue(vdev, event_size_in_bytes, driver, ring_dma_addr); + vring_free_queue(vdev, event_size_in_bytes, driver, driver_event_dma_addr); err_driver: vring_free_queue(vdev, ring_size_in_bytes, ring, ring_dma_addr); err_ring: @@ -1960,6 +1960,9 @@ { struct vring_virtqueue *vq = to_vvq(_vq); + if (unlikely(vq->broken)) + return false; + virtio_mb(vq->weak_barriers); return vq->packed_ring ? virtqueue_poll_packed(_vq, last_used_idx) : virtqueue_poll_split(_vq, last_used_idx); @@ -2082,7 +2085,6 @@ vq->last_used_idx = 0; vq->num_added = 0; vq->use_dma_api = vring_use_dma_api(vdev); - list_add_tail(&vq->vq.list, &vdev->vqs); #ifdef DEBUG vq->in_use = false; vq->last_add_time_valid = false; @@ -2124,6 +2126,7 @@ memset(vq->split.desc_state, 0, vring.num * sizeof(struct vring_desc_state_split)); + list_add_tail(&vq->vq.list, &vdev->vqs); return &vq->vq; } EXPORT_SYMBOL_GPL(__vring_new_virtqueue); --- linux-5.8.0.orig/drivers/w1/masters/mxc_w1.c +++ linux-5.8.0/drivers/w1/masters/mxc_w1.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -40,12 +40,12 @@ static u8 mxc_w1_ds2_reset_bus(void *data) { struct mxc_w1_device *dev = data; - unsigned long timeout; + ktime_t timeout; writeb(MXC_W1_CONTROL_RPP, dev->regs + MXC_W1_CONTROL); /* Wait for reset sequence 511+512us, use 1500us for sure */ - timeout = jiffies + usecs_to_jiffies(1500); + timeout = ktime_add_us(ktime_get(), 1500); udelay(511 + 512); @@ -55,7 +55,7 @@ /* PST bit is valid after the RPP bit is self-cleared */ if (!(ctrl & MXC_W1_CONTROL_RPP)) return !(ctrl & MXC_W1_CONTROL_PST); - } while (time_is_after_jiffies(timeout)); + } while (ktime_before(ktime_get(), timeout)); return 1; } @@ -68,12 +68,12 @@ static u8 mxc_w1_ds2_touch_bit(void *data, u8 bit) { struct mxc_w1_device *dev = data; - unsigned long timeout; + ktime_t timeout; writeb(MXC_W1_CONTROL_WR(bit), dev->regs + MXC_W1_CONTROL); /* Wait for read/write bit (60us, Max 120us), use 200us for sure */ - timeout = jiffies + usecs_to_jiffies(200); + timeout = ktime_add_us(ktime_get(), 200); udelay(60); @@ -83,7 +83,7 @@ /* RDST bit is valid after the WR1/RD bit is self-cleared */ if (!(ctrl & MXC_W1_CONTROL_WR(bit))) return !!(ctrl & MXC_W1_CONTROL_RDST); - } while (time_is_after_jiffies(timeout)); + } while (ktime_before(ktime_get(), timeout)); return 0; } --- linux-5.8.0.orig/drivers/watchdog/Kconfig +++ linux-5.8.0/drivers/watchdog/Kconfig @@ -375,6 +375,7 @@ config ARMADA_37XX_WATCHDOG tristate "Armada 37xx watchdog" depends on ARCH_MVEBU || COMPILE_TEST + depends on HAS_IOMEM select MFD_SYSCON select WATCHDOG_CORE help @@ -626,7 +627,7 @@ config COH901327_WATCHDOG bool "ST-Ericsson COH 901 327 watchdog" - depends on ARCH_U300 || (ARM && COMPILE_TEST) + depends on ARCH_U300 || (ARM && COMMON_CLK && COMPILE_TEST) default y if MACH_U300 select WATCHDOG_CORE help @@ -784,6 +785,7 @@ config SIRFSOC_WATCHDOG tristate "SiRFSOC watchdog" + depends on HAS_IOMEM depends on ARCH_SIRF || COMPILE_TEST select WATCHDOG_CORE default y --- linux-5.8.0.orig/drivers/watchdog/f71808e_wdt.c +++ linux-5.8.0/drivers/watchdog/f71808e_wdt.c @@ -690,9 +690,9 @@ * into the module have been registered yet. */ watchdog.sioaddr = sioaddr; - watchdog.ident.options = WDIOC_SETTIMEOUT - | WDIOF_MAGICCLOSE - | WDIOF_KEEPALIVEPING; + watchdog.ident.options = WDIOF_MAGICCLOSE + | WDIOF_KEEPALIVEPING + | WDIOF_CARDRESET; snprintf(watchdog.ident.identity, sizeof(watchdog.ident.identity), "%s watchdog", @@ -706,6 +706,13 @@ wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF); watchdog.caused_reboot = wdt_conf & BIT(F71808FG_FLAG_WDTMOUT_STS); + /* + * We don't want WDTMOUT_STS to stick around till regular reboot. + * Write 1 to the bit to clear it to zero. + */ + superio_outb(sioaddr, F71808FG_REG_WDT_CONF, + wdt_conf | BIT(F71808FG_FLAG_WDTMOUT_STS)); + superio_exit(sioaddr); err = watchdog_set_timeout(timeout); --- linux-5.8.0.orig/drivers/watchdog/intel-mid_wdt.c +++ linux-5.8.0/drivers/watchdog/intel-mid_wdt.c @@ -154,6 +154,10 @@ watchdog_set_nowayout(wdt_dev, WATCHDOG_NOWAYOUT); watchdog_set_drvdata(wdt_dev, mid); + mid->scu = devm_intel_scu_ipc_dev_get(dev); + if (!mid->scu) + return -EPROBE_DEFER; + ret = devm_request_irq(dev, pdata->irq, mid_wdt_irq, IRQF_SHARED | IRQF_NO_SUSPEND, "watchdog", wdt_dev); @@ -162,10 +166,6 @@ return ret; } - mid->scu = devm_intel_scu_ipc_dev_get(dev); - if (!mid->scu) - return -EPROBE_DEFER; - /* * The firmware followed by U-Boot leaves the watchdog running * with the default threshold which may vary. When we get here --- linux-5.8.0.orig/drivers/watchdog/mei_wdt.c +++ linux-5.8.0/drivers/watchdog/mei_wdt.c @@ -382,6 +382,7 @@ watchdog_set_drvdata(&wdt->wdd, wdt); watchdog_stop_on_reboot(&wdt->wdd); + watchdog_stop_on_unregister(&wdt->wdd); ret = watchdog_register_device(&wdt->wdd); if (ret) --- linux-5.8.0.orig/drivers/watchdog/qcom-wdt.c +++ linux-5.8.0/drivers/watchdog/qcom-wdt.c @@ -22,7 +22,6 @@ }; #define QCOM_WDT_ENABLE BIT(0) -#define QCOM_WDT_ENABLE_IRQ BIT(1) static const u32 reg_offset_data_apcs_tmr[] = { [WDT_RST] = 0x38, @@ -63,16 +62,6 @@ return container_of(wdd, struct qcom_wdt, wdd); } -static inline int qcom_get_enable(struct watchdog_device *wdd) -{ - int enable = QCOM_WDT_ENABLE; - - if (wdd->pretimeout) - enable |= QCOM_WDT_ENABLE_IRQ; - - return enable; -} - static irqreturn_t qcom_wdt_isr(int irq, void *arg) { struct watchdog_device *wdd = arg; @@ -91,7 +80,7 @@ writel(1, wdt_addr(wdt, WDT_RST)); writel(bark * wdt->rate, wdt_addr(wdt, WDT_BARK_TIME)); writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME)); - writel(qcom_get_enable(wdd), wdt_addr(wdt, WDT_EN)); + writel(QCOM_WDT_ENABLE, wdt_addr(wdt, WDT_EN)); return 0; } @@ -148,7 +137,7 @@ */ wmb(); - msleep(150); + mdelay(150); return 0; } --- linux-5.8.0.orig/drivers/watchdog/rdc321x_wdt.c +++ linux-5.8.0/drivers/watchdog/rdc321x_wdt.c @@ -231,6 +231,8 @@ rdc321x_wdt_device.sb_pdev = pdata->sb_pdev; rdc321x_wdt_device.base_reg = r->start; + rdc321x_wdt_device.queue = 0; + rdc321x_wdt_device.default_ticks = ticks; err = misc_register(&rdc321x_wdt_misc); if (err < 0) { @@ -245,14 +247,11 @@ rdc321x_wdt_device.base_reg, RDC_WDT_RST); init_completion(&rdc321x_wdt_device.stop); - rdc321x_wdt_device.queue = 0; clear_bit(0, &rdc321x_wdt_device.inuse); timer_setup(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0); - rdc321x_wdt_device.default_ticks = ticks; - dev_info(&pdev->dev, "watchdog init success\n"); return 0; --- linux-5.8.0.orig/drivers/watchdog/rti_wdt.c +++ linux-5.8.0/drivers/watchdog/rti_wdt.c @@ -172,8 +172,10 @@ pm_runtime_enable(dev); ret = pm_runtime_get_sync(dev); if (ret) { - if (ret != -EPROBE_DEFER) + if (ret != -EPROBE_DEFER) { + pm_runtime_put_noidle(dev); dev_err(&pdev->dev, "runtime pm failed\n"); + } return ret; } @@ -211,6 +213,7 @@ err_iomap: pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); return ret; } @@ -221,6 +224,7 @@ watchdog_unregister_device(&wdt->wdd); pm_runtime_put(&pdev->dev); + pm_runtime_disable(&pdev->dev); return 0; } --- linux-5.8.0.orig/drivers/watchdog/sp5100_tco.h +++ linux-5.8.0/drivers/watchdog/sp5100_tco.h @@ -70,7 +70,7 @@ #define EFCH_PM_DECODEEN_WDT_TMREN BIT(7) -#define EFCH_PM_DECODEEN3 0x00 +#define EFCH_PM_DECODEEN3 0x03 #define EFCH_PM_DECODEEN_SECOND_RES GENMASK(1, 0) #define EFCH_PM_WATCHDOG_DISABLE ((u8)GENMASK(3, 2)) --- linux-5.8.0.orig/drivers/watchdog/sprd_wdt.c +++ linux-5.8.0/drivers/watchdog/sprd_wdt.c @@ -108,18 +108,6 @@ u32 tmr_step = timeout * SPRD_WDT_CNT_STEP; u32 prtmr_step = pretimeout * SPRD_WDT_CNT_STEP; - sprd_wdt_unlock(wdt->base); - writel_relaxed((tmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & - SPRD_WDT_LOW_VALUE_MASK, wdt->base + SPRD_WDT_LOAD_HIGH); - writel_relaxed((tmr_step & SPRD_WDT_LOW_VALUE_MASK), - wdt->base + SPRD_WDT_LOAD_LOW); - writel_relaxed((prtmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & - SPRD_WDT_LOW_VALUE_MASK, - wdt->base + SPRD_WDT_IRQ_LOAD_HIGH); - writel_relaxed(prtmr_step & SPRD_WDT_LOW_VALUE_MASK, - wdt->base + SPRD_WDT_IRQ_LOAD_LOW); - sprd_wdt_lock(wdt->base); - /* * Waiting the load value operation done, * it needs two or three RTC clock cycles. @@ -134,6 +122,19 @@ if (delay_cnt >= SPRD_WDT_LOAD_TIMEOUT) return -EBUSY; + + sprd_wdt_unlock(wdt->base); + writel_relaxed((tmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & + SPRD_WDT_LOW_VALUE_MASK, wdt->base + SPRD_WDT_LOAD_HIGH); + writel_relaxed((tmr_step & SPRD_WDT_LOW_VALUE_MASK), + wdt->base + SPRD_WDT_LOAD_LOW); + writel_relaxed((prtmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & + SPRD_WDT_LOW_VALUE_MASK, + wdt->base + SPRD_WDT_IRQ_LOAD_HIGH); + writel_relaxed(prtmr_step & SPRD_WDT_LOW_VALUE_MASK, + wdt->base + SPRD_WDT_IRQ_LOAD_LOW); + sprd_wdt_lock(wdt->base); + return 0; } @@ -345,15 +346,10 @@ if (ret) return ret; - if (watchdog_active(&wdt->wdd)) { + if (watchdog_active(&wdt->wdd)) ret = sprd_wdt_start(&wdt->wdd); - if (ret) { - sprd_wdt_disable(wdt); - return ret; - } - } - return 0; + return ret; } static const struct dev_pm_ops sprd_wdt_pm_ops = { --- linux-5.8.0.orig/drivers/watchdog/watchdog_core.c +++ linux-5.8.0/drivers/watchdog/watchdog_core.c @@ -267,15 +267,19 @@ } if (test_bit(WDOG_STOP_ON_REBOOT, &wdd->status)) { - wdd->reboot_nb.notifier_call = watchdog_reboot_notifier; + if (!wdd->ops->stop) + pr_warn("watchdog%d: stop_on_reboot not supported\n", wdd->id); + else { + wdd->reboot_nb.notifier_call = watchdog_reboot_notifier; - ret = register_reboot_notifier(&wdd->reboot_nb); - if (ret) { - pr_err("watchdog%d: Cannot register reboot notifier (%d)\n", - wdd->id, ret); - watchdog_dev_unregister(wdd); - ida_simple_remove(&watchdog_ida, id); - return ret; + ret = register_reboot_notifier(&wdd->reboot_nb); + if (ret) { + pr_err("watchdog%d: Cannot register reboot notifier (%d)\n", + wdd->id, ret); + watchdog_dev_unregister(wdd); + ida_simple_remove(&watchdog_ida, id); + return ret; + } } } --- linux-5.8.0.orig/drivers/watchdog/watchdog_dev.c +++ linux-5.8.0/drivers/watchdog/watchdog_dev.c @@ -991,8 +991,19 @@ wd_data->wdd = wdd; wdd->wd_data = wd_data; - if (IS_ERR_OR_NULL(watchdog_kworker)) + if (IS_ERR_OR_NULL(watchdog_kworker)) { + kfree(wd_data); return -ENODEV; + } + + device_initialize(&wd_data->dev); + wd_data->dev.devt = MKDEV(MAJOR(watchdog_devt), wdd->id); + wd_data->dev.class = &watchdog_class; + wd_data->dev.parent = wdd->parent; + wd_data->dev.groups = wdd->groups; + wd_data->dev.release = watchdog_core_data_release; + dev_set_drvdata(&wd_data->dev, wdd); + dev_set_name(&wd_data->dev, "watchdog%d", wdd->id); kthread_init_work(&wd_data->work, watchdog_ping_work); hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); @@ -1009,20 +1020,11 @@ pr_err("%s: a legacy watchdog module is probably present.\n", wdd->info->identity); old_wd_data = NULL; - kfree(wd_data); + put_device(&wd_data->dev); return err; } } - device_initialize(&wd_data->dev); - wd_data->dev.devt = MKDEV(MAJOR(watchdog_devt), wdd->id); - wd_data->dev.class = &watchdog_class; - wd_data->dev.parent = wdd->parent; - wd_data->dev.groups = wdd->groups; - wd_data->dev.release = watchdog_core_data_release; - dev_set_drvdata(&wd_data->dev, wdd); - dev_set_name(&wd_data->dev, "watchdog%d", wdd->id); - /* Fill in the data structures */ cdev_init(&wd_data->cdev, &watchdog_fops); --- linux-5.8.0.orig/drivers/xen/balloon.c +++ linux-5.8.0/drivers/xen/balloon.c @@ -568,11 +568,13 @@ if (xen_hotplug_unpopulated) { st = reserve_additional_memory(); if (st != BP_ECANCELED) { + int rc; + mutex_unlock(&balloon_mutex); - wait_event(balloon_wq, + rc = wait_event_interruptible(balloon_wq, !list_empty(&ballooned_pages)); mutex_lock(&balloon_mutex); - return 0; + return rc ? -ENOMEM : 0; } } @@ -630,6 +632,12 @@ out_undo: mutex_unlock(&balloon_mutex); free_xenballooned_pages(pgno, pages); + /* + * NB: free_xenballooned_pages will only subtract pgno pages, but since + * target_unpopulated is incremented with nr_pages at the start we need + * to remove the remaining ones also, or accounting will be screwed. + */ + balloon_stats.target_unpopulated -= nr_pages - pgno; return ret; } EXPORT_SYMBOL(alloc_xenballooned_pages); --- linux-5.8.0.orig/drivers/xen/events/events_2l.c +++ linux-5.8.0/drivers/xen/events/events_2l.c @@ -47,6 +47,11 @@ return EVTCHN_2L_NR_CHANNELS; } +static void evtchn_2l_remove(evtchn_port_t evtchn, unsigned int cpu) +{ + clear_bit(evtchn, BM(per_cpu(cpu_evtchn_mask, cpu))); +} + static void evtchn_2l_bind_to_cpu(struct irq_info *info, unsigned cpu) { clear_bit(info->evtchn, BM(per_cpu(cpu_evtchn_mask, info->cpu))); @@ -71,12 +76,6 @@ return sync_test_bit(port, BM(&s->evtchn_pending[0])); } -static bool evtchn_2l_test_and_set_mask(evtchn_port_t port) -{ - struct shared_info *s = HYPERVISOR_shared_info; - return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0])); -} - static void evtchn_2l_mask(evtchn_port_t port) { struct shared_info *s = HYPERVISOR_shared_info; @@ -91,6 +90,8 @@ BUG_ON(!irqs_disabled()); + smp_wmb(); /* All writes before unmask must be visible. */ + if (unlikely((cpu != cpu_from_evtchn(port)))) do_hypercall = 1; else { @@ -159,7 +160,7 @@ * a bitset of words which contain pending event bits. The second * level is a bitset of pending events themselves. */ -static void evtchn_2l_handle_events(unsigned cpu) +static void evtchn_2l_handle_events(unsigned cpu, struct evtchn_loop_ctrl *ctrl) { int irq; xen_ulong_t pending_words; @@ -240,10 +241,7 @@ /* Process port. */ port = (word_idx * BITS_PER_EVTCHN_WORD) + bit_idx; - irq = get_evtchn_to_irq(port); - - if (irq != -1) - generic_handle_irq(irq); + handle_irq_for_port(port, ctrl); bit_idx = (bit_idx + 1) % BITS_PER_EVTCHN_WORD; @@ -355,18 +353,27 @@ EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD); } +static int evtchn_2l_percpu_deinit(unsigned int cpu) +{ + memset(per_cpu(cpu_evtchn_mask, cpu), 0, sizeof(xen_ulong_t) * + EVTCHN_2L_NR_CHANNELS/BITS_PER_EVTCHN_WORD); + + return 0; +} + static const struct evtchn_ops evtchn_ops_2l = { .max_channels = evtchn_2l_max_channels, .nr_channels = evtchn_2l_max_channels, + .remove = evtchn_2l_remove, .bind_to_cpu = evtchn_2l_bind_to_cpu, .clear_pending = evtchn_2l_clear_pending, .set_pending = evtchn_2l_set_pending, .is_pending = evtchn_2l_is_pending, - .test_and_set_mask = evtchn_2l_test_and_set_mask, .mask = evtchn_2l_mask, .unmask = evtchn_2l_unmask, .handle_events = evtchn_2l_handle_events, .resume = evtchn_2l_resume, + .percpu_deinit = evtchn_2l_percpu_deinit, }; void __init xen_evtchn_2l_init(void) --- linux-5.8.0.orig/drivers/xen/events/events_base.c +++ linux-5.8.0/drivers/xen/events/events_base.c @@ -33,6 +33,10 @@ #include #include #include +#include +#include +#include +#include #ifdef CONFIG_X86 #include @@ -63,6 +67,15 @@ #include "events_internal.h" +#undef MODULE_PARAM_PREFIX +#define MODULE_PARAM_PREFIX "xen." + +static uint __read_mostly event_loop_timeout = 2; +module_param(event_loop_timeout, uint, 0644); + +static uint __read_mostly event_eoi_delay = 10; +module_param(event_eoi_delay, uint, 0644); + const struct evtchn_ops *evtchn_ops; /* @@ -71,6 +84,25 @@ */ static DEFINE_MUTEX(irq_mapping_update_lock); +/* + * Lock protecting event handling loop against removing event channels. + * Adding of event channels is no issue as the associated IRQ becomes active + * only after everything is setup (before request_[threaded_]irq() the handler + * can't be entered for an event, as the event channel will be unmasked only + * then). + */ +static DEFINE_RWLOCK(evtchn_rwlock); + +/* + * Lock hierarchy: + * + * irq_mapping_update_lock + * evtchn_rwlock + * IRQ-desc lock + * percpu eoi_list_lock + * irq_info->lock + */ + static LIST_HEAD(xen_irq_list_head); /* IRQ <-> VIRQ mapping. */ @@ -92,18 +124,23 @@ /* Xen will never allocate port zero for any purpose. */ #define VALID_EVTCHN(chn) ((chn) != 0) +static struct irq_info *legacy_info_ptrs[NR_IRQS_LEGACY]; + static struct irq_chip xen_dynamic_chip; +static struct irq_chip xen_lateeoi_chip; static struct irq_chip xen_percpu_chip; static struct irq_chip xen_pirq_chip; static void enable_dynirq(struct irq_data *data); static void disable_dynirq(struct irq_data *data); +static DEFINE_PER_CPU(unsigned int, irq_epoch); + static void clear_evtchn_to_irq_row(unsigned row) { unsigned col; for (col = 0; col < EVTCHN_PER_ROW; col++) - evtchn_to_irq[row][col] = -1; + WRITE_ONCE(evtchn_to_irq[row][col], -1); } static void clear_evtchn_to_irq_all(void) @@ -140,7 +177,7 @@ clear_evtchn_to_irq_row(row); } - evtchn_to_irq[row][col] = irq; + WRITE_ONCE(evtchn_to_irq[row][col], irq); return 0; } @@ -150,13 +187,24 @@ return -1; if (evtchn_to_irq[EVTCHN_ROW(evtchn)] == NULL) return -1; - return evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]; + return READ_ONCE(evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]); } /* Get info for IRQ */ struct irq_info *info_for_irq(unsigned irq) { - return irq_get_handler_data(irq); + if (irq < nr_legacy_irqs()) + return legacy_info_ptrs[irq]; + else + return irq_get_chip_data(irq); +} + +static void set_info_for_irq(unsigned int irq, struct irq_info *info) +{ + if (irq < nr_legacy_irqs()) + legacy_info_ptrs[irq] = info; + else + irq_set_chip_data(irq, info); } /* Constructors for packed IRQ information. */ @@ -174,6 +222,8 @@ info->irq = irq; info->evtchn = evtchn; info->cpu = cpu; + info->mask_reason = EVT_MASK_REASON_EXPLICIT; + spin_lock_init(&info->lock); ret = set_evtchn_to_irq(evtchn, irq); if (ret < 0) @@ -240,6 +290,7 @@ static void xen_irq_info_cleanup(struct irq_info *info) { set_evtchn_to_irq(info->evtchn, -1); + xen_evtchn_port_remove(info->evtchn, info->cpu); info->evtchn = 0; } @@ -248,10 +299,14 @@ */ evtchn_port_t evtchn_from_irq(unsigned irq) { - if (WARN(irq >= nr_irqs, "Invalid irq %d!\n", irq)) + const struct irq_info *info = NULL; + + if (likely(irq < nr_irqs)) + info = info_for_irq(irq); + if (!info) return 0; - return info_for_irq(irq)->evtchn; + return info->evtchn; } unsigned int irq_from_evtchn(evtchn_port_t evtchn) @@ -316,6 +371,34 @@ return ret; } +static void do_mask(struct irq_info *info, u8 reason) +{ + unsigned long flags; + + spin_lock_irqsave(&info->lock, flags); + + if (!info->mask_reason) + mask_evtchn(info->evtchn); + + info->mask_reason |= reason; + + spin_unlock_irqrestore(&info->lock, flags); +} + +static void do_unmask(struct irq_info *info, u8 reason) +{ + unsigned long flags; + + spin_lock_irqsave(&info->lock, flags); + + info->mask_reason &= ~reason; + + if (!info->mask_reason) + unmask_evtchn(info->evtchn); + + spin_unlock_irqrestore(&info->lock, flags); +} + #ifdef CONFIG_X86 static bool pirq_check_eoi_map(unsigned irq) { @@ -362,9 +445,157 @@ } EXPORT_SYMBOL_GPL(notify_remote_via_irq); +struct lateeoi_work { + struct delayed_work delayed; + spinlock_t eoi_list_lock; + struct list_head eoi_list; +}; + +static DEFINE_PER_CPU(struct lateeoi_work, lateeoi); + +static void lateeoi_list_del(struct irq_info *info) +{ + struct lateeoi_work *eoi = &per_cpu(lateeoi, info->eoi_cpu); + unsigned long flags; + + spin_lock_irqsave(&eoi->eoi_list_lock, flags); + list_del_init(&info->eoi_list); + spin_unlock_irqrestore(&eoi->eoi_list_lock, flags); +} + +static void lateeoi_list_add(struct irq_info *info) +{ + struct lateeoi_work *eoi = &per_cpu(lateeoi, info->eoi_cpu); + struct irq_info *elem; + u64 now = get_jiffies_64(); + unsigned long delay; + unsigned long flags; + + if (now < info->eoi_time) + delay = info->eoi_time - now; + else + delay = 1; + + spin_lock_irqsave(&eoi->eoi_list_lock, flags); + + if (list_empty(&eoi->eoi_list)) { + list_add(&info->eoi_list, &eoi->eoi_list); + mod_delayed_work_on(info->eoi_cpu, system_wq, + &eoi->delayed, delay); + } else { + list_for_each_entry_reverse(elem, &eoi->eoi_list, eoi_list) { + if (elem->eoi_time <= info->eoi_time) + break; + } + list_add(&info->eoi_list, &elem->eoi_list); + } + + spin_unlock_irqrestore(&eoi->eoi_list_lock, flags); +} + +static void xen_irq_lateeoi_locked(struct irq_info *info, bool spurious) +{ + evtchn_port_t evtchn; + unsigned int cpu; + unsigned int delay = 0; + + evtchn = info->evtchn; + if (!VALID_EVTCHN(evtchn) || !list_empty(&info->eoi_list)) + return; + + if (spurious) { + if ((1 << info->spurious_cnt) < (HZ << 2)) + info->spurious_cnt++; + if (info->spurious_cnt > 1) { + delay = 1 << (info->spurious_cnt - 2); + if (delay > HZ) + delay = HZ; + if (!info->eoi_time) + info->eoi_cpu = smp_processor_id(); + info->eoi_time = get_jiffies_64() + delay; + } + } else { + info->spurious_cnt = 0; + } + + cpu = info->eoi_cpu; + if (info->eoi_time && + (info->irq_epoch == per_cpu(irq_epoch, cpu) || delay)) { + lateeoi_list_add(info); + return; + } + + info->eoi_time = 0; + do_unmask(info, EVT_MASK_REASON_EOI_PENDING); +} + +static void xen_irq_lateeoi_worker(struct work_struct *work) +{ + struct lateeoi_work *eoi; + struct irq_info *info; + u64 now = get_jiffies_64(); + unsigned long flags; + + eoi = container_of(to_delayed_work(work), struct lateeoi_work, delayed); + + read_lock_irqsave(&evtchn_rwlock, flags); + + while (true) { + spin_lock(&eoi->eoi_list_lock); + + info = list_first_entry_or_null(&eoi->eoi_list, struct irq_info, + eoi_list); + + if (info == NULL || now < info->eoi_time) { + spin_unlock(&eoi->eoi_list_lock); + break; + } + + list_del_init(&info->eoi_list); + + spin_unlock(&eoi->eoi_list_lock); + + info->eoi_time = 0; + + xen_irq_lateeoi_locked(info, false); + } + + if (info) + mod_delayed_work_on(info->eoi_cpu, system_wq, + &eoi->delayed, info->eoi_time - now); + + read_unlock_irqrestore(&evtchn_rwlock, flags); +} + +static void xen_cpu_init_eoi(unsigned int cpu) +{ + struct lateeoi_work *eoi = &per_cpu(lateeoi, cpu); + + INIT_DELAYED_WORK(&eoi->delayed, xen_irq_lateeoi_worker); + spin_lock_init(&eoi->eoi_list_lock); + INIT_LIST_HEAD(&eoi->eoi_list); +} + +void xen_irq_lateeoi(unsigned int irq, unsigned int eoi_flags) +{ + struct irq_info *info; + unsigned long flags; + + read_lock_irqsave(&evtchn_rwlock, flags); + + info = info_for_irq(irq); + + if (info) + xen_irq_lateeoi_locked(info, eoi_flags & XEN_EOI_FLAG_SPURIOUS); + + read_unlock_irqrestore(&evtchn_rwlock, flags); +} +EXPORT_SYMBOL_GPL(xen_irq_lateeoi); + static void xen_irq_init(unsigned irq) { struct irq_info *info; + #ifdef CONFIG_SMP /* By default all event channels notify CPU#0. */ cpumask_copy(irq_get_affinity_mask(irq), cpumask_of(0)); @@ -377,8 +608,9 @@ info->type = IRQT_UNBOUND; info->refcnt = -1; - irq_set_handler_data(irq, info); + set_info_for_irq(irq, info); + INIT_LIST_HEAD(&info->eoi_list); list_add_tail(&info->list, &xen_irq_list_head); } @@ -426,17 +658,25 @@ static void xen_free_irq(unsigned irq) { - struct irq_info *info = irq_get_handler_data(irq); + struct irq_info *info = info_for_irq(irq); + unsigned long flags; if (WARN_ON(!info)) return; + write_lock_irqsave(&evtchn_rwlock, flags); + + if (!list_empty(&info->eoi_list)) + lateeoi_list_del(info); + list_del(&info->list); - irq_set_handler_data(irq, NULL); + set_info_for_irq(irq, NULL); WARN_ON(info->refcnt > 0); + write_unlock_irqrestore(&evtchn_rwlock, flags); + kfree(info); /* Legacy IRQ descriptors are managed by the arch. */ @@ -455,6 +695,12 @@ BUG(); } +static void event_handler_exit(struct irq_info *info) +{ + smp_store_release(&info->is_active, 0); + clear_evtchn(info->evtchn); +} + static void pirq_query_unmask(int irq) { struct physdev_irq_status_query irq_status; @@ -473,7 +719,8 @@ static void eoi_pirq(struct irq_data *data) { - evtchn_port_t evtchn = evtchn_from_irq(data->irq); + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; struct physdev_eoi eoi = { .irq = pirq_from_irq(data->irq) }; int rc = 0; @@ -482,16 +729,15 @@ if (unlikely(irqd_is_setaffinity_pending(data)) && likely(!irqd_irq_disabled(data))) { - int masked = test_and_set_mask(evtchn); + do_mask(info, EVT_MASK_REASON_TEMPORARY); - clear_evtchn(evtchn); + event_handler_exit(info); irq_move_masked_irq(data); - if (!masked) - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_TEMPORARY); } else - clear_evtchn(evtchn); + event_handler_exit(info); if (pirq_needs_eoi(data->irq)) { rc = HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); @@ -542,7 +788,8 @@ goto err; out: - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_EXPLICIT); + eoi_pirq(irq_get_irq_data(irq)); return 0; @@ -569,7 +816,7 @@ if (!VALID_EVTCHN(evtchn)) return; - mask_evtchn(evtchn); + do_mask(info, EVT_MASK_REASON_EXPLICIT); xen_evtchn_close(evtchn); xen_irq_info_cleanup(info); } @@ -603,7 +850,7 @@ static void __unbind_from_irq(unsigned int irq) { evtchn_port_t evtchn = evtchn_from_irq(irq); - struct irq_info *info = irq_get_handler_data(irq); + struct irq_info *info = info_for_irq(irq); if (info->refcnt > 0) { info->refcnt--; @@ -828,7 +1075,7 @@ } EXPORT_SYMBOL_GPL(xen_pirq_from_irq); -int bind_evtchn_to_irq(evtchn_port_t evtchn) +static int bind_evtchn_to_irq_chip(evtchn_port_t evtchn, struct irq_chip *chip) { int irq; int ret; @@ -845,7 +1092,7 @@ if (irq < 0) goto out; - irq_set_chip_and_handler_name(irq, &xen_dynamic_chip, + irq_set_chip_and_handler_name(irq, chip, handle_edge_irq, "event"); ret = xen_irq_info_evtchn_setup(irq, evtchn); @@ -866,8 +1113,19 @@ return irq; } + +int bind_evtchn_to_irq(evtchn_port_t evtchn) +{ + return bind_evtchn_to_irq_chip(evtchn, &xen_dynamic_chip); +} EXPORT_SYMBOL_GPL(bind_evtchn_to_irq); +int bind_evtchn_to_irq_lateeoi(evtchn_port_t evtchn) +{ + return bind_evtchn_to_irq_chip(evtchn, &xen_lateeoi_chip); +} +EXPORT_SYMBOL_GPL(bind_evtchn_to_irq_lateeoi); + static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu) { struct evtchn_bind_ipi bind_ipi; @@ -909,8 +1167,9 @@ return irq; } -int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, - evtchn_port_t remote_port) +static int bind_interdomain_evtchn_to_irq_chip(unsigned int remote_domain, + evtchn_port_t remote_port, + struct irq_chip *chip) { struct evtchn_bind_interdomain bind_interdomain; int err; @@ -921,10 +1180,26 @@ err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, &bind_interdomain); - return err ? : bind_evtchn_to_irq(bind_interdomain.local_port); + return err ? : bind_evtchn_to_irq_chip(bind_interdomain.local_port, + chip); +} + +int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, + evtchn_port_t remote_port) +{ + return bind_interdomain_evtchn_to_irq_chip(remote_domain, remote_port, + &xen_dynamic_chip); } EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irq); +int bind_interdomain_evtchn_to_irq_lateeoi(unsigned int remote_domain, + evtchn_port_t remote_port) +{ + return bind_interdomain_evtchn_to_irq_chip(remote_domain, remote_port, + &xen_lateeoi_chip); +} +EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irq_lateeoi); + static int find_virq(unsigned int virq, unsigned int cpu, evtchn_port_t *evtchn) { struct evtchn_status status; @@ -1021,14 +1296,15 @@ mutex_unlock(&irq_mapping_update_lock); } -int bind_evtchn_to_irqhandler(evtchn_port_t evtchn, - irq_handler_t handler, - unsigned long irqflags, - const char *devname, void *dev_id) +static int bind_evtchn_to_irqhandler_chip(evtchn_port_t evtchn, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, void *dev_id, + struct irq_chip *chip) { int irq, retval; - irq = bind_evtchn_to_irq(evtchn); + irq = bind_evtchn_to_irq_chip(evtchn, chip); if (irq < 0) return irq; retval = request_irq(irq, handler, irqflags, devname, dev_id); @@ -1039,18 +1315,38 @@ return irq; } + +int bind_evtchn_to_irqhandler(evtchn_port_t evtchn, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, void *dev_id) +{ + return bind_evtchn_to_irqhandler_chip(evtchn, handler, irqflags, + devname, dev_id, + &xen_dynamic_chip); +} EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler); -int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - evtchn_port_t remote_port, - irq_handler_t handler, - unsigned long irqflags, - const char *devname, - void *dev_id) +int bind_evtchn_to_irqhandler_lateeoi(evtchn_port_t evtchn, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, void *dev_id) +{ + return bind_evtchn_to_irqhandler_chip(evtchn, handler, irqflags, + devname, dev_id, + &xen_lateeoi_chip); +} +EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler_lateeoi); + +static int bind_interdomain_evtchn_to_irqhandler_chip( + unsigned int remote_domain, evtchn_port_t remote_port, + irq_handler_t handler, unsigned long irqflags, + const char *devname, void *dev_id, struct irq_chip *chip) { int irq, retval; - irq = bind_interdomain_evtchn_to_irq(remote_domain, remote_port); + irq = bind_interdomain_evtchn_to_irq_chip(remote_domain, remote_port, + chip); if (irq < 0) return irq; @@ -1062,8 +1358,33 @@ return irq; } + +int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, + evtchn_port_t remote_port, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, + void *dev_id) +{ + return bind_interdomain_evtchn_to_irqhandler_chip(remote_domain, + remote_port, handler, irqflags, devname, + dev_id, &xen_dynamic_chip); +} EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irqhandler); +int bind_interdomain_evtchn_to_irqhandler_lateeoi(unsigned int remote_domain, + evtchn_port_t remote_port, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, + void *dev_id) +{ + return bind_interdomain_evtchn_to_irqhandler_chip(remote_domain, + remote_port, handler, irqflags, devname, + dev_id, &xen_lateeoi_chip); +} +EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irqhandler_lateeoi); + int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) @@ -1108,7 +1429,7 @@ void unbind_from_irqhandler(unsigned int irq, void *dev_id) { - struct irq_info *info = irq_get_handler_data(irq); + struct irq_info *info = info_for_irq(irq); if (WARN_ON(!info)) return; @@ -1142,7 +1463,7 @@ if (irq == -1) return -ENOENT; - info = irq_get_handler_data(irq); + info = info_for_irq(irq); if (!info) return -ENOENT; @@ -1170,13 +1491,13 @@ if (irq == -1) goto done; - info = irq_get_handler_data(irq); + info = info_for_irq(irq); if (!info) goto done; err = -EINVAL; - if (info->refcnt <= 0) + if (info->refcnt <= 0 || info->refcnt == SHRT_MAX) goto done; info->refcnt++; @@ -1215,21 +1536,83 @@ notify_remote_via_irq(irq); } +struct evtchn_loop_ctrl { + ktime_t timeout; + unsigned count; + bool defer_eoi; +}; + +void handle_irq_for_port(evtchn_port_t port, struct evtchn_loop_ctrl *ctrl) +{ + int irq; + struct irq_info *info; + + irq = get_evtchn_to_irq(port); + if (irq == -1) + return; + + /* + * Check for timeout every 256 events. + * We are setting the timeout value only after the first 256 + * events in order to not hurt the common case of few loop + * iterations. The 256 is basically an arbitrary value. + * + * In case we are hitting the timeout we need to defer all further + * EOIs in order to ensure to leave the event handling loop rather + * sooner than later. + */ + if (!ctrl->defer_eoi && !(++ctrl->count & 0xff)) { + ktime_t kt = ktime_get(); + + if (!ctrl->timeout) { + kt = ktime_add_ms(kt, + jiffies_to_msecs(event_loop_timeout)); + ctrl->timeout = kt; + } else if (kt > ctrl->timeout) { + ctrl->defer_eoi = true; + } + } + + info = info_for_irq(irq); + if (xchg_acquire(&info->is_active, 1)) + return; + + if (ctrl->defer_eoi) { + info->eoi_cpu = smp_processor_id(); + info->irq_epoch = __this_cpu_read(irq_epoch); + info->eoi_time = get_jiffies_64() + event_eoi_delay; + } + + generic_handle_irq(irq); +} + static void __xen_evtchn_do_upcall(void) { struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu); int cpu = smp_processor_id(); + struct evtchn_loop_ctrl ctrl = { 0 }; + + read_lock(&evtchn_rwlock); do { vcpu_info->evtchn_upcall_pending = 0; - xen_evtchn_handle_events(cpu); + xen_evtchn_handle_events(cpu, &ctrl); BUG_ON(!irqs_disabled()); virt_rmb(); /* Hypervisor can set upcall pending. */ } while (vcpu_info->evtchn_upcall_pending); + + read_unlock(&evtchn_rwlock); + + /* + * Increment irq_epoch only now to defer EOIs only for + * xen_irq_lateeoi() invocations occurring from inside the loop + * above. + */ + __this_cpu_inc(irq_epoch); } void xen_evtchn_do_upcall(struct pt_regs *regs) @@ -1283,10 +1666,10 @@ } /* Rebind an evtchn so that it gets delivered to a specific cpu */ -static int xen_rebind_evtchn_to_cpu(evtchn_port_t evtchn, unsigned int tcpu) +static int xen_rebind_evtchn_to_cpu(struct irq_info *info, unsigned int tcpu) { struct evtchn_bind_vcpu bind_vcpu; - int masked; + evtchn_port_t evtchn = info ? info->evtchn : 0; if (!VALID_EVTCHN(evtchn)) return -1; @@ -1302,7 +1685,7 @@ * Mask the event while changing the VCPU binding to prevent * it being delivered on an unexpected VCPU. */ - masked = test_and_set_mask(evtchn); + do_mask(info, EVT_MASK_REASON_TEMPORARY); /* * If this fails, it usually just indicates that we're dealing with a @@ -1312,8 +1695,7 @@ if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >= 0) bind_evtchn_to_cpu(evtchn, tcpu); - if (!masked) - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_TEMPORARY); return 0; } @@ -1322,7 +1704,7 @@ bool force) { unsigned tcpu = cpumask_first_and(dest, cpu_online_mask); - int ret = xen_rebind_evtchn_to_cpu(evtchn_from_irq(data->irq), tcpu); + int ret = xen_rebind_evtchn_to_cpu(info_for_irq(data->irq), tcpu); if (!ret) irq_data_update_effective_affinity(data, cpumask_of(tcpu)); @@ -1341,39 +1723,41 @@ static void enable_dynirq(struct irq_data *data) { - evtchn_port_t evtchn = evtchn_from_irq(data->irq); + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; if (VALID_EVTCHN(evtchn)) - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_EXPLICIT); } static void disable_dynirq(struct irq_data *data) { - evtchn_port_t evtchn = evtchn_from_irq(data->irq); + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; if (VALID_EVTCHN(evtchn)) - mask_evtchn(evtchn); + do_mask(info, EVT_MASK_REASON_EXPLICIT); } static void ack_dynirq(struct irq_data *data) { - evtchn_port_t evtchn = evtchn_from_irq(data->irq); + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; if (!VALID_EVTCHN(evtchn)) return; if (unlikely(irqd_is_setaffinity_pending(data)) && likely(!irqd_irq_disabled(data))) { - int masked = test_and_set_mask(evtchn); + do_mask(info, EVT_MASK_REASON_TEMPORARY); - clear_evtchn(evtchn); + event_handler_exit(info); irq_move_masked_irq(data); - if (!masked) - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_TEMPORARY); } else - clear_evtchn(evtchn); + event_handler_exit(info); } static void mask_ack_dynirq(struct irq_data *data) @@ -1382,18 +1766,39 @@ ack_dynirq(data); } +static void lateeoi_ack_dynirq(struct irq_data *data) +{ + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; + + if (VALID_EVTCHN(evtchn)) { + do_mask(info, EVT_MASK_REASON_EOI_PENDING); + event_handler_exit(info); + } +} + +static void lateeoi_mask_ack_dynirq(struct irq_data *data) +{ + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; + + if (VALID_EVTCHN(evtchn)) { + do_mask(info, EVT_MASK_REASON_EXPLICIT); + event_handler_exit(info); + } +} + static int retrigger_dynirq(struct irq_data *data) { - evtchn_port_t evtchn = evtchn_from_irq(data->irq); - int masked; + struct irq_info *info = info_for_irq(data->irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; if (!VALID_EVTCHN(evtchn)) return 0; - masked = test_and_set_mask(evtchn); + do_mask(info, EVT_MASK_REASON_TEMPORARY); set_evtchn(evtchn); - if (!masked) - unmask_evtchn(evtchn); + do_unmask(info, EVT_MASK_REASON_TEMPORARY); return 1; } @@ -1490,10 +1895,11 @@ /* Clear an irq's pending state, in preparation for polling on it */ void xen_clear_irq_pending(int irq) { - evtchn_port_t evtchn = evtchn_from_irq(irq); + struct irq_info *info = info_for_irq(irq); + evtchn_port_t evtchn = info ? info->evtchn : 0; if (VALID_EVTCHN(evtchn)) - clear_evtchn(evtchn); + event_handler_exit(info); } EXPORT_SYMBOL(xen_clear_irq_pending); void xen_set_irq_pending(int irq) @@ -1593,6 +1999,21 @@ .irq_retrigger = retrigger_dynirq, }; +static struct irq_chip xen_lateeoi_chip __read_mostly = { + /* The chip name needs to contain "xen-dyn" for irqbalance to work. */ + .name = "xen-dyn-lateeoi", + + .irq_disable = disable_dynirq, + .irq_mask = disable_dynirq, + .irq_unmask = enable_dynirq, + + .irq_ack = lateeoi_ack_dynirq, + .irq_mask_ack = lateeoi_mask_ack_dynirq, + + .irq_set_affinity = set_affinity_irq, + .irq_retrigger = retrigger_dynirq, +}; + static struct irq_chip xen_pirq_chip __read_mostly = { .name = "xen-pirq", @@ -1623,16 +2044,6 @@ .irq_ack = ack_dynirq, }; -int xen_set_callback_via(uint64_t via) -{ - struct xen_hvm_param a; - a.domid = DOMID_SELF; - a.index = HVM_PARAM_CALLBACK_IRQ; - a.value = via; - return HYPERVISOR_hvm_op(HVMOP_set_param, &a); -} -EXPORT_SYMBOL_GPL(xen_set_callback_via); - #ifdef CONFIG_XEN_PVHVM /* Vector callbacks are better than PCI interrupts to receive event * channel notifications because we can receive vector callbacks on any @@ -1663,12 +2074,31 @@ static inline void xen_alloc_callback_vector(void) {} #endif -#undef MODULE_PARAM_PREFIX -#define MODULE_PARAM_PREFIX "xen." - static bool fifo_events = true; module_param(fifo_events, bool, 0); +static int xen_evtchn_cpu_prepare(unsigned int cpu) +{ + int ret = 0; + + xen_cpu_init_eoi(cpu); + + if (evtchn_ops->percpu_init) + ret = evtchn_ops->percpu_init(cpu); + + return ret; +} + +static int xen_evtchn_cpu_dead(unsigned int cpu) +{ + int ret = 0; + + if (evtchn_ops->percpu_deinit) + ret = evtchn_ops->percpu_deinit(cpu); + + return ret; +} + void __init xen_init_IRQ(void) { int ret = -EINVAL; @@ -1679,6 +2109,12 @@ if (ret < 0) xen_evtchn_2l_init(); + xen_cpu_init_eoi(smp_processor_id()); + + cpuhp_setup_state_nocalls(CPUHP_XEN_EVTCHN_PREPARE, + "xen/evtchn:prepare", + xen_evtchn_cpu_prepare, xen_evtchn_cpu_dead); + evtchn_to_irq = kcalloc(EVTCHN_ROW(xen_evtchn_max_channels()), sizeof(*evtchn_to_irq), GFP_KERNEL); BUG_ON(!evtchn_to_irq); --- linux-5.8.0.orig/drivers/xen/events/events_fifo.c +++ linux-5.8.0/drivers/xen/events/events_fifo.c @@ -209,12 +209,6 @@ return sync_test_bit(EVTCHN_FIFO_BIT(PENDING, word), BM(word)); } -static bool evtchn_fifo_test_and_set_mask(evtchn_port_t port) -{ - event_word_t *word = event_word_from_port(port); - return sync_test_and_set_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word)); -} - static void evtchn_fifo_mask(evtchn_port_t port) { event_word_t *word = event_word_from_port(port); @@ -227,19 +221,25 @@ return sync_test_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word)); } /* - * Clear MASKED, spinning if BUSY is set. + * Clear MASKED if not PENDING, spinning if BUSY is set. + * Return true if mask was cleared. */ -static void clear_masked(volatile event_word_t *word) +static bool clear_masked_cond(volatile event_word_t *word) { event_word_t new, old, w; w = *word; do { + if (w & (1 << EVTCHN_FIFO_PENDING)) + return false; + old = w & ~(1 << EVTCHN_FIFO_BUSY); new = old & ~(1 << EVTCHN_FIFO_MASKED); w = sync_cmpxchg(word, old, new); } while (w != old); + + return true; } static void evtchn_fifo_unmask(evtchn_port_t port) @@ -248,8 +248,7 @@ BUG_ON(!irqs_disabled()); - clear_masked(word); - if (evtchn_fifo_is_pending(port)) { + if (!clear_masked_cond(word)) { struct evtchn_unmask unmask = { .port = port }; (void)HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &unmask); } @@ -270,19 +269,9 @@ return w & EVTCHN_FIFO_LINK_MASK; } -static void handle_irq_for_port(evtchn_port_t port) -{ - int irq; - - irq = get_evtchn_to_irq(port); - if (irq != -1) - generic_handle_irq(irq); -} - -static void consume_one_event(unsigned cpu, +static void consume_one_event(unsigned cpu, struct evtchn_loop_ctrl *ctrl, struct evtchn_fifo_control_block *control_block, - unsigned priority, unsigned long *ready, - bool drop) + unsigned priority, unsigned long *ready) { struct evtchn_fifo_queue *q = &per_cpu(cpu_queue, cpu); uint32_t head; @@ -315,16 +304,17 @@ clear_bit(priority, ready); if (evtchn_fifo_is_pending(port) && !evtchn_fifo_is_masked(port)) { - if (unlikely(drop)) + if (unlikely(!ctrl)) pr_warn("Dropping pending event for port %u\n", port); else - handle_irq_for_port(port); + handle_irq_for_port(port, ctrl); } q->head[priority] = head; } -static void __evtchn_fifo_handle_events(unsigned cpu, bool drop) +static void __evtchn_fifo_handle_events(unsigned cpu, + struct evtchn_loop_ctrl *ctrl) { struct evtchn_fifo_control_block *control_block; unsigned long ready; @@ -336,14 +326,15 @@ while (ready) { q = find_first_bit(&ready, EVTCHN_FIFO_MAX_QUEUES); - consume_one_event(cpu, control_block, q, &ready, drop); + consume_one_event(cpu, ctrl, control_block, q, &ready); ready |= xchg(&control_block->ready, 0); } } -static void evtchn_fifo_handle_events(unsigned cpu) +static void evtchn_fifo_handle_events(unsigned cpu, + struct evtchn_loop_ctrl *ctrl) { - __evtchn_fifo_handle_events(cpu, false); + __evtchn_fifo_handle_events(cpu, ctrl); } static void evtchn_fifo_resume(void) @@ -380,21 +371,6 @@ event_array_pages = 0; } -static const struct evtchn_ops evtchn_ops_fifo = { - .max_channels = evtchn_fifo_max_channels, - .nr_channels = evtchn_fifo_nr_channels, - .setup = evtchn_fifo_setup, - .bind_to_cpu = evtchn_fifo_bind_to_cpu, - .clear_pending = evtchn_fifo_clear_pending, - .set_pending = evtchn_fifo_set_pending, - .is_pending = evtchn_fifo_is_pending, - .test_and_set_mask = evtchn_fifo_test_and_set_mask, - .mask = evtchn_fifo_mask, - .unmask = evtchn_fifo_unmask, - .handle_events = evtchn_fifo_handle_events, - .resume = evtchn_fifo_resume, -}; - static int evtchn_fifo_alloc_control_block(unsigned cpu) { void *control_block = NULL; @@ -417,19 +393,35 @@ return ret; } -static int xen_evtchn_cpu_prepare(unsigned int cpu) +static int evtchn_fifo_percpu_init(unsigned int cpu) { if (!per_cpu(cpu_control_block, cpu)) return evtchn_fifo_alloc_control_block(cpu); return 0; } -static int xen_evtchn_cpu_dead(unsigned int cpu) +static int evtchn_fifo_percpu_deinit(unsigned int cpu) { - __evtchn_fifo_handle_events(cpu, true); + __evtchn_fifo_handle_events(cpu, NULL); return 0; } +static const struct evtchn_ops evtchn_ops_fifo = { + .max_channels = evtchn_fifo_max_channels, + .nr_channels = evtchn_fifo_nr_channels, + .setup = evtchn_fifo_setup, + .bind_to_cpu = evtchn_fifo_bind_to_cpu, + .clear_pending = evtchn_fifo_clear_pending, + .set_pending = evtchn_fifo_set_pending, + .is_pending = evtchn_fifo_is_pending, + .mask = evtchn_fifo_mask, + .unmask = evtchn_fifo_unmask, + .handle_events = evtchn_fifo_handle_events, + .resume = evtchn_fifo_resume, + .percpu_init = evtchn_fifo_percpu_init, + .percpu_deinit = evtchn_fifo_percpu_deinit, +}; + int __init xen_evtchn_fifo_init(void) { int cpu = smp_processor_id(); @@ -443,9 +435,5 @@ evtchn_ops = &evtchn_ops_fifo; - cpuhp_setup_state_nocalls(CPUHP_XEN_EVTCHN_PREPARE, - "xen/evtchn:prepare", - xen_evtchn_cpu_prepare, xen_evtchn_cpu_dead); - return ret; } --- linux-5.8.0.orig/drivers/xen/events/events_internal.h +++ linux-5.8.0/drivers/xen/events/events_internal.h @@ -30,11 +30,22 @@ */ struct irq_info { struct list_head list; - int refcnt; - enum xen_irq_type type; /* type */ + struct list_head eoi_list; + short refcnt; + short spurious_cnt; + short type; /* type */ + u8 mask_reason; /* Why is event channel masked */ +#define EVT_MASK_REASON_EXPLICIT 0x01 +#define EVT_MASK_REASON_TEMPORARY 0x02 +#define EVT_MASK_REASON_EOI_PENDING 0x04 + u8 is_active; /* Is event just being handled? */ unsigned irq; evtchn_port_t evtchn; /* event channel */ unsigned short cpu; /* cpu bound */ + unsigned short eoi_cpu; /* EOI must happen on this cpu */ + unsigned int irq_epoch; /* If eoi_cpu valid: irq_epoch of event */ + u64 eoi_time; /* Time in jiffies when to EOI. */ + spinlock_t lock; union { unsigned short virq; @@ -53,28 +64,34 @@ #define PIRQ_SHAREABLE (1 << 1) #define PIRQ_MSI_GROUP (1 << 2) +struct evtchn_loop_ctrl; + struct evtchn_ops { unsigned (*max_channels)(void); unsigned (*nr_channels)(void); int (*setup)(struct irq_info *info); + void (*remove)(evtchn_port_t port, unsigned int cpu); void (*bind_to_cpu)(struct irq_info *info, unsigned cpu); void (*clear_pending)(evtchn_port_t port); void (*set_pending)(evtchn_port_t port); bool (*is_pending)(evtchn_port_t port); - bool (*test_and_set_mask)(evtchn_port_t port); void (*mask)(evtchn_port_t port); void (*unmask)(evtchn_port_t port); - void (*handle_events)(unsigned cpu); + void (*handle_events)(unsigned cpu, struct evtchn_loop_ctrl *ctrl); void (*resume)(void); + + int (*percpu_init)(unsigned int cpu); + int (*percpu_deinit)(unsigned int cpu); }; extern const struct evtchn_ops *evtchn_ops; extern int **evtchn_to_irq; int get_evtchn_to_irq(evtchn_port_t evtchn); +void handle_irq_for_port(evtchn_port_t port, struct evtchn_loop_ctrl *ctrl); struct irq_info *info_for_irq(unsigned irq); unsigned cpu_from_irq(unsigned irq); @@ -96,6 +113,13 @@ return 0; } +static inline void xen_evtchn_port_remove(evtchn_port_t evtchn, + unsigned int cpu) +{ + if (evtchn_ops->remove) + evtchn_ops->remove(evtchn, cpu); +} + static inline void xen_evtchn_port_bind_to_cpu(struct irq_info *info, unsigned cpu) { @@ -117,11 +141,6 @@ return evtchn_ops->is_pending(port); } -static inline bool test_and_set_mask(evtchn_port_t port) -{ - return evtchn_ops->test_and_set_mask(port); -} - static inline void mask_evtchn(evtchn_port_t port) { return evtchn_ops->mask(port); @@ -132,9 +151,10 @@ return evtchn_ops->unmask(port); } -static inline void xen_evtchn_handle_events(unsigned cpu) +static inline void xen_evtchn_handle_events(unsigned cpu, + struct evtchn_loop_ctrl *ctrl) { - return evtchn_ops->handle_events(cpu); + return evtchn_ops->handle_events(cpu, ctrl); } static inline void xen_evtchn_resume(void) --- linux-5.8.0.orig/drivers/xen/evtchn.c +++ linux-5.8.0/drivers/xen/evtchn.c @@ -167,7 +167,6 @@ "Interrupt for port %u, but apparently not enabled; per-user %p\n", evtchn->port, u); - disable_irq_nosync(irq); evtchn->enabled = false; spin_lock(&u->ring_prod_lock); @@ -293,7 +292,7 @@ evtchn = find_evtchn(u, port); if (evtchn && !evtchn->enabled) { evtchn->enabled = true; - enable_irq(irq_from_evtchn(port)); + xen_irq_lateeoi(irq_from_evtchn(port), 0); } } @@ -393,8 +392,8 @@ if (rc < 0) goto err; - rc = bind_evtchn_to_irqhandler(port, evtchn_interrupt, 0, - u->name, evtchn); + rc = bind_evtchn_to_irqhandler_lateeoi(port, evtchn_interrupt, 0, + u->name, evtchn); if (rc < 0) goto err; --- linux-5.8.0.orig/drivers/xen/gntdev-dmabuf.c +++ linux-5.8.0/drivers/xen/gntdev-dmabuf.c @@ -247,10 +247,9 @@ if (sgt) { if (gntdev_dmabuf_attach->dir != DMA_NONE) - dma_unmap_sg_attrs(attach->dev, sgt->sgl, - sgt->nents, - gntdev_dmabuf_attach->dir, - DMA_ATTR_SKIP_CPU_SYNC); + dma_unmap_sgtable(attach->dev, sgt, + gntdev_dmabuf_attach->dir, + DMA_ATTR_SKIP_CPU_SYNC); sg_free_table(sgt); } @@ -288,8 +287,8 @@ sgt = dmabuf_pages_to_sgt(gntdev_dmabuf->pages, gntdev_dmabuf->nr_pages); if (!IS_ERR(sgt)) { - if (!dma_map_sg_attrs(attach->dev, sgt->sgl, sgt->nents, dir, - DMA_ATTR_SKIP_CPU_SYNC)) { + if (dma_map_sgtable(attach->dev, sgt, dir, + DMA_ATTR_SKIP_CPU_SYNC)) { sg_free_table(sgt); kfree(sgt); sgt = ERR_PTR(-ENOMEM); @@ -613,6 +612,14 @@ goto fail_detach; } + /* Check that we have zero offset. */ + if (sgt->sgl->offset) { + ret = ERR_PTR(-EINVAL); + pr_debug("DMA buffer has %d bytes offset, user-space expects 0\n", + sgt->sgl->offset); + goto fail_unmap; + } + /* Check number of pages that imported buffer has. */ if (attach->dmabuf->size != gntdev_dmabuf->nr_pages << PAGE_SHIFT) { ret = ERR_PTR(-EINVAL); @@ -625,7 +632,7 @@ /* Now convert sgt to array of pages and check for page validity. */ i = 0; - for_each_sg_page(sgt->sgl, &sg_iter, sgt->nents, 0) { + for_each_sgtable_page(sgt, &sg_iter, 0) { struct page *page = sg_page_iter_page(&sg_iter); /* * Check if page is valid: this can happen if we are given --- linux-5.8.0.orig/drivers/xen/gntdev.c +++ linux-5.8.0/drivers/xen/gntdev.c @@ -309,44 +309,47 @@ * to the kernel linear addresses of the struct pages. * These ptes are completely different from the user ptes dealt * with find_grant_ptes. + * Note that GNTMAP_device_map isn't needed here: The + * dev_bus_addr output field gets consumed only from ->map_ops, + * and by not requesting it when mapping we also avoid needing + * to mirror dev_bus_addr into ->unmap_ops (and holding an extra + * reference to the page in the hypervisor). */ + unsigned int flags = (map->flags & ~GNTMAP_device_map) | + GNTMAP_host_map; + for (i = 0; i < map->count; i++) { unsigned long address = (unsigned long) pfn_to_kaddr(page_to_pfn(map->pages[i])); BUG_ON(PageHighMem(map->pages[i])); - gnttab_set_map_op(&map->kmap_ops[i], address, - map->flags | GNTMAP_host_map, + gnttab_set_map_op(&map->kmap_ops[i], address, flags, map->grants[i].ref, map->grants[i].domid); gnttab_set_unmap_op(&map->kunmap_ops[i], address, - map->flags | GNTMAP_host_map, -1); + flags, -1); } } pr_debug("map %d+%d\n", map->index, map->count); err = gnttab_map_refs(map->map_ops, use_ptemod ? map->kmap_ops : NULL, map->pages, map->count); - if (err) - return err; for (i = 0; i < map->count; i++) { - if (map->map_ops[i].status) { + if (map->map_ops[i].status == GNTST_okay) + map->unmap_ops[i].handle = map->map_ops[i].handle; + else if (!err) err = -EINVAL; - continue; - } - map->unmap_ops[i].handle = map->map_ops[i].handle; - if (use_ptemod) - map->kunmap_ops[i].handle = map->kmap_ops[i].handle; -#ifdef CONFIG_XEN_GRANT_DMA_ALLOC - else if (map->dma_vaddr) { - unsigned long bfn; + if (map->flags & GNTMAP_device_map) + map->unmap_ops[i].dev_bus_addr = map->map_ops[i].dev_bus_addr; - bfn = pfn_to_bfn(page_to_pfn(map->pages[i])); - map->unmap_ops[i].dev_bus_addr = __pfn_to_phys(bfn); + if (use_ptemod) { + if (map->kmap_ops[i].status == GNTST_okay) + map->kunmap_ops[i].handle = map->kmap_ops[i].handle; + else if (!err) + err = -EINVAL; } -#endif } return err; } @@ -720,17 +723,18 @@ s16 __user *status[GNTDEV_COPY_BATCH]; unsigned int nr_ops; unsigned int nr_pages; + bool writeable; }; static int gntdev_get_page(struct gntdev_copy_batch *batch, void __user *virt, - bool writeable, unsigned long *gfn) + unsigned long *gfn) { unsigned long addr = (unsigned long)virt; struct page *page; unsigned long xen_pfn; int ret; - ret = get_user_pages_fast(addr, 1, writeable ? FOLL_WRITE : 0, &page); + ret = get_user_pages_fast(addr, 1, batch->writeable ? FOLL_WRITE : 0, &page); if (ret < 0) return ret; @@ -746,9 +750,13 @@ { unsigned int i; - for (i = 0; i < batch->nr_pages; i++) + for (i = 0; i < batch->nr_pages; i++) { + if (batch->writeable && !PageDirty(batch->pages[i])) + set_page_dirty_lock(batch->pages[i]); put_page(batch->pages[i]); + } batch->nr_pages = 0; + batch->writeable = false; } static int gntdev_copy(struct gntdev_copy_batch *batch) @@ -837,8 +845,9 @@ virt = seg->source.virt + copied; off = (unsigned long)virt & ~XEN_PAGE_MASK; len = min(len, (size_t)XEN_PAGE_SIZE - off); + batch->writeable = false; - ret = gntdev_get_page(batch, virt, false, &gfn); + ret = gntdev_get_page(batch, virt, &gfn); if (ret < 0) return ret; @@ -856,8 +865,9 @@ virt = seg->dest.virt + copied; off = (unsigned long)virt & ~XEN_PAGE_MASK; len = min(len, (size_t)XEN_PAGE_SIZE - off); + batch->writeable = true; - ret = gntdev_get_page(batch, virt, true, &gfn); + ret = gntdev_get_page(batch, virt, &gfn); if (ret < 0) return ret; --- linux-5.8.0.orig/drivers/xen/grant-table.c +++ linux-5.8.0/drivers/xen/grant-table.c @@ -813,6 +813,78 @@ } EXPORT_SYMBOL_GPL(gnttab_alloc_pages); +void gnttab_page_cache_init(struct gnttab_page_cache *cache) +{ + spin_lock_init(&cache->lock); + INIT_LIST_HEAD(&cache->pages); + cache->num_pages = 0; +} +EXPORT_SYMBOL_GPL(gnttab_page_cache_init); + +int gnttab_page_cache_get(struct gnttab_page_cache *cache, struct page **page) +{ + unsigned long flags; + + spin_lock_irqsave(&cache->lock, flags); + + if (list_empty(&cache->pages)) { + spin_unlock_irqrestore(&cache->lock, flags); + return gnttab_alloc_pages(1, page); + } + + page[0] = list_first_entry(&cache->pages, struct page, lru); + list_del(&page[0]->lru); + cache->num_pages--; + + spin_unlock_irqrestore(&cache->lock, flags); + + return 0; +} +EXPORT_SYMBOL_GPL(gnttab_page_cache_get); + +void gnttab_page_cache_put(struct gnttab_page_cache *cache, struct page **page, + unsigned int num) +{ + unsigned long flags; + unsigned int i; + + spin_lock_irqsave(&cache->lock, flags); + + for (i = 0; i < num; i++) + list_add(&page[i]->lru, &cache->pages); + cache->num_pages += num; + + spin_unlock_irqrestore(&cache->lock, flags); +} +EXPORT_SYMBOL_GPL(gnttab_page_cache_put); + +void gnttab_page_cache_shrink(struct gnttab_page_cache *cache, unsigned int num) +{ + struct page *page[10]; + unsigned int i = 0; + unsigned long flags; + + spin_lock_irqsave(&cache->lock, flags); + + while (cache->num_pages > num) { + page[i] = list_first_entry(&cache->pages, struct page, lru); + list_del(&page[i]->lru); + cache->num_pages--; + if (++i == ARRAY_SIZE(page)) { + spin_unlock_irqrestore(&cache->lock, flags); + gnttab_free_pages(i, page); + i = 0; + spin_lock_irqsave(&cache->lock, flags); + } + } + + spin_unlock_irqrestore(&cache->lock, flags); + + if (i != 0) + gnttab_free_pages(i, page); +} +EXPORT_SYMBOL_GPL(gnttab_page_cache_shrink); + void gnttab_pages_clear_private(int nr_pages, struct page **pages) { int i; --- linux-5.8.0.orig/drivers/xen/platform-pci.c +++ linux-5.8.0/drivers/xen/platform-pci.c @@ -149,7 +149,6 @@ ret = gnttab_init(); if (ret) goto grant_out; - xenbus_probe(NULL); return 0; grant_out: gnttab_free_auto_xlat_frames(); --- linux-5.8.0.orig/drivers/xen/privcmd.c +++ linux-5.8.0/drivers/xen/privcmd.c @@ -722,14 +722,15 @@ return 0; } -static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata) +static long privcmd_ioctl_mmap_resource(struct file *file, + struct privcmd_mmap_resource __user *udata) { struct privcmd_data *data = file->private_data; struct mm_struct *mm = current->mm; struct vm_area_struct *vma; struct privcmd_mmap_resource kdata; xen_pfn_t *pfns = NULL; - struct xen_mem_acquire_resource xdata; + struct xen_mem_acquire_resource xdata = { }; int rc; if (copy_from_user(&kdata, udata, sizeof(kdata))) @@ -739,6 +740,22 @@ if (data->domid != DOMID_INVALID && data->domid != kdata.dom) return -EPERM; + /* Both fields must be set or unset */ + if (!!kdata.addr != !!kdata.num) + return -EINVAL; + + xdata.domid = kdata.dom; + xdata.type = kdata.type; + xdata.id = kdata.id; + + if (!kdata.addr && !kdata.num) { + /* Query the size of the resource. */ + rc = HYPERVISOR_memory_op(XENMEM_acquire_resource, &xdata); + if (rc) + return rc; + return __put_user(xdata.nr_frames, &udata->num); + } + mmap_write_lock(mm); vma = find_vma(mm, kdata.addr); @@ -773,10 +790,6 @@ } else vma->vm_private_data = PRIV_VMA_LOCKED; - memset(&xdata, 0, sizeof(xdata)); - xdata.domid = kdata.dom; - xdata.type = kdata.type; - xdata.id = kdata.id; xdata.frame = kdata.idx; xdata.nr_frames = kdata.num; set_xen_guest_handle(xdata.frame_list, pfns); --- linux-5.8.0.orig/drivers/xen/pvcalls-back.c +++ linux-5.8.0/drivers/xen/pvcalls-back.c @@ -66,6 +66,7 @@ atomic_t write; atomic_t io; atomic_t release; + atomic_t eoi; void (*saved_data_ready)(struct sock *sk); struct pvcalls_ioworker ioworker; }; @@ -87,7 +88,7 @@ struct pvcalls_fedata *fedata, struct sock_mapping *map); -static void pvcalls_conn_back_read(void *opaque) +static bool pvcalls_conn_back_read(void *opaque) { struct sock_mapping *map = (struct sock_mapping *)opaque; struct msghdr msg; @@ -107,17 +108,17 @@ virt_mb(); if (error) - return; + return false; size = pvcalls_queued(prod, cons, array_size); if (size >= array_size) - return; + return false; spin_lock_irqsave(&map->sock->sk->sk_receive_queue.lock, flags); if (skb_queue_empty(&map->sock->sk->sk_receive_queue)) { atomic_set(&map->read, 0); spin_unlock_irqrestore(&map->sock->sk->sk_receive_queue.lock, flags); - return; + return true; } spin_unlock_irqrestore(&map->sock->sk->sk_receive_queue.lock, flags); wanted = array_size - size; @@ -141,7 +142,7 @@ ret = inet_recvmsg(map->sock, &msg, wanted, MSG_DONTWAIT); WARN_ON(ret > wanted); if (ret == -EAGAIN) /* shouldn't happen */ - return; + return true; if (!ret) ret = -ENOTCONN; spin_lock_irqsave(&map->sock->sk->sk_receive_queue.lock, flags); @@ -160,10 +161,10 @@ virt_wmb(); notify_remote_via_irq(map->irq); - return; + return true; } -static void pvcalls_conn_back_write(struct sock_mapping *map) +static bool pvcalls_conn_back_write(struct sock_mapping *map) { struct pvcalls_data_intf *intf = map->ring; struct pvcalls_data *data = &map->data; @@ -180,7 +181,7 @@ array_size = XEN_FLEX_RING_SIZE(map->ring_order); size = pvcalls_queued(prod, cons, array_size); if (size == 0) - return; + return false; memset(&msg, 0, sizeof(msg)); msg.msg_flags |= MSG_DONTWAIT; @@ -198,12 +199,11 @@ atomic_set(&map->write, 0); ret = inet_sendmsg(map->sock, &msg, size); - if (ret == -EAGAIN || (ret >= 0 && ret < size)) { + if (ret == -EAGAIN) { atomic_inc(&map->write); atomic_inc(&map->io); + return true; } - if (ret == -EAGAIN) - return; /* write the data, then update the indexes */ virt_wmb(); @@ -216,9 +216,13 @@ } /* update the indexes, then notify the other end */ virt_wmb(); - if (prod != cons + ret) + if (prod != cons + ret) { atomic_inc(&map->write); + atomic_inc(&map->io); + } notify_remote_via_irq(map->irq); + + return true; } static void pvcalls_back_ioworker(struct work_struct *work) @@ -227,6 +231,7 @@ struct pvcalls_ioworker, register_work); struct sock_mapping *map = container_of(ioworker, struct sock_mapping, ioworker); + unsigned int eoi_flags = XEN_EOI_FLAG_SPURIOUS; while (atomic_read(&map->io) > 0) { if (atomic_read(&map->release) > 0) { @@ -234,10 +239,18 @@ return; } - if (atomic_read(&map->read) > 0) - pvcalls_conn_back_read(map); - if (atomic_read(&map->write) > 0) - pvcalls_conn_back_write(map); + if (atomic_read(&map->read) > 0 && + pvcalls_conn_back_read(map)) + eoi_flags = 0; + if (atomic_read(&map->write) > 0 && + pvcalls_conn_back_write(map)) + eoi_flags = 0; + + if (atomic_read(&map->eoi) > 0 && !atomic_read(&map->write)) { + atomic_set(&map->eoi, 0); + xen_irq_lateeoi(map->irq, eoi_flags); + eoi_flags = XEN_EOI_FLAG_SPURIOUS; + } atomic_dec(&map->io); } @@ -334,12 +347,9 @@ goto out; map->bytes = page; - ret = bind_interdomain_evtchn_to_irqhandler(fedata->dev->otherend_id, - evtchn, - pvcalls_back_conn_event, - 0, - "pvcalls-backend", - map); + ret = bind_interdomain_evtchn_to_irqhandler_lateeoi( + fedata->dev->otherend_id, evtchn, + pvcalls_back_conn_event, 0, "pvcalls-backend", map); if (ret < 0) goto out; map->irq = ret; @@ -873,15 +883,18 @@ { struct xenbus_device *dev = dev_id; struct pvcalls_fedata *fedata = NULL; + unsigned int eoi_flags = XEN_EOI_FLAG_SPURIOUS; - if (dev == NULL) - return IRQ_HANDLED; + if (dev) { + fedata = dev_get_drvdata(&dev->dev); + if (fedata) { + pvcalls_back_work(fedata); + eoi_flags = 0; + } + } - fedata = dev_get_drvdata(&dev->dev); - if (fedata == NULL) - return IRQ_HANDLED; + xen_irq_lateeoi(irq, eoi_flags); - pvcalls_back_work(fedata); return IRQ_HANDLED; } @@ -891,12 +904,15 @@ struct pvcalls_ioworker *iow; if (map == NULL || map->sock == NULL || map->sock->sk == NULL || - map->sock->sk->sk_user_data != map) + map->sock->sk->sk_user_data != map) { + xen_irq_lateeoi(irq, 0); return IRQ_HANDLED; + } iow = &map->ioworker; atomic_inc(&map->write); + atomic_inc(&map->eoi); atomic_inc(&map->io); queue_work(iow->wq, &iow->register_work); @@ -932,7 +948,7 @@ goto error; } - err = bind_interdomain_evtchn_to_irq(dev->otherend_id, evtchn); + err = bind_interdomain_evtchn_to_irq_lateeoi(dev->otherend_id, evtchn); if (err < 0) goto error; fedata->irq = err; --- linux-5.8.0.orig/drivers/xen/swiotlb-xen.c +++ linux-5.8.0/drivers/xen/swiotlb-xen.c @@ -335,6 +335,7 @@ int order = get_order(size); phys_addr_t phys; u64 dma_mask = DMA_BIT_MASK(32); + struct page *page; if (hwdev && hwdev->coherent_dma_mask) dma_mask = hwdev->coherent_dma_mask; @@ -346,9 +347,14 @@ /* Convert the size to actually allocated. */ size = 1UL << (order + XEN_PAGE_SHIFT); + if (is_vmalloc_addr(vaddr)) + page = vmalloc_to_page(vaddr); + else + page = virt_to_page(vaddr); + if (!WARN_ON((dev_addr + size - 1 > dma_mask) || range_straddles_page_boundary(phys, size)) && - TestClearPageXenRemapped(virt_to_page(vaddr))) + TestClearPageXenRemapped(page)) xen_destroy_contiguous_region(phys, order); xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs); --- linux-5.8.0.orig/drivers/xen/xen-pciback/pci_stub.c +++ linux-5.8.0/drivers/xen/xen-pciback/pci_stub.c @@ -734,10 +734,17 @@ wmb(); notify_remote_via_irq(pdev->evtchn_irq); + /* Enable IRQ to signal "request done". */ + xen_pcibk_lateeoi(pdev, 0); + ret = wait_event_timeout(xen_pcibk_aer_wait_queue, !(test_bit(_XEN_PCIB_active, (unsigned long *) &sh_info->flags)), 300*HZ); + /* Enable IRQ for pcifront request if not already active. */ + if (!test_bit(_PDEVF_op_active, &pdev->flags)) + xen_pcibk_lateeoi(pdev, 0); + if (!ret) { if (test_bit(_XEN_PCIB_active, (unsigned long *)&sh_info->flags)) { @@ -751,12 +758,6 @@ } clear_bit(_PCIB_op_pending, (unsigned long *)&pdev->flags); - if (test_bit(_XEN_PCIF_active, - (unsigned long *)&sh_info->flags)) { - dev_dbg(&psdev->dev->dev, "schedule pci_conf service\n"); - xen_pcibk_test_and_schedule_op(psdev->pdev); - } - res = (pci_ers_result_t)aer_op->err; return res; } --- linux-5.8.0.orig/drivers/xen/xen-pciback/pciback.h +++ linux-5.8.0/drivers/xen/xen-pciback/pciback.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #define DRV_NAME "xen-pciback" @@ -27,6 +28,8 @@ #define PDEVF_op_active (1<<(_PDEVF_op_active)) #define _PCIB_op_pending (1) #define PCIB_op_pending (1<<(_PCIB_op_pending)) +#define _EOI_pending (2) +#define EOI_pending (1<<(_EOI_pending)) struct xen_pcibk_device { void *pci_dev_data; @@ -183,10 +186,15 @@ irqreturn_t xen_pcibk_handle_event(int irq, void *dev_id); void xen_pcibk_do_op(struct work_struct *data); +static inline void xen_pcibk_lateeoi(struct xen_pcibk_device *pdev, + unsigned int eoi_flag) +{ + if (test_and_clear_bit(_EOI_pending, &pdev->flags)) + xen_irq_lateeoi(pdev->evtchn_irq, eoi_flag); +} + int xen_pcibk_xenbus_register(void); void xen_pcibk_xenbus_unregister(void); - -void xen_pcibk_test_and_schedule_op(struct xen_pcibk_device *pdev); #endif /* Handles shared IRQs that can to device domain and control domain. */ --- linux-5.8.0.orig/drivers/xen/xen-pciback/pciback_ops.c +++ linux-5.8.0/drivers/xen/xen-pciback/pciback_ops.c @@ -276,26 +276,41 @@ return 0; } #endif + +static inline bool xen_pcibk_test_op_pending(struct xen_pcibk_device *pdev) +{ + return test_bit(_XEN_PCIF_active, + (unsigned long *)&pdev->sh_info->flags) && + !test_and_set_bit(_PDEVF_op_active, &pdev->flags); +} + /* * Now the same evtchn is used for both pcifront conf_read_write request * as well as pcie aer front end ack. We use a new work_queue to schedule * xen_pcibk conf_read_write service for avoiding confict with aer_core * do_recovery job which also use the system default work_queue */ -void xen_pcibk_test_and_schedule_op(struct xen_pcibk_device *pdev) +static void xen_pcibk_test_and_schedule_op(struct xen_pcibk_device *pdev) { + bool eoi = true; + /* Check that frontend is requesting an operation and that we are not * already processing a request */ - if (test_bit(_XEN_PCIF_active, (unsigned long *)&pdev->sh_info->flags) - && !test_and_set_bit(_PDEVF_op_active, &pdev->flags)) { + if (xen_pcibk_test_op_pending(pdev)) { schedule_work(&pdev->op_work); + eoi = false; } /*_XEN_PCIB_active should have been cleared by pcifront. And also make sure xen_pcibk is waiting for ack by checking _PCIB_op_pending*/ if (!test_bit(_XEN_PCIB_active, (unsigned long *)&pdev->sh_info->flags) && test_bit(_PCIB_op_pending, &pdev->flags)) { wake_up(&xen_pcibk_aer_wait_queue); + eoi = false; } + + /* EOI if there was nothing to do. */ + if (eoi) + xen_pcibk_lateeoi(pdev, XEN_EOI_FLAG_SPURIOUS); } /* Performing the configuration space reads/writes must not be done in atomic @@ -303,10 +318,8 @@ * use of semaphores). This function is intended to be called from a work * queue in process context taking a struct xen_pcibk_device as a parameter */ -void xen_pcibk_do_op(struct work_struct *data) +static void xen_pcibk_do_one_op(struct xen_pcibk_device *pdev) { - struct xen_pcibk_device *pdev = - container_of(data, struct xen_pcibk_device, op_work); struct pci_dev *dev; struct xen_pcibk_dev_data *dev_data = NULL; struct xen_pci_op *op = &pdev->op; @@ -379,16 +392,31 @@ smp_mb__before_atomic(); /* /after/ clearing PCIF_active */ clear_bit(_PDEVF_op_active, &pdev->flags); smp_mb__after_atomic(); /* /before/ final check for work */ +} - /* Check to see if the driver domain tried to start another request in - * between clearing _XEN_PCIF_active and clearing _PDEVF_op_active. - */ - xen_pcibk_test_and_schedule_op(pdev); +void xen_pcibk_do_op(struct work_struct *data) +{ + struct xen_pcibk_device *pdev = + container_of(data, struct xen_pcibk_device, op_work); + + do { + xen_pcibk_do_one_op(pdev); + } while (xen_pcibk_test_op_pending(pdev)); + + xen_pcibk_lateeoi(pdev, 0); } irqreturn_t xen_pcibk_handle_event(int irq, void *dev_id) { struct xen_pcibk_device *pdev = dev_id; + bool eoi; + + /* IRQs might come in before pdev->evtchn_irq is written. */ + if (unlikely(pdev->evtchn_irq != irq)) + pdev->evtchn_irq = irq; + + eoi = test_and_set_bit(_EOI_pending, &pdev->flags); + WARN(eoi, "IRQ while EOI pending\n"); xen_pcibk_test_and_schedule_op(pdev); --- linux-5.8.0.orig/drivers/xen/xen-pciback/xenbus.c +++ linux-5.8.0/drivers/xen/xen-pciback/xenbus.c @@ -123,7 +123,7 @@ pdev->sh_info = vaddr; - err = bind_interdomain_evtchn_to_irqhandler( + err = bind_interdomain_evtchn_to_irqhandler_lateeoi( pdev->xdev->otherend_id, remote_evtchn, xen_pcibk_handle_event, 0, DRV_NAME, pdev); if (err < 0) { @@ -689,7 +689,7 @@ /* watch the backend node for backend configuration information */ err = xenbus_watch_path(dev, dev->nodename, &pdev->be_watch, - xen_pcibk_be_watch); + NULL, xen_pcibk_be_watch); if (err) goto out; --- linux-5.8.0.orig/drivers/xen/xen-scsiback.c +++ linux-5.8.0/drivers/xen/xen-scsiback.c @@ -91,7 +91,6 @@ unsigned int irq; struct vscsiif_back_ring ring; - int ring_error; spinlock_t ring_lock; atomic_t nr_unreplied_reqs; @@ -100,6 +99,8 @@ struct list_head v2p_entry_lists; wait_queue_head_t waiting_to_free; + + struct gnttab_page_cache free_pages; }; /* theoretical maximum of grants for one request */ @@ -189,10 +190,6 @@ MODULE_PARM_DESC(max_buffer_pages, "Maximum number of free pages to keep in backend buffer"); -static DEFINE_SPINLOCK(free_pages_lock); -static int free_pages_num; -static LIST_HEAD(scsiback_free_pages); - /* Global spinlock to protect scsiback TPG list */ static DEFINE_MUTEX(scsiback_mutex); static LIST_HEAD(scsiback_list); @@ -208,41 +205,6 @@ wake_up(&info->waiting_to_free); } -static void put_free_pages(struct page **page, int num) -{ - unsigned long flags; - int i = free_pages_num + num, n = num; - - if (num == 0) - return; - if (i > scsiback_max_buffer_pages) { - n = min(num, i - scsiback_max_buffer_pages); - gnttab_free_pages(n, page + num - n); - n = num - n; - } - spin_lock_irqsave(&free_pages_lock, flags); - for (i = 0; i < n; i++) - list_add(&page[i]->lru, &scsiback_free_pages); - free_pages_num += n; - spin_unlock_irqrestore(&free_pages_lock, flags); -} - -static int get_free_page(struct page **page) -{ - unsigned long flags; - - spin_lock_irqsave(&free_pages_lock, flags); - if (list_empty(&scsiback_free_pages)) { - spin_unlock_irqrestore(&free_pages_lock, flags); - return gnttab_alloc_pages(1, page); - } - page[0] = list_first_entry(&scsiback_free_pages, struct page, lru); - list_del(&page[0]->lru); - free_pages_num--; - spin_unlock_irqrestore(&free_pages_lock, flags); - return 0; -} - static unsigned long vaddr_page(struct page *page) { unsigned long pfn = page_to_pfn(page); @@ -303,7 +265,8 @@ BUG_ON(err); } - put_free_pages(req->pages, req->n_grants); + gnttab_page_cache_put(&req->info->free_pages, req->pages, + req->n_grants); req->n_grants = 0; } @@ -423,12 +386,12 @@ return 0; err = gnttab_map_refs(map, NULL, pg, cnt); - BUG_ON(err); for (i = 0; i < cnt; i++) { if (unlikely(map[i].status != GNTST_okay)) { pr_err("invalid buffer -- could not remap it\n"); map[i].handle = SCSIBACK_INVALID_HANDLE; - err = -ENOMEM; + if (!err) + err = -ENOMEM; } else { get_page(pg[i]); } @@ -446,8 +409,8 @@ struct vscsibk_info *info = pending_req->info; for (i = 0; i < cnt; i++) { - if (get_free_page(pg + mapcount)) { - put_free_pages(pg, mapcount); + if (gnttab_page_cache_get(&info->free_pages, pg + mapcount)) { + gnttab_page_cache_put(&info->free_pages, pg, mapcount); pr_err("no grant page\n"); return -ENOMEM; } @@ -722,7 +685,8 @@ return pending_req; } -static int scsiback_do_cmd_fn(struct vscsibk_info *info) +static int scsiback_do_cmd_fn(struct vscsibk_info *info, + unsigned int *eoi_flags) { struct vscsiif_back_ring *ring = &info->ring; struct vscsiif_request ring_req; @@ -739,11 +703,12 @@ rc = ring->rsp_prod_pvt; pr_warn("Dom%d provided bogus ring requests (%#x - %#x = %u). Halting ring processing\n", info->domid, rp, rc, rp - rc); - info->ring_error = 1; - return 0; + return -EINVAL; } while ((rc != rp)) { + *eoi_flags &= ~XEN_EOI_FLAG_SPURIOUS; + if (RING_REQUEST_CONS_OVERFLOW(ring, rc)) break; @@ -795,6 +760,8 @@ cond_resched(); } + gnttab_page_cache_shrink(&info->free_pages, scsiback_max_buffer_pages); + RING_FINAL_CHECK_FOR_REQUESTS(&info->ring, more_to_do); return more_to_do; } @@ -802,13 +769,16 @@ static irqreturn_t scsiback_irq_fn(int irq, void *dev_id) { struct vscsibk_info *info = dev_id; + int rc; + unsigned int eoi_flags = XEN_EOI_FLAG_SPURIOUS; - if (info->ring_error) - return IRQ_HANDLED; - - while (scsiback_do_cmd_fn(info)) + while ((rc = scsiback_do_cmd_fn(info, &eoi_flags)) > 0) cond_resched(); + /* In case of a ring error we keep the event channel masked. */ + if (!rc) + xen_irq_lateeoi(irq, eoi_flags); + return IRQ_HANDLED; } @@ -829,7 +799,7 @@ sring = (struct vscsiif_sring *)area; BACK_RING_INIT(&info->ring, sring, PAGE_SIZE); - err = bind_interdomain_evtchn_to_irq(info->domid, evtchn); + err = bind_interdomain_evtchn_to_irq_lateeoi(info->domid, evtchn); if (err < 0) goto unmap_page; @@ -1229,6 +1199,8 @@ scsiback_release_translation_entry(info); + gnttab_page_cache_shrink(&info->free_pages, 0); + dev_set_drvdata(&dev->dev, NULL); return 0; @@ -1253,13 +1225,13 @@ info->domid = dev->otherend_id; spin_lock_init(&info->ring_lock); - info->ring_error = 0; atomic_set(&info->nr_unreplied_reqs, 0); init_waitqueue_head(&info->waiting_to_free); info->dev = dev; info->irq = 0; INIT_LIST_HEAD(&info->v2p_entry_lists); spin_lock_init(&info->v2p_lock); + gnttab_page_cache_init(&info->free_pages); err = xenbus_printf(XBT_NIL, dev->nodename, "feature-sg-grant", "%u", SG_ALL); @@ -1876,13 +1848,6 @@ static void __exit scsiback_exit(void) { - struct page *page; - - while (free_pages_num) { - if (get_free_page(&page)) - BUG(); - gnttab_free_pages(1, &page); - } target_unregister_template(&scsiback_ops); xenbus_unregister_driver(&scsiback_driver); } --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus.h +++ linux-5.8.0/drivers/xen/xenbus/xenbus.h @@ -44,6 +44,8 @@ int (*get_bus_id)(char bus_id[XEN_BUS_ID_SIZE], const char *nodename); int (*probe)(struct xen_bus_type *bus, const char *type, const char *dir); + bool (*otherend_will_handle)(struct xenbus_watch *watch, + const char *path, const char *token); void (*otherend_changed)(struct xenbus_watch *watch, const char *path, const char *token); struct bus_type bus; --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus_client.c +++ linux-5.8.0/drivers/xen/xenbus/xenbus_client.c @@ -130,18 +130,22 @@ */ int xenbus_watch_path(struct xenbus_device *dev, const char *path, struct xenbus_watch *watch, + bool (*will_handle)(struct xenbus_watch *, + const char *, const char *), void (*callback)(struct xenbus_watch *, const char *, const char *)) { int err; watch->node = path; + watch->will_handle = will_handle; watch->callback = callback; err = register_xenbus_watch(watch); if (err) { watch->node = NULL; + watch->will_handle = NULL; watch->callback = NULL; xenbus_dev_fatal(dev, err, "adding watch on %s", path); } @@ -168,6 +172,8 @@ */ int xenbus_watch_pathfmt(struct xenbus_device *dev, struct xenbus_watch *watch, + bool (*will_handle)(struct xenbus_watch *, + const char *, const char *), void (*callback)(struct xenbus_watch *, const char *, const char *), const char *pathfmt, ...) @@ -184,7 +190,7 @@ xenbus_dev_fatal(dev, -ENOMEM, "allocating path for watch"); return -ENOMEM; } - err = xenbus_watch_path(dev, path, watch, callback); + err = xenbus_watch_path(dev, path, watch, will_handle, callback); if (err) kfree(path); @@ -379,8 +385,14 @@ int i, j; for (i = 0; i < nr_pages; i++) { - err = gnttab_grant_foreign_access(dev->otherend_id, - virt_to_gfn(vaddr), 0); + unsigned long gfn; + + if (is_vmalloc_addr(vaddr)) + gfn = pfn_to_gfn(vmalloc_to_pfn(vaddr)); + else + gfn = virt_to_gfn(vaddr); + + err = gnttab_grant_foreign_access(dev->otherend_id, gfn, 0); if (err < 0) { xenbus_dev_fatal(dev, err, "granting access to ring page"); --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus_comms.c +++ linux-5.8.0/drivers/xen/xenbus/xenbus_comms.c @@ -57,16 +57,8 @@ static int xenbus_irq; static struct task_struct *xenbus_task; -static DECLARE_WORK(probe_work, xenbus_probe); - - static irqreturn_t wake_waiting(int irq, void *unused) { - if (unlikely(xenstored_ready == 0)) { - xenstored_ready = 1; - schedule_work(&probe_work); - } - wake_up(&xb_waitq); return IRQ_HANDLED; } --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus_probe.c +++ linux-5.8.0/drivers/xen/xenbus/xenbus_probe.c @@ -136,6 +136,7 @@ container_of(dev->dev.bus, struct xen_bus_type, bus); return xenbus_watch_pathfmt(dev, &dev->otherend_watch, + bus->otherend_will_handle, bus->otherend_changed, "%s/%s", dev->otherend, "state"); } @@ -682,29 +683,107 @@ } EXPORT_SYMBOL_GPL(unregister_xenstore_notifier); -void xenbus_probe(struct work_struct *unused) +static void xenbus_probe(void) { xenstored_ready = 1; + /* + * In the HVM case, xenbus_init() deferred its call to + * xs_init() in case callbacks were not operational yet. + * So do it now. + */ + if (xen_store_domain_type == XS_HVM) + xs_init(); + /* Notify others that xenstore is up */ blocking_notifier_call_chain(&xenstore_chain, 0, NULL); } -EXPORT_SYMBOL_GPL(xenbus_probe); -static int __init xenbus_probe_initcall(void) +/* + * Returns true when XenStore init must be deferred in order to + * allow the PCI platform device to be initialised, before we + * can actually have event channel interrupts working. + */ +static bool xs_hvm_defer_init_for_callback(void) { - if (!xen_domain()) - return -ENODEV; +#ifdef CONFIG_XEN_PVHVM + return xen_store_domain_type == XS_HVM && + !xen_have_vector_callback; +#else + return false; +#endif +} - if (xen_initial_domain() || xen_hvm_domain()) - return 0; +static int xenbus_probe_thread(void *unused) +{ + DEFINE_WAIT(w); - xenbus_probe(NULL); + /* + * We actually just want to wait for *any* trigger of xb_waitq, + * and run xenbus_probe() the moment it occurs. + */ + prepare_to_wait(&xb_waitq, &w, TASK_INTERRUPTIBLE); + schedule(); + finish_wait(&xb_waitq, &w); + + DPRINTK("probing"); + xenbus_probe(); return 0; } +static int __init xenbus_probe_initcall(void) +{ + /* + * Probe XenBus here in the XS_PV case, and also XS_HVM unless we + * need to wait for the platform PCI device to come up. + */ + if (xen_store_domain_type == XS_PV || + (xen_store_domain_type == XS_HVM && + !xs_hvm_defer_init_for_callback())) + xenbus_probe(); + + /* + * For XS_LOCAL, spawn a thread which will wait for xenstored + * or a xenstore-stubdom to be started, then probe. It will be + * triggered when communication starts happening, by waiting + * on xb_waitq. + */ + if (xen_store_domain_type == XS_LOCAL) { + struct task_struct *probe_task; + + probe_task = kthread_run(xenbus_probe_thread, NULL, + "xenbus_probe"); + if (IS_ERR(probe_task)) + return PTR_ERR(probe_task); + } + return 0; +} device_initcall(xenbus_probe_initcall); +int xen_set_callback_via(uint64_t via) +{ + struct xen_hvm_param a; + int ret; + + a.domid = DOMID_SELF; + a.index = HVM_PARAM_CALLBACK_IRQ; + a.value = via; + + ret = HYPERVISOR_hvm_op(HVMOP_set_param, &a); + if (ret) + return ret; + + /* + * If xenbus_probe_initcall() deferred the xenbus_probe() + * due to the callback not functioning yet, we can do it now. + */ + if (!xenstored_ready && xs_hvm_defer_init_for_callback()) + xenbus_probe(); + + return ret; +} +EXPORT_SYMBOL_GPL(xen_set_callback_via); + /* Set up event channel for xenstored which is run as a local process * (this is normally used only in dom0) */ @@ -817,11 +896,17 @@ break; } - /* Initialize the interface to xenstore. */ - err = xs_init(); - if (err) { - pr_warn("Error initializing xenstore comms: %i\n", err); - goto out_error; + /* + * HVM domains may not have a functional callback yet. In that + * case let xs_init() be called from xenbus_probe(), which will + * get invoked at an appropriate time. + */ + if (xen_store_domain_type != XS_HVM) { + err = xs_init(); + if (err) { + pr_warn("Error initializing xenstore comms: %i\n", err); + goto out_error; + } } if ((xen_store_domain_type != XS_LOCAL) && --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus_probe_backend.c +++ linux-5.8.0/drivers/xen/xenbus/xenbus_probe_backend.c @@ -180,6 +180,12 @@ return err; } +static bool frontend_will_handle(struct xenbus_watch *watch, + const char *path, const char *token) +{ + return watch->nr_pending == 0; +} + static void frontend_changed(struct xenbus_watch *watch, const char *path, const char *token) { @@ -191,6 +197,7 @@ .levels = 3, /* backend/type// */ .get_bus_id = backend_bus_id, .probe = xenbus_probe_backend, + .otherend_will_handle = frontend_will_handle, .otherend_changed = frontend_changed, .bus = { .name = "xen-backend", --- linux-5.8.0.orig/drivers/xen/xenbus/xenbus_xs.c +++ linux-5.8.0/drivers/xen/xenbus/xenbus_xs.c @@ -705,9 +705,13 @@ spin_lock(&watches_lock); event->handle = find_watch(event->token); - if (event->handle != NULL) { + if (event->handle != NULL && + (!event->handle->will_handle || + event->handle->will_handle(event->handle, + event->path, event->token))) { spin_lock(&watch_events_lock); list_add_tail(&event->list, &watch_events); + event->handle->nr_pending++; wake_up(&watch_events_waitq); spin_unlock(&watch_events_lock); } else @@ -765,6 +769,8 @@ sprintf(token, "%lX", (long)watch); + watch->nr_pending = 0; + down_read(&xs_watch_rwsem); spin_lock(&watches_lock); @@ -814,11 +820,14 @@ /* Cancel pending watch events. */ spin_lock(&watch_events_lock); - list_for_each_entry_safe(event, tmp, &watch_events, list) { - if (event->handle != watch) - continue; - list_del(&event->list); - kfree(event); + if (watch->nr_pending) { + list_for_each_entry_safe(event, tmp, &watch_events, list) { + if (event->handle != watch) + continue; + list_del(&event->list); + kfree(event); + } + watch->nr_pending = 0; } spin_unlock(&watch_events_lock); @@ -865,7 +874,6 @@ static int xenwatch_thread(void *unused) { - struct list_head *ent; struct xs_watch_event *event; xenwatch_pid = current->pid; @@ -880,13 +888,15 @@ mutex_lock(&xenwatch_mutex); spin_lock(&watch_events_lock); - ent = watch_events.next; - if (ent != &watch_events) - list_del(ent); + event = list_first_entry_or_null(&watch_events, + struct xs_watch_event, list); + if (event) { + list_del(&event->list); + event->handle->nr_pending--; + } spin_unlock(&watch_events_lock); - if (ent != &watch_events) { - event = list_entry(ent, struct xs_watch_event, list); + if (event) { event->handle->callback(event->handle, event->path, event->token); kfree(event); --- linux-5.8.0.orig/fs/9p/v9fs.c +++ linux-5.8.0/fs/9p/v9fs.c @@ -500,10 +500,9 @@ } #ifdef CONFIG_9P_FSCACHE - if (v9ses->fscache) { + if (v9ses->fscache) v9fs_cache_session_put_cookie(v9ses); - kfree(v9ses->cachetag); - } + kfree(v9ses->cachetag); #endif kfree(v9ses->uname); kfree(v9ses->aname); --- linux-5.8.0.orig/fs/9p/vfs_file.c +++ linux-5.8.0/fs/9p/vfs_file.c @@ -612,9 +612,9 @@ struct writeback_control wbc = { .nr_to_write = LONG_MAX, .sync_mode = WB_SYNC_ALL, - .range_start = vma->vm_pgoff * PAGE_SIZE, + .range_start = (loff_t)vma->vm_pgoff * PAGE_SIZE, /* absolute end, byte at end included */ - .range_end = vma->vm_pgoff * PAGE_SIZE + + .range_end = (loff_t)vma->vm_pgoff * PAGE_SIZE + (vma->vm_end - vma->vm_start - 1), }; --- linux-5.8.0.orig/fs/Kconfig +++ linux-5.8.0/fs/Kconfig @@ -123,6 +123,24 @@ source "fs/fuse/Kconfig" source "fs/overlayfs/Kconfig" +config SHIFT_FS + tristate "UID/GID shifting overlay filesystem for containers" + help + This filesystem can overlay any mounted filesystem and shift + the uid/gid the files appear at. The idea is that + unprivileged containers can use this to mount root volumes + using this technique. + +config SHIFT_FS_POSIX_ACL + bool "shiftfs POSIX Access Control Lists" + depends on SHIFT_FS + select FS_POSIX_ACL + help + POSIX Access Control Lists (ACLs) support permissions for users and + groups beyond the owner/group/world scheme. + + If you don't know what Access Control Lists are, say N. + menu "Caches" source "fs/fscache/Kconfig" @@ -267,6 +285,7 @@ source "fs/ufs/Kconfig" source "fs/erofs/Kconfig" source "fs/vboxsf/Kconfig" +source "fs/aufs/Kconfig" endif # MISC_FILESYSTEMS --- linux-5.8.0.orig/fs/Makefile +++ linux-5.8.0/fs/Makefile @@ -136,3 +136,5 @@ obj-$(CONFIG_EROFS_FS) += erofs/ obj-$(CONFIG_VBOXSF_FS) += vboxsf/ obj-$(CONFIG_ZONEFS_FS) += zonefs/ +obj-$(CONFIG_SHIFT_FS) += shiftfs.o +obj-$(CONFIG_AUFS_FS) += aufs/ --- linux-5.8.0.orig/fs/affs/amigaffs.c +++ linux-5.8.0/fs/affs/amigaffs.c @@ -420,24 +420,51 @@ u32 prot = AFFS_I(inode)->i_protect; umode_t mode = inode->i_mode; + /* + * First, clear all RWED bits for owner, group, other. + * Then, recalculate them afresh. + * + * We'll always clear the delete-inhibit bit for the owner, as that is + * the classic single-user mode AmigaOS protection bit and we need to + * stay compatible with all scenarios. + * + * Since multi-user AmigaOS is an extension, we'll only set the + * delete-allow bit if any of the other bits in the same user class + * (group/other) are used. + */ + prot &= ~(FIBF_NOEXECUTE | FIBF_NOREAD + | FIBF_NOWRITE | FIBF_NODELETE + | FIBF_GRP_EXECUTE | FIBF_GRP_READ + | FIBF_GRP_WRITE | FIBF_GRP_DELETE + | FIBF_OTR_EXECUTE | FIBF_OTR_READ + | FIBF_OTR_WRITE | FIBF_OTR_DELETE); + + /* Classic single-user AmigaOS flags. These are inverted. */ if (!(mode & 0100)) prot |= FIBF_NOEXECUTE; if (!(mode & 0400)) prot |= FIBF_NOREAD; if (!(mode & 0200)) prot |= FIBF_NOWRITE; + + /* Multi-user extended flags. Not inverted. */ if (mode & 0010) prot |= FIBF_GRP_EXECUTE; if (mode & 0040) prot |= FIBF_GRP_READ; if (mode & 0020) prot |= FIBF_GRP_WRITE; + if (mode & 0070) + prot |= FIBF_GRP_DELETE; + if (mode & 0001) prot |= FIBF_OTR_EXECUTE; if (mode & 0004) prot |= FIBF_OTR_READ; if (mode & 0002) prot |= FIBF_OTR_WRITE; + if (mode & 0007) + prot |= FIBF_OTR_DELETE; AFFS_I(inode)->i_protect = prot; } --- linux-5.8.0.orig/fs/affs/file.c +++ linux-5.8.0/fs/affs/file.c @@ -428,6 +428,24 @@ return ret; } +static int affs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned int len, unsigned int copied, + struct page *page, void *fsdata) +{ + struct inode *inode = mapping->host; + int ret; + + ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata); + + /* Clear Archived bit on file writes, as AmigaOS would do */ + if (AFFS_I(inode)->i_protect & FIBF_ARCHIVED) { + AFFS_I(inode)->i_protect &= ~FIBF_ARCHIVED; + mark_inode_dirty(inode); + } + + return ret; +} + static sector_t _affs_bmap(struct address_space *mapping, sector_t block) { return generic_block_bmap(mapping,block,affs_get_block); @@ -437,7 +455,7 @@ .readpage = affs_readpage, .writepage = affs_writepage, .write_begin = affs_write_begin, - .write_end = generic_write_end, + .write_end = affs_write_end, .direct_IO = affs_direct_IO, .bmap = _affs_bmap }; @@ -794,6 +812,12 @@ if (tmp > inode->i_size) inode->i_size = AFFS_I(inode)->mmu_private = tmp; + /* Clear Archived bit on file writes, as AmigaOS would do */ + if (AFFS_I(inode)->i_protect & FIBF_ARCHIVED) { + AFFS_I(inode)->i_protect &= ~FIBF_ARCHIVED; + mark_inode_dirty(inode); + } + err_first_bh: unlock_page(page); put_page(page); --- linux-5.8.0.orig/fs/affs/namei.c +++ linux-5.8.0/fs/affs/namei.c @@ -460,8 +460,10 @@ return -EIO; bh_new = affs_bread(sb, d_inode(new_dentry)->i_ino); - if (!bh_new) + if (!bh_new) { + affs_brelse(bh_old); return -EIO; + } /* Remove old header from its parent directory. */ affs_lock_dir(old_dir); --- linux-5.8.0.orig/fs/afs/cell.c +++ linux-5.8.0/fs/afs/cell.c @@ -19,7 +19,8 @@ static unsigned __read_mostly afs_cell_min_ttl = 10 * 60; static unsigned __read_mostly afs_cell_max_ttl = 24 * 60 * 60; -static void afs_manage_cell(struct work_struct *); +static void afs_queue_cell_manager(struct afs_net *); +static void afs_manage_cell_work(struct work_struct *); static void afs_dec_cells_outstanding(struct afs_net *net) { @@ -37,19 +38,21 @@ atomic_inc(&net->cells_outstanding); if (timer_reduce(&net->cells_timer, jiffies + delay * HZ)) afs_dec_cells_outstanding(net); + } else { + afs_queue_cell_manager(net); } } /* - * Look up and get an activation reference on a cell record under RCU - * conditions. The caller must hold the RCU read lock. + * Look up and get an activation reference on a cell record. The caller must + * hold net->cells_lock at least read-locked. */ -struct afs_cell *afs_lookup_cell_rcu(struct afs_net *net, - const char *name, unsigned int namesz) +static struct afs_cell *afs_find_cell_locked(struct afs_net *net, + const char *name, unsigned int namesz) { struct afs_cell *cell = NULL; struct rb_node *p; - int n, seq = 0, ret = 0; + int n; _enter("%*.*s", namesz, namesz, name); @@ -58,61 +61,47 @@ if (namesz > AFS_MAXCELLNAME) return ERR_PTR(-ENAMETOOLONG); - do { - /* Unfortunately, rbtree walking doesn't give reliable results - * under just the RCU read lock, so we have to check for - * changes. - */ - if (cell) - afs_put_cell(net, cell); - cell = NULL; - ret = -ENOENT; - - read_seqbegin_or_lock(&net->cells_lock, &seq); - - if (!name) { - cell = rcu_dereference_raw(net->ws_cell); - if (cell) { - afs_get_cell(cell); - ret = 0; - break; - } - ret = -EDESTADDRREQ; - continue; - } + if (!name) { + cell = net->ws_cell; + if (!cell) + return ERR_PTR(-EDESTADDRREQ); + goto found; + } - p = rcu_dereference_raw(net->cells.rb_node); - while (p) { - cell = rb_entry(p, struct afs_cell, net_node); - - n = strncasecmp(cell->name, name, - min_t(size_t, cell->name_len, namesz)); - if (n == 0) - n = cell->name_len - namesz; - if (n < 0) { - p = rcu_dereference_raw(p->rb_left); - } else if (n > 0) { - p = rcu_dereference_raw(p->rb_right); - } else { - if (atomic_inc_not_zero(&cell->usage)) { - ret = 0; - break; - } - /* We want to repeat the search, this time with - * the lock properly locked. - */ - } - cell = NULL; - } + p = net->cells.rb_node; + while (p) { + cell = rb_entry(p, struct afs_cell, net_node); - } while (need_seqretry(&net->cells_lock, seq)); + n = strncasecmp(cell->name, name, + min_t(size_t, cell->name_len, namesz)); + if (n == 0) + n = cell->name_len - namesz; + if (n < 0) + p = p->rb_left; + else if (n > 0) + p = p->rb_right; + else + goto found; + } - done_seqretry(&net->cells_lock, seq); + return ERR_PTR(-ENOENT); - if (ret != 0 && cell) - afs_put_cell(net, cell); +found: + return afs_use_cell(cell); +} - return ret == 0 ? cell : ERR_PTR(ret); +/* + * Look up and get an activation reference on a cell record. + */ +struct afs_cell *afs_find_cell(struct afs_net *net, + const char *name, unsigned int namesz) +{ + struct afs_cell *cell; + + down_read(&net->cells_lock); + cell = afs_find_cell_locked(net, name, namesz); + up_read(&net->cells_lock); + return cell; } /* @@ -166,8 +155,9 @@ cell->name[i] = tolower(name[i]); cell->name[i] = 0; - atomic_set(&cell->usage, 2); - INIT_WORK(&cell->manager, afs_manage_cell); + atomic_set(&cell->ref, 1); + atomic_set(&cell->active, 0); + INIT_WORK(&cell->manager, afs_manage_cell_work); cell->volumes = RB_ROOT; INIT_HLIST_HEAD(&cell->proc_volumes); seqlock_init(&cell->volume_lock); @@ -206,6 +196,7 @@ cell->dns_source = vllist->source; cell->dns_status = vllist->status; smp_store_release(&cell->dns_lookup_count, 1); /* vs source/status */ + atomic_inc(&net->cells_outstanding); _leave(" = %p", cell); return cell; @@ -245,9 +236,7 @@ _enter("%s,%s", name, vllist); if (!excl) { - rcu_read_lock(); - cell = afs_lookup_cell_rcu(net, name, namesz); - rcu_read_unlock(); + cell = afs_find_cell(net, name, namesz); if (!IS_ERR(cell)) goto wait_for_cell; } @@ -268,7 +257,7 @@ /* Find the insertion point and check to see if someone else added a * cell whilst we were allocating. */ - write_seqlock(&net->cells_lock); + down_write(&net->cells_lock); pp = &net->cells.rb_node; parent = NULL; @@ -290,23 +279,23 @@ cell = candidate; candidate = NULL; + atomic_set(&cell->active, 2); rb_link_node_rcu(&cell->net_node, parent, pp); rb_insert_color(&cell->net_node, &net->cells); - atomic_inc(&net->cells_outstanding); - write_sequnlock(&net->cells_lock); + up_write(&net->cells_lock); - queue_work(afs_wq, &cell->manager); + afs_queue_cell(cell); wait_for_cell: _debug("wait_for_cell"); wait_var_event(&cell->state, ({ state = smp_load_acquire(&cell->state); /* vs error */ - state == AFS_CELL_ACTIVE || state == AFS_CELL_FAILED; + state == AFS_CELL_ACTIVE || state == AFS_CELL_REMOVED; })); /* Check the state obtained from the wait check. */ - if (state == AFS_CELL_FAILED) { + if (state == AFS_CELL_REMOVED) { ret = cell->error; goto error; } @@ -320,16 +309,17 @@ if (excl) { ret = -EEXIST; } else { - afs_get_cell(cursor); + afs_use_cell(cursor); ret = 0; } - write_sequnlock(&net->cells_lock); - kfree(candidate); + up_write(&net->cells_lock); + if (candidate) + afs_put_cell(candidate); if (ret == 0) goto wait_for_cell; goto error_noput; error: - afs_put_cell(net, cell); + afs_unuse_cell(net, cell); error_noput: _leave(" = %d [error]", ret); return ERR_PTR(ret); @@ -374,15 +364,15 @@ } if (!test_and_set_bit(AFS_CELL_FL_NO_GC, &new_root->flags)) - afs_get_cell(new_root); + afs_use_cell(new_root); /* install the new cell */ - write_seqlock(&net->cells_lock); - old_root = rcu_access_pointer(net->ws_cell); - rcu_assign_pointer(net->ws_cell, new_root); - write_sequnlock(&net->cells_lock); + down_write(&net->cells_lock); + old_root = net->ws_cell; + net->ws_cell = new_root; + up_write(&net->cells_lock); - afs_put_cell(net, old_root); + afs_unuse_cell(net, old_root); _leave(" = 0"); return 0; } @@ -488,18 +478,21 @@ static void afs_cell_destroy(struct rcu_head *rcu) { struct afs_cell *cell = container_of(rcu, struct afs_cell, rcu); + struct afs_net *net = cell->net; + int u; _enter("%p{%s}", cell, cell->name); - ASSERTCMP(atomic_read(&cell->usage), ==, 0); + u = atomic_read(&cell->ref); + ASSERTCMP(u, ==, 0); - afs_put_volume(cell->net, cell->root_volume, afs_volume_trace_put_cell_root); - afs_put_vlserverlist(cell->net, rcu_access_pointer(cell->vl_servers)); - afs_put_cell(cell->net, cell->alias_of); + afs_put_vlserverlist(net, rcu_access_pointer(cell->vl_servers)); + afs_unuse_cell(net, cell->alias_of); key_put(cell->anonymous_key); kfree(cell->name); kfree(cell); + afs_dec_cells_outstanding(net); _leave(" [destroyed]"); } @@ -534,16 +527,50 @@ */ struct afs_cell *afs_get_cell(struct afs_cell *cell) { - atomic_inc(&cell->usage); + if (atomic_read(&cell->ref) <= 0) + BUG(); + + atomic_inc(&cell->ref); return cell; } /* * Drop a reference on a cell record. */ -void afs_put_cell(struct afs_net *net, struct afs_cell *cell) +void afs_put_cell(struct afs_cell *cell) +{ + if (cell) { + unsigned int u, a; + + u = atomic_dec_return(&cell->ref); + if (u == 0) { + a = atomic_read(&cell->active); + WARN(a != 0, "Cell active count %u > 0\n", a); + call_rcu(&cell->rcu, afs_cell_destroy); + } + } +} + +/* + * Note a cell becoming more active. + */ +struct afs_cell *afs_use_cell(struct afs_cell *cell) +{ + if (atomic_read(&cell->ref) <= 0) + BUG(); + + atomic_inc(&cell->active); + return cell; +} + +/* + * Record a cell becoming less active. When the active counter reaches 1, it + * is scheduled for destruction, but may get reactivated. + */ +void afs_unuse_cell(struct afs_net *net, struct afs_cell *cell) { time64_t now, expire_delay; + int a; if (!cell) return; @@ -556,11 +583,21 @@ if (cell->vl_servers->nr_servers) expire_delay = afs_cell_gc_delay; - if (atomic_dec_return(&cell->usage) > 1) - return; + a = atomic_dec_return(&cell->active); + WARN_ON(a == 0); + if (a == 1) + /* 'cell' may now be garbage collected. */ + afs_set_cell_timer(net, expire_delay); +} - /* 'cell' may now be garbage collected. */ - afs_set_cell_timer(net, expire_delay); +/* + * Queue a cell for management, giving the workqueue a ref to hold. + */ +void afs_queue_cell(struct afs_cell *cell) +{ + afs_get_cell(cell); + if (!queue_work(afs_wq, &cell->manager)) + afs_put_cell(cell); } /* @@ -660,12 +697,10 @@ * Manage a cell record, initialising and destroying it, maintaining its DNS * records. */ -static void afs_manage_cell(struct work_struct *work) +static void afs_manage_cell(struct afs_cell *cell) { - struct afs_cell *cell = container_of(work, struct afs_cell, manager); struct afs_net *net = cell->net; - bool deleted; - int ret, usage; + int ret, active; _enter("%s", cell->name); @@ -674,14 +709,17 @@ switch (cell->state) { case AFS_CELL_INACTIVE: case AFS_CELL_FAILED: - write_seqlock(&net->cells_lock); - usage = 1; - deleted = atomic_try_cmpxchg_relaxed(&cell->usage, &usage, 0); - if (deleted) + down_write(&net->cells_lock); + active = 1; + if (atomic_try_cmpxchg_relaxed(&cell->active, &active, 0)) { rb_erase(&cell->net_node, &net->cells); - write_sequnlock(&net->cells_lock); - if (deleted) + smp_store_release(&cell->state, AFS_CELL_REMOVED); + } + up_write(&net->cells_lock); + if (cell->state == AFS_CELL_REMOVED) { + wake_up_var(&cell->state); goto final_destruction; + } if (cell->state == AFS_CELL_FAILED) goto done; smp_store_release(&cell->state, AFS_CELL_UNSET); @@ -703,7 +741,7 @@ goto again; case AFS_CELL_ACTIVE: - if (atomic_read(&cell->usage) > 1) { + if (atomic_read(&cell->active) > 1) { if (test_and_clear_bit(AFS_CELL_FL_DO_LOOKUP, &cell->flags)) { ret = afs_update_cell(cell); if (ret < 0) @@ -716,13 +754,16 @@ goto again; case AFS_CELL_DEACTIVATING: - if (atomic_read(&cell->usage) > 1) + if (atomic_read(&cell->active) > 1) goto reverse_deactivation; afs_deactivate_cell(net, cell); smp_store_release(&cell->state, AFS_CELL_INACTIVE); wake_up_var(&cell->state); goto again; + case AFS_CELL_REMOVED: + goto done; + default: break; } @@ -748,9 +789,18 @@ return; final_destruction: - call_rcu(&cell->rcu, afs_cell_destroy); - afs_dec_cells_outstanding(net); - _leave(" [destruct %d]", atomic_read(&net->cells_outstanding)); + /* The root volume is pinning the cell */ + afs_put_volume(cell->net, cell->root_volume, afs_volume_trace_put_cell_root); + cell->root_volume = NULL; + afs_put_cell(cell); +} + +static void afs_manage_cell_work(struct work_struct *work) +{ + struct afs_cell *cell = container_of(work, struct afs_cell, manager); + + afs_manage_cell(cell); + afs_put_cell(cell); } /* @@ -779,26 +829,25 @@ * lack of use and cells whose DNS results have expired and dispatch * their managers. */ - read_seqlock_excl(&net->cells_lock); + down_read(&net->cells_lock); for (cursor = rb_first(&net->cells); cursor; cursor = rb_next(cursor)) { struct afs_cell *cell = rb_entry(cursor, struct afs_cell, net_node); - unsigned usage; + unsigned active; bool sched_cell = false; - usage = atomic_read(&cell->usage); - _debug("manage %s %u", cell->name, usage); + active = atomic_read(&cell->active); + _debug("manage %s %u %u", cell->name, atomic_read(&cell->ref), active); - ASSERTCMP(usage, >=, 1); + ASSERTCMP(active, >=, 1); if (purging) { if (test_and_clear_bit(AFS_CELL_FL_NO_GC, &cell->flags)) - usage = atomic_dec_return(&cell->usage); - ASSERTCMP(usage, ==, 1); + atomic_dec(&cell->active); } - if (usage == 1) { + if (active == 1) { struct afs_vlserver_list *vllist; time64_t expire_at = cell->last_inactive; @@ -821,10 +870,10 @@ } if (sched_cell) - queue_work(afs_wq, &cell->manager); + afs_queue_cell(cell); } - read_sequnlock_excl(&net->cells_lock); + up_read(&net->cells_lock); /* Update the timer on the way out. We have to pass an increment on * cells_outstanding in the namespace that we are in to the timer or @@ -854,11 +903,11 @@ _enter(""); - write_seqlock(&net->cells_lock); - ws = rcu_access_pointer(net->ws_cell); - RCU_INIT_POINTER(net->ws_cell, NULL); - write_sequnlock(&net->cells_lock); - afs_put_cell(net, ws); + down_write(&net->cells_lock); + ws = net->ws_cell; + net->ws_cell = NULL; + up_write(&net->cells_lock); + afs_unuse_cell(net, ws); _debug("del timer"); if (del_timer_sync(&net->cells_timer)) --- linux-5.8.0.orig/fs/afs/dir.c +++ linux-5.8.0/fs/afs/dir.c @@ -69,7 +69,6 @@ .permission = afs_permission, .getattr = afs_getattr, .setattr = afs_setattr, - .listxattr = afs_listxattr, }; const struct address_space_operations afs_dir_aops = { @@ -281,8 +280,7 @@ if (ret < 0) goto error; - set_page_private(req->pages[i], 1); - SetPagePrivate(req->pages[i]); + attach_page_private(req->pages[i], (void *)1); unlock_page(req->pages[i]); i++; } else { @@ -824,6 +822,7 @@ vp->cb_break_before = afs_calc_vnode_cb_break(vnode); vp->vnode = vnode; vp->put_vnode = true; + vp->speculative = true; /* vnode not locked */ } } } @@ -1975,8 +1974,7 @@ _enter("{{%llx:%llu}[%lu]}", dvnode->fid.vid, dvnode->fid.vnode, page->index); - set_page_private(page, 0); - ClearPagePrivate(page); + detach_page_private(page); /* The directory will need reloading. */ if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) @@ -2003,8 +2001,6 @@ afs_stat_v(dvnode, n_inval); /* we clean up only if the entire page is being invalidated */ - if (offset == 0 && length == PAGE_SIZE) { - set_page_private(page, 0); - ClearPagePrivate(page); - } + if (offset == 0 && length == PAGE_SIZE) + detach_page_private(page); } --- linux-5.8.0.orig/fs/afs/dir_edit.c +++ linux-5.8.0/fs/afs/dir_edit.c @@ -243,10 +243,8 @@ index, gfp); if (!page) goto error; - if (!PagePrivate(page)) { - set_page_private(page, 1); - SetPagePrivate(page); - } + if (!PagePrivate(page)) + attach_page_private(page, (void *)1); dir_page = kmap(page); } --- linux-5.8.0.orig/fs/afs/dynroot.c +++ linux-5.8.0/fs/afs/dynroot.c @@ -123,9 +123,9 @@ len--; } - cell = afs_lookup_cell_rcu(net, name, len); + cell = afs_find_cell(net, name, len); if (!IS_ERR(cell)) { - afs_put_cell(net, cell); + afs_unuse_cell(net, cell); return 0; } @@ -179,7 +179,6 @@ struct afs_cell *cell; struct afs_net *net = afs_d2net(dentry); struct dentry *ret; - unsigned int seq = 0; char *name; int len; @@ -191,17 +190,13 @@ if (!name) goto out_p; - rcu_read_lock(); - do { - read_seqbegin_or_lock(&net->cells_lock, &seq); - cell = rcu_dereference_raw(net->ws_cell); - if (cell) { - len = cell->name_len; - memcpy(name, cell->name, len + 1); - } - } while (need_seqretry(&net->cells_lock, seq)); - done_seqretry(&net->cells_lock, seq); - rcu_read_unlock(); + down_read(&net->cells_lock); + cell = net->ws_cell; + if (cell) { + len = cell->name_len; + memcpy(name, cell->name, len + 1); + } + up_read(&net->cells_lock); ret = ERR_PTR(-ENOENT); if (!cell) @@ -382,15 +377,17 @@ net->dynroot_sb = NULL; mutex_unlock(&net->proc_cells_lock); - inode_lock(root->d_inode); + if (root) { + inode_lock(root->d_inode); - /* Remove all the pins for dirs created for manually added cells */ - list_for_each_entry_safe(subdir, tmp, &root->d_subdirs, d_child) { - if (subdir->d_fsdata) { - subdir->d_fsdata = NULL; - dput(subdir); + /* Remove all the pins for dirs created for manually added cells */ + list_for_each_entry_safe(subdir, tmp, &root->d_subdirs, d_child) { + if (subdir->d_fsdata) { + subdir->d_fsdata = NULL; + dput(subdir); + } } - } - inode_unlock(root->d_inode); + inode_unlock(root->d_inode); + } } --- linux-5.8.0.orig/fs/afs/file.c +++ linux-5.8.0/fs/afs/file.c @@ -42,7 +42,6 @@ .getattr = afs_getattr, .setattr = afs_setattr, .permission = afs_permission, - .listxattr = afs_listxattr, }; const struct address_space_operations afs_fs_aops = { @@ -601,6 +600,63 @@ } /* + * Adjust the dirty region of the page on truncation or full invalidation, + * getting rid of the markers altogether if the region is entirely invalidated. + */ +static void afs_invalidate_dirty(struct page *page, unsigned int offset, + unsigned int length) +{ + struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); + unsigned long priv; + unsigned int f, t, end = offset + length; + + priv = page_private(page); + + /* we clean up only if the entire page is being invalidated */ + if (offset == 0 && length == thp_size(page)) + goto full_invalidate; + + /* If the page was dirtied by page_mkwrite(), the PTE stays writable + * and we don't get another notification to tell us to expand it + * again. + */ + if (afs_is_page_dirty_mmapped(priv)) + return; + + /* We may need to shorten the dirty region */ + f = afs_page_dirty_from(priv); + t = afs_page_dirty_to(priv); + + if (t <= offset || f >= end) + return; /* Doesn't overlap */ + + if (f < offset && t > end) + return; /* Splits the dirty region - just absorb it */ + + if (f >= offset && t <= end) + goto undirty; + + if (f < offset) + t = offset; + else + f = end; + if (f == t) + goto undirty; + + priv = afs_page_dirty(f, t); + set_page_private(page, priv); + trace_afs_page_dirty(vnode, tracepoint_string("trunc"), page->index, priv); + return; + +undirty: + trace_afs_page_dirty(vnode, tracepoint_string("undirty"), page->index, priv); + clear_page_dirty_for_io(page); +full_invalidate: + priv = (unsigned long)detach_page_private(page); + trace_afs_page_dirty(vnode, tracepoint_string("inval"), page->index, priv); +} + +/* * invalidate part or all of a page * - release a page and clean up its private data if offset is 0 (indicating * the entire page) @@ -608,31 +664,23 @@ static void afs_invalidatepage(struct page *page, unsigned int offset, unsigned int length) { - struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); - unsigned long priv; - _enter("{%lu},%u,%u", page->index, offset, length); BUG_ON(!PageLocked(page)); +#ifdef CONFIG_AFS_FSCACHE /* we clean up only if the entire page is being invalidated */ if (offset == 0 && length == PAGE_SIZE) { -#ifdef CONFIG_AFS_FSCACHE if (PageFsCache(page)) { struct afs_vnode *vnode = AFS_FS_I(page->mapping->host); fscache_wait_on_page_write(vnode->cache, page); fscache_uncache_page(vnode->cache, page); } + } #endif - if (PagePrivate(page)) { - priv = page_private(page); - trace_afs_page_dirty(vnode, tracepoint_string("inval"), - page->index, priv); - set_page_private(page, 0); - ClearPagePrivate(page); - } - } + if (PagePrivate(page)) + afs_invalidate_dirty(page, offset, length); _leave(""); } @@ -660,11 +708,9 @@ #endif if (PagePrivate(page)) { - priv = page_private(page); + priv = (unsigned long)detach_page_private(page); trace_afs_page_dirty(vnode, tracepoint_string("rel"), page->index, priv); - set_page_private(page, 0); - ClearPagePrivate(page); } /* indicate that the page can be released */ --- linux-5.8.0.orig/fs/afs/fs_operation.c +++ linux-5.8.0/fs/afs/fs_operation.c @@ -181,10 +181,13 @@ if (test_bit(AFS_SERVER_FL_IS_YFS, &op->server->flags) && op->ops->issue_yfs_rpc) op->ops->issue_yfs_rpc(op); - else + else if (op->ops->issue_afs_rpc) op->ops->issue_afs_rpc(op); + else + op->ac.error = -ENOTSUPP; - op->error = afs_wait_for_call_to_complete(op->call, &op->ac); + if (op->call) + op->error = afs_wait_for_call_to_complete(op->call, &op->ac); } switch (op->error) { @@ -235,6 +238,7 @@ afs_end_cursor(&op->ac); afs_put_serverlist(op->net, op->server_list); afs_put_volume(op->net, op->volume, afs_volume_trace_put_put_op); + key_put(op->key); kfree(op); return ret; } --- linux-5.8.0.orig/fs/afs/fs_probe.c +++ linux-5.8.0/fs/afs/fs_probe.c @@ -161,8 +161,8 @@ } } - rtt_us = rxrpc_kernel_get_srtt(call->net->socket, call->rxcall); - if (rtt_us < server->probe.rtt) { + if (rxrpc_kernel_get_srtt(call->net->socket, call->rxcall, &rtt_us) && + rtt_us < server->probe.rtt) { server->probe.rtt = rtt_us; server->rtt = rtt_us; alist->preferred = index; --- linux-5.8.0.orig/fs/afs/inode.c +++ linux-5.8.0/fs/afs/inode.c @@ -27,7 +27,6 @@ static const struct inode_operations afs_symlink_inode_operations = { .get_link = page_get_link, - .listxattr = afs_listxattr, }; static noinline void dump_vnode(struct afs_vnode *vnode, struct afs_vnode *parent_vnode) @@ -294,6 +293,13 @@ op->flags &= ~AFS_OPERATION_DIR_CONFLICT; } } else if (vp->scb.have_status) { + if (vp->dv_before + vp->dv_delta != vp->scb.status.data_version && + vp->speculative) + /* Ignore the result of a speculative bulk status fetch + * if it splits around a modification op, thereby + * appearing to regress the data version. + */ + goto out; afs_apply_status(op, vp); if (vp->scb.have_cb) afs_apply_callback(op, vp); @@ -305,6 +311,7 @@ } } +out: write_sequnlock(&vnode->cb_lock); if (vp->scb.have_status) @@ -810,14 +817,32 @@ static void afs_setattr_success(struct afs_operation *op) { - struct inode *inode = &op->file[0].vnode->vfs_inode; + struct afs_vnode_param *vp = &op->file[0]; + struct inode *inode = &vp->vnode->vfs_inode; + loff_t old_i_size = i_size_read(inode); + + op->setattr.old_i_size = old_i_size; + afs_vnode_commit_status(op, vp); + /* inode->i_size has now been changed. */ - afs_vnode_commit_status(op, &op->file[0]); if (op->setattr.attr->ia_valid & ATTR_SIZE) { - loff_t i_size = inode->i_size, size = op->setattr.attr->ia_size; - if (size > i_size) - pagecache_isize_extended(inode, i_size, size); - truncate_pagecache(inode, size); + loff_t size = op->setattr.attr->ia_size; + if (size > old_i_size) + pagecache_isize_extended(inode, old_i_size, size); + } +} + +static void afs_setattr_edit_file(struct afs_operation *op) +{ + struct afs_vnode_param *vp = &op->file[0]; + struct inode *inode = &vp->vnode->vfs_inode; + + if (op->setattr.attr->ia_valid & ATTR_SIZE) { + loff_t size = op->setattr.attr->ia_size; + loff_t i_size = op->setattr.old_i_size; + + if (size < i_size) + truncate_pagecache(inode, size); } } @@ -825,6 +850,7 @@ .issue_afs_rpc = afs_fs_setattr, .issue_yfs_rpc = yfs_fs_setattr, .success = afs_setattr_success, + .edit_dir = afs_setattr_edit_file, }; /* @@ -863,11 +889,16 @@ if (S_ISREG(vnode->vfs_inode.i_mode)) filemap_write_and_wait(vnode->vfs_inode.i_mapping); + /* Prevent any new writebacks from starting whilst we do this. */ + down_write(&vnode->validate_lock); + op = afs_alloc_operation(((attr->ia_valid & ATTR_FILE) ? afs_file_key(attr->ia_file) : NULL), vnode->volume); - if (IS_ERR(op)) - return PTR_ERR(op); + if (IS_ERR(op)) { + ret = PTR_ERR(op); + goto out_unlock; + } afs_op_set_vnode(op, 0, vnode); op->setattr.attr = attr; @@ -880,5 +911,10 @@ op->file[0].update_ctime = 1; op->ops = &afs_setattr_operation; - return afs_do_sync_operation(op); + ret = afs_do_sync_operation(op); + +out_unlock: + up_write(&vnode->validate_lock); + _leave(" = %d", ret); + return ret; } --- linux-5.8.0.orig/fs/afs/internal.h +++ linux-5.8.0/fs/afs/internal.h @@ -263,11 +263,11 @@ /* Cell database */ struct rb_root cells; - struct afs_cell __rcu *ws_cell; + struct afs_cell *ws_cell; struct work_struct cells_manager; struct timer_list cells_timer; atomic_t cells_outstanding; - seqlock_t cells_lock; + struct rw_semaphore cells_lock; struct mutex cells_alias_lock; struct mutex proc_cells_lock; @@ -326,6 +326,7 @@ AFS_CELL_DEACTIVATING, AFS_CELL_INACTIVE, AFS_CELL_FAILED, + AFS_CELL_REMOVED, }; /* @@ -363,7 +364,8 @@ #endif time64_t dns_expiry; /* Time AFSDB/SRV record expires */ time64_t last_inactive; /* Time of last drop of usage count */ - atomic_t usage; + atomic_t ref; /* Struct refcount */ + atomic_t active; /* Active usage counter */ unsigned long flags; #define AFS_CELL_FL_NO_GC 0 /* The cell was added manually, don't auto-gc */ #define AFS_CELL_FL_DO_LOOKUP 1 /* DNS lookup requested */ @@ -750,6 +752,7 @@ bool update_ctime:1; /* Need to update the ctime */ bool set_size:1; /* Must update i_size */ bool op_unlinked:1; /* True if file was unlinked by op */ + bool speculative:1; /* T if speculative status fetch (no vnode lock) */ }; /* @@ -807,9 +810,11 @@ pgoff_t last; /* last page in mapping to deal with */ unsigned first_offset; /* offset into mapping[first] */ unsigned last_to; /* amount of mapping[last] */ + bool laundering; /* Laundering page, PG_writeback not set */ } store; struct { struct iattr *attr; + loff_t old_i_size; } setattr; struct afs_acl *acl; struct yfs_acl *yacl; @@ -851,6 +856,62 @@ u64 data_version; } __packed; +/* + * We use page->private to hold the amount of the page that we've written to, + * splitting the field into two parts. However, we need to represent a range + * 0...PAGE_SIZE, so we reduce the resolution if the size of the page + * exceeds what we can encode. + */ +#ifdef CONFIG_64BIT +#define __AFS_PAGE_PRIV_MASK 0x7fffffffUL +#define __AFS_PAGE_PRIV_SHIFT 32 +#define __AFS_PAGE_PRIV_MMAPPED 0x80000000UL +#else +#define __AFS_PAGE_PRIV_MASK 0x7fffUL +#define __AFS_PAGE_PRIV_SHIFT 16 +#define __AFS_PAGE_PRIV_MMAPPED 0x8000UL +#endif + +static inline unsigned int afs_page_dirty_resolution(void) +{ + int shift = PAGE_SHIFT - (__AFS_PAGE_PRIV_SHIFT - 1); + return (shift > 0) ? shift : 0; +} + +static inline size_t afs_page_dirty_from(unsigned long priv) +{ + unsigned long x = priv & __AFS_PAGE_PRIV_MASK; + + /* The lower bound is inclusive */ + return x << afs_page_dirty_resolution(); +} + +static inline size_t afs_page_dirty_to(unsigned long priv) +{ + unsigned long x = (priv >> __AFS_PAGE_PRIV_SHIFT) & __AFS_PAGE_PRIV_MASK; + + /* The upper bound is immediately beyond the region */ + return (x + 1) << afs_page_dirty_resolution(); +} + +static inline unsigned long afs_page_dirty(size_t from, size_t to) +{ + unsigned int res = afs_page_dirty_resolution(); + from >>= res; + to = (to - 1) >> res; + return (to << __AFS_PAGE_PRIV_SHIFT) | from; +} + +static inline unsigned long afs_page_dirty_mmapped(unsigned long priv) +{ + return priv | __AFS_PAGE_PRIV_MMAPPED; +} + +static inline bool afs_is_page_dirty_mmapped(unsigned long priv) +{ + return priv & __AFS_PAGE_PRIV_MMAPPED; +} + #include /*****************************************************************************/ @@ -914,11 +975,14 @@ * cell.c */ extern int afs_cell_init(struct afs_net *, const char *); -extern struct afs_cell *afs_lookup_cell_rcu(struct afs_net *, const char *, unsigned); +extern struct afs_cell *afs_find_cell(struct afs_net *, const char *, unsigned); extern struct afs_cell *afs_lookup_cell(struct afs_net *, const char *, unsigned, const char *, bool); +extern struct afs_cell *afs_use_cell(struct afs_cell *); +extern void afs_unuse_cell(struct afs_net *, struct afs_cell *); extern struct afs_cell *afs_get_cell(struct afs_cell *); -extern void afs_put_cell(struct afs_net *, struct afs_cell *); +extern void afs_put_cell(struct afs_cell *); +extern void afs_queue_cell(struct afs_cell *); extern void afs_manage_cells(struct work_struct *); extern void afs_cells_timer(struct timer_list *); extern void __net_exit afs_cell_purge(struct afs_net *); @@ -1439,7 +1503,6 @@ * xattr.c */ extern const struct xattr_handler *afs_xattr_handlers[]; -extern ssize_t afs_listxattr(struct dentry *, char *, size_t); /* * yfsclient.c --- linux-5.8.0.orig/fs/afs/main.c +++ linux-5.8.0/fs/afs/main.c @@ -78,7 +78,7 @@ mutex_init(&net->socket_mutex); net->cells = RB_ROOT; - seqlock_init(&net->cells_lock); + init_rwsem(&net->cells_lock); INIT_WORK(&net->cells_manager, afs_manage_cells); timer_setup(&net->cells_timer, afs_cells_timer, 0); @@ -193,7 +193,7 @@ goto error_cache; #endif - ret = register_pernet_subsys(&afs_net_ops); + ret = register_pernet_device(&afs_net_ops); if (ret < 0) goto error_net; @@ -213,7 +213,7 @@ error_proc: afs_fs_exit(); error_fs: - unregister_pernet_subsys(&afs_net_ops); + unregister_pernet_device(&afs_net_ops); error_net: #ifdef CONFIG_AFS_FSCACHE fscache_unregister_netfs(&afs_cache_netfs); @@ -244,7 +244,7 @@ proc_remove(afs_proc_symlink); afs_fs_exit(); - unregister_pernet_subsys(&afs_net_ops); + unregister_pernet_device(&afs_net_ops); #ifdef CONFIG_AFS_FSCACHE fscache_unregister_netfs(&afs_cache_netfs); #endif --- linux-5.8.0.orig/fs/afs/mntpt.c +++ linux-5.8.0/fs/afs/mntpt.c @@ -32,7 +32,6 @@ .lookup = afs_mntpt_lookup, .readlink = page_readlink, .getattr = afs_getattr, - .listxattr = afs_listxattr, }; const struct inode_operations afs_autocell_inode_operations = { @@ -88,7 +87,7 @@ ctx->force = true; } if (ctx->cell) { - afs_put_cell(ctx->net, ctx->cell); + afs_unuse_cell(ctx->net, ctx->cell); ctx->cell = NULL; } if (test_bit(AFS_VNODE_PSEUDODIR, &vnode->flags)) { @@ -124,7 +123,7 @@ char *buf; if (src_as->cell) - ctx->cell = afs_get_cell(src_as->cell); + ctx->cell = afs_use_cell(src_as->cell); if (size < 2 || size > PAGE_SIZE - 1) return -EINVAL; --- linux-5.8.0.orig/fs/afs/proc.c +++ linux-5.8.0/fs/afs/proc.c @@ -38,7 +38,7 @@ if (v == SEQ_START_TOKEN) { /* display header on line 1 */ - seq_puts(m, "USE TTL SV ST NAME\n"); + seq_puts(m, "USE ACT TTL SV ST NAME\n"); return 0; } @@ -46,10 +46,11 @@ vllist = rcu_dereference(cell->vl_servers); /* display one cell per line on subsequent lines */ - seq_printf(m, "%3u %6lld %2u %2u %s\n", - atomic_read(&cell->usage), + seq_printf(m, "%3u %3u %6lld %2u %2u %s\n", + atomic_read(&cell->ref), + atomic_read(&cell->active), cell->dns_expiry - ktime_get_real_seconds(), - vllist->nr_servers, + vllist ? vllist->nr_servers : 0, cell->state, cell->name); return 0; @@ -128,7 +129,7 @@ } if (test_and_set_bit(AFS_CELL_FL_NO_GC, &cell->flags)) - afs_put_cell(net, cell); + afs_unuse_cell(net, cell); } else { goto inval; } @@ -154,13 +155,11 @@ struct afs_net *net; net = afs_seq2net_single(m); - if (rcu_access_pointer(net->ws_cell)) { - rcu_read_lock(); - cell = rcu_dereference(net->ws_cell); - if (cell) - seq_printf(m, "%s\n", cell->name); - rcu_read_unlock(); - } + down_read(&net->cells_lock); + cell = net->ws_cell; + if (cell) + seq_printf(m, "%s\n", cell->name); + up_read(&net->cells_lock); return 0; } --- linux-5.8.0.orig/fs/afs/server.c +++ linux-5.8.0/fs/afs/server.c @@ -550,7 +550,12 @@ _debug("manage %pU %u", &server->uuid, active); - ASSERTIFCMP(purging, active, ==, 0); + if (purging) { + trace_afs_server(server, atomic_read(&server->ref), + active, afs_server_trace_purging); + if (active != 0) + pr_notice("Can't purge s=%08x\n", server->debug_id); + } if (active == 0) { time64_t expire_at = server->unuse_time; --- linux-5.8.0.orig/fs/afs/super.c +++ linux-5.8.0/fs/afs/super.c @@ -230,6 +230,9 @@ _enter(",%s", name); + if (fc->source) + return invalf(fc, "kAFS: Multiple sources not supported"); + if (!name) { printk(KERN_ERR "kAFS: no volume name specified\n"); return -EINVAL; @@ -294,7 +297,7 @@ cellnamesz, cellnamesz, cellname ?: ""); return PTR_ERR(cell); } - afs_put_cell(ctx->net, ctx->cell); + afs_unuse_cell(ctx->net, ctx->cell); ctx->cell = cell; } @@ -389,8 +392,8 @@ _debug("switch to alias"); key_put(ctx->key); ctx->key = NULL; - cell = afs_get_cell(ctx->cell->alias_of); - afs_put_cell(ctx->net, ctx->cell); + cell = afs_use_cell(ctx->cell->alias_of); + afs_unuse_cell(ctx->net, ctx->cell); ctx->cell = cell; goto reget_key; } @@ -508,7 +511,7 @@ if (ctx->dyn_root) { as->dyn_root = true; } else { - as->cell = afs_get_cell(ctx->cell); + as->cell = afs_use_cell(ctx->cell); as->volume = afs_get_volume(ctx->volume, afs_volume_trace_get_alloc_sbi); } @@ -521,7 +524,7 @@ if (as) { struct afs_net *net = afs_net(as->net_ns); afs_put_volume(net, as->volume, afs_volume_trace_put_destroy_sbi); - afs_put_cell(net, as->cell); + afs_unuse_cell(net, as->cell); put_net(as->net_ns); kfree(as); } @@ -607,7 +610,7 @@ afs_destroy_sbi(fc->s_fs_info); afs_put_volume(ctx->net, ctx->volume, afs_volume_trace_put_free_fc); - afs_put_cell(ctx->net, ctx->cell); + afs_unuse_cell(ctx->net, ctx->cell); key_put(ctx->key); kfree(ctx); } @@ -634,9 +637,7 @@ ctx->net = afs_net(fc->net_ns); /* Default to the workstation cell. */ - rcu_read_lock(); - cell = afs_lookup_cell_rcu(ctx->net, NULL, 0); - rcu_read_unlock(); + cell = afs_find_cell(ctx->net, NULL, 0); if (IS_ERR(cell)) cell = NULL; ctx->cell = cell; --- linux-5.8.0.orig/fs/afs/vl_alias.c +++ linux-5.8.0/fs/afs/vl_alias.c @@ -177,7 +177,7 @@ is_alias: rcu_read_unlock(); - cell->alias_of = afs_get_cell(p); + cell->alias_of = afs_use_cell(p); return 1; } @@ -247,18 +247,18 @@ continue; if (p->root_volume) continue; /* Ignore cells that have a root.cell volume. */ - afs_get_cell(p); + afs_use_cell(p); mutex_unlock(&cell->net->proc_cells_lock); if (afs_query_for_alias_one(cell, key, p) != 0) goto is_alias; if (mutex_lock_interruptible(&cell->net->proc_cells_lock) < 0) { - afs_put_cell(cell->net, p); + afs_unuse_cell(cell->net, p); return -ERESTARTSYS; } - afs_put_cell(cell->net, p); + afs_unuse_cell(cell->net, p); } mutex_unlock(&cell->net->proc_cells_lock); --- linux-5.8.0.orig/fs/afs/vl_probe.c +++ linux-5.8.0/fs/afs/vl_probe.c @@ -92,8 +92,8 @@ } } - rtt_us = rxrpc_kernel_get_srtt(call->net->socket, call->rxcall); - if (rtt_us < server->probe.rtt) { + if (rxrpc_kernel_get_srtt(call->net->socket, call->rxcall, &rtt_us) && + rtt_us < server->probe.rtt) { server->probe.rtt = rtt_us; alist->preferred = index; have_result = true; --- linux-5.8.0.orig/fs/afs/vl_rotate.c +++ linux-5.8.0/fs/afs/vl_rotate.c @@ -45,7 +45,7 @@ cell->dns_expiry <= ktime_get_real_seconds()) { dns_lookup_count = smp_load_acquire(&cell->dns_lookup_count); set_bit(AFS_CELL_FL_DO_LOOKUP, &cell->flags); - queue_work(afs_wq, &cell->manager); + afs_queue_cell(cell); if (cell->dns_source == DNS_RECORD_UNAVAILABLE) { if (wait_var_event_interruptible( --- linux-5.8.0.orig/fs/afs/volume.c +++ linux-5.8.0/fs/afs/volume.c @@ -106,7 +106,7 @@ return volume; error_1: - afs_put_cell(params->net, volume->cell); + afs_put_cell(volume->cell); kfree(volume); error_0: return ERR_PTR(ret); @@ -228,7 +228,7 @@ afs_remove_volume_from_cell(volume); afs_put_serverlist(net, rcu_access_pointer(volume->servers)); - afs_put_cell(net, volume->cell); + afs_put_cell(volume->cell); trace_afs_volume(volume->vid, atomic_read(&volume->usage), afs_volume_trace_free); kfree_rcu(volume, rcu); --- linux-5.8.0.orig/fs/afs/write.c +++ linux-5.8.0/fs/afs/write.c @@ -76,7 +76,7 @@ */ int afs_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, - struct page **pagep, void **fsdata) + struct page **_page, void **fsdata) { struct afs_vnode *vnode = AFS_FS_I(file_inode(file)); struct page *page; @@ -90,11 +90,6 @@ _enter("{%llx:%llu},{%lx},%u,%u", vnode->fid.vid, vnode->fid.vnode, index, from, to); - /* We want to store information about how much of a page is altered in - * page->private. - */ - BUILD_BUG_ON(PAGE_SIZE > 32768 && sizeof(page->private) < 8); - page = grab_cache_page_write_begin(mapping, index, flags); if (!page) return -ENOMEM; @@ -110,9 +105,6 @@ SetPageUptodate(page); } - /* page won't leak in error case: it eventually gets cleaned off LRU */ - *pagep = page; - try_again: /* See if this page is already partially written in a way that we can * merge the new write with. @@ -120,8 +112,8 @@ t = f = 0; if (PagePrivate(page)) { priv = page_private(page); - f = priv & AFS_PRIV_MAX; - t = priv >> AFS_PRIV_SHIFT; + f = afs_page_dirty_from(priv); + t = afs_page_dirty_to(priv); ASSERTCMP(f, <=, t); } @@ -138,21 +130,9 @@ if (!test_bit(AFS_VNODE_NEW_CONTENT, &vnode->flags) && (to < f || from > t)) goto flush_conflicting_write; - if (from < f) - f = from; - if (to > t) - t = to; - } else { - f = from; - t = to; } - priv = (unsigned long)t << AFS_PRIV_SHIFT; - priv |= f; - trace_afs_page_dirty(vnode, tracepoint_string("begin"), - page->index, priv); - SetPagePrivate(page); - set_page_private(page, priv); + *_page = page; _leave(" = 0"); return 0; @@ -162,17 +142,18 @@ flush_conflicting_write: _debug("flush conflict"); ret = write_one_page(page); - if (ret < 0) { - _leave(" = %d", ret); - return ret; - } + if (ret < 0) + goto error; ret = lock_page_killable(page); - if (ret < 0) { - _leave(" = %d", ret); - return ret; - } + if (ret < 0) + goto error; goto try_again; + +error: + put_page(page); + _leave(" = %d", ret); + return ret; } /* @@ -184,12 +165,18 @@ { struct afs_vnode *vnode = AFS_FS_I(file_inode(file)); struct key *key = afs_file_key(file); + unsigned long priv; + unsigned int f, from = pos & (PAGE_SIZE - 1); + unsigned int t, to = from + copied; loff_t i_size, maybe_i_size; - int ret; + int ret = 0; _enter("{%llx:%llu},{%lx}", vnode->fid.vid, vnode->fid.vnode, page->index); + if (copied == 0) + goto out; + maybe_i_size = pos + copied; i_size = i_size_read(&vnode->vfs_inode); @@ -215,6 +202,25 @@ SetPageUptodate(page); } + if (PagePrivate(page)) { + priv = page_private(page); + f = afs_page_dirty_from(priv); + t = afs_page_dirty_to(priv); + if (from < f) + f = from; + if (to > t) + t = to; + priv = afs_page_dirty(f, t); + set_page_private(page, priv); + trace_afs_page_dirty(vnode, tracepoint_string("dirty+"), + page->index, priv); + } else { + priv = afs_page_dirty(from, to); + attach_page_private(page, (void *)priv); + trace_afs_page_dirty(vnode, tracepoint_string("dirty"), + page->index, priv); + } + set_page_dirty(page); if (PageDirty(page)) _debug("dirtied"); @@ -334,10 +340,9 @@ ASSERTCMP(pv.nr, ==, count); for (loop = 0; loop < count; loop++) { - priv = page_private(pv.pages[loop]); + priv = (unsigned long)detach_page_private(pv.pages[loop]); trace_afs_page_dirty(vnode, tracepoint_string("clear"), pv.pages[loop]->index, priv); - set_page_private(pv.pages[loop], 0); end_page_writeback(pv.pages[loop]); } first += count; @@ -396,7 +401,8 @@ op->ctime = op->file[0].scb.status.mtime_client; afs_vnode_commit_status(op, &op->file[0]); if (op->error == 0) { - afs_pages_written_back(vnode, op->store.first, op->store.last); + if (!op->store.laundering) + afs_pages_written_back(vnode, op->store.first, op->store.last); afs_stat_v(vnode, n_stores); atomic_long_add((op->store.last * PAGE_SIZE + op->store.last_to) - (op->store.first * PAGE_SIZE + op->store.first_offset), @@ -415,7 +421,7 @@ */ static int afs_store_data(struct address_space *mapping, pgoff_t first, pgoff_t last, - unsigned offset, unsigned to) + unsigned offset, unsigned to, bool laundering) { struct afs_vnode *vnode = AFS_FS_I(mapping->host); struct afs_operation *op; @@ -448,6 +454,7 @@ op->store.last = last; op->store.first_offset = offset; op->store.last_to = to; + op->store.laundering = laundering; op->mtime = vnode->vfs_inode.i_mtime; op->flags |= AFS_OPERATION_UNINTR; op->ops = &afs_store_data_operation; @@ -509,8 +516,8 @@ */ start = primary_page->index; priv = page_private(primary_page); - offset = priv & AFS_PRIV_MAX; - to = priv >> AFS_PRIV_SHIFT; + offset = afs_page_dirty_from(priv); + to = afs_page_dirty_to(priv); trace_afs_page_dirty(vnode, tracepoint_string("store"), primary_page->index, priv); @@ -555,8 +562,8 @@ } priv = page_private(page); - f = priv & AFS_PRIV_MAX; - t = priv >> AFS_PRIV_SHIFT; + f = afs_page_dirty_from(priv); + t = afs_page_dirty_to(priv); if (f != 0 && !test_bit(AFS_VNODE_NEW_CONTENT, &vnode->flags)) { unlock_page(page); @@ -601,7 +608,7 @@ if (end > i_size) to = i_size & ~PAGE_MASK; - ret = afs_store_data(mapping, first, last, offset, to); + ret = afs_store_data(mapping, first, last, offset, to, false); switch (ret) { case 0: ret = count; @@ -738,11 +745,21 @@ int afs_writepages(struct address_space *mapping, struct writeback_control *wbc) { + struct afs_vnode *vnode = AFS_FS_I(mapping->host); pgoff_t start, end, next; int ret; _enter(""); + /* We have to be careful as we can end up racing with setattr() + * truncating the pagecache since the caller doesn't take a lock here + * to prevent it. + */ + if (wbc->sync_mode == WB_SYNC_ALL) + down_read(&vnode->validate_lock); + else if (!down_read_trylock(&vnode->validate_lock)) + return 0; + if (wbc->range_cyclic) { start = mapping->writeback_index; end = -1; @@ -762,6 +779,7 @@ ret = afs_writepages_region(mapping, wbc, start, end, &next); } + up_read(&vnode->validate_lock); _leave(" = %d", ret); return ret; } @@ -846,12 +864,14 @@ */ wait_on_page_writeback(vmf->page); - priv = (unsigned long)PAGE_SIZE << AFS_PRIV_SHIFT; /* To */ - priv |= 0; /* From */ + priv = afs_page_dirty(0, PAGE_SIZE); + priv = afs_page_dirty_mmapped(priv); trace_afs_page_dirty(vnode, tracepoint_string("mkwrite"), vmf->page->index, priv); - SetPagePrivate(vmf->page); - set_page_private(vmf->page, priv); + if (PagePrivate(vmf->page)) + set_page_private(vmf->page, priv); + else + attach_page_private(vmf->page, (void *)priv); file_update_time(file); sb_end_pagefault(inode->i_sb); @@ -904,19 +924,18 @@ f = 0; t = PAGE_SIZE; if (PagePrivate(page)) { - f = priv & AFS_PRIV_MAX; - t = priv >> AFS_PRIV_SHIFT; + f = afs_page_dirty_from(priv); + t = afs_page_dirty_to(priv); } trace_afs_page_dirty(vnode, tracepoint_string("launder"), page->index, priv); - ret = afs_store_data(mapping, page->index, page->index, t, f); + ret = afs_store_data(mapping, page->index, page->index, t, f, true); } + priv = (unsigned long)detach_page_private(page); trace_afs_page_dirty(vnode, tracepoint_string("laundered"), page->index, priv); - set_page_private(page, 0); - ClearPagePrivate(page); #ifdef CONFIG_AFS_FSCACHE if (PageFsCache(page)) { --- linux-5.8.0.orig/fs/afs/xattr.c +++ linux-5.8.0/fs/afs/xattr.c @@ -11,29 +11,6 @@ #include #include "internal.h" -static const char afs_xattr_list[] = - "afs.acl\0" - "afs.cell\0" - "afs.fid\0" - "afs.volume\0" - "afs.yfs.acl\0" - "afs.yfs.acl_inherited\0" - "afs.yfs.acl_num_cleaned\0" - "afs.yfs.vol_acl"; - -/* - * Retrieve a list of the supported xattrs. - */ -ssize_t afs_listxattr(struct dentry *dentry, char *buffer, size_t size) -{ - if (size == 0) - return sizeof(afs_xattr_list); - if (size < sizeof(afs_xattr_list)) - return -ERANGE; - memcpy(buffer, afs_xattr_list, sizeof(afs_xattr_list)); - return sizeof(afs_xattr_list); -} - /* * Deal with the result of a successful fetch ACL operation. */ @@ -85,7 +62,7 @@ if (acl->size <= size) memcpy(buffer, acl->data, acl->size); else - op->error = -ERANGE; + ret = -ERANGE; } } @@ -148,11 +125,6 @@ .set = afs_xattr_set_acl, }; -static void yfs_acl_put(struct afs_operation *op) -{ - yfs_free_opaque_acl(op->yacl); -} - static const struct afs_operation_ops yfs_fetch_opaque_acl_operation = { .issue_yfs_rpc = yfs_fs_fetch_opaque_acl, .success = afs_acl_success, @@ -235,6 +207,8 @@ else ret = -ERANGE; } + } else if (ret == -ENOTSUPP) { + ret = -ENODATA; } error_yacl: @@ -246,7 +220,7 @@ static const struct afs_operation_ops yfs_store_opaque_acl2_operation = { .issue_yfs_rpc = yfs_fs_store_opaque_acl2, .success = afs_acl_success, - .put = yfs_acl_put, + .put = afs_acl_put, }; /* @@ -259,6 +233,7 @@ { struct afs_operation *op; struct afs_vnode *vnode = AFS_FS_I(inode); + int ret; if (flags == XATTR_CREATE || strcmp(name, "acl") != 0) @@ -273,7 +248,10 @@ return afs_put_operation(op); op->ops = &yfs_store_opaque_acl2_operation; - return afs_do_sync_operation(op); + ret = afs_do_sync_operation(op); + if (ret == -ENOTSUPP) + ret = -ENODATA; + return ret; } static const struct xattr_handler afs_xattr_yfs_handler = { --- linux-5.8.0.orig/fs/afs/yfsclient.c +++ linux-5.8.0/fs/afs/yfsclient.c @@ -1990,6 +1990,7 @@ memcpy(bp, acl->data, acl->size); if (acl->size != size) memset((void *)bp + acl->size, 0, size - acl->size); + bp += size / sizeof(__be32); yfs_check_req(call, bp); trace_afs_make_fs_call(call, &vp->fid); --- linux-5.8.0.orig/fs/aufs/Kconfig +++ linux-5.8.0/fs/aufs/Kconfig @@ -0,0 +1,199 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single + directory. + In the early days, aufs was entirely re-designed and + re-implemented Unionfs Version 1.x series. Introducing many + original ideas, approaches and improvements, it becomes totally + different from Unionfs while keeping the basic features. + +if AUFS_FS +choice + prompt "Maximum number of branches" + default AUFS_BRANCH_MAX_127 + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_127 + bool "127" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_511 + bool "511" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_1023 + bool "1023" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_32767 + bool "32767" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +endchoice + +config AUFS_SBILIST + bool + depends on AUFS_MAGIC_SYSRQ || PROC_FS + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq or /proc, enabled automatically. + +config AUFS_HNOTIFY + bool "Detect direct branch access (bypassing aufs)" + help + If you want to modify files on branches directly, eg. bypassing aufs, + and want aufs to detect the changes of them fully, then enable this + option and use 'udba=notify' mount option. + Currently there is only one available configuration, "fsnotify". + It will have a negative impact to the performance. + See detail in aufs.5. + +choice + prompt "method" if AUFS_HNOTIFY + default AUFS_HFSNOTIFY +config AUFS_HFSNOTIFY + bool "fsnotify" + select FSNOTIFY +endchoice + +config AUFS_EXPORT + bool "NFS-exportable aufs" + depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. + See detail in aufs.5. + +config AUFS_INO_T_64 + bool + depends on AUFS_EXPORT + depends on 64BIT && !(ALPHA || S390) + default y + help + Automatic configuration for internal use. + /* typedef unsigned long/int __kernel_ino_t */ + /* alpha and s390x are int */ + +config AUFS_XATTR + bool "support for XATTR/EA (including Security Labels)" + help + If your branch fs supports XATTR/EA and you want to make them + available in aufs too, then enable this opsion and specify the + branch attributes for EA. + See detail in aufs.5. + +config AUFS_FHSM + bool "File-based Hierarchical Storage Management" + help + Hierarchical Storage Management (or HSM) is a well-known feature + in the storage world. Aufs provides this feature as file-based. + with multiple branches. + These multiple branches are prioritized, ie. the topmost one + should be the fastest drive and be used heavily. + +config AUFS_RDU + bool "Readdir in userspace" + help + Aufs has two methods to provide a merged view for a directory, + by a user-space library and by kernel-space natively. The latter + is always enabled but sometimes large and slow. + If you enable this option, install the library in aufs2-util + package, and set some environment variables for your readdir(3), + then the work will be handled in user-space which generally + shows better performance in most cases. + See detail in aufs.5. + +config AUFS_DIRREN + bool "Workaround for rename(2)-ing a directory" + help + By default, aufs returns EXDEV error in renameing a dir who has + his child on the lower branch, since it is a bad idea to issue + rename(2) internally for every lower branch. But user may not + accept this behaviour. So here is a workaround to allow such + rename(2) and store some extra infromation on the writable + branch. Obviously this costs high (and I don't like it). + To use this feature, you need to enable this configuration AND + to specify the mount option `dirren.' + See details in aufs.5 and the design documents. + +config AUFS_SHWH + bool "Show whiteouts" + help + If you want to make the whiteouts in aufs visible, then enable + this option and specify 'shwh' mount option. Although it may + sounds like philosophy or something, but in technically it + simply shows the name of whiteout with keeping its behaviour. + +config AUFS_BR_RAMFS + bool "Ramfs (initramfs/rootfs) as an aufs branch" + help + If you want to use ramfs as an aufs branch fs, then enable this + option. Generally tmpfs is recommended. + Aufs prohibited them to be a branch fs by default, because + initramfs becomes unusable after switch_root or something + generally. If you sets initramfs as an aufs branch and boot your + system by switch_root, you will meet a problem easily since the + files in initramfs may be inaccessible. + Unless you are going to use ramfs as an aufs branch fs without + switch_root or something, leave it N. + +config AUFS_BR_FUSE + bool "Fuse fs as an aufs branch" + depends on FUSE_FS + select AUFS_POLL + help + If you want to use fuse-based userspace filesystem as an aufs + branch fs, then enable this option. + It implements the internal poll(2) operation which is + implemented by fuse only (curretnly). + +config AUFS_POLL + bool + help + Automatic configuration for internal use. + +config AUFS_BR_HFSPLUS + bool "Hfsplus as an aufs branch" + depends on HFSPLUS_FS + default y + help + If you want to use hfsplus fs as an aufs branch fs, then enable + this option. This option introduces a small overhead at + copying-up a file on hfsplus. + +config AUFS_BDEV_LOOP + bool + depends on BLK_DEV_LOOP + default y + help + Automatic configuration for internal use. + Convert =[ym] into =y. + +config AUFS_DEBUG + bool "Debug aufs" + help + Enable this to compile aufs internal debug code. + It will have a negative impact to the performance. + +config AUFS_MAGIC_SYSRQ + bool + depends on AUFS_DEBUG && MAGIC_SYSRQ + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif --- linux-5.8.0.orig/fs/aufs/Makefile +++ linux-5.8.0/fs/aufs/Makefile @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 + +include ${src}/magic.mk +ifeq (${CONFIG_AUFS_FS},m) +include ${src}/conf.mk +endif +-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname +ifdef M +ccflags-y += -include ${M}/../../include/uapi/linux/aufs_type.h +else +ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h +endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ + wkq.o vfsub.o dcsub.o \ + cpup.o whout.o wbr_policy.o \ + dinfo.o dentry.o \ + dynop.o \ + finfo.o file.o f_op.o \ + dir.o vdir.o \ + iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ + mvdown.o ioctl.o + +# all are boolean +aufs-$(CONFIG_PROC_FS) += procfs.o plink.o +aufs-$(CONFIG_SYSFS) += sysfs.o +aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o +aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o +aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o +aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o +aufs-$(CONFIG_AUFS_EXPORT) += export.o +aufs-$(CONFIG_AUFS_XATTR) += xattr.o +aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o +aufs-$(CONFIG_AUFS_DIRREN) += dirren.o +aufs-$(CONFIG_AUFS_FHSM) += fhsm.o +aufs-$(CONFIG_AUFS_POLL) += poll.o +aufs-$(CONFIG_AUFS_RDU) += rdu.o +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o --- linux-5.8.0.orig/fs/aufs/aufs.h +++ linux-5.8.0/fs/aufs/aufs.h @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * all header files + */ + +#ifndef __AUFS_H__ +#define __AUFS_H__ + +#ifdef __KERNEL__ + +#define AuStub(type, name, body, ...) \ + static inline type name(__VA_ARGS__) { body; } + +#define AuStubVoid(name, ...) \ + AuStub(void, name, , __VA_ARGS__) +#define AuStubInt0(name, ...) \ + AuStub(int, name, return 0, __VA_ARGS__) + +#include "debug.h" + +#include "branch.h" +#include "cpup.h" +#include "dcsub.h" +#include "dbgaufs.h" +#include "dentry.h" +#include "dir.h" +#include "dirren.h" +#include "dynop.h" +#include "file.h" +#include "fstype.h" +#include "hbl.h" +#include "inode.h" +#include "lcnt.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- linux-5.8.0.orig/fs/aufs/branch.c +++ linux-5.8.0/fs/aufs/branch.c @@ -0,0 +1,1427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch management + */ + +#include +#include +#include "aufs.h" + +/* + * free a single branch + */ +static void au_br_do_free(struct au_branch *br) +{ + int i; + struct au_wbr *wbr; + struct au_dykey **key; + + au_hnotify_fin_br(br); + /* always, regardless the mount option */ + au_dr_hino_free(&br->br_dirren); + au_xino_put(br); + + AuLCntZero(au_lcnt_read(&br->br_nfiles, /*do_rev*/0)); + au_lcnt_fin(&br->br_nfiles, /*do_sync*/0); + AuLCntZero(au_lcnt_read(&br->br_count, /*do_rev*/0)); + au_lcnt_fin(&br->br_count, /*do_sync*/0); + + wbr = br->br_wbr; + if (wbr) { + for (i = 0; i < AuBrWh_Last; i++) + dput(wbr->wbr_wh[i]); + AuDebugOn(atomic_read(&wbr->wbr_wh_running)); + AuRwDestroy(&wbr->wbr_wh_rwsem); + } + + if (br->br_fhsm) { + au_br_fhsm_fin(br->br_fhsm); + au_kfree_try_rcu(br->br_fhsm); + } + + key = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++, key++) + if (*key) + au_dy_put(*key); + else + break; + + /* recursive lock, s_umount of branch's */ + /* synchronize_rcu(); */ /* why? */ + lockdep_off(); + path_put(&br->br_path); + lockdep_on(); + au_kfree_rcu(wbr); + au_lcnt_wait_for_fin(&br->br_nfiles); + au_lcnt_wait_for_fin(&br->br_count); + /* I don't know why, but percpu_refcount requires this */ + /* synchronize_rcu(); */ + au_kfree_rcu(br); +} + +/* + * frees all branches + */ +void au_br_free(struct au_sbinfo *sbinfo) +{ + aufs_bindex_t bmax; + struct au_branch **br; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + bmax = sbinfo->si_bbot + 1; + br = sbinfo->si_branch; + while (bmax--) + au_br_do_free(*br++); +} + +/* + * find the index of a branch which is specified by @br_id. + */ +int au_br_index(struct super_block *sb, aufs_bindex_t br_id) +{ + aufs_bindex_t bindex, bbot; + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) + if (au_sbr_id(sb, bindex) == br_id) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * add a branch + */ + +static int test_overlap(struct super_block *sb, struct dentry *h_adding, + struct dentry *h_root) +{ + if (unlikely(h_adding == h_root + || au_test_loopback_overlap(sb, h_adding))) + return 1; + if (h_adding->d_sb != h_root->d_sb) + return 0; + return au_test_subdir(h_adding, h_root) + || au_test_subdir(h_root, h_adding); +} + +/* + * returns a newly allocated branch. @new_nbranch is a number of branches + * after adding a branch. + */ +static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, + int perm) +{ + struct au_branch *add_branch; + struct dentry *root; + struct inode *inode; + int err; + + err = -ENOMEM; + add_branch = kzalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + add_branch->br_xino = au_xino_alloc(/*nfile*/1); + if (unlikely(!add_branch->br_xino)) + goto out_br; + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_xino; + + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kzalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + if (au_br_fhsm(perm)) { + err = au_fhsm_br_alloc(add_branch); + if (unlikely(err)) + goto out_wbr; + } + + root = sb->s_root; + err = au_sbr_realloc(au_sbi(sb), new_nbranch, /*may_shrink*/0); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch, /*may_shrink*/0); + if (!err) { + inode = d_inode(root); + err = au_hinode_realloc(au_ii(inode), new_nbranch, + /*may_shrink*/0); + } + if (!err) + return add_branch; /* success */ + +out_wbr: + au_kfree_rcu(add_branch->br_wbr); +out_hnotify: + au_hnotify_fin_br(add_branch); +out_xino: + au_xino_put(add_branch); +out_br: + au_kfree_rcu(add_branch); +out: + return ERR_PTR(err); +} + +/* + * test if the branch permission is legal or not. + */ +static int test_br(struct inode *inode, int brperm, char *path) +{ + int err; + + err = (au_br_writable(brperm) && IS_RDONLY(inode)); + if (!err) + goto out; + + err = -EINVAL; + pr_err("write permission for readonly mount or inode, %s\n", path); + +out: + return err; +} + +/* + * returns: + * 0: success, the caller will add it + * plus: success, it is already unified, the caller should ignore it + * minus: error + */ +static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bbot, bindex; + struct dentry *root, *h_dentry; + struct inode *inode, *h_inode; + + root = sb->s_root; + bbot = au_sbbot(sb); + if (unlikely(bbot >= 0 + && au_find_dbindex(root, add->path.dentry) >= 0)) { + err = 1; + if (!remount) { + err = -EINVAL; + pr_err("%s duplicated\n", add->pathname); + } + goto out; + } + + err = -ENOSPC; /* -E2BIG; */ + if (unlikely(AUFS_BRANCH_MAX <= add->bindex + || AUFS_BRANCH_MAX - 1 <= bbot)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bbot + 1 < add->bindex)) { + pr_err("bad index %d\n", add->bindex); + goto out; + } + + inode = d_inode(add->path.dentry); + err = -ENOENT; + if (unlikely(!inode->i_nlink)) { + pr_err("no existence %s\n", add->pathname); + goto out; + } + + err = -EINVAL; + if (unlikely(inode->i_sb == sb)) { + pr_err("%s must be outside\n", add->pathname); + goto out; + } + + if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { + pr_err("unsupported filesystem, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + if (unlikely(inode->i_sb->s_stack_depth)) { + pr_err("already stacked, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + err = test_br(d_inode(add->path.dentry), add->perm, add->pathname); + if (unlikely(err)) + goto out; + + if (bbot < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bbot; bindex++) + if (unlikely(test_overlap(sb, add->path.dentry, + au_h_dptr(root, bindex)))) { + pr_err("%s is overlapped\n", add->pathname); + goto out; + } + + err = 0; + if (au_opt_test(au_mntflags(sb), WARN_PERM)) { + h_dentry = au_h_dptr(root, 0); + h_inode = d_inode(h_dentry); + if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) + || !uid_eq(h_inode->i_uid, inode->i_uid) + || !gid_eq(h_inode->i_gid, inode->i_gid)) + pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", + add->pathname, + i_uid_read(inode), i_gid_read(inode), + (inode->i_mode & S_IALLUGO), + i_uid_read(h_inode), i_gid_read(h_inode), + (h_inode->i_mode & S_IALLUGO)); + } + +out: + return err; +} + +/* + * initialize or clean the whiteouts for an adding branch + */ +static int au_br_init_wh(struct super_block *sb, struct au_branch *br, + int new_perm) +{ + int err, old_perm; + aufs_bindex_t bindex; + struct inode *h_inode; + struct au_wbr *wbr; + struct au_hinode *hdir; + struct dentry *h_dentry; + + err = vfsub_mnt_want_write(au_br_mnt(br)); + if (unlikely(err)) + goto out; + + wbr = br->br_wbr; + old_perm = br->br_perm; + br->br_perm = new_perm; + hdir = NULL; + h_inode = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_dentry = au_br_dentry(br); + h_inode = d_inode(h_dentry); + inode_lock_nested(h_inode, AuLsc_I_PARENT); + } + if (!wbr) + err = au_wh_init(br, sb); + else { + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + wbr_wh_write_unlock(wbr); + } + if (hdir) + au_hn_inode_unlock(hdir); + else + inode_unlock(h_inode); + vfsub_mnt_drop_write(au_br_mnt(br)); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + au_kfree_rcu(wbr); + br->br_wbr = NULL; + } + +out: + return err; +} + +static int au_wbr_init(struct au_branch *br, struct super_block *sb, + int perm) +{ + int err; + struct kstatfs kst; + struct au_wbr *wbr; + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); + atomic_set(&wbr->wbr_wh_running, 0); + + /* + * a limit for rmdir/rename a dir + * cf. AUFS_MAX_NAMELEN in include/uapi/linux/aufs_type.h + */ + err = vfs_statfs(&br->br_path, &kst); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (kst.f_namelen >= NAME_MAX) + err = au_br_init_wh(sb, br, perm); + else + pr_err("%pd(%s), unsupported namelen %ld\n", + au_br_dentry(br), + au_sbtype(au_br_dentry(br)->d_sb), kst.f_namelen); + +out: + return err; +} + +/* initialize a new branch */ +static int au_br_init(struct au_branch *br, struct super_block *sb, + struct au_opt_add *add) +{ + int err; + struct au_branch *brbase; + struct file *xf; + struct inode *h_inode; + + err = 0; + br->br_perm = add->perm; + br->br_path = add->path; /* set first, path_get() later */ + spin_lock_init(&br->br_dykey_lock); + au_lcnt_init(&br->br_nfiles, /*release*/NULL); + au_lcnt_init(&br->br_count, /*release*/NULL); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + /* always, regardless the given option */ + err = au_dr_br_init(sb, br, &add->path); + if (unlikely(err)) + goto out_err; + + if (au_br_writable(add->perm)) { + err = au_wbr_init(br, sb, add->perm); + if (unlikely(err)) + goto out_err; + } + + if (au_opt_test(au_mntflags(sb), XINO)) { + brbase = au_sbr(sb, 0); + xf = au_xino_file(brbase->br_xino, /*idx*/-1); + AuDebugOn(!xf); + h_inode = d_inode(add->path.dentry); + err = au_xino_init_br(sb, br, h_inode->i_ino, &xf->f_path); + if (unlikely(err)) { + AuDebugOn(au_xino_file(br->br_xino, /*idx*/-1)); + goto out_err; + } + } + + sysaufs_br_init(br); + path_get(&br->br_path); + goto out; /* success */ + +out_err: + memset(&br->br_path, 0, sizeof(br->br_path)); +out: + return err; +} + +static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, + struct au_branch *br, aufs_bindex_t bbot, + aufs_bindex_t amount) +{ + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + memmove(brp + 1, brp, sizeof(*brp) * amount); + *brp = br; + sbinfo->si_bbot++; + if (unlikely(bbot < 0)) + sbinfo->si_bbot = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bbot, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = au_hdentry(dinfo, bindex); + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bbot++; + if (unlikely(bbot < 0)) + dinfo->di_btop = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bbot, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = au_hinode(iinfo, bindex); + memmove(hip + 1, hip, sizeof(*hip) * amount); + au_hinode_init(hip); + iinfo->ii_bbot++; + if (unlikely(bbot < 0)) + iinfo->ii_btop = 0; +} + +static void au_br_do_add(struct super_block *sb, struct au_branch *br, + aufs_bindex_t bindex) +{ + struct dentry *root, *h_dentry; + struct inode *root_inode, *h_inode; + aufs_bindex_t bbot, amount; + + root = sb->s_root; + root_inode = d_inode(root); + bbot = au_sbbot(sb); + amount = bbot + 1 - bindex; + h_dentry = au_br_dentry(br); + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bbot, amount); + au_br_do_add_hdp(au_di(root), bindex, bbot, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bbot, amount); + au_set_h_dptr(root, bindex, dget(h_dentry)); + h_inode = d_inode(h_dentry); + au_set_h_iptr(root_inode, bindex, au_igrab(h_inode), /*flags*/0); + au_sbilist_unlock(); +} + +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bbot, add_bindex; + struct dentry *root, *h_dentry; + struct inode *root_inode; + struct au_branch *add_branch; + + root = sb->s_root; + root_inode = d_inode(root); + IMustLock(root_inode); + IiMustWriteLock(root_inode); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bbot = au_sbbot(sb); + add_branch = au_br_alloc(sb, bbot + 2, add->perm); + err = PTR_ERR(add_branch); + if (IS_ERR(add_branch)) + goto out; + + err = au_br_init(add_branch, sb, add); + if (unlikely(err)) { + au_br_do_free(add_branch); + goto out; + } + + add_bindex = add->bindex; + sysaufs_brs_del(sb, add_bindex); /* remove successors */ + au_br_do_add(sb, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); /* append successors */ + dbgaufs_brs_add(sb, add_bindex, /*topdown*/0); /* rename successors */ + + h_dentry = add->path.dentry; + if (!add_bindex) { + au_cpup_attr_all(root_inode, /*force*/1); + sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; + } else + au_add_nlink(root_inode, d_inode(h_dentry)); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static unsigned long long au_farray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct hlist_bl_head *files; + struct hlist_bl_node *pos; + struct au_finfo *finfo; + + n = 0; + p = a; + files = &au_sbi(sb)->si_files; + hlist_bl_lock(files); + hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { + f = finfo->fi_file; + if (file_count(f) + && !special_file(file_inode(f)->i_mode)) { + get_file(f); + *p++ = f; + n++; + AuDebugOn(n > max); + } + } + hlist_bl_unlock(files); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + struct au_sbinfo *sbi; + + sbi = au_sbi(sb); + *max = au_lcnt_read(&sbi->si_nfiles, /*do_rev*/1); + return au_array_alloc(max, au_farray_cb, sb, /*arg*/NULL); +} + +static void au_farray_free(struct file **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * delete a branch + */ + +/* to show the line number, do not make it inlined function */ +#define AuVerbose(do_info, fmt, ...) do { \ + if (do_info) \ + pr_info(fmt, ##__VA_ARGS__); \ +} while (0) + +static int au_test_ibusy(struct inode *inode, aufs_bindex_t btop, + aufs_bindex_t bbot) +{ + return (inode && !S_ISDIR(inode->i_mode)) || btop == bbot; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t btop, + aufs_bindex_t bbot) +{ + return au_test_ibusy(d_inode(dentry), btop, bbot); +} + +/* + * test if the branch is deletable or not. + */ +static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err, i, j, ndentry; + aufs_bindex_t btop, bbot; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; !err && i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; !err && j < ndentry; j++) { + d = dpage->dentries[j]; + AuDebugOn(au_dcount(d) <= 0); + if (!au_digen_test(d, sigen)) { + di_read_lock_child(d, AuLock_IR); + if (unlikely(au_dbrange_test(d))) { + di_read_unlock(d, AuLock_IR); + continue; + } + } else { + di_write_lock_child(d); + if (unlikely(au_dbrange_test(d))) { + di_write_unlock(d); + continue; + } + err = au_reval_dpath(d, sigen); + if (!err) + di_downgrade_lock(d, AuLock_IR); + else { + di_write_unlock(d); + break; + } + } + + /* AuDbgDentry(d); */ + btop = au_dbtop(d); + bbot = au_dbbot(d); + if (btop <= bindex + && bindex <= bbot + && au_h_dptr(d, bindex) + && au_test_dbusy(d, btop, bbot)) { + err = -EBUSY; + AuVerbose(verbose, "busy %pd\n", d); + AuDbgDentry(d); + } + di_read_unlock(d, AuLock_IR); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err; + unsigned long long max, ull; + struct inode *i, **array; + aufs_bindex_t btop, bbot; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + AuDbg("b%d\n", bindex); + for (ull = 0; !err && ull < max; ull++) { + i = array[ull]; + if (unlikely(!i)) + break; + if (i->i_ino == AUFS_ROOT_INO) + continue; + + /* AuDbgInode(i); */ + if (au_iigen(i, NULL) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); + err = au_refresh_hinode_self(i); + au_iigen_dec(i); + if (!err) + ii_downgrade_lock(i); + else { + ii_write_unlock(i); + break; + } + } + + btop = au_ibtop(i); + bbot = au_ibbot(i); + if (btop <= bindex + && bindex <= bbot + && au_h_iptr(i, bindex) + && au_test_ibusy(i, btop, bbot)) { + err = -EBUSY; + AuVerbose(verbose, "busy i%lu\n", i->i_ino); + AuDbgInode(i); + } + ii_read_unlock(i); + } + au_iarray_free(array, max); + +out: + return err; +} + +static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, + const unsigned int verbose) +{ + int err; + unsigned int sigen; + + sigen = au_sigen(root->d_sb); + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = test_dentry_busy(root, bindex, sigen, verbose); + if (!err) + err = test_inode_busy(root->d_sb, bindex, sigen, verbose); + di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ + + return err; +} + +static int test_dir_busy(struct file *file, aufs_bindex_t br_id, + struct file **to_free, int *idx) +{ + int err; + unsigned char matched, root; + aufs_bindex_t bindex, bbot; + struct au_fidir *fidir; + struct au_hfile *hfile; + + err = 0; + root = IS_ROOT(file->f_path.dentry); + if (root) { + get_file(file); + to_free[*idx] = file; + (*idx)++; + goto out; + } + + matched = 0; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); bindex <= bbot; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + matched = 1; + break; + } + } + if (matched) + err = -EBUSY; + +out: + return err; +} + +static int test_file_busy(struct super_block *sb, aufs_bindex_t br_id, + struct file **to_free, int opened) +{ + int err, idx; + unsigned long long ull, max; + aufs_bindex_t btop; + struct file *file, **array; + struct dentry *root; + struct au_hfile *hfile; + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + idx = 0; + root = sb->s_root; + di_write_unlock(root); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + btop = au_fbtop(file); + if (!d_is_dir(file->f_path.dentry)) { + hfile = &au_fi(file)->fi_htop; + if (hfile->hf_br->br_id == br_id) + err = -EBUSY; + } else + err = test_dir_busy(file, br_id, to_free, &idx); + fi_read_unlock(file); + if (unlikely(err)) + break; + } + di_write_lock_child(root); + au_farray_free(array, max); + AuDebugOn(idx > opened); + +out: + return err; +} + +static void br_del_file(struct file **to_free, unsigned long long opened, + aufs_bindex_t br_id) +{ + unsigned long long ull; + aufs_bindex_t bindex, btop, bbot, bfound; + struct file *file; + struct au_fidir *fidir; + struct au_hfile *hfile; + + for (ull = 0; ull < opened; ull++) { + file = to_free[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + AuDebugOn(!d_is_dir(file->f_path.dentry)); + bfound = -1; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + fi_write_lock(file); + btop = au_fbtop(file); + bbot = au_fbbot_dir(file); + for (bindex = btop; bindex <= bbot; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + bfound = bindex; + break; + } + } + AuDebugOn(bfound < 0); + au_set_h_fptr(file, bfound, NULL); + if (bfound == btop) { + for (btop++; btop <= bbot; btop++) + if (au_hf_dir(file, btop)) { + au_set_fbtop(file, btop); + break; + } + } + fi_write_unlock(file); + } +} + +static void au_br_do_del_brp(struct au_sbinfo *sbinfo, + const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bbot) + memmove(brp, brp + 1, sizeof(*brp) * (bbot - bindex)); + sbinfo->si_branch[0 + bbot] = NULL; + sbinfo->si_bbot--; + + p = au_krealloc(sbinfo->si_branch, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + sbinfo->si_branch = p; + /* harmless error */ +} + +static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = au_hdentry(dinfo, bindex); + if (bindex < bbot) + memmove(hdp, hdp + 1, sizeof(*hdp) * (bbot - bindex)); + /* au_h_dentry_init(au_hdentry(dinfo, bbot); */ + dinfo->di_bbot--; + + p = au_krealloc(dinfo->di_hdentry, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + dinfo->di_hdentry = p; + /* harmless error */ +} + +static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = au_hinode(iinfo, bindex); + if (bindex < bbot) + memmove(hip, hip + 1, sizeof(*hip) * (bbot - bindex)); + /* au_hinode_init(au_hinode(iinfo, bbot)); */ + iinfo->ii_bbot--; + + p = au_krealloc(iinfo->ii_hinode, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + iinfo->ii_hinode = p; + /* harmless error */ +} + +static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br) +{ + aufs_bindex_t bbot; + struct au_sbinfo *sbinfo; + struct dentry *root, *h_root; + struct inode *inode, *h_inode; + struct au_hinode *hinode; + + SiMustWriteLock(sb); + + root = sb->s_root; + inode = d_inode(root); + sbinfo = au_sbi(sb); + bbot = sbinfo->si_bbot; + + h_root = au_h_dptr(root, bindex); + hinode = au_hi(inode, bindex); + h_inode = au_igrab(hinode->hi_inode); + au_hiput(hinode); + + au_sbilist_lock(); + au_br_do_del_brp(sbinfo, bindex, bbot); + au_br_do_del_hdp(au_di(root), bindex, bbot); + au_br_do_del_hip(au_ii(inode), bindex, bbot); + au_sbilist_unlock(); + + /* ignore an error */ + au_dr_br_fin(sb, br); /* always, regardless the mount option */ + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +static unsigned long long empty_cb(struct super_block *sb, void *array, + unsigned long long max, void *arg) +{ + return max; +} + +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) +{ + int err, rerr, i; + unsigned long long opened; + unsigned int mnt_flags; + aufs_bindex_t bindex, bbot, br_id; + unsigned char do_wh, verbose; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + struct file **to_free; + + err = 0; + opened = 0; + to_free = NULL; + root = sb->s_root; + bindex = au_find_dbindex(root, del->h_path.dentry); + if (bindex < 0) { + if (remount) + goto out; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", del->pathname); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = -EBUSY; + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + bbot = au_sbbot(sb); + if (unlikely(!bbot)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + + br = au_sbr(sb, bindex); + AuDebugOn(!path_equal(&br->br_path, &del->h_path)); + if (unlikely(au_lcnt_read(&br->br_count, /*do_rev*/1))) { + AuVerbose(verbose, "br %pd2 is busy now\n", del->h_path.dentry); + goto out; + } + + br_id = br->br_id; + opened = au_lcnt_read(&br->br_nfiles, /*do_rev*/1); + if (unlikely(opened)) { + to_free = au_array_alloc(&opened, empty_cb, sb, NULL); + err = PTR_ERR(to_free); + if (IS_ERR(to_free)) + goto out; + + err = test_file_busy(sb, br_id, to_free, opened); + if (unlikely(err)) { + AuVerbose(verbose, "%llu file(s) opened\n", opened); + goto out; + } + } + + wbr = br->br_wbr; + do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); + if (do_wh) { + /* instead of WbrWhMustWriteLock(wbr) */ + SiMustWriteLock(sb); + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + } + + err = test_children_busy(root, bindex, verbose); + if (unlikely(err)) { + if (do_wh) + goto out_wh; + goto out; + } + + err = 0; + if (to_free) { + /* + * now we confirmed the branch is deletable. + * let's free the remaining opened dirs on the branch. + */ + di_write_unlock(root); + br_del_file(to_free, opened, br_id); + di_write_lock_child(root); + } + + sysaufs_brs_del(sb, bindex); /* remove successors */ + dbgaufs_xino_del(br); /* remove one */ + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); /* append successors */ + dbgaufs_brs_add(sb, bindex, /*topdown*/1); /* rename successors */ + + if (!bindex) { + au_cpup_attr_all(d_inode(root), /*force*/1); + sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; + } else + au_sub_nlink(d_inode(root), d_inode(del->h_path.dentry)); + if (au_opt_test(mnt_flags, PLINK)) + au_plink_half_refresh(sb, br_id); + + goto out; /* success */ + +out_wh: + /* revert */ + rerr = au_br_init_wh(sb, br, br->br_perm); + if (rerr) + pr_warn("failed re-creating base whiteout, %s. (%d)\n", + del->pathname, rerr); +out: + if (to_free) + au_farray_free(to_free, opened); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) +{ + int err; + aufs_bindex_t btop, bbot; + struct aufs_ibusy ibusy; + struct inode *inode, *h_inode; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = copy_from_user(&ibusy, arg, sizeof(ibusy)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(&arg->h_ino, sizeof(arg->h_ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + + err = -EINVAL; + si_read_lock(sb, AuLock_FLUSH); + if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbbot(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || au_is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + btop = au_ibtop(inode); + bbot = au_ibbot(inode); + if (btop <= ibusy.bindex && ibusy.bindex <= bbot) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, btop, bbot)) + ibusy.h_ino = h_inode->i_ino; + } + ii_read_unlock(inode); + iput(inode); + +out_unlock: + si_read_unlock(sb); + if (!err) { + err = __put_user(ibusy.h_ino, &arg->h_ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + } + } +out: + return err; +} + +long au_ibusy_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* + * change a branch permission + */ + +static void au_warn_ima(void) +{ +#ifdef CONFIG_IMA + /* since it doesn't support mark_files_ro() */ + AuWarn1("RW -> RO makes IMA to produce wrong message\n"); +#endif +} + +static int do_need_sigen_inc(int a, int b) +{ + return au_br_whable(a) && !au_br_whable(b); +} + +static int need_sigen_inc(int old, int new) +{ + return do_need_sigen_inc(old, new) + || do_need_sigen_inc(new, old); +} + +static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, do_warn; + unsigned int mnt_flags; + unsigned long long ull, max; + aufs_bindex_t br_id; + unsigned char verbose, writer; + struct file *file, *hf, **array; + struct au_hfile *hfile; + struct inode *h_inode; + + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + do_warn = 0; + br_id = au_sbr_id(sb, bindex); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + if (unlikely(au_test_mmapped(file))) { + err = -EBUSY; + AuVerbose(verbose, "mmapped %pD\n", file); + AuDbgFile(file); + FiMustNoWaiters(file); + fi_read_unlock(file); + goto out_array; + } + + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + if (!d_is_reg(file->f_path.dentry) + || !(file->f_mode & FMODE_WRITE) + || hfile->hf_br->br_id != br_id + || !(hf->f_mode & FMODE_WRITE)) + array[ull] = NULL; + else { + do_warn = 1; + get_file(file); + } + + FiMustNoWaiters(file); + fi_read_unlock(file); + fput(file); + } + + err = 0; + if (do_warn) + au_warn_ima(); + + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (!file) + continue; + + /* todo: already flushed? */ + /* + * fs/super.c:mark_files_ro() is gone, but aufs keeps its + * approach which resets f_mode and calls mnt_drop_write() and + * file_release_write() for each file, because the branch + * attribute in aufs world is totally different from the native + * fs rw/ro mode. + */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + /* fi_read_unlock(file); */ + spin_lock(&hf->f_lock); + writer = !!(hf->f_mode & FMODE_WRITER); + hf->f_mode &= ~(FMODE_WRITE | FMODE_WRITER); + spin_unlock(&hf->f_lock); + if (writer) { + h_inode = file_inode(hf); + if (hf->f_mode & FMODE_READ) + i_readcount_inc(h_inode); + put_write_access(h_inode); + __mnt_drop_write(hf->f_path.mnt); + } + } + +out_array: + au_farray_free(array, max); +out: + AuTraceErr(err); + return err; +} + +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh) +{ + int err, rerr; + aufs_bindex_t bindex; + struct dentry *root; + struct au_branch *br; + struct au_br_fhsm *bf; + + root = sb->s_root; + bindex = au_find_dbindex(root, mod->h_root); + if (bindex < 0) { + if (remount) + return 0; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", mod->path); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = test_br(d_inode(mod->h_root), mod->perm, mod->path); + if (unlikely(err)) + goto out; + + br = au_sbr(sb, bindex); + AuDebugOn(mod->h_root != au_br_dentry(br)); + if (br->br_perm == mod->perm) + return 0; /* success */ + + /* pre-allocate for non-fhsm --> fhsm */ + bf = NULL; + if (!au_br_fhsm(br->br_perm) && au_br_fhsm(mod->perm)) { + err = au_fhsm_br_alloc(br); + if (unlikely(err)) + goto out; + bf = br->br_fhsm; + br->br_fhsm = NULL; + } + + if (au_br_writable(br->br_perm)) { + /* remove whiteout base */ + err = au_br_init_wh(sb, br, mod->perm); + if (unlikely(err)) + goto out_bf; + + if (!au_br_writable(mod->perm)) { + /* rw --> ro, file might be mmapped */ + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = au_br_mod_files_ro(sb, bindex); + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + if (unlikely(err)) { + rerr = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) + rerr = au_wbr_init(br, sb, br->br_perm); + if (unlikely(rerr)) { + AuIOErr("nested error %d (%d)\n", + rerr, err); + br->br_perm = mod->perm; + } + } + } + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + err = au_wbr_init(br, sb, mod->perm); + if (unlikely(err)) { + au_kfree_rcu(br->br_wbr); + br->br_wbr = NULL; + } + } + } + if (unlikely(err)) + goto out_bf; + + if (au_br_fhsm(br->br_perm)) { + if (!au_br_fhsm(mod->perm)) { + /* fhsm --> non-fhsm */ + au_br_fhsm_fin(br->br_fhsm); + au_kfree_rcu(br->br_fhsm); + br->br_fhsm = NULL; + } + } else if (au_br_fhsm(mod->perm)) + /* non-fhsm --> fhsm */ + br->br_fhsm = bf; + + *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); + br->br_perm = mod->perm; + goto out; /* success */ + +out_bf: + au_kfree_try_rcu(bf); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs) +{ + int err; + struct kstatfs kstfs; + + err = vfs_statfs(&br->br_path, &kstfs); + if (!err) { + stfs->f_blocks = kstfs.f_blocks; + stfs->f_bavail = kstfs.f_bavail; + stfs->f_files = kstfs.f_files; + stfs->f_ffree = kstfs.f_ffree; + } + + return err; +} --- linux-5.8.0.orig/fs/aufs/branch.h +++ linux-5.8.0/fs/aufs/branch.h @@ -0,0 +1,366 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch filesystems and xino for them + */ + +#ifndef __AUFS_BRANCH_H__ +#define __AUFS_BRANCH_H__ + +#ifdef __KERNEL__ + +#include +#include "dirren.h" +#include "dynop.h" +#include "lcnt.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino { + struct file **xi_file; + unsigned int xi_nfile; + + struct { + spinlock_t spin; + ino_t *array; + int total; + /* reserved for future use */ + /* unsigned long *bitmap; */ + wait_queue_head_t wqh; + } xi_nondir; + + struct mutex xi_mtx; /* protects xi_file array */ + struct hlist_bl_head xi_writing; + + atomic_t xi_truncating; + + struct kref xi_kref; +}; + +/* File-based Hierarchical Storage Management */ +struct au_br_fhsm { +#ifdef CONFIG_AUFS_FHSM + struct mutex bf_lock; + unsigned long bf_jiffy; + struct aufs_stfs bf_stfs; + int bf_readable; +#endif +}; + +/* members for writable branch only */ +enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; +struct au_wbr { + struct au_rwsem wbr_wh_rwsem; + struct dentry *wbr_wh[AuBrWh_Last]; + atomic_t wbr_wh_running; +#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ +#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ +#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ + + /* mfs mode */ + unsigned long long wbr_bytes; +}; + +/* ext2 has 3 types of operations at least, ext3 has 4 */ +#define AuBrDynOp (AuDyLast * 4) + +#ifdef CONFIG_AUFS_HFSNOTIFY +/* support for asynchronous destruction */ +struct au_br_hfsnotify { + struct fsnotify_group *hfsn_group; +}; +#endif + +/* sysfs entries */ +struct au_brsysfs { + char name[16]; + struct attribute attr; +}; + +enum { + AuBrSysfs_BR, + AuBrSysfs_BRID, + AuBrSysfs_Last +}; + +/* protected by superblock rwsem */ +struct au_branch { + struct au_xino *br_xino; + + aufs_bindex_t br_id; + + int br_perm; + struct path br_path; + spinlock_t br_dykey_lock; + struct au_dykey *br_dykey[AuBrDynOp]; + au_lcnt_t br_nfiles; /* opened files */ + au_lcnt_t br_count; /* in-use for other */ + + struct au_wbr *br_wbr; + struct au_br_fhsm *br_fhsm; + +#ifdef CONFIG_AUFS_HFSNOTIFY + struct au_br_hfsnotify *br_hfsn; +#endif + +#ifdef CONFIG_SYSFS + /* entries under sysfs per mount-point */ + struct au_brsysfs br_sysfs[AuBrSysfs_Last]; +#endif + +#ifdef CONFIG_DEBUG_FS + struct dentry *br_dbgaufs; /* xino */ +#endif + + struct au_dr_br br_dirren; +}; + +/* ---------------------------------------------------------------------- */ + +static inline struct vfsmount *au_br_mnt(struct au_branch *br) +{ + return br->br_path.mnt; +} + +static inline struct dentry *au_br_dentry(struct au_branch *br) +{ + return br->br_path.dentry; +} + +static inline struct super_block *au_br_sb(struct au_branch *br) +{ + return au_br_mnt(br)->mnt_sb; +} + +static inline int au_br_rdonly(struct au_branch *br) +{ + return (sb_rdonly(au_br_sb(br)) + || !au_br_writable(br->br_perm)) + ? -EROFS : 0; +} + +static inline int au_br_hnotifyable(int brperm __maybe_unused) +{ +#ifdef CONFIG_AUFS_HNOTIFY + return !(brperm & AuBrPerm_RR); +#else + return 0; +#endif +} + +static inline int au_br_test_oflag(int oflag, struct au_branch *br) +{ + int err, exec_flag; + + err = 0; + exec_flag = oflag & __FMODE_EXEC; + if (unlikely(exec_flag && path_noexec(&br->br_path))) + err = -EACCES; + + return err; +} + +static inline void au_xino_get(struct au_branch *br) +{ + struct au_xino *xi; + + xi = br->br_xino; + if (xi) + kref_get(&xi->xi_kref); +} + +static inline int au_xino_count(struct au_branch *br) +{ + int v; + struct au_xino *xi; + + v = 0; + xi = br->br_xino; + if (xi) + v = kref_read(&xi->xi_kref); + + return v; +} + +/* ---------------------------------------------------------------------- */ + +/* branch.c */ +struct au_sbinfo; +void au_br_free(struct au_sbinfo *sinfo); +int au_br_index(struct super_block *sb, aufs_bindex_t br_id); +struct au_opt_add; +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); +struct au_opt_del; +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); +long au_ibusy_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); +#endif +struct au_opt_mod; +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh); +struct aufs_stfs; +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs); + +/* xino.c */ +static const loff_t au_loff_max = LLONG_MAX; + +aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry); +struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, + int wbrtop); +struct file *au_xino_create2(struct super_block *sb, struct path *base, + struct file *copy_src); +struct au_xi_new { + struct au_xino *xi; /* switch between xino and xigen */ + int idx; + struct path *base; + struct file *copy_src; +}; +struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew); + +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +ssize_t xino_fread(vfs_readf_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos); + +int au_xib_trunc(struct super_block *sb); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin); + +struct au_xino *au_xino_alloc(unsigned int nfile); +int au_xino_put(struct au_branch *br); +struct file *au_xino_file1(struct au_xino *xi); + +struct au_opt_xino; +void au_xino_clr(struct super_block *sb); +int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount); +struct file *au_xino_def(struct super_block *sb); +int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct path *base); + +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); + +void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, int idx); +int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + int *idx); + +int au_xino_path(struct seq_file *seq, struct file *file); + +/* ---------------------------------------------------------------------- */ + +/* @idx is signed to accept -1 meaning the first file */ +static inline struct file *au_xino_file(struct au_xino *xi, int idx) +{ + struct file *file; + + file = NULL; + if (!xi) + goto out; + + if (idx >= 0) { + if (idx < xi->xi_nfile) + file = xi->xi_file[idx]; + } else + file = au_xino_file1(xi); + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* Superblock to branch */ +static inline +aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_id; +} + +static inline +struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_mnt(au_sbr(sb, bindex)); +} + +static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_sb(au_sbr(sb, bindex)); +} + +static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_perm; +} + +static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_whable(au_sbr_perm(sb, bindex)); +} + +/* ---------------------------------------------------------------------- */ + +#define wbr_wh_read_lock(wbr) au_rw_read_lock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_lock(wbr) au_rw_write_lock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_read_trylock(wbr) au_rw_read_trylock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_trylock(wbr) au_rw_write_trylock(&(wbr)->wbr_wh_rwsem) +/* +#define wbr_wh_read_trylock_nested(wbr) \ + au_rw_read_trylock_nested(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_trylock_nested(wbr) \ + au_rw_write_trylock_nested(&(wbr)->wbr_wh_rwsem) +*/ + +#define wbr_wh_read_unlock(wbr) au_rw_read_unlock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_unlock(wbr) au_rw_write_unlock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_downgrade_lock(wbr) au_rw_dgrade_lock(&(wbr)->wbr_wh_rwsem) + +#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&(wbr)->wbr_wh_rwsem) +#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&(wbr)->wbr_wh_rwsem) +#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&(wbr)->wbr_wh_rwsem) + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_FHSM +static inline void au_br_fhsm_init(struct au_br_fhsm *brfhsm) +{ + mutex_init(&brfhsm->bf_lock); + brfhsm->bf_jiffy = 0; + brfhsm->bf_readable = 0; +} + +static inline void au_br_fhsm_fin(struct au_br_fhsm *brfhsm) +{ + mutex_destroy(&brfhsm->bf_lock); +} +#else +AuStubVoid(au_br_fhsm_init, struct au_br_fhsm *brfhsm) +AuStubVoid(au_br_fhsm_fin, struct au_br_fhsm *brfhsm) +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ --- linux-5.8.0.orig/fs/aufs/conf.mk +++ linux-5.8.0/fs/aufs/conf.mk @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: GPL-2.0 + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} + +define AuConf +ifdef ${1} +AuConfStr += ${1}=${${1}} +endif +endef + +AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ + SBILIST \ + HNOTIFY HFSNOTIFY \ + EXPORT INO_T_64 \ + XATTR \ + FHSM \ + RDU \ + DIRREN \ + SHWH \ + BR_RAMFS \ + BR_FUSE POLL \ + BR_HFSPLUS \ + BDEV_LOOP \ + DEBUG MAGIC_SYSRQ +$(foreach i, ${AuConfAll}, \ + $(eval $(call AuConf,CONFIG_AUFS_${i}))) + +AuConfName = ${obj}/conf.str +${AuConfName}.tmp: FORCE + @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ +${AuConfName}: ${AuConfName}.tmp + @diff -q $< $@ > /dev/null 2>&1 || { \ + echo ' GEN ' $@; \ + cp -p $< $@; \ + } +FORCE: +clean-files += ${AuConfName} ${AuConfName}.tmp +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk --- linux-5.8.0.orig/fs/aufs/cpup.c +++ linux-5.8.0/fs/aufs/cpup.c @@ -0,0 +1,1458 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up functions, see wbr_policy.c for copy-down + */ + +#include +#include +#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags) +{ + const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE + | S_NOATIME | S_NOCMTIME | S_AUTOMOUNT; + + BUILD_BUG_ON(sizeof(iflags) != sizeof(dst->i_flags)); + + dst->i_flags |= iflags & ~mask; + if (au_test_fs_notime(dst->i_sb)) + dst->i_flags |= S_NOATIME | S_NOCMTIME; +} + +void au_cpup_attr_timesizes(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + fsstack_copy_attr_times(inode, h_inode); + fsstack_copy_inode_size(inode, h_inode); +} + +void au_cpup_attr_nlink(struct inode *inode, int force) +{ + struct inode *h_inode; + struct super_block *sb; + aufs_bindex_t bindex, bbot; + + sb = inode->i_sb; + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (!force + && !S_ISDIR(h_inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode)) + return; + + /* + * 0 can happen in revalidating. + * h_inode->i_mutex may not be held here, but it is harmless since once + * i_nlink reaches 0, it will never become positive except O_TMPFILE + * case. + * todo: O_TMPFILE+linkat(AT_SYMLINK_FOLLOW) bypassing aufs may cause + * the incorrect link count. + */ + set_nlink(inode, h_inode->i_nlink); + + /* + * fewer nlink makes find(1) noisy, but larger nlink doesn't. + * it may includes whplink directory. + */ + if (S_ISDIR(h_inode->i_mode)) { + bbot = au_ibbot(inode); + for (bindex++; bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) + au_add_nlink(inode, h_inode); + } + } +} + +void au_cpup_attr_changeable(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + inode->i_mode = h_inode->i_mode; + inode->i_uid = h_inode->i_uid; + inode->i_gid = h_inode->i_gid; + au_cpup_attr_timesizes(inode); + au_cpup_attr_flags(inode, h_inode->i_flags); +} + +void au_cpup_igen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + iinfo->ii_higen = h_inode->i_generation; + iinfo->ii_hsb1 = h_inode->i_sb; +} + +void au_cpup_attr_all(struct inode *inode, int force) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + au_cpup_attr_changeable(inode); + if (inode->i_nlink > 0) + au_cpup_attr_nlink(inode, force); + inode->i_rdev = h_inode->i_rdev; + inode->i_blkbits = h_inode->i_blkbits; + au_cpup_igen(inode, h_inode); +} + +/* ---------------------------------------------------------------------- */ + +/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ + +/* keep the timestamps of the parent dir when cpup */ +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path) +{ + struct inode *h_inode; + + dt->dt_dentry = dentry; + dt->dt_h_path = *h_path; + h_inode = d_inode(h_path->dentry); + dt->dt_atime = h_inode->i_atime; + dt->dt_mtime = h_inode->i_mtime; + /* smp_mb(); */ +} + +void au_dtime_revert(struct au_dtime *dt) +{ + struct iattr attr; + int err; + + attr.ia_atime = dt->dt_atime; + attr.ia_mtime = dt->dt_mtime; + attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET + | ATTR_ATIME | ATTR_ATIME_SET; + + /* no delegation since this is a directory */ + err = vfsub_notify_change(&dt->dt_h_path, &attr, /*delegated*/NULL); + if (unlikely(err)) + pr_warn("restoring timestamps failed(%d). ignored\n", err); +} + +/* ---------------------------------------------------------------------- */ + +/* internal use only */ +struct au_cpup_reg_attr { + int valid; + struct kstat st; + unsigned int iflags; /* inode->i_flags */ +}; + +static noinline_for_stack +int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, sbits, icex; + unsigned int mnt_flags; + unsigned char verbose; + struct iattr ia; + struct path h_path; + struct inode *h_isrc, *h_idst; + struct kstat *h_st; + struct au_branch *br; + + h_path.dentry = au_h_dptr(dst, bindex); + h_idst = d_inode(h_path.dentry); + br = au_sbr(dst->d_sb, bindex); + h_path.mnt = au_br_mnt(br); + h_isrc = d_inode(h_src); + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; + if (h_src_attr && h_src_attr->valid) { + h_st = &h_src_attr->st; + ia.ia_uid = h_st->uid; + ia.ia_gid = h_st->gid; + ia.ia_atime = h_st->atime; + ia.ia_mtime = h_st->mtime; + if (h_idst->i_mode != h_st->mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_st->mode; + } + sbits = !!(h_st->mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_src_attr->iflags); + } else { + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + ia.ia_atime = h_isrc->i_atime; + ia.ia_mtime = h_isrc->i_mtime; + if (h_idst->i_mode != h_isrc->i_mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + } + sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_isrc->i_flags); + } + /* no delegation since it is just created */ + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + } + + icex = br->br_perm & AuBrAttr_ICEX; + if (!err) { + mnt_flags = au_mntflags(dst->d_sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + err = au_cpup_xattr(h_path.dentry, h_src, icex, verbose); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, + char *buf, unsigned long blksize) +{ + int err; + size_t sz, rbytes, wbytes; + unsigned char all_zero; + char *p, *zp; + struct inode *h_inode; + /* reduce stack usage */ + struct iattr *ia; + + zp = page_address(ZERO_PAGE(0)); + if (unlikely(!zp)) + return -ENOMEM; /* possible? */ + + err = 0; + all_zero = 0; + while (len) { + AuDbg("len %lld\n", len); + sz = blksize; + if (len < blksize) + sz = len; + + rbytes = 0; + /* todo: signal_pending? */ + while (!rbytes || err == -EAGAIN || err == -EINTR) { + rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); + err = rbytes; + } + if (unlikely(err < 0)) + break; + + all_zero = 0; + if (len >= rbytes && rbytes == blksize) + all_zero = !memcmp(buf, zp, rbytes); + if (!all_zero) { + wbytes = rbytes; + p = buf; + while (wbytes) { + size_t b; + + b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); + err = b; + /* todo: signal_pending? */ + if (unlikely(err == -EAGAIN || err == -EINTR)) + continue; + if (unlikely(err < 0)) + break; + wbytes -= b; + p += b; + } + if (unlikely(err < 0)) + break; + } else { + loff_t res; + + AuLabel(hole); + res = vfsub_llseek(dst, rbytes, SEEK_CUR); + err = res; + if (unlikely(res < 0)) + break; + } + len -= rbytes; + err = 0; + } + + /* the last block may be a hole */ + if (!err && all_zero) { + AuLabel(last hole); + + err = 1; + if (au_test_nfs(dst->f_path.dentry->d_sb)) { + /* nfs requires this step to make last hole */ + /* is this only nfs? */ + do { + /* todo: signal_pending? */ + err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); + } while (err == -EAGAIN || err == -EINTR); + if (err == 1) + dst->f_pos--; + } + + if (err == 1) { + ia = (void *)buf; + ia->ia_size = dst->f_pos; + ia->ia_valid = ATTR_SIZE | ATTR_FILE; + ia->ia_file = dst; + h_inode = file_inode(dst); + inode_lock_nested(h_inode, AuLsc_I_CHILD2); + /* no delegation since it is just created */ + err = vfsub_notify_change(&dst->f_path, ia, + /*delegated*/NULL); + inode_unlock(h_inode); + } + } + + return err; +} + +int au_copy_file(struct file *dst, struct file *src, loff_t len) +{ + int err; + unsigned long blksize; + unsigned char do_kfree; + char *buf; + struct super_block *h_sb; + + err = -ENOMEM; + h_sb = file_inode(dst)->i_sb; + blksize = h_sb->s_blocksize; + if (!blksize || PAGE_SIZE < blksize) + blksize = PAGE_SIZE; + AuDbg("blksize %lu\n", blksize); + do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); + if (do_kfree) + buf = kmalloc(blksize, GFP_NOFS); + else + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + if (len > (1 << 22)) + AuDbg("copying a large file %lld\n", (long long)len); + + src->f_pos = 0; + dst->f_pos = 0; + err = au_do_copy_file(dst, src, len, buf, blksize); + if (do_kfree) { + AuDebugOn(!au_kfree_do_sz_test(blksize)); + au_kfree_do_rcu(buf); + } else + free_page((unsigned long)buf); + +out: + return err; +} + +static int au_do_copy(struct file *dst, struct file *src, loff_t len) +{ + int err; + struct super_block *h_src_sb; + struct inode *h_src_inode; + + h_src_inode = file_inode(src); + h_src_sb = h_src_inode->i_sb; + + /* XFS acquires inode_lock */ + if (!au_test_xfs(h_src_sb)) + err = au_copy_file(dst, src, len); + else { + inode_unlock_shared(h_src_inode); + err = au_copy_file(dst, src, len); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } + + return err; +} + +static int au_clone_or_copy(struct file *dst, struct file *src, loff_t len) +{ + int err; + loff_t lo; + struct super_block *h_src_sb; + struct inode *h_src_inode; + + h_src_inode = file_inode(src); + h_src_sb = h_src_inode->i_sb; + if (h_src_sb != file_inode(dst)->i_sb + || !dst->f_op->remap_file_range) { + err = au_do_copy(dst, src, len); + goto out; + } + + if (!au_test_nfs(h_src_sb)) { + inode_unlock_shared(h_src_inode); + lo = vfsub_clone_file_range(src, dst, len); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } else + lo = vfsub_clone_file_range(src, dst, len); + if (lo == len) { + err = 0; + goto out; /* success */ + } else if (lo >= 0) + /* todo: possible? */ + /* paritially succeeded */ + AuDbg("lo %lld, len %lld. Retrying.\n", lo, len); + else if (lo != -EOPNOTSUPP) { + /* older XFS has a condition in cloning */ + err = lo; + goto out; + } + + /* the backend fs on NFS may not support cloning */ + err = au_do_copy(dst, src, len); + +out: + AuTraceErr(err); + return err; +} + +/* + * to support a sparse file which is opened with O_APPEND, + * we need to close the file. + */ +static int au_cp_regular(struct au_cp_generic *cpg) +{ + int err, i; + enum { SRC, DST }; + struct { + aufs_bindex_t bindex; + unsigned int flags; + struct dentry *dentry; + int force_wr; + struct file *file; + } *f, file[] = { + { + .bindex = cpg->bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + }, + { + .bindex = cpg->bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .force_wr = !!au_ftest_cpup(cpg->flags, RWDST), + } + }; + struct au_branch *br; + struct super_block *sb, *h_src_sb; + struct inode *h_src_inode; + struct task_struct *tsk = current; + + /* bsrc branch can be ro/rw. */ + sb = cpg->dentry->d_sb; + f = file; + for (i = 0; i < 2; i++, f++) { + f->dentry = au_h_dptr(cpg->dentry, f->bindex); + f->file = au_h_open(cpg->dentry, f->bindex, f->flags, + /*file*/NULL, f->force_wr); + if (IS_ERR(f->file)) { + err = PTR_ERR(f->file); + if (i == SRC) + goto out; + else + goto out_src; + } + } + + /* try stopping to update while we copyup */ + h_src_inode = d_inode(file[SRC].dentry); + h_src_sb = h_src_inode->i_sb; + if (!au_test_nfs(h_src_sb)) + IMustLock(h_src_inode); + err = au_clone_or_copy(file[DST].file, file[SRC].file, cpg->len); + + /* i wonder if we had O_NO_DELAY_FPUT flag */ + if (tsk->flags & PF_KTHREAD) + __fput_sync(file[DST].file); + else { + /* it happened actually */ + fput(file[DST].file); + /* + * too bad. + * we have to call both since we don't know which place the file + * was added to. + */ + task_work_run(); + flush_delayed_fput(); + } + br = au_sbr(sb, file[DST].bindex); + au_lcnt_dec(&br->br_nfiles); + +out_src: + fput(file[SRC].file); + br = au_sbr(sb, file[SRC].bindex); + au_lcnt_dec(&br->br_nfiles); +out: + return err; +} + +static int au_do_cpup_regular(struct au_cp_generic *cpg, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, rerr; + loff_t l; + struct path h_path; + struct inode *h_src_inode, *h_dst_inode; + + err = 0; + h_src_inode = au_h_iptr(d_inode(cpg->dentry), cpg->bsrc); + l = i_size_read(h_src_inode); + if (cpg->len == -1 || l < cpg->len) + cpg->len = l; + if (cpg->len) { + /* try stopping to update while we are referencing */ + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + au_pin_hdir_unlock(cpg->pin); + + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + h_path.mnt = au_sbr_mnt(cpg->dentry->d_sb, cpg->bsrc); + h_src_attr->iflags = h_src_inode->i_flags; + if (!au_test_nfs(h_src_inode->i_sb)) + err = vfsub_getattr(&h_path, &h_src_attr->st); + else { + inode_unlock_shared(h_src_inode); + err = vfsub_getattr(&h_path, &h_src_attr->st); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } + if (unlikely(err)) { + inode_unlock_shared(h_src_inode); + goto out; + } + h_src_attr->valid = 1; + if (!au_test_nfs(h_src_inode->i_sb)) { + err = au_cp_regular(cpg); + inode_unlock_shared(h_src_inode); + } else { + inode_unlock_shared(h_src_inode); + err = au_cp_regular(cpg); + } + rerr = au_pin_hdir_relock(cpg->pin); + if (!err && rerr) + err = rerr; + } + if (!err && (h_src_inode->i_state & I_LINKABLE)) { + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bdst); + h_dst_inode = d_inode(h_path.dentry); + spin_lock(&h_dst_inode->i_lock); + h_dst_inode->i_state |= I_LINKABLE; + spin_unlock(&h_dst_inode->i_lock); + } + +out: + return err; +} + +static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, + struct inode *h_dir) +{ + int err, symlen; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } sym; + + err = -ENOMEM; + sym.k = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!sym.k)) + goto out; + + /* unnecessary to support mmap_sem since symlink is not mmap-able */ + old_fs = get_fs(); + set_fs(KERNEL_DS); + symlen = vfs_readlink(h_src, sym.u, PATH_MAX); + err = symlen; + set_fs(old_fs); + + if (symlen > 0) { + sym.k[symlen] = 0; + err = vfsub_symlink(h_dir, h_path, sym.k); + } + free_page((unsigned long)sym.k); + +out: + return err; +} + +/* + * regardless 'acl' option, reset all ACL. + * All ACL will be copied up later from the original entry on the lower branch. + */ +static int au_reset_acl(struct inode *h_dir, struct path *h_path, umode_t mode) +{ + int err; + struct dentry *h_dentry; + struct inode *h_inode; + + h_dentry = h_path->dentry; + h_inode = d_inode(h_dentry); + /* forget_all_cached_acls(h_inode)); */ + err = vfsub_removexattr(h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (!err) + err = vfsub_acl_chmod(h_inode, mode); + + AuTraceErr(err); + return err; +} + +static int au_do_cpup_dir(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct inode *h_dir, struct path *h_path) +{ + int err; + struct inode *dir, *inode; + + err = vfsub_removexattr(h_path->dentry, XATTR_NAME_POSIX_ACL_DEFAULT); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (unlikely(err)) + goto out; + + /* + * strange behaviour from the users view, + * particularly setattr case + */ + dir = d_inode(dst_parent); + if (au_ibtop(dir) == cpg->bdst) + au_cpup_attr_nlink(dir, /*force*/1); + inode = d_inode(cpg->dentry); + au_cpup_attr_nlink(inode, /*force*/1); + +out: + return err; +} + +static noinline_for_stack +int cpup_entry(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct au_cpup_reg_attr *h_src_attr) +{ + int err; + umode_t mode; + unsigned int mnt_flags; + unsigned char isdir, isreg, force; + const unsigned char do_dt = !!au_ftest_cpup(cpg->flags, DTIME); + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *h_inode, *h_dir; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + h_inode = d_inode(h_src); + AuDebugOn(h_inode != au_h_iptr(d_inode(cpg->dentry), cpg->bsrc)); + + /* try stopping to be referenced while we are creating */ + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + if (au_ftest_cpup(cpg->flags, RENAME)) + AuDebugOn(strncmp(h_dst->d_name.name, AUFS_WH_PFX, + AUFS_WH_PFX_LEN)); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDebugOn(h_parent != h_dst->d_parent); + + sb = cpg->dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, cpg->bdst); + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + + isreg = 0; + isdir = 0; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + isreg = 1; + err = vfsub_create(h_dir, &h_path, 0600, /*want_excl*/true); + if (!err) + err = au_do_cpup_regular(cpg, h_src_attr); + break; + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); + if (!err) + err = au_do_cpup_dir(cpg, dst_parent, h_dir, &h_path); + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); + break; + case S_IFCHR: + case S_IFBLK: + AuDebugOn(!capable(CAP_MKNOD)); + /*FALLTHROUGH*/ + case S_IFIFO: + case S_IFSOCK: + err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } + if (!err) + err = au_reset_acl(h_dir, &h_path, mode); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) + && !isdir + && au_opt_test(mnt_flags, XINO) + && (h_inode->i_nlink == 1 + || (h_inode->i_state & I_LINKABLE)) + /* todo: unnecessary? */ + /* && d_inode(cpg->dentry)->i_nlink == 1 */ + && cpg->bdst < cpg->bsrc + && !au_ftest_cpup(cpg->flags, KEEPLINO)) + au_xino_write(sb, cpg->bsrc, h_inode->i_ino, /*ino*/0); + /* ignore this error */ + + if (!err) { + force = 0; + if (isreg) { + force = !!cpg->len; + if (cpg->len == -1) + force = !!i_size_read(h_inode); + } + au_fhsm_wrote(sb, cpg->bdst, force); + } + + if (do_dt) + au_dtime_revert(&dt); + return err; +} + +static int au_do_ren_after_cpup(struct au_cp_generic *cpg, struct path *h_path) +{ + int err; + struct dentry *dentry, *h_dentry, *h_parent, *parent; + struct inode *h_dir; + aufs_bindex_t bdst; + + dentry = cpg->dentry; + bdst = cpg->bdst; + h_dentry = au_h_dptr(dentry, bdst); + if (!au_ftest_cpup(cpg->flags, OVERWRITE)) { + dget(h_dentry); + au_set_h_dptr(dentry, bdst, NULL); + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (!err) + h_path->dentry = dget(au_h_dptr(dentry, bdst)); + au_set_h_dptr(dentry, bdst, h_dentry); + } else { + err = 0; + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + dput(parent); + h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent); + if (IS_ERR(h_path->dentry)) + err = PTR_ERR(h_path->dentry); + } + if (unlikely(err)) + goto out; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDbg("%pd %pd\n", h_dentry, h_path->dentry); + /* no delegation since it is just created */ + err = vfsub_rename(h_dir, h_dentry, h_dir, h_path, /*delegated*/NULL, + /*flags*/0); + dput(h_path->dentry); + +out: + return err; +} + +/* + * copyup the @dentry from @bsrc to @bdst. + * the caller must set the both of lower dentries. + * @len is for truncating when it is -1 copyup the entire file. + * in link/rename cases, @dst_parent may be different from the real one. + * basic->bsrc can be larger than basic->bdst. + * aufs doesn't touch the credential so + * security_inode_copy_up{,_xattr}() are unnecessary. + */ +static int au_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibtop; + unsigned char isdir, plink; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode; + struct super_block *sb; + struct au_branch *br; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct path h_path; + struct au_cpup_reg_attr h_src_attr; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->h_src_attr.valid = 0; + + sb = cpg->dentry->d_sb; + br = au_sbr(sb, cpg->bdst); + a->h_path.mnt = au_br_mnt(br); + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + inode = d_inode(cpg->dentry); + + if (!dst_parent) + dst_parent = dget_parent(cpg->dentry); + else + dget(dst_parent); + + plink = !!au_opt_test(au_mntflags(sb), PLINK); + dst_inode = au_h_iptr(inode, cpg->bdst); + if (dst_inode) { + if (unlikely(!plink)) { + err = -EIO; + AuIOErr("hi%lu(i%lu) exists on b%d " + "but plink is disabled\n", + dst_inode->i_ino, inode->i_ino, cpg->bdst); + goto out_parent; + } + + if (dst_inode->i_nlink) { + const int do_dt = au_ftest_cpup(cpg->flags, DTIME); + + h_src = au_plink_lkup(inode, cpg->bdst); + err = PTR_ERR(h_src); + if (IS_ERR(h_src)) + goto out_parent; + if (unlikely(d_is_negative(h_src))) { + err = -EIO; + AuIOErr("i%lu exists on b%d " + "but not pseudo-linked\n", + inode->i_ino, cpg->bdst); + dput(h_src); + goto out_parent; + } + + if (do_dt) { + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + } + + a->h_path.dentry = h_dst; + delegated = NULL; + err = vfsub_link(h_src, h_dir, &a->h_path, &delegated); + if (!err && au_ftest_cpup(cpg->flags, RENAME)) + err = au_do_ren_after_cpup(cpg, &a->h_path); + if (do_dt) + au_dtime_revert(&a->dt); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src); + goto out_parent; + } else + /* todo: cpup_wh_file? */ + /* udba work */ + au_update_ibrange(inode, /*do_put_zero*/1); + } + + isdir = S_ISDIR(inode->i_mode); + old_ibtop = au_ibtop(inode); + err = cpup_entry(cpg, dst_parent, &a->h_src_attr); + if (unlikely(err)) + goto out_rev; + dst_inode = d_inode(h_dst); + inode_lock_nested(dst_inode, AuLsc_I_CHILD2); + /* todo: necessary? */ + /* au_pin_hdir_unlock(cpg->pin); */ + + err = cpup_iattr(cpg->dentry, cpg->bdst, h_src, &a->h_src_attr); + if (unlikely(err)) { + /* todo: necessary? */ + /* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */ + inode_unlock(dst_inode); + goto out_rev; + } + + if (cpg->bdst < old_ibtop) { + if (S_ISREG(inode->i_mode)) { + err = au_dy_iaop(inode, cpg->bdst, dst_inode); + if (unlikely(err)) { + /* ignore an error */ + /* au_pin_hdir_relock(cpg->pin); */ + inode_unlock(dst_inode); + goto out_rev; + } + } + au_set_ibtop(inode, cpg->bdst); + } else + au_set_ibbot(inode, cpg->bdst); + au_set_h_iptr(inode, cpg->bdst, au_igrab(dst_inode), + au_hi_flags(inode, isdir)); + + /* todo: necessary? */ + /* err = au_pin_hdir_relock(cpg->pin); */ + inode_unlock(dst_inode); + if (unlikely(err)) + goto out_rev; + + src_inode = d_inode(h_src); + if (!isdir + && (src_inode->i_nlink > 1 + || src_inode->i_state & I_LINKABLE) + && plink) + au_plink_append(inode, cpg->bdst, h_dst); + + if (au_ftest_cpup(cpg->flags, RENAME)) { + a->h_path.dentry = h_dst; + err = au_do_ren_after_cpup(cpg, &a->h_path); + } + if (!err) + goto out_parent; /* success */ + + /* revert */ +out_rev: + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + a->h_path.dentry = h_dst; + rerr = 0; + if (d_is_positive(h_dst)) { + if (!isdir) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, + /*delegated*/NULL, /*force*/0); + } else + rerr = vfsub_rmdir(h_dir, &a->h_path); + } + au_dtime_revert(&a->dt); + if (rerr) { + AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); + err = -EIO; + } +out_parent: + dput(dst_parent); + au_kfree_rcu(a); +out: + return err; +} + +#if 0 /* reserved */ +struct au_cpup_single_args { + int *errp; + struct au_cp_generic *cpg; + struct dentry *dst_parent; +}; + +static void au_call_cpup_single(void *args) +{ + struct au_cpup_single_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_single(a->cpg, a->dst_parent); + au_pin_hdir_release(a->cpg->pin); +} +#endif + +/* + * prevent SIGXFSZ in copy-up. + * testing CAP_MKNOD is for generic fs, + * but CAP_FSETID is for xfs only, currently. + */ +static int au_cpup_sio_test(struct au_pin *pin, umode_t mode) +{ + int do_sio; + struct super_block *sb; + struct inode *h_dir; + + do_sio = 0; + sb = au_pinned_parent(pin)->d_sb; + if (!au_wkq_test() + && (!au_sbi(sb)->si_plink_maint_pid + || au_plink_maint(sb, AuLock_NOPLM))) { + switch (mode & S_IFMT) { + case S_IFREG: + /* no condition about RLIMIT_FSIZE and the file size */ + do_sio = 1; + break; + case S_IFCHR: + case S_IFBLK: + do_sio = !capable(CAP_MKNOD); + break; + } + if (!do_sio) + do_sio = ((mode & (S_ISUID | S_ISGID)) + && !capable(CAP_FSETID)); + /* this workaround may be removed in the future */ + if (!do_sio) { + h_dir = au_pinned_h_dir(pin); + do_sio = h_dir->i_mode & S_ISVTX; + } + } + + return do_sio; +} + +#if 0 /* reserved */ +int au_sio_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, wkq_err; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + if (!au_cpup_sio_test(pin, d_inode(h_dentry)->i_mode)) + err = au_cpup_single(cpg, dst_parent); + else { + struct au_cpup_single_args args = { + .errp = &err, + .cpg = cpg, + .dst_parent = dst_parent + }; + wkq_err = au_wkq_wait(au_call_cpup_single, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} +#endif + +/* + * copyup the @dentry from the first active lower branch to @bdst, + * using au_cpup_single(). + */ +static int au_cpup_simple(struct au_cp_generic *cpg) +{ + int err; + unsigned int flags_orig; + struct dentry *dentry; + + AuDebugOn(cpg->bsrc < 0); + + dentry = cpg->dentry; + DiMustWriteLock(dentry); + + err = au_lkup_neg(dentry, cpg->bdst, /*wh*/1); + if (!err) { + flags_orig = cpg->flags; + au_fset_cpup(cpg->flags, RENAME); + err = au_cpup_single(cpg, NULL); + cpg->flags = flags_orig; + if (!err) + return 0; /* success */ + + /* revert */ + au_set_h_dptr(dentry, cpg->bdst, NULL); + au_set_dbtop(dentry, cpg->bsrc); + } + + return err; +} + +struct au_cpup_simple_args { + int *errp; + struct au_cp_generic *cpg; +}; + +static void au_call_cpup_simple(void *args) +{ + struct au_cpup_simple_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_simple(a->cpg); + au_pin_hdir_release(a->cpg->pin); +} + +static int au_do_sio_cpup_simple(struct au_cp_generic *cpg) +{ + int err, wkq_err; + struct dentry *dentry, *parent; + struct file *h_file; + struct inode *h_dir; + + dentry = cpg->dentry; + h_file = NULL; + if (au_ftest_cpup(cpg->flags, HOPEN)) { + AuDebugOn(cpg->bsrc < 0); + h_file = au_h_open_pre(dentry, cpg->bsrc, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + } + + parent = dget_parent(dentry); + h_dir = au_h_iptr(d_inode(parent), cpg->bdst); + if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_simple(cpg); + else { + struct au_cpup_simple_args args = { + .errp = &err, + .cpg = cpg + }; + wkq_err = au_wkq_wait(au_call_cpup_simple, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + dput(parent); + if (h_file) + au_h_open_post(dentry, cpg->bsrc, h_file); + +out: + return err; +} + +int au_sio_cpup_simple(struct au_cp_generic *cpg) +{ + aufs_bindex_t bsrc, bbot; + struct dentry *dentry, *h_dentry; + + if (cpg->bsrc < 0) { + dentry = cpg->dentry; + bbot = au_dbbot(dentry); + for (bsrc = cpg->bdst + 1; bsrc <= bbot; bsrc++) { + h_dentry = au_h_dptr(dentry, bsrc); + if (h_dentry) { + AuDebugOn(d_is_negative(h_dentry)); + break; + } + } + AuDebugOn(bsrc > bbot); + cpg->bsrc = bsrc; + } + AuDebugOn(cpg->bsrc <= cpg->bdst); + return au_do_sio_cpup_simple(cpg); +} + +int au_sio_cpdown_simple(struct au_cp_generic *cpg) +{ + AuDebugOn(cpg->bdst <= cpg->bsrc); + return au_do_sio_cpup_simple(cpg); +} + +/* ---------------------------------------------------------------------- */ + +/* + * copyup the deleted file for writing. + */ +static int au_do_cpup_wh(struct au_cp_generic *cpg, struct dentry *wh_dentry, + struct file *file) +{ + int err; + unsigned int flags_orig; + aufs_bindex_t bsrc_orig; + struct au_dinfo *dinfo; + struct { + struct au_hdentry *hd; + struct dentry *h_dentry; + } hdst, hsrc; + + dinfo = au_di(cpg->dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bsrc_orig = cpg->bsrc; + cpg->bsrc = dinfo->di_btop; + hdst.hd = au_hdentry(dinfo, cpg->bdst); + hdst.h_dentry = hdst.hd->hd_dentry; + hdst.hd->hd_dentry = wh_dentry; + dinfo->di_btop = cpg->bdst; + + hsrc.h_dentry = NULL; + if (file) { + hsrc.hd = au_hdentry(dinfo, cpg->bsrc); + hsrc.h_dentry = hsrc.hd->hd_dentry; + hsrc.hd->hd_dentry = au_hf_top(file)->f_path.dentry; + } + flags_orig = cpg->flags; + cpg->flags = !AuCpup_DTIME; + err = au_cpup_single(cpg, /*h_parent*/NULL); + cpg->flags = flags_orig; + if (file) { + if (!err) + err = au_reopen_nondir(file); + hsrc.hd->hd_dentry = hsrc.h_dentry; + } + hdst.hd->hd_dentry = hdst.h_dentry; + dinfo->di_btop = cpg->bsrc; + cpg->bsrc = bsrc_orig; + + return err; +} + +static int au_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err; + aufs_bindex_t bdst; + struct au_dtime dt; + struct dentry *dentry, *parent, *h_parent, *wh_dentry; + struct au_branch *br; + struct path h_path; + + dentry = cpg->dentry; + bdst = cpg->bdst; + br = au_sbr(dentry->d_sb, bdst); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + h_path.dentry = h_parent; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, parent, &h_path); + err = au_do_cpup_wh(cpg, wh_dentry, file); + if (unlikely(err)) + goto out_wh; + + dget(wh_dentry); + h_path.dentry = wh_dentry; + if (!d_is_dir(wh_dentry)) { + /* no delegation since it is just created */ + err = vfsub_unlink(d_inode(h_parent), &h_path, + /*delegated*/NULL, /*force*/0); + } else + err = vfsub_rmdir(d_inode(h_parent), &h_path); + if (unlikely(err)) { + AuIOErr("failed remove copied-up tmp file %pd(%d)\n", + wh_dentry, err); + err = -EIO; + } + au_dtime_revert(&dt); + au_set_hi_wh(d_inode(dentry), bdst, wh_dentry); + +out_wh: + dput(wh_dentry); +out: + dput(parent); + return err; +} + +struct au_cpup_wh_args { + int *errp; + struct au_cp_generic *cpg; + struct file *file; +}; + +static void au_call_cpup_wh(void *args) +{ + struct au_cpup_wh_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_wh(a->cpg, a->file); + au_pin_hdir_release(a->cpg->pin); +} + +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err, wkq_err; + aufs_bindex_t bdst; + struct dentry *dentry, *parent, *h_orph, *h_parent; + struct inode *dir, *h_dir, *h_tmpdir; + struct au_wbr *wbr; + struct au_pin wh_pin, *pin_orig; + + dentry = cpg->dentry; + bdst = cpg->bdst; + parent = dget_parent(dentry); + dir = d_inode(parent); + h_orph = NULL; + h_parent = NULL; + h_dir = au_igrab(au_h_iptr(dir, bdst)); + h_tmpdir = h_dir; + pin_orig = NULL; + if (!h_dir->i_nlink) { + wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; + h_orph = wbr->wbr_orph; + + h_parent = dget(au_h_dptr(parent, bdst)); + au_set_h_dptr(parent, bdst, dget(h_orph)); + h_tmpdir = d_inode(h_orph); + au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); + + inode_lock_nested(h_tmpdir, AuLsc_I_PARENT3); + /* todo: au_h_open_pre()? */ + + pin_orig = cpg->pin; + au_pin_init(&wh_pin, dentry, bdst, AuLsc_DI_PARENT, + AuLsc_I_PARENT3, cpg->pin->udba, AuPin_DI_LOCKED); + cpg->pin = &wh_pin; + } + + if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_wh(cpg, file); + else { + struct au_cpup_wh_args args = { + .errp = &err, + .cpg = cpg, + .file = file + }; + wkq_err = au_wkq_wait(au_call_cpup_wh, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + if (h_orph) { + inode_unlock(h_tmpdir); + /* todo: au_h_open_post()? */ + au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); + au_set_h_dptr(parent, bdst, h_parent); + AuDebugOn(!pin_orig); + cpg->pin = pin_orig; + } + iput(h_dir); + dput(parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generic routine for both of copy-up and copy-down. + */ +/* cf. revalidate function in file.c */ +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg) +{ + int err; + struct au_pin pin; + struct dentry *d, *parent, *h_parent, *real_parent, *h_dentry; + + err = 0; + parent = dget_parent(dentry); + if (IS_ROOT(parent)) + goto out; + + au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, + au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); + + /* do not use au_dpage */ + real_parent = parent; + while (1) { + dput(parent); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + if (h_parent) + goto out; /* success */ + + /* find top dir which is necessary to cpup */ + do { + d = parent; + dput(parent); + parent = dget_parent(d); + di_read_lock_parent3(parent, !AuLock_IR); + h_parent = au_h_dptr(parent, bdst); + di_read_unlock(parent, !AuLock_IR); + } while (!h_parent); + + if (d != real_parent) + di_write_lock_child3(d); + + /* somebody else might create while we were sleeping */ + h_dentry = au_h_dptr(d, bdst); + if (!h_dentry || d_is_negative(h_dentry)) { + if (h_dentry) + au_update_dbtop(d); + + au_pin_set_dentry(&pin, d); + err = au_do_pin(&pin); + if (!err) { + err = cp(d, bdst, &pin, h_parent, arg); + au_unpin(&pin); + } + } + + if (d != real_parent) + di_write_unlock(d); + if (unlikely(err)) + break; + } + +out: + dput(parent); + return err; +} + +static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent __maybe_unused, + void *arg __maybe_unused) +{ + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = bdst, + .bsrc = -1, + .len = 0, + .pin = pin, + .flags = AuCpup_DTIME + }; + return au_sio_cpup_simple(&cpg); +} + +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); +} + +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = d_inode(parent); + err = 0; + if (au_h_iptr(dir, bdst)) + goto out; + + di_read_unlock(parent, AuLock_IR); + di_write_lock_parent(parent); + /* someone else might change our inode while we were sleeping */ + if (!au_h_iptr(dir, bdst)) + err = au_cpup_dirs(dentry, bdst); + di_downgrade_lock(parent, AuLock_IR); + +out: + dput(parent); + return err; +} --- linux-5.8.0.orig/fs/aufs/cpup.h +++ linux-5.8.0/fs/aufs/cpup.h @@ -0,0 +1,100 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up/down functions + */ + +#ifndef __AUFS_CPUP_H__ +#define __AUFS_CPUP_H__ + +#ifdef __KERNEL__ + +#include + +struct inode; +struct file; +struct au_pin; + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags); +void au_cpup_attr_timesizes(struct inode *inode); +void au_cpup_attr_nlink(struct inode *inode, int force); +void au_cpup_attr_changeable(struct inode *inode); +void au_cpup_igen(struct inode *inode, struct inode *h_inode); +void au_cpup_attr_all(struct inode *inode, int force); + +/* ---------------------------------------------------------------------- */ + +struct au_cp_generic { + struct dentry *dentry; + aufs_bindex_t bdst, bsrc; + loff_t len; + struct au_pin *pin; + unsigned int flags; +}; + +/* cpup flags */ +#define AuCpup_DTIME 1 /* do dtime_store/revert */ +#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, + for link(2) */ +#define AuCpup_RENAME (1 << 2) /* rename after cpup */ +#define AuCpup_HOPEN (1 << 3) /* call h_open_pre/post() in + cpup */ +#define AuCpup_OVERWRITE (1 << 4) /* allow overwriting the + existing entry */ +#define AuCpup_RWDST (1 << 5) /* force write target even if + the branch is marked as RO */ + +#ifndef CONFIG_AUFS_BR_HFSPLUS +#undef AuCpup_HOPEN +#define AuCpup_HOPEN 0 +#endif + +#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) +#define au_fset_cpup(flags, name) \ + do { (flags) |= AuCpup_##name; } while (0) +#define au_fclr_cpup(flags, name) \ + do { (flags) &= ~AuCpup_##name; } while (0) + +int au_copy_file(struct file *dst, struct file *src, loff_t len); +int au_sio_cpup_simple(struct au_cp_generic *cpg); +int au_sio_cpdown_simple(struct au_cp_generic *cpg); +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file); + +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg); +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +/* keep timestamps when copyup */ +struct au_dtime { + struct dentry *dt_dentry; + struct path dt_h_path; + struct timespec64 dt_atime, dt_mtime; +}; +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path); +void au_dtime_revert(struct au_dtime *dt); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ --- linux-5.8.0.orig/fs/aufs/dbgaufs.c +++ linux-5.8.0/fs/aufs/dbgaufs.c @@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#include +#include "aufs.h" + +#ifndef CONFIG_SYSFS +#error DEBUG_FS depends upon SYSFS +#endif + +static struct dentry *dbgaufs; +static const mode_t dbgaufs_mode = 0444; + +/* 20 is max digits length of ulong 64 */ +struct dbgaufs_arg { + int n; + char a[20 * 4]; +}; + +/* + * common function for all XINO files + */ +static int dbgaufs_xi_release(struct inode *inode __maybe_unused, + struct file *file) +{ + void *p; + + p = file->private_data; + if (p) { + /* this is struct dbgaufs_arg */ + AuDebugOn(!au_kfree_sz_test(p)); + au_kfree_do_rcu(p); + } + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt, + int cnt) +{ + int err; + struct kstat st; + struct dbgaufs_arg *p; + + err = -ENOMEM; + p = kmalloc(sizeof(*p), GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + p->n = 0; + file->private_data = p; + if (!xf) + goto out; + + err = vfsub_getattr(&xf->f_path, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%d, %llux%u %lld\n", + cnt, st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%u %lld\n", + st.blocks, st.blksize, + (long long)st.size); + AuDebugOn(p->n >= sizeof(p->a)); + } else { + p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); + err = 0; + } + +out: + return err; +} + +static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +/* ---------------------------------------------------------------------- */ + +struct dbgaufs_plink_arg { + int n; + char a[]; +}; + +static int dbgaufs_plink_release(struct inode *inode __maybe_unused, + struct file *file) +{ + free_page((unsigned long)file->private_data); + return 0; +} + +static int dbgaufs_plink_open(struct inode *inode, struct file *file) +{ + int err, i, limit; + unsigned long n, sum; + struct dbgaufs_plink_arg *p; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct hlist_bl_head *hbl; + + err = -ENOMEM; + p = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = -EFBIG; + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (au_opt_test(au_mntflags(sb), PLINK)) { + limit = PAGE_SIZE - sizeof(p->n); + + /* the number of buckets */ + n = snprintf(p->a + p->n, limit, "%d\n", AuPlink_NHASH); + p->n += n; + limit -= n; + + sum = 0; + for (i = 0, hbl = sbinfo->si_plink; i < AuPlink_NHASH; + i++, hbl++) { + n = au_hbl_count(hbl); + sum += n; + + n = snprintf(p->a + p->n, limit, "%lu ", n); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } + p->a[p->n - 1] = '\n'; + + /* the sum of plinks */ + n = snprintf(p->a + p->n, limit, "%lu\n", sum); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } else { +#define str "1\n0\n0\n" + p->n = sizeof(str) - 1; + strcpy(p->a, str); +#undef str + } + si_read_unlock(sb); + + err = 0; + file->private_data = p; + goto out; /* success */ + +out_free: + free_page((unsigned long)p); +out: + return err; +} + +static ssize_t dbgaufs_plink_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_plink_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +static const struct file_operations dbgaufs_plink_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_plink_open, + .release = dbgaufs_plink_release, + .read = dbgaufs_plink_read +}; + +/* ---------------------------------------------------------------------- */ + +static int dbgaufs_xib_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0, /*cnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xib_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xib_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +/* ---------------------------------------------------------------------- */ + +#define DbgaufsXi_PREFIX "xi" + +static int dbgaufs_xino_open(struct inode *inode, struct file *file) +{ + int err, idx; + long l; + aufs_bindex_t bindex; + char *p, a[sizeof(DbgaufsXi_PREFIX) + 8]; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct au_xino *xi; + struct file *xf; + struct qstr *name; + struct au_branch *br; + + err = -ENOENT; + name = &file->f_path.dentry->d_name; + if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) + || memcmp(name->name, DbgaufsXi_PREFIX, + sizeof(DbgaufsXi_PREFIX) - 1))) + goto out; + + AuDebugOn(name->len >= sizeof(a)); + memcpy(a, name->name, name->len); + a[name->len] = '\0'; + p = strchr(a, '-'); + if (p) + *p = '\0'; + err = kstrtol(a + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + bindex = l; + idx = 0; + if (p) { + err = kstrtol(p + 1, 10, &l); + if (unlikely(err)) + goto out; + idx = l; + } + + err = -ENOENT; + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (unlikely(bindex < 0 || bindex > au_sbbot(sb))) + goto out_si; + br = au_sbr(sb, bindex); + xi = br->br_xino; + if (unlikely(idx >= xi->xi_nfile)) + goto out_si; + xf = au_xino_file(xi, idx); + if (xf) + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1, + au_xino_count(br)); + +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +static const struct file_operations dbgaufs_xino_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xino_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +void dbgaufs_xino_del(struct au_branch *br) +{ + struct dentry *dbgaufs; + + dbgaufs = br->br_dbgaufs; + if (!dbgaufs) + return; + + br->br_dbgaufs = NULL; + /* debugfs acquires the parent i_mutex */ + lockdep_off(); + debugfs_remove(dbgaufs); + lockdep_on(); +} + +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bbot; + struct au_branch *br; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + dbgaufs_xino_del(br); + } +} + +static void dbgaufs_br_do_add(struct super_block *sb, aufs_bindex_t bindex, + unsigned int idx, struct dentry *parent, + struct au_sbinfo *sbinfo) +{ + struct au_branch *br; + struct dentry *d; + /* "xi" bindex(5) "-" idx(2) NULL */ + char name[sizeof(DbgaufsXi_PREFIX) + 8]; + + if (!idx) + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + else + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d-%u", + bindex, idx); + br = au_sbr(sb, bindex); + if (br->br_dbgaufs) { + struct qstr qstr = QSTR_INIT(name, strlen(name)); + + if (!au_qstreq(&br->br_dbgaufs->d_name, &qstr)) { + /* debugfs acquires the parent i_mutex */ + lockdep_off(); + d = debugfs_rename(parent, br->br_dbgaufs, parent, + name); + lockdep_on(); + if (unlikely(!d)) + pr_warn("failed renaming %pd/%s, ignored.\n", + parent, name); + } + } else { + lockdep_off(); + br->br_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + lockdep_on(); + if (unlikely(!br->br_dbgaufs)) + pr_warn("failed creating %pd/%s, ignored.\n", + parent, name); + } +} + +static void dbgaufs_br_add(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *parent, struct au_sbinfo *sbinfo) +{ + struct au_branch *br; + struct au_xino *xi; + unsigned int u; + + br = au_sbr(sb, bindex); + xi = br->br_xino; + for (u = 0; u < xi->xi_nfile; u++) + dbgaufs_br_do_add(sb, bindex, u, parent, sbinfo); +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + aufs_bindex_t bbot; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return; + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bbot = au_sbbot(sb); + if (topdown) + for (; bindex <= bbot; bindex++) + dbgaufs_br_add(sb, bindex, parent, sbinfo); + else + for (; bbot >= bindex; bbot--) + dbgaufs_br_add(sb, bbot, parent, sbinfo); +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +static int dbgaufs_xigen_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0, /*cnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xigen_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xigen_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + int err; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -EIO; + sbinfo->si_dbgaufs_xigen = debugfs_create_file + ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xigen_fop); + if (sbinfo->si_dbgaufs_xigen) + err = 0; + + return err; +} +#else +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + return 0; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_si_fin(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__fin' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + debugfs_remove_recursive(sbinfo->si_dbgaufs); + sbinfo->si_dbgaufs = NULL; +} + +int dbgaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + char name[SysaufsSiNameLen]; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -ENOENT; + if (!dbgaufs) { + AuErr1("/debug/aufs is uninitialized\n"); + goto out; + } + + err = -EIO; + sysaufs_name(sbinfo, name); + sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); + if (unlikely(!sbinfo->si_dbgaufs)) + goto out; + + /* regardless plink/noplink option */ + sbinfo->si_dbgaufs_plink = debugfs_create_file + ("plink", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_plink_fop); + if (unlikely(!sbinfo->si_dbgaufs_plink)) + goto out_dir; + + /* regardless xino/noxino option */ + sbinfo->si_dbgaufs_xib = debugfs_create_file + ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xib_fop); + if (unlikely(!sbinfo->si_dbgaufs_xib)) + goto out_dir; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + if (unlikely(err)) + pr_err("debugfs/aufs failed\n"); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_fin(void) +{ + debugfs_remove(dbgaufs); +} + +int __init dbgaufs_init(void) +{ + int err; + + err = -EIO; + dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); + if (dbgaufs) + err = 0; + return err; +} --- linux-5.8.0.orig/fs/aufs/dbgaufs.h +++ linux-5.8.0/fs/aufs/dbgaufs.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#ifndef __DBGAUFS_H__ +#define __DBGAUFS_H__ + +#ifdef __KERNEL__ + +struct super_block; +struct au_sbinfo; +struct au_branch; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_xino_del(struct au_branch *br); +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown); +void dbgaufs_si_fin(struct au_sbinfo *sbinfo); +int dbgaufs_si_init(struct au_sbinfo *sbinfo); +void dbgaufs_fin(void); +int __init dbgaufs_init(void); +#else +AuStubVoid(dbgaufs_xino_del, struct au_branch *br) +AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex, + int topdown) +AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) +AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) +AuStubVoid(dbgaufs_fin, void) +AuStubInt0(__init dbgaufs_init, void) +#endif /* CONFIG_DEBUG_FS */ + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ --- linux-5.8.0.orig/fs/aufs/dcsub.c +++ linux-5.8.0/fs/aufs/dcsub.c @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#include "aufs.h" + +static void au_dpage_free(struct au_dpage *dpage) +{ + int i; + struct dentry **p; + + p = dpage->dentries; + for (i = 0; i < dpage->ndentry; i++) + dput(*p++); + free_page((unsigned long)dpage->dentries); +} + +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) +{ + int err; + void *p; + + err = -ENOMEM; + dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); + if (unlikely(!dpages->dpages)) + goto out; + + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out_dpages; + + dpages->dpages[0].ndentry = 0; + dpages->dpages[0].dentries = p; + dpages->ndpage = 1; + return 0; /* success */ + +out_dpages: + au_kfree_try_rcu(dpages->dpages); +out: + return err; +} + +void au_dpages_free(struct au_dcsub_pages *dpages) +{ + int i; + struct au_dpage *p; + + p = dpages->dpages; + for (i = 0; i < dpages->ndpage; i++) + au_dpage_free(p++); + au_kfree_try_rcu(dpages->dpages); +} + +static int au_dpages_append(struct au_dcsub_pages *dpages, + struct dentry *dentry, gfp_t gfp) +{ + int err, sz; + struct au_dpage *dpage; + void *p; + + dpage = dpages->dpages + dpages->ndpage - 1; + sz = PAGE_SIZE / sizeof(dentry); + if (unlikely(dpage->ndentry >= sz)) { + AuLabel(new dpage); + err = -ENOMEM; + sz = dpages->ndpage * sizeof(*dpages->dpages); + p = au_kzrealloc(dpages->dpages, sz, + sz + sizeof(*dpages->dpages), gfp, + /*may_shrink*/0); + if (unlikely(!p)) + goto out; + + dpages->dpages = p; + dpage = dpages->dpages + dpages->ndpage; + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out; + + dpage->ndentry = 0; + dpage->dentries = p; + dpages->ndpage++; + } + + AuDebugOn(au_dcount(dentry) <= 0); + dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); + return 0; /* success */ + +out: + return err; +} + +/* todo: BAD approach */ +/* copied from linux/fs/dcache.c */ +enum d_walk_ret { + D_WALK_CONTINUE, + D_WALK_QUIT, + D_WALK_NORETRY, + D_WALK_SKIP, +}; + +extern void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *)); + +struct ac_dpages_arg { + int err; + struct au_dcsub_pages *dpages; + struct super_block *sb; + au_dpages_test test; + void *arg; +}; + +static enum d_walk_ret au_call_dpages_append(void *_arg, struct dentry *dentry) +{ + enum d_walk_ret ret; + struct ac_dpages_arg *arg = _arg; + + ret = D_WALK_CONTINUE; + if (dentry->d_sb == arg->sb + && !IS_ROOT(dentry) + && au_dcount(dentry) > 0 + && au_di(dentry) + && (!arg->test || arg->test(dentry, arg->arg))) { + arg->err = au_dpages_append(arg->dpages, dentry, GFP_ATOMIC); + if (unlikely(arg->err)) + ret = D_WALK_QUIT; + } + + return ret; +} + +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg) +{ + struct ac_dpages_arg args = { + .err = 0, + .dpages = dpages, + .sb = root->d_sb, + .test = test, + .arg = arg + }; + + d_walk(root, &args, au_call_dpages_append); + + return args.err; +} + +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg) +{ + int err; + + err = 0; + write_seqlock(&rename_lock); + spin_lock(&dentry->d_lock); + if (do_include + && au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + + /* + * RCU for vfsmount is unnecessary since this is a traverse in a single + * mount + */ + while (!IS_ROOT(dentry)) { + dentry = dentry->d_parent; /* rename_lock is locked */ + spin_lock(&dentry->d_lock); + if (au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + break; + } + +out: + write_sequnlock(&rename_lock); + return err; +} + +static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) +{ + return au_di(dentry) && dentry->d_sb == arg; +} + +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include) +{ + return au_dcsub_pages_rev(dpages, dentry, do_include, + au_dcsub_dpages_aufs, dentry->d_sb); +} + +int au_test_subdir(struct dentry *d1, struct dentry *d2) +{ + struct path path[2] = { + { + .dentry = d1 + }, + { + .dentry = d2 + } + }; + + return path_is_under(path + 0, path + 1); +} --- linux-5.8.0.orig/fs/aufs/dcsub.h +++ linux-5.8.0/fs/aufs/dcsub.h @@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#ifndef __AUFS_DCSUB_H__ +#define __AUFS_DCSUB_H__ + +#ifdef __KERNEL__ + +#include +#include + +struct au_dpage { + int ndentry; + struct dentry **dentries; +}; + +struct au_dcsub_pages { + int ndpage; + struct au_dpage *dpages; +}; + +/* ---------------------------------------------------------------------- */ + +/* dcsub.c */ +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); +void au_dpages_free(struct au_dcsub_pages *dpages); +typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg); +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg); +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include); +int au_test_subdir(struct dentry *d1, struct dentry *d2); + +/* ---------------------------------------------------------------------- */ + +/* + * todo: in linux-3.13, several similar (but faster) helpers are added to + * include/linux/dcache.h. Try them (in the future). + */ + +static inline int au_d_hashed_positive(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = 0; + if (unlikely(d_unhashed(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + return err; +} + +static inline int au_d_linkable(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = au_d_hashed_positive(d); + if (err + && d_is_positive(d) + && (inode->i_state & I_LINKABLE)) + err = 0; + return err; +} + +static inline int au_d_alive(struct dentry *d) +{ + int err; + struct inode *inode; + + err = 0; + if (!IS_ROOT(d)) + err = au_d_hashed_positive(d); + else { + inode = d_inode(d); + if (unlikely(d_unlinked(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + } + return err; +} + +static inline int au_alive_dir(struct dentry *d) +{ + int err; + + err = au_d_alive(d); + if (unlikely(err || IS_DEADDIR(d_inode(d)))) + err = -ENOENT; + return err; +} + +static inline int au_qstreq(struct qstr *a, struct qstr *b) +{ + return a->len == b->len + && !memcmp(a->name, b->name, a->len); +} + +/* + * by the commit + * 360f547 2015-01-25 dcache: let the dentry count go down to zero without + * taking d_lock + * the type of d_lockref.count became int, but the inlined function d_count() + * still returns unsigned int. + * I don't know why. Maybe it is for every d_count() users? + * Anyway au_dcount() lives on. + */ +static inline int au_dcount(struct dentry *d) +{ + return (int)d_count(d); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ --- linux-5.8.0.orig/fs/aufs/debug.c +++ linux-5.8.0/fs/aufs/debug.c @@ -0,0 +1,441 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#include +#include "aufs.h" + +/* Returns 0, or -errno. arg is in kp->arg. */ +static int param_atomic_t_set(const char *val, const struct kernel_param *kp) +{ + int err, n; + + err = kstrtoint(val, 0, &n); + if (!err) { + if (n > 0) + au_debug_on(); + else + au_debug_off(); + } + return err; +} + +/* Returns length written or -errno. Buffer is 4k (ie. be short!) */ +static int param_atomic_t_get(char *buffer, const struct kernel_param *kp) +{ + atomic_t *a; + + a = kp->arg; + return sprintf(buffer, "%d", atomic_read(a)); +} + +static struct kernel_param_ops param_ops_atomic_t = { + .set = param_atomic_t_set, + .get = param_atomic_t_get + /* void (*free)(void *arg) */ +}; + +atomic_t aufs_debug = ATOMIC_INIT(0); +MODULE_PARM_DESC(debug, "debug print"); +module_param_named(debug, aufs_debug, atomic_t, 0664); + +DEFINE_MUTEX(au_dbg_mtx); /* just to serialize the dbg msgs */ +char *au_plevel = KERN_DEBUG; +#define dpri(fmt, ...) do { \ + if ((au_plevel \ + && strcmp(au_plevel, KERN_DEBUG)) \ + || au_debug_test()) \ + printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +void au_dpri_whlist(struct au_nhash *whlist) +{ + unsigned long ul, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; ul < n; ul++) { + hlist_for_each_entry(pos, head, wh_hash) + dpri("b%d, %.*s, %d\n", + pos->wh_bindex, + pos->wh_str.len, pos->wh_str.name, + pos->wh_str.len); + head++; + } +} + +void au_dpri_vdir(struct au_vdir *vdir) +{ + unsigned long ul; + union au_vdir_deblk_p p; + unsigned char *o; + + if (!vdir || IS_ERR(vdir)) { + dpri("err %ld\n", PTR_ERR(vdir)); + return; + } + + dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %llu\n", + vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, + vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); + for (ul = 0; ul < vdir->vd_nblk; ul++) { + p.deblk = vdir->vd_deblk[ul]; + o = p.deblk; + dpri("[%lu]: %p\n", ul, o); + } +} + +static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, + struct dentry *wh) +{ + char *n = NULL; + int l = 0; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); + return -1; + } + + /* the type of i_blocks depends upon CONFIG_LBDAF */ + BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) + && sizeof(inode->i_blocks) != sizeof(u64)); + if (wh) { + n = (void *)wh->d_name.name; + l = wh->d_name.len; + } + + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, + hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode_peek_iversion(inode), + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb) || au_is_bad_inode(inode)) + return; + + iinfo = au_ii(inode); + dpri("i-1: btop %d, bbot %d, gen %d\n", + iinfo->ii_btop, iinfo->ii_bbot, au_iigen(inode, NULL)); + if (iinfo->ii_btop < 0) + return; + hn = 0; + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; bindex++) { + hi = au_hinode(iinfo, bindex); + hn = !!au_hn(hi); + do_pri_inode(bindex, hi->hi_inode, hn, hi->hi_whdentry); + } +} + +void au_dpri_dalias(struct inode *inode) +{ + struct dentry *d; + + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) + au_dpri_dentry(d); + spin_unlock(&inode->i_lock); +} + +static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) +{ + struct dentry *wh = NULL; + int hn; + struct inode *inode; + struct au_iinfo *iinfo; + struct au_hinode *hi; + + if (!dentry || IS_ERR(dentry)) { + dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); + return -1; + } + /* do not call dget_parent() here */ + /* note: access d_xxx without d_lock */ + dpri("d%d: %p, %pd2?, %s, cnt %d, flags 0x%x, %shashed\n", + bindex, dentry, dentry, + dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", + au_dcount(dentry), dentry->d_flags, + d_unhashed(dentry) ? "un" : ""); + hn = -1; + inode = NULL; + if (d_is_positive(dentry)) + inode = d_inode(dentry); + if (inode + && au_test_aufs(dentry->d_sb) + && bindex >= 0 + && !au_is_bad_inode(inode)) { + iinfo = au_ii(inode); + hi = au_hinode(iinfo, bindex); + hn = !!au_hn(hi); + wh = hi->hi_whdentry; + } + do_pri_inode(bindex, inode, hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + + err = do_pri_dentry(-1, dentry); + if (err || !au_test_aufs(dentry->d_sb)) + return; + + dinfo = au_di(dentry); + if (!dinfo) + return; + dpri("d-1: btop %d, bbot %d, bwh %d, bdiropq %d, gen %d, tmp %d\n", + dinfo->di_btop, dinfo->di_bbot, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry), + dinfo->di_tmpfile); + if (dinfo->di_btop < 0) + return; + for (bindex = dinfo->di_btop; bindex <= dinfo->di_bbot; bindex++) + do_pri_dentry(bindex, au_hdentry(dinfo, bindex)->hd_dentry); +} + +static int do_pri_file(aufs_bindex_t bindex, struct file *file) +{ + char a[32]; + + if (!file || IS_ERR(file)) { + dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); + return -1; + } + a[0] = 0; + if (bindex < 0 + && !IS_ERR_OR_NULL(file->f_path.dentry) + && au_test_aufs(file->f_path.dentry->d_sb) + && au_fi(file)) + snprintf(a, sizeof(a), ", gen %d, mmapped %d", + au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); + dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", + bindex, file->f_mode, file->f_flags, (long)file_count(file), + file->f_version, file->f_pos, a); + if (!IS_ERR_OR_NULL(file->f_path.dentry)) + do_pri_dentry(bindex, file->f_path.dentry); + return 0; +} + +void au_dpri_file(struct file *file) +{ + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hfile; + aufs_bindex_t bindex; + int err; + + err = do_pri_file(-1, file); + if (err + || IS_ERR_OR_NULL(file->f_path.dentry) + || !au_test_aufs(file->f_path.dentry->d_sb)) + return; + + finfo = au_fi(file); + if (!finfo) + return; + if (finfo->fi_btop < 0) + return; + fidir = finfo->fi_hdir; + if (!fidir) + do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); + else + for (bindex = finfo->fi_btop; + bindex >= 0 && bindex <= fidir->fd_bbot; + bindex++) { + hfile = fidir->fd_hfile + bindex; + do_pri_file(bindex, hfile ? hfile->hf_file : NULL); + } +} + +static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) +{ + struct vfsmount *mnt; + struct super_block *sb; + + if (!br || IS_ERR(br)) + goto out; + mnt = au_br_mnt(br); + if (!mnt || IS_ERR(mnt)) + goto out; + sb = mnt->mnt_sb; + if (!sb || IS_ERR(sb)) + goto out; + + dpri("s%d: {perm 0x%x, id %d, wbr %p}, " + "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " + "xino %d\n", + bindex, br->br_perm, br->br_id, br->br_wbr, + au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), + sb->s_flags, sb->s_count, + atomic_read(&sb->s_active), + !!au_xino_file(br->br_xino, /*idx*/-1)); + return 0; + +out: + dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); + return -1; +} + +void au_dpri_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + aufs_bindex_t bindex; + int err; + /* to reduce stack size */ + struct { + struct vfsmount mnt; + struct au_branch fake; + } *a; + + /* this function can be called from magic sysrq */ + a = kzalloc(sizeof(*a), GFP_ATOMIC); + if (unlikely(!a)) { + dpri("no memory\n"); + return; + } + + a->mnt.mnt_sb = sb; + a->fake.br_path.mnt = &a->mnt; + err = do_pri_br(-1, &a->fake); + au_kfree_rcu(a); + dpri("dev 0x%x\n", sb->s_dev); + if (err || !au_test_aufs(sb)) + return; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + dpri("nw %d, gen %u, kobj %d\n", + atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, + kref_read(&sbinfo->si_kobj.kref)); + for (bindex = 0; bindex <= sbinfo->si_bbot; bindex++) + do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); +} + +/* ---------------------------------------------------------------------- */ + +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) +{ + struct inode *h_inode, *inode = d_inode(dentry); + struct dentry *h_dentry; + aufs_bindex_t bindex, bbot, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bbot = au_dbbot(dentry); + bi = au_ibbot(inode); + if (bi < bbot) + bbot = bi; + bindex = au_dbtop(dentry); + bi = au_ibtop(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bbot; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_inode = au_h_iptr(inode, bindex); + if (unlikely(h_inode != d_inode(h_dentry))) { + au_debug_on(); + AuDbg("b%d, %s:%d\n", bindex, func, line); + AuDbgDentry(dentry); + AuDbgInode(inode); + au_debug_off(); + BUG(); + } + } +} + +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) +{ + int err, i, j; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + AuDebugOn(err); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); + AuDebugOn(err); + for (i = dpages.ndpage - 1; !err && i >= 0; i--) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + for (j = dpage->ndentry - 1; !err && j >= 0; j--) + AuDebugOn(au_digen_test(dentries[j], sigen)); + } + au_dpages_free(&dpages); +} + +void au_dbg_verify_kthread(void) +{ + if (au_wkq_test()) { + au_dbg_blocked(); + /* + * It may be recursive, but udba=notify between two aufs mounts, + * where a single ro branch is shared, is not a problem. + */ + /* WARN_ON(1); */ + } +} + +/* ---------------------------------------------------------------------- */ + +int __init au_debug_init(void) +{ + aufs_bindex_t bindex; + struct au_vdir_destr destr; + + bindex = -1; + AuDebugOn(bindex >= 0); + + destr.len = -1; + AuDebugOn(destr.len < NAME_MAX); + +#ifdef CONFIG_4KSTACKS + pr_warn("CONFIG_4KSTACKS is defined.\n"); +#endif + + return 0; +} --- linux-5.8.0.orig/fs/aufs/debug.h +++ linux-5.8.0/fs/aufs/debug.h @@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#ifndef __AUFS_DEBUG_H__ +#define __AUFS_DEBUG_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +#ifdef CONFIG_AUFS_DEBUG +#define AuDebugOn(a) BUG_ON(a) + +/* module parameter */ +extern atomic_t aufs_debug; +static inline void au_debug_on(void) +{ + atomic_inc(&aufs_debug); +} +static inline void au_debug_off(void) +{ + atomic_dec_if_positive(&aufs_debug); +} + +static inline int au_debug_test(void) +{ + return atomic_read(&aufs_debug) > 0; +} +#else +#define AuDebugOn(a) do {} while (0) +AuStubVoid(au_debug_on, void) +AuStubVoid(au_debug_off, void) +AuStubInt0(au_debug_test, void) +#endif /* CONFIG_AUFS_DEBUG */ + +#define param_check_atomic_t(name, p) __param_check(name, p, atomic_t) + +/* ---------------------------------------------------------------------- */ + +/* debug print */ + +#define AuDbg(fmt, ...) do { \ + if (au_debug_test()) \ + pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ +} while (0) +#define AuLabel(l) AuDbg(#l "\n") +#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) +#define AuWarn1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_warn(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_err(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuIOErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + AuIOErr(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuUnsupportMsg "This operation is not supported." \ + " Please report this application to aufs-users ML." +#define AuUnsupport(fmt, ...) do { \ + pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ + dump_stack(); \ +} while (0) + +#define AuTraceErr(e) do { \ + if (unlikely((e) < 0)) \ + AuDbg("err %d\n", (int)(e)); \ +} while (0) + +#define AuTraceErrPtr(p) do { \ + if (IS_ERR(p)) \ + AuDbg("err %ld\n", PTR_ERR(p)); \ +} while (0) + +/* dirty macros for debug print, use with "%.*s" and caution */ +#define AuLNPair(qstr) (qstr)->len, (qstr)->name + +/* ---------------------------------------------------------------------- */ + +struct dentry; +#ifdef CONFIG_AUFS_DEBUG +extern struct mutex au_dbg_mtx; +extern char *au_plevel; +struct au_nhash; +void au_dpri_whlist(struct au_nhash *whlist); +struct au_vdir; +void au_dpri_vdir(struct au_vdir *vdir); +struct inode; +void au_dpri_inode(struct inode *inode); +void au_dpri_dalias(struct inode *inode); +void au_dpri_dentry(struct dentry *dentry); +struct file; +void au_dpri_file(struct file *filp); +struct super_block; +void au_dpri_sb(struct super_block *sb); + +#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); +void au_dbg_verify_kthread(void); + +int __init au_debug_init(void); + +#define AuDbgWhlist(w) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#w "\n"); \ + au_dpri_whlist(w); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgVdir(v) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#v "\n"); \ + au_dpri_vdir(v); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgInode(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_inode(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDAlias(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_dalias(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDentry(d) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#d "\n"); \ + au_dpri_dentry(d); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgFile(f) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#f "\n"); \ + au_dpri_file(f); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSb(sb) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#sb "\n"); \ + au_dpri_sb(sb); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuDbg("%s\n", sym); \ +} while (0) +#else +AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) +AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) +AuStubVoid(au_dbg_verify_kthread, void) +AuStubInt0(__init au_debug_init, void) + +#define AuDbgWhlist(w) do {} while (0) +#define AuDbgVdir(v) do {} while (0) +#define AuDbgInode(i) do {} while (0) +#define AuDbgDAlias(i) do {} while (0) +#define AuDbgDentry(d) do {} while (0) +#define AuDbgFile(f) do {} while (0) +#define AuDbgSb(sb) do {} while (0) +#define AuDbgSym(addr) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +int __init au_sysrq_init(void); +void au_sysrq_fin(void); + +#ifdef CONFIG_HW_CONSOLE +#define au_dbg_blocked() do { \ + WARN_ON(1); \ + handle_sysrq('w'); \ +} while (0) +#else +AuStubVoid(au_dbg_blocked, void) +#endif + +#else +AuStubInt0(__init au_sysrq_init, void) +AuStubVoid(au_sysrq_fin, void) +AuStubVoid(au_dbg_blocked, void) +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ --- linux-5.8.0.orig/fs/aufs/dentry.c +++ linux-5.8.0/fs/aufs/dentry.c @@ -0,0 +1,1154 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#include +#include +#include "aufs.h" + +/* + * returns positive/negative dentry, NULL or an error. + * NULL means whiteout-ed or not-found. + */ +static struct dentry* +au_do_lookup(struct dentry *h_parent, struct dentry *dentry, + aufs_bindex_t bindex, struct au_do_lookup_args *args) +{ + struct dentry *h_dentry; + struct inode *h_inode; + struct au_branch *br; + int wh_found, opq; + unsigned char wh_able; + const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); + const unsigned char ignore_perm = !!au_ftest_lkup(args->flags, + IGNORE_PERM); + + wh_found = 0; + br = au_sbr(dentry->d_sb, bindex); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) + wh_found = au_wh_test(h_parent, &args->whname, ignore_perm); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; + if (unlikely(wh_found < 0)) + goto out; + + /* We found a whiteout */ + /* au_set_dbbot(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + if (!ignore_perm) + h_dentry = vfsub_lkup_one(args->name, h_parent); + else + h_dentry = au_sio_lkup_one(args->name, h_parent); + if (IS_ERR(h_dentry)) { + if (PTR_ERR(h_dentry) == -ENAMETOOLONG + && !allow_neg) + h_dentry = NULL; + goto out; + } + + h_inode = d_inode(h_dentry); + if (d_is_negative(h_dentry)) { + if (!allow_neg) + goto out_neg; + } else if (wh_found + || (args->type && args->type != (h_inode->i_mode & S_IFMT))) + goto out_neg; + else if (au_ftest_lkup(args->flags, DIRREN) + /* && h_inode */ + && !au_dr_lkup_h_ino(args, bindex, h_inode->i_ino)) { + AuDbg("b%d %pd ignored hi%llu\n", bindex, h_dentry, + (unsigned long long)h_inode->i_ino); + goto out_neg; + } + + if (au_dbbot(dentry) <= bindex) + au_set_dbbot(dentry, bindex); + if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) + au_set_dbtop(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + + if (!d_is_dir(h_dentry) + || !wh_able + || (d_really_is_positive(dentry) && !d_is_dir(dentry))) + goto out; /* success */ + + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); + opq = au_diropq_test(h_dentry); + inode_unlock_shared(h_inode); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); + else if (unlikely(opq < 0)) { + au_set_h_dptr(dentry, bindex, NULL); + h_dentry = ERR_PTR(opq); + } + goto out; + +out_neg: + dput(h_dentry); + h_dentry = NULL; +out: + return h_dentry; +} + +static int au_test_shwh(struct super_block *sb, const struct qstr *name) +{ + if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) + && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) + return -EPERM; + return 0; +} + +/* + * returns the number of lower positive dentries, + * otherwise an error. + * can be called at unlinking with @type is zero. + */ +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, + unsigned int flags) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir, dirperm1, dirren; + struct au_do_lookup_args args = { + .flags = flags, + .name = &dentry->d_name + }; + struct dentry *parent; + struct super_block *sb; + + sb = dentry->d_sb; + err = au_test_shwh(sb, args.name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&args.whname, args.name); + if (unlikely(err)) + goto out; + + isdir = !!d_is_dir(dentry); + dirperm1 = !!au_opt_test(au_mntflags(sb), DIRPERM1); + dirren = !!au_opt_test(au_mntflags(sb), DIRREN); + if (dirren) + au_fset_lkup(args.flags, DIRREN); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = btop; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + struct au_branch *br; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (d_is_positive(h_dentry)) + npositive++; + break; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !d_is_dir(h_parent)) + continue; + + if (dirren) { + /* if the inum matches, then use the prepared name */ + err = au_dr_lkup_name(&args, bindex); + if (unlikely(err)) + goto out_parent; + } + + h_dir = d_inode(h_parent); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &args); + inode_unlock_shared(h_dir); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out_parent; + if (h_dentry) + au_fclr_lkup(args.flags, ALLOW_NEG); + if (dirperm1) + au_fset_lkup(args.flags, IGNORE_PERM); + + if (au_dbwh(dentry) == bindex) + break; + if (!h_dentry) + continue; + if (d_is_negative(h_dentry)) + continue; + h_inode = d_inode(h_dentry); + npositive++; + if (!args.type) + args.type = h_inode->i_mode & S_IFMT; + if (args.type != S_IFDIR) + break; + else if (isdir) { + /* the type of lower may be different */ + bdiropq = au_dbdiropq(dentry); + if (bdiropq >= 0 && bdiropq <= bindex) + break; + } + br = au_sbr(sb, bindex); + if (dirren + && au_dr_hino_test_add(&br->br_dirren, h_inode->i_ino, + /*add_ent*/NULL)) { + /* prepare next name to lookup */ + err = au_dr_lkup(&args, dentry, bindex); + if (unlikely(err)) + goto out_parent; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbtop(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(sb), UDBA_NONE) + && au_dbtop(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %pd, err %d\n", + dentry, err); + } + +out_parent: + dput(parent); + au_kfree_try_rcu(args.whname.name); + if (dirren) + au_dr_lkup_fin(&args); +out: + return err; +} + +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent) +{ + struct dentry *dentry; + int wkq_err; + + if (!au_test_h_perm_sio(d_inode(parent), MAY_EXEC)) + dentry = vfsub_lkup_one(name, parent); + else { + struct vfsub_lkup_one_args args = { + .errp = &dentry, + .name = name, + .parent = parent + }; + + wkq_err = au_wkq_wait(vfsub_call_lkup_one, &args); + if (unlikely(wkq_err)) + dentry = ERR_PTR(wkq_err); + } + + return dentry; +} + +/* + * lookup @dentry on @bindex which should be negative. + */ +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh) +{ + int err; + struct dentry *parent, *h_parent, *h_dentry; + struct au_branch *br; + + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bindex); + br = au_sbr(dentry->d_sb, bindex); + if (wh) + h_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + else + h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; + if (unlikely(d_is_positive(h_dentry))) { + err = -EIO; + AuIOErr("%pd should be negative on b%d.\n", h_dentry, bindex); + dput(h_dentry); + goto out; + } + + err = 0; + if (bindex < au_dbtop(dentry)) + au_set_dbtop(dentry, bindex); + if (au_dbbot(dentry) < bindex) + au_set_dbbot(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* subset of struct inode */ +struct au_iattr { + unsigned long i_ino; + /* unsigned int i_nlink; */ + kuid_t i_uid; + kgid_t i_gid; + u64 i_version; +/* + loff_t i_size; + blkcnt_t i_blocks; +*/ + umode_t i_mode; +}; + +static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) +{ + ia->i_ino = h_inode->i_ino; + /* ia->i_nlink = h_inode->i_nlink; */ + ia->i_uid = h_inode->i_uid; + ia->i_gid = h_inode->i_gid; + ia->i_version = inode_query_iversion(h_inode); +/* + ia->i_size = h_inode->i_size; + ia->i_blocks = h_inode->i_blocks; +*/ + ia->i_mode = (h_inode->i_mode & S_IFMT); +} + +static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) +{ + return ia->i_ino != h_inode->i_ino + /* || ia->i_nlink != h_inode->i_nlink */ + || !uid_eq(ia->i_uid, h_inode->i_uid) + || !gid_eq(ia->i_gid, h_inode->i_gid) + || !inode_eq_iversion(h_inode, ia->i_version) +/* + || ia->i_size != h_inode->i_size + || ia->i_blocks != h_inode->i_blocks +*/ + || ia->i_mode != (h_inode->i_mode & S_IFMT); +} + +static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, + struct au_branch *br) +{ + int err; + struct au_iattr ia; + struct inode *h_inode; + struct dentry *h_d; + struct super_block *h_sb; + + err = 0; + memset(&ia, -1, sizeof(ia)); + h_sb = h_dentry->d_sb; + h_inode = NULL; + if (d_is_positive(h_dentry)) { + h_inode = d_inode(h_dentry); + au_iattr_save(&ia, h_inode); + } else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) + /* nfs d_revalidate may return 0 for negative dentry */ + /* fuse d_revalidate always return 0 for negative dentry */ + goto out; + + /* main purpose is namei.c:cached_lookup() and d_revalidate */ + h_d = vfsub_lkup_one(&h_dentry->d_name, h_parent); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out; + + err = 0; + if (unlikely(h_d != h_dentry + || d_inode(h_d) != h_inode + || (h_inode && au_iattr_test(&ia, h_inode)))) + err = au_busy_or_stale(); + dput(h_d); + +out: + AuTraceErr(err); + return err; +} + +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br) +{ + int err; + + err = 0; + if (udba == AuOpt_UDBA_REVAL + && !au_test_fs_remote(h_dentry->d_sb)) { + IMustLock(h_dir); + err = (d_inode(h_dentry->d_parent) != h_dir); + } else if (udba != AuOpt_UDBA_NONE) + err = au_h_verify_dentry(h_dentry, h_parent, br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) +{ + int err; + aufs_bindex_t new_bindex, bindex, bbot, bwh, bdiropq; + struct au_hdentry tmp, *p, *q; + struct au_dinfo *dinfo; + struct super_block *sb; + + DiMustWriteLock(dentry); + + sb = dentry->d_sb; + dinfo = au_di(dentry); + bbot = dinfo->di_bbot; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + bindex = dinfo->di_btop; + p = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, p++) { + if (!p->hd_dentry) + continue; + + new_bindex = au_br_index(sb, p->hd_id); + if (new_bindex == bindex) + continue; + + if (dinfo->di_bwh == bindex) + bwh = new_bindex; + if (dinfo->di_bdiropq == bindex) + bdiropq = new_bindex; + if (new_bindex < 0) { + au_hdput(p); + p->hd_dentry = NULL; + continue; + } + + /* swap two lower dentries, and loop again */ + q = au_hdentry(dinfo, new_bindex); + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbbot(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbbot(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + bbot = au_dbbot(parent); + bindex = 0; + p = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_btop = bindex; + break; + } + + if (dinfo->di_btop >= 0) { + bindex = bbot; + p = au_hdentry(dinfo, bindex); + for (; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bbot = bindex; + err = 0; + break; + } + } + + return err; +} + +static void au_do_hide(struct dentry *dentry) +{ + struct inode *inode; + + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + if (!d_is_dir(dentry)) { + if (inode->i_nlink && !d_unhashed(dentry)) + drop_nlink(inode); + } else { + clear_nlink(inode); + /* stop next lookup */ + inode->i_flags |= S_DEAD; + } + smp_mb(); /* necessary? */ + } + d_drop(dentry); +} + +static int au_hide_children(struct dentry *parent) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *dentry; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, parent, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + /* in reverse order */ + for (i = dpages.ndpage - 1; i >= 0; i--) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = ndentry - 1; j >= 0; j--) { + dentry = dpage->dentries[j]; + if (dentry != parent) + au_do_hide(dentry); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static void au_hide(struct dentry *dentry) +{ + int err; + + AuDbgDentry(dentry); + if (d_is_dir(dentry)) { + /* shrink_dcache_parent(dentry); */ + err = au_hide_children(dentry); + if (unlikely(err)) + AuIOErr("%pd, failed hiding children, ignored %d\n", + dentry, err); + } + au_do_hide(dentry); +} + +/* + * By adding a dirty branch, a cached dentry may be affected in various ways. + * + * a dirty branch is added + * - on the top of layers + * - in the middle of layers + * - to the bottom of layers + * + * on the added branch there exists + * - a whiteout + * - a diropq + * - a same named entry + * + exist + * * negative --> positive + * * positive --> positive + * - type is unchanged + * - type is changed + * + doesn't exist + * * negative --> negative + * * positive --> negative (rejected by au_br_del() for non-dir case) + * - none + */ +static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, + struct au_dinfo *tmp) +{ + int err; + aufs_bindex_t bindex, bbot; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h = { + .dentry = NULL + }; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_btop < 0); + orig_h.mode = 0; + orig_h.dentry = au_hdentry(dinfo, dinfo->di_btop)->hd_dentry; + orig_h.inode = NULL; + if (d_is_positive(orig_h.dentry)) { + orig_h.inode = d_inode(orig_h.dentry); + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + } + if (tmp->di_btop >= 0) { + tmp_h.dentry = au_hdentry(tmp, tmp->di_btop)->hd_dentry; + if (d_is_positive(tmp_h.dentry)) { + tmp_h.inode = d_inode(tmp_h.dentry); + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; + } + } + + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (!orig_h.inode) { + AuDbg("negative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_btop != dinfo->di_bbot); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_btop >= 0 + && tmp->di_btop < dinfo->di_btop) { + AuDebugOn(tmp->di_btop != tmp->di_bbot); + AuDebugOn(dinfo->di_btop != dinfo->di_bbot); + au_set_h_dptr(dentry, dinfo->di_btop, NULL); + au_di_cp(dinfo, tmp); + hd = au_hdentry(tmp, tmp->di_btop); + au_set_h_dptr(dentry, tmp->di_btop, + dget(hd->hd_dentry)); + } + au_dbg_verify_dinode(dentry); + } else { + AuDbg("negative --> positive\n"); + /* + * similar to the behaviour of creating with bypassing + * aufs. + * unhash it in order to force an error in the + * succeeding create operation. + * we should not set S_DEAD here. + */ + d_drop(dentry); + /* au_di_swap(tmp, dinfo); */ + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive originally\n"); + /* inode may be NULL */ + AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); + if (!tmp_h.inode) { + AuDbg("positive --> negative\n"); + /* or bypassing aufs */ + au_hide(dentry); + if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_btop) + dinfo->di_bwh = tmp->di_bwh; + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else if (orig_h.mode == tmp_h.mode) { + AuDbg("positive --> positive, same type\n"); + if (!S_ISDIR(orig_h.mode) + && dinfo->di_btop > tmp->di_btop) { + /* + * similar to the behaviour of removing and + * creating. + */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else { + /* fill empty slots */ + if (dinfo->di_btop > tmp->di_btop) + dinfo->di_btop = tmp->di_btop; + if (dinfo->di_bbot < tmp->di_bbot) + dinfo->di_bbot = tmp->di_bbot; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + bbot = dinfo->di_bbot; + bindex = tmp->di_btop; + hd = au_hdentry(tmp, bindex); + for (; bindex <= bbot; bindex++, hd++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd->hd_dentry; + if (!h_dentry) + continue; + AuDebugOn(d_is_negative(h_dentry)); + h_inode = d_inode(h_dentry); + AuDebugOn(orig_h.mode + != (h_inode->i_mode + & S_IFMT)); + au_set_h_dptr(dentry, bindex, + dget(h_dentry)); + } + if (inode) + err = au_refresh_hinode(inode, dentry); + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive --> positive, different type\n"); + /* similar to the behaviour of removing and creating */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } + } + +out: + return err; +} + +void au_refresh_dop(struct dentry *dentry, int force_reval) +{ + const struct dentry_operations *dop + = force_reval ? &aufs_dop : dentry->d_sb->s_d_op; + static const unsigned int mask + = DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE; + + BUILD_BUG_ON(sizeof(mask) != sizeof(dentry->d_flags)); + + if (dentry->d_op == dop) + return; + + AuDbg("%pd\n", dentry); + spin_lock(&dentry->d_lock); + if (dop == &aufs_dop) + dentry->d_flags |= mask; + else + dentry->d_flags &= ~mask; + dentry->d_op = dop; + spin_unlock(&dentry->d_lock); +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange, nbr; + unsigned int sigen; + struct au_dinfo *dinfo, *tmp; + struct super_block *sb; + struct inode *inode; + + DiMustWriteLock(dentry); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(d_really_is_negative(parent)); + + sb = dentry->d_sb; + sigen = au_sigen(sb); + err = au_digen_test(parent, sigen); + if (unlikely(err)) + goto out; + + nbr = au_sbbot(sb) + 1; + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + ebrange = au_dbrange_test(dentry); + if (!ebrange) + ebrange = au_do_refresh_hdentry(dentry, parent); + + if (d_unhashed(dentry) || ebrange /* || dinfo->di_tmpfile */) { + AuDebugOn(au_dbtop(dentry) < 0 && au_dbbot(dentry) >= 0); + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + err = au_refresh_hinode_self(inode); + } + au_dbg_verify_dinode(dentry); + if (!err) + goto out_dgen; /* success */ + goto out; + } + + /* temporary dinfo */ + AuDbgDentry(dentry); + err = -ENOMEM; + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + /* + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ + err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) + err = 0; + if (err >= 0) { + /* compare/refresh by dinfo */ + AuDbgDentry(dentry); + err = au_refresh_by_dinfo(dentry, dinfo, tmp); + au_dbg_verify_dinode(dentry); + AuTraceErr(err); + } + au_di_realloc(dinfo, nbr, /*may_shrink*/1); /* harmless if err */ + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err)) + goto out; + +out_dgen: + au_update_digen(dentry); +out: + if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { + AuIOErr("failed refreshing %pd, %d\n", dentry, err); + AuDbgDentry(dentry); + } + AuTraceErr(err); + return err; +} + +static int au_do_h_d_reval(struct dentry *h_dentry, unsigned int flags, + struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, valid; + + err = 0; + if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) + goto out; + + AuDbg("b%d\n", bindex); + /* + * gave up supporting LOOKUP_CREATE/OPEN for lower fs, + * due to whiteout and branch permission. + */ + flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE + | LOOKUP_FOLLOW | LOOKUP_EXCL); + /* it may return tri-state */ + valid = h_dentry->d_op->d_revalidate(h_dentry, flags); + + if (unlikely(valid < 0)) + err = valid; + else if (!valid) + err = -EINVAL; + +out: + AuTraceErr(err); + return err; +} + +/* todo: remove this */ +static int h_d_revalidate(struct dentry *dentry, struct inode *inode, + unsigned int flags, int do_udba, int dirren) +{ + int err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, btop, ibs, ibe; + unsigned char plus, unhashed, is_root, h_plus, h_nfs, tmpfile; + struct inode *h_inode, *h_cached_inode; + struct dentry *h_dentry; + struct qstr *name, *h_name; + + err = 0; + plus = 0; + mode = 0; + ibs = -1; + ibe = -1; + unhashed = !!d_unhashed(dentry); + is_root = !!IS_ROOT(dentry); + name = &dentry->d_name; + tmpfile = au_di(dentry)->di_tmpfile; + + /* + * Theoretically, REVAL test should be unnecessary in case of + * {FS,I}NOTIFY. + * But {fs,i}notify doesn't fire some necessary events, + * IN_ATTRIB for atime/nlink/pageio + * Let's do REVAL test too. + */ + if (do_udba && inode) { + mode = (inode->i_mode & S_IFMT); + plus = (inode->i_nlink > 0); + ibs = au_ibtop(inode); + ibe = au_ibbot(inode); + } + + btop = au_dbtop(dentry); + btail = btop; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + AuDbg("b%d, %pd\n", bindex, h_dentry); + h_nfs = !!au_test_nfs(h_dentry->d_sb); + spin_lock(&h_dentry->d_lock); + h_name = &h_dentry->d_name; + if (unlikely(do_udba + && !is_root + && ((!h_nfs + && (unhashed != !!d_unhashed(h_dentry) + || (!tmpfile && !dirren + && !au_qstreq(name, h_name)) + )) + || (h_nfs + && !(flags & LOOKUP_OPEN) + && (h_dentry->d_flags + & DCACHE_NFSFS_RENAMED))) + )) { + int h_unhashed; + + h_unhashed = d_unhashed(h_dentry); + spin_unlock(&h_dentry->d_lock); + AuDbg("unhash 0x%x 0x%x, %pd %pd\n", + unhashed, h_unhashed, dentry, h_dentry); + goto err; + } + spin_unlock(&h_dentry->d_lock); + + err = au_do_h_d_reval(h_dentry, flags, dentry, bindex); + if (unlikely(err)) + /* do not goto err, to keep the errno */ + break; + + /* todo: plink too? */ + if (!do_udba) + continue; + + /* UDBA tests */ + if (unlikely(!!inode != d_is_positive(h_dentry))) + goto err; + + h_inode = NULL; + if (d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + h_plus = plus; + h_mode = mode; + h_cached_inode = h_inode; + if (h_inode) { + h_mode = (h_inode->i_mode & S_IFMT); + h_plus = (h_inode->i_nlink > 0); + } + if (inode && ibs <= bindex && bindex <= ibe) + h_cached_inode = au_h_iptr(inode, bindex); + + if (!h_nfs) { + if (unlikely(plus != h_plus && !tmpfile)) + goto err; + } else { + if (unlikely(!(h_dentry->d_flags & DCACHE_NFSFS_RENAMED) + && !is_root + && !IS_ROOT(h_dentry) + && unhashed != d_unhashed(h_dentry))) + goto err; + } + if (unlikely(mode != h_mode + || h_cached_inode != h_inode)) + goto err; + continue; + +err: + err = -EINVAL; + break; + } + + AuTraceErr(err); + return err; +} + +/* todo: consolidate with do_refresh() and au_reval_for_attr() */ +static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + if (!au_digen_test(dentry, sigen)) + return 0; + + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + AuDebugOn(au_digen_test(parent, sigen)); + au_dbg_verify_gen(parent, sigen); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + AuTraceErr(err); + return err; +} + +int au_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *d, *parent; + + if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) + return simple_reval_dpath(dentry, sigen); + + /* slow loop, keep it simple and stupid */ + /* cf: au_cpup_dirs() */ + err = 0; + parent = NULL; + while (au_digen_test(dentry, sigen)) { + d = dentry; + while (1) { + dput(parent); + parent = dget_parent(d); + if (!au_digen_test(parent, sigen)) + break; + d = parent; + } + + if (d != dentry) + di_write_lock_child2(d); + + /* someone might update our dentry while we were sleeping */ + if (au_digen_test(d, sigen)) { + /* + * todo: consolidate with simple_reval_dpath(), + * do_refresh() and au_reval_for_attr(). + */ + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(d, parent); + di_read_unlock(parent, AuLock_IR); + } + + if (d != dentry) + di_write_unlock(d); + dput(parent); + if (unlikely(err)) + break; + } + + return err; +} + +/* + * if valid returns 1, otherwise 0. + */ +static int aufs_d_revalidate(struct dentry *dentry, unsigned int flags) +{ + int valid, err; + unsigned int sigen; + unsigned char do_udba, dirren; + struct super_block *sb; + struct inode *inode; + + /* todo: support rcu-walk? */ + if (flags & LOOKUP_RCU) + return -ECHILD; + + valid = 0; + if (unlikely(!au_di(dentry))) + goto out; + + valid = 1; + sb = dentry->d_sb; + /* + * todo: very ugly + * i_mutex of parent dir may be held, + * but we should not return 'invalid' due to busy. + */ + err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); + if (unlikely(err)) { + valid = err; + AuTraceErr(err); + goto out; + } + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (unlikely(inode && au_is_bad_inode(inode))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + if (unlikely(au_dbrange_test(dentry))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + + sigen = au_sigen(sb); + if (au_digen_test(dentry, sigen)) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_dpath(dentry, sigen); + if (unlikely(err)) { + AuTraceErr(err); + goto out_dgrade; + } + } + di_downgrade_lock(dentry, AuLock_IR); + + err = -EINVAL; + if (!(flags & (LOOKUP_OPEN | LOOKUP_EMPTY)) + && inode + && !(inode->i_state && I_LINKABLE) + && (IS_DEADDIR(inode) || !inode->i_nlink)) { + AuTraceErr(err); + goto out_inval; + } + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t btop = au_ibtop(inode); + struct inode *h_inode; + + if (btop >= 0) { + h_inode = au_h_iptr(inode, btop); + if (h_inode && au_test_higen(inode, h_inode)) { + AuTraceErr(err); + goto out_inval; + } + } + } + + dirren = !!au_opt_test(au_mntflags(sb), DIRREN); + err = h_d_revalidate(dentry, inode, flags, do_udba, dirren); + if (unlikely(!err && do_udba && au_dbtop(dentry) < 0)) { + err = -EIO; + AuDbg("both of real entry and whiteout found, %p, err %d\n", + dentry, err); + } + goto out_inval; + +out_dgrade: + di_downgrade_lock(dentry, AuLock_IR); +out_inval: + aufs_read_unlock(dentry, AuLock_IR); + AuTraceErr(err); + valid = !err; +out: + if (!valid) { + AuDbg("%pd invalid, %d\n", dentry, valid); + d_drop(dentry); + } + return valid; +} + +static void aufs_d_release(struct dentry *dentry) +{ + if (au_di(dentry)) { + au_di_fin(dentry); + au_hn_di_reinit(dentry); + } +} + +const struct dentry_operations aufs_dop = { + .d_revalidate = aufs_d_revalidate, + .d_weak_revalidate = aufs_d_revalidate, + .d_release = aufs_d_release +}; + +/* aufs_dop without d_revalidate */ +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; --- linux-5.8.0.orig/fs/aufs/dentry.h +++ linux-5.8.0/fs/aufs/dentry.h @@ -0,0 +1,268 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#ifndef __AUFS_DENTRY_H__ +#define __AUFS_DENTRY_H__ + +#ifdef __KERNEL__ + +#include +#include "dirren.h" +#include "rwsem.h" + +struct au_hdentry { + struct dentry *hd_dentry; + aufs_bindex_t hd_id; +}; + +struct au_dinfo { + atomic_t di_generation; + + struct au_rwsem di_rwsem; + aufs_bindex_t di_btop, di_bbot, di_bwh, di_bdiropq; + unsigned char di_tmpfile; /* to allow the different name */ + struct au_hdentry *di_hdentry; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* flags for au_lkup_dentry() */ +#define AuLkup_ALLOW_NEG 1 +#define AuLkup_IGNORE_PERM (1 << 1) +#define AuLkup_DIRREN (1 << 2) +#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) +#define au_fset_lkup(flags, name) \ + do { (flags) |= AuLkup_##name; } while (0) +#define au_fclr_lkup(flags, name) \ + do { (flags) &= ~AuLkup_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuLkup_DIRREN +#define AuLkup_DIRREN 0 +#endif + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; + struct qstr whname, *name; + struct au_dr_lookup dirren; +}; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop, aufs_dop_noreval; +struct au_branch; +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, + unsigned int flags); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); +void au_refresh_dop(struct dentry *dentry, int force_reval); + +/* dinfo.c */ +void au_di_init_once(void *_di); +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); +void au_di_free(struct au_dinfo *dinfo); +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); +int au_di_init(struct dentry *dentry); +void au_di_fin(struct dentry *dentry); +int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink); + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc); +void di_read_unlock(struct dentry *d, int flags); +void di_downgrade_lock(struct dentry *d, int flags); +void di_write_lock(struct dentry *d, unsigned int lsc); +void di_write_unlock(struct dentry *d); +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_unlock2(struct dentry *d1, struct dentry *d2); + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); +aufs_bindex_t au_dbtail(struct dentry *dentry); +aufs_bindex_t au_dbtaildir(struct dentry *dentry); + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry); +int au_digen_test(struct dentry *dentry, unsigned int sigen); +int au_dbrange_test(struct dentry *dentry); +void au_update_digen(struct dentry *dentry); +void au_update_dbrange(struct dentry *dentry, int do_put_zero); +void au_update_dbtop(struct dentry *dentry); +void au_update_dbbot(struct dentry *dentry); +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_dinfo *au_di(struct dentry *dentry) +{ + return dentry->d_fsdata; +} + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for dinfo */ +enum { + AuLsc_DI_CHILD, /* child first */ + AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_DI_CHILD3, /* copyup dirs */ + AuLsc_DI_PARENT, + AuLsc_DI_PARENT2, + AuLsc_DI_PARENT3, + AuLsc_DI_TMP /* temp for replacing dinfo */ +}; + +/* + * di_read_lock_child, di_write_lock_child, + * di_read_lock_child2, di_write_lock_child2, + * di_read_lock_child3, di_write_lock_child3, + * di_read_lock_parent, di_write_lock_parent, + * di_read_lock_parent2, di_write_lock_parent2, + * di_read_lock_parent3, di_write_lock_parent3, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void di_read_lock_##name(struct dentry *d, int flags) \ +{ di_read_lock(d, flags, AuLsc_DI_##lsc); } + +#define AuWriteLockFunc(name, lsc) \ +static inline void di_write_lock_##name(struct dentry *d) \ +{ di_write_lock(d, AuLsc_DI_##lsc); } + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) +#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) +#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: memory barrier? */ +static inline unsigned int au_digen(struct dentry *d) +{ + return atomic_read(&au_di(d)->di_generation); +} + +static inline void au_h_dentry_init(struct au_hdentry *hdentry) +{ + hdentry->hd_dentry = NULL; +} + +static inline struct au_hdentry *au_hdentry(struct au_dinfo *di, + aufs_bindex_t bindex) +{ + return di->di_hdentry + bindex; +} + +static inline void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbtop(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_btop; +} + +static inline aufs_bindex_t au_dbbot(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bbot; +} + +static inline aufs_bindex_t au_dbwh(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bwh; +} + +static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bdiropq; +} + +/* todo: hard/soft set? */ +static inline void au_set_dbtop(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_btop = bindex; +} + +static inline void au_set_dbbot(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bbot = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of btop - bbot range */ + au_di(dentry)->di_bwh = bindex; +} + +static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bdiropq = bindex; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_HNOTIFY +static inline void au_digen_dec(struct dentry *d) +{ + atomic_dec(&au_di(d)->di_generation); +} + +static inline void au_hn_di_reinit(struct dentry *dentry) +{ + dentry->d_fsdata = NULL; +} +#else +AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ --- linux-5.8.0.orig/fs/aufs/dinfo.c +++ linux-5.8.0/fs/aufs/dinfo.c @@ -0,0 +1,554 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dentry private data + */ + +#include "aufs.h" + +void au_di_init_once(void *_dinfo) +{ + struct au_dinfo *dinfo = _dinfo; + + au_rw_init(&dinfo->di_rwsem); +} + +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) +{ + struct au_dinfo *dinfo; + int nbr, i; + + dinfo = au_cache_alloc_dinfo(); + if (unlikely(!dinfo)) + goto out; + + nbr = au_sbbot(sb) + 1; + if (nbr <= 0) + nbr = 1; + dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); + if (dinfo->di_hdentry) { + au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + dinfo->di_bwh = -1; + dinfo->di_bdiropq = -1; + dinfo->di_tmpfile = 0; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; + goto out; + } + + au_cache_free_dinfo(dinfo); + dinfo = NULL; + +out: + return dinfo; +} + +void au_di_free(struct au_dinfo *dinfo) +{ + struct au_hdentry *p; + aufs_bindex_t bbot, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_btop; + if (bindex >= 0) { + bbot = dinfo->di_bbot; + p = au_hdentry(dinfo, bindex); + while (bindex++ <= bbot) + au_hdput(p++); + } + au_kfree_try_rcu(dinfo->di_hdentry); + au_cache_free_dinfo(dinfo); +} + +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) +{ + struct au_hdentry *p; + aufs_bindex_t bi; + + AuRwMustWriteLock(&a->di_rwsem); + AuRwMustWriteLock(&b->di_rwsem); + +#define DiSwap(v, name) \ + do { \ + v = a->di_##name; \ + a->di_##name = b->di_##name; \ + b->di_##name = v; \ + } while (0) + + DiSwap(p, hdentry); + DiSwap(bi, btop); + DiSwap(bi, bbot); + DiSwap(bi, bwh); + DiSwap(bi, bdiropq); + /* smp_mb(); */ + +#undef DiSwap +} + +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) +{ + AuRwMustWriteLock(&dst->di_rwsem); + AuRwMustWriteLock(&src->di_rwsem); + + dst->di_btop = src->di_btop; + dst->di_bbot = src->di_bbot; + dst->di_bwh = src->di_bwh; + dst->di_bdiropq = src->di_bdiropq; + /* smp_mb(); */ +} + +int au_di_init(struct dentry *dentry) +{ + int err; + struct super_block *sb; + struct au_dinfo *dinfo; + + err = 0; + sb = dentry->d_sb; + dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); + if (dinfo) { + atomic_set(&dinfo->di_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + dentry->d_fsdata = dinfo; + } else + err = -ENOMEM; + + return err; +} + +void au_di_fin(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + + dinfo = au_di(dentry); + AuRwDestroy(&dinfo->di_rwsem); + au_di_free(dinfo); +} + +int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink) +{ + int err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bbot + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS, + may_shrink); + if (hdp) { + dinfo->di_hdentry = hdp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void do_ii_write_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_write_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_write_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_write_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_write_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_write_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_write_lock_parent3(inode); + break; + default: + BUG(); + } +} + +static void do_ii_read_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_read_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_read_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_read_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_read_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_read_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_read_lock_parent3(inode); + break; + default: + BUG(); + } +} + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc) +{ + struct inode *inode; + + au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) + do_ii_write_lock(inode, lsc); + else if (au_ftest_lock(flags, IR)) + do_ii_read_lock(inode, lsc); + } +} + +void di_read_unlock(struct dentry *d, int flags) +{ + struct inode *inode; + + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) { + au_dbg_verify_dinode(d); + ii_write_unlock(inode); + } else if (au_ftest_lock(flags, IR)) { + au_dbg_verify_dinode(d); + ii_read_unlock(inode); + } + } + au_rw_read_unlock(&au_di(d)->di_rwsem); +} + +void di_downgrade_lock(struct dentry *d, int flags) +{ + if (d_really_is_positive(d) && au_ftest_lock(flags, IR)) + ii_downgrade_lock(d_inode(d)); + au_rw_dgrade_lock(&au_di(d)->di_rwsem); +} + +void di_write_lock(struct dentry *d, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) + do_ii_write_lock(d_inode(d), lsc); +} + +void di_write_unlock(struct dentry *d) +{ + au_dbg_verify_dinode(d); + if (d_really_is_positive(d)) + ii_write_unlock(d_inode(d)); + au_rw_write_unlock(&au_di(d)->di_rwsem); +} + +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if ((isdir && au_test_subdir(d1, d2)) + || d1 < d2) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + di_write_lock_child(d2); + di_write_lock_child2(d1); + } +} + +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if ((isdir && au_test_subdir(d1, d2)) + || d1 < d2) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + di_write_lock_parent(d2); + di_write_lock_parent2(d1); + } +} + +void di_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock(d1); + if (d_inode(d1) == d_inode(d2)) + au_rw_write_unlock(&au_di(d2)->di_rwsem); + else + di_write_unlock(d2); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *d; + + DiMustAnyLock(dentry); + + if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_hdentry(au_di(dentry), bindex)->hd_dentry; + AuDebugOn(d && au_dcount(d) <= 0); + return d; +} + +/* + * extended version of au_h_dptr(). + * returns a hashed and positive (or linkable) h_dentry in bindex, NULL, or + * error. + */ +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + AuDebugOn(d_really_is_negative(dentry)); + + h_dentry = NULL; + if (au_dbtop(dentry) <= bindex + && bindex <= au_dbbot(dentry)) + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && !au_d_linkable(h_dentry)) { + dget(h_dentry); + goto out; /* success */ + } + + inode = d_inode(dentry); + AuDebugOn(bindex < au_ibtop(inode)); + AuDebugOn(au_ibbot(inode) < bindex); + h_inode = au_h_iptr(inode, bindex); + h_dentry = d_find_alias(h_inode); + if (h_dentry) { + if (!IS_ERR(h_dentry)) { + if (!au_d_linkable(h_dentry)) + goto out; /* success */ + dput(h_dentry); + } else + goto out; + } + + if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { + h_dentry = au_plink_lkup(inode, bindex); + AuDebugOn(!h_dentry); + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + h_dentry = NULL; + } + } + +out: + AuDbgDentry(h_dentry); + return h_dentry; +} + +aufs_bindex_t au_dbtail(struct dentry *dentry) +{ + aufs_bindex_t bbot, bwh; + + bbot = au_dbbot(dentry); + if (0 <= bbot) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bbot) + return bwh - 1; + } + return bbot; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bbot, bopq; + + bbot = au_dbtail(dentry); + if (0 <= bbot) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bbot) + bbot = bopq; + } + return bbot; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_dinfo *dinfo; + struct au_hdentry *hd; + struct au_branch *br; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + hd = au_hdentry(dinfo, bindex); + au_hdput(hd); + hd->hd_dentry = h_dentry; + if (h_dentry) { + br = au_sbr(dentry->d_sb, bindex); + hd->hd_id = br->br_id; + } +} + +int au_dbrange_test(struct dentry *dentry) +{ + int err; + aufs_bindex_t btop, bbot; + + err = 0; + btop = au_dbtop(dentry); + bbot = au_dbbot(dentry); + if (btop >= 0) + AuDebugOn(bbot < 0 && btop > bbot); + else { + err = -EIO; + AuDebugOn(bbot >= 0); + } + + return err; +} + +int au_digen_test(struct dentry *dentry, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(au_digen(dentry) != sigen + || au_iigen_test(d_inode(dentry), sigen))) + err = -EIO; + + return err; +} + +void au_update_digen(struct dentry *dentry) +{ + atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +void au_update_dbrange(struct dentry *dentry, int do_put_zero) +{ + struct au_dinfo *dinfo; + struct dentry *h_d; + struct au_hdentry *hdp; + aufs_bindex_t bindex, bbot; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_btop < 0) + return; + + if (do_put_zero) { + bbot = dinfo->di_bbot; + bindex = dinfo->di_btop; + hdp = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, hdp++) { + h_d = hdp->hd_dentry; + if (h_d && d_is_negative(h_d)) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_btop = 0; + hdp = au_hdentry(dinfo, dinfo->di_btop); + for (; dinfo->di_btop <= dinfo->di_bbot; dinfo->di_btop++, hdp++) + if (hdp->hd_dentry) + break; + if (dinfo->di_btop > dinfo->di_bbot) { + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + return; + } + + hdp = au_hdentry(dinfo, dinfo->di_bbot); + for (; dinfo->di_bbot >= 0; dinfo->di_bbot--, hdp--) + if (hdp->hd_dentry) + break; + AuDebugOn(dinfo->di_btop > dinfo->di_bbot || dinfo->di_bbot < 0); +} + +void au_update_dbtop(struct dentry *dentry) +{ + aufs_bindex_t bindex, bbot; + struct dentry *h_dentry; + + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbtop(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbbot(struct dentry *dentry) +{ + aufs_bindex_t bindex, btop; + struct dentry *h_dentry; + + btop = au_dbtop(dentry); + for (bindex = au_dbbot(dentry); bindex >= btop; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbbot(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) +{ + aufs_bindex_t bindex, bbot; + + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} --- linux-5.8.0.orig/fs/aufs/dir.c +++ linux-5.8.0/fs/aufs/dir.c @@ -0,0 +1,763 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#include +#include +#include "aufs.h" + +void au_add_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink += h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink += 2; + smp_mb(); /* for i_nlink */ + /* 0 can happen in revaliding */ + set_nlink(dir, nlink); +} + +void au_sub_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink -= h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink -= 2; + smp_mb(); /* for i_nlink */ + /* nlink == 0 means the branch-fs is broken */ + set_nlink(dir, nlink); +} + +loff_t au_dir_size(struct file *file, struct dentry *dentry) +{ + loff_t sz; + aufs_bindex_t bindex, bbot; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!d_is_dir(file->f_path.dentry)); + + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); + bindex <= bbot && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file && file_inode(h_file)) + sz += vfsub_f_size_read(h_file); + } + } else { + AuDebugOn(!dentry); + AuDebugOn(!d_is_dir(dentry)); + + bbot = au_dbtaildir(dentry); + for (bindex = au_dbtop(dentry); + bindex <= bbot && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) + sz += i_size_read(d_inode(h_dentry)); + } + } + if (sz < KMALLOC_MAX_SIZE) + sz = roundup_pow_of_two(sz); + if (sz > KMALLOC_MAX_SIZE) + sz = KMALLOC_MAX_SIZE; + else if (sz < NAME_MAX) { + BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); + sz = AUFS_RDBLK_DEF; + } + return sz; +} + +struct au_dir_ts_arg { + struct dentry *dentry; + aufs_bindex_t brid; +}; + +static void au_do_dir_ts(void *arg) +{ + struct au_dir_ts_arg *a = arg; + struct au_dtime dt; + struct path h_path; + struct inode *dir, *h_dir; + struct super_block *sb; + struct au_branch *br; + struct au_hinode *hdir; + int err; + aufs_bindex_t btop, bindex; + + sb = a->dentry->d_sb; + if (d_really_is_negative(a->dentry)) + goto out; + /* no dir->i_mutex lock */ + aufs_read_lock(a->dentry, AuLock_DW); /* noflush */ + + dir = d_inode(a->dentry); + btop = au_ibtop(dir); + bindex = au_br_index(sb, a->brid); + if (bindex < btop) + goto out_unlock; + + br = au_sbr(sb, bindex); + h_path.dentry = au_h_dptr(a->dentry, bindex); + if (!h_path.dentry) + goto out_unlock; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, a->dentry, &h_path); + + br = au_sbr(sb, btop); + if (!au_br_writable(br->br_perm)) + goto out_unlock; + h_path.dentry = au_h_dptr(a->dentry, btop); + h_path.mnt = au_br_mnt(br); + err = vfsub_mnt_want_write(h_path.mnt); + if (err) + goto out_unlock; + hdir = au_hi(dir, btop); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + h_dir = au_h_iptr(dir, btop); + if (h_dir->i_nlink + && timespec64_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) { + dt.dt_h_path = h_path; + au_dtime_revert(&dt); + } + au_hn_inode_unlock(hdir); + vfsub_mnt_drop_write(h_path.mnt); + au_cpup_attr_timesizes(dir); + +out_unlock: + aufs_read_unlock(a->dentry, AuLock_DW); +out: + dput(a->dentry); + au_nwt_done(&au_sbi(sb)->si_nowait); + au_kfree_try_rcu(arg); +} + +void au_dir_ts(struct inode *dir, aufs_bindex_t bindex) +{ + int perm, wkq_err; + aufs_bindex_t btop; + struct au_dir_ts_arg *arg; + struct dentry *dentry; + struct super_block *sb; + + IMustLock(dir); + + dentry = d_find_any_alias(dir); + AuDebugOn(!dentry); + sb = dentry->d_sb; + btop = au_ibtop(dir); + if (btop == bindex) { + au_cpup_attr_timesizes(dir); + goto out; + } + + perm = au_sbr_perm(sb, btop); + if (!au_br_writable(perm)) + goto out; + + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (!arg) + goto out; + + arg->dentry = dget(dentry); /* will be dput-ted by au_do_dir_ts() */ + arg->brid = au_sbr_id(sb, bindex); + wkq_err = au_wkq_nowait(au_do_dir_ts, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_err("wkq %d\n", wkq_err); + dput(dentry); + au_kfree_try_rcu(arg); + } + +out: + dput(dentry); +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, btop; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_path.dentry; + btop = au_dbtop(dentry); + for (bindex = au_fbtop(file); bindex < btop; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbtop(file, btop); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbbot_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbbot_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_file = au_hf_dir(file, bindex); + if (h_file) + continue; + + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* close all? */ + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + err = 0; + +out: + return err; +} + +static int do_open_dir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; + struct vfsmount *mnt; + + FiMustWriteLock(file); + AuDebugOn(h_file); + + err = 0; + mnt = file->f_path.mnt; + dentry = file->f_path.dentry; + file->f_version = inode_query_iversion(d_inode(dentry)); + bindex = au_dbtop(dentry); + au_set_fbtop(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbbot_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + err = vfsub_test_mntns(mnt, h_dentry->d_sb); + if (unlikely(err)) + break; + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + break; + } + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + if (!err) + return 0; /* success */ + + /* close all */ + for (bindex = au_fbtop(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbtop(file, -1); + au_set_fbbot_dir(file, -1); + + return err; +} + +static int aufs_open_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_fidir *fidir; + + err = -ENOMEM; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fidir = au_fidir_alloc(sb); + if (fidir) { + struct au_do_open_args args = { + .open = do_open_dir, + .fidir = fidir + }; + err = au_do_open(file, &args); + if (unlikely(err)) + au_kfree_rcu(fidir); + } + si_read_unlock(sb); + return err; +} + +static int aufs_release_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + struct au_vdir *vdir_cache; + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hf; + aufs_bindex_t bindex, bbot; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + au_hbl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + vdir_cache = fidir->fd_vdir_cache; /* lock-free */ + if (vdir_cache) + au_vdir_free(vdir_cache); + + bindex = finfo->fi_btop; + if (bindex >= 0) { + hf = fidir->fd_hfile + bindex; + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bbot = fidir->fd_bbot; + for (; bindex <= bbot; bindex++, hf++) + if (hf->hf_file) + au_hfput(hf, /*execed*/0); + } + au_kfree_rcu(fidir); + finfo->fi_hdir = NULL; + } + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_dir(struct file *file, fl_owner_t id) +{ + int err; + aufs_bindex_t bindex, bbot; + struct file *h_file; + + err = 0; + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file) + err = vfsub_flush(h_file, id); + } + return err; +} + +static int aufs_flush_dir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_dir); +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) +{ + int err; + aufs_bindex_t bbot, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = d_inode(dentry); + IMustLock(inode); + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); !err && bindex <= bbot; bindex++) { + struct path h_path; + + if (au_test_ro(sb, bindex, inode)) + continue; + h_path.dentry = au_h_dptr(dentry, bindex); + if (!h_path.dentry) + continue; + + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_fsync(NULL, &h_path, datasync); + } + + return err; +} + +static int au_do_fsync_dir(struct file *file, int datasync) +{ + int err; + aufs_bindex_t bbot, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); + if (unlikely(err)) + goto out; + + inode = file_inode(file); + sb = inode->i_sb; + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { + h_file = au_hf_dir(file, bindex); + if (!h_file || au_test_ro(sb, bindex, inode)) + continue; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + } + +out: + return err; +} + +/* + * @file may be NULL + */ +static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct dentry *dentry; + struct inode *inode; + struct super_block *sb; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + inode_lock(inode); + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (file) + err = au_do_fsync_dir(file, datasync); + else { + di_write_lock_child(dentry); + err = au_do_fsync_dir_no_file(dentry, datasync); + } + au_cpup_attr_timesizes(inode); + di_write_unlock(dentry); + if (file) + fi_write_unlock(file); + + si_read_unlock(sb); + inode_unlock(inode); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_iterate_shared(struct file *file, struct dir_context *ctx) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); + + dentry = file->f_path.dentry; + inode = d_inode(dentry); + IMustLock(inode); + + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (!err) + err = au_vdir_init(file); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + if (!au_test_nfsd()) { + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + } else { + /* + * nfsd filldir may call lookup_one_len(), vfs_getattr(), + * encode_fh() and others. + */ + atomic_inc(&h_inode->i_count); + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + fi_write_unlock(file); + iput(h_inode); + + AuTraceErr(err); + return err; + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuTestEmpty_WHONLY 1 +#define AuTestEmpty_CALLED (1 << 1) +#define AuTestEmpty_SHWH (1 << 2) +#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) +#define au_fset_testempty(flags, name) \ + do { (flags) |= AuTestEmpty_##name; } while (0) +#define au_fclr_testempty(flags, name) \ + do { (flags) &= ~AuTestEmpty_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuTestEmpty_SHWH +#define AuTestEmpty_SHWH 0 +#endif + +struct test_empty_arg { + struct dir_context ctx; + struct au_nhash *whlist; + unsigned int flags; + int err; + aufs_bindex_t bindex; +}; + +static int test_empty_cb(struct dir_context *ctx, const char *__name, + int namelen, loff_t offset __maybe_unused, u64 ino, + unsigned int d_type) +{ + struct test_empty_arg *arg = container_of(ctx, struct test_empty_arg, + ctx); + char *name = (void *)__name; + + arg->err = 0; + au_fset_testempty(arg->flags, CALLED); + /* smp_mb(); */ + if (name[0] == '.' + && (namelen == 1 || (name[1] == '.' && namelen == 2))) + goto out; /* success */ + + if (namelen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (au_ftest_testempty(arg->flags, WHONLY) + && !au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = -ENOTEMPTY; + goto out; + } + + name += AUFS_WH_PFX_LEN; + namelen -= AUFS_WH_PFX_LEN; + if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = au_nhash_append_wh + (arg->whlist, name, namelen, ino, d_type, arg->bindex, + au_ftest_testempty(arg->flags, SHWH)); + +out: + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err; + struct file *h_file; + struct au_branch *br; + + h_file = au_h_open(dentry, arg->bindex, + O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, + /*file*/NULL, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && !file_inode(h_file)->i_nlink) + goto out_put; + + do { + arg->err = 0; + au_fclr_testempty(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_testempty(arg->flags, CALLED)); + +out_put: + fput(h_file); + br = au_sbr(dentry->d_sb, arg->bindex); + au_lcnt_dec(&br->br_nfiles); +out: + return err; +} + +struct do_test_empty_args { + int *errp; + struct dentry *dentry; + struct test_empty_arg *arg; +}; + +static void call_do_test_empty(void *args) +{ + struct do_test_empty_args *a = args; + *a->errp = do_test_empty(a->dentry, a->arg); +} + +static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = d_inode(h_dentry); + /* todo: i_mode changes anytime? */ + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); + inode_unlock_shared(h_inode); + if (!err) + err = do_test_empty(dentry, arg); + else { + struct do_test_empty_args args = { + .errp = &err, + .dentry = dentry, + .arg = arg + }; + unsigned int flags = arg->flags; + + wkq_err = au_wkq_wait(call_do_test_empty, &args); + if (unlikely(wkq_err)) + err = wkq_err; + arg->flags = flags; + } + + return err; +} + +int au_test_empty_lower(struct dentry *dentry) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bindex, btop, btail; + struct au_nhash whlist; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + int (*test_empty)(struct dentry *dentry, struct test_empty_arg *arg); + + SiMustAnyLock(dentry->d_sb); + + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + arg.flags = 0; + arg.whlist = &whlist; + btop = au_dbtop(dentry); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + test_empty = do_test_empty; + if (au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1)) + test_empty = sio_test_empty; + arg.bindex = btop; + err = test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = btop + 1; !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = test_empty(dentry, &arg); + } + } + +out_whlist: + au_nhash_wh_free(&whlist); +out: + return err; +} + +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) +{ + int err; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + aufs_bindex_t bindex, btail; + + err = 0; + arg.whlist = whlist; + arg.flags = AuTestEmpty_WHONLY; + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + btail = au_dbtaildir(dentry); + for (bindex = au_dbtop(dentry); !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = sio_test_empty(dentry, &arg); + } + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_dir_fop = { + .owner = THIS_MODULE, + .llseek = default_llseek, + .read = generic_read_dir, + .iterate_shared = aufs_iterate_shared, + .unlocked_ioctl = aufs_ioctl_dir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_dir, +#endif + .open = aufs_open_dir, + .release = aufs_release_dir, + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; --- linux-5.8.0.orig/fs/aufs/dir.h +++ linux-5.8.0/fs/aufs/dir.h @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#ifndef __AUFS_DIR_H__ +#define __AUFS_DIR_H__ + +#ifdef __KERNEL__ + +#include + +/* ---------------------------------------------------------------------- */ + +/* need to be faster and smaller */ + +struct au_nhash { + unsigned int nh_num; + struct hlist_head *nh_head; +}; + +struct au_vdir_destr { + unsigned char len; + unsigned char name[]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +struct au_vdir_de { + ino_t de_ino; + unsigned char de_type; + /* caution: packed */ + struct au_vdir_destr de_str; +} __packed; + +struct au_vdir_wh { + struct hlist_node wh_hash; +#ifdef CONFIG_AUFS_SHWH + ino_t wh_ino; + aufs_bindex_t wh_bindex; + unsigned char wh_type; +#else + aufs_bindex_t wh_bindex; +#endif + /* caution: packed */ + struct au_vdir_destr wh_str; +} __packed; + +union au_vdir_deblk_p { + unsigned char *deblk; + struct au_vdir_de *de; +}; + +struct au_vdir { + unsigned char **vd_deblk; + unsigned long vd_nblk; + struct { + unsigned long ul; + union au_vdir_deblk_p p; + } vd_last; + + u64 vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dir.c */ +extern const struct file_operations aufs_dir_fop; +void au_add_nlink(struct inode *dir, struct inode *h_dir); +void au_sub_nlink(struct inode *dir, struct inode *h_dir); +loff_t au_dir_size(struct file *file, struct dentry *dentry); +void au_dir_ts(struct inode *dir, aufs_bindex_t bsrc); +int au_test_empty_lower(struct dentry *dentry); +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); + +/* vdir.c */ +unsigned int au_rdhash_est(loff_t sz); +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); +void au_nhash_wh_free(struct au_nhash *whlist); +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit); +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh); +void au_vdir_free(struct au_vdir *vdir); +int au_vdir_init(struct file *file); +int au_vdir_fill_de(struct file *file, struct dir_context *ctx); + +/* ioctl.c */ +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); + +#ifdef CONFIG_AUFS_RDU +/* rdu.c */ +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg); +#endif +#else +AuStub(long, au_rdu_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#ifdef CONFIG_COMPAT +AuStub(long, au_rdu_compat_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#endif +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ --- linux-5.8.0.orig/fs/aufs/dirren.c +++ linux-5.8.0/fs/aufs/dirren.c @@ -0,0 +1,1316 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * special handling in renaming a directory + * in order to support looking-up the before-renamed name on the lower readonly + * branches + */ + +#include +#include "aufs.h" + +static void au_dr_hino_del(struct au_dr_br *dr, struct au_dr_hino *ent) +{ + int idx; + + idx = au_dr_ihash(ent->dr_h_ino); + au_hbl_del(&ent->dr_hnode, dr->dr_h_ino + idx); +} + +static int au_dr_hino_test_empty(struct au_dr_br *dr) +{ + int ret, i; + struct hlist_bl_head *hbl; + + ret = 1; + for (i = 0; ret && i < AuDirren_NHASH; i++) { + hbl = dr->dr_h_ino + i; + hlist_bl_lock(hbl); + ret &= hlist_bl_empty(hbl); + hlist_bl_unlock(hbl); + } + + return ret; +} + +static struct au_dr_hino *au_dr_hino_find(struct au_dr_br *dr, ino_t ino) +{ + struct au_dr_hino *found, *ent; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + int idx; + + found = NULL; + idx = au_dr_ihash(ino); + hbl = dr->dr_h_ino + idx; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) + if (ent->dr_h_ino == ino) { + found = ent; + break; + } + hlist_bl_unlock(hbl); + + return found; +} + +int au_dr_hino_test_add(struct au_dr_br *dr, ino_t ino, + struct au_dr_hino *add_ent) +{ + int found, idx; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_dr_hino *ent; + + found = 0; + idx = au_dr_ihash(ino); + hbl = dr->dr_h_ino + idx; +#if 0 /* debug print */ + { + struct hlist_bl_node *tmp; + + hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) + AuDbg("hi%llu\n", (unsigned long long)ent->dr_h_ino); + } +#endif + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) + if (ent->dr_h_ino == ino) { + found = 1; + break; + } + if (!found && add_ent) + hlist_bl_add_head(&add_ent->dr_hnode, hbl); + hlist_bl_unlock(hbl); + + if (!found && add_ent) + AuDbg("i%llu added\n", (unsigned long long)add_ent->dr_h_ino); + + return found; +} + +void au_dr_hino_free(struct au_dr_br *dr) +{ + int i; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_dr_hino *ent; + + /* SiMustWriteLock(sb); */ + + for (i = 0; i < AuDirren_NHASH; i++) { + hbl = dr->dr_h_ino + i; + /* no spinlock since sbinfo must be write-locked */ + hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) + au_kfree_rcu(ent); + INIT_HLIST_BL_HEAD(hbl); + } +} + +/* returns the number of inodes or an error */ +static int au_dr_hino_store(struct super_block *sb, struct au_branch *br, + struct file *hinofile) +{ + int err, i; + ssize_t ssz; + loff_t pos, oldsize; + __be64 u64; + struct inode *hinoinode; + struct hlist_bl_head *hbl; + struct hlist_bl_node *n1, *n2; + struct au_dr_hino *ent; + + SiMustWriteLock(sb); + AuDebugOn(!au_br_writable(br->br_perm)); + + hinoinode = file_inode(hinofile); + oldsize = i_size_read(hinoinode); + + err = 0; + pos = 0; + hbl = br->br_dirren.dr_h_ino; + for (i = 0; !err && i < AuDirren_NHASH; i++, hbl++) { + /* no bit-lock since sbinfo must be write-locked */ + hlist_bl_for_each_entry_safe(ent, n1, n2, hbl, dr_hnode) { + AuDbg("hi%llu, %pD2\n", + (unsigned long long)ent->dr_h_ino, hinofile); + u64 = cpu_to_be64(ent->dr_h_ino); + ssz = vfsub_write_k(hinofile, &u64, sizeof(u64), &pos); + if (ssz == sizeof(u64)) + continue; + + /* write error */ + pr_err("ssz %zd, %pD2\n", ssz, hinofile); + err = -ENOSPC; + if (ssz < 0) + err = ssz; + break; + } + } + /* regardless the error */ + if (pos < oldsize) { + err = vfsub_trunc(&hinofile->f_path, pos, /*attr*/0, hinofile); + AuTraceErr(err); + } + + AuTraceErr(err); + return err; +} + +static int au_dr_hino_load(struct au_dr_br *dr, struct file *hinofile) +{ + int err, hidx; + ssize_t ssz; + size_t sz, n; + loff_t pos; + uint64_t u64; + struct au_dr_hino *ent; + struct inode *hinoinode; + struct hlist_bl_head *hbl; + + err = 0; + pos = 0; + hbl = dr->dr_h_ino; + hinoinode = file_inode(hinofile); + sz = i_size_read(hinoinode); + AuDebugOn(sz % sizeof(u64)); + n = sz / sizeof(u64); + while (n--) { + ssz = vfsub_read_k(hinofile, &u64, sizeof(u64), &pos); + if (unlikely(ssz != sizeof(u64))) { + pr_err("ssz %zd, %pD2\n", ssz, hinofile); + err = -EINVAL; + if (ssz < 0) + err = ssz; + goto out_free; + } + + ent = kmalloc(sizeof(*ent), GFP_NOFS); + if (!ent) { + err = -ENOMEM; + AuTraceErr(err); + goto out_free; + } + ent->dr_h_ino = be64_to_cpu((__force __be64)u64); + AuDbg("hi%llu, %pD2\n", + (unsigned long long)ent->dr_h_ino, hinofile); + hidx = au_dr_ihash(ent->dr_h_ino); + au_hbl_add(&ent->dr_hnode, hbl + hidx); + } + goto out; /* success */ + +out_free: + au_dr_hino_free(dr); +out: + AuTraceErr(err); + return err; +} + +/* + * @bindex/@br is a switch to distinguish whether suspending hnotify or not. + * @path is a switch to distinguish load and store. + */ +static int au_dr_hino(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br, const struct path *path) +{ + int err, flags; + unsigned char load, suspend; + struct file *hinofile; + struct au_hinode *hdir; + struct inode *dir, *delegated; + struct path hinopath; + struct qstr hinoname = QSTR_INIT(AUFS_WH_DR_BRHINO, + sizeof(AUFS_WH_DR_BRHINO) - 1); + + AuDebugOn(bindex < 0 && !br); + AuDebugOn(bindex >= 0 && br); + + err = -EINVAL; + suspend = !br; + if (suspend) + br = au_sbr(sb, bindex); + load = !!path; + if (!load) { + path = &br->br_path; + AuDebugOn(!au_br_writable(br->br_perm)); + if (unlikely(!au_br_writable(br->br_perm))) + goto out; + } + + hdir = NULL; + if (suspend) { + dir = d_inode(sb->s_root); + hdir = au_hinode(au_ii(dir), bindex); + dir = hdir->hi_inode; + au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); + } else { + dir = d_inode(path->dentry); + inode_lock_nested(dir, AuLsc_I_CHILD); + } + hinopath.dentry = vfsub_lkup_one(&hinoname, path->dentry); + err = PTR_ERR(hinopath.dentry); + if (IS_ERR(hinopath.dentry)) + goto out_unlock; + + err = 0; + flags = O_RDONLY; + if (load) { + if (d_is_negative(hinopath.dentry)) + goto out_dput; /* success */ + } else { + if (au_dr_hino_test_empty(&br->br_dirren)) { + if (d_is_positive(hinopath.dentry)) { + delegated = NULL; + err = vfsub_unlink(dir, &hinopath, &delegated, + /*force*/0); + AuTraceErr(err); + if (unlikely(err)) + pr_err("ignored err %d, %pd2\n", + err, hinopath.dentry); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + err = 0; + } + goto out_dput; + } else if (!d_is_positive(hinopath.dentry)) { + err = vfsub_create(dir, &hinopath, 0600, + /*want_excl*/false); + AuTraceErr(err); + if (unlikely(err)) + goto out_dput; + } + flags = O_WRONLY; + } + hinopath.mnt = path->mnt; + hinofile = vfsub_dentry_open(&hinopath, flags); + if (suspend) + au_hn_inode_unlock(hdir); + else + inode_unlock(dir); + dput(hinopath.dentry); + AuTraceErrPtr(hinofile); + if (IS_ERR(hinofile)) { + err = PTR_ERR(hinofile); + goto out; + } + + if (load) + err = au_dr_hino_load(&br->br_dirren, hinofile); + else + err = au_dr_hino_store(sb, br, hinofile); + fput(hinofile); + goto out; + +out_dput: + dput(hinopath.dentry); +out_unlock: + if (suspend) + au_hn_inode_unlock(hdir); + else + inode_unlock(dir); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_dr_brid_init(struct au_dr_brid *brid, const struct path *path) +{ + int err; + struct kstatfs kstfs; + dev_t dev; + struct dentry *dentry; + struct super_block *sb; + + err = vfs_statfs((void *)path, &kstfs); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + /* todo: support for UUID */ + + if (kstfs.f_fsid.val[0] || kstfs.f_fsid.val[1]) { + brid->type = AuBrid_FSID; + brid->fsid = kstfs.f_fsid; + } else { + dentry = path->dentry; + sb = dentry->d_sb; + dev = sb->s_dev; + if (dev) { + brid->type = AuBrid_DEV; + brid->dev = dev; + } + } + +out: + return err; +} + +int au_dr_br_init(struct super_block *sb, struct au_branch *br, + const struct path *path) +{ + int err, i; + struct au_dr_br *dr; + struct hlist_bl_head *hbl; + + dr = &br->br_dirren; + hbl = dr->dr_h_ino; + for (i = 0; i < AuDirren_NHASH; i++, hbl++) + INIT_HLIST_BL_HEAD(hbl); + + err = au_dr_brid_init(&dr->dr_brid, path); + if (unlikely(err)) + goto out; + + if (au_opt_test(au_mntflags(sb), DIRREN)) + err = au_dr_hino(sb, /*bindex*/-1, br, path); + +out: + AuTraceErr(err); + return err; +} + +int au_dr_br_fin(struct super_block *sb, struct au_branch *br) +{ + int err; + + err = 0; + if (au_br_writable(br->br_perm)) + err = au_dr_hino(sb, /*bindex*/-1, br, /*path*/NULL); + if (!err) + au_dr_hino_free(&br->br_dirren); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_brid_str(struct au_dr_brid *brid, struct inode *h_inode, + char *buf, size_t sz) +{ + int err; + unsigned int major, minor; + char *p; + + p = buf; + err = snprintf(p, sz, "%d_", brid->type); + AuDebugOn(err > sz); + p += err; + sz -= err; + switch (brid->type) { + case AuBrid_Unset: + return -EINVAL; + case AuBrid_UUID: + err = snprintf(p, sz, "%pU", brid->uuid.b); + break; + case AuBrid_FSID: + err = snprintf(p, sz, "%08x-%08x", + brid->fsid.val[0], brid->fsid.val[1]); + break; + case AuBrid_DEV: + major = MAJOR(brid->dev); + minor = MINOR(brid->dev); + if (major <= 0xff && minor <= 0xff) + err = snprintf(p, sz, "%02x%02x", major, minor); + else + err = snprintf(p, sz, "%03x:%05x", major, minor); + break; + } + AuDebugOn(err > sz); + p += err; + sz -= err; + err = snprintf(p, sz, "_%llu", (unsigned long long)h_inode->i_ino); + AuDebugOn(err > sz); + p += err; + sz -= err; + + return p - buf; +} + +static int au_drinfo_name(struct au_branch *br, char *name, int len) +{ + int rlen; + struct dentry *br_dentry; + struct inode *br_inode; + + br_dentry = au_br_dentry(br); + br_inode = d_inode(br_dentry); + rlen = au_brid_str(&br->br_dirren.dr_brid, br_inode, name, len); + AuDebugOn(rlen >= AUFS_DIRREN_ENV_VAL_SZ); + AuDebugOn(rlen > len); + + return rlen; +} + +/* ---------------------------------------------------------------------- */ + +/* + * from the given @h_dentry, construct drinfo at @*fdata. + * when the size of @*fdata is not enough, reallocate and return new @fdata and + * @allocated. + */ +static int au_drinfo_construct(struct au_drinfo_fdata **fdata, + struct dentry *h_dentry, + unsigned char *allocated) +{ + int err, v; + struct au_drinfo_fdata *f, *p; + struct au_drinfo *drinfo; + struct inode *h_inode; + struct qstr *qname; + + err = 0; + f = *fdata; + h_inode = d_inode(h_dentry); + qname = &h_dentry->d_name; + drinfo = &f->drinfo; + drinfo->ino = (__force uint64_t)cpu_to_be64(h_inode->i_ino); + drinfo->oldnamelen = qname->len; + if (*allocated < sizeof(*f) + qname->len) { + v = roundup_pow_of_two(*allocated + qname->len); + p = au_krealloc(f, v, GFP_NOFS, /*may_shrink*/0); + if (unlikely(!p)) { + err = -ENOMEM; + AuTraceErr(err); + goto out; + } + f = p; + *fdata = f; + *allocated = v; + drinfo = &f->drinfo; + } + memcpy(drinfo->oldname, qname->name, qname->len); + AuDbg("i%llu, %.*s\n", + be64_to_cpu((__force __be64)drinfo->ino), drinfo->oldnamelen, + drinfo->oldname); + +out: + AuTraceErr(err); + return err; +} + +/* callers have to free the return value */ +static struct au_drinfo *au_drinfo_read_k(struct file *file, ino_t h_ino) +{ + struct au_drinfo *ret, *drinfo; + struct au_drinfo_fdata fdata; + int len; + loff_t pos; + ssize_t ssz; + + ret = ERR_PTR(-EIO); + pos = 0; + ssz = vfsub_read_k(file, &fdata, sizeof(fdata), &pos); + if (unlikely(ssz != sizeof(fdata))) { + AuIOErr("ssz %zd, %u, %pD2\n", + ssz, (unsigned int)sizeof(fdata), file); + goto out; + } + + fdata.magic = ntohl((__force __be32)fdata.magic); + switch (fdata.magic) { + case AUFS_DRINFO_MAGIC_V1: + break; + default: + AuIOErr("magic-num 0x%x, 0x%x, %pD2\n", + fdata.magic, AUFS_DRINFO_MAGIC_V1, file); + goto out; + } + + drinfo = &fdata.drinfo; + len = drinfo->oldnamelen; + if (!len) { + AuIOErr("broken drinfo %pD2\n", file); + goto out; + } + + ret = NULL; + drinfo->ino = be64_to_cpu((__force __be64)drinfo->ino); + if (unlikely(h_ino && drinfo->ino != h_ino)) { + AuDbg("ignored i%llu, i%llu, %pD2\n", + (unsigned long long)drinfo->ino, + (unsigned long long)h_ino, file); + goto out; /* success */ + } + + ret = kmalloc(sizeof(*ret) + len, GFP_NOFS); + if (unlikely(!ret)) { + ret = ERR_PTR(-ENOMEM); + AuTraceErrPtr(ret); + goto out; + } + + *ret = *drinfo; + ssz = vfsub_read_k(file, (void *)ret->oldname, len, &pos); + if (unlikely(ssz != len)) { + au_kfree_rcu(ret); + ret = ERR_PTR(-EIO); + AuIOErr("ssz %zd, %u, %pD2\n", ssz, len, file); + goto out; + } + + AuDbg("oldname %.*s\n", ret->oldnamelen, ret->oldname); + +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* in order to be revertible */ +struct au_drinfo_rev_elm { + int created; + struct dentry *info_dentry; + struct au_drinfo *info_last; +}; + +struct au_drinfo_rev { + unsigned char already; + aufs_bindex_t nelm; + struct au_drinfo_rev_elm elm[]; +}; + +/* todo: isn't it too large? */ +struct au_drinfo_store { + struct path h_ppath; + struct dentry *h_dentry; + struct au_drinfo_fdata *fdata; + char *infoname; /* inside of whname, just after PFX */ + char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ]; + aufs_bindex_t btgt, btail; + unsigned char no_sio, + allocated, /* current size of *fdata */ + infonamelen, /* room size for p */ + whnamelen, /* length of the generated name */ + renameback; /* renamed back */ +}; + +/* on rename(2) error, the caller should revert it using @elm */ +static int au_drinfo_do_store(struct au_drinfo_store *w, + struct au_drinfo_rev_elm *elm) +{ + int err, len; + ssize_t ssz; + loff_t pos; + struct path infopath = { + .mnt = w->h_ppath.mnt + }; + struct inode *h_dir, *h_inode, *delegated; + struct file *infofile; + struct qstr *qname; + + AuDebugOn(elm + && memcmp(elm, page_address(ZERO_PAGE(0)), sizeof(*elm))); + + infopath.dentry = vfsub_lookup_one_len(w->whname, w->h_ppath.dentry, + w->whnamelen); + AuTraceErrPtr(infopath.dentry); + if (IS_ERR(infopath.dentry)) { + err = PTR_ERR(infopath.dentry); + goto out; + } + + err = 0; + h_dir = d_inode(w->h_ppath.dentry); + if (elm && d_is_negative(infopath.dentry)) { + err = vfsub_create(h_dir, &infopath, 0600, /*want_excl*/true); + AuTraceErr(err); + if (unlikely(err)) + goto out_dput; + elm->created = 1; + elm->info_dentry = dget(infopath.dentry); + } + + infofile = vfsub_dentry_open(&infopath, O_RDWR); + AuTraceErrPtr(infofile); + if (IS_ERR(infofile)) { + err = PTR_ERR(infofile); + goto out_dput; + } + + h_inode = d_inode(infopath.dentry); + if (elm && i_size_read(h_inode)) { + h_inode = d_inode(w->h_dentry); + elm->info_last = au_drinfo_read_k(infofile, h_inode->i_ino); + AuTraceErrPtr(elm->info_last); + if (IS_ERR(elm->info_last)) { + err = PTR_ERR(elm->info_last); + elm->info_last = NULL; + AuDebugOn(elm->info_dentry); + goto out_fput; + } + } + + if (elm && w->renameback) { + delegated = NULL; + err = vfsub_unlink(h_dir, &infopath, &delegated, /*force*/0); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + goto out_fput; + } + + pos = 0; + qname = &w->h_dentry->d_name; + len = sizeof(*w->fdata) + qname->len; + if (!elm) + len = sizeof(*w->fdata) + w->fdata->drinfo.oldnamelen; + ssz = vfsub_write_k(infofile, w->fdata, len, &pos); + if (ssz == len) { + AuDbg("hi%llu, %.*s\n", w->fdata->drinfo.ino, + w->fdata->drinfo.oldnamelen, w->fdata->drinfo.oldname); + goto out_fput; /* success */ + } else { + err = -EIO; + if (ssz < 0) + err = ssz; + /* the caller should revert it using @elm */ + } + +out_fput: + fput(infofile); +out_dput: + dput(infopath.dentry); +out: + AuTraceErr(err); + return err; +} + +struct au_call_drinfo_do_store_args { + int *errp; + struct au_drinfo_store *w; + struct au_drinfo_rev_elm *elm; +}; + +static void au_call_drinfo_do_store(void *args) +{ + struct au_call_drinfo_do_store_args *a = args; + + *a->errp = au_drinfo_do_store(a->w, a->elm); +} + +static int au_drinfo_store_sio(struct au_drinfo_store *w, + struct au_drinfo_rev_elm *elm) +{ + int err, wkq_err; + + if (w->no_sio) + err = au_drinfo_do_store(w, elm); + else { + struct au_call_drinfo_do_store_args a = { + .errp = &err, + .w = w, + .elm = elm + }; + wkq_err = au_wkq_wait(au_call_drinfo_do_store, &a); + if (unlikely(wkq_err)) + err = wkq_err; + } + AuTraceErr(err); + + return err; +} + +static int au_drinfo_store_work_init(struct au_drinfo_store *w, + aufs_bindex_t btgt) +{ + int err; + + memset(w, 0, sizeof(*w)); + w->allocated = roundup_pow_of_two(sizeof(*w->fdata) + 40); + strcpy(w->whname, AUFS_WH_DR_INFO_PFX); + w->infoname = w->whname + sizeof(AUFS_WH_DR_INFO_PFX) - 1; + w->infonamelen = sizeof(w->whname) - sizeof(AUFS_WH_DR_INFO_PFX); + w->btgt = btgt; + w->no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); + + err = -ENOMEM; + w->fdata = kcalloc(1, w->allocated, GFP_NOFS); + if (unlikely(!w->fdata)) { + AuTraceErr(err); + goto out; + } + w->fdata->magic = (__force uint32_t)htonl(AUFS_DRINFO_MAGIC_V1); + err = 0; + +out: + return err; +} + +static void au_drinfo_store_work_fin(struct au_drinfo_store *w) +{ + au_kfree_rcu(w->fdata); +} + +static void au_drinfo_store_rev(struct au_drinfo_rev *rev, + struct au_drinfo_store *w) +{ + struct au_drinfo_rev_elm *elm; + struct inode *h_dir, *delegated; + int err, nelm; + struct path infopath = { + .mnt = w->h_ppath.mnt + }; + + h_dir = d_inode(w->h_ppath.dentry); + IMustLock(h_dir); + + err = 0; + elm = rev->elm; + for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { + AuDebugOn(elm->created && elm->info_last); + if (elm->created) { + AuDbg("here\n"); + delegated = NULL; + infopath.dentry = elm->info_dentry; + err = vfsub_unlink(h_dir, &infopath, &delegated, + !w->no_sio); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + dput(elm->info_dentry); + } else if (elm->info_last) { + AuDbg("here\n"); + w->fdata->drinfo = *elm->info_last; + memcpy(w->fdata->drinfo.oldname, + elm->info_last->oldname, + elm->info_last->oldnamelen); + err = au_drinfo_store_sio(w, /*elm*/NULL); + au_kfree_rcu(elm->info_last); + } + if (unlikely(err)) + AuIOErr("%d, %s\n", err, w->whname); + /* go on even if err */ + } +} + +/* caller has to call au_dr_rename_fin() later */ +static int au_drinfo_store(struct dentry *dentry, aufs_bindex_t btgt, + struct qstr *dst_name, void *_rev) +{ + int err, sz, nelm; + aufs_bindex_t bindex, btail; + struct au_drinfo_store work; + struct au_drinfo_rev *rev, **p; + struct au_drinfo_rev_elm *elm; + struct super_block *sb; + struct au_branch *br; + struct au_hinode *hdir; + + err = au_drinfo_store_work_init(&work, btgt); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + err = -ENOMEM; + btail = au_dbtaildir(dentry); + nelm = btail - btgt; + sz = sizeof(*rev) + sizeof(*elm) * nelm; + rev = kcalloc(1, sz, GFP_NOFS); + if (unlikely(!rev)) { + AuTraceErr(err); + goto out_args; + } + rev->nelm = nelm; + elm = rev->elm; + p = _rev; + *p = rev; + + err = 0; + sb = dentry->d_sb; + work.h_ppath.dentry = au_h_dptr(dentry, btgt); + work.h_ppath.mnt = au_sbr_mnt(sb, btgt); + hdir = au_hi(d_inode(dentry), btgt); + au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); + for (bindex = btgt + 1; bindex <= btail; bindex++, elm++) { + work.h_dentry = au_h_dptr(dentry, bindex); + if (!work.h_dentry) + continue; + + err = au_drinfo_construct(&work.fdata, work.h_dentry, + &work.allocated); + AuTraceErr(err); + if (unlikely(err)) + break; + + work.renameback = au_qstreq(&work.h_dentry->d_name, dst_name); + br = au_sbr(sb, bindex); + work.whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; + work.whnamelen += au_drinfo_name(br, work.infoname, + work.infonamelen); + AuDbg("whname %.*s, i%llu, %.*s\n", + work.whnamelen, work.whname, + be64_to_cpu((__force __be64)work.fdata->drinfo.ino), + work.fdata->drinfo.oldnamelen, + work.fdata->drinfo.oldname); + + err = au_drinfo_store_sio(&work, elm); + AuTraceErr(err); + if (unlikely(err)) + break; + } + if (unlikely(err)) { + /* revert all drinfo */ + au_drinfo_store_rev(rev, &work); + au_kfree_try_rcu(rev); + *p = NULL; + } + au_hn_inode_unlock(hdir); + +out_args: + au_drinfo_store_work_fin(&work); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev) +{ + int err, already; + ino_t ino; + struct super_block *sb; + struct au_branch *br; + struct au_dr_br *dr; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_dr_hino *ent; + struct au_drinfo_rev *rev, **p; + + AuDbg("bindex %d\n", bindex); + + err = -ENOMEM; + ent = kmalloc(sizeof(*ent), GFP_NOFS); + if (unlikely(!ent)) + goto out; + + sb = src->d_sb; + br = au_sbr(sb, bindex); + dr = &br->br_dirren; + h_dentry = au_h_dptr(src, bindex); + h_inode = d_inode(h_dentry); + ino = h_inode->i_ino; + ent->dr_h_ino = ino; + already = au_dr_hino_test_add(dr, ino, ent); + AuDbg("b%d, hi%llu, already %d\n", + bindex, (unsigned long long)ino, already); + + err = au_drinfo_store(src, bindex, dst_name, _rev); + AuTraceErr(err); + if (!err) { + p = _rev; + rev = *p; + rev->already = already; + goto out; /* success */ + } + + /* revert */ + if (!already) + au_dr_hino_del(dr, ent); + au_kfree_rcu(ent); + +out: + AuTraceErr(err); + return err; +} + +void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *_rev) +{ + struct au_drinfo_rev *rev; + struct au_drinfo_rev_elm *elm; + int nelm; + + rev = _rev; + elm = rev->elm; + for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { + dput(elm->info_dentry); + au_kfree_rcu(elm->info_last); + } + au_kfree_try_rcu(rev); +} + +void au_dr_rename_rev(struct dentry *src, aufs_bindex_t btgt, void *_rev) +{ + int err; + struct au_drinfo_store work; + struct au_drinfo_rev *rev = _rev; + struct super_block *sb; + struct au_branch *br; + struct inode *h_inode; + struct au_dr_br *dr; + struct au_dr_hino *ent; + + err = au_drinfo_store_work_init(&work, btgt); + if (unlikely(err)) + goto out; + + sb = src->d_sb; + br = au_sbr(sb, btgt); + work.h_ppath.dentry = au_h_dptr(src, btgt); + work.h_ppath.mnt = au_br_mnt(br); + au_drinfo_store_rev(rev, &work); + au_drinfo_store_work_fin(&work); + if (rev->already) + goto out; + + dr = &br->br_dirren; + h_inode = d_inode(work.h_ppath.dentry); + ent = au_dr_hino_find(dr, h_inode->i_ino); + BUG_ON(!ent); + au_dr_hino_del(dr, ent); + au_kfree_rcu(ent); + +out: + au_kfree_try_rcu(rev); + if (unlikely(err)) + pr_err("failed to remove dirren info\n"); +} + +/* ---------------------------------------------------------------------- */ + +static struct au_drinfo *au_drinfo_do_load(struct path *h_ppath, + char *whname, int whnamelen, + struct dentry **info_dentry) +{ + struct au_drinfo *drinfo; + struct file *f; + struct inode *h_dir; + struct path infopath; + int unlocked; + + AuDbg("%pd/%.*s\n", h_ppath->dentry, whnamelen, whname); + + *info_dentry = NULL; + drinfo = NULL; + unlocked = 0; + h_dir = d_inode(h_ppath->dentry); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + infopath.dentry = vfsub_lookup_one_len(whname, h_ppath->dentry, + whnamelen); + if (IS_ERR(infopath.dentry)) { + drinfo = (void *)infopath.dentry; + goto out; + } + + if (d_is_negative(infopath.dentry)) + goto out_dput; /* success */ + + infopath.mnt = h_ppath->mnt; + f = vfsub_dentry_open(&infopath, O_RDONLY); + inode_unlock_shared(h_dir); + unlocked = 1; + if (IS_ERR(f)) { + drinfo = (void *)f; + goto out_dput; + } + + drinfo = au_drinfo_read_k(f, /*h_ino*/0); + if (IS_ERR_OR_NULL(drinfo)) + goto out_fput; + + AuDbg("oldname %.*s\n", drinfo->oldnamelen, drinfo->oldname); + *info_dentry = dget(infopath.dentry); /* keep it alive */ + +out_fput: + fput(f); +out_dput: + dput(infopath.dentry); +out: + if (!unlocked) + inode_unlock_shared(h_dir); + AuTraceErrPtr(drinfo); + return drinfo; +} + +struct au_drinfo_do_load_args { + struct au_drinfo **drinfop; + struct path *h_ppath; + char *whname; + int whnamelen; + struct dentry **info_dentry; +}; + +static void au_call_drinfo_do_load(void *args) +{ + struct au_drinfo_do_load_args *a = args; + + *a->drinfop = au_drinfo_do_load(a->h_ppath, a->whname, a->whnamelen, + a->info_dentry); +} + +struct au_drinfo_load { + struct path h_ppath; + struct qstr *qname; + unsigned char no_sio; + + aufs_bindex_t ninfo; + struct au_drinfo **drinfo; +}; + +static int au_drinfo_load(struct au_drinfo_load *w, aufs_bindex_t bindex, + struct au_branch *br) +{ + int err, wkq_err, whnamelen, e; + char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ] + = AUFS_WH_DR_INFO_PFX; + struct au_drinfo *drinfo; + struct qstr oldname; + struct inode *h_dir, *delegated; + struct dentry *info_dentry; + struct path infopath; + + whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; + whnamelen += au_drinfo_name(br, whname + whnamelen, + sizeof(whname) - whnamelen); + if (w->no_sio) + drinfo = au_drinfo_do_load(&w->h_ppath, whname, whnamelen, + &info_dentry); + else { + struct au_drinfo_do_load_args args = { + .drinfop = &drinfo, + .h_ppath = &w->h_ppath, + .whname = whname, + .whnamelen = whnamelen, + .info_dentry = &info_dentry + }; + wkq_err = au_wkq_wait(au_call_drinfo_do_load, &args); + if (unlikely(wkq_err)) + drinfo = ERR_PTR(wkq_err); + } + err = PTR_ERR(drinfo); + if (IS_ERR_OR_NULL(drinfo)) + goto out; + + err = 0; + oldname.len = drinfo->oldnamelen; + oldname.name = drinfo->oldname; + if (au_qstreq(w->qname, &oldname)) { + /* the name is renamed back */ + au_kfree_rcu(drinfo); + drinfo = NULL; + + infopath.dentry = info_dentry; + infopath.mnt = w->h_ppath.mnt; + h_dir = d_inode(w->h_ppath.dentry); + delegated = NULL; + inode_lock_nested(h_dir, AuLsc_I_PARENT); + e = vfsub_unlink(h_dir, &infopath, &delegated, !w->no_sio); + inode_unlock(h_dir); + if (unlikely(e)) + AuIOErr("ignored %d, %pd2\n", e, &infopath.dentry); + if (unlikely(e == -EWOULDBLOCK)) + iput(delegated); + } + au_kfree_rcu(w->drinfo[bindex]); + w->drinfo[bindex] = drinfo; + dput(info_dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_dr_lkup_free(struct au_drinfo **drinfo, int n) +{ + struct au_drinfo **p = drinfo; + + while (n-- > 0) + au_kfree_rcu(*drinfo++); + au_kfree_try_rcu(p); +} + +int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t btgt) +{ + int err, ninfo; + struct au_drinfo_load w; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + struct inode *h_dir; + struct au_dr_hino *ent; + struct super_block *sb; + + AuDbg("%.*s, name %.*s, whname %.*s, b%d\n", + AuLNPair(&dentry->d_name), AuLNPair(&lkup->dirren.dr_name), + AuLNPair(&lkup->whname), btgt); + + sb = dentry->d_sb; + bbot = au_sbbot(sb); + w.ninfo = bbot + 1; + if (!lkup->dirren.drinfo) { + lkup->dirren.drinfo = kcalloc(w.ninfo, + sizeof(*lkup->dirren.drinfo), + GFP_NOFS); + if (unlikely(!lkup->dirren.drinfo)) { + err = -ENOMEM; + goto out; + } + lkup->dirren.ninfo = w.ninfo; + } + w.drinfo = lkup->dirren.drinfo; + w.no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); + w.h_ppath.dentry = au_h_dptr(dentry, btgt); + AuDebugOn(!w.h_ppath.dentry); + w.h_ppath.mnt = au_sbr_mnt(sb, btgt); + w.qname = &dentry->d_name; + + ninfo = 0; + for (bindex = btgt + 1; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_drinfo_load(&w, bindex, br); + if (unlikely(err)) + goto out_free; + if (w.drinfo[bindex]) + ninfo++; + } + if (!ninfo) { + br = au_sbr(sb, btgt); + h_dir = d_inode(w.h_ppath.dentry); + ent = au_dr_hino_find(&br->br_dirren, h_dir->i_ino); + AuDebugOn(!ent); + au_dr_hino_del(&br->br_dirren, ent); + au_kfree_rcu(ent); + } + goto out; /* success */ + +out_free: + au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); + lkup->dirren.ninfo = 0; + lkup->dirren.drinfo = NULL; +out: + AuTraceErr(err); + return err; +} + +void au_dr_lkup_fin(struct au_do_lookup_args *lkup) +{ + au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); +} + +int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt) +{ + int err; + struct au_drinfo *drinfo; + + err = 0; + if (!lkup->dirren.drinfo) + goto out; + AuDebugOn(lkup->dirren.ninfo <= btgt); + drinfo = lkup->dirren.drinfo[btgt]; + if (!drinfo) + goto out; + + au_kfree_try_rcu(lkup->whname.name); + lkup->whname.name = NULL; + lkup->dirren.dr_name.len = drinfo->oldnamelen; + lkup->dirren.dr_name.name = drinfo->oldname; + lkup->name = &lkup->dirren.dr_name; + err = au_wh_name_alloc(&lkup->whname, lkup->name); + if (!err) + AuDbg("name %.*s, whname %.*s, b%d\n", + AuLNPair(lkup->name), AuLNPair(&lkup->whname), + btgt); + +out: + AuTraceErr(err); + return err; +} + +int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, + ino_t h_ino) +{ + int match; + struct au_drinfo *drinfo; + + match = 1; + if (!lkup->dirren.drinfo) + goto out; + AuDebugOn(lkup->dirren.ninfo <= bindex); + drinfo = lkup->dirren.drinfo[bindex]; + if (!drinfo) + goto out; + + match = (drinfo->ino == h_ino); + AuDbg("match %d\n", match); + +out: + return match; +} + +/* ---------------------------------------------------------------------- */ + +int au_dr_opt_set(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_dr_hino(sb, bindex, /*br*/NULL, &br->br_path); + } + + return err; +} + +int au_dr_opt_flush(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) + err = au_dr_hino(sb, bindex, /*br*/NULL, /*path*/NULL); + } + + return err; +} + +int au_dr_opt_clr(struct super_block *sb, int no_flush) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + if (!no_flush) { + err = au_dr_opt_flush(sb); + if (unlikely(err)) + goto out; + } + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + au_dr_hino_free(&br->br_dirren); + } + +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/dirren.h +++ linux-5.8.0/fs/aufs/dirren.h @@ -0,0 +1,140 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * renamed dir info + */ + +#ifndef __AUFS_DIRREN_H__ +#define __AUFS_DIRREN_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "hbl.h" + +#define AuDirren_NHASH 100 + +#ifdef CONFIG_AUFS_DIRREN +enum au_brid_type { + AuBrid_Unset, + AuBrid_UUID, + AuBrid_FSID, + AuBrid_DEV +}; + +struct au_dr_brid { + enum au_brid_type type; + union { + uuid_t uuid; /* unimplemented yet */ + fsid_t fsid; + dev_t dev; + }; +}; + +/* 20 is the max digits length of ulong 64 */ +/* brid-type "_" uuid "_" inum */ +#define AUFS_DIRREN_FNAME_SZ (1 + 1 + UUID_STRING_LEN + 20) +#define AUFS_DIRREN_ENV_VAL_SZ (AUFS_DIRREN_FNAME_SZ + 1 + 20) + +struct au_dr_hino { + struct hlist_bl_node dr_hnode; + ino_t dr_h_ino; +}; + +struct au_dr_br { + struct hlist_bl_head dr_h_ino[AuDirren_NHASH]; + struct au_dr_brid dr_brid; +}; + +struct au_dr_lookup { + /* dr_name is pointed by struct au_do_lookup_args.name */ + struct qstr dr_name; /* subset of dr_info */ + aufs_bindex_t ninfo; + struct au_drinfo **drinfo; +}; +#else +struct au_dr_hino; +/* empty */ +struct au_dr_br { }; +struct au_dr_lookup { }; +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +struct au_do_lookup_args; +struct au_hinode; +#ifdef CONFIG_AUFS_DIRREN +int au_dr_hino_test_add(struct au_dr_br *dr, ino_t h_ino, + struct au_dr_hino *add_ent); +void au_dr_hino_free(struct au_dr_br *dr); +int au_dr_br_init(struct super_block *sb, struct au_branch *br, + const struct path *path); +int au_dr_br_fin(struct super_block *sb, struct au_branch *br); +int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev); +void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *rev); +void au_dr_rename_rev(struct dentry *src, aufs_bindex_t bindex, void *rev); +int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t bindex); +int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt); +int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, + ino_t h_ino); +void au_dr_lkup_fin(struct au_do_lookup_args *lkup); +int au_dr_opt_set(struct super_block *sb); +int au_dr_opt_flush(struct super_block *sb); +int au_dr_opt_clr(struct super_block *sb, int no_flush); +#else +AuStubInt0(au_dr_hino_test_add, struct au_dr_br *dr, ino_t h_ino, + struct au_dr_hino *add_ent); +AuStubVoid(au_dr_hino_free, struct au_dr_br *dr); +AuStubInt0(au_dr_br_init, struct super_block *sb, struct au_branch *br, + const struct path *path); +AuStubInt0(au_dr_br_fin, struct super_block *sb, struct au_branch *br); +AuStubInt0(au_dr_rename, struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev); +AuStubVoid(au_dr_rename_fin, struct dentry *src, aufs_bindex_t btgt, void *rev); +AuStubVoid(au_dr_rename_rev, struct dentry *src, aufs_bindex_t bindex, + void *rev); +AuStubInt0(au_dr_lkup, struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t bindex); +AuStubInt0(au_dr_lkup_name, struct au_do_lookup_args *lkup, aufs_bindex_t btgt); +AuStubInt0(au_dr_lkup_h_ino, struct au_do_lookup_args *lkup, + aufs_bindex_t bindex, ino_t h_ino); +AuStubVoid(au_dr_lkup_fin, struct au_do_lookup_args *lkup); +AuStubInt0(au_dr_opt_set, struct super_block *sb); +AuStubInt0(au_dr_opt_flush, struct super_block *sb); +AuStubInt0(au_dr_opt_clr, struct super_block *sb, int no_flush); +#endif + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_DIRREN +static inline int au_dr_ihash(ino_t h_ino) +{ + return h_ino % AuDirren_NHASH; +} +#else +AuStubInt0(au_dr_ihash, ino_t h_ino); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIRREN_H__ */ --- linux-5.8.0.orig/fs/aufs/dynop.c +++ linux-5.8.0/fs/aufs/dynop.c @@ -0,0 +1,367 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations for regular files + */ + +#include "aufs.h" + +#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) + +/* + * How large will these lists be? + * Usually just a few elements, 20-30 at most for each, I guess. + */ +static struct hlist_bl_head dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct hlist_bl_head *hbl, + const void *h_op) +{ + struct au_dykey *key, *tmp; + struct hlist_bl_node *pos; + + key = NULL; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) + if (tmp->dk_op.dy_hop == h_op) { + if (kref_get_unless_zero(&tmp->dk_kref)) + key = tmp; + break; + } + hlist_bl_unlock(hbl); + + return key; +} + +static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) +{ + struct au_dykey **k, *found; + const void *h_op = key->dk_op.dy_hop; + int i; + + found = NULL; + k = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else + break; + if (!found) { + spin_lock(&br->br_dykey_lock); + for (; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else { + k[i] = key; + break; + } + spin_unlock(&br->br_dykey_lock); + BUG_ON(i == AuBrDynOp); /* expand the array */ + } + + return found; +} + +/* kref_get() if @key is already added */ +static struct au_dykey *dy_gadd(struct hlist_bl_head *hbl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct hlist_bl_node *pos; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) + if (tmp->dk_op.dy_hop == h_op) { + if (kref_get_unless_zero(&tmp->dk_kref)) + found = tmp; + break; + } + if (!found) + hlist_bl_add_head(&key->dk_hnode, hbl); + hlist_bl_unlock(hbl); + + if (!found) + DyPrSym(key); + return found; +} + +static void dy_free_rcu(struct rcu_head *rcu) +{ + struct au_dykey *key; + + key = container_of(rcu, struct au_dykey, dk_rcu); + DyPrSym(key); + kfree(key); +} + +static void dy_free(struct kref *kref) +{ + struct au_dykey *key; + struct hlist_bl_head *hbl; + + key = container_of(kref, struct au_dykey, dk_kref); + hbl = dynop + key->dk_op.dy_type; + au_hbl_del(&key->dk_hnode, hbl); + call_rcu(&key->dk_rcu, dy_free_rcu); +} + +void au_dy_put(struct au_dykey *key) +{ + kref_put(&key->dk_kref, dy_free); +} + +/* ---------------------------------------------------------------------- */ + +#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) + +#ifdef CONFIG_AUFS_DEBUG +#define DyDbgDeclare(cnt) unsigned int cnt = 0 +#define DyDbgInc(cnt) do { cnt++; } while (0) +#else +#define DyDbgDeclare(cnt) do {} while (0) +#define DyDbgInc(cnt) do {} while (0) +#endif + +#define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ + if (src.func) \ + dst.func = src.func; \ + else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ +} while (0) + +#define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ + dst.func = src.func; \ +} while (0) + +#define DySetAop(func) \ + DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) +#define DySetAopForce(func) \ + DySetForce(func, dyaop->da_op, aufs_aop) + +static void dy_aop(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused) +{ + struct au_dyaop *dyaop = (void *)key; + const struct address_space_operations *h_aop = h_op; + DyDbgDeclare(cnt); + + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); + DySetAopForce(readpage); /* force */ + DySetAop(writepages); + DySetAop(set_page_dirty); + DySetAop(readpages); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); + DySetAop(invalidatepage); + DySetAop(releasepage); + DySetAop(freepage); + /* this one will be changed according to an aufs mount option */ + DySetAop(direct_IO); + DySetAop(migratepage); + DySetAop(isolate_page); + DySetAop(putback_page); + DySetAop(launder_page); + DySetAop(is_partially_uptodate); + DySetAop(is_dirty_writeback); + DySetAop(error_remove_page); + DySetAop(swap_activate); + DySetAop(swap_deactivate); + + DyDbgSize(cnt, *h_aop); +} + +/* ---------------------------------------------------------------------- */ + +static void dy_bug(struct kref *kref) +{ + BUG(); +} + +static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) +{ + struct au_dykey *key, *old; + struct hlist_bl_head *hbl; + struct op { + unsigned int sz; + void (*set)(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused); + }; + static const struct op a[] = { + [AuDy_AOP] = { + .sz = sizeof(struct au_dyaop), + .set = dy_aop + } + }; + const struct op *p; + + hbl = dynop + op->dy_type; + key = dy_gfind_get(hbl, op->dy_hop); + if (key) + goto out_add; /* success */ + + p = a + op->dy_type; + key = kzalloc(p->sz, GFP_NOFS); + if (unlikely(!key)) { + key = ERR_PTR(-ENOMEM); + goto out; + } + + key->dk_op.dy_hop = op->dy_hop; + kref_init(&key->dk_kref); + p->set(key, op->dy_hop, au_br_sb(br)); + old = dy_gadd(hbl, key); + if (old) { + au_kfree_rcu(key); + key = old; + } + +out_add: + old = dy_bradd(br, key); + if (old) + /* its ref-count should never be zero here */ + kref_put(&key->dk_kref, dy_bug); +out: + return key; +} + +/* ---------------------------------------------------------------------- */ +/* + * Aufs prohibits O_DIRECT by default even if the branch supports it. + * This behaviour is necessary to return an error from open(O_DIRECT) instead + * of the succeeding I/O. The dio mount option enables O_DIRECT and makes + * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. + * See the aufs manual in detail. + */ +static void dy_adx(struct au_dyaop *dyaop, int do_dx) +{ + if (!do_dx) + dyaop->da_op.direct_IO = NULL; + else + dyaop->da_op.direct_IO = aufs_aop.direct_IO; +} + +static struct au_dyaop *dy_aget(struct au_branch *br, + const struct address_space_operations *h_aop, + int do_dx) +{ + struct au_dyaop *dyaop; + struct au_dynop op; + + op.dy_type = AuDy_AOP; + op.dy_haop = h_aop; + dyaop = (void *)dy_get(&op, br); + if (IS_ERR(dyaop)) + goto out; + dy_adx(dyaop, do_dx); + +out: + return dyaop; +} + +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode) +{ + int err, do_dx; + struct super_block *sb; + struct au_branch *br; + struct au_dyaop *dyaop; + + AuDebugOn(!S_ISREG(h_inode->i_mode)); + IiMustWriteLock(inode); + + sb = inode->i_sb; + br = au_sbr(sb, bindex); + do_dx = !!au_opt_test(au_mntflags(sb), DIO); + dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); + err = PTR_ERR(dyaop); + if (IS_ERR(dyaop)) + /* unnecessary to call dy_fput() */ + goto out; + + err = 0; + inode->i_mapping->a_ops = &dyaop->da_op; + +out: + return err; +} + +/* + * Is it safe to replace a_ops during the inode/file is in operation? + * Yes, I hope so. + */ +int au_dy_irefresh(struct inode *inode) +{ + int err; + aufs_bindex_t btop; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + btop = au_ibtop(inode); + h_inode = au_h_iptr(inode, btop); + err = au_dy_iaop(inode, btop, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_dykey *key; + + hbl = dynop + AuDy_AOP; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(key, pos, hbl, dk_hnode) + dy_adx((void *)key, do_dx); + hlist_bl_unlock(hbl); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + INIT_HLIST_BL_HEAD(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!hlist_bl_empty(dynop + i)); +} --- linux-5.8.0.orig/fs/aufs/dynop.h +++ linux-5.8.0/fs/aufs/dynop.h @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations (for regular files only) + */ + +#ifndef __AUFS_DYNOP_H__ +#define __AUFS_DYNOP_H__ + +#ifdef __KERNEL__ + +#include +#include + +enum {AuDy_AOP, AuDyLast}; + +struct au_dynop { + int dy_type; + union { + const void *dy_hop; + const struct address_space_operations *dy_haop; + }; +}; + +struct au_dykey { + union { + struct hlist_bl_node dk_hnode; + struct rcu_head dk_rcu; + }; + struct au_dynop dk_op; + + /* + * during I am in the branch local array, kref is gotten. when the + * branch is removed, kref is put. + */ + struct kref dk_kref; +}; + +/* stop unioning since their sizes are very different from each other */ +struct au_dyaop { + struct au_dykey da_key; + struct address_space_operations da_op; /* not const */ +}; +/* make sure that 'struct au_dykey *' can be any type */ +static_assert(!offsetof(struct au_dyaop, da_key)); + +/* ---------------------------------------------------------------------- */ + +/* dynop.c */ +struct au_branch; +void au_dy_put(struct au_dykey *key); +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode); +int au_dy_irefresh(struct inode *inode); +void au_dy_arefresh(int do_dio); + +void __init au_dy_init(void); +void au_dy_fin(void); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ --- linux-5.8.0.orig/fs/aufs/export.c +++ linux-5.8.0/fs/aufs/export.c @@ -0,0 +1,838 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * export via nfs + */ + +#include +#include +#include +#include +#include +#include +#include "aufs.h" + +union conv { +#ifdef CONFIG_AUFS_INO_T_64 + __u32 a[2]; +#else + __u32 a[1]; +#endif + ino_t ino; +}; + +static ino_t decode_ino(__u32 *a) +{ + union conv u; + + BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); + u.a[0] = a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + u.a[1] = a[1]; +#endif + return u.ino; +} + +static void encode_ino(__u32 *a, ino_t ino) +{ + union conv u; + + u.ino = ino; + a[0] = u.a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + a[1] = u.a[1]; +#endif +} + +/* NFS file handle */ +enum { + Fh_br_id, + Fh_sigen, +#ifdef CONFIG_AUFS_INO_T_64 + /* support 64bit inode number */ + Fh_ino1, + Fh_ino2, + Fh_dir_ino1, + Fh_dir_ino2, +#else + Fh_ino1, + Fh_dir_ino1, +#endif + Fh_igen, + Fh_h_type, + Fh_tail, + + Fh_ino = Fh_ino1, + Fh_dir_ino = Fh_dir_ino1 +}; + +static int au_test_anon(struct dentry *dentry) +{ + /* note: read d_flags without d_lock */ + return !!(dentry->d_flags & DCACHE_DISCONNECTED); +} + +int au_test_nfsd(void) +{ + int ret; + struct task_struct *tsk = current; + char comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + ret = !strcmp(comm, "nfsd"); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ +/* inode generation external table */ + +void au_xigen_inc(struct inode *inode) +{ + loff_t pos; + ssize_t sz; + __u32 igen; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + sb = inode->i_sb; + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + + sbinfo = au_sbi(sb); + pos = inode->i_ino; + pos *= sizeof(igen); + igen = inode->i_generation + 1; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xigen, &igen, + sizeof(igen), &pos); + if (sz == sizeof(igen)) + return; /* success */ + + if (unlikely(sz >= 0)) + AuIOErr("xigen error (%zd)\n", sz); +} + +int au_xigen_new(struct inode *inode) +{ + int err; + loff_t pos; + ssize_t sz; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct file *file; + + err = 0; + /* todo: dirty, at mount time */ + if (inode->i_ino == AUFS_ROOT_INO) + goto out; + sb = inode->i_sb; + SiMustAnyLock(sb); + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + goto out; + + err = -EFBIG; + pos = inode->i_ino; + if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { + AuIOErr1("too large i%lld\n", pos); + goto out; + } + pos *= sizeof(inode->i_generation); + + err = 0; + sbinfo = au_sbi(sb); + file = sbinfo->si_xigen; + BUG_ON(!file); + + if (vfsub_f_size_read(file) + < pos + sizeof(inode->i_generation)) { + inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); + sz = xino_fwrite(sbinfo->si_xwrite, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + } else + sz = xino_fread(sbinfo->si_xread, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + if (sz == sizeof(inode->i_generation)) + goto out; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xigen error (%zd)\n", sz); + } + +out: + return err; +} + +int au_xigen_set(struct super_block *sb, struct path *path) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(sb, path, sbinfo->si_xigen); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + err = 0; + if (sbinfo->si_xigen) + fput(sbinfo->si_xigen); + sbinfo->si_xigen = file; + +out: + AuTraceErr(err); + return err; +} + +void au_xigen_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xigen) { + fput(sbinfo->si_xigen); + sbinfo->si_xigen = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino) +{ + struct dentry *dentry, *d; + struct inode *inode; + unsigned int sigen; + + dentry = NULL; + inode = ilookup(sb, ino); + if (!inode) + goto out; + + dentry = ERR_PTR(-ESTALE); + sigen = au_sigen(sb); + if (unlikely(au_is_bad_inode(inode) + || IS_DEADDIR(inode) + || sigen != au_iigen(inode, NULL))) + goto out_iput; + + dentry = NULL; + if (!dir_ino || S_ISDIR(inode->i_mode)) + dentry = d_find_alias(inode); + else { + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + if (!au_test_anon(d) + && d_inode(d->d_parent)->i_ino == dir_ino) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&d->d_lock); + } + spin_unlock(&inode->i_lock); + } + if (unlikely(dentry && au_digen_test(dentry, sigen))) { + /* need to refresh */ + dput(dentry); + dentry = NULL; + } + +out_iput: + iput(inode); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: dirty? */ +/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ + +struct au_compare_mnt_args { + /* input */ + struct super_block *sb; + + /* output */ + struct vfsmount *mnt; +}; + +static int au_compare_mnt(struct vfsmount *mnt, void *arg) +{ + struct au_compare_mnt_args *a = arg; + + if (mnt->mnt_sb != a->sb) + return 0; + a->mnt = mntget(mnt); + return 1; +} + +static struct vfsmount *au_mnt_get(struct super_block *sb) +{ + int err; + struct path root; + struct au_compare_mnt_args args = { + .sb = sb + }; + + get_fs_root(current->fs, &root); + rcu_read_lock(); + err = iterate_mounts(au_compare_mnt, &args, root.mnt); + rcu_read_unlock(); + path_put(&root); + AuDebugOn(!err); + AuDebugOn(!args.mnt); + return args.mnt; +} + +struct au_nfsd_si_lock { + unsigned int sigen; + aufs_bindex_t bindex, br_id; + unsigned char force_lock; +}; + +static int si_nfsd_read_lock(struct super_block *sb, + struct au_nfsd_si_lock *nsi_lock) +{ + int err; + aufs_bindex_t bindex; + + si_read_lock(sb, AuLock_FLUSH); + + /* branch id may be wrapped around */ + err = 0; + bindex = au_br_index(sb, nsi_lock->br_id); + if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) + goto out; /* success */ + + err = -ESTALE; + bindex = -1; + if (!nsi_lock->force_lock) + si_read_unlock(sb); + +out: + nsi_lock->bindex = bindex; + return err; +} + +struct find_name_by_ino { + struct dir_context ctx; + int called, found; + ino_t ino; + char *name; + int namelen; +}; + +static int +find_name_by_ino(struct dir_context *ctx, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct find_name_by_ino *a = container_of(ctx, struct find_name_by_ino, + ctx); + + a->called++; + if (a->ino != ino) + return 0; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; + return 1; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *parent; + struct file *file; + struct inode *dir; + struct find_name_by_ino arg = { + .ctx = { + .actor = find_name_by_ino + } + }; + int err; + + parent = path->dentry; + if (nsi_lock) + si_read_unlock(parent->d_sb); + file = vfsub_dentry_open(path, au_dir_roflags); + dentry = (void *)file; + if (IS_ERR(file)) + goto out; + + dentry = ERR_PTR(-ENOMEM); + arg.name = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; + arg.found = 0; + do { + arg.called = 0; + /* smp_mb(); */ + err = vfsub_iterate_dir(file, &arg.ctx); + } while (!err && !arg.found && arg.called); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; + /* instead of ENOENT */ + dentry = ERR_PTR(-ESTALE); + if (!arg.found) + goto out_name; + + /* do not call vfsub_lkup_one() */ + dir = d_inode(parent); + dentry = vfsub_lookup_one_len_unlocked(arg.name, parent, arg.namelen); + AuTraceErrPtr(dentry); + if (IS_ERR(dentry)) + goto out_name; + AuDebugOn(au_test_anon(dentry)); + if (unlikely(d_really_is_negative(dentry))) { + dput(dentry); + dentry = ERR_PTR(-ENOENT); + } + +out_name: + free_page((unsigned long)arg.name); +out_file: + fput(file); +out: + if (unlikely(nsi_lock + && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } + AuTraceErrPtr(dentry); + return dentry; +} + +static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry; + struct path path; + + if (dir_ino != AUFS_ROOT_INO) { + path.dentry = decode_by_ino(sb, dir_ino, 0); + dentry = path.dentry; + if (!path.dentry || IS_ERR(path.dentry)) + goto out; + AuDebugOn(au_test_anon(path.dentry)); + } else + path.dentry = dget(sb->s_root); + + path.mnt = au_mnt_get(sb); + dentry = au_lkup_by_ino(&path, ino, nsi_lock); + path_put(&path); + +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static int h_acceptable(void *expv, struct dentry *dentry) +{ + return 1; +} + +static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, + char *buf, int len, struct super_block *sb) +{ + char *p; + int n; + struct path path; + + p = d_path(h_rootpath, buf, len); + if (IS_ERR(p)) + goto out; + n = strlen(p); + + path.mnt = h_rootpath->mnt; + path.dentry = h_parent; + p = d_path(&path, buf, len); + if (IS_ERR(p)) + goto out; + if (n != 1) + p += n; + + path.mnt = au_mnt_get(sb); + path.dentry = sb->s_root; + p = d_path(&path, buf, len - strlen(p)); + mntput(path.mnt); + if (IS_ERR(p)) + goto out; + if (n != 1) + p[strlen(p)] = '/'; + +out: + AuTraceErrPtr(p); + return p; +} + +static +struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, + int fh_len, struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *h_parent, *root; + struct super_block *h_sb; + char *pathname, *p; + struct vfsmount *h_mnt; + struct au_branch *br; + int err; + struct path path; + + br = au_sbr(sb, nsi_lock->bindex); + h_mnt = au_br_mnt(br); + h_sb = h_mnt->mnt_sb; + /* todo: call lower fh_to_dentry()? fh_to_parent()? */ + lockdep_off(); + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + lockdep_on(); + dentry = h_parent; + if (unlikely(!h_parent || IS_ERR(h_parent))) { + AuWarn1("%s decode_fh failed, %ld\n", + au_sbtype(h_sb), PTR_ERR(h_parent)); + goto out; + } + dentry = NULL; + if (unlikely(au_test_anon(h_parent))) { + AuWarn1("%s decode_fh returned a disconnected dentry\n", + au_sbtype(h_sb)); + goto out_h_parent; + } + + dentry = ERR_PTR(-ENOMEM); + pathname = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!pathname)) + goto out_h_parent; + + root = sb->s_root; + path.mnt = h_mnt; + di_read_lock_parent(root, !AuLock_IR); + path.dentry = au_h_dptr(root, nsi_lock->bindex); + di_read_unlock(root, !AuLock_IR); + p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); + dentry = (void *)p; + if (IS_ERR(p)) + goto out_pathname; + + si_read_unlock(sb); + err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_relock; + + dentry = ERR_PTR(-ENOENT); + AuDebugOn(au_test_anon(path.dentry)); + if (unlikely(d_really_is_negative(path.dentry))) + goto out_path; + + if (ino != d_inode(path.dentry)->i_ino) + dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); + else + dentry = dget(path.dentry); + +out_path: + path_put(&path); +out_relock: + if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } +out_pathname: + free_page((unsigned long)pathname); +out_h_parent: + dput(h_parent); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry * +aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, + int fh_type) +{ + struct dentry *dentry; + __u32 *fh = fid->raw; + struct au_branch *br; + ino_t ino, dir_ino; + struct au_nfsd_si_lock nsi_lock = { + .force_lock = 0 + }; + + dentry = ERR_PTR(-ESTALE); + /* it should never happen, but the file handle is unreliable */ + if (unlikely(fh_len < Fh_tail)) + goto out; + nsi_lock.sigen = fh[Fh_sigen]; + nsi_lock.br_id = fh[Fh_br_id]; + + /* branch id may be wrapped around */ + br = NULL; + if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) + goto out; + nsi_lock.force_lock = 1; + + /* is this inode still cached? */ + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) + goto out_unlock; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* is the parent dir cached? */ + br = au_sbr(sb, nsi_lock.bindex); + au_lcnt_inc(&br->br_nfiles); + dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* lookup path */ + dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (unlikely(!dentry)) + /* todo?: make it ESTALE */ + goto out_unlock; + +accept: + if (!au_digen_test(dentry, au_sigen(sb)) + && d_inode(dentry)->i_generation == fh[Fh_igen]) + goto out_unlock; /* success */ + + dput(dentry); + dentry = ERR_PTR(-ESTALE); +out_unlock: + if (br) + au_lcnt_dec(&br->br_nfiles); + si_read_unlock(sb); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +#if 0 /* reserved for future use */ +/* support subtreecheck option */ +static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, + int fh_len, int fh_type) +{ + struct dentry *parent; + __u32 *fh = fid->raw; + ino_t dir_ino; + + dir_ino = decode_ino(fh + Fh_dir_ino); + parent = decode_by_ino(sb, dir_ino, 0); + if (IS_ERR(parent)) + goto out; + if (!parent) + parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), + dir_ino, fh, fh_len); + +out: + AuTraceErrPtr(parent); + return parent; +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *dir) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct dentry *dentry, *parent, *h_parent; + struct inode *h_dir; + struct au_branch *br; + + err = -ENOSPC; + if (unlikely(*max_len <= Fh_tail)) { + AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); + goto out; + } + + err = FILEID_ROOT; + if (inode->i_ino == AUFS_ROOT_INO) { + AuDebugOn(inode->i_ino != AUFS_ROOT_INO); + goto out; + } + + h_parent = NULL; + sb = inode->i_sb; + err = si_read_lock(sb, AuLock_FLUSH); + if (unlikely(err)) + goto out; + +#ifdef CONFIG_AUFS_DEBUG + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + AuWarn1("NFS-exporting requires xino\n"); +#endif + err = -EIO; + parent = NULL; + ii_read_lock_child(inode); + bindex = au_ibtop(inode); + if (!dir) { + dentry = d_find_any_alias(inode); + if (unlikely(!dentry)) + goto out_unlock; + AuDebugOn(au_test_anon(dentry)); + parent = dget_parent(dentry); + dput(dentry); + if (unlikely(!parent)) + goto out_unlock; + if (d_really_is_positive(parent)) + dir = d_inode(parent); + } + + ii_read_lock_parent(dir); + h_dir = au_h_iptr(dir, bindex); + ii_read_unlock(dir); + if (unlikely(!h_dir)) + goto out_parent; + h_parent = d_find_any_alias(h_dir); + if (unlikely(!h_parent)) + goto out_hparent; + + err = -EPERM; + br = au_sbr(sb, bindex); + h_sb = au_br_sb(br); + if (unlikely(!h_sb->s_export_op)) { + AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); + goto out_hparent; + } + + fh[Fh_br_id] = br->br_id; + fh[Fh_sigen] = au_sigen(sb); + encode_ino(fh + Fh_ino, inode->i_ino); + encode_ino(fh + Fh_dir_ino, dir->i_ino); + fh[Fh_igen] = inode->i_generation; + + *max_len -= Fh_tail; + fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), + max_len, + /*connectable or subtreecheck*/0); + err = fh[Fh_h_type]; + *max_len += Fh_tail; + /* todo: macros? */ + if (err != FILEID_INVALID) + err = 99; + else + AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); + +out_hparent: + dput(h_parent); +out_parent: + dput(parent); +out_unlock: + ii_read_unlock(inode); + si_read_unlock(sb); +out: + if (unlikely(err < 0)) + err = FILEID_INVALID; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_commit_metadata(struct inode *inode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + int (*f)(struct inode *inode); + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + ii_write_lock_child(inode); + bindex = au_ibtop(inode); + AuDebugOn(bindex < 0); + h_inode = au_h_iptr(inode, bindex); + + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); + else { + struct writeback_control wbc = { + .sync_mode = WB_SYNC_ALL, + .nr_to_write = 0 /* metadata only */ + }; + + err = sync_inode(h_inode, &wbc); + } + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct export_operations aufs_export_op = { + .fh_to_dentry = aufs_fh_to_dentry, + /* .fh_to_parent = aufs_fh_to_parent, */ + .encode_fh = aufs_encode_fh, + .commit_metadata = aufs_commit_metadata +}; + +void au_export_init(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + __u32 u; + + BUILD_BUG_ON_MSG(IS_BUILTIN(CONFIG_AUFS_FS) + && IS_MODULE(CONFIG_EXPORTFS), + AUFS_NAME ": unsupported configuration " + "CONFIG_EXPORTFS=m and CONFIG_AUFS_FS=y"); + + sb->s_export_op = &aufs_export_op; + sbinfo = au_sbi(sb); + sbinfo->si_xigen = NULL; + get_random_bytes(&u, sizeof(u)); + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} --- linux-5.8.0.orig/fs/aufs/f_op.c +++ linux-5.8.0/fs/aufs/f_op.c @@ -0,0 +1,819 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file and vm operations + */ + +#include +#include +#include +#include +#include "aufs.h" + +int au_do_open_nondir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex; + struct dentry *dentry, *h_dentry; + struct au_finfo *finfo; + struct inode *h_inode; + + FiMustWriteLock(file); + + err = 0; + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + finfo = au_fi(file); + memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); + atomic_set(&finfo->fi_mmapped, 0); + bindex = au_dbtop(dentry); + if (!h_file) { + h_dentry = au_h_dptr(dentry, bindex); + err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); + if (unlikely(err)) + goto out; + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + goto out; + } + } else { + h_dentry = h_file->f_path.dentry; + err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); + if (unlikely(err)) + goto out; + /* br ref is already inc-ed */ + } + + if ((flags & __O_TMPFILE) + && !(flags & O_EXCL)) { + h_inode = file_inode(h_file); + spin_lock(&h_inode->i_lock); + h_inode->i_state |= I_LINKABLE; + spin_unlock(&h_inode->i_lock); + } + au_set_fbtop(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + return err; +} + +static int aufs_open_nondir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_do_open_args args = { + .open = au_do_open_nondir + }; + + AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", + file, vfsub_file_flags(file), file->f_mode); + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, &args); + si_read_unlock(sb); + return err; +} + +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) +{ + struct au_finfo *finfo; + aufs_bindex_t bindex; + + finfo = au_fi(file); + au_hbl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + bindex = finfo->fi_btop; + if (bindex >= 0) + au_set_h_fptr(file, bindex, NULL); + + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_nondir(struct file *file, fl_owner_t id) +{ + int err; + struct file *h_file; + + err = 0; + h_file = au_hf_top(file); + if (h_file) + err = vfsub_flush(h_file, id); + return err; +} + +static int aufs_flush_nondir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_nondir); +} + +/* ---------------------------------------------------------------------- */ +/* + * read and write functions acquire [fdi]_rwsem once, but release before + * mmap_sem. This is because to stop a race condition between mmap(2). + * Releasing these aufs-rwsem should be safe, no branch-management (by keeping + * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in + * read functions after [fdi]_rwsem are released, but it should be harmless. + */ + +/* Callers should call au_read_post() or fput() in the end */ +struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc) +{ + struct file *h_file; + int err; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0, lsc); + if (!err) { + di_read_unlock(file->f_path.dentry, AuLock_IR); + h_file = au_hf_top(file); + get_file(h_file); + if (!keep_fi) + fi_read_unlock(file); + } else + h_file = ERR_PTR(err); + + return h_file; +} + +static void au_read_post(struct inode *inode, struct file *h_file) +{ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(inode, file_inode(h_file)); + fput(h_file); +} + +struct au_write_pre { + /* input */ + unsigned int lsc; + + /* output */ + blkcnt_t blks; + aufs_bindex_t btop; +}; + +/* + * return with iinfo is write-locked + * callers should call au_write_post() or iinfo_write_unlock() + fput() in the + * end + */ +static struct file *au_write_pre(struct file *file, int do_ready, + struct au_write_pre *wpre) +{ + struct file *h_file; + struct dentry *dentry; + int err; + unsigned int lsc; + struct au_pin pin; + + lsc = 0; + if (wpre) + lsc = wpre->lsc; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, lsc); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + if (do_ready) { + err = au_ready_to_write(file, -1, &pin); + if (unlikely(err)) { + h_file = ERR_PTR(err); + di_write_unlock(dentry); + goto out_fi; + } + } + + di_downgrade_lock(dentry, /*flags*/0); + if (wpre) + wpre->btop = au_fbtop(file); + h_file = au_hf_top(file); + get_file(h_file); + if (wpre) + wpre->blks = file_inode(h_file)->i_blocks; + if (do_ready) + au_unpin(&pin); + di_read_unlock(dentry, /*flags*/0); + +out_fi: + fi_write_unlock(file); +out: + return h_file; +} + +static void au_write_post(struct inode *inode, struct file *h_file, + struct au_write_pre *wpre, ssize_t written) +{ + struct inode *h_inode; + + au_cpup_attr_timesizes(inode); + AuDebugOn(au_ibtop(inode) != wpre->btop); + h_inode = file_inode(h_file); + inode->i_mode = h_inode->i_mode; + ii_write_unlock(inode); + /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ + if (written > 0) + au_fhsm_wrote(inode->i_sb, wpre->btop, + /*force*/h_inode->i_blocks > wpre->blks); + fput(h_file); +} + +static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, + loff_t *ppos) +{ + ssize_t err; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* filedata may be obsoleted by concurrent copyup, but no problem */ + err = vfsub_read_u(h_file, buf, count, ppos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +/* + * todo: very ugly + * it locks both of i_mutex and si_rwsem for read in safe. + * if the plink maintenance mode continues forever (that is the problem), + * may loop forever. + */ +static void au_mtx_and_read_lock(struct inode *inode) +{ + int err; + struct super_block *sb = inode->i_sb; + + while (1) { + inode_lock(inode); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + inode_unlock(inode); + si_read_lock(sb, AuLock_NOPLMW); + si_read_unlock(sb); + } +} + +static ssize_t aufs_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + char __user *buf = (char __user *)ubuf; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_write_u(h_file, buf, count, ppos); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, + struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file; + ssize_t (*iter)(struct kiocb *, struct iov_iter *); + + err = security_file_permission(h_file, rw); + if (unlikely(err)) + goto out; + + err = -ENOSYS; /* the branch doesn't have its ->(read|write)_iter() */ + iter = NULL; + if (rw == MAY_READ) + iter = h_file->f_op->read_iter; + else if (rw == MAY_WRITE) + iter = h_file->f_op->write_iter; + + file = kio->ki_filp; + kio->ki_filp = h_file; + if (iter) { + lockdep_off(); + err = iter(kio, iov_iter); + lockdep_on(); + } else + /* currently there is no such fs */ + WARN_ON_ONCE(1); + kio->ki_filp = file; + +out: + return err; +} + +static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file, *h_file; + struct inode *inode; + struct super_block *sb; + + file = kio->ki_filp; + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/1, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (0 && au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_path.dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; + smp_mb(); /* unnecessary? */ + } + } + fi_read_unlock(file); + + err = au_do_iter(h_file, MAY_READ, kio, iov_iter); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *file, *h_file; + + file = kio->ki_filp; + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + ssize_t err; + struct file *h_file; + struct inode *inode; + struct super_block *sb; + + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t +aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_splice_from(pipe, h_file, ppos, len, flags); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static long aufs_fallocate(struct file *file, int mode, loff_t offset, + loff_t len) +{ + long err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + lockdep_off(); + err = vfs_fallocate(h_file, mode, offset, len); + lockdep_on(); + au_write_post(inode, h_file, &wpre, /*written*/1); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static ssize_t aufs_copy_file_range(struct file *src, loff_t src_pos, + struct file *dst, loff_t dst_pos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_write_pre wpre; + enum { SRC, DST }; + struct { + struct inode *inode; + struct file *h_file; + struct super_block *h_sb; + } a[2]; +#define a_src a[SRC] +#define a_dst a[DST] + + err = -EINVAL; + a_src.inode = file_inode(src); + if (unlikely(!S_ISREG(a_src.inode->i_mode))) + goto out; + a_dst.inode = file_inode(dst); + if (unlikely(!S_ISREG(a_dst.inode->i_mode))) + goto out; + + au_mtx_and_read_lock(a_dst.inode); + /* + * in order to match the order in di_write_lock2_{child,parent}(), + * use f_path.dentry for this comparison. + */ + if (src->f_path.dentry < dst->f_path.dentry) { + a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_1); + err = PTR_ERR(a_src.h_file); + if (IS_ERR(a_src.h_file)) + goto out_si; + + wpre.lsc = AuLsc_FI_2; + a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); + err = PTR_ERR(a_dst.h_file); + if (IS_ERR(a_dst.h_file)) { + au_read_post(a_src.inode, a_src.h_file); + goto out_si; + } + } else { + wpre.lsc = AuLsc_FI_1; + a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); + err = PTR_ERR(a_dst.h_file); + if (IS_ERR(a_dst.h_file)) + goto out_si; + + a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_2); + err = PTR_ERR(a_src.h_file); + if (IS_ERR(a_src.h_file)) { + au_write_post(a_dst.inode, a_dst.h_file, &wpre, + /*written*/0); + goto out_si; + } + } + + err = -EXDEV; + a_src.h_sb = file_inode(a_src.h_file)->i_sb; + a_dst.h_sb = file_inode(a_dst.h_file)->i_sb; + if (unlikely(a_src.h_sb != a_dst.h_sb)) { + AuDbgFile(src); + AuDbgFile(dst); + goto out_file; + } + + err = vfsub_copy_file_range(a_src.h_file, src_pos, a_dst.h_file, + dst_pos, len, flags); + +out_file: + au_write_post(a_dst.inode, a_dst.h_file, &wpre, err); + fi_read_unlock(src); + au_read_post(a_src.inode, a_src.h_file); +out_si: + si_read_unlock(a_dst.inode->i_sb); + inode_unlock(a_dst.inode); +out: + return err; +#undef a_src +#undef a_dst +} + +/* ---------------------------------------------------------------------- */ + +/* + * The locking order around current->mmap_sem. + * - in most and regular cases + * file I/O syscall -- aufs_read() or something + * -- si_rwsem for read -- mmap_sem + * (Note that [fdi]i_rwsem are released before mmap_sem). + * - in mmap case + * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem + * This AB-BA order is definitely bad, but is not a problem since "si_rwsem for + * read" allows multiple processes to acquire it and [fdi]i_rwsem are not held + * in file I/O. Aufs needs to stop lockdep in aufs_mmap() though. + * It means that when aufs acquires si_rwsem for write, the process should never + * acquire mmap_sem. + * + * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a + * problem either since any directory is not able to be mmap-ed. + * The similar scenario is applied to aufs_readlink() too. + */ + +#if 0 /* stop calling security_file_mmap() */ +/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ +#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) + +static unsigned long au_arch_prot_conv(unsigned long flags) +{ + /* currently ppc64 only */ +#ifdef CONFIG_PPC64 + /* cf. linux/arch/powerpc/include/asm/mman.h */ + AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); + return AuConv_VM_PROT(flags, SAO); +#else + AuDebugOn(arch_calc_vm_prot_bits(-1)); + return 0; +#endif +} + +static unsigned long au_prot_conv(unsigned long flags) +{ + return AuConv_VM_PROT(flags, READ) + | AuConv_VM_PROT(flags, WRITE) + | AuConv_VM_PROT(flags, EXEC) + | au_arch_prot_conv(flags); +} + +/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ +#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) + +static unsigned long au_flag_conv(unsigned long flags) +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) + | AuConv_VM_MAP(flags, LOCKED); +} +#endif + +static int aufs_mmap(struct file *file, struct vm_area_struct *vma) +{ + int err; + const unsigned char wlock + = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); + struct super_block *sb; + struct file *h_file; + struct inode *inode; + + AuDbgVmRegion(file, vma); + + inode = file_inode(file); + sb = inode->i_sb; + lockdep_off(); + si_read_lock(sb, AuLock_NOPLMW); + + h_file = au_write_pre(file, wlock, /*wpre*/NULL); + lockdep_on(); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + au_set_mmapped(file); + au_vm_file_reset(vma, h_file); + /* + * we cannot call security_mmap_file() here since it may acquire + * mmap_sem or i_mutex. + * + * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), + * au_flag_conv(vma->vm_flags)); + */ + if (!err) + err = call_mmap(h_file, vma); + if (!err) { + au_vm_prfile_set(vma, file); + fsstack_copy_attr_atime(inode, file_inode(h_file)); + goto out_fput; /* success */ + } + au_unset_mmapped(file); + au_vm_file_reset(vma, file); + +out_fput: + lockdep_off(); + ii_write_unlock(inode); + lockdep_on(); + fput(h_file); +out: + lockdep_off(); + si_read_unlock(sb); + lockdep_on(); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_unlock; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + au_write_post(inode, h_file, &wpre, /*written*/0); + +out_unlock: + si_read_unlock(inode->i_sb); + inode_unlock(inode); +out: + return err; +} + +static int aufs_fasync(int fd, struct file *file, int flag) +{ + int err; + struct file *h_file; + struct super_block *sb; + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (h_file->f_op->fasync) + err = h_file->f_op->fasync(fd, h_file, flag); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + return err; +} + +static int aufs_setfl(struct file *file, unsigned long arg) +{ + int err; + struct file *h_file; + struct super_block *sb; + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* stop calling h_file->fasync */ + arg |= vfsub_file_flags(file) & FASYNC; + err = setfl(/*unused fd*/-1, h_file, arg); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 /* reserved for future use */ +static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, + size_t len, loff_t *pos, int more) +{ +} +#endif + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + + .llseek = default_llseek, + + .read = aufs_read, + .write = aufs_write, + .read_iter = aufs_read_iter, + .write_iter = aufs_write_iter, + +#ifdef CONFIG_AUFS_POLL + .poll = aufs_poll, +#endif + .unlocked_ioctl = aufs_ioctl_nondir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_nondir, +#endif + .mmap = aufs_mmap, + .open = aufs_open_nondir, + .flush = aufs_flush_nondir, + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .setfl = aufs_setfl, + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 /* reserved for future use */ + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read, +#endif + .fallocate = aufs_fallocate, + .copy_file_range = aufs_copy_file_range +}; --- linux-5.8.0.orig/fs/aufs/fhsm.c +++ linux-5.8.0/fs/aufs/fhsm.c @@ -0,0 +1,427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2011-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * File-based Hierarchy Storage Management + */ + +#include +#include +#include +#include +#include "aufs.h" + +static aufs_bindex_t au_fhsm_bottom(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + return fhsm->fhsm_bottom; +} + +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + fhsm->fhsm_bottom = bindex; +} + +/* ---------------------------------------------------------------------- */ + +static int au_fhsm_test_jiffy(struct au_sbinfo *sbinfo, struct au_branch *br) +{ + struct au_br_fhsm *bf; + + bf = br->br_fhsm; + MtxMustLock(&bf->bf_lock); + + return !bf->bf_readable + || time_after(jiffies, + bf->bf_jiffy + sbinfo->si_fhsm.fhsm_expire); +} + +/* ---------------------------------------------------------------------- */ + +static void au_fhsm_notify(struct super_block *sb, int val) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (au_fhsm_pid(fhsm) + && atomic_read(&fhsm->fhsm_readable) != -1) { + atomic_set(&fhsm->fhsm_readable, val); + if (val) + wake_up(&fhsm->fhsm_wqh); + } +} + +static int au_fhsm_stfs(struct super_block *sb, aufs_bindex_t bindex, + struct aufs_stfs *rstfs, int do_lock, int do_notify) +{ + int err; + struct au_branch *br; + struct au_br_fhsm *bf; + + br = au_sbr(sb, bindex); + AuDebugOn(au_br_rdonly(br)); + bf = br->br_fhsm; + AuDebugOn(!bf); + + if (do_lock) + mutex_lock(&bf->bf_lock); + else + MtxMustLock(&bf->bf_lock); + + /* sb->s_root for NFS is unreliable */ + err = au_br_stfs(br, &bf->bf_stfs); + if (unlikely(err)) { + AuErr1("FHSM failed (%d), b%d, ignored.\n", bindex, err); + goto out; + } + + bf->bf_jiffy = jiffies; + bf->bf_readable = 1; + if (do_notify) + au_fhsm_notify(sb, /*val*/1); + if (rstfs) + *rstfs = bf->bf_stfs; + +out: + if (do_lock) + mutex_unlock(&bf->bf_lock); + au_fhsm_notify(sb, /*val*/1); + + return err; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force) +{ + int err; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct au_br_fhsm *bf; + + AuDbg("b%d, force %d\n", bindex, force); + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (!au_ftest_si(sbinfo, FHSM) + || fhsm->fhsm_bottom == bindex) + return; + + br = au_sbr(sb, bindex); + bf = br->br_fhsm; + AuDebugOn(!bf); + mutex_lock(&bf->bf_lock); + if (force + || au_fhsm_pid(fhsm) + || au_fhsm_test_jiffy(sbinfo, br)) + err = au_fhsm_stfs(sb, bindex, /*rstfs*/NULL, /*do_lock*/0, + /*do_notify*/1); + mutex_unlock(&bf->bf_lock); +} + +void au_fhsm_wrote_all(struct super_block *sb, int force) +{ + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + /* exclude the bottom */ + bbot = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + au_fhsm_wrote(sb, bindex, force); + } +} + +/* ---------------------------------------------------------------------- */ + +static __poll_t au_fhsm_poll(struct file *file, struct poll_table_struct *wait) +{ + __poll_t mask; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + mask = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + poll_wait(file, &fhsm->fhsm_wqh, wait); + if (atomic_read(&fhsm->fhsm_readable)) + mask = EPOLLIN /* | EPOLLRDNORM */; + + if (!mask) + AuDbg("mask 0x%x\n", mask); + return mask; +} + +static int au_fhsm_do_read_one(struct aufs_stbr __user *stbr, + struct aufs_stfs *stfs, __s16 brid) +{ + int err; + + err = copy_to_user(&stbr->stfs, stfs, sizeof(*stfs)); + if (!err) + err = __put_user(brid, &stbr->brid); + if (unlikely(err)) + err = -EFAULT; + + return err; +} + +static ssize_t au_fhsm_do_read(struct super_block *sb, + struct aufs_stbr __user *stbr, size_t count) +{ + ssize_t err; + int nstbr; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + struct au_br_fhsm *bf; + + /* except the bottom branch */ + err = 0; + nstbr = 0; + bbot = au_fhsm_bottom(sb); + for (bindex = 0; !err && bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_fhsm(br->br_perm)) + continue; + + bf = br->br_fhsm; + mutex_lock(&bf->bf_lock); + if (bf->bf_readable) { + err = -EFAULT; + if (count >= sizeof(*stbr)) + err = au_fhsm_do_read_one(stbr++, &bf->bf_stfs, + br->br_id); + if (!err) { + bf->bf_readable = 0; + count -= sizeof(*stbr); + nstbr++; + } + } + mutex_unlock(&bf->bf_lock); + } + if (!err) + err = sizeof(*stbr) * nstbr; + + return err; +} + +static ssize_t au_fhsm_read(struct file *file, char __user *buf, size_t count, + loff_t *pos) +{ + ssize_t err; + int readable; + aufs_bindex_t nfhsm, bindex, bbot; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct super_block *sb; + + err = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; +need_data: + spin_lock_irq(&fhsm->fhsm_wqh.lock); + if (!atomic_read(&fhsm->fhsm_readable)) { + if (vfsub_file_flags(file) & O_NONBLOCK) + err = -EAGAIN; + else + err = wait_event_interruptible_locked_irq + (fhsm->fhsm_wqh, + atomic_read(&fhsm->fhsm_readable)); + } + spin_unlock_irq(&fhsm->fhsm_wqh.lock); + if (unlikely(err)) + goto out; + + /* sb may already be dead */ + au_rw_read_lock(&sbinfo->si_rwsem); + readable = atomic_read(&fhsm->fhsm_readable); + if (readable > 0) { + sb = sbinfo->si_sb; + AuDebugOn(!sb); + /* exclude the bottom branch */ + nfhsm = 0; + bbot = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + nfhsm++; + } + err = -EMSGSIZE; + if (nfhsm * sizeof(struct aufs_stbr) <= count) { + atomic_set(&fhsm->fhsm_readable, 0); + err = au_fhsm_do_read(sbinfo->si_sb, (void __user *)buf, + count); + } + } + au_rw_read_unlock(&sbinfo->si_rwsem); + if (!readable) + goto need_data; + +out: + return err; +} + +static int au_fhsm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + /* sb may already be dead */ + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); + kobject_put(&sbinfo->si_kobj); + + return 0; +} + +static const struct file_operations au_fhsm_fops = { + .owner = THIS_MODULE, + .llseek = noop_llseek, + .read = au_fhsm_read, + .poll = au_fhsm_poll, + .release = au_fhsm_release +}; + +int au_fhsm_fd(struct super_block *sb, int oflags) +{ + int err, fd; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(oflags & ~(O_CLOEXEC | O_NONBLOCK))) + goto out; + + err = 0; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + if (!fhsm->fhsm_pid) + fhsm->fhsm_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&fhsm->fhsm_spin); + if (unlikely(err)) + goto out; + + oflags |= O_RDONLY; + /* oflags |= FMODE_NONOTIFY; */ + fd = anon_inode_getfd("[aufs_fhsm]", &au_fhsm_fops, sbinfo, oflags); + err = fd; + if (unlikely(fd < 0)) + goto out_pid; + + /* succeed regardless 'fhsm' status */ + kobject_get(&sbinfo->si_kobj); + si_noflush_read_lock(sb); + if (au_ftest_si(sbinfo, FHSM)) + au_fhsm_wrote_all(sb, /*force*/0); + si_read_unlock(sb); + goto out; /* success */ + +out_pid: + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_fhsm_br_alloc(struct au_branch *br) +{ + int err; + + err = 0; + br->br_fhsm = kmalloc(sizeof(*br->br_fhsm), GFP_NOFS); + if (br->br_fhsm) + au_br_fhsm_init(br->br_fhsm); + else + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_fhsm_fin(struct super_block *sb) +{ + au_fhsm_notify(sb, /*val*/-1); +} + +void au_fhsm_init(struct au_sbinfo *sbinfo) +{ + struct au_fhsm *fhsm; + + fhsm = &sbinfo->si_fhsm; + spin_lock_init(&fhsm->fhsm_spin); + init_waitqueue_head(&fhsm->fhsm_wqh); + atomic_set(&fhsm->fhsm_readable, 0); + fhsm->fhsm_expire + = msecs_to_jiffies(AUFS_FHSM_CACHE_DEF_SEC * MSEC_PER_SEC); + fhsm->fhsm_bottom = -1; +} + +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec) +{ + sbinfo->si_fhsm.fhsm_expire + = msecs_to_jiffies(sec * MSEC_PER_SEC); +} + +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo) +{ + unsigned int u; + + if (!au_ftest_si(sbinfo, FHSM)) + return; + + u = jiffies_to_msecs(sbinfo->si_fhsm.fhsm_expire) / MSEC_PER_SEC; + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} --- linux-5.8.0.orig/fs/aufs/file.c +++ linux-5.8.0/fs/aufs/file.c @@ -0,0 +1,863 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling file/dir, and address_space operation + */ + +#ifdef CONFIG_AUFS_DEBUG +#include +#endif +#include +#include "aufs.h" + +/* drop flags for writing */ +unsigned int au_file_roflags(unsigned int flags) +{ + flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); + flags |= O_RDONLY | O_NOATIME; + return flags; +} + +/* common functions to regular file and dir */ +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_path; + int err; + + /* a race condition can happen between open and unlink/rmdir */ + h_file = ERR_PTR(-ENOENT); + h_dentry = au_h_dptr(dentry, bindex); + if (au_test_nfsd() && (!h_dentry || d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + spin_lock(&h_dentry->d_lock); + err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) + /* || !d_inode(dentry)->i_nlink */ + ; + spin_unlock(&h_dentry->d_lock); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + err = au_br_test_oflag(flags, br); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + /* drop flags for writing */ + if (au_test_ro(sb, bindex, d_inode(dentry))) { + if (force_wr && !(flags & O_WRONLY)) + force_wr = 0; + flags = au_file_roflags(flags); + if (force_wr) { + h_file = ERR_PTR(-EROFS); + flags = au_file_roflags(flags); + if (unlikely(vfsub_native_ro(h_inode) + || IS_APPEND(h_inode))) + goto out; + flags &= ~O_ACCMODE; + flags |= O_WRONLY; + } + } + flags &= ~O_CREAT; + au_lcnt_inc(&br->br_nfiles); + h_path.dentry = h_dentry; + h_path.mnt = au_br_mnt(br); + h_file = vfsub_dentry_open(&h_path, flags); + if (IS_ERR(h_file)) + goto out_br; + + if (flags & __FMODE_EXEC) { + err = deny_write_access(h_file); + if (unlikely(err)) { + fput(h_file); + h_file = ERR_PTR(err); + goto out_br; + } + } + fsnotify_open(h_file); + goto out; /* success */ + +out_br: + au_lcnt_dec(&br->br_nfiles); +out: + return h_file; +} + +static int au_cmoo(struct dentry *dentry) +{ + int err, cmoo, matched; + unsigned int udba; + struct path h_path; + struct au_pin pin; + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + struct inode *delegated; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + pid_t pid; + struct au_branch *br; + struct dentry *parent; + struct au_hinode *hdir; + + DiMustWriteLock(dentry); + IiMustWriteLock(d_inode(dentry)); + + err = 0; + if (IS_ROOT(dentry)) + goto out; + cpg.bsrc = au_dbtop(dentry); + if (!cpg.bsrc) + goto out; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + pid = au_fhsm_pid(fhsm); + rcu_read_lock(); + matched = (pid + && (current->pid == pid + || rcu_dereference(current->real_parent)->pid == pid)); + rcu_read_unlock(); + if (matched) + goto out; + + br = au_sbr(sb, cpg.bsrc); + cmoo = au_br_cmoo(br->br_perm); + if (!cmoo) + goto out; + if (!d_is_reg(dentry)) + cmoo &= AuBrAttr_COO_ALL; + if (!cmoo) + goto out; + + parent = dget_parent(dentry); + di_write_lock_parent(parent); + err = au_wbr_do_copyup_bu(dentry, cpg.bsrc - 1); + cpg.bdst = err; + if (unlikely(err < 0)) { + err = 0; /* there is no upper writable branch */ + goto out_dgrade; + } + AuDbg("bsrc %d, bdst %d\n", cpg.bsrc, cpg.bdst); + + /* do not respect the coo attrib for the target branch */ + err = au_cpup_dirs(dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + + di_downgrade_lock(parent, AuLock_IR); + udba = au_opt_udba(sb); + err = au_pin(&pin, dentry, cpg.bdst, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + if (unlikely(err)) + goto out_parent; + if (!(cmoo & AuBrWAttr_MOO)) + goto out_parent; /* success */ + + err = au_pin(&pin, dentry, cpg.bsrc, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + h_path.mnt = au_br_mnt(br); + h_path.dentry = au_h_dptr(dentry, cpg.bsrc); + hdir = au_hi(d_inode(parent), cpg.bsrc); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, /*force*/1); + au_unpin(&pin); + /* todo: keep h_dentry or not? */ + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("unlink %pd after coo failed (%d), ignored\n", + dentry, err); + err = 0; + } + goto out_parent; /* success */ + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_parent: + di_read_unlock(parent, AuLock_IR); + dput(parent); +out: + AuTraceErr(err); + return err; +} + +int au_do_open(struct file *file, struct au_do_open_args *args) +{ + int err, aopen = args->aopen; + struct dentry *dentry; + struct au_finfo *finfo; + + if (!aopen) + err = au_finfo_init(file, args->fidir); + else { + lockdep_off(); + err = au_finfo_init(file, args->fidir); + lockdep_on(); + } + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + di_write_lock_child(dentry); + err = au_cmoo(dentry); + di_downgrade_lock(dentry, AuLock_IR); + if (!err) { + if (!aopen) + err = args->open(file, vfsub_file_flags(file), NULL); + else { + lockdep_off(); + err = args->open(file, vfsub_file_flags(file), + args->h_file); + lockdep_on(); + } + } + di_read_unlock(dentry, AuLock_IR); + + finfo = au_fi(file); + if (!err) { + finfo->fi_file = file; + au_hbl_add(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + } + if (!aopen) + fi_write_unlock(file); + else { + lockdep_off(); + fi_write_unlock(file); + lockdep_on(); + } + if (unlikely(err)) { + finfo->fi_hdir = NULL; + au_finfo_fin(file); + } + +out: + AuTraceErr(err); + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t btop; + struct dentry *dentry; + struct au_branch *br; + struct file *h_file, *h_file_tmp; + + dentry = file->f_path.dentry; + btop = au_dbtop(dentry); + br = au_sbr(dentry->d_sb, btop); + h_file_tmp = NULL; + if (au_fbtop(file) == btop) { + h_file = au_hf_top(file); + if (file->f_mode == h_file->f_mode) + return 0; /* success */ + h_file_tmp = h_file; + get_file(h_file_tmp); + au_lcnt_inc(&br->br_nfiles); + au_set_h_fptr(file, btop, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + /* + * it can happen + * file exists on both of rw and ro + * open --> dbtop and fbtop are both 0 + * prepend a branch as rw, "rw" become ro + * remove rw/file + * delete the top branch, "rw" becomes rw again + * --> dbtop is 1, fbtop is still 0 + * write --> fbtop is 0 but dbtop is 1 + */ + /* AuDebugOn(au_fbtop(file) < btop); */ + + h_file = au_h_open(dentry, btop, vfsub_file_flags(file) & ~O_TRUNC, + file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) { + if (h_file_tmp) { + /* revert */ + au_set_h_fptr(file, btop, h_file_tmp); + h_file_tmp = NULL; + } + goto out; /* todo: close all? */ + } + + err = 0; + au_set_fbtop(file, btop); + au_set_h_fptr(file, btop, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) { + fput(h_file_tmp); + au_lcnt_dec(&br->br_nfiles); + } + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t btop; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_path.dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + btop = dinfo->di_btop; + dinfo->di_btop = btgt; + hdp = au_hdentry(dinfo, btgt); + h_dentry = hdp->hd_dentry; + hdp->hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp->hd_dentry = h_dentry; + dinfo->di_btop = btop; + + return err; +} + +static int au_ready_to_write_wh(struct file *file, loff_t len, + aufs_bindex_t bcpup, struct au_pin *pin) +{ + int err; + struct inode *inode, *h_inode; + struct dentry *h_dentry, *hi_wh; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = bcpup, + .bsrc = -1, + .len = len, + .pin = pin + }; + + au_update_dbtop(cpg.dentry); + inode = d_inode(cpg.dentry); + h_inode = NULL; + if (au_dbtop(cpg.dentry) <= bcpup + && au_dbbot(cpg.dentry) >= bcpup) { + h_dentry = au_h_dptr(cpg.dentry, bcpup); + if (h_dentry && d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + } + hi_wh = au_hi_wh(inode, bcpup); + if (!hi_wh && !h_inode) + err = au_sio_cpup_wh(&cpg, file); + else + /* already copied-up after unlink */ + err = au_reopen_wh(file, bcpup, hi_wh); + + if (!err + && (inode->i_nlink > 1 + || (inode->i_state & I_LINKABLE)) + && au_opt_test(au_mntflags(cpg.dentry->d_sb), PLINK)) + au_plink_append(inode, bcpup, au_h_dptr(cpg.dentry, bcpup)); + + return err; +} + +/* + * prepare the @file for writing. + */ +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) +{ + int err; + aufs_bindex_t dbtop; + struct dentry *parent; + struct inode *inode; + struct super_block *sb; + struct file *h_file; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = len, + .pin = pin, + .flags = AuCpup_DTIME + }; + + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bsrc = au_fbtop(file); + err = au_test_ro(sb, cpg.bsrc, inode); + if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { + err = au_pin(pin, cpg.dentry, cpg.bsrc, AuOpt_UDBA_NONE, + /*flags*/0); + goto out; + } + + /* need to cpup or reopen */ + parent = dget_parent(cpg.dentry); + di_write_lock_parent(parent); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + if (unlikely(err < 0)) + goto out_dgrade; + err = 0; + + if (!d_unhashed(cpg.dentry) && !au_h_dptr(parent, cpg.bdst)) { + err = au_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + } + + err = au_pin(pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_dgrade; + + dbtop = au_dbtop(cpg.dentry); + if (dbtop <= cpg.bdst) + cpg.bsrc = cpg.bdst; + + if (dbtop <= cpg.bdst /* just reopen */ + || !d_unhashed(cpg.dentry) /* copyup and reopen */ + ) { + h_file = au_h_open_pre(cpg.dentry, cpg.bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + di_downgrade_lock(parent, AuLock_IR); + if (dbtop > cpg.bdst) + err = au_sio_cpup_simple(&cpg); + if (!err) + err = au_reopen_nondir(file); + au_h_open_post(cpg.dentry, cpg.bsrc, h_file); + } + } else { /* copyup as wh and reopen */ + /* + * since writable hfsplus branch is not supported, + * h_open_pre/post() are unnecessary. + */ + err = au_ready_to_write_wh(file, len, cpg.bdst, pin); + di_downgrade_lock(parent, AuLock_IR); + } + + if (!err) { + au_pin_set_parent_lflag(pin, /*lflag*/0); + goto out_dput; /* success */ + } + au_unpin(pin); + goto out_unlock; + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_dput: + dput(parent); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)) +{ + int err; + struct super_block *sb; + struct inode *inode; + + inode = file_inode(file); + sb = inode->i_sb; + si_noflush_read_lock(sb); + fi_read_lock(file); + ii_read_lock_child(inode); + + err = flush(file, id); + au_cpup_attr_timesizes(inode); + + ii_read_unlock(inode); + fi_read_unlock(file); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_file_refresh_by_inode(struct file *file, int *need_reopen) +{ + int err; + struct au_pin pin; + struct au_finfo *finfo; + struct dentry *parent, *hi_wh; + struct inode *inode; + struct super_block *sb; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME + }; + + FiMustWriteLock(file); + + err = 0; + finfo = au_fi(file); + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bdst = au_ibtop(inode); + if (cpg.bdst == finfo->fi_btop || IS_ROOT(cpg.dentry)) + goto out; + + parent = dget_parent(cpg.dentry); + if (au_test_ro(sb, cpg.bdst, inode)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + di_read_unlock(parent, !AuLock_IR); + if (unlikely(err < 0)) + goto out_parent; + err = 0; + } + + di_read_lock_parent(parent, AuLock_IR); + hi_wh = au_hi_wh(inode, cpg.bdst); + if (!S_ISDIR(inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode) + && !d_unhashed(cpg.dentry) + && cpg.bdst < au_dbtop(cpg.dentry)) { + err = au_test_and_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_unlock; + + /* always superio. */ + err = au_pin(&pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + } else if (hi_wh) { + /* already copied-up after unlink */ + err = au_reopen_wh(file, cpg.bdst, hi_wh); + *need_reopen = 0; + } + +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_parent: + dput(parent); +out: + return err; +} + +static void au_do_refresh_dir(struct file *file) +{ + aufs_bindex_t bindex, bbot, new_bindex, brid; + struct au_hfile *p, tmp, *q; + struct au_finfo *finfo; + struct super_block *sb; + struct au_fidir *fidir; + + FiMustWriteLock(file); + + sb = file->f_path.dentry->d_sb; + finfo = au_fi(file); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + p = fidir->fd_hfile + finfo->fi_btop; + brid = p->hf_br->br_id; + bbot = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bbot; bindex++, p++) { + if (!p->hf_file) + continue; + + new_bindex = au_br_index(sb, p->hf_br->br_id); + if (new_bindex == bindex) + continue; + if (new_bindex < 0) { + au_set_h_fptr(file, bindex, NULL); + continue; + } + + /* swap two lower inode, and loop again */ + q = fidir->fd_hfile + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hf_file) { + bindex--; + p--; + } + } + + p = fidir->fd_hfile; + if (!au_test_mmapped(file) && !d_unlinked(file->f_path.dentry)) { + bbot = au_sbbot(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bbot; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, /*execed*/0); + } + } else { + bbot = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bbot; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, /*execed*/0); + bbot = au_sbbot(sb); + } + + p = fidir->fd_hfile + bbot; + for (fidir->fd_bbot = bbot; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, /*execed*/0); + } + AuDebugOn(fidir->fd_bbot < finfo->fi_btop); +} + +/* + * after branch manipulating, refresh the file. + */ +static int refresh_file(struct file *file, int (*reopen)(struct file *file)) +{ + int err, need_reopen, nbr; + aufs_bindex_t bbot, bindex; + struct dentry *dentry; + struct super_block *sb; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_path.dentry; + sb = dentry->d_sb; + nbr = au_sbbot(sb) + 1; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbtop(file, bindex); + } else { + err = au_fidir_realloc(finfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + au_do_refresh_dir(file); + } + + err = 0; + need_reopen = 1; + if (!au_test_mmapped(file)) + err = au_file_refresh_by_inode(file, &need_reopen); + if (finfo->fi_hdir) + /* harmless if err */ + au_fidir_realloc(finfo, nbr, /*may_shrink*/1); + if (!err && need_reopen && !d_unlinked(dentry)) + err = reopen(file); + if (!err) { + au_update_figen(file); + goto out; /* success */ + } + + /* error, close all lower files */ + if (finfo->fi_hdir) { + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); bindex <= bbot; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + +out: + return err; +} + +/* common function to regular file and dir */ +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock, unsigned int fi_lsc) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t btop; + unsigned char pseudo_link; + struct dentry *dentry; + struct inode *inode; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + sigen = au_sigen(dentry->d_sb); + fi_write_lock_nested(file, fi_lsc); + figen = au_figen(file); + if (!fi_lsc) + di_write_lock_child(dentry); + else + di_write_lock_child2(dentry); + btop = au_dbtop(dentry); + pseudo_link = (btop != au_ibtop(inode)); + if (sigen == figen && !pseudo_link && au_fbtop(file) == btop) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + goto out; /* success */ + } + + AuDbg("sigen %d, figen %d\n", sigen, figen); + if (au_digen_test(dentry, sigen)) { + err = au_reval_dpath(dentry, sigen); + AuDebugOn(!err && au_digen_test(dentry, sigen)); + } + + if (!err) + err = refresh_file(file, reopen); + if (!err) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + } else { + di_write_unlock(dentry); + fi_write_unlock(file); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* cf. aufs_nopage() */ +/* for madvise(2) */ +static int aufs_readpage(struct file *file __maybe_unused, struct page *page) +{ + unlock_page(page); + return 0; +} + +/* it will never be called, but necessary to support O_DIRECT */ +static ssize_t aufs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) +{ BUG(); return 0; } + +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ AuUnsupport(); return 0; } +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + +static int aufs_set_page_dirty(struct page *page) +{ AuUnsupport(); return 0; } +static void aufs_invalidatepage(struct page *page, unsigned int offset, + unsigned int length) +{ AuUnsupport(); } +static int aufs_releasepage(struct page *page, gfp_t gfp) +{ AuUnsupport(); return 0; } +#if 0 /* called by memory compaction regardless file */ +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +#endif +static bool aufs_isolate_page(struct page *page, isolate_mode_t mode) +{ AuUnsupport(); return true; } +static void aufs_putback_page(struct page *page) +{ AuUnsupport(); } +static int aufs_launder_page(struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_is_partially_uptodate(struct page *page, + unsigned long from, + unsigned long count) +{ AuUnsupport(); return 0; } +static void aufs_is_dirty_writeback(struct page *page, bool *dirty, + bool *writeback) +{ AuUnsupport(); } +static int aufs_error_remove_page(struct address_space *mapping, + struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_swap_activate(struct swap_info_struct *sis, struct file *file, + sector_t *span) +{ AuUnsupport(); return 0; } +static void aufs_swap_deactivate(struct file *file) +{ AuUnsupport(); } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { + .readpage = aufs_readpage, + .direct_IO = aufs_direct_IO, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ + .set_page_dirty = aufs_set_page_dirty, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ + .invalidatepage = aufs_invalidatepage, + .releasepage = aufs_releasepage, + /* is fallback_migrate_page ok? */ + /* .migratepage = aufs_migratepage, */ + .isolate_page = aufs_isolate_page, + .putback_page = aufs_putback_page, + .launder_page = aufs_launder_page, + .is_partially_uptodate = aufs_is_partially_uptodate, + .is_dirty_writeback = aufs_is_dirty_writeback, + .error_remove_page = aufs_error_remove_page, + .swap_activate = aufs_swap_activate, + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; --- linux-5.8.0.orig/fs/aufs/file.h +++ linux-5.8.0/fs/aufs/file.h @@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file operations + */ + +#ifndef __AUFS_FILE_H__ +#define __AUFS_FILE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include +#include "rwsem.h" + +struct au_branch; +struct au_hfile { + struct file *hf_file; + struct au_branch *hf_br; +}; + +struct au_vdir; +struct au_fidir { + aufs_bindex_t fd_bbot; + aufs_bindex_t fd_nent; + struct au_vdir *fd_vdir_cache; + struct au_hfile fd_hfile[]; +}; + +static inline int au_fidir_sz(int nent) +{ + AuDebugOn(nent < 0); + return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; +} + +struct au_finfo { + atomic_t fi_generation; + + struct au_rwsem fi_rwsem; + aufs_bindex_t fi_btop; + + /* do not union them */ + struct { /* for non-dir */ + struct au_hfile fi_htop; + atomic_t fi_mmapped; + }; + struct au_fidir *fi_hdir; /* for dir only */ + + struct hlist_bl_node fi_hlist; + struct file *fi_file; /* very ugly */ + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* file.c */ +extern const struct address_space_operations aufs_aop; +unsigned int au_file_roflags(unsigned int flags); +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr); +struct au_do_open_args { + int aopen; + int (*open)(struct file *file, int flags, + struct file *h_file); + struct au_fidir *fidir; + struct file *h_file; +}; +int au_do_open(struct file *file, struct au_do_open_args *args); +int au_reopen_nondir(struct file *file); +struct au_pin; +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock, unsigned int fi_lsc); +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)); + +/* poll.c */ +#ifdef CONFIG_AUFS_POLL +__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt); +#endif + +#ifdef CONFIG_AUFS_BR_HFSPLUS +/* hfsplus.c */ +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr); +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#else +AuStub(struct file *, au_h_open_pre, return NULL, struct dentry *dentry, + aufs_bindex_t bindex, int force_wr) +AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#endif + +/* f_op.c */ +extern const struct file_operations aufs_file_fop; +int au_do_open_nondir(struct file *file, int flags, struct file *h_file); +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); +struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc); + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, int execed); +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, + struct file *h_file); + +void au_update_figen(struct file *file); +struct au_fidir *au_fidir_alloc(struct super_block *sb); +int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink); + +void au_fi_init_once(void *_fi); +void au_finfo_fin(struct file *file); +int au_finfo_init(struct file *file, struct au_fidir *fidir); + +/* ioctl.c */ +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg); +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg); +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_finfo *au_fi(struct file *file) +{ + return file->private_data; +} + +/* ---------------------------------------------------------------------- */ + +#define fi_read_lock(f) au_rw_read_lock(&au_fi(f)->fi_rwsem) +#define fi_write_lock(f) au_rw_write_lock(&au_fi(f)->fi_rwsem) +#define fi_read_trylock(f) au_rw_read_trylock(&au_fi(f)->fi_rwsem) +#define fi_write_trylock(f) au_rw_write_trylock(&au_fi(f)->fi_rwsem) +/* +#define fi_read_trylock_nested(f) \ + au_rw_read_trylock_nested(&au_fi(f)->fi_rwsem) +#define fi_write_trylock_nested(f) \ + au_rw_write_trylock_nested(&au_fi(f)->fi_rwsem) +*/ + +#define fi_read_unlock(f) au_rw_read_unlock(&au_fi(f)->fi_rwsem) +#define fi_write_unlock(f) au_rw_write_unlock(&au_fi(f)->fi_rwsem) +#define fi_downgrade_lock(f) au_rw_dgrade_lock(&au_fi(f)->fi_rwsem) + +/* lock subclass for finfo */ +enum { + AuLsc_FI_1, + AuLsc_FI_2 +}; + +static inline void fi_read_lock_nested(struct file *f, unsigned int lsc) +{ + au_rw_read_lock_nested(&au_fi(f)->fi_rwsem, lsc); +} + +static inline void fi_write_lock_nested(struct file *f, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_fi(f)->fi_rwsem, lsc); +} + +/* + * fi_read_lock_1, fi_write_lock_1, + * fi_read_lock_2, fi_write_lock_2 + */ +#define AuReadLockFunc(name) \ +static inline void fi_read_lock_##name(struct file *f) \ +{ fi_read_lock_nested(f, AuLsc_FI_##name); } + +#define AuWriteLockFunc(name) \ +static inline void fi_write_lock_##name(struct file *f) \ +{ fi_write_lock_nested(f, AuLsc_FI_##name); } + +#define AuRWLockFuncs(name) \ + AuReadLockFunc(name) \ + AuWriteLockFunc(name) + +AuRWLockFuncs(1); +AuRWLockFuncs(2); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) +#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) +#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: hard/soft set? */ +static inline aufs_bindex_t au_fbtop(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbbot_dir(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_bbot; +} + +static inline struct au_vdir *au_fvdir_cache(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_vdir_cache; +} + +static inline void au_set_fbtop(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbbot_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_bbot = bindex; +} + +static inline void au_set_fvdir_cache(struct file *file, + struct au_vdir *vdir_cache) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; +} + +static inline struct file *au_hf_top(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(au_fi(file)->fi_hdir); + return au_fi(file)->fi_htop.hf_file; +} + +static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; +} + +/* todo: memory barrier? */ +static inline unsigned int au_figen(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_generation); +} + +static inline void au_set_mmapped(struct file *f) +{ + if (atomic_inc_return(&au_fi(f)->fi_mmapped)) + return; + pr_warn("fi_mmapped wrapped around\n"); + while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) + ; +} + +static inline void au_unset_mmapped(struct file *f) +{ + atomic_dec(&au_fi(f)->fi_mmapped); +} + +static inline int au_test_mmapped(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_mmapped); +} + +/* customize vma->vm_file */ + +static inline void au_do_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + f = vma->vm_file; + get_file(file); + vma->vm_file = file; + fput(f); +} + +#ifdef CONFIG_MMU +#define AuDbgVmRegion(file, vma) do {} while (0) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + au_do_vm_file_reset(vma, file); +} +#else +#define AuDbgVmRegion(file, vma) \ + AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + au_do_vm_file_reset(vma, file); + f = vma->vm_region->vm_file; + get_file(file); + vma->vm_region->vm_file = file; + fput(f); +} +#endif /* CONFIG_MMU */ + +/* handle vma->vm_prfile */ +static inline void au_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ --- linux-5.8.0.orig/fs/aufs/finfo.c +++ linux-5.8.0/fs/aufs/finfo.c @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file private data + */ + +#include "aufs.h" + +void au_hfput(struct au_hfile *hf, int execed) +{ + if (execed) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + au_lcnt_dec(&hf->hf_br->br_nfiles); + hf->hf_br = NULL; +} + +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) +{ + struct au_finfo *finfo = au_fi(file); + struct au_hfile *hf; + struct au_fidir *fidir; + + fidir = finfo->fi_hdir; + if (!fidir) { + AuDebugOn(finfo->fi_btop != bindex); + hf = &finfo->fi_htop; + } else + hf = fidir->fd_hfile + bindex; + + if (hf && hf->hf_file) + au_hfput(hf, vfsub_file_execed(file)); + if (val) { + FiMustWriteLock(file); + AuDebugOn(IS_ERR_OR_NULL(file->f_path.dentry)); + hf->hf_file = val; + hf->hf_br = au_sbr(file->f_path.dentry->d_sb, bindex); + } +} + +void au_update_figen(struct file *file) +{ + atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_path.dentry)); + /* smp_mb(); */ /* atomic_set */ +} + +/* ---------------------------------------------------------------------- */ + +struct au_fidir *au_fidir_alloc(struct super_block *sb) +{ + struct au_fidir *fidir; + int nbr; + + nbr = au_sbbot(sb) + 1; + if (nbr < 2) + nbr = 2; /* initial allocate for 2 branches */ + fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink) +{ + int err; + struct au_fidir *fidir, *p; + + AuRwMustWriteLock(&finfo->fi_rwsem); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + + err = -ENOMEM; + p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), + GFP_NOFS, may_shrink); + if (p) { + p->fd_nent = nbr; + finfo->fi_hdir = p; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_finfo_fin(struct file *file) +{ + struct au_finfo *finfo; + + au_lcnt_dec(&au_sbi(file->f_path.dentry->d_sb)->si_nfiles); + + finfo = au_fi(file); + AuDebugOn(finfo->fi_hdir); + AuRwDestroy(&finfo->fi_rwsem); + au_cache_free_finfo(finfo); +} + +void au_fi_init_once(void *_finfo) +{ + struct au_finfo *finfo = _finfo; + + au_rw_init(&finfo->fi_rwsem); +} + +int au_finfo_init(struct file *file, struct au_fidir *fidir) +{ + int err; + struct au_finfo *finfo; + struct dentry *dentry; + + err = -ENOMEM; + dentry = file->f_path.dentry; + finfo = au_cache_alloc_finfo(); + if (unlikely(!finfo)) + goto out; + + err = 0; + au_lcnt_inc(&au_sbi(dentry->d_sb)->si_nfiles); + au_rw_write_lock(&finfo->fi_rwsem); + finfo->fi_btop = -1; + finfo->fi_hdir = fidir; + atomic_set(&finfo->fi_generation, au_digen(dentry)); + /* smp_mb(); */ /* atomic_set */ + + file->private_data = finfo; + +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/fstype.h +++ linux-5.8.0/fs/aufs/fstype.h @@ -0,0 +1,401 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * judging filesystem type + */ + +#ifndef __AUFS_FSTYPE_H__ +#define __AUFS_FSTYPE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +static inline int au_test_aufs(struct super_block *sb) +{ + return sb->s_magic == AUFS_SUPER_MAGIC; +} + +static inline const char *au_sbtype(struct super_block *sb) +{ + return sb->s_type->name; +} + +static inline int au_test_iso9660(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ISO9660_FS) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ROMFS_FS) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_CRAMFS) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_NFS_FS) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_FUSE_FS) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_XFS_FS) + return sb->s_magic == XFS_SB_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_TMPFS + return sb->s_magic == TMPFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ECRYPT_FS) + return !strcmp(au_sbtype(sb), "ecryptfs"); +#else + return 0; +#endif +} + +static inline int au_test_ramfs(struct super_block *sb) +{ + return sb->s_magic == RAMFS_MAGIC; +} + +static inline int au_test_ubifs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_UBIFS_FS) + return sb->s_magic == UBIFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_procfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_PROC_FS + return sb->s_magic == PROC_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SYSFS + return sb->s_magic == SYSFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_configfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_CONFIGFS_FS) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_MINIX_FS) + return sb->s_magic == MINIX3_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC2 + || sb->s_magic == MINIX_SUPER_MAGIC + || sb->s_magic == MINIX_SUPER_MAGIC2; +#else + return 0; +#endif +} + +static inline int au_test_fat(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_FAT_FS) + return sb->s_magic == MSDOS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_msdos(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_vfat(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_securityfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SECURITYFS + return sb->s_magic == SECURITYFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_squashfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_SQUASHFS) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_BTRFS_FS) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_XENFS) + return sb->s_magic == XENFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_debugfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_DEBUG_FS + return sb->s_magic == DEBUGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_nilfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_NILFS) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_HFSPLUS_FS) + return sb->s_magic == HFSPLUS_SUPER_MAGIC; +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ +/* + * they can't be an aufs branch. + */ +static inline int au_test_fs_unsuppoted(struct super_block *sb) +{ + return +#ifndef CONFIG_AUFS_BR_RAMFS + au_test_ramfs(sb) || +#endif + au_test_procfs(sb) + || au_test_sysfs(sb) + || au_test_configfs(sb) + || au_test_debugfs(sb) + || au_test_securityfs(sb) + || au_test_xenfs(sb) + || au_test_ecryptfs(sb) + /* || !strcmp(au_sbtype(sb), "unionfs") */ + || au_test_aufs(sb); /* will be supported in next version */ +} + +static inline int au_test_fs_remote(struct super_block *sb) +{ + return !au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + && !au_test_ramfs(sb) +#endif + && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); +} + +/* ---------------------------------------------------------------------- */ + +/* + * Note: these functions (below) are created after reading ->getattr() in all + * filesystems under linux/fs. it means we have to do so in every update... + */ + +/* + * some filesystems require getattr to refresh the inode attributes before + * referencing. + * in most cases, we can rely on the inode attribute in NFS (or every remote fs) + * and leave the work for d_revalidate() + */ +static inline int au_test_fs_refresh_iattr(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + /* || au_test_btrfs(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't maintain i_size or i_blocks. + */ +static inline int au_test_fs_bad_iattr_size(struct super_block *sb) +{ + return au_test_xfs(sb) + || au_test_btrfs(sb) + || au_test_ubifs(sb) + || au_test_hfsplus(sb) /* maintained, but incorrect */ + /* || au_test_minix(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't store the correct value in some of their inode + * attributes. + */ +static inline int au_test_fs_bad_iattr(struct super_block *sb) +{ + return au_test_fs_bad_iattr_size(sb) + || au_test_fat(sb) + || au_test_msdos(sb) + || au_test_vfat(sb); +} + +/* they don't check i_nlink in link(2) */ +static inline int au_test_fs_no_limit_nlink(struct super_block *sb) +{ + return au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || au_test_ramfs(sb) +#endif + || au_test_ubifs(sb) + || au_test_hfsplus(sb); +} + +/* + * filesystems which sets S_NOATIME and S_NOCMTIME. + */ +static inline int au_test_fs_notime(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + || au_test_ubifs(sb) + ; +} + +/* temporary support for i#1 in cramfs */ +static inline int au_test_fs_unique_ino(struct inode *inode) +{ + if (au_test_cramfs(inode->i_sb)) + return inode->i_ino != 1; + return 1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * the filesystem where the xino files placed must support i/o after unlink and + * maintain i_size and i_blocks. + */ +static inline int au_test_fs_bad_xino(struct super_block *sb) +{ + return au_test_fs_remote(sb) + || au_test_fs_bad_iattr_size(sb) + /* don't want unnecessary work for xino */ + || au_test_aufs(sb) + || au_test_ecryptfs(sb) + || au_test_nilfs(sb); +} + +static inline int au_test_fs_trunc_xino(struct super_block *sb) +{ + return au_test_tmpfs(sb) + || au_test_ramfs(sb); +} + +/* + * test if the @sb is real-readonly. + */ +static inline int au_test_fs_rr(struct super_block *sb) +{ + return au_test_squashfs(sb) + || au_test_iso9660(sb) + || au_test_cramfs(sb) + || au_test_romfs(sb); +} + +/* + * test if the @inode is nfs with 'noacl' option + * NFS always sets SB_POSIXACL regardless its mount option 'noacl.' + */ +static inline int au_test_nfs_noacl(struct inode *inode) +{ + return au_test_nfs(inode->i_sb) + /* && IS_POSIXACL(inode) */ + && !nfs_server_capable(inode, NFS_CAP_ACLS); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ --- linux-5.8.0.orig/fs/aufs/hbl.h +++ linux-5.8.0/fs/aufs/hbl.h @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * helpers for hlist_bl.h + */ + +#ifndef __AUFS_HBL_H__ +#define __AUFS_HBL_H__ + +#ifdef __KERNEL__ + +#include + +static inline void au_hbl_add(struct hlist_bl_node *node, + struct hlist_bl_head *hbl) +{ + hlist_bl_lock(hbl); + hlist_bl_add_head(node, hbl); + hlist_bl_unlock(hbl); +} + +static inline void au_hbl_del(struct hlist_bl_node *node, + struct hlist_bl_head *hbl) +{ + hlist_bl_lock(hbl); + hlist_bl_del(node); + hlist_bl_unlock(hbl); +} + +#define au_hbl_for_each(pos, head) \ + for (pos = hlist_bl_first(head); \ + pos; \ + pos = pos->next) + +static inline unsigned long au_hbl_count(struct hlist_bl_head *hbl) +{ + unsigned long cnt; + struct hlist_bl_node *pos; + + cnt = 0; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) + cnt++; + hlist_bl_unlock(hbl); + return cnt; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_HBL_H__ */ --- linux-5.8.0.orig/fs/aufs/hfsnotify.c +++ linux-5.8.0/fs/aufs/hfsnotify.c @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * fsnotify for the lower directories + */ + +#include "aufs.h" + +/* FS_IN_IGNORED is unnecessary */ +static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE + | FS_CREATE | FS_EVENT_ON_CHILD); +static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); +static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); + +static void au_hfsn_free_mark(struct fsnotify_mark *mark) +{ + struct au_hnotify *hn = container_of(mark, struct au_hnotify, + hn_mark); + /* AuDbg("here\n"); */ + au_cache_free_hnotify(hn); + smp_mb__before_atomic(); /* for atomic64_dec */ + if (atomic64_dec_and_test(&au_hfsn_ifree)) + wake_up(&au_hfsn_wq); +} + +static int au_hfsn_alloc(struct au_hinode *hinode) +{ + int err; + struct au_hnotify *hn; + struct super_block *sb; + struct au_branch *br; + struct fsnotify_mark *mark; + aufs_bindex_t bindex; + + hn = hinode->hi_notify; + sb = hn->hn_aufs_inode->i_sb; + bindex = au_br_index(sb, hinode->hi_id); + br = au_sbr(sb, bindex); + AuDebugOn(!br->br_hfsn); + + mark = &hn->hn_mark; + fsnotify_init_mark(mark, br->br_hfsn->hfsn_group); + mark->mask = AuHfsnMask; + /* + * by udba rename or rmdir, aufs assign a new inode to the known + * h_inode, so specify 1 to allow dups. + */ + lockdep_off(); + err = fsnotify_add_inode_mark(mark, hinode->hi_inode, /*allow_dups*/1); + lockdep_on(); + + return err; +} + +static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) +{ + struct fsnotify_mark *mark; + unsigned long long ull; + struct fsnotify_group *group; + + ull = atomic64_inc_return(&au_hfsn_ifree); + BUG_ON(!ull); + + mark = &hn->hn_mark; + spin_lock(&mark->lock); + group = mark->group; + fsnotify_get_group(group); + spin_unlock(&mark->lock); + lockdep_off(); + fsnotify_destroy_mark(mark, group); + fsnotify_put_mark(mark); + fsnotify_put_group(group); + lockdep_on(); + + /* free hn by myself */ + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) +{ + struct fsnotify_mark *mark; + + mark = &hinode->hi_notify->hn_mark; + spin_lock(&mark->lock); + if (do_set) { + AuDebugOn(mark->mask & AuHfsnMask); + mark->mask |= AuHfsnMask; + } else { + AuDebugOn(!(mark->mask & AuHfsnMask)); + mark->mask &= ~AuHfsnMask; + } + spin_unlock(&mark->lock); + /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ +} + +/* ---------------------------------------------------------------------- */ + +/* #define AuDbgHnotify */ +#ifdef AuDbgHnotify +static char *au_hfsn_name(u32 mask) +{ +#ifdef CONFIG_AUFS_DEBUG +#define test_ret(flag) \ + do { \ + if (mask & flag) \ + return #flag; \ + } while (0) + test_ret(FS_ACCESS); + test_ret(FS_MODIFY); + test_ret(FS_ATTRIB); + test_ret(FS_CLOSE_WRITE); + test_ret(FS_CLOSE_NOWRITE); + test_ret(FS_OPEN); + test_ret(FS_MOVED_FROM); + test_ret(FS_MOVED_TO); + test_ret(FS_CREATE); + test_ret(FS_DELETE); + test_ret(FS_DELETE_SELF); + test_ret(FS_MOVE_SELF); + test_ret(FS_UNMOUNT); + test_ret(FS_Q_OVERFLOW); + test_ret(FS_IN_IGNORED); + test_ret(FS_ISDIR); + test_ret(FS_IN_ONESHOT); + test_ret(FS_EVENT_ON_CHILD); + return ""; +#undef test_ret +#else + return "??"; +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_free_group(struct fsnotify_group *group) +{ + struct au_br_hfsnotify *hfsn = group->private; + + /* AuDbg("here\n"); */ + au_kfree_try_rcu(hfsn); +} + +static int au_hfsn_handle_event(struct fsnotify_group *group, + struct inode *inode, + u32 mask, const void *data, int data_type, + const struct qstr *file_name, u32 cookie, + struct fsnotify_iter_info *iter_info) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + struct fsnotify_mark *inode_mark; + + AuDebugOn(data_type != FSNOTIFY_EVENT_INODE); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ + AuDebugOn(mask & FS_UNMOUNT); + if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) + goto out; + + h_dir = inode; + h_inode = NULL; +#ifdef AuDbgHnotify + au_debug_on(); + if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 + || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), + AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug_off(); +#endif + + inode_mark = fsnotify_iter_inode_mark(iter_info); + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, file_name, h_inode); + +out: + return err; +} + +static struct fsnotify_ops au_hfsn_ops = { + .handle_event = au_hfsn_handle_event, + .free_group_priv = au_hfsn_free_group, + .free_mark = au_hfsn_free_mark +}; + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin_br(struct au_branch *br) +{ + struct au_br_hfsnotify *hfsn; + + hfsn = br->br_hfsn; + if (hfsn) { + lockdep_off(); + fsnotify_put_group(hfsn->hfsn_group); + lockdep_on(); + } +} + +static int au_hfsn_init_br(struct au_branch *br, int perm) +{ + int err; + struct fsnotify_group *group; + struct au_br_hfsnotify *hfsn; + + err = 0; + br->br_hfsn = NULL; + if (!au_br_hnotifyable(perm)) + goto out; + + err = -ENOMEM; + hfsn = kmalloc(sizeof(*hfsn), GFP_NOFS); + if (unlikely(!hfsn)) + goto out; + + err = 0; + group = fsnotify_alloc_group(&au_hfsn_ops); + if (IS_ERR(group)) { + err = PTR_ERR(group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); + goto out_hfsn; + } + + group->private = hfsn; + hfsn->hfsn_group = group; + br->br_hfsn = hfsn; + goto out; /* success */ + +out_hfsn: + au_kfree_try_rcu(hfsn); +out: + return err; +} + +static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (!br->br_hfsn) + err = au_hfsn_init_br(br, perm); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin(void) +{ + AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); + wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); +} + +const struct au_hnotify_op au_hnotify_op = { + .ctl = au_hfsn_ctl, + .alloc = au_hfsn_alloc, + .free = au_hfsn_free, + + .fin = au_hfsn_fin, + + .reset_br = au_hfsn_reset_br, + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; --- linux-5.8.0.orig/fs/aufs/hfsplus.c +++ linux-5.8.0/fs/aufs/hfsplus.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * special support for filesystems which acquires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * necessary open to tell hfsplus that this is not the final closing. + * The caller should call au_h_open_pre() after acquiring the inode mutex, + * and au_h_open_post() after releasing it. + */ + +#include "aufs.h" + +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + AuDebugOn(!h_dentry); + AuDebugOn(d_is_negative(h_dentry)); + + h_file = NULL; + if (au_test_hfsplus(h_dentry->d_sb) + && d_is_reg(h_dentry)) + h_file = au_h_open(dentry, bindex, + O_RDONLY | O_NOATIME | O_LARGEFILE, + /*file*/NULL, force_wr); + return h_file; +} + +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file) +{ + struct au_branch *br; + + if (h_file) { + fput(h_file); + br = au_sbr(dentry->d_sb, bindex); + au_lcnt_dec(&br->br_nfiles); + } +} --- linux-5.8.0.orig/fs/aufs/hnotify.c +++ linux-5.8.0/fs/aufs/hnotify.c @@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * abstraction to notify the direct changes on lower directories + */ + +/* #include */ +#include "aufs.h" + +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) +{ + int err; + struct au_hnotify *hn; + + err = -ENOMEM; + hn = au_cache_alloc_hnotify(); + if (hn) { + hn->hn_aufs_inode = inode; + hinode->hi_notify = hn; + err = au_hnotify_op.alloc(hinode); + AuTraceErr(err); + if (unlikely(err)) { + hinode->hi_notify = NULL; + au_cache_free_hnotify(hn); + /* + * The upper dir was removed by udba, but the same named + * dir left. In this case, aufs assigns a new inode + * number and set the monitor again. + * For the lower dir, the old monitor is still left. + */ + if (err == -EEXIST) + err = 0; + } + } + + AuTraceErr(err); + return err; +} + +void au_hn_free(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + + hn = hinode->hi_notify; + if (hn) { + hinode->hi_notify = NULL; + if (au_hnotify_op.free(hinode, hn)) + au_cache_free_hnotify(hn); + } +} + +/* ---------------------------------------------------------------------- */ + +void au_hn_ctl(struct au_hinode *hinode, int do_set) +{ + if (hinode->hi_notify) + au_hnotify_op.ctl(hinode, do_set); +} + +void au_hn_reset(struct inode *inode, unsigned int flags) +{ + aufs_bindex_t bindex, bbot; + struct inode *hi; + struct dentry *iwhdentry; + + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* inode_lock_nested(hi, AuLsc_I_CHILD); */ + iwhdentry = au_hi_wh(inode, bindex); + if (iwhdentry) + dget(iwhdentry); + au_igrab(hi); + au_set_h_iptr(inode, bindex, NULL, 0); + au_set_h_iptr(inode, bindex, au_igrab(hi), + flags & ~AuHi_XINO); + iput(hi); + dput(iwhdentry); + /* inode_unlock(hi); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bbot, bfound, btop; + struct inode *h_i; + + err = 0; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + goto out; + } + + bfound = -1; + bbot = au_ibbot(inode); + btop = au_ibtop(inode); +#if 0 /* reserved for future use */ + if (bindex == bbot) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = btop; bindex <= bbot; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = btop; bindex <= bbot; bindex++) { + h_i = au_h_iptr(inode, bindex); + if (!h_i) + continue; + + err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + /* bad action? */ + } + + /* children inode number will be broken */ + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_tree(struct dentry *dentry) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, dentry, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + struct dentry *d; + + d = dentries[j]; + if (IS_ROOT(d)) + continue; + + au_digen_dec(d); + if (d_really_is_positive(d)) + /* todo: reset children xino? + cached children only? */ + au_iigen_dec(d_inode(d)); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +/* + * return 0 if processed. + */ +static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, + const unsigned int isdir) +{ + int err; + struct dentry *d; + struct qstr *dname; + + err = 1; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + err = 0; + goto out; + } + + if (!isdir) { + AuDebugOn(!name); + au_iigen_dec(inode); + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len != nlen + && memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + continue; + } + err = 0; + au_digen_dec(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&inode->i_lock); + } else { + au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); + d = d_find_any_alias(inode); + if (!d) { + au_iigen_dec(inode); + goto out; + } + + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + err = hn_gen_tree(d); + spin_lock(&d->d_lock); + } + spin_unlock(&d->d_lock); + dput(d); + } + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) +{ + int err; + + if (IS_ROOT(dentry)) { + pr_warn("branch root dir was changed\n"); + return 0; + } + + err = 0; + if (!isdir) { + au_digen_dec(dentry); + if (d_really_is_positive(dentry)) + au_iigen_dec(d_inode(dentry)); + } else { + au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); + if (d_really_is_positive(dentry)) + err = hn_gen_tree(dentry); + } + + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* hnotify job flags */ +#define AuHnJob_XINO0 1 +#define AuHnJob_GEN (1 << 1) +#define AuHnJob_DIRENT (1 << 2) +#define AuHnJob_ISDIR (1 << 3) +#define AuHnJob_TRYXINO0 (1 << 4) +#define AuHnJob_MNTPNT (1 << 5) +#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) +#define au_fset_hnjob(flags, name) \ + do { (flags) |= AuHnJob_##name; } while (0) +#define au_fclr_hnjob(flags, name) \ + do { (flags) &= ~AuHnJob_##name; } while (0) + +enum { + AuHn_CHILD, + AuHn_PARENT, + AuHnLast +}; + +struct au_hnotify_args { + struct inode *h_dir, *dir, *h_child_inode; + u32 mask; + unsigned int flags[AuHnLast]; + unsigned int h_child_nlen; + char h_child_name[]; +}; + +struct hn_job_args { + unsigned int flags; + struct inode *inode, *h_inode, *dir, *h_dir; + struct dentry *dentry; + char *h_name; + int h_nlen; +}; + +static int hn_job(struct hn_job_args *a) +{ + const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); + int e; + + /* reset xino */ + if (au_ftest_hnjob(a->flags, XINO0) && a->inode) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + + if (au_ftest_hnjob(a->flags, TRYXINO0) + && a->inode + && a->h_inode) { + inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); + if (!a->h_inode->i_nlink + && !(a->h_inode->i_state & I_LINKABLE)) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + inode_unlock_shared(a->h_inode); + } + + /* make the generation obsolete */ + if (au_ftest_hnjob(a->flags, GEN)) { + e = -1; + if (a->inode) + e = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, + isdir); + if (e && a->dentry) + hn_gen_by_name(a->dentry, isdir); + /* ignore this error */ + } + + /* make dir entries obsolete */ + if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { + struct au_vdir *vdir; + + vdir = au_ivdir(a->inode); + if (vdir) + vdir->vd_jiffy = 0; + /* IMustLock(a->inode); */ + /* inode_inc_iversion(a->inode); */ + } + + /* can do nothing but warn */ + if (au_ftest_hnjob(a->flags, MNTPNT) + && a->dentry + && d_mountpoint(a->dentry)) + pr_warn("mount-point %pd is removed or renamed\n", a->dentry); + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, + struct inode *dir) +{ + struct dentry *dentry, *d, *parent; + struct qstr *dname; + + parent = d_find_any_alias(dir); + if (!parent) + return NULL; + + dentry = NULL; + spin_lock(&parent->d_lock); + list_for_each_entry(d, &parent->d_subdirs, d_child) { + /* AuDbg("%pd\n", d); */ + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + dname = &d->d_name; + if (dname->len != nlen || memcmp(dname->name, name, nlen)) + goto cont_unlock; + if (au_di(d)) + au_digen_dec(d); + else + goto cont_unlock; + if (au_dcount(d) > 0) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + +cont_unlock: + spin_unlock(&d->d_lock); + } + spin_unlock(&parent->d_lock); + dput(parent); + + if (dentry) + di_write_lock_child(dentry); + + return dentry; +} + +static struct inode *lookup_wlock_by_ino(struct super_block *sb, + aufs_bindex_t bindex, ino_t h_ino) +{ + struct inode *inode; + ino_t ino; + int err; + + inode = NULL; + err = au_xino_read(sb, bindex, h_ino, &ino); + if (!err && ino) + inode = ilookup(sb, ino); + if (!inode) + goto out; + + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("wrong root branch\n"); + iput(inode); + inode = NULL; + goto out; + } + + ii_write_lock_child(inode); + +out: + return inode; +} + +static void au_hn_bh(void *_args) +{ + struct au_hnotify_args *a = _args; + struct super_block *sb; + aufs_bindex_t bindex, bbot, bfound; + unsigned char xino, try_iput; + int err; + struct inode *inode; + ino_t h_ino; + struct hn_job_args args; + struct dentry *dentry; + struct au_sbinfo *sbinfo; + + AuDebugOn(!_args); + AuDebugOn(!a->h_dir); + AuDebugOn(!a->dir); + AuDebugOn(!a->mask); + AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", + a->mask, a->dir->i_ino, a->h_dir->i_ino, + a->h_child_inode ? a->h_child_inode->i_ino : 0); + + inode = NULL; + dentry = NULL; + /* + * do not lock a->dir->i_mutex here + * because of d_revalidate() may cause a deadlock. + */ + sb = a->dir->i_sb; + AuDebugOn(!sb); + sbinfo = au_sbi(sb); + AuDebugOn(!sbinfo); + si_write_lock(sb, AuLock_NOPLMW); + + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) + switch (a->mask & FS_EVENTS_POSS_ON_CHILD) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + AuWarn1("DIRREN with UDBA may not work correctly " + "for the direct rename(2)\n"); + } + + ii_read_lock_parent(a->dir); + bfound = -1; + bbot = au_ibbot(a->dir); + for (bindex = au_ibtop(a->dir); bindex <= bbot; bindex++) + if (au_h_iptr(a->dir, bindex) == a->h_dir) { + bfound = bindex; + break; + } + ii_read_unlock(a->dir); + if (unlikely(bfound < 0)) + goto out; + + xino = !!au_opt_test(au_mntflags(sb), XINO); + h_ino = 0; + if (a->h_child_inode) + h_ino = a->h_child_inode->i_ino; + + if (a->h_child_nlen + && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) + || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) + dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, + a->dir); + try_iput = 0; + if (dentry && d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (xino && !inode && h_ino + && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { + inode = lookup_wlock_by_ino(sb, bfound, h_ino); + try_iput = 1; + } + + args.flags = a->flags[AuHn_CHILD]; + args.dentry = dentry; + args.inode = inode; + args.h_inode = a->h_child_inode; + args.dir = a->dir; + args.h_dir = a->h_dir; + args.h_name = a->h_child_name; + args.h_nlen = a->h_child_nlen; + err = hn_job(&args); + if (dentry) { + if (au_di(dentry)) + di_write_unlock(dentry); + dput(dentry); + } + if (inode && try_iput) { + ii_write_unlock(inode); + iput(inode); + } + + ii_write_lock_parent(a->dir); + args.flags = a->flags[AuHn_PARENT]; + args.dentry = NULL; + args.inode = a->dir; + args.h_inode = a->h_dir; + args.dir = NULL; + args.h_dir = NULL; + args.h_name = NULL; + args.h_nlen = 0; + err = hn_job(&args); + ii_write_unlock(a->dir); + +out: + iput(a->h_child_inode); + iput(a->h_dir); + iput(a->dir); + si_write_unlock(sb); + au_nwt_done(&sbinfo->si_nowait); + au_kfree_rcu(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + const struct qstr *h_child_qstr, struct inode *h_child_inode) +{ + int err, len; + unsigned int flags[AuHnLast], f; + unsigned char isdir, isroot, wh; + struct inode *dir; + struct au_hnotify_args *args; + char *p, *h_child_name; + + err = 0; + AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); + dir = igrab(hnotify->hn_aufs_inode); + if (!dir) + goto out; + + isroot = (dir->i_ino == AUFS_ROOT_INO); + wh = 0; + h_child_name = (void *)h_child_qstr->name; + len = h_child_qstr->len; + if (h_child_name) { + if (len > AUFS_WH_PFX_LEN + && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + h_child_name += AUFS_WH_PFX_LEN; + len -= AUFS_WH_PFX_LEN; + wh = 1; + } + } + + isdir = 0; + if (h_child_inode) + isdir = !!S_ISDIR(h_child_inode->i_mode); + flags[AuHn_PARENT] = AuHnJob_ISDIR; + flags[AuHn_CHILD] = 0; + if (isdir) + flags[AuHn_CHILD] = AuHnJob_ISDIR; + au_fset_hnjob(flags[AuHn_PARENT], DIRENT); + au_fset_hnjob(flags[AuHn_CHILD], GEN); + switch (mask & ALL_FSNOTIFY_DIRENT_EVENTS) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + au_fset_hnjob(flags[AuHn_CHILD], XINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + /*FALLTHROUGH*/ + case FS_CREATE: + AuDebugOn(!h_child_name); + break; + + case FS_DELETE: + /* + * aufs never be able to get this child inode. + * revalidation should be in d_revalidate() + * by checking i_nlink, i_generation or d_unhashed(). + */ + AuDebugOn(!h_child_name); + au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + break; + + default: + AuDebugOn(1); + } + + if (wh) + h_child_inode = NULL; + + err = -ENOMEM; + /* iput() and kfree() will be called in au_hnotify() */ + args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + iput(dir); + goto out; + } + args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; + args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; + args->mask = mask; + args->dir = dir; + args->h_dir = igrab(h_dir); + if (h_child_inode) + h_child_inode = igrab(h_child_inode); /* can be NULL */ + args->h_child_inode = h_child_inode; + args->h_child_nlen = len; + if (len) { + p = (void *)args; + p += sizeof(*args); + memcpy(p, h_child_name, len); + p[len] = 0; + } + + /* NFS fires the event for silly-renamed one from kworker */ + f = 0; + if (!dir->i_nlink + || (au_test_nfs(h_dir->i_sb) && (mask & FS_DELETE))) + f = AuWkq_NEST; + err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + iput(args->h_child_inode); + iput(args->h_dir); + iput(args->dir); + au_kfree_rcu(args); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + AuDebugOn(!(udba & AuOptMask_UDBA)); + + err = 0; + if (au_hnotify_op.reset_br) + err = au_hnotify_op.reset_br(udba, br, perm); + + return err; +} + +int au_hnotify_init_br(struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (au_hnotify_op.init_br) + err = au_hnotify_op.init_br(br, perm); + + return err; +} + +void au_hnotify_fin_br(struct au_branch *br) +{ + if (au_hnotify_op.fin_br) + au_hnotify_op.fin_br(br); +} + +static void au_hn_destroy_cache(void) +{ + kmem_cache_destroy(au_cache[AuCache_HNOTIFY]); + au_cache[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cache[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cache[AuCache_HNOTIFY]) { + err = 0; + if (au_hnotify_op.init) + err = au_hnotify_op.init(); + if (unlikely(err)) + au_hn_destroy_cache(); + } + AuTraceErr(err); + return err; +} + +void au_hnotify_fin(void) +{ + if (au_hnotify_op.fin) + au_hnotify_op.fin(); + + /* cf. au_cache_fin() */ + if (au_cache[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} --- linux-5.8.0.orig/fs/aufs/i_op.c +++ linux-5.8.0/fs/aufs/i_op.c @@ -0,0 +1,1502 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (except add/del/rename) + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +static int h_permission(struct inode *h_inode, int mask, + struct path *h_path, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + + err = -EPERM; + if (write_mask && IS_IMMUTABLE(h_inode)) + goto out; + + err = -EACCES; + if (((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && (path_noexec(h_path) + || !(h_inode->i_mode & 0111)))) + goto out; + + /* + * - skip the lower fs test in the case of write to ro branch. + * - nfs dir permission write check is optimized, but a policy for + * link/rename requires a real check. + * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.' + * in this case, generic_permission() returns -EOPNOTSUPP. + */ + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + /* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */ + err = generic_permission(h_inode, mask); + if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } else { + /* AuLabel(h_inode->permission); */ + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } + + if (!err) + err = devcgroup_inode_permission(h_inode, mask); + if (!err) + err = security_inode_permission(h_inode, mask); + +out: + return err; +} + +static int aufs_permission(struct inode *inode, int mask) +{ + int err; + aufs_bindex_t bindex, bbot; + const unsigned char isdir = !!S_ISDIR(inode->i_mode), + write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + + /* todo: support rcu-walk? */ + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); +#if 0 /* reserved for future use */ + /* + * This test may be rather 'too much' since the test is essentially done + * in the aufs_lookup(). Theoretically it is possible that the inode + * generation doesn't match to the superblock's here. But it isn't a + * big deal I suppose. + */ + err = au_iigen_test(inode, au_sigen(sb)); + if (unlikely(err)) + goto out; +#endif + + if (!isdir + || write_mask + || au_opt_test(au_mntflags(sb), DIRPERM1)) { + err = au_busy_or_stale(); + h_inode = au_h_iptr(inode, au_ibtop(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibtop(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, br->br_perm); + if (write_mask + && !err + && !special_file(h_inode->i_mode)) { + /* test whether the upper writable branch exists */ + err = -EROFS; + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = 0; + break; + } + } + goto out; + } + + /* non-write to dir */ + err = 0; + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); !err && bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) { + err = au_busy_or_stale(); + if (unlikely(!S_ISDIR(h_inode->i_mode))) + break; + + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, + br->br_perm); + } + } + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, + unsigned int flags) +{ + struct dentry *ret, *parent; + struct inode *inode; + struct super_block *sb; + int err, npositive; + + IMustLock(dir); + + /* todo: support rcu-walk? */ + ret = ERR_PTR(-ECHILD); + if (flags & LOOKUP_RCU) + goto out; + + ret = ERR_PTR(-ENAMETOOLONG); + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out_si; + + inode = NULL; + npositive = 0; /* suppress a warning */ + parent = dentry->d_parent; /* dir inode is locked */ + di_read_lock_parent(parent, AuLock_IR); + err = au_alive_dir(parent); + if (!err) + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + /* regardless LOOKUP_CREATE, always ALLOW_NEG */ + npositive = au_lkup_dentry(dentry, au_dbtop(parent), + AuLkup_ALLOW_NEG); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); + ret = ERR_PTR(err); + if (unlikely(err < 0)) + goto out_unlock; + + if (npositive) { + inode = au_new_inode(dentry, /*must_new*/0); + if (IS_ERR(inode)) { + ret = (void *)inode; + inode = NULL; + goto out_unlock; + } + } + + if (inode) + atomic_inc(&inode->i_count); + ret = d_splice_alias(inode, dentry); +#if 0 /* reserved for future use */ + if (unlikely(d_need_lookup(dentry))) { + spin_lock(&dentry->d_lock); + dentry->d_flags &= ~DCACHE_NEED_LOOKUP; + spin_unlock(&dentry->d_lock); + } else +#endif + if (inode) { + if (!IS_ERR(ret)) { + iput(inode); + if (ret && ret != dentry) + ii_write_unlock(inode); + } else { + ii_write_unlock(inode); + iput(inode); + inode = NULL; + } + } + +out_unlock: + di_write_unlock(dentry); +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* + * very dirty and complicated aufs ->atomic_open(). + * aufs_atomic_open() + * + au_aopen_or_create() + * + add_simple() + * + vfsub_atomic_open() + * + branch fs ->atomic_open() + * may call the actual 'open' for h_file + * + inc br_nfiles only if opened + * + au_aopen_no_open() or au_aopen_do_open() + * + * au_aopen_do_open() + * + finish_open() + * + au_do_aopen() + * + au_do_open() the body of all 'open' + * + au_do_open_nondir() + * set the passed h_file + * + * au_aopen_no_open() + * + finish_no_open() + */ + +struct aopen_node { + struct hlist_bl_node hblist; + struct file *file, *h_file; +}; + +static int au_do_aopen(struct inode *inode, struct file *file) +{ + struct hlist_bl_head *aopen; + struct hlist_bl_node *pos; + struct aopen_node *node; + struct au_do_open_args args = { + .aopen = 1, + .open = au_do_open_nondir + }; + + aopen = &au_sbi(inode->i_sb)->si_aopen; + hlist_bl_lock(aopen); + hlist_bl_for_each_entry(node, pos, aopen, hblist) + if (node->file == file) { + args.h_file = node->h_file; + break; + } + hlist_bl_unlock(aopen); + /* AuDebugOn(!args.h_file); */ + + return au_do_open(file, &args); +} + +static int au_aopen_do_open(struct file *file, struct dentry *dentry, + struct aopen_node *aopen_node) +{ + int err; + struct hlist_bl_head *aopen; + + AuLabel(here); + aopen = &au_sbi(dentry->d_sb)->si_aopen; + au_hbl_add(&aopen_node->hblist, aopen); + err = finish_open(file, dentry, au_do_aopen); + au_hbl_del(&aopen_node->hblist, aopen); + /* AuDbgFile(file); */ + AuDbg("%pd%s%s\n", dentry, + (file->f_mode & FMODE_CREATED) ? " created" : "", + (file->f_mode & FMODE_OPENED) ? " opened" : ""); + + AuTraceErr(err); + return err; +} + +static int au_aopen_no_open(struct file *file, struct dentry *dentry) +{ + int err; + + AuLabel(here); + dget(dentry); + err = finish_no_open(file, dentry); + + AuTraceErr(err); + return err; +} + +static int aufs_atomic_open(struct inode *dir, struct dentry *dentry, + struct file *file, unsigned int open_flag, + umode_t create_mode) +{ + int err, did_open; + unsigned int lkup_flags; + aufs_bindex_t bindex; + struct super_block *sb; + struct dentry *parent, *d; + struct vfsub_aopen_args args = { + .open_flag = open_flag, + .create_mode = create_mode + }; + struct aopen_node aopen_node = { + .file = file + }; + + IMustLock(dir); + AuDbg("open_flag 0%o\n", open_flag); + AuDbgDentry(dentry); + + err = 0; + if (!au_di(dentry)) { + lkup_flags = LOOKUP_OPEN; + if (open_flag & O_CREAT) + lkup_flags |= LOOKUP_CREATE; + d = aufs_lookup(dir, dentry, lkup_flags); + if (IS_ERR(d)) { + err = PTR_ERR(d); + AuTraceErr(err); + goto out; + } else if (d) { + /* + * obsoleted dentry found. + * another error will be returned later. + */ + d_drop(d); + AuDbgDentry(d); + dput(d); + } + AuDbgDentry(dentry); + } + + if (d_is_positive(dentry) + || d_unhashed(dentry) + || d_unlinked(dentry) + || !(open_flag & O_CREAT)) { + err = au_aopen_no_open(file, dentry); + goto out; /* success */ + } + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + parent = dentry->d_parent; /* dir is locked */ + di_write_lock_parent(parent); + err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); + if (unlikely(err < 0)) + goto out_parent; + + AuDbgDentry(dentry); + if (d_is_positive(dentry)) { + err = au_aopen_no_open(file, dentry); + goto out_parent; /* success */ + } + + args.file = alloc_empty_file(file->f_flags, current_cred()); + err = PTR_ERR(args.file); + if (IS_ERR(args.file)) + goto out_parent; + + bindex = au_dbtop(dentry); + err = au_aopen_or_create(dir, dentry, &args); + AuTraceErr(err); + AuDbgFile(args.file); + file->f_mode = args.file->f_mode & ~FMODE_OPENED; + did_open = !!(args.file->f_mode & FMODE_OPENED); + if (!did_open) { + fput(args.file); + args.file = NULL; + } + di_write_unlock(parent); + di_write_unlock(dentry); + if (unlikely(err < 0)) { + if (args.file) + fput(args.file); + goto out_sb; + } + + if (!did_open) + err = au_aopen_no_open(file, dentry); + else { + aopen_node.h_file = args.file; + err = au_aopen_do_open(file, dentry, &aopen_node); + } + if (unlikely(err < 0)) { + if (args.file) + fput(args.file); + if (did_open) + au_lcnt_dec(&args.br->br_nfiles); + } + goto out_sb; /* success */ + +out_parent: + di_write_unlock(parent); + di_write_unlock(dentry); +out_sb: + si_read_unlock(sb); +out: + AuTraceErr(err); + AuDbgFile(file); + return err; +} + + +/* ---------------------------------------------------------------------- */ + +static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, + const unsigned char add_entry, aufs_bindex_t bcpup, + aufs_bindex_t btop) +{ + int err; + struct dentry *h_parent; + struct inode *h_dir; + + if (add_entry) + IMustLock(d_inode(parent)); + else + di_write_lock_parent(parent); + + err = 0; + if (!au_h_dptr(parent, bcpup)) { + if (btop > bcpup) + err = au_cpup_dirs(dentry, bcpup); + else if (btop < bcpup) + err = au_cpdown_dirs(dentry, bcpup); + else + BUG(); + } + if (!err && add_entry && !au_ftest_wrdir(add_entry, TMPFILE)) { + h_parent = au_h_dptr(parent, bcpup); + h_dir = d_inode(h_parent); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup, /*wh*/0); + /* todo: no unlock here */ + inode_unlock_shared(h_dir); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (d_really_is_negative(dentry)) + au_set_h_dptr(dentry, btop, NULL); + au_update_dbrange(dentry, /*do_put_zero*/0); + } + } + + if (!add_entry) + di_write_unlock(parent); + if (!err) + err = bcpup; /* success */ + + AuTraceErr(err); + return err; +} + +/* + * decide the branch and the parent dir where we will create a new entry. + * returns new bindex or an error. + * copyup the parent dir if needed. + */ +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args) +{ + int err; + unsigned int flags; + aufs_bindex_t bcpup, btop, src_btop; + const unsigned char add_entry + = au_ftest_wrdir(args->flags, ADD_ENTRY) + | au_ftest_wrdir(args->flags, TMPFILE); + struct super_block *sb; + struct dentry *parent; + struct au_sbinfo *sbinfo; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + parent = dget_parent(dentry); + btop = au_dbtop(dentry); + bcpup = btop; + if (args->force_btgt < 0) { + if (src_dentry) { + src_btop = au_dbtop(src_dentry); + if (src_btop < btop) + bcpup = src_btop; + } else if (add_entry) { + flags = 0; + if (au_ftest_wrdir(args->flags, ISDIR)) + au_fset_wbr(flags, DIR); + err = AuWbrCreate(sbinfo, dentry, flags); + bcpup = err; + } + + if (bcpup < 0 || au_test_ro(sb, bcpup, d_inode(dentry))) { + if (add_entry) + err = AuWbrCopyup(sbinfo, dentry); + else { + if (!IS_ROOT(dentry)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(sbinfo, dentry); + di_read_unlock(parent, !AuLock_IR); + } else + err = AuWbrCopyup(sbinfo, dentry); + } + bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else { + bcpup = args->force_btgt; + AuDebugOn(au_test_ro(sb, bcpup, d_inode(dentry))); + } + + AuDbg("btop %d, bcpup %d\n", btop, bcpup); + err = bcpup; + if (bcpup == btop) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, btop); + if (err >= 0) { + if (d_really_is_negative(dentry)) { + au_set_h_dptr(dentry, btop, NULL); + au_set_dbtop(dentry, bcpup); + au_set_dbbot(dentry, bcpup); + } + AuDebugOn(add_entry + && !au_ftest_wrdir(args->flags, TMPFILE) + && !au_h_dptr(dentry, bcpup)); + } + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_pin_hdir_unlock(struct au_pin *p) +{ + if (p->hdir) + au_hn_inode_unlock(p->hdir); +} + +int au_pin_hdir_lock(struct au_pin *p) +{ + int err; + + err = 0; + if (!p->hdir) + goto out; + + /* even if an error happens later, keep this lock */ + au_hn_inode_lock_nested(p->hdir, p->lsc_hi); + + err = -EBUSY; + if (unlikely(p->hdir->hi_inode != d_inode(p->h_parent))) + goto out; + + err = 0; + if (p->h_dentry) + err = au_h_verify(p->h_dentry, p->udba, p->hdir->hi_inode, + p->h_parent, p->br); + +out: + return err; +} + +int au_pin_hdir_relock(struct au_pin *p) +{ + int err, i; + struct inode *h_i; + struct dentry *h_d[] = { + p->h_dentry, + p->h_parent + }; + + err = au_pin_hdir_lock(p); + if (unlikely(err)) + goto out; + + for (i = 0; !err && i < sizeof(h_d)/sizeof(*h_d); i++) { + if (!h_d[i]) + continue; + if (d_is_positive(h_d[i])) { + h_i = d_inode(h_d[i]); + err = !h_i->i_nlink; + } + } + +out: + return err; +} + +static void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task) +{ + atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, (long)task); +} + +void au_pin_hdir_acquire_nest(struct au_pin *p) +{ + if (p->hdir) { + rwsem_acquire_nest(&p->hdir->hi_inode->i_rwsem.dep_map, + p->lsc_hi, 0, NULL, _RET_IP_); + au_pin_hdir_set_owner(p, current); + } +} + +void au_pin_hdir_release(struct au_pin *p) +{ + if (p->hdir) { + au_pin_hdir_set_owner(p, p->task); + rwsem_release(&p->hdir->hi_inode->i_rwsem.dep_map, _RET_IP_); + } +} + +struct dentry *au_pinned_h_parent(struct au_pin *pin) +{ + if (pin && pin->parent) + return au_h_dptr(pin->parent, pin->bindex); + return NULL; +} + +void au_unpin(struct au_pin *p) +{ + if (p->hdir) + au_pin_hdir_unlock(p); + if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) + vfsub_mnt_drop_write(p->h_mnt); + if (!p->hdir) + return; + + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + iput(p->hdir->hi_inode); + dput(p->parent); + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + /* do not clear p->task */ +} + +int au_do_pin(struct au_pin *p) +{ + int err; + struct super_block *sb; + struct inode *h_dir; + + err = 0; + sb = p->dentry->d_sb; + p->br = au_sbr(sb, p->bindex); + if (IS_ROOT(p->dentry)) { + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_err; + } + } + goto out; + } + + p->h_dentry = NULL; + if (p->bindex <= au_dbbot(p->dentry)) + p->h_dentry = au_h_dptr(p->dentry, p->bindex); + + p->parent = dget_parent(p->dentry); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_lock(p->parent, AuLock_IR, p->lsc_di); + + h_dir = NULL; + p->h_parent = au_h_dptr(p->parent, p->bindex); + p->hdir = au_hi(d_inode(p->parent), p->bindex); + if (p->hdir) + h_dir = p->hdir->hi_inode; + + /* + * udba case, or + * if DI_LOCKED is not set, then p->parent may be different + * and h_parent can be NULL. + */ + if (unlikely(!p->hdir || !h_dir || !p->h_parent)) { + err = -EBUSY; + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + } + + au_igrab(h_dir); + err = au_pin_hdir_lock(p); + if (!err) + goto out; /* success */ + + au_unpin(p); + +out_err: + pr_err("err %d\n", err); + err = au_busy_or_stale(); +out: + return err; +} + +void au_pin_init(struct au_pin *p, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags) +{ + p->dentry = dentry; + p->udba = udba; + p->lsc_di = lsc_di; + p->lsc_hi = lsc_hi; + p->flags = flags; + p->bindex = bindex; + + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + + p->h_dentry = NULL; + p->h_parent = NULL; + p->br = NULL; + p->task = current; +} + +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) +{ + au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, + udba, flags); + return au_do_pin(pin); +} + +/* ---------------------------------------------------------------------- */ + +/* + * ->setattr() and ->getattr() are called in various cases. + * chmod, stat: dentry is revalidated. + * fchmod, fstat: file and dentry are not revalidated, additionally they may be + * unhashed. + * for ->setattr(), ia->ia_file is passed from ftruncate only. + */ +/* todo: consolidate with do_refresh() and simple_reval_dpath() */ +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + err = 0; + if (au_digen_test(dentry, sigen)) { + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + } + + AuTraceErr(err); + return err; +} + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a) +{ + int err; + loff_t sz; + aufs_bindex_t btop, ibtop; + struct dentry *hi_wh, *parent; + struct inode *inode; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + if (d_is_dir(dentry)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + /* plink or hi_wh() case */ + btop = au_dbtop(dentry); + inode = d_inode(dentry); + ibtop = au_ibtop(inode); + if (btop != ibtop && !au_test_ro(inode->i_sb, ibtop, inode)) + wr_dir_args.force_btgt = ibtop; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != btop) + au_fset_icpup(a->flags, DID_CPUP); + + err = 0; + a->pin_flags = AuPin_MNT_WRITE; + parent = NULL; + if (!IS_ROOT(dentry)) { + au_fset_pin(a->pin_flags, DI_LOCKED); + parent = dget_parent(dentry); + di_write_lock_parent(parent); + } + + err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); + if (unlikely(err)) + goto out_parent; + + sz = -1; + a->h_path.dentry = au_h_dptr(dentry, btop); + a->h_inode = d_inode(a->h_path.dentry); + if (ia && (ia->ia_valid & ATTR_SIZE)) { + inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); + if (ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + inode_unlock_shared(a->h_inode); + } + + hi_wh = NULL; + if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { + hi_wh = au_hi_wh(inode, a->btgt); + if (!hi_wh) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = -1, + .len = sz, + .pin = &a->pin + }; + err = au_sio_cpup_wh(&cpg, /*file*/NULL); + if (unlikely(err)) + goto out_unlock; + hi_wh = au_hi_wh(inode, a->btgt); + /* todo: revalidate hi_wh? */ + } + } + + if (parent) { + au_pin_set_parent_lflag(&a->pin, /*lflag*/0); + di_downgrade_lock(parent, AuLock_IR); + dput(parent); + parent = NULL; + } + if (!au_ftest_icpup(a->flags, DID_CPUP)) + goto out; /* success */ + + if (!d_unhashed(dentry)) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = btop, + .len = sz, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + err = au_sio_cpup_simple(&cpg); + if (!err) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + } else if (!hi_wh) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + else + a->h_path.dentry = hi_wh; /* do not dget here */ + +out_unlock: + a->h_inode = d_inode(a->h_path.dentry); + if (!err) + goto out; /* success */ + au_unpin(&a->pin); +out_parent: + if (parent) { + di_write_unlock(parent); + dput(parent); + } +out: + if (!err) + inode_lock_nested(a->h_inode, AuLsc_I_CHILD); + return err; +} + +static int aufs_setattr(struct dentry *dentry, struct iattr *ia) +{ + int err; + struct inode *inode, *delegated; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; + + inode = d_inode(dentry); + IMustLock(inode); + + err = setattr_prepare(dentry, ia); + if (unlikely(err)) + goto out; + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + + file = NULL; + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + if (ia->ia_valid & ATTR_FILE) { + /* currently ftruncate(2) only */ + AuDebugOn(!d_is_reg(dentry)); + file = ia->ia_file; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, + /*fi_lsc*/0); + if (unlikely(err)) + goto out_si; + ia->ia_file = au_hf_top(file); + a->udba = AuOpt_UDBA_NONE; + } else { + /* fchmod() doesn't pass ia_file */ + a->udba = au_opt_udba(sb); + di_write_lock_child(dentry); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out_dentry; + } + } + + err = au_pin_and_icpup(dentry, ia, a); + if (unlikely(err < 0)) + goto out_dentry; + if (au_ftest_icpup(a->flags, DID_CPUP)) { + ia->ia_file = NULL; + ia->ia_valid &= ~ATTR_FILE; + } + + a->h_path.mnt = au_sbr_mnt(sb, a->btgt); + if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) + == (ATTR_MODE | ATTR_CTIME)) { + err = security_path_chmod(&a->h_path, ia->ia_mode); + if (unlikely(err)) + goto out_unlock; + } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) + && (ia->ia_valid & ATTR_CTIME)) { + err = security_path_chown(&a->h_path, ia->ia_uid, ia->ia_gid); + if (unlikely(err)) + goto out_unlock; + } + + if (ia->ia_valid & ATTR_SIZE) { + struct file *f; + + if (ia->ia_size < i_size_read(inode)) + /* unmap only */ + truncate_setsize(inode, ia->ia_size); + + f = NULL; + if (ia->ia_valid & ATTR_FILE) + f = ia->ia_file; + inode_unlock(a->h_inode); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + inode_lock_nested(a->h_inode, AuLsc_I_CHILD); + } else { + delegated = NULL; + while (1) { + err = vfsub_notify_change(&a->h_path, ia, &delegated); + if (delegated) { + err = break_deleg_wait(&delegated); + if (!err) + continue; + } + break; + } + } + /* + * regardless aufs 'acl' option setting. + * why don't all acl-aware fs call this func from their ->setattr()? + */ + if (!err && (ia->ia_valid & ATTR_MODE)) + err = vfsub_acl_chmod(a->h_inode, ia->ia_mode); + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + inode_unlock(a->h_inode); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbtop(dentry); +out_dentry: + di_write_unlock(dentry); + if (file) { + fi_write_unlock(file); + ia->ia_file = file; + ia->ia_valid |= ATTR_FILE; + } +out_si: + si_read_unlock(sb); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +static int au_h_path_to_set_attr(struct dentry *dentry, + struct au_icpup_args *a, struct path *h_path) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + a->udba = au_opt_udba(sb); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out; + } + err = au_pin_and_icpup(dentry, /*ia*/NULL, a); + if (unlikely(err < 0)) + goto out; + + h_path->dentry = a->h_path.dentry; + h_path->mnt = au_sbr_mnt(sb, a->btgt); + +out: + return err; +} + +ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, + struct au_sxattr *arg) +{ + int err; + struct path h_path; + struct super_block *sb; + struct au_icpup_args *a; + struct inode *h_inode; + + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + h_path.dentry = NULL; /* silence gcc */ + di_write_lock_child(dentry); + err = au_h_path_to_set_attr(dentry, a, &h_path); + if (unlikely(err)) + goto out_di; + + inode_unlock(a->h_inode); + switch (arg->type) { + case AU_XATTR_SET: + AuDebugOn(d_is_negative(h_path.dentry)); + err = vfsub_setxattr(h_path.dentry, + arg->u.set.name, arg->u.set.value, + arg->u.set.size, arg->u.set.flags); + break; + case AU_ACL_SET: + err = -EOPNOTSUPP; + h_inode = d_inode(h_path.dentry); + if (h_inode->i_op->set_acl) + /* this will call posix_acl_update_mode */ + err = h_inode->i_op->set_acl(h_inode, + arg->u.acl_set.acl, + arg->u.acl_set.type); + break; + } + if (!err) + au_cpup_attr_timesizes(inode); + + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbtop(dentry); + +out_di: + di_write_unlock(dentry); + si_read_unlock(sb); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} +#endif + +static void au_refresh_iattr(struct inode *inode, struct kstat *st, + unsigned int nlink) +{ + unsigned int n; + + inode->i_mode = st->mode; + /* don't i_[ug]id_write() here */ + inode->i_uid = st->uid; + inode->i_gid = st->gid; + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; + inode->i_ctime = st->ctime; + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { + n = inode->i_nlink; + n -= nlink; + n += st->nlink; + smp_mb(); /* for i_nlink */ + /* 0 can happen */ + set_nlink(inode, n); + } + + spin_lock(&inode->i_lock); + inode->i_blocks = st->blocks; + i_size_write(inode, st->size); + spin_unlock(&inode->i_lock); +} + +/* + * common routine for aufs_getattr() and au_getxattr(). + * returns zero or negative (an error). + * @dentry will be read-locked in success. + */ +int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, + struct path *h_path, int locked) +{ + int err; + unsigned int mnt_flags, sigen; + unsigned char udba_none; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + + h_path->mnt = NULL; + h_path->dentry = NULL; + + err = 0; + sb = dentry->d_sb; + mnt_flags = au_mntflags(sb); + udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); + + if (unlikely(locked)) + goto body; /* skip locking dinfo */ + + /* support fstat(2) */ + if (!d_unlinked(dentry) && !udba_none) { + sigen = au_sigen(sb); + err = au_digen_test(dentry, sigen); + if (!err) { + di_read_lock_child(dentry, AuLock_IR); + err = au_dbrange_test(dentry); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + goto out; + } + } else { + AuDebugOn(IS_ROOT(dentry)); + di_write_lock_child(dentry); + err = au_dbrange_test(dentry); + if (!err) + err = au_reval_for_attr(dentry, sigen); + if (!err) + di_downgrade_lock(dentry, AuLock_IR); + else { + di_write_unlock(dentry); + goto out; + } + } + } else + di_read_lock_child(dentry, AuLock_IR); + +body: + if (!inode) { + inode = d_inode(dentry); + if (unlikely(!inode)) + goto out; + } + bindex = au_ibtop(inode); + h_path->mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path->mnt->mnt_sb; + if (!force + && !au_test_fs_bad_iattr(h_sb) + && udba_none) + goto out; /* success */ + + if (au_dbtop(dentry) == bindex) + h_path->dentry = au_h_dptr(dentry, bindex); + else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { + h_path->dentry = au_plink_lkup(inode, bindex); + if (IS_ERR(h_path->dentry)) + /* pretending success */ + h_path->dentry = NULL; + else + dput(h_path->dentry); + } + +out: + return err; +} + +static int aufs_getattr(const struct path *path, struct kstat *st, + u32 request, unsigned int query) +{ + int err; + unsigned char positive; + struct path h_path; + struct dentry *dentry; + struct inode *inode; + struct super_block *sb; + + dentry = path->dentry; + inode = d_inode(dentry); + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + err = au_h_path_getattr(dentry, /*inode*/NULL, /*force*/0, &h_path, + /*locked*/0); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_fill; /* pretending success */ + + positive = d_is_positive(h_path.dentry); + if (positive) + /* no vfsub version */ + err = vfs_getattr(&h_path, st, request, query); + if (!err) { + if (positive) + au_refresh_iattr(inode, st, + d_inode(h_path.dentry)->i_nlink); + goto out_fill; /* success */ + } + AuTraceErr(err); + goto out_di; + +out_fill: + generic_fillattr(inode, st); +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static const char *aufs_get_link(struct dentry *dentry, struct inode *inode, + struct delayed_call *done) +{ + const char *ret; + struct dentry *h_dentry; + struct inode *h_inode; + int err; + aufs_bindex_t bindex; + + ret = NULL; /* suppress a warning */ + err = -ECHILD; + if (!dentry) + goto out; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + + err = -EINVAL; + inode = d_inode(dentry); + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode->i_op->get_link)) + goto out_unlock; + + err = -EBUSY; + h_dentry = NULL; + if (au_dbtop(dentry) <= bindex) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + dget(h_dentry); + } + if (!h_dentry) { + h_dentry = d_find_any_alias(h_inode); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_unlock; + } + } + if (unlikely(!h_dentry)) + goto out_unlock; + + err = 0; + AuDbg("%ps\n", h_inode->i_op->get_link); + AuDbgDentry(h_dentry); + ret = vfs_get_link(h_dentry, done); + dput(h_dentry); + if (IS_ERR(ret)) + err = PTR_ERR(ret); + +out_unlock: + aufs_read_unlock(dentry, AuLock_IR); +out: + if (unlikely(err)) + ret = ERR_PTR(err); + AuTraceErrPtr(ret); + return ret; +} + +/* ---------------------------------------------------------------------- */ + +static int au_is_special(struct inode *inode) +{ + return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK)); +} + +static int aufs_update_time(struct inode *inode, struct timespec64 *ts, + int flags) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + struct vfsmount *h_mnt; + + sb = inode->i_sb; + WARN_ONCE((flags & S_ATIME) && !IS_NOATIME(inode), + "unexpected s_flags 0x%lx", sb->s_flags); + + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + + err = 0; + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (!au_test_ro(sb, bindex, inode)) { + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (!err) { + err = vfsub_update_time(h_inode, ts, flags); + vfsub_mnt_drop_write(h_mnt); + } + } else if (au_is_special(h_inode)) { + /* + * Never copy-up here. + * These special files may already be opened and used for + * communicating. If we copied it up, then the communication + * would be corrupted. + */ + AuWarn1("timestamps for i%lu are ignored " + "since it is on readonly branch (hi%lu).\n", + inode->i_ino, h_inode->i_ino); + } else if (flags & ~S_ATIME) { + err = -EIO; + AuIOErr1("unexpected flags 0x%x\n", flags); + AuDebugOn(1); + } + + if (!err) + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + lockdep_on(); + + if (!err && (flags & S_VERSION)) + inode_inc_iversion(inode); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no getattr version will be set by module.c:aufs_init() */ +struct inode_operations aufs_iop_nogetattr[AuIop_Last], + aufs_iop[] = { + [AuIop_SYMLINK] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, /* unsupport for symlink? */ +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .get_link = aufs_get_link, + + /* .update_time = aufs_update_time */ + }, + [AuIop_DIR] = { + .create = aufs_create, + .lookup = aufs_lookup, + .link = aufs_link, + .unlink = aufs_unlink, + .symlink = aufs_symlink, + .mkdir = aufs_mkdir, + .rmdir = aufs_rmdir, + .mknod = aufs_mknod, + .rename = aufs_rename, + + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .update_time = aufs_update_time, + .atomic_open = aufs_atomic_open, + .tmpfile = aufs_tmpfile + }, + [AuIop_OTHER] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .update_time = aufs_update_time + } +}; --- linux-5.8.0.orig/fs/aufs/i_op_add.c +++ linux-5.8.0/fs/aufs/i_op_add.c @@ -0,0 +1,936 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (add entry) + */ + +#include +#include "aufs.h" + +/* + * final procedure of adding a new entry, except link(2). + * remove whiteout, instantiate, copyup the parent dir's times and size + * and update version. + * if it failed, re-create the removed whiteout. + */ +static int epilog(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct dentry *dentry) +{ + int err, rerr; + aufs_bindex_t bwh; + struct path h_path; + struct super_block *sb; + struct inode *inode, *h_dir; + struct dentry *wh; + + bwh = -1; + sb = dir->i_sb; + if (wh_dentry) { + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + AuDebugOn(au_h_iptr(dir, bindex) != h_dir); + bwh = au_dbwh(dentry); + h_path.dentry = wh_dentry; + h_path.mnt = au_sbr_mnt(sb, bindex); + err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, + dentry); + if (unlikely(err)) + goto out; + } + + inode = au_new_inode(dentry, /*must_new*/1); + if (!IS_ERR(inode)) { + d_instantiate(dentry, inode); + dir = d_inode(dentry->d_parent); /* dir inode is locked */ + IMustLock(dir); + au_dir_ts(dir, bindex); + inode_inc_iversion(dir); + au_fhsm_wrote(sb, bindex, /*force*/0); + return 0; /* success */ + } + + err = PTR_ERR(inode); + if (!wh_dentry) + goto out; + + /* revert */ + /* dir inode is locked */ + wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); + rerr = PTR_ERR(wh); + if (IS_ERR(wh)) { + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } else + dput(wh); + +out: + return err; +} + +static int au_d_may_add(struct dentry *dentry) +{ + int err; + + err = 0; + if (unlikely(d_unhashed(dentry))) + err = -ENOENT; + if (unlikely(d_really_is_positive(dentry))) + err = -EEXIST; + return err; +} + +/* + * simple tests for the adding inode operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry; + struct inode *h_inode; + + err = -ENAMETOOLONG; + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_negative(dentry)) { + err = -EEXIST; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } + + err = 0; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + err = -EIO; + +out: + AuTraceErr(err); + return err; +} + +/* + * initial procedure of adding a new entry. + * prepare writable branch and the parent dir, lock it, + * and lookup whiteout for the new entry. + */ +static struct dentry* +lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, + struct dentry *src_dentry, struct au_pin *pin, + struct au_wr_dir_args *wr_dir_args) +{ + struct dentry *wh_dentry, *h_parent; + struct super_block *sb; + struct au_branch *br; + int err; + unsigned int udba; + aufs_bindex_t bcpup; + + AuDbg("%pd\n", dentry); + + err = au_wr_dir(dentry, src_dentry, wr_dir_args); + bcpup = err; + wh_dentry = ERR_PTR(err); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_parent = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbtop(dentry) == bcpup) + err = au_may_add(dentry, bcpup, h_parent, + au_ftest_wrdir(wr_dir_args->flags, ISDIR)); + else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + + br = au_sbr(sb, bcpup); + if (dt) { + struct path tmp = { + .dentry = h_parent, + .mnt = au_br_mnt(br) + }; + au_dtime_store(dt, au_pinned_parent(pin), &tmp); + } + + wh_dentry = NULL; + if (bcpup != au_dbwh(dentry)) + goto out; /* success */ + + /* + * ENAMETOOLONG here means that if we allowed create such name, then it + * would not be able to removed in the future. So we don't allow such + * name here and we don't handle ENAMETOOLONG differently here. + */ + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + +out_unpin: + if (IS_ERR(wh_dentry)) + au_unpin(pin); +out: + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +enum { Mknod, Symlink, Creat }; +struct simple_arg { + int type; + union { + struct { + umode_t mode; + bool want_excl; + bool try_aopen; + struct vfsub_aopen_args *aopen; + } c; + struct { + const char *symname; + } s; + struct { + umode_t mode; + dev_t dev; + } m; + } u; +}; + +static int add_simple(struct inode *dir, struct dentry *dentry, + struct simple_arg *arg) +{ + int err, rerr; + aufs_bindex_t btop; + unsigned char created; + const unsigned char try_aopen + = (arg->type == Creat && arg->u.c.try_aopen); + struct vfsub_aopen_args *aopen = arg->u.c.aopen; + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct super_block *sb; + struct au_branch *br; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct au_wr_dir_args wr_dir_args; + } *a; + + AuDbg("%pd\n", dentry); + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->wr_dir_args.force_btgt = -1; + a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; + + parent = dentry->d_parent; /* dir inode is locked */ + if (!try_aopen) { + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + } + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + if (!try_aopen) + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &a->wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + btop = au_dbtop(dentry); + sb = dentry->d_sb; + br = au_sbr(sb, btop); + a->h_path.dentry = au_h_dptr(dentry, btop); + a->h_path.mnt = au_br_mnt(br); + h_dir = au_pinned_h_dir(&a->pin); + switch (arg->type) { + case Creat: + if (!try_aopen || !h_dir->i_op->atomic_open) { + err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, + arg->u.c.want_excl); + created = !err; + if (!err && try_aopen) + aopen->file->f_mode |= FMODE_CREATED; + } else { + aopen->br = br; + err = vfsub_atomic_open(h_dir, a->h_path.dentry, aopen); + AuDbg("err %d\n", err); + AuDbgFile(aopen->file); + created = err >= 0 + && !!(aopen->file->f_mode & FMODE_CREATED); + } + break; + case Symlink: + err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); + created = !err; + break; + case Mknod: + err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, + arg->u.m.dev); + created = !err; + break; + default: + BUG(); + } + if (unlikely(err < 0)) + goto out_unpin; + + err = epilog(dir, btop, wh_dentry, dentry); + if (!err) + goto out_unpin; /* success */ + + /* revert */ + if (created /* && d_is_positive(a->h_path.dentry) */) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, + /*force*/0); + if (rerr) { + AuIOErr("%pd revert failure(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); + } + if (try_aopen && h_dir->i_op->atomic_open + && (aopen->file->f_mode & FMODE_OPENED)) + /* aopen->file is still opened */ + au_lcnt_dec(&aopen->br->br_nfiles); + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + if (!try_aopen) + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + if (!try_aopen) + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} + +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, + .u.m = { + .mode = mode, + .dev = dev + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, + .u.s.symname = symname + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + bool want_excl) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = mode, + .want_excl = want_excl + } + }; + return add_simple(dir, dentry, &arg); +} + +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *aopen_args) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = aopen_args->create_mode, + .want_excl = aopen_args->open_flag & O_EXCL, + .try_aopen = true, + .aopen = aopen_args + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct dentry *parent, *h_parent, *h_dentry; + struct inode *h_dir, *inode; + struct vfsmount *h_mnt; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_TMPFILE + }; + + /* copy-up may happen */ + inode_lock(dir); + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + if (unlikely(err)) + goto out_si; + + err = -EBUSY; + parent = d_find_any_alias(dir); + AuDebugOn(!parent); + di_write_lock_parent(parent); + if (unlikely(d_inode(parent) != dir)) + goto out_parent; + + err = au_digen_test(parent, au_sigen(sb)); + if (unlikely(err)) + goto out_parent; + + bindex = au_dbtop(parent); + au_set_dbtop(dentry, bindex); + au_set_dbbot(dentry, bindex); + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + bindex = err; + if (unlikely(err < 0)) + goto out_parent; + + err = -EOPNOTSUPP; + h_dir = au_h_iptr(dir, bindex); + if (unlikely(!h_dir->i_op->tmpfile)) + goto out_parent; + + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (unlikely(err)) + goto out_parent; + + h_parent = au_h_dptr(parent, bindex); + h_dentry = vfs_tmpfile(h_parent, mode, /*open_flag*/0); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_mnt; + } + + au_set_dbtop(dentry, bindex); + au_set_dbbot(dentry, bindex); + au_set_h_dptr(dentry, bindex, dget(h_dentry)); + inode = au_new_inode(dentry, /*must_new*/1); + if (IS_ERR(inode)) { + err = PTR_ERR(inode); + au_set_h_dptr(dentry, bindex, NULL); + au_set_dbtop(dentry, -1); + au_set_dbbot(dentry, -1); + } else { + if (!inode->i_nlink) + set_nlink(inode, 1); + d_tmpfile(dentry, inode); + au_di(dentry)->di_tmpfile = 1; + + /* update without i_mutex */ + if (au_ibtop(dir) == au_dbtop(dentry)) + au_cpup_attr_timesizes(dir); + } + dput(h_dentry); + +out_mnt: + vfsub_mnt_drop_write(h_mnt); +out_parent: + di_write_unlock(parent); + dput(parent); + di_write_unlock(dentry); + if (unlikely(err)) { + au_di_fin(dentry); + dentry->d_fsdata = NULL; + } +out_si: + si_read_unlock(sb); +out: + inode_unlock(dir); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_link_args { + aufs_bindex_t bdst, bsrc; + struct au_pin pin; + struct path h_path; + struct dentry *src_parent, *parent; +}; + +static int au_cpup_before_link(struct dentry *src_dentry, + struct au_link_args *a) +{ + int err; + struct dentry *h_src_dentry; + struct au_cp_generic cpg = { + .dentry = src_dentry, + .bdst = a->bdst, + .bsrc = a->bsrc, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ + }; + + di_read_lock_parent(a->src_parent, AuLock_IR); + err = au_test_and_cpup_dirs(src_dentry, a->bdst); + if (unlikely(err)) + goto out; + + h_src_dentry = au_h_dptr(src_dentry, a->bsrc); + err = au_pin(&a->pin, src_dentry, a->bdst, + au_opt_udba(src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&a->pin); + +out: + di_read_unlock(a->src_parent, AuLock_IR); + return err; +} + +static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, + struct au_link_args *a) +{ + int err; + unsigned char plink; + aufs_bindex_t bbot; + struct dentry *h_src_dentry; + struct inode *h_inode, *inode, *delegated; + struct super_block *sb; + struct file *h_file; + + plink = 0; + h_inode = NULL; + sb = src_dentry->d_sb; + inode = d_inode(src_dentry); + if (au_ibtop(inode) <= a->bdst) + h_inode = au_h_iptr(inode, a->bdst); + if (!h_inode || !h_inode->i_nlink) { + /* copyup src_dentry as the name of dentry. */ + bbot = au_dbbot(dentry); + if (bbot < a->bsrc) + au_set_dbbot(dentry, a->bsrc); + au_set_h_dptr(dentry, a->bsrc, + dget(au_h_dptr(src_dentry, a->bsrc))); + dget(a->h_path.dentry); + au_set_h_dptr(dentry, a->bdst, NULL); + AuDbg("temporary d_inode...\n"); + spin_lock(&dentry->d_lock); + dentry->d_inode = d_inode(src_dentry); /* tmp */ + spin_unlock(&dentry->d_lock); + h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->bdst, + .bsrc = -1, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_KEEPLINO + }; + err = au_sio_cpup_simple(&cpg); + au_h_open_post(dentry, a->bsrc, h_file); + if (!err) { + dput(a->h_path.dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + } else + au_set_h_dptr(dentry, a->bdst, + a->h_path.dentry); + } + spin_lock(&dentry->d_lock); + dentry->d_inode = NULL; /* restore */ + spin_unlock(&dentry->d_lock); + AuDbg("temporary d_inode...done\n"); + au_set_h_dptr(dentry, a->bsrc, NULL); + au_set_dbbot(dentry, bbot); + } else { + /* the inode of src_dentry already exists on a.bdst branch */ + h_src_dentry = d_find_alias(h_inode); + if (!h_src_dentry && au_plink_test(inode)) { + plink = 1; + h_src_dentry = au_plink_lkup(inode, a->bdst); + err = PTR_ERR(h_src_dentry); + if (IS_ERR(h_src_dentry)) + goto out; + + if (unlikely(d_is_negative(h_src_dentry))) { + dput(h_src_dentry); + h_src_dentry = NULL; + } + + } + if (h_src_dentry) { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src_dentry); + } else { + AuIOErr("no dentry found for hi%lu on b%d\n", + h_inode->i_ino, a->bdst); + err = -EIO; + } + } + + if (!err && !plink) + au_plink_append(inode, a->bdst, a->h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry) +{ + int err, rerr; + struct au_dtime dt; + struct au_link_args *a; + struct dentry *wh_dentry, *h_src_dentry; + struct inode *inode, *delegated; + struct super_block *sb; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + IMustLock(dir); + inode = d_inode(src_dentry); + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_and_write_lock2(dentry, src_dentry, + AuLock_NOPLM | AuLock_GEN); + if (unlikely(err)) + goto out_kfree; + err = au_d_linkable(src_dentry); + if (unlikely(err)) + goto out_unlock; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + a->src_parent = dget_parent(src_dentry); + wr_dir_args.force_btgt = au_ibtop(inode); + + di_write_lock_parent(a->parent); + wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + err = 0; + sb = dentry->d_sb; + a->bdst = au_dbtop(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibtop(inode); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) + h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); + if (!h_src_dentry) { + a->bsrc = au_dbtop(src_dentry); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + AuDebugOn(!h_src_dentry); + } else if (IS_ERR(h_src_dentry)) { + err = PTR_ERR(h_src_dentry); + goto out_parent; + } + + /* + * aufs doesn't touch the credential so + * security_dentry_create_files_as() is unnecessary. + */ + if (au_opt_test(au_mntflags(sb), PLINK)) { + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) + err = au_cpup_or_link(src_dentry, dentry, a); + else { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_src_dentry); + } else { + /* + * copyup src_dentry to the branch we process, + * and then link(2) to it. + */ + dput(h_src_dentry); + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { + au_unpin(&a->pin); + di_write_unlock(a->parent); + err = au_cpup_before_link(src_dentry, a); + di_write_lock_parent(a->parent); + if (!err) + err = au_pin(&a->pin, dentry, a->bdst, + au_opt_udba(sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_wh; + } + if (!err) { + h_src_dentry = au_h_dptr(src_dentry, a->bdst); + err = -ENOENT; + if (h_src_dentry && d_is_positive(h_src_dentry)) { + delegated = NULL; + err = vfsub_link(h_src_dentry, + au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry" + " for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + } + } + if (unlikely(err)) + goto out_unpin; + + if (wh_dentry) { + a->h_path.dentry = wh_dentry; + err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, + dentry); + if (unlikely(err)) + goto out_revert; + } + + au_dir_ts(dir, a->bdst); + inode_inc_iversion(dir); + inc_nlink(inode); + inode->i_ctime = dir->i_ctime; + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ + d_drop(dentry); + /* some filesystems consume an inode even hardlink */ + au_fhsm_wrote(sb, a->bdst, /*force*/0); + goto out_unpin; /* success */ + +out_revert: + /* no delegation since it is just created */ + rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, + /*delegated*/NULL, /*force*/0); + if (unlikely(rerr)) { + AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); +out_unpin: + au_unpin(&a->pin); +out_wh: + dput(wh_dentry); +out_parent: + di_write_unlock(a->parent); + dput(a->src_parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} + +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; + unsigned char diropq; + struct path h_path; + struct dentry *wh_dentry, *parent, *opq_dentry; + struct inode *h_inode; + struct super_block *sb; + struct { + struct au_pin pin; + struct au_dtime dt; + } *a; /* reduce the stack usage */ + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR + }; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + sb = dentry->d_sb; + bindex = au_dbtop(dentry); + h_path.dentry = au_h_dptr(dentry, bindex); + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); + if (unlikely(err)) + goto out_unpin; + + /* make the dir opaque */ + diropq = 0; + h_inode = d_inode(h_path.dentry); + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + inode_lock_nested(h_inode, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + inode_unlock(h_inode); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out_dir; + dput(opq_dentry); + diropq = 1; + } + + err = epilog(dir, bindex, wh_dentry, dentry); + if (!err) { + inc_nlink(dir); + goto out_unpin; /* success */ + } + + /* revert */ + if (diropq) { + AuLabel(revert opq); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + inode_unlock(h_inode); + if (rerr) { + AuIOErr("%pd reverting diropq failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + } + +out_dir: + AuLabel(revert dir); + rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); + if (rerr) { + AuIOErr("%pd reverting dir failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/i_op_del.c +++ linux-5.8.0/fs/aufs/i_op_del.c @@ -0,0 +1,513 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (del entry) + */ + +#include +#include "aufs.h" + +/* + * decide if a new whiteout for @dentry is necessary or not. + * when it is necessary, prepare the parent dir for the upper branch whose + * branch index is @bcpup for creation. the actual creation of the whiteout will + * be done by caller. + * return value: + * 0: wh is unnecessary + * plus: wh is necessary + * minus: error + */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) +{ + int need_wh, err; + aufs_bindex_t btop; + struct super_block *sb; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + if (*bcpup < 0) { + *bcpup = btop; + if (au_test_ro(sb, btop, d_inode(dentry))) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(btop < *bcpup + || au_test_ro(sb, *bcpup, d_inode(dentry))); + AuDbg("bcpup %d, btop %d\n", *bcpup, btop); + + if (*bcpup != btop) { + err = au_cpup_dirs(dentry, *bcpup); + if (unlikely(err)) + goto out; + need_wh = 1; + } else { + struct au_dinfo *dinfo, *tmp; + + need_wh = -ENOMEM; + dinfo = au_di(dentry); + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (tmp) { + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + need_wh = au_lkup_dentry(dentry, btop + 1, + /* AuLkup_IGNORE_PERM */ 0); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + } + } + AuDbg("need_wh %d\n", need_wh); + err = need_wh; + +out: + return err; +} + +/* + * simple tests for the del-entry operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry, *h_latest; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_positive(dentry)) { + err = -ENOENT; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } + + err = -ENOENT; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + goto out; + err = 0; + + /* + * rmdir a dir may break the consistency on some filesystem. + * let's try heavy test. + */ + err = -EACCES; + if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1) + && au_test_h_perm(d_inode(h_parent), + MAY_EXEC | MAY_WRITE))) + goto out; + + h_latest = au_sio_lkup_one(&dentry->d_name, h_parent); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; + if (h_latest == h_dentry) + err = 0; + dput(h_latest); + +out: + return err; +} + +/* + * decide the branch where we operate for @dentry. the branch index will be set + * @rbcpup. after deciding it, 'pin' it and store the timestamps of the parent + * dir for reverting. + * when a new whiteout is necessary, create it. + */ +static struct dentry* +lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, + struct au_dtime *dt, struct au_pin *pin) +{ + struct dentry *wh_dentry; + struct super_block *sb; + struct path h_path; + int err, need_wh; + unsigned int udba; + aufs_bindex_t bcpup; + + need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); + wh_dentry = ERR_PTR(need_wh); + if (unlikely(need_wh < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + bcpup = *rbcpup; + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_path.dentry = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbtop(dentry) == bcpup) { + err = au_may_del(dentry, bcpup, h_path.dentry, isdir); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + } + + h_path.mnt = au_sbr_mnt(sb, bcpup); + au_dtime_store(dt, au_pinned_parent(pin), &h_path); + wh_dentry = NULL; + if (!need_wh) + goto out; /* success, no need to create whiteout */ + + wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); + if (IS_ERR(wh_dentry)) + goto out_unpin; + + /* returns with the parent is locked and wh_dentry is dget-ed */ + goto out; /* success */ + +out_unpin: + au_unpin(pin); +out: + return wh_dentry; +} + +/* + * when removing a dir, rename it to a unique temporary whiteout-ed name first + * in order to be revertible and save time for removing many child whiteouts + * under the dir. + * returns 1 when there are too many child whiteout and caller should remove + * them asynchronously. returns 0 when the number of children is enough small to + * remove now or the branch fs is a remote fs. + * otherwise return an error. + */ +static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, + struct au_nhash *whlist, struct inode *dir) +{ + int rmdir_later, err, dirwh; + struct dentry *h_dentry; + struct super_block *sb; + struct inode *inode; + + sb = dentry->d_sb; + SiMustAnyLock(sb); + h_dentry = au_h_dptr(dentry, bindex); + err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); + if (unlikely(err)) + goto out; + + /* stop monitoring */ + inode = d_inode(dentry); + au_hn_free(au_hi(inode, bindex)); + + if (!au_test_fs_remote(h_dentry->d_sb)) { + dirwh = au_sbi(sb)->si_dirwh; + rmdir_later = (dirwh <= 1); + if (!rmdir_later) + rmdir_later = au_nhash_test_longer_wh(whlist, bindex, + dirwh); + if (rmdir_later) + return rmdir_later; + } + + err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); + if (unlikely(err)) { + AuIOErr("rmdir %pd, b%d failed, %d. ignored\n", + h_dentry, bindex, err); + err = 0; + } + +out: + AuTraceErr(err); + return err; +} + +/* + * final procedure for deleting a entry. + * maintain dentry and iattr. + */ +static void epilog(struct inode *dir, struct dentry *dentry, + aufs_bindex_t bindex) +{ + struct inode *inode; + + inode = d_inode(dentry); + d_drop(dentry); + inode->i_ctime = dir->i_ctime; + + au_dir_ts(dir, bindex); + inode_inc_iversion(dir); +} + +/* + * when an error happened, remove the created whiteout and revert everything. + */ +static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, + aufs_bindex_t bwh, struct dentry *wh_dentry, + struct dentry *dentry, struct au_dtime *dt) +{ + int rerr; + struct path h_path = { + .dentry = wh_dentry, + .mnt = au_sbr_mnt(dir->i_sb, bindex) + }; + + rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); + if (!rerr) { + au_set_dbwh(dentry, bwh); + au_dtime_revert(dt); + return 0; + } + + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", dentry, err, rerr); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +int aufs_unlink(struct inode *dir, struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bindex, btop; + struct inode *inode, *h_dir, *delegated; + struct dentry *parent, *wh_dentry; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -EISDIR; + if (unlikely(d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + btop = au_dbtop(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + a->h_path.mnt = au_sbr_mnt(dentry->d_sb, btop); + a->h_path.dentry = au_h_dptr(dentry, btop); + dget(a->h_path.dentry); + if (bindex == btop) { + h_dir = au_pinned_h_dir(&a->pin); + delegated = NULL; + err = vfsub_unlink(h_dir, &a->h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + /* dir inode is locked */ + h_dir = d_inode(wh_dentry->d_parent); + IMustLock(h_dir); + err = 0; + } + + if (!err) { + vfsub_drop_nlink(inode); + epilog(dir, dentry, bindex); + + /* update target timestamps */ + if (bindex == btop) { + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); + /*ignore*/ + inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + } else + /* todo: this timestamp may be reverted later */ + inode->i_ctime = h_dir->i_ctime; + goto out_unpin; /* success */ + } + + /* revert */ + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(a->h_path.dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, btop; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -ENOTDIR; + if (unlikely(!d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + err = -ENOMEM; + args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); + if (unlikely(!args)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + err = au_test_empty(dentry, &args->whlist); + if (unlikely(err)) + goto out_parent; + + btop = au_dbtop(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_dentry = au_h_dptr(dentry, btop); + dget(h_dentry); + rmdir_later = 0; + if (bindex == btop) { + err = renwh_and_rmdir(dentry, btop, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, btop)); + + /* dir inode is locked */ + IMustLock(d_inode(wh_dentry->d_parent)); + err = 0; + } + + if (!err) { + vfsub_dead_dir(inode); + au_set_dbdiropq(dentry, -1); + epilog(dir, dentry, bindex); + + if (rmdir_later) { + au_whtmp_kick_rmdir(dir, btop, h_dentry, args); + args = NULL; + } + + goto out_unpin; /* success */ + } + + /* revert */ + AuLabel(revert); + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(h_dentry); +out_parent: + di_write_unlock(parent); + if (args) + au_whtmp_rmdir_free(args); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} --- linux-5.8.0.orig/fs/aufs/i_op_ren.c +++ linux-5.8.0/fs/aufs/i_op_ren.c @@ -0,0 +1,1250 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operation (rename entry) + * todo: this is crazy monster + */ + +#include +#include "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR_SRC 1 +#define AuRen_ISDIR_DST (1 << 1) +#define AuRen_ISSAMEDIR (1 << 2) +#define AuRen_WHSRC (1 << 3) +#define AuRen_WHDST (1 << 4) +#define AuRen_MNT_WRITE (1 << 5) +#define AuRen_DT_DSTDIR (1 << 6) +#define AuRen_DIROPQ_SRC (1 << 7) +#define AuRen_DIROPQ_DST (1 << 8) +#define AuRen_DIRREN (1 << 9) +#define AuRen_DROPPED_SRC (1 << 10) +#define AuRen_DROPPED_DST (1 << 11) +#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) +#define au_fset_ren(flags, name) \ + do { (flags) |= AuRen_##name; } while (0) +#define au_fclr_ren(flags, name) \ + do { (flags) &= ~AuRen_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuRen_DIRREN +#define AuRen_DIRREN 0 +#endif + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir, *hinode; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t btop, bdiropq; + } sd[AuSrcDst]; + +#define src_dentry sd[AuSRC].dentry +#define src_dir sd[AuSRC].dir +#define src_inode sd[AuSRC].inode +#define src_h_dentry sd[AuSRC].h_dentry +#define src_parent sd[AuSRC].parent +#define src_h_parent sd[AuSRC].h_parent +#define src_wh_dentry sd[AuSRC].wh_dentry +#define src_hdir sd[AuSRC].hdir +#define src_hinode sd[AuSRC].hinode +#define src_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_btop sd[AuSRC].btop +#define src_bdiropq sd[AuSRC].bdiropq + +#define dst_dentry sd[AuDST].dentry +#define dst_dir sd[AuDST].dir +#define dst_inode sd[AuDST].inode +#define dst_h_dentry sd[AuDST].h_dentry +#define dst_parent sd[AuDST].parent +#define dst_h_parent sd[AuDST].h_parent +#define dst_wh_dentry sd[AuDST].wh_dentry +#define dst_hdir sd[AuDST].hdir +#define dst_hinode sd[AuDST].hinode +#define dst_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_btop sd[AuDST].btop +#define dst_bdiropq sd[AuDST].bdiropq + + struct dentry *h_trap; + struct au_branch *br; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh; + + struct { + unsigned short auren_flags; + unsigned char flags; /* syscall parameter */ + unsigned char exchange; + } __packed; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; + struct au_hinode *h_root; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happened. + * we don't need to revert the copied-up/down the parent dir since they are + * harmless. + */ + +#define RevertFailure(fmt, ...) do { \ + AuIOErr("revert failure: " fmt " (%d, %d)\n", \ + ##__VA_ARGS__, err, rerr); \ + err = -EIO; \ +} while (0) + +static void au_ren_do_rev_diropq(int err, struct au_ren_args *a, int idx) +{ + int rerr; + struct dentry *d; +#define src_or_dst(member) a->sd[idx].member + + d = src_or_dst(dentry); /* {src,dst}_dentry */ + au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); + rerr = au_diropq_remove(d, a->btgt); + au_hn_inode_unlock(src_or_dst(hinode)); + au_set_dbdiropq(d, src_or_dst(bdiropq)); + if (rerr) + RevertFailure("remove diropq %pd", d); + +#undef src_or_dst_ +} + +static void au_ren_rev_diropq(int err, struct au_ren_args *a) +{ + if (au_ftest_ren(a->auren_flags, DIROPQ_SRC)) + au_ren_do_rev_diropq(err, a, AuSRC); + if (au_ftest_ren(a->auren_flags, DIROPQ_DST)) + au_ren_do_rev_diropq(err, a, AuDST); +} + +static void au_ren_rev_rename(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name, + a->src_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->src_dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, + au_h_dptr(a->src_dentry, a->btgt), + a->src_h_dir, &a->h_path, &delegated, a->flags); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ + if (rerr) + RevertFailure("rename %pd", a->src_dentry); +} + +static void au_ren_rev_whtmp(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name, + a->dst_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->dst_dentry); + return; + } + if (d_is_positive(a->h_path.dentry)) { + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path, + &delegated, a->flags); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + if (!rerr) + au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); + else + RevertFailure("rename %pd", a->h_dst); +} + +static void au_ren_rev_whsrc(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->src_wh_dentry; + rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); + au_set_dbwh(a->src_dentry, a->src_bwh); + if (rerr) + RevertFailure("unlink %pd", a->src_wh_dentry); +} +#undef RevertFailure + +/* ---------------------------------------------------------------------- */ + +/* + * when we have to copyup the renaming entry, do it with the rename-target name + * in order to minimize the cost (the later actual rename is unnecessary). + * otherwise rename it on the target branch. + */ +static int au_ren_or_cpup(struct au_ren_args *a) +{ + int err; + struct dentry *d; + struct inode *delegated; + + d = a->src_dentry; + if (au_dbtop(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + AuDebugOn(au_dbtop(d) != a->btgt); + delegated = NULL; + err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), + a->dst_h_dir, &a->h_path, &delegated, + a->flags); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + } else + BUG(); + + if (!err && a->h_dst) + /* it will be set to dinfo later */ + dget(a->h_dst); + + return err; +} + +/* cf. aufs_rmdir() */ +static int au_ren_del_whtmp(struct au_ren_args *a) +{ + int err; + struct inode *dir; + + dir = a->dst_dir; + SiMustAnyLock(dir->i_sb); + if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, + au_sbi(dir->i_sb)->si_dirwh) + || au_test_fs_remote(a->h_dst->d_sb)) { + err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); + if (unlikely(err)) + pr_warn("failed removing whtmp dir %pd (%d), " + "ignored.\n", a->h_dst, err); + } else { + au_nhash_wh_free(&a->thargs->whlist); + a->thargs->whlist = a->whlist; + a->whlist.nh_num = 0; + au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); + dput(a->h_dst); + a->thargs = NULL; + } + + return 0; +} + +/* make it 'opaque' dir. */ +static int au_ren_do_diropq(struct au_ren_args *a, int idx) +{ + int err; + struct dentry *d, *diropq; +#define src_or_dst(member) a->sd[idx].member + + err = 0; + d = src_or_dst(dentry); /* {src,dst}_dentry */ + src_or_dst(bdiropq) = au_dbdiropq(d); + src_or_dst(hinode) = au_hi(src_or_dst(inode), a->btgt); + au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); + diropq = au_diropq_create(d, a->btgt); + au_hn_inode_unlock(src_or_dst(hinode)); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + else + dput(diropq); + +#undef src_or_dst_ + return err; +} + +static int au_ren_diropq(struct au_ren_args *a) +{ + int err; + unsigned char always; + struct dentry *d; + + err = 0; + d = a->dst_dentry; /* already renamed on the branch */ + always = !!au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) + && !au_ftest_ren(a->auren_flags, DIRREN) + && a->btgt != au_dbdiropq(a->src_dentry) + && (a->dst_wh_dentry + || a->btgt <= au_dbdiropq(d) + /* hide the lower to keep xino */ + /* the lowers may not be a dir, but we hide them anyway */ + || a->btgt < au_dbbot(d) + || always)) { + AuDbg("here\n"); + err = au_ren_do_diropq(a, AuSRC); + if (unlikely(err)) + goto out; + au_fset_ren(a->auren_flags, DIROPQ_SRC); + } + if (!a->exchange) + goto out; /* success */ + + d = a->src_dentry; /* already renamed on the branch */ + if (au_ftest_ren(a->auren_flags, ISDIR_DST) + && a->btgt != au_dbdiropq(a->dst_dentry) + && (a->btgt < au_dbdiropq(d) + || a->btgt < au_dbbot(d) + || always)) { + AuDbgDentry(a->src_dentry); + AuDbgDentry(a->dst_dentry); + err = au_ren_do_diropq(a, AuDST); + if (unlikely(err)) + goto out_rev_src; + au_fset_ren(a->auren_flags, DIROPQ_DST); + } + goto out; /* success */ + +out_rev_src: + AuDbg("err %d, reverting src\n", err); + au_ren_rev_diropq(err, a); +out: + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + if (!a->exchange) { + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->auren_flags, ISDIR_DST) + /* && !au_ftest_ren(a->auren_flags, DIRREN) */ + && d_is_positive(h_d)) { + err = -ENOMEM; + a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, + GFP_NOFS); + if (unlikely(!a->thargs)) + goto out; + a->h_dst = dget(h_d); + } + + /* create whiteout for src_dentry */ + if (au_ftest_ren(a->auren_flags, WHSRC)) { + a->src_bwh = au_dbwh(a->src_dentry); + AuDebugOn(a->src_bwh >= 0); + a->src_wh_dentry = au_wh_create(a->src_dentry, a->btgt, + a->src_h_parent); + err = PTR_ERR(a->src_wh_dentry); + if (IS_ERR(a->src_wh_dentry)) + goto out_thargs; + } + + /* lookup whiteout for dentry */ + if (au_ftest_ren(a->auren_flags, WHDST)) { + h_d = au_wh_lkup(a->dst_h_parent, + &a->dst_dentry->d_name, a->br); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out_whsrc; + if (d_is_negative(h_d)) + dput(h_d); + else + a->dst_wh_dentry = h_d; + } + + /* rename dentry to tmpwh */ + if (a->thargs) { + err = au_whtmp_ren(a->dst_h_dentry, a->br); + if (unlikely(err)) + goto out_whdst; + + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + err = au_lkup_neg(d, a->btgt, /*wh*/0); + if (unlikely(err)) + goto out_whtmp; + a->dst_h_dentry = au_h_dptr(d, a->btgt); + } + } + + BUG_ON(d_is_positive(a->dst_h_dentry) && a->src_btop != a->btgt); +#if 0 /* debugging */ + BUG_ON(!au_ftest_ren(a->auren_flags, DIRREN) + && d_is_positive(a->dst_h_dentry) + && a->src_btop != a->btgt); +#endif + + /* rename by vfs_rename or cpup */ + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + + /* update target timestamps */ + if (a->exchange) { + AuDebugOn(au_dbtop(a->dst_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->dst_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->dst_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + } + AuDebugOn(au_dbtop(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + + if (!a->exchange) { + /* remove whiteout for dentry */ + if (a->dst_wh_dentry) { + a->h_path.dentry = a->dst_wh_dentry; + err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, + a->dst_dentry); + if (unlikely(err)) + goto out_diropq; + } + + /* remove whtmp */ + if (a->thargs) + au_ren_del_whtmp(a); /* ignore this error */ + + au_fhsm_wrote(a->src_dentry->d_sb, a->btgt, /*force*/0); + } + err = 0; + goto out_success; + +out_diropq: + au_ren_rev_diropq(err, a); +out_rename: + au_ren_rev_rename(err, a); + dput(a->h_dst); +out_whtmp: + if (a->thargs) + au_ren_rev_whtmp(err, a); +out_whdst: + dput(a->dst_wh_dentry); + a->dst_wh_dentry = NULL; +out_whsrc: + if (a->src_wh_dentry) + au_ren_rev_whsrc(err, a); +out_success: + dput(a->src_wh_dentry); + dput(a->dst_wh_dentry); +out_thargs: + if (a->thargs) { + dput(a->h_dst); + au_whtmp_rmdir_free(a->thargs); + a->thargs = NULL; + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if @dentry dir can be rename destination or not. + * success means, it is a logically empty dir. + */ +static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) +{ + return au_test_empty(dentry, whlist); +} + +/* + * test if @a->src_dentry dir can be rename source or not. + * if it can, return 0. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch unless DIRREN is on. + */ +static int may_rename_srcdir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + aufs_bindex_t btop, btgt; + struct dentry *dentry; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + dentry = a->src_dentry; + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) + au_fset_ren(a->auren_flags, DIRREN); + + btgt = a->btgt; + btop = au_dbtop(dentry); + if (btop != btgt) { + struct au_nhash whlist; + + SiMustAnyLock(sb); + rdhash = sbinfo->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, + dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (btop == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + if (au_ftest_ren(a->auren_flags, DIRREN)) { + err = 0; + } else { + AuWarn1("renaming dir who has child(ren) on multiple " + "branches, is not supported\n"); + err = -EXDEV; + } + } + return err; +} + +/* side effect: sets whlist and h_dentry */ +static int au_ren_may_dir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + struct dentry *d; + + d = a->dst_dentry; + SiMustAnyLock(d->d_sb); + + err = 0; + if (au_ftest_ren(a->auren_flags, ISDIR_DST) && a->dst_inode) { + rdhash = au_sbi(d->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); + err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + if (!a->exchange) { + au_set_dbtop(d, a->dst_btop); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbtop(d, a->btgt); + } else + err = may_rename_srcdir(a); + } + a->dst_h_dentry = au_h_dptr(d, au_dbtop(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbtop(d)); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { + err = may_rename_srcdir(a); + if (unlikely(err)) { + au_nhash_wh_free(&a->whlist); + a->whlist.nh_num = 0; + } + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * simple tests for rename. + * following the checks in vfs, plus the parent-child relationship. + */ +static int au_may_ren(struct au_ren_args *a) +{ + int err, isdir; + struct inode *h_inode; + + if (a->src_btop == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->auren_flags, ISDIR_SRC)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_btop != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + isdir = !!au_ftest_ren(a->auren_flags, ISDIR_DST); + if (d_really_is_negative(a->dst_dentry)) { + if (d_is_negative(a->dst_h_dentry)) + err = au_may_add(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } else { + if (unlikely(d_is_negative(a->dst_h_dentry))) + goto out; + h_inode = d_inode(a->dst_h_dentry); + if (h_inode->i_nlink) + err = au_may_del(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } + +out: + if (unlikely(err == -ENOENT || err == -EEXIST)) + err = -EIO; + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * locking order + * (VFS) + * - src_dir and dir by lock_rename() + * - inode if exists + * (aufs) + * - lock all + * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, + * + si_read_lock + * + di_write_lock2_child() + * + di_write_lock_child() + * + ii_write_lock_child() + * + di_write_lock_child2() + * + ii_write_lock_child2() + * + src_parent and parent + * + di_write_lock_parent() + * + ii_write_lock_parent() + * + di_write_lock_parent2() + * + ii_write_lock_parent2() + * + lower src_dir and dir by vfsub_lock_rename() + * + verify the every relationships between child and parent. if any + * of them failed, unlock all and return -EBUSY. + */ +static void au_ren_unlock(struct au_ren_args *a) +{ + vfsub_unlock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + if (au_ftest_ren(a->auren_flags, DIRREN) + && a->h_root) + au_hn_inode_unlock(a->h_root); + if (au_ftest_ren(a->auren_flags, MNT_WRITE)) + vfsub_mnt_drop_write(au_br_mnt(a->br)); +} + +static int au_ren_lock(struct au_ren_args *a) +{ + int err; + unsigned int udba; + + err = 0; + a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); + a->src_hdir = au_hi(a->src_dir, a->btgt); + a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); + a->dst_hdir = au_hi(a->dst_dir, a->btgt); + + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out; + au_fset_ren(a->auren_flags, MNT_WRITE); + if (au_ftest_ren(a->auren_flags, DIRREN)) { + struct dentry *root; + struct inode *dir; + + /* + * sbinfo is already locked, so this ii_read_lock is + * unnecessary. but our debugging feature checks it. + */ + root = a->src_inode->i_sb->s_root; + if (root != a->src_parent && root != a->dst_parent) { + dir = d_inode(root); + ii_read_lock_parent3(dir); + a->h_root = au_hi(dir, a->btgt); + ii_read_unlock(dir); + au_hn_inode_lock_nested(a->h_root, AuLsc_I_PARENT3); + } + } + a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + udba = au_opt_udba(a->src_dentry->d_sb); + if (unlikely(a->src_hdir->hi_inode != d_inode(a->src_h_parent) + || a->dst_hdir->hi_inode != d_inode(a->dst_h_parent))) + err = au_busy_or_stale(); + if (!err && au_dbtop(a->src_dentry) == a->btgt) + err = au_h_verify(a->src_h_dentry, udba, + d_inode(a->src_h_parent), a->src_h_parent, + a->br); + if (!err && au_dbtop(a->dst_dentry) == a->btgt) + err = au_h_verify(a->dst_h_dentry, udba, + d_inode(a->dst_h_parent), a->dst_h_parent, + a->br); + if (!err) + goto out; /* success */ + + err = au_busy_or_stale(); + au_ren_unlock(a); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_ren_refresh_dir(struct au_ren_args *a) +{ + struct inode *dir; + + dir = a->dst_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->src_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + au_dir_ts(dir, a->btgt); + + if (a->exchange) { + dir = a->src_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_DST)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->dst_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + au_dir_ts(dir, a->btgt); + } + + if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) + au_cpup_attr_nlink(dir, /*force*/1); + au_dir_ts(dir, a->btgt); +} + +static void au_ren_refresh(struct au_ren_args *a) +{ + aufs_bindex_t bbot, bindex; + struct dentry *d, *h_d; + struct inode *i, *h_i; + struct super_block *sb; + + d = a->dst_dentry; + d_drop(d); + if (a->h_dst) + /* already dget-ed by au_ren_or_cpup() */ + au_set_h_dptr(d, a->btgt, a->h_dst); + + i = a->dst_inode; + if (i) { + if (!a->exchange) { + if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else + au_cpup_attr_nlink(i, /*force*/1); + } else { + bbot = a->btgt; + for (bindex = au_dbtop(d); bindex < bbot; bindex++) + au_set_h_dptr(d, bindex, NULL); + bbot = au_dbbot(d); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + if (a->exchange + || au_ftest_ren(a->auren_flags, DIRREN)) { + d_drop(a->src_dentry); + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_set_dbwh(a->src_dentry, -1); + return; + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bbot = au_dbbot(d); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbbot(d, a->btgt); + + sb = d->d_sb; + i = a->src_inode; + if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) + return; /* success */ + + bbot = au_ibbot(i); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { + h_i = au_h_iptr(i, bindex); + if (h_i) { + au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + au_set_h_iptr(i, bindex, NULL, 0); + } + } + au_set_ibbot(i, a->btgt); +} + +/* ---------------------------------------------------------------------- */ + +/* mainly for link(2) and rename(2) */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) +{ + aufs_bindex_t bdiropq, bwh; + struct dentry *parent; + struct au_branch *br; + + parent = dentry->d_parent; + IMustLock(d_inode(parent)); /* dir is locked */ + + bdiropq = au_dbdiropq(parent); + bwh = au_dbwh(dentry); + br = au_sbr(dentry->d_sb, btgt); + if (au_br_rdonly(br) + || (0 <= bdiropq && bdiropq < btgt) + || (0 <= bwh && bwh < btgt)) + btgt = -1; + + AuDbg("btgt %d\n", btgt); + return btgt; +} + +/* sets src_btop, dst_btop and btgt */ +static int au_ren_wbr(struct au_ren_args *a) +{ + int err; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + a->src_btop = au_dbtop(a->src_dentry); + a->dst_btop = au_dbtop(a->dst_dentry); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) + || au_ftest_ren(a->auren_flags, ISDIR_DST)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_btop; + if (a->dst_inode && a->dst_btop < a->src_btop) + wr_dir_args.force_btgt = a->dst_btop; + wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); + err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); + a->btgt = err; + if (a->exchange) + au_update_dbtop(a->dst_dentry); + + return err; +} + +static void au_ren_dt(struct au_ren_args *a) +{ + a->h_path.dentry = a->src_h_parent; + au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); + if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) { + a->h_path.dentry = a->dst_h_parent; + au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); + } + + au_fclr_ren(a->auren_flags, DT_DSTDIR); + if (!au_ftest_ren(a->auren_flags, ISDIR_SRC) + && !a->exchange) + return; + + a->h_path.dentry = a->src_h_dentry; + au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); + if (d_is_positive(a->dst_h_dentry)) { + au_fset_ren(a->auren_flags, DT_DSTDIR); + a->h_path.dentry = a->dst_h_dentry; + au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); + } +} + +static void au_ren_rev_dt(int err, struct au_ren_args *a) +{ + struct dentry *h_d; + struct inode *h_inode; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_inode = d_inode(h_d); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + inode_unlock(h_inode); + + if (au_ftest_ren(a->auren_flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_inode = d_inode(h_d); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + inode_unlock(h_inode); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags) +{ + int err, lock_flags; + void *rev; + /* reduce stack space */ + struct au_ren_args *a; + struct au_pin pin; + + AuDbg("%pd, %pd, 0x%x\n", _src_dentry, _dst_dentry, _flags); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -EINVAL; + if (unlikely(_flags & RENAME_WHITEOUT)) + goto out; + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->flags = _flags; + BUILD_BUG_ON(sizeof(a->exchange) == sizeof(u8) + && RENAME_EXCHANGE > U8_MAX); + a->exchange = _flags & RENAME_EXCHANGE; + a->src_dir = _src_dir; + a->src_dentry = _src_dentry; + a->src_inode = NULL; + if (d_really_is_positive(a->src_dentry)) + a->src_inode = d_inode(a->src_dentry); + a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ + a->dst_dir = _dst_dir; + a->dst_dentry = _dst_dentry; + a->dst_inode = NULL; + if (d_really_is_positive(a->dst_dentry)) + a->dst_inode = d_inode(a->dst_dentry); + a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ + if (a->dst_inode) { + /* + * if EXCHANGE && src is non-dir && dst is dir, + * dst is not locked. + */ + /* IMustLock(a->dst_inode); */ + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + lock_flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (d_is_dir(a->src_dentry)) { + au_fset_ren(a->auren_flags, ISDIR_SRC); + if (unlikely(!a->exchange + && d_really_is_positive(a->dst_dentry) + && !d_is_dir(a->dst_dentry))) + goto out_free; + lock_flags |= AuLock_DIRS; + } + if (a->dst_inode && d_is_dir(a->dst_dentry)) { + au_fset_ren(a->auren_flags, ISDIR_DST); + if (unlikely(!a->exchange + && d_really_is_positive(a->src_dentry) + && !d_is_dir(a->src_dentry))) + goto out_free; + lock_flags |= AuLock_DIRS; + } + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + lock_flags); + if (unlikely(err)) + goto out_free; + + err = au_d_hashed_positive(a->src_dentry); + if (unlikely(err)) + goto out_unlock; + err = -ENOENT; + if (a->dst_inode) { + /* + * If it is a dir, VFS unhash it before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err && !a->exchange)) + goto out_unlock; + } else if (unlikely(IS_DEADDIR(a->dst_inode))) + goto out_unlock; + } else if (unlikely(d_unhashed(a->dst_dentry))) + goto out_unlock; + + /* + * is it possible? + * yes, it happened (in linux-3.3-rcN) but I don't know why. + * there may exist a problem somewhere else. + */ + err = -EINVAL; + if (unlikely(d_inode(a->dst_parent) == d_inode(a->src_dentry))) + goto out_unlock; + + au_fset_ren(a->auren_flags, ISSAMEDIR); /* temporary */ + di_write_lock_parent(a->dst_parent); + + /* which branch we process */ + err = au_ren_wbr(a); + if (unlikely(err < 0)) + goto out_parent; + a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); + a->h_path.mnt = au_br_mnt(a->br); + + /* are they available to be renamed */ + err = au_ren_may_dir(a); + if (unlikely(err)) + goto out_children; + + /* prepare the writable parent dir on the same branch */ + if (a->dst_btop == a->btgt) { + au_fset_ren(a->auren_flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + err = 0; + if (!a->exchange) { + if (a->src_dir != a->dst_dir) { + /* + * this temporary unlock is safe, + * because both dir->i_mutex are locked. + */ + di_write_unlock(a->dst_parent); + di_write_lock_parent(a->src_parent); + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->auren_flags, + ISDIR_SRC), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, + /*isdir*/1); + au_fclr_ren(a->auren_flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->auren_flags, + ISDIR_SRC), + &a->btgt); + } + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->auren_flags, WHSRC); + + /* cpup src */ + if (a->src_btop != a->btgt) { + err = au_pin(&pin, a->src_dentry, a->btgt, + au_opt_udba(a->src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + struct au_cp_generic cpg = { + .dentry = a->src_dentry, + .bdst = a->btgt, + .bsrc = a->src_btop, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + AuDebugOn(au_dbtop(a->src_dentry) != a->src_btop); + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->src_btop = a->btgt; + a->src_h_dentry = au_h_dptr(a->src_dentry, a->btgt); + if (!a->exchange) + au_fset_ren(a->auren_flags, WHSRC); + } + + /* cpup dst */ + if (a->exchange && a->dst_inode + && a->dst_btop != a->btgt) { + err = au_pin(&pin, a->dst_dentry, a->btgt, + au_opt_udba(a->dst_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + struct au_cp_generic cpg = { + .dentry = a->dst_dentry, + .bdst = a->btgt, + .bsrc = a->dst_btop, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->dst_btop = a->btgt; + a->dst_h_dentry = au_h_dptr(a->dst_dentry, a->btgt); + } + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_children; + + if (!a->exchange) { + if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) + err = au_may_ren(a); + else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + if (unlikely(err)) + goto out_hdir; + } + + /* store timestamps to be revertible */ + au_ren_dt(a); + + /* store dirren info */ + if (au_ftest_ren(a->auren_flags, DIRREN)) { + err = au_dr_rename(a->src_dentry, a->btgt, + &a->dst_dentry->d_name, &rev); + AuTraceErr(err); + if (unlikely(err)) + goto out_dt; + } + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dirren; + + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_dr_rename_fin(a->src_dentry, a->btgt, rev); + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +out_dirren: + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_dr_rename_rev(a->src_dentry, a->btgt, rev); +out_dt: + au_ren_rev_dt(err, a); +out_hdir: + au_ren_unlock(a); +out_children: + au_nhash_wh_free(&a->whlist); + if (err && a->dst_inode && a->dst_btop != a->btgt) { + AuDbg("btop %d, btgt %d\n", a->dst_btop, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbtop(a->dst_dentry, a->dst_btop); + } +out_parent: + if (!err) { + if (d_unhashed(a->src_dentry)) + au_fset_ren(a->auren_flags, DROPPED_SRC); + if (d_unhashed(a->dst_dentry)) + au_fset_ren(a->auren_flags, DROPPED_DST); + if (!a->exchange) + d_move(a->src_dentry, a->dst_dentry); + else { + d_exchange(a->src_dentry, a->dst_dentry); + if (au_ftest_ren(a->auren_flags, DROPPED_DST)) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->auren_flags, DROPPED_SRC)) + d_drop(a->src_dentry); + } else { + au_update_dbtop(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) + di_write_unlock(a->dst_parent); + else + di_write_unlock2(a->src_parent, a->dst_parent); +out_unlock: + aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); +out_free: + iput(a->dst_inode); + if (a->thargs) + au_whtmp_rmdir_free(a->thargs); + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} --- linux-5.8.0.orig/fs/aufs/iinfo.c +++ linux-5.8.0/fs/aufs/iinfo.c @@ -0,0 +1,286 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode private data + */ + +#include "aufs.h" + +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) +{ + struct inode *h_inode; + struct au_hinode *hinode; + + IiMustAnyLock(inode); + + hinode = au_hinode(au_ii(inode), bindex); + h_inode = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + return h_inode; +} + +/* todo: hard/soft set? */ +void au_hiput(struct au_hinode *hinode) +{ + au_hn_free(hinode); + dput(hinode->hi_whdentry); + iput(hinode->hi_inode); +} + +unsigned int au_hi_flags(struct inode *inode, int isdir) +{ + unsigned int flags; + const unsigned int mnt_flags = au_mntflags(inode->i_sb); + + flags = 0; + if (au_opt_test(mnt_flags, XINO)) + au_fset_hi(flags, XINO); + if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) + au_fset_hi(flags, HNOTIFY); + return flags; +} + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags) +{ + struct au_hinode *hinode; + struct inode *hi; + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + hinode = au_hinode(iinfo, bindex); + hi = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + + if (hi) + au_hiput(hinode); + hinode->hi_inode = h_inode; + if (h_inode) { + int err; + struct super_block *sb = inode->i_sb; + struct au_branch *br; + + AuDebugOn(inode->i_mode + && (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)); + if (bindex == iinfo->ii_btop) + au_cpup_igen(inode, h_inode); + br = au_sbr(sb, bindex); + hinode->hi_id = br->br_id; + if (au_ftest_hi(flags, XINO)) { + err = au_xino_write(sb, bindex, h_inode->i_ino, + inode->i_ino); + if (unlikely(err)) + AuIOErr1("failed au_xino_write() %d\n", err); + } + + if (au_ftest_hi(flags, HNOTIFY) + && au_br_hnotifyable(br->br_perm)) { + err = au_hn_alloc(hinode, inode); + if (unlikely(err)) + AuIOErr1("au_hn_alloc() %d\n", err); + } + } +} + +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh) +{ + struct au_hinode *hinode; + + IiMustWriteLock(inode); + + hinode = au_hinode(au_ii(inode), bindex); + AuDebugOn(hinode->hi_whdentry); + hinode->hi_whdentry = h_wh; +} + +void au_update_iigen(struct inode *inode, int half) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + unsigned int sigen; + + sigen = au_sigen(inode->i_sb); + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation = sigen; + if (half) + au_ig_fset(iigen->ig_flags, HALF_REFRESHED); + else + au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); + spin_unlock(&iigen->ig_spin); +} + +/* it may be called at remount time, too */ +void au_update_ibrange(struct inode *inode, int do_put_zero) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex, bbot; + + AuDebugOn(au_is_bad_inode(inode)); + IiMustWriteLock(inode); + + iinfo = au_ii(inode); + if (do_put_zero && iinfo->ii_btop >= 0) { + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; + bindex++) { + struct inode *h_i; + + h_i = au_hinode(iinfo, bindex)->hi_inode; + if (h_i + && !h_i->i_nlink + && !(h_i->i_state & I_LINKABLE)) + au_set_h_iptr(inode, bindex, NULL, 0); + } + } + + iinfo->ii_btop = -1; + iinfo->ii_bbot = -1; + bbot = au_sbbot(inode->i_sb); + for (bindex = 0; bindex <= bbot; bindex++) + if (au_hinode(iinfo, bindex)->hi_inode) { + iinfo->ii_btop = bindex; + break; + } + if (iinfo->ii_btop >= 0) + for (bindex = bbot; bindex >= iinfo->ii_btop; bindex--) + if (au_hinode(iinfo, bindex)->hi_inode) { + iinfo->ii_bbot = bindex; + break; + } + AuDebugOn(iinfo->ii_btop > iinfo->ii_bbot); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + + spin_lock_init(&iinfo->ii_generation.ig_spin); + au_rw_init(&iinfo->ii_rwsem); + inode_init_once(&c->vfs_inode); +} + +void au_hinode_init(struct au_hinode *hinode) +{ + hinode->hi_inode = NULL; + hinode->hi_id = -1; + au_hn_init(hinode); + hinode->hi_whdentry = NULL; +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbbot(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + hi = kmalloc_array(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (hi) { + au_lcnt_inc(&au_sbi(sb)->si_ninodes); + + iinfo->ii_hinode = hi; + for (i = 0; i < nbr; i++, hi++) + au_hinode_init(hi); + + iinfo->ii_generation.ig_generation = au_sigen(sb); + iinfo->ii_btop = -1; + iinfo->ii_bbot = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink) +{ + int err, i; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + hip = au_krealloc(iinfo->ii_hinode, sizeof(*hip) * nbr, GFP_NOFS, + may_shrink); + if (hip) { + iinfo->ii_hinode = hip; + i = iinfo->ii_bbot + 1; + hip += i; + for (; i < nbr; i++, hip++) + au_hinode_init(hip); + err = 0; + } + + return err; +} + +void au_iinfo_fin(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + struct super_block *sb; + aufs_bindex_t bindex, bbot; + const unsigned char unlinked = !inode->i_nlink; + + AuDebugOn(au_is_bad_inode(inode)); + + sb = inode->i_sb; + au_lcnt_dec(&au_sbi(sb)->si_ninodes); + if (si_pid_test(sb)) + au_xino_delete_inode(inode, unlinked); + else { + /* + * it is safe to hide the dependency between sbinfo and + * sb->s_umount. + */ + lockdep_off(); + si_noflush_read_lock(sb); + au_xino_delete_inode(inode, unlinked); + si_read_unlock(sb); + lockdep_on(); + } + + iinfo = au_ii(inode); + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_btop; + if (bindex >= 0) { + hi = au_hinode(iinfo, bindex); + bbot = iinfo->ii_bbot; + while (bindex++ <= bbot) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + au_kfree_rcu(iinfo->ii_hinode); + AuRwDestroy(&iinfo->ii_rwsem); +} --- linux-5.8.0.orig/fs/aufs/inode.c +++ linux-5.8.0/fs/aufs/inode.c @@ -0,0 +1,529 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode functions + */ + +#include +#include "aufs.h" + +struct inode *au_igrab(struct inode *inode) +{ + if (inode) { + AuDebugOn(!atomic_read(&inode->i_count)); + ihold(inode); + } + return inode; +} + +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); + au_update_iigen(inode, /*half*/1); + if (do_version) + inode_inc_iversion(inode); +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e, nbr; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + AuDebugOn(au_is_bad_inode(inode)); + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + nbr = au_sbbot(sb) + 1; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_hinode_realloc(iinfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_btop < 0); + p = au_hinode(iinfo, iinfo->ii_btop); + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; + bindex++, p++) { + if (!p->hi_inode) + continue; + + AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); + new_bindex = au_br_index(sb, p->hi_id); + if (new_bindex == bindex) + continue; + + if (new_bindex < 0) { + *update = 1; + au_hiput(p); + p->hi_inode = NULL; + continue; + } + + if (new_bindex < iinfo->ii_btop) + iinfo->ii_btop = new_bindex; + if (iinfo->ii_bbot < new_bindex) + iinfo->ii_bbot = new_bindex; + /* swap two lower inode, and loop again */ + q = au_hinode(iinfo, new_bindex); + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + au_hinode_realloc(iinfo, nbr, /*may_shrink*/1); /* harmless if err */ + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +void au_refresh_iop(struct inode *inode, int force_getattr) +{ + int type; + struct au_sbinfo *sbi = au_sbi(inode->i_sb); + const struct inode_operations *iop + = force_getattr ? aufs_iop : sbi->si_iop_array; + + if (inode->i_op == iop) + return; + + switch (inode->i_mode & S_IFMT) { + case S_IFDIR: + type = AuIop_DIR; + break; + case S_IFLNK: + type = AuIop_SYMLINK; + break; + default: + type = AuIop_OTHER; + break; + } + + inode->i_op = iop + type; + /* unnecessary smp_wmb() */ +} + +int au_refresh_hinode_self(struct inode *inode) +{ + int err, update; + + err = au_ii_refresh(inode, &update); + if (!err) + au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); + + AuTraceErr(err); + return err; +} + +int au_refresh_hinode(struct inode *inode, struct dentry *dentry) +{ + int err, e, update; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bbot; + unsigned char isdir; + struct au_hinode *p; + struct au_iinfo *iinfo; + + err = au_ii_refresh(inode, &update); + if (unlikely(err)) + goto out; + + update = 0; + iinfo = au_ii(inode); + p = au_hinode(iinfo, iinfo->ii_btop); + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { + struct inode *h_i, *h_inode; + struct dentry *h_d; + + h_d = au_h_dptr(dentry, bindex); + if (!h_d || d_is_negative(h_d)) + continue; + + h_inode = d_inode(h_d); + AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); + if (iinfo->ii_btop <= bindex && bindex <= iinfo->ii_bbot) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_btop) + iinfo->ii_btop = bindex; + if (iinfo->ii_bbot < bindex) + iinfo->ii_bbot = bindex; + au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); + update = 1; + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + if (!err) + au_refresh_hinode_attr(inode, update && isdir); + +out: + AuTraceErr(err); + return err; +} + +static int set_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, btop, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + const struct inode_operations *iop; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + iop = au_sbi(inode->i_sb)->si_iop_array; + btop = au_dbtop(dentry); + h_dentry = au_h_dptr(dentry, btop); + h_inode = d_inode(h_dentry); + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, btop, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = iop + AuIop_DIR; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_SYMLINK; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + init_special_inode(inode, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown file type 0%o\n", mode); + err = -EIO; + goto out; + } + + /* do not set hnotify for whiteouted dirs (SHWH mode) */ + flags = au_hi_flags(inode, isdir); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) + && au_ftest_hi(flags, HNOTIFY) + && dentry->d_name.len > AUFS_WH_PFX_LEN + && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) + au_fclr_hi(flags, HNOTIFY); + iinfo = au_ii(inode); + iinfo->ii_btop = btop; + iinfo->ii_bbot = btail; + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + au_set_h_iptr(inode, bindex, + au_igrab(d_inode(h_dentry)), flags); + } + au_cpup_attr_all(inode, /*force*/1); + /* + * to force calling aufs_get_acl() every time, + * do not call cache_no_acl() for aufs inode. + */ + +out: + return err; +} + +/* + * successful returns with iinfo write_locked + * minus: errno + * zero: success, matched + * plus: no error, but unmatched + */ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int gen, igflags; + aufs_bindex_t bindex, bbot; + struct inode *h_inode, *h_dinode; + struct dentry *h_dentry; + + /* + * before this function, if aufs got any iinfo lock, it must be only + * one, the parent dir. + * it can happen by UDBA and the obsoleted inode number. + */ + err = -EIO; + if (unlikely(inode->i_ino == parent_ino(dentry))) + goto out; + + err = 1; + ii_write_lock_new_child(inode); + h_dentry = au_h_dptr(dentry, au_dbtop(dentry)); + h_dinode = d_inode(h_dentry); + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (!h_inode || h_inode != h_dinode) + continue; + + err = 0; + gen = au_iigen(inode, &igflags); + if (gen == au_digen(dentry) + && !au_ig_ftest(igflags, HALF_REFRESHED)) + break; + + /* fully refresh inode using dentry */ + err = au_refresh_hinode(inode, dentry); + if (!err) + au_update_iigen(inode, /*half*/0); + break; + } + + if (unlikely(err)) + ii_write_unlock(inode); +out: + return err; +} + +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino) +{ + int err, idx; + const int isnondir = d_type != DT_DIR; + + /* prevent hardlinked inode number from race condition */ + if (isnondir) { + err = au_xinondir_enter(sb, bindex, h_ino, &idx); + if (unlikely(err)) + goto out; + } + + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out_xinondir; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out_xinondir; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out_xinondir; + } + +out_xinondir: + if (isnondir && idx >= 0) + au_xinondir_leave(sb, bindex, h_ino, idx); +out: + return err; +} + +/* successful returns with iinfo write_locked */ +/* todo: return with unlocked? */ +struct inode *au_new_inode(struct dentry *dentry, int must_new) +{ + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct super_block *sb; + ino_t h_ino, ino; + int err, idx, hlinked; + aufs_bindex_t btop; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + h_dentry = au_h_dptr(dentry, btop); + h_inode = d_inode(h_dentry); + h_ino = h_inode->i_ino; + hlinked = !d_is_dir(h_dentry) && h_inode->i_nlink > 1; + +new_ino: + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + if (hlinked) { + err = au_xinondir_enter(sb, btop, h_ino, &idx); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + } + + err = au_xino_read(sb, btop, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out_xinondir; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out_xinondir; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_xinondir; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out_xinondir; /* success */ + } + + /* + * iget_failed() calls iput(), but we need to call + * ii_write_unlock() after iget_failed(). so dirty hack for + * i_count. + */ + atomic_inc(&inode->i_count); + iget_failed(inode); + ii_write_unlock(inode); + au_xino_write(sb, btop, h_ino, /*ino*/0); + /* ignore this error */ + goto out_iput; + } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { + /* + * horrible race condition between lookup, readdir and copyup + * (or something). + */ + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + hlinked = 0; + goto out_iput; + } + if (!err) + goto out; /* success */ + else if (hlinked && idx >= 0) { + err = au_xinondir_enter(sb, btop, h_ino, &idx); + if (unlikely(err)) { + iput(inode); + inode = ERR_PTR(err); + goto out; + } + } + } + + if (unlikely(au_test_fs_unique_ino(h_inode))) + AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," + " b%d, %s, %pd, hi%lu, i%lu.\n", + btop, au_sbtype(h_dentry->d_sb), dentry, + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, btop, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out_xinondir: + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); +out: + return inode; +} + +/* ---------------------------------------------------------------------- */ + +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode) +{ + int err; + struct inode *hi; + + err = au_br_rdonly(au_sbr(sb, bindex)); + + /* pseudo-link after flushed may happen out of bounds */ + if (!err + && inode + && au_ibtop(inode) <= bindex + && bindex <= au_ibbot(inode)) { + /* + * permission check is unnecessary since vfsub routine + * will be called later + */ + hi = au_h_iptr(inode, bindex); + if (hi) + err = IS_IMMUTABLE(hi) ? -EROFS : 0; + } + + return err; +} + +int au_test_h_perm(struct inode *h_inode, int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; + return inode_permission(h_inode, mask); +} + +int au_test_h_perm_sio(struct inode *h_inode, int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_inode, mask); +} --- linux-5.8.0.orig/fs/aufs/inode.h +++ linux-5.8.0/fs/aufs/inode.h @@ -0,0 +1,698 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations + */ + +#ifndef __AUFS_INODE_H__ +#define __AUFS_INODE_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct vfsmount; + +struct au_hnotify { +#ifdef CONFIG_AUFS_HNOTIFY +#ifdef CONFIG_AUFS_HFSNOTIFY + /* never use fsnotify_add_vfsmount_mark() */ + struct fsnotify_mark hn_mark; +#endif + struct inode *hn_aufs_inode; /* no get/put */ + struct rcu_head rcu; +#endif +} ____cacheline_aligned_in_smp; + +struct au_hinode { + struct inode *hi_inode; + aufs_bindex_t hi_id; +#ifdef CONFIG_AUFS_HNOTIFY + struct au_hnotify *hi_notify; +#endif + + /* reference to the copied-up whiteout with get/put */ + struct dentry *hi_whdentry; +}; + +/* ig_flags */ +#define AuIG_HALF_REFRESHED 1 +#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) +#define au_ig_fset(flags, name) \ + do { (flags) |= AuIG_##name; } while (0) +#define au_ig_fclr(flags, name) \ + do { (flags) &= ~AuIG_##name; } while (0) + +struct au_iigen { + spinlock_t ig_spin; + __u32 ig_generation, ig_flags; +}; + +struct au_vdir; +struct au_iinfo { + struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_btop, ii_bbot; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; + struct hlist_bl_node plink; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* au_pin flags */ +#define AuPin_DI_LOCKED 1 +#define AuPin_MNT_WRITE (1 << 1) +#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) +#define au_fset_pin(flags, name) \ + do { (flags) |= AuPin_##name; } while (0) +#define au_fclr_pin(flags, name) \ + do { (flags) &= ~AuPin_##name; } while (0) + +struct au_pin { + /* input */ + struct dentry *dentry; + unsigned int udba; + unsigned char lsc_di, lsc_hi, flags; + aufs_bindex_t bindex; + + /* output */ + struct dentry *parent; + struct au_hinode *hdir; + struct vfsmount *h_mnt; + + /* temporary unlock/relock for copyup */ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct task_struct *task; +}; + +void au_pin_hdir_unlock(struct au_pin *p); +int au_pin_hdir_lock(struct au_pin *p); +int au_pin_hdir_relock(struct au_pin *p); +void au_pin_hdir_acquire_nest(struct au_pin *p); +void au_pin_hdir_release(struct au_pin *p); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_iinfo *au_ii(struct inode *inode) +{ + BUG_ON(is_bad_inode(inode)); + return &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +void au_refresh_iop(struct inode *inode, int force_getattr); +int au_refresh_hinode_self(struct inode *inode); +int au_refresh_hinode(struct inode *inode, struct dentry *dentry); +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino); +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); +int au_test_h_perm(struct inode *h_inode, int mask); +int au_test_h_perm_sio(struct inode *h_inode, int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) +{ +#ifdef CONFIG_AUFS_SHWH + return au_ino(sb, bindex, h_ino, d_type, ino); +#else + return 0; +#endif +} + +/* i_op.c */ +enum { + AuIop_SYMLINK, + AuIop_DIR, + AuIop_OTHER, + AuIop_Last +}; +extern struct inode_operations aufs_iop[AuIop_Last], /* not const */ + aufs_iop_nogetattr[AuIop_Last]; + +/* au_wr_dir flags */ +#define AuWrDir_ADD_ENTRY 1 +#define AuWrDir_ISDIR (1 << 1) +#define AuWrDir_TMPFILE (1 << 2) +#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) +#define au_fset_wrdir(flags, name) \ + do { (flags) |= AuWrDir_##name; } while (0) +#define au_fclr_wrdir(flags, name) \ + do { (flags) &= ~AuWrDir_##name; } while (0) + +struct au_wr_dir_args { + aufs_bindex_t force_btgt; + unsigned char flags; +}; +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args); + +struct dentry *au_pinned_h_parent(struct au_pin *pin); +void au_pin_init(struct au_pin *pin, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags); +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) __must_check; +int au_do_pin(struct au_pin *pin) __must_check; +void au_unpin(struct au_pin *pin); +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); + +#define AuIcpup_DID_CPUP 1 +#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) +#define au_fset_icpup(flags, name) \ + do { (flags) |= AuIcpup_##name; } while (0) +#define au_fclr_icpup(flags, name) \ + do { (flags) &= ~AuIcpup_##name; } while (0) + +struct au_icpup_args { + unsigned char flags; + unsigned char pin_flags; + aufs_bindex_t btgt; + unsigned int udba; + struct au_pin pin; + struct path h_path; + struct inode *h_inode; +}; + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a); + +int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, + struct path *h_path, int locked); + +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev); +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + bool want_excl); +struct vfsub_aopen_args; +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); +int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_unlink(struct inode *dir, struct dentry *dentry); +int aufs_rmdir(struct inode *dir, struct dentry *dentry); + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); +int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct dentry *dentry, + unsigned int flags); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); +void au_hiput(struct au_hinode *hinode); +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh); +unsigned int au_hi_flags(struct inode *inode, int isdir); + +/* hinode flags */ +#define AuHi_XINO 1 +#define AuHi_HNOTIFY (1 << 1) +#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) +#define au_fset_hi(flags, name) \ + do { (flags) |= AuHi_##name; } while (0) +#define au_fclr_hi(flags, name) \ + do { (flags) &= ~AuHi_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuHi_HNOTIFY +#define AuHi_HNOTIFY 0 +#endif + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + +void au_update_iigen(struct inode *inode, int half); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); +void au_hinode_init(struct au_hinode *hinode); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink); + +#ifdef CONFIG_PROC_FS +/* plink.c */ +int au_plink_maint(struct super_block *sb, int flags); +struct au_sbinfo; +void au_plink_maint_leave(struct au_sbinfo *sbinfo); +int au_plink_maint_enter(struct super_block *sb); +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb); +#else +AuStubVoid(au_plink_list, struct super_block *sb) +#endif +int au_plink_test(struct inode *inode); +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +void au_plink_put(struct super_block *sb, int verbose); +void au_plink_clean(struct super_block *sb, int verbose); +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); +#else +AuStubInt0(au_plink_maint, struct super_block *sb, int flags); +AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); +AuStubInt0(au_plink_maint_enter, struct super_block *sb); +AuStubVoid(au_plink_list, struct super_block *sb); +AuStubInt0(au_plink_test, struct inode *inode); +AuStub(struct dentry *, au_plink_lkup, return NULL, + struct inode *inode, aufs_bindex_t bindex); +AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +AuStubVoid(au_plink_put, struct super_block *sb, int verbose); +AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); +AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); +#endif /* CONFIG_PROC_FS */ + +#ifdef CONFIG_AUFS_XATTR +/* xattr.c */ +int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, + unsigned int verbose); +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); +void au_xattr_init(struct super_block *sb); +#else +AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src, + int ignore_flags, unsigned int verbose); +AuStubVoid(au_xattr_init, struct super_block *sb); +#endif + +#ifdef CONFIG_FS_POSIX_ACL +struct posix_acl *aufs_get_acl(struct inode *inode, int type); +int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type); +#endif + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +enum { + AU_XATTR_SET, + AU_ACL_SET +}; + +struct au_sxattr { + int type; + union { + struct { + const char *name; + const void *value; + size_t size; + int flags; + } set; + struct { + struct posix_acl *acl; + int type; + } acl_set; + } u; +}; +ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, + struct au_sxattr *arg); +#endif + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for iinfo */ +enum { + AuLsc_II_CHILD, /* child first */ + AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_II_CHILD3, /* copyup dirs */ + AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ + AuLsc_II_PARENT2, + AuLsc_II_PARENT3, /* copyup dirs */ + AuLsc_II_NEW_CHILD +}; + +/* + * ii_read_lock_child, ii_write_lock_child, + * ii_read_lock_child2, ii_write_lock_child2, + * ii_read_lock_child3, ii_write_lock_child3, + * ii_read_lock_parent, ii_write_lock_parent, + * ii_read_lock_parent2, ii_write_lock_parent2, + * ii_read_lock_parent3, ii_write_lock_parent3, + * ii_read_lock_new_child, ii_write_lock_new_child, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void ii_read_lock_##name(struct inode *i) \ +{ \ + au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuWriteLockFunc(name, lsc) \ +static inline void ii_write_lock_##name(struct inode *i) \ +{ \ + au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); +AuRWLockFuncs(new_child, NEW_CHILD); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define ii_read_unlock(i) au_rw_read_unlock(&au_ii(i)->ii_rwsem) +#define ii_write_unlock(i) au_rw_write_unlock(&au_ii(i)->ii_rwsem) +#define ii_downgrade_lock(i) au_rw_dgrade_lock(&au_ii(i)->ii_rwsem) + +#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) +#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) +#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) + +/* ---------------------------------------------------------------------- */ + +static inline void au_icntnr_init(struct au_icntnr *c) +{ +#ifdef CONFIG_AUFS_DEBUG + c->vfs_inode.i_mode = 0; +#endif +} + +static inline unsigned int au_iigen(struct inode *inode, unsigned int *igflags) +{ + unsigned int gen; + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + if (igflags) + *igflags = iigen->ig_flags; + gen = iigen->ig_generation; + spin_unlock(&iigen->ig_spin); + + return gen; +} + +/* tiny test for inode number */ +/* tmpfs generation is too rough */ +static inline int au_test_higen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + AuRwMustAnyLock(&iinfo->ii_rwsem); + return !(iinfo->ii_hsb1 == h_inode->i_sb + && iinfo->ii_higen == h_inode->i_generation); +} + +static inline void au_iigen_dec(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation--; + spin_unlock(&iigen->ig_spin); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(inode && au_iigen(inode, NULL) != sigen)) + err = -EIO; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static inline struct au_hinode *au_hinode(struct au_iinfo *iinfo, + aufs_bindex_t bindex) +{ + return iinfo->ii_hinode + bindex; +} + +static inline int au_is_bad_inode(struct inode *inode) +{ + return !!(is_bad_inode(inode) || !au_hinode(au_ii(inode), 0)); +} + +static inline aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex)->hi_id; +} + +static inline aufs_bindex_t au_ibtop(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_btop; +} + +static inline aufs_bindex_t au_ibbot(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bbot; +} + +static inline struct au_vdir *au_ivdir(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_vdir; +} + +static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex)->hi_whdentry; +} + +static inline void au_set_ibtop(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_btop = bindex; +} + +static inline void au_set_ibbot(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bbot = bindex; +} + +static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_vdir = vdir; +} + +static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex); +} + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_pinned_parent(struct au_pin *pin) +{ + if (pin) + return pin->parent; + return NULL; +} + +static inline struct inode *au_pinned_h_dir(struct au_pin *pin) +{ + if (pin && pin->hdir) + return pin->hdir->hi_inode; + return NULL; +} + +static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) +{ + if (pin) + return pin->hdir; + return NULL; +} + +static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) +{ + if (pin) + pin->dentry = dentry; +} + +static inline void au_pin_set_parent_lflag(struct au_pin *pin, + unsigned char lflag) +{ + if (pin) { + if (lflag) + au_fset_pin(pin->flags, DI_LOCKED); + else + au_fclr_pin(pin->flags, DI_LOCKED); + } +} + +#if 0 /* reserved */ +static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) +{ + if (pin) { + dput(pin->parent); + pin->parent = dget(parent); + } +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +#ifdef CONFIG_AUFS_HNOTIFY +struct au_hnotify_op { + void (*ctl)(struct au_hinode *hinode, int do_set); + int (*alloc)(struct au_hinode *hinode); + + /* + * if it returns true, the the caller should free hinode->hi_notify, + * otherwise ->free() frees it. + */ + int (*free)(struct au_hinode *hinode, + struct au_hnotify *hn) __must_check; + + void (*fin)(void); + int (*init)(void); + + int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); + void (*fin_br)(struct au_branch *br); + int (*init_br)(struct au_branch *br, int perm); +}; + +/* hnotify.c */ +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); +void au_hn_free(struct au_hinode *hinode); +void au_hn_ctl(struct au_hinode *hinode, int do_set); +void au_hn_reset(struct inode *inode, unsigned int flags); +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + const struct qstr *h_child_qstr, struct inode *h_child_inode); +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); +int au_hnotify_init_br(struct au_branch *br, int perm); +void au_hnotify_fin_br(struct au_branch *br); +int __init au_hnotify_init(void); +void au_hnotify_fin(void); + +/* hfsnotify.c */ +extern const struct au_hnotify_op au_hnotify_op; + +static inline +void au_hn_init(struct au_hinode *hinode) +{ + hinode->hi_notify = NULL; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return hinode->hi_notify; +} + +#else +AuStub(int, au_hn_alloc, return -EOPNOTSUPP, + struct au_hinode *hinode __maybe_unused, + struct inode *inode __maybe_unused) +AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) +AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) +AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, + int do_set __maybe_unused) +AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, + unsigned int flags __maybe_unused) +AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, + struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) +AuStubInt0(__init au_hnotify_init, void) +AuStubVoid(au_hnotify_fin, void) +AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +static inline void au_hn_suspend(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/0); +} + +static inline void au_hn_resume(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/1); +} + +static inline void au_hn_inode_lock(struct au_hinode *hdir) +{ + inode_lock(hdir->hi_inode); + au_hn_suspend(hdir); +} + +static inline void au_hn_inode_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + inode_lock_nested(hdir->hi_inode, sc); + au_hn_suspend(hdir); +} + +#if 0 /* unused */ +#include "vfsub.h" +static inline void au_hn_inode_lock_shared_nested(struct au_hinode *hdir, + unsigned int sc) +{ + inode_lock_shared_nested(hdir->hi_inode, sc); + au_hn_suspend(hdir); +} +#endif + +static inline void au_hn_inode_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + inode_unlock(hdir->hi_inode); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- linux-5.8.0.orig/fs/aufs/ioctl.c +++ linux-5.8.0/fs/aufs/ioctl.c @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * ioctl + * plink-management and readdir in userspace. + * assist the pathconf(3) wrapper library. + * move-down + * File-based Hierarchical Storage Management. + */ + +#include +#include +#include "aufs.h" + +static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) +{ + int err, fd; + aufs_bindex_t wbi, bindex, bbot; + struct file *h_file; + struct super_block *sb; + struct dentry *root; + struct au_branch *br; + struct aufs_wbr_fd wbrfd = { + .oflags = au_dir_roflags, + .brid = -1 + }; + const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY + | O_NOATIME | O_CLOEXEC; + + AuDebugOn(wbrfd.oflags & ~valid); + + if (arg) { + err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + + err = -EINVAL; + AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); + wbrfd.oflags |= au_dir_roflags; + AuDbg("0%o\n", wbrfd.oflags); + if (unlikely(wbrfd.oflags & ~valid)) + goto out; + } + + fd = get_unused_fd_flags(0); + err = fd; + if (unlikely(fd < 0)) + goto out; + + h_file = ERR_PTR(-EINVAL); + wbi = 0; + br = NULL; + sb = path->dentry->d_sb; + root = sb->s_root; + aufs_read_lock(root, AuLock_IR); + bbot = au_sbbot(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bbot)) + goto out_unlock; + } + + h_file = ERR_PTR(-ENOENT); + br = au_sbr(sb, wbi); + if (!au_br_writable(br->br_perm)) { + if (arg) + goto out_unlock; + + bindex = wbi + 1; + wbi = -1; + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) { + wbi = bindex; + br = au_sbr(sb, wbi); + break; + } + } + } + AuDbg("wbi %d\n", wbi); + if (wbi >= 0) + h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, + /*force_wr*/0); + +out_unlock: + aufs_read_unlock(root, AuLock_IR); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_fd; + + au_lcnt_dec(&br->br_nfiles); /* cf. au_h_open() */ + fd_install(fd, h_file); + err = fd; + goto out; /* success */ + +out_fd: + put_unused_fd(fd); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + struct dentry *dentry; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_ioctl(file, arg); + break; + + case AUFS_CTL_FHSM_FD: + dentry = file->f_path.dentry; + if (IS_ROOT(dentry)) + err = au_fhsm_fd(dentry->d_sb, arg); + else + err = -ENOTTY; + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_MVDOWN: + err = au_mvdown(file->f_path.dentry, (void __user *)arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_compat_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_compat_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_compat_ioctl(file, arg); + break; + + default: + err = aufs_ioctl_dir(file, cmd, arg); + } + + AuTraceErr(err); + return err; +} + +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif --- linux-5.8.0.orig/fs/aufs/lcnt.h +++ linux-5.8.0/fs/aufs/lcnt.h @@ -0,0 +1,186 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2018-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple long counter wrapper + */ + +#ifndef __AUFS_LCNT_H__ +#define __AUFS_LCNT_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +#define AuLCntATOMIC 1 +#define AuLCntPCPUCNT 2 +/* + * why does percpu_refcount require extra synchronize_rcu()s in + * au_br_do_free() + */ +#define AuLCntPCPUREF 3 + +/* #define AuLCntChosen AuLCntATOMIC */ +#define AuLCntChosen AuLCntPCPUCNT +/* #define AuLCntChosen AuLCntPCPUREF */ + +#if AuLCntChosen == AuLCntATOMIC +#include + +typedef atomic_long_t au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) +{ + atomic_long_set(cnt, 0); + return 0; +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt __maybe_unused, + int do_sync __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + atomic_long_inc(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + atomic_long_dec(cnt); +} + +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) +{ + return atomic_long_read(cnt); +} +#endif + +#if AuLCntChosen == AuLCntPCPUCNT +#include + +typedef struct percpu_counter au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) +{ + return percpu_counter_init(cnt, 0, GFP_NOFS); +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync __maybe_unused) +{ + percpu_counter_destroy(cnt); +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + percpu_counter_inc(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + percpu_counter_dec(cnt); +} + +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) +{ + s64 n; + + n = percpu_counter_sum(cnt); + BUG_ON(n < 0); + if (LONG_MAX != LLONG_MAX + && n > LONG_MAX) + AuWarn1("%s\n", "wrap-around"); + + return n; +} +#endif + +#if AuLCntChosen == AuLCntPCPUREF +#include + +typedef struct percpu_ref au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, percpu_ref_func_t *release) +{ + if (!release) + release = percpu_ref_exit; + return percpu_ref_init(cnt, release, /*percpu mode*/0, GFP_NOFS); +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + synchronize_rcu(); +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync) +{ + percpu_ref_kill(cnt); + if (do_sync) + au_lcnt_wait_for_fin(cnt); +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + percpu_ref_get(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + percpu_ref_put(cnt); +} + +/* + * avoid calling this func as possible. + */ +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev) +{ + long l; + + percpu_ref_switch_to_atomic_sync(cnt); + l = atomic_long_read(&cnt->count); + if (do_rev) + percpu_ref_switch_to_percpu(cnt); + + /* percpu_ref is initialized by 1 instead of 0 */ + return l - 1; +} +#endif + +#ifdef CONFIG_AUFS_DEBUG +#define AuLCntZero(val) do { \ + long l = val; \ + if (l) \ + AuDbg("%s = %ld\n", #val, l); \ +} while (0) +#else +#define AuLCntZero(val) do {} while (0) +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LCNT_H__ */ --- linux-5.8.0.orig/fs/aufs/loop.c +++ linux-5.8.0/fs/aufs/loop.c @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback block device as a branch + */ + +#include "aufs.h" + +/* added into drivers/block/loop.c */ +static struct file *(*backing_file_func)(struct super_block *sb); + +/* + * test if two lower dentries have overlapping branches. + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ + struct super_block *h_sb; + struct file *backing_file; + + if (unlikely(!backing_file_func)) { + /* don't load "loop" module here */ + backing_file_func = symbol_get(loop_backing_file); + if (unlikely(!backing_file_func)) + /* "loop" module is not loaded */ + return 0; + } + + h_sb = h_adding->d_sb; + backing_file = backing_file_func(h_sb); + if (!backing_file) + return 0; + + h_adding = backing_file->f_path.dentry; + /* + * h_adding can be local NFS. + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) + return 1; + return !!au_test_subdir(h_adding, sb->s_root); +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ +int au_test_loopback_kthread(void) +{ + int ret; + struct task_struct *tsk = current; + char c, comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + c = comm[4]; + ret = ('0' <= c && c <= '9' + && !strncmp(comm, "loop", 4)); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +#define au_warn_loopback_step 16 +static int au_warn_loopback_nelem = au_warn_loopback_step; +static unsigned long *au_warn_loopback_array; + +void au_warn_loopback(struct super_block *h_sb) +{ + int i, new_nelem; + unsigned long *a, magic; + static DEFINE_SPINLOCK(spin); + + magic = h_sb->s_magic; + spin_lock(&spin); + a = au_warn_loopback_array; + for (i = 0; i < au_warn_loopback_nelem && *a; i++) + if (a[i] == magic) { + spin_unlock(&spin); + return; + } + + /* h_sb is new to us, print it */ + if (i < au_warn_loopback_nelem) { + a[i] = magic; + goto pr; + } + + /* expand the array */ + new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; + a = au_kzrealloc(au_warn_loopback_array, + au_warn_loopback_nelem * sizeof(unsigned long), + new_nelem * sizeof(unsigned long), GFP_ATOMIC, + /*may_shrink*/0); + if (a) { + au_warn_loopback_nelem = new_nelem; + au_warn_loopback_array = a; + a[i] = magic; + goto pr; + } + + spin_unlock(&spin); + AuWarn1("realloc failed, ignored\n"); + return; + +pr: + spin_unlock(&spin); + pr_warn("you may want to try another patch for loopback file " + "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); +} + +int au_loopback_init(void) +{ + int err; + struct super_block *sb __maybe_unused; + + BUILD_BUG_ON(sizeof(sb->s_magic) != sizeof(*au_warn_loopback_array)); + + err = 0; + au_warn_loopback_array = kcalloc(au_warn_loopback_step, + sizeof(unsigned long), GFP_NOFS); + if (unlikely(!au_warn_loopback_array)) + err = -ENOMEM; + + return err; +} + +void au_loopback_fin(void) +{ + if (backing_file_func) + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); +} + +/* ---------------------------------------------------------------------- */ + +/* support the loopback block device insude aufs */ + +struct file *aufs_real_loop(struct file *file) +{ + struct file *f; + + BUG_ON(!au_test_aufs(file->f_path.dentry->d_sb)); + fi_read_lock(file); + f = au_hf_top(file); + fi_read_unlock(file); + AuDebugOn(!f); + return f; +} --- linux-5.8.0.orig/fs/aufs/loop.h +++ linux-5.8.0/fs/aufs/loop.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback mount as a branch + */ + +#ifndef __AUFS_LOOP_H__ +#define __AUFS_LOOP_H__ + +#ifdef __KERNEL__ + +struct dentry; +struct super_block; + +#ifdef CONFIG_AUFS_BDEV_LOOP +/* drivers/block/loop.c */ +struct file *loop_backing_file(struct super_block *sb); + +/* loop.c */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); +int au_test_loopback_kthread(void); +void au_warn_loopback(struct super_block *h_sb); + +int au_loopback_init(void); +void au_loopback_fin(void); + +struct file *aufs_real_loop(struct file *file); +#else +AuStub(struct file *, loop_backing_file, return NULL, struct super_block *sb) + +AuStubInt0(au_test_loopback_overlap, struct super_block *sb, + struct dentry *h_adding) +AuStubInt0(au_test_loopback_kthread, void) +AuStubVoid(au_warn_loopback, struct super_block *h_sb) + +AuStubInt0(au_loopback_init, void) +AuStubVoid(au_loopback_fin, void) + +AuStub(struct file *, aufs_real_loop, return NULL, struct file *file) +#endif /* BLK_DEV_LOOP */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ --- linux-5.8.0.orig/fs/aufs/magic.mk +++ linux-5.8.0/fs/aufs/magic.mk @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 + +# defined in ${srctree}/fs/fuse/inode.c +# tristate +ifdef CONFIG_FUSE_FS +ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 +endif + +# defined in ${srctree}/fs/xfs/xfs_sb.h +# tristate +ifdef CONFIG_XFS_FS +ccflags-y += -DXFS_SB_MAGIC=0x58465342 +endif + +# defined in ${srctree}/fs/configfs/mount.c +# tristate +ifdef CONFIG_CONFIGFS_FS +ccflags-y += -DCONFIGFS_MAGIC=0x62656570 +endif + +# defined in ${srctree}/fs/ubifs/ubifs.h +# tristate +ifdef CONFIG_UBIFS_FS +ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 +endif + +# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h +# tristate +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif --- linux-5.8.0.orig/fs/aufs/module.c +++ linux-5.8.0/fs/aufs/module.c @@ -0,0 +1,273 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module global variables and operations + */ + +#include +#include +#include "aufs.h" + +/* shrinkable realloc */ +void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink) +{ + size_t sz; + int diff; + + sz = 0; + diff = -1; + if (p) { +#if 0 /* unused */ + if (!new_sz) { + au_kfree_rcu(p); + p = NULL; + goto out; + } +#else + AuDebugOn(!new_sz); +#endif + sz = ksize(p); + diff = au_kmidx_sub(sz, new_sz); + } + if (sz && !diff) + goto out; + + if (sz < new_sz) + /* expand or SLOB */ + p = krealloc(p, new_sz, gfp); + else if (new_sz < sz && may_shrink) { + /* shrink */ + void *q; + + q = kmalloc(new_sz, gfp); + if (q) { + if (p) { + memcpy(q, p, new_sz); + au_kfree_try_rcu(p); + } + p = q; + } else + p = NULL; + } + +out: + return p; +} + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, + int may_shrink) +{ + p = au_krealloc(p, new_sz, gfp, may_shrink); + if (p && new_sz > nused) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ +/* + * aufs caches + */ +struct kmem_cache *au_cache[AuCache_Last]; + +static void au_cache_fin(void) +{ + int i; + + /* + * Make sure all delayed rcu free inodes are flushed before we + * destroy cache. + */ + rcu_barrier(); + + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) { + kmem_cache_destroy(au_cache[i]); + au_cache[i] = NULL; + } +} + +static int __init au_cache_init(void) +{ + au_cache[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cache[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cache[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cache[AuCache_ICNTNR]) + au_cache[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cache[AuCache_FINFO]) + au_cache[AuCache_VDIR] = AuCache(au_vdir); + if (au_cache[AuCache_VDIR]) + au_cache[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cache[AuCache_DEHSTR]) + return 0; + + au_cache_fin(); + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct hlist_bl_head au_sbilist; +#endif + +/* + * functions for module interface. + */ +MODULE_LICENSE("GPL"); +/* MODULE_LICENSE("GPL v2"); */ +MODULE_AUTHOR("Junjiro R. Okajima "); +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); +MODULE_ALIAS_FS(AUFS_NAME); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; +MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); +module_param_named(brs, sysaufs_brs, int, 0444); + +/* this module parameter has no meaning when USER_NS is disabled */ +bool au_userns; +MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); +module_param_named(allow_userns, au_userns, bool, 0444); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + int err; + + err = seq_path(seq, path, au_esc_chars); + if (err >= 0) + err = 0; + else + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int __init aufs_init(void) +{ + int err, i; + char *p; + + p = au_esc_chars; + for (i = 1; i <= ' '; i++) + *p++ = i; + *p++ = '\\'; + *p++ = '\x7f'; + *p = 0; + + au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); + + memcpy(aufs_iop_nogetattr, aufs_iop, sizeof(aufs_iop)); + for (i = 0; i < AuIop_Last; i++) + aufs_iop_nogetattr[i].getattr = NULL; + + memset(au_cache, 0, sizeof(au_cache)); /* including hnotify */ + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = dbgaufs_init(); + if (unlikely(err)) + goto out_sysaufs; + err = au_procfs_init(); + if (unlikely(err)) + goto out_dbgaufs; + err = au_wkq_init(); + if (unlikely(err)) + goto out_procfs; + err = au_loopback_init(); + if (unlikely(err)) + goto out_wkq; + err = au_hnotify_init(); + if (unlikely(err)) + goto out_loopback; + err = au_sysrq_init(); + if (unlikely(err)) + goto out_hin; + err = au_cache_init(); + if (unlikely(err)) + goto out_sysrq; + + aufs_fs_type.fs_flags |= au_userns ? FS_USERNS_MOUNT : 0; + err = register_filesystem(&aufs_fs_type); + if (unlikely(err)) + goto out_cache; + + /* since we define pr_fmt, call printk directly */ + printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); + goto out; /* success */ + +out_cache: + au_cache_fin(); +out_sysrq: + au_sysrq_fin(); +out_hin: + au_hnotify_fin(); +out_loopback: + au_loopback_fin(); +out_wkq: + au_wkq_fin(); +out_procfs: + au_procfs_fin(); +out_dbgaufs: + dbgaufs_fin(); +out_sysaufs: + sysaufs_fin(); + au_dy_fin(); +out: + return err; +} + +static void __exit aufs_exit(void) +{ + unregister_filesystem(&aufs_fs_type); + au_cache_fin(); + au_sysrq_fin(); + au_hnotify_fin(); + au_loopback_fin(); + au_wkq_fin(); + au_procfs_fin(); + dbgaufs_fin(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); --- linux-5.8.0.orig/fs/aufs/module.h +++ linux-5.8.0/fs/aufs/module.h @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module initialization and module-global + */ + +#ifndef __AUFS_MODULE_H__ +#define __AUFS_MODULE_H__ + +#ifdef __KERNEL__ + +#include +#include "debug.h" +#include "dentry.h" +#include "dir.h" +#include "file.h" +#include "inode.h" + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; +extern bool au_userns; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink); +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, + int may_shrink); + +/* + * Comparing the size of the object with sizeof(struct rcu_head) + * case 1: object is always larger + * --> au_kfree_rcu() or au_kfree_do_rcu() + * case 2: object is always smaller + * --> au_kfree_small() + * case 3: object can be any size + * --> au_kfree_try_rcu() + */ + +static inline void au_kfree_do_rcu(const void *p) +{ + struct { + struct rcu_head rcu; + } *a = (void *)p; + + kfree_rcu(a, rcu); +} + +#define au_kfree_rcu(_p) do { \ + typeof(_p) p = (_p); \ + BUILD_BUG_ON(sizeof(*p) < sizeof(struct rcu_head)); \ + if (p) \ + au_kfree_do_rcu(p); \ + } while (0) + +#define au_kfree_do_sz_test(sz) (sz >= sizeof(struct rcu_head)) +#define au_kfree_sz_test(p) (p && au_kfree_do_sz_test(ksize(p))) + +static inline void au_kfree_try_rcu(const void *p) +{ + if (!p) + return; + if (au_kfree_sz_test(p)) + au_kfree_do_rcu(p); + else + kfree(p); +} + +static inline void au_kfree_small(const void *p) +{ + if (!p) + return; + AuDebugOn(au_kfree_sz_test(p)); + kfree(p); +} + +static inline int au_kmidx_sub(size_t sz, size_t new_sz) +{ +#ifndef CONFIG_SLOB + return kmalloc_index(sz) - kmalloc_index(new_sz); +#else + return -1; /* SLOB is untested */ +#endif +} + +int au_seq_path(struct seq_file *seq, struct path *path); + +#ifdef CONFIG_PROC_FS +/* procfs.c */ +int __init au_procfs_init(void); +void au_procfs_fin(void); +#else +AuStubInt0(au_procfs_init, void); +AuStubVoid(au_procfs_fin, void); +#endif + +/* ---------------------------------------------------------------------- */ + +/* kmem cache */ +enum { + AuCache_DINFO, + AuCache_ICNTNR, + AuCache_FINFO, + AuCache_VDIR, + AuCache_DEHSTR, + AuCache_HNOTIFY, /* must be last */ + AuCache_Last +}; + +extern struct kmem_cache *au_cache[AuCache_Last]; + +#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) +#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) +#define AuCacheCtor(type, ctor) \ + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + +#define AuCacheFuncs(name, index) \ + static inline struct au_##name *au_cache_alloc_##name(void) \ + { return kmem_cache_alloc(au_cache[AuCache_##index], GFP_NOFS); } \ + static inline void au_cache_free_##name##_norcu(struct au_##name *p) \ + { kmem_cache_free(au_cache[AuCache_##index], p); } \ + \ + static inline void au_cache_free_##name##_rcu_cb(struct rcu_head *rcu) \ + { void *p = rcu; \ + p -= offsetof(struct au_##name, rcu); \ + kmem_cache_free(au_cache[AuCache_##index], p); } \ + static inline void au_cache_free_##name##_rcu(struct au_##name *p) \ + { BUILD_BUG_ON(sizeof(struct au_##name) < sizeof(struct rcu_head)); \ + call_rcu(&p->rcu, au_cache_free_##name##_rcu_cb); } \ + \ + static inline void au_cache_free_##name(struct au_##name *p) \ + { /* au_cache_free_##name##_norcu(p); */ \ + au_cache_free_##name##_rcu(p); } + +AuCacheFuncs(dinfo, DINFO); +AuCacheFuncs(icntnr, ICNTNR); +AuCacheFuncs(finfo, FINFO); +AuCacheFuncs(vdir, VDIR); +AuCacheFuncs(vdir_dehstr, DEHSTR); +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ --- linux-5.8.0.orig/fs/aufs/mvdown.c +++ linux-5.8.0/fs/aufs/mvdown.c @@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2011-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * move-down, opposite of copy-up + */ + +#include "aufs.h" + +struct au_mvd_args { + struct { + struct super_block *h_sb; + struct dentry *h_parent; + struct au_hinode *hdir; + struct inode *h_dir, *h_inode; + struct au_pin pin; + } info[AUFS_MVDOWN_NARRAY]; + + struct aufs_mvdown mvdown; + struct dentry *dentry, *parent; + struct inode *inode, *dir; + struct super_block *sb; + aufs_bindex_t bopq, bwh, bfound; + unsigned char rename_lock; +}; + +#define mvd_errno mvdown.au_errno +#define mvd_bsrc mvdown.stbr[AUFS_MVDOWN_UPPER].bindex +#define mvd_src_brid mvdown.stbr[AUFS_MVDOWN_UPPER].brid +#define mvd_bdst mvdown.stbr[AUFS_MVDOWN_LOWER].bindex +#define mvd_dst_brid mvdown.stbr[AUFS_MVDOWN_LOWER].brid + +#define mvd_h_src_sb info[AUFS_MVDOWN_UPPER].h_sb +#define mvd_h_src_parent info[AUFS_MVDOWN_UPPER].h_parent +#define mvd_hdir_src info[AUFS_MVDOWN_UPPER].hdir +#define mvd_h_src_dir info[AUFS_MVDOWN_UPPER].h_dir +#define mvd_h_src_inode info[AUFS_MVDOWN_UPPER].h_inode +#define mvd_pin_src info[AUFS_MVDOWN_UPPER].pin + +#define mvd_h_dst_sb info[AUFS_MVDOWN_LOWER].h_sb +#define mvd_h_dst_parent info[AUFS_MVDOWN_LOWER].h_parent +#define mvd_hdir_dst info[AUFS_MVDOWN_LOWER].hdir +#define mvd_h_dst_dir info[AUFS_MVDOWN_LOWER].h_dir +#define mvd_h_dst_inode info[AUFS_MVDOWN_LOWER].h_inode +#define mvd_pin_dst info[AUFS_MVDOWN_LOWER].pin + +#define AU_MVD_PR(flag, ...) do { \ + if (flag) \ + pr_err(__VA_ARGS__); \ + } while (0) + +static int find_lower_writable(struct au_mvd_args *a) +{ + struct super_block *sb; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + sb = a->sb; + bindex = a->mvd_bsrc; + bbot = au_sbbot(sb); + if (a->mvdown.flags & AUFS_MVDOWN_FHSM_LOWER) + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm) + && !sb_rdonly(au_br_sb(br))) + return bindex; + } + else if (!(a->mvdown.flags & AUFS_MVDOWN_ROLOWER)) + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br)) + return bindex; + } + else + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!sb_rdonly(au_br_sb(br))) { + if (au_br_rdonly(br)) + a->mvdown.flags + |= AUFS_MVDOWN_ROLOWER_R; + return bindex; + } + } + + return -1; +} + +/* make the parent dir on bdst */ +static int au_do_mkdir(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + a->mvd_hdir_src = au_hi(a->dir, a->mvd_bsrc); + a->mvd_hdir_dst = au_hi(a->dir, a->mvd_bdst); + a->mvd_h_src_parent = au_h_dptr(a->parent, a->mvd_bsrc); + a->mvd_h_dst_parent = NULL; + if (au_dbbot(a->parent) >= a->mvd_bdst) + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + if (!a->mvd_h_dst_parent) { + err = au_cpdown_dirs(a->dentry, a->mvd_bdst); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "cpdown_dirs failed\n"); + goto out; + } + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +/* lock them all */ +static int au_do_lock(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct dentry *h_trap; + + a->mvd_h_src_sb = au_sbr_sb(a->sb, a->mvd_bsrc); + a->mvd_h_dst_sb = au_sbr_sb(a->sb, a->mvd_bdst); + err = au_pin(&a->mvd_pin_dst, a->dentry, a->mvd_bdst, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_dst failed\n"); + goto out; + } + + if (a->mvd_h_src_sb != a->mvd_h_dst_sb) { + a->rename_lock = 0; + au_pin_init(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + AuLsc_DI_PARENT, AuLsc_I_PARENT3, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + err = au_do_pin(&a->mvd_pin_src); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + goto out_dst; + } + goto out; /* success */ + } + + a->rename_lock = 1; + au_pin_hdir_unlock(&a->mvd_pin_dst); + err = au_pin(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + au_pin_hdir_unlock(&a->mvd_pin_src); + h_trap = vfsub_lock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + if (h_trap) { + err = (h_trap != a->mvd_h_src_parent); + if (err) + err = (h_trap != a->mvd_h_dst_parent); + } + BUG_ON(err); /* it should never happen */ + if (unlikely(a->mvd_h_src_dir != au_pinned_h_dir(&a->mvd_pin_src))) { + err = -EBUSY; + AuTraceErr(err); + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + goto out; /* success */ + +out_dst: + au_unpin(&a->mvd_pin_dst); +out: + AuTraceErr(err); + return err; +} + +static void au_do_unlock(const unsigned char dmsg, struct au_mvd_args *a) +{ + if (!a->rename_lock) + au_unpin(&a->mvd_pin_src); + else { + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + } + au_unpin(&a->mvd_pin_dst); +} + +/* copy-down the file */ +static int au_do_cpdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_cp_generic cpg = { + .dentry = a->dentry, + .bdst = a->mvd_bdst, + .bsrc = a->mvd_bsrc, + .len = -1, + .pin = &a->mvd_pin_dst, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + + AuDbg("b%d, b%d\n", cpg.bsrc, cpg.bdst); + if (a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + au_fset_cpup(cpg.flags, OVERWRITE); + if (a->mvdown.flags & AUFS_MVDOWN_ROLOWER) + au_fset_cpup(cpg.flags, RWDST); + err = au_sio_cpdown_simple(&cpg); + if (unlikely(err)) + AU_MVD_PR(dmsg, "cpdown failed\n"); + + AuTraceErr(err); + return err; +} + +/* + * unlink the whiteout on bdst if exist which may be created by UDBA while we + * were sleeping + */ +static int au_do_unlink_wh(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct au_branch *br; + struct inode *delegated; + + br = au_sbr(a->sb, a->mvd_bdst); + h_path.dentry = au_wh_lkup(a->mvd_h_dst_parent, &a->dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) { + AU_MVD_PR(dmsg, "wh_lkup failed\n"); + goto out; + } + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + delegated = NULL; + err = vfsub_unlink(d_inode(a->mvd_h_dst_parent), &h_path, + &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "wh_unlink failed\n"); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* + * unlink the topmost h_dentry + */ +static int au_do_unlink(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct inode *delegated; + + h_path.mnt = au_sbr_mnt(a->sb, a->mvd_bsrc); + h_path.dentry = au_h_dptr(a->dentry, a->mvd_bsrc); + delegated = NULL; + err = vfsub_unlink(a->mvd_h_src_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "unlink failed\n"); + + AuTraceErr(err); + return err; +} + +/* Since mvdown succeeded, we ignore an error of this function */ +static void au_do_stfs(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + a->mvdown.flags |= AUFS_MVDOWN_STFS_FAILED; + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_UPPER].stfs); + if (!err) { + br = au_sbr(a->sb, a->mvd_bdst); + a->mvdown.stbr[AUFS_MVDOWN_LOWER].brid = br->br_id; + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_LOWER].stfs); + } + if (!err) + a->mvdown.flags &= ~AUFS_MVDOWN_STFS_FAILED; + else + AU_MVD_PR(dmsg, "statfs failed (%d), ignored\n", err); +} + +/* + * copy-down the file and unlink the bsrc file. + * - unlink the bdst whout if exist + * - copy-down the file (with whtmp name and rename) + * - unlink the bsrc file + */ +static int au_do_mvdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = au_do_mkdir(dmsg, a); + if (!err) + err = au_do_lock(dmsg, a); + if (unlikely(err)) + goto out; + + /* + * do not revert the activities we made on bdst since they should be + * harmless in aufs. + */ + + err = au_do_cpdown(dmsg, a); + if (!err) + err = au_do_unlink_wh(dmsg, a); + if (!err && !(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) + err = au_do_unlink(dmsg, a); + if (unlikely(err)) + goto out_unlock; + + AuDbg("%pd2, 0x%x, %d --> %d\n", + a->dentry, a->mvdown.flags, a->mvd_bsrc, a->mvd_bdst); + if (find_lower_writable(a) < 0) + a->mvdown.flags |= AUFS_MVDOWN_BOTTOM; + + if (a->mvdown.flags & AUFS_MVDOWN_STFS) + au_do_stfs(dmsg, a); + + /* maintain internal array */ + if (!(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) { + au_set_h_dptr(a->dentry, a->mvd_bsrc, NULL); + au_set_dbtop(a->dentry, a->mvd_bdst); + au_set_h_iptr(a->inode, a->mvd_bsrc, NULL, /*flags*/0); + au_set_ibtop(a->inode, a->mvd_bdst); + } else { + /* hide the lower */ + au_set_h_dptr(a->dentry, a->mvd_bdst, NULL); + au_set_dbbot(a->dentry, a->mvd_bsrc); + au_set_h_iptr(a->inode, a->mvd_bdst, NULL, /*flags*/0); + au_set_ibbot(a->inode, a->mvd_bsrc); + } + if (au_dbbot(a->dentry) < a->mvd_bdst) + au_set_dbbot(a->dentry, a->mvd_bdst); + if (au_ibbot(a->inode) < a->mvd_bdst) + au_set_ibbot(a->inode, a->mvd_bdst); + +out_unlock: + au_do_unlock(dmsg, a); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* make sure the file is idle */ +static int au_mvd_args_busy(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err, plinked; + + err = 0; + plinked = !!au_opt_test(au_mntflags(a->sb), PLINK); + if (au_dbtop(a->dentry) == a->mvd_bsrc + && au_dcount(a->dentry) == 1 + && atomic_read(&a->inode->i_count) == 1 + /* && a->mvd_h_src_inode->i_nlink == 1 */ + && (!plinked || !au_plink_test(a->inode)) + && a->inode->i_nlink == 1) + goto out; + + err = -EBUSY; + AU_MVD_PR(dmsg, + "b%d, d{b%d, c%d?}, i{c%d?, l%u}, hi{l%u}, p{%d, %d}\n", + a->mvd_bsrc, au_dbtop(a->dentry), au_dcount(a->dentry), + atomic_read(&a->inode->i_count), a->inode->i_nlink, + a->mvd_h_src_inode->i_nlink, + plinked, plinked ? au_plink_test(a->inode) : 0); + +out: + AuTraceErr(err); + return err; +} + +/* make sure the parent dir is fine */ +static int au_mvd_args_parent(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + aufs_bindex_t bindex; + + err = 0; + if (unlikely(au_alive_dir(a->parent))) { + err = -ENOENT; + AU_MVD_PR(dmsg, "parent dir is dead\n"); + goto out; + } + + a->bopq = au_dbdiropq(a->parent); + bindex = au_wbr_nonopq(a->dentry, a->mvd_bdst); + AuDbg("b%d\n", bindex); + if (unlikely((bindex >= 0 && bindex < a->mvd_bdst) + || (a->bopq != -1 && a->bopq < a->mvd_bdst))) { + err = -EINVAL; + a->mvd_errno = EAU_MVDOWN_OPAQUE; + AU_MVD_PR(dmsg, "ancestor is opaque b%d, b%d\n", + a->bopq, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_intermediate(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + struct au_dinfo *dinfo, *tmp; + + /* lookup the next lower positive entry */ + err = -ENOMEM; + tmp = au_di_alloc(a->sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + + a->bfound = -1; + a->bwh = -1; + dinfo = au_di(a->dentry); + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + + /* returns the number of positive dentries */ + err = au_lkup_dentry(a->dentry, a->mvd_bsrc + 1, + /* AuLkup_IGNORE_PERM */ 0); + if (!err) + a->bwh = au_dbwh(a->dentry); + else if (err > 0) + a->bfound = au_dbtop(a->dentry); + + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err < 0)) + AU_MVD_PR(dmsg, "failed look-up lower\n"); + + /* + * here, we have these cases. + * bfound == -1 + * no positive dentry under bsrc. there are more sub-cases. + * bwh < 0 + * there no whiteout, we can safely move-down. + * bwh <= bsrc + * impossible + * bsrc < bwh && bwh < bdst + * there is a whiteout on RO branch. cannot proceed. + * bwh == bdst + * there is a whiteout on the RW target branch. it should + * be removed. + * bdst < bwh + * there is a whiteout somewhere unrelated branch. + * -1 < bfound && bfound <= bsrc + * impossible. + * bfound < bdst + * found, but it is on RO branch between bsrc and bdst. cannot + * proceed. + * bfound == bdst + * found, replace it if AUFS_MVDOWN_FORCE is set. otherwise return + * error. + * bdst < bfound + * found, after we create the file on bdst, it will be hidden. + */ + + AuDebugOn(a->bfound == -1 + && a->bwh != -1 + && a->bwh <= a->mvd_bsrc); + AuDebugOn(-1 < a->bfound + && a->bfound <= a->mvd_bsrc); + + err = -EINVAL; + if (a->bfound == -1 + && a->mvd_bsrc < a->bwh + && a->bwh != -1 + && a->bwh < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_WHITEOUT; + AU_MVD_PR(dmsg, "bsrc %d, bdst %d, bfound %d, bwh %d\n", + a->mvd_bsrc, a->mvd_bdst, a->bfound, a->bwh); + goto out; + } else if (a->bfound != -1 && a->bfound < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_UPPER; + AU_MVD_PR(dmsg, "bdst %d, bfound %d\n", + a->mvd_bdst, a->bfound); + goto out; + } + + err = 0; /* success */ + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_exist(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + if (!(a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + && a->bfound == a->mvd_bdst) + err = -EEXIST; + AuTraceErr(err); + return err; +} + +static int au_mvd_args(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + err = -EISDIR; + if (unlikely(S_ISDIR(a->inode->i_mode))) + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_UPPER)) + a->mvd_bsrc = au_ibtop(a->inode); + else { + a->mvd_bsrc = au_br_index(a->sb, a->mvd_src_brid); + if (unlikely(a->mvd_bsrc < 0 + || (a->mvd_bsrc < au_dbtop(a->dentry) + || au_dbbot(a->dentry) < a->mvd_bsrc + || !au_h_dptr(a->dentry, a->mvd_bsrc)) + || (a->mvd_bsrc < au_ibtop(a->inode) + || au_ibbot(a->inode) < a->mvd_bsrc + || !au_h_iptr(a->inode, a->mvd_bsrc)))) { + a->mvd_errno = EAU_MVDOWN_NOUPPER; + AU_MVD_PR(dmsg, "no upper\n"); + goto out; + } + } + if (unlikely(a->mvd_bsrc == au_sbbot(a->sb))) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "on the bottom\n"); + goto out; + } + a->mvd_h_src_inode = au_h_iptr(a->inode, a->mvd_bsrc); + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_rdonly(br); + if (!(a->mvdown.flags & AUFS_MVDOWN_ROUPPER)) { + if (unlikely(err)) + goto out; + } else if (!(vfsub_native_ro(a->mvd_h_src_inode) + || IS_APPEND(a->mvd_h_src_inode))) { + if (err) + a->mvdown.flags |= AUFS_MVDOWN_ROUPPER_R; + /* go on */ + } else + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_LOWER)) { + a->mvd_bdst = find_lower_writable(a); + if (unlikely(a->mvd_bdst < 0)) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "no writable lower branch\n"); + goto out; + } + } else { + a->mvd_bdst = au_br_index(a->sb, a->mvd_dst_brid); + if (unlikely(a->mvd_bdst < 0 + || au_sbbot(a->sb) < a->mvd_bdst)) { + a->mvd_errno = EAU_MVDOWN_NOLOWERBR; + AU_MVD_PR(dmsg, "no lower brid\n"); + goto out; + } + } + + err = au_mvd_args_busy(dmsg, a); + if (!err) + err = au_mvd_args_parent(dmsg, a); + if (!err) + err = au_mvd_args_intermediate(dmsg, a); + if (!err) + err = au_mvd_args_exist(dmsg, a); + if (!err) + AuDbg("b%d, b%d\n", a->mvd_bsrc, a->mvd_bdst); + +out: + AuTraceErr(err); + return err; +} + +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *uarg) +{ + int err, e; + unsigned char dmsg; + struct au_mvd_args *args; + struct inode *inode; + + inode = d_inode(dentry); + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -ENOMEM; + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) + goto out; + + err = copy_from_user(&args->mvdown, uarg, sizeof(args->mvdown)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(uarg, sizeof(*uarg)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out_free; + } + AuDbg("flags 0x%x\n", args->mvdown.flags); + args->mvdown.flags &= ~(AUFS_MVDOWN_ROLOWER_R | AUFS_MVDOWN_ROUPPER_R); + args->mvdown.au_errno = 0; + args->dentry = dentry; + args->inode = inode; + args->sb = dentry->d_sb; + + err = -ENOENT; + dmsg = !!(args->mvdown.flags & AUFS_MVDOWN_DMSG); + args->parent = dget_parent(dentry); + args->dir = d_inode(args->parent); + inode_lock_nested(args->dir, I_MUTEX_PARENT); + dput(args->parent); + if (unlikely(args->parent != dentry->d_parent)) { + AU_MVD_PR(dmsg, "parent dir is moved\n"); + goto out_dir; + } + + inode_lock_nested(inode, I_MUTEX_CHILD); + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_NOPLMW); + if (unlikely(err)) + goto out_inode; + + di_write_lock_parent(args->parent); + err = au_mvd_args(dmsg, args); + if (unlikely(err)) + goto out_parent; + + err = au_do_mvdown(dmsg, args); + if (unlikely(err)) + goto out_parent; + + au_cpup_attr_timesizes(args->dir); + au_cpup_attr_timesizes(inode); + if (!(args->mvdown.flags & AUFS_MVDOWN_KUPPER)) + au_cpup_igen(inode, au_h_iptr(inode, args->mvd_bdst)); + /* au_digen_dec(dentry); */ + +out_parent: + di_write_unlock(args->parent); + aufs_read_unlock(dentry, AuLock_DW); +out_inode: + inode_unlock(inode); +out_dir: + inode_unlock(args->dir); +out_free: + e = copy_to_user(uarg, &args->mvdown, sizeof(args->mvdown)); + if (unlikely(e)) + err = -EFAULT; + au_kfree_rcu(args); +out: + AuTraceErr(err); + return err; +} --- linux-5.8.0.orig/fs/aufs/opts.c +++ linux-5.8.0/fs/aufs/opts.c @@ -0,0 +1,1880 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#include +#include /* a distribution requires */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +enum { + Opt_br, + Opt_add, Opt_del, Opt_mod, Opt_append, Opt_prepend, + Opt_idel, Opt_imod, + Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, + Opt_rdblk_def, Opt_rdhash_def, + Opt_xino, Opt_noxino, + Opt_trunc_xino, Opt_trunc_xino_v, Opt_notrunc_xino, + Opt_trunc_xino_path, Opt_itrunc_xino, + Opt_trunc_xib, Opt_notrunc_xib, + Opt_shwh, Opt_noshwh, + Opt_plink, Opt_noplink, Opt_list_plink, + Opt_udba, + Opt_dio, Opt_nodio, + Opt_diropq_a, Opt_diropq_w, + Opt_warn_perm, Opt_nowarn_perm, + Opt_wbr_copyup, Opt_wbr_create, + Opt_fhsm_sec, + Opt_verbose, Opt_noverbose, + Opt_sum, Opt_nosum, Opt_wsum, + Opt_dirperm1, Opt_nodirperm1, + Opt_dirren, Opt_nodirren, + Opt_acl, Opt_noacl, + Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err +}; + +static match_table_t options = { + {Opt_br, "br=%s"}, + {Opt_br, "br:%s"}, + + {Opt_add, "add=%d:%s"}, + {Opt_add, "add:%d:%s"}, + {Opt_add, "ins=%d:%s"}, + {Opt_add, "ins:%d:%s"}, + {Opt_append, "append=%s"}, + {Opt_append, "append:%s"}, + {Opt_prepend, "prepend=%s"}, + {Opt_prepend, "prepend:%s"}, + + {Opt_del, "del=%s"}, + {Opt_del, "del:%s"}, + /* {Opt_idel, "idel:%d"}, */ + {Opt_mod, "mod=%s"}, + {Opt_mod, "mod:%s"}, + /* {Opt_imod, "imod:%d:%s"}, */ + + {Opt_dirwh, "dirwh=%d"}, + + {Opt_xino, "xino=%s"}, + {Opt_noxino, "noxino"}, + {Opt_trunc_xino, "trunc_xino"}, + {Opt_trunc_xino_v, "trunc_xino_v=%d:%d"}, + {Opt_notrunc_xino, "notrunc_xino"}, + {Opt_trunc_xino_path, "trunc_xino=%s"}, + {Opt_itrunc_xino, "itrunc_xino=%d"}, + /* {Opt_zxino, "zxino=%s"}, */ + {Opt_trunc_xib, "trunc_xib"}, + {Opt_notrunc_xib, "notrunc_xib"}, + +#ifdef CONFIG_PROC_FS + {Opt_plink, "plink"}, +#else + {Opt_ignore_silent, "plink"}, +#endif + + {Opt_noplink, "noplink"}, + +#ifdef CONFIG_AUFS_DEBUG + {Opt_list_plink, "list_plink"}, +#endif + + {Opt_udba, "udba=%s"}, + + {Opt_dio, "dio"}, + {Opt_nodio, "nodio"}, + +#ifdef CONFIG_AUFS_DIRREN + {Opt_dirren, "dirren"}, + {Opt_nodirren, "nodirren"}, +#else + {Opt_ignore, "dirren"}, + {Opt_ignore_silent, "nodirren"}, +#endif + +#ifdef CONFIG_AUFS_FHSM + {Opt_fhsm_sec, "fhsm_sec=%d"}, +#else + {Opt_ignore, "fhsm_sec=%d"}, +#endif + + {Opt_diropq_a, "diropq=always"}, + {Opt_diropq_a, "diropq=a"}, + {Opt_diropq_w, "diropq=whiteouted"}, + {Opt_diropq_w, "diropq=w"}, + + {Opt_warn_perm, "warn_perm"}, + {Opt_nowarn_perm, "nowarn_perm"}, + + /* keep them temporary */ + {Opt_ignore_silent, "nodlgt"}, + {Opt_ignore, "clean_plink"}, + +#ifdef CONFIG_AUFS_SHWH + {Opt_shwh, "shwh"}, +#endif + {Opt_noshwh, "noshwh"}, + + {Opt_dirperm1, "dirperm1"}, + {Opt_nodirperm1, "nodirperm1"}, + + {Opt_verbose, "verbose"}, + {Opt_verbose, "v"}, + {Opt_noverbose, "noverbose"}, + {Opt_noverbose, "quiet"}, + {Opt_noverbose, "q"}, + {Opt_noverbose, "silent"}, + + {Opt_sum, "sum"}, + {Opt_nosum, "nosum"}, + {Opt_wsum, "wsum"}, + + {Opt_rdcache, "rdcache=%d"}, + {Opt_rdblk, "rdblk=%d"}, + {Opt_rdblk_def, "rdblk=def"}, + {Opt_rdhash, "rdhash=%d"}, + {Opt_rdhash_def, "rdhash=def"}, + + {Opt_wbr_create, "create=%s"}, + {Opt_wbr_create, "create_policy=%s"}, + {Opt_wbr_copyup, "cpup=%s"}, + {Opt_wbr_copyup, "copyup=%s"}, + {Opt_wbr_copyup, "copyup_policy=%s"}, + + /* generic VFS flag */ +#ifdef CONFIG_FS_POSIX_ACL + {Opt_acl, "acl"}, + {Opt_noacl, "noacl"}, +#else + {Opt_ignore, "acl"}, + {Opt_ignore_silent, "noacl"}, +#endif + + /* internal use for the scripts */ + {Opt_ignore_silent, "si=%s"}, + + {Opt_br, "dirs=%s"}, + {Opt_ignore, "debug=%d"}, + {Opt_ignore, "delete=whiteout"}, + {Opt_ignore, "delete=all"}, + {Opt_ignore, "imap=%s"}, + + /* temporary workaround, due to old mount(8)? */ + {Opt_ignore_silent, "relatime"}, + + {Opt_err, NULL} +}; + +/* ---------------------------------------------------------------------- */ + +static const char *au_parser_pattern(int val, match_table_t tbl) +{ + struct match_token *p; + + p = tbl; + while (p->pattern) { + if (p->token == val) + return p->pattern; + p++; + } + BUG(); + return "??"; +} + +static const char *au_optstr(int *val, match_table_t tbl) +{ + struct match_token *p; + int v; + + v = *val; + if (!v) + goto out; + p = tbl; + while (p->pattern) { + if (p->token + && (v & p->token) == p->token) { + *val &= ~p->token; + return p->pattern; + } + p++; + } + +out: + return NULL; +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t brperm = { + {AuBrPerm_RO, AUFS_BRPERM_RO}, + {AuBrPerm_RR, AUFS_BRPERM_RR}, + {AuBrPerm_RW, AUFS_BRPERM_RW}, + {0, NULL} +}; + +static match_table_t brattr = { + /* general */ + {AuBrAttr_COO_REG, AUFS_BRATTR_COO_REG}, + {AuBrAttr_COO_ALL, AUFS_BRATTR_COO_ALL}, + /* 'unpin' attrib is meaningless since linux-3.18-rc1 */ + {AuBrAttr_UNPIN, AUFS_BRATTR_UNPIN}, +#ifdef CONFIG_AUFS_FHSM + {AuBrAttr_FHSM, AUFS_BRATTR_FHSM}, +#endif +#ifdef CONFIG_AUFS_XATTR + {AuBrAttr_ICEX, AUFS_BRATTR_ICEX}, + {AuBrAttr_ICEX_SEC, AUFS_BRATTR_ICEX_SEC}, + {AuBrAttr_ICEX_SYS, AUFS_BRATTR_ICEX_SYS}, + {AuBrAttr_ICEX_TR, AUFS_BRATTR_ICEX_TR}, + {AuBrAttr_ICEX_USR, AUFS_BRATTR_ICEX_USR}, + {AuBrAttr_ICEX_OTH, AUFS_BRATTR_ICEX_OTH}, +#endif + + /* ro/rr branch */ + {AuBrRAttr_WH, AUFS_BRRATTR_WH}, + + /* rw branch */ + {AuBrWAttr_MOO, AUFS_BRWATTR_MOO}, + {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, + + {0, NULL} +}; + +static int br_attr_val(char *str, match_table_t table, substring_t args[]) +{ + int attr, v; + char *p; + + attr = 0; + do { + p = strchr(str, '+'); + if (p) + *p = 0; + v = match_token(str, table, args); + if (v) { + if (v & AuBrAttr_CMOO_Mask) + attr &= ~AuBrAttr_CMOO_Mask; + attr |= v; + } else { + if (p) + *p = '+'; + pr_warn("ignored branch attribute %s\n", str); + break; + } + if (p) + str = p + 1; + } while (p); + + return attr; +} + +static int au_do_optstr_br_attr(au_br_perm_str_t *str, int perm) +{ + int sz; + const char *p; + char *q; + + q = str->a; + *q = 0; + p = au_optstr(&perm, brattr); + if (p) { + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } else + goto out; + + do { + p = au_optstr(&perm, brattr); + if (p) { + *q++ = '+'; + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } + } while (p); + +out: + return q - str->a; +} + +static int noinline_for_stack br_perm_val(char *perm) +{ + int val, bad, sz; + char *p; + substring_t args[MAX_OPT_ARGS]; + au_br_perm_str_t attr; + + p = strchr(perm, '+'); + if (p) + *p = 0; + val = match_token(perm, brperm, args); + if (!val) { + if (p) + *p = '+'; + pr_warn("ignored branch permission %s\n", perm); + val = AuBrPerm_RO; + goto out; + } + if (!p) + goto out; + + val |= br_attr_val(p + 1, brattr, args); + + bad = 0; + switch (val & AuBrPerm_Mask) { + case AuBrPerm_RO: + case AuBrPerm_RR: + bad = val & AuBrWAttr_Mask; + val &= ~AuBrWAttr_Mask; + break; + case AuBrPerm_RW: + bad = val & AuBrRAttr_Mask; + val &= ~AuBrRAttr_Mask; + break; + } + + /* + * 'unpin' attrib becomes meaningless since linux-3.18-rc1, but aufs + * does not treat it as an error, just warning. + * this is a tiny guard for the user operation. + */ + if (val & AuBrAttr_UNPIN) { + bad |= AuBrAttr_UNPIN; + val &= ~AuBrAttr_UNPIN; + } + + if (unlikely(bad)) { + sz = au_do_optstr_br_attr(&attr, bad); + AuDebugOn(!sz); + pr_warn("ignored branch attribute %s\n", attr.a); + } + +out: + return val; +} + +void au_optstr_br_perm(au_br_perm_str_t *str, int perm) +{ + au_br_perm_str_t attr; + const char *p; + char *q; + int sz; + + q = str->a; + p = au_optstr(&perm, brperm); + AuDebugOn(!p || !*p); + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + + sz = au_do_optstr_br_attr(&attr, perm); + if (sz) { + *q++ = '+'; + memcpy(q, attr.a, sz + 1); + } + + AuDebugOn(strlen(str->a) >= sizeof(str->a)); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t udbalevel = { + {AuOpt_UDBA_REVAL, "reval"}, + {AuOpt_UDBA_NONE, "none"}, +#ifdef CONFIG_AUFS_HNOTIFY + {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ +#ifdef CONFIG_AUFS_HFSNOTIFY + {AuOpt_UDBA_HNOTIFY, "fsnotify"}, +#endif +#endif + {-1, NULL} +}; + +static int noinline_for_stack udba_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, udbalevel, args); +} + +const char *au_optstr_udba(int udba) +{ + return au_parser_pattern(udba, udbalevel); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t au_wbr_create_policy = { + {AuWbrCreate_TDP, "tdp"}, + {AuWbrCreate_TDP, "top-down-parent"}, + {AuWbrCreate_RR, "rr"}, + {AuWbrCreate_RR, "round-robin"}, + {AuWbrCreate_MFS, "mfs"}, + {AuWbrCreate_MFS, "most-free-space"}, + {AuWbrCreate_MFSV, "mfs:%d"}, + {AuWbrCreate_MFSV, "most-free-space:%d"}, + + /* top-down regardless the parent, and then mfs */ + {AuWbrCreate_TDMFS, "tdmfs:%d"}, + {AuWbrCreate_TDMFSV, "tdmfs:%d:%d"}, + + {AuWbrCreate_MFSRR, "mfsrr:%d"}, + {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, + {AuWbrCreate_PMFS, "pmfs"}, + {AuWbrCreate_PMFSV, "pmfs:%d"}, + {AuWbrCreate_PMFSRR, "pmfsrr:%d"}, + {AuWbrCreate_PMFSRRV, "pmfsrr:%d:%d"}, + + {-1, NULL} +}; + +static int au_wbr_mfs_wmark(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int err; + unsigned long long ull; + + err = 0; + if (!match_u64(arg, &ull)) + create->mfsrr_watermark = ull; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int au_wbr_mfs_sec(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int n, err; + + err = 0; + if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) + create->mfs_second = n; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int noinline_for_stack +au_wbr_create_val(char *str, struct au_opt_wbr_create *create) +{ + int err, e; + substring_t args[MAX_OPT_ARGS]; + + err = match_token(str, au_wbr_create_policy, args); + create->wbr_create = err; + switch (err) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (!e) + e = au_wbr_mfs_sec(&args[1], str, create); + if (unlikely(e)) + err = e; + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_PMFSRR: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (unlikely(e)) { + err = e; + break; + } + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + create->mfs_second = AUFS_MFS_DEF_SEC; + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + e = au_wbr_mfs_sec(&args[0], str, create); + if (unlikely(e)) + err = e; + break; + } + + return err; +} + +const char *au_optstr_wbr_create(int wbr_create) +{ + return au_parser_pattern(wbr_create, au_wbr_create_policy); +} + +static match_table_t au_wbr_copyup_policy = { + {AuWbrCopyup_TDP, "tdp"}, + {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_BUP, "bup"}, + {AuWbrCopyup_BUP, "bottom-up-parent"}, + {AuWbrCopyup_BU, "bu"}, + {AuWbrCopyup_BU, "bottom-up"}, + {-1, NULL} +}; + +static int noinline_for_stack au_wbr_copyup_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, au_wbr_copyup_policy, args); +} + +const char *au_optstr_wbr_copyup(int wbr_copyup) +{ + return au_parser_pattern(wbr_copyup, au_wbr_copyup_policy); +} + +/* ---------------------------------------------------------------------- */ + +static const int lkup_dirflags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; + +static void dump_opts(struct au_opts *opts) +{ +#ifdef CONFIG_AUFS_DEBUG + /* reduce stack space */ + union { + struct au_opt_add *add; + struct au_opt_del *del; + struct au_opt_mod *mod; + struct au_opt_xino *xino; + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + u.add = &opt->add; + AuDbg("add {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_del: + case Opt_idel: + u.del = &opt->del; + AuDbg("del {%s, %p}\n", + u.del->pathname, u.del->h_path.dentry); + break; + case Opt_mod: + case Opt_imod: + u.mod = &opt->mod; + AuDbg("mod {%s, 0x%x, %p}\n", + u.mod->path, u.mod->perm, u.mod->h_root); + break; + case Opt_append: + u.add = &opt->add; + AuDbg("append {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_prepend: + u.add = &opt->add; + AuDbg("prepend {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_dirwh: + AuDbg("dirwh %d\n", opt->dirwh); + break; + case Opt_rdcache: + AuDbg("rdcache %d\n", opt->rdcache); + break; + case Opt_rdblk: + AuDbg("rdblk %u\n", opt->rdblk); + break; + case Opt_rdblk_def: + AuDbg("rdblk_def\n"); + break; + case Opt_rdhash: + AuDbg("rdhash %u\n", opt->rdhash); + break; + case Opt_rdhash_def: + AuDbg("rdhash_def\n"); + break; + case Opt_xino: + u.xino = &opt->xino; + AuDbg("xino {%s %pD}\n", u.xino->path, u.xino->file); + break; + case Opt_trunc_xino: + AuLabel(trunc_xino); + break; + case Opt_notrunc_xino: + AuLabel(notrunc_xino); + break; + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); + break; + case Opt_noxino: + AuLabel(noxino); + break; + case Opt_trunc_xib: + AuLabel(trunc_xib); + break; + case Opt_notrunc_xib: + AuLabel(notrunc_xib); + break; + case Opt_shwh: + AuLabel(shwh); + break; + case Opt_noshwh: + AuLabel(noshwh); + break; + case Opt_dirperm1: + AuLabel(dirperm1); + break; + case Opt_nodirperm1: + AuLabel(nodirperm1); + break; + case Opt_plink: + AuLabel(plink); + break; + case Opt_noplink: + AuLabel(noplink); + break; + case Opt_list_plink: + AuLabel(list_plink); + break; + case Opt_udba: + AuDbg("udba %d, %s\n", + opt->udba, au_optstr_udba(opt->udba)); + break; + case Opt_dio: + AuLabel(dio); + break; + case Opt_nodio: + AuLabel(nodio); + break; + case Opt_diropq_a: + AuLabel(diropq_a); + break; + case Opt_diropq_w: + AuLabel(diropq_w); + break; + case Opt_warn_perm: + AuLabel(warn_perm); + break; + case Opt_nowarn_perm: + AuLabel(nowarn_perm); + break; + case Opt_verbose: + AuLabel(verbose); + break; + case Opt_noverbose: + AuLabel(noverbose); + break; + case Opt_sum: + AuLabel(sum); + break; + case Opt_nosum: + AuLabel(nosum); + break; + case Opt_wsum: + AuLabel(wsum); + break; + case Opt_wbr_create: + u.create = &opt->wbr_create; + AuDbg("create %d, %s\n", u.create->wbr_create, + au_optstr_wbr_create(u.create->wbr_create)); + switch (u.create->wbr_create) { + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + AuDbg("%d sec\n", u.create->mfs_second); + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + AuDbg("%llu watermark, %d sec\n", + u.create->mfsrr_watermark, + u.create->mfs_second); + break; + } + break; + case Opt_wbr_copyup: + AuDbg("copyup %d, %s\n", opt->wbr_copyup, + au_optstr_wbr_copyup(opt->wbr_copyup)); + break; + case Opt_fhsm_sec: + AuDbg("fhsm_sec %u\n", opt->fhsm_second); + break; + case Opt_dirren: + AuLabel(dirren); + break; + case Opt_nodirren: + AuLabel(nodirren); + break; + case Opt_acl: + AuLabel(acl); + break; + case Opt_noacl: + AuLabel(noacl); + break; + default: + BUG(); + } + opt++; + } +#endif +} + +void au_opts_free(struct au_opts *opts) +{ + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + case Opt_append: + case Opt_prepend: + path_put(&opt->add.path); + break; + case Opt_del: + case Opt_idel: + path_put(&opt->del.h_path); + break; + case Opt_mod: + case Opt_imod: + dput(opt->mod.h_root); + break; + case Opt_xino: + fput(opt->xino.file); + break; + } + opt++; + } +} + +static int opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, + aufs_bindex_t bindex) +{ + int err; + struct au_opt_add *add = &opt->add; + char *p; + + add->bindex = bindex; + add->perm = AuBrPerm_RO; + add->pathname = opt_str; + p = strchr(opt_str, '='); + if (p) { + *p++ = 0; + if (*p) + add->perm = br_perm_val(p); + } + + err = vfsub_kern_path(add->pathname, lkup_dirflags, &add->path); + if (!err) { + if (!p) { + add->perm = AuBrPerm_RO; + if (au_test_fs_rr(add->path.dentry->d_sb)) + add->perm = AuBrPerm_RR; + else if (!bindex && !(sb_flags & SB_RDONLY)) + add->perm = AuBrPerm_RW; + } + opt->type = Opt_add; + goto out; + } + pr_err("lookup failed %s (%d)\n", add->pathname, err); + err = -EINVAL; + +out: + return err; +} + +static int au_opts_parse_del(struct au_opt_del *del, substring_t args[]) +{ + int err; + + del->pathname = args[0].from; + AuDbg("del path %s\n", del->pathname); + + err = vfsub_kern_path(del->pathname, lkup_dirflags, &del->h_path); + if (unlikely(err)) + pr_err("lookup failed %s (%d)\n", del->pathname, err); + + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_idel(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_del *del, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbbot(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + del->h_path.dentry = dget(au_h_dptr(root, bindex)); + del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int noinline_for_stack +au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct path path; + char *p; + + err = -EINVAL; + mod->path = args[0].from; + p = strchr(mod->path, '='); + if (unlikely(!p)) { + pr_err("no permission %s\n", args[0].from); + goto out; + } + + *p++ = 0; + err = vfsub_kern_path(mod->path, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", mod->path, err); + goto out; + } + + mod->perm = br_perm_val(p); + AuDbg("mod path %s, perm 0x%x, %s\n", mod->path, mod->perm, p); + mod->h_root = dget(path.dentry); + path_put(&path); + +out: + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_imod(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbbot(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + mod->perm = br_perm_val(args[1].from); + AuDbg("mod path %s, perm 0x%x, %s\n", + mod->path, mod->perm, args[1].from); + mod->h_root = dget(au_h_dptr(root, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino, + substring_t args[]) +{ + int err; + struct file *file; + + file = au_xino_create(sb, args[0].from, /*silent*/0, /*wbrtop*/0); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + + err = -EINVAL; + if (unlikely(file->f_path.dentry->d_sb == sb)) { + fput(file); + pr_err("%s must be outside\n", args[0].from); + goto out; + } + + err = 0; + xino->file = file; + xino->path = args[0].from; + +out: + return err; +} + +static int noinline_for_stack +au_opts_parse_xino_itrunc_path(struct super_block *sb, + struct au_opt_xino_itrunc *xino_itrunc, + substring_t args[]) +{ + int err; + aufs_bindex_t bbot, bindex; + struct path path; + struct dentry *root; + + err = vfsub_kern_path(args[0].from, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", args[0].from, err); + goto out; + } + + xino_itrunc->bindex = -1; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + if (au_h_dptr(root, bindex) == path.dentry) { + xino_itrunc->bindex = bindex; + break; + } + } + aufs_read_unlock(root, !AuLock_IR); + path_put(&path); + + if (unlikely(xino_itrunc->bindex < 0)) { + pr_err("no such branch %s\n", args[0].from); + err = -EINVAL; + } + +out: + return err; +} + +/* called without aufs lock */ +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts) +{ + int err, n, token; + aufs_bindex_t bindex; + unsigned char skipped; + struct dentry *root; + struct au_opt *opt, *opt_tail; + char *opt_str; + /* reduce the stack space */ + union { + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct { + substring_t args[MAX_OPT_ARGS]; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + root = sb->s_root; + err = 0; + bindex = 0; + opt = opts->opt; + opt_tail = opt + opts->max_opt - 1; + opt->type = Opt_tail; + while (!err && (opt_str = strsep(&str, ",")) && *opt_str) { + err = -EINVAL; + skipped = 0; + token = match_token(opt_str, options, a->args); + switch (token) { + case Opt_br: + err = 0; + while (!err && (opt_str = strsep(&a->args[0].from, ":")) + && *opt_str) { + err = opt_add(opt, opt_str, opts->sb_flags, + bindex++); + if (unlikely(!err && ++opt > opt_tail)) { + err = -E2BIG; + break; + } + opt->type = Opt_tail; + skipped = 1; + } + break; + case Opt_add: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + bindex = n; + err = opt_add(opt, a->args[1].from, opts->sb_flags, + bindex); + if (!err) + opt->type = token; + break; + case Opt_append: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*dummy bindex*/1); + if (!err) + opt->type = token; + break; + case Opt_prepend: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*bindex*/0); + if (!err) + opt->type = token; + break; + case Opt_del: + err = au_opts_parse_del(&opt->del, a->args); + if (!err) + opt->type = token; + break; +#if 0 /* reserved for future use */ + case Opt_idel: + del->pathname = "(indexed)"; + if (unlikely(match_int(&args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_idel(sb, n, &opt->del, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_mod: + err = au_opts_parse_mod(&opt->mod, a->args); + if (!err) + opt->type = token; + break; +#ifdef IMOD /* reserved for future use */ + case Opt_imod: + u.mod->path = "(indexed)"; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_imod(sb, n, &opt->mod, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_xino: + err = au_opts_parse_xino(sb, &opt->xino, a->args); + if (!err) + opt->type = token; + break; + + case Opt_trunc_xino_path: + err = au_opts_parse_xino_itrunc_path + (sb, &opt->xino_itrunc, a->args); + if (!err) + opt->type = token; + break; + + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + u.xino_itrunc->bindex = n; + aufs_read_lock(root, AuLock_FLUSH); + if (n < 0 || au_sbbot(sb) < n) { + pr_err("out of bounds, %d\n", n); + aufs_read_unlock(root, !AuLock_IR); + break; + } + aufs_read_unlock(root, !AuLock_IR); + err = 0; + opt->type = token; + break; + + case Opt_dirwh: + if (unlikely(match_int(&a->args[0], &opt->dirwh))) + break; + err = 0; + opt->type = token; + break; + + case Opt_rdcache: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n > AUFS_RDCACHE_MAX)) { + pr_err("rdcache must be smaller than %d\n", + AUFS_RDCACHE_MAX); + break; + } + opt->rdcache = n; + err = 0; + opt->type = token; + break; + case Opt_rdblk: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n && n < NAME_MAX)) { + pr_err("rdblk must be larger than %d\n", + NAME_MAX); + break; + } + opt->rdblk = n; + err = 0; + opt->type = token; + break; + case Opt_rdhash: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n * sizeof(struct hlist_head) + > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + opt->rdhash = n; + err = 0; + opt->type = token; + break; + + case Opt_trunc_xino: + case Opt_notrunc_xino: + case Opt_noxino: + case Opt_trunc_xib: + case Opt_notrunc_xib: + case Opt_shwh: + case Opt_noshwh: + case Opt_dirperm1: + case Opt_nodirperm1: + case Opt_plink: + case Opt_noplink: + case Opt_list_plink: + case Opt_dio: + case Opt_nodio: + case Opt_diropq_a: + case Opt_diropq_w: + case Opt_warn_perm: + case Opt_nowarn_perm: + case Opt_verbose: + case Opt_noverbose: + case Opt_sum: + case Opt_nosum: + case Opt_wsum: + case Opt_rdblk_def: + case Opt_rdhash_def: + case Opt_dirren: + case Opt_nodirren: + case Opt_acl: + case Opt_noacl: + err = 0; + opt->type = token; + break; + + case Opt_udba: + opt->udba = udba_val(a->args[0].from); + if (opt->udba >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_wbr_create: + u.create = &opt->wbr_create; + u.create->wbr_create + = au_wbr_create_val(a->args[0].from, u.create); + if (u.create->wbr_create >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + case Opt_wbr_copyup: + opt->wbr_copyup = au_wbr_copyup_val(a->args[0].from); + if (opt->wbr_copyup >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_fhsm_sec: + if (unlikely(match_int(&a->args[0], &n) + || n < 0)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (sysaufs_brs) { + opt->fhsm_second = n; + opt->type = token; + } else + pr_warn("ignored %s\n", opt_str); + err = 0; + break; + + case Opt_ignore: + pr_warn("ignored %s\n", opt_str); + /*FALLTHROUGH*/ + case Opt_ignore_silent: + skipped = 1; + err = 0; + break; + case Opt_err: + pr_err("unknown option %s\n", opt_str); + break; + } + + if (!err && !skipped) { + if (unlikely(++opt > opt_tail)) { + err = -E2BIG; + opt--; + opt->type = Opt_tail; + break; + } + opt->type = Opt_tail; + } + } + + au_kfree_rcu(a); + dump_opts(opts); + if (unlikely(err)) + au_opts_free(opts); + +out: + return err; +} + +static int au_opt_wbr_create(struct super_block *sb, + struct au_opt_wbr_create *create) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + if (sbinfo->si_wbr_create_ops->fin) { + err = sbinfo->si_wbr_create_ops->fin(sb); + if (!err) + err = 1; + } + + sbinfo->si_wbr_create = create->wbr_create; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; + switch (create->wbr_create) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRR: + case AuWbrCreate_PMFSRRV: + sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFS: + case AuWbrCreate_PMFSV: + sbinfo->si_wbr_mfs.mfs_expire + = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); + break; + } + + if (sbinfo->si_wbr_create_ops->init) + sbinfo->si_wbr_create_ops->init(sb); /* ignore */ + + return err; +} + +/* + * returns, + * plus: processed without an error + * zero: unprocessed + */ +static int au_opt_simple(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + switch (opt->type) { + case Opt_udba: + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= opt->udba; + opts->given_udba |= opt->udba; + break; + + case Opt_plink: + au_opt_set(sbinfo->si_mntflags, PLINK); + break; + case Opt_noplink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_opt_clr(sbinfo->si_mntflags, PLINK); + break; + case Opt_list_plink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_list(sb); + break; + + case Opt_dio: + au_opt_set(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + case Opt_nodio: + au_opt_clr(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + + case Opt_fhsm_sec: + au_fhsm_set(sbinfo, opt->fhsm_second); + break; + + case Opt_diropq_a: + au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + case Opt_diropq_w: + au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + + case Opt_warn_perm: + au_opt_set(sbinfo->si_mntflags, WARN_PERM); + break; + case Opt_nowarn_perm: + au_opt_clr(sbinfo->si_mntflags, WARN_PERM); + break; + + case Opt_verbose: + au_opt_set(sbinfo->si_mntflags, VERBOSE); + break; + case Opt_noverbose: + au_opt_clr(sbinfo->si_mntflags, VERBOSE); + break; + + case Opt_sum: + au_opt_set(sbinfo->si_mntflags, SUM); + break; + case Opt_wsum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_set(sbinfo->si_mntflags, SUM_W); + break; + case Opt_nosum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_clr(sbinfo->si_mntflags, SUM_W); + break; + + case Opt_wbr_create: + err = au_opt_wbr_create(sb, &opt->wbr_create); + break; + case Opt_wbr_copyup: + sbinfo->si_wbr_copyup = opt->wbr_copyup; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; + break; + + case Opt_dirwh: + sbinfo->si_dirwh = opt->dirwh; + break; + + case Opt_rdcache: + sbinfo->si_rdcache + = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); + break; + case Opt_rdblk: + sbinfo->si_rdblk = opt->rdblk; + break; + case Opt_rdblk_def: + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + break; + case Opt_rdhash: + sbinfo->si_rdhash = opt->rdhash; + break; + case Opt_rdhash_def: + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + break; + + case Opt_shwh: + au_opt_set(sbinfo->si_mntflags, SHWH); + break; + case Opt_noshwh: + au_opt_clr(sbinfo->si_mntflags, SHWH); + break; + + case Opt_dirperm1: + au_opt_set(sbinfo->si_mntflags, DIRPERM1); + break; + case Opt_nodirperm1: + au_opt_clr(sbinfo->si_mntflags, DIRPERM1); + break; + + case Opt_trunc_xino: + au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); + break; + case Opt_notrunc_xino: + au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); + break; + + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + err = au_xino_trunc(sb, opt->xino_itrunc.bindex, + /*idx_begin*/0); + if (!err) + err = 1; + break; + + case Opt_trunc_xib: + au_fset_opts(opts->flags, TRUNC_XIB); + break; + case Opt_notrunc_xib: + au_fclr_opts(opts->flags, TRUNC_XIB); + break; + + case Opt_dirren: + err = 1; + if (!au_opt_test(sbinfo->si_mntflags, DIRREN)) { + err = au_dr_opt_set(sb); + if (!err) + err = 1; + } + if (err == 1) + au_opt_set(sbinfo->si_mntflags, DIRREN); + break; + case Opt_nodirren: + err = 1; + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) { + err = au_dr_opt_clr(sb, au_ftest_opts(opts->flags, + DR_FLUSHED)); + if (!err) + err = 1; + } + if (err == 1) + au_opt_clr(sbinfo->si_mntflags, DIRREN); + break; + + case Opt_acl: + sb->s_flags |= SB_POSIXACL; + break; + case Opt_noacl: + sb->s_flags &= ~SB_POSIXACL; + break; + + default: + err = 0; + break; + } + + return err; +} + +/* + * returns tri-state. + * plus: processed without an error + * zero: unprocessed + * minus: error + */ +static int au_opt_br(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err, do_refresh; + + err = 0; + switch (opt->type) { + case Opt_append: + opt->add.bindex = au_sbbot(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + /* Always goto add, not fallthrough */ + case Opt_prepend: + opt->add.bindex = 0; + /* fallthrough */ + add: /* indented label */ + case Opt_add: + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_del: + case Opt_idel: + err = au_br_del(sb, &opt->del, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, TRUNC_XIB); + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_mod: + case Opt_imod: + err = au_br_mod(sb, &opt->mod, + au_ftest_opts(opts->flags, REMOUNT), + &do_refresh); + if (!err) { + err = 1; + if (do_refresh) + au_fset_opts(opts->flags, REFRESH); + } + break; + } + return err; +} + +static int au_opt_xino(struct super_block *sb, struct au_opt *opt, + struct au_opt_xino **opt_xino, + struct au_opts *opts) +{ + int err; + + err = 0; + switch (opt->type) { + case Opt_xino: + err = au_xino_set(sb, &opt->xino, + !!au_ftest_opts(opts->flags, REMOUNT)); + if (unlikely(err)) + break; + + *opt_xino = &opt->xino; + break; + + case Opt_noxino: + au_xino_clr(sb); + *opt_xino = (void *)-1; + break; + } + + return err; +} + +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending) +{ + int err, fhsm; + aufs_bindex_t bindex, bbot; + unsigned char do_plink, skip, do_free, can_no_dreval; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root, *dentry; + struct inode *dir, *h_dir; + struct au_sbinfo *sbinfo; + struct au_hinode *hdir; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); + + if (!(sb_flags & SB_RDONLY)) { + if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) + pr_warn("first branch should be rw\n"); + if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) + pr_warn_once("shwh should be used with ro\n"); + } + + if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) + && !au_opt_test(sbinfo->si_mntflags, XINO)) + pr_warn_once("udba=*notify requires xino\n"); + + if (au_opt_test(sbinfo->si_mntflags, DIRPERM1)) + pr_warn_once("dirperm1 breaks the protection" + " by the permission bits on the lower branch\n"); + + err = 0; + fhsm = 0; + root = sb->s_root; + dir = d_inode(root); + do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); + can_no_dreval = !!au_opt_test((sbinfo->si_mntflags | pending), + UDBA_NONE); + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + skip = 0; + h_dir = au_h_iptr(dir, bindex); + br = au_sbr(sb, bindex); + + if ((br->br_perm & AuBrAttr_ICEX) + && !h_dir->i_op->listxattr) + br->br_perm &= ~AuBrAttr_ICEX; +#if 0 /* untested */ + if ((br->br_perm & AuBrAttr_ICEX_SEC) + && (au_br_sb(br)->s_flags & SB_NOSEC)) + br->br_perm &= ~AuBrAttr_ICEX_SEC; +#endif + + do_free = 0; + wbr = br->br_wbr; + if (wbr) + wbr_wh_read_lock(wbr); + + if (!au_br_writable(br->br_perm)) { + do_free = !!wbr; + skip = (!wbr + || (!wbr->wbr_whbase + && !wbr->wbr_plink + && !wbr->wbr_orph)); + } else if (!au_br_wh_linkable(br->br_perm)) { + /* skip = (!br->br_whbase && !br->br_orph); */ + skip = (!wbr || !wbr->wbr_whbase); + if (skip && wbr) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } else { + /* skip = (br->br_whbase && br->br_ohph); */ + skip = (wbr && wbr->wbr_whbase); + if (skip) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } + if (wbr) + wbr_wh_read_unlock(wbr); + + if (can_no_dreval) { + dentry = br->br_path.dentry; + spin_lock(&dentry->d_lock); + if (dentry->d_flags & + (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)) + can_no_dreval = 0; + spin_unlock(&dentry->d_lock); + } + + if (au_br_fhsm(br->br_perm)) { + fhsm++; + AuDebugOn(!br->br_fhsm); + } + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + if (wbr) + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + if (wbr) + wbr_wh_write_unlock(wbr); + au_hn_inode_unlock(hdir); + + if (!err && do_free) { + au_kfree_rcu(wbr); + br->br_wbr = NULL; + } + } + + if (can_no_dreval) + au_fset_si(sbinfo, NO_DREVAL); + else + au_fclr_si(sbinfo, NO_DREVAL); + + if (fhsm >= 2) { + au_fset_si(sbinfo, FHSM); + for (bindex = bbot; bindex >= 0; bindex--) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) { + au_fhsm_set_bottom(sb, bindex); + break; + } + } + } else { + au_fclr_si(sbinfo, FHSM); + au_fhsm_set_bottom(sb, -1); + } + + return err; +} + +int au_opts_mount(struct super_block *sb, struct au_opts *opts) +{ + int err; + unsigned int tmp; + aufs_bindex_t bindex, bbot; + struct au_opt *opt; + struct au_opt_xino *opt_xino, xino; + struct au_sbinfo *sbinfo; + struct au_branch *br; + struct inode *dir; + + SiMustWriteLock(sb); + + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_simple(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + /* disable xino and udba temporary */ + sbinfo = au_sbi(sb); + tmp = sbinfo->si_mntflags; + au_opt_clr(sbinfo->si_mntflags, XINO); + au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); + + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_br(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + bbot = au_sbbot(sb); + if (unlikely(bbot < 0)) { + err = -EINVAL; + pr_err("no branches\n"); + goto out; + } + + if (au_opt_test(tmp, XINO)) + au_opt_set(sbinfo->si_mntflags, XINO); + opt = opts->opt; + while (!err && opt->type != Opt_tail) + err = au_opt_xino(sb, opt++, &opt_xino, opts); + if (unlikely(err)) + goto out; + + err = au_opts_verify(sb, sb->s_flags, tmp); + if (unlikely(err)) + goto out; + + /* restore xino */ + if (au_opt_test(tmp, XINO) && !opt_xino) { + xino.file = au_xino_def(sb); + err = PTR_ERR(xino.file); + if (IS_ERR(xino.file)) + goto out; + + err = au_xino_set(sb, &xino, /*remount*/0); + fput(xino.file); + if (unlikely(err)) + goto out; + } + + /* restore udba */ + tmp &= AuOptMask_UDBA; + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= tmp; + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(tmp, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + if (au_opt_test(tmp, UDBA_HNOTIFY)) { + dir = d_inode(sb->s_root); + au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); + } + +out: + return err; +} + +int au_opts_remount(struct super_block *sb, struct au_opts *opts) +{ + int err, rerr; + unsigned char no_dreval; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = au_dr_opt_flush(sb); + if (unlikely(err)) + goto out; + au_fset_opts(opts->flags, DR_FLUSHED); + + dir = d_inode(sb->s_root); + sbinfo = au_sbi(sb); + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) { + err = au_opt_simple(sb, opt, opts); + if (!err) + err = au_opt_br(sb, opt, opts); + if (!err) + err = au_opt_xino(sb, opt, &opt_xino, opts); + opt++; + } + if (err > 0) + err = 0; + AuTraceErr(err); + /* go on even err */ + + no_dreval = !!au_ftest_si(sbinfo, NO_DREVAL); + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + if (no_dreval != !!au_ftest_si(sbinfo, NO_DREVAL)) + au_fset_opts(opts->flags, REFRESH_IDOP); + + if (au_ftest_opts(opts->flags, TRUNC_XIB)) { + rerr = au_xib_trunc(sb); + if (unlikely(rerr && !err)) + err = rerr; + } + + /* will be handled by the caller */ + if (!au_ftest_opts(opts->flags, REFRESH) + && (opts->given_udba + || au_opt_test(sbinfo->si_mntflags, XINO) + || au_ftest_opts(opts->flags, REFRESH_IDOP) + )) + au_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- linux-5.8.0.orig/fs/aufs/opts.h +++ linux-5.8.0/fs/aufs/opts.h @@ -0,0 +1,225 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#ifndef __AUFS_OPTS_H__ +#define __AUFS_OPTS_H__ + +#ifdef __KERNEL__ + +#include + +struct file; + +/* ---------------------------------------------------------------------- */ + +/* mount flags */ +#define AuOpt_XINO 1 /* external inode number bitmap + and translation table */ +#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ +#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ +#define AuOpt_UDBA_REVAL (1 << 3) +#define AuOpt_UDBA_HNOTIFY (1 << 4) +#define AuOpt_SHWH (1 << 5) /* show whiteout */ +#define AuOpt_PLINK (1 << 6) /* pseudo-link */ +#define AuOpt_DIRPERM1 (1 << 7) /* ignore the lower dir's perm + bits */ +#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ +#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ +#define AuOpt_SUM_W (1 << 11) /* unimplemented */ +#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ +#define AuOpt_VERBOSE (1 << 13) /* print the cause of error */ +#define AuOpt_DIO (1 << 14) /* direct io */ +#define AuOpt_DIRREN (1 << 15) /* directory rename */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 0 +#endif +#ifndef CONFIG_AUFS_DIRREN +#undef AuOpt_DIRREN +#define AuOpt_DIRREN 0 +#endif +#ifndef CONFIG_AUFS_SHWH +#undef AuOpt_SHWH +#define AuOpt_SHWH 0 +#endif + +#define AuOpt_Def (AuOpt_XINO \ + | AuOpt_UDBA_REVAL \ + | AuOpt_PLINK \ + /* | AuOpt_DIRPERM1 */ \ + | AuOpt_WARN_PERM) +#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ + | AuOpt_UDBA_REVAL \ + | AuOpt_UDBA_HNOTIFY) + +#define au_opt_test(flags, name) (flags & AuOpt_##name) +#define au_opt_set(flags, name) do { \ + BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_set_udba(flags, name) do { \ + (flags) &= ~AuOptMask_UDBA; \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_clr(flags, name) do { \ + ((flags) &= ~AuOpt_##name); \ +} while (0) + +static inline unsigned int au_opts_plink(unsigned int mntflags) +{ +#ifdef CONFIG_PROC_FS + return mntflags; +#else + return mntflags & ~AuOpt_PLINK; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* policies to select one among multiple writable branches */ +enum { + AuWbrCreate_TDP, /* top down parent */ + AuWbrCreate_RR, /* round robin */ + AuWbrCreate_MFS, /* most free space */ + AuWbrCreate_MFSV, /* mfs with seconds */ + AuWbrCreate_MFSRR, /* mfs then rr */ + AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ + AuWbrCreate_TDMFS, /* top down regardless parent and mfs */ + AuWbrCreate_TDMFSV, /* top down regardless parent and mfs */ + AuWbrCreate_PMFS, /* parent and mfs */ + AuWbrCreate_PMFSV, /* parent and mfs with seconds */ + AuWbrCreate_PMFSRR, /* parent, mfs and round-robin */ + AuWbrCreate_PMFSRRV, /* plus seconds */ + + AuWbrCreate_Def = AuWbrCreate_TDP +}; + +enum { + AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_BUP, /* bottom up parent */ + AuWbrCopyup_BU, /* bottom up */ + + AuWbrCopyup_Def = AuWbrCopyup_TDP +}; + +/* ---------------------------------------------------------------------- */ + +struct au_opt_add { + aufs_bindex_t bindex; + char *pathname; + int perm; + struct path path; +}; + +struct au_opt_del { + char *pathname; + struct path h_path; +}; + +struct au_opt_mod { + char *path; + int perm; + struct dentry *h_root; +}; + +struct au_opt_xino { + char *path; + struct file *file; +}; + +struct au_opt_xino_itrunc { + aufs_bindex_t bindex; +}; + +struct au_opt_wbr_create { + int wbr_create; + int mfs_second; + unsigned long long mfsrr_watermark; +}; + +struct au_opt { + int type; + union { + struct au_opt_xino xino; + struct au_opt_xino_itrunc xino_itrunc; + struct au_opt_add add; + struct au_opt_del del; + struct au_opt_mod mod; + int dirwh; + int rdcache; + unsigned int rdblk; + unsigned int rdhash; + int udba; + struct au_opt_wbr_create wbr_create; + int wbr_copyup; + unsigned int fhsm_second; + }; +}; + +/* opts flags */ +#define AuOpts_REMOUNT 1 +#define AuOpts_REFRESH (1 << 1) +#define AuOpts_TRUNC_XIB (1 << 2) +#define AuOpts_REFRESH_DYAOP (1 << 3) +#define AuOpts_REFRESH_IDOP (1 << 4) +#define AuOpts_DR_FLUSHED (1 << 5) +#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) +#define au_fset_opts(flags, name) \ + do { (flags) |= AuOpts_##name; } while (0) +#define au_fclr_opts(flags, name) \ + do { (flags) &= ~AuOpts_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuOpts_DR_FLUSHED +#define AuOpts_DR_FLUSHED 0 +#endif + +struct au_opts { + struct au_opt *opt; + int max_opt; + + unsigned int given_udba; + unsigned int flags; + unsigned long sb_flags; +}; + +/* ---------------------------------------------------------------------- */ + +/* opts.c */ +void au_optstr_br_perm(au_br_perm_str_t *str, int perm); +const char *au_optstr_udba(int udba); +const char *au_optstr_wbr_copyup(int wbr_copyup); +const char *au_optstr_wbr_create(int wbr_create); + +void au_opts_free(struct au_opts *opts); +struct super_block; +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts); +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending); +int au_opts_mount(struct super_block *sb, struct au_opts *opts); +int au_opts_remount(struct super_block *sb, struct au_opts *opts); + +unsigned int au_opt_udba(struct super_block *sb); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ --- linux-5.8.0.orig/fs/aufs/plink.c +++ linux-5.8.0/fs/aufs/plink.c @@ -0,0 +1,516 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * pseudo-link + */ + +#include "aufs.h" + +/* + * the pseudo-link maintenance mode. + * during a user process maintains the pseudo-links, + * prohibit adding a new plink and branch manipulation. + * + * Flags + * NOPLM: + * For entry functions which will handle plink, and i_mutex is already held + * in VFS. + * They cannot wait and should return an error at once. + * Callers has to check the error. + * NOPLMW: + * For entry functions which will handle plink, but i_mutex is not held + * in VFS. + * They can wait the plink maintenance mode to finish. + * + * They behave like F_SETLK and F_SETLKW. + * If the caller never handle plink, then both flags are unnecessary. + */ + +int au_plink_maint(struct super_block *sb, int flags) +{ + int err; + pid_t pid, ppid; + struct task_struct *parent, *prev; + struct au_sbinfo *sbi; + + SiMustAnyLock(sb); + + err = 0; + if (!au_opt_test(au_mntflags(sb), PLINK)) + goto out; + + sbi = au_sbi(sb); + pid = sbi->si_plink_maint_pid; + if (!pid || pid == current->pid) + goto out; + + /* todo: it highly depends upon /sbin/mount.aufs */ + prev = NULL; + parent = current; + ppid = 0; + rcu_read_lock(); + while (1) { + parent = rcu_dereference(parent->real_parent); + if (parent == prev) + break; + ppid = task_pid_vnr(parent); + if (pid == ppid) { + rcu_read_unlock(); + goto out; + } + prev = parent; + } + rcu_read_unlock(); + + if (au_ftest_lock(flags, NOPLMW)) { + /* if there is no i_mutex lock in VFS, we don't need to wait */ + /* AuDebugOn(!lockdep_depth(current)); */ + while (sbi->si_plink_maint_pid) { + si_read_unlock(sb); + /* gave up wake_up_bit() */ + wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&sbi->si_nowait); + si_noflush_read_lock(sb); + } + } else if (au_ftest_lock(flags, NOPLM)) { + AuDbg("ppid %d, pid %d\n", ppid, pid); + err = -EAGAIN; + } + +out: + return err; +} + +void au_plink_maint_leave(struct au_sbinfo *sbinfo) +{ + spin_lock(&sbinfo->si_plink_maint_lock); + sbinfo->si_plink_maint_pid = 0; + spin_unlock(&sbinfo->si_plink_maint_lock); + wake_up_all(&sbinfo->si_plink_wq); +} + +int au_plink_maint_enter(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + err = 0; + sbinfo = au_sbi(sb); + /* make sure i am the only one in this fs */ + si_write_lock(sb, AuLock_FLUSH); + if (au_opt_test(au_mntflags(sb), PLINK)) { + spin_lock(&sbinfo->si_plink_maint_lock); + if (!sbinfo->si_plink_maint_pid) + sbinfo->si_plink_maint_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&sbinfo->si_plink_maint_lock); + } + si_write_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb) +{ + int i; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) + AuDbg("%lu\n", icntnr->vfs_inode.i_ino); + hlist_bl_unlock(hbl); + } +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found, i; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + + sbinfo = au_sbi(inode->i_sb); + AuRwMustAnyLock(&sbinfo->si_rwsem); + AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + found = 0; + i = au_plink_hash(inode->i_ino); + hbl = sbinfo->si_plink + i; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) + if (&icntnr->vfs_inode == inode) { + found = 1; + break; + } + hlist_bl_unlock(hbl); + return found; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generate a name for plink. + * the file will be stored under AUFS_WH_PLINKDIR. + */ +/* 20 is max digits length of ulong 64 */ +#define PLINK_NAME_LEN ((20 + 1) * 2) + +static int plink_name(char *name, int len, struct inode *inode, + aufs_bindex_t bindex) +{ + int rlen; + struct inode *h_inode; + + h_inode = au_h_iptr(inode, bindex); + rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); + return rlen; +} + +struct au_do_plink_lkup_args { + struct dentry **errp; + struct qstr *tgtname; + struct dentry *h_parent; + struct au_branch *br; +}; + +static struct dentry *au_do_plink_lkup(struct qstr *tgtname, + struct dentry *h_parent, + struct au_branch *br) +{ + struct dentry *h_dentry; + struct inode *h_inode; + + h_inode = d_inode(h_parent); + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD2); + h_dentry = vfsub_lkup_one(tgtname, h_parent); + inode_unlock_shared(h_inode); + return h_dentry; +} + +static void au_call_do_plink_lkup(void *args) +{ + struct au_do_plink_lkup_args *a = args; + *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br); +} + +/* lookup the plink-ed @inode under the branch at @bindex */ +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) +{ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + int wkq_err; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + br = au_sbr(inode->i_sb, bindex); + h_parent = br->br_wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct au_do_plink_lkup_args args = { + .errp = &h_dentry, + .tgtname = &tgtname, + .h_parent = h_parent, + .br = br + }; + + wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); + if (unlikely(wkq_err)) + h_dentry = ERR_PTR(wkq_err); + } else + h_dentry = au_do_plink_lkup(&tgtname, h_parent, br); + + return h_dentry; +} + +/* create a pseudo-link */ +static int do_whplink(struct qstr *tgt, struct dentry *h_parent, + struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + + h_dir = d_inode(h_parent); + inode_lock_nested(h_dir, AuLsc_I_CHILD2); +again: + h_path.dentry = vfsub_lkup_one(tgt, h_parent); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + /* wh.plink dir is not monitored */ + /* todo: is it really safe? */ + if (d_is_positive(h_path.dentry) + && d_inode(h_path.dentry) != d_inode(h_dentry)) { + delegated = NULL; + err = vfsub_unlink(h_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + dput(h_path.dentry); + h_path.dentry = NULL; + if (!err) + goto again; + } + if (!err && d_is_negative(h_path.dentry)) { + delegated = NULL; + err = vfsub_link(h_dentry, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_path.dentry); + +out: + inode_unlock(h_dir); + return err; +} + +struct do_whplink_args { + int *errp; + struct qstr *tgt; + struct dentry *h_parent; + struct dentry *h_dentry; + struct au_branch *br; +}; + +static void call_do_whplink(void *args) +{ + struct do_whplink_args *a = args; + *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br); +} + +static int whplink(struct dentry *h_dentry, struct inode *inode, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err, wkq_err; + struct au_wbr *wbr; + struct dentry *h_parent; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + wbr = au_sbr(inode->i_sb, bindex)->br_wbr; + h_parent = wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + /* always superio. */ + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct do_whplink_args args = { + .errp = &err, + .tgt = &tgtname, + .h_parent = h_parent, + .h_dentry = h_dentry, + .br = br + }; + wkq_err = au_wkq_wait(call_do_whplink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } else + err = do_whplink(&tgtname, h_parent, h_dentry, br); + + return err; +} + +/* + * create a new pseudo-link for @h_dentry on @bindex. + * the linked inode is held in aufs @inode. + */ +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + int found, err, cnt, i; + + sb = inode->i_sb; + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + found = au_plink_test(inode); + if (found) + return; + + i = au_plink_hash(inode->i_ino); + hbl = sbinfo->si_plink + i; + au_igrab(inode); + + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) { + if (&icntnr->vfs_inode == inode) { + found = 1; + break; + } + } + if (!found) { + icntnr = container_of(inode, struct au_icntnr, vfs_inode); + hlist_bl_add_head(&icntnr->plink, hbl); + } + hlist_bl_unlock(hbl); + if (!found) { + cnt = au_hbl_count(hbl); +#define msg "unexpectedly unbalanced or too many pseudo-links" + if (cnt > AUFS_PLINK_WARN) + AuWarn1(msg ", %d\n", cnt); +#undef msg + err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex)); + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + au_hbl_del(&icntnr->plink, hbl); + iput(&icntnr->vfs_inode); + } + } else + iput(&icntnr->vfs_inode); +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + int i, warned; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_icntnr *icntnr; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no spin_lock since sbinfo is write-locked */ + warned = 0; + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + if (!warned && verbose && !hlist_bl_empty(hbl)) { + pr_warn("pseudo-link is not flushed"); + warned = 1; + } + hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) + iput(&icntnr->vfs_inode); + INIT_HLIST_BL_HEAD(hbl); + } +} + +void au_plink_clean(struct super_block *sb, int verbose) +{ + struct dentry *root; + + root = sb->s_root; + aufs_write_lock(root); + if (au_opt_test(au_mntflags(sb), PLINK)) + au_plink_put(sb, verbose); + aufs_write_unlock(root); +} + +static int au_plink_do_half_refresh(struct inode *inode, aufs_bindex_t br_id) +{ + int do_put; + aufs_bindex_t btop, bbot, bindex; + + do_put = 0; + btop = au_ibtop(inode); + bbot = au_ibbot(inode); + if (btop >= 0) { + for (bindex = btop; bindex <= bbot; bindex++) { + if (!au_h_iptr(inode, bindex) + || au_ii_br_id(inode, bindex) != br_id) + continue; + au_set_h_iptr(inode, bindex, NULL, 0); + do_put = 1; + break; + } + if (do_put) + for (bindex = btop; bindex <= bbot; bindex++) + if (au_h_iptr(inode, bindex)) { + do_put = 0; + break; + } + } else + do_put = 1; + + return do_put; +} + +/* free the plinks on a branch specified by @br_id */ +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) +{ + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_icntnr *icntnr; + struct inode *inode; + int i, do_put; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no bit_lock since sbinfo is write-locked */ + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) { + inode = au_igrab(&icntnr->vfs_inode); + ii_write_lock_child(inode); + do_put = au_plink_do_half_refresh(inode, br_id); + if (do_put) { + hlist_bl_del(&icntnr->plink); + iput(inode); + } + ii_write_unlock(inode); + iput(inode); + } + } +} --- linux-5.8.0.orig/fs/aufs/poll.c +++ linux-5.8.0/fs/aufs/poll.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * poll operation + * There is only one filesystem which implements ->poll operation, currently. + */ + +#include "aufs.h" + +__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt) +{ + __poll_t mask; + struct file *h_file; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = EPOLLERR /* | EPOLLIN | EPOLLOUT */; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + if (IS_ERR(h_file)) { + AuDbg("h_file %ld\n", PTR_ERR(h_file)); + goto out; + } + + mask = vfs_poll(h_file, pt); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + if (mask & EPOLLERR) + AuDbg("mask 0x%x\n", mask); + return mask; +} --- linux-5.8.0.orig/fs/aufs/posix_acl.c +++ linux-5.8.0/fs/aufs/posix_acl.c @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * posix acl operations + */ + +#include +#include "aufs.h" + +struct posix_acl *aufs_get_acl(struct inode *inode, int type) +{ + struct posix_acl *acl; + int err; + aufs_bindex_t bindex; + struct inode *h_inode; + struct super_block *sb; + + acl = NULL; + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); + if (!(sb->s_flags & SB_POSIXACL)) + goto out; + + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode + || ((h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)))) { + err = au_busy_or_stale(); + acl = ERR_PTR(err); + goto out; + } + + /* always topmost only */ + acl = get_acl(h_inode, type); + if (IS_ERR(acl)) + forget_cached_acl(inode, type); + else + set_cached_acl(inode, type, acl); + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + + AuTraceErrPtr(acl); + return acl; +} + +int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type) +{ + int err; + ssize_t ssz; + struct dentry *dentry; + struct au_sxattr arg = { + .type = AU_ACL_SET, + .u.acl_set = { + .acl = acl, + .type = type + }, + }; + + IMustLock(inode); + + if (inode->i_ino == AUFS_ROOT_INO) + dentry = dget(inode->i_sb->s_root); + else { + dentry = d_find_alias(inode); + if (!dentry) + dentry = d_find_any_alias(inode); + if (!dentry) { + pr_warn("cannot handle this inode, " + "please report to aufs-users ML\n"); + err = -ENOENT; + goto out; + } + } + + ssz = au_sxattr(dentry, inode, &arg); + /* forget even it if succeeds since the branch might set differently */ + forget_cached_acl(inode, type); + dput(dentry); + err = ssz; + if (ssz >= 0) + err = 0; + +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/procfs.c +++ linux-5.8.0/fs/aufs/procfs.c @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * procfs interfaces + */ + +#include +#include "aufs.h" + +static int au_procfs_plm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) { + au_plink_maint_leave(sbinfo); + kobject_put(&sbinfo->si_kobj); + } + + return 0; +} + +static void au_procfs_plm_write_clean(struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) + au_plink_clean(sbinfo->si_sb, /*verbose*/0); +} + +static int au_procfs_plm_write_si(struct file *file, unsigned long id) +{ + int err; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct hlist_bl_node *pos; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + hlist_bl_lock(&au_sbilist); + hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) + if (id == sysaufs_si_id(sbinfo)) { + if (kobject_get_unless_zero(&sbinfo->si_kobj)) + sb = sbinfo->si_sb; + break; + } + hlist_bl_unlock(&au_sbilist); + + err = -EINVAL; + if (unlikely(!sb)) + goto out; + + err = au_plink_maint_enter(sb); + if (!err) + /* keep kobject_get() */ + file->private_data = sbinfo; + else + kobject_put(&sbinfo->si_kobj); +out: + return err; +} + +/* + * Accept a valid "si=xxxx" only. + * Once it is accepted successfully, accept "clean" too. + */ +static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + unsigned long id; + /* last newline is allowed */ + char buf[3 + sizeof(unsigned long) * 2 + 1]; + + err = -EACCES; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(count > sizeof(buf))) + goto out; + + err = copy_from_user(buf, ubuf, count); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + buf[count] = 0; + + err = -EINVAL; + if (!strcmp("clean", buf)) { + au_procfs_plm_write_clean(file); + goto out_success; + } else if (unlikely(strncmp("si=", buf, 3))) + goto out; + + err = kstrtoul(buf + 3, 16, &id); + if (unlikely(err)) + goto out; + + err = au_procfs_plm_write_si(file, id); + if (unlikely(err)) + goto out; + +out_success: + err = count; /* success */ +out: + return err; +} + +static const struct proc_ops au_procfs_plm_op = { + .proc_write = au_procfs_plm_write, + .proc_release = au_procfs_plm_release +}; + +/* ---------------------------------------------------------------------- */ + +static struct proc_dir_entry *au_procfs_dir; + +void au_procfs_fin(void) +{ + remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +} + +int __init au_procfs_init(void) +{ + int err; + struct proc_dir_entry *entry; + + err = -ENOMEM; + au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); + if (unlikely(!au_procfs_dir)) + goto out; + + entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | 0200, + au_procfs_dir, &au_procfs_plm_op); + if (unlikely(!entry)) + goto out_dir; + + err = 0; + goto out; /* success */ + + +out_dir: + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/rdu.c +++ linux-5.8.0/fs/aufs/rdu.c @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * readdir in userspace. + */ + +#include +#include +#include +#include "aufs.h" + +/* bits for struct aufs_rdu.flags */ +#define AuRdu_CALLED 1 +#define AuRdu_CONT (1 << 1) +#define AuRdu_FULL (1 << 2) +#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) +#define au_fset_rdu(flags, name) \ + do { (flags) |= AuRdu_##name; } while (0) +#define au_fclr_rdu(flags, name) \ + do { (flags) &= ~AuRdu_##name; } while (0) + +struct au_rdu_arg { + struct dir_context ctx; + struct aufs_rdu *rdu; + union au_rdu_ent_ul ent; + unsigned long end; + + struct super_block *sb; + int err; +}; + +static int au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, + loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = container_of(ctx, struct au_rdu_arg, ctx); + struct aufs_rdu *rdu = arg->rdu; + struct au_rdu_ent ent; + + err = 0; + arg->err = 0; + au_fset_rdu(rdu->cookie.flags, CALLED); + len = au_rdu_len(nlen); + if (arg->ent.ul + len < arg->end) { + ent.ino = h_ino; + ent.bindex = rdu->cookie.bindex; + ent.type = d_type; + ent.nlen = nlen; + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + ent.type = DT_UNKNOWN; + + /* unnecessary to support mmap_sem since this is a dir */ + err = -EFAULT; + if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) + goto out; + if (copy_to_user(arg->ent.e->name, name, nlen)) + goto out; + /* the terminating NULL */ + if (__put_user(0, arg->ent.e->name + nlen)) + goto out; + err = 0; + /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ + arg->ent.ul += len; + rdu->rent++; + } else { + err = -EFAULT; + au_fset_rdu(rdu->cookie.flags, FULL); + rdu->full = 1; + rdu->tail = arg->ent; + } + +out: + /* AuTraceErr(err); */ + return err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) +{ + int err; + loff_t offset; + struct au_rdu_cookie *cookie = &arg->rdu->cookie; + + /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ + offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); + err = offset; + if (unlikely(offset != cookie->h_pos)) + goto out; + + err = 0; + do { + arg->err = 0; + au_fclr_rdu(cookie->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err + && au_ftest_rdu(cookie->flags, CALLED) + && !au_ftest_rdu(cookie->flags, FULL)); + cookie->h_pos = h_file->f_pos; + +out: + AuTraceErr(err); + return err; +} + +static int au_rdu(struct file *file, struct aufs_rdu *rdu) +{ + int err; + aufs_bindex_t bbot; + struct au_rdu_arg arg = { + .ctx = { + .actor = au_rdu_fill + } + }; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct au_rdu_cookie *cookie = &rdu->cookie; + + /* VERIFY_WRITE */ + err = !access_ok(rdu->ent.e, rdu->sz); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu->rent = 0; + rdu->tail = rdu->ent; + rdu->full = 0; + arg.rdu = rdu; + arg.ent = rdu->ent; + arg.end = arg.ent.ul; + arg.end += rdu->sz; + + err = -ENOTDIR; + if (unlikely(!file->f_op->iterate && !file->f_op->iterate_shared)) + goto out; + + err = security_file_permission(file, MAY_READ); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + inode = d_inode(dentry); + inode_lock_shared(inode); + + arg.sb = inode->i_sb; + err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_si; + /* todo: reval? */ + fi_read_lock(file); + + err = -EAGAIN; + if (unlikely(au_ftest_rdu(cookie->flags, CONT) + && cookie->generation != au_figen(file))) + goto out_unlock; + + err = 0; + if (!rdu->blk) { + rdu->blk = au_sbi(arg.sb)->si_rdblk; + if (!rdu->blk) + rdu->blk = au_dir_size(file, /*dentry*/NULL); + } + bbot = au_fbtop(file); + if (cookie->bindex < bbot) + cookie->bindex = bbot; + bbot = au_fbbot_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bbot); */ + for (; !err && cookie->bindex <= bbot; + cookie->bindex++, cookie->h_pos = 0) { + h_file = au_hf_dir(file, cookie->bindex); + if (!h_file) + continue; + + au_fclr_rdu(cookie->flags, FULL); + err = au_rdu_do(h_file, &arg); + AuTraceErr(err); + if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) + break; + } + AuDbg("rent %llu\n", rdu->rent); + + if (!err && !au_ftest_rdu(cookie->flags, CONT)) { + rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); + au_fset_rdu(cookie->flags, CONT); + cookie->generation = au_figen(file); + } + + ii_read_lock_child(inode); + fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibtop(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + inode_unlock_shared(inode); +out: + AuTraceErr(err); + return err; +} + +static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) +{ + int err; + ino_t ino; + unsigned long long nent; + union au_rdu_ent_ul *u; + struct au_rdu_ent ent; + struct super_block *sb; + + err = 0; + nent = rdu->nent; + u = &rdu->ent; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + while (nent-- > 0) { + /* unnecessary to support mmap_sem since this is a dir */ + err = copy_from_user(&ent, u->e, sizeof(ent)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(&u->e->ino, sizeof(ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + + /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ + if (!ent.wh) + err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); + else + err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, + &ino); + if (unlikely(err)) { + AuTraceErr(err); + break; + } + + err = __put_user(ino, &u->e->ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + u->ul += au_rdu_len(ent.nlen); + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_rdu_verify(struct aufs_rdu *rdu) +{ + AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " + "%llu, b%d, 0x%x, g%u}\n", + rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], + rdu->blk, + rdu->rent, rdu->shwh, rdu->full, + rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, + rdu->cookie.generation); + + if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) + return 0; + + AuDbg("%u:%u\n", + rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); + return -EINVAL; +} + +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = (void __user *)arg; + + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = compat_ptr(arg); + + /* todo: get_user()? */ + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu.ent.e = compat_ptr(rdu.ent.ul); + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + rdu.ent.ul = ptr_to_compat(rdu.ent.e); + rdu.tail.ul = ptr_to_compat(rdu.tail.e); + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} +#endif --- linux-5.8.0.orig/fs/aufs/rwsem.h +++ linux-5.8.0/fs/aufs/rwsem.h @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple read-write semaphore wrappers + */ + +#ifndef __AUFS_RWSEM_H__ +#define __AUFS_RWSEM_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +/* in the future, the name 'au_rwsem' will be totally gone */ +#define au_rwsem rw_semaphore + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(rwsem_is_contended(rw)) +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(!lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held_type(rw, 1)) +#define AuRwMustWriteLock(rw) AuDebugOn(!lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held_type(rw, 0)) +#define AuRwMustAnyLock(rw) AuDebugOn(!lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held(rw)) +#define AuRwDestroy(rw) AuDebugOn(!lockdep_recursing(current) \ + && debug_locks \ + && lockdep_is_held(rw)) + +#define au_rw_init(rw) init_rwsem(rw) + +#define au_rw_init_wlock(rw) do { \ + au_rw_init(rw); \ + down_write(rw); \ + } while (0) + +#define au_rw_init_wlock_nested(rw, lsc) do { \ + au_rw_init(rw); \ + down_write_nested(rw, lsc); \ + } while (0) + +#define au_rw_read_lock(rw) down_read(rw) +#define au_rw_read_lock_nested(rw, lsc) down_read_nested(rw, lsc) +#define au_rw_read_unlock(rw) up_read(rw) +#define au_rw_dgrade_lock(rw) downgrade_write(rw) +#define au_rw_write_lock(rw) down_write(rw) +#define au_rw_write_lock_nested(rw, lsc) down_write_nested(rw, lsc) +#define au_rw_write_unlock(rw) up_write(rw) +/* why is not _nested version defined? */ +#define au_rw_read_trylock(rw) down_read_trylock(rw) +#define au_rw_write_trylock(rw) down_write_trylock(rw) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- linux-5.8.0.orig/fs/aufs/sbinfo.c +++ linux-5.8.0/fs/aufs/sbinfo.c @@ -0,0 +1,314 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * superblock private data + */ + +#include +#include "aufs.h" + +/* + * they are necessary regardless sysfs is disabled. + */ +void au_si_free(struct kobject *kobj) +{ + int i; + struct au_sbinfo *sbinfo; + char *locked __maybe_unused; /* debug only */ + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + for (i = 0; i < AuPlink_NHASH; i++) + AuDebugOn(!hlist_bl_empty(sbinfo->si_plink + i)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + AuLCntZero(au_lcnt_read(&sbinfo->si_ninodes, /*do_rev*/0)); + au_lcnt_fin(&sbinfo->si_ninodes, /*do_sync*/0); + AuLCntZero(au_lcnt_read(&sbinfo->si_nfiles, /*do_rev*/0)); + au_lcnt_fin(&sbinfo->si_nfiles, /*do_sync*/0); + + dbgaufs_si_fin(sbinfo); + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + au_kfree_try_rcu(sbinfo->si_branch); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + au_lcnt_wait_for_fin(&sbinfo->si_ninodes); + /* si_nfiles is waited too */ + au_kfree_rcu(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err, i; + struct au_sbinfo *sbinfo; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_sbinfo; + + err = sysaufs_si_init(sbinfo); + if (!err) { + dbgaufs_si_null(sbinfo); + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + + au_lcnt_init(&sbinfo->si_ninodes, /*release*/NULL); + au_lcnt_init(&sbinfo->si_nfiles, /*release*/NULL); + + sbinfo->si_bbot = -1; + sbinfo->si_last_br_id = AUFS_BRANCH_MAX / 2; + + sbinfo->si_wbr_copyup = AuWbrCopyup_Def; + sbinfo->si_wbr_create = AuWbrCreate_Def; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; + + au_fhsm_init(sbinfo); + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + + sbinfo->si_xino_jiffy = jiffies; + sbinfo->si_xino_expire + = msecs_to_jiffies(AUFS_XINO_DEF_SEC * MSEC_PER_SEC); + mutex_init(&sbinfo->si_xib_mtx); + /* leave si_xib_last_pindex and si_xib_next_bit */ + + INIT_HLIST_BL_HEAD(&sbinfo->si_aopen); + + sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + sbinfo->si_dirwh = AUFS_DIRWH_DEF; + + for (i = 0; i < AuPlink_NHASH; i++) + INIT_HLIST_BL_HEAD(sbinfo->si_plink + i); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + INIT_HLIST_BL_HEAD(&sbinfo->si_files); + + /* with getattr by default */ + sbinfo->si_iop_array = aufs_iop; + + /* leave other members for sysaufs and si_mnt. */ + sbinfo->si_sb = sb; + sb->s_fs_info = sbinfo; + si_pid_set(sb); + return 0; /* success */ + +out_br: + au_kfree_try_rcu(sbinfo->si_branch); +out_sbinfo: + au_kfree_rcu(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bbot + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS, + may_shrink); + if (brp) { + sbinfo->si_branch = brp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_sigen_inc(struct super_block *sb) +{ + unsigned int gen; + struct inode *inode; + + SiMustWriteLock(sb); + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); + inode = d_inode(sb->s_root); + au_update_iigen(inode, /*half*/0); + inode_inc_iversion(inode); + return gen; +} + +aufs_bindex_t au_new_br_id(struct super_block *sb) +{ + aufs_bindex_t br_id; + int i; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + for (i = 0; i <= AUFS_BRANCH_MAX; i++) { + br_id = ++sbinfo->si_last_br_id; + AuDebugOn(br_id < 0); + if (br_id && au_br_index(sb, br_id) < 0) + return br_id; + } + + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* it is ok that new 'nwt' tasks are appended while we are sleeping */ +int si_read_lock(struct super_block *sb, int flags) +{ + int err; + + err = 0; + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_read_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_read_unlock(sb); + + return err; +} + +int si_write_lock(struct super_block *sb, int flags) +{ + int err; + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_write_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_write_unlock(sb); + + return err; +} + +/* dentry and super_block lock. call at entry point */ +int aufs_read_lock(struct dentry *dentry, int flags) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + if (au_ftest_lock(flags, DW)) + di_write_lock_child(dentry); + else + di_read_lock_child(dentry, flags); + + if (au_ftest_lock(flags, GEN)) { + err = au_digen_test(dentry, au_sigen(sb)); + if (!au_opt_test(au_mntflags(sb), UDBA_NONE)) + AuDebugOn(!err && au_dbrange_test(dentry)); + else if (!err) + err = au_dbrange_test(dentry); + if (unlikely(err)) + aufs_read_unlock(dentry, flags); + } + +out: + return err; +} + +void aufs_read_unlock(struct dentry *dentry, int flags) +{ + if (au_ftest_lock(flags, DW)) + di_write_unlock(dentry); + else + di_read_unlock(dentry, flags); + si_read_unlock(dentry->d_sb); +} + +void aufs_write_lock(struct dentry *dentry) +{ + si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); + di_write_lock_child(dentry); +} + +void aufs_write_unlock(struct dentry *dentry) +{ + di_write_unlock(dentry); + si_write_unlock(dentry->d_sb); +} + +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) +{ + int err; + unsigned int sigen; + struct super_block *sb; + + sb = d1->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIRS)); + + if (au_ftest_lock(flags, GEN)) { + sigen = au_sigen(sb); + err = au_digen_test(d1, sigen); + AuDebugOn(!err && au_dbrange_test(d1)); + if (!err) { + err = au_digen_test(d2, sigen); + AuDebugOn(!err && au_dbrange_test(d2)); + } + if (unlikely(err)) + aufs_read_and_write_unlock2(d1, d2); + } + +out: + return err; +} + +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} --- linux-5.8.0.orig/fs/aufs/super.c +++ linux-5.8.0/fs/aufs/super.c @@ -0,0 +1,1050 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount and super_block operations + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +/* + * super_operations + */ +static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) +{ + struct au_icntnr *c; + + c = au_cache_alloc_icntnr(); + if (c) { + au_icntnr_init(c); + inode_set_iversion(&c->vfs_inode, 1); /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode(struct inode *inode) +{ + if (!au_is_bad_inode(inode)) + au_iinfo_fin(inode); +} + +static void aufs_free_inode(struct inode *inode) +{ + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +struct inode *au_iget_locked(struct super_block *sb, ino_t ino) +{ + struct inode *inode; + int err; + + inode = iget_locked(sb, ino); + if (unlikely(!inode)) { + inode = ERR_PTR(-ENOMEM); + goto out; + } + if (!(inode->i_state & I_NEW)) + goto out; + + err = au_xigen_new(inode); + if (!err) + err = au_iinfo_init(inode); + if (!err) + inode_inc_iversion(inode); + else { + iget_failed(inode); + inode = ERR_PTR(err); + } + +out: + /* never return NULL */ + AuDebugOn(!inode); + AuTraceErrPtr(inode); + return inode; +} + +/* lock free root dinfo */ +static int au_show_brs(struct seq_file *seq, struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + au_br_perm_str_t perm; + + err = 0; + bbot = au_sbbot(sb); + bindex = 0; + hdp = au_hdentry(au_di(sb->s_root), bindex); + for (; !err && bindex <= bbot; bindex++, hdp++) { + br = au_sbr(sb, bindex); + path.mnt = au_br_mnt(br); + path.dentry = hdp->hd_dentry; + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s", perm.a); + if (bindex != bbot) + seq_putc(seq, ':'); + } + } + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +static void au_gen_fmt(char *fmt, int len __maybe_unused, const char *pat, + const char *append) +{ + char *p; + + p = fmt; + while (*pat != ':') + *p++ = *pat++; + *p++ = *pat++; + strcpy(p, append); + AuDebugOn(strlen(fmt) >= len); +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + char fmt[32]; + struct au_wbr_mfs *mfs; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_puts(m, ",create="); + pat = au_optstr_wbr_create(v); + mfs = &sbinfo->si_wbr_mfs; + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_puts(m, pat); + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_PMFSRR: + au_gen_fmt(fmt, sizeof(fmt), pat, "%llu"); + seq_printf(m, fmt, mfs->mfsrr_watermark); + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + au_gen_fmt(fmt, sizeof(fmt), pat, "%lu"); + seq_printf(m, fmt, + jiffies_to_msecs(mfs->mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + au_gen_fmt(fmt, sizeof(fmt), pat, "%llu:%lu"); + seq_printf(m, fmt, mfs->mfsrr_watermark, + jiffies_to_msecs(mfs->mfs_expire) / MSEC_PER_SEC); + break; + default: + BUG(); + } +} + +static int au_show_xino(struct seq_file *seq, struct super_block *sb) +{ +#ifdef CONFIG_SYSFS + return 0; +#else + int err; + const int len = sizeof(AUFS_XINO_FNAME) - 1; + aufs_bindex_t bindex, brid; + struct qstr *name; + struct file *f; + struct dentry *d, *h_root; + struct au_branch *br; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + err = 0; + f = au_sbi(sb)->si_xib; + if (!f) + goto out; + + /* stop printing the default xino path on the first writable branch */ + h_root = NULL; + bindex = au_xi_root(sb, f->f_path.dentry); + if (bindex >= 0) { + br = au_sbr_sb(sb, bindex); + h_root = au_br_dentry(br); + } + + d = f->f_path.dentry; + name = &d->d_name; + /* safe ->d_parent because the file is unlinked */ + if (d->d_parent == h_root + && name->len == len + && !memcmp(name->name, AUFS_XINO_FNAME, len)) + goto out; + + seq_puts(seq, ",xino="); + err = au_xino_path(seq, f); + +out: + return err; +#endif +} + +/* seq_file will re-call me in case of too long string */ +static int aufs_show_options(struct seq_file *m, struct dentry *dentry) +{ + int err; + unsigned int mnt_flags, v; + struct super_block *sb; + struct au_sbinfo *sbinfo; + +#define AuBool(name, str) do { \ + v = au_opt_test(mnt_flags, name); \ + if (v != au_opt_test(AuOpt_Def, name)) \ + seq_printf(m, ",%s" #str, v ? "" : "no"); \ +} while (0) + +#define AuStr(name, str) do { \ + v = mnt_flags & AuOptMask_##name; \ + if (v != (AuOpt_Def & AuOptMask_##name)) \ + seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ +} while (0) + +#define AuUInt(name, str, val) do { \ + if (val != AUFS_##name##_DEF) \ + seq_printf(m, "," #str "=%u", val); \ +} while (0) + + sb = dentry->d_sb; + if (sb->s_flags & SB_POSIXACL) + seq_puts(m, ",acl"); +#if 0 /* reserved for future use */ + if (sb->s_flags & SB_I_VERSION) + seq_puts(m, ",i_version"); +#endif + + /* lock free root dinfo */ + si_noflush_read_lock(sb); + sbinfo = au_sbi(sb); + seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); + + mnt_flags = au_mntflags(sb); + if (au_opt_test(mnt_flags, XINO)) { + err = au_show_xino(m, sb); + if (unlikely(err)) + goto out; + } else + seq_puts(m, ",noxino"); + + AuBool(TRUNC_XINO, trunc_xino); + AuStr(UDBA, udba); + AuBool(SHWH, shwh); + AuBool(PLINK, plink); + AuBool(DIO, dio); + AuBool(DIRPERM1, dirperm1); + + v = sbinfo->si_wbr_create; + if (v != AuWbrCreate_Def) + au_show_wbr_create(m, v, sbinfo); + + v = sbinfo->si_wbr_copyup; + if (v != AuWbrCopyup_Def) + seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); + + v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); + if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) + seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); + + AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); + + v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; + AuUInt(RDCACHE, rdcache, v); + + AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); + AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); + + au_fhsm_show(m, sbinfo); + + AuBool(DIRREN, dirren); + AuBool(SUM, sum); + /* AuBool(SUM_W, wsum); */ + AuBool(WARN_PERM, warn_perm); + AuBool(VERBOSE, verbose); + +out: + /* be sure to print "br:" last */ + if (!sysaufs_brs) { + seq_puts(m, ",br:"); + au_show_brs(m, sb); + } + si_read_unlock(sb); + return 0; + +#undef AuBool +#undef AuStr +#undef AuUInt +} + +/* ---------------------------------------------------------------------- */ + +/* sum mode which returns the summation for statfs(2) */ + +static u64 au_add_till_max(u64 a, u64 b) +{ + u64 old; + + old = a; + a += b; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static u64 au_mul_till_max(u64 a, long mul) +{ + u64 old; + + old = a; + a *= mul; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) +{ + int err; + long bsize, factor; + u64 blocks, bfree, bavail, files, ffree; + aufs_bindex_t bbot, bindex, i; + unsigned char shared; + struct path h_path; + struct super_block *h_sb; + + err = 0; + bsize = LONG_MAX; + files = 0; + ffree = 0; + blocks = 0; + bfree = 0; + bavail = 0; + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + h_path.mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path.mnt->mnt_sb; + shared = 0; + for (i = 0; !shared && i < bindex; i++) + shared = (au_sbr_sb(sb, i) == h_sb); + if (shared) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + if (unlikely(err)) + goto out; + + if (bsize > buf->f_bsize) { + /* + * we will reduce bsize, so we have to expand blocks + * etc. to match them again + */ + factor = (bsize / buf->f_bsize); + blocks = au_mul_till_max(blocks, factor); + bfree = au_mul_till_max(bfree, factor); + bavail = au_mul_till_max(bavail, factor); + bsize = buf->f_bsize; + } + + factor = (buf->f_bsize / bsize); + blocks = au_add_till_max(blocks, + au_mul_till_max(buf->f_blocks, factor)); + bfree = au_add_till_max(bfree, + au_mul_till_max(buf->f_bfree, factor)); + bavail = au_add_till_max(bavail, + au_mul_till_max(buf->f_bavail, factor)); + files = au_add_till_max(files, buf->f_files); + ffree = au_add_till_max(ffree, buf->f_ffree); + } + + buf->f_bsize = bsize; + buf->f_blocks = blocks; + buf->f_bfree = bfree; + buf->f_bavail = bavail; + buf->f_files = files; + buf->f_ffree = ffree; + buf->f_frsize = 0; + +out: + return err; +} + +static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + int err; + struct path h_path; + struct super_block *sb; + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (!au_opt_test(au_mntflags(sb), SUM)) { + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_sbr_mnt(sb, 0); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + } else + err = au_statfs_sum(sb, buf); + si_read_unlock(sb); + + if (!err) { + buf->f_type = AUFS_SUPER_MAGIC; + buf->f_namelen = AUFS_MAX_NAMELEN; + memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); + } + /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_sync_fs(struct super_block *sb, int wait) +{ + int err, e; + aufs_bindex_t bbot, bindex; + struct au_branch *br; + struct super_block *h_sb; + + err = 0; + si_noflush_read_lock(sb); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_writable(br->br_perm)) + continue; + + h_sb = au_sbr_sb(sb, bindex); + e = vfsub_sync_filesystem(h_sb, wait); + if (unlikely(e && !err)) + err = e; + /* go on even if an error happens */ + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg) +{ + void *array; + unsigned long long n, sz; + + array = NULL; + n = 0; + if (!*hint) + goto out; + + if (*hint > ULLONG_MAX / sizeof(array)) { + array = ERR_PTR(-EMFILE); + pr_err("hint %llu\n", *hint); + goto out; + } + + sz = sizeof(array) * *hint; + array = kzalloc(sz, GFP_NOFS); + if (unlikely(!array)) + array = vzalloc(sz); + if (unlikely(!array)) { + array = ERR_PTR(-ENOMEM); + goto out; + } + + n = cb(sb, array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct inode **p, *inode; + struct list_head *head; + + n = 0; + p = a; + head = arg; + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!au_is_bad_inode(inode) + && au_ii(inode)->ii_btop >= 0) { + spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + au_igrab(inode); + *p++ = inode; + n++; + AuDebugOn(n > max); + } + spin_unlock(&inode->i_lock); + } + } + spin_unlock(&sb->s_inode_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + struct au_sbinfo *sbi; + + sbi = au_sbi(sb); + *max = au_lcnt_read(&sbi->si_ninodes, /*do_rev*/1); + return au_array_alloc(max, au_iarray_cb, sb, &sb->s_inodes); +} + +void au_iarray_free(struct inode **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + iput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * refresh dentry and inode at remount time. + */ +/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ +static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, + struct dentry *parent) +{ + int err; + + di_write_lock_child(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + if (!err && dir_flags) + au_hn_reset(d_inode(dentry), dir_flags); + di_read_unlock(parent, AuLock_IR); + di_write_unlock(dentry); + + return err; +} + +static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, + struct au_sbinfo *sbinfo, + const unsigned int dir_flags, unsigned int do_idop) +{ + int err; + struct dentry *parent; + + err = 0; + parent = dget_parent(dentry); + if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { + if (d_really_is_positive(dentry)) { + if (!d_is_dir(dentry)) + err = au_do_refresh(dentry, /*dir_flags*/0, + parent); + else { + err = au_do_refresh(dentry, dir_flags, parent); + if (unlikely(err)) + au_fset_si(sbinfo, FAILED_REFRESH_DIR); + } + } else + err = au_do_refresh(dentry, /*dir_flags*/0, parent); + AuDbgDentry(dentry); + } + dput(parent); + + if (!err) { + if (do_idop) + au_refresh_dop(dentry, /*force_reval*/0); + } else + au_refresh_dop(dentry, /*force_reval*/1); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb, unsigned int do_idop) +{ + int err, i, j, ndentry, e; + unsigned int sigen; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *d; + struct au_sbinfo *sbinfo; + struct dentry *root = sb->s_root; + const unsigned int dir_flags = au_hi_flags(d_inode(root), /*isdir*/1); + + if (do_idop) + au_refresh_dop(root, /*force_reval*/0); + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + sigen = au_sigen(sb); + sbinfo = au_sbi(sb); + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + e = au_do_refresh_d(d, sigen, sbinfo, dir_flags, + do_idop); + if (unlikely(e && !err)) + err = e; + /* go on even err */ + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int au_refresh_i(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int sigen; + unsigned long long max, ull; + struct inode *inode, **array; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; + if (unlikely(!inode)) + break; + + e = 0; + ii_write_lock_child(inode); + if (au_iigen(inode, NULL) != sigen) { + e = au_refresh_hinode_self(inode); + if (unlikely(e)) { + au_refresh_iop(inode, /*force_getattr*/1); + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + if (!e && do_idop) + au_refresh_iop(inode, /*force_getattr*/0); + ii_write_unlock(inode); + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bbot; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + struct au_sbinfo *sbi; + + au_sigen_inc(sb); + sbi = au_sbi(sb); + au_fclr_si(sbi, FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = d_inode(root); + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(udba, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); + + if (do_idop) { + if (au_ftest_si(sbi, NO_DREVAL)) { + AuDebugOn(sb->s_d_op == &aufs_dop_noreval); + sb->s_d_op = &aufs_dop_noreval; + AuDebugOn(sbi->si_iop_array == aufs_iop_nogetattr); + sbi->si_iop_array = aufs_iop_nogetattr; + } else { + AuDebugOn(sb->s_d_op == &aufs_dop); + sb->s_d_op = &aufs_dop; + AuDebugOn(sbi->si_iop_array == aufs_iop); + sbi->si_iop_array = aufs_iop; + } + pr_info("reset to %ps and %ps\n", + sb->s_d_op, sbi->si_iop_array); + } + + di_write_unlock(root); + err = au_refresh_d(sb, do_idop); + e = au_refresh_i(sb, do_idop); + if (unlikely(e && !err)) + err = e; + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + au_cpup_attr_all(inode, /*force*/1); + + if (unlikely(err)) + AuIOErr("refresh failed, ignored, %d\n", err); +} + +/* stop extra interpretation of errno in mount(8), and strange error messages */ +static int cvt_err(int err) +{ + AuTraceErr(err); + + switch (err) { + case -ENOENT: + case -ENOTDIR: + case -EEXIST: + case -EIO: + err = -EINVAL; + } + return err; +} + +static int aufs_remount_fs(struct super_block *sb, int *flags, char *data) +{ + int err, do_dx; + unsigned int mntflags; + struct au_opts opts = { + .opt = NULL + }; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; + + err = 0; + root = sb->s_root; + if (!data || !*data) { + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) { + di_write_lock_child(root); + err = au_opts_verify(sb, *flags, /*pending*/0); + aufs_write_unlock(root); + } + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.flags = AuOpts_REMOUNT; + opts.sb_flags = *flags; + + /* parse it before aufs lock */ + err = au_opts_parse(sb, data, &opts); + if (unlikely(err)) + goto out_opts; + + sbinfo = au_sbi(sb); + inode = d_inode(root); + inode_lock(inode); + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + di_write_lock_child(root); + + /* au_opts_remount() may return an error */ + err = au_opts_remount(sb, &opts); + au_opts_free(&opts); + + if (au_ftest_opts(opts.flags, REFRESH)) + au_remount_refresh(sb, au_ftest_opts(opts.flags, REFRESH_IDOP)); + + if (au_ftest_opts(opts.flags, REFRESH_DYAOP)) { + mntflags = au_mntflags(sb); + do_dx = !!au_opt_test(mntflags, DIO); + au_dy_arefresh(do_dx); + } + + au_fhsm_wrote_all(sb, /*force*/1); /* ?? */ + aufs_write_unlock(root); + +out_mtx: + inode_unlock(inode); +out_opts: + free_page((unsigned long)opts.opt); +out: + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +static const struct super_operations aufs_sop = { + .alloc_inode = aufs_alloc_inode, + .destroy_inode = aufs_destroy_inode, + .free_inode = aufs_free_inode, + /* always deleting, no clearing */ + .drop_inode = generic_delete_inode, + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, + .sync_fs = aufs_sync_fs, + .remount_fs = aufs_remount_fs, +#ifdef CONFIG_AUFS_BDEV_LOOP + .real_loop = aufs_real_loop +#endif +}; + +/* ---------------------------------------------------------------------- */ + +static int alloc_root(struct super_block *sb) +{ + int err; + struct inode *inode; + struct dentry *root; + + err = -ENOMEM; + inode = au_iget_locked(sb, AUFS_ROOT_INO); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + inode->i_op = aufs_iop + AuIop_DIR; /* with getattr by default */ + inode->i_fop = &aufs_dir_fop; + inode->i_mode = S_IFDIR; + set_nlink(inode, 2); + unlock_new_inode(inode); + + root = d_make_root(inode); + if (unlikely(!root)) + goto out; + err = PTR_ERR(root); + if (IS_ERR(root)) + goto out; + + err = au_di_init(root); + if (!err) { + sb->s_root = root; + return 0; /* success */ + } + dput(root); + +out: + return err; +} + +static int aufs_fill_super(struct super_block *sb, void *raw_data, + int silent __maybe_unused) +{ + int err; + struct au_opts opts = { + .opt = NULL + }; + struct au_sbinfo *sbinfo; + struct dentry *root; + struct inode *inode; + char *arg = raw_data; + + if (unlikely(!arg || !*arg)) { + err = -EINVAL; + pr_err("no arg\n"); + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.sb_flags = sb->s_flags; + + err = au_si_alloc(sb); + if (unlikely(err)) + goto out_opts; + sbinfo = au_sbi(sb); + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= SB_NOATIME | SB_NODIRATIME; + sb->s_flags |= SB_I_VERSION; /* do we really need this? */ + sb->s_op = &aufs_sop; + sb->s_d_op = &aufs_dop; + sb->s_magic = AUFS_SUPER_MAGIC; + sb->s_maxbytes = 0; + sb->s_stack_depth = 1; + au_export_init(sb); + au_xattr_init(sb); + + err = alloc_root(sb); + if (unlikely(err)) { + si_write_unlock(sb); + goto out_info; + } + root = sb->s_root; + inode = d_inode(root); + + /* + * actually we can parse options regardless aufs lock here. + * but at remount time, parsing must be done before aufs lock. + * so we follow the same rule. + */ + ii_write_lock_parent(inode); + aufs_write_unlock(root); + err = au_opts_parse(sb, arg, &opts); + if (unlikely(err)) + goto out_root; + + /* lock vfs_inode first, then aufs. */ + inode_lock(inode); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + if (!err && au_ftest_si(sbinfo, NO_DREVAL)) { + sb->s_d_op = &aufs_dop_noreval; + pr_info("%ps\n", sb->s_d_op); + au_refresh_dop(root, /*force_reval*/0); + sbinfo->si_iop_array = aufs_iop_nogetattr; + au_refresh_iop(inode, /*force_getattr*/0); + } + aufs_write_unlock(root); + inode_unlock(inode); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + kobject_put(&sbinfo->si_kobj); + sb->s_fs_info = NULL; +out_opts: + free_page((unsigned long)opts.opt); +out: + AuTraceErr(err); + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_mount(struct file_system_type *fs_type, int flags, + const char *dev_name __maybe_unused, + void *raw_data) +{ + struct dentry *root; + + /* all timestamps always follow the ones on the branch */ + /* mnt->mnt_flags |= MNT_NOATIME | MNT_NODIRATIME; */ + root = mount_nodev(fs_type, flags, raw_data, aufs_fill_super); + if (IS_ERR(root)) + goto out; + + au_sbilist_add(root->d_sb); + +out: + return root; +} + +static void aufs_kill_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) { + au_sbilist_del(sb); + aufs_write_lock(sb->s_root); + au_fhsm_fin(sb); + if (sbinfo->si_wbr_create_ops->fin) + sbinfo->si_wbr_create_ops->fin(sb); + if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { + au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); + au_remount_refresh(sb, /*do_idop*/0); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(sb); + au_dr_opt_flush(sb); + sbinfo->si_sb = NULL; + aufs_write_unlock(sb->s_root); + au_nwt_flush(&sbinfo->si_nowait); + } + kill_anon_super(sb); +} + +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + /* a race between rename and others */ + .fs_flags = FS_RENAME_DOES_D_MOVE, + .mount = aufs_mount, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; --- linux-5.8.0.orig/fs/aufs/super.h +++ linux-5.8.0/fs/aufs/super.h @@ -0,0 +1,589 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * super_block operations + */ + +#ifndef __AUFS_SUPER_H__ +#define __AUFS_SUPER_H__ + +#ifdef __KERNEL__ + +#include +#include +#include "hbl.h" +#include "lcnt.h" +#include "rwsem.h" +#include "wkq.h" + +/* policies to select one among multiple writable branches */ +struct au_wbr_copyup_operations { + int (*copyup)(struct dentry *dentry); +}; + +#define AuWbr_DIR 1 /* target is a dir */ +#define AuWbr_PARENT (1 << 1) /* always require a parent */ + +#define au_ftest_wbr(flags, name) ((flags) & AuWbr_##name) +#define au_fset_wbr(flags, name) { (flags) |= AuWbr_##name; } +#define au_fclr_wbr(flags, name) { (flags) &= ~AuWbr_##name; } + +struct au_wbr_create_operations { + int (*create)(struct dentry *dentry, unsigned int flags); + int (*init)(struct super_block *sb); + int (*fin)(struct super_block *sb); +}; + +struct au_wbr_mfs { + struct mutex mfs_lock; /* protect this structure */ + unsigned long mfs_jiffy; + unsigned long mfs_expire; + aufs_bindex_t mfs_bindex; + + unsigned long long mfsrr_bytes; + unsigned long long mfsrr_watermark; +}; + +#define AuPlink_NHASH 100 +static inline int au_plink_hash(ino_t ino) +{ + return ino % AuPlink_NHASH; +} + +/* File-based Hierarchical Storage Management */ +struct au_fhsm { +#ifdef CONFIG_AUFS_FHSM + /* allow only one process who can receive the notification */ + spinlock_t fhsm_spin; + pid_t fhsm_pid; + wait_queue_head_t fhsm_wqh; + atomic_t fhsm_readable; + + /* these are protected by si_rwsem */ + unsigned long fhsm_expire; + aufs_bindex_t fhsm_bottom; +#endif +}; + +struct au_branch; +struct au_sbinfo { + /* nowait tasks in the system-wide workqueue */ + struct au_nowait_tasks si_nowait; + + /* + * tried sb->s_umount, but failed due to the dependency between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files (gone) from + * remount. + */ + au_lcnt_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see AuSi_ flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bbot; + + /* dirty trick to keep br_id plus */ + unsigned int si_last_br_id : + sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; + struct au_branch **si_branch; + + /* policy to select a writable branch */ + unsigned char si_wbr_copyup; + unsigned char si_wbr_create; + struct au_wbr_copyup_operations *si_wbr_copyup_ops; + struct au_wbr_create_operations *si_wbr_create_ops; + + /* round robin */ + atomic_t si_wbr_rr_next; + + /* most free space */ + struct au_wbr_mfs si_wbr_mfs; + + /* File-based Hierarchical Storage Management */ + struct au_fhsm si_fhsm; + + /* mount flags */ + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + + /* external inode number (bitmap and translation table) */ + vfs_readf_t si_xread; + vfs_writef_t si_xwrite; + loff_t si_ximaxent; /* max entries in a xino */ + + struct file *si_xib; + struct mutex si_xib_mtx; /* protect xib members */ + unsigned long *si_xib_buf; + unsigned long si_xib_last_pindex; + int si_xib_next_bit; + + unsigned long si_xino_jiffy; + unsigned long si_xino_expire; + /* reserved for future use */ + /* unsigned long long si_xib_limit; */ /* Max xib file size */ + +#ifdef CONFIG_AUFS_EXPORT + /* i_generation */ + /* todo: make xigen file an array to support many inode numbers */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* dirty trick to support atomic_open */ + struct hlist_bl_head si_aopen; + + /* vdir parameters */ + unsigned long si_rdcache; /* max cache time in jiffies */ + unsigned int si_rdblk; /* deblk size */ + unsigned int si_rdhash; /* hash size */ + + /* + * If the number of whiteouts are larger than si_dirwh, leave all of + * them after au_whtmp_ren to reduce the cost of rmdir(2). + * future fsck.aufs or kernel thread will remove them later. + * Otherwise, remove all whiteouts and the dir in rmdir(2). + */ + unsigned int si_dirwh; + + /* pseudo_link list */ + struct hlist_bl_head si_plink[AuPlink_NHASH]; + wait_queue_head_t si_plink_wq; + spinlock_t si_plink_maint_lock; + pid_t si_plink_maint_pid; + + /* file list */ + struct hlist_bl_head si_files; + + /* with/without getattr, brother of sb->s_d_op */ + const struct inode_operations *si_iop_array; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particularly when many aufs-es are mounted. + * but using sysfs is majority. + */ + struct kobject si_kobj; +#ifdef CONFIG_DEBUG_FS + struct dentry *si_dbgaufs; + struct dentry *si_dbgaufs_plink; + struct dentry *si_dbgaufs_xib; +#ifdef CONFIG_AUFS_EXPORT + struct dentry *si_dbgaufs_xigen; +#endif +#endif + +#ifdef CONFIG_AUFS_SBILIST + struct hlist_bl_node si_list; +#endif + + /* dirty, necessary for unmounting, sysfs and sysrq */ + struct super_block *si_sb; +}; + +/* sbinfo status flags */ +/* + * set true when refresh_dirs() failed at remount time. + * then try refreshing dirs at access time again. + * if it is false, refreshing dirs at access time is unnecessary + */ +#define AuSi_FAILED_REFRESH_DIR 1 +#define AuSi_FHSM (1 << 1) /* fhsm is active now */ +#define AuSi_NO_DREVAL (1 << 2) /* disable all d_revalidate */ + +#ifndef CONFIG_AUFS_FHSM +#undef AuSi_FHSM +#define AuSi_FHSM 0 +#endif + +static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, + unsigned int flag) +{ + AuRwMustAnyLock(&sbi->si_rwsem); + return sbi->au_si_status & flag; +} +#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) +#define au_fset_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status |= AuSi_##name; \ +} while (0) +#define au_fclr_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status &= ~AuSi_##name; \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +/* policy to select one among writable branches */ +#define AuWbrCopyup(sbinfo, ...) \ + ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) +#define AuWbrCreate(sbinfo, ...) \ + ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) + +/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ +#define AuLock_DW 1 /* write-lock dentry */ +#define AuLock_IR (1 << 1) /* read-lock inode */ +#define AuLock_IW (1 << 2) /* write-lock inode */ +#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ +#define AuLock_DIRS (1 << 4) /* target is a pair of dirs */ + /* except RENAME_EXCHANGE */ +#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ +#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ +#define AuLock_GEN (1 << 7) /* test digen/iigen */ +#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) +#define au_fset_lock(flags, name) \ + do { (flags) |= AuLock_##name; } while (0) +#define au_fclr_lock(flags, name) \ + do { (flags) &= ~AuLock_##name; } while (0) + +/* ---------------------------------------------------------------------- */ + +/* super.c */ +extern struct file_system_type aufs_fs_type; +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(struct super_block *sb, void *array, + unsigned long long max, void *arg); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); + +/* sbinfo.c */ +void au_si_free(struct kobject *kobj); +int au_si_alloc(struct super_block *sb); +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink); + +unsigned int au_sigen_inc(struct super_block *sb); +aufs_bindex_t au_new_br_id(struct super_block *sb); + +int si_read_lock(struct super_block *sb, int flags); +int si_write_lock(struct super_block *sb, int flags); +int aufs_read_lock(struct dentry *dentry, int flags); +void aufs_read_unlock(struct dentry *dentry, int flags); +void aufs_write_lock(struct dentry *dentry); +void aufs_write_unlock(struct dentry *dentry); +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); + +/* wbr_policy.c */ +extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; +extern struct au_wbr_create_operations au_wbr_create_ops[]; +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex); +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop); + +/* mvdown.c */ +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *arg); + +#ifdef CONFIG_AUFS_FHSM +/* fhsm.c */ + +static inline pid_t au_fhsm_pid(struct au_fhsm *fhsm) +{ + pid_t pid; + + spin_lock(&fhsm->fhsm_spin); + pid = fhsm->fhsm_pid; + spin_unlock(&fhsm->fhsm_spin); + + return pid; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force); +void au_fhsm_wrote_all(struct super_block *sb, int force); +int au_fhsm_fd(struct super_block *sb, int oflags); +int au_fhsm_br_alloc(struct au_branch *br); +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex); +void au_fhsm_fin(struct super_block *sb); +void au_fhsm_init(struct au_sbinfo *sbinfo); +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec); +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo); +#else +AuStubVoid(au_fhsm_wrote, struct super_block *sb, aufs_bindex_t bindex, + int force) +AuStubVoid(au_fhsm_wrote_all, struct super_block *sb, int force) +AuStub(int, au_fhsm_fd, return -EOPNOTSUPP, struct super_block *sb, int oflags) +AuStub(pid_t, au_fhsm_pid, return 0, struct au_fhsm *fhsm) +AuStubInt0(au_fhsm_br_alloc, struct au_branch *br) +AuStubVoid(au_fhsm_set_bottom, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(au_fhsm_fin, struct super_block *sb) +AuStubVoid(au_fhsm_init, struct au_sbinfo *sbinfo) +AuStubVoid(au_fhsm_set, struct au_sbinfo *sbinfo, unsigned int sec) +AuStubVoid(au_fhsm_show, struct seq_file *seq, struct au_sbinfo *sbinfo) +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_sbinfo *au_sbi(struct super_block *sb) +{ + return sb->s_fs_info; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +int au_test_nfsd(void); +void au_export_init(struct super_block *sb); +void au_xigen_inc(struct inode *inode); +int au_xigen_new(struct inode *inode); +int au_xigen_set(struct super_block *sb, struct path *path); +void au_xigen_clr(struct super_block *sb); + +static inline int au_busy_or_stale(void) +{ + if (!au_test_nfsd()) + return -EBUSY; + return -ESTALE; +} +#else +AuStubInt0(au_test_nfsd, void) +AuStubVoid(au_export_init, struct super_block *sb) +AuStubVoid(au_xigen_inc, struct inode *inode) +AuStubInt0(au_xigen_new, struct inode *inode) +AuStubInt0(au_xigen_set, struct super_block *sb, struct path *path) +AuStubVoid(au_xigen_clr, struct super_block *sb) +AuStub(int, au_busy_or_stale, return -EBUSY, void) +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_SBILIST +/* module.c */ +extern struct hlist_bl_head au_sbilist; + +static inline void au_sbilist_init(void) +{ + INIT_HLIST_BL_HEAD(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_hbl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_hbl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + hlist_bl_lock(&au_sbilist); +} + +static inline void au_sbilist_unlock(void) +{ + hlist_bl_unlock(&au_sbilist); +} +#define AuGFP_SBILIST GFP_ATOMIC +#else +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ +#else +AuStubVoid(au_sbilist_init, void) +AuStubVoid(au_sbilist_add, struct super_block *sb) +AuStubVoid(au_sbilist_del, struct super_block *sb) +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif + +/* ---------------------------------------------------------------------- */ + +static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ +#ifdef CONFIG_DEBUG_FS + sbinfo->si_dbgaufs = NULL; + sbinfo->si_dbgaufs_plink = NULL; + sbinfo->si_dbgaufs_xib = NULL; +#ifdef CONFIG_AUFS_EXPORT + sbinfo->si_dbgaufs_xigen = NULL; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* current->atomic_flags */ +/* this value should never corrupt the ones defined in linux/sched.h */ +#define PFA_AUFS 0x10 + +TASK_PFA_TEST(AUFS, test_aufs) /* task_test_aufs */ +TASK_PFA_SET(AUFS, aufs) /* task_set_aufs */ +TASK_PFA_CLEAR(AUFS, aufs) /* task_clear_aufs */ + +static inline int si_pid_test(struct super_block *sb) +{ + return !!task_test_aufs(current); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + AuDebugOn(!task_test_aufs(current)); + task_clear_aufs(current); +} + +static inline void si_pid_set(struct super_block *sb) +{ + AuDebugOn(task_test_aufs(current)); + task_set_aufs(current); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +#define __si_read_lock(sb) au_rw_read_lock(&au_sbi(sb)->si_rwsem) +#define __si_write_lock(sb) au_rw_write_lock(&au_sbi(sb)->si_rwsem) +#define __si_read_trylock(sb) au_rw_read_trylock(&au_sbi(sb)->si_rwsem) +#define __si_write_trylock(sb) au_rw_write_trylock(&au_sbi(sb)->si_rwsem) +/* +#define __si_read_trylock_nested(sb) \ + au_rw_read_trylock_nested(&au_sbi(sb)->si_rwsem) +#define __si_write_trylock_nested(sb) \ + au_rw_write_trylock_nested(&au_sbi(sb)->si_rwsem) +*/ + +#define __si_read_unlock(sb) au_rw_read_unlock(&au_sbi(sb)->si_rwsem) +#define __si_write_unlock(sb) au_rw_write_unlock(&au_sbi(sb)->si_rwsem) +#define __si_downgrade_lock(sb) au_rw_dgrade_lock(&au_sbi(sb)->si_rwsem) + +#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) +#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) +#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) + +static inline void si_noflush_read_lock(struct super_block *sb) +{ + __si_read_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_read_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_read_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +static inline void si_noflush_write_lock(struct super_block *sb) +{ + __si_write_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_write_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_write_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +#if 0 /* reserved */ +static inline int si_read_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_read_trylock(sb); +} +#endif + +static inline void si_read_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_read_unlock(sb); +} + +#if 0 /* reserved */ +static inline int si_write_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_write_trylock(sb); +} +#endif + +static inline void si_write_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_write_unlock(sb); +} + +#if 0 /* reserved */ +static inline void si_downgrade_lock(struct super_block *sb) +{ + __si_downgrade_lock(sb); +} +#endif + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_sbbot(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bbot; +} + +static inline unsigned int au_mntflags(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_mntflags; +} + +static inline unsigned int au_sigen(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_generation; +} + +static inline struct au_branch *au_sbr(struct super_block *sb, + aufs_bindex_t bindex) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_branch[0 + bindex]; +} + +static inline loff_t au_xi_maxent(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_ximaxent; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- linux-5.8.0.orig/fs/aufs/sysaufs.c +++ linux-5.8.0/fs/aufs/sysaufs.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and lifetime management + * they are necessary regardless sysfs is disabled. + */ + +#include +#include "aufs.h" + +unsigned long sysaufs_si_mask; +struct kset *sysaufs_kset; + +#define AuSiAttr(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = sysaufs_si_##_name, \ +} + +static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); +struct attribute *sysaufs_si_attrs[] = { + &sysaufs_si_attr_xi_path.attr, + NULL, +}; + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + +static struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, + .default_attrs = sysaufs_si_attrs +}; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + + sbinfo->si_kobj.kset = sysaufs_kset; + /* cf. sysaufs_name() */ + err = kobject_init_and_add + (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, + SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); + + return err; +} + +void sysaufs_fin(void) +{ + sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); + kset_unregister(sysaufs_kset); +} + +int __init sysaufs_init(void) +{ + int err; + + do { + get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); + } while (!sysaufs_si_mask); + + err = -EINVAL; + sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); + if (unlikely(!sysaufs_kset)) + goto out; + err = PTR_ERR(sysaufs_kset); + if (IS_ERR(sysaufs_kset)) + goto out; + err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); + if (unlikely(err)) + kset_unregister(sysaufs_kset); + +out: + return err; +} --- linux-5.8.0.orig/fs/aufs/sysaufs.h +++ linux-5.8.0/fs/aufs/sysaufs.h @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and mount lifetime management + */ + +#ifndef __SYSAUFS_H__ +#define __SYSAUFS_H__ + +#ifdef __KERNEL__ + +#include +#include "module.h" + +struct super_block; +struct au_sbinfo; + +struct sysaufs_si_attr { + struct attribute attr; + int (*show)(struct seq_file *seq, struct super_block *sb); +}; + +/* ---------------------------------------------------------------------- */ + +/* sysaufs.c */ +extern unsigned long sysaufs_si_mask; +extern struct kset *sysaufs_kset; +extern struct attribute *sysaufs_si_attrs[]; +int sysaufs_si_init(struct au_sbinfo *sbinfo); +int __init sysaufs_init(void); +void sysaufs_fin(void); + +/* ---------------------------------------------------------------------- */ + +/* some people doesn't like to show a pointer in kernel */ +static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) +{ + return sysaufs_si_mask ^ (unsigned long)sbinfo; +} + +#define SysaufsSiNamePrefix "si_" +#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) +static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) +{ + snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", + sysaufs_si_id(sbinfo)); +} + +struct au_branch; +#ifdef CONFIG_SYSFS +/* sysfs.c */ +extern struct attribute_group *sysaufs_attr_group; + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf); +long au_brinfo_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg); +#endif + +void sysaufs_br_init(struct au_branch *br); +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); + +#define sysaufs_brs_init() do {} while (0) + +#else +#define sysaufs_attr_group NULL + +AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) +AuStub(ssize_t, sysaufs_si_show, return 0, struct kobject *kobj, + struct attribute *attr, char *buf) +AuStubVoid(sysaufs_br_init, struct au_branch *br) +AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) + +static inline void sysaufs_brs_init(void) +{ + sysaufs_brs = 0; +} + +#endif /* CONFIG_SYSFS */ + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ --- linux-5.8.0.orig/fs/aufs/sysfs.c +++ linux-5.8.0/fs/aufs/sysfs.c @@ -0,0 +1,374 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface + */ + +#include +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_FS_MODULE +/* this entry violates the "one line per file" policy of sysfs */ +static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + ssize_t err; + static char *conf = +/* this file is generated at compiling */ +#include "conf.str" + ; + + err = snprintf(buf, PAGE_SIZE, conf); + if (unlikely(err >= PAGE_SIZE)) + err = -EFBIG; + return err; +} + +static struct kobj_attribute au_config_attr = __ATTR_RO(config); +#endif + +static struct attribute *au_attr[] = { +#ifdef CONFIG_AUFS_FS_MODULE + &au_config_attr.attr, +#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + +static struct attribute_group sysaufs_attr_group_body = { + .attrs = au_attr +}; + +struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) +{ + int err; + + SiMustAnyLock(sb); + + err = 0; + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_path(seq, au_sbi(sb)->si_xib); + seq_putc(seq, '\n'); + } + return err; +} + +/* + * the lifetime of branch is independent from the entry under sysfs. + * sysfs handles the lifetime of the entry, and never call ->show() after it is + * unlinked. + */ +static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, + aufs_bindex_t bindex, int idx) +{ + int err; + struct path path; + struct dentry *root; + struct au_branch *br; + au_br_perm_str_t perm; + + AuDbg("b%d\n", bindex); + + err = 0; + root = sb->s_root; + di_read_lock_parent(root, !AuLock_IR); + br = au_sbr(sb, bindex); + + switch (idx) { + case AuBrSysfs_BR: + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(root, bindex); + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s\n", perm.a); + } + break; + case AuBrSysfs_BRID: + seq_printf(seq, "%d\n", br->br_id); + break; + } + di_read_unlock(root, !AuLock_IR); + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct seq_file *au_seq(char *p, ssize_t len) +{ + struct seq_file *seq; + + seq = kzalloc(sizeof(*seq), GFP_NOFS); + if (seq) { + /* mutex_init(&seq.lock); */ + seq->buf = p; + seq->size = len; + return seq; /* success */ + } + + seq = ERR_PTR(-ENOMEM); + return seq; +} + +#define SysaufsBr_PREFIX "br" +#define SysaufsBrid_PREFIX "brid" + +/* todo: file size may exceed PAGE_SIZE */ +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + ssize_t err; + int idx; + long l; + aufs_bindex_t bbot; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct seq_file *seq; + char *name; + struct attribute **cattr; + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + sb = sbinfo->si_sb; + + /* + * prevent a race condition between sysfs and aufs. + * for instance, sysfs_file_read() calls sysfs_get_active_two() which + * prohibits maintaining the sysfs entries. + * hew we acquire read lock after sysfs_get_active_two(). + * on the other hand, the remount process may maintain the sysfs/aufs + * entries after acquiring write lock. + * it can cause a deadlock. + * simply we gave up processing read here. + */ + err = -EBUSY; + if (unlikely(!si_noflush_read_trylock(sb))) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_unlock; + + name = (void *)attr->name; + cattr = sysaufs_si_attrs; + while (*cattr) { + if (!strcmp(name, (*cattr)->name)) { + err = container_of(*cattr, struct sysaufs_si_attr, attr) + ->show(seq, sb); + goto out_seq; + } + cattr++; + } + + if (!strncmp(name, SysaufsBrid_PREFIX, + sizeof(SysaufsBrid_PREFIX) - 1)) { + idx = AuBrSysfs_BRID; + name += sizeof(SysaufsBrid_PREFIX) - 1; + } else if (!strncmp(name, SysaufsBr_PREFIX, + sizeof(SysaufsBr_PREFIX) - 1)) { + idx = AuBrSysfs_BR; + name += sizeof(SysaufsBr_PREFIX) - 1; + } else + BUG(); + + err = kstrtol(name, 10, &l); + if (!err) { + bbot = au_sbbot(sb); + if (l <= bbot) + err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l, idx); + else + err = -ENOENT; + } + +out_seq: + if (!err) { + err = seq->count; + /* sysfs limit */ + if (unlikely(err == PAGE_SIZE)) + err = -EFBIG; + } + au_kfree_rcu(seq); +out_unlock: + si_read_unlock(sb); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_brinfo(struct super_block *sb, union aufs_brinfo __user *arg) +{ + int err; + int16_t brid; + aufs_bindex_t bindex, bbot; + size_t sz; + char *buf; + struct seq_file *seq; + struct au_branch *br; + + si_read_lock(sb, AuLock_FLUSH); + bbot = au_sbbot(sb); + err = bbot + 1; + if (!arg) + goto out; + + err = -ENOMEM; + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_buf; + + sz = sizeof(*arg) - offsetof(union aufs_brinfo, path); + for (bindex = 0; bindex <= bbot; bindex++, arg++) { + /* VERIFY_WRITE */ + err = !access_ok(arg, sizeof(*arg)); + if (unlikely(err)) + break; + + br = au_sbr(sb, bindex); + brid = br->br_id; + BUILD_BUG_ON(sizeof(brid) != sizeof(arg->id)); + err = __put_user(brid, &arg->id); + if (unlikely(err)) + break; + + BUILD_BUG_ON(sizeof(br->br_perm) != sizeof(arg->perm)); + err = __put_user(br->br_perm, &arg->perm); + if (unlikely(err)) + break; + + err = au_seq_path(seq, &br->br_path); + if (unlikely(err)) + break; + seq_putc(seq, '\0'); + if (!seq_has_overflowed(seq)) { + err = copy_to_user(arg->path, seq->buf, seq->count); + seq->count = 0; + if (unlikely(err)) + break; + } else { + err = -E2BIG; + goto out_seq; + } + } + if (unlikely(err)) + err = -EFAULT; + +out_seq: + au_kfree_rcu(seq); +out_buf: + free_page((unsigned long)buf); +out: + si_read_unlock(sb); + return err; +} + +long au_brinfo_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +void sysaufs_br_init(struct au_branch *br) +{ + int i; + struct au_brsysfs *br_sysfs; + struct attribute *attr; + + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + attr = &br_sysfs->attr; + sysfs_attr_init(attr); + attr->name = br_sysfs->name; + attr->mode = 0444; + br_sysfs++; + } +} + +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_branch *br; + struct kobject *kobj; + struct au_brsysfs *br_sysfs; + int i; + aufs_bindex_t bbot; + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + sysfs_remove_file(kobj, &br_sysfs->attr); + br_sysfs++; + } + } +} + +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, i; + aufs_bindex_t bbot; + struct kobject *kobj; + struct au_branch *br; + struct au_brsysfs *br_sysfs; + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + snprintf(br_sysfs[AuBrSysfs_BR].name, sizeof(br_sysfs->name), + SysaufsBr_PREFIX "%d", bindex); + snprintf(br_sysfs[AuBrSysfs_BRID].name, sizeof(br_sysfs->name), + SysaufsBrid_PREFIX "%d", bindex); + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + err = sysfs_create_file(kobj, &br_sysfs->attr); + if (unlikely(err)) + pr_warn("failed %s under sysfs(%d)\n", + br_sysfs->name, err); + br_sysfs++; + } + } +} --- linux-5.8.0.orig/fs/aufs/sysrq.c +++ linux-5.8.0/fs/aufs/sysrq.c @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * magic sysrq handler + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + struct hlist_bl_head *files; + struct hlist_bl_node *pos; + struct au_finfo *finfo; + struct inode *i; + + plevel = au_plevel; + au_plevel = KERN_WARNING; + + /* since we define pr_fmt, call printk directly */ +#define pr(str) printk(KERN_WARNING AUFS_NAME ": " str) + + sbinfo = au_sbi(sb); + printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); + pr("superblock\n"); + au_dpri_sb(sb); + +#if 0 /* reserved */ + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + + err = au_dpages_init(&dpages, GFP_ATOMIC); + if (unlikely(err)) + break; + err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); + if (!err) + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) + au_dpri_dentry(dpage->dentries[j]); + } + au_dpages_free(&dpages); + } while (0); +#endif + + pr("isolated inode\n"); + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (hlist_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&sb->s_inode_list_lock); + + pr("files\n"); + files = &au_sbi(sb)->si_files; + hlist_bl_lock(files); + hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { + umode_t mode; + + file = finfo->fi_file; + mode = file_inode(file)->i_mode; + if (!special_file(mode)) + au_dpri_file(file); + } + hlist_bl_unlock(files); + pr("done\n"); + +#undef pr + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, 0444); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + struct hlist_bl_node *pos; + + lockdep_off(); + au_sbilist_lock(); + hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) + sysrq_sb(sbinfo->si_sb); + au_sbilist_unlock(); + lockdep_on(); +} + +static struct sysrq_key_op au_sysrq_op = { + .handler = au_sysrq, + .help_msg = "Aufs", + .action_msg = "Aufs", + .enable_mask = SYSRQ_ENABLE_DUMP +}; + +/* ---------------------------------------------------------------------- */ + +int __init au_sysrq_init(void) +{ + int err; + char key; + + err = -1; + key = *aufs_sysrq_key; + if ('a' <= key && key <= 'z') + err = register_sysrq_key(key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d, sysrq=%c\n", err, key); + return err; +} + +void au_sysrq_fin(void) +{ + int err; + + err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} --- linux-5.8.0.orig/fs/aufs/vdir.c +++ linux-5.8.0/fs/aufs/vdir.c @@ -0,0 +1,896 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * virtual or vertical directory + */ + +#include +#include "aufs.h" + +static unsigned int calc_size(int nlen) +{ + return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); +} + +static int set_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) { + p->de->de_str.len = 0; + /* smp_mb(); */ + return 0; + } + return -1; /* error */ +} + +/* returns true or false */ +static int is_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) + return !p->de->de_str.len; + return 1; +} + +static unsigned char *last_deblk(struct au_vdir *vdir) +{ + return vdir->vd_deblk[vdir->vd_nblk - 1]; +} + +/* ---------------------------------------------------------------------- */ + +/* estimate the appropriate size for name hash table */ +unsigned int au_rdhash_est(loff_t sz) +{ + unsigned int n; + + n = UINT_MAX; + sz >>= 10; + if (sz < n) + n = sz; + if (sz < AUFS_RDHASH_DEF) + n = AUFS_RDHASH_DEF; + /* pr_info("n %u\n", n); */ + return n; +} + +/* + * the allocated memory has to be freed by + * au_nhash_wh_free() or au_nhash_de_free(). + */ +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) +{ + struct hlist_head *head; + unsigned int u; + size_t sz; + + sz = sizeof(*nhash->nh_head) * num_hash; + head = kmalloc(sz, gfp); + if (head) { + nhash->nh_num = num_hash; + nhash->nh_head = head; + for (u = 0; u < num_hash; u++) + INIT_HLIST_HEAD(head++); + return 0; /* success */ + } + + return -ENOMEM; +} + +static void nhash_count(struct hlist_head *head) +{ +#if 0 /* debugging */ + unsigned long n; + struct hlist_node *pos; + + n = 0; + hlist_for_each(pos, head) + n++; + pr_info("%lu\n", n); +#endif +} + +static void au_nhash_wh_do_free(struct hlist_head *head) +{ + struct au_vdir_wh *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, wh_hash) + au_kfree_rcu(pos); +} + +static void au_nhash_de_do_free(struct hlist_head *head) +{ + struct au_vdir_dehstr *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, hash) + au_cache_free_vdir_dehstr(pos); +} + +static void au_nhash_do_free(struct au_nhash *nhash, + void (*free)(struct hlist_head *head)) +{ + unsigned int n; + struct hlist_head *head; + + n = nhash->nh_num; + if (!n) + return; + + head = nhash->nh_head; + while (n-- > 0) { + nhash_count(head); + free(head++); + } + au_kfree_try_rcu(nhash->nh_head); +} + +void au_nhash_wh_free(struct au_nhash *whlist) +{ + au_nhash_do_free(whlist, au_nhash_wh_do_free); +} + +static void au_nhash_de_free(struct au_nhash *delist) +{ + au_nhash_do_free(delist, au_nhash_de_do_free); +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit) +{ + int num; + unsigned int u, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + num = 0; + n = whlist->nh_num; + head = whlist->nh_head; + for (u = 0; u < n; u++, head++) + hlist_for_each_entry(pos, head, wh_hash) + if (pos->wh_bindex == btgt && ++num > limit) + return 1; + return 0; +} + +static struct hlist_head *au_name_hash(struct au_nhash *nhash, + unsigned char *name, + unsigned int len) +{ + unsigned int v; + /* const unsigned int magic_bit = 12; */ + + AuDebugOn(!nhash->nh_num || !nhash->nh_head); + + v = 0; + if (len > 8) + len = 8; + while (len--) + v += *name++; + /* v = hash_long(v, magic_bit); */ + v %= nhash->nh_num; + return nhash->nh_head + v; +} + +static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, + int nlen) +{ + return str->len == nlen && !memcmp(str->name, name, nlen); +} + +/* returns found or not */ +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + head = au_name_hash(whlist, name, nlen); + hlist_for_each_entry(pos, head, wh_hash) { + str = &pos->wh_str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +/* returns found(true) or not */ +static int test_known(struct au_nhash *delist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_dehstr *pos; + struct au_vdir_destr *str; + + head = au_name_hash(delist, name, nlen); + hlist_for_each_entry(pos, head, hash) { + str = pos->str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, + unsigned char d_type) +{ +#ifdef CONFIG_AUFS_SHWH + wh->wh_ino = ino; + wh->wh_type = d_type; +#endif +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh) +{ + int err; + struct au_vdir_destr *str; + struct au_vdir_wh *wh; + + AuDbg("%.*s\n", nlen, name); + AuDebugOn(!whlist->nh_num || !whlist->nh_head); + + err = -ENOMEM; + wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); + if (unlikely(!wh)) + goto out; + + err = 0; + wh->wh_bindex = bindex; + if (shwh) + au_shwh_init_wh(wh, ino, d_type); + str = &wh->wh_str; + str->len = nlen; + memcpy(str->name, name, nlen); + hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); + /* smp_mb(); */ + +out: + return err; +} + +static int append_deblk(struct au_vdir *vdir) +{ + int err; + unsigned long ul; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, deblk_end; + unsigned char **o; + + err = -ENOMEM; + o = au_krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS, /*may_shrink*/0); + if (unlikely(!o)) + goto out; + + vdir->vd_deblk = o; + p.deblk = kmalloc(deblk_sz, GFP_NOFS); + if (p.deblk) { + ul = vdir->vd_nblk++; + vdir->vd_deblk[ul] = p.deblk; + vdir->vd_last.ul = ul; + vdir->vd_last.p.deblk = p.deblk; + deblk_end.deblk = p.deblk + deblk_sz; + err = set_deblk_end(&p, &deblk_end); + } + +out: + return err; +} + +static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, + unsigned int d_type, struct au_nhash *delist) +{ + int err; + unsigned int sz; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, *room, deblk_end; + struct au_vdir_dehstr *dehstr; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + room = &vdir->vd_last.p; + AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk + || !is_deblk_end(room, &deblk_end)); + + sz = calc_size(nlen); + if (unlikely(sz > deblk_end.deblk - room->deblk)) { + err = append_deblk(vdir); + if (unlikely(err)) + goto out; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + /* smp_mb(); */ + AuDebugOn(room->deblk != p.deblk); + } + + err = -ENOMEM; + dehstr = au_cache_alloc_vdir_dehstr(); + if (unlikely(!dehstr)) + goto out; + + dehstr->str = &room->de->de_str; + hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); + room->de->de_ino = ino; + room->de->de_type = d_type; + room->de->de_str.len = nlen; + memcpy(room->de->de_str.name, name, nlen); + + err = 0; + room->deblk += sz; + if (unlikely(set_deblk_end(room, &deblk_end))) + err = append_deblk(vdir); + /* smp_mb(); */ + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_vdir_free(struct au_vdir *vdir) +{ + unsigned char **deblk; + + deblk = vdir->vd_deblk; + while (vdir->vd_nblk--) + au_kfree_try_rcu(*deblk++); + au_kfree_try_rcu(vdir->vd_deblk); + au_cache_free_vdir(vdir); +} + +static struct au_vdir *alloc_vdir(struct file *file) +{ + struct au_vdir *vdir; + struct super_block *sb; + int err; + + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + err = -ENOMEM; + vdir = au_cache_alloc_vdir(); + if (unlikely(!vdir)) + goto out; + + vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); + if (unlikely(!vdir->vd_deblk)) + goto out_free; + + vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; + if (!vdir->vd_deblk_sz) { + /* estimate the appropriate size for deblk */ + vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); + /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ + } + vdir->vd_nblk = 0; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + err = append_deblk(vdir); + if (!err) + return vdir; /* success */ + + au_kfree_try_rcu(vdir->vd_deblk); + +out_free: + au_cache_free_vdir(vdir); +out: + vdir = ERR_PTR(err); + return vdir; +} + +static int reinit_vdir(struct au_vdir *vdir) +{ + int err; + union au_vdir_deblk_p p, deblk_end; + + while (vdir->vd_nblk > 1) { + au_kfree_try_rcu(vdir->vd_deblk[vdir->vd_nblk - 1]); + /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ + vdir->vd_nblk--; + } + p.deblk = vdir->vd_deblk[0]; + deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; + err = set_deblk_end(&p, &deblk_end); + /* keep vd_dblk_sz */ + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + /* smp_mb(); */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuFillVdir_CALLED 1 +#define AuFillVdir_WHABLE (1 << 1) +#define AuFillVdir_SHWH (1 << 2) +#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) +#define au_fset_fillvdir(flags, name) \ + do { (flags) |= AuFillVdir_##name; } while (0) +#define au_fclr_fillvdir(flags, name) \ + do { (flags) &= ~AuFillVdir_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuFillVdir_SHWH +#define AuFillVdir_SHWH 0 +#endif + +struct fillvdir_arg { + struct dir_context ctx; + struct file *file; + struct au_vdir *vdir; + struct au_nhash delist; + struct au_nhash whlist; + aufs_bindex_t bindex; + unsigned int flags; + int err; +}; + +static int fillvdir(struct dir_context *ctx, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ + struct fillvdir_arg *arg = container_of(ctx, struct fillvdir_arg, ctx); + char *name = (void *)__name; + struct super_block *sb; + ino_t ino; + const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); + + arg->err = 0; + sb = arg->file->f_path.dentry->d_sb; + au_fset_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + if (nlen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (test_known(&arg->delist, name, nlen) + || au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already exists or whiteouted */ + + arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); + if (!arg->err) { + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + d_type = DT_UNKNOWN; + arg->err = append_de(arg->vdir, name, nlen, ino, + d_type, &arg->delist); + } + } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { + name += AUFS_WH_PFX_LEN; + nlen -= AUFS_WH_PFX_LEN; + if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already whiteouted */ + + ino = 0; /* just to suppress a warning */ + if (shwh) + arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, + &ino); + if (!arg->err) { + if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) + d_type = DT_UNKNOWN; + arg->err = au_nhash_append_wh + (&arg->whlist, name, nlen, ino, d_type, + arg->bindex, shwh); + } + } + +out: + if (!arg->err) + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, + struct au_nhash *whlist, struct au_nhash *delist) +{ +#ifdef CONFIG_AUFS_SHWH + int err; + unsigned int nh, u; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct hlist_node *n; + char *p, *o; + struct au_vdir_destr *destr; + + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; + o = p = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + nh = whlist->nh_num; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + for (u = 0; u < nh; u++) { + head = whlist->nh_head + u; + hlist_for_each_entry_safe(pos, n, head, wh_hash) { + destr = &pos->wh_str; + memcpy(p, destr->name, destr->len); + err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, + pos->wh_ino, pos->wh_type, delist); + if (unlikely(err)) + break; + } + } + + free_page((unsigned long)o); + +out: + AuTraceErr(err); + return err; +#else + return 0; +#endif +} + +static int au_do_read_vdir(struct fillvdir_arg *arg) +{ + int err; + unsigned int rdhash; + loff_t offset; + aufs_bindex_t bbot, bindex, btop; + unsigned char shwh; + struct file *hf, *file; + struct super_block *sb; + + file = arg->file; + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); + err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out_delist; + + err = 0; + arg->flags = 0; + shwh = 0; + if (au_opt_test(au_mntflags(sb), SHWH)) { + shwh = 1; + au_fset_fillvdir(arg->flags, SHWH); + } + btop = au_fbtop(file); + bbot = au_fbbot_dir(file); + for (bindex = btop; !err && bindex <= bbot; bindex++) { + hf = au_hf_dir(file, bindex); + if (!hf) + continue; + + offset = vfsub_llseek(hf, 0, SEEK_SET); + err = offset; + if (unlikely(offset)) + break; + + arg->bindex = bindex; + au_fclr_fillvdir(arg->flags, WHABLE); + if (shwh + || (bindex != bbot + && au_br_whable(au_sbr_perm(sb, bindex)))) + au_fset_fillvdir(arg->flags, WHABLE); + do { + arg->err = 0; + au_fclr_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(hf, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); + + /* + * dir_relax() may be good for concurrency, but aufs should not + * use it since it will cause a lockdep problem. + */ + } + + if (!err && shwh) + err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); + + au_nhash_wh_free(&arg->whlist); + +out_delist: + au_nhash_de_free(&arg->delist); +out: + return err; +} + +static int read_vdir(struct file *file, int may_read) +{ + int err; + unsigned long expire; + unsigned char do_read; + struct fillvdir_arg arg = { + .ctx = { + .actor = fillvdir + } + }; + struct inode *inode; + struct au_vdir *vdir, *allocated; + + err = 0; + inode = file_inode(file); + IMustLock(inode); + IiMustWriteLock(inode); + SiMustAnyLock(inode->i_sb); + + allocated = NULL; + do_read = 0; + expire = au_sbi(inode->i_sb)->si_rdcache; + vdir = au_ivdir(inode); + if (!vdir) { + do_read = 1; + vdir = alloc_vdir(file); + err = PTR_ERR(vdir); + if (IS_ERR(vdir)) + goto out; + err = 0; + allocated = vdir; + } else if (may_read + && (!inode_eq_iversion(inode, vdir->vd_version) + || time_after(jiffies, vdir->vd_jiffy + expire))) { + do_read = 1; + err = reinit_vdir(vdir); + if (unlikely(err)) + goto out; + } + + if (!do_read) + return 0; /* success */ + + arg.file = file; + arg.vdir = vdir; + err = au_do_read_vdir(&arg); + if (!err) { + /* file->f_pos = 0; */ /* todo: ctx->pos? */ + vdir->vd_version = inode_query_iversion(inode); + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + if (allocated) + au_set_ivdir(inode, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) +{ + int err, rerr; + unsigned long ul, n; + const unsigned int deblk_sz = src->vd_deblk_sz; + + AuDebugOn(tgt->vd_nblk != 1); + + err = -ENOMEM; + if (tgt->vd_nblk < src->vd_nblk) { + unsigned char **p; + + p = au_krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS, /*may_shrink*/0); + if (unlikely(!p)) + goto out; + tgt->vd_deblk = p; + } + + if (tgt->vd_deblk_sz != deblk_sz) { + unsigned char *p; + + tgt->vd_deblk_sz = deblk_sz; + p = au_krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS, + /*may_shrink*/1); + if (unlikely(!p)) + goto out; + tgt->vd_deblk[0] = p; + } + memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); + tgt->vd_version = src->vd_version; + tgt->vd_jiffy = src->vd_jiffy; + + n = src->vd_nblk; + for (ul = 1; ul < n; ul++) { + tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, + GFP_NOFS); + if (unlikely(!tgt->vd_deblk[ul])) + goto out; + tgt->vd_nblk++; + } + tgt->vd_nblk = n; + tgt->vd_last.ul = tgt->vd_last.ul; + tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; + tgt->vd_last.p.deblk += src->vd_last.p.deblk + - src->vd_deblk[src->vd_last.ul]; + /* smp_mb(); */ + return 0; /* success */ + +out: + rerr = reinit_vdir(tgt); + BUG_ON(rerr); + return err; +} + +int au_vdir_init(struct file *file) +{ + int err; + struct inode *inode; + struct au_vdir *vdir_cache, *allocated; + + /* test file->f_pos here instead of ctx->pos */ + err = read_vdir(file, !file->f_pos); + if (unlikely(err)) + goto out; + + allocated = NULL; + vdir_cache = au_fvdir_cache(file); + if (!vdir_cache) { + vdir_cache = alloc_vdir(file); + err = PTR_ERR(vdir_cache); + if (IS_ERR(vdir_cache)) + goto out; + allocated = vdir_cache; + } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { + /* test file->f_pos here instead of ctx->pos */ + err = reinit_vdir(vdir_cache); + if (unlikely(err)) + goto out; + } else + return 0; /* success */ + + inode = file_inode(file); + err = copy_vdir(vdir_cache, au_ivdir(inode)); + if (!err) { + file->f_version = inode_query_iversion(inode); + if (allocated) + au_set_fvdir_cache(file, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static loff_t calc_offset(struct au_vdir *vdir) +{ + loff_t offset; + union au_vdir_deblk_p p; + + p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; + offset = vdir->vd_last.p.deblk - p.deblk; + offset += vdir->vd_deblk_sz * vdir->vd_last.ul; + return offset; +} + +/* returns true or false */ +static int seek_vdir(struct file *file, struct dir_context *ctx) +{ + int valid; + unsigned int deblk_sz; + unsigned long ul, n; + loff_t offset; + union au_vdir_deblk_p p, deblk_end; + struct au_vdir *vdir_cache; + + valid = 1; + vdir_cache = au_fvdir_cache(file); + offset = calc_offset(vdir_cache); + AuDbg("offset %lld\n", offset); + if (ctx->pos == offset) + goto out; + + vdir_cache->vd_last.ul = 0; + vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; + if (!ctx->pos) + goto out; + + valid = 0; + deblk_sz = vdir_cache->vd_deblk_sz; + ul = div64_u64(ctx->pos, deblk_sz); + AuDbg("ul %lu\n", ul); + if (ul >= vdir_cache->vd_nblk) + goto out; + + n = vdir_cache->vd_nblk; + for (; ul < n; ul++) { + p.deblk = vdir_cache->vd_deblk[ul]; + deblk_end.deblk = p.deblk + deblk_sz; + offset = ul; + offset *= deblk_sz; + while (!is_deblk_end(&p, &deblk_end) && offset < ctx->pos) { + unsigned int l; + + l = calc_size(p.de->de_str.len); + offset += l; + p.deblk += l; + } + if (!is_deblk_end(&p, &deblk_end)) { + valid = 1; + vdir_cache->vd_last.ul = ul; + vdir_cache->vd_last.p = p; + break; + } + } + +out: + /* smp_mb(); */ + if (!valid) + AuDbg("valid %d\n", !valid); + return valid; +} + +int au_vdir_fill_de(struct file *file, struct dir_context *ctx) +{ + unsigned int l, deblk_sz; + union au_vdir_deblk_p deblk_end; + struct au_vdir *vdir_cache; + struct au_vdir_de *de; + + if (!seek_vdir(file, ctx)) + return 0; + + vdir_cache = au_fvdir_cache(file); + deblk_sz = vdir_cache->vd_deblk_sz; + while (1) { + deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + deblk_end.deblk += deblk_sz; + while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { + de = vdir_cache->vd_last.p.de; + AuDbg("%.*s, off%lld, i%lu, dt%d\n", + de->de_str.len, de->de_str.name, ctx->pos, + (unsigned long)de->de_ino, de->de_type); + if (unlikely(!dir_emit(ctx, de->de_str.name, + de->de_str.len, de->de_ino, + de->de_type))) { + /* todo: ignore the error caused by udba? */ + /* return err; */ + return 0; + } + + l = calc_size(de->de_str.len); + vdir_cache->vd_last.p.deblk += l; + ctx->pos += l; + } + if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { + vdir_cache->vd_last.ul++; + vdir_cache->vd_last.p.deblk + = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + ctx->pos = deblk_sz * vdir_cache->vd_last.ul; + continue; + } + break; + } + + /* smp_mb(); */ + return 0; +} --- linux-5.8.0.orig/fs/aufs/vfsub.c +++ linux-5.8.0/fs/aufs/vfsub.c @@ -0,0 +1,895 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_BR_FUSE +int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb) +{ + if (!au_test_fuse(h_sb) || !au_userns) + return 0; + + return is_current_mnt_ns(mnt) ? 0 : -EACCES; +} +#endif + +int vfsub_sync_filesystem(struct super_block *h_sb, int wait) +{ + int err; + + lockdep_off(); + down_read(&h_sb->s_umount); + err = __sync_filesystem(h_sb, wait); + up_read(&h_sb->s_umount); + lockdep_on(); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; + struct kstat st; + struct super_block *h_sb; + + /* for remote fs, leave work for its getattr or d_revalidate */ + /* for bad i_attr fs, handle them in aufs_getattr() */ + /* still some fs may acquire i_mutex. we need to skip them */ + err = 0; + if (!did) + did = &err; + h_sb = h_path->dentry->d_sb; + *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); + if (*did) + err = vfsub_getattr(h_path, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + return dentry_open(path, flags /* | __FMODE_NONOTIFY */, + current_cred()); +} + +struct file *vfsub_filp_open(const char *path, int oflags, int mode) +{ + struct file *file; + + lockdep_off(); + file = filp_open(path, + oflags /* | __FMODE_NONOTIFY */, + mode); + lockdep_on(); + if (IS_ERR(file)) + goto out; + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + +out: + return file; +} + +/* + * Ideally this function should call VFS:do_last() in order to keep all its + * checkings. But it is very hard for aufs to regenerate several VFS internal + * structure such as nameidata. This is a second (or third) best approach. + * cf. linux/fs/namei.c:do_last(), lookup_open() and atomic_open(). + */ +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args) +{ + int err; + struct au_branch *br = args->br; + struct file *file = args->file; + /* copied from linux/fs/namei.c:atomic_open() */ + struct dentry *const DENTRY_NOT_SET = (void *)-1UL; + + IMustLock(dir); + AuDebugOn(!dir->i_op->atomic_open); + + err = au_br_test_oflag(args->open_flag, br); + if (unlikely(err)) + goto out; + + au_lcnt_inc(&br->br_nfiles); + file->f_path.dentry = DENTRY_NOT_SET; + file->f_path.mnt = au_br_mnt(br); + AuDbg("%ps\n", dir->i_op->atomic_open); + err = dir->i_op->atomic_open(dir, dentry, file, args->open_flag, + args->create_mode); + if (unlikely(err < 0)) { + au_lcnt_dec(&br->br_nfiles); + goto out; + } + + /* temporary workaround for nfsv4 branch */ + if (au_test_nfs(dir->i_sb)) + nfs_mark_for_revalidate(dir); + + if (file->f_mode & FMODE_CREATED) + fsnotify_create(dir, dentry); + if (!(file->f_mode & FMODE_OPENED)) { + au_lcnt_dec(&br->br_nfiles); + goto out; + } + + /* todo: call VFS:may_open() here */ + /* todo: ima_file_check() too? */ + if (!err && (args->open_flag & __FMODE_EXEC)) + err = deny_write_access(file); + if (!err) + fsnotify_open(file); + else + au_lcnt_dec(&br->br_nfiles); + /* note that the file is created and still opened */ + +out: + return err; +} + +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) +{ + int err; + + err = kern_path(name, flags, path); + if (!err && d_is_positive(path->dentry)) + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + return err; +} + +struct dentry *vfsub_lookup_one_len_unlocked(const char *name, + struct dentry *parent, int len) +{ + struct path path = { + .mnt = NULL + }; + + path.dentry = lookup_one_len_unlocked(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (d_is_positive(path.dentry)) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len) +{ + struct path path = { + .mnt = NULL + }; + + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(d_inode(parent)); + + path.dentry = lookup_one_len(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (d_is_positive(path.dentry)) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +void vfsub_call_lkup_one(void *args) +{ + struct vfsub_lkup_one_args *a = args; + *a->errp = vfsub_lkup_one(a->name, a->parent); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + struct dentry *d; + + lockdep_off(); + d = lock_rename(d1, d2); + lockdep_on(); + au_hn_suspend(hdir1); + if (hdir1 != hdir2) + au_hn_suspend(hdir2); + + return d; +} + +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + au_hn_resume(hdir1); + if (hdir1 != hdir2) + au_hn_resume(hdir2); + lockdep_off(); + unlock_rename(d1, d2); + lockdep_on(); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_create(struct inode *dir, struct path *path, int mode, bool want_excl) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, 0); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_create(dir, path->dentry, mode, want_excl); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_symlink(path, d, symname); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_symlink(dir, path->dentry, symname); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, new_encode_dev(dev)); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_mknod(dir, path->dentry, mode, dev); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +static int au_test_nlink(struct inode *inode) +{ + const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ + + if (!au_test_fs_no_limit_nlink(inode->i_sb) + || inode->i_nlink < link_max) + return 0; + return -EMLINK; +} + +int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path, + struct inode **delegated_inode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + err = au_test_nlink(d_inode(src_dentry)); + if (unlikely(err)) + return err; + + /* we don't call may_linkat() */ + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_link(src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_link(src_dentry, dir, path->dentry, delegated_inode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + /* fuse has different memory inode for the same inumber */ + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct path *path, + struct inode **delegated_inode, unsigned int flags) +{ + int err; + struct path tmp = { + .mnt = path->mnt + }; + struct dentry *d; + + IMustLock(dir); + IMustLock(src_dir); + + d = path->dentry; + path->dentry = d->d_parent; + tmp.dentry = src_dentry->d_parent; + err = security_path_rename(&tmp, src_dentry, path, d, /*flags*/0); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rename(src_dir, src_dentry, dir, path->dentry, + delegated_inode, flags); + lockdep_on(); + if (!err) { + int did; + + tmp.dentry = d->d_parent; + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mkdir(path, d, mode); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_mkdir(dir, path->dentry, mode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rmdir(struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_rmdir(path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rmdir(dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { + .dentry = path->dentry->d_parent, + .mnt = path->mnt + }; + + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: support mmap_sem? */ +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_read(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +/* todo: kernel_read()? */ +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_read_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_write(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_write_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +int vfsub_flush(struct file *file, fl_owner_t id) +{ + int err; + + err = 0; + if (file->f_op->flush) { + if (!au_test_nfs(file->f_path.dentry->d_sb)) + err = file->f_op->flush(file, id); + else { + lockdep_off(); + err = file->f_op->flush(file, id); + lockdep_on(); + } + if (!err) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); + /*ignore*/ + } + return err; +} + +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx) +{ + int err; + + AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); + + lockdep_off(); + err = iterate_dir(file, ctx); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + + return err; +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_to(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) + vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_from(pipe, out, ppos, len, flags); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_fsync(struct file *file, struct path *path, int datasync) +{ + int err; + + /* file can be NULL */ + lockdep_off(); + err = vfs_fsync(file, datasync); + lockdep_on(); + if (!err) { + if (!path) { + AuDebugOn(!file); + path = &file->f_path; + } + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + } + return err; +} + +/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file) +{ + int err; + struct inode *h_inode; + struct super_block *h_sb; + + if (!h_file) { + err = vfsub_truncate(h_path, length); + goto out; + } + + h_inode = d_inode(h_path->dentry); + h_sb = h_inode->i_sb; + lockdep_off(); + sb_start_write(h_sb); + lockdep_on(); + err = locks_verify_truncate(h_inode, h_file, length); + if (!err) + err = security_path_truncate(h_path); + if (!err) { + lockdep_off(); + err = do_truncate(h_path->dentry, length, attr, h_file); + lockdep_on(); + } + lockdep_off(); + sb_end_write(h_sb); + lockdep_on(); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_vfsub_mkdir_args { + int *errp; + struct inode *dir; + struct path *path; + int mode; +}; + +static void au_call_vfsub_mkdir(void *args) +{ + struct au_vfsub_mkdir_args *a = args; + *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); +} + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_mkdir(dir, path, mode); + lockdep_on(); + } else { + struct au_vfsub_mkdir_args args = { + .errp = &err, + .dir = dir, + .path = path, + .mode = mode + }; + wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +struct au_vfsub_rmdir_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void au_call_vfsub_rmdir(void *args) +{ + struct au_vfsub_rmdir_args *a = args; + *a->errp = vfsub_rmdir(a->dir, a->path); +} + +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_rmdir(dir, path); + lockdep_on(); + } else { + struct au_vfsub_rmdir_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct notify_change_args { + int *errp; + struct path *path; + struct iattr *ia; + struct inode **delegated_inode; +}; + +static void call_notify_change(void *args) +{ + struct notify_change_args *a = args; + struct inode *h_inode; + + h_inode = d_inode(a->path->dentry); + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { + lockdep_off(); + *a->errp = notify_change(a->path->dentry, a->ia, + a->delegated_inode); + lockdep_on(); + if (!*a->errp) + vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ + } + AuTraceErr(*a->errp); +} + +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + call_notify_change(&args); + + return err; +} + +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err, wkq_err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + wkq_err = au_wkq_wait(call_notify_change, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct unlink_args { + int *errp; + struct inode *dir; + struct path *path; + struct inode **delegated_inode; +}; + +static void call_unlink(void *args) +{ + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && au_dcount(d) == 1); + + IMustLock(a->dir); + + a->path->dentry = d->d_parent; + *a->errp = security_path_unlink(a->path, d); + a->path->dentry = d; + if (unlikely(*a->errp)) + return; + + if (!stop_sillyrename) + dget(d); + h_inode = NULL; + if (d_is_positive(d)) { + h_inode = d_inode(d); + ihold(h_inode); + } + + lockdep_off(); + *a->errp = vfs_unlink(a->dir, d, a->delegated_inode); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { + .dentry = d->d_parent, + .mnt = a->path->mnt + }; + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + + if (!stop_sillyrename) + dput(d); + if (h_inode) + iput(h_inode); + + AuTraceErr(*a->errp); +} + +/* + * @dir: must be locked. + * @dentry: target dentry. + */ +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force) +{ + int err; + struct unlink_args args = { + .errp = &err, + .dir = dir, + .path = path, + .delegated_inode = delegated_inode + }; + + if (!force) + call_unlink(&args); + else { + int wkq_err; + + wkq_err = au_wkq_wait(call_unlink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} --- linux-5.8.0.orig/fs/aufs/vfsub.h +++ linux-5.8.0/fs/aufs/vfsub.h @@ -0,0 +1,354 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#ifndef __AUFS_VFSUB_H__ +#define __AUFS_VFSUB_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include +#include "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern void __mnt_drop_write(struct vfsmount *); +extern struct file *alloc_empty_file(int, const struct cred *); + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for lower inode */ +/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ +/* reduce? gave up. */ +enum { + AuLsc_I_Begin = I_MUTEX_PARENT2, /* 5 */ + AuLsc_I_PARENT, /* lower inode, parent first */ + AuLsc_I_PARENT2, /* copyup dirs */ + AuLsc_I_PARENT3, /* copyup wh */ + AuLsc_I_CHILD, + AuLsc_I_CHILD2, + AuLsc_I_End +}; + +/* to debug easier, do not make them inlined functions */ +#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) +#define IMustLock(i) AuDebugOn(!inode_is_locked(i)) + +/* ---------------------------------------------------------------------- */ + +static inline void vfsub_drop_nlink(struct inode *inode) +{ + AuDebugOn(!inode->i_nlink); + drop_nlink(inode); +} + +static inline void vfsub_dead_dir(struct inode *inode) +{ + AuDebugOn(!S_ISDIR(inode->i_mode)); + inode->i_flags |= S_DEAD; + clear_nlink(inode); +} + +static inline int vfsub_native_ro(struct inode *inode) +{ + return sb_rdonly(inode->i_sb) + || IS_RDONLY(inode) + /* || IS_APPEND(inode) */ + || IS_IMMUTABLE(inode); +} + +#ifdef CONFIG_AUFS_BR_FUSE +int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb); +#else +AuStubInt0(vfsub_test_mntns, struct vfsmount *mnt, struct super_block *h_sb); +#endif + +int vfsub_sync_filesystem(struct super_block *h_sb, int wait); + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); +struct file *vfsub_dentry_open(struct path *path, int flags); +struct file *vfsub_filp_open(const char *path, int oflags, int mode); +struct au_branch; +struct vfsub_aopen_args { + struct file *file; + unsigned int open_flag; + umode_t create_mode; + struct au_branch *br; +}; +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); + +struct dentry *vfsub_lookup_one_len_unlocked(const char *name, + struct dentry *parent, int len); +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len); + +struct vfsub_lkup_one_args { + struct dentry **errp; + struct qstr *name; + struct dentry *parent; +}; + +static inline struct dentry *vfsub_lkup_one(struct qstr *name, + struct dentry *parent) +{ + return vfsub_lookup_one_len(name->name, parent, name->len); +} + +void vfsub_call_lkup_one(void *args); + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_mnt_want_write(struct vfsmount *mnt) +{ + int err; + + lockdep_off(); + err = mnt_want_write(mnt); + lockdep_on(); + return err; +} + +static inline void vfsub_mnt_drop_write(struct vfsmount *mnt) +{ + lockdep_off(); + mnt_drop_write(mnt); + lockdep_on(); +} + +#if 0 /* reserved */ +static inline void vfsub_mnt_drop_write_file(struct file *file) +{ + lockdep_off(); + mnt_drop_write_file(file); + lockdep_on(); +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_hinode; +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); + +int vfsub_create(struct inode *dir, struct path *path, int mode, + bool want_excl); +int vfsub_symlink(struct inode *dir, struct path *path, + const char *symname); +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); +int vfsub_link(struct dentry *src_dentry, struct inode *dir, + struct path *path, struct inode **delegated_inode); +int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, + struct inode *hdir, struct path *path, + struct inode **delegated_inode, unsigned int flags); +int vfsub_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_rmdir(struct inode *dir, struct path *path); + +/* ---------------------------------------------------------------------- */ + +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +int vfsub_flush(struct file *file, fl_owner_t id); +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx); + +static inline loff_t vfsub_f_size_read(struct file *file) +{ + return i_size_read(file_inode(file)); +} + +static inline unsigned int vfsub_file_flags(struct file *file) +{ + unsigned int flags; + + spin_lock(&file->f_lock); + flags = file->f_flags; + spin_unlock(&file->f_lock); + + return flags; +} + +static inline int vfsub_file_execed(struct file *file) +{ + /* todo: direct access f_flags */ + return !!(vfsub_file_flags(file) & __FMODE_EXEC); +} + +#if 0 /* reserved */ +static inline void vfsub_file_accessed(struct file *h_file) +{ + file_accessed(h_file); + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ +} +#endif + +#if 0 /* reserved */ +static inline void vfsub_touch_atime(struct vfsmount *h_mnt, + struct dentry *h_dentry) +{ + struct path h_path = { + .dentry = h_dentry, + .mnt = h_mnt + }; + touch_atime(&h_path); + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ +} +#endif + +static inline int vfsub_update_time(struct inode *h_inode, + struct timespec64 *ts, int flags) +{ + return update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +#ifdef CONFIG_FS_POSIX_ACL +static inline int vfsub_acl_chmod(struct inode *h_inode, umode_t h_mode) +{ + int err; + + err = posix_acl_chmod(h_inode, h_mode); + if (err == -EOPNOTSUPP) + err = 0; + return err; +} +#else +AuStubInt0(vfsub_acl_chmod, struct inode *h_inode, umode_t h_mode); +#endif + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); + +static inline long vfsub_truncate(struct path *path, loff_t length) +{ + long err; + + lockdep_off(); + err = vfs_truncate(path, length); + lockdep_on(); + return err; +} + +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file); +int vfsub_fsync(struct file *file, struct path *path, int datasync); + +/* + * re-use branch fs's ioctl(FICLONE) while aufs itself doesn't support such + * ioctl. + */ +static inline loff_t vfsub_clone_file_range(struct file *src, struct file *dst, + loff_t len) +{ + loff_t err; + + lockdep_off(); + err = vfs_clone_file_range(src, 0, dst, 0, len, /*remap_flags*/0); + lockdep_on(); + + return err; +} + +/* copy_file_range(2) is a systemcall */ +static inline ssize_t vfsub_copy_file_range(struct file *src, loff_t src_pos, + struct file *dst, loff_t dst_pos, + size_t len, unsigned int flags) +{ + ssize_t ssz; + + lockdep_off(); + ssz = vfs_copy_file_range(src, src_pos, dst, dst_pos, len, flags); + lockdep_on(); + + return ssz; +} + +/* ---------------------------------------------------------------------- */ + +static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t err; + + lockdep_off(); + err = vfs_llseek(file, offset, origin); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_sio_rmdir(struct inode *dir, struct path *path); +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force); + +static inline int vfsub_getattr(const struct path *path, struct kstat *st) +{ + return vfs_getattr(path, st, STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); +} + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + + lockdep_off(); + err = vfs_setxattr(dentry, name, value, size, flags); + lockdep_on(); + + return err; +} + +static inline int vfsub_removexattr(struct dentry *dentry, const char *name) +{ + int err; + + lockdep_off(); + err = vfs_removexattr(dentry, name); + lockdep_on(); + + return err; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ --- linux-5.8.0.orig/fs/aufs/wbr_policy.c +++ linux-5.8.0/fs/aufs/wbr_policy.c @@ -0,0 +1,830 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * policies for selecting one among multiple writable branches + */ + +#include +#include "aufs.h" + +/* subset of cpup_attr() */ +static noinline_for_stack +int au_cpdown_attr(struct path *h_path, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct inode *h_isrc; + + h_isrc = d_inode(h_src); + ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; + ia.ia_mode = h_isrc->i_mode; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(d_inode(h_path->dentry), h_isrc->i_flags); + /* no delegation since it is just created */ + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + } + + return err; +} + +#define AuCpdown_PARENT_OPQ 1 +#define AuCpdown_WHED (1 << 1) +#define AuCpdown_MADE_DIR (1 << 2) +#define AuCpdown_DIROPQ (1 << 3) +#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) +#define au_fset_cpdown(flags, name) \ + do { (flags) |= AuCpdown_##name; } while (0) +#define au_fclr_cpdown(flags, name) \ + do { (flags) &= ~AuCpdown_##name; } while (0) + +static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, + unsigned int *flags) +{ + int err; + struct dentry *opq_dentry; + + opq_dentry = au_diropq_create(dentry, bdst); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out; + dput(opq_dentry); + au_fset_cpdown(*flags, DIROPQ); + +out: + return err; +} + +static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, + struct inode *dir, aufs_bindex_t bdst) +{ + int err; + struct path h_path; + struct au_branch *br; + + br = au_sbr(dentry->d_sb, bdst); + h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, + dentry); + } + dput(h_path.dentry); + +out: + return err; +} + +static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg) +{ + int err, rerr; + aufs_bindex_t bopq, btop; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + unsigned int *flags = arg; + + btop = au_dbtop(dentry); + /* dentry is di-locked */ + parent = dget_parent(dentry); + dir = d_inode(parent); + h_dir = d_inode(h_parent); + AuDebugOn(h_dir != au_h_iptr(dir, bdst)); + IMustLock(h_dir); + + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (unlikely(err < 0)) + goto out; + h_path.dentry = au_h_dptr(dentry, bdst); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); + err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, 0755); + if (unlikely(err)) + goto out_put; + au_fset_cpdown(*flags, MADE_DIR); + + bopq = au_dbdiropq(dentry); + au_fclr_cpdown(*flags, WHED); + au_fclr_cpdown(*flags, DIROPQ); + if (au_dbwh(dentry) == bdst) + au_fset_cpdown(*flags, WHED); + if (!au_ftest_cpdown(*flags, PARENT_OPQ) && bopq <= bdst) + au_fset_cpdown(*flags, PARENT_OPQ); + h_inode = d_inode(h_path.dentry); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, flags); + if (unlikely(err)) { + inode_unlock(h_inode); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, btop)); + inode_unlock(h_inode); + if (unlikely(err)) + goto out_opq; + + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); + if (unlikely(err)) + goto out_opq; + } + + inode = d_inode(dentry); + if (au_ibbot(inode) < bdst) + au_set_ibbot(inode, bdst); + au_set_h_iptr(inode, bdst, au_igrab(h_inode), + au_hi_flags(inode, /*isdir*/1)); + au_fhsm_wrote(dentry->d_sb, bdst, /*force*/0); + goto out; /* success */ + + /* revert */ +out_opq: + if (au_ftest_cpdown(*flags, DIROPQ)) { + inode_lock_nested(h_inode, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + inode_unlock(h_inode); + if (unlikely(rerr)) { + AuIOErr("failed removing diropq for %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + goto out; + } + } +out_dir: + if (au_ftest_cpdown(*flags, MADE_DIR)) { + rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); + if (unlikely(rerr)) { + AuIOErr("failed removing %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + } + } +out_put: + au_set_h_dptr(dentry, bdst, NULL); + if (au_dbbot(dentry) == bdst) + au_update_dbbot(dentry); +out: + dput(parent); + return err; +} + +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + unsigned int flags; + + flags = 0; + err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &flags); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for create */ + +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, i, j, ndentry; + aufs_bindex_t bopq; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *parent, *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + parent = dget_parent(dentry); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); + if (unlikely(err)) + goto out_free; + + err = bindex; + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + di_read_lock_parent2(d, !AuLock_IR); + bopq = au_dbdiropq(d); + di_read_unlock(d, !AuLock_IR); + if (bopq >= 0 && bopq < err) + err = bopq; + } + } + +out_free: + dput(parent); + au_dpages_free(&dpages); +out: + return err; +} + +static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) +{ + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) + return bindex; + return -EROFS; +} + +/* top down parent */ +static int au_wbr_create_tdp(struct dentry *dentry, + unsigned int flags __maybe_unused) +{ + int err; + aufs_bindex_t btop, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + err = btop; + if (!au_br_rdonly(au_sbr(sb, btop))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbtop(parent); bindex < btop; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) { + err = au_wbr_bu(sb, btop - 1); + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + } + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* an exception for the policy other than tdp */ +static int au_wbr_create_exp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bdiropq; + struct dentry *parent; + + err = -1; + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + bdiropq = au_dbdiropq(parent); + if (bwh >= 0) { + if (bdiropq >= 0) + err = min(bdiropq, bwh); + else + err = bwh; + AuDbg("%d\n", err); + } else if (bdiropq >= 0) { + err = bdiropq; + AuDbg("%d\n", err); + } + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + + if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) + err = -1; + + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* round robin */ +static int au_wbr_create_init_rr(struct super_block *sb) +{ + int err; + + err = au_wbr_bu(sb, au_sbbot(sb)); + atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ + /* smp_mb(); */ + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_rr(struct dentry *dentry, unsigned int flags) +{ + int err, nbr; + unsigned int u; + aufs_bindex_t bindex, bbot; + struct super_block *sb; + atomic_t *next; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + next = &au_sbi(sb)->si_wbr_rr_next; + bbot = au_sbbot(sb); + nbr = bbot + 1; + for (bindex = 0; bindex <= bbot; bindex++) { + if (!au_ftest_wbr(flags, DIR)) { + err = atomic_dec_return(next) + 1; + /* modulo for 0 is meaningless */ + if (unlikely(!err)) + err = atomic_dec_return(next) + 1; + } else + err = atomic_read(next); + AuDbg("%d\n", err); + u = err; + err = u % nbr; + AuDbg("%d\n", err); + if (!au_br_rdonly(au_sbr(sb, err))) + break; + err = -EROFS; + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space */ +static void au_mfs(struct dentry *dentry, struct dentry *parent) +{ + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + struct dentry *h_parent; + aufs_bindex_t bindex, bbot; + int err; + unsigned long long b, bavail; + struct path h_path; + /* reduce the stack usage */ + struct kstatfs *st; + + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) { + AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); + return; + } + + bavail = 0; + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + MtxMustLock(&mfs->mfs_lock); + mfs->mfs_bindex = -EROFS; + mfs->mfsrr_bytes = 0; + if (!parent) { + bindex = 0; + bbot = au_sbbot(sb); + } else { + bindex = au_dbtop(parent); + bbot = au_dbtaildir(parent); + } + + for (; bindex <= bbot; bindex++) { + if (parent) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + } + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_br_mnt(br); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, st); + if (unlikely(err)) { + AuWarn1("failed statfs, b%d, %d\n", bindex, err); + continue; + } + + /* when the available size is equal, select the lower one */ + BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) + || sizeof(b) < sizeof(st->f_bsize)); + b = st->f_bavail * st->f_bsize; + br->br_wbr->wbr_bytes = b; + if (b >= bavail) { + bavail = b; + mfs->mfs_bindex = bindex; + mfs->mfs_jiffy = jiffies; + } + } + + mfs->mfsrr_bytes = bavail; + AuDbg("b%d\n", mfs->mfs_bindex); + au_kfree_rcu(st); +} + +static int au_wbr_create_mfs(struct dentry *dentry, unsigned int flags) +{ + int err; + struct dentry *parent; + struct super_block *sb; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + parent = NULL; + if (au_ftest_wbr(flags, PARENT)) + parent = dget_parent(dentry); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0 + || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) + au_mfs(dentry, parent); + mutex_unlock(&mfs->mfs_lock); + err = mfs->mfs_bindex; + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfs(struct super_block *sb) +{ + struct au_wbr_mfs *mfs; + + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_init(&mfs->mfs_lock); + mfs->mfs_jiffy = 0; + mfs->mfs_bindex = -EROFS; + + return 0; +} + +static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) +{ + mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/* top down regardless parent, and then mfs */ +static int au_wbr_create_tdmfs(struct dentry *dentry, + unsigned int flags __maybe_unused) +{ + int err; + aufs_bindex_t bwh, btail, bindex, bfound, bmfs; + unsigned long long watermark; + struct super_block *sb; + struct au_wbr_mfs *mfs; + struct au_branch *br; + struct dentry *parent; + + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0) + au_mfs(dentry, /*parent*/NULL); + watermark = mfs->mfsrr_watermark; + bmfs = mfs->mfs_bindex; + mutex_unlock(&mfs->mfs_lock); + + /* another style of au_wbr_create_exp() */ + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + if (bwh >= 0 && bwh < btail) + btail = bwh; + + err = au_wbr_nonopq(dentry, btail); + if (unlikely(err < 0)) + goto out; + btail = err; + bfound = -1; + for (bindex = 0; bindex <= btail; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + if (br->br_wbr->wbr_bytes > watermark) { + bfound = bindex; + break; + } + } + err = bfound; + if (err < 0) + err = bmfs; + +out: + dput(parent); + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space and then round robin */ +static int au_wbr_create_mfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_mfs(dentry, flags); + if (err >= 0) { + mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) + err = au_wbr_create_rr(dentry, flags); + mutex_unlock(&mfs->mfs_lock); + } + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfsrr(struct super_block *sb) +{ + int err; + + au_wbr_create_init_mfs(sb); /* ignore */ + err = au_wbr_create_init_rr(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* top down parent and most free space */ +static int au_wbr_create_pmfs(struct dentry *dentry, unsigned int flags) +{ + int err, e2; + unsigned long long b; + aufs_bindex_t bindex, btop, bbot; + struct super_block *sb; + struct dentry *parent, *h_parent; + struct au_branch *br; + + err = au_wbr_create_tdp(dentry, flags); + if (unlikely(err < 0)) + goto out; + parent = dget_parent(dentry); + btop = au_dbtop(parent); + bbot = au_dbtaildir(parent); + if (btop == bbot) + goto out_parent; /* success */ + + e2 = au_wbr_create_mfs(dentry, flags); + if (e2 < 0) + goto out_parent; /* success */ + + /* when the available size is equal, select upper one */ + sb = dentry->d_sb; + br = au_sbr(sb, err); + b = br->br_wbr->wbr_bytes; + AuDbg("b%d, %llu\n", err, b); + + for (bindex = btop; bindex <= bbot; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { + b = br->br_wbr->wbr_bytes; + err = bindex; + AuDbg("b%d, %llu\n", err, b); + } + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out_parent: + dput(parent); +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * - top down parent + * - most free space with parent + * - most free space round-robin regardless parent + */ +static int au_wbr_create_pmfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + unsigned long long watermark; + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_pmfs(dentry, flags | AuWbr_PARENT); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, err); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + watermark = mfs->mfsrr_watermark; + mutex_unlock(&mfs->mfs_lock); + if (br->br_wbr->wbr_bytes < watermark) + /* regardless the parent dir */ + err = au_wbr_create_mfsrr(dentry, flags); + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for copyup */ + +/* top down parent */ +static int au_wbr_copyup_tdp(struct dentry *dentry) +{ + return au_wbr_create_tdp(dentry, /*flags, anything is ok*/0); +} + +/* bottom up parent */ +static int au_wbr_copyup_bup(struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, btop; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + btop = au_dbtop(parent); + for (bindex = au_dbtop(dentry); bindex >= btop; bindex--) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) + err = au_wbr_bu(sb, btop - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop) +{ + int err; + + err = au_wbr_bu(dentry->d_sb, btop); + AuDbg("b%d\n", err); + if (err > btop) + err = au_wbr_nonopq(dentry, err); + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_copyup_bu(struct dentry *dentry) +{ + int err; + aufs_bindex_t btop; + + btop = au_dbtop(dentry); + err = au_wbr_do_copyup_bu(dentry, btop); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { + [AuWbrCopyup_TDP] = { + .copyup = au_wbr_copyup_tdp + }, + [AuWbrCopyup_BUP] = { + .copyup = au_wbr_copyup_bup + }, + [AuWbrCopyup_BU] = { + .copyup = au_wbr_copyup_bu + } +}; + +struct au_wbr_create_operations au_wbr_create_ops[] = { + [AuWbrCreate_TDP] = { + .create = au_wbr_create_tdp + }, + [AuWbrCreate_RR] = { + .create = au_wbr_create_rr, + .init = au_wbr_create_init_rr + }, + [AuWbrCreate_MFS] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSV] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRR] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRRV] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_TDMFS] = { + .create = au_wbr_create_tdmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_TDMFSV] = { + .create = au_wbr_create_tdmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFS] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSV] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRR] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRRV] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + } +}; --- linux-5.8.0.orig/fs/aufs/whout.c +++ linux-5.8.0/fs/aufs/whout.c @@ -0,0 +1,1062 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#include "aufs.h" + +#define WH_MASK 0444 + +/* + * If a directory contains this file, then it is opaque. We start with the + * .wh. flag so that it is blocked by lookup. + */ +static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, + sizeof(AUFS_WH_DIROPQ) - 1); + +/* + * generate whiteout name, which is NOT terminated by NULL. + * @name: original d_name.name + * @len: original d_name.len + * @wh: whiteout qstr + * returns zero when succeeds, otherwise error. + * succeeded value as wh->name should be freed by kfree(). + */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) +{ + char *p; + + if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) + return -ENAMETOOLONG; + + wh->len = name->len + AUFS_WH_PFX_LEN; + p = kmalloc(wh->len, GFP_NOFS); + wh->name = p; + if (p) { + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); + /* smp_mb(); */ + return 0; + } + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if the @wh_name exists under @h_parent. + * @try_sio specifies the necessary of super-io. + */ +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, int try_sio) +{ + int err; + struct dentry *wh_dentry; + + if (!try_sio) + wh_dentry = vfsub_lkup_one(wh_name, h_parent); + else + wh_dentry = au_sio_lkup_one(wh_name, h_parent); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) { + if (err == -ENAMETOOLONG) + err = 0; + goto out; + } + + err = 0; + if (d_is_negative(wh_dentry)) + goto out_wh; /* success */ + + err = 1; + if (d_is_reg(wh_dentry)) + goto out_wh; /* success */ + + err = -EIO; + AuIOErr("%pd Invalid whiteout entry type 0%o.\n", + wh_dentry, d_inode(wh_dentry)->i_mode); + +out_wh: + dput(wh_dentry); +out: + return err; +} + +/* + * test if the @h_dentry sets opaque or not. + */ +int au_diropq_test(struct dentry *h_dentry) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_dentry); + err = au_wh_test(h_dentry, &diropq_name, + au_test_h_perm_sio(h_dir, MAY_EXEC)); + return err; +} + +/* + * returns a negative dentry whose name is unique and temporary. + */ +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix) +{ + struct dentry *dentry; + int i; + char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], + *name, *p; + /* strict atomic_t is unnecessary here */ + static unsigned short cnt; + struct qstr qs; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + + name = defname; + qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; + if (unlikely(prefix->len > DNAME_INLINE_LEN)) { + dentry = ERR_PTR(-ENAMETOOLONG); + if (unlikely(qs.len > NAME_MAX)) + goto out; + dentry = ERR_PTR(-ENOMEM); + name = kmalloc(qs.len + 1, GFP_NOFS); + if (unlikely(!name)) + goto out; + } + + /* doubly whiteout-ed */ + memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); + p = name + AUFS_WH_PFX_LEN * 2; + memcpy(p, prefix->name, prefix->len); + p += prefix->len; + *p++ = '.'; + AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); + + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); + dentry = au_sio_lkup_one(&qs, h_parent); + if (IS_ERR(dentry) || d_is_negative(dentry)) + goto out_name; + dput(dentry); + } + /* pr_warn("could not get random name\n"); */ + dentry = ERR_PTR(-EEXIST); + AuDbg("%.*s\n", AuLNPair(&qs)); + BUG(); + +out_name: + if (name != defname) + au_kfree_try_rcu(name); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* + * rename the @h_dentry on @br to the whiteouted temporary name. + */ +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + struct dentry *h_parent; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + /* under the same dir, no need to lock_rename() */ + delegated = NULL; + err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path, &delegated, + /*flags*/0); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * functions for removing a whiteout + */ + +static int do_unlink_wh(struct inode *h_dir, struct path *h_path) +{ + int err, force; + struct inode *delegated; + + /* + * forces superio when the dir has a sticky bit. + * this may be a violation of unix fs semantics. + */ + force = (h_dir->i_mode & S_ISVTX) + && !uid_eq(current_fsuid(), d_inode(h_path->dentry)->i_uid); + delegated = NULL; + err = vfsub_unlink(h_dir, h_path, &delegated, force); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + return err; +} + +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry) +{ + int err; + + err = do_unlink_wh(h_dir, h_path); + if (!err && dentry) + au_set_dbwh(dentry, -1); + + return err; +} + +static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh, + struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + + err = 0; + h_path.dentry = vfsub_lkup_one(wh, h_parent); + if (IS_ERR(h_path.dentry)) + err = PTR_ERR(h_path.dentry); + else { + if (d_is_reg(h_path.dentry)) + err = do_unlink_wh(d_inode(h_parent), &h_path); + dput(h_path.dentry); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * initialize/clean whiteout for a branch + */ + +static void au_wh_clean(struct inode *h_dir, struct path *whpath, + const int isdir) +{ + int err; + struct inode *delegated; + + if (d_is_negative(whpath->dentry)) + return; + + if (isdir) + err = vfsub_rmdir(h_dir, whpath); + else { + delegated = NULL; + err = vfsub_unlink(h_dir, whpath, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } + if (unlikely(err)) + pr_warn("failed removing %pd (%d), ignored.\n", + whpath->dentry, err); +} + +static int test_linkable(struct dentry *h_root) +{ + struct inode *h_dir = d_inode(h_root); + + if (h_dir->i_op->link) + return 0; + + pr_err("%pd (%s) doesn't support link(2), use noplink and rw+nolwh\n", + h_root, au_sbtype(h_root->d_sb)); + return -ENOSYS; /* the branch doesn't have its ->link() */ +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ +static int au_whdir(struct inode *h_dir, struct path *path) +{ + int err; + + err = -EEXIST; + if (d_is_negative(path->dentry)) { + int mode = 0700; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= 0111; + err = vfsub_mkdir(h_dir, path, mode); + } else if (d_is_dir(path->dentry)) + err = 0; + else + pr_err("unknown %pd exists\n", path->dentry); + + return err; +} + +struct au_wh_base { + const struct qstr *name; + struct dentry *dentry; +}; + +static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], + struct path *h_path) +{ + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); +} + +/* + * returns tri-state, + * minus: error, caller should print the message + * zero: success + * plus: error, caller should NOT print the message + */ +static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_root); + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * for the moment, aufs supports the branch filesystem which does not support + * link(2). testing on FAT which does not support i_op->setattr() fully either, + * copyup failed. finally, such filesystem will not be used as the writable + * branch. + * + * returns tri-state, see above. + */ +static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + WbrWhMustWriteLock(wbr); + + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + /* + * todo: should this create be done in /sbin/mount.aufs helper? + */ + err = -EEXIST; + h_dir = d_inode(h_root); + if (d_is_negative(base[AuBrWh_BASE].dentry)) { + h_path->dentry = base[AuBrWh_BASE].dentry; + err = vfsub_create(h_dir, h_path, WH_MASK, /*want_excl*/true); + } else if (d_is_reg(base[AuBrWh_BASE].dentry)) + err = 0; + else + pr_err("unknown %pd2 exists\n", base[AuBrWh_BASE].dentry); + if (unlikely(err)) + goto out; + + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); + + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * initialize the whiteout base file/dir for @br. + */ +int au_wh_init(struct au_branch *br, struct super_block *sb) +{ + int err, i; + const unsigned char do_plink + = !!au_opt_test(au_mntflags(sb), PLINK); + struct inode *h_dir; + struct path path = br->br_path; + struct dentry *h_root = path.dentry; + struct au_wbr *wbr = br->br_wbr; + static const struct qstr base_name[] = { + [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, + sizeof(AUFS_BASE_NAME) - 1), + [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, + sizeof(AUFS_PLINKDIR_NAME) - 1), + [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, + sizeof(AUFS_ORPHDIR_NAME) - 1) + }; + struct au_wh_base base[] = { + [AuBrWh_BASE] = { + .name = base_name + AuBrWh_BASE, + .dentry = NULL + }, + [AuBrWh_PLINK] = { + .name = base_name + AuBrWh_PLINK, + .dentry = NULL + }, + [AuBrWh_ORPH] = { + .name = base_name + AuBrWh_ORPH, + .dentry = NULL + } + }; + + if (wbr) + WbrWhMustWriteLock(wbr); + + for (i = 0; i < AuBrWh_Last; i++) { + /* doubly whiteouted */ + struct dentry *d; + + d = au_wh_lkup(h_root, (void *)base[i].name, br); + err = PTR_ERR(d); + if (IS_ERR(d)) + goto out; + + base[i].dentry = d; + AuDebugOn(wbr + && wbr->wbr_wh[i] + && wbr->wbr_wh[i] != base[i].dentry); + } + + if (wbr) + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + + err = 0; + if (!au_br_writable(br->br_perm)) { + h_dir = d_inode(h_root); + au_wh_init_ro(h_dir, base, &path); + } else if (!au_br_wh_linkable(br->br_perm)) { + err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } else { + err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } + goto out; /* success */ + +out_err: + pr_err("an error(%d) on the writable branch %pd(%s)\n", + err, h_root, au_sbtype(h_root->d_sb)); +out: + for (i = 0; i < AuBrWh_Last; i++) + dput(base[i].dentry); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * whiteouts are all hard-linked usually. + * when its link count reaches a ceiling, we create a new whiteout base + * asynchronously. + */ + +struct reinit_br_wh { + struct super_block *sb; + struct au_branch *br; +}; + +static void reinit_br_wh(void *arg) +{ + int err; + aufs_bindex_t bindex; + struct path h_path; + struct reinit_br_wh *a = arg; + struct au_wbr *wbr; + struct inode *dir, *delegated; + struct dentry *h_root; + struct au_hinode *hdir; + + err = 0; + wbr = a->br->br_wbr; + /* big aufs lock */ + si_noflush_write_lock(a->sb); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(a->sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + di_read_lock_parent(a->sb->s_root, AuLock_IR); + dir = d_inode(a->sb->s_root); + hdir = au_hi(dir, bindex); + h_root = au_h_dptr(a->sb->s_root, bindex); + AuDebugOn(h_root != au_br_dentry(a->br)); + + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + wbr_wh_write_lock(wbr); + err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, + h_root, a->br); + if (!err) { + h_path.dentry = wbr->wbr_whbase; + h_path.mnt = au_br_mnt(a->br); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, + /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + pr_warn("%pd is moved, ignored\n", wbr->wbr_whbase); + err = 0; + } + dput(wbr->wbr_whbase); + wbr->wbr_whbase = NULL; + if (!err) + err = au_wh_init(a->br, a->sb); + wbr_wh_write_unlock(wbr); + au_hn_inode_unlock(hdir); + di_read_unlock(a->sb->s_root, AuLock_IR); + if (!err) + au_fhsm_wrote(a->sb, bindex, /*force*/0); + +out: + if (wbr) + atomic_dec(&wbr->wbr_wh_running); + au_lcnt_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + au_kfree_rcu(a); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) +{ + int do_dec, wkq_err; + struct reinit_br_wh *arg; + + do_dec = 1; + if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) + goto out; + + /* ignore ENOMEM */ + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (arg) { + /* + * dec(wh_running), kfree(arg) and dec(br_count) + * in reinit function + */ + arg->sb = sb; + arg->br = br; + au_lcnt_inc(&br->br_count); + wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + atomic_dec(&br->br_wbr->wbr_wh_running); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(arg); + } + do_dec = 0; + } + +out: + if (do_dec) + atomic_dec(&br->br_wbr->wbr_wh_running); +} + +/* ---------------------------------------------------------------------- */ + +/* + * create the whiteout @wh. + */ +static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *wh) +{ + int err; + struct path h_path = { + .dentry = wh + }; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir, *delegated; + + h_parent = wh->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + br = au_sbr(sb, bindex); + h_path.mnt = au_br_mnt(br); + wbr = br->br_wbr; + wbr_wh_read_lock(wbr); + if (wbr->wbr_whbase) { + delegated = NULL; + err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + if (!err || err != -EMLINK) + goto out; + + /* link count full. re-initialize br_whbase. */ + kick_reinit_br_wh(sb, br); + } + + /* return this error in this context */ + err = vfsub_create(h_dir, &h_path, WH_MASK, /*want_excl*/true); + if (!err) + au_fhsm_wrote(sb, bindex, /*force*/0); + +out: + wbr_wh_read_unlock(wbr); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create or remove the diropq. + */ +static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *opq_dentry, *h_dentry; + struct super_block *sb; + struct au_branch *br; + int err; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + opq_dentry = vfsub_lkup_one(&diropq_name, h_dentry); + if (IS_ERR(opq_dentry)) + goto out; + + if (au_ftest_diropq(flags, CREATE)) { + err = link_or_create_wh(sb, bindex, opq_dentry); + if (!err) { + au_set_dbdiropq(dentry, bindex); + goto out; /* success */ + } + } else { + struct path tmp = { + .dentry = opq_dentry, + .mnt = au_br_mnt(br) + }; + err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &tmp); + if (!err) + au_set_dbdiropq(dentry, -1); + } + dput(opq_dentry); + opq_dentry = ERR_PTR(err); + +out: + return opq_dentry; +} + +struct do_diropq_args { + struct dentry **errp; + struct dentry *dentry; + aufs_bindex_t bindex; + unsigned int flags; +}; + +static void call_do_diropq(void *args) +{ + struct do_diropq_args *a = args; + *a->errp = do_diropq(a->dentry, a->bindex, a->flags); +} + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (!au_test_h_perm_sio(d_inode(h_dentry), MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; + struct do_diropq_args args = { + .errp = &diropq, + .dentry = dentry, + .bindex = bindex, + .flags = flags + }; + + wkq_err = au_wkq_wait(call_do_diropq, &args); + if (unlikely(wkq_err)) + diropq = ERR_PTR(wkq_err); + } + + return diropq; +} + +/* ---------------------------------------------------------------------- */ + +/* + * lookup whiteout dentry. + * @h_parent: lower parent dentry which must exist and be locked + * @base_name: name of dentry which will be whiteouted + * returns dentry for whiteout. + */ +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br) +{ + int err; + struct qstr wh_name; + struct dentry *wh_dentry; + + err = au_wh_name_alloc(&wh_name, base_name); + wh_dentry = ERR_PTR(err); + if (!err) { + wh_dentry = vfsub_lkup_one(&wh_name, h_parent); + au_kfree_try_rcu(wh_name.name); + } + return wh_dentry; +} + +/* + * link/create a whiteout for @dentry on @bindex. + */ +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent) +{ + struct dentry *wh_dentry; + struct super_block *sb; + int err; + + sb = dentry->d_sb; + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); + if (!IS_ERR(wh_dentry) && d_is_negative(wh_dentry)) { + err = link_or_create_wh(sb, bindex, wh_dentry); + if (!err) { + au_set_dbwh(dentry, bindex); + au_fhsm_wrote(sb, bindex, /*force*/0); + } else { + dput(wh_dentry); + wh_dentry = ERR_PTR(err); + } + } + + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* Delete all whiteouts in this directory on branch bindex. */ +static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err; + unsigned long ul, n; + struct qstr wh_name; + char *p; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + err = -ENOMEM; + p = (void *)__get_free_page(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; + + err = 0; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; !err && ul < n; ul++, head++) { + hlist_for_each_entry(pos, head, wh_hash) { + if (pos->wh_bindex != bindex) + continue; + + str = &pos->wh_str; + if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { + memcpy(p, str->name, str->len); + wh_name.len = AUFS_WH_PFX_LEN + str->len; + err = unlink_wh_name(h_dentry, &wh_name, br); + if (!err) + continue; + break; + } + AuIOErr("whiteout name too long %.*s\n", + str->len, str->name); + err = -EIO; + break; + } + } + free_page((unsigned long)wh_name.name); + +out: + return err; +} + +struct del_wh_children_args { + int *errp; + struct dentry *h_dentry; + struct au_nhash *whlist; + aufs_bindex_t bindex; + struct au_branch *br; +}; + +static void call_del_wh_children(void *args) +{ + struct del_wh_children_args *a = args; + *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br); +} + +/* ---------------------------------------------------------------------- */ + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) +{ + struct au_whtmp_rmdir *whtmp; + int err; + unsigned int rdhash; + + SiMustAnyLock(sb); + + whtmp = kzalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = AUFS_RDHASH_DEF; + err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); + if (unlikely(err)) { + au_kfree_rcu(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + au_lcnt_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + au_kfree_rcu(whtmp); +} + +/* + * rmdir the whiteouted temporary named dir @h_dentry. + * @whlist: whiteouted children. + */ +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist) +{ + int err; + unsigned int h_nlink; + struct path h_tmp; + struct inode *wh_inode, *h_dir; + struct au_branch *br; + + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + + br = au_sbr(dir->i_sb, bindex); + wh_inode = d_inode(wh_dentry); + inode_lock_nested(wh_inode, AuLsc_I_CHILD); + + /* + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ + if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(wh_dentry, whlist, bindex, br); + else { + int wkq_err; + struct del_wh_children_args args = { + .errp = &err, + .h_dentry = wh_dentry, + .whlist = whlist, + .bindex = bindex, + .br = br + }; + + wkq_err = au_wkq_wait(call_del_wh_children, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + inode_unlock(wh_inode); + + if (!err) { + h_tmp.dentry = wh_dentry; + h_tmp.mnt = au_br_mnt(br); + h_nlink = h_dir->i_nlink; + err = vfsub_rmdir(h_dir, &h_tmp); + /* some fs doesn't change the parent nlink in some cases */ + h_nlink -= h_dir->i_nlink; + } + + if (!err) { + if (au_ibtop(dir) == bindex) { + /* todo: dir->i_mutex is necessary */ + au_cpup_attr_timesizes(dir); + if (h_nlink) + vfsub_drop_nlink(dir); + } + return 0; /* success */ + } + + pr_warn("failed removing %pd(%d), ignored\n", wh_dentry, err); + return err; +} + +static void call_rmdir_whtmp(void *args) +{ + int err; + aufs_bindex_t bindex; + struct au_whtmp_rmdir *a = args; + struct super_block *sb; + struct dentry *h_parent; + struct inode *h_dir; + struct au_hinode *hdir; + + /* rmdir by nfsd may cause deadlock with this i_mutex */ + /* inode_lock(a->dir); */ + err = -EROFS; + sb = a->dir->i_sb; + si_read_lock(sb, !AuLock_FLUSH); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + err = -EIO; + ii_write_lock_parent(a->dir); + h_parent = dget_parent(a->wh_dentry); + h_dir = d_inode(h_parent); + hdir = au_hi(a->dir, bindex); + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out_mnt; + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, + a->br); + if (!err) + err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, &a->whlist); + au_hn_inode_unlock(hdir); + vfsub_mnt_drop_write(au_br_mnt(a->br)); + +out_mnt: + dput(h_parent); + ii_write_unlock(a->dir); +out: + /* inode_unlock(a->dir); */ + au_whtmp_rmdir_free(a); + si_read_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args) +{ + int wkq_err; + struct super_block *sb; + + IMustLock(dir); + + /* all post-process will be done in do_rmdir_whtmp(). */ + sb = dir->i_sb; + args->dir = au_igrab(dir); + args->br = au_sbr(sb, bindex); + au_lcnt_inc(&args->br->br_count); + args->wh_dentry = dget(wh_dentry); + wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_warn("rmdir error %pd (%d), ignored\n", wh_dentry, wkq_err); + au_whtmp_rmdir_free(args); + } +} --- linux-5.8.0.orig/fs/aufs/whout.h +++ linux-5.8.0/fs/aufs/whout.h @@ -0,0 +1,86 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#ifndef __AUFS_WHOUT_H__ +#define __AUFS_WHOUT_H__ + +#ifdef __KERNEL__ + +#include "dir.h" + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, int try_sio); +int au_diropq_test(struct dentry *h_dentry); +struct au_branch; +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry); +int au_wh_init(struct au_branch *br, struct super_block *sb); + +/* diropq flags */ +#define AuDiropq_CREATE 1 +#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) +#define au_fset_diropq(flags, name) \ + do { (flags) |= AuDiropq_##name; } while (0) +#define au_fclr_diropq(flags, name) \ + do { (flags) &= ~AuDiropq_##name; } while (0) + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags); +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br); +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent); + +/* real rmdir for the whiteout-ed dir */ +struct au_whtmp_rmdir { + struct inode *dir; + struct au_branch *br; + struct dentry *wh_dentry; + struct au_nhash whlist; +}; + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist); +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args); + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_diropq_create(struct dentry *dentry, + aufs_bindex_t bindex) +{ + return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); +} + +static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) +{ + return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ --- linux-5.8.0.orig/fs/aufs/wkq.c +++ linux-5.8.0/fs/aufs/wkq.c @@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credential scheme + */ + +#include +#include "aufs.h" + +/* internal workqueue named AUFS_WKQ_NAME */ + +static struct workqueue_struct *au_wkq; + +struct au_wkinfo { + struct work_struct wk; + struct kobject *kobj; + + unsigned int flags; /* see wkq.h */ + + au_wkq_func_t func; + void *args; + +#ifdef CONFIG_LOCKDEP + int dont_check; + struct held_lock **hlock; +#endif + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ +/* + * Aufs passes some operations to the workqueue such as the internal copyup. + * This scheme looks rather unnatural for LOCKDEP debugging feature, since the + * job run by workqueue depends upon the locks acquired in the other task. + * Delegating a small operation to the workqueue, aufs passes its lockdep + * information too. And the job in the workqueue restores the info in order to + * pretend as if it acquired those locks. This is just to make LOCKDEP work + * correctly and expectedly. + */ + +#ifndef CONFIG_LOCKDEP +AuStubInt0(au_wkq_lockdep_alloc, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_free, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_pre, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_post, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_init, struct au_wkinfo *wkinfo); +#else +static void au_wkq_lockdep_init(struct au_wkinfo *wkinfo) +{ + wkinfo->hlock = NULL; + wkinfo->dont_check = 0; +} + +/* + * 1: matched + * 0: unmatched + */ +static int au_wkq_lockdep_test(struct lock_class_key *key, const char *name) +{ + static DEFINE_SPINLOCK(spin); + static struct { + char *name; + struct lock_class_key *key; + } a[] = { + { .name = "&sbinfo->si_rwsem" }, + { .name = "&finfo->fi_rwsem" }, + { .name = "&dinfo->di_rwsem" }, + { .name = "&iinfo->ii_rwsem" } + }; + static int set; + int i; + + /* lockless read from 'set.' see below */ + if (set == ARRAY_SIZE(a)) { + for (i = 0; i < ARRAY_SIZE(a); i++) + if (a[i].key == key) + goto match; + goto unmatch; + } + + spin_lock(&spin); + if (set) + for (i = 0; i < ARRAY_SIZE(a); i++) + if (a[i].key == key) { + spin_unlock(&spin); + goto match; + } + for (i = 0; i < ARRAY_SIZE(a); i++) { + if (a[i].key) { + if (unlikely(a[i].key == key)) { /* rare but possible */ + spin_unlock(&spin); + goto match; + } else + continue; + } + if (strstr(a[i].name, name)) { + /* + * the order of these three lines is important for the + * lockless read above. + */ + a[i].key = key; + spin_unlock(&spin); + set++; + /* AuDbg("%d, %s\n", set, name); */ + goto match; + } + } + spin_unlock(&spin); + goto unmatch; + +match: + return 1; +unmatch: + return 0; +} + +static int au_wkq_lockdep_alloc(struct au_wkinfo *wkinfo) +{ + int err, n; + struct task_struct *curr; + struct held_lock **hl, *held_locks, *p; + + err = 0; + curr = current; + wkinfo->dont_check = lockdep_recursing(curr); + if (wkinfo->dont_check) + goto out; + n = curr->lockdep_depth; + if (!n) + goto out; + + err = -ENOMEM; + wkinfo->hlock = kmalloc_array(n + 1, sizeof(*wkinfo->hlock), GFP_NOFS); + if (unlikely(!wkinfo->hlock)) + goto out; + + err = 0; +#if 0 /* left for debugging */ + if (0 && au_debug_test()) + lockdep_print_held_locks(curr); +#endif + held_locks = curr->held_locks; + hl = wkinfo->hlock; + while (n--) { + p = held_locks++; + if (au_wkq_lockdep_test(p->instance->key, p->instance->name)) + *hl++ = p; + } + *hl = NULL; + +out: + return err; +} + +static void au_wkq_lockdep_free(struct au_wkinfo *wkinfo) +{ + au_kfree_try_rcu(wkinfo->hlock); +} + +static void au_wkq_lockdep_pre(struct au_wkinfo *wkinfo) +{ + struct held_lock *p, **hl = wkinfo->hlock; + int subclass; + + if (wkinfo->dont_check) + lockdep_off(); + if (!hl) + return; + while ((p = *hl++)) { /* assignment */ + subclass = lockdep_hlock_class(p)->subclass; + /* AuDbg("%s, %d\n", p->instance->name, subclass); */ + if (p->read) + rwsem_acquire_read(p->instance, subclass, 0, + /*p->acquire_ip*/_RET_IP_); + else + rwsem_acquire(p->instance, subclass, 0, + /*p->acquire_ip*/_RET_IP_); + } +} + +static void au_wkq_lockdep_post(struct au_wkinfo *wkinfo) +{ + struct held_lock *p, **hl = wkinfo->hlock; + + if (wkinfo->dont_check) + lockdep_on(); + if (!hl) + return; + while ((p = *hl++)) /* assignment */ + rwsem_release(p->instance, /*p->acquire_ip*/_RET_IP_); +} +#endif + +static void wkq_func(struct work_struct *wk) +{ + struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); + + AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); + AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); + + au_wkq_lockdep_pre(wkinfo); + wkinfo->func(wkinfo->args); + au_wkq_lockdep_post(wkinfo); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + au_kfree_rcu(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + *comp = kmalloc(sizeof(**comp), GFP_NOFS); + if (*comp) { + init_completion(*comp); + wkinfo->comp = *comp; + return 0; + } + return -ENOMEM; +} + +static void au_wkq_comp_free(struct completion *comp) +{ + au_kfree_rcu(comp); +} + +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { + if (au_wkq_test()) { + AuWarn1("wkq from wkq, unless silly-rename on NFS," + " due to a dead dir by UDBA," + " or async xino write?\n"); + AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); + } + } else + au_dbg_verify_kthread(); + + if (au_ftest_wkq(wkinfo->flags, WAIT)) { + INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); + queue_work(au_wkq, &wkinfo->wk); + } else { + INIT_WORK(&wkinfo->wk, wkq_func); + schedule_work(&wkinfo->wk); + } +} + +/* + * Be careful. It is easy to make deadlock happen. + * processA: lock, wkq and wait + * processB: wkq and wait, lock in wkq + * --> deadlock + */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) +{ + int err; + AuWkqCompDeclare(comp); + struct au_wkinfo wkinfo = { + .flags = flags, + .func = func, + .args = args + }; + + err = au_wkq_comp_alloc(&wkinfo, &comp); + if (unlikely(err)) + goto out; + err = au_wkq_lockdep_alloc(&wkinfo); + if (unlikely(err)) + goto out_comp; + if (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + } + au_wkq_lockdep_free(&wkinfo); + +out_comp: + au_wkq_comp_free(comp); +out: + destroy_work_on_stack(&wkinfo.wk); + return err; +} + +/* + * Note: dget/dput() in func for aufs dentries are not supported. It will be a + * problem in a concurrent umounting. + */ +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags) +{ + int err; + struct au_wkinfo *wkinfo; + + atomic_inc(&au_sbi(sb)->si_nowait.nw_len); + + /* + * wkq_func() must free this wkinfo. + * it highly depends upon the implementation of workqueue. + */ + err = 0; + wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); + if (wkinfo) { + wkinfo->kobj = &au_sbi(sb)->si_kobj; + wkinfo->flags = flags & ~AuWkq_WAIT; + wkinfo->func = func; + wkinfo->args = args; + wkinfo->comp = NULL; + au_wkq_lockdep_init(wkinfo); + kobject_get(wkinfo->kobj); + __module_get(THIS_MODULE); /* todo: ?? */ + + au_wkq_run(wkinfo); + } else { + err = -ENOMEM; + au_nwt_done(&au_sbi(sb)->si_nowait); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_nwt_init(struct au_nowait_tasks *nwt) +{ + atomic_set(&nwt->nw_len, 0); + /* smp_mb(); */ /* atomic_set */ + init_waitqueue_head(&nwt->nw_wq); +} + +void au_wkq_fin(void) +{ + destroy_workqueue(au_wkq); +} + +int __init au_wkq_init(void) +{ + int err; + + err = 0; + au_wkq = alloc_workqueue(AUFS_WKQ_NAME, 0, WQ_DFL_ACTIVE); + if (IS_ERR(au_wkq)) + err = PTR_ERR(au_wkq); + else if (!au_wkq) + err = -ENOMEM; + + return err; +} --- linux-5.8.0.orig/fs/aufs/wkq.h +++ linux-5.8.0/fs/aufs/wkq.h @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credentials management scheme + */ + +#ifndef __AUFS_WKQ_H__ +#define __AUFS_WKQ_H__ + +#ifdef __KERNEL__ + +#include + +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* + * in the next operation, wait for the 'nowait' tasks in system-wide workqueue + */ +struct au_nowait_tasks { + atomic_t nw_len; + wait_queue_head_t nw_wq; +}; + +/* ---------------------------------------------------------------------- */ + +typedef void (*au_wkq_func_t)(void *args); + +/* wkq flags */ +#define AuWkq_WAIT 1 +#define AuWkq_NEST (1 << 1) +#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) +#define au_fset_wkq(flags, name) \ + do { (flags) |= AuWkq_##name; } while (0) +#define au_fclr_wkq(flags, name) \ + do { (flags) &= ~AuWkq_##name; } while (0) + +/* wkq.c */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags); +void au_nwt_init(struct au_nowait_tasks *nwt); +int __init au_wkq_init(void); +void au_wkq_fin(void); + +/* ---------------------------------------------------------------------- */ + +static inline int au_wkq_test(void) +{ + return current->flags & PF_WQ_WORKER; +} + +static inline int au_wkq_wait(au_wkq_func_t func, void *args) +{ + return au_wkq_do_wait(AuWkq_WAIT, func, args); +} + +static inline void au_nwt_done(struct au_nowait_tasks *nwt) +{ + if (atomic_dec_and_test(&nwt->nw_len)) + wake_up_all(&nwt->nw_wq); +} + +static inline int au_nwt_flush(struct au_nowait_tasks *nwt) +{ + wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); + return 0; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ --- linux-5.8.0.orig/fs/aufs/xattr.c +++ linux-5.8.0/fs/aufs/xattr.c @@ -0,0 +1,356 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling xattr functions + */ + +#include +#include +#include +#include "aufs.h" + +static int au_xattr_ignore(int err, char *name, unsigned int ignore_flags) +{ + if (!ignore_flags) + goto out; + switch (err) { + case -ENOMEM: + case -EDQUOT: + goto out; + } + + if ((ignore_flags & AuBrAttr_ICEX) == AuBrAttr_ICEX) { + err = 0; + goto out; + } + +#define cmp(brattr, prefix) do { \ + if (!strncmp(name, XATTR_##prefix##_PREFIX, \ + XATTR_##prefix##_PREFIX_LEN)) { \ + if (ignore_flags & AuBrAttr_ICEX_##brattr) \ + err = 0; \ + goto out; \ + } \ + } while (0) + + cmp(SEC, SECURITY); + cmp(SYS, SYSTEM); + cmp(TR, TRUSTED); + cmp(USR, USER); +#undef cmp + + if (ignore_flags & AuBrAttr_ICEX_OTH) + err = 0; + +out: + return err; +} + +static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1; + +static int au_do_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, + char *name, char **buf, unsigned int ignore_flags, + unsigned int verbose) +{ + int err; + ssize_t ssz; + struct inode *h_idst; + + ssz = vfs_getxattr_alloc(h_src, name, buf, 0, GFP_NOFS); + err = ssz; + if (unlikely(err <= 0)) { + if (err == -ENODATA + || (err == -EOPNOTSUPP + && ((ignore_flags & au_xattr_out_of_list) + || (au_test_nfs_noacl(d_inode(h_src)) + && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) + || !strcmp(name, + XATTR_NAME_POSIX_ACL_DEFAULT)))) + )) + err = 0; + if (err && (verbose || au_debug_test())) + pr_err("%s, err %d\n", name, err); + goto out; + } + + /* unlock it temporary */ + h_idst = d_inode(h_dst); + inode_unlock(h_idst); + err = vfsub_setxattr(h_dst, name, *buf, ssz, /*flags*/0); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + if (unlikely(err)) { + if (verbose || au_debug_test()) + pr_err("%s, err %d\n", name, err); + err = au_xattr_ignore(err, name, ignore_flags); + } + +out: + return err; +} + +int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags, + unsigned int verbose) +{ + int err, unlocked, acl_access, acl_default; + ssize_t ssz; + struct inode *h_isrc, *h_idst; + char *value, *p, *o, *e; + + /* try stopping to update the source inode while we are referencing */ + /* there should not be the parent-child relationship between them */ + h_isrc = d_inode(h_src); + h_idst = d_inode(h_dst); + inode_unlock(h_idst); + inode_lock_shared_nested(h_isrc, AuLsc_I_CHILD); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + unlocked = 0; + + /* some filesystems don't list POSIX ACL, for example tmpfs */ + ssz = vfs_listxattr(h_src, NULL, 0); + err = ssz; + if (unlikely(err < 0)) { + AuTraceErr(err); + if (err == -ENODATA + || err == -EOPNOTSUPP) + err = 0; /* ignore */ + goto out; + } + + err = 0; + p = NULL; + o = NULL; + if (ssz) { + err = -ENOMEM; + p = kmalloc(ssz, GFP_NOFS); + o = p; + if (unlikely(!p)) + goto out; + err = vfs_listxattr(h_src, p, ssz); + } + inode_unlock_shared(h_isrc); + unlocked = 1; + AuDbg("err %d, ssz %zd\n", err, ssz); + if (unlikely(err < 0)) + goto out_free; + + err = 0; + e = p + ssz; + value = NULL; + acl_access = 0; + acl_default = 0; + while (!err && p < e) { + acl_access |= !strncmp(p, XATTR_NAME_POSIX_ACL_ACCESS, + sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1); + acl_default |= !strncmp(p, XATTR_NAME_POSIX_ACL_DEFAULT, + sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) + - 1); + err = au_do_cpup_xattr(h_dst, h_src, p, &value, ignore_flags, + verbose); + p += strlen(p) + 1; + } + AuTraceErr(err); + ignore_flags |= au_xattr_out_of_list; + if (!err && !acl_access) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_ACCESS, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + if (!err && !acl_default) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_DEFAULT, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + + au_kfree_try_rcu(value); + +out_free: + au_kfree_try_rcu(o); +out: + if (!unlocked) + inode_unlock_shared(h_isrc); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_smack_reentering(struct super_block *sb) +{ +#if IS_ENABLED(CONFIG_SECURITY_SMACK) || IS_ENABLED(CONFIG_SECURITY_SELINUX) + /* + * as a part of lookup, smack_d_instantiate() is called, and it calls + * i_op->getxattr(). ouch. + */ + return si_pid_test(sb); +#else + return 0; +#endif +} + +enum { + AU_XATTR_LIST, + AU_XATTR_GET +}; + +struct au_lgxattr { + int type; + union { + struct { + char *list; + size_t size; + } list; + struct { + const char *name; + void *value; + size_t size; + } get; + } u; +}; + +static ssize_t au_lgxattr(struct dentry *dentry, struct inode *inode, + struct au_lgxattr *arg) +{ + ssize_t err; + int reenter; + struct path h_path; + struct super_block *sb; + + sb = dentry->d_sb; + reenter = au_smack_reentering(sb); + if (!reenter) { + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + } + err = au_h_path_getattr(dentry, inode, /*force*/1, &h_path, reenter); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_di; /* pretending success */ + + /* always topmost entry only */ + switch (arg->type) { + case AU_XATTR_LIST: + err = vfs_listxattr(h_path.dentry, + arg->u.list.list, arg->u.list.size); + break; + case AU_XATTR_GET: + AuDebugOn(d_is_negative(h_path.dentry)); + err = vfs_getxattr(h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; + } + +out_di: + if (!reenter) + di_read_unlock(dentry, AuLock_IR); +out_si: + if (!reenter) + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_LIST, + .u.list = { + .list = list, + .size = size + }, + }; + + return au_lgxattr(dentry, /*inode*/NULL, &arg); +} + +static ssize_t au_getxattr(struct dentry *dentry, struct inode *inode, + const char *name, void *value, size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_GET, + .u.get = { + .name = name, + .value = value, + .size = size + }, + }; + + return au_lgxattr(dentry, inode, &arg); +} + +static int au_setxattr(struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + struct au_sxattr arg = { + .type = AU_XATTR_SET, + .u.set = { + .name = name, + .value = value, + .size = size, + .flags = flags + }, + }; + + return au_sxattr(dentry, inode, &arg); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xattr_get(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, void *buffer, size_t size) +{ + return au_getxattr(dentry, inode, name, buffer, size); +} + +static int au_xattr_set(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + return au_setxattr(dentry, inode, name, value, size, flags); +} + +static const struct xattr_handler au_xattr_handler = { + .name = "", + .prefix = "", + .get = au_xattr_get, + .set = au_xattr_set +}; + +static const struct xattr_handler *au_xattr_handlers[] = { +#ifdef CONFIG_FS_POSIX_ACL + &posix_acl_access_xattr_handler, + &posix_acl_default_xattr_handler, +#endif + &au_xattr_handler, /* must be last */ + NULL +}; + +void au_xattr_init(struct super_block *sb) +{ + sb->s_xattr = au_xattr_handlers; +} --- linux-5.8.0.orig/fs/aufs/xino.c +++ linux-5.8.0/fs/aufs/xino.c @@ -0,0 +1,1966 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * external inode number translation table and bitmap + * + * things to consider + * - the lifetime + * + au_xino object + * + XINO files (xino, xib, xigen) + * + dynamic debugfs entries (xiN) + * + static debugfs entries (xib, xigen) + * + static sysfs entry (xi_path) + * - several entry points to handle them. + * + mount(2) without xino option (default) + * + mount(2) with xino option + * + mount(2) with noxino option + * + umount(2) + * + remount with add/del branches + * + remount with xino/noxino options + */ + +#include +#include +#include "aufs.h" + +static aufs_bindex_t sbr_find_shared(struct super_block *sb, aufs_bindex_t btop, + aufs_bindex_t bbot, + struct super_block *h_sb) +{ + /* todo: try binary-search if the branches are many */ + for (; btop <= bbot; btop++) + if (h_sb == au_sbr_sb(sb, btop)) + return btop; + return -1; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bbot. + */ +static aufs_bindex_t is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bbot) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb; + + tgt_sb = au_sbr_sb(sb, btgt); + bindex = sbr_find_shared(sb, /*btop*/0, btgt - 1, tgt_sb); + if (bindex < 0) + bindex = sbr_find_shared(sb, btgt + 1, bbot, tgt_sb); + + return bindex; +} + +/* ---------------------------------------------------------------------- */ + +/* + * stop unnecessary notify events at creating xino files + */ + +aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry) +{ + aufs_bindex_t bfound, bindex, bbot; + struct dentry *parent; + struct au_branch *br; + + bfound = -1; + parent = dentry->d_parent; /* safe d_parent access */ + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_dentry(br) == parent) { + bfound = bindex; + break; + } + } + + AuDbg("bfound b%d\n", bfound); + return bfound; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct inode *dir; +}; + +static struct dentry *au_dget_parent_lock(struct dentry *dentry, + unsigned int lsc) +{ + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = d_inode(parent); + inode_lock_nested(dir, lsc); +#if 0 /* it should not happen */ + spin_lock(&dentry->d_lock); + if (unlikely(dentry->d_parent != parent)) { + spin_unlock(&dentry->d_lock); + inode_unlock(dir); + dput(parent); + parent = NULL; + goto out; + } + spin_unlock(&dentry->d_lock); + +out: +#endif + return parent; +} + +static void au_xino_lock_dir(struct super_block *sb, struct path *xipath, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t bindex; + + ldir->hdir = NULL; + bindex = au_xi_root(sb, xipath->dentry); + if (bindex >= 0) { + /* rw branch root */ + ldir->hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_inode_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + /* other */ + ldir->parent = au_dget_parent_lock(xipath->dentry, + AuLsc_I_PARENT); + ldir->dir = d_inode(ldir->parent); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_inode_unlock(ldir->hdir); + else { + inode_unlock(ldir->dir); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* + * create and set a new xino file + */ +struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, + int wbrtop) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir, *inode; + int err; + static DEFINE_MUTEX(mtx); + + /* + * at mount-time, and the xino file is the default path, + * hnotify is disabled so we have no notify events to ignore. + * when a user specified the xino, we cannot get au_hdir to be ignored. + */ + if (!wbrtop) + mutex_lock(&mtx); + file = vfsub_filp_open(fpath, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + 0666); + if (IS_ERR(file)) { + if (!wbrtop) + mutex_unlock(&mtx); + if (!silent) + pr_err("open %s(%ld)\n", fpath, PTR_ERR(file)); + return file; + } + + /* keep file count */ + err = 0; + d = file->f_path.dentry; + h_parent = au_dget_parent_lock(d, AuLsc_I_PARENT); + if (!wbrtop) + mutex_unlock(&mtx); + /* mnt_want_write() is unnecessary here */ + h_dir = d_inode(h_parent); + inode = file_inode(file); + /* no delegation since it is just created */ + if (inode->i_nlink) + err = vfsub_unlink(h_dir, &file->f_path, /*delegated*/NULL, + /*force*/0); + inode_unlock(h_dir); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fpath, err); + goto out; + } + + err = -EINVAL; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fpath); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fpath, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * create a new xinofile at the same place/path as @base. + */ +struct file *au_xino_create2(struct super_block *sb, struct path *base, + struct file *copy_src) +{ + struct file *file; + struct dentry *dentry, *parent; + struct inode *dir, *delegated; + struct qstr *name; + struct path path; + int err, do_unlock; + struct au_xino_lock_dir ldir; + + do_unlock = 1; + au_xino_lock_dir(sb, base, &ldir); + dentry = base->dentry; + parent = dentry->d_parent; /* dir inode is locked */ + dir = d_inode(parent); + IMustLock(dir); + + name = &dentry->d_name; + path.dentry = vfsub_lookup_one_len(name->name, parent, name->len); + if (IS_ERR(path.dentry)) { + file = (void *)path.dentry; + pr_err("%pd lookup err %ld\n", dentry, PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(dir, path.dentry, 0666, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", dentry, err); + goto out_dput; + } + + path.mnt = base->mnt; + file = vfsub_dentry_open(&path, + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */); + if (IS_ERR(file)) { + pr_err("%pd open err %ld\n", dentry, PTR_ERR(file)); + goto out_dput; + } + + delegated = NULL; + err = vfsub_unlink(dir, &file->f_path, &delegated, /*force*/0); + au_xino_unlock_dir(&ldir); + do_unlock = 0; + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("%pd unlink err %d\n", dentry, err); + goto out_fput; + } + + if (copy_src) { + /* no one can touch copy_src xino */ + err = au_copy_file(file, copy_src, vfsub_f_size_read(copy_src)); + if (unlikely(err)) { + pr_err("%pd copy err %d\n", dentry, err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + if (do_unlock) + au_xino_unlock_dir(&ldir); + return file; +} + +struct file *au_xino_file1(struct au_xino *xi) +{ + struct file *file; + unsigned int u, nfile; + + file = NULL; + nfile = xi->xi_nfile; + for (u = 0; u < nfile; u++) { + file = xi->xi_file[u]; + if (file) + break; + } + + return file; +} + +static int au_xino_file_set(struct au_xino *xi, int idx, struct file *file) +{ + int err; + struct file *f; + void *p; + + if (file) + get_file(file); + + err = 0; + f = NULL; + if (idx < xi->xi_nfile) { + f = xi->xi_file[idx]; + if (f) + fput(f); + } else { + p = au_kzrealloc(xi->xi_file, + sizeof(*xi->xi_file) * xi->xi_nfile, + sizeof(*xi->xi_file) * (idx + 1), + GFP_NOFS, /*may_shrink*/0); + if (p) { + MtxMustLock(&xi->xi_mtx); + xi->xi_file = p; + xi->xi_nfile = idx + 1; + } else { + err = -ENOMEM; + if (file) + fput(file); + goto out; + } + } + xi->xi_file[idx] = file; + +out: + return err; +} + +/* + * if @xinew->xi is not set, then create new xigen file. + */ +struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew) +{ + struct file *file; + int err; + + SiMustAnyLock(sb); + + file = au_xino_create2(sb, xinew->base, xinew->copy_src); + if (IS_ERR(file)) { + err = PTR_ERR(file); + pr_err("%s[%d], err %d\n", + xinew->xi ? "xino" : "xigen", + xinew->idx, err); + goto out; + } + + if (xinew->xi) + err = au_xino_file_set(xinew->xi, xinew->idx, file); + else { + BUG(); + /* todo: make xigen file an array */ + /* err = au_xigen_file_set(sb, xinew->idx, file); */ + } + fput(file); + if (unlikely(err)) + file = ERR_PTR(err); + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* + * truncate xino files + */ +static int au_xino_do_trunc(struct super_block *sb, aufs_bindex_t bindex, + int idx, struct kstatfs *st) +{ + int err; + blkcnt_t blocks; + struct file *file, *new_xino; + struct au_xi_new xinew = { + .idx = idx + }; + + err = 0; + xinew.xi = au_sbr(sb, bindex)->br_xino; + file = au_xino_file(xinew.xi, idx); + if (!file) + goto out; + + xinew.base = &file->f_path; + err = vfs_statfs(xinew.base, st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + err = 0; + goto out; + } + + blocks = file_inode(file)->i_blocks; + pr_info("begin truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", + bindex, idx, (u64)blocks, st->f_bfree, st->f_blocks); + + xinew.copy_src = file; + new_xino = au_xi_new(sb, &xinew); + if (IS_ERR(new_xino)) { + err = PTR_ERR(new_xino); + pr_err("xino(b%d-%d), err %d, ignored\n", bindex, idx, err); + goto out; + } + + err = vfs_statfs(&new_xino->f_path, st); + if (!err) + pr_info("end truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", + bindex, idx, (u64)file_inode(new_xino)->i_blocks, + st->f_bfree, st->f_blocks); + else { + AuErr1("statfs err %d, ignored\n", err); + err = 0; + } + +out: + return err; +} + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin) +{ + int err, i; + unsigned long jiffy; + aufs_bindex_t bbot; + struct kstatfs *st; + struct au_branch *br; + struct au_xino *xi; + + err = -ENOMEM; + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) + goto out; + + err = -EINVAL; + bbot = au_sbbot(sb); + if (unlikely(bindex < 0 || bbot < bindex)) + goto out_st; + + err = 0; + jiffy = jiffies; + br = au_sbr(sb, bindex); + xi = br->br_xino; + for (i = idx_begin; !err && i < xi->xi_nfile; i++) + err = au_xino_do_trunc(sb, bindex, i, st); + if (!err) + au_sbi(sb)->si_xino_jiffy = jiffy; + +out_st: + au_kfree_rcu(st); +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; + int idx; +}; + +static void xino_do_trunc(void *_args) +{ + struct xino_do_trunc_args *args = _args; + struct super_block *sb; + struct au_branch *br; + struct inode *dir; + int err, idx; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = d_inode(sb->s_root); + br = args->br; + idx = args->idx; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex, idx); + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino->xi_truncating); + au_lcnt_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + au_kfree_rcu(args); +} + +/* + * returns the index in the xi_file array whose corresponding file is necessary + * to truncate, or -1 which means no need to truncate. + */ +static int xino_trunc_test(struct super_block *sb, struct au_branch *br) +{ + int err; + unsigned int u; + struct kstatfs st; + struct au_sbinfo *sbinfo; + struct au_xino *xi; + struct file *file; + + /* todo: si_xino_expire and the ratio should be customizable */ + sbinfo = au_sbi(sb); + if (time_before(jiffies, + sbinfo->si_xino_jiffy + sbinfo->si_xino_expire)) + return -1; + + /* truncation border */ + xi = br->br_xino; + for (u = 0; u < xi->xi_nfile; u++) { + file = au_xino_file(xi, u); + if (!file) + continue; + + err = vfs_statfs(&file->f_path, &st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + return -1; + } + if (div64_u64(st.f_bfree * 100, st.f_blocks) + >= AUFS_XINO_DEF_TRUNC) + return u; + } + + return -1; +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + int idx; + struct xino_do_trunc_args *args; + int wkq_err; + + idx = xino_trunc_test(sb, br); + if (idx < 0) + return; + + if (atomic_inc_return(&br->br_xino->xi_truncating) > 1) + goto out; + + /* lock and kfree() will be called in trunc_xino() */ + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + goto out; + } + + au_lcnt_inc(&br->br_count); + args->sb = sb; + args->br = br; + args->idx = idx; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(args); + +out: + atomic_dec(&br->br_xino->xi_truncating); +} + +/* ---------------------------------------------------------------------- */ + +struct au_xi_calc { + int idx; + loff_t pos; +}; + +static void au_xi_calc(struct super_block *sb, ino_t h_ino, + struct au_xi_calc *calc) +{ + loff_t maxent; + + maxent = au_xi_maxent(sb); + calc->idx = div64_u64_rem(h_ino, maxent, &calc->pos); + calc->pos *= sizeof(ino_t); +} + +static int au_xino_do_new_async(struct super_block *sb, struct au_branch *br, + struct au_xi_calc *calc) +{ + int err; + struct file *file; + struct au_xino *xi = br->br_xino; + struct au_xi_new xinew = { + .xi = xi + }; + + SiMustAnyLock(sb); + + err = 0; + if (!xi) + goto out; + + mutex_lock(&xi->xi_mtx); + file = au_xino_file(xi, calc->idx); + if (file) + goto out_mtx; + + file = au_xino_file(xi, /*idx*/-1); + AuDebugOn(!file); + xinew.idx = calc->idx; + xinew.base = &file->f_path; + /* xinew.copy_src = NULL; */ + file = au_xi_new(sb, &xinew); + if (IS_ERR(file)) + err = PTR_ERR(file); + +out_mtx: + mutex_unlock(&xi->xi_mtx); +out: + return err; +} + +struct au_xino_do_new_async_args { + struct super_block *sb; + struct au_branch *br; + struct au_xi_calc calc; + ino_t ino; +}; + +struct au_xi_writing { + struct hlist_bl_node node; + ino_t h_ino, ino; +}; + +static int au_xino_do_write(vfs_writef_t write, struct file *file, + struct au_xi_calc *calc, ino_t ino); + +static void au_xino_call_do_new_async(void *args) +{ + struct au_xino_do_new_async_args *a = args; + struct au_branch *br; + struct super_block *sb; + struct au_sbinfo *sbi; + struct inode *root; + struct file *file; + struct au_xi_writing *del, *p; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + int err; + + br = a->br; + sb = a->sb; + sbi = au_sbi(sb); + si_noflush_read_lock(sb); + root = d_inode(sb->s_root); + ii_read_lock_child(root); + err = au_xino_do_new_async(sb, br, &a->calc); + if (unlikely(err)) { + AuIOErr("err %d\n", err); + goto out; + } + + file = au_xino_file(br->br_xino, a->calc.idx); + AuDebugOn(!file); + err = au_xino_do_write(sbi->si_xwrite, file, &a->calc, a->ino); + if (unlikely(err)) { + AuIOErr("err %d\n", err); + goto out; + } + + del = NULL; + hbl = &br->br_xino->xi_writing; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) { + p = container_of(pos, struct au_xi_writing, node); + if (p->ino == a->ino) { + del = p; + hlist_bl_del(&p->node); + break; + } + } + hlist_bl_unlock(hbl); + au_kfree_rcu(del); + +out: + au_lcnt_dec(&br->br_count); + ii_read_unlock(root); + si_read_unlock(sb); + au_nwt_done(&sbi->si_nowait); + au_kfree_rcu(a); +} + +/* + * create a new xino file asynchronously + */ +static int au_xino_new_async(struct super_block *sb, struct au_branch *br, + struct au_xi_calc *calc, ino_t ino) +{ + int err; + struct au_xino_do_new_async_args *arg; + + err = -ENOMEM; + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (unlikely(!arg)) + goto out; + + arg->sb = sb; + arg->br = br; + arg->calc = *calc; + arg->ino = ino; + au_lcnt_inc(&br->br_count); + err = au_wkq_nowait(au_xino_call_do_new_async, arg, sb, AuWkq_NEST); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(arg); + } + +out: + return err; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + struct au_xi_calc calc; + struct au_sbinfo *sbinfo; + struct file *file; + struct au_xino *xi; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_xi_writing *p; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + au_xi_calc(sb, h_ino, &calc); + xi = au_sbr(sb, bindex)->br_xino; + file = au_xino_file(xi, calc.idx); + if (!file) { + hbl = &xi->xi_writing; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) { + p = container_of(pos, struct au_xi_writing, node); + if (p->h_ino == h_ino) { + AuDbg("hi%llu, i%llu, found\n", + (u64)p->h_ino, (u64)p->ino); + *ino = p->ino; + break; + } + } + hlist_bl_unlock(hbl); + return 0; + } else if (vfsub_f_size_read(file) < calc.pos + sizeof(*ino)) + return 0; /* no xino */ + + sbinfo = au_sbi(sb); + sz = xino_fread(sbinfo->si_xread, file, ino, sizeof(*ino), &calc.pos); + if (sz == sizeof(*ino)) + return 0; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xino read error (%zd)\n", sz); + } + return err; +} + +static int au_xino_do_write(vfs_writef_t write, struct file *file, + struct au_xi_calc *calc, ino_t ino) +{ + ssize_t sz; + + sz = xino_fwrite(write, file, &ino, sizeof(ino), &calc->pos); + if (sz == sizeof(ino)) + return 0; /* success */ + + AuIOErr("write failed (%zd)\n", sz); + return -EIO; +} + +/* + * write @ino to the xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * even if @ino is zero, it is written to the xinofile and means no entry. + * if the size of the xino file on a specific filesystem exceeds the watermark, + * try truncating it. + */ +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino) +{ + int err; + unsigned int mnt_flags; + struct au_xi_calc calc; + struct file *file; + struct au_branch *br; + struct au_xino *xi; + struct au_xi_writing *p; + + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + au_xi_calc(sb, h_ino, &calc); + br = au_sbr(sb, bindex); + xi = br->br_xino; + file = au_xino_file(xi, calc.idx); + if (!file) { + /* store the inum pair into the list */ + p = kmalloc(sizeof(*p), GFP_NOFS | __GFP_NOFAIL); + p->h_ino = h_ino; + p->ino = ino; + au_hbl_add(&p->node, &xi->xi_writing); + + /* create and write a new xino file asynchronously */ + err = au_xino_new_async(sb, br, &calc, ino); + if (!err) + return 0; /* success */ + goto out; + } + + err = au_xino_do_write(au_sbi(sb)->si_xwrite, file, &calc, ino); + if (!err) { + br = au_sbr(sb, bindex); + if (au_opt_test(mnt_flags, TRUNC_XINO) + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + return 0; /* success */ + } + +out: + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +static ssize_t xino_fread_wkq(vfs_readf_t func, struct file *file, void *buf, + size_t size, loff_t *pos); + +/* todo: unnecessary to support mmap_sem since kernel-space? */ +ssize_t xino_fread(vfs_readf_t func, struct file *file, void *kbuf, size_t size, + loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + int i; + const int prevent_endless = 10; + + i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + err = func(file, buf.u, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + set_fs(oldfs); + err = xino_fread_wkq(func, file, kbuf, size, pos); + BUG_ON(err == -EINTR); + oldfs = get_fs(); + set_fs(KERNEL_DS); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_access(file->f_path.dentry); +#endif + + return err; +} + +struct xino_fread_args { + ssize_t *errp; + vfs_readf_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_xino_fread(void *args) +{ + struct xino_fread_args *a = args; + *a->errp = xino_fread(a->func, a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fread_wkq(vfs_readf_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct xino_fread_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + wkq_err = au_wkq_wait(call_xino_fread, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos); + +static ssize_t do_xino_fwrite(vfs_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + int i; + const int prevent_endless = 10; + + i = 0; + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + err = func(file, buf.u, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + set_fs(oldfs); + err = xino_fwrite_wkq(func, file, kbuf, size, pos); + BUG_ON(err == -EINTR); + oldfs = get_fs(); + set_fs(KERNEL_DS); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_path.dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + vfs_writef_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else { + lockdep_off(); + err = xino_fwrite_wkq(func, file, buf, size, pos); + lockdep_on(); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * inode number bitmap + */ +static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; +static ino_t xib_calc_ino(unsigned long pindex, int bit) +{ + ino_t ino; + + AuDebugOn(bit < 0 || page_bits <= bit); + ino = AUFS_FIRST_INO + pindex * page_bits + bit; + return ino; +} + +static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) +{ + AuDebugOn(ino < AUFS_FIRST_INO); + ino -= AUFS_FIRST_INO; + *pindex = ino / page_bits; + *bit = ino % page_bits; +} + +static int xib_pindex(struct super_block *sb, unsigned long pindex) +{ + int err; + loff_t pos; + ssize_t sz; + struct au_sbinfo *sbinfo; + struct file *xib; + unsigned long *p; + + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE + || !au_opt_test(sbinfo->si_mntflags, XINO)); + + if (pindex == sbinfo->si_xib_last_pindex) + return 0; + + xib = sbinfo->si_xib; + p = sbinfo->si_xib_buf; + pos = sbinfo->si_xib_last_pindex; + pos *= PAGE_SIZE; + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) + goto out; + + pos = pindex; + pos *= PAGE_SIZE; + if (vfsub_f_size_read(xib) >= pos + PAGE_SIZE) + sz = xino_fread(sbinfo->si_xread, xib, p, PAGE_SIZE, &pos); + else { + memset(p, 0, PAGE_SIZE); + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + } + if (sz == PAGE_SIZE) { + sbinfo->si_xib_last_pindex = pindex; + return 0; /* success */ + } + +out: + AuIOErr1("write failed (%zd)\n", sz); + err = sz; + if (sz >= 0) + err = -EIO; + return err; +} + +static void au_xib_clear_bit(struct inode *inode) +{ + int err, bit; + unsigned long pindex; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + AuDebugOn(inode->i_nlink); + + sb = inode->i_sb; + xib_calc_bit(inode->i_ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + err = xib_pindex(sb, pindex); + if (!err) { + clear_bit(bit, sbinfo->si_xib_buf); + sbinfo->si_xib_next_bit = bit; + } + mutex_unlock(&sbinfo->si_xib_mtx); +} + +/* ---------------------------------------------------------------------- */ + +/* + * truncate a xino bitmap file + */ + +/* todo: slow */ +static int do_xib_restore(struct super_block *sb, struct file *file, void *page) +{ + int err, bit; + ssize_t sz; + unsigned long pindex; + loff_t pos, pend; + struct au_sbinfo *sbinfo; + vfs_readf_t func; + ino_t *ino; + unsigned long *p; + + err = 0; + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + func = sbinfo->si_xread; + pend = vfsub_f_size_read(file); + pos = 0; + while (pos < pend) { + sz = xino_fread(func, file, page, PAGE_SIZE, &pos); + err = sz; + if (unlikely(sz <= 0)) + goto out; + + err = 0; + for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { + if (unlikely(*ino < AUFS_FIRST_INO)) + continue; + + xib_calc_bit(*ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + err = xib_pindex(sb, pindex); + if (!err) + set_bit(bit, p); + else + goto out; + } + } + +out: + return err; +} + +static int xib_restore(struct super_block *sb) +{ + int err, i; + unsigned int nfile; + aufs_bindex_t bindex, bbot; + void *page; + struct au_branch *br; + struct au_xino *xi; + struct file *file; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) { + br = au_sbr(sb, bindex); + xi = br->br_xino; + nfile = xi->xi_nfile; + for (i = 0; i < nfile; i++) { + file = au_xino_file(xi, i); + if (file) + err = do_xib_restore(sb, file, page); + } + } else + AuDbg("skip shared b%d\n", bindex); + free_page((unsigned long)page); + +out: + return err; +} + +int au_xib_trunc(struct super_block *sb) +{ + int err; + ssize_t sz; + loff_t pos; + struct au_sbinfo *sbinfo; + unsigned long *p; + struct file *file; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + if (!au_opt_test(sbinfo->si_mntflags, XINO)) + goto out; + + file = sbinfo->si_xib; + if (vfsub_f_size_read(file) <= PAGE_SIZE) + goto out; + + file = au_xino_create2(sb, &sbinfo->si_xib->f_path, NULL); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + + p = sbinfo->si_xib_buf; + memset(p, 0, PAGE_SIZE); + pos = 0; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) { + err = sz; + AuIOErr("err %d\n", err); + if (sz >= 0) + err = -EIO; + goto out; + } + + mutex_lock(&sbinfo->si_xib_mtx); + /* mnt_want_write() is unnecessary here */ + err = xib_restore(sb); + mutex_unlock(&sbinfo->si_xib_mtx); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_xino *au_xino_alloc(unsigned int nfile) +{ + struct au_xino *xi; + + xi = kzalloc(sizeof(*xi), GFP_NOFS); + if (unlikely(!xi)) + goto out; + xi->xi_nfile = nfile; + xi->xi_file = kcalloc(nfile, sizeof(*xi->xi_file), GFP_NOFS); + if (unlikely(!xi->xi_file)) + goto out_free; + + xi->xi_nondir.total = 8; /* initial size */ + xi->xi_nondir.array = kcalloc(xi->xi_nondir.total, sizeof(ino_t), + GFP_NOFS); + if (unlikely(!xi->xi_nondir.array)) + goto out_file; + + spin_lock_init(&xi->xi_nondir.spin); + init_waitqueue_head(&xi->xi_nondir.wqh); + mutex_init(&xi->xi_mtx); + INIT_HLIST_BL_HEAD(&xi->xi_writing); + atomic_set(&xi->xi_truncating, 0); + kref_init(&xi->xi_kref); + goto out; /* success */ + +out_file: + au_kfree_try_rcu(xi->xi_file); +out_free: + au_kfree_rcu(xi); + xi = NULL; +out: + return xi; +} + +static int au_xino_init(struct au_branch *br, int idx, struct file *file) +{ + int err; + struct au_xino *xi; + + err = 0; + xi = au_xino_alloc(idx + 1); + if (unlikely(!xi)) { + err = -ENOMEM; + goto out; + } + + if (file) + get_file(file); + xi->xi_file[idx] = file; + AuDebugOn(br->br_xino); + br->br_xino = xi; + +out: + return err; +} + +static void au_xino_release(struct kref *kref) +{ + struct au_xino *xi; + int i; + unsigned long ul; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *n; + struct au_xi_writing *p; + + xi = container_of(kref, struct au_xino, xi_kref); + for (i = 0; i < xi->xi_nfile; i++) + if (xi->xi_file[i]) + fput(xi->xi_file[i]); + for (i = xi->xi_nondir.total - 1; i >= 0; i--) + AuDebugOn(xi->xi_nondir.array[i]); + mutex_destroy(&xi->xi_mtx); + hbl = &xi->xi_writing; + ul = au_hbl_count(hbl); + if (unlikely(ul)) { + pr_warn("xi_writing %lu\n", ul); + hlist_bl_lock(hbl); + hlist_bl_for_each_entry_safe(p, pos, n, hbl, node) { + hlist_bl_del(&p->node); + /* kmemleak reported au_kfree_rcu() doesn't free it */ + kfree(p); + } + hlist_bl_unlock(hbl); + } + au_kfree_try_rcu(xi->xi_file); + au_kfree_try_rcu(xi->xi_nondir.array); + au_kfree_rcu(xi); +} + +int au_xino_put(struct au_branch *br) +{ + int ret; + struct au_xino *xi; + + ret = 0; + xi = br->br_xino; + if (xi) { + br->br_xino = NULL; + ret = kref_put(&xi->xi_kref, au_xino_release); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* + * xino mount option handlers + */ + +/* xino bitmap */ +static void xino_clear_xib(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + /* unnecessary to clear sbinfo->si_xread and ->si_xwrite */ + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + if (sbinfo->si_xib_buf) + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct path *path) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + struct super_block *xi_sb; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(sb, path, sbinfo->si_xib); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + sbinfo->si_xread = vfs_readf(file); + sbinfo->si_xwrite = vfs_writef(file); + xi_sb = file_inode(file)->i_sb; + sbinfo->si_ximaxent = xi_sb->s_maxbytes; + if (unlikely(sbinfo->si_ximaxent < PAGE_SIZE)) { + err = -EIO; + pr_err("s_maxbytes(%llu) on %s is too small\n", + (u64)sbinfo->si_ximaxent, au_sbtype(xi_sb)); + goto out_unset; + } + sbinfo->si_ximaxent /= sizeof(ino_t); + + err = -ENOMEM; + if (!sbinfo->si_xib_buf) + sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!sbinfo->si_xib_buf)) + goto out_unset; + + sbinfo->si_xib_last_pindex = 0; + sbinfo->si_xib_next_bit = 0; + if (vfsub_f_size_read(file) < PAGE_SIZE) { + pos = 0; + err = xino_fwrite(sbinfo->si_xwrite, file, sbinfo->si_xib_buf, + PAGE_SIZE, &pos); + if (unlikely(err != PAGE_SIZE)) + goto out_free; + } + err = 0; + goto out; /* success */ + +out_free: + if (sbinfo->si_xib_buf) + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; + if (err >= 0) + err = -EIO; +out_unset: + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; +out: + AuTraceErr(err); + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + AuDebugOn(!br); + au_xino_put(br); + } +} + +static void au_xino_set_br_shared(struct super_block *sb, struct au_branch *br, + aufs_bindex_t bshared) +{ + struct au_branch *brshared; + + brshared = au_sbr(sb, bshared); + AuDebugOn(!brshared->br_xino); + AuDebugOn(!brshared->br_xino->xi_file); + if (br->br_xino != brshared->br_xino) { + au_xino_get(brshared); + au_xino_put(br); + br->br_xino = brshared->br_xino; + } +} + +struct au_xino_do_set_br { + vfs_writef_t writef; + struct au_branch *br; + ino_t h_ino; + aufs_bindex_t bshared; +}; + +static int au_xino_do_set_br(struct super_block *sb, struct path *path, + struct au_xino_do_set_br *args) +{ + int err; + struct au_xi_calc calc; + struct file *file; + struct au_branch *br; + struct au_xi_new xinew = { + .base = path + }; + + br = args->br; + xinew.xi = br->br_xino; + au_xi_calc(sb, args->h_ino, &calc); + xinew.copy_src = au_xino_file(xinew.xi, calc.idx); + if (args->bshared >= 0) + /* shared xino */ + au_xino_set_br_shared(sb, br, args->bshared); + else if (!xinew.xi) { + /* new xino */ + err = au_xino_init(br, calc.idx, xinew.copy_src); + if (unlikely(err)) + goto out; + } + + /* force re-creating */ + xinew.xi = br->br_xino; + xinew.idx = calc.idx; + mutex_lock(&xinew.xi->xi_mtx); + file = au_xi_new(sb, &xinew); + mutex_unlock(&xinew.xi->xi_mtx); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + AuDebugOn(!file); + + err = au_xino_do_write(args->writef, file, &calc, AUFS_ROOT_INO); + if (unlikely(err)) + au_xino_put(br); + +out: + AuTraceErr(err); + return err; +} + +static int au_xino_set_br(struct super_block *sb, struct path *path) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_xino_do_set_br args; + struct inode *inode; + + SiMustWriteLock(sb); + + bbot = au_sbbot(sb); + inode = d_inode(sb->s_root); + args.writef = au_sbi(sb)->si_xwrite; + for (bindex = 0; bindex <= bbot; bindex++) { + args.h_ino = au_h_iptr(inode, bindex)->i_ino; + args.br = au_sbr(sb, bindex); + args.bshared = is_sb_shared(sb, bindex, bindex - 1); + err = au_xino_do_set_br(sb, path, &args); + if (unlikely(err)) + break; + } + + AuTraceErr(err); + return err; +} + +void au_xino_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + au_xigen_clr(sb); + xino_clear_xib(sb); + xino_clear_br(sb); + dbgaufs_brs_del(sb, 0); + sbinfo = au_sbi(sb); + /* lvalue, do not call au_mntflags() */ + au_opt_clr(sbinfo->si_mntflags, XINO); +} + +int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount) +{ + int err, skip; + struct dentry *dentry, *parent, *cur_dentry, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct au_sbinfo *sbinfo; + struct path *path, *cur_path; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + path = &xiopt->file->f_path; + dentry = path->dentry; + parent = dget_parent(dentry); + if (remount) { + skip = 0; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_path = &cur_xino->f_path; + cur_dentry = cur_path->dentry; + cur_parent = dget_parent(cur_dentry); + cur_name = &cur_dentry->d_name; + dname = &dentry->d_name; + skip = (cur_parent == parent + && au_qstreq(dname, cur_name)); + dput(cur_parent); + } + if (skip) + goto out; + } + + au_opt_set(sbinfo->si_mntflags, XINO); + err = au_xino_set_xib(sb, path); + /* si_x{read,write} are set */ + if (!err) + err = au_xigen_set(sb, path); + if (!err) + err = au_xino_set_br(sb, path); + if (!err) { + dbgaufs_brs_add(sb, 0, /*topdown*/1); + goto out; /* success */ + } + + /* reset all */ + AuIOErr("failed setting xino(%d).\n", err); + au_xino_clr(sb); + +out: + dput(parent); + return err; +} + +/* + * create a xinofile at the default place/path. + */ +struct file *au_xino_def(struct super_block *sb) +{ + struct file *file; + char *page, *p; + struct au_branch *br; + struct super_block *h_sb; + struct path path; + aufs_bindex_t bbot, bindex, bwr; + + br = NULL; + bbot = au_sbbot(sb); + bwr = -1; + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm) + && !au_test_fs_bad_xino(au_br_sb(br))) { + bwr = bindex; + break; + } + } + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(sb->s_root, bwr); + p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); + file = (void *)p; + if (!IS_ERR(p)) { + strcat(p, "/" AUFS_XINO_FNAME); + AuDbg("%s\n", p); + file = au_xino_create(sb, p, /*silent*/0, /*wbrtop*/1); + } + free_page((unsigned long)page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0, + /*wbrtop*/0); + if (IS_ERR(file)) + goto out; + h_sb = file->f_path.dentry->d_sb; + if (unlikely(au_test_fs_bad_xino(h_sb))) { + pr_err("xino doesn't support %s(%s)\n", + AUFS_XINO_DEFPATH, au_sbtype(h_sb)); + fput(file); + file = ERR_PTR(-EINVAL); + } + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* + * initialize the xinofile for the specified branch @br + * at the place/path where @base_file indicates. + * test whether another branch is on the same filesystem or not, + * if found then share the xinofile with another branch. + */ +int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct path *base) +{ + int err; + struct au_xino_do_set_br args = { + .h_ino = h_ino, + .br = br + }; + + args.writef = au_sbi(sb)->si_xwrite; + args.bshared = sbr_find_shared(sb, /*btop*/0, au_sbbot(sb), + au_br_sb(br)); + err = au_xino_do_set_br(sb, base, &args); + if (unlikely(err)) + au_xino_put(br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * get an unused inode number from bitmap + */ +ino_t au_xino_new_ino(struct super_block *sb) +{ + ino_t ino; + unsigned long *p, pindex, ul, pend; + struct au_sbinfo *sbinfo; + struct file *file; + int free_bit, err; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return iunique(sb, AUFS_FIRST_INO); + + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + free_bit = sbinfo->si_xib_next_bit; + if (free_bit < page_bits && !test_bit(free_bit, p)) + goto out; /* success */ + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + + pindex = sbinfo->si_xib_last_pindex; + for (ul = pindex - 1; ul < ULONG_MAX; ul--) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + + file = sbinfo->si_xib; + pend = vfsub_f_size_read(file) / PAGE_SIZE; + for (ul = pindex + 1; ul <= pend; ul++) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + BUG(); + +out: + set_bit(free_bit, p); + sbinfo->si_xib_next_bit = free_bit + 1; + pindex = sbinfo->si_xib_last_pindex; + mutex_unlock(&sbinfo->si_xib_mtx); + ino = xib_calc_ino(pindex, free_bit); + AuDbg("i%lu\n", (unsigned long)ino); + return ino; +out_err: + mutex_unlock(&sbinfo->si_xib_mtx); + AuDbg("i0\n"); + return 0; +} + +/* for s_op->delete_inode() */ +void au_xino_delete_inode(struct inode *inode, const int unlinked) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex, bbot, bi; + unsigned char try_trunc; + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + struct inode *h_inode; + struct au_branch *br; + vfs_writef_t xwrite; + struct au_xi_calc calc; + struct file *file; + + AuDebugOn(au_is_bad_inode(inode)); + + sb = inode->i_sb; + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO) + || inode->i_ino == AUFS_ROOT_INO) + return; + + if (unlinked) { + au_xigen_inc(inode); + au_xib_clear_bit(inode); + } + + iinfo = au_ii(inode); + bindex = iinfo->ii_btop; + if (bindex < 0) + return; + + xwrite = au_sbi(sb)->si_xwrite; + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = au_hinode(iinfo, bindex); + bbot = iinfo->ii_bbot; + for (; bindex <= bbot; bindex++, hi++) { + h_inode = hi->hi_inode; + if (!h_inode + || (!unlinked && h_inode->i_nlink)) + continue; + + /* inode may not be revalidated */ + bi = au_br_index(sb, hi->hi_id); + if (bi < 0) + continue; + + br = au_sbr(sb, bi); + au_xi_calc(sb, h_inode->i_ino, &calc); + file = au_xino_file(br->br_xino, calc.idx); + if (IS_ERR_OR_NULL(file)) + continue; + + err = au_xino_do_write(xwrite, file, &calc, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + } +} + +/* ---------------------------------------------------------------------- */ + +static int au_xinondir_find(struct au_xino *xi, ino_t h_ino) +{ + int found, total, i; + + found = -1; + total = xi->xi_nondir.total; + for (i = 0; i < total; i++) { + if (xi->xi_nondir.array[i] != h_ino) + continue; + found = i; + break; + } + + return found; +} + +static int au_xinondir_expand(struct au_xino *xi) +{ + int err, sz; + ino_t *p; + + BUILD_BUG_ON(KMALLOC_MAX_SIZE > INT_MAX); + + err = -ENOMEM; + sz = xi->xi_nondir.total * sizeof(ino_t); + if (unlikely(sz > KMALLOC_MAX_SIZE / 2)) + goto out; + p = au_kzrealloc(xi->xi_nondir.array, sz, sz << 1, GFP_ATOMIC, + /*may_shrink*/0); + if (p) { + xi->xi_nondir.array = p; + xi->xi_nondir.total <<= 1; + AuDbg("xi_nondir.total %d\n", xi->xi_nondir.total); + err = 0; + } + +out: + return err; +} + +void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, int idx) +{ + struct au_xino *xi; + + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + xi = au_sbr(sb, bindex)->br_xino; + AuDebugOn(idx < 0 || xi->xi_nondir.total <= idx); + + spin_lock(&xi->xi_nondir.spin); + AuDebugOn(xi->xi_nondir.array[idx] != h_ino); + xi->xi_nondir.array[idx] = 0; + spin_unlock(&xi->xi_nondir.spin); + wake_up_all(&xi->xi_nondir.wqh); +} + +int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + int *idx) +{ + int err, found, empty; + struct au_xino *xi; + + err = 0; + *idx = -1; + if (!au_opt_test(au_mntflags(sb), XINO)) + goto out; /* no xino */ + + xi = au_sbr(sb, bindex)->br_xino; + +again: + spin_lock(&xi->xi_nondir.spin); + found = au_xinondir_find(xi, h_ino); + if (found == -1) { + empty = au_xinondir_find(xi, /*h_ino*/0); + if (empty == -1) { + empty = xi->xi_nondir.total; + err = au_xinondir_expand(xi); + if (unlikely(err)) + goto out_unlock; + } + xi->xi_nondir.array[empty] = h_ino; + *idx = empty; + } else { + spin_unlock(&xi->xi_nondir.spin); + wait_event(xi->xi_nondir.wqh, + xi->xi_nondir.array[found] != h_ino); + goto again; + } + +out_unlock: + spin_unlock(&xi->xi_nondir.spin); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err)) + goto out; + +#define Deleted "\\040(deleted)" + seq->count -= sizeof(Deleted) - 1; + AuDebugOn(memcmp(seq->buf + seq->count, Deleted, + sizeof(Deleted) - 1)); +#undef Deleted + +out: + return err; +} --- linux-5.8.0.orig/fs/autofs/waitq.c +++ linux-5.8.0/fs/autofs/waitq.c @@ -53,7 +53,7 @@ mutex_lock(&sbi->pipe_mutex); while (bytes) { - wr = kernel_write(file, data, bytes, &file->f_pos); + wr = __kernel_write(file, data, bytes, NULL); if (wr <= 0) break; data += wr; --- linux-5.8.0.orig/fs/bfs/inode.c +++ linux-5.8.0/fs/bfs/inode.c @@ -351,7 +351,7 @@ info->si_lasti = (le32_to_cpu(bfs_sb->s_start) - BFS_BSIZE) / sizeof(struct bfs_inode) + BFS_ROOT_INO - 1; if (info->si_lasti == BFS_MAX_LASTI) - printf("WARNING: filesystem %s was created with 512 inodes, the real maximum is 511, mounting anyway\n", s->s_id); + printf("NOTE: filesystem %s was created with 512 inodes, the real maximum is 511, mounting anyway\n", s->s_id); else if (info->si_lasti > BFS_MAX_LASTI) { printf("Impossible last inode number %lu > %d on %s\n", info->si_lasti, BFS_MAX_LASTI, s->s_id); goto out1; --- linux-5.8.0.orig/fs/binfmt_flat.c +++ linux-5.8.0/fs/binfmt_flat.c @@ -576,7 +576,7 @@ goto err; } - len = data_len + extra; + len = data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long); len = PAGE_ALIGN(len); realdatastart = vm_mmap(NULL, 0, len, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0); @@ -590,7 +590,9 @@ vm_munmap(textpos, text_len); goto err; } - datapos = ALIGN(realdatastart, FLAT_DATA_ALIGN); + datapos = ALIGN(realdatastart + + MAX_SHARED_LIBS * sizeof(unsigned long), + FLAT_DATA_ALIGN); pr_debug("Allocated data+bss+stack (%u bytes): %lx\n", data_len + bss_len + stack_len, datapos); @@ -620,7 +622,7 @@ memp_size = len; } else { - len = text_len + data_len + extra; + len = text_len + data_len + extra + MAX_SHARED_LIBS * sizeof(u32); len = PAGE_ALIGN(len); textpos = vm_mmap(NULL, 0, len, PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0); @@ -635,7 +637,9 @@ } realdatastart = textpos + ntohl(hdr->data_start); - datapos = ALIGN(realdatastart, FLAT_DATA_ALIGN); + datapos = ALIGN(realdatastart + + MAX_SHARED_LIBS * sizeof(u32), + FLAT_DATA_ALIGN); reloc = (__be32 __user *) (datapos + (ntohl(hdr->reloc_start) - text_len)); @@ -652,9 +656,8 @@ (text_len + full_data - sizeof(struct flat_hdr)), 0); - if (datapos != realdatastart) - memmove((void *)datapos, (void *)realdatastart, - full_data); + memmove((void *) datapos, (void *) realdatastart, + full_data); #else /* * This is used on MMU systems mainly for testing. @@ -710,7 +713,8 @@ if (IS_ERR_VALUE(result)) { ret = result; pr_err("Unable to read code+data+bss, errno %d\n", ret); - vm_munmap(textpos, text_len + data_len + extra); + vm_munmap(textpos, text_len + data_len + extra + + MAX_SHARED_LIBS * sizeof(u32)); goto err; } } --- linux-5.8.0.orig/fs/binfmt_misc.c +++ linux-5.8.0/fs/binfmt_misc.c @@ -647,12 +647,24 @@ struct super_block *sb = file_inode(file)->i_sb; struct dentry *root = sb->s_root, *dentry; int err = 0; + struct file *f = NULL; e = create_entry(buffer, count); if (IS_ERR(e)) return PTR_ERR(e); + if (e->flags & MISC_FMT_OPEN_FILE) { + f = open_exec(e->interpreter); + if (IS_ERR(f)) { + pr_notice("register: failed to install interpreter file %s\n", + e->interpreter); + kfree(e); + return PTR_ERR(f); + } + e->interp_file = f; + } + inode_lock(d_inode(root)); dentry = lookup_one_len(e->name, root, strlen(e->name)); err = PTR_ERR(dentry); @@ -676,21 +688,6 @@ goto out2; } - if (e->flags & MISC_FMT_OPEN_FILE) { - struct file *f; - - f = open_exec(e->interpreter); - if (IS_ERR(f)) { - err = PTR_ERR(f); - pr_notice("register: failed to install interpreter file %s\n", e->interpreter); - simple_release_fs(&bm_mnt, &entry_count); - iput(inode); - inode = NULL; - goto out2; - } - e->interp_file = f; - } - e->dentry = dget(dentry); inode->i_private = e; inode->i_fop = &bm_entry_operations; @@ -707,6 +704,8 @@ inode_unlock(d_inode(root)); if (err) { + if (f) + filp_close(f, NULL); kfree(e); return err; } --- linux-5.8.0.orig/fs/btrfs/backref.c +++ linux-5.8.0/fs/btrfs/backref.c @@ -544,7 +544,18 @@ int level = ref->level; struct btrfs_key search_key = ref->key_for_search; - root = btrfs_get_fs_root(fs_info, ref->root_id, false); + /* + * If we're search_commit_root we could possibly be holding locks on + * other tree nodes. This happens when qgroups does backref walks when + * adding new delayed refs. To deal with this we need to look in cache + * for the root, and if we don't find it then we need to search the + * tree_root's commit root, thus the btrfs_get_fs_root_commit_root usage + * here. + */ + if (path->search_commit_root) + root = btrfs_get_fs_root_commit_root(fs_info, path, ref->root_id); + else + root = btrfs_get_fs_root(fs_info, ref->root_id, false); if (IS_ERR(root)) { ret = PTR_ERR(root); goto out_free; @@ -2303,7 +2314,7 @@ return NULL; ret->path = btrfs_alloc_path(); - if (!ret) { + if (!ret->path) { kfree(ret); return NULL; } @@ -2537,13 +2548,6 @@ list_del(&edge->list[UPPER]); btrfs_backref_free_edge(cache, edge); - if (RB_EMPTY_NODE(&upper->rb_node)) { - BUG_ON(!list_empty(&node->upper)); - btrfs_backref_drop_node(cache, node); - node = upper; - node->lowest = 1; - continue; - } /* * Add the node to leaf node list if no other child block * cached. @@ -2620,7 +2624,7 @@ /* Only reloc backref cache cares about a specific root */ if (cache->is_reloc) { root = find_reloc_root(cache->fs_info, cur->bytenr); - if (WARN_ON(!root)) + if (!root) return -ENOENT; cur->root = root; } else { @@ -3114,7 +3118,7 @@ list_del_init(&lower->list); if (lower == node) node = NULL; - btrfs_backref_free_node(cache, lower); + btrfs_backref_drop_node(cache, lower); } btrfs_backref_cleanup_node(cache, node); --- linux-5.8.0.orig/fs/btrfs/backref.h +++ linux-5.8.0/fs/btrfs/backref.h @@ -296,6 +296,9 @@ struct btrfs_backref_node *node) { if (node) { + ASSERT(list_empty(&node->list)); + ASSERT(list_empty(&node->lower)); + ASSERT(node->eb == NULL); cache->nr_nodes--; btrfs_put_root(node->root); kfree(node); @@ -340,11 +343,11 @@ static inline void btrfs_backref_drop_node(struct btrfs_backref_cache *tree, struct btrfs_backref_node *node) { - BUG_ON(!list_empty(&node->upper)); + ASSERT(list_empty(&node->upper)); btrfs_backref_drop_node_buffer(node); - list_del(&node->list); - list_del(&node->lower); + list_del_init(&node->list); + list_del_init(&node->lower); if (!RB_EMPTY_NODE(&node->rb_node)) rb_erase(&node->rb_node, &tree->rb_root); btrfs_backref_free_node(tree, node); --- linux-5.8.0.orig/fs/btrfs/block-group.c +++ linux-5.8.0/fs/btrfs/block-group.c @@ -642,7 +642,15 @@ mutex_lock(&caching_ctl->mutex); down_read(&fs_info->commit_root_sem); - if (btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) + /* + * If we are in the transaction that populated the free space tree we + * can't actually cache from the free space tree as our commit root and + * real root are the same, so we could change the contents of the blocks + * while caching. Instead do the slow caching in this case, and after + * the transaction has committed we will be safe. + */ + if (btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE) && + !(test_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags))) ret = load_free_space_tree(caching_ctl); else ret = load_extent_tree_free(caching_ctl); @@ -1227,6 +1235,11 @@ spin_lock(&sinfo->lock); spin_lock(&cache->lock); + if (cache->swap_extents) { + ret = -ETXTBSY; + goto out; + } + if (cache->ro) { cache->ro++; ret = 0; @@ -1448,9 +1461,7 @@ btrfs_space_info_update_bytes_pinned(fs_info, space_info, -block_group->pinned); space_info->bytes_readonly += block_group->pinned; - percpu_counter_add_batch(&space_info->total_bytes_pinned, - -block_group->pinned, - BTRFS_TOTAL_BYTES_PINNED_BATCH); + __btrfs_mod_total_bytes_pinned(space_info, -block_group->pinned); block_group->pinned = 0; spin_unlock(&block_group->lock); @@ -1814,7 +1825,6 @@ cache->fs_info = fs_info; cache->full_stripe_len = btrfs_full_stripe_len(fs_info, start); - set_free_space_tree_thresholds(cache); cache->discard_index = BTRFS_DISCARD_INDEX_UNUSED; @@ -1928,6 +1938,8 @@ if (ret < 0) goto error; + set_free_space_tree_thresholds(cache); + if (need_clear) { /* * When we mount with old space cache, we need to @@ -2049,6 +2061,7 @@ key.offset = 0; btrfs_release_path(path); } + btrfs_release_path(path); rcu_read_lock(); list_for_each_entry_rcu(space_info, &info->space_info, list) { @@ -2148,6 +2161,7 @@ return -ENOMEM; cache->length = size; + set_free_space_tree_thresholds(cache); cache->used = bytes_used; cache->flags = type; cache->last_byte_to_unpin = (u64)-1; @@ -2316,7 +2330,7 @@ } ret = inc_block_group_ro(cache, 0); - if (!do_chunk_alloc) + if (!do_chunk_alloc || ret == -ETXTBSY) goto unlock_out; if (!ret) goto out; @@ -2325,6 +2339,8 @@ if (ret < 0) goto out; ret = inc_block_group_ro(cache, 0); + if (ret == -ETXTBSY) + goto unlock_out; out: if (cache->flags & BTRFS_BLOCK_GROUP_SYSTEM) { alloc_flags = update_block_group_flags(fs_info, cache->flags); @@ -2621,8 +2637,10 @@ if (!path) { path = btrfs_alloc_path(); - if (!path) - return -ENOMEM; + if (!path) { + ret = -ENOMEM; + goto out; + } } /* @@ -2716,16 +2734,14 @@ btrfs_put_block_group(cache); if (drop_reserve) btrfs_delayed_refs_rsv_release(fs_info, 1); - - if (ret) - break; - /* * Avoid blocking other tasks for too long. It might even save * us from writing caches for block groups that are going to be * removed. */ mutex_unlock(&trans->transaction->cache_write_mutex); + if (ret) + goto out; mutex_lock(&trans->transaction->cache_write_mutex); } mutex_unlock(&trans->transaction->cache_write_mutex); @@ -2734,7 +2750,8 @@ * Go through delayed refs for all the stuff we've just kicked off * and then loop back (just once) */ - ret = btrfs_run_delayed_refs(trans, 0); + if (!ret) + ret = btrfs_run_delayed_refs(trans, 0); if (!ret && loops == 0) { loops++; spin_lock(&cur_trans->dirty_bgs_lock); @@ -2748,7 +2765,12 @@ goto again; } spin_unlock(&cur_trans->dirty_bgs_lock); - } else if (ret < 0) { + } +out: + if (ret < 0) { + spin_lock(&cur_trans->dirty_bgs_lock); + list_splice_init(&dirty, &cur_trans->dirty_bgs); + spin_unlock(&cur_trans->dirty_bgs_lock); btrfs_cleanup_dirty_bgs(cur_trans, fs_info); } @@ -2952,10 +2974,8 @@ spin_unlock(&cache->lock); spin_unlock(&cache->space_info->lock); - percpu_counter_add_batch( - &cache->space_info->total_bytes_pinned, - num_bytes, - BTRFS_TOTAL_BYTES_PINNED_BATCH); + __btrfs_mod_total_bytes_pinned(cache->space_info, + num_bytes); set_extent_dirty(&trans->transaction->pinned_extents, bytenr, bytenr + num_bytes - 1, GFP_NOFS | __GFP_NOFAIL); @@ -3393,6 +3413,7 @@ ASSERT(list_empty(&block_group->io_list)); ASSERT(list_empty(&block_group->bg_list)); ASSERT(atomic_read(&block_group->count) == 1); + ASSERT(block_group->swap_extents == 0); btrfs_put_block_group(block_group); spin_lock(&info->block_group_cache_lock); @@ -3469,3 +3490,26 @@ __btrfs_remove_free_space_cache(block_group->free_space_ctl); } } + +bool btrfs_inc_block_group_swap_extents(struct btrfs_block_group *bg) +{ + bool ret = true; + + spin_lock(&bg->lock); + if (bg->ro) + ret = false; + else + bg->swap_extents++; + spin_unlock(&bg->lock); + + return ret; +} + +void btrfs_dec_block_group_swap_extents(struct btrfs_block_group *bg, int amount) +{ + spin_lock(&bg->lock); + ASSERT(!bg->ro); + ASSERT(bg->swap_extents >= amount); + bg->swap_extents -= amount; + spin_unlock(&bg->lock); +} --- linux-5.8.0.orig/fs/btrfs/block-group.h +++ linux-5.8.0/fs/btrfs/block-group.h @@ -182,6 +182,12 @@ */ int needs_free_space; + /* + * Number of extents in this block group used for swap files. + * All accesses protected by the spinlock 'lock'. + */ + int swap_extents; + /* Record locked full stripes for RAID5/6 block group */ struct btrfs_full_stripe_locks_tree full_stripe_locks_root; }; @@ -300,4 +306,7 @@ u64 physical, u64 **logical, int *naddrs, int *stripe_len); #endif +bool btrfs_inc_block_group_swap_extents(struct btrfs_block_group *bg); +void btrfs_dec_block_group_swap_extents(struct btrfs_block_group *bg, int amount); + #endif /* BTRFS_BLOCK_GROUP_H */ --- linux-5.8.0.orig/fs/btrfs/btrfs_inode.h +++ linux-5.8.0/fs/btrfs/btrfs_inode.h @@ -31,6 +31,13 @@ BTRFS_INODE_READDIO_NEED_LOCK, BTRFS_INODE_HAS_PROPS, BTRFS_INODE_SNAPSHOT_FLUSH, + /* + * Set and used when logging an inode and it serves to signal that an + * inode does not have xattrs, so subsequent fsyncs can avoid searching + * for xattrs to log. This bit must be cleared whenever a xattr is added + * to an inode. + */ + BTRFS_INODE_NO_XATTRS, }; /* in memory btrfs inode */ --- linux-5.8.0.orig/fs/btrfs/ctree.c +++ linux-5.8.0/fs/btrfs/ctree.c @@ -220,9 +220,12 @@ ret = btrfs_inc_ref(trans, root, cow, 1); else ret = btrfs_inc_ref(trans, root, cow, 0); - - if (ret) + if (ret) { + btrfs_tree_unlock(cow); + free_extent_buffer(cow); + btrfs_abort_transaction(trans, ret); return ret; + } btrfs_mark_buffer_dirty(cow); *cow_ret = cow; @@ -1061,6 +1064,8 @@ ret = update_ref_for_cow(trans, root, buf, cow, &last_ref); if (ret) { + btrfs_tree_unlock(cow); + free_extent_buffer(cow); btrfs_abort_transaction(trans, ret); return ret; } @@ -1068,6 +1073,8 @@ if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state)) { ret = btrfs_reloc_cow_block(trans, root, buf, cow); if (ret) { + btrfs_tree_unlock(cow); + free_extent_buffer(cow); btrfs_abort_transaction(trans, ret); return ret; } @@ -1100,6 +1107,8 @@ if (last_ref) { ret = tree_mod_log_free_eb(buf); if (ret) { + btrfs_tree_unlock(cow); + free_extent_buffer(cow); btrfs_abort_transaction(trans, ret); return ret; } @@ -1297,6 +1306,8 @@ btrfs_tree_read_unlock_blocking(eb); free_extent_buffer(eb); + btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb_rewin), + eb_rewin, btrfs_header_level(eb_rewin)); btrfs_tree_read_lock(eb_rewin); __tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm); WARN_ON(btrfs_header_nritems(eb_rewin) > @@ -1353,7 +1364,9 @@ "failed to read tree block %llu from get_old_root", logical); } else { + btrfs_tree_read_lock(old); eb = btrfs_clone_extent_buffer(old); + btrfs_tree_read_unlock(old); free_extent_buffer(old); } } else if (old_root) { @@ -1370,7 +1383,6 @@ if (!eb) return NULL; - btrfs_tree_read_lock(eb); if (old_root) { btrfs_set_header_bytenr(eb, eb->start); btrfs_set_header_backref_rev(eb, BTRFS_MIXED_BACKREF_REV); @@ -1378,6 +1390,9 @@ btrfs_set_header_level(eb, old_root->level); btrfs_set_header_generation(eb, old_generation); } + btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb), eb, + btrfs_header_level(eb)); + btrfs_tree_read_lock(eb); if (tm) __tree_mod_log_rewind(fs_info, eb, time_seq, tm); else @@ -3143,6 +3158,58 @@ } /* + * Check key order of two sibling extent buffers. + * + * Return true if something is wrong. + * Return false if everything is fine. + * + * Tree-checker only works inside one tree block, thus the following + * corruption can not be detected by tree-checker: + * + * Leaf @left | Leaf @right + * -------------------------------------------------------------- + * | 1 | 2 | 3 | 4 | 5 | f6 | | 7 | 8 | + * + * Key f6 in leaf @left itself is valid, but not valid when the next + * key in leaf @right is 7. + * This can only be checked at tree block merge time. + * And since tree checker has ensured all key order in each tree block + * is correct, we only need to bother the last key of @left and the first + * key of @right. + */ +static bool check_sibling_keys(struct extent_buffer *left, + struct extent_buffer *right) +{ + struct btrfs_key left_last; + struct btrfs_key right_first; + int level = btrfs_header_level(left); + int nr_left = btrfs_header_nritems(left); + int nr_right = btrfs_header_nritems(right); + + /* No key to check in one of the tree blocks */ + if (!nr_left || !nr_right) + return false; + + if (level) { + btrfs_node_key_to_cpu(left, &left_last, nr_left - 1); + btrfs_node_key_to_cpu(right, &right_first, 0); + } else { + btrfs_item_key_to_cpu(left, &left_last, nr_left - 1); + btrfs_item_key_to_cpu(right, &right_first, 0); + } + + if (btrfs_comp_cpu_keys(&left_last, &right_first) >= 0) { + btrfs_crit(left->fs_info, +"bad key order, sibling blocks, left last (%llu %u %llu) right first (%llu %u %llu)", + left_last.objectid, left_last.type, + left_last.offset, right_first.objectid, + right_first.type, right_first.offset); + return true; + } + return false; +} + +/* * try to push data from one node into the next node left in the * tree. * @@ -3186,6 +3253,12 @@ } else push_items = min(src_nritems - 8, push_items); + /* dst is the left eb, src is the middle eb */ + if (check_sibling_keys(dst, src)) { + ret = -EUCLEAN; + btrfs_abort_transaction(trans, ret); + return ret; + } ret = tree_mod_log_eb_copy(dst, src, dst_nritems, 0, push_items); if (ret) { btrfs_abort_transaction(trans, ret); @@ -3254,6 +3327,12 @@ if (max_push < push_items) push_items = max_push; + /* dst is the right eb, src is the middle eb */ + if (check_sibling_keys(src, dst)) { + ret = -EUCLEAN; + btrfs_abort_transaction(trans, ret); + return ret; + } ret = tree_mod_log_insert_move(dst, push_items, 0, dst_nritems); BUG_ON(ret < 0); memmove_extent_buffer(dst, btrfs_node_key_ptr_offset(push_items), @@ -3730,6 +3809,12 @@ if (left_nritems == 0) goto out_unlock; + if (check_sibling_keys(left, right)) { + ret = -EUCLEAN; + btrfs_tree_unlock(right); + free_extent_buffer(right); + return ret; + } if (path->slots[0] == left_nritems && !empty) { /* Key greater than all keys in the leaf, right neighbor has * enough room for it and we're not emptying our leaf to delete @@ -3967,6 +4052,10 @@ goto out; } + if (check_sibling_keys(left, right)) { + ret = -EUCLEAN; + goto out; + } return __push_leaf_left(path, min_data_size, empty, left, free_space, right_nritems, max_slot); --- linux-5.8.0.orig/fs/btrfs/ctree.h +++ linux-5.8.0/fs/btrfs/ctree.h @@ -521,6 +521,11 @@ * points to a struct btrfs_device. */ bool is_block_group; + /* + * Only used when 'is_block_group' is true and it is the number of + * extents used by a swapfile for this block group ('ptr' field). + */ + int bg_extent_count; }; bool btrfs_pinned_by_swapfile(struct btrfs_fs_info *fs_info, void *ptr); @@ -568,6 +573,9 @@ /* Indicate that the discard workqueue can service discards. */ BTRFS_FS_DISCARD_RUNNING, + + /* Indicate that we can't trust the free space tree for caching yet */ + BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, }; struct btrfs_fs_info { @@ -873,7 +881,10 @@ */ struct ulist *qgroup_ulist; - /* protect user change for quota operations */ + /* + * Protect user change for quota operations. If a transaction is needed, + * it must be started before locking this lock. + */ struct mutex qgroup_ioctl_lock; /* list of dirty qgroups to be written at next commit */ @@ -1059,8 +1070,10 @@ wait_queue_head_t log_writer_wait; wait_queue_head_t log_commit_wait[2]; struct list_head log_ctxs[2]; + /* Used only for log trees of subvolumes, not for the log root tree */ atomic_t log_writers; atomic_t log_commit[2]; + /* Used only for log trees of subvolumes, not for the log root tree */ atomic_t log_batch; int log_transid; /* No matter the commit succeeds or not*/ @@ -2466,7 +2479,7 @@ u64 bytenr, u64 num_bytes); int btrfs_exclude_logged_extents(struct extent_buffer *eb); int btrfs_cross_ref_exist(struct btrfs_root *root, - u64 objectid, u64 offset, u64 bytenr); + u64 objectid, u64 offset, u64 bytenr, bool strict); struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 parent, u64 root_objectid, @@ -2500,7 +2513,6 @@ u64 start, u64 len, int delalloc); int btrfs_pin_reserved_extent(struct btrfs_trans_handle *trans, u64 start, u64 len); -void btrfs_prepare_extent_commit(struct btrfs_fs_info *fs_info); int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans); int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans, struct btrfs_ref *generic_ref); @@ -2537,7 +2549,7 @@ int btrfs_subvolume_reserve_metadata(struct btrfs_root *root, struct btrfs_block_rsv *rsv, int nitems, bool use_global_rsv); -void btrfs_subvolume_release_metadata(struct btrfs_fs_info *fs_info, +void btrfs_subvolume_release_metadata(struct btrfs_root *root, struct btrfs_block_rsv *rsv); void btrfs_delalloc_release_extents(struct btrfs_inode *inode, u64 num_bytes); @@ -2852,7 +2864,7 @@ u64 start, u64 len); noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len, u64 *orig_start, u64 *orig_block_len, - u64 *ram_bytes); + u64 *ram_bytes, bool strict); void __btrfs_del_delalloc_inode(struct btrfs_root *root, struct btrfs_inode *inode); @@ -2982,6 +2994,8 @@ size_t num_pages, loff_t pos, size_t write_bytes, struct extent_state **cached); int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end); +int btrfs_check_can_nocow(struct btrfs_inode *inode, loff_t pos, + size_t *write_bytes, bool nowait); /* tree-defrag.c */ int btrfs_defrag_leaves(struct btrfs_trans_handle *trans, @@ -3194,7 +3208,7 @@ /* Report first abort since mount */ \ if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \ &((trans)->fs_info->fs_state))) { \ - if ((errno) != -EIO) { \ + if ((errno) != -EIO && (errno) != -EROFS) { \ WARN(1, KERN_DEBUG \ "BTRFS: Transaction aborted (error %d)\n", \ (errno)); \ @@ -3432,6 +3446,8 @@ int btrfs_reada_wait(void *handle); void btrfs_reada_detach(void *handle); int btree_readahead_hook(struct extent_buffer *eb, int err); +void btrfs_reada_remove_dev(struct btrfs_device *dev); +void btrfs_reada_undo_remove_dev(struct btrfs_device *dev); static inline int is_fstree(u64 rootid) { --- linux-5.8.0.orig/fs/btrfs/delayed-inode.c +++ linux-5.8.0/fs/btrfs/delayed-inode.c @@ -627,8 +627,7 @@ */ if (!src_rsv || (!trans->bytes_reserved && src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) { - ret = btrfs_qgroup_reserve_meta_prealloc(root, - fs_info->nodesize, true); + ret = btrfs_qgroup_reserve_meta_prealloc(root, num_bytes, true); if (ret < 0) return ret; ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes, @@ -650,7 +649,7 @@ btrfs_ino(inode), num_bytes, 1); } else { - btrfs_qgroup_free_meta_prealloc(root, fs_info->nodesize); + btrfs_qgroup_free_meta_prealloc(root, num_bytes); } return ret; } --- linux-5.8.0.orig/fs/btrfs/delayed-ref.c +++ linux-5.8.0/fs/btrfs/delayed-ref.c @@ -648,12 +648,12 @@ */ static noinline void update_existing_head_ref(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_head *existing, - struct btrfs_delayed_ref_head *update, - int *old_ref_mod_ret) + struct btrfs_delayed_ref_head *update) { struct btrfs_delayed_ref_root *delayed_refs = &trans->transaction->delayed_refs; struct btrfs_fs_info *fs_info = trans->fs_info; + u64 flags = btrfs_ref_head_to_space_flags(existing); int old_ref_mod; BUG_ON(existing->is_data != update->is_data); @@ -701,8 +701,6 @@ * currently, for refs we just added we know we're a-ok. */ old_ref_mod = existing->total_ref_mod; - if (old_ref_mod_ret) - *old_ref_mod_ret = old_ref_mod; existing->ref_mod += update->ref_mod; existing->total_ref_mod += update->ref_mod; @@ -724,6 +722,27 @@ trans->delayed_ref_updates += csum_leaves; } } + + /* + * This handles the following conditions: + * + * 1. We had a ref mod of 0 or more and went negative, indicating that + * we may be freeing space, so add our space to the + * total_bytes_pinned counter. + * 2. We were negative and went to 0 or positive, so no longer can say + * that the space would be pinned, decrement our counter from the + * total_bytes_pinned counter. + * 3. We are now at 0 and have ->must_insert_reserved set, which means + * this was a new allocation and then we dropped it, and thus must + * add our space to the total_bytes_pinned counter. + */ + if (existing->total_ref_mod < 0 && old_ref_mod >= 0) + btrfs_mod_total_bytes_pinned(fs_info, flags, existing->num_bytes); + else if (existing->total_ref_mod >= 0 && old_ref_mod < 0) + btrfs_mod_total_bytes_pinned(fs_info, flags, -existing->num_bytes); + else if (existing->total_ref_mod == 0 && existing->must_insert_reserved) + btrfs_mod_total_bytes_pinned(fs_info, flags, existing->num_bytes); + spin_unlock(&existing->lock); } @@ -798,8 +817,7 @@ add_delayed_ref_head(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_head *head_ref, struct btrfs_qgroup_extent_record *qrecord, - int action, int *qrecord_inserted_ret, - int *old_ref_mod, int *new_ref_mod) + int action, int *qrecord_inserted_ret) { struct btrfs_delayed_ref_head *existing; struct btrfs_delayed_ref_root *delayed_refs; @@ -821,8 +839,7 @@ existing = htree_insert(&delayed_refs->href_root, &head_ref->href_node); if (existing) { - update_existing_head_ref(trans, existing, head_ref, - old_ref_mod); + update_existing_head_ref(trans, existing, head_ref); /* * we've updated the existing ref, free the newly * allocated ref @@ -830,14 +847,17 @@ kmem_cache_free(btrfs_delayed_ref_head_cachep, head_ref); head_ref = existing; } else { - if (old_ref_mod) - *old_ref_mod = 0; + u64 flags = btrfs_ref_head_to_space_flags(head_ref); + if (head_ref->is_data && head_ref->ref_mod < 0) { delayed_refs->pending_csums += head_ref->num_bytes; trans->delayed_ref_updates += btrfs_csum_bytes_to_leaves(trans->fs_info, head_ref->num_bytes); } + if (head_ref->ref_mod < 0) + btrfs_mod_total_bytes_pinned(trans->fs_info, flags, + head_ref->num_bytes); delayed_refs->num_heads++; delayed_refs->num_heads_ready++; atomic_inc(&delayed_refs->num_entries); @@ -845,8 +865,6 @@ } if (qrecord_inserted_ret) *qrecord_inserted_ret = qrecord_inserted; - if (new_ref_mod) - *new_ref_mod = head_ref->total_ref_mod; return head_ref; } @@ -909,8 +927,7 @@ */ int btrfs_add_delayed_tree_ref(struct btrfs_trans_handle *trans, struct btrfs_ref *generic_ref, - struct btrfs_delayed_extent_op *extent_op, - int *old_ref_mod, int *new_ref_mod) + struct btrfs_delayed_extent_op *extent_op) { struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_delayed_tree_ref *ref; @@ -977,8 +994,7 @@ * the spin lock */ head_ref = add_delayed_ref_head(trans, head_ref, record, - action, &qrecord_inserted, - old_ref_mod, new_ref_mod); + action, &qrecord_inserted); ret = insert_delayed_ref(trans, delayed_refs, head_ref, &ref->node); spin_unlock(&delayed_refs->lock); @@ -1006,8 +1022,7 @@ */ int btrfs_add_delayed_data_ref(struct btrfs_trans_handle *trans, struct btrfs_ref *generic_ref, - u64 reserved, int *old_ref_mod, - int *new_ref_mod) + u64 reserved) { struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_delayed_data_ref *ref; @@ -1073,8 +1088,7 @@ * the spin lock */ head_ref = add_delayed_ref_head(trans, head_ref, record, - action, &qrecord_inserted, - old_ref_mod, new_ref_mod); + action, &qrecord_inserted); ret = insert_delayed_ref(trans, delayed_refs, head_ref, &ref->node); spin_unlock(&delayed_refs->lock); @@ -1117,7 +1131,7 @@ spin_lock(&delayed_refs->lock); add_delayed_ref_head(trans, head_ref, NULL, BTRFS_UPDATE_DELAYED_HEAD, - NULL, NULL, NULL); + NULL); spin_unlock(&delayed_refs->lock); --- linux-5.8.0.orig/fs/btrfs/delayed-ref.h +++ linux-5.8.0/fs/btrfs/delayed-ref.h @@ -326,6 +326,16 @@ } } +static inline u64 btrfs_ref_head_to_space_flags( + struct btrfs_delayed_ref_head *head_ref) +{ + if (head_ref->is_data) + return BTRFS_BLOCK_GROUP_DATA; + else if (head_ref->is_system) + return BTRFS_BLOCK_GROUP_SYSTEM; + return BTRFS_BLOCK_GROUP_METADATA; +} + static inline void btrfs_put_delayed_ref_head(struct btrfs_delayed_ref_head *head) { if (refcount_dec_and_test(&head->refs)) @@ -334,12 +344,10 @@ int btrfs_add_delayed_tree_ref(struct btrfs_trans_handle *trans, struct btrfs_ref *generic_ref, - struct btrfs_delayed_extent_op *extent_op, - int *old_ref_mod, int *new_ref_mod); + struct btrfs_delayed_extent_op *extent_op); int btrfs_add_delayed_data_ref(struct btrfs_trans_handle *trans, struct btrfs_ref *generic_ref, - u64 reserved, int *old_ref_mod, - int *new_ref_mod); + u64 reserved); int btrfs_add_delayed_extent_op(struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, struct btrfs_delayed_extent_op *extent_op); --- linux-5.8.0.orig/fs/btrfs/dev-replace.c +++ linux-5.8.0/fs/btrfs/dev-replace.c @@ -95,6 +95,17 @@ ret = btrfs_search_slot(NULL, dev_root, &key, path, 0, 0); if (ret) { no_valid_dev_replace_entry_found: + /* + * We don't have a replace item or it's corrupted. If there is + * a replace target, fail the mount. + */ + if (btrfs_find_device(fs_info->fs_devices, + BTRFS_DEV_REPLACE_DEVID, NULL, NULL, false)) { + btrfs_err(fs_info, + "found replace target device without a valid replace item"); + ret = -EUCLEAN; + goto out; + } ret = 0; dev_replace->replace_state = BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED; @@ -147,8 +158,19 @@ case BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED: case BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED: case BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED: - dev_replace->srcdev = NULL; - dev_replace->tgtdev = NULL; + /* + * We don't have an active replace item but if there is a + * replace target, fail the mount. + */ + if (btrfs_find_device(fs_info->fs_devices, + BTRFS_DEV_REPLACE_DEVID, NULL, NULL, false)) { + btrfs_err(fs_info, + "replace devid present without an active replace item"); + ret = -EUCLEAN; + } else { + dev_replace->srcdev = NULL; + dev_replace->tgtdev = NULL; + } break; case BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED: case BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED: @@ -230,7 +252,7 @@ int ret = 0; *device_out = NULL; - if (fs_info->fs_devices->seeding) { + if (srcdev->fs_devices->seeding) { btrfs_err(fs_info, "the filesystem is a seed filesystem!"); return -EINVAL; } @@ -599,6 +621,37 @@ wake_up(&fs_info->dev_replace.replace_wait); } +/* + * When finishing the device replace, before swapping the source device with the + * target device we must update the chunk allocation state in the target device, + * as it is empty because replace works by directly copying the chunks and not + * through the normal chunk allocation path. + */ +static int btrfs_set_target_alloc_state(struct btrfs_device *srcdev, + struct btrfs_device *tgtdev) +{ + struct extent_state *cached_state = NULL; + u64 start = 0; + u64 found_start; + u64 found_end; + int ret = 0; + + lockdep_assert_held(&srcdev->fs_info->chunk_mutex); + + while (!find_first_extent_bit(&srcdev->alloc_state, start, + &found_start, &found_end, + CHUNK_ALLOCATED, &cached_state)) { + ret = set_extent_bits(&tgtdev->alloc_state, found_start, + found_end, CHUNK_ALLOCATED); + if (ret) + break; + start = found_end + 1; + } + + free_extent_state(cached_state); + return ret; +} + static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info, int scrub_ret) { @@ -637,6 +690,9 @@ } btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1); + if (!scrub_ret) + btrfs_reada_remove_dev(src_device); + /* * We have to use this loop approach because at this point src_device * has to be available for transaction commit to complete, yet new @@ -645,6 +701,7 @@ while (1) { trans = btrfs_start_transaction(root, 0); if (IS_ERR(trans)) { + btrfs_reada_undo_remove_dev(src_device); mutex_unlock(&dev_replace->lock_finishing_cancel_unmount); return PTR_ERR(trans); } @@ -673,8 +730,14 @@ dev_replace->time_stopped = ktime_get_real_seconds(); dev_replace->item_needs_writeback = 1; - /* replace old device with new one in mapping tree */ + /* + * Update allocation state in the new device and replace the old device + * with the new one in the mapping tree. + */ if (!scrub_ret) { + scrub_ret = btrfs_set_target_alloc_state(src_device, tgt_device); + if (scrub_ret) + goto error; btrfs_dev_replace_update_device_in_mapping_tree(fs_info, src_device, tgt_device); @@ -685,9 +748,11 @@ btrfs_dev_name(src_device), src_device->devid, rcu_str_deref(tgt_device->name), scrub_ret); +error: up_write(&dev_replace->rwsem); mutex_unlock(&fs_info->chunk_mutex); mutex_unlock(&fs_info->fs_devices->device_list_mutex); + btrfs_reada_undo_remove_dev(src_device); btrfs_rm_dev_replace_blocked(fs_info); if (tgt_device) btrfs_destroy_dev_replace_tgtdev(tgt_device); @@ -745,7 +810,9 @@ /* replace the sysfs entry */ btrfs_sysfs_remove_devices_dir(fs_info->fs_devices, src_device); btrfs_sysfs_update_devid(tgt_device); - btrfs_rm_dev_replace_free_srcdev(src_device); + if (test_bit(BTRFS_DEV_STATE_WRITEABLE, &src_device->dev_state)) + btrfs_scratch_superblocks(fs_info, src_device->bdev, + src_device->name->str); /* write back the superblocks */ trans = btrfs_start_transaction(root, 0); @@ -754,6 +821,8 @@ mutex_unlock(&dev_replace->lock_finishing_cancel_unmount); + btrfs_rm_dev_replace_free_srcdev(src_device); + return 0; } --- linux-5.8.0.orig/fs/btrfs/discard.c +++ linux-5.8.0/fs/btrfs/discard.c @@ -199,16 +199,15 @@ static struct btrfs_block_group *peek_discard_list( struct btrfs_discard_ctl *discard_ctl, enum btrfs_discard_state *discard_state, - int *discard_index) + int *discard_index, u64 now) { struct btrfs_block_group *block_group; - const u64 now = ktime_get_ns(); spin_lock(&discard_ctl->lock); again: block_group = find_next_block_group(discard_ctl, now); - if (block_group && now > block_group->discard_eligible_time) { + if (block_group && now >= block_group->discard_eligible_time) { if (block_group->discard_index == BTRFS_DISCARD_INDEX_UNUSED && block_group->used != 0) { if (btrfs_is_block_group_data_only(block_group)) @@ -222,12 +221,11 @@ block_group->discard_state = BTRFS_DISCARD_EXTENTS; } discard_ctl->block_group = block_group; + } + if (block_group) { *discard_state = block_group->discard_state; *discard_index = block_group->discard_index; - } else { - block_group = NULL; } - spin_unlock(&discard_ctl->lock); return block_group; @@ -330,28 +328,15 @@ btrfs_discard_schedule_work(discard_ctl, false); } -/** - * btrfs_discard_schedule_work - responsible for scheduling the discard work - * @discard_ctl: discard control - * @override: override the current timer - * - * Discards are issued by a delayed workqueue item. @override is used to - * update the current delay as the baseline delay interval is reevaluated on - * transaction commit. This is also maxed with any other rate limit. - */ -void btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl, - bool override) +static void __btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl, + u64 now, bool override) { struct btrfs_block_group *block_group; - const u64 now = ktime_get_ns(); - - spin_lock(&discard_ctl->lock); if (!btrfs_run_discard_work(discard_ctl)) - goto out; - + return; if (!override && delayed_work_pending(&discard_ctl->work)) - goto out; + return; block_group = find_next_block_group(discard_ctl, now); if (block_group) { @@ -384,7 +369,24 @@ mod_delayed_work(discard_ctl->discard_workers, &discard_ctl->work, delay); } -out: +} + +/* + * btrfs_discard_schedule_work - responsible for scheduling the discard work + * @discard_ctl: discard control + * @override: override the current timer + * + * Discards are issued by a delayed workqueue item. @override is used to + * update the current delay as the baseline delay interval is reevaluated on + * transaction commit. This is also maxed with any other rate limit. + */ +void btrfs_discard_schedule_work(struct btrfs_discard_ctl *discard_ctl, + bool override) +{ + const u64 now = ktime_get_ns(); + + spin_lock(&discard_ctl->lock); + __btrfs_discard_schedule_work(discard_ctl, now, override); spin_unlock(&discard_ctl->lock); } @@ -429,13 +431,18 @@ int discard_index = 0; u64 trimmed = 0; u64 minlen = 0; + u64 now = ktime_get_ns(); discard_ctl = container_of(work, struct btrfs_discard_ctl, work.work); block_group = peek_discard_list(discard_ctl, &discard_state, - &discard_index); + &discard_index, now); if (!block_group || !btrfs_run_discard_work(discard_ctl)) return; + if (now < block_group->discard_eligible_time) { + btrfs_discard_schedule_work(discard_ctl, false); + return; + } /* Perform discarding */ minlen = discard_minlen[discard_index]; @@ -484,9 +491,8 @@ spin_lock(&discard_ctl->lock); discard_ctl->block_group = NULL; + __btrfs_discard_schedule_work(discard_ctl, now, false); spin_unlock(&discard_ctl->lock); - - btrfs_discard_schedule_work(discard_ctl, false); } /** --- linux-5.8.0.orig/fs/btrfs/disk-io.c +++ linux-5.8.0/fs/btrfs/disk-io.c @@ -636,16 +636,15 @@ csum_tree_block(eb, result); if (memcmp_extent_buffer(eb, result, 0, csum_size)) { - u32 val; - u32 found = 0; - - memcpy(&found, result, csum_size); + u8 val[BTRFS_CSUM_SIZE] = { 0 }; read_extent_buffer(eb, &val, 0, csum_size); btrfs_warn_rl(fs_info, - "%s checksum verify failed on %llu wanted %x found %x level %d", + "%s checksum verify failed on %llu wanted " CSUM_FMT " found " CSUM_FMT " level %d", fs_info->sb->s_id, eb->start, - val, found, btrfs_header_level(eb)); + CSUM_FMT_VALUE(csum_size, val), + CSUM_FMT_VALUE(csum_size, result), + btrfs_header_level(eb)); ret = -EUCLEAN; goto err; } @@ -1342,32 +1341,26 @@ return 0; } -struct btrfs_root *btrfs_read_tree_root(struct btrfs_root *tree_root, - struct btrfs_key *key) +static struct btrfs_root *read_tree_root_path(struct btrfs_root *tree_root, + struct btrfs_path *path, + struct btrfs_key *key) { struct btrfs_root *root; struct btrfs_fs_info *fs_info = tree_root->fs_info; - struct btrfs_path *path; u64 generation; int ret; int level; - path = btrfs_alloc_path(); - if (!path) - return ERR_PTR(-ENOMEM); - root = btrfs_alloc_root(fs_info, key->objectid, GFP_NOFS); - if (!root) { - ret = -ENOMEM; - goto alloc_fail; - } + if (!root) + return ERR_PTR(-ENOMEM); ret = btrfs_find_root(tree_root, key, path, &root->root_item, &root->root_key); if (ret) { if (ret > 0) ret = -ENOENT; - goto find_fail; + goto fail; } generation = btrfs_root_generation(&root->root_item); @@ -1378,24 +1371,39 @@ if (IS_ERR(root->node)) { ret = PTR_ERR(root->node); root->node = NULL; - goto find_fail; + goto fail; } else if (!btrfs_buffer_uptodate(root->node, generation, 0)) { ret = -EIO; - goto find_fail; + goto fail; } root->commit_root = btrfs_root_node(root); -out: - btrfs_free_path(path); return root; - -find_fail: +fail: btrfs_put_root(root); -alloc_fail: - root = ERR_PTR(ret); - goto out; + return ERR_PTR(ret); +} + +struct btrfs_root *btrfs_read_tree_root(struct btrfs_root *tree_root, + struct btrfs_key *key) +{ + struct btrfs_root *root; + struct btrfs_path *path; + + path = btrfs_alloc_path(); + if (!path) + return ERR_PTR(-ENOMEM); + root = read_tree_root_path(tree_root, path, key); + btrfs_free_path(path); + + return root; } -static int btrfs_init_fs_root(struct btrfs_root *root) +/* + * Initialize subvolume root in-memory structure + * + * @anon_dev: anonymous device to attach to the root, if zero, allocate new + */ +static int btrfs_init_fs_root(struct btrfs_root *root, dev_t anon_dev) { int ret; unsigned int nofs_flag; @@ -1428,9 +1436,20 @@ spin_lock_init(&root->ino_cache_lock); init_waitqueue_head(&root->ino_cache_wait); - ret = get_anon_bdev(&root->anon_dev); - if (ret) - goto fail; + /* + * Don't assign anonymous block device to roots that are not exposed to + * userspace, the id pool is limited to 1M + */ + if (is_fstree(root->root_key.objectid) && + btrfs_root_refs(&root->root_item) > 0) { + if (!anon_dev) { + ret = get_anon_bdev(&root->anon_dev); + if (ret) + goto fail; + } else { + root->anon_dev = anon_dev; + } + } mutex_lock(&root->objectid_mutex); ret = btrfs_find_highest_objectid(root, @@ -1464,6 +1483,31 @@ return root; } +static struct btrfs_root *btrfs_get_global_root(struct btrfs_fs_info *fs_info, + u64 objectid) +{ + if (objectid == BTRFS_ROOT_TREE_OBJECTID) + return btrfs_grab_root(fs_info->tree_root); + if (objectid == BTRFS_EXTENT_TREE_OBJECTID) + return btrfs_grab_root(fs_info->extent_root); + if (objectid == BTRFS_CHUNK_TREE_OBJECTID) + return btrfs_grab_root(fs_info->chunk_root); + if (objectid == BTRFS_DEV_TREE_OBJECTID) + return btrfs_grab_root(fs_info->dev_root); + if (objectid == BTRFS_CSUM_TREE_OBJECTID) + return btrfs_grab_root(fs_info->csum_root); + if (objectid == BTRFS_QUOTA_TREE_OBJECTID) + return btrfs_grab_root(fs_info->quota_root) ? + fs_info->quota_root : ERR_PTR(-ENOENT); + if (objectid == BTRFS_UUID_TREE_OBJECTID) + return btrfs_grab_root(fs_info->uuid_root) ? + fs_info->uuid_root : ERR_PTR(-ENOENT); + if (objectid == BTRFS_FREE_SPACE_TREE_OBJECTID) + return btrfs_grab_root(fs_info->free_space_root) ? + fs_info->free_space_root : ERR_PTR(-ENOENT); + return NULL; +} + int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root) { @@ -1534,36 +1578,41 @@ } -struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info, - u64 objectid, bool check_ref) +/* + * Get an in-memory reference of a root structure. + * + * For essential trees like root/extent tree, we grab it from fs_info directly. + * For subvolume trees, we check the cached filesystem roots first. If not + * found, then read it from disk and add it to cached fs roots. + * + * Caller should release the root by calling btrfs_put_root() after the usage. + * + * NOTE: Reloc and log trees can't be read by this function as they share the + * same root objectid. + * + * @objectid: root id + * @anon_dev: preallocated anonymous block device number for new roots, + * pass 0 for new allocation. + * @check_ref: whether to check root item references, If true, return -ENOENT + * for orphan roots + */ +static struct btrfs_root *btrfs_get_root_ref(struct btrfs_fs_info *fs_info, + u64 objectid, dev_t anon_dev, + bool check_ref) { struct btrfs_root *root; struct btrfs_path *path; struct btrfs_key key; int ret; - if (objectid == BTRFS_ROOT_TREE_OBJECTID) - return btrfs_grab_root(fs_info->tree_root); - if (objectid == BTRFS_EXTENT_TREE_OBJECTID) - return btrfs_grab_root(fs_info->extent_root); - if (objectid == BTRFS_CHUNK_TREE_OBJECTID) - return btrfs_grab_root(fs_info->chunk_root); - if (objectid == BTRFS_DEV_TREE_OBJECTID) - return btrfs_grab_root(fs_info->dev_root); - if (objectid == BTRFS_CSUM_TREE_OBJECTID) - return btrfs_grab_root(fs_info->csum_root); - if (objectid == BTRFS_QUOTA_TREE_OBJECTID) - return btrfs_grab_root(fs_info->quota_root) ? - fs_info->quota_root : ERR_PTR(-ENOENT); - if (objectid == BTRFS_UUID_TREE_OBJECTID) - return btrfs_grab_root(fs_info->uuid_root) ? - fs_info->uuid_root : ERR_PTR(-ENOENT); - if (objectid == BTRFS_FREE_SPACE_TREE_OBJECTID) - return btrfs_grab_root(fs_info->free_space_root) ? - fs_info->free_space_root : ERR_PTR(-ENOENT); + root = btrfs_get_global_root(fs_info, objectid); + if (root) + return root; again: root = btrfs_lookup_fs_root(fs_info, objectid); if (root) { + /* Shouldn't get preallocated anon_dev for cached roots */ + ASSERT(!anon_dev); if (check_ref && btrfs_root_refs(&root->root_item) == 0) { btrfs_put_root(root); return ERR_PTR(-ENOENT); @@ -1583,7 +1632,7 @@ goto fail; } - ret = btrfs_init_fs_root(root); + ret = btrfs_init_fs_root(root, anon_dev); if (ret) goto fail; @@ -1616,6 +1665,33 @@ return ERR_PTR(ret); } +/* + * Get in-memory reference of a root structure + * + * @objectid: tree objectid + * @check_ref: if set, verify that the tree exists and the item has at least + * one reference + */ +struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info, + u64 objectid, bool check_ref) +{ + return btrfs_get_root_ref(fs_info, objectid, 0, check_ref); +} + +/* + * Get in-memory reference of a root structure, created as new, optionally pass + * the anonymous block device id + * + * @objectid: tree objectid + * @anon_dev: if zero, allocate a new anonymous block device or use the + * parameter value + */ +struct btrfs_root *btrfs_get_new_fs_root(struct btrfs_fs_info *fs_info, + u64 objectid, dev_t anon_dev) +{ + return btrfs_get_root_ref(fs_info, objectid, anon_dev, true); +} + static int btrfs_congested_fn(void *congested_data, int bdi_bits) { struct btrfs_fs_info *info = (struct btrfs_fs_info *)congested_data; @@ -1638,6 +1714,52 @@ } /* + * btrfs_get_fs_root_commit_root - return a root for the given objectid + * @fs_info: the fs_info + * @objectid: the objectid we need to lookup + * + * This is exclusively used for backref walking, and exists specifically because + * of how qgroups does lookups. Qgroups will do a backref lookup at delayed ref + * creation time, which means we may have to read the tree_root in order to look + * up a fs root that is not in memory. If the root is not in memory we will + * read the tree root commit root and look up the fs root from there. This is a + * temporary root, it will not be inserted into the radix tree as it doesn't + * have the most uptodate information, it'll simply be discarded once the + * backref code is finished using the root. + */ +struct btrfs_root *btrfs_get_fs_root_commit_root(struct btrfs_fs_info *fs_info, + struct btrfs_path *path, + u64 objectid) +{ + struct btrfs_root *root; + struct btrfs_key key; + + ASSERT(path->search_commit_root && path->skip_locking); + + /* + * This can return -ENOENT if we ask for a root that doesn't exist, but + * since this is called via the backref walking code we won't be looking + * up a root that doesn't exist, unless there's corruption. So if root + * != NULL just return it. + */ + root = btrfs_get_global_root(fs_info, objectid); + if (root) + return root; + + root = btrfs_lookup_fs_root(fs_info, objectid); + if (root) + return root; + + key.objectid = objectid; + key.type = BTRFS_ROOT_ITEM_KEY; + key.offset = (u64)-1; + root = read_tree_root_path(fs_info->tree_root, path, &key); + btrfs_release_path(path); + + return root; +} + +/* * called by the kthread helper functions to finally call the bio end_io * functions. This is where read checksum verification actually happens */ @@ -3382,6 +3504,8 @@ btrfs_put_block_group_cache(fs_info); fail_tree_roots: + if (fs_info->data_reloc_root) + btrfs_drop_and_free_fs_root(fs_info, fs_info->data_reloc_root); free_root_pointers(fs_info, true); invalidate_inode_pages2(fs_info->btree_inode->i_mapping); @@ -3445,8 +3569,12 @@ return ERR_CAST(page); super = page_address(page); - if (btrfs_super_bytenr(super) != bytenr || - btrfs_super_magic(super) != BTRFS_MAGIC) { + if (btrfs_super_magic(super) != BTRFS_MAGIC) { + btrfs_release_disk_super(super); + return ERR_PTR(-ENODATA); + } + + if (btrfs_super_bytenr(super) != bytenr) { btrfs_release_disk_super(super); return ERR_PTR(-EINVAL); } @@ -4510,6 +4638,7 @@ cache->io_ctl.inode = NULL; iput(inode); } + ASSERT(cache->io_ctl.pages == NULL); btrfs_put_block_group(cache); } --- linux-5.8.0.orig/fs/btrfs/disk-io.h +++ linux-5.8.0/fs/btrfs/disk-io.h @@ -67,6 +67,11 @@ struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info, u64 objectid, bool check_ref); +struct btrfs_root *btrfs_get_new_fs_root(struct btrfs_fs_info *fs_info, + u64 objectid, dev_t anon_dev); +struct btrfs_root *btrfs_get_fs_root_commit_root(struct btrfs_fs_info *fs_info, + struct btrfs_path *path, + u64 objectid); void btrfs_free_fs_info(struct btrfs_fs_info *fs_info); int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info); --- linux-5.8.0.orig/fs/btrfs/extent-io-tree.h +++ linux-5.8.0/fs/btrfs/extent-io-tree.h @@ -34,6 +34,8 @@ */ #define CHUNK_ALLOCATED EXTENT_DIRTY #define CHUNK_TRIMMED EXTENT_DEFRAG +#define CHUNK_STATE_MASK (CHUNK_ALLOCATED | \ + CHUNK_TRIMMED) enum { IO_TREE_FS_PINNED_EXTENTS, @@ -46,6 +48,7 @@ IO_TREE_INODE_FILE_EXTENT, IO_TREE_LOG_CSUM_RANGE, IO_TREE_SELFTEST, + IO_TREE_DEVICE_ALLOC_STATE, }; struct extent_io_tree { --- linux-5.8.0.orig/fs/btrfs/extent-tree.c +++ linux-5.8.0/fs/btrfs/extent-tree.c @@ -33,6 +33,7 @@ #include "delalloc-space.h" #include "block-group.h" #include "discard.h" +#include "rcu-string.h" #undef SCRAMBLE_DELAYED_REFS @@ -81,41 +82,6 @@ EXTENT_UPTODATE); } -static u64 generic_ref_to_space_flags(struct btrfs_ref *ref) -{ - if (ref->type == BTRFS_REF_METADATA) { - if (ref->tree_ref.root == BTRFS_CHUNK_TREE_OBJECTID) - return BTRFS_BLOCK_GROUP_SYSTEM; - else - return BTRFS_BLOCK_GROUP_METADATA; - } - return BTRFS_BLOCK_GROUP_DATA; -} - -static void add_pinned_bytes(struct btrfs_fs_info *fs_info, - struct btrfs_ref *ref) -{ - struct btrfs_space_info *space_info; - u64 flags = generic_ref_to_space_flags(ref); - - space_info = btrfs_find_space_info(fs_info, flags); - ASSERT(space_info); - percpu_counter_add_batch(&space_info->total_bytes_pinned, ref->len, - BTRFS_TOTAL_BYTES_PINNED_BATCH); -} - -static void sub_pinned_bytes(struct btrfs_fs_info *fs_info, - struct btrfs_ref *ref) -{ - struct btrfs_space_info *space_info; - u64 flags = generic_ref_to_space_flags(ref); - - space_info = btrfs_find_space_info(fs_info, flags); - ASSERT(space_info); - percpu_counter_add_batch(&space_info->total_bytes_pinned, -ref->len, - BTRFS_TOTAL_BYTES_PINNED_BATCH); -} - /* simple helper to search for an existing data extent at a given offset */ int btrfs_lookup_data_extent(struct btrfs_fs_info *fs_info, u64 start, u64 len) { @@ -399,12 +365,11 @@ if (type == BTRFS_SHARED_BLOCK_REF_KEY) { ASSERT(eb->fs_info); /* - * Every shared one has parent tree - * block, which must be aligned to - * nodesize. + * Every shared one has parent tree block, + * which must be aligned to sector size. */ if (offset && - IS_ALIGNED(offset, eb->fs_info->nodesize)) + IS_ALIGNED(offset, eb->fs_info->sectorsize)) return type; } } else if (is_data == BTRFS_REF_TYPE_DATA) { @@ -413,12 +378,11 @@ if (type == BTRFS_SHARED_DATA_REF_KEY) { ASSERT(eb->fs_info); /* - * Every shared one has parent tree - * block, which must be aligned to - * nodesize. + * Every shared one has parent tree block, + * which must be aligned to sector size. */ if (offset && - IS_ALIGNED(offset, eb->fs_info->nodesize)) + IS_ALIGNED(offset, eb->fs_info->sectorsize)) return type; } } else { @@ -428,8 +392,9 @@ } btrfs_print_leaf((struct extent_buffer *)eb); - btrfs_err(eb->fs_info, "eb %llu invalid extent inline ref type %d", - eb->start, type); + btrfs_err(eb->fs_info, + "eb %llu iref 0x%lx invalid extent inline ref type %d", + eb->start, (unsigned long)iref, type); WARN_ON(1); return BTRFS_REF_TYPE_INVALID; @@ -1177,7 +1142,22 @@ num_bytes, parent, root_objectid, owner, offset, 1); if (ret == 0) { - BUG_ON(owner < BTRFS_FIRST_FREE_OBJECTID); + /* + * We're adding refs to a tree block we already own, this + * should not happen at all. + */ + if (owner < BTRFS_FIRST_FREE_OBJECTID) { + btrfs_crit(trans->fs_info, +"adding refs to an existing tree ref, bytenr %llu num_bytes %llu root_objectid %llu", + bytenr, num_bytes, root_objectid); + if (IS_ENABLED(CONFIG_BTRFS_DEBUG)) { + WARN_ON(1); + btrfs_crit(trans->fs_info, + "path->slots[0]=%d path->nodes[0]:", path->slots[0]); + btrfs_print_leaf(path->nodes[0]); + } + return -EUCLEAN; + } update_inline_extent_backref(path, iref, refs_to_add, extent_op, NULL); } else if (ret == -ENOENT) { @@ -1371,7 +1351,6 @@ struct btrfs_ref *generic_ref) { struct btrfs_fs_info *fs_info = trans->fs_info; - int old_ref_mod, new_ref_mod; int ret; ASSERT(generic_ref->type != BTRFS_REF_NOT_SET && @@ -1380,23 +1359,21 @@ generic_ref->tree_ref.root == BTRFS_TREE_LOG_OBJECTID); if (generic_ref->type == BTRFS_REF_METADATA) - ret = btrfs_add_delayed_tree_ref(trans, generic_ref, - NULL, &old_ref_mod, &new_ref_mod); + ret = btrfs_add_delayed_tree_ref(trans, generic_ref, NULL); else - ret = btrfs_add_delayed_data_ref(trans, generic_ref, 0, - &old_ref_mod, &new_ref_mod); + ret = btrfs_add_delayed_data_ref(trans, generic_ref, 0); btrfs_ref_tree_mod(fs_info, generic_ref); - if (ret == 0 && old_ref_mod < 0 && new_ref_mod >= 0) - sub_pinned_bytes(fs_info, generic_ref); - return ret; } /* * __btrfs_inc_extent_ref - insert backreference for a given extent * + * The counterpart is in __btrfs_free_extent(), with examples and more details + * how it works. + * * @trans: Handle of transaction * * @node: The delayed ref node used to get the bytenr/length for @@ -1778,34 +1755,28 @@ { int nr_items = 1; /* Dropping this ref head update. */ - if (head->total_ref_mod < 0) { - struct btrfs_space_info *space_info; - u64 flags; - - if (head->is_data) - flags = BTRFS_BLOCK_GROUP_DATA; - else if (head->is_system) - flags = BTRFS_BLOCK_GROUP_SYSTEM; - else - flags = BTRFS_BLOCK_GROUP_METADATA; - space_info = btrfs_find_space_info(fs_info, flags); - ASSERT(space_info); - percpu_counter_add_batch(&space_info->total_bytes_pinned, - -head->num_bytes, - BTRFS_TOTAL_BYTES_PINNED_BATCH); + /* + * We had csum deletions accounted for in our delayed refs rsv, we need + * to drop the csum leaves for this update from our delayed_refs_rsv. + */ + if (head->total_ref_mod < 0 && head->is_data) { + spin_lock(&delayed_refs->lock); + delayed_refs->pending_csums -= head->num_bytes; + spin_unlock(&delayed_refs->lock); + nr_items += btrfs_csum_bytes_to_leaves(fs_info, head->num_bytes); + } - /* - * We had csum deletions accounted for in our delayed refs rsv, - * we need to drop the csum leaves for this update from our - * delayed_refs_rsv. - */ - if (head->is_data) { - spin_lock(&delayed_refs->lock); - delayed_refs->pending_csums -= head->num_bytes; - spin_unlock(&delayed_refs->lock); - nr_items += btrfs_csum_bytes_to_leaves(fs_info, - head->num_bytes); - } + /* + * We were dropping refs, or had a new ref and dropped it, and thus must + * adjust down our total_bytes_pinned, the space may or may not have + * been pinned and so is accounted for properly in the pinned space by + * now. + */ + if (head->total_ref_mod < 0 || + (head->total_ref_mod == 0 && head->must_insert_reserved)) { + u64 flags = btrfs_ref_head_to_space_flags(head); + + btrfs_mod_total_bytes_pinned(fs_info, flags, -head->num_bytes); } btrfs_delayed_refs_rsv_release(fs_info, nr_items); @@ -2305,7 +2276,8 @@ static noinline int check_committed_ref(struct btrfs_root *root, struct btrfs_path *path, - u64 objectid, u64 offset, u64 bytenr) + u64 objectid, u64 offset, u64 bytenr, + bool strict) { struct btrfs_fs_info *fs_info = root->fs_info; struct btrfs_root *extent_root = fs_info->extent_root; @@ -2347,9 +2319,13 @@ btrfs_extent_inline_ref_size(BTRFS_EXTENT_DATA_REF_KEY)) goto out; - /* If extent created before last snapshot => it's definitely shared */ - if (btrfs_extent_generation(leaf, ei) <= - btrfs_root_last_snapshot(&root->root_item)) + /* + * If extent created before last snapshot => it's shared unless the + * snapshot has been deleted. Use the heuristic if strict is false. + */ + if (!strict && + (btrfs_extent_generation(leaf, ei) <= + btrfs_root_last_snapshot(&root->root_item))) goto out; iref = (struct btrfs_extent_inline_ref *)(ei + 1); @@ -2374,7 +2350,7 @@ } int btrfs_cross_ref_exist(struct btrfs_root *root, u64 objectid, u64 offset, - u64 bytenr) + u64 bytenr, bool strict) { struct btrfs_path *path; int ret; @@ -2385,7 +2361,7 @@ do { ret = check_committed_ref(root, path, objectid, - offset, bytenr); + offset, bytenr, strict); if (ret && ret != -ENOENT) goto out; @@ -2569,8 +2545,7 @@ spin_unlock(&cache->lock); spin_unlock(&cache->space_info->lock); - percpu_counter_add_batch(&cache->space_info->total_bytes_pinned, - num_bytes, BTRFS_TOTAL_BYTES_PINNED_BATCH); + __btrfs_mod_total_bytes_pinned(cache->space_info, num_bytes); set_extent_dirty(&trans->transaction->pinned_extents, bytenr, bytenr + num_bytes - 1, GFP_NOFS | __GFP_NOFAIL); return 0; @@ -2707,31 +2682,6 @@ atomic_inc(&bg->reservations); } -void btrfs_prepare_extent_commit(struct btrfs_fs_info *fs_info) -{ - struct btrfs_caching_control *next; - struct btrfs_caching_control *caching_ctl; - struct btrfs_block_group *cache; - - down_write(&fs_info->commit_root_sem); - - list_for_each_entry_safe(caching_ctl, next, - &fs_info->caching_block_groups, list) { - cache = caching_ctl->block_group; - if (btrfs_block_group_done(cache)) { - cache->last_byte_to_unpin = (u64)-1; - list_del_init(&caching_ctl->list); - btrfs_put_caching_control(caching_ctl); - } else { - cache->last_byte_to_unpin = caching_ctl->progress; - } - } - - up_write(&fs_info->commit_root_sem); - - btrfs_update_global_block_rsv(fs_info); -} - /* * Returns the free cluster for the given space info and sets empty_cluster to * what it should be based on the mount options. @@ -2793,10 +2743,10 @@ len = cache->start + cache->length - start; len = min(len, end + 1 - start); - if (start < cache->last_byte_to_unpin) { - len = min(len, cache->last_byte_to_unpin - start); - if (return_free_space) - btrfs_add_free_space(cache, start, len); + if (start < cache->last_byte_to_unpin && return_free_space) { + u64 add_len = min(len, cache->last_byte_to_unpin - start); + + btrfs_add_free_space(cache, start, add_len); } start += len; @@ -2821,8 +2771,7 @@ cache->pinned -= len; btrfs_space_info_update_bytes_pinned(fs_info, space_info, -len); space_info->max_extent_size = 0; - percpu_counter_add_batch(&space_info->total_bytes_pinned, - -len, BTRFS_TOTAL_BYTES_PINNED_BATCH); + __btrfs_mod_total_bytes_pinned(space_info, -len); if (cache->ro) { space_info->bytes_readonly += len; readonly = true; @@ -2930,6 +2879,65 @@ return 0; } +/* + * Drop one or more refs of @node. + * + * 1. Locate the extent refs. + * It's either inline in EXTENT/METADATA_ITEM or in keyed SHARED_* item. + * Locate it, then reduce the refs number or remove the ref line completely. + * + * 2. Update the refs count in EXTENT/METADATA_ITEM + * + * Inline backref case: + * + * in extent tree we have: + * + * item 0 key (13631488 EXTENT_ITEM 1048576) itemoff 16201 itemsize 82 + * refs 2 gen 6 flags DATA + * extent data backref root FS_TREE objectid 258 offset 0 count 1 + * extent data backref root FS_TREE objectid 257 offset 0 count 1 + * + * This function gets called with: + * + * node->bytenr = 13631488 + * node->num_bytes = 1048576 + * root_objectid = FS_TREE + * owner_objectid = 257 + * owner_offset = 0 + * refs_to_drop = 1 + * + * Then we should get some like: + * + * item 0 key (13631488 EXTENT_ITEM 1048576) itemoff 16201 itemsize 82 + * refs 1 gen 6 flags DATA + * extent data backref root FS_TREE objectid 258 offset 0 count 1 + * + * Keyed backref case: + * + * in extent tree we have: + * + * item 0 key (13631488 EXTENT_ITEM 1048576) itemoff 3971 itemsize 24 + * refs 754 gen 6 flags DATA + * [...] + * item 2 key (13631488 EXTENT_DATA_REF ) itemoff 3915 itemsize 28 + * extent data backref root FS_TREE objectid 866 offset 0 count 1 + * + * This function get called with: + * + * node->bytenr = 13631488 + * node->num_bytes = 1048576 + * root_objectid = FS_TREE + * owner_objectid = 866 + * owner_offset = 0 + * refs_to_drop = 1 + * + * Then we should get some like: + * + * item 0 key (13631488 EXTENT_ITEM 1048576) itemoff 3971 itemsize 24 + * refs 753 gen 6 flags DATA + * + * And that (13631488 EXTENT_DATA_REF ) gets removed. + */ static int __btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_delayed_ref_node *node, u64 parent, u64 root_objectid, u64 owner_objectid, @@ -2962,7 +2970,15 @@ path->leave_spinning = 1; is_data = owner_objectid >= BTRFS_FIRST_FREE_OBJECTID; - BUG_ON(!is_data && refs_to_drop != 1); + + if (!is_data && refs_to_drop != 1) { + btrfs_crit(info, +"invalid refs_to_drop, dropping more than 1 refs for tree block %llu refs_to_drop %u", + node->bytenr, refs_to_drop); + ret = -EINVAL; + btrfs_abort_transaction(trans, ret); + goto out; + } if (is_data) skinny_metadata = false; @@ -2971,6 +2987,13 @@ parent, root_objectid, owner_objectid, owner_offset); if (ret == 0) { + /* + * Either the inline backref or the SHARED_DATA_REF/ + * SHARED_BLOCK_REF is found + * + * Here is a quick path to locate EXTENT/METADATA_ITEM. + * It's possible the EXTENT/METADATA_ITEM is near current slot. + */ extent_slot = path->slots[0]; while (extent_slot >= 0) { btrfs_item_key_to_cpu(path->nodes[0], &key, @@ -2987,13 +3010,21 @@ found_extent = 1; break; } + + /* Quick path didn't find the EXTEMT/METADATA_ITEM */ if (path->slots[0] - extent_slot > 5) break; extent_slot--; } if (!found_extent) { - BUG_ON(iref); + if (iref) { + btrfs_crit(info, +"invalid iref, no EXTENT/METADATA_ITEM found but has inline extent ref"); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } + /* Must be SHARED_* item, remove the backref first */ ret = remove_extent_backref(trans, path, NULL, refs_to_drop, is_data, &last_ref); @@ -3004,6 +3035,7 @@ btrfs_release_path(path); path->leave_spinning = 1; + /* Slow path to locate EXTENT/METADATA_ITEM */ key.objectid = bytenr; key.type = BTRFS_EXTENT_ITEM_KEY; key.offset = num_bytes; @@ -3078,19 +3110,26 @@ if (owner_objectid < BTRFS_FIRST_FREE_OBJECTID && key.type == BTRFS_EXTENT_ITEM_KEY) { struct btrfs_tree_block_info *bi; - BUG_ON(item_size < sizeof(*ei) + sizeof(*bi)); + if (item_size < sizeof(*ei) + sizeof(*bi)) { + btrfs_crit(info, +"invalid extent item size for key (%llu, %u, %llu) owner %llu, has %u expect >= %zu", + key.objectid, key.type, key.offset, + owner_objectid, item_size, + sizeof(*ei) + sizeof(*bi)); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } bi = (struct btrfs_tree_block_info *)(ei + 1); WARN_ON(owner_objectid != btrfs_tree_block_level(leaf, bi)); } refs = btrfs_extent_refs(leaf, ei); if (refs < refs_to_drop) { - btrfs_err(info, - "trying to drop %d refs but we only have %Lu for bytenr %Lu", + btrfs_crit(info, + "trying to drop %d refs but we only have %llu for bytenr %llu", refs_to_drop, refs, bytenr); - ret = -EINVAL; - btrfs_abort_transaction(trans, ret); - goto out; + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; } refs -= refs_to_drop; @@ -3102,7 +3141,12 @@ * be updated by remove_extent_backref */ if (iref) { - BUG_ON(!found_extent); + if (!found_extent) { + btrfs_crit(info, +"invalid iref, got inlined extent ref but no EXTENT/METADATA_ITEM found"); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } } else { btrfs_set_extent_refs(leaf, ei, refs); btrfs_mark_buffer_dirty(leaf); @@ -3117,13 +3161,39 @@ } } } else { + /* In this branch refs == 1 */ if (found_extent) { - BUG_ON(is_data && refs_to_drop != - extent_data_ref_count(path, iref)); + if (is_data && refs_to_drop != + extent_data_ref_count(path, iref)) { + btrfs_crit(info, + "invalid refs_to_drop, current refs %u refs_to_drop %u", + extent_data_ref_count(path, iref), + refs_to_drop); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } if (iref) { - BUG_ON(path->slots[0] != extent_slot); + if (path->slots[0] != extent_slot) { + btrfs_crit(info, +"invalid iref, extent item key (%llu %u %llu) doesn't have wanted iref", + key.objectid, key.type, + key.offset); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } } else { - BUG_ON(path->slots[0] != extent_slot + 1); + /* + * No inline ref, we must be at SHARED_* item, + * And it's single ref, it must be: + * | extent_slot ||extent_slot + 1| + * [ EXTENT/METADATA_ITEM ][ SHARED_* ITEM ] + */ + if (path->slots[0] != extent_slot + 1) { + btrfs_crit(info, + "invalid SHARED_* item, previous item is not EXTENT/METADATA_ITEM"); + btrfs_abort_transaction(trans, -EUCLEAN); + goto err_dump; + } path->slots[0] = extent_slot; num_to_del = 2; } @@ -3164,6 +3234,19 @@ out: btrfs_free_path(path); return ret; +err_dump: + /* + * Leaf dump can take up a lot of log buffer, so we only do full leaf + * dump for debug build. + */ + if (IS_ENABLED(CONFIG_BTRFS_DEBUG)) { + btrfs_crit(info, "path->slots[0]=%d extent_slot=%d", + path->slots[0], extent_slot); + btrfs_print_leaf(path->nodes[0]); + } + + btrfs_free_path(path); + return -EUCLEAN; } /* @@ -3228,7 +3311,6 @@ { struct btrfs_fs_info *fs_info = root->fs_info; struct btrfs_ref generic_ref = { 0 }; - int pin = 1; int ret; btrfs_init_generic_ref(&generic_ref, BTRFS_DROP_DELAYED_REF, @@ -3237,13 +3319,9 @@ root->root_key.objectid); if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) { - int old_ref_mod, new_ref_mod; - btrfs_ref_tree_mod(fs_info, &generic_ref); - ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, NULL, - &old_ref_mod, &new_ref_mod); + ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, NULL); BUG_ON(ret); /* -ENOMEM */ - pin = old_ref_mod >= 0 && new_ref_mod < 0; } if (last_ref && btrfs_header_generation(buf) == trans->transid) { @@ -3255,7 +3333,6 @@ goto out; } - pin = 0; cache = btrfs_lookup_block_group(fs_info, buf->start); if (btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN)) { @@ -3272,9 +3349,6 @@ trace_btrfs_reserved_extent_free(fs_info, buf->start, buf->len); } out: - if (pin) - add_pinned_bytes(fs_info, &generic_ref); - if (last_ref) { /* * Deleting the buffer, clear the corrupt flag since it doesn't @@ -3288,7 +3362,6 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_ref *ref) { struct btrfs_fs_info *fs_info = trans->fs_info; - int old_ref_mod, new_ref_mod; int ret; if (btrfs_is_testing(fs_info)) @@ -3304,14 +3377,11 @@ ref->data_ref.ref_root == BTRFS_TREE_LOG_OBJECTID)) { /* unlocks the pinned mutex */ btrfs_pin_extent(trans, ref->bytenr, ref->len, 1); - old_ref_mod = new_ref_mod = 0; ret = 0; } else if (ref->type == BTRFS_REF_METADATA) { - ret = btrfs_add_delayed_tree_ref(trans, ref, NULL, - &old_ref_mod, &new_ref_mod); + ret = btrfs_add_delayed_tree_ref(trans, ref, NULL); } else { - ret = btrfs_add_delayed_data_ref(trans, ref, 0, - &old_ref_mod, &new_ref_mod); + ret = btrfs_add_delayed_data_ref(trans, ref, 0); } if (!((ref->type == BTRFS_REF_METADATA && @@ -3320,9 +3390,6 @@ ref->data_ref.ref_root == BTRFS_TREE_LOG_OBJECTID))) btrfs_ref_tree_mod(fs_info, ref); - if (ret == 0 && old_ref_mod >= 0 && new_ref_mod < 0) - add_pinned_bytes(fs_info, ref); - return ret; } @@ -3913,11 +3980,12 @@ * |- Push harder to find free extents * |- If not found, re-iterate all block groups */ -static noinline int find_free_extent(struct btrfs_fs_info *fs_info, +static noinline int find_free_extent(struct btrfs_root *root, u64 ram_bytes, u64 num_bytes, u64 empty_size, u64 hint_byte_orig, struct btrfs_key *ins, u64 flags, int delalloc) { + struct btrfs_fs_info *fs_info = root->fs_info; int ret = 0; int cache_block_group_error = 0; struct btrfs_block_group *block_group = NULL; @@ -3949,7 +4017,7 @@ ins->objectid = 0; ins->offset = 0; - trace_find_free_extent(fs_info, num_bytes, empty_size, flags); + trace_find_free_extent(root, num_bytes, empty_size, flags); space_info = btrfs_find_space_info(fs_info, flags); if (!space_info) { @@ -4198,7 +4266,7 @@ flags = get_alloc_profile_by_root(root, is_data); again: WARN_ON(num_bytes < fs_info->sectorsize); - ret = find_free_extent(fs_info, ram_bytes, num_bytes, empty_size, + ret = find_free_extent(root, ram_bytes, num_bytes, empty_size, hint_byte, ins, flags, delalloc); if (!ret && !is_data) { btrfs_dec_block_group_reservations(fs_info, ins->objectid); @@ -4439,7 +4507,6 @@ struct btrfs_key *ins) { struct btrfs_ref generic_ref = { 0 }; - int ret; BUG_ON(root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID); @@ -4447,9 +4514,8 @@ ins->objectid, ins->offset, 0); btrfs_init_data_ref(&generic_ref, root->root_key.objectid, owner, offset); btrfs_ref_tree_mod(root->fs_info, &generic_ref); - ret = btrfs_add_delayed_data_ref(trans, &generic_ref, - ram_bytes, NULL, NULL); - return ret; + + return btrfs_add_delayed_data_ref(trans, &generic_ref, ram_bytes); } /* @@ -4521,7 +4587,7 @@ return ERR_PTR(-EUCLEAN); } - btrfs_set_buffer_lockdep_class(root->root_key.objectid, buf, level); + btrfs_set_buffer_lockdep_class(owner, buf, level); btrfs_tree_lock(buf); btrfs_clean_tree_block(buf); clear_bit(EXTENT_BUFFER_STALE, &buf->bflags); @@ -4635,8 +4701,7 @@ generic_ref.real_root = root->root_key.objectid; btrfs_init_tree_ref(&generic_ref, level, root_objectid); btrfs_ref_tree_mod(fs_info, &generic_ref); - ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, - extent_op, NULL, NULL); + ret = btrfs_add_delayed_tree_ref(trans, &generic_ref, extent_op); if (ret) goto out_free_delayed; } @@ -5298,7 +5363,14 @@ goto out; } - trans = btrfs_start_transaction(tree_root, 0); + /* + * Use join to avoid potential EINTR from transaction start. See + * wait_reserve_ticket and the whole reservation callchain. + */ + if (for_reloc) + trans = btrfs_join_transaction(tree_root); + else + trans = btrfs_start_transaction(tree_root, 0); if (IS_ERR(trans)) { err = PTR_ERR(trans); goto out_free; @@ -5430,7 +5502,15 @@ goto out_free; } - trans = btrfs_start_transaction(tree_root, 0); + /* + * Use join to avoid potential EINTR from transaction + * start. See wait_reserve_ticket and the whole + * reservation callchain. + */ + if (for_reloc) + trans = btrfs_join_transaction(tree_root); + else + trans = btrfs_start_transaction(tree_root, 0); if (IS_ERR(trans)) { err = PTR_ERR(trans); goto out_free; @@ -5466,6 +5546,14 @@ } } + /* + * This subvolume is going to be completely dropped, and won't be + * recorded as dirty roots, thus pertrans meta rsv will not be freed at + * commit transaction time. So free it here manually. + */ + btrfs_qgroup_convert_reserved_meta(root, INT_MAX); + btrfs_qgroup_free_meta_all_pertrans(root); + if (test_bit(BTRFS_ROOT_IN_RADIX, &root->state)) btrfs_add_dropped_root(trans, root); else @@ -5653,6 +5741,19 @@ &start, &end, CHUNK_TRIMMED | CHUNK_ALLOCATED); + /* Check if there are any CHUNK_* bits left */ + if (start > device->total_bytes) { + WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG)); + btrfs_warn_in_rcu(fs_info, +"ignoring attempt to trim beyond device size: offset %llu length %llu device %s device size %llu", + start, end - start + 1, + rcu_str_deref(device->name), + device->total_bytes); + mutex_unlock(&fs_info->chunk_mutex); + ret = 0; + break; + } + /* Ensure we skip the reserved area in the first 1M */ start = max_t(u64, start, SZ_1M); --- linux-5.8.0.orig/fs/btrfs/extent_io.c +++ linux-5.8.0/fs/btrfs/extent_io.c @@ -676,9 +676,7 @@ static void extent_io_tree_panic(struct extent_io_tree *tree, int err) { - struct inode *inode = tree->private_data; - - btrfs_panic(btrfs_sb(inode->i_sb), err, + btrfs_panic(tree->fs_info, err, "locking error: extent tree was modified by another thread while locked"); } @@ -4127,7 +4125,7 @@ if (!test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) { ret = flush_write_bio(&epd); } else { - ret = -EUCLEAN; + ret = -EROFS; end_write_bio(&epd, ret); } return ret; @@ -4502,20 +4500,32 @@ free_extent_map(em); break; } - if (!test_range_bit(tree, em->start, - extent_map_end(em) - 1, - EXTENT_LOCKED, 0, NULL)) { + if (test_range_bit(tree, em->start, + extent_map_end(em) - 1, + EXTENT_LOCKED, 0, NULL)) + goto next; + /* + * If it's not in the list of modified extents, used + * by a fast fsync, we can remove it. If it's being + * logged we can safely remove it since fsync took an + * extra reference on the em. + */ + if (list_empty(&em->list) || + test_bit(EXTENT_FLAG_LOGGING, &em->flags)) { set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &btrfs_inode->runtime_flags); remove_extent_mapping(map, em); /* once for the rb tree */ free_extent_map(em); } +next: start = extent_map_end(em); write_unlock(&map->lock); /* once for us */ free_extent_map(em); + + cond_resched(); /* Allow large-extent preemption. */ } } return try_release_extent_state(tree, page, mask); @@ -5595,6 +5605,36 @@ return ret; } +static bool report_eb_range(const struct extent_buffer *eb, unsigned long start, + unsigned long len) +{ + btrfs_warn(eb->fs_info, + "access to eb bytenr %llu len %lu out of range start %lu len %lu", + eb->start, eb->len, start, len); + WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG)); + + return true; +} + +/* + * Check if the [start, start + len) range is valid before reading/writing + * the eb. + * NOTE: @start and @len are offset inside the eb, not logical address. + * + * Caller should not touch the dst/src memory if this function returns error. + */ +static inline int check_eb_range(const struct extent_buffer *eb, + unsigned long start, unsigned long len) +{ + unsigned long offset; + + /* start, start + len should not go beyond eb->len nor overflow */ + if (unlikely(check_add_overflow(start, len, &offset) || offset > eb->len)) + return report_eb_range(eb, start, len); + + return false; +} + void read_extent_buffer(const struct extent_buffer *eb, void *dstv, unsigned long start, unsigned long len) { @@ -5605,12 +5645,8 @@ char *dst = (char *)dstv; unsigned long i = start >> PAGE_SHIFT; - if (start + len > eb->len) { - WARN(1, KERN_ERR "btrfs bad mapping eb start %llu len %lu, wanted %lu %lu\n", - eb->start, eb->len, start, len); - memset(dst, 0, len); + if (check_eb_range(eb, start, len)) return; - } offset = offset_in_page(start); @@ -5628,9 +5664,9 @@ } } -int read_extent_buffer_to_user(const struct extent_buffer *eb, - void __user *dstv, - unsigned long start, unsigned long len) +int read_extent_buffer_to_user_nofault(const struct extent_buffer *eb, + void __user *dstv, + unsigned long start, unsigned long len) { size_t cur; size_t offset; @@ -5650,7 +5686,7 @@ cur = min(len, (PAGE_SIZE - offset)); kaddr = page_address(page); - if (copy_to_user(dst, kaddr + offset, cur)) { + if (copy_to_user_nofault(dst, kaddr + offset, cur)) { ret = -EFAULT; break; } @@ -5675,8 +5711,8 @@ unsigned long i = start >> PAGE_SHIFT; int ret = 0; - WARN_ON(start > eb->len); - WARN_ON(start + len > eb->start + eb->len); + if (check_eb_range(eb, start, len)) + return -EINVAL; offset = offset_in_page(start); @@ -5729,8 +5765,8 @@ char *src = (char *)srcv; unsigned long i = start >> PAGE_SHIFT; - WARN_ON(start > eb->len); - WARN_ON(start + len > eb->start + eb->len); + if (check_eb_range(eb, start, len)) + return; offset = offset_in_page(start); @@ -5758,8 +5794,8 @@ char *kaddr; unsigned long i = start >> PAGE_SHIFT; - WARN_ON(start > eb->len); - WARN_ON(start + len > eb->start + eb->len); + if (check_eb_range(eb, start, len)) + return; offset = offset_in_page(start); @@ -5803,6 +5839,10 @@ char *kaddr; unsigned long i = dst_offset >> PAGE_SHIFT; + if (check_eb_range(dst, dst_offset, len) || + check_eb_range(src, src_offset, len)) + return; + WARN_ON(src->len != dst_len); offset = offset_in_page(dst_offset); @@ -5992,25 +6032,15 @@ unsigned long dst_offset, unsigned long src_offset, unsigned long len) { - struct btrfs_fs_info *fs_info = dst->fs_info; size_t cur; size_t dst_off_in_page; size_t src_off_in_page; unsigned long dst_i; unsigned long src_i; - if (src_offset + len > dst->len) { - btrfs_err(fs_info, - "memmove bogus src_offset %lu move len %lu dst len %lu", - src_offset, len, dst->len); - BUG(); - } - if (dst_offset + len > dst->len) { - btrfs_err(fs_info, - "memmove bogus dst_offset %lu move len %lu dst len %lu", - dst_offset, len, dst->len); - BUG(); - } + if (check_eb_range(dst, dst_offset, len) || + check_eb_range(dst, src_offset, len)) + return; while (len > 0) { dst_off_in_page = offset_in_page(dst_offset); @@ -6037,7 +6067,6 @@ unsigned long dst_offset, unsigned long src_offset, unsigned long len) { - struct btrfs_fs_info *fs_info = dst->fs_info; size_t cur; size_t dst_off_in_page; size_t src_off_in_page; @@ -6046,18 +6075,9 @@ unsigned long dst_i; unsigned long src_i; - if (src_offset + len > dst->len) { - btrfs_err(fs_info, - "memmove bogus src_offset %lu move len %lu len %lu", - src_offset, len, dst->len); - BUG(); - } - if (dst_offset + len > dst->len) { - btrfs_err(fs_info, - "memmove bogus dst_offset %lu move len %lu len %lu", - dst_offset, len, dst->len); - BUG(); - } + if (check_eb_range(dst, dst_offset, len) || + check_eb_range(dst, src_offset, len)) + return; if (dst_offset < src_offset) { memcpy_extent_buffer(dst, dst_offset, src_offset, len); return; --- linux-5.8.0.orig/fs/btrfs/extent_io.h +++ linux-5.8.0/fs/btrfs/extent_io.h @@ -241,9 +241,9 @@ void read_extent_buffer(const struct extent_buffer *eb, void *dst, unsigned long start, unsigned long len); -int read_extent_buffer_to_user(const struct extent_buffer *eb, - void __user *dst, unsigned long start, - unsigned long len); +int read_extent_buffer_to_user_nofault(const struct extent_buffer *eb, + void __user *dst, unsigned long start, + unsigned long len); void write_extent_buffer_fsid(const struct extent_buffer *eb, const void *src); void write_extent_buffer_chunk_tree_uuid(const struct extent_buffer *eb, const void *src); --- linux-5.8.0.orig/fs/btrfs/file.c +++ linux-5.8.0/fs/btrfs/file.c @@ -1532,8 +1532,8 @@ return ret; } -static noinline int check_can_nocow(struct btrfs_inode *inode, loff_t pos, - size_t *write_bytes, bool nowait) +int btrfs_check_can_nocow(struct btrfs_inode *inode, loff_t pos, + size_t *write_bytes, bool nowait) { struct btrfs_fs_info *fs_info = inode->root->fs_info; struct btrfs_root *root = inode->root; @@ -1568,7 +1568,7 @@ } ret = can_nocow_extent(&inode->vfs_inode, lockstart, &num_bytes, - NULL, NULL, NULL); + NULL, NULL, NULL, false); if (ret <= 0) { ret = 0; if (!nowait) @@ -1648,8 +1648,8 @@ if (ret < 0) { if ((BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | BTRFS_INODE_PREALLOC)) && - check_can_nocow(BTRFS_I(inode), pos, - &write_bytes, false) > 0) { + btrfs_check_can_nocow(BTRFS_I(inode), pos, + &write_bytes, false) > 0) { /* * For nodata cow case, no need to reserve * data space. @@ -1928,8 +1928,8 @@ */ if (!(BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | BTRFS_INODE_PREALLOC)) || - check_can_nocow(BTRFS_I(inode), pos, &nocow_bytes, - true) <= 0) { + btrfs_check_can_nocow(BTRFS_I(inode), pos, &nocow_bytes, + true) <= 0) { inode_unlock(inode); return -EAGAIN; } @@ -3176,14 +3176,17 @@ if (ret < 0) goto out; space_reserved = true; - ret = btrfs_qgroup_reserve_data(inode, &data_reserved, - alloc_start, bytes_to_reserve); - if (ret) - goto out; ret = btrfs_punch_hole_lock_range(inode, lockstart, lockend, &cached_state); if (ret) goto out; + ret = btrfs_qgroup_reserve_data(inode, &data_reserved, + alloc_start, bytes_to_reserve); + if (ret) { + unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, + lockend, &cached_state); + goto out; + } ret = btrfs_prealloc_file_range(inode, mode, alloc_start, alloc_end - alloc_start, i_blocksize(inode), --- linux-5.8.0.orig/fs/btrfs/free-space-cache.c +++ linux-5.8.0/fs/btrfs/free-space-cache.c @@ -747,8 +747,10 @@ while (num_entries) { e = kmem_cache_zalloc(btrfs_free_space_cachep, GFP_NOFS); - if (!e) + if (!e) { + ret = -ENOMEM; goto free_cache; + } ret = io_ctl_read_entry(&io_ctl, e, &type); if (ret) { @@ -767,6 +769,7 @@ e->trim_state = BTRFS_TRIM_STATE_TRIMMED; if (!e->bytes) { + ret = -1; kmem_cache_free(btrfs_free_space_cachep, e); goto free_cache; } @@ -787,6 +790,7 @@ e->bitmap = kmem_cache_zalloc( btrfs_free_space_bitmap_cachep, GFP_NOFS); if (!e->bitmap) { + ret = -ENOMEM; kmem_cache_free( btrfs_free_space_cachep, e); goto free_cache; @@ -1186,7 +1190,6 @@ ret = update_cache_item(trans, root, inode, path, offset, io_ctl->entries, io_ctl->bitmaps); out: - io_ctl_free(io_ctl); if (ret) { invalidate_inode_pages2(inode->i_mapping); BTRFS_I(inode)->generation = 0; @@ -1346,6 +1349,7 @@ * them out later */ io_ctl_drop_pages(io_ctl); + io_ctl_free(io_ctl); unlock_extent_cached(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, &cached_state); @@ -2281,7 +2285,7 @@ static bool try_merge_free_space(struct btrfs_free_space_ctl *ctl, struct btrfs_free_space *info, bool update_stat) { - struct btrfs_free_space *left_info; + struct btrfs_free_space *left_info = NULL; struct btrfs_free_space *right_info; bool merged = false; u64 offset = info->offset; @@ -2297,7 +2301,7 @@ if (right_info && rb_prev(&right_info->offset_index)) left_info = rb_entry(rb_prev(&right_info->offset_index), struct btrfs_free_space, offset_index); - else + else if (!right_info) left_info = tree_search_offset(ctl, offset - 1, 0, 0); /* See try_merge_free_space() comment. */ @@ -2713,8 +2717,10 @@ struct rb_node *node; spin_lock(&cluster->lock); - if (cluster->block_group != block_group) - goto out; + if (cluster->block_group != block_group) { + spin_unlock(&cluster->lock); + return 0; + } cluster->block_group = NULL; cluster->window_start = 0; @@ -2752,8 +2758,6 @@ entry->offset, &entry->offset_index, bitmap); } cluster->root = RB_ROOT; - -out: spin_unlock(&cluster->lock); btrfs_put_block_group(block_group); return 0; @@ -3036,8 +3040,6 @@ entry->bytes -= bytes; } - if (entry->bytes == 0) - rb_erase(&entry->offset_index, &cluster->root); break; } out: @@ -3054,7 +3056,10 @@ ctl->free_space -= bytes; if (!entry->bitmap && !btrfs_free_space_trimmed(entry)) ctl->discardable_bytes[BTRFS_STAT_CURR] -= bytes; + + spin_lock(&cluster->lock); if (entry->bytes == 0) { + rb_erase(&entry->offset_index, &cluster->root); ctl->free_extents--; if (entry->bitmap) { kmem_cache_free(btrfs_free_space_bitmap_cachep, @@ -3067,6 +3072,7 @@ kmem_cache_free(btrfs_free_space_cachep, entry); } + spin_unlock(&cluster->lock); spin_unlock(&ctl->tree_lock); return ret; --- linux-5.8.0.orig/fs/btrfs/free-space-tree.c +++ linux-5.8.0/fs/btrfs/free-space-tree.c @@ -22,6 +22,10 @@ size_t bitmap_size; u64 num_bitmaps, total_bitmap_size; + if (WARN_ON(cache->length == 0)) + btrfs_warn(cache->fs_info, "block group %llu length is zero", + cache->start); + /* * We convert to bitmaps when the disk space required for using extents * exceeds that required for using bitmaps. @@ -1148,6 +1152,7 @@ return PTR_ERR(trans); set_bit(BTRFS_FS_CREATING_FREE_SPACE_TREE, &fs_info->flags); + set_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags); free_space_root = btrfs_create_tree(trans, BTRFS_FREE_SPACE_TREE_OBJECTID); if (IS_ERR(free_space_root)) { @@ -1169,11 +1174,18 @@ btrfs_set_fs_compat_ro(fs_info, FREE_SPACE_TREE); btrfs_set_fs_compat_ro(fs_info, FREE_SPACE_TREE_VALID); clear_bit(BTRFS_FS_CREATING_FREE_SPACE_TREE, &fs_info->flags); + ret = btrfs_commit_transaction(trans); - return btrfs_commit_transaction(trans); + /* + * Now that we've committed the transaction any reading of our commit + * root will be safe, so we can cache from the free space tree now. + */ + clear_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags); + return ret; abort: clear_bit(BTRFS_FS_CREATING_FREE_SPACE_TREE, &fs_info->flags); + clear_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags); btrfs_abort_transaction(trans, ret); btrfs_end_transaction(trans); return ret; --- linux-5.8.0.orig/fs/btrfs/inode.c +++ linux-5.8.0/fs/btrfs/inode.c @@ -650,12 +650,18 @@ page_error_op | PAGE_END_WRITEBACK); - for (i = 0; i < nr_pages; i++) { - WARN_ON(pages[i]->mapping); - put_page(pages[i]); + /* + * Ensure we only free the compressed pages if we have + * them allocated, as we can still reach here with + * inode_need_compress() == false. + */ + if (pages) { + for (i = 0; i < nr_pages; i++) { + WARN_ON(pages[i]->mapping); + put_page(pages[i]); + } + kfree(pages); } - kfree(pages); - return 0; } } @@ -1605,7 +1611,7 @@ goto out_check; ret = btrfs_cross_ref_exist(root, ino, found_key.offset - - extent_offset, disk_bytenr); + extent_offset, disk_bytenr, false); if (ret) { /* * ret could be -EIO if the above fails to read @@ -4041,6 +4047,8 @@ } } + free_anon_bdev(dest->anon_dev); + dest->anon_dev = 0; out_end_trans: trans->block_rsv = NULL; trans->bytes_reserved = 0; @@ -4049,7 +4057,7 @@ err = ret; inode->i_flags |= S_DEAD; out_release: - btrfs_subvolume_release_metadata(fs_info, &block_rsv); + btrfs_subvolume_release_metadata(root, &block_rsv); out_up_write: up_write(&fs_info->subvol_sem); if (err) { @@ -4511,11 +4519,13 @@ struct extent_state *cached_state = NULL; struct extent_changeset *data_reserved = NULL; char *kaddr; + bool only_release_metadata = false; u32 blocksize = fs_info->sectorsize; pgoff_t index = from >> PAGE_SHIFT; unsigned offset = from & (blocksize - 1); struct page *page; gfp_t mask = btrfs_alloc_write_mask(mapping); + size_t write_bytes = blocksize; int ret = 0; u64 block_start; u64 block_end; @@ -4527,11 +4537,27 @@ block_start = round_down(from, blocksize); block_end = block_start + blocksize - 1; - ret = btrfs_delalloc_reserve_space(inode, &data_reserved, - block_start, blocksize); - if (ret) - goto out; + ret = btrfs_check_data_free_space(inode, &data_reserved, block_start, + blocksize); + if (ret < 0) { + if ((BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | + BTRFS_INODE_PREALLOC)) && + btrfs_check_can_nocow(BTRFS_I(inode), block_start, + &write_bytes, false) > 0) { + /* For nocow case, no need to reserve data space */ + only_release_metadata = true; + } else { + goto out; + } + } + ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), blocksize); + if (ret < 0) { + if (!only_release_metadata) + btrfs_free_reserved_data_space(inode, data_reserved, + block_start, blocksize); + goto out; + } again: page = find_or_create_page(mapping, index, mask); if (!page) { @@ -4600,14 +4626,26 @@ set_page_dirty(page); unlock_extent_cached(io_tree, block_start, block_end, &cached_state); + if (only_release_metadata) + set_extent_bit(&BTRFS_I(inode)->io_tree, block_start, + block_end, EXTENT_NORESERVE, NULL, NULL, + GFP_NOFS); + out_unlock: - if (ret) - btrfs_delalloc_release_space(inode, data_reserved, block_start, - blocksize, true); + if (ret) { + if (only_release_metadata) + btrfs_delalloc_release_metadata(BTRFS_I(inode), + blocksize, true); + else + btrfs_delalloc_release_space(inode, data_reserved, + block_start, blocksize, true); + } btrfs_delalloc_release_extents(BTRFS_I(inode), blocksize); unlock_page(page); put_page(page); out: + if (only_release_metadata) + btrfs_drew_write_unlock(&BTRFS_I(inode)->root->snapshot_lock); extent_changeset_free(data_reserved); return ret; } @@ -6595,7 +6633,7 @@ extent_type == BTRFS_FILE_EXTENT_PREALLOC) { /* Only regular file could have regular/prealloc extent */ if (!S_ISREG(inode->vfs_inode.i_mode)) { - ret = -EUCLEAN; + err = -EUCLEAN; btrfs_crit(fs_info, "regular/prealloc extent found for non-regular inode %llu", btrfs_ino(inode)); @@ -6919,7 +6957,7 @@ */ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len, u64 *orig_start, u64 *orig_block_len, - u64 *ram_bytes) + u64 *ram_bytes, bool strict) { struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_path *path; @@ -6997,8 +7035,9 @@ * Do the same check as in btrfs_cross_ref_exist but without the * unnecessary search. */ - if (btrfs_file_extent_generation(leaf, fi) <= - btrfs_root_last_snapshot(&root->root_item)) + if (!strict && + (btrfs_file_extent_generation(leaf, fi) <= + btrfs_root_last_snapshot(&root->root_item))) goto out; backref_offset = btrfs_file_extent_offset(leaf, fi); @@ -7034,7 +7073,8 @@ */ ret = btrfs_cross_ref_exist(root, btrfs_ino(BTRFS_I(inode)), - key.offset - backref_offset, disk_bytenr); + key.offset - backref_offset, disk_bytenr, + strict); if (ret) { ret = 0; goto out; @@ -7255,7 +7295,7 @@ block_start = em->block_start + (start - em->start); if (can_nocow_extent(inode, start, &len, &orig_start, - &orig_block_len, &ram_bytes) == 1 && + &orig_block_len, &ram_bytes, false) == 1 && btrfs_inc_nocow_writers(fs_info, block_start)) { struct extent_map *em2; @@ -8070,8 +8110,9 @@ if (!inode_evicting) lock_extent_bits(tree, page_start, page_end, &cached_state); -again: + start = page_start; +again: ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), start, page_end - start + 1); if (ordered) { @@ -8602,7 +8643,7 @@ btrfs_put_ordered_extent(ordered); } } - btrfs_qgroup_check_reserved_leak(inode); + btrfs_qgroup_check_reserved_leak(BTRFS_I(inode)); inode_tree_del(inode); btrfs_drop_extent_cache(BTRFS_I(inode), 0, (u64)-1, 0); btrfs_inode_clear_file_extent_range(BTRFS_I(inode), 0, (u64)-1); @@ -8673,7 +8714,7 @@ btrfs_free_space_bitmap_cachep = kmem_cache_create("btrfs_free_space_bitmap", PAGE_SIZE, PAGE_SIZE, - SLAB_RED_ZONE, NULL); + SLAB_MEM_SPREAD, NULL); if (!btrfs_free_space_bitmap_cachep) goto fail; @@ -9863,6 +9904,7 @@ sp->ptr = ptr; sp->inode = inode; sp->is_block_group = is_block_group; + sp->bg_extent_count = 1; spin_lock(&fs_info->swapfile_pins_lock); p = &fs_info->swapfile_pins.rb_node; @@ -9876,6 +9918,8 @@ (sp->ptr == entry->ptr && sp->inode > entry->inode)) { p = &(*p)->rb_right; } else { + if (is_block_group) + entry->bg_extent_count++; spin_unlock(&fs_info->swapfile_pins_lock); kfree(sp); return 1; @@ -9901,8 +9945,11 @@ sp = rb_entry(node, struct btrfs_swapfile_pin, node); if (sp->inode == inode) { rb_erase(&sp->node, &fs_info->swapfile_pins); - if (sp->is_block_group) + if (sp->is_block_group) { + btrfs_dec_block_group_swap_extents(sp->ptr, + sp->bg_extent_count); btrfs_put_block_group(sp->ptr); + } kfree(sp); } node = next; @@ -10065,7 +10112,7 @@ free_extent_map(em); em = NULL; - ret = can_nocow_extent(inode, start, &len, NULL, NULL, NULL); + ret = can_nocow_extent(inode, start, &len, NULL, NULL, NULL, true); if (ret < 0) { goto out; } else if (ret) { @@ -10116,6 +10163,17 @@ ret = -EINVAL; goto out; } + + if (!btrfs_inc_block_group_swap_extents(bg)) { + btrfs_warn(fs_info, + "block group for swapfile at %llu is read-only%s", + bg->start, + atomic_read(&fs_info->scrubs_running) ? + " (scrub running)" : ""); + btrfs_put_block_group(bg); + ret = -EINVAL; + goto out; + } ret = btrfs_add_swapfile_pin(inode, bg, true); if (ret) { --- linux-5.8.0.orig/fs/btrfs/ioctl.c +++ linux-5.8.0/fs/btrfs/ioctl.c @@ -164,8 +164,11 @@ return 0; } -/* Check if @flags are a supported and valid set of FS_*_FL flags */ -static int check_fsflags(unsigned int flags) +/* + * Check if @flags are a supported and valid set of FS_*_FL flags and that + * the old and new flags are not conflicting + */ +static int check_fsflags(unsigned int old_flags, unsigned int flags) { if (flags & ~(FS_IMMUTABLE_FL | FS_APPEND_FL | \ FS_NOATIME_FL | FS_NODUMP_FL | \ @@ -174,9 +177,19 @@ FS_NOCOW_FL)) return -EOPNOTSUPP; + /* COMPR and NOCOMP on new/old are valid */ if ((flags & FS_NOCOMP_FL) && (flags & FS_COMPR_FL)) return -EINVAL; + if ((flags & FS_COMPR_FL) && (flags & FS_NOCOW_FL)) + return -EINVAL; + + /* NOCOW and compression options are mutually exclusive */ + if ((old_flags & FS_NOCOW_FL) && (flags & (FS_COMPR_FL | FS_NOCOMP_FL))) + return -EINVAL; + if ((flags & FS_NOCOW_FL) && (old_flags & (FS_COMPR_FL | FS_NOCOMP_FL))) + return -EINVAL; + return 0; } @@ -190,7 +203,7 @@ unsigned int fsflags, old_fsflags; int ret; const char *comp = NULL; - u32 binode_flags = binode->flags; + u32 binode_flags; if (!inode_owner_or_capable(inode)) return -EPERM; @@ -201,22 +214,23 @@ if (copy_from_user(&fsflags, arg, sizeof(fsflags))) return -EFAULT; - ret = check_fsflags(fsflags); - if (ret) - return ret; - ret = mnt_want_write_file(file); if (ret) return ret; inode_lock(inode); - fsflags = btrfs_mask_fsflags_for_type(inode, fsflags); old_fsflags = btrfs_inode_flags_to_fsflags(binode->flags); + ret = vfs_ioc_setflags_prepare(inode, old_fsflags, fsflags); if (ret) goto out_unlock; + ret = check_fsflags(old_fsflags, fsflags); + if (ret) + goto out_unlock; + + binode_flags = binode->flags; if (fsflags & FS_SYNC_FL) binode_flags |= BTRFS_INODE_SYNC; else @@ -566,6 +580,7 @@ struct inode *inode; int ret; int err; + dev_t anon_dev = 0; u64 objectid; u64 new_dirid = BTRFS_FIRST_FREE_OBJECTID; u64 index = 0; @@ -578,6 +593,10 @@ if (ret) goto fail_free; + ret = get_anon_bdev(&anon_dev); + if (ret < 0) + goto fail_free; + /* * Don't create subvolume whose level is not zero. Or qgroup will be * screwed up since it assumes subvolume qgroup's level to be 0. @@ -599,7 +618,7 @@ trans = btrfs_start_transaction(root, 0); if (IS_ERR(trans)) { ret = PTR_ERR(trans); - btrfs_subvolume_release_metadata(fs_info, &block_rsv); + btrfs_subvolume_release_metadata(root, &block_rsv); goto fail_free; } trans->block_rsv = &block_rsv; @@ -660,12 +679,15 @@ goto fail; key.offset = (u64)-1; - new_root = btrfs_get_fs_root(fs_info, objectid, true); + new_root = btrfs_get_new_fs_root(fs_info, objectid, anon_dev); if (IS_ERR(new_root)) { + free_anon_bdev(anon_dev); ret = PTR_ERR(new_root); btrfs_abort_transaction(trans, ret); goto fail; } + /* Freeing will be done in btrfs_put_root() of new_root */ + anon_dev = 0; btrfs_record_root_in_trans(trans, new_root); @@ -720,7 +742,7 @@ kfree(root_item); trans->block_rsv = NULL; trans->bytes_reserved = 0; - btrfs_subvolume_release_metadata(fs_info, &block_rsv); + btrfs_subvolume_release_metadata(root, &block_rsv); err = btrfs_commit_transaction(trans); if (err && !ret) @@ -735,6 +757,8 @@ return ret; fail_free: + if (anon_dev) + free_anon_bdev(anon_dev); kfree(root_item); return ret; } @@ -762,6 +786,9 @@ if (!pending_snapshot) return -ENOMEM; + ret = get_anon_bdev(&pending_snapshot->anon_dev); + if (ret < 0) + goto free_pending; pending_snapshot->root_item = kzalloc(sizeof(struct btrfs_root_item), GFP_KERNEL); pending_snapshot->path = btrfs_alloc_path(); @@ -823,10 +850,16 @@ d_instantiate(dentry, inode); ret = 0; + pending_snapshot->anon_dev = 0; fail: + /* Prevent double freeing of anon_dev */ + if (ret && pending_snapshot->snap) + pending_snapshot->snap->anon_dev = 0; btrfs_put_root(pending_snapshot->snap); - btrfs_subvolume_release_metadata(fs_info, &pending_snapshot->block_rsv); + btrfs_subvolume_release_metadata(root, &pending_snapshot->block_rsv); free_pending: + if (pending_snapshot->anon_dev) + free_anon_bdev(pending_snapshot->anon_dev); kfree(pending_snapshot->root_item); btrfs_free_path(pending_snapshot->path); kfree(pending_snapshot); @@ -1228,6 +1261,8 @@ u64 page_start; u64 page_end; u64 page_cnt; + u64 start = (u64)start_index << PAGE_SHIFT; + u64 search_start; int ret; int i; int i_done; @@ -1244,8 +1279,7 @@ page_cnt = min_t(u64, (u64)num_pages, (u64)file_end - start_index + 1); ret = btrfs_delalloc_reserve_space(inode, &data_reserved, - start_index << PAGE_SHIFT, - page_cnt << PAGE_SHIFT); + start, page_cnt << PAGE_SHIFT); if (ret) return ret; i_done = 0; @@ -1325,6 +1359,40 @@ lock_extent_bits(&BTRFS_I(inode)->io_tree, page_start, page_end - 1, &cached_state); + + /* + * When defragmenting we skip ranges that have holes or inline extents, + * (check should_defrag_range()), to avoid unnecessary IO and wasting + * space. At btrfs_defrag_file(), we check if a range should be defragged + * before locking the inode and then, if it should, we trigger a sync + * page cache readahead - we lock the inode only after that to avoid + * blocking for too long other tasks that possibly want to operate on + * other file ranges. But before we were able to get the inode lock, + * some other task may have punched a hole in the range, or we may have + * now an inline extent, in which case we should not defrag. So check + * for that here, where we have the inode and the range locked, and bail + * out if that happened. + */ + search_start = page_start; + while (search_start < page_end) { + struct extent_map *em; + + em = btrfs_get_extent(BTRFS_I(inode), NULL, 0, search_start, + page_end - search_start); + if (IS_ERR(em)) { + ret = PTR_ERR(em); + goto out_unlock_range; + } + if (em->block_start >= EXTENT_MAP_LAST_BYTE) { + free_extent_map(em); + /* Ok, 0 means we did not defrag anything */ + ret = 0; + goto out_unlock_range; + } + search_start = extent_map_end(em); + free_extent_map(em); + } + clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start, page_end - 1, EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG, 0, 0, &cached_state); @@ -1334,8 +1402,7 @@ btrfs_mod_outstanding_extents(BTRFS_I(inode), 1); spin_unlock(&BTRFS_I(inode)->lock); btrfs_delalloc_release_space(inode, data_reserved, - start_index << PAGE_SHIFT, - (page_cnt - i_done) << PAGE_SHIFT, true); + start, (page_cnt - i_done) << PAGE_SHIFT, true); } @@ -1356,14 +1423,17 @@ btrfs_delalloc_release_extents(BTRFS_I(inode), page_cnt << PAGE_SHIFT); extent_changeset_free(data_reserved); return i_done; + +out_unlock_range: + unlock_extent_cached(&BTRFS_I(inode)->io_tree, + page_start, page_end - 1, &cached_state); out: for (i = 0; i < i_done; i++) { unlock_page(pages[i]); put_page(pages[i]); } btrfs_delalloc_release_space(inode, data_reserved, - start_index << PAGE_SHIFT, - page_cnt << PAGE_SHIFT, true); + start, page_cnt << PAGE_SHIFT, true); btrfs_delalloc_release_extents(BTRFS_I(inode), page_cnt << PAGE_SHIFT); extent_changeset_free(data_reserved); return ret; @@ -1831,7 +1901,10 @@ if (vol_args->flags & BTRFS_SUBVOL_RDONLY) readonly = true; if (vol_args->flags & BTRFS_SUBVOL_QGROUP_INHERIT) { - if (vol_args->size > PAGE_SIZE) { + u64 nums; + + if (vol_args->size < sizeof(*inherit) || + vol_args->size > PAGE_SIZE) { ret = -EINVAL; goto free_args; } @@ -1840,6 +1913,20 @@ ret = PTR_ERR(inherit); goto free_args; } + + if (inherit->num_qgroups > PAGE_SIZE || + inherit->num_ref_copies > PAGE_SIZE || + inherit->num_excl_copies > PAGE_SIZE) { + ret = -EINVAL; + goto free_inherit; + } + + nums = inherit->num_qgroups + 2 * inherit->num_ref_copies + + 2 * inherit->num_excl_copies; + if (vol_args->size != struct_size(inherit, qgroups, nums)) { + ret = -EINVAL; + goto free_inherit; + } } ret = __btrfs_ioctl_snap_create(file, vol_args->name, vol_args->fd, @@ -2053,9 +2140,14 @@ sh.len = item_len; sh.transid = found_transid; - /* copy search result header */ - if (copy_to_user(ubuf + *sk_offset, &sh, sizeof(sh))) { - ret = -EFAULT; + /* + * Copy search result header. If we fault then loop again so we + * can fault in the pages and -EFAULT there if there's a + * problem. Otherwise we'll fault and then copy the buffer in + * properly this next time through + */ + if (copy_to_user_nofault(ubuf + *sk_offset, &sh, sizeof(sh))) { + ret = 0; goto out; } @@ -2063,10 +2155,14 @@ if (item_len) { char __user *up = ubuf + *sk_offset; - /* copy the item */ - if (read_extent_buffer_to_user(leaf, up, - item_off, item_len)) { - ret = -EFAULT; + /* + * Copy the item, same behavior as above, but reset the + * * sk_offset so we copy the full thing again. + */ + if (read_extent_buffer_to_user_nofault(leaf, up, + item_off, item_len)) { + ret = 0; + *sk_offset -= sizeof(sh); goto out; } @@ -2151,6 +2247,11 @@ key.offset = sk->min_offset; while (1) { + ret = fault_in_pages_writeable(ubuf + sk_offset, + *buf_size - sk_offset); + if (ret) + break; + ret = btrfs_search_forward(root, &key, path, sk->min_transid); if (ret != 0) { if (ret > 0) @@ -3198,11 +3299,15 @@ struct btrfs_ioctl_fs_info_args *fi_args; struct btrfs_device *device; struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; + u64 flags_in; int ret = 0; - fi_args = kzalloc(sizeof(*fi_args), GFP_KERNEL); - if (!fi_args) - return -ENOMEM; + fi_args = memdup_user(arg, sizeof(*fi_args)); + if (IS_ERR(fi_args)) + return PTR_ERR(fi_args); + + flags_in = fi_args->flags; + memset(fi_args, 0, sizeof(*fi_args)); rcu_read_lock(); fi_args->num_devices = fs_devices->num_devices; @@ -3218,6 +3323,12 @@ fi_args->sectorsize = fs_info->sectorsize; fi_args->clone_alignment = fs_info->sectorsize; + if (flags_in & BTRFS_FS_INFO_FLAG_CSUM_INFO) { + fi_args->csum_type = btrfs_super_csum_type(fs_info->super_copy); + fi_args->csum_size = btrfs_super_csum_size(fs_info->super_copy); + fi_args->flags |= BTRFS_FS_INFO_FLAG_CSUM_INFO; + } + if (copy_to_user(arg, fi_args, sizeof(*fi_args))) ret = -EFAULT; --- linux-5.8.0.orig/fs/btrfs/print-tree.c +++ linux-5.8.0/fs/btrfs/print-tree.c @@ -95,9 +95,10 @@ * offset is supposed to be a tree block which * must be aligned to nodesize. */ - if (!IS_ALIGNED(offset, eb->fs_info->nodesize)) - pr_info("\t\t\t(parent %llu is NOT ALIGNED to nodesize %llu)\n", - offset, (unsigned long long)eb->fs_info->nodesize); + if (!IS_ALIGNED(offset, eb->fs_info->sectorsize)) + pr_info( + "\t\t\t(parent %llu not aligned to sectorsize %u)\n", + offset, eb->fs_info->sectorsize); break; case BTRFS_EXTENT_DATA_REF_KEY: dref = (struct btrfs_extent_data_ref *)(&iref->offset); @@ -112,8 +113,9 @@ * must be aligned to nodesize. */ if (!IS_ALIGNED(offset, eb->fs_info->nodesize)) - pr_info("\t\t\t(parent %llu is NOT ALIGNED to nodesize %llu)\n", - offset, (unsigned long long)eb->fs_info->nodesize); + pr_info( + "\t\t\t(parent %llu not aligned to sectorsize %u)\n", + offset, eb->fs_info->sectorsize); break; default: pr_cont("(extent %llu has INVALID ref type %d)\n", --- linux-5.8.0.orig/fs/btrfs/qgroup.c +++ linux-5.8.0/fs/btrfs/qgroup.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "ctree.h" #include "transaction.h" @@ -488,13 +489,13 @@ break; } out: + btrfs_free_path(path); fs_info->qgroup_flags |= flags; if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON)) clear_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags); else if (fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN && ret >= 0) ret = qgroup_rescan_init(fs_info, rescan_progress, 0); - btrfs_free_path(path); if (ret < 0) { ulist_free(fs_info->qgroup_ulist); @@ -887,6 +888,7 @@ struct btrfs_key found_key; struct btrfs_qgroup *qgroup = NULL; struct btrfs_trans_handle *trans = NULL; + struct ulist *ulist = NULL; int ret = 0; int slot; @@ -894,13 +896,28 @@ if (fs_info->quota_root) goto out; - fs_info->qgroup_ulist = ulist_alloc(GFP_KERNEL); - if (!fs_info->qgroup_ulist) { + ulist = ulist_alloc(GFP_KERNEL); + if (!ulist) { ret = -ENOMEM; goto out; } /* + * Unlock qgroup_ioctl_lock before starting the transaction. This is to + * avoid lock acquisition inversion problems (reported by lockdep) between + * qgroup_ioctl_lock and the vfs freeze semaphores, acquired when we + * start a transaction. + * After we started the transaction lock qgroup_ioctl_lock again and + * check if someone else created the quota root in the meanwhile. If so, + * just return success and release the transaction handle. + * + * Also we don't need to worry about someone else calling + * btrfs_sysfs_add_qgroups() after we unlock and getting an error because + * that function returns 0 (success) when the sysfs entries already exist. + */ + mutex_unlock(&fs_info->qgroup_ioctl_lock); + + /* * 1 for quota root item * 1 for BTRFS_QGROUP_STATUS item * @@ -909,12 +926,20 @@ * would be a lot of overkill. */ trans = btrfs_start_transaction(tree_root, 2); + + mutex_lock(&fs_info->qgroup_ioctl_lock); if (IS_ERR(trans)) { ret = PTR_ERR(trans); trans = NULL; goto out; } + if (fs_info->quota_root) + goto out; + + fs_info->qgroup_ulist = ulist; + ulist = NULL; + /* * initially create the quota tree */ @@ -974,6 +999,10 @@ btrfs_item_key_to_cpu(leaf, &found_key, slot); if (found_key.type == BTRFS_ROOT_REF_KEY) { + + /* Release locks on tree_root before we access quota_root */ + btrfs_release_path(path); + ret = add_qgroup_item(trans, quota_root, found_key.offset); if (ret) { @@ -987,6 +1016,20 @@ btrfs_abort_transaction(trans, ret); goto out_free_path; } + ret = btrfs_search_slot_for_read(tree_root, &found_key, + path, 1, 0); + if (ret < 0) { + btrfs_abort_transaction(trans, ret); + goto out_free_path; + } + if (ret > 0) { + /* + * Shouldn't happen, but in case it does we + * don't need to do the btrfs_next_item, just + * continue. + */ + continue; + } } ret = btrfs_next_item(tree_root, path); if (ret < 0) { @@ -1044,10 +1087,13 @@ if (ret) { ulist_free(fs_info->qgroup_ulist); fs_info->qgroup_ulist = NULL; - if (trans) - btrfs_end_transaction(trans); } mutex_unlock(&fs_info->qgroup_ioctl_lock); + if (ret && trans) + btrfs_end_transaction(trans); + else if (trans) + ret = btrfs_end_transaction(trans); + ulist_free(ulist); return ret; } @@ -1060,19 +1106,29 @@ mutex_lock(&fs_info->qgroup_ioctl_lock); if (!fs_info->quota_root) goto out; + mutex_unlock(&fs_info->qgroup_ioctl_lock); /* * 1 For the root item * * We should also reserve enough items for the quota tree deletion in * btrfs_clean_quota_tree but this is not done. + * + * Also, we must always start a transaction without holding the mutex + * qgroup_ioctl_lock, see btrfs_quota_enable(). */ trans = btrfs_start_transaction(fs_info->tree_root, 1); + + mutex_lock(&fs_info->qgroup_ioctl_lock); if (IS_ERR(trans)) { ret = PTR_ERR(trans); + trans = NULL; goto out; } + if (!fs_info->quota_root) + goto out; + clear_bit(BTRFS_FS_QUOTA_ENABLED, &fs_info->flags); btrfs_qgroup_wait_for_completion(fs_info, false); spin_lock(&fs_info->qgroup_lock); @@ -1086,13 +1142,13 @@ ret = btrfs_clean_quota_tree(trans, quota_root); if (ret) { btrfs_abort_transaction(trans, ret); - goto end_trans; + goto out; } ret = btrfs_del_root(trans, "a_root->root_key); if (ret) { btrfs_abort_transaction(trans, ret); - goto end_trans; + goto out; } list_del("a_root->dirty_list); @@ -1104,10 +1160,13 @@ btrfs_put_root(quota_root); -end_trans: - ret = btrfs_end_transaction(trans); out: mutex_unlock(&fs_info->qgroup_ioctl_lock); + if (ret && trans) + btrfs_end_transaction(trans); + else if (trans) + ret = btrfs_end_transaction(trans); + return ret; } @@ -1243,13 +1302,17 @@ struct btrfs_qgroup *member; struct btrfs_qgroup_list *list; struct ulist *tmp; + unsigned int nofs_flag; int ret = 0; /* Check the level of src and dst first */ if (btrfs_qgroup_level(src) >= btrfs_qgroup_level(dst)) return -EINVAL; + /* We hold a transaction handle open, must do a NOFS allocation. */ + nofs_flag = memalloc_nofs_save(); tmp = ulist_alloc(GFP_KERNEL); + memalloc_nofs_restore(nofs_flag); if (!tmp) return -ENOMEM; @@ -1306,10 +1369,14 @@ struct btrfs_qgroup_list *list; struct ulist *tmp; bool found = false; + unsigned int nofs_flag; int ret = 0; int ret2; + /* We hold a transaction handle open, must do a NOFS allocation. */ + nofs_flag = memalloc_nofs_save(); tmp = ulist_alloc(GFP_KERNEL); + memalloc_nofs_restore(nofs_flag); if (!tmp) return -ENOMEM; @@ -3126,6 +3193,12 @@ return ret; } +static bool rescan_should_stop(struct btrfs_fs_info *fs_info) +{ + return btrfs_fs_closing(fs_info) || + test_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state); +} + static void btrfs_qgroup_rescan_worker(struct btrfs_work *work) { struct btrfs_fs_info *fs_info = container_of(work, struct btrfs_fs_info, @@ -3134,6 +3207,7 @@ struct btrfs_trans_handle *trans = NULL; int err = -ENOMEM; int ret = 0; + bool stopped = false; path = btrfs_alloc_path(); if (!path) @@ -3146,7 +3220,7 @@ path->skip_locking = 1; err = 0; - while (!err && !btrfs_fs_closing(fs_info)) { + while (!err && !(stopped = rescan_should_stop(fs_info))) { trans = btrfs_start_transaction(fs_info->fs_root, 0); if (IS_ERR(trans)) { err = PTR_ERR(trans); @@ -3189,7 +3263,7 @@ } mutex_lock(&fs_info->qgroup_rescan_lock); - if (!btrfs_fs_closing(fs_info)) + if (!stopped) fs_info->qgroup_flags &= ~BTRFS_QGROUP_STATUS_FLAG_RESCAN; if (trans) { ret = update_qgroup_status_item(trans); @@ -3208,7 +3282,7 @@ btrfs_end_transaction(trans); - if (btrfs_fs_closing(fs_info)) { + if (stopped) { btrfs_info(fs_info, "qgroup scan paused"); } else if (err >= 0) { btrfs_info(fs_info, "qgroup scan completed%s", @@ -3742,7 +3816,7 @@ * Check qgroup reserved space leaking, normally at destroy inode * time */ -void btrfs_qgroup_check_reserved_leak(struct inode *inode) +void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode) { struct extent_changeset changeset; struct ulist_node *unode; @@ -3750,19 +3824,19 @@ int ret; extent_changeset_init(&changeset); - ret = clear_record_extent_bits(&BTRFS_I(inode)->io_tree, 0, (u64)-1, + ret = clear_record_extent_bits(&inode->io_tree, 0, (u64)-1, EXTENT_QGROUP_RESERVED, &changeset); WARN_ON(ret < 0); if (WARN_ON(changeset.bytes_changed)) { ULIST_ITER_INIT(&iter); while ((unode = ulist_next(&changeset.range_changed, &iter))) { - btrfs_warn(BTRFS_I(inode)->root->fs_info, - "leaking qgroup reserved space, ino: %lu, start: %llu, end: %llu", - inode->i_ino, unode->val, unode->aux); + btrfs_warn(inode->root->fs_info, + "leaking qgroup reserved space, ino: %llu, start: %llu, end: %llu", + btrfs_ino(inode), unode->val, unode->aux); } - btrfs_qgroup_free_refroot(BTRFS_I(inode)->root->fs_info, - BTRFS_I(inode)->root->root_key.objectid, + btrfs_qgroup_free_refroot(inode->root->fs_info, + inode->root->root_key.objectid, changeset.bytes_changed, BTRFS_QGROUP_RSV_DATA); } --- linux-5.8.0.orig/fs/btrfs/qgroup.h +++ linux-5.8.0/fs/btrfs/qgroup.h @@ -399,7 +399,7 @@ */ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes); -void btrfs_qgroup_check_reserved_leak(struct inode *inode); +void btrfs_qgroup_check_reserved_leak(struct btrfs_inode *inode); /* btrfs_qgroup_swapped_blocks related functions */ void btrfs_qgroup_init_swapped_blocks( --- linux-5.8.0.orig/fs/btrfs/raid56.c +++ linux-5.8.0/fs/btrfs/raid56.c @@ -2386,16 +2386,21 @@ SetPageUptodate(p_page); if (has_qstripe) { + /* RAID6, allocate and map temp space for the Q stripe */ q_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); if (!q_page) { __free_page(p_page); goto cleanup; } SetPageUptodate(q_page); + pointers[rbio->real_stripes - 1] = kmap(q_page); } atomic_set(&rbio->error, 0); + /* Map the parity stripe just once */ + pointers[nr_data] = kmap(p_page); + for_each_set_bit(pagenr, rbio->dbitmap, rbio->stripe_npages) { struct page *p; void *parity; @@ -2405,16 +2410,8 @@ pointers[stripe] = kmap(p); } - /* then add the parity stripe */ - pointers[stripe++] = kmap(p_page); - if (has_qstripe) { - /* - * raid6, add the qstripe and call the - * library function to fill in our p/q - */ - pointers[stripe++] = kmap(q_page); - + /* RAID6, call the library function to fill in our P/Q */ raid6_call.gen_syndrome(rbio->real_stripes, PAGE_SIZE, pointers); } else { @@ -2435,12 +2432,14 @@ for (stripe = 0; stripe < nr_data; stripe++) kunmap(page_in_rbio(rbio, stripe, pagenr, 0)); - kunmap(p_page); } + kunmap(p_page); __free_page(p_page); - if (q_page) + if (q_page) { + kunmap(q_page); __free_page(q_page); + } writeback: /* --- linux-5.8.0.orig/fs/btrfs/reada.c +++ linux-5.8.0/fs/btrfs/reada.c @@ -421,6 +421,9 @@ if (!dev->bdev) continue; + if (test_bit(BTRFS_DEV_STATE_NO_READA, &dev->dev_state)) + continue; + if (dev_replace_is_ongoing && dev == fs_info->dev_replace.tgtdev) { /* @@ -445,6 +448,8 @@ } have_zone = 1; } + if (!have_zone) + radix_tree_delete(&fs_info->reada_tree, index); spin_unlock(&fs_info->reada_lock); up_read(&fs_info->dev_replace.rwsem); @@ -1012,3 +1017,45 @@ kref_put(&rc->refcnt, reada_control_release); } + +/* + * Before removing a device (device replace or device remove ioctls), call this + * function to wait for all existing readahead requests on the device and to + * make sure no one queues more readahead requests for the device. + * + * Must be called without holding neither the device list mutex nor the device + * replace semaphore, otherwise it will deadlock. + */ +void btrfs_reada_remove_dev(struct btrfs_device *dev) +{ + struct btrfs_fs_info *fs_info = dev->fs_info; + + /* Serialize with readahead extent creation at reada_find_extent(). */ + spin_lock(&fs_info->reada_lock); + set_bit(BTRFS_DEV_STATE_NO_READA, &dev->dev_state); + spin_unlock(&fs_info->reada_lock); + + /* + * There might be readahead requests added to the radix trees which + * were not yet added to the readahead work queue. We need to start + * them and wait for their completion, otherwise we can end up with + * use-after-free problems when dropping the last reference on the + * readahead extents and their zones, as they need to access the + * device structure. + */ + reada_start_machine(fs_info); + btrfs_flush_workqueue(fs_info->readahead_workers); +} + +/* + * If when removing a device (device replace or device remove ioctls) an error + * happens after calling btrfs_reada_remove_dev(), call this to undo what that + * function did. This is safe to call even if btrfs_reada_remove_dev() was not + * called before. + */ +void btrfs_reada_undo_remove_dev(struct btrfs_device *dev) +{ + spin_lock(&dev->fs_info->reada_lock); + clear_bit(BTRFS_DEV_STATE_NO_READA, &dev->dev_state); + spin_unlock(&dev->fs_info->reada_lock); +} --- linux-5.8.0.orig/fs/btrfs/ref-verify.c +++ linux-5.8.0/fs/btrfs/ref-verify.c @@ -286,6 +286,8 @@ exist_re = insert_root_entry(&exist->roots, re); if (exist_re) kfree(re); + } else { + kfree(re); } kfree(be); return exist; @@ -858,6 +860,7 @@ "dropping a ref for a root that doesn't have a ref on the block"); dump_block_entry(fs_info, be); dump_ref_action(fs_info, ra); + kfree(ref); kfree(ra); goto out_unlock; } --- linux-5.8.0.orig/fs/btrfs/reflink.c +++ linux-5.8.0/fs/btrfs/reflink.c @@ -504,6 +504,8 @@ ret = -EINTR; goto out; } + + cond_resched(); } ret = 0; @@ -517,6 +519,24 @@ btrfs_release_path(path); path->leave_spinning = 0; + /* + * When using NO_HOLES and we are cloning a range that covers + * only a hole (no extents) into a range beyond the current + * i_size, punching a hole in the target range will not create + * an extent map defining a hole, because the range starts at or + * beyond current i_size. If the file previously had an i_size + * greater than the new i_size set by this clone operation, we + * need to make sure the next fsync is a full fsync, so that it + * detects and logs a hole covering a range from the current + * i_size to the new i_size. If the clone range covers extents, + * besides a hole, then we know the full sync flag was already + * set by previous calls to btrfs_replace_file_extents() that + * replaced file extent items. + */ + if (last_dest_end >= i_size_read(inode)) + set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, + &BTRFS_I(inode)->runtime_flags); + ret = btrfs_punch_hole_range(inode, path, last_dest_end, destoff + len - 1, NULL, &trans); if (ret) --- linux-5.8.0.orig/fs/btrfs/relocation.c +++ linux-5.8.0/fs/btrfs/relocation.c @@ -669,9 +669,7 @@ RB_CLEAR_NODE(&node->rb_node); } spin_unlock(&rc->reloc_root_tree.lock); - if (!node) - return; - BUG_ON((struct btrfs_root *)node->data != root); + ASSERT(!node || (struct btrfs_root *)node->data == root); } /* @@ -1646,6 +1644,7 @@ struct btrfs_root_item *root_item; struct btrfs_path *path; struct extent_buffer *leaf; + int reserve_level; int level; int max_level; int replaced = 0; @@ -1686,12 +1685,21 @@ btrfs_unlock_up_safe(path, 0); } - min_reserved = fs_info->nodesize * (BTRFS_MAX_LEVEL - 1) * 2; + /* + * In merge_reloc_root(), we modify the upper level pointer to swap the + * tree blocks between reloc tree and subvolume tree. Thus for tree + * block COW, we COW at most from level 1 to root level for each tree. + * + * Thus the needed metadata size is at most root_level * nodesize, + * and * 2 since we have two trees to COW. + */ + reserve_level = max_t(int, 1, btrfs_root_level(root_item)); + min_reserved = fs_info->nodesize * reserve_level * 2; memset(&next_key, 0, sizeof(next_key)); while (1) { ret = btrfs_block_rsv_refill(root, rc->block_rsv, min_reserved, - BTRFS_RESERVE_FLUSH_ALL); + BTRFS_RESERVE_FLUSH_LIMIT); if (ret) { err = ret; goto out; @@ -3021,11 +3029,16 @@ return 0; for (i = 0; i < btrfs_header_nritems(leaf); i++) { + u8 type; + btrfs_item_key_to_cpu(leaf, &key, i); if (key.type != BTRFS_EXTENT_DATA_KEY) continue; ei = btrfs_item_ptr(leaf, i, struct btrfs_file_extent_item); - if (btrfs_file_extent_type(leaf, ei) == BTRFS_FILE_EXTENT_REG && + type = btrfs_file_extent_type(leaf, ei); + + if ((type == BTRFS_FILE_EXTENT_REG || + type == BTRFS_FILE_EXTENT_PREALLOC) && btrfs_file_extent_disk_bytenr(leaf, ei) == data_bytenr) { found = true; space_cache_ino = key.objectid; --- linux-5.8.0.orig/fs/btrfs/root-tree.c +++ linux-5.8.0/fs/btrfs/root-tree.c @@ -512,11 +512,20 @@ if (ret && qgroup_num_bytes) btrfs_qgroup_free_meta_prealloc(root, qgroup_num_bytes); + if (!ret) { + spin_lock(&rsv->lock); + rsv->qgroup_rsv_reserved += qgroup_num_bytes; + spin_unlock(&rsv->lock); + } return ret; } -void btrfs_subvolume_release_metadata(struct btrfs_fs_info *fs_info, +void btrfs_subvolume_release_metadata(struct btrfs_root *root, struct btrfs_block_rsv *rsv) { - btrfs_block_rsv_release(fs_info, rsv, (u64)-1, NULL); + struct btrfs_fs_info *fs_info = root->fs_info; + u64 qgroup_to_release; + + btrfs_block_rsv_release(fs_info, rsv, (u64)-1, &qgroup_to_release); + btrfs_qgroup_convert_reserved_meta(root, qgroup_to_release); } --- linux-5.8.0.orig/fs/btrfs/scrub.c +++ linux-5.8.0/fs/btrfs/scrub.c @@ -3635,6 +3635,13 @@ * commit_transactions. */ ro_set = 0; + } else if (ret == -ETXTBSY) { + btrfs_warn(fs_info, + "skipping scrub of block group %llu due to active swapfile", + cache->start); + scrub_pause_off(fs_info); + ret = 0; + goto skip_unfreeze; } else { btrfs_warn(fs_info, "failed setting block group ro: %d", ret); @@ -3724,7 +3731,7 @@ } else { spin_unlock(&cache->lock); } - +skip_unfreeze: btrfs_unfreeze_block_group(cache); btrfs_put_block_group(cache); if (ret) @@ -3758,7 +3765,7 @@ struct btrfs_fs_info *fs_info = sctx->fs_info; if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) - return -EIO; + return -EROFS; /* Seed devices of a new filesystem has their own generation. */ if (scrub_dev->fs_devices != fs_info->fs_devices) @@ -3783,50 +3790,84 @@ return 0; } +static void scrub_workers_put(struct btrfs_fs_info *fs_info) +{ + if (refcount_dec_and_mutex_lock(&fs_info->scrub_workers_refcnt, + &fs_info->scrub_lock)) { + struct btrfs_workqueue *scrub_workers = NULL; + struct btrfs_workqueue *scrub_wr_comp = NULL; + struct btrfs_workqueue *scrub_parity = NULL; + + scrub_workers = fs_info->scrub_workers; + scrub_wr_comp = fs_info->scrub_wr_completion_workers; + scrub_parity = fs_info->scrub_parity_workers; + + fs_info->scrub_workers = NULL; + fs_info->scrub_wr_completion_workers = NULL; + fs_info->scrub_parity_workers = NULL; + mutex_unlock(&fs_info->scrub_lock); + + btrfs_destroy_workqueue(scrub_workers); + btrfs_destroy_workqueue(scrub_wr_comp); + btrfs_destroy_workqueue(scrub_parity); + } +} + /* * get a reference count on fs_info->scrub_workers. start worker if necessary */ static noinline_for_stack int scrub_workers_get(struct btrfs_fs_info *fs_info, int is_dev_replace) { + struct btrfs_workqueue *scrub_workers = NULL; + struct btrfs_workqueue *scrub_wr_comp = NULL; + struct btrfs_workqueue *scrub_parity = NULL; unsigned int flags = WQ_FREEZABLE | WQ_UNBOUND; int max_active = fs_info->thread_pool_size; + int ret = -ENOMEM; - lockdep_assert_held(&fs_info->scrub_lock); + if (refcount_inc_not_zero(&fs_info->scrub_workers_refcnt)) + return 0; - if (refcount_read(&fs_info->scrub_workers_refcnt) == 0) { - ASSERT(fs_info->scrub_workers == NULL); - fs_info->scrub_workers = btrfs_alloc_workqueue(fs_info, "scrub", - flags, is_dev_replace ? 1 : max_active, 4); - if (!fs_info->scrub_workers) - goto fail_scrub_workers; - - ASSERT(fs_info->scrub_wr_completion_workers == NULL); - fs_info->scrub_wr_completion_workers = - btrfs_alloc_workqueue(fs_info, "scrubwrc", flags, - max_active, 2); - if (!fs_info->scrub_wr_completion_workers) - goto fail_scrub_wr_completion_workers; + scrub_workers = btrfs_alloc_workqueue(fs_info, "scrub", flags, + is_dev_replace ? 1 : max_active, 4); + if (!scrub_workers) + goto fail_scrub_workers; - ASSERT(fs_info->scrub_parity_workers == NULL); - fs_info->scrub_parity_workers = - btrfs_alloc_workqueue(fs_info, "scrubparity", flags, + scrub_wr_comp = btrfs_alloc_workqueue(fs_info, "scrubwrc", flags, max_active, 2); - if (!fs_info->scrub_parity_workers) - goto fail_scrub_parity_workers; + if (!scrub_wr_comp) + goto fail_scrub_wr_completion_workers; + + scrub_parity = btrfs_alloc_workqueue(fs_info, "scrubparity", flags, + max_active, 2); + if (!scrub_parity) + goto fail_scrub_parity_workers; + mutex_lock(&fs_info->scrub_lock); + if (refcount_read(&fs_info->scrub_workers_refcnt) == 0) { + ASSERT(fs_info->scrub_workers == NULL && + fs_info->scrub_wr_completion_workers == NULL && + fs_info->scrub_parity_workers == NULL); + fs_info->scrub_workers = scrub_workers; + fs_info->scrub_wr_completion_workers = scrub_wr_comp; + fs_info->scrub_parity_workers = scrub_parity; refcount_set(&fs_info->scrub_workers_refcnt, 1); - } else { - refcount_inc(&fs_info->scrub_workers_refcnt); + mutex_unlock(&fs_info->scrub_lock); + return 0; } - return 0; + /* Other thread raced in and created the workers for us */ + refcount_inc(&fs_info->scrub_workers_refcnt); + mutex_unlock(&fs_info->scrub_lock); + ret = 0; + btrfs_destroy_workqueue(scrub_parity); fail_scrub_parity_workers: - btrfs_destroy_workqueue(fs_info->scrub_wr_completion_workers); + btrfs_destroy_workqueue(scrub_wr_comp); fail_scrub_wr_completion_workers: - btrfs_destroy_workqueue(fs_info->scrub_workers); + btrfs_destroy_workqueue(scrub_workers); fail_scrub_workers: - return -ENOMEM; + return ret; } int btrfs_scrub_dev(struct btrfs_fs_info *fs_info, u64 devid, u64 start, @@ -3837,9 +3878,6 @@ int ret; struct btrfs_device *dev; unsigned int nofs_flag; - struct btrfs_workqueue *scrub_workers = NULL; - struct btrfs_workqueue *scrub_wr_comp = NULL; - struct btrfs_workqueue *scrub_parity = NULL; if (btrfs_fs_closing(fs_info)) return -EAGAIN; @@ -3886,13 +3924,17 @@ if (IS_ERR(sctx)) return PTR_ERR(sctx); + ret = scrub_workers_get(fs_info, is_dev_replace); + if (ret) + goto out_free_ctx; + mutex_lock(&fs_info->fs_devices->device_list_mutex); dev = btrfs_find_device(fs_info->fs_devices, devid, NULL, NULL, true); if (!dev || (test_bit(BTRFS_DEV_STATE_MISSING, &dev->dev_state) && !is_dev_replace)) { mutex_unlock(&fs_info->fs_devices->device_list_mutex); ret = -ENODEV; - goto out_free_ctx; + goto out; } if (!is_dev_replace && !readonly && @@ -3901,7 +3943,7 @@ btrfs_err_in_rcu(fs_info, "scrub: device %s is not writable", rcu_str_deref(dev->name)); ret = -EROFS; - goto out_free_ctx; + goto out; } mutex_lock(&fs_info->scrub_lock); @@ -3910,7 +3952,7 @@ mutex_unlock(&fs_info->scrub_lock); mutex_unlock(&fs_info->fs_devices->device_list_mutex); ret = -EIO; - goto out_free_ctx; + goto out; } down_read(&fs_info->dev_replace.rwsem); @@ -3921,17 +3963,10 @@ mutex_unlock(&fs_info->scrub_lock); mutex_unlock(&fs_info->fs_devices->device_list_mutex); ret = -EINPROGRESS; - goto out_free_ctx; + goto out; } up_read(&fs_info->dev_replace.rwsem); - ret = scrub_workers_get(fs_info, is_dev_replace); - if (ret) { - mutex_unlock(&fs_info->scrub_lock); - mutex_unlock(&fs_info->fs_devices->device_list_mutex); - goto out_free_ctx; - } - sctx->readonly = readonly; dev->scrub_ctx = sctx; mutex_unlock(&fs_info->fs_devices->device_list_mutex); @@ -3984,24 +4019,14 @@ mutex_lock(&fs_info->scrub_lock); dev->scrub_ctx = NULL; - if (refcount_dec_and_test(&fs_info->scrub_workers_refcnt)) { - scrub_workers = fs_info->scrub_workers; - scrub_wr_comp = fs_info->scrub_wr_completion_workers; - scrub_parity = fs_info->scrub_parity_workers; - - fs_info->scrub_workers = NULL; - fs_info->scrub_wr_completion_workers = NULL; - fs_info->scrub_parity_workers = NULL; - } mutex_unlock(&fs_info->scrub_lock); - btrfs_destroy_workqueue(scrub_workers); - btrfs_destroy_workqueue(scrub_wr_comp); - btrfs_destroy_workqueue(scrub_parity); + scrub_workers_put(fs_info); scrub_put_ctx(sctx); return ret; - +out: + scrub_workers_put(fs_info); out_free_ctx: scrub_free_ctx(sctx); --- linux-5.8.0.orig/fs/btrfs/send.c +++ linux-5.8.0/fs/btrfs/send.c @@ -238,6 +238,7 @@ * after this directory is moved, we can try to rmdir the ino rmdir_ino. */ u64 rmdir_ino; + u64 rmdir_gen; bool orphanized; }; @@ -323,7 +324,7 @@ static struct waiting_dir_move * get_waiting_dir_move(struct send_ctx *sctx, u64 ino); -static int is_waiting_for_rm(struct send_ctx *sctx, u64 dir_ino); +static int is_waiting_for_rm(struct send_ctx *sctx, u64 dir_ino, u64 gen); static int need_send_hole(struct send_ctx *sctx) { @@ -2306,7 +2307,7 @@ fs_path_reset(name); - if (is_waiting_for_rm(sctx, ino)) { + if (is_waiting_for_rm(sctx, ino, gen)) { ret = gen_unique_name(sctx, ino, gen, name); if (ret < 0) goto out; @@ -2865,8 +2866,8 @@ return ret; } -static struct orphan_dir_info * -add_orphan_dir_info(struct send_ctx *sctx, u64 dir_ino) +static struct orphan_dir_info *add_orphan_dir_info(struct send_ctx *sctx, + u64 dir_ino, u64 dir_gen) { struct rb_node **p = &sctx->orphan_dirs.rb_node; struct rb_node *parent = NULL; @@ -2875,20 +2876,23 @@ while (*p) { parent = *p; entry = rb_entry(parent, struct orphan_dir_info, node); - if (dir_ino < entry->ino) { + if (dir_ino < entry->ino) p = &(*p)->rb_left; - } else if (dir_ino > entry->ino) { + else if (dir_ino > entry->ino) p = &(*p)->rb_right; - } else { + else if (dir_gen < entry->gen) + p = &(*p)->rb_left; + else if (dir_gen > entry->gen) + p = &(*p)->rb_right; + else return entry; - } } odi = kmalloc(sizeof(*odi), GFP_KERNEL); if (!odi) return ERR_PTR(-ENOMEM); odi->ino = dir_ino; - odi->gen = 0; + odi->gen = dir_gen; odi->last_dir_index_offset = 0; rb_link_node(&odi->node, parent, p); @@ -2896,8 +2900,8 @@ return odi; } -static struct orphan_dir_info * -get_orphan_dir_info(struct send_ctx *sctx, u64 dir_ino) +static struct orphan_dir_info *get_orphan_dir_info(struct send_ctx *sctx, + u64 dir_ino, u64 gen) { struct rb_node *n = sctx->orphan_dirs.rb_node; struct orphan_dir_info *entry; @@ -2908,15 +2912,19 @@ n = n->rb_left; else if (dir_ino > entry->ino) n = n->rb_right; + else if (gen < entry->gen) + n = n->rb_left; + else if (gen > entry->gen) + n = n->rb_right; else return entry; } return NULL; } -static int is_waiting_for_rm(struct send_ctx *sctx, u64 dir_ino) +static int is_waiting_for_rm(struct send_ctx *sctx, u64 dir_ino, u64 gen) { - struct orphan_dir_info *odi = get_orphan_dir_info(sctx, dir_ino); + struct orphan_dir_info *odi = get_orphan_dir_info(sctx, dir_ino, gen); return odi != NULL; } @@ -2961,7 +2969,7 @@ key.type = BTRFS_DIR_INDEX_KEY; key.offset = 0; - odi = get_orphan_dir_info(sctx, dir); + odi = get_orphan_dir_info(sctx, dir, dir_gen); if (odi) key.offset = odi->last_dir_index_offset; @@ -2992,7 +3000,7 @@ dm = get_waiting_dir_move(sctx, loc.objectid); if (dm) { - odi = add_orphan_dir_info(sctx, dir); + odi = add_orphan_dir_info(sctx, dir, dir_gen); if (IS_ERR(odi)) { ret = PTR_ERR(odi); goto out; @@ -3000,12 +3008,13 @@ odi->gen = dir_gen; odi->last_dir_index_offset = found_key.offset; dm->rmdir_ino = dir; + dm->rmdir_gen = dir_gen; ret = 0; goto out; } if (loc.objectid > send_progress) { - odi = add_orphan_dir_info(sctx, dir); + odi = add_orphan_dir_info(sctx, dir, dir_gen); if (IS_ERR(odi)) { ret = PTR_ERR(odi); goto out; @@ -3045,6 +3054,7 @@ return -ENOMEM; dm->ino = ino; dm->rmdir_ino = 0; + dm->rmdir_gen = 0; dm->orphanized = orphanized; while (*p) { @@ -3190,7 +3200,7 @@ while (ino != BTRFS_FIRST_FREE_OBJECTID) { fs_path_reset(name); - if (is_waiting_for_rm(sctx, ino)) + if (is_waiting_for_rm(sctx, ino, gen)) break; if (is_waiting_for_move(sctx, ino)) { if (*ancestor_ino == 0) @@ -3230,6 +3240,7 @@ u64 parent_ino, parent_gen; struct waiting_dir_move *dm = NULL; u64 rmdir_ino = 0; + u64 rmdir_gen; u64 ancestor; bool is_orphan; int ret; @@ -3244,6 +3255,7 @@ dm = get_waiting_dir_move(sctx, pm->ino); ASSERT(dm); rmdir_ino = dm->rmdir_ino; + rmdir_gen = dm->rmdir_gen; is_orphan = dm->orphanized; free_waiting_dir_move(sctx, dm); @@ -3280,6 +3292,7 @@ dm = get_waiting_dir_move(sctx, pm->ino); ASSERT(dm); dm->rmdir_ino = rmdir_ino; + dm->rmdir_gen = rmdir_gen; } goto out; } @@ -3298,7 +3311,7 @@ struct orphan_dir_info *odi; u64 gen; - odi = get_orphan_dir_info(sctx, rmdir_ino); + odi = get_orphan_dir_info(sctx, rmdir_ino, rmdir_gen); if (!odi) { /* already deleted */ goto finish; @@ -3813,6 +3826,72 @@ } /* + * When processing the new references for an inode we may orphanize an existing + * directory inode because its old name conflicts with one of the new references + * of the current inode. Later, when processing another new reference of our + * inode, we might need to orphanize another inode, but the path we have in the + * reference reflects the pre-orphanization name of the directory we previously + * orphanized. For example: + * + * parent snapshot looks like: + * + * . (ino 256) + * |----- f1 (ino 257) + * |----- f2 (ino 258) + * |----- d1/ (ino 259) + * |----- d2/ (ino 260) + * + * send snapshot looks like: + * + * . (ino 256) + * |----- d1 (ino 258) + * |----- f2/ (ino 259) + * |----- f2_link/ (ino 260) + * | |----- f1 (ino 257) + * | + * |----- d2 (ino 258) + * + * When processing inode 257 we compute the name for inode 259 as "d1", and we + * cache it in the name cache. Later when we start processing inode 258, when + * collecting all its new references we set a full path of "d1/d2" for its new + * reference with name "d2". When we start processing the new references we + * start by processing the new reference with name "d1", and this results in + * orphanizing inode 259, since its old reference causes a conflict. Then we + * move on the next new reference, with name "d2", and we find out we must + * orphanize inode 260, as its old reference conflicts with ours - but for the + * orphanization we use a source path corresponding to the path we stored in the + * new reference, which is "d1/d2" and not "o259-6-0/d2" - this makes the + * receiver fail since the path component "d1/" no longer exists, it was renamed + * to "o259-6-0/" when processing the previous new reference. So in this case we + * must recompute the path in the new reference and use it for the new + * orphanization operation. + */ +static int refresh_ref_path(struct send_ctx *sctx, struct recorded_ref *ref) +{ + char *name; + int ret; + + name = kmemdup(ref->name, ref->name_len, GFP_KERNEL); + if (!name) + return -ENOMEM; + + fs_path_reset(ref->full_path); + ret = get_cur_path(sctx, ref->dir, ref->dir_gen, ref->full_path); + if (ret < 0) + goto out; + + ret = fs_path_add(ref->full_path, name, ref->name_len); + if (ret < 0) + goto out; + + /* Update the reference's base name pointer. */ + set_ref_path(ref, ref->full_path); +out: + kfree(name); + return ret; +} + +/* * This does all the move/link/unlink/rmdir magic. */ static int process_recorded_refs(struct send_ctx *sctx, int *pending_move) @@ -3880,52 +3959,56 @@ goto out; } + /* + * Before doing any rename and link operations, do a first pass on the + * new references to orphanize any unprocessed inodes that may have a + * reference that conflicts with one of the new references of the current + * inode. This needs to happen first because a new reference may conflict + * with the old reference of a parent directory, so we must make sure + * that the path used for link and rename commands don't use an + * orphanized name when an ancestor was not yet orphanized. + * + * Example: + * + * Parent snapshot: + * + * . (ino 256) + * |----- testdir/ (ino 259) + * | |----- a (ino 257) + * | + * |----- b (ino 258) + * + * Send snapshot: + * + * . (ino 256) + * |----- testdir_2/ (ino 259) + * | |----- a (ino 260) + * | + * |----- testdir (ino 257) + * |----- b (ino 257) + * |----- b2 (ino 258) + * + * Processing the new reference for inode 257 with name "b" may happen + * before processing the new reference with name "testdir". If so, we + * must make sure that by the time we send a link command to create the + * hard link "b", inode 259 was already orphanized, since the generated + * path in "valid_path" already contains the orphanized name for 259. + * We are processing inode 257, so only later when processing 259 we do + * the rename operation to change its temporary (orphanized) name to + * "testdir_2". + */ list_for_each_entry(cur, &sctx->new_refs, list) { - /* - * We may have refs where the parent directory does not exist - * yet. This happens if the parent directories inum is higher - * than the current inum. To handle this case, we create the - * parent directory out of order. But we need to check if this - * did already happen before due to other refs in the same dir. - */ ret = get_cur_inode_state(sctx, cur->dir, cur->dir_gen); if (ret < 0) goto out; - if (ret == inode_state_will_create) { - ret = 0; - /* - * First check if any of the current inodes refs did - * already create the dir. - */ - list_for_each_entry(cur2, &sctx->new_refs, list) { - if (cur == cur2) - break; - if (cur2->dir == cur->dir) { - ret = 1; - break; - } - } - - /* - * If that did not happen, check if a previous inode - * did already create the dir. - */ - if (!ret) - ret = did_create_dir(sctx, cur->dir); - if (ret < 0) - goto out; - if (!ret) { - ret = send_create_inode(sctx, cur->dir); - if (ret < 0) - goto out; - } - } + if (ret == inode_state_will_create) + continue; /* - * Check if this new ref would overwrite the first ref of - * another unprocessed inode. If yes, orphanize the - * overwritten inode. If we find an overwritten ref that is - * not the first ref, simply unlink it. + * Check if this new ref would overwrite the first ref of another + * unprocessed inode. If yes, orphanize the overwritten inode. + * If we find an overwritten ref that is not the first ref, + * simply unlink it. */ ret = will_overwrite_ref(sctx, cur->dir, cur->dir_gen, cur->name, cur->name_len, @@ -3942,6 +4025,12 @@ struct name_cache_entry *nce; struct waiting_dir_move *wdm; + if (orphanized_dir) { + ret = refresh_ref_path(sctx, cur); + if (ret < 0) + goto out; + } + ret = orphanize_inode(sctx, ow_inode, ow_gen, cur->full_path); if (ret < 0) @@ -4004,6 +4093,49 @@ } } + } + + list_for_each_entry(cur, &sctx->new_refs, list) { + /* + * We may have refs where the parent directory does not exist + * yet. This happens if the parent directories inum is higher + * than the current inum. To handle this case, we create the + * parent directory out of order. But we need to check if this + * did already happen before due to other refs in the same dir. + */ + ret = get_cur_inode_state(sctx, cur->dir, cur->dir_gen); + if (ret < 0) + goto out; + if (ret == inode_state_will_create) { + ret = 0; + /* + * First check if any of the current inodes refs did + * already create the dir. + */ + list_for_each_entry(cur2, &sctx->new_refs, list) { + if (cur == cur2) + break; + if (cur2->dir == cur->dir) { + ret = 1; + break; + } + } + + /* + * If that did not happen, check if a previous inode + * did already create the dir. + */ + if (!ret) + ret = did_create_dir(sctx, cur->dir); + if (ret < 0) + goto out; + if (!ret) { + ret = send_create_inode(sctx, cur->dir); + if (ret < 0) + goto out; + } + } + if (S_ISDIR(sctx->cur_inode_mode) && sctx->parent_root) { ret = wait_for_dest_dir_move(sctx, cur, is_orphan); if (ret < 0) @@ -5382,6 +5514,21 @@ break; offset += clone_len; clone_root->offset += clone_len; + + /* + * If we are cloning from the file we are currently processing, + * and using the send root as the clone root, we must stop once + * the current clone offset reaches the current eof of the file + * at the receiver, otherwise we would issue an invalid clone + * operation (source range going beyond eof) and cause the + * receiver to fail. So if we reach the current eof, bail out + * and fallback to a regular write. + */ + if (clone_root->root == sctx->send_root && + clone_root->ino == sctx->cur_ino && + clone_root->offset >= sctx->cur_inode_next_write_offset) + break; + data_offset += clone_len; next: path->slots[0]++; @@ -7181,7 +7328,7 @@ alloc_size = sizeof(struct clone_root) * (arg->clone_sources_count + 1); - sctx->clone_roots = kzalloc(alloc_size, GFP_KERNEL); + sctx->clone_roots = kvzalloc(alloc_size, GFP_KERNEL); if (!sctx->clone_roots) { ret = -ENOMEM; goto out; --- linux-5.8.0.orig/fs/btrfs/space-info.c +++ linux-5.8.0/fs/btrfs/space-info.c @@ -468,8 +468,8 @@ "block group %llu has %llu bytes, %llu used %llu pinned %llu reserved %s", cache->start, cache->length, cache->used, cache->pinned, cache->reserved, cache->ro ? "[readonly]" : ""); - btrfs_dump_free_space(cache, bytes); spin_unlock(&cache->lock); + btrfs_dump_free_space(cache, bytes); } if (++index < BTRFS_NR_RAID_TYPES) goto again; --- linux-5.8.0.orig/fs/btrfs/space-info.h +++ linux-5.8.0/fs/btrfs/space-info.h @@ -150,4 +150,21 @@ spin_unlock(&space_info->lock); } +static inline void __btrfs_mod_total_bytes_pinned( + struct btrfs_space_info *space_info, + s64 mod) +{ + percpu_counter_add_batch(&space_info->total_bytes_pinned, mod, + BTRFS_TOTAL_BYTES_PINNED_BATCH); +} + +static inline void btrfs_mod_total_bytes_pinned(struct btrfs_fs_info *fs_info, + u64 flags, s64 mod) +{ + struct btrfs_space_info *space_info = btrfs_find_space_info(fs_info, flags); + + ASSERT(space_info); + __btrfs_mod_total_bytes_pinned(space_info, mod); +} + #endif /* BTRFS_SPACE_INFO_H */ --- linux-5.8.0.orig/fs/btrfs/super.c +++ linux-5.8.0/fs/btrfs/super.c @@ -449,6 +449,7 @@ char *compress_type; bool compress_force = false; enum btrfs_compression_type saved_compress_type; + int saved_compress_level; bool saved_compress_force; int no_compress = 0; @@ -531,6 +532,7 @@ info->compress_type : BTRFS_COMPRESS_NONE; saved_compress_force = btrfs_test_opt(info, FORCE_COMPRESS); + saved_compress_level = info->compress_level; if (token == Opt_compress || token == Opt_compress_force || strncmp(args[0].from, "zlib", 4) == 0) { @@ -556,6 +558,7 @@ } else if (strncmp(args[0].from, "lzo", 3) == 0) { compress_type = "lzo"; info->compress_type = BTRFS_COMPRESS_LZO; + info->compress_level = 0; btrfs_set_opt(info->mount_opt, COMPRESS); btrfs_clear_opt(info->mount_opt, NODATACOW); btrfs_clear_opt(info->mount_opt, NODATASUM); @@ -575,6 +578,8 @@ no_compress = 0; } else if (strncmp(args[0].from, "no", 2) == 0) { compress_type = "no"; + info->compress_level = 0; + info->compress_type = 0; btrfs_clear_opt(info->mount_opt, COMPRESS); btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS); compress_force = false; @@ -595,11 +600,11 @@ */ btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS); } - if ((btrfs_test_opt(info, COMPRESS) && - (info->compress_type != saved_compress_type || - compress_force != saved_compress_force)) || - (!btrfs_test_opt(info, COMPRESS) && - no_compress == 1)) { + if (no_compress == 1) { + btrfs_info(info, "use no compression"); + } else if ((info->compress_type != saved_compress_type) || + (compress_force != saved_compress_force) || + (info->compress_level != saved_compress_level)) { btrfs_info(info, "%s %s compression, level %d", (compress_force) ? "force" : "use", compress_type, info->compress_level); @@ -1312,6 +1317,7 @@ { struct btrfs_fs_info *info = btrfs_sb(dentry->d_sb); const char *compress_type; + const char *subvol_name; if (btrfs_test_opt(info, DEGRADED)) seq_puts(seq, ",degraded"); @@ -1398,8 +1404,13 @@ seq_puts(seq, ",ref_verify"); seq_printf(seq, ",subvolid=%llu", BTRFS_I(d_inode(dentry))->root->root_key.objectid); - seq_puts(seq, ",subvol="); - seq_dentry(seq, dentry, " \t\n\\"); + subvol_name = btrfs_get_subvol_name_from_objectid(info, + BTRFS_I(d_inode(dentry))->root->root_key.objectid); + if (!IS_ERR(subvol_name)) { + seq_puts(seq, ",subvol="); + seq_escape(seq, subvol_name, " \t\n\\"); + kfree(subvol_name); + } return 0; } @@ -1820,6 +1831,14 @@ btrfs_scrub_cancel(fs_info); btrfs_pause_balance(fs_info); + /* + * Pause the qgroup rescan worker if it is running. We don't want + * it to be still running after we are in RO mode, as after that, + * by the time we unmount, it might have left a transaction open, + * so we would leak the transaction and/or crash. + */ + btrfs_qgroup_wait_for_completion(fs_info, false); + ret = btrfs_commit_super(fs_info); if (ret) goto restore; @@ -1887,6 +1906,12 @@ set_bit(BTRFS_FS_OPEN, &fs_info->flags); } out: + /* + * We need to set SB_I_VERSION here otherwise it'll get cleared by VFS, + * since the absence of the flag means it can be toggled off by remount. + */ + *flags |= SB_I_VERSION; + wake_up_process(fs_info->transaction_kthread); btrfs_remount_cleanup(fs_info, old_opts); return 0; @@ -2296,9 +2321,7 @@ static int btrfs_show_devname(struct seq_file *m, struct dentry *root) { struct btrfs_fs_info *fs_info = btrfs_sb(root->d_sb); - struct btrfs_fs_devices *cur_devices; struct btrfs_device *dev, *first_dev = NULL; - struct list_head *head; /* * Lightweight locking of the devices. We should not need @@ -2308,18 +2331,13 @@ * least until the rcu_read_unlock. */ rcu_read_lock(); - cur_devices = fs_info->fs_devices; - while (cur_devices) { - head = &cur_devices->devices; - list_for_each_entry_rcu(dev, head, dev_list) { - if (test_bit(BTRFS_DEV_STATE_MISSING, &dev->dev_state)) - continue; - if (!dev->name) - continue; - if (!first_dev || dev->devid < first_dev->devid) - first_dev = dev; - } - cur_devices = cur_devices->seed; + list_for_each_entry_rcu(dev, &fs_info->fs_devices->devices, dev_list) { + if (test_bit(BTRFS_DEV_STATE_MISSING, &dev->dev_state)) + continue; + if (!dev->name) + continue; + if (!first_dev || dev->devid < first_dev->devid) + first_dev = dev; } if (first_dev) --- linux-5.8.0.orig/fs/btrfs/sysfs.c +++ linux-5.8.0/fs/btrfs/sysfs.c @@ -1165,10 +1165,12 @@ disk_kobj->name); } - kobject_del(&one_device->devid_kobj); - kobject_put(&one_device->devid_kobj); + if (one_device->devid_kobj.state_initialized) { + kobject_del(&one_device->devid_kobj); + kobject_put(&one_device->devid_kobj); - wait_for_completion(&one_device->kobj_unregister); + wait_for_completion(&one_device->kobj_unregister); + } return 0; } @@ -1181,10 +1183,12 @@ sysfs_remove_link(fs_devices->devices_kobj, disk_kobj->name); } - kobject_del(&one_device->devid_kobj); - kobject_put(&one_device->devid_kobj); + if (one_device->devid_kobj.state_initialized) { + kobject_del(&one_device->devid_kobj); + kobject_put(&one_device->devid_kobj); - wait_for_completion(&one_device->kobj_unregister); + wait_for_completion(&one_device->kobj_unregister); + } } return 0; @@ -1273,7 +1277,9 @@ { int error = 0; struct btrfs_device *dev; + unsigned int nofs_flag; + nofs_flag = memalloc_nofs_save(); list_for_each_entry(dev, &fs_devices->devices, dev_list) { if (one_device && one_device != dev) @@ -1301,6 +1307,7 @@ break; } } + memalloc_nofs_restore(nofs_flag); return error; } --- linux-5.8.0.orig/fs/btrfs/transaction.c +++ linux-5.8.0/fs/btrfs/transaction.c @@ -155,6 +155,7 @@ struct btrfs_transaction *cur_trans = trans->transaction; struct btrfs_fs_info *fs_info = trans->fs_info; struct btrfs_root *root, *tmp; + struct btrfs_caching_control *caching_ctl, *next; down_write(&fs_info->commit_root_sem); list_for_each_entry_safe(root, tmp, &cur_trans->switch_commits, @@ -180,6 +181,45 @@ spin_lock(&cur_trans->dropped_roots_lock); } spin_unlock(&cur_trans->dropped_roots_lock); + + /* + * We have to update the last_byte_to_unpin under the commit_root_sem, + * at the same time we swap out the commit roots. + * + * This is because we must have a real view of the last spot the caching + * kthreads were while caching. Consider the following views of the + * extent tree for a block group + * + * commit root + * +----+----+----+----+----+----+----+ + * |\\\\| |\\\\|\\\\| |\\\\|\\\\| + * +----+----+----+----+----+----+----+ + * 0 1 2 3 4 5 6 7 + * + * new commit root + * +----+----+----+----+----+----+----+ + * | | | |\\\\| | |\\\\| + * +----+----+----+----+----+----+----+ + * 0 1 2 3 4 5 6 7 + * + * If the cache_ctl->progress was at 3, then we are only allowed to + * unpin [0,1) and [2,3], because the caching thread has already + * processed those extents. We are not allowed to unpin [5,6), because + * the caching thread will re-start it's search from 3, and thus find + * the hole from [4,6) to add to the free space cache. + */ + list_for_each_entry_safe(caching_ctl, next, + &fs_info->caching_block_groups, list) { + struct btrfs_block_group *cache = caching_ctl->block_group; + + if (btrfs_block_group_done(cache)) { + cache->last_byte_to_unpin = (u64)-1; + list_del_init(&caching_ctl->list); + btrfs_put_caching_control(caching_ctl); + } else { + cache->last_byte_to_unpin = caching_ctl->progress; + } + } up_write(&fs_info->commit_root_sem); } @@ -937,7 +977,10 @@ if (TRANS_ABORTED(trans) || test_bit(BTRFS_FS_STATE_ERROR, &info->fs_state)) { wake_up_process(info->transaction_kthread); - err = -EIO; + if (TRANS_ABORTED(trans)) + err = trans->aborted; + else + err = -EROFS; } kmem_cache_free(btrfs_trans_handle_cachep, trans); @@ -1275,7 +1318,6 @@ struct btrfs_root *gang[8]; int i; int ret; - int err = 0; spin_lock(&fs_info->fs_roots_radix_lock); while (1) { @@ -1287,6 +1329,8 @@ break; for (i = 0; i < ret; i++) { struct btrfs_root *root = gang[i]; + int ret2; + radix_tree_tag_clear(&fs_info->fs_roots_radix, (unsigned long)root->root_key.objectid, BTRFS_ROOT_TRANS_TAG); @@ -1308,17 +1352,17 @@ root->node); } - err = btrfs_update_root(trans, fs_info->tree_root, + ret2 = btrfs_update_root(trans, fs_info->tree_root, &root->root_key, &root->root_item); + if (ret2) + return ret2; spin_lock(&fs_info->fs_roots_radix_lock); - if (err) - break; btrfs_qgroup_free_meta_all_pertrans(root); } } spin_unlock(&fs_info->fs_roots_radix_lock); - return err; + return 0; } /* @@ -1630,9 +1674,10 @@ } key.offset = (u64)-1; - pending->snap = btrfs_get_fs_root(fs_info, objectid, true); + pending->snap = btrfs_get_new_fs_root(fs_info, objectid, pending->anon_dev); if (IS_ERR(pending->snap)) { ret = PTR_ERR(pending->snap); + pending->snap = NULL; btrfs_abort_transaction(trans, ret); goto fail; } @@ -2278,8 +2323,6 @@ goto unlock_tree_log; } - btrfs_prepare_extent_commit(fs_info); - cur_trans = fs_info->running_transaction; btrfs_set_root_node(&fs_info->tree_root->root_item, --- linux-5.8.0.orig/fs/btrfs/transaction.h +++ linux-5.8.0/fs/btrfs/transaction.h @@ -151,6 +151,8 @@ struct btrfs_block_rsv block_rsv; /* extra metadata reservation for relocation */ int error; + /* Preallocated anonymous block device number */ + dev_t anon_dev; bool readonly; struct list_head list; }; --- linux-5.8.0.orig/fs/btrfs/tree-checker.c +++ linux-5.8.0/fs/btrfs/tree-checker.c @@ -754,24 +754,43 @@ { struct btrfs_fs_info *fs_info = leaf->fs_info; u64 length; + u64 chunk_end; u64 stripe_len; u16 num_stripes; u16 sub_stripes; u64 type; u64 features; bool mixed = false; + int raid_index; + int nparity; + int ncopies; length = btrfs_chunk_length(leaf, chunk); stripe_len = btrfs_chunk_stripe_len(leaf, chunk); num_stripes = btrfs_chunk_num_stripes(leaf, chunk); sub_stripes = btrfs_chunk_sub_stripes(leaf, chunk); type = btrfs_chunk_type(leaf, chunk); + raid_index = btrfs_bg_flags_to_raid_index(type); + ncopies = btrfs_raid_array[raid_index].ncopies; + nparity = btrfs_raid_array[raid_index].nparity; if (!num_stripes) { chunk_err(leaf, chunk, logical, "invalid chunk num_stripes, have %u", num_stripes); return -EUCLEAN; } + if (num_stripes < ncopies) { + chunk_err(leaf, chunk, logical, + "invalid chunk num_stripes < ncopies, have %u < %d", + num_stripes, ncopies); + return -EUCLEAN; + } + if (nparity && num_stripes == nparity) { + chunk_err(leaf, chunk, logical, + "invalid chunk num_stripes == nparity, have %u == %d", + num_stripes, nparity); + return -EUCLEAN; + } if (!IS_ALIGNED(logical, fs_info->sectorsize)) { chunk_err(leaf, chunk, logical, "invalid chunk logical, have %llu should aligned to %u", @@ -790,6 +809,12 @@ "invalid chunk length, have %llu", length); return -EUCLEAN; } + if (unlikely(check_add_overflow(logical, length, &chunk_end))) { + chunk_err(leaf, chunk, logical, +"invalid chunk logical start and length, have logical start %llu length %llu", + logical, length); + return -EUCLEAN; + } if (!is_power_of_2(stripe_len) || stripe_len != BTRFS_STRIPE_LEN) { chunk_err(leaf, chunk, logical, "invalid chunk stripe length: %llu", @@ -984,7 +1009,7 @@ /* Note for ROOT_TREE_DIR_ITEM, mkfs could set its transid 0 */ if (btrfs_inode_transid(leaf, iitem) > super_gen + 1) { inode_item_err(leaf, slot, - "invalid inode generation: has %llu expect [0, %llu]", + "invalid inode transid: has %llu expect [0, %llu]", btrfs_inode_transid(leaf, iitem), super_gen + 1); return -EUCLEAN; } @@ -1035,7 +1060,7 @@ int slot) { struct btrfs_fs_info *fs_info = leaf->fs_info; - struct btrfs_root_item ri; + struct btrfs_root_item ri = { 0 }; const u64 valid_root_flags = BTRFS_ROOT_SUBVOL_RDONLY | BTRFS_ROOT_SUBVOL_DEAD; int ret; @@ -1044,14 +1069,22 @@ if (ret < 0) return ret; - if (btrfs_item_size_nr(leaf, slot) != sizeof(ri)) { + if (btrfs_item_size_nr(leaf, slot) != sizeof(ri) && + btrfs_item_size_nr(leaf, slot) != btrfs_legacy_root_item_size()) { generic_err(leaf, slot, - "invalid root item size, have %u expect %zu", - btrfs_item_size_nr(leaf, slot), sizeof(ri)); + "invalid root item size, have %u expect %zu or %u", + btrfs_item_size_nr(leaf, slot), sizeof(ri), + btrfs_legacy_root_item_size()); + return -EUCLEAN; } + /* + * For legacy root item, the members starting at generation_v2 will be + * all filled with 0. + * And since we allow geneartion_v2 as 0, it will still pass the check. + */ read_extent_buffer(leaf, &ri, btrfs_item_ptr_offset(leaf, slot), - sizeof(ri)); + btrfs_item_size_nr(leaf, slot)); /* Generation related */ if (btrfs_root_generation(&ri) > @@ -1398,6 +1431,7 @@ "invalid item size, have %u expect aligned to %zu for key type %u", btrfs_item_size_nr(leaf, slot), sizeof(*dref), key->type); + return -EUCLEAN; } if (!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize)) { generic_err(leaf, slot, @@ -1426,6 +1460,7 @@ extent_err(leaf, slot, "invalid extent data backref offset, have %llu expect aligned to %u", offset, leaf->fs_info->sectorsize); + return -EUCLEAN; } } return 0; --- linux-5.8.0.orig/fs/btrfs/tree-log.c +++ linux-5.8.0/fs/btrfs/tree-log.c @@ -3116,29 +3116,17 @@ btrfs_init_log_ctx(&root_log_ctx, NULL); mutex_lock(&log_root_tree->log_mutex); - atomic_inc(&log_root_tree->log_batch); - atomic_inc(&log_root_tree->log_writers); index2 = log_root_tree->log_transid % 2; list_add_tail(&root_log_ctx.list, &log_root_tree->log_ctxs[index2]); root_log_ctx.log_transid = log_root_tree->log_transid; - mutex_unlock(&log_root_tree->log_mutex); - - mutex_lock(&log_root_tree->log_mutex); - /* * Now we are safe to update the log_root_tree because we're under the * log_mutex, and we're a current writer so we're holding the commit * open until we drop the log_mutex. */ ret = update_log_root(trans, log, &new_root_item); - - if (atomic_dec_and_test(&log_root_tree->log_writers)) { - /* atomic_dec_and_test implies a barrier */ - cond_wake_up_nomb(&log_root_tree->log_writer_wait); - } - if (ret) { if (!list_empty(&root_log_ctx.list)) list_del_init(&root_log_ctx.list); @@ -3184,8 +3172,6 @@ root_log_ctx.log_transid - 1); } - wait_for_writer(log_root_tree); - /* * now that we've moved on to the tree of log tree roots, * check the full commit flag again @@ -3463,11 +3449,13 @@ btrfs_free_path(path); out_unlock: mutex_unlock(&dir->log_mutex); - if (ret == -ENOSPC) { + if (err == -ENOSPC) { btrfs_set_log_full_commit(trans); - ret = 0; - } else if (ret < 0) - btrfs_abort_transaction(trans, ret); + err = 0; + } else if (err < 0 && err != -ENOENT) { + /* ENOENT can be returned if the entry hasn't been fsynced yet */ + btrfs_abort_transaction(trans, err); + } btrfs_end_log_trans(root); @@ -3627,6 +3615,7 @@ * search and this search we'll not find the key again and can just * bail. */ +search: ret = btrfs_search_slot(NULL, root, &min_key, path, 0, 0); if (ret != 0) goto done; @@ -3646,6 +3635,13 @@ if (min_key.objectid != ino || min_key.type != key_type) goto done; + + if (need_resched()) { + btrfs_release_path(path); + cond_resched(); + goto search; + } + ret = overwrite_item(trans, log, dst_path, src, i, &min_key); if (ret) { @@ -4041,11 +4037,8 @@ fs_info->csum_root, ds + cs, ds + cs + cl - 1, &ordered_sums, 0); - if (ret) { - btrfs_release_path(dst_path); - kfree(ins_data); - return ret; - } + if (ret) + break; } } } @@ -4058,7 +4051,6 @@ * we have to do this after the loop above to avoid changing the * log tree while trying to change the log tree. */ - ret = 0; while (!list_empty(&ordered_sums)) { struct btrfs_ordered_sum *sums = list_entry(ordered_sums.next, struct btrfs_ordered_sum, @@ -4505,6 +4497,10 @@ const u64 ino = btrfs_ino(inode); int ins_nr = 0; int start_slot = 0; + bool found_xattrs = false; + + if (test_bit(BTRFS_INODE_NO_XATTRS, &inode->runtime_flags)) + return 0; key.objectid = ino; key.type = BTRFS_XATTR_ITEM_KEY; @@ -4543,6 +4539,7 @@ start_slot = slot; ins_nr++; path->slots[0]++; + found_xattrs = true; cond_resched(); } if (ins_nr > 0) { @@ -4552,6 +4549,9 @@ return ret; } + if (!found_xattrs) + set_bit(BTRFS_INODE_NO_XATTRS, &inode->runtime_flags); + return 0; } @@ -5123,14 +5123,13 @@ const loff_t end, struct btrfs_log_ctx *ctx) { - struct btrfs_fs_info *fs_info = root->fs_info; struct btrfs_path *path; struct btrfs_path *dst_path; struct btrfs_key min_key; struct btrfs_key max_key; struct btrfs_root *log = root->log_root; int err = 0; - int ret; + int ret = 0; bool fast_search = false; u64 ino = btrfs_ino(inode); struct extent_map_tree *em_tree = &inode->extent_tree; @@ -5166,15 +5165,19 @@ max_key.offset = (u64)-1; /* - * Only run delayed items if we are a dir or a new file. - * Otherwise commit the delayed inode only, which is needed in - * order for the log replay code to mark inodes for link count - * fixup (create temporary BTRFS_TREE_LOG_FIXUP_OBJECTID items). + * Only run delayed items if we are a directory. We want to make sure + * all directory indexes hit the fs/subvolume tree so we can find them + * and figure out which index ranges have to be logged. + * + * Otherwise commit the delayed inode only if the full sync flag is set, + * as we want to make sure an up to date version is in the subvolume + * tree so copy_inode_items_to_log() / copy_items() can find it and copy + * it to the log tree. For a non full sync, we always log the inode item + * based on the in-memory struct btrfs_inode which is always up to date. */ - if (S_ISDIR(inode->vfs_inode.i_mode) || - inode->generation > fs_info->last_trans_committed) + if (S_ISDIR(inode->vfs_inode.i_mode)) ret = btrfs_commit_inode_delayed_items(trans, inode); - else + else if (test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &inode->runtime_flags)) ret = btrfs_commit_inode_delayed_inode(inode); if (ret) { --- linux-5.8.0.orig/fs/btrfs/volumes.c +++ linux-5.8.0/fs/btrfs/volumes.c @@ -4,6 +4,7 @@ */ #include +#include #include #include #include @@ -245,7 +246,9 @@ * * global::fs_devs - add, remove, updates to the global list * - * does not protect: manipulation of the fs_devices::devices list! + * does not protect: manipulation of the fs_devices::devices list in general + * but in mount context it could be used to exclude list modifications by eg. + * scan ioctl * * btrfs_device::name - renames (write side), read is RCU * @@ -258,6 +261,9 @@ * may be used to exclude some operations from running concurrently without any * modifications to the list (see write_all_supers) * + * Is not required at mount and close times, because our device list is + * protected by the uuid_mutex at that point. + * * balance_mutex * ------------- * protects balance structures (status, state) and context accessed from @@ -400,7 +406,7 @@ * Returned struct is not linked onto any lists and must be destroyed using * btrfs_free_device. */ -static struct btrfs_device *__alloc_device(void) +static struct btrfs_device *__alloc_device(struct btrfs_fs_info *fs_info) { struct btrfs_device *dev; @@ -427,7 +433,8 @@ btrfs_device_data_ordered_init(dev); INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM); INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM); - extent_io_tree_init(NULL, &dev->alloc_state, 0, NULL); + extent_io_tree_init(fs_info, &dev->alloc_state, + IO_TREE_DEVICE_ALLOC_STATE, NULL); return dev; } @@ -602,6 +609,11 @@ return ret; } +/* + * This is only used on mount, and we are protected from competing things + * messing with our fs_devices by the uuid_mutex, thus we do not need the + * fs_devices->device_list_mutex here. + */ static int btrfs_open_one_device(struct btrfs_fs_devices *fs_devices, struct btrfs_device *device, fmode_t flags, void *holder) @@ -929,17 +941,25 @@ if (device->bdev != path_bdev) { bdput(path_bdev); mutex_unlock(&fs_devices->device_list_mutex); - btrfs_warn_in_rcu(device->fs_info, - "duplicate device fsid:devid for %pU:%llu old:%s new:%s", - disk_super->fsid, devid, - rcu_str_deref(device->name), path); + /* + * device->fs_info may not be reliable here, so + * pass in a NULL instead. This avoids a + * possible use-after-free when the fs_info and + * fs_info->sb are already torn down. + */ + btrfs_warn_in_rcu(NULL, + "duplicate device %s devid %llu generation %llu scanned by %s (%d)", + path, devid, found_transid, + current->comm, + task_pid_nr(current)); return ERR_PTR(-EEXIST); } bdput(path_bdev); btrfs_info_in_rcu(device->fs_info, - "device fsid %pU devid %llu moved old:%s new:%s", - disk_super->fsid, devid, - rcu_str_deref(device->name), path); + "devid %llu device path %s changed to %s scanned by %s (%d)", + devid, rcu_str_deref(device->name), + path, current->comm, + task_pid_nr(current)); } name = rcu_string_strdup(path, GFP_NOFS); @@ -1050,22 +1070,13 @@ continue; } - if (device->devid == BTRFS_DEV_REPLACE_DEVID) { - /* - * In the first step, keep the device which has - * the correct fsid and the devid that is used - * for the dev_replace procedure. - * In the second step, the dev_replace state is - * read from the device tree and it is known - * whether the procedure is really active or - * not, which means whether this device is - * used or whether it should be removed. - */ - if (step == 0 || test_bit(BTRFS_DEV_STATE_REPLACE_TGT, - &device->dev_state)) { - continue; - } - } + /* + * We have already validated the presence of BTRFS_DEV_REPLACE_DEVID, + * in btrfs_init_dev_replace() so just continue. + */ + if (device->devid == BTRFS_DEV_REPLACE_DEVID) + continue; + if (device->bdev) { blkdev_put(device->bdev, device->mode); device->bdev = NULL; @@ -1074,9 +1085,6 @@ if (test_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state)) { list_del_init(&device->dev_alloc_list); clear_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state); - if (!test_bit(BTRFS_DEV_STATE_REPLACE_TGT, - &device->dev_state)) - fs_devices->rw_devices--; } list_del_init(&device->dev_list); fs_devices->num_devices--; @@ -1186,17 +1194,23 @@ { struct btrfs_device *device; struct btrfs_device *latest_dev = NULL; + struct btrfs_device *tmp_device; flags |= FMODE_EXCL; - list_for_each_entry(device, &fs_devices->devices, dev_list) { - /* Just open everything we can; ignore failures here */ - if (btrfs_open_one_device(fs_devices, device, flags, holder)) - continue; + list_for_each_entry_safe(device, tmp_device, &fs_devices->devices, + dev_list) { + int ret; - if (!latest_dev || - device->generation > latest_dev->generation) + ret = btrfs_open_one_device(fs_devices, device, flags, holder); + if (ret == 0 && + (!latest_dev || device->generation > latest_dev->generation)) { latest_dev = device; + } else if (ret == -ENODATA) { + fs_devices->num_devices--; + list_del(&device->dev_list); + btrfs_free_device(device); + } } if (fs_devices->open_devices == 0) return -EINVAL; @@ -1229,8 +1243,14 @@ int ret; lockdep_assert_held(&uuid_mutex); + /* + * The device_list_mutex cannot be taken here in case opening the + * underlying device takes further locks like bd_mutex. + * + * We also don't need the lock here as this is called during mount and + * exclusion is provided by uuid_mutex + */ - mutex_lock(&fs_devices->device_list_mutex); if (fs_devices->opened) { fs_devices->opened++; ret = 0; @@ -1238,7 +1258,6 @@ list_sort(NULL, &fs_devices->devices, devid_cmp); ret = open_fs_devices(fs_devices, flags, holder); } - mutex_unlock(&fs_devices->device_list_mutex); return ret; } @@ -1983,9 +2002,9 @@ return num_devices; } -static void btrfs_scratch_superblocks(struct btrfs_fs_info *fs_info, - struct block_device *bdev, - const char *device_path) +void btrfs_scratch_superblocks(struct btrfs_fs_info *fs_info, + struct block_device *bdev, + const char *device_path) { struct btrfs_super_block *disk_super; int copy_num; @@ -2079,6 +2098,8 @@ mutex_unlock(&uuid_mutex); ret = btrfs_shrink_device(device, 0); + if (!ret) + btrfs_reada_remove_dev(device); mutex_lock(&uuid_mutex); if (ret) goto error_undo; @@ -2166,6 +2187,7 @@ return ret; error_undo: + btrfs_reada_undo_remove_dev(device); if (test_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state)) { mutex_lock(&fs_info->chunk_mutex); list_add(&device->dev_alloc_list, @@ -2208,11 +2230,7 @@ struct btrfs_fs_info *fs_info = srcdev->fs_info; struct btrfs_fs_devices *fs_devices = srcdev->fs_devices; - if (test_bit(BTRFS_DEV_STATE_WRITEABLE, &srcdev->dev_state)) { - /* zero out the old super if it is writable */ - btrfs_scratch_superblocks(fs_info, srcdev->bdev, - srcdev->name->str); - } + mutex_lock(&uuid_mutex); btrfs_close_bdev(srcdev); synchronize_rcu(); @@ -2242,6 +2260,7 @@ close_fs_devices(fs_devices); free_fs_devices(fs_devices); } + mutex_unlock(&uuid_mutex); } void btrfs_destroy_dev_replace_tgtdev(struct btrfs_device *tgtdev) @@ -2597,9 +2616,6 @@ btrfs_set_super_num_devices(fs_info->super_copy, orig_super_num_devices + 1); - /* add sysfs device entry */ - btrfs_sysfs_add_devices_dir(fs_devices, device); - /* * we've got more storage, clear any full flags on the space * infos @@ -2607,6 +2623,10 @@ btrfs_clear_space_info_full(fs_info); mutex_unlock(&fs_info->chunk_mutex); + + /* Add sysfs device entry */ + btrfs_sysfs_add_devices_dir(fs_devices, device); + mutex_unlock(&fs_devices->device_list_mutex); if (seeding_dev) { @@ -3231,7 +3251,7 @@ if (!path) return -ENOMEM; - trans = btrfs_start_transaction(root, 0); + trans = btrfs_start_transaction_fallback_global_rsv(root, 0); if (IS_ERR(trans)) { btrfs_free_path(path); return PTR_ERR(trans); @@ -4135,7 +4155,22 @@ mutex_lock(&fs_info->balance_mutex); if (ret == -ECANCELED && atomic_read(&fs_info->balance_pause_req)) btrfs_info(fs_info, "balance: paused"); - else if (ret == -ECANCELED && atomic_read(&fs_info->balance_cancel_req)) + /* + * Balance can be canceled by: + * + * - Regular cancel request + * Then ret == -ECANCELED and balance_cancel_req > 0 + * + * - Fatal signal to "btrfs" process + * Either the signal caught by wait_reserve_ticket() and callers + * got -EINTR, or caught by btrfs_should_cancel_balance() and + * got -ECANCELED. + * Either way, in this case balance_cancel_req = 0, and + * ret == -EINTR or ret == -ECANCELED. + * + * So here we only check the return value to catch canceled balance. + */ + else if (ret == -ECANCELED || ret == -EINTR) btrfs_info(fs_info, "balance: canceled"); else btrfs_info(fs_info, "balance: ended with status: %d", ret); @@ -4267,6 +4302,8 @@ btrfs_warn(fs_info, "balance: cannot set exclusive op status, resume manually"); + btrfs_release_path(path); + mutex_lock(&fs_info->balance_mutex); BUG_ON(fs_info->balance_ctl); spin_lock(&fs_info->balance_lock); @@ -4432,6 +4469,7 @@ goto skip; } update_tree: + btrfs_release_path(path); if (!btrfs_is_empty_uuid(root_item.uuid)) { ret = btrfs_uuid_tree_add(trans, root_item.uuid, BTRFS_UUID_KEY_SUBVOL, @@ -4456,6 +4494,7 @@ } skip: + btrfs_release_path(path); if (trans) { ret = btrfs_end_transaction(trans); trans = NULL; @@ -4463,7 +4502,6 @@ break; } - btrfs_release_path(path); if (key.offset < (u64)-1) { key.offset++; } else if (key.type < BTRFS_ROOT_ITEM_KEY) { @@ -4690,6 +4728,10 @@ } mutex_lock(&fs_info->chunk_mutex); + /* Clear all state bits beyond the shrunk device size */ + clear_extent_bits(&device->alloc_state, new_size, (u64)-1, + CHUNK_STATE_MASK); + btrfs_device_set_disk_total_bytes(device, new_size); if (list_empty(&device->post_commit_list)) list_add_tail(&device->post_commit_list, @@ -6465,8 +6507,17 @@ u64 devid, u8 *dev_uuid) { struct btrfs_device *device; + unsigned int nofs_flag; + /* + * We call this under the chunk_mutex, so we want to use NOFS for this + * allocation, however we don't want to change btrfs_alloc_device() to + * always do NOFS because we use it in a lot of other GFP_KERNEL safe + * places. + */ + nofs_flag = memalloc_nofs_save(); device = btrfs_alloc_device(NULL, &devid, dev_uuid); + memalloc_nofs_restore(nofs_flag); if (IS_ERR(device)) return device; @@ -6503,7 +6554,7 @@ if (WARN_ON(!devid && !fs_info)) return ERR_PTR(-EINVAL); - dev = __alloc_device(); + dev = __alloc_device(fs_info); if (IS_ERR(dev)) return dev; @@ -7049,7 +7100,6 @@ * otherwise we don't need it. */ mutex_lock(&uuid_mutex); - mutex_lock(&fs_info->chunk_mutex); /* * It is possible for mount and umount to race in such a way that @@ -7094,7 +7144,9 @@ } else if (found_key.type == BTRFS_CHUNK_ITEM_KEY) { struct btrfs_chunk *chunk; chunk = btrfs_item_ptr(leaf, slot, struct btrfs_chunk); + mutex_lock(&fs_info->chunk_mutex); ret = read_one_chunk(&found_key, leaf, chunk); + mutex_unlock(&fs_info->chunk_mutex); if (ret) goto error; } @@ -7124,7 +7176,6 @@ } ret = 0; error: - mutex_unlock(&fs_info->chunk_mutex); mutex_unlock(&uuid_mutex); btrfs_free_path(path); --- linux-5.8.0.orig/fs/btrfs/volumes.h +++ linux-5.8.0/fs/btrfs/volumes.h @@ -50,6 +50,7 @@ #define BTRFS_DEV_STATE_MISSING (2) #define BTRFS_DEV_STATE_REPLACE_TGT (3) #define BTRFS_DEV_STATE_FLUSH_SENT (4) +#define BTRFS_DEV_STATE_NO_READA (5) struct btrfs_device { struct list_head dev_list; /* device_list_mutex */ @@ -573,6 +574,9 @@ void btrfs_reset_fs_info_ptr(struct btrfs_fs_info *fs_info); bool btrfs_check_rw_degradable(struct btrfs_fs_info *fs_info, struct btrfs_device *failing_dev); +void btrfs_scratch_superblocks(struct btrfs_fs_info *fs_info, + struct block_device *bdev, + const char *device_path); int btrfs_bg_type_to_factor(u64 flags); const char *btrfs_bg_type_to_raid_name(u64 flags); --- linux-5.8.0.orig/fs/btrfs/xattr.c +++ linux-5.8.0/fs/btrfs/xattr.c @@ -213,9 +213,11 @@ } out: btrfs_free_path(path); - if (!ret) + if (!ret) { set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); + clear_bit(BTRFS_INODE_NO_XATTRS, &BTRFS_I(inode)->runtime_flags); + } return ret; } @@ -227,11 +229,33 @@ { struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_trans_handle *trans; + const bool start_trans = (current->journal_info == NULL); int ret; - trans = btrfs_start_transaction(root, 2); - if (IS_ERR(trans)) - return PTR_ERR(trans); + if (start_trans) { + /* + * 1 unit for inserting/updating/deleting the xattr + * 1 unit for the inode item update + */ + trans = btrfs_start_transaction(root, 2); + if (IS_ERR(trans)) + return PTR_ERR(trans); + } else { + /* + * This can happen when smack is enabled and a directory is being + * created. It happens through d_instantiate_new(), which calls + * smack_d_instantiate(), which in turn calls __vfs_setxattr() to + * set the transmute xattr (XATTR_NAME_SMACKTRANSMUTE) on the + * inode. We have already reserved space for the xattr and inode + * update at btrfs_mkdir(), so just use the transaction handle. + * We don't join or start a transaction, as that will reset the + * block_rsv of the handle and trigger a warning for the start + * case. + */ + ASSERT(strncmp(name, XATTR_SECURITY_PREFIX, + XATTR_SECURITY_PREFIX_LEN) == 0); + trans = current->journal_info; + } ret = btrfs_setxattr(trans, inode, name, value, size, flags); if (ret) @@ -242,7 +266,8 @@ ret = btrfs_update_inode(trans, root, inode); BUG_ON(ret); out: - btrfs_end_transaction(trans); + if (start_trans) + btrfs_end_transaction(trans); return ret; } --- linux-5.8.0.orig/fs/buffer.c +++ linux-5.8.0/fs/buffer.c @@ -2772,16 +2772,6 @@ /* Is the page fully outside i_size? (truncate in progress) */ offset = i_size & (PAGE_SIZE-1); if (page->index >= end_index+1 || !offset) { - /* - * The page may have dirty, unmapped buffers. For example, - * they may have been added in ext3_writepage(). Make them - * freeable here, so the page does not leak. - */ -#if 0 - /* Not really sure about this - do we need this ? */ - if (page->mapping->a_ops->invalidatepage) - page->mapping->a_ops->invalidatepage(page, offset); -#endif unlock_page(page); return 0; /* don't care */ } @@ -2976,12 +2966,6 @@ /* Is the page fully outside i_size? (truncate in progress) */ offset = i_size & (PAGE_SIZE-1); if (page->index >= end_index+1 || !offset) { - /* - * The page may have dirty, unmapped buffers. For example, - * they may have been added in ext3_writepage(). Make them - * freeable here, so the page does not leak. - */ - do_invalidatepage(page, 0, PAGE_SIZE); unlock_page(page); return 0; /* don't care */ } @@ -3160,6 +3144,15 @@ WARN_ON(atomic_read(&bh->b_count) < 1); lock_buffer(bh); if (test_clear_buffer_dirty(bh)) { + /* + * The bh should be mapped, but it might not be if the + * device was hot-removed. Not much we can do but fail the I/O. + */ + if (!buffer_mapped(bh)) { + unlock_buffer(bh); + return -EIO; + } + get_bh(bh); bh->b_end_io = end_buffer_write_sync; ret = submit_bh(REQ_OP_WRITE, op_flags, bh); --- linux-5.8.0.orig/fs/cachefiles/rdwr.c +++ linux-5.8.0/fs/cachefiles/rdwr.c @@ -121,7 +121,7 @@ _debug("reissue read"); ret = bmapping->a_ops->readpage(NULL, backpage); if (ret < 0) - goto unlock_discard; + goto discard; } /* but the page may have been read before the monitor was installed, so @@ -138,6 +138,7 @@ unlock_discard: unlock_page(backpage); +discard: spin_lock_irq(&object->work_lock); list_del(&monitor->op_link); spin_unlock_irq(&object->work_lock); @@ -412,7 +413,6 @@ inode = d_backing_inode(object->backer); ASSERT(S_ISREG(inode->i_mode)); - ASSERT(inode->i_mapping->a_ops->readpages); /* calculate the shift required to use bmap */ shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits; @@ -508,6 +508,8 @@ goto installed_new_backing_page; if (ret != -EEXIST) goto nomem; + put_page(newpage); + newpage = NULL; } /* we've installed a new backing page, so now we need @@ -712,7 +714,6 @@ inode = d_backing_inode(object->backer); ASSERT(S_ISREG(inode->i_mode)); - ASSERT(inode->i_mapping->a_ops->readpages); /* calculate the shift required to use bmap */ shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits; --- linux-5.8.0.orig/fs/ceph/addr.c +++ linux-5.8.0/fs/ceph/addr.c @@ -1523,7 +1523,7 @@ struct ceph_inode_info *ci = ceph_inode(inode); struct ceph_file_info *fi = vma->vm_file->private_data; struct page *pinned_page = NULL; - loff_t off = vmf->pgoff << PAGE_SHIFT; + loff_t off = (loff_t)vmf->pgoff << PAGE_SHIFT; int want, got, err; sigset_t oldset; vm_fault_t ret = VM_FAULT_SIGBUS; --- linux-5.8.0.orig/fs/ceph/caps.c +++ linux-5.8.0/fs/ceph/caps.c @@ -886,8 +886,8 @@ int have = ci->i_snap_caps; if ((have & mask) == mask) { - dout("__ceph_caps_issued_mask ino 0x%lx snap issued %s" - " (mask %s)\n", ci->vfs_inode.i_ino, + dout("__ceph_caps_issued_mask ino 0x%llx snap issued %s" + " (mask %s)\n", ceph_ino(&ci->vfs_inode), ceph_cap_string(have), ceph_cap_string(mask)); return 1; @@ -898,8 +898,8 @@ if (!__cap_is_valid(cap)) continue; if ((cap->issued & mask) == mask) { - dout("__ceph_caps_issued_mask ino 0x%lx cap %p issued %s" - " (mask %s)\n", ci->vfs_inode.i_ino, cap, + dout("__ceph_caps_issued_mask ino 0x%llx cap %p issued %s" + " (mask %s)\n", ceph_ino(&ci->vfs_inode), cap, ceph_cap_string(cap->issued), ceph_cap_string(mask)); if (touch) @@ -910,8 +910,8 @@ /* does a combination of caps satisfy mask? */ have |= cap->issued; if ((have & mask) == mask) { - dout("__ceph_caps_issued_mask ino 0x%lx combo issued %s" - " (mask %s)\n", ci->vfs_inode.i_ino, + dout("__ceph_caps_issued_mask ino 0x%llx combo issued %s" + " (mask %s)\n", ceph_ino(&ci->vfs_inode), ceph_cap_string(cap->issued), ceph_cap_string(mask)); if (touch) { @@ -1139,12 +1139,19 @@ { struct ceph_mds_session *session = cap->session; struct ceph_inode_info *ci = cap->ci; - struct ceph_mds_client *mdsc = - ceph_sb_to_client(ci->vfs_inode.i_sb)->mdsc; + struct ceph_mds_client *mdsc; int removed = 0; + /* 'ci' being NULL means the remove have already occurred */ + if (!ci) { + dout("%s: cap inode is NULL\n", __func__); + return; + } + dout("__ceph_remove_cap %p from %p\n", cap, &ci->vfs_inode); + mdsc = ceph_inode_to_client(&ci->vfs_inode)->mdsc; + /* remove from inode's cap rbtree, and clear auth cap */ rb_erase(&cap->ci_node, &ci->i_caps); if (ci->i_auth_cap == cap) { @@ -2870,7 +2877,7 @@ struct cap_wait cw; DEFINE_WAIT_FUNC(wait, woken_wake_function); - cw.ino = inode->i_ino; + cw.ino = ceph_ino(inode); cw.tgid = current->tgid; cw.need = need; cw.want = want; @@ -3073,10 +3080,12 @@ dout("put_cap_refs %p had %s%s%s\n", inode, ceph_cap_string(had), last ? " last" : "", put ? " put" : ""); - if (last && !skip_checking_caps) - ceph_check_caps(ci, 0, NULL); - else if (flushsnaps) - ceph_flush_snaps(ci, NULL); + if (!skip_checking_caps) { + if (last) + ceph_check_caps(ci, 0, NULL); + else if (flushsnaps) + ceph_flush_snaps(ci, NULL); + } if (wake) wake_up_all(&ci->i_cap_wq); while (put-- > 0) @@ -4062,7 +4071,7 @@ vino.snap, inode); mutex_lock(&session->s_mutex); - session->s_seq++; + inc_session_sequence(session); dout(" mds%d seq %lld cap seq %u\n", session->s_mds, session->s_seq, (unsigned)seq); --- linux-5.8.0.orig/fs/ceph/debugfs.c +++ linux-5.8.0/fs/ceph/debugfs.c @@ -212,7 +212,7 @@ { struct seq_file *s = p; - seq_printf(s, "0x%-17lx%-17s%-17s\n", inode->i_ino, + seq_printf(s, "0x%-17llx%-17s%-17s\n", ceph_ino(inode), ceph_cap_string(cap->issued), ceph_cap_string(cap->implemented)); return 0; @@ -257,7 +257,7 @@ spin_lock(&mdsc->caps_list_lock); list_for_each_entry(cw, &mdsc->cap_wait_list, list) { - seq_printf(s, "%-13d0x%-17lx%-17s%-17s\n", cw->tgid, cw->ino, + seq_printf(s, "%-13d0x%-17llx%-17s%-17s\n", cw->tgid, cw->ino, ceph_cap_string(cw->need), ceph_cap_string(cw->want)); } --- linux-5.8.0.orig/fs/ceph/dir.c +++ linux-5.8.0/fs/ceph/dir.c @@ -259,9 +259,7 @@ dentry, dentry, d_inode(dentry)); ctx->pos = di->offset; if (!dir_emit(ctx, dentry->d_name.name, - dentry->d_name.len, - ceph_translate_ino(dentry->d_sb, - d_inode(dentry)->i_ino), + dentry->d_name.len, ceph_present_inode(d_inode(dentry)), d_inode(dentry)->i_mode >> 12)) { dput(dentry); err = 0; @@ -324,18 +322,21 @@ /* always start with . and .. */ if (ctx->pos == 0) { dout("readdir off 0 -> '.'\n"); - if (!dir_emit(ctx, ".", 1, - ceph_translate_ino(inode->i_sb, inode->i_ino), + if (!dir_emit(ctx, ".", 1, ceph_present_inode(inode), inode->i_mode >> 12)) return 0; ctx->pos = 1; } if (ctx->pos == 1) { - ino_t ino = parent_ino(file->f_path.dentry); + u64 ino; + struct dentry *dentry = file->f_path.dentry; + + spin_lock(&dentry->d_lock); + ino = ceph_present_inode(dentry->d_parent->d_inode); + spin_unlock(&dentry->d_lock); + dout("readdir off 1 -> '..'\n"); - if (!dir_emit(ctx, "..", 2, - ceph_translate_ino(inode->i_sb, ino), - inode->i_mode >> 12)) + if (!dir_emit(ctx, "..", 2, ino, inode->i_mode >> 12)) return 0; ctx->pos = 2; } @@ -507,9 +508,6 @@ } for (; i < rinfo->dir_nr; i++) { struct ceph_mds_reply_dir_entry *rde = rinfo->dir_entries + i; - struct ceph_vino vino; - ino_t ino; - u32 ftype; BUG_ON(rde->offset < ctx->pos); @@ -519,13 +517,10 @@ rde->name_len, rde->name, &rde->inode.in); BUG_ON(!rde->inode.in); - ftype = le32_to_cpu(rde->inode.in->mode) >> 12; - vino.ino = le64_to_cpu(rde->inode.in->ino); - vino.snap = le64_to_cpu(rde->inode.in->snapid); - ino = ceph_vino_to_ino(vino); if (!dir_emit(ctx, rde->name, rde->name_len, - ceph_translate_ino(inode->i_sb, ino), ftype)) { + ceph_present_ino(inode->i_sb, le64_to_cpu(rde->inode.in->ino)), + le32_to_cpu(rde->inode.in->mode) >> 12)) { dout("filldir stopping us...\n"); return 0; } @@ -930,6 +925,10 @@ req->r_num_caps = 2; req->r_dentry_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL; req->r_dentry_unless = CEPH_CAP_FILE_EXCL; + if (as_ctx.pagelist) { + req->r_pagelist = as_ctx.pagelist; + as_ctx.pagelist = NULL; + } err = ceph_mdsc_do_request(mdsc, dir, req); if (!err && !req->r_reply_info.head->is_dentry) err = ceph_handle_notrace_create(dir, dentry); @@ -1157,7 +1156,7 @@ if (try_async && op == CEPH_MDS_OP_UNLINK && (req->r_dir_caps = get_caps_for_async_unlink(dir, dentry))) { - dout("async unlink on %lu/%.*s caps=%s", dir->i_ino, + dout("async unlink on %llu/%.*s caps=%s", ceph_ino(dir), dentry->d_name.len, dentry->d_name.name, ceph_cap_string(req->r_dir_caps)); set_bit(CEPH_MDS_R_ASYNC, &req->r_req_flags); --- linux-5.8.0.orig/fs/ceph/file.c +++ linux-5.8.0/fs/ceph/file.c @@ -630,8 +630,8 @@ } else { struct dentry *dn; - dout("%s d_adding new inode 0x%llx to 0x%lx/%s\n", __func__, - vino.ino, dir->i_ino, dentry->d_name.name); + dout("%s d_adding new inode 0x%llx to 0x%llx/%s\n", __func__, + vino.ino, ceph_ino(dir), dentry->d_name.name); ceph_dir_clear_ordered(dir); ceph_init_inode_acls(inode, as_ctx); if (inode->i_state & I_NEW) { @@ -1538,6 +1538,7 @@ struct inode *inode = file_inode(filp); struct ceph_inode_info *ci = ceph_inode(inode); struct page *pinned_page = NULL; + bool direct_lock = iocb->ki_flags & IOCB_DIRECT; ssize_t ret; int want, got = 0; int retry_op = 0, read = 0; @@ -1546,7 +1547,7 @@ dout("aio_read %p %llx.%llx %llu~%u trying to get caps on %p\n", inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, inode); - if (iocb->ki_flags & IOCB_DIRECT) + if (direct_lock) ceph_start_io_direct(inode); else ceph_start_io_read(inode); @@ -1603,7 +1604,7 @@ } ceph_put_cap_refs(ci, got); - if (iocb->ki_flags & IOCB_DIRECT) + if (direct_lock) ceph_end_io_direct(inode); else ceph_end_io_read(inode); @@ -2506,6 +2507,7 @@ .mmap = ceph_mmap, .fsync = ceph_fsync, .lock = ceph_lock, + .setlease = simple_nosetlease, .flock = ceph_flock, .splice_read = generic_file_splice_read, .splice_write = iter_file_splice_write, --- linux-5.8.0.orig/fs/ceph/inode.c +++ linux-5.8.0/fs/ceph/inode.c @@ -41,8 +41,10 @@ */ static int ceph_set_ino_cb(struct inode *inode, void *data) { - ceph_inode(inode)->i_vino = *(struct ceph_vino *)data; - inode->i_ino = ceph_vino_to_ino(*(struct ceph_vino *)data); + struct ceph_inode_info *ci = ceph_inode(inode); + + ci->i_vino = *(struct ceph_vino *)data; + inode->i_ino = ceph_vino_to_ino_t(ci->i_vino); inode_set_iversion_raw(inode, 0); return 0; } @@ -50,17 +52,14 @@ struct inode *ceph_get_inode(struct super_block *sb, struct ceph_vino vino) { struct inode *inode; - ino_t t = ceph_vino_to_ino(vino); - inode = iget5_locked(sb, t, ceph_ino_compare, ceph_set_ino_cb, &vino); + inode = iget5_locked(sb, (unsigned long)vino.ino, ceph_ino_compare, + ceph_set_ino_cb, &vino); if (!inode) return ERR_PTR(-ENOMEM); - if (inode->i_state & I_NEW) - dout("get_inode created new inode %p %llx.%llx ino %llx\n", - inode, ceph_vinop(inode), (u64)inode->i_ino); - dout("get_inode on %lu=%llx.%llx got %p\n", inode->i_ino, vino.ino, - vino.snap, inode); + dout("get_inode on %llu=%llx.%llx got %p new %d\n", ceph_present_inode(inode), + ceph_vinop(inode), inode, !!(inode->i_state & I_NEW)); return inode; } @@ -1332,6 +1331,8 @@ in, ceph_vinop(in)); if (in->i_state & I_NEW) discard_new_inode(in); + else + iput(in); goto done; } req->r_target_inode = in; @@ -2378,7 +2379,7 @@ } generic_fillattr(inode, stat); - stat->ino = ceph_translate_ino(inode->i_sb, inode->i_ino); + stat->ino = ceph_present_inode(inode); /* * btime on newly-allocated inodes is 0, so if this is still set to --- linux-5.8.0.orig/fs/ceph/mds_client.c +++ linux-5.8.0/fs/ceph/mds_client.c @@ -1785,8 +1785,7 @@ /* * send a session close request */ -static int request_close_session(struct ceph_mds_client *mdsc, - struct ceph_mds_session *session) +static int request_close_session(struct ceph_mds_session *session) { struct ceph_msg *msg; @@ -1809,7 +1808,7 @@ if (session->s_state >= CEPH_MDS_SESSION_CLOSING) return 0; session->s_state = CEPH_MDS_SESSION_CLOSING; - return request_close_session(mdsc, session); + return request_close_session(session); } static bool drop_negative_children(struct dentry *dentry) @@ -3279,8 +3278,10 @@ goto bad; /* version >= 3, feature bits */ ceph_decode_32_safe(&p, end, len, bad); - ceph_decode_64_safe(&p, end, features, bad); - p += len - sizeof(features); + if (len) { + ceph_decode_64_safe(&p, end, features, bad); + p += len - sizeof(features); + } } mutex_lock(&mdsc->mutex); @@ -3529,6 +3530,39 @@ return err; } +static struct dentry* d_find_primary(struct inode *inode) +{ + struct dentry *alias, *dn = NULL; + + if (hlist_empty(&inode->i_dentry)) + return NULL; + + spin_lock(&inode->i_lock); + if (hlist_empty(&inode->i_dentry)) + goto out_unlock; + + if (S_ISDIR(inode->i_mode)) { + alias = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias); + if (!IS_ROOT(alias)) + dn = dget(alias); + goto out_unlock; + } + + hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) { + spin_lock(&alias->d_lock); + if (!d_unhashed(alias) && + (ceph_dentry(alias)->flags & CEPH_DENTRY_PRIMARY_LINK)) { + dn = dget_dlock(alias); + } + spin_unlock(&alias->d_lock); + if (dn) + break; + } +out_unlock: + spin_unlock(&inode->i_lock); + return dn; +} + /* * Encode information about a cap for a reconnect with the MDS. */ @@ -3542,13 +3576,32 @@ struct ceph_inode_info *ci = cap->ci; struct ceph_reconnect_state *recon_state = arg; struct ceph_pagelist *pagelist = recon_state->pagelist; - int err; + struct dentry *dentry; + char *path; + int pathlen, err; + u64 pathbase; u64 snap_follows; dout(" adding %p ino %llx.%llx cap %p %lld %s\n", inode, ceph_vinop(inode), cap, cap->cap_id, ceph_cap_string(cap->issued)); + dentry = d_find_primary(inode); + if (dentry) { + /* set pathbase to parent dir when msg_version >= 2 */ + path = ceph_mdsc_build_path(dentry, &pathlen, &pathbase, + recon_state->msg_version >= 2); + dput(dentry); + if (IS_ERR(path)) { + err = PTR_ERR(path); + goto out_err; + } + } else { + path = NULL; + pathlen = 0; + pathbase = 0; + } + spin_lock(&ci->i_ceph_lock); cap->seq = 0; /* reset cap seq */ cap->issue_seq = 0; /* and issue_seq */ @@ -3569,7 +3622,7 @@ rec.v2.wanted = cpu_to_le32(__ceph_caps_wanted(ci)); rec.v2.issued = cpu_to_le32(cap->issued); rec.v2.snaprealm = cpu_to_le64(ci->i_snap_realm->ino); - rec.v2.pathbase = 0; + rec.v2.pathbase = cpu_to_le64(pathbase); rec.v2.flock_len = (__force __le32) ((ci->i_ceph_flags & CEPH_I_ERROR_FILELOCK) ? 0 : 1); } else { @@ -3580,7 +3633,7 @@ ceph_encode_timespec64(&rec.v1.mtime, &inode->i_mtime); ceph_encode_timespec64(&rec.v1.atime, &inode->i_atime); rec.v1.snaprealm = cpu_to_le64(ci->i_snap_realm->ino); - rec.v1.pathbase = 0; + rec.v1.pathbase = cpu_to_le64(pathbase); } if (list_empty(&ci->i_cap_snaps)) { @@ -3642,7 +3695,7 @@ sizeof(struct ceph_filelock); rec.v2.flock_len = cpu_to_le32(struct_len); - struct_len += sizeof(u32) + sizeof(rec.v2); + struct_len += sizeof(u32) + pathlen + sizeof(rec.v2); if (struct_v >= 2) struct_len += sizeof(u64); /* snap_follows */ @@ -3666,7 +3719,7 @@ ceph_pagelist_encode_8(pagelist, 1); ceph_pagelist_encode_32(pagelist, struct_len); } - ceph_pagelist_encode_string(pagelist, NULL, 0); + ceph_pagelist_encode_string(pagelist, path, pathlen); ceph_pagelist_append(pagelist, &rec, sizeof(rec.v2)); ceph_locks_to_pagelist(flocks, pagelist, num_fcntl_locks, num_flock_locks); @@ -3675,39 +3728,20 @@ out_freeflocks: kfree(flocks); } else { - u64 pathbase = 0; - int pathlen = 0; - char *path = NULL; - struct dentry *dentry; - - dentry = d_find_alias(inode); - if (dentry) { - path = ceph_mdsc_build_path(dentry, - &pathlen, &pathbase, 0); - dput(dentry); - if (IS_ERR(path)) { - err = PTR_ERR(path); - goto out_err; - } - rec.v1.pathbase = cpu_to_le64(pathbase); - } - err = ceph_pagelist_reserve(pagelist, sizeof(u64) + sizeof(u32) + pathlen + sizeof(rec.v1)); - if (err) { - goto out_freepath; - } + if (err) + goto out_err; ceph_pagelist_encode_64(pagelist, ceph_ino(inode)); ceph_pagelist_encode_string(pagelist, path, pathlen); ceph_pagelist_append(pagelist, &rec, sizeof(rec.v1)); -out_freepath: - ceph_mdsc_free_path(path, pathlen); } out_err: - if (err >= 0) + ceph_mdsc_free_path(path, pathlen); + if (!err) recon_state->nr_caps++; return err; } @@ -4111,7 +4145,7 @@ dname.len, dname.name); mutex_lock(&session->s_mutex); - session->s_seq++; + inc_session_sequence(session); if (!inode) { dout("handle_lease no inode %llx\n", vino.ino); @@ -4263,6 +4297,50 @@ ceph_force_reconnect(fsc->sb); } +bool check_session_state(struct ceph_mds_session *s) +{ + switch (s->s_state) { + case CEPH_MDS_SESSION_OPEN: + if (s->s_ttl && time_after(jiffies, s->s_ttl)) { + s->s_state = CEPH_MDS_SESSION_HUNG; + pr_info("mds%d hung\n", s->s_mds); + } + break; + case CEPH_MDS_SESSION_CLOSING: + /* Should never reach this when we're unmounting */ + WARN_ON_ONCE(true); + fallthrough; + case CEPH_MDS_SESSION_NEW: + case CEPH_MDS_SESSION_RESTARTING: + case CEPH_MDS_SESSION_CLOSED: + case CEPH_MDS_SESSION_REJECTED: + return false; + } + + return true; +} + +/* + * If the sequence is incremented while we're waiting on a REQUEST_CLOSE reply, + * then we need to retransmit that request. + */ +void inc_session_sequence(struct ceph_mds_session *s) +{ + lockdep_assert_held(&s->s_mutex); + + s->s_seq++; + + if (s->s_state == CEPH_MDS_SESSION_CLOSING) { + int ret; + + dout("resending session close request for mds%d\n", s->s_mds); + ret = request_close_session(s); + if (ret < 0) + pr_err("unable to close session to mds%d: %d\n", + s->s_mds, ret); + } +} + /* * delayed work -- periodically trim expired leases, renew caps with mds */ @@ -4283,6 +4361,9 @@ dout("mdsc delayed_work\n"); + if (mdsc->stopping) + return; + mutex_lock(&mdsc->mutex); renew_interval = mdsc->mdsmap->m_session_timeout >> 2; renew_caps = time_after_eq(jiffies, HZ*renew_interval + @@ -4294,23 +4375,8 @@ struct ceph_mds_session *s = __ceph_lookup_mds_session(mdsc, i); if (!s) continue; - if (s->s_state == CEPH_MDS_SESSION_CLOSING) { - dout("resending session close request for mds%d\n", - s->s_mds); - request_close_session(mdsc, s); - ceph_put_mds_session(s); - continue; - } - if (s->s_ttl && time_after(jiffies, s->s_ttl)) { - if (s->s_state == CEPH_MDS_SESSION_OPEN) { - s->s_state = CEPH_MDS_SESSION_HUNG; - pr_info("mds%d hung\n", s->s_mds); - } - } - if (s->s_state == CEPH_MDS_SESSION_NEW || - s->s_state == CEPH_MDS_SESSION_RESTARTING || - s->s_state == CEPH_MDS_SESSION_REJECTED) { - /* this mds is failed or recovering, just wait */ + + if (!check_session_state(s)) { ceph_put_mds_session(s); continue; } @@ -4359,7 +4425,6 @@ goto err_mdsc; } - fsc->mdsc = mdsc; init_completion(&mdsc->safe_umount_waiters); init_waitqueue_head(&mdsc->session_close_wq); INIT_LIST_HEAD(&mdsc->waiting_for_map); @@ -4414,6 +4479,8 @@ strscpy(mdsc->nodename, utsname()->nodename, sizeof(mdsc->nodename)); + + fsc->mdsc = mdsc; return 0; err_mdsmap: @@ -4657,7 +4724,16 @@ static void ceph_mdsc_stop(struct ceph_mds_client *mdsc) { dout("stop\n"); - cancel_delayed_work_sync(&mdsc->delayed_work); /* cancel timer */ + /* + * Make sure the delayed work stopped before releasing + * the resources. + * + * Because the cancel_delayed_work_sync() will only + * guarantee that the work finishes executing. But the + * delayed work will re-arm itself again after that. + */ + flush_delayed_work(&mdsc->delayed_work); + if (mdsc->mdsmap) ceph_mdsmap_destroy(mdsc->mdsmap); kfree(mdsc->sessions); --- linux-5.8.0.orig/fs/ceph/mds_client.h +++ linux-5.8.0/fs/ceph/mds_client.h @@ -18,6 +18,7 @@ #include #include "metric.h" +#include "super.h" /* The first 8 bits are reserved for old ceph releases */ enum ceph_feature_type { @@ -369,7 +370,7 @@ struct cap_wait { struct list_head list; - unsigned long ino; + u64 ino; pid_t tgid; int need; int want; @@ -476,6 +477,9 @@ extern const char *ceph_mds_op_name(int op); +extern bool check_session_state(struct ceph_mds_session *s); +void inc_session_sequence(struct ceph_mds_session *s); + extern struct ceph_mds_session * __ceph_lookup_mds_session(struct ceph_mds_client *, int mds); --- linux-5.8.0.orig/fs/ceph/mdsmap.c +++ linux-5.8.0/fs/ceph/mdsmap.c @@ -245,8 +245,8 @@ } if (state <= 0) { - pr_warn("mdsmap_decode got incorrect state(%s)\n", - ceph_mds_state_name(state)); + dout("mdsmap_decode got incorrect state(%s)\n", + ceph_mds_state_name(state)); continue; } --- linux-5.8.0.orig/fs/ceph/quota.c +++ linux-5.8.0/fs/ceph/quota.c @@ -23,12 +23,12 @@ { struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc; struct super_block *sb = mdsc->fsc->sb; + struct inode *root = d_inode(sb->s_root); if (atomic64_read(&mdsc->quotarealms_count) > 0) return true; /* if root is the real CephFS root, we don't have quota realms */ - if (sb->s_root->d_inode && - (sb->s_root->d_inode->i_ino == CEPH_INO_ROOT)) + if (root && ceph_ino(root) == CEPH_INO_ROOT) return false; /* otherwise, we can't know for sure */ return true; @@ -53,7 +53,7 @@ /* increment msg sequence number */ mutex_lock(&session->s_mutex); - session->s_seq++; + inc_session_sequence(session); mutex_unlock(&session->s_mutex); /* lookup inode */ --- linux-5.8.0.orig/fs/ceph/snap.c +++ linux-5.8.0/fs/ceph/snap.c @@ -873,7 +873,7 @@ ceph_snap_op_name(op), split, trace_len); mutex_lock(&session->s_mutex); - session->s_seq++; + inc_session_sequence(session); mutex_unlock(&session->s_mutex); down_write(&mdsc->snap_rwsem); --- linux-5.8.0.orig/fs/ceph/super.h +++ linux-5.8.0/fs/ceph/super.h @@ -457,15 +457,7 @@ return ceph_inode(inode)->i_vino; } -/* - * ino_t is <64 bits on many architectures, blech. - * - * i_ino (kernel inode) st_ino (userspace) - * i386 32 32 - * x86_64+ino32 64 32 - * x86_64 64 64 - */ -static inline u32 ceph_ino_to_ino32(__u64 vino) +static inline u32 ceph_ino_to_ino32(u64 vino) { u32 ino = vino & 0xffffffff; ino ^= vino >> 32; @@ -475,34 +467,17 @@ } /* - * kernel i_ino value + * Inode numbers in cephfs are 64 bits, but inode->i_ino is 32-bits on + * some arches. We generally do not use this value inside the ceph driver, but + * we do want to set it to something, so that generic vfs code has an + * appropriate value for tracepoints and the like. */ -static inline ino_t ceph_vino_to_ino(struct ceph_vino vino) +static inline ino_t ceph_vino_to_ino_t(struct ceph_vino vino) { -#if BITS_PER_LONG == 32 - return ceph_ino_to_ino32(vino.ino); -#else + if (sizeof(ino_t) == sizeof(u32)) + return ceph_ino_to_ino32(vino.ino); return (ino_t)vino.ino; -#endif -} - -/* - * user-visible ino (stat, filldir) - */ -#if BITS_PER_LONG == 32 -static inline ino_t ceph_translate_ino(struct super_block *sb, ino_t ino) -{ - return ino; -} -#else -static inline ino_t ceph_translate_ino(struct super_block *sb, ino_t ino) -{ - if (ceph_test_mount_opt(ceph_sb_to_client(sb), INO32)) - ino = ceph_ino_to_ino32(ino); - return ino; } -#endif - /* for printf-style formatting */ #define ceph_vinop(i) ceph_inode(i)->i_vino.ino, ceph_inode(i)->i_vino.snap @@ -511,11 +486,34 @@ { return ceph_inode(inode)->i_vino.ino; } + static inline u64 ceph_snap(struct inode *inode) { return ceph_inode(inode)->i_vino.snap; } +/** + * ceph_present_ino - format an inode number for presentation to userland + * @sb: superblock where the inode lives + * @ino: inode number to (possibly) convert + * + * If the user mounted with the ino32 option, then the 64-bit value needs + * to be converted to something that can fit inside 32 bits. Note that + * internal kernel code never uses this value, so this is entirely for + * userland consumption. + */ +static inline u64 ceph_present_ino(struct super_block *sb, u64 ino) +{ + if (unlikely(ceph_test_mount_opt(ceph_sb_to_client(sb), INO32))) + return ceph_ino_to_ino32(ino); + return ino; +} + +static inline u64 ceph_present_inode(struct inode *inode) +{ + return ceph_present_ino(inode->i_sb, ceph_ino(inode)); +} + static inline int ceph_ino_compare(struct inode *inode, void *data) { struct ceph_vino *pvino = (struct ceph_vino *)data; @@ -524,11 +522,16 @@ ci->i_vino.snap == pvino->snap; } + static inline struct inode *ceph_find_inode(struct super_block *sb, struct ceph_vino vino) { - ino_t t = ceph_vino_to_ino(vino); - return ilookup5(sb, t, ceph_ino_compare, &vino); + /* + * NB: The hashval will be run through the fs/inode.c hash function + * anyway, so there is no need to squash the inode number down to + * 32-bits first. Just use low-order bits on arches with 32-bit long. + */ + return ilookup5(sb, (unsigned long)vino.ino, ceph_ino_compare, &vino); } --- linux-5.8.0.orig/fs/ceph/xattr.c +++ linux-5.8.0/fs/ceph/xattr.c @@ -1272,12 +1272,16 @@ void ceph_release_acl_sec_ctx(struct ceph_acl_sec_ctx *as_ctx) { +#ifdef CONFIG_CEPH_FS_SECURITY_LABEL + struct lsmcontext scaff; /* scaffolding */ +#endif #ifdef CONFIG_CEPH_FS_POSIX_ACL posix_acl_release(as_ctx->acl); posix_acl_release(as_ctx->default_acl); #endif #ifdef CONFIG_CEPH_FS_SECURITY_LABEL - security_release_secctx(as_ctx->sec_ctx, as_ctx->sec_ctxlen); + lsmcontext_init(&scaff, as_ctx->sec_ctx, as_ctx->sec_ctxlen, 0); + security_release_secctx(&scaff); #endif if (as_ctx->pagelist) ceph_pagelist_release(as_ctx->pagelist); --- linux-5.8.0.orig/fs/cifs/asn1.c +++ linux-5.8.0/fs/cifs/asn1.c @@ -530,8 +530,8 @@ return 0; } else if ((cls != ASN1_CTX) || (con != ASN1_CON) || (tag != ASN1_EOC)) { - cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p (%d) exit 0\n", - cls, con, tag, end, *end); + cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p exit 0\n", + cls, con, tag, end); return 0; } @@ -541,8 +541,8 @@ return 0; } else if ((cls != ASN1_UNI) || (con != ASN1_CON) || (tag != ASN1_SEQ)) { - cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p (%d) exit 1\n", - cls, con, tag, end, *end); + cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p exit 1\n", + cls, con, tag, end); return 0; } @@ -552,8 +552,8 @@ return 0; } else if ((cls != ASN1_CTX) || (con != ASN1_CON) || (tag != ASN1_EOC)) { - cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p (%d) exit 0\n", - cls, con, tag, end, *end); + cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p exit 0\n", + cls, con, tag, end); return 0; } @@ -564,8 +564,8 @@ return 0; } else if ((cls != ASN1_UNI) || (con != ASN1_CON) || (tag != ASN1_SEQ)) { - cifs_dbg(FYI, "cls = %d con = %d tag = %d end = %p (%d) exit 1\n", - cls, con, tag, end, *end); + cifs_dbg(FYI, "cls = %d con = %d tag = %d sequence_end = %p exit 1\n", + cls, con, tag, sequence_end); return 0; } --- linux-5.8.0.orig/fs/cifs/cifs_unicode.c +++ linux-5.8.0/fs/cifs/cifs_unicode.c @@ -488,7 +488,13 @@ else if (map_chars == SFM_MAP_UNI_RSVD) { bool end_of_string; - if (i == srclen - 1) + /** + * Remap spaces and periods found at the end of every + * component of the path. The special cases of '.' and + * '..' do not need to be dealt with explicitly because + * they are addressed in namei.c:link_path_walk(). + **/ + if ((i == srclen - 1) || (source[i+1] == '\\')) end_of_string = true; else end_of_string = false; --- linux-5.8.0.orig/fs/cifs/cifsacl.c +++ linux-5.8.0/fs/cifs/cifsacl.c @@ -338,7 +338,7 @@ goto out_key_put; } -static int +int sid_to_id(struct cifs_sb_info *cifs_sb, struct cifs_sid *psid, struct cifs_fattr *fattr, uint sidtype) { @@ -359,7 +359,8 @@ return -EIO; } - if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UID_FROM_ACL) { + if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UID_FROM_ACL) || + (cifs_sb_master_tcon(cifs_sb)->posix_extensions)) { uint32_t unix_id; bool is_group; @@ -1265,6 +1266,7 @@ cifs_dbg(VFS, "%s: error %d getting sec desc\n", __func__, rc); } else if (mode_from_special_sid) { rc = parse_sec_desc(cifs_sb, pntsd, acllen, fattr, true); + kfree(pntsd); } else { /* get approximated mode from ACL */ rc = parse_sec_desc(cifs_sb, pntsd, acllen, fattr, false); --- linux-5.8.0.orig/fs/cifs/cifsfs.c +++ linux-5.8.0/fs/cifs/cifsfs.c @@ -71,6 +71,8 @@ bool linuxExtEnabled = true; bool lookupCacheEnabled = true; bool disable_legacy_dialects; /* false by default */ +bool enable_gcm_256; /* false by default, change when more servers support it */ +bool require_gcm_256; /* false by default */ unsigned int global_secflags = CIFSSEC_DEF; /* unsigned int ntlmv2_support = 0; */ unsigned int sign_CIFS_PDUs = 1; @@ -104,6 +106,12 @@ module_param(enable_oplocks, bool, 0644); MODULE_PARM_DESC(enable_oplocks, "Enable or disable oplocks. Default: y/Y/1"); +module_param(enable_gcm_256, bool, 0644); +MODULE_PARM_DESC(enable_gcm_256, "Enable requesting strongest (256 bit) GCM encryption. Default: n/N/0"); + +module_param(require_gcm_256, bool, 0644); +MODULE_PARM_DESC(require_gcm_256, "Require strongest (256 bit) GCM encryption. Default: n/N/0"); + module_param(disable_legacy_dialects, bool, 0644); MODULE_PARM_DESC(disable_legacy_dialects, "To improve security it may be " "helpful to restrict the ability to " @@ -278,7 +286,7 @@ rc = server->ops->queryfs(xid, tcon, cifs_sb, buf); free_xid(xid); - return 0; + return rc; } static long cifs_fallocate(struct file *file, int mode, loff_t off, loff_t len) --- linux-5.8.0.orig/fs/cifs/cifsglob.h +++ linux-5.8.0/fs/cifs/cifsglob.h @@ -268,7 +268,7 @@ /* verify the message */ int (*check_message)(char *, unsigned int, struct TCP_Server_Info *); bool (*is_oplock_break)(char *, struct TCP_Server_Info *); - int (*handle_cancelled_mid)(char *, struct TCP_Server_Info *); + int (*handle_cancelled_mid)(struct mid_q_entry *, struct TCP_Server_Info *); void (*downgrade_oplock)(struct TCP_Server_Info *server, struct cifsInodeInfo *cinode, __u32 oplock, unsigned int epoch, bool *purge_cache); @@ -510,6 +510,8 @@ struct fiemap_extent_info *, u64, u64); /* version specific llseek implementation */ loff_t (*llseek)(struct file *, struct cifs_tcon *, loff_t, int); + /* Check for STATUS_IO_TIMEOUT */ + bool (*is_status_io_timeout)(char *buf); }; struct smb_version_values { @@ -1008,8 +1010,8 @@ bool binding:1; /* are we binding the session? */ __u16 session_flags; __u8 smb3signingkey[SMB3_SIGN_KEY_SIZE]; - __u8 smb3encryptionkey[SMB3_SIGN_KEY_SIZE]; - __u8 smb3decryptionkey[SMB3_SIGN_KEY_SIZE]; + __u8 smb3encryptionkey[SMB3_ENC_DEC_KEY_SIZE]; + __u8 smb3decryptionkey[SMB3_ENC_DEC_KEY_SIZE]; __u8 preauth_sha_hash[SMB2_PREAUTH_HASH_SIZE]; __u8 binding_preauth_sha_hash[SMB2_PREAUTH_HASH_SIZE]; @@ -1791,10 +1793,11 @@ #define CIFS_NO_RSP_BUF 0x040 /* no response buffer required */ /* Type of request operation */ -#define CIFS_ECHO_OP 0x080 /* echo request */ -#define CIFS_OBREAK_OP 0x0100 /* oplock break request */ -#define CIFS_NEG_OP 0x0200 /* negotiate request */ -#define CIFS_OP_MASK 0x0380 /* mask request type */ +#define CIFS_ECHO_OP 0x080 /* echo request */ +#define CIFS_OBREAK_OP 0x0100 /* oplock break request */ +#define CIFS_NEG_OP 0x0200 /* negotiate request */ +#define CIFS_CP_CREATE_CLOSE_OP 0x0400 /* compound create+close request */ +#define CIFS_OP_MASK 0x0780 /* mask request type */ #define CIFS_HAS_CREDITS 0x0400 /* already has credits */ #define CIFS_TRANSFORM_REQ 0x0800 /* transform request before sending */ @@ -1954,6 +1957,8 @@ extern unsigned int global_secflags; /* if on, session setup sent with more secure ntlmssp2 challenge/resp */ extern unsigned int sign_CIFS_PDUs; /* enable smb packet signing */ +extern bool enable_gcm_256; /* allow optional negotiate of strongest signing (aes-gcm-256) */ +extern bool require_gcm_256; /* require use of strongest signing (aes-gcm-256) */ extern bool linuxExtEnabled;/*enable Linux/Unix CIFS extensions*/ extern unsigned int CIFSMaxBufSize; /* max size not including hdr */ extern unsigned int cifs_min_rcv; /* min size of big ntwrk buf pool */ --- linux-5.8.0.orig/fs/cifs/cifspdu.h +++ linux-5.8.0/fs/cifs/cifspdu.h @@ -147,6 +147,11 @@ */ #define SMB3_SIGN_KEY_SIZE (16) +/* + * Size of the smb3 encryption/decryption keys + */ +#define SMB3_ENC_DEC_KEY_SIZE (32) + #define CIFS_CLIENT_CHALLENGE_SIZE (8) #define CIFS_SERVER_CHALLENGE_SIZE (8) #define CIFS_HMAC_MD5_HASH_SIZE (16) --- linux-5.8.0.orig/fs/cifs/cifsproto.h +++ linux-5.8.0/fs/cifs/cifsproto.h @@ -208,6 +208,8 @@ extern int cifs_rename_pending_delete(const char *full_path, struct dentry *dentry, const unsigned int xid); +extern int sid_to_id(struct cifs_sb_info *cifs_sb, struct cifs_sid *psid, + struct cifs_fattr *fattr, uint sidtype); extern int cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, struct inode *inode, bool get_mode_from_special_sid, --- linux-5.8.0.orig/fs/cifs/connect.c +++ linux-5.8.0/fs/cifs/connect.c @@ -69,6 +69,9 @@ #define TLINK_ERROR_EXPIRE (1 * HZ) #define TLINK_IDLE_EXPIRE (600 * HZ) +/* Drop the connection to not overload the server */ +#define NUM_STATUS_IO_TIMEOUT 5 + enum { /* Mount options that take no arguments */ Opt_user_xattr, Opt_nouser_xattr, @@ -931,6 +934,8 @@ list_del_init(&server->tcp_ses_list); spin_unlock(&cifs_tcp_ses_lock); + cancel_delayed_work_sync(&server->echo); + spin_lock(&GlobalMid_Lock); server->tcpStatus = CifsExiting; spin_unlock(&GlobalMid_Lock); @@ -1116,7 +1121,7 @@ struct task_struct *task_to_wake = NULL; struct mid_q_entry *mids[MAX_COMPOUND]; char *bufs[MAX_COMPOUND]; - unsigned int noreclaim_flag; + unsigned int noreclaim_flag, num_io_timeout = 0; noreclaim_flag = memalloc_noreclaim_save(); cifs_dbg(FYI, "Demultiplex PID: %d\n", task_pid_nr(current)); @@ -1212,6 +1217,16 @@ continue; } + if (server->ops->is_status_io_timeout && + server->ops->is_status_io_timeout(buf)) { + num_io_timeout++; + if (num_io_timeout > NUM_STATUS_IO_TIMEOUT) { + cifs_reconnect(server); + num_io_timeout = 0; + continue; + } + } + server->lstrp = jiffies; for (i = 0; i < num_mids; i++) { @@ -2843,6 +2858,11 @@ tcp_ses->min_offload = volume_info->min_offload; tcp_ses->tcpStatus = CifsNeedNegotiate; + if ((volume_info->max_credits < 20) || (volume_info->max_credits > 60000)) + tcp_ses->max_credits = SMB2_MAX_CREDITS_AVAILABLE; + else + tcp_ses->max_credits = volume_info->max_credits; + tcp_ses->nr_targets = 1; tcp_ses->ignore_signature = volume_info->ignore_signature; /* thread spawned, put it on the list */ @@ -3594,7 +3614,10 @@ */ tcon->retry = volume_info->retry; tcon->nocase = volume_info->nocase; - tcon->nohandlecache = volume_info->nohandlecache; + if (ses->server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING) + tcon->nohandlecache = volume_info->nohandlecache; + else + tcon->nohandlecache = 1; tcon->nodelete = volume_info->nodelete; tcon->local_lease = volume_info->local_lease; INIT_LIST_HEAD(&tcon->pending_opens); @@ -4279,11 +4302,6 @@ *nserver = server; - if ((vol->max_credits < 20) || (vol->max_credits > 60000)) - server->max_credits = SMB2_MAX_CREDITS_AVAILABLE; - else - server->max_credits = vol->max_credits; - /* get a reference to a SMB session */ ses = cifs_get_smb_ses(server, vol); if (IS_ERR(ses)) { --- linux-5.8.0.orig/fs/cifs/dfs_cache.c +++ linux-5.8.0/fs/cifs/dfs_cache.c @@ -1257,7 +1257,8 @@ vi = find_vol(fullpath); spin_unlock(&vol_list_lock); - kref_put(&vi->refcnt, vol_release); + if (!IS_ERR(vi)) + kref_put(&vi->refcnt, vol_release); } /** --- linux-5.8.0.orig/fs/cifs/dir.c +++ linux-5.8.0/fs/cifs/dir.c @@ -736,6 +736,7 @@ cifs_d_revalidate(struct dentry *direntry, unsigned int flags) { struct inode *inode; + int rc; if (flags & LOOKUP_RCU) return -ECHILD; @@ -745,8 +746,25 @@ if ((flags & LOOKUP_REVAL) && !CIFS_CACHE_READ(CIFS_I(inode))) CIFS_I(inode)->time = 0; /* force reval */ - if (cifs_revalidate_dentry(direntry)) - return 0; + rc = cifs_revalidate_dentry(direntry); + if (rc) { + cifs_dbg(FYI, "cifs_revalidate_dentry failed with rc=%d", rc); + switch (rc) { + case -ENOENT: + case -ESTALE: + /* + * Those errors mean the dentry is invalid + * (file was deleted or recreated) + */ + return 0; + default: + /* + * Otherwise some unexpected error happened + * report it as-is to VFS layer + */ + return rc; + } + } else { /* * If the inode wasn't known to be a dfs entry when --- linux-5.8.0.orig/fs/cifs/file.c +++ linux-5.8.0/fs/cifs/file.c @@ -164,6 +164,7 @@ goto posix_open_ret; } } else { + cifs_revalidate_mapping(*pinode); cifs_fattr_to_inode(*pinode, &fattr); } --- linux-5.8.0.orig/fs/cifs/inode.c +++ linux-5.8.0/fs/cifs/inode.c @@ -1017,6 +1017,8 @@ if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MODE_FROM_SID) { rc = cifs_acl_to_fattr(cifs_sb, &fattr, *inode, true, full_path, fid); + if (rc == -EREMOTE) + rc = 0; if (rc) { cifs_dbg(FYI, "%s: Get mode from SID failed. rc=%d\n", __func__, rc); @@ -1025,6 +1027,8 @@ } else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { rc = cifs_acl_to_fattr(cifs_sb, &fattr, *inode, false, full_path, fid); + if (rc == -EREMOTE) + rc = 0; if (rc) { cifs_dbg(FYI, "%s: Getting ACL failed with error: %d\n", __func__, rc); @@ -2345,7 +2349,7 @@ * We need to be sure that all dirty pages are written and the server * has actual ctime, mtime and file length. */ - if ((request_mask & (STATX_CTIME | STATX_MTIME | STATX_SIZE)) && + if ((request_mask & (STATX_CTIME | STATX_MTIME | STATX_SIZE | STATX_BLOCKS)) && !CIFS_CACHE_READ(CIFS_I(inode)) && inode->i_mapping && inode->i_mapping->nrpages != 0) { rc = filemap_fdatawait(inode->i_mapping); @@ -2535,6 +2539,14 @@ if (rc == 0) { cifsInode->server_eof = attrs->ia_size; cifs_setsize(inode, attrs->ia_size); + /* + * i_blocks is not related to (i_size / i_blksize), but instead + * 512 byte (2**9) size is required for calculating num blocks. + * Until we can query the server for actual allocation size, + * this is best estimate we have for blocks allocated for a file + * Number of blocks must be rounded up so size 1 is not 0 blocks + */ + inode->i_blocks = (512 - 1 + attrs->ia_size) >> 9; /* * The man page of truncate says if the size changed, @@ -2881,13 +2893,18 @@ { struct cifs_sb_info *cifs_sb = CIFS_SB(direntry->d_sb); struct cifs_tcon *pTcon = cifs_sb_master_tcon(cifs_sb); + int rc, retries = 0; - if (pTcon->unix_ext) - return cifs_setattr_unix(direntry, attrs); - - return cifs_setattr_nounix(direntry, attrs); + do { + if (pTcon->unix_ext) + rc = cifs_setattr_unix(direntry, attrs); + else + rc = cifs_setattr_nounix(direntry, attrs); + retries++; + } while (is_retryable_error(rc) && retries < 2); /* BB: add cifs_setattr_legacy for really old servers */ + return rc; } #if 0 --- linux-5.8.0.orig/fs/cifs/readdir.c +++ linux-5.8.0/fs/cifs/readdir.c @@ -267,9 +267,8 @@ if (reparse_file_needs_reval(fattr)) fattr->cf_flags |= CIFS_FATTR_NEED_REVAL; - /* TODO map SIDs */ - fattr->cf_uid = cifs_sb->mnt_uid; - fattr->cf_gid = cifs_sb->mnt_gid; + sid_to_id(cifs_sb, &parsed.owner, fattr, SIDOWNER); + sid_to_id(cifs_sb, &parsed.group, fattr, SIDGROUP); } static void __dir_info_to_fattr(struct cifs_fattr *fattr, const void *info) --- linux-5.8.0.orig/fs/cifs/sess.c +++ linux-5.8.0/fs/cifs/sess.c @@ -224,6 +224,7 @@ vol.noautotune = ses->server->noautotune; vol.sockopt_tcp_nodelay = ses->server->tcp_nodelay; vol.echo_interval = ses->server->echo_interval / HZ; + vol.max_credits = ses->server->max_credits; /* * This will be used for encoding/decoding user/domain/pw --- linux-5.8.0.orig/fs/cifs/smb2glob.h +++ linux-5.8.0/fs/cifs/smb2glob.h @@ -58,6 +58,8 @@ #define SMB2_HMACSHA256_SIZE (32) #define SMB2_CMACAES_SIZE (16) #define SMB3_SIGNKEY_SIZE (16) +#define SMB3_GCM128_CRYPTKEY_SIZE (16) +#define SMB3_GCM256_CRYPTKEY_SIZE (32) /* Maximum buffer size value we can send with 1 credit */ #define SMB2_MAX_BUFFER_SIZE 65536 --- linux-5.8.0.orig/fs/cifs/smb2inode.c +++ linux-5.8.0/fs/cifs/smb2inode.c @@ -115,6 +115,7 @@ vars->oparms.fid = &fid; vars->oparms.reconnect = false; vars->oparms.mode = mode; + vars->oparms.cifs_sb = cifs_sb; rqst[num_rqst].rq_iov = &vars->open_iov[0]; rqst[num_rqst].rq_nvec = SMB2_CREATE_IOV_SIZE; @@ -357,6 +358,7 @@ if (cfile) goto after_close; /* Close */ + flags |= CIFS_CP_CREATE_CLOSE_OP; rqst[num_rqst].rq_iov = &vars->close_iov[0]; rqst[num_rqst].rq_nvec = 1; rc = SMB2_close_init(tcon, server, --- linux-5.8.0.orig/fs/cifs/smb2maperror.c +++ linux-5.8.0/fs/cifs/smb2maperror.c @@ -488,7 +488,7 @@ {STATUS_PIPE_CONNECTED, -EIO, "STATUS_PIPE_CONNECTED"}, {STATUS_PIPE_LISTENING, -EIO, "STATUS_PIPE_LISTENING"}, {STATUS_INVALID_READ_MODE, -EIO, "STATUS_INVALID_READ_MODE"}, - {STATUS_IO_TIMEOUT, -ETIMEDOUT, "STATUS_IO_TIMEOUT"}, + {STATUS_IO_TIMEOUT, -EAGAIN, "STATUS_IO_TIMEOUT"}, {STATUS_FILE_FORCED_CLOSED, -EIO, "STATUS_FILE_FORCED_CLOSED"}, {STATUS_PROFILING_NOT_STARTED, -EIO, "STATUS_PROFILING_NOT_STARTED"}, {STATUS_PROFILING_NOT_STOPPED, -EIO, "STATUS_PROFILING_NOT_STOPPED"}, --- linux-5.8.0.orig/fs/cifs/smb2misc.c +++ linux-5.8.0/fs/cifs/smb2misc.c @@ -94,6 +94,8 @@ /* SMB2_OPLOCK_BREAK */ cpu_to_le16(24) }; +#define SMB311_NEGPROT_BASE_SIZE (sizeof(struct smb2_sync_hdr) + sizeof(struct smb2_negotiate_rsp)) + static __u32 get_neg_ctxt_len(struct smb2_sync_hdr *hdr, __u32 len, __u32 non_ctxlen) { @@ -109,11 +111,17 @@ /* Make sure that negotiate contexts start after gss security blob */ nc_offset = le32_to_cpu(pneg_rsp->NegotiateContextOffset); - if (nc_offset < non_ctxlen) { - pr_warn_once("Invalid negotiate context offset\n"); + if (nc_offset + 1 < non_ctxlen) { + pr_warn_once("Invalid negotiate context offset %d\n", nc_offset); return 0; - } - size_of_pad_before_neg_ctxts = nc_offset - non_ctxlen; + } else if (nc_offset + 1 == non_ctxlen) { + cifs_dbg(FYI, "no SPNEGO security blob in negprot rsp\n"); + size_of_pad_before_neg_ctxts = 0; + } else if (non_ctxlen == SMB311_NEGPROT_BASE_SIZE) + /* has padding, but no SPNEGO blob */ + size_of_pad_before_neg_ctxts = nc_offset - non_ctxlen + 1; + else + size_of_pad_before_neg_ctxts = nc_offset - non_ctxlen; /* Verify that at least minimal negotiate contexts fit within frame */ if (len < nc_offset + (neg_count * sizeof(struct smb2_neg_context))) { @@ -508,15 +516,31 @@ kfree(lw); } +static void +smb2_queue_pending_open_break(struct tcon_link *tlink, __u8 *lease_key, + __le32 new_lease_state) +{ + struct smb2_lease_break_work *lw; + + lw = kmalloc(sizeof(struct smb2_lease_break_work), GFP_KERNEL); + if (!lw) { + cifs_put_tlink(tlink); + return; + } + + INIT_WORK(&lw->lease_break, cifs_ses_oplock_break); + lw->tlink = tlink; + lw->lease_state = new_lease_state; + memcpy(lw->lease_key, lease_key, SMB2_LEASE_KEY_SIZE); + queue_work(cifsiod_wq, &lw->lease_break); +} + static bool -smb2_tcon_has_lease(struct cifs_tcon *tcon, struct smb2_lease_break *rsp, - struct smb2_lease_break_work *lw) +smb2_tcon_has_lease(struct cifs_tcon *tcon, struct smb2_lease_break *rsp) { - bool found; __u8 lease_state; struct list_head *tmp; struct cifsFileInfo *cfile; - struct cifs_pending_open *open; struct cifsInodeInfo *cinode; int ack_req = le32_to_cpu(rsp->Flags & SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED); @@ -546,22 +570,29 @@ cfile->oplock_level = lease_state; cifs_queue_oplock_break(cfile); - kfree(lw); return true; } - found = false; + return false; +} + +static struct cifs_pending_open * +smb2_tcon_find_pending_open_lease(struct cifs_tcon *tcon, + struct smb2_lease_break *rsp) +{ + __u8 lease_state = le32_to_cpu(rsp->NewLeaseState); + int ack_req = le32_to_cpu(rsp->Flags & + SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED); + struct cifs_pending_open *open; + struct cifs_pending_open *found = NULL; + list_for_each_entry(open, &tcon->pending_opens, olist) { if (memcmp(open->lease_key, rsp->LeaseKey, SMB2_LEASE_KEY_SIZE)) continue; if (!found && ack_req) { - found = true; - memcpy(lw->lease_key, open->lease_key, - SMB2_LEASE_KEY_SIZE); - lw->tlink = cifs_get_tlink(open->tlink); - queue_work(cifsiod_wq, &lw->lease_break); + found = open; } cifs_dbg(FYI, "found in the pending open list\n"); @@ -582,14 +613,7 @@ struct TCP_Server_Info *server; struct cifs_ses *ses; struct cifs_tcon *tcon; - struct smb2_lease_break_work *lw; - - lw = kmalloc(sizeof(struct smb2_lease_break_work), GFP_KERNEL); - if (!lw) - return false; - - INIT_WORK(&lw->lease_break, cifs_ses_oplock_break); - lw->lease_state = rsp->NewLeaseState; + struct cifs_pending_open *open; cifs_dbg(FYI, "Checking for lease break\n"); @@ -607,9 +631,25 @@ spin_lock(&tcon->open_file_lock); cifs_stats_inc( &tcon->stats.cifs_stats.num_oplock_brks); - if (smb2_tcon_has_lease(tcon, rsp, lw)) { + if (smb2_tcon_has_lease(tcon, rsp)) { + spin_unlock(&tcon->open_file_lock); + spin_unlock(&cifs_tcp_ses_lock); + return true; + } + open = smb2_tcon_find_pending_open_lease(tcon, + rsp); + if (open) { + __u8 lease_key[SMB2_LEASE_KEY_SIZE]; + struct tcon_link *tlink; + + tlink = cifs_get_tlink(open->tlink); + memcpy(lease_key, open->lease_key, + SMB2_LEASE_KEY_SIZE); spin_unlock(&tcon->open_file_lock); spin_unlock(&cifs_tcp_ses_lock); + smb2_queue_pending_open_break(tlink, + lease_key, + rsp->NewLeaseState); return true; } spin_unlock(&tcon->open_file_lock); @@ -629,7 +669,6 @@ } } spin_unlock(&cifs_tcp_ses_lock); - kfree(lw); cifs_dbg(FYI, "Can not process lease break - no lease matched\n"); return false; } @@ -706,8 +745,8 @@ } } spin_unlock(&cifs_tcp_ses_lock); - cifs_dbg(FYI, "Can not process oplock break for non-existent connection\n"); - return false; + cifs_dbg(FYI, "No file id matched, oplock break ignored\n"); + return true; } void @@ -796,14 +835,14 @@ } int -smb2_handle_cancelled_mid(char *buffer, struct TCP_Server_Info *server) +smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server) { - struct smb2_sync_hdr *sync_hdr = (struct smb2_sync_hdr *)buffer; - struct smb2_create_rsp *rsp = (struct smb2_create_rsp *)buffer; + struct smb2_sync_hdr *sync_hdr = mid->resp_buf; + struct smb2_create_rsp *rsp = mid->resp_buf; struct cifs_tcon *tcon; int rc; - if (sync_hdr->Command != SMB2_CREATE || + if ((mid->optype & CIFS_CP_CREATE_CLOSE_OP) || sync_hdr->Command != SMB2_CREATE || sync_hdr->Status != STATUS_SUCCESS) return 0; --- linux-5.8.0.orig/fs/cifs/smb2ops.c +++ linux-5.8.0/fs/cifs/smb2ops.c @@ -262,7 +262,7 @@ } static struct mid_q_entry * -smb2_find_mid(struct TCP_Server_Info *server, char *buf) +__smb2_find_mid(struct TCP_Server_Info *server, char *buf, bool dequeue) { struct mid_q_entry *mid; struct smb2_sync_hdr *shdr = (struct smb2_sync_hdr *)buf; @@ -279,6 +279,10 @@ (mid->mid_state == MID_REQUEST_SUBMITTED) && (mid->command == shdr->Command)) { kref_get(&mid->refcount); + if (dequeue) { + list_del_init(&mid->qhead); + mid->mid_flags |= MID_DELETED; + } spin_unlock(&GlobalMid_Lock); return mid; } @@ -287,6 +291,18 @@ return NULL; } +static struct mid_q_entry * +smb2_find_mid(struct TCP_Server_Info *server, char *buf) +{ + return __smb2_find_mid(server, buf, false); +} + +static struct mid_q_entry * +smb2_find_dequeue_mid(struct TCP_Server_Info *server, char *buf) +{ + return __smb2_find_mid(server, buf, true); +} + static void smb2_dump_detail(void *buf, struct TCP_Server_Info *server) { @@ -459,7 +475,8 @@ goto out; } - if (bytes_left || p->Next) + /* Azure rounds the buffer size up 8, to a 16 byte boundary */ + if ((bytes_left > 8) || p->Next) cifs_dbg(VFS, "%s: incomplete interface info\n", __func__); @@ -1110,7 +1127,7 @@ struct TCP_Server_Info *server = cifs_pick_channel(ses); __le16 *utf16_path = NULL; int ea_name_len = strlen(ea_name); - int flags = 0; + int flags = CIFS_CP_CREATE_CLOSE_OP; int len; struct smb_rqst rqst[3]; int resp_buftype[3]; @@ -1208,7 +1225,7 @@ rqst[1].rq_iov = si_iov; rqst[1].rq_nvec = 1; - len = sizeof(ea) + ea_name_len + ea_value_len + 1; + len = sizeof(*ea) + ea_name_len + ea_value_len + 1; ea = kzalloc(len, GFP_KERNEL); if (ea == NULL) { rc = -ENOMEM; @@ -1488,7 +1505,7 @@ struct smb_query_info qi; struct smb_query_info __user *pqi; int rc = 0; - int flags = 0; + int flags = CIFS_CP_CREATE_CLOSE_OP; struct smb2_query_info_rsp *qi_rsp = NULL; struct smb2_ioctl_rsp *io_rsp = NULL; void *buffer = NULL; @@ -1953,6 +1970,7 @@ { int rc; unsigned int ret_data_len; + struct inode *inode; struct duplicate_extents_to_file dup_ext_buf; struct cifs_tcon *tcon = tlink_tcon(trgtfile->tlink); @@ -1969,10 +1987,21 @@ cifs_dbg(FYI, "Duplicate extents: src off %lld dst off %lld len %lld\n", src_off, dest_off, len); - rc = smb2_set_file_size(xid, tcon, trgtfile, dest_off + len, false); - if (rc) - goto duplicate_extents_out; + inode = d_inode(trgtfile->dentry); + if (inode->i_size < dest_off + len) { + rc = smb2_set_file_size(xid, tcon, trgtfile, dest_off + len, false); + if (rc) + goto duplicate_extents_out; + /* + * Although also could set plausible allocation size (i_blocks) + * here in addition to setting the file size, in reflink + * it is likely that the target file is sparse. Its allocation + * size will be queried on next revalidate, but it is important + * to make sure that file's cached size is updated immediately + */ + cifs_setsize(inode, dest_off + len); + } rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid, trgtfile->fid.volatile_fid, FSCTL_DUPLICATE_EXTENTS_TO_FILE, @@ -2346,6 +2375,17 @@ return true; } +static bool +smb2_is_status_io_timeout(char *buf) +{ + struct smb2_sync_hdr *shdr = (struct smb2_sync_hdr *)buf; + + if (shdr->Status == STATUS_IO_TIMEOUT) + return true; + else + return false; +} + static int smb2_oplock_response(struct cifs_tcon *tcon, struct cifs_fid *fid, struct cifsInodeInfo *cinode) @@ -2444,7 +2484,7 @@ { struct cifs_ses *ses = tcon->ses; struct TCP_Server_Info *server = cifs_pick_channel(ses); - int flags = 0; + int flags = CIFS_CP_CREATE_CLOSE_OP; struct smb_rqst rqst[3]; int resp_buftype[3]; struct kvec rsp_iov[3]; @@ -2842,7 +2882,7 @@ unsigned int sub_offset; unsigned int print_len; unsigned int print_offset; - int flags = 0; + int flags = CIFS_CP_CREATE_CLOSE_OP; struct smb_rqst rqst[3]; int resp_buftype[3]; struct kvec rsp_iov[3]; @@ -3072,7 +3112,12 @@ oparms.tcon = tcon; oparms.desired_access = READ_CONTROL; oparms.disposition = FILE_OPEN; - oparms.create_options = cifs_create_options(cifs_sb, 0); + /* + * When querying an ACL, even if the file is a symlink we want to open + * the source not the target, and so the protocol requires that the + * client specify this flag when opening a reparse point + */ + oparms.create_options = cifs_create_options(cifs_sb, 0) | OPEN_REPARSE_POINT; oparms.fid = &fid; oparms.reconnect = false; @@ -3801,10 +3846,11 @@ tr_hdr->ProtocolId = SMB2_TRANSFORM_PROTO_NUM; tr_hdr->OriginalMessageSize = cpu_to_le32(orig_len); tr_hdr->Flags = cpu_to_le16(0x01); - if (cipher_type == SMB2_ENCRYPTION_AES128_GCM) - get_random_bytes(&tr_hdr->Nonce, SMB3_AES128GCM_NONCE); + if ((cipher_type == SMB2_ENCRYPTION_AES128_GCM) || + (cipher_type == SMB2_ENCRYPTION_AES256_GCM)) + get_random_bytes(&tr_hdr->Nonce, SMB3_AES_GCM_NONCE); else - get_random_bytes(&tr_hdr->Nonce, SMB3_AES128CCM_NONCE); + get_random_bytes(&tr_hdr->Nonce, SMB3_AES_CCM_NONCE); memcpy(&tr_hdr->SessionId, &shdr->SessionId, 8); } @@ -3885,7 +3931,7 @@ if (ses->Suid == ses_id) { ses_enc_key = enc ? ses->smb3encryptionkey : ses->smb3decryptionkey; - memcpy(key, ses_enc_key, SMB3_SIGN_KEY_SIZE); + memcpy(key, ses_enc_key, SMB3_ENC_DEC_KEY_SIZE); spin_unlock(&cifs_tcp_ses_lock); return 0; } @@ -3912,7 +3958,7 @@ int rc = 0; struct scatterlist *sg; u8 sign[SMB2_SIGNATURE_SIZE] = {}; - u8 key[SMB3_SIGN_KEY_SIZE]; + u8 key[SMB3_ENC_DEC_KEY_SIZE]; struct aead_request *req; char *iv; unsigned int iv_len; @@ -3924,7 +3970,7 @@ if (rc) { cifs_server_dbg(VFS, "%s: Could not get %scryption key\n", __func__, enc ? "en" : "de"); - return 0; + return rc; } rc = smb3_crypto_aead_allocate(server); @@ -3935,7 +3981,13 @@ tfm = enc ? server->secmech.ccmaesencrypt : server->secmech.ccmaesdecrypt; - rc = crypto_aead_setkey(tfm, key, SMB3_SIGN_KEY_SIZE); + + if ((server->cipher_type == SMB2_ENCRYPTION_AES256_CCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) + rc = crypto_aead_setkey(tfm, key, SMB3_GCM256_CRYPTKEY_SIZE); + else + rc = crypto_aead_setkey(tfm, key, SMB3_GCM128_CRYPTKEY_SIZE); + if (rc) { cifs_server_dbg(VFS, "%s: Failed to set aead key %d\n", __func__, rc); return rc; @@ -3973,11 +4025,12 @@ goto free_sg; } - if (server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) - memcpy(iv, (char *)tr_hdr->Nonce, SMB3_AES128GCM_NONCE); + if ((server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) + memcpy(iv, (char *)tr_hdr->Nonce, SMB3_AES_GCM_NONCE); else { iv[0] = 3; - memcpy(iv + 1, (char *)tr_hdr->Nonce, SMB3_AES128CCM_NONCE); + memcpy(iv + 1, (char *)tr_hdr->Nonce, SMB3_AES_CCM_NONCE); } aead_request_set_crypt(req, sg, sg, crypt_len, iv); @@ -4103,7 +4156,8 @@ static int decrypt_raw_data(struct TCP_Server_Info *server, char *buf, unsigned int buf_data_size, struct page **pages, - unsigned int npages, unsigned int page_data_size) + unsigned int npages, unsigned int page_data_size, + bool is_offloaded) { struct kvec iov[2]; struct smb_rqst rqst = {NULL}; @@ -4129,7 +4183,8 @@ memmove(buf, iov[1].iov_base, buf_data_size); - server->total_read = buf_data_size + page_data_size; + if (!is_offloaded) + server->total_read = buf_data_size + page_data_size; return rc; } @@ -4194,7 +4249,8 @@ static int handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid, char *buf, unsigned int buf_len, struct page **pages, - unsigned int npages, unsigned int page_data_size) + unsigned int npages, unsigned int page_data_size, + bool is_offloaded) { unsigned int data_offset; unsigned int data_len; @@ -4216,7 +4272,8 @@ if (server->ops->is_session_expired && server->ops->is_session_expired(buf)) { - cifs_reconnect(server); + if (!is_offloaded) + cifs_reconnect(server); return -1; } @@ -4240,7 +4297,10 @@ cifs_dbg(FYI, "%s: server returned error %d\n", __func__, rdata->result); /* normal error on read response */ - dequeue_mid(mid, false); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_RECEIVED; + else + dequeue_mid(mid, false); return 0; } @@ -4264,7 +4324,10 @@ cifs_dbg(FYI, "%s: data offset (%u) beyond end of smallbuf\n", __func__, data_offset); rdata->result = -EIO; - dequeue_mid(mid, rdata->result); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_MALFORMED; + else + dequeue_mid(mid, rdata->result); return 0; } @@ -4280,21 +4343,30 @@ cifs_dbg(FYI, "%s: data offset (%u) beyond 1st page of response\n", __func__, data_offset); rdata->result = -EIO; - dequeue_mid(mid, rdata->result); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_MALFORMED; + else + dequeue_mid(mid, rdata->result); return 0; } if (data_len > page_data_size - pad_len) { /* data_len is corrupt -- discard frame */ rdata->result = -EIO; - dequeue_mid(mid, rdata->result); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_MALFORMED; + else + dequeue_mid(mid, rdata->result); return 0; } rdata->result = init_read_bvec(pages, npages, page_data_size, cur_off, &bvec); if (rdata->result != 0) { - dequeue_mid(mid, rdata->result); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_MALFORMED; + else + dequeue_mid(mid, rdata->result); return 0; } @@ -4309,7 +4381,10 @@ /* read response payload cannot be in both buf and pages */ WARN_ONCE(1, "buf can not contain only a part of read data"); rdata->result = -EIO; - dequeue_mid(mid, rdata->result); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_MALFORMED; + else + dequeue_mid(mid, rdata->result); return 0; } @@ -4320,7 +4395,10 @@ if (length < 0) return length; - dequeue_mid(mid, false); + if (is_offloaded) + mid->mid_state = MID_RESPONSE_RECEIVED; + else + dequeue_mid(mid, false); return length; } @@ -4342,22 +4420,41 @@ struct mid_q_entry *mid; rc = decrypt_raw_data(dw->server, dw->buf, dw->server->vals->read_rsp_size, - dw->ppages, dw->npages, dw->len); + dw->ppages, dw->npages, dw->len, true); if (rc) { cifs_dbg(VFS, "error decrypting rc=%d\n", rc); goto free_pages; } dw->server->lstrp = jiffies; - mid = smb2_find_mid(dw->server, dw->buf); + mid = smb2_find_dequeue_mid(dw->server, dw->buf); if (mid == NULL) cifs_dbg(FYI, "mid not found\n"); else { mid->decrypted = true; rc = handle_read_data(dw->server, mid, dw->buf, dw->server->vals->read_rsp_size, - dw->ppages, dw->npages, dw->len); - mid->callback(mid); + dw->ppages, dw->npages, dw->len, + true); + if (rc >= 0) { +#ifdef CONFIG_CIFS_STATS2 + mid->when_received = jiffies; +#endif + mid->callback(mid); + } else { + spin_lock(&GlobalMid_Lock); + if (dw->server->tcpStatus == CifsNeedReconnect) { + mid->mid_state = MID_RETRY_NEEDED; + spin_unlock(&GlobalMid_Lock); + mid->callback(mid); + } else { + mid->mid_state = MID_REQUEST_SUBMITTED; + mid->mid_flags &= ~(MID_DELETED); + list_add_tail(&mid->qhead, + &dw->server->pending_mid_q); + spin_unlock(&GlobalMid_Lock); + } + } cifs_mid_q_entry_release(mid); } @@ -4448,7 +4545,7 @@ non_offloaded_decrypt: rc = decrypt_raw_data(server, buf, server->vals->read_rsp_size, - pages, npages, len); + pages, npages, len, false); if (rc) goto free_pages; @@ -4460,7 +4557,7 @@ (*mid)->decrypted = true; rc = handle_read_data(server, *mid, buf, server->vals->read_rsp_size, - pages, npages, len); + pages, npages, len, false); } free_pages: @@ -4504,7 +4601,7 @@ server->total_read += length; buf_size = pdu_length - sizeof(struct smb2_transform_hdr); - length = decrypt_raw_data(server, buf, buf_size, NULL, 0, 0); + length = decrypt_raw_data(server, buf, buf_size, NULL, 0, 0, false); if (length) return length; @@ -4603,7 +4700,7 @@ char *buf = server->large_buf ? server->bigbuf : server->smallbuf; return handle_read_data(server, mid, buf, server->pdu_size, - NULL, 0, 0); + NULL, 0, 0, false); } static int @@ -4809,6 +4906,7 @@ .make_node = smb2_make_node, .fiemap = smb3_fiemap, .llseek = smb3_llseek, + .is_status_io_timeout = smb2_is_status_io_timeout, }; struct smb_version_operations smb21_operations = { @@ -4909,6 +5007,7 @@ .make_node = smb2_make_node, .fiemap = smb3_fiemap, .llseek = smb3_llseek, + .is_status_io_timeout = smb2_is_status_io_timeout, }; struct smb_version_operations smb30_operations = { @@ -5019,6 +5118,7 @@ .make_node = smb2_make_node, .fiemap = smb3_fiemap, .llseek = smb3_llseek, + .is_status_io_timeout = smb2_is_status_io_timeout, }; struct smb_version_operations smb311_operations = { @@ -5130,6 +5230,7 @@ .make_node = smb2_make_node, .fiemap = smb3_fiemap, .llseek = smb3_llseek, + .is_status_io_timeout = smb2_is_status_io_timeout, }; struct smb_version_values smb20_values = { --- linux-5.8.0.orig/fs/cifs/smb2pdu.c +++ linux-5.8.0/fs/cifs/smb2pdu.c @@ -538,8 +538,8 @@ pneg_ctxt->ContextType = SMB2_PREAUTH_INTEGRITY_CAPABILITIES; pneg_ctxt->DataLength = cpu_to_le16(38); pneg_ctxt->HashAlgorithmCount = cpu_to_le16(1); - pneg_ctxt->SaltLength = cpu_to_le16(SMB311_SALT_SIZE); - get_random_bytes(pneg_ctxt->Salt, SMB311_SALT_SIZE); + pneg_ctxt->SaltLength = cpu_to_le16(SMB311_LINUX_CLIENT_SALT_SIZE); + get_random_bytes(pneg_ctxt->Salt, SMB311_LINUX_CLIENT_SALT_SIZE); pneg_ctxt->HashAlgorithms = SMB2_PREAUTH_INTEGRITY_SHA512; } @@ -560,10 +560,22 @@ build_encrypt_ctxt(struct smb2_encryption_neg_context *pneg_ctxt) { pneg_ctxt->ContextType = SMB2_ENCRYPTION_CAPABILITIES; - pneg_ctxt->DataLength = cpu_to_le16(6); /* Cipher Count + two ciphers */ - pneg_ctxt->CipherCount = cpu_to_le16(2); - pneg_ctxt->Ciphers[0] = SMB2_ENCRYPTION_AES128_GCM; - pneg_ctxt->Ciphers[1] = SMB2_ENCRYPTION_AES128_CCM; + if (require_gcm_256) { + pneg_ctxt->DataLength = cpu_to_le16(4); /* Cipher Count + 1 cipher */ + pneg_ctxt->CipherCount = cpu_to_le16(1); + pneg_ctxt->Ciphers[0] = SMB2_ENCRYPTION_AES256_GCM; + } else if (enable_gcm_256) { + pneg_ctxt->DataLength = cpu_to_le16(8); /* Cipher Count + 3 ciphers */ + pneg_ctxt->CipherCount = cpu_to_le16(3); + pneg_ctxt->Ciphers[0] = SMB2_ENCRYPTION_AES128_GCM; + pneg_ctxt->Ciphers[1] = SMB2_ENCRYPTION_AES256_GCM; + pneg_ctxt->Ciphers[2] = SMB2_ENCRYPTION_AES128_CCM; + } else { + pneg_ctxt->DataLength = cpu_to_le16(6); /* Cipher Count + 2 ciphers */ + pneg_ctxt->CipherCount = cpu_to_le16(2); + pneg_ctxt->Ciphers[0] = SMB2_ENCRYPTION_AES128_GCM; + pneg_ctxt->Ciphers[1] = SMB2_ENCRYPTION_AES128_CCM; + } } static unsigned int @@ -665,6 +677,9 @@ if (len < MIN_PREAUTH_CTXT_DATA_LEN) { pr_warn_once("server sent bad preauth context\n"); return; + } else if (len < MIN_PREAUTH_CTXT_DATA_LEN + le16_to_cpu(ctxt->SaltLength)) { + pr_warn_once("server sent invalid SaltLength\n"); + return; } if (le16_to_cpu(ctxt->HashAlgorithmCount) != 1) pr_warn_once("Invalid SMB3 hash algorithm count\n"); @@ -709,8 +724,19 @@ return -EINVAL; } cifs_dbg(FYI, "SMB311 cipher type:%d\n", le16_to_cpu(ctxt->Ciphers[0])); - if ((ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES128_CCM) && - (ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES128_GCM)) { + if (require_gcm_256) { + if (ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES256_GCM) { + cifs_dbg(VFS, "Server does not support requested encryption type (AES256 GCM)\n"); + return -EOPNOTSUPP; + } + } else if (ctxt->Ciphers[0] == 0) { + /* e.g. if server only supported AES256_CCM (very unlikely) */ + cifs_dbg(VFS, "Server does not support requested encryption types\n"); + return -EOPNOTSUPP; + } else if ((ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES128_CCM) && + (ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES128_GCM) && + (ctxt->Ciphers[0] != SMB2_ENCRYPTION_AES256_GCM)) { + /* server returned a cipher we didn't ask for */ pr_warn_once("Invalid SMB3.11 cipher returned\n"); return -EINVAL; } @@ -1387,6 +1413,8 @@ spnego_key = cifs_get_spnego_key(ses); if (IS_ERR(spnego_key)) { rc = PTR_ERR(spnego_key); + if (rc == -ENOKEY) + cifs_dbg(VFS, "Verify user has a krb5 ticket and keyutils is installed\n"); spnego_key = NULL; goto out; } @@ -2346,17 +2374,15 @@ create_sd_buf(umode_t mode, bool set_owner, unsigned int *len) { struct crt_sd_ctxt *buf; - struct cifs_ace *pace; - unsigned int sdlen, acelen; + __u8 *ptr, *aclptr; + unsigned int acelen, acl_size, ace_count; unsigned int owner_offset = 0; unsigned int group_offset = 0; + struct smb3_acl acl; - *len = roundup(sizeof(struct crt_sd_ctxt) + (sizeof(struct cifs_ace) * 2), 8); + *len = roundup(sizeof(struct crt_sd_ctxt) + (sizeof(struct cifs_ace) * 4), 8); if (set_owner) { - /* offset fields are from beginning of security descriptor not of create context */ - owner_offset = sizeof(struct smb3_acl) + (sizeof(struct cifs_ace) * 2); - /* sizeof(struct owner_group_sids) is already multiple of 8 so no need to round */ *len += sizeof(struct owner_group_sids); } @@ -2365,26 +2391,22 @@ if (buf == NULL) return buf; + ptr = (__u8 *)&buf[1]; if (set_owner) { + /* offset fields are from beginning of security descriptor not of create context */ + owner_offset = ptr - (__u8 *)&buf->sd; buf->sd.OffsetOwner = cpu_to_le32(owner_offset); - group_offset = owner_offset + sizeof(struct owner_sid); + group_offset = owner_offset + offsetof(struct owner_group_sids, group); buf->sd.OffsetGroup = cpu_to_le32(group_offset); + + setup_owner_group_sids(ptr); + ptr += sizeof(struct owner_group_sids); } else { buf->sd.OffsetOwner = 0; buf->sd.OffsetGroup = 0; } - sdlen = sizeof(struct smb3_sd) + sizeof(struct smb3_acl) + - 2 * sizeof(struct cifs_ace); - if (set_owner) { - sdlen += sizeof(struct owner_group_sids); - setup_owner_group_sids(owner_offset + sizeof(struct create_context) + 8 /* name */ - + (char *)buf); - } - - buf->ccontext.DataOffset = cpu_to_le16(offsetof - (struct crt_sd_ctxt, sd)); - buf->ccontext.DataLength = cpu_to_le32(sdlen); + buf->ccontext.DataOffset = cpu_to_le16(offsetof(struct crt_sd_ctxt, sd)); buf->ccontext.NameOffset = cpu_to_le16(offsetof(struct crt_sd_ctxt, Name)); buf->ccontext.NameLength = cpu_to_le16(4); /* SMB2_CREATE_SD_BUFFER_TOKEN is "SecD" */ @@ -2393,6 +2415,7 @@ buf->Name[2] = 'c'; buf->Name[3] = 'D'; buf->sd.Revision = 1; /* Must be one see MS-DTYP 2.4.6 */ + /* * ACL is "self relative" ie ACL is stored in contiguous block of memory * and "DP" ie the DACL is present @@ -2400,28 +2423,38 @@ buf->sd.Control = cpu_to_le16(ACL_CONTROL_SR | ACL_CONTROL_DP); /* offset owner, group and Sbz1 and SACL are all zero */ - buf->sd.OffsetDacl = cpu_to_le32(sizeof(struct smb3_sd)); - buf->acl.AclRevision = ACL_REVISION; /* See 2.4.4.1 of MS-DTYP */ + buf->sd.OffsetDacl = cpu_to_le32(ptr - (__u8 *)&buf->sd); + /* Ship the ACL for now. we will copy it into buf later. */ + aclptr = ptr; + ptr += sizeof(struct cifs_acl); /* create one ACE to hold the mode embedded in reserved special SID */ - pace = (struct cifs_ace *)(sizeof(struct crt_sd_ctxt) + (char *)buf); - acelen = setup_special_mode_ACE(pace, (__u64)mode); + acelen = setup_special_mode_ACE((struct cifs_ace *)ptr, (__u64)mode); + ptr += acelen; + acl_size = acelen + sizeof(struct smb3_acl); + ace_count = 1; if (set_owner) { /* we do not need to reallocate buffer to add the two more ACEs. plenty of space */ - pace = (struct cifs_ace *)(acelen + (sizeof(struct crt_sd_ctxt) + (char *)buf)); - acelen += setup_special_user_owner_ACE(pace); - /* it does not appear necessary to add an ACE for the NFS group SID */ - buf->acl.AceCount = cpu_to_le16(3); - } else - buf->acl.AceCount = cpu_to_le16(2); + acelen = setup_special_user_owner_ACE((struct cifs_ace *)ptr); + ptr += acelen; + acl_size += acelen; + ace_count += 1; + } /* and one more ACE to allow access for authenticated users */ - pace = (struct cifs_ace *)(acelen + (sizeof(struct crt_sd_ctxt) + - (char *)buf)); - acelen += setup_authusers_ACE(pace); + acelen = setup_authusers_ACE((struct cifs_ace *)ptr); + ptr += acelen; + acl_size += acelen; + ace_count += 1; + + acl.AclRevision = ACL_REVISION; /* See 2.4.4.1 of MS-DTYP */ + acl.AclSize = cpu_to_le16(acl_size); + acl.AceCount = cpu_to_le16(ace_count); + memcpy(aclptr, &acl, sizeof(struct cifs_acl)); - buf->acl.AclSize = cpu_to_le16(sizeof(struct cifs_acl) + acelen); + buf->ccontext.DataLength = cpu_to_le32(ptr - (__u8 *)&buf->sd); + *len = ptr - (__u8 *)buf; return buf; } @@ -3314,7 +3347,7 @@ free_rsp_buf(resp_buftype, rsp); /* retry close in a worker thread if this one is interrupted */ - if (rc == -EINTR) { + if (is_interrupt_error(rc)) { int tmp_rc; tmp_rc = smb2_handle_cancelled_close(tcon, persistent_fid, @@ -4098,8 +4131,7 @@ if (rdata->credits.value > 0) { shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes, SMB2_MAX_BUFFER_SIZE)); - shdr->CreditRequest = - cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1); + shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8); rc = adjust_credits(server, &rdata->credits, rdata->bytes); if (rc) @@ -4405,8 +4437,7 @@ if (wdata->credits.value > 0) { shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes, SMB2_MAX_BUFFER_SIZE)); - shdr->CreditRequest = - cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 1); + shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8); rc = adjust_credits(server, &wdata->credits, wdata->bytes); if (rc) --- linux-5.8.0.orig/fs/cifs/smb2pdu.h +++ linux-5.8.0/fs/cifs/smb2pdu.h @@ -128,8 +128,8 @@ __le16 StructureSize2; /* size of wct area (varies, request specific) */ } __packed; -#define SMB3_AES128CCM_NONCE 11 -#define SMB3_AES128GCM_NONCE 12 +#define SMB3_AES_CCM_NONCE 11 +#define SMB3_AES_GCM_NONCE 12 /* Transform flags (for 3.0 dialect this flag indicates CCM */ #define TRANSFORM_FLAG_ENCRYPTED 0x0001 @@ -262,7 +262,7 @@ __le32 NegotiateContextOffset; /* SMB3.1.1 only. MBZ earlier */ __le16 NegotiateContextCount; /* SMB3.1.1 only. MBZ earlier */ __le16 Reserved2; - __le16 Dialects[1]; /* One dialect (vers=) at a time for now */ + __le16 Dialects[4]; /* BB expand this if autonegotiate > 4 dialects */ } __packed; /* Dialects */ @@ -306,12 +306,20 @@ /* Followed by array of data */ } __packed; -#define SMB311_SALT_SIZE 32 +#define SMB311_LINUX_CLIENT_SALT_SIZE 32 /* Hash Algorithm Types */ #define SMB2_PREAUTH_INTEGRITY_SHA512 cpu_to_le16(0x0001) #define SMB2_PREAUTH_HASH_SIZE 64 -#define MIN_PREAUTH_CTXT_DATA_LEN (SMB311_SALT_SIZE + 6) +/* + * SaltLength that the server send can be zero, so the only three required + * fields (all __le16) end up six bytes total, so the minimum context data len + * in the response is six bytes which accounts for + * + * HashAlgorithmCount, SaltLength, and 1 HashAlgorithm. + */ +#define MIN_PREAUTH_CTXT_DATA_LEN 6 + struct smb2_preauth_neg_context { __le16 ContextType; /* 1 */ __le16 DataLength; @@ -319,12 +327,15 @@ __le16 HashAlgorithmCount; /* 1 */ __le16 SaltLength; __le16 HashAlgorithms; /* HashAlgorithms[0] since only one defined */ - __u8 Salt[SMB311_SALT_SIZE]; + __u8 Salt[SMB311_LINUX_CLIENT_SALT_SIZE]; } __packed; /* Encryption Algorithms Ciphers */ #define SMB2_ENCRYPTION_AES128_CCM cpu_to_le16(0x0001) #define SMB2_ENCRYPTION_AES128_GCM cpu_to_le16(0x0002) +/* we currently do not request AES256_CCM since presumably GCM faster */ +#define SMB2_ENCRYPTION_AES256_CCM cpu_to_le16(0x0003) +#define SMB2_ENCRYPTION_AES256_GCM cpu_to_le16(0x0004) /* Min encrypt context data is one cipher so 2 bytes + 2 byte count field */ #define MIN_ENCRYPT_CTXT_DATA_LEN 4 @@ -332,8 +343,9 @@ __le16 ContextType; /* 2 */ __le16 DataLength; __le32 Reserved; - __le16 CipherCount; /* AES-128-GCM and AES-128-CCM */ - __le16 Ciphers[2]; + /* CipherCount usally 2, but can be 3 when AES256-GCM enabled */ + __le16 CipherCount; /* AES128-GCM and AES128-CCM by default */ + __le16 Ciphers[3]; } __packed; /* See MS-SMB2 2.2.3.1.3 */ @@ -900,8 +912,6 @@ struct create_context ccontext; __u8 Name[8]; struct smb3_sd sd; - struct smb3_acl acl; - /* Followed by at least 4 ACEs */ } __packed; --- linux-5.8.0.orig/fs/cifs/smb2proto.h +++ linux-5.8.0/fs/cifs/smb2proto.h @@ -242,8 +242,7 @@ extern int smb2_handle_cancelled_close(struct cifs_tcon *tcon, __u64 persistent_fid, __u64 volatile_fid); -extern int smb2_handle_cancelled_mid(char *buffer, - struct TCP_Server_Info *server); +extern int smb2_handle_cancelled_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server); void smb2_cancelled_close_fid(struct work_struct *work); extern int SMB2_QFS_info(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_file_id, u64 volatile_file_id, --- linux-5.8.0.orig/fs/cifs/smb2transport.c +++ linux-5.8.0/fs/cifs/smb2transport.c @@ -298,7 +298,8 @@ { unsigned char zero = 0x0; __u8 i[4] = {0, 0, 0, 1}; - __u8 L[4] = {0, 0, 0, 128}; + __u8 L128[4] = {0, 0, 0, 128}; + __u8 L256[4] = {0, 0, 1, 0}; int rc = 0; unsigned char prfhash[SMB2_HMACSHA256_SIZE]; unsigned char *hashptr = prfhash; @@ -354,8 +355,14 @@ goto smb3signkey_ret; } - rc = crypto_shash_update(&server->secmech.sdeschmacsha256->shash, - L, 4); + if ((server->cipher_type == SMB2_ENCRYPTION_AES256_CCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) { + rc = crypto_shash_update(&server->secmech.sdeschmacsha256->shash, + L256, 4); + } else { + rc = crypto_shash_update(&server->secmech.sdeschmacsha256->shash, + L128, 4); + } if (rc) { cifs_server_dbg(VFS, "%s: Could not update with L\n", __func__); goto smb3signkey_ret; @@ -390,6 +397,9 @@ const struct derivation_triplet *ptriplet) { int rc; +#ifdef CONFIG_CIFS_DEBUG_DUMP_KEYS + struct TCP_Server_Info *server = ses->server; +#endif /* * All channels use the same encryption/decryption keys but @@ -422,11 +432,11 @@ rc = generate_key(ses, ptriplet->encryption.label, ptriplet->encryption.context, ses->smb3encryptionkey, - SMB3_SIGN_KEY_SIZE); + SMB3_ENC_DEC_KEY_SIZE); rc = generate_key(ses, ptriplet->decryption.label, ptriplet->decryption.context, ses->smb3decryptionkey, - SMB3_SIGN_KEY_SIZE); + SMB3_ENC_DEC_KEY_SIZE); if (rc) return rc; } @@ -442,14 +452,23 @@ */ cifs_dbg(VFS, "Session Id %*ph\n", (int)sizeof(ses->Suid), &ses->Suid); + cifs_dbg(VFS, "Cipher type %d\n", server->cipher_type); cifs_dbg(VFS, "Session Key %*ph\n", SMB2_NTLMV2_SESSKEY_SIZE, ses->auth_key.response); cifs_dbg(VFS, "Signing Key %*ph\n", SMB3_SIGN_KEY_SIZE, ses->smb3signingkey); - cifs_dbg(VFS, "ServerIn Key %*ph\n", - SMB3_SIGN_KEY_SIZE, ses->smb3encryptionkey); - cifs_dbg(VFS, "ServerOut Key %*ph\n", - SMB3_SIGN_KEY_SIZE, ses->smb3decryptionkey); + if ((server->cipher_type == SMB2_ENCRYPTION_AES256_CCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) { + cifs_dbg(VFS, "ServerIn Key %*ph\n", + SMB3_GCM256_CRYPTKEY_SIZE, ses->smb3encryptionkey); + cifs_dbg(VFS, "ServerOut Key %*ph\n", + SMB3_GCM256_CRYPTKEY_SIZE, ses->smb3decryptionkey); + } else { + cifs_dbg(VFS, "ServerIn Key %*ph\n", + SMB3_GCM128_CRYPTKEY_SIZE, ses->smb3encryptionkey); + cifs_dbg(VFS, "ServerOut Key %*ph\n", + SMB3_GCM128_CRYPTKEY_SIZE, ses->smb3decryptionkey); + } #endif return rc; } @@ -849,12 +868,13 @@ struct crypto_aead *tfm; if (!server->secmech.ccmaesencrypt) { - if (server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) + if ((server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) tfm = crypto_alloc_aead("gcm(aes)", 0, 0); else tfm = crypto_alloc_aead("ccm(aes)", 0, 0); if (IS_ERR(tfm)) { - cifs_server_dbg(VFS, "%s: Failed to alloc encrypt aead\n", + cifs_server_dbg(VFS, "%s: Failed alloc encrypt aead\n", __func__); return PTR_ERR(tfm); } @@ -862,7 +882,8 @@ } if (!server->secmech.ccmaesdecrypt) { - if (server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) + if ((server->cipher_type == SMB2_ENCRYPTION_AES128_GCM) || + (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)) tfm = crypto_alloc_aead("gcm(aes)", 0, 0); else tfm = crypto_alloc_aead("ccm(aes)", 0, 0); --- linux-5.8.0.orig/fs/cifs/transport.c +++ linux-5.8.0/fs/cifs/transport.c @@ -101,7 +101,7 @@ if (midEntry->resp_buf && (midEntry->mid_flags & MID_WAIT_CANCELLED) && midEntry->mid_state == MID_RESPONSE_RECEIVED && server->ops->handle_cancelled_mid) - server->ops->handle_cancelled_mid(midEntry->resp_buf, server); + server->ops->handle_cancelled_mid(midEntry, server); midEntry->mid_state = MID_FREE; atomic_dec(&midCount); @@ -338,9 +338,9 @@ if (ssocket == NULL) return -EAGAIN; - if (signal_pending(current)) { - cifs_dbg(FYI, "signal is pending before sending any data\n"); - return -EINTR; + if (fatal_signal_pending(current)) { + cifs_dbg(FYI, "signal pending before send request\n"); + return -ERESTARTSYS; } /* cork the socket */ @@ -429,7 +429,7 @@ if (signal_pending(current) && (total_len != send_length)) { cifs_dbg(FYI, "signal is pending after attempt to send\n"); - rc = -EINTR; + rc = -ERESTARTSYS; } /* uncork it */ @@ -654,10 +654,22 @@ spin_lock(&server->req_lock); if (*credits < num) { /* - * Return immediately if not too many requests in flight since - * we will likely be stuck on waiting for credits. + * If the server is tight on resources or just gives us less + * credits for other reasons (e.g. requests are coming out of + * order and the server delays granting more credits until it + * processes a missing mid) and we exhausted most available + * credits there may be situations when we try to send + * a compound request but we don't have enough credits. At this + * point the client needs to decide if it should wait for + * additional credits or fail the request. If at least one + * request is in flight there is a high probability that the + * server will return enough credits to satisfy this compound + * request. + * + * Return immediately if no requests in flight since we will be + * stuck on waiting for credits. */ - if (server->in_flight < num - *credits) { + if (server->in_flight == 0) { spin_unlock(&server->req_lock); return -ENOTSUPP; } @@ -1143,9 +1155,12 @@ /* * Compounding is never used during session establish. */ - if ((ses->status == CifsNew) || (optype & CIFS_NEG_OP)) + if ((ses->status == CifsNew) || (optype & CIFS_NEG_OP)) { + mutex_lock(&server->srv_mutex); smb311_update_preauth_hash(ses, rqst[0].rq_iov, rqst[0].rq_nvec); + mutex_unlock(&server->srv_mutex); + } for (i = 0; i < num_rqst; i++) { rc = wait_for_response(server, midQ[i]); @@ -1154,7 +1169,7 @@ } if (rc != 0) { for (; i < num_rqst; i++) { - cifs_server_dbg(VFS, "Cancelling wait for mid %llu cmd: %d\n", + cifs_server_dbg(FYI, "Cancelling wait for mid %llu cmd: %d\n", midQ[i]->mid, le16_to_cpu(midQ[i]->command)); send_cancel(server, &rqst[i], midQ[i]); spin_lock(&GlobalMid_Lock); @@ -1213,7 +1228,9 @@ .iov_base = resp_iov[0].iov_base, .iov_len = resp_iov[0].iov_len }; + mutex_lock(&server->srv_mutex); smb311_update_preauth_hash(ses, &iov, 1); + mutex_unlock(&server->srv_mutex); } out: --- linux-5.8.0.orig/fs/configfs/file.c +++ linux-5.8.0/fs/configfs/file.c @@ -378,7 +378,7 @@ attr = to_attr(dentry); if (!attr) - goto out_put_item; + goto out_free_buffer; if (type & CONFIGFS_ITEM_BIN_ATTR) { buffer->bin_attr = to_bin_attr(dentry); @@ -391,7 +391,7 @@ /* Grab the module reference for this attribute if we have one */ error = -ENODEV; if (!try_module_get(buffer->owner)) - goto out_put_item; + goto out_free_buffer; error = -EACCES; if (!buffer->item->ci_type) @@ -435,8 +435,6 @@ out_put_module: module_put(buffer->owner); -out_put_item: - config_item_put(buffer->item); out_free_buffer: up_read(&frag->frag_sem); kfree(buffer); --- linux-5.8.0.orig/fs/coredump.c +++ linux-5.8.0/fs/coredump.c @@ -224,7 +224,8 @@ */ if (ispipe) { if (isspace(*pat_ptr)) { - was_space = true; + if (cn->used != 0) + was_space = true; pat_ptr++; continue; } else if (was_space) { --- linux-5.8.0.orig/fs/crypto/fname.c +++ linux-5.8.0/fs/crypto/fname.c @@ -573,7 +573,7 @@ * reverting to ciphertext names without evicting the directory's inode * -- which implies eviction of the dentries in the directory. */ - if (!(dentry->d_flags & DCACHE_ENCRYPTED_NAME)) + if (!(dentry->d_flags & DCACHE_NOKEY_NAME)) return 1; /* --- linux-5.8.0.orig/fs/crypto/fscrypt_private.h +++ linux-5.8.0/fs/crypto/fscrypt_private.h @@ -24,6 +24,9 @@ #define FSCRYPT_CONTEXT_V1 1 #define FSCRYPT_CONTEXT_V2 2 +/* Keep this in sync with include/uapi/linux/fscrypt.h */ +#define FSCRYPT_MODE_MAX FSCRYPT_MODE_ADIANTUM + struct fscrypt_context_v1 { u8 version; /* FSCRYPT_CONTEXT_V1 */ u8 contents_encryption_mode; @@ -395,9 +398,9 @@ * Per-mode encryption keys for the various types of encryption policies * that use them. Allocated and derived on-demand. */ - struct crypto_skcipher *mk_direct_keys[__FSCRYPT_MODE_MAX + 1]; - struct crypto_skcipher *mk_iv_ino_lblk_64_keys[__FSCRYPT_MODE_MAX + 1]; - struct crypto_skcipher *mk_iv_ino_lblk_32_keys[__FSCRYPT_MODE_MAX + 1]; + struct crypto_skcipher *mk_direct_keys[FSCRYPT_MODE_MAX + 1]; + struct crypto_skcipher *mk_iv_ino_lblk_64_keys[FSCRYPT_MODE_MAX + 1]; + struct crypto_skcipher *mk_iv_ino_lblk_32_keys[FSCRYPT_MODE_MAX + 1]; /* Hash key for inode numbers. Initialized only when needed. */ siphash_key_t mk_ino_hash_key; --- linux-5.8.0.orig/fs/crypto/hooks.c +++ linux-5.8.0/fs/crypto/hooks.c @@ -60,8 +60,8 @@ if (err) return err; - /* ... in case we looked up ciphertext name before key was added */ - if (dentry->d_flags & DCACHE_ENCRYPTED_NAME) + /* ... in case we looked up no-key name before key was added */ + if (fscrypt_is_nokey_name(dentry)) return -ENOKEY; if (!fscrypt_has_permitted_context(dir, inode)) @@ -85,9 +85,9 @@ if (err) return err; - /* ... in case we looked up ciphertext name(s) before key was added */ - if ((old_dentry->d_flags | new_dentry->d_flags) & - DCACHE_ENCRYPTED_NAME) + /* ... in case we looked up no-key name(s) before key was added */ + if (fscrypt_is_nokey_name(old_dentry) || + fscrypt_is_nokey_name(new_dentry)) return -ENOKEY; if (old_dir != new_dir) { @@ -116,7 +116,7 @@ if (fname->is_ciphertext_name) { spin_lock(&dentry->d_lock); - dentry->d_flags |= DCACHE_ENCRYPTED_NAME; + dentry->d_flags |= DCACHE_NOKEY_NAME; spin_unlock(&dentry->d_lock); d_set_d_op(dentry, &fscrypt_d_ops); } --- linux-5.8.0.orig/fs/crypto/keyring.c +++ linux-5.8.0/fs/crypto/keyring.c @@ -44,7 +44,7 @@ wipe_master_key_secret(&mk->mk_secret); - for (i = 0; i <= __FSCRYPT_MODE_MAX; i++) { + for (i = 0; i <= FSCRYPT_MODE_MAX; i++) { crypto_free_skcipher(mk->mk_direct_keys[i]); crypto_free_skcipher(mk->mk_iv_ino_lblk_64_keys[i]); crypto_free_skcipher(mk->mk_iv_ino_lblk_32_keys[i]); --- linux-5.8.0.orig/fs/crypto/keysetup.c +++ linux-5.8.0/fs/crypto/keysetup.c @@ -52,6 +52,8 @@ select_encryption_mode(const union fscrypt_policy *policy, const struct inode *inode) { + BUILD_BUG_ON(ARRAY_SIZE(fscrypt_modes) != FSCRYPT_MODE_MAX + 1); + if (S_ISREG(inode->i_mode)) return &fscrypt_modes[fscrypt_policy_contents_mode(policy)]; @@ -138,7 +140,7 @@ unsigned int hkdf_infolen = 0; int err; - if (WARN_ON(mode_num > __FSCRYPT_MODE_MAX)) + if (WARN_ON(mode_num > FSCRYPT_MODE_MAX)) return -EINVAL; /* pairs with smp_store_release() below */ --- linux-5.8.0.orig/fs/crypto/policy.c +++ linux-5.8.0/fs/crypto/policy.c @@ -153,7 +153,10 @@ return false; } - if (policy->flags & ~FSCRYPT_POLICY_FLAGS_VALID) { + if (policy->flags & ~(FSCRYPT_POLICY_FLAGS_PAD_MASK | + FSCRYPT_POLICY_FLAG_DIRECT_KEY | + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 | + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32)) { fscrypt_warn(inode, "Unsupported encryption flags (0x%02x)", policy->flags); return false; @@ -178,10 +181,15 @@ 32, 32)) return false; + /* + * IV_INO_LBLK_32 hashes the inode number, so in principle it can + * support any ino_bits. However, currently the inode number is gotten + * from inode::i_ino which is 'unsigned long'. So for now the + * implementation limit is 32 bits. + */ if ((policy->flags & FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32) && - /* This uses hashed inode numbers, so ino_bits doesn't matter. */ !supported_iv_ino_lblk_policy(policy, inode, "IV_INO_LBLK_32", - INT_MAX, 32)) + 32, 32)) return false; if (memchr_inv(policy->__reserved, 0, sizeof(policy->__reserved))) { --- linux-5.8.0.orig/fs/d_path.c +++ linux-5.8.0/fs/d_path.c @@ -102,6 +102,8 @@ if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { struct mount *parent = READ_ONCE(mnt->mnt_parent); + struct mnt_namespace *mnt_ns; + /* Escaped? */ if (dentry != vfsmnt->mnt_root) { bptr = *buffer; @@ -116,7 +118,9 @@ vfsmnt = &mnt->mnt; continue; } - if (is_mounted(vfsmnt) && !is_anon_ns(mnt->mnt_ns)) + mnt_ns = READ_ONCE(mnt->mnt_ns); + /* open-coded is_mounted() to use local mnt_ns */ + if (!IS_ERR_OR_NULL(mnt_ns) && !is_anon_ns(mnt_ns)) error = 1; // absolute root else error = 2; // detached or not attached yet --- linux-5.8.0.orig/fs/dax.c +++ linux-5.8.0/fs/dax.c @@ -794,12 +794,12 @@ address = pgoff_address(index, vma); /* - * Note because we provide range to follow_pte_pmd it will - * call mmu_notifier_invalidate_range_start() on our behalf - * before taking any lock. + * follow_invalidate_pte() will use the range to call + * mmu_notifier_invalidate_range_start() on our behalf before + * taking any lock. */ - if (follow_pte_pmd(vma->vm_mm, address, &range, - &ptep, &pmdp, &ptl)) + if (follow_invalidate_pte(vma->vm_mm, address, &range, &ptep, + &pmdp, &ptl)) continue; /* --- linux-5.8.0.orig/fs/dcache.c +++ linux-5.8.0/fs/dcache.c @@ -1285,7 +1285,7 @@ * * The @enter() callbacks are called with d_lock held. */ -static void d_walk(struct dentry *parent, void *data, +void d_walk(struct dentry *parent, void *data, enum d_walk_ret (*enter)(void *, struct dentry *)) { struct dentry *this_parent; @@ -1390,6 +1390,7 @@ seq = 1; goto again; } +EXPORT_SYMBOL_GPL(d_walk); struct check_mount { struct vfsmount *mnt; @@ -2935,6 +2936,7 @@ write_sequnlock(&rename_lock); } +EXPORT_SYMBOL_GPL(d_exchange); /** * d_ancestor - search for an ancestor --- linux-5.8.0.orig/fs/debugfs/file.c +++ linux-5.8.0/fs/debugfs/file.c @@ -177,7 +177,7 @@ goto out; if (!fops_get(real_fops)) { -#ifdef MODULE +#ifdef CONFIG_MODULES if (real_fops->owner && real_fops->owner->state == MODULE_STATE_GOING) goto out; @@ -312,7 +312,7 @@ goto out; if (!fops_get(real_fops)) { -#ifdef MODULE +#ifdef CONFIG_MODULES if (real_fops->owner && real_fops->owner->state == MODULE_STATE_GOING) goto out; --- linux-5.8.0.orig/fs/debugfs/inode.c +++ linux-5.8.0/fs/debugfs/inode.c @@ -293,7 +293,7 @@ { struct dentry *dentry; - if (IS_ERR(parent)) + if (!debugfs_initialized() || IS_ERR_OR_NULL(name) || IS_ERR(parent)) return NULL; if (!parent) @@ -311,6 +311,9 @@ struct dentry *dentry; int error; + if (!debugfs_initialized()) + return ERR_PTR(-ENOENT); + pr_debug("creating file '%s'\n", name); if (IS_ERR(parent)) --- linux-5.8.0.orig/fs/dlm/config.c +++ linux-5.8.0/fs/dlm/config.c @@ -216,6 +216,7 @@ struct list_head members; struct mutex members_lock; int members_count; + struct dlm_nodes *nds; }; struct dlm_comms { @@ -424,6 +425,7 @@ INIT_LIST_HEAD(&sp->members); mutex_init(&sp->members_lock); sp->members_count = 0; + sp->nds = nds; return &sp->group; fail: @@ -445,6 +447,7 @@ static void release_space(struct config_item *i) { struct dlm_space *sp = config_item_to_space(i); + kfree(sp->nds); kfree(sp); } --- linux-5.8.0.orig/fs/dlm/lockspace.c +++ linux-5.8.0/fs/dlm/lockspace.c @@ -622,6 +622,9 @@ wait_event(ls->ls_recover_lock_wait, test_bit(LSFL_RECOVER_LOCK, &ls->ls_flags)); + /* let kobject handle freeing of ls if there's an error */ + do_unreg = 1; + ls->ls_kobj.kset = dlm_kset; error = kobject_init_and_add(&ls->ls_kobj, &dlm_ktype, NULL, "%s", ls->ls_name); @@ -629,9 +632,6 @@ goto out_recoverd; kobject_uevent(&ls->ls_kobj, KOBJ_ADD); - /* let kobject handle freeing of ls if there's an error */ - do_unreg = 1; - /* This uevent triggers dlm_controld in userspace to add us to the group of nodes that are members of this lockspace (managed by the cluster infrastructure.) Once it's done that, it tells us who the --- linux-5.8.0.orig/fs/efivarfs/inode.c +++ linux-5.8.0/fs/efivarfs/inode.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -103,6 +104,7 @@ var->var.VariableName[i] = '\0'; inode->i_private = var; + kmemleak_ignore(var); err = efivar_entry_add(var, &efivarfs_list); if (err) --- linux-5.8.0.orig/fs/efivarfs/super.c +++ linux-5.8.0/fs/efivarfs/super.c @@ -141,6 +141,9 @@ name[len + EFI_VARIABLE_GUID_LEN+1] = '\0'; + /* replace invalid slashes like kobject_set_name_vargs does for /sys/firmware/efi/vars. */ + strreplace(name, '/', '!'); + inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0, is_removable); if (!inode) --- linux-5.8.0.orig/fs/erofs/data.c +++ linux-5.8.0/fs/erofs/data.c @@ -312,27 +312,12 @@ submit_bio(bio); } -static int erofs_get_block(struct inode *inode, sector_t iblock, - struct buffer_head *bh, int create) -{ - struct erofs_map_blocks map = { - .m_la = iblock << 9, - }; - int err; - - err = erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW); - if (err) - return err; - - if (map.m_flags & EROFS_MAP_MAPPED) - bh->b_blocknr = erofs_blknr(map.m_pa); - - return err; -} - static sector_t erofs_bmap(struct address_space *mapping, sector_t block) { struct inode *inode = mapping->host; + struct erofs_map_blocks map = { + .m_la = blknr_to_addr(block), + }; if (EROFS_I(inode)->datalayout == EROFS_INODE_FLAT_INLINE) { erofs_blk_t blks = i_size_read(inode) >> LOG_BLOCK_SIZE; @@ -341,7 +326,10 @@ return 0; } - return generic_block_bmap(mapping, block, erofs_get_block); + if (!erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW)) + return erofs_blknr(map.m_pa); + + return 0; } /* for uncompressed (aligned) files and raw access for other files */ --- linux-5.8.0.orig/fs/erofs/inode.c +++ linux-5.8.0/fs/erofs/inode.c @@ -8,31 +8,80 @@ #include -/* no locking */ -static int erofs_read_inode(struct inode *inode, void *data) +/* + * if inode is successfully read, return its inode page (or sometimes + * the inode payload page if it's an extended inode) in order to fill + * inline data if possible. + */ +static struct page *erofs_read_inode(struct inode *inode, + unsigned int *ofs) { + struct super_block *sb = inode->i_sb; + struct erofs_sb_info *sbi = EROFS_SB(sb); struct erofs_inode *vi = EROFS_I(inode); - struct erofs_inode_compact *dic = data; - struct erofs_inode_extended *die; + const erofs_off_t inode_loc = iloc(sbi, vi->nid); - const unsigned int ifmt = le16_to_cpu(dic->i_format); - struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb); - erofs_blk_t nblks = 0; + erofs_blk_t blkaddr, nblks = 0; + struct page *page; + struct erofs_inode_compact *dic; + struct erofs_inode_extended *die, *copied = NULL; + unsigned int ifmt; + int err; - vi->datalayout = erofs_inode_datalayout(ifmt); + blkaddr = erofs_blknr(inode_loc); + *ofs = erofs_blkoff(inode_loc); + + erofs_dbg("%s, reading inode nid %llu at %u of blkaddr %u", + __func__, vi->nid, *ofs, blkaddr); + + page = erofs_get_meta_page(sb, blkaddr); + if (IS_ERR(page)) { + erofs_err(sb, "failed to get inode (nid: %llu) page, err %ld", + vi->nid, PTR_ERR(page)); + return page; + } + + dic = page_address(page) + *ofs; + ifmt = le16_to_cpu(dic->i_format); + vi->datalayout = erofs_inode_datalayout(ifmt); if (vi->datalayout >= EROFS_INODE_DATALAYOUT_MAX) { erofs_err(inode->i_sb, "unsupported datalayout %u of nid %llu", vi->datalayout, vi->nid); - DBG_BUGON(1); - return -EOPNOTSUPP; + err = -EOPNOTSUPP; + goto err_out; } switch (erofs_inode_version(ifmt)) { case EROFS_INODE_LAYOUT_EXTENDED: - die = data; - vi->inode_isize = sizeof(struct erofs_inode_extended); + /* check if the inode acrosses page boundary */ + if (*ofs + vi->inode_isize <= PAGE_SIZE) { + *ofs += vi->inode_isize; + die = (struct erofs_inode_extended *)dic; + } else { + const unsigned int gotten = PAGE_SIZE - *ofs; + + copied = kmalloc(vi->inode_isize, GFP_NOFS); + if (!copied) { + err = -ENOMEM; + goto err_out; + } + memcpy(copied, dic, gotten); + unlock_page(page); + put_page(page); + + page = erofs_get_meta_page(sb, blkaddr + 1); + if (IS_ERR(page)) { + erofs_err(sb, "failed to get inode payload page (nid: %llu), err %ld", + vi->nid, PTR_ERR(page)); + kfree(copied); + return page; + } + *ofs = vi->inode_isize - gotten; + memcpy((u8 *)copied + gotten, page_address(page), *ofs); + die = copied; + } vi->xattr_isize = erofs_xattr_ibody_size(die->i_xattr_icount); inode->i_mode = le16_to_cpu(die->i_mode); @@ -58,20 +107,21 @@ i_gid_write(inode, le32_to_cpu(die->i_gid)); set_nlink(inode, le32_to_cpu(die->i_nlink)); - /* ns timestamp */ - inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = - le64_to_cpu(die->i_ctime); - inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = - le32_to_cpu(die->i_ctime_nsec); + /* extended inode has its own timestamp */ + inode->i_ctime.tv_sec = le64_to_cpu(die->i_ctime); + inode->i_ctime.tv_nsec = le32_to_cpu(die->i_ctime_nsec); inode->i_size = le64_to_cpu(die->i_size); /* total blocks for compressed files */ if (erofs_inode_is_data_compressed(vi->datalayout)) nblks = le32_to_cpu(die->i_u.compressed_blocks); + + kfree(copied); break; case EROFS_INODE_LAYOUT_COMPACT: vi->inode_isize = sizeof(struct erofs_inode_compact); + *ofs += vi->inode_isize; vi->xattr_isize = erofs_xattr_ibody_size(dic->i_xattr_icount); inode->i_mode = le16_to_cpu(dic->i_mode); @@ -97,11 +147,9 @@ i_gid_write(inode, le16_to_cpu(dic->i_gid)); set_nlink(inode, le16_to_cpu(dic->i_nlink)); - /* use build time to derive all file time */ - inode->i_mtime.tv_sec = inode->i_ctime.tv_sec = - sbi->build_time; - inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = - sbi->build_time_nsec; + /* use build time for compact inodes */ + inode->i_ctime.tv_sec = sbi->build_time; + inode->i_ctime.tv_nsec = sbi->build_time_nsec; inode->i_size = le32_to_cpu(dic->i_size); if (erofs_inode_is_data_compressed(vi->datalayout)) @@ -111,22 +159,32 @@ erofs_err(inode->i_sb, "unsupported on-disk inode version %u of nid %llu", erofs_inode_version(ifmt), vi->nid); - DBG_BUGON(1); - return -EOPNOTSUPP; + err = -EOPNOTSUPP; + goto err_out; } + inode->i_mtime.tv_sec = inode->i_ctime.tv_sec; + inode->i_atime.tv_sec = inode->i_ctime.tv_sec; + inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec; + inode->i_atime.tv_nsec = inode->i_ctime.tv_nsec; + if (!nblks) /* measure inode.i_blocks as generic filesystems */ inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9; else inode->i_blocks = nblks << LOG_SECTORS_PER_BLOCK; - return 0; + return page; bogusimode: erofs_err(inode->i_sb, "bogus i_mode (%o) @ nid %llu", inode->i_mode, vi->nid); + err = -EFSCORRUPTED; +err_out: DBG_BUGON(1); - return -EFSCORRUPTED; + kfree(copied); + unlock_page(page); + put_page(page); + return ERR_PTR(err); } static int erofs_fill_symlink(struct inode *inode, void *data, @@ -146,7 +204,7 @@ if (!lnk) return -ENOMEM; - m_pofs += vi->inode_isize + vi->xattr_isize; + m_pofs += vi->xattr_isize; /* inline symlink data shouldn't cross page boundary as well */ if (m_pofs + inode->i_size > PAGE_SIZE) { kfree(lnk); @@ -167,37 +225,17 @@ static int erofs_fill_inode(struct inode *inode, int isdir) { - struct super_block *sb = inode->i_sb; struct erofs_inode *vi = EROFS_I(inode); struct page *page; - void *data; - int err; - erofs_blk_t blkaddr; unsigned int ofs; - erofs_off_t inode_loc; + int err = 0; trace_erofs_fill_inode(inode, isdir); - inode_loc = iloc(EROFS_SB(sb), vi->nid); - blkaddr = erofs_blknr(inode_loc); - ofs = erofs_blkoff(inode_loc); - - erofs_dbg("%s, reading inode nid %llu at %u of blkaddr %u", - __func__, vi->nid, ofs, blkaddr); - page = erofs_get_meta_page(sb, blkaddr); - - if (IS_ERR(page)) { - erofs_err(sb, "failed to get inode (nid: %llu) page, err %ld", - vi->nid, PTR_ERR(page)); + /* read inode base data from disk */ + page = erofs_read_inode(inode, &ofs); + if (IS_ERR(page)) return PTR_ERR(page); - } - - DBG_BUGON(!PageUptodate(page)); - data = page_address(page); - - err = erofs_read_inode(inode, data + ofs); - if (err) - goto out_unlock; /* setup the new inode */ switch (inode->i_mode & S_IFMT) { @@ -210,7 +248,7 @@ inode->i_fop = &erofs_dir_fops; break; case S_IFLNK: - err = erofs_fill_symlink(inode, data, ofs); + err = erofs_fill_symlink(inode, page_address(page), ofs); if (err) goto out_unlock; inode_nohighmem(inode); --- linux-5.8.0.orig/fs/erofs/super.c +++ linux-5.8.0/fs/erofs/super.c @@ -158,8 +158,8 @@ blkszbits = dsb->blkszbits; /* 9(512 bytes) + LOG_SECTORS_PER_BLOCK == LOG_BLOCK_SIZE */ if (blkszbits != LOG_BLOCK_SIZE) { - erofs_err(sb, "blksize %u isn't supported on this platform", - 1 << blkszbits); + erofs_err(sb, "blkszbits %u isn't supported on this platform", + blkszbits); goto out; } --- linux-5.8.0.orig/fs/erofs/xattr.c +++ linux-5.8.0/fs/erofs/xattr.c @@ -48,8 +48,14 @@ int ret = 0; /* the most case is that xattrs of this inode are initialized. */ - if (test_bit(EROFS_I_EA_INITED_BIT, &vi->flags)) + if (test_bit(EROFS_I_EA_INITED_BIT, &vi->flags)) { + /* + * paired with smp_mb() at the end of the function to ensure + * fields will only be observed after the bit is set. + */ + smp_mb(); return 0; + } if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_XATTR_BIT, TASK_KILLABLE)) return -ERESTARTSYS; @@ -137,6 +143,8 @@ } xattr_iter_end(&it, atomic_map); + /* paired with smp_mb() at the beginning of the function. */ + smp_mb(); set_bit(EROFS_I_EA_INITED_BIT, &vi->flags); out_unlock: @@ -473,8 +481,6 @@ return -EOPNOTSUPP; break; case EROFS_XATTR_INDEX_TRUSTED: - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; break; case EROFS_XATTR_INDEX_SECURITY: break; --- linux-5.8.0.orig/fs/erofs/zdata.c +++ linux-5.8.0/fs/erofs/zdata.c @@ -1080,8 +1080,11 @@ cond_resched(); goto repeat; } - set_page_private(page, (unsigned long)pcl); - SetPagePrivate(page); + + if (tocache) { + set_page_private(page, (unsigned long)pcl); + SetPagePrivate(page); + } out: /* the only exit (for tracing and debugging) */ return page; } --- linux-5.8.0.orig/fs/erofs/zmap.c +++ linux-5.8.0/fs/erofs/zmap.c @@ -36,8 +36,14 @@ void *kaddr; struct z_erofs_map_header *h; - if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) + if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) { + /* + * paired with smp_mb() at the end of the function to ensure + * fields will only be observed after the bit is set. + */ + smp_mb(); return 0; + } if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_Z_BIT, TASK_KILLABLE)) return -ERESTARTSYS; @@ -83,6 +89,8 @@ vi->z_physical_clusterbits[1] = vi->z_logical_clusterbits + ((h->h_clusterbits >> 5) & 7); + /* paired with smp_mb() at the beginning of the function */ + smp_mb(); set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); unmap_done: kunmap_atomic(kaddr); --- linux-5.8.0.orig/fs/eventpoll.c +++ linux-5.8.0/fs/eventpoll.c @@ -218,8 +218,7 @@ struct file *file; /* used to optimize loop detection check */ - struct list_head visited_list_link; - int visited; + u64 gen; #ifdef CONFIG_NET_RX_BUSY_POLL /* used to track busy poll napi_id */ @@ -274,6 +273,8 @@ */ static DEFINE_MUTEX(epmutex); +static u64 loop_check_gen = 0; + /* Used to check for epoll file descriptor inclusion loops */ static struct nested_calls poll_loop_ncalls; @@ -283,9 +284,6 @@ /* Slab cache used to allocate "struct eppoll_entry" */ static struct kmem_cache *pwq_cache __read_mostly; -/* Visited nodes during ep_loop_check(), so we can unset them when we finish */ -static LIST_HEAD(visited_list); - /* * List of files with newly added links, where we may need to limit the number * of emanating paths. Protected by the epmutex. @@ -1064,7 +1062,7 @@ return epir; } -#ifdef CONFIG_CHECKPOINT_RESTORE +#ifdef CONFIG_KCMP static struct epitem *ep_find_tfd(struct eventpoll *ep, int tfd, unsigned long toff) { struct rb_node *rbp; @@ -1106,7 +1104,7 @@ return file_raw; } -#endif /* CONFIG_CHECKPOINT_RESTORE */ +#endif /* CONFIG_KCMP */ /** * Adds a new entry to the tail of the list in a lockless way, i.e. @@ -1450,7 +1448,7 @@ static int ep_create_wakeup_source(struct epitem *epi) { - const char *name; + struct name_snapshot n; struct wakeup_source *ws; if (!epi->ep->ws) { @@ -1459,8 +1457,9 @@ return -ENOMEM; } - name = epi->ffd.file->f_path.dentry->d_name.name; - ws = wakeup_source_register(NULL, name); + take_dentry_name_snapshot(&n, epi->ffd.file->f_path.dentry); + ws = wakeup_source_register(NULL, n.name.name); + release_dentry_name_snapshot(&n); if (!ws) return -ENOMEM; @@ -1522,6 +1521,22 @@ RCU_INIT_POINTER(epi->ws, NULL); } + /* Add the current item to the list of active epoll hook for this file */ + spin_lock(&tfile->f_lock); + list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links); + spin_unlock(&tfile->f_lock); + + /* + * Add the current item to the RB tree. All RB tree operations are + * protected by "mtx", and ep_insert() is called with "mtx" held. + */ + ep_rbtree_insert(ep, epi); + + /* now check if we've created too many backpaths */ + error = -EINVAL; + if (full_check && reverse_path_check()) + goto error_remove_epi; + /* Initialize the poll table using the queue callback */ epq.epi = epi; init_poll_funcptr(&epq.pt, ep_ptable_queue_proc); @@ -1544,22 +1559,6 @@ if (epi->nwait < 0) goto error_unregister; - /* Add the current item to the list of active epoll hook for this file */ - spin_lock(&tfile->f_lock); - list_add_tail_rcu(&epi->fllink, &tfile->f_ep_links); - spin_unlock(&tfile->f_lock); - - /* - * Add the current item to the RB tree. All RB tree operations are - * protected by "mtx", and ep_insert() is called with "mtx" held. - */ - ep_rbtree_insert(ep, epi); - - /* now check if we've created too many backpaths */ - error = -EINVAL; - if (full_check && reverse_path_check()) - goto error_remove_epi; - /* We have to drop the new item inside our item list to keep track of it */ write_lock_irq(&ep->lock); @@ -1588,6 +1587,8 @@ return 0; +error_unregister: + ep_unregister_pollwait(ep, epi); error_remove_epi: spin_lock(&tfile->f_lock); list_del_rcu(&epi->fllink); @@ -1595,9 +1596,6 @@ rb_erase_cached(&epi->rbn, &ep->rbr); -error_unregister: - ep_unregister_pollwait(ep, epi); - /* * We need to do this because an event could have been arrived on some * allocated wait queue. Note that we don't care about the ep->ovflist @@ -1904,23 +1902,30 @@ } write_unlock_irq(&ep->lock); - if (eavail || res) - break; + if (!eavail && !res) + timed_out = !schedule_hrtimeout_range(to, slack, + HRTIMER_MODE_ABS); - if (!schedule_hrtimeout_range(to, slack, HRTIMER_MODE_ABS)) { - timed_out = 1; - break; - } - - /* We were woken up, thus go and try to harvest some events */ + /* + * We were woken up, thus go and try to harvest some events. + * If timed out and still on the wait queue, recheck eavail + * carefully under lock, below. + */ eavail = 1; - } while (0); __set_current_state(TASK_RUNNING); if (!list_empty_careful(&wait.entry)) { write_lock_irq(&ep->lock); + /* + * If the thread timed out and is not on the wait queue, it + * means that the thread was woken up after its timeout expired + * before it could reacquire the lock. Thus, when wait.entry is + * empty, it needs to harvest events. + */ + if (timed_out) + eavail = list_empty(&wait.entry); __remove_wait_queue(&ep->wq, &wait); write_unlock_irq(&ep->lock); } @@ -1972,13 +1977,12 @@ struct epitem *epi; mutex_lock_nested(&ep->mtx, call_nests + 1); - ep->visited = 1; - list_add(&ep->visited_list_link, &visited_list); + ep->gen = loop_check_gen; for (rbp = rb_first_cached(&ep->rbr); rbp; rbp = rb_next(rbp)) { epi = rb_entry(rbp, struct epitem, rbn); if (unlikely(is_file_epoll(epi->ffd.file))) { ep_tovisit = epi->ffd.file->private_data; - if (ep_tovisit->visited) + if (ep_tovisit->gen == loop_check_gen) continue; error = ep_call_nested(&poll_loop_ncalls, ep_loop_check_proc, epi->ffd.file, @@ -1994,9 +1998,11 @@ * not already there, and calling reverse_path_check() * during ep_insert(). */ - if (list_empty(&epi->ffd.file->f_tfile_llink)) - list_add(&epi->ffd.file->f_tfile_llink, - &tfile_check_list); + if (list_empty(&epi->ffd.file->f_tfile_llink)) { + if (get_file_rcu(epi->ffd.file)) + list_add(&epi->ffd.file->f_tfile_llink, + &tfile_check_list); + } } } mutex_unlock(&ep->mtx); @@ -2017,18 +2023,8 @@ */ static int ep_loop_check(struct eventpoll *ep, struct file *file) { - int ret; - struct eventpoll *ep_cur, *ep_next; - - ret = ep_call_nested(&poll_loop_ncalls, + return ep_call_nested(&poll_loop_ncalls, ep_loop_check_proc, file, ep, current); - /* clear visited list */ - list_for_each_entry_safe(ep_cur, ep_next, &visited_list, - visited_list_link) { - ep_cur->visited = 0; - list_del(&ep_cur->visited_list_link); - } - return ret; } static void clear_tfile_check_list(void) @@ -2040,6 +2036,7 @@ file = list_first_entry(&tfile_check_list, struct file, f_tfile_llink); list_del_init(&file->f_tfile_llink); + fput(file); } INIT_LIST_HEAD(&tfile_check_list); } @@ -2192,33 +2189,32 @@ goto error_tgt_fput; if (op == EPOLL_CTL_ADD) { if (!list_empty(&f.file->f_ep_links) || + ep->gen == loop_check_gen || is_file_epoll(tf.file)) { mutex_unlock(&ep->mtx); error = epoll_mutex_lock(&epmutex, 0, nonblock); if (error) goto error_tgt_fput; + loop_check_gen++; full_check = 1; if (is_file_epoll(tf.file)) { error = -ELOOP; - if (ep_loop_check(ep, tf.file) != 0) { - clear_tfile_check_list(); + if (ep_loop_check(ep, tf.file) != 0) goto error_tgt_fput; - } - } else + } else { + get_file(tf.file); list_add(&tf.file->f_tfile_llink, &tfile_check_list); + } error = epoll_mutex_lock(&ep->mtx, 0, nonblock); - if (error) { -out_del: - list_del(&tf.file->f_tfile_llink); + if (error) goto error_tgt_fput; - } if (is_file_epoll(tf.file)) { tep = tf.file->private_data; error = epoll_mutex_lock(&tep->mtx, 1, nonblock); if (error) { mutex_unlock(&ep->mtx); - goto out_del; + goto error_tgt_fput; } } } @@ -2239,8 +2235,6 @@ error = ep_insert(ep, epds, tf.file, fd, full_check); } else error = -EEXIST; - if (full_check) - clear_tfile_check_list(); break; case EPOLL_CTL_DEL: if (epi) @@ -2263,8 +2257,11 @@ mutex_unlock(&ep->mtx); error_tgt_fput: - if (full_check) + if (full_check) { + clear_tfile_check_list(); + loop_check_gen++; mutex_unlock(&epmutex); + } fdput(tf); error_fput: --- linux-5.8.0.orig/fs/exec.c +++ linux-5.8.0/fs/exec.c @@ -62,6 +62,7 @@ #include #include #include +#include #include #include @@ -111,6 +112,14 @@ return (path->mnt->mnt_flags & MNT_NOEXEC) || (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); } +EXPORT_SYMBOL_GPL(path_noexec); + +bool path_nosuid(const struct path *path) +{ + return !mnt_may_suid(path->mnt) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOSUID); +} +EXPORT_SYMBOL(path_nosuid); #ifdef CONFIG_USELIB /* @@ -927,6 +936,7 @@ { loff_t i_size, pos; ssize_t bytes = 0; + void *allocated = NULL; int ret; if (!S_ISREG(file_inode(file)->i_mode) || max_size < 0) @@ -950,8 +960,8 @@ goto out; } - if (id != READING_FIRMWARE_PREALLOC_BUFFER) - *buf = vmalloc(i_size); + if (!*buf) + *buf = allocated = vmalloc(i_size); if (!*buf) { ret = -ENOMEM; goto out; @@ -980,7 +990,7 @@ out_free: if (ret < 0) { - if (id != READING_FIRMWARE_PREALLOC_BUFFER) { + if (allocated) { vfree(*buf); *buf = NULL; } @@ -1067,8 +1077,8 @@ /* * Maps the mm_struct mm into the current task struct. - * On success, this function returns with the mutex - * exec_update_mutex locked. + * On success, this function returns with exec_update_lock + * held for writing. */ static int exec_mmap(struct mm_struct *mm) { @@ -1083,7 +1093,7 @@ if (old_mm) sync_mm_rss(old_mm); - ret = mutex_lock_killable(&tsk->signal->exec_update_mutex); + ret = down_write_killable(&tsk->signal->exec_update_lock); if (ret) return ret; @@ -1097,17 +1107,30 @@ mmap_read_lock(old_mm); if (unlikely(old_mm->core_state)) { mmap_read_unlock(old_mm); - mutex_unlock(&tsk->signal->exec_update_mutex); + up_write(&tsk->signal->exec_update_lock); return -EINTR; } } task_lock(tsk); - active_mm = tsk->active_mm; membarrier_exec_mmap(mm); - tsk->mm = mm; + + local_irq_disable(); + active_mm = tsk->active_mm; tsk->active_mm = mm; + tsk->mm = mm; + /* + * This prevents preemption while active_mm is being loaded and + * it and mm are being updated, which could cause problems for + * lazy tlb mm refcounting when these are updated by context + * switches. Not all architectures can handle irqs off over + * activate_mm yet. + */ + if (!IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) + local_irq_enable(); activate_mm(active_mm, mm); + if (IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) + local_irq_enable(); tsk->mm->vmacache_seqnum = 0; vmacache_flush(tsk); task_unlock(tsk); @@ -1466,7 +1489,7 @@ return 0; out_unlock: - mutex_unlock(&me->signal->exec_update_mutex); + up_write(&me->signal->exec_update_lock); out: return retval; } @@ -1507,7 +1530,7 @@ * some architectures like powerpc */ me->mm->task_size = TASK_SIZE; - mutex_unlock(&me->signal->exec_update_mutex); + up_write(&me->signal->exec_update_lock); mutex_unlock(&me->signal->cred_guard_mutex); } EXPORT_SYMBOL(setup_new_exec); @@ -1617,7 +1640,7 @@ kuid_t uid; kgid_t gid; - if (!mnt_may_suid(file->f_path.mnt)) + if (path_nosuid(&file->f_path)) return; if (task_no_new_privs(current)) @@ -1847,6 +1870,11 @@ * further execve() calls fail. */ current->flags &= ~PF_NPROC_EXCEEDED; + /* + * Cancel any io_uring activity across execve + */ + io_uring_task_cancel(); + retval = unshare_files(&displaced); if (retval) goto out_ret; --- linux-5.8.0.orig/fs/exfat/cache.c +++ linux-5.8.0/fs/exfat/cache.c @@ -17,7 +17,6 @@ #include "exfat_raw.h" #include "exfat_fs.h" -#define EXFAT_CACHE_VALID 0 #define EXFAT_MAX_CACHE 16 struct exfat_cache { @@ -61,16 +60,6 @@ kmem_cache_destroy(exfat_cachep); } -void exfat_cache_init_inode(struct inode *inode) -{ - struct exfat_inode_info *ei = EXFAT_I(inode); - - spin_lock_init(&ei->cache_lru_lock); - ei->nr_caches = 0; - ei->cache_valid_id = EXFAT_CACHE_VALID + 1; - INIT_LIST_HEAD(&ei->cache_lru); -} - static inline struct exfat_cache *exfat_cache_alloc(void) { return kmem_cache_alloc(exfat_cachep, GFP_NOFS); --- linux-5.8.0.orig/fs/exfat/exfat_fs.h +++ linux-5.8.0/fs/exfat/exfat_fs.h @@ -250,6 +250,8 @@ struct rcu_head rcu; }; +#define EXFAT_CACHE_VALID 0 + /* * EXFAT file system inode in-memory data */ @@ -429,7 +431,6 @@ /* cache.c */ int exfat_cache_init(void); void exfat_cache_shutdown(void); -void exfat_cache_init_inode(struct inode *inode); void exfat_cache_inval_inode(struct inode *inode); int exfat_get_cluster(struct inode *inode, unsigned int cluster, unsigned int *fclus, unsigned int *dclus, --- linux-5.8.0.orig/fs/exfat/exfat_raw.h +++ linux-5.8.0/fs/exfat/exfat_raw.h @@ -78,6 +78,10 @@ #define EXFAT_FILE_NAME_LEN 15 +#define EXFAT_MIN_SECT_SIZE_BITS 9 +#define EXFAT_MAX_SECT_SIZE_BITS 12 +#define EXFAT_MAX_SECT_PER_CLUS_BITS(x) (25 - (x)->sect_size_bits) + /* EXFAT: Main and Backup Boot Sector (512 bytes) */ struct boot_sector { __u8 jmp_boot[BOOTSEC_JUMP_BOOT_LEN]; --- linux-5.8.0.orig/fs/exfat/inode.c +++ linux-5.8.0/fs/exfat/inode.c @@ -610,8 +610,6 @@ ei->i_crtime = info->crtime; inode->i_atime = info->atime; - exfat_cache_init_inode(inode); - return 0; } --- linux-5.8.0.orig/fs/exfat/nls.c +++ linux-5.8.0/fs/exfat/nls.c @@ -659,7 +659,7 @@ unsigned char skip = false; unsigned short *upcase_table; - upcase_table = kcalloc(UTBL_COUNT, sizeof(unsigned short), GFP_KERNEL); + upcase_table = kvcalloc(UTBL_COUNT, sizeof(unsigned short), GFP_KERNEL); if (!upcase_table) return -ENOMEM; @@ -715,7 +715,7 @@ unsigned short uni = 0, *upcase_table; unsigned int index = 0; - upcase_table = kcalloc(UTBL_COUNT, sizeof(unsigned short), GFP_KERNEL); + upcase_table = kvcalloc(UTBL_COUNT, sizeof(unsigned short), GFP_KERNEL); if (!upcase_table) return -ENOMEM; @@ -803,5 +803,5 @@ void exfat_free_upcase_table(struct exfat_sb_info *sbi) { - kfree(sbi->vol_utbl); + kvfree(sbi->vol_utbl); } --- linux-5.8.0.orig/fs/exfat/super.c +++ linux-5.8.0/fs/exfat/super.c @@ -361,7 +361,6 @@ inode->i_mtime = inode->i_atime = inode->i_ctime = ei->i_crtime = current_time(inode); exfat_truncate_atime(&inode->i_atime); - exfat_cache_init_inode(inode); return 0; } @@ -369,8 +368,7 @@ { struct exfat_sb_info *sbi = EXFAT_SB(sb); - if (!is_power_of_2(logical_sect) || - logical_sect < 512 || logical_sect > 4096) { + if (!is_power_of_2(logical_sect)) { exfat_err(sb, "bogus logical sector size %u", logical_sect); return -EIO; } @@ -439,6 +437,25 @@ return -EINVAL; } + /* + * sect_size_bits could be at least 9 and at most 12. + */ + if (p_boot->sect_size_bits < EXFAT_MIN_SECT_SIZE_BITS || + p_boot->sect_size_bits > EXFAT_MAX_SECT_SIZE_BITS) { + exfat_err(sb, "bogus sector size bits : %u\n", + p_boot->sect_size_bits); + return -EINVAL; + } + + /* + * sect_per_clus_bits could be at least 0 and at most 25 - sect_size_bits. + */ + if (p_boot->sect_per_clus_bits > EXFAT_MAX_SECT_PER_CLUS_BITS(p_boot)) { + exfat_err(sb, "bogus sectors bits per cluster : %u\n", + p_boot->sect_per_clus_bits); + return -EINVAL; + } + sbi->sect_per_clus = 1 << p_boot->sect_per_clus_bits; sbi->sect_per_clus_bits = p_boot->sect_per_clus_bits; sbi->cluster_size_bits = p_boot->sect_per_clus_bits + @@ -464,16 +481,19 @@ sbi->used_clusters = EXFAT_CLUSTERS_UNTRACKED; /* check consistencies */ - if (sbi->num_FAT_sectors << p_boot->sect_size_bits < - sbi->num_clusters * 4) { + if ((u64)sbi->num_FAT_sectors << p_boot->sect_size_bits < + (u64)sbi->num_clusters * 4) { exfat_err(sb, "bogus fat length"); return -EINVAL; } + if (sbi->data_start_sector < - sbi->FAT1_start_sector + sbi->num_FAT_sectors * p_boot->num_fats) { + (u64)sbi->FAT1_start_sector + + (u64)sbi->num_FAT_sectors * p_boot->num_fats) { exfat_err(sb, "bogus data start sector"); return -EINVAL; } + if (sbi->vol_flag & VOL_DIRTY) exfat_warn(sb, "Volume was not properly unmounted. Some data may be corrupt. Please run fsck."); if (sbi->vol_flag & ERR_MEDIUM) @@ -747,6 +767,10 @@ { struct exfat_inode_info *ei = (struct exfat_inode_info *)foo; + spin_lock_init(&ei->cache_lru_lock); + ei->nr_caches = 0; + ei->cache_valid_id = EXFAT_CACHE_VALID + 1; + INIT_LIST_HEAD(&ei->cache_lru); INIT_HLIST_NODE(&ei->i_hash_fat); inode_init_once(&ei->vfs_inode); } --- linux-5.8.0.orig/fs/ext2/file.c +++ linux-5.8.0/fs/ext2/file.c @@ -93,8 +93,10 @@ struct inode *inode = file_inode(vmf->vma->vm_file); struct ext2_inode_info *ei = EXT2_I(inode); vm_fault_t ret; + bool write = (vmf->flags & FAULT_FLAG_WRITE) && + (vmf->vma->vm_flags & VM_SHARED); - if (vmf->flags & FAULT_FLAG_WRITE) { + if (write) { sb_start_pagefault(inode->i_sb); file_update_time(vmf->vma->vm_file); } @@ -103,7 +105,7 @@ ret = dax_iomap_fault(vmf, PE_SIZE_PTE, NULL, NULL, &ext2_iomap_ops); up_read(&ei->dax_sem); - if (vmf->flags & FAULT_FLAG_WRITE) + if (write) sb_end_pagefault(inode->i_sb); return ret; } --- linux-5.8.0.orig/fs/ext2/ialloc.c +++ linux-5.8.0/fs/ext2/ialloc.c @@ -80,6 +80,7 @@ if (dir) le16_add_cpu(&desc->bg_used_dirs_count, -1); spin_unlock(sb_bgl_lock(EXT2_SB(sb), group)); + percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter); if (dir) percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter); mark_buffer_dirty(bh); @@ -528,7 +529,7 @@ goto fail; } - percpu_counter_add(&sbi->s_freeinodes_counter, -1); + percpu_counter_dec(&sbi->s_freeinodes_counter); if (S_ISDIR(mode)) percpu_counter_inc(&sbi->s_dirs_counter); --- linux-5.8.0.orig/fs/ext4/Kconfig +++ linux-5.8.0/fs/ext4/Kconfig @@ -103,8 +103,7 @@ config EXT4_KUNIT_TESTS tristate "KUnit tests for ext4" if !KUNIT_ALL_TESTS - select EXT4_FS - depends on KUNIT + depends on EXT4_FS && KUNIT default KUNIT_ALL_TESTS help This builds the ext4 KUnit tests. --- linux-5.8.0.orig/fs/ext4/balloc.c +++ linux-5.8.0/fs/ext4/balloc.c @@ -487,6 +487,7 @@ * submit the buffer_head for reading */ set_buffer_new(bh); + clear_buffer_verified(bh); trace_ext4_read_block_bitmap_load(sb, block_group); bh->b_end_io = ext4_end_bitmap_read; get_bh(bh); @@ -614,27 +615,41 @@ /** * ext4_should_retry_alloc() - check if a block allocation should be retried - * @sb: super block - * @retries: number of attemps has been made + * @sb: superblock + * @retries: number of retry attempts made so far * - * ext4_should_retry_alloc() is called when ENOSPC is returned, and if - * it is profitable to retry the operation, this function will wait - * for the current or committing transaction to complete, and then - * return TRUE. We will only retry once. + * ext4_should_retry_alloc() is called when ENOSPC is returned while + * attempting to allocate blocks. If there's an indication that a pending + * journal transaction might free some space and allow another attempt to + * succeed, this function will wait for the current or committing transaction + * to complete and then return TRUE. */ int ext4_should_retry_alloc(struct super_block *sb, int *retries) { - if (!ext4_has_free_clusters(EXT4_SB(sb), 1, 0) || - (*retries)++ > 1 || - !EXT4_SB(sb)->s_journal) + struct ext4_sb_info *sbi = EXT4_SB(sb); + + if (!sbi->s_journal) return 0; - smp_mb(); - if (EXT4_SB(sb)->s_mb_free_pending == 0) + if (++(*retries) > 3) { + percpu_counter_inc(&sbi->s_sra_exceeded_retry_limit); return 0; + } + /* + * if there's no indication that blocks are about to be freed it's + * possible we just missed a transaction commit that did so + */ + smp_mb(); + if (sbi->s_mb_free_pending == 0) + return ext4_has_free_clusters(sbi, 1, 0); + + /* + * it's possible we've just missed a transaction commit here, + * so ignore the returned status + */ jbd_debug(1, "%s: retrying operation after ENOSPC\n", sb->s_id); - jbd2_journal_force_commit_nested(EXT4_SB(sb)->s_journal); + (void) jbd2_journal_force_commit_nested(sbi->s_journal); return 1; } --- linux-5.8.0.orig/fs/ext4/block_validity.c +++ linux-5.8.0/fs/ext4/block_validity.c @@ -24,6 +24,7 @@ struct rb_node node; ext4_fsblk_t start_blk; unsigned int count; + u32 ino; }; static struct kmem_cache *ext4_system_zone_cachep; @@ -45,7 +46,8 @@ static inline int can_merge(struct ext4_system_zone *entry1, struct ext4_system_zone *entry2) { - if ((entry1->start_blk + entry1->count) == entry2->start_blk) + if ((entry1->start_blk + entry1->count) == entry2->start_blk && + entry1->ino == entry2->ino) return 1; return 0; } @@ -66,9 +68,9 @@ */ static int add_system_zone(struct ext4_system_blocks *system_blks, ext4_fsblk_t start_blk, - unsigned int count) + unsigned int count, u32 ino) { - struct ext4_system_zone *new_entry = NULL, *entry; + struct ext4_system_zone *new_entry, *entry; struct rb_node **n = &system_blks->root.rb_node, *node; struct rb_node *parent = NULL, *new_node = NULL; @@ -79,30 +81,21 @@ n = &(*n)->rb_left; else if (start_blk >= (entry->start_blk + entry->count)) n = &(*n)->rb_right; - else { - if (start_blk + count > (entry->start_blk + - entry->count)) - entry->count = (start_blk + count - - entry->start_blk); - new_node = *n; - new_entry = rb_entry(new_node, struct ext4_system_zone, - node); - break; - } + else /* Unexpected overlap of system zones. */ + return -EFSCORRUPTED; } - if (!new_entry) { - new_entry = kmem_cache_alloc(ext4_system_zone_cachep, - GFP_KERNEL); - if (!new_entry) - return -ENOMEM; - new_entry->start_blk = start_blk; - new_entry->count = count; - new_node = &new_entry->node; + new_entry = kmem_cache_alloc(ext4_system_zone_cachep, + GFP_KERNEL); + if (!new_entry) + return -ENOMEM; + new_entry->start_blk = start_blk; + new_entry->count = count; + new_entry->ino = ino; + new_node = &new_entry->node; - rb_link_node(new_node, parent, n); - rb_insert_color(new_node, &system_blks->root); - } + rb_link_node(new_node, parent, n); + rb_insert_color(new_node, &system_blks->root); /* Can we merge to the left? */ node = rb_prev(new_node); @@ -159,7 +152,7 @@ static int ext4_data_block_valid_rcu(struct ext4_sb_info *sbi, struct ext4_system_blocks *system_blks, ext4_fsblk_t start_blk, - unsigned int count) + unsigned int count, ino_t ino) { struct ext4_system_zone *entry; struct rb_node *n; @@ -180,7 +173,7 @@ else if (start_blk >= (entry->start_blk + entry->count)) n = n->rb_right; else - return 0; + return entry->ino == ino; } return 1; } @@ -214,19 +207,18 @@ if (n == 0) { i++; } else { - if (!ext4_data_block_valid_rcu(sbi, system_blks, - map.m_pblk, n)) { - err = -EFSCORRUPTED; - __ext4_error(sb, __func__, __LINE__, -err, - map.m_pblk, "blocks %llu-%llu " - "from inode %u overlap system zone", - map.m_pblk, - map.m_pblk + map.m_len - 1, ino); + err = add_system_zone(system_blks, map.m_pblk, n, ino); + if (err < 0) { + if (err == -EFSCORRUPTED) { + __ext4_error(sb, __func__, __LINE__, + -err, map.m_pblk, + "blocks %llu-%llu from inode %u overlap system zone", + map.m_pblk, + map.m_pblk + map.m_len - 1, + ino); + } break; } - err = add_system_zone(system_blks, map.m_pblk, n); - if (err < 0) - break; i += n; } } @@ -262,14 +254,6 @@ int flex_size = ext4_flex_bg_size(sbi); int ret; - if (!test_opt(sb, BLOCK_VALIDITY)) { - if (sbi->system_blks) - ext4_release_system_zone(sb); - return 0; - } - if (sbi->system_blks) - return 0; - system_blks = kzalloc(sizeof(*system_blks), GFP_KERNEL); if (!system_blks) return -ENOMEM; @@ -280,19 +264,19 @@ ((i < 5) || ((i % flex_size) == 0))) add_system_zone(system_blks, ext4_group_first_block_no(sb, i), - ext4_bg_num_gdb(sb, i) + 1); + ext4_bg_num_gdb(sb, i) + 1, 0); gdp = ext4_get_group_desc(sb, i, NULL); ret = add_system_zone(system_blks, - ext4_block_bitmap(sb, gdp), 1); + ext4_block_bitmap(sb, gdp), 1, 0); if (ret) goto err; ret = add_system_zone(system_blks, - ext4_inode_bitmap(sb, gdp), 1); + ext4_inode_bitmap(sb, gdp), 1, 0); if (ret) goto err; ret = add_system_zone(system_blks, ext4_inode_table(sb, gdp), - sbi->s_itb_per_group); + sbi->s_itb_per_group, 0); if (ret) goto err; } @@ -341,7 +325,7 @@ call_rcu(&system_blks->rcu, ext4_destroy_system_zone); } -int ext4_data_block_valid(struct ext4_sb_info *sbi, ext4_fsblk_t start_blk, +int ext4_inode_block_valid(struct inode *inode, ext4_fsblk_t start_blk, unsigned int count) { struct ext4_system_blocks *system_blks; @@ -353,9 +337,9 @@ * mount option. */ rcu_read_lock(); - system_blks = rcu_dereference(sbi->system_blks); - ret = ext4_data_block_valid_rcu(sbi, system_blks, start_blk, - count); + system_blks = rcu_dereference(EXT4_SB(inode->i_sb)->system_blks); + ret = ext4_data_block_valid_rcu(EXT4_SB(inode->i_sb), system_blks, + start_blk, count, inode->i_ino); rcu_read_unlock(); return ret; } @@ -374,8 +358,7 @@ while (bref < p+max) { blk = le32_to_cpu(*bref++); if (blk && - unlikely(!ext4_data_block_valid(EXT4_SB(inode->i_sb), - blk, 1))) { + unlikely(!ext4_inode_block_valid(inode, blk, 1))) { ext4_error_inode(inode, function, line, blk, "invalid block"); return -EFSCORRUPTED; --- linux-5.8.0.orig/fs/ext4/ext4.h +++ linux-5.8.0/fs/ext4/ext4.h @@ -466,7 +466,7 @@ /* Flags which are mutually exclusive to DAX */ #define EXT4_DAX_MUT_EXCL (EXT4_VERITY_FL | EXT4_ENCRYPT_FL |\ - EXT4_JOURNAL_DATA_FL) + EXT4_JOURNAL_DATA_FL | EXT4_INLINE_DATA_FL) /* Mask out flags that are inappropriate for the given type of inode. */ static inline __u32 ext4_mask_flags(umode_t mode, __u32 flags) @@ -1054,6 +1054,7 @@ struct timespec64 i_crtime; /* mballoc */ + atomic_t i_prealloc_active; struct list_head i_prealloc_list; spinlock_t i_prealloc_lock; @@ -1445,6 +1446,7 @@ struct percpu_counter s_freeinodes_counter; struct percpu_counter s_dirs_counter; struct percpu_counter s_dirtyclusters_counter; + struct percpu_counter s_sra_exceeded_retry_limit; struct blockgroup_lock *s_blockgroup_lock; struct proc_dir_entry *s_proc; struct kobject s_kobj; @@ -1501,6 +1503,7 @@ unsigned int s_mb_stats; unsigned int s_mb_order2_reqs; unsigned int s_mb_group_prealloc; + unsigned int s_mb_max_inode_prealloc; unsigned int s_max_dir_size_kb; /* where last allocation was done - for stream allocation */ unsigned long s_mb_last_group; @@ -1585,6 +1588,9 @@ #ifdef CONFIG_EXT4_DEBUG unsigned long s_simulate_fail; #endif + /* Record the errseq of the backing block device */ + errseq_t s_bdev_wb_err; + spinlock_t s_bdev_wb_lock; }; static inline struct ext4_sb_info *EXT4_SB(struct super_block *sb) @@ -2589,7 +2595,8 @@ struct ext4_filename *fname); static inline void ext4_update_dx_flag(struct inode *inode) { - if (!ext4_has_feature_dir_index(inode->i_sb)) { + if (!ext4_has_feature_dir_index(inode->i_sb) && + ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) { /* ext4_iget() should have caught this... */ WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb)); ext4_clear_inode_flag(inode, EXT4_INODE_INDEX); @@ -2651,7 +2658,7 @@ extern ext4_fsblk_t ext4_mb_new_blocks(handle_t *, struct ext4_allocation_request *, int *); extern int ext4_mb_reserve_blocks(struct super_block *, int); -extern void ext4_discard_preallocations(struct inode *); +extern void ext4_discard_preallocations(struct inode *, unsigned int); extern int __init ext4_init_mballoc(void); extern void ext4_exit_mballoc(void); extern void ext4_free_blocks(handle_t *handle, struct inode *inode, @@ -3363,9 +3370,9 @@ extern int ext4_setup_system_zone(struct super_block *sb); extern int __init ext4_init_system_zone(void); extern void ext4_exit_system_zone(void); -extern int ext4_data_block_valid(struct ext4_sb_info *sbi, - ext4_fsblk_t start_blk, - unsigned int count); +extern int ext4_inode_block_valid(struct inode *inode, + ext4_fsblk_t start_blk, + unsigned int count); extern int ext4_check_blockref(const char *, unsigned int, struct inode *, __le32 *, unsigned int); --- linux-5.8.0.orig/fs/ext4/ext4_jbd2.c +++ linux-5.8.0/fs/ext4/ext4_jbd2.c @@ -195,6 +195,28 @@ jbd2_journal_abort_handle(handle); } +static void ext4_check_bdev_write_error(struct super_block *sb) +{ + struct address_space *mapping = sb->s_bdev->bd_inode->i_mapping; + struct ext4_sb_info *sbi = EXT4_SB(sb); + int err; + + /* + * If the block device has write error flag, it may have failed to + * async write out metadata buffers in the background. In this case, + * we could read old data from disk and write it out again, which + * may lead to on-disk filesystem inconsistency. + */ + if (errseq_check(&mapping->wb_err, READ_ONCE(sbi->s_bdev_wb_err))) { + spin_lock(&sbi->s_bdev_wb_lock); + err = errseq_check_and_advance(&mapping->wb_err, &sbi->s_bdev_wb_err); + spin_unlock(&sbi->s_bdev_wb_lock); + if (err) + ext4_error_err(sb, -err, + "Error while async write back metadata"); + } +} + int __ext4_journal_get_write_access(const char *where, unsigned int line, handle_t *handle, struct buffer_head *bh) { @@ -202,6 +224,9 @@ might_sleep(); + if (bh->b_bdev->bd_super) + ext4_check_bdev_write_error(bh->b_bdev->bd_super); + if (ext4_handle_valid(handle)) { err = jbd2_journal_get_write_access(handle, bh); if (err) --- linux-5.8.0.orig/fs/ext4/extents.c +++ linux-5.8.0/fs/ext4/extents.c @@ -100,7 +100,7 @@ * i_mutex. So we can safely drop the i_data_sem here. */ BUG_ON(EXT4_JOURNAL(inode) == NULL); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); up_write(&EXT4_I(inode)->i_data_sem); *dropped = 1; return 0; @@ -340,7 +340,7 @@ */ if (lblock + len <= lblock) return 0; - return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len); + return ext4_inode_block_valid(inode, block, len); } static int ext4_valid_extent_idx(struct inode *inode, @@ -348,7 +348,7 @@ { ext4_fsblk_t block = ext4_idx_pblock(ext_idx); - return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, 1); + return ext4_inode_block_valid(inode, block, 1); } static int ext4_valid_extent_entries(struct inode *inode, @@ -501,20 +501,17 @@ if (!bh_uptodate_or_lock(bh)) { trace_ext4_ext_load_extent(inode, pblk, _RET_IP_); + clear_buffer_verified(bh); err = bh_submit_read(bh); if (err < 0) goto errout; } if (buffer_verified(bh) && !(flags & EXT4_EX_FORCE_CACHE)) return bh; - if (!ext4_has_feature_journal(inode->i_sb) || - (inode->i_ino != - le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum))) { - err = __ext4_ext_check(function, line, inode, - ext_block_hdr(bh), depth, pblk); - if (err) - goto errout; - } + err = __ext4_ext_check(function, line, inode, + ext_block_hdr(bh), depth, pblk); + if (err) + goto errout; set_buffer_verified(bh); /* * If this is a leaf block, cache all of its entries @@ -1477,16 +1474,16 @@ } /* - * search the closest allocated block to the right for *logical - * and returns it at @logical + it's physical address at @phys - * if *logical is the largest allocated block, the function - * returns 0 at @phys - * return value contains 0 (success) or error code + * Search the closest allocated block to the right for *logical + * and returns it at @logical + it's physical address at @phys. + * If not exists, return 0 and @phys is set to 0. We will return + * 1 which means we found an allocated block and ret_ex is valid. + * Or return a (< 0) error code. */ static int ext4_ext_search_right(struct inode *inode, struct ext4_ext_path *path, ext4_lblk_t *logical, ext4_fsblk_t *phys, - struct ext4_extent **ret_ex) + struct ext4_extent *ret_ex) { struct buffer_head *bh = NULL; struct ext4_extent_header *eh; @@ -1580,10 +1577,11 @@ found_extent: *logical = le32_to_cpu(ex->ee_block); *phys = ext4_ext_pblock(ex); - *ret_ex = ex; + if (ret_ex) + *ret_ex = *ex; if (bh) put_bh(bh); - return 0; + return 1; } /* @@ -2874,8 +2872,8 @@ */ lblk = ex_end + 1; err = ext4_ext_search_right(inode, path, &lblk, &pblk, - &ex); - if (err) + NULL); + if (err < 0) goto out; if (pblk) { partial.pclu = EXT4_B2C(sbi, pblk); @@ -4043,7 +4041,7 @@ struct ext4_map_blocks *map, int flags) { struct ext4_ext_path *path = NULL; - struct ext4_extent newex, *ex, *ex2; + struct ext4_extent newex, *ex, ex2; struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); ext4_fsblk_t newblock = 0, pblk; int err = 0, depth, ret; @@ -4179,15 +4177,14 @@ if (err) goto out; ar.lright = map->m_lblk; - ex2 = NULL; err = ext4_ext_search_right(inode, path, &ar.lright, &ar.pright, &ex2); - if (err) + if (err < 0) goto out; /* Check if the extent after searching to the right implies a * cluster we can use. */ - if ((sbi->s_cluster_ratio > 1) && ex2 && - get_implied_cluster_alloc(inode->i_sb, map, ex2, path)) { + if ((sbi->s_cluster_ratio > 1) && err && + get_implied_cluster_alloc(inode->i_sb, map, &ex2, path)) { ar.len = allocated = map->m_len; newblock = map->m_pblk; goto got_allocated_blocks; @@ -4272,7 +4269,7 @@ * not a good idea to call discard here directly, * but otherwise we'd need to call it every free(). */ - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); if (flags & EXT4_GET_BLOCKS_DELALLOC_RESERVE) fb_flags = EXT4_FREE_BLOCKS_NO_QUOT_UPDATE; ext4_free_blocks(handle, inode, NULL, newblock, @@ -4775,7 +4772,7 @@ int ext4_convert_unwritten_io_end_vec(handle_t *handle, ext4_io_end_t *io_end) { - int ret, err = 0; + int ret = 0, err = 0; struct ext4_io_end_vec *io_end_vec; /* @@ -5299,7 +5296,7 @@ } down_write(&EXT4_I(inode)->i_data_sem); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); ret = ext4_es_remove_extent(inode, punch_start, EXT_MAX_BLOCKS - punch_start); @@ -5313,7 +5310,7 @@ up_write(&EXT4_I(inode)->i_data_sem); goto out_stop; } - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); ret = ext4_ext_shift_extents(inode, handle, punch_stop, punch_stop - punch_start, SHIFT_LEFT); @@ -5445,7 +5442,7 @@ goto out_stop; down_write(&EXT4_I(inode)->i_data_sem); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); path = ext4_find_extent(inode, offset_lblk, NULL, 0); if (IS_ERR(path)) { --- linux-5.8.0.orig/fs/ext4/file.c +++ linux-5.8.0/fs/ext4/file.c @@ -148,7 +148,7 @@ !EXT4_I(inode)->i_reserved_data_blocks) { down_write(&EXT4_I(inode)->i_data_sem); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); up_write(&EXT4_I(inode)->i_data_sem); } if (is_dx(inode) && filp->private_data) @@ -428,6 +428,10 @@ */ if (*ilock_shared && (!IS_NOSEC(inode) || *extend || !ext4_overwrite_io(inode, offset, count))) { + if (iocb->ki_flags & IOCB_NOWAIT) { + ret = -EAGAIN; + goto out; + } inode_unlock_shared(inode); *ilock_shared = false; inode_lock(inode); @@ -800,7 +804,7 @@ err = ext4_journal_get_write_access(handle, sbi->s_sbh); if (err) goto out_journal; - strlcpy(sbi->s_es->s_last_mounted, cp, + strncpy(sbi->s_es->s_last_mounted, cp, sizeof(sbi->s_es->s_last_mounted)); ext4_handle_dirty_super(handle, sb); out_journal: --- linux-5.8.0.orig/fs/ext4/fsmap.c +++ linux-5.8.0/fs/ext4/fsmap.c @@ -108,6 +108,9 @@ /* Are we just counting mappings? */ if (info->gfi_head->fmh_count == 0) { + if (info->gfi_head->fmh_entries == UINT_MAX) + return EXT4_QUERY_RANGE_ABORT; + if (rec_fsblk > info->gfi_next_fsblk) info->gfi_head->fmh_entries++; --- linux-5.8.0.orig/fs/ext4/ialloc.c +++ linux-5.8.0/fs/ext4/ialloc.c @@ -188,6 +188,7 @@ /* * submit the buffer_head for reading */ + clear_buffer_verified(bh); trace_ext4_load_inode_bitmap(sb, block_group); bh->b_end_io = ext4_end_bitmap_read; get_bh(bh); --- linux-5.8.0.orig/fs/ext4/indirect.c +++ linux-5.8.0/fs/ext4/indirect.c @@ -696,7 +696,7 @@ * i_mutex. So we can safely drop the i_data_sem here. */ BUG_ON(EXT4_JOURNAL(inode) == NULL); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); up_write(&EXT4_I(inode)->i_data_sem); *dropped = 1; return 0; @@ -858,8 +858,7 @@ else if (ext4_should_journal_data(inode)) flags |= EXT4_FREE_BLOCKS_FORGET; - if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), block_to_free, - count)) { + if (!ext4_inode_block_valid(inode, block_to_free, count)) { EXT4_ERROR_INODE(inode, "attempt to clear invalid " "blocks %llu len %lu", (unsigned long long) block_to_free, count); @@ -1004,8 +1003,7 @@ if (!nr) continue; /* A hole */ - if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), - nr, 1)) { + if (!ext4_inode_block_valid(inode, nr, 1)) { EXT4_ERROR_INODE(inode, "invalid indirect mapped " "block %lu (level %d)", --- linux-5.8.0.orig/fs/ext4/inline.c +++ linux-5.8.0/fs/ext4/inline.c @@ -1880,6 +1880,7 @@ ext4_write_lock_xattr(inode, &no_expand); if (!ext4_has_inline_data(inode)) { + ext4_write_unlock_xattr(inode, &no_expand); *has_inline = 0; ext4_journal_stop(handle); return 0; --- linux-5.8.0.orig/fs/ext4/inode.c +++ linux-5.8.0/fs/ext4/inode.c @@ -175,6 +175,7 @@ */ int extra_credits = 6; struct ext4_xattr_inode_array *ea_inode_array = NULL; + bool freeze_protected = false; trace_ext4_evict_inode(inode); @@ -232,9 +233,14 @@ /* * Protect us against freezing - iput() caller didn't have to have any - * protection against it - */ - sb_start_intwrite(inode->i_sb); + * protection against it. When we are in a running transaction though, + * we are already protected against freezing and we cannot grab further + * protection due to lock ordering constraints. + */ + if (!ext4_journal_current_handle()) { + sb_start_intwrite(inode->i_sb); + freeze_protected = true; + } if (!IS_NOQUOTA(inode)) extra_credits += EXT4_MAXQUOTAS_DEL_BLOCKS(inode->i_sb); @@ -253,7 +259,8 @@ * cleaned up. */ ext4_orphan_del(NULL, inode); - sb_end_intwrite(inode->i_sb); + if (freeze_protected) + sb_end_intwrite(inode->i_sb); goto no_delete; } @@ -294,7 +301,8 @@ stop_handle: ext4_journal_stop(handle); ext4_orphan_del(NULL, inode); - sb_end_intwrite(inode->i_sb); + if (freeze_protected) + sb_end_intwrite(inode->i_sb); ext4_xattr_inode_array_free(ea_inode_array); goto no_delete; } @@ -323,7 +331,8 @@ else ext4_free_inode(handle, inode); ext4_journal_stop(handle); - sb_end_intwrite(inode->i_sb); + if (freeze_protected) + sb_end_intwrite(inode->i_sb); ext4_xattr_inode_array_free(ea_inode_array); return; no_delete: @@ -383,7 +392,7 @@ */ if ((ei->i_reserved_data_blocks == 0) && !inode_is_open_for_write(inode)) - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); } static int __check_block_validity(struct inode *inode, const char *func, @@ -394,8 +403,7 @@ (inode->i_ino == le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum))) return 0; - if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), map->m_pblk, - map->m_len)) { + if (!ext4_inode_block_valid(inode, map->m_pblk, map->m_len)) { ext4_error_inode(inode, func, line, map->m_pblk, "lblock %lu mapped to illegal pblock %llu " "(length %d)", (unsigned long) map->m_lblk, @@ -885,6 +893,7 @@ return bh; if (!bh || ext4_buffer_uptodate(bh)) return bh; + clear_buffer_verified(bh); ll_rw_block(REQ_OP_READ, REQ_META | REQ_PRIO, 1, &bh); wait_on_buffer(bh); if (buffer_uptodate(bh)) @@ -910,9 +919,11 @@ for (i = 0; i < bh_count; i++) /* Note that NULL bhs[i] is valid because of holes. */ - if (bhs[i] && !ext4_buffer_uptodate(bhs[i])) + if (bhs[i] && !ext4_buffer_uptodate(bhs[i])) { + clear_buffer_verified(bhs[i]); ll_rw_block(REQ_OP_READ, REQ_META | REQ_PRIO, 1, &bhs[i]); + } if (!wait) return 0; @@ -1918,13 +1929,13 @@ if (!ret) ret = err; - if (!ext4_has_inline_data(inode)) - ext4_walk_page_buffers(NULL, page_bufs, 0, len, - NULL, bput_one); ext4_set_inode_state(inode, EXT4_STATE_JDATA); out: unlock_page(page); out_no_pagelock: + if (!inline_data && page_bufs) + ext4_walk_page_buffers(NULL, page_bufs, 0, len, + NULL, bput_one); brelse(inode_bh); return ret; } @@ -2255,7 +2266,7 @@ err = PTR_ERR(io_end_vec); goto out; } - io_end_vec->offset = mpd->map.m_lblk << blkbits; + io_end_vec->offset = (loff_t)mpd->map.m_lblk << blkbits; } *map_bh = true; goto out; @@ -3602,6 +3613,13 @@ return __set_page_dirty_buffers(page); } +static int ext4_iomap_swap_activate(struct swap_info_struct *sis, + struct file *file, sector_t *span) +{ + return iomap_swapfile_activate(sis, file, span, + &ext4_iomap_report_ops); +} + static const struct address_space_operations ext4_aops = { .readpage = ext4_readpage, .readahead = ext4_readahead, @@ -3617,6 +3635,7 @@ .migratepage = buffer_migrate_page, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_page = generic_error_remove_page, + .swap_activate = ext4_iomap_swap_activate, }; static const struct address_space_operations ext4_journalled_aops = { @@ -3633,6 +3652,7 @@ .direct_IO = noop_direct_IO, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_page = generic_error_remove_page, + .swap_activate = ext4_iomap_swap_activate, }; static const struct address_space_operations ext4_da_aops = { @@ -3650,6 +3670,7 @@ .migratepage = buffer_migrate_page, .is_partially_uptodate = block_is_partially_uptodate, .error_remove_page = generic_error_remove_page, + .swap_activate = ext4_iomap_swap_activate, }; static const struct address_space_operations ext4_dax_aops = { @@ -3658,6 +3679,7 @@ .set_page_dirty = noop_set_page_dirty, .bmap = ext4_bmap, .invalidatepage = noop_invalidatepage, + .swap_activate = ext4_iomap_swap_activate, }; void ext4_set_aops(struct inode *inode) @@ -4056,7 +4078,7 @@ if (stop_block > first_block) { down_write(&EXT4_I(inode)->i_data_sem); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); ret = ext4_es_remove_extent(inode, first_block, stop_block - first_block); @@ -4211,7 +4233,7 @@ down_write(&EXT4_I(inode)->i_data_sem); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) err = ext4_ext_truncate(handle, inode); @@ -4760,7 +4782,7 @@ ret = 0; if (ei->i_file_acl && - !ext4_data_block_valid(EXT4_SB(sb), ei->i_file_acl, 1)) { + !ext4_inode_block_valid(inode, ei->i_file_acl, 1)) { ext4_error_inode(inode, function, line, 0, "iget: bad extended attribute block %llu", ei->i_file_acl); @@ -4901,7 +4923,7 @@ (inode->i_state & I_DIRTY_TIME)) { struct ext4_inode_info *ei = EXT4_I(inode); - inode->i_state &= ~(I_DIRTY_TIME | I_DIRTY_TIME_EXPIRED); + inode->i_state &= ~I_DIRTY_TIME; spin_unlock(&inode->i_lock); spin_lock(&ei->i_raw_lock); @@ -4958,7 +4980,7 @@ struct ext4_inode_info *ei = EXT4_I(inode); struct buffer_head *bh = iloc->bh; struct super_block *sb = inode->i_sb; - int err = 0, rc, block; + int err = 0, block; int need_datasync = 0, set_large_file = 0; uid_t i_uid; gid_t i_gid; @@ -4971,6 +4993,12 @@ if (ext4_test_inode_state(inode, EXT4_STATE_NEW)) memset(raw_inode, 0, EXT4_SB(inode->i_sb)->s_inode_size); + err = ext4_inode_blocks_set(handle, raw_inode, ei); + if (err) { + spin_unlock(&ei->i_raw_lock); + goto out_brelse; + } + raw_inode->i_mode = cpu_to_le16(inode->i_mode); i_uid = i_uid_read(inode); i_gid = i_gid_read(inode); @@ -5004,11 +5032,6 @@ EXT4_INODE_SET_XTIME(i_atime, inode, raw_inode); EXT4_EINODE_SET_XTIME(i_crtime, ei, raw_inode); - err = ext4_inode_blocks_set(handle, raw_inode, ei); - if (err) { - spin_unlock(&ei->i_raw_lock); - goto out_brelse; - } raw_inode->i_dtime = cpu_to_le32(ei->i_dtime); raw_inode->i_flags = cpu_to_le32(ei->i_flags & 0xFFFFFFFF); if (likely(!test_opt2(inode->i_sb, HURD_COMPAT))) @@ -5069,9 +5092,9 @@ bh->b_data); BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata"); - rc = ext4_handle_dirty_metadata(handle, NULL, bh); - if (!err) - err = rc; + err = ext4_handle_dirty_metadata(handle, NULL, bh); + if (err) + goto out_brelse; ext4_clear_inode_state(inode, EXT4_STATE_NEW); if (set_large_file) { BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get write access"); --- linux-5.8.0.orig/fs/ext4/ioctl.c +++ linux-5.8.0/fs/ext4/ioctl.c @@ -202,7 +202,7 @@ reset_inode_seed(inode); reset_inode_seed(inode_bl); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); err = ext4_mark_inode_dirty(handle, inode); if (err < 0) { @@ -1154,7 +1154,10 @@ err = ext4_journal_get_write_access(handle, sbi->s_sbh); if (err) goto pwsalt_err_journal; + lock_buffer(sbi->s_sbh); generate_random_uuid(sbi->s_es->s_encrypt_pw_salt); + ext4_superblock_csum_set(sb); + unlock_buffer(sbi->s_sbh); err = ext4_handle_dirty_metadata(handle, NULL, sbi->s_sbh); pwsalt_err_journal: --- linux-5.8.0.orig/fs/ext4/mballoc.c +++ linux-5.8.0/fs/ext4/mballoc.c @@ -2177,6 +2177,7 @@ { struct ext4_group_info *grp = ext4_get_group_info(ac->ac_sb, group); struct super_block *sb = ac->ac_sb; + struct ext4_sb_info *sbi = EXT4_SB(sb); bool should_lock = ac->ac_flags & EXT4_MB_STRICT_CHECK; ext4_grpblk_t free; int ret = 0; @@ -2195,7 +2196,25 @@ /* We only do this if the grp has never been initialized */ if (unlikely(EXT4_MB_GRP_NEED_INIT(grp))) { - ret = ext4_mb_init_group(ac->ac_sb, group, GFP_NOFS); + struct ext4_group_desc *gdp = + ext4_get_group_desc(sb, group, NULL); + int ret; + + /* cr=0/1 is a very optimistic search to find large + * good chunks almost for free. If buddy data is not + * ready, then this optimization makes no sense. But + * we never skip the first block group in a flex_bg, + * since this gets used for metadata block allocation, + * and we want to make sure we locate metadata blocks + * in the first block group in the flex_bg if possible. + */ + if (cr < 2 && + (!sbi->s_log_groups_per_flex || + ((group & ((1 << sbi->s_log_groups_per_flex) - 1)) != 0)) && + !(ext4_has_group_desc_csum(sb) && + (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)))) + return 0; + ret = ext4_mb_init_group(sb, group, GFP_NOFS); if (ret) return ret; } @@ -2736,6 +2755,7 @@ sbi->s_mb_stats = MB_DEFAULT_STATS; sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; + sbi->s_mb_max_inode_prealloc = MB_DEFAULT_MAX_INODE_PREALLOC; /* * The default group preallocation is 512, which for 4k block * sizes translates to 2 megabytes. However for bigalloc file @@ -3090,7 +3110,7 @@ block = ext4_grp_offs_to_block(sb, &ac->ac_b_ex); len = EXT4_C2B(sbi, ac->ac_b_ex.fe_len); - if (!ext4_data_block_valid(sbi, block, len)) { + if (!ext4_inode_block_valid(ac->ac_inode, block, len)) { ext4_error(sb, "Allocating blocks %llu-%llu which overlap " "fs metadata", block, block+len); /* File system mounted not to panic on error @@ -3674,6 +3694,26 @@ mb_debug(sb, "preallocated %d for group %u\n", preallocated, group); } +static void ext4_mb_mark_pa_deleted(struct super_block *sb, + struct ext4_prealloc_space *pa) +{ + struct ext4_inode_info *ei; + + if (pa->pa_deleted) { + ext4_warning(sb, "deleted pa, type:%d, pblk:%llu, lblk:%u, len:%d\n", + pa->pa_type, pa->pa_pstart, pa->pa_lstart, + pa->pa_len); + return; + } + + pa->pa_deleted = 1; + + if (pa->pa_type == MB_INODE_PA) { + ei = EXT4_I(pa->pa_inode); + atomic_dec(&ei->i_prealloc_active); + } +} + static void ext4_mb_pa_callback(struct rcu_head *head) { struct ext4_prealloc_space *pa; @@ -3706,7 +3746,7 @@ return; } - pa->pa_deleted = 1; + ext4_mb_mark_pa_deleted(sb, pa); spin_unlock(&pa->pa_lock); grp_blk = pa->pa_pstart; @@ -3830,6 +3870,7 @@ spin_lock(pa->pa_obj_lock); list_add_rcu(&pa->pa_inode_list, &ei->i_prealloc_list); spin_unlock(pa->pa_obj_lock); + atomic_inc(&ei->i_prealloc_active); } /* @@ -3996,7 +4037,7 @@ struct ext4_buddy e4b; int err; int busy = 0; - int free = 0; + int free, free_total = 0; mb_debug(sb, "discard preallocation for group %u\n", group); if (list_empty(&grp->bb_prealloc_list)) @@ -4024,8 +4065,8 @@ INIT_LIST_HEAD(&list); repeat: + free = 0; ext4_lock_group(sb, group); - this_cpu_inc(discard_pa_seq); list_for_each_entry_safe(pa, tmp, &grp->bb_prealloc_list, pa_group_list) { spin_lock(&pa->pa_lock); @@ -4040,7 +4081,10 @@ } /* seems this one can be freed ... */ - pa->pa_deleted = 1; + ext4_mb_mark_pa_deleted(sb, pa); + + if (!free) + this_cpu_inc(discard_pa_seq); /* we can trust pa_free ... */ free += pa->pa_free; @@ -4051,22 +4095,6 @@ list_add(&pa->u.pa_tmp_list, &list); } - /* if we still need more blocks and some PAs were used, try again */ - if (free < needed && busy) { - busy = 0; - ext4_unlock_group(sb, group); - cond_resched(); - goto repeat; - } - - /* found anything to free? */ - if (list_empty(&list)) { - BUG_ON(free != 0); - mb_debug(sb, "Someone else may have freed PA for this group %u\n", - group); - goto out; - } - /* now free all selected PAs */ list_for_each_entry_safe(pa, tmp, &list, u.pa_tmp_list) { @@ -4084,14 +4112,22 @@ call_rcu(&(pa)->u.pa_rcu, ext4_mb_pa_callback); } -out: + free_total += free; + + /* if we still need more blocks and some PAs were used, try again */ + if (free_total < needed && busy) { + ext4_unlock_group(sb, group); + cond_resched(); + busy = 0; + goto repeat; + } ext4_unlock_group(sb, group); ext4_mb_unload_buddy(&e4b); put_bh(bitmap_bh); out_dbg: mb_debug(sb, "discarded (%d) blocks preallocated for group %u bb_free (%d)\n", - free, group, grp->bb_free); - return free; + free_total, group, grp->bb_free); + return free_total; } /* @@ -4103,7 +4139,7 @@ * * FIXME!! Make sure it is valid at all the call sites */ -void ext4_discard_preallocations(struct inode *inode) +void ext4_discard_preallocations(struct inode *inode, unsigned int needed) { struct ext4_inode_info *ei = EXT4_I(inode); struct super_block *sb = inode->i_sb; @@ -4121,15 +4157,19 @@ mb_debug(sb, "discard preallocation for inode %lu\n", inode->i_ino); - trace_ext4_discard_preallocations(inode); + trace_ext4_discard_preallocations(inode, + atomic_read(&ei->i_prealloc_active), needed); INIT_LIST_HEAD(&list); + if (needed == 0) + needed = UINT_MAX; + repeat: /* first, collect all pa's in the inode */ spin_lock(&ei->i_prealloc_lock); - while (!list_empty(&ei->i_prealloc_list)) { - pa = list_entry(ei->i_prealloc_list.next, + while (!list_empty(&ei->i_prealloc_list) && needed) { + pa = list_entry(ei->i_prealloc_list.prev, struct ext4_prealloc_space, pa_inode_list); BUG_ON(pa->pa_obj_lock != &ei->i_prealloc_lock); spin_lock(&pa->pa_lock); @@ -4146,10 +4186,11 @@ } if (pa->pa_deleted == 0) { - pa->pa_deleted = 1; + ext4_mb_mark_pa_deleted(sb, pa); spin_unlock(&pa->pa_lock); list_del_rcu(&pa->pa_inode_list); list_add(&pa->u.pa_tmp_list, &list); + needed--; continue; } @@ -4450,7 +4491,7 @@ BUG_ON(pa->pa_type != MB_GROUP_PA); /* seems this one can be freed ... */ - pa->pa_deleted = 1; + ext4_mb_mark_pa_deleted(sb, pa); spin_unlock(&pa->pa_lock); list_del_rcu(&pa->pa_inode_list); @@ -4549,10 +4590,29 @@ } /* + * if per-inode prealloc list is too long, trim some PA + */ +static void ext4_mb_trim_inode_pa(struct inode *inode) +{ + struct ext4_inode_info *ei = EXT4_I(inode); + struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); + int count, delta; + + count = atomic_read(&ei->i_prealloc_active); + delta = (sbi->s_mb_max_inode_prealloc >> 2) + 1; + if (count > sbi->s_mb_max_inode_prealloc + delta) { + count -= sbi->s_mb_max_inode_prealloc; + ext4_discard_preallocations(inode, count); + } +} + +/* * release all resource we used in allocation */ static int ext4_mb_release_context(struct ext4_allocation_context *ac) { + struct inode *inode = ac->ac_inode; + struct ext4_inode_info *ei = EXT4_I(inode); struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); struct ext4_prealloc_space *pa = ac->ac_pa; if (pa) { @@ -4579,6 +4639,17 @@ spin_unlock(pa->pa_obj_lock); ext4_mb_add_n_trim(ac); } + + if (pa->pa_type == MB_INODE_PA) { + /* + * treat per-inode prealloc list as a lru list, then try + * to trim the least recently used PA. + */ + spin_lock(pa->pa_obj_lock); + list_move(&pa->pa_inode_list, &ei->i_prealloc_list); + spin_unlock(pa->pa_obj_lock); + } + ext4_mb_put_pa(ac, ac->ac_sb, pa); } if (ac->ac_bitmap_page) @@ -4588,6 +4659,7 @@ if (ac->ac_flags & EXT4_MB_HINT_GROUP_ALLOC) mutex_unlock(&ac->ac_lg->lg_mutex); ext4_mb_collect_stats(ac); + ext4_mb_trim_inode_pa(inode); return 0; } @@ -4850,6 +4922,7 @@ ext4_group_first_block_no(sb, group) + EXT4_C2B(sbi, cluster), "Block already on to-be-freed list"); + kmem_cache_free(ext4_free_data_cachep, new_entry); return 0; } } @@ -4915,7 +4988,7 @@ sbi = EXT4_SB(sb); if (!(flags & EXT4_FREE_BLOCKS_VALIDATED) && - !ext4_data_block_valid(sbi, block, count)) { + !ext4_inode_block_valid(inode, block, count)) { ext4_error(sb, "Freeing blocks not in datazone - " "block = %llu, count = %lu", block, count); goto error_return; --- linux-5.8.0.orig/fs/ext4/mballoc.h +++ linux-5.8.0/fs/ext4/mballoc.h @@ -73,6 +73,10 @@ */ #define MB_DEFAULT_GROUP_PREALLOC 512 +/* + * maximum length of inode prealloc list + */ +#define MB_DEFAULT_MAX_INODE_PREALLOC 512 struct ext4_free_data { /* this links the free block information from sb_info */ --- linux-5.8.0.orig/fs/ext4/move_extent.c +++ linux-5.8.0/fs/ext4/move_extent.c @@ -686,8 +686,8 @@ out: if (*moved_len) { - ext4_discard_preallocations(orig_inode); - ext4_discard_preallocations(donor_inode); + ext4_discard_preallocations(orig_inode, 0); + ext4_discard_preallocations(donor_inode, 0); } ext4_ext_drop_refs(path); --- linux-5.8.0.orig/fs/ext4/namei.c +++ linux-5.8.0/fs/ext4/namei.c @@ -1396,8 +1396,8 @@ ext4_match(dir, fname, de)) { /* found a match - just to be sure, do * a full check */ - if (ext4_check_dir_entry(dir, NULL, de, bh, bh->b_data, - bh->b_size, offset)) + if (ext4_check_dir_entry(dir, NULL, de, bh, search_buf, + buf_size, offset)) return -1; *res_dir = de; return 1; @@ -1858,7 +1858,7 @@ blocksize, hinfo, map); map -= count; dx_sort_map(map, count); - /* Split the existing block in the middle, size-wise */ + /* Ensure that neither split block is over half full */ size = 0; move = 0; for (i = count-1; i >= 0; i--) { @@ -1868,8 +1868,18 @@ size += map[i].size; move++; } - /* map index at which we will split */ - split = count - move; + /* + * map index at which we will split + * + * If the sum of active entries didn't exceed half the block size, just + * split it in half by count; each resulting block will have at least + * half the space free. + */ + if (i > 0) + split = count - move; + else + split = count/2; + hash2 = map[split].hash; continued = hash2 == map[split - 1].hash; dxtrace(printk(KERN_INFO "Split block %lu at %x, %i/%i\n", @@ -2189,6 +2199,9 @@ if (!dentry->d_name.len) return -EINVAL; + if (fscrypt_is_nokey_name(dentry)) + return -ENOKEY; + #ifdef CONFIG_UNICODE sbi = EXT4_SB(sb); if (ext4_has_strict_mode(sbi) && IS_CASEFOLDED(dir) && @@ -2402,11 +2415,10 @@ (frame - 1)->bh); if (err) goto journal_error; - if (restart) { - err = ext4_handle_dirty_dx_node(handle, dir, - frame->bh); + err = ext4_handle_dirty_dx_node(handle, dir, + frame->bh); + if (err) goto journal_error; - } } else { struct dx_root *dxroot; memcpy((char *) entries2, (char *) entries, @@ -2472,7 +2484,7 @@ de = (struct ext4_dir_entry_2 *)entry_buf; while (i < buf_size - csum_size) { if (ext4_check_dir_entry(dir, NULL, de, bh, - bh->b_data, bh->b_size, i)) + entry_buf, buf_size, i)) return -EFSCORRUPTED; if (de == de_del) { if (pde) @@ -3560,12 +3572,34 @@ return retval2; } } - brelse(ent->bh); - ent->bh = NULL; - return retval; } +static void ext4_resetent(handle_t *handle, struct ext4_renament *ent, + unsigned ino, unsigned file_type) +{ + struct ext4_renament old = *ent; + int retval = 0; + + /* + * old->de could have moved from under us during make indexed dir, + * so the old->de may no longer valid and need to find it again + * before reset old inode info. + */ + old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, &old.de, NULL); + if (IS_ERR(old.bh)) + retval = PTR_ERR(old.bh); + if (!old.bh) + retval = -ENOENT; + if (retval) { + ext4_std_error(old.dir->i_sb, retval); + return; + } + + ext4_setent(handle, &old, ino, file_type); + brelse(old.bh); +} + static int ext4_find_delete_entry(handle_t *handle, struct inode *dir, const struct qstr *d_name) { @@ -3725,14 +3759,14 @@ */ retval = -ENOENT; if (!old.bh || le32_to_cpu(old.de->inode) != old.inode->i_ino) - goto end_rename; + goto release_bh; new.bh = ext4_find_entry(new.dir, &new.dentry->d_name, &new.de, &new.inlined); if (IS_ERR(new.bh)) { retval = PTR_ERR(new.bh); new.bh = NULL; - goto end_rename; + goto release_bh; } if (new.bh) { if (!new.inode) { @@ -3749,18 +3783,17 @@ handle = ext4_journal_start(old.dir, EXT4_HT_DIR, credits); if (IS_ERR(handle)) { retval = PTR_ERR(handle); - handle = NULL; - goto end_rename; + goto release_bh; } } else { whiteout = ext4_whiteout_for_rename(&old, credits, &handle); if (IS_ERR(whiteout)) { retval = PTR_ERR(whiteout); - whiteout = NULL; - goto end_rename; + goto release_bh; } } + old_file_type = old.de->file_type; if (IS_DIRSYNC(old.dir) || IS_DIRSYNC(new.dir)) ext4_handle_sync(handle); @@ -3788,7 +3821,6 @@ force_reread = (new.dir->i_ino == old.dir->i_ino && ext4_test_inode_flag(new.dir, EXT4_INODE_INLINE_DATA)); - old_file_type = old.de->file_type; if (whiteout) { /* * Do this before adding a new entry, so the old entry is sure @@ -3870,17 +3902,23 @@ retval = 0; end_rename: - brelse(old.dir_bh); - brelse(old.bh); - brelse(new.bh); if (whiteout) { - if (retval) + if (retval) { + ext4_resetent(handle, &old, + old.inode->i_ino, old_file_type); drop_nlink(whiteout); + ext4_orphan_add(handle, whiteout); + } unlock_new_inode(whiteout); + ext4_journal_stop(handle); iput(whiteout); - } - if (handle) + } else { ext4_journal_stop(handle); + } +release_bh: + brelse(old.dir_bh); + brelse(old.bh); + brelse(new.bh); return retval; } --- linux-5.8.0.orig/fs/ext4/resize.c +++ linux-5.8.0/fs/ext4/resize.c @@ -843,8 +843,10 @@ BUFFER_TRACE(dind, "get_write_access"); err = ext4_journal_get_write_access(handle, dind); - if (unlikely(err)) + if (unlikely(err)) { ext4_std_error(sb, err); + goto errout; + } /* ext4_reserve_inode_write() gets a reference on the iloc */ err = ext4_reserve_inode_write(handle, inode, &iloc); --- linux-5.8.0.orig/fs/ext4/super.c +++ linux-5.8.0/fs/ext4/super.c @@ -66,10 +66,10 @@ unsigned long journal_devnum); static int ext4_show_options(struct seq_file *seq, struct dentry *root); static int ext4_commit_super(struct super_block *sb, int sync); -static void ext4_mark_recovery_complete(struct super_block *sb, +static int ext4_mark_recovery_complete(struct super_block *sb, struct ext4_super_block *es); -static void ext4_clear_journal_err(struct super_block *sb, - struct ext4_super_block *es); +static int ext4_clear_journal_err(struct super_block *sb, + struct ext4_super_block *es); static int ext4_sync_fs(struct super_block *sb, int wait); static int ext4_remount(struct super_block *sb, int *flags, char *data); static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf); @@ -156,6 +156,7 @@ return ERR_PTR(-ENOMEM); if (ext4_buffer_uptodate(bh)) return bh; + clear_buffer_verified(bh); ll_rw_block(REQ_OP_READ, REQ_META | op_flags, 1, &bh); wait_on_buffer(bh); if (buffer_uptodate(bh)) @@ -495,19 +496,17 @@ static void ext4_handle_error(struct super_block *sb) { + journal_t *journal = EXT4_SB(sb)->s_journal; + if (test_opt(sb, WARN_ON_ERROR)) WARN_ON_ONCE(1); - if (sb_rdonly(sb)) + if (sb_rdonly(sb) || test_opt(sb, ERRORS_CONT)) return; - if (!test_opt(sb, ERRORS_CONT)) { - journal_t *journal = EXT4_SB(sb)->s_journal; - - EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FS_ABORTED; - if (journal) - jbd2_journal_abort(journal, -EIO); - } + EXT4_SB(sb)->s_mount_flags |= EXT4_MF_FS_ABORTED; + if (journal) + jbd2_journal_abort(journal, -EIO); /* * We force ERRORS_RO behavior when system is rebooting. Otherwise we * could panic during 'reboot -f' as the underlying device got already @@ -1053,6 +1052,7 @@ percpu_counter_destroy(&sbi->s_freeinodes_counter); percpu_counter_destroy(&sbi->s_dirs_counter); percpu_counter_destroy(&sbi->s_dirtyclusters_counter); + percpu_counter_destroy(&sbi->s_sra_exceeded_retry_limit); percpu_free_rwsem(&sbi->s_writepages_rwsem); #ifdef CONFIG_QUOTA for (i = 0; i < EXT4_MAXQUOTAS; i++) @@ -1123,6 +1123,7 @@ inode_set_iversion(&ei->vfs_inode, 1); spin_lock_init(&ei->i_raw_lock); INIT_LIST_HEAD(&ei->i_prealloc_list); + atomic_set(&ei->i_prealloc_active, 0); spin_lock_init(&ei->i_prealloc_lock); ext4_es_init_tree(&ei->i_es_tree); rwlock_init(&ei->i_es_lock); @@ -1216,7 +1217,7 @@ { invalidate_inode_buffers(inode); clear_inode(inode); - ext4_discard_preallocations(inode); + ext4_discard_preallocations(inode, 0); ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS); dquot_drop(inode); if (EXT4_I(inode)->jinode) { @@ -1819,8 +1820,8 @@ {Opt_noquota, (EXT4_MOUNT_QUOTA | EXT4_MOUNT_USRQUOTA | EXT4_MOUNT_GRPQUOTA | EXT4_MOUNT_PRJQUOTA), MOPT_CLEAR | MOPT_Q}, - {Opt_usrjquota, 0, MOPT_Q}, - {Opt_grpjquota, 0, MOPT_Q}, + {Opt_usrjquota, 0, MOPT_Q | MOPT_STRING}, + {Opt_grpjquota, 0, MOPT_Q | MOPT_STRING}, {Opt_offusrjquota, 0, MOPT_Q}, {Opt_offgrpjquota, 0, MOPT_Q}, {Opt_jqfmt_vfsold, QFMT_VFS_OLD, MOPT_QFMT}, @@ -3939,19 +3940,26 @@ */ sbi->s_li_wait_mult = EXT4_DEF_LI_WAIT_MULT; - blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); - - if (blocksize == PAGE_SIZE) - set_opt(sb, DIOREAD_NOLOCK); - - if (blocksize < EXT4_MIN_BLOCK_SIZE || - blocksize > EXT4_MAX_BLOCK_SIZE) { + if (le32_to_cpu(es->s_log_block_size) > + (EXT4_MAX_BLOCK_LOG_SIZE - EXT4_MIN_BLOCK_LOG_SIZE)) { ext4_msg(sb, KERN_ERR, - "Unsupported filesystem blocksize %d (%d log_block_size)", - blocksize, le32_to_cpu(es->s_log_block_size)); + "Invalid log block size: %u", + le32_to_cpu(es->s_log_block_size)); + goto failed_mount; + } + if (le32_to_cpu(es->s_log_cluster_size) > + (EXT4_MAX_CLUSTER_LOG_SIZE - EXT4_MIN_BLOCK_LOG_SIZE)) { + ext4_msg(sb, KERN_ERR, + "Invalid log cluster size: %u", + le32_to_cpu(es->s_log_cluster_size)); goto failed_mount; } + blocksize = EXT4_MIN_BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); + + if (blocksize == PAGE_SIZE) + set_opt(sb, DIOREAD_NOLOCK); + if (le32_to_cpu(es->s_rev_level) == EXT4_GOOD_OLD_REV) { sbi->s_inode_size = EXT4_GOOD_OLD_INODE_SIZE; sbi->s_first_ino = EXT4_GOOD_OLD_FIRST_INO; @@ -4168,21 +4176,6 @@ if (!ext4_feature_set_ok(sb, (sb_rdonly(sb)))) goto failed_mount; - if (le32_to_cpu(es->s_log_block_size) > - (EXT4_MAX_BLOCK_LOG_SIZE - EXT4_MIN_BLOCK_LOG_SIZE)) { - ext4_msg(sb, KERN_ERR, - "Invalid log block size: %u", - le32_to_cpu(es->s_log_block_size)); - goto failed_mount; - } - if (le32_to_cpu(es->s_log_cluster_size) > - (EXT4_MAX_CLUSTER_LOG_SIZE - EXT4_MIN_BLOCK_LOG_SIZE)) { - ext4_msg(sb, KERN_ERR, - "Invalid log cluster size: %u", - le32_to_cpu(es->s_log_cluster_size)); - goto failed_mount; - } - if (le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) > (blocksize / 4)) { ext4_msg(sb, KERN_ERR, "Number of reserved GDT blocks insanely large: %d", @@ -4698,11 +4691,13 @@ ext4_set_resv_clusters(sb); - err = ext4_setup_system_zone(sb); - if (err) { - ext4_msg(sb, KERN_ERR, "failed to initialize system " - "zone (%d)", err); - goto failed_mount4a; + if (test_opt(sb, BLOCK_VALIDITY)) { + err = ext4_setup_system_zone(sb); + if (err) { + ext4_msg(sb, KERN_ERR, "failed to initialize system " + "zone (%d)", err); + goto failed_mount4a; + } } ext4_ext_init(sb); @@ -4733,6 +4728,9 @@ err = percpu_counter_init(&sbi->s_dirtyclusters_counter, 0, GFP_KERNEL); if (!err) + err = percpu_counter_init(&sbi->s_sra_exceeded_retry_limit, 0, + GFP_KERNEL); + if (!err) err = percpu_init_rwsem(&sbi->s_writepages_rwsem); if (err) { @@ -4765,12 +4763,22 @@ } #endif /* CONFIG_QUOTA */ + /* + * Save the original bdev mapping's wb_err value which could be + * used to detect the metadata async write error. + */ + spin_lock_init(&sbi->s_bdev_wb_lock); + errseq_check_and_advance(&sb->s_bdev->bd_inode->i_mapping->wb_err, + &sbi->s_bdev_wb_err); + sb->s_bdev->bd_super = sb; EXT4_SB(sb)->s_mount_state |= EXT4_ORPHAN_FS; ext4_orphan_cleanup(sb, es); EXT4_SB(sb)->s_mount_state &= ~EXT4_ORPHAN_FS; if (needs_recovery) { ext4_msg(sb, KERN_INFO, "recovery complete"); - ext4_mark_recovery_complete(sb, es); + err = ext4_mark_recovery_complete(sb, es); + if (err) + goto failed_mount8; } if (EXT4_SB(sb)->s_journal) { if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) @@ -4813,10 +4821,9 @@ ext4_msg(sb, KERN_ERR, "VFS: Can't find ext4 filesystem"); goto failed_mount; -#ifdef CONFIG_QUOTA failed_mount8: ext4_unregister_sysfs(sb); -#endif + kobject_put(&sbi->s_kobj); failed_mount7: ext4_unregister_li_request(sb); failed_mount6: @@ -4833,6 +4840,7 @@ percpu_counter_destroy(&sbi->s_freeinodes_counter); percpu_counter_destroy(&sbi->s_dirs_counter); percpu_counter_destroy(&sbi->s_dirtyclusters_counter); + percpu_counter_destroy(&sbi->s_sra_exceeded_retry_limit); percpu_free_rwsem(&sbi->s_writepages_rwsem); failed_mount5: ext4_ext_release(sb); @@ -4956,7 +4964,8 @@ struct inode *journal_inode; journal_t *journal; - BUG_ON(!ext4_has_feature_journal(sb)); + if (WARN_ON_ONCE(!ext4_has_feature_journal(sb))) + return NULL; journal_inode = ext4_get_journal_inode(sb, journal_inum); if (!journal_inode) @@ -4986,7 +4995,8 @@ struct ext4_super_block *es; struct block_device *bdev; - BUG_ON(!ext4_has_feature_journal(sb)); + if (WARN_ON_ONCE(!ext4_has_feature_journal(sb))) + return NULL; bdev = ext4_blkdev_get(j_dev, sb); if (bdev == NULL) @@ -5077,8 +5087,10 @@ dev_t journal_dev; int err = 0; int really_read_only; + int journal_dev_ro; - BUG_ON(!ext4_has_feature_journal(sb)); + if (WARN_ON_ONCE(!ext4_has_feature_journal(sb))) + return -EFSCORRUPTED; if (journal_devnum && journal_devnum != le32_to_cpu(es->s_journal_dev)) { @@ -5088,7 +5100,31 @@ } else journal_dev = new_decode_dev(le32_to_cpu(es->s_journal_dev)); - really_read_only = bdev_read_only(sb->s_bdev); + if (journal_inum && journal_dev) { + ext4_msg(sb, KERN_ERR, + "filesystem has both journal inode and journal device!"); + return -EINVAL; + } + + if (journal_inum) { + journal = ext4_get_journal(sb, journal_inum); + if (!journal) + return -EINVAL; + } else { + journal = ext4_get_dev_journal(sb, journal_dev); + if (!journal) + return -EINVAL; + } + + journal_dev_ro = bdev_read_only(journal->j_dev); + really_read_only = bdev_read_only(sb->s_bdev) | journal_dev_ro; + + if (journal_dev_ro && !sb_rdonly(sb)) { + ext4_msg(sb, KERN_ERR, + "journal device read-only, try mounting with '-o ro'"); + err = -EROFS; + goto err_out; + } /* * Are we loading a blank journal or performing recovery after a @@ -5103,27 +5139,14 @@ ext4_msg(sb, KERN_ERR, "write access " "unavailable, cannot proceed " "(try mounting with noload)"); - return -EROFS; + err = -EROFS; + goto err_out; } ext4_msg(sb, KERN_INFO, "write access will " "be enabled during recovery"); } } - if (journal_inum && journal_dev) { - ext4_msg(sb, KERN_ERR, "filesystem has both journal " - "and inode journals!"); - return -EINVAL; - } - - if (journal_inum) { - if (!(journal = ext4_get_journal(sb, journal_inum))) - return -EINVAL; - } else { - if (!(journal = ext4_get_dev_journal(sb, journal_dev))) - return -EINVAL; - } - if (!(journal->j_flags & JBD2_BARRIER)) ext4_msg(sb, KERN_INFO, "barriers disabled"); @@ -5143,12 +5166,16 @@ if (err) { ext4_msg(sb, KERN_ERR, "error loading journal"); - jbd2_journal_destroy(journal); - return err; + goto err_out; } EXT4_SB(sb)->s_journal = journal; - ext4_clear_journal_err(sb, es); + err = ext4_clear_journal_err(sb, es); + if (err) { + EXT4_SB(sb)->s_journal = NULL; + jbd2_journal_destroy(journal); + return err; + } if (!really_read_only && journal_devnum && journal_devnum != le32_to_cpu(es->s_journal_dev)) { @@ -5159,6 +5186,10 @@ } return 0; + +err_out: + jbd2_journal_destroy(journal); + return err; } static int ext4_commit_super(struct super_block *sb, int sync) @@ -5171,13 +5202,6 @@ return error; /* - * The superblock bh should be mapped, but it might not be if the - * device was hot-removed. Not much we can do but fail the I/O. - */ - if (!buffer_mapped(sbh)) - return error; - - /* * If the file system is mounted read-only, don't update the * superblock write time. This avoids updating the superblock * write time when we are mounting the root file system @@ -5244,26 +5268,32 @@ * remounting) the filesystem readonly, then we will end up with a * consistent fs on disk. Record that fact. */ -static void ext4_mark_recovery_complete(struct super_block *sb, - struct ext4_super_block *es) +static int ext4_mark_recovery_complete(struct super_block *sb, + struct ext4_super_block *es) { + int err; journal_t *journal = EXT4_SB(sb)->s_journal; if (!ext4_has_feature_journal(sb)) { - BUG_ON(journal != NULL); - return; + if (journal != NULL) { + ext4_error(sb, "Journal got removed while the fs was " + "mounted!"); + return -EFSCORRUPTED; + } + return 0; } jbd2_journal_lock_updates(journal); - if (jbd2_journal_flush(journal) < 0) + err = jbd2_journal_flush(journal); + if (err < 0) goto out; if (ext4_has_feature_journal_needs_recovery(sb) && sb_rdonly(sb)) { ext4_clear_feature_journal_needs_recovery(sb); ext4_commit_super(sb, 1); } - out: jbd2_journal_unlock_updates(journal); + return err; } /* @@ -5271,14 +5301,17 @@ * has recorded an error from a previous lifetime, move that error to the * main filesystem now. */ -static void ext4_clear_journal_err(struct super_block *sb, +static int ext4_clear_journal_err(struct super_block *sb, struct ext4_super_block *es) { journal_t *journal; int j_errno; const char *errstr; - BUG_ON(!ext4_has_feature_journal(sb)); + if (!ext4_has_feature_journal(sb)) { + ext4_error(sb, "Journal got removed while the fs was mounted!"); + return -EFSCORRUPTED; + } journal = EXT4_SB(sb)->s_journal; @@ -5303,6 +5336,7 @@ jbd2_journal_clear_err(journal); jbd2_journal_update_sb_errno(journal); } + return 0; } /* @@ -5445,7 +5479,7 @@ { struct ext4_super_block *es; struct ext4_sb_info *sbi = EXT4_SB(sb); - unsigned long old_sb_flags; + unsigned long old_sb_flags, vfs_flags; struct ext4_mount_options old_opts; int enable_quota = 0; ext4_group_t g; @@ -5488,6 +5522,14 @@ if (sbi->s_journal && sbi->s_journal->j_task->io_context) journal_ioprio = sbi->s_journal->j_task->io_context->ioprio; + /* + * Some options can be enabled by ext4 and/or by VFS mount flag + * either way we need to make sure it matches in both *flags and + * s_flags. Copy those selected flags from *flags to s_flags + */ + vfs_flags = SB_LAZYTIME | SB_I_VERSION; + sb->s_flags = (sb->s_flags & ~vfs_flags) | (*flags & vfs_flags); + if (!parse_options(data, sb, NULL, &journal_ioprio, 1)) { err = -EINVAL; goto restore_opts; @@ -5541,9 +5583,6 @@ set_task_ioprio(sbi->s_journal->j_task, journal_ioprio); } - if (*flags & SB_LAZYTIME) - sb->s_flags |= SB_LAZYTIME; - if ((bool)(*flags & SB_RDONLY) != sb_rdonly(sb)) { if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) { err = -EROFS; @@ -5573,8 +5612,13 @@ (sbi->s_mount_state & EXT4_VALID_FS)) es->s_state = cpu_to_le16(sbi->s_mount_state); - if (sbi->s_journal) + if (sbi->s_journal) { + /* + * We let remount-ro finish even if marking fs + * as clean failed... + */ ext4_mark_recovery_complete(sb, es); + } if (sbi->s_mmp_tsk) kthread_stop(sbi->s_mmp_tsk); } else { @@ -5622,8 +5666,11 @@ * been changed by e2fsck since we originally mounted * the partition.) */ - if (sbi->s_journal) - ext4_clear_journal_err(sb, es); + if (sbi->s_journal) { + err = ext4_clear_journal_err(sb, es); + if (err) + goto restore_opts; + } sbi->s_mount_state = le16_to_cpu(es->s_state); err = ext4_setup_super(sb, es, 0); @@ -5653,7 +5700,17 @@ ext4_register_li_request(sb, first_not_zeroed); } - ext4_setup_system_zone(sb); + /* + * Handle creation of system zone data early because it can fail. + * Releasing of existing data is done when we are sure remount will + * succeed. + */ + if (test_opt(sb, BLOCK_VALIDITY) && !sbi->system_blks) { + err = ext4_setup_system_zone(sb); + if (err) + goto restore_opts; + } + if (sbi->s_journal == NULL && !(old_sb_flags & SB_RDONLY)) { err = ext4_commit_super(sb, 1); if (err) @@ -5674,8 +5731,16 @@ } } #endif + if (!test_opt(sb, BLOCK_VALIDITY) && sbi->system_blks) + ext4_release_system_zone(sb); + + /* + * Some options can be enabled by ext4 and/or by VFS mount flag + * either way we need to make sure it matches in both *flags and + * s_flags. Copy those selected flags from s_flags to *flags + */ + *flags = (*flags & ~vfs_flags) | (sb->s_flags & vfs_flags); - *flags = (*flags & ~SB_LAZYTIME) | (sb->s_flags & SB_LAZYTIME); ext4_msg(sb, KERN_INFO, "re-mounted. Opts: %s", orig_data); kfree(orig_data); return 0; @@ -5689,6 +5754,8 @@ sbi->s_commit_interval = old_opts.s_commit_interval; sbi->s_min_batch_time = old_opts.s_min_batch_time; sbi->s_max_batch_time = old_opts.s_max_batch_time; + if (!test_opt(sb, BLOCK_VALIDITY) && sbi->system_blks) + ext4_release_system_zone(sb); #ifdef CONFIG_QUOTA sbi->s_jquota_fmt = old_opts.s_jquota_fmt; for (i = 0; i < EXT4_MAXQUOTAS; i++) { @@ -5920,6 +5987,11 @@ /* Quotafile not on the same filesystem? */ if (path->dentry->d_sb != sb) return -EXDEV; + + /* Quota already enabled for this file? */ + if (IS_NOQUOTA(d_inode(path->dentry))) + return -EBUSY; + /* Journaling quota? */ if (EXT4_SB(sb)->s_qf_names[type]) { /* Quotafile not in fs root? */ --- linux-5.8.0.orig/fs/ext4/sysfs.c +++ linux-5.8.0/fs/ext4/sysfs.c @@ -24,6 +24,7 @@ attr_session_write_kbytes, attr_lifetime_write_kbytes, attr_reserved_clusters, + attr_sra_exceeded_retry_limit, attr_inode_readahead, attr_trigger_test_error, attr_first_error_time, @@ -205,6 +206,7 @@ EXT4_ATTR_FUNC(session_write_kbytes, 0444); EXT4_ATTR_FUNC(lifetime_write_kbytes, 0444); EXT4_ATTR_FUNC(reserved_clusters, 0644); +EXT4_ATTR_FUNC(sra_exceeded_retry_limit, 0444); EXT4_ATTR_OFFSET(inode_readahead_blks, 0644, inode_readahead, ext4_sb_info, s_inode_readahead_blks); @@ -215,6 +217,7 @@ EXT4_RW_ATTR_SBI_UI(mb_order2_req, s_mb_order2_reqs); EXT4_RW_ATTR_SBI_UI(mb_stream_req, s_mb_stream_request); EXT4_RW_ATTR_SBI_UI(mb_group_prealloc, s_mb_group_prealloc); +EXT4_RW_ATTR_SBI_UI(mb_max_inode_prealloc, s_mb_max_inode_prealloc); EXT4_RW_ATTR_SBI_UI(extent_max_zeroout_kb, s_extent_max_zeroout_kb); EXT4_ATTR(trigger_fs_error, 0200, trigger_test_error); EXT4_RW_ATTR_SBI_UI(err_ratelimit_interval_ms, s_err_ratelimit_state.interval); @@ -249,6 +252,7 @@ ATTR_LIST(session_write_kbytes), ATTR_LIST(lifetime_write_kbytes), ATTR_LIST(reserved_clusters), + ATTR_LIST(sra_exceeded_retry_limit), ATTR_LIST(inode_readahead_blks), ATTR_LIST(inode_goal), ATTR_LIST(mb_stats), @@ -257,6 +261,7 @@ ATTR_LIST(mb_order2_req), ATTR_LIST(mb_stream_req), ATTR_LIST(mb_group_prealloc), + ATTR_LIST(mb_max_inode_prealloc), ATTR_LIST(max_writeback_mb_bump), ATTR_LIST(extent_max_zeroout_kb), ATTR_LIST(trigger_fs_error), @@ -365,6 +370,10 @@ return snprintf(buf, PAGE_SIZE, "%llu\n", (unsigned long long) atomic64_read(&sbi->s_resv_clusters)); + case attr_sra_exceeded_retry_limit: + return snprintf(buf, PAGE_SIZE, "%llu\n", + (unsigned long long) + percpu_counter_sum(&sbi->s_sra_exceeded_retry_limit)); case attr_inode_readahead: case attr_pointer_ui: if (!ptr) --- linux-5.8.0.orig/fs/ext4/verity.c +++ linux-5.8.0/fs/ext4/verity.c @@ -201,55 +201,76 @@ struct inode *inode = file_inode(filp); const int credits = 2; /* superblock and inode for ext4_orphan_del() */ handle_t *handle; + struct ext4_iloc iloc; int err = 0; - int err2; - if (desc != NULL) { - /* Succeeded; write the verity descriptor. */ - err = ext4_write_verity_descriptor(inode, desc, desc_size, - merkle_tree_size); - - /* Write all pages before clearing VERITY_IN_PROGRESS. */ - if (!err) - err = filemap_write_and_wait(inode->i_mapping); - } + /* + * If an error already occurred (which fs/verity/ signals by passing + * desc == NULL), then only clean-up is needed. + */ + if (desc == NULL) + goto cleanup; - /* If we failed, truncate anything we wrote past i_size. */ - if (desc == NULL || err) - ext4_truncate(inode); + /* Append the verity descriptor. */ + err = ext4_write_verity_descriptor(inode, desc, desc_size, + merkle_tree_size); + if (err) + goto cleanup; /* - * We must always clean up by clearing EXT4_STATE_VERITY_IN_PROGRESS and - * deleting the inode from the orphan list, even if something failed. - * If everything succeeded, we'll also set the verity bit in the same - * transaction. + * Write all pages (both data and verity metadata). Note that this must + * happen before clearing EXT4_STATE_VERITY_IN_PROGRESS; otherwise pages + * beyond i_size won't be written properly. For crash consistency, this + * also must happen before the verity inode flag gets persisted. */ + err = filemap_write_and_wait(inode->i_mapping); + if (err) + goto cleanup; - ext4_clear_inode_state(inode, EXT4_STATE_VERITY_IN_PROGRESS); + /* + * Finally, set the verity inode flag and remove the inode from the + * orphan list (in a single transaction). + */ handle = ext4_journal_start(inode, EXT4_HT_INODE, credits); if (IS_ERR(handle)) { - ext4_orphan_del(NULL, inode); - return PTR_ERR(handle); + err = PTR_ERR(handle); + goto cleanup; } - err2 = ext4_orphan_del(handle, inode); - if (err2) - goto out_stop; - - if (desc != NULL && !err) { - struct ext4_iloc iloc; - - err = ext4_reserve_inode_write(handle, inode, &iloc); - if (err) - goto out_stop; - ext4_set_inode_flag(inode, EXT4_INODE_VERITY); - ext4_set_inode_flags(inode, false); - err = ext4_mark_iloc_dirty(handle, inode, &iloc); - } -out_stop: + err = ext4_orphan_del(handle, inode); + if (err) + goto stop_and_cleanup; + + err = ext4_reserve_inode_write(handle, inode, &iloc); + if (err) + goto stop_and_cleanup; + + ext4_set_inode_flag(inode, EXT4_INODE_VERITY); + ext4_set_inode_flags(inode, false); + err = ext4_mark_iloc_dirty(handle, inode, &iloc); + if (err) + goto stop_and_cleanup; + ext4_journal_stop(handle); - return err ?: err2; + + ext4_clear_inode_state(inode, EXT4_STATE_VERITY_IN_PROGRESS); + return 0; + +stop_and_cleanup: + ext4_journal_stop(handle); +cleanup: + /* + * Verity failed to be enabled, so clean up by truncating any verity + * metadata that was written beyond i_size (both from cache and from + * disk), removing the inode from the orphan list (if it wasn't done + * already), and clearing EXT4_STATE_VERITY_IN_PROGRESS. + */ + truncate_inode_pages(inode->i_mapping, inode->i_size); + ext4_truncate(inode); + ext4_orphan_del(NULL, inode); + ext4_clear_inode_state(inode, EXT4_STATE_VERITY_IN_PROGRESS); + return err; } static int ext4_get_verity_descriptor_location(struct inode *inode, --- linux-5.8.0.orig/fs/ext4/xattr.c +++ linux-5.8.0/fs/ext4/xattr.c @@ -1460,6 +1460,9 @@ if (!ce) return NULL; + WARN_ON_ONCE(ext4_handle_valid(journal_current_handle()) && + !(current->flags & PF_MEMALLOC_NOFS)); + ea_data = kvmalloc(value_len, GFP_KERNEL); if (!ea_data) { mb_cache_entry_put(ea_inode_cache, ce); @@ -2326,6 +2329,7 @@ error = -ENOSPC; goto cleanup; } + WARN_ON_ONCE(!(current->flags & PF_MEMALLOC_NOFS)); } error = ext4_reserve_inode_write(handle, inode, &is.iloc); @@ -2399,7 +2403,7 @@ * external inode if possible. */ if (ext4_has_feature_ea_inode(inode->i_sb) && - !i.in_inode) { + i.value_len && !i.in_inode) { i.in_inode = 1; goto retry_inode; } --- linux-5.8.0.orig/fs/f2fs/checkpoint.c +++ linux-5.8.0/fs/f2fs/checkpoint.c @@ -107,7 +107,7 @@ return __get_meta_page(sbi, index, true); } -struct page *f2fs_get_meta_page_nofail(struct f2fs_sb_info *sbi, pgoff_t index) +struct page *f2fs_get_meta_page_retry(struct f2fs_sb_info *sbi, pgoff_t index) { struct page *page; int count = 0; @@ -243,6 +243,8 @@ blkno * NAT_ENTRY_PER_BLOCK); break; case META_SIT: + if (unlikely(blkno >= TOTAL_SEGS(sbi))) + goto out; /* get sit block addr */ fio.new_blkaddr = current_sit_addr(sbi, blkno * SIT_ENTRY_PER_BLOCK); @@ -1047,8 +1049,12 @@ get_pages(sbi, is_dir ? F2FS_DIRTY_DENTS : F2FS_DIRTY_DATA)); retry: - if (unlikely(f2fs_cp_error(sbi))) + if (unlikely(f2fs_cp_error(sbi))) { + trace_f2fs_sync_dirty_inodes_exit(sbi->sb, is_dir, + get_pages(sbi, is_dir ? + F2FS_DIRTY_DENTS : F2FS_DIRTY_DATA)); return -EIO; + } spin_lock(&sbi->inode_lock[type]); @@ -1591,7 +1597,7 @@ goto out; } - if (NM_I(sbi)->dirty_nat_cnt == 0 && + if (NM_I(sbi)->nat_cnt[DIRTY_NAT] == 0 && SIT_I(sbi)->dirty_sentries == 0 && prefree_segments(sbi) == 0) { f2fs_flush_sit_entries(sbi, cpc); --- linux-5.8.0.orig/fs/f2fs/compress.c +++ linux-5.8.0/fs/f2fs/compress.c @@ -375,16 +375,17 @@ ZSTD_DStream *stream; void *workspace; unsigned int workspace_size; + unsigned int max_window_size = + MAX_COMPRESS_WINDOW_SIZE(dic->log_cluster_size); - workspace_size = ZSTD_DStreamWorkspaceBound(MAX_COMPRESS_WINDOW_SIZE); + workspace_size = ZSTD_DStreamWorkspaceBound(max_window_size); workspace = f2fs_kvmalloc(F2FS_I_SB(dic->inode), workspace_size, GFP_NOFS); if (!workspace) return -ENOMEM; - stream = ZSTD_initDStream(MAX_COMPRESS_WINDOW_SIZE, - workspace, workspace_size); + stream = ZSTD_initDStream(max_window_size, workspace, workspace_size); if (!stream) { printk_ratelimited("%sF2FS-fs (%s): %s ZSTD_initDStream failed\n", KERN_ERR, F2FS_I_SB(dic->inode)->sb->s_id, @@ -1290,7 +1291,7 @@ ret = f2fs_write_single_data_page(cc->rpages[i], &_submitted, NULL, NULL, wbc, io_type, - compr_blocks); + compr_blocks, false); if (ret) { if (ret == AOP_WRITEPAGE_ACTIVATE) { unlock_page(cc->rpages[i]); @@ -1310,6 +1311,12 @@ congestion_wait(BLK_RW_ASYNC, DEFAULT_IO_TIMEOUT); lock_page(cc->rpages[i]); + + if (!PageDirty(cc->rpages[i])) { + unlock_page(cc->rpages[i]); + continue; + } + clear_page_dirty_for_io(cc->rpages[i]); goto retry_write; } @@ -1319,6 +1326,9 @@ *submitted += _submitted; } + + f2fs_balance_fs(F2FS_M_SB(mapping), true); + return 0; out_err: for (++i; i < cc->cluster_size; i++) { @@ -1353,6 +1363,8 @@ err = f2fs_write_compressed_pages(cc, submitted, wbc, io_type); cops->destroy_compress_ctx(cc); + kfree(cc->cpages); + cc->cpages = NULL; if (!err) return 0; f2fs_bug_on(F2FS_I_SB(cc->inode), err != -EAGAIN); --- linux-5.8.0.orig/fs/f2fs/data.c +++ linux-5.8.0/fs/f2fs/data.c @@ -471,7 +471,7 @@ if (f2fs_lfs_mode(sbi) && current->plug) blk_finish_plug(current->plug); - if (F2FS_IO_ALIGNED(sbi)) + if (!F2FS_IO_ALIGNED(sbi)) goto submit_io; start = bio->bi_iter.bi_size >> F2FS_BLKSIZE_BITS; @@ -2648,7 +2648,8 @@ sector_t *last_block, struct writeback_control *wbc, enum iostat_type io_type, - int compr_blocks) + int compr_blocks, + bool allow_balance) { struct inode *inode = page->mapping->host; struct f2fs_sb_info *sbi = F2FS_I_SB(inode); @@ -2774,7 +2775,7 @@ } unlock_page(page); if (!S_ISDIR(inode->i_mode) && !IS_NOQUOTA(inode) && - !F2FS_I(inode)->cp_task) + !F2FS_I(inode)->cp_task && allow_balance) f2fs_balance_fs(sbi, need_balance_fs); if (unlikely(f2fs_cp_error(sbi))) { @@ -2821,7 +2822,7 @@ #endif return f2fs_write_single_data_page(page, NULL, NULL, NULL, - wbc, FS_DATA_IO, 0); + wbc, FS_DATA_IO, 0, true); } /* @@ -2991,7 +2992,8 @@ } #endif ret = f2fs_write_single_data_page(page, &submitted, - &bio, &last_block, wbc, io_type, 0); + &bio, &last_block, wbc, io_type, + 0, true); if (ret == AOP_WRITEPAGE_ACTIVATE) unlock_page(page); #ifdef CONFIG_F2FS_FS_COMPRESSION @@ -3432,6 +3434,10 @@ if (f2fs_compressed_file(inode) && fsdata) { f2fs_compress_write_end(inode, fsdata, page->index, copied); f2fs_update_time(F2FS_I_SB(inode), REQ_TIME); + + if (pos + copied > i_size_read(inode) && + !f2fs_verity_in_progress(inode)) + f2fs_i_size_write(inode, pos + copied); return copied; } #endif @@ -3459,6 +3465,9 @@ unsigned long align = offset | iov_iter_alignment(iter); struct block_device *bdev = inode->i_sb->s_bdev; + if (iov_iter_rw(iter) == READ && offset >= i_size_read(inode)) + return 1; + if (align & blocksize_mask) { if (bdev) blkbits = blksize_bits(bdev_logical_block_size(bdev)); --- linux-5.8.0.orig/fs/f2fs/debug.c +++ linux-5.8.0/fs/f2fs/debug.c @@ -145,8 +145,8 @@ si->node_pages = NODE_MAPPING(sbi)->nrpages; if (sbi->meta_inode) si->meta_pages = META_MAPPING(sbi)->nrpages; - si->nats = NM_I(sbi)->nat_cnt; - si->dirty_nats = NM_I(sbi)->dirty_nat_cnt; + si->nats = NM_I(sbi)->nat_cnt[TOTAL_NAT]; + si->dirty_nats = NM_I(sbi)->nat_cnt[DIRTY_NAT]; si->sits = MAIN_SEGS(sbi); si->dirty_sits = SIT_I(sbi)->dirty_sentries; si->free_nids = NM_I(sbi)->nid_cnt[FREE_NID]; @@ -258,9 +258,10 @@ si->cache_mem += (NM_I(sbi)->nid_cnt[FREE_NID] + NM_I(sbi)->nid_cnt[PREALLOC_NID]) * sizeof(struct free_nid); - si->cache_mem += NM_I(sbi)->nat_cnt * sizeof(struct nat_entry); - si->cache_mem += NM_I(sbi)->dirty_nat_cnt * - sizeof(struct nat_entry_set); + si->cache_mem += NM_I(sbi)->nat_cnt[TOTAL_NAT] * + sizeof(struct nat_entry); + si->cache_mem += NM_I(sbi)->nat_cnt[DIRTY_NAT] * + sizeof(struct nat_entry_set); si->cache_mem += si->inmem_pages * sizeof(struct inmem_pages); for (i = 0; i < MAX_INO_ENTRY; i++) si->cache_mem += sbi->im[i].ino_num * sizeof(struct ino_entry); --- linux-5.8.0.orig/fs/f2fs/dir.c +++ linux-5.8.0/fs/f2fs/dir.c @@ -357,16 +357,15 @@ unsigned int max_depth; unsigned int level; + *res_page = NULL; + if (f2fs_has_inline_dentry(dir)) { - *res_page = NULL; de = f2fs_find_in_inline_dir(dir, fname, res_page); goto out; } - if (npages == 0) { - *res_page = NULL; + if (npages == 0) goto out; - } max_depth = F2FS_I(dir)->i_current_depth; if (unlikely(max_depth > MAX_DIR_HASH_DEPTH)) { @@ -377,7 +376,6 @@ } for (level = 0; level < max_depth; level++) { - *res_page = NULL; de = find_in_level(dir, level, fname, res_page); if (de || IS_ERR(*res_page)) break; --- linux-5.8.0.orig/fs/f2fs/f2fs.h +++ linux-5.8.0/fs/f2fs/f2fs.h @@ -895,6 +895,13 @@ MAX_NID_STATE, }; +enum nat_state { + TOTAL_NAT, + DIRTY_NAT, + RECLAIMABLE_NAT, + MAX_NAT_STATE, +}; + struct f2fs_nm_info { block_t nat_blkaddr; /* base disk address of NAT */ nid_t max_nid; /* maximum possible node ids */ @@ -910,8 +917,7 @@ struct rw_semaphore nat_tree_lock; /* protect nat_tree_lock */ struct list_head nat_entries; /* cached nat entry list (clean) */ spinlock_t nat_list_lock; /* protect clean nat entry list */ - unsigned int nat_cnt; /* the # of cached nat entries */ - unsigned int dirty_nat_cnt; /* total num of nat entries in set */ + unsigned int nat_cnt[MAX_NAT_STATE]; /* the # of cached nat entries */ unsigned int nat_blocks; /* # of nat blocks */ /* free node ids management */ @@ -1392,7 +1398,7 @@ #define NULL_CLUSTER ((unsigned int)(~0)) #define MIN_COMPRESS_LOG_SIZE 2 #define MAX_COMPRESS_LOG_SIZE 8 -#define MAX_COMPRESS_WINDOW_SIZE ((PAGE_SIZE) << MAX_COMPRESS_LOG_SIZE) +#define MAX_COMPRESS_WINDOW_SIZE(log_size) ((PAGE_SIZE) << (log_size)) struct f2fs_sb_info { struct super_block *sb; /* pointer to VFS super block */ @@ -3224,6 +3230,8 @@ static inline int f2fs_add_link(struct dentry *dentry, struct inode *inode) { + if (fscrypt_is_nokey_name(dentry)) + return -ENOKEY; return f2fs_do_add_link(d_inode(dentry->d_parent), &dentry->d_name, inode, inode->i_ino, inode->i_mode); } @@ -3287,7 +3295,7 @@ void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid); void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid); int f2fs_try_to_free_nids(struct f2fs_sb_info *sbi, int nr_shrink); -void f2fs_recover_inline_xattr(struct inode *inode, struct page *page); +int f2fs_recover_inline_xattr(struct inode *inode, struct page *page); int f2fs_recover_xattr_data(struct inode *inode, struct page *page); int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page); int f2fs_restore_node_summary(struct f2fs_sb_info *sbi, @@ -3377,7 +3385,7 @@ void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi, bool end_io); struct page *f2fs_grab_meta_page(struct f2fs_sb_info *sbi, pgoff_t index); struct page *f2fs_get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index); -struct page *f2fs_get_meta_page_nofail(struct f2fs_sb_info *sbi, pgoff_t index); +struct page *f2fs_get_meta_page_retry(struct f2fs_sb_info *sbi, pgoff_t index); struct page *f2fs_get_tmp_page(struct f2fs_sb_info *sbi, pgoff_t index); bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi, block_t blkaddr, int type); @@ -3460,7 +3468,7 @@ struct bio **bio, sector_t *last_block, struct writeback_control *wbc, enum iostat_type io_type, - int compr_blocks); + int compr_blocks, bool allow_balance); void f2fs_invalidate_page(struct page *page, unsigned int offset, unsigned int length); int f2fs_release_page(struct page *page, gfp_t wait); @@ -3750,7 +3758,7 @@ int f2fs_convert_inline_inode(struct inode *inode); int f2fs_try_convert_inline_dir(struct inode *dir, struct dentry *dentry); int f2fs_write_inline_data(struct inode *inode, struct page *page); -bool f2fs_recover_inline_data(struct inode *inode, struct page *npage); +int f2fs_recover_inline_data(struct inode *inode, struct page *npage); struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, const struct f2fs_filename *fname, struct page **res_page); --- linux-5.8.0.orig/fs/f2fs/file.c +++ linux-5.8.0/fs/f2fs/file.c @@ -58,6 +58,9 @@ bool need_alloc = true; int err = 0; + if (unlikely(IS_IMMUTABLE(inode))) + return VM_FAULT_SIGBUS; + if (unlikely(f2fs_cp_error(sbi))) { err = -EIO; goto err; @@ -429,9 +432,13 @@ /* handle inline data case */ if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode)) { - if (whence == SEEK_HOLE) + if (whence == SEEK_HOLE) { data_ofs = isize; - goto found; + goto found; + } else if (whence == SEEK_DATA) { + data_ofs = offset; + goto found; + } } pgofs = (pgoff_t)(offset >> PAGE_SHIFT); @@ -777,6 +784,10 @@ return -EIO; } + err = dquot_initialize(inode); + if (err) + return err; + /* we should check inline_data size */ if (!f2fs_may_inline_data(inode)) { err = f2fs_convert_inline_inode(inode); @@ -858,7 +869,8 @@ if (ia_valid & ATTR_MODE) { umode_t mode = attr->ia_mode; - if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + if (!in_group_p(inode->i_gid) && + !capable_wrt_inode_uidgid(inode, CAP_FSETID)) mode &= ~S_ISGID; set_acl_inode(inode, mode); } @@ -875,6 +887,14 @@ if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) return -EIO; + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + + if (unlikely(IS_APPEND(inode) && + (attr->ia_valid & (ATTR_MODE | ATTR_UID | + ATTR_GID | ATTR_TIMES_SET)))) + return -EPERM; + if ((attr->ia_valid & ATTR_SIZE) && !f2fs_is_compress_backend_ready(inode)) return -EOPNOTSUPP; @@ -1837,6 +1857,8 @@ if (iflags & F2FS_COMPR_FL) { if (!f2fs_may_compress(inode)) return -EINVAL; + if (S_ISREG(inode->i_mode) && inode->i_size) + return -EINVAL; set_compress_context(inode); } @@ -3889,6 +3911,11 @@ inode_lock(inode); } + if (unlikely(IS_IMMUTABLE(inode))) { + ret = -EPERM; + goto unlock; + } + ret = generic_write_checks(iocb, from); if (ret > 0) { bool preallocated = false; @@ -3953,6 +3980,7 @@ if (ret > 0) f2fs_update_iostat(F2FS_I_SB(inode), APP_WRITE_IO, ret); } +unlock: inode_unlock(inode); out: trace_f2fs_file_write_iter(inode, iocb->ki_pos, --- linux-5.8.0.orig/fs/f2fs/inline.c +++ linux-5.8.0/fs/f2fs/inline.c @@ -190,6 +190,10 @@ if (!f2fs_has_inline_data(inode)) return 0; + err = dquot_initialize(inode); + if (err) + return err; + page = f2fs_grab_cache_page(inode->i_mapping, 0, false); if (!page) return -ENOMEM; @@ -253,7 +257,7 @@ return 0; } -bool f2fs_recover_inline_data(struct inode *inode, struct page *npage) +int f2fs_recover_inline_data(struct inode *inode, struct page *npage) { struct f2fs_sb_info *sbi = F2FS_I_SB(inode); struct f2fs_inode *ri = NULL; @@ -275,7 +279,8 @@ ri && (ri->i_inline & F2FS_INLINE_DATA)) { process_inline: ipage = f2fs_get_node_page(sbi, inode->i_ino); - f2fs_bug_on(sbi, IS_ERR(ipage)); + if (IS_ERR(ipage)) + return PTR_ERR(ipage); f2fs_wait_on_page_writeback(ipage, NODE, true, true); @@ -288,21 +293,25 @@ set_page_dirty(ipage); f2fs_put_page(ipage, 1); - return true; + return 1; } if (f2fs_has_inline_data(inode)) { ipage = f2fs_get_node_page(sbi, inode->i_ino); - f2fs_bug_on(sbi, IS_ERR(ipage)); + if (IS_ERR(ipage)) + return PTR_ERR(ipage); f2fs_truncate_inline_inode(inode, ipage, 0); clear_inode_flag(inode, FI_INLINE_DATA); f2fs_put_page(ipage, 1); } else if (ri && (ri->i_inline & F2FS_INLINE_DATA)) { - if (f2fs_truncate_blocks(inode, 0, false)) - return false; + int ret; + + ret = f2fs_truncate_blocks(inode, 0, false); + if (ret) + return ret; goto process_inline; } - return false; + return 0; } struct f2fs_dir_entry *f2fs_find_in_inline_dir(struct inode *dir, --- linux-5.8.0.orig/fs/f2fs/inode.c +++ linux-5.8.0/fs/f2fs/inode.c @@ -287,11 +287,19 @@ return false; } + if ((fi->i_flags & F2FS_CASEFOLD_FL) && !f2fs_sb_has_casefold(sbi)) { + set_sbi_flag(sbi, SBI_NEED_FSCK); + f2fs_warn(sbi, "%s: inode (ino=%lx) has casefold flag, but casefold feature is off", + __func__, inode->i_ino); + return false; + } + if (f2fs_has_extra_attr(inode) && f2fs_sb_has_compression(sbi) && fi->i_flags & F2FS_COMPR_FL && F2FS_FITS_IN_INODE(ri, fi->i_extra_isize, i_log_cluster_size)) { if (ri->i_compress_algorithm >= COMPRESS_MAX) { + set_sbi_flag(sbi, SBI_NEED_FSCK); f2fs_warn(sbi, "%s: inode (ino=%lx) has unsupported " "compress algorithm: %u, run fsck to fix", __func__, inode->i_ino, @@ -300,6 +308,7 @@ } if (le64_to_cpu(ri->i_compr_blocks) > SECTOR_TO_BLOCK(inode->i_blocks)) { + set_sbi_flag(sbi, SBI_NEED_FSCK); f2fs_warn(sbi, "%s: inode (ino=%lx) has inconsistent " "i_compr_blocks:%llu, i_blocks:%llu, run fsck to fix", __func__, inode->i_ino, @@ -309,6 +318,7 @@ } if (ri->i_log_cluster_size < MIN_COMPRESS_LOG_SIZE || ri->i_log_cluster_size > MAX_COMPRESS_LOG_SIZE) { + set_sbi_flag(sbi, SBI_NEED_FSCK); f2fs_warn(sbi, "%s: inode (ino=%lx) has unsupported " "log cluster size: %u, run fsck to fix", __func__, inode->i_ino, --- linux-5.8.0.orig/fs/f2fs/namei.c +++ linux-5.8.0/fs/f2fs/namei.c @@ -847,7 +847,11 @@ if (whiteout) { f2fs_i_links_write(inode, false); + + spin_lock(&inode->i_lock); inode->i_state |= I_LINKABLE; + spin_unlock(&inode->i_lock); + *whiteout = inode; } else { d_tmpfile(dentry, inode); @@ -1033,7 +1037,11 @@ err = f2fs_add_link(old_dentry, whiteout); if (err) goto put_out_dir; + + spin_lock(&whiteout->i_lock); whiteout->i_state &= ~I_LINKABLE; + spin_unlock(&whiteout->i_lock); + iput(whiteout); } --- linux-5.8.0.orig/fs/f2fs/node.c +++ linux-5.8.0/fs/f2fs/node.c @@ -62,8 +62,8 @@ sizeof(struct free_nid)) >> PAGE_SHIFT; res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 2); } else if (type == NAT_ENTRIES) { - mem_size = (nm_i->nat_cnt * sizeof(struct nat_entry)) >> - PAGE_SHIFT; + mem_size = (nm_i->nat_cnt[TOTAL_NAT] * + sizeof(struct nat_entry)) >> PAGE_SHIFT; res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 2); if (excess_cached_nats(sbi)) res = false; @@ -109,7 +109,7 @@ static struct page *get_current_nat_page(struct f2fs_sb_info *sbi, nid_t nid) { - return f2fs_get_meta_page_nofail(sbi, current_nat_addr(sbi, nid)); + return f2fs_get_meta_page_retry(sbi, current_nat_addr(sbi, nid)); } static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid) @@ -177,7 +177,8 @@ list_add_tail(&ne->list, &nm_i->nat_entries); spin_unlock(&nm_i->nat_list_lock); - nm_i->nat_cnt++; + nm_i->nat_cnt[TOTAL_NAT]++; + nm_i->nat_cnt[RECLAIMABLE_NAT]++; return ne; } @@ -207,7 +208,8 @@ static void __del_from_nat_cache(struct f2fs_nm_info *nm_i, struct nat_entry *e) { radix_tree_delete(&nm_i->nat_root, nat_get_nid(e)); - nm_i->nat_cnt--; + nm_i->nat_cnt[TOTAL_NAT]--; + nm_i->nat_cnt[RECLAIMABLE_NAT]--; __free_nat_entry(e); } @@ -253,7 +255,8 @@ if (get_nat_flag(ne, IS_DIRTY)) goto refresh_list; - nm_i->dirty_nat_cnt++; + nm_i->nat_cnt[DIRTY_NAT]++; + nm_i->nat_cnt[RECLAIMABLE_NAT]--; set_nat_flag(ne, IS_DIRTY, true); refresh_list: spin_lock(&nm_i->nat_list_lock); @@ -273,7 +276,8 @@ set_nat_flag(ne, IS_DIRTY, false); set->entry_cnt--; - nm_i->dirty_nat_cnt--; + nm_i->nat_cnt[DIRTY_NAT]--; + nm_i->nat_cnt[RECLAIMABLE_NAT]++; } static unsigned int __gang_lookup_nat_set(struct f2fs_nm_info *nm_i, @@ -1924,8 +1928,12 @@ goto continue_unlock; } - /* flush inline_data, if it's async context. */ - if (do_balance && is_inline_node(page)) { + /* flush inline_data/inode, if it's async context. */ + if (!do_balance) + goto write_node; + + /* flush inline_data */ + if (is_inline_node(page)) { clear_inline_node(page); unlock_page(page); flush_inline_data(sbi, ino_of_node(page)); @@ -1938,7 +1946,7 @@ if (flush_dirty_inode(page)) goto lock_node; } - +write_node: f2fs_wait_on_page_writeback(page, NODE, true, true); if (!clear_page_dirty_for_io(page)) @@ -2371,6 +2379,9 @@ if (unlikely(nid >= nm_i->max_nid)) nid = 0; + if (unlikely(nid % NAT_ENTRY_PER_BLOCK)) + nid = NAT_BLOCK_OFFSET(nid) * NAT_ENTRY_PER_BLOCK; + /* Enough entries */ if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK) return 0; @@ -2572,7 +2583,7 @@ return nr - nr_shrink; } -void f2fs_recover_inline_xattr(struct inode *inode, struct page *page) +int f2fs_recover_inline_xattr(struct inode *inode, struct page *page) { void *src_addr, *dst_addr; size_t inline_size; @@ -2580,7 +2591,8 @@ struct f2fs_inode *ri; ipage = f2fs_get_node_page(F2FS_I_SB(inode), inode->i_ino); - f2fs_bug_on(F2FS_I_SB(inode), IS_ERR(ipage)); + if (IS_ERR(ipage)) + return PTR_ERR(ipage); ri = F2FS_INODE(page); if (ri->i_inline & F2FS_INLINE_XATTR) { @@ -2599,6 +2611,7 @@ update_inode: f2fs_update_inode(inode, ipage); f2fs_put_page(ipage, 1); + return 0; } int f2fs_recover_xattr_data(struct inode *inode, struct page *page) @@ -2937,14 +2950,17 @@ LIST_HEAD(sets); int err = 0; - /* during unmount, let's flush nat_bits before checking dirty_nat_cnt */ + /* + * during unmount, let's flush nat_bits before checking + * nat_cnt[DIRTY_NAT]. + */ if (enabled_nat_bits(sbi, cpc)) { down_write(&nm_i->nat_tree_lock); remove_nats_in_journal(sbi); up_write(&nm_i->nat_tree_lock); } - if (!nm_i->dirty_nat_cnt) + if (!nm_i->nat_cnt[DIRTY_NAT]) return 0; down_write(&nm_i->nat_tree_lock); @@ -2955,7 +2971,8 @@ * into nat entry set. */ if (enabled_nat_bits(sbi, cpc) || - !__has_cursum_space(journal, nm_i->dirty_nat_cnt, NAT_JOURNAL)) + !__has_cursum_space(journal, + nm_i->nat_cnt[DIRTY_NAT], NAT_JOURNAL)) remove_nats_in_journal(sbi); while ((found = __gang_lookup_nat_set(nm_i, @@ -3079,7 +3096,6 @@ F2FS_RESERVED_NODE_NUM; nm_i->nid_cnt[FREE_NID] = 0; nm_i->nid_cnt[PREALLOC_NID] = 0; - nm_i->nat_cnt = 0; nm_i->ram_thresh = DEF_RAM_THRESHOLD; nm_i->ra_nid_pages = DEF_RA_NID_PAGES; nm_i->dirty_nats_ratio = DEF_DIRTY_NAT_RATIO_THRESHOLD; @@ -3216,7 +3232,7 @@ __del_from_nat_cache(nm_i, natvec[idx]); } } - f2fs_bug_on(sbi, nm_i->nat_cnt); + f2fs_bug_on(sbi, nm_i->nat_cnt[TOTAL_NAT]); /* destroy nat set cache */ nid = 0; --- linux-5.8.0.orig/fs/f2fs/node.h +++ linux-5.8.0/fs/f2fs/node.h @@ -126,13 +126,13 @@ static inline bool excess_dirty_nats(struct f2fs_sb_info *sbi) { - return NM_I(sbi)->dirty_nat_cnt >= NM_I(sbi)->max_nid * + return NM_I(sbi)->nat_cnt[DIRTY_NAT] >= NM_I(sbi)->max_nid * NM_I(sbi)->dirty_nats_ratio / 100; } static inline bool excess_cached_nats(struct f2fs_sb_info *sbi) { - return NM_I(sbi)->nat_cnt >= DEF_NAT_CACHE_THRESHOLD; + return NM_I(sbi)->nat_cnt[TOTAL_NAT] >= DEF_NAT_CACHE_THRESHOLD; } static inline bool excess_dirty_nodes(struct f2fs_sb_info *sbi) --- linux-5.8.0.orig/fs/f2fs/recovery.c +++ linux-5.8.0/fs/f2fs/recovery.c @@ -544,7 +544,9 @@ /* step 1: recover xattr */ if (IS_INODE(page)) { - f2fs_recover_inline_xattr(inode, page); + err = f2fs_recover_inline_xattr(inode, page); + if (err) + goto out; } else if (f2fs_has_xattr_block(ofs_of_node(page))) { err = f2fs_recover_xattr_data(inode, page); if (!err) @@ -553,8 +555,12 @@ } /* step 2: recover inline data */ - if (f2fs_recover_inline_data(inode, page)) + err = f2fs_recover_inline_data(inode, page); + if (err) { + if (err == 1) + err = 0; goto out; + } /* step 3: recover data indices */ start = f2fs_start_bidx_of_node(ofs_of_node(page), inode); --- linux-5.8.0.orig/fs/f2fs/segment.c +++ linux-5.8.0/fs/f2fs/segment.c @@ -2318,7 +2318,9 @@ */ struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) { - return f2fs_get_meta_page_nofail(sbi, GET_SUM_BLOCK(sbi, segno)); + if (unlikely(f2fs_cp_error(sbi))) + return ERR_PTR(-EIO); + return f2fs_get_meta_page_retry(sbi, GET_SUM_BLOCK(sbi, segno)); } void f2fs_update_meta_page(struct f2fs_sb_info *sbi, @@ -2590,7 +2592,11 @@ __next_free_blkoff(sbi, curseg, 0); sum_page = f2fs_get_sum_page(sbi, new_segno); - f2fs_bug_on(sbi, IS_ERR(sum_page)); + if (IS_ERR(sum_page)) { + /* GC won't be able to use stale summary pages by cp_error */ + memset(curseg->sum_blk, 0, SUM_ENTRY_SIZE); + return; + } sum_node = (struct f2fs_summary_block *)page_address(sum_page); memcpy(curseg->sum_blk, sum_node, SUM_ENTRY_SIZE); f2fs_put_page(sum_page, 1); @@ -3759,7 +3765,7 @@ static struct page *get_current_sit_page(struct f2fs_sb_info *sbi, unsigned int segno) { - return f2fs_get_meta_page_nofail(sbi, current_sit_addr(sbi, segno)); + return f2fs_get_meta_page(sbi, current_sit_addr(sbi, segno)); } static struct page *get_next_sit_page(struct f2fs_sb_info *sbi, --- linux-5.8.0.orig/fs/f2fs/segment.h +++ linux-5.8.0/fs/f2fs/segment.h @@ -88,11 +88,11 @@ #define BLKS_PER_SEC(sbi) \ ((sbi)->segs_per_sec * (sbi)->blocks_per_seg) #define GET_SEC_FROM_SEG(sbi, segno) \ - ((segno) / (sbi)->segs_per_sec) + (((segno) == -1) ? -1: (segno) / (sbi)->segs_per_sec) #define GET_SEG_FROM_SEC(sbi, secno) \ ((secno) * (sbi)->segs_per_sec) #define GET_ZONE_FROM_SEC(sbi, secno) \ - ((secno) / (sbi)->secs_per_zone) + (((secno) == -1) ? -1: (secno) / (sbi)->secs_per_zone) #define GET_ZONE_FROM_SEG(sbi, segno) \ GET_ZONE_FROM_SEC(sbi, GET_SEC_FROM_SEG(sbi, segno)) --- linux-5.8.0.orig/fs/f2fs/shrinker.c +++ linux-5.8.0/fs/f2fs/shrinker.c @@ -18,9 +18,7 @@ static unsigned long __count_nat_entries(struct f2fs_sb_info *sbi) { - long count = NM_I(sbi)->nat_cnt - NM_I(sbi)->dirty_nat_cnt; - - return count > 0 ? count : 0; + return NM_I(sbi)->nat_cnt[RECLAIMABLE_NAT]; } static unsigned long __count_free_nids(struct f2fs_sb_info *sbi) --- linux-5.8.0.orig/fs/f2fs/super.c +++ linux-5.8.0/fs/f2fs/super.c @@ -1173,6 +1173,9 @@ int i; bool dropped; + /* unregister procfs/sysfs entries in advance to avoid race case */ + f2fs_unregister_sysfs(sbi); + f2fs_quota_off_umount(sb); /* prevent remaining shrinker jobs */ @@ -1238,8 +1241,6 @@ kvfree(sbi->ckpt); - f2fs_unregister_sysfs(sbi); - sb->s_fs_info = NULL; if (sbi->s_chksum_driver) crypto_free_shash(sbi->s_chksum_driver); @@ -1712,6 +1713,9 @@ static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi) { + /* we should flush all the data to keep data consistency */ + sync_inodes_sb(sbi->sb); + down_write(&sbi->gc_lock); f2fs_dirty_to_prefree(sbi); @@ -2668,7 +2672,6 @@ block_t total_sections, blocks_per_seg; struct f2fs_super_block *raw_super = (struct f2fs_super_block *) (bh->b_data + F2FS_SUPER_OFFSET); - unsigned int blocksize; size_t crc_offset = 0; __u32 crc = 0; @@ -2702,10 +2705,10 @@ } /* Currently, support only 4KB block size */ - blocksize = 1 << le32_to_cpu(raw_super->log_blocksize); - if (blocksize != F2FS_BLKSIZE) { - f2fs_info(sbi, "Invalid blocksize (%u), supports only 4KB", - blocksize); + if (le32_to_cpu(raw_super->log_blocksize) != F2FS_BLKSIZE_BITS) { + f2fs_info(sbi, "Invalid log_blocksize (%u), supports only %u", + le32_to_cpu(raw_super->log_blocksize), + F2FS_BLKSIZE_BITS); return -EFSCORRUPTED; } @@ -2781,6 +2784,12 @@ segment_count, dev_seg_count); return -EFSCORRUPTED; } + } else { + if (__F2FS_HAS_FEATURE(raw_super, F2FS_FEATURE_BLKZONED) && + !bdev_is_zoned(sbi->sb->s_bdev)) { + f2fs_info(sbi, "Zoned block device path is missing"); + return -EFSCORRUPTED; + } } if (secs_per_zone > total_sections || !secs_per_zone) { --- linux-5.8.0.orig/fs/f2fs/sysfs.c +++ linux-5.8.0/fs/f2fs/sysfs.c @@ -223,6 +223,13 @@ } #endif +static ssize_t main_blkaddr_show(struct f2fs_attr *a, + struct f2fs_sb_info *sbi, char *buf) +{ + return snprintf(buf, PAGE_SIZE, "%llu\n", + (unsigned long long)MAIN_BLKADDR(sbi)); +} + static ssize_t f2fs_sbi_show(struct f2fs_attr *a, struct f2fs_sb_info *sbi, char *buf) { @@ -522,7 +529,6 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_idle, gc_mode); F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_urgent, gc_mode); F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, reclaim_segments, rec_prefree_segments); -F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, main_blkaddr, main_blkaddr); F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_small_discards, max_discards); F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity); F2FS_RW_ATTR(RESERVED_BLOCKS, f2fs_sb_info, reserved_blocks, reserved_blocks); @@ -565,6 +571,7 @@ F2FS_GENERAL_RO_ATTR(unusable); F2FS_GENERAL_RO_ATTR(encoding); F2FS_GENERAL_RO_ATTR(mounted_time_sec); +F2FS_GENERAL_RO_ATTR(main_blkaddr); #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); @@ -957,4 +964,5 @@ } kobject_del(&sbi->s_kobj); kobject_put(&sbi->s_kobj); + wait_for_completion(&sbi->s_kobj_unregister); } --- linux-5.8.0.orig/fs/fat/fatent.c +++ linux-5.8.0/fs/fat/fatent.c @@ -657,6 +657,9 @@ unsigned long ra_pages = sb->s_bdi->ra_pages; unsigned int reada_blocks; + if (fatent->entry >= ent_limit) + return; + if (ra_pages > sb->s_bdi->io_pages) ra_pages = rounddown(ra_pages, sb->s_bdi->io_pages); reada_blocks = ra_pages << (PAGE_SHIFT - sb->s_blocksize_bits + 1); --- linux-5.8.0.orig/fs/fcntl.c +++ linux-5.8.0/fs/fcntl.c @@ -32,7 +32,7 @@ #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) -static int setfl(int fd, struct file * filp, unsigned long arg) +int setfl(int fd, struct file *filp, unsigned long arg) { struct inode * inode = file_inode(filp); int error = 0; @@ -63,6 +63,8 @@ if (filp->f_op->check_flags) error = filp->f_op->check_flags(arg); + if (!error && filp->f_op->setfl) + error = filp->f_op->setfl(filp, arg); if (error) return error; @@ -83,6 +85,7 @@ out: return error; } +EXPORT_SYMBOL_GPL(setfl); static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) @@ -781,9 +784,10 @@ { struct task_struct *p; enum pid_type type; + unsigned long flags; struct pid *pid; - read_lock(&fown->lock); + read_lock_irqsave(&fown->lock, flags); type = fown->pid_type; pid = fown->pid; @@ -804,7 +808,7 @@ read_unlock(&tasklist_lock); } out_unlock_fown: - read_unlock(&fown->lock); + read_unlock_irqrestore(&fown->lock, flags); } static void send_sigurg_to_task(struct task_struct *p, @@ -819,9 +823,10 @@ struct task_struct *p; enum pid_type type; struct pid *pid; + unsigned long flags; int ret = 0; - read_lock(&fown->lock); + read_lock_irqsave(&fown->lock, flags); type = fown->pid_type; pid = fown->pid; @@ -844,7 +849,7 @@ read_unlock(&tasklist_lock); } out_unlock_fown: - read_unlock(&fown->lock); + read_unlock_irqrestore(&fown->lock, flags); return ret; } --- linux-5.8.0.orig/fs/file.c +++ linux-5.8.0/fs/file.c @@ -676,6 +676,7 @@ *res = NULL; return -ENOENT; } +EXPORT_SYMBOL(__close_fd_get_file); void do_close_on_exec(struct files_struct *files) { --- linux-5.8.0.orig/fs/file_table.c +++ linux-5.8.0/fs/file_table.c @@ -162,6 +162,7 @@ } return ERR_PTR(-ENFILE); } +EXPORT_SYMBOL_GPL(alloc_empty_file); /* * Variant of alloc_empty_file() that doesn't check and modify nr_files. @@ -339,7 +340,7 @@ if (likely(!in_interrupt() && !(task->flags & PF_KTHREAD))) { init_task_work(&file->f_u.fu_rcuhead, ____fput); - if (!task_work_add(task, &file->f_u.fu_rcuhead, true)) + if (!task_work_add(task, &file->f_u.fu_rcuhead, TWA_RESUME)) return; /* * After this task has run exit_task_work(), @@ -376,6 +377,7 @@ } EXPORT_SYMBOL(fput); +EXPORT_SYMBOL_GPL(__fput_sync); void __init files_init(void) { --- linux-5.8.0.orig/fs/fs-writeback.c +++ linux-5.8.0/fs/fs-writeback.c @@ -42,7 +42,6 @@ struct wb_writeback_work { long nr_pages; struct super_block *sb; - unsigned long *older_than_this; enum writeback_sync_modes sync_mode; unsigned int tagged_writepages:1; unsigned int for_kupdate:1; @@ -144,7 +143,9 @@ struct bdi_writeback *wb) { assert_spin_locked(&wb->list_lock); + assert_spin_locked(&inode->i_lock); + inode->i_state &= ~I_SYNC_QUEUED; list_del_init(&inode->i_io_list); wb_io_lists_depopulated(wb); } @@ -1122,7 +1123,9 @@ struct bdi_writeback *wb; wb = inode_to_wb_and_lock_list(inode); + spin_lock(&inode->i_lock); inode_io_list_del_locked(inode, wb); + spin_unlock(&inode->i_lock); spin_unlock(&wb->list_lock); } EXPORT_SYMBOL(inode_io_list_del); @@ -1172,8 +1175,10 @@ * the case then the inode must have been redirtied while it was being written * out and we don't reset its dirtied_when. */ -static void redirty_tail(struct inode *inode, struct bdi_writeback *wb) +static void redirty_tail_locked(struct inode *inode, struct bdi_writeback *wb) { + assert_spin_locked(&inode->i_lock); + if (!list_empty(&wb->b_dirty)) { struct inode *tail; @@ -1182,6 +1187,14 @@ inode->dirtied_when = jiffies; } inode_io_list_move_locked(inode, wb, &wb->b_dirty); + inode->i_state &= ~I_SYNC_QUEUED; +} + +static void redirty_tail(struct inode *inode, struct bdi_writeback *wb) +{ + spin_lock(&inode->i_lock); + redirty_tail_locked(inode, wb); + spin_unlock(&inode->i_lock); } /* @@ -1220,16 +1233,13 @@ #define EXPIRE_DIRTY_ATIME 0x0001 /* - * Move expired (dirtied before work->older_than_this) dirty inodes from + * Move expired (dirtied before dirtied_before) dirty inodes from * @delaying_queue to @dispatch_queue. */ static int move_expired_inodes(struct list_head *delaying_queue, struct list_head *dispatch_queue, - int flags, - struct wb_writeback_work *work) + unsigned long dirtied_before) { - unsigned long *older_than_this = NULL; - unsigned long expire_time; LIST_HEAD(tmp); struct list_head *pos, *node; struct super_block *sb = NULL; @@ -1237,21 +1247,15 @@ int do_sb_sort = 0; int moved = 0; - if ((flags & EXPIRE_DIRTY_ATIME) == 0) - older_than_this = work->older_than_this; - else if (!work->for_sync) { - expire_time = jiffies - (dirtytime_expire_interval * HZ); - older_than_this = &expire_time; - } while (!list_empty(delaying_queue)) { inode = wb_inode(delaying_queue->prev); - if (older_than_this && - inode_dirtied_after(inode, *older_than_this)) + if (inode_dirtied_after(inode, dirtied_before)) break; list_move(&inode->i_io_list, &tmp); moved++; - if (flags & EXPIRE_DIRTY_ATIME) - set_bit(__I_DIRTY_TIME_EXPIRED, &inode->i_state); + spin_lock(&inode->i_lock); + inode->i_state |= I_SYNC_QUEUED; + spin_unlock(&inode->i_lock); if (sb_is_blkdev_sb(inode->i_sb)) continue; if (sb && sb != inode->i_sb) @@ -1289,18 +1293,22 @@ * | * +--> dequeue for IO */ -static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work) +static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work, + unsigned long dirtied_before) { int moved; + unsigned long time_expire_jif = dirtied_before; assert_spin_locked(&wb->list_lock); list_splice_init(&wb->b_more_io, &wb->b_io); - moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, 0, work); + moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, dirtied_before); + if (!work->for_sync) + time_expire_jif = jiffies - dirtytime_expire_interval * HZ; moved += move_expired_inodes(&wb->b_dirty_time, &wb->b_io, - EXPIRE_DIRTY_ATIME, work); + time_expire_jif); if (moved) wb_io_lists_populated(wb); - trace_writeback_queue_io(wb, work, moved); + trace_writeback_queue_io(wb, work, dirtied_before, moved); } static int write_inode(struct inode *inode, struct writeback_control *wbc) @@ -1394,7 +1402,7 @@ * writeback is not making progress due to locked * buffers. Skip this inode for now. */ - redirty_tail(inode, wb); + redirty_tail_locked(inode, wb); return; } @@ -1414,7 +1422,7 @@ * retrying writeback of the dirty page/inode * that cannot be performed immediately. */ - redirty_tail(inode, wb); + redirty_tail_locked(inode, wb); } } else if (inode->i_state & I_DIRTY) { /* @@ -1422,10 +1430,11 @@ * such as delayed allocation during submission or metadata * updates after data IO completion. */ - redirty_tail(inode, wb); + redirty_tail_locked(inode, wb); } else if (inode->i_state & I_DIRTY_TIME) { inode->dirtied_when = jiffies; inode_io_list_move_locked(inode, wb, &wb->b_dirty_time); + inode->i_state &= ~I_SYNC_QUEUED; } else { /* The inode is clean. Remove from writeback lists. */ inode_io_list_del_locked(inode, wb); @@ -1465,25 +1474,25 @@ } /* + * If the inode has dirty timestamps and we need to write them, call + * mark_inode_dirty_sync() to notify the filesystem about it and to + * change I_DIRTY_TIME into I_DIRTY_SYNC. + */ + if ((inode->i_state & I_DIRTY_TIME) && + (wbc->sync_mode == WB_SYNC_ALL || wbc->for_sync || + time_after(jiffies, inode->dirtied_time_when + + dirtytime_expire_interval * HZ))) { + trace_writeback_lazytime(inode); + mark_inode_dirty_sync(inode); + } + + /* * Some filesystems may redirty the inode during the writeback * due to delalloc, clear dirty metadata flags right before * write_inode() */ spin_lock(&inode->i_lock); - dirty = inode->i_state & I_DIRTY; - if (inode->i_state & I_DIRTY_TIME) { - if ((dirty & I_DIRTY_INODE) || - wbc->sync_mode == WB_SYNC_ALL || - unlikely(inode->i_state & I_DIRTY_TIME_EXPIRED) || - unlikely(time_after(jiffies, - (inode->dirtied_time_when + - dirtytime_expire_interval * HZ)))) { - dirty |= I_DIRTY_TIME | I_DIRTY_TIME_EXPIRED; - trace_writeback_lazytime(inode); - } - } else - inode->i_state &= ~I_DIRTY_TIME_EXPIRED; inode->i_state &= ~dirty; /* @@ -1504,8 +1513,6 @@ spin_unlock(&inode->i_lock); - if (dirty & I_DIRTY_TIME) - mark_inode_dirty_sync(inode); /* Don't write the inode if only I_DIRTY_PAGES was set */ if (dirty & ~I_DIRTY_PAGES) { int err = write_inode(inode, wbc); @@ -1669,8 +1676,8 @@ */ spin_lock(&inode->i_lock); if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { + redirty_tail_locked(inode, wb); spin_unlock(&inode->i_lock); - redirty_tail(inode, wb); continue; } if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) { @@ -1811,7 +1818,7 @@ blk_start_plug(&plug); spin_lock(&wb->list_lock); if (list_empty(&wb->b_io)) - queue_io(wb, &work); + queue_io(wb, &work, jiffies); __writeback_inodes_wb(wb, &work); spin_unlock(&wb->list_lock); blk_finish_plug(&plug); @@ -1831,7 +1838,7 @@ * takes longer than a dirty_writeback_interval interval, then leave a * one-second gap. * - * older_than_this takes precedence over nr_to_write. So we'll only write back + * dirtied_before takes precedence over nr_to_write. So we'll only write back * all dirty pages if they are all attached to "old" mappings. */ static long wb_writeback(struct bdi_writeback *wb, @@ -1839,14 +1846,11 @@ { unsigned long wb_start = jiffies; long nr_pages = work->nr_pages; - unsigned long oldest_jif; + unsigned long dirtied_before = jiffies; struct inode *inode; long progress; struct blk_plug plug; - oldest_jif = jiffies; - work->older_than_this = &oldest_jif; - blk_start_plug(&plug); spin_lock(&wb->list_lock); for (;;) { @@ -1880,14 +1884,14 @@ * safe. */ if (work->for_kupdate) { - oldest_jif = jiffies - + dirtied_before = jiffies - msecs_to_jiffies(dirty_expire_interval * 10); } else if (work->for_background) - oldest_jif = jiffies; + dirtied_before = jiffies; trace_writeback_start(wb, work); if (list_empty(&wb->b_io)) - queue_io(wb, work); + queue_io(wb, work, dirtied_before); if (work->sb) progress = writeback_sb_inodes(work->sb, wb, work); else @@ -2289,11 +2293,12 @@ inode->i_state |= flags; /* - * If the inode is being synced, just update its dirty state. - * The unlocker will place the inode on the appropriate - * superblock list, based upon its state. + * If the inode is queued for writeback by flush worker, just + * update its dirty state. Once the flush worker is done with + * the inode it will place it on the appropriate superblock + * list, based upon its state. */ - if (inode->i_state & I_SYNC) + if (inode->i_state & I_SYNC_QUEUED) goto out_unlock_inode; /* --- linux-5.8.0.orig/fs/fuse/acl.c +++ linux-5.8.0/fs/fuse/acl.c @@ -19,6 +19,9 @@ void *value = NULL; struct posix_acl *acl; + if (fuse_is_bad(inode)) + return ERR_PTR(-EIO); + if (!fc->posix_acl || fc->no_getxattr) return NULL; @@ -53,6 +56,9 @@ const char *name; int ret; + if (fuse_is_bad(inode)) + return -EIO; + if (!fc->posix_acl || fc->no_setxattr) return -EOPNOTSUPP; --- linux-5.8.0.orig/fs/fuse/dev.c +++ linux-5.8.0/fs/fuse/dev.c @@ -785,15 +785,16 @@ struct page *newpage; struct pipe_buffer *buf = cs->pipebufs; + get_page(oldpage); err = unlock_request(cs->req); if (err) - return err; + goto out_put_old; fuse_copy_finish(cs); err = pipe_buf_confirm(cs->pipe, buf); if (err) - return err; + goto out_put_old; BUG_ON(!cs->nr_segs); cs->currbuf = buf; @@ -833,7 +834,7 @@ err = replace_page_cache_page(oldpage, newpage, GFP_KERNEL); if (err) { unlock_page(newpage); - return err; + goto out_put_old; } get_page(newpage); @@ -852,14 +853,19 @@ if (err) { unlock_page(newpage); put_page(newpage); - return err; + goto out_put_old; } unlock_page(oldpage); + /* Drop ref for ap->pages[] array */ put_page(oldpage); cs->len = 0; - return 0; + err = 0; +out_put_old: + /* Drop ref obtained in this function */ + put_page(oldpage); + return err; out_fallback_unlock: unlock_page(newpage); @@ -868,10 +874,10 @@ cs->offset = buf->offset; err = lock_request(cs->req); - if (err) - return err; + if (!err) + err = 1; - return 1; + goto out_put_old; } static int fuse_ref_page(struct fuse_copy_state *cs, struct page *page, @@ -883,14 +889,16 @@ if (cs->nr_segs >= cs->pipe->max_usage) return -EIO; + get_page(page); err = unlock_request(cs->req); - if (err) + if (err) { + put_page(page); return err; + } fuse_copy_finish(cs); buf = cs->pipebufs; - get_page(page); buf->page = page; buf->offset = offset; buf->len = count; --- linux-5.8.0.orig/fs/fuse/dir.c +++ linux-5.8.0/fs/fuse/dir.c @@ -201,7 +201,7 @@ int ret; inode = d_inode_rcu(entry); - if (inode && is_bad_inode(inode)) + if (inode && fuse_is_bad(inode)) goto invalid; else if (time_before64(fuse_dentry_time(entry), get_jiffies_64()) || (flags & LOOKUP_REVAL)) { @@ -386,6 +386,9 @@ bool outarg_valid = true; bool locked; + 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); @@ -529,6 +532,9 @@ struct fuse_conn *fc = get_fuse_conn(dir); struct dentry *res = NULL; + if (fuse_is_bad(dir)) + return -EIO; + if (d_in_lookup(entry)) { res = fuse_lookup(dir, entry, 0); if (IS_ERR(res)) @@ -577,6 +583,9 @@ int err; struct fuse_forget_link *forget; + if (fuse_is_bad(dir)) + return -EIO; + forget = fuse_alloc_forget(); if (!forget) return -ENOMEM; @@ -704,6 +713,9 @@ struct fuse_conn *fc = get_fuse_conn(dir); FUSE_ARGS(args); + if (fuse_is_bad(dir)) + return -EIO; + args.opcode = FUSE_UNLINK; args.nodeid = get_node_id(dir); args.in_numargs = 1; @@ -740,6 +752,9 @@ struct fuse_conn *fc = get_fuse_conn(dir); FUSE_ARGS(args); + if (fuse_is_bad(dir)) + return -EIO; + args.opcode = FUSE_RMDIR; args.nodeid = get_node_id(dir); args.in_numargs = 1; @@ -818,6 +833,9 @@ struct fuse_conn *fc = get_fuse_conn(olddir); int err; + if (fuse_is_bad(olddir)) + return -EIO; + if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE | RENAME_WHITEOUT)) return -EINVAL; @@ -953,7 +971,7 @@ if (!err) { if (fuse_invalid_attr(&outarg.attr) || (inode->i_mode ^ outarg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + fuse_make_bad(inode); err = -EIO; } else { fuse_change_attributes(inode, &outarg.attr, @@ -1155,6 +1173,9 @@ bool refreshed = false; int err = 0; + if (fuse_is_bad(inode)) + return -EIO; + if (!fuse_allow_current_process(fc)) return -EACCES; @@ -1250,7 +1271,7 @@ int err; err = -EIO; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) goto out_err; if (fc->cache_symlinks) @@ -1298,7 +1319,7 @@ struct fuse_conn *fc = get_fuse_conn(inode); int err; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return -EIO; if (fc->no_fsyncdir) @@ -1575,7 +1596,7 @@ if (fuse_invalid_attr(&outarg.attr) || (inode->i_mode ^ outarg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + fuse_make_bad(inode); err = -EIO; goto error; } @@ -1631,6 +1652,9 @@ struct file *file = (attr->ia_valid & ATTR_FILE) ? attr->ia_file : NULL; int ret; + if (fuse_is_bad(inode)) + return -EIO; + if (!fuse_allow_current_process(get_fuse_conn(inode))) return -EACCES; @@ -1689,6 +1713,9 @@ struct inode *inode = d_inode(path->dentry); struct fuse_conn *fc = get_fuse_conn(inode); + if (fuse_is_bad(inode)) + return -EIO; + if (!fuse_allow_current_process(fc)) { if (!request_mask) { /* --- linux-5.8.0.orig/fs/fuse/file.c +++ linux-5.8.0/fs/fuse/file.c @@ -222,6 +222,9 @@ fc->atomic_o_trunc && fc->writeback_cache; + if (fuse_is_bad(inode)) + return -EIO; + err = generic_file_open(inode, file); if (err) return err; @@ -449,7 +452,7 @@ FUSE_ARGS(args); int err; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return -EIO; err = write_inode_now(inode, 1); @@ -521,7 +524,7 @@ struct fuse_conn *fc = get_fuse_conn(inode); int err; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return -EIO; inode_lock(inode); @@ -845,7 +848,7 @@ int err; err = -EIO; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) goto out; err = fuse_do_readpage(file, page); @@ -938,7 +941,7 @@ struct fuse_conn *fc = get_fuse_conn(inode); unsigned int i, max_pages, nr_pages = 0; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return; max_pages = min_t(unsigned int, fc->max_pages, @@ -1540,7 +1543,7 @@ struct file *file = iocb->ki_filp; struct fuse_file *ff = file->private_data; - if (is_bad_inode(file_inode(file))) + if (fuse_is_bad(file_inode(file))) return -EIO; if (!(ff->open_flags & FOPEN_DIRECT_IO)) @@ -1554,7 +1557,7 @@ struct file *file = iocb->ki_filp; struct fuse_file *ff = file->private_data; - if (is_bad_inode(file_inode(file))) + if (fuse_is_bad(file_inode(file))) return -EIO; if (!(ff->open_flags & FOPEN_DIRECT_IO)) @@ -2150,7 +2153,7 @@ int err; err = -EIO; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) goto out; data.inode = inode; @@ -2928,7 +2931,7 @@ if (!fuse_allow_current_process(fc)) return -EACCES; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return -EIO; return fuse_do_ioctl(file, cmd, arg, flags); @@ -3091,11 +3094,10 @@ ssize_t ret = 0; struct file *file = iocb->ki_filp; struct fuse_file *ff = file->private_data; - bool async_dio = ff->fc->async_dio; loff_t pos = 0; struct inode *inode; loff_t i_size; - size_t count = iov_iter_count(iter); + size_t count = iov_iter_count(iter), shortened = 0; loff_t offset = iocb->ki_pos; struct fuse_io_priv *io; @@ -3103,17 +3105,9 @@ inode = file->f_mapping->host; i_size = i_size_read(inode); - if ((iov_iter_rw(iter) == READ) && (offset > i_size)) + if ((iov_iter_rw(iter) == READ) && (offset >= i_size)) return 0; - /* optimization for short read */ - if (async_dio && iov_iter_rw(iter) != WRITE && offset + count > i_size) { - if (offset >= i_size) - return 0; - iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset)); - count = iov_iter_count(iter); - } - io = kmalloc(sizeof(struct fuse_io_priv), GFP_KERNEL); if (!io) return -ENOMEM; @@ -3129,15 +3123,22 @@ * By default, we want to optimize all I/Os with async request * submission to the client filesystem if supported. */ - io->async = async_dio; + io->async = ff->fc->async_dio; io->iocb = iocb; io->blocking = is_sync_kiocb(iocb); + /* optimization for short read */ + if (io->async && !io->write && offset + count > i_size) { + iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset)); + shortened = count - iov_iter_count(iter); + count -= shortened; + } + /* * We cannot asynchronously extend the size of a file. * In such case the aio will behave exactly like sync io. */ - if ((offset + count > i_size) && iov_iter_rw(iter) == WRITE) + if ((offset + count > i_size) && io->write) io->blocking = true; if (io->async && io->blocking) { @@ -3155,6 +3156,7 @@ } else { ret = __fuse_direct_read(io, iter, &pos); } + iov_iter_reexpand(iter, iov_iter_count(iter) + shortened); if (io->async) { bool blocking = io->blocking; --- linux-5.8.0.orig/fs/fuse/fuse_i.h +++ linux-5.8.0/fs/fuse/fuse_i.h @@ -158,6 +158,8 @@ FUSE_I_INIT_RDPLUS, /** An operation changing file size is in progress */ FUSE_I_SIZE_UNSTABLE, + /* Bad inode */ + FUSE_I_BAD, }; struct fuse_conn; @@ -787,6 +789,17 @@ return atomic64_read(&fc->attr_version); } +static inline void fuse_make_bad(struct inode *inode) +{ + remove_inode_hash(inode); + set_bit(FUSE_I_BAD, &get_fuse_inode(inode)->state); +} + +static inline bool fuse_is_bad(struct inode *inode) +{ + return unlikely(test_bit(FUSE_I_BAD, &get_fuse_inode(inode)->state)); +} + /** Device operations */ extern const struct file_operations fuse_dev_operations; --- linux-5.8.0.orig/fs/fuse/inode.c +++ linux-5.8.0/fs/fuse/inode.c @@ -115,7 +115,7 @@ fuse_queue_forget(fc, fi->forget, fi->nodeid, fi->nlookup); fi->forget = NULL; } - if (S_ISREG(inode->i_mode) && !is_bad_inode(inode)) { + if (S_ISREG(inode->i_mode) && !fuse_is_bad(inode)) { WARN_ON(!list_empty(&fi->write_files)); WARN_ON(!list_empty(&fi->queued_writes)); } @@ -306,7 +306,7 @@ unlock_new_inode(inode); } else if ((inode->i_mode ^ attr->mode) & S_IFMT) { /* Inode has changed type, any I/O on the old should fail */ - make_bad_inode(inode); + fuse_make_bad(inode); iput(inode); goto retry; } --- linux-5.8.0.orig/fs/fuse/readdir.c +++ linux-5.8.0/fs/fuse/readdir.c @@ -207,7 +207,7 @@ dput(dentry); goto retry; } - if (is_bad_inode(inode)) { + if (fuse_is_bad(inode)) { dput(dentry); return -EIO; } @@ -568,7 +568,7 @@ struct inode *inode = file_inode(file); int err; - if (is_bad_inode(inode)) + if (fuse_is_bad(inode)) return -EIO; mutex_lock(&ff->readdir.lock); --- linux-5.8.0.orig/fs/fuse/xattr.c +++ linux-5.8.0/fs/fuse/xattr.c @@ -113,6 +113,9 @@ struct fuse_getxattr_out outarg; ssize_t ret; + if (fuse_is_bad(inode)) + return -EIO; + if (!fuse_allow_current_process(fc)) return -EACCES; @@ -178,6 +181,9 @@ struct dentry *dentry, struct inode *inode, const char *name, void *value, size_t size) { + if (fuse_is_bad(inode)) + return -EIO; + return fuse_getxattr(inode, name, value, size); } @@ -186,6 +192,9 @@ const char *name, const void *value, size_t size, int flags) { + if (fuse_is_bad(inode)) + return -EIO; + if (!value) return fuse_removexattr(inode, name); --- linux-5.8.0.orig/fs/gfs2/aops.c +++ linux-5.8.0/fs/gfs2/aops.c @@ -77,7 +77,7 @@ if (error) return error; if (!buffer_mapped(bh_result)) - return -EIO; + return -ENODATA; return 0; } --- linux-5.8.0.orig/fs/gfs2/bmap.c +++ linux-5.8.0/fs/gfs2/bmap.c @@ -1229,6 +1229,9 @@ gfs2_inplace_release(ip); + if (ip->i_qadata && ip->i_qadata->qa_qd_num) + gfs2_quota_unlock(ip); + if (length != written && (iomap->flags & IOMAP_F_NEW)) { /* Deallocate blocks that were just allocated. */ loff_t blockmask = i_blocksize(inode) - 1; @@ -1241,9 +1244,6 @@ } } - if (ip->i_qadata && ip->i_qadata->qa_qd_num) - gfs2_quota_unlock(ip); - if (unlikely(!written)) goto out_unlock; @@ -1351,9 +1351,15 @@ return ret; } +/* + * NOTE: Never call gfs2_block_zero_range with an open transaction because it + * uses iomap write to perform its actions, which begin their own transactions + * (iomap_begin, page_prepare, etc.) + */ static int gfs2_block_zero_range(struct inode *inode, loff_t from, unsigned int length) { + BUG_ON(current->journal_info); return iomap_zero_range(inode, from, length, NULL, &gfs2_iomap_ops); } @@ -1414,6 +1420,16 @@ u64 oldsize = inode->i_size; int error; + if (!gfs2_is_stuffed(ip)) { + unsigned int blocksize = i_blocksize(inode); + unsigned int offs = newsize & (blocksize - 1); + if (offs) { + error = gfs2_block_zero_range(inode, newsize, + blocksize - offs); + if (error) + return error; + } + } if (journaled) error = gfs2_trans_begin(sdp, RES_DINODE + RES_JDATA, GFS2_JTRUNC_REVOKES); else @@ -1427,19 +1443,10 @@ gfs2_trans_add_meta(ip->i_gl, dibh); - if (gfs2_is_stuffed(ip)) { + if (gfs2_is_stuffed(ip)) gfs2_buffer_clear_tail(dibh, sizeof(struct gfs2_dinode) + newsize); - } else { - unsigned int blocksize = i_blocksize(inode); - unsigned int offs = newsize & (blocksize - 1); - if (offs) { - error = gfs2_block_zero_range(inode, newsize, - blocksize - offs); - if (error) - goto out; - } + else ip->i_diskflags |= GFS2_DIF_TRUNC_IN_PROG; - } i_size_write(inode, newsize); ip->i_inode.i_mtime = ip->i_inode.i_ctime = current_time(&ip->i_inode); @@ -2448,25 +2455,7 @@ loff_t start, end; int error; - start = round_down(offset, blocksize); - end = round_up(offset + length, blocksize) - 1; - error = filemap_write_and_wait_range(inode->i_mapping, start, end); - if (error) - return error; - - if (gfs2_is_jdata(ip)) - error = gfs2_trans_begin(sdp, RES_DINODE + 2 * RES_JDATA, - GFS2_JTRUNC_REVOKES); - else - error = gfs2_trans_begin(sdp, RES_DINODE, 0); - if (error) - return error; - - if (gfs2_is_stuffed(ip)) { - error = stuffed_zero_range(inode, offset, length); - if (error) - goto out; - } else { + if (!gfs2_is_stuffed(ip)) { unsigned int start_off, end_len; start_off = offset & (blocksize - 1); @@ -2489,6 +2478,26 @@ } } + start = round_down(offset, blocksize); + end = round_up(offset + length, blocksize) - 1; + error = filemap_write_and_wait_range(inode->i_mapping, start, end); + if (error) + return error; + + if (gfs2_is_jdata(ip)) + error = gfs2_trans_begin(sdp, RES_DINODE + 2 * RES_JDATA, + GFS2_JTRUNC_REVOKES); + else + error = gfs2_trans_begin(sdp, RES_DINODE, 0); + if (error) + return error; + + if (gfs2_is_stuffed(ip)) { + error = stuffed_zero_range(inode, offset, length); + if (error) + goto out; + } + if (gfs2_is_jdata(ip)) { BUG_ON(!current->journal_info); gfs2_journaled_truncate_range(inode, offset, length); --- linux-5.8.0.orig/fs/gfs2/glock.c +++ linux-5.8.0/fs/gfs2/glock.c @@ -270,7 +270,12 @@ gfs2_glock_remove_from_lru(gl); spin_unlock(&gl->gl_lockref.lock); GLOCK_BUG_ON(gl, !list_empty(&gl->gl_holders)); - GLOCK_BUG_ON(gl, mapping && mapping->nrpages && !gfs2_withdrawn(sdp)); + if (mapping) { + truncate_inode_pages_final(mapping); + if (!gfs2_withdrawn(sdp)) + GLOCK_BUG_ON(gl, mapping->nrpages || + mapping->nrexceptional); + } trace_gfs2_glock_put(gl); sdp->sd_lockstruct.ls_ops->lm_put_lock(gl); } @@ -790,9 +795,11 @@ struct gfs2_holder gh; int error; - error = gfs2_glock_nq_init(gl, LM_ST_SHARED, flags, &gh); + gfs2_holder_init(gl, LM_ST_SHARED, flags, &gh); + error = gfs2_glock_nq(&gh); if (!error) gfs2_glock_dq(&gh); + gfs2_holder_uninit(&gh); } static bool gfs2_try_evict(struct gfs2_glock *gl) @@ -1047,7 +1054,8 @@ gl->gl_object = NULL; gl->gl_hold_time = GL_GLOCK_DFT_HOLD; INIT_DELAYED_WORK(&gl->gl_work, glock_work_func); - INIT_DELAYED_WORK(&gl->gl_delete, delete_work_func); + if (gl->gl_name.ln_type == LM_TYPE_IOPEN) + INIT_DELAYED_WORK(&gl->gl_delete, delete_work_func); mapping = gfs2_glock2aspace(gl); if (mapping) { @@ -1073,7 +1081,8 @@ out_free: kfree(gl->gl_lksb.sb_lvbptr); kmem_cache_free(cachep, gl); - atomic_dec(&sdp->sd_glock_disposal); + if (atomic_dec_and_test(&sdp->sd_glock_disposal)) + wake_up(&sdp->sd_glock_wait); out: return ret; @@ -1899,9 +1908,11 @@ static void flush_delete_work(struct gfs2_glock *gl) { - if (cancel_delayed_work(&gl->gl_delete)) { - queue_delayed_work(gfs2_delete_workqueue, - &gl->gl_delete, 0); + if (gl->gl_name.ln_type == LM_TYPE_IOPEN) { + if (cancel_delayed_work(&gl->gl_delete)) { + queue_delayed_work(gfs2_delete_workqueue, + &gl->gl_delete, 0); + } } gfs2_glock_queue_work(gl, 0); } --- linux-5.8.0.orig/fs/gfs2/glops.c +++ linux-5.8.0/fs/gfs2/glops.c @@ -227,6 +227,15 @@ rgd->rd_flags &= ~GFS2_RDF_UPTODATE; } +static void gfs2_rgrp_go_dump(struct seq_file *seq, struct gfs2_glock *gl, + const char *fs_id_buf) +{ + struct gfs2_rgrpd *rgd = gl->gl_object; + + if (rgd) + gfs2_rgrp_dump(seq, rgd, fs_id_buf); +} + static struct gfs2_inode *gfs2_glock2inode(struct gfs2_glock *gl) { struct gfs2_inode *ip; @@ -531,7 +540,19 @@ int error = 0; struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; - if (gl->gl_req == LM_ST_EXCLUSIVE && !gfs2_withdrawn(sdp)) { + /* + * We need to check gl_state == LM_ST_SHARED here and not gl_req == + * LM_ST_EXCLUSIVE. That's because when any node does a freeze, + * all the nodes should have the freeze glock in SH mode and they all + * call do_xmote: One for EX and the others for UN. They ALL must + * freeze locally, and they ALL must queue freeze work. The freeze_work + * calls freeze_func, which tries to reacquire the freeze glock in SH, + * effectively waiting for the thaw on the node who holds it in EX. + * Once thawed, the work func acquires the freeze glock in + * SH and everybody goes back to thawed. + */ + if (gl->gl_state == LM_ST_SHARED && !gfs2_withdrawn(sdp) && + !test_bit(SDF_NORECOVERY, &sdp->sd_flags)) { atomic_set(&sdp->sd_freeze_state, SFS_STARTING_FREEZE); error = freeze_super(sdp->sd_vfs); if (error) { @@ -712,7 +733,7 @@ .go_sync = rgrp_go_sync, .go_inval = rgrp_go_inval, .go_lock = gfs2_rgrp_go_lock, - .go_dump = gfs2_rgrp_dump, + .go_dump = gfs2_rgrp_go_dump, .go_type = LM_TYPE_RGRP, .go_flags = GLOF_LVB, }; --- linux-5.8.0.orig/fs/gfs2/incore.h +++ linux-5.8.0/fs/gfs2/incore.h @@ -705,6 +705,7 @@ struct super_block *sd_vfs; struct gfs2_pcpu_lkstats __percpu *sd_lkstats; struct kobject sd_kobj; + struct completion sd_kobj_unregister; unsigned long sd_flags; /* SDF_... */ struct gfs2_sb_host sd_sb; --- linux-5.8.0.orig/fs/gfs2/inode.c +++ linux-5.8.0/fs/gfs2/inode.c @@ -150,6 +150,8 @@ error = gfs2_glock_get(sdp, no_addr, &gfs2_iopen_glops, CREATE, &io_gl); if (unlikely(error)) goto fail; + if (blktype != GFS2_BLKST_UNLINKED) + gfs2_cancel_delete_work(io_gl); if (type == DT_UNKNOWN || blktype != GFS2_BLKST_FREE) { /* @@ -180,7 +182,6 @@ error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh); if (unlikely(error)) goto fail; - gfs2_cancel_delete_work(ip->i_iopen_gh.gh_gl); glock_set_object(ip->i_iopen_gh.gh_gl, ip); gfs2_glock_put(io_gl); io_gl = NULL; @@ -724,13 +725,19 @@ flush_delayed_work(&ip->i_gl->gl_work); glock_set_object(ip->i_gl, ip); - error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_SKIP, ghs + 1); + error = gfs2_glock_get(sdp, ip->i_no_addr, &gfs2_iopen_glops, CREATE, &io_gl); if (error) goto fail_free_inode; + gfs2_cancel_delete_work(io_gl); + glock_set_object(io_gl, ip); + + error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, GL_SKIP, ghs + 1); + if (error) + goto fail_gunlock2; error = gfs2_trans_begin(sdp, blocks, 0); if (error) - goto fail_free_inode; + goto fail_gunlock2; if (blocks > 1) { ip->i_eattr = ip->i_no_addr + 1; @@ -739,18 +746,12 @@ init_dinode(dip, ip, symname); gfs2_trans_end(sdp); - error = gfs2_glock_get(sdp, ip->i_no_addr, &gfs2_iopen_glops, CREATE, &io_gl); - if (error) - goto fail_free_inode; - BUG_ON(test_and_set_bit(GLF_INODE_CREATING, &io_gl->gl_flags)); error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh); if (error) goto fail_gunlock2; - gfs2_cancel_delete_work(ip->i_iopen_gh.gh_gl); - glock_set_object(ip->i_iopen_gh.gh_gl, ip); gfs2_set_iop(inode); insert_inode_hash(inode); @@ -802,6 +803,7 @@ gfs2_glock_dq_uninit(&ip->i_iopen_gh); fail_gunlock2: clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags); + glock_clear_object(io_gl, ip); gfs2_glock_put(io_gl); fail_free_inode: if (ip->i_gl) { @@ -2115,6 +2117,25 @@ return vfs_setpos(file, ret, inode->i_sb->s_maxbytes); } +static int gfs2_update_time(struct inode *inode, struct timespec64 *time, + int flags) +{ + struct gfs2_inode *ip = GFS2_I(inode); + struct gfs2_glock *gl = ip->i_gl; + struct gfs2_holder *gh; + int error; + + gh = gfs2_glock_is_locked_by_me(gl); + if (gh && !gfs2_glock_is_held_excl(gl)) { + gfs2_glock_dq(gh); + gfs2_holder_reinit(LM_ST_EXCLUSIVE, 0, gh); + error = gfs2_glock_nq(gh); + if (error) + return error; + } + return generic_update_time(inode, time, flags); +} + const struct inode_operations gfs2_file_iops = { .permission = gfs2_permission, .setattr = gfs2_setattr, @@ -2123,6 +2144,7 @@ .fiemap = gfs2_fiemap, .get_acl = gfs2_get_acl, .set_acl = gfs2_set_acl, + .update_time = gfs2_update_time, }; const struct inode_operations gfs2_dir_iops = { @@ -2142,6 +2164,7 @@ .fiemap = gfs2_fiemap, .get_acl = gfs2_get_acl, .set_acl = gfs2_set_acl, + .update_time = gfs2_update_time, .atomic_open = gfs2_atomic_open, }; --- linux-5.8.0.orig/fs/gfs2/lock_dlm.c +++ linux-5.8.0/fs/gfs2/lock_dlm.c @@ -284,7 +284,6 @@ { struct gfs2_sbd *sdp = gl->gl_name.ln_sbd; struct lm_lockstruct *ls = &sdp->sd_lockstruct; - int lvb_needs_unlock = 0; int error; if (gl->gl_lksb.sb_lkid == 0) { @@ -297,13 +296,10 @@ gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT); gfs2_update_request_times(gl); - /* don't want to skip dlm_unlock writing the lvb when lock is ex */ - - if (gl->gl_lksb.sb_lvbptr && (gl->gl_state == LM_ST_EXCLUSIVE)) - lvb_needs_unlock = 1; + /* don't want to skip dlm_unlock writing the lvb when lock has one */ if (test_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags) && - !lvb_needs_unlock) { + !gl->gl_lksb.sb_lvbptr) { gfs2_glock_free(gl); return; } --- linux-5.8.0.orig/fs/gfs2/log.c +++ linux-5.8.0/fs/gfs2/log.c @@ -132,6 +132,8 @@ spin_unlock(&sdp->sd_ail_lock); ret = generic_writepages(mapping, wbc); spin_lock(&sdp->sd_ail_lock); + if (ret == -ENODATA) /* if a jdata write into a new hole */ + ret = 0; /* ignore it */ if (ret || wbc->nr_to_write <= 0) break; return -EBUSY; @@ -902,6 +904,40 @@ } /** + * drain_bd - drain the buf and databuf queue for a failed transaction + * @tr: the transaction to drain + * + * When this is called, we're taking an error exit for a log write that failed + * but since we bypassed the after_commit functions, we need to remove the + * items from the buf and databuf queue. + */ +static void trans_drain(struct gfs2_trans *tr) +{ + struct gfs2_bufdata *bd; + struct list_head *head; + + if (!tr) + return; + + head = &tr->tr_buf; + while (!list_empty(head)) { + bd = list_first_entry(head, struct gfs2_bufdata, bd_list); + list_del_init(&bd->bd_list); + if (!list_empty(&bd->bd_ail_st_list)) + gfs2_remove_from_ail(bd); + kmem_cache_free(gfs2_bufdata_cachep, bd); + } + head = &tr->tr_databuf; + while (!list_empty(head)) { + bd = list_first_entry(head, struct gfs2_bufdata, bd_list); + list_del_init(&bd->bd_list); + if (!list_empty(&bd->bd_ail_st_list)) + gfs2_remove_from_ail(bd); + kmem_cache_free(gfs2_bufdata_cachep, bd); + } +} + +/** * gfs2_log_flush - flush incore transaction(s) * @sdp: the filesystem * @gl: The glock structure to flush. If NULL, flush the whole incore log @@ -924,10 +960,8 @@ goto out; /* Log might have been flushed while we waited for the flush lock */ - if (gl && !test_bit(GLF_LFLUSH, &gl->gl_flags)) { - up_write(&sdp->sd_log_flush_lock); - return; - } + if (gl && !test_bit(GLF_LFLUSH, &gl->gl_flags)) + goto out; trace_gfs2_log_flush(sdp, 1, flags); if (flags & GFS2_LOG_HEAD_FLUSH_SHUTDOWN) @@ -941,25 +975,25 @@ if (unlikely (state == SFS_FROZEN)) if (gfs2_assert_withdraw_delayed(sdp, !tr->tr_num_buf_new && !tr->tr_num_databuf_new)) - goto out; + goto out_withdraw; } if (unlikely(state == SFS_FROZEN)) if (gfs2_assert_withdraw_delayed(sdp, !sdp->sd_log_num_revoke)) - goto out; + goto out_withdraw; if (gfs2_assert_withdraw_delayed(sdp, sdp->sd_log_num_revoke == sdp->sd_log_committed_revoke)) - goto out; + goto out_withdraw; gfs2_ordered_write(sdp); if (gfs2_withdrawn(sdp)) - goto out; + goto out_withdraw; lops_before_commit(sdp, tr); if (gfs2_withdrawn(sdp)) - goto out; + goto out_withdraw; gfs2_log_submit_bio(&sdp->sd_log_bio, REQ_OP_WRITE); if (gfs2_withdrawn(sdp)) - goto out; + goto out_withdraw; if (sdp->sd_log_head != sdp->sd_log_flush_head) { log_flush_wait(sdp); @@ -970,7 +1004,7 @@ log_write_header(sdp, flags); } if (gfs2_withdrawn(sdp)) - goto out; + goto out_withdraw; lops_after_commit(sdp, tr); gfs2_log_lock(sdp); @@ -990,7 +1024,7 @@ if (!sdp->sd_log_idle) { empty_ail1_list(sdp); if (gfs2_withdrawn(sdp)) - goto out; + goto out_withdraw; atomic_dec(&sdp->sd_log_blks_free); /* Adjust for unreserved buffer */ trace_gfs2_log_blocks(sdp, -1); log_write_header(sdp, flags); @@ -1003,26 +1037,30 @@ atomic_set(&sdp->sd_freeze_state, SFS_FROZEN); } -out: - if (gfs2_withdrawn(sdp)) { - /** - * If the tr_list is empty, we're withdrawing during a log - * flush that targets a transaction, but the transaction was - * never queued onto any of the ail lists. Here we add it to - * ail1 just so that ail_drain() will find and free it. - */ - spin_lock(&sdp->sd_ail_lock); - if (tr && list_empty(&tr->tr_list)) - list_add(&tr->tr_list, &sdp->sd_ail1_list); - spin_unlock(&sdp->sd_ail_lock); - ail_drain(sdp); /* frees all transactions */ - tr = NULL; - } - +out_end: trace_gfs2_log_flush(sdp, 0, flags); +out: up_write(&sdp->sd_log_flush_lock); - gfs2_trans_free(sdp, tr); + if (gfs2_withdrawing(sdp)) + gfs2_withdraw(sdp); + return; + +out_withdraw: + trans_drain(tr); + /** + * If the tr_list is empty, we're withdrawing during a log + * flush that targets a transaction, but the transaction was + * never queued onto any of the ail lists. Here we add it to + * ail1 just so that ail_drain() will find and free it. + */ + spin_lock(&sdp->sd_ail_lock); + if (tr && list_empty(&tr->tr_list)) + list_add(&tr->tr_list, &sdp->sd_ail1_list); + spin_unlock(&sdp->sd_ail_lock); + ail_drain(sdp); /* frees all transactions */ + tr = NULL; + goto out_end; } /** --- linux-5.8.0.orig/fs/gfs2/ops_fstype.c +++ linux-5.8.0/fs/gfs2/ops_fstype.c @@ -169,15 +169,19 @@ return -EINVAL; } - /* If format numbers match exactly, we're done. */ - - if (sb->sb_fs_format == GFS2_FORMAT_FS && - sb->sb_multihost_format == GFS2_FORMAT_MULTI) - return 0; + if (sb->sb_fs_format != GFS2_FORMAT_FS || + sb->sb_multihost_format != GFS2_FORMAT_MULTI) { + fs_warn(sdp, "Unknown on-disk format, unable to mount\n"); + return -EINVAL; + } - fs_warn(sdp, "Unknown on-disk format, unable to mount\n"); + if (sb->sb_bsize < 512 || sb->sb_bsize > PAGE_SIZE || + (sb->sb_bsize & (sb->sb_bsize - 1))) { + pr_warn("Invalid superblock size\n"); + return -EINVAL; + } - return -EINVAL; + return 0; } static void end_bio_io_page(struct bio *bio) @@ -1013,6 +1017,7 @@ int silent = fc->sb_flags & SB_SILENT; struct gfs2_sbd *sdp; struct gfs2_holder mount_gh; + struct gfs2_holder freeze_gh; int error; sdp = init_sbd(sb); @@ -1062,26 +1067,14 @@ } error = init_names(sdp, silent); - if (error) { - /* In this case, we haven't initialized sysfs, so we have to - manually free the sdp. */ - free_sbd(sdp); - sb->s_fs_info = NULL; - return error; - } + if (error) + goto fail_free; snprintf(sdp->sd_fsname, sizeof(sdp->sd_fsname), "%s", sdp->sd_table_name); error = gfs2_sys_fs_add(sdp); - /* - * If we hit an error here, gfs2_sys_fs_add will have called function - * kobject_put which causes the sysfs usage count to go to zero, which - * causes sysfs to call function gfs2_sbd_release, which frees sdp. - * Subsequent error paths here will call gfs2_sys_fs_del, which also - * kobject_put to free sdp. - */ if (error) - return error; + goto fail_free; gfs2_create_debugfs_file(sdp); @@ -1136,25 +1129,18 @@ goto fail_per_node; } - if (sb_rdonly(sb)) { - struct gfs2_holder freeze_gh; + error = gfs2_freeze_lock(sdp, &freeze_gh, 0); + if (error) + goto fail_per_node; - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, - LM_FLAG_NOEXP | GL_EXACT, - &freeze_gh); - if (error) { - fs_err(sdp, "can't make FS RO: %d\n", error); - goto fail_per_node; - } - gfs2_glock_dq_uninit(&freeze_gh); - } else { + if (!sb_rdonly(sb)) error = gfs2_make_fs_rw(sdp); - if (error) { - fs_err(sdp, "can't make FS RW: %d\n", error); - goto fail_per_node; - } - } + gfs2_freeze_unlock(&freeze_gh); + if (error) { + fs_err(sdp, "can't make FS RW: %d\n", error); + goto fail_per_node; + } gfs2_glock_dq_uninit(&mount_gh); gfs2_online_uevent(sdp); return 0; @@ -1179,9 +1165,9 @@ gfs2_lm_unmount(sdp); fail_debug: gfs2_delete_debugfs_file(sdp); - /* gfs2_sys_fs_del must be the last thing we do, since it causes - * sysfs to call function gfs2_sbd_release, which frees sdp. */ gfs2_sys_fs_del(sdp); +fail_free: + free_sbd(sdp); sb->s_fs_info = NULL; return error; } @@ -1455,6 +1441,12 @@ fc->sb_flags |= SB_RDONLY; if ((sb->s_flags ^ fc->sb_flags) & SB_RDONLY) { + struct gfs2_holder freeze_gh; + + error = gfs2_freeze_lock(sdp, &freeze_gh, 0); + if (error) + return -EINVAL; + if (fc->sb_flags & SB_RDONLY) { error = gfs2_make_fs_ro(sdp); if (error) @@ -1464,6 +1456,7 @@ if (error) errorfc(fc, "unable to remount read-write"); } + gfs2_freeze_unlock(&freeze_gh); } sdp->sd_args = *newargs; --- linux-5.8.0.orig/fs/gfs2/recovery.c +++ linux-5.8.0/fs/gfs2/recovery.c @@ -363,9 +363,7 @@ /* Acquire a shared hold on the freeze lock */ - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, - LM_FLAG_NOEXP | LM_FLAG_PRIORITY | - GL_EXACT, &thaw_gh); + error = gfs2_freeze_lock(sdp, &thaw_gh, LM_FLAG_PRIORITY); if (error) goto fail_gunlock_ji; @@ -407,14 +405,16 @@ error = foreach_descriptor(jd, head.lh_tail, head.lh_blkno, pass); lops_after_scan(jd, error, pass); - if (error) + if (error) { + up_read(&sdp->sd_log_flush_lock); goto fail_gunlock_thaw; + } } clean_journal(jd, &head); up_read(&sdp->sd_log_flush_lock); - gfs2_glock_dq_uninit(&thaw_gh); + gfs2_freeze_unlock(&thaw_gh); t_rep = ktime_get(); fs_info(sdp, "jid=%u: Journal replayed in %lldms [jlck:%lldms, " "jhead:%lldms, tlck:%lldms, replay:%lldms]\n", @@ -436,7 +436,7 @@ goto done; fail_gunlock_thaw: - gfs2_glock_dq_uninit(&thaw_gh); + gfs2_freeze_unlock(&thaw_gh); fail_gunlock_ji: if (jlocked) { gfs2_glock_dq_uninit(&ji_gh); --- linux-5.8.0.orig/fs/gfs2/rgrp.c +++ linux-5.8.0/fs/gfs2/rgrp.c @@ -719,9 +719,9 @@ } gfs2_free_clones(rgd); + return_all_reservations(rgd); kfree(rgd->rd_bits); rgd->rd_bits = NULL; - return_all_reservations(rgd); kmem_cache_free(gfs2_rgrpd_cachep, rgd); } } @@ -989,6 +989,10 @@ if (error < 0) return error; + if (RB_EMPTY_ROOT(&sdp->sd_rindex_tree)) { + fs_err(sdp, "no resource groups found in the file system.\n"); + return -ENOENT; + } set_rgrp_preferences(sdp); sdp->sd_rindex_uptodate = 1; @@ -1374,6 +1378,9 @@ if (!capable(CAP_SYS_ADMIN)) return -EPERM; + if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) + return -EROFS; + if (!blk_queue_discard(q)) return -EOPNOTSUPP; @@ -2209,20 +2216,17 @@ /** * gfs2_rgrp_dump - print out an rgrp * @seq: The iterator - * @gl: The glock in question + * @rgd: The rgrp in question * @fs_id_buf: pointer to file system id (if requested) * */ -void gfs2_rgrp_dump(struct seq_file *seq, struct gfs2_glock *gl, +void gfs2_rgrp_dump(struct seq_file *seq, struct gfs2_rgrpd *rgd, const char *fs_id_buf) { - struct gfs2_rgrpd *rgd = gl->gl_object; struct gfs2_blkreserv *trs; const struct rb_node *n; - if (rgd == NULL) - return; gfs2_print_dbg(seq, "%s R: n:%llu f:%02x b:%u/%u i:%u r:%u e:%u\n", fs_id_buf, (unsigned long long)rgd->rd_addr, rgd->rd_flags, @@ -2253,7 +2257,7 @@ (unsigned long long)rgd->rd_addr); fs_warn(sdp, "umount on all nodes and run fsck.gfs2 to fix the error\n"); sprintf(fs_id_buf, "fsid=%s: ", sdp->sd_fsname); - gfs2_rgrp_dump(NULL, rgd->rd_gl, fs_id_buf); + gfs2_rgrp_dump(NULL, rgd, fs_id_buf); rgd->rd_flags |= GFS2_RDF_ERROR; } @@ -2533,13 +2537,13 @@ rbm.rgd = rgd; error = gfs2_rbm_from_block(&rbm, no_addr); - if (WARN_ON_ONCE(error)) - goto fail; - - if (gfs2_testbit(&rbm, false) != type) - error = -ESTALE; + if (!WARN_ON_ONCE(error)) { + if (gfs2_testbit(&rbm, false) != type) + error = -ESTALE; + } gfs2_glock_dq_uninit(&rgd_gh); + fail: return error; } --- linux-5.8.0.orig/fs/gfs2/rgrp.h +++ linux-5.8.0/fs/gfs2/rgrp.h @@ -67,7 +67,7 @@ extern void gfs2_rlist_alloc(struct gfs2_rgrp_list *rlist); extern void gfs2_rlist_free(struct gfs2_rgrp_list *rlist); extern u64 gfs2_ri_total(struct gfs2_sbd *sdp); -extern void gfs2_rgrp_dump(struct seq_file *seq, struct gfs2_glock *gl, +extern void gfs2_rgrp_dump(struct seq_file *seq, struct gfs2_rgrpd *rgd, const char *fs_id_buf); extern int gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset, struct buffer_head *bh, --- linux-5.8.0.orig/fs/gfs2/super.c +++ linux-5.8.0/fs/gfs2/super.c @@ -159,7 +159,6 @@ { struct gfs2_inode *ip = GFS2_I(sdp->sd_jdesc->jd_inode); struct gfs2_glock *j_gl = ip->i_gl; - struct gfs2_holder freeze_gh; struct gfs2_log_header_host head; int error; @@ -167,12 +166,6 @@ if (error) return error; - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, - LM_FLAG_NOEXP | GL_EXACT, - &freeze_gh); - if (error) - goto fail_threads; - j_gl->gl_ops->go_inval(j_gl, DIO_METADATA); if (gfs2_withdrawn(sdp)) { error = -EIO; @@ -199,13 +192,9 @@ set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); - gfs2_glock_dq_uninit(&freeze_gh); - return 0; fail: - gfs2_glock_dq_uninit(&freeze_gh); -fail_threads: if (sdp->sd_quotad_process) kthread_stop(sdp->sd_quotad_process); sdp->sd_quotad_process = NULL; @@ -448,7 +437,7 @@ } if (error) - gfs2_glock_dq_uninit(&sdp->sd_freeze_gh); + gfs2_freeze_unlock(&sdp->sd_freeze_gh); out: while (!list_empty(&list)) { @@ -604,30 +593,9 @@ int gfs2_make_fs_ro(struct gfs2_sbd *sdp) { - struct gfs2_holder freeze_gh; int error = 0; int log_write_allowed = test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); - gfs2_holder_mark_uninitialized(&freeze_gh); - if (sdp->sd_freeze_gl && - !gfs2_glock_is_locked_by_me(sdp->sd_freeze_gl)) { - if (!log_write_allowed) { - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, - LM_ST_SHARED, LM_FLAG_TRY | - LM_FLAG_NOEXP | GL_EXACT, - &freeze_gh); - if (error == GLR_TRYFAILED) - error = 0; - } else { - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, - LM_ST_SHARED, - LM_FLAG_NOEXP | GL_EXACT, - &freeze_gh); - if (error && !gfs2_withdrawn(sdp)) - return error; - } - } - gfs2_flush_delete_work(sdp); if (!log_write_allowed && current == sdp->sd_quotad_process) fs_warn(sdp, "The quotad daemon is withdrawing.\n"); @@ -656,9 +624,6 @@ atomic_read(&sdp->sd_reserving_log) == 0, HZ * 5); } - if (gfs2_holder_initialized(&freeze_gh)) - gfs2_glock_dq_uninit(&freeze_gh); - gfs2_quota_cleanup(sdp); if (!log_write_allowed) @@ -701,6 +666,8 @@ if (error) gfs2_io_error(sdp); } + WARN_ON(gfs2_withdrawing(sdp)); + /* At this point, we're through modifying the disk */ /* Release stuff */ @@ -729,12 +696,14 @@ gfs2_jindex_free(sdp); /* Take apart glock structures and buffer lists */ gfs2_gl_hash_clear(sdp); + truncate_inode_pages_final(&sdp->sd_aspace); gfs2_delete_debugfs_file(sdp); /* Unmount the locking protocol */ gfs2_lm_unmount(sdp); /* At this point, we're through participating in the lockspace */ gfs2_sys_fs_del(sdp); + free_sbd(sdp); } /** @@ -763,10 +732,8 @@ struct super_block *sb = sdp->sd_vfs; atomic_inc(&sb->s_active); - error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, - LM_FLAG_NOEXP | GL_EXACT, &freeze_gh); + error = gfs2_freeze_lock(sdp, &freeze_gh, 0); if (error) { - fs_info(sdp, "GFS2: couldn't get freeze lock : %d\n", error); gfs2_assert_withdraw(sdp, 0); } else { atomic_set(&sdp->sd_freeze_state, SFS_UNFROZEN); @@ -776,7 +743,7 @@ error); gfs2_assert_withdraw(sdp, 0); } - gfs2_glock_dq_uninit(&freeze_gh); + gfs2_freeze_unlock(&freeze_gh); } deactivate_super(sb); clear_bit_unlock(SDF_FS_FROZEN, &sdp->sd_flags); @@ -844,7 +811,7 @@ return 0; } - gfs2_glock_dq_uninit(&sdp->sd_freeze_gh); + gfs2_freeze_unlock(&sdp->sd_freeze_gh); mutex_unlock(&sdp->sd_freeze_mutex); return wait_on_bit(&sdp->sd_flags, SDF_FS_FROZEN, TASK_INTERRUPTIBLE); } --- linux-5.8.0.orig/fs/gfs2/sys.c +++ linux-5.8.0/fs/gfs2/sys.c @@ -303,7 +303,7 @@ { struct gfs2_sbd *sdp = container_of(kobj, struct gfs2_sbd, sd_kobj); - free_sbd(sdp); + complete(&sdp->sd_kobj_unregister); } static struct kobj_type gfs2_ktype = { @@ -655,6 +655,7 @@ sprintf(ro, "RDONLY=%d", sb_rdonly(sb)); sprintf(spectator, "SPECTATOR=%d", sdp->sd_args.ar_spectator ? 1 : 0); + init_completion(&sdp->sd_kobj_unregister); sdp->sd_kobj.kset = gfs2_kset; error = kobject_init_and_add(&sdp->sd_kobj, &gfs2_ktype, NULL, "%s", sdp->sd_table_name); @@ -685,6 +686,7 @@ fail_reg: fs_err(sdp, "error %d adding sysfs files\n", error); kobject_put(&sdp->sd_kobj); + wait_for_completion(&sdp->sd_kobj_unregister); sb->s_fs_info = NULL; return error; } @@ -695,6 +697,7 @@ sysfs_remove_group(&sdp->sd_kobj, &tune_group); sysfs_remove_group(&sdp->sd_kobj, &lock_module_group); kobject_put(&sdp->sd_kobj); + wait_for_completion(&sdp->sd_kobj_unregister); } static int gfs2_uevent(struct kset *kset, struct kobject *kobj, --- linux-5.8.0.orig/fs/gfs2/trans.c +++ linux-5.8.0/fs/gfs2/trans.c @@ -52,6 +52,7 @@ tr->tr_reserved += gfs2_struct2blk(sdp, revokes); INIT_LIST_HEAD(&tr->tr_databuf); INIT_LIST_HEAD(&tr->tr_buf); + INIT_LIST_HEAD(&tr->tr_list); INIT_LIST_HEAD(&tr->tr_ail1_list); INIT_LIST_HEAD(&tr->tr_ail2_list); @@ -130,6 +131,8 @@ bd->bd_bh = bh; bd->bd_gl = gl; INIT_LIST_HEAD(&bd->bd_list); + INIT_LIST_HEAD(&bd->bd_ail_st_list); + INIT_LIST_HEAD(&bd->bd_ail_gl_list); bh->b_private = bd; return bd; } --- linux-5.8.0.orig/fs/gfs2/util.c +++ linux-5.8.0/fs/gfs2/util.c @@ -91,18 +91,50 @@ return error; } +/** + * gfs2_freeze_lock - hold the freeze glock + * @sdp: the superblock + * @freeze_gh: pointer to the requested holder + * @caller_flags: any additional flags needed by the caller + */ +int gfs2_freeze_lock(struct gfs2_sbd *sdp, struct gfs2_holder *freeze_gh, + int caller_flags) +{ + int flags = LM_FLAG_NOEXP | GL_EXACT | caller_flags; + int error; + + error = gfs2_glock_nq_init(sdp->sd_freeze_gl, LM_ST_SHARED, flags, + freeze_gh); + if (error && error != GLR_TRYFAILED) + fs_err(sdp, "can't lock the freeze lock: %d\n", error); + return error; +} + +void gfs2_freeze_unlock(struct gfs2_holder *freeze_gh) +{ + if (gfs2_holder_initialized(freeze_gh)) + gfs2_glock_dq_uninit(freeze_gh); +} + static void signal_our_withdraw(struct gfs2_sbd *sdp) { - struct gfs2_glock *gl = sdp->sd_live_gh.gh_gl; - struct inode *inode = sdp->sd_jdesc->jd_inode; - struct gfs2_inode *ip = GFS2_I(inode); - u64 no_formal_ino = ip->i_no_formal_ino; + struct gfs2_glock *live_gl = sdp->sd_live_gh.gh_gl; + struct inode *inode; + struct gfs2_inode *ip; + struct gfs2_glock *i_gl; + u64 no_formal_ino; + int log_write_allowed = test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); int ret = 0; int tries; - if (test_bit(SDF_NORECOVERY, &sdp->sd_flags)) + if (test_bit(SDF_NORECOVERY, &sdp->sd_flags) || !sdp->sd_jdesc) return; + inode = sdp->sd_jdesc->jd_inode; + ip = GFS2_I(inode); + i_gl = ip->i_gl; + no_formal_ino = ip->i_no_formal_ino; + /* Prevent any glock dq until withdraw recovery is complete */ set_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags); /* @@ -117,8 +149,21 @@ * therefore we need to clear SDF_JOURNAL_LIVE manually. */ clear_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags); - if (!sb_rdonly(sdp->sd_vfs)) - ret = gfs2_make_fs_ro(sdp); + if (!sb_rdonly(sdp->sd_vfs)) { + struct gfs2_holder freeze_gh; + + gfs2_holder_mark_uninitialized(&freeze_gh); + if (sdp->sd_freeze_gl && + !gfs2_glock_is_locked_by_me(sdp->sd_freeze_gl)) { + ret = gfs2_freeze_lock(sdp, &freeze_gh, + log_write_allowed ? 0 : LM_FLAG_TRY); + if (ret == GLR_TRYFAILED) + ret = 0; + } + if (!ret) + ret = gfs2_make_fs_ro(sdp); + gfs2_freeze_unlock(&freeze_gh); + } if (sdp->sd_lockstruct.ls_ops->lm_lock == NULL) { /* lock_nolock */ if (!ret) @@ -141,7 +186,8 @@ atomic_set(&sdp->sd_freeze_state, SFS_FROZEN); thaw_super(sdp->sd_vfs); } else { - wait_on_bit(&gl->gl_flags, GLF_DEMOTE, TASK_UNINTERRUPTIBLE); + wait_on_bit(&i_gl->gl_flags, GLF_DEMOTE, + TASK_UNINTERRUPTIBLE); } /* @@ -161,15 +207,15 @@ * on other nodes to be successful, otherwise we remain the owner of * the glock as far as dlm is concerned. */ - if (gl->gl_ops->go_free) { - set_bit(GLF_FREEING, &gl->gl_flags); - wait_on_bit(&gl->gl_flags, GLF_FREEING, TASK_UNINTERRUPTIBLE); + if (i_gl->gl_ops->go_free) { + set_bit(GLF_FREEING, &i_gl->gl_flags); + wait_on_bit(&i_gl->gl_flags, GLF_FREEING, TASK_UNINTERRUPTIBLE); } /* * Dequeue the "live" glock, but keep a reference so it's never freed. */ - gfs2_glock_hold(gl); + gfs2_glock_hold(live_gl); gfs2_glock_dq_wait(&sdp->sd_live_gh); /* * We enqueue the "live" glock in EX so that all other nodes @@ -208,7 +254,7 @@ gfs2_glock_nq(&sdp->sd_live_gh); } - gfs2_glock_queue_put(gl); /* drop the extra reference we acquired */ + gfs2_glock_queue_put(live_gl); /* drop extra reference we acquired */ clear_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags); /* @@ -419,7 +465,7 @@ char fs_id_buf[sizeof(sdp->sd_fsname) + 7]; sprintf(fs_id_buf, "fsid=%s: ", sdp->sd_fsname); - gfs2_rgrp_dump(NULL, rgd->rd_gl, fs_id_buf); + gfs2_rgrp_dump(NULL, rgd, fs_id_buf); gfs2_lm(sdp, "fatal: filesystem consistency error\n" " RG = %llu\n" --- linux-5.8.0.orig/fs/gfs2/util.h +++ linux-5.8.0/fs/gfs2/util.h @@ -149,6 +149,9 @@ extern int check_journal_clean(struct gfs2_sbd *sdp, struct gfs2_jdesc *jd, bool verbose); +extern int gfs2_freeze_lock(struct gfs2_sbd *sdp, + struct gfs2_holder *freeze_gh, int caller_flags); +extern void gfs2_freeze_unlock(struct gfs2_holder *freeze_gh); #define gfs2_io_error(sdp) \ gfs2_io_error_i((sdp), __func__, __FILE__, __LINE__); @@ -205,6 +208,16 @@ test_bit(SDF_WITHDRAWING, &sdp->sd_flags); } +/** + * gfs2_withdrawing - check if a withdraw is pending + * @sdp: the superblock + */ +static inline bool gfs2_withdrawing(struct gfs2_sbd *sdp) +{ + return test_bit(SDF_WITHDRAWING, &sdp->sd_flags) && + !test_bit(SDF_WITHDRAWN, &sdp->sd_flags); +} + #define gfs2_tune_get(sdp, field) \ gfs2_tune_get_i(&(sdp)->sd_tune, &(sdp)->sd_tune.field) --- linux-5.8.0.orig/fs/hugetlbfs/inode.c +++ linux-5.8.0/fs/hugetlbfs/inode.c @@ -735,9 +735,10 @@ mutex_unlock(&hugetlb_fault_mutex_table[hash]); + set_page_huge_active(page); /* * unlock_page because locked by add_to_page_cache() - * page_put due to reference from alloc_huge_page() + * put_page() due to reference from alloc_huge_page() */ unlock_page(page); put_page(page); @@ -1364,6 +1365,12 @@ sb->s_magic = HUGETLBFS_MAGIC; sb->s_op = &hugetlbfs_ops; sb->s_time_gran = 1; + + /* + * Due to the special and limited functionality of hugetlbfs, it does + * not work well as a stacking filesystem. + */ + sb->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH; sb->s_root = d_make_root(hugetlbfs_get_root(sb, ctx)); if (!sb->s_root) goto out_free; --- linux-5.8.0.orig/fs/inode.c +++ linux-5.8.0/fs/inode.c @@ -1625,7 +1625,9 @@ else drop = generic_drop_inode(inode); - if (!drop && (sb->s_flags & SB_ACTIVE)) { + if (!drop && + !(inode->i_state & I_DONTCACHE) && + (sb->s_flags & SB_ACTIVE)) { inode_add_lru(inode); spin_unlock(&inode->i_lock); return; @@ -1768,12 +1770,13 @@ * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ -static int update_time(struct inode *inode, struct timespec64 *time, int flags) +int update_time(struct inode *inode, struct timespec64 *time, int flags) { if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); return generic_update_time(inode, time, flags); } +EXPORT_SYMBOL_GPL(update_time); /** * touch_atime - update the access time --- linux-5.8.0.orig/fs/io-wq.c +++ linux-5.8.0/fs/io-wq.c @@ -60,6 +60,7 @@ const struct cred *cur_creds; const struct cred *saved_creds; struct files_struct *restore_files; + struct nsproxy *restore_nsproxy; struct fs_struct *restore_fs; }; @@ -87,7 +88,7 @@ */ struct io_wqe { struct { - spinlock_t lock; + raw_spinlock_t lock; struct io_wq_work_list work_list; unsigned long hash_map; unsigned flags; @@ -148,11 +149,12 @@ if (current->files != worker->restore_files) { __acquire(&wqe->lock); - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); dropped_lock = true; task_lock(current); current->files = worker->restore_files; + current->nsproxy = worker->restore_nsproxy; task_unlock(current); } @@ -166,7 +168,7 @@ if (worker->mm) { if (!dropped_lock) { __acquire(&wqe->lock); - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); dropped_lock = true; } __set_current_state(TASK_RUNNING); @@ -200,7 +202,6 @@ { struct io_wqe *wqe = worker->wqe; struct io_wqe_acct *acct = io_wqe_get_acct(wqe, worker); - unsigned nr_workers; /* * If we're not at zero, someone else is holding a brief reference @@ -220,23 +221,19 @@ worker->flags = 0; preempt_enable(); - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); hlist_nulls_del_rcu(&worker->nulls_node); list_del_rcu(&worker->all_list); if (__io_worker_unuse(wqe, worker)) { __release(&wqe->lock); - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); } acct->nr_workers--; - nr_workers = wqe->acct[IO_WQ_ACCT_BOUND].nr_workers + - wqe->acct[IO_WQ_ACCT_UNBOUND].nr_workers; - spin_unlock_irq(&wqe->lock); - - /* all workers gone, wq exit can proceed */ - if (!nr_workers && refcount_dec_and_test(&wqe->wq->refs)) - complete(&wqe->wq->done); + raw_spin_unlock_irq(&wqe->lock); kfree_rcu(worker, rcu); + if (refcount_dec_and_test(&wqe->wq->refs)) + complete(&wqe->wq->done); } static inline bool io_wqe_run_queue(struct io_wqe *wqe) @@ -318,6 +315,7 @@ worker->flags |= (IO_WORKER_F_UP | IO_WORKER_F_RUNNING); worker->restore_files = current->files; + worker->restore_nsproxy = current->nsproxy; worker->restore_fs = current->fs; io_wqe_inc_running(wqe, worker); } @@ -454,6 +452,7 @@ if (work->files && current->files != work->files) { task_lock(current); current->files = work->files; + current->nsproxy = work->nsproxy; task_unlock(current); } if (work->fs && current->fs != work->fs) @@ -504,7 +503,7 @@ else if (!wq_list_empty(&wqe->work_list)) wqe->flags |= IO_WQE_FLAG_STALLED; - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); if (!work) break; io_assign_current_work(worker, work); @@ -539,7 +538,7 @@ io_wqe_enqueue(wqe, linked); if (hash != -1U && !next_hashed) { - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); wqe->hash_map &= ~BIT_ULL(hash); wqe->flags &= ~IO_WQE_FLAG_STALLED; /* dependent work is not hashed */ @@ -547,11 +546,11 @@ /* skip unnecessary unlock-lock wqe->lock */ if (!work) goto get_next; - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); } } while (work); - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); } while (1); } @@ -566,7 +565,7 @@ while (!test_bit(IO_WQ_BIT_EXIT, &wq->state)) { set_current_state(TASK_INTERRUPTIBLE); loop: - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); if (io_wqe_run_queue(wqe)) { __set_current_state(TASK_RUNNING); io_worker_handle_work(worker); @@ -577,7 +576,7 @@ __release(&wqe->lock); goto loop; } - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); if (signal_pending(current)) flush_signals(current); if (schedule_timeout(WORKER_IDLE_TIMEOUT)) @@ -589,11 +588,11 @@ } if (test_bit(IO_WQ_BIT_EXIT, &wq->state)) { - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); if (!wq_list_empty(&wqe->work_list)) io_worker_handle_work(worker); else - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); } io_worker_exit(worker); @@ -633,14 +632,14 @@ worker->flags &= ~IO_WORKER_F_RUNNING; - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); io_wqe_dec_running(wqe, worker); - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); } static bool create_io_worker(struct io_wq *wq, struct io_wqe *wqe, int index) { - struct io_wqe_acct *acct =&wqe->acct[index]; + struct io_wqe_acct *acct = &wqe->acct[index]; struct io_worker *worker; worker = kzalloc_node(sizeof(*worker), GFP_KERNEL, wqe->node); @@ -658,8 +657,9 @@ kfree(worker); return false; } + kthread_bind_mask(worker->task, cpumask_of_node(wqe->node)); - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); hlist_nulls_add_head_rcu(&worker->nulls_node, &wqe->free_list); list_add_tail_rcu(&worker->all_list, &wqe->all_list); worker->flags |= IO_WORKER_F_FREE; @@ -668,11 +668,12 @@ if (!acct->nr_workers && (worker->flags & IO_WORKER_F_BOUND)) worker->flags |= IO_WORKER_F_FIXED; acct->nr_workers++; - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); if (index == IO_WQ_ACCT_UNBOUND) atomic_inc(&wq->user->processes); + refcount_inc(&wq->refs); wake_up_process(worker->task); return true; } @@ -688,28 +689,63 @@ return acct->nr_workers < acct->max_workers; } +static bool io_wqe_worker_send_sig(struct io_worker *worker, void *data) +{ + send_sig(SIGINT, worker->task, 1); + return false; +} + +/* + * Iterate the passed in list and call the specific function for each + * worker that isn't exiting + */ +static bool io_wq_for_each_worker(struct io_wqe *wqe, + bool (*func)(struct io_worker *, void *), + void *data) +{ + struct io_worker *worker; + bool ret = false; + + list_for_each_entry_rcu(worker, &wqe->all_list, all_list) { + if (io_worker_get(worker)) { + /* no task if node is/was offline */ + if (worker->task) + ret = func(worker, data); + io_worker_release(worker); + if (ret) + break; + } + } + + return ret; +} + +static bool io_wq_worker_wake(struct io_worker *worker, void *data) +{ + wake_up_process(worker->task); + return false; +} + /* * Manager thread. Tasked with creating new workers, if we need them. */ static int io_wq_manager(void *data) { struct io_wq *wq = data; - int workers_to_create = num_possible_nodes(); int node; /* create fixed workers */ - refcount_set(&wq->refs, workers_to_create); + refcount_set(&wq->refs, 1); for_each_node(node) { if (!node_online(node)) continue; - if (!create_io_worker(wq, wq->wqes[node], IO_WQ_ACCT_BOUND)) - goto err; - workers_to_create--; + if (create_io_worker(wq, wq->wqes[node], IO_WQ_ACCT_BOUND)) + continue; + set_bit(IO_WQ_BIT_ERROR, &wq->state); + set_bit(IO_WQ_BIT_EXIT, &wq->state); + goto out; } - while (workers_to_create--) - refcount_dec(&wq->refs); - complete(&wq->done); while (!kthread_should_stop()) { @@ -723,12 +759,12 @@ if (!node_online(node)) continue; - spin_lock_irq(&wqe->lock); + raw_spin_lock_irq(&wqe->lock); if (io_wqe_need_worker(wqe, IO_WQ_ACCT_BOUND)) fork_worker[IO_WQ_ACCT_BOUND] = true; if (io_wqe_need_worker(wqe, IO_WQ_ACCT_UNBOUND)) fork_worker[IO_WQ_ACCT_UNBOUND] = true; - spin_unlock_irq(&wqe->lock); + raw_spin_unlock_irq(&wqe->lock); if (fork_worker[IO_WQ_ACCT_BOUND]) create_io_worker(wq, wqe, IO_WQ_ACCT_BOUND); if (fork_worker[IO_WQ_ACCT_UNBOUND]) @@ -741,12 +777,18 @@ if (current->task_works) task_work_run(); - return 0; -err: - set_bit(IO_WQ_BIT_ERROR, &wq->state); - set_bit(IO_WQ_BIT_EXIT, &wq->state); - if (refcount_sub_and_test(workers_to_create, &wq->refs)) +out: + if (refcount_dec_and_test(&wq->refs)) { complete(&wq->done); + return 0; + } + /* if ERROR is set and we get here, we have workers to wake */ + if (test_bit(IO_WQ_BIT_ERROR, &wq->state)) { + rcu_read_lock(); + for_each_node(node) + io_wq_for_each_worker(wq->wqes[node], io_wq_worker_wake, NULL); + rcu_read_unlock(); + } return 0; } @@ -825,10 +867,10 @@ } work_flags = work->flags; - spin_lock_irqsave(&wqe->lock, flags); + raw_spin_lock_irqsave(&wqe->lock, flags); io_wqe_insert_work(wqe, work); wqe->flags &= ~IO_WQE_FLAG_STALLED; - spin_unlock_irqrestore(&wqe->lock, flags); + raw_spin_unlock_irqrestore(&wqe->lock, flags); if ((work_flags & IO_WQ_WORK_CONCURRENT) || !atomic_read(&acct->nr_running)) @@ -854,37 +896,6 @@ work->flags |= (IO_WQ_WORK_HASHED | (bit << IO_WQ_HASH_SHIFT)); } -static bool io_wqe_worker_send_sig(struct io_worker *worker, void *data) -{ - send_sig(SIGINT, worker->task, 1); - return false; -} - -/* - * Iterate the passed in list and call the specific function for each - * worker that isn't exiting - */ -static bool io_wq_for_each_worker(struct io_wqe *wqe, - bool (*func)(struct io_worker *, void *), - void *data) -{ - struct io_worker *worker; - bool ret = false; - - list_for_each_entry_rcu(worker, &wqe->all_list, all_list) { - if (io_worker_get(worker)) { - /* no task if node is/was offline */ - if (worker->task) - ret = func(worker, data); - io_worker_release(worker); - if (ret) - break; - } - } - - return ret; -} - void io_wq_cancel_all(struct io_wq *wq) { int node; @@ -929,6 +940,24 @@ return match->nr_running && !match->cancel_all; } +static inline void io_wqe_remove_pending(struct io_wqe *wqe, + struct io_wq_work *work, + struct io_wq_work_node *prev) +{ + unsigned int hash = io_get_work_hash(work); + struct io_wq_work *prev_work = NULL; + + if (io_wq_is_hashed(work) && work == wqe->hash_tail[hash]) { + if (prev) + prev_work = container_of(prev, struct io_wq_work, list); + if (prev_work && io_get_work_hash(prev_work) == hash) + wqe->hash_tail[hash] = prev_work; + else + wqe->hash_tail[hash] = NULL; + } + wq_list_del(&wqe->work_list, &work->list, prev); +} + static void io_wqe_cancel_pending_work(struct io_wqe *wqe, struct io_cb_cancel_data *match) { @@ -937,14 +966,13 @@ unsigned long flags; retry: - spin_lock_irqsave(&wqe->lock, flags); + raw_spin_lock_irqsave(&wqe->lock, flags); wq_list_for_each(node, prev, &wqe->work_list) { work = container_of(node, struct io_wq_work, list); if (!match->fn(work, match->data)) continue; - - wq_list_del(&wqe->work_list, node, prev); - spin_unlock_irqrestore(&wqe->lock, flags); + io_wqe_remove_pending(wqe, work, prev); + raw_spin_unlock_irqrestore(&wqe->lock, flags); io_run_cancel(work, wqe); match->nr_pending++; if (!match->cancel_all) @@ -953,7 +981,7 @@ /* not safe to continue after unlock */ goto retry; } - spin_unlock_irqrestore(&wqe->lock, flags); + raw_spin_unlock_irqrestore(&wqe->lock, flags); } static void io_wqe_cancel_running_work(struct io_wqe *wqe, @@ -1061,7 +1089,7 @@ } atomic_set(&wqe->acct[IO_WQ_ACCT_UNBOUND].nr_running, 0); wqe->wq = wq; - spin_lock_init(&wqe->lock); + raw_spin_lock_init(&wqe->lock); INIT_WQ_LIST(&wqe->work_list); INIT_HLIST_NULLS_HEAD(&wqe->free_list, 0); INIT_LIST_HEAD(&wqe->all_list); @@ -1100,12 +1128,6 @@ return refcount_inc_not_zero(&wq->use_refs); } -static bool io_wq_worker_wake(struct io_worker *worker, void *data) -{ - wake_up_process(worker->task); - return false; -} - static void __io_wq_destroy(struct io_wq *wq) { int node; --- linux-5.8.0.orig/fs/io-wq.h +++ linux-5.8.0/fs/io-wq.h @@ -50,6 +50,7 @@ list->last->next = node; list->last = node; } + node->next = NULL; } static inline void wq_list_cut(struct io_wq_work_list *list, @@ -88,6 +89,7 @@ struct files_struct *files; struct mm_struct *mm; const struct cred *creds; + struct nsproxy *nsproxy; struct fs_struct *fs; unsigned flags; }; --- linux-5.8.0.orig/fs/io_uring.c +++ linux-5.8.0/fs/io_uring.c @@ -78,6 +78,7 @@ #include #include #include +#include #define CREATE_TRACE_POINTS #include @@ -198,6 +199,7 @@ struct list_head file_list; struct fixed_file_data *file_data; struct llist_node llist; + bool done; }; struct fixed_file_data { @@ -214,7 +216,7 @@ struct io_buffer { struct list_head list; __u64 addr; - __s32 len; + __u32 len; __u16 bid; }; @@ -264,7 +266,16 @@ /* IO offload */ struct io_wq *io_wq; struct task_struct *sqo_thread; /* if using sq thread polling */ - struct mm_struct *sqo_mm; + + /* + * For SQPOLL usage - we hold a reference to the parent task, so we + * have access to the ->files + */ + struct task_struct *sqo_task; + + /* Only used for accounting purposes */ + struct mm_struct *mm_account; + wait_queue_head_t sqo_wait; /* @@ -274,8 +285,6 @@ */ struct fixed_file_data *file_data; unsigned nr_user_files; - int ring_fd; - struct file *ring_file; /* if used, fixed mapped user buffers */ unsigned nr_user_bufs; @@ -304,6 +313,7 @@ unsigned cq_entries; unsigned cq_mask; atomic_t cq_timeouts; + unsigned cq_last_tm_flush; unsigned long cq_check_overflow; struct wait_queue_head cq_wait; struct fasync_struct *cq_fasync; @@ -471,7 +481,7 @@ struct io_provide_buf { struct file *file; __u64 addr; - __s32 len; + __u32 len; __u32 bgid; __u16 nbufs; __u16 bid; @@ -541,7 +551,6 @@ REQ_F_NO_FILE_TABLE_BIT, REQ_F_QUEUE_TIMEOUT_BIT, REQ_F_WORK_INITIALIZED_BIT, - REQ_F_TASK_PINNED_BIT, /* not a real bit, just to check we're not overflowing the space */ __REQ_F_LAST_BIT, @@ -599,8 +608,6 @@ REQ_F_QUEUE_TIMEOUT = BIT(REQ_F_QUEUE_TIMEOUT_BIT), /* io_wq_work is initialized */ REQ_F_WORK_INITIALIZED = BIT(REQ_F_WORK_INITIALIZED_BIT), - /* req->task is refcounted */ - REQ_F_TASK_PINNED = BIT(REQ_F_TASK_PINNED_BIT), }; struct async_poll { @@ -669,12 +676,12 @@ * restore the work, if needed. */ struct { - struct callback_head task_work; struct hlist_node hash_node; struct async_poll *apoll; }; struct io_wq_work work; }; + struct callback_head task_work; }; #define IO_PLUG_THRESHOLD 2 @@ -915,21 +922,6 @@ } EXPORT_SYMBOL(io_uring_get_socket); -static void io_get_req_task(struct io_kiocb *req) -{ - if (req->flags & REQ_F_TASK_PINNED) - return; - get_task_struct(req->task); - req->flags |= REQ_F_TASK_PINNED; -} - -/* not idempotent -- it doesn't clear REQ_F_TASK_PINNED */ -static void __io_put_req_task(struct io_kiocb *req) -{ - if (req->flags & REQ_F_TASK_PINNED) - put_task_struct(req->task); -} - static void io_file_put_work(struct work_struct *work); /* @@ -1039,11 +1031,6 @@ /* order cqe stores with ring update */ smp_store_release(&rings->cq.tail, ctx->cached_cq_tail); - - if (wq_has_sleeper(&ctx->cq_wait)) { - wake_up_interruptible(&ctx->cq_wait); - kill_fasync(&ctx->cq_fasync, SIGIO, POLL_IN); - } } static inline void io_req_work_grab_env(struct io_kiocb *req, @@ -1099,6 +1086,9 @@ io_req_init_async(req); + if (req->flags & REQ_F_FORCE_ASYNC) + req->work.flags |= IO_WQ_WORK_CONCURRENT; + if (req->flags & REQ_F_ISREG) { if (def->hash_reg_file) io_wq_hash_work(&req->work, file_inode(req->file)); @@ -1141,14 +1131,34 @@ } } -static void io_kill_timeouts(struct io_ring_ctx *ctx) +static bool io_task_match(struct io_kiocb *req, struct task_struct *tsk) +{ + struct io_ring_ctx *ctx = req->ctx; + + if (!tsk || req->task == tsk) + return true; + if ((ctx->flags & IORING_SETUP_SQPOLL) && req->task == ctx->sqo_thread) + return true; + return false; +} + +/* + * Returns true if we found and killed one or more timeouts + */ +static bool io_kill_timeouts(struct io_ring_ctx *ctx, struct task_struct *tsk) { struct io_kiocb *req, *tmp; + int canceled = 0; spin_lock_irq(&ctx->completion_lock); - list_for_each_entry_safe(req, tmp, &ctx->timeout_list, list) - io_kill_timeout(req); + list_for_each_entry_safe(req, tmp, &ctx->timeout_list, list) { + if (io_task_match(req, tsk)) { + io_kill_timeout(req); + canceled++; + } + } spin_unlock_irq(&ctx->completion_lock); + return canceled != 0; } static void __io_queue_deferred(struct io_ring_ctx *ctx) @@ -1166,19 +1176,38 @@ static void io_flush_timeouts(struct io_ring_ctx *ctx) { - while (!list_empty(&ctx->timeout_list)) { + u32 seq; + + if (list_empty(&ctx->timeout_list)) + return; + + seq = ctx->cached_cq_tail - atomic_read(&ctx->cq_timeouts); + + do { + u32 events_needed, events_got; struct io_kiocb *req = list_first_entry(&ctx->timeout_list, struct io_kiocb, list); if (req->flags & REQ_F_TIMEOUT_NOSEQ) break; - if (req->timeout.target_seq != ctx->cached_cq_tail - - atomic_read(&ctx->cq_timeouts)) + + /* + * Since seq can easily wrap around over time, subtract + * the last seq at which timeouts were flushed before comparing. + * Assuming not more than 2^31-1 events have happened since, + * these subtractions won't have wrapped, so we can check if + * target is in [last_seq, current_seq] by comparing the two. + */ + events_needed = req->timeout.target_seq - ctx->cq_last_tm_flush; + events_got = seq - ctx->cq_last_tm_flush; + if (events_got < events_needed) break; list_del_init(&req->list); io_kill_timeout(req); - } + } while (!list_empty(&ctx->timeout_list)); + + ctx->cq_last_tm_flush = seq; } static void io_commit_cqring(struct io_ring_ctx *ctx) @@ -1221,6 +1250,10 @@ static void io_cqring_ev_posted(struct io_ring_ctx *ctx) { + if (wq_has_sleeper(&ctx->cq_wait)) { + wake_up_interruptible(&ctx->cq_wait); + kill_fasync(&ctx->cq_fasync, SIGIO, POLL_IN); + } if (waitqueue_active(&ctx->wait)) wake_up(&ctx->wait); if (waitqueue_active(&ctx->sqo_wait)) @@ -1229,18 +1262,28 @@ eventfd_signal(ctx->cq_ev_fd, 1); } +static inline bool io_match_files(struct io_kiocb *req, + struct files_struct *files) +{ + if (!files) + return true; + if (req->flags & REQ_F_WORK_INITIALIZED) + return req->work.files == files; + return false; +} + /* Returns true if there are no backlogged entries after the flush */ -static bool io_cqring_overflow_flush(struct io_ring_ctx *ctx, bool force) +static bool io_cqring_overflow_flush(struct io_ring_ctx *ctx, bool force, + struct task_struct *tsk, + struct files_struct *files) { struct io_rings *rings = ctx->rings; + struct io_kiocb *req, *tmp; struct io_uring_cqe *cqe; - struct io_kiocb *req; unsigned long flags; LIST_HEAD(list); if (!force) { - if (list_empty_careful(&ctx->cq_overflow_list)) - return true; if ((ctx->cached_cq_tail - READ_ONCE(rings->cq.head) == rings->cq_ring_entries)) return false; @@ -1248,12 +1291,13 @@ spin_lock_irqsave(&ctx->completion_lock, flags); - /* if force is set, the ring is going away. always drop after that */ - if (force) - ctx->cq_overflow_flushed = 1; - cqe = NULL; - while (!list_empty(&ctx->cq_overflow_list)) { + list_for_each_entry_safe(req, tmp, &ctx->cq_overflow_list, list) { + if (tsk && req->task != tsk) + continue; + if (!io_match_files(req, files)) + continue; + cqe = io_get_cqring(ctx); if (!cqe && !force) break; @@ -1307,7 +1351,12 @@ WRITE_ONCE(cqe->user_data, req->user_data); WRITE_ONCE(cqe->res, res); WRITE_ONCE(cqe->flags, cflags); - } else if (ctx->cq_overflow_flushed) { + } else if (ctx->cq_overflow_flushed || req->task->io_uring->in_idle) { + /* + * If we're in ring overflow flush mode, or in task cancel mode, + * then we cannot store the request for later flushing, we need + * to drop it on the floor. + */ WRITE_ONCE(ctx->rings->cq_overflow, atomic_inc_return(&ctx->cached_cq_overflow)); } else { @@ -1412,15 +1461,35 @@ fput(file); } +static void io_req_drop_files(struct io_kiocb *req) +{ + struct io_ring_ctx *ctx = req->ctx; + unsigned long flags; + + put_files_struct(req->work.files); + put_nsproxy(req->work.nsproxy); + spin_lock_irqsave(&ctx->inflight_lock, flags); + list_del(&req->inflight_entry); + spin_unlock_irqrestore(&ctx->inflight_lock, flags); + req->flags &= ~REQ_F_INFLIGHT; + req->work.files = NULL; + if (waitqueue_active(&ctx->inflight_wait)) + wake_up(&ctx->inflight_wait); +} + static void __io_req_aux_free(struct io_kiocb *req) { + struct io_uring_task *tctx = req->task->io_uring; if (req->flags & REQ_F_NEED_CLEANUP) io_cleanup_req(req); kfree(req->io); if (req->file) io_put_file(req, req->file, (req->flags & REQ_F_FIXED_FILE)); - __io_put_req_task(req); + atomic_long_inc(&tctx->req_complete); + if (tctx->in_idle) + wake_up(&tctx->wait); + put_task_struct(req->task); io_req_work_drop_env(req); } @@ -1428,16 +1497,8 @@ { __io_req_aux_free(req); - if (req->flags & REQ_F_INFLIGHT) { - struct io_ring_ctx *ctx = req->ctx; - unsigned long flags; - - spin_lock_irqsave(&ctx->inflight_lock, flags); - list_del(&req->inflight_entry); - if (waitqueue_active(&ctx->inflight_wait)) - wake_up(&ctx->inflight_wait); - spin_unlock_irqrestore(&ctx->inflight_lock, flags); - } + if (req->flags & REQ_F_INFLIGHT) + io_req_drop_files(req); percpu_ref_put(&req->ctx->refs); if (likely(!io_is_fallback_req(req))) @@ -1549,12 +1610,9 @@ /* * Called if REQ_F_LINK_HEAD is set, and we fail the head request */ -static void io_fail_links(struct io_kiocb *req) +static void __io_fail_links(struct io_kiocb *req) { struct io_ring_ctx *ctx = req->ctx; - unsigned long flags; - - spin_lock_irqsave(&ctx->completion_lock, flags); while (!list_empty(&req->link_list)) { struct io_kiocb *link = list_first_entry(&req->link_list, @@ -1568,13 +1626,29 @@ io_link_cancel_timeout(link); } else { io_cqring_fill_event(link, -ECANCELED); + link->flags |= REQ_F_COMP_LOCKED; __io_double_put_req(link); } req->flags &= ~REQ_F_LINK_TIMEOUT; } io_commit_cqring(ctx); - spin_unlock_irqrestore(&ctx->completion_lock, flags); +} + +static void io_fail_links(struct io_kiocb *req) +{ + struct io_ring_ctx *ctx = req->ctx; + + if (!(req->flags & REQ_F_COMP_LOCKED)) { + unsigned long flags; + + spin_lock_irqsave(&ctx->completion_lock, flags); + __io_fail_links(req); + spin_unlock_irqrestore(&ctx->completion_lock, flags); + } else { + __io_fail_links(req); + } + io_cqring_ev_posted(ctx); } @@ -1701,10 +1775,10 @@ * we wake up the task, and the next invocation will flush the * entries. We cannot safely to it from here. */ - if (noflush && !list_empty(&ctx->cq_overflow_list)) + if (noflush) return -1U; - io_cqring_overflow_flush(ctx, false); + io_cqring_overflow_flush(ctx, false, NULL, NULL); } /* See comment at the top of this file */ @@ -1725,7 +1799,7 @@ if ((req->flags & REQ_F_LINK_HEAD) || io_is_fallback_req(req)) return false; - if (req->file || req->io) + if (req->file || req->io || req->task) rb->need_iter++; rb->reqs[rb->to_free++] = req; @@ -1747,6 +1821,23 @@ return cflags; } +static inline bool io_run_task_work(void) +{ + /* + * Not safe to run on exiting task, and the task_work handling will + * not add work to such a task. + */ + if (unlikely(current->flags & PF_EXITING)) + return false; + if (current->task_works) { + __set_current_state(TASK_RUNNING); + task_work_run(); + return true; + } + + return false; +} + static void io_iopoll_queue(struct list_head *again) { struct io_kiocb *req; @@ -1786,6 +1877,7 @@ req = list_first_entry(done, struct io_kiocb, list); if (READ_ONCE(req->result) == -EAGAIN) { + req->result = 0; req->iopoll_completed = 0; list_move_tail(&req->list, &again); continue; @@ -1936,6 +2028,7 @@ */ if (!(++iters & 7)) { mutex_unlock(&ctx->uring_lock); + io_run_task_work(); mutex_lock(&ctx->uring_lock); } @@ -2416,9 +2509,7 @@ iov[0].iov_len = kbuf->len; return 0; } - if (!req->rw.len) - return 0; - else if (req->rw.len > 1) + if (req->rw.len != 1) return -EINVAL; #ifdef CONFIG_COMPAT @@ -2492,6 +2583,11 @@ return import_iovec(rw, buf, sqe_len, UIO_FASTIOV, iovec, iter); } +static inline loff_t *io_kiocb_ppos(struct kiocb *kiocb) +{ + return kiocb->ki_filp->f_mode & FMODE_STREAM ? NULL : &kiocb->ki_pos; +} + /* * For files that don't have ->read_iter() and ->write_iter(), handle them * by looping over ->read() or ->write() manually. @@ -2527,10 +2623,10 @@ if (rw == READ) { nr = file->f_op->read(file, iovec.iov_base, - iovec.iov_len, &kiocb->ki_pos); + iovec.iov_len, io_kiocb_ppos(kiocb)); } else { nr = file->f_op->write(file, iovec.iov_base, - iovec.iov_len, &kiocb->ki_pos); + iovec.iov_len, io_kiocb_ppos(kiocb)); } if (iov_iter_is_bvec(iter)) @@ -2655,17 +2751,26 @@ goto copy_iov; iov_count = iov_iter_count(&iter); - ret = rw_verify_area(READ, req->file, &kiocb->ki_pos, iov_count); + ret = rw_verify_area(READ, req->file, io_kiocb_ppos(kiocb), iov_count); if (!ret) { ssize_t ret2; if (req->file->f_op->read_iter) ret2 = call_read_iter(req->file, kiocb, &iter); - else + else if (req->file->f_op->read) ret2 = loop_rw_iter(READ, req->file, kiocb, &iter); + else + ret2 = -EINVAL; + + /* no retry on NONBLOCK marked file */ + if (ret2 == -EAGAIN && (req->file->f_flags & O_NONBLOCK)) { + ret = 0; + goto done; + } /* Catch -EAGAIN return for forced non-blocking submission */ if (!force_nonblock || ret2 != -EAGAIN) { + done: kiocb_done(kiocb, ret2); } else { copy_iov: @@ -2752,7 +2857,7 @@ goto copy_iov; iov_count = iov_iter_count(&iter); - ret = rw_verify_area(WRITE, req->file, &kiocb->ki_pos, iov_count); + ret = rw_verify_area(WRITE, req->file, io_kiocb_ppos(kiocb), iov_count); if (!ret) { ssize_t ret2; @@ -2776,8 +2881,10 @@ if (req->file->f_op->write_iter) ret2 = call_write_iter(req->file, kiocb, &iter); - else + else if (req->file->f_op->write) ret2 = loop_rw_iter(WRITE, req->file, kiocb, &iter); + else + ret2 = -EINVAL; if (!force_nonblock) current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; @@ -2788,7 +2895,13 @@ */ if (ret2 == -EOPNOTSUPP && (kiocb->ki_flags & IOCB_NOWAIT)) ret2 = -EAGAIN; + /* no retry on NONBLOCK marked file */ + if (ret2 == -EAGAIN && (req->file->f_flags & O_NONBLOCK)) { + ret = 0; + goto done; + } if (!force_nonblock || ret2 != -EAGAIN) { +done: kiocb_done(kiocb, ret2); } else { copy_iov: @@ -3008,8 +3121,6 @@ const char __user *fname; int ret; - if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL|IORING_SETUP_SQPOLL))) - return -EINVAL; if (unlikely(sqe->ioprio || sqe->buf_index)) return -EINVAL; if (unlikely(req->flags & REQ_F_FIXED_FILE)) @@ -3036,6 +3147,8 @@ { u64 flags, mode; + if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL|IORING_SETUP_SQPOLL))) + return -EINVAL; if (req->flags & REQ_F_NEED_CLEANUP) return 0; mode = READ_ONCE(sqe->len); @@ -3050,6 +3163,8 @@ size_t len; int ret; + if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL|IORING_SETUP_SQPOLL))) + return -EINVAL; if (req->flags & REQ_F_NEED_CLEANUP) return 0; how = u64_to_user_ptr(READ_ONCE(sqe->addr2)); @@ -3177,6 +3292,7 @@ static int io_provide_buffers_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) { + unsigned long size, tmp_check; struct io_provide_buf *p = &req->pbuf; u64 tmp; @@ -3190,7 +3306,14 @@ p->addr = READ_ONCE(sqe->addr); p->len = READ_ONCE(sqe->len); - if (!access_ok(u64_to_user_ptr(p->addr), (p->len * p->nbufs))) + if (check_mul_overflow((unsigned long)p->len, (unsigned long)p->nbufs, + &size)) + return -EOVERFLOW; + if (check_add_overflow((unsigned long)p->addr, size, &tmp_check)) + return -EOVERFLOW; + + size = (unsigned long)p->len * p->nbufs; + if (!access_ok(u64_to_user_ptr(p->addr), size)) return -EFAULT; p->bgid = READ_ONCE(sqe->buf_group); @@ -3213,7 +3336,7 @@ break; buf->addr = addr; - buf->len = pbuf->len; + buf->len = min_t(__u32, pbuf->len, MAX_RW_COUNT); buf->bid = bid; addr += pbuf->len; bid++; @@ -3268,7 +3391,7 @@ #if defined(CONFIG_EPOLL) if (sqe->ioprio || sqe->buf_index) return -EINVAL; - if (unlikely(req->ctx->flags & IORING_SETUP_IOPOLL)) + if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL | IORING_SETUP_SQPOLL))) return -EINVAL; req->epoll.epfd = READ_ONCE(sqe->fd); @@ -3385,7 +3508,7 @@ static int io_statx_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) { - if (unlikely(req->ctx->flags & IORING_SETUP_IOPOLL)) + if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL | IORING_SETUP_SQPOLL))) return -EINVAL; if (sqe->ioprio || sqe->buf_index) return -EINVAL; @@ -3431,7 +3554,6 @@ * io_wq_work.flags, so initialize io_wq_work firstly. */ io_req_init_async(req); - req->work.flags |= IO_WQ_WORK_NO_CANCEL; if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL|IORING_SETUP_SQPOLL))) return -EINVAL; @@ -3442,8 +3564,7 @@ return -EBADF; req->close.fd = READ_ONCE(sqe->fd); - if ((req->file && req->file->f_op == &io_uring_fops) || - req->close.fd == req->ctx->ring_fd) + if ((req->file && req->file->f_op == &io_uring_fops)) return -EBADF; req->close.put_file = NULL; @@ -3464,6 +3585,8 @@ /* if the file has a flush method, be safe and punt to async */ if (close->put_file->f_op->flush && force_nonblock) { + /* not safe to cancel at this point */ + req->work.flags |= IO_WQ_WORK_NO_CANCEL; /* avoid grabbing files - we don't need the files */ req->flags |= REQ_F_NO_FILE_TABLE | REQ_F_MUST_PUNT; return -EAGAIN; @@ -3721,7 +3844,8 @@ return -EFAULT; if (clen < 0) return -EINVAL; - sr->len = io->msg.iov[0].iov_len; + sr->len = clen; + io->msg.iov[0].iov_len = clen; io->msg.iov = NULL; } else { ret = compat_import_iovec(READ, uiov, len, UIO_FASTIOV, @@ -4084,26 +4208,28 @@ int error; }; -static int io_req_task_work_add(struct io_kiocb *req, struct callback_head *cb) +static int io_req_task_work_add(struct io_kiocb *req, struct callback_head *cb, + bool twa_signal_ok) { struct task_struct *tsk = req->task; struct io_ring_ctx *ctx = req->ctx; - int ret, notify = TWA_RESUME; + enum task_work_notify_mode notify; + int ret; /* - * SQPOLL kernel thread doesn't need notification, just a wakeup. - * If we're not using an eventfd, then TWA_RESUME is always fine, - * as we won't have dependencies between request completions for - * other kernel wait conditions. + * SQPOLL kernel thread doesn't need notification, just a wakeup. For + * all other cases, use TWA_SIGNAL unconditionally to ensure we're + * processing task_work. There's no reliable way to tell if TWA_RESUME + * will do the job. */ - if (ctx->flags & IORING_SETUP_SQPOLL) - notify = 0; - else if (ctx->cq_ev_fd) + notify = TWA_NONE; + if (!(ctx->flags & IORING_SETUP_SQPOLL) && twa_signal_ok) notify = TWA_SIGNAL; ret = task_work_add(tsk, cb, notify); if (!ret) wake_up_process(tsk); + return ret; } @@ -4111,6 +4237,7 @@ __poll_t mask, task_work_func_t func) { struct task_struct *tsk; + bool twa_signal_ok; int ret; /* for instances that support it check for an event match first: */ @@ -4124,17 +4251,27 @@ tsk = req->task; req->result = mask; init_task_work(&req->task_work, func); + percpu_ref_get(&req->ctx->refs); + + /* + * If we using the signalfd wait_queue_head for this wakeup, then + * it's not safe to use TWA_SIGNAL as we could be recursing on the + * tsk->sighand->siglock on doing the wakeup. Should not be needed + * either, as the normal wakeup will suffice. + */ + twa_signal_ok = (poll->head != &req->task->sighand->signalfd_wqh); + /* * If this fails, then the task is exiting. When a task exits, the * work gets canceled, so just cancel this request as well instead * of executing it. We can't safely execute it anyway, as we may not * have the needed state needed for it anyway. */ - ret = io_req_task_work_add(req, &req->task_work); + ret = io_req_task_work_add(req, &req->task_work, twa_signal_ok); if (unlikely(ret)) { WRITE_ONCE(poll->canceled, true); tsk = io_wq_get_task(req->ctx->io_wq); - task_work_add(tsk, &req->task_work, 0); + task_work_add(tsk, &req->task_work, TWA_NONE); wake_up_process(tsk); } return 1; @@ -4160,9 +4297,24 @@ return false; } -static void io_poll_remove_double(struct io_kiocb *req, void *data) +static struct io_poll_iocb *io_poll_get_double(struct io_kiocb *req) +{ + /* pure poll stashes this in ->io, poll driven retry elsewhere */ + if (req->opcode == IORING_OP_POLL_ADD) + return (struct io_poll_iocb *) req->io; + return req->apoll->double_poll; +} + +static struct io_poll_iocb *io_poll_get_single(struct io_kiocb *req) +{ + if (req->opcode == IORING_OP_POLL_ADD) + return &req->poll; + return &req->apoll->poll; +} + +static void io_poll_remove_double(struct io_kiocb *req) { - struct io_poll_iocb *poll = data; + struct io_poll_iocb *poll = io_poll_get_double(req); lockdep_assert_held(&req->ctx->completion_lock); @@ -4182,7 +4334,7 @@ { struct io_ring_ctx *ctx = req->ctx; - io_poll_remove_double(req, req->io); + io_poll_remove_double(req); req->poll.done = true; io_cqring_fill_event(req, error ? error : mangle_poll(mask)); io_commit_cqring(ctx); @@ -4208,6 +4360,7 @@ static void io_poll_task_func(struct callback_head *cb) { struct io_kiocb *req = container_of(cb, struct io_kiocb, task_work); + struct io_ring_ctx *ctx = req->ctx; struct io_kiocb *nxt = NULL; io_poll_task_handler(req, &nxt); @@ -4218,19 +4371,22 @@ __io_queue_sqe(nxt, NULL); mutex_unlock(&ctx->uring_lock); } + percpu_ref_put(&ctx->refs); } static int io_poll_double_wake(struct wait_queue_entry *wait, unsigned mode, int sync, void *key) { struct io_kiocb *req = wait->private; - struct io_poll_iocb *poll = req->apoll->double_poll; + struct io_poll_iocb *poll = io_poll_get_single(req); __poll_t mask = key_to_poll(key); /* for instances that support it check for an event match first: */ if (mask && !(mask & poll->events)) return 0; + list_del_init(&wait->entry); + if (poll && poll->head) { bool done; @@ -4238,9 +4394,13 @@ done = list_empty(&poll->wait.entry); if (!done) list_del_init(&poll->wait.entry); + /* make sure double remove sees this as being gone */ + wait->private = NULL; spin_unlock(&poll->head->lock); - if (!done) - __io_async_wake(req, poll, mask, io_poll_task_func); + if (!done) { + /* use wait func handler, so it matches the rq type */ + poll->wait.func(&poll->wait, mode, sync, key); + } } refcount_dec(&req->refs); return 1; @@ -4274,6 +4434,9 @@ pt->error = -EINVAL; return; } + /* double add on the same waitqueue head, ignore */ + if (poll->head == head) + return; poll = kmalloc(sizeof(*poll), GFP_ATOMIC); if (!poll) { pt->error = -ENOMEM; @@ -4313,9 +4476,11 @@ struct io_kiocb *req) { if (io_op_defs[req->opcode].needs_mm && !current->mm) { - if (unlikely(!mmget_not_zero(ctx->sqo_mm))) + if (unlikely(!(ctx->flags & IORING_SETUP_SQPOLL) || + !ctx->sqo_task->mm || + !mmget_not_zero(ctx->sqo_task->mm))) return -EFAULT; - kthread_use_mm(ctx->sqo_mm); + kthread_use_mm(ctx->sqo_task->mm); } return 0; @@ -4332,6 +4497,7 @@ if (io_poll_rewait(req, &apoll->poll)) { spin_unlock_irq(&ctx->completion_lock); + percpu_ref_put(&ctx->refs); return; } @@ -4346,7 +4512,7 @@ } } - io_poll_remove_double(req, apoll->double_poll); + io_poll_remove_double(req); spin_unlock_irq(&ctx->completion_lock); /* restore ->work in case we need to retry again */ @@ -4356,7 +4522,6 @@ kfree(apoll); if (!canceled) { - __set_current_state(TASK_RUNNING); if (io_sq_thread_acquire_mm(ctx, req)) { io_cqring_add_event(req, -EFAULT); goto end_req; @@ -4370,6 +4535,7 @@ req_set_fail_links(req); io_double_put_req(req); } + percpu_ref_put(&ctx->refs); } static int io_async_wake(struct wait_queue_entry *wait, unsigned mode, int sync, @@ -4440,12 +4606,20 @@ struct async_poll *apoll; struct io_poll_table ipt; __poll_t mask, ret; + int rw; if (!req->file || !file_can_poll(req->file)) return false; if (req->flags & (REQ_F_MUST_PUNT | REQ_F_POLLED)) return false; - if (!def->pollin && !def->pollout) + if (def->pollin) + rw = READ; + else if (def->pollout) + rw = WRITE; + else + return false; + /* if we can't nonblock try, then no point in arming a poll handler */ + if (!io_file_supports_async(req->file, rw)) return false; apoll = kmalloc(sizeof(*apoll), GFP_ATOMIC); @@ -4457,7 +4631,6 @@ if (req->flags & REQ_F_WORK_INITIALIZED) memcpy(&apoll->work, &req->work, sizeof(req->work)); - io_get_req_task(req); req->apoll = apoll; INIT_HLIST_NODE(&req->hash_node); @@ -4472,8 +4645,8 @@ ret = __io_arm_poll_handler(req, &apoll->poll, &ipt, mask, io_async_wake); - if (ret) { - io_poll_remove_double(req, apoll->double_poll); + if (ret || ipt.error) { + io_poll_remove_double(req); spin_unlock_irq(&ctx->completion_lock); if (req->flags & REQ_F_WORK_INITIALIZED) memcpy(&req->work, &apoll->work, sizeof(req->work)); @@ -4507,14 +4680,13 @@ { bool do_complete; + io_poll_remove_double(req); + if (req->opcode == IORING_OP_POLL_ADD) { - io_poll_remove_double(req, req->io); do_complete = __io_poll_remove_one(req, &req->poll); } else { struct async_poll *apoll = req->apoll; - io_poll_remove_double(req, apoll->double_poll); - /* non-poll requests have submit ref still */ do_complete = __io_poll_remove_one(req, &apoll->poll); if (do_complete) { @@ -4536,13 +4708,17 @@ io_cqring_fill_event(req, -ECANCELED); io_commit_cqring(req->ctx); req->flags |= REQ_F_COMP_LOCKED; + req_set_fail_links(req); io_put_req(req); } return do_complete; } -static void io_poll_remove_all(struct io_ring_ctx *ctx) +/* + * Returns true if we found and killed one or more poll requests + */ +static bool io_poll_remove_all(struct io_ring_ctx *ctx, struct task_struct *tsk) { struct hlist_node *tmp; struct io_kiocb *req; @@ -4553,13 +4729,17 @@ struct hlist_head *list; list = &ctx->cancel_hash[i]; - hlist_for_each_entry_safe(req, tmp, list, hash_node) - posted += io_poll_remove_one(req); + hlist_for_each_entry_safe(req, tmp, list, hash_node) { + if (io_task_match(req, tsk)) + posted += io_poll_remove_one(req); + } } spin_unlock_irq(&ctx->completion_lock); if (posted) io_cqring_ev_posted(ctx); + + return posted != 0; } static int io_poll_cancel(struct io_ring_ctx *ctx, __u64 sqe_addr) @@ -4645,8 +4825,6 @@ events = READ_ONCE(sqe->poll_events); poll->events = demangle_poll(events) | EPOLLERR | EPOLLHUP; - - io_get_req_task(req); return 0; } @@ -4709,6 +4887,23 @@ return HRTIMER_NORESTART; } +static int __io_timeout_cancel(struct io_kiocb *req) +{ + int ret; + + list_del_init(&req->list); + + ret = hrtimer_try_to_cancel(&req->io->timeout.timer); + if (ret == -1) + return -EALREADY; + + req_set_fail_links(req); + req->flags |= REQ_F_COMP_LOCKED; + io_cqring_fill_event(req, -ECANCELED); + io_put_req(req); + return 0; +} + static int io_timeout_cancel(struct io_ring_ctx *ctx, __u64 user_data) { struct io_kiocb *req; @@ -4716,7 +4911,6 @@ list_for_each_entry(req, &ctx->timeout_list, list) { if (user_data == req->user_data) { - list_del_init(&req->list); ret = 0; break; } @@ -4725,14 +4919,7 @@ if (ret == -ENOENT) return ret; - ret = hrtimer_try_to_cancel(&req->io->timeout.timer); - if (ret == -1) - return -EALREADY; - - req_set_fail_links(req); - io_cqring_fill_event(req, -ECANCELED); - io_put_req(req); - return 0; + return __io_timeout_cancel(req); } static int io_timeout_remove_prep(struct io_kiocb *req, @@ -4835,6 +5022,12 @@ tail = ctx->cached_cq_tail - atomic_read(&ctx->cq_timeouts); req->timeout.target_seq = tail + off; + /* Update the last seq here in case io_flush_timeouts() hasn't. + * This is safe because ->completion_lock is held, and submissions + * and completions are never mixed in the same ->completion_lock section. + */ + ctx->cq_last_tm_flush = tail; + /* * Insertion sort, ensuring the first entry in the list is always * the one we need first. @@ -4940,6 +5133,8 @@ static int io_files_update_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) { + if (unlikely(req->ctx->flags & IORING_SETUP_SQPOLL)) + return -EINVAL; if (unlikely(req->flags & (REQ_F_FIXED_FILE | REQ_F_BUFFER_SELECT))) return -EINVAL; if (sqe->ioprio || sqe->rw_flags) @@ -5154,6 +5349,8 @@ break; case IORING_OP_OPENAT: case IORING_OP_OPENAT2: + if (req->open.filename) + putname(req->open.filename); break; case IORING_OP_SPLICE: case IORING_OP_TEE: @@ -5520,32 +5717,20 @@ static int io_grab_files(struct io_kiocb *req) { - int ret = -EBADF; struct io_ring_ctx *ctx = req->ctx; if (req->work.files || (req->flags & REQ_F_NO_FILE_TABLE)) return 0; - if (!ctx->ring_file) - return -EBADF; - rcu_read_lock(); + req->work.files = get_files_struct(current); + get_nsproxy(current->nsproxy); + req->work.nsproxy = current->nsproxy; + req->flags |= REQ_F_INFLIGHT; + spin_lock_irq(&ctx->inflight_lock); - /* - * We use the f_ops->flush() handler to ensure that we can flush - * out work accessing these files if the fd is closed. Check if - * the fd has changed since we started down this path, and disallow - * this operation if it has. - */ - if (fcheck(ctx->ring_fd) == ctx->ring_file) { - list_add(&req->inflight_entry, &ctx->inflight_list); - req->flags |= REQ_F_INFLIGHT; - req->work.files = current->files; - ret = 0; - } + list_add(&req->inflight_entry, &ctx->inflight_list); spin_unlock_irq(&ctx->inflight_lock); - rcu_read_unlock(); - - return ret; + return 0; } static enum hrtimer_restart io_link_timeout_fn(struct hrtimer *timer) @@ -5576,7 +5761,6 @@ spin_unlock_irqrestore(&ctx->completion_lock, flags); if (prev) { - req_set_fail_links(prev); io_async_find_and_cancel(ctx, req, prev->user_data, -ETIME); io_put_req(prev); } else { @@ -5728,13 +5912,6 @@ if (unlikely(ret < 0)) goto fail_req; } - - /* - * Never try inline submit of IOSQE_ASYNC is set, go straight - * to async execution. - */ - io_req_init_async(req); - req->work.flags |= IO_WQ_WORK_CONCURRENT; io_queue_async_work(req); } else { __io_queue_sqe(req, sqe); @@ -5915,6 +6092,8 @@ /* one is dropped after submission, the other at completion */ refcount_set(&req->refs, 2); req->task = current; + get_task_struct(req->task); + atomic_long_inc(&req->task->io_uring->req_issue); req->result = 0; if (unlikely(req->opcode >= IORING_OP_LAST)) @@ -5950,8 +6129,7 @@ return io_req_set_file(state, req, READ_ONCE(sqe->fd)); } -static int io_submit_sqes(struct io_ring_ctx *ctx, unsigned int nr, - struct file *ring_file, int ring_fd) +static int io_submit_sqes(struct io_ring_ctx *ctx, unsigned int nr) { struct io_submit_state state, *statep = NULL; struct io_kiocb *link = NULL; @@ -5959,8 +6137,7 @@ /* if we have a backlog and couldn't flush it all, return BUSY */ if (test_bit(0, &ctx->sq_check_overflow)) { - if (!list_empty(&ctx->cq_overflow_list) && - !io_cqring_overflow_flush(ctx, false)) + if (!io_cqring_overflow_flush(ctx, false, NULL, NULL)) return -EBUSY; } @@ -5975,9 +6152,6 @@ statep = &state; } - ctx->ring_fd = ring_fd; - ctx->ring_file = ring_file; - for (i = 0; i < nr; i++) { const struct io_uring_sqe *sqe; struct io_kiocb *req; @@ -6082,8 +6256,7 @@ if (!list_empty(&ctx->poll_list) || need_resched() || (!time_after(jiffies, timeout) && ret != -EBUSY && !percpu_ref_is_dying(&ctx->refs))) { - if (current->task_works) - task_work_run(); + io_run_task_work(); cond_resched(); continue; } @@ -6115,8 +6288,7 @@ finish_wait(&ctx->sqo_wait, &wait); break; } - if (current->task_works) { - task_work_run(); + if (io_run_task_work()) { finish_wait(&ctx->sqo_wait, &wait); continue; } @@ -6140,13 +6312,12 @@ mutex_lock(&ctx->uring_lock); if (likely(!percpu_ref_is_dying(&ctx->refs))) - ret = io_submit_sqes(ctx, to_submit, NULL, -1); + ret = io_submit_sqes(ctx, to_submit); mutex_unlock(&ctx->uring_lock); timeout = jiffies + ctx->sq_thread_idle; } - if (current->task_works) - task_work_run(); + io_run_task_work(); io_sq_thread_drop_mm(ctx); revert_creds(old_cred); @@ -6211,9 +6382,8 @@ do { if (io_cqring_events(ctx, false) >= min_events) return 0; - if (!current->task_works) + if (!io_run_task_work()) break; - task_work_run(); } while (1); if (sig) { @@ -6235,8 +6405,8 @@ prepare_to_wait_exclusive(&ctx->wait, &iowq.wq, TASK_INTERRUPTIBLE); /* make sure we run task_work before checking for signals */ - if (current->task_works) - task_work_run(); + if (io_run_task_work()) + continue; if (signal_pending(current)) { if (current->jobctl & JOBCTL_TASK_WORK) { spin_lock_irq(¤t->sighand->siglock); @@ -6300,9 +6470,8 @@ return -ENXIO; spin_lock(&data->lock); - if (!list_empty(&data->ref_list)) - ref_node = list_first_entry(&data->ref_list, - struct fixed_file_ref_node, node); + ref_node = container_of(data->cur_refs, struct fixed_file_ref_node, + refs); spin_unlock(&data->lock); if (ref_node) percpu_ref_kill(&ref_node->refs); @@ -6553,10 +6722,6 @@ kfree(pfile); } - spin_lock(&file_data->lock); - list_del(&ref_node->node); - spin_unlock(&file_data->lock); - percpu_ref_exit(&ref_node->refs); kfree(ref_node); percpu_ref_put(&file_data->refs); @@ -6583,17 +6748,33 @@ static void io_file_data_ref_zero(struct percpu_ref *ref) { struct fixed_file_ref_node *ref_node; + struct fixed_file_data *data; struct io_ring_ctx *ctx; - bool first_add; + bool first_add = false; int delay = HZ; ref_node = container_of(ref, struct fixed_file_ref_node, refs); - ctx = ref_node->file_data->ctx; + data = ref_node->file_data; + ctx = data->ctx; - if (percpu_ref_is_dying(&ctx->file_data->refs)) + spin_lock(&data->lock); + ref_node->done = true; + + while (!list_empty(&data->ref_list)) { + ref_node = list_first_entry(&data->ref_list, + struct fixed_file_ref_node, node); + /* recycle ref nodes in order */ + if (!ref_node->done) + break; + list_del(&ref_node->node); + first_add |= llist_add(&ref_node->llist, &ctx->file_put_llist); + } + spin_unlock(&data->lock); + + + if (percpu_ref_is_dying(&data->refs)) delay = 0; - first_add = llist_add(&ref_node->llist, &ctx->file_put_llist); if (!delay) mod_delayed_work(system_wq, &ctx->file_put_work, 0); else if (first_add) @@ -6617,6 +6798,7 @@ INIT_LIST_HEAD(&ref_node->node); INIT_LIST_HEAD(&ref_node->file_list); ref_node->file_data = ctx->file_data; + ref_node->done = false; return ref_node; } @@ -6744,7 +6926,7 @@ ctx->file_data->cur_refs = &ref_node->refs; spin_lock(&ctx->file_data->lock); - list_add(&ref_node->node, &ctx->file_data->ref_list); + list_add_tail(&ref_node->node, &ctx->file_data->ref_list); spin_unlock(&ctx->file_data->lock); percpu_ref_get(&ctx->file_data->refs); return ret; @@ -6847,7 +7029,7 @@ table = &ctx->file_data->table[i >> IORING_FILE_TABLE_SHIFT]; index = i & IORING_FILE_TABLE_MASK; if (table->files[index]) { - file = io_file_from_index(ctx, index); + file = table->files[index]; err = io_queue_file_removal(data, file); if (err) break; @@ -6876,6 +7058,7 @@ table->files[index] = file; err = io_sqe_file_register(ctx, file, i); if (err) { + table->files[index] = NULL; fput(file); break; } @@ -6888,7 +7071,7 @@ if (needs_switch) { percpu_ref_kill(data->cur_refs); spin_lock(&data->lock); - list_add(&ref_node->node, &data->ref_list); + list_add_tail(&ref_node->node, &data->ref_list); data->cur_refs = &ref_node->refs; spin_unlock(&data->lock); percpu_ref_get(&ctx->file_data->refs); @@ -6970,14 +7153,38 @@ return ret; } +static int io_uring_alloc_task_context(struct task_struct *task) +{ + struct io_uring_task *tctx; + + tctx = kmalloc(sizeof(*tctx), GFP_KERNEL); + if (unlikely(!tctx)) + return -ENOMEM; + + xa_init(&tctx->xa); + init_waitqueue_head(&tctx->wait); + tctx->last = NULL; + tctx->in_idle = 0; + atomic_long_set(&tctx->req_issue, 0); + atomic_long_set(&tctx->req_complete, 0); + task->io_uring = tctx; + return 0; +} + +void __io_uring_free(struct task_struct *tsk) +{ + struct io_uring_task *tctx = tsk->io_uring; + + WARN_ON_ONCE(!xa_empty(&tctx->xa)); + kfree(tctx); + tsk->io_uring = NULL; +} + static int io_sq_offload_start(struct io_ring_ctx *ctx, struct io_uring_params *p) { int ret; - mmgrab(current->mm); - ctx->sqo_mm = current->mm; - if (ctx->flags & IORING_SETUP_SQPOLL) { ret = -EPERM; if (!capable(CAP_SYS_ADMIN)) @@ -7008,6 +7215,9 @@ ctx->sqo_thread = NULL; goto err; } + ret = io_uring_alloc_task_context(ctx->sqo_thread); + if (ret) + goto err; wake_up_process(ctx->sqo_thread); } else if (p->flags & IORING_SETUP_SQ_AFF) { /* Can't have SQ_AFF without SQPOLL */ @@ -7022,8 +7232,6 @@ return 0; err: io_finish_async(ctx); - mmdrop(ctx->sqo_mm); - ctx->sqo_mm = NULL; return ret; } @@ -7086,6 +7294,9 @@ return SIZE_MAX; #endif + if (sq_offset) + *sq_offset = off; + sq_array_size = array_size(sizeof(u32), sq_entries); if (sq_array_size == SIZE_MAX) return SIZE_MAX; @@ -7093,9 +7304,6 @@ if (check_add_overflow(off, sq_array_size, &off)) return SIZE_MAX; - if (sq_offset) - *sq_offset = off; - return off; } @@ -7353,8 +7561,12 @@ static void io_ring_ctx_free(struct io_ring_ctx *ctx) { io_finish_async(ctx); - if (ctx->sqo_mm) - mmdrop(ctx->sqo_mm); + if (ctx->sqo_task) { + put_task_struct(ctx->sqo_task); + ctx->sqo_task = NULL; + mmdrop(ctx->mm_account); + ctx->mm_account = NULL; + } io_iopoll_reap_events(ctx); io_sqe_buffer_unregister(ctx); @@ -7425,7 +7637,7 @@ ctx = container_of(work, struct io_ring_ctx, exit_work); if (ctx->rings) - io_cqring_overflow_flush(ctx, true); + io_cqring_overflow_flush(ctx, true, NULL, NULL); /* * If we're doing polled IO and end up having requests being @@ -7436,27 +7648,36 @@ while (!wait_for_completion_timeout(&ctx->ref_comp, HZ/20)) { io_iopoll_reap_events(ctx); if (ctx->rings) - io_cqring_overflow_flush(ctx, true); + io_cqring_overflow_flush(ctx, true, NULL, NULL); } io_ring_ctx_free(ctx); } +static bool io_cancel_ctx_cb(struct io_wq_work *work, void *data) +{ + struct io_kiocb *req = container_of(work, struct io_kiocb, work); + + return req->ctx == data; +} + static void io_ring_ctx_wait_and_kill(struct io_ring_ctx *ctx) { mutex_lock(&ctx->uring_lock); percpu_ref_kill(&ctx->refs); + /* if force is set, the ring is going away. always drop after that */ + ctx->cq_overflow_flushed = 1; mutex_unlock(&ctx->uring_lock); - io_kill_timeouts(ctx); - io_poll_remove_all(ctx); + io_kill_timeouts(ctx, NULL); + io_poll_remove_all(ctx, NULL); if (ctx->io_wq) - io_wq_cancel_all(ctx->io_wq); + io_wq_cancel_cb(ctx->io_wq, io_cancel_ctx_cb, ctx, true); io_iopoll_reap_events(ctx); /* if we failed setting up the ctx, we might not have any rings */ if (ctx->rings) - io_cqring_overflow_flush(ctx, true); + io_cqring_overflow_flush(ctx, true, NULL, NULL); idr_for_each(&ctx->personality_idr, io_remove_personalities, ctx); /* @@ -7485,15 +7706,165 @@ { struct files_struct *files = data; - return work->files == files; + return !files || work->files == files; +} + +/* + * Returns true if 'preq' is the link parent of 'req' + */ +static bool io_match_link(struct io_kiocb *preq, struct io_kiocb *req) +{ + struct io_kiocb *link; + + if (!(preq->flags & REQ_F_LINK_HEAD)) + return false; + + list_for_each_entry(link, &preq->link_list, link_list) { + if (link == req) + return true; + } + + return false; +} + +static bool io_match_link_files(struct io_kiocb *req, + struct files_struct *files) +{ + struct io_kiocb *link; + + if (io_match_files(req, files)) + return true; + if (req->flags & REQ_F_LINK_HEAD) { + list_for_each_entry(link, &req->link_list, link_list) { + if (io_match_files(link, files)) + return true; + } + } + return false; +} + +/* + * We're looking to cancel 'req' because it's holding on to our files, but + * 'req' could be a link to another request. See if it is, and cancel that + * parent request if so. + */ +static bool io_poll_remove_link(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + struct hlist_node *tmp; + struct io_kiocb *preq; + bool found = false; + int i; + + spin_lock_irq(&ctx->completion_lock); + for (i = 0; i < (1U << ctx->cancel_hash_bits); i++) { + struct hlist_head *list; + + list = &ctx->cancel_hash[i]; + hlist_for_each_entry_safe(preq, tmp, list, hash_node) { + found = io_match_link(preq, req); + if (found) { + io_poll_remove_one(preq); + break; + } + } + } + spin_unlock_irq(&ctx->completion_lock); + return found; +} + +static bool io_timeout_remove_link(struct io_ring_ctx *ctx, + struct io_kiocb *req) +{ + struct io_kiocb *preq; + bool found = false; + + spin_lock_irq(&ctx->completion_lock); + list_for_each_entry(preq, &ctx->timeout_list, list) { + found = io_match_link(preq, req); + if (found) { + __io_timeout_cancel(preq); + break; + } + } + spin_unlock_irq(&ctx->completion_lock); + return found; +} + +static bool io_cancel_link_cb(struct io_wq_work *work, void *data) +{ + struct io_kiocb *req = container_of(work, struct io_kiocb, work); + bool ret; + + if (req->flags & REQ_F_LINK_TIMEOUT) { + unsigned long flags; + struct io_ring_ctx *ctx = req->ctx; + + /* protect against races with linked timeouts */ + spin_lock_irqsave(&ctx->completion_lock, flags); + ret = io_match_link(req, data); + spin_unlock_irqrestore(&ctx->completion_lock, flags); + } else { + ret = io_match_link(req, data); + } + return ret; +} + +static void io_attempt_cancel(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + enum io_wq_cancel cret; + + /* cancel this particular work, if it's running */ + cret = io_wq_cancel_work(ctx->io_wq, &req->work); + if (cret != IO_WQ_CANCEL_NOTFOUND) + return; + + /* find links that hold this pending, cancel those */ + cret = io_wq_cancel_cb(ctx->io_wq, io_cancel_link_cb, req, true); + if (cret != IO_WQ_CANCEL_NOTFOUND) + return; + + /* if we have a poll link holding this pending, cancel that */ + if (io_poll_remove_link(ctx, req)) + return; + + /* final option, timeout link is holding this req pending */ + io_timeout_remove_link(ctx, req); } -static void io_uring_cancel_files(struct io_ring_ctx *ctx, +static void io_cancel_defer_files(struct io_ring_ctx *ctx, + struct files_struct *files) +{ + struct io_kiocb *req = NULL; + LIST_HEAD(list); + + spin_lock_irq(&ctx->completion_lock); + list_for_each_entry_reverse(req, &ctx->defer_list, list) { + if (io_match_link_files(req, files)) { + list_cut_position(&list, &ctx->defer_list, &req->list); + break; + } + } + spin_unlock_irq(&ctx->completion_lock); + + while (!list_empty(&list)) { + req = list_first_entry(&list, struct io_kiocb, list); + list_del_init(&req->list); + req_set_fail_links(req); + io_cqring_add_event(req, -ECANCELED); + io_double_put_req(req); + } +} + +/* + * Returns true if we found and killed one or more files pinning requests + */ +static bool io_uring_cancel_files(struct io_ring_ctx *ctx, struct files_struct *files) { if (list_empty_careful(&ctx->inflight_list)) - return; + return false; + io_cancel_defer_files(ctx, files); /* cancel all at once, should be faster than doing it one by one*/ io_wq_cancel_cb(ctx->io_wq, io_wq_files_match, files, true); @@ -7503,7 +7874,7 @@ spin_lock_irq(&ctx->inflight_lock); list_for_each_entry(req, &ctx->inflight_list, inflight_entry) { - if (req->work.files != files) + if (files && req->work.files != files) continue; /* req is being completed, ignore */ if (!refcount_inc_not_zero(&req->refs)) @@ -7529,10 +7900,10 @@ clear_bit(0, &ctx->cq_check_overflow); ctx->rings->sq_flags &= ~IORING_SQ_CQ_OVERFLOW; } - spin_unlock_irq(&ctx->completion_lock); - WRITE_ONCE(ctx->rings->cq_overflow, atomic_inc_return(&ctx->cached_cq_overflow)); + io_commit_cqring(ctx); + spin_unlock_irq(&ctx->completion_lock); /* * Put inflight ref and overflow ref. If that's @@ -7544,13 +7915,18 @@ continue; } } else { - io_wq_cancel_work(ctx->io_wq, &cancel_req->work); + /* cancel this request, or head link requests */ + io_attempt_cancel(ctx, cancel_req); io_put_req(cancel_req); } + /* cancellations _may_ trigger task work */ + io_run_task_work(); schedule(); finish_wait(&ctx->inflight_wait, &wait); } + + return true; } static bool io_cancel_task_cb(struct io_wq_work *work, void *data) @@ -7558,21 +7934,202 @@ struct io_kiocb *req = container_of(work, struct io_kiocb, work); struct task_struct *task = data; - return req->task == task; + return io_task_match(req, task); +} + +static bool __io_uring_cancel_task_requests(struct io_ring_ctx *ctx, + struct task_struct *task, + struct files_struct *files) +{ + bool ret; + + ret = io_uring_cancel_files(ctx, files); + if (!files) { + enum io_wq_cancel cret; + + cret = io_wq_cancel_cb(ctx->io_wq, io_cancel_task_cb, task, true); + if (cret != IO_WQ_CANCEL_NOTFOUND) + ret = true; + + /* SQPOLL thread does its own polling */ + if (!(ctx->flags & IORING_SETUP_SQPOLL)) { + if (!list_empty_careful(&ctx->poll_list)) { + io_iopoll_reap_events(ctx); + ret = true; + } + } + + ret |= io_poll_remove_all(ctx, task); + ret |= io_kill_timeouts(ctx, task); + } + + return ret; +} + +/* + * We need to iteratively cancel requests, in case a request has dependent + * hard links. These persist even for failure of cancelations, hence keep + * looping until none are found. + */ +static void io_uring_cancel_task_requests(struct io_ring_ctx *ctx, + struct files_struct *files) +{ + struct task_struct *task = current; + + if (ctx->flags & IORING_SETUP_SQPOLL) + task = ctx->sqo_thread; + + io_cqring_overflow_flush(ctx, true, task, files); + + while (__io_uring_cancel_task_requests(ctx, task, files)) { + io_run_task_work(); + cond_resched(); + } +} + +/* + * Note that this task has used io_uring. We use it for cancelation purposes. + */ +static int io_uring_add_task_file(struct file *file) +{ + struct io_uring_task *tctx = current->io_uring; + int ret; + + if (unlikely(!tctx)) { + ret = io_uring_alloc_task_context(current); + if (unlikely(ret)) + return ret; + tctx = current->io_uring; + } + if (tctx->last != file) { + void *old = xa_load(&tctx->xa, (unsigned long)file); + + if (!old) { + get_file(file); + ret = xa_err(xa_store(&tctx->xa, (unsigned long)file, + file, GFP_KERNEL)); + if (ret) { + fput(file); + return ret; + } + } + tctx->last = file; + } + + return 0; +} + +/* + * Remove this io_uring_file -> task mapping. + */ +static void io_uring_del_task_file(struct file *file) +{ + struct io_uring_task *tctx = current->io_uring; + + if (tctx->last == file) + tctx->last = NULL; + file = xa_erase(&tctx->xa, (unsigned long)file); + if (file) + fput(file); +} + +static void __io_uring_attempt_task_drop(struct file *file) +{ + struct file *old = xa_load(¤t->io_uring->xa, (unsigned long)file); + + if (old == file) + io_uring_del_task_file(file); +} + +/* + * Drop task note for this file if we're the only ones that hold it after + * pending fput() + */ +static void io_uring_attempt_task_drop(struct file *file, bool exiting) +{ + if (!current->io_uring) + return; + /* + * fput() is pending, will be 2 if the only other ref is our potential + * task file note. If the task is exiting, drop regardless of count. + */ + if (!exiting && atomic_long_read(&file->f_count) != 2) + return; + + __io_uring_attempt_task_drop(file); +} + +void __io_uring_files_cancel(struct files_struct *files) +{ + struct io_uring_task *tctx = current->io_uring; + struct file *file; + unsigned long index; + + /* make sure overflow events are dropped */ + tctx->in_idle = true; + + xa_for_each(&tctx->xa, index, file) { + struct io_ring_ctx *ctx = file->private_data; + + io_uring_cancel_task_requests(ctx, files); + if (files) + io_uring_del_task_file(file); + } +} + +static inline bool io_uring_task_idle(struct io_uring_task *tctx) +{ + return atomic_long_read(&tctx->req_issue) == + atomic_long_read(&tctx->req_complete); +} + +/* + * Find any io_uring fd that this task has registered or done IO on, and cancel + * requests. + */ +void __io_uring_task_cancel(void) +{ + struct io_uring_task *tctx = current->io_uring; + DEFINE_WAIT(wait); + long completions; + + /* make sure overflow events are dropped */ + tctx->in_idle = true; + + while (!io_uring_task_idle(tctx)) { + /* read completions before cancelations */ + completions = atomic_long_read(&tctx->req_complete); + __io_uring_files_cancel(NULL); + + prepare_to_wait(&tctx->wait, &wait, TASK_UNINTERRUPTIBLE); + + /* + * If we've seen completions, retry. This avoids a race where + * a completion comes in before we did prepare_to_wait(). + */ + if (completions != atomic_long_read(&tctx->req_complete)) + continue; + if (io_uring_task_idle(tctx)) + break; + schedule(); + } + + finish_wait(&tctx->wait, &wait); + tctx->in_idle = false; } static int io_uring_flush(struct file *file, void *data) { struct io_ring_ctx *ctx = file->private_data; - io_uring_cancel_files(ctx, data); - /* * If the task is going away, cancel work it may have pending */ if (fatal_signal_pending(current) || (current->flags & PF_EXITING)) - io_wq_cancel_cb(ctx->io_wq, io_cancel_task_cb, current, true); + data = NULL; + io_uring_cancel_task_requests(ctx, data); + io_uring_attempt_task_drop(file, !data); return 0; } @@ -7655,8 +8212,7 @@ int submitted = 0; struct fd f; - if (current->task_works) - task_work_run(); + io_run_task_work(); if (flags & ~(IORING_ENTER_GETEVENTS | IORING_ENTER_SQ_WAKEUP)) return -EINVAL; @@ -7682,13 +8238,16 @@ ret = 0; if (ctx->flags & IORING_SETUP_SQPOLL) { if (!list_empty_careful(&ctx->cq_overflow_list)) - io_cqring_overflow_flush(ctx, false); + io_cqring_overflow_flush(ctx, false, NULL, NULL); if (flags & IORING_ENTER_SQ_WAKEUP) wake_up(&ctx->sqo_wait); submitted = to_submit; } else if (to_submit) { + ret = io_uring_add_task_file(f.file); + if (unlikely(ret)) + goto out; mutex_lock(&ctx->uring_lock); - submitted = io_submit_sqes(ctx, to_submit, f.file, fd); + submitted = io_submit_sqes(ctx, to_submit); mutex_unlock(&ctx->uring_lock); if (submitted != to_submit) @@ -7756,11 +8315,19 @@ static void __io_uring_show_fdinfo(struct io_ring_ctx *ctx, struct seq_file *m) { + bool has_lock; int i; - mutex_lock(&ctx->uring_lock); + /* + * Avoid ABBA deadlock between the seq lock and the io_uring mutex, + * since fdinfo case grabs it in the opposite direction of normal use + * cases. If we fail to get the lock, we just don't iterate any + * structures that could be going away outside the io_uring mutex. + */ + has_lock = mutex_trylock(&ctx->uring_lock); + seq_printf(m, "UserFiles:\t%u\n", ctx->nr_user_files); - for (i = 0; i < ctx->nr_user_files; i++) { + for (i = 0; has_lock && i < ctx->nr_user_files; i++) { struct fixed_file_table *table; struct file *f; @@ -7772,13 +8339,13 @@ seq_printf(m, "%5u: \n", i); } seq_printf(m, "UserBufs:\t%u\n", ctx->nr_user_bufs); - for (i = 0; i < ctx->nr_user_bufs; i++) { + for (i = 0; has_lock && i < ctx->nr_user_bufs; i++) { struct io_mapped_ubuf *buf = &ctx->user_bufs[i]; seq_printf(m, "%5u: 0x%llx/%u\n", i, buf->ubuf, (unsigned int) buf->len); } - if (!idr_is_empty(&ctx->personality_idr)) { + if (has_lock && !idr_is_empty(&ctx->personality_idr)) { seq_printf(m, "Personalities:\n"); idr_for_each(&ctx->personality_idr, io_uring_show_cred, m); } @@ -7793,7 +8360,8 @@ req->task->task_works != NULL); } spin_unlock_irq(&ctx->completion_lock); - mutex_unlock(&ctx->uring_lock); + if (has_lock) + mutex_unlock(&ctx->uring_lock); } static void io_uring_show_fdinfo(struct seq_file *m, struct file *f) @@ -7828,6 +8396,10 @@ struct io_rings *rings; size_t size, sq_array_offset; + /* make sure these are sane, as we already accounted them */ + ctx->sq_entries = p->sq_entries; + ctx->cq_entries = p->cq_entries; + size = rings_size(p->sq_entries, p->cq_entries, &sq_array_offset); if (size == SIZE_MAX) return -EOVERFLOW; @@ -7844,8 +8416,6 @@ rings->cq_ring_entries = p->cq_entries; ctx->sq_mask = rings->sq_ring_mask; ctx->cq_mask = rings->cq_ring_mask; - ctx->sq_entries = rings->sq_ring_entries; - ctx->cq_entries = rings->cq_ring_entries; size = array_size(sizeof(struct io_uring_sqe), p->sq_entries); if (size == SIZE_MAX) { @@ -7889,6 +8459,7 @@ file = anon_inode_getfile("[io_uring]", &io_uring_fops, ctx, O_RDWR | O_CLOEXEC); if (IS_ERR(file)) { +err_fd: put_unused_fd(ret); ret = PTR_ERR(file); goto err; @@ -7897,6 +8468,10 @@ #if defined(CONFIG_UNIX) ctx->ring_sock->file = file; #endif + if (unlikely(io_uring_add_task_file(file))) { + file = ERR_PTR(-ENOMEM); + goto err_fd; + } fd_install(ret, file); return ret; err: @@ -7938,7 +8513,7 @@ * to a power-of-two, if it isn't already. We do NOT impose * any cq vs sq ring sizing. */ - if (p->cq_entries < p->sq_entries) + if (!p->cq_entries) return -EINVAL; if (p->cq_entries > IORING_MAX_CQ_ENTRIES) { if (!(p->flags & IORING_SETUP_CLAMP)) @@ -7946,6 +8521,8 @@ p->cq_entries = IORING_MAX_CQ_ENTRIES; } p->cq_entries = roundup_pow_of_two(p->cq_entries); + if (p->cq_entries < p->sq_entries) + return -EINVAL; } else { p->cq_entries = 2 * p->sq_entries; } @@ -7975,6 +8552,16 @@ ctx->user = user; ctx->creds = get_current_cred(); + ctx->sqo_task = get_task_struct(current); + /* + * This is just grabbed for accounting purposes. When a process exits, + * the mm is exited and dropped before the files, hence we need to hang + * on to this mm purely for the purposes of being able to unaccount + * memory (locked/pinned vm). It's not used for anything else. + */ + mmgrab(current->mm); + ctx->mm_account = current->mm; + ret = io_allocate_scq_urings(ctx, p); if (ret) goto err; --- linux-5.8.0.orig/fs/iomap/buffered-io.c +++ linux-5.8.0/fs/iomap/buffered-io.c @@ -49,16 +49,8 @@ if (iop || i_blocksize(inode) == PAGE_SIZE) return iop; - iop = kmalloc(sizeof(*iop), GFP_NOFS | __GFP_NOFAIL); - atomic_set(&iop->read_count, 0); - atomic_set(&iop->write_count, 0); + iop = kzalloc(sizeof(*iop), GFP_NOFS | __GFP_NOFAIL); spin_lock_init(&iop->uptodate_lock); - bitmap_zero(iop->uptodate, PAGE_SIZE / SECTOR_SIZE); - - /* - * migrate_page_move_mapping() assumes that pages with private data have - * their count elevated by 1. - */ attach_page_private(page, iop); return iop; } @@ -574,10 +566,10 @@ loff_t block_start = pos & ~(block_size - 1); loff_t block_end = (pos + len + block_size - 1) & ~(block_size - 1); unsigned from = offset_in_page(pos), to = from + len, poff, plen; - int status; if (PageUptodate(page)) return 0; + ClearPageError(page); do { iomap_adjust_read_range(inode, iop, &block_start, @@ -594,14 +586,13 @@ if (WARN_ON_ONCE(flags & IOMAP_WRITE_F_UNSHARE)) return -EIO; zero_user_segments(page, poff, from, to, poff + plen); - iomap_set_range_uptodate(page, poff, plen); - continue; + } else { + int status = iomap_read_page_sync(block_start, page, + poff, plen, srcmap); + if (status) + return status; } - - status = iomap_read_page_sync(block_start, page, poff, plen, - srcmap); - if (status) - return status; + iomap_set_range_uptodate(page, poff, plen); } while ((block_start += plen) < block_end); return 0; @@ -1404,6 +1395,7 @@ WARN_ON_ONCE(!wpc->ioend && !list_empty(&submit_list)); WARN_ON_ONCE(!PageLocked(page)); WARN_ON_ONCE(PageWriteback(page)); + WARN_ON_ONCE(PageDirty(page)); /* * We cannot cancel the ioend directly here on error. We may have @@ -1424,21 +1416,9 @@ unlock_page(page); goto done; } - - /* - * If the page was not fully cleaned, we need to ensure that the - * higher layers come back to it correctly. That means we need - * to keep the page dirty, and for WB_SYNC_ALL writeback we need - * to ensure the PAGECACHE_TAG_TOWRITE index mark is not removed - * so another attempt to write this page in this writeback sweep - * will be made. - */ - set_page_writeback_keepwrite(page); - } else { - clear_page_dirty_for_io(page); - set_page_writeback(page); } + set_page_writeback(page); unlock_page(page); /* --- linux-5.8.0.orig/fs/iomap/direct-io.c +++ linux-5.8.0/fs/iomap/direct-io.c @@ -387,6 +387,16 @@ return iomap_dio_bio_actor(inode, pos, length, dio, iomap); case IOMAP_INLINE: return iomap_dio_inline_actor(inode, pos, length, dio, iomap); + case IOMAP_DELALLOC: + /* + * DIO is not serialised against mmap() access at all, and so + * if the page_mkwrite occurs between the writeback and the + * iomap_apply() call in the DIO path, then it will see the + * DELALLOC block that the page-mkwrite allocated. + */ + pr_warn_ratelimited("Direct I/O collision with buffered writes! File: %pD4 Comm: %.20s\n", + dio->iocb->ki_filp, current->comm); + return -EIO; default: WARN_ON_ONCE(1); return -EIO; --- linux-5.8.0.orig/fs/iomap/swapfile.c +++ linux-5.8.0/fs/iomap/swapfile.c @@ -170,6 +170,16 @@ return ret; } + /* + * If this swapfile doesn't contain even a single page-aligned + * contiguous range of blocks, reject this useless swapfile to + * prevent confusion later on. + */ + if (isi.nr_pages == 0) { + pr_warn("swapon: Cannot find a single usable page in file.\n"); + return -EINVAL; + } + *pagespan = 1 + isi.highest_ppage - isi.lowest_ppage; sis->max = isi.nr_pages; sis->pages = isi.nr_pages - 1; --- linux-5.8.0.orig/fs/isofs/dir.c +++ linux-5.8.0/fs/isofs/dir.c @@ -152,6 +152,7 @@ printk(KERN_NOTICE "iso9660: Corrupted directory entry" " in block %lu of inode %lu\n", block, inode->i_ino); + brelse(bh); return -EIO; } --- linux-5.8.0.orig/fs/isofs/namei.c +++ linux-5.8.0/fs/isofs/namei.c @@ -102,6 +102,7 @@ printk(KERN_NOTICE "iso9660: Corrupted directory entry" " in block %lu of inode %lu\n", block, dir->i_ino); + brelse(bh); return 0; } --- linux-5.8.0.orig/fs/jbd2/checkpoint.c +++ linux-5.8.0/fs/jbd2/checkpoint.c @@ -106,6 +106,8 @@ * for a checkpoint to free up some space in the log. */ void __jbd2_log_wait_for_space(journal_t *journal) +__acquires(&journal->j_state_lock) +__releases(&journal->j_state_lock) { int nblocks, space_left; /* assert_spin_locked(&journal->j_state_lock); */ --- linux-5.8.0.orig/fs/jbd2/journal.c +++ linux-5.8.0/fs/jbd2/journal.c @@ -1367,8 +1367,10 @@ int ret; /* Buffer got discarded which means block device got invalidated */ - if (!buffer_mapped(bh)) + if (!buffer_mapped(bh)) { + unlock_buffer(bh); return -EIO; + } trace_jbd2_write_superblock(journal, write_flags); if (!(journal->j_flags & JBD2_BARRIER)) --- linux-5.8.0.orig/fs/jbd2/recovery.c +++ linux-5.8.0/fs/jbd2/recovery.c @@ -428,6 +428,8 @@ __u32 crc32_sum = ~0; /* Transactional Checksums */ int descr_csum_size = 0; int block_error = 0; + bool need_check_commit_time = false; + __u64 last_trans_commit_time = 0, commit_time; /* * First thing is to establish what we expect to find in the log @@ -520,12 +522,21 @@ if (descr_csum_size > 0 && !jbd2_descriptor_block_csum_verify(journal, bh->b_data)) { - printk(KERN_ERR "JBD2: Invalid checksum " - "recovering block %lu in log\n", - next_log_block); - err = -EFSBADCRC; - brelse(bh); - goto failed; + /* + * PASS_SCAN can see stale blocks due to lazy + * journal init. Don't error out on those yet. + */ + if (pass != PASS_SCAN) { + pr_err("JBD2: Invalid checksum recovering block %lu in log\n", + next_log_block); + err = -EFSBADCRC; + brelse(bh); + goto failed; + } + need_check_commit_time = true; + jbd_debug(1, + "invalid descriptor block found in %lu\n", + next_log_block); } /* If it is a valid descriptor block, replay it @@ -535,6 +546,7 @@ if (pass != PASS_REPLAY) { if (pass == PASS_SCAN && jbd2_has_feature_checksum(journal) && + !need_check_commit_time && !info->end_transaction) { if (calc_chksums(journal, bh, &next_log_block, @@ -683,11 +695,41 @@ * mentioned conditions. Hence assume * "Interrupted Commit".) */ + commit_time = be64_to_cpu( + ((struct commit_header *)bh->b_data)->h_commit_sec); + /* + * If need_check_commit_time is set, it means we are in + * PASS_SCAN and csum verify failed before. If + * commit_time is increasing, it's the same journal, + * otherwise it is stale journal block, just end this + * recovery. + */ + if (need_check_commit_time) { + if (commit_time >= last_trans_commit_time) { + pr_err("JBD2: Invalid checksum found in transaction %u\n", + next_commit_ID); + err = -EFSBADCRC; + brelse(bh); + goto failed; + } + ignore_crc_mismatch: + /* + * It likely does not belong to same journal, + * just end this recovery with success. + */ + jbd_debug(1, "JBD2: Invalid checksum ignored in transaction %u, likely stale data\n", + next_commit_ID); + err = 0; + brelse(bh); + goto done; + } - /* Found an expected commit block: if checksums - * are present verify them in PASS_SCAN; else not + /* + * Found an expected commit block: if checksums + * are present, verify them in PASS_SCAN; else not * much to do other than move on to the next sequence - * number. */ + * number. + */ if (pass == PASS_SCAN && jbd2_has_feature_checksum(journal)) { int chksum_err, chksum_seen; @@ -727,6 +769,8 @@ chksum_err = 1; if (chksum_err) { + if (commit_time < last_trans_commit_time) + goto ignore_crc_mismatch; info->end_transaction = next_commit_ID; if (!jbd2_has_feature_async_commit(journal)) { @@ -750,11 +794,24 @@ break; } } + if (pass == PASS_SCAN) + last_trans_commit_time = commit_time; brelse(bh); next_commit_ID++; continue; case JBD2_REVOKE_BLOCK: + /* + * Check revoke block crc in pass_scan, if csum verify + * failed, check commit block time later. + */ + if (pass == PASS_SCAN && + !jbd2_descriptor_block_csum_verify(journal, + bh->b_data)) { + jbd_debug(1, "JBD2: invalid revoke block found in %lu\n", + next_log_block); + need_check_commit_time = true; + } /* If we aren't in the REVOKE pass, then we can * just skip over this block. */ if (pass != PASS_REVOKE) { @@ -822,9 +879,6 @@ offset = sizeof(jbd2_journal_revoke_header_t); rcount = be32_to_cpu(header->r_count); - if (!jbd2_descriptor_block_csum_verify(journal, header)) - return -EFSBADCRC; - if (jbd2_journal_has_csum_v2or3(journal)) csum_size = sizeof(struct jbd2_journal_block_tail); if (rcount > journal->j_blocksize - csum_size) --- linux-5.8.0.orig/fs/jbd2/transaction.c +++ linux-5.8.0/fs/jbd2/transaction.c @@ -195,8 +195,10 @@ DEFINE_WAIT(wait); if (WARN_ON(!journal->j_running_transaction || - journal->j_running_transaction->t_state != T_SWITCH)) + journal->j_running_transaction->t_state != T_SWITCH)) { + read_unlock(&journal->j_state_lock); return; + } prepare_to_wait(&journal->j_wait_transaction_locked, &wait, TASK_UNINTERRUPTIBLE); read_unlock(&journal->j_state_lock); @@ -2026,6 +2028,9 @@ */ static void __jbd2_journal_unfile_buffer(struct journal_head *jh) { + J_ASSERT_JH(jh, jh->b_transaction != NULL); + J_ASSERT_JH(jh, jh->b_next_transaction == NULL); + __jbd2_journal_temp_unlink_buffer(jh); jh->b_transaction = NULL; } @@ -2117,6 +2122,7 @@ { struct buffer_head *head; struct buffer_head *bh; + bool has_write_io_error = false; int ret = 0; J_ASSERT(PageLocked(page)); @@ -2141,11 +2147,26 @@ jbd2_journal_put_journal_head(jh); if (buffer_jbd(bh)) goto busy; + + /* + * If we free a metadata buffer which has been failed to + * write out, the jbd2 checkpoint procedure will not detect + * this failure and may lead to filesystem inconsistency + * after cleanup journal tail. + */ + if (buffer_write_io_error(bh)) { + pr_err("JBD2: Error while async write back metadata bh %llu.", + (unsigned long long)bh->b_blocknr); + has_write_io_error = true; + } } while ((bh = bh->b_this_page) != head); ret = try_to_free_buffers(page); busy: + if (has_write_io_error) + jbd2_journal_abort(journal, -EIO); + return ret; } @@ -2572,6 +2593,13 @@ was_dirty = test_clear_buffer_jbddirty(bh); __jbd2_journal_temp_unlink_buffer(jh); + + /* + * b_transaction must be set, otherwise the new b_transaction won't + * be holding jh reference + */ + J_ASSERT_JH(jh, jh->b_transaction != NULL); + /* * We set b_transaction here because b_next_transaction will inherit * our jh reference and thus __jbd2_journal_file_buffer() must not --- linux-5.8.0.orig/fs/jffs2/dir.c +++ linux-5.8.0/fs/jffs2/dir.c @@ -590,10 +590,14 @@ int ret; uint32_t now = JFFS2_NOW(); + mutex_lock(&f->sem); for (fd = f->dents ; fd; fd = fd->next) { - if (fd->ino) + if (fd->ino) { + mutex_unlock(&f->sem); return -ENOTEMPTY; + } } + mutex_unlock(&f->sem); ret = jffs2_do_unlink(c, dir_f, dentry->d_name.name, dentry->d_name.len, f, now); --- linux-5.8.0.orig/fs/jffs2/jffs2_fs_sb.h +++ linux-5.8.0/fs/jffs2/jffs2_fs_sb.h @@ -38,6 +38,7 @@ * users. This is implemented simply by means of not allowing the * latter users to write to the file system if the amount if the * available space is less then 'rp_size'. */ + bool set_rp_size; unsigned int rp_size; }; --- linux-5.8.0.orig/fs/jffs2/readinode.c +++ linux-5.8.0/fs/jffs2/readinode.c @@ -672,6 +672,22 @@ jffs2_free_full_dirent(fd); return -EIO; } + +#ifdef CONFIG_JFFS2_SUMMARY + /* + * we use CONFIG_JFFS2_SUMMARY because without it, we + * have checked it while mounting + */ + crc = crc32(0, fd->name, rd->nsize); + if (unlikely(crc != je32_to_cpu(rd->name_crc))) { + JFFS2_NOTICE("name CRC failed on dirent node at" + "%#08x: read %#08x,calculated %#08x\n", + ref_offset(ref), je32_to_cpu(rd->node_crc), crc); + jffs2_mark_node_obsolete(c, ref); + jffs2_free_full_dirent(fd); + return 0; + } +#endif } fd->nhash = full_name_hash(NULL, fd->name, rd->nsize); --- linux-5.8.0.orig/fs/jffs2/summary.c +++ linux-5.8.0/fs/jffs2/summary.c @@ -783,6 +783,8 @@ dbg_summary("Writing unknown RWCOMPAT_COPY node type %x\n", je16_to_cpu(temp->u.nodetype)); jffs2_sum_disable_collecting(c->summary); + /* The above call removes the list, nothing more to do */ + goto bail_rwcompat; } else { BUG(); /* unknown node in summary information */ } @@ -794,6 +796,7 @@ c->summary->sum_num--; } + bail_rwcompat: jffs2_sum_reset_collected(c->summary); --- linux-5.8.0.orig/fs/jffs2/super.c +++ linux-5.8.0/fs/jffs2/super.c @@ -88,7 +88,7 @@ if (opts->override_compr) seq_printf(s, ",compr=%s", jffs2_compr_name(opts->compr)); - if (opts->rp_size) + if (opts->set_rp_size) seq_printf(s, ",rp_size=%u", opts->rp_size / 1024); return 0; @@ -202,11 +202,8 @@ case Opt_rp_size: if (result.uint_32 > UINT_MAX / 1024) return invalf(fc, "jffs2: rp_size unrepresentable"); - opt = result.uint_32 * 1024; - if (opt > c->mtd->size) - return invalf(fc, "jffs2: Too large reserve pool specified, max is %llu KB", - c->mtd->size / 1024); - c->mount_opts.rp_size = opt; + c->mount_opts.rp_size = result.uint_32 * 1024; + c->mount_opts.set_rp_size = true; break; default: return -EINVAL; @@ -215,11 +212,30 @@ return 0; } +static inline void jffs2_update_mount_opts(struct fs_context *fc) +{ + struct jffs2_sb_info *new_c = fc->s_fs_info; + struct jffs2_sb_info *c = JFFS2_SB_INFO(fc->root->d_sb); + + mutex_lock(&c->alloc_sem); + if (new_c->mount_opts.override_compr) { + c->mount_opts.override_compr = new_c->mount_opts.override_compr; + c->mount_opts.compr = new_c->mount_opts.compr; + } + if (new_c->mount_opts.set_rp_size) { + c->mount_opts.set_rp_size = new_c->mount_opts.set_rp_size; + c->mount_opts.rp_size = new_c->mount_opts.rp_size; + } + mutex_unlock(&c->alloc_sem); +} + static int jffs2_reconfigure(struct fs_context *fc) { struct super_block *sb = fc->root->d_sb; sync_filesystem(sb); + jffs2_update_mount_opts(fc); + return jffs2_do_remount_fs(sb, fc); } @@ -249,6 +265,10 @@ c->mtd = sb->s_mtd; c->os_priv = sb; + if (c->mount_opts.rp_size > c->mtd->size) + return invalf(fc, "jffs2: Too large reserve pool specified, max is %llu KB", + c->mtd->size / 1024); + /* Initialize JFFS2 superblock locks, the further initialization will * be done later */ mutex_init(&c->alloc_sem); --- linux-5.8.0.orig/fs/jfs/jfs_dmap.c +++ linux-5.8.0/fs/jfs/jfs_dmap.c @@ -1656,7 +1656,7 @@ } else if (rc == -ENOSPC) { /* search for next smaller log2 block */ l2nb = BLKSTOL2(nblocks) - 1; - nblocks = 1 << l2nb; + nblocks = 1LL << l2nb; } else { /* Trim any already allocated blocks */ jfs_error(bmp->db_ipbmap->i_sb, "-EIO\n"); --- linux-5.8.0.orig/fs/jfs/jfs_dmap.h +++ linux-5.8.0/fs/jfs/jfs_dmap.h @@ -183,7 +183,7 @@ #define dmt_leafidx t1.leafidx #define dmt_height t1.height #define dmt_budmin t1.budmin -#define dmt_stree t1.stree +#define dmt_stree t2.stree /* * on-disk aggregate disk allocation map descriptor. --- linux-5.8.0.orig/fs/jfs/jfs_filsys.h +++ linux-5.8.0/fs/jfs/jfs_filsys.h @@ -268,5 +268,6 @@ * fsck() must be run to repair */ #define FM_EXTENDFS 0x00000008 /* file system extendfs() in progress */ +#define FM_STATE_MAX 0x0000000f /* max value of s_state */ #endif /* _H_JFS_FILSYS */ --- linux-5.8.0.orig/fs/jfs/jfs_mount.c +++ linux-5.8.0/fs/jfs/jfs_mount.c @@ -36,6 +36,7 @@ #include #include +#include #include "jfs_incore.h" #include "jfs_filsys.h" @@ -365,6 +366,15 @@ sbi->bsize = bsize; sbi->l2bsize = le16_to_cpu(j_sb->s_l2bsize); + /* check some fields for possible corruption */ + if (sbi->l2bsize != ilog2((u32)bsize) || + j_sb->pad != 0 || + le32_to_cpu(j_sb->s_state) > FM_STATE_MAX) { + rc = -EINVAL; + jfs_err("jfs_mount: Mount Failure: superblock is corrupt!"); + goto out; + } + /* * For now, ignore s_pbsize, l2bfactor. All I/O going through buffer * cache. --- linux-5.8.0.orig/fs/kernfs/file.c +++ linux-5.8.0/fs/kernfs/file.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "kernfs-internal.h" @@ -180,11 +181,10 @@ * it difficult to use seq_file. Implement simplistic custom buffering for * bin files. */ -static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of, - char __user *user_buf, size_t count, - loff_t *ppos) +static ssize_t kernfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) { - ssize_t len = min_t(size_t, count, PAGE_SIZE); + struct kernfs_open_file *of = kernfs_of(iocb->ki_filp); + ssize_t len = min_t(size_t, iov_iter_count(iter), PAGE_SIZE); const struct kernfs_ops *ops; char *buf; @@ -210,7 +210,7 @@ of->event = atomic_read(&of->kn->attr.open->event); ops = kernfs_ops(of->kn); if (ops->read) - len = ops->read(of, buf, len, *ppos); + len = ops->read(of, buf, len, iocb->ki_pos); else len = -EINVAL; @@ -220,12 +220,12 @@ if (len < 0) goto out_free; - if (copy_to_user(user_buf, buf, len)) { + if (copy_to_iter(buf, len, iter) != len) { len = -EFAULT; goto out_free; } - *ppos += len; + iocb->ki_pos += len; out_free: if (buf == of->prealloc_buf) @@ -235,31 +235,14 @@ return len; } -/** - * kernfs_fop_read - kernfs vfs read callback - * @file: file pointer - * @user_buf: data to write - * @count: number of bytes - * @ppos: starting offset - */ -static ssize_t kernfs_fop_read(struct file *file, char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t kernfs_fop_read_iter(struct kiocb *iocb, struct iov_iter *iter) { - struct kernfs_open_file *of = kernfs_of(file); - - if (of->kn->flags & KERNFS_HAS_SEQ_SHOW) - return seq_read(file, user_buf, count, ppos); - else - return kernfs_file_direct_read(of, user_buf, count, ppos); + if (kernfs_of(iocb->ki_filp)->kn->flags & KERNFS_HAS_SEQ_SHOW) + return seq_read_iter(iocb, iter); + return kernfs_file_read_iter(iocb, iter); } -/** - * kernfs_fop_write - kernfs vfs write callback - * @file: file pointer - * @user_buf: data to write - * @count: number of bytes - * @ppos: starting offset - * +/* * Copy data in from userland and pass it to the matching kernfs write * operation. * @@ -269,20 +252,18 @@ * modify only the the value you're changing, then write entire buffer * back. */ -static ssize_t kernfs_fop_write(struct file *file, const char __user *user_buf, - size_t count, loff_t *ppos) +static ssize_t kernfs_fop_write_iter(struct kiocb *iocb, struct iov_iter *iter) { - struct kernfs_open_file *of = kernfs_of(file); + struct kernfs_open_file *of = kernfs_of(iocb->ki_filp); + ssize_t len = iov_iter_count(iter); const struct kernfs_ops *ops; - ssize_t len; char *buf; if (of->atomic_write_len) { - len = count; if (len > of->atomic_write_len) return -E2BIG; } else { - len = min_t(size_t, count, PAGE_SIZE); + len = min_t(size_t, len, PAGE_SIZE); } buf = of->prealloc_buf; @@ -293,7 +274,7 @@ if (!buf) return -ENOMEM; - if (copy_from_user(buf, user_buf, len)) { + if (copy_from_iter(buf, len, iter) != len) { len = -EFAULT; goto out_free; } @@ -312,7 +293,7 @@ ops = kernfs_ops(of->kn); if (ops->write) - len = ops->write(of, buf, len, *ppos); + len = ops->write(of, buf, len, iocb->ki_pos); else len = -EINVAL; @@ -320,7 +301,7 @@ mutex_unlock(&of->mutex); if (len > 0) - *ppos += len; + iocb->ki_pos += len; out_free: if (buf == of->prealloc_buf) @@ -673,7 +654,7 @@ /* * Write path needs to atomic_write_len outside active reference. - * Cache it in open_file. See kernfs_fop_write() for details. + * Cache it in open_file. See kernfs_fop_write_iter() for details. */ of->atomic_write_len = ops->atomic_write_len; @@ -912,7 +893,7 @@ } fsnotify(inode, FS_MODIFY, inode, FSNOTIFY_EVENT_INODE, - &name, 0); + NULL, 0); iput(inode); } @@ -959,14 +940,16 @@ EXPORT_SYMBOL_GPL(kernfs_notify); const struct file_operations kernfs_file_fops = { - .read = kernfs_fop_read, - .write = kernfs_fop_write, + .read_iter = kernfs_fop_read_iter, + .write_iter = kernfs_fop_write_iter, .llseek = generic_file_llseek, .mmap = kernfs_fop_mmap, .open = kernfs_fop_open, .release = kernfs_fop_release, .poll = kernfs_fop_poll, .fsync = noop_fsync, + .splice_read = generic_file_splice_read, + .splice_write = iter_file_splice_write, }; /** --- linux-5.8.0.orig/fs/libfs.c +++ linux-5.8.0/fs/libfs.c @@ -957,7 +957,7 @@ size_t len, loff_t *ppos) { struct simple_attr *attr; - u64 val; + unsigned long long val; size_t size; ssize_t ret; @@ -975,7 +975,9 @@ goto out; attr->set_buf[size] = '\0'; - val = simple_strtoll(attr->set_buf, NULL, 0); + ret = kstrtoull(attr->set_buf, 0, &val); + if (ret) + goto out; ret = attr->set(attr->data, val); if (ret == 0) ret = len; /* on success, claim we got the whole input */ --- linux-5.8.0.orig/fs/lockd/host.c +++ linux-5.8.0/fs/lockd/host.c @@ -439,12 +439,7 @@ * RPC rebind is required */ if ((clnt = host->h_rpcclnt) != NULL) { - if (time_after_eq(jiffies, host->h_nextrebind)) { - rpc_force_rebind(clnt); - host->h_nextrebind = jiffies + NLM_HOST_REBIND; - dprintk("lockd: next rebind in %lu jiffies\n", - host->h_nextrebind - jiffies); - } + nlm_rebind_host(host); } else { unsigned long increment = nlmsvc_timeout; struct rpc_timeout timeparms = { @@ -494,13 +489,20 @@ return clnt; } -/* - * Force a portmap lookup of the remote lockd port +/** + * nlm_rebind_host - If needed, force a portmap lookup of the peer's lockd port + * @host: NLM host handle for peer + * + * This is not needed when using a connection-oriented protocol, such as TCP. + * The existing autobind mechanism is sufficient to force a rebind when + * required, e.g. on connection state transitions. */ void nlm_rebind_host(struct nlm_host *host) { - dprintk("lockd: rebind host %s\n", host->h_name); + if (host->h_proto != IPPROTO_UDP) + return; + if (host->h_rpcclnt && time_after_eq(jiffies, host->h_nextrebind)) { rpc_force_rebind(host->h_rpcclnt); host->h_nextrebind = jiffies + NLM_HOST_REBIND; --- linux-5.8.0.orig/fs/minix/inode.c +++ linux-5.8.0/fs/minix/inode.c @@ -150,6 +150,25 @@ return 0; } +static bool minix_check_superblock(struct super_block *sb) +{ + struct minix_sb_info *sbi = minix_sb(sb); + + if (sbi->s_imap_blocks == 0 || sbi->s_zmap_blocks == 0) + return false; + + /* + * s_max_size must not exceed the block mapping limitation. This check + * is only needed for V1 filesystems, since V2/V3 support an extra level + * of indirect blocks which places the limit well above U32_MAX. + */ + if (sbi->s_version == MINIX_V1 && + sb->s_maxbytes > (7 + 512 + 512*512) * BLOCK_SIZE) + return false; + + return true; +} + static int minix_fill_super(struct super_block *s, void *data, int silent) { struct buffer_head *bh; @@ -185,7 +204,7 @@ sbi->s_zmap_blocks = ms->s_zmap_blocks; sbi->s_firstdatazone = ms->s_firstdatazone; sbi->s_log_zone_size = ms->s_log_zone_size; - sbi->s_max_size = ms->s_max_size; + s->s_maxbytes = ms->s_max_size; s->s_magic = ms->s_magic; if (s->s_magic == MINIX_SUPER_MAGIC) { sbi->s_version = MINIX_V1; @@ -216,7 +235,7 @@ sbi->s_zmap_blocks = m3s->s_zmap_blocks; sbi->s_firstdatazone = m3s->s_firstdatazone; sbi->s_log_zone_size = m3s->s_log_zone_size; - sbi->s_max_size = m3s->s_max_size; + s->s_maxbytes = m3s->s_max_size; sbi->s_ninodes = m3s->s_ninodes; sbi->s_nzones = m3s->s_zones; sbi->s_dirsize = 64; @@ -228,11 +247,12 @@ } else goto out_no_fs; + if (!minix_check_superblock(s)) + goto out_illegal_sb; + /* * Allocate the buffer map to keep the superblock small. */ - if (sbi->s_imap_blocks == 0 || sbi->s_zmap_blocks == 0) - goto out_illegal_sb; i = (sbi->s_imap_blocks + sbi->s_zmap_blocks) * sizeof(bh); map = kzalloc(i, GFP_KERNEL); if (!map) @@ -468,6 +488,13 @@ iget_failed(inode); return ERR_PTR(-EIO); } + if (raw_inode->i_nlinks == 0) { + printk("MINIX-fs: deleted inode referenced: %lu\n", + inode->i_ino); + brelse(bh); + iget_failed(inode); + return ERR_PTR(-ESTALE); + } inode->i_mode = raw_inode->i_mode; i_uid_write(inode, raw_inode->i_uid); i_gid_write(inode, raw_inode->i_gid); @@ -501,6 +528,13 @@ iget_failed(inode); return ERR_PTR(-EIO); } + if (raw_inode->i_nlinks == 0) { + printk("MINIX-fs: deleted inode referenced: %lu\n", + inode->i_ino); + brelse(bh); + iget_failed(inode); + return ERR_PTR(-ESTALE); + } inode->i_mode = raw_inode->i_mode; i_uid_write(inode, raw_inode->i_uid); i_gid_write(inode, raw_inode->i_gid); --- linux-5.8.0.orig/fs/minix/itree_common.c +++ linux-5.8.0/fs/minix/itree_common.c @@ -75,6 +75,7 @@ int n = 0; int i; int parent = minix_new_block(inode); + int err = -ENOSPC; branch[0].key = cpu_to_block(parent); if (parent) for (n = 1; n < num; n++) { @@ -85,6 +86,11 @@ break; branch[n].key = cpu_to_block(nr); bh = sb_getblk(inode->i_sb, parent); + if (!bh) { + minix_free_block(inode, nr); + err = -ENOMEM; + break; + } lock_buffer(bh); memset(bh->b_data, 0, bh->b_size); branch[n].bh = bh; @@ -103,7 +109,7 @@ bforget(branch[i].bh); for (i = 0; i < n; i++) minix_free_block(inode, block_to_cpu(branch[i].key)); - return -ENOSPC; + return err; } static inline int splice_branch(struct inode *inode, --- linux-5.8.0.orig/fs/minix/itree_v1.c +++ linux-5.8.0/fs/minix/itree_v1.c @@ -29,12 +29,12 @@ if (block < 0) { printk("MINIX-fs: block_to_path: block %ld < 0 on dev %pg\n", block, inode->i_sb->s_bdev); - } else if (block >= (minix_sb(inode->i_sb)->s_max_size/BLOCK_SIZE)) { - if (printk_ratelimit()) - printk("MINIX-fs: block_to_path: " - "block %ld too big on dev %pg\n", - block, inode->i_sb->s_bdev); - } else if (block < 7) { + return 0; + } + if ((u64)block * BLOCK_SIZE >= inode->i_sb->s_maxbytes) + return 0; + + if (block < 7) { offsets[n++] = block; } else if ((block -= 7) < 512) { offsets[n++] = 7; --- linux-5.8.0.orig/fs/minix/itree_v2.c +++ linux-5.8.0/fs/minix/itree_v2.c @@ -32,13 +32,12 @@ if (block < 0) { printk("MINIX-fs: block_to_path: block %ld < 0 on dev %pg\n", block, sb->s_bdev); - } else if ((u64)block * (u64)sb->s_blocksize >= - minix_sb(sb)->s_max_size) { - if (printk_ratelimit()) - printk("MINIX-fs: block_to_path: " - "block %ld too big on dev %pg\n", - block, sb->s_bdev); - } else if (block < DIRCOUNT) { + return 0; + } + if ((u64)block * (u64)sb->s_blocksize >= sb->s_maxbytes) + return 0; + + if (block < DIRCOUNT) { offsets[n++] = block; } else if ((block -= DIRCOUNT) < INDIRCOUNT(sb)) { offsets[n++] = DIRCOUNT; --- linux-5.8.0.orig/fs/minix/minix.h +++ linux-5.8.0/fs/minix/minix.h @@ -32,7 +32,6 @@ unsigned long s_zmap_blocks; unsigned long s_firstdatazone; unsigned long s_log_zone_size; - unsigned long s_max_size; int s_dirsize; int s_namelen; struct buffer_head ** s_imap; --- linux-5.8.0.orig/fs/namei.c +++ linux-5.8.0/fs/namei.c @@ -669,17 +669,17 @@ */ /** - * unlazy_walk - try to switch to ref-walk mode. + * try_to_unlazy - try to switch to ref-walk mode. * @nd: nameidata pathwalk data - * Returns: 0 on success, -ECHILD on failure + * Returns: true on success, false on failure * - * unlazy_walk attempts to legitimize the current nd->path and nd->root + * try_to_unlazy attempts to legitimize the current nd->path and nd->root * for ref-walk mode. * Must be called from rcu-walk context. - * Nothing should touch nameidata between unlazy_walk() failure and + * Nothing should touch nameidata between try_to_unlazy() failure and * terminate_walk(). */ -static int unlazy_walk(struct nameidata *nd) +static bool try_to_unlazy(struct nameidata *nd) { struct dentry *parent = nd->path.dentry; @@ -694,14 +694,14 @@ goto out; rcu_read_unlock(); BUG_ON(nd->inode != parent->d_inode); - return 0; + return true; out1: nd->path.mnt = NULL; nd->path.dentry = NULL; out: rcu_read_unlock(); - return -ECHILD; + return false; } /** @@ -792,7 +792,7 @@ */ if (!(nd->flags & (LOOKUP_ROOT | LOOKUP_IS_SCOPED))) nd->root.mnt = NULL; - if (unlikely(unlazy_walk(nd))) + if (!try_to_unlazy(nd)) return -ECHILD; } @@ -932,8 +932,8 @@ path_put(&last->link); } -int sysctl_protected_symlinks __read_mostly = 0; -int sysctl_protected_hardlinks __read_mostly = 0; +int sysctl_protected_symlinks __read_mostly = 1; +int sysctl_protected_hardlinks __read_mostly = 1; int sysctl_protected_fifos __read_mostly; int sysctl_protected_regular __read_mostly; @@ -1466,7 +1466,7 @@ unsigned seq; dentry = __d_lookup_rcu(parent, &nd->last, &seq); if (unlikely(!dentry)) { - if (unlazy_walk(nd)) + if (!try_to_unlazy(nd)) return ERR_PTR(-ECHILD); return NULL; } @@ -1567,10 +1567,8 @@ { if (nd->flags & LOOKUP_RCU) { int err = inode_permission(nd->inode, MAY_EXEC|MAY_NOT_BLOCK); - if (err != -ECHILD) + if (err != -ECHILD || !try_to_unlazy(nd)) return err; - if (unlazy_walk(nd)) - return -ECHILD; } return inode_permission(nd->inode, MAY_EXEC); } @@ -1592,7 +1590,7 @@ // unlazy even if we fail to grab the link - cleanup needs it bool grabbed_link = legitimize_path(nd, link, seq); - if (unlazy_walk(nd) != 0 || !grabbed_link) + if (!try_to_unlazy(nd) != 0 || !grabbed_link) return -ECHILD; if (nd_alloc_stack(nd)) @@ -1633,7 +1631,7 @@ touch_atime(&last->link); cond_resched(); } else if (atime_needs_update(&last->link, inode)) { - if (unlikely(unlazy_walk(nd))) + if (!try_to_unlazy(nd)) return ERR_PTR(-ECHILD); touch_atime(&last->link); } @@ -1650,11 +1648,8 @@ get = inode->i_op->get_link; if (nd->flags & LOOKUP_RCU) { res = get(NULL, inode, &last->done); - if (res == ERR_PTR(-ECHILD)) { - if (unlikely(unlazy_walk(nd))) - return ERR_PTR(-ECHILD); + if (res == ERR_PTR(-ECHILD) && try_to_unlazy(nd)) res = get(link->dentry, inode, &last->done); - } } else { res = get(link->dentry, inode, &last->done); } @@ -2192,7 +2187,7 @@ } if (unlikely(!d_can_lookup(nd->path.dentry))) { if (nd->flags & LOOKUP_RCU) { - if (unlazy_walk(nd)) + if (!try_to_unlazy(nd)) return -ECHILD; } return -ENOTDIR; @@ -3118,7 +3113,6 @@ struct inode *inode; struct dentry *dentry; const char *res; - int error; nd->flags |= op->intent; @@ -3142,9 +3136,8 @@ } else { /* create side of things */ if (nd->flags & LOOKUP_RCU) { - error = unlazy_walk(nd); - if (unlikely(error)) - return ERR_PTR(error); + if (!try_to_unlazy(nd)) + return ERR_PTR(-ECHILD); } audit_inode(nd->name, dir, AUDIT_INODE_PARENT); /* trailing slashes? */ @@ -3153,9 +3146,7 @@ } if (open_flag & (O_CREAT | O_TRUNC | O_WRONLY | O_RDWR)) { - error = mnt_want_write(nd->path.mnt); - if (!error) - got_write = true; + got_write = !mnt_want_write(nd->path.mnt); /* * do _not_ fail yet - we might not need that or fail with * a different error; let lookup_open() decide; we'll be --- linux-5.8.0.orig/fs/namespace.c +++ linux-5.8.0/fs/namespace.c @@ -156,10 +156,10 @@ /* * vfsmount lock must be held for write */ -unsigned int mnt_get_count(struct mount *mnt) +int mnt_get_count(struct mount *mnt) { #ifdef CONFIG_SMP - unsigned int count = 0; + int count = 0; int cpu; for_each_possible_cpu(cpu) { @@ -431,6 +431,7 @@ mnt_dec_writers(real_mount(mnt)); preempt_enable(); } +EXPORT_SYMBOL_GPL(__mnt_drop_write); /** * mnt_drop_write - give up write access to a mount @@ -792,6 +793,13 @@ return mnt->mnt_ns == current->nsproxy->mnt_ns; } +/* for aufs, CONFIG_AUFS_BR_FUSE */ +int is_current_mnt_ns(struct vfsmount *mnt) +{ + return check_mnt(real_mount(mnt)); +} +EXPORT_SYMBOL_GPL(is_current_mnt_ns); + /* * vfsmount lock must be held for write */ @@ -1139,6 +1147,7 @@ static void mntput_no_expire(struct mount *mnt) { LIST_HEAD(list); + int count; rcu_read_lock(); if (likely(READ_ONCE(mnt->mnt_ns))) { @@ -1162,7 +1171,9 @@ */ smp_mb(); mnt_add_count(mnt, -1); - if (mnt_get_count(mnt)) { + count = mnt_get_count(mnt); + if (count != 0) { + WARN_ON(count < 0); rcu_read_unlock(); unlock_mount_hash(); return; @@ -1191,7 +1202,7 @@ struct task_struct *task = current; if (likely(!(task->flags & PF_KTHREAD))) { init_task_work(&mnt->mnt_rcu, __cleanup_mnt); - if (!task_work_add(task, &mnt->mnt_rcu, true)) + if (!task_work_add(task, &mnt->mnt_rcu, TWA_RESUME)) return; } if (llist_add(&mnt->mnt_llist, &delayed_mntput_list)) @@ -1955,6 +1966,7 @@ } return 0; } +EXPORT_SYMBOL_GPL(iterate_mounts); static void lock_mnt_tree(struct mount *mnt) { --- linux-5.8.0.orig/fs/nfs/Kconfig +++ linux-5.8.0/fs/nfs/Kconfig @@ -127,7 +127,7 @@ config PNFS_FLEXFILE_LAYOUT tristate depends on NFS_V4_1 && NFS_V3 - default m + default NFS_V4 config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN string "NFSv4.1 Implementation ID Domain" --- linux-5.8.0.orig/fs/nfs/delegation.c +++ linux-5.8.0/fs/nfs/delegation.c @@ -1011,22 +1011,24 @@ const struct nfs_fh *fhandle) { struct nfs_delegation *delegation; - struct inode *freeme, *res = NULL; + struct super_block *freeme = NULL; + struct inode *res = NULL; list_for_each_entry_rcu(delegation, &server->delegations, super_list) { spin_lock(&delegation->lock); if (delegation->inode != NULL && !test_bit(NFS_DELEGATION_REVOKED, &delegation->flags) && nfs_compare_fh(fhandle, &NFS_I(delegation->inode)->fh) == 0) { - freeme = igrab(delegation->inode); - if (freeme && nfs_sb_active(freeme->i_sb)) - res = freeme; + if (nfs_sb_active(server->super)) { + freeme = server->super; + res = igrab(delegation->inode); + } spin_unlock(&delegation->lock); if (res != NULL) return res; if (freeme) { rcu_read_unlock(); - iput(freeme); + nfs_sb_deactive(freeme); rcu_read_lock(); } return ERR_PTR(-EAGAIN); --- linux-5.8.0.orig/fs/nfs/dir.c +++ linux-5.8.0/fs/nfs/dir.c @@ -579,6 +579,9 @@ xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); do { + if (entry->label) + entry->label->len = NFS4_MAXLABELLEN; + status = xdr_decode(desc, entry, &stream); if (status != 0) { if (status == -EAGAIN) @@ -1204,6 +1207,15 @@ goto out; } +static void nfs_mark_dir_for_revalidate(struct inode *inode) +{ + struct nfs_inode *nfsi = NFS_I(inode); + + spin_lock(&inode->i_lock); + nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE; + spin_unlock(&inode->i_lock); +} + /* * We judge how long we want to trust negative * dentries by looking at the parent inode mtime. @@ -1238,19 +1250,14 @@ __func__, dentry); return 1; case 0: - nfs_mark_for_revalidate(dir); - if (inode && S_ISDIR(inode->i_mode)) { - /* Purge readdir caches. */ - nfs_zap_caches(inode); - /* - * We can't d_drop the root of a disconnected tree: - * its d_hash is on the s_anon list and d_drop() would hide - * it from shrink_dcache_for_unmount(), leading to busy - * inodes on unmount and further oopses. - */ - if (IS_ROOT(dentry)) - return 1; - } + /* + * We can't d_drop the root of a disconnected tree: + * its d_hash is on the s_anon list and d_drop() would hide + * it from shrink_dcache_for_unmount(), leading to busy + * inodes on unmount and further oopses. + */ + if (inode && IS_ROOT(dentry)) + return 1; dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n", __func__, dentry); return 0; @@ -1328,6 +1335,13 @@ nfs_free_fattr(fattr); nfs_free_fhandle(fhandle); nfs4_label_free(label); + + /* + * If the lookup failed despite the dentry change attribute being + * a match, then we should revalidate the directory cache. + */ + if (!ret && nfs_verify_change_attribute(dir, dentry->d_time)) + nfs_mark_dir_for_revalidate(dir); return nfs_lookup_revalidate_done(dir, dentry, inode, ret); } @@ -1370,7 +1384,7 @@ error = nfs_lookup_verify_inode(inode, flags); if (error) { if (error == -ESTALE) - nfs_zap_caches(dir); + nfs_mark_dir_for_revalidate(dir); goto out_bad; } nfs_advise_use_readdirplus(dir); @@ -1867,7 +1881,6 @@ dput(parent); return d; out_error: - nfs_mark_for_revalidate(dir); d = ERR_PTR(error); goto out; } --- linux-5.8.0.orig/fs/nfs/file.c +++ linux-5.8.0/fs/nfs/file.c @@ -140,6 +140,7 @@ nfs_file_flush(struct file *file, fl_owner_t id) { struct inode *inode = file_inode(file); + errseq_t since; dprintk("NFS: flush(%pD2)\n", file); @@ -148,7 +149,9 @@ return 0; /* Flush writes to the server and return any errors */ - return nfs_wb_all(inode); + since = filemap_sample_wb_err(file->f_mapping); + nfs_wb_all(inode); + return filemap_check_wb_err(file->f_mapping, since); } ssize_t @@ -587,12 +590,14 @@ .page_mkwrite = nfs_vm_page_mkwrite, }; -static int nfs_need_check_write(struct file *filp, struct inode *inode) +static int nfs_need_check_write(struct file *filp, struct inode *inode, + int error) { struct nfs_open_context *ctx; ctx = nfs_file_open_context(filp); - if (nfs_ctx_key_to_expire(ctx, inode)) + if (nfs_error_is_fatal_on_server(error) || + nfs_ctx_key_to_expire(ctx, inode)) return 1; return 0; } @@ -603,6 +608,8 @@ struct inode *inode = file_inode(file); unsigned long written = 0; ssize_t result; + errseq_t since; + int error; result = nfs_key_timeout_notify(file, inode); if (result) @@ -627,6 +634,7 @@ if (iocb->ki_pos > i_size_read(inode)) nfs_revalidate_mapping(inode, file->f_mapping); + since = filemap_sample_wb_err(file->f_mapping); nfs_start_io_write(inode); result = generic_write_checks(iocb, from); if (result > 0) { @@ -645,7 +653,8 @@ goto out; /* Return error values */ - if (nfs_need_check_write(file, inode)) { + error = filemap_check_wb_err(file->f_mapping, since); + if (nfs_need_check_write(file, inode, error)) { int err = nfs_wb_all(inode); if (err < 0) result = err; --- linux-5.8.0.orig/fs/nfs/flexfilelayout/flexfilelayout.c +++ linux-5.8.0/fs/nfs/flexfilelayout/flexfilelayout.c @@ -790,6 +790,19 @@ return ff_layout_choose_any_ds_for_read(lseg, start_idx, best_idx); } +static struct nfs4_pnfs_ds * +ff_layout_get_ds_for_read(struct nfs_pageio_descriptor *pgio, int *best_idx) +{ + struct pnfs_layout_segment *lseg = pgio->pg_lseg; + struct nfs4_pnfs_ds *ds; + + ds = ff_layout_choose_best_ds_for_read(lseg, pgio->pg_mirror_idx, + best_idx); + if (ds || !pgio->pg_mirror_idx) + return ds; + return ff_layout_choose_best_ds_for_read(lseg, 0, best_idx); +} + static void ff_layout_pg_get_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *req, @@ -825,6 +838,7 @@ struct nfs4_ff_layout_mirror *mirror; struct nfs4_pnfs_ds *ds; int ds_idx; + u32 i; retry: ff_layout_pg_check_layout(pgio, req); @@ -840,7 +854,7 @@ goto out_nolseg; } - ds = ff_layout_choose_best_ds_for_read(pgio->pg_lseg, 0, &ds_idx); + ds = ff_layout_get_ds_for_read(pgio, &ds_idx); if (!ds) { if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg)) goto out_mds; @@ -851,14 +865,14 @@ goto retry; } - mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx); + for (i = 0; i < pgio->pg_mirror_count; i++) { + mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i); + pgm = &pgio->pg_mirrors[i]; + pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].rsize; + } pgio->pg_mirror_idx = ds_idx; - /* read always uses only one mirror - idx 0 for pgio layer */ - pgm = &pgio->pg_mirrors[0]; - pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].rsize; - if (NFS_SERVER(pgio->pg_inode)->flags & (NFS_MOUNT_SOFT|NFS_MOUNT_SOFTERR)) pgio->pg_maxretrans = io_maxretrans; @@ -1028,11 +1042,24 @@ } } +static void ff_layout_resend_pnfs_read(struct nfs_pgio_header *hdr) +{ + u32 idx = hdr->pgio_mirror_idx + 1; + int new_idx = 0; + + if (ff_layout_choose_any_ds_for_read(hdr->lseg, idx, &new_idx)) + ff_layout_send_layouterror(hdr->lseg); + else + pnfs_error_mark_layout_for_return(hdr->inode, hdr->lseg); + pnfs_read_resend_pnfs(hdr, new_idx); +} + static void ff_layout_reset_read(struct nfs_pgio_header *hdr) { struct rpc_task *task = &hdr->task; pnfs_layoutcommit_inode(hdr->inode, false); + pnfs_error_mark_layout_for_return(hdr->inode, hdr->lseg); if (!test_and_set_bit(NFS_IOHDR_REDO, &hdr->flags)) { dprintk("%s Reset task %5u for i/o through MDS " @@ -1234,6 +1261,12 @@ break; case NFS4ERR_NXIO: ff_layout_mark_ds_unreachable(lseg, idx); + /* + * Don't return the layout if this is a read and we still + * have layouts to try + */ + if (opnum == OP_READ) + break; /* Fallthrough */ default: pnfs_error_mark_layout_for_return(lseg->pls_layout->plh_inode, @@ -1247,7 +1280,6 @@ static int ff_layout_read_done_cb(struct rpc_task *task, struct nfs_pgio_header *hdr) { - int new_idx = hdr->pgio_mirror_idx; int err; if (task->tk_status < 0) { @@ -1267,10 +1299,6 @@ clear_bit(NFS_IOHDR_RESEND_MDS, &hdr->flags); switch (err) { case -NFS4ERR_RESET_TO_PNFS: - if (ff_layout_choose_best_ds_for_read(hdr->lseg, - hdr->pgio_mirror_idx + 1, - &new_idx)) - goto out_layouterror; set_bit(NFS_IOHDR_RESEND_PNFS, &hdr->flags); return task->tk_status; case -NFS4ERR_RESET_TO_MDS: @@ -1281,10 +1309,6 @@ } return 0; -out_layouterror: - ff_layout_read_record_layoutstats_done(task, hdr); - ff_layout_send_layouterror(hdr->lseg); - hdr->pgio_mirror_idx = new_idx; out_eagain: rpc_restart_call_prepare(task); return -EAGAIN; @@ -1411,10 +1435,9 @@ struct nfs_pgio_header *hdr = data; ff_layout_read_record_layoutstats_done(&hdr->task, hdr); - if (test_bit(NFS_IOHDR_RESEND_PNFS, &hdr->flags)) { - ff_layout_send_layouterror(hdr->lseg); - pnfs_read_resend_pnfs(hdr); - } else if (test_bit(NFS_IOHDR_RESEND_MDS, &hdr->flags)) + if (test_bit(NFS_IOHDR_RESEND_PNFS, &hdr->flags)) + ff_layout_resend_pnfs_read(hdr); + else if (test_bit(NFS_IOHDR_RESEND_MDS, &hdr->flags)) ff_layout_reset_read(hdr); pnfs_generic_rw_release(data); } --- linux-5.8.0.orig/fs/nfs/fs_context.c +++ linux-5.8.0/fs/nfs/fs_context.c @@ -94,6 +94,7 @@ static const struct constant_table nfs_param_enums_local_lock[] = { { "all", Opt_local_lock_all }, { "flock", Opt_local_lock_flock }, + { "posix", Opt_local_lock_posix }, { "none", Opt_local_lock_none }, {} }; --- linux-5.8.0.orig/fs/nfs/inode.c +++ linux-5.8.0/fs/nfs/inode.c @@ -2166,7 +2166,7 @@ { struct workqueue_struct *wq; dprintk("RPC: creating workqueue nfsiod\n"); - wq = alloc_workqueue("nfsiod", WQ_MEM_RECLAIM, 0); + wq = alloc_workqueue("nfsiod", WQ_MEM_RECLAIM | WQ_UNBOUND, 0); if (wq == NULL) return -ENOMEM; nfsiod_workqueue = wq; --- linux-5.8.0.orig/fs/nfs/internal.h +++ linux-5.8.0/fs/nfs/internal.h @@ -142,9 +142,29 @@ } clone_data; }; -#define nfs_errorf(fc, fmt, ...) errorf(fc, fmt, ## __VA_ARGS__) -#define nfs_invalf(fc, fmt, ...) invalf(fc, fmt, ## __VA_ARGS__) -#define nfs_warnf(fc, fmt, ...) warnf(fc, fmt, ## __VA_ARGS__) +#define nfs_errorf(fc, fmt, ...) ((fc)->log.log ? \ + errorf(fc, fmt, ## __VA_ARGS__) : \ + ({ dprintk(fmt "\n", ## __VA_ARGS__); })) + +#define nfs_ferrorf(fc, fac, fmt, ...) ((fc)->log.log ? \ + errorf(fc, fmt, ## __VA_ARGS__) : \ + ({ dfprintk(fac, fmt "\n", ## __VA_ARGS__); })) + +#define nfs_invalf(fc, fmt, ...) ((fc)->log.log ? \ + invalf(fc, fmt, ## __VA_ARGS__) : \ + ({ dprintk(fmt "\n", ## __VA_ARGS__); -EINVAL; })) + +#define nfs_finvalf(fc, fac, fmt, ...) ((fc)->log.log ? \ + invalf(fc, fmt, ## __VA_ARGS__) : \ + ({ dfprintk(fac, fmt "\n", ## __VA_ARGS__); -EINVAL; })) + +#define nfs_warnf(fc, fmt, ...) ((fc)->log.log ? \ + warnf(fc, fmt, ## __VA_ARGS__) : \ + ({ dprintk(fmt "\n", ## __VA_ARGS__); })) + +#define nfs_fwarnf(fc, fac, fmt, ...) ((fc)->log.log ? \ + warnf(fc, fmt, ## __VA_ARGS__) : \ + ({ dfprintk(fac, fmt "\n", ## __VA_ARGS__); })) static inline struct nfs_fs_context *nfs_fc2context(const struct fs_context *fc) { @@ -585,12 +605,14 @@ static inline struct inode *nfs_igrab_and_active(struct inode *inode) { - inode = igrab(inode); - if (inode != NULL && !nfs_sb_active(inode->i_sb)) { - iput(inode); - inode = NULL; + struct super_block *sb = inode->i_sb; + + if (sb && nfs_sb_active(sb)) { + if (igrab(inode)) + return inode; + nfs_sb_deactive(sb); } - return inode; + return NULL; } static inline void nfs_iput_and_deactive(struct inode *inode) --- linux-5.8.0.orig/fs/nfs/namespace.c +++ linux-5.8.0/fs/nfs/namespace.c @@ -32,9 +32,9 @@ /* * nfs_path - reconstruct the path given an arbitrary dentry * @base - used to return pointer to the end of devname part of path - * @dentry - pointer to dentry + * @dentry_in - pointer to dentry * @buffer - result buffer - * @buflen - length of buffer + * @buflen_in - length of buffer * @flags - options (see below) * * Helper function for constructing the server pathname @@ -49,15 +49,19 @@ * the original device (export) name * (if unset, the original name is returned verbatim) */ -char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen, - unsigned flags) +char *nfs_path(char **p, struct dentry *dentry_in, char *buffer, + ssize_t buflen_in, unsigned flags) { char *end; int namelen; unsigned seq; const char *base; + struct dentry *dentry; + ssize_t buflen; rename_retry: + buflen = buflen_in; + dentry = dentry_in; end = buffer+buflen; *--end = '\0'; buflen--; --- linux-5.8.0.orig/fs/nfs/nfs3xdr.c +++ linux-5.8.0/fs/nfs/nfs3xdr.c @@ -35,6 +35,7 @@ */ #define NFS3_fhandle_sz (1+16) #define NFS3_fh_sz (NFS3_fhandle_sz) /* shorthand */ +#define NFS3_post_op_fh_sz (1+NFS3_fh_sz) #define NFS3_sattr_sz (15) #define NFS3_filename_sz (1+(NFS3_MAXNAMLEN>>2)) #define NFS3_path_sz (1+(NFS3_MAXPATHLEN>>2)) @@ -72,7 +73,7 @@ #define NFS3_readlinkres_sz (1+NFS3_post_op_attr_sz+1+1) #define NFS3_readres_sz (1+NFS3_post_op_attr_sz+3+1) #define NFS3_writeres_sz (1+NFS3_wcc_data_sz+4) -#define NFS3_createres_sz (1+NFS3_fh_sz+NFS3_post_op_attr_sz+NFS3_wcc_data_sz) +#define NFS3_createres_sz (1+NFS3_post_op_fh_sz+NFS3_post_op_attr_sz+NFS3_wcc_data_sz) #define NFS3_renameres_sz (1+(2 * NFS3_wcc_data_sz)) #define NFS3_linkres_sz (1+NFS3_post_op_attr_sz+NFS3_wcc_data_sz) #define NFS3_readdirres_sz (1+NFS3_post_op_attr_sz+2+1) --- linux-5.8.0.orig/fs/nfs/nfs42proc.c +++ linux-5.8.0/fs/nfs/nfs42proc.c @@ -355,7 +355,15 @@ truncate_pagecache_range(dst_inode, pos_dst, pos_dst + res->write_res.count); - + spin_lock(&dst_inode->i_lock); + NFS_I(dst_inode)->cache_validity |= (NFS_INO_REVAL_PAGECACHE | + NFS_INO_REVAL_FORCED | NFS_INO_INVALID_SIZE | + NFS_INO_INVALID_ATTR | NFS_INO_INVALID_DATA); + spin_unlock(&dst_inode->i_lock); + spin_lock(&src_inode->i_lock); + NFS_I(src_inode)->cache_validity |= (NFS_INO_REVAL_PAGECACHE | + NFS_INO_REVAL_FORCED | NFS_INO_INVALID_ATIME); + spin_unlock(&src_inode->i_lock); status = res->write_res.count; out: if (args->sync) --- linux-5.8.0.orig/fs/nfs/nfs4_fs.h +++ linux-5.8.0/fs/nfs/nfs4_fs.h @@ -586,6 +586,14 @@ return (s32)(be32_to_cpu(s1->seqid) - be32_to_cpu(s2->seqid)) > 0; } +static inline bool nfs4_stateid_is_next(const nfs4_stateid *s1, const nfs4_stateid *s2) +{ + u32 seq1 = be32_to_cpu(s1->seqid); + u32 seq2 = be32_to_cpu(s2->seqid); + + return seq2 == seq1 + 1U || (seq2 == 1U && seq1 == 0xffffffffU); +} + static inline bool nfs4_stateid_match_or_older(const nfs4_stateid *dst, const nfs4_stateid *src) { return nfs4_stateid_match_other(dst, src) && --- linux-5.8.0.orig/fs/nfs/nfs4file.c +++ linux-5.8.0/fs/nfs/nfs4file.c @@ -110,6 +110,7 @@ nfs4_file_flush(struct file *file, fl_owner_t id) { struct inode *inode = file_inode(file); + errseq_t since; dprintk("NFS: flush(%pD2)\n", file); @@ -125,7 +126,9 @@ return filemap_fdatawrite(file->f_mapping); /* Flush writes to the server and return any errors */ - return nfs_wb_all(inode); + since = filemap_sample_wb_err(file->f_mapping); + nfs_wb_all(inode); + return filemap_check_wb_err(file->f_mapping, since); } #ifdef CONFIG_NFS_V4_2 @@ -142,7 +145,8 @@ /* Only offload copy if superblock is the same */ if (file_in->f_op != &nfs4_file_operations) return -EXDEV; - if (!nfs_server_capable(file_inode(file_out), NFS_CAP_COPY)) + if (!nfs_server_capable(file_inode(file_out), NFS_CAP_COPY) || + !nfs_server_capable(file_inode(file_in), NFS_CAP_COPY)) return -EOPNOTSUPP; if (file_inode(file_in) == file_inode(file_out)) return -EOPNOTSUPP; --- linux-5.8.0.orig/fs/nfs/nfs4proc.c +++ linux-5.8.0/fs/nfs/nfs4proc.c @@ -130,8 +130,12 @@ static inline void nfs4_label_release_security(struct nfs4_label *label) { - if (label) - security_release_secctx(label->label, label->len); + struct lsmcontext scaff; /* scaffolding */ + + if (label) { + lsmcontext_init(&scaff, label->label, label->len, 0); + security_release_secctx(&scaff); + } } static inline u32 *nfs4_bitmask(struct nfs_server *server, struct nfs4_label *label) { @@ -1527,19 +1531,6 @@ wake_up_all(&state->waitq); } -static void nfs_state_log_out_of_order_open_stateid(struct nfs4_state *state, - const nfs4_stateid *stateid) -{ - u32 state_seqid = be32_to_cpu(state->open_stateid.seqid); - u32 stateid_seqid = be32_to_cpu(stateid->seqid); - - if (stateid_seqid == state_seqid + 1U || - (stateid_seqid == 1U && state_seqid == 0xffffffffU)) - nfs_state_log_update_open_stateid(state); - else - set_bit(NFS_STATE_CHANGE_WAIT, &state->flags); -} - static void nfs_test_and_clear_all_open_stateid(struct nfs4_state *state) { struct nfs_client *clp = state->owner->so_server->nfs_client; @@ -1565,21 +1556,19 @@ * i.e. The stateid seqids have to be initialised to 1, and * are then incremented on every state transition. */ -static bool nfs_need_update_open_stateid(struct nfs4_state *state, +static bool nfs_stateid_is_sequential(struct nfs4_state *state, const nfs4_stateid *stateid) { - if (test_bit(NFS_OPEN_STATE, &state->flags) == 0 || - !nfs4_stateid_match_other(stateid, &state->open_stateid)) { + if (test_bit(NFS_OPEN_STATE, &state->flags)) { + /* The common case - we're updating to a new sequence number */ + if (nfs4_stateid_match_other(stateid, &state->open_stateid) && + nfs4_stateid_is_next(&state->open_stateid, stateid)) { + return true; + } + } else { + /* This is the first OPEN in this generation */ if (stateid->seqid == cpu_to_be32(1)) - nfs_state_log_update_open_stateid(state); - else - set_bit(NFS_STATE_CHANGE_WAIT, &state->flags); - return true; - } - - if (nfs4_stateid_is_newer(stateid, &state->open_stateid)) { - nfs_state_log_out_of_order_open_stateid(state, stateid); - return true; + return true; } return false; } @@ -1653,16 +1642,16 @@ int status = 0; for (;;) { - if (!nfs_need_update_open_stateid(state, stateid)) - return; - if (!test_bit(NFS_STATE_CHANGE_WAIT, &state->flags)) + if (nfs_stateid_is_sequential(state, stateid)) break; + if (status) break; /* Rely on seqids for serialisation with NFSv4.0 */ if (!nfs4_has_session(NFS_SERVER(state->inode)->nfs_client)) break; + set_bit(NFS_STATE_CHANGE_WAIT, &state->flags); prepare_to_wait(&state->waitq, &wait, TASK_KILLABLE); /* * Ensure we process the state changes in the same order @@ -1673,6 +1662,7 @@ spin_unlock(&state->owner->so_lock); rcu_read_unlock(); trace_nfs4_open_stateid_update_wait(state->inode, stateid, 0); + if (!signal_pending(current)) { if (schedule_timeout(5*HZ) == 0) status = -EAGAIN; @@ -3272,8 +3262,10 @@ /* Servers should only apply open mode checks for file size changes */ truncate = (arg->iap->ia_valid & ATTR_SIZE) ? true : false; - if (!truncate) + if (!truncate) { + nfs4_inode_make_writeable(inode); goto zero_stateid; + } if (nfs4_copy_delegation_stateid(inode, FMODE_WRITE, &arg->stateid, &delegation_cred)) { /* Use that stateid */ @@ -3412,7 +3404,8 @@ __be32 seqid_open; u32 dst_seqid; bool ret; - int seq; + int seq, status = -EAGAIN; + DEFINE_WAIT(wait); for (;;) { ret = false; @@ -3424,15 +3417,41 @@ continue; break; } + + write_seqlock(&state->seqlock); seqid_open = state->open_stateid.seqid; - if (read_seqretry(&state->seqlock, seq)) - continue; dst_seqid = be32_to_cpu(dst->seqid); - if ((s32)(dst_seqid - be32_to_cpu(seqid_open)) >= 0) - dst->seqid = cpu_to_be32(dst_seqid + 1); - else + + /* Did another OPEN bump the state's seqid? try again: */ + if ((s32)(be32_to_cpu(seqid_open) - dst_seqid) > 0) { dst->seqid = seqid_open; + write_sequnlock(&state->seqlock); + ret = true; + break; + } + + /* server says we're behind but we haven't seen the update yet */ + set_bit(NFS_STATE_CHANGE_WAIT, &state->flags); + prepare_to_wait(&state->waitq, &wait, TASK_KILLABLE); + write_sequnlock(&state->seqlock); + trace_nfs4_close_stateid_update_wait(state->inode, dst, 0); + + if (signal_pending(current)) + status = -EINTR; + else + if (schedule_timeout(5*HZ) != 0) + status = 0; + + finish_wait(&state->waitq, &wait); + + if (!status) + continue; + if (status == -EINTR) + break; + + /* we slept the whole 5 seconds, we must have lost a seqid */ + dst->seqid = cpu_to_be32(dst_seqid + 1); ret = true; break; } @@ -3490,10 +3509,8 @@ trace_nfs4_close(state, &calldata->arg, &calldata->res, task->tk_status); /* Handle Layoutreturn errors */ - if (pnfs_roc_done(task, calldata->inode, - &calldata->arg.lr_args, - &calldata->res.lr_res, - &calldata->res.lr_ret) == -EAGAIN) + if (pnfs_roc_done(task, &calldata->arg.lr_args, &calldata->res.lr_res, + &calldata->res.lr_ret) == -EAGAIN) goto out_restart; /* hmm. we are done with the inode, and in the process of freeing @@ -4910,12 +4927,12 @@ u64 cookie, struct page **pages, unsigned int count, bool plus) { struct inode *dir = d_inode(dentry); + struct nfs_server *server = NFS_SERVER(dir); struct nfs4_readdir_arg args = { .fh = NFS_FH(dir), .pages = pages, .pgbase = 0, .count = count, - .bitmask = NFS_SERVER(d_inode(dentry))->attr_bitmask, .plus = plus, }; struct nfs4_readdir_res res; @@ -4930,9 +4947,15 @@ dprintk("%s: dentry = %pd2, cookie = %Lu\n", __func__, dentry, (unsigned long long)cookie); + if (!(server->caps & NFS_CAP_SECURITY_LABEL)) + args.bitmask = server->attr_bitmask_nl; + else + args.bitmask = server->attr_bitmask; + nfs4_setup_readdir(cookie, NFS_I(dir)->cookieverf, dentry, &args); res.pgbase = args.pgbase; - status = nfs4_call_sync(NFS_SERVER(dir)->client, NFS_SERVER(dir), &msg, &args.seq_args, &res.seq_res, 0); + status = nfs4_call_sync(server->client, server, &msg, &args.seq_args, + &res.seq_res, 0); if (status >= 0) { memcpy(NFS_I(dir)->cookieverf, res.verifier.data, NFS4_VERIFIER_SIZE); status += args.pgbase; @@ -5769,6 +5792,9 @@ unsigned int npages = DIV_ROUND_UP(buflen, PAGE_SIZE); int ret, i; + /* You can't remove system.nfs4_acl: */ + if (buflen == 0) + return -EINVAL; if (!nfs4_server_supports_acls(server)) return -EOPNOTSUPP; if (npages > ARRAY_SIZE(pages)) @@ -5845,9 +5871,7 @@ return ret; if (!(fattr.valid & NFS_ATTR_FATTR_V4_SECURITY_LABEL)) return -ENOENT; - if (buflen < label.len) - return -ERANGE; - return 0; + return label.len; } static int nfs4_get_security_label(struct inode *inode, void *buf, @@ -6253,10 +6277,8 @@ trace_nfs4_delegreturn_exit(&data->args, &data->res, task->tk_status); /* Handle Layoutreturn errors */ - if (pnfs_roc_done(task, data->inode, - &data->args.lr_args, - &data->res.lr_res, - &data->res.lr_ret) == -EAGAIN) + if (pnfs_roc_done(task, &data->args.lr_args, &data->res.lr_res, + &data->res.lr_ret) == -EAGAIN) goto out_restart; switch (task->tk_status) { @@ -6310,10 +6332,10 @@ struct nfs4_delegreturndata *data = calldata; struct inode *inode = data->inode; + if (data->lr.roc) + pnfs_roc_release(&data->lr.arg, &data->lr.res, + data->res.lr_ret); if (inode) { - if (data->lr.roc) - pnfs_roc_release(&data->lr.arg, &data->lr.res, - data->res.lr_ret); nfs_post_op_update_inode_force_wcc(inode, &data->fattr); nfs_iput_and_deactive(inode); } @@ -6388,16 +6410,14 @@ nfs_fattr_init(data->res.fattr); data->timestamp = jiffies; data->rpc_status = 0; - data->lr.roc = pnfs_roc(inode, &data->lr.arg, &data->lr.res, cred); data->inode = nfs_igrab_and_active(inode); - if (data->inode) { + if (data->inode || issync) { + data->lr.roc = pnfs_roc(inode, &data->lr.arg, &data->lr.res, + cred); if (data->lr.roc) { data->args.lr_args = &data->lr.arg; data->res.lr_res = &data->lr.res; } - } else if (data->lr.roc) { - pnfs_roc_release(&data->lr.arg, &data->lr.res, 0); - data->lr.roc = false; } task_setup_data.callback_data = data; @@ -6979,9 +6999,9 @@ data->arg.new_lock_owner, ret); } else data->cancelled = true; + trace_nfs4_set_lock(fl, state, &data->res.stateid, cmd, ret); rpc_put_task(task); dprintk("%s: done, ret = %d!\n", __func__, ret); - trace_nfs4_set_lock(fl, state, &data->res.stateid, cmd, ret); return ret; } @@ -7273,7 +7293,12 @@ err = nfs4_set_lock_state(state, fl); if (err != 0) return err; - err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW); + do { + err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW); + if (err != -NFS4ERR_DELAY) + break; + ssleep(1); + } while (err == -NFS4ERR_DELAY); return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err); } @@ -7880,9 +7905,11 @@ * both PNFS and NON_PNFS flags set, and not having one of NON_PNFS, PNFS, or * DS flags set. */ -static int nfs4_check_cl_exchange_flags(u32 flags) +static int nfs4_check_cl_exchange_flags(u32 flags, u32 version) { - if (flags & ~EXCHGID4_FLAG_MASK_R) + if (version >= 2 && (flags & ~EXCHGID4_2_FLAG_MASK_R)) + goto out_inval; + else if (version < 2 && (flags & ~EXCHGID4_FLAG_MASK_R)) goto out_inval; if ((flags & EXCHGID4_FLAG_USE_PNFS_MDS) && (flags & EXCHGID4_FLAG_USE_NON_PNFS)) @@ -8295,7 +8322,8 @@ if (status != 0) goto out; - status = nfs4_check_cl_exchange_flags(resp->flags); + status = nfs4_check_cl_exchange_flags(resp->flags, + clp->cl_mvops->minor_version); if (status != 0) goto out; --- linux-5.8.0.orig/fs/nfs/nfs4super.c +++ linux-5.8.0/fs/nfs/nfs4super.c @@ -66,7 +66,7 @@ nfs_inode_evict_delegation(inode); /* Note that above delegreturn would trigger pnfs return-on-close */ pnfs_return_layout(inode); - pnfs_destroy_layout(NFS_I(inode)); + pnfs_destroy_layout_final(NFS_I(inode)); /* First call standard NFS clear_inode() code */ nfs_clear_inode(inode); } @@ -225,7 +225,7 @@ fc, ctx->nfs_server.hostname, ctx->nfs_server.export_path); if (err) { - nfs_errorf(fc, "NFS4: Couldn't follow remote path"); + nfs_ferrorf(fc, MOUNT, "NFS4: Couldn't follow remote path"); dfprintk(MOUNT, "<-- nfs4_try_get_tree() = %d [error]\n", err); } else { dfprintk(MOUNT, "<-- nfs4_try_get_tree() = 0\n"); @@ -248,7 +248,7 @@ fc, ctx->nfs_server.hostname, ctx->nfs_server.export_path); if (err) { - nfs_errorf(fc, "NFS4: Couldn't follow remote path"); + nfs_ferrorf(fc, MOUNT, "NFS4: Couldn't follow remote path"); dfprintk(MOUNT, "<-- nfs4_get_referral_tree() = %d [error]\n", err); } else { dfprintk(MOUNT, "<-- nfs4_get_referral_tree() = 0\n"); --- linux-5.8.0.orig/fs/nfs/nfs4trace.h +++ linux-5.8.0/fs/nfs/nfs4trace.h @@ -1511,6 +1511,7 @@ DEFINE_NFS4_INODE_STATEID_EVENT(nfs4_delegreturn); DEFINE_NFS4_INODE_STATEID_EVENT(nfs4_open_stateid_update); DEFINE_NFS4_INODE_STATEID_EVENT(nfs4_open_stateid_update_wait); +DEFINE_NFS4_INODE_STATEID_EVENT(nfs4_close_stateid_update_wait); DECLARE_EVENT_CLASS(nfs4_getattr_event, TP_PROTO( --- linux-5.8.0.orig/fs/nfs/nfs4xdr.c +++ linux-5.8.0/fs/nfs/nfs4xdr.c @@ -3009,15 +3009,19 @@ struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->seq_args), }; + uint32_t replen; encode_compound_hdr(xdr, req, &hdr); encode_sequence(xdr, &args->seq_args, &hdr); + + replen = hdr.replen + op_decode_hdr_maxsz; + encode_getdeviceinfo(xdr, args, &hdr); - /* set up reply kvec. Subtract notification bitmap max size (2) - * so that notification bitmap is put in xdr_buf tail */ + /* set up reply kvec. device_addr4 opaque data is read into the + * pages */ rpc_prepare_reply_pages(req, args->pdev->pages, args->pdev->pgbase, - args->pdev->pglen, hdr.replen - 2); + args->pdev->pglen, replen + 2 + 1); encode_nops(&hdr); } @@ -4166,7 +4170,11 @@ return -EIO; if (len < NFS4_MAXLABELLEN) { if (label) { - memcpy(label->label, p, len); + if (label->len) { + if (label->len < len) + return -ERANGE; + memcpy(label->label, p, len); + } label->len = len; label->pi = pi; label->lfs = lfs; --- linux-5.8.0.orig/fs/nfs/pnfs.c +++ linux-5.8.0/fs/nfs/pnfs.c @@ -294,6 +294,7 @@ pnfs_put_layout_hdr(struct pnfs_layout_hdr *lo) { struct inode *inode; + unsigned long i_state; if (!lo) return; @@ -304,8 +305,12 @@ if (!list_empty(&lo->plh_segs)) WARN_ONCE(1, "NFS: BUG unfreed layout segments.\n"); pnfs_detach_layout_hdr(lo); + i_state = inode->i_state; spin_unlock(&inode->i_lock); pnfs_free_layout_hdr(lo); + /* Notify pnfs_destroy_layout_final() that we're done */ + if (i_state & (I_FREEING | I_CLEAR)) + wake_up_var(lo); } } @@ -319,6 +324,21 @@ return NULL; } +/* + * Compare 2 layout stateid sequence ids, to see which is newer, + * taking into account wraparound issues. + */ +static bool pnfs_seqid_is_newer(u32 s1, u32 s2) +{ + return (s32)(s1 - s2) > 0; +} + +static void pnfs_barrier_update(struct pnfs_layout_hdr *lo, u32 newseq) +{ + if (pnfs_seqid_is_newer(newseq, lo->plh_barrier)) + lo->plh_barrier = newseq; +} + static void pnfs_set_plh_return_info(struct pnfs_layout_hdr *lo, enum pnfs_iomode iomode, u32 seq) @@ -330,6 +350,7 @@ if (seq != 0) { WARN_ON_ONCE(lo->plh_return_seq != 0 && lo->plh_return_seq != seq); lo->plh_return_seq = seq; + pnfs_barrier_update(lo, seq); } } @@ -634,15 +655,6 @@ return rv; } -/* - * Compare 2 layout stateid sequence ids, to see which is newer, - * taking into account wraparound issues. - */ -static bool pnfs_seqid_is_newer(u32 s1, u32 s2) -{ - return (s32)(s1 - s2) > 0; -} - static bool pnfs_should_free_range(const struct pnfs_layout_range *lseg_range, const struct pnfs_layout_range *recall_range) @@ -734,8 +746,7 @@ } } -void -pnfs_destroy_layout(struct nfs_inode *nfsi) +static struct pnfs_layout_hdr *__pnfs_destroy_layout(struct nfs_inode *nfsi) { struct pnfs_layout_hdr *lo; LIST_HEAD(tmp_list); @@ -753,9 +764,34 @@ pnfs_put_layout_hdr(lo); } else spin_unlock(&nfsi->vfs_inode.i_lock); + return lo; +} + +void pnfs_destroy_layout(struct nfs_inode *nfsi) +{ + __pnfs_destroy_layout(nfsi); } EXPORT_SYMBOL_GPL(pnfs_destroy_layout); +static bool pnfs_layout_removed(struct nfs_inode *nfsi, + struct pnfs_layout_hdr *lo) +{ + bool ret; + + spin_lock(&nfsi->vfs_inode.i_lock); + ret = nfsi->layout != lo; + spin_unlock(&nfsi->vfs_inode.i_lock); + return ret; +} + +void pnfs_destroy_layout_final(struct nfs_inode *nfsi) +{ + struct pnfs_layout_hdr *lo = __pnfs_destroy_layout(nfsi); + + if (lo) + wait_var_event(lo, pnfs_layout_removed(nfsi, lo)); +} + static bool pnfs_layout_add_bulk_destroy_list(struct inode *inode, struct list_head *layout_list) @@ -955,8 +991,7 @@ new_barrier = be32_to_cpu(new->seqid); else if (new_barrier == 0) return; - if (pnfs_seqid_is_newer(new_barrier, lo->plh_barrier)) - lo->plh_barrier = new_barrier; + pnfs_barrier_update(lo, new_barrier); } static bool @@ -965,7 +1000,7 @@ { u32 seqid = be32_to_cpu(stateid->seqid); - return !pnfs_seqid_is_newer(seqid, lo->plh_barrier); + return !pnfs_seqid_is_newer(seqid, lo->plh_barrier) && lo->plh_barrier; } /* lget is set to 1 if called from inside send_layoutget call chain */ @@ -1154,20 +1189,17 @@ return false; set_bit(NFS_LAYOUT_RETURN, &lo->plh_flags); pnfs_get_layout_hdr(lo); + nfs4_stateid_copy(stateid, &lo->plh_stateid); + *cred = get_cred(lo->plh_lc_cred); if (test_bit(NFS_LAYOUT_RETURN_REQUESTED, &lo->plh_flags)) { - nfs4_stateid_copy(stateid, &lo->plh_stateid); - *cred = get_cred(lo->plh_lc_cred); if (lo->plh_return_seq != 0) stateid->seqid = cpu_to_be32(lo->plh_return_seq); if (iomode != NULL) *iomode = lo->plh_return_iomode; pnfs_clear_layoutreturn_info(lo); - return true; - } - nfs4_stateid_copy(stateid, &lo->plh_stateid); - *cred = get_cred(lo->plh_lc_cred); - if (iomode != NULL) + } else if (iomode != NULL) *iomode = IOMODE_ANY; + pnfs_barrier_update(lo, be32_to_cpu(stateid->seqid)); return true; } @@ -1226,31 +1258,27 @@ return status; } +static bool +pnfs_layout_segments_returnable(struct pnfs_layout_hdr *lo, + enum pnfs_iomode iomode, + u32 seq) +{ + struct pnfs_layout_range recall_range = { + .length = NFS4_MAX_UINT64, + .iomode = iomode, + }; + return pnfs_mark_matching_lsegs_return(lo, &lo->plh_return_segs, + &recall_range, seq) != -EBUSY; +} + /* Return true if layoutreturn is needed */ static bool pnfs_layout_need_return(struct pnfs_layout_hdr *lo) { - struct pnfs_layout_segment *s; - enum pnfs_iomode iomode; - u32 seq; - if (!test_bit(NFS_LAYOUT_RETURN_REQUESTED, &lo->plh_flags)) return false; - - seq = lo->plh_return_seq; - iomode = lo->plh_return_iomode; - - /* Defer layoutreturn until all recalled lsegs are done */ - list_for_each_entry(s, &lo->plh_segs, pls_list) { - if (seq && pnfs_seqid_is_newer(s->pls_seq, seq)) - continue; - if (iomode != IOMODE_ANY && s->pls_range.iomode != iomode) - continue; - if (test_bit(NFS_LSEG_LAYOUTRETURN, &s->pls_flags)) - return false; - } - - return true; + return pnfs_layout_segments_returnable(lo, lo->plh_return_iomode, + lo->plh_return_seq); } static void pnfs_layoutreturn_before_put_layout_hdr(struct pnfs_layout_hdr *lo) @@ -1484,10 +1512,8 @@ return false; } -int pnfs_roc_done(struct rpc_task *task, struct inode *inode, - struct nfs4_layoutreturn_args **argpp, - struct nfs4_layoutreturn_res **respp, - int *ret) +int pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp, + struct nfs4_layoutreturn_res **respp, int *ret) { struct nfs4_layoutreturn_args *arg = *argpp; int retval = -EAGAIN; @@ -1520,7 +1546,7 @@ return 0; case -NFS4ERR_OLD_STATEID: if (!nfs4_layout_refresh_old_stateid(&arg->stateid, - &arg->range, inode)) + &arg->range, arg->inode)) break; *ret = -NFS4ERR_NOMATCHING_LAYOUT; return -EAGAIN; @@ -1535,12 +1561,18 @@ int ret) { struct pnfs_layout_hdr *lo = args->layout; + struct inode *inode = args->inode; const nfs4_stateid *arg_stateid = NULL; const nfs4_stateid *res_stateid = NULL; struct nfs4_xdr_opaque_data *ld_private = args->ld_private; switch (ret) { case -NFS4ERR_NOMATCHING_LAYOUT: + spin_lock(&inode->i_lock); + if (pnfs_layout_is_valid(lo) && + nfs4_stateid_match_other(&args->stateid, &lo->plh_stateid)) + pnfs_set_plh_return_info(lo, args->range.iomode, 0); + spin_unlock(&inode->i_lock); break; case 0: if (res->lrs_present) @@ -1881,6 +1913,11 @@ wake_up_var(&lo->plh_outstanding); } +static bool pnfs_is_first_layoutget(struct pnfs_layout_hdr *lo) +{ + return test_bit(NFS_LAYOUT_FIRST_LAYOUTGET, &lo->plh_flags); +} + static void pnfs_clear_first_layoutget(struct pnfs_layout_hdr *lo) { unsigned long *bitlock = &lo->plh_flags; @@ -1990,6 +2027,27 @@ goto lookup_again; } + /* + * Because we free lsegs when sending LAYOUTRETURN, we need to wait + * for LAYOUTRETURN. + */ + if (test_bit(NFS_LAYOUT_RETURN, &lo->plh_flags)) { + spin_unlock(&ino->i_lock); + dprintk("%s wait for layoutreturn\n", __func__); + lseg = ERR_PTR(pnfs_prepare_to_retry_layoutget(lo)); + if (!IS_ERR(lseg)) { + pnfs_put_layout_hdr(lo); + dprintk("%s retrying\n", __func__); + trace_pnfs_update_layout(ino, pos, count, iomode, lo, + lseg, + PNFS_UPDATE_LAYOUT_RETRY); + goto lookup_again; + } + trace_pnfs_update_layout(ino, pos, count, iomode, lo, lseg, + PNFS_UPDATE_LAYOUT_RETURN); + goto out_put_layout_hdr; + } + lseg = pnfs_find_lseg(lo, &arg, strict_iomode); if (lseg) { trace_pnfs_update_layout(ino, pos, count, iomode, lo, lseg, @@ -2042,28 +2100,6 @@ nfs4_stateid_copy(&stateid, &lo->plh_stateid); } - /* - * Because we free lsegs before sending LAYOUTRETURN, we need to wait - * for LAYOUTRETURN even if first is true. - */ - if (test_bit(NFS_LAYOUT_RETURN, &lo->plh_flags)) { - spin_unlock(&ino->i_lock); - dprintk("%s wait for layoutreturn\n", __func__); - lseg = ERR_PTR(pnfs_prepare_to_retry_layoutget(lo)); - if (!IS_ERR(lseg)) { - if (first) - pnfs_clear_first_layoutget(lo); - pnfs_put_layout_hdr(lo); - dprintk("%s retrying\n", __func__); - trace_pnfs_update_layout(ino, pos, count, iomode, lo, - lseg, PNFS_UPDATE_LAYOUT_RETRY); - goto lookup_again; - } - trace_pnfs_update_layout(ino, pos, count, iomode, lo, lseg, - PNFS_UPDATE_LAYOUT_RETURN); - goto out_put_layout_hdr; - } - if (pnfs_layoutgets_blocked(lo)) { trace_pnfs_update_layout(ino, pos, count, iomode, lo, lseg, PNFS_UPDATE_LAYOUT_BLOCKED); @@ -2217,6 +2253,7 @@ &rng, GFP_KERNEL); if (!lgp) { pnfs_clear_first_layoutget(lo); + nfs_layoutget_end(lo); pnfs_put_layout_hdr(lo); return; } @@ -2355,23 +2392,34 @@ goto out_forget; } - if (!pnfs_layout_is_valid(lo)) { - /* We have a completely new layout */ - pnfs_set_layout_stateid(lo, &res->stateid, lgp->cred, true); - } else if (nfs4_stateid_match_other(&lo->plh_stateid, &res->stateid)) { + if (nfs4_stateid_match_other(&lo->plh_stateid, &res->stateid)) { /* existing state ID, make sure the sequence number matches. */ if (pnfs_layout_stateid_blocked(lo, &res->stateid)) { + if (!pnfs_layout_is_valid(lo) && + pnfs_is_first_layoutget(lo)) + lo->plh_barrier = 0; dprintk("%s forget reply due to sequence\n", __func__); goto out_forget; } pnfs_set_layout_stateid(lo, &res->stateid, lgp->cred, false); - } else { + } else if (pnfs_layout_is_valid(lo)) { /* * We got an entirely new state ID. Mark all segments for the * inode invalid, and retry the layoutget */ - pnfs_mark_layout_stateid_invalid(lo, &free_me); + struct pnfs_layout_range range = { + .iomode = IOMODE_ANY, + .length = NFS4_MAX_UINT64, + }; + pnfs_set_plh_return_info(lo, IOMODE_ANY, 0); + pnfs_mark_matching_lsegs_return(lo, &lo->plh_return_segs, + &range, 0); goto out_forget; + } else { + /* We have a completely new layout */ + if (!pnfs_is_first_layoutget(lo)) + goto out_forget; + pnfs_set_layout_stateid(lo, &res->stateid, lgp->cred, true); } pnfs_get_lseg(lseg); @@ -2389,19 +2437,10 @@ spin_unlock(&ino->i_lock); lseg->pls_layout = lo; NFS_SERVER(ino)->pnfs_curr_ld->free_lseg(lseg); + pnfs_free_lseg_list(&free_me); return ERR_PTR(-EAGAIN); } -static int -mark_lseg_invalid_or_return(struct pnfs_layout_segment *lseg, - struct list_head *tmp_list) -{ - if (!mark_lseg_invalid(lseg, tmp_list)) - return 0; - pnfs_cache_lseg_for_layoutreturn(lseg->pls_layout, lseg); - return 1; -} - /** * pnfs_mark_matching_lsegs_return - Free or return matching layout segments * @lo: pointer to layout header @@ -2438,7 +2477,7 @@ lseg, lseg->pls_range.iomode, lseg->pls_range.offset, lseg->pls_range.length); - if (mark_lseg_invalid_or_return(lseg, tmp_list)) + if (mark_lseg_invalid(lseg, tmp_list)) continue; remaining++; set_bit(NFS_LSEG_LAYOUTRETURN, &lseg->pls_flags); @@ -2953,7 +2992,8 @@ } /* Resend all requests through pnfs. */ -void pnfs_read_resend_pnfs(struct nfs_pgio_header *hdr) +void pnfs_read_resend_pnfs(struct nfs_pgio_header *hdr, + unsigned int mirror_idx) { struct nfs_pageio_descriptor pgio; @@ -2964,6 +3004,7 @@ nfs_pageio_init_read(&pgio, hdr->inode, false, hdr->completion_ops); + pgio.pg_mirror_idx = mirror_idx; hdr->task.tk_status = nfs_pageio_resend(&pgio, hdr); } } --- linux-5.8.0.orig/fs/nfs/pnfs.h +++ linux-5.8.0/fs/nfs/pnfs.h @@ -266,6 +266,7 @@ void pnfs_layoutget_free(struct nfs4_layoutget *lgp); void pnfs_free_lseg_list(struct list_head *tmp_list); void pnfs_destroy_layout(struct nfs_inode *); +void pnfs_destroy_layout_final(struct nfs_inode *); void pnfs_destroy_all_layouts(struct nfs_client *); int pnfs_destroy_layouts_byfsid(struct nfs_client *clp, struct nfs_fsid *fsid, @@ -294,10 +295,8 @@ struct nfs4_layoutreturn_args *args, struct nfs4_layoutreturn_res *res, const struct cred *cred); -int pnfs_roc_done(struct rpc_task *task, struct inode *inode, - struct nfs4_layoutreturn_args **argpp, - struct nfs4_layoutreturn_res **respp, - int *ret); +int pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp, + struct nfs4_layoutreturn_res **respp, int *ret); void pnfs_roc_release(struct nfs4_layoutreturn_args *args, struct nfs4_layoutreturn_res *res, int ret); @@ -311,7 +310,7 @@ int pnfs_commit_and_return_layout(struct inode *); void pnfs_ld_write_done(struct nfs_pgio_header *); void pnfs_ld_read_done(struct nfs_pgio_header *); -void pnfs_read_resend_pnfs(struct nfs_pgio_header *); +void pnfs_read_resend_pnfs(struct nfs_pgio_header *, unsigned int mirror_idx); struct pnfs_layout_segment *pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, loff_t pos, @@ -710,6 +709,10 @@ { } +static inline void pnfs_destroy_layout_final(struct nfs_inode *nfsi) +{ +} + static inline struct pnfs_layout_segment * pnfs_get_lseg(struct pnfs_layout_segment *lseg) { @@ -765,7 +768,7 @@ } static inline int -pnfs_roc_done(struct rpc_task *task, struct inode *inode, +pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp, struct nfs4_layoutreturn_res **respp, int *ret) --- linux-5.8.0.orig/fs/nfs/pnfs_nfs.c +++ linux-5.8.0/fs/nfs/pnfs_nfs.c @@ -78,22 +78,18 @@ pnfs_generic_clear_request_commit(struct nfs_page *req, struct nfs_commit_info *cinfo) { - struct pnfs_layout_segment *freeme = NULL; + struct pnfs_commit_bucket *bucket = NULL; if (!test_and_clear_bit(PG_COMMIT_TO_DS, &req->wb_flags)) goto out; cinfo->ds->nwritten--; - if (list_is_singular(&req->wb_list)) { - struct pnfs_commit_bucket *bucket; - + if (list_is_singular(&req->wb_list)) bucket = list_first_entry(&req->wb_list, - struct pnfs_commit_bucket, - written); - freeme = pnfs_free_bucket_lseg(bucket); - } + struct pnfs_commit_bucket, written); out: nfs_request_remove_commit_list(req, cinfo); - pnfs_put_lseg(freeme); + if (bucket) + pnfs_put_lseg(pnfs_free_bucket_lseg(bucket)); } EXPORT_SYMBOL_GPL(pnfs_generic_clear_request_commit); @@ -407,12 +403,16 @@ struct pnfs_commit_bucket *bucket, struct nfs_commit_info *cinfo) { + struct pnfs_layout_segment *lseg; struct list_head *pos; list_for_each(pos, &bucket->committing) cinfo->ds->ncommitting--; list_splice_init(&bucket->committing, head); - return pnfs_free_bucket_lseg(bucket); + lseg = pnfs_free_bucket_lseg(bucket); + if (!lseg) + lseg = pnfs_get_lseg(bucket->lseg); + return lseg; } static struct nfs_commit_data * @@ -424,8 +424,6 @@ if (!data) return NULL; data->lseg = pnfs_bucket_get_committing(&data->pages, bucket, cinfo); - if (!data->lseg) - data->lseg = pnfs_get_lseg(bucket->lseg); return data; } --- linux-5.8.0.orig/fs/nfs_common/grace.c +++ linux-5.8.0/fs/nfs_common/grace.c @@ -69,10 +69,14 @@ if (!open) return !list_empty(grace_list); + spin_lock(&grace_lock); list_for_each_entry(lm, grace_list, list) { - if (lm->block_opens) + if (lm->block_opens) { + spin_unlock(&grace_lock); return true; + } } + spin_unlock(&grace_lock); return false; } --- linux-5.8.0.orig/fs/nfsd/Kconfig +++ linux-5.8.0/fs/nfsd/Kconfig @@ -73,6 +73,7 @@ select NFSD_V3 select FS_POSIX_ACL select SUNRPC_GSS + select CRYPTO select CRYPTO_MD5 select CRYPTO_SHA256 select GRACE_PERIOD --- linux-5.8.0.orig/fs/nfsd/filecache.c +++ linux-5.8.0/fs/nfsd/filecache.c @@ -899,6 +899,8 @@ continue; if (!nfsd_match_cred(nf->nf_cred, current_cred())) continue; + if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) + continue; if (nfsd_file_get(nf) != NULL) return nf; } --- linux-5.8.0.orig/fs/nfsd/nfs3xdr.c +++ linux-5.8.0/fs/nfsd/nfs3xdr.c @@ -849,9 +849,14 @@ if (isdotent(name, namlen)) { if (namlen == 2) { dchild = dget_parent(dparent); - /* filesystem root - cannot return filehandle for ".." */ + /* + * Don't return filehandle for ".." if we're at + * the filesystem or export root: + */ if (dchild == dparent) goto out; + if (dparent == exp->ex_path.dentry) + goto out; } else dchild = dget(dparent); } else --- linux-5.8.0.orig/fs/nfsd/nfs4callback.c +++ linux-5.8.0/fs/nfsd/nfs4callback.c @@ -1189,6 +1189,7 @@ switch (task->tk_status) { case -EIO: case -ETIMEDOUT: + case -EACCES: nfsd4_mark_cb_down(clp, task->tk_status); } break; --- linux-5.8.0.orig/fs/nfsd/nfs4proc.c +++ linux-5.8.0/fs/nfsd/nfs4proc.c @@ -1292,7 +1292,7 @@ struct nfsd_file *dst) { nfs42_ssc_close(src->nf_file); - nfsd_file_put(src); + fput(src->nf_file); nfsd_file_put(dst); mntput(ss_mnt); } @@ -1479,6 +1479,7 @@ cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL); if (!cb_copy) goto out; + refcount_set(&cb_copy->refcount, 1); memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res)); cb_copy->cp_clp = copy->cp_clp; cb_copy->nfserr = copy->nfserr; --- linux-5.8.0.orig/fs/nfsd/nfs4recover.c +++ linux-5.8.0/fs/nfsd/nfs4recover.c @@ -747,13 +747,11 @@ }; static int -__cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg) +__cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg, struct nfsd_net *nn) { int ret; struct rpc_pipe_msg msg; struct cld_upcall *cup = container_of(cmsg, struct cld_upcall, cu_u); - struct nfsd_net *nn = net_generic(pipe->dentry->d_sb->s_fs_info, - nfsd_net_id); memset(&msg, 0, sizeof(msg)); msg.data = cmsg; @@ -773,7 +771,7 @@ } static int -cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg) +cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg, struct nfsd_net *nn) { int ret; @@ -782,7 +780,7 @@ * upcalls queued. */ do { - ret = __cld_pipe_upcall(pipe, cmsg); + ret = __cld_pipe_upcall(pipe, cmsg, nn); } while (ret == -EAGAIN); return ret; @@ -1115,7 +1113,7 @@ memcpy(cup->cu_u.cu_msg.cm_u.cm_name.cn_id, clp->cl_name.data, clp->cl_name.len); - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) { ret = cup->cu_u.cu_msg.cm_status; set_bit(NFSD4_CLIENT_STABLE, &clp->cl_flags); @@ -1180,7 +1178,7 @@ } else cmsg->cm_u.cm_clntinfo.cc_princhash.cp_len = 0; - ret = cld_pipe_upcall(cn->cn_pipe, cmsg); + ret = cld_pipe_upcall(cn->cn_pipe, cmsg, nn); if (!ret) { ret = cmsg->cm_status; set_bit(NFSD4_CLIENT_STABLE, &clp->cl_flags); @@ -1218,7 +1216,7 @@ memcpy(cup->cu_u.cu_msg.cm_u.cm_name.cn_id, clp->cl_name.data, clp->cl_name.len); - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) { ret = cup->cu_u.cu_msg.cm_status; clear_bit(NFSD4_CLIENT_STABLE, &clp->cl_flags); @@ -1261,7 +1259,7 @@ memcpy(cup->cu_u.cu_msg.cm_u.cm_name.cn_id, clp->cl_name.data, clp->cl_name.len); - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) { ret = cup->cu_u.cu_msg.cm_status; set_bit(NFSD4_CLIENT_STABLE, &clp->cl_flags); @@ -1404,7 +1402,7 @@ } cup->cu_u.cu_msg.cm_cmd = Cld_GraceStart; - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) ret = cup->cu_u.cu_msg.cm_status; @@ -1432,7 +1430,7 @@ cup->cu_u.cu_msg.cm_cmd = Cld_GraceDone; cup->cu_u.cu_msg.cm_u.cm_gracetime = nn->boot_time; - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) ret = cup->cu_u.cu_msg.cm_status; @@ -1460,7 +1458,7 @@ } cup->cu_u.cu_msg.cm_cmd = Cld_GraceDone; - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) ret = cup->cu_u.cu_msg.cm_status; @@ -1524,7 +1522,7 @@ goto out_err; } cup->cu_u.cu_msg.cm_cmd = Cld_GetVersion; - ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg); + ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn); if (!ret) { ret = cup->cu_u.cu_msg.cm_status; if (ret) --- linux-5.8.0.orig/fs/nfsd/nfs4state.c +++ linux-5.8.0/fs/nfsd/nfs4state.c @@ -769,6 +769,7 @@ spin_lock(&nn->s2s_cp_lock); new_id = idr_alloc_cyclic(&nn->s2s_cp_stateids, stid, 0, 0, GFP_NOWAIT); stid->stid.si_opaque.so_id = new_id; + stid->stid.si_generation = 1; spin_unlock(&nn->s2s_cp_lock); idr_preload_end(); if (new_id < 0) @@ -4597,6 +4598,8 @@ if (!i_am_nfsd()) return NULL; rqst = kthread_data(current); + if (!rqst->rq_lease_breaker) + return NULL; clp = *(rqst->rq_lease_breaker); return dl->dl_stid.sc_client == clp; } @@ -5098,7 +5101,7 @@ memcpy(&open->op_delegate_stateid, &dp->dl_stid.sc_stateid, sizeof(dp->dl_stid.sc_stateid)); - trace_nfsd_deleg_open(&dp->dl_stid.sc_stateid); + trace_nfsd_deleg_read(&dp->dl_stid.sc_stateid); open->op_delegate_type = NFS4_OPEN_DELEGATE_READ; nfs4_put_stid(&dp->dl_stid); return; @@ -5215,7 +5218,7 @@ nfs4_open_delegation(current_fh, open, stp); nodeleg: status = nfs_ok; - trace_nfsd_deleg_none(&stp->st_stid.sc_stateid); + trace_nfsd_open(&stp->st_stid.sc_stateid); out: /* 4.1 client trying to upgrade/downgrade delegation? */ if (open->op_delegate_type == NFS4_OPEN_DELEGATE_NONE && dp && @@ -5367,7 +5370,7 @@ idr_for_each_entry(&nn->s2s_cp_stateids, cps_t, i) { cps = container_of(cps_t, struct nfs4_cpntf_state, cp_stateid); if (cps->cp_stateid.sc_type == NFS4_COPYNOTIFY_STID && - cps->cpntf_time > cutoff) + cps->cpntf_time < cutoff) _free_cpntf_state_locked(nn, cps); } spin_unlock(&nn->s2s_cp_lock); --- linux-5.8.0.orig/fs/nfsd/nfs4xdr.c +++ linux-5.8.0/fs/nfsd/nfs4xdr.c @@ -2379,11 +2379,11 @@ #ifdef CONFIG_NFSD_V4_SECURITY_LABEL static inline __be32 nfsd4_encode_security_label(struct xdr_stream *xdr, struct svc_rqst *rqstp, - void *context, int len) + struct lsmcontext *context) { __be32 *p; - p = xdr_reserve_space(xdr, len + 4 + 4 + 4); + p = xdr_reserve_space(xdr, context->len + 4 + 4 + 4); if (!p) return nfserr_resource; @@ -2393,13 +2393,13 @@ */ *p++ = cpu_to_be32(0); /* lfs */ *p++ = cpu_to_be32(0); /* pi */ - p = xdr_encode_opaque(p, context, len); + p = xdr_encode_opaque(p, context->context, context->len); return 0; } #else static inline __be32 nfsd4_encode_security_label(struct xdr_stream *xdr, struct svc_rqst *rqstp, - void *context, int len) + struct lsmcontext *context) { return 0; } #endif @@ -2496,8 +2496,7 @@ int err; struct nfs4_acl *acl = NULL; #ifdef CONFIG_NFSD_V4_SECURITY_LABEL - void *context = NULL; - int contextlen; + struct lsmcontext context = { }; #endif bool contextsupport = false; struct nfsd4_compoundres *resp = rqstp->rq_resp; @@ -2555,7 +2554,7 @@ bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) { if (exp->ex_flags & NFSEXP_SECURITY_LABEL) err = security_inode_getsecctx(d_inode(dentry), - &context, &contextlen); + &context); else err = -EOPNOTSUPP; contextsupport = (err == 0); @@ -2985,8 +2984,7 @@ #ifdef CONFIG_NFSD_V4_SECURITY_LABEL if (bmval2 & FATTR4_WORD2_SECURITY_LABEL) { - status = nfsd4_encode_security_label(xdr, rqstp, context, - contextlen); + status = nfsd4_encode_security_label(xdr, rqstp, &context); if (status) goto out; } @@ -2998,8 +2996,8 @@ out: #ifdef CONFIG_NFSD_V4_SECURITY_LABEL - if (context) - security_release_secctx(context, contextlen); + if (context.context) + security_release_secctx(&context); #endif /* CONFIG_NFSD_V4_SECURITY_LABEL */ kfree(acl); if (tempfh) { --- linux-5.8.0.orig/fs/nfsd/nfsctl.c +++ linux-5.8.0/fs/nfsd/nfsctl.c @@ -1522,12 +1522,9 @@ int retval; printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); - retval = register_pernet_subsys(&nfsd_net_ops); - if (retval < 0) - return retval; retval = register_cld_notifier(); if (retval) - goto out_unregister_pernet; + return retval; retval = nfsd4_init_slabs(); if (retval) goto out_unregister_notifier; @@ -1545,9 +1542,14 @@ goto out_free_lockd; retval = register_filesystem(&nfsd_fs_type); if (retval) + goto out_free_exports; + retval = register_pernet_subsys(&nfsd_net_ops); + if (retval < 0) goto out_free_all; return 0; out_free_all: + unregister_pernet_subsys(&nfsd_net_ops); +out_free_exports: remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL); out_free_lockd: @@ -1561,13 +1563,12 @@ nfsd4_free_slabs(); out_unregister_notifier: unregister_cld_notifier(); -out_unregister_pernet: - unregister_pernet_subsys(&nfsd_net_ops); return retval; } static void __exit exit_nfsd(void) { + unregister_pernet_subsys(&nfsd_net_ops); nfsd_drc_slab_free(); remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL); @@ -1578,7 +1579,6 @@ nfsd_fault_inject_cleanup(); unregister_filesystem(&nfsd_fs_type); unregister_cld_notifier(); - unregister_pernet_subsys(&nfsd_net_ops); } MODULE_AUTHOR("Olaf Kirch "); --- linux-5.8.0.orig/fs/nfsd/nfsproc.c +++ linux-5.8.0/fs/nfsd/nfsproc.c @@ -118,6 +118,13 @@ return nfsd_return_attrs(nfserr, resp); } +/* Obsolete, replaced by MNTPROC_MNT. */ +static __be32 +nfsd_proc_root(struct svc_rqst *rqstp) +{ + return nfs_ok; +} + /* * Look up a path name component * Note: the dentry in the resp->fh may be negative if the file @@ -203,6 +210,13 @@ return fh_getattr(&resp->fh, &resp->stat); } +/* Reserved */ +static __be32 +nfsd_proc_writecache(struct svc_rqst *rqstp) +{ + return nfs_ok; +} + /* * Write data to a file * N.B. After this call resp->fh needs an fh_put @@ -617,6 +631,7 @@ .pc_xdrressize = ST+AT, }, [NFSPROC_ROOT] = { + .pc_func = nfsd_proc_root, .pc_decode = nfssvc_decode_void, .pc_encode = nfssvc_encode_void, .pc_argsize = sizeof(struct nfsd_void), @@ -654,6 +669,7 @@ .pc_xdrressize = ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4, }, [NFSPROC_WRITECACHE] = { + .pc_func = nfsd_proc_writecache, .pc_decode = nfssvc_decode_void, .pc_encode = nfssvc_encode_void, .pc_argsize = sizeof(struct nfsd_void), --- linux-5.8.0.orig/fs/nfsd/nfssvc.c +++ linux-5.8.0/fs/nfsd/nfssvc.c @@ -527,8 +527,7 @@ return; nfsd_shutdown_net(net); - printk(KERN_WARNING "nfsd: last server has exited, flushing export " - "cache\n"); + pr_info("nfsd: last server has exited, flushing export cache\n"); nfsd_export_flush(net); } --- linux-5.8.0.orig/fs/nfsd/trace.h +++ linux-5.8.0/fs/nfsd/trace.h @@ -289,8 +289,8 @@ DEFINE_STATEID_EVENT(layout_recall_fail); DEFINE_STATEID_EVENT(layout_recall_release); -DEFINE_STATEID_EVENT(deleg_open); -DEFINE_STATEID_EVENT(deleg_none); +DEFINE_STATEID_EVENT(open); +DEFINE_STATEID_EVENT(deleg_read); DEFINE_STATEID_EVENT(deleg_break); DEFINE_STATEID_EVENT(deleg_recall); --- linux-5.8.0.orig/fs/nilfs2/file.c +++ linux-5.8.0/fs/nilfs2/file.c @@ -141,6 +141,7 @@ /* .release = nilfs_release_file, */ .fsync = nilfs_sync_file, .splice_read = generic_file_splice_read, + .splice_write = iter_file_splice_write, }; const struct inode_operations nilfs_file_inode_operations = { --- linux-5.8.0.orig/fs/notify/fanotify/fanotify_user.c +++ linux-5.8.0/fs/notify/fanotify/fanotify_user.c @@ -1173,26 +1173,23 @@ return ret; } +#ifndef CONFIG_ARCH_SPLIT_ARG64 SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, __u64, mask, int, dfd, const char __user *, pathname) { return do_fanotify_mark(fanotify_fd, flags, mask, dfd, pathname); } +#endif -#ifdef CONFIG_COMPAT -COMPAT_SYSCALL_DEFINE6(fanotify_mark, +#if defined(CONFIG_ARCH_SPLIT_ARG64) || defined(CONFIG_COMPAT) +SYSCALL32_DEFINE6(fanotify_mark, int, fanotify_fd, unsigned int, flags, - __u32, mask0, __u32, mask1, int, dfd, + SC_ARG64(mask), int, dfd, const char __user *, pathname) { - return do_fanotify_mark(fanotify_fd, flags, -#ifdef __BIG_ENDIAN - ((__u64)mask0 << 32) | mask1, -#else - ((__u64)mask1 << 32) | mask0, -#endif - dfd, pathname); + return do_fanotify_mark(fanotify_fd, flags, SC_VAL64(__u64, mask), + dfd, pathname); } #endif --- linux-5.8.0.orig/fs/notify/group.c +++ linux-5.8.0/fs/notify/group.c @@ -100,6 +100,7 @@ { refcount_inc(&group->refcnt); } +EXPORT_SYMBOL_GPL(fsnotify_get_group); /* * Drop a reference to a group. Free it if it's through. --- linux-5.8.0.orig/fs/ntfs/inode.c +++ linux-5.8.0/fs/ntfs/inode.c @@ -628,6 +628,12 @@ } a = ctx->attr; /* Get the standard information attribute value. */ + if ((u8 *)a + le16_to_cpu(a->data.resident.value_offset) + + le32_to_cpu(a->data.resident.value_length) > + (u8 *)ctx->mrec + vol->mft_record_size) { + ntfs_error(vi->i_sb, "Corrupt standard information attribute in inode."); + goto unm_err_out; + } si = (STANDARD_INFORMATION*)((u8*)a + le16_to_cpu(a->data.resident.value_offset)); @@ -1809,6 +1815,12 @@ brelse(bh); } + if (le32_to_cpu(m->bytes_allocated) != vol->mft_record_size) { + ntfs_error(sb, "Incorrect mft record size %u in superblock, should be %u.", + le32_to_cpu(m->bytes_allocated), vol->mft_record_size); + goto err_out; + } + /* Apply the mst fixups. */ if (post_read_mst_fixup((NTFS_RECORD*)m, vol->mft_record_size)) { /* FIXME: Try to use the $MFTMirr now. */ --- linux-5.8.0.orig/fs/ocfs2/cluster/heartbeat.c +++ linux-5.8.0/fs/ocfs2/cluster/heartbeat.c @@ -2050,7 +2050,7 @@ o2hb_nego_timeout_handler, reg, NULL, ®->hr_handler_list); if (ret) - goto free; + goto remove_item; ret = o2net_register_handler(O2HB_NEGO_APPROVE_MSG, reg->hr_key, sizeof(struct o2hb_nego_msg), @@ -2065,6 +2065,12 @@ unregister_handler: o2net_unregister_handler_list(®->hr_handler_list); +remove_item: + spin_lock(&o2hb_live_lock); + list_del(®->hr_all_item); + if (o2hb_global_heartbeat_active()) + clear_bit(reg->hr_region_num, o2hb_region_bitmap); + spin_unlock(&o2hb_live_lock); free: kfree(reg); return ERR_PTR(ret); --- linux-5.8.0.orig/fs/ocfs2/dlmglue.c +++ linux-5.8.0/fs/ocfs2/dlmglue.c @@ -2871,9 +2871,15 @@ status = ocfs2_cluster_lock(osb, lockres, ex ? LKM_EXMODE : LKM_PRMODE, 0, 0); - if (status < 0) + if (status < 0) { mlog(ML_ERROR, "lock on nfs sync lock failed %d\n", status); + if (ex) + up_write(&osb->nfs_sync_rwlock); + else + up_read(&osb->nfs_sync_rwlock); + } + return status; } --- linux-5.8.0.orig/fs/ocfs2/ocfs2.h +++ linux-5.8.0/fs/ocfs2/ocfs2.h @@ -327,8 +327,8 @@ spinlock_t osb_lock; u32 s_next_generation; unsigned long osb_flags; - s16 s_inode_steal_slot; - s16 s_meta_steal_slot; + u16 s_inode_steal_slot; + u16 s_meta_steal_slot; atomic_t s_num_inodes_stolen; atomic_t s_num_meta_stolen; --- linux-5.8.0.orig/fs/ocfs2/suballoc.c +++ linux-5.8.0/fs/ocfs2/suballoc.c @@ -879,9 +879,9 @@ { spin_lock(&osb->osb_lock); if (type == INODE_ALLOC_SYSTEM_INODE) - osb->s_inode_steal_slot = slot; + osb->s_inode_steal_slot = (u16)slot; else if (type == EXTENT_ALLOC_SYSTEM_INODE) - osb->s_meta_steal_slot = slot; + osb->s_meta_steal_slot = (u16)slot; spin_unlock(&osb->osb_lock); } --- linux-5.8.0.orig/fs/ocfs2/super.c +++ linux-5.8.0/fs/ocfs2/super.c @@ -78,7 +78,7 @@ unsigned long commit_interval; unsigned long mount_opt; unsigned int atime_quantum; - signed short slot; + unsigned short slot; int localalloc_opt; unsigned int resv_level; int dir_resv_level; @@ -1349,7 +1349,7 @@ goto bail; } if (option) - mopt->slot = (s16)option; + mopt->slot = (u16)option; break; case Opt_commit: if (match_int(&args[0], &option)) { @@ -1713,6 +1713,7 @@ oi->ip_blkno = 0ULL; oi->ip_clusters = 0; + oi->ip_next_orphan = NULL; ocfs2_resv_init_once(&oi->ip_la_data_resv); --- linux-5.8.0.orig/fs/open.c +++ linux-5.8.0/fs/open.c @@ -65,6 +65,7 @@ inode_unlock(dentry->d_inode); return ret; } +EXPORT_SYMBOL_GPL(do_truncate); long vfs_truncate(const struct path *path, loff_t length) { @@ -1021,6 +1022,10 @@ if (how->resolve & ~VALID_RESOLVE_FLAGS) return -EINVAL; + /* Scoping flags are mutually exclusive. */ + if ((how->resolve & RESOLVE_BENEATH) && (how->resolve & RESOLVE_IN_ROOT)) + return -EINVAL; + /* Deal with the mode. */ if (WILL_CREATE(flags)) { if (how->mode & ~S_IALLUGO) --- linux-5.8.0.orig/fs/overlayfs/copy_up.c +++ linux-5.8.0/fs/overlayfs/copy_up.c @@ -83,6 +83,14 @@ if (ovl_is_private_xattr(name)) continue; + + error = security_inode_copy_up_xattr(name); + if (error < 0 && error != -EOPNOTSUPP) + break; + if (error == 1) { + error = 0; + continue; /* Discard */ + } retry: size = vfs_getxattr(old, name, value, value_size); if (size == -ERANGE) @@ -106,13 +114,6 @@ goto retry; } - error = security_inode_copy_up_xattr(name); - if (error < 0 && error != -EOPNOTSUPP) - break; - if (error == 1) { - error = 0; - continue; /* Discard */ - } error = vfs_setxattr(new, name, value, size, 0); if (error) { if (error != -EOPNOTSUPP || ovl_must_copy_xattr(name)) @@ -252,10 +253,19 @@ { int err = 0; + /* + * For the most part we want to set the mode bits before setting + * the user, otherwise the current context might lack permission + * for setting the mode. However for sxid/sticky bits we want + * the operation to fail if the current user isn't privileged + * towards the resulting inode. So we first set the mode but + * exclude the sxid/sticky bits, then set the user, then set the + * mode again if any of the sxid/sticky bits are set. + */ if (!S_ISLNK(stat->mode)) { struct iattr attr = { .ia_valid = ATTR_MODE, - .ia_mode = stat->mode, + .ia_mode = stat->mode & ~(S_ISUID|S_ISGID|S_ISVTX), }; err = notify_change(upperdentry, &attr, NULL); } @@ -267,6 +277,14 @@ }; err = notify_change(upperdentry, &attr, NULL); } + if (!err && !S_ISLNK(stat->mode) && + (stat->mode & (S_ISUID|S_ISGID|S_ISVTX))) { + struct iattr attr = { + .ia_valid = ATTR_MODE, + .ia_mode = stat->mode, + }; + err = notify_change(upperdentry, &attr, NULL); + } if (!err) ovl_set_timestamps(upperdentry, stat); --- linux-5.8.0.orig/fs/overlayfs/dir.c +++ linux-5.8.0/fs/overlayfs/dir.c @@ -992,8 +992,8 @@ buflen -= thislen; memcpy(&buf[buflen], name, thislen); - tmp = dget_dlock(d->d_parent); spin_unlock(&d->d_lock); + tmp = dget_parent(d); dput(d); d = tmp; --- linux-5.8.0.orig/fs/overlayfs/file.c +++ linux-5.8.0/fs/overlayfs/file.c @@ -39,6 +39,7 @@ static struct file *ovl_open_realfile(const struct file *file, struct inode *realinode) { + struct path realpath; struct inode *inode = file_inode(file); struct file *realfile; const struct cred *old_cred; @@ -53,10 +54,12 @@ err = inode_permission(realinode, MAY_OPEN | acc_mode); if (err) { realfile = ERR_PTR(err); - } else if (!inode_owner_or_capable(realinode)) { - realfile = ERR_PTR(-EPERM); } else { - realfile = open_with_fake_path(&file->f_path, flags, realinode, + if (!inode_owner_or_capable(realinode)) + flags &= ~O_NOATIME; + + ovl_path_real(file->f_path.dentry, &realpath); + realfile = open_with_fake_path(&realpath, flags, realinode, current_cred()); } revert_creds(old_cred); @@ -75,12 +78,6 @@ struct inode *inode = file_inode(file); int err; - flags |= OVL_OPEN_FLAGS; - - /* If some flag changed that cannot be changed then something's amiss */ - if (WARN_ON((file->f_flags ^ flags) & ~OVL_SETFL_MASK)) - return -EIO; - flags &= OVL_SETFL_MASK; if (((flags ^ file->f_flags) & O_APPEND) && IS_APPEND(inode)) @@ -449,6 +446,18 @@ return ret; } +/* handle vma->vm_prfile */ +static void ovl_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +} + static int ovl_mmap(struct file *file, struct vm_area_struct *vma) { struct file *realfile = file->private_data; @@ -468,9 +477,30 @@ revert_creds(old_cred); if (ret) { - /* Drop reference count from new vm_file value */ + /* + * Drop reference count from new vm_file value and restore + * original vm_file value + */ + vma->vm_file = file; fput(realfile); } else { + /* + * In map_files_get_link() (fs/proc/base.c) + * we need to determine correct path from overlayfs. + * But real_mount(realfile->f_path.mnt) may be not + * equal to real_mount(file->f_path.mnt). In such case + * fdinfo of the same file which was opened from + * /proc//map_files/... and "usual" path + * will show different mnt_id. + * + * We solve issue like in aufs by using additional + * field on struct vm_area_struct called "vm_prfile" + * which is used only for fdinfo/"printing" needs. + * + * See also mm/prfile.c + */ + ovl_vm_prfile_set(vma, file); + /* Drop reference count from previous vm_file value */ fput(file); } --- linux-5.8.0.orig/fs/overlayfs/inode.c +++ linux-5.8.0/fs/overlayfs/inode.c @@ -281,7 +281,6 @@ { struct inode *upperinode = ovl_inode_upper(inode); struct inode *realinode = upperinode ?: ovl_inode_lower(inode); - const struct cred *old_cred; int err; /* Careful in RCU walk mode */ @@ -298,15 +297,13 @@ if (err) return err; - old_cred = ovl_override_creds(inode->i_sb); if (!upperinode && !special_file(realinode->i_mode) && mask & MAY_WRITE) { mask &= ~(MAY_WRITE | MAY_APPEND); /* Make sure mounter can read file for copy up later */ mask |= MAY_READ; } - err = inode_permission(realinode, mask); - revert_creds(old_cred); + err = ovl_creator_permission(inode->i_sb, realinode, mask); return err; } @@ -346,7 +343,9 @@ goto out; if (!value && !upperdentry) { + old_cred = ovl_override_creds(dentry->d_sb); err = vfs_getxattr(realdentry, name, NULL, 0); + revert_creds(old_cred); if (err < 0) goto out_drop_write; } --- linux-5.8.0.orig/fs/overlayfs/overlayfs.h +++ linux-5.8.0/fs/overlayfs/overlayfs.h @@ -173,7 +173,13 @@ static inline int ovl_do_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) { - int err = vfs_setxattr(dentry, name, value, size, flags); + struct inode *inode = dentry->d_inode; + int err; + + inode_lock(inode); + err = __vfs_setxattr_noperm(dentry, name, value, size, flags); + inode_unlock(inode); + pr_debug("setxattr(%pd2, \"%s\", \"%*pE\", %zu, 0x%x) = %i\n", dentry, name, min((int)size, 48), value, size, flags, err); return err; @@ -181,7 +187,13 @@ static inline int ovl_do_removexattr(struct dentry *dentry, const char *name) { - int err = vfs_removexattr(dentry, name); + struct inode *inode = dentry->d_inode; + int err; + + inode_lock(inode); + err = __vfs_removexattr_noperm(dentry, name); + inode_unlock(inode); + pr_debug("removexattr(%pd2, \"%s\") = %i\n", dentry, name, err); return err; } @@ -230,6 +242,8 @@ void ovl_drop_write(struct dentry *dentry); struct dentry *ovl_workdir(struct dentry *dentry); const struct cred *ovl_override_creds(struct super_block *sb); +int ovl_creator_permission(struct super_block *sb, struct inode *inode, + int mode); 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); --- linux-5.8.0.orig/fs/overlayfs/readdir.c +++ linux-5.8.0/fs/overlayfs/readdir.c @@ -370,6 +370,12 @@ next = ovl_path_next(idx, dentry, &realpath); rdd.is_upper = ovl_dentry_upper(dentry) == realpath.dentry; + err = ovl_creator_permission(dentry->d_sb, + d_inode(realpath.dentry), + MAY_READ); + if (err) + break; + if (next != -1) { err = ovl_dir_read(&realpath, &rdd); if (err) @@ -751,6 +757,12 @@ ovl_dir_reset(file); if (od->is_real) { + err = ovl_creator_permission(dentry->d_sb, + file_inode(od->realfile), + MAY_READ); + if (err) + return err; + /* * If parent is merge, then need to adjust d_ino for '..', if * dir is impure then need to adjust d_ino for copied up --- linux-5.8.0.orig/fs/overlayfs/super.c +++ linux-5.8.0/fs/overlayfs/super.c @@ -79,7 +79,7 @@ static struct dentry *ovl_d_real(struct dentry *dentry, const struct inode *inode) { - struct dentry *real; + struct dentry *real = NULL, *lower; /* It's an overlay file */ if (inode && d_inode(dentry) == inode) @@ -98,9 +98,10 @@ if (real && !inode && ovl_has_upperdata(d_inode(dentry))) return real; - real = ovl_dentry_lowerdata(dentry); - if (!real) + lower = ovl_dentry_lowerdata(dentry); + if (!lower) goto bug; + real = lower; /* Handle recursion */ real = d_real(real, inode); @@ -108,8 +109,10 @@ if (!inode || inode == d_inode(real)) return real; bug: - WARN(1, "ovl_d_real(%pd4, %s:%lu): real dentry not found\n", dentry, - inode ? inode->i_sb->s_id : "NULL", inode ? inode->i_ino : 0); + WARN(1, "%s(%pd4, %s:%lu): real dentry (%p/%lu) not found\n", + __func__, dentry, inode ? inode->i_sb->s_id : "NULL", + inode ? inode->i_ino : 0, real, + real && d_inode(real) ? d_inode(real)->i_ino : 0); return dentry; } @@ -811,7 +814,8 @@ ovl_unescape(tmp); err = ovl_mount_dir_noesc(tmp, path); - if (!err && path->dentry->d_flags & DCACHE_OP_REAL) { + if (!err && (path->dentry->d_flags & DCACHE_OP_REAL && + path->dentry->d_sb->s_magic != SHIFTFS_MAGIC)) { pr_err("filesystem on '%s' not supported as upperdir\n", tmp); path_put_init(path); @@ -1554,6 +1558,13 @@ */ mnt->mnt_flags |= MNT_READONLY | MNT_NOATIME; + /* + * If any lower mount is nosuid, force the ovl sb to also + * be nosuid. + */ + if (mnt->mnt_flags & MNT_NOSUID) + sb->s_iflags |= SB_I_NOSUID; + layers[ofs->numlayer].trap = trap; layers[ofs->numlayer].mnt = mnt; layers[ofs->numlayer].idx = ofs->numlayer; @@ -1862,6 +1873,13 @@ if (!ofs->workdir) sb->s_flags |= SB_RDONLY; + /* + * If the upper mount is nosuid, force the ovl sb to also + * be nosuid. + */ + if (ovl_upper_mnt(ofs)->mnt_flags & MNT_NOSUID) + sb->s_iflags |= SB_I_NOSUID; + sb->s_stack_depth = ovl_upper_mnt(ofs)->mnt_sb->s_stack_depth; sb->s_time_gran = ovl_upper_mnt(ofs)->mnt_sb->s_time_gran; @@ -1949,6 +1967,7 @@ .name = "overlay", .mount = ovl_mount, .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("overlay"); --- linux-5.8.0.orig/fs/overlayfs/util.c +++ linux-5.8.0/fs/overlayfs/util.c @@ -40,6 +40,19 @@ return override_creds(ofs->creator_cred); } +int ovl_creator_permission(struct super_block *sb, struct inode *inode, + int mode) +{ + const struct cred *old_cred; + int err = 0; + + old_cred = ovl_override_creds(sb); + err = inode_permission(inode, mode); + revert_creds(old_cred); + + return err; +} + /* * Check if underlying fs supports file handles and try to determine encoding * type, in order to deduce maximum inode number used by fs. --- linux-5.8.0.orig/fs/pipe.c +++ linux-5.8.0/fs/pipe.c @@ -106,25 +106,6 @@ } } -/* Drop the inode semaphore and wait for a pipe event, atomically */ -void pipe_wait(struct pipe_inode_info *pipe) -{ - DEFINE_WAIT(rdwait); - DEFINE_WAIT(wrwait); - - /* - * Pipes are system-local resources, so sleeping on them - * is considered a noninteractive wait: - */ - prepare_to_wait(&pipe->rd_wait, &rdwait, TASK_INTERRUPTIBLE); - prepare_to_wait(&pipe->wr_wait, &wrwait, TASK_INTERRUPTIBLE); - pipe_unlock(pipe); - schedule(); - finish_wait(&pipe->rd_wait, &rdwait); - finish_wait(&pipe->wr_wait, &wrwait); - pipe_lock(pipe); -} - static void anon_pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf) { @@ -913,19 +894,18 @@ { struct inode *inode = get_pipe_inode(); struct file *f; + int error; if (!inode) return -ENFILE; if (flags & O_NOTIFICATION_PIPE) { -#ifdef CONFIG_WATCH_QUEUE - if (watch_queue_init(inode->i_pipe) < 0) { + error = watch_queue_init(inode->i_pipe); + if (error) { + free_pipe_info(inode->i_pipe); iput(inode); - return -ENOMEM; + return error; } -#else - return -ENOPKG; -#endif } f = alloc_file_pseudo(inode, pipe_mnt, "", @@ -1035,12 +1015,52 @@ return do_pipe2(fildes, 0); } +/* + * This is the stupid "wait for pipe to be readable or writable" + * model. + * + * See pipe_read/write() for the proper kind of exclusive wait, + * but that requires that we wake up any other readers/writers + * if we then do not end up reading everything (ie the whole + * "wake_next_reader/writer" logic in pipe_read/write()). + */ +void pipe_wait_readable(struct pipe_inode_info *pipe) +{ + pipe_unlock(pipe); + wait_event_interruptible(pipe->rd_wait, pipe_readable(pipe)); + pipe_lock(pipe); +} + +void pipe_wait_writable(struct pipe_inode_info *pipe) +{ + pipe_unlock(pipe); + wait_event_interruptible(pipe->wr_wait, pipe_writable(pipe)); + pipe_lock(pipe); +} + +/* + * This depends on both the wait (here) and the wakeup (wake_up_partner) + * holding the pipe lock, so "*cnt" is stable and we know a wakeup cannot + * race with the count check and waitqueue prep. + * + * Normally in order to avoid races, you'd do the prepare_to_wait() first, + * then check the condition you're waiting for, and only then sleep. But + * because of the pipe lock, we can check the condition before being on + * the wait queue. + * + * We use the 'rd_wait' waitqueue for pipe partner waiting. + */ static int wait_for_partner(struct pipe_inode_info *pipe, unsigned int *cnt) { + DEFINE_WAIT(rdwait); int cur = *cnt; while (cur == *cnt) { - pipe_wait(pipe); + prepare_to_wait(&pipe->rd_wait, &rdwait, TASK_INTERRUPTIBLE); + pipe_unlock(pipe); + schedule(); + finish_wait(&pipe->rd_wait, &rdwait); + pipe_lock(pipe); if (signal_pending(current)) break; } @@ -1050,7 +1070,6 @@ static void wake_up_partner(struct pipe_inode_info *pipe) { wake_up_interruptible_all(&pipe->rd_wait); - wake_up_interruptible_all(&pipe->wr_wait); } static int fifo_open(struct inode *inode, struct file *filp) @@ -1187,6 +1206,7 @@ .unlocked_ioctl = pipe_ioctl, .release = pipe_release, .fasync = pipe_fasync, + .splice_write = iter_file_splice_write, }; /* --- linux-5.8.0.orig/fs/pnode.h +++ linux-5.8.0/fs/pnode.h @@ -12,7 +12,7 @@ #define IS_MNT_SHARED(m) ((m)->mnt.mnt_flags & MNT_SHARED) #define IS_MNT_SLAVE(m) ((m)->mnt_master) -#define IS_MNT_NEW(m) (!(m)->mnt_ns) +#define IS_MNT_NEW(m) (!(m)->mnt_ns || is_anon_ns((m)->mnt_ns)) #define CLEAR_MNT_SHARED(m) ((m)->mnt.mnt_flags &= ~MNT_SHARED) #define IS_MNT_UNBINDABLE(m) ((m)->mnt.mnt_flags & MNT_UNBINDABLE) #define IS_MNT_MARKED(m) ((m)->mnt.mnt_flags & MNT_MARKED) @@ -44,7 +44,7 @@ void propagate_mount_unlock(struct mount *); void mnt_release_group_id(struct mount *); int get_dominating_id(struct mount *mnt, const struct path *root); -unsigned int mnt_get_count(struct mount *mnt); +int mnt_get_count(struct mount *mnt); void mnt_set_mountpoint(struct mount *, struct mountpoint *, struct mount *); void mnt_change_mountpoint(struct mount *parent, struct mountpoint *mp, --- linux-5.8.0.orig/fs/proc/Makefile +++ linux-5.8.0/fs/proc/Makefile @@ -33,4 +33,4 @@ proc-$(CONFIG_PROC_VMCORE) += vmcore.o proc-$(CONFIG_PRINTK) += kmsg.o proc-$(CONFIG_PROC_PAGE_MONITOR) += page.o -proc-$(CONFIG_BOOT_CONFIG) += bootconfig.o +proc-$(CONFIG_BOOT_CONFIG) += bootconfig.o version_signature.o --- linux-5.8.0.orig/fs/proc/base.c +++ linux-5.8.0/fs/proc/base.c @@ -405,11 +405,11 @@ static int lock_trace(struct task_struct *task) { - int err = mutex_lock_killable(&task->signal->exec_update_mutex); + int err = down_read_killable(&task->signal->exec_update_lock); if (err) return err; if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) { - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); return -EPERM; } return 0; @@ -417,7 +417,7 @@ static void unlock_trace(struct task_struct *task) { - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); } #ifdef CONFIG_STACKTRACE @@ -846,7 +846,7 @@ flags = FOLL_FORCE | (write ? FOLL_WRITE : 0); while (count > 0) { - int this_len = min_t(int, count, PAGE_SIZE); + size_t this_len = min_t(size_t, count, PAGE_SIZE); if (write && copy_from_user(page, buf, this_len)) { copied = -EFAULT; @@ -1046,7 +1046,6 @@ static int __set_oom_adj(struct file *file, int oom_adj, bool legacy) { - static DEFINE_MUTEX(oom_adj_mutex); struct mm_struct *mm = NULL; struct task_struct *task; int err = 0; @@ -1086,7 +1085,7 @@ struct task_struct *p = find_lock_task_mm(task); if (p) { - if (atomic_read(&p->mm->mm_users) > 1) { + if (test_bit(MMF_MULTIPROCESS, &p->mm->flags)) { mm = p->mm; mmgrab(mm); } @@ -2170,7 +2169,7 @@ rc = -ENOENT; vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { - *path = vma->vm_file->f_path; + *path = vma_pr_or_file(vma)->f_path; path_get(path); rc = 0; } @@ -2794,6 +2793,8 @@ ATTR(NULL, "fscreate", 0666), ATTR(NULL, "keycreate", 0666), ATTR(NULL, "sockcreate", 0666), + ATTR(NULL, "display", 0666), + ATTR(NULL, "context", 0444), #ifdef CONFIG_SECURITY_SMACK DIR("smack", 0555, proc_smack_attr_dir_inode_ops, proc_smack_attr_dir_ops), @@ -2916,7 +2917,7 @@ unsigned long flags; int result; - result = mutex_lock_killable(&task->signal->exec_update_mutex); + result = down_read_killable(&task->signal->exec_update_lock); if (result) return result; @@ -2952,7 +2953,7 @@ result = 0; out_unlock: - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); return result; } --- linux-5.8.0.orig/fs/proc/generic.c +++ linux-5.8.0/fs/proc/generic.c @@ -349,6 +349,16 @@ .iterate_shared = proc_readdir, }; +static int proc_net_d_revalidate(struct dentry *dentry, unsigned int flags) +{ + return 0; +} + +const struct dentry_operations proc_net_dentry_ops = { + .d_revalidate = proc_net_d_revalidate, + .d_delete = always_delete_dentry, +}; + /* * proc directories can do almost nothing.. */ @@ -471,8 +481,8 @@ } EXPORT_SYMBOL(proc_symlink); -struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, - struct proc_dir_entry *parent, void *data) +struct proc_dir_entry *_proc_mkdir(const char *name, umode_t mode, + struct proc_dir_entry *parent, void *data, bool force_lookup) { struct proc_dir_entry *ent; @@ -484,10 +494,20 @@ ent->data = data; ent->proc_dir_ops = &proc_dir_operations; ent->proc_iops = &proc_dir_inode_operations; + if (force_lookup) { + pde_force_lookup(ent); + } ent = proc_register(parent, ent); } return ent; } +EXPORT_SYMBOL_GPL(_proc_mkdir); + +struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, + struct proc_dir_entry *parent, void *data) +{ + return _proc_mkdir(name, mode, parent, data, false); +} EXPORT_SYMBOL_GPL(proc_mkdir_data); struct proc_dir_entry *proc_mkdir_mode(const char *name, umode_t mode, --- linux-5.8.0.orig/fs/proc/internal.h +++ linux-5.8.0/fs/proc/internal.h @@ -310,3 +310,10 @@ unsigned long *, unsigned long *, unsigned long *, unsigned long *); extern void task_mem(struct seq_file *, struct mm_struct *); + +extern const struct dentry_operations proc_net_dentry_ops; +static inline void pde_force_lookup(struct proc_dir_entry *pde) +{ + /* /proc/net/ entries can be changed under us by setns(CLONE_NEWNET) */ + pde->proc_dops = &proc_net_dentry_ops; +} --- linux-5.8.0.orig/fs/proc/nommu.c +++ linux-5.8.0/fs/proc/nommu.c @@ -40,7 +40,10 @@ file = region->vm_file; if (file) { - struct inode *inode = file_inode(region->vm_file); + struct inode *inode; + + file = vmr_pr_or_file(region); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; } --- linux-5.8.0.orig/fs/proc/proc_net.c +++ linux-5.8.0/fs/proc/proc_net.c @@ -39,22 +39,6 @@ return maybe_get_net(PDE_NET(PDE(inode))); } -static int proc_net_d_revalidate(struct dentry *dentry, unsigned int flags) -{ - return 0; -} - -static const struct dentry_operations proc_net_dentry_ops = { - .d_revalidate = proc_net_d_revalidate, - .d_delete = always_delete_dentry, -}; - -static void pde_force_lookup(struct proc_dir_entry *pde) -{ - /* /proc/net/ entries can be changed under us by setns(CLONE_NEWNET) */ - pde->proc_dops = &proc_net_dentry_ops; -} - static int seq_open_net(struct inode *inode, struct file *file) { unsigned int state_size = PDE(inode)->state_size; --- linux-5.8.0.orig/fs/proc/proc_sysctl.c +++ linux-5.8.0/fs/proc/proc_sysctl.c @@ -577,7 +577,7 @@ goto out; } } else { - kbuf = kzalloc(count, GFP_KERNEL); + kbuf = kvzalloc(count, GFP_KERNEL); if (!kbuf) goto out; } @@ -600,7 +600,7 @@ error = count; out_free_buf: - kfree(kbuf); + kvfree(kbuf); out: sysctl_head_finish(head); @@ -1770,6 +1770,12 @@ return 0; } + if (!val) + return -EINVAL; + len = strlen(val); + if (len == 0) + return -EINVAL; + /* * To set sysctl options, we use a temporary mount of proc, look up the * respective sys/ file and write to it. To avoid mounting it when no @@ -1811,7 +1817,6 @@ file, param, val); goto out; } - len = strlen(val); wret = kernel_write(file, val, len, &pos); if (wret < 0) { err = wret; --- linux-5.8.0.orig/fs/proc/self.c +++ linux-5.8.0/fs/proc/self.c @@ -16,6 +16,13 @@ pid_t tgid = task_tgid_nr_ns(current, ns); char *name; + /* + * Not currently supported. Once we can inherit all of struct pid, + * we can allow this. + */ + if (current->flags & PF_IO_WORKER) + return ERR_PTR(-EOPNOTSUPP); + if (!tgid) return ERR_PTR(-ENOENT); /* max length of unsigned int in decimal + NULL term */ --- linux-5.8.0.orig/fs/proc/task_mmu.c +++ linux-5.8.0/fs/proc/task_mmu.c @@ -280,7 +280,10 @@ const char *name = NULL; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; @@ -1113,7 +1116,6 @@ struct mm_struct *mm; struct vm_area_struct *vma; enum clear_refs_types type; - struct mmu_gather tlb; int itype; int rv; @@ -1158,7 +1160,6 @@ count = -EINTR; goto out_mm; } - tlb_gather_mmu(&tlb, mm, 0, -1); if (type == CLEAR_REFS_SOFT_DIRTY) { for (vma = mm->mmap; vma; vma = vma->vm_next) { if (!(vma->vm_flags & VM_SOFTDIRTY)) @@ -1194,15 +1195,18 @@ break; } + inc_tlb_flush_pending(mm); mmu_notifier_range_init(&range, MMU_NOTIFY_SOFT_DIRTY, 0, NULL, mm, 0, -1UL); mmu_notifier_invalidate_range_start(&range); } walk_page_range(mm, 0, mm->highest_vm_end, &clear_refs_walk_ops, &cp); - if (type == CLEAR_REFS_SOFT_DIRTY) + if (type == CLEAR_REFS_SOFT_DIRTY) { mmu_notifier_invalidate_range_end(&range); - tlb_finish_mmu(&tlb, 0, -1); + flush_tlb_mm(mm); + dec_tlb_flush_pending(mm); + } mmap_read_unlock(mm); out_mm: mmput(mm); @@ -1541,11 +1545,15 @@ src = *ppos; svpfn = src / PM_ENTRY_BYTES; - start_vaddr = svpfn << PAGE_SHIFT; end_vaddr = mm->task_size; /* watch out for wraparound */ - if (svpfn > mm->task_size >> PAGE_SHIFT) + start_vaddr = end_vaddr; + if (svpfn <= (ULONG_MAX >> PAGE_SHIFT)) + start_vaddr = untagged_addr(svpfn << PAGE_SHIFT); + + /* Ensure the address is inside the task */ + if (start_vaddr > mm->task_size) start_vaddr = end_vaddr; /* @@ -1793,7 +1801,7 @@ struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; - struct file *file = vma->vm_file; + struct file *file = vma_pr_or_file(vma); struct mm_struct *mm = vma->vm_mm; struct mempolicy *pol; char buffer[64]; --- linux-5.8.0.orig/fs/proc/task_nommu.c +++ linux-5.8.0/fs/proc/task_nommu.c @@ -155,7 +155,10 @@ file = vma->vm_file; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; --- linux-5.8.0.orig/fs/proc/thread_self.c +++ linux-5.8.0/fs/proc/thread_self.c @@ -17,6 +17,13 @@ pid_t pid = task_pid_nr_ns(current, ns); char *name; + /* + * Not currently supported. Once we can inherit all of struct pid, + * we can allow this. + */ + if (current->flags & PF_IO_WORKER) + return ERR_PTR(-EOPNOTSUPP); + if (!pid) return ERR_PTR(-ENOENT); name = kmalloc(10 + 6 + 10 + 1, dentry ? GFP_KERNEL : GFP_ATOMIC); --- linux-5.8.0.orig/fs/proc/version_signature.c +++ linux-5.8.0/fs/proc/version_signature.c @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include +#include +#include + +static int version_signature_proc_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%s\n", CONFIG_VERSION_SIGNATURE); + return 0; +} + +static int version_signature_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, version_signature_proc_show, NULL); +} + +static const struct proc_ops version_signature_proc_fops = { + .proc_open = version_signature_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + +static int __init proc_version_signature_init(void) +{ + proc_create("version_signature", 0, NULL, &version_signature_proc_fops); + return 0; +} +module_init(proc_version_signature_init); --- linux-5.8.0.orig/fs/pstore/inode.c +++ linux-5.8.0/fs/pstore/inode.c @@ -467,7 +467,7 @@ static void pstore_kill_sb(struct super_block *sb) { mutex_lock(&pstore_sb_lock); - WARN_ON(pstore_sb != sb); + WARN_ON(pstore_sb && pstore_sb != sb); kill_litter_super(sb); pstore_sb = NULL; --- linux-5.8.0.orig/fs/pstore/platform.c +++ linux-5.8.0/fs/pstore/platform.c @@ -269,6 +269,9 @@ { int ret; + if (!IS_ENABLED(CONFIG_PSTORE_COMPRESS)) + return -EINVAL; + ret = crypto_comp_compress(tfm, in, inlen, out, &outlen); if (ret) { pr_err("crypto_comp_compress failed, ret = %d!\n", ret); @@ -668,7 +671,7 @@ int unzipped_len; char *unzipped, *workspace; - if (!record->compressed) + if (!IS_ENABLED(CONFIG_PSTORE_COMPRESS) || !record->compressed) return; /* Only PSTORE_TYPE_DMESG support compression. */ --- linux-5.8.0.orig/fs/quota/dquot.c +++ linux-5.8.0/fs/quota/dquot.c @@ -2454,7 +2454,7 @@ ret = dquot_load_quota_sb(sb, cnt, dqopt->info[cnt].dqi_fmt_id, flags); if (ret < 0) - vfs_cleanup_quota_inode(sb, type); + vfs_cleanup_quota_inode(sb, cnt); } return ret; --- linux-5.8.0.orig/fs/quota/quota_tree.c +++ linux-5.8.0/fs/quota/quota_tree.c @@ -62,7 +62,7 @@ memset(buf, 0, info->dqi_usable_bs); return sb->s_op->quota_read(sb, info->dqi_type, buf, - info->dqi_usable_bs, blk << info->dqi_blocksize_bits); + info->dqi_usable_bs, (loff_t)blk << info->dqi_blocksize_bits); } static ssize_t write_blk(struct qtree_mem_dqinfo *info, uint blk, char *buf) @@ -71,7 +71,7 @@ ssize_t ret; ret = sb->s_op->quota_write(sb, info->dqi_type, buf, - info->dqi_usable_bs, blk << info->dqi_blocksize_bits); + info->dqi_usable_bs, (loff_t)blk << info->dqi_blocksize_bits); if (ret != info->dqi_usable_bs) { quota_error(sb, "dquota write failed"); if (ret >= 0) @@ -284,7 +284,7 @@ blk); goto out_buf; } - dquot->dq_off = (blk << info->dqi_blocksize_bits) + + dquot->dq_off = ((loff_t)blk << info->dqi_blocksize_bits) + sizeof(struct qt_disk_dqdbheader) + i * info->dqi_entry_size; kfree(buf); @@ -559,7 +559,7 @@ ret = -EIO; goto out_buf; } else { - ret = (blk << info->dqi_blocksize_bits) + sizeof(struct + ret = ((loff_t)blk << info->dqi_blocksize_bits) + sizeof(struct qt_disk_dqdbheader) + i * info->dqi_entry_size; } out_buf: --- linux-5.8.0.orig/fs/quota/quota_v2.c +++ linux-5.8.0/fs/quota/quota_v2.c @@ -157,7 +157,31 @@ qinfo->dqi_entry_size = sizeof(struct v2r1_disk_dqblk); qinfo->dqi_ops = &v2r1_qtree_ops; } + ret = -EUCLEAN; + /* Some sanity checks of the read headers... */ + if ((loff_t)qinfo->dqi_blocks << qinfo->dqi_blocksize_bits > + i_size_read(sb_dqopt(sb)->files[type])) { + quota_error(sb, "Number of blocks too big for quota file size (%llu > %llu).", + (loff_t)qinfo->dqi_blocks << qinfo->dqi_blocksize_bits, + i_size_read(sb_dqopt(sb)->files[type])); + goto out_free; + } + if (qinfo->dqi_free_blk >= qinfo->dqi_blocks) { + quota_error(sb, "Free block number too big (%u >= %u).", + qinfo->dqi_free_blk, qinfo->dqi_blocks); + goto out_free; + } + if (qinfo->dqi_free_entry >= qinfo->dqi_blocks) { + quota_error(sb, "Block with free entry too big (%u >= %u).", + qinfo->dqi_free_entry, qinfo->dqi_blocks); + goto out_free; + } ret = 0; +out_free: + if (ret) { + kfree(info->dqi_priv); + info->dqi_priv = NULL; + } out: up_read(&dqopt->dqio_sem); return ret; @@ -282,6 +306,7 @@ d->dqb_curspace = cpu_to_le64(m->dqb_curspace); d->dqb_btime = cpu_to_le64(m->dqb_btime); d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id)); + d->dqb_pad = 0; if (qtree_entry_unused(info, dp)) d->dqb_itime = cpu_to_le64(1); } --- linux-5.8.0.orig/fs/ramfs/file-nommu.c +++ linux-5.8.0/fs/ramfs/file-nommu.c @@ -224,7 +224,7 @@ if (!pages) goto out_free; - nr = find_get_pages(inode->i_mapping, &pgoff, lpages, pages); + nr = find_get_pages_contig(inode->i_mapping, pgoff, lpages, pages); if (nr != lpages) goto out_free_pages; /* leave if some pages were missing */ --- linux-5.8.0.orig/fs/read_write.c +++ linux-5.8.0/fs/read_write.c @@ -488,6 +488,7 @@ inc_syscr(current); return ret; } +EXPORT_SYMBOL_GPL(vfs_read); static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { @@ -507,6 +508,30 @@ return ret; } +vfs_readf_t vfs_readf(struct file *file) +{ + const struct file_operations *fop = file->f_op; + + if (fop->read) + return fop->read; + if (fop->read_iter) + return new_sync_read; + return ERR_PTR(-ENOSYS); /* doesn't have ->read(|_iter)() op */ +} +EXPORT_SYMBOL_GPL(vfs_readf); + +vfs_writef_t vfs_writef(struct file *file) +{ + const struct file_operations *fop = file->f_op; + + if (fop->write) + return fop->write; + if (fop->write_iter) + return new_sync_write; + return ERR_PTR(-ENOSYS); /* doesn't have ->write(|_iter)() op */ +} +EXPORT_SYMBOL_GPL(vfs_writef); + /* caller is responsible for file_start_write/file_end_write */ ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) { @@ -538,6 +563,14 @@ inc_syscw(current); return ret; } +/* + * This "EXPORT_SYMBOL_GPL()" is more of a "EXPORT_SYMBOL_DONTUSE()", + * but autofs is one of the few internal kernel users that actually + * wants this _and_ can be built as a module. So we need to export + * this symbol for autofs, even though it really isn't appropriate + * for any other kernel modules. + */ +EXPORT_SYMBOL_GPL(__kernel_write); ssize_t kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) @@ -586,6 +619,7 @@ file_end_write(file); return ret; } +EXPORT_SYMBOL_GPL(vfs_write); /* file_ppos returns &file->f_pos or NULL if file is stream */ static inline loff_t *file_ppos(struct file *file) --- linux-5.8.0.orig/fs/reiserfs/inode.c +++ linux-5.8.0/fs/reiserfs/inode.c @@ -1551,11 +1551,7 @@ * set version 1, version 2 could be used too, because stat data * key is the same in both versions */ - key.version = KEY_FORMAT_3_5; - key.on_disk_key.k_dir_id = dirino; - key.on_disk_key.k_objectid = inode->i_ino; - key.on_disk_key.k_offset = 0; - key.on_disk_key.k_type = 0; + _make_cpu_key(&key, KEY_FORMAT_3_5, dirino, inode->i_ino, 0, 0, 3); /* look for the object's stat data */ retval = search_item(inode->i_sb, &key, &path_to_sd); @@ -2163,7 +2159,8 @@ out_inserted_sd: clear_nlink(inode); th->t_trans_id = 0; /* so the caller can't use this handle later */ - unlock_new_inode(inode); /* OK to do even if we hadn't locked it */ + if (inode->i_state & I_NEW) + unlock_new_inode(inode); iput(inode); return err; } --- linux-5.8.0.orig/fs/reiserfs/stree.c +++ linux-5.8.0/fs/reiserfs/stree.c @@ -454,6 +454,12 @@ "(second one): %h", ih); return 0; } + if (is_direntry_le_ih(ih) && (ih_item_len(ih) < (ih_entry_count(ih) * IH_SIZE))) { + reiserfs_warning(NULL, "reiserfs-5093", + "item entry count seems wrong %h", + ih); + return 0; + } prev_location = ih_location(ih); } --- linux-5.8.0.orig/fs/reiserfs/super.c +++ linux-5.8.0/fs/reiserfs/super.c @@ -1258,6 +1258,10 @@ "turned on."); return 0; } + if (qf_names[qtype] != + REISERFS_SB(s)->s_qf_names[qtype]) + kfree(qf_names[qtype]); + qf_names[qtype] = NULL; if (*arg) { /* Some filename specified? */ if (REISERFS_SB(s)->s_qf_names[qtype] && strcmp(REISERFS_SB(s)->s_qf_names[qtype], @@ -1287,10 +1291,6 @@ else *mount_options |= 1 << REISERFS_GRPQUOTA; } else { - if (qf_names[qtype] != - REISERFS_SB(s)->s_qf_names[qtype]) - kfree(qf_names[qtype]); - qf_names[qtype] = NULL; if (qtype == USRQUOTA) *mount_options &= ~(1 << REISERFS_USRQUOTA); else --- linux-5.8.0.orig/fs/reiserfs/xattr.c +++ linux-5.8.0/fs/reiserfs/xattr.c @@ -674,6 +674,13 @@ if (get_inode_sd_version(inode) == STAT_DATA_V1) return -EOPNOTSUPP; + /* + * priv_root needn't be initialized during mount so allow initial + * lookups to succeed. + */ + if (!REISERFS_SB(inode->i_sb)->priv_root) + return 0; + dentry = xattr_lookup(inode, name, XATTR_REPLACE); if (IS_ERR(dentry)) { err = PTR_ERR(dentry); --- linux-5.8.0.orig/fs/reiserfs/xattr.h +++ linux-5.8.0/fs/reiserfs/xattr.h @@ -43,7 +43,7 @@ static inline int reiserfs_xattrs_initialized(struct super_block *sb) { - return REISERFS_SB(sb)->priv_root != NULL; + return REISERFS_SB(sb)->priv_root && REISERFS_SB(sb)->xattr_root; } #define xattr_size(size) ((size) + sizeof(struct reiserfs_xattr_header)) --- linux-5.8.0.orig/fs/romfs/storage.c +++ linux-5.8.0/fs/romfs/storage.c @@ -217,10 +217,8 @@ size_t limit; limit = romfs_maxsize(sb); - if (pos >= limit) + if (pos >= limit || buflen > limit - pos) return -EIO; - if (buflen > limit - pos) - buflen = limit - pos; #ifdef CONFIG_ROMFS_ON_MTD if (sb->s_mtd) --- linux-5.8.0.orig/fs/select.c +++ linux-5.8.0/fs/select.c @@ -1011,14 +1011,17 @@ fdcount = do_poll(head, &table, end_time); poll_freewait(&table); + if (!user_write_access_begin(ufds, nfds * sizeof(*ufds))) + goto out_fds; + for (walk = head; walk; walk = walk->next) { struct pollfd *fds = walk->entries; int j; - for (j = 0; j < walk->len; j++, ufds++) - if (__put_user(fds[j].revents, &ufds->revents)) - goto out_fds; + for (j = walk->len; j; fds++, ufds++, j--) + unsafe_put_user(fds->revents, &ufds->revents, Efault); } + user_write_access_end(); err = fdcount; out_fds: @@ -1030,6 +1033,11 @@ } return err; + +Efault: + user_write_access_end(); + err = -EFAULT; + goto out_fds; } static long do_restart_poll(struct restart_block *restart_block) @@ -1047,10 +1055,9 @@ ret = do_sys_poll(ufds, nfds, to); - if (ret == -ERESTARTNOHAND) { - restart_block->fn = do_restart_poll; - ret = -ERESTART_RESTARTBLOCK; - } + if (ret == -ERESTARTNOHAND) + ret = set_restart_fn(restart_block, do_restart_poll); + return ret; } @@ -1072,7 +1079,6 @@ struct restart_block *restart_block; restart_block = ¤t->restart_block; - restart_block->fn = do_restart_poll; restart_block->poll.ufds = ufds; restart_block->poll.nfds = nfds; @@ -1083,7 +1089,7 @@ } else restart_block->poll.has_timeout = 0; - ret = -ERESTART_RESTARTBLOCK; + ret = set_restart_fn(restart_block, do_restart_poll); } return ret; } --- linux-5.8.0.orig/fs/seq_file.c +++ linux-5.8.0/fs/seq_file.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -146,7 +147,28 @@ */ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) { - struct seq_file *m = file->private_data; + struct iovec iov = { .iov_base = buf, .iov_len = size}; + struct kiocb kiocb; + struct iov_iter iter; + ssize_t ret; + + init_sync_kiocb(&kiocb, file); + iov_iter_init(&iter, READ, &iov, 1, size); + + kiocb.ki_pos = *ppos; + ret = seq_read_iter(&kiocb, &iter); + *ppos = kiocb.ki_pos; + return ret; +} +EXPORT_SYMBOL(seq_read); + +/* + * Ready-made ->f_op->read_iter() + */ +ssize_t seq_read_iter(struct kiocb *iocb, struct iov_iter *iter) +{ + struct seq_file *m = iocb->ki_filp->private_data; + size_t size = iov_iter_count(iter); size_t copied = 0; size_t n; void *p; @@ -158,14 +180,14 @@ * if request is to read from zero offset, reset iterator to first * record as it might have been already advanced by previous requests */ - if (*ppos == 0) { + if (iocb->ki_pos == 0) { m->index = 0; m->count = 0; } - /* Don't assume *ppos is where we left it */ - if (unlikely(*ppos != m->read_pos)) { - while ((err = traverse(m, *ppos)) == -EAGAIN) + /* Don't assume ki_pos is where we left it */ + if (unlikely(iocb->ki_pos != m->read_pos)) { + while ((err = traverse(m, iocb->ki_pos)) == -EAGAIN) ; if (err) { /* With prejudice... */ @@ -174,7 +196,7 @@ m->count = 0; goto Done; } else { - m->read_pos = *ppos; + m->read_pos = iocb->ki_pos; } } @@ -187,13 +209,11 @@ /* if not empty - flush it first */ if (m->count) { n = min(m->count, size); - err = copy_to_user(buf, m->buf + m->from, n); - if (err) + if (copy_to_iter(m->buf + m->from, n, iter) != n) goto Efault; m->count -= n; m->from += n; size -= n; - buf += n; copied += n; if (!size) goto Done; @@ -254,8 +274,7 @@ } m->op->stop(m, p); n = min(m->count, size); - err = copy_to_user(buf, m->buf, n); - if (err) + if (copy_to_iter(m->buf, n, iter) != n) goto Efault; copied += n; m->count -= n; @@ -264,7 +283,7 @@ if (!copied) copied = err; else { - *ppos += copied; + iocb->ki_pos += copied; m->read_pos += copied; } mutex_unlock(&m->lock); @@ -276,7 +295,7 @@ err = -EFAULT; goto Done; } -EXPORT_SYMBOL(seq_read); +EXPORT_SYMBOL(seq_read_iter); /** * seq_lseek - ->llseek() method for sequential files. --- linux-5.8.0.orig/fs/shiftfs.c +++ linux-5.8.0/fs/shiftfs.c @@ -0,0 +1,2172 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct shiftfs_super_info { + struct vfsmount *mnt; + struct user_namespace *userns; + /* creds of process who created the super block */ + const struct cred *creator_cred; + bool mark; + unsigned int passthrough; + unsigned int passthrough_mark; +}; + +static void shiftfs_fill_inode(struct inode *inode, unsigned long ino, + umode_t mode, dev_t dev, struct dentry *dentry); + +#define SHIFTFS_PASSTHROUGH_NONE 0 +#define SHIFTFS_PASSTHROUGH_STAT 1 +#define SHIFTFS_PASSTHROUGH_IOCTL 2 +#define SHIFTFS_PASSTHROUGH_ALL \ + (SHIFTFS_PASSTHROUGH_STAT | SHIFTFS_PASSTHROUGH_IOCTL) + +static inline bool shiftfs_passthrough_ioctls(struct shiftfs_super_info *info) +{ + if (!(info->passthrough & SHIFTFS_PASSTHROUGH_IOCTL)) + return false; + + return true; +} + +static inline bool shiftfs_passthrough_statfs(struct shiftfs_super_info *info) +{ + if (!(info->passthrough & SHIFTFS_PASSTHROUGH_STAT)) + return false; + + return true; +} + +enum { + OPT_MARK, + OPT_PASSTHROUGH, + OPT_LAST, +}; + +/* global filesystem options */ +static const match_table_t tokens = { + { OPT_MARK, "mark" }, + { OPT_PASSTHROUGH, "passthrough=%u" }, + { OPT_LAST, NULL } +}; + +static const struct cred *shiftfs_override_creds(const struct super_block *sb) +{ + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + + return override_creds(sbinfo->creator_cred); +} + +static inline void shiftfs_revert_object_creds(const struct cred *oldcred, + struct cred *newcred) +{ + revert_creds(oldcred); + put_cred(newcred); +} + +static kuid_t shift_kuid(struct user_namespace *from, struct user_namespace *to, + kuid_t kuid) +{ + uid_t uid = from_kuid(from, kuid); + return make_kuid(to, uid); +} + +static kgid_t shift_kgid(struct user_namespace *from, struct user_namespace *to, + kgid_t kgid) +{ + gid_t gid = from_kgid(from, kgid); + return make_kgid(to, gid); +} + +static int shiftfs_override_object_creds(const struct super_block *sb, + const struct cred **oldcred, + struct cred **newcred, + struct dentry *dentry, umode_t mode, + bool hardlink) +{ + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + kuid_t fsuid = current_fsuid(); + kgid_t fsgid = current_fsgid(); + + *oldcred = shiftfs_override_creds(sb); + + *newcred = prepare_creds(); + if (!*newcred) { + revert_creds(*oldcred); + return -ENOMEM; + } + + (*newcred)->fsuid = shift_kuid(sb->s_user_ns, sbinfo->userns, fsuid); + (*newcred)->fsgid = shift_kgid(sb->s_user_ns, sbinfo->userns, fsgid); + + if (!hardlink) { + int err = security_dentry_create_files_as(dentry, mode, + &dentry->d_name, + *oldcred, *newcred); + if (err) { + shiftfs_revert_object_creds(*oldcred, *newcred); + return err; + } + } + + put_cred(override_creds(*newcred)); + return 0; +} + +static void shiftfs_copyattr(struct inode *from, struct inode *to) +{ + struct user_namespace *from_ns = from->i_sb->s_user_ns; + struct user_namespace *to_ns = to->i_sb->s_user_ns; + + to->i_uid = shift_kuid(from_ns, to_ns, from->i_uid); + to->i_gid = shift_kgid(from_ns, to_ns, from->i_gid); + to->i_mode = from->i_mode; + to->i_atime = from->i_atime; + to->i_mtime = from->i_mtime; + to->i_ctime = from->i_ctime; + i_size_write(to, i_size_read(from)); +} + +static void shiftfs_copyflags(struct inode *from, struct inode *to) +{ + unsigned int mask = S_SYNC | S_IMMUTABLE | S_APPEND | S_NOATIME; + + inode_set_flags(to, from->i_flags & mask, mask); +} + +static void shiftfs_file_accessed(struct file *file) +{ + struct inode *upperi, *loweri; + + if (file->f_flags & O_NOATIME) + return; + + upperi = file_inode(file); + loweri = upperi->i_private; + + if (!loweri) + return; + + upperi->i_mtime = loweri->i_mtime; + upperi->i_ctime = loweri->i_ctime; + + touch_atime(&file->f_path); +} + +static int shiftfs_parse_mount_options(struct shiftfs_super_info *sbinfo, + char *options) +{ + char *p; + substring_t args[MAX_OPT_ARGS]; + + sbinfo->mark = false; + sbinfo->passthrough = 0; + + while ((p = strsep(&options, ",")) != NULL) { + int err, intarg, token; + + if (!*p) + continue; + + token = match_token(p, tokens, args); + switch (token) { + case OPT_MARK: + sbinfo->mark = true; + break; + case OPT_PASSTHROUGH: + err = match_int(&args[0], &intarg); + if (err) + return err; + + if (intarg & ~SHIFTFS_PASSTHROUGH_ALL) + return -EINVAL; + + sbinfo->passthrough = intarg; + break; + default: + return -EINVAL; + } + } + + return 0; +} + +static void shiftfs_d_release(struct dentry *dentry) +{ + struct dentry *lowerd = dentry->d_fsdata; + + if (lowerd) + dput(lowerd); +} + +static struct dentry *shiftfs_d_real(struct dentry *dentry, + const struct inode *inode) +{ + struct dentry *lowerd = dentry->d_fsdata; + + if (inode && d_inode(dentry) == inode) + return dentry; + + lowerd = d_real(lowerd, inode); + if (lowerd && (!inode || inode == d_inode(lowerd))) + return lowerd; + + WARN(1, "shiftfs_d_real(%pd4, %s:%lu): real dentry not found\n", dentry, + inode ? inode->i_sb->s_id : "NULL", inode ? inode->i_ino : 0); + return dentry; +} + +static int shiftfs_d_weak_revalidate(struct dentry *dentry, unsigned int flags) +{ + int err = 1; + struct dentry *lowerd = dentry->d_fsdata; + + if (d_is_negative(lowerd) != d_is_negative(dentry)) + return 0; + + if ((lowerd->d_flags & DCACHE_OP_WEAK_REVALIDATE)) + err = lowerd->d_op->d_weak_revalidate(lowerd, flags); + + if (d_really_is_positive(dentry)) { + struct inode *inode = d_inode(dentry); + struct inode *loweri = d_inode(lowerd); + + shiftfs_copyattr(loweri, inode); + } + + return err; +} + +static int shiftfs_d_revalidate(struct dentry *dentry, unsigned int flags) +{ + int err = 1; + struct dentry *lowerd = dentry->d_fsdata; + + if (d_unhashed(lowerd) || + ((d_is_negative(lowerd) != d_is_negative(dentry)))) + return 0; + + if (flags & LOOKUP_RCU) + return -ECHILD; + + if ((lowerd->d_flags & DCACHE_OP_REVALIDATE)) + err = lowerd->d_op->d_revalidate(lowerd, flags); + + if (d_really_is_positive(dentry)) { + struct inode *inode = d_inode(dentry); + struct inode *loweri = d_inode(lowerd); + + shiftfs_copyattr(loweri, inode); + } + + return err; +} + +static const struct dentry_operations shiftfs_dentry_ops = { + .d_release = shiftfs_d_release, + .d_real = shiftfs_d_real, + .d_revalidate = shiftfs_d_revalidate, + .d_weak_revalidate = shiftfs_d_weak_revalidate, +}; + +static const char *shiftfs_get_link(struct dentry *dentry, struct inode *inode, + struct delayed_call *done) +{ + const char *p; + const struct cred *oldcred; + struct dentry *lowerd; + + /* RCU lookup not supported */ + if (!dentry) + return ERR_PTR(-ECHILD); + + lowerd = dentry->d_fsdata; + oldcred = shiftfs_override_creds(dentry->d_sb); + p = vfs_get_link(lowerd, done); + revert_creds(oldcred); + + return p; +} + +static int shiftfs_setxattr(struct dentry *dentry, struct inode *inode, + const char *name, const void *value, + size_t size, int flags) +{ + struct dentry *lowerd = dentry->d_fsdata; + int err; + const struct cred *oldcred; + + oldcred = shiftfs_override_creds(dentry->d_sb); + err = vfs_setxattr(lowerd, name, value, size, flags); + revert_creds(oldcred); + + shiftfs_copyattr(lowerd->d_inode, inode); + + return err; +} + +static int shiftfs_xattr_get(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, void *value, size_t size) +{ + struct dentry *lowerd = dentry->d_fsdata; + int err; + const struct cred *oldcred; + + oldcred = shiftfs_override_creds(dentry->d_sb); + err = vfs_getxattr(lowerd, name, value, size); + revert_creds(oldcred); + + return err; +} + +static ssize_t shiftfs_listxattr(struct dentry *dentry, char *list, + size_t size) +{ + struct dentry *lowerd = dentry->d_fsdata; + int err; + const struct cred *oldcred; + + oldcred = shiftfs_override_creds(dentry->d_sb); + err = vfs_listxattr(lowerd, list, size); + revert_creds(oldcred); + + return err; +} + +static int shiftfs_removexattr(struct dentry *dentry, const char *name) +{ + struct dentry *lowerd = dentry->d_fsdata; + int err; + const struct cred *oldcred; + + oldcred = shiftfs_override_creds(dentry->d_sb); + err = vfs_removexattr(lowerd, name); + revert_creds(oldcred); + + /* update c/mtime */ + shiftfs_copyattr(lowerd->d_inode, d_inode(dentry)); + + return err; +} + +static int shiftfs_xattr_set(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + if (!value) + return shiftfs_removexattr(dentry, name); + return shiftfs_setxattr(dentry, inode, name, value, size, flags); +} + +static int shiftfs_inode_test(struct inode *inode, void *data) +{ + return inode->i_private == data; +} + +static int shiftfs_inode_set(struct inode *inode, void *data) +{ + inode->i_private = data; + return 0; +} + +static int shiftfs_create_object(struct inode *diri, struct dentry *dentry, + umode_t mode, const char *symlink, + struct dentry *hardlink, bool excl) +{ + int err; + const struct cred *oldcred; + struct cred *newcred; + void *loweri_iop_ptr = NULL; + umode_t modei = mode; + struct super_block *dir_sb = diri->i_sb; + struct dentry *lowerd_new = dentry->d_fsdata; + struct inode *inode = NULL, *loweri_dir = diri->i_private; + const struct inode_operations *loweri_dir_iop = loweri_dir->i_op; + struct dentry *lowerd_link = NULL; + + if (hardlink) { + loweri_iop_ptr = loweri_dir_iop->link; + } else { + switch (mode & S_IFMT) { + case S_IFDIR: + loweri_iop_ptr = loweri_dir_iop->mkdir; + break; + case S_IFREG: + loweri_iop_ptr = loweri_dir_iop->create; + break; + case S_IFLNK: + loweri_iop_ptr = loweri_dir_iop->symlink; + break; + case S_IFSOCK: + /* fall through */ + case S_IFIFO: + loweri_iop_ptr = loweri_dir_iop->mknod; + break; + } + } + if (!loweri_iop_ptr) { + err = -EINVAL; + goto out_iput; + } + + inode_lock_nested(loweri_dir, I_MUTEX_PARENT); + + if (!hardlink) { + inode = new_inode(dir_sb); + if (!inode) { + err = -ENOMEM; + goto out_iput; + } + + /* + * new_inode() will have added the new inode to the super + * block's list of inodes. Further below we will call + * inode_insert5() Which would perform the same operation again + * thereby corrupting the list. To avoid this raise I_CREATING + * in i_state which will cause inode_insert5() to skip this + * step. I_CREATING will be cleared by d_instantiate_new() + * below. + */ + spin_lock(&inode->i_lock); + inode->i_state |= I_CREATING; + spin_unlock(&inode->i_lock); + + inode_init_owner(inode, diri, mode); + modei = inode->i_mode; + } + + err = shiftfs_override_object_creds(dentry->d_sb, &oldcred, &newcred, + dentry, modei, hardlink != NULL); + if (err) + goto out_iput; + + if (hardlink) { + lowerd_link = hardlink->d_fsdata; + err = vfs_link(lowerd_link, loweri_dir, lowerd_new, NULL); + } else { + switch (modei & S_IFMT) { + case S_IFDIR: + err = vfs_mkdir(loweri_dir, lowerd_new, modei); + break; + case S_IFREG: + err = vfs_create(loweri_dir, lowerd_new, modei, excl); + break; + case S_IFLNK: + err = vfs_symlink(loweri_dir, lowerd_new, symlink); + break; + case S_IFSOCK: + /* fall through */ + case S_IFIFO: + err = vfs_mknod(loweri_dir, lowerd_new, modei, 0); + break; + default: + err = -EINVAL; + break; + } + } + + shiftfs_revert_object_creds(oldcred, newcred); + + if (!err && WARN_ON(!lowerd_new->d_inode)) + err = -EIO; + if (err) + goto out_iput; + + if (hardlink) { + inode = d_inode(hardlink); + ihold(inode); + + /* copy up times from lower inode */ + shiftfs_copyattr(d_inode(lowerd_link), inode); + set_nlink(d_inode(hardlink), d_inode(lowerd_link)->i_nlink); + d_instantiate(dentry, inode); + } else { + struct inode *inode_tmp; + struct inode *loweri_new = d_inode(lowerd_new); + + inode_tmp = inode_insert5(inode, (unsigned long)loweri_new, + shiftfs_inode_test, shiftfs_inode_set, + loweri_new); + if (unlikely(inode_tmp != inode)) { + pr_err_ratelimited("shiftfs: newly created inode found in cache\n"); + iput(inode_tmp); + err = -EINVAL; + goto out_iput; + } + + ihold(loweri_new); + shiftfs_fill_inode(inode, loweri_new->i_ino, loweri_new->i_mode, + 0, lowerd_new); + d_instantiate_new(dentry, inode); + } + + shiftfs_copyattr(loweri_dir, diri); + if (loweri_iop_ptr == loweri_dir_iop->mkdir) + set_nlink(diri, loweri_dir->i_nlink); + + inode = NULL; + +out_iput: + iput(inode); + inode_unlock(loweri_dir); + + return err; +} + +static int shiftfs_create(struct inode *dir, struct dentry *dentry, + umode_t mode, bool excl) +{ + mode |= S_IFREG; + + return shiftfs_create_object(dir, dentry, mode, NULL, NULL, excl); +} + +static int shiftfs_mkdir(struct inode *dir, struct dentry *dentry, + umode_t mode) +{ + mode |= S_IFDIR; + + return shiftfs_create_object(dir, dentry, mode, NULL, NULL, false); +} + +static int shiftfs_link(struct dentry *hardlink, struct inode *dir, + struct dentry *dentry) +{ + return shiftfs_create_object(dir, dentry, 0, NULL, hardlink, false); +} + +static int shiftfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t rdev) +{ + if (!S_ISFIFO(mode) && !S_ISSOCK(mode)) + return -EPERM; + + return shiftfs_create_object(dir, dentry, mode, NULL, NULL, false); +} + +static int shiftfs_symlink(struct inode *dir, struct dentry *dentry, + const char *symlink) +{ + return shiftfs_create_object(dir, dentry, S_IFLNK, symlink, NULL, false); +} + +static int shiftfs_rm(struct inode *dir, struct dentry *dentry, bool rmdir) +{ + struct dentry *lowerd = dentry->d_fsdata; + struct inode *loweri = dir->i_private; + struct inode *inode = d_inode(dentry); + int err; + const struct cred *oldcred; + + dget(lowerd); + oldcred = shiftfs_override_creds(dentry->d_sb); + inode_lock_nested(loweri, I_MUTEX_PARENT); + if (rmdir) + err = vfs_rmdir(loweri, lowerd); + else + err = vfs_unlink(loweri, lowerd, NULL); + revert_creds(oldcred); + + if (!err) { + d_drop(dentry); + + if (rmdir) + clear_nlink(inode); + else + drop_nlink(inode); + } + inode_unlock(loweri); + + shiftfs_copyattr(loweri, dir); + dput(lowerd); + + return err; +} + +static int shiftfs_unlink(struct inode *dir, struct dentry *dentry) +{ + return shiftfs_rm(dir, dentry, false); +} + +static int shiftfs_rmdir(struct inode *dir, struct dentry *dentry) +{ + return shiftfs_rm(dir, dentry, true); +} + +static int shiftfs_rename(struct inode *olddir, struct dentry *old, + struct inode *newdir, struct dentry *new, + unsigned int flags) +{ + struct dentry *lowerd_dir_old = old->d_parent->d_fsdata, + *lowerd_dir_new = new->d_parent->d_fsdata, + *lowerd_old = old->d_fsdata, *lowerd_new = new->d_fsdata, + *trapd; + struct inode *loweri_dir_old = lowerd_dir_old->d_inode, + *loweri_dir_new = lowerd_dir_new->d_inode; + int err = -EINVAL; + const struct cred *oldcred; + + trapd = lock_rename(lowerd_dir_new, lowerd_dir_old); + + if (trapd == lowerd_old || trapd == lowerd_new) + goto out_unlock; + + oldcred = shiftfs_override_creds(old->d_sb); + err = vfs_rename(loweri_dir_old, lowerd_old, loweri_dir_new, lowerd_new, + NULL, flags); + revert_creds(oldcred); + + shiftfs_copyattr(loweri_dir_old, olddir); + shiftfs_copyattr(loweri_dir_new, newdir); + +out_unlock: + unlock_rename(lowerd_dir_new, lowerd_dir_old); + + return err; +} + +static struct dentry *shiftfs_lookup(struct inode *dir, struct dentry *dentry, + unsigned int flags) +{ + struct dentry *new; + struct inode *newi; + const struct cred *oldcred; + struct dentry *lowerd = dentry->d_parent->d_fsdata; + struct inode *inode = NULL, *loweri = lowerd->d_inode; + + inode_lock(loweri); + oldcred = shiftfs_override_creds(dentry->d_sb); + new = lookup_one_len(dentry->d_name.name, lowerd, dentry->d_name.len); + revert_creds(oldcred); + inode_unlock(loweri); + + if (IS_ERR(new)) + return new; + + dentry->d_fsdata = new; + + newi = new->d_inode; + if (!newi) + goto out; + + inode = iget5_locked(dentry->d_sb, (unsigned long)newi, + shiftfs_inode_test, shiftfs_inode_set, newi); + if (!inode) { + dput(new); + return ERR_PTR(-ENOMEM); + } + if (inode->i_state & I_NEW) { + /* + * inode->i_private set by shiftfs_inode_set(), but we still + * need to take a reference + */ + ihold(newi); + shiftfs_fill_inode(inode, newi->i_ino, newi->i_mode, 0, new); + unlock_new_inode(inode); + } + +out: + return d_splice_alias(inode, dentry); +} + +static int shiftfs_permission(struct inode *inode, int mask) +{ + int err; + const struct cred *oldcred; + struct inode *loweri = inode->i_private; + + if (!loweri) { + WARN_ON(!(mask & MAY_NOT_BLOCK)); + return -ECHILD; + } + + err = generic_permission(inode, mask); + if (err) + return err; + + oldcred = shiftfs_override_creds(inode->i_sb); + err = inode_permission(loweri, mask); + revert_creds(oldcred); + + return err; +} + +static int shiftfs_fiemap(struct inode *inode, + struct fiemap_extent_info *fieinfo, u64 start, + u64 len) +{ + int err; + const struct cred *oldcred; + struct inode *loweri = inode->i_private; + + if (!loweri->i_op->fiemap) + return -EOPNOTSUPP; + + oldcred = shiftfs_override_creds(inode->i_sb); + if (fieinfo->fi_flags & FIEMAP_FLAG_SYNC) + filemap_write_and_wait(loweri->i_mapping); + err = loweri->i_op->fiemap(loweri, fieinfo, start, len); + revert_creds(oldcred); + + return err; +} + +static int shiftfs_tmpfile(struct inode *dir, struct dentry *dentry, + umode_t mode) +{ + int err; + const struct cred *oldcred; + struct dentry *lowerd = dentry->d_fsdata; + struct inode *loweri = dir->i_private; + + if (!loweri->i_op->tmpfile) + return -EOPNOTSUPP; + + oldcred = shiftfs_override_creds(dir->i_sb); + err = loweri->i_op->tmpfile(loweri, lowerd, mode); + revert_creds(oldcred); + + return err; +} + +static int shiftfs_setattr(struct dentry *dentry, struct iattr *attr) +{ + struct dentry *lowerd = dentry->d_fsdata; + struct inode *loweri = lowerd->d_inode; + struct iattr newattr; + const struct cred *oldcred; + struct super_block *sb = dentry->d_sb; + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + int err; + + err = setattr_prepare(dentry, attr); + if (err) + return err; + + newattr = *attr; + newattr.ia_uid = shift_kuid(sb->s_user_ns, sbinfo->userns, attr->ia_uid); + newattr.ia_gid = shift_kgid(sb->s_user_ns, sbinfo->userns, attr->ia_gid); + + /* + * mode change is for clearing setuid/setgid bits. Allow lower fs + * to interpret this in its own way. + */ + if (newattr.ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) + newattr.ia_valid &= ~ATTR_MODE; + + inode_lock(loweri); + oldcred = shiftfs_override_creds(dentry->d_sb); + err = notify_change(lowerd, &newattr, NULL); + revert_creds(oldcred); + inode_unlock(loweri); + + shiftfs_copyattr(loweri, d_inode(dentry)); + + return err; +} + +static int shiftfs_getattr(const struct path *path, struct kstat *stat, + u32 request_mask, unsigned int query_flags) +{ + struct inode *inode = path->dentry->d_inode; + struct dentry *lowerd = path->dentry->d_fsdata; + struct inode *loweri = lowerd->d_inode; + struct shiftfs_super_info *info = path->dentry->d_sb->s_fs_info; + struct path newpath = { .mnt = info->mnt, .dentry = lowerd }; + struct user_namespace *from_ns = loweri->i_sb->s_user_ns; + struct user_namespace *to_ns = inode->i_sb->s_user_ns; + const struct cred *oldcred; + int err; + + oldcred = shiftfs_override_creds(inode->i_sb); + err = vfs_getattr(&newpath, stat, request_mask, query_flags); + revert_creds(oldcred); + + if (err) + return err; + + /* transform the underlying id */ + stat->uid = shift_kuid(from_ns, to_ns, stat->uid); + stat->gid = shift_kgid(from_ns, to_ns, stat->gid); + return 0; +} + +#ifdef CONFIG_SHIFT_FS_POSIX_ACL + +static int +shift_acl_ids(struct user_namespace *from, struct user_namespace *to, + struct posix_acl *acl) +{ + int i; + + for (i = 0; i < acl->a_count; i++) { + struct posix_acl_entry *e = &acl->a_entries[i]; + switch(e->e_tag) { + case ACL_USER: + e->e_uid = shift_kuid(from, to, e->e_uid); + if (!uid_valid(e->e_uid)) + return -EOVERFLOW; + break; + case ACL_GROUP: + e->e_gid = shift_kgid(from, to, e->e_gid); + if (!gid_valid(e->e_gid)) + return -EOVERFLOW; + break; + } + } + return 0; +} + +static void +shift_acl_xattr_ids(struct user_namespace *from, struct user_namespace *to, + void *value, size_t size) +{ + struct posix_acl_xattr_header *header = value; + struct posix_acl_xattr_entry *entry = (void *)(header + 1), *end; + int count; + kuid_t kuid; + kgid_t kgid; + + if (!value) + return; + if (size < sizeof(struct posix_acl_xattr_header)) + return; + if (header->a_version != cpu_to_le32(POSIX_ACL_XATTR_VERSION)) + return; + + count = posix_acl_xattr_count(size); + if (count < 0) + return; + if (count == 0) + return; + + for (end = entry + count; entry != end; entry++) { + switch(le16_to_cpu(entry->e_tag)) { + case ACL_USER: + kuid = make_kuid(&init_user_ns, le32_to_cpu(entry->e_id)); + kuid = shift_kuid(from, to, kuid); + entry->e_id = cpu_to_le32(from_kuid(&init_user_ns, kuid)); + break; + case ACL_GROUP: + kgid = make_kgid(&init_user_ns, le32_to_cpu(entry->e_id)); + kgid = shift_kgid(from, to, kgid); + entry->e_id = cpu_to_le32(from_kgid(&init_user_ns, kgid)); + break; + default: + break; + } + } +} + +static struct posix_acl *shiftfs_get_acl(struct inode *inode, int type) +{ + struct inode *loweri = inode->i_private; + const struct cred *oldcred; + struct posix_acl *lower_acl, *acl = NULL; + struct user_namespace *from_ns = loweri->i_sb->s_user_ns; + struct user_namespace *to_ns = inode->i_sb->s_user_ns; + int size; + int err; + + if (!IS_POSIXACL(loweri)) + return NULL; + + oldcred = shiftfs_override_creds(inode->i_sb); + lower_acl = get_acl(loweri, type); + revert_creds(oldcred); + + if (lower_acl && !IS_ERR(lower_acl)) { + /* XXX: export posix_acl_clone? */ + size = sizeof(struct posix_acl) + + lower_acl->a_count * sizeof(struct posix_acl_entry); + acl = kmemdup(lower_acl, size, GFP_KERNEL); + posix_acl_release(lower_acl); + + if (!acl) + return ERR_PTR(-ENOMEM); + + refcount_set(&acl->a_refcount, 1); + + err = shift_acl_ids(from_ns, to_ns, acl); + if (err) { + kfree(acl); + return ERR_PTR(err); + } + } + + return acl; +} + +static int +shiftfs_posix_acl_xattr_get(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, void *buffer, size_t size) +{ + struct inode *loweri = inode->i_private; + int ret; + + ret = shiftfs_xattr_get(NULL, dentry, inode, handler->name, + buffer, size); + if (ret < 0) + return ret; + + inode_lock(loweri); + shift_acl_xattr_ids(loweri->i_sb->s_user_ns, inode->i_sb->s_user_ns, + buffer, size); + inode_unlock(loweri); + return ret; +} + +static int +shiftfs_posix_acl_xattr_set(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, + size_t size, int flags) +{ + struct inode *loweri = inode->i_private; + int err; + + if (!IS_POSIXACL(loweri) || !loweri->i_op->set_acl) + return -EOPNOTSUPP; + if (handler->flags == ACL_TYPE_DEFAULT && !S_ISDIR(inode->i_mode)) + return value ? -EACCES : 0; + if (!inode_owner_or_capable(inode)) + return -EPERM; + + if (value) { + shift_acl_xattr_ids(inode->i_sb->s_user_ns, + loweri->i_sb->s_user_ns, + (void *)value, size); + err = shiftfs_setxattr(dentry, inode, handler->name, value, + size, flags); + } else { + err = shiftfs_removexattr(dentry, handler->name); + } + + if (!err) + shiftfs_copyattr(loweri, inode); + + return err; +} + +static const struct xattr_handler +shiftfs_posix_acl_access_xattr_handler = { + .name = XATTR_NAME_POSIX_ACL_ACCESS, + .flags = ACL_TYPE_ACCESS, + .get = shiftfs_posix_acl_xattr_get, + .set = shiftfs_posix_acl_xattr_set, +}; + +static const struct xattr_handler +shiftfs_posix_acl_default_xattr_handler = { + .name = XATTR_NAME_POSIX_ACL_DEFAULT, + .flags = ACL_TYPE_DEFAULT, + .get = shiftfs_posix_acl_xattr_get, + .set = shiftfs_posix_acl_xattr_set, +}; + +#else /* !CONFIG_SHIFT_FS_POSIX_ACL */ + +#define shiftfs_get_acl NULL + +#endif /* CONFIG_SHIFT_FS_POSIX_ACL */ + +static const struct inode_operations shiftfs_dir_inode_operations = { + .lookup = shiftfs_lookup, + .mkdir = shiftfs_mkdir, + .symlink = shiftfs_symlink, + .unlink = shiftfs_unlink, + .rmdir = shiftfs_rmdir, + .rename = shiftfs_rename, + .link = shiftfs_link, + .setattr = shiftfs_setattr, + .create = shiftfs_create, + .mknod = shiftfs_mknod, + .permission = shiftfs_permission, + .getattr = shiftfs_getattr, + .listxattr = shiftfs_listxattr, + .get_acl = shiftfs_get_acl, +}; + +static const struct inode_operations shiftfs_file_inode_operations = { + .fiemap = shiftfs_fiemap, + .getattr = shiftfs_getattr, + .get_acl = shiftfs_get_acl, + .listxattr = shiftfs_listxattr, + .permission = shiftfs_permission, + .setattr = shiftfs_setattr, + .tmpfile = shiftfs_tmpfile, +}; + +static const struct inode_operations shiftfs_special_inode_operations = { + .getattr = shiftfs_getattr, + .get_acl = shiftfs_get_acl, + .listxattr = shiftfs_listxattr, + .permission = shiftfs_permission, + .setattr = shiftfs_setattr, +}; + +static const struct inode_operations shiftfs_symlink_inode_operations = { + .getattr = shiftfs_getattr, + .get_link = shiftfs_get_link, + .listxattr = shiftfs_listxattr, + .setattr = shiftfs_setattr, +}; + +static struct file *shiftfs_open_realfile(const struct file *file, + struct inode *realinode) +{ + struct file *realfile; + const struct cred *old_cred; + struct inode *inode = file_inode(file); + struct dentry *lowerd = file->f_path.dentry->d_fsdata; + struct shiftfs_super_info *info = inode->i_sb->s_fs_info; + struct path realpath = { .mnt = info->mnt, .dentry = lowerd }; + + old_cred = shiftfs_override_creds(inode->i_sb); + realfile = open_with_fake_path(&realpath, file->f_flags, realinode, + info->creator_cred); + revert_creds(old_cred); + + return realfile; +} + +#define SHIFTFS_SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT) + +static int shiftfs_change_flags(struct file *file, unsigned int flags) +{ + struct inode *inode = file_inode(file); + int err; + + /* if some flag changed that cannot be changed then something's amiss */ + if (WARN_ON((file->f_flags ^ flags) & ~SHIFTFS_SETFL_MASK)) + return -EIO; + + flags &= SHIFTFS_SETFL_MASK; + + if (((flags ^ file->f_flags) & O_APPEND) && IS_APPEND(inode)) + return -EPERM; + + if (flags & O_DIRECT) { + if (!file->f_mapping->a_ops || + !file->f_mapping->a_ops->direct_IO) + return -EINVAL; + } + + if (file->f_op->check_flags) { + err = file->f_op->check_flags(flags); + if (err) + return err; + } + + spin_lock(&file->f_lock); + file->f_flags = (file->f_flags & ~SHIFTFS_SETFL_MASK) | flags; + spin_unlock(&file->f_lock); + + return 0; +} + +static int shiftfs_open(struct inode *inode, struct file *file) +{ + struct file *realfile; + + realfile = shiftfs_open_realfile(file, inode->i_private); + if (IS_ERR(realfile)) + return PTR_ERR(realfile); + + file->private_data = realfile; + /* For O_DIRECT dentry_open() checks f_mapping->a_ops->direct_IO. */ + file->f_mapping = realfile->f_mapping; + + return 0; +} + +static int shiftfs_dir_open(struct inode *inode, struct file *file) +{ + struct file *realfile; + const struct cred *oldcred; + struct dentry *lowerd = file->f_path.dentry->d_fsdata; + struct shiftfs_super_info *info = inode->i_sb->s_fs_info; + struct path realpath = { .mnt = info->mnt, .dentry = lowerd }; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + realfile = dentry_open(&realpath, file->f_flags | O_NOATIME, + info->creator_cred); + revert_creds(oldcred); + if (IS_ERR(realfile)) + return PTR_ERR(realfile); + + file->private_data = realfile; + + return 0; +} + +static int shiftfs_release(struct inode *inode, struct file *file) +{ + struct file *realfile = file->private_data; + + if (realfile) + fput(realfile); + + return 0; +} + +static int shiftfs_dir_release(struct inode *inode, struct file *file) +{ + return shiftfs_release(inode, file); +} + +static loff_t shiftfs_dir_llseek(struct file *file, loff_t offset, int whence) +{ + struct file *realfile = file->private_data; + + return vfs_llseek(realfile, offset, whence); +} + +static loff_t shiftfs_file_llseek(struct file *file, loff_t offset, int whence) +{ + struct inode *realinode = file_inode(file)->i_private; + + return generic_file_llseek_size(file, offset, whence, + realinode->i_sb->s_maxbytes, + i_size_read(realinode)); +} + +/* XXX: Need to figure out what to to about atime updates, maybe other + * timestamps too ... ref. ovl_file_accessed() */ + +static rwf_t shiftfs_iocb_to_rwf(struct kiocb *iocb) +{ + int ifl = iocb->ki_flags; + 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 int shiftfs_real_fdget(const struct file *file, struct fd *lowerfd) +{ + struct file *realfile; + + if (file->f_op->open != shiftfs_open && + file->f_op->open != shiftfs_dir_open) + return -EINVAL; + + realfile = file->private_data; + lowerfd->flags = 0; + lowerfd->file = realfile; + + /* Did the flags change since open? */ + if (unlikely(file->f_flags & ~lowerfd->file->f_flags)) + return shiftfs_change_flags(lowerfd->file, file->f_flags); + + return 0; +} + +static ssize_t shiftfs_read_iter(struct kiocb *iocb, struct iov_iter *iter) +{ + struct file *file = iocb->ki_filp; + struct fd lowerfd; + const struct cred *oldcred; + ssize_t ret; + + if (!iov_iter_count(iter)) + return 0; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + return ret; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + ret = vfs_iter_read(lowerfd.file, iter, &iocb->ki_pos, + shiftfs_iocb_to_rwf(iocb)); + revert_creds(oldcred); + + shiftfs_file_accessed(file); + + fdput(lowerfd); + return ret; +} + +static ssize_t shiftfs_write_iter(struct kiocb *iocb, struct iov_iter *iter) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file_inode(file); + struct fd lowerfd; + const struct cred *oldcred; + ssize_t ret; + + if (!iov_iter_count(iter)) + return 0; + + inode_lock(inode); + /* Update mode */ + shiftfs_copyattr(inode->i_private, inode); + ret = file_remove_privs(file); + if (ret) + goto out_unlock; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + goto out_unlock; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + file_start_write(lowerfd.file); + ret = vfs_iter_write(lowerfd.file, iter, &iocb->ki_pos, + shiftfs_iocb_to_rwf(iocb)); + file_end_write(lowerfd.file); + revert_creds(oldcred); + + /* Update size */ + shiftfs_copyattr(inode->i_private, inode); + + fdput(lowerfd); + +out_unlock: + inode_unlock(inode); + return ret; +} + +static int shiftfs_fsync(struct file *file, loff_t start, loff_t end, + int datasync) +{ + struct fd lowerfd; + const struct cred *oldcred; + int ret; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + return ret; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + ret = vfs_fsync_range(lowerfd.file, start, end, datasync); + revert_creds(oldcred); + + fdput(lowerfd); + return ret; +} + +static int shiftfs_mmap(struct file *file, struct vm_area_struct *vma) +{ + struct file *realfile = file->private_data; + const struct cred *oldcred; + int ret; + + if (!realfile->f_op->mmap) + return -ENODEV; + + if (WARN_ON(file != vma->vm_file)) + return -EIO; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + vma->vm_file = get_file(realfile); + ret = call_mmap(vma->vm_file, vma); + revert_creds(oldcred); + + shiftfs_file_accessed(file); + + if (ret) { + /* + * Drop refcount from new vm_file value and restore original + * vm_file value + */ + vma->vm_file = file; + fput(realfile); + } else { + /* Drop refcount from previous vm_file value */ + fput(file); + } + + return ret; +} + +static long shiftfs_fallocate(struct file *file, int mode, loff_t offset, + loff_t len) +{ + struct inode *inode = file_inode(file); + struct inode *loweri = inode->i_private; + struct fd lowerfd; + const struct cred *oldcred; + int ret; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + return ret; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + ret = vfs_fallocate(lowerfd.file, mode, offset, len); + revert_creds(oldcred); + + /* Update size */ + shiftfs_copyattr(loweri, inode); + + fdput(lowerfd); + return ret; +} + +static int shiftfs_fadvise(struct file *file, loff_t offset, loff_t len, + int advice) +{ + struct fd lowerfd; + const struct cred *oldcred; + int ret; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + return ret; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + ret = vfs_fadvise(lowerfd.file, offset, len, advice); + revert_creds(oldcred); + + fdput(lowerfd); + return ret; +} + +static int shiftfs_override_ioctl_creds(int cmd, const struct super_block *sb, + const struct cred **oldcred, + struct cred **newcred) +{ + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + kuid_t fsuid = current_fsuid(); + kgid_t fsgid = current_fsgid(); + + *oldcred = shiftfs_override_creds(sb); + + *newcred = prepare_creds(); + if (!*newcred) { + revert_creds(*oldcred); + return -ENOMEM; + } + + (*newcred)->fsuid = shift_kuid(sb->s_user_ns, sbinfo->userns, fsuid); + (*newcred)->fsgid = shift_kgid(sb->s_user_ns, sbinfo->userns, fsgid); + + /* clear all caps to prevent bypassing capable() checks */ + cap_clear((*newcred)->cap_bset); + cap_clear((*newcred)->cap_effective); + cap_clear((*newcred)->cap_inheritable); + cap_clear((*newcred)->cap_permitted); + + if (cmd == BTRFS_IOC_SNAP_DESTROY) { + kuid_t kuid_root = make_kuid(sb->s_user_ns, 0); + /* + * Allow the root user in the container to remove subvolumes + * from other users. + */ + if (uid_valid(kuid_root) && uid_eq(fsuid, kuid_root)) + cap_raise((*newcred)->cap_effective, CAP_DAC_OVERRIDE); + } + + put_cred(override_creds(*newcred)); + return 0; +} + +static inline void shiftfs_revert_ioctl_creds(const struct cred *oldcred, + struct cred *newcred) +{ + return shiftfs_revert_object_creds(oldcred, newcred); +} + +static inline bool is_btrfs_snap_ioctl(int cmd) +{ + if ((cmd == BTRFS_IOC_SNAP_CREATE) || (cmd == BTRFS_IOC_SNAP_CREATE_V2)) + return true; + + return false; +} + +static int shiftfs_btrfs_ioctl_fd_restore(int cmd, int fd, void __user *arg, + struct btrfs_ioctl_vol_args *v1, + struct btrfs_ioctl_vol_args_v2 *v2) +{ + int ret; + + if (!is_btrfs_snap_ioctl(cmd)) + return 0; + + if (cmd == BTRFS_IOC_SNAP_CREATE) + ret = copy_to_user(arg, v1, sizeof(*v1)); + else + ret = copy_to_user(arg, v2, sizeof(*v2)); + + __close_fd(current->files, fd); + kfree(v1); + kfree(v2); + + return ret ? -EFAULT: 0; +} + +static int shiftfs_btrfs_ioctl_fd_replace(int cmd, void __user *arg, + struct btrfs_ioctl_vol_args **b1, + struct btrfs_ioctl_vol_args_v2 **b2, + int *newfd) +{ + int oldfd, ret; + struct fd src; + struct fd lfd = {}; + struct btrfs_ioctl_vol_args *v1 = NULL; + struct btrfs_ioctl_vol_args_v2 *v2 = NULL; + + *b1 = NULL; + *b2 = NULL; + + if (!is_btrfs_snap_ioctl(cmd)) + return 0; + + if (cmd == BTRFS_IOC_SNAP_CREATE) { + v1 = memdup_user(arg, sizeof(*v1)); + if (IS_ERR(v1)) + return PTR_ERR(v1); + oldfd = v1->fd; + } else { + v2 = memdup_user(arg, sizeof(*v2)); + if (IS_ERR(v2)) + return PTR_ERR(v2); + oldfd = v2->fd; + } + + src = fdget(oldfd); + if (!src.file) { + ret = -EINVAL; + goto err_free; + } + + ret = shiftfs_real_fdget(src.file, &lfd); + if (ret) { + fdput(src); + goto err_free; + } + + /* + * shiftfs_real_fdget() does not take a reference to lfd.file, so + * take a reference here to offset the one which will be put by + * __close_fd(), and make sure that reference is put on fdput(lfd). + */ + get_file(lfd.file); + lfd.flags |= FDPUT_FPUT; + fdput(src); + + *newfd = get_unused_fd_flags(lfd.file->f_flags); + if (*newfd < 0) { + fdput(lfd); + ret = *newfd; + goto err_free; + } + + fd_install(*newfd, lfd.file); + + if (cmd == BTRFS_IOC_SNAP_CREATE) { + v1->fd = *newfd; + ret = copy_to_user(arg, v1, sizeof(*v1)); + v1->fd = oldfd; + } else { + v2->fd = *newfd; + ret = copy_to_user(arg, v2, sizeof(*v2)); + v2->fd = oldfd; + } + + if (!ret) { + *b1 = v1; + *b2 = v2; + } else { + shiftfs_btrfs_ioctl_fd_restore(cmd, *newfd, arg, v1, v2); + ret = -EFAULT; + } + + return ret; + +err_free: + kfree(v1); + kfree(v2); + + return ret; +} + +static long shiftfs_real_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + struct fd lowerfd; + struct cred *newcred; + const struct cred *oldcred; + int newfd = -EBADF; + long err = 0, ret = 0; + void __user *argp = (void __user *)arg; + struct super_block *sb = file->f_path.dentry->d_sb; + struct btrfs_ioctl_vol_args *btrfs_v1 = NULL; + struct btrfs_ioctl_vol_args_v2 *btrfs_v2 = NULL; + + ret = shiftfs_btrfs_ioctl_fd_replace(cmd, argp, &btrfs_v1, &btrfs_v2, + &newfd); + if (ret < 0) + return ret; + + ret = shiftfs_real_fdget(file, &lowerfd); + if (ret) + goto out_restore; + + ret = shiftfs_override_ioctl_creds(cmd, sb, &oldcred, &newcred); + if (ret) + goto out_fdput; + + ret = vfs_ioctl(lowerfd.file, cmd, arg); + + shiftfs_revert_ioctl_creds(oldcred, newcred); + + shiftfs_copyattr(file_inode(lowerfd.file), file_inode(file)); + shiftfs_copyflags(file_inode(lowerfd.file), file_inode(file)); + +out_fdput: + fdput(lowerfd); + +out_restore: + err = shiftfs_btrfs_ioctl_fd_restore(cmd, newfd, argp, + btrfs_v1, btrfs_v2); + if (!ret) + ret = err; + + return ret; +} + +static bool in_ioctl_whitelist(int flag, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + u64 flags = 0; + + switch (flag) { + case BTRFS_IOC_FS_INFO: + return true; + case BTRFS_IOC_SNAP_CREATE: + return true; + case BTRFS_IOC_SNAP_CREATE_V2: + return true; + case BTRFS_IOC_SUBVOL_CREATE: + return true; + case BTRFS_IOC_SUBVOL_CREATE_V2: + return true; + case BTRFS_IOC_SUBVOL_GETFLAGS: + return true; + case BTRFS_IOC_SUBVOL_SETFLAGS: + if (copy_from_user(&flags, argp, sizeof(flags))) + return false; + + if (flags & ~BTRFS_SUBVOL_RDONLY) + return false; + + return true; + case BTRFS_IOC_SNAP_DESTROY: + return true; + } + + return false; +} + +static long shiftfs_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + switch (cmd) { + case FS_IOC_GETVERSION: + /* fall through */ + case FS_IOC_GETFLAGS: + /* fall through */ + case FS_IOC_SETFLAGS: + break; + default: + if (!in_ioctl_whitelist(cmd, arg) || + !shiftfs_passthrough_ioctls(file->f_path.dentry->d_sb->s_fs_info)) + return -ENOTTY; + } + + return shiftfs_real_ioctl(file, cmd, arg); +} + +static long shiftfs_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + switch (cmd) { + case FS_IOC32_GETVERSION: + /* fall through */ + case FS_IOC32_GETFLAGS: + /* fall through */ + case FS_IOC32_SETFLAGS: + break; + default: + if (!in_ioctl_whitelist(cmd, arg) || + !shiftfs_passthrough_ioctls(file->f_path.dentry->d_sb->s_fs_info)) + return -ENOIOCTLCMD; + } + + return shiftfs_real_ioctl(file, cmd, arg); +} + +enum shiftfs_copyop { + SHIFTFS_COPY, + SHIFTFS_CLONE, + SHIFTFS_DEDUPE, +}; + +static ssize_t shiftfs_copyfile(struct file *file_in, loff_t pos_in, + struct file *file_out, loff_t pos_out, u64 len, + unsigned int flags, enum shiftfs_copyop op) +{ + ssize_t ret; + struct fd real_in, real_out; + const struct cred *oldcred; + struct inode *inode_out = file_inode(file_out); + struct inode *loweri = inode_out->i_private; + + ret = shiftfs_real_fdget(file_out, &real_out); + if (ret) + return ret; + + ret = shiftfs_real_fdget(file_in, &real_in); + if (ret) { + fdput(real_out); + return ret; + } + + oldcred = shiftfs_override_creds(inode_out->i_sb); + switch (op) { + case SHIFTFS_COPY: + ret = vfs_copy_file_range(real_in.file, pos_in, real_out.file, + pos_out, len, flags); + break; + + case SHIFTFS_CLONE: + ret = vfs_clone_file_range(real_in.file, pos_in, real_out.file, + pos_out, len, flags); + break; + + case SHIFTFS_DEDUPE: + ret = vfs_dedupe_file_range_one(real_in.file, pos_in, + real_out.file, pos_out, len, + flags); + break; + } + revert_creds(oldcred); + + /* Update size */ + shiftfs_copyattr(loweri, inode_out); + + fdput(real_in); + fdput(real_out); + + return ret; +} + +static ssize_t shiftfs_copy_file_range(struct file *file_in, loff_t pos_in, + struct file *file_out, loff_t pos_out, + size_t len, unsigned int flags) +{ + return shiftfs_copyfile(file_in, pos_in, file_out, pos_out, len, flags, + SHIFTFS_COPY); +} + +static loff_t shiftfs_remap_file_range(struct file *file_in, loff_t pos_in, + struct file *file_out, loff_t pos_out, + loff_t len, unsigned int remap_flags) +{ + enum shiftfs_copyop op; + + if (remap_flags & ~(REMAP_FILE_DEDUP | REMAP_FILE_ADVISORY)) + return -EINVAL; + + if (remap_flags & REMAP_FILE_DEDUP) + op = SHIFTFS_DEDUPE; + else + op = SHIFTFS_CLONE; + + return shiftfs_copyfile(file_in, pos_in, file_out, pos_out, len, + remap_flags, op); +} + +static int shiftfs_iterate_shared(struct file *file, struct dir_context *ctx) +{ + const struct cred *oldcred; + int err = -ENOTDIR; + struct file *realfile = file->private_data; + + oldcred = shiftfs_override_creds(file->f_path.dentry->d_sb); + err = iterate_dir(realfile, ctx); + revert_creds(oldcred); + + return err; +} + +const struct file_operations shiftfs_file_operations = { + .open = shiftfs_open, + .release = shiftfs_release, + .llseek = shiftfs_file_llseek, + .read_iter = shiftfs_read_iter, + .write_iter = shiftfs_write_iter, + .fsync = shiftfs_fsync, + .mmap = shiftfs_mmap, + .fallocate = shiftfs_fallocate, + .fadvise = shiftfs_fadvise, + .unlocked_ioctl = shiftfs_ioctl, + .compat_ioctl = shiftfs_compat_ioctl, + .copy_file_range = shiftfs_copy_file_range, + .remap_file_range = shiftfs_remap_file_range, +}; + +const struct file_operations shiftfs_dir_operations = { + .open = shiftfs_dir_open, + .release = shiftfs_dir_release, + .compat_ioctl = shiftfs_compat_ioctl, + .fsync = shiftfs_fsync, + .iterate_shared = shiftfs_iterate_shared, + .llseek = shiftfs_dir_llseek, + .read = generic_read_dir, + .unlocked_ioctl = shiftfs_ioctl, +}; + +static const struct address_space_operations shiftfs_aops = { + /* For O_DIRECT dentry_open() checks f_mapping->a_ops->direct_IO */ + .direct_IO = noop_direct_IO, +}; + +static void shiftfs_fill_inode(struct inode *inode, unsigned long ino, + umode_t mode, dev_t dev, struct dentry *dentry) +{ + struct inode *loweri; + + inode->i_ino = ino; + inode->i_flags |= S_NOCMTIME; + + mode &= S_IFMT; + inode->i_mode = mode; + switch (mode & S_IFMT) { + case S_IFDIR: + inode->i_op = &shiftfs_dir_inode_operations; + inode->i_fop = &shiftfs_dir_operations; + break; + case S_IFLNK: + inode->i_op = &shiftfs_symlink_inode_operations; + break; + case S_IFREG: + inode->i_op = &shiftfs_file_inode_operations; + inode->i_fop = &shiftfs_file_operations; + inode->i_mapping->a_ops = &shiftfs_aops; + break; + default: + inode->i_op = &shiftfs_special_inode_operations; + init_special_inode(inode, mode, dev); + break; + } + + if (!dentry) + return; + + loweri = dentry->d_inode; + if (!loweri->i_op->get_link) + inode->i_opflags |= IOP_NOFOLLOW; + + shiftfs_copyattr(loweri, inode); + shiftfs_copyflags(loweri, inode); + set_nlink(inode, loweri->i_nlink); +} + +static int shiftfs_show_options(struct seq_file *m, struct dentry *dentry) +{ + struct super_block *sb = dentry->d_sb; + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + + if (sbinfo->mark) + seq_show_option(m, "mark", NULL); + + if (sbinfo->passthrough) + seq_printf(m, ",passthrough=%u", sbinfo->passthrough); + + return 0; +} + +static int shiftfs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + struct super_block *sb = dentry->d_sb; + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + struct dentry *root = sb->s_root; + struct dentry *realroot = root->d_fsdata; + struct path realpath = { .mnt = sbinfo->mnt, .dentry = realroot }; + int err; + + err = vfs_statfs(&realpath, buf); + if (err) + return err; + + if (!shiftfs_passthrough_statfs(sbinfo)) + buf->f_type = sb->s_magic; + + return 0; +} + +static void shiftfs_evict_inode(struct inode *inode) +{ + struct inode *loweri = inode->i_private; + + clear_inode(inode); + + if (loweri) + iput(loweri); +} + +static void shiftfs_put_super(struct super_block *sb) +{ + struct shiftfs_super_info *sbinfo = sb->s_fs_info; + + if (sbinfo) { + mntput(sbinfo->mnt); + put_cred(sbinfo->creator_cred); + kfree(sbinfo); + } +} + +static const struct xattr_handler shiftfs_xattr_handler = { + .prefix = "", + .get = shiftfs_xattr_get, + .set = shiftfs_xattr_set, +}; + +const struct xattr_handler *shiftfs_xattr_handlers[] = { +#ifdef CONFIG_SHIFT_FS_POSIX_ACL + &shiftfs_posix_acl_access_xattr_handler, + &shiftfs_posix_acl_default_xattr_handler, +#endif + &shiftfs_xattr_handler, + NULL +}; + +static inline bool passthrough_is_subset(int old_flags, int new_flags) +{ + if ((new_flags & old_flags) != new_flags) + return false; + + return true; +} + +static int shiftfs_super_check_flags(unsigned long old_flags, + unsigned long new_flags) +{ + if ((old_flags & SB_RDONLY) && !(new_flags & SB_RDONLY)) + return -EPERM; + + if ((old_flags & SB_NOSUID) && !(new_flags & SB_NOSUID)) + return -EPERM; + + if ((old_flags & SB_NODEV) && !(new_flags & SB_NODEV)) + return -EPERM; + + if ((old_flags & SB_NOEXEC) && !(new_flags & SB_NOEXEC)) + return -EPERM; + + if ((old_flags & SB_NOATIME) && !(new_flags & SB_NOATIME)) + return -EPERM; + + if ((old_flags & SB_NODIRATIME) && !(new_flags & SB_NODIRATIME)) + return -EPERM; + + if (!(old_flags & SB_POSIXACL) && (new_flags & SB_POSIXACL)) + return -EPERM; + + return 0; +} + +static int shiftfs_remount(struct super_block *sb, int *flags, char *data) +{ + int err; + struct shiftfs_super_info new = {}; + struct shiftfs_super_info *info = sb->s_fs_info; + + err = shiftfs_parse_mount_options(&new, data); + if (err) + return err; + + err = shiftfs_super_check_flags(sb->s_flags, *flags); + if (err) + return err; + + /* Mark mount option cannot be changed. */ + if (info->mark || (info->mark != new.mark)) + return -EPERM; + + if (info->passthrough != new.passthrough) { + /* Don't allow exceeding passthrough options of mark mount. */ + if (!passthrough_is_subset(info->passthrough_mark, + info->passthrough)) + return -EPERM; + + info->passthrough = new.passthrough; + } + + return 0; +} + +static const struct super_operations shiftfs_super_ops = { + .put_super = shiftfs_put_super, + .show_options = shiftfs_show_options, + .statfs = shiftfs_statfs, + .remount_fs = shiftfs_remount, + .evict_inode = shiftfs_evict_inode, +}; + +struct shiftfs_data { + void *data; + const char *path; +}; + +static void shiftfs_super_force_flags(struct super_block *sb, + unsigned long lower_flags) +{ + sb->s_flags |= lower_flags & (SB_RDONLY | SB_NOSUID | SB_NODEV | + SB_NOEXEC | SB_NOATIME | SB_NODIRATIME); + + if (!(lower_flags & SB_POSIXACL)) + sb->s_flags &= ~SB_POSIXACL; +} + +static int shiftfs_fill_super(struct super_block *sb, void *raw_data, + int silent) +{ + int err; + struct path path = {}; + struct shiftfs_super_info *sbinfo_mp; + char *name = NULL; + struct inode *inode = NULL; + struct dentry *dentry = NULL; + struct shiftfs_data *data = raw_data; + struct shiftfs_super_info *sbinfo = NULL; + + if (!data->path) + return -EINVAL; + + sb->s_fs_info = kzalloc(sizeof(*sbinfo), GFP_KERNEL); + if (!sb->s_fs_info) + return -ENOMEM; + sbinfo = sb->s_fs_info; + + err = shiftfs_parse_mount_options(sbinfo, data->data); + if (err) + return err; + + /* to mount a mark, must be userns admin */ + if (!sbinfo->mark && !ns_capable(current_user_ns(), CAP_SYS_ADMIN)) + return -EPERM; + + name = kstrdup(data->path, GFP_KERNEL); + if (!name) + return -ENOMEM; + + err = kern_path(name, LOOKUP_FOLLOW, &path); + if (err) + goto out_free_name; + + if (!S_ISDIR(path.dentry->d_inode->i_mode)) { + err = -ENOTDIR; + goto out_put_path; + } + + sb->s_flags |= SB_POSIXACL; + + if (sbinfo->mark) { + struct cred *cred_tmp; + struct super_block *lower_sb = path.mnt->mnt_sb; + + /* to mark a mount point, must root wrt lower s_user_ns */ + if (!ns_capable(lower_sb->s_user_ns, CAP_SYS_ADMIN)) { + err = -EPERM; + goto out_put_path; + } + + /* + * this part is visible unshifted, so make sure no + * executables that could be used to give suid + * privileges + */ + sb->s_iflags = SB_I_NOEXEC; + + shiftfs_super_force_flags(sb, lower_sb->s_flags); + + /* + * Handle nesting of shiftfs mounts by referring this mark + * mount back to the original mark mount. This is more + * efficient and alleviates concerns about stack depth. + */ + if (lower_sb->s_magic == SHIFTFS_MAGIC) { + sbinfo_mp = lower_sb->s_fs_info; + + /* Doesn't make sense to mark a mark mount */ + if (sbinfo_mp->mark) { + err = -EINVAL; + goto out_put_path; + } + + if (!passthrough_is_subset(sbinfo_mp->passthrough, + sbinfo->passthrough)) { + err = -EPERM; + goto out_put_path; + } + + sbinfo->mnt = mntget(sbinfo_mp->mnt); + dentry = dget(path.dentry->d_fsdata); + /* + * Copy up the passthrough mount options from the + * parent mark mountpoint. + */ + sbinfo->passthrough_mark = sbinfo_mp->passthrough_mark; + sbinfo->creator_cred = get_cred(sbinfo_mp->creator_cred); + } else { + sbinfo->mnt = mntget(path.mnt); + dentry = dget(path.dentry); + /* + * For a new mark passthrough_mark and passthrough + * are identical. + */ + sbinfo->passthrough_mark = sbinfo->passthrough; + + cred_tmp = prepare_creds(); + if (!cred_tmp) { + err = -ENOMEM; + goto out_put_path; + } + /* Don't override disk quota limits or use reserved space. */ + cap_lower(cred_tmp->cap_effective, CAP_SYS_RESOURCE); + sbinfo->creator_cred = cred_tmp; + } + } else { + /* + * This leg executes if we're admin capable in the namespace, + * so be very careful. + */ + err = -EPERM; + if (path.dentry->d_sb->s_magic != SHIFTFS_MAGIC) + goto out_put_path; + + sbinfo_mp = path.dentry->d_sb->s_fs_info; + if (!sbinfo_mp->mark) + goto out_put_path; + + if (!passthrough_is_subset(sbinfo_mp->passthrough, + sbinfo->passthrough)) + goto out_put_path; + + sbinfo->mnt = mntget(sbinfo_mp->mnt); + sbinfo->creator_cred = get_cred(sbinfo_mp->creator_cred); + dentry = dget(path.dentry->d_fsdata); + /* + * Copy up passthrough settings from mark mountpoint so we can + * verify when the overlay wants to remount with different + * passthrough settings. + */ + sbinfo->passthrough_mark = sbinfo_mp->passthrough; + shiftfs_super_force_flags(sb, path.mnt->mnt_sb->s_flags); + } + + sb->s_stack_depth = dentry->d_sb->s_stack_depth + 1; + if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { + printk(KERN_ERR "shiftfs: maximum stacking depth exceeded\n"); + err = -EINVAL; + goto out_put_path; + } + + inode = new_inode(sb); + if (!inode) { + err = -ENOMEM; + goto out_put_path; + } + shiftfs_fill_inode(inode, dentry->d_inode->i_ino, S_IFDIR, 0, dentry); + + ihold(dentry->d_inode); + inode->i_private = dentry->d_inode; + + sb->s_magic = SHIFTFS_MAGIC; + sb->s_maxbytes = MAX_LFS_FILESIZE; + sb->s_op = &shiftfs_super_ops; + sb->s_xattr = shiftfs_xattr_handlers; + sb->s_d_op = &shiftfs_dentry_ops; + sb->s_root = d_make_root(inode); + if (!sb->s_root) { + err = -ENOMEM; + goto out_put_path; + } + + sb->s_root->d_fsdata = dentry; + sbinfo->userns = get_user_ns(dentry->d_sb->s_user_ns); + shiftfs_copyattr(dentry->d_inode, sb->s_root->d_inode); + + dentry = NULL; + err = 0; + +out_put_path: + path_put(&path); + +out_free_name: + kfree(name); + + dput(dentry); + + return err; +} + +static struct dentry *shiftfs_mount(struct file_system_type *fs_type, + int flags, const char *dev_name, void *data) +{ + struct shiftfs_data d = { data, dev_name }; + + return mount_nodev(fs_type, flags, &d, shiftfs_fill_super); +} + +static struct file_system_type shiftfs_type = { + .owner = THIS_MODULE, + .name = "shiftfs", + .mount = shiftfs_mount, + .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, +}; + +static int __init shiftfs_init(void) +{ + return register_filesystem(&shiftfs_type); +} + +static void __exit shiftfs_exit(void) +{ + unregister_filesystem(&shiftfs_type); +} + +MODULE_ALIAS_FS("shiftfs"); +MODULE_AUTHOR("James Bottomley"); +MODULE_AUTHOR("Seth Forshee "); +MODULE_AUTHOR("Christian Brauner "); +MODULE_DESCRIPTION("id shifting filesystem"); +MODULE_LICENSE("GPL v2"); +module_init(shiftfs_init) +module_exit(shiftfs_exit) --- linux-5.8.0.orig/fs/signalfd.c +++ linux-5.8.0/fs/signalfd.c @@ -314,9 +314,10 @@ { sigset_t mask; - if (sizemask != sizeof(sigset_t) || - copy_from_user(&mask, user_mask, sizeof(mask))) + if (sizemask != sizeof(sigset_t)) return -EINVAL; + if (copy_from_user(&mask, user_mask, sizeof(mask))) + return -EFAULT; return do_signalfd4(ufd, &mask, flags); } @@ -325,9 +326,10 @@ { sigset_t mask; - if (sizemask != sizeof(sigset_t) || - copy_from_user(&mask, user_mask, sizeof(mask))) + if (sizemask != sizeof(sigset_t)) return -EINVAL; + if (copy_from_user(&mask, user_mask, sizeof(mask))) + return -EFAULT; return do_signalfd4(ufd, &mask, 0); } --- linux-5.8.0.orig/fs/splice.c +++ linux-5.8.0/fs/splice.c @@ -526,6 +526,22 @@ return 1; } +/* We know we have a pipe buffer, but maybe it's empty? */ +static inline bool eat_empty_buffer(struct pipe_inode_info *pipe) +{ + unsigned int tail = pipe->tail; + unsigned int mask = pipe->ring_size - 1; + struct pipe_buffer *buf = &pipe->bufs[tail & mask]; + + if (unlikely(!buf->len)) { + pipe_buf_release(pipe, buf); + pipe->tail = tail+1; + return true; + } + + return false; +} + /** * splice_from_pipe_next - wait for some data to splice from * @pipe: pipe to splice from @@ -545,6 +561,7 @@ if (signal_pending(current)) return -ERESTARTSYS; +repeat: while (pipe_empty(pipe->head, pipe->tail)) { if (!pipe->writers) return 0; @@ -563,9 +580,12 @@ sd->need_wakeup = false; } - pipe_wait(pipe); + pipe_wait_readable(pipe); } + if (eat_empty_buffer(pipe)) + goto repeat; + return 1; } @@ -839,8 +859,8 @@ /* * Attempt to initiate a splice from pipe to file. */ -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, - loff_t *ppos, size_t len, unsigned int flags) +long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) { if (out->f_op->splice_write) return out->f_op->splice_write(pipe, out, ppos, len, flags); @@ -850,9 +870,9 @@ /* * Attempt to initiate a splice from a file to a pipe. */ -static long do_splice_to(struct file *in, loff_t *ppos, - struct pipe_inode_info *pipe, size_t len, - unsigned int flags) +long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { int ret; @@ -870,6 +890,7 @@ return in->f_op->splice_read(in, ppos, pipe, len, flags); return default_file_splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL_GPL(do_splice_from); /** * splice_direct_to_actor - splices data directly between two non-pipes @@ -1016,6 +1037,7 @@ return do_splice_from(pipe, file, sd->opos, sd->total_len, sd->flags); } +EXPORT_SYMBOL_GPL(do_splice_to); /** * do_splice_direct - splices data directly between two files @@ -1077,7 +1099,7 @@ return -EAGAIN; if (signal_pending(current)) return -ERESTARTSYS; - pipe_wait(pipe); + pipe_wait_writable(pipe); } } @@ -1454,7 +1476,7 @@ ret = -EAGAIN; break; } - pipe_wait(pipe); + pipe_wait_readable(pipe); } pipe_unlock(pipe); @@ -1493,7 +1515,7 @@ ret = -ERESTARTSYS; break; } - pipe_wait(pipe); + pipe_wait_writable(pipe); } pipe_unlock(pipe); --- linux-5.8.0.orig/fs/squashfs/block.c +++ linux-5.8.0/fs/squashfs/block.c @@ -87,7 +87,11 @@ int error, i; struct bio *bio; - bio = bio_alloc(GFP_NOIO, page_count); + if (page_count <= BIO_MAX_PAGES) + bio = bio_alloc(GFP_NOIO, page_count); + else + bio = bio_kmalloc(GFP_NOIO, page_count); + if (!bio) return -ENOMEM; @@ -192,9 +196,15 @@ length = SQUASHFS_COMPRESSED_SIZE(length); index += 2; - TRACE("Block @ 0x%llx, %scompressed size %d\n", index, + TRACE("Block @ 0x%llx, %scompressed size %d\n", index - 2, compressed ? "" : "un", length); } + if (length < 0 || length > output->length || + (index + length) > msblk->bytes_used) { + res = -EIO; + goto out; + } + if (next_index) *next_index = index + length; --- linux-5.8.0.orig/fs/squashfs/export.c +++ linux-5.8.0/fs/squashfs/export.c @@ -41,12 +41,17 @@ struct squashfs_sb_info *msblk = sb->s_fs_info; int blk = SQUASHFS_LOOKUP_BLOCK(ino_num - 1); int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino_num - 1); - u64 start = le64_to_cpu(msblk->inode_lookup_table[blk]); + u64 start; __le64 ino; int err; TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino_num); + if (ino_num == 0 || (ino_num - 1) >= msblk->inodes) + return -EINVAL; + + start = le64_to_cpu(msblk->inode_lookup_table[blk]); + err = squashfs_read_metadata(sb, &ino, &start, &offset, sizeof(ino)); if (err < 0) return err; @@ -111,7 +116,10 @@ u64 lookup_table_start, u64 next_table, unsigned int inodes) { unsigned int length = SQUASHFS_LOOKUP_BLOCK_BYTES(inodes); + unsigned int indexes = SQUASHFS_LOOKUP_BLOCKS(inodes); + int n; __le64 *table; + u64 start, end; TRACE("In read_inode_lookup_table, length %d\n", length); @@ -121,20 +129,41 @@ if (inodes == 0) return ERR_PTR(-EINVAL); - /* length bytes should not extend into the next table - this check - * also traps instances where lookup_table_start is incorrectly larger - * than the next table start + /* + * The computed size of the lookup table (length bytes) should exactly + * match the table start and end points */ - if (lookup_table_start + length > next_table) + if (length != (next_table - lookup_table_start)) return ERR_PTR(-EINVAL); table = squashfs_read_table(sb, lookup_table_start, length); + if (IS_ERR(table)) + return table; /* - * table[0] points to the first inode lookup table metadata block, - * this should be less than lookup_table_start + * table0], table[1], ... table[indexes - 1] store the locations + * of the compressed inode lookup blocks. Each entry should be + * less than the next (i.e. table[0] < table[1]), and the difference + * between them should be SQUASHFS_METADATA_SIZE or less. + * table[indexes - 1] should be less than lookup_table_start, and + * again the difference should be SQUASHFS_METADATA_SIZE or less */ - if (!IS_ERR(table) && le64_to_cpu(table[0]) >= lookup_table_start) { + for (n = 0; n < (indexes - 1); n++) { + start = le64_to_cpu(table[n]); + end = le64_to_cpu(table[n + 1]); + + if (start >= end + || (end - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { + kfree(table); + return ERR_PTR(-EINVAL); + } + } + + start = le64_to_cpu(table[indexes - 1]); + if (start >= lookup_table_start || + (lookup_table_start - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { kfree(table); return ERR_PTR(-EINVAL); } --- linux-5.8.0.orig/fs/squashfs/id.c +++ linux-5.8.0/fs/squashfs/id.c @@ -35,10 +35,15 @@ struct squashfs_sb_info *msblk = sb->s_fs_info; int block = SQUASHFS_ID_BLOCK(index); int offset = SQUASHFS_ID_BLOCK_OFFSET(index); - u64 start_block = le64_to_cpu(msblk->id_table[block]); + u64 start_block; __le32 disk_id; int err; + if (index >= msblk->ids) + return -EINVAL; + + start_block = le64_to_cpu(msblk->id_table[block]); + err = squashfs_read_metadata(sb, &disk_id, &start_block, &offset, sizeof(disk_id)); if (err < 0) @@ -56,7 +61,10 @@ u64 id_table_start, u64 next_table, unsigned short no_ids) { unsigned int length = SQUASHFS_ID_BLOCK_BYTES(no_ids); + unsigned int indexes = SQUASHFS_ID_BLOCKS(no_ids); + int n; __le64 *table; + u64 start, end; TRACE("In read_id_index_table, length %d\n", length); @@ -67,20 +75,38 @@ return ERR_PTR(-EINVAL); /* - * length bytes should not extend into the next table - this check - * also traps instances where id_table_start is incorrectly larger - * than the next table start + * The computed size of the index table (length bytes) should exactly + * match the table start and end points */ - if (id_table_start + length > next_table) + if (length != (next_table - id_table_start)) return ERR_PTR(-EINVAL); table = squashfs_read_table(sb, id_table_start, length); + if (IS_ERR(table)) + return table; /* - * table[0] points to the first id lookup table metadata block, this - * should be less than id_table_start + * table[0], table[1], ... table[indexes - 1] store the locations + * of the compressed id blocks. Each entry should be less than + * the next (i.e. table[0] < table[1]), and the difference between them + * should be SQUASHFS_METADATA_SIZE or less. table[indexes - 1] + * should be less than id_table_start, and again the difference + * should be SQUASHFS_METADATA_SIZE or less */ - if (!IS_ERR(table) && le64_to_cpu(table[0]) >= id_table_start) { + for (n = 0; n < (indexes - 1); n++) { + start = le64_to_cpu(table[n]); + end = le64_to_cpu(table[n + 1]); + + if (start >= end || (end - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { + kfree(table); + return ERR_PTR(-EINVAL); + } + } + + start = le64_to_cpu(table[indexes - 1]); + if (start >= id_table_start || (id_table_start - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { kfree(table); return ERR_PTR(-EINVAL); } --- linux-5.8.0.orig/fs/squashfs/squashfs_fs.h +++ linux-5.8.0/fs/squashfs/squashfs_fs.h @@ -17,6 +17,7 @@ /* size of metadata (inode and directory) blocks */ #define SQUASHFS_METADATA_SIZE 8192 +#define SQUASHFS_BLOCK_OFFSET 2 /* default size of block device I/O */ #ifdef CONFIG_SQUASHFS_4K_DEVBLK_SIZE --- linux-5.8.0.orig/fs/squashfs/squashfs_fs_sb.h +++ linux-5.8.0/fs/squashfs/squashfs_fs_sb.h @@ -64,5 +64,6 @@ unsigned int inodes; unsigned int fragments; int xattr_ids; + unsigned int ids; }; #endif --- linux-5.8.0.orig/fs/squashfs/super.c +++ linux-5.8.0/fs/squashfs/super.c @@ -166,6 +166,7 @@ msblk->directory_table = le64_to_cpu(sblk->directory_table_start); msblk->inodes = le32_to_cpu(sblk->inodes); msblk->fragments = le32_to_cpu(sblk->fragments); + msblk->ids = le16_to_cpu(sblk->no_ids); flags = le16_to_cpu(sblk->flags); TRACE("Found valid superblock on %pg\n", sb->s_bdev); @@ -177,7 +178,7 @@ TRACE("Block size %d\n", msblk->block_size); TRACE("Number of inodes %d\n", msblk->inodes); TRACE("Number of fragments %d\n", msblk->fragments); - TRACE("Number of ids %d\n", le16_to_cpu(sblk->no_ids)); + TRACE("Number of ids %d\n", msblk->ids); TRACE("sblk->inode_table_start %llx\n", msblk->inode_table); TRACE("sblk->directory_table_start %llx\n", msblk->directory_table); TRACE("sblk->fragment_table_start %llx\n", @@ -236,8 +237,7 @@ allocate_id_index_table: /* Allocate and read id index table */ msblk->id_table = squashfs_read_id_index_table(sb, - le64_to_cpu(sblk->id_table_start), next_table, - le16_to_cpu(sblk->no_ids)); + le64_to_cpu(sblk->id_table_start), next_table, msblk->ids); if (IS_ERR(msblk->id_table)) { errorf(fc, "unable to read id index table"); err = PTR_ERR(msblk->id_table); --- linux-5.8.0.orig/fs/squashfs/xattr.h +++ linux-5.8.0/fs/squashfs/xattr.h @@ -17,8 +17,16 @@ static inline __le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 start, u64 *xattr_table_start, int *xattr_ids) { + struct squashfs_xattr_id_table *id_table; + + id_table = squashfs_read_table(sb, start, sizeof(*id_table)); + if (IS_ERR(id_table)) + return (__le64 *) id_table; + + *xattr_table_start = le64_to_cpu(id_table->xattr_table_start); + kfree(id_table); + ERROR("Xattrs in filesystem, these will be ignored\n"); - *xattr_table_start = start; return ERR_PTR(-ENOTSUPP); } --- linux-5.8.0.orig/fs/squashfs/xattr_id.c +++ linux-5.8.0/fs/squashfs/xattr_id.c @@ -31,10 +31,15 @@ struct squashfs_sb_info *msblk = sb->s_fs_info; int block = SQUASHFS_XATTR_BLOCK(index); int offset = SQUASHFS_XATTR_BLOCK_OFFSET(index); - u64 start_block = le64_to_cpu(msblk->xattr_id_table[block]); + u64 start_block; struct squashfs_xattr_id id; int err; + if (index >= msblk->xattr_ids) + return -EINVAL; + + start_block = le64_to_cpu(msblk->xattr_id_table[block]); + err = squashfs_read_metadata(sb, &id, &start_block, &offset, sizeof(id)); if (err < 0) @@ -50,13 +55,17 @@ /* * Read uncompressed xattr id lookup table indexes from disk into memory */ -__le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 start, +__le64 *squashfs_read_xattr_id_table(struct super_block *sb, u64 table_start, u64 *xattr_table_start, int *xattr_ids) { - unsigned int len; + struct squashfs_sb_info *msblk = sb->s_fs_info; + unsigned int len, indexes; struct squashfs_xattr_id_table *id_table; + __le64 *table; + u64 start, end; + int n; - id_table = squashfs_read_table(sb, start, sizeof(*id_table)); + id_table = squashfs_read_table(sb, table_start, sizeof(*id_table)); if (IS_ERR(id_table)) return (__le64 *) id_table; @@ -70,13 +79,54 @@ if (*xattr_ids == 0) return ERR_PTR(-EINVAL); - /* xattr_table should be less than start */ - if (*xattr_table_start >= start) + len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids); + indexes = SQUASHFS_XATTR_BLOCKS(*xattr_ids); + + /* + * The computed size of the index table (len bytes) should exactly + * match the table start and end points + */ + start = table_start + sizeof(*id_table); + end = msblk->bytes_used; + + if (len != (end - start)) return ERR_PTR(-EINVAL); - len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids); + table = squashfs_read_table(sb, start, len); + if (IS_ERR(table)) + return table; + + /* table[0], table[1], ... table[indexes - 1] store the locations + * of the compressed xattr id blocks. Each entry should be less than + * the next (i.e. table[0] < table[1]), and the difference between them + * should be SQUASHFS_METADATA_SIZE or less. table[indexes - 1] + * should be less than table_start, and again the difference + * shouls be SQUASHFS_METADATA_SIZE or less. + * + * Finally xattr_table_start should be less than table[0]. + */ + for (n = 0; n < (indexes - 1); n++) { + start = le64_to_cpu(table[n]); + end = le64_to_cpu(table[n + 1]); + + if (start >= end || (end - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { + kfree(table); + return ERR_PTR(-EINVAL); + } + } + + start = le64_to_cpu(table[indexes - 1]); + if (start >= table_start || (table_start - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { + kfree(table); + return ERR_PTR(-EINVAL); + } - TRACE("In read_xattr_index_table, length %d\n", len); + if (*xattr_table_start >= le64_to_cpu(table[0])) { + kfree(table); + return ERR_PTR(-EINVAL); + } - return squashfs_read_table(sb, start + sizeof(*id_table), len); + return table; } --- linux-5.8.0.orig/fs/super.c +++ linux-5.8.0/fs/super.c @@ -1645,36 +1645,11 @@ */ int __sb_start_write(struct super_block *sb, int level, bool wait) { - bool force_trylock = false; - int ret = 1; + if (!wait) + return percpu_down_read_trylock(sb->s_writers.rw_sem + level-1); -#ifdef CONFIG_LOCKDEP - /* - * We want lockdep to tell us about possible deadlocks with freezing - * but it's it bit tricky to properly instrument it. Getting a freeze - * protection works as getting a read lock but there are subtle - * problems. XFS for example gets freeze protection on internal level - * twice in some cases, which is OK only because we already hold a - * freeze protection also on higher level. Due to these cases we have - * to use wait == F (trylock mode) which must not fail. - */ - if (wait) { - int i; - - for (i = 0; i < level - 1; i++) - if (percpu_rwsem_is_held(sb->s_writers.rw_sem + i)) { - force_trylock = true; - break; - } - } -#endif - if (wait && !force_trylock) - percpu_down_read(sb->s_writers.rw_sem + level-1); - else - ret = percpu_down_read_trylock(sb->s_writers.rw_sem + level-1); - - WARN_ON(force_trylock && !ret); - return ret; + percpu_down_read(sb->s_writers.rw_sem + level-1); + return 1; } EXPORT_SYMBOL(__sb_start_write); --- linux-5.8.0.orig/fs/sync.c +++ linux-5.8.0/fs/sync.c @@ -28,7 +28,7 @@ * wait == 1 case since in that case write_inode() functions do * sync_dirty_buffer() and thus effectively write one block at a time. */ -static int __sync_filesystem(struct super_block *sb, int wait) +int __sync_filesystem(struct super_block *sb, int wait) { if (wait) sync_inodes_sb(sb); @@ -39,6 +39,7 @@ sb->s_op->sync_fs(sb, wait); return __sync_blockdev(sb->s_bdev, wait); } +EXPORT_SYMBOL_GPL(__sync_filesystem); /* * Write out and wait upon all dirty data associated with this --- linux-5.8.0.orig/fs/sysfs/file.c +++ linux-5.8.0/fs/sysfs/file.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "sysfs.h" @@ -707,3 +708,57 @@ return 0; } EXPORT_SYMBOL_GPL(sysfs_change_owner); + +/** + * sysfs_emit - scnprintf equivalent, aware of PAGE_SIZE buffer. + * @buf: start of PAGE_SIZE buffer. + * @fmt: format + * @...: optional arguments to @format + * + * + * Returns number of characters written to @buf. + */ +int sysfs_emit(char *buf, const char *fmt, ...) +{ + va_list args; + int len; + + if (WARN(!buf || offset_in_page(buf), + "invalid sysfs_emit: buf:%p\n", buf)) + return 0; + + va_start(args, fmt); + len = vscnprintf(buf, PAGE_SIZE, fmt, args); + va_end(args); + + return len; +} +EXPORT_SYMBOL_GPL(sysfs_emit); + +/** + * sysfs_emit_at - scnprintf equivalent, aware of PAGE_SIZE buffer. + * @buf: start of PAGE_SIZE buffer. + * @at: offset in @buf to start write in bytes + * @at must be >= 0 && < PAGE_SIZE + * @fmt: format + * @...: optional arguments to @fmt + * + * + * Returns number of characters written starting at &@buf[@at]. + */ +int sysfs_emit_at(char *buf, int at, const char *fmt, ...) +{ + va_list args; + int len; + + if (WARN(!buf || offset_in_page(buf) || at < 0 || at >= PAGE_SIZE, + "invalid sysfs_emit_at: buf:%p at:%d\n", buf, at)) + return 0; + + va_start(args, fmt); + len = vscnprintf(buf + at, PAGE_SIZE - at, fmt, args); + va_end(args); + + return len; +} +EXPORT_SYMBOL_GPL(sysfs_emit_at); --- linux-5.8.0.orig/fs/ubifs/auth.c +++ linux-5.8.0/fs/ubifs/auth.c @@ -328,7 +328,7 @@ ubifs_err(c, "hmac %s is bigger than maximum allowed hmac size (%d > %d)", hmac_name, c->hmac_desc_len, UBIFS_HMAC_ARR_SZ); err = -EINVAL; - goto out_free_hash; + goto out_free_hmac; } err = crypto_shash_setkey(c->hmac_tfm, ukp->data, ukp->datalen); @@ -338,8 +338,10 @@ c->authenticated = true; c->log_hash = ubifs_hash_get_desc(c); - if (IS_ERR(c->log_hash)) + if (IS_ERR(c->log_hash)) { + err = PTR_ERR(c->log_hash); goto out_free_hmac; + } err = 0; --- linux-5.8.0.orig/fs/ubifs/debug.c +++ linux-5.8.0/fs/ubifs/debug.c @@ -1123,6 +1123,7 @@ err = PTR_ERR(dent); if (err == -ENOENT) break; + kfree(pdent); return err; } --- linux-5.8.0.orig/fs/ubifs/dir.c +++ linux-5.8.0/fs/ubifs/dir.c @@ -276,6 +276,15 @@ return d_splice_alias(inode, dentry); } +static int ubifs_prepare_create(struct inode *dir, struct dentry *dentry, + struct fscrypt_name *nm) +{ + if (fscrypt_is_nokey_name(dentry)) + return -ENOKEY; + + return fscrypt_setup_filename(dir, &dentry->d_name, 0, nm); +} + static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) { @@ -299,7 +308,7 @@ if (err) return err; - err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); + err = ubifs_prepare_create(dir, dentry, &nm); if (err) goto out_budg; @@ -959,7 +968,7 @@ if (err) return err; - err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); + err = ubifs_prepare_create(dir, dentry, &nm); if (err) goto out_budg; @@ -1044,7 +1053,7 @@ return err; } - err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); + err = ubifs_prepare_create(dir, dentry, &nm); if (err) { kfree(dev); goto out_budg; @@ -1128,7 +1137,7 @@ if (err) return err; - err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); + err = ubifs_prepare_create(dir, dentry, &nm); if (err) goto out_budg; --- linux-5.8.0.orig/fs/ubifs/io.c +++ linux-5.8.0/fs/ubifs/io.c @@ -319,7 +319,7 @@ { uint32_t crc; - ubifs_assert(c, pad >= 0 && !(pad & 7)); + ubifs_assert(c, pad >= 0); if (pad >= UBIFS_PAD_NODE_SZ) { struct ubifs_ch *ch = buf; @@ -764,6 +764,10 @@ * write-buffer. */ memcpy(wbuf->buf + wbuf->used, buf, len); + if (aligned_len > len) { + ubifs_assert(c, aligned_len - len < 8); + ubifs_pad(c, wbuf->buf + wbuf->used + len, aligned_len - len); + } if (aligned_len == wbuf->avail) { dbg_io("flush jhead %s wbuf to LEB %d:%d", @@ -856,13 +860,18 @@ } spin_lock(&wbuf->lock); - if (aligned_len) + if (aligned_len) { /* * And now we have what's left and what does not take whole * max. write unit, so write it to the write-buffer and we are * done. */ memcpy(wbuf->buf, buf + written, len); + if (aligned_len > len) { + ubifs_assert(c, aligned_len - len < 8); + ubifs_pad(c, wbuf->buf + len, aligned_len - len); + } + } if (c->leb_size - wbuf->offs >= c->max_write_size) wbuf->size = c->max_write_size; --- linux-5.8.0.orig/fs/ubifs/journal.c +++ linux-5.8.0/fs/ubifs/journal.c @@ -539,7 +539,7 @@ const struct fscrypt_name *nm, const struct inode *inode, int deletion, int xent) { - int err, dlen, ilen, len, lnum, ino_offs, dent_offs; + int err, dlen, ilen, len, lnum, ino_offs, dent_offs, orphan_added = 0; int aligned_dlen, aligned_ilen, sync = IS_DIRSYNC(dir); int last_reference = !!(deletion && inode->i_nlink == 0); struct ubifs_inode *ui = ubifs_inode(inode); @@ -630,6 +630,7 @@ goto out_finish; } ui->del_cmtno = c->cmt_no; + orphan_added = 1; } err = write_head(c, BASEHD, dent, len, &lnum, &dent_offs, sync); @@ -702,7 +703,7 @@ kfree(dent); out_ro: ubifs_ro_mode(c, err); - if (last_reference) + if (orphan_added) ubifs_delete_orphan(c, inode->i_ino); finish_reservation(c); return err; @@ -893,6 +894,7 @@ if (err == -ENOENT) break; + kfree(pxent); goto out_release; } @@ -905,6 +907,7 @@ ubifs_err(c, "dead directory entry '%s', error %d", xent->name, err); ubifs_ro_mode(c, err); + kfree(pxent); kfree(xent); goto out_release; } @@ -935,8 +938,6 @@ inode->i_ino); release_head(c, BASEHD); - ubifs_add_auth_dirt(c, lnum); - if (last_reference) { err = ubifs_tnc_remove_ino(c, inode->i_ino); if (err) @@ -946,6 +947,8 @@ } else { union ubifs_key key; + ubifs_add_auth_dirt(c, lnum); + ino_key_init(c, &key, inode->i_ino); err = ubifs_tnc_add(c, &key, lnum, offs, ilen, hash); } @@ -1218,7 +1221,7 @@ void *p; union ubifs_key key; struct ubifs_dent_node *dent, *dent2; - int err, dlen1, dlen2, ilen, lnum, offs, len; + int err, dlen1, dlen2, ilen, lnum, offs, len, orphan_added = 0; int aligned_dlen1, aligned_dlen2, plen = UBIFS_INO_NODE_SZ; int last_reference = !!(new_inode && new_inode->i_nlink == 0); int move = (old_dir != new_dir); @@ -1334,6 +1337,7 @@ goto out_finish; } new_ui->del_cmtno = c->cmt_no; + orphan_added = 1; } err = write_head(c, BASEHD, dent, len, &lnum, &offs, sync); @@ -1415,7 +1419,7 @@ release_head(c, BASEHD); out_ro: ubifs_ro_mode(c, err); - if (last_reference) + if (orphan_added) ubifs_delete_orphan(c, new_inode->i_ino); out_finish: finish_reservation(c); --- linux-5.8.0.orig/fs/ubifs/orphan.c +++ linux-5.8.0/fs/ubifs/orphan.c @@ -173,6 +173,7 @@ err = PTR_ERR(xent); if (err == -ENOENT) break; + kfree(pxent); return err; } @@ -182,6 +183,7 @@ xattr_orphan = orphan_add(c, xattr_inum, orphan); if (IS_ERR(xattr_orphan)) { + kfree(pxent); kfree(xent); return PTR_ERR(xattr_orphan); } --- linux-5.8.0.orig/fs/ubifs/replay.c +++ linux-5.8.0/fs/ubifs/replay.c @@ -559,7 +559,9 @@ } /* authenticate_sleb_hash is split out for stack usage */ -static int authenticate_sleb_hash(struct ubifs_info *c, struct shash_desc *log_hash, u8 *hash) +static int noinline_for_stack +authenticate_sleb_hash(struct ubifs_info *c, + struct shash_desc *log_hash, u8 *hash) { SHASH_DESC_ON_STACK(hash_desc, c->hash_tfm); --- linux-5.8.0.orig/fs/ubifs/super.c +++ linux-5.8.0/fs/ubifs/super.c @@ -820,8 +820,10 @@ c->jheads[i].wbuf.jhead = i; c->jheads[i].grouped = 1; c->jheads[i].log_hash = ubifs_hash_get_desc(c); - if (IS_ERR(c->jheads[i].log_hash)) + if (IS_ERR(c->jheads[i].log_hash)) { + err = PTR_ERR(c->jheads[i].log_hash); goto out; + } } /* @@ -1092,14 +1094,20 @@ break; } case Opt_auth_key: - c->auth_key_name = kstrdup(args[0].from, GFP_KERNEL); - if (!c->auth_key_name) - return -ENOMEM; + if (!is_remount) { + c->auth_key_name = kstrdup(args[0].from, + GFP_KERNEL); + if (!c->auth_key_name) + return -ENOMEM; + } break; case Opt_auth_hash_name: - c->auth_hash_name = kstrdup(args[0].from, GFP_KERNEL); - if (!c->auth_hash_name) - return -ENOMEM; + if (!is_remount) { + c->auth_hash_name = kstrdup(args[0].from, + GFP_KERNEL); + if (!c->auth_hash_name) + return -ENOMEM; + } break; case Opt_ignore: break; @@ -1123,6 +1131,18 @@ return 0; } +/* + * ubifs_release_options - release mount parameters which have been dumped. + * @c: UBIFS file-system description object + */ +static void ubifs_release_options(struct ubifs_info *c) +{ + kfree(c->auth_key_name); + c->auth_key_name = NULL; + kfree(c->auth_hash_name); + c->auth_hash_name = NULL; +} + /** * destroy_journal - destroy journal data structures. * @c: UBIFS file-system description object @@ -1295,7 +1315,7 @@ err = ubifs_read_superblock(c); if (err) - goto out_free; + goto out_auth; c->probing = 0; @@ -1307,18 +1327,18 @@ ubifs_err(c, "'compressor \"%s\" is not compiled in", ubifs_compr_name(c, c->default_compr)); err = -ENOTSUPP; - goto out_free; + goto out_auth; } err = init_constants_sb(c); if (err) - goto out_free; + goto out_auth; sz = ALIGN(c->max_idx_node_sz, c->min_io_size) * 2; c->cbuf = kmalloc(sz, GFP_NOFS); if (!c->cbuf) { err = -ENOMEM; - goto out_free; + goto out_auth; } err = alloc_wbufs(c); @@ -1593,6 +1613,8 @@ free_wbufs(c); out_cbuf: kfree(c->cbuf); +out_auth: + ubifs_exit_authentication(c); out_free: kfree(c->write_reserve_buf); kfree(c->bu.buf); @@ -1632,8 +1654,7 @@ ubifs_lpt_free(c, 0); ubifs_exit_authentication(c); - kfree(c->auth_key_name); - kfree(c->auth_hash_name); + ubifs_release_options(c); kfree(c->cbuf); kfree(c->rcvrd_mst_node); kfree(c->mst_node); @@ -2201,6 +2222,7 @@ out_unlock: mutex_unlock(&c->umount_mutex); out_close: + ubifs_release_options(c); ubi_close_volume(c->ubi); out: return err; --- linux-5.8.0.orig/fs/ubifs/tnc.c +++ linux-5.8.0/fs/ubifs/tnc.c @@ -2885,6 +2885,7 @@ err = PTR_ERR(xent); if (err == -ENOENT) break; + kfree(pxent); return err; } @@ -2898,6 +2899,7 @@ fname_len(&nm) = le16_to_cpu(xent->nlen); err = ubifs_tnc_remove_nm(c, &key1, &nm); if (err) { + kfree(pxent); kfree(xent); return err; } @@ -2906,6 +2908,7 @@ highest_ino_key(c, &key2, xattr_inum); err = ubifs_tnc_remove_range(c, &key1, &key2); if (err) { + kfree(pxent); kfree(xent); return err; } --- linux-5.8.0.orig/fs/ubifs/xattr.c +++ linux-5.8.0/fs/ubifs/xattr.c @@ -522,6 +522,7 @@ xent->name, err); ubifs_ro_mode(c, err); kfree(pxent); + kfree(xent); return err; } @@ -531,6 +532,7 @@ err = remove_xattr(c, host, xino, &nm); if (err) { kfree(pxent); + kfree(xent); iput(xino); ubifs_err(c, "cannot remove xattr, error %d", err); return err; --- linux-5.8.0.orig/fs/udf/inode.c +++ linux-5.8.0/fs/udf/inode.c @@ -139,21 +139,24 @@ struct udf_inode_info *iinfo = UDF_I(inode); int want_delete = 0; - if (!inode->i_nlink && !is_bad_inode(inode)) { - want_delete = 1; - udf_setsize(inode, 0); - udf_update_inode(inode, IS_SYNC(inode)); + if (!is_bad_inode(inode)) { + if (!inode->i_nlink) { + want_delete = 1; + udf_setsize(inode, 0); + udf_update_inode(inode, IS_SYNC(inode)); + } + if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB && + inode->i_size != iinfo->i_lenExtents) { + udf_warn(inode->i_sb, + "Inode %lu (mode %o) has inode size %llu different from extent length %llu. Filesystem need not be standards compliant.\n", + inode->i_ino, inode->i_mode, + (unsigned long long)inode->i_size, + (unsigned long long)iinfo->i_lenExtents); + } } truncate_inode_pages_final(&inode->i_data); invalidate_inode_buffers(inode); clear_inode(inode); - if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB && - inode->i_size != iinfo->i_lenExtents) { - udf_warn(inode->i_sb, "Inode %lu (mode %o) has inode size %llu different from extent length %llu. Filesystem need not be standards compliant.\n", - inode->i_ino, inode->i_mode, - (unsigned long long)inode->i_size, - (unsigned long long)iinfo->i_lenExtents); - } kfree(iinfo->i_ext.i_data); iinfo->i_ext.i_data = NULL; udf_clear_extent_cache(inode); @@ -543,11 +546,14 @@ udf_write_aext(inode, last_pos, &last_ext->extLocation, last_ext->extLength, 1); + /* - * We've rewritten the last extent but there may be empty - * indirect extent after it - enter it. + * We've rewritten the last extent. If we are going to add + * more extents, we may need to enter possible following + * empty indirect extent. */ - udf_next_aext(inode, last_pos, &tmploc, &tmplen, 0); + if (new_block_bytes || prealloc_len) + udf_next_aext(inode, last_pos, &tmploc, &tmplen, 0); } /* Managed to do everything necessary? */ --- linux-5.8.0.orig/fs/udf/super.c +++ linux-5.8.0/fs/udf/super.c @@ -705,6 +705,7 @@ struct buffer_head *bh = NULL; int nsr = 0; struct udf_sb_info *sbi; + loff_t session_offset; sbi = UDF_SB(sb); if (sb->s_blocksize < sizeof(struct volStructDesc)) @@ -712,7 +713,8 @@ else sectorsize = sb->s_blocksize; - sector += (((loff_t)sbi->s_session) << sb->s_blocksize_bits); + session_offset = (loff_t)sbi->s_session << sb->s_blocksize_bits; + sector += session_offset; udf_debug("Starting at sector %u (%lu byte sectors)\n", (unsigned int)(sector >> sb->s_blocksize_bits), @@ -757,8 +759,7 @@ if (nsr > 0) return 1; - else if (!bh && sector - (sbi->s_session << sb->s_blocksize_bits) == - VSD_FIRST_SECTOR_OFFSET) + else if (!bh && sector - session_offset == VSD_FIRST_SECTOR_OFFSET) return -1; else return 0; @@ -1353,6 +1354,12 @@ (int)spm->numSparingTables); return -EIO; } + if (le32_to_cpu(spm->sizeSparingTable) > sb->s_blocksize) { + udf_err(sb, "error loading logical volume descriptor: " + "Too big sparing table size (%u)\n", + le32_to_cpu(spm->sizeSparingTable)); + return -EIO; + } for (i = 0; i < spm->numSparingTables; i++) { loc = le32_to_cpu(spm->locSparingTable[i]); @@ -1698,7 +1705,8 @@ "Pointers (max %u supported)\n", UDF_MAX_TD_NESTING); brelse(bh); - return -EIO; + ret = -EIO; + goto out; } vdp = (struct volDescPtr *)bh->b_data; @@ -1718,7 +1726,8 @@ curr = get_volume_descriptor_record(ident, bh, &data); if (IS_ERR(curr)) { brelse(bh); - return PTR_ERR(curr); + ret = PTR_ERR(curr); + goto out; } /* Descriptor we don't care about? */ if (!curr) @@ -1740,28 +1749,31 @@ */ if (!data.vds[VDS_POS_PRIMARY_VOL_DESC].block) { udf_err(sb, "Primary Volume Descriptor not found!\n"); - return -EAGAIN; + ret = -EAGAIN; + goto out; } ret = udf_load_pvoldesc(sb, data.vds[VDS_POS_PRIMARY_VOL_DESC].block); if (ret < 0) - return ret; + goto out; if (data.vds[VDS_POS_LOGICAL_VOL_DESC].block) { ret = udf_load_logicalvol(sb, data.vds[VDS_POS_LOGICAL_VOL_DESC].block, fileset); if (ret < 0) - return ret; + goto out; } /* Now handle prevailing Partition Descriptors */ for (i = 0; i < data.num_part_descs; i++) { ret = udf_load_partdesc(sb, data.part_descs_loc[i].rec.block); if (ret < 0) - return ret; + goto out; } - - return 0; + ret = 0; +out: + kfree(data.part_descs_loc); + return ret; } /* --- linux-5.8.0.orig/fs/ufs/super.c +++ linux-5.8.0/fs/ufs/super.c @@ -101,7 +101,7 @@ struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi; struct inode *inode; - if (ino < UFS_ROOTINO || ino > uspi->s_ncg * uspi->s_ipg) + if (ino < UFS_ROOTINO || ino > (u64)uspi->s_ncg * uspi->s_ipg) return ERR_PTR(-ESTALE); inode = ufs_iget(sb, ino); --- linux-5.8.0.orig/fs/vboxsf/super.c +++ linux-5.8.0/fs/vboxsf/super.c @@ -384,7 +384,7 @@ static int vboxsf_parse_monolithic(struct fs_context *fc, void *data) { - char *options = data; + unsigned char *options = data; if (options && options[0] == VBSF_MOUNT_SIGNATURE_BYTE_0 && options[1] == VBSF_MOUNT_SIGNATURE_BYTE_1 && --- linux-5.8.0.orig/fs/xattr.c +++ linux-5.8.0/fs/xattr.c @@ -203,11 +203,24 @@ return error; } +EXPORT_SYMBOL_GPL(__vfs_setxattr_noperm); - +/** + * __vfs_setxattr_locked: set an extended attribute while holding the inode + * lock + * + * @dentry - object to perform setxattr on + * @name - xattr name to set + * @value - value to set @name to + * @size - size of @value + * @flags - flags to pass into filesystem operations + * @delegated_inode - on return, will contain an inode pointer that + * a delegation was broken on, NULL if none. + */ int -vfs_setxattr(struct dentry *dentry, const char *name, const void *value, - size_t size, int flags) +__vfs_setxattr_locked(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags, + struct inode **delegated_inode) { struct inode *inode = dentry->d_inode; int error; @@ -216,15 +229,51 @@ if (error) return error; - inode_lock(inode); error = security_inode_setxattr(dentry, name, value, size, flags); if (error) goto out; + error = try_break_deleg(inode, delegated_inode); + if (error) + goto out; + error = __vfs_setxattr_noperm(dentry, name, value, size, flags); out: + return error; +} +EXPORT_SYMBOL_GPL(__vfs_setxattr_locked); + +int +vfs_setxattr(struct dentry *dentry, const char *name, const void *value, + size_t size, int flags) +{ + struct inode *inode = dentry->d_inode; + struct inode *delegated_inode = NULL; + const void *orig_value = value; + int error; + + if (size && strcmp(name, XATTR_NAME_CAPS) == 0) { + error = cap_convert_nscap(dentry, &value, size); + if (error < 0) + return error; + size = error; + } + +retry_deleg: + inode_lock(inode); + error = __vfs_setxattr_locked(dentry, name, value, size, flags, + &delegated_inode); inode_unlock(inode); + + if (delegated_inode) { + error = break_deleg_wait(&delegated_inode); + if (!error) + goto retry_deleg; + } + if (value != orig_value) + kfree(value); + return error; } EXPORT_SYMBOL_GPL(vfs_setxattr); @@ -296,6 +345,7 @@ *xattr_value = value; return error; } +EXPORT_SYMBOL_GPL(vfs_getxattr_alloc); ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, @@ -378,8 +428,45 @@ } EXPORT_SYMBOL(__vfs_removexattr); +/** + * __vfs_removexattr_noperm - perform removexattr operation without + * performing permission checks. + * + * @dentry - object to perform setxattr on + * @name - xattr name to set + * + * returns the result of the internal setxattr or setsecurity operations. + * + * This function requires the caller to lock the inode's i_mutex before it + * is executed. It also assumes that the caller will make the appropriate + * permission checks. + */ int -vfs_removexattr(struct dentry *dentry, const char *name) +__vfs_removexattr_noperm(struct dentry *dentry, const char *name) +{ + int error; + + error =__vfs_removexattr(dentry, name); + if (!error) { + fsnotify_xattr(dentry); + evm_inode_post_removexattr(dentry, name); + } + return error; +} +EXPORT_SYMBOL_GPL(__vfs_removexattr_noperm); + +/** + * __vfs_removexattr_locked: set an extended attribute while holding the inode + * lock + * + * @dentry - object to perform setxattr on + * @name - name of xattr to remove + * @delegated_inode - on return, will contain an inode pointer that + * a delegation was broken on, NULL if none. + */ +int +__vfs_removexattr_locked(struct dentry *dentry, const char *name, + struct inode **delegated_inode) { struct inode *inode = dentry->d_inode; int error; @@ -388,25 +475,43 @@ if (error) return error; - inode_lock(inode); error = security_inode_removexattr(dentry, name); if (error) goto out; - error = __vfs_removexattr(dentry, name); + error = try_break_deleg(inode, delegated_inode); + if (error) + return error; - if (!error) { - fsnotify_xattr(dentry); - evm_inode_post_removexattr(dentry, name); - } + error = __vfs_removexattr_noperm(dentry, name); out: + return error; +} +EXPORT_SYMBOL_GPL(__vfs_removexattr_locked); + +int +vfs_removexattr(struct dentry *dentry, const char *name) +{ + struct inode *inode = dentry->d_inode; + struct inode *delegated_inode = NULL; + int error; + +retry_deleg: + inode_lock(inode); + error = __vfs_removexattr_locked(dentry, name, &delegated_inode); inode_unlock(inode); + + if (delegated_inode) { + error = break_deleg_wait(&delegated_inode); + if (!error) + goto retry_deleg; + } + return error; } EXPORT_SYMBOL_GPL(vfs_removexattr); - /* * Extended attribute SET operations */ @@ -440,12 +545,6 @@ if ((strcmp(kname, XATTR_NAME_POSIX_ACL_ACCESS) == 0) || (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0)) posix_acl_fix_xattr_from_user(kvalue, size); - else if (strcmp(kname, XATTR_NAME_CAPS) == 0) { - error = cap_convert_nscap(d, &kvalue, size); - if (error < 0) - goto out; - size = error; - } } error = vfs_setxattr(d, kname, kvalue, size, flags); --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_alloc.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_alloc.c @@ -2471,6 +2471,7 @@ new->xefi_startblock = XFS_AGB_TO_FSB(mp, agno, agbno); new->xefi_blockcount = 1; new->xefi_oinfo = *oinfo; + new->xefi_skip_discard = false; trace_xfs_agfl_free_defer(mp, agno, 0, agbno, 1); --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_attr_leaf.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_attr_leaf.c @@ -515,7 +515,7 @@ *========================================================================*/ /* - * Query whether the requested number of additional bytes of extended + * Query whether the total requested number of attr fork bytes of extended * attribute space will be able to fit inline. * * Returns zero if not, else the di_forkoff fork offset to be used in the @@ -535,6 +535,12 @@ int maxforkoff; int offset; + /* + * Check if the new size could fit at all first: + */ + if (bytes > XFS_LITINO(mp)) + return 0; + /* rounded down */ offset = (XFS_LITINO(mp) - bytes) >> 3; @@ -653,8 +659,8 @@ ASSERT(ifp->if_flags & XFS_IFINLINE); } xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK); - hdr = (xfs_attr_sf_hdr_t *)ifp->if_u1.if_data; - hdr->count = 0; + hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; + memset(hdr, 0, sizeof(*hdr)); hdr->totsize = cpu_to_be16(sizeof(*hdr)); xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); } @@ -996,8 +1002,10 @@ * struct xfs_attr_sf_entry has a variable length. * Check the fixed-offset parts of the structure are * within the data buffer. + * xfs_attr_sf_entry is defined with a 1-byte variable + * array at the end, so we must subtract that off. */ - if (((char *)sfep + sizeof(*sfep)) >= endp) + if (((char *)sfep + sizeof(*sfep) - 1) >= endp) return __this_address; /* Don't allow names with known bad length. */ --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_bmap.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_bmap.c @@ -5042,20 +5042,25 @@ flags = XFS_ILOG_CORE; if (whichfork == XFS_DATA_FORK && XFS_IS_REALTIME_INODE(ip)) { - xfs_fsblock_t bno; xfs_filblks_t len; xfs_extlen_t mod; - bno = div_u64_rem(del->br_startblock, mp->m_sb.sb_rextsize, - &mod); - ASSERT(mod == 0); len = div_u64_rem(del->br_blockcount, mp->m_sb.sb_rextsize, &mod); ASSERT(mod == 0); - error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); - if (error) - goto done; + if (!(bflags & XFS_BMAPI_REMAP)) { + xfs_fsblock_t bno; + + bno = div_u64_rem(del->br_startblock, + mp->m_sb.sb_rextsize, &mod); + ASSERT(mod == 0); + + error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); + if (error) + goto done; + } + do_fx = 0; nblks = len * mp->m_sb.sb_rextsize; qfield = XFS_TRANS_DQ_RTBCOUNT; @@ -6222,7 +6227,7 @@ isrt = XFS_IS_REALTIME_INODE(ip); endfsb = irec->br_startblock + irec->br_blockcount - 1; - if (isrt) { + if (isrt && whichfork == XFS_DATA_FORK) { if (!xfs_verify_rtbno(mp, irec->br_startblock)) return __this_address; if (!xfs_verify_rtbno(mp, endfsb)) --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_bmap.h +++ linux-5.8.0/fs/xfs/libxfs/xfs_bmap.h @@ -52,9 +52,9 @@ { xfs_fsblock_t xefi_startblock;/* starting fs block number */ xfs_extlen_t xefi_blockcount;/* number of blocks in extent */ + bool xefi_skip_discard; struct list_head xefi_list; struct xfs_owner_info xefi_oinfo; /* extent owner */ - bool xefi_skip_discard; }; #define XFS_BMAP_MAX_NMAP 4 --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_defer.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_defer.c @@ -186,8 +186,9 @@ { const struct xfs_defer_op_type *ops = defer_op_types[dfp->dfp_type]; - dfp->dfp_intent = ops->create_intent(tp, &dfp->dfp_work, - dfp->dfp_count, sort); + if (!dfp->dfp_intent) + dfp->dfp_intent = ops->create_intent(tp, &dfp->dfp_work, + dfp->dfp_count, sort); } /* @@ -390,6 +391,7 @@ list_add(li, &dfp->dfp_work); dfp->dfp_count++; dfp->dfp_done = NULL; + dfp->dfp_intent = NULL; xfs_defer_create_intent(tp, dfp, false); } @@ -428,8 +430,17 @@ /* Until we run out of pending work to finish... */ while (!list_empty(&dop_pending) || !list_empty(&(*tp)->t_dfops)) { + /* + * Deferred items that are created in the process of finishing + * other deferred work items should be queued at the head of + * the pending list, which puts them ahead of the deferred work + * that was created by the caller. This keeps the number of + * pending work items to a minimum, which decreases the amount + * of time that any one intent item can stick around in memory, + * pinning the log tail. + */ xfs_defer_create_intents(*tp); - list_splice_tail_init(&(*tp)->t_dfops, &dop_pending); + list_splice_init(&(*tp)->t_dfops, &dop_pending); error = xfs_defer_trans_roll(tp); if (error) @@ -552,3 +563,23 @@ xfs_defer_reset(stp); } + +/* + * Prepare a chain of fresh deferred ops work items to be completed later. Log + * recovery requires the ability to put off until later the actual finishing + * work so that it can process unfinished items recovered from the log in + * correct order. + * + * Create and log intent items for all the work that we're capturing so that we + * can be assured that the items will get replayed if the system goes down + * before log recovery gets a chance to finish the work it put off. Then we + * move the chain from stp to dtp. + */ +void +xfs_defer_capture( + struct xfs_trans *dtp, + struct xfs_trans *stp) +{ + xfs_defer_create_intents(stp); + xfs_defer_move(dtp, stp); +} --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_defer.h +++ linux-5.8.0/fs/xfs/libxfs/xfs_defer.h @@ -63,4 +63,10 @@ extern const struct xfs_defer_op_type xfs_extent_free_defer_type; extern const struct xfs_defer_op_type xfs_agfl_free_defer_type; +/* + * Functions to capture a chain of deferred operations and continue them later. + * This doesn't normally happen except log recovery. + */ +void xfs_defer_capture(struct xfs_trans *dtp, struct xfs_trans *stp); + #endif /* __XFS_DEFER_H__ */ --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_ialloc.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_ialloc.c @@ -688,7 +688,7 @@ args.minalignslop = igeo->cluster_align - 1; /* Allow space for the inode btree to split. */ - args.minleft = igeo->inobt_maxlevels - 1; + args.minleft = igeo->inobt_maxlevels; if ((error = xfs_alloc_vextent(&args))) return error; @@ -736,7 +736,7 @@ /* * Allow space for the inode btree to split. */ - args.minleft = igeo->inobt_maxlevels - 1; + args.minleft = igeo->inobt_maxlevels; if ((error = xfs_alloc_vextent(&args))) return error; } --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_rmap.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_rmap.c @@ -1514,7 +1514,7 @@ * record for our insertion point. This will also give us the record for * start block contiguity tests. */ - error = xfs_rmap_lookup_le_range(cur, bno, owner, offset, flags, + error = xfs_rmap_lookup_le_range(cur, bno, owner, offset, oldext, &PREV, &i); if (error) goto done; --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_rtbitmap.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_rtbitmap.c @@ -1018,7 +1018,6 @@ struct xfs_mount *mp = tp->t_mountp; xfs_rtblock_t rtstart; xfs_rtblock_t rtend; - xfs_rtblock_t rem; int is_free; int error = 0; @@ -1027,13 +1026,12 @@ if (low_rec->ar_startext >= mp->m_sb.sb_rextents || low_rec->ar_startext == high_rec->ar_startext) return 0; - if (high_rec->ar_startext > mp->m_sb.sb_rextents) - high_rec->ar_startext = mp->m_sb.sb_rextents; + high_rec->ar_startext = min(high_rec->ar_startext, + mp->m_sb.sb_rextents - 1); /* Iterate the bitmap, looking for discrepancies. */ rtstart = low_rec->ar_startext; - rem = high_rec->ar_startext - rtstart; - while (rem) { + while (rtstart <= high_rec->ar_startext) { /* Is the first block free? */ error = xfs_rtcheck_range(mp, tp, rtstart, 1, 1, &rtend, &is_free); @@ -1042,7 +1040,7 @@ /* How long does the extent go for? */ error = xfs_rtfind_forw(mp, tp, rtstart, - high_rec->ar_startext - 1, &rtend); + high_rec->ar_startext, &rtend); if (error) break; @@ -1055,7 +1053,6 @@ break; } - rem -= rtend - rtstart + 1; rtstart = rtend + 1; } --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_shared.h +++ linux-5.8.0/fs/xfs/libxfs/xfs_shared.h @@ -65,6 +65,7 @@ #define XFS_TRANS_DQ_DIRTY 0x10 /* at least one dquot in trx dirty */ #define XFS_TRANS_RESERVE 0x20 /* OK to use reserved data blocks */ #define XFS_TRANS_NO_WRITECOUNT 0x40 /* do not elevate SB writecount */ +#define XFS_TRANS_RES_FDBLKS 0x80 /* reserve newly freed blocks */ /* * LOWMODE is used by the allocator to activate the lowspace algorithm - when * free space is running low the extent allocator may choose to allocate an --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_trans_inode.c +++ linux-5.8.0/fs/xfs/libxfs/xfs_trans_inode.c @@ -36,6 +36,7 @@ ASSERT(iip->ili_lock_flags == 0); iip->ili_lock_flags = lock_flags; + ASSERT(!xfs_iflags_test(ip, XFS_ISTALE)); /* * Get a log_item_desc to point at the new item. @@ -89,6 +90,7 @@ ASSERT(ip->i_itemp != NULL); ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); + ASSERT(!xfs_iflags_test(ip, XFS_ISTALE)); /* * Don't bother with i_lock for the I_DIRTY_TIME check here, as races @@ -96,9 +98,9 @@ * to log the timestamps, or will clear already cleared fields in the * worst case. */ - if (inode->i_state & (I_DIRTY_TIME | I_DIRTY_TIME_EXPIRED)) { + if (inode->i_state & I_DIRTY_TIME) { spin_lock(&inode->i_lock); - inode->i_state &= ~(I_DIRTY_TIME | I_DIRTY_TIME_EXPIRED); + inode->i_state &= ~I_DIRTY_TIME; spin_unlock(&inode->i_lock); } --- linux-5.8.0.orig/fs/xfs/libxfs/xfs_trans_space.h +++ linux-5.8.0/fs/xfs/libxfs/xfs_trans_space.h @@ -57,8 +57,8 @@ XFS_DAREMOVE_SPACE_RES(mp, XFS_DATA_FORK) #define XFS_IALLOC_SPACE_RES(mp) \ (M_IGEO(mp)->ialloc_blks + \ - (xfs_sb_version_hasfinobt(&mp->m_sb) ? 2 : 1 * \ - (M_IGEO(mp)->inobt_maxlevels - 1))) + ((xfs_sb_version_hasfinobt(&mp->m_sb) ? 2 : 1) * \ + M_IGEO(mp)->inobt_maxlevels)) /* * Space reservation values for various transactions. --- linux-5.8.0.orig/fs/xfs/scrub/bmap.c +++ linux-5.8.0/fs/xfs/scrub/bmap.c @@ -45,9 +45,27 @@ */ if (S_ISREG(VFS_I(sc->ip)->i_mode) && sc->sm->sm_type == XFS_SCRUB_TYPE_BMBTD) { + struct address_space *mapping = VFS_I(sc->ip)->i_mapping; + inode_dio_wait(VFS_I(sc->ip)); - error = filemap_write_and_wait(VFS_I(sc->ip)->i_mapping); - if (error) + + /* + * Try to flush all incore state to disk before we examine the + * space mappings for the data fork. Leave accumulated errors + * in the mapping for the writer threads to consume. + * + * On ENOSPC or EIO writeback errors, we continue into the + * extent mapping checks because write failures do not + * necessarily imply anything about the correctness of the file + * metadata. The metadata and the file data could be on + * completely separate devices; a media failure might only + * affect a subset of the disk, etc. We can handle delalloc + * extents in the scrubber, so leaving them in memory is fine. + */ + error = filemap_fdatawrite(mapping); + if (!error) + error = filemap_fdatawait_keep_errors(mapping); + if (error && (error != -ENOSPC && error != -EIO)) goto out; } @@ -95,6 +113,8 @@ if (info->whichfork == XFS_ATTR_FORK) rflags |= XFS_RMAP_ATTR_FORK; + if (irec->br_state == XFS_EXT_UNWRITTEN) + rflags |= XFS_RMAP_UNWRITTEN; /* * CoW staging extents are owned (on disk) by the refcountbt, so @@ -198,13 +218,13 @@ * which doesn't track unwritten state. */ if (owner != XFS_RMAP_OWN_COW && - irec->br_state == XFS_EXT_UNWRITTEN && - !(rmap.rm_flags & XFS_RMAP_UNWRITTEN)) + !!(irec->br_state == XFS_EXT_UNWRITTEN) != + !!(rmap.rm_flags & XFS_RMAP_UNWRITTEN)) xchk_fblock_xref_set_corrupt(info->sc, info->whichfork, irec->br_startoff); - if (info->whichfork == XFS_ATTR_FORK && - !(rmap.rm_flags & XFS_RMAP_ATTR_FORK)) + if (!!(info->whichfork == XFS_ATTR_FORK) != + !!(rmap.rm_flags & XFS_RMAP_ATTR_FORK)) xchk_fblock_xref_set_corrupt(info->sc, info->whichfork, irec->br_startoff); if (rmap.rm_flags & XFS_RMAP_BMBT_BLOCK) --- linux-5.8.0.orig/fs/xfs/scrub/btree.c +++ linux-5.8.0/fs/xfs/scrub/btree.c @@ -452,32 +452,41 @@ int level, struct xfs_btree_block *block) { - unsigned int numrecs; - int ok_level; - - numrecs = be16_to_cpu(block->bb_numrecs); + struct xfs_btree_cur *cur = bs->cur; + unsigned int root_level = cur->bc_nlevels - 1; + unsigned int numrecs = be16_to_cpu(block->bb_numrecs); /* More records than minrecs means the block is ok. */ - if (numrecs >= bs->cur->bc_ops->get_minrecs(bs->cur, level)) + if (numrecs >= cur->bc_ops->get_minrecs(cur, level)) return; /* - * Certain btree blocks /can/ have fewer than minrecs records. Any - * level greater than or equal to the level of the highest dedicated - * btree block are allowed to violate this constraint. - * - * For a btree rooted in a block, the btree root can have fewer than - * minrecs records. If the btree is rooted in an inode and does not - * store records in the root, the direct children of the root and the - * root itself can have fewer than minrecs records. + * For btrees rooted in the inode, it's possible that the root block + * contents spilled into a regular ondisk block because there wasn't + * enough space in the inode root. The number of records in that + * child block might be less than the standard minrecs, but that's ok + * provided that there's only one direct child of the root. */ - ok_level = bs->cur->bc_nlevels - 1; - if (bs->cur->bc_flags & XFS_BTREE_ROOT_IN_INODE) - ok_level--; - if (level >= ok_level) + if ((cur->bc_flags & XFS_BTREE_ROOT_IN_INODE) && + level == cur->bc_nlevels - 2) { + struct xfs_btree_block *root_block; + struct xfs_buf *root_bp; + int root_maxrecs; + + root_block = xfs_btree_get_block(cur, root_level, &root_bp); + root_maxrecs = cur->bc_ops->get_dmaxrecs(cur, root_level); + if (be16_to_cpu(root_block->bb_numrecs) != 1 || + numrecs <= root_maxrecs) + xchk_btree_set_corrupt(bs->sc, cur, level); return; + } - xchk_btree_set_corrupt(bs->sc, bs->cur, level); + /* + * Otherwise, only the root level is allowed to have fewer than minrecs + * records or keyptrs. + */ + if (level < root_level) + xchk_btree_set_corrupt(bs->sc, cur, level); } /* --- linux-5.8.0.orig/fs/xfs/scrub/dir.c +++ linux-5.8.0/fs/xfs/scrub/dir.c @@ -558,14 +558,27 @@ /* Check all the bestfree entries. */ for (i = 0; i < bestcount; i++, bestp++) { best = be16_to_cpu(*bestp); - if (best == NULLDATAOFF) - continue; error = xfs_dir3_data_read(sc->tp, sc->ip, - i * args->geo->fsbcount, 0, &dbp); + xfs_dir2_db_to_da(args->geo, i), + XFS_DABUF_MAP_HOLE_OK, + &dbp); if (!xchk_fblock_process_error(sc, XFS_DATA_FORK, lblk, &error)) break; - xchk_directory_check_freesp(sc, lblk, dbp, best); + + if (!dbp) { + if (best != NULLDATAOFF) { + xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, + lblk); + break; + } + continue; + } + + if (best == NULLDATAOFF) + xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, lblk); + else + xchk_directory_check_freesp(sc, lblk, dbp, best); xfs_trans_brelse(sc->tp, dbp); if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) break; --- linux-5.8.0.orig/fs/xfs/scrub/inode.c +++ linux-5.8.0/fs/xfs/scrub/inode.c @@ -121,8 +121,7 @@ goto bad; /* rt flags require rt device */ - if ((flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT)) && - !mp->m_rtdev_targp) + if ((flags & XFS_DIFLAG_REALTIME) && !mp->m_rtdev_targp) goto bad; /* new rt bitmap flag only valid for rbmino */ --- linux-5.8.0.orig/fs/xfs/scrub/refcount.c +++ linux-5.8.0/fs/xfs/scrub/refcount.c @@ -170,7 +170,6 @@ */ INIT_LIST_HEAD(&worklist); rbno = NULLAGBLOCK; - nr = 1; /* Make sure the fragments actually /are/ in agbno order. */ bno = 0; @@ -184,15 +183,14 @@ * Find all the rmaps that start at or before the refc extent, * and put them on the worklist. */ + nr = 0; list_for_each_entry_safe(frag, n, &refchk->fragments, list) { - if (frag->rm.rm_startblock > refchk->bno) - goto done; + if (frag->rm.rm_startblock > refchk->bno || nr > target_nr) + break; bno = frag->rm.rm_startblock + frag->rm.rm_blockcount; if (bno < rbno) rbno = bno; list_move_tail(&frag->list, &worklist); - if (nr == target_nr) - break; nr++; } --- linux-5.8.0.orig/fs/xfs/xfs_aops.c +++ linux-5.8.0/fs/xfs/xfs_aops.c @@ -346,8 +346,8 @@ ssize_t count = i_blocksize(inode); xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); xfs_fileoff_t end_fsb = XFS_B_TO_FSB(mp, offset + count); - xfs_fileoff_t cow_fsb = NULLFILEOFF; - int whichfork = XFS_DATA_FORK; + xfs_fileoff_t cow_fsb; + int whichfork; struct xfs_bmbt_irec imap; struct xfs_iext_cursor icur; int retries = 0; @@ -381,6 +381,8 @@ * landed in a hole and we skip the block. */ retry: + cow_fsb = NULLFILEOFF; + whichfork = XFS_DATA_FORK; xfs_ilock(ip, XFS_ILOCK_SHARED); ASSERT(ip->i_df.if_format != XFS_DINODE_FMT_BTREE || (ip->i_df.if_flags & XFS_IFEXTENTS)); --- linux-5.8.0.orig/fs/xfs/xfs_bmap_item.c +++ linux-5.8.0/fs/xfs/xfs_bmap_item.c @@ -534,7 +534,7 @@ xfs_bmap_unmap_extent(tp, ip, &irec); } - xfs_defer_move(parent_tp, tp); + xfs_defer_capture(parent_tp, tp); error = xfs_trans_commit(tp); xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_irele(ip); --- linux-5.8.0.orig/fs/xfs/xfs_bmap_util.c +++ linux-5.8.0/fs/xfs/xfs_bmap_util.c @@ -1165,7 +1165,7 @@ goto out_trans_cancel; do { - error = xfs_trans_roll_inode(&tp, ip); + error = xfs_defer_finish(&tp); if (error) goto out_trans_cancel; @@ -1567,6 +1567,7 @@ int lock_flags; uint64_t f; int resblks = 0; + unsigned int flags = 0; /* * Lock the inodes against other IO, page faults and truncate to @@ -1630,17 +1631,16 @@ resblks += XFS_SWAP_RMAP_SPACE_RES(mp, tipnext, w); /* - * Handle the corner case where either inode might straddle the - * btree format boundary. If so, the inode could bounce between - * btree <-> extent format on unmap -> remap cycles, freeing and - * allocating a bmapbt block each time. + * If either inode straddles a bmapbt block allocation boundary, + * the rmapbt algorithm triggers repeated allocs and frees as + * extents are remapped. This can exhaust the block reservation + * prematurely and cause shutdown. Return freed blocks to the + * transaction reservation to counter this behavior. */ - if (ipnext == (XFS_IFORK_MAXEXT(ip, w) + 1)) - resblks += XFS_IFORK_MAXEXT(ip, w); - if (tipnext == (XFS_IFORK_MAXEXT(tip, w) + 1)) - resblks += XFS_IFORK_MAXEXT(tip, w); + flags |= XFS_TRANS_RES_FDBLKS; } - error = xfs_trans_alloc(mp, &M_RES(mp)->tr_write, resblks, 0, 0, &tp); + error = xfs_trans_alloc(mp, &M_RES(mp)->tr_write, resblks, 0, flags, + &tp); if (error) goto out_unlock; --- linux-5.8.0.orig/fs/xfs/xfs_buf_item_recover.c +++ linux-5.8.0/fs/xfs/xfs_buf_item_recover.c @@ -721,6 +721,8 @@ case XFS_ABTC_MAGIC: case XFS_RMAP_CRC_MAGIC: case XFS_REFC_CRC_MAGIC: + case XFS_FIBT_CRC_MAGIC: + case XFS_FIBT_MAGIC: case XFS_IBT_CRC_MAGIC: case XFS_IBT_MAGIC: { struct xfs_btree_block *btb = blk; --- linux-5.8.0.orig/fs/xfs/xfs_file.c +++ linux-5.8.0/fs/xfs/xfs_file.c @@ -1005,6 +1005,21 @@ return ret; } +/* Does this file, inode, or mount want synchronous writes? */ +static inline bool xfs_file_sync_writes(struct file *filp) +{ + struct xfs_inode *ip = XFS_I(file_inode(filp)); + + if (ip->i_mount->m_flags & XFS_MOUNT_WSYNC) + return true; + if (filp->f_flags & (__O_SYNC | O_DSYNC)) + return true; + if (IS_SYNC(file_inode(filp))) + return true; + + return false; +} + STATIC loff_t xfs_file_remap_range( struct file *file_in, @@ -1062,7 +1077,7 @@ if (ret) goto out_unlock; - if (mp->m_flags & XFS_MOUNT_WSYNC) + if (xfs_file_sync_writes(file_in) || xfs_file_sync_writes(file_out)) xfs_log_force_inode(dest); out_unlock: xfs_reflink_remap_unlock(file_in, file_out); @@ -1220,6 +1235,14 @@ return ret; } +static inline bool +xfs_is_write_fault( + struct vm_fault *vmf) +{ + return (vmf->flags & FAULT_FLAG_WRITE) && + (vmf->vma->vm_flags & VM_SHARED); +} + static vm_fault_t xfs_filemap_fault( struct vm_fault *vmf) @@ -1227,7 +1250,7 @@ /* DAX can shortcut the normal fault path on write faults! */ return __xfs_filemap_fault(vmf, PE_SIZE_PTE, IS_DAX(file_inode(vmf->vma->vm_file)) && - (vmf->flags & FAULT_FLAG_WRITE)); + xfs_is_write_fault(vmf)); } static vm_fault_t @@ -1240,7 +1263,7 @@ /* DAX can shortcut the normal fault path on write faults! */ return __xfs_filemap_fault(vmf, pe_size, - (vmf->flags & FAULT_FLAG_WRITE)); + xfs_is_write_fault(vmf)); } static vm_fault_t --- linux-5.8.0.orig/fs/xfs/xfs_fsmap.c +++ linux-5.8.0/fs/xfs/xfs_fsmap.c @@ -26,7 +26,7 @@ #include "xfs_rtalloc.h" /* Convert an xfs_fsmap to an fsmap. */ -void +static void xfs_fsmap_from_internal( struct fsmap *dest, struct xfs_fsmap *src) @@ -155,8 +155,7 @@ /* getfsmap query state */ struct xfs_getfsmap_info { struct xfs_fsmap_head *head; - xfs_fsmap_format_t formatter; /* formatting fn */ - void *format_arg; /* format buffer */ + struct fsmap *fsmap_recs; /* mapping records */ struct xfs_buf *agf_bp; /* AGF, for refcount queries */ xfs_daddr_t next_daddr; /* next daddr we expect */ u64 missing_owner; /* owner of holes */ @@ -224,6 +223,20 @@ return 0; } +static inline void +xfs_getfsmap_format( + struct xfs_mount *mp, + struct xfs_fsmap *xfm, + struct xfs_getfsmap_info *info) +{ + struct fsmap *rec; + + trace_xfs_getfsmap_mapping(mp, xfm); + + rec = &info->fsmap_recs[info->head->fmh_entries++]; + xfs_fsmap_from_internal(rec, xfm); +} + /* * Format a reverse mapping for getfsmap, having translated rm_startblock * into the appropriate daddr units. @@ -256,6 +269,9 @@ /* Are we just counting mappings? */ if (info->head->fmh_count == 0) { + if (info->head->fmh_entries == UINT_MAX) + return -ECANCELED; + if (rec_daddr > info->next_daddr) info->head->fmh_entries++; @@ -285,10 +301,7 @@ fmr.fmr_offset = 0; fmr.fmr_length = rec_daddr - info->next_daddr; fmr.fmr_flags = FMR_OF_SPECIAL_OWNER; - error = info->formatter(&fmr, info->format_arg); - if (error) - return error; - info->head->fmh_entries++; + xfs_getfsmap_format(mp, &fmr, info); } if (info->last) @@ -320,11 +333,8 @@ if (shared) fmr.fmr_flags |= FMR_OF_SHARED; } - error = info->formatter(&fmr, info->format_arg); - if (error) - return error; - info->head->fmh_entries++; + xfs_getfsmap_format(mp, &fmr, info); out: rec_daddr += XFS_FSB_TO_BB(mp, rec->rm_blockcount); if (info->next_daddr < rec_daddr) @@ -792,11 +802,11 @@ #endif /* CONFIG_XFS_RT */ /* - * Get filesystem's extents as described in head, and format for - * output. Calls formatter to fill the user's buffer until all - * extents are mapped, until the passed-in head->fmh_count slots have - * been filled, or until the formatter short-circuits the loop, if it - * is tracking filled-in extents on its own. + * Get filesystem's extents as described in head, and format for output. Fills + * in the supplied records array until there are no more reverse mappings to + * return or head.fmh_entries == head.fmh_count. In the second case, this + * function returns -ECANCELED to indicate that more records would have been + * returned. * * Key to Confusion * ---------------- @@ -816,8 +826,7 @@ xfs_getfsmap( struct xfs_mount *mp, struct xfs_fsmap_head *head, - xfs_fsmap_format_t formatter, - void *arg) + struct fsmap *fsmap_recs) { struct xfs_trans *tp = NULL; struct xfs_fsmap dkeys[2]; /* per-dev keys */ @@ -892,8 +901,7 @@ info.next_daddr = head->fmh_keys[0].fmr_physical + head->fmh_keys[0].fmr_length; - info.formatter = formatter; - info.format_arg = arg; + info.fsmap_recs = fsmap_recs; info.head = head; /* --- linux-5.8.0.orig/fs/xfs/xfs_fsmap.h +++ linux-5.8.0/fs/xfs/xfs_fsmap.h @@ -27,13 +27,9 @@ struct xfs_fsmap fmh_keys[2]; /* low and high keys */ }; -void xfs_fsmap_from_internal(struct fsmap *dest, struct xfs_fsmap *src); void xfs_fsmap_to_internal(struct xfs_fsmap *dest, struct fsmap *src); -/* fsmap to userspace formatter - copy to user & advance pointer */ -typedef int (*xfs_fsmap_format_t)(struct xfs_fsmap *, void *); - int xfs_getfsmap(struct xfs_mount *mp, struct xfs_fsmap_head *head, - xfs_fsmap_format_t formatter, void *arg); + struct fsmap *out_recs); #endif /* __XFS_FSMAP_H__ */ --- linux-5.8.0.orig/fs/xfs/xfs_icache.c +++ linux-5.8.0/fs/xfs/xfs_icache.c @@ -1141,7 +1141,7 @@ goto out_ifunlock; xfs_iunpin_wait(ip); } - if (xfs_iflags_test(ip, XFS_ISTALE) || xfs_inode_clean(ip)) { + if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); goto reclaim; } @@ -1228,6 +1228,7 @@ xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_qm_dqdetach(ip); xfs_iunlock(ip, XFS_ILOCK_EXCL); + ASSERT(xfs_inode_clean(ip)); __xfs_inode_free(ip); return error; --- linux-5.8.0.orig/fs/xfs/xfs_inode.c +++ linux-5.8.0/fs/xfs/xfs_inode.c @@ -1740,10 +1740,31 @@ return error; } + /* + * We do not hold the inode locked across the entire rolling transaction + * here. We only need to hold it for the first transaction that + * xfs_ifree() builds, which may mark the inode XFS_ISTALE if the + * underlying cluster buffer is freed. Relogging an XFS_ISTALE inode + * here breaks the relationship between cluster buffer invalidation and + * stale inode invalidation on cluster buffer item journal commit + * completion, and can result in leaving dirty stale inodes hanging + * around in memory. + * + * We have no need for serialising this inode operation against other + * operations - we freed the inode and hence reallocation is required + * and that will serialise on reallocating the space the deferops need + * to free. Hence we can unlock the inode on the first commit of + * the transaction rather than roll it right through the deferops. This + * avoids relogging the XFS_ISTALE inode. + * + * We check that xfs_ifree() hasn't grown an internal transaction roll + * by asserting that the inode is still locked when it returns. + */ xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_trans_ijoin(tp, ip, 0); + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); error = xfs_ifree(tp, ip); + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); if (error) { /* * If we fail to free the inode, shut down. The cancel @@ -1756,7 +1777,6 @@ xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); } xfs_trans_cancel(tp); - xfs_iunlock(ip, XFS_ILOCK_EXCL); return error; } @@ -1774,7 +1794,6 @@ xfs_notice(mp, "%s: xfs_trans_commit returned error %d", __func__, error); - xfs_iunlock(ip, XFS_ILOCK_EXCL); return 0; } --- linux-5.8.0.orig/fs/xfs/xfs_ioctl.c +++ linux-5.8.0/fs/xfs/xfs_ioctl.c @@ -1707,39 +1707,17 @@ return error; } -struct getfsmap_info { - struct xfs_mount *mp; - struct fsmap_head __user *data; - unsigned int idx; - __u32 last_flags; -}; - -STATIC int -xfs_getfsmap_format(struct xfs_fsmap *xfm, void *priv) -{ - struct getfsmap_info *info = priv; - struct fsmap fm; - - trace_xfs_getfsmap_mapping(info->mp, xfm); - - info->last_flags = xfm->fmr_flags; - xfs_fsmap_from_internal(&fm, xfm); - if (copy_to_user(&info->data->fmh_recs[info->idx++], &fm, - sizeof(struct fsmap))) - return -EFAULT; - - return 0; -} - STATIC int xfs_ioc_getfsmap( struct xfs_inode *ip, struct fsmap_head __user *arg) { - struct getfsmap_info info = { NULL }; struct xfs_fsmap_head xhead = {0}; struct fsmap_head head; - bool aborted = false; + struct fsmap *recs; + unsigned int count; + __u32 last_flags = 0; + bool done = false; int error; if (copy_from_user(&head, arg, sizeof(struct fsmap_head))) @@ -1751,38 +1729,112 @@ sizeof(head.fmh_keys[1].fmr_reserved))) return -EINVAL; + /* + * Use an internal memory buffer so that we don't have to copy fsmap + * data to userspace while holding locks. Start by trying to allocate + * up to 128k for the buffer, but fall back to a single page if needed. + */ + count = min_t(unsigned int, head.fmh_count, + 131072 / sizeof(struct fsmap)); + recs = kvzalloc(count * sizeof(struct fsmap), GFP_KERNEL); + if (!recs) { + count = min_t(unsigned int, head.fmh_count, + PAGE_SIZE / sizeof(struct fsmap)); + recs = kvzalloc(count * sizeof(struct fsmap), GFP_KERNEL); + if (!recs) + return -ENOMEM; + } + xhead.fmh_iflags = head.fmh_iflags; - xhead.fmh_count = head.fmh_count; xfs_fsmap_to_internal(&xhead.fmh_keys[0], &head.fmh_keys[0]); xfs_fsmap_to_internal(&xhead.fmh_keys[1], &head.fmh_keys[1]); trace_xfs_getfsmap_low_key(ip->i_mount, &xhead.fmh_keys[0]); trace_xfs_getfsmap_high_key(ip->i_mount, &xhead.fmh_keys[1]); - info.mp = ip->i_mount; - info.data = arg; - error = xfs_getfsmap(ip->i_mount, &xhead, xfs_getfsmap_format, &info); - if (error == -ECANCELED) { - error = 0; - aborted = true; - } else if (error) - return error; - - /* If we didn't abort, set the "last" flag in the last fmx */ - if (!aborted && info.idx) { - info.last_flags |= FMR_OF_LAST; - if (copy_to_user(&info.data->fmh_recs[info.idx - 1].fmr_flags, - &info.last_flags, sizeof(info.last_flags))) - return -EFAULT; + head.fmh_entries = 0; + do { + struct fsmap __user *user_recs; + struct fsmap *last_rec; + + user_recs = &arg->fmh_recs[head.fmh_entries]; + xhead.fmh_entries = 0; + xhead.fmh_count = min_t(unsigned int, count, + head.fmh_count - head.fmh_entries); + + /* Run query, record how many entries we got. */ + error = xfs_getfsmap(ip->i_mount, &xhead, recs); + switch (error) { + case 0: + /* + * There are no more records in the result set. Copy + * whatever we got to userspace and break out. + */ + done = true; + break; + case -ECANCELED: + /* + * The internal memory buffer is full. Copy whatever + * records we got to userspace and go again if we have + * not yet filled the userspace buffer. + */ + error = 0; + break; + default: + goto out_free; + } + head.fmh_entries += xhead.fmh_entries; + head.fmh_oflags = xhead.fmh_oflags; + + /* + * If the caller wanted a record count or there aren't any + * new records to return, we're done. + */ + if (head.fmh_count == 0 || xhead.fmh_entries == 0) + break; + + /* Copy all the records we got out to userspace. */ + if (copy_to_user(user_recs, recs, + xhead.fmh_entries * sizeof(struct fsmap))) { + error = -EFAULT; + goto out_free; + } + + /* Remember the last record flags we copied to userspace. */ + last_rec = &recs[xhead.fmh_entries - 1]; + last_flags = last_rec->fmr_flags; + + /* Set up the low key for the next iteration. */ + xfs_fsmap_to_internal(&xhead.fmh_keys[0], last_rec); + trace_xfs_getfsmap_low_key(ip->i_mount, &xhead.fmh_keys[0]); + } while (!done && head.fmh_entries < head.fmh_count); + + /* + * If there are no more records in the query result set and we're not + * in counting mode, mark the last record returned with the LAST flag. + */ + if (done && head.fmh_count > 0 && head.fmh_entries > 0) { + struct fsmap __user *user_rec; + + last_flags |= FMR_OF_LAST; + user_rec = &arg->fmh_recs[head.fmh_entries - 1]; + + if (copy_to_user(&user_rec->fmr_flags, &last_flags, + sizeof(last_flags))) { + error = -EFAULT; + goto out_free; + } } /* copy back header */ - head.fmh_entries = xhead.fmh_entries; - head.fmh_oflags = xhead.fmh_oflags; - if (copy_to_user(arg, &head, sizeof(struct fsmap_head))) - return -EFAULT; + if (copy_to_user(arg, &head, sizeof(struct fsmap_head))) { + error = -EFAULT; + goto out_free; + } - return 0; +out_free: + kmem_free(recs); + return error; } STATIC int --- linux-5.8.0.orig/fs/xfs/xfs_iops.c +++ linux-5.8.0/fs/xfs/xfs_iops.c @@ -865,7 +865,7 @@ ASSERT(xfs_isilocked(ip, XFS_MMAPLOCK_EXCL)); ASSERT(S_ISREG(inode->i_mode)); ASSERT((iattr->ia_valid & (ATTR_UID|ATTR_GID|ATTR_ATIME|ATTR_ATIME_SET| - ATTR_MTIME_SET|ATTR_KILL_PRIV|ATTR_TIMES_SET)) == 0); + ATTR_MTIME_SET|ATTR_TIMES_SET)) == 0); oldsize = inode->i_size; newsize = iattr->ia_size; @@ -911,6 +911,16 @@ error = iomap_zero_range(inode, oldsize, newsize - oldsize, &did_zeroing, &xfs_buffered_write_iomap_ops); } else { + /* + * iomap won't detect a dirty page over an unwritten block (or a + * cow block over a hole) and subsequently skips zeroing the + * newly post-EOF portion of the page. Flush the new EOF to + * convert the block before the pagecache truncate. + */ + error = filemap_write_and_wait_range(inode->i_mapping, newsize, + newsize); + if (error) + return error; error = iomap_truncate_page(inode, newsize, &did_zeroing, &xfs_buffered_write_iomap_ops); } --- linux-5.8.0.orig/fs/xfs/xfs_iwalk.c +++ linux-5.8.0/fs/xfs/xfs_iwalk.c @@ -55,6 +55,9 @@ /* Where do we start the traversal? */ xfs_ino_t startino; + /* What was the last inode number we saw when iterating the inobt? */ + xfs_ino_t lastino; + /* Array of inobt records we cache. */ struct xfs_inobt_rec_incore *recs; @@ -301,6 +304,9 @@ if (XFS_IS_CORRUPT(mp, *has_more != 1)) return -EFSCORRUPTED; + iwag->lastino = XFS_AGINO_TO_INO(mp, agno, + irec->ir_startino + XFS_INODES_PER_CHUNK - 1); + /* * If the LE lookup yielded an inobt record before the cursor position, * skip it and see if there's another one after it. @@ -347,15 +353,17 @@ struct xfs_mount *mp = iwag->mp; struct xfs_trans *tp = iwag->tp; struct xfs_inobt_rec_incore *irec; - xfs_agino_t restart; + xfs_agino_t next_agino; int error; + next_agino = XFS_INO_TO_AGINO(mp, iwag->lastino) + 1; + ASSERT(iwag->nr_recs > 0); /* Delete cursor but remember the last record we cached... */ xfs_iwalk_del_inobt(tp, curpp, agi_bpp, 0); irec = &iwag->recs[iwag->nr_recs - 1]; - restart = irec->ir_startino + XFS_INODES_PER_CHUNK - 1; + ASSERT(next_agino == irec->ir_startino + XFS_INODES_PER_CHUNK); error = xfs_iwalk_ag_recs(iwag); if (error) @@ -372,7 +380,7 @@ if (error) return error; - return xfs_inobt_lookup(*curpp, restart, XFS_LOOKUP_GE, has_more); + return xfs_inobt_lookup(*curpp, next_agino, XFS_LOOKUP_GE, has_more); } /* Walk all inodes in a single AG, from @iwag->startino to the end of the AG. */ @@ -396,6 +404,7 @@ while (!error && has_more) { struct xfs_inobt_rec_incore *irec; + xfs_ino_t rec_fsino; cond_resched(); if (xfs_pwork_want_abort(&iwag->pwork)) @@ -407,6 +416,15 @@ if (error || !has_more) break; + /* Make sure that we always move forward. */ + rec_fsino = XFS_AGINO_TO_INO(mp, agno, irec->ir_startino); + if (iwag->lastino != NULLFSINO && + XFS_IS_CORRUPT(mp, iwag->lastino >= rec_fsino)) { + error = -EFSCORRUPTED; + goto out; + } + iwag->lastino = rec_fsino + XFS_INODES_PER_CHUNK - 1; + /* No allocated inodes in this chunk; skip it. */ if (iwag->skip_empty && irec->ir_freecount == irec->ir_count) { error = xfs_btree_increment(cur, 0, &has_more); @@ -535,6 +553,7 @@ .trim_start = 1, .skip_empty = 1, .pwork = XFS_PWORK_SINGLE_THREADED, + .lastino = NULLFSINO, }; xfs_agnumber_t agno = XFS_INO_TO_AGNO(mp, startino); int error; @@ -623,6 +642,7 @@ iwag->data = data; iwag->startino = startino; iwag->sz_recs = xfs_iwalk_prefetch(inode_records); + iwag->lastino = NULLFSINO; xfs_pwork_queue(&pctl, &iwag->pwork); startino = XFS_AGINO_TO_INO(mp, agno + 1, 0); if (flags & XFS_INOBT_WALK_SAME_AG) @@ -696,6 +716,7 @@ .startino = startino, .sz_recs = xfs_inobt_walk_prefetch(inobt_records), .pwork = XFS_PWORK_SINGLE_THREADED, + .lastino = NULLFSINO, }; xfs_agnumber_t agno = XFS_INO_TO_AGNO(mp, startino); int error; --- linux-5.8.0.orig/fs/xfs/xfs_log_recover.c +++ linux-5.8.0/fs/xfs/xfs_log_recover.c @@ -2905,7 +2905,8 @@ xlog_valid_rec_header( struct xlog *log, struct xlog_rec_header *rhead, - xfs_daddr_t blkno) + xfs_daddr_t blkno, + int bufsize) { int hlen; @@ -2921,10 +2922,14 @@ return -EFSCORRUPTED; } - /* LR body must have data or it wouldn't have been written */ + /* + * LR body must have data (or it wouldn't have been written) + * and h_len must not be greater than LR buffer size. + */ hlen = be32_to_cpu(rhead->h_len); - if (XFS_IS_CORRUPT(log->l_mp, hlen <= 0 || hlen > INT_MAX)) + if (XFS_IS_CORRUPT(log->l_mp, hlen <= 0 || hlen > bufsize)) return -EFSCORRUPTED; + if (XFS_IS_CORRUPT(log->l_mp, blkno > log->l_logBBsize || blkno > INT_MAX)) return -EFSCORRUPTED; @@ -2985,9 +2990,6 @@ goto bread_err1; rhead = (xlog_rec_header_t *)offset; - error = xlog_valid_rec_header(log, rhead, tail_blk); - if (error) - goto bread_err1; /* * xfsprogs has a bug where record length is based on lsunit but @@ -3002,21 +3004,18 @@ */ h_size = be32_to_cpu(rhead->h_size); h_len = be32_to_cpu(rhead->h_len); - if (h_len > h_size) { - if (h_len <= log->l_mp->m_logbsize && - be32_to_cpu(rhead->h_num_logops) == 1) { - xfs_warn(log->l_mp, + if (h_len > h_size && h_len <= log->l_mp->m_logbsize && + rhead->h_num_logops == cpu_to_be32(1)) { + xfs_warn(log->l_mp, "invalid iclog size (%d bytes), using lsunit (%d bytes)", - h_size, log->l_mp->m_logbsize); - h_size = log->l_mp->m_logbsize; - } else { - XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, - log->l_mp); - error = -EFSCORRUPTED; - goto bread_err1; - } + h_size, log->l_mp->m_logbsize); + h_size = log->l_mp->m_logbsize; } + error = xlog_valid_rec_header(log, rhead, tail_blk, h_size); + if (error) + goto bread_err1; + if ((be32_to_cpu(rhead->h_version) & XLOG_VERSION_2) && (h_size > XLOG_HEADER_CYCLE_SIZE)) { hblks = h_size / XLOG_HEADER_CYCLE_SIZE; @@ -3097,7 +3096,7 @@ } rhead = (xlog_rec_header_t *)offset; error = xlog_valid_rec_header(log, rhead, - split_hblks ? blk_no : 0); + split_hblks ? blk_no : 0, h_size); if (error) goto bread_err2; @@ -3178,7 +3177,7 @@ goto bread_err2; rhead = (xlog_rec_header_t *)offset; - error = xlog_valid_rec_header(log, rhead, blk_no); + error = xlog_valid_rec_header(log, rhead, blk_no, h_size); if (error) goto bread_err2; --- linux-5.8.0.orig/fs/xfs/xfs_mount.c +++ linux-5.8.0/fs/xfs/xfs_mount.c @@ -195,21 +195,26 @@ } pag = kmem_zalloc(sizeof(*pag), KM_MAYFAIL); - if (!pag) + if (!pag) { + error = -ENOMEM; goto out_unwind_new_pags; + } pag->pag_agno = index; pag->pag_mount = mp; spin_lock_init(&pag->pag_ici_lock); mutex_init(&pag->pag_ici_reclaim_lock); INIT_RADIX_TREE(&pag->pag_ici_root, GFP_ATOMIC); - if (xfs_buf_hash_init(pag)) + + error = xfs_buf_hash_init(pag); + if (error) goto out_free_pag; init_waitqueue_head(&pag->pagb_wait); spin_lock_init(&pag->pagb_lock); pag->pagb_count = 0; pag->pagb_tree = RB_ROOT; - if (radix_tree_preload(GFP_NOFS)) + error = radix_tree_preload(GFP_NOFS); + if (error) goto out_hash_destroy; spin_lock(&mp->m_perag_lock); --- linux-5.8.0.orig/fs/xfs/xfs_pnfs.c +++ linux-5.8.0/fs/xfs/xfs_pnfs.c @@ -134,7 +134,7 @@ goto out_unlock; error = invalidate_inode_pages2(inode->i_mapping); if (WARN_ON_ONCE(error)) - return error; + goto out_unlock; end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + length); offset_fsb = XFS_B_TO_FSBT(mp, offset); --- linux-5.8.0.orig/fs/xfs/xfs_qm.c +++ linux-5.8.0/fs/xfs/xfs_qm.c @@ -148,6 +148,7 @@ error = xfs_bwrite(bp); xfs_buf_relse(bp); } else if (error == -EAGAIN) { + dqp->dq_flags &= ~XFS_DQ_FREEING; goto out_unlock; } xfs_dqflock(dqp); --- linux-5.8.0.orig/fs/xfs/xfs_refcount_item.c +++ linux-5.8.0/fs/xfs/xfs_refcount_item.c @@ -554,7 +554,7 @@ } xfs_refcount_finish_one_cleanup(tp, rcur, error); - xfs_defer_move(parent_tp, tp); + xfs_defer_capture(parent_tp, tp); error = xfs_trans_commit(tp); return error; --- linux-5.8.0.orig/fs/xfs/xfs_reflink.c +++ linux-5.8.0/fs/xfs/xfs_reflink.c @@ -1003,6 +1003,7 @@ xfs_filblks_t rlen; xfs_filblks_t unmap_len; xfs_off_t newlen; + int64_t qres; int error; unmap_len = irec->br_startoff + irec->br_blockcount - destoff; @@ -1025,13 +1026,19 @@ xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, ip, 0); - /* If we're not just clearing space, then do we have enough quota? */ - if (real_extent) { - error = xfs_trans_reserve_quota_nblks(tp, ip, - irec->br_blockcount, 0, XFS_QMOPT_RES_REGBLKS); - if (error) - goto out_cancel; - } + /* + * Reserve quota for this operation. We don't know if the first unmap + * in the dest file will cause a bmap btree split, so we always reserve + * at least enough blocks for that split. If the extent being mapped + * in is written, we need to reserve quota for that too. + */ + qres = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); + if (real_extent) + qres += irec->br_blockcount; + error = xfs_trans_reserve_quota_nblks(tp, ip, qres, 0, + XFS_QMOPT_RES_REGBLKS); + if (error) + goto out_cancel; trace_xfs_reflink_remap(ip, irec->br_startoff, irec->br_blockcount, irec->br_startblock); --- linux-5.8.0.orig/fs/xfs/xfs_rtalloc.c +++ linux-5.8.0/fs/xfs/xfs_rtalloc.c @@ -247,6 +247,9 @@ end = XFS_BLOCKTOBIT(mp, bbno + 1) - 1; i <= end; i++) { + /* Make sure we don't scan off the end of the rt volume. */ + maxlen = min(mp->m_sb.sb_rextents, i + maxlen) - i; + /* * See if there's a free extent of maxlen starting at i. * If it's not so then next will contain the first non-free. @@ -442,6 +445,14 @@ */ if (bno >= mp->m_sb.sb_rextents) bno = mp->m_sb.sb_rextents - 1; + + /* Make sure we don't run off the end of the rt volume. */ + maxlen = min(mp->m_sb.sb_rextents, bno + maxlen) - bno; + if (maxlen < minlen) { + *rtblock = NULLRTBLOCK; + return 0; + } + /* * Try the exact allocation first. */ @@ -767,8 +778,14 @@ struct xfs_bmbt_irec map; /* block map output */ int nmap; /* number of block maps */ int resblks; /* space reservation */ + enum xfs_blft buf_type; struct xfs_trans *tp; + if (ip == mp->m_rsumip) + buf_type = XFS_BLFT_RTSUMMARY_BUF; + else + buf_type = XFS_BLFT_RTBITMAP_BUF; + /* * Allocate space to the file, as necessary. */ @@ -830,6 +847,9 @@ mp->m_bsize, 0, &bp); if (error) goto out_trans_cancel; + + xfs_trans_buf_set_type(tp, bp, buf_type); + bp->b_ops = &xfs_rtbuf_ops; memset(bp->b_addr, 0, mp->m_sb.sb_blocksize); xfs_trans_log_buf(tp, bp, 0, mp->m_sb.sb_blocksize - 1); /* @@ -1007,10 +1027,13 @@ xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, mp->m_rbmip, XFS_ILOCK_EXCL); /* - * Update the bitmap inode's size. + * Update the bitmap inode's size ondisk and incore. We need + * to update the incore size so that inode inactivation won't + * punch what it thinks are "posteof" blocks. */ mp->m_rbmip->i_d.di_size = nsbp->sb_rbmblocks * nsbp->sb_blocksize; + i_size_write(VFS_I(mp->m_rbmip), mp->m_rbmip->i_d.di_size); xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE); /* * Get the summary inode into the transaction. @@ -1018,9 +1041,12 @@ xfs_ilock(mp->m_rsumip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, mp->m_rsumip, XFS_ILOCK_EXCL); /* - * Update the summary inode's size. + * Update the summary inode's size. We need to update the + * incore size so that inode inactivation won't punch what it + * thinks are "posteof" blocks. */ mp->m_rsumip->i_d.di_size = nmp->m_rsumsize; + i_size_write(VFS_I(mp->m_rsumip), mp->m_rsumip->i_d.di_size); xfs_trans_log_inode(tp, mp->m_rsumip, XFS_ILOG_CORE); /* * Copy summary data from old to new sizes. --- linux-5.8.0.orig/fs/xfs/xfs_sysfs.h +++ linux-5.8.0/fs/xfs/xfs_sysfs.h @@ -32,9 +32,11 @@ struct xfs_kobj *parent_kobj, const char *name) { + struct kobject *parent; + + parent = parent_kobj ? &parent_kobj->kobject : NULL; init_completion(&kobj->complete); - return kobject_init_and_add(&kobj->kobject, ktype, - &parent_kobj->kobject, "%s", name); + return kobject_init_and_add(&kobj->kobject, ktype, parent, "%s", name); } static inline void --- linux-5.8.0.orig/fs/xfs/xfs_trans.c +++ linux-5.8.0/fs/xfs/xfs_trans.c @@ -107,7 +107,8 @@ ntp->t_flags = XFS_TRANS_PERM_LOG_RES | (tp->t_flags & XFS_TRANS_RESERVE) | - (tp->t_flags & XFS_TRANS_NO_WRITECOUNT); + (tp->t_flags & XFS_TRANS_NO_WRITECOUNT) | + (tp->t_flags & XFS_TRANS_RES_FDBLKS); /* We gave our writer reference to the new transaction */ tp->t_flags |= XFS_TRANS_NO_WRITECOUNT; ntp->t_ticket = xfs_log_ticket_get(tp->t_ticket); @@ -272,6 +273,8 @@ */ WARN_ON(resp->tr_logres > 0 && mp->m_super->s_writers.frozen == SB_FREEZE_COMPLETE); + ASSERT(!(flags & XFS_TRANS_RES_FDBLKS) || + xfs_sb_version_haslazysbcount(&mp->m_sb)); tp->t_magic = XFS_TRANS_HEADER_MAGIC; tp->t_flags = flags; @@ -365,6 +368,20 @@ tp->t_blk_res_used += (uint)-delta; if (tp->t_blk_res_used > tp->t_blk_res) xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); + } else if (delta > 0 && (tp->t_flags & XFS_TRANS_RES_FDBLKS)) { + int64_t blkres_delta; + + /* + * Return freed blocks directly to the reservation + * instead of the global pool, being careful not to + * overflow the trans counter. This is used to preserve + * reservation across chains of transaction rolls that + * repeatedly free and allocate blocks. + */ + blkres_delta = min_t(int64_t, delta, + UINT_MAX - tp->t_blk_res); + tp->t_blk_res += blkres_delta; + delta -= blkres_delta; } tp->t_fdblocks_delta += delta; if (xfs_sb_version_haslazysbcount(&mp->m_sb)) --- linux-5.8.0.orig/fs/xfs/xfs_trans_dquot.c +++ linux-5.8.0/fs/xfs/xfs_trans_dquot.c @@ -647,7 +647,7 @@ } } if (ninos > 0) { - total_count = be64_to_cpu(dqp->q_core.d_icount) + ninos; + total_count = dqp->q_res_icount + ninos; timer = be32_to_cpu(dqp->q_core.d_itimer); warns = be16_to_cpu(dqp->q_core.d_iwarns); warnlimit = defq->iwarnlimit; --- linux-5.8.0.orig/fs/zonefs/Kconfig +++ linux-5.8.0/fs/zonefs/Kconfig @@ -3,6 +3,7 @@ depends on BLOCK depends on BLK_DEV_ZONED select FS_IOMAP + select CRC32 help zonefs is a simple file system which exposes zones of a zoned block device (e.g. host-managed or host-aware SMR disk drives) as files. --- linux-5.8.0.orig/fs/zonefs/super.c +++ linux-5.8.0/fs/zonefs/super.c @@ -126,6 +126,21 @@ return iomap_writepages(mapping, wbc, &wpc, &zonefs_writeback_ops); } +static int zonefs_swap_activate(struct swap_info_struct *sis, + struct file *swap_file, sector_t *span) +{ + struct inode *inode = file_inode(swap_file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (zi->i_ztype != ZONEFS_ZTYPE_CNV) { + zonefs_err(inode->i_sb, + "swap file: not a conventional zone file\n"); + return -EINVAL; + } + + return iomap_swapfile_activate(sis, swap_file, span, &zonefs_iomap_ops); +} + static const struct address_space_operations zonefs_file_aops = { .readpage = zonefs_readpage, .readahead = zonefs_readahead, @@ -138,6 +153,7 @@ .is_partially_uptodate = iomap_is_partially_uptodate, .error_remove_page = generic_error_remove_page, .direct_IO = noop_direct_IO, + .swap_activate = zonefs_swap_activate, }; static void zonefs_update_stats(struct inode *inode, loff_t new_isize) @@ -217,6 +233,9 @@ } inode->i_mode &= ~0222; return i_size_read(inode); + case BLK_ZONE_COND_FULL: + /* The write pointer of full zones is invalid. */ + return zi->i_max_size; default: if (zi->i_ztype == ZONEFS_ZTYPE_CNV) return zi->i_max_size; @@ -628,21 +647,23 @@ bio->bi_opf |= REQ_FUA; ret = bio_iov_iter_get_pages(bio, from); - if (unlikely(ret)) { - bio_io_error(bio); - return ret; - } + if (unlikely(ret)) + goto out_release; + size = bio->bi_iter.bi_size; - task_io_account_write(ret); + task_io_account_write(size); if (iocb->ki_flags & IOCB_HIPRI) bio_set_polled(bio, iocb); ret = submit_bio_wait(bio); + zonefs_file_write_dio_end_io(iocb, size, ret, 0); + +out_release: + bio_release_pages(bio, false); bio_put(bio); - zonefs_file_write_dio_end_io(iocb, size, ret, 0); if (ret >= 0) { iocb->ki_pos += size; return size; @@ -652,6 +673,68 @@ } /* + * Do not exceed the LFS limits nor the file zone size. If pos is under the + * limit it becomes a short access. If it exceeds the limit, return -EFBIG. + */ +static loff_t zonefs_write_check_limits(struct file *file, loff_t pos, + loff_t count) +{ + struct inode *inode = file_inode(file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + loff_t limit = rlimit(RLIMIT_FSIZE); + loff_t max_size = zi->i_max_size; + + if (limit != RLIM_INFINITY) { + if (pos >= limit) { + send_sig(SIGXFSZ, current, 0); + return -EFBIG; + } + count = min(count, limit - pos); + } + + if (!(file->f_flags & O_LARGEFILE)) + max_size = min_t(loff_t, MAX_NON_LFS, max_size); + + if (unlikely(pos >= max_size)) + return -EFBIG; + + return min(count, max_size - pos); +} + +static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file_inode(file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + loff_t count; + + if (IS_SWAPFILE(inode)) + return -ETXTBSY; + + if (!iov_iter_count(from)) + return 0; + + if ((iocb->ki_flags & IOCB_NOWAIT) && !(iocb->ki_flags & IOCB_DIRECT)) + return -EINVAL; + + if (iocb->ki_flags & IOCB_APPEND) { + if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + return -EINVAL; + mutex_lock(&zi->i_truncate_mutex); + iocb->ki_pos = zi->i_wpoffset; + mutex_unlock(&zi->i_truncate_mutex); + } + + count = zonefs_write_check_limits(file, iocb->ki_pos, + iov_iter_count(from)); + if (count < 0) + return count; + + iov_iter_truncate(from, count); + return iov_iter_count(from); +} + +/* * Handle direct writes. For sequential zone files, this is the only possible * write path. For these files, check that the user is issuing writes * sequentially from the end of the file. This code assumes that the block layer @@ -668,8 +751,7 @@ struct super_block *sb = inode->i_sb; bool sync = is_sync_kiocb(iocb); bool append = false; - size_t count; - ssize_t ret; + ssize_t ret, count; /* * For async direct IOs to sequential zone files, refuse IOCB_NOWAIT @@ -687,12 +769,11 @@ inode_lock(inode); } - ret = generic_write_checks(iocb, from); - if (ret <= 0) + count = zonefs_write_checks(iocb, from); + if (count <= 0) { + ret = count; goto inode_unlock; - - iov_iter_truncate(from, zi->i_max_size - iocb->ki_pos); - count = iov_iter_count(from); + } if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { ret = -EINVAL; @@ -752,12 +833,10 @@ inode_lock(inode); } - ret = generic_write_checks(iocb, from); + ret = zonefs_write_checks(iocb, from); if (ret <= 0) goto inode_unlock; - iov_iter_truncate(from, zi->i_max_size - iocb->ki_pos); - ret = iomap_file_buffered_write(iocb, from, &zonefs_iomap_ops); if (ret > 0) iocb->ki_pos += ret; --- linux-5.8.0.orig/include/acpi/acexcep.h +++ linux-5.8.0/include/acpi/acexcep.h @@ -59,11 +59,11 @@ #define AE_OK (acpi_status) 0x0000 -#define ACPI_ENV_EXCEPTION(status) (status & AE_CODE_ENVIRONMENTAL) -#define ACPI_AML_EXCEPTION(status) (status & AE_CODE_AML) -#define ACPI_PROG_EXCEPTION(status) (status & AE_CODE_PROGRAMMER) -#define ACPI_TABLE_EXCEPTION(status) (status & AE_CODE_ACPI_TABLES) -#define ACPI_CNTL_EXCEPTION(status) (status & AE_CODE_CONTROL) +#define ACPI_ENV_EXCEPTION(status) (((status) & AE_CODE_MASK) == AE_CODE_ENVIRONMENTAL) +#define ACPI_AML_EXCEPTION(status) (((status) & AE_CODE_MASK) == AE_CODE_AML) +#define ACPI_PROG_EXCEPTION(status) (((status) & AE_CODE_MASK) == AE_CODE_PROGRAMMER) +#define ACPI_TABLE_EXCEPTION(status) (((status) & AE_CODE_MASK) == AE_CODE_ACPI_TABLES) +#define ACPI_CNTL_EXCEPTION(status) (((status) & AE_CODE_MASK) == AE_CODE_CONTROL) /* * Environmental exceptions --- linux-5.8.0.orig/include/acpi/acpi_bus.h +++ linux-5.8.0/include/acpi/acpi_bus.h @@ -233,6 +233,7 @@ struct acpi_device_pnp { acpi_bus_id bus_id; /* Object name */ + int instance_no; /* Instance number of this object */ struct acpi_pnp_type type; /* ID type */ acpi_bus_address bus_address; /* _ADR */ char *unique_id; /* _UID */ @@ -615,7 +616,6 @@ bool acpi_pm_device_can_wakeup(struct device *dev); int acpi_pm_device_sleep_state(struct device *, int *, int); int acpi_pm_set_device_wakeup(struct device *dev, bool enable); -int acpi_pm_set_bridge_wakeup(struct device *dev, bool enable); #else static inline void acpi_pm_wakeup_event(struct device *dev) { @@ -646,10 +646,6 @@ { return -ENODEV; } -static inline int acpi_pm_set_bridge_wakeup(struct device *dev, bool enable) -{ - return -ENODEV; -} #endif #ifdef CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT --- linux-5.8.0.orig/include/asm-generic/Kbuild +++ linux-5.8.0/include/asm-generic/Kbuild @@ -35,6 +35,7 @@ mandatory-y += kprobes.h mandatory-y += linkage.h mandatory-y += local.h +mandatory-y += local64.h mandatory-y += mm-arch-hooks.h mandatory-y += mmiowb.h mandatory-y += mmu.h --- linux-5.8.0.orig/include/asm-generic/bitops/atomic.h +++ linux-5.8.0/include/asm-generic/bitops/atomic.h @@ -11,19 +11,19 @@ * See Documentation/atomic_bitops.txt for details. */ -static inline void set_bit(unsigned int nr, volatile unsigned long *p) +static __always_inline void set_bit(unsigned int nr, volatile unsigned long *p) { p += BIT_WORD(nr); atomic_long_or(BIT_MASK(nr), (atomic_long_t *)p); } -static inline void clear_bit(unsigned int nr, volatile unsigned long *p) +static __always_inline void clear_bit(unsigned int nr, volatile unsigned long *p) { p += BIT_WORD(nr); atomic_long_andnot(BIT_MASK(nr), (atomic_long_t *)p); } -static inline void change_bit(unsigned int nr, volatile unsigned long *p) +static __always_inline void change_bit(unsigned int nr, volatile unsigned long *p) { p += BIT_WORD(nr); atomic_long_xor(BIT_MASK(nr), (atomic_long_t *)p); --- linux-5.8.0.orig/include/asm-generic/vmlinux.lds.h +++ linux-5.8.0/include/asm-generic/vmlinux.lds.h @@ -375,6 +375,7 @@ */ #ifndef RO_AFTER_INIT_DATA #define RO_AFTER_INIT_DATA \ + . = ALIGN(8); \ __start_ro_after_init = .; \ *(.data..ro_after_init) \ JUMP_TABLE_DATA \ @@ -430,7 +431,7 @@ } \ \ /* Built-in firmware blobs */ \ - .builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) { \ + .builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) ALIGN(8) { \ __start_builtin_fw = .; \ KEEP(*(.builtin_fw)) \ __end_builtin_fw = .; \ @@ -560,7 +561,10 @@ */ #define TEXT_TEXT \ ALIGN_FUNCTION(); \ - *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \ + *(.text.hot .text.hot.*) \ + *(TEXT_MAIN .text.fixup) \ + *(.text.unlikely .text.unlikely.*) \ + *(.text.unknown .text.unknown.*) \ NOINSTR_TEXT \ *(.text..refcount) \ *(.ref.text) \ @@ -640,7 +644,7 @@ #define BTF \ .BTF : AT(ADDR(.BTF) - LOAD_OFFSET) { \ __start_BTF = .; \ - *(.BTF) \ + KEEP(*(.BTF)) \ __stop_BTF = .; \ } #else @@ -784,8 +788,13 @@ /* DWARF 4 */ \ .debug_types 0 : { *(.debug_types) } \ /* DWARF 5 */ \ + .debug_addr 0 : { *(.debug_addr) } \ + .debug_line_str 0 : { *(.debug_line_str) } \ + .debug_loclists 0 : { *(.debug_loclists) } \ .debug_macro 0 : { *(.debug_macro) } \ - .debug_addr 0 : { *(.debug_addr) } + .debug_names 0 : { *(.debug_names) } \ + .debug_rnglists 0 : { *(.debug_rnglists) } \ + .debug_str_offsets 0 : { *(.debug_str_offsets) } /* Stabs debugging sections. */ #define STABS_DEBUG \ --- linux-5.8.0.orig/include/crypto/hash.h +++ linux-5.8.0/include/crypto/hash.h @@ -141,7 +141,7 @@ struct shash_desc { struct crypto_shash *tfm; - void *__ctx[] CRYPTO_MINALIGN_ATTR; + void *__ctx[] __aligned(ARCH_SLAB_MINALIGN); }; #define HASH_MAX_DIGESTSIZE 64 @@ -154,9 +154,9 @@ #define HASH_MAX_STATESIZE 512 -#define SHASH_DESC_ON_STACK(shash, ctx) \ - char __##shash##_desc[sizeof(struct shash_desc) + \ - HASH_MAX_DESCSIZE] CRYPTO_MINALIGN_ATTR; \ +#define SHASH_DESC_ON_STACK(shash, ctx) \ + char __##shash##_desc[sizeof(struct shash_desc) + HASH_MAX_DESCSIZE] \ + __aligned(__alignof__(struct shash_desc)); \ struct shash_desc *shash = (struct shash_desc *)__##shash##_desc /** --- linux-5.8.0.orig/include/crypto/if_alg.h +++ linux-5.8.0/include/crypto/if_alg.h @@ -135,6 +135,7 @@ * SG? * @enc: Cryptographic operation to be performed when * recvmsg is invoked. + * @init: True if metadata has been sent. * @len: Length of memory allocated for this data structure. */ struct af_alg_ctx { @@ -151,6 +152,7 @@ bool more; bool merge; bool enc; + bool init; unsigned int len; }; @@ -226,7 +228,7 @@ void af_alg_pull_tsgl(struct sock *sk, size_t used, struct scatterlist *dst, size_t dst_offset); void af_alg_wmem_wakeup(struct sock *sk); -int af_alg_wait_for_data(struct sock *sk, unsigned flags); +int af_alg_wait_for_data(struct sock *sk, unsigned flags, unsigned min); int af_alg_sendmsg(struct socket *sock, struct msghdr *msg, size_t size, unsigned int ivsize); ssize_t af_alg_sendpage(struct socket *sock, struct page *page, --- linux-5.8.0.orig/include/drm/drm_dp_helper.h +++ linux-5.8.0/include/drm/drm_dp_helper.h @@ -1697,6 +1697,14 @@ * the DP_MAX_LINK_RATE register reporting a lower max multiplier. */ DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS, + /** + * @DP_QUIRK_FORCE_PSR_CHIP_DEFAULT + * + * PSR was disabled by default in Ubuntu 5.0 kernels and on, but some + * platforms might be depending on them. If so, use per-chip default to + * probe that automatically. + */ + DP_QUIRK_FORCE_PSR_CHIP_DEFAULT, }; /** --- linux-5.8.0.orig/include/drm/drm_dp_mst_helper.h +++ linux-5.8.0/include/drm/drm_dp_mst_helper.h @@ -726,6 +726,7 @@ struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port); +int drm_dp_get_vc_payload_bw(int link_rate, int link_lane_count); int drm_dp_calc_pbn_mode(int clock, int bpp, bool dsc); --- linux-5.8.0.orig/include/drm/drm_hdcp.h +++ linux-5.8.0/include/drm/drm_hdcp.h @@ -29,6 +29,9 @@ /* Slave address for the HDCP registers in the receiver */ #define DRM_HDCP_DDC_ADDR 0x3A +/* Value to use at the end of the SHA-1 bytestream used for repeaters */ +#define DRM_HDCP_SHA1_TERMINATOR 0x80 + /* HDCP register offsets for HDMI/DVI devices */ #define DRM_HDCP_DDC_BKSV 0x00 #define DRM_HDCP_DDC_RI_PRIME 0x08 --- linux-5.8.0.orig/include/drm/drm_modeset_lock.h +++ linux-5.8.0/include/drm/drm_modeset_lock.h @@ -164,6 +164,8 @@ * is 0, so no error checking is necessary */ #define DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, flags, ret) \ + if (!drm_drv_uses_atomic_modeset(dev)) \ + mutex_lock(&dev->mode_config.mutex); \ drm_modeset_acquire_init(&ctx, flags); \ modeset_lock_retry: \ ret = drm_modeset_lock_all_ctx(dev, &ctx); \ @@ -172,6 +174,7 @@ /** * DRM_MODESET_LOCK_ALL_END - Helper to release and cleanup modeset locks + * @dev: drm device * @ctx: local modeset acquire context, will be dereferenced * @ret: local ret/err/etc variable to track error status * @@ -188,7 +191,7 @@ * to that failure. In both of these cases the code between BEGIN/END will not * be run, so the failure will reflect the inability to grab the locks. */ -#define DRM_MODESET_LOCK_ALL_END(ctx, ret) \ +#define DRM_MODESET_LOCK_ALL_END(dev, ctx, ret) \ modeset_lock_fail: \ if (ret == -EDEADLK) { \ ret = drm_modeset_backoff(&ctx); \ @@ -196,6 +199,8 @@ goto modeset_lock_retry; \ } \ drm_modeset_drop_locks(&ctx); \ - drm_modeset_acquire_fini(&ctx); + drm_modeset_acquire_fini(&ctx); \ + if (!drm_drv_uses_atomic_modeset(dev)) \ + mutex_unlock(&dev->mode_config.mutex); #endif /* DRM_MODESET_LOCK_H_ */ --- linux-5.8.0.orig/include/drm/gpu_scheduler.h +++ linux-5.8.0/include/drm/gpu_scheduler.h @@ -33,14 +33,16 @@ struct drm_gpu_scheduler; struct drm_sched_rq; +/* These are often used as an (initial) index + * to an array, and as such should start at 0. + */ enum drm_sched_priority { DRM_SCHED_PRIORITY_MIN, - DRM_SCHED_PRIORITY_LOW = DRM_SCHED_PRIORITY_MIN, DRM_SCHED_PRIORITY_NORMAL, - DRM_SCHED_PRIORITY_HIGH_SW, - DRM_SCHED_PRIORITY_HIGH_HW, + DRM_SCHED_PRIORITY_HIGH, DRM_SCHED_PRIORITY_KERNEL, - DRM_SCHED_PRIORITY_MAX, + + DRM_SCHED_PRIORITY_COUNT, DRM_SCHED_PRIORITY_INVALID = -1, DRM_SCHED_PRIORITY_UNSET = -2 }; @@ -274,7 +276,7 @@ uint32_t hw_submission_limit; long timeout; const char *name; - struct drm_sched_rq sched_rq[DRM_SCHED_PRIORITY_MAX]; + struct drm_sched_rq sched_rq[DRM_SCHED_PRIORITY_COUNT]; wait_queue_head_t wake_up_worker; wait_queue_head_t job_scheduled; atomic_t hw_rq_count; --- linux-5.8.0.orig/include/drm/intel-gtt.h +++ linux-5.8.0/include/drm/intel-gtt.h @@ -5,6 +5,7 @@ #define _DRM_INTEL_GTT_H #include +#include #include void intel_gtt_get(u64 *gtt_total, @@ -33,8 +34,4 @@ /* flag for GFDT type */ #define AGP_USER_CACHED_MEMORY_GFDT (1 << 3) -#ifdef CONFIG_INTEL_IOMMU -extern int intel_iommu_gfx_mapped; -#endif - #endif --- linux-5.8.0.orig/include/kunit/test.h +++ linux-5.8.0/include/kunit/test.h @@ -914,7 +914,7 @@ KUNIT_ASSERTION(test, \ strcmp(__left, __right) op 0, \ kunit_binary_str_assert, \ - KUNIT_INIT_BINARY_ASSERT_STRUCT(test, \ + KUNIT_INIT_BINARY_STR_ASSERT_STRUCT(test, \ assert_type, \ #op, \ #left, \ --- linux-5.8.0.orig/include/linux/acpi.h +++ linux-5.8.0/include/linux/acpi.h @@ -222,10 +222,14 @@ void __acpi_unmap_table(void __iomem *map, unsigned long size); int early_acpi_boot_init(void); int acpi_boot_init (void); +void acpi_boot_table_prepare (void); void acpi_boot_table_init (void); int acpi_mps_check (void); int acpi_numa_init (void); +int acpi_locate_initial_tables (void); +void acpi_reserve_initial_tables (void); +void acpi_table_init_complete (void); int acpi_table_init (void); int acpi_table_parse(char *id, acpi_tbl_table_handler handler); int __init acpi_table_parse_entries(char *id, unsigned long table_size, @@ -805,9 +809,12 @@ return 0; } +static inline void acpi_boot_table_prepare(void) +{ +} + static inline void acpi_boot_table_init(void) { - return; } static inline int acpi_mps_check(void) @@ -883,6 +890,13 @@ return -ENODEV; } +static inline struct platform_device * +acpi_create_platform_device(struct acpi_device *adev, + struct property_entry *properties) +{ + return NULL; +} + static inline bool acpi_dma_supported(struct acpi_device *adev) { return false; @@ -1058,19 +1072,25 @@ #if defined(CONFIG_ACPI) && defined(CONFIG_GPIOLIB) bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio); -int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index); +int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index); #else static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio) { return false; } -static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) +static inline int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, + const char *name, int index) { return -ENXIO; } #endif +static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index) +{ + return acpi_dev_gpio_irq_get_by(adev, NULL, index); +} + /* Device properties */ #ifdef CONFIG_ACPI --- linux-5.8.0.orig/include/linux/acpi_iort.h +++ linux-5.8.0/include/linux/acpi_iort.h @@ -36,6 +36,7 @@ void iort_dma_setup(struct device *dev, u64 *dma_addr, u64 *size); const struct iommu_ops *iort_iommu_configure(struct device *dev); int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head); +phys_addr_t acpi_iort_dma_get_max_cpu_address(void); #else static inline void acpi_iort_init(void) { } static inline u32 iort_msi_map_rid(struct device *dev, u32 req_id) @@ -53,6 +54,9 @@ static inline int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head) { return 0; } + +static inline phys_addr_t acpi_iort_dma_get_max_cpu_address(void) +{ return PHYS_ADDR_MAX; } #endif #endif /* __ACPI_IORT_H__ */ --- linux-5.8.0.orig/include/linux/arm-smccc.h +++ linux-5.8.0/include/linux/arm-smccc.h @@ -385,6 +385,8 @@ method; \ }) +#define SMCCC_ARCH_WORKAROUND_RET_UNAFFECTED 1 + /* Paravirtualised time calls (defined by ARM DEN0057A) */ #define ARM_SMCCC_HV_PV_TIME_FEATURES \ ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \ --- linux-5.8.0.orig/include/linux/audit.h +++ linux-5.8.0/include/linux/audit.h @@ -11,6 +11,7 @@ #include #include +#include #include #define AUDIT_INO_UNSET ((unsigned long)-1) @@ -64,8 +65,9 @@ kuid_t uid; kgid_t gid; struct { + bool lsm_isset; char *lsm_str; - void *lsm_rule; + void *lsm_rules[LSMBLOB_ENTRIES]; }; }; u32 op; @@ -166,7 +168,11 @@ const char *operation); extern void audit_log_lost(const char *message); -extern int audit_log_task_context(struct audit_buffer *ab); +extern void audit_log_lsm(struct lsmblob *blob, bool exiting); +extern int audit_log_task_context(struct audit_buffer *ab, + struct lsmblob *blob); +extern int audit_log_object_context(struct audit_buffer *ab, + struct lsmblob *blob); extern void audit_log_task_info(struct audit_buffer *ab); extern int audit_update_lsm_rules(void); @@ -226,7 +232,10 @@ { } static inline void audit_log_path_denied(int type, const char *operation) { } -static inline int audit_log_task_context(struct audit_buffer *ab) +static inline void audit_log_lsm(struct lsmblob *blob, bool exiting) +{ } +static inline int audit_log_task_context(struct audit_buffer *ab, + struct lsmblob *blob); { return 0; } @@ -285,6 +294,7 @@ extern void audit_seccomp_actions_logged(const char *names, const char *old_names, int res); extern void __audit_ptrace(struct task_struct *t); +extern void audit_stamp_context(struct audit_context *ctx); static inline void audit_set_context(struct task_struct *task, struct audit_context *ctx) { @@ -663,6 +673,9 @@ static inline void audit_ptrace(struct task_struct *t) { } +static inline void audit_stamp_context(struct audit_context *ctx) +{ } + static inline void audit_log_nfcfg(const char *name, u8 af, unsigned int nentries, enum audit_nfcfgop op) --- linux-5.8.0.orig/include/linux/bitfield.h +++ linux-5.8.0/include/linux/bitfield.h @@ -77,7 +77,7 @@ */ #define FIELD_FIT(_mask, _val) \ ({ \ - __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_FIT: "); \ + __BF_FIELD_CHECK(_mask, 0ULL, 0ULL, "FIELD_FIT: "); \ !((((typeof(_mask))_val) << __bf_shf(_mask)) & ~(_mask)); \ }) --- linux-5.8.0.orig/include/linux/blk-mq.h +++ linux-5.8.0/include/linux/blk-mq.h @@ -447,10 +447,8 @@ BLK_MQ_REQ_NOWAIT = (__force blk_mq_req_flags_t)(1 << 0), /* allocate from reserved pool */ BLK_MQ_REQ_RESERVED = (__force blk_mq_req_flags_t)(1 << 1), - /* allocate internal/sched tag */ - BLK_MQ_REQ_INTERNAL = (__force blk_mq_req_flags_t)(1 << 2), - /* set RQF_PREEMPT */ - BLK_MQ_REQ_PREEMPT = (__force blk_mq_req_flags_t)(1 << 3), + /* set RQF_PM */ + BLK_MQ_REQ_PM = (__force blk_mq_req_flags_t)(1 << 2), }; struct request *blk_mq_alloc_request(struct request_queue *q, unsigned int op, --- linux-5.8.0.orig/include/linux/blkdev.h +++ linux-5.8.0/include/linux/blkdev.h @@ -80,9 +80,6 @@ #define RQF_MQ_INFLIGHT ((__force req_flags_t)(1 << 6)) /* don't call prep for this one */ #define RQF_DONTPREP ((__force req_flags_t)(1 << 7)) -/* set for "ide_preempt" requests and also for requests for which the SCSI - "quiesce" state must be ignored. */ -#define RQF_PREEMPT ((__force req_flags_t)(1 << 8)) /* vaguely specified driver internal error. Ignored by the block layer */ #define RQF_FAILED ((__force req_flags_t)(1 << 10)) /* don't warn about errors */ @@ -354,6 +351,8 @@ typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, void *data); +void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model); + #ifdef CONFIG_BLK_DEV_ZONED #define BLK_ALL_ZONES ((unsigned int)-1) @@ -428,8 +427,7 @@ unsigned long queue_flags; /* * Number of contexts that have called blk_set_pm_only(). If this - * counter is above zero then only RQF_PM and RQF_PREEMPT requests are - * processed. + * counter is above zero then only RQF_PM requests are processed. */ atomic_t pm_only; @@ -685,6 +683,18 @@ return q->mq_ops; } +#ifdef CONFIG_PM +static inline enum rpm_status queue_rpm_status(struct request_queue *q) +{ + return q->rpm_status; +} +#else +static inline enum rpm_status queue_rpm_status(struct request_queue *q) +{ + return RPM_ACTIVE; +} +#endif + static inline enum blk_zoned_model blk_queue_zoned_model(struct request_queue *q) { --- linux-5.8.0.orig/include/linux/bpf.h +++ linux-5.8.0/include/linux/bpf.h @@ -925,7 +925,7 @@ struct bpf_prog *include_prog, struct bpf_prog_array **new_array); -#define __BPF_PROG_RUN_ARRAY(array, ctx, func, check_non_null) \ +#define __BPF_PROG_RUN_ARRAY(array, ctx, func, check_non_null, set_cg_storage) \ ({ \ struct bpf_prog_array_item *_item; \ struct bpf_prog *_prog; \ @@ -938,7 +938,8 @@ goto _out; \ _item = &_array->items[0]; \ while ((_prog = READ_ONCE(_item->prog))) { \ - bpf_cgroup_storage_set(_item->cgroup_storage); \ + if (set_cg_storage) \ + bpf_cgroup_storage_set(_item->cgroup_storage); \ _ret &= func(_prog, ctx); \ _item++; \ } \ @@ -999,10 +1000,10 @@ }) #define BPF_PROG_RUN_ARRAY(array, ctx, func) \ - __BPF_PROG_RUN_ARRAY(array, ctx, func, false) + __BPF_PROG_RUN_ARRAY(array, ctx, func, false, true) #define BPF_PROG_RUN_ARRAY_CHECK(array, ctx, func) \ - __BPF_PROG_RUN_ARRAY(array, ctx, func, true) + __BPF_PROG_RUN_ARRAY(array, ctx, func, true, false) #ifdef CONFIG_BPF_SYSCALL DECLARE_PER_CPU(int, bpf_prog_active); @@ -1067,8 +1068,6 @@ void bpf_prog_put(struct bpf_prog *prog); int __bpf_prog_charge(struct user_struct *user, u32 pages); void __bpf_prog_uncharge(struct user_struct *user, u32 pages); -void __bpf_free_used_maps(struct bpf_prog_aux *aux, - struct bpf_map **used_maps, u32 len); void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock); void bpf_map_free_id(struct bpf_map *map, bool do_idr_lock); @@ -1235,7 +1234,10 @@ /* verify correctness of eBPF program */ int bpf_check(struct bpf_prog **fp, union bpf_attr *attr, union bpf_attr __user *uattr); + +#ifndef CONFIG_BPF_JIT_ALWAYS_ON void bpf_patch_call_args(struct bpf_insn *insn, u32 stack_depth); +#endif /* Map specifics */ struct xdp_buff; @@ -1472,6 +1474,9 @@ return bpf_prog_get_type_dev(ufd, type, false); } +void __bpf_free_used_maps(struct bpf_prog_aux *aux, + struct bpf_map **used_maps, u32 len); + bool bpf_prog_get_ok(struct bpf_prog *, enum bpf_prog_type *, bool); int bpf_prog_offload_compile(struct bpf_prog *prog); --- linux-5.8.0.orig/include/linux/bpf_verifier.h +++ linux-5.8.0/include/linux/bpf_verifier.h @@ -358,6 +358,7 @@ u32 start; /* insn idx of function entry point */ u32 linfo_idx; /* The idx to the main_prog->aux->linfo */ u16 stack_depth; /* max. stack depth used by this function */ + bool has_tail_call; }; /* single container for all structs --- linux-5.8.0.orig/include/linux/brcmphy.h +++ linux-5.8.0/include/linux/brcmphy.h @@ -135,6 +135,7 @@ #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC 0x07 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN 0x0010 +#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN 0x0080 #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN 0x0100 #define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX 0x0200 #define MII_BCM54XX_AUXCTL_MISC_WREN 0x8000 @@ -221,6 +222,9 @@ /* 11111: Mode Control Register */ #define BCM54XX_SHD_MODE 0x1f #define BCM54XX_SHD_INTF_SEL_MASK GENMASK(2, 1) /* INTERF_SEL[1:0] */ +#define BCM54XX_SHD_INTF_SEL_RGMII 0x02 +#define BCM54XX_SHD_INTF_SEL_SGMII 0x04 +#define BCM54XX_SHD_INTF_SEL_GBIC 0x06 #define BCM54XX_SHD_MODE_1000BX BIT(0) /* Enable 1000-X registers */ /* --- linux-5.8.0.orig/include/linux/build_bug.h +++ linux-5.8.0/include/linux/build_bug.h @@ -77,4 +77,9 @@ #define static_assert(expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr) #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) +#ifdef __GENKSYMS__ +/* genksyms gets confused by _Static_assert */ +#define _Static_assert(expr, ...) +#endif + #endif /* _LINUX_BUILD_BUG_H */ --- linux-5.8.0.orig/include/linux/bvec.h +++ linux-5.8.0/include/linux/bvec.h @@ -117,11 +117,18 @@ return true; } +static inline void bvec_iter_skip_zero_bvec(struct bvec_iter *iter) +{ + iter->bi_bvec_done = 0; + iter->bi_idx++; +} + #define for_each_bvec(bvl, bio_vec, iter, start) \ for (iter = (start); \ (iter).bi_size && \ ((bvl = bvec_iter_bvec((bio_vec), (iter))), 1); \ - bvec_iter_advance((bio_vec), &(iter), (bvl).bv_len)) + (bvl).bv_len ? (void)bvec_iter_advance((bio_vec), &(iter), \ + (bvl).bv_len) : bvec_iter_skip_zero_bvec(&(iter))) /* for iterating one bio from start to end */ #define BVEC_ITER_ALL_INIT (struct bvec_iter) \ --- linux-5.8.0.orig/include/linux/can/can-ml.h +++ linux-5.8.0/include/linux/can/can-ml.h @@ -44,6 +44,7 @@ #include #include +#include #define CAN_SFF_RCV_ARRAY_SZ (1 << CAN_SFF_ID_BITS) #define CAN_EFF_RCV_HASH_BITS 10 @@ -65,4 +66,15 @@ #endif }; +static inline struct can_ml_priv *can_get_ml_priv(struct net_device *dev) +{ + return netdev_get_ml_priv(dev, ML_PRIV_CAN); +} + +static inline void can_set_ml_priv(struct net_device *dev, + struct can_ml_priv *ml_priv) +{ + netdev_set_ml_priv(dev, ml_priv, ML_PRIV_CAN); +} + #endif /* CAN_ML_H */ --- linux-5.8.0.orig/include/linux/can/skb.h +++ linux-5.8.0/include/linux/can/skb.h @@ -49,8 +49,12 @@ static inline void can_skb_set_owner(struct sk_buff *skb, struct sock *sk) { - if (sk) { - sock_hold(sk); + /* If the socket has already been closed by user space, the + * refcount may already be 0 (and the socket will be freed + * after the last TX skb has been freed). So only increase + * socket refcount if the refcount is > 0. + */ + if (sk && refcount_inc_not_zero(&sk->sk_refcnt)) { skb->destructor = sock_efree; skb->sk = sk; } @@ -61,21 +65,17 @@ */ static inline struct sk_buff *can_create_echo_skb(struct sk_buff *skb) { - if (skb_shared(skb)) { - struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); + struct sk_buff *nskb; - if (likely(nskb)) { - can_skb_set_owner(nskb, skb->sk); - consume_skb(skb); - return nskb; - } else { - kfree_skb(skb); - return NULL; - } + nskb = skb_clone(skb, GFP_ATOMIC); + if (unlikely(!nskb)) { + kfree_skb(skb); + return NULL; } - /* we can assume to have an unshared skb with proper owner */ - return skb; + can_skb_set_owner(nskb, skb->sk); + consume_skb(skb); + return nskb; } #endif /* !_CAN_SKB_H */ --- linux-5.8.0.orig/include/linux/capability.h +++ linux-5.8.0/include/linux/capability.h @@ -264,6 +264,6 @@ /* audit system wants to get cap info from files as well */ extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); -extern int cap_convert_nscap(struct dentry *dentry, void **ivalue, size_t size); +extern int cap_convert_nscap(struct dentry *dentry, const void **ivalue, size_t size); #endif /* !_LINUX_CAPABILITY_H */ --- linux-5.8.0.orig/include/linux/compiler-clang.h +++ linux-5.8.0/include/linux/compiler-clang.h @@ -33,6 +33,12 @@ #define __no_sanitize_thread #endif +#if defined(CONFIG_ARCH_USE_BUILTIN_BSWAP) +#define __HAVE_BUILTIN_BSWAP32__ +#define __HAVE_BUILTIN_BSWAP64__ +#define __HAVE_BUILTIN_BSWAP16__ +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ + #if __has_feature(undefined_behavior_sanitizer) /* GCC does not have __SANITIZE_UNDEFINED__ */ #define __no_sanitize_undefined \ @@ -54,12 +60,6 @@ #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1 #endif -/* The following are for compatibility with GCC, from compiler-gcc.h, - * and may be redefined here because they should not be shared with other - * compilers, like ICC. - */ -#define barrier() __asm__ __volatile__("" : : : "memory") - #if __has_feature(shadow_call_stack) # define __noscs __attribute__((__no_sanitize__("shadow-call-stack"))) #endif --- linux-5.8.0.orig/include/linux/compiler-gcc.h +++ linux-5.8.0/include/linux/compiler-gcc.h @@ -13,26 +13,13 @@ /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */ #if GCC_VERSION < 40900 # error Sorry, your compiler is too old - please upgrade it. -#endif - -/* Optimization barrier */ - -/* The "volatile" is due to gcc bugs */ -#define barrier() __asm__ __volatile__("": : :"memory") +#elif defined(CONFIG_ARM64) && GCC_VERSION < 50100 /* - * This version is i.e. to prevent dead stores elimination on @ptr - * where gcc and llvm may behave differently when otherwise using - * normal barrier(): while gcc behavior gets along with a normal - * barrier(), llvm needs an explicit input variable to be assumed - * clobbered. The issue is as follows: while the inline asm might - * access any memory it wants, the compiler could have fit all of - * @ptr into memory registers instead, and since @ptr never escaped - * from that, it proved that the inline asm wasn't touching any of - * it. This version works well with both compilers, i.e. we're telling - * the compiler that the inline asm absolutely may see the contents - * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 + * https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk */ -#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") +# error Sorry, your version of GCC is too old - please use 5.1 or newer. +#endif /* * This macro obfuscates arithmetic on a variable address so that gcc @@ -181,5 +168,3 @@ #else #define __diag_GCC_8(s) #endif - -#define __no_fgcse __attribute__((optimize("-fno-gcse"))) --- linux-5.8.0.orig/include/linux/compiler.h +++ linux-5.8.0/include/linux/compiler.h @@ -80,11 +80,25 @@ /* Optimization barrier */ #ifndef barrier -# define barrier() __memory_barrier() +/* The "volatile" is due to gcc bugs */ +# define barrier() __asm__ __volatile__("": : :"memory") #endif #ifndef barrier_data -# define barrier_data(ptr) barrier() +/* + * This version is i.e. to prevent dead stores elimination on @ptr + * where gcc and llvm may behave differently when otherwise using + * normal barrier(): while gcc behavior gets along with a normal + * barrier(), llvm needs an explicit input variable to be assumed + * clobbered. The issue is as follows: while the inline asm might + * access any memory it wants, the compiler could have fit all of + * @ptr into memory registers instead, and since @ptr never escaped + * from that, it proved that the inline asm wasn't touching any of + * it. This version works well with both compilers, i.e. we're telling + * the compiler that the inline asm absolutely may see the contents + * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 + */ +# define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") #endif /* workaround for GCC PR82365 if needed */ --- linux-5.8.0.orig/include/linux/compiler_types.h +++ linux-5.8.0/include/linux/compiler_types.h @@ -241,10 +241,6 @@ #define asm_inline asm #endif -#ifndef __no_fgcse -# define __no_fgcse -#endif - /* Are two types/vars the same type (ignoring qualifiers)? */ #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) --- linux-5.8.0.orig/include/linux/cpufreq.h +++ linux-5.8.0/include/linux/cpufreq.h @@ -110,6 +110,12 @@ bool fast_switch_enabled; /* + * Set if the CPUFREQ_GOV_STRICT_TARGET flag is set for the current + * governor. + */ + bool strict_target; + + /* * Preferred average time interval between consecutive invocations of * the driver to set the frequency for this policy. To be set by the * scaling driver (0, which is the default, means no preference). @@ -293,7 +299,7 @@ struct cpufreq_driver { char name[CPUFREQ_NAME_LEN]; - u8 flags; + u16 flags; void *driver_data; /* needed by all drivers */ @@ -417,9 +423,18 @@ */ #define CPUFREQ_IS_COOLING_DEV BIT(7) +/* + * Set by drivers that need to update internale upper and lower boundaries along + * with the target frequency and so the core and governors should also invoke + * the diver if the target frequency does not change, but the policy min or max + * may have changed. + */ +#define CPUFREQ_NEED_UPDATE_LIMITS BIT(8) + int cpufreq_register_driver(struct cpufreq_driver *driver_data); int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); +bool cpufreq_driver_test_flags(u16 flags); const char *cpufreq_get_current_driver(void); void *cpufreq_get_driver_data(void); @@ -556,12 +571,20 @@ char *buf); int (*store_setspeed) (struct cpufreq_policy *policy, unsigned int freq); - /* For governors which change frequency dynamically by themselves */ - bool dynamic_switching; struct list_head governor_list; struct module *owner; + u8 flags; }; +/* Governor flags */ + +/* For governors which change frequency dynamically by themselves */ +#define CPUFREQ_GOV_DYNAMIC_SWITCHING BIT(0) + +/* For governors wanting the target frequency to be set exactly */ +#define CPUFREQ_GOV_STRICT_TARGET BIT(1) + + /* Pass a target to the cpufreq driver */ unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy, unsigned int target_freq); --- linux-5.8.0.orig/include/linux/cpuhotplug.h +++ linux-5.8.0/include/linux/cpuhotplug.h @@ -141,7 +141,6 @@ /* Must be the last timer callback */ CPUHP_AP_DUMMY_TIMER_STARTING, CPUHP_AP_ARM_XEN_STARTING, - CPUHP_AP_ARM_KVMPV_STARTING, CPUHP_AP_ARM_CORESIGHT_STARTING, CPUHP_AP_ARM_CORESIGHT_CTI_STARTING, CPUHP_AP_ARM64_ISNDEP_STARTING, --- linux-5.8.0.orig/include/linux/cred.h +++ linux-5.8.0/include/linux/cred.h @@ -18,6 +18,7 @@ struct cred; struct inode; +struct lsmblob; /* * COW Supplementary groups list @@ -165,7 +166,7 @@ extern void revert_creds(const struct cred *); extern struct cred *prepare_kernel_cred(struct task_struct *); extern int change_create_files_as(struct cred *, struct inode *); -extern int set_security_override(struct cred *, u32); +extern int set_security_override(struct cred *, struct lsmblob *); extern int set_security_override_from_ctx(struct cred *, const char *); extern int set_create_files_as(struct cred *, struct inode *); extern int cred_fscmp(const struct cred *, const struct cred *); --- linux-5.8.0.orig/include/linux/crypto.h +++ linux-5.8.0/include/linux/crypto.h @@ -120,9 +120,12 @@ * The macro CRYPTO_MINALIGN_ATTR (along with the void * type in the actual * declaration) is used to ensure that the crypto_tfm context structure is * aligned correctly for the given architecture so that there are no alignment - * faults for C data types. In particular, this is required on platforms such - * as arm where pointers are 32-bit aligned but there are data types such as - * u64 which require 64-bit alignment. + * faults for C data types. On architectures that support non-cache coherent + * DMA, such as ARM or arm64, it also takes into account the minimal alignment + * that is required to ensure that the context struct member does not share any + * cachelines with the rest of the struct. This is needed to ensure that cache + * maintenance for non-coherent DMA (cache invalidation in particular) does not + * affect data that may be accessed by the CPU concurrently. */ #define CRYPTO_MINALIGN ARCH_KMALLOC_MINALIGN --- linux-5.8.0.orig/include/linux/dax.h +++ linux-5.8.0/include/linux/dax.h @@ -58,6 +58,8 @@ { __set_dax_synchronous(dax_dev); } +bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev, + int blocksize, sector_t start, sector_t len); /* * Check if given mapping is supported by the file / underlying device. */ @@ -104,6 +106,12 @@ static inline void set_dax_synchronous(struct dax_device *dax_dev) { } +static inline bool dax_supported(struct dax_device *dax_dev, + struct block_device *bdev, int blocksize, sector_t start, + sector_t len) +{ + return false; +} static inline bool daxdev_mapping_supported(struct vm_area_struct *vma, struct dax_device *dax_dev) { @@ -189,14 +197,23 @@ } #endif +#if IS_ENABLED(CONFIG_DAX) int dax_read_lock(void); void dax_read_unlock(int id); +#else +static inline int dax_read_lock(void) +{ + return 0; +} + +static inline void dax_read_unlock(int id) +{ +} +#endif /* CONFIG_DAX */ bool dax_alive(struct dax_device *dax_dev); void *dax_get_private(struct dax_device *dax_dev); long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages, void **kaddr, pfn_t *pfn); -bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev, - int blocksize, sector_t start, sector_t len); size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, size_t bytes, struct iov_iter *i); size_t dax_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, --- linux-5.8.0.orig/include/linux/dcache.h +++ linux-5.8.0/include/linux/dcache.h @@ -213,7 +213,7 @@ #define DCACHE_MAY_FREE 0x00800000 #define DCACHE_FALLTHRU 0x01000000 /* Fall through to lower layer */ -#define DCACHE_ENCRYPTED_NAME 0x02000000 /* Encrypted name (dir key was unavailable) */ +#define DCACHE_NOKEY_NAME 0x02000000 /* Encrypted name encoded without key */ #define DCACHE_OP_REAL 0x04000000 #define DCACHE_PAR_LOOKUP 0x10000000 /* being looked up (with parent locked shared) */ --- linux-5.8.0.orig/include/linux/dev_printk.h +++ linux-5.8.0/include/linux/dev_printk.h @@ -23,6 +23,62 @@ #ifdef CONFIG_PRINTK +#if defined(__KMSG_CHECKER) && defined(KMSG_COMPONENT) + +/* generate magic string for scripts/kmsg-doc to parse */ +#define _dev_emerg(dev, format, arg...) \ + __KMSG_DEV(KERN_EMERG _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_alert(dev, format, arg...) \ + __KMSG_DEV(KERN_ALERT _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_crit(dev, format, arg...) \ + __KMSG_DEV(KERN_CRIT _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_err(dev, format, arg...) \ + __KMSG_DEV(KERN_ERR _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_warn(dev, format, arg...) \ + __KMSG_DEV(KERN_WARNING _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_notice(dev, format, arg...) \ + __KMSG_DEV(KERN_NOTICE _FMT_ format _ARGS_ dev, ## arg _END_) +#define _dev_info(dev, format, arg...) \ + __KMSG_DEV(KERN_INFO _FMT_ format _ARGS_ dev, ## arg _END_) + +#elif defined(CONFIG_KMSG_IDS) && defined(KMSG_COMPONENT) + +extern int dev_printk_hash(const char *level, const struct device *dev, + const char *fmt, ...); +extern __printf(2,3) +int dev_emerg_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int dev_alert_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int dev_crit_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int dev_err_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int dev_warn_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int dev_notice_hash(const struct device *dev, const char *fmt, ...); +extern __printf(2,3) +int _dev_info_hash(const struct device *dev, const char *fmt, ...); + +#define dev_printk(level, dev, format, arg...) \ + dev_printk_hash(level, dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_emerg(dev, format, arg...) \ + dev_emerg_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_alert(dev, format, arg...) \ + dev_alert_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_crit(dev, format, arg...) \ + dev_crit_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_err(dev, format, arg...) \ + dev_err_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_warn(dev, format, arg...) \ + dev_warn_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_notice(dev, format, arg...) \ + dev_notice_hash(dev, "%s: " format, dev_name(dev), ## arg) +#define _dev_info(dev, format, arg...) \ + _dev_info_hash(dev, "%s: " format, dev_name(dev), ## arg) + +#else /* !defined(CONFIG_KMSG_IDS) */ + __printf(3, 0) __cold int dev_vprintk_emit(int level, const struct device *dev, const char *fmt, va_list args); @@ -47,7 +103,9 @@ __printf(2, 3) __cold void _dev_info(const struct device *dev, const char *fmt, ...); -#else +#endif /* !defined(CONFIG_KMSG_IDS) */ + +#else /* !defined(CONFIG_PRINTK) */ static inline __printf(3, 0) int dev_vprintk_emit(int level, const struct device *dev, @@ -87,7 +145,7 @@ void _dev_info(const struct device *dev, const char *fmt, ...) {} -#endif +#endif /* !defined(CONFIG_PRINTK) */ /* * #defines for all the dev_ macros to prefix with whatever --- linux-5.8.0.orig/include/linux/device-mapper.h +++ linux-5.8.0/include/linux/device-mapper.h @@ -247,11 +247,24 @@ #define dm_target_passes_integrity(type) ((type)->features & DM_TARGET_PASSES_INTEGRITY) /* - * Indicates that a target supports host-managed zoned block devices. + * Indicates support for zoned block devices: + * - DM_TARGET_ZONED_HM: the target also supports host-managed zoned + * block devices but does not support combining different zoned models. + * - DM_TARGET_MIXED_ZONED_MODEL: the target supports combining multiple + * devices with different zoned models. */ #define DM_TARGET_ZONED_HM 0x00000040 #define dm_target_supports_zoned_hm(type) ((type)->features & DM_TARGET_ZONED_HM) +#ifdef CONFIG_BLK_DEV_ZONED +#define DM_TARGET_MIXED_ZONED_MODEL 0x00000200 +#define dm_target_supports_mixed_zoned_model(type) \ + ((type)->features & DM_TARGET_MIXED_ZONED_MODEL) +#else +#define DM_TARGET_MIXED_ZONED_MODEL 0x00000000 +#define dm_target_supports_mixed_zoned_model(type) (false) +#endif + struct dm_target { struct dm_table *table; struct target_type *type; @@ -320,6 +333,11 @@ * whether or not its underlying devices have support. */ bool discards_supported:1; + + /* + * Set if we need to limit the number of in-flight bios when swapping. + */ + bool limit_swap_bios:1; }; /* Each target can link one of these into the table */ --- linux-5.8.0.orig/include/linux/dm-bufio.h +++ linux-5.8.0/include/linux/dm-bufio.h @@ -150,6 +150,7 @@ unsigned dm_bufio_get_block_size(struct dm_bufio_client *c); sector_t dm_bufio_get_device_size(struct dm_bufio_client *c); +struct dm_io_client *dm_bufio_get_dm_io_client(struct dm_bufio_client *c); sector_t dm_bufio_get_block_number(struct dm_buffer *b); void *dm_bufio_get_block_data(struct dm_buffer *b); void *dm_bufio_get_aux_data(struct dm_buffer *b); --- linux-5.8.0.orig/include/linux/dma-direct.h +++ linux-5.8.0/include/linux/dma-direct.h @@ -67,9 +67,6 @@ } u64 dma_direct_get_required_mask(struct device *dev); -gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask, - u64 *phys_mask); -bool dma_coherent_ok(struct device *dev, phys_addr_t phys, size_t size); void *dma_direct_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs); void dma_direct_free(struct device *dev, size_t size, void *cpu_addr, --- linux-5.8.0.orig/include/linux/dma-mapping.h +++ linux-5.8.0/include/linux/dma-mapping.h @@ -715,8 +715,9 @@ pgprot_t prot, const void *caller); void dma_common_free_remap(void *cpu_addr, size_t size); -void *dma_alloc_from_pool(struct device *dev, size_t size, - struct page **ret_page, gfp_t flags); +struct page *dma_alloc_from_pool(struct device *dev, size_t size, + void **cpu_addr, gfp_t flags, + bool (*phys_addr_ok)(struct device *, phys_addr_t, size_t)); bool dma_free_from_pool(struct device *dev, void *start, size_t size); int --- linux-5.8.0.orig/include/linux/dmar.h +++ linux-5.8.0/include/linux/dmar.h @@ -48,6 +48,7 @@ u16 segment; /* PCI domain */ u8 ignored:1; /* ignore drhd */ u8 include_all:1; + u8 gfx_dedicated:1; /* graphic dedicated */ struct intel_iommu *iommu; }; --- linux-5.8.0.orig/include/linux/eeprom_93xx46.h +++ linux-5.8.0/include/linux/eeprom_93xx46.h @@ -16,6 +16,8 @@ #define EEPROM_93XX46_QUIRK_SINGLE_WORD_READ (1 << 0) /* Instructions such as EWEN are (addrlen + 2) in length. */ #define EEPROM_93XX46_QUIRK_INSTRUCTION_LENGTH (1 << 1) +/* Add extra cycle after address during a read */ +#define EEPROM_93XX46_QUIRK_EXTRA_READ_CYCLE BIT(2) /* * optional hooks to control additional logic --- linux-5.8.0.orig/include/linux/efi.h +++ linux-5.8.0/include/linux/efi.h @@ -43,6 +43,8 @@ #define EFI_ABORTED (21 | (1UL << (BITS_PER_LONG-1))) #define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) +#define EFI_IS_ERROR(x) ((x) & (1UL << (BITS_PER_LONG-1))) + typedef unsigned long efi_status_t; typedef u8 efi_bool_t; typedef u16 efi_char16_t; /* UNICODE character */ @@ -72,8 +74,10 @@ */ typedef guid_t efi_guid_t __aligned(__alignof__(u32)); -#define EFI_GUID(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \ - GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) +#define EFI_GUID(a, b, c, d...) (efi_guid_t){ { \ + (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \ + (b) & 0xff, ((b) >> 8) & 0xff, \ + (c) & 0xff, ((c) >> 8) & 0xff, d } } /* * Generic EFI table header @@ -606,7 +610,11 @@ extern void efi_map_pal_code (void); extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg); extern void efi_gettimeofday (struct timespec64 *ts); +#ifdef CONFIG_EFI extern void efi_enter_virtual_mode (void); /* switch EFI to virtual mode, if possible */ +#else +static inline void efi_enter_virtual_mode (void) {} +#endif #ifdef CONFIG_X86 extern efi_status_t efi_query_variable_store(u32 attributes, unsigned long size, @@ -779,6 +787,22 @@ #define EFI_MEM_ATTR 10 /* Did firmware publish an EFI_MEMORY_ATTRIBUTES table? */ #define EFI_MEM_NO_SOFT_RESERVE 11 /* Is the kernel configured to ignore soft reservations? */ #define EFI_PRESERVE_BS_REGIONS 12 /* Are EFI boot-services memory segments available? */ +#define EFI_SECURE_BOOT 13 /* Are we in Secure Boot mode? */ + +enum efi_secureboot_mode { + efi_secureboot_mode_unset, + efi_secureboot_mode_unknown, + efi_secureboot_mode_disabled, + efi_secureboot_mode_enabled, +}; + +#ifdef CONFIG_EFI_PARAMS_FROM_FDT +u32 __init efi_get__secure_boot(void); +#else +static inline u32 efi_get__secure_boot(void) { + return efi_secureboot_mode_unset; +}; +#endif #ifdef CONFIG_EFI /* @@ -790,6 +814,8 @@ } extern void efi_reboot(enum reboot_mode reboot_mode, const char *__unused); +extern void __init efi_set_secure_boot(enum efi_secureboot_mode mode); + bool __pure __efi_soft_reserve_enabled(void); static inline bool __pure efi_soft_reserve_enabled(void) @@ -816,6 +842,8 @@ return false; } +static inline void efi_set_secure_boot(enum efi_secureboot_mode mode) {} + static inline bool efi_soft_reserve_enabled(void) { return false; @@ -828,6 +856,7 @@ #endif extern int efi_status_to_err(efi_status_t status); +extern const char *efi_status_to_str(efi_status_t status); /* * Variable Attributes @@ -1087,12 +1116,6 @@ extern void efi_call_virt_check_flags(unsigned long flags, const char *call); extern unsigned long efi_call_virt_save_flags(void); -enum efi_secureboot_mode { - efi_secureboot_mode_unset, - efi_secureboot_mode_unknown, - efi_secureboot_mode_disabled, - efi_secureboot_mode_enabled, -}; enum efi_secureboot_mode efi_get_secureboot(void); #ifdef CONFIG_RESET_ATTACK_MITIGATION --- linux-5.8.0.orig/include/linux/efi_embedded_fw.h +++ linux-5.8.0/include/linux/efi_embedded_fw.h @@ -8,8 +8,8 @@ #define EFI_EMBEDDED_FW_PREFIX_LEN 8 /* - * This struct and efi_embedded_fw_list are private to the efi-embedded fw - * implementation they are in this header for use by lib/test_firmware.c only! + * This struct is private to the efi-embedded fw implementation. + * They are in this header for use by lib/test_firmware.c only! */ struct efi_embedded_fw { struct list_head list; @@ -18,8 +18,6 @@ size_t length; }; -extern struct list_head efi_embedded_fw_list; - /** * struct efi_embedded_fw_desc - This struct is used by the EFI embedded-fw * code to search for embedded firmwares. --- linux-5.8.0.orig/include/linux/elfcore.h +++ linux-5.8.0/include/linux/elfcore.h @@ -58,6 +58,7 @@ } #endif +#if defined(CONFIG_UM) || defined(CONFIG_IA64) /* * These functions parameterize elf_core_dump in fs/binfmt_elf.c to write out * extra segments containing the gate DSO contents. Dumping its @@ -72,5 +73,26 @@ extern int elf_core_write_extra_data(struct coredump_params *cprm); extern size_t elf_core_extra_data_size(void); +#else +static inline Elf_Half elf_core_extra_phdrs(void) +{ + return 0; +} + +static inline int elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset) +{ + return 1; +} + +static inline int elf_core_write_extra_data(struct coredump_params *cprm) +{ + return 1; +} + +static inline size_t elf_core_extra_data_size(void) +{ + return 0; +} +#endif #endif /* _LINUX_ELFCORE_H */ --- linux-5.8.0.orig/include/linux/eventpoll.h +++ linux-5.8.0/include/linux/eventpoll.h @@ -18,7 +18,7 @@ #ifdef CONFIG_EPOLL -#ifdef CONFIG_CHECKPOINT_RESTORE +#ifdef CONFIG_KCMP struct file *get_epoll_tfile_raw_ptr(struct file *file, int tfd, unsigned long toff); #endif --- linux-5.8.0.orig/include/linux/extcon.h +++ linux-5.8.0/include/linux/extcon.h @@ -271,6 +271,29 @@ struct extcon_dev *edev, unsigned int id, struct notifier_block *nb) { } +static inline int extcon_register_notifier_all(struct extcon_dev *edev, + struct notifier_block *nb) +{ + return 0; +} + +static inline int extcon_unregister_notifier_all(struct extcon_dev *edev, + struct notifier_block *nb) +{ + return 0; +} + +static inline int devm_extcon_register_notifier_all(struct device *dev, + struct extcon_dev *edev, + struct notifier_block *nb) +{ + return 0; +} + +static inline void devm_extcon_unregister_notifier_all(struct device *dev, + struct extcon_dev *edev, + struct notifier_block *nb) { } + static inline struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name) { return ERR_PTR(-ENODEV); --- linux-5.8.0.orig/include/linux/fb.h +++ linux-5.8.0/include/linux/fb.h @@ -400,8 +400,6 @@ #define FBINFO_HWACCEL_YPAN 0x2000 /* optional */ #define FBINFO_HWACCEL_YWRAP 0x4000 /* optional */ -#define FBINFO_MISC_USEREVENT 0x10000 /* event request - from userspace */ #define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */ /* A driver may set this flag to indicate that it does want a set_par to be --- linux-5.8.0.orig/include/linux/filter.h +++ linux-5.8.0/include/linux/filter.h @@ -877,7 +877,7 @@ u64 __bpf_call_base(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5); #define __bpf_call_base_args \ ((u64 (*)(u64, u64, u64, u64, u64, const struct bpf_insn *)) \ - __bpf_call_base) + (void *)__bpf_call_base) struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog); void bpf_jit_compile(struct bpf_prog *prog); --- linux-5.8.0.orig/include/linux/firmware/xlnx-zynqmp.h +++ linux-5.8.0/include/linux/firmware/xlnx-zynqmp.h @@ -50,10 +50,6 @@ #define ZYNQMP_PM_CAPABILITY_WAKEUP 0x4U #define ZYNQMP_PM_CAPABILITY_UNUSABLE 0x8U -/* Feature check status */ -#define PM_FEATURE_INVALID -1 -#define PM_FEATURE_UNCHECKED 0 - /* * Firmware FPGA Manager flags * XILINX_ZYNQMP_PM_FPGA_FULL: FPGA full reconfiguration --- linux-5.8.0.orig/include/linux/font.h +++ linux-5.8.0/include/linux/font.h @@ -59,4 +59,17 @@ /* Max. length for the name of a predefined font */ #define MAX_FONT_NAME 32 +/* Extra word getters */ +#define REFCOUNT(fd) (((int *)(fd))[-1]) +#define FNTSIZE(fd) (((int *)(fd))[-2]) +#define FNTCHARCNT(fd) (((int *)(fd))[-3]) +#define FNTSUM(fd) (((int *)(fd))[-4]) + +#define FONT_EXTRA_WORDS 4 + +struct font_data { + unsigned int extra[FONT_EXTRA_WORDS]; + const unsigned char data[]; +} __packed; + #endif /* _VIDEO_FONT_H */ --- linux-5.8.0.orig/include/linux/fs.h +++ linux-5.8.0/include/linux/fs.h @@ -549,6 +549,16 @@ up_read(&mapping->i_mmap_rwsem); } +static inline void i_mmap_assert_locked(struct address_space *mapping) +{ + lockdep_assert_held(&mapping->i_mmap_rwsem); +} + +static inline void i_mmap_assert_write_locked(struct address_space *mapping) +{ + lockdep_assert_held_write(&mapping->i_mmap_rwsem); +} + /* * Might pages of this file be mapped into userspace? */ @@ -1360,6 +1370,7 @@ /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); +extern int setfl(int fd, struct file *filp, unsigned long arg); extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); @@ -1413,6 +1424,7 @@ #define SB_I_USERNS_VISIBLE 0x00000010 /* fstype already mounted */ #define SB_I_IMA_UNVERIFIABLE_SIGNATURE 0x00000020 #define SB_I_UNTRUSTED_MOUNTER 0x00000040 +#define SB_I_NOSUID 0x80000000 /* Ignore suid on this fs */ #define SB_I_SKIP_SYNC 0x00000100 /* Skip superblock at global sync */ @@ -1848,6 +1860,7 @@ ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); + int (*setfl)(struct file *, unsigned long); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -1918,6 +1931,12 @@ struct iovec *fast_pointer, struct iovec **ret_pointer); +typedef ssize_t (*vfs_readf_t)(struct file *, char __user *, size_t, loff_t *); +typedef ssize_t (*vfs_writef_t)(struct file *, const char __user *, size_t, + loff_t *); +vfs_readf_t vfs_readf(struct file *file); +vfs_writef_t vfs_writef(struct file *file); + extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); extern ssize_t vfs_readv(struct file *, const struct iovec __user *, @@ -1977,6 +1996,10 @@ struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); +#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE) + /* and aufs */ + struct file *(*real_loop)(struct file *); +#endif }; /* @@ -2158,6 +2181,10 @@ * * I_DONTCACHE Evict inode as soon as it is not used anymore. * + * I_SYNC_QUEUED Inode is queued in b_io or b_more_io writeback lists. + * Used to detect that mark_inode_dirty() should not move + * inode between dirty lists. + * * Q: What is the difference between I_WILL_FREE and I_FREEING? */ #define I_DIRTY_SYNC (1 << 0) @@ -2175,12 +2202,11 @@ #define I_DIO_WAKEUP (1 << __I_DIO_WAKEUP) #define I_LINKABLE (1 << 10) #define I_DIRTY_TIME (1 << 11) -#define __I_DIRTY_TIME_EXPIRED 12 -#define I_DIRTY_TIME_EXPIRED (1 << __I_DIRTY_TIME_EXPIRED) #define I_WB_SWITCH (1 << 13) #define I_OVL_INUSE (1 << 14) #define I_CREATING (1 << 15) #define I_DONTCACHE (1 << 16) +#define I_SYNC_QUEUED (1 << 17) #define I_DIRTY_INODE (I_DIRTY_SYNC | I_DIRTY_DATASYNC) #define I_DIRTY (I_DIRTY_INODE | I_DIRTY_PAGES) @@ -2352,6 +2378,7 @@ extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); +extern int update_time(struct inode *, struct timespec64 *, int); /* /sys/fs */ extern struct kobject *fs_kobj; @@ -2633,6 +2660,7 @@ return false; } #endif +extern int __sync_filesystem(struct super_block *, int); extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; @@ -2996,8 +3024,6 @@ #define __kernel_read_file_id(id) \ id(UNKNOWN, unknown) \ id(FIRMWARE, firmware) \ - id(FIRMWARE_PREALLOC_BUFFER, firmware) \ - id(FIRMWARE_EFI_EMBEDDED, firmware) \ id(MODULE, kernel-module) \ id(KEXEC_IMAGE, kexec-image) \ id(KEXEC_INITRAMFS, kexec-initramfs) \ @@ -3060,8 +3086,7 @@ extern int generic_delete_inode(struct inode *inode); static inline int generic_drop_inode(struct inode *inode) { - return !inode->i_nlink || inode_unhashed(inode) || - (inode->i_state & I_DONTCACHE); + return !inode->i_nlink || inode_unhashed(inode); } extern void d_mark_dontcache(struct inode *inode); @@ -3624,6 +3649,7 @@ } extern bool path_noexec(const struct path *path); +extern bool path_nosuid(const struct path *path); extern void inode_nohighmem(struct inode *inode); /* mm/fadvise.c */ --- linux-5.8.0.orig/include/linux/fscrypt.h +++ linux-5.8.0/include/linux/fscrypt.h @@ -102,15 +102,44 @@ } /* - * When d_splice_alias() moves a directory's encrypted alias to its decrypted - * alias as a result of the encryption key being added, DCACHE_ENCRYPTED_NAME - * must be cleared. Note that we don't have to support arbitrary moves of this - * flag because fscrypt doesn't allow encrypted aliases to be the source or - * target of a rename(). + * When d_splice_alias() moves a directory's no-key alias to its plaintext alias + * as a result of the encryption key being added, DCACHE_NOKEY_NAME must be + * cleared. Note that we don't have to support arbitrary moves of this flag + * because fscrypt doesn't allow no-key names to be the source or target of a + * rename(). */ static inline void fscrypt_handle_d_move(struct dentry *dentry) { - dentry->d_flags &= ~DCACHE_ENCRYPTED_NAME; + dentry->d_flags &= ~DCACHE_NOKEY_NAME; +} + +/** + * fscrypt_is_nokey_name() - test whether a dentry is a no-key name + * @dentry: the dentry to check + * + * This returns true if the dentry is a no-key dentry. A no-key dentry is a + * dentry that was created in an encrypted directory that hasn't had its + * encryption key added yet. Such dentries may be either positive or negative. + * + * When a filesystem is asked to create a new filename in an encrypted directory + * and the new filename's dentry is a no-key dentry, it must fail the operation + * with ENOKEY. This includes ->create(), ->mkdir(), ->mknod(), ->symlink(), + * ->rename(), and ->link(). (However, ->rename() and ->link() are already + * handled by fscrypt_prepare_rename() and fscrypt_prepare_link().) + * + * This is necessary because creating a filename requires the directory's + * encryption key, but just checking for the key on the directory inode during + * the final filesystem operation doesn't guarantee that the key was available + * during the preceding dentry lookup. And the key must have already been + * available during the dentry lookup in order for it to have been checked + * whether the filename already exists in the directory and for the new file's + * dentry not to be invalidated due to it incorrectly having the no-key flag. + * + * Return: %true if the dentry is a no-key name + */ +static inline bool fscrypt_is_nokey_name(const struct dentry *dentry) +{ + return dentry->d_flags & DCACHE_NOKEY_NAME; } /* crypto.c */ @@ -251,6 +280,11 @@ { } +static inline bool fscrypt_is_nokey_name(const struct dentry *dentry) +{ + return false; +} + /* crypto.c */ static inline void fscrypt_enqueue_decrypt_work(struct work_struct *work) { --- linux-5.8.0.orig/include/linux/genhd.h +++ linux-5.8.0/include/linux/genhd.h @@ -316,7 +316,7 @@ extern void disk_block_events(struct gendisk *disk); extern void disk_unblock_events(struct gendisk *disk); extern void disk_flush_events(struct gendisk *disk, unsigned int mask); -extern void set_capacity_revalidate_and_notify(struct gendisk *disk, +extern bool set_capacity_revalidate_and_notify(struct gendisk *disk, sector_t size, bool revalidate); extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask); --- linux-5.8.0.orig/include/linux/gpio/consumer.h +++ linux-5.8.0/include/linux/gpio/consumer.h @@ -674,6 +674,8 @@ * get GpioIo type explicitly, this quirk may be used. */ #define ACPI_GPIO_QUIRK_ONLY_GPIOIO BIT(1) +/* Use given pin as an absolute GPIO number in the system */ +#define ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER BIT(2) unsigned int quirks; }; --- linux-5.8.0.orig/include/linux/gpio/driver.h +++ linux-5.8.0/include/linux/gpio/driver.h @@ -509,8 +509,16 @@ gpiochip_add_data_with_key(gc, data, &lock_key, \ &request_key); \ }) +#define devm_gpiochip_add_data(dev, gc, data) ({ \ + static struct lock_class_key lock_key; \ + static struct lock_class_key request_key; \ + devm_gpiochip_add_data_with_key(dev, gc, data, &lock_key, \ + &request_key); \ + }) #else #define gpiochip_add_data(gc, data) gpiochip_add_data_with_key(gc, data, NULL, NULL) +#define devm_gpiochip_add_data(dev, gc, data) \ + devm_gpiochip_add_data_with_key(dev, gc, data, NULL, NULL) #endif /* CONFIG_LOCKDEP */ static inline int gpiochip_add(struct gpio_chip *gc) @@ -518,8 +526,9 @@ return gpiochip_add_data(gc, NULL); } extern void gpiochip_remove(struct gpio_chip *gc); -extern int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *gc, - void *data); +extern int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc, void *data, + struct lock_class_key *lock_key, + struct lock_class_key *request_key); extern struct gpio_chip *gpiochip_find(void *data, int (*match)(struct gpio_chip *gc, void *data)); --- linux-5.8.0.orig/include/linux/gpio/regmap.h +++ linux-5.8.0/include/linux/gpio/regmap.h @@ -8,7 +8,7 @@ struct irq_domain; struct regmap; -#define GPIO_REGMAP_ADDR_ZERO ((unsigned long)(-1)) +#define GPIO_REGMAP_ADDR_ZERO ((unsigned int)(-1)) #define GPIO_REGMAP_ADDR(addr) ((addr) ? : GPIO_REGMAP_ADDR_ZERO) /** --- linux-5.8.0.orig/include/linux/hid.h +++ linux-5.8.0/include/linux/hid.h @@ -959,34 +959,49 @@ * @max: maximal valid usage->code to consider later (out parameter) * @type: input event type (EV_KEY, EV_REL, ...) * @c: code which corresponds to this usage and type + * + * The value pointed to by @bit will be set to NULL if either @type is + * an unhandled event type, or if @c is out of range for @type. This + * can be used as an error condition. */ static inline void hid_map_usage(struct hid_input *hidinput, struct hid_usage *usage, unsigned long **bit, int *max, - __u8 type, __u16 c) + __u8 type, unsigned int c) { struct input_dev *input = hidinput->input; - - usage->type = type; - usage->code = c; + unsigned long *bmap = NULL; + unsigned int limit = 0; switch (type) { case EV_ABS: - *bit = input->absbit; - *max = ABS_MAX; + bmap = input->absbit; + limit = ABS_MAX; break; case EV_REL: - *bit = input->relbit; - *max = REL_MAX; + bmap = input->relbit; + limit = REL_MAX; break; case EV_KEY: - *bit = input->keybit; - *max = KEY_MAX; + bmap = input->keybit; + limit = KEY_MAX; break; case EV_LED: - *bit = input->ledbit; - *max = LED_MAX; + bmap = input->ledbit; + limit = LED_MAX; break; } + + if (unlikely(c > limit || !bmap)) { + pr_warn_ratelimited("%s: Invalid code %d type %d\n", + input->name, c, type); + *bit = NULL; + return; + } + + usage->type = type; + usage->code = c; + *max = limit; + *bit = bmap; } /** @@ -1000,7 +1015,8 @@ __u8 type, __u16 c) { hid_map_usage(hidinput, usage, bit, max, type, c); - clear_bit(c, *bit); + if (*bit) + clear_bit(usage->code, *bit); } /** --- linux-5.8.0.orig/include/linux/hil_mlc.h +++ linux-5.8.0/include/linux/hil_mlc.h @@ -103,7 +103,7 @@ /* Methods for back-end drivers, e.g. hp_sdc_mlc */ typedef int (hil_mlc_cts) (hil_mlc *mlc); -typedef void (hil_mlc_out) (hil_mlc *mlc); +typedef int (hil_mlc_out) (hil_mlc *mlc); typedef int (hil_mlc_in) (hil_mlc *mlc, suseconds_t timeout); struct hil_mlc_devinfo { --- linux-5.8.0.orig/include/linux/huge_mm.h +++ linux-5.8.0/include/linux/huge_mm.h @@ -265,6 +265,19 @@ else return NULL; } + +/** + * thp_order - Order of a transparent huge page. + * @page: Head page of a transparent huge page. + */ +static inline unsigned int thp_order(struct page *page) +{ + VM_BUG_ON_PGFLAGS(PageTail(page), page); + if (PageHead(page)) + return HPAGE_PMD_ORDER; + return 0; +} + static inline int hpage_nr_pages(struct page *page) { if (unlikely(PageTransHuge(page))) @@ -324,6 +337,12 @@ #define HPAGE_PUD_MASK ({ BUILD_BUG(); 0; }) #define HPAGE_PUD_SIZE ({ BUILD_BUG(); 0; }) +static inline unsigned int thp_order(struct page *page) +{ + VM_BUG_ON_PGFLAGS(PageTail(page), page); + return 0; +} + static inline int hpage_nr_pages(struct page *page) { VM_BUG_ON_PAGE(PageTail(page), page); @@ -450,4 +469,15 @@ } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ +/** + * thp_size - Size of a transparent huge page. + * @page: Head page of a transparent huge page. + * + * Return: Number of bytes in this page. + */ +static inline unsigned long thp_size(struct page *page) +{ + return PAGE_SIZE << thp_order(page); +} + #endif /* _LINUX_HUGE_MM_H */ --- linux-5.8.0.orig/include/linux/hugetlb.h +++ linux-5.8.0/include/linux/hugetlb.h @@ -164,7 +164,8 @@ unsigned long addr, unsigned long sz); pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, unsigned long sz); -int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep); +int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma, + unsigned long *addr, pte_t *ptep); void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma, unsigned long *start, unsigned long *end); struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address, @@ -203,8 +204,9 @@ return NULL; } -static inline int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, - pte_t *ptep) +static inline int huge_pmd_unshare(struct mm_struct *mm, + struct vm_area_struct *vma, + unsigned long *addr, pte_t *ptep) { return 0; } @@ -749,6 +751,8 @@ } #endif +void set_page_huge_active(struct page *page); + #else /* CONFIG_HUGETLB_PAGE */ struct hstate {}; --- linux-5.8.0.orig/include/linux/hugetlb_cgroup.h +++ linux-5.8.0/include/linux/hugetlb_cgroup.h @@ -113,6 +113,11 @@ return !cgroup_subsys_enabled(hugetlb_cgrp_subsys); } +static inline void hugetlb_cgroup_put_rsvd_cgroup(struct hugetlb_cgroup *h_cg) +{ + css_put(&h_cg->css); +} + extern int hugetlb_cgroup_charge_cgroup(int idx, unsigned long nr_pages, struct hugetlb_cgroup **ptr); extern int hugetlb_cgroup_charge_cgroup_rsvd(int idx, unsigned long nr_pages, @@ -138,7 +143,8 @@ extern void hugetlb_cgroup_uncharge_file_region(struct resv_map *resv, struct file_region *rg, - unsigned long nr_pages); + unsigned long nr_pages, + bool region_del); extern void hugetlb_cgroup_file_init(void) __init; extern void hugetlb_cgroup_migrate(struct page *oldhpage, @@ -147,7 +153,8 @@ #else static inline void hugetlb_cgroup_uncharge_file_region(struct resv_map *resv, struct file_region *rg, - unsigned long nr_pages) + unsigned long nr_pages, + bool region_del) { } @@ -185,6 +192,10 @@ return true; } +static inline void hugetlb_cgroup_put_rsvd_cgroup(struct hugetlb_cgroup *h_cg) +{ +} + static inline int hugetlb_cgroup_charge_cgroup(int idx, unsigned long nr_pages, struct hugetlb_cgroup **ptr) { --- linux-5.8.0.orig/include/linux/i2c-algo-pca.h +++ linux-5.8.0/include/linux/i2c-algo-pca.h @@ -53,6 +53,20 @@ #define I2C_PCA_CON_SI 0x08 /* Serial Interrupt */ #define I2C_PCA_CON_CR 0x07 /* Clock Rate (MASK) */ +/** + * struct pca_i2c_bus_settings - The configured PCA i2c bus settings + * @mode: Configured i2c bus mode + * @tlow: Configured SCL LOW period + * @thi: Configured SCL HIGH period + * @clock_freq: The configured clock frequency + */ +struct pca_i2c_bus_settings { + int mode; + int tlow; + int thi; + int clock_freq; +}; + struct i2c_algo_pca_data { void *data; /* private low level data */ void (*write_byte) (void *data, int reg, int val); @@ -64,6 +78,7 @@ * For PCA9665, use the frequency you want here. */ unsigned int i2c_clock; unsigned int chip; + struct pca_i2c_bus_settings bus_settings; }; int i2c_pca_add_bus(struct i2c_adapter *); --- linux-5.8.0.orig/include/linux/icmpv6.h +++ linux-5.8.0/include/linux/icmpv6.h @@ -13,12 +13,32 @@ #include #if IS_ENABLED(CONFIG_IPV6) -extern void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info); typedef void ip6_icmp_send_t(struct sk_buff *skb, u8 type, u8 code, __u32 info, const struct in6_addr *force_saddr); +#if IS_BUILTIN(CONFIG_IPV6) +void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, + const struct in6_addr *force_saddr); +static inline void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info) +{ + icmp6_send(skb, type, code, info, NULL); +} +static inline int inet6_register_icmp_sender(ip6_icmp_send_t *fn) +{ + BUILD_BUG_ON(fn != icmp6_send); + return 0; +} +static inline int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn) +{ + BUILD_BUG_ON(fn != icmp6_send); + return 0; +} +#else +extern void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info); extern int inet6_register_icmp_sender(ip6_icmp_send_t *fn); extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); +#endif + int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, unsigned int data_len); --- linux-5.8.0.orig/include/linux/idr.h +++ linux-5.8.0/include/linux/idr.h @@ -171,7 +171,7 @@ */ static inline void idr_preload_end(void) { - local_unlock(&radix_tree_preloads.lock); + preempt_enable(); } /** --- linux-5.8.0.orig/include/linux/if_macvlan.h +++ linux-5.8.0/include/linux/if_macvlan.h @@ -42,13 +42,14 @@ if (likely(success)) { struct vlan_pcpu_stats *pcpu_stats; - pcpu_stats = this_cpu_ptr(vlan->pcpu_stats); + pcpu_stats = get_cpu_ptr(vlan->pcpu_stats); u64_stats_update_begin(&pcpu_stats->syncp); pcpu_stats->rx_packets++; pcpu_stats->rx_bytes += len; if (multicast) pcpu_stats->rx_multicast++; u64_stats_update_end(&pcpu_stats->syncp); + put_cpu_ptr(vlan->pcpu_stats); } else { this_cpu_inc(vlan->pcpu_stats->rx_errors); } --- linux-5.8.0.orig/include/linux/iio/adc/ad_sigma_delta.h +++ linux-5.8.0/include/linux/iio/adc/ad_sigma_delta.h @@ -79,8 +79,12 @@ /* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache lines. + * 'tx_buf' is up to 32 bits. + * 'rx_buf' is up to 32 bits per sample + 64 bit timestamp, + * rounded to 16 bytes to take into account padding. */ - uint8_t data[4] ____cacheline_aligned; + uint8_t tx_buf[4] ____cacheline_aligned; + uint8_t rx_buf[16] __aligned(8); }; static inline int ad_sigma_delta_set_channel(struct ad_sigma_delta *sd, --- linux-5.8.0.orig/include/linux/intel-iommu.h +++ linux-5.8.0/include/linux/intel-iommu.h @@ -381,8 +381,8 @@ #define QI_DEV_EIOTLB_ADDR(a) ((u64)(a) & VTD_PAGE_MASK) #define QI_DEV_EIOTLB_SIZE (((u64)1) << 11) -#define QI_DEV_EIOTLB_GLOB(g) ((u64)g) -#define QI_DEV_EIOTLB_PASID(p) (((u64)p) << 32) +#define QI_DEV_EIOTLB_GLOB(g) ((u64)(g) & 0x1) +#define QI_DEV_EIOTLB_PASID(p) ((u64)((p) & 0xfffff) << 32) #define QI_DEV_EIOTLB_SID(sid) ((u64)((sid) & 0xffff) << 16) #define QI_DEV_EIOTLB_QDEP(qd) ((u64)((qd) & 0x1f) << 4) #define QI_DEV_EIOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | \ @@ -600,6 +600,8 @@ struct iommu_device iommu; /* IOMMU core code handle */ int node; u32 flags; /* Software defined flags */ + + struct dmar_drhd_unit *drhd; }; /* PCI domain-device relationship */ @@ -746,6 +748,7 @@ struct list_head list; struct rcu_head rcu; struct device *dev; + struct intel_iommu *iommu; struct svm_dev_ops *ops; struct iommu_sva sva; int pasid; @@ -759,7 +762,6 @@ struct mmu_notifier notifier; struct mm_struct *mm; - struct intel_iommu *iommu; int flags; int pasid; int gpasid; /* In case that guest PASID is different from host PASID */ @@ -788,7 +790,7 @@ extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); extern int dmar_disabled; extern int intel_iommu_enabled; -extern int intel_iommu_tboot_noforce; +extern int intel_iommu_gfx_mapped; #else static inline int iommu_calculate_agaw(struct intel_iommu *iommu) { --- linux-5.8.0.orig/include/linux/io_uring.h +++ linux-5.8.0/include/linux/io_uring.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef _LINUX_IO_URING_H +#define _LINUX_IO_URING_H + +#include +#include +#include + +struct io_uring_task { + /* submission side */ + struct xarray xa; + struct wait_queue_head wait; + struct file *last; + atomic_long_t req_issue; + + /* completion side */ + bool in_idle ____cacheline_aligned_in_smp; + atomic_long_t req_complete; +}; + +#if defined(CONFIG_IO_URING) +void __io_uring_task_cancel(void); +void __io_uring_files_cancel(struct files_struct *files); +void __io_uring_free(struct task_struct *tsk); + +static inline void io_uring_task_cancel(void) +{ + if (current->io_uring && !xa_empty(¤t->io_uring->xa)) + __io_uring_task_cancel(); +} +static inline void io_uring_files_cancel(struct files_struct *files) +{ + if (current->io_uring && !xa_empty(¤t->io_uring->xa)) + __io_uring_files_cancel(files); +} +static inline void io_uring_free(struct task_struct *tsk) +{ + if (tsk->io_uring) + __io_uring_free(tsk); +} +#else +static inline void io_uring_task_cancel(void) +{ +} +static inline void io_uring_files_cancel(struct files_struct *files) +{ +} +static inline void io_uring_free(struct task_struct *tsk) +{ +} +#endif + +#endif --- linux-5.8.0.orig/include/linux/iommu.h +++ linux-5.8.0/include/linux/iommu.h @@ -175,7 +175,7 @@ * struct iommu_iotlb_gather - Range information for a pending IOTLB flush * * @start: IOVA representing the start of the range to be flushed - * @end: IOVA representing the end of the range to be flushed (exclusive) + * @end: IOVA representing the end of the range to be flushed (inclusive) * @pgsize: The interval at which to perform the flush * * This structure is intended to be updated by multiple calls to the @@ -555,7 +555,7 @@ struct iommu_iotlb_gather *gather, unsigned long iova, size_t size) { - unsigned long start = iova, end = start + size; + unsigned long start = iova, end = start + size - 1; /* * If the new page is disjoint from the current range or is mapped at @@ -633,7 +633,10 @@ static inline void *dev_iommu_priv_get(struct device *dev) { - return dev->iommu->priv; + if (dev->iommu) + return dev->iommu->priv; + else + return NULL; } static inline void dev_iommu_priv_set(struct device *dev, void *priv) --- linux-5.8.0.orig/include/linux/ipc_namespace.h +++ linux-5.8.0/include/linux/ipc_namespace.h @@ -121,6 +121,9 @@ static inline int mq_init_ns(struct ipc_namespace *ns) { return 0; } #endif +extern struct ipc_namespace *get_ipc_ns_exported(struct ipc_namespace *ns); +extern struct ipc_namespace *show_init_ipc_ns(void); + #if defined(CONFIG_IPC_NS) extern struct ipc_namespace *copy_ipcs(unsigned long flags, struct user_namespace *user_ns, struct ipc_namespace *ns); --- linux-5.8.0.orig/include/linux/irq.h +++ linux-5.8.0/include/linux/irq.h @@ -213,6 +213,8 @@ * required * IRQD_HANDLE_ENFORCE_IRQCTX - Enforce that handle_irq_*() is only invoked * from actual interrupt context. + * IRQD_AFFINITY_ON_ACTIVATE - Affinity is set on activation. Don't call + * irq_chip::irq_set_affinity() when deactivated. */ enum { IRQD_TRIGGER_MASK = 0xf, @@ -237,6 +239,7 @@ IRQD_CAN_RESERVE = (1 << 26), IRQD_MSI_NOMASK_QUIRK = (1 << 27), IRQD_HANDLE_ENFORCE_IRQCTX = (1 << 28), + IRQD_AFFINITY_ON_ACTIVATE = (1 << 29), }; #define __irqd_to_state(d) ACCESS_PRIVATE((d)->common, state_use_accessors) @@ -421,6 +424,16 @@ return __irqd_to_state(d) & IRQD_MSI_NOMASK_QUIRK; } +static inline void irqd_set_affinity_on_activate(struct irq_data *d) +{ + __irqd_to_state(d) |= IRQD_AFFINITY_ON_ACTIVATE; +} + +static inline bool irqd_affinity_on_activate(struct irq_data *d) +{ + return __irqd_to_state(d) & IRQD_AFFINITY_ON_ACTIVATE; +} + #undef __irqd_to_state static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d) @@ -895,7 +908,7 @@ __irq_alloc_descs(irq, from, cnt, node, THIS_MODULE, NULL) #define irq_alloc_desc(node) \ - irq_alloc_descs(-1, 0, 1, node) + irq_alloc_descs(-1, 1, 1, node) #define irq_alloc_desc_at(at, node) \ irq_alloc_descs(at, at, 1, node) @@ -910,7 +923,7 @@ __devm_irq_alloc_descs(dev, irq, from, cnt, node, THIS_MODULE, NULL) #define devm_irq_alloc_desc(dev, node) \ - devm_irq_alloc_descs(dev, -1, 0, 1, node) + devm_irq_alloc_descs(dev, -1, 1, 1, node) #define devm_irq_alloc_desc_at(dev, at, node) \ devm_irq_alloc_descs(dev, at, at, 1, node) --- linux-5.8.0.orig/include/linux/irqdomain.h +++ linux-5.8.0/include/linux/irqdomain.h @@ -383,11 +383,19 @@ extern void irq_domain_disassociate(struct irq_domain *domain, unsigned int irq); -extern unsigned int irq_create_mapping(struct irq_domain *host, - irq_hw_number_t hwirq); +extern unsigned int irq_create_mapping_affinity(struct irq_domain *host, + irq_hw_number_t hwirq, + const struct irq_affinity_desc *affinity); extern unsigned int irq_create_fwspec_mapping(struct irq_fwspec *fwspec); extern void irq_dispose_mapping(unsigned int virq); +static inline unsigned int irq_create_mapping(struct irq_domain *host, + irq_hw_number_t hwirq) +{ + return irq_create_mapping_affinity(host, hwirq, NULL); +} + + /** * irq_linear_revmap() - Find a linux irq from a hw irq number. * @domain: domain owning this hardware interrupt --- linux-5.8.0.orig/include/linux/kdev_t.h +++ linux-5.8.0/include/linux/kdev_t.h @@ -21,61 +21,61 @@ }) /* acceptable for old filesystems */ -static inline bool old_valid_dev(dev_t dev) +static __always_inline bool old_valid_dev(dev_t dev) { return MAJOR(dev) < 256 && MINOR(dev) < 256; } -static inline u16 old_encode_dev(dev_t dev) +static __always_inline u16 old_encode_dev(dev_t dev) { return (MAJOR(dev) << 8) | MINOR(dev); } -static inline dev_t old_decode_dev(u16 val) +static __always_inline dev_t old_decode_dev(u16 val) { return MKDEV((val >> 8) & 255, val & 255); } -static inline u32 new_encode_dev(dev_t dev) +static __always_inline u32 new_encode_dev(dev_t dev) { unsigned major = MAJOR(dev); unsigned minor = MINOR(dev); return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } -static inline dev_t new_decode_dev(u32 dev) +static __always_inline dev_t new_decode_dev(u32 dev) { unsigned major = (dev & 0xfff00) >> 8; unsigned minor = (dev & 0xff) | ((dev >> 12) & 0xfff00); return MKDEV(major, minor); } -static inline u64 huge_encode_dev(dev_t dev) +static __always_inline u64 huge_encode_dev(dev_t dev) { return new_encode_dev(dev); } -static inline dev_t huge_decode_dev(u64 dev) +static __always_inline dev_t huge_decode_dev(u64 dev) { return new_decode_dev(dev); } -static inline int sysv_valid_dev(dev_t dev) +static __always_inline int sysv_valid_dev(dev_t dev) { return MAJOR(dev) < (1<<14) && MINOR(dev) < (1<<18); } -static inline u32 sysv_encode_dev(dev_t dev) +static __always_inline u32 sysv_encode_dev(dev_t dev) { return MINOR(dev) | (MAJOR(dev) << 18); } -static inline unsigned sysv_major(u32 dev) +static __always_inline unsigned sysv_major(u32 dev) { return (dev >> 18) & 0x3fff; } -static inline unsigned sysv_minor(u32 dev) +static __always_inline unsigned sysv_minor(u32 dev) { return dev & 0x3ffff; } --- linux-5.8.0.orig/include/linux/kexec.h +++ linux-5.8.0/include/linux/kexec.h @@ -293,6 +293,11 @@ /* Information for loading purgatory */ struct purgatory_info purgatory_info; #endif + +#ifdef CONFIG_IMA_KEXEC + /* Virtual address of IMA measurement buffer for kexec syscall */ + void *ima_buffer; +#endif }; /* kexec interface functions */ --- linux-5.8.0.orig/include/linux/key.h +++ linux-5.8.0/include/linux/key.h @@ -289,6 +289,7 @@ #define KEY_ALLOC_BUILT_IN 0x0004 /* Key is built into kernel */ #define KEY_ALLOC_BYPASS_RESTRICTION 0x0008 /* Override the check on restricted keyrings */ #define KEY_ALLOC_UID_KEYRING 0x0010 /* allocating a user or user session keyring */ +#define KEY_ALLOC_SET_KEEP 0x0020 /* Set the KEEP flag on the key/keyring */ extern void key_revoke(struct key *key); extern void key_invalidate(struct key *key); --- linux-5.8.0.orig/include/linux/kgdb.h +++ linux-5.8.0/include/linux/kgdb.h @@ -342,9 +342,11 @@ extern bool dbg_is_early; extern void __init dbg_late_init(void); extern void kgdb_panic(const char *msg); +extern void kgdb_free_init_mem(void); #else /* ! CONFIG_KGDB */ #define in_dbg_master() (0) #define dbg_late_init() static inline void kgdb_panic(const char *msg) {} +static inline void kgdb_free_init_mem(void) { } #endif /* ! CONFIG_KGDB */ #endif /* _KGDB_H_ */ --- linux-5.8.0.orig/include/linux/khugepaged.h +++ linux-5.8.0/include/linux/khugepaged.h @@ -3,6 +3,7 @@ #define _LINUX_KHUGEPAGED_H #include /* MMF_VM_HUGEPAGE */ +#include #ifdef CONFIG_TRANSPARENT_HUGEPAGE @@ -15,6 +16,7 @@ extern void __khugepaged_exit(struct mm_struct *mm); extern int khugepaged_enter_vma_merge(struct vm_area_struct *vma, unsigned long vm_flags); +extern void khugepaged_min_free_kbytes_update(void); #ifdef CONFIG_SHMEM extern void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr); #else @@ -56,6 +58,7 @@ { if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags)) if ((khugepaged_always() || + (shmem_file(vma->vm_file) && shmem_huge_enabled(vma)) || (khugepaged_req_madv() && (vm_flags & VM_HUGEPAGE))) && !(vm_flags & VM_NOHUGEPAGE) && !test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags)) @@ -85,6 +88,10 @@ unsigned long addr) { } + +static inline void khugepaged_min_free_kbytes_update(void) +{ +} #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ #endif /* _LINUX_KHUGEPAGED_H */ --- linux-5.8.0.orig/include/linux/kprobes.h +++ linux-5.8.0/include/linux/kprobes.h @@ -232,7 +232,7 @@ extern bool arch_within_kprobe_blacklist(unsigned long addr); extern int arch_populate_kprobe_blacklist(void); extern bool arch_kprobe_on_func_entry(unsigned long offset); -extern bool kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset); +extern int kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset); extern bool within_kprobe_blacklist(unsigned long addr); extern int kprobe_add_ksym_blacklist(unsigned long entry); @@ -369,6 +369,8 @@ void kprobe_flush_task(struct task_struct *tk); void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head); +void kprobe_free_init_mem(void); + int disable_kprobe(struct kprobe *kp); int enable_kprobe(struct kprobe *kp); @@ -426,6 +428,9 @@ static inline void kprobe_flush_task(struct task_struct *tk) { } +static inline void kprobe_free_init_mem(void) +{ +} static inline int disable_kprobe(struct kprobe *kp) { return -ENOSYS; --- linux-5.8.0.orig/include/linux/kthread.h +++ linux-5.8.0/include/linux/kthread.h @@ -33,6 +33,9 @@ unsigned int cpu, const char *namefmt); +void kthread_set_per_cpu(struct task_struct *k, int cpu); +bool kthread_is_per_cpu(struct task_struct *k); + /** * kthread_run - create and wake a thread. * @threadfn: the function to run until signal_pending(current). --- linux-5.8.0.orig/include/linux/libata.h +++ linux-5.8.0/include/linux/libata.h @@ -421,6 +421,7 @@ ATA_HORKAGE_NO_DMA_LOG = (1 << 23), /* don't use DMA for log read */ ATA_HORKAGE_NOTRIM = (1 << 24), /* don't use TRIM */ ATA_HORKAGE_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */ + ATA_HORKAGE_MAX_TRIM_128M = (1 << 26), /* Limit max trim size to 128M */ /* DMA mask for user DMA control: User visible values; DO NOT renumber */ --- linux-5.8.0.orig/include/linux/libnvdimm.h +++ linux-5.8.0/include/linux/libnvdimm.h @@ -78,6 +78,8 @@ const struct attribute_group **attr_groups; unsigned long bus_dsm_mask; unsigned long cmd_mask; + unsigned long dimm_family_mask; + unsigned long bus_family_mask; struct module *module; char *provider_name; struct device_node *of_node; --- linux-5.8.0.orig/include/linux/linkage.h +++ linux-5.8.0/include/linux/linkage.h @@ -178,6 +178,11 @@ * Objtool generates debug info for both FUNC & CODE, but needs special * annotations for each CODE's start (to describe the actual stack frame). * + * Objtool requires that all code must be contained in an ELF symbol. Symbol + * names that have a .L prefix do not emit symbol table entries. .L + * prefixed symbols can be used within a code region, but should be avoided for + * denoting a range of code via ``SYM_*_START/END`` annotations. + * * ALIAS -- does not generate debug info -- the aliased function will */ --- linux-5.8.0.orig/include/linux/lockdep.h +++ linux-5.8.0/include/linux/lockdep.h @@ -395,6 +395,8 @@ return lock->key == key; } +struct lock_class *lockdep_hlock_class(struct held_lock *hlock); + /* * Acquire a lock. * @@ -540,6 +542,7 @@ #define lockdep_depth(tsk) (0) +#define lockdep_is_held(lock) (1) #define lockdep_is_held_type(l, r) (1) #define lockdep_assert_held(l) do { (void)(l); } while (0) --- linux-5.8.0.orig/include/linux/log2.h +++ linux-5.8.0/include/linux/log2.h @@ -173,7 +173,7 @@ #define roundup_pow_of_two(n) \ ( \ __builtin_constant_p(n) ? ( \ - (n == 1) ? 1 : \ + ((n) == 1) ? 1 : \ (1UL << (ilog2((n) - 1) + 1)) \ ) : \ __roundup_pow_of_two(n) \ --- linux-5.8.0.orig/include/linux/lsm_hook_defs.h +++ linux-5.8.0/include/linux/lsm_hook_defs.h @@ -383,6 +383,8 @@ #endif /* CONFIG_BPF_SYSCALL */ LSM_HOOK(int, 0, locked_down, enum lockdown_reason what) +LSM_HOOK(int, 0, lock_kernel_down, const char *where, enum lockdown_reason level) + #ifdef CONFIG_PERF_EVENTS LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type) --- linux-5.8.0.orig/include/linux/lsm_hooks.h +++ linux-5.8.0/include/linux/lsm_hooks.h @@ -1359,6 +1359,12 @@ * @pages contains the number of pages. * Return 0 if permission is granted. * + * @getprocattr: + * Provide the named process attribute for display in special files in + * the /proc/.../attr directory. Attribute naming and the data displayed + * is at the discretion of the security modules. The exception is the + * "context" attribute, which will contain the security context of the + * task as a nul terminated text string without trailing whitespace. * @ismaclabel: * Check if the extended attribute specified by @name * represents a MAC label. Returns 1 if name is a MAC @@ -1507,6 +1513,12 @@ * * @what: kernel feature being accessed * + * @lock_kernel_down + * Put the kernel into lock-down mode. + * + * @where: Where the lock-down is originating from (e.g. command line option) + * @level: The lock-down level (can only increase) + * * Security hooks for perf events * * @perf_event_open: @@ -1533,6 +1545,14 @@ } __randomize_layout; /* + * Information that identifies a security module. + */ +struct lsm_id { + const char *lsm; /* Name of the LSM */ + int slot; /* Slot in lsmblob if one is allocated */ +}; + +/* * Security module hook list structure. * For use with generic list macros for common operations. */ @@ -1540,7 +1560,7 @@ struct hlist_node list; struct hlist_head *head; union security_list_options hook; - char *lsm; + struct lsm_id *lsmid; } __randomize_layout; /* @@ -1550,6 +1570,7 @@ int lbs_cred; int lbs_file; int lbs_inode; + int lbs_sock; int lbs_ipc; int lbs_msg_msg; int lbs_task; @@ -1574,7 +1595,7 @@ extern char *lsm_names; extern void security_add_hooks(struct security_hook_list *hooks, int count, - char *lsm); + struct lsm_id *lsmid); #define LSM_FLAG_LEGACY_MAJOR BIT(0) #define LSM_FLAG_EXCLUSIVE BIT(1) @@ -1638,4 +1659,21 @@ extern int lsm_inode_alloc(struct inode *inode); +/** + * lsm_task_display - the "display" LSM for this task + * @task: The task to report on + * + * Returns the task's display LSM slot. + */ +static inline int lsm_task_display(struct task_struct *task) +{ +#ifdef CONFIG_SECURITY + int *display = task->security; + + if (display) + return *display; +#endif + return LSMBLOB_INVALID; +} + #endif /* ! __LINUX_LSM_HOOKS_H */ --- linux-5.8.0.orig/include/linux/mailbox/mtk-cmdq-mailbox.h +++ linux-5.8.0/include/linux/mailbox/mtk-cmdq-mailbox.h @@ -27,8 +27,7 @@ * bit 16-27: update value * bit 31: 1 - update, 0 - no update */ -#define CMDQ_WFE_OPTION (CMDQ_WFE_UPDATE | CMDQ_WFE_WAIT | \ - CMDQ_WFE_WAIT_VALUE) +#define CMDQ_WFE_OPTION (CMDQ_WFE_WAIT | CMDQ_WFE_WAIT_VALUE) /** cmdq event maximum */ #define CMDQ_MAX_EVENT 0x3ff --- linux-5.8.0.orig/include/linux/memcontrol.h +++ linux-5.8.0/include/linux/memcontrol.h @@ -764,12 +764,19 @@ static inline void memcg_memory_event(struct mem_cgroup *memcg, enum memcg_memory_event event) { + bool swap_event = event == MEMCG_SWAP_HIGH || event == MEMCG_SWAP_MAX || + event == MEMCG_SWAP_FAIL; + atomic_long_inc(&memcg->memory_events_local[event]); - cgroup_file_notify(&memcg->events_local_file); + if (!swap_event) + cgroup_file_notify(&memcg->events_local_file); do { atomic_long_inc(&memcg->memory_events[event]); - cgroup_file_notify(&memcg->events_file); + if (swap_event) + cgroup_file_notify(&memcg->swap_events_file); + else + cgroup_file_notify(&memcg->events_file); if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) break; --- linux-5.8.0.orig/include/linux/memory.h +++ linux-5.8.0/include/linux/memory.h @@ -27,9 +27,8 @@ unsigned long start_section_nr; unsigned long state; /* serialized by the dev->lock */ int online_type; /* for passing data to online routine */ - int phys_device; /* to which fru does this belong? */ - struct device dev; int nid; /* NID for this memory block */ + struct device dev; }; int arch_get_memory_phys_device(unsigned long start_pfn); --- linux-5.8.0.orig/include/linux/memory_hotplug.h +++ linux-5.8.0/include/linux/memory_hotplug.h @@ -235,6 +235,11 @@ void mem_hotplug_begin(void); void mem_hotplug_done(void); +extern void set_zone_contiguous(struct zone *zone); +extern void clear_zone_contiguous(struct zone *zone); + +void set_default_mem_hotplug_zone(enum zone_type zone); + #else /* ! CONFIG_MEMORY_HOTPLUG */ #define pfn_to_online_page(pfn) \ ({ \ @@ -278,6 +283,8 @@ static inline void mem_hotplug_begin(void) {} static inline void mem_hotplug_done(void) {} +static inline void set_default_mem_hotplug_zone(enum zone_type zone) {} + static inline bool movable_node_is_enabled(void) { return false; --- linux-5.8.0.orig/include/linux/memstick.h +++ linux-5.8.0/include/linux/memstick.h @@ -281,6 +281,7 @@ struct memstick_dev *card; unsigned int retries; + bool removing; /* Notify the host that some requests are pending. */ void (*request)(struct memstick_host *host); --- linux-5.8.0.orig/include/linux/mfd/rohm-generic.h +++ linux-5.8.0/include/linux/mfd/rohm-generic.h @@ -20,14 +20,12 @@ struct regmap *regmap; }; -enum { - ROHM_DVS_LEVEL_UNKNOWN, - ROHM_DVS_LEVEL_RUN, - ROHM_DVS_LEVEL_IDLE, - ROHM_DVS_LEVEL_SUSPEND, - ROHM_DVS_LEVEL_LPSR, - ROHM_DVS_LEVEL_MAX = ROHM_DVS_LEVEL_LPSR, -}; +#define ROHM_DVS_LEVEL_RUN BIT(0) +#define ROHM_DVS_LEVEL_IDLE BIT(1) +#define ROHM_DVS_LEVEL_SUSPEND BIT(2) +#define ROHM_DVS_LEVEL_LPSR BIT(3) +#define ROHM_DVS_LEVEL_VALID_AMOUNT 4 +#define ROHM_DVS_LEVEL_UNKNOWN 0 /** * struct rohm_dvs_config - dynamic voltage scaling register descriptions --- linux-5.8.0.orig/include/linux/mlx5/device.h +++ linux-5.8.0/include/linux/mlx5/device.h @@ -458,6 +458,15 @@ MLX5_OPC_MOD_TLS_TIR_PROGRESS_PARAMS = 0x2, }; +struct mlx5_wqe_tls_static_params_seg { + u8 ctx[MLX5_ST_SZ_BYTES(tls_static_params)]; +}; + +struct mlx5_wqe_tls_progress_params_seg { + __be32 tis_tir_num; + u8 ctx[MLX5_ST_SZ_BYTES(tls_progress_params)]; +}; + enum { MLX5_SET_PORT_RESET_QKEY = 0, MLX5_SET_PORT_GUID0 = 16, --- linux-5.8.0.orig/include/linux/mlx5/driver.h +++ linux-5.8.0/include/linux/mlx5/driver.h @@ -764,6 +764,8 @@ u64 ts2; u16 op; bool polling; + /* Track the max comp handlers */ + refcount_t refcnt; }; struct mlx5_pas { --- linux-5.8.0.orig/include/linux/mlx5/mlx5_ifc.h +++ linux-5.8.0/include/linux/mlx5/mlx5_ifc.h @@ -1194,6 +1194,11 @@ #define MLX5_FC_BULK_NUM_FCS(fc_enum) (MLX5_FC_BULK_SIZE_FACTOR * (fc_enum)) +enum { + MLX5_STEERING_FORMAT_CONNECTX_5 = 0, + MLX5_STEERING_FORMAT_CONNECTX_6DX = 1, +}; + struct mlx5_ifc_cmd_hca_cap_bits { u8 reserved_at_0[0x30]; u8 vhca_id[0x10]; @@ -1212,7 +1217,9 @@ u8 ece_support[0x1]; u8 reserved_at_a4[0x7]; u8 log_max_srq[0x5]; - u8 reserved_at_b0[0x10]; + u8 reserved_at_b0[0x1]; + u8 uplink_follow[0x1]; + u8 reserved_at_b2[0xe]; u8 max_sgl_for_optimized_performance[0x8]; u8 log_max_cq_sz[0x8]; @@ -1484,7 +1491,9 @@ u8 general_obj_types[0x40]; - u8 reserved_at_440[0x20]; + u8 reserved_at_440[0x4]; + u8 steering_format_version[0x4]; + u8 create_qp_start_hint[0x18]; u8 reserved_at_460[0x3]; u8 log_max_uctx[0x5]; @@ -10669,16 +10678,13 @@ }; struct mlx5_ifc_tls_progress_params_bits { - u8 reserved_at_0[0x8]; - u8 tisn[0x18]; - u8 next_record_tcp_sn[0x20]; u8 hw_resync_tcp_sn[0x20]; u8 record_tracker_state[0x2]; u8 auth_state[0x2]; - u8 reserved_at_64[0x4]; + u8 reserved_at_44[0x4]; u8 hw_offset_record_number[0x18]; }; --- linux-5.8.0.orig/include/linux/mlx5/qp.h +++ linux-5.8.0/include/linux/mlx5/qp.h @@ -209,7 +209,7 @@ __be32 general_id; __be32 imm; __be32 umr_mkey; - __be32 tisn; + __be32 tis_tir_num; }; }; --- linux-5.8.0.orig/include/linux/mm.h +++ linux-5.8.0/include/linux/mm.h @@ -1388,13 +1388,26 @@ #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_KASAN_SW_TAGS + +/* + * KASAN per-page tags are stored xor'ed with 0xff. This allows to avoid + * setting tags for all pages to native kernel tag value 0xff, as the default + * value 0x00 maps to 0xff. + */ + static inline u8 page_kasan_tag(const struct page *page) { - return (page->flags >> KASAN_TAG_PGSHIFT) & KASAN_TAG_MASK; + u8 tag; + + tag = (page->flags >> KASAN_TAG_PGSHIFT) & KASAN_TAG_MASK; + tag ^= 0xff; + + return tag; } static inline void page_kasan_tag_set(struct page *page, u8 tag) { + tag ^= 0xff; page->flags &= ~(KASAN_TAG_MASK << KASAN_TAG_PGSHIFT); page->flags |= (tag & KASAN_TAG_MASK) << KASAN_TAG_PGSHIFT; } @@ -1628,9 +1641,11 @@ unsigned long end, unsigned long floor, unsigned long ceiling); int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma); -int follow_pte_pmd(struct mm_struct *mm, unsigned long address, - struct mmu_notifier_range *range, - pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp); +int follow_invalidate_pte(struct mm_struct *mm, unsigned long address, + struct mmu_notifier_range *range, pte_t **ptepp, + pmd_t **pmdpp, spinlock_t **ptlp); +int follow_pte(struct mm_struct *mm, unsigned long address, + pte_t **ptepp, spinlock_t **ptlp); int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn); int follow_phys(struct vm_area_struct *vma, unsigned long address, @@ -1684,6 +1699,28 @@ unmap_mapping_range(mapping, holebegin, holelen, 0); } +extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); +extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], + int); +extern void vma_do_get_file(struct vm_area_struct *, const char[], int); +extern void vma_do_fput(struct vm_area_struct *, const char[], int); + +#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ + __LINE__) +#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ + __LINE__) +#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) +#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) + +#ifndef CONFIG_MMU +extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); +extern void vmr_do_fput(struct vm_region *, const char[], int); + +#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ + __LINE__) +#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) +#endif /* !CONFIG_MMU */ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, @@ -2444,8 +2481,9 @@ #endif extern void set_dma_reserve(unsigned long new_dma_reserve); -extern void memmap_init_zone(unsigned long, int, unsigned long, unsigned long, - enum memmap_context, struct vmem_altmap *); +extern void memmap_init_zone(unsigned long, int, unsigned long, + unsigned long, unsigned long, enum meminit_context, + struct vmem_altmap *); extern void setup_per_zone_wmarks(void); extern int __meminit init_per_zone_wmark_min(void); extern void mem_init(void); @@ -2774,6 +2812,15 @@ return VM_FAULT_NOPAGE; } +#ifndef io_remap_pfn_range +static inline int io_remap_pfn_range(struct vm_area_struct *vma, + unsigned long addr, unsigned long pfn, + unsigned long size, pgprot_t prot) +{ + return remap_pfn_range(vma, addr, pfn, size, pgprot_decrypted(prot)); +} +#endif + static inline vm_fault_t vmf_error(int err) { if (err == -ENOMEM) --- linux-5.8.0.orig/include/linux/mm_types.h +++ linux-5.8.0/include/linux/mm_types.h @@ -276,6 +276,7 @@ unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ + struct file *vm_prfile; /* the virtual backing file or NULL */ int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for @@ -355,6 +356,7 @@ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ + struct file *vm_prfile; /* shadow of vm_file */ void * vm_private_data; /* was vm_pte (shared mem) */ #ifdef CONFIG_SWAP --- linux-5.8.0.orig/include/linux/mmu_notifier.h +++ linux-5.8.0/include/linux/mmu_notifier.h @@ -164,11 +164,11 @@ * the last refcount is dropped. * * If blockable argument is set to false then the callback cannot - * sleep and has to return with -EAGAIN. 0 should be returned - * otherwise. Please note that if invalidate_range_start approves - * a non-blocking behavior then the same applies to - * invalidate_range_end. - * + * sleep and has to return with -EAGAIN if sleeping would be required. + * 0 should be returned otherwise. Please note that notifiers that can + * fail invalidate_range_start are not allowed to implement + * invalidate_range_end, as there is no mechanism for informing the + * notifier that its start failed. */ int (*invalidate_range_start)(struct mmu_notifier *subscription, const struct mmu_notifier_range *range); --- linux-5.8.0.orig/include/linux/mmzone.h +++ linux-5.8.0/include/linux/mmzone.h @@ -328,26 +328,6 @@ * DMA mask is assumed when ZONE_DMA32 is defined. Some 64-bit * platforms may need both zones as they support peripherals with * different DMA addressing limitations. - * - * Some examples: - * - * - i386 and x86_64 have a fixed 16M ZONE_DMA and ZONE_DMA32 for the - * rest of the lower 4G. - * - * - arm only uses ZONE_DMA, the size, up to 4G, may vary depending on - * the specific device. - * - * - arm64 has a fixed 1G ZONE_DMA and ZONE_DMA32 for the rest of the - * lower 4G. - * - * - powerpc only uses ZONE_DMA, the size, up to 2G, may vary - * depending on the specific device. - * - * - s390 uses ZONE_DMA fixed to the lower 2G. - * - * - ia64 and riscv only use ZONE_DMA32. - * - * - parisc uses neither. */ #ifdef CONFIG_ZONE_DMA ZONE_DMA, @@ -799,10 +779,15 @@ unsigned int alloc_flags); bool zone_watermark_ok_safe(struct zone *z, unsigned int order, unsigned long mark, int highest_zoneidx); -enum memmap_context { - MEMMAP_EARLY, - MEMMAP_HOTPLUG, +/* + * Memory initialization context, use to differentiate memory added by + * the platform statically or via memory hotplug interface. + */ +enum meminit_context { + MEMINIT_EARLY, + MEMINIT_HOTPLUG, }; + extern void init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, unsigned long size); --- linux-5.8.0.orig/include/linux/mnt_namespace.h +++ linux-5.8.0/include/linux/mnt_namespace.h @@ -7,12 +7,15 @@ struct fs_struct; struct user_namespace; struct ns_common; +struct vfsmount; extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, struct user_namespace *, struct fs_struct *); extern void put_mnt_ns(struct mnt_namespace *ns); extern struct ns_common *from_mnt_ns(struct mnt_namespace *); +extern int is_current_mnt_ns(struct vfsmount *mnt); + extern const struct file_operations proc_mounts_operations; extern const struct file_operations proc_mountinfo_operations; extern const struct file_operations proc_mountstats_operations; --- linux-5.8.0.orig/include/linux/msi.h +++ linux-5.8.0/include/linux/msi.h @@ -139,6 +139,12 @@ list_for_each_entry((desc), dev_to_msi_list((dev)), list) #define for_each_msi_entry_safe(desc, tmp, dev) \ list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list) +#define for_each_msi_vector(desc, __irq, dev) \ + for_each_msi_entry((desc), (dev)) \ + if ((desc)->irq) \ + for (__irq = (desc)->irq; \ + __irq < ((desc)->irq + (desc)->nvec_used); \ + __irq++) #ifdef CONFIG_IRQ_MSI_IOMMU static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc) --- linux-5.8.0.orig/include/linux/mtd/pfow.h +++ linux-5.8.0/include/linux/mtd/pfow.h @@ -128,7 +128,7 @@ if (!(dsr & DSR_AVAILABLE)) printk(KERN_NOTICE"DSR.15: (0) Device not Available\n"); - if (prog_status & 0x03) + if ((prog_status & 0x03) == 0x03) printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid " "half with 41h command\n"); else if (prog_status & 0x02) --- linux-5.8.0.orig/include/linux/mutex.h +++ linux-5.8.0/include/linux/mutex.h @@ -174,7 +174,7 @@ # define mutex_lock_interruptible_nested(lock, subclass) mutex_lock_interruptible(lock) # define mutex_lock_killable_nested(lock, subclass) mutex_lock_killable(lock) # define mutex_lock_nest_lock(lock, nest_lock) mutex_lock(lock) -# define mutex_lock_io_nested(lock, subclass) mutex_lock(lock) +# define mutex_lock_io_nested(lock, subclass) mutex_lock_io(lock) #endif /* --- linux-5.8.0.orig/include/linux/net.h +++ linux-5.8.0/include/linux/net.h @@ -21,6 +21,7 @@ #include #include #include +#include #include @@ -290,6 +291,21 @@ #define net_get_random_once_wait(buf, nbytes) \ get_random_once_wait((buf), (nbytes)) +/* + * E.g. XFS meta- & log-data is in slab pages, or bcache meta + * data pages, or other high order pages allocated by + * __get_free_pages() without __GFP_COMP, which have a page_count + * of 0 and/or have PageSlab() set. We cannot use send_page for + * those, as that does get_page(); put_page(); and would cause + * either a VM_BUG directly, or __page_cache_release a page that + * would actually still be referenced by someone, leading to some + * obscure delayed Oops somewhere else. + */ +static inline bool sendpage_ok(struct page *page) +{ + return !PageSlab(page) && page_count(page) >= 1; +} + int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len); int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg, --- linux-5.8.0.orig/include/linux/netdevice.h +++ linux-5.8.0/include/linux/netdevice.h @@ -1598,6 +1598,12 @@ #define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER #define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK +/* Specifies the type of the struct net_device::ml_priv pointer */ +enum netdev_ml_priv_type { + ML_PRIV_NONE, + ML_PRIV_CAN, +}; + /** * struct net_device - The DEVICE structure. * @@ -1790,6 +1796,7 @@ * @nd_net: Network namespace this network device is inside * * @ml_priv: Mid-layer private + * @ml_priv_type: Mid-layer private type * @lstats: Loopback statistics * @tstats: Tunnel statistics * @dstats: Dummy statistics @@ -2082,8 +2089,10 @@ possible_net_t nd_net; /* mid-layer private */ + void *ml_priv; + enum netdev_ml_priv_type ml_priv_type; + union { - void *ml_priv; struct pcpu_lstats __percpu *lstats; struct pcpu_sw_netstats __percpu *tstats; struct pcpu_dstats __percpu *dstats; @@ -2252,6 +2261,29 @@ netdev_set_rx_headroom(dev, -1); } +static inline void *netdev_get_ml_priv(struct net_device *dev, + enum netdev_ml_priv_type type) +{ + if (dev->ml_priv_type != type) + return NULL; + + return dev->ml_priv; +} + +static inline void netdev_set_ml_priv(struct net_device *dev, + void *ml_priv, + enum netdev_ml_priv_type type) +{ + WARN(dev->ml_priv_type && dev->ml_priv_type != type, + "Overwriting already set ml_priv_type (%u) with different ml_priv_type (%u)!\n", + dev->ml_priv_type, type); + WARN(!dev->ml_priv_type && dev->ml_priv, + "Overwriting already set ml_priv and ml_priv_type is ML_PRIV_NONE!\n"); + + dev->ml_priv = ml_priv; + dev->ml_priv_type = type; +} + /* * Net namespace inlines */ @@ -2743,9 +2775,21 @@ struct net_device *sb_dev); u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); + int dev_queue_xmit(struct sk_buff *skb); int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); -int dev_direct_xmit(struct sk_buff *skb, u16 queue_id); +int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id); + +static inline int dev_direct_xmit(struct sk_buff *skb, u16 queue_id) +{ + int ret; + + ret = __dev_direct_xmit(skb, queue_id); + if (!dev_xmit_complete(ret)) + kfree_skb(skb); + return ret; +} + int register_netdevice(struct net_device *dev); void unregister_netdevice_queue(struct net_device *dev, struct list_head *head); void unregister_netdevice_many(struct list_head *head); @@ -3068,6 +3112,11 @@ return false; } +static inline bool dev_has_header(const struct net_device *dev) +{ + return dev->header_ops && dev->header_ops->create; +} + typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len, int size); int register_gifconf(unsigned int family, gifconf_func_t *gifconf); @@ -3792,6 +3841,9 @@ struct netlink_ext_ack *extack); int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa, struct netlink_ext_ack *extack); +int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa, + struct netlink_ext_ack *extack); +int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name); int dev_change_carrier(struct net_device *, bool new_carrier); int dev_get_phys_port_id(struct net_device *dev, struct netdev_phys_item_id *ppid); @@ -4223,6 +4275,7 @@ local_bh_disable(); cpu = smp_processor_id(); + spin_lock(&dev->tx_global_lock); for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); @@ -4230,6 +4283,7 @@ netif_tx_stop_queue(txq); __netif_tx_unlock(txq); } + spin_unlock(&dev->tx_global_lock); local_bh_enable(); } --- linux-5.8.0.orig/include/linux/netfilter/nf_conntrack_sctp.h +++ linux-5.8.0/include/linux/netfilter/nf_conntrack_sctp.h @@ -9,6 +9,8 @@ enum sctp_conntrack state; __be32 vtag[IP_CT_DIR_MAX]; + u8 last_dir; + u8 flags; }; #endif /* _NF_CONNTRACK_SCTP_H */ --- linux-5.8.0.orig/include/linux/netfilter/nfnetlink.h +++ linux-5.8.0/include/linux/netfilter/nfnetlink.h @@ -24,6 +24,12 @@ const u_int16_t attr_count; /* number of nlattr's */ }; +enum nfnl_abort_action { + NFNL_ABORT_NONE = 0, + NFNL_ABORT_AUTOLOAD, + NFNL_ABORT_VALIDATE, +}; + struct nfnetlink_subsystem { const char *name; __u8 subsys_id; /* nfnetlink subsystem ID */ @@ -31,7 +37,8 @@ const struct nfnl_callback *cb; /* callback for individual types */ struct module *owner; int (*commit)(struct net *net, struct sk_buff *skb); - int (*abort)(struct net *net, struct sk_buff *skb, bool autoload); + int (*abort)(struct net *net, struct sk_buff *skb, + enum nfnl_abort_action action); void (*cleanup)(struct net *net); bool (*valid_genid)(struct net *net, u32 genid); }; @@ -43,8 +50,7 @@ int nfnetlink_send(struct sk_buff *skb, struct net *net, u32 portid, unsigned int group, int echo, gfp_t flags); int nfnetlink_set_err(struct net *net, u32 portid, u32 group, int error); -int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid, - int flags); +int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid); static inline u16 nfnl_msg_type(u8 subsys, u8 msg_type) { --- linux-5.8.0.orig/include/linux/netfilter/x_tables.h +++ linux-5.8.0/include/linux/netfilter/x_tables.h @@ -376,7 +376,7 @@ * since addend is most likely 1 */ __this_cpu_add(xt_recseq.sequence, addend); - smp_wmb(); + smp_mb(); return addend; } --- linux-5.8.0.orig/include/linux/netfilter_ipv4.h +++ linux-5.8.0/include/linux/netfilter_ipv4.h @@ -16,7 +16,7 @@ u_int32_t mark; }; -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned addr_type); +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned addr_type); struct nf_queue_entry; --- linux-5.8.0.orig/include/linux/netfilter_ipv6.h +++ linux-5.8.0/include/linux/netfilter_ipv6.h @@ -42,7 +42,7 @@ #if IS_MODULE(CONFIG_IPV6) int (*chk_addr)(struct net *net, const struct in6_addr *addr, const struct net_device *dev, int strict); - int (*route_me_harder)(struct net *net, struct sk_buff *skb); + int (*route_me_harder)(struct net *net, struct sock *sk, struct sk_buff *skb); int (*dev_get_saddr)(struct net *net, const struct net_device *dev, const struct in6_addr *daddr, unsigned int srcprefs, struct in6_addr *saddr); @@ -58,7 +58,6 @@ int (*output)(struct net *, struct sock *, struct sk_buff *)); int (*reroute)(struct sk_buff *skb, const struct nf_queue_entry *entry); #if IS_MODULE(CONFIG_IPV6) - int (*br_defrag)(struct net *net, struct sk_buff *skb, u32 user); int (*br_fragment)(struct net *net, struct sock *sk, struct sk_buff *skb, struct nf_bridge_frag_data *data, @@ -117,23 +116,6 @@ #include -static inline int nf_ipv6_br_defrag(struct net *net, struct sk_buff *skb, - u32 user) -{ -#if IS_MODULE(CONFIG_IPV6) - const struct nf_ipv6_ops *v6_ops = nf_get_ipv6_ops(); - - if (!v6_ops) - return 1; - - return v6_ops->br_defrag(net, skb, user); -#elif IS_BUILTIN(CONFIG_IPV6) - return nf_ct_frag6_gather(net, skb, user); -#else - return 1; -#endif -} - int br_ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb, struct nf_bridge_frag_data *data, int (*output)(struct net *, struct sock *sk, @@ -161,9 +143,9 @@ #endif } -int ip6_route_me_harder(struct net *net, struct sk_buff *skb); +int ip6_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb); -static inline int nf_ip6_route_me_harder(struct net *net, struct sk_buff *skb) +static inline int nf_ip6_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb) { #if IS_MODULE(CONFIG_IPV6) const struct nf_ipv6_ops *v6_ops = nf_get_ipv6_ops(); @@ -171,9 +153,9 @@ if (!v6_ops) return -EHOSTUNREACH; - return v6_ops->route_me_harder(net, skb); + return v6_ops->route_me_harder(net, sk, skb); #elif IS_BUILTIN(CONFIG_IPV6) - return ip6_route_me_harder(net, skb); + return ip6_route_me_harder(net, sk, skb); #else return -EHOSTUNREACH; #endif --- linux-5.8.0.orig/include/linux/node.h +++ linux-5.8.0/include/linux/node.h @@ -99,11 +99,13 @@ typedef void (*node_registration_func_t)(struct node *); #if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_NUMA) -extern int link_mem_sections(int nid, unsigned long start_pfn, - unsigned long end_pfn); +int link_mem_sections(int nid, unsigned long start_pfn, + unsigned long end_pfn, + enum meminit_context context); #else static inline int link_mem_sections(int nid, unsigned long start_pfn, - unsigned long end_pfn) + unsigned long end_pfn, + enum meminit_context context) { return 0; } @@ -128,7 +130,8 @@ if (error) return error; /* link memory sections under this node */ - error = link_mem_sections(nid, start_pfn, end_pfn); + error = link_mem_sections(nid, start_pfn, end_pfn, + MEMINIT_EARLY); } return error; --- linux-5.8.0.orig/include/linux/nvme.h +++ linux-5.8.0/include/linux/nvme.h @@ -116,6 +116,9 @@ NVME_REG_BPMBL = 0x0048, /* Boot Partition Memory Buffer * Location */ + NVME_REG_CMBMSC = 0x0050, /* Controller Memory Buffer Memory + * Space Control + */ NVME_REG_PMRCAP = 0x0e00, /* Persistent Memory Capabilities */ NVME_REG_PMRCTL = 0x0e04, /* Persistent Memory Region Control */ NVME_REG_PMRSTS = 0x0e08, /* Persistent Memory Region Status */ @@ -134,6 +137,7 @@ #define NVME_CAP_NSSRC(cap) (((cap) >> 36) & 0x1) #define NVME_CAP_MPSMIN(cap) (((cap) >> 48) & 0xf) #define NVME_CAP_MPSMAX(cap) (((cap) >> 52) & 0xf) +#define NVME_CAP_CMBS(cap) (((cap) >> 57) & 0x1) #define NVME_CMB_BIR(cmbloc) ((cmbloc) & 0x7) #define NVME_CMB_OFST(cmbloc) (((cmbloc) >> 12) & 0xfffff) @@ -187,6 +191,8 @@ NVME_CSTS_SHST_OCCUR = 1 << 2, NVME_CSTS_SHST_CMPLT = 2 << 2, NVME_CSTS_SHST_MASK = 3 << 2, + NVME_CMBMSC_CRE = 1 << 0, + NVME_CMBMSC_CMSE = 1 << 1, }; struct nvme_id_power_state { --- linux-5.8.0.orig/include/linux/of.h +++ linux-5.8.0/include/linux/of.h @@ -558,6 +558,8 @@ const char *map_name, const char *map_mask_name, struct device_node **target, u32 *id_out); +phys_addr_t of_dma_get_max_cpu_address(struct device_node *np); + #else /* CONFIG_OF */ static inline void of_core_init(void) @@ -985,6 +987,11 @@ return -EINVAL; } +static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np) +{ + return PHYS_ADDR_MAX; +} + #define of_match_ptr(_ptr) NULL #define of_match_node(_matches, _node) NULL #endif /* CONFIG_OF */ @@ -1290,6 +1297,7 @@ #define _OF_DECLARE(table, name, compat, fn, fn_type) \ static const struct of_device_id __of_table_##name \ __used __section(__##table##_of_table) \ + __aligned(__alignof__(struct of_device_id)) \ = { .compatible = compat, \ .data = (fn == (fn_type)NULL) ? fn : fn } #else --- linux-5.8.0.orig/include/linux/oom.h +++ linux-5.8.0/include/linux/oom.h @@ -55,6 +55,7 @@ }; extern struct mutex oom_lock; +extern struct mutex oom_adj_mutex; static inline void set_current_oom_origin(void) { --- linux-5.8.0.orig/include/linux/overflow.h +++ linux-5.8.0/include/linux/overflow.h @@ -3,6 +3,7 @@ #define __LINUX_OVERFLOW_H #include +#include /* * In the fallback code below, we need to compute the minimum and --- linux-5.8.0.orig/include/linux/page_owner.h +++ linux-5.8.0/include/linux/page_owner.h @@ -11,7 +11,7 @@ extern void __reset_page_owner(struct page *page, unsigned int order); extern void __set_page_owner(struct page *page, unsigned int order, gfp_t gfp_mask); -extern void __split_page_owner(struct page *page, unsigned int order); +extern void __split_page_owner(struct page *page, unsigned int nr); extern void __copy_page_owner(struct page *oldpage, struct page *newpage); extern void __set_page_owner_migrate_reason(struct page *page, int reason); extern void __dump_page_owner(struct page *page); @@ -31,10 +31,10 @@ __set_page_owner(page, order, gfp_mask); } -static inline void split_page_owner(struct page *page, unsigned int order) +static inline void split_page_owner(struct page *page, unsigned int nr) { if (static_branch_unlikely(&page_owner_inited)) - __split_page_owner(page, order); + __split_page_owner(page, nr); } static inline void copy_page_owner(struct page *oldpage, struct page *newpage) { --- linux-5.8.0.orig/include/linux/pagemap.h +++ linux-5.8.0/include/linux/pagemap.h @@ -54,7 +54,8 @@ __filemap_set_wb_err(mapping, error); /* Record it in superblock */ - errseq_set(&mapping->host->i_sb->s_wb_err, error); + if (mapping->host) + errseq_set(&mapping->host->i_sb->s_wb_err, error); /* Record it in flags for now, for legacy callers */ if (error == -ENOSPC) @@ -750,6 +751,8 @@ xas_set(&xas, rac->_index); rcu_read_lock(); xas_for_each(&xas, page, rac->_index + rac->_nr_pages - 1) { + if (xas_retry(&xas, page)) + continue; VM_BUG_ON_PAGE(!PageLocked(page), page); VM_BUG_ON_PAGE(PageTail(page), page); array[i++] = page; --- linux-5.8.0.orig/include/linux/pci-ats.h +++ linux-5.8.0/include/linux/pci-ats.h @@ -28,6 +28,10 @@ void pci_disable_pri(struct pci_dev *pdev); int pci_reset_pri(struct pci_dev *pdev); int pci_prg_resp_pasid_required(struct pci_dev *pdev); +bool pci_pri_supported(struct pci_dev *pdev); +#else +static inline bool pci_pri_supported(struct pci_dev *pdev) +{ return false; } #endif /* CONFIG_PCI_PRI */ #ifdef CONFIG_PCI_PASID --- linux-5.8.0.orig/include/linux/pci-ecam.h +++ linux-5.8.0/include/linux/pci-ecam.h @@ -51,6 +51,7 @@ #if defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) extern const struct pci_ecam_ops pci_32b_ops; /* 32-bit accesses only */ +extern const struct pci_ecam_ops pci_32b_read_ops; /* 32-bit read only */ extern const struct pci_ecam_ops hisi_pcie_ops; /* HiSilicon */ extern const struct pci_ecam_ops thunder_pem_ecam_ops; /* Cavium ThunderX 1.x & 2.x */ extern const struct pci_ecam_ops pci_thunder_ecam_ops; /* Cavium ThunderX 1.x */ --- linux-5.8.0.orig/include/linux/pci.h +++ linux-5.8.0/include/linux/pci.h @@ -227,6 +227,8 @@ PCI_DEV_FLAGS_NO_FLR_RESET = (__force pci_dev_flags_t) (1 << 10), /* Don't use Relaxed Ordering for TLPs directed at this device */ PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11), + /* Enable ASPM regardless of how LnkCtl is programmed */ + PCI_DEV_FLAGS_ENABLE_ASPM = (__force pci_dev_flags_t) (1 << 12), }; enum pci_irq_reroute_variant { @@ -439,6 +441,7 @@ unsigned int is_probed:1; /* Device probing in progress */ unsigned int link_active_reporting:1;/* Device capable of reporting link active */ unsigned int no_vf_scan:1; /* Don't scan for VFs after IOV enablement */ + unsigned int no_command_memory:1; /* No PCI_COMMAND_MEMORY */ pci_dev_flags_t dev_flags; atomic_t enable_cnt; /* pci_enable_device has been called */ --- linux-5.8.0.orig/include/linux/percpu-rwsem.h +++ linux-5.8.0/include/linux/percpu-rwsem.h @@ -60,7 +60,7 @@ * anything we did within this RCU-sched read-size critical section. */ if (likely(rcu_sync_is_idle(&sem->rss))) - __this_cpu_inc(*sem->read_count); + this_cpu_inc(*sem->read_count); else __percpu_down_read(sem, false); /* Unconditional memory barrier */ /* @@ -79,7 +79,7 @@ * Same as in percpu_down_read(). */ if (likely(rcu_sync_is_idle(&sem->rss))) - __this_cpu_inc(*sem->read_count); + this_cpu_inc(*sem->read_count); else ret = __percpu_down_read(sem, true); /* Unconditional memory barrier */ preempt_enable(); @@ -103,7 +103,7 @@ * Same as in percpu_down_read(). */ if (likely(rcu_sync_is_idle(&sem->rss))) { - __this_cpu_dec(*sem->read_count); + this_cpu_dec(*sem->read_count); } else { /* * slowpath; reader will only ever wake a single blocked @@ -115,7 +115,7 @@ * aggregate zero, as that is the only time it matters) they * will also see our critical section. */ - __this_cpu_dec(*sem->read_count); + this_cpu_dec(*sem->read_count); rcuwait_wake_up(&sem->writer); } preempt_enable(); --- linux-5.8.0.orig/include/linux/perf_event.h +++ linux-5.8.0/include/linux/perf_event.h @@ -1294,6 +1294,12 @@ #define PERF_SECURITY_CPU 1 #define PERF_SECURITY_KERNEL 2 #define PERF_SECURITY_TRACEPOINT 3 +#define PERF_SECURITY_MAX 4 + +static inline bool perf_paranoid_any(void) +{ + return sysctl_perf_event_paranoid >= PERF_SECURITY_MAX; +} static inline int perf_is_paranoid(void) { --- linux-5.8.0.orig/include/linux/pgtable.h +++ linux-5.8.0/include/linux/pgtable.h @@ -117,7 +117,9 @@ * a shortcut which implies the use of the kernel's pgd, instead * of a process's */ +#ifndef pgd_offset_k #define pgd_offset_k(address) pgd_offset(&init_mm, (address)) +#endif /* * In many cases it is known that a virtual address is mapped at PMD or PTE @@ -1394,8 +1396,17 @@ #endif /* !__ASSEMBLY__ */ -#ifndef io_remap_pfn_range -#define io_remap_pfn_range remap_pfn_range +#if !defined(MAX_POSSIBLE_PHYSMEM_BITS) && !defined(CONFIG_64BIT) +#ifdef CONFIG_PHYS_ADDR_T_64BIT +/* + * ZSMALLOC needs to know the highest PFN on 32-bit architectures + * with physical address space extension, but falls back to + * BITS_PER_LONG otherwise. + */ +#error Missing MAX_POSSIBLE_PHYSMEM_BITS definition +#else +#define MAX_POSSIBLE_PHYSMEM_BITS 32 +#endif #endif #ifndef has_transparent_hugepage @@ -1422,6 +1433,16 @@ #define mm_pmd_folded(mm) __is_defined(__PAGETABLE_PMD_FOLDED) #endif +#ifndef p4d_offset_lockless +#define p4d_offset_lockless(pgdp, pgd, address) p4d_offset(&(pgd), address) +#endif +#ifndef pud_offset_lockless +#define pud_offset_lockless(p4dp, p4d, address) pud_offset(&(p4d), address) +#endif +#ifndef pmd_offset_lockless +#define pmd_offset_lockless(pudp, pud, address) pmd_offset(&(pud), address) +#endif + /* * p?d_leaf() - true if this entry is a final mapping to a physical address. * This differs from p?d_huge() by the fact that they are always available (if --- linux-5.8.0.orig/include/linux/phy.h +++ linux-5.8.0/include/linux/phy.h @@ -478,6 +478,7 @@ */ int speed; int duplex; + int port; int pause; int asym_pause; u8 master_slave_get; --- linux-5.8.0.orig/include/linux/pipe_fs_i.h +++ linux-5.8.0/include/linux/pipe_fs_i.h @@ -240,8 +240,9 @@ extern unsigned long pipe_user_pages_hard; extern unsigned long pipe_user_pages_soft; -/* Drop the inode semaphore and wait for a pipe event, atomically */ -void pipe_wait(struct pipe_inode_info *pipe); +/* Wait for a pipe to be readable/writable while dropping the pipe lock */ +void pipe_wait_readable(struct pipe_inode_info *); +void pipe_wait_writable(struct pipe_inode_info *); struct pipe_inode_info *alloc_pipe_info(void); void free_pipe_info(struct pipe_inode_info *); --- linux-5.8.0.orig/include/linux/platform_data/dma-dw.h +++ linux-5.8.0/include/linux/platform_data/dma-dw.h @@ -21,6 +21,7 @@ * @dst_id: dst request line * @m_master: memory master for transfers on allocated channel * @p_master: peripheral master for transfers on allocated channel + * @channels: mask of the channels permitted for allocation (zero value means any) * @hs_polarity:set active low polarity of handshake interface */ struct dw_dma_slave { @@ -29,6 +30,7 @@ u8 dst_id; u8 m_master; u8 p_master; + u8 channels; bool hs_polarity; }; --- linux-5.8.0.orig/include/linux/platform_data/ti-sysc.h +++ linux-5.8.0/include/linux/platform_data/ti-sysc.h @@ -50,6 +50,8 @@ s8 emufree_shift; }; +#define SYSC_QUIRK_GPMC_DEBUG BIT(26) +#define SYSC_MODULE_QUIRK_ENA_RESETDONE BIT(25) #define SYSC_MODULE_QUIRK_PRUSS BIT(24) #define SYSC_MODULE_QUIRK_DSS_RESET BIT(23) #define SYSC_MODULE_QUIRK_RTC_UNLOCK BIT(22) --- linux-5.8.0.orig/include/linux/pm.h +++ linux-5.8.0/include/linux/pm.h @@ -584,7 +584,7 @@ #endif #ifdef CONFIG_PM struct hrtimer suspend_timer; - unsigned long timer_expires; + u64 timer_expires; struct work_struct work; wait_queue_head_t wait_queue; struct wake_irq *wakeirq; --- linux-5.8.0.orig/include/linux/pm_runtime.h +++ linux-5.8.0/include/linux/pm_runtime.h @@ -54,11 +54,10 @@ extern void pm_runtime_update_max_time_suspended(struct device *dev, s64 delta_ns); extern void pm_runtime_set_memalloc_noio(struct device *dev, bool enable); -extern void pm_runtime_clean_up_links(struct device *dev); extern void pm_runtime_get_suppliers(struct device *dev); extern void pm_runtime_put_suppliers(struct device *dev); extern void pm_runtime_new_link(struct device *dev); -extern void pm_runtime_drop_link(struct device *dev); +extern void pm_runtime_drop_link(struct device_link *link); static inline int pm_runtime_get_if_in_use(struct device *dev) { @@ -183,11 +182,10 @@ struct device *dev) { return 0; } static inline void pm_runtime_set_memalloc_noio(struct device *dev, bool enable){} -static inline void pm_runtime_clean_up_links(struct device *dev) {} static inline void pm_runtime_get_suppliers(struct device *dev) {} static inline void pm_runtime_put_suppliers(struct device *dev) {} static inline void pm_runtime_new_link(struct device *dev) {} -static inline void pm_runtime_drop_link(struct device *dev) {} +static inline void pm_runtime_drop_link(struct device_link *link) {} #endif /* !CONFIG_PM */ @@ -236,6 +234,27 @@ return __pm_runtime_resume(dev, RPM_GET_PUT); } +/** + * pm_runtime_resume_and_get - Bump up usage counter of a device and resume it. + * @dev: Target device. + * + * Resume @dev synchronously and if that is successful, increment its runtime + * PM usage counter. Return 0 if the runtime PM usage counter of @dev has been + * incremented or a negative error code otherwise. + */ +static inline int pm_runtime_resume_and_get(struct device *dev) +{ + int ret; + + ret = __pm_runtime_resume(dev, RPM_GET_PUT); + if (ret < 0) { + pm_runtime_put_noidle(dev); + return ret; + } + + return 0; +} + static inline int pm_runtime_put(struct device *dev) { return __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC); --- linux-5.8.0.orig/include/linux/prandom.h +++ linux-5.8.0/include/linux/prandom.h @@ -0,0 +1,110 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * include/linux/prandom.h + * + * Include file for the fast pseudo-random 32-bit + * generation. + */ +#ifndef _LINUX_PRANDOM_H +#define _LINUX_PRANDOM_H + +#include +#include + +u32 prandom_u32(void); +void prandom_bytes(void *buf, size_t nbytes); +void prandom_seed(u32 seed); +void prandom_reseed_late(void); + +#if BITS_PER_LONG == 64 +/* + * The core SipHash round function. Each line can be executed in + * parallel given enough CPU resources. + */ +#define PRND_SIPROUND(v0, v1, v2, v3) ( \ + v0 += v1, v1 = rol64(v1, 13), v2 += v3, v3 = rol64(v3, 16), \ + v1 ^= v0, v0 = rol64(v0, 32), v3 ^= v2, \ + v0 += v3, v3 = rol64(v3, 21), v2 += v1, v1 = rol64(v1, 17), \ + v3 ^= v0, v1 ^= v2, v2 = rol64(v2, 32) \ +) + +#define PRND_K0 (0x736f6d6570736575 ^ 0x6c7967656e657261) +#define PRND_K1 (0x646f72616e646f6d ^ 0x7465646279746573) + +#elif BITS_PER_LONG == 32 +/* + * On 32-bit machines, we use HSipHash, a reduced-width version of SipHash. + * This is weaker, but 32-bit machines are not used for high-traffic + * applications, so there is less output for an attacker to analyze. + */ +#define PRND_SIPROUND(v0, v1, v2, v3) ( \ + v0 += v1, v1 = rol32(v1, 5), v2 += v3, v3 = rol32(v3, 8), \ + v1 ^= v0, v0 = rol32(v0, 16), v3 ^= v2, \ + v0 += v3, v3 = rol32(v3, 7), v2 += v1, v1 = rol32(v1, 13), \ + v3 ^= v0, v1 ^= v2, v2 = rol32(v2, 16) \ +) +#define PRND_K0 0x6c796765 +#define PRND_K1 0x74656462 + +#else +#error Unsupported BITS_PER_LONG +#endif + +struct rnd_state { + __u32 s1, s2, s3, s4; +}; + +u32 prandom_u32_state(struct rnd_state *state); +void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes); +void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); + +#define prandom_init_once(pcpu_state) \ + DO_ONCE(prandom_seed_full_state, (pcpu_state)) + +/** + * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro) + * @ep_ro: right open interval endpoint + * + * Returns a pseudo-random number that is in interval [0, ep_ro). Note + * that the result depends on PRNG being well distributed in [0, ~0U] + * u32 space. Here we use maximally equidistributed combined Tausworthe + * generator, that is, prandom_u32(). This is useful when requesting a + * random index of an array containing ep_ro elements, for example. + * + * Returns: pseudo-random number in interval [0, ep_ro) + */ +static inline u32 prandom_u32_max(u32 ep_ro) +{ + return (u32)(((u64) prandom_u32() * ep_ro) >> 32); +} + +/* + * Handle minimum values for seeds + */ +static inline u32 __seed(u32 x, u32 m) +{ + return (x < m) ? x + m : x; +} + +/** + * prandom_seed_state - set seed for prandom_u32_state(). + * @state: pointer to state structure to receive the seed. + * @seed: arbitrary 64-bit value to use as a seed. + */ +static inline void prandom_seed_state(struct rnd_state *state, u64 seed) +{ + u32 i = (seed >> 32) ^ (seed << 10) ^ seed; + + state->s1 = __seed(i, 2U); + state->s2 = __seed(i, 8U); + state->s3 = __seed(i, 16U); + state->s4 = __seed(i, 128U); +} + +/* Pseudo random number generator from numerical recipes. */ +static inline u32 next_pseudo_random32(u32 seed) +{ + return seed * 1664525 + 1013904223; +} + +#endif --- linux-5.8.0.orig/include/linux/prefetch.h +++ linux-5.8.0/include/linux/prefetch.h @@ -15,6 +15,7 @@ #include #include +struct page; /* prefetch(x) attempts to pre-emptively get the memory pointed to by address "x" into the CPU L1 cache. @@ -62,4 +63,11 @@ #endif } +static inline void prefetch_page_address(struct page *page) +{ +#if defined(WANT_PAGE_VIRTUAL) || defined(HASHED_PAGE_VIRTUAL) + prefetch(page); +#endif +} + #endif --- linux-5.8.0.orig/include/linux/printk.h +++ linux-5.8.0/include/linux/printk.h @@ -296,6 +296,27 @@ #define pr_fmt(fmt) fmt #endif +#if defined(__KMSG_CHECKER) && defined(KMSG_COMPONENT) + +/* generate magic string for scripts/kmsg-doc to parse */ +#define pr_printk_hash(level, format, ...) \ + __KMSG_PRINT(level _FMT_ format _ARGS_ __VA_ARGS__ _END_) + +#elif defined(CONFIG_KMSG_IDS) && defined(KMSG_COMPONENT) + +/* format element '%pj' prints the six digit jhash of a string */ +#define _pr_printk_hash(pfx, fmt, ...) \ + printk(pfx fmt, pfx fmt + __builtin_strlen(pfx), ##__VA_ARGS__) +#define pr_printk_hash(level, format, ...) \ + _pr_printk_hash(level KMSG_COMPONENT ".%pj: ", format, ##__VA_ARGS__) + +#else /* !defined(CONFIG_KMSG_IDS) */ + +#define pr_printk_hash(level, format, ...) \ + printk(level pr_fmt(format), ##__VA_ARGS__) + +#endif + /** * pr_emerg - Print an emergency-level message * @fmt: format string @@ -305,7 +326,7 @@ * generate the format string. */ #define pr_emerg(fmt, ...) \ - printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_EMERG, fmt, ##__VA_ARGS__) /** * pr_alert - Print an alert-level message * @fmt: format string @@ -315,7 +336,7 @@ * generate the format string. */ #define pr_alert(fmt, ...) \ - printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_ALERT, fmt, ##__VA_ARGS__) /** * pr_crit - Print a critical-level message * @fmt: format string @@ -325,7 +346,7 @@ * generate the format string. */ #define pr_crit(fmt, ...) \ - printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_CRIT, fmt, ##__VA_ARGS__) /** * pr_err - Print an error-level message * @fmt: format string @@ -335,7 +356,7 @@ * generate the format string. */ #define pr_err(fmt, ...) \ - printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_ERR, fmt, ##__VA_ARGS__) /** * pr_warn - Print a warning-level message * @fmt: format string @@ -345,7 +366,7 @@ * to generate the format string. */ #define pr_warn(fmt, ...) \ - printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_WARNING, fmt, ##__VA_ARGS__) /** * pr_notice - Print a notice-level message * @fmt: format string @@ -355,7 +376,7 @@ * generate the format string. */ #define pr_notice(fmt, ...) \ - printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_NOTICE, fmt, ##__VA_ARGS__) /** * pr_info - Print an info-level message * @fmt: format string @@ -365,7 +386,7 @@ * generate the format string. */ #define pr_info(fmt, ...) \ - printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_INFO, fmt, ##__VA_ARGS__) /** * pr_cont - Continues a previous log message in the same line. --- linux-5.8.0.orig/include/linux/proc_fs.h +++ linux-5.8.0/include/linux/proc_fs.h @@ -79,6 +79,7 @@ extern struct proc_dir_entry *proc_symlink(const char *, struct proc_dir_entry *, const char *); +struct proc_dir_entry *_proc_mkdir(const char *, umode_t, struct proc_dir_entry *, void *, bool); extern struct proc_dir_entry *proc_mkdir(const char *, struct proc_dir_entry *); extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t, struct proc_dir_entry *, void *); @@ -160,6 +161,11 @@ static inline struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent) {return NULL;} static inline struct proc_dir_entry *proc_create_mount_point(const char *name) { return NULL; } +static inline struct proc_dir_entry *_proc_mkdir(const char *name, umode_t mode, + struct proc_dir_entry *parent, void *data, bool force_lookup) +{ + return NULL; +} static inline struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, struct proc_dir_entry *parent, void *data) { return NULL; } static inline struct proc_dir_entry *proc_mkdir_mode(const char *name, @@ -197,7 +203,7 @@ static inline struct proc_dir_entry *proc_net_mkdir( struct net *net, const char *name, struct proc_dir_entry *parent) { - return proc_mkdir_data(name, 0, parent, net); + return _proc_mkdir(name, 0, parent, net, true); } struct ns_common; --- linux-5.8.0.orig/include/linux/qcom-geni-se.h +++ linux-5.8.0/include/linux/qcom-geni-se.h @@ -229,6 +229,9 @@ #define GENI_SE_VERSION_MINOR(ver) ((ver & HW_VER_MINOR_MASK) >> HW_VER_MINOR_SHFT) #define GENI_SE_VERSION_STEP(ver) (ver & HW_VER_STEP_MASK) +/* QUP SE VERSION value for major number 2 and minor number 5 */ +#define QUP_SE_VERSION_2_5 0x20050000 + #if IS_ENABLED(CONFIG_QCOM_GENI_SE) u32 geni_se_get_qup_hw_version(struct geni_se *se); --- linux-5.8.0.orig/include/linux/qed/qed_if.h +++ linux-5.8.0/include/linux/qed/qed_if.h @@ -648,6 +648,7 @@ #define QED_MFW_VERSION_3_OFFSET 24 u32 flash_size; + bool b_arfs_capable; bool b_inter_pf_switch; bool tx_switching; bool rdma_supported; --- linux-5.8.0.orig/include/linux/radix-tree.h +++ linux-5.8.0/include/linux/radix-tree.h @@ -16,20 +16,11 @@ #include #include #include -#include /* Keep unconverted code working */ #define radix_tree_root xarray #define radix_tree_node xa_node -struct radix_tree_preload { - local_lock_t lock; - unsigned nr; - /* nodes->parent points to next preallocated node */ - struct radix_tree_node *nodes; -}; -DECLARE_PER_CPU(struct radix_tree_preload, radix_tree_preloads); - /* * The bottom two bits of the slot determine how the remaining bits in the * slot are interpreted: @@ -254,7 +245,7 @@ static inline void radix_tree_preload_end(void) { - local_unlock(&radix_tree_preloads.lock); + preempt_enable(); } void __rcu **idr_get_free(struct radix_tree_root *root, --- linux-5.8.0.orig/include/linux/random.h +++ linux-5.8.0/include/linux/random.h @@ -11,7 +11,6 @@ #include #include #include -#include #include @@ -111,63 +110,12 @@ unsigned long randomize_page(unsigned long start, unsigned long range); -u32 prandom_u32(void); -void prandom_bytes(void *buf, size_t nbytes); -void prandom_seed(u32 seed); -void prandom_reseed_late(void); - -struct rnd_state { - __u32 s1, s2, s3, s4; -}; - -DECLARE_PER_CPU(struct rnd_state, net_rand_state); - -u32 prandom_u32_state(struct rnd_state *state); -void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes); -void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state); - -#define prandom_init_once(pcpu_state) \ - DO_ONCE(prandom_seed_full_state, (pcpu_state)) - -/** - * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro) - * @ep_ro: right open interval endpoint - * - * Returns a pseudo-random number that is in interval [0, ep_ro). Note - * that the result depends on PRNG being well distributed in [0, ~0U] - * u32 space. Here we use maximally equidistributed combined Tausworthe - * generator, that is, prandom_u32(). This is useful when requesting a - * random index of an array containing ep_ro elements, for example. - * - * Returns: pseudo-random number in interval [0, ep_ro) - */ -static inline u32 prandom_u32_max(u32 ep_ro) -{ - return (u32)(((u64) prandom_u32() * ep_ro) >> 32); -} - /* - * Handle minimum values for seeds - */ -static inline u32 __seed(u32 x, u32 m) -{ - return (x < m) ? x + m : x; -} - -/** - * prandom_seed_state - set seed for prandom_u32_state(). - * @state: pointer to state structure to receive the seed. - * @seed: arbitrary 64-bit value to use as a seed. + * This is designed to be standalone for just prandom + * users, but for now we include it from + * for legacy reasons. */ -static inline void prandom_seed_state(struct rnd_state *state, u64 seed) -{ - u32 i = (seed >> 32) ^ (seed << 10) ^ seed; - - state->s1 = __seed(i, 2U); - state->s2 = __seed(i, 8U); - state->s3 = __seed(i, 16U); - state->s4 = __seed(i, 128U); -} +#include #ifdef CONFIG_ARCH_RANDOM # include @@ -210,10 +158,4 @@ } #endif -/* Pseudo random number generator from numerical recipes. */ -static inline u32 next_pseudo_random32(u32 seed) -{ - return seed * 1664525 + 1013904223; -} - #endif /* _LINUX_RANDOM_H */ --- linux-5.8.0.orig/include/linux/rcupdate.h +++ linux-5.8.0/include/linux/rcupdate.h @@ -97,8 +97,10 @@ #ifdef CONFIG_RCU_NOCB_CPU void rcu_init_nohz(void); +void rcu_nocb_flush_deferred_wakeup(void); #else /* #ifdef CONFIG_RCU_NOCB_CPU */ static inline void rcu_init_nohz(void) { } +static inline void rcu_nocb_flush_deferred_wakeup(void) { } #endif /* #else #ifdef CONFIG_RCU_NOCB_CPU */ /** --- linux-5.8.0.orig/include/linux/rcupdate_trace.h +++ linux-5.8.0/include/linux/rcupdate_trace.h @@ -50,6 +50,7 @@ struct task_struct *t = current; WRITE_ONCE(t->trc_reader_nesting, READ_ONCE(t->trc_reader_nesting) + 1); + barrier(); if (IS_ENABLED(CONFIG_TASKS_TRACE_RCU_READ_MB) && t->trc_reader_special.b.need_mb) smp_mb(); // Pairs with update-side barriers @@ -72,6 +73,9 @@ rcu_lock_release(&rcu_trace_lock_map); nesting = READ_ONCE(t->trc_reader_nesting) - 1; + barrier(); // Critical section before disabling. + // Disable IPI-based setting of .need_qs. + WRITE_ONCE(t->trc_reader_nesting, INT_MIN); if (likely(!READ_ONCE(t->trc_reader_special.s)) || nesting) { WRITE_ONCE(t->trc_reader_nesting, nesting); return; // We assume shallow reader nesting. --- linux-5.8.0.orig/include/linux/rmap.h +++ linux-5.8.0/include/linux/rmap.h @@ -91,7 +91,6 @@ TTU_SPLIT_HUGE_PMD = 0x4, /* split huge PMD if any */ TTU_IGNORE_MLOCK = 0x8, /* ignore mlock */ - TTU_IGNORE_ACCESS = 0x10, /* don't age */ TTU_IGNORE_HWPOISON = 0x20, /* corrupted page is recoverable */ TTU_BATCH_FLUSH = 0x40, /* Batch TLB flushes where possible * and caller guarantees they will @@ -214,7 +213,8 @@ static inline void page_vma_mapped_walk_done(struct page_vma_mapped_walk *pvmw) { - if (pvmw->pte) + /* HugeTLB pte is set to the relevant page table entry without pte_mapped. */ + if (pvmw->pte && !PageHuge(pvmw->page)) pte_unmap(pvmw->pte); if (pvmw->ptl) spin_unlock(pvmw->ptl); --- linux-5.8.0.orig/include/linux/rwsem.h +++ linux-5.8.0/include/linux/rwsem.h @@ -123,6 +123,7 @@ * lock for reading */ extern void down_read(struct rw_semaphore *sem); +extern int __must_check down_read_interruptible(struct rw_semaphore *sem); extern int __must_check down_read_killable(struct rw_semaphore *sem); /* @@ -171,6 +172,7 @@ * See Documentation/locking/lockdep-design.rst for more details.) */ extern void down_read_nested(struct rw_semaphore *sem, int subclass); +extern int __must_check down_read_killable_nested(struct rw_semaphore *sem, int subclass); extern void down_write_nested(struct rw_semaphore *sem, int subclass); extern int down_write_killable_nested(struct rw_semaphore *sem, int subclass); extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest_lock); @@ -191,6 +193,7 @@ extern void up_read_non_owner(struct rw_semaphore *sem); #else # define down_read_nested(sem, subclass) down_read(sem) +# define down_read_killable_nested(sem, subclass) down_read_killable(sem) # define down_write_nest_lock(sem, nest_lock) down_write(sem) # define down_write_nested(sem, subclass) down_write(sem) # define down_write_killable_nested(sem, subclass) down_write_killable(sem) --- linux-5.8.0.orig/include/linux/sched.h +++ linux-5.8.0/include/linux/sched.h @@ -61,6 +61,7 @@ struct signal_struct; struct task_delay_info; struct task_group; +struct io_uring_task; /* * Task state bitmask. NOTE! These bits are also @@ -761,7 +762,6 @@ unsigned sched_reset_on_fork:1; unsigned sched_contributes_to_load:1; unsigned sched_migrated:1; - unsigned sched_remote_wakeup:1; #ifdef CONFIG_PSI unsigned sched_psi_wake_requeue:1; #endif @@ -771,6 +771,21 @@ /* Unserialized, strictly 'current' */ + /* + * This field must not be in the scheduler word above due to wakelist + * queueing no longer being serialized by p->on_cpu. However: + * + * p->XXX = X; ttwu() + * schedule() if (p->on_rq && ..) // false + * smp_mb__after_spinlock(); if (smp_load_acquire(&p->on_cpu) && //true + * deactivate_task() ttwu_queue_wakelist()) + * p->on_rq = 0; p->sched_remote_wakeup = Y; + * + * guarantees all stores of 'current' are visible before + * ->sched_remote_wakeup gets used, so it can be in this word. + */ + unsigned sched_remote_wakeup:1; + /* Bit to tell LSMs we're in execve(): */ unsigned in_execve:1; unsigned in_iowait:1; @@ -923,6 +938,10 @@ /* Open file information: */ struct files_struct *files; +#ifdef CONFIG_IO_URING + struct io_uring_task *io_uring; +#endif + /* Namespaces: */ struct nsproxy *nsproxy; --- linux-5.8.0.orig/include/linux/sched/coredump.h +++ linux-5.8.0/include/linux/sched/coredump.h @@ -72,6 +72,7 @@ #define MMF_DISABLE_THP 24 /* disable THP for all VMAs */ #define MMF_OOM_VICTIM 25 /* mm is the oom victim */ #define MMF_OOM_REAP_QUEUED 26 /* mm was queued for oom_reaper */ +#define MMF_MULTIPROCESS 27 /* mm is shared between processes */ #define MMF_DISABLE_THP_MASK (1 << MMF_DISABLE_THP) #define MMF_INIT_MASK (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK |\ --- linux-5.8.0.orig/include/linux/sched/mm.h +++ linux-5.8.0/include/linux/sched/mm.h @@ -167,7 +167,8 @@ * another oom-unkillable task does this it should blame itself. */ rcu_read_lock(); - ret = tsk->vfork_done && tsk->real_parent->mm == tsk->mm; + ret = tsk->vfork_done && + rcu_dereference(tsk->real_parent)->mm == tsk->mm; rcu_read_unlock(); return ret; --- linux-5.8.0.orig/include/linux/sched/signal.h +++ linux-5.8.0/include/linux/sched/signal.h @@ -228,12 +228,13 @@ * credential calculations * (notably. ptrace) * Deprecated do not use in new code. - * Use exec_update_mutex instead. - */ - struct mutex exec_update_mutex; /* Held while task_struct is being - * updated during exec, and may have - * inconsistent permissions. + * Use exec_update_lock instead. */ + struct rw_semaphore exec_update_lock; /* Held while task_struct is + * being updated during exec, + * and may have inconsistent + * permissions. + */ } __randomize_layout; /* --- linux-5.8.0.orig/include/linux/sched/user.h +++ linux-5.8.0/include/linux/sched/user.h @@ -36,6 +36,9 @@ defined(CONFIG_NET) || defined(CONFIG_IO_URING) atomic_long_t locked_vm; #endif +#ifdef CONFIG_WATCH_QUEUE + atomic_t nr_watches; /* The number of watches this user currently has */ +#endif /* Miscellaneous per-user rate limit */ struct ratelimit_state ratelimit; --- linux-5.8.0.orig/include/linux/security.h +++ linux-5.8.0/include/linux/security.h @@ -131,6 +131,130 @@ extern const char *const lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1]; +/* + * A "security context" is the text representation of + * the information used by LSMs. + * This structure contains the string, its length, and which LSM + * it is useful for. + */ +struct lsmcontext { + char *context; /* Provided by the module */ + u32 len; + int slot; /* Identifies the module */ +}; + +/** + * lsmcontext_init - initialize an lsmcontext structure. + * @cp: Pointer to the context to initialize + * @context: Initial context, or NULL + * @size: Size of context, or 0 + * @slot: Which LSM provided the context + * + * Fill in the lsmcontext from the provided information. + * This is a scaffolding function that will be removed when + * lsmcontext integration is complete. + */ +static inline void lsmcontext_init(struct lsmcontext *cp, char *context, + u32 size, int slot) +{ + cp->slot = slot; + cp->context = context; + cp->len = size; +} + +/* + * Data exported by the security modules + * + * Any LSM that provides secid or secctx based hooks must be included. + */ +#define LSMBLOB_ENTRIES ( \ + (IS_ENABLED(CONFIG_SECURITY_SELINUX) ? 1 : 0) + \ + (IS_ENABLED(CONFIG_SECURITY_SMACK) ? 1 : 0) + \ + (IS_ENABLED(CONFIG_SECURITY_APPARMOR) ? 1 : 0) + \ + (IS_ENABLED(CONFIG_BPF_LSM) ? 1 : 0)) + +struct lsmblob { + u32 secid[LSMBLOB_ENTRIES]; +}; + +#define LSMBLOB_INVALID -1 /* Not a valid LSM slot number */ +#define LSMBLOB_NEEDED -2 /* Slot requested on initialization */ +#define LSMBLOB_NOT_NEEDED -3 /* Slot not requested */ +#define LSMBLOB_DISPLAY -4 /* Use the "display" slot */ +#define LSMBLOB_FIRST -5 /* Use the default "display" slot */ + +/** + * lsmblob_init - initialize an lsmblob structure. + * @blob: Pointer to the data to initialize + * @secid: The initial secid value + * + * Set all secid for all modules to the specified value. + */ +static inline void lsmblob_init(struct lsmblob *blob, u32 secid) +{ + int i; + + for (i = 0; i < LSMBLOB_ENTRIES; i++) + blob->secid[i] = secid; +} + +/** + * lsmblob_is_set - report if there is an value in the lsmblob + * @blob: Pointer to the exported LSM data + * + * Returns true if there is a secid set, false otherwise + */ +static inline bool lsmblob_is_set(struct lsmblob *blob) +{ + struct lsmblob empty = {}; + + return !!memcmp(blob, &empty, sizeof(*blob)); +} + +/** + * lsmblob_equal - report if the two lsmblob's are equal + * @bloba: Pointer to one LSM data + * @blobb: Pointer to the other LSM data + * + * Returns true if all entries in the two are equal, false otherwise + */ +static inline bool lsmblob_equal(struct lsmblob *bloba, struct lsmblob *blobb) +{ + return !memcmp(bloba, blobb, sizeof(*bloba)); +} + +/** + * lsmblob_value - find the first non-zero value in an lsmblob structure. + * @blob: Pointer to the data + * + * This needs to be used with extreme caution, as the cases where + * it is appropriate are rare. + * + * Return the first secid value set in the lsmblob. + * There should only be one. + */ +static inline u32 lsmblob_value(const struct lsmblob *blob) +{ + int i; + + for (i = 0; i < LSMBLOB_ENTRIES; i++) + if (blob->secid[i]) + return blob->secid[i]; + + return 0; +} + +const char *security_lsm_slot_name(int slot); + +static inline bool lsm_multiple_contexts(void) +{ +#ifdef CONFIG_SECURITY + return security_lsm_slot_name(1) != NULL; +#else + return false; +#endif +} + /* These functions are in security/commoncap.c */ extern int cap_capable(const struct cred *cred, struct user_namespace *ns, int cap, unsigned int opts); @@ -355,7 +479,7 @@ int security_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc); int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags); int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size); -void security_inode_getsecid(struct inode *inode, u32 *secid); +void security_inode_getsecid(struct inode *inode, struct lsmblob *blob); int security_inode_copy_up(struct dentry *src, struct cred **new); int security_inode_copy_up_xattr(const char *name); int security_kernfs_init_security(struct kernfs_node *kn_dir, @@ -382,8 +506,8 @@ void security_cred_free(struct cred *cred); int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp); void security_transfer_creds(struct cred *new, const struct cred *old); -void security_cred_getsecid(const struct cred *c, u32 *secid); -int security_kernel_act_as(struct cred *new, u32 secid); +void security_cred_getsecid(const struct cred *c, struct lsmblob *blob); +int security_kernel_act_as(struct cred *new, struct lsmblob *blob); int security_kernel_create_files_as(struct cred *new, struct inode *inode); int security_kernel_module_request(char *kmod_name); int security_kernel_load_data(enum kernel_load_data_id id); @@ -397,7 +521,7 @@ int security_task_setpgid(struct task_struct *p, pid_t pgid); int security_task_getpgid(struct task_struct *p); int security_task_getsid(struct task_struct *p); -void security_task_getsecid(struct task_struct *p, u32 *secid); +void security_task_getsecid(struct task_struct *p, struct lsmblob *blob); int security_task_setnice(struct task_struct *p, int nice); int security_task_setioprio(struct task_struct *p, int ioprio); int security_task_getioprio(struct task_struct *p); @@ -414,7 +538,7 @@ unsigned long arg4, unsigned long arg5); void security_task_to_inode(struct task_struct *p, struct inode *inode); int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag); -void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid); +void security_ipc_getsecid(struct kern_ipc_perm *ipcp, struct lsmblob *blob); int security_msg_msg_alloc(struct msg_msg *msg); void security_msg_msg_free(struct msg_msg *msg); int security_msg_queue_alloc(struct kern_ipc_perm *msq); @@ -443,14 +567,17 @@ size_t size); int security_netlink_send(struct sock *sk, struct sk_buff *skb); int security_ismaclabel(const char *name); -int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen); -int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid); -void security_release_secctx(char *secdata, u32 seclen); +int security_secid_to_secctx(struct lsmblob *blob, struct lsmcontext *cp, + int display); +int security_secctx_to_secid(const char *secdata, u32 seclen, + struct lsmblob *blob); +void security_release_secctx(struct lsmcontext *cp); void security_inode_invalidate_secctx(struct inode *inode); int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen); int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen); -int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen); +int security_inode_getsecctx(struct inode *inode, struct lsmcontext *cp); int security_locked_down(enum lockdown_reason what); +int security_lock_kernel_down(const char *where, enum lockdown_reason level); #else /* CONFIG_SECURITY */ static inline int call_blocking_lsm_notifier(enum lsm_event event, void *data) @@ -864,7 +991,7 @@ static inline int security_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc) { - return -EOPNOTSUPP; + return cap_inode_getsecurity(inode, name, buffer, alloc); } static inline int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags) @@ -877,9 +1004,10 @@ return 0; } -static inline void security_inode_getsecid(struct inode *inode, u32 *secid) +static inline void security_inode_getsecid(struct inode *inode, + struct lsmblob *blob) { - *secid = 0; + lsmblob_init(blob, 0); } static inline int security_inode_copy_up(struct dentry *src, struct cred **new) @@ -997,7 +1125,8 @@ { } -static inline int security_kernel_act_as(struct cred *cred, u32 secid) +static inline int security_kernel_act_as(struct cred *cred, + struct lsmblob *blob) { return 0; } @@ -1060,9 +1189,10 @@ return 0; } -static inline void security_task_getsecid(struct task_struct *p, u32 *secid) +static inline void security_task_getsecid(struct task_struct *p, + struct lsmblob *blob) { - *secid = 0; + lsmblob_init(blob, 0); } static inline int security_task_setnice(struct task_struct *p, int nice) @@ -1133,9 +1263,10 @@ return 0; } -static inline void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) +static inline void security_ipc_getsecid(struct kern_ipc_perm *ipcp, + struct lsmblob *blob) { - *secid = 0; + lsmblob_init(blob, 0); } static inline int security_msg_msg_alloc(struct msg_msg *msg) @@ -1255,19 +1386,20 @@ return 0; } -static inline int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen) +static inline int security_secid_to_secctx(struct lsmblob *blob, + struct lsmcontext *cp, int display) { return -EOPNOTSUPP; } static inline int security_secctx_to_secid(const char *secdata, u32 seclen, - u32 *secid) + struct lsmblob *blob) { return -EOPNOTSUPP; } -static inline void security_release_secctx(char *secdata, u32 seclen) +static inline void security_release_secctx(struct lsmcontext *cp) { } @@ -1283,7 +1415,8 @@ { return -EOPNOTSUPP; } -static inline int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) +static inline int security_inode_getsecctx(struct inode *inode, + struct lsmcontext *cp) { return -EOPNOTSUPP; } @@ -1291,6 +1424,10 @@ { return 0; } +static inline int security_lock_kernel_down(const char *where, enum lockdown_reason level) +{ + return 0; +} #endif /* CONFIG_SECURITY */ #if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE) @@ -1338,7 +1475,8 @@ int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb); int security_socket_getpeersec_stream(struct socket *sock, char __user *optval, int __user *optlen, unsigned len); -int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid); +int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, + struct lsmblob *blob); int security_sk_alloc(struct sock *sk, int family, gfp_t priority); void security_sk_free(struct sock *sk); void security_sk_clone(const struct sock *sk, struct sock *newsk); @@ -1351,7 +1489,7 @@ const struct request_sock *req); void security_inet_conn_established(struct sock *sk, struct sk_buff *skb); -int security_secmark_relabel_packet(u32 secid); +int security_secmark_relabel_packet(struct lsmblob *blob); void security_secmark_refcount_inc(void); void security_secmark_refcount_dec(void); int security_tun_dev_alloc_security(void **security); @@ -1476,7 +1614,9 @@ return -ENOPROTOOPT; } -static inline int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid) +static inline int security_socket_getpeersec_dgram(struct socket *sock, + struct sk_buff *skb, + struct lsmblob *blob) { return -ENOPROTOOPT; } @@ -1522,7 +1662,7 @@ { } -static inline int security_secmark_relabel_packet(u32 secid) +static inline int security_secmark_relabel_packet(struct lsmblob *blob) { return 0; } @@ -1820,8 +1960,9 @@ #ifdef CONFIG_SECURITY int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule); int security_audit_rule_known(struct audit_krule *krule); -int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule); -void security_audit_rule_free(void *lsmrule); +int security_audit_rule_match(struct lsmblob *blob, u32 field, u32 op, + void **lsmrule); +void security_audit_rule_free(void **lsmrule); #else @@ -1836,13 +1977,13 @@ return 0; } -static inline int security_audit_rule_match(u32 secid, u32 field, u32 op, - void *lsmrule) +static inline int security_audit_rule_match(struct lsmblob *blob, u32 field, + u32 op, void **lsmrule) { return 0; } -static inline void security_audit_rule_free(void *lsmrule) +static inline void security_audit_rule_free(void **lsmrule) { } #endif /* CONFIG_SECURITY */ --- linux-5.8.0.orig/include/linux/seq_buf.h +++ linux-5.8.0/include/linux/seq_buf.h @@ -30,7 +30,7 @@ } static inline void -seq_buf_init(struct seq_buf *s, unsigned char *buf, unsigned int size) +seq_buf_init(struct seq_buf *s, char *buf, unsigned int size) { s->buffer = buf; s->size = size; --- linux-5.8.0.orig/include/linux/seq_file.h +++ linux-5.8.0/include/linux/seq_file.h @@ -107,6 +107,7 @@ char *mangle_path(char *s, const char *p, const char *esc); int seq_open(struct file *, const struct seq_operations *); ssize_t seq_read(struct file *, char __user *, size_t, loff_t *); +ssize_t seq_read_iter(struct kiocb *iocb, struct iov_iter *iter); loff_t seq_lseek(struct file *, loff_t, int); int seq_release(struct inode *, struct file *); int seq_write(struct seq_file *seq, const void *data, size_t len); --- linux-5.8.0.orig/include/linux/serial_core.h +++ linux-5.8.0/include/linux/serial_core.h @@ -248,6 +248,7 @@ unsigned char hub6; /* this should be in the 8250 driver */ unsigned char suspended; + unsigned char console_reinit; const char *name; /* port name */ struct attribute_group *attr_group; /* port specific attributes */ const struct attribute_group **tty_groups; /* all attributes (serial core use only) */ --- linux-5.8.0.orig/include/linux/shmem_fs.h +++ linux-5.8.0/include/linux/shmem_fs.h @@ -27,10 +27,13 @@ }; struct shmem_sb_info { + struct mutex idr_lock; + bool idr_nouse; + struct idr idr; /* manages inode-number */ unsigned long max_blocks; /* How many blocks are allowed */ struct percpu_counter used_blocks; /* How many are allocated */ - unsigned long max_inodes; /* How many inodes are allowed */ - unsigned long free_inodes; /* How many are left for allocation */ + int max_inodes; /* How many inodes are allowed */ + int free_inodes; /* How many are left for allocation */ spinlock_t stat_lock; /* Serialize shmem_sb_info changes */ umode_t mode; /* Mount mode for root directory */ unsigned char huge; /* Whether to try for hugepages */ --- linux-5.8.0.orig/include/linux/skbuff.h +++ linux-5.8.0/include/linux/skbuff.h @@ -3208,8 +3208,9 @@ * is untouched. Otherwise it is extended. Returns zero on * success. The skb is freed on error if @free_on_error is true. */ -static inline int __skb_put_padto(struct sk_buff *skb, unsigned int len, - bool free_on_error) +static inline int __must_check __skb_put_padto(struct sk_buff *skb, + unsigned int len, + bool free_on_error) { unsigned int size = skb->len; @@ -3232,7 +3233,7 @@ * is untouched. Otherwise it is extended. Returns zero on * success. The skb is freed on error. */ -static inline int skb_put_padto(struct sk_buff *skb, unsigned int len) +static inline int __must_check skb_put_padto(struct sk_buff *skb, unsigned int len) { return __skb_put_padto(skb, len, true); } --- linux-5.8.0.orig/include/linux/soc/mediatek/mtk-cmdq.h +++ linux-5.8.0/include/linux/soc/mediatek/mtk-cmdq.h @@ -105,11 +105,12 @@ /** * cmdq_pkt_wfe() - append wait for event command to the CMDQ packet * @pkt: the CMDQ packet - * @event: the desired event type to "wait and CLEAR" + * @event: the desired event type to wait + * @clear: clear event or not after event arrive * * Return: 0 for success; else the error code is returned */ -int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event); +int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event, bool clear); /** * cmdq_pkt_clear_event() - append clear event command to the CMDQ packet --- linux-5.8.0.orig/include/linux/soundwire/sdw.h +++ linux-5.8.0/include/linux/soundwire/sdw.h @@ -964,6 +964,8 @@ int sdw_read(struct sdw_slave *slave, u32 addr); int sdw_write(struct sdw_slave *slave, u32 addr, u8 value); +int sdw_write_no_pm(struct sdw_slave *slave, u32 addr, u8 value); +int sdw_read_no_pm(struct sdw_slave *slave, u32 addr); int sdw_nread(struct sdw_slave *slave, u32 addr, size_t count, u8 *val); int sdw_nwrite(struct sdw_slave *slave, u32 addr, size_t count, u8 *val); --- linux-5.8.0.orig/include/linux/spi/spi.h +++ linux-5.8.0/include/linux/spi/spi.h @@ -728,6 +728,25 @@ return __spi_alloc_controller(host, size, true); } +struct spi_controller *__devm_spi_alloc_controller(struct device *dev, + unsigned int size, + bool slave); + +static inline struct spi_controller *devm_spi_alloc_master(struct device *dev, + unsigned int size) +{ + return __devm_spi_alloc_controller(dev, size, false); +} + +static inline struct spi_controller *devm_spi_alloc_slave(struct device *dev, + unsigned int size) +{ + if (!IS_ENABLED(CONFIG_SPI_SLAVE)) + return NULL; + + return __devm_spi_alloc_controller(dev, size, true); +} + extern int spi_register_controller(struct spi_controller *ctlr); extern int devm_spi_register_controller(struct device *dev, struct spi_controller *ctlr); --- linux-5.8.0.orig/include/linux/splice.h +++ linux-5.8.0/include/linux/splice.h @@ -93,4 +93,10 @@ extern const struct pipe_buf_operations page_cache_pipe_buf_ops; extern const struct pipe_buf_operations default_pipe_buf_ops; + +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +extern long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif --- linux-5.8.0.orig/include/linux/stmmac.h +++ linux-5.8.0/include/linux/stmmac.h @@ -170,6 +170,7 @@ int unicast_filter_entries; int tx_fifo_size; int rx_fifo_size; + u32 addr64; u32 rx_queues_to_use; u32 tx_queues_to_use; u8 rx_sched_algorithm; --- linux-5.8.0.orig/include/linux/stop_machine.h +++ linux-5.8.0/include/linux/stop_machine.h @@ -123,7 +123,7 @@ const struct cpumask *cpus); #else /* CONFIG_SMP || CONFIG_HOTPLUG_CPU */ -static inline int stop_machine_cpuslocked(cpu_stop_fn_t fn, void *data, +static __always_inline int stop_machine_cpuslocked(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) { unsigned long flags; @@ -134,14 +134,15 @@ return ret; } -static inline int stop_machine(cpu_stop_fn_t fn, void *data, - const struct cpumask *cpus) +static __always_inline int +stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) { return stop_machine_cpuslocked(fn, data, cpus); } -static inline int stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data, - const struct cpumask *cpus) +static __always_inline int +stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data, + const struct cpumask *cpus) { return stop_machine(fn, data, cpus); } --- linux-5.8.0.orig/include/linux/string.h +++ linux-5.8.0/include/linux/string.h @@ -161,20 +161,13 @@ #ifndef __HAVE_ARCH_MEMCHR extern void * memchr(const void *,int,__kernel_size_t); #endif -#ifndef __HAVE_ARCH_MEMCPY_MCSAFE -static inline __must_check unsigned long memcpy_mcsafe(void *dst, - const void *src, size_t cnt) -{ - memcpy(dst, src, cnt); - return 0; -} -#endif #ifndef __HAVE_ARCH_MEMCPY_FLUSHCACHE static inline void memcpy_flushcache(void *dst, const void *src, size_t cnt) { memcpy(dst, src, cnt); } #endif + void *memchr_inv(const void *s, int c, size_t n); char *strreplace(char *s, char old, char new); --- linux-5.8.0.orig/include/linux/sunrpc/xdr.h +++ linux-5.8.0/include/linux/sunrpc/xdr.h @@ -25,8 +25,7 @@ #define XDR_QUADLEN(l) (((l) + 3) >> 2) /* - * Generic opaque `network object.' At the kernel level, this type - * is used only by lockd. + * Generic opaque `network object.' */ #define XDR_MAX_NETOBJ 1024 struct xdr_netobj { --- linux-5.8.0.orig/include/linux/sunrpc/xprt.h +++ linux-5.8.0/include/linux/sunrpc/xprt.h @@ -329,6 +329,7 @@ struct rpc_xprt * (*setup)(struct xprt_create *); struct module *owner; char name[32]; + const char * netid[]; }; /* --- linux-5.8.0.orig/include/linux/swap.h +++ linux-5.8.0/include/linux/swap.h @@ -480,6 +480,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); static inline void put_swap_device(struct swap_info_struct *si) { --- linux-5.8.0.orig/include/linux/swiotlb.h +++ linux-5.8.0/include/linux/swiotlb.h @@ -5,6 +5,7 @@ #include #include #include +#include struct device; struct page; --- linux-5.8.0.orig/include/linux/syscalls.h +++ linux-5.8.0/include/linux/syscalls.h @@ -252,6 +252,30 @@ static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) #endif /* __SYSCALL_DEFINEx */ +/* For split 64-bit arguments on 32-bit architectures */ +#ifdef __LITTLE_ENDIAN +#define SC_ARG64(name) u32, name##_lo, u32, name##_hi +#else +#define SC_ARG64(name) u32, name##_hi, u32, name##_lo +#endif +#define SC_VAL64(type, name) ((type) name##_hi << 32 | name##_lo) + +#ifdef CONFIG_COMPAT +#define SYSCALL32_DEFINE1 COMPAT_SYSCALL_DEFINE1 +#define SYSCALL32_DEFINE2 COMPAT_SYSCALL_DEFINE2 +#define SYSCALL32_DEFINE3 COMPAT_SYSCALL_DEFINE3 +#define SYSCALL32_DEFINE4 COMPAT_SYSCALL_DEFINE4 +#define SYSCALL32_DEFINE5 COMPAT_SYSCALL_DEFINE5 +#define SYSCALL32_DEFINE6 COMPAT_SYSCALL_DEFINE6 +#else +#define SYSCALL32_DEFINE1 SYSCALL_DEFINE1 +#define SYSCALL32_DEFINE2 SYSCALL_DEFINE2 +#define SYSCALL32_DEFINE3 SYSCALL_DEFINE3 +#define SYSCALL32_DEFINE4 SYSCALL_DEFINE4 +#define SYSCALL32_DEFINE5 SYSCALL_DEFINE5 +#define SYSCALL32_DEFINE6 SYSCALL_DEFINE6 +#endif + /* * Called before coming back to user-mode. Returning to user-mode with an * address limit different than USER_DS can allow to overwrite kernel memory. --- linux-5.8.0.orig/include/linux/sysfs.h +++ linux-5.8.0/include/linux/sysfs.h @@ -322,6 +322,10 @@ int sysfs_group_change_owner(struct kobject *kobj, const struct attribute_group *groups, kuid_t kuid, kgid_t kgid); +__printf(2, 3) +int sysfs_emit(char *buf, const char *fmt, ...); +__printf(3, 4) +int sysfs_emit_at(char *buf, int at, const char *fmt, ...); #else /* CONFIG_SYSFS */ @@ -569,6 +573,17 @@ return 0; } +__printf(2, 3) +static inline int sysfs_emit(char *buf, const char *fmt, ...) +{ + return 0; +} + +__printf(3, 4) +static inline int sysfs_emit_at(char *buf, int at, const char *fmt, ...) +{ + return 0; +} #endif /* CONFIG_SYSFS */ static inline int __must_check sysfs_create_file(struct kobject *kobj, --- linux-5.8.0.orig/include/linux/task_work.h +++ linux-5.8.0/include/linux/task_work.h @@ -13,9 +13,14 @@ twork->func = func; } -#define TWA_RESUME 1 -#define TWA_SIGNAL 2 -int task_work_add(struct task_struct *task, struct callback_head *twork, int); +enum task_work_notify_mode { + TWA_NONE, + TWA_RESUME, + TWA_SIGNAL, +}; + +int task_work_add(struct task_struct *task, struct callback_head *twork, + enum task_work_notify_mode mode); struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t); void task_work_run(void); --- linux-5.8.0.orig/include/linux/thermal.h +++ linux-5.8.0/include/linux/thermal.h @@ -92,6 +92,8 @@ enum thermal_trend *); int (*notify) (struct thermal_zone_device *, int, enum thermal_trip_type); + void (*hot)(struct thermal_zone_device *); + void (*critical)(struct thermal_zone_device *); }; struct thermal_cooling_device_ops { @@ -416,6 +418,7 @@ void thermal_cdev_update(struct thermal_cooling_device *); void thermal_notify_framework(struct thermal_zone_device *, int); +void thermal_zone_device_critical(struct thermal_zone_device *tz); #else static inline struct thermal_zone_device *thermal_zone_device_register( const char *type, int trips, int mask, void *devdata, --- linux-5.8.0.orig/include/linux/thread_info.h +++ linux-5.8.0/include/linux/thread_info.h @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef CONFIG_THREAD_INFO_IN_TASK /* @@ -39,6 +40,18 @@ #ifdef __KERNEL__ +#ifndef arch_set_restart_data +#define arch_set_restart_data(restart) do { } while (0) +#endif + +static inline long set_restart_fn(struct restart_block *restart, + long (*fn)(struct restart_block *)) +{ + restart->fn = fn; + arch_set_restart_data(restart); + return -ERESTART_RESTARTBLOCK; +} + #ifndef THREAD_ALIGN #define THREAD_ALIGN THREAD_SIZE #endif --- linux-5.8.0.orig/include/linux/time64.h +++ linux-5.8.0/include/linux/time64.h @@ -124,6 +124,10 @@ */ static inline s64 timespec64_to_ns(const struct timespec64 *ts) { + /* Prevent multiplication overflow */ + if ((unsigned long long)ts->tv_sec >= KTIME_SEC_MAX) + return KTIME_MAX; + return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; } --- linux-5.8.0.orig/include/linux/tpm.h +++ linux-5.8.0/include/linux/tpm.h @@ -96,6 +96,7 @@ u8 *context_buf; u32 session_tbl[3]; u8 *session_buf; + u32 buf_size; }; struct tpm_bios_log { @@ -396,6 +397,10 @@ #if defined(CONFIG_TCG_TPM) || defined(CONFIG_TCG_TPM_MODULE) extern int tpm_is_tpm2(struct tpm_chip *chip); +extern __must_check int tpm_try_get_ops(struct tpm_chip *chip); +extern void tpm_put_ops(struct tpm_chip *chip); +extern ssize_t tpm_transmit_cmd(struct tpm_chip *chip, struct tpm_buf *buf, + size_t min_rsp_body_length, const char *desc); extern int tpm_pcr_read(struct tpm_chip *chip, u32 pcr_idx, struct tpm_digest *digest); extern int tpm_pcr_extend(struct tpm_chip *chip, u32 pcr_idx, @@ -409,7 +414,6 @@ { return -ENODEV; } - static inline int tpm_pcr_read(struct tpm_chip *chip, int pcr_idx, struct tpm_digest *digest) { --- linux-5.8.0.orig/include/linux/tpm_eventlog.h +++ linux-5.8.0/include/linux/tpm_eventlog.h @@ -211,9 +211,16 @@ efispecid = (struct tcg_efi_specid_event_head *)event_header->event; - /* Check if event is malformed. */ + /* + * Perform validation of the event in order to identify malformed + * events. This function may be asked to parse arbitrary byte sequences + * immediately following a valid event log. The caller expects this + * function to recognize that the byte sequence is not a valid event + * and to return an event size of 0. + */ if (memcmp(efispecid->signature, TCG_SPECID_SIG, - sizeof(TCG_SPECID_SIG)) || count > efispecid->num_algs) { + sizeof(TCG_SPECID_SIG)) || + !efispecid->num_algs || count != efispecid->num_algs) { size = 0; goto out; } --- linux-5.8.0.orig/include/linux/trace_seq.h +++ linux-5.8.0/include/linux/trace_seq.h @@ -12,7 +12,7 @@ */ struct trace_seq { - unsigned char buffer[PAGE_SIZE]; + char buffer[PAGE_SIZE]; struct seq_buf seq; int full; }; @@ -51,7 +51,7 @@ * that is about to be written to and then return the result * of that write. */ -static inline unsigned char * +static inline char * trace_seq_buffer_ptr(struct trace_seq *s) { return s->buffer + seq_buf_used(&s->seq); --- linux-5.8.0.orig/include/linux/tracepoint.h +++ linux-5.8.0/include/linux/tracepoint.h @@ -361,7 +361,7 @@ static const char *___tp_str __tracepoint_string = str; \ ___tp_str; \ }) -#define __tracepoint_string __attribute__((section("__tracepoint_str"))) +#define __tracepoint_string __attribute__((section("__tracepoint_str"), used)) #else /* * tracepoint_string() is used to save the string address for userspace --- linux-5.8.0.orig/include/linux/tty.h +++ linux-5.8.0/include/linux/tty.h @@ -306,6 +306,10 @@ struct termiox *termiox; /* May be NULL for unsupported */ char name[64]; struct pid *pgrp; /* Protected by ctrl lock */ + /* + * Writes protected by both ctrl lock and legacy mutex, readers must use + * at least one of them. + */ struct pid *session; unsigned long flags; int count; @@ -418,6 +422,7 @@ extern int tty_dev_name_to_number(const char *name, dev_t *number); extern int tty_ldisc_lock(struct tty_struct *tty, unsigned long timeout); extern void tty_ldisc_unlock(struct tty_struct *tty); +extern ssize_t redirected_tty_write(struct kiocb *, struct iov_iter *); #else static inline void tty_kref_put(struct tty_struct *tty) { } --- linux-5.8.0.orig/include/linux/u64_stats_sync.h +++ linux-5.8.0/include/linux/u64_stats_sync.h @@ -115,12 +115,13 @@ } #endif +#if BITS_PER_LONG == 32 && defined(CONFIG_SMP) +#define u64_stats_init(syncp) seqcount_init(&(syncp)->seq) +#else static inline void u64_stats_init(struct u64_stats_sync *syncp) { -#if BITS_PER_LONG == 32 && defined(CONFIG_SMP) - seqcount_init(&syncp->seq); -#endif } +#endif static inline void u64_stats_update_begin(struct u64_stats_sync *syncp) { --- linux-5.8.0.orig/include/linux/uaccess.h +++ linux-5.8.0/include/linux/uaccess.h @@ -163,6 +163,19 @@ } #endif +#ifndef copy_mc_to_kernel +/* + * Without arch opt-in this generic copy_mc_to_kernel() will not handle + * #MC (or arch equivalent) during source read. + */ +static inline unsigned long __must_check +copy_mc_to_kernel(void *dst, const void *src, size_t cnt) +{ + memcpy(dst, src, cnt); + return 0; +} +#endif + static __always_inline void pagefault_disabled_inc(void) { current->pagefault_disabled++; --- linux-5.8.0.orig/include/linux/uio.h +++ linux-5.8.0/include/linux/uio.h @@ -186,10 +186,10 @@ #define _copy_from_iter_flushcache _copy_from_iter_nocache #endif -#ifdef CONFIG_ARCH_HAS_UACCESS_MCSAFE -size_t _copy_to_iter_mcsafe(const void *addr, size_t bytes, struct iov_iter *i); +#ifdef CONFIG_ARCH_HAS_COPY_MC +size_t _copy_mc_to_iter(const void *addr, size_t bytes, struct iov_iter *i); #else -#define _copy_to_iter_mcsafe _copy_to_iter +#define _copy_mc_to_iter _copy_to_iter #endif static __always_inline __must_check @@ -202,12 +202,12 @@ } static __always_inline __must_check -size_t copy_to_iter_mcsafe(void *addr, size_t bytes, struct iov_iter *i) +size_t copy_mc_to_iter(void *addr, size_t bytes, struct iov_iter *i) { if (unlikely(!check_copy_size(addr, bytes, true))) return 0; else - return _copy_to_iter_mcsafe(addr, bytes, i); + return _copy_mc_to_iter(addr, bytes, i); } size_t iov_iter_zero(size_t bytes, struct iov_iter *); @@ -261,7 +261,13 @@ { i->count = count; } -size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csump, struct iov_iter *i); + +struct csum_state { + __wsum csum; + size_t off; +}; + +size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csstate, struct iov_iter *i); size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i); bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i); size_t hash_and_copy_to_iter(const void *addr, size_t bytes, void *hashp, --- linux-5.8.0.orig/include/linux/usb.h +++ linux-5.8.0/include/linux/usb.h @@ -746,6 +746,8 @@ extern int usb_reset_device(struct usb_device *dev); extern void usb_queue_reset_device(struct usb_interface *dev); +extern struct device *usb_intf_get_dma_device(struct usb_interface *intf); + #ifdef CONFIG_ACPI extern int usb_acpi_set_power_state(struct usb_device *hdev, int index, bool enable); --- linux-5.8.0.orig/include/linux/usb/pd.h +++ linux-5.8.0/include/linux/usb/pd.h @@ -473,6 +473,7 @@ #define PD_T_ERROR_RECOVERY 100 /* minimum 25 is insufficient */ #define PD_T_SRCSWAPSTDBY 625 /* Maximum of 650ms */ #define PD_T_NEWSRC 250 /* Maximum of 275ms */ +#define PD_T_SWAP_SRC_START 20 /* Minimum of 20ms */ #define PD_T_DRP_TRY 100 /* 75 - 150 ms */ #define PD_T_DRP_TRYWAIT 600 /* 400 - 800 ms */ --- linux-5.8.0.orig/include/linux/usb_usual.h +++ linux-5.8.0/include/linux/usb_usual.h @@ -84,6 +84,10 @@ /* Cannot handle REPORT_LUNS */ \ US_FLAG(ALWAYS_SYNC, 0x20000000) \ /* lies about caching, so always sync */ \ + US_FLAG(NO_SAME, 0x40000000) \ + /* Cannot handle WRITE_SAME */ \ + US_FLAG(SENSE_AFTER_SYNC, 0x80000000) \ + /* Do REQUEST_SENSE after SYNCHRONIZE_CACHE */ \ #define US_FLAG(name, value) US_FL_##name = value , enum { US_DO_ALL_FLAGS }; --- linux-5.8.0.orig/include/linux/user_namespace.h +++ linux-5.8.0/include/linux/user_namespace.h @@ -137,6 +137,8 @@ const struct user_namespace *child); extern bool current_in_userns(const struct user_namespace *target_ns); struct ns_common *ns_get_owner(struct ns_common *ns); + +extern int unprivileged_userns_clone; #else static inline struct user_namespace *get_user_ns(struct user_namespace *ns) --- linux-5.8.0.orig/include/linux/virtio_net.h +++ linux-5.8.0/include/linux/virtio_net.h @@ -79,8 +79,13 @@ if (gso_type && skb->network_header) { struct flow_keys_basic keys; - if (!skb->protocol) + if (!skb->protocol) { + __be16 protocol = dev_parse_header_protocol(skb); + virtio_net_hdr_set_proto(skb, hdr); + if (protocol && protocol != skb->protocol) + return -EINVAL; + } retry: if (!skb_flow_dissect_flow_keys_basic(NULL, skb, &keys, NULL, 0, 0, 0, --- linux-5.8.0.orig/include/linux/vt_kern.h +++ linux-5.8.0/include/linux/vt_kern.h @@ -131,7 +131,7 @@ void vt_event_post(unsigned int event, unsigned int old, unsigned int new); int vt_waitactive(int n); void change_console(struct vc_data *new_vc); -void reset_vc(struct vc_data *vc); +void reset_vc(struct vc_data *vc, int mode); int do_unbind_con_driver(const struct consw *csw, int first, int last, int deflt); int vty_init(const struct file_operations *console_fops); --- linux-5.8.0.orig/include/linux/watch_queue.h +++ linux-5.8.0/include/linux/watch_queue.h @@ -122,6 +122,12 @@ */ #define watch_sizeof(STRUCT) (sizeof(STRUCT) << WATCH_INFO_LENGTH__SHIFT) +#else +static inline int watch_queue_init(struct pipe_inode_info *pipe) +{ + return -ENOPKG; +} + #endif #endif /* _LINUX_WATCH_QUEUE_H */ --- linux-5.8.0.orig/include/linux/ww_mutex.h +++ linux-5.8.0/include/linux/ww_mutex.h @@ -181,9 +181,10 @@ */ static inline void ww_acquire_fini(struct ww_acquire_ctx *ctx) { -#ifdef CONFIG_DEBUG_MUTEXES +#ifdef CONFIG_DEBUG_LOCK_ALLOC mutex_release(&ctx->dep_map, _THIS_IP_); - +#endif +#ifdef CONFIG_DEBUG_MUTEXES DEBUG_LOCKS_WARN_ON(ctx->acquired); if (!IS_ENABLED(CONFIG_PROVE_LOCKING)) /* --- linux-5.8.0.orig/include/linux/xattr.h +++ linux-5.8.0/include/linux/xattr.h @@ -52,8 +52,11 @@ ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size); int __vfs_setxattr(struct dentry *, struct inode *, const char *, const void *, size_t, int); int __vfs_setxattr_noperm(struct dentry *, const char *, const void *, size_t, int); +int __vfs_setxattr_locked(struct dentry *, const char *, const void *, size_t, int, struct inode **); int vfs_setxattr(struct dentry *, const char *, const void *, size_t, int); int __vfs_removexattr(struct dentry *, const char *); +int __vfs_removexattr_noperm(struct dentry *dentry, const char *name); +int __vfs_removexattr_locked(struct dentry *, const char *, struct inode **); int vfs_removexattr(struct dentry *, const char *); ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size); --- linux-5.8.0.orig/include/linux/zsmalloc.h +++ linux-5.8.0/include/linux/zsmalloc.h @@ -20,7 +20,6 @@ * zsmalloc mapping modes * * NOTE: These only make a difference when a mapped object spans pages. - * They also have no effect when ZSMALLOC_PGTABLE_MAPPING is selected. */ enum zs_mapmode { ZS_MM_RW, /* normal read-write mapping */ @@ -36,7 +35,7 @@ struct zs_pool_stats { /* How many pages were migrated (freed) */ - unsigned long pages_compacted; + atomic_long_t pages_compacted; }; struct zs_pool; --- linux-5.8.0.orig/include/media/rc-map.h +++ linux-5.8.0/include/media/rc-map.h @@ -175,6 +175,13 @@ struct rc_map map; }; +#ifdef CONFIG_MEDIA_CEC_RC +/* + * rc_map_list from rc-cec.c + */ +extern struct rc_map_list cec_map; +#endif + /* Routines from rc-map.c */ /** --- linux-5.8.0.orig/include/media/v4l2-mediabus.h +++ linux-5.8.0/include/media/v4l2-mediabus.h @@ -78,6 +78,7 @@ * @V4L2_MBUS_CCP2: CCP2 (Compact Camera Port 2) * @V4L2_MBUS_CSI2_DPHY: MIPI CSI-2 serial interface, with D-PHY * @V4L2_MBUS_CSI2_CPHY: MIPI CSI-2 serial interface, with C-PHY + * @V4L2_MBUS_INVALID: invalid bus type (keep as last) */ enum v4l2_mbus_type { V4L2_MBUS_UNKNOWN, @@ -87,6 +88,7 @@ V4L2_MBUS_CCP2, V4L2_MBUS_CSI2_DPHY, V4L2_MBUS_CSI2_CPHY, + V4L2_MBUS_INVALID, }; /** --- linux-5.8.0.orig/include/net/act_api.h +++ linux-5.8.0/include/net/act_api.h @@ -166,8 +166,7 @@ struct nlattr *est, struct tc_action **a, const struct tc_action_ops *ops, int bind, u32 flags); -void tcf_idr_insert(struct tc_action_net *tn, struct tc_action *a); - +void tcf_idr_insert_many(struct tc_action *actions[]); void tcf_idr_cleanup(struct tc_action_net *tn, u32 index); int tcf_idr_check_alloc(struct tc_action_net *tn, u32 *index, struct tc_action **a, int bind); --- linux-5.8.0.orig/include/net/af_rxrpc.h +++ linux-5.8.0/include/net/af_rxrpc.h @@ -59,7 +59,7 @@ void rxrpc_kernel_end_call(struct socket *, struct rxrpc_call *); void rxrpc_kernel_get_peer(struct socket *, struct rxrpc_call *, struct sockaddr_rxrpc *); -u32 rxrpc_kernel_get_srtt(struct socket *, struct rxrpc_call *); +bool rxrpc_kernel_get_srtt(struct socket *, struct rxrpc_call *, u32 *); int rxrpc_kernel_charge_accept(struct socket *, rxrpc_notify_rx_t, rxrpc_user_attach_call_t, unsigned long, gfp_t, unsigned int); --- linux-5.8.0.orig/include/net/af_unix.h +++ linux-5.8.0/include/net/af_unix.h @@ -36,7 +36,7 @@ kgid_t gid; struct scm_fp_list *fp; /* Passed files */ #ifdef CONFIG_SECURITY_NETWORK - u32 secid; /* Security ID */ + struct lsmblob lsmblob; /* Security LSM data */ #endif u32 consumed; } __randomize_layout; --- linux-5.8.0.orig/include/net/bluetooth/bluetooth.h +++ linux-5.8.0/include/net/bluetooth/bluetooth.h @@ -41,6 +41,8 @@ #define BLUETOOTH_VER_1_1 1 #define BLUETOOTH_VER_1_2 2 #define BLUETOOTH_VER_2_0 3 +#define BLUETOOTH_VER_2_1 4 +#define BLUETOOTH_VER_4_0 6 /* Reserv for core and drivers use */ #define BT_SKB_RESERVE 8 --- linux-5.8.0.orig/include/net/bluetooth/hci.h +++ linux-5.8.0/include/net/bluetooth/hci.h @@ -227,6 +227,25 @@ * supported. */ HCI_QUIRK_VALID_LE_STATES, + + /* When this quirk is set, then erroneous data reporting + * is ignored. This is mainly due to the fact that the HCI + * Read Default Erroneous Data Reporting command is advertised, + * but not supported; these controllers often reply with unknown + * command and tend to lock up randomly. Needing a hard reset. + * + * This quirk can be set before hci_register_dev is called or + * during the hdev->setup vendor callback. + */ + HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, + + /* + * When this quirk is set, then the hci_suspend_notifier is not + * registered. This is intended for devices which drop completely + * from the bus on system-suspend and which will show up as a new + * HCI after resume. + */ + HCI_QUIRK_NO_SUSPEND_NOTIFIER, }; /* HCI device flags */ --- linux-5.8.0.orig/include/net/bluetooth/hci_core.h +++ linux-5.8.0/include/net/bluetooth/hci_core.h @@ -1387,7 +1387,7 @@ __u8 encrypt; if (conn->state == BT_CONFIG) { - if (status) + if (!status) conn->state = BT_CONNECTED; hci_connect_cfm(conn, status); @@ -1402,11 +1402,13 @@ else encrypt = 0x01; - if (conn->sec_level == BT_SECURITY_SDP) - conn->sec_level = BT_SECURITY_LOW; + if (!status) { + if (conn->sec_level == BT_SECURITY_SDP) + conn->sec_level = BT_SECURITY_LOW; - if (conn->pending_sec_level > conn->sec_level) - conn->sec_level = conn->pending_sec_level; + if (conn->pending_sec_level > conn->sec_level) + conn->sec_level = conn->pending_sec_level; + } mutex_lock(&hci_cb_list_lock); list_for_each_entry(cb, &hci_cb_list, list) { --- linux-5.8.0.orig/include/net/bluetooth/l2cap.h +++ linux-5.8.0/include/net/bluetooth/l2cap.h @@ -665,6 +665,8 @@ struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan, unsigned long hdr_len, unsigned long len, int nb); + int (*filter) (struct l2cap_chan * chan, + struct sk_buff *skb); }; struct l2cap_conn { --- linux-5.8.0.orig/include/net/bonding.h +++ linux-5.8.0/include/net/bonding.h @@ -180,6 +180,11 @@ struct rtnl_link_stats64 slave_stats; }; +static inline struct slave *to_slave(struct kobject *kobj) +{ + return container_of(kobj, struct slave, kobj); +} + struct bond_up_slave { unsigned int count; struct rcu_head rcu; @@ -742,6 +747,9 @@ /* exported from bond_netlink.c */ extern struct rtnl_link_ops bond_link_ops; +/* exported from bond_sysfs_slave.c */ +extern const struct sysfs_ops slave_sysfs_ops; + static inline netdev_tx_t bond_tx_drop(struct net_device *dev, struct sk_buff *skb) { atomic_long_inc(&dev->tx_dropped); --- linux-5.8.0.orig/include/net/dst.h +++ linux-5.8.0/include/net/dst.h @@ -545,4 +545,15 @@ skb_dst_update_pmtu_no_confirm(skb, encap_mtu - headroom); } +struct dst_entry *dst_blackhole_check(struct dst_entry *dst, u32 cookie); +void dst_blackhole_update_pmtu(struct dst_entry *dst, struct sock *sk, + struct sk_buff *skb, u32 mtu, bool confirm_neigh); +void dst_blackhole_redirect(struct dst_entry *dst, struct sock *sk, + struct sk_buff *skb); +u32 *dst_blackhole_cow_metrics(struct dst_entry *dst, unsigned long old); +struct neighbour *dst_blackhole_neigh_lookup(const struct dst_entry *dst, + struct sk_buff *skb, + const void *daddr); +unsigned int dst_blackhole_mtu(const struct dst_entry *dst); + #endif /* _NET_DST_H */ --- linux-5.8.0.orig/include/net/flow.h +++ linux-5.8.0/include/net/flow.h @@ -116,6 +116,7 @@ fl4->saddr = saddr; fl4->fl4_dport = dport; fl4->fl4_sport = sport; + fl4->flowi4_multipath_hash = 0; } /* Reset some input parameters after previous lookup */ --- linux-5.8.0.orig/include/net/inet_connection_sock.h +++ linux-5.8.0/include/net/inet_connection_sock.h @@ -83,6 +83,8 @@ * @icsk_ext_hdr_len: Network protocol overhead (IP/IPv6 options) * @icsk_ack: Delayed ACK control data * @icsk_mtup; MTU probing control data + * @icsk_probes_tstamp: Probe timestamp (cleared by non-zero window ack) + * @icsk_user_timeout: TCP_USER_TIMEOUT value */ struct inet_connection_sock { /* inet_sock has to be the first member! */ @@ -133,6 +135,7 @@ u32 probe_timestamp; } icsk_mtup; + u32 icsk_probes_tstamp; u32 icsk_user_timeout; u64 icsk_ca_priv[104 / sizeof(u64)]; @@ -284,7 +287,7 @@ return inet_csk_reqsk_queue_len(sk) >= sk->sk_max_ack_backlog; } -void inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req); +bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req); void inet_csk_reqsk_queue_drop_and_put(struct sock *sk, struct request_sock *req); static inline void inet_csk_prepare_for_destroy_sock(struct sock *sk) @@ -316,6 +319,10 @@ int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen); +/* update the fast reuse flag when adding a socket */ +void inet_csk_update_fastreuse(struct inet_bind_bucket *tb, + struct sock *sk); + struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu); #define TCP_PINGPONG_THRESH 3 --- linux-5.8.0.orig/include/net/inet_ecn.h +++ linux-5.8.0/include/net/inet_ecn.h @@ -107,7 +107,7 @@ if ((iph->tos & INET_ECN_MASK) != INET_ECN_ECT_0) return 0; - check += (__force u16)htons(0x100); + check += (__force u16)htons(0x1); iph->check = (__force __sum16)(check + (check>=0xFFFF)); iph->tos ^= INET_ECN_MASK; --- linux-5.8.0.orig/include/net/ip.h +++ linux-5.8.0/include/net/ip.h @@ -439,12 +439,18 @@ bool forwarding) { struct net *net = dev_net(dst->dev); + unsigned int mtu; if (net->ipv4.sysctl_ip_fwd_use_pmtu || ip_mtu_locked(dst) || !forwarding) return dst_mtu(dst); + /* 'forwarding = true' case should always honour route mtu */ + mtu = dst_metric_raw(dst, RTAX_MTU); + if (mtu) + return mtu; + return min(READ_ONCE(dst->dev->mtu), IP_MAX_MTU); } --- linux-5.8.0.orig/include/net/ip_tunnels.h +++ linux-5.8.0/include/net/ip_tunnels.h @@ -100,6 +100,28 @@ }; struct metadata_dst; +/* A fan overlay /8 (250.0.0.0/8, for example) maps to exactly one /16 + * underlay (10.88.0.0/16, for example). Multiple local addresses within + * the /16 may be used, but a particular overlay may not span + * multiple underlay subnets. + * + * We store one underlay, indexed by the overlay's high order octet. + */ +#define FAN_OVERLAY_CNT 256 + +struct ip_fan_map { + __be32 underlay; + __be32 overlay; + u16 underlay_prefix; + u16 overlay_prefix; + u32 overlay_mask; + struct list_head list; + struct rcu_head rcu; +}; + +struct ip_tunnel_fan { + struct list_head fan_maps; +}; struct ip_tunnel { struct ip_tunnel __rcu *next; @@ -137,6 +159,7 @@ #endif struct ip_tunnel_prl_entry __rcu *prl; /* potential router list */ unsigned int prl_count; /* # of entries in PRL */ + struct ip_tunnel_fan fan; unsigned int ip_tnl_net_id; struct gro_cells gro_cells; __u32 fwmark; @@ -144,6 +167,11 @@ bool ignore_df; }; +static inline int fan_has_map(const struct ip_tunnel_fan *fan) +{ + return !list_empty(&fan->fan_maps); +} + struct tnl_ptk_info { __be16 flags; __be16 proto; @@ -476,9 +504,11 @@ const void *from, int len, __be16 flags) { - memcpy(ip_tunnel_info_opts(info), from, len); info->options_len = len; - info->key.tun_flags |= flags; + if (len > 0) { + memcpy(ip_tunnel_info_opts(info), from, len); + info->key.tun_flags |= flags; + } } static inline struct ip_tunnel_info *lwt_tun_info(struct lwtunnel_state *lwtstate) @@ -524,7 +554,6 @@ __be16 flags) { info->options_len = 0; - info->key.tun_flags |= flags; } #endif /* CONFIG_INET */ --- linux-5.8.0.orig/include/net/ip_vs.h +++ linux-5.8.0/include/net/ip_vs.h @@ -1624,18 +1624,16 @@ } #endif /* CONFIG_IP_VS_NFCT */ -/* Really using conntrack? */ -static inline bool ip_vs_conn_uses_conntrack(struct ip_vs_conn *cp, - struct sk_buff *skb) +/* Using old conntrack that can not be redirected to another real server? */ +static inline bool ip_vs_conn_uses_old_conntrack(struct ip_vs_conn *cp, + struct sk_buff *skb) { #ifdef CONFIG_IP_VS_NFCT enum ip_conntrack_info ctinfo; struct nf_conn *ct; - if (!(cp->flags & IP_VS_CONN_F_NFCT)) - return false; ct = nf_ct_get(skb, &ctinfo); - if (ct) + if (ct && nf_ct_is_confirmed(ct)) return true; #endif return false; --- linux-5.8.0.orig/include/net/neighbour.h +++ linux-5.8.0/include/net/neighbour.h @@ -204,6 +204,7 @@ int (*pconstructor)(struct pneigh_entry *); void (*pdestructor)(struct pneigh_entry *); void (*proxy_redo)(struct sk_buff *skb); + int (*is_multicast)(const void *pkey); bool (*allow_add)(const struct net_device *dev, struct netlink_ext_ack *extack); char *id; --- linux-5.8.0.orig/include/net/netfilter/nf_log.h +++ linux-5.8.0/include/net/netfilter/nf_log.h @@ -108,6 +108,7 @@ unsigned int logflags); void nf_log_dump_sk_uid_gid(struct net *net, struct nf_log_buf *m, struct sock *sk); +void nf_log_dump_vlan(struct nf_log_buf *m, const struct sk_buff *skb); void nf_log_dump_packet_common(struct nf_log_buf *m, u_int8_t pf, unsigned int hooknum, const struct sk_buff *skb, const struct net_device *in, --- linux-5.8.0.orig/include/net/netfilter/nf_tables.h +++ linux-5.8.0/include/net/netfilter/nf_tables.h @@ -143,6 +143,8 @@ static inline void nft_data_copy(u32 *dst, const struct nft_data *src, unsigned int len) { + if (len % NFT_REG32_SIZE) + dst[len / NFT_REG32_SIZE] = 0; memcpy(dst, src, len); } @@ -894,6 +896,12 @@ return (struct nft_expr *)&rule->data[rule->dlen]; } +static inline bool nft_expr_more(const struct nft_rule *rule, + const struct nft_expr *expr) +{ + return expr != nft_expr_last(rule) && expr->ops; +} + static inline struct nft_userdata *nft_userdata(const struct nft_rule *rule) { return (void *)&rule->data[rule->dlen]; @@ -1484,6 +1492,7 @@ struct nft_flowtable *flowtable; bool update; struct list_head hook_list; + u32 flags; }; #define nft_trans_flowtable(trans) \ @@ -1492,10 +1501,18 @@ (((struct nft_trans_flowtable *)trans->data)->update) #define nft_trans_flowtable_hooks(trans) \ (((struct nft_trans_flowtable *)trans->data)->hook_list) +#define nft_trans_flowtable_flags(trans) \ + (((struct nft_trans_flowtable *)trans->data)->flags) int __init nft_chain_filter_init(void); void nft_chain_filter_fini(void); void __init nft_chain_route_init(void); void nft_chain_route_fini(void); + +void nf_tables_trans_destroy_flush_work(void); + +int nf_msecs_to_jiffies64(const struct nlattr *nla, u64 *result); +__be64 nf_jiffies64_to_msecs(u64 input); + #endif /* _NET_NF_TABLES_H */ --- linux-5.8.0.orig/include/net/netfilter/nf_tables_offload.h +++ linux-5.8.0/include/net/netfilter/nf_tables_offload.h @@ -37,6 +37,7 @@ struct nft_flow_key { struct flow_dissector_key_basic basic; + struct flow_dissector_key_control control; union { struct flow_dissector_key_ipv4_addrs ipv4; struct flow_dissector_key_ipv6_addrs ipv6; @@ -62,6 +63,9 @@ #define NFT_OFFLOAD_F_ACTION (1 << 0) +void nft_flow_rule_set_addr_type(struct nft_flow_rule *flow, + enum flow_dissector_key_id addr_type); + struct nft_rule; struct nft_flow_rule *nft_flow_rule_create(struct net *net, const struct nft_rule *rule); void nft_flow_rule_destroy(struct nft_flow_rule *flow); @@ -74,6 +78,9 @@ offsetof(struct nft_flow_key, __base.__field); \ (__reg)->len = __len; \ (__reg)->key = __key; \ + +#define NFT_OFFLOAD_MATCH_EXACT(__key, __base, __field, __len, __reg) \ + NFT_OFFLOAD_MATCH(__key, __base, __field, __len, __reg) \ memset(&(__reg)->mask, 0xff, (__reg)->len); int nft_chain_offload_priority(struct nft_base_chain *basechain); --- linux-5.8.0.orig/include/net/netlabel.h +++ linux-5.8.0/include/net/netlabel.h @@ -97,7 +97,7 @@ /* NetLabel audit information */ struct netlbl_audit { - u32 secid; + struct lsmblob lsmdata; kuid_t loginuid; unsigned int sessionid; }; @@ -166,7 +166,7 @@ * @attr.mls: MLS sensitivity label * @attr.mls.cat: MLS category bitmap * @attr.mls.lvl: MLS sensitivity level - * @attr.secid: LSM specific secid token + * @attr.lsmblob: LSM specific data * * Description: * This structure is used to pass security attributes between NetLabel and the @@ -201,7 +201,7 @@ struct netlbl_lsm_catmap *cat; u32 lvl; } mls; - u32 secid; + struct lsmblob lsmblob; } attr; }; @@ -415,7 +415,7 @@ const void *addr, const void *mask, u16 family, - u32 secid, + struct lsmblob *lsmblob, struct netlbl_audit *audit_info); int netlbl_cfg_unlbl_static_del(struct net *net, const char *dev_name, @@ -523,7 +523,7 @@ const void *addr, const void *mask, u16 family, - u32 secid, + struct lsmblob *lsmblob, struct netlbl_audit *audit_info) { return -ENOSYS; --- linux-5.8.0.orig/include/net/netlink.h +++ linux-5.8.0/include/net/netlink.h @@ -1936,7 +1936,8 @@ int netlink_policy_dump_start(const struct nla_policy *policy, unsigned int maxtype, unsigned long *state); -bool netlink_policy_dump_loop(unsigned long *state); +bool netlink_policy_dump_loop(unsigned long state); int netlink_policy_dump_write(struct sk_buff *skb, unsigned long state); +void netlink_policy_dump_free(unsigned long state); #endif --- linux-5.8.0.orig/include/net/nexthop.h +++ linux-5.8.0/include/net/nexthop.h @@ -366,6 +366,7 @@ int fib6_check_nexthop(struct nexthop *nh, struct fib6_config *cfg, struct netlink_ext_ack *extack); +/* Caller should either hold rcu_read_lock(), or RTNL. */ static inline struct fib6_nh *nexthop_fib6_nh(struct nexthop *nh) { struct nh_info *nhi; @@ -383,6 +384,29 @@ if (nhi->family == AF_INET6) return &nhi->fib6_nh; + return NULL; +} + +/* Variant of nexthop_fib6_nh(). + * Caller should either hold rcu_read_lock_bh(), or RTNL. + */ +static inline struct fib6_nh *nexthop_fib6_nh_bh(struct nexthop *nh) +{ + struct nh_info *nhi; + + if (nh->is_group) { + struct nh_group *nh_grp; + + nh_grp = rcu_dereference_bh_rtnl(nh->nh_grp); + nh = nexthop_mpath_select(nh_grp, 0); + if (!nh) + return NULL; + } + + nhi = rcu_dereference_bh_rtnl(nh->nh_info); + if (nhi->family == AF_INET6) + return &nhi->fib6_nh; + return NULL; } --- linux-5.8.0.orig/include/net/red.h +++ linux-5.8.0/include/net/red.h @@ -168,14 +168,24 @@ v->qcount = -1; } -static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog) +static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog, + u8 Scell_log, u8 *stab) { if (fls(qth_min) + Wlog > 32) return false; if (fls(qth_max) + Wlog > 32) return false; + if (Scell_log >= 32) + return false; if (qth_max < qth_min) return false; + if (stab) { + int i; + + for (i = 0; i < RED_STAB_SIZE; i++) + if (stab[i] >= 32) + return false; + } return true; } --- linux-5.8.0.orig/include/net/rtnetlink.h +++ linux-5.8.0/include/net/rtnetlink.h @@ -33,6 +33,7 @@ * * @list: Used internally * @kind: Identifier + * @netns_refund: Physical device, move to init_net on netns exit * @maxtype: Highest device specific netlink attribute number * @policy: Netlink policy for device specific attribute validation * @validate: Optional validation function for netlink/changelink parameters @@ -64,6 +65,7 @@ size_t priv_size; void (*setup)(struct net_device *dev); + bool netns_refund; unsigned int maxtype; const struct nla_policy *policy; int (*validate)(struct nlattr *tb[], --- linux-5.8.0.orig/include/net/sch_generic.h +++ linux-5.8.0/include/net/sch_generic.h @@ -1157,7 +1157,7 @@ old = *pold; *pold = new; if (old != NULL) - qdisc_tree_flush_backlog(old); + qdisc_purge_queue(old); sch_tree_unlock(sch); return old; --- linux-5.8.0.orig/include/net/scm.h +++ linux-5.8.0/include/net/scm.h @@ -33,7 +33,7 @@ struct scm_fp_list *fp; /* Passed files */ struct scm_creds creds; /* Skb credentials */ #ifdef CONFIG_SECURITY_NETWORK - u32 secid; /* Passed security ID */ + struct lsmblob lsmblob; /* Passed LSM data */ #endif }; @@ -46,7 +46,7 @@ #ifdef CONFIG_SECURITY_NETWORK static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) { - security_socket_getpeersec_dgram(sock, NULL, &scm->secid); + security_socket_getpeersec_dgram(sock, NULL, &scm->lsmblob); } #else static __inline__ void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) @@ -92,16 +92,17 @@ #ifdef CONFIG_SECURITY_NETWORK static inline void scm_passec(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm) { - char *secdata; - u32 seclen; + struct lsmcontext context; int err; if (test_bit(SOCK_PASSSEC, &sock->flags)) { - err = security_secid_to_secctx(scm->secid, &secdata, &seclen); + err = security_secid_to_secctx(&scm->lsmblob, &context, + LSMBLOB_DISPLAY); if (!err) { - put_cmsg(msg, SOL_SOCKET, SCM_SECURITY, seclen, secdata); - security_release_secctx(secdata, seclen); + put_cmsg(msg, SOL_SOCKET, SCM_SECURITY, + context.len, context.context); + security_release_secctx(&context); } } } --- linux-5.8.0.orig/include/net/sctp/structs.h +++ linux-5.8.0/include/net/sctp/structs.h @@ -226,12 +226,14 @@ data_ready_signalled:1; atomic_t pd_mode; + + /* Fields after this point will be skipped on copies, like on accept + * and peeloff operations + */ + /* Receive to here while partial delivery is in effect. */ struct sk_buff_head pd_lobby; - /* These must be the last fields, as they will skipped on copies, - * like on accept and peeloff operations - */ struct list_head auto_asconf_list; int do_auto_asconf; }; --- linux-5.8.0.orig/include/net/sock.h +++ linux-5.8.0/include/net/sock.h @@ -891,6 +891,8 @@ { return static_branch_unlikely(&memalloc_socks_key); } + +void __receive_sock(struct file *file); #else static inline int sk_memalloc_socks(void) @@ -898,6 +900,8 @@ return 0; } +static inline void __receive_sock(struct file *file) +{ } #endif static inline gfp_t sk_gfp_mask(const struct sock *sk, gfp_t gfp_mask) @@ -1905,10 +1909,13 @@ sk->sk_txhash = net_tx_rndhash(); } -static inline void sk_rethink_txhash(struct sock *sk) +static inline bool sk_rethink_txhash(struct sock *sk) { - if (sk->sk_txhash) + if (sk->sk_txhash) { sk_set_txhash(sk); + return true; + } + return false; } static inline struct dst_entry * @@ -1931,12 +1938,10 @@ return dst; } -static inline void dst_negative_advice(struct sock *sk) +static inline void __dst_negative_advice(struct sock *sk) { struct dst_entry *ndst, *dst = __sk_dst_get(sk); - sk_rethink_txhash(sk); - if (dst && dst->ops->negative_advice) { ndst = dst->ops->negative_advice(dst); @@ -1948,6 +1953,12 @@ } } +static inline void dst_negative_advice(struct sock *sk) +{ + sk_rethink_txhash(sk); + __dst_negative_advice(sk); +} + static inline void __sk_dst_set(struct sock *sk, struct dst_entry *dst) { --- linux-5.8.0.orig/include/net/switchdev.h +++ linux-5.8.0/include/net/switchdev.h @@ -41,7 +41,6 @@ SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED, SWITCHDEV_ATTR_ID_BRIDGE_MROUTER, #if IS_ENABLED(CONFIG_BRIDGE_MRP) - SWITCHDEV_ATTR_ID_MRP_PORT_STATE, SWITCHDEV_ATTR_ID_MRP_PORT_ROLE, #endif }; @@ -60,7 +59,6 @@ bool vlan_filtering; /* BRIDGE_VLAN_FILTERING */ bool mc_disabled; /* MC_DISABLED */ #if IS_ENABLED(CONFIG_BRIDGE_MRP) - u8 mrp_port_state; /* MRP_PORT_STATE */ u8 mrp_port_role; /* MRP_PORT_ROLE */ #endif } u; --- linux-5.8.0.orig/include/net/tc_act/tc_tunnel_key.h +++ linux-5.8.0/include/net/tc_act/tc_tunnel_key.h @@ -56,7 +56,10 @@ { #ifdef CONFIG_NET_CLS_ACT struct tcf_tunnel_key *t = to_tunnel_key(a); - struct tcf_tunnel_key_params *params = rtnl_dereference(t->params); + struct tcf_tunnel_key_params *params; + + params = rcu_dereference_protected(t->params, + lockdep_is_held(&a->tcfa_lock)); return ¶ms->tcft_enc_metadata->u.tun_info; #else --- linux-5.8.0.orig/include/net/tcp.h +++ linux-5.8.0/include/net/tcp.h @@ -625,6 +625,7 @@ unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu); unsigned int tcp_current_mss(struct sock *sk); +u32 tcp_clamp_probe0_to_user_timeout(const struct sock *sk, u32 when); /* Bound MSS / TSO packet size with the half of the window */ static inline int tcp_bound_to_half_wnd(struct tcp_sock *tp, int pktsize) @@ -1422,8 +1423,13 @@ */ static inline bool tcp_rmem_pressure(const struct sock *sk) { - int rcvbuf = READ_ONCE(sk->sk_rcvbuf); - int threshold = rcvbuf - (rcvbuf >> 3); + int rcvbuf, threshold; + + if (tcp_under_memory_pressure(sk)) + return true; + + rcvbuf = READ_ONCE(sk->sk_rcvbuf); + threshold = rcvbuf - (rcvbuf >> 3); return atomic_read(&sk->sk_rmem_alloc) > threshold; } @@ -1664,6 +1670,8 @@ void tcp_fastopen_ctx_destroy(struct net *net); int tcp_fastopen_reset_cipher(struct net *net, struct sock *sk, void *primary_key, void *backup_key); +int tcp_fastopen_get_cipher(struct net *net, struct inet_connection_sock *icsk, + u64 *key); void tcp_fastopen_add_skb(struct sock *sk, struct sk_buff *skb); struct sock *tcp_try_fastopen(struct sock *sk, struct sk_buff *skb, struct request_sock *req, @@ -2056,7 +2064,7 @@ void tcp_newreno_mark_lost(struct sock *sk, bool snd_una_advanced); extern s32 tcp_rack_skb_timeout(struct tcp_sock *tp, struct sk_buff *skb, u32 reo_wnd); -extern void tcp_rack_mark_lost(struct sock *sk); +extern bool tcp_rack_mark_lost(struct sock *sk); extern void tcp_rack_advance(struct tcp_sock *tp, u8 sacked, u32 end_seq, u64 xmit_time); extern void tcp_rack_reo_timeout(struct sock *sk); --- linux-5.8.0.orig/include/net/tls.h +++ linux-5.8.0/include/net/tls.h @@ -199,6 +199,12 @@ * to be atomic. */ TLS_TX_SYNC_SCHED = 1, + /* tls_dev_del was called for the RX side, device state was released, + * but tls_ctx->netdev might still be kept, because TX-side driver + * resources might not be released yet. Used to prevent the second + * tls_dev_del call in tls_device_down if it happens simultaneously. + */ + TLS_RX_DEV_CLOSED = 2, }; struct cipher_context { @@ -291,11 +297,20 @@ enum tls_offload_sync_type { TLS_OFFLOAD_SYNC_TYPE_DRIVER_REQ = 0, TLS_OFFLOAD_SYNC_TYPE_CORE_NEXT_HINT = 1, + TLS_OFFLOAD_SYNC_TYPE_DRIVER_REQ_ASYNC = 2, }; #define TLS_DEVICE_RESYNC_NH_START_IVAL 2 #define TLS_DEVICE_RESYNC_NH_MAX_IVAL 128 +#define TLS_DEVICE_RESYNC_ASYNC_LOGMAX 13 +struct tls_offload_resync_async { + atomic64_t req; + u16 loglen; + u16 rcd_delta; + u32 log[TLS_DEVICE_RESYNC_ASYNC_LOGMAX]; +}; + struct tls_offload_context_rx { /* sw must be the first member of tls_offload_context_rx */ struct tls_sw_context_rx sw; @@ -314,6 +329,10 @@ u32 decrypted_failed; u32 decrypted_tgt; } resync_nh; + /* TLS_OFFLOAD_SYNC_TYPE_DRIVER_REQ_ASYNC */ + struct { + struct tls_offload_resync_async *resync_async; + }; }; u8 driver_state[] __aligned(8); /* The TLS layer reserves room for driver specific state @@ -459,6 +478,18 @@ return (i == -1); } +static inline void tls_bigint_subtract(unsigned char *seq, int n) +{ + u64 rcd_sn; + __be64 *p; + + BUILD_BUG_ON(TLS_MAX_REC_SEQ_SIZE != 8); + + p = (__be64 *)seq; + rcd_sn = be64_to_cpu(*p); + *p = cpu_to_be64(rcd_sn - n); +} + static inline struct tls_context *tls_get_ctx(const struct sock *sk) { struct inet_connection_sock *icsk = inet_csk(sk); @@ -606,9 +637,9 @@ } #endif +#define RESYNC_REQ BIT(0) +#define RESYNC_REQ_ASYNC BIT(1) /* The TLS context is valid until sk_destruct is called */ -#define RESYNC_REQ (1 << 0) -#define RESYNC_REQ_FORCE (1 << 1) static inline void tls_offload_rx_resync_request(struct sock *sk, __be32 seq) { struct tls_context *tls_ctx = tls_get_ctx(sk); @@ -617,12 +648,27 @@ atomic64_set(&rx_ctx->resync_req, ((u64)ntohl(seq) << 32) | RESYNC_REQ); } -static inline void tls_offload_rx_force_resync_request(struct sock *sk) +/* Log all TLS record header TCP sequences in [seq, seq+len] */ +static inline void +tls_offload_rx_resync_async_request_start(struct sock *sk, __be32 seq, u16 len) +{ + struct tls_context *tls_ctx = tls_get_ctx(sk); + struct tls_offload_context_rx *rx_ctx = tls_offload_ctx_rx(tls_ctx); + + atomic64_set(&rx_ctx->resync_async->req, ((u64)ntohl(seq) << 32) | + (len << 16) | RESYNC_REQ | RESYNC_REQ_ASYNC); + rx_ctx->resync_async->loglen = 0; + rx_ctx->resync_async->rcd_delta = 0; +} + +static inline void +tls_offload_rx_resync_async_request_end(struct sock *sk, __be32 seq) { struct tls_context *tls_ctx = tls_get_ctx(sk); struct tls_offload_context_rx *rx_ctx = tls_offload_ctx_rx(tls_ctx); - atomic64_set(&rx_ctx->resync_req, RESYNC_REQ | RESYNC_REQ_FORCE); + atomic64_set(&rx_ctx->resync_async->req, + ((u64)ntohl(seq) << 32) | RESYNC_REQ); } static inline void --- linux-5.8.0.orig/include/net/udp.h +++ linux-5.8.0/include/net/udp.h @@ -171,7 +171,7 @@ int udp_gro_complete(struct sk_buff *skb, int nhoff, udp_lookup_t lookup); struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb, - netdev_features_t features); + netdev_features_t features, bool is_ipv6); static inline struct udphdr *udp_gro_udphdr(struct sk_buff *skb) { --- linux-5.8.0.orig/include/net/vxlan.h +++ linux-5.8.0/include/net/vxlan.h @@ -243,6 +243,8 @@ struct net *net; /* netns for packet i/o */ struct vxlan_rdst default_dst; /* default destination */ + struct ip_tunnel_fan fan; + struct timer_list age_timer; spinlock_t hash_lock[FDB_HASH_SIZE]; unsigned int addrcnt; --- linux-5.8.0.orig/include/net/xfrm.h +++ linux-5.8.0/include/net/xfrm.h @@ -672,11 +672,13 @@ if (audit_enabled == AUDIT_OFF) return NULL; + audit_stamp_context(audit_context()); audit_buf = audit_log_start(audit_context(), GFP_ATOMIC, AUDIT_MAC_IPSEC_EVENT); if (audit_buf == NULL) return NULL; audit_log_format(audit_buf, "op=%s", op); + audit_log_lsm(NULL, false); return audit_buf; } @@ -690,7 +692,7 @@ AUDIT_SID_UNSET; audit_log_format(audit_buf, " auid=%u ses=%u", auid, ses); - audit_log_task_context(audit_buf); + audit_log_task_context(audit_buf, NULL); } void xfrm_audit_policy_add(struct xfrm_policy *xp, int result, bool task_valid); @@ -1767,21 +1769,17 @@ static inline int xfrm_replay_clone(struct xfrm_state *x, struct xfrm_state *orig) { - x->replay_esn = kzalloc(xfrm_replay_state_esn_len(orig->replay_esn), + + x->replay_esn = kmemdup(orig->replay_esn, + xfrm_replay_state_esn_len(orig->replay_esn), GFP_KERNEL); if (!x->replay_esn) return -ENOMEM; - - x->replay_esn->bmp_len = orig->replay_esn->bmp_len; - x->replay_esn->replay_window = orig->replay_esn->replay_window; - - x->preplay_esn = kmemdup(x->replay_esn, - xfrm_replay_state_esn_len(x->replay_esn), + x->preplay_esn = kmemdup(orig->preplay_esn, + xfrm_replay_state_esn_len(orig->preplay_esn), GFP_KERNEL); - if (!x->preplay_esn) { - kfree(x->replay_esn); + if (!x->preplay_esn) return -ENOMEM; - } return 0; } --- linux-5.8.0.orig/include/rdma/ib_umem.h +++ linux-5.8.0/include/rdma/ib_umem.h @@ -95,10 +95,11 @@ size_t length) { return -EINVAL; } -static inline int ib_umem_find_best_pgsz(struct ib_umem *umem, - unsigned long pgsz_bitmap, - unsigned long virt) { - return -EINVAL; +static inline unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem, + unsigned long pgsz_bitmap, + unsigned long virt) +{ + return 0; } #endif /* CONFIG_INFINIBAND_USER_MEM */ --- linux-5.8.0.orig/include/rdma/ib_verbs.h +++ linux-5.8.0/include/rdma/ib_verbs.h @@ -1489,11 +1489,6 @@ RDMA_REMOVE_DRIVER_REMOVE, /* uobj is being cleaned-up before being committed */ RDMA_REMOVE_ABORT, - /* - * uobj has been fully created, with the uobj->object set, but is being - * cleaned up before being comitted - */ - RDMA_REMOVE_ABORT_HWOBJ, }; struct ib_rdmacg_object { @@ -2465,7 +2460,7 @@ int (*create_cq)(struct ib_cq *cq, const struct ib_cq_init_attr *attr, struct ib_udata *udata); int (*modify_cq)(struct ib_cq *cq, u16 cq_count, u16 cq_period); - void (*destroy_cq)(struct ib_cq *cq, struct ib_udata *udata); + int (*destroy_cq)(struct ib_cq *cq, struct ib_udata *udata); int (*resize_cq)(struct ib_cq *cq, int cqe, struct ib_udata *udata); struct ib_mr *(*get_dma_mr)(struct ib_pd *pd, int mr_access_flags); struct ib_mr *(*reg_user_mr)(struct ib_pd *pd, u64 start, u64 length, @@ -3834,46 +3829,15 @@ return qp->device->ops.post_recv(qp, recv_wr, bad_recv_wr ? : &dummy); } -struct ib_cq *__ib_alloc_cq_user(struct ib_device *dev, void *private, - int nr_cqe, int comp_vector, - enum ib_poll_context poll_ctx, - const char *caller, struct ib_udata *udata); - -/** - * ib_alloc_cq_user: Allocate kernel/user CQ - * @dev: The IB device - * @private: Private data attached to the CQE - * @nr_cqe: Number of CQEs in the CQ - * @comp_vector: Completion vector used for the IRQs - * @poll_ctx: Context used for polling the CQ - * @udata: Valid user data or NULL for kernel objects - */ -static inline struct ib_cq *ib_alloc_cq_user(struct ib_device *dev, - void *private, int nr_cqe, - int comp_vector, - enum ib_poll_context poll_ctx, - struct ib_udata *udata) -{ - return __ib_alloc_cq_user(dev, private, nr_cqe, comp_vector, poll_ctx, - KBUILD_MODNAME, udata); -} - -/** - * ib_alloc_cq: Allocate kernel CQ - * @dev: The IB device - * @private: Private data attached to the CQE - * @nr_cqe: Number of CQEs in the CQ - * @comp_vector: Completion vector used for the IRQs - * @poll_ctx: Context used for polling the CQ - * - * NOTE: for user cq use ib_alloc_cq_user with valid udata! - */ +struct ib_cq *__ib_alloc_cq(struct ib_device *dev, void *private, int nr_cqe, + int comp_vector, enum ib_poll_context poll_ctx, + const char *caller); static inline struct ib_cq *ib_alloc_cq(struct ib_device *dev, void *private, int nr_cqe, int comp_vector, enum ib_poll_context poll_ctx) { - return ib_alloc_cq_user(dev, private, nr_cqe, comp_vector, poll_ctx, - NULL); + return __ib_alloc_cq(dev, private, nr_cqe, comp_vector, poll_ctx, + KBUILD_MODNAME); } struct ib_cq *__ib_alloc_cq_any(struct ib_device *dev, void *private, @@ -3895,26 +3859,7 @@ KBUILD_MODNAME); } -/** - * ib_free_cq_user - Free kernel/user CQ - * @cq: The CQ to free - * @udata: Valid user data or NULL for kernel objects - * - * NOTE: This function shouldn't be called on shared CQs. - */ -void ib_free_cq_user(struct ib_cq *cq, struct ib_udata *udata); - -/** - * ib_free_cq - Free kernel CQ - * @cq: The CQ to free - * - * NOTE: for user cq use ib_free_cq_user with valid udata! - */ -static inline void ib_free_cq(struct ib_cq *cq) -{ - ib_free_cq_user(cq, NULL); -} - +void ib_free_cq(struct ib_cq *cq); int ib_process_cq_direct(struct ib_cq *cq, int budget); /** @@ -3972,7 +3917,9 @@ */ static inline void ib_destroy_cq(struct ib_cq *cq) { - ib_destroy_cq_user(cq, NULL); + int ret = ib_destroy_cq_user(cq, NULL); + + WARN_ONCE(ret, "Destroy of kernel CQ shouldn't fail"); } /** @@ -4741,6 +4688,19 @@ } /** + * ibdev_to_node - return the NUMA node for a given ib_device + * @dev: device to get the NUMA node for. + */ +static inline int ibdev_to_node(struct ib_device *ibdev) +{ + struct device *parent = ibdev->dev.parent; + + if (!parent) + return NUMA_NO_NODE; + return dev_to_node(parent); +} + +/** * rdma_device_to_drv_device - Helper macro to reach back to driver's * ib_device holder structure from device pointer. * --- linux-5.8.0.orig/include/scsi/libiscsi.h +++ linux-5.8.0/include/scsi/libiscsi.h @@ -132,6 +132,9 @@ void *dd_data; /* driver/transport data */ }; +/* invalid scsi_task pointer */ +#define INVALID_SCSI_TASK (struct iscsi_task *)-1l + static inline int iscsi_task_has_unsol_data(struct iscsi_task *task) { return task->unsol_r2t.data_length > task->unsol_r2t.sent; --- linux-5.8.0.orig/include/scsi/scsi_cmnd.h +++ linux-5.8.0/include/scsi/scsi_cmnd.h @@ -165,7 +165,8 @@ size_t *offset, size_t *len); extern void scsi_kunmap_atomic_sg(void *virt); -extern blk_status_t scsi_init_io(struct scsi_cmnd *cmd); +blk_status_t scsi_alloc_sgtables(struct scsi_cmnd *cmd); +void scsi_free_sgtables(struct scsi_cmnd *cmd); #ifdef CONFIG_SCSI_DMA extern int scsi_dma_map(struct scsi_cmnd *cmd); --- linux-5.8.0.orig/include/scsi/scsi_common.h +++ linux-5.8.0/include/scsi/scsi_common.h @@ -25,6 +25,13 @@ scsi_varlen_cdb_length(cmnd) : COMMAND_SIZE(cmnd[0]); } +static inline unsigned char +scsi_command_control(const unsigned char *cmnd) +{ + return (cmnd[0] == VARIABLE_LENGTH_CMD) ? + cmnd[1] : cmnd[COMMAND_SIZE(cmnd[0]) - 1]; +} + /* Returns a human-readable name for the device */ extern const char *scsi_device_type(unsigned type); --- linux-5.8.0.orig/include/soc/mscc/ocelot.h +++ linux-5.8.0/include/soc/mscc/ocelot.h @@ -468,6 +468,7 @@ struct ocelot_ops { int (*reset)(struct ocelot *ocelot); + u16 (*wm_enc)(u16 value); }; struct ocelot_acl_block { --- linux-5.8.0.orig/include/soc/nps/common.h +++ linux-5.8.0/include/soc/nps/common.h @@ -45,6 +45,12 @@ #define CTOP_INST_MOV2B_FLIP_R3_B1_B2_INST 0x5B60 #define CTOP_INST_MOV2B_FLIP_R3_B1_B2_LIMM 0x00010422 +#ifndef AUX_IENABLE +#define AUX_IENABLE 0x40c +#endif + +#define CTOP_AUX_IACK (0xFFFFF800 + 0x088) + #ifndef __ASSEMBLY__ /* In order to increase compilation test coverage */ --- linux-5.8.0.orig/include/sound/hda_codec.h +++ linux-5.8.0/include/sound/hda_codec.h @@ -253,6 +253,7 @@ unsigned int force_pin_prefix:1; /* Add location prefix */ unsigned int link_down_at_suspend:1; /* link down at runtime suspend */ unsigned int relaxed_resume:1; /* don't resume forcibly for jack */ + unsigned int forced_resume:1; /* forced resume for jack */ unsigned int mst_no_extra_pcms:1; /* no backup PCMs for DP-MST */ #ifdef CONFIG_PM --- linux-5.8.0.orig/include/sound/intel-nhlt.h +++ linux-5.8.0/include/sound/intel-nhlt.h @@ -113,6 +113,11 @@ } __packed; enum { + NHLT_CONFIG_TYPE_GENERIC = 0, + NHLT_CONFIG_TYPE_MIC_ARRAY = 1 +}; + +enum { NHLT_MIC_ARRAY_2CH_SMALL = 0xa, NHLT_MIC_ARRAY_2CH_BIG = 0xb, NHLT_MIC_ARRAY_4CH_1ST_GEOM = 0xc, --- linux-5.8.0.orig/include/sound/soc.h +++ linux-5.8.0/include/sound/soc.h @@ -1205,6 +1205,8 @@ ((i) < (rtd)->num_cpus + (rtd)->num_codecs) && \ ((dai) = (rtd)->dais[i]); \ (i)++) +#define for_each_rtd_dais_rollback(rtd, i, dai) \ + for (; (--(i) >= 0) && ((dai) = (rtd)->dais[i]);) void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd); @@ -1373,6 +1375,8 @@ struct snd_soc_dai *snd_soc_find_dai( const struct snd_soc_dai_link_component *dlc); +struct snd_soc_dai *snd_soc_find_dai_with_mutex( + const struct snd_soc_dai_link_component *dlc); #include --- linux-5.8.0.orig/include/target/target_core_backend.h +++ linux-5.8.0/include/target/target_core_backend.h @@ -70,6 +70,7 @@ void target_backend_unregister(const struct target_backend_ops *); void target_complete_cmd(struct se_cmd *, u8); +void target_set_cmd_data_length(struct se_cmd *, int); void target_complete_cmd_with_length(struct se_cmd *, u8, int); void transport_copy_sense_to_cmd(struct se_cmd *, unsigned char *); --- linux-5.8.0.orig/include/trace/events/afs.h +++ linux-5.8.0/include/trace/events/afs.h @@ -40,6 +40,7 @@ afs_server_trace_get_new_cbi, afs_server_trace_get_probe, afs_server_trace_give_up_cb, + afs_server_trace_purging, afs_server_trace_put_call, afs_server_trace_put_cbi, afs_server_trace_put_find_rsq, @@ -270,6 +271,7 @@ EM(afs_server_trace_get_new_cbi, "GET cbi ") \ EM(afs_server_trace_get_probe, "GET probe") \ EM(afs_server_trace_give_up_cb, "giveup-cb") \ + EM(afs_server_trace_purging, "PURGE ") \ EM(afs_server_trace_put_call, "PUT call ") \ EM(afs_server_trace_put_cbi, "PUT cbi ") \ EM(afs_server_trace_put_find_rsq, "PUT f-rsq") \ @@ -884,19 +886,6 @@ __entry->vnode, __entry->off, __entry->i_size) ); -/* - * We use page->private to hold the amount of the page that we've written to, - * splitting the field into two parts. However, we need to represent a range - * 0...PAGE_SIZE inclusive, so we can't support 64K pages on a 32-bit system. - */ -#if PAGE_SIZE > 32768 -#define AFS_PRIV_MAX 0xffffffff -#define AFS_PRIV_SHIFT 32 -#else -#define AFS_PRIV_MAX 0xffff -#define AFS_PRIV_SHIFT 16 -#endif - TRACE_EVENT(afs_page_dirty, TP_PROTO(struct afs_vnode *vnode, const char *where, pgoff_t page, unsigned long priv), @@ -917,10 +906,11 @@ __entry->priv = priv; ), - TP_printk("vn=%p %lx %s %lu-%lu", + TP_printk("vn=%p %lx %s %zx-%zx%s", __entry->vnode, __entry->page, __entry->where, - __entry->priv & AFS_PRIV_MAX, - __entry->priv >> AFS_PRIV_SHIFT) + afs_page_dirty_from(__entry->priv), + afs_page_dirty_to(__entry->priv), + afs_is_page_dirty_mmapped(__entry->priv) ? " M" : "") ); TRACE_EVENT(afs_call_state, --- linux-5.8.0.orig/include/trace/events/btrfs.h +++ linux-5.8.0/include/trace/events/btrfs.h @@ -1159,25 +1159,27 @@ TRACE_EVENT(find_free_extent, - TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, + TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size, u64 data), - TP_ARGS(fs_info, num_bytes, empty_size, data), + TP_ARGS(root, num_bytes, empty_size, data), TP_STRUCT__entry_btrfs( + __field( u64, root_objectid ) __field( u64, num_bytes ) __field( u64, empty_size ) __field( u64, data ) ), - TP_fast_assign_btrfs(fs_info, + TP_fast_assign_btrfs(root->fs_info, + __entry->root_objectid = root->root_key.objectid; __entry->num_bytes = num_bytes; __entry->empty_size = empty_size; __entry->data = data; ), TP_printk_btrfs("root=%llu(%s) len=%llu empty_size=%llu flags=%llu(%s)", - show_root_type(BTRFS_EXTENT_TREE_OBJECTID), + show_root_type(__entry->root_objectid), __entry->num_bytes, __entry->empty_size, __entry->data, __print_flags((unsigned long)__entry->data, "|", BTRFS_GROUP_FLAGS)) --- linux-5.8.0.orig/include/trace/events/ext4.h +++ linux-5.8.0/include/trace/events/ext4.h @@ -746,24 +746,29 @@ ); TRACE_EVENT(ext4_discard_preallocations, - TP_PROTO(struct inode *inode), + TP_PROTO(struct inode *inode, unsigned int len, unsigned int needed), - TP_ARGS(inode), + TP_ARGS(inode, len, needed), TP_STRUCT__entry( - __field( dev_t, dev ) - __field( ino_t, ino ) + __field( dev_t, dev ) + __field( ino_t, ino ) + __field( unsigned int, len ) + __field( unsigned int, needed ) ), TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; + __entry->len = len; + __entry->needed = needed; ), - TP_printk("dev %d,%d ino %lu", + TP_printk("dev %d,%d ino %lu len: %u needed %u", MAJOR(__entry->dev), MINOR(__entry->dev), - (unsigned long) __entry->ino) + (unsigned long) __entry->ino, __entry->len, + __entry->needed) ); TRACE_EVENT(ext4_mb_discard_preallocations, --- linux-5.8.0.orig/include/trace/events/rxrpc.h +++ linux-5.8.0/include/trace/events/rxrpc.h @@ -138,11 +138,16 @@ }; enum rxrpc_rtt_tx_trace { + rxrpc_rtt_tx_cancel, rxrpc_rtt_tx_data, + rxrpc_rtt_tx_no_slot, rxrpc_rtt_tx_ping, }; enum rxrpc_rtt_rx_trace { + rxrpc_rtt_rx_cancel, + rxrpc_rtt_rx_lost, + rxrpc_rtt_rx_obsolete, rxrpc_rtt_rx_ping_response, rxrpc_rtt_rx_requested_ack, }; @@ -339,10 +344,15 @@ E_(rxrpc_recvmsg_wait, "WAIT") #define rxrpc_rtt_tx_traces \ + EM(rxrpc_rtt_tx_cancel, "CNCE") \ EM(rxrpc_rtt_tx_data, "DATA") \ + EM(rxrpc_rtt_tx_no_slot, "FULL") \ E_(rxrpc_rtt_tx_ping, "PING") #define rxrpc_rtt_rx_traces \ + EM(rxrpc_rtt_rx_cancel, "CNCL") \ + EM(rxrpc_rtt_rx_obsolete, "OBSL") \ + EM(rxrpc_rtt_rx_lost, "LOST") \ EM(rxrpc_rtt_rx_ping_response, "PONG") \ E_(rxrpc_rtt_rx_requested_ack, "RACK") @@ -1087,38 +1097,43 @@ TRACE_EVENT(rxrpc_rtt_tx, TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_tx_trace why, - rxrpc_serial_t send_serial), + int slot, rxrpc_serial_t send_serial), - TP_ARGS(call, why, send_serial), + TP_ARGS(call, why, slot, send_serial), TP_STRUCT__entry( __field(unsigned int, call ) __field(enum rxrpc_rtt_tx_trace, why ) + __field(int, slot ) __field(rxrpc_serial_t, send_serial ) ), TP_fast_assign( __entry->call = call->debug_id; __entry->why = why; + __entry->slot = slot; __entry->send_serial = send_serial; ), - TP_printk("c=%08x %s sr=%08x", + TP_printk("c=%08x [%d] %s sr=%08x", __entry->call, + __entry->slot, __print_symbolic(__entry->why, rxrpc_rtt_tx_traces), __entry->send_serial) ); TRACE_EVENT(rxrpc_rtt_rx, TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, + int slot, rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial, u32 rtt, u32 rto), - TP_ARGS(call, why, send_serial, resp_serial, rtt, rto), + TP_ARGS(call, why, slot, send_serial, resp_serial, rtt, rto), TP_STRUCT__entry( __field(unsigned int, call ) __field(enum rxrpc_rtt_rx_trace, why ) + __field(int, slot ) __field(rxrpc_serial_t, send_serial ) __field(rxrpc_serial_t, resp_serial ) __field(u32, rtt ) @@ -1128,14 +1143,16 @@ TP_fast_assign( __entry->call = call->debug_id; __entry->why = why; + __entry->slot = slot; __entry->send_serial = send_serial; __entry->resp_serial = resp_serial; __entry->rtt = rtt; __entry->rto = rto; ), - TP_printk("c=%08x %s sr=%08x rr=%08x rtt=%u rto=%u", + TP_printk("c=%08x [%d] %s sr=%08x rr=%08x rtt=%u rto=%u", __entry->call, + __entry->slot, __print_symbolic(__entry->why, rxrpc_rtt_rx_traces), __entry->send_serial, __entry->resp_serial, --- linux-5.8.0.orig/include/trace/events/sunrpc.h +++ linux-5.8.0/include/trace/events/sunrpc.h @@ -68,7 +68,8 @@ TP_fast_assign( __entry->task_id = task->tk_pid; - __entry->client_id = task->tk_client->cl_clid; + __entry->client_id = task->tk_client ? + task->tk_client->cl_clid : -1; __entry->head_base = xdr->head[0].iov_base; __entry->head_len = xdr->head[0].iov_len; __entry->tail_base = xdr->tail[0].iov_base; @@ -607,10 +608,10 @@ __field(size_t, tail_len) __field(unsigned int, page_len) __field(unsigned int, len) - __string(progname, - xdr->rqst->rq_task->tk_client->cl_program->name) - __string(procedure, - xdr->rqst->rq_task->tk_msg.rpc_proc->p_name) + __string(progname, xdr->rqst ? + xdr->rqst->rq_task->tk_client->cl_program->name : "unknown") + __string(procedure, xdr->rqst ? + xdr->rqst->rq_task->tk_msg.rpc_proc->p_name : "unknown") ), TP_fast_assign( --- linux-5.8.0.orig/include/trace/events/target.h +++ linux-5.8.0/include/trace/events/target.h @@ -141,6 +141,7 @@ __field( unsigned int, opcode ) __field( unsigned int, data_length ) __field( unsigned int, task_attribute ) + __field( unsigned char, control ) __array( unsigned char, cdb, TCM_MAX_COMMAND_SIZE ) __string( initiator, cmd->se_sess->se_node_acl->initiatorname ) ), @@ -151,6 +152,7 @@ __entry->opcode = cmd->t_task_cdb[0]; __entry->data_length = cmd->data_length; __entry->task_attribute = cmd->sam_task_attr; + __entry->control = scsi_command_control(cmd->t_task_cdb); memcpy(__entry->cdb, cmd->t_task_cdb, TCM_MAX_COMMAND_SIZE); __assign_str(initiator, cmd->se_sess->se_node_acl->initiatorname); ), @@ -160,9 +162,7 @@ __entry->tag, show_opcode_name(__entry->opcode), __entry->data_length, __print_hex(__entry->cdb, 16), show_task_attribute_name(__entry->task_attribute), - scsi_command_size(__entry->cdb) <= 16 ? - __entry->cdb[scsi_command_size(__entry->cdb) - 1] : - __entry->cdb[1] + __entry->control ) ); @@ -178,6 +178,7 @@ __field( unsigned int, opcode ) __field( unsigned int, data_length ) __field( unsigned int, task_attribute ) + __field( unsigned char, control ) __field( unsigned char, scsi_status ) __field( unsigned char, sense_length ) __array( unsigned char, cdb, TCM_MAX_COMMAND_SIZE ) @@ -191,6 +192,7 @@ __entry->opcode = cmd->t_task_cdb[0]; __entry->data_length = cmd->data_length; __entry->task_attribute = cmd->sam_task_attr; + __entry->control = scsi_command_control(cmd->t_task_cdb); __entry->scsi_status = cmd->scsi_status; __entry->sense_length = cmd->scsi_status == SAM_STAT_CHECK_CONDITION ? min(18, ((u8 *) cmd->sense_buffer)[SPC_ADD_SENSE_LEN_OFFSET] + 8) : 0; @@ -208,9 +210,7 @@ show_opcode_name(__entry->opcode), __entry->data_length, __print_hex(__entry->cdb, 16), show_task_attribute_name(__entry->task_attribute), - scsi_command_size(__entry->cdb) <= 16 ? - __entry->cdb[scsi_command_size(__entry->cdb) - 1] : - __entry->cdb[1] + __entry->control ) ); --- linux-5.8.0.orig/include/trace/events/writeback.h +++ linux-5.8.0/include/trace/events/writeback.h @@ -20,7 +20,6 @@ {I_CLEAR, "I_CLEAR"}, \ {I_SYNC, "I_SYNC"}, \ {I_DIRTY_TIME, "I_DIRTY_TIME"}, \ - {I_DIRTY_TIME_EXPIRED, "I_DIRTY_TIME_EXPIRED"}, \ {I_REFERENCED, "I_REFERENCED"} \ ) @@ -191,7 +190,7 @@ ), TP_fast_assign( - strncpy(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); + strscpy_pad(__entry->name, bdi_dev_name(inode_to_bdi(inode)), 32); __entry->ino = inode->i_ino; __entry->cgroup_ino = __trace_wbc_assign_cgroup(wbc); __entry->history = history; @@ -220,7 +219,7 @@ ), TP_fast_assign( - strncpy(__entry->name, bdi_dev_name(old_wb->bdi), 32); + strscpy_pad(__entry->name, bdi_dev_name(old_wb->bdi), 32); __entry->ino = inode->i_ino; __entry->old_cgroup_ino = __trace_wb_assign_cgroup(old_wb); __entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb); @@ -253,7 +252,7 @@ struct address_space *mapping = page_mapping(page); struct inode *inode = mapping ? mapping->host : NULL; - strncpy(__entry->name, bdi_dev_name(wb->bdi), 32); + strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); __entry->bdi_id = wb->bdi->id; __entry->ino = inode ? inode->i_ino : 0; __entry->memcg_id = wb->memcg_css->id; @@ -286,7 +285,7 @@ ), TP_fast_assign( - strncpy(__entry->name, bdi_dev_name(wb->bdi), 32); + strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); __entry->frn_bdi_id = frn_bdi_id; __entry->frn_memcg_id = frn_memcg_id; @@ -498,8 +497,9 @@ TRACE_EVENT(writeback_queue_io, TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work, + unsigned long dirtied_before, int moved), - TP_ARGS(wb, work, moved), + TP_ARGS(wb, work, dirtied_before, moved), TP_STRUCT__entry( __array(char, name, 32) __field(unsigned long, older) @@ -509,19 +509,17 @@ __field(ino_t, cgroup_ino) ), TP_fast_assign( - unsigned long *older_than_this = work->older_than_this; strscpy_pad(__entry->name, bdi_dev_name(wb->bdi), 32); - __entry->older = older_than_this ? *older_than_this : 0; - __entry->age = older_than_this ? - (jiffies - *older_than_this) * 1000 / HZ : -1; + __entry->older = dirtied_before; + __entry->age = (jiffies - dirtied_before) * 1000 / HZ; __entry->moved = moved; __entry->reason = work->reason; __entry->cgroup_ino = __trace_wb_assign_cgroup(wb); ), TP_printk("bdi %s: older=%lu age=%ld enqueue=%d reason=%s cgroup_ino=%lu", __entry->name, - __entry->older, /* older_than_this in jiffies */ - __entry->age, /* older_than_this in relative milliseconds */ + __entry->older, /* dirtied_before in jiffies */ + __entry->age, /* dirtied_before in relative milliseconds */ __entry->moved, __print_symbolic(__entry->reason, WB_WORK_REASON), (unsigned long)__entry->cgroup_ino --- linux-5.8.0.orig/include/uapi/linux/android/binder.h +++ linux-5.8.0/include/uapi/linux/android/binder.h @@ -248,6 +248,7 @@ TF_ROOT_OBJECT = 0x04, /* contents are the component's root object */ TF_STATUS_CODE = 0x08, /* contents are a 32-bit status code */ TF_ACCEPT_FDS = 0x10, /* allow replies with file descriptors */ + TF_CLEAR_BUF = 0x20, /* clear buffer on txn complete */ }; struct binder_transaction_data { --- linux-5.8.0.orig/include/uapi/linux/audit.h +++ linux-5.8.0/include/uapi/linux/audit.h @@ -139,6 +139,8 @@ #define AUDIT_MAC_UNLBL_STCDEL 1417 /* NetLabel: del a static label */ #define AUDIT_MAC_CALIPSO_ADD 1418 /* NetLabel: add CALIPSO DOI entry */ #define AUDIT_MAC_CALIPSO_DEL 1419 /* NetLabel: del CALIPSO DOI entry */ +#define AUDIT_MAC_TASK_CONTEXTS 1420 /* Multiple LSM contexts */ +#define AUDIT_MAC_OBJ_CONTEXTS 1421 /* Multiple LSM object contexts */ #define AUDIT_FIRST_KERN_ANOM_MSG 1700 #define AUDIT_LAST_KERN_ANOM_MSG 1799 --- linux-5.8.0.orig/include/uapi/linux/aufs_type.h +++ linux-5.8.0/include/uapi/linux/aufs_type.h @@ -0,0 +1,452 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __AUFS_TYPE_H__ +#define __AUFS_TYPE_H__ + +#define AUFS_NAME "aufs" + +#ifdef __KERNEL__ +/* + * define it before including all other headers. + * sched.h may use pr_* macros before defining "current", so define the + * no-current version first, and re-define later. + */ +#define pr_fmt(fmt) AUFS_NAME " %s:%d: " fmt, __func__, __LINE__ +#include +#undef pr_fmt +#define pr_fmt(fmt) \ + AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \ + (int)sizeof(current->comm), current->comm, current->pid +#include +#else +#include +#include +#include +#endif /* __KERNEL__ */ + +#define AUFS_VERSION "5.x-rcN-20200622" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#ifdef __KERNEL__ +#ifdef CONFIG_AUFS_BRANCH_MAX_127 +typedef int8_t aufs_bindex_t; +#define AUFS_BRANCH_MAX 127 +#else +typedef int16_t aufs_bindex_t; +#ifdef CONFIG_AUFS_BRANCH_MAX_511 +#define AUFS_BRANCH_MAX 511 +#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) +#define AUFS_BRANCH_MAX 1023 +#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) +#define AUFS_BRANCH_MAX 32767 +#endif +#endif + +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif +#endif /* __KERNEL__ */ + +/* ---------------------------------------------------------------------- */ + +#define AUFS_FSTYPE AUFS_NAME + +#define AUFS_ROOT_INO 2 +#define AUFS_FIRST_INO 11 + +#define AUFS_WH_PFX ".wh." +#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) +#define AUFS_WH_TMP_LEN 4 +/* a limit for rmdir/rename a dir and copyup */ +#define AUFS_MAX_NAMELEN (NAME_MAX \ + - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ + - 1 /* dot */\ + - AUFS_WH_TMP_LEN) /* hex */ +#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" +#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME +#define AUFS_XINO_DEF_SEC 30 /* seconds */ +#define AUFS_XINO_DEF_TRUNC 45 /* percentage */ +#define AUFS_DIRWH_DEF 3 +#define AUFS_RDCACHE_DEF 10 /* seconds */ +#define AUFS_RDCACHE_MAX 3600 /* seconds */ +#define AUFS_RDBLK_DEF 512 /* bytes */ +#define AUFS_RDHASH_DEF 32 +#define AUFS_WKQ_NAME AUFS_NAME "d" +#define AUFS_MFS_DEF_SEC 30 /* seconds */ +#define AUFS_MFS_MAX_SEC 3600 /* seconds */ +#define AUFS_FHSM_CACHE_DEF_SEC 30 /* seconds */ +#define AUFS_PLINK_WARN 50 /* number of plinks in a single bucket */ + +/* pseudo-link maintenace under /proc */ +#define AUFS_PLINK_MAINT_NAME "plink_maint" +#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME +#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME + +/* dirren, renamed dir */ +#define AUFS_DR_INFO_PFX AUFS_WH_PFX ".dr." +#define AUFS_DR_BRHINO_NAME AUFS_WH_PFX "hino" +/* whiteouted doubly */ +#define AUFS_WH_DR_INFO_PFX AUFS_WH_PFX AUFS_DR_INFO_PFX +#define AUFS_WH_DR_BRHINO AUFS_WH_PFX AUFS_DR_BRHINO_NAME + +#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ +#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME + +#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME +#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" +#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" + +/* doubly whiteouted */ +#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME +#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME +#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME + +/* branch permissions and attributes */ +#define AUFS_BRPERM_RW "rw" +#define AUFS_BRPERM_RO "ro" +#define AUFS_BRPERM_RR "rr" +#define AUFS_BRATTR_COO_REG "coo_reg" +#define AUFS_BRATTR_COO_ALL "coo_all" +#define AUFS_BRATTR_FHSM "fhsm" +#define AUFS_BRATTR_UNPIN "unpin" +#define AUFS_BRATTR_ICEX "icex" +#define AUFS_BRATTR_ICEX_SEC "icexsec" +#define AUFS_BRATTR_ICEX_SYS "icexsys" +#define AUFS_BRATTR_ICEX_TR "icextr" +#define AUFS_BRATTR_ICEX_USR "icexusr" +#define AUFS_BRATTR_ICEX_OTH "icexoth" +#define AUFS_BRRATTR_WH "wh" +#define AUFS_BRWATTR_NLWH "nolwh" +#define AUFS_BRWATTR_MOO "moo" + +#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ +#define AuBrPerm_RO (1 << 1) /* readonly */ +#define AuBrPerm_RR (1 << 2) /* natively readonly */ +#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) + +#define AuBrAttr_COO_REG (1 << 3) /* copy-up on open */ +#define AuBrAttr_COO_ALL (1 << 4) +#define AuBrAttr_COO_Mask (AuBrAttr_COO_REG | AuBrAttr_COO_ALL) + +#define AuBrAttr_FHSM (1 << 5) /* file-based hsm */ +#define AuBrAttr_UNPIN (1 << 6) /* rename-able top dir of + branch. meaningless since + linux-3.18-rc1 */ + +/* ignore error in copying XATTR */ +#define AuBrAttr_ICEX_SEC (1 << 7) +#define AuBrAttr_ICEX_SYS (1 << 8) +#define AuBrAttr_ICEX_TR (1 << 9) +#define AuBrAttr_ICEX_USR (1 << 10) +#define AuBrAttr_ICEX_OTH (1 << 11) +#define AuBrAttr_ICEX (AuBrAttr_ICEX_SEC \ + | AuBrAttr_ICEX_SYS \ + | AuBrAttr_ICEX_TR \ + | AuBrAttr_ICEX_USR \ + | AuBrAttr_ICEX_OTH) + +#define AuBrRAttr_WH (1 << 12) /* whiteout-able */ +#define AuBrRAttr_Mask AuBrRAttr_WH + +#define AuBrWAttr_NoLinkWH (1 << 13) /* un-hardlinkable whiteouts */ +#define AuBrWAttr_MOO (1 << 14) /* move-up on open */ +#define AuBrWAttr_Mask (AuBrWAttr_NoLinkWH | AuBrWAttr_MOO) + +#define AuBrAttr_CMOO_Mask (AuBrAttr_COO_Mask | AuBrWAttr_MOO) + +/* #warning test userspace */ +#ifdef __KERNEL__ +#ifndef CONFIG_AUFS_FHSM +#undef AuBrAttr_FHSM +#define AuBrAttr_FHSM 0 +#endif +#ifndef CONFIG_AUFS_XATTR +#undef AuBrAttr_ICEX +#define AuBrAttr_ICEX 0 +#undef AuBrAttr_ICEX_SEC +#define AuBrAttr_ICEX_SEC 0 +#undef AuBrAttr_ICEX_SYS +#define AuBrAttr_ICEX_SYS 0 +#undef AuBrAttr_ICEX_TR +#define AuBrAttr_ICEX_TR 0 +#undef AuBrAttr_ICEX_USR +#define AuBrAttr_ICEX_USR 0 +#undef AuBrAttr_ICEX_OTH +#define AuBrAttr_ICEX_OTH 0 +#endif +#endif + +/* the longest combination */ +/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */ +#define AuBrPermStrSz sizeof(AUFS_BRPERM_RW \ + "+" AUFS_BRATTR_COO_REG \ + "+" AUFS_BRATTR_FHSM \ + "+" AUFS_BRATTR_UNPIN \ + "+" AUFS_BRATTR_ICEX_SEC \ + "+" AUFS_BRATTR_ICEX_SYS \ + "+" AUFS_BRATTR_ICEX_USR \ + "+" AUFS_BRATTR_ICEX_OTH \ + "+" AUFS_BRWATTR_NLWH) + +typedef struct { + char a[AuBrPermStrSz]; +} au_br_perm_str_t; + +static inline int au_br_writable(int brperm) +{ + return brperm & AuBrPerm_RW; +} + +static inline int au_br_whable(int brperm) +{ + return brperm & (AuBrPerm_RW | AuBrRAttr_WH); +} + +static inline int au_br_wh_linkable(int brperm) +{ + return !(brperm & AuBrWAttr_NoLinkWH); +} + +static inline int au_br_cmoo(int brperm) +{ + return brperm & AuBrAttr_CMOO_Mask; +} + +static inline int au_br_fhsm(int brperm) +{ + return brperm & AuBrAttr_FHSM; +} + +/* ---------------------------------------------------------------------- */ + +/* ioctl */ +enum { + /* readdir in userspace */ + AuCtl_RDU, + AuCtl_RDU_INO, + + AuCtl_WBR_FD, /* pathconf wrapper */ + AuCtl_IBUSY, /* busy inode */ + AuCtl_MVDOWN, /* move-down */ + AuCtl_BR, /* info about branches */ + AuCtl_FHSM_FD /* connection for fhsm */ +}; + +/* borrowed from linux/include/linux/kernel.h */ +#ifndef ALIGN +#ifdef _GNU_SOURCE +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#else +#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) +#endif +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#endif + +/* borrowed from linux/include/linux/compiler-gcc3.h */ +#ifndef __aligned +#define __aligned(x) __attribute__((aligned(x))) +#endif + +#ifdef __KERNEL__ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif +#endif + +struct au_rdu_cookie { + uint64_t h_pos; + int16_t bindex; + uint8_t flags; + uint8_t pad; + uint32_t generation; +} __aligned(8); + +struct au_rdu_ent { + uint64_t ino; + int16_t bindex; + uint8_t type; + uint8_t nlen; + uint8_t wh; + char name[]; +} __aligned(8); + +static inline int au_rdu_len(int nlen) +{ + /* include the terminating NULL */ + return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, + sizeof(uint64_t)); +} + +union au_rdu_ent_ul { + struct au_rdu_ent __user *e; + uint64_t ul; +}; + +enum { + AufsCtlRduV_SZ, + AufsCtlRduV_End +}; + +struct aufs_rdu { + /* input */ + union { + uint64_t sz; /* AuCtl_RDU */ + uint64_t nent; /* AuCtl_RDU_INO */ + }; + union au_rdu_ent_ul ent; + uint16_t verify[AufsCtlRduV_End]; + + /* input/output */ + uint32_t blk; + + /* output */ + union au_rdu_ent_ul tail; + /* number of entries which were added in a single call */ + uint64_t rent; + uint8_t full; + uint8_t shwh; + + struct au_rdu_cookie cookie; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +/* dirren. the branch is identified by the filename who contains this */ +struct au_drinfo { + uint64_t ino; + union { + uint8_t oldnamelen; + uint64_t _padding; + }; + uint8_t oldname[]; +} __aligned(8); + +struct au_drinfo_fdata { + uint32_t magic; + struct au_drinfo drinfo; +} __aligned(8); + +#define AUFS_DRINFO_MAGIC_V1 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x01) +/* future */ +#define AUFS_DRINFO_MAGIC_V2 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x02) + +/* ---------------------------------------------------------------------- */ + +struct aufs_wbr_fd { + uint32_t oflags; + int16_t brid; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_ibusy { + uint64_t ino, h_ino; + int16_t bindex; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +/* error code for move-down */ +/* the actual message strings are implemented in aufs-util.git */ +enum { + EAU_MVDOWN_OPAQUE = 1, + EAU_MVDOWN_WHITEOUT, + EAU_MVDOWN_UPPER, + EAU_MVDOWN_BOTTOM, + EAU_MVDOWN_NOUPPER, + EAU_MVDOWN_NOLOWERBR, + EAU_Last +}; + +/* flags for move-down */ +#define AUFS_MVDOWN_DMSG 1 +#define AUFS_MVDOWN_OWLOWER (1 << 1) /* overwrite lower */ +#define AUFS_MVDOWN_KUPPER (1 << 2) /* keep upper */ +#define AUFS_MVDOWN_ROLOWER (1 << 3) /* do even if lower is RO */ +#define AUFS_MVDOWN_ROLOWER_R (1 << 4) /* did on lower RO */ +#define AUFS_MVDOWN_ROUPPER (1 << 5) /* do even if upper is RO */ +#define AUFS_MVDOWN_ROUPPER_R (1 << 6) /* did on upper RO */ +#define AUFS_MVDOWN_BRID_UPPER (1 << 7) /* upper brid */ +#define AUFS_MVDOWN_BRID_LOWER (1 << 8) /* lower brid */ +#define AUFS_MVDOWN_FHSM_LOWER (1 << 9) /* find fhsm attr for lower */ +#define AUFS_MVDOWN_STFS (1 << 10) /* req. stfs */ +#define AUFS_MVDOWN_STFS_FAILED (1 << 11) /* output: stfs is unusable */ +#define AUFS_MVDOWN_BOTTOM (1 << 12) /* output: no more lowers */ + +/* index for move-down */ +enum { + AUFS_MVDOWN_UPPER, + AUFS_MVDOWN_LOWER, + AUFS_MVDOWN_NARRAY +}; + +/* + * additional info of move-down + * number of free blocks and inodes. + * subset of struct kstatfs, but smaller and always 64bit. + */ +struct aufs_stfs { + uint64_t f_blocks; + uint64_t f_bavail; + uint64_t f_files; + uint64_t f_ffree; +}; + +struct aufs_stbr { + int16_t brid; /* optional input */ + int16_t bindex; /* output */ + struct aufs_stfs stfs; /* output when AUFS_MVDOWN_STFS set */ +} __aligned(8); + +struct aufs_mvdown { + uint32_t flags; /* input/output */ + struct aufs_stbr stbr[AUFS_MVDOWN_NARRAY]; /* input/output */ + int8_t au_errno; /* output */ +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +union aufs_brinfo { + /* PATH_MAX may differ between kernel-space and user-space */ + char _spacer[4096]; + struct { + int16_t id; + int perm; + char path[]; + }; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +#define AuCtlType 'A' +#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) +#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) +#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ + struct aufs_wbr_fd) +#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) +#define AUFS_CTL_MVDOWN _IOWR(AuCtlType, AuCtl_MVDOWN, \ + struct aufs_mvdown) +#define AUFS_CTL_BRINFO _IOW(AuCtlType, AuCtl_BR, union aufs_brinfo) +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ --- linux-5.8.0.orig/include/uapi/linux/blkzoned.h +++ linux-5.8.0/include/uapi/linux/blkzoned.h @@ -74,6 +74,15 @@ }; /** + * enum blk_zone_report_flags - Feature flags of reported zone descriptors. + * + * @BLK_ZONE_REP_CAPACITY: Zone descriptor has capacity field. + */ +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = (1 << 0), +}; + +/** * struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl. * * @start: Zone start in 512 B sector units @@ -99,7 +108,9 @@ __u8 cond; /* Zone condition */ __u8 non_seq; /* Non-sequential write resources active */ __u8 reset; /* Reset write pointer recommended */ - __u8 reserved[36]; + __u8 resv[4]; + __u64 capacity; /* Zone capacity in number of sectors */ + __u8 reserved[24]; }; /** @@ -115,7 +126,7 @@ struct blk_zone_report { __u64 sector; __u32 nr_zones; - __u8 reserved[4]; + __u32 flags; struct blk_zone zones[0]; }; --- linux-5.8.0.orig/include/uapi/linux/bpf.h +++ linux-5.8.0/include/uapi/linux/bpf.h @@ -1416,8 +1416,8 @@ * Return * The return value depends on the result of the test, and can be: * - * * 0, if the *skb* task belongs to the cgroup2. - * * 1, if the *skb* task does not belong to the cgroup2. + * * 0, if current task belongs to the cgroup2. + * * 1, if current task does not belong to the cgroup2. * * A negative error code, if an error occurred. * * int bpf_skb_change_tail(struct sk_buff *skb, u32 len, u64 flags) @@ -3168,7 +3168,7 @@ * Return * The id is returned or 0 in case the id could not be retrieved. * - * int bpf_ringbuf_output(void *ringbuf, void *data, u64 size, u64 flags) + * long bpf_ringbuf_output(void *ringbuf, void *data, u64 size, u64 flags) * Description * Copy *size* bytes from *data* into a ring buffer *ringbuf*. * If **BPF_RB_NO_WAKEUP** is specified in *flags*, no notification --- linux-5.8.0.orig/include/uapi/linux/btrfs.h +++ linux-5.8.0/include/uapi/linux/btrfs.h @@ -243,6 +243,13 @@ __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ }; +/* + * Retrieve information about the filesystem + */ + +/* Request information about checksum type and size */ +#define BTRFS_FS_INFO_FLAG_CSUM_INFO (1 << 0) + struct btrfs_ioctl_fs_info_args { __u64 max_id; /* out */ __u64 num_devices; /* out */ @@ -250,8 +257,11 @@ __u32 nodesize; /* out */ __u32 sectorsize; /* out */ __u32 clone_alignment; /* out */ - __u32 reserved32; - __u64 reserved[122]; /* pad to 1k */ + /* See BTRFS_FS_INFO_FLAG_* */ + __u16 csum_type; /* out */ + __u16 csum_size; /* out */ + __u64 flags; /* in/out */ + __u8 reserved[968]; /* pad to 1k */ }; /* --- linux-5.8.0.orig/include/uapi/linux/btrfs_tree.h +++ linux-5.8.0/include/uapi/linux/btrfs_tree.h @@ -4,6 +4,11 @@ #include #include +#ifdef __KERNEL__ +#include +#else +#include +#endif /* * This header contains the structure definitions and constants used @@ -645,6 +650,15 @@ } __attribute__ ((__packed__)); /* + * Btrfs root item used to be smaller than current size. The old format ends + * at where member generation_v2 is. + */ +static inline __u32 btrfs_legacy_root_item_size(void) +{ + return offsetof(struct btrfs_root_item, generation_v2); +} + +/* * this is used for both forward and backward root refs */ struct btrfs_root_ref { --- linux-5.8.0.orig/include/uapi/linux/const.h +++ linux-5.8.0/include/uapi/linux/const.h @@ -28,4 +28,9 @@ #define _BITUL(x) (_UL(1) << (x)) #define _BITULL(x) (_ULL(1) << (x)) +#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) +#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) + +#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) + #endif /* _UAPI_LINUX_CONST_H */ --- linux-5.8.0.orig/include/uapi/linux/ethtool.h +++ linux-5.8.0/include/uapi/linux/ethtool.h @@ -14,7 +14,7 @@ #ifndef _UAPI_LINUX_ETHTOOL_H #define _UAPI_LINUX_ETHTOOL_H -#include +#include #include #include --- linux-5.8.0.orig/include/uapi/linux/fscrypt.h +++ linux-5.8.0/include/uapi/linux/fscrypt.h @@ -20,7 +20,6 @@ #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10 -#define FSCRYPT_POLICY_FLAGS_VALID 0x1F /* Encryption algorithms */ #define FSCRYPT_MODE_AES_256_XTS 1 @@ -28,7 +27,7 @@ #define FSCRYPT_MODE_AES_128_CBC 5 #define FSCRYPT_MODE_AES_128_CTS 6 #define FSCRYPT_MODE_ADIANTUM 9 -#define __FSCRYPT_MODE_MAX 9 +/* If adding a mode number > 9, update FSCRYPT_MODE_MAX in fscrypt_private.h */ /* * Legacy policy version; ad-hoc KDF and no key verification. @@ -177,7 +176,7 @@ #define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32 #define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK #define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY -#define FS_POLICY_FLAGS_VALID FSCRYPT_POLICY_FLAGS_VALID +#define FS_POLICY_FLAGS_VALID 0x07 /* contains old flags only */ #define FS_ENCRYPTION_MODE_INVALID 0 /* never used */ #define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS #define FS_ENCRYPTION_MODE_AES_256_GCM 2 /* never used */ --- linux-5.8.0.orig/include/uapi/linux/icmpv6.h +++ linux-5.8.0/include/uapi/linux/icmpv6.h @@ -137,6 +137,7 @@ #define ICMPV6_HDR_FIELD 0 #define ICMPV6_UNK_NEXTHDR 1 #define ICMPV6_UNK_OPTION 2 +#define ICMPV6_HDR_INCOMP 3 /* * constants for (set|get)sockopt --- linux-5.8.0.orig/include/uapi/linux/if_alg.h +++ linux-5.8.0/include/uapi/linux/if_alg.h @@ -24,6 +24,22 @@ __u8 salg_name[64]; }; +/* + * Linux v4.12 and later removed the 64-byte limit on salg_name[]; it's now an + * arbitrary-length field. We had to keep the original struct above for source + * compatibility with existing userspace programs, though. Use the new struct + * below if support for very long algorithm names is needed. To do this, + * allocate 'sizeof(struct sockaddr_alg_new) + strlen(algname) + 1' bytes, and + * copy algname (including the null terminator) into salg_name. + */ +struct sockaddr_alg_new { + __u16 salg_family; + __u8 salg_type[14]; + __u32 salg_feat; + __u32 salg_mask; + __u8 salg_name[]; +}; + struct af_alg_iv { __u32 ivlen; __u8 iv[0]; --- linux-5.8.0.orig/include/uapi/linux/if_link.h +++ linux-5.8.0/include/uapi/linux/if_link.h @@ -548,6 +548,7 @@ IFLA_VXLAN_GPE, IFLA_VXLAN_TTL_INHERIT, IFLA_VXLAN_DF, + IFLA_VXLAN_FAN_MAP = 33, __IFLA_VXLAN_MAX }; #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) --- linux-5.8.0.orig/include/uapi/linux/if_tunnel.h +++ linux-5.8.0/include/uapi/linux/if_tunnel.h @@ -77,6 +77,10 @@ IFLA_IPTUN_ENCAP_DPORT, IFLA_IPTUN_COLLECT_METADATA, IFLA_IPTUN_FWMARK, + + __IFLA_IPTUN_VENDOR_BREAK, /* Ensure new entries do not hit the below. */ + IFLA_IPTUN_FAN_MAP = 33, + __IFLA_IPTUN_MAX, }; #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) @@ -180,4 +184,19 @@ #define TUNNEL_OPTIONS_PRESENT \ (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT) +enum { + IFLA_FAN_UNSPEC, + IFLA_FAN_MAPPING, + __IFLA_FAN_MAX, +}; + +#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) + +struct ifla_fan_map { + __be32 underlay; + __be32 overlay; + __u16 underlay_prefix; + __u16 overlay_prefix; +}; + #endif /* _UAPI_IF_TUNNEL_H_ */ --- linux-5.8.0.orig/include/uapi/linux/kd.h +++ linux-5.8.0/include/uapi/linux/kd.h @@ -46,6 +46,8 @@ #define KD_GRAPHICS 0x01 #define KD_TEXT0 0x02 /* obsolete */ #define KD_TEXT1 0x03 /* obsolete */ +#define KD_TRANSPARENT 0x04 + #define KDGETMODE 0x4B3B /* get current mode */ #define KDMAPDISP 0x4B3C /* map display into address space */ --- linux-5.8.0.orig/include/uapi/linux/kernel.h +++ linux-5.8.0/include/uapi/linux/kernel.h @@ -3,13 +3,6 @@ #define _UAPI_LINUX_KERNEL_H #include - -/* - * 'kernel.h' contains some often-used function prototypes etc - */ -#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) -#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) - -#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) +#include #endif /* _UAPI_LINUX_KERNEL_H */ --- linux-5.8.0.orig/include/uapi/linux/kvm.h +++ linux-5.8.0/include/uapi/linux/kvm.h @@ -789,9 +789,10 @@ #define KVM_VM_PPC_HV 1 #define KVM_VM_PPC_PR 2 -/* on MIPS, 0 forces trap & emulate, 1 forces VZ ASE */ -#define KVM_VM_MIPS_TE 0 +/* on MIPS, 0 indicates auto, 1 forces VZ ASE, 2 forces trap & emulate */ +#define KVM_VM_MIPS_AUTO 0 #define KVM_VM_MIPS_VZ 1 +#define KVM_VM_MIPS_TE 2 #define KVM_S390_SIE_PAGE_OFFSET 1 --- linux-5.8.0.orig/include/uapi/linux/lightnvm.h +++ linux-5.8.0/include/uapi/linux/lightnvm.h @@ -21,7 +21,7 @@ #define _UAPI_LINUX_LIGHTNVM_H #ifdef __KERNEL__ -#include +#include #include #else /* __KERNEL__ */ #include --- linux-5.8.0.orig/include/uapi/linux/magic.h +++ linux-5.8.0/include/uapi/linux/magic.h @@ -98,4 +98,6 @@ #define Z3FOLD_MAGIC 0x33 #define PPC_CMM_MAGIC 0xc7571590 +#define SHIFTFS_MAGIC 0x6a656a62 + #endif /* __LINUX_MAGIC_H__ */ --- linux-5.8.0.orig/include/uapi/linux/mroute6.h +++ linux-5.8.0/include/uapi/linux/mroute6.h @@ -2,7 +2,7 @@ #ifndef _UAPI__LINUX_MROUTE6_H #define _UAPI__LINUX_MROUTE6_H -#include +#include #include #include #include /* For struct sockaddr_in6. */ --- linux-5.8.0.orig/include/uapi/linux/ndctl.h +++ linux-5.8.0/include/uapi/linux/ndctl.h @@ -245,6 +245,10 @@ #define NVDIMM_FAMILY_MSFT 3 #define NVDIMM_FAMILY_HYPERV 4 #define NVDIMM_FAMILY_PAPR 5 +#define NVDIMM_FAMILY_MAX NVDIMM_FAMILY_PAPR + +#define NVDIMM_BUS_FAMILY_NFIT 0 +#define NVDIMM_BUS_FAMILY_MAX NVDIMM_BUS_FAMILY_NFIT #define ND_IOCTL_CALL _IOWR(ND_IOCTL, ND_CMD_CALL,\ struct nd_cmd_pkg) --- linux-5.8.0.orig/include/uapi/linux/netfilter/nf_tables.h +++ linux-5.8.0/include/uapi/linux/netfilter/nf_tables.h @@ -133,7 +133,7 @@ * @NFTA_LIST_ELEM: list element (NLA_NESTED) */ enum nft_list_attributes { - NFTA_LIST_UNPEC, + NFTA_LIST_UNSPEC, NFTA_LIST_ELEM, __NFTA_LIST_MAX }; --- linux-5.8.0.orig/include/uapi/linux/netfilter/nfnetlink_cthelper.h +++ linux-5.8.0/include/uapi/linux/netfilter/nfnetlink_cthelper.h @@ -5,7 +5,7 @@ #define NFCT_HELPER_STATUS_DISABLED 0 #define NFCT_HELPER_STATUS_ENABLED 1 -enum nfnl_acct_msg_types { +enum nfnl_cthelper_msg_types { NFNL_MSG_CTHELPER_NEW, NFNL_MSG_CTHELPER_GET, NFNL_MSG_CTHELPER_DEL, --- linux-5.8.0.orig/include/uapi/linux/netfilter/x_tables.h +++ linux-5.8.0/include/uapi/linux/netfilter/x_tables.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_X_TABLES_H #define _UAPI_X_TABLES_H -#include +#include #include #define XT_FUNCTION_MAXNAMELEN 30 --- linux-5.8.0.orig/include/uapi/linux/netlink.h +++ linux-5.8.0/include/uapi/linux/netlink.h @@ -2,7 +2,7 @@ #ifndef _UAPI__LINUX_NETLINK_H #define _UAPI__LINUX_NETLINK_H -#include +#include #include /* for __kernel_sa_family_t */ #include --- linux-5.8.0.orig/include/uapi/linux/nfs4.h +++ linux-5.8.0/include/uapi/linux/nfs4.h @@ -136,6 +136,8 @@ #define EXCHGID4_FLAG_UPD_CONFIRMED_REC_A 0x40000000 #define EXCHGID4_FLAG_CONFIRMED_R 0x80000000 + +#define EXCHGID4_FLAG_SUPP_FENCE_OPS 0x00000004 /* * Since the validity of these bits depends on whether * they're set in the argument or response, have separate @@ -143,6 +145,7 @@ */ #define EXCHGID4_FLAG_MASK_A 0x40070103 #define EXCHGID4_FLAG_MASK_R 0x80070103 +#define EXCHGID4_2_FLAG_MASK_R 0x80070107 #define SEQ4_STATUS_CB_PATH_DOWN 0x00000001 #define SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING 0x00000002 --- linux-5.8.0.orig/include/uapi/linux/openvswitch.h +++ linux-5.8.0/include/uapi/linux/openvswitch.h @@ -1057,4 +1057,6 @@ __OVS_DEC_TTL_ATTR_MAX }; +#define OVS_DEC_TTL_ATTR_MAX (__OVS_DEC_TTL_ATTR_MAX - 1) + #endif /* _LINUX_OPENVSWITCH_H */ --- linux-5.8.0.orig/include/uapi/linux/pci_regs.h +++ linux-5.8.0/include/uapi/linux/pci_regs.h @@ -76,6 +76,7 @@ #define PCI_CACHE_LINE_SIZE 0x0c /* 8 bits */ #define PCI_LATENCY_TIMER 0x0d /* 8 bits */ #define PCI_HEADER_TYPE 0x0e /* 8 bits */ +#define PCI_HEADER_TYPE_MASK 0x7f #define PCI_HEADER_TYPE_NORMAL 0 #define PCI_HEADER_TYPE_BRIDGE 1 #define PCI_HEADER_TYPE_CARDBUS 2 --- linux-5.8.0.orig/include/uapi/linux/perf_event.h +++ linux-5.8.0/include/uapi/linux/perf_event.h @@ -1155,7 +1155,7 @@ #define PERF_MEM_SNOOPX_FWD 0x01 /* forward */ /* 1 free */ -#define PERF_MEM_SNOOPX_SHIFT 37 +#define PERF_MEM_SNOOPX_SHIFT 38 /* locked instruction */ #define PERF_MEM_LOCK_NA 0x01 /* not available */ --- linux-5.8.0.orig/include/uapi/linux/psample.h +++ linux-5.8.0/include/uapi/linux/psample.h @@ -3,7 +3,6 @@ #define __UAPI_PSAMPLE_H enum { - /* sampled packet metadata */ PSAMPLE_ATTR_IIFINDEX, PSAMPLE_ATTR_OIFINDEX, PSAMPLE_ATTR_ORIGSIZE, @@ -11,10 +10,8 @@ PSAMPLE_ATTR_GROUP_SEQ, PSAMPLE_ATTR_SAMPLE_RATE, PSAMPLE_ATTR_DATA, - PSAMPLE_ATTR_TUNNEL, - - /* commands attributes */ PSAMPLE_ATTR_GROUP_REFCOUNT, + PSAMPLE_ATTR_TUNNEL, __PSAMPLE_ATTR_MAX }; --- linux-5.8.0.orig/include/uapi/linux/ptrace.h +++ linux-5.8.0/include/uapi/linux/ptrace.h @@ -81,7 +81,8 @@ struct ptrace_syscall_info { __u8 op; /* PTRACE_SYSCALL_INFO_* */ - __u32 arch __attribute__((__aligned__(sizeof(__u32)))); + __u8 pad[3]; + __u32 arch; __u64 instruction_pointer; __u64 stack_pointer; union { --- linux-5.8.0.orig/include/uapi/linux/rpl.h +++ linux-5.8.0/include/uapi/linux/rpl.h @@ -28,10 +28,10 @@ pad:4, reserved1:16; #elif defined(__BIG_ENDIAN_BITFIELD) - __u32 reserved:20, + __u32 cmpri:4, + cmpre:4, pad:4, - cmpri:4, - cmpre:4; + reserved:20; #else #error "Please fix " #endif --- linux-5.8.0.orig/include/uapi/linux/seccomp.h +++ linux-5.8.0/include/uapi/linux/seccomp.h @@ -123,5 +123,6 @@ #define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif) #define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, \ struct seccomp_notif_resp) -#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64) +#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOW(2, __u64) + #endif /* _UAPI_LINUX_SECCOMP_H */ --- linux-5.8.0.orig/include/uapi/linux/stat.h +++ linux-5.8.0/include/uapi/linux/stat.h @@ -171,9 +171,12 @@ * be of use to ordinary userspace programs such as GUIs or ls rather than * specialised tools. * - * Note that the flags marked [I] correspond to generic FS_IOC_FLAGS + * Note that the flags marked [I] correspond to the FS_IOC_SETFLAGS flags * semantically. Where possible, the numerical value is picked to correspond - * also. + * also. Note that the DAX attribute indicates that the file is in the CPU + * direct access state. It does not correspond to the per-inode flag that + * some filesystems support. + * */ #define STATX_ATTR_COMPRESSED 0x00000004 /* [I] File is compressed by the fs */ #define STATX_ATTR_IMMUTABLE 0x00000010 /* [I] File is marked immutable */ @@ -183,7 +186,7 @@ #define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */ #define STATX_ATTR_MOUNT_ROOT 0x00002000 /* Root of a mount */ #define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */ -#define STATX_ATTR_DAX 0x00002000 /* [I] File is DAX */ +#define STATX_ATTR_DAX 0x00200000 /* File is currently in DAX state */ #endif /* _UAPI_LINUX_STAT_H */ --- linux-5.8.0.orig/include/uapi/linux/sysctl.h +++ linux-5.8.0/include/uapi/linux/sysctl.h @@ -23,7 +23,7 @@ #ifndef _UAPI_LINUX_SYSCTL_H #define _UAPI_LINUX_SYSCTL_H -#include +#include #include #include @@ -153,7 +153,7 @@ KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */ KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */ KERN_PANIC_ON_WARN=77, /* int: call panic() in WARN() functions */ - KERN_PANIC_PRINT=78, /* ulong: bitmask to print system info on panic */ + KERN_PANIC_PRINT=78, /* unsigned long: bitmask to print system info on panic */ }; --- linux-5.8.0.orig/include/uapi/linux/usb/ch9.h +++ linux-5.8.0/include/uapi/linux/usb/ch9.h @@ -364,6 +364,9 @@ /*-------------------------------------------------------------------------*/ +/* USB String descriptors can contain at most 126 characters. */ +#define USB_MAX_STRING_LEN 126 + /* USB_DT_STRING: String descriptor */ struct usb_string_descriptor { __u8 bLength; --- linux-5.8.0.orig/include/uapi/linux/v4l2-subdev.h +++ linux-5.8.0/include/uapi/linux/v4l2-subdev.h @@ -168,7 +168,7 @@ }; /* The v4l2 sub-device video device node is registered in read-only mode. */ -#define V4L2_SUBDEV_CAP_RO_SUBDEV BIT(0) +#define V4L2_SUBDEV_CAP_RO_SUBDEV 0x00000001 /* Backwards compatibility define --- to be removed */ #define v4l2_subdev_edid v4l2_edid --- linux-5.8.0.orig/include/uapi/linux/vfio.h +++ linux-5.8.0/include/uapi/linux/vfio.h @@ -1039,6 +1039,21 @@ __u64 max_dirty_bitmap_size; /* in bytes */ }; +/* + * The DMA available capability allows to report the current number of + * simultaneously outstanding DMA mappings that are allowed. + * + * The structure below defines version 1 of this capability. + * + * avail: specifies the current number of outstanding DMA mappings allowed. + */ +#define VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL 3 + +struct vfio_iommu_type1_info_dma_avail { + struct vfio_info_cap_header header; + __u32 avail; +}; + #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) /** --- linux-5.8.0.orig/include/uapi/linux/videodev2.h +++ linux-5.8.0/include/uapi/linux/videodev2.h @@ -371,9 +371,9 @@ enum v4l2_quantization { /* - * The default for R'G'B' quantization is always full range, except - * for the BT2020 colorspace. For Y'CbCr the quantization is always - * limited range, except for COLORSPACE_JPEG: this is full range. + * The default for R'G'B' quantization is always full range. + * For Y'CbCr the quantization is always limited range, except + * for COLORSPACE_JPEG: this is full range. */ V4L2_QUANTIZATION_DEFAULT = 0, V4L2_QUANTIZATION_FULL_RANGE = 1, @@ -382,14 +382,13 @@ /* * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. - * This depends on whether the image is RGB or not, the colorspace and the - * Y'CbCr encoding. + * This depends on whether the image is RGB or not, the colorspace. + * The Y'CbCr encoding is not used anymore, but is still there for backwards + * compatibility. */ #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \ - (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \ - V4L2_QUANTIZATION_LIM_RANGE : \ - (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \ - V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) + (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \ + V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE) /* * Deprecated names for opRGB colorspace (IEC 61966-2-5) --- linux-5.8.0.orig/include/uapi/rdma/efa-abi.h +++ linux-5.8.0/include/uapi/rdma/efa-abi.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */ /* - * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All rights reserved. + * Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef EFA_ABI_USER_H @@ -20,6 +20,16 @@ * hex bit offset of the field. */ +enum { + EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0, + EFA_ALLOC_UCONTEXT_CMD_COMP_MIN_SQ_WR = 1 << 1, +}; + +struct efa_ibv_alloc_ucontext_cmd { + __u32 comp_mask; + __u8 reserved_20[4]; +}; + enum efa_ibv_user_cmds_supp_udata { EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0, EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1, @@ -31,6 +41,9 @@ __u16 sub_cqs_per_cq; __u16 inline_buf_size; __u32 max_llq_size; /* bytes */ + __u16 max_tx_batch; /* units of 64 bytes */ + __u16 min_sq_wr; + __u8 reserved_a0[4]; }; struct efa_ibv_alloc_pd_resp { --- linux-5.8.0.orig/include/uapi/rdma/qedr-abi.h +++ linux-5.8.0/include/uapi/rdma/qedr-abi.h @@ -39,8 +39,9 @@ /* user kernel communication data structures. */ enum qedr_alloc_ucontext_flags { - QEDR_ALLOC_UCTX_RESERVED = 1 << 0, - QEDR_ALLOC_UCTX_DB_REC = 1 << 1 + QEDR_ALLOC_UCTX_EDPM_MODE = 1 << 0, + QEDR_ALLOC_UCTX_DB_REC = 1 << 1, + QEDR_SUPPORT_DPM_SIZES = 1 << 2, }; struct qedr_alloc_ucontext_req { @@ -50,13 +51,14 @@ #define QEDR_LDPM_MAX_SIZE (8192) #define QEDR_EDPM_TRANS_SIZE (64) +#define QEDR_EDPM_MAX_SIZE (ROCE_REQ_MAX_INLINE_DATA_SIZE) enum qedr_rdma_dpm_type { QEDR_DPM_TYPE_NONE = 0, QEDR_DPM_TYPE_ROCE_ENHANCED = 1 << 0, QEDR_DPM_TYPE_ROCE_LEGACY = 1 << 1, QEDR_DPM_TYPE_IWARP_LEGACY = 1 << 2, - QEDR_DPM_TYPE_RESERVED = 1 << 3, + QEDR_DPM_TYPE_ROCE_EDPM_MODE = 1 << 3, QEDR_DPM_SIZES_SET = 1 << 4, }; @@ -77,6 +79,8 @@ __u16 ldpm_limit_size; __u8 edpm_trans_size; __u8 reserved; + __u16 edpm_limit_size; + __u8 padding[6]; }; struct qedr_alloc_pd_ureq { --- linux-5.8.0.orig/include/uapi/rdma/vmw_pvrdma-abi.h +++ linux-5.8.0/include/uapi/rdma/vmw_pvrdma-abi.h @@ -133,6 +133,13 @@ PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_NETWORK_HDR_TYPE, }; +enum pvrdma_network_type { + PVRDMA_NETWORK_IB, + PVRDMA_NETWORK_ROCE_V1 = PVRDMA_NETWORK_IB, + PVRDMA_NETWORK_IPV4, + PVRDMA_NETWORK_IPV6 +}; + struct pvrdma_alloc_ucontext_resp { __u32 qp_tab_size; __u32 reserved; --- linux-5.8.0.orig/include/xen/events.h +++ linux-5.8.0/include/xen/events.h @@ -15,10 +15,15 @@ unsigned xen_evtchn_nr_channels(void); int bind_evtchn_to_irq(evtchn_port_t evtchn); +int bind_evtchn_to_irq_lateeoi(evtchn_port_t evtchn); int bind_evtchn_to_irqhandler(evtchn_port_t evtchn, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); +int bind_evtchn_to_irqhandler_lateeoi(evtchn_port_t evtchn, + irq_handler_t handler, + unsigned long irqflags, const char *devname, + void *dev_id); int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu); int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, irq_handler_t handler, @@ -32,12 +37,20 @@ void *dev_id); int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, evtchn_port_t remote_port); +int bind_interdomain_evtchn_to_irq_lateeoi(unsigned int remote_domain, + evtchn_port_t remote_port); int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, evtchn_port_t remote_port, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); +int bind_interdomain_evtchn_to_irqhandler_lateeoi(unsigned int remote_domain, + evtchn_port_t remote_port, + irq_handler_t handler, + unsigned long irqflags, + const char *devname, + void *dev_id); /* * Common unbind function for all event sources. Takes IRQ to unbind from. @@ -46,6 +59,14 @@ */ void unbind_from_irqhandler(unsigned int irq, void *dev_id); +/* + * Send late EOI for an IRQ bound to an event channel via one of the *_lateeoi + * functions above. + */ +void xen_irq_lateeoi(unsigned int irq, unsigned int eoi_flags); +/* Signal an event was spurious, i.e. there was no action resulting from it. */ +#define XEN_EOI_FLAG_SPURIOUS 0x00000001 + #define XEN_IRQ_PRIORITY_MAX EVTCHN_FIFO_PRIORITY_MAX #define XEN_IRQ_PRIORITY_DEFAULT EVTCHN_FIFO_PRIORITY_DEFAULT #define XEN_IRQ_PRIORITY_MIN EVTCHN_FIFO_PRIORITY_MIN --- linux-5.8.0.orig/include/xen/grant_table.h +++ linux-5.8.0/include/xen/grant_table.h @@ -157,6 +157,7 @@ map->flags = flags; map->ref = ref; map->dom = domid; + map->status = 1; /* arbitrary positive value */ } static inline void @@ -198,6 +199,19 @@ int gnttab_alloc_pages(int nr_pages, struct page **pages); void gnttab_free_pages(int nr_pages, struct page **pages); +struct gnttab_page_cache { + spinlock_t lock; + struct list_head pages; + unsigned int num_pages; +}; + +void gnttab_page_cache_init(struct gnttab_page_cache *cache); +int gnttab_page_cache_get(struct gnttab_page_cache *cache, struct page **page); +void gnttab_page_cache_put(struct gnttab_page_cache *cache, struct page **page, + unsigned int num); +void gnttab_page_cache_shrink(struct gnttab_page_cache *cache, + unsigned int num); + #ifdef CONFIG_XEN_GRANT_DMA_ALLOC struct gnttab_dma_alloc_args { /* Device for which DMA memory will be/was allocated. */ --- linux-5.8.0.orig/include/xen/xenbus.h +++ linux-5.8.0/include/xen/xenbus.h @@ -61,6 +61,15 @@ /* Path being watched. */ const char *node; + unsigned int nr_pending; + + /* + * Called just before enqueing new event while a spinlock is held. + * The event will be discarded if this callback returns false. + */ + bool (*will_handle)(struct xenbus_watch *, + const char *path, const char *token); + /* Callback (executed in a process context with no locks held). */ void (*callback)(struct xenbus_watch *, const char *path, const char *token); @@ -183,8 +192,6 @@ struct work_struct; -void xenbus_probe(struct work_struct *); - #define XENBUS_IS_ERR_READ(str) ({ \ if (!IS_ERR(str) && strlen(str) == 0) { \ kfree(str); \ @@ -197,10 +204,14 @@ int xenbus_watch_path(struct xenbus_device *dev, const char *path, struct xenbus_watch *watch, + bool (*will_handle)(struct xenbus_watch *, + const char *, const char *), void (*callback)(struct xenbus_watch *, const char *, const char *)); -__printf(4, 5) +__printf(5, 6) int xenbus_watch_pathfmt(struct xenbus_device *dev, struct xenbus_watch *watch, + bool (*will_handle)(struct xenbus_watch *, + const char *, const char *), void (*callback)(struct xenbus_watch *, const char *, const char *), const char *pathfmt, ...); --- linux-5.8.0.orig/init/Kconfig +++ linux-5.8.0/init/Kconfig @@ -110,8 +110,7 @@ config COMPILE_TEST bool "Compile also drivers which will not load" - depends on !UML - default n + depends on HAS_IOMEM help Some drivers can be compiled on a different platform than they are intended to be run on. Despite they cannot be loaded there (or even @@ -314,6 +313,15 @@ config ARCH_NO_SWAP bool +config VERSION_SIGNATURE + string "Arbitrary version signature" + help + This string will be created in a file, /proc/version_signature. It + is useful in determining arbitrary data about your kernel. For instance, + if you have several kernels of the same version, but need to keep track + of a revision of the same kernel, but not affect it's ability to load + compatible modules, this is the easiest way to do that. + config SWAP bool "Support for paging of anonymous memory (swap)" depends on MMU && BLOCK && !ARCH_NO_SWAP @@ -654,7 +662,8 @@ config LOG_BUF_SHIFT int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" - range 12 25 + range 12 25 if !H8300 + range 12 19 if H8300 default 17 depends on PRINTK help @@ -1161,6 +1170,7 @@ config CHECKPOINT_RESTORE bool "Checkpoint/restore support" select PROC_CHILDREN + select KCMP default n help Enables additional kernel features in a sake of checkpoint/restore. @@ -1695,6 +1705,16 @@ config ARCH_HAS_MEMBARRIER_SYNC_CORE bool +config KCMP + bool "Enable kcmp() system call" if EXPERT + help + Enable the kernel resource comparison system call. It provides + user-space with the ability to compare two processes to see if they + share a common resource, such as a file descriptor or even virtual + memory space. + + If unsure, say N. + config RSEQ bool "Enable rseq() system call" if EXPERT default y --- linux-5.8.0.orig/init/do_mounts.c +++ linux-5.8.0/init/do_mounts.c @@ -631,6 +631,7 @@ void __init prepare_namespace(void) { int is_floppy; + int err; if (root_delay) { printk(KERN_INFO "Waiting %d sec before mounting root device...\n", @@ -684,6 +685,13 @@ devtmpfs_mount(); do_mount(".", "/", NULL, MS_MOVE, NULL); ksys_chroot("."); +#ifdef CONFIG_BLOCK + /* recreate the /dev/root */ + err = create_dev("/dev/root", ROOT_DEV); + + if (err < 0) + pr_emerg("Failed to create /dev/root: %d\n", err); +#endif } static bool is_tmpfs; --- linux-5.8.0.orig/init/init_task.c +++ linux-5.8.0/init/init_task.c @@ -26,7 +26,7 @@ .multiprocess = HLIST_HEAD_INIT, .rlim = INIT_RLIMITS, .cred_guard_mutex = __MUTEX_INITIALIZER(init_signals.cred_guard_mutex), - .exec_update_mutex = __MUTEX_INITIALIZER(init_signals.exec_update_mutex), + .exec_update_lock = __RWSEM_INITIALIZER(init_signals.exec_update_lock), #ifdef CONFIG_POSIX_TIMERS .posix_timers = LIST_HEAD_INIT(init_signals.posix_timers), .cputimer = { @@ -113,6 +113,9 @@ .thread = INIT_THREAD, .fs = &init_fs, .files = &init_files, +#ifdef CONFIG_IO_URING + .io_uring = NULL, +#endif .signal = &init_signals, .sighand = &init_sighand, .nsproxy = &init_nsproxy, @@ -193,7 +196,8 @@ .lockdep_recursion = 0, #endif #ifdef CONFIG_FUNCTION_GRAPH_TRACER - .ret_stack = NULL, + .ret_stack = NULL, + .tracing_graph_pause = ATOMIC_INIT(0), #endif #if defined(CONFIG_TRACING) && defined(CONFIG_PREEMPTION) .trace_recursion = 0, --- linux-5.8.0.orig/init/initramfs.c +++ linux-5.8.0/init/initramfs.c @@ -528,7 +528,7 @@ #include #include -void __weak free_initrd_mem(unsigned long start, unsigned long end) +void __weak __init free_initrd_mem(unsigned long start, unsigned long end) { #ifdef CONFIG_ARCH_KEEP_MEMBLOCK unsigned long aligned_start = ALIGN_DOWN(start, PAGE_SIZE); --- linux-5.8.0.orig/init/main.c +++ linux-5.8.0/init/main.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -265,14 +266,24 @@ u32 size, csum; char *data; u32 *hdr; + int i; if (!initrd_end) return NULL; data = (char *)initrd_end - BOOTCONFIG_MAGIC_LEN; - if (memcmp(data, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN)) - return NULL; + /* + * Since Grub may align the size of initrd to 4, we must + * check the preceding 3 bytes as well. + */ + for (i = 0; i < 4; i++) { + if (!memcmp(data, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN)) + goto found; + data--; + } + return NULL; +found: hdr = (u32 *)(data - 8); size = hdr[0]; csum = hdr[1]; @@ -387,8 +398,6 @@ { if (strcmp(param, "bootconfig") == 0) { bootconfig_found = true; - } else if (strcmp(param, "--") == 0) { - initargs_found = true; } return 0; } @@ -399,19 +408,23 @@ const char *msg; int pos; u32 size, csum; - char *data, *copy; + char *data, *copy, *err; int ret; /* Cut out the bootconfig data even if we have no bootconfig option */ data = get_boot_config_from_initrd(&size, &csum); strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE); - parse_args("bootconfig", tmp_cmdline, NULL, 0, 0, 0, NULL, - bootconfig_params); + err = parse_args("bootconfig", tmp_cmdline, NULL, 0, 0, 0, NULL, + bootconfig_params); - if (!bootconfig_found) + if (IS_ERR(err) || !bootconfig_found) return; + /* parse_args() stops at '--' and returns an address */ + if (err) + initargs_found = true; + if (!data) { pr_err("'bootconfig' found on command line, but no bootconfig found\n"); return; @@ -1136,22 +1149,22 @@ static __init_or_module void trace_initcall_start_cb(void *data, initcall_t fn) { - ktime_t *calltime = (ktime_t *)data; + unsigned long *calltime = (unsigned long *)data; printk(KERN_DEBUG "calling %pS @ %i\n", fn, task_pid_nr(current)); - *calltime = ktime_get(); + *calltime = local_clock(); } static __init_or_module void trace_initcall_finish_cb(void *data, initcall_t fn, int ret) { - ktime_t *calltime = (ktime_t *)data; - ktime_t delta, rettime; + unsigned long *calltime = (unsigned long *)data; + unsigned long delta, rettime; unsigned long long duration; - rettime = ktime_get(); - delta = ktime_sub(rettime, *calltime); - duration = (unsigned long long) ktime_to_ns(delta) >> 10; + rettime = local_clock(); + delta = rettime - *calltime; + duration = delta >> 10; printk(KERN_DEBUG "initcall %pS returned %d after %lld usecs\n", fn, ret, duration); } @@ -1399,7 +1412,9 @@ kernel_init_freeable(); /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); + kprobe_free_init_mem(); ftrace_free_init_mem(); + kgdb_free_init_mem(); free_initmem(); mark_readonly(); --- linux-5.8.0.orig/init/version.c +++ linux-5.8.0/init/version.c @@ -45,7 +45,11 @@ /* FIXED STRINGS! Don't touch! */ const char linux_banner[] = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" - LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION +#ifdef CONFIG_VERSION_SIGNATURE + " (" CONFIG_VERSION_SIGNATURE ")" +#endif + "\n"; const char linux_proc_banner[] = "%s version %s" --- linux-5.8.0.orig/ipc/namespace.c +++ linux-5.8.0/ipc/namespace.c @@ -172,6 +172,23 @@ schedule_work(&free_ipc_work); } } +EXPORT_SYMBOL(put_ipc_ns); + +struct ipc_namespace *get_ipc_ns_exported(struct ipc_namespace *ns) +{ + return get_ipc_ns(ns); +} +EXPORT_SYMBOL(get_ipc_ns_exported); + +struct ipc_namespace *show_init_ipc_ns(void) +{ +#if defined(CONFIG_IPC_NS) + return &init_ipc_ns; +#else + return NULL; +#endif +} +EXPORT_SYMBOL(show_init_ipc_ns); static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns) { --- linux-5.8.0.orig/kernel/Makefile +++ linux-5.8.0/kernel/Makefile @@ -49,7 +49,7 @@ obj-y += livepatch/ obj-y += dma/ -obj-$(CONFIG_CHECKPOINT_RESTORE) += kcmp.o +obj-$(CONFIG_KCMP) += kcmp.o obj-$(CONFIG_FREEZER) += freezer.o obj-$(CONFIG_PROFILING) += profile.o obj-$(CONFIG_STACKTRACE) += stacktrace.o @@ -98,7 +98,6 @@ obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o obj-$(CONFIG_TRACEPOINTS) += tracepoint.o obj-$(CONFIG_LATENCYTOP) += latencytop.o -obj-$(CONFIG_ELFCORE) += elfcore.o obj-$(CONFIG_FUNCTION_TRACER) += trace/ obj-$(CONFIG_TRACING) += trace/ obj-$(CONFIG_TRACE_CLOCK) += trace/ @@ -125,6 +124,7 @@ obj-$(CONFIG_SYSCTL_KUNIT_TEST) += sysctl-test.o +CFLAGS_stackleak.o += $(DISABLE_STACKLEAK_PLUGIN) obj-$(CONFIG_GCC_PLUGIN_STACKLEAK) += stackleak.o KASAN_SANITIZE_stackleak.o := n KCSAN_SANITIZE_stackleak.o := n --- linux-5.8.0.orig/kernel/audit.c +++ linux-5.8.0/kernel/audit.c @@ -125,7 +125,7 @@ /* The identity of the user shutting down the audit system. */ kuid_t audit_sig_uid = INVALID_UID; pid_t audit_sig_pid = -1; -u32 audit_sig_sid = 0; +struct lsmblob audit_sig_lsm; /* Records can be lost in several ways: 0) [suppressed in audit_alloc] @@ -389,10 +389,11 @@ return rc; audit_log_format(ab, "op=set %s=%u old=%u ", function_name, new, old); audit_log_session_info(ab); - rc = audit_log_task_context(ab); + rc = audit_log_task_context(ab, NULL); if (rc) allow_changes = 0; /* Something weird, deny request */ audit_log_format(ab, " res=%d", allow_changes); + audit_log_lsm(NULL, false); audit_log_end(ab); return rc; } @@ -1065,13 +1066,31 @@ return; audit_log_format(*ab, "pid=%d uid=%u ", pid, uid); audit_log_session_info(*ab); - audit_log_task_context(*ab); + audit_log_task_context(*ab, NULL); } static inline void audit_log_user_recv_msg(struct audit_buffer **ab, u16 msg_type) { - audit_log_common_recv_msg(NULL, ab, msg_type); + struct audit_context *context; + + if (!lsm_multiple_contexts()) { + audit_log_common_recv_msg(NULL, ab, msg_type); + return; + } + + context = audit_context(); + if (context) { + if (!context->in_syscall) + audit_stamp_context(context); + audit_log_common_recv_msg(context, ab, msg_type); + return; + } + + audit_alloc(current); + context = audit_context(); + + audit_log_common_recv_msg(context, ab, msg_type); } int is_audit_feature_set(int i) @@ -1186,8 +1205,6 @@ struct audit_buffer *ab; u16 msg_type = nlh->nlmsg_type; struct audit_sig_info *sig_data; - char *ctx = NULL; - u32 len; err = audit_netlink_ok(skb, msg_type); if (err) @@ -1362,6 +1379,7 @@ audit_log_n_untrustedstring(ab, str, data_len); } audit_log_end(ab); + audit_log_lsm(NULL, false); } break; case AUDIT_ADD_RULE: @@ -1428,29 +1446,34 @@ kfree(new); break; } - case AUDIT_SIGNAL_INFO: - len = 0; - if (audit_sig_sid) { - err = security_secid_to_secctx(audit_sig_sid, &ctx, &len); + case AUDIT_SIGNAL_INFO: { + struct lsmcontext context = { }; + int len = 0; + + if (lsmblob_is_set(&audit_sig_lsm)) { + err = security_secid_to_secctx(&audit_sig_lsm, + &context, LSMBLOB_FIRST); if (err) return err; } - sig_data = kmalloc(sizeof(*sig_data) + len, GFP_KERNEL); + sig_data = kmalloc(sizeof(*sig_data) + context.len, GFP_KERNEL); if (!sig_data) { - if (audit_sig_sid) - security_release_secctx(ctx, len); + if (lsmblob_is_set(&audit_sig_lsm)) + security_release_secctx(&context); return -ENOMEM; } sig_data->uid = from_kuid(&init_user_ns, audit_sig_uid); sig_data->pid = audit_sig_pid; - if (audit_sig_sid) { - memcpy(sig_data->ctx, ctx, len); - security_release_secctx(ctx, len); + if (lsmblob_is_set(&audit_sig_lsm)) { + len = context.len; + memcpy(sig_data->ctx, context.context, len); + security_release_secctx(&context); } audit_send_reply(skb, seq, AUDIT_SIGNAL_INFO, 0, 0, sig_data, sizeof(*sig_data) + len); kfree(sig_data); break; + } case AUDIT_TTY_GET: { struct audit_tty_status s; unsigned int t; @@ -1557,7 +1580,7 @@ tty ? tty_name(tty) : "(none)", audit_get_sessionid(current)); audit_put_tty(tty); - audit_log_task_context(ab); /* subj= */ + audit_log_task_context(ab, NULL); /* subj= */ audit_log_format(ab, " comm="); audit_log_untrustedstring(ab, get_task_comm(comm, current)); audit_log_d_path_exe(ab, current->mm); /* exe= */ @@ -1851,6 +1874,11 @@ } audit_get_stamp(ab->ctx, &t, &serial); + if (type == AUDIT_MAC_TASK_CONTEXTS && ab->ctx && + ab->ctx->serial == 0) { + audit_stamp_context(ab->ctx); + audit_get_stamp(ab->ctx, &t, &serial); + } audit_log_format(ab, "audit(%llu.%03lu:%u): ", (unsigned long long)t.tv_sec, t.tv_nsec/1000000, serial); @@ -2108,34 +2136,103 @@ audit_log_format(ab, "(null)"); } -int audit_log_task_context(struct audit_buffer *ab) +int audit_log_task_context(struct audit_buffer *ab, struct lsmblob *blob) { - char *ctx = NULL; - unsigned len; + int i; int error; - u32 sid; + struct lsmblob localblob; + struct lsmcontext lsmdata; - security_task_getsecid(current, &sid); - if (!sid) + /* + * If there is more than one security module that has a + * subject "context" it's necessary to put the subject data + * into a separate record to maintain compatibility. + */ + if (lsm_multiple_contexts()) { + audit_log_format(ab, " subj=?"); return 0; + } - error = security_secid_to_secctx(sid, &ctx, &len); - if (error) { - if (error != -EINVAL) - goto error_path; - return 0; + if (blob == NULL) { + security_task_getsecid(current, &localblob); + if (!lsmblob_is_set(&localblob)) { + audit_log_format(ab, " subj=?"); + return 0; + } + blob = &localblob; } - audit_log_format(ab, " subj=%s", ctx); - security_release_secctx(ctx, len); - return 0; + for (i = 0; i < LSMBLOB_ENTRIES; i++) { + if (blob->secid[i] == 0) + continue; + error = security_secid_to_secctx(blob, &lsmdata, i); + if (error && error != -EINVAL) { + audit_panic("error in audit_log_task_context"); + return error; + } -error_path: - audit_panic("error in audit_log_task_context"); - return error; + audit_log_format(ab, " subj=%s", lsmdata.context); + security_release_secctx(&lsmdata); + break; + } + + return 0; } EXPORT_SYMBOL(audit_log_task_context); +int audit_log_object_context(struct audit_buffer *ab, + struct lsmblob *blob) +{ + int i; + int error; + bool sep = false; + struct lsmcontext lsmdata; + struct audit_buffer *lsmab = NULL; + struct audit_context *context = NULL; + + /* + * If there is more than one security module that has a + * object "context" it's necessary to put the object data + * into a separate record to maintain compatibility. + */ + if (lsm_multiple_contexts()) { + audit_log_format(ab, " obj=?"); + context = ab->ctx; + if (context) + lsmab = audit_log_start(context, GFP_KERNEL, + AUDIT_MAC_OBJ_CONTEXTS); + } + + for (i = 0; i < LSMBLOB_ENTRIES; i++) { + if (blob->secid[i] == 0) + continue; + error = security_secid_to_secctx(blob, &lsmdata, i); + if (error && error != -EINVAL) { + audit_panic("error in audit_log_object_context"); + return error; + } + + if (context) { + audit_log_format(lsmab, "%sobj_%s=%s", + sep ? " " : "", + security_lsm_slot_name(i), + lsmdata.context); + sep = true; + } else + audit_log_format(ab, " obj=%s", lsmdata.context); + + security_release_secctx(&lsmdata); + if (!context) + break; + } + + if (context) + audit_log_end(lsmab); + + return 0; +} +EXPORT_SYMBOL(audit_log_object_context); + void audit_log_d_path_exe(struct audit_buffer *ab, struct mm_struct *mm) { @@ -2204,7 +2301,7 @@ audit_log_format(ab, " comm="); audit_log_untrustedstring(ab, get_task_comm(comm, current)); audit_log_d_path_exe(ab, current->mm); - audit_log_task_context(ab); + audit_log_task_context(ab, NULL); } EXPORT_SYMBOL(audit_log_task_info); @@ -2262,6 +2359,7 @@ if (!audit_enabled) return; + audit_stamp_context(audit_context()); ab = audit_log_start(audit_context(), GFP_KERNEL, AUDIT_LOGIN); if (!ab) return; @@ -2272,11 +2370,12 @@ tty = audit_get_tty(); audit_log_format(ab, "pid=%d uid=%u", task_tgid_nr(current), uid); - audit_log_task_context(ab); + audit_log_task_context(ab, NULL); audit_log_format(ab, " old-auid=%u auid=%u tty=%s old-ses=%u ses=%u res=%d", oldloginuid, loginuid, tty ? tty_name(tty) : "(none)", oldsessionid, sessionid, !rc); audit_put_tty(tty); + audit_log_lsm(NULL, true); audit_log_end(ab); } @@ -2336,7 +2435,7 @@ audit_sig_uid = auid; else audit_sig_uid = uid; - security_task_getsecid(current, &audit_sig_sid); + security_task_getsecid(current, &audit_sig_lsm); } return audit_signal_info_syscall(t); --- linux-5.8.0.orig/kernel/audit.h +++ linux-5.8.0/kernel/audit.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -77,7 +78,7 @@ kuid_t uid; kgid_t gid; dev_t rdev; - u32 osid; + struct lsmblob oblob; struct audit_cap_data fcap; unsigned int fcap_ver; unsigned char type; /* record type */ @@ -134,7 +135,7 @@ kuid_t target_auid; kuid_t target_uid; unsigned int target_sessionid; - u32 target_sid; + struct lsmblob target_lsm; char target_comm[TASK_COMM_LEN]; struct audit_tree_refs *trees, *first_trees; @@ -151,7 +152,7 @@ kuid_t uid; kgid_t gid; umode_t mode; - u32 osid; + struct lsmblob oblob; int has_perm; uid_t perm_uid; gid_t perm_gid; @@ -329,7 +330,7 @@ extern pid_t audit_sig_pid; extern kuid_t audit_sig_uid; -extern u32 audit_sig_sid; +extern struct lsmblob audit_sig_lsm; extern int audit_filter(int msgtype, unsigned int listtype); --- linux-5.8.0.orig/kernel/auditfilter.c +++ linux-5.8.0/kernel/auditfilter.c @@ -74,7 +74,7 @@ case AUDIT_OBJ_LEV_LOW: case AUDIT_OBJ_LEV_HIGH: kfree(f->lsm_str); - security_audit_rule_free(f->lsm_rule); + security_audit_rule_free(f->lsm_rules); } } @@ -519,9 +519,10 @@ goto exit_free; } entry->rule.buflen += f_val; + f->lsm_isset = true; f->lsm_str = str; err = security_audit_rule_init(f->type, f->op, str, - (void **)&f->lsm_rule); + f->lsm_rules); /* Keep currently invalid fields around in case they * become valid after a policy reload. */ if (err == -EINVAL) { @@ -774,7 +775,7 @@ return 0; } -/* Duplicate LSM field information. The lsm_rule is opaque, so must be +/* Duplicate LSM field information. The lsm_rules is opaque, so must be * re-initialized. */ static inline int audit_dupe_lsm_field(struct audit_field *df, struct audit_field *sf) @@ -788,9 +789,9 @@ return -ENOMEM; df->lsm_str = lsm_str; - /* our own (refreshed) copy of lsm_rule */ + /* our own (refreshed) copy of lsm_rules */ ret = security_audit_rule_init(df->type, df->op, df->lsm_str, - (void **)&df->lsm_rule); + df->lsm_rules); /* Keep currently invalid fields around in case they * become valid after a policy reload. */ if (ret == -EINVAL) { @@ -842,7 +843,7 @@ new->tree = old->tree; memcpy(new->fields, old->fields, sizeof(struct audit_field) * fcount); - /* deep copy this information, updating the lsm_rule fields, because + /* deep copy this information, updating the lsm_rules fields, because * the originals will all be freed when the old rule is freed. */ for (i = 0; i < fcount; i++) { switch (new->fields[i].type) { @@ -1106,7 +1107,7 @@ if (!ab) return; audit_log_session_info(ab); - audit_log_task_context(ab); + audit_log_task_context(ab, NULL); audit_log_format(ab, " op=%s", action); audit_log_key(ab, rule->filterkey); audit_log_format(ab, " list=%d res=%d", rule->listnr, res); @@ -1329,7 +1330,7 @@ for (i = 0; i < e->rule.field_count; i++) { struct audit_field *f = &e->rule.fields[i]; pid_t pid; - u32 sid; + struct lsmblob blob; switch (f->type) { case AUDIT_PID: @@ -1358,10 +1359,11 @@ case AUDIT_SUBJ_TYPE: case AUDIT_SUBJ_SEN: case AUDIT_SUBJ_CLR: - if (f->lsm_rule) { - security_task_getsecid(current, &sid); - result = security_audit_rule_match(sid, - f->type, f->op, f->lsm_rule); + if (f->lsm_isset) { + security_task_getsecid(current, &blob); + result = security_audit_rule_match( + &blob, f->type, f->op, + f->lsm_rules); } break; case AUDIT_EXE: @@ -1388,7 +1390,7 @@ return ret; } -static int update_lsm_rule(struct audit_krule *r) +static int update_lsm_rules(struct audit_krule *r) { struct audit_entry *entry = container_of(r, struct audit_entry, rule); struct audit_entry *nentry; @@ -1420,7 +1422,7 @@ return err; } -/* This function will re-initialize the lsm_rule field of all applicable rules. +/* This function will re-initialize the lsm_rules field of all applicable rules. * It will traverse the filter lists serarching for rules that contain LSM * specific filter fields. When such a rule is found, it is copied, the * LSM field is re-initialized, and the old rule is replaced with the @@ -1435,7 +1437,7 @@ for (i = 0; i < AUDIT_NR_FILTERS; i++) { list_for_each_entry_safe(r, n, &audit_rules_list[i], list) { - int res = update_lsm_rule(r); + int res = update_lsm_rules(r); if (!err) err = res; } --- linux-5.8.0.orig/kernel/auditsc.c +++ linux-5.8.0/kernel/auditsc.c @@ -112,7 +112,7 @@ kuid_t target_auid[AUDIT_AUX_PIDS]; kuid_t target_uid[AUDIT_AUX_PIDS]; unsigned int target_sessionid[AUDIT_AUX_PIDS]; - u32 target_sid[AUDIT_AUX_PIDS]; + struct lsmblob target_lsm[AUDIT_AUX_PIDS]; char target_comm[AUDIT_AUX_PIDS][TASK_COMM_LEN]; int pid_count; }; @@ -455,7 +455,7 @@ { const struct cred *cred; int i, need_sid = 1; - u32 sid; + struct lsmblob blob = { }; unsigned int sessionid; cred = rcu_dereference_check(tsk->cred, tsk == current || task_creation); @@ -649,14 +649,15 @@ match for now to avoid losing information that may be wanted. An error message will also be logged upon error */ - if (f->lsm_rule) { + if (f->lsm_isset) { if (need_sid) { - security_task_getsecid(tsk, &sid); + security_task_getsecid(tsk, &blob); need_sid = 0; } - result = security_audit_rule_match(sid, f->type, + result = security_audit_rule_match(&blob, + f->type, f->op, - f->lsm_rule); + f->lsm_rules); } break; case AUDIT_OBJ_USER: @@ -666,21 +667,21 @@ case AUDIT_OBJ_LEV_HIGH: /* The above note for AUDIT_SUBJ_USER...AUDIT_SUBJ_CLR also applies here */ - if (f->lsm_rule) { + if (f->lsm_isset) { /* Find files that match */ if (name) { result = security_audit_rule_match( - name->osid, + &blob, f->type, f->op, - f->lsm_rule); + f->lsm_rules); } else if (ctx) { list_for_each_entry(n, &ctx->names_list, list) { if (security_audit_rule_match( - n->osid, + &blob, f->type, f->op, - f->lsm_rule)) { + f->lsm_rules)) { ++result; break; } @@ -689,9 +690,9 @@ /* Find ipc objects that match */ if (!ctx || ctx->type != AUDIT_IPC) break; - if (security_audit_rule_match(ctx->ipc.osid, + if (security_audit_rule_match(&ctx->ipc.oblob, f->type, f->op, - f->lsm_rule)) + f->lsm_rules)) ++result; } break; @@ -933,10 +934,12 @@ return 0; /* Return if not auditing. */ state = audit_filter_task(tsk, &key); - if (state == AUDIT_DISABLED) { + if (!lsm_multiple_contexts() && state == AUDIT_DISABLED) { clear_tsk_thread_flag(tsk, TIF_SYSCALL_AUDIT); return 0; } + if (state == AUDIT_DISABLED) + clear_tsk_thread_flag(tsk, TIF_SYSCALL_AUDIT); if (!(context = audit_alloc_context(state))) { kfree(key); @@ -964,12 +967,11 @@ } static int audit_log_pid_context(struct audit_context *context, pid_t pid, - kuid_t auid, kuid_t uid, unsigned int sessionid, - u32 sid, char *comm) + kuid_t auid, kuid_t uid, + unsigned int sessionid, + struct lsmblob *blob, char *comm) { struct audit_buffer *ab; - char *ctx = NULL; - u32 len; int rc = 0; ab = audit_log_start(context, GFP_KERNEL, AUDIT_OBJ_PID); @@ -979,15 +981,7 @@ audit_log_format(ab, "opid=%d oauid=%d ouid=%d oses=%d", pid, from_kuid(&init_user_ns, auid), from_kuid(&init_user_ns, uid), sessionid); - if (sid) { - if (security_secid_to_secctx(sid, &ctx, &len)) { - audit_log_format(ab, " obj=(none)"); - rc = 1; - } else { - audit_log_format(ab, " obj=%s", ctx); - security_release_secctx(ctx, len); - } - } + rc = audit_log_object_context(ab, blob); audit_log_format(ab, " ocomm="); audit_log_untrustedstring(ab, comm); audit_log_end(ab); @@ -1214,23 +1208,14 @@ context->socketcall.args[i]); break; } case AUDIT_IPC: { - u32 osid = context->ipc.osid; + struct lsmblob *oblob = &context->ipc.oblob; audit_log_format(ab, "ouid=%u ogid=%u mode=%#ho", from_kuid(&init_user_ns, context->ipc.uid), from_kgid(&init_user_ns, context->ipc.gid), context->ipc.mode); - if (osid) { - char *ctx = NULL; - u32 len; - if (security_secid_to_secctx(osid, &ctx, &len)) { - audit_log_format(ab, " osid=%u", osid); - *call_panic = 1; - } else { - audit_log_format(ab, " obj=%s", ctx); - security_release_secctx(ctx, len); - } - } + if (audit_log_object_context(ab, oblob)) + *call_panic = 1; if (context->ipc.has_perm) { audit_log_end(ab); ab = audit_log_start(context, GFP_KERNEL, @@ -1370,20 +1355,8 @@ from_kgid(&init_user_ns, n->gid), MAJOR(n->rdev), MINOR(n->rdev)); - if (n->osid != 0) { - char *ctx = NULL; - u32 len; - - if (security_secid_to_secctx( - n->osid, &ctx, &len)) { - audit_log_format(ab, " osid=%u", n->osid); - if (call_panic) - *call_panic = 2; - } else { - audit_log_format(ab, " obj=%s", ctx); - security_release_secctx(ctx, len); - } - } + if (audit_log_object_context(ab, &n->oblob) && call_panic) + *call_panic = 2; /* log the audit_names record type */ switch (n->type) { @@ -1452,6 +1425,52 @@ audit_log_end(ab); } +void audit_log_lsm(struct lsmblob *blob, bool exiting) +{ + struct audit_context *context = audit_context(); + struct lsmcontext lsmdata; + struct audit_buffer *ab; + struct lsmblob localblob; + bool sep = false; + int error; + int i; + + if (!lsm_multiple_contexts()) + return; + + if (context && context->in_syscall && !exiting) + return; + + ab = audit_log_start(context, GFP_ATOMIC, AUDIT_MAC_TASK_CONTEXTS); + if (!ab) + return; /* audit_panic or being filtered */ + + if (blob == NULL) { + security_task_getsecid(current, &localblob); + if (!lsmblob_is_set(&localblob)) + return; + blob = &localblob; + } + + for (i = 0; i < LSMBLOB_ENTRIES; i++) { + if (blob->secid[i] == 0) + continue; + error = security_secid_to_secctx(blob, &lsmdata, i); + if (error && error != -EINVAL) { + audit_panic("error in audit_log_lsm"); + return; + } + + audit_log_format(ab, "%ssubj_%s=%s", sep ? " " : "", + security_lsm_slot_name(i), lsmdata.context); + sep = true; + + security_release_secctx(&lsmdata); + } + + audit_log_end(ab); +} + static void audit_log_exit(void) { int i, call_panic = 0; @@ -1547,7 +1566,7 @@ axs->target_auid[i], axs->target_uid[i], axs->target_sessionid[i], - axs->target_sid[i], + &axs->target_lsm[i], axs->target_comm[i])) call_panic = 1; } @@ -1556,7 +1575,7 @@ audit_log_pid_context(context, context->target_pid, context->target_auid, context->target_uid, context->target_sessionid, - context->target_sid, context->target_comm)) + &context->target_lsm, context->target_comm)) call_panic = 1; if (context->pwd.dentry && context->pwd.mnt) { @@ -1575,6 +1594,7 @@ } audit_log_proctitle(); + audit_log_lsm(NULL, true); /* Send end of event record to help user space know we are finished */ ab = audit_log_start(context, GFP_KERNEL, AUDIT_EOE); @@ -1734,7 +1754,7 @@ context->aux = NULL; context->aux_pids = NULL; context->target_pid = 0; - context->target_sid = 0; + lsmblob_init(&context->target_lsm, 0); context->sockaddr_len = 0; context->type = 0; context->fds[0] = -1; @@ -1938,7 +1958,7 @@ name->uid = inode->i_uid; name->gid = inode->i_gid; name->rdev = inode->i_rdev; - security_inode_getsecid(inode, &name->osid); + security_inode_getsecid(inode, &name->oblob); if (flags & AUDIT_INODE_NOEVAL) { name->fcap_ver = -1; return; @@ -2170,6 +2190,21 @@ EXPORT_SYMBOL_GPL(__audit_inode_child); /** + * audit_stamp_context - set the timestamp+serial in an audit context + * @ctx: audit_context to set + */ +void audit_stamp_context(struct audit_context *ctx) +{ + /* ctx will be NULL unless lsm_multiple_contexts() is true */ + if (!ctx) + return; + + ktime_get_coarse_real_ts64(&ctx->ctime); + ctx->serial = audit_serial(); + ctx->current_state = AUDIT_BUILD_CONTEXT; +} + +/** * auditsc_get_stamp - get local copies of audit_context values * @ctx: audit_context for the task * @t: timespec64 to store time recorded in the audit_context @@ -2180,6 +2215,12 @@ int auditsc_get_stamp(struct audit_context *ctx, struct timespec64 *t, unsigned int *serial) { + if (ctx->serial && !ctx->in_syscall) { + t->tv_sec = ctx->ctime.tv_sec; + t->tv_nsec = ctx->ctime.tv_nsec; + *serial = ctx->serial; + return 1; + } if (!ctx->in_syscall) return 0; if (!ctx->serial) @@ -2288,7 +2329,7 @@ context->ipc.gid = ipcp->gid; context->ipc.mode = ipcp->mode; context->ipc.has_perm = 0; - security_ipc_getsecid(ipcp, &context->ipc.osid); + security_ipc_getsecid(ipcp, &context->ipc.oblob); context->type = AUDIT_IPC; } @@ -2383,7 +2424,7 @@ context->target_auid = audit_get_loginuid(t); context->target_uid = task_uid(t); context->target_sessionid = audit_get_sessionid(t); - security_task_getsecid(t, &context->target_sid); + security_task_getsecid(t, &context->target_lsm); memcpy(context->target_comm, t->comm, TASK_COMM_LEN); } @@ -2410,7 +2451,7 @@ ctx->target_auid = audit_get_loginuid(t); ctx->target_uid = t_uid; ctx->target_sessionid = audit_get_sessionid(t); - security_task_getsecid(t, &ctx->target_sid); + security_task_getsecid(t, &ctx->target_lsm); memcpy(ctx->target_comm, t->comm, TASK_COMM_LEN); return 0; } @@ -2431,7 +2472,7 @@ axp->target_auid[axp->pid_count] = audit_get_loginuid(t); axp->target_uid[axp->pid_count] = t_uid; axp->target_sessionid[axp->pid_count] = audit_get_sessionid(t); - security_task_getsecid(t, &axp->target_sid[axp->pid_count]); + security_task_getsecid(t, &axp->target_lsm[axp->pid_count]); memcpy(axp->target_comm[axp->pid_count], t->comm, TASK_COMM_LEN); axp->pid_count++; @@ -2569,7 +2610,7 @@ name, af, nentries, audit_nfcfgs[op].s); audit_log_format(ab, " pid=%u", task_pid_nr(current)); - audit_log_task_context(ab); /* subj= */ + audit_log_task_context(ab, NULL); /* subj= */ audit_log_format(ab, " comm="); audit_log_untrustedstring(ab, get_task_comm(comm, current)); audit_log_end(ab); @@ -2592,7 +2633,7 @@ from_kuid(&init_user_ns, uid), from_kgid(&init_user_ns, gid), sessionid); - audit_log_task_context(ab); + audit_log_task_context(ab, NULL); audit_log_format(ab, " pid=%d comm=", task_tgid_nr(current)); audit_log_untrustedstring(ab, get_task_comm(comm, current)); audit_log_d_path_exe(ab, current->mm); @@ -2615,11 +2656,13 @@ if (signr == SIGQUIT) /* don't care for those */ return; + audit_stamp_context(audit_context()); ab = audit_log_start(audit_context(), GFP_KERNEL, AUDIT_ANOM_ABEND); if (unlikely(!ab)) return; audit_log_task(ab); audit_log_format(ab, " sig=%ld res=1", signr); + audit_log_lsm(NULL, true); audit_log_end(ab); } --- linux-5.8.0.orig/kernel/bpf/Makefile +++ linux-5.8.0/kernel/bpf/Makefile @@ -1,6 +1,10 @@ # SPDX-License-Identifier: GPL-2.0 obj-y := core.o -CFLAGS_core.o += $(call cc-disable-warning, override-init) +ifneq ($(CONFIG_BPF_JIT_ALWAYS_ON),y) +# ___bpf_prog_run() needs GCSE disabled on x86; see 3193c0836f203 for details +cflags-nogcse-$(CONFIG_X86)$(CONFIG_CC_IS_GCC) := -fno-gcse +endif +CFLAGS_core.o += $(call cc-disable-warning, override-init) $(cflags-nogcse-yy) obj-$(CONFIG_BPF_SYSCALL) += syscall.o verifier.o inode.o helpers.o tnum.o bpf_iter.o map_iter.o task_iter.o obj-$(CONFIG_BPF_SYSCALL) += hashtab.o arraymap.o percpu_freelist.o bpf_lru_list.o lpm_trie.o map_in_map.o --- linux-5.8.0.orig/kernel/bpf/bpf_iter.c +++ linux-5.8.0/kernel/bpf/bpf_iter.c @@ -64,6 +64,9 @@ iter_priv->done_stop = true; } +/* maximum visited objects before bailing out */ +#define MAX_ITER_OBJECTS 1000000 + /* bpf_seq_read, a customized and simpler version for bpf iterator. * no_llseek is assumed for this file. * The following are differences from seq_read(): @@ -76,7 +79,7 @@ { struct seq_file *seq = file->private_data; size_t n, offs, copied = 0; - int err = 0; + int err = 0, num_objs = 0; void *p; mutex_lock(&seq->lock); @@ -132,6 +135,7 @@ while (1) { loff_t pos = seq->index; + num_objs++; offs = seq->count; p = seq->op->next(seq, p, &seq->index); if (pos == seq->index) { @@ -150,6 +154,15 @@ if (seq->count >= size) break; + if (num_objs >= MAX_ITER_OBJECTS) { + if (offs == 0) { + err = -EAGAIN; + seq->op->stop(seq, p); + goto done; + } + break; + } + err = seq->op->show(seq, p); if (err > 0) { bpf_iter_dec_seq_num(seq); @@ -243,7 +256,7 @@ { struct bpf_iter_target_info *tinfo; - tinfo = kmalloc(sizeof(*tinfo), GFP_KERNEL); + tinfo = kzalloc(sizeof(*tinfo), GFP_KERNEL); if (!tinfo) return -ENOMEM; --- linux-5.8.0.orig/kernel/bpf/bpf_lru_list.c +++ linux-5.8.0/kernel/bpf/bpf_lru_list.c @@ -502,13 +502,14 @@ static void bpf_common_lru_push_free(struct bpf_lru *lru, struct bpf_lru_node *node) { + u8 node_type = READ_ONCE(node->type); unsigned long flags; - if (WARN_ON_ONCE(node->type == BPF_LRU_LIST_T_FREE) || - WARN_ON_ONCE(node->type == BPF_LRU_LOCAL_LIST_T_FREE)) + if (WARN_ON_ONCE(node_type == BPF_LRU_LIST_T_FREE) || + WARN_ON_ONCE(node_type == BPF_LRU_LOCAL_LIST_T_FREE)) return; - if (node->type == BPF_LRU_LOCAL_LIST_T_PENDING) { + if (node_type == BPF_LRU_LOCAL_LIST_T_PENDING) { struct bpf_lru_locallist *loc_l; loc_l = per_cpu_ptr(lru->common_lru.local_list, node->cpu); --- linux-5.8.0.orig/kernel/bpf/cgroup.c +++ linux-5.8.0/kernel/bpf/cgroup.c @@ -1367,12 +1367,13 @@ if (ctx.optlen != 0) { *optlen = ctx.optlen; *kernel_optval = ctx.optval; + /* export and don't free sockopt buf */ + return 0; } } out: - if (ret) - sockopt_free_buf(&ctx); + sockopt_free_buf(&ctx); return ret; } @@ -1417,6 +1418,11 @@ goto out; } + if (ctx.optlen < 0) { + ret = -EFAULT; + goto out; + } + if (copy_from_user(ctx.optval, optval, min(ctx.optlen, max_optlen)) != 0) { ret = -EFAULT; @@ -1434,7 +1440,7 @@ goto out; } - if (ctx.optlen > max_optlen) { + if (ctx.optlen > max_optlen || ctx.optlen < 0) { ret = -EFAULT; goto out; } --- linux-5.8.0.orig/kernel/bpf/core.c +++ linux-5.8.0/kernel/bpf/core.c @@ -1364,7 +1364,7 @@ * * Decode and execute eBPF instructions. */ -static u64 __no_fgcse ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack) +static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack) { #define BPF_INSN_2_LBL(x, y) [BPF_##x | BPF_##y] = &&x##_##y #define BPF_INSN_3_LBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = &&x##_##y##_##z --- linux-5.8.0.orig/kernel/bpf/devmap.c +++ linux-5.8.0/kernel/bpf/devmap.c @@ -808,9 +808,7 @@ break; /* will be freed in free_netdev() */ - netdev->xdp_bulkq = - __alloc_percpu_gfp(sizeof(struct xdp_dev_bulk_queue), - sizeof(void *), GFP_ATOMIC); + netdev->xdp_bulkq = alloc_percpu(struct xdp_dev_bulk_queue); if (!netdev->xdp_bulkq) return NOTIFY_BAD; --- linux-5.8.0.orig/kernel/bpf/hashtab.c +++ linux-5.8.0/kernel/bpf/hashtab.c @@ -821,6 +821,32 @@ } } +static void pcpu_init_value(struct bpf_htab *htab, void __percpu *pptr, + void *value, bool onallcpus) +{ + /* When using prealloc and not setting the initial value on all cpus, + * zero-fill element values for other cpus (just as what happens when + * not using prealloc). Otherwise, bpf program has no way to ensure + * known initial values for cpus other than current one + * (onallcpus=false always when coming from bpf prog). + */ + if (htab_is_prealloc(htab) && !onallcpus) { + u32 size = round_up(htab->map.value_size, 8); + int current_cpu = raw_smp_processor_id(); + int cpu; + + for_each_possible_cpu(cpu) { + if (cpu == current_cpu) + bpf_long_memcpy(per_cpu_ptr(pptr, cpu), value, + size); + else + memset(per_cpu_ptr(pptr, cpu), 0, size); + } + } else { + pcpu_copy_value(htab, pptr, value, onallcpus); + } +} + static bool fd_htab_map_needs_adjust(const struct bpf_htab *htab) { return htab->map.map_type == BPF_MAP_TYPE_HASH_OF_MAPS && @@ -891,7 +917,7 @@ } } - pcpu_copy_value(htab, pptr, value, onallcpus); + pcpu_init_value(htab, pptr, value, onallcpus); if (!prealloc) htab_elem_set_ptr(l_new, key_size, pptr); @@ -1183,7 +1209,7 @@ pcpu_copy_value(htab, htab_elem_get_ptr(l_old, key_size), value, onallcpus); } else { - pcpu_copy_value(htab, htab_elem_get_ptr(l_new, key_size), + pcpu_init_value(htab, htab_elem_get_ptr(l_new, key_size), value, onallcpus); hlist_nulls_add_head_rcu(&l_new->hash_node, head); l_new = NULL; --- linux-5.8.0.orig/kernel/bpf/helpers.c +++ linux-5.8.0/kernel/bpf/helpers.c @@ -108,7 +108,7 @@ } const struct bpf_func_proto bpf_map_peek_elem_proto = { - .func = bpf_map_pop_elem, + .func = bpf_map_peek_elem, .gpl_only = false, .ret_type = RET_INTEGER, .arg1_type = ARG_CONST_MAP_PTR, --- linux-5.8.0.orig/kernel/bpf/inode.c +++ linux-5.8.0/kernel/bpf/inode.c @@ -226,10 +226,12 @@ else prev_key = key; + rcu_read_lock(); if (map->ops->map_get_next_key(map, prev_key, key)) { map_iter(m)->done = true; - return NULL; + key = NULL; } + rcu_read_unlock(); return key; } --- linux-5.8.0.orig/kernel/bpf/map_iter.c +++ linux-5.8.0/kernel/bpf/map_iter.c @@ -6,7 +6,7 @@ #include struct bpf_iter_seq_map_info { - u32 mid; + u32 map_id; }; static void *bpf_map_seq_start(struct seq_file *seq, loff_t *pos) @@ -14,27 +14,23 @@ struct bpf_iter_seq_map_info *info = seq->private; struct bpf_map *map; - map = bpf_map_get_curr_or_next(&info->mid); + map = bpf_map_get_curr_or_next(&info->map_id); if (!map) return NULL; - ++*pos; + if (*pos == 0) + ++*pos; return map; } static void *bpf_map_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct bpf_iter_seq_map_info *info = seq->private; - struct bpf_map *map; ++*pos; - ++info->mid; + ++info->map_id; bpf_map_put((struct bpf_map *)v); - map = bpf_map_get_curr_or_next(&info->mid); - if (!map) - return NULL; - - return map; + return bpf_map_get_curr_or_next(&info->map_id); } struct bpf_iter__bpf_map { --- linux-5.8.0.orig/kernel/bpf/percpu_freelist.c +++ linux-5.8.0/kernel/bpf/percpu_freelist.c @@ -17,6 +17,8 @@ raw_spin_lock_init(&head->lock); head->first = NULL; } + raw_spin_lock_init(&s->extralist.lock); + s->extralist.first = NULL; return 0; } @@ -40,12 +42,50 @@ raw_spin_unlock(&head->lock); } +static inline bool pcpu_freelist_try_push_extra(struct pcpu_freelist *s, + struct pcpu_freelist_node *node) +{ + if (!raw_spin_trylock(&s->extralist.lock)) + return false; + + pcpu_freelist_push_node(&s->extralist, node); + raw_spin_unlock(&s->extralist.lock); + return true; +} + +static inline void ___pcpu_freelist_push_nmi(struct pcpu_freelist *s, + struct pcpu_freelist_node *node) +{ + int cpu, orig_cpu; + + orig_cpu = cpu = raw_smp_processor_id(); + while (1) { + struct pcpu_freelist_head *head; + + head = per_cpu_ptr(s->freelist, cpu); + if (raw_spin_trylock(&head->lock)) { + pcpu_freelist_push_node(head, node); + raw_spin_unlock(&head->lock); + return; + } + cpu = cpumask_next(cpu, cpu_possible_mask); + if (cpu >= nr_cpu_ids) + cpu = 0; + + /* cannot lock any per cpu lock, try extralist */ + if (cpu == orig_cpu && + pcpu_freelist_try_push_extra(s, node)) + return; + } +} + void __pcpu_freelist_push(struct pcpu_freelist *s, struct pcpu_freelist_node *node) { - struct pcpu_freelist_head *head = this_cpu_ptr(s->freelist); - - ___pcpu_freelist_push(head, node); + if (in_nmi()) + ___pcpu_freelist_push_nmi(s, node); + else + ___pcpu_freelist_push(this_cpu_ptr(s->freelist), node); } void pcpu_freelist_push(struct pcpu_freelist *s, @@ -81,7 +121,7 @@ } } -struct pcpu_freelist_node *__pcpu_freelist_pop(struct pcpu_freelist *s) +static struct pcpu_freelist_node *___pcpu_freelist_pop(struct pcpu_freelist *s) { struct pcpu_freelist_head *head; struct pcpu_freelist_node *node; @@ -102,8 +142,59 @@ if (cpu >= nr_cpu_ids) cpu = 0; if (cpu == orig_cpu) - return NULL; + break; + } + + /* per cpu lists are all empty, try extralist */ + raw_spin_lock(&s->extralist.lock); + node = s->extralist.first; + if (node) + s->extralist.first = node->next; + raw_spin_unlock(&s->extralist.lock); + return node; +} + +static struct pcpu_freelist_node * +___pcpu_freelist_pop_nmi(struct pcpu_freelist *s) +{ + struct pcpu_freelist_head *head; + struct pcpu_freelist_node *node; + int orig_cpu, cpu; + + orig_cpu = cpu = raw_smp_processor_id(); + while (1) { + head = per_cpu_ptr(s->freelist, cpu); + if (raw_spin_trylock(&head->lock)) { + node = head->first; + if (node) { + head->first = node->next; + raw_spin_unlock(&head->lock); + return node; + } + raw_spin_unlock(&head->lock); + } + cpu = cpumask_next(cpu, cpu_possible_mask); + if (cpu >= nr_cpu_ids) + cpu = 0; + if (cpu == orig_cpu) + break; } + + /* cannot pop from per cpu lists, try extralist */ + if (!raw_spin_trylock(&s->extralist.lock)) + return NULL; + node = s->extralist.first; + if (node) + s->extralist.first = node->next; + raw_spin_unlock(&s->extralist.lock); + return node; +} + +struct pcpu_freelist_node *__pcpu_freelist_pop(struct pcpu_freelist *s) +{ + if (in_nmi()) + return ___pcpu_freelist_pop_nmi(s); + return ___pcpu_freelist_pop(s); } struct pcpu_freelist_node *pcpu_freelist_pop(struct pcpu_freelist *s) --- linux-5.8.0.orig/kernel/bpf/percpu_freelist.h +++ linux-5.8.0/kernel/bpf/percpu_freelist.h @@ -13,6 +13,7 @@ struct pcpu_freelist { struct pcpu_freelist_head __percpu *freelist; + struct pcpu_freelist_head extralist; }; struct pcpu_freelist_node { --- linux-5.8.0.orig/kernel/bpf/ringbuf.c +++ linux-5.8.0/kernel/bpf/ringbuf.c @@ -247,25 +247,20 @@ return -ENOTSUPP; } -static size_t bpf_ringbuf_mmap_page_cnt(const struct bpf_ringbuf *rb) -{ - size_t data_pages = (rb->mask + 1) >> PAGE_SHIFT; - - /* consumer page + producer page + 2 x data pages */ - return RINGBUF_POS_PAGES + 2 * data_pages; -} - static int ringbuf_map_mmap(struct bpf_map *map, struct vm_area_struct *vma) { struct bpf_ringbuf_map *rb_map; - size_t mmap_sz; rb_map = container_of(map, struct bpf_ringbuf_map, map); - mmap_sz = bpf_ringbuf_mmap_page_cnt(rb_map->rb) << PAGE_SHIFT; - if (vma->vm_pgoff * PAGE_SIZE + (vma->vm_end - vma->vm_start) > mmap_sz) - return -EINVAL; + if (vma->vm_flags & VM_WRITE) + /* allow writable mapping for the consumer_pos only */ + if (vma->vm_pgoff != 0 || vma->vm_end - vma->vm_start != PAGE_SIZE) + return -EPERM; + else + vma->vm_flags &= ~VM_MAYWRITE; + /* remap_vmalloc_range() checks size and offset constraints */ return remap_vmalloc_range(vma, rb_map->rb, vma->vm_pgoff + RINGBUF_PGOFF); } @@ -337,6 +332,9 @@ return NULL; len = round_up(size + BPF_RINGBUF_HDR_SZ, 8); + if (len > rb->mask + 1) + return NULL; + cons_pos = smp_load_acquire(&rb->consumer_pos); if (in_nmi()) { --- linux-5.8.0.orig/kernel/bpf/stackmap.c +++ linux-5.8.0/kernel/bpf/stackmap.c @@ -114,6 +114,8 @@ /* hash table size must be power of 2 */ n_buckets = roundup_pow_of_two(attr->max_entries); + if (!n_buckets) + return ERR_PTR(-E2BIG); cost = n_buckets * sizeof(struct stack_map_bucket *) + sizeof(*smap); cost += n_buckets * (value_size + sizeof(struct stack_map_bucket)); --- linux-5.8.0.orig/kernel/bpf/syscall.c +++ linux-5.8.0/kernel/bpf/syscall.c @@ -2629,7 +2629,7 @@ u32 ulen = info->raw_tracepoint.tp_name_len; size_t tp_len = strlen(tp_name); - if (ulen && !ubuf) + if (!ulen ^ !ubuf) return -EINVAL; info->raw_tracepoint.tp_name_len = tp_len + 1; --- linux-5.8.0.orig/kernel/bpf/sysfs_btf.c +++ linux-5.8.0/kernel/bpf/sysfs_btf.c @@ -30,15 +30,15 @@ static int __init btf_vmlinux_init(void) { - if (!__start_BTF) + bin_attr_btf_vmlinux.size = __stop_BTF - __start_BTF; + + if (!__start_BTF || bin_attr_btf_vmlinux.size == 0) return 0; btf_kobj = kobject_create_and_add("btf", kernel_kobj); if (!btf_kobj) return -ENOMEM; - bin_attr_btf_vmlinux.size = __stop_BTF - __start_BTF; - return sysfs_create_bin_file(btf_kobj, &bin_attr_btf_vmlinux); } --- linux-5.8.0.orig/kernel/bpf/task_iter.c +++ linux-5.8.0/kernel/bpf/task_iter.c @@ -28,8 +28,9 @@ rcu_read_lock(); retry: - pid = idr_get_next(&ns->idr, tid); + pid = find_ge_pid(*tid, ns); if (pid) { + *tid = pid_nr_ns(pid, ns); task = get_pid_task(pid, PIDTYPE_PID); if (!task) { ++*tid; @@ -50,7 +51,8 @@ if (!task) return NULL; - ++*pos; + if (*pos == 0) + ++*pos; return task; } @@ -126,8 +128,7 @@ }; static struct file * -task_file_seq_get_next(struct bpf_iter_seq_task_file_info *info, - struct task_struct **task, struct files_struct **fstruct) +task_file_seq_get_next(struct bpf_iter_seq_task_file_info *info) { struct pid_namespace *ns = info->common.ns; u32 curr_tid = info->tid, max_fds; @@ -140,26 +141,29 @@ * Otherwise, it does not hold any reference. */ again: - if (*task) { - curr_task = *task; - curr_files = *fstruct; + if (info->task) { + curr_task = info->task; + curr_files = info->files; curr_fd = info->fd; } else { curr_task = task_seq_get_next(ns, &curr_tid); - if (!curr_task) + if (!curr_task) { + info->task = NULL; + info->files = NULL; + info->tid = curr_tid; return NULL; + } curr_files = get_files_struct(curr_task); if (!curr_files) { put_task_struct(curr_task); - curr_tid = ++(info->tid); + curr_tid = curr_tid + 1; info->fd = 0; goto again; } - /* set *fstruct, *task and info->tid */ - *fstruct = curr_files; - *task = curr_task; + info->files = curr_files; + info->task = curr_task; if (curr_tid == info->tid) { curr_fd = info->fd; } else { @@ -176,10 +180,11 @@ f = fcheck_files(curr_files, curr_fd); if (!f) continue; + if (!get_file_rcu(f)) + continue; /* set info->fd */ info->fd = curr_fd; - get_file(f); rcu_read_unlock(); return f; } @@ -188,8 +193,8 @@ rcu_read_unlock(); put_files_struct(curr_files); put_task_struct(curr_task); - *task = NULL; - *fstruct = NULL; + info->task = NULL; + info->files = NULL; info->fd = 0; curr_tid = ++(info->tid); goto again; @@ -198,20 +203,13 @@ static void *task_file_seq_start(struct seq_file *seq, loff_t *pos) { struct bpf_iter_seq_task_file_info *info = seq->private; - struct files_struct *files = NULL; - struct task_struct *task = NULL; struct file *file; - file = task_file_seq_get_next(info, &task, &files); - if (!file) { - info->files = NULL; - info->task = NULL; - return NULL; - } - - ++*pos; - info->task = task; - info->files = files; + info->task = NULL; + info->files = NULL; + file = task_file_seq_get_next(info); + if (file && *pos == 0) + ++*pos; return file; } @@ -219,24 +217,11 @@ static void *task_file_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct bpf_iter_seq_task_file_info *info = seq->private; - struct files_struct *files = info->files; - struct task_struct *task = info->task; - struct file *file; ++*pos; ++info->fd; fput((struct file *)v); - file = task_file_seq_get_next(info, &task, &files); - if (!file) { - info->files = NULL; - info->task = NULL; - return NULL; - } - - info->task = task; - info->files = files; - - return file; + return task_file_seq_get_next(info); } struct bpf_iter__task_file { --- linux-5.8.0.orig/kernel/bpf/verifier.c +++ linux-5.8.0/kernel/bpf/verifier.c @@ -1267,9 +1267,7 @@ static bool __reg64_bound_s32(s64 a) { - if (a > S32_MIN && a < S32_MAX) - return true; - return false; + return a > S32_MIN && a < S32_MAX; } static bool __reg64_bound_u32(u64 a) @@ -1283,10 +1281,10 @@ { __mark_reg32_unbounded(reg); - if (__reg64_bound_s32(reg->smin_value)) + if (__reg64_bound_s32(reg->smin_value) && __reg64_bound_s32(reg->smax_value)) { reg->s32_min_value = (s32)reg->smin_value; - if (__reg64_bound_s32(reg->smax_value)) reg->s32_max_value = (s32)reg->smax_value; + } if (__reg64_bound_u32(reg->umin_value)) reg->u32_min_value = (u32)reg->umin_value; if (__reg64_bound_u32(reg->umax_value)) @@ -1470,6 +1468,10 @@ for (i = 0; i < insn_cnt; i++) { u8 code = insn[i].code; + if (code == (BPF_JMP | BPF_CALL) && + insn[i].imm == BPF_FUNC_tail_call && + insn[i].src_reg != BPF_PSEUDO_CALL) + subprog[cur_subprog].has_tail_call = true; if (BPF_CLASS(code) != BPF_JMP && BPF_CLASS(code) != BPF_JMP32) goto next; if (BPF_OP(code) == BPF_EXIT || BPF_OP(code) == BPF_CALL) @@ -2160,6 +2162,8 @@ case PTR_TO_XDP_SOCK: case PTR_TO_BTF_ID: case PTR_TO_BTF_ID_OR_NULL: + case PTR_TO_MEM: + case PTR_TO_MEM_OR_NULL: return true; default: return false; @@ -2951,6 +2955,31 @@ int ret_prog[MAX_CALL_FRAMES]; process_func: + /* protect against potential stack overflow that might happen when + * bpf2bpf calls get combined with tailcalls. Limit the caller's stack + * depth for such case down to 256 so that the worst case scenario + * would result in 8k stack size (32 which is tailcall limit * 256 = + * 8k). + * + * To get the idea what might happen, see an example: + * func1 -> sub rsp, 128 + * subfunc1 -> sub rsp, 256 + * tailcall1 -> add rsp, 256 + * func2 -> sub rsp, 192 (total stack size = 128 + 192 = 320) + * subfunc2 -> sub rsp, 64 + * subfunc22 -> sub rsp, 128 + * tailcall2 -> add rsp, 128 + * func3 -> sub rsp, 32 (total stack size 128 + 192 + 64 + 32 = 416) + * + * tailcall will unwind the current stack frame but it will not get rid + * of caller's stack as shown on the example above. + */ + if (idx && subprog[idx].has_tail_call && depth >= 256) { + verbose(env, + "tail_calls are not allowed when call stack of previous frames is %d bytes. Too large\n", + depth); + return -EACCES; + } /* round up to 32-bytes, since this is granularity * of interpreter stack size */ @@ -4385,8 +4414,9 @@ subprog); clear_caller_saved_regs(env, caller->regs); - /* All global functions return SCALAR_VALUE */ + /* All global functions return a 64-bit SCALAR_VALUE */ mark_reg_unknown(env, caller->regs, BPF_REG_0); + caller->regs[BPF_REG_0].subreg_def = DEF_NOT_SUBREG; /* continue with next insn after call */ return 0; @@ -4494,6 +4524,8 @@ ret_reg->smax_value = meta->msize_max_value; ret_reg->s32_max_value = meta->msize_max_value; + ret_reg->smin_value = -MAX_ERRNO; + ret_reg->s32_min_value = -MAX_ERRNO; __reg_deduce_bounds(ret_reg); __reg_bound_offset(ret_reg); __update_reg_bounds(ret_reg); @@ -4808,7 +4840,7 @@ return res < a; } -static bool signed_add32_overflows(s64 a, s64 b) +static bool signed_add32_overflows(s32 a, s32 b) { /* Do the add in u32, where overflow is well-defined */ s32 res = (s32)((u32)a + (u32)b); @@ -4818,7 +4850,7 @@ return res < a; } -static bool signed_sub_overflows(s32 a, s32 b) +static bool signed_sub_overflows(s64 a, s64 b) { /* Do the sub in u64, where overflow is well-defined */ s64 res = (s64)((u64)a - (u64)b); @@ -4830,7 +4862,7 @@ static bool signed_sub32_overflows(s32 a, s32 b) { - /* Do the sub in u64, where overflow is well-defined */ + /* Do the sub in u32, where overflow is well-defined */ s32 res = (s32)((u32)a - (u32)b); if (b < 0) @@ -4883,10 +4915,14 @@ { bool mask_to_left = (opcode == BPF_ADD && off_is_neg) || (opcode == BPF_SUB && !off_is_neg); - u32 off; + u32 off, max; switch (ptr_reg->type) { case PTR_TO_STACK: + /* Offset 0 is out-of-bounds, but acceptable start for the + * left direction, see BPF_REG_FP. + */ + max = MAX_BPF_STACK + mask_to_left; /* Indirect variable offset stack access is prohibited in * unprivileged mode so it's not handled here. */ @@ -4894,16 +4930,17 @@ if (mask_to_left) *ptr_limit = MAX_BPF_STACK + off; else - *ptr_limit = -off; - return 0; + *ptr_limit = -off - 1; + return *ptr_limit >= max ? -ERANGE : 0; case PTR_TO_MAP_VALUE: + max = ptr_reg->map_ptr->value_size; if (mask_to_left) { *ptr_limit = ptr_reg->umax_value + ptr_reg->off; } else { off = ptr_reg->smin_value + ptr_reg->off; - *ptr_limit = ptr_reg->map_ptr->value_size - off; + *ptr_limit = ptr_reg->map_ptr->value_size - off - 1; } - return 0; + return *ptr_limit >= max ? -ERANGE : 0; default: return -EINVAL; } @@ -4956,6 +4993,7 @@ u32 alu_state, alu_limit; struct bpf_reg_state tmp; bool ret; + int err; if (can_skip_alu_sanitation(env, insn)) return 0; @@ -4971,10 +5009,13 @@ alu_state |= ptr_is_dst_reg ? BPF_ALU_SANITIZE_SRC : BPF_ALU_SANITIZE_DST; - if (retrieve_ptr_limit(ptr_reg, &alu_limit, opcode, off_is_neg)) - return 0; - if (update_alu_sanitation_state(aux, alu_state, alu_limit)) - return -EACCES; + err = retrieve_ptr_limit(ptr_reg, &alu_limit, opcode, off_is_neg); + if (err < 0) + return err; + + err = update_alu_sanitation_state(aux, alu_state, alu_limit); + if (err < 0) + return err; do_sim: /* Simulate and find potential out-of-bounds access under * speculative execution from truncation as a result of @@ -5042,6 +5083,10 @@ dst, reg_type_str[ptr_reg->type]); return -EACCES; case CONST_PTR_TO_MAP: + /* smin_val represents the known value */ + if (known && smin_val == 0 && opcode == BPF_ADD) + break; + /* fall-through */ case PTR_TO_PACKET_END: case PTR_TO_SOCKET: case PTR_TO_SOCKET_OR_NULL: @@ -5081,7 +5126,7 @@ case BPF_ADD: ret = sanitize_ptr_alu(env, insn, ptr_reg, dst_reg, smin_val < 0); if (ret < 0) { - verbose(env, "R%d tried to add from different maps or paths\n", dst); + verbose(env, "R%d tried to add from different maps, paths, or prohibited types\n", dst); return ret; } /* We can take a fixed offset as long as it doesn't overflow @@ -5136,7 +5181,7 @@ case BPF_SUB: ret = sanitize_ptr_alu(env, insn, ptr_reg, dst_reg, smin_val < 0); if (ret < 0) { - verbose(env, "R%d tried to sub from different maps or paths\n", dst); + verbose(env, "R%d tried to sub from different maps, paths, or prohibited types\n", dst); return ret; } if (dst_reg == off_reg) { @@ -5415,18 +5460,10 @@ static void scalar32_min_max_and(struct bpf_reg_state *dst_reg, struct bpf_reg_state *src_reg) { - bool src_known = tnum_subreg_is_const(src_reg->var_off); - bool dst_known = tnum_subreg_is_const(dst_reg->var_off); struct tnum var32_off = tnum_subreg(dst_reg->var_off); s32 smin_val = src_reg->s32_min_value; u32 umax_val = src_reg->u32_max_value; - /* Assuming scalar64_min_max_and will be called so its safe - * to skip updating register for known 32-bit case. - */ - if (src_known && dst_known) - return; - /* We get our minimum from the var_off, since that's inherently * bitwise. Our maximum is the minimum of the operands' maxima. */ @@ -5487,17 +5524,9 @@ static void scalar32_min_max_or(struct bpf_reg_state *dst_reg, struct bpf_reg_state *src_reg) { - bool src_known = tnum_subreg_is_const(src_reg->var_off); - bool dst_known = tnum_subreg_is_const(dst_reg->var_off); struct tnum var32_off = tnum_subreg(dst_reg->var_off); - s32 smin_val = src_reg->smin_value; - u32 umin_val = src_reg->umin_value; - - /* Assuming scalar64_min_max_or will be called so it is safe - * to skip updating register for known case. - */ - if (src_known && dst_known) - return; + s32 smin_val = src_reg->s32_min_value; + u32 umin_val = src_reg->u32_min_value; /* We get our maximum from the var_off, and our minimum is the * maximum of the operands' minima @@ -5514,8 +5543,8 @@ /* ORing two positives gives a positive, so safe to * cast result into s64. */ - dst_reg->s32_min_value = dst_reg->umin_value; - dst_reg->s32_max_value = dst_reg->umax_value; + dst_reg->s32_min_value = dst_reg->u32_min_value; + dst_reg->s32_max_value = dst_reg->u32_max_value; } } @@ -5555,6 +5584,59 @@ __update_reg_bounds(dst_reg); } +static void scalar32_min_max_xor(struct bpf_reg_state *dst_reg, + struct bpf_reg_state *src_reg) +{ + struct tnum var32_off = tnum_subreg(dst_reg->var_off); + s32 smin_val = src_reg->s32_min_value; + + /* We get both minimum and maximum from the var32_off. */ + dst_reg->u32_min_value = var32_off.value; + dst_reg->u32_max_value = var32_off.value | var32_off.mask; + + if (dst_reg->s32_min_value >= 0 && smin_val >= 0) { + /* XORing two positive sign numbers gives a positive, + * so safe to cast u32 result into s32. + */ + dst_reg->s32_min_value = dst_reg->u32_min_value; + dst_reg->s32_max_value = dst_reg->u32_max_value; + } else { + dst_reg->s32_min_value = S32_MIN; + dst_reg->s32_max_value = S32_MAX; + } +} + +static void scalar_min_max_xor(struct bpf_reg_state *dst_reg, + struct bpf_reg_state *src_reg) +{ + bool src_known = tnum_is_const(src_reg->var_off); + bool dst_known = tnum_is_const(dst_reg->var_off); + s64 smin_val = src_reg->smin_value; + + if (src_known && dst_known) { + /* dst_reg->var_off.value has been updated earlier */ + __mark_reg_known(dst_reg, dst_reg->var_off.value); + return; + } + + /* We get both minimum and maximum from the var_off. */ + dst_reg->umin_value = dst_reg->var_off.value; + dst_reg->umax_value = dst_reg->var_off.value | dst_reg->var_off.mask; + + if (dst_reg->smin_value >= 0 && smin_val >= 0) { + /* XORing two positive sign numbers gives a positive, + * so safe to cast u64 result into s64. + */ + dst_reg->smin_value = dst_reg->umin_value; + dst_reg->smax_value = dst_reg->umax_value; + } else { + dst_reg->smin_value = S64_MIN; + dst_reg->smax_value = S64_MAX; + } + + __update_reg_bounds(dst_reg); +} + static void __scalar32_min_max_lsh(struct bpf_reg_state *dst_reg, u64 umin_val, u64 umax_val) { @@ -5863,6 +5945,11 @@ scalar32_min_max_or(dst_reg, &src_reg); scalar_min_max_or(dst_reg, &src_reg); break; + case BPF_XOR: + dst_reg->var_off = tnum_xor(dst_reg->var_off, src_reg.var_off); + scalar32_min_max_xor(dst_reg, &src_reg); + scalar_min_max_xor(dst_reg, &src_reg); + break; case BPF_LSH: if (umax_val >= insn_bitness) { /* Shifts greater than 31 or 63 are undefined. @@ -6284,7 +6371,7 @@ case BPF_JSGT: if (reg->s32_min_value > sval) return 1; - else if (reg->s32_max_value < sval) + else if (reg->s32_max_value <= sval) return 0; break; case BPF_JLT: @@ -6357,7 +6444,7 @@ case BPF_JSGT: if (reg->smin_value > sval) return 1; - else if (reg->smax_value < sval) + else if (reg->smax_value <= sval) return 0; break; case BPF_JLT: @@ -7820,7 +7907,11 @@ return old->umin_value <= cur->umin_value && old->umax_value >= cur->umax_value && old->smin_value <= cur->smin_value && - old->smax_value >= cur->smax_value; + old->smax_value >= cur->smax_value && + old->u32_min_value <= cur->u32_min_value && + old->u32_max_value >= cur->u32_max_value && + old->s32_min_value <= cur->s32_min_value && + old->s32_max_value >= cur->s32_max_value; } /* Maximum number of register states that can exist at once */ @@ -10033,30 +10124,30 @@ insn->code == (BPF_ALU | BPF_MOD | BPF_X) || insn->code == (BPF_ALU | BPF_DIV | BPF_X)) { bool is64 = BPF_CLASS(insn->code) == BPF_ALU64; - struct bpf_insn mask_and_div[] = { - BPF_MOV32_REG(insn->src_reg, insn->src_reg), - /* Rx div 0 -> 0 */ - BPF_JMP_IMM(BPF_JNE, insn->src_reg, 0, 2), + bool isdiv = BPF_OP(insn->code) == BPF_DIV; + struct bpf_insn *patchlet; + struct bpf_insn chk_and_div[] = { + /* [R,W]x div 0 -> 0 */ + BPF_RAW_INSN((is64 ? BPF_JMP : BPF_JMP32) | + BPF_JNE | BPF_K, insn->src_reg, + 0, 2, 0), BPF_ALU32_REG(BPF_XOR, insn->dst_reg, insn->dst_reg), BPF_JMP_IMM(BPF_JA, 0, 0, 1), *insn, }; - struct bpf_insn mask_and_mod[] = { - BPF_MOV32_REG(insn->src_reg, insn->src_reg), - /* Rx mod 0 -> Rx */ - BPF_JMP_IMM(BPF_JEQ, insn->src_reg, 0, 1), + struct bpf_insn chk_and_mod[] = { + /* [R,W]x mod 0 -> [R,W]x */ + BPF_RAW_INSN((is64 ? BPF_JMP : BPF_JMP32) | + BPF_JEQ | BPF_K, insn->src_reg, + 0, 1 + (is64 ? 0 : 1), 0), *insn, + BPF_JMP_IMM(BPF_JA, 0, 0, 1), + BPF_MOV32_REG(insn->dst_reg, insn->dst_reg), }; - struct bpf_insn *patchlet; - if (insn->code == (BPF_ALU64 | BPF_DIV | BPF_X) || - insn->code == (BPF_ALU | BPF_DIV | BPF_X)) { - patchlet = mask_and_div + (is64 ? 1 : 0); - cnt = ARRAY_SIZE(mask_and_div) - (is64 ? 1 : 0); - } else { - patchlet = mask_and_mod + (is64 ? 1 : 0); - cnt = ARRAY_SIZE(mask_and_mod) - (is64 ? 1 : 0); - } + patchlet = isdiv ? chk_and_div : chk_and_mod; + cnt = isdiv ? ARRAY_SIZE(chk_and_div) : + ARRAY_SIZE(chk_and_mod) - (is64 ? 2 : 0); new_prog = bpf_patch_insn_data(env, i + delta, patchlet, cnt); if (!new_prog) @@ -10108,7 +10199,7 @@ off_reg = issrc ? insn->src_reg : insn->dst_reg; if (isneg) *patch++ = BPF_ALU64_IMM(BPF_MUL, off_reg, -1); - *patch++ = BPF_MOV32_IMM(BPF_REG_AX, aux->alu_limit - 1); + *patch++ = BPF_MOV32_IMM(BPF_REG_AX, aux->alu_limit); *patch++ = BPF_ALU64_REG(BPF_SUB, BPF_REG_AX, off_reg); *patch++ = BPF_ALU64_REG(BPF_OR, BPF_REG_AX, off_reg); *patch++ = BPF_ALU64_IMM(BPF_NEG, BPF_REG_AX, 0); @@ -10862,6 +10953,11 @@ } if (prog->expected_attach_type == BPF_MODIFY_RETURN) { + if (tgt_prog) { + verbose(env, "can't modify return codes of BPF programs\n"); + ret = -EINVAL; + goto out; + } ret = check_attach_modify_return(prog, addr); if (ret) verbose(env, "%s() is not modifiable\n", --- linux-5.8.0.orig/kernel/cgroup/cgroup-v1.c +++ linux-5.8.0/kernel/cgroup/cgroup-v1.c @@ -908,6 +908,8 @@ opt = fs_parse(fc, cgroup1_fs_parameters, param, &result); if (opt == -ENOPARAM) { if (strcmp(param->key, "source") == 0) { + if (fc->source) + return invalf(fc, "Multiple sources not supported"); fc->source = param->string; param->string = NULL; return 0; @@ -915,6 +917,9 @@ for_each_subsys(ss, i) { if (strcmp(param->key, ss->legacy_name)) continue; + if (!cgroup_ssid_enabled(i) || cgroup1_ssid_disabled(i)) + return invalfc(fc, "Disabled controller '%s'", + param->key); ctx->subsys_mask |= (1 << i); return 0; } --- linux-5.8.0.orig/kernel/cgroup/cgroup.c +++ linux-5.8.0/kernel/cgroup/cgroup.c @@ -3568,6 +3568,7 @@ { struct psi_trigger *new; struct cgroup *cgrp; + struct psi_group *psi; cgrp = cgroup_kn_lock_live(of->kn, false); if (!cgrp) @@ -3576,7 +3577,8 @@ cgroup_get(cgrp); cgroup_kn_unlock(of->kn); - new = psi_trigger_create(&cgrp->psi, buf, nbytes, res); + psi = cgroup_ino(cgrp) == 1 ? &psi_system : &cgrp->psi; + new = psi_trigger_create(psi, buf, nbytes, res); if (IS_ERR(new)) { cgroup_put(cgrp); return PTR_ERR(new); --- linux-5.8.0.orig/kernel/cgroup/cpuset.c +++ linux-5.8.0/kernel/cgroup/cpuset.c @@ -983,25 +983,48 @@ */ static void rebuild_sched_domains_locked(void) { + struct cgroup_subsys_state *pos_css; struct sched_domain_attr *attr; cpumask_var_t *doms; + struct cpuset *cs; int ndoms; lockdep_assert_cpus_held(); percpu_rwsem_assert_held(&cpuset_rwsem); /* - * We have raced with CPU hotplug. Don't do anything to avoid + * If we have raced with CPU hotplug, return early to avoid * passing doms with offlined cpu to partition_sched_domains(). - * Anyways, hotplug work item will rebuild sched domains. + * Anyways, cpuset_hotplug_workfn() will rebuild sched domains. + * + * With no CPUs in any subpartitions, top_cpuset's effective CPUs + * should be the same as the active CPUs, so checking only top_cpuset + * is enough to detect racing CPU offlines. */ if (!top_cpuset.nr_subparts_cpus && !cpumask_equal(top_cpuset.effective_cpus, cpu_active_mask)) return; - if (top_cpuset.nr_subparts_cpus && - !cpumask_subset(top_cpuset.effective_cpus, cpu_active_mask)) - return; + /* + * With subpartition CPUs, however, the effective CPUs of a partition + * root should be only a subset of the active CPUs. Since a CPU in any + * partition root could be offlined, all must be checked. + */ + if (top_cpuset.nr_subparts_cpus) { + rcu_read_lock(); + cpuset_for_each_descendant_pre(cs, pos_css, &top_cpuset) { + if (!is_partition_root(cs)) { + pos_css = css_rightmost_descendant(pos_css); + continue; + } + if (!cpumask_subset(cs->effective_cpus, + cpu_active_mask)) { + rcu_read_unlock(); + return; + } + } + rcu_read_unlock(); + } /* Generate domain masks and attrs */ ndoms = generate_sched_domains(&doms, &attr); --- linux-5.8.0.orig/kernel/cpu.c +++ linux-5.8.0/kernel/cpu.c @@ -815,6 +815,10 @@ } #ifdef CONFIG_HOTPLUG_CPU +#ifndef arch_clear_mm_cpumask_cpu +#define arch_clear_mm_cpumask_cpu(cpu, mm) cpumask_clear_cpu(cpu, mm_cpumask(mm)) +#endif + /** * clear_tasks_mm_cpumask - Safely clear tasks' mm_cpumask for a CPU * @cpu: a CPU id @@ -850,7 +854,7 @@ t = find_lock_task_mm(p); if (!t) continue; - cpumask_clear_cpu(cpu, mm_cpumask(t->mm)); + arch_clear_mm_cpumask_cpu(cpu, t->mm); task_unlock(t); } rcu_read_unlock(); --- linux-5.8.0.orig/kernel/cred.c +++ linux-5.8.0/kernel/cred.c @@ -733,14 +733,14 @@ /** * set_security_override - Set the security ID in a set of credentials * @new: The credentials to alter - * @secid: The LSM security ID to set + * @blob: The LSM security information to set * * Set the LSM security ID in a set of credentials so that the subjective * security is overridden when an alternative set of credentials is used. */ -int set_security_override(struct cred *new, u32 secid) +int set_security_override(struct cred *new, struct lsmblob *blob) { - return security_kernel_act_as(new, secid); + return security_kernel_act_as(new, blob); } EXPORT_SYMBOL(set_security_override); @@ -756,14 +756,14 @@ */ int set_security_override_from_ctx(struct cred *new, const char *secctx) { - u32 secid; + struct lsmblob blob; int ret; - ret = security_secctx_to_secid(secctx, strlen(secctx), &secid); + ret = security_secctx_to_secid(secctx, strlen(secctx), &blob); if (ret < 0) return ret; - return set_security_override(new, secid); + return set_security_override(new, &blob); } EXPORT_SYMBOL(set_security_override_from_ctx); --- linux-5.8.0.orig/kernel/debug/debug_core.c +++ linux-5.8.0/kernel/debug/debug_core.c @@ -94,14 +94,6 @@ /* Use kdb or gdbserver mode */ int dbg_kdb_mode = 1; -static int __init opt_kgdb_con(char *str) -{ - kgdb_use_con = 1; - return 0; -} - -early_param("kgdbcon", opt_kgdb_con); - module_param(kgdb_use_con, int, 0644); module_param(kgdbreboot, int, 0644); @@ -451,6 +443,17 @@ return 0; } +void kgdb_free_init_mem(void) +{ + int i; + + /* Clear init memory breakpoints. */ + for (i = 0; i < KGDB_MAX_BREAKPOINTS; i++) { + if (init_section_contains((void *)kgdb_break[i].bpt_addr, 0)) + kgdb_break[i].state = BP_UNDEFINED; + } +} + #ifdef CONFIG_KGDB_KDB void kdb_dump_stack_on_cpu(int cpu) { @@ -920,6 +923,20 @@ .index = -1, }; +static int __init opt_kgdb_con(char *str) +{ + kgdb_use_con = 1; + + if (kgdb_io_module_registered && !kgdb_con_registered) { + register_console(&kgdbcons); + kgdb_con_registered = 1; + } + + return 0; +} + +early_param("kgdbcon", opt_kgdb_con); + #ifdef CONFIG_MAGIC_SYSRQ static void sysrq_handle_dbg(int key) { --- linux-5.8.0.orig/kernel/debug/kdb/kdb_io.c +++ linux-5.8.0/kernel/debug/kdb/kdb_io.c @@ -706,12 +706,16 @@ size_avail = sizeof(kdb_buffer) - len; goto kdb_print_out; } - if (kdb_grepping_flag >= KDB_GREPPING_FLAG_SEARCH) + if (kdb_grepping_flag >= KDB_GREPPING_FLAG_SEARCH) { /* * This was a interactive search (using '/' at more - * prompt) and it has completed. Clear the flag. + * prompt) and it has completed. Replace the \0 with + * its original value to ensure multi-line strings + * are handled properly, and return to normal mode. */ + *cphold = replaced_byte; kdb_grepping_flag = 0; + } /* * at this point the string is a full line and * should be printed, up to the null. --- linux-5.8.0.orig/kernel/debug/kdb/kdb_private.h +++ linux-5.8.0/kernel/debug/kdb/kdb_private.h @@ -234,7 +234,7 @@ #define kdb_do_each_thread(g, p) do_each_thread(g, p) #define kdb_while_each_thread(g, p) while_each_thread(g, p) -#define GFP_KDB (in_interrupt() ? GFP_ATOMIC : GFP_KERNEL) +#define GFP_KDB (in_dbg_master() ? GFP_ATOMIC : GFP_KERNEL) extern void *debug_kmalloc(size_t size, gfp_t flags); extern void debug_kfree(void *); --- linux-5.8.0.orig/kernel/dma/direct.c +++ linux-5.8.0/kernel/dma/direct.c @@ -45,7 +45,7 @@ return (1ULL << (fls64(max_dma) - 1)) * 2 - 1; } -gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask, +static gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask, u64 *phys_limit) { u64 dma_limit = min_not_zero(dma_mask, dev->bus_dma_limit); @@ -70,7 +70,7 @@ return 0; } -bool dma_coherent_ok(struct device *dev, phys_addr_t phys, size_t size) +static bool dma_coherent_ok(struct device *dev, phys_addr_t phys, size_t size) { return phys_to_dma_direct(dev, phys) + size - 1 <= min_not_zero(dev->coherent_dma_mask, dev->bus_dma_limit); @@ -163,8 +163,13 @@ size = PAGE_ALIGN(size); if (dma_should_alloc_from_pool(dev, gfp, attrs)) { - ret = dma_alloc_from_pool(dev, size, &page, gfp); - if (!ret) + u64 phys_mask; + + gfp |= dma_direct_optimal_gfp_mask(dev, dev->coherent_dma_mask, + &phys_mask); + page = dma_alloc_from_pool(dev, size, &ret, gfp, + dma_coherent_ok); + if (!page) return NULL; goto done; } --- linux-5.8.0.orig/kernel/dma/pool.c +++ linux-5.8.0/kernel/dma/pool.c @@ -3,7 +3,9 @@ * Copyright (C) 2012 ARM Ltd. * Copyright (C) 2020 Google LLC */ +#include #include +#include #include #include #include @@ -55,11 +57,34 @@ pool_size_kernel += size; } +static bool cma_in_zone(gfp_t gfp) +{ + unsigned long size; + phys_addr_t end; + struct cma *cma; + + cma = dev_get_cma_area(NULL); + if (!cma) + return false; + + size = cma_get_size(cma); + if (!size) + return false; + + /* CMA can't cross zone boundaries, see cma_activate_area() */ + 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)) + return end <= DMA_BIT_MASK(32); + return true; +} + static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size, gfp_t gfp) { unsigned int order; - struct page *page; + struct page *page = NULL; void *addr; int ret = -ENOMEM; @@ -68,7 +93,11 @@ do { pool_size = 1 << (PAGE_SHIFT + order); - page = alloc_pages(gfp, order); + if (cma_in_zone(gfp)) + page = dma_alloc_from_contiguous(NULL, 1 << order, + order, false); + if (!page) + page = alloc_pages(gfp, order); } while (!page && order-- > 0); if (!page) goto out; @@ -196,93 +225,75 @@ } postcore_initcall(dma_atomic_pool_init); -static inline struct gen_pool *dma_guess_pool_from_device(struct device *dev) +static inline struct gen_pool *dma_guess_pool(struct gen_pool *prev, gfp_t gfp) { - u64 phys_mask; - gfp_t gfp; - - gfp = dma_direct_optimal_gfp_mask(dev, dev->coherent_dma_mask, - &phys_mask); - if (IS_ENABLED(CONFIG_ZONE_DMA) && gfp == GFP_DMA) + if (prev == NULL) { + if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32)) + return atomic_pool_dma32; + if (IS_ENABLED(CONFIG_ZONE_DMA) && (gfp & GFP_DMA)) + return atomic_pool_dma; + return atomic_pool_kernel; + } + if (prev == atomic_pool_kernel) + return atomic_pool_dma32 ? atomic_pool_dma32 : atomic_pool_dma; + if (prev == atomic_pool_dma32) return atomic_pool_dma; - if (IS_ENABLED(CONFIG_ZONE_DMA32) && gfp == GFP_DMA32) - return atomic_pool_dma32; - return atomic_pool_kernel; + return NULL; } -static inline struct gen_pool *dma_get_safer_pool(struct gen_pool *bad_pool) +static struct page *__dma_alloc_from_pool(struct device *dev, size_t size, + struct gen_pool *pool, void **cpu_addr, + bool (*phys_addr_ok)(struct device *, phys_addr_t, size_t)) { - if (bad_pool == atomic_pool_kernel) - return atomic_pool_dma32 ? : atomic_pool_dma; + unsigned long addr; + phys_addr_t phys; - if (bad_pool == atomic_pool_dma32) - return atomic_pool_dma; + addr = gen_pool_alloc(pool, size); + if (!addr) + return NULL; - return NULL; -} + phys = gen_pool_virt_to_phys(pool, addr); + if (phys_addr_ok && !phys_addr_ok(dev, phys, size)) { + gen_pool_free(pool, addr, size); + return NULL; + } -static inline struct gen_pool *dma_guess_pool(struct device *dev, - struct gen_pool *bad_pool) -{ - if (bad_pool) - return dma_get_safer_pool(bad_pool); + if (gen_pool_avail(pool) < atomic_pool_size) + schedule_work(&atomic_pool_work); - return dma_guess_pool_from_device(dev); + *cpu_addr = (void *)addr; + memset(*cpu_addr, 0, size); + return pfn_to_page(__phys_to_pfn(phys)); } -void *dma_alloc_from_pool(struct device *dev, size_t size, - struct page **ret_page, gfp_t flags) +struct page *dma_alloc_from_pool(struct device *dev, size_t size, + void **cpu_addr, gfp_t gfp, + bool (*phys_addr_ok)(struct device *, phys_addr_t, size_t)) { struct gen_pool *pool = NULL; - unsigned long val = 0; - void *ptr = NULL; - phys_addr_t phys; - - while (1) { - pool = dma_guess_pool(dev, pool); - if (!pool) { - WARN(1, "Failed to get suitable pool for %s\n", - dev_name(dev)); - break; - } - - val = gen_pool_alloc(pool, size); - if (!val) - continue; - - phys = gen_pool_virt_to_phys(pool, val); - if (dma_coherent_ok(dev, phys, size)) - break; - - gen_pool_free(pool, val, size); - val = 0; - } - - - if (val) { - *ret_page = pfn_to_page(__phys_to_pfn(phys)); - ptr = (void *)val; - memset(ptr, 0, size); + struct page *page; - if (gen_pool_avail(pool) < atomic_pool_size) - schedule_work(&atomic_pool_work); + while ((pool = dma_guess_pool(pool, gfp))) { + page = __dma_alloc_from_pool(dev, size, pool, cpu_addr, + phys_addr_ok); + if (page) + return page; } - return ptr; + WARN(1, "Failed to get suitable pool for %s\n", dev_name(dev)); + return NULL; } bool dma_free_from_pool(struct device *dev, void *start, size_t size) { struct gen_pool *pool = NULL; - while (1) { - pool = dma_guess_pool(dev, pool); - if (!pool) - return false; - - if (gen_pool_has_addr(pool, (unsigned long)start, size)) { - gen_pool_free(pool, (unsigned long)start, size); - return true; - } + while ((pool = dma_guess_pool(pool, 0))) { + if (!gen_pool_has_addr(pool, (unsigned long)start, size)) + continue; + gen_pool_free(pool, (unsigned long)start, size); + return true; } + + return false; } --- linux-5.8.0.orig/kernel/dma/swiotlb.c +++ linux-5.8.0/kernel/dma/swiotlb.c @@ -231,6 +231,7 @@ io_tlb_orig_addr[i] = INVALID_PHYS_ADDR; } io_tlb_index = 0; + no_iotlb_memory = false; if (verbose) swiotlb_print_info(); @@ -262,9 +263,11 @@ if (vstart && !swiotlb_init_with_tbl(vstart, io_tlb_nslabs, verbose)) return; - if (io_tlb_start) + if (io_tlb_start) { memblock_free_early(io_tlb_start, PAGE_ALIGN(io_tlb_nslabs << IO_TLB_SHIFT)); + io_tlb_start = 0; + } pr_warn("Cannot allocate buffer"); no_iotlb_memory = true; } @@ -362,6 +365,7 @@ io_tlb_orig_addr[i] = INVALID_PHYS_ADDR; } io_tlb_index = 0; + no_iotlb_memory = false; swiotlb_print_info(); --- linux-5.8.0.orig/kernel/events/core.c +++ linux-5.8.0/kernel/events/core.c @@ -99,7 +99,7 @@ * retry due to any failures in smp_call_function_single(), such as if the * task_cpu() goes offline concurrently. * - * returns @func return value or -ESRCH when the process isn't running + * returns @func return value or -ESRCH or -ENXIO when the process isn't running */ static int task_function_call(struct task_struct *p, remote_function_f func, void *info) @@ -115,7 +115,8 @@ for (;;) { ret = smp_call_function_single(task_cpu(p), remote_function, &data, 1); - ret = !ret ? data.ret : -EAGAIN; + if (!ret) + ret = data.ret; if (ret != -EAGAIN) break; @@ -406,8 +407,13 @@ * 0 - disallow raw tracepoint access for unpriv * 1 - disallow cpu events for unpriv * 2 - disallow kernel profiling for unpriv + * 4 - disallow all unpriv perf event use */ +#ifdef CONFIG_SECURITY_PERF_EVENTS_RESTRICT +int sysctl_perf_event_paranoid __read_mostly = PERF_SECURITY_MAX; +#else int sysctl_perf_event_paranoid __read_mostly = 2; +#endif /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ @@ -1310,7 +1316,7 @@ * function. * * Lock order: - * exec_update_mutex + * exec_update_lock * task_struct::perf_event_mutex * perf_event_context::mutex * perf_event::child_mutex; @@ -2549,11 +2555,8 @@ pmu->start_txn(pmu, PERF_PMU_TXN_ADD); - if (event_sched_in(group_event, cpuctx, ctx)) { - pmu->cancel_txn(pmu); - perf_mux_hrtimer_restart(cpuctx); - return -EAGAIN; - } + if (event_sched_in(group_event, cpuctx, ctx)) + goto error; /* * Schedule in siblings as one group (if any): @@ -2582,10 +2585,8 @@ } event_sched_out(group_event, cpuctx, ctx); +error: pmu->cancel_txn(pmu); - - perf_mux_hrtimer_restart(cpuctx); - return -EAGAIN; } @@ -3641,6 +3642,7 @@ *can_add_hw = 0; ctx->rotate_necessary = 1; + perf_mux_hrtimer_restart(cpuctx); } return 0; @@ -5851,11 +5853,11 @@ static void perf_mmap_close(struct vm_area_struct *vma) { struct perf_event *event = vma->vm_file->private_data; - struct perf_buffer *rb = ring_buffer_get(event); struct user_struct *mmap_user = rb->mmap_user; int mmap_locked = rb->mmap_locked; unsigned long size = perf_data_size(rb); + bool detach_rest = false; if (event->pmu->event_unmapped) event->pmu->event_unmapped(event, vma->vm_mm); @@ -5886,7 +5888,8 @@ mutex_unlock(&event->mmap_mutex); } - atomic_dec(&rb->mmap_count); + if (atomic_dec_and_test(&rb->mmap_count)) + detach_rest = true; if (!atomic_dec_and_mutex_lock(&event->mmap_count, &event->mmap_mutex)) goto out_put; @@ -5895,7 +5898,7 @@ mutex_unlock(&event->mmap_mutex); /* If there's still other mmap()s of this buffer, we're done. */ - if (atomic_read(&rb->mmap_count)) + if (!detach_rest) goto out_put; /* @@ -9939,6 +9942,7 @@ if (token == IF_SRC_FILE || token == IF_SRC_FILEADDR) { int fpos = token == IF_SRC_FILE ? 2 : 1; + kfree(filename); filename = match_strdup(&args[fpos]); if (!filename) { ret = -ENOMEM; @@ -9985,16 +9989,13 @@ */ ret = -EOPNOTSUPP; if (!event->ctx->task) - goto fail_free_name; + goto fail; /* look up the path and grab its inode */ ret = kern_path(filename, LOOKUP_FOLLOW, &filter->path); if (ret) - goto fail_free_name; - - kfree(filename); - filename = NULL; + goto fail; ret = -EINVAL; if (!filter->path.dentry || @@ -10014,13 +10015,13 @@ if (state != IF_STATE_ACTION) goto fail; + kfree(filename); kfree(orig); return 0; -fail_free_name: - kfree(filename); fail: + kfree(filename); free_filters_list(filters); kfree(orig); @@ -11503,6 +11504,9 @@ if (err) return err; + if (perf_paranoid_any() && !capable(CAP_SYS_ADMIN)) + return -EACCES; + err = perf_copy_attr(attr_uptr, &attr); if (err) return err; @@ -11582,14 +11586,14 @@ } if (task) { - err = mutex_lock_interruptible(&task->signal->exec_update_mutex); + err = down_read_interruptible(&task->signal->exec_update_lock); if (err) goto err_task; /* * Reuse ptrace permission checks for now. * - * We must hold exec_update_mutex across this and any potential + * We must hold exec_update_lock across this and any potential * perf_install_in_context() call for this new event to * serialize against exec() altering our credentials (and the * perf_event_exit_task() that could imply). @@ -11878,7 +11882,7 @@ mutex_unlock(&ctx->mutex); if (task) { - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); put_task_struct(task); } @@ -11914,7 +11918,7 @@ free_event(event); err_cred: if (task) - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); err_task: if (task) put_task_struct(task); @@ -12219,7 +12223,7 @@ /* * When a child task exits, feed back event values to parent events. * - * Can be called with exec_update_mutex held when called from + * Can be called with exec_update_lock held when called from * setup_new_exec(). */ void perf_event_exit_task(struct task_struct *child) --- linux-5.8.0.orig/kernel/events/internal.h +++ linux-5.8.0/kernel/events/internal.h @@ -211,7 +211,7 @@ rctx = 3; else if (in_irq()) rctx = 2; - else if (in_softirq()) + else if (in_serving_softirq()) rctx = 1; else rctx = 0; --- linux-5.8.0.orig/kernel/events/uprobes.c +++ linux-5.8.0/kernel/events/uprobes.c @@ -205,7 +205,7 @@ try_to_free_swap(old_page); page_vma_mapped_walk_done(&pvmw); - if (vma->vm_flags & VM_LOCKED) + if ((vma->vm_flags & VM_LOCKED) && !PageCompound(old_page)) munlock_vma_page(old_page); put_page(old_page); @@ -1823,7 +1823,7 @@ t->utask->dup_xol_addr = area->vaddr; init_task_work(&t->utask->dup_xol_work, dup_xol_work); - task_work_add(t, &t->utask->dup_xol_work, true); + task_work_add(t, &t->utask->dup_xol_work, TWA_RESUME); } /* --- linux-5.8.0.orig/kernel/exit.c +++ linux-5.8.0/kernel/exit.c @@ -63,6 +63,7 @@ #include #include #include +#include #include #include @@ -453,7 +454,10 @@ mmap_read_unlock(mm); self.task = current; - self.next = xchg(&core_state->dumper.next, &self); + if (self.task->flags & PF_SIGNALED) + self.next = xchg(&core_state->dumper.next, &self); + else + self.task = NULL; /* * Implies mb(), the result of xchg() must be visible * to core_state->dumper. @@ -758,6 +762,7 @@ schedule(); } + io_uring_files_cancel(tsk->files); exit_signals(tsk); /* sets PF_EXITING */ /* sync mm's RSS info before statistics gathering */ --- linux-5.8.0.orig/kernel/fail_function.c +++ linux-5.8.0/kernel/fail_function.c @@ -253,7 +253,7 @@ if (copy_from_user(buf, buffer, count)) { ret = -EFAULT; - goto out; + goto out_free; } buf[count] = '\0'; sym = strstrip(buf); @@ -307,8 +307,9 @@ ret = count; } out: - kfree(buf); mutex_unlock(&fei_lock); +out_free: + kfree(buf); return ret; } --- linux-5.8.0.orig/kernel/fork.c +++ linux-5.8.0/kernel/fork.c @@ -95,6 +95,7 @@ #include #include #include +#include #include #include @@ -106,6 +107,11 @@ #define CREATE_TRACE_POINTS #include +#ifdef CONFIG_USER_NS +extern int unprivileged_userns_clone; +#else +#define unprivileged_userns_clone 0 +#endif /* * Minimum number of threads to boot the kernel @@ -570,7 +576,7 @@ struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; - get_file(file); + vma_get_file(tmp); if (tmp->vm_flags & VM_DENYWRITE) atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); @@ -745,6 +751,7 @@ WARN_ON(refcount_read(&tsk->usage)); WARN_ON(tsk == current); + io_uring_free(tsk); cgroup_free(tsk); task_numa_free(tsk, true); security_task_free(tsk); @@ -1131,6 +1138,7 @@ schedule_work(&mm->async_put_work); } } +EXPORT_SYMBOL(mmput_async); #endif /** @@ -1235,7 +1243,7 @@ struct mm_struct *mm; int err; - err = mutex_lock_killable(&task->signal->exec_update_mutex); + err = down_read_killable(&task->signal->exec_update_lock); if (err) return ERR_PTR(err); @@ -1245,7 +1253,7 @@ mmput(mm); mm = ERR_PTR(-EACCES); } - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); return mm; } @@ -1605,7 +1613,7 @@ sig->oom_score_adj_min = current->signal->oom_score_adj_min; mutex_init(&sig->cred_guard_mutex); - mutex_init(&sig->exec_update_mutex); + init_rwsem(&sig->exec_update_lock); return 0; } @@ -1830,6 +1838,25 @@ free_task(tsk); } +static void copy_oom_score_adj(u64 clone_flags, struct task_struct *tsk) +{ + /* Skip if kernel thread */ + if (!tsk->mm) + return; + + /* Skip if spawning a thread or using vfork */ + if ((clone_flags & (CLONE_VM | CLONE_THREAD | CLONE_VFORK)) != CLONE_VM) + return; + + /* We need to synchronize with __set_oom_adj */ + mutex_lock(&oom_adj_mutex); + set_bit(MMF_MULTIPROCESS, &tsk->mm->flags); + /* Update the values in case they were changed after copy_signal */ + tsk->signal->oom_score_adj = current->signal->oom_score_adj; + tsk->signal->oom_score_adj_min = current->signal->oom_score_adj_min; + mutex_unlock(&oom_adj_mutex); +} + /* * This creates a new process as a copy of the old one, * but does not actually start it yet. @@ -1861,6 +1888,10 @@ if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) return ERR_PTR(-EINVAL); + if ((clone_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) + if (!capable(CAP_SYS_ADMIN)) + return ERR_PTR(-EPERM); + /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. @@ -2003,6 +2034,10 @@ p->vtime.state = VTIME_INACTIVE; #endif +#ifdef CONFIG_IO_URING + p->io_uring = NULL; +#endif + #if defined(SPLIT_RSS_COUNTING) memset(&p->rss_stat, 0, sizeof(p->rss_stat)); #endif @@ -2171,14 +2206,9 @@ /* ok, now we should be set up.. */ p->pid = pid_nr(pid); if (clone_flags & CLONE_THREAD) { - p->exit_signal = -1; p->group_leader = current->group_leader; p->tgid = current->tgid; } else { - if (clone_flags & CLONE_PARENT) - p->exit_signal = current->group_leader->exit_signal; - else - p->exit_signal = args->exit_signal; p->group_leader = p; p->tgid = p->pid; } @@ -2222,9 +2252,14 @@ if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) { p->real_parent = current->real_parent; p->parent_exec_id = current->parent_exec_id; + if (clone_flags & CLONE_THREAD) + p->exit_signal = -1; + else + p->exit_signal = current->group_leader->exit_signal; } else { p->real_parent = current; p->parent_exec_id = current->self_exec_id; + p->exit_signal = args->exit_signal; } klp_copy_process(p); @@ -2310,6 +2345,8 @@ trace_task_newtask(p, clone_flags); uprobe_copy_process(p, clone_flags); + copy_oom_score_adj(clone_flags, p); + return p; bad_fork_cancel_cgroup: @@ -2961,6 +2998,12 @@ if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; + if ((unshare_flags & CLONE_NEWUSER) && !unprivileged_userns_clone) { + err = -EPERM; + if (!capable(CAP_SYS_ADMIN)) + goto bad_unshare_out; + } + err = check_unshare_flags(unshare_flags); if (err) goto bad_unshare_out; --- linux-5.8.0.orig/kernel/futex.c +++ linux-5.8.0/kernel/futex.c @@ -56,6 +56,7 @@ #include #include #include +#include #include @@ -677,10 +678,6 @@ return err; } -static inline void put_futex_key(union futex_key *key) -{ -} - /** * fault_in_user_writeable() - Fault in user address and verify RW access * @uaddr: pointer to faulting user space address @@ -785,6 +782,29 @@ return pi_state; } +static void pi_state_update_owner(struct futex_pi_state *pi_state, + struct task_struct *new_owner) +{ + struct task_struct *old_owner = pi_state->owner; + + lockdep_assert_held(&pi_state->pi_mutex.wait_lock); + + if (old_owner) { + raw_spin_lock(&old_owner->pi_lock); + WARN_ON(list_empty(&pi_state->list)); + list_del_init(&pi_state->list); + raw_spin_unlock(&old_owner->pi_lock); + } + + if (new_owner) { + raw_spin_lock(&new_owner->pi_lock); + WARN_ON(!list_empty(&pi_state->list)); + list_add(&pi_state->list, &new_owner->pi_state_list); + pi_state->owner = new_owner; + raw_spin_unlock(&new_owner->pi_lock); + } +} + static void get_pi_state(struct futex_pi_state *pi_state) { WARN_ON_ONCE(!refcount_inc_not_zero(&pi_state->refcount)); @@ -807,17 +827,12 @@ * and has cleaned up the pi_state already */ if (pi_state->owner) { - struct task_struct *owner; + unsigned long flags; - raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); - owner = pi_state->owner; - if (owner) { - raw_spin_lock(&owner->pi_lock); - list_del_init(&pi_state->list); - raw_spin_unlock(&owner->pi_lock); - } - rt_mutex_proxy_unlock(&pi_state->pi_mutex, owner); - raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); + raw_spin_lock_irqsave(&pi_state->pi_mutex.wait_lock, flags); + pi_state_update_owner(pi_state, NULL); + rt_mutex_proxy_unlock(&pi_state->pi_mutex); + raw_spin_unlock_irqrestore(&pi_state->pi_mutex.wait_lock, flags); } if (current->pi_state_cache) { @@ -962,7 +977,8 @@ * FUTEX_OWNER_DIED bit. See [4] * * [10] There is no transient state which leaves owner and user space - * TID out of sync. + * TID out of sync. Except one error case where the kernel is denied + * write access to the user address, see fixup_pi_state_owner(). * * * Serialization and lifetime rules: @@ -1523,8 +1539,10 @@ */ newval = FUTEX_WAITERS | task_pid_vnr(new_owner); - if (unlikely(should_fail_futex(true))) + if (unlikely(should_fail_futex(true))) { ret = -EFAULT; + goto out_unlock; + } ret = cmpxchg_futex_value_locked(&curval, uaddr, uval, newval); if (!ret && (curval != uval)) { @@ -1540,26 +1558,15 @@ ret = -EINVAL; } - if (ret) - goto out_unlock; - - /* - * This is a point of no return; once we modify the uval there is no - * going back and subsequent operations must not fail. - */ - - raw_spin_lock(&pi_state->owner->pi_lock); - WARN_ON(list_empty(&pi_state->list)); - list_del_init(&pi_state->list); - raw_spin_unlock(&pi_state->owner->pi_lock); - - raw_spin_lock(&new_owner->pi_lock); - WARN_ON(!list_empty(&pi_state->list)); - list_add(&pi_state->list, &new_owner->pi_state_list); - pi_state->owner = new_owner; - raw_spin_unlock(&new_owner->pi_lock); - - postunlock = __rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q); + if (!ret) { + /* + * This is a point of no return; once we modified the uval + * there is no going back and subsequent operations must + * not fail. + */ + pi_state_update_owner(pi_state, new_owner); + postunlock = __rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q); + } out_unlock: raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); @@ -1611,13 +1618,13 @@ ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, FUTEX_READ); if (unlikely(ret != 0)) - goto out; + return ret; hb = hash_futex(&key); /* Make sure we really have tasks to wakeup */ if (!hb_waiters_pending(hb)) - goto out_put_key; + return ret; spin_lock(&hb->lock); @@ -1640,9 +1647,6 @@ spin_unlock(&hb->lock); wake_up_q(&wake_q); -out_put_key: - put_futex_key(&key); -out: return ret; } @@ -1709,10 +1713,10 @@ retry: ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ); if (unlikely(ret != 0)) - goto out; + return ret; ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, FUTEX_WRITE); if (unlikely(ret != 0)) - goto out_put_key1; + return ret; hb1 = hash_futex(&key1); hb2 = hash_futex(&key2); @@ -1730,13 +1734,13 @@ * an MMU, but we might get them from range checking */ ret = op_ret; - goto out_put_keys; + return ret; } if (op_ret == -EFAULT) { ret = fault_in_user_writeable(uaddr2); if (ret) - goto out_put_keys; + return ret; } if (!(flags & FLAGS_SHARED)) { @@ -1744,8 +1748,6 @@ goto retry_private; } - put_futex_key(&key2); - put_futex_key(&key1); cond_resched(); goto retry; } @@ -1781,11 +1783,6 @@ out_unlock: double_unlock_hb(hb1, hb2); wake_up_q(&wake_q); -out_put_keys: - put_futex_key(&key2); -out_put_key1: - put_futex_key(&key1); -out: return ret; } @@ -1992,20 +1989,18 @@ retry: ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ); if (unlikely(ret != 0)) - goto out; + return ret; ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, requeue_pi ? FUTEX_WRITE : FUTEX_READ); if (unlikely(ret != 0)) - goto out_put_key1; + return ret; /* * The check above which compares uaddrs is not sufficient for * shared futexes. We need to compare the keys: */ - if (requeue_pi && match_futex(&key1, &key2)) { - ret = -EINVAL; - goto out_put_keys; - } + if (requeue_pi && match_futex(&key1, &key2)) + return -EINVAL; hb1 = hash_futex(&key1); hb2 = hash_futex(&key2); @@ -2025,13 +2020,11 @@ ret = get_user(curval, uaddr1); if (ret) - goto out_put_keys; + return ret; if (!(flags & FLAGS_SHARED)) goto retry_private; - put_futex_key(&key2); - put_futex_key(&key1); goto retry; } if (curval != *cmpval) { @@ -2090,12 +2083,10 @@ case -EFAULT: double_unlock_hb(hb1, hb2); hb_waiters_dec(hb2); - put_futex_key(&key2); - put_futex_key(&key1); ret = fault_in_user_writeable(uaddr2); if (!ret) goto retry; - goto out; + return ret; case -EBUSY: case -EAGAIN: /* @@ -2106,8 +2097,6 @@ */ double_unlock_hb(hb1, hb2); hb_waiters_dec(hb2); - put_futex_key(&key2); - put_futex_key(&key1); /* * Handle the case where the owner is in the middle of * exiting. Wait for the exit to complete otherwise @@ -2216,12 +2205,6 @@ double_unlock_hb(hb1, hb2); wake_up_q(&wake_q); hb_waiters_dec(hb2); - -out_put_keys: - put_futex_key(&key2); -out_put_key1: - put_futex_key(&key1); -out: return ret ? ret : task_count; } @@ -2366,18 +2349,13 @@ spin_unlock(q->lock_ptr); } -static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, - struct task_struct *argowner) +static int __fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, + struct task_struct *argowner) { struct futex_pi_state *pi_state = q->pi_state; - u32 uval, uninitialized_var(curval), newval; struct task_struct *oldowner, *newowner; - u32 newtid; - int ret, err = 0; - - lockdep_assert_held(q->lock_ptr); - - raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); + u32 uval, curval, newval, newtid; + int err = 0; oldowner = pi_state->owner; @@ -2411,21 +2389,31 @@ * We raced against a concurrent self; things are * already fixed up. Nothing to do. */ - ret = 0; - goto out_unlock; + return 0; } if (__rt_mutex_futex_trylock(&pi_state->pi_mutex)) { - /* We got the lock after all, nothing to fix. */ - ret = 0; - goto out_unlock; + /* We got the lock. pi_state is correct. Tell caller. */ + return 1; } /* - * Since we just failed the trylock; there must be an owner. + * The trylock just failed, so either there is an owner or + * there is a higher priority waiter than this one. */ newowner = rt_mutex_owner(&pi_state->pi_mutex); - BUG_ON(!newowner); + /* + * If the higher priority waiter has not yet taken over the + * rtmutex then newowner is NULL. We can't return here with + * that state because it's inconsistent vs. the user space + * state. So drop the locks and try again. It's a valid + * situation and not any different from the other retry + * conditions. + */ + if (unlikely(!newowner)) { + err = -EAGAIN; + goto handle_err; + } } else { WARN_ON_ONCE(argowner != current); if (oldowner == current) { @@ -2433,8 +2421,7 @@ * We raced against a concurrent self; things are * already fixed up. Nothing to do. */ - ret = 0; - goto out_unlock; + return 1; } newowner = argowner; } @@ -2464,22 +2451,9 @@ * We fixed up user space. Now we need to fix the pi_state * itself. */ - if (pi_state->owner != NULL) { - raw_spin_lock(&pi_state->owner->pi_lock); - WARN_ON(list_empty(&pi_state->list)); - list_del_init(&pi_state->list); - raw_spin_unlock(&pi_state->owner->pi_lock); - } + pi_state_update_owner(pi_state, newowner); - pi_state->owner = newowner; - - raw_spin_lock(&newowner->pi_lock); - WARN_ON(!list_empty(&pi_state->list)); - list_add(&pi_state->list, &newowner->pi_state_list); - raw_spin_unlock(&newowner->pi_lock); - raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); - - return 0; + return argowner == current; /* * In order to reschedule or handle a page fault, we need to drop the @@ -2500,17 +2474,16 @@ switch (err) { case -EFAULT: - ret = fault_in_user_writeable(uaddr); + err = fault_in_user_writeable(uaddr); break; case -EAGAIN: cond_resched(); - ret = 0; + err = 0; break; default: WARN_ON_ONCE(1); - ret = err; break; } @@ -2520,17 +2493,44 @@ /* * Check if someone else fixed it for us: */ - if (pi_state->owner != oldowner) { - ret = 0; - goto out_unlock; - } + if (pi_state->owner != oldowner) + return argowner == current; - if (ret) - goto out_unlock; + /* Retry if err was -EAGAIN or the fault in succeeded */ + if (!err) + goto retry; - goto retry; + /* + * fault_in_user_writeable() failed so user state is immutable. At + * best we can make the kernel state consistent but user state will + * be most likely hosed and any subsequent unlock operation will be + * rejected due to PI futex rule [10]. + * + * Ensure that the rtmutex owner is also the pi_state owner despite + * the user space value claiming something different. There is no + * point in unlocking the rtmutex if current is the owner as it + * would need to wait until the next waiter has taken the rtmutex + * to guarantee consistent state. Keep it simple. Userspace asked + * for this wreckaged state. + * + * The rtmutex has an owner - either current or some other + * task. See the EAGAIN loop above. + */ + pi_state_update_owner(pi_state, rt_mutex_owner(&pi_state->pi_mutex)); -out_unlock: + return err; +} + +static int fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, + struct task_struct *argowner) +{ + struct futex_pi_state *pi_state = q->pi_state; + int ret; + + lockdep_assert_held(q->lock_ptr); + + raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); + ret = __fixup_pi_state_owner(uaddr, q, argowner); raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock); return ret; } @@ -2554,8 +2554,6 @@ */ static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked) { - int ret = 0; - if (locked) { /* * Got the lock. We might not be the anticipated owner if we @@ -2566,8 +2564,8 @@ * stable state, anything else needs more attention. */ if (q->pi_state->owner != current) - ret = fixup_pi_state_owner(uaddr, q, current); - goto out; + return fixup_pi_state_owner(uaddr, q, current); + return 1; } /* @@ -2578,24 +2576,17 @@ * Another speculative read; pi_state->owner == current is unstable * but needs our attention. */ - if (q->pi_state->owner == current) { - ret = fixup_pi_state_owner(uaddr, q, NULL); - goto out; - } + if (q->pi_state->owner == current) + return fixup_pi_state_owner(uaddr, q, NULL); /* * Paranoia check. If we did not take the lock, then we should not be - * the owner of the rt_mutex. + * the owner of the rt_mutex. Warn and establish consistent state. */ - if (rt_mutex_owner(&q->pi_state->pi_mutex) == current) { - printk(KERN_ERR "fixup_owner: ret = %d pi-mutex: %p " - "pi-state %p\n", ret, - q->pi_state->pi_mutex.owner, - q->pi_state->owner); - } + if (WARN_ON_ONCE(rt_mutex_owner(&q->pi_state->pi_mutex) == current)) + return fixup_pi_state_owner(uaddr, q, current); -out: - return ret ? ret : locked; + return 0; } /** @@ -2692,12 +2683,11 @@ ret = get_user(uval, uaddr); if (ret) - goto out; + return ret; if (!(flags & FLAGS_SHARED)) goto retry_private; - put_futex_key(&q->key); goto retry; } @@ -2706,9 +2696,6 @@ ret = -EWOULDBLOCK; } -out: - if (ret) - put_futex_key(&q->key); return ret; } @@ -2760,14 +2747,13 @@ goto out; restart = ¤t->restart_block; - restart->fn = futex_wait_restart; restart->futex.uaddr = uaddr; restart->futex.val = val; restart->futex.time = *abs_time; restart->futex.bitset = bitset; restart->futex.flags = flags | FLAGS_HAS_TIMEOUT; - ret = -ERESTART_RESTARTBLOCK; + ret = set_restart_fn(restart, futex_wait_restart); out: if (to) { @@ -2807,7 +2793,6 @@ ktime_t *time, int trylock) { struct hrtimer_sleeper timeout, *to; - struct futex_pi_state *pi_state = NULL; struct task_struct *exiting = NULL; struct rt_mutex_waiter rt_waiter; struct futex_hash_bucket *hb; @@ -2853,7 +2838,6 @@ * - EAGAIN: The user space value changed. */ queue_unlock(hb); - put_futex_key(&q.key); /* * Handle the case where the owner is in the middle of * exiting. Wait for the exit to complete otherwise @@ -2944,30 +2928,13 @@ if (res) ret = (res < 0) ? res : 0; - /* - * If fixup_owner() faulted and was unable to handle the fault, unlock - * it and return the fault to userspace. - */ - if (ret && (rt_mutex_owner(&q.pi_state->pi_mutex) == current)) { - pi_state = q.pi_state; - get_pi_state(pi_state); - } - /* Unqueue and drop the lock */ unqueue_me_pi(&q); - - if (pi_state) { - rt_mutex_futex_unlock(&pi_state->pi_mutex); - put_pi_state(pi_state); - } - - goto out_put_key; + goto out; out_unlock_put_key: queue_unlock(hb); -out_put_key: - put_futex_key(&q.key); out: if (to) { hrtimer_cancel(&to->timer); @@ -2980,12 +2947,11 @@ ret = fault_in_user_writeable(uaddr); if (ret) - goto out_put_key; + goto out; if (!(flags & FLAGS_SHARED)) goto retry_private; - put_futex_key(&q.key); goto retry; } @@ -3114,16 +3080,13 @@ out_unlock: spin_unlock(&hb->lock); out_putkey: - put_futex_key(&key); return ret; pi_retry: - put_futex_key(&key); cond_resched(); goto retry; pi_faulted: - put_futex_key(&key); ret = fault_in_user_writeable(uaddr); if (!ret) @@ -3226,7 +3189,6 @@ u32 __user *uaddr2) { struct hrtimer_sleeper timeout, *to; - struct futex_pi_state *pi_state = NULL; struct rt_mutex_waiter rt_waiter; struct futex_hash_bucket *hb; union futex_key key2 = FUTEX_KEY_INIT; @@ -3265,7 +3227,7 @@ */ ret = futex_wait_setup(uaddr, val, flags, &q, &hb); if (ret) - goto out_key2; + goto out; /* * The check above which compares uaddrs is not sufficient for @@ -3274,7 +3236,7 @@ if (match_futex(&q.key, &key2)) { queue_unlock(hb); ret = -EINVAL; - goto out_put_keys; + goto out; } /* Queue the futex_q, drop the hb lock, wait for wakeup. */ @@ -3284,7 +3246,7 @@ ret = handle_early_requeue_pi_wakeup(hb, &q, &key2, to); spin_unlock(&hb->lock); if (ret) - goto out_put_keys; + goto out; /* * In order for us to be here, we know our q.key == key2, and since @@ -3304,16 +3266,17 @@ if (q.pi_state && (q.pi_state->owner != current)) { spin_lock(q.lock_ptr); ret = fixup_pi_state_owner(uaddr2, &q, current); - if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { - pi_state = q.pi_state; - get_pi_state(pi_state); - } /* * Drop the reference to the pi state which * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); spin_unlock(q.lock_ptr); + /* + * Adjust the return value. It's either -EFAULT or + * success (1) but the caller expects 0 for success. + */ + ret = ret < 0 ? ret : 0; } } else { struct rt_mutex *pi_mutex; @@ -3344,25 +3307,10 @@ if (res) ret = (res < 0) ? res : 0; - /* - * If fixup_pi_state_owner() faulted and was unable to handle - * the fault, unlock the rt_mutex and return the fault to - * userspace. - */ - if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { - pi_state = q.pi_state; - get_pi_state(pi_state); - } - /* Unqueue and drop the lock. */ unqueue_me_pi(&q); } - if (pi_state) { - rt_mutex_futex_unlock(&pi_state->pi_mutex); - put_pi_state(pi_state); - } - if (ret == -EINTR) { /* * We've already been requeued, but cannot restart by calling @@ -3374,11 +3322,6 @@ ret = -EWOULDBLOCK; } -out_put_keys: - put_futex_key(&q.key); -out_key2: - put_futex_key(&key2); - out: if (to) { hrtimer_cancel(&to->timer); @@ -3859,6 +3802,8 @@ t = timespec64_to_ktime(ts); if (cmd == FUTEX_WAIT) t = ktime_add_safe(ktime_get(), t); + else if (!(op & FUTEX_CLOCK_REALTIME)) + t = timens_ktime_to_host(CLOCK_MONOTONIC, t); tp = &t; } /* @@ -4051,6 +3996,8 @@ t = timespec64_to_ktime(ts); if (cmd == FUTEX_WAIT) t = ktime_add_safe(ktime_get(), t); + else if (!(op & FUTEX_CLOCK_REALTIME)) + t = timens_ktime_to_host(CLOCK_MONOTONIC, t); tp = &t; } if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE || --- linux-5.8.0.orig/kernel/gcov/clang.c +++ linux-5.8.0/kernel/gcov/clang.c @@ -75,7 +75,9 @@ u32 num_counters; u64 *counters; +#if CONFIG_CLANG_VERSION < 110000 const char *function_name; +#endif }; static struct gcov_info *current_info; @@ -105,6 +107,7 @@ } EXPORT_SYMBOL(llvm_gcov_init); +#if CONFIG_CLANG_VERSION < 110000 void llvm_gcda_start_file(const char *orig_filename, const char version[4], u32 checksum) { @@ -113,7 +116,17 @@ current_info->checksum = checksum; } EXPORT_SYMBOL(llvm_gcda_start_file); +#else +void llvm_gcda_start_file(const char *orig_filename, u32 version, u32 checksum) +{ + current_info->filename = orig_filename; + current_info->version = version; + current_info->checksum = checksum; +} +EXPORT_SYMBOL(llvm_gcda_start_file); +#endif +#if CONFIG_CLANG_VERSION < 110000 void llvm_gcda_emit_function(u32 ident, const char *function_name, u32 func_checksum, u8 use_extra_checksum, u32 cfg_checksum) { @@ -133,6 +146,24 @@ list_add_tail(&info->head, ¤t_info->functions); } EXPORT_SYMBOL(llvm_gcda_emit_function); +#else +void llvm_gcda_emit_function(u32 ident, u32 func_checksum, + u8 use_extra_checksum, u32 cfg_checksum) +{ + struct gcov_fn_info *info = kzalloc(sizeof(*info), GFP_KERNEL); + + if (!info) + return; + + INIT_LIST_HEAD(&info->head); + info->ident = ident; + info->checksum = func_checksum; + info->use_extra_checksum = use_extra_checksum; + info->cfg_checksum = cfg_checksum; + list_add_tail(&info->head, ¤t_info->functions); +} +EXPORT_SYMBOL(llvm_gcda_emit_function); +#endif void llvm_gcda_emit_arcs(u32 num_counters, u64 *counters) { @@ -295,6 +326,7 @@ } } +#if CONFIG_CLANG_VERSION < 110000 static struct gcov_fn_info *gcov_fn_info_dup(struct gcov_fn_info *fn) { size_t cv_size; /* counter values size */ @@ -322,6 +354,28 @@ kfree(fn_dup); return NULL; } +#else +static struct gcov_fn_info *gcov_fn_info_dup(struct gcov_fn_info *fn) +{ + size_t cv_size; /* counter values size */ + struct gcov_fn_info *fn_dup = kmemdup(fn, sizeof(*fn), + GFP_KERNEL); + if (!fn_dup) + return NULL; + INIT_LIST_HEAD(&fn_dup->head); + + cv_size = fn->num_counters * sizeof(fn->counters[0]); + fn_dup->counters = vmalloc(cv_size); + if (!fn_dup->counters) { + kfree(fn_dup); + return NULL; + } + + memcpy(fn_dup->counters, fn->counters, cv_size); + + return fn_dup; +} +#endif /** * gcov_info_dup - duplicate profiling data set @@ -362,6 +416,7 @@ * gcov_info_free - release memory for profiling data set duplicate * @info: profiling data set duplicate to free */ +#if CONFIG_CLANG_VERSION < 110000 void gcov_info_free(struct gcov_info *info) { struct gcov_fn_info *fn, *tmp; @@ -375,6 +430,20 @@ kfree(info->filename); kfree(info); } +#else +void gcov_info_free(struct gcov_info *info) +{ + struct gcov_fn_info *fn, *tmp; + + list_for_each_entry_safe(fn, tmp, &info->functions, head) { + vfree(fn->counters); + list_del(&fn->head); + kfree(fn); + } + kfree(info->filename); + kfree(info); +} +#endif #define ITER_STRIDE PAGE_SIZE --- linux-5.8.0.orig/kernel/gcov/gcc_4_7.c +++ linux-5.8.0/kernel/gcov/gcc_4_7.c @@ -19,7 +19,9 @@ #include #include "gcov.h" -#if (__GNUC__ >= 7) +#if (__GNUC__ >= 10) +#define GCOV_COUNTERS 8 +#elif (__GNUC__ >= 7) #define GCOV_COUNTERS 9 #elif (__GNUC__ > 5) || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1) #define GCOV_COUNTERS 10 --- linux-5.8.0.orig/kernel/irq/Kconfig +++ linux-5.8.0/kernel/irq/Kconfig @@ -86,6 +86,7 @@ # Generic IRQ IPI support config GENERIC_IRQ_IPI bool + select IRQ_DOMAIN_HIERARCHY # Generic MSI interrupt support config GENERIC_MSI_IRQ @@ -116,6 +117,10 @@ config IRQ_FORCED_THREADING bool +config IRQ_FORCED_THREADING_DEFAULT + bool "Use IRQ threading by default" + depends on IRQ_FORCED_THREADING + config SPARSE_IRQ bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ help --- linux-5.8.0.orig/kernel/irq/irqdomain.c +++ linux-5.8.0/kernel/irq/irqdomain.c @@ -623,17 +623,19 @@ EXPORT_SYMBOL_GPL(irq_create_direct_mapping); /** - * irq_create_mapping() - Map a hardware interrupt into linux irq space + * irq_create_mapping_affinity() - Map a hardware interrupt into linux irq space * @domain: domain owning this hardware interrupt or NULL for default domain * @hwirq: hardware irq number in that domain space + * @affinity: irq affinity * * Only one mapping per hardware interrupt is permitted. Returns a linux * irq number. * If the sense/trigger is to be specified, set_irq_type() should be called * on the number returned from that call. */ -unsigned int irq_create_mapping(struct irq_domain *domain, - irq_hw_number_t hwirq) +unsigned int irq_create_mapping_affinity(struct irq_domain *domain, + irq_hw_number_t hwirq, + const struct irq_affinity_desc *affinity) { struct device_node *of_node; int virq; @@ -659,7 +661,8 @@ } /* Allocate a virtual interrupt number */ - virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), NULL); + virq = irq_domain_alloc_descs(-1, 1, hwirq, of_node_to_nid(of_node), + affinity); if (virq <= 0) { pr_debug("-> virq allocation failed\n"); return 0; @@ -675,7 +678,7 @@ return virq; } -EXPORT_SYMBOL_GPL(irq_create_mapping); +EXPORT_SYMBOL_GPL(irq_create_mapping_affinity); /** * irq_create_strict_mappings() - Map a range of hw irqs to fixed linux irqs @@ -1287,8 +1290,15 @@ unsigned int irq_base, unsigned int nr_irqs) { - if (domain->ops->free) - domain->ops->free(domain, irq_base, nr_irqs); + unsigned int i; + + if (!domain->ops->free) + return; + + for (i = 0; i < nr_irqs; i++) { + if (irq_domain_get_irq_data(domain, irq_base + i)) + domain->ops->free(domain, irq_base + i, 1); + } } int irq_domain_alloc_irqs_hierarchy(struct irq_domain *domain, --- linux-5.8.0.orig/kernel/irq/manage.c +++ linux-5.8.0/kernel/irq/manage.c @@ -25,7 +25,7 @@ #include "internals.h" #if defined(CONFIG_IRQ_FORCED_THREADING) && !defined(CONFIG_PREEMPT_RT) -__read_mostly bool force_irqthreads; +__read_mostly bool force_irqthreads = IS_ENABLED(CONFIG_IRQ_FORCED_THREADING_DEFAULT); EXPORT_SYMBOL_GPL(force_irqthreads); static int __init setup_forced_irqthreads(char *arg) @@ -33,7 +33,13 @@ force_irqthreads = true; return 0; } +static int __init setup_no_irqthreads(char *arg) +{ + force_irqthreads = false; + return 0; +} early_param("threadirqs", setup_forced_irqthreads); +early_param("nothreadirqs", setup_no_irqthreads); #endif static void __synchronize_hardirq(struct irq_desc *desc, bool sync_chip) @@ -320,12 +326,16 @@ struct irq_desc *desc = irq_data_to_desc(data); /* + * Handle irq chips which can handle affinity only in activated + * state correctly + * * If the interrupt is not yet activated, just store the affinity * mask and do not call the chip driver at all. On activation the * driver has to make sure anyway that the interrupt is in a * useable state so startup works. */ - if (!IS_ENABLED(CONFIG_IRQ_DOMAIN_HIERARCHY) || irqd_is_activated(data)) + if (!IS_ENABLED(CONFIG_IRQ_DOMAIN_HIERARCHY) || + irqd_is_activated(data) || !irqd_affinity_on_activate(data)) return false; cpumask_copy(desc->irq_common_data.affinity, mask); @@ -1068,11 +1078,15 @@ irqreturn_t ret; local_bh_disable(); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + local_irq_disable(); ret = action->thread_fn(action->irq, action->dev_id); if (ret == IRQ_HANDLED) atomic_inc(&desc->threads_handled); irq_finalize_oneshot(desc, action); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + local_irq_enable(); local_bh_enable(); return ret; } @@ -1158,7 +1172,7 @@ handler_fn = irq_thread_fn; init_task_work(&on_exit_work, irq_thread_dtor); - task_work_add(current, &on_exit_work, false); + task_work_add(current, &on_exit_work, TWA_NONE); irq_thread_check_affinity(desc, action); @@ -2731,8 +2745,10 @@ do { chip = irq_data_get_irq_chip(data); - if (WARN_ON_ONCE(!chip)) - return -ENODEV; + if (WARN_ON_ONCE(!chip)) { + err = -ENODEV; + goto out_unlock; + } if (chip->irq_set_irqchip_state) break; #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY @@ -2745,6 +2761,7 @@ if (data) err = chip->irq_set_irqchip_state(data, which, val); +out_unlock: irq_put_desc_busunlock(desc, flags); return err; } --- linux-5.8.0.orig/kernel/irq/matrix.c +++ linux-5.8.0/kernel/irq/matrix.c @@ -380,6 +380,13 @@ unsigned int cpu, bit; struct cpumap *cm; + /* + * Not required in theory, but matrix_find_best_cpu() uses + * for_each_cpu() which ignores the cpumask on UP . + */ + if (cpumask_empty(msk)) + return -EINVAL; + cpu = matrix_find_best_cpu(m, msk); if (cpu == UINT_MAX) return -ENOSPC; --- linux-5.8.0.orig/kernel/irq/msi.c +++ linux-5.8.0/kernel/irq/msi.c @@ -437,22 +437,22 @@ can_reserve = msi_check_reservation_mode(domain, info, dev); - for_each_msi_entry(desc, dev) { - virq = desc->irq; - if (desc->nvec_used == 1) - dev_dbg(dev, "irq %d for MSI\n", virq); - else + /* + * This flag is set by the PCI layer as we need to activate + * the MSI entries before the PCI layer enables MSI in the + * card. Otherwise the card latches a random msi message. + */ + if (!(info->flags & MSI_FLAG_ACTIVATE_EARLY)) + goto skip_activate; + + for_each_msi_vector(desc, i, dev) { + if (desc->irq == i) { + virq = desc->irq; dev_dbg(dev, "irq [%d-%d] for MSI\n", virq, virq + desc->nvec_used - 1); - /* - * This flag is set by the PCI layer as we need to activate - * the MSI entries before the PCI layer enables MSI in the - * card. Otherwise the card latches a random msi message. - */ - if (!(info->flags & MSI_FLAG_ACTIVATE_EARLY)) - continue; + } - irq_data = irq_domain_get_irq_data(domain, desc->irq); + irq_data = irq_domain_get_irq_data(domain, i); if (!can_reserve) { irqd_clr_can_reserve(irq_data); if (domain->flags & IRQ_DOMAIN_MSI_NOMASK_QUIRK) @@ -463,28 +463,24 @@ goto cleanup; } +skip_activate: /* * If these interrupts use reservation mode, clear the activated bit * so request_irq() will assign the final vector. */ if (can_reserve) { - for_each_msi_entry(desc, dev) { - irq_data = irq_domain_get_irq_data(domain, desc->irq); + for_each_msi_vector(desc, i, dev) { + irq_data = irq_domain_get_irq_data(domain, i); irqd_clr_activated(irq_data); } } return 0; cleanup: - for_each_msi_entry(desc, dev) { - struct irq_data *irqd; - - if (desc->irq == virq) - break; - - irqd = irq_domain_get_irq_data(domain, desc->irq); - if (irqd_is_activated(irqd)) - irq_domain_deactivate_irq(irqd); + for_each_msi_vector(desc, i, dev) { + irq_data = irq_domain_get_irq_data(domain, i); + if (irqd_is_activated(irq_data)) + irq_domain_deactivate_irq(irq_data); } msi_domain_free_irqs(domain, dev); return ret; --- linux-5.8.0.orig/kernel/irq/pm.c +++ linux-5.8.0/kernel/irq/pm.c @@ -185,14 +185,18 @@ unsigned long flags; struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_CHECK_GLOBAL); - if (!desc || !(desc->istate & IRQS_SUSPENDED) || - !irqd_is_wakeup_set(&desc->irq_data)) + if (!desc) return; + if (!(desc->istate & IRQS_SUSPENDED) || + !irqd_is_wakeup_set(&desc->irq_data)) + goto unlock; + desc->istate &= ~IRQS_SUSPENDED; irqd_set(&desc->irq_data, IRQD_WAKEUP_ARMED); __enable_irq(desc); +unlock: irq_put_desc_busunlock(desc, flags); } --- linux-5.8.0.orig/kernel/kcmp.c +++ linux-5.8.0/kernel/kcmp.c @@ -75,25 +75,25 @@ return file; } -static void kcmp_unlock(struct mutex *m1, struct mutex *m2) +static void kcmp_unlock(struct rw_semaphore *l1, struct rw_semaphore *l2) { - if (likely(m2 != m1)) - mutex_unlock(m2); - mutex_unlock(m1); + if (likely(l2 != l1)) + up_read(l2); + up_read(l1); } -static int kcmp_lock(struct mutex *m1, struct mutex *m2) +static int kcmp_lock(struct rw_semaphore *l1, struct rw_semaphore *l2) { int err; - if (m2 > m1) - swap(m1, m2); + if (l2 > l1) + swap(l1, l2); - err = mutex_lock_killable(m1); - if (!err && likely(m1 != m2)) { - err = mutex_lock_killable_nested(m2, SINGLE_DEPTH_NESTING); + err = down_read_killable(l1); + if (!err && likely(l1 != l2)) { + err = down_read_killable_nested(l2, SINGLE_DEPTH_NESTING); if (err) - mutex_unlock(m1); + up_read(l1); } return err; @@ -173,8 +173,8 @@ /* * One should have enough rights to inspect task details. */ - ret = kcmp_lock(&task1->signal->exec_update_mutex, - &task2->signal->exec_update_mutex); + ret = kcmp_lock(&task1->signal->exec_update_lock, + &task2->signal->exec_update_lock); if (ret) goto err; if (!ptrace_may_access(task1, PTRACE_MODE_READ_REALCREDS) || @@ -229,8 +229,8 @@ } err_unlock: - kcmp_unlock(&task1->signal->exec_update_mutex, - &task2->signal->exec_update_mutex); + kcmp_unlock(&task1->signal->exec_update_lock, + &task2->signal->exec_update_lock); err: put_task_struct(task1); put_task_struct(task2); --- linux-5.8.0.orig/kernel/kexec_core.c +++ linux-5.8.0/kernel/kexec_core.c @@ -1135,7 +1135,6 @@ #ifdef CONFIG_KEXEC_JUMP if (kexec_image->preserve_context) { - lock_system_sleep(); pm_prepare_console(); error = freeze_processes(); if (error) { @@ -1198,7 +1197,6 @@ thaw_processes(); Restore_console: pm_restore_console(); - unlock_system_sleep(); } #endif --- linux-5.8.0.orig/kernel/kexec_file.c +++ linux-5.8.0/kernel/kexec_file.c @@ -165,6 +165,11 @@ vfree(pi->sechdrs); pi->sechdrs = NULL; +#ifdef CONFIG_IMA_KEXEC + vfree(image->ima_buffer); + image->ima_buffer = NULL; +#endif /* CONFIG_IMA_KEXEC */ + /* See if architecture has anything to cleanup post load */ arch_kimage_file_post_load_cleanup(image); --- linux-5.8.0.orig/kernel/kprobes.c +++ linux-5.8.0/kernel/kprobes.c @@ -1079,9 +1079,20 @@ ipmodify ? &kprobe_ipmodify_enabled : &kprobe_ftrace_enabled); } #else /* !CONFIG_KPROBES_ON_FTRACE */ -#define prepare_kprobe(p) arch_prepare_kprobe(p) -#define arm_kprobe_ftrace(p) (-ENODEV) -#define disarm_kprobe_ftrace(p) (-ENODEV) +static inline int prepare_kprobe(struct kprobe *p) +{ + return arch_prepare_kprobe(p); +} + +static inline int arm_kprobe_ftrace(struct kprobe *p) +{ + return -ENODEV; +} + +static inline int disarm_kprobe_ftrace(struct kprobe *p) +{ + return -ENODEV; +} #endif /* Arm a kprobe with text_mutex */ @@ -1207,7 +1218,13 @@ *head = &kretprobe_inst_table[hash]; hlist_lock = kretprobe_table_lock_ptr(hash); - raw_spin_lock_irqsave(hlist_lock, *flags); + /* + * Nested is a workaround that will soon not be needed. + * There's other protections that make sure the same lock + * is not taken on the same CPU that lockdep is unaware of. + * Differentiate when it is taken in NMI context. + */ + raw_spin_lock_irqsave_nested(hlist_lock, *flags, !!in_nmi()); } NOKPROBE_SYMBOL(kretprobe_hash_lock); @@ -1216,7 +1233,13 @@ __acquires(hlist_lock) { raw_spinlock_t *hlist_lock = kretprobe_table_lock_ptr(hash); - raw_spin_lock_irqsave(hlist_lock, *flags); + /* + * Nested is a workaround that will soon not be needed. + * There's other protections that make sure the same lock + * is not taken on the same CPU that lockdep is unaware of. + * Differentiate when it is taken in NMI context. + */ + raw_spin_lock_irqsave_nested(hlist_lock, *flags, !!in_nmi()); } NOKPROBE_SYMBOL(kretprobe_table_lock); @@ -1316,7 +1339,8 @@ struct hlist_node *next; struct hlist_head *head; - /* No race here */ + /* To avoid recursive kretprobe by NMI, set kprobe busy here */ + kprobe_busy_begin(); for (hash = 0; hash < KPROBE_TABLE_SIZE; hash++) { kretprobe_table_lock(hash, &flags); head = &kretprobe_inst_table[hash]; @@ -1326,6 +1350,8 @@ } kretprobe_table_unlock(hash, &flags); } + kprobe_busy_end(); + free_rp_inst(rp); } NOKPROBE_SYMBOL(cleanup_rp_inst); @@ -1894,20 +1920,14 @@ unsigned long hash, flags = 0; struct kretprobe_instance *ri; - /* - * To avoid deadlocks, prohibit return probing in NMI contexts, - * just skip the probe and increase the (inexact) 'nmissed' - * statistical counter, so that the user is informed that - * something happened: - */ - if (unlikely(in_nmi())) { - rp->nmissed++; - return 0; - } - /* TODO: consider to only swap the RA after the last pre_handler fired */ hash = hash_ptr(current, KPROBE_HASH_BITS); - raw_spin_lock_irqsave(&rp->lock, flags); + /* + * Nested is a workaround that will soon not be needed. + * There's other protections that make sure the same lock + * is not taken on the same CPU that lockdep is unaware of. + */ + raw_spin_lock_irqsave_nested(&rp->lock, flags, 1); if (!hlist_empty(&rp->free_instances)) { ri = hlist_entry(rp->free_instances.first, struct kretprobe_instance, hlist); @@ -1918,7 +1938,7 @@ ri->task = current; if (rp->entry_handler && rp->entry_handler(ri, regs)) { - raw_spin_lock_irqsave(&rp->lock, flags); + raw_spin_lock_irqsave_nested(&rp->lock, flags, 1); hlist_add_head(&ri->hlist, &rp->free_instances); raw_spin_unlock_irqrestore(&rp->lock, flags); return 0; @@ -1944,28 +1964,48 @@ return !offset; } -bool kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset) +/** + * kprobe_on_func_entry() -- check whether given address is function entry + * @addr: Target address + * @sym: Target symbol name + * @offset: The offset from the symbol or the address + * + * This checks whether the given @addr+@offset or @sym+@offset is on the + * function entry address or not. + * This returns 0 if it is the function entry, or -EINVAL if it is not. + * And also it returns -ENOENT if it fails the symbol or address lookup. + * Caller must pass @addr or @sym (either one must be NULL), or this + * returns -EINVAL. + */ +int kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset) { kprobe_opcode_t *kp_addr = _kprobe_addr(addr, sym, offset); if (IS_ERR(kp_addr)) - return false; + return PTR_ERR(kp_addr); - if (!kallsyms_lookup_size_offset((unsigned long)kp_addr, NULL, &offset) || - !arch_kprobe_on_func_entry(offset)) - return false; + if (!kallsyms_lookup_size_offset((unsigned long)kp_addr, NULL, &offset)) + return -ENOENT; - return true; + if (!arch_kprobe_on_func_entry(offset)) + return -EINVAL; + + return 0; } int register_kretprobe(struct kretprobe *rp) { - int ret = 0; + int ret; struct kretprobe_instance *inst; int i; void *addr; - if (!kprobe_on_func_entry(rp->kp.addr, rp->kp.symbol_name, rp->kp.offset)) + ret = kprobe_on_func_entry(rp->kp.addr, rp->kp.symbol_name, rp->kp.offset); + if (ret) + return ret; + + /* If only rp->kp.addr is specified, check reregistering kprobes */ + if (rp->kp.addr && check_kprobe_rereg(&rp->kp)) return -EINVAL; if (kretprobe_blacklist_size) { @@ -2097,6 +2137,9 @@ lockdep_assert_held(&kprobe_mutex); + if (WARN_ON_ONCE(kprobe_gone(p))) + return; + p->flags |= KPROBE_FLAG_GONE; if (kprobe_aggrprobe(p)) { /* @@ -2113,6 +2156,14 @@ * the original probed function (which will be freed soon) any more. */ arch_remove_kprobe(p); + + /* + * The module is going away. We should disarm the kprobe which + * is using ftrace, because ftrace framework is still available at + * MODULE_STATE_GOING notification. + */ + if (kprobe_ftrace(p) && !kprobe_disabled(p) && !kprobes_all_disarmed) + disarm_kprobe_ftrace(p); } /* Disable one kprobe */ @@ -2347,7 +2398,10 @@ mutex_lock(&kprobe_mutex); for (i = 0; i < KPROBE_TABLE_SIZE; i++) { head = &kprobe_table[i]; - hlist_for_each_entry(p, head, hlist) + hlist_for_each_entry(p, head, hlist) { + if (kprobe_gone(p)) + continue; + if (within_module_init((unsigned long)p->addr, mod) || (checkcore && within_module_core((unsigned long)p->addr, mod))) { @@ -2364,6 +2418,7 @@ */ kill_kprobe(p); } + } } if (val == MODULE_STATE_GOING) remove_module_kprobe_blacklist(mod); @@ -2380,6 +2435,28 @@ extern unsigned long __start_kprobe_blacklist[]; extern unsigned long __stop_kprobe_blacklist[]; +void kprobe_free_init_mem(void) +{ + void *start = (void *)(&__init_begin); + void *end = (void *)(&__init_end); + struct hlist_head *head; + struct kprobe *p; + int i; + + mutex_lock(&kprobe_mutex); + + /* Kill all kprobes on initmem */ + for (i = 0; i < KPROBE_TABLE_SIZE; i++) { + head = &kprobe_table[i]; + hlist_for_each_entry(p, head, hlist) { + if (start <= (void *)p->addr && (void *)p->addr < end) + kill_kprobe(p); + } + } + + mutex_unlock(&kprobe_mutex); +} + static int __init init_kprobes(void) { int i, err = 0; --- linux-5.8.0.orig/kernel/kthread.c +++ linux-5.8.0/kernel/kthread.c @@ -354,6 +354,17 @@ * new kernel thread. */ if (unlikely(wait_for_completion_killable(&done))) { + int i = 0; + + /* + * I got SIGKILL, but wait for 10 more seconds for completion + * unless chosen by the OOM killer. This delay is there as a + * workaround for boot failure caused by SIGKILL upon device + * driver initialization timeout. + */ + while (i++ < 10 && !test_tsk_thread_flag(current, TIF_MEMDIE)) + if (wait_for_completion_timeout(&done, HZ)) + goto ready; /* * If I was SIGKILLed before kthreadd (or new kernel thread) * calls complete(), leave the cleanup of this structure to @@ -367,6 +378,7 @@ */ wait_for_completion(&done); } +ready: task = create->result; if (!IS_ERR(task)) { static const struct sched_param param = { .sched_priority = 0 }; @@ -492,11 +504,36 @@ return p; kthread_bind(p, cpu); /* CPU hotplug need to bind once again when unparking the thread. */ - set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags); to_kthread(p)->cpu = cpu; return p; } +void kthread_set_per_cpu(struct task_struct *k, int cpu) +{ + struct kthread *kthread = to_kthread(k); + if (!kthread) + return; + + WARN_ON_ONCE(!(k->flags & PF_NO_SETAFFINITY)); + + if (cpu < 0) { + clear_bit(KTHREAD_IS_PER_CPU, &kthread->flags); + return; + } + + kthread->cpu = cpu; + set_bit(KTHREAD_IS_PER_CPU, &kthread->flags); +} + +bool kthread_is_per_cpu(struct task_struct *k) +{ + struct kthread *kthread = to_kthread(k); + if (!kthread) + return false; + + return test_bit(KTHREAD_IS_PER_CPU, &kthread->flags); +} + /** * kthread_unpark - unpark a thread created by kthread_create(). * @k: thread created by kthread_create(). @@ -896,7 +933,8 @@ /* Move the work from worker->delayed_work_list. */ WARN_ON_ONCE(list_empty(&work->node)); list_del_init(&work->node); - kthread_insert_work(worker, work, &worker->work_list); + if (!work->canceling) + kthread_insert_work(worker, work, &worker->work_list); raw_spin_unlock_irqrestore(&worker->lock, flags); } @@ -1239,13 +1277,16 @@ WARN_ON_ONCE(tsk->mm); task_lock(tsk); + /* Hold off tlb flush IPIs while switching mm's */ + local_irq_disable(); active_mm = tsk->active_mm; if (active_mm != mm) { mmgrab(mm); tsk->active_mm = mm; } tsk->mm = mm; - switch_mm(active_mm, mm, tsk); + switch_mm_irqs_off(active_mm, mm, tsk); + local_irq_enable(); task_unlock(tsk); #ifdef finish_arch_post_lock_switch finish_arch_post_lock_switch(); @@ -1274,9 +1315,11 @@ task_lock(tsk); sync_mm_rss(mm); + local_irq_disable(); tsk->mm = NULL; /* active_mm is still 'mm' */ enter_lazy_tlb(mm, tsk); + local_irq_enable(); task_unlock(tsk); } EXPORT_SYMBOL_GPL(kthread_unuse_mm); --- linux-5.8.0.orig/kernel/locking/lockdep.c +++ linux-5.8.0/kernel/locking/lockdep.c @@ -169,7 +169,7 @@ struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; static DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); -static inline struct lock_class *hlock_class(struct held_lock *hlock) +inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) { unsigned int class_idx = hlock->class_idx; @@ -190,6 +190,8 @@ */ return lock_classes + class_idx; } +EXPORT_SYMBOL_GPL(lockdep_hlock_class); +#define hlock_class(hlock) lockdep_hlock_class(hlock) #ifdef CONFIG_LOCK_STAT static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); @@ -3317,7 +3319,7 @@ print_usage_bug(struct task_struct *curr, struct held_lock *this, enum lock_usage_bit prev_bit, enum lock_usage_bit new_bit) { - if (!debug_locks_off_graph_unlock() || debug_locks_silent) + if (!debug_locks_off() || debug_locks_silent) return; pr_warn("\n"); @@ -3358,6 +3360,7 @@ enum lock_usage_bit new_bit, enum lock_usage_bit bad_bit) { if (unlikely(hlock_class(this)->usage_mask & (1 << bad_bit))) { + graph_unlock(); print_usage_bug(curr, this, bad_bit, new_bit); return 0; } @@ -3923,13 +3926,18 @@ static int mark_lock(struct task_struct *curr, struct held_lock *this, enum lock_usage_bit new_bit) { - unsigned int new_mask = 1 << new_bit, ret = 1; + unsigned int old_mask, new_mask, ret = 1; if (new_bit >= LOCK_USAGE_STATES) { DEBUG_LOCKS_WARN_ON(1); return 0; } + if (new_bit == LOCK_USED && this->read) + new_bit = LOCK_USED_READ; + + new_mask = 1 << new_bit; + /* * If already set then do not dirty the cacheline, * nor do any checks: @@ -3942,13 +3950,22 @@ /* * Make sure we didn't race: */ - if (unlikely(hlock_class(this)->usage_mask & new_mask)) { - graph_unlock(); - return 1; - } + if (unlikely(hlock_class(this)->usage_mask & new_mask)) + goto unlock; + old_mask = hlock_class(this)->usage_mask; hlock_class(this)->usage_mask |= new_mask; + /* + * Save one usage_traces[] entry and map both LOCK_USED and + * LOCK_USED_READ onto the same entry. + */ + if (new_bit == LOCK_USED || new_bit == LOCK_USED_READ) { + if (old_mask & (LOCKF_USED | LOCKF_USED_READ)) + goto unlock; + new_bit = LOCK_USED; + } + if (!(hlock_class(this)->usage_traces[new_bit] = save_trace())) return 0; @@ -3962,6 +3979,7 @@ return 0; } +unlock: graph_unlock(); /* @@ -4819,12 +4837,15 @@ /* * Check whether we follow the irq-flags state precisely: */ -static void check_flags(unsigned long flags) +static noinstr void check_flags(unsigned long flags) { #if defined(CONFIG_PROVE_LOCKING) && defined(CONFIG_DEBUG_LOCKDEP) if (!debug_locks) return; + /* Get the warning out.. */ + instrumentation_begin(); + if (irqs_disabled_flags(flags)) { if (DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)) { printk("possible reason: unannotated irqs-off.\n"); @@ -4852,6 +4873,8 @@ if (!debug_locks) print_irqtrace_events(current); + + instrumentation_end(); #endif } @@ -4896,12 +4919,20 @@ { #ifdef CONFIG_PROVE_LOCKING struct lock_class *class = look_up_lock_class(lock, subclass); + unsigned long mask = LOCKF_USED; /* if it doesn't have a class (yet), it certainly hasn't been used yet */ if (!class) return; - if (!(class->usage_mask & LOCK_USED)) + /* + * READ locks only conflict with USED, such that if we only ever use + * READ locks, there is no deadlock possible -- RCU. + */ + if (!hlock->read) + mask |= LOCKF_USED_READ; + + if (!(class->usage_mask & mask)) return; hlock->class_idx = class - lock_classes; --- linux-5.8.0.orig/kernel/locking/lockdep_internals.h +++ linux-5.8.0/kernel/locking/lockdep_internals.h @@ -19,6 +19,7 @@ #include "lockdep_states.h" #undef LOCKDEP_STATE LOCK_USED, + LOCK_USED_READ, LOCK_USAGE_STATES }; @@ -40,6 +41,7 @@ #include "lockdep_states.h" #undef LOCKDEP_STATE __LOCKF(USED) + __LOCKF(USED_READ) }; #define LOCKDEP_STATE(__STATE) LOCKF_ENABLED_##__STATE | --- linux-5.8.0.orig/kernel/locking/lockdep_proc.c +++ linux-5.8.0/kernel/locking/lockdep_proc.c @@ -423,7 +423,7 @@ seq_time(m, lt->min); seq_time(m, lt->max); seq_time(m, lt->total); - seq_time(m, lt->nr ? div_s64(lt->total, lt->nr) : 0); + seq_time(m, lt->nr ? div64_u64(lt->total, lt->nr) : 0); } static void seq_stats(struct seq_file *m, struct lock_stat_data *data) --- linux-5.8.0.orig/kernel/locking/mutex.c +++ linux-5.8.0/kernel/locking/mutex.c @@ -636,7 +636,7 @@ */ static __always_inline bool mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx, - const bool use_ww_ctx, struct mutex_waiter *waiter) + struct mutex_waiter *waiter) { if (!waiter) { /* @@ -712,7 +712,7 @@ #else static __always_inline bool mutex_optimistic_spin(struct mutex *lock, struct ww_acquire_ctx *ww_ctx, - const bool use_ww_ctx, struct mutex_waiter *waiter) + struct mutex_waiter *waiter) { return false; } @@ -932,6 +932,9 @@ struct ww_mutex *ww; int ret; + if (!use_ww_ctx) + ww_ctx = NULL; + might_sleep(); #ifdef CONFIG_DEBUG_MUTEXES @@ -939,7 +942,7 @@ #endif ww = container_of(lock, struct ww_mutex, base); - if (use_ww_ctx && ww_ctx) { + if (ww_ctx) { if (unlikely(ww_ctx == READ_ONCE(ww->ctx))) return -EALREADY; @@ -956,10 +959,10 @@ mutex_acquire_nest(&lock->dep_map, subclass, 0, nest_lock, ip); if (__mutex_trylock(lock) || - mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx, NULL)) { + mutex_optimistic_spin(lock, ww_ctx, NULL)) { /* got the lock, yay! */ lock_acquired(&lock->dep_map, ip); - if (use_ww_ctx && ww_ctx) + if (ww_ctx) ww_mutex_set_context_fastpath(ww, ww_ctx); preempt_enable(); return 0; @@ -970,7 +973,7 @@ * After waiting to acquire the wait_lock, try again. */ if (__mutex_trylock(lock)) { - if (use_ww_ctx && ww_ctx) + if (ww_ctx) __ww_mutex_check_waiters(lock, ww_ctx); goto skip_wait; @@ -1023,7 +1026,7 @@ goto err; } - if (use_ww_ctx && ww_ctx) { + if (ww_ctx) { ret = __ww_mutex_check_kill(lock, &waiter, ww_ctx); if (ret) goto err; @@ -1036,7 +1039,7 @@ * ww_mutex needs to always recheck its position since its waiter * list is not FIFO ordered. */ - if ((use_ww_ctx && ww_ctx) || !first) { + if (ww_ctx || !first) { first = __mutex_waiter_is_first(lock, &waiter); if (first) __mutex_set_flag(lock, MUTEX_FLAG_HANDOFF); @@ -1049,7 +1052,7 @@ * or we must see its unlock and acquire. */ if (__mutex_trylock(lock) || - (first && mutex_optimistic_spin(lock, ww_ctx, use_ww_ctx, &waiter))) + (first && mutex_optimistic_spin(lock, ww_ctx, &waiter))) break; spin_lock(&lock->wait_lock); @@ -1058,7 +1061,7 @@ acquired: __set_current_state(TASK_RUNNING); - if (use_ww_ctx && ww_ctx) { + if (ww_ctx) { /* * Wound-Wait; we stole the lock (!first_waiter), check the * waiters as anyone might want to wound us. @@ -1078,7 +1081,7 @@ /* got the lock - cleanup and rejoice! */ lock_acquired(&lock->dep_map, ip); - if (use_ww_ctx && ww_ctx) + if (ww_ctx) ww_mutex_lock_acquired(ww, ww_ctx); spin_unlock(&lock->wait_lock); --- linux-5.8.0.orig/kernel/locking/percpu-rwsem.c +++ linux-5.8.0/kernel/locking/percpu-rwsem.c @@ -45,7 +45,7 @@ static bool __percpu_down_read_trylock(struct percpu_rw_semaphore *sem) { - __this_cpu_inc(*sem->read_count); + this_cpu_inc(*sem->read_count); /* * Due to having preemption disabled the decrement happens on @@ -71,7 +71,7 @@ if (likely(!atomic_read_acquire(&sem->block))) return true; - __this_cpu_dec(*sem->read_count); + this_cpu_dec(*sem->read_count); /* Prod writer to re-evaluate readers_active_check() */ rcuwait_wake_up(&sem->writer); --- linux-5.8.0.orig/kernel/locking/qrwlock.c +++ linux-5.8.0/kernel/locking/qrwlock.c @@ -61,6 +61,8 @@ */ void queued_write_lock_slowpath(struct qrwlock *lock) { + int cnts; + /* Put the writer into the wait queue */ arch_spin_lock(&lock->wait_lock); @@ -74,9 +76,8 @@ /* When no more readers or writers, set the locked flag */ do { - atomic_cond_read_acquire(&lock->cnts, VAL == _QW_WAITING); - } while (atomic_cmpxchg_relaxed(&lock->cnts, _QW_WAITING, - _QW_LOCKED) != _QW_WAITING); + cnts = atomic_cond_read_relaxed(&lock->cnts, VAL == _QW_WAITING); + } while (!atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED)); unlock: arch_spin_unlock(&lock->wait_lock); } --- linux-5.8.0.orig/kernel/locking/rtmutex.c +++ linux-5.8.0/kernel/locking/rtmutex.c @@ -1716,8 +1716,7 @@ * possible because it belongs to the pi_state which is about to be freed * and it is not longer visible to other tasks. */ -void rt_mutex_proxy_unlock(struct rt_mutex *lock, - struct task_struct *proxy_owner) +void rt_mutex_proxy_unlock(struct rt_mutex *lock) { debug_rt_mutex_proxy_unlock(lock); rt_mutex_set_owner(lock, NULL); --- linux-5.8.0.orig/kernel/locking/rtmutex_common.h +++ linux-5.8.0/kernel/locking/rtmutex_common.h @@ -133,8 +133,7 @@ extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner); -extern void rt_mutex_proxy_unlock(struct rt_mutex *lock, - struct task_struct *proxy_owner); +extern void rt_mutex_proxy_unlock(struct rt_mutex *lock); extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); extern int __rt_mutex_start_proxy_lock(struct rt_mutex *lock, struct rt_mutex_waiter *waiter, --- linux-5.8.0.orig/kernel/locking/rwsem.c +++ linux-5.8.0/kernel/locking/rwsem.c @@ -1345,6 +1345,18 @@ } } +static inline int __down_read_interruptible(struct rw_semaphore *sem) +{ + if (!rwsem_read_trylock(sem)) { + if (IS_ERR(rwsem_down_read_slowpath(sem, TASK_INTERRUPTIBLE))) + return -EINTR; + DEBUG_RWSEMS_WARN_ON(!is_rwsem_reader_owned(sem), sem); + } else { + rwsem_set_reader_owned(sem); + } + return 0; +} + static inline int __down_read_killable(struct rw_semaphore *sem) { if (!rwsem_read_trylock(sem)) { @@ -1495,6 +1507,20 @@ } EXPORT_SYMBOL(down_read); +int __sched down_read_interruptible(struct rw_semaphore *sem) +{ + might_sleep(); + rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); + + if (LOCK_CONTENDED_RETURN(sem, __down_read_trylock, __down_read_interruptible)) { + rwsem_release(&sem->dep_map, _RET_IP_); + return -EINTR; + } + + return 0; +} +EXPORT_SYMBOL(down_read_interruptible); + int __sched down_read_killable(struct rw_semaphore *sem) { might_sleep(); @@ -1605,6 +1631,20 @@ } EXPORT_SYMBOL(down_read_nested); +int down_read_killable_nested(struct rw_semaphore *sem, int subclass) +{ + might_sleep(); + rwsem_acquire_read(&sem->dep_map, subclass, 0, _RET_IP_); + + if (LOCK_CONTENDED_RETURN(sem, __down_read_trylock, __down_read_killable)) { + rwsem_release(&sem->dep_map, _RET_IP_); + return -EINTR; + } + + return 0; +} +EXPORT_SYMBOL(down_read_killable_nested); + void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest) { might_sleep(); --- linux-5.8.0.orig/kernel/module.c +++ linux-5.8.0/kernel/module.c @@ -91,8 +91,9 @@ static LIST_HEAD(modules); /* Work queue for freeing init sections in success case */ -static struct work_struct init_free_wq; -static struct llist_head init_free_list; +static void do_free_init(struct work_struct *w); +static DECLARE_WORK(init_free_wq, do_free_init); +static LLIST_HEAD(init_free_list); #ifdef CONFIG_MODULES_TREE_LOOKUP @@ -1520,18 +1521,34 @@ struct module_sect_attr attrs[]; }; +#define MODULE_SECT_READ_SIZE (3 /* "0x", "\n" */ + (BITS_PER_LONG / 4)) static ssize_t module_sect_read(struct file *file, struct kobject *kobj, struct bin_attribute *battr, char *buf, loff_t pos, size_t count) { struct module_sect_attr *sattr = container_of(battr, struct module_sect_attr, battr); + char bounce[MODULE_SECT_READ_SIZE + 1]; + size_t wrote; if (pos != 0) return -EINVAL; - return sprintf(buf, "0x%px\n", - kallsyms_show_value(file->f_cred) ? (void *)sattr->address : NULL); + /* + * Since we're a binary read handler, we must account for the + * trailing NUL byte that sprintf will write: if "buf" is + * too small to hold the NUL, or the NUL is exactly the last + * byte, the read will look like it got truncated by one byte. + * Since there is no way to ask sprintf nicely to not write + * the NUL, we have to use a bounce buffer. + */ + wrote = scnprintf(bounce, sizeof(bounce), "0x%px\n", + kallsyms_show_value(file->f_cred) + ? (void *)sattr->address : NULL); + count = min(count, wrote); + memcpy(buf, bounce, count); + + return count; } static void free_sect_attrs(struct module_sect_attrs *sect_attrs) @@ -1580,7 +1597,7 @@ goto out; sect_attrs->nsections++; sattr->battr.read = module_sect_read; - sattr->battr.size = 3 /* "0x", "\n" */ + (BITS_PER_LONG / 4); + sattr->battr.size = MODULE_SECT_READ_SIZE; sattr->battr.attr.mode = 0400; *(gattr++) = &(sattr++)->battr; } @@ -1849,7 +1866,6 @@ if (err) mod_kobject_put(mod); - /* delay uevent until full sysfs population */ out: return err; } @@ -1886,7 +1902,6 @@ add_sect_attrs(mod, info); add_notes_attrs(mod, info); - kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD); return 0; out_unreg_modinfo_attrs: @@ -2268,6 +2283,21 @@ return 0; } +static bool ignore_undef_symbol(Elf_Half emachine, const char *name) +{ + /* + * On x86, PIC code and Clang non-PIC code may have call foo@PLT. GNU as + * before 2.37 produces an unreferenced _GLOBAL_OFFSET_TABLE_ on x86-64. + * i386 has a similar problem but may not deserve a fix. + * + * If we ever have to ignore many symbols, consider refactoring the code to + * only warn if referenced by a relocation. + */ + if (emachine == EM_386 || emachine == EM_X86_64) + return !strcmp(name, "_GLOBAL_OFFSET_TABLE_"); + return false; +} + /* Change all symbols so that st_value encodes the pointer directly. */ static int simplify_symbols(struct module *mod, const struct load_info *info) { @@ -2313,8 +2343,10 @@ break; } - /* Ok if weak. */ - if (!ksym && ELF_ST_BIND(sym[i].st_info) == STB_WEAK) + /* Ok if weak or ignored. */ + if (!ksym && + (ELF_ST_BIND(sym[i].st_info) == STB_WEAK || + ignore_undef_symbol(info->hdr->e_machine, name))) break; ret = PTR_ERR(ksym) ?: -ENOENT; @@ -2858,20 +2890,14 @@ * enforcing, certain errors are non-fatal. */ case -ENODATA: - reason = "Loading of unsigned module"; - goto decide; + reason = "unsigned module"; + break; case -ENOPKG: - reason = "Loading of module with unsupported crypto"; - goto decide; + reason = "module with unsupported crypto"; + break; case -ENOKEY: - reason = "Loading of module with unavailable key"; - decide: - if (is_module_sig_enforced()) { - pr_notice("%s: %s is rejected\n", info->name, reason); - return -EKEYREJECTED; - } - - return security_locked_down(LOCKDOWN_MODULE_SIGNATURE); + reason = "module with unavailable key"; + break; /* All other errors are fatal, including nomem, unparseable * signatures and signature check failures - even if signatures @@ -2880,6 +2906,13 @@ default: return err; } + + if (is_module_sig_enforced()) { + pr_notice("Loading of %s is rejected\n", reason); + return -EKEYREJECTED; + } + + return security_locked_down(LOCKDOWN_MODULE_SIGNATURE); } #else /* !CONFIG_MODULE_SIG */ static int module_sig_check(struct load_info *info, int flags) @@ -2888,9 +2921,33 @@ } #endif /* !CONFIG_MODULE_SIG */ -/* Sanity checks against invalid binaries, wrong arch, weird elf version. */ -static int elf_header_check(struct load_info *info) +static int validate_section_offset(struct load_info *info, Elf_Shdr *shdr) { + unsigned long secend; + + /* + * Check for both overflow and offset/size being + * too large. + */ + secend = shdr->sh_offset + shdr->sh_size; + if (secend < shdr->sh_offset || secend > info->len) + return -ENOEXEC; + + return 0; +} + +/* + * Sanity checks against invalid binaries, wrong arch, weird elf version. + * + * Also do basic validity checks against section offsets and sizes, the + * section name string table, and the indices used for it (sh_name). + */ +static int elf_validity_check(struct load_info *info) +{ + unsigned int i; + Elf_Shdr *shdr, *strhdr; + int err; + if (info->len < sizeof(*(info->hdr))) return -ENOEXEC; @@ -2900,11 +2957,78 @@ || info->hdr->e_shentsize != sizeof(Elf_Shdr)) return -ENOEXEC; + /* + * e_shnum is 16 bits, and sizeof(Elf_Shdr) is + * known and small. So e_shnum * sizeof(Elf_Shdr) + * will not overflow unsigned long on any platform. + */ if (info->hdr->e_shoff >= info->len || (info->hdr->e_shnum * sizeof(Elf_Shdr) > info->len - info->hdr->e_shoff)) return -ENOEXEC; + info->sechdrs = (void *)info->hdr + info->hdr->e_shoff; + + /* + * Verify if the section name table index is valid. + */ + if (info->hdr->e_shstrndx == SHN_UNDEF + || info->hdr->e_shstrndx >= info->hdr->e_shnum) + return -ENOEXEC; + + strhdr = &info->sechdrs[info->hdr->e_shstrndx]; + err = validate_section_offset(info, strhdr); + if (err < 0) + return err; + + /* + * The section name table must be NUL-terminated, as required + * by the spec. This makes strcmp and pr_* calls that access + * strings in the section safe. + */ + info->secstrings = (void *)info->hdr + strhdr->sh_offset; + if (info->secstrings[strhdr->sh_size - 1] != '\0') + return -ENOEXEC; + + /* + * The code assumes that section 0 has a length of zero and + * an addr of zero, so check for it. + */ + if (info->sechdrs[0].sh_type != SHT_NULL + || info->sechdrs[0].sh_size != 0 + || info->sechdrs[0].sh_addr != 0) + return -ENOEXEC; + + for (i = 1; i < info->hdr->e_shnum; i++) { + shdr = &info->sechdrs[i]; + switch (shdr->sh_type) { + case SHT_NULL: + case SHT_NOBITS: + continue; + case SHT_SYMTAB: + if (shdr->sh_link == SHN_UNDEF + || shdr->sh_link >= info->hdr->e_shnum) + return -ENOEXEC; + fallthrough; + default: + err = validate_section_offset(info, shdr); + if (err < 0) { + pr_err("Invalid ELF section in module (section %u type %u)\n", + i, shdr->sh_type); + return err; + } + + if (shdr->sh_flags & SHF_ALLOC) { + if (shdr->sh_name >= strhdr->sh_size) { + pr_err("Invalid ELF section name in module (section %u type %u)\n", + i, shdr->sh_type); + return -ENOEXEC; + } + } + break; + } + } + return 0; } @@ -3000,11 +3124,6 @@ for (i = 1; i < info->hdr->e_shnum; i++) { Elf_Shdr *shdr = &info->sechdrs[i]; - if (shdr->sh_type != SHT_NOBITS - && info->len < shdr->sh_offset + shdr->sh_size) { - pr_err("Module len %lu truncated\n", info->len); - return -ENOEXEC; - } /* Mark all sections sh_addr with their address in the temporary image. */ @@ -3036,11 +3155,6 @@ { unsigned int i; - /* Set up the convenience variables */ - info->sechdrs = (void *)info->hdr + info->hdr->e_shoff; - info->secstrings = (void *)info->hdr - + info->sechdrs[info->hdr->e_shstrndx].sh_offset; - /* Try to find a name early so we can log errors with a module name */ info->index.info = find_sec(info, ".modinfo"); if (info->index.info) @@ -3535,14 +3649,6 @@ } } -static int __init modules_wq_init(void) -{ - INIT_WORK(&init_free_wq, do_free_init); - init_llist_head(&init_free_list); - return 0; -} -module_init(modules_wq_init); - /* * This is where the real work happens. * @@ -3587,6 +3693,9 @@ blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_LIVE, mod); + /* Delay uevent until module has finished its init routine */ + kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD); + /* * We need to finish all async code before the module init sequence * is done. This has potential to deadlock. For example, a newly @@ -3780,23 +3889,49 @@ long err = 0; char *after_dashes; - err = elf_header_check(info); + /* + * Do the signature check (if any) first. All that + * the signature check needs is info->len, it does + * not need any of the section info. That can be + * set up later. This will minimize the chances + * of a corrupt module causing problems before + * we even get to the signature check. + * + * The check will also adjust info->len by stripping + * off the sig length at the end of the module, making + * checks against info->len more correct. + */ + err = module_sig_check(info, flags); if (err) goto free_copy; + /* + * Do basic sanity checks against the ELF header and + * sections. + */ + err = elf_validity_check(info); + if (err) { + pr_err("Module has invalid ELF structures\n"); + goto free_copy; + } + + /* + * Everything checks out, so set up the section info + * in the info structure. + */ err = setup_load_info(info, flags); if (err) goto free_copy; + /* + * Now that we know we have the correct module name, check + * if it's blacklisted. + */ if (blacklisted(info->name)) { err = -EPERM; goto free_copy; } - err = module_sig_check(info, flags); - if (err) - goto free_copy; - err = rewrite_section_headers(info, flags); if (err) goto free_copy; @@ -3932,6 +4067,7 @@ MODULE_STATE_GOING, mod); klp_module_going(mod); bug_cleanup: + mod->state = MODULE_STATE_GOING; /* module_bug_cleanup needs module_mutex protection */ mutex_lock(&module_mutex); module_bug_cleanup(mod); @@ -3991,7 +4127,7 @@ { struct load_info info = { }; loff_t size; - void *hdr; + void *hdr = NULL; int err; err = may_init_module(); --- linux-5.8.0.orig/kernel/module_signature.c +++ linux-5.8.0/kernel/module_signature.c @@ -25,7 +25,7 @@ return -EBADMSG; if (ms->id_type != PKEY_ID_PKCS7) { - pr_err("%s: Module is not signed with expected PKCS#7 message\n", + pr_err("%s: not signed with expected PKCS#7 message\n", name); return -ENOPKG; } --- linux-5.8.0.orig/kernel/module_signing.c +++ linux-5.8.0/kernel/module_signing.c @@ -30,7 +30,7 @@ memcpy(&ms, mod + (modlen - sizeof(ms)), sizeof(ms)); - ret = mod_check_sig(&ms, modlen, info->name); + ret = mod_check_sig(&ms, modlen, "module"); if (ret) return ret; @@ -38,8 +38,15 @@ modlen -= sig_len + sizeof(ms); info->len = modlen; - return verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len, + ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len, VERIFY_USE_SECONDARY_KEYRING, VERIFYING_MODULE_SIGNATURE, NULL, NULL); + if (ret == -ENOKEY && IS_ENABLED(CONFIG_INTEGRITY_PLATFORM_KEYRING)) { + ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len, + VERIFY_USE_PLATFORM_KEYRING, + VERIFYING_MODULE_SIGNATURE, + NULL, NULL); + } + return ret; } --- linux-5.8.0.orig/kernel/padata.c +++ linux-5.8.0/kernel/padata.c @@ -215,12 +215,13 @@ padata->pd = pd; padata->cb_cpu = *cb_cpu; - rcu_read_unlock_bh(); - spin_lock(&padata_works_lock); padata->seq_nr = ++pd->seq_nr; pw = padata_work_alloc(); spin_unlock(&padata_works_lock); + + rcu_read_unlock_bh(); + if (pw) { padata_work_init(pw, padata_parallel_worker, padata, 0); queue_work(pinst->parallel_wq, &pw->pw_work); --- linux-5.8.0.orig/kernel/pid.c +++ linux-5.8.0/kernel/pid.c @@ -42,6 +42,7 @@ #include #include #include +#include struct pid init_struct_pid = { .count = REFCOUNT_INIT(1), @@ -606,7 +607,7 @@ struct file *file; int ret; - ret = mutex_lock_killable(&task->signal->exec_update_mutex); + ret = down_read_killable(&task->signal->exec_update_lock); if (ret) return ERR_PTR(ret); @@ -615,7 +616,7 @@ else file = ERR_PTR(-EPERM); - mutex_unlock(&task->signal->exec_update_mutex); + up_read(&task->signal->exec_update_lock); return file ?: ERR_PTR(-EBADF); } @@ -642,10 +643,12 @@ } ret = get_unused_fd_flags(O_CLOEXEC); - if (ret < 0) + if (ret < 0) { fput(file); - else + } else { + __receive_sock(file); fd_install(ret, file); + } return ret; } --- linux-5.8.0.orig/kernel/power/energy_model.c +++ linux-5.8.0/kernel/power/energy_model.c @@ -74,7 +74,7 @@ return 0; } -core_initcall(em_debug_init); +fs_initcall(em_debug_init); #else /* CONFIG_DEBUG_FS */ static void em_debug_create_pd(struct em_perf_domain *pd, int cpu) {} #endif --- linux-5.8.0.orig/kernel/power/hibernate.c +++ linux-5.8.0/kernel/power/hibernate.c @@ -851,17 +851,6 @@ /* Check if the device is there */ swsusp_resume_device = name_to_dev_t(resume_file); - - /* - * name_to_dev_t is ineffective to verify parition if resume_file is in - * integer format. (e.g. major:minor) - */ - if (isdigit(resume_file[0]) && resume_wait) { - int partno; - while (!get_gendisk(swsusp_resume_device, &partno)) - msleep(10); - } - if (!swsusp_resume_device) { /* * Some device discovery might still be in progress; we need --- linux-5.8.0.orig/kernel/power/swap.c +++ linux-5.8.0/kernel/power/swap.c @@ -489,10 +489,10 @@ unsigned int flags, int error) { if (!error) { - flush_swap_writer(handle); pr_info("S"); error = mark_swapfiles(handle, flags); pr_cont("|\n"); + flush_swap_writer(handle); } if (error) --- linux-5.8.0.orig/kernel/printk/printk_safe.c +++ linux-5.8.0/kernel/printk/printk_safe.c @@ -45,6 +45,8 @@ static DEFINE_PER_CPU(struct printk_safe_seq_buf, safe_print_seq); static DEFINE_PER_CPU(int, printk_context); +static DEFINE_RAW_SPINLOCK(safe_read_lock); + #ifdef CONFIG_PRINTK_NMI static DEFINE_PER_CPU(struct printk_safe_seq_buf, nmi_print_seq); #endif @@ -180,8 +182,6 @@ */ static void __printk_safe_flush(struct irq_work *work) { - static raw_spinlock_t read_lock = - __RAW_SPIN_LOCK_INITIALIZER(read_lock); struct printk_safe_seq_buf *s = container_of(work, struct printk_safe_seq_buf, work); unsigned long flags; @@ -195,7 +195,7 @@ * different CPUs. This is especially important when printing * a backtrace. */ - raw_spin_lock_irqsave(&read_lock, flags); + raw_spin_lock_irqsave(&safe_read_lock, flags); i = 0; more: @@ -232,7 +232,7 @@ out: report_message_lost(s); - raw_spin_unlock_irqrestore(&read_lock, flags); + raw_spin_unlock_irqrestore(&safe_read_lock, flags); } /** @@ -278,6 +278,14 @@ raw_spin_lock_init(&logbuf_lock); } + if (raw_spin_is_locked(&safe_read_lock)) { + if (num_online_cpus() > 1) + return; + + debug_locks_off(); + raw_spin_lock_init(&safe_read_lock); + } + printk_safe_flush(); } --- linux-5.8.0.orig/kernel/ptrace.c +++ linux-5.8.0/kernel/ptrace.c @@ -264,17 +264,11 @@ return ret; } -static bool ptrace_has_cap(const struct cred *cred, struct user_namespace *ns, - unsigned int mode) +static bool ptrace_has_cap(struct user_namespace *ns, unsigned int mode) { - int ret; - if (mode & PTRACE_MODE_NOAUDIT) - ret = security_capable(cred, ns, CAP_SYS_PTRACE, CAP_OPT_NOAUDIT); - else - ret = security_capable(cred, ns, CAP_SYS_PTRACE, CAP_OPT_NONE); - - return ret == 0; + return ns_capable_noaudit(ns, CAP_SYS_PTRACE); + return ns_capable(ns, CAP_SYS_PTRACE); } /* Returns 0 on success, -errno on denial. */ @@ -326,7 +320,7 @@ gid_eq(caller_gid, tcred->sgid) && gid_eq(caller_gid, tcred->gid)) goto ok; - if (ptrace_has_cap(cred, tcred->user_ns, mode)) + if (ptrace_has_cap(tcred->user_ns, mode)) goto ok; rcu_read_unlock(); return -EPERM; @@ -345,7 +339,7 @@ mm = task->mm; if (mm && ((get_dumpable(mm) != SUID_DUMP_USER) && - !ptrace_has_cap(cred, mm->user_ns, mode))) + !ptrace_has_cap(mm->user_ns, mode))) return -EPERM; return security_ptrace_access_check(task, mode); --- linux-5.8.0.orig/kernel/rcu/rcutorture.c +++ linux-5.8.0/kernel/rcu/rcutorture.c @@ -2154,9 +2154,20 @@ return -ENOMEM; spin_lock_init(&rfp->rcu_fwd_lock); rfp->rcu_fwd_cb_tail = &rfp->rcu_fwd_cb_head; + rcu_fwds = rfp; return torture_create_kthread(rcu_torture_fwd_prog, rfp, fwd_prog_task); } +static void rcu_torture_fwd_prog_cleanup(void) +{ + struct rcu_fwd *rfp; + + torture_stop_kthread(rcu_torture_fwd_prog, fwd_prog_task); + rfp = rcu_fwds; + rcu_fwds = NULL; + kfree(rfp); +} + /* Callback function for RCU barrier testing. */ static void rcu_torture_barrier_cbf(struct rcu_head *rcu) { @@ -2360,7 +2371,7 @@ show_rcu_gp_kthreads(); rcu_torture_barrier_cleanup(); - torture_stop_kthread(rcu_torture_fwd_prog, fwd_prog_task); + rcu_torture_fwd_prog_cleanup(); torture_stop_kthread(rcu_torture_stall, stall_task); torture_stop_kthread(rcu_torture_writer, writer_task); --- linux-5.8.0.orig/kernel/rcu/tasks.h +++ linux-5.8.0/kernel/rcu/tasks.h @@ -811,6 +811,12 @@ WRITE_ONCE(t->trc_reader_checked, true); goto reset_ipi; } + // If we are racing with an rcu_read_unlock_trace(), try again later. + if (unlikely(t->trc_reader_nesting < 0)) { + if (WARN_ON_ONCE(atomic_dec_and_test(&trc_n_readers_need_end))) + wake_up(&trc_wait); + goto reset_ipi; + } WRITE_ONCE(t->trc_reader_checked, true); // Get here if the task is in a read-side critical section. Set @@ -1062,15 +1068,17 @@ if (ret) break; // Count reached zero. // Stall warning time, so make a list of the offenders. + rcu_read_lock(); for_each_process_thread(g, t) if (READ_ONCE(t->trc_reader_special.b.need_qs)) trc_add_holdout(t, &holdouts); + rcu_read_unlock(); firstreport = true; - list_for_each_entry_safe(t, g, &holdouts, trc_holdout_list) - if (READ_ONCE(t->trc_reader_special.b.need_qs)) { + list_for_each_entry_safe(t, g, &holdouts, trc_holdout_list) { + if (READ_ONCE(t->trc_reader_special.b.need_qs)) show_stalled_task_trace(t, &firstreport); - trc_del_holdout(t); - } + trc_del_holdout(t); // Release task_struct reference. + } if (firstreport) pr_err("INFO: rcu_tasks_trace detected stalls? (Counter/taskslist mismatch?)\n"); show_stalled_ipi_trace(); --- linux-5.8.0.orig/kernel/rcu/tree.c +++ linux-5.8.0/kernel/rcu/tree.c @@ -404,7 +404,7 @@ * * The caller must have disabled interrupts and must not be idle. */ -void rcu_momentary_dyntick_idle(void) +notrace void rcu_momentary_dyntick_idle(void) { int special; @@ -630,7 +630,6 @@ trace_rcu_dyntick(TPS("Start"), rdp->dynticks_nesting, 0, atomic_read(&rdp->dynticks)); WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && !user && !is_idle_task(current)); rdp = this_cpu_ptr(&rcu_data); - do_nocb_deferred_wakeup(rdp); rcu_prepare_for_idle(); rcu_preempt_deferred_qs(current); @@ -676,7 +675,14 @@ */ noinstr void rcu_user_enter(void) { + struct rcu_data *rdp = this_cpu_ptr(&rcu_data); + lockdep_assert_irqs_disabled(); + + instrumentation_begin(); + do_nocb_deferred_wakeup(rdp); + instrumentation_end(); + rcu_eqs_enter(true); } #endif /* CONFIG_NO_HZ_FULL */ @@ -920,8 +926,8 @@ { struct rcu_data *rdp = this_cpu_ptr(&rcu_data); - // Enabling the tick is unsafe in NMI handlers. - if (WARN_ON_ONCE(in_nmi())) + // If we're here from NMI there's nothing to do. + if (in_nmi()) return; RCU_LOCKDEP_WARN(rcu_dynticks_curr_cpu_in_eqs(), @@ -1088,8 +1094,11 @@ * CPU can safely enter RCU read-side critical sections. In other words, * if the current CPU is not in its idle loop or is in an interrupt or * NMI handler, return true. + * + * Make notrace because it can be called by the internal functions of + * ftrace, and making this notrace removes unnecessary recursion calls. */ -bool rcu_is_watching(void) +notrace bool rcu_is_watching(void) { bool ret; @@ -1882,7 +1891,7 @@ break; /* If time for quiescent-state forcing, do it. */ if (!time_after(rcu_state.jiffies_force_qs, jiffies) || - (gf & RCU_GP_FLAG_FQS)) { + (gf & (RCU_GP_FLAG_FQS | RCU_GP_FLAG_OVLD))) { trace_rcu_grace_period(rcu_state.name, rcu_state.gp_seq, TPS("fqsstart")); rcu_gp_fqs(first_gp_fqs); @@ -3105,7 +3114,7 @@ static inline bool queue_kfree_rcu_work(struct kfree_rcu_cpu *krcp) { struct kfree_rcu_cpu_work *krwp; - bool queued = false; + bool repeat = false; int i; lockdep_assert_held(&krcp->lock); @@ -3143,11 +3152,14 @@ * been detached following each other, one by one. */ queue_rcu_work(system_wq, &krwp->rcu_work); - queued = true; } + + /* Repeat if any "free" corresponding channel is still busy. */ + if (krcp->bhead || krcp->head) + repeat = true; } - return queued; + return !repeat; } static inline void kfree_rcu_drain_unlock(struct kfree_rcu_cpu *krcp, @@ -3877,7 +3889,6 @@ smp_mb(); /* Ensure RCU read-side usage follows above initialization. */ } -#ifdef CONFIG_HOTPLUG_CPU /* * The outgoing function has no further need of RCU, so remove it from * the rcu_node tree's ->qsmaskinitnext bit masks. @@ -3917,6 +3928,7 @@ per_cpu(rcu_cpu_started, cpu) = 0; } +#ifdef CONFIG_HOTPLUG_CPU /* * The outgoing CPU has just passed through the dying-idle state, and we * are being invoked from the CPU that was IPIed to continue the offline --- linux-5.8.0.orig/kernel/rcu/tree_plugin.h +++ linux-5.8.0/kernel/rcu/tree_plugin.h @@ -2158,6 +2158,11 @@ do_nocb_deferred_wakeup_common(rdp); } +void rcu_nocb_flush_deferred_wakeup(void) +{ + do_nocb_deferred_wakeup(this_cpu_ptr(&rcu_data)); +} + void __init rcu_init_nohz(void) { int cpu; --- linux-5.8.0.orig/kernel/rcu/tree_stall.h +++ linux-5.8.0/kernel/rcu/tree_stall.h @@ -251,13 +251,16 @@ /* * Scan the current list of tasks blocked within RCU read-side critical - * sections, printing out the tid of each. + * sections, printing out the tid of each of the first few of them. */ -static int rcu_print_task_stall(struct rcu_node *rnp) +static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags) + __releases(rnp->lock) { + int i = 0; int ndetected = 0; struct rcu_stall_chk_rdr rscr; struct task_struct *t; + struct task_struct *ts[8]; if (!rcu_preempt_blocked_readers_cgp(rnp)) return 0; @@ -266,6 +269,14 @@ t = list_entry(rnp->gp_tasks->prev, struct task_struct, rcu_node_entry); list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry) { + get_task_struct(t); + ts[i++] = t; + if (i >= ARRAY_SIZE(ts)) + break; + } + raw_spin_unlock_irqrestore_rcu_node(rnp, flags); + for (i--; i; i--) { + t = ts[i]; if (!try_invoke_on_locked_down_task(t, check_slow_task, &rscr)) pr_cont(" P%d", t->pid); else @@ -275,6 +286,7 @@ ".q"[rscr.rs.b.need_qs], ".e"[rscr.rs.b.exp_hint], ".l"[rscr.on_blkd_list]); + put_task_struct(t); ndetected++; } pr_cont("\n"); @@ -295,8 +307,9 @@ * Because preemptible RCU does not exist, we never have to check for * tasks blocked within RCU read-side critical sections. */ -static int rcu_print_task_stall(struct rcu_node *rnp) +static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags) { + raw_spin_unlock_irqrestore_rcu_node(rnp, flags); return 0; } #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ @@ -474,7 +487,6 @@ pr_err("INFO: %s detected stalls on CPUs/tasks:\n", rcu_state.name); rcu_for_each_leaf_node(rnp) { raw_spin_lock_irqsave_rcu_node(rnp, flags); - ndetected += rcu_print_task_stall(rnp); if (rnp->qsmask != 0) { for_each_leaf_node_possible_cpu(rnp, cpu) if (rnp->qsmask & leaf_node_cpu_bit(rnp, cpu)) { @@ -482,7 +494,7 @@ ndetected++; } } - raw_spin_unlock_irqrestore_rcu_node(rnp, flags); + ndetected += rcu_print_task_stall(rnp, flags); // Releases rnp->lock. } for_each_possible_cpu(cpu) --- linux-5.8.0.orig/kernel/reboot.c +++ linux-5.8.0/kernel/reboot.c @@ -244,6 +244,8 @@ void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); + if (pm_power_off_prepare) + pm_power_off_prepare(); migrate_to_reboot_cpu(); syscore_shutdown(); if (!cmd) @@ -551,22 +553,22 @@ break; case 's': - { - int rc; - - if (isdigit(*(str+1))) { - rc = kstrtoint(str+1, 0, &reboot_cpu); - if (rc) - return rc; - } else if (str[1] == 'm' && str[2] == 'p' && - isdigit(*(str+3))) { - rc = kstrtoint(str+3, 0, &reboot_cpu); - if (rc) - return rc; - } else + if (isdigit(*(str+1))) + reboot_cpu = simple_strtoul(str+1, NULL, 0); + else if (str[1] == 'm' && str[2] == 'p' && + isdigit(*(str+3))) + reboot_cpu = simple_strtoul(str+3, NULL, 0); + else *mode = REBOOT_SOFT; + if (reboot_cpu >= num_possible_cpus()) { + pr_err("Ignoring the CPU number in reboot= option. " + "CPU %d exceeds possible cpu number %d\n", + reboot_cpu, num_possible_cpus()); + reboot_cpu = 0; + break; + } break; - } + case 'g': *mode = REBOOT_GPIO; break; --- linux-5.8.0.orig/kernel/relay.c +++ linux-5.8.0/kernel/relay.c @@ -197,6 +197,7 @@ static void relay_destroy_channel(struct kref *kref) { struct rchan *chan = container_of(kref, struct rchan, kref); + free_percpu(chan->buf); kfree(chan); } --- linux-5.8.0.orig/kernel/sched/core.c +++ linux-5.8.0/kernel/sched/core.c @@ -39,7 +39,7 @@ DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues); -#if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_JUMP_LABEL) +#ifdef CONFIG_SCHED_DEBUG /* * Debugging: various feature bits * @@ -264,8 +264,9 @@ static void __hrtick_restart(struct rq *rq) { struct hrtimer *timer = &rq->hrtick_timer; + ktime_t time = rq->hrtick_time; - hrtimer_start_expires(timer, HRTIMER_MODE_ABS_PINNED_HARD); + hrtimer_start(timer, time, HRTIMER_MODE_ABS_PINNED_HARD); } /* @@ -289,7 +290,6 @@ void hrtick_start(struct rq *rq, u64 delay) { struct hrtimer *timer = &rq->hrtick_timer; - ktime_t time; s64 delta; /* @@ -297,9 +297,7 @@ * doesn't make sense and can cause timer DoS. */ delta = max_t(s64, delay, 10000LL); - time = ktime_add_ns(timer->base->get_time(), delta); - - hrtimer_set_expires(timer, time); + rq->hrtick_time = ktime_add_ns(timer->base->get_time(), delta); if (rq == this_rq()) __hrtick_restart(rq); @@ -794,6 +792,26 @@ /* All clamps are required to be less or equal than these values */ static struct uclamp_se uclamp_default[UCLAMP_CNT]; +/* + * This static key is used to reduce the uclamp overhead in the fast path. It + * primarily disables the call to uclamp_rq_{inc, dec}() in + * enqueue/dequeue_task(). + * + * This allows users to continue to enable uclamp in their kernel config with + * minimum uclamp overhead in the fast path. + * + * As soon as userspace modifies any of the uclamp knobs, the static key is + * enabled, since we have an actual users that make use of uclamp + * functionality. + * + * The knobs that would enable this static key are: + * + * * A task modifying its uclamp value with sched_setattr(). + * * An admin modifying the sysctl_sched_uclamp_{min, max} via procfs. + * * An admin modifying the cgroup cpu.uclamp.{min, max} + */ +DEFINE_STATIC_KEY_FALSE(sched_uclamp_used); + /* Integer rounded range for each bucket */ #define UCLAMP_BUCKET_DELTA DIV_ROUND_CLOSEST(SCHED_CAPACITY_SCALE, UCLAMP_BUCKETS) @@ -990,10 +1008,38 @@ lockdep_assert_held(&rq->lock); + /* + * If sched_uclamp_used was enabled after task @p was enqueued, + * we could end up with unbalanced call to uclamp_rq_dec_id(). + * + * In this case the uc_se->active flag should be false since no uclamp + * accounting was performed at enqueue time and we can just return + * here. + * + * Need to be careful of the following enqeueue/dequeue ordering + * problem too + * + * enqueue(taskA) + * // sched_uclamp_used gets enabled + * enqueue(taskB) + * dequeue(taskA) + * // Must not decrement bukcet->tasks here + * dequeue(taskB) + * + * where we could end up with stale data in uc_se and + * bucket[uc_se->bucket_id]. + * + * The following check here eliminates the possibility of such race. + */ + if (unlikely(!uc_se->active)) + return; + bucket = &uc_rq->bucket[uc_se->bucket_id]; + SCHED_WARN_ON(!bucket->tasks); if (likely(bucket->tasks)) bucket->tasks--; + uc_se->active = false; /* @@ -1021,6 +1067,15 @@ { enum uclamp_id clamp_id; + /* + * Avoid any overhead until uclamp is actually used by the userspace. + * + * The condition is constructed such that a NOP is generated when + * sched_uclamp_used is disabled. + */ + if (!static_branch_unlikely(&sched_uclamp_used)) + return; + if (unlikely(!p->sched_class->uclamp_enabled)) return; @@ -1036,6 +1091,15 @@ { enum uclamp_id clamp_id; + /* + * Avoid any overhead until uclamp is actually used by the userspace. + * + * The condition is constructed such that a NOP is generated when + * sched_uclamp_used is disabled. + */ + if (!static_branch_unlikely(&sched_uclamp_used)) + return; + if (unlikely(!p->sched_class->uclamp_enabled)) return; @@ -1144,8 +1208,10 @@ update_root_tg = true; } - if (update_root_tg) + if (update_root_tg) { + static_branch_enable(&sched_uclamp_used); uclamp_update_root_tg(); + } /* * We update all RUNNABLE tasks only when task groups are in use. @@ -1180,6 +1246,15 @@ if (upper_bound > SCHED_CAPACITY_SCALE) return -EINVAL; + /* + * We have valid uclamp attributes; make sure uclamp is enabled. + * + * We need to do that here, because enabling static branches is a + * blocking operation which obviously cannot be done while holding + * scheduler locks. + */ + static_branch_enable(&sched_uclamp_used); + return 0; } @@ -1237,6 +1312,20 @@ } } +static void __init init_uclamp_rq(struct rq *rq) +{ + enum uclamp_id clamp_id; + struct uclamp_rq *uc_rq = rq->uclamp; + + for_each_clamp_id(clamp_id) { + uc_rq[clamp_id] = (struct uclamp_rq) { + .value = uclamp_none(clamp_id) + }; + } + + rq->uclamp_flags = 0; +} + static void __init init_uclamp(void) { struct uclamp_se uc_max = {}; @@ -1245,11 +1334,8 @@ mutex_init(&uclamp_mutex); - for_each_possible_cpu(cpu) { - memset(&cpu_rq(cpu)->uclamp, 0, - sizeof(struct uclamp_rq)*UCLAMP_CNT); - cpu_rq(cpu)->uclamp_flags = 0; - } + for_each_possible_cpu(cpu) + init_uclamp_rq(cpu_rq(cpu)); for_each_clamp_id(clamp_id) { uclamp_se_set(&init_task.uclamp_req[clamp_id], @@ -2236,7 +2322,12 @@ #ifdef CONFIG_SMP if (wake_flags & WF_MIGRATED) en_flags |= ENQUEUE_MIGRATED; + else #endif + if (p->in_iowait) { + delayacct_blkio_end(p); + atomic_dec(&task_rq(p)->nr_iowait); + } activate_task(rq, p, en_flags); ttwu_do_wakeup(rq, p, wake_flags, rf); @@ -2580,11 +2671,6 @@ if (READ_ONCE(p->on_rq) && ttwu_remote(p, wake_flags)) goto unlock; - if (p->in_iowait) { - delayacct_blkio_end(p); - atomic_dec(&task_rq(p)->nr_iowait); - } - #ifdef CONFIG_SMP /* * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be @@ -2655,6 +2741,11 @@ cpu = select_task_rq(p, p->wake_cpu, SD_BALANCE_WAKE, wake_flags); if (task_cpu(p) != cpu) { + if (p->in_iowait) { + delayacct_blkio_end(p); + atomic_dec(&task_rq(p)->nr_iowait); + } + wake_flags |= WF_MIGRATED; psi_ttwu_dequeue(p); set_task_cpu(p, cpu); @@ -2676,7 +2767,7 @@ /** * try_invoke_on_locked_down_task - Invoke a function on task in fixed state - * @p: Process for which the function is to be invoked. + * @p: Process for which the function is to be invoked, can be @current. * @func: Function to invoke. * @arg: Argument to function. * @@ -2694,12 +2785,11 @@ */ bool try_invoke_on_locked_down_task(struct task_struct *p, bool (*func)(struct task_struct *t, void *arg), void *arg) { - bool ret = false; struct rq_flags rf; + bool ret = false; struct rq *rq; - lockdep_assert_irqs_enabled(); - raw_spin_lock_irq(&p->pi_lock); + raw_spin_lock_irqsave(&p->pi_lock, rf.flags); if (p->on_rq) { rq = __task_rq_lock(p, &rf); if (task_rq(p) == rq) @@ -2716,7 +2806,7 @@ ret = func(p, arg); } } - raw_spin_unlock_irq(&p->pi_lock); + raw_spin_unlock_irqrestore(&p->pi_lock, rf.flags); return ret; } @@ -4709,6 +4799,7 @@ return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) || capable(CAP_SYS_NICE)); } +EXPORT_SYMBOL(can_nice); #ifdef __ARCH_WANT_SYS_NICE @@ -5738,12 +5829,8 @@ schedstat_inc(rq->yld_count); current->sched_class->yield_task(rq); - /* - * Since we are going to call schedule() anyway, there's - * no need to preempt or enable interrupts: - */ preempt_disable(); - rq_unlock(rq, &rf); + rq_unlock_irq(rq, &rf); sched_preempt_enable_no_resched(); schedule(); @@ -7431,6 +7518,8 @@ if (req.ret) return req.ret; + static_branch_enable(&sched_uclamp_used); + mutex_lock(&uclamp_mutex); rcu_read_lock(); --- linux-5.8.0.orig/kernel/sched/cpufreq_schedutil.c +++ linux-5.8.0/kernel/sched/cpufreq_schedutil.c @@ -102,7 +102,8 @@ static bool sugov_update_next_freq(struct sugov_policy *sg_policy, u64 time, unsigned int next_freq) { - if (sg_policy->next_freq == next_freq) + if (sg_policy->next_freq == next_freq && + !cpufreq_driver_test_flags(CPUFREQ_NEED_UPDATE_LIMITS)) return false; sg_policy->next_freq = next_freq; @@ -175,7 +176,8 @@ freq = map_util_freq(util, freq, max); - if (freq == sg_policy->cached_raw_freq && !sg_policy->need_freq_update) + if (freq == sg_policy->cached_raw_freq && !sg_policy->need_freq_update && + !cpufreq_driver_test_flags(CPUFREQ_NEED_UPDATE_LIMITS)) return sg_policy->next_freq; sg_policy->need_freq_update = false; @@ -210,7 +212,7 @@ unsigned long dl_util, util, irq; struct rq *rq = cpu_rq(cpu); - if (!IS_BUILTIN(CONFIG_UCLAMP_TASK) && + if (!uclamp_is_used() && type == FREQUENCY_UTIL && rt_rq_is_runnable(&rq->rt)) { return max; } @@ -894,7 +896,7 @@ struct cpufreq_governor schedutil_gov = { .name = "schedutil", .owner = THIS_MODULE, - .dynamic_switching = true, + .flags = CPUFREQ_GOV_DYNAMIC_SWITCHING, .init = sugov_init, .exit = sugov_exit, .start = sugov_start, --- linux-5.8.0.orig/kernel/sched/deadline.c +++ linux-5.8.0/kernel/sched/deadline.c @@ -2468,7 +2468,7 @@ u64 period = global_rt_period(); u64 new_bw = to_ratio(period, runtime); struct dl_bw *dl_b; - int cpu, ret = 0; + int cpu, cpus, ret = 0; unsigned long flags; /* @@ -2483,9 +2483,10 @@ for_each_possible_cpu(cpu) { rcu_read_lock_sched(); dl_b = dl_bw_of(cpu); + cpus = dl_bw_cpus(cpu); raw_spin_lock_irqsave(&dl_b->lock, flags); - if (new_bw < dl_b->total_bw) + if (new_bw * cpus < dl_b->total_bw) ret = -EBUSY; raw_spin_unlock_irqrestore(&dl_b->lock, flags); --- linux-5.8.0.orig/kernel/sched/fair.c +++ linux-5.8.0/kernel/sched/fair.c @@ -1550,7 +1550,7 @@ static unsigned long cpu_load(struct rq *rq); static unsigned long cpu_util(int cpu); -static inline long adjust_numa_imbalance(int imbalance, int src_nr_running); +static inline long adjust_numa_imbalance(int imbalance, int nr_running); static inline enum numa_type numa_classify(unsigned int imbalance_pct, @@ -1927,7 +1927,7 @@ src_running = env->src_stats.nr_running - 1; dst_running = env->dst_stats.nr_running + 1; imbalance = max(0, dst_running - src_running); - imbalance = adjust_numa_imbalance(imbalance, src_running); + imbalance = adjust_numa_imbalance(imbalance, dst_running); /* Use idle CPU if there is no imbalance */ if (!imbalance) { @@ -2925,7 +2925,7 @@ curr->node_stamp += period; if (!time_before(jiffies, curr->mm->numa_next_scan)) - task_work_add(curr, work, true); + task_work_add(curr, work, TWA_RESUME); } } @@ -3924,6 +3924,20 @@ WRITE_ONCE(cfs_rq->avg.util_est.enqueued, enqueued); } +static inline void util_est_dequeue(struct cfs_rq *cfs_rq, + struct task_struct *p) +{ + unsigned int enqueued; + + if (!sched_feat(UTIL_EST)) + return; + + /* Update root cfs_rq's estimated utilization */ + enqueued = cfs_rq->avg.util_est.enqueued; + enqueued -= min_t(unsigned int, enqueued, _task_util_est(p)); + WRITE_ONCE(cfs_rq->avg.util_est.enqueued, enqueued); +} + /* * Check if a (signed) value is within a specified (unsigned) margin, * based on the observation that: @@ -3937,21 +3951,16 @@ return ((unsigned int)(value + margin - 1) < (2 * margin - 1)); } -static void -util_est_dequeue(struct cfs_rq *cfs_rq, struct task_struct *p, bool task_sleep) +static inline void util_est_update(struct cfs_rq *cfs_rq, + struct task_struct *p, + bool task_sleep) { long last_ewma_diff; struct util_est ue; - int cpu; if (!sched_feat(UTIL_EST)) return; - /* Update root cfs_rq's estimated utilization */ - ue.enqueued = cfs_rq->avg.util_est.enqueued; - ue.enqueued -= min_t(unsigned int, ue.enqueued, _task_util_est(p)); - WRITE_ONCE(cfs_rq->avg.util_est.enqueued, ue.enqueued); - /* * Skip update of task's estimated utilization when the task has not * yet completed an activation, e.g. being migrated. @@ -3991,8 +4000,7 @@ * To avoid overestimation of actual task utilization, skip updates if * we cannot grant there is idle time in this CPU. */ - cpu = cpu_of(rq_of(cfs_rq)); - if (task_util(p) > capacity_orig_of(cpu)) + if (task_util(p) > capacity_orig_of(cpu_of(rq_of(cfs_rq)))) return; /* @@ -4029,7 +4037,7 @@ if (!static_branch_unlikely(&sched_asym_cpucapacity)) return; - if (!p) { + if (!p || p->nr_cpus_allowed == 1) { rq->misfit_task_load = 0; return; } @@ -4073,8 +4081,11 @@ util_est_enqueue(struct cfs_rq *cfs_rq, struct task_struct *p) {} static inline void -util_est_dequeue(struct cfs_rq *cfs_rq, struct task_struct *p, - bool task_sleep) {} +util_est_dequeue(struct cfs_rq *cfs_rq, struct task_struct *p) {} + +static inline void +util_est_update(struct cfs_rq *cfs_rq, struct task_struct *p, + bool task_sleep) {} static inline void update_misfit_status(struct task_struct *p, struct rq *rq) {} #endif /* CONFIG_SMP */ @@ -5465,6 +5476,7 @@ struct cfs_rq *cfs_rq; struct sched_entity *se = &p->se; int idle_h_nr_running = task_has_idle_policy(p); + int task_new = !(flags & ENQUEUE_WAKEUP); /* * The code below (indirectly) updates schedutil which looks at @@ -5537,7 +5549,7 @@ * into account, but that is not straightforward to implement, * and the following generally works well enough in practice. */ - if (flags & ENQUEUE_WAKEUP) + if (!task_new) update_overutilized_status(rq); enqueue_throttle: @@ -5576,6 +5588,8 @@ int idle_h_nr_running = task_has_idle_policy(p); bool was_sched_idle = sched_idle_rq(rq); + util_est_dequeue(&rq->cfs, p); + for_each_sched_entity(se) { cfs_rq = cfs_rq_of(se); dequeue_entity(cfs_rq, se, flags); @@ -5626,7 +5640,7 @@ if (unlikely(!was_sched_idle && sched_idle_rq(rq))) rq->next_balance = jiffies; - util_est_dequeue(&rq->cfs, p, task_sleep); + util_est_update(&rq->cfs, p, task_sleep); hrtick_update(rq); } @@ -6067,7 +6081,7 @@ /* * Scan the local SMT mask for idle CPUs. */ -static int select_idle_smt(struct task_struct *p, int target) +static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int target) { int cpu; @@ -6075,7 +6089,8 @@ return -1; for_each_cpu(cpu, cpu_smt_mask(target)) { - if (!cpumask_test_cpu(cpu, p->cpus_ptr)) + if (!cpumask_test_cpu(cpu, p->cpus_ptr) || + !cpumask_test_cpu(cpu, sched_domain_span(sd))) continue; if (available_idle_cpu(cpu) || sched_idle_cpu(cpu)) return cpu; @@ -6091,7 +6106,7 @@ return -1; } -static inline int select_idle_smt(struct task_struct *p, int target) +static inline int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int target) { return -1; } @@ -6266,7 +6281,7 @@ if ((unsigned)i < nr_cpumask_bits) return i; - i = select_idle_smt(p, target); + i = select_idle_smt(p, sd, target); if ((unsigned)i < nr_cpumask_bits) return i; @@ -6586,7 +6601,8 @@ util = cpu_util_next(cpu, p, cpu); cpu_cap = capacity_of(cpu); - spare_cap = cpu_cap - util; + spare_cap = cpu_cap; + lsub_positive(&spare_cap, util); /* * Skip CPUs that cannot satisfy the capacity request. @@ -8943,7 +8959,7 @@ } } -static inline long adjust_numa_imbalance(int imbalance, int src_nr_running) +static inline long adjust_numa_imbalance(int imbalance, int nr_running) { unsigned int imbalance_min; @@ -8952,7 +8968,7 @@ * tasks that remain local when the source domain is almost idle. */ imbalance_min = 2; - if (src_nr_running <= imbalance_min) + if (nr_running <= imbalance_min) return 0; return imbalance; @@ -10027,7 +10043,12 @@ { int ilb_cpu; - nohz.next_balance++; + /* + * Increase nohz.next_balance only when if full ilb is triggered but + * not if we only update stats. + */ + if (flags & NOHZ_BALANCE_KICK) + nohz.next_balance = jiffies+1; ilb_cpu = find_new_ilb(); @@ -10348,6 +10369,14 @@ } } + /* + * next_balance will be updated only when there is a need. + * When the CPU is attached to null domain for ex, it will not be + * updated. + */ + if (likely(update_next_balance)) + nohz.next_balance = next_balance; + /* Newly idle CPU doesn't need an update */ if (idle != CPU_NEWLY_IDLE) { update_blocked_averages(this_cpu); @@ -10368,14 +10397,6 @@ if (has_blocked_load) WRITE_ONCE(nohz.has_blocked, 1); - /* - * next_balance will be updated only when there is a need. - * When the CPU is attached to null domain for ex, it will not be - * updated. - */ - if (likely(update_next_balance)) - nohz.next_balance = next_balance; - return ret; } --- linux-5.8.0.orig/kernel/sched/idle.c +++ linux-5.8.0/kernel/sched/idle.c @@ -262,6 +262,7 @@ } arch_cpu_idle_enter(); + rcu_nocb_flush_deferred_wakeup(); /* * In poll mode we reenable interrupts and spin. Also if we --- linux-5.8.0.orig/kernel/sched/membarrier.c +++ linux-5.8.0/kernel/sched/membarrier.c @@ -30,6 +30,23 @@ smp_mb(); /* IPIs should be serializing but paranoid. */ } +static void ipi_sync_core(void *info) +{ + /* + * The smp_mb() in membarrier after all the IPIs is supposed to + * ensure that memory on remote CPUs that occur before the IPI + * become visible to membarrier()'s caller -- see scenario B in + * the big comment at the top of this file. + * + * A sync_core() would provide this guarantee, but + * sync_core_before_usermode() might end up being deferred until + * after membarrier()'s smp_mb(). + */ + smp_mb(); /* IPIs should be serializing but paranoid. */ + + sync_core_before_usermode(); +} + static void ipi_sync_rq_state(void *info) { struct mm_struct *mm = (struct mm_struct *) info; @@ -134,6 +151,7 @@ int cpu; cpumask_var_t tmpmask; struct mm_struct *mm = current->mm; + smp_call_func_t ipi_func = ipi_mb; if (flags & MEMBARRIER_FLAG_SYNC_CORE) { if (!IS_ENABLED(CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE)) @@ -141,6 +159,7 @@ if (!(atomic_read(&mm->membarrier_state) & MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY)) return -EPERM; + ipi_func = ipi_sync_core; } else { if (!(atomic_read(&mm->membarrier_state) & MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY)) @@ -181,7 +200,7 @@ rcu_read_unlock(); preempt_disable(); - smp_call_function_many(tmpmask, ipi_mb, NULL, 1); + smp_call_function_many(tmpmask, ipi_func, NULL, 1); preempt_enable(); free_cpumask_var(tmpmask); @@ -246,9 +265,7 @@ } rcu_read_unlock(); - preempt_disable(); - smp_call_function_many(tmpmask, ipi_sync_rq_state, mm, 1); - preempt_enable(); + on_each_cpu_mask(tmpmask, ipi_sync_rq_state, mm, true); free_cpumask_var(tmpmask); cpus_read_unlock(); --- linux-5.8.0.orig/kernel/sched/sched.h +++ linux-5.8.0/kernel/sched/sched.h @@ -253,30 +253,6 @@ void __dl_clear_params(struct task_struct *p); -/* - * To keep the bandwidth of -deadline tasks and groups under control - * we need some place where: - * - store the maximum -deadline bandwidth of the system (the group); - * - cache the fraction of that bandwidth that is currently allocated. - * - * This is all done in the data structure below. It is similar to the - * one used for RT-throttling (rt_bandwidth), with the main difference - * that, since here we are only interested in admission control, we - * do not decrease any runtime while the group "executes", neither we - * need a timer to replenish it. - * - * With respect to SMP, the bandwidth is given on a per-CPU basis, - * meaning that: - * - dl_bw (< 100%) is the bandwidth of the system (group) on each CPU; - * - dl_total_bw array contains, in the i-eth element, the currently - * allocated bandwidth on the i-eth CPU. - * Moreover, groups consume bandwidth on each CPU, while tasks only - * consume bandwidth on the CPU they're running on. - * Finally, dl_total_bw_cpu is used to cache the index of dl_total_bw - * that will be shown the next time the proc or cgroup controls will - * be red. It on its turn can be changed by writing on its own - * control. - */ struct dl_bandwidth { raw_spinlock_t dl_runtime_lock; u64 dl_runtime; @@ -288,6 +264,24 @@ return sysctl_sched_rt_runtime >= 0; } +/* + * To keep the bandwidth of -deadline tasks under control + * we need some place where: + * - store the maximum -deadline bandwidth of each cpu; + * - cache the fraction of bandwidth that is currently allocated in + * each root domain; + * + * This is all done in the data structure below. It is similar to the + * one used for RT-throttling (rt_bandwidth), with the main difference + * that, since here we are only interested in admission control, we + * do not decrease any runtime while the group "executes", neither we + * need a timer to replenish it. + * + * With respect to SMP, bandwidth is given on a per root domain basis, + * meaning that: + * - bw (< 100%) is the deadline bandwidth of each CPU; + * - total_bw is the currently allocated bandwidth in each root domain; + */ struct dl_bw { raw_spinlock_t lock; u64 bw; @@ -862,6 +856,8 @@ unsigned int value; struct uclamp_bucket bucket[UCLAMP_BUCKETS]; }; + +DECLARE_STATIC_KEY_FALSE(sched_uclamp_used); #endif /* CONFIG_UCLAMP_TASK */ /* @@ -1003,6 +999,7 @@ call_single_data_t hrtick_csd; #endif struct hrtimer hrtick_timer; + ktime_t hrtick_time; #endif #ifdef CONFIG_SCHEDSTATS @@ -1598,7 +1595,7 @@ #undef SCHED_FEAT -#if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_JUMP_LABEL) +#ifdef CONFIG_SCHED_DEBUG /* * To support run-time toggling of sched features, all the translation units @@ -1606,6 +1603,7 @@ */ extern const_debug unsigned int sysctl_sched_features; +#ifdef CONFIG_JUMP_LABEL #define SCHED_FEAT(name, enabled) \ static __always_inline bool static_branch_##name(struct static_key *key) \ { \ @@ -1618,7 +1616,13 @@ extern struct static_key sched_feat_keys[__SCHED_FEAT_NR]; #define sched_feat(x) (static_branch_##x(&sched_feat_keys[__SCHED_FEAT_##x])) -#else /* !(SCHED_DEBUG && CONFIG_JUMP_LABEL) */ +#else /* !CONFIG_JUMP_LABEL */ + +#define sched_feat(x) (sysctl_sched_features & (1UL << __SCHED_FEAT_##x)) + +#endif /* CONFIG_JUMP_LABEL */ + +#else /* !SCHED_DEBUG */ /* * Each translation unit has its own copy of sysctl_sched_features to allow @@ -1634,7 +1638,7 @@ #define sched_feat(x) !!(sysctl_sched_features & (1UL << __SCHED_FEAT_##x)) -#endif /* SCHED_DEBUG && CONFIG_JUMP_LABEL */ +#endif /* SCHED_DEBUG */ extern struct static_key_false sched_numa_balancing; extern struct static_key_false sched_schedstats; @@ -2349,12 +2353,35 @@ #ifdef CONFIG_UCLAMP_TASK unsigned long uclamp_eff_value(struct task_struct *p, enum uclamp_id clamp_id); +/** + * uclamp_rq_util_with - clamp @util with @rq and @p effective uclamp values. + * @rq: The rq to clamp against. Must not be NULL. + * @util: The util value to clamp. + * @p: The task to clamp against. Can be NULL if you want to clamp + * against @rq only. + * + * Clamps the passed @util to the max(@rq, @p) effective uclamp values. + * + * If sched_uclamp_used static key is disabled, then just return the util + * without any clamping since uclamp aggregation at the rq level in the fast + * path is disabled, rendering this operation a NOP. + * + * Use uclamp_eff_value() if you don't care about uclamp values at rq level. It + * will return the correct effective uclamp value of the task even if the + * static key is disabled. + */ static __always_inline unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util, struct task_struct *p) { - unsigned long min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value); - unsigned long max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value); + unsigned long min_util; + unsigned long max_util; + + if (!static_branch_likely(&sched_uclamp_used)) + return util; + + min_util = READ_ONCE(rq->uclamp[UCLAMP_MIN].value); + max_util = READ_ONCE(rq->uclamp[UCLAMP_MAX].value); if (p) { min_util = max(min_util, uclamp_eff_value(p, UCLAMP_MIN)); @@ -2371,6 +2398,19 @@ return clamp(util, min_util, max_util); } + +/* + * When uclamp is compiled in, the aggregation at rq level is 'turned off' + * by default in the fast path and only gets turned on once userspace performs + * an operation that requires it. + * + * Returns true if userspace opted-in to use uclamp and aggregation at rq level + * hence is active. + */ +static inline bool uclamp_is_used(void) +{ + return static_branch_likely(&sched_uclamp_used); +} #else /* CONFIG_UCLAMP_TASK */ static inline unsigned long uclamp_rq_util_with(struct rq *rq, unsigned long util, @@ -2378,6 +2418,11 @@ { return util; } + +static inline bool uclamp_is_used(void) +{ + return false; +} #endif /* CONFIG_UCLAMP_TASK */ #ifdef arch_scale_freq_capacity --- linux-5.8.0.orig/kernel/sched/topology.c +++ linux-5.8.0/kernel/sched/topology.c @@ -1328,7 +1328,7 @@ sd_flags = (*tl->sd_flags)(); if (WARN_ONCE(sd_flags & ~TOPOLOGY_SD_FLAGS, "wrong sd_flags in topology description\n")) - sd_flags &= ~TOPOLOGY_SD_FLAGS; + sd_flags &= TOPOLOGY_SD_FLAGS; /* Apply detected topology flags */ sd_flags |= dflags; --- linux-5.8.0.orig/kernel/seccomp.c +++ linux-5.8.0/kernel/seccomp.c @@ -37,11 +37,19 @@ #include #include #include -#include +#include #include #include #include +/* + * When SECCOMP_IOCTL_NOTIF_ID_VALID was first introduced, it had the + * wrong direction flag in the ioctl number. This is the broken one, + * which the kernel needs to keep supporting until all userspaces stop + * using the wrong command number. + */ +#define SECCOMP_IOCTL_NOTIF_ID_VALID_WRONG_DIR SECCOMP_IOR(2, __u64) + enum notify_state { SECCOMP_NOTIFY_INIT, SECCOMP_NOTIFY_SENT, @@ -444,8 +452,7 @@ * behavior of privileged children. */ if (!task_no_new_privs(current) && - security_capable(current_cred(), current_user_ns(), - CAP_SYS_ADMIN, CAP_OPT_NOAUDIT) != 0) + !ns_capable_noaudit(current_user_ns(), CAP_SYS_ADMIN)) return ERR_PTR(-EACCES); /* Allocate a new seccomp_filter */ @@ -927,6 +934,8 @@ const bool recheck_after_trace) { BUG(); + + return -1; } #endif @@ -989,13 +998,12 @@ } #ifdef CONFIG_SECCOMP_FILTER -static int seccomp_notify_release(struct inode *inode, struct file *file) +static void seccomp_notify_detach(struct seccomp_filter *filter) { - struct seccomp_filter *filter = file->private_data; struct seccomp_knotif *knotif; if (!filter) - return 0; + return; mutex_lock(&filter->notify_lock); @@ -1017,6 +1025,13 @@ kfree(filter->notif); filter->notif = NULL; mutex_unlock(&filter->notify_lock); +} + +static int seccomp_notify_release(struct inode *inode, struct file *file) +{ + struct seccomp_filter *filter = file->private_data; + + seccomp_notify_detach(filter); __put_seccomp_filter(filter); return 0; } @@ -1186,6 +1201,7 @@ return seccomp_notify_recv(filter, buf); case SECCOMP_IOCTL_NOTIF_SEND: return seccomp_notify_send(filter, buf); + case SECCOMP_IOCTL_NOTIF_ID_VALID_WRONG_DIR: case SECCOMP_IOCTL_NOTIF_ID_VALID: return seccomp_notify_id_valid(filter, buf); default: @@ -1228,13 +1244,7 @@ static struct file *init_listener(struct seccomp_filter *filter) { - struct file *ret = ERR_PTR(-EBUSY); - struct seccomp_filter *cur; - - for (cur = current->seccomp.filter; cur; cur = cur->prev) { - if (cur->notif) - goto out; - } + struct file *ret; ret = ERR_PTR(-ENOMEM); filter->notif = kzalloc(sizeof(*(filter->notif)), GFP_KERNEL); @@ -1261,6 +1271,31 @@ return ret; } +/* + * Does @new_child have a listener while an ancestor also has a listener? + * If so, we'll want to reject this filter. + * This only has to be tested for the current process, even in the TSYNC case, + * because TSYNC installs @child with the same parent on all threads. + * Note that @new_child is not hooked up to its parent at this point yet, so + * we use current->seccomp.filter. + */ +static bool has_duplicate_listener(struct seccomp_filter *new_child) +{ + struct seccomp_filter *cur; + + /* must be protected against concurrent TSYNC */ + lockdep_assert_held(¤t->sighand->siglock); + + if (!new_child->notif) + return false; + for (cur = current->seccomp.filter; cur; cur = cur->prev) { + if (cur->notif) + return true; + } + + return false; +} + /** * seccomp_set_mode_filter: internal function for setting seccomp filter * @flags: flags to change filter behavior @@ -1332,6 +1367,11 @@ if (!seccomp_may_assign_mode(seccomp_mode)) goto out; + if (has_duplicate_listener(prepared)) { + ret = -EBUSY; + goto out; + } + ret = seccomp_attach_filter(flags, prepared); if (ret) goto out; @@ -1349,6 +1389,7 @@ listener_f->private_data = NULL; fput(listener_f); put_unused_fd(listener); + seccomp_notify_detach(prepared); } else { fd_install(listener, listener_f); ret = listener; --- linux-5.8.0.orig/kernel/signal.c +++ linux-5.8.0/kernel/signal.c @@ -391,16 +391,17 @@ void task_join_group_stop(struct task_struct *task) { + unsigned long mask = current->jobctl & JOBCTL_STOP_SIGMASK; + struct signal_struct *sig = current->signal; + + if (sig->group_stop_count) { + sig->group_stop_count++; + mask |= JOBCTL_STOP_CONSUME; + } else if (!(sig->flags & SIGNAL_STOP_STOPPED)) + return; + /* Have the new thread join an on-going signal group stop */ - unsigned long jobctl = current->jobctl; - if (jobctl & JOBCTL_STOP_PENDING) { - struct signal_struct *sig = current->signal; - unsigned long signr = jobctl & JOBCTL_STOP_SIGMASK; - unsigned long gstop = JOBCTL_STOP_PENDING | JOBCTL_STOP_CONSUME; - if (task_set_jobctl_pending(task, signr | gstop)) { - sig->group_stop_count++; - } - } + task_set_jobctl_pending(task, mask | JOBCTL_STOP_PENDING); } /* @@ -2541,7 +2542,21 @@ relock: spin_lock_irq(&sighand->siglock); - current->jobctl &= ~JOBCTL_TASK_WORK; + /* + * Make sure we can safely read ->jobctl() in task_work add. As Oleg + * states: + * + * It pairs with mb (implied by cmpxchg) before READ_ONCE. So we + * roughly have + * + * task_work_add: get_signal: + * STORE(task->task_works, new_work); STORE(task->jobctl); + * mb(); mb(); + * LOAD(task->jobctl); LOAD(task->task_works); + * + * and we can rely on STORE-MB-LOAD [ in task_work_add]. + */ + smp_store_mb(current->jobctl, current->jobctl & ~JOBCTL_TASK_WORK); if (unlikely(current->task_works)) { spin_unlock_irq(&sighand->siglock); task_work_run(); --- linux-5.8.0.orig/kernel/smp.c +++ linux-5.8.0/kernel/smp.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -323,6 +324,9 @@ local_irq_save(flags); flush_smp_call_function_queue(true); + if (local_softirq_pending()) + do_softirq(); + local_irq_restore(flags); } --- linux-5.8.0.orig/kernel/smpboot.c +++ linux-5.8.0/kernel/smpboot.c @@ -188,6 +188,7 @@ kfree(td); return PTR_ERR(tsk); } + kthread_set_per_cpu(tsk, cpu); /* * Park the thread so that it could start right on the CPU * when it is available. --- linux-5.8.0.orig/kernel/stop_machine.c +++ linux-5.8.0/kernel/stop_machine.c @@ -178,7 +178,7 @@ set_state(msdata, msdata->state + 1); } -void __weak stop_machine_yield(const struct cpumask *cpumask) +notrace void __weak stop_machine_yield(const struct cpumask *cpumask) { cpu_relax(); } --- linux-5.8.0.orig/kernel/sys.c +++ linux-5.8.0/kernel/sys.c @@ -1210,6 +1210,21 @@ DECLARE_RWSEM(uts_sem); #ifdef COMPAT_UTS_MACHINE +static char compat_uts_machine[__OLD_UTS_LEN+1] = COMPAT_UTS_MACHINE; + +static int __init parse_compat_uts_machine(char *arg) +{ + strncpy(compat_uts_machine, arg, __OLD_UTS_LEN); + compat_uts_machine[__OLD_UTS_LEN] = 0; + return 0; +} +early_param("compat_uts_machine", parse_compat_uts_machine); + +#undef COMPAT_UTS_MACHINE +#define COMPAT_UTS_MACHINE compat_uts_machine +#endif + +#ifdef COMPAT_UTS_MACHINE #define override_architecture(name) \ (personality(current->personality) == PER_LINUX32 && \ copy_to_user(name->machine, COMPAT_UTS_MACHINE, \ --- linux-5.8.0.orig/kernel/sysctl.c +++ linux-5.8.0/kernel/sysctl.c @@ -71,6 +71,7 @@ #include #include #include +#include #include "../lib/kstrtox.h" @@ -1882,6 +1883,15 @@ .proc_handler = proc_dointvec, }, #endif +#ifdef CONFIG_USER_NS + { + .procname = "unprivileged_userns_clone", + .data = &unprivileged_userns_clone, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, +#endif #ifdef CONFIG_PROC_SYSCTL { .procname = "tainted", @@ -2914,7 +2924,7 @@ .data = &block_dump, .maxlen = sizeof(block_dump), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_minmax, .extra1 = SYSCTL_ZERO, }, { @@ -2922,7 +2932,7 @@ .data = &sysctl_vfs_cache_pressure, .maxlen = sizeof(sysctl_vfs_cache_pressure), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_minmax, .extra1 = SYSCTL_ZERO, }, #if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \ @@ -2932,7 +2942,7 @@ .data = &sysctl_legacy_va_layout, .maxlen = sizeof(sysctl_legacy_va_layout), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_minmax, .extra1 = SYSCTL_ZERO, }, #endif @@ -2942,7 +2952,7 @@ .data = &node_reclaim_mode, .maxlen = sizeof(node_reclaim_mode), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_minmax, .extra1 = SYSCTL_ZERO, }, { --- linux-5.8.0.orig/kernel/task_work.c +++ linux-5.8.0/kernel/task_work.c @@ -9,23 +9,28 @@ * task_work_add - ask the @task to execute @work->func() * @task: the task which should run the callback * @work: the callback to run - * @notify: send the notification if true + * @notify: how to notify the targeted task * - * Queue @work for task_work_run() below and notify the @task if @notify. - * Fails if the @task is exiting/exited and thus it can't process this @work. - * Otherwise @work->func() will be called when the @task returns from kernel - * mode or exits. + * Queue @work for task_work_run() below and notify the @task if @notify + * is @TWA_RESUME or @TWA_SIGNAL. @TWA_SIGNAL works like signals, in that the + * it will interrupt the targeted task and run the task_work. @TWA_RESUME + * work is run only when the task exits the kernel and returns to user mode, + * or before entering guest mode. Fails if the @task is exiting/exited and thus + * it can't process this @work. Otherwise @work->func() will be called when the + * @task goes through one of the aforementioned transitions, or exits. + * + * If the targeted task is exiting, then an error is returned and the work item + * is not queued. It's up to the caller to arrange for an alternative mechanism + * in that case. * - * This is like the signal handler which runs in kernel mode, but it doesn't - * try to wake up the @task. - * - * Note: there is no ordering guarantee on works queued here. + * Note: there is no ordering guarantee on works queued here. The task_work + * list is LIFO. * * RETURNS: * 0 if succeeds or -ESRCH. */ -int -task_work_add(struct task_struct *task, struct callback_head *work, int notify) +int task_work_add(struct task_struct *task, struct callback_head *work, + enum task_work_notify_mode notify) { struct callback_head *head; unsigned long flags; @@ -38,20 +43,32 @@ } while (cmpxchg(&task->task_works, head, work) != head); switch (notify) { + case TWA_NONE: + break; case TWA_RESUME: set_notify_resume(task); break; case TWA_SIGNAL: - if (lock_task_sighand(task, &flags)) { + /* + * Only grab the sighand lock if we don't already have some + * task_work pending. This pairs with the smp_store_mb() + * in get_signal(), see comment there. + */ + if (!(READ_ONCE(task->jobctl) & JOBCTL_TASK_WORK) && + lock_task_sighand(task, &flags)) { task->jobctl |= JOBCTL_TASK_WORK; signal_wake_up(task, 0); unlock_task_sighand(task, &flags); } break; + default: + WARN_ON_ONCE(1); + break; } return 0; } +EXPORT_SYMBOL(task_work_add); /** * task_work_cancel - cancel a pending work added by task_work_add() @@ -138,3 +155,4 @@ } while (work); } } +EXPORT_SYMBOL_GPL(task_work_run); --- linux-5.8.0.orig/kernel/time/alarmtimer.c +++ linux-5.8.0/kernel/time/alarmtimer.c @@ -848,9 +848,9 @@ if (flags == TIMER_ABSTIME) return -ERESTARTNOHAND; - restart->fn = alarm_timer_nsleep_restart; restart->nanosleep.clockid = type; restart->nanosleep.expires = exp; + set_restart_fn(restart, alarm_timer_nsleep_restart); return ret; } --- linux-5.8.0.orig/kernel/time/hrtimer.c +++ linux-5.8.0/kernel/time/hrtimer.c @@ -547,8 +547,11 @@ } /* - * Recomputes cpu_base::*next_timer and returns the earliest expires_next but - * does not set cpu_base::*expires_next, that is done by hrtimer_reprogram. + * Recomputes cpu_base::*next_timer and returns the earliest expires_next + * but does not set cpu_base::*expires_next, that is done by + * hrtimer[_force]_reprogram and hrtimer_interrupt only. When updating + * cpu_base::*expires_next right away, reprogramming logic would no longer + * work. * * When a softirq is pending, we can ignore the HRTIMER_ACTIVE_SOFT bases, * those timers will get run whenever the softirq gets handled, at the end of @@ -589,6 +592,37 @@ return expires_next; } +static ktime_t hrtimer_update_next_event(struct hrtimer_cpu_base *cpu_base) +{ + ktime_t expires_next, soft = KTIME_MAX; + + /* + * If the soft interrupt has already been activated, ignore the + * soft bases. They will be handled in the already raised soft + * interrupt. + */ + if (!cpu_base->softirq_activated) { + soft = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_SOFT); + /* + * Update the soft expiry time. clock_settime() might have + * affected it. + */ + cpu_base->softirq_expires_next = soft; + } + + expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_HARD); + /* + * If a softirq timer is expiring first, update cpu_base->next_timer + * and program the hardware with the soft expiry time. + */ + if (expires_next > soft) { + cpu_base->next_timer = cpu_base->softirq_next_timer; + expires_next = soft; + } + + return expires_next; +} + static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base) { ktime_t *offs_real = &base->clock_base[HRTIMER_BASE_REALTIME].offset; @@ -629,23 +663,7 @@ { ktime_t expires_next; - /* - * Find the current next expiration time. - */ - expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_ALL); - - if (cpu_base->next_timer && cpu_base->next_timer->is_soft) { - /* - * When the softirq is activated, hrtimer has to be - * programmed with the first hard hrtimer because soft - * timer interrupt could occur too late. - */ - if (cpu_base->softirq_activated) - expires_next = __hrtimer_get_next_event(cpu_base, - HRTIMER_ACTIVE_HARD); - else - cpu_base->softirq_expires_next = expires_next; - } + expires_next = hrtimer_update_next_event(cpu_base); if (skip_equal && expires_next == cpu_base->expires_next) return; @@ -1645,8 +1663,8 @@ __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); - /* Reevaluate the clock bases for the next expiry */ - expires_next = __hrtimer_get_next_event(cpu_base, HRTIMER_ACTIVE_ALL); + /* Reevaluate the clock bases for the [soft] next expiry */ + expires_next = hrtimer_update_next_event(cpu_base); /* * Store the new expiry value so the migration code can verify * against it. @@ -1940,9 +1958,9 @@ } restart = ¤t->restart_block; - restart->fn = hrtimer_nanosleep_restart; restart->nanosleep.clockid = t.timer.base->clockid; restart->nanosleep.expires = hrtimer_get_expires_tv64(&t.timer); + set_restart_fn(restart, hrtimer_nanosleep_restart); out: destroy_hrtimer_on_stack(&t.timer); return ret; --- linux-5.8.0.orig/kernel/time/itimer.c +++ linux-5.8.0/kernel/time/itimer.c @@ -172,10 +172,6 @@ u64 oval, nval, ointerval, ninterval; struct cpu_itimer *it = &tsk->signal->it[clock_id]; - /* - * Use the to_ktime conversion because that clamps the maximum - * value to KTIME_MAX and avoid multiplication overflows. - */ nval = timespec64_to_ns(&value->it_value); ninterval = timespec64_to_ns(&value->it_interval); --- linux-5.8.0.orig/kernel/time/posix-cpu-timers.c +++ linux-5.8.0/kernel/time/posix-cpu-timers.c @@ -1314,8 +1314,8 @@ if (flags & TIMER_ABSTIME) return -ERESTARTNOHAND; - restart_block->fn = posix_cpu_nsleep_restart; restart_block->nanosleep.clockid = which_clock; + set_restart_fn(restart_block, posix_cpu_nsleep_restart); } return error; } --- linux-5.8.0.orig/kernel/time/tick-sched.c +++ linux-5.8.0/kernel/time/tick-sched.c @@ -351,16 +351,24 @@ EXPORT_SYMBOL_GPL(tick_nohz_dep_clear_cpu); /* - * Set a per-task tick dependency. Posix CPU timers need this in order to elapse - * per task timers. + * Set a per-task tick dependency. RCU need this. Also posix CPU timers + * in order to elapse per task timers. */ void tick_nohz_dep_set_task(struct task_struct *tsk, enum tick_dep_bits bit) { - /* - * We could optimize this with just kicking the target running the task - * if that noise matters for nohz full users. - */ - tick_nohz_dep_set_all(&tsk->tick_dep_mask, bit); + if (!atomic_fetch_or(BIT(bit), &tsk->tick_dep_mask)) { + if (tsk == current) { + preempt_disable(); + tick_nohz_full_kick(); + preempt_enable(); + } else { + /* + * Some future tick_nohz_full_kick_task() + * should optimize this. + */ + tick_nohz_full_kick_all(); + } + } } EXPORT_SYMBOL_GPL(tick_nohz_dep_set_task); @@ -933,13 +941,6 @@ */ if (tick_do_timer_cpu == cpu) return false; - /* - * Boot safety: make sure the timekeeping duty has been - * assigned before entering dyntick-idle mode, - * tick_do_timer_cpu is TICK_DO_TIMER_BOOT - */ - if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_BOOT)) - return false; /* Should not happen for nohz-full */ if (WARN_ON_ONCE(tick_do_timer_cpu == TICK_DO_TIMER_NONE)) --- linux-5.8.0.orig/kernel/time/timer.c +++ linux-5.8.0/kernel/time/timer.c @@ -1743,13 +1743,6 @@ scheduler_tick(); if (IS_ENABLED(CONFIG_POSIX_TIMERS)) run_posix_cpu_timers(); - - /* The current CPU might make use of net randoms without receiving IRQs - * to renew them often enough. Let's update the net_rand_state from a - * non-constant value that's not affine to the number of calls to make - * sure it's updated when there's some activity (we don't care in idle). - */ - this_cpu_add(net_rand_state.s1, rol32(jiffies, 24) + user_tick); } /** --- linux-5.8.0.orig/kernel/trace/Kconfig +++ linux-5.8.0/kernel/trace/Kconfig @@ -202,7 +202,7 @@ config DYNAMIC_FTRACE_WITH_DIRECT_CALLS def_bool y - depends on DYNAMIC_FTRACE + depends on DYNAMIC_FTRACE_WITH_REGS depends on HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS config FUNCTION_PROFILER @@ -531,7 +531,7 @@ config KPROBE_EVENTS_ON_NOTRACE bool "Do NOT protect notrace function from kprobe events" depends on KPROBE_EVENTS - depends on KPROBES_ON_FTRACE + depends on DYNAMIC_FTRACE default n help This is only for the developers who want to debug ftrace itself --- linux-5.8.0.orig/kernel/trace/blktrace.c +++ linux-5.8.0/kernel/trace/blktrace.c @@ -522,12 +522,32 @@ if (!bt->msg_data) goto err; - ret = -ENOENT; - - dir = debugfs_lookup(buts->name, blk_debugfs_root); - if (!dir) +#ifdef CONFIG_BLK_DEBUG_FS + /* + * When tracing whole make_request drivers (multiqueue) block devices, + * reuse the existing debugfs directory created by the block layer on + * init. For request-based block devices, all partitions block devices, + * and scsi-generic block devices we create a temporary new debugfs + * directory that will be removed once the trace ends. + */ + if (queue_is_mq(q) && bdev && bdev == bdev->bd_contains) + dir = q->debugfs_dir; + else +#endif bt->dir = dir = debugfs_create_dir(buts->name, blk_debugfs_root); + /* + * As blktrace relies on debugfs for its interface the debugfs directory + * is required, contrary to the usual mantra of not checking for debugfs + * files or directories. + */ + if (IS_ERR_OR_NULL(dir)) { + pr_warn("debugfs_dir not present for %s so skipping\n", + buts->name); + ret = -ENOENT; + goto err; + } + bt->dev = dev; atomic_set(&bt->dropped, 0); INIT_LIST_HEAD(&bt->running_list); @@ -563,8 +583,6 @@ ret = 0; err: - if (dir && !bt->dir) - dput(dir); if (ret) blk_trace_free(bt); return ret; --- linux-5.8.0.orig/kernel/trace/bpf_trace.c +++ linux-5.8.0/kernel/trace/bpf_trace.c @@ -80,9 +80,6 @@ { unsigned int ret; - if (in_nmi()) /* not supported yet */ - return 1; - cant_sleep(); if (unlikely(__this_cpu_inc_return(bpf_prog_active) != 1)) { @@ -168,6 +165,16 @@ { int ret; + /* + * NB: We rely on strncpy_from_user() not copying junk past the NUL + * terminator into `dst`. + * + * strncpy_from_user() does long-sized strides in the fast path. If the + * strncpy does not mask out the bytes after the NUL in `unsafe_ptr`, + * then there could be junk after the NUL in `dst`. If user takes `dst` + * and keys a hash map with it, then semantically identical strings can + * occupy multiple entries in the map. + */ ret = strncpy_from_user_nofault(dst, unsafe_ptr, size); if (unlikely(ret < 0)) memset(dst, 0, size); @@ -1815,10 +1822,12 @@ void bpf_put_raw_tracepoint(struct bpf_raw_event_map *btp) { - struct module *mod = __module_address((unsigned long)btp); + struct module *mod; - if (mod) - module_put(mod); + preempt_disable(); + mod = __module_address((unsigned long)btp); + module_put(mod); + preempt_enable(); } static __always_inline --- linux-5.8.0.orig/kernel/trace/fgraph.c +++ linux-5.8.0/kernel/trace/fgraph.c @@ -395,7 +395,6 @@ } if (t->ret_stack == NULL) { - atomic_set(&t->tracing_graph_pause, 0); atomic_set(&t->trace_overrun, 0); t->curr_ret_stack = -1; t->curr_ret_depth = -1; @@ -490,7 +489,6 @@ static void graph_init_task(struct task_struct *t, struct ftrace_ret_stack *ret_stack) { - atomic_set(&t->tracing_graph_pause, 0); atomic_set(&t->trace_overrun, 0); t->ftrace_timestamp = 0; /* make curr_ret_stack visible before we add the ret_stack */ --- linux-5.8.0.orig/kernel/trace/ftrace.c +++ linux-5.8.0/kernel/trace/ftrace.c @@ -139,9 +139,6 @@ #endif } -#define FTRACE_PID_IGNORE -1 -#define FTRACE_PID_TRACE -2 - static void ftrace_pid_func(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct pt_regs *regs) { @@ -1632,6 +1629,8 @@ static struct ftrace_ops * ftrace_find_tramp_ops_any(struct dyn_ftrace *rec); static struct ftrace_ops * +ftrace_find_tramp_ops_any_other(struct dyn_ftrace *rec, struct ftrace_ops *op_exclude); +static struct ftrace_ops * ftrace_find_tramp_ops_next(struct dyn_ftrace *rec, struct ftrace_ops *ops); static bool __ftrace_hash_rec_update(struct ftrace_ops *ops, @@ -1781,7 +1780,7 @@ * to it. */ if (ftrace_rec_count(rec) == 1 && - ftrace_find_tramp_ops_any(rec)) + ftrace_find_tramp_ops_any_other(rec, ops)) rec->flags |= FTRACE_FL_TRAMP; else rec->flags &= ~FTRACE_FL_TRAMP; @@ -2248,6 +2247,24 @@ } static struct ftrace_ops * +ftrace_find_tramp_ops_any_other(struct dyn_ftrace *rec, struct ftrace_ops *op_exclude) +{ + struct ftrace_ops *op; + unsigned long ip = rec->ip; + + do_for_each_ftrace_op(op, ftrace_ops_list) { + + if (op == op_exclude || !op->trampoline) + continue; + + if (hash_contains_ip(ip, op->func_hash)) + return op; + } while_for_each_ftrace_op(op); + + return NULL; +} + +static struct ftrace_ops * ftrace_find_tramp_ops_next(struct dyn_ftrace *rec, struct ftrace_ops *op) { @@ -4971,6 +4988,20 @@ return NULL; } +static struct ftrace_direct_func *ftrace_alloc_direct_func(unsigned long addr) +{ + struct ftrace_direct_func *direct; + + direct = kmalloc(sizeof(*direct), GFP_KERNEL); + if (!direct) + return NULL; + direct->addr = addr; + direct->count = 0; + list_add_rcu(&direct->next, &ftrace_direct_funcs); + ftrace_direct_func_count++; + return direct; +} + /** * register_ftrace_direct - Call a custom trampoline directly * @ip: The address of the nop at the beginning of a function @@ -5046,15 +5077,11 @@ direct = ftrace_find_direct_func(addr); if (!direct) { - direct = kmalloc(sizeof(*direct), GFP_KERNEL); + direct = ftrace_alloc_direct_func(addr); if (!direct) { kfree(entry); goto out_unlock; } - direct->addr = addr; - direct->count = 0; - list_add_rcu(&direct->next, &ftrace_direct_funcs); - ftrace_direct_func_count++; } entry->ip = ip; @@ -5255,6 +5282,7 @@ int modify_ftrace_direct(unsigned long ip, unsigned long old_addr, unsigned long new_addr) { + struct ftrace_direct_func *direct, *new_direct = NULL; struct ftrace_func_entry *entry; struct dyn_ftrace *rec; int ret = -ENODEV; @@ -5270,6 +5298,20 @@ if (entry->direct != old_addr) goto out_unlock; + direct = ftrace_find_direct_func(old_addr); + if (WARN_ON(!direct)) + goto out_unlock; + if (direct->count > 1) { + ret = -ENOMEM; + new_direct = ftrace_alloc_direct_func(new_addr); + if (!new_direct) + goto out_unlock; + direct->count--; + new_direct->count++; + } else { + direct->addr = new_addr; + } + /* * If there's no other ftrace callback on the rec->ip location, * then it can be changed directly by the architecture. @@ -5283,6 +5325,14 @@ ret = 0; } + if (unlikely(ret && new_direct)) { + direct->count++; + list_del_rcu(&new_direct->next); + synchronize_rcu_tasks(); + kfree(new_direct); + ftrace_direct_func_count--; + } + out_unlock: mutex_unlock(&ftrace_lock); mutex_unlock(&direct_mutex); @@ -6190,8 +6240,11 @@ int cnt = 0; for (ops = ftrace_ops_list; ops != &ftrace_list_end; ops = ops->next) { - if (ops_references_rec(ops, rec)) - cnt++; + if (ops_references_rec(ops, rec)) { + cnt++; + if (ops->flags & FTRACE_OPS_FL_SAVE_REGS) + rec->flags |= FTRACE_FL_REGS; + } } return cnt; @@ -6370,8 +6423,8 @@ if (ftrace_start_up) cnt += referenced_filters(rec); - /* This clears FTRACE_FL_DISABLED */ - rec->flags = cnt; + rec->flags &= ~FTRACE_FL_DISABLED; + rec->flags += cnt; if (ftrace_start_up && cnt) { int failed = __ftrace_replace_code(rec, 1); @@ -6877,16 +6930,14 @@ { int bit; - if ((op->flags & FTRACE_OPS_FL_RCU) && !rcu_is_watching()) - return; - bit = trace_test_and_set_recursion(TRACE_LIST_START, TRACE_LIST_MAX); if (bit < 0) return; preempt_disable_notrace(); - op->func(ip, parent_ip, op, regs); + if (!(op->flags & FTRACE_OPS_FL_RCU) || rcu_is_watching()) + op->func(ip, parent_ip, op, regs); preempt_enable_notrace(); trace_clear_recursion(bit); @@ -6969,12 +7020,12 @@ if (enable) { register_trace_sched_process_fork(ftrace_pid_follow_sched_process_fork, tr); - register_trace_sched_process_exit(ftrace_pid_follow_sched_process_exit, + register_trace_sched_process_free(ftrace_pid_follow_sched_process_exit, tr); } else { unregister_trace_sched_process_fork(ftrace_pid_follow_sched_process_fork, tr); - unregister_trace_sched_process_exit(ftrace_pid_follow_sched_process_exit, + unregister_trace_sched_process_free(ftrace_pid_follow_sched_process_exit, tr); } } --- linux-5.8.0.orig/kernel/trace/ring_buffer.c +++ linux-5.8.0/kernel/trace/ring_buffer.c @@ -129,7 +129,16 @@ #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 */ -#define RB_ALIGN_DATA __aligned(RB_ALIGNMENT) + +#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 @@ -420,14 +429,16 @@ /* * Used for which event context the event is in. - * NMI = 0 - * IRQ = 1 - * SOFTIRQ = 2 - * NORMAL = 3 + * TRANSITION = 0 + * NMI = 1 + * IRQ = 2 + * SOFTIRQ = 3 + * NORMAL = 4 * * See trace_recursive_lock() comment below for more details. */ enum { + RB_CTX_TRANSITION, RB_CTX_NMI, RB_CTX_IRQ, RB_CTX_SOFTIRQ, @@ -1720,18 +1731,18 @@ { struct ring_buffer_per_cpu *cpu_buffer; unsigned long nr_pages; - int cpu, err = 0; + int cpu, err; /* * Always succeed at resizing a non-existent buffer: */ if (!buffer) - return size; + return 0; /* Make sure the requested buffer exists */ if (cpu_id != RING_BUFFER_ALL_CPUS && !cpumask_test_cpu(cpu_id, buffer->cpumask)) - return size; + return 0; nr_pages = DIV_ROUND_UP(size, BUF_PAGE_SIZE); @@ -1887,7 +1898,7 @@ } mutex_unlock(&buffer->mutex); - return size; + return 0; out_err: for_each_buffer_cpu(buffer, cpu) { @@ -2434,7 +2445,7 @@ event->time_delta = delta; length -= RB_EVNT_HDR_SIZE; - if (length > RB_MAX_SMALL_DATA) { + if (length > RB_MAX_SMALL_DATA || RB_FORCE_8BYTE_ALIGNMENT) { event->type_len = 0; event->array[0] = length; } else @@ -2449,11 +2460,11 @@ if (!length) length++; - if (length > RB_MAX_SMALL_DATA) + if (length > RB_MAX_SMALL_DATA || RB_FORCE_8BYTE_ALIGNMENT) length += sizeof(event.array[0]); length += RB_EVNT_HDR_SIZE; - length = ALIGN(length, RB_ALIGNMENT); + length = ALIGN(length, RB_ARCH_ALIGNMENT); /* * In case the time delta is larger than the 27 bits for it @@ -2729,10 +2740,10 @@ * a bit of overhead in something as critical as function tracing, * we use a bitmask trick. * - * bit 0 = NMI context - * bit 1 = IRQ context - * bit 2 = SoftIRQ context - * bit 3 = normal context. + * bit 1 = NMI context + * bit 2 = IRQ context + * bit 3 = SoftIRQ context + * bit 4 = normal context. * * This works because this is the order of contexts that can * preempt other contexts. A SoftIRQ never preempts an IRQ @@ -2755,6 +2766,30 @@ * The least significant bit can be cleared this way, and it * just so happens that it is the same bit corresponding to * the current context. + * + * Now the TRANSITION bit breaks the above slightly. The TRANSITION bit + * is set when a recursion is detected at the current context, and if + * the TRANSITION bit is already set, it will fail the recursion. + * This is needed because there's a lag between the changing of + * interrupt context and updating the preempt count. In this case, + * a false positive will be found. To handle this, one extra recursion + * is allowed, and this is done by the TRANSITION bit. If the TRANSITION + * bit is already set, then it is considered a recursion and the function + * ends. Otherwise, the TRANSITION bit is set, and that bit is returned. + * + * On the trace_recursive_unlock(), the TRANSITION bit will be the first + * to be cleared. Even if it wasn't the context that set it. That is, + * if an interrupt comes in while NORMAL bit is set and the ring buffer + * is called before preempt_count() is updated, since the check will + * be on the NORMAL bit, the TRANSITION bit will then be set. If an + * NMI then comes in, it will set the NMI bit, but when the NMI code + * does the trace_recursive_unlock() it will clear the TRANSTION bit + * and leave the NMI bit set. But this is fine, because the interrupt + * code that set the TRANSITION bit will then clear the NMI bit when it + * calls trace_recursive_unlock(). If another NMI comes in, it will + * set the TRANSITION bit and continue. + * + * Note: The TRANSITION bit only handles a single transition between context. */ static __always_inline int @@ -2770,8 +2805,16 @@ bit = pc & NMI_MASK ? RB_CTX_NMI : pc & HARDIRQ_MASK ? RB_CTX_IRQ : RB_CTX_SOFTIRQ; - if (unlikely(val & (1 << (bit + cpu_buffer->nest)))) - return 1; + if (unlikely(val & (1 << (bit + cpu_buffer->nest)))) { + /* + * It is possible that this was called by transitioning + * between interrupt context, and preempt_count() has not + * been updated yet. In this case, use the TRANSITION bit. + */ + bit = RB_CTX_TRANSITION; + if (val & (1 << (bit + cpu_buffer->nest))) + return 1; + } val |= (1 << (bit + cpu_buffer->nest)); cpu_buffer->current_context = val; @@ -2786,8 +2829,8 @@ cpu_buffer->current_context - (1 << cpu_buffer->nest); } -/* The recursive locking above uses 4 bits */ -#define NESTED_BITS 4 +/* The recursive locking above uses 5 bits */ +#define NESTED_BITS 5 /** * ring_buffer_nest_start - Allow to trace while nested --- linux-5.8.0.orig/kernel/trace/trace.c +++ linux-5.8.0/kernel/trace/trace.c @@ -68,10 +68,21 @@ static bool __read_mostly tracing_selftest_running; /* - * If a tracer is running, we do not want to run SELFTEST. + * If boot-time tracing including tracers/events via kernel cmdline + * is running, we do not want to run SELFTEST. */ bool __read_mostly tracing_selftest_disabled; +#ifdef CONFIG_FTRACE_STARTUP_TEST +void __init disable_tracing_selftest(const char *reason) +{ + if (!tracing_selftest_disabled) { + tracing_selftest_disabled = true; + pr_info("Ftrace startup test is disabled due to %s\n", reason); + } +} +#endif + /* Pipe tracepoints to printk */ struct trace_iterator *tracepoint_print_iter; int tracepoint_printk; @@ -163,7 +174,8 @@ #endif /* CONFIG_TRACE_EVAL_MAP_FILE */ int tracing_set_tracer(struct trace_array *tr, const char *buf); -static void ftrace_trace_userstack(struct trace_buffer *buffer, +static void ftrace_trace_userstack(struct trace_array *tr, + struct trace_buffer *buffer, unsigned long flags, int pc); #define MAX_TRACER_SIZE 100 @@ -1974,11 +1986,7 @@ apply_trace_boot_options(); /* disable other selftests, since this will break it. */ - tracing_selftest_disabled = true; -#ifdef CONFIG_FTRACE_STARTUP_TEST - printk(KERN_INFO "Disabling FTRACE selftests due to running tracer '%s'\n", - type->name); -#endif + disable_tracing_selftest("running a tracer"); out_unlock: return ret; @@ -2601,7 +2609,7 @@ (entry = this_cpu_read(trace_buffered_event))) { /* Try to use the per cpu buffer first */ val = this_cpu_inc_return(trace_buffered_event_cnt); - if (val == 1) { + if ((len < (PAGE_SIZE - sizeof(*entry))) && val == 1) { trace_event_setup(entry, type, flags, pc); entry->array[0] = len; return entry; @@ -2614,7 +2622,7 @@ /* * If tracing is off, but we have triggers enabled * we still need to look at the event data. Use the temp_buffer - * to store the trace event for the tigger to use. It's recusive + * to store the trace event for the trigger to use. It's recursive * safe and will not be recorded anywhere. */ if (!entry && trace_file->flags & EVENT_FILE_FL_TRIGGER_COND) { @@ -2732,7 +2740,7 @@ * two. They are not that meaningful. */ ftrace_trace_stack(tr, buffer, flags, regs ? 0 : STACK_SKIP, pc, regs); - ftrace_trace_userstack(buffer, flags, pc); + ftrace_trace_userstack(tr, buffer, flags, pc); } /* @@ -2943,7 +2951,7 @@ stackidx = __this_cpu_inc_return(ftrace_stack_reserve) - 1; /* This should never happen. If it does, yell once and skip */ - if (WARN_ON_ONCE(stackidx > FTRACE_KSTACK_NESTING)) + if (WARN_ON_ONCE(stackidx >= FTRACE_KSTACK_NESTING)) goto out; /* @@ -2967,7 +2975,8 @@ size = nr_entries * sizeof(unsigned long); event = __trace_buffer_lock_reserve(buffer, TRACE_STACK, - sizeof(*entry) + size, flags, pc); + (sizeof(*entry) - sizeof(entry->caller)) + size, + flags, pc); if (!event) goto out; entry = ring_buffer_event_data(event); @@ -3047,13 +3056,14 @@ static DEFINE_PER_CPU(int, user_stack_count); static void -ftrace_trace_userstack(struct trace_buffer *buffer, unsigned long flags, int pc) +ftrace_trace_userstack(struct trace_array *tr, + struct trace_buffer *buffer, unsigned long flags, int pc) { struct trace_event_call *call = &event_user_stack; struct ring_buffer_event *event; struct userstack_entry *entry; - if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE)) + if (!(tr->trace_flags & TRACE_ITER_USERSTACKTRACE)) return; /* @@ -3092,7 +3102,8 @@ preempt_enable(); } #else /* CONFIG_USER_STACKTRACE_SUPPORT */ -static void ftrace_trace_userstack(struct trace_buffer *buffer, +static void ftrace_trace_userstack(struct trace_array *tr, + struct trace_buffer *buffer, unsigned long flags, int pc) { } @@ -3123,7 +3134,7 @@ /* Interrupts must see nesting incremented before we use the buffer */ barrier(); - return &buffer->buffer[buffer->nesting][0]; + return &buffer->buffer[buffer->nesting - 1][0]; } static void put_trace_buf(void) @@ -3477,7 +3488,7 @@ } #define STATIC_TEMP_BUF_SIZE 128 -static char static_temp_buf[STATIC_TEMP_BUF_SIZE]; +static char static_temp_buf[STATIC_TEMP_BUF_SIZE] __aligned(4); /* Find the next real entry, without updating the iterator itself */ struct trace_entry *trace_find_next_entry(struct trace_iterator *iter, @@ -3507,13 +3518,15 @@ if (iter->ent && iter->ent != iter->temp) { if ((!iter->temp || iter->temp_size < iter->ent_size) && !WARN_ON_ONCE(iter->temp == static_temp_buf)) { - kfree(iter->temp); - iter->temp = kmalloc(iter->ent_size, GFP_KERNEL); - if (!iter->temp) + void *temp; + temp = kmalloc(iter->ent_size, GFP_KERNEL); + if (!temp) return NULL; + kfree(iter->temp); + iter->temp = temp; + iter->temp_size = iter->ent_size; } memcpy(iter->temp, iter->ent, iter->ent_size); - iter->temp_size = iter->ent_size; iter->ent = iter->temp; } entry = __find_next_entry(iter, ent_cpu, NULL, ent_ts); @@ -3743,14 +3756,14 @@ static void print_lat_help_header(struct seq_file *m) { - seq_puts(m, "# _------=> CPU# \n" - "# / _-----=> irqs-off \n" - "# | / _----=> need-resched \n" - "# || / _---=> hardirq/softirq \n" - "# ||| / _--=> preempt-depth \n" - "# |||| / delay \n" - "# cmd pid ||||| time | caller \n" - "# \\ / ||||| \\ | / \n"); + seq_puts(m, "# _------=> CPU# \n" + "# / _-----=> irqs-off \n" + "# | / _----=> need-resched \n" + "# || / _---=> hardirq/softirq \n" + "# ||| / _--=> preempt-depth \n" + "# |||| / delay \n" + "# cmd pid ||||| time | caller \n" + "# \\ / ||||| \\ | / \n"); } static void print_event_info(struct array_buffer *buf, struct seq_file *m) @@ -3771,26 +3784,26 @@ print_event_info(buf, m); - seq_printf(m, "# TASK-PID %s CPU# TIMESTAMP FUNCTION\n", tgid ? "TGID " : ""); - seq_printf(m, "# | | %s | | |\n", tgid ? " | " : ""); + seq_printf(m, "# TASK-PID %s CPU# TIMESTAMP FUNCTION\n", tgid ? " TGID " : ""); + seq_printf(m, "# | | %s | | |\n", tgid ? " | " : ""); } static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file *m, unsigned int flags) { bool tgid = flags & TRACE_ITER_RECORD_TGID; - const char *space = " "; - int prec = tgid ? 10 : 2; + const char *space = " "; + int prec = tgid ? 12 : 2; print_event_info(buf, m); - seq_printf(m, "# %.*s _-----=> irqs-off\n", prec, space); - seq_printf(m, "# %.*s / _----=> need-resched\n", prec, space); - seq_printf(m, "# %.*s| / _---=> hardirq/softirq\n", prec, space); - seq_printf(m, "# %.*s|| / _--=> preempt-depth\n", prec, space); - seq_printf(m, "# %.*s||| / delay\n", prec, space); - seq_printf(m, "# TASK-PID %.*sCPU# |||| TIMESTAMP FUNCTION\n", prec, " TGID "); - seq_printf(m, "# | | %.*s | |||| | |\n", prec, " | "); + seq_printf(m, "# %.*s _-----=> irqs-off\n", prec, space); + seq_printf(m, "# %.*s / _----=> need-resched\n", prec, space); + seq_printf(m, "# %.*s| / _---=> hardirq/softirq\n", prec, space); + seq_printf(m, "# %.*s|| / _--=> preempt-depth\n", prec, space); + seq_printf(m, "# %.*s||| / delay\n", prec, space); + seq_printf(m, "# TASK-PID %.*s CPU# |||| TIMESTAMP FUNCTION\n", prec, " TGID "); + seq_printf(m, "# | | %.*s | |||| | |\n", prec, " | "); } void @@ -5887,7 +5900,7 @@ } /* If trace pipe files are being read, we can't change the tracer */ - if (tr->current_trace->ref) { + if (tr->trace_ref) { ret = -EBUSY; goto out; } @@ -6103,7 +6116,7 @@ nonseekable_open(inode, filp); - tr->current_trace->ref++; + tr->trace_ref++; out: mutex_unlock(&trace_types_lock); return ret; @@ -6122,7 +6135,7 @@ mutex_lock(&trace_types_lock); - tr->current_trace->ref--; + tr->trace_ref--; if (iter->trace->pipe_close) iter->trace->pipe_close(iter); @@ -7424,7 +7437,7 @@ filp->private_data = info; - tr->current_trace->ref++; + tr->trace_ref++; mutex_unlock(&trace_types_lock); @@ -7525,7 +7538,7 @@ mutex_lock(&trace_types_lock); - iter->tr->current_trace->ref--; + iter->tr->trace_ref--; __trace_array_put(iter->tr); @@ -8733,7 +8746,7 @@ int i; /* Reference counter for a newly created trace array = 1. */ - if (tr->ref > 1 || (tr->current_trace && tr->current_trace->ref)) + if (tr->ref > 1 || (tr->current_trace && tr->trace_ref)) return -EBUSY; list_del(&tr->list); --- linux-5.8.0.orig/kernel/trace/trace.h +++ linux-5.8.0/kernel/trace/trace.h @@ -356,6 +356,7 @@ struct trace_event_file *trace_marker_file; cpumask_var_t tracing_cpumask; /* only trace on set CPUs */ int ref; + int trace_ref; #ifdef CONFIG_FUNCTION_TRACER struct ftrace_ops *ops; struct trace_pid_list __rcu *function_pids; @@ -547,7 +548,6 @@ struct tracer *next; struct tracer_flags *flags; int enabled; - int ref; bool print_max; bool allow_instances; #ifdef CONFIG_TRACER_MAX_TRACE @@ -636,6 +636,12 @@ * function is called to clear it. */ TRACE_GRAPH_NOTRACE_BIT, + + /* + * When transitioning between context, the preempt_count() may + * not be correct. Allow for a single recursion to cover this case. + */ + TRACE_TRANSITION_BIT, }; #define trace_recursion_set(bit) do { (current)->trace_recursion |= (1<<(bit)); } while (0) @@ -690,14 +696,27 @@ return 0; bit = trace_get_context_bit() + start; - if (unlikely(val & (1 << bit))) - return -1; + if (unlikely(val & (1 << bit))) { + /* + * It could be that preempt_count has not been updated during + * a switch between contexts. Allow for a single recursion. + */ + bit = TRACE_TRANSITION_BIT; + if (trace_recursion_test(bit)) + return -1; + trace_recursion_set(bit); + barrier(); + return bit + 1; + } + + /* Normal check passed, clear the transition to allow it again */ + trace_recursion_clear(TRACE_TRANSITION_BIT); val |= 1 << bit; current->trace_recursion = val; barrier(); - return bit; + return bit + 1; } static __always_inline void trace_clear_recursion(int bit) @@ -707,6 +726,7 @@ if (!bit) return; + bit--; bit = 1 << bit; val &= ~bit; @@ -875,6 +895,8 @@ extern bool tracing_selftest_disabled; #ifdef CONFIG_FTRACE_STARTUP_TEST +extern void __init disable_tracing_selftest(const char *reason); + extern int trace_selftest_startup_function(struct tracer *trace, struct trace_array *tr); extern int trace_selftest_startup_function_graph(struct tracer *trace, @@ -898,6 +920,9 @@ */ #define __tracer_data __refdata #else +static inline void __init disable_tracing_selftest(const char *reason) +{ +} /* Tracers are seldom changed. Optimize when selftests are disabled. */ #define __tracer_data __read_mostly #endif /* CONFIG_FTRACE_STARTUP_TEST */ @@ -1103,6 +1128,10 @@ extern struct list_head ftrace_pids; #ifdef CONFIG_FUNCTION_TRACER + +#define FTRACE_PID_IGNORE -1 +#define FTRACE_PID_TRACE -2 + struct ftrace_func_command { struct list_head list; char *name; @@ -1114,7 +1143,8 @@ extern bool ftrace_filter_param __initdata; static inline int ftrace_trace_task(struct trace_array *tr) { - return !this_cpu_read(tr->array_buffer.data->ftrace_ignore_pid); + return this_cpu_read(tr->array_buffer.data->ftrace_ignore_pid) != + FTRACE_PID_IGNORE; } extern int ftrace_is_dead(void); int ftrace_create_function_files(struct trace_array *tr, --- linux-5.8.0.orig/kernel/trace/trace_boot.c +++ linux-5.8.0/kernel/trace/trace_boot.c @@ -328,6 +328,8 @@ trace_boot_init_one_instance(tr, trace_node); trace_boot_init_instances(trace_node); + disable_tracing_selftest("running boot-time tracing"); + return 0; } --- linux-5.8.0.orig/kernel/trace/trace_events.c +++ linux-5.8.0/kernel/trace/trace_events.c @@ -538,12 +538,12 @@ if (enable) { register_trace_prio_sched_process_fork(event_filter_pid_sched_process_fork, tr, INT_MIN); - register_trace_prio_sched_process_exit(event_filter_pid_sched_process_exit, + register_trace_prio_sched_process_free(event_filter_pid_sched_process_exit, tr, INT_MAX); } else { unregister_trace_sched_process_fork(event_filter_pid_sched_process_fork, tr); - unregister_trace_sched_process_exit(event_filter_pid_sched_process_exit, + unregister_trace_sched_process_free(event_filter_pid_sched_process_exit, tr); } } @@ -1211,7 +1211,8 @@ mutex_lock(&event_mutex); list_for_each_entry(file, &tr->events, list) { call = file->event_call; - if (!trace_event_name(call) || !call->class || !call->class->reg) + if ((call->flags & TRACE_EVENT_FL_IGNORE_ENABLE) || + !trace_event_name(call) || !call->class || !call->class->reg) continue; if (system && strcmp(call->class->system, system->name) != 0) @@ -3188,7 +3189,7 @@ { strlcpy(bootup_event_buf, str, COMMAND_LINE_SIZE); ring_buffer_expanded = true; - tracing_selftest_disabled = true; + disable_tracing_selftest("running event tracing"); return 1; } --- linux-5.8.0.orig/kernel/trace/trace_events_hist.c +++ linux-5.8.0/kernel/trace/trace_events_hist.c @@ -3865,7 +3865,6 @@ s = kstrdup(field_str, GFP_KERNEL); if (!s) { - kfree(hist_data->attrs->var_defs.name[n_vars]); ret = -ENOMEM; goto free; } --- linux-5.8.0.orig/kernel/trace/trace_events_synth.c +++ linux-5.8.0/kernel/trace/trace_events_synth.c @@ -132,7 +132,7 @@ start += sizeof("char[") - 1; end = strchr(type, ']'); - if (!end || end < start) + if (!end || end < start || type + strlen(type) > end + 1) return -EINVAL; len = end - start; @@ -465,6 +465,8 @@ struct synth_field *field; const char *prefix = NULL, *field_type = argv[0], *field_name, *array; int len, ret = 0; + struct seq_buf s; + ssize_t size; if (field_type[0] == ';') field_type++; @@ -501,8 +503,10 @@ if (field_type[0] == ';') field_type++; len = strlen(field_type) + 1; + if (array) len += strlen(array); + if (prefix) len += strlen(prefix); @@ -511,20 +515,25 @@ ret = -ENOMEM; goto free; } + seq_buf_init(&s, field->type, len); if (prefix) - strcat(field->type, prefix); - strcat(field->type, field_type); + seq_buf_puts(&s, prefix); + seq_buf_puts(&s, field_type); if (array) { - strcat(field->type, array); - if (field->type[len - 1] == ';') - field->type[len - 1] = '\0'; + seq_buf_puts(&s, array); + if (s.buffer[s.len - 1] == ';') + s.len--; } + if (WARN_ON_ONCE(!seq_buf_buffer_left(&s))) + goto free; + s.buffer[s.len] = '\0'; - field->size = synth_field_size(field->type); - if (!field->size) { + size = synth_field_size(field->type); + if (size <= 0) { ret = -EINVAL; goto free; } + field->size = size; if (synth_field_is_string(field->type)) field->is_string = true; --- linux-5.8.0.orig/kernel/trace/trace_hwlat.c +++ linux-5.8.0/kernel/trace/trace_hwlat.c @@ -283,6 +283,7 @@ static void move_to_next_cpu(void) { struct cpumask *current_mask = &save_cpumask; + struct trace_array *tr = hwlat_trace; int next_cpu; if (disable_migrate) @@ -296,7 +297,7 @@ goto disable; get_online_cpus(); - cpumask_and(current_mask, cpu_online_mask, tracing_buffer_mask); + cpumask_and(current_mask, cpu_online_mask, tr->tracing_cpumask); next_cpu = cpumask_next(smp_processor_id(), current_mask); put_online_cpus(); @@ -367,13 +368,13 @@ struct task_struct *kthread; int next_cpu; - if (WARN_ON(hwlat_kthread)) + if (hwlat_kthread) return 0; /* Just pick the first CPU on first iteration */ current_mask = &save_cpumask; get_online_cpus(); - cpumask_and(current_mask, cpu_online_mask, tracing_buffer_mask); + cpumask_and(current_mask, cpu_online_mask, tr->tracing_cpumask); put_online_cpus(); next_cpu = cpumask_first(current_mask); --- linux-5.8.0.orig/kernel/trace/trace_irqsoff.c +++ linux-5.8.0/kernel/trace/trace_irqsoff.c @@ -562,6 +562,8 @@ /* non overwrite screws up the latency tracers */ set_tracer_flag(tr, TRACE_ITER_OVERWRITE, 1); set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, 1); + /* without pause, we will produce garbage if another latency occurs */ + set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, 1); tr->max_latency = 0; irqsoff_trace = tr; @@ -583,11 +585,13 @@ { int lat_flag = save_flags & TRACE_ITER_LATENCY_FMT; int overwrite_flag = save_flags & TRACE_ITER_OVERWRITE; + int pause_flag = save_flags & TRACE_ITER_PAUSE_ON_TRACE; stop_irqsoff_tracer(tr, is_graph(tr)); set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, lat_flag); set_tracer_flag(tr, TRACE_ITER_OVERWRITE, overwrite_flag); + set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, pause_flag); ftrace_reset_array_ops(tr); irqsoff_busy = false; --- linux-5.8.0.orig/kernel/trace/trace_kprobe.c +++ linux-5.8.0/kernel/trace/trace_kprobe.c @@ -25,11 +25,12 @@ /* Kprobe early definition from command line */ static char kprobe_boot_events_buf[COMMAND_LINE_SIZE] __initdata; -static bool kprobe_boot_events_enabled __initdata; static int __init set_kprobe_boot_events(char *str) { strlcpy(kprobe_boot_events_buf, str, COMMAND_LINE_SIZE); + disable_tracing_selftest("running kprobe events"); + return 0; } __setup("kprobe_event=", set_kprobe_boot_events); @@ -219,9 +220,9 @@ { struct trace_kprobe *tk = trace_kprobe_primary_from_call(call); - return tk ? kprobe_on_func_entry(tk->rp.kp.addr, + return tk ? (kprobe_on_func_entry(tk->rp.kp.addr, tk->rp.kp.addr ? NULL : tk->rp.kp.symbol_name, - tk->rp.kp.addr ? 0 : tk->rp.kp.offset) : false; + tk->rp.kp.addr ? 0 : tk->rp.kp.offset) == 0) : false; } bool trace_kprobe_error_injectable(struct trace_event_call *call) @@ -432,7 +433,7 @@ return 0; } -#if defined(CONFIG_KPROBES_ON_FTRACE) && \ +#if defined(CONFIG_DYNAMIC_FTRACE) && \ !defined(CONFIG_KPROBE_EVENTS_ON_NOTRACE) static bool __within_notrace_func(unsigned long addr) { @@ -810,9 +811,11 @@ trace_probe_log_err(0, BAD_PROBE_ADDR); goto parse_error; } - if (kprobe_on_func_entry(NULL, symbol, offset)) + ret = kprobe_on_func_entry(NULL, symbol, offset); + if (ret == 0) flags |= TPARG_FL_FENTRY; - if (offset && is_return && !(flags & TPARG_FL_FENTRY)) { + /* Defer the ENOENT case until register kprobe */ + if (ret == -EINVAL && is_return) { trace_probe_log_err(0, BAD_RETPROBE); goto parse_error; } @@ -1870,8 +1873,6 @@ ret = trace_run_command(cmd, create_or_delete_trace_kprobe); if (ret) pr_warn("Failed to add event(%d): %s\n", ret, cmd); - else - kprobe_boot_events_enabled = true; cmd = p; } @@ -1956,10 +1957,8 @@ if (tracing_is_disabled()) return -ENODEV; - if (kprobe_boot_events_enabled) { - pr_info("Skipping kprobe tests due to kprobe_event on cmdline\n"); + if (tracing_selftest_disabled) return 0; - } target = kprobe_trace_selftest_target; --- linux-5.8.0.orig/kernel/trace/trace_output.c +++ linux-5.8.0/kernel/trace/trace_output.c @@ -497,7 +497,7 @@ trace_find_cmdline(entry->pid, comm); - trace_seq_printf(s, "%8.8s-%-5d %3d", + trace_seq_printf(s, "%8.8s-%-7d %3d", comm, entry->pid, cpu); return trace_print_lat_fmt(s, entry); @@ -588,15 +588,15 @@ trace_find_cmdline(entry->pid, comm); - trace_seq_printf(s, "%16s-%-5d ", comm, entry->pid); + trace_seq_printf(s, "%16s-%-7d ", comm, entry->pid); if (tr->trace_flags & TRACE_ITER_RECORD_TGID) { unsigned int tgid = trace_find_tgid(entry->pid); if (!tgid) - trace_seq_printf(s, "(-----) "); + trace_seq_printf(s, "(-------) "); else - trace_seq_printf(s, "(%5d) ", tgid); + trace_seq_printf(s, "(%7d) ", tgid); } trace_seq_printf(s, "[%03d] ", iter->cpu); @@ -636,7 +636,7 @@ trace_find_cmdline(entry->pid, comm); trace_seq_printf( - s, "%16s %5d %3d %d %08x %08lx ", + s, "%16s %7d %3d %d %08x %08lx ", comm, entry->pid, iter->cpu, entry->flags, entry->preempt_count, iter->idx); } else { @@ -917,7 +917,7 @@ S = task_index_to_char(field->prev_state); trace_find_cmdline(field->next_pid, comm); trace_seq_printf(&iter->seq, - " %5d:%3d:%c %s [%03d] %5d:%3d:%c %s\n", + " %7d:%3d:%c %s [%03d] %7d:%3d:%c %s\n", field->prev_pid, field->prev_prio, S, delim, --- linux-5.8.0.orig/kernel/trace/trace_preemptirq.c +++ linux-5.8.0/kernel/trace/trace_preemptirq.c @@ -102,14 +102,14 @@ __visible void trace_hardirqs_off_caller(unsigned long caller_addr) { + lockdep_hardirqs_off(CALLER_ADDR0); + if (!this_cpu_read(tracing_irq_cpu)) { this_cpu_write(tracing_irq_cpu, 1); tracer_hardirqs_off(CALLER_ADDR0, caller_addr); if (!in_nmi()) trace_irq_disable_rcuidle(CALLER_ADDR0, caller_addr); } - - lockdep_hardirqs_off(CALLER_ADDR0); } EXPORT_SYMBOL(trace_hardirqs_off_caller); NOKPROBE_SYMBOL(trace_hardirqs_off_caller); --- linux-5.8.0.orig/kernel/trace/trace_selftest.c +++ linux-5.8.0/kernel/trace/trace_selftest.c @@ -492,8 +492,13 @@ unregister_ftrace_function(&test_rec_probe); ret = -1; - if (trace_selftest_recursion_cnt != 1) { - pr_cont("*callback not called once (%d)* ", + /* + * Recursion allows for transitions between context, + * and may call the callback twice. + */ + if (trace_selftest_recursion_cnt != 1 && + trace_selftest_recursion_cnt != 2) { + pr_cont("*callback not called once (or twice) (%d)* ", trace_selftest_recursion_cnt); goto out; } @@ -782,7 +787,7 @@ /* Have we just recovered from a hang? */ if (graph_hang_thresh > GRAPH_MAX_FUNC_TEST) { - tracing_selftest_disabled = true; + disable_tracing_selftest("recovering from a hang"); ret = -1; goto out; } --- linux-5.8.0.orig/kernel/tracepoint.c +++ linux-5.8.0/kernel/tracepoint.c @@ -53,6 +53,12 @@ struct tracepoint_func probes[0]; }; +/* Called in removal of a func but failed to allocate a new tp_funcs */ +static void tp_stub_func(void) +{ + return; +} + static inline void *allocate_probes(int count) { struct tp_probes *p = kmalloc(struct_size(p, probes, count), @@ -131,6 +137,7 @@ { struct tracepoint_func *old, *new; int nr_probes = 0; + int stub_funcs = 0; int pos = -1; if (WARN_ON(!tp_func->func)) @@ -147,14 +154,34 @@ if (old[nr_probes].func == tp_func->func && old[nr_probes].data == tp_func->data) return ERR_PTR(-EEXIST); + if (old[nr_probes].func == tp_stub_func) + stub_funcs++; } } - /* + 2 : one for new probe, one for NULL func */ - new = allocate_probes(nr_probes + 2); + /* + 2 : one for new probe, one for NULL func - stub functions */ + new = allocate_probes(nr_probes + 2 - stub_funcs); if (new == NULL) return ERR_PTR(-ENOMEM); if (old) { - if (pos < 0) { + if (stub_funcs) { + /* Need to copy one at a time to remove stubs */ + int probes = 0; + + pos = -1; + for (nr_probes = 0; old[nr_probes].func; nr_probes++) { + if (old[nr_probes].func == tp_stub_func) + continue; + if (pos < 0 && old[nr_probes].prio < prio) + pos = probes++; + new[probes++] = old[nr_probes]; + } + nr_probes = probes; + if (pos < 0) + pos = probes; + else + nr_probes--; /* Account for insertion */ + + } else if (pos < 0) { pos = nr_probes; memcpy(new, old, nr_probes * sizeof(struct tracepoint_func)); } else { @@ -188,8 +215,9 @@ /* (N -> M), (N > 1, M >= 0) probes */ if (tp_func->func) { for (nr_probes = 0; old[nr_probes].func; nr_probes++) { - if (old[nr_probes].func == tp_func->func && - old[nr_probes].data == tp_func->data) + if ((old[nr_probes].func == tp_func->func && + old[nr_probes].data == tp_func->data) || + old[nr_probes].func == tp_stub_func) nr_del++; } } @@ -208,14 +236,32 @@ /* N -> M, (N > 1, M > 0) */ /* + 1 for NULL */ new = allocate_probes(nr_probes - nr_del + 1); - if (new == NULL) - return ERR_PTR(-ENOMEM); - for (i = 0; old[i].func; i++) - if (old[i].func != tp_func->func - || old[i].data != tp_func->data) - new[j++] = old[i]; - new[nr_probes - nr_del].func = NULL; - *funcs = new; + if (new) { + for (i = 0; old[i].func; i++) + if ((old[i].func != tp_func->func + || old[i].data != tp_func->data) + && old[i].func != tp_stub_func) + new[j++] = old[i]; + new[nr_probes - nr_del].func = NULL; + *funcs = new; + } else { + /* + * Failed to allocate, replace the old function + * with calls to tp_stub_func. + */ + for (i = 0; old[i].func; i++) + if (old[i].func == tp_func->func && + old[i].data == tp_func->data) { + old[i].func = tp_stub_func; + /* Set the prio to the next event. */ + if (old[i + 1].func) + old[i].prio = + old[i + 1].prio; + else + old[i].prio = -1; + } + *funcs = old; + } } debug_print_probes(*funcs); return old; @@ -271,10 +317,12 @@ tp_funcs = rcu_dereference_protected(tp->funcs, lockdep_is_held(&tracepoints_mutex)); old = func_remove(&tp_funcs, func); - if (IS_ERR(old)) { - WARN_ON_ONCE(PTR_ERR(old) != -ENOMEM); + if (WARN_ON_ONCE(IS_ERR(old))) return PTR_ERR(old); - } + + if (tp_funcs == old) + /* Failed allocating new tp_funcs, replaced func with stub */ + return 0; if (!tp_funcs) { /* Removed last function */ --- linux-5.8.0.orig/kernel/umh.c +++ linux-5.8.0/kernel/umh.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -76,6 +77,14 @@ spin_unlock_irq(¤t->sighand->siglock); /* + * Initial kernel threads share ther FS with init, in order to + * get the init root directory. But we've now created a new + * thread that is going to execve a user process and has its own + * 'struct fs_struct'. Reset umask to the default. + */ + current->fs->umask = 0022; + + /* * Our parent (unbound workqueue) runs with elevated scheduling * priority. Avoid propagating that into the userspace child. */ --- linux-5.8.0.orig/kernel/user_namespace.c +++ linux-5.8.0/kernel/user_namespace.c @@ -21,6 +21,12 @@ #include #include +/* + * sysctl determining whether unprivileged users may unshare a new + * userns. Allowed by default + */ +int unprivileged_userns_clone = 1; + static struct kmem_cache *user_ns_cachep __read_mostly; static DEFINE_MUTEX(userns_state_mutex); --- linux-5.8.0.orig/kernel/watch_queue.c +++ linux-5.8.0/kernel/watch_queue.c @@ -393,6 +393,7 @@ struct watch *watch = container_of(rcu, struct watch, rcu); put_watch_queue(rcu_access_pointer(watch->queue)); + atomic_dec(&watch->cred->user->nr_watches); put_cred(watch->cred); } @@ -452,6 +453,13 @@ watch->cred = get_current_cred(); rcu_assign_pointer(watch->watch_list, wlist); + if (atomic_inc_return(&watch->cred->user->nr_watches) > + task_rlimit(current, RLIMIT_NOFILE)) { + atomic_dec(&watch->cred->user->nr_watches); + put_cred(watch->cred); + return -EAGAIN; + } + spin_lock_bh(&wqueue->lock); kref_get(&wqueue->usage); kref_get(&watch->usage); --- linux-5.8.0.orig/kernel/watchdog.c +++ linux-5.8.0/kernel/watchdog.c @@ -44,8 +44,6 @@ int __read_mostly watchdog_thresh = 10; static int __read_mostly nmi_watchdog_available; -static struct cpumask watchdog_allowed_mask __read_mostly; - struct cpumask watchdog_cpumask __read_mostly; unsigned long *watchdog_cpumask_bits = cpumask_bits(&watchdog_cpumask); @@ -162,6 +160,8 @@ int __read_mostly sysctl_softlockup_all_cpu_backtrace; #endif +static struct cpumask watchdog_allowed_mask __read_mostly; + /* Global variables, exported for sysctl */ unsigned int __read_mostly softlockup_panic = CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE; --- linux-5.8.0.orig/kernel/workqueue.c +++ linux-5.8.0/kernel/workqueue.c @@ -1843,12 +1843,6 @@ mutex_lock(&wq_pool_attach_mutex); /* - * set_cpus_allowed_ptr() will fail if the cpumask doesn't have any - * online CPUs. It'll be re-applied when any of the CPUs come up. - */ - set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask); - - /* * The wq_pool_attach_mutex ensures %POOL_DISASSOCIATED remains * stable across this function. See the comments above the flag * definition for details. @@ -1856,6 +1850,9 @@ if (pool->flags & POOL_DISASSOCIATED) worker->flags |= WORKER_UNBOUND; + if (worker->rescue_wq) + set_cpus_allowed_ptr(worker->task, pool->attrs->cpumask); + list_add_tail(&worker->node, &pool->workers); worker->pool = pool; @@ -3725,17 +3722,24 @@ * is updated and visible. */ if (!freezable || !workqueue_freezing) { + bool kick = false; + pwq->max_active = wq->saved_max_active; while (!list_empty(&pwq->delayed_works) && - pwq->nr_active < pwq->max_active) + pwq->nr_active < pwq->max_active) { pwq_activate_first_delayed(pwq); + kick = true; + } /* * Need to kick a worker after thawed or an unbound wq's - * max_active is bumped. It's a slow path. Do it always. + * max_active is bumped. In realtime scenarios, always kicking a + * worker will cause interference on the isolated cpu cores, so + * let's kick iff work items were activated. */ - wake_up_worker(pwq->pool); + if (kick) + wake_up_worker(pwq->pool); } else { pwq->max_active = 0; } --- linux-5.8.0.orig/lib/Kconfig +++ linux-5.8.0/lib/Kconfig @@ -631,7 +631,12 @@ config ARCH_HAS_UACCESS_FLUSHCACHE bool -config ARCH_HAS_UACCESS_MCSAFE +# arch has a concept of a recoverable synchronous exception due to a +# memory-read error like x86 machine-check or ARM data-abort, and +# implements copy_mc_to_{user,kernel} to abort and report +# 'bytes-transferred' if that exception fires when accessing the source +# buffer. +config ARCH_HAS_COPY_MC bool # Temporary. Goes away when all archs are cleaned up --- linux-5.8.0.orig/lib/bootconfig.c +++ linux-5.8.0/lib/bootconfig.c @@ -31,6 +31,8 @@ static struct xbc_node *last_parent __initdata; static const char *xbc_err_msg __initdata; static int xbc_err_pos __initdata; +static int open_brace[XBC_DEPTH_MAX] __initdata; +static int brace_index __initdata; static int __init xbc_parse_error(const char *msg, const char *p) { @@ -423,27 +425,27 @@ return p; } -static int __init __xbc_open_brace(void) +static int __init __xbc_open_brace(char *p) { - /* Mark the last key as open brace */ - last_parent->next = XBC_NODE_MAX; + /* Push the last key as open brace */ + open_brace[brace_index++] = xbc_node_index(last_parent); + if (brace_index >= XBC_DEPTH_MAX) + return xbc_parse_error("Exceed max depth of braces", p); return 0; } static int __init __xbc_close_brace(char *p) { - struct xbc_node *node; - - if (!last_parent || last_parent->next != XBC_NODE_MAX) + brace_index--; + if (!last_parent || brace_index < 0 || + (open_brace[brace_index] != xbc_node_index(last_parent))) return xbc_parse_error("Unexpected closing brace", p); - node = last_parent; - node->next = 0; - do { - node = xbc_node_get_parent(node); - } while (node && node->next != XBC_NODE_MAX); - last_parent = node; + if (brace_index == 0) + last_parent = NULL; + else + last_parent = &xbc_nodes[open_brace[brace_index - 1]]; return 0; } @@ -484,8 +486,8 @@ break; } if (strchr(",;\n#}", c)) { - v = strim(v); *p++ = '\0'; + v = strim(v); break; } } @@ -651,7 +653,7 @@ return ret; *k = n; - return __xbc_open_brace(); + return __xbc_open_brace(n - 1); } static int __init xbc_close_brace(char **k, char *n) @@ -671,6 +673,13 @@ int i, depth, len, wlen; struct xbc_node *n, *m; + /* Brace closing */ + if (brace_index) { + n = &xbc_nodes[open_brace[brace_index]]; + return xbc_parse_error("Brace is not closed", + xbc_node_get_data(n)); + } + /* Empty tree */ if (xbc_node_num == 0) { xbc_parse_error("Empty config", xbc_data); @@ -735,6 +744,7 @@ xbc_node_num = 0; memblock_free(__pa(xbc_nodes), sizeof(struct xbc_node) * XBC_NODE_MAX); xbc_nodes = NULL; + brace_index = 0; } /** --- linux-5.8.0.orig/lib/crc-t10dif.c +++ linux-5.8.0/lib/crc-t10dif.c @@ -19,39 +19,46 @@ static struct crypto_shash __rcu *crct10dif_tfm; static struct static_key crct10dif_fallback __read_mostly; static DEFINE_MUTEX(crc_t10dif_mutex); +static struct work_struct crct10dif_rehash_work; -static int crc_t10dif_rehash(struct notifier_block *self, unsigned long val, void *data) +static int crc_t10dif_notify(struct notifier_block *self, unsigned long val, void *data) { struct crypto_alg *alg = data; - struct crypto_shash *new, *old; if (val != CRYPTO_MSG_ALG_LOADED || static_key_false(&crct10dif_fallback) || strncmp(alg->cra_name, CRC_T10DIF_STRING, strlen(CRC_T10DIF_STRING))) return 0; + schedule_work(&crct10dif_rehash_work); + return 0; +} + +static void crc_t10dif_rehash(struct work_struct *work) +{ + struct crypto_shash *new, *old; + mutex_lock(&crc_t10dif_mutex); old = rcu_dereference_protected(crct10dif_tfm, lockdep_is_held(&crc_t10dif_mutex)); if (!old) { mutex_unlock(&crc_t10dif_mutex); - return 0; + return; } new = crypto_alloc_shash("crct10dif", 0, 0); if (IS_ERR(new)) { mutex_unlock(&crc_t10dif_mutex); - return 0; + return; } rcu_assign_pointer(crct10dif_tfm, new); mutex_unlock(&crc_t10dif_mutex); synchronize_rcu(); crypto_free_shash(old); - return 0; } static struct notifier_block crc_t10dif_nb = { - .notifier_call = crc_t10dif_rehash, + .notifier_call = crc_t10dif_notify, }; __u16 crc_t10dif_update(__u16 crc, const unsigned char *buffer, size_t len) @@ -86,19 +93,26 @@ static int __init crc_t10dif_mod_init(void) { + struct crypto_shash *tfm; + + INIT_WORK(&crct10dif_rehash_work, crc_t10dif_rehash); crypto_register_notifier(&crc_t10dif_nb); - crct10dif_tfm = crypto_alloc_shash("crct10dif", 0, 0); - if (IS_ERR(crct10dif_tfm)) { + mutex_lock(&crc_t10dif_mutex); + tfm = crypto_alloc_shash("crct10dif", 0, 0); + if (IS_ERR(tfm)) { static_key_slow_inc(&crct10dif_fallback); - crct10dif_tfm = NULL; + tfm = NULL; } + RCU_INIT_POINTER(crct10dif_tfm, tfm); + mutex_unlock(&crc_t10dif_mutex); return 0; } static void __exit crc_t10dif_mod_fini(void) { crypto_unregister_notifier(&crc_t10dif_nb); - crypto_free_shash(crct10dif_tfm); + cancel_work_sync(&crct10dif_rehash_work); + crypto_free_shash(rcu_dereference_protected(crct10dif_tfm, 1)); } module_init(crc_t10dif_mod_init); @@ -106,11 +120,27 @@ static int crc_t10dif_transform_show(char *buffer, const struct kernel_param *kp) { + struct crypto_shash *tfm; + const char *name; + int len; + if (static_key_false(&crct10dif_fallback)) return sprintf(buffer, "fallback\n"); - return sprintf(buffer, "%s\n", - crypto_tfm_alg_driver_name(crypto_shash_tfm(crct10dif_tfm))); + rcu_read_lock(); + tfm = rcu_dereference(crct10dif_tfm); + if (!tfm) { + len = sprintf(buffer, "init\n"); + goto unlock; + } + + name = crypto_tfm_alg_driver_name(crypto_shash_tfm(tfm)); + len = sprintf(buffer, "%s\n", name); + +unlock: + rcu_read_unlock(); + + return len; } module_param_call(transform, NULL, crc_t10dif_transform_show, NULL, 0644); --- linux-5.8.0.orig/lib/crc32.c +++ linux-5.8.0/lib/crc32.c @@ -331,7 +331,7 @@ return crc; } -#if CRC_LE_BITS == 1 +#if CRC_BE_BITS == 1 u32 __pure crc32_be(u32 crc, unsigned char const *p, size_t len) { return crc32_be_generic(crc, p, len, NULL, CRC32_POLY_BE); --- linux-5.8.0.orig/lib/crc32test.c +++ linux-5.8.0/lib/crc32test.c @@ -683,7 +683,6 @@ /* reduce OS noise */ local_irq_save(flags); - local_irq_disable(); nsec = ktime_get_ns(); for (i = 0; i < 100; i++) { @@ -694,7 +693,6 @@ nsec = ktime_get_ns() - nsec; local_irq_restore(flags); - local_irq_enable(); pr_info("crc32c: CRC_LE_BITS = %d\n", CRC_LE_BITS); @@ -768,7 +766,6 @@ /* reduce OS noise */ local_irq_save(flags); - local_irq_disable(); nsec = ktime_get_ns(); for (i = 0; i < 100; i++) { @@ -783,7 +780,6 @@ nsec = ktime_get_ns() - nsec; local_irq_restore(flags); - local_irq_enable(); pr_info("crc32: CRC_LE_BITS = %d, CRC_BE BITS = %d\n", CRC_LE_BITS, CRC_BE_BITS); --- linux-5.8.0.orig/lib/decompress_unlz4.c +++ linux-5.8.0/lib/decompress_unlz4.c @@ -112,6 +112,9 @@ error("data corrupted"); goto exit_2; } + } else if (size < 4) { + /* empty or end-of-file */ + goto exit_3; } chunksize = get_unaligned_le32(inp); @@ -125,6 +128,10 @@ continue; } + if (!fill && chunksize == 0) { + /* empty or end-of-file */ + goto exit_3; + } if (posp) *posp += 4; @@ -184,6 +191,7 @@ } } +exit_3: ret = 0; exit_2: if (!input) --- linux-5.8.0.orig/lib/devres.c +++ linux-5.8.0/lib/devres.c @@ -119,6 +119,7 @@ { resource_size_t size; void __iomem *dest_ptr; + char *pretty_name; BUG_ON(!dev); @@ -129,7 +130,15 @@ size = resource_size(res); - if (!devm_request_mem_region(dev, res->start, size, dev_name(dev))) { + if (res->name) + pretty_name = devm_kasprintf(dev, GFP_KERNEL, "%s %s", + dev_name(dev), res->name); + else + pretty_name = devm_kstrdup(dev, dev_name(dev), GFP_KERNEL); + if (!pretty_name) + return IOMEM_ERR_PTR(-ENOMEM); + + if (!devm_request_mem_region(dev, res->start, size, pretty_name)) { dev_err(dev, "can't request region for resource %pR\n", res); return IOMEM_ERR_PTR(-EBUSY); } --- linux-5.8.0.orig/lib/dynamic_debug.c +++ linux-5.8.0/lib/dynamic_debug.c @@ -87,22 +87,22 @@ { _DPRINTK_FLAGS_NONE, '_' }, }; +struct flagsbuf { char buf[ARRAY_SIZE(opt_array)+1]; }; + /* format a string into buf[] which describes the _ddebug's flags */ -static char *ddebug_describe_flags(struct _ddebug *dp, char *buf, - size_t maxlen) +static char *ddebug_describe_flags(unsigned int flags, struct flagsbuf *fb) { - char *p = buf; + char *p = fb->buf; int i; - BUG_ON(maxlen < 6); for (i = 0; i < ARRAY_SIZE(opt_array); ++i) - if (dp->flags & opt_array[i].flag) + if (flags & opt_array[i].flag) *p++ = opt_array[i].opt_char; - if (p == buf) + if (p == fb->buf) *p++ = '_'; *p = '\0'; - return buf; + return fb->buf; } #define vpr_info(fmt, ...) \ @@ -144,7 +144,7 @@ struct ddebug_table *dt; unsigned int newflags; unsigned int nfound = 0; - char flagbuf[10]; + struct flagsbuf fbuf; /* search for matching ddebugs */ mutex_lock(&ddebug_lock); @@ -201,8 +201,7 @@ vpr_info("changed %s:%d [%s]%s =%s\n", trim_prefix(dp->filename), dp->lineno, dt->mod_name, dp->function, - ddebug_describe_flags(dp, flagbuf, - sizeof(flagbuf))); + ddebug_describe_flags(dp->flags, &fbuf)); } } mutex_unlock(&ddebug_lock); @@ -816,7 +815,7 @@ { struct ddebug_iter *iter = m->private; struct _ddebug *dp = p; - char flagsbuf[10]; + struct flagsbuf flags; vpr_info("called m=%p p=%p\n", m, p); @@ -829,7 +828,7 @@ seq_printf(m, "%s:%u [%s]%s =%s \"", trim_prefix(dp->filename), dp->lineno, iter->table->mod_name, dp->function, - ddebug_describe_flags(dp, flagsbuf, sizeof(flagsbuf))); + ddebug_describe_flags(dp->flags, &flags)); seq_escape(m, dp->format, "\t\r\n\""); seq_puts(m, "\"\n"); --- linux-5.8.0.orig/lib/fonts/font_10x18.c +++ linux-5.8.0/lib/fonts/font_10x18.c @@ -8,8 +8,8 @@ #define FONTDATAMAX 9216 -static const unsigned char fontdata_10x18[FONTDATAMAX] = { - +static const struct font_data fontdata_10x18 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */ @@ -5129,8 +5129,7 @@ 0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */ 0x00, 0x00, /* 0000000000 */ - -}; +} }; const struct font_desc font_10x18 = { @@ -5138,7 +5137,7 @@ .name = "10x18", .width = 10, .height = 18, - .data = fontdata_10x18, + .data = fontdata_10x18.data, #ifdef __sparc__ .pref = 5, #else --- linux-5.8.0.orig/lib/fonts/font_6x10.c +++ linux-5.8.0/lib/fonts/font_6x10.c @@ -1,8 +1,10 @@ // SPDX-License-Identifier: GPL-2.0 #include -static const unsigned char fontdata_6x10[] = { +#define FONTDATAMAX 2560 +static const struct font_data fontdata_6x10 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -3074,14 +3076,13 @@ 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_6x10 = { .idx = FONT6x10_IDX, .name = "6x10", .width = 6, .height = 10, - .data = fontdata_6x10, + .data = fontdata_6x10.data, .pref = 0, }; --- linux-5.8.0.orig/lib/fonts/font_6x11.c +++ linux-5.8.0/lib/fonts/font_6x11.c @@ -9,8 +9,8 @@ #define FONTDATAMAX (11*256) -static const unsigned char fontdata_6x11[FONTDATAMAX] = { - +static const struct font_data fontdata_6x11 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -3338,8 +3338,7 @@ 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_6x11 = { @@ -3347,7 +3346,7 @@ .name = "ProFont6x11", .width = 6, .height = 11, - .data = fontdata_6x11, + .data = fontdata_6x11.data, /* Try avoiding this font if possible unless on MAC */ .pref = -2000, }; --- linux-5.8.0.orig/lib/fonts/font_7x14.c +++ linux-5.8.0/lib/fonts/font_7x14.c @@ -8,8 +8,8 @@ #define FONTDATAMAX 3584 -static const unsigned char fontdata_7x14[FONTDATAMAX] = { - +static const struct font_data fontdata_7x14 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 0000000 */ 0x00, /* 0000000 */ @@ -4105,8 +4105,7 @@ 0x00, /* 0000000 */ 0x00, /* 0000000 */ 0x00, /* 0000000 */ - -}; +} }; const struct font_desc font_7x14 = { @@ -4114,6 +4113,6 @@ .name = "7x14", .width = 7, .height = 14, - .data = fontdata_7x14, + .data = fontdata_7x14.data, .pref = 0, }; --- linux-5.8.0.orig/lib/fonts/font_8x16.c +++ linux-5.8.0/lib/fonts/font_8x16.c @@ -10,8 +10,8 @@ #define FONTDATAMAX 4096 -static const unsigned char fontdata_8x16[FONTDATAMAX] = { - +static const struct font_data fontdata_8x16 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -4619,8 +4619,7 @@ 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x16 = { @@ -4628,7 +4627,7 @@ .name = "VGA8x16", .width = 8, .height = 16, - .data = fontdata_8x16, + .data = fontdata_8x16.data, .pref = 0, }; EXPORT_SYMBOL(font_vga_8x16); --- linux-5.8.0.orig/lib/fonts/font_8x8.c +++ linux-5.8.0/lib/fonts/font_8x8.c @@ -9,8 +9,8 @@ #define FONTDATAMAX 2048 -static const unsigned char fontdata_8x8[FONTDATAMAX] = { - +static const struct font_data fontdata_8x8 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2570,8 +2570,7 @@ 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x8 = { @@ -2579,6 +2578,6 @@ .name = "VGA8x8", .width = 8, .height = 8, - .data = fontdata_8x8, + .data = fontdata_8x8.data, .pref = 0, }; --- linux-5.8.0.orig/lib/fonts/font_acorn_8x8.c +++ linux-5.8.0/lib/fonts/font_acorn_8x8.c @@ -3,7 +3,10 @@ #include -static const unsigned char acorndata_8x8[] = { +#define FONTDATAMAX 2048 + +static const struct font_data acorndata_8x8 = { +{ 0, 0, FONTDATAMAX, 0 }, { /* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ^@ */ /* 01 */ 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, /* ^A */ /* 02 */ 0x7e, 0xff, 0xbd, 0xff, 0xc3, 0xe7, 0xff, 0x7e, /* ^B */ @@ -260,14 +263,14 @@ /* FD */ 0x38, 0x04, 0x18, 0x20, 0x3c, 0x00, 0x00, 0x00, /* FE */ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +} }; const struct font_desc font_acorn_8x8 = { .idx = ACORN8x8_IDX, .name = "Acorn8x8", .width = 8, .height = 8, - .data = acorndata_8x8, + .data = acorndata_8x8.data, #ifdef CONFIG_ARCH_ACORN .pref = 20, #else --- linux-5.8.0.orig/lib/fonts/font_mini_4x6.c +++ linux-5.8.0/lib/fonts/font_mini_4x6.c @@ -43,8 +43,8 @@ #define FONTDATAMAX 1536 -static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { - +static const struct font_data fontdata_mini_4x6 = { + { 0, 0, FONTDATAMAX, 0 }, { /*{*/ /* Char 0: ' ' */ 0xee, /*= [*** ] */ @@ -2145,14 +2145,14 @@ 0xee, /*= [*** ] */ 0x00, /*= [ ] */ /*}*/ -}; +} }; const struct font_desc font_mini_4x6 = { .idx = MINI4x6_IDX, .name = "MINI4x6", .width = 4, .height = 6, - .data = fontdata_mini_4x6, + .data = fontdata_mini_4x6.data, .pref = 3, }; --- linux-5.8.0.orig/lib/fonts/font_pearl_8x8.c +++ linux-5.8.0/lib/fonts/font_pearl_8x8.c @@ -14,8 +14,8 @@ #define FONTDATAMAX 2048 -static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { - +static const struct font_data fontdata_pearl8x8 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2575,14 +2575,13 @@ 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_pearl_8x8 = { .idx = PEARL8x8_IDX, .name = "PEARL8x8", .width = 8, .height = 8, - .data = fontdata_pearl8x8, + .data = fontdata_pearl8x8.data, .pref = 2, }; --- linux-5.8.0.orig/lib/fonts/font_sun12x22.c +++ linux-5.8.0/lib/fonts/font_sun12x22.c @@ -3,8 +3,8 @@ #define FONTDATAMAX 11264 -static const unsigned char fontdata_sun12x22[FONTDATAMAX] = { - +static const struct font_data fontdata_sun12x22 = { + { 0, 0, FONTDATAMAX, 0 }, { /* 0 0x00 '^@' */ 0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */ @@ -6148,8 +6148,7 @@ 0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */ 0x00, 0x00, /* 000000000000 */ - -}; +} }; const struct font_desc font_sun_12x22 = { @@ -6157,7 +6156,7 @@ .name = "SUN12x22", .width = 12, .height = 22, - .data = fontdata_sun12x22, + .data = fontdata_sun12x22.data, #ifdef __sparc__ .pref = 5, #else --- linux-5.8.0.orig/lib/fonts/font_sun8x16.c +++ linux-5.8.0/lib/fonts/font_sun8x16.c @@ -3,7 +3,8 @@ #define FONTDATAMAX 4096 -static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { +static const struct font_data fontdata_sun8x16 = { +{ 0, 0, FONTDATAMAX, 0 }, { /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81,0x81,0x7e,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00, @@ -260,14 +261,14 @@ /* */ 0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; +} }; const struct font_desc font_sun_8x16 = { .idx = SUN8x16_IDX, .name = "SUN8x16", .width = 8, .height = 16, - .data = fontdata_sun8x16, + .data = fontdata_sun8x16.data, #ifdef __sparc__ .pref = 10, #else --- linux-5.8.0.orig/lib/fonts/font_ter16x32.c +++ linux-5.8.0/lib/fonts/font_ter16x32.c @@ -4,8 +4,8 @@ #define FONTDATAMAX 16384 -static const unsigned char fontdata_ter16x32[FONTDATAMAX] = { - +static const struct font_data fontdata_ter16x32 = { + { 0, 0, FONTDATAMAX, 0 }, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x7f, 0xfc, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x1c, @@ -2054,8 +2054,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 255 */ - -}; +} }; const struct font_desc font_ter_16x32 = { @@ -2063,7 +2062,7 @@ .name = "TER16x32", .width = 16, .height = 32, - .data = fontdata_ter16x32, + .data = fontdata_ter16x32.data, #ifdef __sparc__ .pref = 5, #else --- linux-5.8.0.orig/lib/genalloc.c +++ linux-5.8.0/lib/genalloc.c @@ -81,14 +81,14 @@ * users set the same bit, one user will return remain bits, otherwise * return 0. */ -static int bitmap_set_ll(unsigned long *map, int start, int nr) +static int bitmap_set_ll(unsigned long *map, unsigned long start, unsigned long nr) { unsigned long *p = map + BIT_WORD(start); - const int size = start + nr; + const unsigned long size = start + nr; int bits_to_set = BITS_PER_LONG - (start % BITS_PER_LONG); unsigned long mask_to_set = BITMAP_FIRST_WORD_MASK(start); - while (nr - bits_to_set >= 0) { + while (nr >= bits_to_set) { if (set_bits_ll(p, mask_to_set)) return nr; nr -= bits_to_set; @@ -116,14 +116,15 @@ * users clear the same bit, one user will return remain bits, * otherwise return 0. */ -static int bitmap_clear_ll(unsigned long *map, int start, int nr) +static unsigned long +bitmap_clear_ll(unsigned long *map, unsigned long start, unsigned long nr) { unsigned long *p = map + BIT_WORD(start); - const int size = start + nr; + const unsigned long size = start + nr; int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG); unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start); - while (nr - bits_to_clear >= 0) { + while (nr >= bits_to_clear) { if (clear_bits_ll(p, mask_to_clear)) return nr; nr -= bits_to_clear; @@ -183,8 +184,8 @@ size_t size, int nid, void *owner) { struct gen_pool_chunk *chunk; - int nbits = size >> pool->min_alloc_order; - int nbytes = sizeof(struct gen_pool_chunk) + + unsigned long nbits = size >> pool->min_alloc_order; + unsigned long nbytes = sizeof(struct gen_pool_chunk) + BITS_TO_LONGS(nbits) * sizeof(long); chunk = vzalloc_node(nbytes, nid); @@ -242,7 +243,7 @@ struct list_head *_chunk, *_next_chunk; struct gen_pool_chunk *chunk; int order = pool->min_alloc_order; - int bit, end_bit; + unsigned long bit, end_bit; list_for_each_safe(_chunk, _next_chunk, &pool->chunks) { chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk); @@ -278,7 +279,7 @@ struct gen_pool_chunk *chunk; unsigned long addr = 0; int order = pool->min_alloc_order; - int nbits, start_bit, end_bit, remain; + unsigned long nbits, start_bit, end_bit, remain; #ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG BUG_ON(in_nmi()); @@ -487,7 +488,7 @@ { struct gen_pool_chunk *chunk; int order = pool->min_alloc_order; - int start_bit, nbits, remain; + unsigned long start_bit, nbits, remain; #ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG BUG_ON(in_nmi()); @@ -755,7 +756,7 @@ index = bitmap_find_next_zero_area(map, size, start, nr, 0); while (index < size) { - int next_bit = find_next_bit(map, size, index + nr); + unsigned long next_bit = find_next_bit(map, size, index + nr); if ((next_bit - index) < len) { len = next_bit - index; start_bit = index; --- linux-5.8.0.orig/lib/idr.c +++ linux-5.8.0/lib/idr.c @@ -470,6 +470,7 @@ goto retry; nospc: xas_unlock_irqrestore(&xas, flags); + kfree(alloc); return -ENOSPC; } EXPORT_SYMBOL(ida_alloc_range); --- linux-5.8.0.orig/lib/iov_iter.c +++ linux-5.8.0/lib/iov_iter.c @@ -585,14 +585,15 @@ } static size_t csum_and_copy_to_pipe_iter(const void *addr, size_t bytes, - __wsum *csum, struct iov_iter *i) + struct csum_state *csstate, + struct iov_iter *i) { struct pipe_inode_info *pipe = i->pipe; unsigned int p_mask = pipe->ring_size - 1; + __wsum sum = csstate->csum; + size_t off = csstate->off; unsigned int i_head; size_t n, r; - size_t off = 0; - __wsum sum = *csum; if (!sanity(i)) return 0; @@ -614,7 +615,8 @@ i_head++; } while (n); i->count -= bytes; - *csum = sum; + csstate->csum = sum; + csstate->off = off; return bytes; } @@ -636,30 +638,30 @@ } EXPORT_SYMBOL(_copy_to_iter); -#ifdef CONFIG_ARCH_HAS_UACCESS_MCSAFE -static int copyout_mcsafe(void __user *to, const void *from, size_t n) +#ifdef CONFIG_ARCH_HAS_COPY_MC +static int copyout_mc(void __user *to, const void *from, size_t n) { if (access_ok(to, n)) { instrument_copy_to_user(to, from, n); - n = copy_to_user_mcsafe((__force void *) to, from, n); + n = copy_mc_to_user((__force void *) to, from, n); } return n; } -static unsigned long memcpy_mcsafe_to_page(struct page *page, size_t offset, +static unsigned long copy_mc_to_page(struct page *page, size_t offset, const char *from, size_t len) { unsigned long ret; char *to; to = kmap_atomic(page); - ret = memcpy_mcsafe(to + offset, from, len); + ret = copy_mc_to_kernel(to + offset, from, len); kunmap_atomic(to); return ret; } -static size_t copy_pipe_to_iter_mcsafe(const void *addr, size_t bytes, +static size_t copy_mc_pipe_to_iter(const void *addr, size_t bytes, struct iov_iter *i) { struct pipe_inode_info *pipe = i->pipe; @@ -677,7 +679,7 @@ size_t chunk = min_t(size_t, n, PAGE_SIZE - off); unsigned long rem; - rem = memcpy_mcsafe_to_page(pipe->bufs[i_head & p_mask].page, + rem = copy_mc_to_page(pipe->bufs[i_head & p_mask].page, off, addr, chunk); i->head = i_head; i->iov_offset = off + chunk - rem; @@ -694,18 +696,17 @@ } /** - * _copy_to_iter_mcsafe - copy to user with source-read error exception handling + * _copy_mc_to_iter - copy to iter with source memory error exception handling * @addr: source kernel address * @bytes: total transfer length * @iter: destination iterator * - * The pmem driver arranges for filesystem-dax to use this facility via - * dax_copy_to_iter() for protecting read/write to persistent memory. - * Unless / until an architecture can guarantee identical performance - * between _copy_to_iter_mcsafe() and _copy_to_iter() it would be a - * performance regression to switch more users to the mcsafe version. + * The pmem driver deploys this for the dax operation + * (dax_copy_to_iter()) for dax reads (bypass page-cache and the + * block-layer). Upon #MC read(2) aborts and returns EIO or the bytes + * successfully copied. * - * Otherwise, the main differences between this and typical _copy_to_iter(). + * The main differences between this and typical _copy_to_iter(). * * * Typical tail/residue handling after a fault retries the copy * byte-by-byte until the fault happens again. Re-triggering machine @@ -716,23 +717,22 @@ * * ITER_KVEC, ITER_PIPE, and ITER_BVEC can return short copies. * Compare to copy_to_iter() where only ITER_IOVEC attempts might return * a short copy. - * - * See MCSAFE_TEST for self-test. */ -size_t _copy_to_iter_mcsafe(const void *addr, size_t bytes, struct iov_iter *i) +size_t _copy_mc_to_iter(const void *addr, size_t bytes, struct iov_iter *i) { const char *from = addr; unsigned long rem, curr_addr, s_addr = (unsigned long) addr; if (unlikely(iov_iter_is_pipe(i))) - return copy_pipe_to_iter_mcsafe(addr, bytes, i); + return copy_mc_pipe_to_iter(addr, bytes, i); if (iter_is_iovec(i)) might_fault(); iterate_and_advance(i, bytes, v, - copyout_mcsafe(v.iov_base, (from += v.iov_len) - v.iov_len, v.iov_len), + copyout_mc(v.iov_base, (from += v.iov_len) - v.iov_len, + v.iov_len), ({ - rem = memcpy_mcsafe_to_page(v.bv_page, v.bv_offset, - (from += v.bv_len) - v.bv_len, v.bv_len); + rem = copy_mc_to_page(v.bv_page, v.bv_offset, + (from += v.bv_len) - v.bv_len, v.bv_len); if (rem) { curr_addr = (unsigned long) from; bytes = curr_addr - s_addr - rem; @@ -740,8 +740,8 @@ } }), ({ - rem = memcpy_mcsafe(v.iov_base, (from += v.iov_len) - v.iov_len, - v.iov_len); + rem = copy_mc_to_kernel(v.iov_base, (from += v.iov_len) + - v.iov_len, v.iov_len); if (rem) { curr_addr = (unsigned long) from; bytes = curr_addr - s_addr - rem; @@ -752,8 +752,8 @@ return bytes; } -EXPORT_SYMBOL_GPL(_copy_to_iter_mcsafe); -#endif /* CONFIG_ARCH_HAS_UACCESS_MCSAFE */ +EXPORT_SYMBOL_GPL(_copy_mc_to_iter); +#endif /* CONFIG_ARCH_HAS_COPY_MC */ size_t _copy_from_iter(void *addr, size_t bytes, struct iov_iter *i) { @@ -1519,18 +1519,19 @@ } EXPORT_SYMBOL(csum_and_copy_from_iter_full); -size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csump, +size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *_csstate, struct iov_iter *i) { + struct csum_state *csstate = _csstate; const char *from = addr; - __wsum *csum = csump; __wsum sum, next; - size_t off = 0; + size_t off; if (unlikely(iov_iter_is_pipe(i))) - return csum_and_copy_to_pipe_iter(addr, bytes, csum, i); + return csum_and_copy_to_pipe_iter(addr, bytes, _csstate, i); - sum = *csum; + sum = csstate->csum; + off = csstate->off; if (unlikely(iov_iter_is_discard(i))) { WARN_ON(1); /* for now */ return 0; @@ -1559,7 +1560,8 @@ off += v.iov_len; }) ) - *csum = sum; + csstate->csum = sum; + csstate->off = off; return bytes; } EXPORT_SYMBOL(csum_and_copy_to_iter); --- linux-5.8.0.orig/lib/kobject.c +++ linux-5.8.0/lib/kobject.c @@ -599,14 +599,7 @@ } EXPORT_SYMBOL_GPL(kobject_move); -/** - * kobject_del() - Unlink kobject from hierarchy. - * @kobj: object. - * - * This is the function that should be called to delete an object - * successfully added via kobject_add(). - */ -void kobject_del(struct kobject *kobj) +static void __kobject_del(struct kobject *kobj) { struct kernfs_node *sd; const struct kobj_type *ktype; @@ -632,9 +625,27 @@ kobj->state_in_sysfs = 0; kobj_kset_leave(kobj); - kobject_put(kobj->parent); kobj->parent = NULL; } + +/** + * kobject_del() - Unlink kobject from hierarchy. + * @kobj: object. + * + * This is the function that should be called to delete an object + * successfully added via kobject_add(). + */ +void kobject_del(struct kobject *kobj) +{ + struct kobject *parent; + + if (!kobj) + return; + + parent = kobj->parent; + __kobject_del(kobj); + kobject_put(parent); +} EXPORT_SYMBOL(kobject_del); /** @@ -670,6 +681,7 @@ */ static void kobject_cleanup(struct kobject *kobj) { + struct kobject *parent = kobj->parent; struct kobj_type *t = get_ktype(kobj); const char *name = kobj->name; @@ -684,7 +696,10 @@ if (kobj->state_in_sysfs) { pr_debug("kobject: '%s' (%p): auto cleanup kobject_del\n", kobject_name(kobj), kobj); - kobject_del(kobj); + __kobject_del(kobj); + } else { + /* avoid dropping the parent reference unnecessarily */ + parent = NULL; } if (t && t->release) { @@ -698,6 +713,8 @@ pr_debug("kobject: '%s': free name\n", name); kfree_const(name); } + + kobject_put(parent); } #ifdef CONFIG_DEBUG_KOBJECT_RELEASE --- linux-5.8.0.orig/lib/logic_pio.c +++ linux-5.8.0/lib/logic_pio.c @@ -28,6 +28,8 @@ * @new_range: pointer to the IO range to be registered. * * Returns 0 on success, the error code in case of failure. + * If the range already exists, -EEXIST will be returned, which should be + * considered a success. * * Register a new IO range node in the IO range list. */ @@ -51,6 +53,7 @@ list_for_each_entry(range, &io_range_list, list) { if (range->fwnode == new_range->fwnode) { /* range already there */ + ret = -EEXIST; goto end_register; } if (range->flags == LOGIC_PIO_CPU_MMIO && --- linux-5.8.0.orig/lib/radix-tree.c +++ linux-5.8.0/lib/radix-tree.c @@ -20,7 +20,6 @@ #include #include #include -#include #include /* in_interrupt() */ #include #include @@ -28,6 +27,7 @@ #include #include + /* * Radix tree node cache. */ @@ -58,10 +58,12 @@ /* * Per-cpu pool of preloaded nodes */ -DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { - .lock = INIT_LOCAL_LOCK(lock), +struct radix_tree_preload { + unsigned nr; + /* nodes->parent points to next preallocated node */ + struct radix_tree_node *nodes; }; -EXPORT_PER_CPU_SYMBOL_GPL(radix_tree_preloads); +static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, }; static inline struct radix_tree_node *entry_to_node(void *ptr) { @@ -330,14 +332,14 @@ */ gfp_mask &= ~__GFP_ACCOUNT; - local_lock(&radix_tree_preloads.lock); + preempt_disable(); rtp = this_cpu_ptr(&radix_tree_preloads); while (rtp->nr < nr) { - local_unlock(&radix_tree_preloads.lock); + preempt_enable(); node = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); if (node == NULL) goto out; - local_lock(&radix_tree_preloads.lock); + preempt_disable(); rtp = this_cpu_ptr(&radix_tree_preloads); if (rtp->nr < nr) { node->parent = rtp->nodes; @@ -379,7 +381,7 @@ if (gfpflags_allow_blocking(gfp_mask)) return __radix_tree_preload(gfp_mask, RADIX_TREE_PRELOAD_SIZE); /* Preloading doesn't help anything with this gfp mask, skip it */ - local_lock(&radix_tree_preloads.lock); + preempt_disable(); return 0; } EXPORT_SYMBOL(radix_tree_maybe_preload); @@ -1468,7 +1470,7 @@ void idr_preload(gfp_t gfp_mask) { if (__radix_tree_preload(gfp_mask, IDR_PRELOAD_SIZE)) - local_lock(&radix_tree_preloads.lock); + preempt_disable(); } EXPORT_SYMBOL(idr_preload); --- linux-5.8.0.orig/lib/raid6/Makefile +++ linux-5.8.0/lib/raid6/Makefile @@ -48,7 +48,7 @@ endif quiet_cmd_unroll = UNROLL $@ - cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$* < $< > $@ + cmd_unroll = $(AWK) -v N=$* -f $(srctree)/$(src)/unroll.awk < $< > $@ targets += int1.c int2.c int4.c int8.c int16.c int32.c $(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE --- linux-5.8.0.orig/lib/random32.c +++ linux-5.8.0/lib/random32.c @@ -40,16 +40,6 @@ #include #include -#ifdef CONFIG_RANDOM32_SELFTEST -static void __init prandom_state_selftest(void); -#else -static inline void prandom_state_selftest(void) -{ -} -#endif - -DEFINE_PER_CPU(struct rnd_state, net_rand_state); - /** * prandom_u32_state - seeded pseudo-random number generator. * @state: pointer to state structure holding seeded state. @@ -70,25 +60,6 @@ EXPORT_SYMBOL(prandom_u32_state); /** - * prandom_u32 - pseudo random number generator - * - * A 32 bit pseudo-random number is generated using a fast - * algorithm suitable for simulation. This algorithm is NOT - * considered safe for cryptographic use. - */ -u32 prandom_u32(void) -{ - struct rnd_state *state = &get_cpu_var(net_rand_state); - u32 res; - - res = prandom_u32_state(state); - put_cpu_var(net_rand_state); - - return res; -} -EXPORT_SYMBOL(prandom_u32); - -/** * prandom_bytes_state - get the requested number of pseudo-random bytes * * @state: pointer to state structure holding seeded state. @@ -119,20 +90,6 @@ } EXPORT_SYMBOL(prandom_bytes_state); -/** - * prandom_bytes - get the requested number of pseudo-random bytes - * @buf: where to copy the pseudo-random bytes to - * @bytes: the requested number of bytes - */ -void prandom_bytes(void *buf, size_t bytes) -{ - struct rnd_state *state = &get_cpu_var(net_rand_state); - - prandom_bytes_state(state, buf, bytes); - put_cpu_var(net_rand_state); -} -EXPORT_SYMBOL(prandom_bytes); - static void prandom_warmup(struct rnd_state *state) { /* Calling RNG ten times to satisfy recurrence condition */ @@ -148,96 +105,6 @@ prandom_u32_state(state); } -static u32 __extract_hwseed(void) -{ - unsigned int val = 0; - - (void)(arch_get_random_seed_int(&val) || - arch_get_random_int(&val)); - - return val; -} - -static void prandom_seed_early(struct rnd_state *state, u32 seed, - bool mix_with_hwseed) -{ -#define LCG(x) ((x) * 69069U) /* super-duper LCG */ -#define HWSEED() (mix_with_hwseed ? __extract_hwseed() : 0) - state->s1 = __seed(HWSEED() ^ LCG(seed), 2U); - state->s2 = __seed(HWSEED() ^ LCG(state->s1), 8U); - state->s3 = __seed(HWSEED() ^ LCG(state->s2), 16U); - state->s4 = __seed(HWSEED() ^ LCG(state->s3), 128U); -} - -/** - * prandom_seed - add entropy to pseudo random number generator - * @entropy: entropy value - * - * Add some additional entropy to the prandom pool. - */ -void prandom_seed(u32 entropy) -{ - int i; - /* - * No locking on the CPUs, but then somewhat random results are, well, - * expected. - */ - for_each_possible_cpu(i) { - struct rnd_state *state = &per_cpu(net_rand_state, i); - - state->s1 = __seed(state->s1 ^ entropy, 2U); - prandom_warmup(state); - } -} -EXPORT_SYMBOL(prandom_seed); - -/* - * Generate some initially weak seeding values to allow - * to start the prandom_u32() engine. - */ -static int __init prandom_init(void) -{ - int i; - - prandom_state_selftest(); - - for_each_possible_cpu(i) { - struct rnd_state *state = &per_cpu(net_rand_state, i); - u32 weak_seed = (i + jiffies) ^ random_get_entropy(); - - prandom_seed_early(state, weak_seed, true); - prandom_warmup(state); - } - - return 0; -} -core_initcall(prandom_init); - -static void __prandom_timer(struct timer_list *unused); - -static DEFINE_TIMER(seed_timer, __prandom_timer); - -static void __prandom_timer(struct timer_list *unused) -{ - u32 entropy; - unsigned long expires; - - get_random_bytes(&entropy, sizeof(entropy)); - prandom_seed(entropy); - - /* reseed every ~60 seconds, in [40 .. 80) interval with slack */ - expires = 40 + prandom_u32_max(40); - seed_timer.expires = jiffies + msecs_to_jiffies(expires * MSEC_PER_SEC); - - add_timer(&seed_timer); -} - -static void __init __prandom_start_seed_timer(void) -{ - seed_timer.expires = jiffies + msecs_to_jiffies(40 * MSEC_PER_SEC); - add_timer(&seed_timer); -} - void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state) { int i; @@ -257,51 +124,6 @@ } EXPORT_SYMBOL(prandom_seed_full_state); -/* - * Generate better values after random number generator - * is fully initialized. - */ -static void __prandom_reseed(bool late) -{ - unsigned long flags; - static bool latch = false; - static DEFINE_SPINLOCK(lock); - - /* Asking for random bytes might result in bytes getting - * moved into the nonblocking pool and thus marking it - * as initialized. In this case we would double back into - * this function and attempt to do a late reseed. - * Ignore the pointless attempt to reseed again if we're - * already waiting for bytes when the nonblocking pool - * got initialized. - */ - - /* only allow initial seeding (late == false) once */ - if (!spin_trylock_irqsave(&lock, flags)) - return; - - if (latch && !late) - goto out; - - latch = true; - prandom_seed_full_state(&net_rand_state); -out: - spin_unlock_irqrestore(&lock, flags); -} - -void prandom_reseed_late(void) -{ - __prandom_reseed(true); -} - -static int __init prandom_reseed(void) -{ - __prandom_reseed(false); - __prandom_start_seed_timer(); - return 0; -} -late_initcall(prandom_reseed); - #ifdef CONFIG_RANDOM32_SELFTEST static struct prandom_test1 { u32 seed; @@ -421,7 +243,28 @@ { 407983964U, 921U, 728767059U }, }; -static void __init prandom_state_selftest(void) +static u32 __extract_hwseed(void) +{ + unsigned int val = 0; + + (void)(arch_get_random_seed_int(&val) || + arch_get_random_int(&val)); + + return val; +} + +static void prandom_seed_early(struct rnd_state *state, u32 seed, + bool mix_with_hwseed) +{ +#define LCG(x) ((x) * 69069U) /* super-duper LCG */ +#define HWSEED() (mix_with_hwseed ? __extract_hwseed() : 0) + state->s1 = __seed(HWSEED() ^ LCG(seed), 2U); + state->s2 = __seed(HWSEED() ^ LCG(state->s1), 8U); + state->s3 = __seed(HWSEED() ^ LCG(state->s2), 16U); + state->s4 = __seed(HWSEED() ^ LCG(state->s3), 128U); +} + +static int __init prandom_state_selftest(void) { int i, j, errors = 0, runs = 0; bool error = false; @@ -461,5 +304,266 @@ pr_warn("prandom: %d/%d self tests failed\n", errors, runs); else pr_info("prandom: %d self tests passed\n", runs); + return 0; } +core_initcall(prandom_state_selftest); #endif + +/* + * The prandom_u32() implementation is now completely separate from the + * prandom_state() functions, which are retained (for now) for compatibility. + * + * Because of (ab)use in the networking code for choosing random TCP/UDP port + * numbers, which open DoS possibilities if guessable, we want something + * stronger than a standard PRNG. But the performance requirements of + * the network code do not allow robust crypto for this application. + * + * So this is a homebrew Junior Spaceman implementation, based on the + * lowest-latency trustworthy crypto primitive available, SipHash. + * (The authors of SipHash have not been consulted about this abuse of + * their work.) + * + * Standard SipHash-2-4 uses 2n+4 rounds to hash n words of input to + * one word of output. This abbreviated version uses 2 rounds per word + * of output. + */ + +struct siprand_state { + unsigned long v0; + unsigned long v1; + unsigned long v2; + unsigned long v3; +}; + +static DEFINE_PER_CPU(struct siprand_state, net_rand_state) __latent_entropy; + +/* + * This is the core CPRNG function. As "pseudorandom", this is not used + * for truly valuable things, just intended to be a PITA to guess. + * For maximum speed, we do just two SipHash rounds per word. This is + * the same rate as 4 rounds per 64 bits that SipHash normally uses, + * so hopefully it's reasonably secure. + * + * There are two changes from the official SipHash finalization: + * - We omit some constants XORed with v2 in the SipHash spec as irrelevant; + * they are there only to make the output rounds distinct from the input + * rounds, and this application has no input rounds. + * - Rather than returning v0^v1^v2^v3, return v1+v3. + * If you look at the SipHash round, the last operation on v3 is + * "v3 ^= v0", so "v0 ^ v3" just undoes that, a waste of time. + * Likewise "v1 ^= v2". (The rotate of v2 makes a difference, but + * it still cancels out half of the bits in v2 for no benefit.) + * Second, since the last combining operation was xor, continue the + * pattern of alternating xor/add for a tiny bit of extra non-linearity. + */ +static inline u32 siprand_u32(struct siprand_state *s) +{ + unsigned long v0 = s->v0, v1 = s->v1, v2 = s->v2, v3 = s->v3; + + PRND_SIPROUND(v0, v1, v2, v3); + PRND_SIPROUND(v0, v1, v2, v3); + s->v0 = v0; s->v1 = v1; s->v2 = v2; s->v3 = v3; + return v1 + v3; +} + + +/** + * prandom_u32 - pseudo random number generator + * + * A 32 bit pseudo-random number is generated using a fast + * algorithm suitable for simulation. This algorithm is NOT + * considered safe for cryptographic use. + */ +u32 prandom_u32(void) +{ + struct siprand_state *state = get_cpu_ptr(&net_rand_state); + u32 res = siprand_u32(state); + + put_cpu_ptr(&net_rand_state); + return res; +} +EXPORT_SYMBOL(prandom_u32); + +/** + * prandom_bytes - get the requested number of pseudo-random bytes + * @buf: where to copy the pseudo-random bytes to + * @bytes: the requested number of bytes + */ +void prandom_bytes(void *buf, size_t bytes) +{ + struct siprand_state *state = get_cpu_ptr(&net_rand_state); + u8 *ptr = buf; + + while (bytes >= sizeof(u32)) { + put_unaligned(siprand_u32(state), (u32 *)ptr); + ptr += sizeof(u32); + bytes -= sizeof(u32); + } + + if (bytes > 0) { + u32 rem = siprand_u32(state); + + do { + *ptr++ = (u8)rem; + rem >>= BITS_PER_BYTE; + } while (--bytes > 0); + } + put_cpu_ptr(&net_rand_state); +} +EXPORT_SYMBOL(prandom_bytes); + +/** + * prandom_seed - add entropy to pseudo random number generator + * @entropy: entropy value + * + * Add some additional seed material to the prandom pool. + * The "entropy" is actually our IP address (the only caller is + * the network code), not for unpredictability, but to ensure that + * different machines are initialized differently. + */ +void prandom_seed(u32 entropy) +{ + int i; + + add_device_randomness(&entropy, sizeof(entropy)); + + for_each_possible_cpu(i) { + struct siprand_state *state = per_cpu_ptr(&net_rand_state, i); + unsigned long v0 = state->v0, v1 = state->v1; + unsigned long v2 = state->v2, v3 = state->v3; + + do { + v3 ^= entropy; + PRND_SIPROUND(v0, v1, v2, v3); + PRND_SIPROUND(v0, v1, v2, v3); + v0 ^= entropy; + } while (unlikely(!v0 || !v1 || !v2 || !v3)); + + WRITE_ONCE(state->v0, v0); + WRITE_ONCE(state->v1, v1); + WRITE_ONCE(state->v2, v2); + WRITE_ONCE(state->v3, v3); + } +} +EXPORT_SYMBOL(prandom_seed); + +/* + * Generate some initially weak seeding values to allow + * the prandom_u32() engine to be started. + */ +static int __init prandom_init_early(void) +{ + int i; + unsigned long v0, v1, v2, v3; + + if (!arch_get_random_long(&v0)) + v0 = jiffies; + if (!arch_get_random_long(&v1)) + v1 = random_get_entropy(); + v2 = v0 ^ PRND_K0; + v3 = v1 ^ PRND_K1; + + for_each_possible_cpu(i) { + struct siprand_state *state; + + v3 ^= i; + PRND_SIPROUND(v0, v1, v2, v3); + PRND_SIPROUND(v0, v1, v2, v3); + v0 ^= i; + + state = per_cpu_ptr(&net_rand_state, i); + state->v0 = v0; state->v1 = v1; + state->v2 = v2; state->v3 = v3; + } + + return 0; +} +core_initcall(prandom_init_early); + + +/* Stronger reseeding when available, and periodically thereafter. */ +static void prandom_reseed(struct timer_list *unused); + +static DEFINE_TIMER(seed_timer, prandom_reseed); + +static void prandom_reseed(struct timer_list *unused) +{ + unsigned long expires; + int i; + + /* + * Reinitialize each CPU's PRNG with 128 bits of key. + * No locking on the CPUs, but then somewhat random results are, + * well, expected. + */ + for_each_possible_cpu(i) { + struct siprand_state *state; + unsigned long v0 = get_random_long(), v2 = v0 ^ PRND_K0; + unsigned long v1 = get_random_long(), v3 = v1 ^ PRND_K1; +#if BITS_PER_LONG == 32 + int j; + + /* + * On 32-bit machines, hash in two extra words to + * approximate 128-bit key length. Not that the hash + * has that much security, but this prevents a trivial + * 64-bit brute force. + */ + for (j = 0; j < 2; j++) { + unsigned long m = get_random_long(); + + v3 ^= m; + PRND_SIPROUND(v0, v1, v2, v3); + PRND_SIPROUND(v0, v1, v2, v3); + v0 ^= m; + } +#endif + /* + * Probably impossible in practice, but there is a + * theoretical risk that a race between this reseeding + * and the target CPU writing its state back could + * create the all-zero SipHash fixed point. + * + * To ensure that never happens, ensure the state + * we write contains no zero words. + */ + state = per_cpu_ptr(&net_rand_state, i); + WRITE_ONCE(state->v0, v0 ? v0 : -1ul); + WRITE_ONCE(state->v1, v1 ? v1 : -1ul); + WRITE_ONCE(state->v2, v2 ? v2 : -1ul); + WRITE_ONCE(state->v3, v3 ? v3 : -1ul); + } + + /* reseed every ~60 seconds, in [40 .. 80) interval with slack */ + expires = round_jiffies(jiffies + 40 * HZ + prandom_u32_max(40 * HZ)); + mod_timer(&seed_timer, expires); +} + +/* + * The random ready callback can be called from almost any interrupt. + * To avoid worrying about whether it's safe to delay that interrupt + * long enough to seed all CPUs, just schedule an immediate timer event. + */ +static void prandom_timer_start(struct random_ready_callback *unused) +{ + mod_timer(&seed_timer, jiffies); +} + +/* + * Start periodic full reseeding as soon as strong + * random numbers are available. + */ +static int __init prandom_init_late(void) +{ + static struct random_ready_callback random_ready = { + .func = prandom_timer_start + }; + int ret = add_random_ready_callback(&random_ready); + + if (ret == -EALREADY) { + prandom_timer_start(&random_ready); + ret = 0; + } + return ret; +} +late_initcall(prandom_init_late); --- linux-5.8.0.orig/lib/scatterlist.c +++ linux-5.8.0/lib/scatterlist.c @@ -514,7 +514,7 @@ elem_len = min_t(u64, length, PAGE_SIZE << order); page = alloc_pages(gfp, order); if (!page) { - sgl_free(sgl); + sgl_free_order(sgl, order); return NULL; } --- linux-5.8.0.orig/lib/string.c +++ linux-5.8.0/lib/string.c @@ -272,6 +272,30 @@ } EXPORT_SYMBOL(strscpy_pad); +/** + * stpcpy - copy a string from src to dest returning a pointer to the new end + * of dest, including src's %NUL-terminator. May overrun dest. + * @dest: pointer to end of string being copied into. Must be large enough + * to receive copy. + * @src: pointer to the beginning of string being copied from. Must not overlap + * dest. + * + * stpcpy differs from strcpy in a key way: the return value is a pointer + * to the new %NUL-terminating character in @dest. (For strcpy, the return + * value is a pointer to the start of @dest). This interface is considered + * unsafe as it doesn't perform bounds checking of the inputs. As such it's + * not recommended for usage. Instead, its definition is provided in case + * the compiler lowers other libcalls to stpcpy. + */ +char *stpcpy(char *__restrict__ dest, const char *__restrict__ src); +char *stpcpy(char *__restrict__ dest, const char *__restrict__ src) +{ + while ((*dest++ = *src++) != '\0') + /* nothing */; + return --dest; +} +EXPORT_SYMBOL(stpcpy); + #ifndef __HAVE_ARCH_STRCAT /** * strcat - Append one %NUL-terminated string to another --- linux-5.8.0.orig/lib/strncpy_from_user.c +++ linux-5.8.0/lib/strncpy_from_user.c @@ -34,17 +34,32 @@ goto byte_at_a_time; while (max >= sizeof(unsigned long)) { - unsigned long c, data; + unsigned long c, data, mask; /* Fall back to byte-at-a-time if we get a page fault */ unsafe_get_user(c, (unsigned long __user *)(src+res), byte_at_a_time); - *(unsigned long *)(dst+res) = c; + /* + * Note that we mask out the bytes following the NUL. This is + * important to do because string oblivious code may read past + * the NUL. For those routines, we don't want to give them + * potentially random bytes after the NUL in `src`. + * + * One example of such code is BPF map keys. BPF treats map keys + * as an opaque set of bytes. Without the post-NUL mask, any BPF + * maps keyed by strings returned from strncpy_from_user() may + * have multiple entries for semantically identical strings. + */ if (has_zero(c, &data, &constants)) { data = prep_zero_mask(c, data, &constants); data = create_zero_mask(data); + mask = zero_bytemask(data); + *(unsigned long *)(dst+res) = c & mask; return res + find_zero(data); } + + *(unsigned long *)(dst+res) = c; + res += sizeof(unsigned long); max -= sizeof(unsigned long); } --- linux-5.8.0.orig/lib/syscall.c +++ linux-5.8.0/lib/syscall.c @@ -7,6 +7,7 @@ static int collect_syscall(struct task_struct *target, struct syscall_info *info) { + unsigned long args[6] = { }; struct pt_regs *regs; if (!try_get_task_stack(target)) { @@ -27,8 +28,14 @@ info->data.nr = syscall_get_nr(target, regs); if (info->data.nr != -1L) - syscall_get_arguments(target, regs, - (unsigned long *)&info->data.args[0]); + syscall_get_arguments(target, regs, args); + + info->data.args[0] = args[0]; + info->data.args[1] = args[1]; + info->data.args[2] = args[2]; + info->data.args[3] = args[3]; + info->data.args[4] = args[4]; + info->data.args[5] = args[5]; put_task_stack(target); return 0; --- linux-5.8.0.orig/lib/test_bpf.c +++ linux-5.8.0/lib/test_bpf.c @@ -5275,31 +5275,21 @@ { /* Mainly checking JIT here. */ "BPF_MAXINSNS: Ctx heavy transformations", { }, -#if defined(CONFIG_BPF_JIT_ALWAYS_ON) && defined(CONFIG_S390) - CLASSIC | FLAG_EXPECTED_FAIL, -#else CLASSIC, -#endif { }, { { 1, SKB_VLAN_PRESENT }, { 10, SKB_VLAN_PRESENT } }, .fill_helper = bpf_fill_maxinsns6, - .expected_errcode = -ENOTSUPP, }, { /* Mainly checking JIT here. */ "BPF_MAXINSNS: Call heavy transformations", { }, -#if defined(CONFIG_BPF_JIT_ALWAYS_ON) && defined(CONFIG_S390) - CLASSIC | FLAG_NO_DATA | FLAG_EXPECTED_FAIL, -#else CLASSIC | FLAG_NO_DATA, -#endif { }, { { 1, 0 }, { 10, 0 } }, .fill_helper = bpf_fill_maxinsns7, - .expected_errcode = -ENOTSUPP, }, { /* Mainly checking JIT here. */ "BPF_MAXINSNS: Jump heavy test", @@ -5350,28 +5340,18 @@ { "BPF_MAXINSNS: exec all MSH", { }, -#if defined(CONFIG_BPF_JIT_ALWAYS_ON) && defined(CONFIG_S390) - CLASSIC | FLAG_EXPECTED_FAIL, -#else CLASSIC, -#endif { 0xfa, 0xfb, 0xfc, 0xfd, }, { { 4, 0xababab83 } }, .fill_helper = bpf_fill_maxinsns13, - .expected_errcode = -ENOTSUPP, }, { "BPF_MAXINSNS: ld_abs+get_processor_id", { }, -#if defined(CONFIG_BPF_JIT_ALWAYS_ON) && defined(CONFIG_S390) - CLASSIC | FLAG_EXPECTED_FAIL, -#else CLASSIC, -#endif { }, { { 1, 0xbee } }, .fill_helper = bpf_fill_ld_abs_get_processor_id, - .expected_errcode = -ENOTSUPP, }, /* * LD_IND / LD_ABS on fragmented SKBs --- linux-5.8.0.orig/lib/test_firmware.c +++ linux-5.8.0/lib/test_firmware.c @@ -26,6 +26,8 @@ #include #include +MODULE_IMPORT_NS(TEST_FIRMWARE); + #define TEST_FIRMWARE_NAME "test-firmware.bin" #define TEST_FIRMWARE_NUM_REQS 4 #define TEST_FIRMWARE_BUF_SIZE SZ_1K @@ -489,6 +491,9 @@ static DEVICE_ATTR_WO(trigger_request); #ifdef CONFIG_EFI_EMBEDDED_FIRMWARE +extern struct list_head efi_embedded_fw_list; +extern bool efi_embedded_fw_checked; + static ssize_t trigger_request_platform_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -501,6 +506,7 @@ }; struct efi_embedded_fw efi_embedded_fw; const struct firmware *firmware = NULL; + bool saved_efi_embedded_fw_checked; char *name; int rc; @@ -513,6 +519,8 @@ efi_embedded_fw.data = (void *)test_data; efi_embedded_fw.length = sizeof(test_data); list_add(&efi_embedded_fw.list, &efi_embedded_fw_list); + saved_efi_embedded_fw_checked = efi_embedded_fw_checked; + efi_embedded_fw_checked = true; pr_info("loading '%s'\n", name); rc = firmware_request_platform(&firmware, name, dev); @@ -530,6 +538,7 @@ rc = count; out: + efi_embedded_fw_checked = saved_efi_embedded_fw_checked; release_firmware(firmware); list_del(&efi_embedded_fw.list); kfree(name); --- linux-5.8.0.orig/lib/test_kmod.c +++ linux-5.8.0/lib/test_kmod.c @@ -745,7 +745,7 @@ break; case TEST_KMOD_FS_TYPE: kfree_const(config->test_fs); - config->test_driver = NULL; + config->test_fs = NULL; copied = config_copy_test_fs(config, test_str, strlen(test_str)); break; --- linux-5.8.0.orig/lib/test_lockup.c +++ linux-5.8.0/lib/test_lockup.c @@ -512,8 +512,8 @@ if (test_file_path[0]) { test_file = filp_open(test_file_path, O_RDONLY, 0); if (IS_ERR(test_file)) { - pr_err("cannot find file_path\n"); - return -EINVAL; + pr_err("failed to open %s: %ld\n", test_file_path, PTR_ERR(test_file)); + return PTR_ERR(test_file); } test_inode = file_inode(test_file); } else if (test_lock_inode || --- linux-5.8.0.orig/lib/ubsan.c +++ linux-5.8.0/lib/ubsan.c @@ -427,3 +427,34 @@ ubsan_epilogue(); } EXPORT_SYMBOL(__ubsan_handle_load_invalid_value); + +void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr, + unsigned long align, + unsigned long offset); +void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr, + unsigned long align, + unsigned long offset) +{ + struct alignment_assumption_data *data = _data; + unsigned long real_ptr; + + if (suppress_report(&data->location)) + return; + + ubsan_prologue(&data->location, "alignment-assumption"); + + if (offset) + pr_err("assumption of %lu byte alignment (with offset of %lu byte) for pointer of type %s failed", + align, offset, data->type->type_name); + else + pr_err("assumption of %lu byte alignment for pointer of type %s failed", + align, data->type->type_name); + + real_ptr = ptr - offset; + pr_err("%saddress is %lu aligned, misalignment offset is %lu bytes", + offset ? "offset " : "", BIT(real_ptr ? __ffs(real_ptr) : 0), + real_ptr & (align - 1)); + + ubsan_epilogue(); +} +EXPORT_SYMBOL(__ubsan_handle_alignment_assumption); --- linux-5.8.0.orig/lib/ubsan.h +++ linux-5.8.0/lib/ubsan.h @@ -78,6 +78,12 @@ struct type_descriptor *type; }; +struct alignment_assumption_data { + struct source_location location; + struct source_location assumption_location; + struct type_descriptor *type; +}; + #if defined(CONFIG_ARCH_SUPPORTS_INT128) typedef __int128 s_max; typedef unsigned __int128 u_max; --- linux-5.8.0.orig/lib/vsprintf.c +++ linux-5.8.0/lib/vsprintf.c @@ -2092,6 +2092,29 @@ return widen_string(buf, buf - buf_start, end, spec); } +#ifdef CONFIG_KMSG_IDS + +unsigned long long __jhash_string(const char *str); + +static noinline_for_stack +char *jhash_string(char *buf, char *end, const char *str, const char *fmt) +{ + struct printf_spec spec; + unsigned long long num; + + num = __jhash_string(str); + + spec.type = FORMAT_TYPE_PTR; + spec.field_width = 6; + spec.flags = SMALL | ZEROPAD; + spec.base = 16; + spec.precision = -1; + + return number(buf, end, num, spec); +} + +#endif + /* * Show a '%p' thing. A kernel extension is that the '%p' is followed * by an extra set of alphanumeric characters that are extended format @@ -2201,6 +2224,7 @@ * Without an option prints the full name of the node * f full name * P node name, including a possible unit address + * - 'j' Kernel message catalog jhash for System z * - 'x' For printing the address. Equivalent to "%lx". * - '[ku]s' For a BPF/tracing related format specifier, e.g. used out of * bpf_trace_printk() where [ku] prefix specifies either kernel (k) @@ -2297,6 +2321,10 @@ default: return error_string(buf, end, "(einval)", spec); } +#ifdef CONFIG_KMSG_IDS + case 'j': + return jhash_string(buf, end, ptr, fmt); +#endif } /* default is to _not_ leak addresses, hash before printing */ --- linux-5.8.0.orig/lib/zlib_dfltcc/Makefile +++ linux-5.8.0/lib/zlib_dfltcc/Makefile @@ -8,4 +8,4 @@ obj-$(CONFIG_ZLIB_DFLTCC) += zlib_dfltcc.o -zlib_dfltcc-objs := dfltcc.o dfltcc_deflate.o dfltcc_inflate.o dfltcc_syms.o +zlib_dfltcc-objs := dfltcc.o dfltcc_deflate.o dfltcc_inflate.o --- linux-5.8.0.orig/lib/zlib_dfltcc/dfltcc.c +++ linux-5.8.0/lib/zlib_dfltcc/dfltcc.c @@ -1,7 +1,8 @@ // SPDX-License-Identifier: Zlib /* dfltcc.c - SystemZ DEFLATE CONVERSION CALL support. */ -#include +#include +#include #include "dfltcc_util.h" #include "dfltcc.h" @@ -53,3 +54,6 @@ dfltcc_state->dht_threshold = DFLTCC_DHT_MIN_SAMPLE_SIZE; dfltcc_state->param.ribm = DFLTCC_RIBM; } +EXPORT_SYMBOL(dfltcc_reset); + +MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/lib/zlib_dfltcc/dfltcc_deflate.c +++ linux-5.8.0/lib/zlib_dfltcc/dfltcc_deflate.c @@ -4,6 +4,7 @@ #include "dfltcc_util.h" #include "dfltcc.h" #include +#include #include /* @@ -34,6 +35,7 @@ return 1; } +EXPORT_SYMBOL(dfltcc_can_deflate); static void dfltcc_gdht( z_streamp strm @@ -277,3 +279,4 @@ goto again; /* deflate() must use all input or all output */ return 1; } +EXPORT_SYMBOL(dfltcc_deflate); --- linux-5.8.0.orig/lib/zlib_dfltcc/dfltcc_inflate.c +++ linux-5.8.0/lib/zlib_dfltcc/dfltcc_inflate.c @@ -4,6 +4,7 @@ #include "dfltcc_util.h" #include "dfltcc.h" #include +#include #include /* @@ -29,6 +30,7 @@ return is_bit_set(dfltcc_state->af.fns, DFLTCC_XPND) && is_bit_set(dfltcc_state->af.fmts, DFLTCC_FMT0); } +EXPORT_SYMBOL(dfltcc_can_inflate); static int dfltcc_was_inflate_used( z_streamp strm @@ -123,7 +125,7 @@ param->ho = (state->write - state->whave) & ((1 << HB_BITS) - 1); if (param->hl) param->nt = 0; /* Honor history for the first block */ - param->cv = state->flags ? REVERSE(state->check) : state->check; + param->cv = state->check; /* Inflate */ do { @@ -136,7 +138,7 @@ state->bits = param->sbb; state->whave = param->hl; state->write = (param->ho + param->hl) & ((1 << HB_BITS) - 1); - state->check = state->flags ? REVERSE(param->cv) : param->cv; + state->check = param->cv; if (cc == DFLTCC_CC_OP2_CORRUPT && param->oesc != 0) { /* Report an error if stream is corrupted */ state->mode = BAD; @@ -147,3 +149,4 @@ return (cc == DFLTCC_CC_OP1_TOO_SHORT || cc == DFLTCC_CC_OP2_TOO_SHORT) ? DFLTCC_INFLATE_BREAK : DFLTCC_INFLATE_CONTINUE; } +EXPORT_SYMBOL(dfltcc_inflate); --- linux-5.8.0.orig/mm/Kconfig +++ linux-5.8.0/mm/Kconfig @@ -710,19 +710,6 @@ returned by an alloc(). This handle must be mapped in order to access the allocated space. -config ZSMALLOC_PGTABLE_MAPPING - bool "Use page table mapping to access object in zsmalloc" - depends on ZSMALLOC=y - help - By default, zsmalloc uses a copy-based object mapping method to - access allocations that span two pages. However, if a particular - architecture (ex, ARM) performs VM mapping faster than copying, - then you should select this. This causes zsmalloc to use page table - mapping rather than copying for object mapping. - - You can check speed with zsmalloc benchmark: - https://github.com/spartacus06/zsmapbench - config ZSMALLOC_STAT bool "Export zsmalloc statistics" depends on ZSMALLOC --- linux-5.8.0.orig/mm/Makefile +++ linux-5.8.0/mm/Makefile @@ -52,7 +52,7 @@ mm_init.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ - debug.o gup.o $(mmu-y) + prfile.o debug.o gup.o $(mmu-y) # Give 'page_alloc' its own module-parameter namespace page-alloc-y := page_alloc.o --- linux-5.8.0.orig/mm/cma.c +++ linux-5.8.0/mm/cma.c @@ -93,17 +93,15 @@ mutex_unlock(&cma->lock); } -static int __init cma_activate_area(struct cma *cma) +static void __init cma_activate_area(struct cma *cma) { unsigned long base_pfn = cma->base_pfn, pfn = base_pfn; unsigned i = cma->count >> pageblock_order; struct zone *zone; cma->bitmap = bitmap_zalloc(cma_bitmap_maxno(cma), GFP_KERNEL); - if (!cma->bitmap) { - cma->count = 0; - return -ENOMEM; - } + if (!cma->bitmap) + goto out_error; WARN_ON_ONCE(!pfn_valid(pfn)); zone = page_zone(pfn_to_page(pfn)); @@ -133,25 +131,22 @@ spin_lock_init(&cma->mem_head_lock); #endif - return 0; + return; not_in_zone: - pr_err("CMA area %s could not be activated\n", cma->name); bitmap_free(cma->bitmap); +out_error: cma->count = 0; - return -EINVAL; + pr_err("CMA area %s could not be activated\n", cma->name); + return; } static int __init cma_init_reserved_areas(void) { int i; - for (i = 0; i < cma_area_count; i++) { - int ret = cma_activate_area(&cma_areas[i]); - - if (ret) - return ret; - } + for (i = 0; i < cma_area_count; i++) + cma_activate_area(&cma_areas[i]); return 0; } @@ -491,7 +486,7 @@ page_kasan_tag_reset(page + i); } - if (ret && !no_warn) { + if (ret && !no_warn && printk_ratelimit()) { pr_err("%s: alloc failed, req-size: %zu pages, ret: %d\n", __func__, count, ret); cma_debug_show_areas(cma); --- linux-5.8.0.orig/mm/compaction.c +++ linux-5.8.0/mm/compaction.c @@ -800,6 +800,10 @@ * delay for some time until fewer pages are isolated */ while (unlikely(too_many_isolated(pgdat))) { + /* stop isolation if there are still pages not migrated */ + if (cc->nr_migratepages) + return 0; + /* async migration should just abort */ if (cc->mode == MIGRATE_ASYNC) return 0; @@ -995,8 +999,8 @@ isolate_success: list_add(&page->lru, &cc->migratepages); - cc->nr_migratepages++; - nr_isolated++; + cc->nr_migratepages += compound_nr(page); + nr_isolated += compound_nr(page); /* * Avoid isolating too much unless this block is being @@ -1004,7 +1008,7 @@ * or a lock is contended. For contention, isolate quickly to * potentially remove one source of contention. */ - if (cc->nr_migratepages == COMPACT_CLUSTER_MAX && + if (cc->nr_migratepages >= COMPACT_CLUSTER_MAX && !cc->rescan && !cc->contended) { ++low_pfn; break; @@ -1115,7 +1119,7 @@ if (!pfn) break; - if (cc->nr_migratepages == COMPACT_CLUSTER_MAX) + if (cc->nr_migratepages >= COMPACT_CLUSTER_MAX) break; } @@ -1227,7 +1231,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn, unsigned long nr_isolated) { unsigned long start_pfn, end_pfn; - struct page *page = pfn_to_page(pfn); + struct page *page; /* Do not search around if there are enough pages already */ if (cc->nr_freepages >= cc->nr_migratepages) @@ -1238,8 +1242,12 @@ return; /* Pageblock boundaries */ - start_pfn = pageblock_start_pfn(pfn); - end_pfn = min(pageblock_end_pfn(pfn), zone_end_pfn(cc->zone)) - 1; + start_pfn = max(pageblock_start_pfn(pfn), cc->zone->zone_start_pfn); + end_pfn = min(pageblock_end_pfn(pfn), zone_end_pfn(cc->zone)); + + page = pageblock_pfn_to_page(start_pfn, end_pfn, cc->zone); + if (!page) + return; /* Scan before */ if (start_pfn != pfn) { @@ -1281,7 +1289,7 @@ { unsigned int limit = min(1U, freelist_scan_limit(cc) >> 1); unsigned int nr_scanned = 0; - unsigned long low_pfn, min_pfn, high_pfn = 0, highest = 0; + unsigned long low_pfn, min_pfn, highest = 0; unsigned long nr_isolated = 0; unsigned long distance; struct page *page = NULL; @@ -1326,6 +1334,7 @@ struct page *freepage; unsigned long flags; unsigned int order_scanned = 0; + unsigned long high_pfn = 0; if (!area->nr_free) continue; @@ -1340,7 +1349,8 @@ pfn = page_to_pfn(freepage); if (pfn >= highest) - highest = pageblock_start_pfn(pfn); + highest = max(pageblock_start_pfn(pfn), + cc->zone->zone_start_pfn); if (pfn >= low_pfn) { cc->fast_search_fail = 0; @@ -1410,7 +1420,8 @@ } else { if (cc->direct_compaction && pfn_valid(min_pfn)) { page = pageblock_pfn_to_page(min_pfn, - pageblock_end_pfn(min_pfn), + min(pageblock_end_pfn(min_pfn), + zone_end_pfn(cc->zone)), cc->zone); cc->free_pfn = min_pfn; } @@ -1640,6 +1651,7 @@ unsigned long pfn = cc->migrate_pfn; unsigned long high_pfn; int order; + bool found_block = false; /* Skip hints are relied on to avoid repeats on the fast search */ if (cc->ignore_skip_hint) @@ -1682,7 +1694,7 @@ high_pfn = pageblock_start_pfn(cc->migrate_pfn + distance); for (order = cc->order - 1; - order >= PAGE_ALLOC_COSTLY_ORDER && pfn == cc->migrate_pfn && nr_scanned < limit; + order >= PAGE_ALLOC_COSTLY_ORDER && !found_block && nr_scanned < limit; order--) { struct free_area *area = &cc->zone->free_area[order]; struct list_head *freelist; @@ -1697,7 +1709,11 @@ list_for_each_entry(freepage, freelist, lru) { unsigned long free_pfn; - nr_scanned++; + if (nr_scanned++ >= limit) { + move_freelist_tail(freelist, freepage); + break; + } + free_pfn = page_to_pfn(freepage); if (free_pfn < high_pfn) { /* @@ -1706,12 +1722,8 @@ * the list assumes an entry is deleted, not * reordered. */ - if (get_pageblock_skip(freepage)) { - if (list_is_last(freelist, &freepage->lru)) - break; - + if (get_pageblock_skip(freepage)) continue; - } /* Reorder to so a future search skips recent pages */ move_freelist_tail(freelist, freepage); @@ -1719,15 +1731,10 @@ update_fast_start_pfn(cc, free_pfn); pfn = pageblock_start_pfn(free_pfn); cc->fast_search_fail = 0; + found_block = true; set_pageblock_skip(freepage); break; } - - if (nr_scanned >= limit) { - cc->fast_search_fail++; - move_freelist_tail(freelist, freepage); - break; - } } spin_unlock_irqrestore(&cc->zone->lock, flags); } @@ -1738,9 +1745,10 @@ * If fast scanning failed then use a cached entry for a page block * that had free pages as the basis for starting a linear scan. */ - if (pfn == cc->migrate_pfn) + if (!found_block) { + cc->fast_search_fail++; pfn = reinit_migrate_pfn(cc); - + } return pfn; } --- linux-5.8.0.orig/mm/filemap.c +++ linux-5.8.0/mm/filemap.c @@ -826,15 +826,16 @@ } EXPORT_SYMBOL_GPL(replace_page_cache_page); -static int __add_to_page_cache_locked(struct page *page, - struct address_space *mapping, - pgoff_t offset, gfp_t gfp_mask, - void **shadowp) +noinline int __add_to_page_cache_locked(struct page *page, + struct address_space *mapping, + pgoff_t offset, gfp_t gfp_mask, + void **shadowp) { XA_STATE(xas, &mapping->i_pages, offset); int huge = PageHuge(page); int error; void *old; + bool charged = false; VM_BUG_ON_PAGE(!PageLocked(page), page); VM_BUG_ON_PAGE(PageSwapBacked(page), page); @@ -848,6 +849,7 @@ error = mem_cgroup_charge(page, current->mm, gfp_mask); if (error) goto error; + charged = true; } do { @@ -875,6 +877,8 @@ if (xas_error(&xas)) { error = xas_error(&xas); + if (charged) + mem_cgroup_uncharge(page); goto error; } @@ -1311,11 +1315,19 @@ rotate_reclaimable_page(page); } + /* + * Writeback does not hold a page reference of its own, relying + * on truncation to wait for the clearing of PG_writeback. + * But here we must make sure that the page is not freed and + * reused before the wake_up_page(). + */ + get_page(page); if (!test_clear_page_writeback(page)) BUG(); smp_mb__after_atomic(); wake_up_page(page, PG_writeback); + put_page(page); } EXPORT_SYMBOL(end_page_writeback); @@ -2676,7 +2688,7 @@ vm_fault_t ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); - file_update_time(vmf->vma->vm_file); + vma_file_update_time(vmf->vma); lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); --- linux-5.8.0.orig/mm/gup.c +++ linux-5.8.0/mm/gup.c @@ -123,6 +123,28 @@ return NULL; } +static void put_compound_head(struct page *page, int refs, unsigned int flags) +{ + if (flags & FOLL_PIN) { + mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, + refs); + + if (hpage_pincount_available(page)) + hpage_pincount_sub(page, refs); + else + refs *= GUP_PIN_COUNTING_BIAS; + } + + VM_BUG_ON_PAGE(page_ref_count(page) < refs, page); + /* + * Calling put_page() for each ref is unnecessarily slow. Only the last + * ref needs a put_page(). + */ + if (refs > 1) + page_ref_sub(page, refs - 1); + put_page(page); +} + /** * try_grab_page() - elevate a page's refcount by a flag-dependent amount * @@ -177,41 +199,6 @@ return true; } -#ifdef CONFIG_DEV_PAGEMAP_OPS -static bool __unpin_devmap_managed_user_page(struct page *page) -{ - int count, refs = 1; - - if (!page_is_devmap_managed(page)) - return false; - - if (hpage_pincount_available(page)) - hpage_pincount_sub(page, 1); - else - refs = GUP_PIN_COUNTING_BIAS; - - count = page_ref_sub_return(page, refs); - - mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, 1); - /* - * devmap page refcounts are 1-based, rather than 0-based: if - * refcount is 1, then the page is free and the refcount is - * stable because nobody holds a reference on the page. - */ - if (count == 1) - free_devmap_managed_page(page); - else if (!count) - __put_page(page); - - return true; -} -#else -static bool __unpin_devmap_managed_user_page(struct page *page) -{ - return false; -} -#endif /* CONFIG_DEV_PAGEMAP_OPS */ - /** * unpin_user_page() - release a dma-pinned page * @page: pointer to page to be released @@ -223,28 +210,7 @@ */ void unpin_user_page(struct page *page) { - int refs = 1; - - page = compound_head(page); - - /* - * For devmap managed pages we need to catch refcount transition from - * GUP_PIN_COUNTING_BIAS to 1, when refcount reach one it means the - * page is free and we need to inform the device driver through - * callback. See include/linux/memremap.h and HMM for details. - */ - if (__unpin_devmap_managed_user_page(page)) - return; - - if (hpage_pincount_available(page)) - hpage_pincount_sub(page, 1); - else - refs = GUP_PIN_COUNTING_BIAS; - - if (page_ref_sub_and_test(page, refs)) - __put_page(page); - - mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, 1); + put_compound_head(compound_head(page), 1, FOLL_PIN); } EXPORT_SYMBOL(unpin_user_page); @@ -843,7 +809,7 @@ goto unmap; *page = pte_page(*pte); } - if (unlikely(!try_get_page(*page))) { + if (unlikely(!try_grab_page(*page, gup_flags))) { ret = -ENOMEM; goto unmap; } @@ -1715,8 +1681,11 @@ /* * drop the above get_user_pages reference. */ - for (i = 0; i < nr_pages; i++) - put_page(pages[i]); + if (gup_flags & FOLL_PIN) + unpin_user_pages(pages, nr_pages); + else + for (i = 0; i < nr_pages; i++) + put_page(pages[i]); if (migrate_pages(&cma_page_list, new_non_cma_page, NULL, 0, MIGRATE_SYNC, MR_CONTIG_RANGE)) { @@ -1799,8 +1768,11 @@ goto out; if (check_dax_vmas(vmas_tmp, rc)) { - for (i = 0; i < rc; i++) - put_page(pages[i]); + if (gup_flags & FOLL_PIN) + unpin_user_pages(pages, rc); + else + for (i = 0; i < rc; i++) + put_page(pages[i]); rc = -EOPNOTSUPP; goto out; } @@ -2121,29 +2093,6 @@ * This code is based heavily on the PowerPC implementation by Nick Piggin. */ #ifdef CONFIG_HAVE_FAST_GUP - -static void put_compound_head(struct page *page, int refs, unsigned int flags) -{ - if (flags & FOLL_PIN) { - mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, - refs); - - if (hpage_pincount_available(page)) - hpage_pincount_sub(page, refs); - else - refs *= GUP_PIN_COUNTING_BIAS; - } - - VM_BUG_ON_PAGE(page_ref_count(page) < refs, page); - /* - * Calling put_page() for each ref is unnecessarily slow. Only the last - * ref needs a put_page(). - */ - if (refs > 1) - page_ref_sub(page, refs - 1); - put_page(page); -} - #ifdef CONFIG_GUP_GET_PTE_LOW_HIGH /* @@ -2574,13 +2523,13 @@ return 1; } -static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end, +static int gup_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pmd_t *pmdp; - pmdp = pmd_offset(&pud, addr); + pmdp = pmd_offset_lockless(pudp, pud, addr); do { pmd_t pmd = READ_ONCE(*pmdp); @@ -2617,13 +2566,13 @@ return 1; } -static int gup_pud_range(p4d_t p4d, unsigned long addr, unsigned long end, +static int gup_pud_range(p4d_t *p4dp, p4d_t p4d, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pud_t *pudp; - pudp = pud_offset(&p4d, addr); + pudp = pud_offset_lockless(p4dp, p4d, addr); do { pud_t pud = READ_ONCE(*pudp); @@ -2638,20 +2587,20 @@ if (!gup_huge_pd(__hugepd(pud_val(pud)), addr, PUD_SHIFT, next, flags, pages, nr)) return 0; - } else if (!gup_pmd_range(pud, addr, next, flags, pages, nr)) + } else if (!gup_pmd_range(pudp, pud, addr, next, flags, pages, nr)) return 0; } while (pudp++, addr = next, addr != end); return 1; } -static int gup_p4d_range(pgd_t pgd, unsigned long addr, unsigned long end, +static int gup_p4d_range(pgd_t *pgdp, pgd_t pgd, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; p4d_t *p4dp; - p4dp = p4d_offset(&pgd, addr); + p4dp = p4d_offset_lockless(pgdp, pgd, addr); do { p4d_t p4d = READ_ONCE(*p4dp); @@ -2663,7 +2612,7 @@ if (!gup_huge_pd(__hugepd(p4d_val(p4d)), addr, P4D_SHIFT, next, flags, pages, nr)) return 0; - } else if (!gup_pud_range(p4d, addr, next, flags, pages, nr)) + } else if (!gup_pud_range(p4dp, p4d, addr, next, flags, pages, nr)) return 0; } while (p4dp++, addr = next, addr != end); @@ -2691,7 +2640,7 @@ if (!gup_huge_pd(__hugepd(pgd_val(pgd)), addr, PGDIR_SHIFT, next, flags, pages, nr)) return; - } else if (!gup_p4d_range(pgd, addr, next, flags, pages, nr)) + } else if (!gup_p4d_range(pgdp, pgd, addr, next, flags, pages, nr)) return; } while (pgdp++, addr = next, addr != end); } --- linux-5.8.0.orig/mm/huge_memory.c +++ linux-5.8.0/mm/huge_memory.c @@ -731,7 +731,6 @@ transparent_hugepage_use_zero_page()) { pgtable_t pgtable; struct page *zero_page; - bool set; vm_fault_t ret; pgtable = pte_alloc_one(vma->vm_mm); if (unlikely(!pgtable)) @@ -744,25 +743,25 @@ } vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd); ret = 0; - set = false; if (pmd_none(*vmf->pmd)) { ret = check_stable_address_space(vma->vm_mm); if (ret) { spin_unlock(vmf->ptl); + pte_free(vma->vm_mm, pgtable); } else if (userfaultfd_missing(vma)) { spin_unlock(vmf->ptl); + pte_free(vma->vm_mm, pgtable); ret = handle_userfault(vmf, VM_UFFD_MISSING); VM_BUG_ON(ret & VM_FAULT_FALLBACK); } else { set_huge_zero_page(pgtable, vma->vm_mm, vma, haddr, vmf->pmd, zero_page); spin_unlock(vmf->ptl); - set = true; } - } else + } else { spin_unlock(vmf->ptl); - if (!set) pte_free(vma->vm_mm, pgtable); + } return ret; } gfp = alloc_hugepage_direct_gfpmask(vma); @@ -2048,7 +2047,7 @@ put_page(page); add_mm_counter(mm, mm_counter_file(page), -HPAGE_PMD_NR); return; - } else if (is_huge_zero_pmd(*pmd)) { + } else if (pmd_trans_huge(*pmd) && is_huge_zero_pmd(*pmd)) { /* * FIXME: Do we want to invalidate secondary mmu by calling * mmu_notifier_invalidate_range() see comments below inside @@ -2142,30 +2141,34 @@ pte = pte_offset_map(&_pmd, addr); BUG_ON(!pte_none(*pte)); set_pte_at(mm, addr, pte, entry); - atomic_inc(&page[i]._mapcount); - pte_unmap(pte); - } - - /* - * Set PG_double_map before dropping compound_mapcount to avoid - * false-negative page_mapped(). - */ - if (compound_mapcount(page) > 1 && !TestSetPageDoubleMap(page)) { - for (i = 0; i < HPAGE_PMD_NR; i++) + if (!pmd_migration) atomic_inc(&page[i]._mapcount); + pte_unmap(pte); } - lock_page_memcg(page); - if (atomic_add_negative(-1, compound_mapcount_ptr(page))) { - /* Last compound_mapcount is gone. */ - __dec_lruvec_page_state(page, NR_ANON_THPS); - if (TestClearPageDoubleMap(page)) { - /* No need in mapcount reference anymore */ + if (!pmd_migration) { + /* + * Set PG_double_map before dropping compound_mapcount to avoid + * false-negative page_mapped(). + */ + if (compound_mapcount(page) > 1 && + !TestSetPageDoubleMap(page)) { for (i = 0; i < HPAGE_PMD_NR; i++) - atomic_dec(&page[i]._mapcount); + atomic_inc(&page[i]._mapcount); + } + + lock_page_memcg(page); + if (atomic_add_negative(-1, compound_mapcount_ptr(page))) { + /* Last compound_mapcount is gone. */ + __dec_lruvec_page_state(page, NR_ANON_THPS); + if (TestClearPageDoubleMap(page)) { + /* No need in mapcount reference anymore */ + for (i = 0; i < HPAGE_PMD_NR; i++) + atomic_dec(&page[i]._mapcount); + } } + unlock_page_memcg(page); } - unlock_page_memcg(page); smp_wmb(); /* make pte visible before pmd */ pmd_populate(mm, pmd, pgtable); @@ -2183,7 +2186,7 @@ { spinlock_t *ptl; struct mmu_notifier_range range; - bool was_locked = false; + bool do_unlock_page = false; pmd_t _pmd; mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm, @@ -2199,7 +2202,6 @@ VM_BUG_ON(freeze && !page); if (page) { VM_WARN_ON_ONCE(!PageLocked(page)); - was_locked = true; if (page != pmd_page(*pmd)) goto out; } @@ -2208,19 +2210,29 @@ if (pmd_trans_huge(*pmd)) { if (!page) { page = pmd_page(*pmd); - if (unlikely(!trylock_page(page))) { - get_page(page); - _pmd = *pmd; - spin_unlock(ptl); - lock_page(page); - spin_lock(ptl); - if (unlikely(!pmd_same(*pmd, _pmd))) { - unlock_page(page); + /* + * An anonymous page must be locked, to ensure that a + * concurrent reuse_swap_page() sees stable mapcount; + * but reuse_swap_page() is not used on shmem or file, + * and page lock must not be taken when zap_pmd_range() + * calls __split_huge_pmd() while i_mmap_lock is held. + */ + if (PageAnon(page)) { + if (unlikely(!trylock_page(page))) { + get_page(page); + _pmd = *pmd; + spin_unlock(ptl); + lock_page(page); + spin_lock(ptl); + if (unlikely(!pmd_same(*pmd, _pmd))) { + unlock_page(page); + put_page(page); + page = NULL; + goto repeat; + } put_page(page); - page = NULL; - goto repeat; } - put_page(page); + do_unlock_page = true; } } if (PageMlocked(page)) @@ -2230,7 +2242,7 @@ __split_huge_pmd_locked(vma, pmd, range.start, freeze); out: spin_unlock(ptl); - if (!was_locked && page) + if (do_unlock_page) unlock_page(page); /* * No need to double call mmu_notifier->invalidate_range() callback. @@ -2316,7 +2328,7 @@ static void unmap_page(struct page *page) { - enum ttu_flags ttu_flags = TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS | + enum ttu_flags ttu_flags = TTU_IGNORE_MLOCK | TTU_RMAP_LOCKED | TTU_SPLIT_HUGE_PMD; bool unmap_success; @@ -2445,7 +2457,7 @@ ClearPageCompound(head); - split_page_owner(head, HPAGE_PMD_ORDER); + split_page_owner(head, HPAGE_PMD_NR); /* See comment in __split_huge_page_tail() */ if (PageAnon(head)) { --- linux-5.8.0.orig/mm/hugetlb.c +++ linux-5.8.0/mm/hugetlb.c @@ -77,6 +77,21 @@ static int num_fault_mutexes; struct mutex *hugetlb_fault_mutex_table ____cacheline_aligned_in_smp; +static inline bool PageHugeFreed(struct page *head) +{ + return page_private(head + 4) == -1UL; +} + +static inline void SetPageHugeFreed(struct page *head) +{ + set_page_private(head + 4, -1UL); +} + +static inline void ClearPageHugeFreed(struct page *head) +{ + set_page_private(head + 4, 0); +} + /* Forward declaration */ static int hugetlb_acct_memory(struct hstate *h, long delta); @@ -269,6 +284,17 @@ nrg->reservation_counter = &h_cg->rsvd_hugepage[hstate_index(h)]; nrg->css = &h_cg->css; + /* + * The caller will hold exactly one h_cg->css reference for the + * whole contiguous reservation region. But this area might be + * scattered when there are already some file_regions reside in + * it. As a result, many file_regions may share only one css + * reference. In order to ensure that one file_region must hold + * exactly one h_cg->css reference, we should do css_get for + * each file_region and leave the reference held by caller + * untouched. + */ + css_get(&h_cg->css); if (!resv->pages_per_hpage) resv->pages_per_hpage = pages_per_huge_page(h); /* pages_per_hpage should be the same for all entries in @@ -282,6 +308,14 @@ #endif } +static void put_uncharge_info(struct file_region *rg) +{ +#ifdef CONFIG_CGROUP_HUGETLB + if (rg->css) + css_put(rg->css); +#endif +} + static bool has_same_uncharge_info(struct file_region *rg, struct file_region *org) { @@ -305,6 +339,7 @@ prg->to = rg->to; list_del(&rg->link); + put_uncharge_info(rg); kfree(rg); coalesce_file_region(resv, prg); @@ -317,6 +352,7 @@ nrg->from = rg->from; list_del(&rg->link); + put_uncharge_info(rg); kfree(rg); coalesce_file_region(resv, nrg); @@ -653,6 +689,8 @@ } del += t - f; + hugetlb_cgroup_uncharge_file_region( + resv, rg, t - f, false); /* New entry for end of split region */ nrg->from = t; @@ -665,9 +703,6 @@ /* Original entry is trimmed */ rg->to = f; - hugetlb_cgroup_uncharge_file_region( - resv, rg, nrg->to - nrg->from); - list_add(&nrg->link, &rg->link); nrg = NULL; break; @@ -676,24 +711,24 @@ if (f <= rg->from && t >= rg->to) { /* Remove entire region */ del += rg->to - rg->from; hugetlb_cgroup_uncharge_file_region(resv, rg, - rg->to - rg->from); + rg->to - rg->from, true); list_del(&rg->link); kfree(rg); continue; } if (f <= rg->from) { /* Trim beginning of region */ + hugetlb_cgroup_uncharge_file_region(resv, rg, + t - rg->from, false); + del += t - rg->from; rg->from = t; - - hugetlb_cgroup_uncharge_file_region(resv, rg, - t - rg->from); } else { /* Trim end of region */ + hugetlb_cgroup_uncharge_file_region(resv, rg, + rg->to - f, false); + del += rg->to - f; rg->to = f; - - hugetlb_cgroup_uncharge_file_region(resv, rg, - rg->to - f); } } @@ -1034,6 +1069,7 @@ list_move(&page->lru, &h->hugepage_freelists[nid]); h->free_huge_pages++; h->free_huge_pages_node[nid]++; + SetPageHugeFreed(page); } static struct page *dequeue_huge_page_node_exact(struct hstate *h, int nid) @@ -1051,6 +1087,7 @@ return NULL; list_move(&page->lru, &h->hugepage_activelist); set_page_refcounted(page); + ClearPageHugeFreed(page); h->free_huge_pages--; h->free_huge_pages_node[nid]--; return page; @@ -1251,21 +1288,32 @@ int nid, nodemask_t *nodemask) { unsigned long nr_pages = 1UL << huge_page_order(h); + if (nid == NUMA_NO_NODE) + nid = numa_mem_id(); #ifdef CONFIG_CMA { struct page *page; int node; - for_each_node_mask(node, *nodemask) { - if (!hugetlb_cma[node]) - continue; - - page = cma_alloc(hugetlb_cma[node], nr_pages, - huge_page_order(h), true); + if (hugetlb_cma[nid]) { + page = cma_alloc(hugetlb_cma[nid], nr_pages, + huge_page_order(h), true); if (page) return page; } + + if (!(gfp_mask & __GFP_THISNODE)) { + for_each_node_mask(node, *nodemask) { + if (node == nid || !hugetlb_cma[node]) + continue; + + page = cma_alloc(hugetlb_cma[node], nr_pages, + huge_page_order(h), true); + if (page) + return page; + } + } } #endif @@ -1296,14 +1344,16 @@ static void update_and_free_page(struct hstate *h, struct page *page) { int i; + struct page *subpage = page; if (hstate_is_gigantic(h) && !gigantic_page_runtime_supported()) return; h->nr_huge_pages--; h->nr_huge_pages_node[page_to_nid(page)]--; - for (i = 0; i < pages_per_huge_page(h); i++) { - page[i].flags &= ~(1 << PG_locked | 1 << PG_error | + for (i = 0; i < pages_per_huge_page(h); + i++, subpage = mem_map_next(subpage, page, i)) { + subpage->flags &= ~(1 << PG_locked | 1 << PG_error | 1 << PG_referenced | 1 << PG_dirty | 1 << PG_active | 1 << PG_private | 1 << PG_writeback); @@ -1345,12 +1395,11 @@ */ bool page_huge_active(struct page *page) { - VM_BUG_ON_PAGE(!PageHuge(page), page); - return PageHead(page) && PagePrivate(&page[1]); + return PageHeadHuge(page) && PagePrivate(&page[1]); } /* never called for tail page */ -static void set_page_huge_active(struct page *page) +void set_page_huge_active(struct page *page) { VM_BUG_ON_PAGE(!PageHeadHuge(page), page); SetPagePrivate(&page[1]); @@ -1506,6 +1555,7 @@ set_hugetlb_cgroup_rsvd(page, NULL); h->nr_huge_pages++; h->nr_huge_pages_node[nid]++; + ClearPageHugeFreed(page); spin_unlock(&hugetlb_lock); } @@ -1570,103 +1620,23 @@ } /* - * Find address_space associated with hugetlbfs page. - * Upon entry page is locked and page 'was' mapped although mapped state - * could change. If necessary, use anon_vma to find vma and associated - * address space. The returned mapping may be stale, but it can not be - * invalid as page lock (which is held) is required to destroy mapping. - */ -static struct address_space *_get_hugetlb_page_mapping(struct page *hpage) -{ - struct anon_vma *anon_vma; - pgoff_t pgoff_start, pgoff_end; - struct anon_vma_chain *avc; - struct address_space *mapping = page_mapping(hpage); - - /* Simple file based mapping */ - if (mapping) - return mapping; - - /* - * Even anonymous hugetlbfs mappings are associated with an - * underlying hugetlbfs file (see hugetlb_file_setup in mmap - * code). Find a vma associated with the anonymous vma, and - * use the file pointer to get address_space. - */ - anon_vma = page_lock_anon_vma_read(hpage); - if (!anon_vma) - return mapping; /* NULL */ - - /* Use first found vma */ - pgoff_start = page_to_pgoff(hpage); - pgoff_end = pgoff_start + pages_per_huge_page(page_hstate(hpage)) - 1; - anon_vma_interval_tree_foreach(avc, &anon_vma->rb_root, - pgoff_start, pgoff_end) { - struct vm_area_struct *vma = avc->vma; - - mapping = vma->vm_file->f_mapping; - break; - } - - anon_vma_unlock_read(anon_vma); - return mapping; -} - -/* * Find and lock address space (mapping) in write mode. * - * Upon entry, the page is locked which allows us to find the mapping - * even in the case of an anon page. However, locking order dictates - * the i_mmap_rwsem be acquired BEFORE the page lock. This is hugetlbfs - * specific. So, we first try to lock the sema while still holding the - * page lock. If this works, great! If not, then we need to drop the - * page lock and then acquire i_mmap_rwsem and reacquire page lock. Of - * course, need to revalidate state along the way. + * Upon entry, the page is locked which means that page_mapping() is + * stable. Due to locking order, we can only trylock_write. If we can + * not get the lock, simply return NULL to caller. */ struct address_space *hugetlb_page_mapping_lock_write(struct page *hpage) { - struct address_space *mapping, *mapping2; + struct address_space *mapping = page_mapping(hpage); - mapping = _get_hugetlb_page_mapping(hpage); -retry: if (!mapping) return mapping; - /* - * If no contention, take lock and return - */ if (i_mmap_trylock_write(mapping)) return mapping; - /* - * Must drop page lock and wait on mapping sema. - * Note: Once page lock is dropped, mapping could become invalid. - * As a hack, increase map count until we lock page again. - */ - atomic_inc(&hpage->_mapcount); - unlock_page(hpage); - i_mmap_lock_write(mapping); - lock_page(hpage); - atomic_add_negative(-1, &hpage->_mapcount); - - /* verify page is still mapped */ - if (!page_mapped(hpage)) { - i_mmap_unlock_write(mapping); - return NULL; - } - - /* - * Get address space again and verify it is the same one - * we locked. If not, drop lock and retry. - */ - mapping2 = _get_hugetlb_page_mapping(hpage); - if (mapping2 != mapping) { - i_mmap_unlock_write(mapping); - mapping = mapping2; - goto retry; - } - - return mapping; + return NULL; } pgoff_t __basepage_index(struct page *page) @@ -1836,6 +1806,7 @@ { int rc = -EBUSY; +retry: /* Not to disrupt normal path by vainly holding hugetlb_lock */ if (!PageHuge(page)) return 0; @@ -1852,6 +1823,26 @@ int nid = page_to_nid(head); if (h->free_huge_pages - h->resv_huge_pages == 0) goto out; + + /* + * We should make sure that the page is already on the free list + * when it is dissolved. + */ + if (unlikely(!PageHugeFreed(head))) { + spin_unlock(&hugetlb_lock); + cond_resched(); + + /* + * Theoretically, we should return -EBUSY when we + * encounter this race. In fact, we have a chance + * to successfully dissolve the page if we do a + * retry. Because the race window is quite small. + * If we seize this opportunity, it is an optimization + * for increasing the success rate of dissolving page. + */ + goto retry; + } + /* * Move PageHWPoison flag from head page to the raw error page, * which makes any subpages rather than the error page reusable. @@ -2466,6 +2457,9 @@ rsv_adjust = hugepage_subpool_put_pages(spool, 1); hugetlb_acct_memory(h, -rsv_adjust); + if (deferred_reserve) + hugetlb_cgroup_uncharge_page_rsvd(hstate_index(h), + pages_per_huge_page(h), page); } return page; @@ -2579,7 +2573,7 @@ if (hstate_is_gigantic(h)) { if (hugetlb_cma_size) { pr_warn_once("HugeTLB: hugetlb_cma is enabled, skip boot time allocation\n"); - break; + goto free; } if (!alloc_bootmem_huge_page(h)) break; @@ -2597,7 +2591,7 @@ h->max_huge_pages, buf, i); h->max_huge_pages = i; } - +free: kfree(node_alloc_noretry); } @@ -3046,8 +3040,10 @@ return -ENOMEM; retval = sysfs_create_group(hstate_kobjs[hi], hstate_attr_group); - if (retval) + if (retval) { kobject_put(hstate_kobjs[hi]); + hstate_kobjs[hi] = NULL; + } return retval; } @@ -3469,6 +3465,22 @@ } #ifdef CONFIG_SYSCTL +static int proc_hugetlb_doulongvec_minmax(struct ctl_table *table, int write, + void *buffer, size_t *length, + loff_t *ppos, unsigned long *out) +{ + struct ctl_table dup_table; + + /* + * In order to avoid races with __do_proc_doulongvec_minmax(), we + * can duplicate the @table and alter the duplicate of it. + */ + dup_table = *table; + dup_table.data = out; + + return proc_doulongvec_minmax(&dup_table, write, buffer, length, ppos); +} + static int hugetlb_sysctl_handler_common(bool obey_mempolicy, struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos) @@ -3480,9 +3492,8 @@ if (!hugepages_supported()) return -EOPNOTSUPP; - table->data = &tmp; - table->maxlen = sizeof(unsigned long); - ret = proc_doulongvec_minmax(table, write, buffer, length, ppos); + ret = proc_hugetlb_doulongvec_minmax(table, write, buffer, length, ppos, + &tmp); if (ret) goto out; @@ -3525,9 +3536,8 @@ if (write && hstate_is_gigantic(h)) return -EINVAL; - table->data = &tmp; - table->maxlen = sizeof(unsigned long); - ret = proc_doulongvec_minmax(table, write, buffer, length, ppos); + ret = proc_hugetlb_doulongvec_minmax(table, write, buffer, length, ppos, + &tmp); if (ret) goto out; @@ -3952,7 +3962,7 @@ continue; ptl = huge_pte_lock(h, mm, ptep); - if (huge_pmd_unshare(mm, &address, ptep)) { + if (huge_pmd_unshare(mm, vma, &address, ptep)) { spin_unlock(ptl); /* * We just unmapped a page of PMDs by clearing a PUD. @@ -4176,10 +4186,30 @@ * may get SIGKILLed if it later faults. */ if (outside_reserve) { + struct address_space *mapping = vma->vm_file->f_mapping; + pgoff_t idx; + u32 hash; + put_page(old_page); BUG_ON(huge_pte_none(pte)); + /* + * Drop hugetlb_fault_mutex and i_mmap_rwsem before + * unmapping. unmapping needs to hold i_mmap_rwsem + * in write mode. Dropping i_mmap_rwsem in read mode + * here is OK as COW mappings do not interact with + * PMD sharing. + * + * Reacquire both after unmap operation. + */ + idx = vma_hugecache_offset(h, vma, haddr); + hash = hugetlb_fault_mutex_hash(mapping, idx); + mutex_unlock(&hugetlb_fault_mutex_table[hash]); + i_mmap_unlock_read(mapping); + unmap_ref_private(mm, vma, old_page, haddr); - BUG_ON(huge_pte_none(pte)); + + i_mmap_lock_read(mapping); + mutex_lock(&hugetlb_fault_mutex_table[hash]); spin_lock(ptl); ptep = huge_pte_offset(mm, haddr, huge_page_size(h)); if (likely(ptep && @@ -4422,7 +4452,7 @@ * So we need to block hugepage fault by PG_hwpoison bit check. */ if (unlikely(PageHWPoison(page))) { - ret = VM_FAULT_HWPOISON | + ret = VM_FAULT_HWPOISON_LARGE | VM_FAULT_SET_HINDEX(hstate_index(h)); goto backout_unlocked; } @@ -4539,10 +4569,6 @@ } else if (unlikely(is_hugetlb_entry_hwpoisoned(entry))) return VM_FAULT_HWPOISON_LARGE | VM_FAULT_SET_HINDEX(hstate_index(h)); - } else { - ptep = huge_pte_alloc(mm, haddr, huge_page_size(h)); - if (!ptep) - return VM_FAULT_OOM; } /* @@ -5019,7 +5045,7 @@ if (!ptep) continue; ptl = huge_pte_lock(h, mm, ptep); - if (huge_pmd_unshare(mm, &address, ptep)) { + if (huge_pmd_unshare(mm, vma, &address, ptep)) { pages++; spin_unlock(ptl); shared_pmd = true; @@ -5189,6 +5215,7 @@ if (unlikely(add < 0)) { hugetlb_acct_memory(h, -gbl_reserve); + ret = add; goto out_put_pages; } else if (unlikely(chg > add)) { /* @@ -5200,6 +5227,10 @@ */ long rsv_adjust; + /* + * hugetlb_cgroup_uncharge_cgroup_rsvd() will put the + * reference to h_cg->css. See comment below for detail. + */ hugetlb_cgroup_uncharge_cgroup_rsvd( hstate_index(h), (chg - add) * pages_per_huge_page(h), h_cg); @@ -5207,6 +5238,14 @@ rsv_adjust = hugepage_subpool_put_pages(spool, chg - add); hugetlb_acct_memory(h, -rsv_adjust); + } else if (h_cg) { + /* + * The file_regions will hold their own reference to + * h_cg->css. So we should release the reference held + * via hugetlb_cgroup_charge_cgroup_rsvd() when we are + * done. + */ + hugetlb_cgroup_put_rsvd_cgroup(h_cg); } } return 0; @@ -5313,25 +5352,23 @@ void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma, unsigned long *start, unsigned long *end) { - unsigned long check_addr; + unsigned long v_start = ALIGN(vma->vm_start, PUD_SIZE), + v_end = ALIGN_DOWN(vma->vm_end, PUD_SIZE); - if (!(vma->vm_flags & VM_MAYSHARE)) + /* + * vma need span at least one aligned PUD size and the start,end range + * must at least partialy within it. + */ + if (!(vma->vm_flags & VM_MAYSHARE) || !(v_end > v_start) || + (*end <= v_start) || (*start >= v_end)) return; - for (check_addr = *start; check_addr < *end; check_addr += PUD_SIZE) { - unsigned long a_start = check_addr & PUD_MASK; - unsigned long a_end = a_start + PUD_SIZE; + /* Extend the range to be PUD aligned for a worst case scenario */ + if (*start > v_start) + *start = ALIGN_DOWN(*start, PUD_SIZE); - /* - * If sharing is possible, adjust start/end if necessary. - */ - if (range_in_vma(vma, a_start, a_end)) { - if (a_start < *start) - *start = a_start; - if (a_end > *end) - *end = a_end; - } - } + if (*end < v_end) + *end = ALIGN(*end, PUD_SIZE); } /* @@ -5404,12 +5441,14 @@ * returns: 1 successfully unmapped a shared pte page * 0 the underlying pte page is not shared, or it is the last user */ -int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) +int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma, + unsigned long *addr, pte_t *ptep) { pgd_t *pgd = pgd_offset(mm, *addr); p4d_t *p4d = p4d_offset(pgd, *addr); pud_t *pud = pud_offset(p4d, *addr); + i_mmap_assert_write_locked(vma->vm_file->f_mapping); BUG_ON(page_count(virt_to_page(ptep)) == 0); if (page_count(virt_to_page(ptep)) == 1) return 0; @@ -5427,7 +5466,8 @@ return NULL; } -int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) +int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma, + unsigned long *addr, pte_t *ptep) { return 0; } @@ -5603,9 +5643,9 @@ { bool ret = true; - VM_BUG_ON_PAGE(!PageHead(page), page); spin_lock(&hugetlb_lock); - if (!page_huge_active(page) || !get_page_unless_zero(page)) { + if (!PageHeadHuge(page) || !page_huge_active(page) || + !get_page_unless_zero(page)) { ret = false; goto unlock; } --- linux-5.8.0.orig/mm/hugetlb_cgroup.c +++ linux-5.8.0/mm/hugetlb_cgroup.c @@ -82,11 +82,8 @@ for (idx = 0; idx < hugetlb_max_hstate; idx++) { if (page_counter_read( - hugetlb_cgroup_counter_from_cgroup(h_cg, idx)) || - page_counter_read(hugetlb_cgroup_counter_from_cgroup_rsvd( - h_cg, idx))) { + hugetlb_cgroup_counter_from_cgroup(h_cg, idx))) return true; - } } return false; } @@ -202,9 +199,10 @@ struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css); struct hstate *h; struct page *page; - int idx = 0; + int idx; do { + idx = 0; for_each_hstate(h) { spin_lock(&hugetlb_lock); list_for_each_entry(page, &h->hugepage_activelist, lru) @@ -393,7 +391,8 @@ void hugetlb_cgroup_uncharge_file_region(struct resv_map *resv, struct file_region *rg, - unsigned long nr_pages) + unsigned long nr_pages, + bool region_del) { if (hugetlb_cgroup_disabled() || !resv || !rg || !nr_pages) return; @@ -402,7 +401,12 @@ !resv->reservation_counter) { page_counter_uncharge(rg->reservation_counter, nr_pages * resv->pages_per_hpage); - css_put(rg->css); + /* + * Only do css_put(rg->css) when we delete the entire region + * because one file_region must hold exactly one css reference. + */ + if (region_del) + css_put(rg->css); } } --- linux-5.8.0.orig/mm/internal.h +++ linux-5.8.0/mm/internal.h @@ -395,7 +395,7 @@ unsigned long start, end; start = __vma_address(page, vma); - end = start + PAGE_SIZE * (hpage_nr_pages(page) - 1); + end = start + thp_size(page) - PAGE_SIZE; /* page should be within @vma mapping range */ VM_BUG_ON_VMA(end < vma->vm_start || start >= vma->vm_end, vma); --- linux-5.8.0.orig/mm/kasan/init.c +++ linux-5.8.0/mm/kasan/init.c @@ -377,9 +377,10 @@ if (kasan_pte_table(*pmd)) { if (IS_ALIGNED(addr, PMD_SIZE) && - IS_ALIGNED(next, PMD_SIZE)) + IS_ALIGNED(next, PMD_SIZE)) { pmd_clear(pmd); - continue; + continue; + } } pte = pte_offset_kernel(pmd, addr); kasan_remove_pte_table(pte, addr, next); @@ -402,9 +403,10 @@ if (kasan_pmd_table(*pud)) { if (IS_ALIGNED(addr, PUD_SIZE) && - IS_ALIGNED(next, PUD_SIZE)) + IS_ALIGNED(next, PUD_SIZE)) { pud_clear(pud); - continue; + continue; + } } pmd = pmd_offset(pud, addr); pmd_base = pmd_offset(pud, 0); @@ -428,9 +430,10 @@ if (kasan_pud_table(*p4d)) { if (IS_ALIGNED(addr, P4D_SIZE) && - IS_ALIGNED(next, P4D_SIZE)) + IS_ALIGNED(next, P4D_SIZE)) { p4d_clear(p4d); - continue; + continue; + } } pud = pud_offset(p4d, addr); kasan_remove_pud_table(pud, addr, next); @@ -462,9 +465,10 @@ if (kasan_p4d_table(*pgd)) { if (IS_ALIGNED(addr, PGDIR_SIZE) && - IS_ALIGNED(next, PGDIR_SIZE)) + IS_ALIGNED(next, PGDIR_SIZE)) { pgd_clear(pgd); - continue; + continue; + } } p4d = p4d_offset(pgd, addr); @@ -488,7 +492,6 @@ ret = kasan_populate_early_shadow(shadow_start, shadow_end); if (ret) - kasan_remove_zero_shadow(shadow_start, - size >> KASAN_SHADOW_SCALE_SHIFT); + kasan_remove_zero_shadow(start, size); return ret; } --- linux-5.8.0.orig/mm/khugepaged.c +++ linux-5.8.0/mm/khugepaged.c @@ -56,6 +56,9 @@ #define CREATE_TRACE_POINTS #include +static struct task_struct *khugepaged_thread __read_mostly; +static DEFINE_MUTEX(khugepaged_mutex); + /* default scan 8*512 pte (or vmas) every 30 second */ static unsigned int khugepaged_pages_to_scan __read_mostly; static unsigned int khugepaged_pages_collapsed; @@ -431,24 +434,34 @@ static inline int khugepaged_test_exit(struct mm_struct *mm) { - return atomic_read(&mm->mm_users) == 0; + return atomic_read(&mm->mm_users) == 0 || !mmget_still_valid(mm); } static bool hugepage_vma_check(struct vm_area_struct *vma, unsigned long vm_flags) { - if ((!(vm_flags & VM_HUGEPAGE) && !khugepaged_always()) || - (vm_flags & VM_NOHUGEPAGE) || + /* Explicitly disabled through madvise. */ + if ((vm_flags & VM_NOHUGEPAGE) || test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags)) return false; - if (shmem_file(vma->vm_file) || - (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS) && - vma->vm_file && - (vm_flags & VM_DENYWRITE))) { + /* Enabled via shmem mount options or sysfs settings. */ + if (shmem_file(vma->vm_file) && shmem_huge_enabled(vma)) { + return IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, + HPAGE_PMD_NR); + } + + /* THP settings require madvise. */ + if (!(vm_flags & VM_HUGEPAGE) && !khugepaged_always()) + return false; + + /* Read-only file mappings need to be aligned for THP to work. */ + if (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS) && vma->vm_file && + (vm_flags & VM_DENYWRITE)) { return IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, HPAGE_PMD_NR); } + if (!vma->anon_vma || vma->vm_ops) return false; if (vma_is_temporary_stack(vma)) @@ -466,7 +479,7 @@ return -ENOMEM; /* __khugepaged_exit() must not run from under us */ - VM_BUG_ON_MM(khugepaged_test_exit(mm), mm); + VM_BUG_ON_MM(atomic_read(&mm->mm_users) == 0, mm); if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) { free_mm_slot(mm_slot); return 0; @@ -914,6 +927,18 @@ static bool khugepaged_prealloc_page(struct page **hpage, bool *wait) { + /* + * If the hpage allocated earlier was briefly exposed in page cache + * before collapse_file() failed, it is possible that racing lookups + * have not yet completed, and would then be unpleasantly surprised by + * finding the hpage reused for the same mapping at a different offset. + * Just release the previous allocation if there is any danger of that. + */ + if (*hpage && page_count(*hpage) > 1) { + put_page(*hpage); + *hpage = NULL; + } + if (!*hpage) *hpage = khugepaged_alloc_hugepage(wait); @@ -1100,9 +1125,6 @@ * handled by the anon_vma lock + PG_lock. */ mmap_write_lock(mm); - result = SCAN_ANY_PROCESS; - if (!mmget_still_valid(mm)) - goto out; result = hugepage_vma_revalidate(mm, address, &vma); if (result) goto out; @@ -1412,7 +1434,7 @@ { unsigned long haddr = addr & HPAGE_PMD_MASK; struct vm_area_struct *vma = find_vma(mm, haddr); - struct page *hpage = NULL; + struct page *hpage; pte_t *start_pte, *pte; pmd_t *pmd, _pmd; spinlock_t *ptl; @@ -1432,9 +1454,17 @@ if (!hugepage_vma_check(vma, vma->vm_flags | VM_HUGEPAGE)) return; + hpage = find_lock_page(vma->vm_file->f_mapping, + linear_page_index(vma, haddr)); + if (!hpage) + return; + + if (!PageHead(hpage)) + goto drop_hpage; + pmd = mm_find_pmd(mm, haddr); if (!pmd) - return; + goto drop_hpage; start_pte = pte_offset_map_lock(mm, pmd, haddr, &ptl); @@ -1453,30 +1483,11 @@ page = vm_normal_page(vma, addr, *pte); - if (!page || !PageCompound(page)) - goto abort; - - if (!hpage) { - hpage = compound_head(page); - /* - * The mapping of the THP should not change. - * - * Note that uprobe, debugger, or MAP_PRIVATE may - * change the page table, but the new page will - * not pass PageCompound() check. - */ - if (WARN_ON(hpage->mapping != vma->vm_file->f_mapping)) - goto abort; - } - /* - * Confirm the page maps to the correct subpage. - * - * Note that uprobe, debugger, or MAP_PRIVATE may change - * the page table, but the new page will not pass - * PageCompound() check. + * Note that uprobe, debugger, or MAP_PRIVATE may change the + * page table, but the new page will not be a subpage of hpage. */ - if (WARN_ON(hpage + i != page)) + if (hpage + i != page) goto abort; count++; } @@ -1495,21 +1506,26 @@ pte_unmap_unlock(start_pte, ptl); /* step 3: set proper refcount and mm_counters. */ - if (hpage) { + if (count) { page_ref_sub(hpage, count); add_mm_counter(vma->vm_mm, mm_counter_file(hpage), -count); } /* step 4: collapse pmd */ ptl = pmd_lock(vma->vm_mm, pmd); - _pmd = pmdp_collapse_flush(vma, addr, pmd); + _pmd = pmdp_collapse_flush(vma, haddr, pmd); spin_unlock(ptl); mm_dec_nr_ptes(mm); pte_free(mm, pmd_pgtable(_pmd)); + +drop_hpage: + unlock_page(hpage); + put_page(hpage); return; abort: pte_unmap_unlock(start_pte, ptl); + goto drop_hpage; } static int khugepaged_collapse_pte_mapped_thps(struct mm_slot *mm_slot) @@ -1538,6 +1554,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) { struct vm_area_struct *vma; + struct mm_struct *mm; unsigned long addr; pmd_t *pmd, _pmd; @@ -1566,7 +1583,8 @@ continue; if (vma->vm_end < addr + HPAGE_PMD_SIZE) continue; - pmd = mm_find_pmd(vma->vm_mm, addr); + mm = vma->vm_mm; + pmd = mm_find_pmd(mm, addr); if (!pmd) continue; /* @@ -1576,17 +1594,19 @@ * mmap_lock while holding page lock. Fault path does it in * reverse order. Trylock is a way to avoid deadlock. */ - if (mmap_write_trylock(vma->vm_mm)) { - spinlock_t *ptl = pmd_lock(vma->vm_mm, pmd); - /* assume page table is clear */ - _pmd = pmdp_collapse_flush(vma, addr, pmd); - spin_unlock(ptl); - mmap_write_unlock(vma->vm_mm); - mm_dec_nr_ptes(vma->vm_mm); - pte_free(vma->vm_mm, pmd_pgtable(_pmd)); + if (mmap_write_trylock(mm)) { + if (!khugepaged_test_exit(mm)) { + spinlock_t *ptl = pmd_lock(mm, pmd); + /* assume page table is clear */ + _pmd = pmdp_collapse_flush(vma, addr, pmd); + spin_unlock(ptl); + mm_dec_nr_ptes(mm); + pte_free(mm, pmd_pgtable(_pmd)); + } + mmap_write_unlock(mm); } else { /* Try again later */ - khugepaged_add_pte_mapped_thp(vma->vm_mm, addr); + khugepaged_add_pte_mapped_thp(mm, addr); } } i_mmap_unlock_write(mapping); @@ -1714,7 +1734,7 @@ xas_unlock_irq(&xas); page_cache_sync_readahead(mapping, &file->f_ra, file, index, - PAGE_SIZE); + end - index); /* drain pagevecs to help isolate_lru_page() */ lru_add_drain(); page = find_lock_page(mapping, index); @@ -2297,8 +2317,6 @@ int start_stop_khugepaged(void) { - static struct task_struct *khugepaged_thread __read_mostly; - static DEFINE_MUTEX(khugepaged_mutex); int err = 0; mutex_lock(&khugepaged_mutex); @@ -2325,3 +2343,11 @@ mutex_unlock(&khugepaged_mutex); return err; } + +void khugepaged_min_free_kbytes_update(void) +{ + mutex_lock(&khugepaged_mutex); + if (khugepaged_enabled() && khugepaged_thread) + set_recommended_min_free_kbytes(); + mutex_unlock(&khugepaged_mutex); +} --- linux-5.8.0.orig/mm/ksm.c +++ linux-5.8.0/mm/ksm.c @@ -2422,9 +2422,14 @@ if (ksmd_should_run()) { sleep_ms = READ_ONCE(ksm_thread_sleep_millisecs); - wait_event_interruptible_timeout(ksm_iter_wait, - sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs), - msecs_to_jiffies(sleep_ms)); + if (sleep_ms >= 1000) + wait_event_interruptible_timeout(ksm_iter_wait, + sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs), + msecs_to_jiffies(round_jiffies_relative(sleep_ms))); + else + wait_event_interruptible_timeout(ksm_iter_wait, + sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs), + msecs_to_jiffies(sleep_ms)); } else { wait_event_freezable(ksm_thread_wait, ksmd_should_run() || kthread_should_stop()); @@ -2585,6 +2590,10 @@ return page; /* let do_swap_page report the error */ new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address); + if (new_page && mem_cgroup_charge(new_page, vma->vm_mm, GFP_KERNEL)) { + put_page(new_page); + new_page = NULL; + } if (new_page) { copy_user_highpage(new_page, page, address, vma); --- linux-5.8.0.orig/mm/list_lru.c +++ linux-5.8.0/mm/list_lru.c @@ -534,7 +534,6 @@ struct list_lru_node *nlru = &lru->node[nid]; int dst_idx = dst_memcg->kmemcg_id; struct list_lru_one *src, *dst; - bool set; /* * Since list_lru_{add,del} may be called under an IRQ-safe lock, @@ -546,11 +545,12 @@ dst = list_lru_from_memcg_idx(nlru, dst_idx); list_splice_init(&src->list, &dst->list); - set = (!dst->nr_items && src->nr_items); - dst->nr_items += src->nr_items; - if (set) + + if (src->nr_items) { + dst->nr_items += src->nr_items; memcg_set_shrinker_bit(dst_memcg, nid, lru_shrinker_id(lru)); - src->nr_items = 0; + src->nr_items = 0; + } spin_unlock_irq(&nlru->lock); } --- linux-5.8.0.orig/mm/madvise.c +++ linux-5.8.0/mm/madvise.c @@ -289,9 +289,9 @@ */ *prev = NULL; /* tell sys_madvise we drop mmap_lock */ get_file(file); - mmap_read_unlock(current->mm); offset = (loff_t)(start - vma->vm_start) + ((loff_t)vma->vm_pgoff << PAGE_SHIFT); + mmap_read_unlock(current->mm); vfs_fadvise(file, offset, end - start, POSIX_FADV_WILLNEED); fput(file); mmap_read_lock(current->mm); @@ -381,9 +381,9 @@ return 0; } +regular_page: if (pmd_trans_unstable(pmd)) return 0; -regular_page: #endif tlb_change_page_size(tlb, PAGE_SIZE); orig_pte = pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl); @@ -911,14 +911,7 @@ pr_info("Injecting memory failure for pfn %#lx at process virtual address %#lx\n", pfn, start); - /* - * Drop the page reference taken by get_user_pages_fast(). In - * the absence of MF_COUNT_INCREASED the memory_failure() - * routine is responsible for pinning the page to prevent it - * from being released back to the page allocator. - */ - put_page(page); - ret = memory_failure(pfn, 0); + ret = memory_failure(pfn, MF_COUNT_INCREASED); if (ret) return ret; } --- linux-5.8.0.orig/mm/memblock.c +++ linux-5.8.0/mm/memblock.c @@ -253,14 +253,6 @@ * * Find @size free area aligned to @align in the specified range and node. * - * When allocation direction is bottom-up, the @start should be greater - * than the end of the kernel image. Otherwise, it will be trimmed. The - * reason is that we want the bottom-up allocation just near the kernel - * image so it is highly likely that the allocated memory and the kernel - * will reside in the same node. - * - * If bottom-up allocation failed, will try to allocate memory top-down. - * * Return: * Found address on success, 0 on failure. */ @@ -269,8 +261,6 @@ phys_addr_t end, int nid, enum memblock_flags flags) { - phys_addr_t kernel_end, ret; - /* pump up @end */ if (end == MEMBLOCK_ALLOC_ACCESSIBLE || end == MEMBLOCK_ALLOC_KASAN) @@ -279,40 +269,13 @@ /* avoid allocating the first page */ start = max_t(phys_addr_t, start, PAGE_SIZE); end = max(start, end); - kernel_end = __pa_symbol(_end); - - /* - * try bottom-up allocation only when bottom-up mode - * is set and @end is above the kernel image. - */ - if (memblock_bottom_up() && end > kernel_end) { - phys_addr_t bottom_up_start; - - /* make sure we will allocate above the kernel */ - bottom_up_start = max(start, kernel_end); - - /* ok, try bottom-up allocation first */ - ret = __memblock_find_range_bottom_up(bottom_up_start, end, - size, align, nid, flags); - if (ret) - return ret; - - /* - * we always limit bottom-up allocation above the kernel, - * but top-down allocation doesn't have the limit, so - * retrying top-down allocation may succeed when bottom-up - * allocation failed. - * - * bottom-up allocation is expected to be fail very rarely, - * so we use WARN_ONCE() here to see the stack trace if - * fail happens. - */ - WARN_ONCE(IS_ENABLED(CONFIG_MEMORY_HOTREMOVE), - "memblock: bottom-up allocation failed, memory hotremove may be affected\n"); - } - return __memblock_find_range_top_down(start, end, size, align, nid, - flags); + if (memblock_bottom_up()) + return __memblock_find_range_bottom_up(start, end, size, align, + nid, flags); + else + return __memblock_find_range_top_down(start, end, size, align, + nid, flags); } /** --- linux-5.8.0.orig/mm/memcontrol.c +++ linux-5.8.0/mm/memcontrol.c @@ -766,8 +766,13 @@ rcu_read_lock(); memcg = mem_cgroup_from_obj(p); - /* Untracked pages have no memcg, no lruvec. Update only the node */ - if (!memcg || memcg == root_mem_cgroup) { + /* + * Untracked pages have no memcg, no lruvec. Update only the + * node. If we reparent the slab objects to the root memcg, + * when we free the slab object, we need to update the per-memcg + * vmstats to keep it correct for the root memcg. + */ + if (!memcg) { __mod_node_page_state(pgdat, idx, val); } else { lruvec = mem_cgroup_lruvec(memcg, pgdat); @@ -3834,11 +3839,17 @@ (u64)memsw * PAGE_SIZE); for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) { + unsigned long nr; + if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account()) continue; + nr = memcg_page_state(memcg, memcg1_stats[i]); +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + if (memcg1_stats[i] == NR_ANON_THPS) + nr *= HPAGE_PMD_NR; +#endif seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i], - (u64)memcg_page_state(memcg, memcg1_stats[i]) * - PAGE_SIZE); + (u64)nr * PAGE_SIZE); } for (i = 0; i < ARRAY_SIZE(memcg1_events); i++) @@ -5060,7 +5071,13 @@ memcg->swappiness = mem_cgroup_swappiness(parent); memcg->oom_kill_disable = parent->oom_kill_disable; } - if (parent && parent->use_hierarchy) { + if (!parent) { + page_counter_init(&memcg->memory, NULL); + page_counter_init(&memcg->swap, NULL); + page_counter_init(&memcg->memsw, NULL); + page_counter_init(&memcg->kmem, NULL); + page_counter_init(&memcg->tcpmem, NULL); + } else if (parent->use_hierarchy) { memcg->use_hierarchy = true; page_counter_init(&memcg->memory, &parent->memory); page_counter_init(&memcg->swap, &parent->swap); @@ -5068,11 +5085,11 @@ page_counter_init(&memcg->kmem, &parent->kmem); page_counter_init(&memcg->tcpmem, &parent->tcpmem); } else { - page_counter_init(&memcg->memory, NULL); - page_counter_init(&memcg->swap, NULL); - page_counter_init(&memcg->memsw, NULL); - page_counter_init(&memcg->kmem, NULL); - page_counter_init(&memcg->tcpmem, NULL); + page_counter_init(&memcg->memory, &root_mem_cgroup->memory); + page_counter_init(&memcg->swap, &root_mem_cgroup->swap); + page_counter_init(&memcg->memsw, &root_mem_cgroup->memsw); + page_counter_init(&memcg->kmem, &root_mem_cgroup->kmem); + page_counter_init(&memcg->tcpmem, &root_mem_cgroup->tcpmem); /* * Deeper hierachy with use_hierarchy == false doesn't make * much sense so let cgroup subsystem know about this @@ -5276,7 +5293,7 @@ struct page *page = NULL; swp_entry_t ent = pte_to_swp_entry(ptent); - if (!(mc.flags & MOVE_ANON) || non_swap_entry(ent)) + if (!(mc.flags & MOVE_ANON)) return NULL; /* @@ -5295,6 +5312,9 @@ return page; } + if (non_swap_entry(ent)) + return NULL; + /* * Because lookup_swap_cache() updates some statistics counter, * we call find_get_page() with swapper_space directly. @@ -5395,10 +5415,8 @@ __mod_lruvec_state(from_vec, NR_ANON_MAPPED, -nr_pages); __mod_lruvec_state(to_vec, NR_ANON_MAPPED, nr_pages); if (PageTransHuge(page)) { - __mod_lruvec_state(from_vec, NR_ANON_THPS, - -nr_pages); - __mod_lruvec_state(to_vec, NR_ANON_THPS, - nr_pages); + __dec_lruvec_state(from_vec, NR_ANON_THPS); + __inc_lruvec_state(to_vec, NR_ANON_THPS); } } @@ -6505,7 +6523,19 @@ memcg_check_events(memcg, page); local_irq_enable(); - if (PageSwapCache(page)) { + /* + * Cgroup1's unified memory+swap counter has been charged with the + * new swapcache page, finish the transfer by uncharging the swap + * slot. The swap slot would also get uncharged when it dies, but + * it can stick around indefinitely and we'd count the page twice + * the entire time. + * + * Cgroup2 has separate resource counters for memory and swap, + * so this is a non-issue here. Memory and swap charge lifetimes + * correspond 1:1 to page and swap slot lifetimes: we charge the + * page to memory here, and uncharge swap when the slot is freed. + */ + if (do_memsw_account() && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; /* * The swap entry might not get freed for a long time, --- linux-5.8.0.orig/mm/memory-failure.c +++ linux-5.8.0/mm/memory-failure.c @@ -963,7 +963,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, int flags, struct page **hpagep) { - enum ttu_flags ttu = TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS; + enum ttu_flags ttu = TTU_IGNORE_MLOCK; struct address_space *mapping; LIST_HEAD(tokill); bool unmap_success = true; @@ -1031,27 +1031,25 @@ if (!PageHuge(hpage)) { unmap_success = try_to_unmap(hpage, ttu); } else { - /* - * For hugetlb pages, try_to_unmap could potentially call - * huge_pmd_unshare. Because of this, take semaphore in - * write mode here and set TTU_RMAP_LOCKED to indicate we - * have taken the lock at this higer level. - * - * Note that the call to hugetlb_page_mapping_lock_write - * is necessary even if mapping is already set. It handles - * ugliness of potentially having to drop page lock to obtain - * i_mmap_rwsem. - */ - mapping = hugetlb_page_mapping_lock_write(hpage); - - if (mapping) { - unmap_success = try_to_unmap(hpage, + if (!PageAnon(hpage)) { + /* + * For hugetlb pages in shared mappings, try_to_unmap + * could potentially call huge_pmd_unshare. Because of + * this, take semaphore in write mode here and set + * TTU_RMAP_LOCKED to indicate we have taken the lock + * at this higer level. + */ + mapping = hugetlb_page_mapping_lock_write(hpage); + if (mapping) { + unmap_success = try_to_unmap(hpage, ttu|TTU_RMAP_LOCKED); - i_mmap_unlock_write(mapping); + i_mmap_unlock_write(mapping); + } else { + pr_info("Memory failure: %#lx: could not lock mapping for mapped huge page\n", pfn); + unmap_success = false; + } } else { - pr_info("Memory failure: %#lx: could not find mapping for mapped huge page\n", - pfn); - unmap_success = false; + unmap_success = try_to_unmap(hpage, ttu); } } if (!unmap_success) @@ -1188,6 +1186,12 @@ loff_t start; dax_entry_t cookie; + if (flags & MF_COUNT_INCREASED) + /* + * Drop the extra refcount in case we come from madvise(). + */ + put_page(page); + /* * Prevent the inode from being freed while we are interrogating * the address_space, typically this would be handled by --- linux-5.8.0.orig/mm/memory.c +++ linux-5.8.0/mm/memory.c @@ -71,6 +71,7 @@ #include #include #include +#include #include @@ -151,7 +152,7 @@ zero_pfn = page_to_pfn(ZERO_PAGE(0)); return 0; } -core_initcall(init_zero_pfn); +early_initcall(init_zero_pfn); void mm_trace_rss_stat(struct mm_struct *mm, int member, long count) { @@ -1367,6 +1368,7 @@ mmu_notifier_invalidate_range_end(&range); tlb_finish_mmu(&tlb, start, range.end); } +EXPORT_SYMBOL(zap_page_range); /** * zap_page_range_single - remove user pages in a given range @@ -1990,11 +1992,11 @@ unsigned long addr, unsigned long end, unsigned long pfn, pgprot_t prot) { - pte_t *pte; + pte_t *pte, *mapped_pte; spinlock_t *ptl; int err = 0; - pte = pte_alloc_map_lock(mm, pmd, addr, &ptl); + mapped_pte = pte = pte_alloc_map_lock(mm, pmd, addr, &ptl); if (!pte) return -ENOMEM; arch_enter_lazy_mmu_mode(); @@ -2008,7 +2010,7 @@ pfn++; } while (pte++, addr += PAGE_SIZE, addr != end); arch_leave_lazy_mmu_mode(); - pte_unmap_unlock(pte - 1, ptl); + pte_unmap_unlock(mapped_pte, ptl); return err; } @@ -2201,7 +2203,8 @@ static int apply_to_pte_range(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, unsigned long end, - pte_fn_t fn, void *data, bool create) + pte_fn_t fn, void *data, bool create, + pgtbl_mod_mask *mask) { pte_t *pte; int err = 0; @@ -2209,7 +2212,7 @@ if (create) { pte = (mm == &init_mm) ? - pte_alloc_kernel(pmd, addr) : + pte_alloc_kernel_track(pmd, addr, mask) : pte_alloc_map_lock(mm, pmd, addr, &ptl); if (!pte) return -ENOMEM; @@ -2230,6 +2233,7 @@ break; } } while (addr += PAGE_SIZE, addr != end); + *mask |= PGTBL_PTE_MODIFIED; arch_leave_lazy_mmu_mode(); @@ -2240,7 +2244,8 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, unsigned long addr, unsigned long end, - pte_fn_t fn, void *data, bool create) + pte_fn_t fn, void *data, bool create, + pgtbl_mod_mask *mask) { pmd_t *pmd; unsigned long next; @@ -2249,7 +2254,7 @@ BUG_ON(pud_huge(*pud)); if (create) { - pmd = pmd_alloc(mm, pud, addr); + pmd = pmd_alloc_track(mm, pud, addr, mask); if (!pmd) return -ENOMEM; } else { @@ -2259,7 +2264,7 @@ next = pmd_addr_end(addr, end); if (create || !pmd_none_or_clear_bad(pmd)) { err = apply_to_pte_range(mm, pmd, addr, next, fn, data, - create); + create, mask); if (err) break; } @@ -2269,14 +2274,15 @@ static int apply_to_pud_range(struct mm_struct *mm, p4d_t *p4d, unsigned long addr, unsigned long end, - pte_fn_t fn, void *data, bool create) + pte_fn_t fn, void *data, bool create, + pgtbl_mod_mask *mask) { pud_t *pud; unsigned long next; int err = 0; if (create) { - pud = pud_alloc(mm, p4d, addr); + pud = pud_alloc_track(mm, p4d, addr, mask); if (!pud) return -ENOMEM; } else { @@ -2286,7 +2292,7 @@ next = pud_addr_end(addr, end); if (create || !pud_none_or_clear_bad(pud)) { err = apply_to_pmd_range(mm, pud, addr, next, fn, data, - create); + create, mask); if (err) break; } @@ -2296,14 +2302,15 @@ static int apply_to_p4d_range(struct mm_struct *mm, pgd_t *pgd, unsigned long addr, unsigned long end, - pte_fn_t fn, void *data, bool create) + pte_fn_t fn, void *data, bool create, + pgtbl_mod_mask *mask) { p4d_t *p4d; unsigned long next; int err = 0; if (create) { - p4d = p4d_alloc(mm, pgd, addr); + p4d = p4d_alloc_track(mm, pgd, addr, mask); if (!p4d) return -ENOMEM; } else { @@ -2313,7 +2320,7 @@ next = p4d_addr_end(addr, end); if (create || !p4d_none_or_clear_bad(p4d)) { err = apply_to_pud_range(mm, p4d, addr, next, fn, data, - create); + create, mask); if (err) break; } @@ -2326,8 +2333,9 @@ void *data, bool create) { pgd_t *pgd; - unsigned long next; + unsigned long start = addr, next; unsigned long end = addr + size; + pgtbl_mod_mask mask = 0; int err = 0; if (WARN_ON(addr >= end)) @@ -2338,11 +2346,14 @@ next = pgd_addr_end(addr, end); if (!create && pgd_none_or_clear_bad(pgd)) continue; - err = apply_to_p4d_range(mm, pgd, addr, next, fn, data, create); + err = apply_to_p4d_range(mm, pgd, addr, next, fn, data, create, &mask); if (err) break; } while (pgd++, addr = next, addr != end); + if (mask & ARCH_PAGE_TABLE_SYNC_MASK) + arch_sync_kernel_mappings(start, start + size); + return err; } @@ -2902,6 +2913,14 @@ return handle_userfault(vmf, VM_UFFD_WP); } + /* + * Userfaultfd write-protect can defer flushes. Ensure the TLB + * is flushed in this case before copying. + */ + if (unlikely(userfaultfd_wp(vmf->vma) && + mm_tlb_flush_pending(vmf->vma->vm_mm))) + flush_tlb_page(vmf->vma, vmf->address); + vmf->page = vm_normal_page(vma, vmf->address, vmf->orig_pte); if (!vmf->page) { /* @@ -4248,6 +4267,9 @@ vmf->flags & FAULT_FLAG_WRITE)) { update_mmu_cache(vmf->vma, vmf->address, vmf->pte); } else { + /* Skip spurious TLB flush for retried page fault */ + if (vmf->flags & FAULT_FLAG_TRIED) + goto unlock; /* * This is needed only for protection faults but the arch code * is not yet telling us if this is a protection fault or not. @@ -4481,9 +4503,9 @@ } #endif /* __PAGETABLE_PMD_FOLDED */ -static int __follow_pte_pmd(struct mm_struct *mm, unsigned long address, - struct mmu_notifier_range *range, - pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp) +int follow_invalidate_pte(struct mm_struct *mm, unsigned long address, + struct mmu_notifier_range *range, pte_t **ptepp, + pmd_t **pmdpp, spinlock_t **ptlp) { pgd_t *pgd; p4d_t *p4d; @@ -4548,31 +4570,33 @@ return -EINVAL; } -static inline int follow_pte(struct mm_struct *mm, unsigned long address, - pte_t **ptepp, spinlock_t **ptlp) -{ - int res; - - /* (void) is needed to make gcc happy */ - (void) __cond_lock(*ptlp, - !(res = __follow_pte_pmd(mm, address, NULL, - ptepp, NULL, ptlp))); - return res; -} - -int follow_pte_pmd(struct mm_struct *mm, unsigned long address, - struct mmu_notifier_range *range, - pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp) +/** + * follow_pte - look up PTE at a user virtual address + * @mm: the mm_struct of the target address space + * @address: user virtual address + * @ptepp: location to store found PTE + * @ptlp: location to store the lock for the PTE + * + * On a successful return, the pointer to the PTE is stored in @ptepp; + * the corresponding lock is taken and its location is stored in @ptlp. + * The contents of the PTE are only stable until @ptlp is released; + * any further use, if any, must be protected against invalidation + * with MMU notifiers. + * + * Only IO mappings and raw PFN mappings are allowed. The mmap semaphore + * should be taken for read. + * + * KVM uses this function. While it is arguably less bad than ``follow_pfn``, + * it is not a good general-purpose API. + * + * Return: zero on success, -ve otherwise. + */ +int follow_pte(struct mm_struct *mm, unsigned long address, + pte_t **ptepp, spinlock_t **ptlp) { - int res; - - /* (void) is needed to make gcc happy */ - (void) __cond_lock(*ptlp, - !(res = __follow_pte_pmd(mm, address, range, - ptepp, pmdpp, ptlp))); - return res; + return follow_invalidate_pte(mm, address, NULL, ptepp, NULL, ptlp); } -EXPORT_SYMBOL(follow_pte_pmd); +EXPORT_SYMBOL_GPL(follow_pte); /** * follow_pfn - look up PFN at a user virtual address @@ -4582,6 +4606,9 @@ * * Only IO mappings and raw PFN mappings are allowed. * + * This function does not allow the caller to read the permissions + * of the PTE. Do not use it. + * * Return: zero and the pfn at @pfn on success, -ve otherwise. */ int follow_pfn(struct vm_area_struct *vma, unsigned long address, @@ -4972,17 +4999,19 @@ void *page_kaddr; unsigned long i, rc = 0; unsigned long ret_val = pages_per_huge_page * PAGE_SIZE; + struct page *subpage = dst_page; - for (i = 0; i < pages_per_huge_page; i++) { + for (i = 0; i < pages_per_huge_page; + i++, subpage = mem_map_next(subpage, dst_page, i)) { if (allow_pagefault) - page_kaddr = kmap(dst_page + i); + page_kaddr = kmap(subpage); else - page_kaddr = kmap_atomic(dst_page + i); + page_kaddr = kmap_atomic(subpage); rc = copy_from_user(page_kaddr, (const void __user *)(src + i * PAGE_SIZE), PAGE_SIZE); if (allow_pagefault) - kunmap(dst_page + i); + kunmap(subpage); else kunmap_atomic(page_kaddr); --- linux-5.8.0.orig/mm/memory_hotplug.c +++ linux-5.8.0/mm/memory_hotplug.c @@ -54,6 +54,8 @@ DEFINE_STATIC_PERCPU_RWSEM(mem_hotplug_lock); +static int default_kernel_zone = ZONE_NORMAL; + void get_online_mems(void) { percpu_down_read(&mem_hotplug_lock); @@ -718,16 +720,27 @@ * expects the zone spans the pfn range. All the pages in the range * are reserved so nobody should be touching them so we should be safe */ - memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, - MEMMAP_HOTPLUG, altmap); + memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, 0, + MEMINIT_HOTPLUG, altmap); set_zone_contiguous(zone); } +void set_default_mem_hotplug_zone(enum zone_type zone) +{ + default_kernel_zone = zone; +} + +#ifdef CONFIG_HIGHMEM +#define MAX_KERNEL_ZONE ZONE_HIGHMEM +#else +#define MAX_KERNEL_ZONE ZONE_NORMAL +#endif + /* * Returns a default kernel memory zone for the given pfn range. * If no kernel zone covers this pfn range it will automatically go - * to the ZONE_NORMAL. + * to the MAX_KERNEL_ZONE. */ static struct zone *default_kernel_zone_for_pfn(int nid, unsigned long start_pfn, unsigned long nr_pages) @@ -735,14 +748,14 @@ struct pglist_data *pgdat = NODE_DATA(nid); int zid; - for (zid = 0; zid <= ZONE_NORMAL; zid++) { + for (zid = 0; zid <= MAX_KERNEL_ZONE; zid++) { struct zone *zone = &pgdat->node_zones[zid]; if (zone_intersects(zone, start_pfn, nr_pages)) return zone; } - return &pgdat->node_zones[ZONE_NORMAL]; + return &pgdat->node_zones[default_kernel_zone]; } static inline struct zone *default_zone_for_pfn(int nid, unsigned long start_pfn, @@ -1065,7 +1078,8 @@ } /* link memory sections under this node.*/ - ret = link_mem_sections(nid, PFN_DOWN(start), PFN_UP(start + size - 1)); + ret = link_mem_sections(nid, PFN_DOWN(start), PFN_UP(start + size - 1), + MEMINIT_HOTPLUG); BUG_ON(ret); /* create new memmap entry */ @@ -1309,7 +1323,7 @@ if (WARN_ON(PageLRU(page))) isolate_lru_page(page); if (page_mapped(page)) - try_to_unmap(page, TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS); + try_to_unmap(page, TTU_IGNORE_MLOCK); continue; } @@ -1557,6 +1571,20 @@ /* check again */ ret = walk_system_ram_range(start_pfn, end_pfn - start_pfn, NULL, check_pages_isolated_cb); + /* + * per-cpu pages are drained in start_isolate_page_range, but if + * there are still pages that are not free, make sure that we + * drain again, because when we isolated range we might + * have raced with another thread that was adding pages to pcp + * list. + * + * Forward progress should be still guaranteed because + * pages on the pcp list can only belong to MOVABLE_ZONE + * because has_unmovable_pages explicitly checks for + * PageBuddy on freed pages on other zones. + */ + if (ret) + drain_all_pages(zone); } while (ret); /* Ok, all of our target is isolated. @@ -1742,7 +1770,7 @@ */ rc = walk_memory_blocks(start, size, NULL, check_memblock_offlined_cb); if (rc) - goto done; + return rc; /* remove memmap entry */ firmware_map_remove(start, start + size, "System RAM"); @@ -1766,9 +1794,8 @@ try_offline_node(nid); -done: mem_hotplug_done(); - return rc; + return 0; } /** --- linux-5.8.0.orig/mm/mempolicy.c +++ linux-5.8.0/mm/mempolicy.c @@ -525,7 +525,7 @@ unsigned long flags = qp->flags; int ret; bool has_unmovable = false; - pte_t *pte; + pte_t *pte, *mapped_pte; spinlock_t *ptl; ptl = pmd_trans_huge_lock(pmd, vma); @@ -539,7 +539,7 @@ if (pmd_trans_unstable(pmd)) return 0; - pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl); + mapped_pte = pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl); for (; addr != end; pte++, addr += PAGE_SIZE) { if (!pte_present(*pte)) continue; @@ -571,7 +571,7 @@ } else break; } - pte_unmap_unlock(pte - 1, ptl); + pte_unmap_unlock(mapped_pte, ptl); cond_resched(); if (has_unmovable) --- linux-5.8.0.orig/mm/migrate.c +++ linux-5.8.0/mm/migrate.c @@ -251,7 +251,7 @@ entry = make_device_private_entry(new, pte_write(pte)); pte = swp_entry_to_pte(entry); if (pte_swp_uffd_wp(*pvmw.pte)) - pte = pte_mkuffd_wp(pte); + pte = pte_swp_mkuffd_wp(pte); } } @@ -1121,8 +1121,7 @@ /* Establish migration ptes */ VM_BUG_ON_PAGE(PageAnon(page) && !PageKsm(page) && !anon_vma, page); - try_to_unmap(page, - TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS); + try_to_unmap(page, TTU_MIGRATION|TTU_IGNORE_MLOCK); page_was_mapped = 1; } @@ -1332,34 +1331,37 @@ goto put_anon; if (page_mapped(hpage)) { - /* - * try_to_unmap could potentially call huge_pmd_unshare. - * Because of this, take semaphore in write mode here and - * set TTU_RMAP_LOCKED to let lower levels know we have - * taken the lock. - */ - mapping = hugetlb_page_mapping_lock_write(hpage); - if (unlikely(!mapping)) - goto unlock_put_anon; - - try_to_unmap(hpage, - TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS| - TTU_RMAP_LOCKED); + bool mapping_locked = false; + enum ttu_flags ttu = TTU_MIGRATION|TTU_IGNORE_MLOCK; + + if (!PageAnon(hpage)) { + /* + * In shared mappings, try_to_unmap could potentially + * call huge_pmd_unshare. Because of this, take + * semaphore in write mode here and set TTU_RMAP_LOCKED + * to let lower levels know we have taken the lock. + */ + mapping = hugetlb_page_mapping_lock_write(hpage); + if (unlikely(!mapping)) + goto unlock_put_anon; + + mapping_locked = true; + ttu |= TTU_RMAP_LOCKED; + } + + try_to_unmap(hpage, ttu); page_was_mapped = 1; - /* - * Leave mapping locked until after subsequent call to - * remove_migration_ptes() - */ + + if (mapping_locked) + i_mmap_unlock_write(mapping); } if (!page_mapped(hpage)) rc = move_to_new_page(new_hpage, hpage, mode); - if (page_was_mapped) { + if (page_was_mapped) remove_migration_ptes(hpage, - rc == MIGRATEPAGE_SUCCESS ? new_hpage : hpage, true); - i_mmap_unlock_write(mapping); - } + rc == MIGRATEPAGE_SUCCESS ? new_hpage : hpage, false); unlock_put_anon: unlock_page(new_hpage); @@ -2330,10 +2332,17 @@ entry = make_migration_entry(page, mpfn & MIGRATE_PFN_WRITE); swp_pte = swp_entry_to_pte(entry); - if (pte_soft_dirty(pte)) - swp_pte = pte_swp_mksoft_dirty(swp_pte); - if (pte_uffd_wp(pte)) - swp_pte = pte_swp_mkuffd_wp(swp_pte); + if (pte_present(pte)) { + if (pte_soft_dirty(pte)) + swp_pte = pte_swp_mksoft_dirty(swp_pte); + if (pte_uffd_wp(pte)) + swp_pte = pte_swp_mkuffd_wp(swp_pte); + } else { + if (pte_swp_soft_dirty(pte)) + swp_pte = pte_swp_mksoft_dirty(swp_pte); + if (pte_swp_uffd_wp(pte)) + swp_pte = pte_swp_mkuffd_wp(swp_pte); + } set_pte_at(mm, addr, ptep, swp_pte); /* @@ -2564,7 +2573,7 @@ */ static void migrate_vma_unmap(struct migrate_vma *migrate) { - int flags = TTU_MIGRATION | TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS; + int flags = TTU_MIGRATION | TTU_IGNORE_MLOCK; const unsigned long npages = migrate->npages; const unsigned long start = migrate->start; unsigned long addr, i, restore = 0; --- linux-5.8.0.orig/mm/mmap.c +++ linux-5.8.0/mm/mmap.c @@ -179,7 +179,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); mpol_put(vma_policy(vma)); vm_area_free(vma); return next; @@ -910,7 +910,7 @@ if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); - fput(file); + vma_fput(vma); } if (next->anon_vma) anon_vma_merge(vma, next); @@ -1831,8 +1831,8 @@ return addr; unmap_and_free_vma: + vma_fput(vma); vma->vm_file = NULL; - fput(file); /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); @@ -2694,7 +2694,7 @@ goto out_free_mpol; if (new->vm_file) - get_file(new->vm_file); + vma_get_file(new); if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); @@ -2713,7 +2713,7 @@ if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) - fput(new->vm_file); + vma_fput(new); unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); @@ -2906,7 +2906,7 @@ struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; - struct file *file; + struct file *file, *prfile; pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); @@ -2981,10 +2981,27 @@ } } - file = get_file(vma->vm_file); + vma_get_file(vma); + file = vma->vm_file; + prfile = vma->vm_prfile; ret = do_mmap_pgoff(vma->vm_file, start, size, prot, flags, pgoff, &populate, NULL); + if (!IS_ERR_VALUE(ret) && file && prfile) { + struct vm_area_struct *new_vma; + + new_vma = find_vma(mm, ret); + if (!new_vma->vm_prfile) + new_vma->vm_prfile = prfile; + if (new_vma != vma) + get_file(prfile); + } + /* + * two fput()s instead of vma_fput(vma), + * coz vma may not be available anymore. + */ fput(file); + if (prfile) + fput(prfile); out: mmap_write_unlock(mm); if (populate) @@ -3171,6 +3188,7 @@ if (vma->vm_flags & VM_ACCOUNT) nr_accounted += vma_pages(vma); vma = remove_vma(vma); + cond_resched(); } vm_unacct_memory(nr_accounted); } @@ -3275,7 +3293,7 @@ if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) - get_file(new_vma->vm_file); + vma_get_file(new_vma); if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); --- linux-5.8.0.orig/mm/mmu_notifier.c +++ linux-5.8.0/mm/mmu_notifier.c @@ -501,10 +501,33 @@ ""); WARN_ON(mmu_notifier_range_blockable(range) || _ret != -EAGAIN); + /* + * We call all the notifiers on any EAGAIN, + * there is no way for a notifier to know if + * its start method failed, thus a start that + * does EAGAIN can't also do end. + */ + WARN_ON(ops->invalidate_range_end); ret = _ret; } } } + + if (ret) { + /* + * Must be non-blocking to get here. If there are multiple + * notifiers and one or more failed start, any that succeeded + * start are expecting their end to be called. Do so now. + */ + hlist_for_each_entry_rcu(subscription, &subscriptions->list, + hlist, srcu_read_lock_held(&srcu)) { + if (!subscription->ops->invalidate_range_end) + continue; + + subscription->ops->invalidate_range_end(subscription, + range); + } + } srcu_read_unlock(&srcu, id); return ret; --- linux-5.8.0.orig/mm/nommu.c +++ linux-5.8.0/mm/nommu.c @@ -540,7 +540,7 @@ up_write(&nommu_region_sem); if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ @@ -672,7 +672,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); put_nommu_region(vma->vm_region); vm_area_free(vma); } @@ -1195,7 +1195,7 @@ goto error_just_free; } } - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); region = pregion; result = start; @@ -1272,10 +1272,10 @@ up_write(&nommu_region_sem); error: if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); vm_area_free(vma); return ret; --- linux-5.8.0.orig/mm/oom_kill.c +++ linux-5.8.0/mm/oom_kill.c @@ -64,6 +64,8 @@ * and mark_oom_victim */ DEFINE_MUTEX(oom_lock); +/* Serializes oom_score_adj and oom_score_adj_min updates */ +DEFINE_MUTEX(oom_adj_mutex); static inline bool is_memcg_oom(struct oom_control *oc) { --- linux-5.8.0.orig/mm/page-writeback.c +++ linux-5.8.0/mm/page-writeback.c @@ -2756,12 +2756,6 @@ } else { ret = TestClearPageWriteback(page); } - /* - * NOTE: Page might be free now! Writeback doesn't hold a page - * reference on its own, it relies on truncation to wait for - * the clearing of PG_writeback. The below can only access - * page state that is static across allocation cycles. - */ if (ret) { dec_lruvec_state(lruvec, NR_WRITEBACK); dec_zone_page_state(page, NR_ZONE_WRITE_PENDING); @@ -2834,7 +2828,7 @@ */ void wait_on_page_writeback(struct page *page) { - if (PageWriteback(page)) { + while (PageWriteback(page)) { trace_wait_on_page_writeback(page, page_mapping(page)); wait_on_page_bit(page, PG_writeback); } --- linux-5.8.0.orig/mm/page_alloc.c +++ linux-5.8.0/mm/page_alloc.c @@ -69,6 +69,7 @@ #include #include #include +#include #include #include @@ -316,20 +317,7 @@ int min_free_kbytes = 1024; int user_min_free_kbytes = -1; -#ifdef CONFIG_DISCONTIGMEM -/* - * DiscontigMem defines memory ranges as separate pg_data_t even if the ranges - * are not on separate NUMA nodes. Functionally this works but with - * watermark_boost_factor, it can reclaim prematurely as the ranges can be - * quite small. By default, do not boost watermarks on discontigmem as in - * many cases very high-order allocations like THP are likely to be - * unsupported and the premature reclaim offsets the advantage of long-term - * fragmentation avoidance. - */ int watermark_boost_factor __read_mostly; -#else -int watermark_boost_factor __read_mostly = 15000; -#endif int watermark_scale_factor = 10; static unsigned long nr_kernel_pages __initdata; @@ -418,6 +406,8 @@ if (end_pfn < pgdat_end_pfn(NODE_DATA(nid))) return false; + if (NODE_DATA(nid)->first_deferred_pfn != ULONG_MAX) + return true; /* * We start only with one section of pages, more pages are added as * needed until the rest of deferred pages are initialized. @@ -1306,6 +1296,11 @@ struct page *page, *tmp; LIST_HEAD(head); + /* + * Ensure proper count is passed which otherwise would stuck in the + * below while (list_empty(list)) loop. + */ + count = min(pcp->count, count); while (count) { struct list_head *list; @@ -2411,12 +2406,12 @@ return false; } -static inline void boost_watermark(struct zone *zone) +static inline bool boost_watermark(struct zone *zone) { unsigned long max_boost; if (!watermark_boost_factor) - return; + return false; /* * Don't bother in zones that are unlikely to produce results. * On small machines, including kdump capture kernels running @@ -2424,7 +2419,7 @@ * memory situation immediately. */ if ((pageblock_nr_pages * 4) > zone_managed_pages(zone)) - return; + return false; max_boost = mult_frac(zone->_watermark[WMARK_HIGH], watermark_boost_factor, 10000); @@ -2438,12 +2433,14 @@ * boosted watermark resulting in a hang. */ if (!max_boost) - return; + return false; max_boost = max(pageblock_nr_pages, max_boost); zone->watermark_boost = min(zone->watermark_boost + pageblock_nr_pages, max_boost); + + return true; } /* @@ -2481,8 +2478,7 @@ * likelihood of future fallbacks. Wake kswapd now as the node * may be balanced overall and kswapd will not wake naturally. */ - boost_watermark(zone); - if (alloc_flags & ALLOC_KSWAPD) + if (boost_watermark(zone) && (alloc_flags & ALLOC_KSWAPD)) set_bit(ZONE_BOOSTED_WATERMARK, &zone->flags); /* We are not allowed to try stealing from the whole block */ @@ -2784,20 +2780,20 @@ { struct page *page; -#ifdef 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 (migratetype == MIGRATE_MOVABLE && - 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; + 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 (migratetype == MIGRATE_MOVABLE && + zone_page_state(zone, NR_FREE_CMA_PAGES) > + zone_page_state(zone, NR_FREE_PAGES) / 2) { + page = __rmqueue_cma_fallback(zone, order); + if (page) + goto out; + } } -#endif retry: page = __rmqueue_smallest(zone, order, migratetype); if (unlikely(!page)) { @@ -2808,8 +2804,9 @@ alloc_flags)) goto retry; } - - trace_mm_page_alloc_zone_locked(page, order, migratetype); +out: + if (page) + trace_mm_page_alloc_zone_locked(page, order, migratetype); return page; } @@ -3207,7 +3204,7 @@ for (i = 1; i < (1 << order); i++) set_page_refcounted(page + i); - split_page_owner(page, order); + split_page_owner(page, 1 << order); } EXPORT_SYMBOL_GPL(split_page); @@ -3481,7 +3478,7 @@ #endif /* CONFIG_FAIL_PAGE_ALLOC */ -static noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) +noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order) { return __should_fail_alloc_page(gfp_mask, order); } @@ -4998,6 +4995,11 @@ if (!page_ref_sub_and_test(page, nc->pagecnt_bias)) goto refill; + if (unlikely(nc->pfmemalloc)) { + free_the_page(page, compound_order(page)); + goto refill; + } + #if (PAGE_SIZE < PAGE_FRAG_CACHE_MAX_SIZE) /* if size can vary use size else just use PAGE_SIZE */ size = nc->size; @@ -5947,7 +5949,8 @@ * done. Non-atomic initialization, single-pass. */ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, - unsigned long start_pfn, enum memmap_context context, + unsigned long start_pfn, unsigned long zone_end_pfn, + enum meminit_context context, struct vmem_altmap *altmap) { unsigned long pfn, end_pfn = start_pfn + size; @@ -5979,16 +5982,16 @@ * There can be holes in boot-time mem_map[]s handed to this * function. They do not exist on hotplugged memory. */ - if (context == MEMMAP_EARLY) { + if (context == MEMINIT_EARLY) { if (overlap_memmap_init(zone, &pfn)) continue; - if (defer_init(nid, pfn, end_pfn)) + if (defer_init(nid, pfn, zone_end_pfn)) break; } page = pfn_to_page(pfn); __init_single_page(page, pfn, zone, nid); - if (context == MEMMAP_HOTPLUG) + if (context == MEMINIT_HOTPLUG) __SetPageReserved(page); /* @@ -6071,7 +6074,7 @@ * check here not to call set_pageblock_migratetype() against * pfn out of zone. * - * Please note that MEMMAP_HOTPLUG path doesn't clear memmap + * Please note that MEMINIT_HOTPLUG path doesn't clear memmap * because this is done early in section_activate() */ if (!(pfn & (pageblock_nr_pages - 1))) { @@ -6094,13 +6097,66 @@ } } +#if !defined(CONFIG_FLAT_NODE_MEM_MAP) +/* + * Only struct pages that correspond to ranges defined by memblock.memory + * are zeroed and initialized by going through __init_single_page() during + * memmap_init_zone(). + * + * But, there could be struct pages that correspond to holes in + * memblock.memory. This can happen because of the following reasons: + * - physical memory bank size is not necessarily the exact multiple of the + * arbitrary section size + * - early reserved memory may not be listed in memblock.memory + * - memory layouts defined with memmap= kernel parameter may not align + * nicely with memmap sections + * + * Explicitly initialize those struct pages so that: + * - PG_Reserved is set + * - zone and node links point to zone and node that span the page if the + * hole is in the middle of a zone + * - zone and node links point to adjacent zone/node if the hole falls on + * the zone boundary; the pages in such holes will be prepended to the + * zone/node above the hole except for the trailing pages in the last + * section that will be appended to the zone/node below. + */ +static u64 __meminit init_unavailable_range(unsigned long spfn, + unsigned long epfn, + int zone, int node) +{ + unsigned long pfn; + u64 pgcnt = 0; + + for (pfn = spfn; pfn < epfn; pfn++) { + if (!pfn_valid(ALIGN_DOWN(pfn, pageblock_nr_pages))) { + pfn = ALIGN_DOWN(pfn, pageblock_nr_pages) + + pageblock_nr_pages - 1; + continue; + } + __init_single_page(pfn_to_page(pfn), pfn, zone, node); + __SetPageReserved(pfn_to_page(pfn)); + pgcnt++; + } + + return pgcnt; +} +#else +static inline u64 init_unavailable_range(unsigned long spfn, unsigned long epfn, + int zone, int node) +{ + return 0; +} +#endif + void __meminit __weak memmap_init(unsigned long size, int nid, unsigned long zone, unsigned long range_start_pfn) { + static unsigned long hole_pfn; unsigned long start_pfn, end_pfn; unsigned long range_end_pfn = range_start_pfn + size; int i; + u64 pgcnt = 0; for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) { start_pfn = clamp(start_pfn, range_start_pfn, range_end_pfn); @@ -6108,10 +6164,32 @@ if (end_pfn > start_pfn) { size = end_pfn - start_pfn; - memmap_init_zone(size, nid, zone, start_pfn, - MEMMAP_EARLY, NULL); + memmap_init_zone(size, nid, zone, start_pfn, range_end_pfn, + MEMINIT_EARLY, NULL); } + + if (hole_pfn < start_pfn) + pgcnt += init_unavailable_range(hole_pfn, start_pfn, + zone, nid); + hole_pfn = end_pfn; } + +#ifdef CONFIG_SPARSEMEM + /* + * Initialize the hole in the range [zone_end_pfn, section_end]. + * If zone boundary falls in the middle of a section, this hole + * will be re-initialized during the call to this function for the + * higher zone. + */ + end_pfn = round_up(range_end_pfn, PAGES_PER_SECTION); + if (hole_pfn < end_pfn) + pgcnt += init_unavailable_range(hole_pfn, end_pfn, + zone, nid); +#endif + + if (pgcnt) + pr_info(" %s zone: %llu pages in unavailable ranges\n", + zone_names[zone], pgcnt); } static int zone_batchsize(struct zone *zone) @@ -6920,89 +6998,6 @@ free_area_init_node(nid); } -#if !defined(CONFIG_FLAT_NODE_MEM_MAP) -/* - * Initialize all valid struct pages in the range [spfn, epfn) and mark them - * PageReserved(). Return the number of struct pages that were initialized. - */ -static u64 __init init_unavailable_range(unsigned long spfn, unsigned long epfn) -{ - unsigned long pfn; - u64 pgcnt = 0; - - for (pfn = spfn; pfn < epfn; pfn++) { - if (!pfn_valid(ALIGN_DOWN(pfn, pageblock_nr_pages))) { - pfn = ALIGN_DOWN(pfn, pageblock_nr_pages) - + pageblock_nr_pages - 1; - continue; - } - /* - * Use a fake node/zone (0) for now. Some of these pages - * (in memblock.reserved but not in memblock.memory) will - * get re-initialized via reserve_bootmem_region() later. - */ - __init_single_page(pfn_to_page(pfn), pfn, 0, 0); - __SetPageReserved(pfn_to_page(pfn)); - pgcnt++; - } - - return pgcnt; -} - -/* - * Only struct pages that are backed by physical memory are zeroed and - * initialized by going through __init_single_page(). But, there are some - * struct pages which are reserved in memblock allocator and their fields - * may be accessed (for example page_to_pfn() on some configuration accesses - * flags). We must explicitly initialize those struct pages. - * - * This function also addresses a similar issue where struct pages are left - * uninitialized because the physical address range is not covered by - * memblock.memory or memblock.reserved. That could happen when memblock - * layout is manually configured via memmap=, or when the highest physical - * address (max_pfn) does not end on a section boundary. - */ -static void __init init_unavailable_mem(void) -{ - phys_addr_t start, end; - u64 i, pgcnt; - phys_addr_t next = 0; - - /* - * Loop through unavailable ranges not covered by memblock.memory. - */ - pgcnt = 0; - for_each_mem_range(i, &memblock.memory, NULL, - NUMA_NO_NODE, MEMBLOCK_NONE, &start, &end, NULL) { - if (next < start) - pgcnt += init_unavailable_range(PFN_DOWN(next), - PFN_UP(start)); - next = end; - } - - /* - * Early sections always have a fully populated memmap for the whole - * section - see pfn_valid(). If the last section has holes at the - * end and that section is marked "online", the memmap will be - * considered initialized. Make sure that memmap has a well defined - * state. - */ - pgcnt += init_unavailable_range(PFN_DOWN(next), - round_up(max_pfn, PAGES_PER_SECTION)); - - /* - * Struct pages that do not have backing memory. This could be because - * firmware is using some of this memory, or for some other reasons. - */ - if (pgcnt) - pr_info("Zeroed struct page in unavailable ranges: %lld pages", pgcnt); -} -#else -static inline void __init init_unavailable_mem(void) -{ -} -#endif /* !CONFIG_FLAT_NODE_MEM_MAP */ - #if MAX_NUMNODES > 1 /* * Figure out the number of possible node ids. @@ -7426,7 +7421,6 @@ /* Initialise every node */ mminit_verify_pageflags_layout(); setup_nr_node_ids(); - init_unavailable_mem(); for_each_online_node(nid) { pg_data_t *pgdat = NODE_DATA(nid); free_area_init_node(nid); @@ -7879,9 +7873,11 @@ setup_min_slab_ratio(); #endif + khugepaged_min_free_kbytes_update(); + return 0; } -core_initcall(init_per_zone_wmark_min) +postcore_initcall(init_per_zone_wmark_min) /* * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so --- linux-5.8.0.orig/mm/page_counter.c +++ linux-5.8.0/mm/page_counter.c @@ -72,13 +72,13 @@ long new; new = atomic_long_add_return(nr_pages, &c->usage); - propagate_protected_usage(counter, new); + propagate_protected_usage(c, new); /* * This is indeed racy, but we can live with some * inaccuracy in the watermark. */ - if (new > c->watermark) - c->watermark = new; + if (new > READ_ONCE(c->watermark)) + WRITE_ONCE(c->watermark, new); } } @@ -116,22 +116,23 @@ new = atomic_long_add_return(nr_pages, &c->usage); if (new > c->max) { atomic_long_sub(nr_pages, &c->usage); - propagate_protected_usage(counter, new); + propagate_protected_usage(c, new); /* * This is racy, but we can live with some - * inaccuracy in the failcnt. + * inaccuracy in the failcnt which is only used + * to report stats. */ - c->failcnt++; + data_race(c->failcnt++); *fail = c; goto failed; } - propagate_protected_usage(counter, new); + propagate_protected_usage(c, new); /* * Just like with failcnt, we can live with some * inaccuracy in the watermark. */ - if (new > c->watermark) - c->watermark = new; + if (new > READ_ONCE(c->watermark)) + WRITE_ONCE(c->watermark, new); } return true; --- linux-5.8.0.orig/mm/page_io.c +++ linux-5.8.0/mm/page_io.c @@ -40,7 +40,7 @@ bio->bi_iter.bi_sector <<= PAGE_SHIFT - 9; bio->bi_end_io = end_io; - bio_add_page(bio, page, PAGE_SIZE * hpage_nr_pages(page), 0); + bio_add_page(bio, page, thp_size(page), 0); } return bio; } @@ -263,11 +263,6 @@ return ret; } -static sector_t swap_page_sector(struct page *page) -{ - return (sector_t)__page_file_index(page) << (PAGE_SHIFT - 9); -} - static inline void count_swpout_vm_event(struct page *page) { #ifdef CONFIG_TRANSPARENT_HUGEPAGE --- linux-5.8.0.orig/mm/page_isolation.c +++ linux-5.8.0/mm/page_isolation.c @@ -170,6 +170,14 @@ * pageblocks we may have modified and return -EBUSY to caller. This * prevents two threads from simultaneously working on overlapping ranges. * + * Please note that there is no strong synchronization with the page allocator + * either. Pages might be freed while their page blocks are marked ISOLATED. + * In some cases pages might still end up on pcp lists and that would allow + * for their allocation even when they are in fact isolated already. Depending + * on how strong of a guarantee the caller needs drain_all_pages might be needed + * (e.g. __offline_pages will need to call it after check for isolated range for + * a next retry). + * * Return: the number of isolated pageblocks on success and -EBUSY if any part * of range cannot be isolated. */ --- linux-5.8.0.orig/mm/page_owner.c +++ linux-5.8.0/mm/page_owner.c @@ -204,7 +204,7 @@ page_owner->last_migrate_reason = reason; } -void __split_page_owner(struct page *page, unsigned int order) +void __split_page_owner(struct page *page, unsigned int nr) { int i; struct page_ext *page_ext = lookup_page_ext(page); @@ -213,7 +213,7 @@ if (unlikely(!page_ext)) return; - for (i = 0; i < (1 << order); i++) { + for (i = 0; i < nr; i++) { page_owner = get_page_owner(page_ext); page_owner->order = 0; page_ext = page_ext_next(page_ext); --- linux-5.8.0.orig/mm/page_vma_mapped.c +++ linux-5.8.0/mm/page_vma_mapped.c @@ -227,7 +227,7 @@ if (pvmw->address >= pvmw->vma->vm_end || pvmw->address >= __vma_address(pvmw->page, pvmw->vma) + - hpage_nr_pages(pvmw->page) * PAGE_SIZE) + thp_size(pvmw->page)) return not_found(pvmw); /* Did we cross page table boundary? */ if (pvmw->address % PMD_SIZE == 0) { @@ -268,7 +268,7 @@ unsigned long start, end; start = __vma_address(page, vma); - end = start + PAGE_SIZE * (hpage_nr_pages(page) - 1); + end = start + thp_size(page) - PAGE_SIZE; if (unlikely(end < vma->vm_start || start >= vma->vm_end)) return 0; --- linux-5.8.0.orig/mm/percpu.c +++ linux-5.8.0/mm/percpu.c @@ -1300,7 +1300,7 @@ /* allocate chunk */ alloc_size = sizeof(struct pcpu_chunk) + - BITS_TO_LONGS(region_size >> PAGE_SHIFT); + BITS_TO_LONGS(region_size >> PAGE_SHIFT) * sizeof(unsigned long); chunk = memblock_alloc(alloc_size, SMP_CACHE_BYTES); if (!chunk) panic("%s: Failed to allocate %zu bytes\n", __func__, --- linux-5.8.0.orig/mm/prfile.c +++ linux-5.8.0/mm/prfile.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Mainly for aufs which mmap(2) different file and wants to print different + * path in /proc/PID/maps. + * Call these functions via macros defined in linux/mm.h. + * + * See Documentation/filesystems/aufs/design/06mmap.txt + * + * Copyright (c) 2014-2020 Junjro R. Okajima + * Copyright (c) 2014 Ian Campbell + */ + +#include +#include +#include + +/* #define PRFILE_TRACE */ +static inline void prfile_trace(struct file *f, struct file *pr, + const char func[], int line, const char func2[]) +{ +#ifdef PRFILE_TRACE + if (pr) + pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); +#endif +} + +void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + file_update_time(f); + if (f && pr) + file_update_time(pr); +} + +struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + get_file(f); + if (f && pr) + get_file(pr); +} + +void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} + +#ifndef CONFIG_MMU +struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], + int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vmr_do_fput(struct vm_region *region, const char func[], int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} +#endif /* !CONFIG_MMU */ --- linux-5.8.0.orig/mm/process_vm_access.c +++ linux-5.8.0/mm/process_vm_access.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include --- linux-5.8.0.orig/mm/rmap.c +++ linux-5.8.0/mm/rmap.c @@ -1413,9 +1413,6 @@ /* * If sharing is possible, start and end will be adjusted * accordingly. - * - * If called for a huge page, caller must hold i_mmap_rwsem - * in write mode as it is possible to call huge_pmd_unshare. */ adjust_range_if_pmd_sharing_possible(vma, &range.start, &range.end); @@ -1462,14 +1459,14 @@ subpage = page - page_to_pfn(page) + pte_pfn(*pvmw.pte); address = pvmw.address; - if (PageHuge(page)) { + if (PageHuge(page) && !PageAnon(page)) { /* * To call huge_pmd_unshare, i_mmap_rwsem must be * held in write mode. Caller needs to explicitly * do this outside rmap routines. */ VM_BUG_ON(!(flags & TTU_RMAP_LOCKED)); - if (huge_pmd_unshare(mm, &address, pvmw.pte)) { + if (huge_pmd_unshare(mm, vma, &address, pvmw.pte)) { /* * huge_pmd_unshare unmapped an entire PMD * page. There is no way of knowing exactly @@ -1511,9 +1508,14 @@ */ entry = make_migration_entry(page, 0); swp_pte = swp_entry_to_pte(entry); - if (pte_soft_dirty(pteval)) + + /* + * pteval maps a zone device page and is therefore + * a swap pte. + */ + if (pte_swp_soft_dirty(pteval)) swp_pte = pte_swp_mksoft_dirty(swp_pte); - if (pte_uffd_wp(pteval)) + if (pte_swp_uffd_wp(pteval)) swp_pte = pte_swp_mkuffd_wp(swp_pte); set_pte_at(mm, pvmw.address, pvmw.pte, swp_pte); /* @@ -1531,15 +1533,6 @@ goto discard; } - if (!(flags & TTU_IGNORE_ACCESS)) { - if (ptep_clear_flush_young_notify(vma, address, - pvmw.pte)) { - ret = false; - page_vma_mapped_walk_done(&pvmw); - break; - } - } - /* Nuke the page table entry. */ flush_cache_page(vma, address, pte_pfn(*pvmw.pte)); if (should_defer_flush(mm, flags)) { --- linux-5.8.0.orig/mm/shmem.c +++ linux-5.8.0/mm/shmem.c @@ -109,7 +109,7 @@ struct shmem_options { unsigned long long blocks; - unsigned long long inodes; + int inodes; struct mempolicy *mpol; kuid_t uid; kgid_t gid; @@ -127,11 +127,14 @@ return totalram_pages() / 2; } -static unsigned long shmem_default_max_inodes(void) +static int shmem_default_max_inodes(void) { unsigned long nr_pages = totalram_pages(); + unsigned long ul; - return min(nr_pages - totalhigh_pages(), nr_pages / 2); + ul = INT_MAX; + ul = min3(ul, nr_pages - totalhigh_pages(), nr_pages / 2); + return ul; } #endif @@ -1116,6 +1119,11 @@ simple_xattrs_free(&info->xattrs); WARN_ON(inode->i_blocks); + if (!sbinfo->idr_nouse && inode->i_ino) { + mutex_lock(&sbinfo->idr_lock); + idr_remove(&sbinfo->idr, inode->i_ino); + mutex_unlock(&sbinfo->idr_lock); + } shmem_free_inode(inode->i_sb); clear_inode(inode); } @@ -2222,13 +2230,13 @@ struct inode *inode; struct shmem_inode_info *info; struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + int ino; if (shmem_reserve_inode(sb)) return NULL; inode = new_inode(sb); if (inode) { - inode->i_ino = get_next_ino(); inode_init_owner(inode, dir, mode); inode->i_blocks = 0; inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); @@ -2272,6 +2280,25 @@ break; } + if (!sbinfo->idr_nouse) { + /* inum 0 and 1 are unused */ + mutex_lock(&sbinfo->idr_lock); + ino = idr_alloc(&sbinfo->idr, inode, 2, INT_MAX, + GFP_NOFS); + if (ino > 0) { + inode->i_ino = ino; + mutex_unlock(&sbinfo->idr_lock); + __insert_inode_hash(inode, inode->i_ino); + } else { + inode->i_ino = 0; + mutex_unlock(&sbinfo->idr_lock); + iput(inode); + /* shmem_free_inode() will be called */ + inode = NULL; + } + } else + inode->i_ino = get_next_ino(); + lockdep_annotate_inode_mutex_key(inode); } else shmem_free_inode(sb); @@ -3265,8 +3292,7 @@ static int shmem_match(struct inode *ino, void *vfh) { __u32 *fh = vfh; - __u64 inum = fh[2]; - inum = (inum << 32) | fh[1]; + __u64 inum = fh[1]; return ino->i_ino == inum && fh[0] == ino->i_generation; } @@ -3286,14 +3312,11 @@ struct dentry *dentry = NULL; u64 inum; - if (fh_len < 3) + if (fh_len < 2) return NULL; - inum = fid->raw[2]; - inum = (inum << 32) | fid->raw[1]; - - inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), - shmem_match, fid->raw); + inum = fid->raw[1]; + inode = ilookup5(sb, inum, shmem_match, fid->raw); if (inode) { dentry = shmem_find_alias(inode); iput(inode); @@ -3305,30 +3328,15 @@ static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, struct inode *parent) { - if (*len < 3) { - *len = 3; + if (*len < 2) { + *len = 2; return FILEID_INVALID; } - if (inode_unhashed(inode)) { - /* Unfortunately insert_inode_hash is not idempotent, - * so as we hash inodes here rather than at creation - * time, we need a lock to ensure we only try - * to do it once - */ - static DEFINE_SPINLOCK(lock); - spin_lock(&lock); - if (inode_unhashed(inode)) - __insert_inode_hash(inode, - inode->i_ino + inode->i_generation); - spin_unlock(&lock); - } - fh[0] = inode->i_generation; fh[1] = inode->i_ino; - fh[2] = ((__u64)inode->i_ino) >> 32; - *len = 3; + *len = 2; return 1; } @@ -3403,7 +3411,7 @@ break; case Opt_nr_inodes: ctx->inodes = memparse(param->string, &rest); - if (*rest) + if (*rest || ctx->inodes < 2) goto bad_value; ctx->seen |= SHMEM_SEEN_INODES; break; @@ -3501,7 +3509,7 @@ { struct shmem_options *ctx = fc->fs_private; struct shmem_sb_info *sbinfo = SHMEM_SB(fc->root->d_sb); - unsigned long inodes; + int inodes; const char *err; spin_lock(&sbinfo->stat_lock); @@ -3560,7 +3568,7 @@ seq_printf(seq, ",size=%luk", sbinfo->max_blocks << (PAGE_SHIFT - 10)); if (sbinfo->max_inodes != shmem_default_max_inodes()) - seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes); + seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes); if (sbinfo->mode != (0777 | S_ISVTX)) seq_printf(seq, ",mode=%03ho", sbinfo->mode); if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) @@ -3584,6 +3592,8 @@ { struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + if (!sbinfo->idr_nouse) + idr_destroy(&sbinfo->idr); percpu_counter_destroy(&sbinfo->used_blocks); mpol_put(sbinfo->mpol); kfree(sbinfo); @@ -3624,6 +3634,8 @@ #else sb->s_flags |= SB_NOUSER; #endif + mutex_init(&sbinfo->idr_lock); + idr_init(&sbinfo->idr); sbinfo->max_blocks = ctx->blocks; sbinfo->free_inodes = sbinfo->max_inodes = ctx->inodes; sbinfo->uid = ctx->uid; @@ -3735,6 +3747,15 @@ kmem_cache_destroy(shmem_inode_cachep); } +static __init void shmem_no_idr(struct super_block *sb) +{ + struct shmem_sb_info *sbinfo; + + sbinfo = SHMEM_SB(sb); + sbinfo->idr_nouse = true; + idr_destroy(&sbinfo->idr); +} + static const struct address_space_operations shmem_aops = { .writepage = shmem_writepage, .set_page_dirty = __set_page_dirty_no_writeback, @@ -3875,6 +3896,7 @@ pr_err("Could not kern_mount tmpfs\n"); goto out1; } + shmem_no_idr(shm_mnt->mnt_sb); #ifdef CONFIG_TRANSPARENT_HUGEPAGE if (has_transparent_hugepage() && shmem_huge > SHMEM_HUGE_DENY) @@ -4158,6 +4180,7 @@ return 0; } +EXPORT_SYMBOL_GPL(shmem_zero_setup); /** * shmem_read_mapping_page_gfp - read into page cache, using specified page allocation flags. --- linux-5.8.0.orig/mm/shuffle.c +++ linux-5.8.0/mm/shuffle.c @@ -58,25 +58,25 @@ * For two pages to be swapped in the shuffle, they must be free (on a * 'free_area' lru), have the same order, and have the same migratetype. */ -static struct page * __meminit shuffle_valid_page(unsigned long pfn, int order) +static struct page * __meminit shuffle_valid_page(struct zone *zone, + unsigned long pfn, int order) { - struct page *page; + struct page *page = pfn_to_online_page(pfn); /* * Given we're dealing with randomly selected pfns in a zone we * need to ask questions like... */ - /* ...is the pfn even in the memmap? */ - if (!pfn_valid_within(pfn)) + /* ... is the page managed by the buddy? */ + if (!page) return NULL; - /* ...is the pfn in a present section or a hole? */ - if (!pfn_in_present_section(pfn)) + /* ... is the page assigned to the same zone? */ + if (page_zone(page) != zone) return NULL; /* ...is the page free and currently on a free_area list? */ - page = pfn_to_page(pfn); if (!PageBuddy(page)) return NULL; @@ -123,7 +123,7 @@ * page_j randomly selected in the span @zone_start_pfn to * @spanned_pages. */ - page_i = shuffle_valid_page(i, order); + page_i = shuffle_valid_page(z, i, order); if (!page_i) continue; @@ -137,7 +137,7 @@ j = z->zone_start_pfn + ALIGN_DOWN(get_random_long() % z->spanned_pages, order_pages); - page_j = shuffle_valid_page(j, order); + page_j = shuffle_valid_page(z, j, order); if (page_j && page_j != page_i) break; } --- linux-5.8.0.orig/mm/slab_common.c +++ linux-5.8.0/mm/slab_common.c @@ -326,14 +326,6 @@ if (s->refcount < 0) return 1; -#ifdef CONFIG_MEMCG_KMEM - /* - * Skip the dying kmem_cache. - */ - if (s->memcg_params.dying) - return 1; -#endif - return 0; } @@ -894,15 +886,12 @@ return 0; } -static void memcg_set_kmem_cache_dying(struct kmem_cache *s) +static void flush_memcg_workqueue(struct kmem_cache *s) { spin_lock_irq(&memcg_kmem_wq_lock); s->memcg_params.dying = true; spin_unlock_irq(&memcg_kmem_wq_lock); -} -static void flush_memcg_workqueue(struct kmem_cache *s) -{ /* * SLAB and SLUB deactivate the kmem_caches through call_rcu. Make * sure all registered rcu callbacks have been invoked. @@ -934,6 +923,10 @@ { return 0; } + +static inline void flush_memcg_workqueue(struct kmem_cache *s) +{ +} #endif /* CONFIG_MEMCG_KMEM */ void slab_kmem_cache_release(struct kmem_cache *s) @@ -951,6 +944,8 @@ if (unlikely(!s)) return; + flush_memcg_workqueue(s); + get_online_cpus(); get_online_mems(); @@ -960,22 +955,6 @@ if (s->refcount) goto out_unlock; -#ifdef CONFIG_MEMCG_KMEM - memcg_set_kmem_cache_dying(s); - - mutex_unlock(&slab_mutex); - - put_online_mems(); - put_online_cpus(); - - flush_memcg_workqueue(s); - - get_online_cpus(); - get_online_mems(); - - mutex_lock(&slab_mutex); -#endif - err = shutdown_memcg_caches(s); if (!err) err = shutdown_cache(s); --- linux-5.8.0.orig/mm/slub.c +++ linux-5.8.0/mm/slub.c @@ -680,12 +680,12 @@ } static bool freelist_corrupted(struct kmem_cache *s, struct page *page, - void *freelist, void *nextfree) + void **freelist, void *nextfree) { if ((s->flags & SLAB_CONSISTENCY_CHECKS) && - !check_valid_pointer(s, page, nextfree)) { - object_err(s, page, freelist, "Freechain corrupt"); - freelist = NULL; + !check_valid_pointer(s, page, nextfree) && freelist) { + object_err(s, page, *freelist, "Freechain corrupt"); + *freelist = NULL; slab_fix(s, "Isolate corrupted freechain"); return true; } @@ -1425,7 +1425,7 @@ int objects) {} static bool freelist_corrupted(struct kmem_cache *s, struct page *page, - void *freelist, void *nextfree) + void **freelist, void *nextfree) { return false; } @@ -2117,7 +2117,7 @@ * 'freelist' is already corrupted. So isolate all objects * starting at 'freelist'. */ - if (freelist_corrupted(s, page, freelist, nextfree)) + if (freelist_corrupted(s, page, &freelist, nextfree)) break; do { @@ -2784,7 +2784,7 @@ object = c->freelist; page = c->page; - if (unlikely(!object || !node_match(page, node))) { + if (unlikely(!object || !page || !node_match(page, node))) { object = __slab_alloc(s, gfpflags, node, addr, c); stat(s, ALLOC_SLOWPATH); } else { @@ -5824,10 +5824,8 @@ s->kobj.kset = kset; err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name); - if (err) { - kobject_put(&s->kobj); + if (err) goto out; - } err = sysfs_create_group(&s->kobj, &slab_attr_group); if (err) --- linux-5.8.0.orig/mm/swap_state.c +++ linux-5.8.0/mm/swap_state.c @@ -37,7 +37,7 @@ struct address_space *swapper_spaces[MAX_SWAPFILES] __read_mostly; static unsigned int nr_swapper_spaces[MAX_SWAPFILES] __read_mostly; -static bool enable_vma_readahead __read_mostly = true; +static bool enable_vma_readahead __read_mostly = false; #define SWAP_RA_WIN_SHIFT (PAGE_SHIFT / 2) #define SWAP_RA_HITS_MASK ((1UL << SWAP_RA_WIN_SHIFT) - 1) --- linux-5.8.0.orig/mm/swapfile.c +++ linux-5.8.0/mm/swapfile.c @@ -220,6 +220,19 @@ BUG(); } +sector_t swap_page_sector(struct page *page) +{ + struct swap_info_struct *sis = page_swap_info(page); + struct swap_extent *se; + sector_t sector; + pgoff_t offset; + + offset = __page_file_index(page); + se = offset_to_swap_extent(sis, offset); + sector = se->start_block + (offset - se->start_page); + return sector << (PAGE_SHIFT - 9); +} + /* * swap allocation tell device that a cluster of swap can now be discarded, * to allow the swap device to optimize its wear-levelling. @@ -1040,16 +1053,18 @@ /* Only single cluster request supported */ WARN_ON_ONCE(n_goal > 1 && size == SWAPFILE_CLUSTER); + spin_lock(&swap_avail_lock); + avail_pgs = atomic_long_read(&nr_swap_pages) / size; - if (avail_pgs <= 0) + if (avail_pgs <= 0) { + spin_unlock(&swap_avail_lock); goto noswap; + } n_goal = min3((long)n_goal, (long)SWAP_BATCH, avail_pgs); atomic_long_sub(n_goal * size, &nr_swap_pages); - spin_lock(&swap_avail_lock); - start_over: node = numa_node_id(); plist_for_each_entry_safe(si, next, &swap_avail_heads[node], avail_lists[node]) { @@ -1074,7 +1089,7 @@ goto nextsi; } if (size == SWAPFILE_CLUSTER) { - if (!(si->flags & SWP_FS)) + if (si->flags & SWP_BLKDEV) n_ret = swap_alloc_cluster(si, swp_entries); } else n_ret = scan_swap_map_slots(si, SWAP_HAS_CACHE, @@ -1123,14 +1138,13 @@ spin_lock(&si->lock); if (si->flags & SWP_WRITEOK) { - atomic_long_dec(&nr_swap_pages); /* This is called for allocating swap entry, not cache */ offset = scan_swap_map(si, 1); if (offset) { + atomic_long_dec(&nr_swap_pages); spin_unlock(&si->lock); return swp_entry(type, offset); } - atomic_long_inc(&nr_swap_pages); } spin_unlock(&si->lock); fail: @@ -2861,6 +2875,7 @@ static struct swap_info_struct *alloc_swap_info(void) { struct swap_info_struct *p; + struct swap_info_struct *defer = NULL; unsigned int type; int i; @@ -2889,7 +2904,7 @@ smp_wmb(); WRITE_ONCE(nr_swapfiles, nr_swapfiles + 1); } else { - kvfree(p); + defer = p; p = swap_info[type]; /* * Do not memset this entry: a racing procfs swap_next() @@ -2902,6 +2917,7 @@ plist_node_init(&p->avail_lists[i], 0); p->flags = SWP_USED; spin_unlock(&swap_lock); + kvfree(defer); spin_lock_init(&p->lock); spin_lock_init(&p->cont_lock); @@ -3336,7 +3352,7 @@ error = inode_drain_writes(inode); if (error) { inode->i_flags &= ~S_SWAPFILE; - goto bad_swap_unlock_inode; + goto free_swap_address_space; } mutex_lock(&swapon_mutex); @@ -3361,6 +3377,8 @@ error = 0; goto out; +free_swap_address_space: + exit_swap_address_space(p->type); bad_swap_unlock_inode: inode_unlock(inode); bad_swap: --- linux-5.8.0.orig/mm/vmalloc.c +++ linux-5.8.0/mm/vmalloc.c @@ -102,6 +102,8 @@ if (pmd_none_or_clear_bad(pmd)) continue; vunmap_pte_range(pmd, addr, next, mask); + + cond_resched(); } while (pmd++, addr = next, addr != end); } @@ -315,6 +317,7 @@ return 0; } +EXPORT_SYMBOL(map_kernel_range_noflush); int map_kernel_range(unsigned long start, unsigned long size, pgprot_t prot, struct page **pages) @@ -2147,6 +2150,7 @@ NUMA_NO_NODE, GFP_KERNEL, __builtin_return_address(0)); } +EXPORT_SYMBOL(get_vm_area); struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags, const void *caller) @@ -2288,7 +2292,7 @@ debug_check_no_locks_freed(area->addr, get_vm_area_size(area)); debug_check_no_obj_freed(area->addr, get_vm_area_size(area)); - kasan_poison_vmalloc(area->addr, area->size); + kasan_poison_vmalloc(area->addr, get_vm_area_size(area)); vm_remove_mappings(area, deallocate_pages); @@ -3477,11 +3481,11 @@ } static void s_stop(struct seq_file *m, void *p) - __releases(&vmap_purge_lock) __releases(&vmap_area_lock) + __releases(&vmap_purge_lock) { - mutex_unlock(&vmap_purge_lock); spin_unlock(&vmap_area_lock); + mutex_unlock(&vmap_purge_lock); } static void show_numa_info(struct seq_file *m, struct vm_struct *v) --- linux-5.8.0.orig/mm/vmscan.c +++ linux-5.8.0/mm/vmscan.c @@ -1076,7 +1076,6 @@ static unsigned int shrink_page_list(struct list_head *page_list, struct pglist_data *pgdat, struct scan_control *sc, - enum ttu_flags ttu_flags, struct reclaim_stat *stat, bool ignore_references) { @@ -1245,6 +1244,8 @@ if (!PageSwapCache(page)) { if (!(sc->gfp_mask & __GFP_IO)) goto keep_locked; + if (page_maybe_dma_pinned(page)) + goto keep_locked; if (PageTransHuge(page)) { /* cannot split THP, skip it */ if (!can_split_huge_page(page, NULL)) @@ -1301,7 +1302,7 @@ * processes. Try to unmap it here. */ if (page_mapped(page)) { - enum ttu_flags flags = ttu_flags | TTU_BATCH_FLUSH; + enum ttu_flags flags = TTU_BATCH_FLUSH; bool was_swapbacked = PageSwapBacked(page); if (unlikely(PageTransHuge(page))) @@ -1518,9 +1519,10 @@ } nr_reclaimed = shrink_page_list(&clean_pages, zone->zone_pgdat, &sc, - TTU_IGNORE_ACCESS, &stat, true); + &stat, true); list_splice(&clean_pages, page_list); - mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, -nr_reclaimed); + mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, + -(long)nr_reclaimed); /* * Since lazyfree pages are isolated from file LRU from the beginning, * they will rotate back to anonymous LRU in the end if it failed to @@ -1530,7 +1532,7 @@ mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_ANON, stat.nr_lazyfree_fail); mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, - -stat.nr_lazyfree_fail); + -(long)stat.nr_lazyfree_fail); return nr_reclaimed; } @@ -1961,8 +1963,7 @@ if (nr_taken == 0) return 0; - nr_reclaimed = shrink_page_list(&page_list, pgdat, sc, 0, - &stat, false); + nr_reclaimed = shrink_page_list(&page_list, pgdat, sc, &stat, false); spin_lock_irq(&pgdat->lru_lock); @@ -2133,8 +2134,7 @@ nr_reclaimed += shrink_page_list(&node_page_list, NODE_DATA(nid), - &sc, 0, - &dummy_stat, false); + &sc, &dummy_stat, false); while (!list_empty(&node_page_list)) { page = lru_to_page(&node_page_list); list_del(&page->lru); @@ -2147,8 +2147,7 @@ if (!list_empty(&node_page_list)) { nr_reclaimed += shrink_page_list(&node_page_list, NODE_DATA(nid), - &sc, 0, - &dummy_stat, false); + &sc, &dummy_stat, false); while (!list_empty(&node_page_list)) { page = lru_to_page(&node_page_list); list_del(&page->lru); @@ -2619,6 +2618,14 @@ unsigned long reclaimed; unsigned long scanned; + /* + * This loop can become CPU-bound when target memcgs + * aren't eligible for reclaim - either because they + * don't have any reclaimable pages, or because their + * memory is explicitly protected. Avoid soft lockups. + */ + cond_resched(); + switch (mem_cgroup_protected(target_memcg, memcg)) { case MEMCG_PROT_MIN: /* @@ -4089,8 +4096,13 @@ */ int node_reclaim_mode __read_mostly; -#define RECLAIM_WRITE (1<<0) /* Writeout pages during reclaim */ -#define RECLAIM_UNMAP (1<<1) /* Unmap pages during reclaim */ +/* + * These bit locations are exposed in the vm.zone_reclaim_mode sysctl + * ABI. New bits are OK, but existing bits can never change. + */ +#define RECLAIM_ZONE (1<<0) /* Run shrink_inactive_list on the zone */ +#define RECLAIM_WRITE (1<<1) /* Writeout pages during reclaim */ +#define RECLAIM_UNMAP (1<<2) /* Unmap pages during reclaim */ /* * Priority for NODE_RECLAIM. This determines the fraction of pages --- linux-5.8.0.orig/mm/vmstat.c +++ linux-5.8.0/mm/vmstat.c @@ -1596,12 +1596,6 @@ zone->present_pages, zone_managed_pages(zone)); - /* If unpopulated, no other information is useful */ - if (!populated_zone(zone)) { - seq_putc(m, '\n'); - return; - } - seq_printf(m, "\n protection: (%ld", zone->lowmem_reserve[0]); @@ -1609,6 +1603,12 @@ seq_printf(m, ", %ld", zone->lowmem_reserve[i]); seq_putc(m, ')'); + /* If unpopulated, no other information is useful */ + if (!populated_zone(zone)) { + seq_putc(m, '\n'); + return; + } + for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) seq_printf(m, "\n %-12s %lu", zone_stat_name(i), zone_page_state(zone, i)); --- linux-5.8.0.orig/mm/z3fold.c +++ linux-5.8.0/mm/z3fold.c @@ -90,7 +90,7 @@ * be enough slots to hold all possible variants */ unsigned long slot[BUDDY_MASK + 1]; - unsigned long pool; /* back link + flags */ + unsigned long pool; /* back link */ rwlock_t lock; }; #define HANDLE_FLAG_MASK (0x03) @@ -185,7 +185,7 @@ * handle flags, go under HANDLE_FLAG_MASK */ enum z3fold_handle_flags { - HANDLES_ORPHANED = 0, + HANDLES_NOFREE = 0, }; /* @@ -304,10 +304,9 @@ z3fold_page_unlock(zhdr); } -static inline void free_handle(unsigned long handle) +static inline void free_handle(unsigned long handle, struct z3fold_header *zhdr) { struct z3fold_buddy_slots *slots; - struct z3fold_header *zhdr; int i; bool is_free; @@ -317,22 +316,19 @@ if (WARN_ON(*(unsigned long *)handle == 0)) return; - zhdr = handle_to_z3fold_header(handle); slots = handle_to_slots(handle); write_lock(&slots->lock); *(unsigned long *)handle = 0; - if (zhdr->slots == slots) { + + if (test_bit(HANDLES_NOFREE, &slots->pool)) { write_unlock(&slots->lock); return; /* simple case, nothing else to do */ } - /* we are freeing a foreign handle if we are here */ - zhdr->foreign_handles--; + if (zhdr->slots != slots) + zhdr->foreign_handles--; + is_free = true; - if (!test_bit(HANDLES_ORPHANED, &slots->pool)) { - write_unlock(&slots->lock); - return; - } for (i = 0; i <= BUDDY_MASK; i++) { if (slots->slot[i]) { is_free = false; @@ -344,6 +340,8 @@ if (is_free) { struct z3fold_pool *pool = slots_to_pool(slots); + if (zhdr->slots == slots) + zhdr->slots = NULL; kmem_cache_free(pool->c_handle, slots); } } @@ -526,8 +524,6 @@ { struct page *page = virt_to_page(zhdr); struct z3fold_pool *pool = zhdr_to_pool(zhdr); - bool is_free = true; - int i; WARN_ON(!list_empty(&zhdr->buddy)); set_bit(PAGE_STALE, &page->private); @@ -537,21 +533,6 @@ list_del_init(&page->lru); spin_unlock(&pool->lock); - /* If there are no foreign handles, free the handles array */ - read_lock(&zhdr->slots->lock); - for (i = 0; i <= BUDDY_MASK; i++) { - if (zhdr->slots->slot[i]) { - is_free = false; - break; - } - } - if (!is_free) - set_bit(HANDLES_ORPHANED, &zhdr->slots->pool); - read_unlock(&zhdr->slots->lock); - - if (is_free) - kmem_cache_free(pool->c_handle, zhdr->slots); - if (locked) z3fold_page_unlock(zhdr); @@ -654,6 +635,28 @@ } } +static inline enum buddy get_free_buddy(struct z3fold_header *zhdr, int chunks) +{ + enum buddy bud = HEADLESS; + + if (zhdr->middle_chunks) { + if (!zhdr->first_chunks && + chunks <= zhdr->start_middle - ZHDR_CHUNKS) + bud = FIRST; + else if (!zhdr->last_chunks) + bud = LAST; + } else { + if (!zhdr->first_chunks) + bud = FIRST; + else if (!zhdr->last_chunks) + bud = LAST; + else + bud = MIDDLE; + } + + return bud; +} + static inline void *mchunk_memmove(struct z3fold_header *zhdr, unsigned short dst_chunk) { @@ -715,18 +718,7 @@ if (WARN_ON(new_zhdr == zhdr)) goto out_fail; - if (new_zhdr->first_chunks == 0) { - if (new_zhdr->middle_chunks != 0 && - chunks >= new_zhdr->start_middle) { - new_bud = LAST; - } else { - new_bud = FIRST; - } - } else if (new_zhdr->last_chunks == 0) { - new_bud = LAST; - } else if (new_zhdr->middle_chunks == 0) { - new_bud = MIDDLE; - } + new_bud = get_free_buddy(new_zhdr, chunks); q = new_zhdr; switch (new_bud) { case FIRST: @@ -848,9 +840,8 @@ return; } - if (unlikely(PageIsolated(page) || - test_bit(PAGE_CLAIMED, &page->private) || - test_bit(PAGE_STALE, &page->private))) { + if (test_bit(PAGE_STALE, &page->private) || + test_and_set_bit(PAGE_CLAIMED, &page->private)) { z3fold_page_unlock(zhdr); return; } @@ -859,13 +850,16 @@ zhdr->mapped_count == 0 && compact_single_buddy(zhdr)) { if (kref_put(&zhdr->refcount, release_z3fold_page_locked)) atomic64_dec(&pool->pages_nr); - else + else { + clear_bit(PAGE_CLAIMED, &page->private); z3fold_page_unlock(zhdr); + } return; } z3fold_compact_page(zhdr); add_to_unbuddied(pool, zhdr); + clear_bit(PAGE_CLAIMED, &page->private); z3fold_page_unlock(zhdr); } @@ -974,6 +968,9 @@ } } + if (zhdr && !zhdr->slots) + zhdr->slots = alloc_slots(pool, + can_sleep ? GFP_NOIO : GFP_ATOMIC); return zhdr; } @@ -1110,17 +1107,8 @@ retry: zhdr = __z3fold_alloc(pool, size, can_sleep); if (zhdr) { - if (zhdr->first_chunks == 0) { - if (zhdr->middle_chunks != 0 && - chunks >= zhdr->start_middle) - bud = LAST; - else - bud = FIRST; - } else if (zhdr->last_chunks == 0) - bud = LAST; - else if (zhdr->middle_chunks == 0) - bud = MIDDLE; - else { + bud = get_free_buddy(zhdr, chunks); + if (bud == HEADLESS) { if (kref_put(&zhdr->refcount, release_z3fold_page_locked)) atomic64_dec(&pool->pages_nr); @@ -1266,12 +1254,11 @@ pr_err("%s: unknown bud %d\n", __func__, bud); WARN_ON(1); put_z3fold_header(zhdr); - clear_bit(PAGE_CLAIMED, &page->private); return; } if (!page_claimed) - free_handle(handle); + free_handle(handle, zhdr); if (kref_put(&zhdr->refcount, release_z3fold_page_locked_list)) { atomic64_dec(&pool->pages_nr); return; @@ -1281,8 +1268,7 @@ z3fold_page_unlock(zhdr); return; } - if (unlikely(PageIsolated(page)) || - test_and_set_bit(NEEDS_COMPACTING, &page->private)) { + if (test_and_set_bit(NEEDS_COMPACTING, &page->private)) { put_z3fold_header(zhdr); clear_bit(PAGE_CLAIMED, &page->private); return; @@ -1346,6 +1332,10 @@ struct page *page = NULL; struct list_head *pos; unsigned long first_handle = 0, middle_handle = 0, last_handle = 0; + struct z3fold_buddy_slots slots __attribute__((aligned(SLOTS_ALIGN))); + + rwlock_init(&slots.lock); + slots.pool = (unsigned long)pool | (1 << HANDLES_NOFREE); spin_lock(&pool->lock); if (!pool->ops || !pool->ops->evict || retries == 0) { @@ -1360,35 +1350,50 @@ list_for_each_prev(pos, &pool->lru) { page = list_entry(pos, struct page, lru); - /* this bit could have been set by free, in which case - * we pass over to the next page in the pool. - */ - if (test_and_set_bit(PAGE_CLAIMED, &page->private)) { - page = NULL; - continue; - } - - if (unlikely(PageIsolated(page))) { - clear_bit(PAGE_CLAIMED, &page->private); - page = NULL; - continue; - } zhdr = page_address(page); - if (test_bit(PAGE_HEADLESS, &page->private)) + if (test_bit(PAGE_HEADLESS, &page->private)) { + /* + * For non-headless pages, we wait to do this + * until we have the page lock to avoid racing + * with __z3fold_alloc(). Headless pages don't + * have a lock (and __z3fold_alloc() will never + * see them), but we still need to test and set + * PAGE_CLAIMED to avoid racing with + * z3fold_free(), so just do it now before + * leaving the loop. + */ + if (test_and_set_bit(PAGE_CLAIMED, &page->private)) + continue; + break; + } + if (kref_get_unless_zero(&zhdr->refcount) == 0) { + zhdr = NULL; + break; + } if (!z3fold_page_trylock(zhdr)) { - clear_bit(PAGE_CLAIMED, &page->private); + if (kref_put(&zhdr->refcount, + release_z3fold_page)) + atomic64_dec(&pool->pages_nr); zhdr = NULL; continue; /* can't evict at this point */ } - if (zhdr->foreign_handles) { - clear_bit(PAGE_CLAIMED, &page->private); - z3fold_page_unlock(zhdr); + + /* test_and_set_bit is of course atomic, but we still + * need to do it under page lock, otherwise checking + * that bit in __z3fold_alloc wouldn't make sense + */ + if (zhdr->foreign_handles || + test_and_set_bit(PAGE_CLAIMED, &page->private)) { + if (kref_put(&zhdr->refcount, + release_z3fold_page)) + atomic64_dec(&pool->pages_nr); + else + z3fold_page_unlock(zhdr); zhdr = NULL; continue; /* can't evict such page */ } - kref_get(&zhdr->refcount); list_del_init(&zhdr->buddy); zhdr->cpu = -1; break; @@ -1410,12 +1415,16 @@ first_handle = 0; last_handle = 0; middle_handle = 0; + memset(slots.slot, 0, sizeof(slots.slot)); if (zhdr->first_chunks) - first_handle = encode_handle(zhdr, FIRST); + first_handle = __encode_handle(zhdr, &slots, + FIRST); if (zhdr->middle_chunks) - middle_handle = encode_handle(zhdr, MIDDLE); + middle_handle = __encode_handle(zhdr, &slots, + MIDDLE); if (zhdr->last_chunks) - last_handle = encode_handle(zhdr, LAST); + last_handle = __encode_handle(zhdr, &slots, + LAST); /* * it's safe to unlock here because we hold a * reference to this page @@ -1430,19 +1439,16 @@ ret = pool->ops->evict(pool, middle_handle); if (ret) goto next; - free_handle(middle_handle); } if (first_handle) { ret = pool->ops->evict(pool, first_handle); if (ret) goto next; - free_handle(first_handle); } if (last_handle) { ret = pool->ops->evict(pool, last_handle); if (ret) goto next; - free_handle(last_handle); } next: if (test_bit(PAGE_HEADLESS, &page->private)) { @@ -1456,9 +1462,11 @@ spin_unlock(&pool->lock); clear_bit(PAGE_CLAIMED, &page->private); } else { + struct z3fold_buddy_slots *slots = zhdr->slots; z3fold_page_lock(zhdr); if (kref_put(&zhdr->refcount, release_z3fold_page_locked)) { + kmem_cache_free(pool->c_handle, slots); atomic64_dec(&pool->pages_nr); return 0; } @@ -1574,8 +1582,7 @@ VM_BUG_ON_PAGE(!PageMovable(page), page); VM_BUG_ON_PAGE(PageIsolated(page), page); - if (test_bit(PAGE_HEADLESS, &page->private) || - test_bit(PAGE_CLAIMED, &page->private)) + if (test_bit(PAGE_HEADLESS, &page->private)) return false; zhdr = page_address(page); @@ -1587,6 +1594,8 @@ if (zhdr->mapped_count != 0 || zhdr->foreign_handles != 0) goto out; + if (test_and_set_bit(PAGE_CLAIMED, &page->private)) + goto out; pool = zhdr_to_pool(zhdr); spin_lock(&pool->lock); if (!list_empty(&zhdr->buddy)) @@ -1613,16 +1622,17 @@ VM_BUG_ON_PAGE(!PageMovable(page), page); VM_BUG_ON_PAGE(!PageIsolated(page), page); + VM_BUG_ON_PAGE(!test_bit(PAGE_CLAIMED, &page->private), page); VM_BUG_ON_PAGE(!PageLocked(newpage), newpage); zhdr = page_address(page); pool = zhdr_to_pool(zhdr); - if (!z3fold_page_trylock(zhdr)) { + if (!z3fold_page_trylock(zhdr)) return -EAGAIN; - } if (zhdr->mapped_count != 0 || zhdr->foreign_handles != 0) { z3fold_page_unlock(zhdr); + clear_bit(PAGE_CLAIMED, &page->private); return -EBUSY; } if (work_pending(&zhdr->work)) { @@ -1664,6 +1674,7 @@ queue_work_on(new_zhdr->cpu, pool->compact_wq, &new_zhdr->work); page_mapcount_reset(page); + clear_bit(PAGE_CLAIMED, &page->private); put_page(page); return 0; } @@ -1687,6 +1698,7 @@ spin_lock(&pool->lock); list_add(&page->lru, &pool->lru); spin_unlock(&pool->lock); + clear_bit(PAGE_CLAIMED, &page->private); z3fold_page_unlock(zhdr); } --- linux-5.8.0.orig/mm/zsmalloc.c +++ linux-5.8.0/mm/zsmalloc.c @@ -293,11 +293,7 @@ }; struct mapping_area { -#ifdef CONFIG_ZSMALLOC_PGTABLE_MAPPING - struct vm_struct *vm; /* vm area for mapping object that span pages */ -#else char *vm_buf; /* copy buffer for objects that span pages */ -#endif char *vm_addr; /* address of kmap_atomic()'ed pages */ enum zs_mapmode vm_mm; /* mapping mode */ }; @@ -1113,48 +1109,6 @@ return zspage; } -#ifdef CONFIG_ZSMALLOC_PGTABLE_MAPPING -static inline int __zs_cpu_up(struct mapping_area *area) -{ - /* - * Make sure we don't leak memory if a cpu UP notification - * and zs_init() race and both call zs_cpu_up() on the same cpu - */ - if (area->vm) - return 0; - area->vm = alloc_vm_area(PAGE_SIZE * 2, NULL); - if (!area->vm) - return -ENOMEM; - return 0; -} - -static inline void __zs_cpu_down(struct mapping_area *area) -{ - if (area->vm) - free_vm_area(area->vm); - area->vm = NULL; -} - -static inline void *__zs_map_object(struct mapping_area *area, - struct page *pages[2], int off, int size) -{ - unsigned long addr = (unsigned long)area->vm->addr; - - BUG_ON(map_kernel_range(addr, PAGE_SIZE * 2, PAGE_KERNEL, pages) < 0); - area->vm_addr = area->vm->addr; - return area->vm_addr + off; -} - -static inline void __zs_unmap_object(struct mapping_area *area, - struct page *pages[2], int off, int size) -{ - unsigned long addr = (unsigned long)area->vm_addr; - - unmap_kernel_range(addr, PAGE_SIZE * 2); -} - -#else /* CONFIG_ZSMALLOC_PGTABLE_MAPPING */ - static inline int __zs_cpu_up(struct mapping_area *area) { /* @@ -1235,8 +1189,6 @@ pagefault_enable(); } -#endif /* CONFIG_ZSMALLOC_PGTABLE_MAPPING */ - static int zs_cpu_prepare(unsigned int cpu) { struct mapping_area *area; @@ -2264,11 +2216,13 @@ return obj_wasted * class->pages_per_zspage; } -static void __zs_compact(struct zs_pool *pool, struct size_class *class) +static unsigned long __zs_compact(struct zs_pool *pool, + struct size_class *class) { struct zs_compact_control cc; struct zspage *src_zspage; struct zspage *dst_zspage = NULL; + unsigned long pages_freed = 0; spin_lock(&class->lock); while ((src_zspage = isolate_zspage(class, true))) { @@ -2298,7 +2252,7 @@ putback_zspage(class, dst_zspage); if (putback_zspage(class, src_zspage) == ZS_EMPTY) { free_zspage(pool, class, src_zspage); - pool->stats.pages_compacted += class->pages_per_zspage; + pages_freed += class->pages_per_zspage; } spin_unlock(&class->lock); cond_resched(); @@ -2309,12 +2263,15 @@ putback_zspage(class, src_zspage); spin_unlock(&class->lock); + + return pages_freed; } unsigned long zs_compact(struct zs_pool *pool) { int i; struct size_class *class; + unsigned long pages_freed = 0; for (i = ZS_SIZE_CLASSES - 1; i >= 0; i--) { class = pool->size_class[i]; @@ -2322,10 +2279,11 @@ continue; if (class->index != i) continue; - __zs_compact(pool, class); + pages_freed += __zs_compact(pool, class); } + atomic_long_add(pages_freed, &pool->stats.pages_compacted); - return pool->stats.pages_compacted; + return pages_freed; } EXPORT_SYMBOL_GPL(zs_compact); @@ -2342,13 +2300,12 @@ struct zs_pool *pool = container_of(shrinker, struct zs_pool, shrinker); - pages_freed = pool->stats.pages_compacted; /* * Compact classes and calculate compaction delta. * Can run concurrently with a manually triggered * (by user) compaction. */ - pages_freed = zs_compact(pool) - pages_freed; + pages_freed = zs_compact(pool); return pages_freed ? pages_freed : SHRINK_STOP; } --- linux-5.8.0.orig/net/8021q/vlan.c +++ linux-5.8.0/net/8021q/vlan.c @@ -280,7 +280,8 @@ return 0; out_free_newdev: - if (new_dev->reg_state == NETREG_UNINITIALIZED) + if (new_dev->reg_state == NETREG_UNINITIALIZED || + new_dev->reg_state == NETREG_UNREGISTERED) free_netdev(new_dev); return err; } --- linux-5.8.0.orig/net/9p/client.c +++ linux-5.8.0/net/9p/client.c @@ -1617,10 +1617,6 @@ } p9_debug(P9_DEBUG_9P, "<<< RREAD count %d\n", count); - if (!count) { - p9_tag_remove(clnt, req); - return 0; - } if (non_zc) { int n = copy_to_iter(dataptr, count, to); --- linux-5.8.0.orig/net/9p/trans_fd.c +++ linux-5.8.0/net/9p/trans_fd.c @@ -1023,7 +1023,7 @@ csocket = NULL; - if (addr == NULL) + if (!addr || !strlen(addr)) return -EINVAL; if (strlen(addr) >= UNIX_PATH_MAX) { --- linux-5.8.0.orig/net/appletalk/atalk_proc.c +++ linux-5.8.0/net/appletalk/atalk_proc.c @@ -229,6 +229,8 @@ sizeof(struct aarp_iter_state), NULL)) goto out; + return 0; + out: remove_proc_subtree("atalk", init_net.proc_net); return -ENOMEM; --- linux-5.8.0.orig/net/appletalk/ddp.c +++ linux-5.8.0/net/appletalk/ddp.c @@ -1576,8 +1576,8 @@ struct sk_buff *skb; struct net_device *dev; struct ddpehdr *ddp; - int size; - struct atalk_route *rt; + int size, hard_header_len; + struct atalk_route *rt, *rt_lo = NULL; int err; if (flags & ~(MSG_DONTWAIT|MSG_CMSG_COMPAT)) @@ -1640,7 +1640,22 @@ SOCK_DEBUG(sk, "SK %p: Size needed %d, device %s\n", sk, size, dev->name); - size += dev->hard_header_len; + hard_header_len = dev->hard_header_len; + /* Leave room for loopback hardware header if necessary */ + if (usat->sat_addr.s_node == ATADDR_BCAST && + (dev->flags & IFF_LOOPBACK || !(rt->flags & RTF_GATEWAY))) { + struct atalk_addr at_lo; + + at_lo.s_node = 0; + at_lo.s_net = 0; + + rt_lo = atrtr_find(&at_lo); + + if (rt_lo && rt_lo->dev->hard_header_len > hard_header_len) + hard_header_len = rt_lo->dev->hard_header_len; + } + + size += hard_header_len; release_sock(sk); skb = sock_alloc_send_skb(sk, size, (flags & MSG_DONTWAIT), &err); lock_sock(sk); @@ -1648,7 +1663,7 @@ goto out; skb_reserve(skb, ddp_dl->header_length); - skb_reserve(skb, dev->hard_header_len); + skb_reserve(skb, hard_header_len); skb->dev = dev; SOCK_DEBUG(sk, "SK %p: Begin build.\n", sk); @@ -1699,18 +1714,12 @@ /* loop back */ skb_orphan(skb); if (ddp->deh_dnode == ATADDR_BCAST) { - struct atalk_addr at_lo; - - at_lo.s_node = 0; - at_lo.s_net = 0; - - rt = atrtr_find(&at_lo); - if (!rt) { + if (!rt_lo) { kfree_skb(skb); err = -ENETUNREACH; goto out; } - dev = rt->dev; + dev = rt_lo->dev; skb->dev = dev; } ddp_dl->request(ddp_dl, skb, dev->dev_addr); --- linux-5.8.0.orig/net/batman-adv/bat_v_ogm.c +++ linux-5.8.0/net/batman-adv/bat_v_ogm.c @@ -874,6 +874,12 @@ ntohl(ogm_packet->seqno), ogm_throughput, ogm_packet->ttl, ogm_packet->version, ntohs(ogm_packet->tvlv_len)); + if (batadv_is_my_mac(bat_priv, ogm_packet->orig)) { + batadv_dbg(BATADV_DBG_BATMAN, bat_priv, + "Drop packet: originator packet from ourself\n"); + return; + } + /* If the throughput metric is 0, immediately drop the packet. No need * to create orig_node / neigh_node for an unusable route. */ @@ -1001,11 +1007,6 @@ if (batadv_is_my_mac(bat_priv, ethhdr->h_source)) goto free_skb; - ogm_packet = (struct batadv_ogm2_packet *)skb->data; - - if (batadv_is_my_mac(bat_priv, ogm_packet->orig)) - goto free_skb; - batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_RX); batadv_add_counter(bat_priv, BATADV_CNT_MGMT_RX_BYTES, skb->len + ETH_HLEN); --- linux-5.8.0.orig/net/batman-adv/bridge_loop_avoidance.c +++ linux-5.8.0/net/batman-adv/bridge_loop_avoidance.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -83,11 +84,12 @@ */ static inline u32 batadv_choose_backbone_gw(const void *data, u32 size) { - const struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data; + const struct batadv_bla_backbone_gw *gw; u32 hash = 0; - hash = jhash(&claim->addr, sizeof(claim->addr), hash); - hash = jhash(&claim->vid, sizeof(claim->vid), hash); + gw = (struct batadv_bla_backbone_gw *)data; + hash = jhash(&gw->orig, sizeof(gw->orig), hash); + hash = jhash(&gw->vid, sizeof(gw->vid), hash); return hash % size; } @@ -437,7 +439,10 @@ batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, skb->len + ETH_HLEN); - netif_rx(skb); + if (in_interrupt()) + netif_rx(skb); + else + netif_rx_ni(skb); out: if (primary_if) batadv_hardif_put(primary_if); @@ -1576,13 +1581,16 @@ } /** - * batadv_bla_check_bcast_duplist() - Check if a frame is in the broadcast dup. + * batadv_bla_check_duplist() - Check if a frame is in the broadcast dup. * @bat_priv: the bat priv with all the soft interface information - * @skb: contains the bcast_packet to be checked - * - * check if it is on our broadcast list. Another gateway might - * have sent the same packet because it is connected to the same backbone, - * so we have to remove this duplicate. + * @skb: contains the multicast packet to be checked + * @payload_ptr: pointer to position inside the head buffer of the skb + * marking the start of the data to be CRC'ed + * @orig: originator mac address, NULL if unknown + * + * Check if it is on our broadcast list. Another gateway might have sent the + * same packet because it is connected to the same backbone, so we have to + * remove this duplicate. * * This is performed by checking the CRC, which will tell us * with a good chance that it is the same packet. If it is furthermore @@ -1591,19 +1599,17 @@ * * Return: true if a packet is in the duplicate list, false otherwise. */ -bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, - struct sk_buff *skb) +static bool batadv_bla_check_duplist(struct batadv_priv *bat_priv, + struct sk_buff *skb, u8 *payload_ptr, + const u8 *orig) { - int i, curr; - __be32 crc; - struct batadv_bcast_packet *bcast_packet; struct batadv_bcast_duplist_entry *entry; bool ret = false; - - bcast_packet = (struct batadv_bcast_packet *)skb->data; + int i, curr; + __be32 crc; /* calculate the crc ... */ - crc = batadv_skb_crc32(skb, (u8 *)(bcast_packet + 1)); + crc = batadv_skb_crc32(skb, payload_ptr); spin_lock_bh(&bat_priv->bla.bcast_duplist_lock); @@ -1622,8 +1628,21 @@ if (entry->crc != crc) continue; - if (batadv_compare_eth(entry->orig, bcast_packet->orig)) - continue; + /* are the originators both known and not anonymous? */ + if (orig && !is_zero_ether_addr(orig) && + !is_zero_ether_addr(entry->orig)) { + /* If known, check if the new frame came from + * the same originator: + * We are safe to take identical frames from the + * same orig, if known, as multiplications in + * the mesh are detected via the (orig, seqno) pair. + * So we can be a bit more liberal here and allow + * identical frames from the same orig which the source + * host might have sent multiple times on purpose. + */ + if (batadv_compare_eth(entry->orig, orig)) + continue; + } /* this entry seems to match: same crc, not too old, * and from another gw. therefore return true to forbid it. @@ -1639,7 +1658,14 @@ entry = &bat_priv->bla.bcast_duplist[curr]; entry->crc = crc; entry->entrytime = jiffies; - ether_addr_copy(entry->orig, bcast_packet->orig); + + /* known originator */ + if (orig) + ether_addr_copy(entry->orig, orig); + /* anonymous originator */ + else + eth_zero_addr(entry->orig); + bat_priv->bla.bcast_duplist_curr = curr; out: @@ -1649,6 +1675,48 @@ } /** + * batadv_bla_check_ucast_duplist() - Check if a frame is in the broadcast dup. + * @bat_priv: the bat priv with all the soft interface information + * @skb: contains the multicast packet to be checked, decapsulated from a + * unicast_packet + * + * Check if it is on our broadcast list. Another gateway might have sent the + * same packet because it is connected to the same backbone, so we have to + * remove this duplicate. + * + * Return: true if a packet is in the duplicate list, false otherwise. + */ +static bool batadv_bla_check_ucast_duplist(struct batadv_priv *bat_priv, + struct sk_buff *skb) +{ + return batadv_bla_check_duplist(bat_priv, skb, (u8 *)skb->data, NULL); +} + +/** + * batadv_bla_check_bcast_duplist() - Check if a frame is in the broadcast dup. + * @bat_priv: the bat priv with all the soft interface information + * @skb: contains the bcast_packet to be checked + * + * Check if it is on our broadcast list. Another gateway might have sent the + * same packet because it is connected to the same backbone, so we have to + * remove this duplicate. + * + * Return: true if a packet is in the duplicate list, false otherwise. + */ +bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, + struct sk_buff *skb) +{ + struct batadv_bcast_packet *bcast_packet; + u8 *payload_ptr; + + bcast_packet = (struct batadv_bcast_packet *)skb->data; + payload_ptr = (u8 *)(bcast_packet + 1); + + return batadv_bla_check_duplist(bat_priv, skb, payload_ptr, + bcast_packet->orig); +} + +/** * batadv_bla_is_backbone_gw_orig() - Check if the originator is a gateway for * the VLAN identified by vid. * @bat_priv: the bat priv with all the soft interface information @@ -1809,7 +1877,7 @@ * @bat_priv: the bat priv with all the soft interface information * @skb: the frame to be checked * @vid: the VLAN ID of the frame - * @is_bcast: the packet came in a broadcast packet type. + * @packet_type: the batman packet type this frame came in * * batadv_bla_rx avoidance checks if: * * we have to race for a claim @@ -1821,7 +1889,7 @@ * further process the skb. */ bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, - unsigned short vid, bool is_bcast) + unsigned short vid, int packet_type) { struct batadv_bla_backbone_gw *backbone_gw; struct ethhdr *ethhdr; @@ -1843,9 +1911,32 @@ goto handled; if (unlikely(atomic_read(&bat_priv->bla.num_requests))) - /* don't allow broadcasts while requests are in flight */ - if (is_multicast_ether_addr(ethhdr->h_dest) && is_bcast) - goto handled; + /* don't allow multicast packets while requests are in flight */ + if (is_multicast_ether_addr(ethhdr->h_dest)) + /* Both broadcast flooding or multicast-via-unicasts + * delivery might send to multiple backbone gateways + * sharing the same LAN and therefore need to coordinate + * which backbone gateway forwards into the LAN, + * by claiming the payload source address. + * + * Broadcast flooding and multicast-via-unicasts + * delivery use the following two batman packet types. + * Note: explicitly exclude BATADV_UNICAST_4ADDR, + * as the DHCP gateway feature will send explicitly + * to only one BLA gateway, so the claiming process + * should be avoided there. + */ + if (packet_type == BATADV_BCAST || + packet_type == BATADV_UNICAST) + goto handled; + + /* potential duplicates from foreign BLA backbone gateways via + * multicast-in-unicast packets + */ + if (is_multicast_ether_addr(ethhdr->h_dest) && + packet_type == BATADV_UNICAST && + batadv_bla_check_ucast_duplist(bat_priv, skb)) + goto handled; ether_addr_copy(search_claim.addr, ethhdr->h_source); search_claim.vid = vid; @@ -1880,13 +1971,14 @@ goto allow; } - /* if it is a broadcast ... */ - if (is_multicast_ether_addr(ethhdr->h_dest) && is_bcast) { + /* if it is a multicast ... */ + if (is_multicast_ether_addr(ethhdr->h_dest) && + (packet_type == BATADV_BCAST || packet_type == BATADV_UNICAST)) { /* ... drop it. the responsible gateway is in charge. * - * We need to check is_bcast because with the gateway + * We need to check packet type because with the gateway * feature, broadcasts (like DHCP requests) may be sent - * using a unicast packet type. + * using a unicast 4 address packet type. See comment above. */ goto handled; } else { --- linux-5.8.0.orig/net/batman-adv/bridge_loop_avoidance.h +++ linux-5.8.0/net/batman-adv/bridge_loop_avoidance.h @@ -35,7 +35,7 @@ #ifdef CONFIG_BATMAN_ADV_BLA bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, - unsigned short vid, bool is_bcast); + unsigned short vid, int packet_type); bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, unsigned short vid); bool batadv_bla_is_backbone_gw(struct sk_buff *skb, @@ -66,7 +66,7 @@ static inline bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, unsigned short vid, - bool is_bcast) + int packet_type) { return false; } --- linux-5.8.0.orig/net/batman-adv/fragmentation.c +++ linux-5.8.0/net/batman-adv/fragmentation.c @@ -391,6 +391,7 @@ /** * batadv_frag_create() - create a fragment from skb + * @net_dev: outgoing device for fragment * @skb: skb to create fragment from * @frag_head: header to use in new fragment * @fragment_size: size of new fragment @@ -401,22 +402,25 @@ * * Return: the new fragment, NULL on error. */ -static struct sk_buff *batadv_frag_create(struct sk_buff *skb, +static struct sk_buff *batadv_frag_create(struct net_device *net_dev, + struct sk_buff *skb, struct batadv_frag_packet *frag_head, unsigned int fragment_size) { + unsigned int ll_reserved = LL_RESERVED_SPACE(net_dev); + unsigned int tailroom = net_dev->needed_tailroom; struct sk_buff *skb_fragment; unsigned int header_size = sizeof(*frag_head); unsigned int mtu = fragment_size + header_size; - skb_fragment = netdev_alloc_skb(NULL, mtu + ETH_HLEN); + skb_fragment = dev_alloc_skb(ll_reserved + mtu + tailroom); if (!skb_fragment) goto err; skb_fragment->priority = skb->priority; /* Eat the last mtu-bytes of the skb */ - skb_reserve(skb_fragment, header_size + ETH_HLEN); + skb_reserve(skb_fragment, ll_reserved + header_size); skb_split(skb, skb_fragment, skb->len - fragment_size); /* Add the header */ @@ -439,11 +443,12 @@ struct batadv_orig_node *orig_node, struct batadv_neigh_node *neigh_node) { + struct net_device *net_dev = neigh_node->if_incoming->net_dev; struct batadv_priv *bat_priv; struct batadv_hard_iface *primary_if = NULL; struct batadv_frag_packet frag_header; struct sk_buff *skb_fragment; - unsigned int mtu = neigh_node->if_incoming->net_dev->mtu; + unsigned int mtu = net_dev->mtu; unsigned int header_size = sizeof(frag_header); unsigned int max_fragment_size, num_fragments; int ret; @@ -503,7 +508,7 @@ goto put_primary_if; } - skb_fragment = batadv_frag_create(skb, &frag_header, + skb_fragment = batadv_frag_create(net_dev, skb, &frag_header, max_fragment_size); if (!skb_fragment) { ret = -ENOMEM; @@ -522,13 +527,14 @@ frag_header.no++; } - /* Make room for the fragment header. */ - if (batadv_skb_head_push(skb, header_size) < 0 || - pskb_expand_head(skb, header_size + ETH_HLEN, 0, GFP_ATOMIC) < 0) { - ret = -ENOMEM; + /* make sure that there is at least enough head for the fragmentation + * and ethernet headers + */ + ret = skb_cow_head(skb, ETH_HLEN + header_size); + if (ret < 0) goto put_primary_if; - } + skb_push(skb, header_size); memcpy(skb->data, &frag_header, header_size); /* Send the last fragment */ --- linux-5.8.0.orig/net/batman-adv/gateway_client.c +++ linux-5.8.0/net/batman-adv/gateway_client.c @@ -703,8 +703,10 @@ chaddr_offset = *header_len + BATADV_DHCP_CHADDR_OFFSET; /* store the client address if the message is going to a client */ - if (ret == BATADV_DHCP_TO_CLIENT && - pskb_may_pull(skb, chaddr_offset + ETH_ALEN)) { + if (ret == BATADV_DHCP_TO_CLIENT) { + if (!pskb_may_pull(skb, chaddr_offset + ETH_ALEN)) + return BATADV_DHCP_NO; + /* check if the DHCP packet carries an Ethernet DHCP */ p = skb->data + *header_len + BATADV_DHCP_HTYPE_OFFSET; if (*p != BATADV_DHCP_HTYPE_ETHERNET) --- linux-5.8.0.orig/net/batman-adv/hard-interface.c +++ linux-5.8.0/net/batman-adv/hard-interface.c @@ -554,6 +554,9 @@ needed_headroom = lower_headroom + (lower_header_len - ETH_HLEN); needed_headroom += batadv_max_header_len(); + /* fragmentation headers don't strip the unicast/... header */ + needed_headroom += sizeof(struct batadv_frag_packet); + soft_iface->needed_headroom = needed_headroom; soft_iface->needed_tailroom = lower_tailroom; } --- linux-5.8.0.orig/net/batman-adv/log.c +++ linux-5.8.0/net/batman-adv/log.c @@ -180,6 +180,7 @@ .read = batadv_log_read, .poll = batadv_log_poll, .llseek = no_llseek, + .owner = THIS_MODULE, }; /** --- linux-5.8.0.orig/net/batman-adv/multicast.c +++ linux-5.8.0/net/batman-adv/multicast.c @@ -51,6 +51,7 @@ #include #include +#include "bridge_loop_avoidance.h" #include "hard-interface.h" #include "hash.h" #include "log.h" @@ -1435,6 +1436,35 @@ } /** + * batadv_mcast_forw_send_orig() - send a multicast packet to an originator + * @bat_priv: the bat priv with all the soft interface information + * @skb: the multicast packet to send + * @vid: the vlan identifier + * @orig_node: the originator to send the packet to + * + * Return: NET_XMIT_DROP in case of error or NET_XMIT_SUCCESS otherwise. + */ +int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv, + struct sk_buff *skb, + unsigned short vid, + struct batadv_orig_node *orig_node) +{ + /* Avoid sending multicast-in-unicast packets to other BLA + * gateways - they already got the frame from the LAN side + * we share with them. + * TODO: Refactor to take BLA into account earlier, to avoid + * reducing the mcast_fanout count. + */ + if (batadv_bla_is_backbone_gw_orig(bat_priv, orig_node->orig, vid)) { + dev_kfree_skb(skb); + return NET_XMIT_SUCCESS; + } + + return batadv_send_skb_unicast(bat_priv, skb, BATADV_UNICAST, 0, + orig_node, vid); +} + +/** * batadv_mcast_forw_tt() - forwards a packet to multicast listeners * @bat_priv: the bat priv with all the soft interface information * @skb: the multicast packet to transmit @@ -1471,8 +1501,8 @@ break; } - batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, - orig_entry->orig_node, vid); + batadv_mcast_forw_send_orig(bat_priv, newskb, vid, + orig_entry->orig_node); } rcu_read_unlock(); @@ -1513,8 +1543,7 @@ break; } - batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, - orig_node, vid); + batadv_mcast_forw_send_orig(bat_priv, newskb, vid, orig_node); } rcu_read_unlock(); return ret; @@ -1551,8 +1580,7 @@ break; } - batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, - orig_node, vid); + batadv_mcast_forw_send_orig(bat_priv, newskb, vid, orig_node); } rcu_read_unlock(); return ret; @@ -1618,8 +1646,7 @@ break; } - batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, - orig_node, vid); + batadv_mcast_forw_send_orig(bat_priv, newskb, vid, orig_node); } rcu_read_unlock(); return ret; @@ -1656,8 +1683,7 @@ break; } - batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, - orig_node, vid); + batadv_mcast_forw_send_orig(bat_priv, newskb, vid, orig_node); } rcu_read_unlock(); return ret; --- linux-5.8.0.orig/net/batman-adv/multicast.h +++ linux-5.8.0/net/batman-adv/multicast.h @@ -46,6 +46,11 @@ batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, struct batadv_orig_node **mcast_single_orig); +int batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv, + struct sk_buff *skb, + unsigned short vid, + struct batadv_orig_node *orig_node); + int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb, unsigned short vid); @@ -72,6 +77,16 @@ } static inline int +batadv_mcast_forw_send_orig(struct batadv_priv *bat_priv, + struct sk_buff *skb, + unsigned short vid, + struct batadv_orig_node *orig_node) +{ + kfree_skb(skb); + return NET_XMIT_DROP; +} + +static inline int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb, unsigned short vid) { --- linux-5.8.0.orig/net/batman-adv/routing.c +++ linux-5.8.0/net/batman-adv/routing.c @@ -826,6 +826,10 @@ vid = batadv_get_vid(skb, hdr_len); ethhdr = (struct ethhdr *)(skb->data + hdr_len); + /* do not reroute multicast frames in a unicast header */ + if (is_multicast_ether_addr(ethhdr->h_dest)) + return true; + /* check if the destination client was served by this node and it is now * roaming. In this case, it means that the node has got a ROAM_ADV * message and that it knows the new destination in the mesh to re-route --- linux-5.8.0.orig/net/batman-adv/soft-interface.c +++ linux-5.8.0/net/batman-adv/soft-interface.c @@ -364,9 +364,8 @@ goto dropped; ret = batadv_send_skb_via_gw(bat_priv, skb, vid); } else if (mcast_single_orig) { - ret = batadv_send_skb_unicast(bat_priv, skb, - BATADV_UNICAST, 0, - mcast_single_orig, vid); + ret = batadv_mcast_forw_send_orig(bat_priv, skb, vid, + mcast_single_orig); } else if (forw_mode == BATADV_FORW_SOME) { ret = batadv_mcast_forw_send(bat_priv, skb, vid); } else { @@ -425,10 +424,10 @@ struct vlan_ethhdr *vhdr; struct ethhdr *ethhdr; unsigned short vid; - bool is_bcast; + int packet_type; batadv_bcast_packet = (struct batadv_bcast_packet *)skb->data; - is_bcast = (batadv_bcast_packet->packet_type == BATADV_BCAST); + packet_type = batadv_bcast_packet->packet_type; skb_pull_rcsum(skb, hdr_size); skb_reset_mac_header(skb); @@ -471,7 +470,7 @@ /* Let the bridge loop avoidance check the packet. If will * not handle it, we can safely push it up. */ - if (batadv_bla_rx(bat_priv, skb, vid, is_bcast)) + if (batadv_bla_rx(bat_priv, skb, vid, packet_type)) goto out; if (orig_node) --- linux-5.8.0.orig/net/bluetooth/6lowpan.c +++ linux-5.8.0/net/bluetooth/6lowpan.c @@ -50,6 +50,7 @@ /* We are listening incoming connections via this channel */ static struct l2cap_chan *listen_chan; +static DEFINE_MUTEX(set_lock); struct lowpan_peer { struct list_head list; @@ -1078,12 +1079,14 @@ enable_6lowpan = set_enable->flag; + mutex_lock(&set_lock); if (listen_chan) { l2cap_chan_close(listen_chan, 0); l2cap_chan_put(listen_chan); } listen_chan = bt_6lowpan_listen(); + mutex_unlock(&set_lock); kfree(set_enable); } @@ -1135,11 +1138,13 @@ if (ret == -EINVAL) return ret; + mutex_lock(&set_lock); if (listen_chan) { l2cap_chan_close(listen_chan, 0); l2cap_chan_put(listen_chan); listen_chan = NULL; } + mutex_unlock(&set_lock); if (conn) { struct lowpan_peer *peer; --- linux-5.8.0.orig/net/bluetooth/Kconfig +++ linux-5.8.0/net/bluetooth/Kconfig @@ -64,7 +64,6 @@ config BT_HS bool "Bluetooth High Speed (HS) features" depends on BT_BREDR - default y help Bluetooth High Speed includes support for off-loading Bluetooth connections via 802.11 (wifi) physical layer --- linux-5.8.0.orig/net/bluetooth/a2mp.c +++ linux-5.8.0/net/bluetooth/a2mp.c @@ -226,6 +226,9 @@ struct a2mp_info_req req; found = true; + + memset(&req, 0, sizeof(req)); + req.id = cl->id; a2mp_send(mgr, A2MP_GETINFO_REQ, __next_ident(mgr), sizeof(req), &req); @@ -305,6 +308,8 @@ if (!hdev || hdev->dev_type != HCI_AMP) { struct a2mp_info_rsp rsp; + memset(&rsp, 0, sizeof(rsp)); + rsp.id = req->id; rsp.status = A2MP_STATUS_INVALID_CTRL_ID; @@ -348,6 +353,8 @@ if (!ctrl) return -ENOMEM; + memset(&req, 0, sizeof(req)); + req.id = rsp->id; a2mp_send(mgr, A2MP_GETAMPASSOC_REQ, __next_ident(mgr), sizeof(req), &req); @@ -374,6 +381,8 @@ hdev = hci_dev_get(req->id); if (!hdev || hdev->amp_type == AMP_TYPE_BREDR || tmp) { struct a2mp_amp_assoc_rsp rsp; + + memset(&rsp, 0, sizeof(rsp)); rsp.id = req->id; if (tmp) { @@ -464,7 +473,6 @@ struct a2mp_cmd *hdr) { struct a2mp_physlink_req *req = (void *) skb->data; - struct a2mp_physlink_rsp rsp; struct hci_dev *hdev; struct hci_conn *hcon; @@ -475,6 +483,8 @@ BT_DBG("local_id %d, remote_id %d", req->local_id, req->remote_id); + memset(&rsp, 0, sizeof(rsp)); + rsp.local_id = req->remote_id; rsp.remote_id = req->local_id; @@ -502,6 +512,7 @@ assoc = kmemdup(req->amp_assoc, assoc_len, GFP_KERNEL); if (!assoc) { amp_ctrl_put(ctrl); + hci_dev_put(hdev); return -ENOMEM; } @@ -553,6 +564,8 @@ BT_DBG("local_id %d remote_id %d", req->local_id, req->remote_id); + memset(&rsp, 0, sizeof(rsp)); + rsp.local_id = req->remote_id; rsp.remote_id = req->local_id; rsp.status = A2MP_STATUS_SUCCESS; @@ -675,6 +688,8 @@ if (err) { struct a2mp_cmd_rej rej; + memset(&rej, 0, sizeof(rej)); + rej.reason = cpu_to_le16(0); hdr = (void *) skb->data; @@ -898,6 +913,8 @@ BT_DBG("%s mgr %p", hdev->name, mgr); + memset(&rsp, 0, sizeof(rsp)); + rsp.id = hdev->id; rsp.status = A2MP_STATUS_INVALID_CTRL_ID; @@ -995,6 +1012,8 @@ if (!mgr) return; + memset(&rsp, 0, sizeof(rsp)); + hs_hcon = hci_conn_hash_lookup_state(hdev, AMP_LINK, BT_CONNECT); if (!hs_hcon) { rsp.status = A2MP_STATUS_UNABLE_START_LINK_CREATION; @@ -1027,6 +1046,8 @@ mgr->bredr_chan = chan; + memset(&req, 0, sizeof(req)); + req.mtu = cpu_to_le16(L2CAP_A2MP_DEFAULT_MTU); req.ext_feat = 0; a2mp_send(mgr, A2MP_DISCOVER_REQ, 1, sizeof(req), &req); --- linux-5.8.0.orig/net/bluetooth/amp.c +++ linux-5.8.0/net/bluetooth/amp.c @@ -297,6 +297,9 @@ struct hci_request req; int err; + if (!mgr) + return; + cp.phy_handle = hcon->handle; cp.len_so_far = cpu_to_le16(0); cp.max_len = cpu_to_le16(hdev->amp_assoc_size); --- linux-5.8.0.orig/net/bluetooth/hci_conn.c +++ linux-5.8.0/net/bluetooth/hci_conn.c @@ -1323,6 +1323,23 @@ return 0; } + /* AES encryption is required for Level 4: + * + * BLUETOOTH CORE SPECIFICATION Version 5.2 | Vol 3, Part C + * page 1319: + * + * 128-bit equivalent strength for link and encryption keys + * required using FIPS approved algorithms (E0 not allowed, + * SAFER+ not allowed, and P-192 not allowed; encryption key + * not shortened) + */ + if (conn->sec_level == BT_SECURITY_FIPS && + !test_bit(HCI_CONN_AES_CCM, &conn->flags)) { + bt_dev_err(conn->hdev, + "Invalid security: Missing AES-CCM usage"); + return 0; + } + if (hci_conn_ssp_enabled(conn) && !test_bit(HCI_CONN_ENCRYPT, &conn->flags)) return 0; --- linux-5.8.0.orig/net/bluetooth/hci_core.c +++ linux-5.8.0/net/bluetooth/hci_core.c @@ -606,7 +606,8 @@ if (hdev->commands[8] & 0x01) hci_req_add(req, HCI_OP_READ_PAGE_SCAN_ACTIVITY, 0, NULL); - if (hdev->commands[18] & 0x04) + if (hdev->commands[18] & 0x04 && + !test_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks)) hci_req_add(req, HCI_OP_READ_DEF_ERR_DATA_REPORTING, 0, NULL); /* Some older Broadcom based Bluetooth 1.2 controllers do not @@ -851,7 +852,8 @@ /* Set erroneous data reporting if supported to the wideband speech * setting value */ - if (hdev->commands[18] & 0x08) { + if (hdev->commands[18] & 0x08 && + !test_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks)) { bool enabled = hci_dev_test_flag(hdev, HCI_WIDEBAND_SPEECH_ENABLED); @@ -1347,8 +1349,10 @@ * cleared). If it is interrupted by a signal, return -EINTR. */ if (wait_on_bit(&hdev->flags, HCI_INQUIRY, - TASK_INTERRUPTIBLE)) - return -EINTR; + TASK_INTERRUPTIBLE)) { + err = -EINTR; + goto done; + } } /* for unlimited number of responses we will use buffer with @@ -3278,6 +3282,16 @@ } } +static void hci_suspend_clear_tasks(struct hci_dev *hdev) +{ + int i; + + for (i = 0; i < __SUSPEND_NUM_TASKS; i++) + clear_bit(i, hdev->suspend_tasks); + + wake_up(&hdev->suspend_wait_q); +} + static int hci_suspend_wait_event(struct hci_dev *hdev) { #define WAKE_COND \ @@ -3289,10 +3303,10 @@ WAKE_COND, SUSPEND_NOTIFIER_TIMEOUT); if (ret == 0) { - bt_dev_dbg(hdev, "Timed out waiting for suspend"); + bt_dev_err(hdev, "Timed out waiting for suspend events"); for (i = 0; i < __SUSPEND_NUM_TASKS; ++i) { if (test_bit(i, hdev->suspend_tasks)) - bt_dev_dbg(hdev, "Bit %d is set", i); + bt_dev_err(hdev, "Suspend timeout bit: %d", i); clear_bit(i, hdev->suspend_tasks); } @@ -3339,7 +3353,8 @@ } /* Suspend notifier should only act on events when powered. */ - if (!hdev_is_powered(hdev)) + if (!hdev_is_powered(hdev) || + hci_dev_test_flag(hdev, HCI_UNREGISTER)) goto done; if (action == PM_SUSPEND_PREPARE) { @@ -3360,12 +3375,15 @@ ret = hci_change_suspend_state(hdev, BT_RUNNING); } - /* If suspend failed, restore it to running */ - if (ret && action == PM_SUSPEND_PREPARE) - hci_change_suspend_state(hdev, BT_RUNNING); - done: - return ret ? notifier_from_errno(-EBUSY) : NOTIFY_STOP; + /* We always allow suspend even if suspend preparation failed and + * attempt to recover in resume. + */ + if (ret) + bt_dev_err(hdev, "Suspend notifier action (%lu) failed: %d", + action, ret); + + return NOTIFY_DONE; } /* Alloc HCI device */ @@ -3567,10 +3585,12 @@ hci_sock_dev_event(hdev, HCI_DEV_REG); hci_dev_hold(hdev); - hdev->suspend_notifier.notifier_call = hci_suspend_notifier; - error = register_pm_notifier(&hdev->suspend_notifier); - if (error) - goto err_wqueue; + if (!test_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks)) { + hdev->suspend_notifier.notifier_call = hci_suspend_notifier; + error = register_pm_notifier(&hdev->suspend_notifier); + if (error) + goto err_wqueue; + } queue_work(hdev->req_workqueue, &hdev->power_on); @@ -3603,9 +3623,13 @@ cancel_work_sync(&hdev->power_on); - hci_dev_do_close(hdev); + if (!test_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks)) { + hci_suspend_clear_tasks(hdev); + unregister_pm_notifier(&hdev->suspend_notifier); + cancel_work_sync(&hdev->suspend_prepare); + } - unregister_pm_notifier(&hdev->suspend_notifier); + hci_dev_do_close(hdev); if (!test_bit(HCI_INIT, &hdev->flags) && !hci_dev_test_flag(hdev, HCI_SETUP) && --- linux-5.8.0.orig/net/bluetooth/hci_event.c +++ linux-5.8.0/net/bluetooth/hci_event.c @@ -2520,7 +2520,7 @@ BT_DBG("%s num_rsp %d", hdev->name, num_rsp); - if (!num_rsp) + if (!num_rsp || skb->len < num_rsp * sizeof(*info) + 1) return; if (hci_dev_test_flag(hdev, HCI_PERIODIC_INQ)) @@ -3068,27 +3068,23 @@ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags); + /* Check link security requirements are met */ + if (!hci_conn_check_link_mode(conn)) + ev->status = HCI_ERROR_AUTH_FAILURE; + if (ev->status && conn->state == BT_CONNECTED) { if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING) set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags); + /* Notify upper layers so they can cleanup before + * disconnecting. + */ + hci_encrypt_cfm(conn, ev->status); hci_disconnect(conn, HCI_ERROR_AUTH_FAILURE); hci_conn_drop(conn); goto unlock; } - /* In Secure Connections Only mode, do not allow any connections - * that are not encrypted with AES-CCM using a P-256 authenticated - * combination key. - */ - if (hci_dev_test_flag(hdev, HCI_SC_ONLY) && - (!test_bit(HCI_CONN_AES_CCM, &conn->flags) || - conn->key_type != HCI_LK_AUTH_COMBINATION_P256)) { - hci_connect_cfm(conn, HCI_ERROR_AUTH_FAILURE); - hci_conn_drop(conn); - goto unlock; - } - /* Try reading the encryption key size for encrypted ACL links */ if (!ev->status && ev->encrypt && conn->type == ACL_LINK) { struct hci_cp_read_enc_key_size cp; @@ -4166,6 +4162,9 @@ struct inquiry_info_with_rssi_and_pscan_mode *info; info = (void *) (skb->data + 1); + if (skb->len < num_rsp * sizeof(*info) + 1) + goto unlock; + for (; num_rsp; num_rsp--, info++) { u32 flags; @@ -4187,6 +4186,9 @@ } else { struct inquiry_info_with_rssi *info = (void *) (skb->data + 1); + if (skb->len < num_rsp * sizeof(*info) + 1) + goto unlock; + for (; num_rsp; num_rsp--, info++) { u32 flags; @@ -4207,6 +4209,7 @@ } } +unlock: hci_dev_unlock(hdev); } @@ -4382,7 +4385,7 @@ BT_DBG("%s num_rsp %d", hdev->name, num_rsp); - if (!num_rsp) + if (!num_rsp || skb->len < num_rsp * sizeof(*info) + 1) return; if (hci_dev_test_flag(hdev, HCI_PERIODIC_INQ)) @@ -4917,6 +4920,11 @@ return; } + if (!hcon->amp_mgr) { + hci_dev_unlock(hdev); + return; + } + if (ev->status) { hci_conn_del(hcon); hci_dev_unlock(hdev); @@ -5838,21 +5846,19 @@ struct sk_buff *skb) { u8 num_reports = skb->data[0]; - void *ptr = &skb->data[1]; + struct hci_ev_le_direct_adv_info *ev = (void *)&skb->data[1]; - hci_dev_lock(hdev); + if (!num_reports || skb->len < num_reports * sizeof(*ev) + 1) + return; - while (num_reports--) { - struct hci_ev_le_direct_adv_info *ev = ptr; + hci_dev_lock(hdev); + for (; num_reports; num_reports--, ev++) process_adv_report(hdev, ev->evt_type, &ev->bdaddr, ev->bdaddr_type, &ev->direct_addr, ev->direct_addr_type, ev->rssi, NULL, 0, false); - ptr += sizeof(*ev); - } - hci_dev_unlock(hdev); } --- linux-5.8.0.orig/net/bluetooth/l2cap_core.c +++ linux-5.8.0/net/bluetooth/l2cap_core.c @@ -7302,9 +7302,10 @@ goto drop; } - if ((chan->mode == L2CAP_MODE_ERTM || - chan->mode == L2CAP_MODE_STREAMING) && sk_filter(chan->data, skb)) - goto drop; + if (chan->ops->filter) { + if (chan->ops->filter(chan, skb)) + goto drop; + } if (!control->sframe) { int err; --- linux-5.8.0.orig/net/bluetooth/l2cap_sock.c +++ linux-5.8.0/net/bluetooth/l2cap_sock.c @@ -1521,8 +1521,6 @@ parent = bt_sk(sk)->parent; - sock_set_flag(sk, SOCK_ZAPPED); - switch (chan->state) { case BT_OPEN: case BT_BOUND: @@ -1549,8 +1547,11 @@ break; } - release_sock(sk); + + /* Only zap after cleanup to avoid use after free race */ + sock_set_flag(sk, SOCK_ZAPPED); + } static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state, @@ -1663,6 +1664,19 @@ sk->sk_state_change(sk); } +static int l2cap_sock_filter(struct l2cap_chan *chan, struct sk_buff *skb) +{ + struct sock *sk = chan->data; + + switch (chan->mode) { + case L2CAP_MODE_ERTM: + case L2CAP_MODE_STREAMING: + return sk_filter(sk, skb); + } + + return 0; +} + static const struct l2cap_ops l2cap_chan_ops = { .name = "L2CAP Socket Interface", .new_connection = l2cap_sock_new_connection_cb, @@ -1678,6 +1692,7 @@ .get_sndtimeo = l2cap_sock_get_sndtimeo_cb, .get_peer_pid = l2cap_sock_get_peer_pid_cb, .alloc_skb = l2cap_sock_alloc_skb_cb, + .filter = l2cap_sock_filter, }; static void l2cap_sock_destruct(struct sock *sk) --- linux-5.8.0.orig/net/bluetooth/mgmt.c +++ linux-5.8.0/net/bluetooth/mgmt.c @@ -766,7 +766,8 @@ if (lmp_ssp_capable(hdev)) { settings |= MGMT_SETTING_SSP; - settings |= MGMT_SETTING_HS; + if (IS_ENABLED(CONFIG_BT_HS)) + settings |= MGMT_SETTING_HS; } if (lmp_sc_capable(hdev)) @@ -1794,6 +1795,10 @@ bt_dev_dbg(hdev, "sock %p", sk); + if (!IS_ENABLED(CONFIG_BT_HS)) + return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_HS, + MGMT_STATUS_NOT_SUPPORTED); + status = mgmt_bredr_support(hdev); if (status) return mgmt_cmd_status(sk, hdev->id, MGMT_OP_SET_HS, status); --- linux-5.8.0.orig/net/bpfilter/bpfilter_kern.c +++ linux-5.8.0/net/bpfilter/bpfilter_kern.c @@ -50,6 +50,7 @@ req.len = optlen; if (!bpfilter_ops.info.pid) goto out; + pos = 0; n = kernel_write(bpfilter_ops.info.pipe_to_umh, &req, sizeof(req), &pos); if (n != sizeof(req)) { --- linux-5.8.0.orig/net/bridge/br.c +++ linux-5.8.0/net/bridge/br.c @@ -43,7 +43,10 @@ if (event == NETDEV_REGISTER) { /* register of bridge completed, add sysfs entries */ - br_sysfs_addbr(dev); + err = br_sysfs_addbr(dev); + if (err) + return notifier_from_errno(err); + return NOTIFY_DONE; } } --- linux-5.8.0.orig/net/bridge/br_device.c +++ linux-5.8.0/net/bridge/br_device.c @@ -175,6 +175,9 @@ br_stp_enable_bridge(br); br_multicast_open(br); + if (br_opt_get(br, BROPT_MULTICAST_ENABLED)) + br_multicast_join_snoopers(br); + return 0; } @@ -195,6 +198,9 @@ br_stp_disable_bridge(br); br_multicast_stop(br); + if (br_opt_get(br, BROPT_MULTICAST_ENABLED)) + br_multicast_leave_snoopers(br); + netif_stop_queue(dev); return 0; @@ -221,6 +227,7 @@ sum.rx_packets += tmp.rx_packets; } + netdev_stats_to_stats64(stats, &dev->stats); stats->tx_bytes = sum.tx_bytes; stats->tx_packets = sum.tx_packets; stats->rx_bytes = sum.rx_bytes; --- linux-5.8.0.orig/net/bridge/br_fdb.c +++ linux-5.8.0/net/bridge/br_fdb.c @@ -404,6 +404,8 @@ if (!do_all) if (test_bit(BR_FDB_STATIC, &f->flags) || + (test_bit(BR_FDB_ADDED_BY_EXT_LEARN, &f->flags) && + !test_bit(BR_FDB_OFFLOADED, &f->flags)) || (vid && f->key.vlan_id != vid)) continue; --- linux-5.8.0.orig/net/bridge/br_mrp.c +++ linux-5.8.0/net/bridge/br_mrp.c @@ -378,19 +378,22 @@ int br_mrp_set_port_state(struct net_bridge_port *p, enum br_mrp_port_state_type state) { + u32 port_state; + if (!p || !(p->flags & BR_MRP_AWARE)) return -EINVAL; spin_lock_bh(&p->br->lock); if (state == BR_MRP_PORT_STATE_FORWARDING) - p->state = BR_STATE_FORWARDING; + port_state = BR_STATE_FORWARDING; else - p->state = BR_STATE_BLOCKING; + port_state = BR_STATE_BLOCKING; + p->state = port_state; spin_unlock_bh(&p->br->lock); - br_mrp_port_switchdev_set_state(p, state); + br_mrp_port_switchdev_set_state(p, port_state); return 0; } --- linux-5.8.0.orig/net/bridge/br_mrp_switchdev.c +++ linux-5.8.0/net/bridge/br_mrp_switchdev.c @@ -107,13 +107,12 @@ return 0; } -int br_mrp_port_switchdev_set_state(struct net_bridge_port *p, - enum br_mrp_port_state_type state) +int br_mrp_port_switchdev_set_state(struct net_bridge_port *p, u32 state) { struct switchdev_attr attr = { .orig_dev = p->dev, - .id = SWITCHDEV_ATTR_ID_MRP_PORT_STATE, - .u.mrp_port_state = state, + .id = SWITCHDEV_ATTR_ID_PORT_STP_STATE, + .u.stp_state = state, }; int err; --- linux-5.8.0.orig/net/bridge/br_multicast.c +++ linux-5.8.0/net/bridge/br_multicast.c @@ -1848,7 +1848,7 @@ } #endif -static void br_multicast_join_snoopers(struct net_bridge *br) +void br_multicast_join_snoopers(struct net_bridge *br) { br_ip4_multicast_join_snoopers(br); br_ip6_multicast_join_snoopers(br); @@ -1879,7 +1879,7 @@ } #endif -static void br_multicast_leave_snoopers(struct net_bridge *br) +void br_multicast_leave_snoopers(struct net_bridge *br) { br_ip4_multicast_leave_snoopers(br); br_ip6_multicast_leave_snoopers(br); @@ -1898,9 +1898,6 @@ void br_multicast_open(struct net_bridge *br) { - if (br_opt_get(br, BROPT_MULTICAST_ENABLED)) - br_multicast_join_snoopers(br); - __br_multicast_open(br, &br->ip4_own_query); #if IS_ENABLED(CONFIG_IPV6) __br_multicast_open(br, &br->ip6_own_query); @@ -1916,9 +1913,6 @@ del_timer_sync(&br->ip6_other_query.timer); del_timer_sync(&br->ip6_own_query.timer); #endif - - if (br_opt_get(br, BROPT_MULTICAST_ENABLED)) - br_multicast_leave_snoopers(br); } void br_multicast_dev_del(struct net_bridge *br) @@ -2049,6 +2043,7 @@ int br_multicast_toggle(struct net_bridge *br, unsigned long val) { struct net_bridge_port *port; + bool change_snoopers = false; spin_lock_bh(&br->multicast_lock); if (!!br_opt_get(br, BROPT_MULTICAST_ENABLED) == !!val) @@ -2057,7 +2052,7 @@ br_mc_disabled_update(br->dev, val); br_opt_toggle(br, BROPT_MULTICAST_ENABLED, !!val); if (!br_opt_get(br, BROPT_MULTICAST_ENABLED)) { - br_multicast_leave_snoopers(br); + change_snoopers = true; goto unlock; } @@ -2068,9 +2063,30 @@ list_for_each_entry(port, &br->port_list, list) __br_multicast_enable_port(port); + change_snoopers = true; + unlock: spin_unlock_bh(&br->multicast_lock); + /* br_multicast_join_snoopers has the potential to cause + * an MLD Report/Leave to be delivered to br_multicast_rcv, + * which would in turn call br_multicast_add_group, which would + * attempt to acquire multicast_lock. This function should be + * called after the lock has been released to avoid deadlocks on + * multicast_lock. + * + * br_multicast_leave_snoopers does not have the problem since + * br_multicast_rcv first checks BROPT_MULTICAST_ENABLED, and + * returns without calling br_multicast_ipv4/6_rcv if it's not + * enabled. Moved both functions out just for symmetry. + */ + if (change_snoopers) { + if (br_opt_get(br, BROPT_MULTICAST_ENABLED)) + br_multicast_join_snoopers(br); + else + br_multicast_leave_snoopers(br); + } + return 0; } --- linux-5.8.0.orig/net/bridge/br_netfilter_hooks.c +++ linux-5.8.0/net/bridge/br_netfilter_hooks.c @@ -735,6 +735,11 @@ mtu_reserved = nf_bridge_mtu_reduction(skb); mtu = skb->dev->mtu; + if (nf_bridge->pkt_otherhost) { + skb->pkt_type = PACKET_OTHERHOST; + nf_bridge->pkt_otherhost = false; + } + if (nf_bridge->frag_max_size && nf_bridge->frag_max_size < mtu) mtu = nf_bridge->frag_max_size; @@ -835,8 +840,6 @@ else return NF_ACCEPT; - /* We assume any code from br_dev_queue_push_xmit onwards doesn't care - * about the value of skb->pkt_type. */ if (skb->pkt_type == PACKET_OTHERHOST) { skb->pkt_type = PACKET_HOST; nf_bridge->pkt_otherhost = true; --- linux-5.8.0.orig/net/bridge/br_private.h +++ linux-5.8.0/net/bridge/br_private.h @@ -741,6 +741,8 @@ void br_multicast_enable_port(struct net_bridge_port *port); void br_multicast_disable_port(struct net_bridge_port *port); void br_multicast_init(struct net_bridge *br); +void br_multicast_join_snoopers(struct net_bridge *br); +void br_multicast_leave_snoopers(struct net_bridge *br); void br_multicast_open(struct net_bridge *br); void br_multicast_stop(struct net_bridge *br); void br_multicast_dev_del(struct net_bridge *br); @@ -868,6 +870,14 @@ { } +static inline void br_multicast_join_snoopers(struct net_bridge *br) +{ +} + +static inline void br_multicast_leave_snoopers(struct net_bridge *br) +{ +} + static inline void br_multicast_open(struct net_bridge *br) { } --- linux-5.8.0.orig/net/bridge/br_private_mrp.h +++ linux-5.8.0/net/bridge/br_private_mrp.h @@ -55,8 +55,7 @@ int br_mrp_switchdev_send_ring_test(struct net_bridge *br, struct br_mrp *mrp, u32 interval, u8 max_miss, u32 period, bool monitor); -int br_mrp_port_switchdev_set_state(struct net_bridge_port *p, - enum br_mrp_port_state_type state); +int br_mrp_port_switchdev_set_state(struct net_bridge_port *p, u32 state); int br_mrp_port_switchdev_set_role(struct net_bridge_port *p, enum br_mrp_port_role_type role); --- linux-5.8.0.orig/net/bridge/br_switchdev.c +++ linux-5.8.0/net/bridge/br_switchdev.c @@ -123,6 +123,8 @@ { if (!fdb->dst) return; + if (test_bit(BR_FDB_LOCAL, &fdb->flags)) + return; switch (type) { case RTM_DELNEIGH: --- linux-5.8.0.orig/net/bridge/br_sysfs_if.c +++ linux-5.8.0/net/bridge/br_sysfs_if.c @@ -55,9 +55,8 @@ static int store_flag(struct net_bridge_port *p, unsigned long v, unsigned long mask) { - unsigned long flags; - - flags = p->flags; + unsigned long flags = p->flags; + int err; if (v) flags |= mask; @@ -65,6 +64,10 @@ flags &= ~mask; if (flags != p->flags) { + err = br_switchdev_set_port_flag(p, flags, mask); + if (err) + return err; + p->flags = flags; br_port_flags_change(p, mask); } --- linux-5.8.0.orig/net/bridge/br_vlan.c +++ linux-5.8.0/net/bridge/br_vlan.c @@ -266,8 +266,10 @@ } masterv = br_vlan_get_master(br, v->vid, extack); - if (!masterv) + if (!masterv) { + err = -ENOMEM; goto out_filt; + } v->brvlan = masterv; if (br_opt_get(br, BROPT_VLAN_STATS_PER_PORT)) { v->stats = netdev_alloc_pcpu_stats(struct br_vlan_stats); @@ -1288,11 +1290,13 @@ } } -static int __br_vlan_get_pvid(const struct net_device *dev, - struct net_bridge_port *p, u16 *p_pvid) +int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid) { struct net_bridge_vlan_group *vg; + struct net_bridge_port *p; + ASSERT_RTNL(); + p = br_port_get_check_rtnl(dev); if (p) vg = nbp_vlan_group(p); else if (netif_is_bridge_master(dev)) @@ -1303,18 +1307,23 @@ *p_pvid = br_get_pvid(vg); return 0; } - -int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid) -{ - ASSERT_RTNL(); - - return __br_vlan_get_pvid(dev, br_port_get_check_rtnl(dev), p_pvid); -} EXPORT_SYMBOL_GPL(br_vlan_get_pvid); int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid) { - return __br_vlan_get_pvid(dev, br_port_get_check_rcu(dev), p_pvid); + struct net_bridge_vlan_group *vg; + struct net_bridge_port *p; + + p = br_port_get_check_rcu(dev); + if (p) + vg = nbp_vlan_group_rcu(p); + else if (netif_is_bridge_master(dev)) + vg = br_vlan_group_rcu(netdev_priv(dev)); + else + return -EINVAL; + + *p_pvid = br_get_pvid(vg); + return 0; } EXPORT_SYMBOL_GPL(br_vlan_get_pvid_rcu); --- linux-5.8.0.orig/net/bridge/netfilter/ebt_dnat.c +++ linux-5.8.0/net/bridge/netfilter/ebt_dnat.c @@ -21,7 +21,7 @@ { const struct ebt_nat_info *info = par->targinfo; - if (skb_ensure_writable(skb, ETH_ALEN)) + if (skb_ensure_writable(skb, 0)) return EBT_DROP; ether_addr_copy(eth_hdr(skb)->h_dest, info->mac); --- linux-5.8.0.orig/net/bridge/netfilter/ebt_redirect.c +++ linux-5.8.0/net/bridge/netfilter/ebt_redirect.c @@ -21,7 +21,7 @@ { const struct ebt_redirect_info *info = par->targinfo; - if (skb_ensure_writable(skb, ETH_ALEN)) + if (skb_ensure_writable(skb, 0)) return EBT_DROP; if (xt_hooknum(par) != NF_BR_BROUTING) --- linux-5.8.0.orig/net/bridge/netfilter/ebt_snat.c +++ linux-5.8.0/net/bridge/netfilter/ebt_snat.c @@ -22,7 +22,7 @@ { const struct ebt_nat_info *info = par->targinfo; - if (skb_ensure_writable(skb, ETH_ALEN * 2)) + if (skb_ensure_writable(skb, 0)) return EBT_DROP; ether_addr_copy(eth_hdr(skb)->h_source, info->mac); --- linux-5.8.0.orig/net/bridge/netfilter/nf_conntrack_bridge.c +++ linux-5.8.0/net/bridge/netfilter/nf_conntrack_bridge.c @@ -168,6 +168,7 @@ static unsigned int nf_ct_br_defrag6(struct sk_buff *skb, const struct nf_hook_state *state) { +#if IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) u16 zone_id = NF_CT_DEFAULT_ZONE_ID; enum ip_conntrack_info ctinfo; struct br_input_skb_cb cb; @@ -180,14 +181,17 @@ br_skb_cb_save(skb, &cb, sizeof(struct inet6_skb_parm)); - err = nf_ipv6_br_defrag(state->net, skb, - IP_DEFRAG_CONNTRACK_BRIDGE_IN + zone_id); + err = nf_ct_frag6_gather(state->net, skb, + IP_DEFRAG_CONNTRACK_BRIDGE_IN + zone_id); /* queued */ if (err == -EINPROGRESS) return NF_STOLEN; br_skb_cb_restore(skb, &cb, IP6CB(skb)->frag_max_size); return err == 0 ? NF_ACCEPT : NF_DROP; +#else + return NF_ACCEPT; +#endif } static int nf_ct_br_ip_check(const struct sk_buff *skb) --- linux-5.8.0.orig/net/can/af_can.c +++ linux-5.8.0/net/can/af_can.c @@ -304,8 +304,8 @@ struct net_device *dev) { if (dev) { - struct can_ml_priv *ml_priv = dev->ml_priv; - return &ml_priv->dev_rcv_lists; + struct can_ml_priv *can_ml = can_get_ml_priv(dev); + return &can_ml->dev_rcv_lists; } else { return net->can.rx_alldev_list; } @@ -539,10 +539,13 @@ /* Check for bugs in CAN protocol implementations using af_can.c: * 'rcv' will be NULL if no matching list item was found for removal. + * As this case may potentially happen when closing a socket while + * the notifier for removing the CAN netdev is running we just print + * a warning here. */ if (!rcv) { - WARN(1, "BUG: receive list entry not found for dev %s, id %03X, mask %03X\n", - DNAME(dev), can_id, mask); + pr_warn("can: receive list entry not found for dev %s, id %03X, mask %03X\n", + DNAME(dev), can_id, mask); goto out; } @@ -675,16 +678,25 @@ { struct canfd_frame *cfd = (struct canfd_frame *)skb->data; - if (unlikely(dev->type != ARPHRD_CAN || skb->len != CAN_MTU || - cfd->len > CAN_MAX_DLEN)) { - pr_warn_once("PF_CAN: dropped non conform CAN skbuf: dev type %d, len %d, datalen %d\n", + if (unlikely(dev->type != ARPHRD_CAN || skb->len != CAN_MTU)) { + pr_warn_once("PF_CAN: dropped non conform CAN skbuff: dev type %d, len %d\n", + dev->type, skb->len); + goto free_skb; + } + + /* This check is made separately since cfd->len would be uninitialized if skb->len = 0. */ + if (unlikely(cfd->len > CAN_MAX_DLEN)) { + pr_warn_once("PF_CAN: dropped non conform CAN skbuff: dev type %d, len %d, datalen %d\n", dev->type, skb->len, cfd->len); - kfree_skb(skb); - return NET_RX_DROP; + goto free_skb; } can_receive(skb, dev); return NET_RX_SUCCESS; + +free_skb: + kfree_skb(skb); + return NET_RX_DROP; } static int canfd_rcv(struct sk_buff *skb, struct net_device *dev, @@ -692,16 +704,25 @@ { struct canfd_frame *cfd = (struct canfd_frame *)skb->data; - if (unlikely(dev->type != ARPHRD_CAN || skb->len != CANFD_MTU || - cfd->len > CANFD_MAX_DLEN)) { - pr_warn_once("PF_CAN: dropped non conform CAN FD skbuf: dev type %d, len %d, datalen %d\n", + if (unlikely(dev->type != ARPHRD_CAN || skb->len != CANFD_MTU)) { + pr_warn_once("PF_CAN: dropped non conform CAN FD skbuff: dev type %d, len %d\n", + dev->type, skb->len); + goto free_skb; + } + + /* This check is made separately since cfd->len would be uninitialized if skb->len = 0. */ + if (unlikely(cfd->len > CANFD_MAX_DLEN)) { + pr_warn_once("PF_CAN: dropped non conform CAN FD skbuff: dev type %d, len %d, datalen %d\n", dev->type, skb->len, cfd->len); - kfree_skb(skb); - return NET_RX_DROP; + goto free_skb; } can_receive(skb, dev); return NET_RX_SUCCESS; + +free_skb: + kfree_skb(skb); + return NET_RX_DROP; } /* af_can protocol functions */ @@ -767,25 +788,6 @@ } EXPORT_SYMBOL(can_proto_unregister); -/* af_can notifier to create/remove CAN netdevice specific structs */ -static int can_notifier(struct notifier_block *nb, unsigned long msg, - void *ptr) -{ - struct net_device *dev = netdev_notifier_info_to_dev(ptr); - - if (dev->type != ARPHRD_CAN) - return NOTIFY_DONE; - - switch (msg) { - case NETDEV_REGISTER: - WARN(!dev->ml_priv, - "No CAN mid layer private allocated, please fix your driver and use alloc_candev()!\n"); - break; - } - - return NOTIFY_DONE; -} - static int can_pernet_init(struct net *net) { spin_lock_init(&net->can.rcvlists_lock); @@ -853,11 +855,6 @@ .owner = THIS_MODULE, }; -/* notifier block for netdevice event */ -static struct notifier_block can_netdev_notifier __read_mostly = { - .notifier_call = can_notifier, -}; - static struct pernet_operations can_pernet_ops __read_mostly = { .init = can_pernet_init, .exit = can_pernet_exit, @@ -888,17 +885,12 @@ err = sock_register(&can_family_ops); if (err) goto out_sock; - err = register_netdevice_notifier(&can_netdev_notifier); - if (err) - goto out_notifier; dev_add_pack(&can_packet); dev_add_pack(&canfd_packet); return 0; -out_notifier: - sock_unregister(PF_CAN); out_sock: unregister_pernet_subsys(&can_pernet_ops); out_pernet: @@ -912,7 +904,6 @@ /* protocol unregister */ dev_remove_pack(&canfd_packet); dev_remove_pack(&can_packet); - unregister_netdevice_notifier(&can_netdev_notifier); sock_unregister(PF_CAN); unregister_pernet_subsys(&can_pernet_ops); --- linux-5.8.0.orig/net/can/j1939/main.c +++ linux-5.8.0/net/can/j1939/main.c @@ -140,9 +140,9 @@ static inline void j1939_priv_set(struct net_device *ndev, struct j1939_priv *priv) { - struct can_ml_priv *can_ml_priv = ndev->ml_priv; + struct can_ml_priv *can_ml = can_get_ml_priv(ndev); - can_ml_priv->j1939_priv = priv; + can_ml->j1939_priv = priv; } static void __j1939_priv_release(struct kref *kref) @@ -211,12 +211,9 @@ /* get pointer to priv without increasing ref counter */ static inline struct j1939_priv *j1939_ndev_to_priv(struct net_device *ndev) { - struct can_ml_priv *can_ml_priv = ndev->ml_priv; + struct can_ml_priv *can_ml = can_get_ml_priv(ndev); - if (!can_ml_priv) - return NULL; - - return can_ml_priv->j1939_priv; + return can_ml->j1939_priv; } static struct j1939_priv *j1939_priv_get_by_ndev_locked(struct net_device *ndev) @@ -225,9 +222,6 @@ lockdep_assert_held(&j1939_netdev_lock); - if (ndev->type != ARPHRD_CAN) - return NULL; - priv = j1939_ndev_to_priv(ndev); if (priv) j1939_priv_get(priv); @@ -348,15 +342,16 @@ unsigned long msg, void *data) { struct net_device *ndev = netdev_notifier_info_to_dev(data); + struct can_ml_priv *can_ml = can_get_ml_priv(ndev); struct j1939_priv *priv; + if (!can_ml) + goto notify_done; + priv = j1939_priv_get_by_ndev(ndev); if (!priv) goto notify_done; - if (ndev->type != ARPHRD_CAN) - goto notify_put; - switch (msg) { case NETDEV_DOWN: j1939_cancel_active_session(priv, NULL); @@ -365,7 +360,6 @@ break; } -notify_put: j1939_priv_put(priv); notify_done: --- linux-5.8.0.orig/net/can/j1939/socket.c +++ linux-5.8.0/net/can/j1939/socket.c @@ -12,6 +12,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include #include #include #include @@ -398,6 +399,7 @@ spin_lock_init(&jsk->sk_session_queue_lock); INIT_LIST_HEAD(&jsk->sk_session_queue); sk->sk_destruct = j1939_sk_sock_destruct; + sk->sk_protocol = CAN_J1939; return 0; } @@ -452,6 +454,7 @@ j1939_jsk_del(priv, jsk); j1939_local_ecu_put(priv, jsk->addr.src_name, jsk->addr.sa); } else { + struct can_ml_priv *can_ml; struct net_device *ndev; ndev = dev_get_by_index(net, addr->can_ifindex); @@ -460,12 +463,19 @@ goto out_release_sock; } - if (ndev->type != ARPHRD_CAN) { + can_ml = can_get_ml_priv(ndev); + if (!can_ml) { dev_put(ndev); ret = -ENODEV; goto out_release_sock; } + if (!(ndev->flags & IFF_UP)) { + dev_put(ndev); + ret = -ENETDOWN; + goto out_release_sock; + } + priv = j1939_netdev_start(ndev); dev_put(ndev); if (IS_ERR(priv)) { @@ -553,6 +563,11 @@ static void j1939_sk_sock2sockaddr_can(struct sockaddr_can *addr, const struct j1939_sock *jsk, int peer) { + /* There are two holes (2 bytes and 3 bytes) to clear to avoid + * leaking kernel information to user space. + */ + memset(addr, 0, J1939_MIN_NAMELEN); + addr->can_family = AF_CAN; addr->can_ifindex = jsk->ifindex; addr->can_addr.j1939.pgn = jsk->addr.pgn; --- linux-5.8.0.orig/net/can/j1939/transport.c +++ linux-5.8.0/net/can/j1939/transport.c @@ -352,17 +352,16 @@ skb_queue_tail(&session->skb_queue, skb); } -static struct sk_buff *j1939_session_skb_find(struct j1939_session *session) +static struct +sk_buff *j1939_session_skb_find_by_offset(struct j1939_session *session, + unsigned int offset_start) { struct j1939_priv *priv = session->priv; + struct j1939_sk_buff_cb *do_skcb; struct sk_buff *skb = NULL; struct sk_buff *do_skb; - struct j1939_sk_buff_cb *do_skcb; - unsigned int offset_start; unsigned long flags; - offset_start = session->pkt.dpo * 7; - spin_lock_irqsave(&session->skb_queue.lock, flags); skb_queue_walk(&session->skb_queue, do_skb) { do_skcb = j1939_skb_to_cb(do_skb); @@ -382,6 +381,14 @@ return skb; } +static struct sk_buff *j1939_session_skb_find(struct j1939_session *session) +{ + unsigned int offset_start; + + offset_start = session->pkt.dpo * 7; + return j1939_session_skb_find_by_offset(session, offset_start); +} + /* see if we are receiver * returns 0 for broadcasts, although we will receive them */ @@ -573,6 +580,7 @@ skb->dev = priv->ndev; can_skb_reserve(skb); can_skb_prv(skb)->ifindex = priv->ndev->ifindex; + can_skb_prv(skb)->skbcnt = 0; /* reserve CAN header */ skb_reserve(skb, offsetof(struct can_frame, data)); @@ -716,10 +724,12 @@ return ret; session->last_txcmd = dat[0]; - if (dat[0] == J1939_TP_CMD_BAM) + if (dat[0] == J1939_TP_CMD_BAM) { j1939_tp_schedule_txtimer(session, 50); - - j1939_tp_set_rxtimeout(session, 1250); + j1939_tp_set_rxtimeout(session, 250); + } else { + j1939_tp_set_rxtimeout(session, 1250); + } netdev_dbg(session->priv->ndev, "%s: 0x%p\n", __func__, session); @@ -766,7 +776,7 @@ int ret = 0; u8 dat[8]; - se_skb = j1939_session_skb_find(session); + se_skb = j1939_session_skb_find_by_offset(session, session->pkt.tx * 7); if (!se_skb) return -ENOBUFS; @@ -787,6 +797,18 @@ if (len > 7) len = 7; + if (offset + len > se_skb->len) { + netdev_err_once(priv->ndev, + "%s: 0x%p: requested data outside of queued buffer: offset %i, len %i, pkt.tx: %i\n", + __func__, session, skcb->offset, se_skb->len , session->pkt.tx); + return -EOVERFLOW; + } + + if (!len) { + ret = -ENOBUFS; + break; + } + memcpy(&dat[1], &tpdat[offset], len); ret = j1939_tp_tx_dat(session, dat, len + 1); if (ret < 0) { @@ -1055,9 +1077,9 @@ lockdep_assert_held(&session->priv->active_session_list_lock); session->err = j1939_xtp_abort_to_errno(priv, err); + session->state = J1939_SESSION_WAITING_ABORT; /* do not send aborts on incoming broadcasts */ if (!j1939_cb_is_broadcast(&session->skcb)) { - session->state = J1939_SESSION_WAITING_ABORT; j1939_xtp_tx_abort(priv, &session->skcb, !session->transmission, err, session->skcb.addr.pgn); @@ -1120,6 +1142,9 @@ * cleanup including propagation of the error to user space. */ break; + case -EOVERFLOW: + j1939_session_cancel(session, J1939_XTP_ABORT_ECTS_TOO_BIG); + break; case 0: session->tx_retry = 0; break; @@ -1463,6 +1488,7 @@ skb->dev = priv->ndev; can_skb_reserve(skb); can_skb_prv(skb)->ifindex = priv->ndev->ifindex; + can_skb_prv(skb)->skbcnt = 0; skcb = j1939_skb_to_cb(skb); memcpy(skcb, rel_skcb, sizeof(*skcb)); @@ -1651,8 +1677,12 @@ return; } session = j1939_xtp_rx_rts_session_new(priv, skb); - if (!session) + if (!session) { + if (cmd == J1939_TP_CMD_BAM && j1939_sk_recv_match(priv, skcb)) + netdev_info(priv->ndev, "%s: failed to create TP BAM session\n", + __func__); return; + } } else { if (j1939_xtp_rx_rts_session_active(session, skb)) { j1939_session_put(session); @@ -1661,11 +1691,15 @@ } session->last_cmd = cmd; - j1939_tp_set_rxtimeout(session, 1250); - - if (cmd != J1939_TP_CMD_BAM && !session->transmission) { - j1939_session_txtimer_cancel(session); - j1939_tp_schedule_txtimer(session, 0); + if (cmd == J1939_TP_CMD_BAM) { + if (!session->transmission) + j1939_tp_set_rxtimeout(session, 750); + } else { + if (!session->transmission) { + j1939_session_txtimer_cancel(session); + j1939_tp_schedule_txtimer(session, 0); + } + j1939_tp_set_rxtimeout(session, 1250); } j1939_session_put(session); @@ -1716,6 +1750,7 @@ int offset; int nbytes; bool final = false; + bool remain = false; bool do_cts_eoma = false; int packet; @@ -1750,7 +1785,8 @@ __func__, session); goto out_session_cancel; } - se_skb = j1939_session_skb_find(session); + + se_skb = j1939_session_skb_find_by_offset(session, packet * 7); if (!se_skb) { netdev_warn(priv->ndev, "%s: 0x%p: no skb found\n", __func__, session); @@ -1769,7 +1805,20 @@ } tpdat = se_skb->data; - memcpy(&tpdat[offset], &dat[1], nbytes); + if (!session->transmission) { + memcpy(&tpdat[offset], &dat[1], nbytes); + } else { + int err; + + err = memcmp(&tpdat[offset], &dat[1], nbytes); + if (err) + netdev_err_once(priv->ndev, + "%s: 0x%p: Data of RX-looped back packet (%*ph) doesn't match TX data (%*ph)!\n", + __func__, session, + nbytes, &dat[1], + nbytes, &tpdat[offset]); + } + if (packet == session->pkt.rx) session->pkt.rx++; @@ -1777,6 +1826,8 @@ j1939_cb_is_broadcast(&session->skcb)) { if (session->pkt.rx >= session->pkt.total) final = true; + else + remain = true; } else { /* never final, an EOMA must follow */ if (session->pkt.rx >= session->pkt.last) @@ -1784,7 +1835,11 @@ } if (final) { + j1939_session_timers_cancel(session); j1939_session_completed(session); + } else if (remain) { + if (!session->transmission) + j1939_tp_set_rxtimeout(session, 750); } else if (do_cts_eoma) { j1939_tp_set_rxtimeout(session, 1250); if (!session->transmission) @@ -1829,6 +1884,13 @@ else j1939_xtp_rx_dat_one(session, skb); } + + if (j1939_cb_is_broadcast(skcb)) { + session = j1939_session_get_by_addr(priv, &skcb->addr, false, + false); + if (session) + j1939_xtp_rx_dat_one(session, skb); + } } /* j1939 main intf */ @@ -1920,7 +1982,7 @@ if (j1939_tp_im_transmitter(skcb)) j1939_xtp_rx_rts(priv, skb, true); - if (j1939_tp_im_receiver(skcb)) + if (j1939_tp_im_receiver(skcb) || j1939_cb_is_broadcast(skcb)) j1939_xtp_rx_rts(priv, skb, false); break; @@ -1984,7 +2046,7 @@ { struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); - if (!j1939_tp_im_involved_anydir(skcb)) + if (!j1939_tp_im_involved_anydir(skcb) && !j1939_cb_is_broadcast(skcb)) return 0; switch (skcb->addr.pgn) { @@ -2017,6 +2079,10 @@ if (!skb->sk) return; + if (skb->sk->sk_family != AF_CAN || + skb->sk->sk_protocol != CAN_J1939) + return; + j1939_session_list_lock(priv); session = j1939_session_get_simple(priv, skb); j1939_session_list_unlock(priv); --- linux-5.8.0.orig/net/can/proc.c +++ linux-5.8.0/net/can/proc.c @@ -329,8 +329,11 @@ /* receive list for registered CAN devices */ for_each_netdev_rcu(net, dev) { - if (dev->type == ARPHRD_CAN && dev->ml_priv) - can_rcvlist_proc_show_one(m, idx, dev, dev->ml_priv); + struct can_ml_priv *can_ml = can_get_ml_priv(dev); + + if (can_ml) + can_rcvlist_proc_show_one(m, idx, dev, + &can_ml->dev_rcv_lists); } rcu_read_unlock(); @@ -382,8 +385,10 @@ /* sff receive list for registered CAN devices */ for_each_netdev_rcu(net, dev) { - if (dev->type == ARPHRD_CAN && dev->ml_priv) { - dev_rcv_lists = dev->ml_priv; + struct can_ml_priv *can_ml = can_get_ml_priv(dev); + + if (can_ml) { + dev_rcv_lists = &can_ml->dev_rcv_lists; can_rcvlist_proc_show_array(m, dev, dev_rcv_lists->rx_sff, ARRAY_SIZE(dev_rcv_lists->rx_sff)); } @@ -413,8 +418,10 @@ /* eff receive list for registered CAN devices */ for_each_netdev_rcu(net, dev) { - if (dev->type == ARPHRD_CAN && dev->ml_priv) { - dev_rcv_lists = dev->ml_priv; + struct can_ml_priv *can_ml = can_get_ml_priv(dev); + + if (can_ml) { + dev_rcv_lists = &can_ml->dev_rcv_lists; can_rcvlist_proc_show_array(m, dev, dev_rcv_lists->rx_eff, ARRAY_SIZE(dev_rcv_lists->rx_eff)); } @@ -471,6 +478,9 @@ */ void can_remove_proc(struct net *net) { + if (!net->can.proc_dir) + return; + if (net->can.pde_version) remove_proc_entry(CAN_PROC_VERSION, net->can.proc_dir); @@ -498,6 +508,5 @@ if (net->can.pde_rcvlist_sff) remove_proc_entry(CAN_PROC_RCVLIST_SFF, net->can.proc_dir); - if (net->can.proc_dir) - remove_proc_entry("can", net->proc_net); + remove_proc_entry("can", net->proc_net); } --- linux-5.8.0.orig/net/ceph/messenger.c +++ linux-5.8.0/net/ceph/messenger.c @@ -2998,6 +2998,11 @@ ceph_msg_put(con->in_msg); con->in_msg = NULL; } + if (con->out_msg) { + BUG_ON(con->out_msg->con != con); + ceph_msg_put(con->out_msg); + con->out_msg = NULL; + } /* Requeue anything that hasn't been acked */ list_splice_init(&con->out_sent, &con->out_queue); --- linux-5.8.0.orig/net/compat.c +++ linux-5.8.0/net/compat.c @@ -309,6 +309,7 @@ break; } /* Bump the usage count and install the file. */ + __receive_sock(fp[i]); fd_install(new_fd, get_file(fp[i])); } --- linux-5.8.0.orig/net/core/datagram.c +++ linux-5.8.0/net/core/datagram.c @@ -696,8 +696,16 @@ struct iov_iter *to, int len, __wsum *csump) { - return __skb_datagram_iter(skb, offset, to, len, true, - csum_and_copy_to_iter, csump); + struct csum_state csdata = { .csum = *csump }; + int ret; + + ret = __skb_datagram_iter(skb, offset, to, len, true, + csum_and_copy_to_iter, &csdata); + if (ret) + return ret; + + *csump = csdata.csum; + return 0; } /** --- linux-5.8.0.orig/net/core/dev.c +++ linux-5.8.0/net/core/dev.c @@ -1192,6 +1192,18 @@ return -ENOMEM; for_each_netdev(net, d) { + struct netdev_name_node *name_node; + list_for_each_entry(name_node, &d->name_node->list, list) { + if (!sscanf(name_node->name, name, &i)) + continue; + if (i < 0 || i >= max_netdevices) + continue; + + /* avoid cases where sscanf is not exact inverse of printf */ + snprintf(buf, IFNAMSIZ, name, i); + if (!strncmp(buf, name_node->name, IFNAMSIZ)) + set_bit(i, inuse); + } if (!sscanf(d->name, name, &i)) continue; if (i < 0 || i >= max_netdevices) @@ -4171,7 +4183,7 @@ } EXPORT_SYMBOL(dev_queue_xmit_accel); -int dev_direct_xmit(struct sk_buff *skb, u16 queue_id) +int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id) { struct net_device *dev = skb->dev; struct sk_buff *orig_skb = skb; @@ -4200,17 +4212,13 @@ dev_xmit_recursion_dec(); local_bh_enable(); - - if (!dev_xmit_complete(ret)) - kfree_skb(skb); - return ret; drop: atomic_long_inc(&dev->tx_dropped); kfree_skb_list(skb); return NET_XMIT_DROP; } -EXPORT_SYMBOL(dev_direct_xmit); +EXPORT_SYMBOL(__dev_direct_xmit); /************************************************************************* * Receiver routines @@ -5647,10 +5655,11 @@ /* Queue one GRO_NORMAL SKB up for list processing. If batch size exceeded, * pass the whole batch up to the stack. */ -static void gro_normal_one(struct napi_struct *napi, struct sk_buff *skb) +static void gro_normal_one(struct napi_struct *napi, struct sk_buff *skb, int segs) { list_add_tail(&skb->list, &napi->rx_list); - if (++napi->rx_count >= gro_normal_batch) + napi->rx_count += segs; + if (napi->rx_count >= gro_normal_batch) gro_normal_list(napi); } @@ -5689,7 +5698,7 @@ } out: - gro_normal_one(napi, skb); + gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); return NET_RX_SUCCESS; } @@ -5979,7 +5988,7 @@ { switch (ret) { case GRO_NORMAL: - gro_normal_one(napi, skb); + gro_normal_one(napi, skb, 1); break; case GRO_DROP: @@ -6067,7 +6076,7 @@ __skb_push(skb, ETH_HLEN); skb->protocol = eth_type_trans(skb, skb->dev); if (ret == GRO_NORMAL) - gro_normal_one(napi, skb); + gro_normal_one(napi, skb, 1); break; case GRO_DROP: @@ -6609,12 +6618,13 @@ netdev_err_once(dev, "%s() called with weight %d\n", __func__, weight); napi->weight = weight; - list_add(&napi->dev_list, &dev->napi_list); napi->dev = dev; #ifdef CONFIG_NETPOLL napi->poll_owner = -1; #endif set_bit(NAPI_STATE_SCHED, &napi->state); + set_bit(NAPI_STATE_NPSVC, &napi->state); + list_add_rcu(&napi->dev_list, &dev->napi_list); napi_hash_add(napi); } EXPORT_SYMBOL(netif_napi_add); @@ -6685,7 +6695,9 @@ trace_napi_poll(n, work, weight); } - WARN_ON_ONCE(work > weight); + if (unlikely(work > weight)) + pr_err_once("NAPI poll function %pS returned %d, exceeding its budget of %d.\n", + n->poll, work, weight); if (likely(work < weight)) goto out_unlock; @@ -8542,6 +8554,48 @@ } EXPORT_SYMBOL(dev_set_mac_address); +static DECLARE_RWSEM(dev_addr_sem); + +int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa, + struct netlink_ext_ack *extack) +{ + int ret; + + down_write(&dev_addr_sem); + ret = dev_set_mac_address(dev, sa, extack); + up_write(&dev_addr_sem); + return ret; +} +EXPORT_SYMBOL(dev_set_mac_address_user); + +int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name) +{ + size_t size = sizeof(sa->sa_data); + struct net_device *dev; + int ret = 0; + + down_read(&dev_addr_sem); + rcu_read_lock(); + + dev = dev_get_by_name_rcu(net, dev_name); + if (!dev) { + ret = -ENODEV; + goto unlock; + } + if (!dev->addr_len) + memset(sa->sa_data, 0, size); + else + memcpy(sa->sa_data, dev->dev_addr, + min_t(size_t, size, dev->addr_len)); + sa->sa_family = dev->type; + +unlock: + rcu_read_unlock(); + up_read(&dev_addr_sem); + return ret; +} +EXPORT_SYMBOL(dev_get_mac_address); + /** * dev_change_carrier - Change device carrier * @dev: device @@ -8640,7 +8694,7 @@ if (!first.id_len) first = *ppid; else if (memcmp(&first, ppid, sizeof(*ppid))) - return -ENODATA; + return -EOPNOTSUPP; } return err; @@ -9134,6 +9188,11 @@ } } + if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) { + netdev_dbg(dev, "Dropping TLS RX HW offload feature since no RXCSUM feature.\n"); + features &= ~NETIF_F_HW_TLS_RX; + } + return features; } @@ -10517,7 +10576,7 @@ continue; /* Leave virtual devices for the generic cleanup */ - if (dev->rtnl_link_ops) + if (dev->rtnl_link_ops && !dev->rtnl_link_ops->netns_refund) continue; /* Push remaining network devices to init_net */ --- linux-5.8.0.orig/net/core/dev_ioctl.c +++ linux-5.8.0/net/core/dev_ioctl.c @@ -122,17 +122,6 @@ ifr->ifr_mtu = dev->mtu; return 0; - case SIOCGIFHWADDR: - if (!dev->addr_len) - memset(ifr->ifr_hwaddr.sa_data, 0, - sizeof(ifr->ifr_hwaddr.sa_data)); - else - memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr, - min(sizeof(ifr->ifr_hwaddr.sa_data), - (size_t)dev->addr_len)); - ifr->ifr_hwaddr.sa_family = dev->type; - return 0; - case SIOCGIFSLAVE: err = -EINVAL; break; @@ -253,7 +242,7 @@ case SIOCSIFHWADDR: if (dev->addr_len > sizeof(struct sockaddr)) return -EINVAL; - return dev_set_mac_address(dev, &ifr->ifr_hwaddr, NULL); + return dev_set_mac_address_user(dev, &ifr->ifr_hwaddr, NULL); case SIOCSIFHWBROADCAST: if (ifr->ifr_hwaddr.sa_family != dev->type) @@ -403,6 +392,12 @@ */ switch (cmd) { + case SIOCGIFHWADDR: + dev_load(net, ifr->ifr_name); + ret = dev_get_mac_address(&ifr->ifr_hwaddr, net, ifr->ifr_name); + if (colon) + *colon = ':'; + return ret; /* * These ioctl calls: * - can be done by all. @@ -412,7 +407,6 @@ case SIOCGIFFLAGS: case SIOCGIFMETRIC: case SIOCGIFMTU: - case SIOCGIFHWADDR: case SIOCGIFSLAVE: case SIOCGIFMAP: case SIOCGIFINDEX: --- linux-5.8.0.orig/net/core/devlink.c +++ linux-5.8.0/net/core/devlink.c @@ -579,6 +579,8 @@ if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) goto nla_put_failure; + /* Hold rtnl lock while accessing port's netdev attributes. */ + rtnl_lock(); spin_lock_bh(&devlink_port->type_lock); if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type)) goto nla_put_failure_type_locked; @@ -587,9 +589,10 @@ devlink_port->desired_type)) goto nla_put_failure_type_locked; if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) { + struct net *net = devlink_net(devlink_port->devlink); struct net_device *netdev = devlink_port->type_dev; - if (netdev && + if (netdev && net_eq(net, dev_net(netdev)) && (nla_put_u32(msg, DEVLINK_ATTR_PORT_NETDEV_IFINDEX, netdev->ifindex) || nla_put_string(msg, DEVLINK_ATTR_PORT_NETDEV_NAME, @@ -605,6 +608,7 @@ goto nla_put_failure_type_locked; } spin_unlock_bh(&devlink_port->type_lock); + rtnl_unlock(); if (devlink_nl_port_attrs_put(msg, devlink_port)) goto nla_put_failure; @@ -613,6 +617,7 @@ nla_put_failure_type_locked: spin_unlock_bh(&devlink_port->type_lock); + rtnl_unlock(); nla_put_failure: genlmsg_cancel(msg, hdr); return -EMSGSIZE; @@ -1166,7 +1171,7 @@ err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, pool_index, &cur, &max); if (err && err != -EOPNOTSUPP) - return err; + goto sb_occ_get_failure; if (!err) { if (nla_put_u32(msg, DEVLINK_ATTR_SB_OCC_CUR, cur)) goto nla_put_failure; @@ -1179,8 +1184,10 @@ return 0; nla_put_failure: + err = -EMSGSIZE; +sb_occ_get_failure: genlmsg_cancel(msg, hdr); - return -EMSGSIZE; + return err; } static int devlink_nl_cmd_sb_port_pool_get_doit(struct sk_buff *skb, @@ -3601,7 +3608,7 @@ static int devlink_nl_cmd_port_param_get_doit(struct sk_buff *skb, struct genl_info *info) { - struct devlink_port *devlink_port = info->user_ptr[0]; + struct devlink_port *devlink_port = info->user_ptr[1]; struct devlink_param_item *param_item; struct sk_buff *msg; int err; @@ -3630,7 +3637,7 @@ static int devlink_nl_cmd_port_param_set_doit(struct sk_buff *skb, struct genl_info *info) { - struct devlink_port *devlink_port = info->user_ptr[0]; + struct devlink_port *devlink_port = info->user_ptr[1]; return __devlink_nl_cmd_param_set_doit(devlink_port->devlink, devlink_port->index, --- linux-5.8.0.orig/net/core/dst.c +++ linux-5.8.0/net/core/dst.c @@ -237,37 +237,62 @@ } EXPORT_SYMBOL(__dst_destroy_metrics_generic); -static struct dst_ops md_dst_ops = { - .family = AF_UNSPEC, -}; +struct dst_entry *dst_blackhole_check(struct dst_entry *dst, u32 cookie) +{ + return NULL; +} + +u32 *dst_blackhole_cow_metrics(struct dst_entry *dst, unsigned long old) +{ + return NULL; +} + +struct neighbour *dst_blackhole_neigh_lookup(const struct dst_entry *dst, + struct sk_buff *skb, + const void *daddr) +{ + return NULL; +} -static int dst_md_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb) +void dst_blackhole_update_pmtu(struct dst_entry *dst, struct sock *sk, + struct sk_buff *skb, u32 mtu, + bool confirm_neigh) { - WARN_ONCE(1, "Attempting to call output on metadata dst\n"); - kfree_skb(skb); - return 0; } +EXPORT_SYMBOL_GPL(dst_blackhole_update_pmtu); -static int dst_md_discard(struct sk_buff *skb) +void dst_blackhole_redirect(struct dst_entry *dst, struct sock *sk, + struct sk_buff *skb) { - WARN_ONCE(1, "Attempting to call input on metadata dst\n"); - kfree_skb(skb); - return 0; } +EXPORT_SYMBOL_GPL(dst_blackhole_redirect); + +unsigned int dst_blackhole_mtu(const struct dst_entry *dst) +{ + unsigned int mtu = dst_metric_raw(dst, RTAX_MTU); + + return mtu ? : dst->dev->mtu; +} +EXPORT_SYMBOL_GPL(dst_blackhole_mtu); + +static struct dst_ops dst_blackhole_ops = { + .family = AF_UNSPEC, + .neigh_lookup = dst_blackhole_neigh_lookup, + .check = dst_blackhole_check, + .cow_metrics = dst_blackhole_cow_metrics, + .update_pmtu = dst_blackhole_update_pmtu, + .redirect = dst_blackhole_redirect, + .mtu = dst_blackhole_mtu, +}; static void __metadata_dst_init(struct metadata_dst *md_dst, enum metadata_type type, u8 optslen) - { struct dst_entry *dst; dst = &md_dst->dst; - dst_init(dst, &md_dst_ops, NULL, 1, DST_OBSOLETE_NONE, + dst_init(dst, &dst_blackhole_ops, NULL, 1, DST_OBSOLETE_NONE, DST_METADATA | DST_NOCOUNT); - - dst->input = dst_md_discard; - dst->output = dst_md_discard_out; - memset(dst + 1, 0, sizeof(*md_dst) + optslen - sizeof(*dst)); md_dst->type = type; } --- linux-5.8.0.orig/net/core/filter.c +++ linux-5.8.0/net/core/filter.c @@ -1464,7 +1464,7 @@ if (copy_from_user(prog->insns, fprog->filter, fsize)) { __bpf_prog_free(prog); - return ERR_PTR(-EFAULT); + return ERR_PTR(-EINVAL); } prog->len = fprog->len; @@ -3183,18 +3183,14 @@ return 0; } -static u32 __bpf_skb_max_len(const struct sk_buff *skb) -{ - return skb->dev ? skb->dev->mtu + skb->dev->hard_header_len : - SKB_MAX_ALLOC; -} +#define BPF_SKB_MAX_LEN SKB_MAX_ALLOC BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, s32, len_diff, u32, mode, u64, flags) { u32 len_cur, len_diff_abs = abs(len_diff); u32 len_min = bpf_skb_net_base_len(skb); - u32 len_max = __bpf_skb_max_len(skb); + u32 len_max = BPF_SKB_MAX_LEN; __be16 proto = skb->protocol; bool shrink = len_diff < 0; u32 off; @@ -3277,7 +3273,7 @@ static inline int __bpf_skb_change_tail(struct sk_buff *skb, u32 new_len, u64 flags) { - u32 max_len = __bpf_skb_max_len(skb); + u32 max_len = BPF_SKB_MAX_LEN; u32 min_len = __bpf_skb_min_len(skb); int ret; @@ -3353,7 +3349,7 @@ static inline int __bpf_skb_change_head(struct sk_buff *skb, u32 head_room, u64 flags) { - u32 max_len = __bpf_skb_max_len(skb); + u32 max_len = BPF_SKB_MAX_LEN; u32 new_len = skb->len + head_room; int ret; @@ -4323,7 +4319,8 @@ cmpxchg(&sk->sk_pacing_status, SK_PACING_NONE, SK_PACING_NEEDED); - sk->sk_max_pacing_rate = (val == ~0U) ? ~0UL : val; + sk->sk_max_pacing_rate = (val == ~0U) ? + ~0UL : (unsigned int)val; sk->sk_pacing_rate = min(sk->sk_pacing_rate, sk->sk_max_pacing_rate); break; @@ -4774,6 +4771,7 @@ fl4.saddr = params->ipv4_src; fl4.fl4_sport = params->sport; fl4.fl4_dport = params->dport; + fl4.flowi4_multipath_hash = 0; if (flags & BPF_FIB_LOOKUP_DIRECT) { u32 tbid = l3mdev_fib_table_rcu(dev) ? : RT_TABLE_MAIN; @@ -5002,6 +5000,7 @@ { struct net *net = dev_net(skb->dev); int rc = -EAFNOSUPPORT; + bool check_mtu = false; if (plen < sizeof(*params)) return -EINVAL; @@ -5009,22 +5008,28 @@ if (flags & ~(BPF_FIB_LOOKUP_DIRECT | BPF_FIB_LOOKUP_OUTPUT)) return -EINVAL; + if (params->tot_len) + check_mtu = true; + switch (params->family) { #if IS_ENABLED(CONFIG_INET) case AF_INET: - rc = bpf_ipv4_fib_lookup(net, params, flags, false); + rc = bpf_ipv4_fib_lookup(net, params, flags, check_mtu); break; #endif #if IS_ENABLED(CONFIG_IPV6) case AF_INET6: - rc = bpf_ipv6_fib_lookup(net, params, flags, false); + rc = bpf_ipv6_fib_lookup(net, params, flags, check_mtu); break; #endif } - if (!rc) { + if (rc == BPF_FIB_LKUP_RET_SUCCESS && !check_mtu) { struct net_device *dev; + /* When tot_len isn't provided by user, check skb + * against MTU of FIB lookup resulting net_device + */ dev = dev_get_by_index_rcu(net, params->ifindex); if (!is_skb_forwardable(dev, skb)) rc = BPF_FIB_LKUP_RET_FRAG_NEEDED; @@ -6997,8 +7002,6 @@ bool indirect = BPF_MODE(orig->code) == BPF_IND; struct bpf_insn *insn = insn_buf; - /* We're guaranteed here that CTX is in R6. */ - *insn++ = BPF_MOV64_REG(BPF_REG_1, BPF_REG_CTX); if (!indirect) { *insn++ = BPF_MOV64_IMM(BPF_REG_2, orig->imm); } else { @@ -7006,6 +7009,8 @@ if (orig->imm) *insn++ = BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, orig->imm); } + /* We're guaranteed here that CTX is in R6. */ + *insn++ = BPF_MOV64_REG(BPF_REG_1, BPF_REG_CTX); switch (BPF_SIZE(orig->code)) { case BPF_B: @@ -8249,15 +8254,31 @@ /* Helper macro for adding read access to tcp_sock or sock fields. */ #define SOCK_OPS_GET_FIELD(BPF_FIELD, OBJ_FIELD, OBJ) \ do { \ + int fullsock_reg = si->dst_reg, reg = BPF_REG_9, jmp = 2; \ BUILD_BUG_ON(sizeof_field(OBJ, OBJ_FIELD) > \ sizeof_field(struct bpf_sock_ops, BPF_FIELD)); \ + if (si->dst_reg == reg || si->src_reg == reg) \ + reg--; \ + if (si->dst_reg == reg || si->src_reg == reg) \ + reg--; \ + if (si->dst_reg == si->src_reg) { \ + *insn++ = BPF_STX_MEM(BPF_DW, si->src_reg, reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ + fullsock_reg = reg; \ + jmp += 2; \ + } \ *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( \ struct bpf_sock_ops_kern, \ is_fullsock), \ - si->dst_reg, si->src_reg, \ + fullsock_reg, si->src_reg, \ offsetof(struct bpf_sock_ops_kern, \ is_fullsock)); \ - *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 2); \ + *insn++ = BPF_JMP_IMM(BPF_JEQ, fullsock_reg, 0, jmp); \ + if (si->dst_reg == si->src_reg) \ + *insn++ = BPF_LDX_MEM(BPF_DW, reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( \ struct bpf_sock_ops_kern, sk),\ si->dst_reg, si->src_reg, \ @@ -8266,6 +8287,49 @@ OBJ_FIELD), \ si->dst_reg, si->dst_reg, \ offsetof(OBJ, OBJ_FIELD)); \ + if (si->dst_reg == si->src_reg) { \ + *insn++ = BPF_JMP_A(1); \ + *insn++ = BPF_LDX_MEM(BPF_DW, reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ + } \ + } while (0) + +#define SOCK_OPS_GET_SK() \ + do { \ + int fullsock_reg = si->dst_reg, reg = BPF_REG_9, jmp = 1; \ + if (si->dst_reg == reg || si->src_reg == reg) \ + reg--; \ + if (si->dst_reg == reg || si->src_reg == reg) \ + reg--; \ + if (si->dst_reg == si->src_reg) { \ + *insn++ = BPF_STX_MEM(BPF_DW, si->src_reg, reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ + fullsock_reg = reg; \ + jmp += 2; \ + } \ + *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( \ + struct bpf_sock_ops_kern, \ + is_fullsock), \ + fullsock_reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, \ + is_fullsock)); \ + *insn++ = BPF_JMP_IMM(BPF_JEQ, fullsock_reg, 0, jmp); \ + if (si->dst_reg == si->src_reg) \ + *insn++ = BPF_LDX_MEM(BPF_DW, reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ + *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( \ + struct bpf_sock_ops_kern, sk),\ + si->dst_reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, sk));\ + if (si->dst_reg == si->src_reg) { \ + *insn++ = BPF_JMP_A(1); \ + *insn++ = BPF_LDX_MEM(BPF_DW, reg, si->src_reg, \ + offsetof(struct bpf_sock_ops_kern, \ + temp)); \ + } \ } while (0) #define SOCK_OPS_GET_TCP_SOCK_FIELD(FIELD) \ @@ -8552,17 +8616,7 @@ SOCK_OPS_GET_TCP_SOCK_FIELD(bytes_acked); break; case offsetof(struct bpf_sock_ops, sk): - *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( - struct bpf_sock_ops_kern, - is_fullsock), - si->dst_reg, si->src_reg, - offsetof(struct bpf_sock_ops_kern, - is_fullsock)); - *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1); - *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF( - struct bpf_sock_ops_kern, sk), - si->dst_reg, si->src_reg, - offsetof(struct bpf_sock_ops_kern, sk)); + SOCK_OPS_GET_SK(); break; } return insn - insn_buf; --- linux-5.8.0.orig/net/core/flow_dissector.c +++ linux-5.8.0/net/core/flow_dissector.c @@ -175,7 +175,7 @@ * avoid confusion with packets without such field */ if (icmp_has_id(ih->type)) - key_icmp->id = ih->un.echo.id ? : 1; + key_icmp->id = ih->un.echo.id ? ntohs(ih->un.echo.id) : 1; else key_icmp->id = 0; } @@ -1027,6 +1027,9 @@ key_control->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; } + __skb_flow_dissect_ipv4(skb, flow_dissector, + target_container, data, iph); + if (ip_is_fragment(iph)) { key_control->flags |= FLOW_DIS_IS_FRAGMENT; @@ -1043,9 +1046,6 @@ } } - __skb_flow_dissect_ipv4(skb, flow_dissector, - target_container, data, iph); - break; } case htons(ETH_P_IPV6): { --- linux-5.8.0.orig/net/core/flow_offload.c +++ linux-5.8.0/net/core/flow_offload.c @@ -381,10 +381,8 @@ list_for_each_entry_safe(this, next, &flow_block_indr_list, indr.list) { if (this->release == release && - this->indr.cb_priv == cb_priv) { + this->indr.cb_priv == cb_priv) list_move(&this->indr.list, cleanup_list); - return; - } } } --- linux-5.8.0.orig/net/core/gen_estimator.c +++ linux-5.8.0/net/core/gen_estimator.c @@ -80,11 +80,11 @@ u64 rate, brate; est_fetch_counters(est, &b); - brate = (b.bytes - est->last_bytes) << (10 - est->ewma_log - est->intvl_log); - brate -= (est->avbps >> est->ewma_log); + brate = (b.bytes - est->last_bytes) << (10 - est->intvl_log); + brate = (brate >> est->ewma_log) - (est->avbps >> est->ewma_log); - rate = (b.packets - est->last_packets) << (10 - est->ewma_log - est->intvl_log); - rate -= (est->avpps >> est->ewma_log); + rate = (b.packets - est->last_packets) << (10 - est->intvl_log); + rate = (rate >> est->ewma_log) - (est->avpps >> est->ewma_log); write_seqcount_begin(&est->seq); est->avbps += brate; @@ -143,6 +143,9 @@ if (parm->interval < -2 || parm->interval > 3) return -EINVAL; + if (parm->ewma_log == 0 || parm->ewma_log >= 31) + return -EINVAL; + est = kzalloc(sizeof(*est), GFP_KERNEL); if (!est) return -ENOBUFS; --- linux-5.8.0.orig/net/core/lwt_bpf.c +++ linux-5.8.0/net/core/lwt_bpf.c @@ -39,12 +39,11 @@ { int ret; - /* Preempt disable is needed to protect per-cpu redirect_info between - * BPF prog and skb_do_redirect(). The call_rcu in bpf_prog_put() and - * access to maps strictly require a rcu_read_lock() for protection, - * mixing with BH RCU lock doesn't work. + /* Preempt disable and BH disable are needed to protect per-cpu + * redirect_info between BPF prog and skb_do_redirect(). */ preempt_disable(); + local_bh_disable(); bpf_compute_data_pointers(skb); ret = bpf_prog_run_save_cb(lwt->prog, skb); @@ -78,6 +77,7 @@ break; } + local_bh_enable(); preempt_enable(); return ret; --- linux-5.8.0.orig/net/core/neighbour.c +++ linux-5.8.0/net/core/neighbour.c @@ -235,6 +235,8 @@ write_lock(&n->lock); if ((n->nud_state == NUD_FAILED) || + (tbl->is_multicast && + tbl->is_multicast(n->primary_key)) || time_after(tref, n->updated)) remove = true; write_unlock(&n->lock); @@ -1243,13 +1245,14 @@ old = neigh->nud_state; err = -EPERM; - if (!(flags & NEIGH_UPDATE_F_ADMIN) && - (old & (NUD_NOARP | NUD_PERMANENT))) - goto out; if (neigh->dead) { NL_SET_ERR_MSG(extack, "Neighbor entry is now dead"); + new = old; goto out; } + if (!(flags & NEIGH_UPDATE_F_ADMIN) && + (old & (NUD_NOARP | NUD_PERMANENT))) + goto out; ext_learn_change = neigh_update_ext_learned(neigh, flags, ¬ify); --- linux-5.8.0.orig/net/core/net-sysfs.c +++ linux-5.8.0/net/core/net-sysfs.c @@ -1307,8 +1307,8 @@ static ssize_t xps_cpus_show(struct netdev_queue *queue, char *buf) { + int cpu, len, ret, num_tc = 1, tc = 0; struct net_device *dev = queue->dev; - int cpu, len, num_tc = 1, tc = 0; struct xps_dev_maps *dev_maps; cpumask_var_t mask; unsigned long index; @@ -1318,22 +1318,31 @@ index = get_netdev_queue_index(queue); + if (!rtnl_trylock()) + return restart_syscall(); + if (dev->num_tc) { /* Do not allow XPS on subordinate device directly */ num_tc = dev->num_tc; - if (num_tc < 0) - return -EINVAL; + if (num_tc < 0) { + ret = -EINVAL; + goto err_rtnl_unlock; + } /* If queue belongs to subordinate dev use its map */ dev = netdev_get_tx_queue(dev, index)->sb_dev ? : dev; tc = netdev_txq_to_tc(dev, index); - if (tc < 0) - return -EINVAL; + if (tc < 0) { + ret = -EINVAL; + goto err_rtnl_unlock; + } } - if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) - return -ENOMEM; + if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) { + ret = -ENOMEM; + goto err_rtnl_unlock; + } rcu_read_lock(); dev_maps = rcu_dereference(dev->xps_cpus_map); @@ -1356,9 +1365,15 @@ } rcu_read_unlock(); + rtnl_unlock(); + len = snprintf(buf, PAGE_SIZE, "%*pb\n", cpumask_pr_args(mask)); free_cpumask_var(mask); return len < PAGE_SIZE ? len : -EINVAL; + +err_rtnl_unlock: + rtnl_unlock(); + return ret; } static ssize_t xps_cpus_store(struct netdev_queue *queue, @@ -1386,7 +1401,13 @@ return err; } + if (!rtnl_trylock()) { + free_cpumask_var(mask); + return restart_syscall(); + } + err = netif_set_xps_queue(dev, mask, index); + rtnl_unlock(); free_cpumask_var(mask); @@ -1398,22 +1419,29 @@ static ssize_t xps_rxqs_show(struct netdev_queue *queue, char *buf) { + int j, len, ret, num_tc = 1, tc = 0; struct net_device *dev = queue->dev; struct xps_dev_maps *dev_maps; unsigned long *mask, index; - int j, len, num_tc = 1, tc = 0; index = get_netdev_queue_index(queue); + if (!rtnl_trylock()) + return restart_syscall(); + if (dev->num_tc) { num_tc = dev->num_tc; tc = netdev_txq_to_tc(dev, index); - if (tc < 0) - return -EINVAL; + if (tc < 0) { + ret = -EINVAL; + goto err_rtnl_unlock; + } } mask = bitmap_zalloc(dev->num_rx_queues, GFP_KERNEL); - if (!mask) - return -ENOMEM; + if (!mask) { + ret = -ENOMEM; + goto err_rtnl_unlock; + } rcu_read_lock(); dev_maps = rcu_dereference(dev->xps_rxqs_map); @@ -1439,10 +1467,16 @@ out_no_maps: rcu_read_unlock(); + rtnl_unlock(); + len = bitmap_print_to_pagebuf(false, buf, mask, dev->num_rx_queues); bitmap_free(mask); return len < PAGE_SIZE ? len : -EINVAL; + +err_rtnl_unlock: + rtnl_unlock(); + return ret; } static ssize_t xps_rxqs_store(struct netdev_queue *queue, const char *buf, @@ -1468,10 +1502,17 @@ return err; } + if (!rtnl_trylock()) { + bitmap_free(mask); + return restart_syscall(); + } + cpus_read_lock(); err = __netif_set_xps_queue(dev, mask, index, true); cpus_read_unlock(); + rtnl_unlock(); + bitmap_free(mask); return err ? : len; } --- linux-5.8.0.orig/net/core/net_namespace.c +++ linux-5.8.0/net/core/net_namespace.c @@ -251,10 +251,10 @@ if (refcount_read(&net->count) == 0) return NETNSA_NSID_NOT_ASSIGNED; - spin_lock(&net->nsid_lock); + spin_lock_bh(&net->nsid_lock); id = __peernet2id(net, peer); if (id >= 0) { - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); return id; } @@ -264,12 +264,12 @@ * just been idr_remove()'d from there in cleanup_net(). */ if (!maybe_get_net(peer)) { - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); return NETNSA_NSID_NOT_ASSIGNED; } id = alloc_netid(net, peer, -1); - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); put_net(peer); if (id < 0) @@ -534,20 +534,20 @@ for_each_net(tmp) { int id; - spin_lock(&tmp->nsid_lock); + spin_lock_bh(&tmp->nsid_lock); id = __peernet2id(tmp, net); if (id >= 0) idr_remove(&tmp->netns_ids, id); - spin_unlock(&tmp->nsid_lock); + spin_unlock_bh(&tmp->nsid_lock); if (id >= 0) rtnl_net_notifyid(tmp, RTM_DELNSID, id, 0, NULL, GFP_KERNEL); if (tmp == last) break; } - spin_lock(&net->nsid_lock); + spin_lock_bh(&net->nsid_lock); idr_destroy(&net->netns_ids); - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); } static LLIST_HEAD(cleanup_list); @@ -760,9 +760,9 @@ return PTR_ERR(peer); } - spin_lock(&net->nsid_lock); + spin_lock_bh(&net->nsid_lock); if (__peernet2id(net, peer) >= 0) { - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); err = -EEXIST; NL_SET_BAD_ATTR(extack, nla); NL_SET_ERR_MSG(extack, @@ -771,7 +771,7 @@ } err = alloc_netid(net, peer, nsid); - spin_unlock(&net->nsid_lock); + spin_unlock_bh(&net->nsid_lock); if (err >= 0) { rtnl_net_notifyid(net, RTM_NEWNSID, err, NETLINK_CB(skb).portid, nlh, GFP_KERNEL); --- linux-5.8.0.orig/net/core/netpoll.c +++ linux-5.8.0/net/core/netpoll.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -162,7 +163,7 @@ struct napi_struct *napi; int cpu = smp_processor_id(); - list_for_each_entry(napi, &dev->napi_list, dev_list) { + list_for_each_entry_rcu(napi, &dev->napi_list, dev_list) { if (cmpxchg(&napi->poll_owner, -1, cpu) == -1) { poll_one_napi(napi); smp_store_release(&napi->poll_owner, -1); @@ -657,15 +658,15 @@ int netpoll_setup(struct netpoll *np) { - struct net_device *ndev = NULL; + struct net_device *ndev = NULL, *dev = NULL; + struct net *net = current->nsproxy->net_ns; struct in_device *in_dev; int err; rtnl_lock(); - if (np->dev_name[0]) { - struct net *net = current->nsproxy->net_ns; + if (np->dev_name[0]) ndev = __dev_get_by_name(net, np->dev_name); - } + if (!ndev) { np_err(np, "%s doesn't exist, aborting\n", np->dev_name); err = -ENODEV; @@ -673,6 +674,19 @@ } dev_hold(ndev); + /* bring up DSA management network devices up first */ + for_each_netdev(net, dev) { + if (!netdev_uses_dsa(dev)) + continue; + + err = dev_change_flags(dev, dev->flags | IFF_UP, NULL); + if (err < 0) { + np_err(np, "%s failed to open %s\n", + np->dev_name, dev->name); + goto put; + } + } + if (netdev_master_upper_dev_get(ndev)) { np_err(np, "%s is a slave device, aborting\n", np->dev_name); err = -EBUSY; --- linux-5.8.0.orig/net/core/netprio_cgroup.c +++ linux-5.8.0/net/core/netprio_cgroup.c @@ -236,8 +236,6 @@ struct task_struct *p; struct cgroup_subsys_state *css; - cgroup_sk_alloc_disable(); - cgroup_taskset_for_each(p, css, tset) { void *v = (void *)(unsigned long)css->id; --- linux-5.8.0.orig/net/core/pktgen.c +++ linux-5.8.0/net/core/pktgen.c @@ -3464,7 +3464,7 @@ struct pktgen_dev *pkt_dev = NULL; int cpu = t->cpu; - BUG_ON(smp_processor_id() != cpu); + WARN_ON(smp_processor_id() != cpu); init_waitqueue_head(&t->queue); complete(&t->start_done); --- linux-5.8.0.orig/net/core/rtnetlink.c +++ linux-5.8.0/net/core/rtnetlink.c @@ -2556,7 +2556,7 @@ sa->sa_family = dev->type; memcpy(sa->sa_data, nla_data(tb[IFLA_ADDRESS]), dev->addr_len); - err = dev_set_mac_address(dev, sa, extack); + err = dev_set_mac_address_user(dev, sa, extack); kfree(sa); if (err) goto errout; --- linux-5.8.0.orig/net/core/skbuff.c +++ linux-5.8.0/net/core/skbuff.c @@ -432,7 +432,11 @@ len += NET_SKB_PAD; - if ((len > SKB_WITH_OVERHEAD(PAGE_SIZE)) || + /* If requested length is either too small or too big, + * we use kmalloc() for skb->head allocation. + */ + if (len <= SKB_WITH_OVERHEAD(1024) || + len > SKB_WITH_OVERHEAD(PAGE_SIZE) || (gfp_mask & (__GFP_DIRECT_RECLAIM | GFP_DMA))) { skb = __alloc_skb(len, gfp_mask, SKB_ALLOC_RX, NUMA_NO_NODE); if (!skb) @@ -496,13 +500,17 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len, gfp_t gfp_mask) { - struct napi_alloc_cache *nc = this_cpu_ptr(&napi_alloc_cache); + struct napi_alloc_cache *nc; struct sk_buff *skb; void *data; len += NET_SKB_PAD + NET_IP_ALIGN; - if ((len > SKB_WITH_OVERHEAD(PAGE_SIZE)) || + /* If requested length is either too small or too big, + * we use kmalloc() for skb->head allocation. + */ + if (len <= SKB_WITH_OVERHEAD(1024) || + len > SKB_WITH_OVERHEAD(PAGE_SIZE) || (gfp_mask & (__GFP_DIRECT_RECLAIM | GFP_DMA))) { skb = __alloc_skb(len, gfp_mask, SKB_ALLOC_RX, NUMA_NO_NODE); if (!skb) @@ -510,6 +518,7 @@ goto skb_success; } + nc = this_cpu_ptr(&napi_alloc_cache); len += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); len = SKB_DATA_ALIGN(len); @@ -2016,6 +2025,12 @@ skb->csum = csum_block_sub(skb->csum, skb_checksum(skb, len, delta, 0), len); + } else if (skb->ip_summed == CHECKSUM_PARTIAL) { + int hdlen = (len > skb_headlen(skb)) ? skb_headlen(skb) : len; + int offset = skb_checksum_start_offset(skb) + skb->csum_offset; + + if (offset + sizeof(__sum16) > hdlen) + return -EINVAL; } return __pskb_trim(skb, len); } @@ -3274,7 +3289,19 @@ */ static int skb_prepare_for_shift(struct sk_buff *skb) { - return skb_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC); + int ret = 0; + + if (skb_cloned(skb)) { + /* Save and restore truesize: pskb_expand_head() may reallocate + * memory where ksize(kmalloc(S)) != ksize(kmalloc(S)), but we + * cannot change truesize at this point. + */ + unsigned int save_truesize = skb->truesize; + + ret = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); + skb->truesize = save_truesize; + } + return ret; } /** @@ -3646,7 +3673,8 @@ unsigned int delta_truesize = 0; unsigned int delta_len = 0; struct sk_buff *tail = NULL; - struct sk_buff *nskb; + struct sk_buff *nskb, *tmp; + int err; skb_push(skb, -skb_network_offset(skb) + offset); @@ -3656,11 +3684,28 @@ nskb = list_skb; list_skb = list_skb->next; + err = 0; + if (skb_shared(nskb)) { + tmp = skb_clone(nskb, GFP_ATOMIC); + if (tmp) { + consume_skb(nskb); + nskb = tmp; + err = skb_unclone(nskb, GFP_ATOMIC); + } else { + err = -ENOMEM; + } + } + if (!tail) skb->next = nskb; else tail->next = nskb; + if (unlikely(err)) { + nskb->next = list_skb; + goto err_linearize; + } + tail = nskb; delta_len += nskb->len; @@ -4554,7 +4599,7 @@ if (skb && (skb_next = skb_peek(q))) { icmp_next = is_icmp_err_skb(skb_next); if (icmp_next) - sk->sk_err = SKB_EXT_ERR(skb_next)->ee.ee_origin; + sk->sk_err = SKB_EXT_ERR(skb_next)->ee.ee_errno; } spin_unlock_irqrestore(&q->lock, flags); @@ -5419,8 +5464,8 @@ skb = skb_share_check(skb, GFP_ATOMIC); if (unlikely(!skb)) goto err_free; - - if (unlikely(!pskb_may_pull(skb, VLAN_HLEN))) + /* We may access the two bytes after vlan_hdr in vlan_set_encap_proto(). */ + if (unlikely(!pskb_may_pull(skb, VLAN_HLEN + sizeof(unsigned short)))) goto err_free; vhdr = (struct vlan_hdr *)skb->data; @@ -5621,7 +5666,7 @@ lse->label_stack_entry = mpls_lse; skb_postpush_rcsum(skb, lse, MPLS_HLEN); - if (ethernet) + if (ethernet && mac_len >= ETH_HLEN) skb_mod_eth_type(skb, eth_hdr(skb), mpls_proto); skb->protocol = mpls_proto; @@ -5661,7 +5706,7 @@ skb_reset_mac_header(skb); skb_set_network_header(skb, mac_len); - if (ethernet) { + if (ethernet && mac_len >= ETH_HLEN) { struct ethhdr *hdr; /* use mpls_hdr() to get ethertype to account for VLANs. */ @@ -5724,6 +5769,9 @@ if (unlikely(!eth_p_mpls(skb->protocol))) return -EINVAL; + if (!pskb_may_pull(skb, skb_network_offset(skb) + MPLS_HLEN)) + return -ENOMEM; + lse = be32_to_cpu(mpls_hdr(skb)->label_stack_entry); ttl = (lse & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT; if (!--ttl) @@ -5988,9 +6036,13 @@ if (skb_has_frag_list(skb)) skb_clone_fraglist(skb); - if (k == 0) { - /* split line is in frag list */ - pskb_carve_frag_list(skb, shinfo, off - pos, gfp_mask); + /* split line is in frag list */ + if (k == 0 && pskb_carve_frag_list(skb, shinfo, off - pos, gfp_mask)) { + /* skb_frag_unref() is not needed here as shinfo->nr_frags = 0. */ + if (skb_has_frag_list(skb)) + kfree_skb_list(skb_shinfo(skb)->frag_list); + kfree(data); + return -ENOMEM; } skb_release_data(skb); --- linux-5.8.0.orig/net/core/skmsg.c +++ linux-5.8.0/net/core/skmsg.c @@ -170,10 +170,12 @@ struct scatterlist *sge = sk_msg_elem(msg, i); u32 len = sge->length; - if (charge) - sk_mem_uncharge(sk, len); - if (!msg->skb) + /* When the skb owns the memory we free it from consume_skb path. */ + if (!msg->skb) { + if (charge) + sk_mem_uncharge(sk, len); put_page(sg_page(sge)); + } memset(sge, 0, sizeof(*sge)); return len; } @@ -397,28 +399,38 @@ } EXPORT_SYMBOL_GPL(sk_msg_memcopy_from_iter); -static int sk_psock_skb_ingress(struct sk_psock *psock, struct sk_buff *skb) +static struct sk_msg *sk_psock_create_ingress_msg(struct sock *sk, + struct sk_buff *skb) { - struct sock *sk = psock->sk; - int copied = 0, num_sge; struct sk_msg *msg; + if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf) + return NULL; + + if (!sk_rmem_schedule(sk, skb, skb->truesize)) + return NULL; + msg = kzalloc(sizeof(*msg), __GFP_NOWARN | GFP_ATOMIC); if (unlikely(!msg)) - return -EAGAIN; - if (!sk_rmem_schedule(sk, skb, skb->len)) { - kfree(msg); - return -EAGAIN; - } + return NULL; sk_msg_init(msg); - num_sge = skb_to_sgvec(skb, msg->sg.data, 0, skb->len); + return msg; +} + +static int sk_psock_skb_ingress_enqueue(struct sk_buff *skb, + struct sk_psock *psock, + struct sock *sk, + struct sk_msg *msg) +{ + int num_sge = skb_to_sgvec(skb, msg->sg.data, 0, skb->len); + int copied; + if (unlikely(num_sge < 0)) { kfree(msg); return num_sge; } - sk_mem_charge(sk, skb->len); copied = skb->len; msg->sg.start = 0; msg->sg.size = copied; @@ -430,6 +442,40 @@ return copied; } +static int sk_psock_skb_ingress(struct sk_psock *psock, struct sk_buff *skb) +{ + struct sock *sk = psock->sk; + struct sk_msg *msg; + + msg = sk_psock_create_ingress_msg(sk, skb); + if (!msg) + return -EAGAIN; + + /* This will transition ownership of the data from the socket where + * the BPF program was run initiating the redirect to the socket + * we will eventually receive this data on. The data will be released + * from skb_consume found in __tcp_bpf_recvmsg() after its been copied + * into user buffers. + */ + skb_set_owner_r(skb, sk); + return sk_psock_skb_ingress_enqueue(skb, psock, sk, msg); +} + +/* Puts an skb on the ingress queue of the socket already assigned to the + * skb. In this case we do not need to check memory limits or skb_set_owner_r + * because the skb is already accounted for here. + */ +static int sk_psock_skb_ingress_self(struct sk_psock *psock, struct sk_buff *skb) +{ + struct sk_msg *msg = kzalloc(sizeof(*msg), __GFP_NOWARN | GFP_ATOMIC); + struct sock *sk = psock->sk; + + if (unlikely(!msg)) + return -EAGAIN; + sk_msg_init(msg); + return sk_psock_skb_ingress_enqueue(skb, psock, sk, msg); +} + static int sk_psock_handle_skb(struct sk_psock *psock, struct sk_buff *skb, u32 off, u32 len, bool ingress) { @@ -662,15 +708,16 @@ { int ret; + /* strparser clones the skb before handing it to a upper layer, + * meaning we have the same data, but sk is NULL. We do want an + * sk pointer though when we run the BPF program. So we set it + * here and then NULL it to ensure we don't trigger a BUG_ON() + * in skb/sk operations later if kfree_skb is called with a + * valid skb->sk pointer and no destructor assigned. + */ skb->sk = psock->sk; bpf_compute_data_end_sk_skb(skb); ret = bpf_prog_run_pin_on_cpu(prog, skb); - /* strparser clones the skb before handing it to a upper layer, - * meaning skb_orphan has been called. We NULL sk on the way out - * to ensure we don't trigger a BUG_ON() in skb/sk operations - * later and because we are not charging the memory of this skb - * to any socket yet. - */ skb->sk = NULL; return ret; } @@ -749,7 +796,9 @@ static void sk_psock_verdict_apply(struct sk_psock *psock, struct sk_buff *skb, int verdict) { + struct tcp_skb_cb *tcp; struct sock *sk_other; + int err = -EIO; switch (verdict) { case __SK_PASS: @@ -758,16 +807,24 @@ !sk_psock_test_state(psock, SK_PSOCK_TX_ENABLED)) { goto out_free; } - if (atomic_read(&sk_other->sk_rmem_alloc) <= - sk_other->sk_rcvbuf) { - struct tcp_skb_cb *tcp = TCP_SKB_CB(skb); - tcp->bpf.flags |= BPF_F_INGRESS; + tcp = TCP_SKB_CB(skb); + tcp->bpf.flags |= BPF_F_INGRESS; + + /* If the queue is empty then we can submit directly + * into the msg queue. If its not empty we have to + * queue work otherwise we may get OOO data. Otherwise, + * if sk_psock_skb_ingress errors will be handled by + * retrying later from workqueue. + */ + if (skb_queue_empty(&psock->ingress_skb)) { + err = sk_psock_skb_ingress_self(psock, skb); + } + if (err < 0) { skb_queue_tail(&psock->ingress_skb, skb); schedule_work(&psock->work); - break; } - goto out_free; + break; case __SK_REDIRECT: sk_psock_skb_redirect(skb); break; @@ -795,7 +852,6 @@ } prog = READ_ONCE(psock->progs.skb_verdict); if (likely(prog)) { - skb_orphan(skb); tcp_skb_bpf_redirect_clear(skb); ret = sk_psock_bpf_run(psock, prog, skb); ret = sk_psock_map_verd(ret, tcp_skb_bpf_redirect_fetch(skb)); --- linux-5.8.0.orig/net/core/sock.c +++ linux-5.8.0/net/core/sock.c @@ -777,7 +777,6 @@ } else { sock_reset_flag(sk, SOCK_RCVTSTAMP); sock_reset_flag(sk, SOCK_RCVTSTAMPNS); - sock_reset_flag(sk, SOCK_TSTAMP_NEW); } } @@ -1007,8 +1006,6 @@ __sock_set_timestamps(sk, valbool, true, true); break; case SO_TIMESTAMPING_NEW: - sock_set_flag(sk, SOCK_TSTAMP_NEW); - /* fall through */ case SO_TIMESTAMPING_OLD: if (val & ~SOF_TIMESTAMPING_MASK) { ret = -EINVAL; @@ -1037,16 +1034,14 @@ } sk->sk_tsflags = val; + sock_valbool_flag(sk, SOCK_TSTAMP_NEW, optname == SO_TIMESTAMPING_NEW); + if (val & SOF_TIMESTAMPING_RX_SOFTWARE) sock_enable_timestamp(sk, SOCK_TIMESTAMPING_RX_SOFTWARE); - else { - if (optname == SO_TIMESTAMPING_NEW) - sock_reset_flag(sk, SOCK_TSTAMP_NEW); - + else sock_disable_timestamp(sk, (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)); - } break; case SO_RCVLOWAT: @@ -1189,7 +1184,7 @@ case SO_MAX_PACING_RATE: { - unsigned long ulval = (val == ~0U) ? ~0UL : val; + unsigned long ulval = (val == ~0U) ? ~0UL : (unsigned int)val; if (sizeof(ulval) != sizeof(val) && optlen >= sizeof(ulval) && @@ -2842,6 +2837,27 @@ } EXPORT_SYMBOL(sock_no_mmap); +/* + * When a file is received (via SCM_RIGHTS, etc), we must bump the + * various sock-based usage counts. + */ +void __receive_sock(struct file *file) +{ + struct socket *sock; + int error; + + /* + * The resulting value of "error" is ignored here since we only + * need to take action when the file is a socket and testing + * "sock" for NULL is sufficient. + */ + sock = sock_from_file(file, &error); + if (sock) { + sock_update_netprioidx(&sock->sk->sk_cgrp_data); + sock_update_classid(&sock->sk->sk_cgrp_data); + } +} + ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags) { ssize_t res; @@ -3443,6 +3459,16 @@ } #endif +static void tw_prot_cleanup(struct timewait_sock_ops *twsk_prot) +{ + if (!twsk_prot) + return; + kfree(twsk_prot->twsk_slab_name); + twsk_prot->twsk_slab_name = NULL; + kmem_cache_destroy(twsk_prot->twsk_slab); + twsk_prot->twsk_slab = NULL; +} + static void req_prot_cleanup(struct request_sock_ops *rsk_prot) { if (!rsk_prot) @@ -3513,7 +3539,7 @@ prot->slab_flags, NULL); if (prot->twsk_prot->twsk_slab == NULL) - goto out_free_timewait_sock_slab_name; + goto out_free_timewait_sock_slab; } } @@ -3521,15 +3547,15 @@ ret = assign_proto_idx(prot); if (ret) { mutex_unlock(&proto_list_mutex); - goto out_free_timewait_sock_slab_name; + goto out_free_timewait_sock_slab; } list_add(&prot->node, &proto_list); mutex_unlock(&proto_list_mutex); return ret; -out_free_timewait_sock_slab_name: +out_free_timewait_sock_slab: if (alloc_slab && prot->twsk_prot) - kfree(prot->twsk_prot->twsk_slab_name); + tw_prot_cleanup(prot->twsk_prot); out_free_request_sock_slab: if (alloc_slab) { req_prot_cleanup(prot->rsk_prot); @@ -3553,12 +3579,7 @@ prot->slab = NULL; req_prot_cleanup(prot->rsk_prot); - - if (prot->twsk_prot != NULL && prot->twsk_prot->twsk_slab != NULL) { - kmem_cache_destroy(prot->twsk_prot->twsk_slab); - kfree(prot->twsk_prot->twsk_slab_name); - prot->twsk_prot->twsk_slab = NULL; - } + tw_prot_cleanup(prot->twsk_prot); } EXPORT_SYMBOL(proto_unregister); --- linux-5.8.0.orig/net/core/sock_reuseport.c +++ linux-5.8.0/net/core/sock_reuseport.c @@ -293,7 +293,7 @@ i = j = reciprocal_scale(hash, socks); while (reuse->socks[i]->sk_state == TCP_ESTABLISHED) { i++; - if (i >= reuse->num_socks) + if (i >= socks) i = 0; if (i == j) goto out; --- linux-5.8.0.orig/net/dcb/dcbnl.c +++ linux-5.8.0/net/dcb/dcbnl.c @@ -1426,6 +1426,7 @@ { const struct dcbnl_rtnl_ops *ops = netdev->dcbnl_ops; struct nlattr *ieee[DCB_ATTR_IEEE_MAX + 1]; + int prio; int err; if (!ops) @@ -1475,6 +1476,13 @@ struct dcbnl_buffer *buffer = nla_data(ieee[DCB_ATTR_DCB_BUFFER]); + for (prio = 0; prio < ARRAY_SIZE(buffer->prio2buffer); prio++) { + if (buffer->prio2buffer[prio] >= DCBX_MAX_BUFFERS) { + err = -EINVAL; + goto err; + } + } + err = ops->dcbnl_setbuffer(netdev, buffer); if (err) goto err; @@ -1757,6 +1765,8 @@ fn = &reply_funcs[dcb->cmd]; if (!fn->cb) return -EOPNOTSUPP; + if (fn->type == RTM_SETDCB && !netlink_capable(skb, CAP_NET_ADMIN)) + return -EPERM; if (!tb[DCB_ATTR_IFNAME]) return -EINVAL; --- linux-5.8.0.orig/net/dccp/ipv6.c +++ linux-5.8.0/net/dccp/ipv6.c @@ -319,6 +319,11 @@ if (!ipv6_unicast_destination(skb)) return 0; /* discard, don't send a reset here */ + if (ipv6_addr_v4mapped(&ipv6_hdr(skb)->saddr)) { + __IP6_INC_STATS(sock_net(sk), NULL, IPSTATS_MIB_INHDRERRORS); + return 0; + } + if (dccp_bad_service_code(sk, service)) { dcb->dccpd_reset_code = DCCP_RESET_CODE_BAD_SERVICE_CODE; goto drop; --- linux-5.8.0.orig/net/dccp/minisocks.c +++ linux-5.8.0/net/dccp/minisocks.c @@ -93,6 +93,8 @@ newdp->dccps_role = DCCP_ROLE_SERVER; newdp->dccps_hc_rx_ackvec = NULL; + newdp->dccps_hc_rx_ccid = NULL; + newdp->dccps_hc_tx_ccid = NULL; newdp->dccps_service_list = NULL; newdp->dccps_service = dreq->dreq_service; newdp->dccps_timestamp_echo = dreq->dreq_timestamp_echo; --- linux-5.8.0.orig/net/dsa/dsa2.c +++ linux-5.8.0/net/dsa/dsa2.c @@ -419,20 +419,23 @@ ds->slave_mii_bus = devm_mdiobus_alloc(ds->dev); if (!ds->slave_mii_bus) { err = -ENOMEM; - goto unregister_notifier; + goto teardown; } dsa_slave_mii_bus_init(ds); err = mdiobus_register(ds->slave_mii_bus); if (err < 0) - goto unregister_notifier; + goto teardown; } ds->setup = true; return 0; +teardown: + if (ds->ops->teardown) + ds->ops->teardown(ds); unregister_notifier: dsa_switch_unregister_notifier(ds); unregister_devlink: --- linux-5.8.0.orig/net/dsa/master.c +++ linux-5.8.0/net/dsa/master.c @@ -331,8 +331,18 @@ int dsa_master_setup(struct net_device *dev, struct dsa_port *cpu_dp) { + struct dsa_switch *ds = cpu_dp->ds; + struct device_link *consumer_link; int ret; + /* The DSA master must use SET_NETDEV_DEV for this to work. */ + consumer_link = device_link_add(ds->dev, dev->dev.parent, + DL_FLAG_AUTOREMOVE_CONSUMER); + if (!consumer_link) + netdev_err(dev, + "Failed to create a device link to DSA switch %s\n", + dev_name(ds->dev)); + rtnl_lock(); ret = dev_set_mtu(dev, ETH_DATA_LEN + cpu_dp->tag_ops->overhead); rtnl_unlock(); --- linux-5.8.0.orig/net/dsa/slave.c +++ linux-5.8.0/net/dsa/slave.c @@ -1801,15 +1801,27 @@ dsa_slave_notify(slave_dev, DSA_PORT_REGISTER); - ret = register_netdev(slave_dev); + rtnl_lock(); + + ret = register_netdevice(slave_dev); if (ret) { netdev_err(master, "error %d registering interface %s\n", ret, slave_dev->name); + rtnl_unlock(); goto out_phy; } + ret = netdev_upper_dev_link(master, slave_dev, NULL); + + rtnl_unlock(); + + if (ret) + goto out_unregister; + return 0; +out_unregister: + unregister_netdev(slave_dev); out_phy: rtnl_lock(); phylink_disconnect_phy(p->dp->pl); @@ -1826,16 +1838,18 @@ void dsa_slave_destroy(struct net_device *slave_dev) { + struct net_device *master = dsa_slave_to_master(slave_dev); struct dsa_port *dp = dsa_slave_to_port(slave_dev); struct dsa_slave_priv *p = netdev_priv(slave_dev); netif_carrier_off(slave_dev); rtnl_lock(); + netdev_upper_dev_unlink(master, slave_dev); + unregister_netdevice(slave_dev); phylink_disconnect_phy(dp->pl); rtnl_unlock(); dsa_slave_notify(slave_dev, DSA_PORT_UNREGISTER); - unregister_netdev(slave_dev); phylink_destroy(dp->pl); gro_cells_destroy(&p->gcells); free_percpu(p->stats64); --- linux-5.8.0.orig/net/dsa/tag_ar9331.c +++ linux-5.8.0/net/dsa/tag_ar9331.c @@ -31,9 +31,6 @@ __le16 *phdr; u16 hdr; - if (skb_cow_head(skb, AR9331_HDR_LEN) < 0) - return NULL; - phdr = skb_push(skb, AR9331_HDR_LEN); hdr = FIELD_PREP(AR9331_HDR_VERSION_MASK, AR9331_HDR_VERSION); --- linux-5.8.0.orig/net/dsa/tag_brcm.c +++ linux-5.8.0/net/dsa/tag_brcm.c @@ -66,9 +66,6 @@ u16 queue = skb_get_queue_mapping(skb); u8 *brcm_tag; - if (skb_cow_head(skb, BRCM_TAG_LEN) < 0) - return NULL; - /* The Ethernet switch we are interfaced with needs packets to be at * least 64 bytes (including FCS) otherwise they will be discarded when * they enter the switch port logic. When Broadcom tags are enabled, we --- linux-5.8.0.orig/net/dsa/tag_dsa.c +++ linux-5.8.0/net/dsa/tag_dsa.c @@ -23,9 +23,6 @@ * the ethertype field for untagged packets. */ if (skb->protocol == htons(ETH_P_8021Q)) { - if (skb_cow_head(skb, 0) < 0) - return NULL; - /* * Construct tagged FROM_CPU DSA tag from 802.1q tag. */ @@ -41,8 +38,6 @@ dsa_header[2] &= ~0x10; } } else { - if (skb_cow_head(skb, DSA_HLEN) < 0) - return NULL; skb_push(skb, DSA_HLEN); memmove(skb->data, skb->data + DSA_HLEN, 2 * ETH_ALEN); --- linux-5.8.0.orig/net/dsa/tag_edsa.c +++ linux-5.8.0/net/dsa/tag_edsa.c @@ -35,8 +35,6 @@ * current ethertype field if the packet is untagged. */ if (skb->protocol == htons(ETH_P_8021Q)) { - if (skb_cow_head(skb, DSA_HLEN) < 0) - return NULL; skb_push(skb, DSA_HLEN); memmove(skb->data, skb->data + DSA_HLEN, 2 * ETH_ALEN); @@ -60,8 +58,6 @@ edsa_header[6] &= ~0x10; } } else { - if (skb_cow_head(skb, EDSA_HLEN) < 0) - return NULL; skb_push(skb, EDSA_HLEN); memmove(skb->data, skb->data + EDSA_HLEN, 2 * ETH_ALEN); --- linux-5.8.0.orig/net/dsa/tag_gswip.c +++ linux-5.8.0/net/dsa/tag_gswip.c @@ -60,13 +60,8 @@ struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); - int err; u8 *gswip_tag; - err = skb_cow_head(skb, GSWIP_TX_HEADER_LEN); - if (err) - return NULL; - skb_push(skb, GSWIP_TX_HEADER_LEN); gswip_tag = skb->data; --- linux-5.8.0.orig/net/dsa/tag_ksz.c +++ linux-5.8.0/net/dsa/tag_ksz.c @@ -14,46 +14,6 @@ #define KSZ_EGRESS_TAG_LEN 1 #define KSZ_INGRESS_TAG_LEN 1 -static struct sk_buff *ksz_common_xmit(struct sk_buff *skb, - struct net_device *dev, int len) -{ - struct sk_buff *nskb; - int padlen; - - padlen = (skb->len >= ETH_ZLEN) ? 0 : ETH_ZLEN - skb->len; - - if (skb_tailroom(skb) >= padlen + len) { - /* Let dsa_slave_xmit() free skb */ - if (__skb_put_padto(skb, skb->len + padlen, false)) - return NULL; - - nskb = skb; - } else { - nskb = alloc_skb(NET_IP_ALIGN + skb->len + - padlen + len, GFP_ATOMIC); - if (!nskb) - return NULL; - skb_reserve(nskb, NET_IP_ALIGN); - - skb_reset_mac_header(nskb); - skb_set_network_header(nskb, - skb_network_header(skb) - skb->head); - skb_set_transport_header(nskb, - skb_transport_header(skb) - skb->head); - skb_copy_and_csum_dev(skb, skb_put(nskb, skb->len)); - - /* Let skb_put_padto() free nskb, and let dsa_slave_xmit() free - * skb - */ - if (skb_put_padto(nskb, nskb->len + padlen)) - return NULL; - - consume_skb(skb); - } - - return nskb; -} - static struct sk_buff *ksz_common_rcv(struct sk_buff *skb, struct net_device *dev, unsigned int port, unsigned int len) @@ -90,23 +50,18 @@ static struct sk_buff *ksz8795_xmit(struct sk_buff *skb, struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); - struct sk_buff *nskb; u8 *tag; u8 *addr; - nskb = ksz_common_xmit(skb, dev, KSZ_INGRESS_TAG_LEN); - if (!nskb) - return NULL; - /* Tag encoding */ - tag = skb_put(nskb, KSZ_INGRESS_TAG_LEN); - addr = skb_mac_header(nskb); + tag = skb_put(skb, KSZ_INGRESS_TAG_LEN); + addr = skb_mac_header(skb); *tag = 1 << dp->index; if (is_link_local_ether_addr(addr)) *tag |= KSZ8795_TAIL_TAG_OVERRIDE; - return nskb; + return skb; } static struct sk_buff *ksz8795_rcv(struct sk_buff *skb, struct net_device *dev, @@ -155,17 +110,12 @@ struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); - struct sk_buff *nskb; u16 *tag; u8 *addr; - nskb = ksz_common_xmit(skb, dev, KSZ9477_INGRESS_TAG_LEN); - if (!nskb) - return NULL; - /* Tag encoding */ - tag = skb_put(nskb, KSZ9477_INGRESS_TAG_LEN); - addr = skb_mac_header(nskb); + tag = skb_put(skb, KSZ9477_INGRESS_TAG_LEN); + addr = skb_mac_header(skb); *tag = BIT(dp->index); @@ -174,7 +124,7 @@ *tag = cpu_to_be16(*tag); - return nskb; + return skb; } static struct sk_buff *ksz9477_rcv(struct sk_buff *skb, struct net_device *dev, @@ -210,24 +160,19 @@ struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); - struct sk_buff *nskb; u8 *addr; u8 *tag; - nskb = ksz_common_xmit(skb, dev, KSZ_INGRESS_TAG_LEN); - if (!nskb) - return NULL; - /* Tag encoding */ - tag = skb_put(nskb, KSZ_INGRESS_TAG_LEN); - addr = skb_mac_header(nskb); + tag = skb_put(skb, KSZ_INGRESS_TAG_LEN); + addr = skb_mac_header(skb); *tag = BIT(dp->index); if (is_link_local_ether_addr(addr)) *tag |= KSZ9893_TAIL_TAG_OVERRIDE; - return nskb; + return skb; } static const struct dsa_device_ops ksz9893_netdev_ops = { --- linux-5.8.0.orig/net/dsa/tag_lan9303.c +++ linux-5.8.0/net/dsa/tag_lan9303.c @@ -57,15 +57,6 @@ struct dsa_port *dp = dsa_slave_to_port(dev); u16 *lan9303_tag; - /* insert a special VLAN tag between the MAC addresses - * and the current ethertype field. - */ - if (skb_cow_head(skb, LAN9303_TAG_LEN) < 0) { - dev_dbg(&dev->dev, - "Cannot make room for the special tag. Dropping packet\n"); - return NULL; - } - /* provide 'LAN9303_TAG_LEN' bytes additional space */ skb_push(skb, LAN9303_TAG_LEN); --- linux-5.8.0.orig/net/dsa/tag_mtk.c +++ linux-5.8.0/net/dsa/tag_mtk.c @@ -13,6 +13,7 @@ #define MTK_HDR_LEN 4 #define MTK_HDR_XMIT_UNTAGGED 0 #define MTK_HDR_XMIT_TAGGED_TPID_8100 1 +#define MTK_HDR_XMIT_TAGGED_TPID_88A8 2 #define MTK_HDR_RECV_SOURCE_PORT_MASK GENMASK(2, 0) #define MTK_HDR_XMIT_DP_BIT_MASK GENMASK(5, 0) #define MTK_HDR_XMIT_SA_DIS BIT(6) @@ -21,8 +22,8 @@ struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); + u8 xmit_tpid; u8 *mtk_tag; - bool is_vlan_skb = true; unsigned char *dest = eth_hdr(skb)->h_dest; bool is_multicast_skb = is_multicast_ether_addr(dest) && !is_broadcast_ether_addr(dest); @@ -33,13 +34,17 @@ * the both special and VLAN tag at the same time and then look up VLAN * table with VID. */ - if (!skb_vlan_tagged(skb)) { - if (skb_cow_head(skb, MTK_HDR_LEN) < 0) - return NULL; - + switch (skb->protocol) { + case htons(ETH_P_8021Q): + xmit_tpid = MTK_HDR_XMIT_TAGGED_TPID_8100; + break; + case htons(ETH_P_8021AD): + xmit_tpid = MTK_HDR_XMIT_TAGGED_TPID_88A8; + break; + default: + xmit_tpid = MTK_HDR_XMIT_UNTAGGED; skb_push(skb, MTK_HDR_LEN); memmove(skb->data, skb->data + MTK_HDR_LEN, 2 * ETH_ALEN); - is_vlan_skb = false; } mtk_tag = skb->data + 2 * ETH_ALEN; @@ -47,8 +52,7 @@ /* Mark tag attribute on special tag insertion to notify hardware * whether that's a combined special tag with 802.1Q header. */ - mtk_tag[0] = is_vlan_skb ? MTK_HDR_XMIT_TAGGED_TPID_8100 : - MTK_HDR_XMIT_UNTAGGED; + mtk_tag[0] = xmit_tpid; mtk_tag[1] = (1 << dp->index) & MTK_HDR_XMIT_DP_BIT_MASK; /* Disable SA learning for multicast frames */ @@ -56,7 +60,7 @@ mtk_tag[1] |= MTK_HDR_XMIT_SA_DIS; /* Tag control information is kept for 802.1Q */ - if (!is_vlan_skb) { + if (xmit_tpid == MTK_HDR_XMIT_UNTAGGED) { mtk_tag[2] = 0; mtk_tag[3] = 0; } --- linux-5.8.0.orig/net/dsa/tag_ocelot.c +++ linux-5.8.0/net/dsa/tag_ocelot.c @@ -144,11 +144,6 @@ struct ocelot_port *ocelot_port = ocelot->ports[port]; u8 *injection; - if (unlikely(skb_cow_head(skb, OCELOT_TAG_LEN) < 0)) { - netdev_err(netdev, "Cannot make room for tag.\n"); - return NULL; - } - injection = skb_push(skb, OCELOT_TAG_LEN); memset(injection, 0, OCELOT_TAG_LEN); --- linux-5.8.0.orig/net/dsa/tag_qca.c +++ linux-5.8.0/net/dsa/tag_qca.c @@ -33,9 +33,6 @@ struct dsa_port *dp = dsa_slave_to_port(dev); u16 *phdr, hdr; - if (skb_cow_head(skb, QCA_HDR_LEN) < 0) - return NULL; - skb_push(skb, QCA_HDR_LEN); memmove(skb->data, skb->data + QCA_HDR_LEN, 2 * ETH_ALEN); --- linux-5.8.0.orig/net/dsa/tag_trailer.c +++ linux-5.8.0/net/dsa/tag_trailer.c @@ -13,42 +13,15 @@ static struct sk_buff *trailer_xmit(struct sk_buff *skb, struct net_device *dev) { struct dsa_port *dp = dsa_slave_to_port(dev); - struct sk_buff *nskb; - int padlen; u8 *trailer; - /* - * We have to make sure that the trailer ends up as the very - * last 4 bytes of the packet. This means that we have to pad - * the packet to the minimum ethernet frame size, if necessary, - * before adding the trailer. - */ - padlen = 0; - if (skb->len < 60) - padlen = 60 - skb->len; - - nskb = alloc_skb(NET_IP_ALIGN + skb->len + padlen + 4, GFP_ATOMIC); - if (!nskb) - return NULL; - skb_reserve(nskb, NET_IP_ALIGN); - - skb_reset_mac_header(nskb); - skb_set_network_header(nskb, skb_network_header(skb) - skb->head); - skb_set_transport_header(nskb, skb_transport_header(skb) - skb->head); - skb_copy_and_csum_dev(skb, skb_put(nskb, skb->len)); - consume_skb(skb); - - if (padlen) { - skb_put_zero(nskb, padlen); - } - - trailer = skb_put(nskb, 4); + trailer = skb_put(skb, 4); trailer[0] = 0x80; trailer[1] = 1 << dp->index; trailer[2] = 0x10; trailer[3] = 0x00; - return nskb; + return skb; } static struct sk_buff *trailer_rcv(struct sk_buff *skb, struct net_device *dev, --- linux-5.8.0.orig/net/ethtool/bitset.c +++ linux-5.8.0/net/ethtool/bitset.c @@ -630,6 +630,8 @@ return ret; change_bits = nla_get_u32(tb[ETHTOOL_A_BITSET_SIZE]); + if (change_bits > nbits) + change_bits = nbits; bitmap_from_arr32(val, nla_data(tb[ETHTOOL_A_BITSET_VALUE]), change_bits); if (change_bits < nbits) --- linux-5.8.0.orig/net/ethtool/channels.c +++ linux-5.8.0/net/ethtool/channels.c @@ -132,10 +132,9 @@ bool mod = false, mod_combined = false; struct ethtool_channels channels = {}; struct ethnl_req_info req_info = {}; - const struct nlattr *err_attr; + u32 err_attr, max_rx_in_use = 0; const struct ethtool_ops *ops; struct net_device *dev; - u32 max_rx_in_use = 0; int ret; ret = nlmsg_parse(info->nlhdr, GENL_HDRLEN, tb, @@ -178,34 +177,35 @@ /* ensure new channel counts are within limits */ if (channels.rx_count > channels.max_rx) - err_attr = tb[ETHTOOL_A_CHANNELS_RX_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_RX_COUNT; else if (channels.tx_count > channels.max_tx) - err_attr = tb[ETHTOOL_A_CHANNELS_TX_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_TX_COUNT; else if (channels.other_count > channels.max_other) - err_attr = tb[ETHTOOL_A_CHANNELS_OTHER_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_OTHER_COUNT; else if (channels.combined_count > channels.max_combined) - err_attr = tb[ETHTOOL_A_CHANNELS_COMBINED_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_COMBINED_COUNT; else - err_attr = NULL; + err_attr = 0; if (err_attr) { ret = -EINVAL; - NL_SET_ERR_MSG_ATTR(info->extack, err_attr, + NL_SET_ERR_MSG_ATTR(info->extack, tb[err_attr], "requested channel count exceeds maximum"); goto out_ops; } /* ensure there is at least one RX and one TX channel */ if (!channels.combined_count && !channels.rx_count) - err_attr = tb[ETHTOOL_A_CHANNELS_RX_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_RX_COUNT; else if (!channels.combined_count && !channels.tx_count) - err_attr = tb[ETHTOOL_A_CHANNELS_TX_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_TX_COUNT; else - err_attr = NULL; + err_attr = 0; if (err_attr) { if (mod_combined) - err_attr = tb[ETHTOOL_A_CHANNELS_COMBINED_COUNT]; + err_attr = ETHTOOL_A_CHANNELS_COMBINED_COUNT; ret = -EINVAL; - NL_SET_ERR_MSG_ATTR(info->extack, err_attr, "requested channel counts would result in no RX or TX channel being configured"); + NL_SET_ERR_MSG_ATTR(info->extack, tb[err_attr], + "requested channel counts would result in no RX or TX channel being configured"); goto out_ops; } @@ -215,8 +215,9 @@ if (netif_is_rxfh_configured(dev) && !ethtool_get_max_rxfh_channel(dev, &max_rx_in_use) && (channels.combined_count + channels.rx_count) <= max_rx_in_use) { + ret = -EINVAL; GENL_SET_ERR_MSG(info, "requested channel counts are too low for existing indirection table settings"); - return -EINVAL; + goto out_ops; } /* Disabling channels, query zero-copy AF_XDP sockets */ @@ -224,8 +225,9 @@ min(channels.rx_count, channels.tx_count); for (i = from_channel; i < old_total; i++) if (xdp_get_umem_from_qid(dev, i)) { + ret = -EINVAL; GENL_SET_ERR_MSG(info, "requested channel counts are too low for existing zerocopy AF_XDP sockets"); - return -EINVAL; + goto out_ops; } ret = dev->ethtool_ops->set_channels(dev, &channels); --- linux-5.8.0.orig/net/ethtool/features.c +++ linux-5.8.0/net/ethtool/features.c @@ -224,7 +224,9 @@ DECLARE_BITMAP(wanted_diff_mask, NETDEV_FEATURE_COUNT); DECLARE_BITMAP(active_diff_mask, NETDEV_FEATURE_COUNT); DECLARE_BITMAP(old_active, NETDEV_FEATURE_COUNT); + DECLARE_BITMAP(old_wanted, NETDEV_FEATURE_COUNT); DECLARE_BITMAP(new_active, NETDEV_FEATURE_COUNT); + DECLARE_BITMAP(new_wanted, NETDEV_FEATURE_COUNT); DECLARE_BITMAP(req_wanted, NETDEV_FEATURE_COUNT); DECLARE_BITMAP(req_mask, NETDEV_FEATURE_COUNT); struct nlattr *tb[ETHTOOL_A_FEATURES_MAX + 1]; @@ -250,6 +252,7 @@ rtnl_lock(); ethnl_features_to_bitmap(old_active, dev->features); + ethnl_features_to_bitmap(old_wanted, dev->wanted_features); ret = ethnl_parse_bitset(req_wanted, req_mask, NETDEV_FEATURE_COUNT, tb[ETHTOOL_A_FEATURES_WANTED], netdev_features_strings, info->extack); @@ -261,17 +264,15 @@ goto out_rtnl; } - /* set req_wanted bits not in req_mask from old_active */ + /* set req_wanted bits not in req_mask from old_wanted */ bitmap_and(req_wanted, req_wanted, req_mask, NETDEV_FEATURE_COUNT); - bitmap_andnot(new_active, old_active, req_mask, NETDEV_FEATURE_COUNT); - bitmap_or(req_wanted, new_active, req_wanted, NETDEV_FEATURE_COUNT); - if (bitmap_equal(req_wanted, old_active, NETDEV_FEATURE_COUNT)) { - ret = 0; - goto out_rtnl; + bitmap_andnot(new_wanted, old_wanted, req_mask, NETDEV_FEATURE_COUNT); + bitmap_or(req_wanted, new_wanted, req_wanted, NETDEV_FEATURE_COUNT); + if (!bitmap_equal(req_wanted, old_wanted, NETDEV_FEATURE_COUNT)) { + dev->wanted_features &= ~dev->hw_features; + dev->wanted_features |= ethnl_bitmap_to_features(req_wanted) & dev->hw_features; + __netdev_update_features(dev); } - - dev->wanted_features = ethnl_bitmap_to_features(req_wanted); - __netdev_update_features(dev); ethnl_features_to_bitmap(new_active, dev->features); mod = !bitmap_equal(old_active, new_active, NETDEV_FEATURE_COUNT); @@ -295,7 +296,7 @@ active_diff_mask, compact); } if (mod) - ethtool_notify(dev, ETHTOOL_MSG_FEATURES_NTF, NULL); + netdev_features_change(dev); out_rtnl: rtnl_unlock(); --- linux-5.8.0.orig/net/ethtool/strset.c +++ linux-5.8.0/net/ethtool/strset.c @@ -181,7 +181,7 @@ ret = strset_get_id(attr, &id, extack); if (ret < 0) return ret; - if (ret >= ETH_SS_COUNT) { + if (id >= ETH_SS_COUNT) { NL_SET_ERR_MSG_ATTR(extack, attr, "unknown string set id"); return -EOPNOTSUPP; --- linux-5.8.0.orig/net/hsr/hsr_framereg.c +++ linux-5.8.0/net/hsr/hsr_framereg.c @@ -149,8 +149,10 @@ * as initialization. (0 could trigger an spurious ring error warning). */ now = jiffies; - for (i = 0; i < HSR_PT_PORTS; i++) + for (i = 0; i < HSR_PT_PORTS; i++) { new_node->time_in[i] = now; + new_node->time_out[i] = now; + } for (i = 0; i < HSR_PT_PORTS; i++) new_node->seq_out[i] = seq_out; @@ -354,9 +356,12 @@ int hsr_register_frame_out(struct hsr_port *port, struct hsr_node *node, u16 sequence_nr) { - if (seq_nr_before_or_eq(sequence_nr, node->seq_out[port->type])) + if (seq_nr_before_or_eq(sequence_nr, node->seq_out[port->type]) && + time_is_after_jiffies(node->time_out[port->type] + + msecs_to_jiffies(HSR_ENTRY_FORGET_TIME))) return 1; + node->time_out[port->type] = jiffies; node->seq_out[port->type] = sequence_nr; return 0; } --- linux-5.8.0.orig/net/hsr/hsr_framereg.h +++ linux-5.8.0/net/hsr/hsr_framereg.h @@ -55,6 +55,7 @@ enum hsr_port_type addr_B_port; unsigned long time_in[HSR_PT_PORTS]; bool time_in_stale[HSR_PT_PORTS]; + unsigned long time_out[HSR_PT_PORTS]; u16 seq_out[HSR_PT_PORTS]; struct rcu_head rcu_head; }; --- linux-5.8.0.orig/net/hsr/hsr_main.h +++ linux-5.8.0/net/hsr/hsr_main.h @@ -18,6 +18,7 @@ #define HSR_LIFE_CHECK_INTERVAL 2000 /* ms */ #define HSR_NODE_FORGET_TIME 60000 /* ms */ #define HSR_ANNOUNCE_INTERVAL 100 /* ms */ +#define HSR_ENTRY_FORGET_TIME 400 /* ms */ /* By how much may slave1 and slave2 timestamps of latest received frame from * each node differ before we notify of communication problem? --- linux-5.8.0.orig/net/ipv4/arp.c +++ linux-5.8.0/net/ipv4/arp.c @@ -125,6 +125,7 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb); static void arp_error_report(struct neighbour *neigh, struct sk_buff *skb); static void parp_redo(struct sk_buff *skb); +static int arp_is_multicast(const void *pkey); static const struct neigh_ops arp_generic_ops = { .family = AF_INET, @@ -156,6 +157,7 @@ .key_eq = arp_key_eq, .constructor = arp_constructor, .proxy_redo = parp_redo, + .is_multicast = arp_is_multicast, .id = "arp_cache", .parms = { .tbl = &arp_tbl, @@ -928,6 +930,10 @@ arp_process(dev_net(skb->dev), NULL, skb); } +static int arp_is_multicast(const void *pkey) +{ + return ipv4_is_multicast(*((__be32 *)pkey)); +} /* * Receive an arp request from the device layer. --- linux-5.8.0.orig/net/ipv4/cipso_ipv4.c +++ linux-5.8.0/net/ipv4/cipso_ipv4.c @@ -106,15 +106,17 @@ /* Base length of the local tag (non-standard tag). * Tag definition (may change between kernel versions) * - * 0 8 16 24 32 - * +----------+----------+----------+----------+ - * | 10000000 | 00000110 | 32-bit secid value | - * +----------+----------+----------+----------+ - * | in (host byte order)| - * +----------+----------+ - * + * 0 8 16 16 + sizeof(struct lsmblob) + * +----------+----------+---------------------+ + * | 10000000 | 00000110 | LSM blob data | + * +----------+----------+---------------------+ + * + * All secid and flag fields are in host byte order. + * The lsmblob structure size varies depending on which + * Linux security modules are built in the kernel. + * The data is opaque. */ -#define CIPSO_V4_TAG_LOC_BLEN 6 +#define CIPSO_V4_TAG_LOC_BLEN (2 + sizeof(struct lsmblob)) /* * Helper Functions @@ -519,16 +521,10 @@ ret_val = -ENOENT; goto doi_remove_return; } - if (!refcount_dec_and_test(&doi_def->refcount)) { - spin_unlock(&cipso_v4_doi_list_lock); - ret_val = -EBUSY; - goto doi_remove_return; - } list_del_rcu(&doi_def->list); spin_unlock(&cipso_v4_doi_list_lock); - cipso_v4_cache_invalidate(); - call_rcu(&doi_def->rcu, cipso_v4_doi_free_rcu); + cipso_v4_doi_putdef(doi_def); ret_val = 0; doi_remove_return: @@ -585,9 +581,6 @@ if (!refcount_dec_and_test(&doi_def->refcount)) return; - spin_lock(&cipso_v4_doi_list_lock); - list_del_rcu(&doi_def->list); - spin_unlock(&cipso_v4_doi_list_lock); cipso_v4_cache_invalidate(); call_rcu(&doi_def->rcu, cipso_v4_doi_free_rcu); @@ -1469,7 +1462,12 @@ buffer[0] = CIPSO_V4_TAG_LOCAL; buffer[1] = CIPSO_V4_TAG_LOC_BLEN; - *(u32 *)&buffer[2] = secattr->attr.secid; + /* Ensure that there is sufficient space in the CIPSO header + * for the LSM data. This should never become an issue. + * The check is made from an abundance of caution. */ + BUILD_BUG_ON(CIPSO_V4_TAG_LOC_BLEN > CIPSO_V4_OPT_LEN_MAX); + memcpy(&buffer[2], &secattr->attr.lsmblob, + sizeof(secattr->attr.lsmblob)); return CIPSO_V4_TAG_LOC_BLEN; } @@ -1489,7 +1487,7 @@ const unsigned char *tag, struct netlbl_lsm_secattr *secattr) { - secattr->attr.secid = *(u32 *)&tag[2]; + memcpy(&secattr->attr.lsmblob, &tag[2], sizeof(secattr->attr.lsmblob)); secattr->flags |= NETLBL_SECATTR_SECID; return 0; --- linux-5.8.0.orig/net/ipv4/esp4.c +++ linux-5.8.0/net/ipv4/esp4.c @@ -443,7 +443,6 @@ int esp_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp) { u8 *tail; - u8 *vaddr; int nfrags; int esph_offset; struct page *page; @@ -485,14 +484,10 @@ page = pfrag->page; get_page(page); - vaddr = kmap_atomic(page); - - tail = vaddr + pfrag->offset; + tail = page_address(page) + pfrag->offset; esp_output_fill_trailer(tail, esp->tfclen, esp->plen, esp->proto); - kunmap_atomic(vaddr); - nfrags = skb_shinfo(skb)->nr_frags; __skb_fill_page_desc(skb, nfrags, page, pfrag->offset, --- linux-5.8.0.orig/net/ipv4/fib_frontend.c +++ linux-5.8.0/net/ipv4/fib_frontend.c @@ -292,7 +292,7 @@ .flowi4_iif = LOOPBACK_IFINDEX, .flowi4_oif = l3mdev_master_ifindex_rcu(dev), .daddr = ip_hdr(skb)->saddr, - .flowi4_tos = RT_TOS(ip_hdr(skb)->tos), + .flowi4_tos = ip_hdr(skb)->tos & IPTOS_RT_MASK, .flowi4_scope = scope, .flowi4_mark = vmark ? skb->mark : 0, }; @@ -362,6 +362,7 @@ fl4.flowi4_tun_key.tun_id = 0; fl4.flowi4_flags = 0; fl4.flowi4_uid = sock_net_uid(net, NULL); + fl4.flowi4_multipath_hash = 0; no_addr = idev->ifa_list == NULL; @@ -695,7 +696,7 @@ cfg->fc_gw4 = *((__be32 *)via->rtvia_addr); break; case AF_INET6: -#ifdef CONFIG_IPV6 +#if IS_ENABLED(CONFIG_IPV6) if (alen != sizeof(struct in6_addr)) { NL_SET_ERR_MSG(extack, "Invalid IPv6 address in RTA_VIA"); return -EINVAL; @@ -824,7 +825,7 @@ if (has_gw && has_via) { NL_SET_ERR_MSG(extack, "Nexthop configuration can not contain both GATEWAY and VIA"); - goto errout; + return -EINVAL; } return 0; --- linux-5.8.0.orig/net/ipv4/fib_trie.c +++ linux-5.8.0/net/ipv4/fib_trie.c @@ -2121,7 +2121,8 @@ struct hlist_head *head = &net->ipv4.fib_table_hash[h]; struct fib_table *tb; - hlist_for_each_entry_rcu(tb, head, tb_hlist) + hlist_for_each_entry_rcu(tb, head, tb_hlist, + lockdep_rtnl_is_held()) __fib_info_notify_update(net, tb, info); } } --- linux-5.8.0.orig/net/ipv4/gre_demux.c +++ linux-5.8.0/net/ipv4/gre_demux.c @@ -128,7 +128,7 @@ * to 0 and sets the configured key in the * inner erspan header field */ - if (greh->protocol == htons(ETH_P_ERSPAN) || + if ((greh->protocol == htons(ETH_P_ERSPAN) && hdr_len != 4) || greh->protocol == htons(ETH_P_ERSPAN2)) { struct erspan_base_hdr *ershdr; --- linux-5.8.0.orig/net/ipv4/icmp.c +++ linux-5.8.0/net/ipv4/icmp.c @@ -239,7 +239,7 @@ /** * icmp_global_allow - Are we allowed to send one more ICMP message ? * - * Uses a token bucket to limit our ICMP messages to sysctl_icmp_msgs_per_sec. + * Uses a token bucket to limit our ICMP messages to ~sysctl_icmp_msgs_per_sec. * Returns false if we reached the limit and can not send another packet. * Note: called with BH disabled */ @@ -267,7 +267,10 @@ } credit = min_t(u32, icmp_global.credit + incr, sysctl_icmp_msgs_burst); if (credit) { - credit--; + /* We want to use a credit of one in average, but need to randomize + * it for security reasons. + */ + credit = max_t(int, credit - prandom_u32_max(3), 0); rc = true; } WRITE_ONCE(icmp_global.credit, credit); --- linux-5.8.0.orig/net/ipv4/inet_connection_sock.c +++ linux-5.8.0/net/ipv4/inet_connection_sock.c @@ -296,6 +296,57 @@ ipv6_only_sock(sk), true, false); } +void inet_csk_update_fastreuse(struct inet_bind_bucket *tb, + struct sock *sk) +{ + kuid_t uid = sock_i_uid(sk); + bool reuse = sk->sk_reuse && sk->sk_state != TCP_LISTEN; + + if (hlist_empty(&tb->owners)) { + tb->fastreuse = reuse; + if (sk->sk_reuseport) { + tb->fastreuseport = FASTREUSEPORT_ANY; + tb->fastuid = uid; + tb->fast_rcv_saddr = sk->sk_rcv_saddr; + tb->fast_ipv6_only = ipv6_only_sock(sk); + tb->fast_sk_family = sk->sk_family; +#if IS_ENABLED(CONFIG_IPV6) + tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; +#endif + } else { + tb->fastreuseport = 0; + } + } else { + if (!reuse) + tb->fastreuse = 0; + if (sk->sk_reuseport) { + /* We didn't match or we don't have fastreuseport set on + * the tb, but we have sk_reuseport set on this socket + * and we know that there are no bind conflicts with + * this socket in this tb, so reset our tb's reuseport + * settings so that any subsequent sockets that match + * our current socket will be put on the fast path. + * + * If we reset we need to set FASTREUSEPORT_STRICT so we + * do extra checking for all subsequent sk_reuseport + * socks. + */ + if (!sk_reuseport_match(tb, sk)) { + tb->fastreuseport = FASTREUSEPORT_STRICT; + tb->fastuid = uid; + tb->fast_rcv_saddr = sk->sk_rcv_saddr; + tb->fast_ipv6_only = ipv6_only_sock(sk); + tb->fast_sk_family = sk->sk_family; +#if IS_ENABLED(CONFIG_IPV6) + tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; +#endif + } + } else { + tb->fastreuseport = 0; + } + } +} + /* Obtain a reference to a local port for the given sock, * if snum is zero it means select any available local port. * We try to allocate an odd port (and leave even ports for connect()) @@ -308,7 +359,6 @@ struct inet_bind_hashbucket *head; struct net *net = sock_net(sk); struct inet_bind_bucket *tb = NULL; - kuid_t uid = sock_i_uid(sk); int l3mdev; l3mdev = inet_sk_bound_l3mdev(sk); @@ -345,49 +395,8 @@ goto fail_unlock; } success: - if (hlist_empty(&tb->owners)) { - tb->fastreuse = reuse; - if (sk->sk_reuseport) { - tb->fastreuseport = FASTREUSEPORT_ANY; - tb->fastuid = uid; - tb->fast_rcv_saddr = sk->sk_rcv_saddr; - tb->fast_ipv6_only = ipv6_only_sock(sk); - tb->fast_sk_family = sk->sk_family; -#if IS_ENABLED(CONFIG_IPV6) - tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; -#endif - } else { - tb->fastreuseport = 0; - } - } else { - if (!reuse) - tb->fastreuse = 0; - if (sk->sk_reuseport) { - /* We didn't match or we don't have fastreuseport set on - * the tb, but we have sk_reuseport set on this socket - * and we know that there are no bind conflicts with - * this socket in this tb, so reset our tb's reuseport - * settings so that any subsequent sockets that match - * our current socket will be put on the fast path. - * - * If we reset we need to set FASTREUSEPORT_STRICT so we - * do extra checking for all subsequent sk_reuseport - * socks. - */ - if (!sk_reuseport_match(tb, sk)) { - tb->fastreuseport = FASTREUSEPORT_STRICT; - tb->fastuid = uid; - tb->fast_rcv_saddr = sk->sk_rcv_saddr; - tb->fast_ipv6_only = ipv6_only_sock(sk); - tb->fast_sk_family = sk->sk_family; -#if IS_ENABLED(CONFIG_IPV6) - tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; -#endif - } - } else { - tb->fastreuseport = 0; - } - } + inet_csk_update_fastreuse(tb, sk); + if (!inet_csk(sk)->icsk_bind_hash) inet_bind_hash(sk, tb, port); WARN_ON(inet_csk(sk)->icsk_bind_hash != tb); @@ -697,12 +706,15 @@ return found; } -void inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req) +bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req) { - if (reqsk_queue_unlink(req)) { + bool unlinked = reqsk_queue_unlink(req); + + if (unlinked) { reqsk_queue_removed(&inet_csk(sk)->icsk_accept_queue, req); reqsk_put(req); } + return unlinked; } EXPORT_SYMBOL(inet_csk_reqsk_queue_drop); @@ -849,6 +861,7 @@ newicsk->icsk_retransmits = 0; newicsk->icsk_backoff = 0; newicsk->icsk_probes_out = 0; + newicsk->icsk_probes_tstamp = 0; /* Deinitialize accept_queue to trap illegal accesses. */ memset(&newicsk->icsk_accept_queue, 0, sizeof(newicsk->icsk_accept_queue)); --- linux-5.8.0.orig/net/ipv4/inet_diag.c +++ linux-5.8.0/net/ipv4/inet_diag.c @@ -431,8 +431,10 @@ r->idiag_inode = 0; if (net_admin && nla_put_u32(skb, INET_DIAG_MARK, - inet_rsk(reqsk)->ir_mark)) + inet_rsk(reqsk)->ir_mark)) { + nlmsg_cancel(skb, nlh); return -EMSGSIZE; + } nlmsg_end(skb, nlh); return 0; --- linux-5.8.0.orig/net/ipv4/inet_hashtables.c +++ linux-5.8.0/net/ipv4/inet_hashtables.c @@ -163,6 +163,7 @@ return -ENOMEM; } } + inet_csk_update_fastreuse(tb, child); } inet_bind_hash(child, tb, port); spin_unlock(&head->lock); --- linux-5.8.0.orig/net/ipv4/ip_gre.c +++ linux-5.8.0/net/ipv4/ip_gre.c @@ -625,9 +625,7 @@ } if (dev->header_ops) { - /* Need space for new headers */ - if (skb_cow_head(skb, dev->needed_headroom - - (tunnel->hlen + sizeof(struct iphdr)))) + if (skb_cow_head(skb, 0)) goto free_skb; tnl_params = (const struct iphdr *)skb->data; @@ -748,7 +746,11 @@ len = tunnel->tun_hlen - len; tunnel->hlen = tunnel->hlen + len; - dev->needed_headroom = dev->needed_headroom + len; + if (dev->header_ops) + dev->hard_header_len += len; + else + dev->needed_headroom += len; + if (set_mtu) dev->mtu = max_t(int, dev->mtu - len, 68); @@ -944,6 +946,7 @@ tunnel->parms.iph.protocol = IPPROTO_GRE; tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen; + dev->needed_headroom = tunnel->hlen + sizeof(tunnel->parms.iph); dev->features |= GRE_FEATURES; dev->hw_features |= GRE_FEATURES; @@ -987,10 +990,14 @@ return -EINVAL; dev->flags = IFF_BROADCAST; dev->header_ops = &ipgre_header_ops; + dev->hard_header_len = tunnel->hlen + sizeof(*iph); + dev->needed_headroom = 0; } #endif } else if (!tunnel->collect_md) { dev->header_ops = &ipgre_header_ops; + dev->hard_header_len = tunnel->hlen + sizeof(*iph); + dev->needed_headroom = 0; } return ip_tunnel_init(dev); --- linux-5.8.0.orig/net/ipv4/ip_output.c +++ linux-5.8.0/net/ipv4/ip_output.c @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include @@ -300,7 +301,7 @@ if (skb_is_gso(skb)) return ip_finish_output_gso(net, sk, skb, mtu); - if (skb->len > mtu || (IPCB(skb)->flags & IPSKB_FRAG_PMTU)) + if (skb->len > mtu || IPCB(skb)->frag_max_size) return ip_fragment(net, sk, skb, mtu, ip_finish_output2); return ip_finish_output2(net, sk, skb); @@ -1697,7 +1698,7 @@ if (IS_ERR(rt)) return; - inet_sk(sk)->tos = arg->tos; + inet_sk(sk)->tos = arg->tos & ~INET_ECN_MASK; sk->sk_protocol = ip_hdr(skb)->protocol; sk->sk_bound_dev_if = arg->bound_dev_if; --- linux-5.8.0.orig/net/ipv4/ip_sockglue.c +++ linux-5.8.0/net/ipv4/ip_sockglue.c @@ -130,20 +130,20 @@ static void ip_cmsg_recv_security(struct msghdr *msg, struct sk_buff *skb) { - char *secdata; - u32 seclen, secid; + struct lsmcontext context; + struct lsmblob lb; int err; - err = security_socket_getpeersec_dgram(NULL, skb, &secid); + err = security_socket_getpeersec_dgram(NULL, skb, &lb); if (err) return; - err = security_secid_to_secctx(secid, &secdata, &seclen); + err = security_secid_to_secctx(&lb, &context, LSMBLOB_DISPLAY); if (err) return; - put_cmsg(msg, SOL_IP, SCM_SECURITY, seclen, secdata); - security_release_secctx(secdata, seclen); + put_cmsg(msg, SOL_IP, SCM_SECURITY, context.len, context.context); + security_release_secctx(&context); } static void ip_cmsg_recv_dstaddr(struct msghdr *msg, struct sk_buff *skb) --- linux-5.8.0.orig/net/ipv4/ip_tunnel.c +++ linux-5.8.0/net/ipv4/ip_tunnel.c @@ -317,7 +317,7 @@ } dev->needed_headroom = t_hlen + hlen; - mtu -= (dev->hard_header_len + t_hlen); + mtu -= t_hlen; if (mtu < IPV4_MIN_MTU) mtu = IPV4_MIN_MTU; @@ -347,7 +347,7 @@ nt = netdev_priv(dev); t_hlen = nt->hlen + sizeof(struct iphdr); dev->min_mtu = ETH_MIN_MTU; - dev->max_mtu = IP_MAX_MTU - dev->hard_header_len - t_hlen; + dev->max_mtu = IP_MAX_MTU - t_hlen; ip_tunnel_add(itn, nt); return nt; @@ -494,11 +494,10 @@ int mtu; tunnel_hlen = md ? tunnel_hlen : tunnel->hlen; - pkt_size = skb->len - tunnel_hlen - dev->hard_header_len; + pkt_size = skb->len - tunnel_hlen; if (df) - mtu = dst_mtu(&rt->dst) - dev->hard_header_len - - sizeof(struct iphdr) - tunnel_hlen; + mtu = dst_mtu(&rt->dst) - (sizeof(struct iphdr) + tunnel_hlen); else mtu = skb_valid_dst(skb) ? dst_mtu(skb_dst(skb)) : dev->mtu; @@ -509,8 +508,7 @@ if (!skb_is_gso(skb) && (inner_iph->frag_off & htons(IP_DF)) && mtu < pkt_size) { - memset(IPCB(skb), 0, sizeof(*IPCB(skb))); - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, htonl(mtu)); return -E2BIG; } } @@ -534,7 +532,7 @@ if (!skb_is_gso(skb) && mtu >= IPV6_MIN_MTU && mtu < pkt_size) { - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); return -E2BIG; } } @@ -614,9 +612,6 @@ ttl = ip4_dst_hoplimit(&rt->dst); } - if (!df && skb->protocol == htons(ETH_P_IP)) - df = inner_iph->frag_off & htons(IP_DF); - headroom += LL_RESERVED_SPACE(rt->dst.dev) + rt->dst.header_len; if (headroom > dev->needed_headroom) dev->needed_headroom = headroom; @@ -768,8 +763,11 @@ goto tx_error; } - if (tnl_update_pmtu(dev, skb, rt, tnl_params->frag_off, inner_iph, - 0, 0, false)) { + df = tnl_params->frag_off; + if (skb->protocol == htons(ETH_P_IP) && !tunnel->ignore_df) + df |= (inner_iph->frag_off & htons(IP_DF)); + + if (tnl_update_pmtu(dev, skb, rt, df, inner_iph, 0, 0, false)) { ip_rt_put(rt); goto tx_error; } @@ -797,10 +795,6 @@ ttl = ip4_dst_hoplimit(&rt->dst); } - df = tnl_params->frag_off; - if (skb->protocol == htons(ETH_P_IP) && !tunnel->ignore_df) - df |= (inner_iph->frag_off&htons(IP_DF)); - max_headroom = LL_RESERVED_SPACE(rt->dst.dev) + sizeof(struct iphdr) + rt->dst.header_len + ip_encap_hlen(&tunnel->encap); if (max_headroom > dev->needed_headroom) @@ -982,7 +976,7 @@ { struct ip_tunnel *tunnel = netdev_priv(dev); int t_hlen = tunnel->hlen + sizeof(struct iphdr); - int max_mtu = IP_MAX_MTU - dev->hard_header_len - t_hlen; + int max_mtu = IP_MAX_MTU - t_hlen; if (new_mtu < ETH_MIN_MTU) return -EINVAL; @@ -1159,10 +1153,9 @@ mtu = ip_tunnel_bind_dev(dev); if (tb[IFLA_MTU]) { - unsigned int max = IP_MAX_MTU - dev->hard_header_len - nt->hlen; + unsigned int max = IP_MAX_MTU - (nt->hlen + sizeof(struct iphdr)); - mtu = clamp(dev->mtu, (unsigned int)ETH_MIN_MTU, - (unsigned int)(max - sizeof(struct iphdr))); + mtu = clamp(dev->mtu, (unsigned int)ETH_MIN_MTU, max); } err = dev_set_mtu(dev, mtu); @@ -1188,7 +1181,7 @@ struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); if (dev == itn->fb_tunnel_dev) - return -EINVAL; + return fan_has_map(&tunnel->fan) ? 0 : -EINVAL; t = ip_tunnel_find(itn, p, dev->type); --- linux-5.8.0.orig/net/ipv4/ip_vti.c +++ linux-5.8.0/net/ipv4/ip_vti.c @@ -268,13 +268,13 @@ if (skb->len > mtu) { skb_dst_update_pmtu_no_confirm(skb, mtu); if (skb->protocol == htons(ETH_P_IP)) { - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, + htonl(mtu)); } else { if (mtu < IPV6_MIN_MTU) mtu = IPV6_MIN_MTU; - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); } dst_release(dst); --- linux-5.8.0.orig/net/ipv4/ipconfig.c +++ linux-5.8.0/net/ipv4/ipconfig.c @@ -1441,7 +1441,7 @@ int retries = CONF_OPEN_RETRIES; #endif int err; - unsigned int i; + unsigned int i, count; /* Initialise all name servers and NTP servers to NONE (but only if the * "ip=" or "nfsaddrs=" kernel command line parameters weren't decoded, @@ -1575,7 +1575,7 @@ if (ic_dev_mtu) pr_cont(", mtu=%d", ic_dev_mtu); /* Name servers (if any): */ - for (i = 0; i < CONF_NAMESERVERS_MAX; i++) { + for (i = 0, count = 0; i < CONF_NAMESERVERS_MAX; i++) { if (ic_nameservers[i] != NONE) { if (i == 0) pr_info(" nameserver%u=%pI4", @@ -1583,12 +1583,14 @@ else pr_cont(", nameserver%u=%pI4", i, &ic_nameservers[i]); + + count++; } - if (i + 1 == CONF_NAMESERVERS_MAX) + if ((i + 1 == CONF_NAMESERVERS_MAX) && count > 0) pr_cont("\n"); } /* NTP servers (if any): */ - for (i = 0; i < CONF_NTP_SERVERS_MAX; i++) { + for (i = 0, count = 0; i < CONF_NTP_SERVERS_MAX; i++) { if (ic_ntp_servers[i] != NONE) { if (i == 0) pr_info(" ntpserver%u=%pI4", @@ -1596,8 +1598,10 @@ else pr_cont(", ntpserver%u=%pI4", i, &ic_ntp_servers[i]); + + count++; } - if (i + 1 == CONF_NTP_SERVERS_MAX) + if ((i + 1 == CONF_NTP_SERVERS_MAX) && count > 0) pr_cont("\n"); } #endif /* !SILENT */ --- linux-5.8.0.orig/net/ipv4/ipip.c +++ linux-5.8.0/net/ipv4/ipip.c @@ -101,6 +101,8 @@ #include #include #include +#include +#include #include #include @@ -264,6 +266,147 @@ } #endif +static struct ip_fan_map *ipip_fan_find_map(struct ip_tunnel *t, __be32 daddr) +{ + struct ip_fan_map *fan_map; + + rcu_read_lock(); + list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { + if (fan_map->overlay == + (daddr & inet_make_mask(fan_map->overlay_prefix))) { + rcu_read_unlock(); + return fan_map; + } + } + rcu_read_unlock(); + + return NULL; +} + +/* Determine fan tunnel endpoint to send packet to, based on the inner IP + * address. + * + * Given a /8 overlay and /16 underlay, for an overlay (inner) address + * Y.A.B.C, the transformation is F.G.A.B, where "F" and "G" are the first + * two octets of the underlay network (the network portion of a /16), "A" + * and "B" are the low order two octets of the underlay network host (the + * host portion of a /16), and "Y" is a configured first octet of the + * overlay network. + * + * E.g., underlay host 10.88.3.4/16 with an overlay of 99.0.0.0/8 would + * host overlay subnet 99.3.4.0/24. An overlay network datagram from + * 99.3.4.5 to 99.6.7.8, would be directed to underlay host 10.88.6.7, + * which hosts overlay network subnet 99.6.7.0/24. This transformation is + * described in detail further below. + * + * Using netmasks for the overlay and underlay other than /8 and /16, as + * shown above, can yield larger (or smaller) overlay subnets, with the + * trade-off of allowing fewer (or more) underlay hosts to participate. + * + * The size of each overlay network subnet is defined by the total of the + * network mask of the overlay plus the size of host portion of the + * underlay network. In the above example, /8 + /16 = /24. + * + * E.g., consider underlay host 10.99.238.5/20 and overlay 99.0.0.0/8. In + * this case, the network portion of the underlay is 10.99.224.0/20, and + * the host portion is 0.0.14.5 (12 bits). To determine the overlay + * network subnet, the 12 bits of host portion are left shifted 12 bits + * (/20 - /8) and ORed with the overlay subnet prefix. This yields an + * overlay subnet of 99.224.80/20, composed of 8 bits overlay, followed by + * 12 bits underlay. This yields 12 bits in the overlay network portion, + * allowing for 4094 addresses in each overlay network subnet. The + * trade-off is that fewer hosts may participate in the underlay network, + * as its host address size has shrunk from 16 bits (65534 addresses) in + * the first example to 12 bits (4094 addresses) here. + * + * For fewer hosts per overlay subnet (permitting a larger number of + * underlay hosts to participate), the underlay netmask may be made + * smaller. + * + * E.g., underlay host 10.111.1.2/12 (network 10.96.0.0/12, host portion + * is 0.15.1.2, 20 bits) with an overlay of 33.0.0.0/8 would left shift + * the 20 bits of host by 4 (so that it's highest order bit is adjacent to + * the lowest order bit of the /8 overlay). This yields an overlay subnet + * of 33.240.16.32/28 (8 bits overlay, 20 bits from the host portion of + * the underlay). This provides more addresses for the underlay network + * (approximately 2^20), but each host's segment of the overlay provides + * only 4 bits of addresses (14 usable). + * + * It is also possible to adjust the overlay subnet. + * + * For an overlay of 240.0.0.0/5 and underlay of 10.88.0.0/20, consider + * underlay host 10.88.129.2; the 12 bits of host, 0.0.1.2, are left + * shifted 15 bits (/20 - /5), yielding an overlay network of + * 240.129.0.0/17. An underlay host of 10.88.244.215 would yield an + * overlay network of 242.107.128.0/17. + * + * For an overlay of 100.64.0.0/10 and underlay of 10.224.220.0/24, for + * underlay host 10.224.220.10, the underlay host portion (.10) is left + * shifted 14 bits, yielding an overlay network subnet of 100.66.128.0/18. + * This would permit 254 addresses on the underlay, with each overlay + * segment providing approximately 2^14 - 2 addresses (16382). + * + * For packets being encapsulated, the overlay network destination IP + * address is deconstructed into its overlay and underlay-derived + * portions. The underlay portion (determined by the overlay mask and + * overlay subnet mask) is right shifted according to the size of the + * underlay network mask. This value is then ORed with the network + * portion of the underlay network to produce the underlay network + * destination for the encapsulated datagram. + * + * For example, using the initial example of underlay 10.88.3.4/16 and + * overlay 99.0.0.0/8, with underlay host 10.88.3.4/16 providing overlay + * subnet 99.3.4.0/24 with specfic host 99.3.4.5. A datagram from + * 99.3.4.5 to 99.6.7.8 would first have the underlay host derived portion + * of the address extracted. This is a number of bits equal to underlay + * network host portion. In the destination address, the highest order of + * these bits is one bit lower than the lowest order bit from the overlay + * network mask. + * + * Using the sample value, 99.6.7.8, the overlay mask is /8, and the + * underlay mask is /16 (leaving 16 bits for the host portion). The bits + * to be shifted are the middle two octets, 0.6.7.0, as this is 99.6.7.8 + * ANDed with the mask 0x00ffff00 (which is 16 bits, the highest order of + * which is 1 bit lower than the lowest order overlay address bit). + * + * These octets, 0.6.7.0, are then right shifted 8 bits, yielding 0.0.6.7. + * This value is then ORed with the underlay network portion, + * 10.88.0.0/16, providing 10.88.6.7 as the final underlay destination for + * the encapuslated datagram. + * + * Another transform using the final example: overlay 100.64.0.0/10 and + * underlay 10.224.220.0/24. Consider overlay address 100.66.128.1 + * sending a datagram to 100.66.200.5. In this case, 8 bits (the host + * portion size of 10.224.220.0/24) beginning after the 100.64/10 overlay + * prefix are masked off, yielding 0.2.192.0. This is right shifted 14 + * (32 - 10 - (32 - 24), i.e., the number of bits between the overlay + * network portion and the underlay host portion) bits, yielding 0.0.0.11. + * This is ORed with the underlay network portion, 10.224.220.0/24, giving + * the underlay destination of 10.224.220.11 for overlay destination + * 100.66.200.5. + */ +static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) +{ + struct ip_fan_map *f_map; + u32 daddr, underlay; + + f_map = ipip_fan_find_map(tunnel, ip_hdr(skb)->daddr); + if (!f_map) + return -ENOENT; + + daddr = ntohl(ip_hdr(skb)->daddr); + underlay = ntohl(f_map->underlay); + if (!underlay) + return -EINVAL; + + *iph = tunnel->parms.iph; + iph->daddr = htonl(underlay | + ((daddr & ~f_map->overlay_mask) >> + (32 - f_map->overlay_prefix - + (32 - f_map->underlay_prefix)))); + return 0; +} + /* * This function assumes it is being called from dev_queue_xmit() * and that skb is filled properly by that function. @@ -274,6 +417,7 @@ struct ip_tunnel *tunnel = netdev_priv(dev); const struct iphdr *tiph = &tunnel->parms.iph; u8 ipproto; + struct iphdr fiph; if (!pskb_inet_may_pull(skb)) goto tx_error; @@ -297,6 +441,14 @@ if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP4)) goto tx_error; + if (fan_has_map(&tunnel->fan)) { + if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) + goto tx_error; + tiph = &fiph; + } else { + tiph = &tunnel->parms.iph; + } + skb_set_inner_ipproto(skb, ipproto); if (tunnel->collect_md) @@ -360,6 +512,8 @@ static void ipip_tunnel_setup(struct net_device *dev) { + struct ip_tunnel *t = netdev_priv(dev); + dev->netdev_ops = &ipip_netdev_ops; dev->header_ops = &ip_tunnel_header_ops; @@ -372,6 +526,7 @@ dev->features |= IPIP_FEATURES; dev->hw_features |= IPIP_FEATURES; ip_tunnel_setup(dev, ipip_net_id); + INIT_LIST_HEAD(&t->fan.fan_maps); } static int ipip_tunnel_init(struct net_device *dev) @@ -480,6 +635,93 @@ return ret; } +static void ipip_fan_flush_map(struct ip_tunnel *t) +{ + struct ip_fan_map *fan_map; + + list_for_each_entry_rcu(fan_map, &t->fan.fan_maps, list) { + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + } +} + +static int ipip_fan_del_map(struct ip_tunnel *t, __be32 overlay) +{ + struct ip_fan_map *fan_map; + + fan_map = ipip_fan_find_map(t, overlay); + if (!fan_map) + return -ENOENT; + + list_del_rcu(&fan_map->list); + kfree_rcu(fan_map, rcu); + + return 0; +} + +static int ipip_fan_add_map(struct ip_tunnel *t, struct ifla_fan_map *map) +{ + __be32 overlay_mask, underlay_mask; + struct ip_fan_map *fan_map; + + overlay_mask = inet_make_mask(map->overlay_prefix); + underlay_mask = inet_make_mask(map->underlay_prefix); + + if ((map->overlay & ~overlay_mask) || (map->underlay & ~underlay_mask)) + return -EINVAL; + + if (!(map->overlay & overlay_mask) && (map->underlay & underlay_mask)) + return -EINVAL; + + /* Special case: overlay 0 and underlay 0: flush all mappings */ + if (!map->overlay && !map->underlay) { + ipip_fan_flush_map(t); + return 0; + } + + /* Special case: overlay set and underlay 0: clear map for overlay */ + if (!map->underlay) + return ipip_fan_del_map(t, map->overlay); + + if (ipip_fan_find_map(t, map->overlay)) + return -EEXIST; + + fan_map = kmalloc(sizeof(*fan_map), GFP_KERNEL); + fan_map->underlay = map->underlay; + fan_map->overlay = map->overlay; + fan_map->underlay_prefix = map->underlay_prefix; + fan_map->overlay_mask = ntohl(overlay_mask); + fan_map->overlay_prefix = map->overlay_prefix; + + list_add_tail_rcu(&fan_map->list, &t->fan.fan_maps); + + return 0; +} + + +static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, + struct ip_tunnel_parm *parms) +{ + struct ifla_fan_map *map; + struct nlattr *attr; + int rem, rv; + + if (data == NULL || !data[IFLA_IPTUN_FAN_MAP]) + return 0; + + if (parms->iph.daddr) + return -EINVAL; + + nla_for_each_nested(attr, data[IFLA_IPTUN_FAN_MAP], rem) { + map = nla_data(attr); + rv = ipip_fan_add_map(t, map); + if (rv) + return rv; + } + + return 0; +} + static int ipip_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack *extack) @@ -488,15 +730,19 @@ struct ip_tunnel_parm p; struct ip_tunnel_encap ipencap; __u32 fwmark = 0; + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - int err = ip_tunnel_encap_setup(t, &ipencap); + err = ip_tunnel_encap_setup(t, &ipencap); if (err < 0) return err; } ipip_netlink_parms(data, &p, &t->collect_md, &fwmark); + err = ipip_netlink_fan(data, t, &p); + if (err < 0) + return err; return ip_tunnel_newlink(dev, tb, &p, fwmark); } @@ -509,9 +755,10 @@ struct ip_tunnel_encap ipencap; bool collect_md; __u32 fwmark = t->fwmark; + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - int err = ip_tunnel_encap_setup(t, &ipencap); + err = ip_tunnel_encap_setup(t, &ipencap); if (err < 0) return err; @@ -520,6 +767,9 @@ ipip_netlink_parms(data, &p, &collect_md, &fwmark); if (collect_md) return -EINVAL; + err = ipip_netlink_fan(data, t, &p); + if (err < 0) + return err; if (((dev->flags & IFF_POINTOPOINT) && !p.iph.daddr) || (!(dev->flags & IFF_POINTOPOINT) && p.iph.daddr)) @@ -557,6 +807,8 @@ nla_total_size(0) + /* IFLA_IPTUN_FWMARK */ nla_total_size(4) + + /* IFLA_IPTUN_FAN_MAP */ + nla_total_size(sizeof(struct ifla_fan_map)) * 256 + 0; } @@ -589,6 +841,26 @@ if (tunnel->collect_md) if (nla_put_flag(skb, IFLA_IPTUN_COLLECT_METADATA)) goto nla_put_failure; + if (fan_has_map(&tunnel->fan)) { + struct nlattr *fan_nest; + struct ip_fan_map *fan_map; + + fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; + list_for_each_entry_rcu(fan_map, &tunnel->fan.fan_maps, list) { + struct ifla_fan_map map; + + map.underlay = fan_map->underlay; + map.underlay_prefix = fan_map->underlay_prefix; + map.overlay = fan_map->overlay; + map.overlay_prefix = fan_map->overlay_prefix; + if (nla_put(skb, IFLA_FAN_MAPPING, sizeof(map), &map)) + goto nla_put_failure; + } + nla_nest_end(skb, fan_nest); + } + return 0; nla_put_failure: @@ -609,6 +881,9 @@ [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG }, [IFLA_IPTUN_FWMARK] = { .type = NLA_U32 }, + + [__IFLA_IPTUN_VENDOR_BREAK ... IFLA_IPTUN_MAX] = { .type = NLA_BINARY }, + [IFLA_IPTUN_FAN_MAP] = { .type = NLA_NESTED }, }; static struct rtnl_link_ops ipip_link_ops __read_mostly = { @@ -657,6 +932,23 @@ .size = sizeof(struct ip_tunnel_net), }; +#ifdef CONFIG_SYSCTL +static struct ctl_table_header *ipip_fan_header; +static unsigned int ipip_fan_version = 3; + +static struct ctl_table ipip_fan_sysctls[] = { + { + .procname = "version", + .data = &ipip_fan_version, + .maxlen = sizeof(ipip_fan_version), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + {}, +}; + +#endif /* CONFIG_SYSCTL */ + static int __init ipip_init(void) { int err; @@ -682,9 +974,22 @@ if (err < 0) goto rtnl_link_failed; +#ifdef CONFIG_SYSCTL + ipip_fan_header = register_net_sysctl(&init_net, "net/fan", + ipip_fan_sysctls); + if (!ipip_fan_header) { + err = -ENOMEM; + goto sysctl_failed; + } +#endif /* CONFIG_SYSCTL */ + out: return err; +#ifdef CONFIG_SYSCTL +sysctl_failed: + rtnl_link_unregister(&ipip_link_ops); +#endif /* CONFIG_SYSCTL */ rtnl_link_failed: #if IS_ENABLED(CONFIG_MPLS) xfrm4_tunnel_deregister(&mplsip_handler, AF_MPLS); @@ -699,6 +1004,9 @@ static void __exit ipip_fini(void) { +#ifdef CONFIG_SYSCTL + unregister_net_sysctl_table(ipip_fan_header); +#endif /* CONFIG_SYSCTL */ rtnl_link_unregister(&ipip_link_ops); if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET)) pr_info("%s: can't deregister tunnel\n", __func__); --- linux-5.8.0.orig/net/ipv4/netfilter.c +++ linux-5.8.0/net/ipv4/netfilter.c @@ -17,17 +17,19 @@ #include /* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */ -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned int addr_type) +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned int addr_type) { const struct iphdr *iph = ip_hdr(skb); struct rtable *rt; struct flowi4 fl4 = {}; __be32 saddr = iph->saddr; - const struct sock *sk = skb_to_full_sk(skb); - __u8 flags = sk ? inet_sk_flowi_flags(sk) : 0; + __u8 flags; struct net_device *dev = skb_dst(skb)->dev; unsigned int hh_len; + sk = sk_to_full_sk(sk); + flags = sk ? inet_sk_flowi_flags(sk) : 0; + if (addr_type == RTN_UNSPEC) addr_type = inet_addr_type_dev_table(net, dev, saddr); if (addr_type == RTN_LOCAL || addr_type == RTN_UNICAST) --- linux-5.8.0.orig/net/ipv4/netfilter/arp_tables.c +++ linux-5.8.0/net/ipv4/netfilter/arp_tables.c @@ -295,6 +295,17 @@ memcmp(&e->arp, &uncond, sizeof(uncond)) == 0; } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct arpt_entry)) + return false; + + if (newpos % __alignof__(struct arpt_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if * there are loops. Puts hook bitmask in comefrom. */ @@ -353,6 +364,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = entry0 + pos + size; if (pos + size >= newinfo->size) return 0; @@ -374,6 +387,10 @@ if (newpos >= newinfo->size) return 0; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = entry0 + newpos; e->counters.pcnt = pos; pos = newpos; @@ -1196,6 +1213,8 @@ if (!newinfo) goto out_unlock; + memset(newinfo->entries, 0, size); + newinfo->number = compatr->num_entries; for (i = 0; i < NF_ARP_NUMHOOKS; i++) { newinfo->hook_entry[i] = compatr->hook_entry[i]; --- linux-5.8.0.orig/net/ipv4/netfilter/ip_tables.c +++ linux-5.8.0/net/ipv4/netfilter/ip_tables.c @@ -362,6 +362,17 @@ else return verdict; } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct ipt_entry)) + return false; + + if (newpos % __alignof__(struct ipt_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if there are loops. Puts hook bitmask in comefrom. */ static int @@ -417,6 +428,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = entry0 + pos + size; if (pos + size >= newinfo->size) return 0; @@ -438,6 +451,10 @@ if (newpos >= newinfo->size) return 0; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = entry0 + newpos; e->counters.pcnt = pos; pos = newpos; @@ -1430,6 +1447,8 @@ if (!newinfo) goto out_unlock; + memset(newinfo->entries, 0, size); + newinfo->number = compatr->num_entries; for (i = 0; i < NF_INET_NUMHOOKS; i++) { newinfo->hook_entry[i] = compatr->hook_entry[i]; --- linux-5.8.0.orig/net/ipv4/netfilter/ipt_rpfilter.c +++ linux-5.8.0/net/ipv4/netfilter/ipt_rpfilter.c @@ -76,7 +76,7 @@ flow.daddr = iph->saddr; flow.saddr = rpfilter_get_saddr(iph->daddr); flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; - flow.flowi4_tos = RT_TOS(iph->tos); + flow.flowi4_tos = iph->tos & IPTOS_RT_MASK; flow.flowi4_scope = RT_SCOPE_UNIVERSE; flow.flowi4_oif = l3mdev_master_ifindex_rcu(xt_in(par)); --- linux-5.8.0.orig/net/ipv4/netfilter/iptable_mangle.c +++ linux-5.8.0/net/ipv4/netfilter/iptable_mangle.c @@ -62,7 +62,7 @@ iph->daddr != daddr || skb->mark != mark || iph->tos != tos) { - err = ip_route_me_harder(state->net, skb, RTN_UNSPEC); + err = ip_route_me_harder(state->net, state->sk, skb, RTN_UNSPEC); if (err < 0) ret = NF_DROP_ERR(err); } --- linux-5.8.0.orig/net/ipv4/netfilter/nf_log_arp.c +++ linux-5.8.0/net/ipv4/netfilter/nf_log_arp.c @@ -43,16 +43,31 @@ const struct nf_loginfo *info, const struct sk_buff *skb, unsigned int nhoff) { - const struct arphdr *ah; - struct arphdr _arph; const struct arppayload *ap; struct arppayload _arpp; + const struct arphdr *ah; + unsigned int logflags; + struct arphdr _arph; ah = skb_header_pointer(skb, 0, sizeof(_arph), &_arph); if (ah == NULL) { nf_log_buf_add(m, "TRUNCATED"); return; } + + if (info->type == NF_LOG_TYPE_LOG) + logflags = info->u.log.logflags; + else + logflags = NF_LOG_DEFAULT_MASK; + + if (logflags & NF_LOG_MACDECODE) { + nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM ", + eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest); + nf_log_dump_vlan(m, skb); + nf_log_buf_add(m, "MACPROTO=%04x ", + ntohs(eth_hdr(skb)->h_proto)); + } + nf_log_buf_add(m, "ARP HTYPE=%d PTYPE=0x%04x OPCODE=%d", ntohs(ah->ar_hrd), ntohs(ah->ar_pro), ntohs(ah->ar_op)); --- linux-5.8.0.orig/net/ipv4/netfilter/nf_log_ipv4.c +++ linux-5.8.0/net/ipv4/netfilter/nf_log_ipv4.c @@ -284,8 +284,10 @@ switch (dev->type) { case ARPHRD_ETHER: - nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM MACPROTO=%04x ", - eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest, + nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM ", + eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest); + nf_log_dump_vlan(m, skb); + nf_log_buf_add(m, "MACPROTO=%04x ", ntohs(eth_hdr(skb)->h_proto)); return; default: --- linux-5.8.0.orig/net/ipv4/netfilter/nf_reject_ipv4.c +++ linux-5.8.0/net/ipv4/netfilter/nf_reject_ipv4.c @@ -127,7 +127,7 @@ ip4_dst_hoplimit(skb_dst(nskb))); nf_reject_ip_tcphdr_put(nskb, oldskb, oth); - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; niph = ip_hdr(nskb); --- linux-5.8.0.orig/net/ipv4/nexthop.c +++ linux-5.8.0/net/ipv4/nexthop.c @@ -446,7 +446,7 @@ unsigned int i, j; u8 nhg_fdb = 0; - if (len & (sizeof(struct nexthop_grp) - 1)) { + if (!len || len & (sizeof(struct nexthop_grp) - 1)) { NL_SET_ERR_MSG(extack, "Invalid length for nexthop group attribute"); return -EINVAL; @@ -499,7 +499,7 @@ for (i = NHA_GROUP_TYPE + 1; i < __NHA_MAX; ++i) { if (!tb[i]) continue; - if (tb[NHA_FDB]) + if (i == NHA_FDB) continue; NL_SET_ERR_MSG(extack, "No other attributes can be set in nexthop groups"); @@ -842,7 +842,7 @@ remove_nh_grp_entry(net, nhge, nlinfo); /* make sure all see the newly published array before releasing rtnl */ - synchronize_rcu(); + synchronize_net(); } static void remove_nexthop_group(struct nexthop *nh, struct nl_info *nlinfo) @@ -1147,7 +1147,7 @@ /* rtnl */ /* remove all nexthops tied to a device being deleted */ -static void nexthop_flush_dev(struct net_device *dev) +static void nexthop_flush_dev(struct net_device *dev, unsigned long event) { unsigned int hash = nh_dev_hashfn(dev->ifindex); struct net *net = dev_net(dev); @@ -1159,6 +1159,10 @@ if (nhi->fib_nhc.nhc_dev != dev) continue; + if (nhi->reject_nh && + (event == NETDEV_DOWN || event == NETDEV_CHANGE)) + continue; + remove_nexthop(net, nhi->nh_parent, NULL); } } @@ -1187,6 +1191,9 @@ struct nexthop *nh; int i; + if (WARN_ON(!num_nh)) + return ERR_PTR(-EINVAL); + nh = nexthop_alloc(); if (!nh) return ERR_PTR(-ENOMEM); @@ -1239,8 +1246,10 @@ return nh; out_no_nh: - for (; i >= 0; --i) + for (i--; i >= 0; --i) { + list_del(&nhg->nh_entries[i].nh_list); nexthop_put(nhg->nh_entries[i].nh); + } kfree(nhg->spare); kfree(nhg); @@ -1900,11 +1909,11 @@ switch (event) { case NETDEV_DOWN: case NETDEV_UNREGISTER: - nexthop_flush_dev(dev); + nexthop_flush_dev(dev, event); break; case NETDEV_CHANGE: if (!(dev_get_flags(dev) & (IFF_RUNNING | IFF_LOWER_UP))) - nexthop_flush_dev(dev); + nexthop_flush_dev(dev, event); break; case NETDEV_CHANGEMTU: info_ext = ptr; --- linux-5.8.0.orig/net/ipv4/route.c +++ linux-5.8.0/net/ipv4/route.c @@ -786,8 +786,10 @@ neigh_event_send(n, NULL); } else { if (fib_lookup(net, fl4, &res, 0) == 0) { - struct fib_nh_common *nhc = FIB_RES_NHC(res); + struct fib_nh_common *nhc; + fib_select_path(net, &res, fl4, skb); + nhc = FIB_RES_NHC(res); update_or_create_fnhe(nhc, fl4->daddr, new_gw, 0, false, jiffies + ip_rt_gc_timeout); @@ -1013,6 +1015,7 @@ static void __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu) { struct dst_entry *dst = &rt->dst; + struct net *net = dev_net(dst->dev); u32 old_mtu = ipv4_mtu(dst); struct fib_result res; bool lock = false; @@ -1033,9 +1036,11 @@ return; rcu_read_lock(); - if (fib_lookup(dev_net(dst->dev), fl4, &res, 0) == 0) { - struct fib_nh_common *nhc = FIB_RES_NHC(res); + if (fib_lookup(net, fl4, &res, 0) == 0) { + struct fib_nh_common *nhc; + fib_select_path(net, &res, fl4, NULL); + nhc = FIB_RES_NHC(res); update_or_create_fnhe(nhc, fl4->daddr, 0, mtu, lock, jiffies + ip_rt_mtu_expires); } @@ -2142,6 +2147,7 @@ fl4.daddr = daddr; fl4.saddr = saddr; fl4.flowi4_uid = sock_net_uid(net, NULL); + fl4.flowi4_multipath_hash = 0; if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys)) { flkeys = &_flkeys; @@ -2662,8 +2668,6 @@ fib_select_path(net, res, fl4, skb); dev_out = FIB_RES_DEV(*res); - fl4->flowi4_oif = dev_out->ifindex; - make_route: rth = __mkroute_output(res, fl4, orig_oif, dev_out, flags); @@ -2672,44 +2676,15 @@ return rth; } -static struct dst_entry *ipv4_blackhole_dst_check(struct dst_entry *dst, u32 cookie) -{ - return NULL; -} - -static unsigned int ipv4_blackhole_mtu(const struct dst_entry *dst) -{ - unsigned int mtu = dst_metric_raw(dst, RTAX_MTU); - - return mtu ? : dst->dev->mtu; -} - -static void ipv4_rt_blackhole_update_pmtu(struct dst_entry *dst, struct sock *sk, - struct sk_buff *skb, u32 mtu, - bool confirm_neigh) -{ -} - -static void ipv4_rt_blackhole_redirect(struct dst_entry *dst, struct sock *sk, - struct sk_buff *skb) -{ -} - -static u32 *ipv4_rt_blackhole_cow_metrics(struct dst_entry *dst, - unsigned long old) -{ - return NULL; -} - static struct dst_ops ipv4_dst_blackhole_ops = { - .family = AF_INET, - .check = ipv4_blackhole_dst_check, - .mtu = ipv4_blackhole_mtu, - .default_advmss = ipv4_default_advmss, - .update_pmtu = ipv4_rt_blackhole_update_pmtu, - .redirect = ipv4_rt_blackhole_redirect, - .cow_metrics = ipv4_rt_blackhole_cow_metrics, - .neigh_lookup = ipv4_neigh_lookup, + .family = AF_INET, + .default_advmss = ipv4_default_advmss, + .neigh_lookup = ipv4_neigh_lookup, + .check = dst_blackhole_check, + .cow_metrics = dst_blackhole_cow_metrics, + .update_pmtu = dst_blackhole_update_pmtu, + .redirect = dst_blackhole_redirect, + .mtu = dst_blackhole_mtu, }; struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig) @@ -2760,10 +2735,12 @@ if (IS_ERR(rt)) return rt; - if (flp4->flowi4_proto) + if (flp4->flowi4_proto) { + flp4->flowi4_oif = rt->dst.dev->ifindex; rt = (struct rtable *)xfrm_lookup_route(net, &rt->dst, flowi4_to_flowi(flp4), sk, 0); + } return rt; } @@ -3210,7 +3187,7 @@ fl4.daddr = dst; fl4.saddr = src; - fl4.flowi4_tos = rtm->rtm_tos; + fl4.flowi4_tos = rtm->rtm_tos & IPTOS_RT_MASK; fl4.flowi4_oif = tb[RTA_OIF] ? nla_get_u32(tb[RTA_OIF]) : 0; fl4.flowi4_mark = mark; fl4.flowi4_uid = uid; @@ -3234,8 +3211,9 @@ fl4.flowi4_iif = iif; /* for rt_fill_info */ skb->dev = dev; skb->mark = mark; - err = ip_route_input_rcu(skb, dst, src, rtm->rtm_tos, - dev, &res); + err = ip_route_input_rcu(skb, dst, src, + rtm->rtm_tos & IPTOS_RT_MASK, dev, + &res); rt = skb_rtable(skb); if (err == 0 && rt->dst.error) --- linux-5.8.0.orig/net/ipv4/syncookies.c +++ linux-5.8.0/net/ipv4/syncookies.c @@ -291,7 +291,7 @@ __u32 cookie = ntohl(th->ack_seq) - 1; struct sock *ret = sk; struct request_sock *req; - int mss; + int full_space, mss; struct rtable *rt; __u8 rcv_wscale; struct flowi4 fl4; @@ -390,8 +390,13 @@ /* Try to redo what tcp_v4_send_synack did. */ req->rsk_window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW); + /* limit the window selection if the user enforce a smaller rx buffer */ + full_space = tcp_full_space(sk); + if (sk->sk_userlocks & SOCK_RCVBUF_LOCK && + (req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0)) + req->rsk_window_clamp = full_space; - tcp_select_initial_window(sk, tcp_full_space(sk), req->mss, + tcp_select_initial_window(sk, full_space, req->mss, &req->rsk_rcv_wnd, &req->rsk_window_clamp, ireq->wscale_ok, &rcv_wscale, dst_metric(&rt->dst, RTAX_INITRWND)); --- linux-5.8.0.orig/net/ipv4/sysctl_net_ipv4.c +++ linux-5.8.0/net/ipv4/sysctl_net_ipv4.c @@ -301,24 +301,16 @@ struct ctl_table tbl = { .maxlen = ((TCP_FASTOPEN_KEY_LENGTH * 2 * TCP_FASTOPEN_KEY_MAX) + (TCP_FASTOPEN_KEY_MAX * 5)) }; - struct tcp_fastopen_context *ctx; - u32 user_key[TCP_FASTOPEN_KEY_MAX * 4]; - __le32 key[TCP_FASTOPEN_KEY_MAX * 4]; + u32 user_key[TCP_FASTOPEN_KEY_BUF_LENGTH / sizeof(u32)]; + __le32 key[TCP_FASTOPEN_KEY_BUF_LENGTH / sizeof(__le32)]; char *backup_data; - int ret, i = 0, off = 0, n_keys = 0; + int ret, i = 0, off = 0, n_keys; tbl.data = kmalloc(tbl.maxlen, GFP_KERNEL); if (!tbl.data) return -ENOMEM; - rcu_read_lock(); - ctx = rcu_dereference(net->ipv4.tcp_fastopen_ctx); - if (ctx) { - n_keys = tcp_fastopen_context_len(ctx); - memcpy(&key[0], &ctx->key[0], TCP_FASTOPEN_KEY_LENGTH * n_keys); - } - rcu_read_unlock(); - + n_keys = tcp_fastopen_get_cipher(net, NULL, (u64 *)key); if (!n_keys) { memset(&key[0], 0, TCP_FASTOPEN_KEY_LENGTH); n_keys = 1; --- linux-5.8.0.orig/net/ipv4/tcp.c +++ linux-5.8.0/net/ipv4/tcp.c @@ -483,6 +483,8 @@ return true; if (tcp_rmem_pressure(sk)) return true; + if (tcp_receive_window(tp) <= inet_csk(sk)->icsk_ack.rcv_mss) + return true; } if (sk->sk_prot->stream_memory_read) return sk->sk_prot->stream_memory_read(sk); @@ -970,7 +972,8 @@ long timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT); if (IS_ENABLED(CONFIG_DEBUG_VM) && - WARN_ONCE(PageSlab(page), "page must not be a Slab one")) + WARN_ONCE(!sendpage_ok(page), + "page must not be a Slab one and have page_count > 0")) return -EINVAL; /* Wait for a connection to finish. One exception is TCP Fast Open @@ -2684,6 +2687,7 @@ icsk->icsk_backoff = 0; icsk->icsk_probes_out = 0; + icsk->icsk_probes_tstamp = 0; icsk->icsk_rto = TCP_TIMEOUT_INIT; tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; tp->snd_cwnd = TCP_INIT_CWND; @@ -3158,16 +3162,23 @@ break; case TCP_QUEUE_SEQ: - if (sk->sk_state != TCP_CLOSE) + if (sk->sk_state != TCP_CLOSE) { err = -EPERM; - else if (tp->repair_queue == TCP_SEND_QUEUE) - WRITE_ONCE(tp->write_seq, val); - else if (tp->repair_queue == TCP_RECV_QUEUE) { - WRITE_ONCE(tp->rcv_nxt, val); - WRITE_ONCE(tp->copied_seq, val); - } - else + } else if (tp->repair_queue == TCP_SEND_QUEUE) { + if (!tcp_rtx_queue_empty(sk)) + err = -EPERM; + else + WRITE_ONCE(tp->write_seq, val); + } else if (tp->repair_queue == TCP_RECV_QUEUE) { + if (tp->rcv_nxt != tp->copied_seq) { + err = -EPERM; + } else { + WRITE_ONCE(tp->rcv_nxt, val); + WRITE_ONCE(tp->copied_seq, val); + } + } else { err = -EINVAL; + } break; case TCP_REPAIR_OPTIONS: @@ -3694,22 +3705,14 @@ return 0; case TCP_FASTOPEN_KEY: { - __u8 key[TCP_FASTOPEN_KEY_BUF_LENGTH]; - struct tcp_fastopen_context *ctx; - unsigned int key_len = 0; + u64 key[TCP_FASTOPEN_KEY_BUF_LENGTH / sizeof(u64)]; + unsigned int key_len; if (get_user(len, optlen)) return -EFAULT; - rcu_read_lock(); - ctx = rcu_dereference(icsk->icsk_accept_queue.fastopenq.ctx); - if (ctx) { - key_len = tcp_fastopen_context_len(ctx) * - TCP_FASTOPEN_KEY_LENGTH; - memcpy(&key[0], &ctx->key[0], key_len); - } - rcu_read_unlock(); - + key_len = tcp_fastopen_get_cipher(net, icsk, key) * + TCP_FASTOPEN_KEY_LENGTH; len = min_t(unsigned int, len, key_len); if (put_user(len, optlen)) return -EFAULT; @@ -3839,7 +3842,8 @@ if (get_user(len, optlen)) return -EFAULT; - if (len < offsetofend(struct tcp_zerocopy_receive, length)) + if (len < 0 || + len < offsetofend(struct tcp_zerocopy_receive, length)) return -EINVAL; if (len > sizeof(zc)) { len = sizeof(zc); --- linux-5.8.0.orig/net/ipv4/tcp_bbr.c +++ linux-5.8.0/net/ipv4/tcp_bbr.c @@ -945,7 +945,7 @@ filter_expired = after(tcp_jiffies32, bbr->min_rtt_stamp + bbr_min_rtt_win_sec * HZ); if (rs->rtt_us >= 0 && - (rs->rtt_us <= bbr->min_rtt_us || + (rs->rtt_us < bbr->min_rtt_us || (filter_expired && !rs->is_ack_delayed))) { bbr->min_rtt_us = rs->rtt_us; bbr->min_rtt_stamp = tcp_jiffies32; --- linux-5.8.0.orig/net/ipv4/tcp_bpf.c +++ linux-5.8.0/net/ipv4/tcp_bpf.c @@ -15,8 +15,8 @@ { struct iov_iter *iter = &msg->msg_iter; int peek = flags & MSG_PEEK; - int i, ret, copied = 0; struct sk_msg *msg_rx; + int i, copied = 0; msg_rx = list_first_entry_or_null(&psock->ingress_msg, struct sk_msg, list); @@ -37,17 +37,16 @@ page = sg_page(sge); if (copied + copy > len) copy = len - copied; - ret = copy_page_to_iter(page, sge->offset, copy, iter); - if (ret != copy) { - msg_rx->sg.start = i; - return -EFAULT; - } + copy = copy_page_to_iter(page, sge->offset, copy, iter); + if (!copy) + return copied ? copied : -EFAULT; copied += copy; if (likely(!peek)) { sge->offset += copy; sge->length -= copy; - sk_mem_uncharge(sk, copy); + if (!msg_rx->skb) + sk_mem_uncharge(sk, copy); msg_rx->sg.size -= copy; if (!sge->length) { @@ -56,6 +55,11 @@ put_page(page); } } else { + /* Lets not optimize peek case if copy_page_to_iter + * didn't copy the entire length lets just break. + */ + if (copy != sge->length) + return copied; sk_msg_iter_var_next(i); } --- linux-5.8.0.orig/net/ipv4/tcp_cong.c +++ linux-5.8.0/net/ipv4/tcp_cong.c @@ -197,6 +197,11 @@ icsk->icsk_ca_setsockopt = 1; memset(icsk->icsk_ca_priv, 0, sizeof(icsk->icsk_ca_priv)); + if (ca->flags & TCP_CONG_NEEDS_ECN) + INET_ECN_xmit(sk); + else + INET_ECN_dontxmit(sk); + if (!((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN))) tcp_init_congestion_control(sk); } --- linux-5.8.0.orig/net/ipv4/tcp_fastopen.c +++ linux-5.8.0/net/ipv4/tcp_fastopen.c @@ -108,6 +108,29 @@ return err; } +int tcp_fastopen_get_cipher(struct net *net, struct inet_connection_sock *icsk, + u64 *key) +{ + struct tcp_fastopen_context *ctx; + int n_keys = 0, i; + + rcu_read_lock(); + if (icsk) + ctx = rcu_dereference(icsk->icsk_accept_queue.fastopenq.ctx); + else + ctx = rcu_dereference(net->ipv4.tcp_fastopen_ctx); + if (ctx) { + n_keys = tcp_fastopen_context_len(ctx); + for (i = 0; i < n_keys; i++) { + put_unaligned_le64(ctx->key[i].key[0], key + (i * 2)); + put_unaligned_le64(ctx->key[i].key[1], key + (i * 2) + 1); + } + } + rcu_read_unlock(); + + return n_keys; +} + static bool __tcp_fastopen_cookie_gen_cipher(struct request_sock *req, struct sk_buff *syn, const siphash_key_t *key, --- linux-5.8.0.orig/net/ipv4/tcp_input.c +++ linux-5.8.0/net/ipv4/tcp_input.c @@ -447,7 +447,6 @@ if (!(sk->sk_userlocks & SOCK_SNDBUF_LOCK)) tcp_sndbuf_expand(sk); - tp->rcvq_space.space = min_t(u32, tp->rcv_wnd, TCP_INIT_CWND * tp->advmss); tcp_mstamp_refresh(tp); tp->rcvq_space.time = tp->tcp_mstamp; tp->rcvq_space.seq = tp->copied_seq; @@ -471,6 +470,8 @@ tp->rcv_ssthresh = min(tp->rcv_ssthresh, tp->window_clamp); tp->snd_cwnd_stamp = tcp_jiffies32; + tp->rcvq_space.space = min3(tp->rcv_ssthresh, tp->rcv_wnd, + (u32)TCP_INIT_CWND * tp->advmss); } /* 4. Recalculate window clamp after socket hit its memory bounds. */ @@ -2747,7 +2748,8 @@ } else if (tcp_is_rack(sk)) { u32 prior_retrans = tp->retrans_out; - tcp_rack_mark_lost(sk); + if (tcp_rack_mark_lost(sk)) + *ack_flag &= ~FLAG_SET_XMIT_TIMER; if (prior_retrans > tp->retrans_out) *ack_flag |= FLAG_LOST_RETRANS; } @@ -3266,6 +3268,7 @@ return; if (!after(TCP_SKB_CB(head)->end_seq, tcp_wnd_end(tp))) { icsk->icsk_backoff = 0; + icsk->icsk_probes_tstamp = 0; inet_csk_clear_xmit_timer(sk, ICSK_TIME_PROBE0); /* Socket must be waked up by subsequent tcp_data_snd_check(). * This function is not for random using! @@ -3273,8 +3276,8 @@ } else { unsigned long when = tcp_probe0_when(sk, TCP_RTO_MAX); - tcp_reset_xmit_timer(sk, ICSK_TIME_PROBE0, - when, TCP_RTO_MAX); + when = tcp_clamp_probe0_to_user_timeout(sk, when); + tcp_reset_xmit_timer(sk, ICSK_TIME_PROBE0, when, TCP_RTO_MAX); } } @@ -3692,9 +3695,6 @@ if (tp->tlp_high_seq) tcp_process_tlp_ack(sk, ack, flag); - /* If needed, reset TLP/RTO timer; RACK may later override this. */ - if (flag & FLAG_SET_XMIT_TIMER) - tcp_set_xmit_timer(sk); if (tcp_ack_is_dubious(sk, flag)) { if (!(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP))) { @@ -3707,6 +3707,10 @@ &rexmit); } + /* If needed, reset TLP/RTO timer when RACK doesn't set. */ + if (flag & FLAG_SET_XMIT_TIMER) + tcp_set_xmit_timer(sk); + if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) sk_dst_confirm(sk); @@ -4260,10 +4264,9 @@ * The receiver remembers and reflects via DSACKs. Leverage the * DSACK state and change the txhash to re-route speculatively. */ - if (TCP_SKB_CB(skb)->seq == tcp_sk(sk)->duplicate_sack[0].start_seq) { - sk_rethink_txhash(sk); + if (TCP_SKB_CB(skb)->seq == tcp_sk(sk)->duplicate_sack[0].start_seq && + sk_rethink_txhash(sk)) NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPDUPLICATEDATAREHASH); - } } static void tcp_send_dupack(struct sock *sk, const struct sk_buff *skb) @@ -4790,7 +4793,8 @@ int avail = tp->rcv_nxt - tp->copied_seq; if (avail < sk->sk_rcvlowat && !tcp_rmem_pressure(sk) && - !sock_flag(sk, SOCK_DONE)) + !sock_flag(sk, SOCK_DONE) && + tcp_receive_window(tp) > inet_csk(sk)->icsk_ack.rcv_mss) return; sk->sk_data_ready(sk); @@ -5716,6 +5720,8 @@ tcp_data_snd_check(sk); if (!inet_csk_ack_scheduled(sk)) goto no_ack; + } else { + tcp_update_wl(tp, TCP_SKB_CB(skb)->seq); } __tcp_ack_snd_check(sk, 0); --- linux-5.8.0.orig/net/ipv4/tcp_ipv4.c +++ linux-5.8.0/net/ipv4/tcp_ipv4.c @@ -1725,6 +1725,7 @@ bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb) { u32 limit = READ_ONCE(sk->sk_rcvbuf) + READ_ONCE(sk->sk_sndbuf); + u32 tail_gso_size, tail_gso_segs; struct skb_shared_info *shinfo; const struct tcphdr *th; struct tcphdr *thtail; @@ -1732,6 +1733,7 @@ unsigned int hdrlen; bool fragstolen; u32 gso_segs; + u32 gso_size; int delta; /* In case all data was pulled from skb frags (in __pskb_pull_tail()), @@ -1757,13 +1759,6 @@ */ th = (const struct tcphdr *)skb->data; hdrlen = th->doff * 4; - shinfo = skb_shinfo(skb); - - if (!shinfo->gso_size) - shinfo->gso_size = skb->len - hdrlen; - - if (!shinfo->gso_segs) - shinfo->gso_segs = 1; tail = sk->sk_backlog.tail; if (!tail) @@ -1786,13 +1781,22 @@ goto no_coalesce; __skb_pull(skb, hdrlen); - if (skb_try_coalesce(tail, skb, &fragstolen, &delta)) { - thtail->window = th->window; + shinfo = skb_shinfo(skb); + gso_size = shinfo->gso_size ?: skb->len; + gso_segs = shinfo->gso_segs ?: 1; + + shinfo = skb_shinfo(tail); + tail_gso_size = shinfo->gso_size ?: (tail->len - hdrlen); + tail_gso_segs = shinfo->gso_segs ?: 1; + + if (skb_try_coalesce(tail, skb, &fragstolen, &delta)) { TCP_SKB_CB(tail)->end_seq = TCP_SKB_CB(skb)->end_seq; - if (after(TCP_SKB_CB(skb)->ack_seq, TCP_SKB_CB(tail)->ack_seq)) + if (likely(!before(TCP_SKB_CB(skb)->ack_seq, TCP_SKB_CB(tail)->ack_seq))) { TCP_SKB_CB(tail)->ack_seq = TCP_SKB_CB(skb)->ack_seq; + thtail->window = th->window; + } /* We have to update both TCP_SKB_CB(tail)->tcp_flags and * thtail->fin, so that the fast path in tcp_rcv_established() @@ -1812,11 +1816,8 @@ } /* Not as strict as GRO. We only need to carry mss max value */ - skb_shinfo(tail)->gso_size = max(shinfo->gso_size, - skb_shinfo(tail)->gso_size); - - gso_segs = skb_shinfo(tail)->gso_segs + shinfo->gso_segs; - skb_shinfo(tail)->gso_segs = min_t(u32, gso_segs, 0xFFFF); + shinfo->gso_size = max(gso_size, tail_gso_size); + shinfo->gso_segs = min_t(u32, gso_segs + tail_gso_segs, 0xFFFF); sk->sk_backlog.len += delta; __NET_INC_STATS(sock_net(sk), --- linux-5.8.0.orig/net/ipv4/tcp_minisocks.c +++ linux-5.8.0/net/ipv4/tcp_minisocks.c @@ -804,8 +804,11 @@ tcp_reset(sk); } if (!fastopen) { - inet_csk_reqsk_queue_drop(sk, req); - __NET_INC_STATS(sock_net(sk), LINUX_MIB_EMBRYONICRSTS); + bool unlinked = inet_csk_reqsk_queue_drop(sk, req); + + if (unlinked) + __NET_INC_STATS(sock_net(sk), LINUX_MIB_EMBRYONICRSTS); + *req_stolen = !unlinked; } return NULL; } --- linux-5.8.0.orig/net/ipv4/tcp_output.c +++ linux-5.8.0/net/ipv4/tcp_output.c @@ -1715,7 +1715,8 @@ * window, and remember whether we were cwnd-limited then. */ if (!before(tp->snd_una, tp->max_packets_seq) || - tp->packets_out > tp->max_packets_out) { + tp->packets_out > tp->max_packets_out || + is_cwnd_limited) { tp->max_packets_out = tp->packets_out; tp->max_packets_seq = tp->snd_nxt; tp->is_cwnd_limited = is_cwnd_limited; @@ -2537,6 +2538,10 @@ else tcp_chrono_stop(sk, TCP_CHRONO_RWND_LIMITED); + is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd); + if (likely(sent_pkts || is_cwnd_limited)) + tcp_cwnd_validate(sk, is_cwnd_limited); + if (likely(sent_pkts)) { if (tcp_in_cwnd_reduction(sk)) tp->prr_out += sent_pkts; @@ -2544,8 +2549,6 @@ /* Send one loss probe per tail loss episode. */ if (push_one != 2) tcp_schedule_loss_probe(sk, false); - is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd); - tcp_cwnd_validate(sk, is_cwnd_limited); return false; } return !tp->packets_out && !tcp_write_queue_empty(sk); @@ -3900,6 +3903,7 @@ /* Cancel probe timer, if it is not required. */ icsk->icsk_probes_out = 0; icsk->icsk_backoff = 0; + icsk->icsk_probes_tstamp = 0; return; } @@ -3914,6 +3918,8 @@ */ timeout = TCP_RESOURCE_PROBE_INTERVAL; } + + timeout = tcp_clamp_probe0_to_user_timeout(sk, timeout); tcp_reset_xmit_timer(sk, ICSK_TIME_PROBE0, timeout, TCP_RTO_MAX); } --- linux-5.8.0.orig/net/ipv4/tcp_recovery.c +++ linux-5.8.0/net/ipv4/tcp_recovery.c @@ -110,13 +110,13 @@ } } -void tcp_rack_mark_lost(struct sock *sk) +bool tcp_rack_mark_lost(struct sock *sk) { struct tcp_sock *tp = tcp_sk(sk); u32 timeout; if (!tp->rack.advanced) - return; + return false; /* Reset the advanced flag to avoid unnecessary queue scanning */ tp->rack.advanced = 0; @@ -126,6 +126,7 @@ inet_csk_reset_xmit_timer(sk, ICSK_TIME_REO_TIMEOUT, timeout, inet_csk(sk)->icsk_rto); } + return !!timeout; } /* Record the most recently (re)sent time among the (s)acked packets --- linux-5.8.0.orig/net/ipv4/tcp_timer.c +++ linux-5.8.0/net/ipv4/tcp_timer.c @@ -40,6 +40,24 @@ return min_t(u32, icsk->icsk_rto, msecs_to_jiffies(remaining)); } +u32 tcp_clamp_probe0_to_user_timeout(const struct sock *sk, u32 when) +{ + struct inet_connection_sock *icsk = inet_csk(sk); + u32 remaining; + s32 elapsed; + + if (!icsk->icsk_user_timeout || !icsk->icsk_probes_tstamp) + return when; + + elapsed = tcp_jiffies32 - icsk->icsk_probes_tstamp; + if (unlikely(elapsed < 0)) + elapsed = 0; + remaining = msecs_to_jiffies(icsk->icsk_user_timeout) - elapsed; + remaining = max_t(u32, remaining, TCP_TIMEOUT_MIN); + + return min_t(u32, remaining, when); +} + /** * tcp_write_err() - close socket and save error info * @sk: The socket the error has appeared on. @@ -219,14 +237,8 @@ int retry_until; if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) { - if (icsk->icsk_retransmits) { - dst_negative_advice(sk); - } else { - sk_rethink_txhash(sk); - tp->timeout_rehash++; - __NET_INC_STATS(sock_net(sk), - LINUX_MIB_TCPTIMEOUTREHASH); - } + if (icsk->icsk_retransmits) + __dst_negative_advice(sk); retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries; expired = icsk->icsk_retransmits >= retry_until; } else { @@ -234,12 +246,7 @@ /* Black hole detection */ tcp_mtu_probing(icsk, sk); - dst_negative_advice(sk); - } else { - sk_rethink_txhash(sk); - tp->timeout_rehash++; - __NET_INC_STATS(sock_net(sk), - LINUX_MIB_TCPTIMEOUTREHASH); + __dst_negative_advice(sk); } retry_until = net->ipv4.sysctl_tcp_retries2; @@ -270,6 +277,11 @@ return 1; } + if (sk_rethink_txhash(sk)) { + tp->timeout_rehash++; + __NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPTIMEOUTREHASH); + } + return 0; } @@ -350,6 +362,7 @@ if (tp->packets_out || !skb) { icsk->icsk_probes_out = 0; + icsk->icsk_probes_tstamp = 0; return; } @@ -361,13 +374,12 @@ * corresponding system limit. We also implement similar policy when * we use RTO to probe window in tcp_retransmit_timer(). */ - if (icsk->icsk_user_timeout) { - u32 elapsed = tcp_model_timeout(sk, icsk->icsk_probes_out, - tcp_probe0_base(sk)); - - if (elapsed >= icsk->icsk_user_timeout) - goto abort; - } + if (!icsk->icsk_probes_tstamp) + icsk->icsk_probes_tstamp = tcp_jiffies32; + else if (icsk->icsk_user_timeout && + (s32)(tcp_jiffies32 - icsk->icsk_probes_tstamp) >= + msecs_to_jiffies(icsk->icsk_user_timeout)) + goto abort; max_probes = sock_net(sk)->ipv4.sysctl_tcp_retries2; if (sock_flag(sk, SOCK_DEAD)) { --- linux-5.8.0.orig/net/ipv4/udp.c +++ linux-5.8.0/net/ipv4/udp.c @@ -2122,7 +2122,7 @@ __skb_pull(skb, skb_transport_offset(skb)); ret = udp_queue_rcv_one_skb(sk, skb); if (ret > 0) - ip_protocol_deliver_rcu(dev_net(skb->dev), skb, -ret); + ip_protocol_deliver_rcu(dev_net(skb->dev), skb, ret); } return 0; } @@ -2502,7 +2502,8 @@ */ if (!inet_sk(sk)->inet_daddr && in_dev) return ip_mc_validate_source(skb, iph->daddr, - iph->saddr, iph->tos, + iph->saddr, + iph->tos & IPTOS_RT_MASK, skb->dev, in_dev, &itag); } return 0; --- linux-5.8.0.orig/net/ipv4/udp_offload.c +++ linux-5.8.0/net/ipv4/udp_offload.c @@ -184,8 +184,67 @@ } EXPORT_SYMBOL(skb_udp_tunnel_segment); +static void __udpv4_gso_segment_csum(struct sk_buff *seg, + __be32 *oldip, __be32 *newip, + __be16 *oldport, __be16 *newport) +{ + struct udphdr *uh; + struct iphdr *iph; + + if (*oldip == *newip && *oldport == *newport) + return; + + uh = udp_hdr(seg); + iph = ip_hdr(seg); + + if (uh->check) { + inet_proto_csum_replace4(&uh->check, seg, *oldip, *newip, + true); + inet_proto_csum_replace2(&uh->check, seg, *oldport, *newport, + false); + if (!uh->check) + uh->check = CSUM_MANGLED_0; + } + *oldport = *newport; + + csum_replace4(&iph->check, *oldip, *newip); + *oldip = *newip; +} + +static struct sk_buff *__udpv4_gso_segment_list_csum(struct sk_buff *segs) +{ + struct sk_buff *seg; + struct udphdr *uh, *uh2; + struct iphdr *iph, *iph2; + + seg = segs; + uh = udp_hdr(seg); + iph = ip_hdr(seg); + + if ((udp_hdr(seg)->dest == udp_hdr(seg->next)->dest) && + (udp_hdr(seg)->source == udp_hdr(seg->next)->source) && + (ip_hdr(seg)->daddr == ip_hdr(seg->next)->daddr) && + (ip_hdr(seg)->saddr == ip_hdr(seg->next)->saddr)) + return segs; + + while ((seg = seg->next)) { + uh2 = udp_hdr(seg); + iph2 = ip_hdr(seg); + + __udpv4_gso_segment_csum(seg, + &iph2->saddr, &iph->saddr, + &uh2->source, &uh->source); + __udpv4_gso_segment_csum(seg, + &iph2->daddr, &iph->daddr, + &uh2->dest, &uh->dest); + } + + return segs; +} + static struct sk_buff *__udp_gso_segment_list(struct sk_buff *skb, - netdev_features_t features) + netdev_features_t features, + bool is_ipv6) { unsigned int mss = skb_shinfo(skb)->gso_size; @@ -195,11 +254,11 @@ udp_hdr(skb)->len = htons(sizeof(struct udphdr) + mss); - return skb; + return is_ipv6 ? skb : __udpv4_gso_segment_list_csum(skb); } struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb, - netdev_features_t features) + netdev_features_t features, bool is_ipv6) { struct sock *sk = gso_skb->sk; unsigned int sum_truesize = 0; @@ -211,7 +270,7 @@ __be16 newlen; if (skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST) - return __udp_gso_segment_list(gso_skb, features); + return __udp_gso_segment_list(gso_skb, features, is_ipv6); mss = skb_shinfo(gso_skb)->gso_size; if (gso_skb->len <= sizeof(*uh) + mss) @@ -325,7 +384,7 @@ goto out; if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) - return __udp_gso_segment(skb, features); + return __udp_gso_segment(skb, features, false); mss = skb_shinfo(skb)->gso_size; if (unlikely(skb->len <= mss)) @@ -366,7 +425,7 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head, struct sk_buff *skb) { - struct udphdr *uh = udp_hdr(skb); + struct udphdr *uh = udp_gro_udphdr(skb); struct sk_buff *pp = NULL; struct udphdr *uh2; struct sk_buff *p; @@ -463,7 +522,7 @@ } if (!sk || NAPI_GRO_CB(skb)->encap_mark || - (skb->ip_summed != CHECKSUM_PARTIAL && + (uh->check && skb->ip_summed != CHECKSUM_PARTIAL && NAPI_GRO_CB(skb)->csum_cnt == 0 && !NAPI_GRO_CB(skb)->csum_valid) || !udp_sk(sk)->gro_receive) @@ -500,12 +559,22 @@ } EXPORT_SYMBOL(udp_gro_receive); +static struct sock *udp4_gro_lookup_skb(struct sk_buff *skb, __be16 sport, + __be16 dport) +{ + const struct iphdr *iph = skb_gro_network_header(skb); + + return __udp4_lib_lookup(dev_net(skb->dev), iph->saddr, sport, + iph->daddr, dport, inet_iif(skb), + inet_sdif(skb), &udp_table, NULL); +} + INDIRECT_CALLABLE_SCOPE struct sk_buff *udp4_gro_receive(struct list_head *head, struct sk_buff *skb) { struct udphdr *uh = udp_gro_udphdr(skb); + struct sock *sk = NULL; struct sk_buff *pp; - struct sock *sk; if (unlikely(!uh)) goto flush; @@ -523,7 +592,10 @@ skip: NAPI_GRO_CB(skb)->is_ipv6 = 0; rcu_read_lock(); - sk = static_branch_unlikely(&udp_encap_needed_key) ? udp4_lib_lookup_skb(skb, uh->source, uh->dest) : NULL; + + if (static_branch_unlikely(&udp_encap_needed_key)) + sk = udp4_gro_lookup_skb(skb, uh->source, uh->dest); + pp = udp_gro_receive(head, skb, uh, sk); rcu_read_unlock(); return pp; --- linux-5.8.0.orig/net/ipv6/Kconfig +++ linux-5.8.0/net/ipv6/Kconfig @@ -303,6 +303,7 @@ config IPV6_SEG6_HMAC bool "IPv6: Segment Routing HMAC support" depends on IPV6 + select CRYPTO select CRYPTO_HMAC select CRYPTO_SHA1 select CRYPTO_SHA256 --- linux-5.8.0.orig/net/ipv6/addrconf.c +++ linux-5.8.0/net/ipv6/addrconf.c @@ -2441,8 +2441,9 @@ .fc_ifindex = dev->ifindex, .fc_dst_len = 8, .fc_flags = RTF_UP, - .fc_type = RTN_UNICAST, + .fc_type = RTN_MULTICAST, .fc_nlinfo.nl_net = dev_net(dev), + .fc_protocol = RTPROT_KERNEL, }; ipv6_addr_set(&cfg.fc_dst, htonl(0xFF000000), 0, 0, 0); @@ -4997,8 +4998,10 @@ return -EMSGSIZE; if (args->netnsid >= 0 && - nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) + nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) { + nlmsg_cancel(skb, nlh); return -EMSGSIZE; + } put_ifaddrmsg(nlh, 128, IFA_F_PERMANENT, scope, ifindex); if (nla_put_in6_addr(skb, IFA_MULTICAST, &ifmca->mca_addr) < 0 || @@ -5029,8 +5032,10 @@ return -EMSGSIZE; if (args->netnsid >= 0 && - nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) + nla_put_s32(skb, IFA_TARGET_NETNSID, args->netnsid)) { + nlmsg_cancel(skb, nlh); return -EMSGSIZE; + } put_ifaddrmsg(nlh, 128, IFA_F_PERMANENT, scope, ifindex); if (nla_put_in6_addr(skb, IFA_ANYCAST, &ifaca->aca_addr) < 0 || --- linux-5.8.0.orig/net/ipv6/addrlabel.c +++ linux-5.8.0/net/ipv6/addrlabel.c @@ -306,7 +306,9 @@ /* add default label */ static int __net_init ip6addrlbl_net_init(struct net *net) { - int err = 0; + struct ip6addrlbl_entry *p = NULL; + struct hlist_node *n; + int err; int i; ADDRLABEL(KERN_DEBUG "%s\n", __func__); @@ -315,14 +317,20 @@ INIT_HLIST_HEAD(&net->ipv6.ip6addrlbl_table.head); for (i = 0; i < ARRAY_SIZE(ip6addrlbl_init_table); i++) { - int ret = ip6addrlbl_add(net, - ip6addrlbl_init_table[i].prefix, - ip6addrlbl_init_table[i].prefixlen, - 0, - ip6addrlbl_init_table[i].label, 0); - /* XXX: should we free all rules when we catch an error? */ - if (ret && (!err || err != -ENOMEM)) - err = ret; + err = ip6addrlbl_add(net, + ip6addrlbl_init_table[i].prefix, + ip6addrlbl_init_table[i].prefixlen, + 0, + ip6addrlbl_init_table[i].label, 0); + if (err) + goto err_ip6addrlbl_add; + } + return 0; + +err_ip6addrlbl_add: + hlist_for_each_entry_safe(p, n, &net->ipv6.ip6addrlbl_table.head, list) { + hlist_del_rcu(&p->list); + kfree_rcu(p, rcu); } return err; } --- linux-5.8.0.orig/net/ipv6/ah6.c +++ linux-5.8.0/net/ipv6/ah6.c @@ -588,7 +588,8 @@ memcpy(auth_data, ah->auth_data, ahp->icv_trunc_len); memset(ah->auth_data, 0, ahp->icv_trunc_len); - if (ipv6_clear_mutable_options(ip6h, hdr_len, XFRM_POLICY_IN)) + err = ipv6_clear_mutable_options(ip6h, hdr_len, XFRM_POLICY_IN); + if (err) goto out_free; ip6h->priority = 0; --- linux-5.8.0.orig/net/ipv6/calipso.c +++ linux-5.8.0/net/ipv6/calipso.c @@ -83,6 +83,9 @@ static struct calipso_map_cache_bkt *calipso_cache; +static void calipso_cache_invalidate(void); +static void calipso_doi_putdef(struct calipso_doi *doi_def); + /* Label Mapping Cache Functions */ @@ -444,15 +447,10 @@ ret_val = -ENOENT; goto doi_remove_return; } - if (!refcount_dec_and_test(&doi_def->refcount)) { - spin_unlock(&calipso_doi_list_lock); - ret_val = -EBUSY; - goto doi_remove_return; - } list_del_rcu(&doi_def->list); spin_unlock(&calipso_doi_list_lock); - call_rcu(&doi_def->rcu, calipso_doi_free_rcu); + calipso_doi_putdef(doi_def); ret_val = 0; doi_remove_return: @@ -508,10 +506,8 @@ if (!refcount_dec_and_test(&doi_def->refcount)) return; - spin_lock(&calipso_doi_list_lock); - list_del_rcu(&doi_def->list); - spin_unlock(&calipso_doi_list_lock); + calipso_cache_invalidate(); call_rcu(&doi_def->rcu, calipso_doi_free_rcu); } --- linux-5.8.0.orig/net/ipv6/esp6.c +++ linux-5.8.0/net/ipv6/esp6.c @@ -478,7 +478,6 @@ int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *esp) { u8 *tail; - u8 *vaddr; int nfrags; int esph_offset; struct page *page; @@ -519,14 +518,10 @@ page = pfrag->page; get_page(page); - vaddr = kmap_atomic(page); - - tail = vaddr + pfrag->offset; + tail = page_address(page) + pfrag->offset; esp_output_fill_trailer(tail, esp->tfclen, esp->plen, esp->proto); - kunmap_atomic(vaddr); - nfrags = skb_shinfo(skb)->nr_frags; __skb_fill_page_desc(skb, nfrags, page, pfrag->offset, --- linux-5.8.0.orig/net/ipv6/icmp.c +++ linux-5.8.0/net/ipv6/icmp.c @@ -158,7 +158,13 @@ tp = skb_header_pointer(skb, ptr+offsetof(struct icmp6hdr, icmp6_type), sizeof(_type), &_type); - if (!tp || !(*tp & ICMPV6_INFOMSG_MASK)) + + /* Based on RFC 8200, Section 4.5 Fragment Header, return + * false if this is a fragment packet with no icmp header info. + */ + if (!tp && frag_off != 0) + return false; + else if (!tp || !(*tp & ICMPV6_INFOMSG_MASK)) return true; } return false; @@ -439,8 +445,8 @@ /* * Send an ICMP message in response to a packet in error */ -static void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, - const struct in6_addr *force_saddr) +void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, + const struct in6_addr *force_saddr) { struct inet6_dev *idev = NULL; struct ipv6hdr *hdr = ipv6_hdr(skb); @@ -625,6 +631,7 @@ out_bh_enable: local_bh_enable(); } +EXPORT_SYMBOL(icmp6_send); /* Slightly more convenient version of icmp6_send. */ --- linux-5.8.0.orig/net/ipv6/ip6_fib.c +++ linux-5.8.0/net/ipv6/ip6_fib.c @@ -1024,6 +1024,8 @@ { struct fib6_table *table = rt->fib6_table; + /* Flush all cached dst in exception table */ + rt6_flush_exceptions(rt); fib6_drop_pcpu_from(rt, table); if (rt->nh && !list_empty(&rt->nh_list)) @@ -1922,9 +1924,6 @@ net->ipv6.rt6_stats->fib_rt_entries--; net->ipv6.rt6_stats->fib_discarded_routes++; - /* Flush all cached dst in exception table */ - rt6_flush_exceptions(rt); - /* Reset round-robin state, if necessary */ if (rcu_access_pointer(fn->rr_ptr) == rt) fn->rr_ptr = NULL; @@ -1992,14 +1991,19 @@ /* Need to own table->tb6_lock */ int fib6_del(struct fib6_info *rt, struct nl_info *info) { - struct fib6_node *fn = rcu_dereference_protected(rt->fib6_node, - lockdep_is_held(&rt->fib6_table->tb6_lock)); - struct fib6_table *table = rt->fib6_table; struct net *net = info->nl_net; struct fib6_info __rcu **rtp; struct fib6_info __rcu **rtp_next; + struct fib6_table *table; + struct fib6_node *fn; - if (!fn || rt == net->ipv6.fib6_null_entry) + if (rt == net->ipv6.fib6_null_entry) + return -ENOENT; + + table = rt->fib6_table; + fn = rcu_dereference_protected(rt->fib6_node, + lockdep_is_held(&table->tb6_lock)); + if (!fn) return -ENOENT; WARN_ON(!(fn->fn_flags & RTN_RTINFO)); @@ -2476,7 +2480,7 @@ const struct net_device *dev; if (rt->nh) - fib6_nh = nexthop_fib6_nh(rt->nh); + fib6_nh = nexthop_fib6_nh_bh(rt->nh); seq_printf(seq, "%pi6 %02x ", &rt->fib6_dst.addr, rt->fib6_dst.plen); @@ -2612,8 +2616,10 @@ iter->skip = *pos; if (iter->tbl) { + loff_t p = 0; + ipv6_route_seq_setup_walk(iter, net); - return ipv6_route_seq_next(seq, NULL, pos); + return ipv6_route_seq_next(seq, NULL, &p); } else { return NULL; } --- linux-5.8.0.orig/net/ipv6/ip6_gre.c +++ linux-5.8.0/net/ipv6/ip6_gre.c @@ -678,8 +678,8 @@ tel = (struct ipv6_tlv_tnl_enc_lim *)&skb_network_header(skb)[offset]; if (tel->encap_limit == 0) { - icmpv6_send(skb, ICMPV6_PARAMPROB, - ICMPV6_HDR_FIELD, offset + 2); + icmpv6_ndo_send(skb, ICMPV6_PARAMPROB, + ICMPV6_HDR_FIELD, offset + 2); return -1; } *encap_limit = tel->encap_limit - 1; @@ -795,8 +795,8 @@ if (err != 0) { /* XXX: send ICMP error even if DF is not set. */ if (err == -EMSGSIZE) - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, + htonl(mtu)); return -1; } @@ -827,7 +827,7 @@ &mtu, skb->protocol); if (err != 0) { if (err == -EMSGSIZE) - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); return -1; } @@ -1053,10 +1053,10 @@ /* XXX: send ICMP error even if DF is not set. */ if (err == -EMSGSIZE) { if (skb->protocol == htons(ETH_P_IP)) - icmp_send(skb, ICMP_DEST_UNREACH, - ICMP_FRAG_NEEDED, htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, + ICMP_FRAG_NEEDED, htonl(mtu)); else - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); } goto tx_err; @@ -1122,8 +1122,13 @@ return; if (rt->dst.dev) { - dev->needed_headroom = rt->dst.dev->hard_header_len + - t_hlen; + unsigned short dst_len = rt->dst.dev->hard_header_len + + t_hlen; + + if (t->dev->header_ops) + dev->hard_header_len = dst_len; + else + dev->needed_headroom = dst_len; if (set_mtu) { dev->mtu = rt->dst.dev->mtu - t_hlen; @@ -1148,7 +1153,12 @@ tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen; t_hlen = tunnel->hlen + sizeof(struct ipv6hdr); - tunnel->dev->needed_headroom = LL_MAX_HEADER + t_hlen; + + if (tunnel->dev->header_ops) + tunnel->dev->hard_header_len = LL_MAX_HEADER + t_hlen; + else + tunnel->dev->needed_headroom = LL_MAX_HEADER + t_hlen; + return t_hlen; } --- linux-5.8.0.orig/net/ipv6/ip6_icmp.c +++ linux-5.8.0/net/ipv6/ip6_icmp.c @@ -9,6 +9,8 @@ #if IS_ENABLED(CONFIG_IPV6) +#if !IS_BUILTIN(CONFIG_IPV6) + static ip6_icmp_send_t __rcu *ip6_icmp_send; int inet6_register_icmp_sender(ip6_icmp_send_t *fn) @@ -37,14 +39,12 @@ rcu_read_lock(); send = rcu_dereference(ip6_icmp_send); - - if (!send) - goto out; - send(skb, type, code, info, NULL); -out: + if (send) + send(skb, type, code, info, NULL); rcu_read_unlock(); } EXPORT_SYMBOL(icmpv6_send); +#endif #if IS_ENABLED(CONFIG_NF_NAT) #include --- linux-5.8.0.orig/net/ipv6/ip6_input.c +++ linux-5.8.0/net/ipv6/ip6_input.c @@ -245,16 +245,6 @@ if (ipv6_addr_is_multicast(&hdr->saddr)) goto err; - /* While RFC4291 is not explicit about v4mapped addresses - * in IPv6 headers, it seems clear linux dual-stack - * model can not deal properly with these. - * Security models could be fooled by ::ffff:127.0.0.1 for example. - * - * https://tools.ietf.org/html/draft-itojun-v6ops-v4mapped-harmful-02 - */ - if (ipv6_addr_v4mapped(&hdr->saddr)) - goto err; - skb->transport_header = skb->network_header + sizeof(*hdr); IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); --- linux-5.8.0.orig/net/ipv6/ip6_output.c +++ linux-5.8.0/net/ipv6/ip6_output.c @@ -125,8 +125,43 @@ return -EINVAL; } +static int +ip6_finish_output_gso_slowpath_drop(struct net *net, struct sock *sk, + struct sk_buff *skb, unsigned int mtu) +{ + struct sk_buff *segs, *nskb; + netdev_features_t features; + int ret = 0; + + /* Please see corresponding comment in ip_finish_output_gso + * describing the cases where GSO segment length exceeds the + * egress MTU. + */ + features = netif_skb_features(skb); + segs = skb_gso_segment(skb, features & ~NETIF_F_GSO_MASK); + if (IS_ERR_OR_NULL(segs)) { + kfree_skb(skb); + return -ENOMEM; + } + + consume_skb(skb); + + skb_list_walk_safe(segs, segs, nskb) { + int err; + + skb_mark_not_on_list(segs); + err = ip6_fragment(net, sk, segs, ip6_finish_output2); + if (err && ret == 0) + ret = err; + } + + return ret; +} + static int __ip6_finish_output(struct net *net, struct sock *sk, struct sk_buff *skb) { + unsigned int mtu; + #if defined(CONFIG_NETFILTER) && defined(CONFIG_XFRM) /* Policy lookup after SNAT yielded a new policy */ if (skb_dst(skb)->xfrm) { @@ -135,7 +170,11 @@ } #endif - if ((skb->len > ip6_skb_dst_mtu(skb) && !skb_is_gso(skb)) || + mtu = ip6_skb_dst_mtu(skb); + if (skb_is_gso(skb) && !skb_gso_validate_network_len(skb, mtu)) + return ip6_finish_output_gso_slowpath_drop(net, sk, skb, mtu); + + if ((skb->len > mtu && !skb_is_gso(skb)) || dst_allfrag(skb_dst(skb)) || (IP6CB(skb)->frag_max_size && skb->len > IP6CB(skb)->frag_max_size)) return ip6_fragment(net, sk, skb, ip6_finish_output2); --- linux-5.8.0.orig/net/ipv6/ip6_tunnel.c +++ linux-5.8.0/net/ipv6/ip6_tunnel.c @@ -913,7 +913,15 @@ struct metadata_dst *tun_dst, bool log_ecn_err) { - return __ip6_tnl_rcv(t, skb, tpi, tun_dst, ip6ip6_dscp_ecn_decapsulate, + int (*dscp_ecn_decapsulate)(const struct ip6_tnl *t, + const struct ipv6hdr *ipv6h, + struct sk_buff *skb); + + dscp_ecn_decapsulate = ip6ip6_dscp_ecn_decapsulate; + if (tpi->proto == htons(ETH_P_IP)) + dscp_ecn_decapsulate = ip4ip6_dscp_ecn_decapsulate; + + return __ip6_tnl_rcv(t, skb, tpi, tun_dst, dscp_ecn_decapsulate, log_ecn_err); } EXPORT_SYMBOL(ip6_tnl_rcv); @@ -1261,6 +1269,8 @@ if (max_headroom > dev->needed_headroom) dev->needed_headroom = max_headroom; + skb_set_inner_ipproto(skb, proto); + err = ip6_tnl_encap(skb, t, &proto, fl6); if (err) return err; @@ -1270,8 +1280,6 @@ ipv6_push_frag_opts(skb, &opt.ops, &proto); } - skb_set_inner_ipproto(skb, proto); - skb_push(skb, sizeof(struct ipv6hdr)); skb_reset_network_header(skb); ipv6h = ipv6_hdr(skb); @@ -1353,8 +1361,8 @@ tel = (void *)&skb_network_header(skb)[offset]; if (tel->encap_limit == 0) { - icmpv6_send(skb, ICMPV6_PARAMPROB, - ICMPV6_HDR_FIELD, offset + 2); + icmpv6_ndo_send(skb, ICMPV6_PARAMPROB, + ICMPV6_HDR_FIELD, offset + 2); return -1; } encap_limit = tel->encap_limit - 1; @@ -1406,11 +1414,11 @@ if (err == -EMSGSIZE) switch (protocol) { case IPPROTO_IPIP: - icmp_send(skb, ICMP_DEST_UNREACH, - ICMP_FRAG_NEEDED, htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, + ICMP_FRAG_NEEDED, htonl(mtu)); break; case IPPROTO_IPV6: - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); break; default: break; --- linux-5.8.0.orig/net/ipv6/ip6_vti.c +++ linux-5.8.0/net/ipv6/ip6_vti.c @@ -515,6 +515,10 @@ goto tx_err_dst_release; } + skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev))); + skb_dst_set(skb, dst); + skb->dev = skb_dst(skb)->dev; + mtu = dst_mtu(dst); if (skb->len > mtu) { skb_dst_update_pmtu_no_confirm(skb, mtu); @@ -523,20 +527,15 @@ if (mtu < IPV6_MIN_MTU) mtu = IPV6_MIN_MTU; - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); } else { - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(mtu)); + icmp_ndo_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, + htonl(mtu)); } - err = -EMSGSIZE; - goto tx_err_dst_release; + return -EMSGSIZE; } - skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev))); - skb_dst_set(skb, dst); - skb->dev = skb_dst(skb)->dev; - err = dst_output(t->net, skb->sk, skb); if (net_xmit_eval(err) == 0) err = pkt_len; --- linux-5.8.0.orig/net/ipv6/ndisc.c +++ linux-5.8.0/net/ipv6/ndisc.c @@ -81,6 +81,7 @@ static int pndisc_constructor(struct pneigh_entry *n); static void pndisc_destructor(struct pneigh_entry *n); static void pndisc_redo(struct sk_buff *skb); +static int ndisc_is_multicast(const void *pkey); static const struct neigh_ops ndisc_generic_ops = { .family = AF_INET6, @@ -115,6 +116,7 @@ .pconstructor = pndisc_constructor, .pdestructor = pndisc_destructor, .proxy_redo = pndisc_redo, + .is_multicast = ndisc_is_multicast, .allow_add = ndisc_allow_add, .id = "ndisc_cache", .parms = { @@ -1706,6 +1708,11 @@ kfree_skb(skb); } +static int ndisc_is_multicast(const void *pkey) +{ + return ipv6_addr_is_multicast((struct in6_addr *)pkey); +} + static bool ndisc_suppress_frag_ndisc(struct sk_buff *skb) { struct inet6_dev *idev = __in6_dev_get(skb->dev); --- linux-5.8.0.orig/net/ipv6/netfilter.c +++ linux-5.8.0/net/ipv6/netfilter.c @@ -20,10 +20,10 @@ #include #include "../bridge/br_private.h" -int ip6_route_me_harder(struct net *net, struct sk_buff *skb) +int ip6_route_me_harder(struct net *net, struct sock *sk_partial, struct sk_buff *skb) { const struct ipv6hdr *iph = ipv6_hdr(skb); - struct sock *sk = sk_to_full_sk(skb->sk); + struct sock *sk = sk_to_full_sk(sk_partial); unsigned int hh_len; struct dst_entry *dst; int strict = (ipv6_addr_type(&iph->daddr) & @@ -84,7 +84,7 @@ if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) || !ipv6_addr_equal(&iph->saddr, &rt_info->saddr) || skb->mark != rt_info->mark) - return ip6_route_me_harder(entry->state.net, skb); + return ip6_route_me_harder(entry->state.net, entry->state.sk, skb); } return 0; } @@ -245,9 +245,6 @@ .route_input = ip6_route_input, .fragment = ip6_fragment, .reroute = nf_ip6_reroute, -#if IS_MODULE(CONFIG_IPV6) && IS_ENABLED(CONFIG_NF_DEFRAG_IPV6) - .br_defrag = nf_ct_frag6_gather, -#endif #if IS_MODULE(CONFIG_IPV6) .br_fragment = br_ip6_fragment, #endif --- linux-5.8.0.orig/net/ipv6/netfilter/ip6_tables.c +++ linux-5.8.0/net/ipv6/netfilter/ip6_tables.c @@ -380,6 +380,17 @@ else return verdict; } +static bool next_offset_ok(const struct xt_table_info *t, unsigned int newpos) +{ + if (newpos > t->size - sizeof(struct ip6t_entry)) + return false; + + if (newpos % __alignof__(struct ip6t_entry) != 0) + return false; + + return true; +} + /* Figures out from what hook each rule can be called: returns 0 if there are loops. Puts hook bitmask in comefrom. */ static int @@ -435,6 +446,8 @@ /* Move along one */ size = e->next_offset; + if (!next_offset_ok(newinfo, pos + size)) + return 0; e = entry0 + pos + size; if (pos + size >= newinfo->size) return 0; @@ -456,6 +469,10 @@ if (newpos >= newinfo->size) return 0; } + + if (!next_offset_ok(newinfo, newpos)) + return 0; + e = entry0 + newpos; e->counters.pcnt = pos; pos = newpos; @@ -1445,6 +1462,8 @@ if (!newinfo) goto out_unlock; + memset(newinfo->entries, 0, size); + newinfo->number = compatr->num_entries; for (i = 0; i < NF_INET_NUMHOOKS; i++) { newinfo->hook_entry[i] = compatr->hook_entry[i]; --- linux-5.8.0.orig/net/ipv6/netfilter/ip6table_mangle.c +++ linux-5.8.0/net/ipv6/netfilter/ip6table_mangle.c @@ -57,7 +57,7 @@ skb->mark != mark || ipv6_hdr(skb)->hop_limit != hop_limit || flowlabel != *((u_int32_t *)ipv6_hdr(skb)))) { - err = ip6_route_me_harder(state->net, skb); + err = ip6_route_me_harder(state->net, state->sk, skb); if (err < 0) ret = NF_DROP_ERR(err); } --- linux-5.8.0.orig/net/ipv6/netfilter/nf_log_ipv6.c +++ linux-5.8.0/net/ipv6/netfilter/nf_log_ipv6.c @@ -297,9 +297,11 @@ switch (dev->type) { case ARPHRD_ETHER: - nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM MACPROTO=%04x ", - eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest, - ntohs(eth_hdr(skb)->h_proto)); + nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM ", + eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest); + nf_log_dump_vlan(m, skb); + nf_log_buf_add(m, "MACPROTO=%04x ", + ntohs(eth_hdr(skb)->h_proto)); return; default: break; --- linux-5.8.0.orig/net/ipv6/reassembly.c +++ linux-5.8.0/net/ipv6/reassembly.c @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include #include @@ -322,7 +324,9 @@ struct frag_queue *fq; const struct ipv6hdr *hdr = ipv6_hdr(skb); struct net *net = dev_net(skb_dst(skb)->dev); - int iif; + __be16 frag_off; + int iif, offset; + u8 nexthdr; if (IP6CB(skb)->flags & IP6SKB_FRAGMENTED) goto fail_hdr; @@ -351,6 +355,33 @@ return 1; } + /* RFC 8200, Section 4.5 Fragment Header: + * If the first fragment does not include all headers through an + * Upper-Layer header, then that fragment should be discarded and + * an ICMP Parameter Problem, Code 3, message should be sent to + * the source of the fragment, with the Pointer field set to zero. + */ + nexthdr = hdr->nexthdr; + offset = ipv6_skip_exthdr(skb, skb_transport_offset(skb), &nexthdr, &frag_off); + if (offset >= 0) { + /* Check some common protocols' header */ + if (nexthdr == IPPROTO_TCP) + offset += sizeof(struct tcphdr); + else if (nexthdr == IPPROTO_UDP) + offset += sizeof(struct udphdr); + else if (nexthdr == IPPROTO_ICMPV6) + offset += sizeof(struct icmp6hdr); + else + offset += 1; + + if (!(frag_off & htons(IP6_OFFSET)) && offset > skb->len) { + __IP6_INC_STATS(net, __in6_dev_get_safely(skb->dev), + IPSTATS_MIB_INHDRERRORS); + icmpv6_param_prob(skb, ICMPV6_HDR_INCOMP, 0); + return -1; + } + } + iif = skb->dev ? skb->dev->ifindex : 0; fq = fq_find(net, fhdr->identification, hdr, iif); if (fq) { --- linux-5.8.0.orig/net/ipv6/route.c +++ linux-5.8.0/net/ipv6/route.c @@ -257,34 +257,16 @@ .confirm_neigh = ip6_confirm_neigh, }; -static unsigned int ip6_blackhole_mtu(const struct dst_entry *dst) -{ - unsigned int mtu = dst_metric_raw(dst, RTAX_MTU); - - return mtu ? : dst->dev->mtu; -} - -static void ip6_rt_blackhole_update_pmtu(struct dst_entry *dst, struct sock *sk, - struct sk_buff *skb, u32 mtu, - bool confirm_neigh) -{ -} - -static void ip6_rt_blackhole_redirect(struct dst_entry *dst, struct sock *sk, - struct sk_buff *skb) -{ -} - static struct dst_ops ip6_dst_blackhole_ops = { - .family = AF_INET6, - .destroy = ip6_dst_destroy, - .check = ip6_dst_check, - .mtu = ip6_blackhole_mtu, - .default_advmss = ip6_default_advmss, - .update_pmtu = ip6_rt_blackhole_update_pmtu, - .redirect = ip6_rt_blackhole_redirect, - .cow_metrics = dst_cow_metrics_generic, - .neigh_lookup = ip6_dst_neigh_lookup, + .family = AF_INET6, + .default_advmss = ip6_default_advmss, + .neigh_lookup = ip6_dst_neigh_lookup, + .check = ip6_dst_check, + .destroy = ip6_dst_destroy, + .cow_metrics = dst_cow_metrics_generic, + .update_pmtu = dst_blackhole_update_pmtu, + .redirect = dst_blackhole_redirect, + .mtu = dst_blackhole_mtu, }; static const u32 ip6_template_metrics[RTAX_MAX] = { --- linux-5.8.0.orig/net/ipv6/sit.c +++ linux-5.8.0/net/ipv6/sit.c @@ -987,7 +987,7 @@ skb_dst_update_pmtu_no_confirm(skb, mtu); if (skb->len > mtu && !skb_is_gso(skb)) { - icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); + icmpv6_ndo_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu); ip_rt_put(rt); goto tx_error; } @@ -1128,7 +1128,6 @@ if (tdev && !netif_is_l3_master(tdev)) { int t_hlen = tunnel->hlen + sizeof(struct iphdr); - dev->hard_header_len = tdev->hard_header_len + sizeof(struct iphdr); dev->mtu = tdev->mtu - t_hlen; if (dev->mtu < IPV6_MIN_MTU) dev->mtu = IPV6_MIN_MTU; @@ -1426,7 +1425,6 @@ dev->priv_destructor = ipip6_dev_free; dev->type = ARPHRD_SIT; - dev->hard_header_len = LL_MAX_HEADER + t_hlen; dev->mtu = ETH_DATA_LEN - t_hlen; dev->min_mtu = IPV6_MIN_MTU; dev->max_mtu = IP6_MAX_MTU - t_hlen; @@ -1647,8 +1645,11 @@ } #ifdef CONFIG_IPV6_SIT_6RD - if (ipip6_netlink_6rd_parms(data, &ip6rd)) + if (ipip6_netlink_6rd_parms(data, &ip6rd)) { err = ipip6_tunnel_update_6rd(nt, &ip6rd); + if (err < 0) + unregister_netdevice_queue(dev, NULL); + } #endif return err; --- linux-5.8.0.orig/net/ipv6/syncookies.c +++ linux-5.8.0/net/ipv6/syncookies.c @@ -136,7 +136,7 @@ __u32 cookie = ntohl(th->ack_seq) - 1; struct sock *ret = sk; struct request_sock *req; - int mss; + int full_space, mss; struct dst_entry *dst; __u8 rcv_wscale; u32 tsoff = 0; @@ -244,7 +244,13 @@ } req->rsk_window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW); - tcp_select_initial_window(sk, tcp_full_space(sk), req->mss, + /* limit the window selection if the user enforce a smaller rx buffer */ + full_space = tcp_full_space(sk); + if (sk->sk_userlocks & SOCK_RCVBUF_LOCK && + (req->rsk_window_clamp > full_space || req->rsk_window_clamp == 0)) + req->rsk_window_clamp = full_space; + + tcp_select_initial_window(sk, full_space, req->mss, &req->rsk_rcv_wnd, &req->rsk_window_clamp, ireq->wscale_ok, &rcv_wscale, dst_metric(dst, RTAX_INITRWND)); --- linux-5.8.0.orig/net/ipv6/sysctl_net_ipv6.c +++ linux-5.8.0/net/ipv6/sysctl_net_ipv6.c @@ -21,6 +21,7 @@ #include #endif +static int two = 2; static int flowlabel_reflect_max = 0x7; static int auto_flowlabels_min; static int auto_flowlabels_max = IP6_AUTO_FLOW_LABEL_MAX; @@ -150,7 +151,7 @@ .mode = 0644, .proc_handler = proc_rt6_multipath_hash_policy, .extra1 = SYSCTL_ZERO, - .extra2 = SYSCTL_ONE, + .extra2 = &two, }, { .procname = "seg6_flowlabel", --- linux-5.8.0.orig/net/ipv6/tcp_ipv6.c +++ linux-5.8.0/net/ipv6/tcp_ipv6.c @@ -1159,6 +1159,11 @@ if (!ipv6_unicast_destination(skb)) goto drop; + if (ipv6_addr_v4mapped(&ipv6_hdr(skb)->saddr)) { + __IP6_INC_STATS(sock_net(sk), NULL, IPSTATS_MIB_INHDRERRORS); + return 0; + } + return tcp_conn_request(&tcp6_request_sock_ops, &tcp_request_sock_ipv6_ops, sk, skb); --- linux-5.8.0.orig/net/ipv6/udp_offload.c +++ linux-5.8.0/net/ipv6/udp_offload.c @@ -46,7 +46,7 @@ goto out; if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) - return __udp_gso_segment(skb, features); + return __udp_gso_segment(skb, features, true); /* Do software UFO. Complete and fill in the UDP checksum as HW cannot * do checksum of UDP packets sent as multiple IP fragments. @@ -111,12 +111,22 @@ return segs; } +static struct sock *udp6_gro_lookup_skb(struct sk_buff *skb, __be16 sport, + __be16 dport) +{ + const struct ipv6hdr *iph = skb_gro_network_header(skb); + + return __udp6_lib_lookup(dev_net(skb->dev), &iph->saddr, sport, + &iph->daddr, dport, inet6_iif(skb), + inet6_sdif(skb), &udp_table, NULL); +} + INDIRECT_CALLABLE_SCOPE struct sk_buff *udp6_gro_receive(struct list_head *head, struct sk_buff *skb) { struct udphdr *uh = udp_gro_udphdr(skb); + struct sock *sk = NULL; struct sk_buff *pp; - struct sock *sk; if (unlikely(!uh)) goto flush; @@ -135,7 +145,10 @@ skip: NAPI_GRO_CB(skb)->is_ipv6 = 1; rcu_read_lock(); - sk = static_branch_unlikely(&udpv6_encap_needed_key) ? udp6_lib_lookup_skb(skb, uh->source, uh->dest) : NULL; + + if (static_branch_unlikely(&udpv6_encap_needed_key)) + sk = udp6_gro_lookup_skb(skb, uh->source, uh->dest); + pp = udp_gro_receive(head, skb, uh, sk); rcu_read_unlock(); return pp; --- linux-5.8.0.orig/net/iucv/af_iucv.c +++ linux-5.8.0/net/iucv/af_iucv.c @@ -1434,7 +1434,8 @@ break; } - if (how == SEND_SHUTDOWN || how == SHUTDOWN_MASK) { + if ((how == SEND_SHUTDOWN || how == SHUTDOWN_MASK) && + sk->sk_state == IUCV_CONNECTED) { if (iucv->transport == AF_IUCV_TRANS_IUCV) { txmsg.class = 0; txmsg.tag = 0; @@ -1644,7 +1645,7 @@ } /* Create the new socket */ - nsk = iucv_sock_alloc(NULL, sk->sk_type, GFP_ATOMIC, 0); + nsk = iucv_sock_alloc(NULL, sk->sk_protocol, GFP_ATOMIC, 0); if (!nsk) { err = pr_iucv->path_sever(path, user_data); iucv_path_free(path); @@ -1850,7 +1851,7 @@ goto out; } - nsk = iucv_sock_alloc(NULL, sk->sk_type, GFP_ATOMIC, 0); + nsk = iucv_sock_alloc(NULL, sk->sk_protocol, GFP_ATOMIC, 0); bh_lock_sock(sk); if ((sk->sk_state != IUCV_LISTEN) || sk_acceptq_is_full(sk) || @@ -2035,7 +2036,6 @@ char nullstring[8]; if (!pskb_may_pull(skb, sizeof(*trans_hdr))) { - WARN_ONCE(1, "AF_IUCV failed to receive skb, len=%u", skb->len); kfree_skb(skb); return NET_RX_SUCCESS; } --- linux-5.8.0.orig/net/key/af_key.c +++ linux-5.8.0/net/key/af_key.c @@ -2902,7 +2902,7 @@ break; if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } return sz + sizeof(struct sadb_prop); @@ -2920,7 +2920,7 @@ if (!ealg->pfkey_supported) continue; - if (!(ealg_tmpl_set(t, ealg) && ealg->available)) + if (!(ealg_tmpl_set(t, ealg))) continue; for (k = 1; ; k++) { @@ -2931,7 +2931,7 @@ if (!aalg->pfkey_supported) continue; - if (aalg_tmpl_set(t, aalg) && aalg->available) + if (aalg_tmpl_set(t, aalg)) sz += sizeof(struct sadb_comb); } } --- linux-5.8.0.orig/net/lapb/lapb_out.c +++ linux-5.8.0/net/lapb/lapb_out.c @@ -82,7 +82,8 @@ skb = skb_dequeue(&lapb->write_queue); do { - if ((skbn = skb_clone(skb, GFP_ATOMIC)) == NULL) { + skbn = skb_copy(skb, GFP_ATOMIC); + if (!skbn) { skb_queue_head(&lapb->write_queue, skb); break; } --- linux-5.8.0.orig/net/mac80211/aead_api.c +++ linux-5.8.0/net/mac80211/aead_api.c @@ -23,6 +23,7 @@ struct aead_request *aead_req; int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); u8 *__aad; + int ret; aead_req = kzalloc(reqsize + aad_len, GFP_ATOMIC); if (!aead_req) @@ -40,10 +41,10 @@ aead_request_set_crypt(aead_req, sg, sg, data_len, b_0); aead_request_set_ad(aead_req, sg[0].length); - crypto_aead_encrypt(aead_req); + ret = crypto_aead_encrypt(aead_req); kzfree(aead_req); - return 0; + return ret; } int aead_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len, --- linux-5.8.0.orig/net/mac80211/aes_gmac.c +++ linux-5.8.0/net/mac80211/aes_gmac.c @@ -22,6 +22,7 @@ struct aead_request *aead_req; int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); const __le16 *fc; + int ret; if (data_len < GMAC_MIC_LEN) return -EINVAL; @@ -59,10 +60,10 @@ aead_request_set_crypt(aead_req, sg, sg, 0, iv); aead_request_set_ad(aead_req, GMAC_AAD_LEN + data_len); - crypto_aead_encrypt(aead_req); + ret = crypto_aead_encrypt(aead_req); kzfree(aead_req); - return 0; + return ret; } struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[], --- linux-5.8.0.orig/net/mac80211/cfg.c +++ linux-5.8.0/net/mac80211/cfg.c @@ -709,7 +709,8 @@ u16 brate; sband = ieee80211_get_sband(sta->sdata); - if (sband) { + WARN_ON_ONCE(sband && !sband->bitrates); + if (sband && sband->bitrates) { brate = sband->bitrates[rate->idx].bitrate; rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift); } @@ -2864,14 +2865,14 @@ continue; for (j = 0; j < IEEE80211_HT_MCS_MASK_LEN; j++) { - if (~sdata->rc_rateidx_mcs_mask[i][j]) { + if (sdata->rc_rateidx_mcs_mask[i][j] != 0xff) { sdata->rc_has_mcs_mask[i] = true; break; } } for (j = 0; j < NL80211_VHT_NSS_MAX; j++) { - if (~sdata->rc_rateidx_vht_mcs_mask[i][j]) { + if (sdata->rc_rateidx_vht_mcs_mask[i][j] != 0xffff) { sdata->rc_has_vht_mcs_mask[i] = true; break; } --- linux-5.8.0.orig/net/mac80211/debugfs.c +++ linux-5.8.0/net/mac80211/debugfs.c @@ -120,18 +120,17 @@ { struct ieee80211_local *local = file->private_data; char buf[100]; - size_t len; - if (count > sizeof(buf)) + if (count >= sizeof(buf)) return -EINVAL; if (copy_from_user(buf, user_buf, count)) return -EFAULT; - buf[sizeof(buf) - 1] = '\0'; - len = strlen(buf); - if (len > 0 && buf[len-1] == '\n') - buf[len-1] = 0; + if (count && buf[count - 1] == '\n') + buf[count - 1] = '\0'; + else + buf[count] = '\0'; if (sscanf(buf, "fq_limit %u", &local->fq.limit) == 1) return count; @@ -177,18 +176,17 @@ { struct ieee80211_local *local = file->private_data; char buf[16]; - size_t len; - if (count > sizeof(buf)) + if (count >= sizeof(buf)) return -EINVAL; if (copy_from_user(buf, user_buf, count)) return -EFAULT; - buf[sizeof(buf) - 1] = 0; - len = strlen(buf); - if (len > 0 && buf[len - 1] == '\n') - buf[len - 1] = 0; + if (count && buf[count - 1] == '\n') + buf[count - 1] = '\0'; + else + buf[count] = '\0'; if (kstrtou16(buf, 0, &local->airtime_flags)) return -EINVAL; @@ -237,20 +235,19 @@ { struct ieee80211_local *local = file->private_data; char buf[100]; - size_t len; u32 ac, q_limit_low, q_limit_high, q_limit_low_old, q_limit_high_old; struct sta_info *sta; - if (count > sizeof(buf)) + if (count >= sizeof(buf)) return -EINVAL; if (copy_from_user(buf, user_buf, count)) return -EFAULT; - buf[sizeof(buf) - 1] = 0; - len = strlen(buf); - if (len > 0 && buf[len - 1] == '\n') - buf[len - 1] = 0; + if (count && buf[count - 1] == '\n') + buf[count - 1] = '\0'; + else + buf[count] = '\0'; if (sscanf(buf, "%u %u %u", &ac, &q_limit_low, &q_limit_high) != 3) return -EINVAL; @@ -306,18 +303,17 @@ { struct ieee80211_local *local = file->private_data; char buf[3]; - size_t len; - if (count > sizeof(buf)) + if (count >= sizeof(buf)) return -EINVAL; if (copy_from_user(buf, user_buf, count)) return -EFAULT; - buf[sizeof(buf) - 1] = '\0'; - len = strlen(buf); - if (len > 0 && buf[len - 1] == '\n') - buf[len - 1] = 0; + if (count && buf[count - 1] == '\n') + buf[count - 1] = '\0'; + else + buf[count] = '\0'; if (buf[0] == '0' && buf[1] == '\0') local->force_tx_status = 0; --- linux-5.8.0.orig/net/mac80211/driver-ops.c +++ linux-5.8.0/net/mac80211/driver-ops.c @@ -125,8 +125,11 @@ } else if (old_state == IEEE80211_STA_AUTH && new_state == IEEE80211_STA_ASSOC) { ret = drv_sta_add(local, sdata, &sta->sta); - if (ret == 0) + if (ret == 0) { sta->uploaded = true; + if (rcu_access_pointer(sta->sta.rates)) + drv_sta_rate_tbl_update(local, sdata, &sta->sta); + } } else if (old_state == IEEE80211_STA_ASSOC && new_state == IEEE80211_STA_AUTH) { drv_sta_remove(local, sdata, &sta->sta); --- linux-5.8.0.orig/net/mac80211/ibss.c +++ linux-5.8.0/net/mac80211/ibss.c @@ -1873,6 +1873,8 @@ /* remove beacon */ kfree(sdata->u.ibss.ie); + sdata->u.ibss.ie = NULL; + sdata->u.ibss.ie_len = 0; /* on the next join, re-program HT parameters */ memset(&ifibss->ht_capa, 0, sizeof(ifibss->ht_capa)); --- linux-5.8.0.orig/net/mac80211/ieee80211_i.h +++ linux-5.8.0/net/mac80211/ieee80211_i.h @@ -1069,6 +1069,7 @@ IEEE80211_QUEUE_STOP_REASON_FLUSH, IEEE80211_QUEUE_STOP_REASON_TDLS_TEARDOWN, IEEE80211_QUEUE_STOP_REASON_RESERVE_TID, + IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE, IEEE80211_QUEUE_STOP_REASONS, }; --- linux-5.8.0.orig/net/mac80211/iface.c +++ linux-5.8.0/net/mac80211/iface.c @@ -1608,6 +1608,10 @@ if (ret) return ret; + ieee80211_stop_vif_queues(local, sdata, + IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE); + synchronize_net(); + ieee80211_do_stop(sdata, false); ieee80211_teardown_sdata(sdata); @@ -1628,6 +1632,8 @@ err = ieee80211_do_open(&sdata->wdev, false); WARN(err, "type change: do_open returned %d", err); + ieee80211_wake_vif_queues(local, sdata, + IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE); return ret; } --- linux-5.8.0.orig/net/mac80211/main.c +++ linux-5.8.0/net/mac80211/main.c @@ -982,8 +982,19 @@ continue; if (!dflt_chandef.chan) { + /* + * Assign the first enabled channel to dflt_chandef + * from the list of channels + */ + for (i = 0; i < sband->n_channels; i++) + if (!(sband->channels[i].flags & + IEEE80211_CHAN_DISABLED)) + break; + /* if none found then use the first anyway */ + if (i == sband->n_channels) + i = 0; cfg80211_chandef_create(&dflt_chandef, - &sband->channels[0], + &sband->channels[i], NL80211_CHAN_NO_HT); /* init channel we're on */ if (!local->use_chanctx && !local->_oper_chandef.chan) { --- linux-5.8.0.orig/net/mac80211/mesh_hwmp.c +++ linux-5.8.0/net/mac80211/mesh_hwmp.c @@ -356,7 +356,7 @@ */ tx_time = (device_constant + 10 * test_frame_len / rate); estimated_retx = ((1 << (2 * ARITH_SHIFT)) / (s_unit - err)); - result = (tx_time * estimated_retx) >> (2 * ARITH_SHIFT); + result = ((u64)tx_time * estimated_retx) >> (2 * ARITH_SHIFT); return (u32)result; } --- linux-5.8.0.orig/net/mac80211/mesh_pathtbl.c +++ linux-5.8.0/net/mac80211/mesh_pathtbl.c @@ -60,6 +60,7 @@ atomic_set(&newtbl->entries, 0); spin_lock_init(&newtbl->gates_lock); spin_lock_init(&newtbl->walk_lock); + rhashtable_init(&newtbl->rhead, &mesh_rht_params); return newtbl; } @@ -775,9 +776,6 @@ goto free_path; } - rhashtable_init(&tbl_path->rhead, &mesh_rht_params); - rhashtable_init(&tbl_mpp->rhead, &mesh_rht_params); - sdata->u.mesh.mesh_paths = tbl_path; sdata->u.mesh.mpp_paths = tbl_mpp; --- linux-5.8.0.orig/net/mac80211/mlme.c +++ linux-5.8.0/net/mac80211/mlme.c @@ -4853,6 +4853,7 @@ struct ieee80211_supported_band *sband; struct cfg80211_chan_def chandef; bool is_6ghz = cbss->channel->band == NL80211_BAND_6GHZ; + bool is_5ghz = cbss->channel->band == NL80211_BAND_5GHZ; struct ieee80211_bss *bss = (void *)cbss->priv; int ret; u32 i; @@ -4871,7 +4872,7 @@ ifmgd->flags |= IEEE80211_STA_DISABLE_HE; } - if (!sband->vht_cap.vht_supported && !is_6ghz) { + if (!sband->vht_cap.vht_supported && is_5ghz) { ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ifmgd->flags |= IEEE80211_STA_DISABLE_HE; } @@ -4929,7 +4930,7 @@ he_oper_ie = cfg80211_find_ext_ie(WLAN_EID_EXT_HE_OPERATION, ies->data, ies->len); if (he_oper_ie && - he_oper_ie[1] == ieee80211_he_oper_size(&he_oper_ie[3])) + he_oper_ie[1] >= ieee80211_he_oper_size(&he_oper_ie[3])) he_oper = (void *)(he_oper_ie + 3); else he_oper = NULL; @@ -5350,6 +5351,7 @@ struct cfg80211_assoc_request *req) { bool is_6ghz = req->bss->channel->band == NL80211_BAND_6GHZ; + bool is_5ghz = req->bss->channel->band == NL80211_BAND_5GHZ; struct ieee80211_local *local = sdata->local; struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; struct ieee80211_bss *bss = (void *)req->bss->priv; @@ -5498,7 +5500,7 @@ if (vht_ie && vht_ie[1] >= sizeof(struct ieee80211_vht_cap)) memcpy(&assoc_data->ap_vht_cap, vht_ie + 2, sizeof(struct ieee80211_vht_cap)); - else if (!is_6ghz) + else if (is_5ghz) ifmgd->flags |= IEEE80211_STA_DISABLE_VHT | IEEE80211_STA_DISABLE_HE; rcu_read_unlock(); --- linux-5.8.0.orig/net/mac80211/rate.c +++ linux-5.8.0/net/mac80211/rate.c @@ -934,7 +934,8 @@ if (old) kfree_rcu(old, rcu_head); - drv_sta_rate_tbl_update(hw_to_local(hw), sta->sdata, pubsta); + if (sta->uploaded) + drv_sta_rate_tbl_update(hw_to_local(hw), sta->sdata, pubsta); ieee80211_sta_set_expected_throughput(pubsta, sta_get_expected_throughput(sta)); --- linux-5.8.0.orig/net/mac80211/rc80211_minstrel.c +++ linux-5.8.0/net/mac80211/rc80211_minstrel.c @@ -274,7 +274,7 @@ success = !!(info->flags & IEEE80211_TX_STAT_ACK); for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { - if (ar[i].idx < 0) + if (ar[i].idx < 0 || !ar[i].count) break; ndx = rix_to_ndx(mi, ar[i].idx); @@ -287,12 +287,6 @@ mi->r[ndx].stats.success += success; } - if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && (i >= 0)) - mi->sample_packets++; - - if (mi->sample_deferred > 0) - mi->sample_deferred--; - if (time_after(jiffies, mi->last_stats_update + mp->update_interval / (mp->new_avg ? 2 : 1))) minstrel_update_stats(mp, mi); @@ -367,7 +361,7 @@ return; delta = (mi->total_packets * sampling_ratio / 100) - - (mi->sample_packets + mi->sample_deferred / 2); + mi->sample_packets; /* delta < 0: no sampling required */ prev_sample = mi->prev_sample; @@ -376,7 +370,6 @@ return; if (mi->total_packets >= 10000) { - mi->sample_deferred = 0; mi->sample_packets = 0; mi->total_packets = 0; } else if (delta > mi->n_rates * 2) { @@ -401,19 +394,8 @@ * rate sampling method should be used. * Respect such rates that are not sampled for 20 interations. */ - if (mrr_capable && - msr->perfect_tx_time > mr->perfect_tx_time && - msr->stats.sample_skipped < 20) { - /* Only use IEEE80211_TX_CTL_RATE_CTRL_PROBE to mark - * packets that have the sampling rate deferred to the - * second MRR stage. Increase the sample counter only - * if the deferred sample rate was actually used. - * Use the sample_deferred counter to make sure that - * the sampling is not done in large bursts */ - info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; - rate++; - mi->sample_deferred++; - } else { + if (msr->perfect_tx_time < mr->perfect_tx_time || + msr->stats.sample_skipped >= 20) { if (!msr->sample_limit) return; @@ -433,6 +415,7 @@ rate->idx = mi->r[ndx].rix; rate->count = minstrel_get_retry_count(&mi->r[ndx], info); + info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; } --- linux-5.8.0.orig/net/mac80211/rc80211_minstrel.h +++ linux-5.8.0/net/mac80211/rc80211_minstrel.h @@ -126,7 +126,6 @@ u8 max_prob_rate; unsigned int total_packets; unsigned int sample_packets; - int sample_deferred; unsigned int sample_row; unsigned int sample_column; --- linux-5.8.0.orig/net/mac80211/rx.c +++ linux-5.8.0/net/mac80211/rx.c @@ -451,7 +451,8 @@ else if (status->bw == RATE_INFO_BW_5) channel_flags |= IEEE80211_CHAN_QUARTER; - if (status->band == NL80211_BAND_5GHZ) + if (status->band == NL80211_BAND_5GHZ || + status->band == NL80211_BAND_6GHZ) channel_flags |= IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ; else if (status->encoding != RX_ENC_LEGACY) channel_flags |= IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ; @@ -4207,6 +4208,8 @@ rcu_read_lock(); key = rcu_dereference(sta->ptk[sta->ptk_idx]); + if (!key) + key = rcu_dereference(sdata->default_unicast_key); if (key) { switch (key->conf.cipher) { case WLAN_CIPHER_SUITE_TKIP: --- linux-5.8.0.orig/net/mac80211/spectmgmt.c +++ linux-5.8.0/net/mac80211/spectmgmt.c @@ -133,16 +133,20 @@ } if (wide_bw_chansw_ie) { + u8 new_seg1 = wide_bw_chansw_ie->new_center_freq_seg1; struct ieee80211_vht_operation vht_oper = { .chan_width = wide_bw_chansw_ie->new_channel_width, .center_freq_seg0_idx = wide_bw_chansw_ie->new_center_freq_seg0, - .center_freq_seg1_idx = - wide_bw_chansw_ie->new_center_freq_seg1, + .center_freq_seg1_idx = new_seg1, /* .basic_mcs_set doesn't matter */ }; - struct ieee80211_ht_operation ht_oper = {}; + struct ieee80211_ht_operation ht_oper = { + .operation_mode = + cpu_to_le16(new_seg1 << + IEEE80211_HT_OP_MODE_CCFS2_SHIFT), + }; /* default, for the case of IEEE80211_VHT_CHANWIDTH_USE_HT, * to the previously parsed chandef --- linux-5.8.0.orig/net/mac80211/sta_info.c +++ linux-5.8.0/net/mac80211/sta_info.c @@ -258,6 +258,24 @@ */ void sta_info_free(struct ieee80211_local *local, struct sta_info *sta) { + /* + * If we had used sta_info_pre_move_state() then we might not + * have gone through the state transitions down again, so do + * it here now (and warn if it's inserted). + * + * This will clear state such as fast TX/RX that may have been + * allocated during state transitions. + */ + while (sta->sta_state > IEEE80211_STA_NONE) { + int ret; + + WARN_ON_ONCE(test_sta_flag(sta, WLAN_STA_INSERTED)); + + ret = sta_info_move_state(sta, sta->sta_state - 1); + if (WARN_ONCE(ret, "sta_info_move_state() returned %d\n", ret)) + break; + } + if (sta->rate_ctrl) rate_control_free_sta(sta); @@ -687,7 +705,7 @@ out_drop_sta: local->num_sta--; synchronize_net(); - __cleanup_single_sta(sta); + cleanup_single_sta(sta); out_err: mutex_unlock(&local->sta_mtx); kfree(sinfo); @@ -706,19 +724,13 @@ err = sta_info_insert_check(sta); if (err) { + sta_info_free(local, sta); mutex_unlock(&local->sta_mtx); rcu_read_lock(); - goto out_free; + return err; } - err = sta_info_insert_finish(sta); - if (err) - goto out_free; - - return 0; - out_free: - sta_info_free(local, sta); - return err; + return sta_info_insert_finish(sta); } int sta_info_insert(struct sta_info *sta) @@ -1050,7 +1062,7 @@ might_sleep(); lockdep_assert_held(&local->sta_mtx); - while (sta->sta_state == IEEE80211_STA_AUTHORIZED) { + if (sta->sta_state == IEEE80211_STA_AUTHORIZED) { ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); WARN_ON_ONCE(ret); } @@ -2122,6 +2134,10 @@ int rate_idx = STA_STATS_GET(LEGACY_IDX, rate); sband = local->hw.wiphy->bands[band]; + + if (WARN_ON_ONCE(!sband->bitrates)) + break; + brate = sband->bitrates[rate_idx].bitrate; if (rinfo->bw == RATE_INFO_BW_5) shift = 2; --- linux-5.8.0.orig/net/mac80211/sta_info.h +++ linux-5.8.0/net/mac80211/sta_info.h @@ -522,7 +522,7 @@ * @status_stats.retry_failed: # of frames that failed after retry * @status_stats.retry_count: # of retries attempted * @status_stats.lost_packets: # of lost packets - * @status_stats.last_tdls_pkt_time: timestamp of last TDLS packet + * @status_stats.last_pkt_time: timestamp of last ACKed packet * @status_stats.msdu_retries: # of MSDU retries * @status_stats.msdu_failed: # of failed MSDUs * @status_stats.last_ack: last ack timestamp (jiffies) @@ -595,7 +595,7 @@ unsigned long filtered; unsigned long retry_failed, retry_count; unsigned int lost_packets; - unsigned long last_tdls_pkt_time; + unsigned long last_pkt_time; u64 msdu_retries[IEEE80211_NUM_TIDS + 1]; u64 msdu_failed[IEEE80211_NUM_TIDS + 1]; unsigned long last_ack; --- linux-5.8.0.orig/net/mac80211/status.c +++ linux-5.8.0/net/mac80211/status.c @@ -755,12 +755,16 @@ * - current throughput (higher value for higher tpt)? */ #define STA_LOST_PKT_THRESHOLD 50 +#define STA_LOST_PKT_TIME HZ /* 1 sec since last ACK */ #define STA_LOST_TDLS_PKT_THRESHOLD 10 #define STA_LOST_TDLS_PKT_TIME (10*HZ) /* 10secs since last ACK */ static void ieee80211_lost_packet(struct sta_info *sta, struct ieee80211_tx_info *info) { + unsigned long pkt_time = STA_LOST_PKT_TIME; + unsigned int pkt_thr = STA_LOST_PKT_THRESHOLD; + /* If driver relies on its own algorithm for station kickout, skip * mac80211 packet loss mechanism. */ @@ -773,21 +777,20 @@ return; sta->status_stats.lost_packets++; - if (!sta->sta.tdls && - sta->status_stats.lost_packets < STA_LOST_PKT_THRESHOLD) - return; + if (sta->sta.tdls) { + pkt_time = STA_LOST_TDLS_PKT_TIME; + pkt_thr = STA_LOST_PKT_THRESHOLD; + } /* * If we're in TDLS mode, make sure that all STA_LOST_TDLS_PKT_THRESHOLD * of the last packets were lost, and that no ACK was received in the * last STA_LOST_TDLS_PKT_TIME ms, before triggering the CQM packet-loss * mechanism. + * For non-TDLS, use STA_LOST_PKT_THRESHOLD and STA_LOST_PKT_TIME */ - if (sta->sta.tdls && - (sta->status_stats.lost_packets < STA_LOST_TDLS_PKT_THRESHOLD || - time_before(jiffies, - sta->status_stats.last_tdls_pkt_time + - STA_LOST_TDLS_PKT_TIME))) + if (sta->status_stats.lost_packets < pkt_thr || + !time_after(jiffies, sta->status_stats.last_pkt_time + pkt_time)) return; cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, @@ -1035,9 +1038,7 @@ sta->status_stats.lost_packets = 0; /* Track when last TDLS packet was ACKed */ - if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) - sta->status_stats.last_tdls_pkt_time = - jiffies; + sta->status_stats.last_pkt_time = jiffies; } else if (noack_success) { /* nothing to do here, do not account as lost */ } else { @@ -1170,9 +1171,8 @@ if (sta->status_stats.lost_packets) sta->status_stats.lost_packets = 0; - /* Track when last TDLS packet was ACKed */ - if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) - sta->status_stats.last_tdls_pkt_time = jiffies; + /* Track when last packet was ACKed */ + sta->status_stats.last_pkt_time = jiffies; } else if (test_sta_flag(sta, WLAN_STA_PS_STA)) { return; } else if (noack_success) { @@ -1261,8 +1261,7 @@ if (sta->status_stats.lost_packets) sta->status_stats.lost_packets = 0; - if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) - sta->status_stats.last_tdls_pkt_time = jiffies; + sta->status_stats.last_pkt_time = jiffies; } else { ieee80211_lost_packet(sta, info); } --- linux-5.8.0.orig/net/mac80211/tx.c +++ linux-5.8.0/net/mac80211/tx.c @@ -657,7 +657,7 @@ if (!skip_hw && tx->key && tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) info->control.hw_key = &tx->key->conf; - } else if (!ieee80211_is_mgmt(hdr->frame_control) && tx->sta && + } else if (ieee80211_is_data_present(hdr->frame_control) && tx->sta && test_sta_flag(tx->sta, WLAN_STA_USES_ENCRYPTION)) { return TX_DROP; } @@ -1938,19 +1938,24 @@ /* device xmit handlers */ +enum ieee80211_encrypt { + ENCRYPT_NO, + ENCRYPT_MGMT, + ENCRYPT_DATA, +}; + static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb, - int head_need, bool may_encrypt) + int head_need, + enum ieee80211_encrypt encrypt) { struct ieee80211_local *local = sdata->local; - struct ieee80211_hdr *hdr; bool enc_tailroom; int tail_need = 0; - hdr = (struct ieee80211_hdr *) skb->data; - enc_tailroom = may_encrypt && - (sdata->crypto_tx_tailroom_needed_cnt || - ieee80211_is_mgmt(hdr->frame_control)); + enc_tailroom = encrypt == ENCRYPT_MGMT || + (encrypt == ENCRYPT_DATA && + sdata->crypto_tx_tailroom_needed_cnt); if (enc_tailroom) { tail_need = IEEE80211_ENCRYPT_TAILROOM; @@ -1982,23 +1987,29 @@ { struct ieee80211_local *local = sdata->local; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_hdr *hdr; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; int headroom; - bool may_encrypt; + enum ieee80211_encrypt encrypt; - may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT); + if (info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT) + encrypt = ENCRYPT_NO; + else if (ieee80211_is_mgmt(hdr->frame_control)) + encrypt = ENCRYPT_MGMT; + else + encrypt = ENCRYPT_DATA; headroom = local->tx_headroom; - if (may_encrypt) + if (encrypt != ENCRYPT_NO) headroom += sdata->encrypt_headroom; headroom -= skb_headroom(skb); headroom = max_t(int, 0, headroom); - if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) { + if (ieee80211_skb_resize(sdata, skb, headroom, encrypt)) { ieee80211_free_txskb(&local->hw, skb); return; } + /* reload after potential resize */ hdr = (struct ieee80211_hdr *) skb->data; info->control.vif = &sdata->vif; @@ -2827,7 +2838,7 @@ head_need += sdata->encrypt_headroom; head_need += local->tx_headroom; head_need = max_t(int, 0, head_need); - if (ieee80211_skb_resize(sdata, skb, head_need, true)) { + if (ieee80211_skb_resize(sdata, skb, head_need, ENCRYPT_DATA)) { ieee80211_free_txskb(&local->hw, skb); skb = NULL; return ERR_PTR(-ENOMEM); @@ -3501,7 +3512,7 @@ if (unlikely(ieee80211_skb_resize(sdata, skb, max_t(int, extra_head + hw_headroom - skb_headroom(skb), 0), - false))) { + ENCRYPT_NO))) { kfree_skb(skb); return true; } @@ -3822,7 +3833,7 @@ * get immediately moved to the back of the list on the next * call to ieee80211_next_txq(). */ - if (txqi->txq.sta && + if (txqi->txq.sta && local->airtime_flags && wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS)) list_add(&txqi->schedule_order, @@ -4212,6 +4223,12 @@ if (is_zero_ether_addr(ra)) goto out_free; + if (local->ops->wake_tx_queue) { + u16 queue = __ieee80211_select_queue(sdata, sta, skb); + skb_set_queue_mapping(skb, queue); + skb_get_hash(skb); + } + multicast = is_multicast_ether_addr(ra); if (sta) --- linux-5.8.0.orig/net/mac80211/util.c +++ linux-5.8.0/net/mac80211/util.c @@ -912,7 +912,7 @@ break; case WLAN_EID_EXT_HE_OPERATION: if (len >= sizeof(*elems->he_operation) && - len == ieee80211_he_oper_size(data) - 1) { + len >= ieee80211_he_oper_size(data) - 1) { if (crc) *crc = crc32_be(*crc, (void *)elem, elem->datalen + 2); @@ -3354,9 +3354,10 @@ he_chandef.center_freq1 = ieee80211_channel_to_frequency(he_6ghz_oper->ccfs0, NL80211_BAND_6GHZ); - he_chandef.center_freq2 = - ieee80211_channel_to_frequency(he_6ghz_oper->ccfs1, - NL80211_BAND_6GHZ); + if (support_80_80 || support_160) + he_chandef.center_freq2 = + ieee80211_channel_to_frequency(he_6ghz_oper->ccfs1, + NL80211_BAND_6GHZ); } if (!cfg80211_chandef_valid(&he_chandef)) { --- linux-5.8.0.orig/net/mac80211/vht.c +++ linux-5.8.0/net/mac80211/vht.c @@ -168,10 +168,7 @@ /* take some capabilities as-is */ cap_info = le32_to_cpu(vht_cap_ie->vht_cap_info); vht_cap->cap = cap_info; - vht_cap->cap &= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 | - IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 | - IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 | - IEEE80211_VHT_CAP_RXLDPC | + vht_cap->cap &= IEEE80211_VHT_CAP_RXLDPC | IEEE80211_VHT_CAP_VHT_TXOP_PS | IEEE80211_VHT_CAP_HTC_VHT | IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK | @@ -180,6 +177,9 @@ IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN | IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN; + vht_cap->cap |= min_t(u32, cap_info & IEEE80211_VHT_CAP_MAX_MPDU_MASK, + own_cap.cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK); + /* and some based on our own capabilities */ switch (own_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) { case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ: @@ -469,12 +469,18 @@ * IEEE80211-2016 specification makes higher bandwidth operation * possible on the TDLS link if the peers have wider bandwidth * capability. + * + * However, in this case, and only if the TDLS peer is authorized, + * limit to the tdls_chandef so that the configuration here isn't + * wider than what's actually requested on the channel context. */ if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && - test_sta_flag(sta, WLAN_STA_TDLS_WIDER_BW)) - return bw; - - bw = min(bw, ieee80211_chan_width_to_rx_bw(bss_width)); + test_sta_flag(sta, WLAN_STA_TDLS_WIDER_BW) && + test_sta_flag(sta, WLAN_STA_AUTHORIZED) && + sta->tdls_chandef.chan) + bw = min(bw, ieee80211_chan_width_to_rx_bw(sta->tdls_chandef.width)); + else + bw = min(bw, ieee80211_chan_width_to_rx_bw(bss_width)); return bw; } --- linux-5.8.0.orig/net/mac802154/tx.c +++ linux-5.8.0/net/mac802154/tx.c @@ -34,11 +34,11 @@ if (res) goto err_tx; - ieee802154_xmit_complete(&local->hw, skb, false); - dev->stats.tx_packets++; dev->stats.tx_bytes += skb->len; + ieee802154_xmit_complete(&local->hw, skb, false); + return; err_tx: @@ -78,6 +78,8 @@ /* async is priority, otherwise sync is fallback */ if (local->ops->xmit_async) { + unsigned int len = skb->len; + ret = drv_xmit_async(local, skb); if (ret) { ieee802154_wake_queue(&local->hw); @@ -85,7 +87,7 @@ } dev->stats.tx_packets++; - dev->stats.tx_bytes += skb->len; + dev->stats.tx_bytes += len; } else { local->tx_skb = skb; queue_work(local->workqueue, &local->tx_work); --- linux-5.8.0.orig/net/mpls/mpls_gso.c +++ linux-5.8.0/net/mpls/mpls_gso.c @@ -14,6 +14,7 @@ #include #include #include +#include static struct sk_buff *mpls_gso_segment(struct sk_buff *skb, netdev_features_t features) @@ -27,6 +28,8 @@ skb_reset_network_header(skb); mpls_hlen = skb_inner_network_header(skb) - skb_network_header(skb); + if (unlikely(!mpls_hlen || mpls_hlen % MPLS_HLEN)) + goto out; if (unlikely(!pskb_may_pull(skb, mpls_hlen))) goto out; --- linux-5.8.0.orig/net/mptcp/mib.c +++ linux-5.8.0/net/mptcp/mib.c @@ -58,6 +58,7 @@ for (i = 0; mptcp_snmp_list[i].name; i++) seq_puts(seq, " 0"); + seq_putc(seq, '\n'); return; } --- linux-5.8.0.orig/net/mptcp/options.c +++ linux-5.8.0/net/mptcp/options.c @@ -296,6 +296,7 @@ mp_opt->mp_capable = 0; mp_opt->mp_join = 0; mp_opt->add_addr = 0; + mp_opt->ahmac = 0; mp_opt->rm_addr = 0; mp_opt->dss = 0; @@ -517,7 +518,7 @@ return ret; } - if (subflow->use_64bit_ack) { + if (READ_ONCE(msk->use_64bit_ack)) { ack_size = TCPOLEN_MPTCP_DSS_ACK64; opts->ext_copy.data_ack = msk->ack_seq; opts->ext_copy.ack64 = 1; --- linux-5.8.0.orig/net/mptcp/protocol.c +++ linux-5.8.0/net/mptcp/protocol.c @@ -605,8 +605,10 @@ if (!psize) return -EINVAL; - if (!sk_wmem_schedule(sk, psize + dfrag->overhead)) + if (!sk_wmem_schedule(sk, psize + dfrag->overhead)) { + iov_iter_revert(&msg->msg_iter, psize); return -ENOMEM; + } } else { offset = dfrag->offset; psize = min_t(size_t, dfrag->data_len, avail_size); @@ -617,8 +619,10 @@ */ ret = do_tcp_sendpages(ssk, page, offset, psize, msg->msg_flags | MSG_SENDPAGE_NOTLAST | MSG_DONTWAIT); - if (ret <= 0) + if (ret <= 0) { + iov_iter_revert(&msg->msg_iter, psize); return ret; + } frag_truesize += ret; if (!retransmission) { @@ -772,7 +776,6 @@ restart: mptcp_clean_una(sk); -wait_for_sndbuf: __mptcp_flush_join_list(msk); ssk = mptcp_subflow_get_send(msk); while (!sk_stream_memory_free(sk) || @@ -873,7 +876,7 @@ */ mptcp_set_timeout(sk, ssk); release_sock(ssk); - goto wait_for_sndbuf; + goto restart; } } } @@ -1127,8 +1130,11 @@ struct sock *ssk = mptcp_subflow_tcp_sock(subflow); /* still data outstanding at TCP level? Don't retransmit. */ - if (!tcp_write_queue_empty(ssk)) + if (!tcp_write_queue_empty(ssk)) { + if (inet_csk(ssk)->icsk_ca_state >= TCP_CA_Loss) + continue; return NULL; + } if (subflow->backup) { if (!backup) @@ -1475,6 +1481,8 @@ sock_reset_flag(nsk, SOCK_RCU_FREE); /* will be fully established after successful MPC subflow creation */ inet_sk_state_store(nsk, TCP_SYN_RECV); + + security_inet_csk_clone(nsk, req); bh_unlock_sock(nsk); /* keep a single reference */ --- linux-5.8.0.orig/net/mptcp/protocol.h +++ linux-5.8.0/net/mptcp/protocol.h @@ -199,6 +199,7 @@ u32 token; unsigned long flags; bool can_ack; + bool use_64bit_ack; /* Set when we received a 64-bit DSN */ spinlock_t join_list_lock; struct work_struct work; struct list_head conn_list; @@ -285,7 +286,6 @@ data_avail : 1, rx_eof : 1, data_fin_tx_enable : 1, - use_64bit_ack : 1, /* Set when we received a 64-bit DSN */ can_ack : 1; /* only after processing the remote a key */ u64 data_fin_tx_seq; u32 remote_nonce; --- linux-5.8.0.orig/net/mptcp/subflow.c +++ linux-5.8.0/net/mptcp/subflow.c @@ -337,6 +337,11 @@ if (!ipv6_unicast_destination(skb)) goto drop; + if (ipv6_addr_v4mapped(&ipv6_hdr(skb)->saddr)) { + __IP6_INC_STATS(sock_net(sk), NULL, IPSTATS_MIB_INHDRERRORS); + return 0; + } + return tcp_conn_request(&subflow_request_sock_ops, &subflow_request_sock_ipv6_ops, sk, skb); @@ -682,12 +687,11 @@ if (!mpext->dsn64) { map_seq = expand_seq(subflow->map_seq, subflow->map_data_len, mpext->data_seq); - subflow->use_64bit_ack = 0; pr_debug("expanded seq=%llu", subflow->map_seq); } else { map_seq = mpext->data_seq; - subflow->use_64bit_ack = 1; } + WRITE_ONCE(mptcp_sk(subflow->conn)->use_64bit_ack, !!mpext->dsn64); if (subflow->map_valid) { /* Allow replacing only with an identical map */ --- linux-5.8.0.orig/net/ncsi/ncsi-manage.c +++ linux-5.8.0/net/ncsi/ncsi-manage.c @@ -1726,9 +1726,6 @@ ndp->ptype.dev = dev; dev_add_pack(&ndp->ptype); - /* Set up generic netlink interface */ - ncsi_init_netlink(dev); - pdev = to_platform_device(dev->dev.parent); if (pdev) { np = pdev->dev.of_node; @@ -1892,8 +1889,6 @@ list_del_rcu(&ndp->node); spin_unlock_irqrestore(&ncsi_dev_lock, flags); - ncsi_unregister_netlink(nd->dev); - kfree(ndp); } EXPORT_SYMBOL_GPL(ncsi_unregister_dev); --- linux-5.8.0.orig/net/ncsi/ncsi-netlink.c +++ linux-5.8.0/net/ncsi/ncsi-netlink.c @@ -766,24 +766,8 @@ .n_ops = ARRAY_SIZE(ncsi_ops), }; -int ncsi_init_netlink(struct net_device *dev) +static int __init ncsi_init_netlink(void) { - int rc; - - rc = genl_register_family(&ncsi_genl_family); - if (rc) - netdev_err(dev, "ncsi: failed to register netlink family\n"); - - return rc; -} - -int ncsi_unregister_netlink(struct net_device *dev) -{ - int rc; - - rc = genl_unregister_family(&ncsi_genl_family); - if (rc) - netdev_err(dev, "ncsi: failed to unregister netlink family\n"); - - return rc; + return genl_register_family(&ncsi_genl_family); } +subsys_initcall(ncsi_init_netlink); --- linux-5.8.0.orig/net/ncsi/ncsi-netlink.h +++ linux-5.8.0/net/ncsi/ncsi-netlink.h @@ -22,7 +22,4 @@ struct nlmsghdr *nlhdr, int err); -int ncsi_init_netlink(struct net_device *dev); -int ncsi_unregister_netlink(struct net_device *dev); - #endif /* __NCSI_NETLINK_H__ */ --- linux-5.8.0.orig/net/ncsi/ncsi-rsp.c +++ linux-5.8.0/net/ncsi/ncsi-rsp.c @@ -1120,7 +1120,7 @@ int payload, i, ret; /* Find the NCSI device */ - nd = ncsi_find_dev(dev); + nd = ncsi_find_dev(orig_dev); ndp = nd ? TO_NCSI_DEV_PRIV(nd) : NULL; if (!ndp) return -ENODEV; --- linux-5.8.0.orig/net/netfilter/ipset/ip_set_core.c +++ linux-5.8.0/net/netfilter/ipset/ip_set_core.c @@ -286,8 +286,7 @@ static const struct nla_policy ipaddr_policy[IPSET_ATTR_IPADDR_MAX + 1] = { [IPSET_ATTR_IPADDR_IPV4] = { .type = NLA_U32 }, - [IPSET_ATTR_IPADDR_IPV6] = { .type = NLA_BINARY, - .len = sizeof(struct in6_addr) }, + [IPSET_ATTR_IPADDR_IPV6] = NLA_POLICY_EXACT_LEN(sizeof(struct in6_addr)), }; int @@ -652,13 +651,14 @@ if (SET_WITH_COUNTER(set)) { struct ip_set_counter *counter = ext_counter(data, set); + ip_set_update_counter(counter, ext, flags); + if (flags & IPSET_FLAG_MATCH_COUNTERS && !(ip_set_match_counter(ip_set_get_packets(counter), mext->packets, mext->packets_op) && ip_set_match_counter(ip_set_get_bytes(counter), mext->bytes, mext->bytes_op))) return false; - ip_set_update_counter(counter, ext, flags); } if (SET_WITH_SKBINFO(set)) ip_set_get_skbinfo(ext_skbinfo(data, set), --- linux-5.8.0.orig/net/netfilter/ipset/ip_set_hash_gen.h +++ linux-5.8.0/net/netfilter/ipset/ip_set_hash_gen.h @@ -143,20 +143,6 @@ return hsize * sizeof(struct hbucket *) + sizeof(struct htable); } -/* Compute htable_bits from the user input parameter hashsize */ -static u8 -htable_bits(u32 hashsize) -{ - /* Assume that hashsize == 2^htable_bits */ - u8 bits = fls(hashsize - 1); - - if (jhash_size(bits) != hashsize) - /* Round up to the first 2^n value */ - bits = fls(hashsize); - - return bits; -} - #ifdef IP_SET_HASH_WITH_NETS #if IPSET_NET_COUNT > 1 #define __CIDR(cidr, i) (cidr[i]) @@ -644,7 +630,7 @@ struct htype *h = set->data; struct htable *t, *orig; u8 htable_bits; - size_t dsize = set->dsize; + size_t hsize, dsize = set->dsize; #ifdef IP_SET_HASH_WITH_NETS u8 flags; struct mtype_elem *tmp; @@ -668,14 +654,12 @@ retry: ret = 0; htable_bits++; - if (!htable_bits) { - /* In case we have plenty of memory :-) */ - pr_warn("Cannot increase the hashsize of set %s further\n", - set->name); - ret = -IPSET_ERR_HASH_FULL; - goto out; - } - t = ip_set_alloc(htable_size(htable_bits)); + if (!htable_bits) + goto hbwarn; + hsize = htable_size(htable_bits); + if (!hsize) + goto hbwarn; + t = ip_set_alloc(hsize); if (!t) { ret = -ENOMEM; goto out; @@ -817,6 +801,12 @@ if (ret == -EAGAIN) goto retry; goto out; + +hbwarn: + /* In case we have plenty of memory :-) */ + pr_warn("Cannot increase the hashsize of set %s further\n", set->name); + ret = -IPSET_ERR_HASH_FULL; + goto out; } /* Get the current number of elements and ext_size in the set */ @@ -1520,7 +1510,11 @@ if (!h) return -ENOMEM; - hbits = htable_bits(hashsize); + /* Compute htable_bits from the user input parameter hashsize. + * Assume that hashsize == 2^htable_bits, + * otherwise round up to the first 2^n value. + */ + hbits = fls(hashsize - 1); hsize = htable_size(hbits); if (hsize == 0) { kfree(h); --- linux-5.8.0.orig/net/netfilter/ipvs/ip_vs_core.c +++ linux-5.8.0/net/netfilter/ipvs/ip_vs_core.c @@ -748,12 +748,12 @@ struct dst_entry *dst = skb_dst(skb); if (dst->dev && !(dst->dev->flags & IFF_LOOPBACK) && - ip6_route_me_harder(ipvs->net, skb) != 0) + ip6_route_me_harder(ipvs->net, skb->sk, skb) != 0) return 1; } else #endif if (!(skb_rtable(skb)->rt_flags & RTCF_LOCAL) && - ip_route_me_harder(ipvs->net, skb, RTN_LOCAL) != 0) + ip_route_me_harder(ipvs->net, skb->sk, skb, RTN_LOCAL) != 0) return 1; return 0; @@ -2066,14 +2066,14 @@ conn_reuse_mode = sysctl_conn_reuse_mode(ipvs); if (conn_reuse_mode && !iph.fragoffs && is_new_conn(skb, &iph) && cp) { - bool uses_ct = false, resched = false; + bool old_ct = false, resched = false; if (unlikely(sysctl_expire_nodest_conn(ipvs)) && cp->dest && unlikely(!atomic_read(&cp->dest->weight))) { resched = true; - uses_ct = ip_vs_conn_uses_conntrack(cp, skb); + old_ct = ip_vs_conn_uses_old_conntrack(cp, skb); } else if (is_new_conn_expected(cp, conn_reuse_mode)) { - uses_ct = ip_vs_conn_uses_conntrack(cp, skb); + old_ct = ip_vs_conn_uses_old_conntrack(cp, skb); if (!atomic_read(&cp->n_control)) { resched = true; } else { @@ -2081,15 +2081,17 @@ * that uses conntrack while it is still * referenced by controlled connection(s). */ - resched = !uses_ct; + resched = !old_ct; } } if (resched) { + if (!old_ct) + cp->flags &= ~IP_VS_CONN_F_NFCT; if (!atomic_read(&cp->n_control)) ip_vs_conn_expire_now(cp); __ip_vs_conn_put(cp); - if (uses_ct) + if (old_ct) return NF_DROP; cp = NULL; } --- linux-5.8.0.orig/net/netfilter/ipvs/ip_vs_ctl.c +++ linux-5.8.0/net/netfilter/ipvs/ip_vs_ctl.c @@ -2471,6 +2471,10 @@ /* Set timeout values for (tcp tcpfin udp) */ ret = ip_vs_set_timeout(ipvs, (struct ip_vs_timeout_user *)arg); goto out_unlock; + } else if (!len) { + /* No more commands with len == 0 below */ + ret = -EINVAL; + goto out_unlock; } usvc_compat = (struct ip_vs_service_user *)arg; @@ -2547,9 +2551,6 @@ break; case IP_VS_SO_SET_DELDEST: ret = ip_vs_del_dest(svc, &udest); - break; - default: - ret = -EINVAL; } out_unlock: @@ -4123,12 +4124,18 @@ spin_lock_init(&ipvs->tot_stats.lock); - proc_create_net("ip_vs", 0, ipvs->net->proc_net, &ip_vs_info_seq_ops, - sizeof(struct ip_vs_iter)); - proc_create_net_single("ip_vs_stats", 0, ipvs->net->proc_net, - ip_vs_stats_show, NULL); - proc_create_net_single("ip_vs_stats_percpu", 0, ipvs->net->proc_net, - ip_vs_stats_percpu_show, NULL); +#ifdef CONFIG_PROC_FS + if (!proc_create_net("ip_vs", 0, ipvs->net->proc_net, + &ip_vs_info_seq_ops, sizeof(struct ip_vs_iter))) + goto err_vs; + if (!proc_create_net_single("ip_vs_stats", 0, ipvs->net->proc_net, + ip_vs_stats_show, NULL)) + goto err_stats; + if (!proc_create_net_single("ip_vs_stats_percpu", 0, + ipvs->net->proc_net, + ip_vs_stats_percpu_show, NULL)) + goto err_percpu; +#endif if (ip_vs_control_net_init_sysctl(ipvs)) goto err; @@ -4136,6 +4143,17 @@ return 0; err: +#ifdef CONFIG_PROC_FS + remove_proc_entry("ip_vs_stats_percpu", ipvs->net->proc_net); + +err_percpu: + remove_proc_entry("ip_vs_stats", ipvs->net->proc_net); + +err_stats: + remove_proc_entry("ip_vs", ipvs->net->proc_net); + +err_vs: +#endif free_percpu(ipvs->tot_stats.cpustats); return -ENOMEM; } @@ -4144,9 +4162,11 @@ { ip_vs_trash_cleanup(ipvs); ip_vs_control_net_cleanup_sysctl(ipvs); +#ifdef CONFIG_PROC_FS remove_proc_entry("ip_vs_stats_percpu", ipvs->net->proc_net); remove_proc_entry("ip_vs_stats", ipvs->net->proc_net); remove_proc_entry("ip_vs", ipvs->net->proc_net); +#endif free_percpu(ipvs->tot_stats.cpustats); } --- linux-5.8.0.orig/net/netfilter/ipvs/ip_vs_xmit.c +++ linux-5.8.0/net/netfilter/ipvs/ip_vs_xmit.c @@ -609,6 +609,8 @@ if (ret == NF_ACCEPT) { nf_reset_ct(skb); skb_forward_csum(skb); + if (skb->dev) + skb->tstamp = 0; } return ret; } @@ -649,6 +651,8 @@ if (!local) { skb_forward_csum(skb); + if (skb->dev) + skb->tstamp = 0; NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb, NULL, skb_dst(skb)->dev, dst_output); } else @@ -669,6 +673,8 @@ if (!local) { ip_vs_drop_early_demux_sk(skb); skb_forward_csum(skb); + if (skb->dev) + skb->tstamp = 0; NF_HOOK(pf, NF_INET_LOCAL_OUT, cp->ipvs->net, NULL, skb, NULL, skb_dst(skb)->dev, dst_output); } else --- linux-5.8.0.orig/net/netfilter/nf_conntrack_core.c +++ linux-5.8.0/net/netfilter/nf_conntrack_core.c @@ -1229,7 +1229,8 @@ * Let nf_ct_resolve_clash() deal with this later. */ if (nf_ct_tuple_equal(&ignored_conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple, - &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple)) + &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple) && + nf_ct_zone_equal(ct, zone, IP_CT_DIR_ORIGINAL)) continue; NF_CT_STAT_INC_ATOMIC(net, found); --- linux-5.8.0.orig/net/netfilter/nf_conntrack_netlink.c +++ linux-5.8.0/net/netfilter/nf_conntrack_netlink.c @@ -331,10 +331,15 @@ static int ctnetlink_dump_secctx(struct sk_buff *skb, const struct nf_conn *ct) { struct nlattr *nest_secctx; - int len, ret; - char *secctx; + int ret; + struct lsmblob blob; + struct lsmcontext context; - ret = security_secid_to_secctx(ct->secmark, &secctx, &len); + /* lsmblob_init() puts ct->secmark into all of the secids in blob. + * security_secid_to_secctx() will know which security module + * to use to create the secctx. */ + lsmblob_init(&blob, ct->secmark); + ret = security_secid_to_secctx(&blob, &context, LSMBLOB_DISPLAY); if (ret) return 0; @@ -343,13 +348,13 @@ if (!nest_secctx) goto nla_put_failure; - if (nla_put_string(skb, CTA_SECCTX_NAME, secctx)) + if (nla_put_string(skb, CTA_SECCTX_NAME, context.context)) goto nla_put_failure; nla_nest_end(skb, nest_secctx); ret = 0; nla_put_failure: - security_release_secctx(secctx, len); + security_release_secctx(&context); return ret; } #else @@ -647,11 +652,16 @@ { #ifdef CONFIG_NF_CONNTRACK_SECMARK int len, ret; + struct lsmblob blob; + struct lsmcontext context; - ret = security_secid_to_secctx(ct->secmark, NULL, &len); + ret = security_secid_to_secctx(&blob, &context, LSMBLOB_DISPLAY); if (ret) return 0; + len = context.len; + security_release_secctx(&context); + return nla_total_size(0) /* CTA_SECCTX */ + nla_total_size(sizeof(char) * len); /* CTA_SECCTX_NAME */ #else @@ -851,7 +861,6 @@ } struct ctnetlink_filter { - u_int32_t cta_flags; u8 family; u_int32_t orig_flags; @@ -906,10 +915,6 @@ struct nf_conntrack_zone *zone, u_int32_t flags); -/* applied on filters */ -#define CTA_FILTER_F_CTA_MARK (1 << 0) -#define CTA_FILTER_F_CTA_MARK_MASK (1 << 1) - static struct ctnetlink_filter * ctnetlink_alloc_filter(const struct nlattr * const cda[], u8 family) { @@ -930,14 +935,10 @@ #ifdef CONFIG_NF_CONNTRACK_MARK if (cda[CTA_MARK]) { filter->mark.val = ntohl(nla_get_be32(cda[CTA_MARK])); - filter->cta_flags |= CTA_FILTER_FLAG(CTA_MARK); - - if (cda[CTA_MARK_MASK]) { + if (cda[CTA_MARK_MASK]) filter->mark.mask = ntohl(nla_get_be32(cda[CTA_MARK_MASK])); - filter->cta_flags |= CTA_FILTER_FLAG(CTA_MARK_MASK); - } else { + else filter->mark.mask = 0xffffffff; - } } else if (cda[CTA_MARK_MASK]) { err = -EINVAL; goto err_filter; @@ -1117,11 +1118,7 @@ } #ifdef CONFIG_NF_CONNTRACK_MARK - if ((filter->cta_flags & CTA_FILTER_FLAG(CTA_MARK_MASK)) && - (ct->mark & filter->mark.mask) != filter->mark.val) - goto ignore_entry; - else if ((filter->cta_flags & CTA_FILTER_FLAG(CTA_MARK)) && - ct->mark != filter->mark.val) + if ((ct->mark & filter->mark.mask) != filter->mark.val) goto ignore_entry; #endif @@ -1404,7 +1401,8 @@ if (err < 0) return err; - + if (l3num != NFPROTO_IPV4 && l3num != NFPROTO_IPV6) + return -EOPNOTSUPP; tuple->src.l3num = l3num; if (flags & CTA_FILTER_FLAG(CTA_IP_DST) || @@ -2971,6 +2969,7 @@ memset(&m, 0xFF, sizeof(m)); memcpy(&m.src.u3, &mask->src.u3, sizeof(m.src.u3)); m.src.u.all = mask->src.u.all; + m.src.l3num = tuple->src.l3num; m.dst.protonum = tuple->dst.protonum; nest_parms = nla_nest_start(skb, CTA_EXPECT_MASK); --- linux-5.8.0.orig/net/netfilter/nf_conntrack_proto.c +++ linux-5.8.0/net/netfilter/nf_conntrack_proto.c @@ -565,6 +565,7 @@ int err; err = nf_ct_netns_do_get(net, NFPROTO_IPV4); +#if IS_ENABLED(CONFIG_IPV6) if (err < 0) goto err1; err = nf_ct_netns_do_get(net, NFPROTO_IPV6); @@ -575,6 +576,7 @@ err2: nf_ct_netns_put(net, NFPROTO_IPV4); err1: +#endif return err; } --- linux-5.8.0.orig/net/netfilter/nf_conntrack_proto_gre.c +++ linux-5.8.0/net/netfilter/nf_conntrack_proto_gre.c @@ -218,9 +218,6 @@ enum ip_conntrack_info ctinfo, const struct nf_hook_state *state) { - if (state->pf != NFPROTO_IPV4) - return -NF_ACCEPT; - if (!nf_ct_is_confirmed(ct)) { unsigned int *timeouts = nf_ct_timeout_lookup(ct); --- linux-5.8.0.orig/net/netfilter/nf_conntrack_proto_sctp.c +++ linux-5.8.0/net/netfilter/nf_conntrack_proto_sctp.c @@ -62,6 +62,8 @@ [SCTP_CONNTRACK_HEARTBEAT_ACKED] = 210 SECS, }; +#define SCTP_FLAG_HEARTBEAT_VTAG_FAILED 1 + #define sNO SCTP_CONNTRACK_NONE #define sCL SCTP_CONNTRACK_CLOSED #define sCW SCTP_CONNTRACK_COOKIE_WAIT @@ -369,6 +371,7 @@ u_int32_t offset, count; unsigned int *timeouts; unsigned long map[256 / sizeof(unsigned long)] = { 0 }; + bool ignore = false; if (sctp_error(skb, dataoff, state)) return -NF_ACCEPT; @@ -427,15 +430,39 @@ /* Sec 8.5.1 (D) */ if (sh->vtag != ct->proto.sctp.vtag[dir]) goto out_unlock; - } else if (sch->type == SCTP_CID_HEARTBEAT || - sch->type == SCTP_CID_HEARTBEAT_ACK) { + } else if (sch->type == SCTP_CID_HEARTBEAT) { + if (ct->proto.sctp.vtag[dir] == 0) { + pr_debug("Setting %d vtag %x for dir %d\n", sch->type, sh->vtag, dir); + ct->proto.sctp.vtag[dir] = sh->vtag; + } else if (sh->vtag != ct->proto.sctp.vtag[dir]) { + if (test_bit(SCTP_CID_DATA, map) || ignore) + goto out_unlock; + + ct->proto.sctp.flags |= SCTP_FLAG_HEARTBEAT_VTAG_FAILED; + ct->proto.sctp.last_dir = dir; + ignore = true; + continue; + } else if (ct->proto.sctp.flags & SCTP_FLAG_HEARTBEAT_VTAG_FAILED) { + ct->proto.sctp.flags &= ~SCTP_FLAG_HEARTBEAT_VTAG_FAILED; + } + } else if (sch->type == SCTP_CID_HEARTBEAT_ACK) { if (ct->proto.sctp.vtag[dir] == 0) { pr_debug("Setting vtag %x for dir %d\n", sh->vtag, dir); ct->proto.sctp.vtag[dir] = sh->vtag; } else if (sh->vtag != ct->proto.sctp.vtag[dir]) { - pr_debug("Verification tag check failed\n"); - goto out_unlock; + if (test_bit(SCTP_CID_DATA, map) || ignore) + goto out_unlock; + + if ((ct->proto.sctp.flags & SCTP_FLAG_HEARTBEAT_VTAG_FAILED) == 0 || + ct->proto.sctp.last_dir == dir) + goto out_unlock; + + ct->proto.sctp.flags &= ~SCTP_FLAG_HEARTBEAT_VTAG_FAILED; + ct->proto.sctp.vtag[dir] = sh->vtag; + ct->proto.sctp.vtag[!dir] = 0; + } else if (ct->proto.sctp.flags & SCTP_FLAG_HEARTBEAT_VTAG_FAILED) { + ct->proto.sctp.flags &= ~SCTP_FLAG_HEARTBEAT_VTAG_FAILED; } } @@ -470,6 +497,10 @@ } spin_unlock_bh(&ct->lock); + /* allow but do not refresh timeout */ + if (ignore) + return NF_ACCEPT; + timeouts = nf_ct_timeout_lookup(ct); if (!timeouts) timeouts = nf_sctp_pernet(nf_ct_net(ct))->timeouts; --- linux-5.8.0.orig/net/netfilter/nf_conntrack_proto_tcp.c +++ linux-5.8.0/net/netfilter/nf_conntrack_proto_tcp.c @@ -541,13 +541,20 @@ swin = win << sender->td_scale; sender->td_maxwin = (swin == 0 ? 1 : swin); sender->td_maxend = end + sender->td_maxwin; - /* - * We haven't seen traffic in the other direction yet - * but we have to tweak window tracking to pass III - * and IV until that happens. - */ - if (receiver->td_maxwin == 0) + if (receiver->td_maxwin == 0) { + /* We haven't seen traffic in the other + * direction yet but we have to tweak window + * tracking to pass III and IV until that + * happens. + */ receiver->td_end = receiver->td_maxend = sack; + } else if (sack == receiver->td_end + 1) { + /* Likely a reply to a keepalive. + * Needed for III. + */ + receiver->td_end++; + } + } } else if (((state->state == TCP_CONNTRACK_SYN_SENT && dir == IP_CT_DIR_ORIGINAL) --- linux-5.8.0.orig/net/netfilter/nf_conntrack_proto_udp.c +++ linux-5.8.0/net/netfilter/nf_conntrack_proto_udp.c @@ -81,18 +81,6 @@ return false; } -static void nf_conntrack_udp_refresh_unreplied(struct nf_conn *ct, - struct sk_buff *skb, - enum ip_conntrack_info ctinfo, - u32 extra_jiffies) -{ - if (unlikely(ctinfo == IP_CT_ESTABLISHED_REPLY && - ct->status & IPS_NAT_CLASH)) - nf_ct_kill(ct); - else - nf_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies); -} - /* Returns verdict for packet, and may modify conntracktype */ int nf_conntrack_udp_packet(struct nf_conn *ct, struct sk_buff *skb, @@ -124,12 +112,15 @@ nf_ct_refresh_acct(ct, ctinfo, skb, extra); + /* never set ASSURED for IPS_NAT_CLASH, they time out soon */ + if (unlikely((ct->status & IPS_NAT_CLASH))) + return NF_ACCEPT; + /* Also, more likely to be important, and not a probe */ if (!test_and_set_bit(IPS_ASSURED_BIT, &ct->status)) nf_conntrack_event_cache(IPCT_ASSURED, ct); } else { - nf_conntrack_udp_refresh_unreplied(ct, skb, ctinfo, - timeouts[UDP_CT_UNREPLIED]); + nf_ct_refresh_acct(ct, ctinfo, skb, timeouts[UDP_CT_UNREPLIED]); } return NF_ACCEPT; } @@ -206,12 +197,15 @@ if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) { nf_ct_refresh_acct(ct, ctinfo, skb, timeouts[UDP_CT_REPLIED]); + + if (unlikely((ct->status & IPS_NAT_CLASH))) + return NF_ACCEPT; + /* Also, more likely to be important, and not a probe */ if (!test_and_set_bit(IPS_ASSURED_BIT, &ct->status)) nf_conntrack_event_cache(IPCT_ASSURED, ct); } else { - nf_conntrack_udp_refresh_unreplied(ct, skb, ctinfo, - timeouts[UDP_CT_UNREPLIED]); + nf_ct_refresh_acct(ct, ctinfo, skb, timeouts[UDP_CT_UNREPLIED]); } return NF_ACCEPT; } --- linux-5.8.0.orig/net/netfilter/nf_conntrack_standalone.c +++ linux-5.8.0/net/netfilter/nf_conntrack_standalone.c @@ -173,16 +173,17 @@ static void ct_show_secctx(struct seq_file *s, const struct nf_conn *ct) { int ret; - u32 len; - char *secctx; + struct lsmblob blob; + struct lsmcontext context; - ret = security_secid_to_secctx(ct->secmark, &secctx, &len); + lsmblob_init(&blob, ct->secmark); + ret = security_secid_to_secctx(&blob, &context, LSMBLOB_DISPLAY); if (ret) return; - seq_printf(s, "secctx=%s ", secctx); + seq_printf(s, "secctx=%s ", context.context); - security_release_secctx(secctx, len); + security_release_secctx(&context); } #else static inline void ct_show_secctx(struct seq_file *s, const struct nf_conn *ct) @@ -523,6 +524,9 @@ { int ret; + /* module_param hashsize could have changed value */ + nf_conntrack_htable_size_user = nf_conntrack_htable_size; + ret = proc_dointvec(table, write, buffer, lenp, ppos); if (ret < 0 || !write) return ret; --- linux-5.8.0.orig/net/netfilter/nf_dup_netdev.c +++ linux-5.8.0/net/netfilter/nf_dup_netdev.c @@ -19,6 +19,7 @@ skb_push(skb, skb->mac_len); skb->dev = dev; + skb->tstamp = 0; dev_queue_xmit(skb); } --- linux-5.8.0.orig/net/netfilter/nf_flow_table_core.c +++ linux-5.8.0/net/netfilter/nf_flow_table_core.c @@ -398,7 +398,7 @@ return -1; tcph = (void *)(skb_network_header(skb) + thoff); - inet_proto_csum_replace2(&tcph->check, skb, port, new_port, true); + inet_proto_csum_replace2(&tcph->check, skb, port, new_port, false); return 0; } @@ -415,7 +415,7 @@ udph = (void *)(skb_network_header(skb) + thoff); if (udph->check || skb->ip_summed == CHECKSUM_PARTIAL) { inet_proto_csum_replace2(&udph->check, skb, port, - new_port, true); + new_port, false); if (!udph->check) udph->check = CSUM_MANGLED_0; } @@ -508,7 +508,7 @@ { int err; - INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); + INIT_DELAYED_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); flow_block_init(&flowtable->flow_block); init_rwsem(&flowtable->flow_block_lock); --- linux-5.8.0.orig/net/netfilter/nf_log_common.c +++ linux-5.8.0/net/netfilter/nf_log_common.c @@ -171,6 +171,18 @@ } EXPORT_SYMBOL_GPL(nf_log_dump_packet_common); +void nf_log_dump_vlan(struct nf_log_buf *m, const struct sk_buff *skb) +{ + u16 vid; + + if (!skb_vlan_tag_present(skb)) + return; + + vid = skb_vlan_tag_get(skb); + nf_log_buf_add(m, "VPROTO=%04x VID=%u ", ntohs(skb->vlan_proto), vid); +} +EXPORT_SYMBOL_GPL(nf_log_dump_vlan); + /* bridge and netdev logging families share this code. */ void nf_log_l2packet(struct net *net, u_int8_t pf, __be16 protocol, --- linux-5.8.0.orig/net/netfilter/nf_nat_core.c +++ linux-5.8.0/net/netfilter/nf_nat_core.c @@ -1174,6 +1174,7 @@ ret = register_pernet_subsys(&nat_net_ops); if (ret < 0) { nf_ct_extend_unregister(&nat_extend); + kvfree(nf_nat_bysource); return ret; } --- linux-5.8.0.orig/net/netfilter/nf_nat_proto.c +++ linux-5.8.0/net/netfilter/nf_nat_proto.c @@ -646,8 +646,8 @@ } static unsigned int -nf_nat_ipv4_in(void *priv, struct sk_buff *skb, - const struct nf_hook_state *state) +nf_nat_ipv4_pre_routing(void *priv, struct sk_buff *skb, + const struct nf_hook_state *state) { unsigned int ret; __be32 daddr = ip_hdr(skb)->daddr; @@ -660,6 +660,23 @@ } static unsigned int +nf_nat_ipv4_local_in(void *priv, struct sk_buff *skb, + const struct nf_hook_state *state) +{ + __be32 saddr = ip_hdr(skb)->saddr; + struct sock *sk = skb->sk; + unsigned int ret; + + ret = nf_nat_ipv4_fn(priv, skb, state); + + if (ret == NF_ACCEPT && sk && saddr != ip_hdr(skb)->saddr && + !inet_sk_transparent(sk)) + skb_orphan(skb); /* TCP edemux obtained wrong socket */ + + return ret; +} + +static unsigned int nf_nat_ipv4_out(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) { @@ -715,7 +732,7 @@ if (ct->tuplehash[dir].tuple.dst.u3.ip != ct->tuplehash[!dir].tuple.src.u3.ip) { - err = ip_route_me_harder(state->net, skb, RTN_UNSPEC); + err = ip_route_me_harder(state->net, state->sk, skb, RTN_UNSPEC); if (err < 0) ret = NF_DROP_ERR(err); } @@ -736,7 +753,7 @@ static const struct nf_hook_ops nf_nat_ipv4_ops[] = { /* Before packet filtering, change destination */ { - .hook = nf_nat_ipv4_in, + .hook = nf_nat_ipv4_pre_routing, .pf = NFPROTO_IPV4, .hooknum = NF_INET_PRE_ROUTING, .priority = NF_IP_PRI_NAT_DST, @@ -757,7 +774,7 @@ }, /* After packet filtering, change source */ { - .hook = nf_nat_ipv4_fn, + .hook = nf_nat_ipv4_local_in, .pf = NFPROTO_IPV4, .hooknum = NF_INET_LOCAL_IN, .priority = NF_IP_PRI_NAT_SRC, @@ -953,7 +970,7 @@ if (!nf_inet_addr_cmp(&ct->tuplehash[dir].tuple.dst.u3, &ct->tuplehash[!dir].tuple.src.u3)) { - err = nf_ip6_route_me_harder(state->net, skb); + err = nf_ip6_route_me_harder(state->net, state->sk, skb); if (err < 0) ret = NF_DROP_ERR(err); } --- linux-5.8.0.orig/net/netfilter/nf_synproxy_core.c +++ linux-5.8.0/net/netfilter/nf_synproxy_core.c @@ -446,7 +446,7 @@ skb_dst_set_noref(nskb, skb_dst(skb)); nskb->protocol = htons(ETH_P_IP); - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; if (nfct) { --- linux-5.8.0.orig/net/netfilter/nf_tables_api.c +++ linux-5.8.0/net/netfilter/nf_tables_api.c @@ -295,7 +295,7 @@ struct nft_expr *expr; expr = nft_expr_first(rule); - while (expr != nft_expr_last(rule) && expr->ops) { + while (nft_expr_more(rule, expr)) { if (expr->ops->activate) expr->ops->activate(ctx, expr); @@ -310,7 +310,7 @@ struct nft_expr *expr; expr = nft_expr_first(rule); - while (expr != nft_expr_last(rule) && expr->ops) { + while (nft_expr_more(rule, expr)) { if (expr->ops->deactivate) expr->ops->deactivate(ctx, expr, phase); @@ -612,7 +612,8 @@ static void lockdep_nfnl_nft_mutex_not_held(void) { #ifdef CONFIG_PROVE_LOCKING - WARN_ON_ONCE(lockdep_nfnl_is_held(NFNL_SUBSYS_NFTABLES)); + if (debug_locks) + WARN_ON_ONCE(lockdep_nfnl_is_held(NFNL_SUBSYS_NFTABLES)); #endif } @@ -797,11 +798,11 @@ nlh->nlmsg_seq, NFT_MSG_NEWTABLE, 0, family, table); if (err < 0) - goto err; + goto err_fill_table_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); -err: +err_fill_table_info: kfree_skb(skb2); return err; } @@ -1527,11 +1528,11 @@ nlh->nlmsg_seq, NFT_MSG_NEWCHAIN, 0, family, table, chain); if (err < 0) - goto err; + goto err_fill_chain_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); -err: +err_fill_chain_info: kfree_skb(skb2); return err; } @@ -2037,7 +2038,7 @@ if (nla[NFTA_CHAIN_HOOK]) { if (!nft_is_base_chain(chain)) - return -EBUSY; + return -EEXIST; err = nft_chain_parse_hook(ctx->net, nla, &hook, ctx->family, false); @@ -2047,21 +2048,21 @@ basechain = nft_base_chain(chain); if (basechain->type != hook.type) { nft_chain_release_hook(&hook); - return -EBUSY; + return -EEXIST; } if (ctx->family == NFPROTO_NETDEV) { if (!nft_hook_list_equal(&basechain->hook_list, &hook.list)) { nft_chain_release_hook(&hook); - return -EBUSY; + return -EEXIST; } } else { ops = &basechain->ops; if (ops->hooknum != hook.num || ops->priority != hook.priority) { nft_chain_release_hook(&hook); - return -EBUSY; + return -EEXIST; } } nft_chain_release_hook(&hook); @@ -2898,11 +2899,11 @@ nlh->nlmsg_seq, NFT_MSG_NEWRULE, 0, family, table, chain, rule, NULL); if (err < 0) - goto err; + goto err_fill_rule_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); -err: +err_fill_rule_info: kfree_skb(skb2); return err; } @@ -2917,7 +2918,7 @@ * is called on error from nf_tables_newrule(). */ expr = nft_expr_first(rule); - while (expr != nft_expr_last(rule) && expr->ops) { + while (nft_expr_more(rule, expr)) { next = nft_expr_next(expr); nf_tables_expr_destroy(ctx, expr); expr = next; @@ -3538,7 +3539,7 @@ return 0; } -static int nf_msecs_to_jiffies64(const struct nlattr *nla, u64 *result) +int nf_msecs_to_jiffies64(const struct nlattr *nla, u64 *result) { u64 ms = be64_to_cpu(nla_get_be64(nla)); u64 max = (u64)(~((u64)0)); @@ -3552,7 +3553,7 @@ return 0; } -static __be64 nf_jiffies64_to_msecs(u64 input) +__be64 nf_jiffies64_to_msecs(u64 input) { return cpu_to_be64(jiffies64_to_msecs(input)); } @@ -3643,7 +3644,8 @@ goto nla_put_failure; } - if (nla_put(skb, NFTA_SET_USERDATA, set->udlen, set->udata)) + if (set->udata && + nla_put(skb, NFTA_SET_USERDATA, set->udlen, set->udata)) goto nla_put_failure; nest = nla_nest_start_noflag(skb, NFTA_SET_DESC); @@ -3828,11 +3830,11 @@ err = nf_tables_fill_set(skb2, &ctx, set, NFT_MSG_NEWSET, 0); if (err < 0) - goto err; + goto err_fill_set_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); -err: +err_fill_set_info: kfree_skb(skb2); return err; } @@ -4720,24 +4722,18 @@ err = -ENOMEM; skb = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); if (skb == NULL) - goto err1; + return err; err = nf_tables_fill_setelem_info(skb, ctx, ctx->seq, ctx->portid, NFT_MSG_NEWSETELEM, 0, set, &elem); if (err < 0) - goto err2; + goto err_fill_setelem; - err = nfnetlink_unicast(skb, ctx->net, ctx->portid, MSG_DONTWAIT); - /* This avoids a loop in nfnetlink. */ - if (err < 0) - goto err1; + return nfnetlink_unicast(skb, ctx->net, ctx->portid); - return 0; -err2: +err_fill_setelem: kfree_skb(skb); -err1: - /* this avoids a loop in nfnetlink. */ - return err == -EAGAIN ? -ENOBUFS : err; + return err; } /* called with rcu_read_lock held */ @@ -5160,10 +5156,8 @@ if (nft_set_ext_exists(ext, NFT_SET_EXT_DATA) ^ nft_set_ext_exists(ext2, NFT_SET_EXT_DATA) || nft_set_ext_exists(ext, NFT_SET_EXT_OBJREF) ^ - nft_set_ext_exists(ext2, NFT_SET_EXT_OBJREF)) { - err = -EBUSY; + nft_set_ext_exists(ext2, NFT_SET_EXT_OBJREF)) goto err_element_clash; - } if ((nft_set_ext_exists(ext, NFT_SET_EXT_DATA) && nft_set_ext_exists(ext2, NFT_SET_EXT_DATA) && memcmp(nft_set_ext_data(ext), @@ -5171,7 +5165,7 @@ (nft_set_ext_exists(ext, NFT_SET_EXT_OBJREF) && nft_set_ext_exists(ext2, NFT_SET_EXT_OBJREF) && *nft_set_ext_obj(ext) != *nft_set_ext_obj(ext2))) - err = -EBUSY; + goto err_element_clash; else if (!(nlmsg_flags & NLM_F_EXCL)) err = 0; } else if (err == -ENOTEMPTY) { @@ -5993,10 +5987,11 @@ nlh->nlmsg_seq, NFT_MSG_NEWOBJ, 0, family, table, obj, reset); if (err < 0) - goto err; + goto err_fill_obj_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); -err: + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); + +err_fill_obj_info: kfree_skb(skb2); return err; } @@ -6305,10 +6300,13 @@ list_for_each_entry(hook, hook_list, list) { list_for_each_entry(ft, &table->flowtables, list) { + if (!nft_is_active_next(net, ft)) + continue; + list_for_each_entry(hook2, &ft->hook_list, list) { if (hook->ops.dev == hook2->ops.dev && hook->ops.pf == hook2->ops.pf) { - err = -EBUSY; + err = -EEXIST; goto err_unregister_net_hooks; } } @@ -6364,6 +6362,7 @@ struct nft_hook *hook, *next; struct nft_trans *trans; bool unregister = false; + u32 flags; int err; err = nft_flowtable_parse_hook(ctx, nla[NFTA_FLOWTABLE_HOOK], @@ -6378,6 +6377,17 @@ } } + if (nla[NFTA_FLOWTABLE_FLAGS]) { + flags = ntohl(nla_get_be32(nla[NFTA_FLOWTABLE_FLAGS])); + if (flags & ~NFT_FLOWTABLE_MASK) + return -EOPNOTSUPP; + if ((flowtable->data.flags & NFT_FLOWTABLE_HW_OFFLOAD) ^ + (flags & NFT_FLOWTABLE_HW_OFFLOAD)) + return -EOPNOTSUPP; + } else { + flags = flowtable->data.flags; + } + err = nft_register_flowtable_net_hooks(ctx->net, ctx->table, &flowtable_hook.list, flowtable); if (err < 0) @@ -6391,6 +6401,7 @@ goto err_flowtable_update_hook; } + nft_trans_flowtable_flags(trans) = flags; nft_trans_flowtable(trans) = flowtable; nft_trans_flowtable_update(trans) = true; INIT_LIST_HEAD(&nft_trans_flowtable_hooks(trans)); @@ -6485,8 +6496,10 @@ if (nla[NFTA_FLOWTABLE_FLAGS]) { flowtable->data.flags = ntohl(nla_get_be32(nla[NFTA_FLOWTABLE_FLAGS])); - if (flowtable->data.flags & ~NFT_FLOWTABLE_MASK) + if (flowtable->data.flags & ~NFT_FLOWTABLE_MASK) { + err = -EOPNOTSUPP; goto err3; + } } write_pnet(&flowtable->data.net, net); @@ -6845,10 +6858,11 @@ NFT_MSG_NEWFLOWTABLE, 0, family, flowtable, &flowtable->hook_list); if (err < 0) - goto err; + goto err_fill_flowtable_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); -err: + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); + +err_fill_flowtable_info: kfree_skb(skb2); return err; } @@ -6861,7 +6875,7 @@ struct sk_buff *skb; int err; - if (ctx->report && + if (!ctx->report && !nfnetlink_has_listeners(ctx->net, NFNLGRP_NFTABLES)) return; @@ -6981,7 +6995,7 @@ struct sk_buff *skb2; int err; - if (nlmsg_report(nlh) && + if (!nlmsg_report(nlh) && !nfnetlink_has_listeners(net, NFNLGRP_NFTABLES)) return; @@ -7019,10 +7033,11 @@ err = nf_tables_fill_gen_info(skb2, net, NETLINK_CB(skb).portid, nlh->nlmsg_seq); if (err < 0) - goto err; + goto err_fill_gen_info; - return nlmsg_unicast(nlsk, skb2, NETLINK_CB(skb).portid); -err: + return nfnetlink_unicast(skb2, net, NETLINK_CB(skb).portid); + +err_fill_gen_info: kfree_skb(skb2); return err; } @@ -7290,6 +7305,12 @@ } } +void nf_tables_trans_destroy_flush_work(void) +{ + flush_work(&trans_destroy_work); +} +EXPORT_SYMBOL_GPL(nf_tables_trans_destroy_flush_work); + static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *chain) { struct nft_rule *rule; @@ -7472,9 +7493,9 @@ spin_unlock(&nf_tables_destroy_list_lock); nf_tables_module_autoload_cleanup(net); - mutex_unlock(&net->nft.commit_mutex); - schedule_work(&trans_destroy_work); + + mutex_unlock(&net->nft.commit_mutex); } static int nf_tables_commit(struct net *net, struct sk_buff *skb) @@ -7641,6 +7662,8 @@ break; case NFT_MSG_NEWFLOWTABLE: if (nft_trans_flowtable_update(trans)) { + nft_trans_flowtable(trans)->data.flags = + nft_trans_flowtable_flags(trans); nf_tables_flowtable_notify(&trans->ctx, nft_trans_flowtable(trans), &nft_trans_flowtable_hooks(trans), @@ -7732,12 +7755,16 @@ kfree(trans); } -static int __nf_tables_abort(struct net *net, bool autoload) +static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action) { struct nft_trans *trans, *next; struct nft_trans_elem *te; struct nft_hook *hook; + if (action == NFNL_ABORT_VALIDATE && + nf_tables_validate(net) < 0) + return -EAGAIN; + list_for_each_entry_safe_reverse(trans, next, &net->nft.commit_list, list) { switch (trans->msg_type) { @@ -7865,7 +7892,7 @@ nf_tables_abort_release(trans); } - if (autoload) + if (action == NFNL_ABORT_AUTOLOAD) nf_tables_module_autoload(net); else nf_tables_module_autoload_cleanup(net); @@ -7878,9 +7905,10 @@ nft_validate_state_update(net, NFT_VALIDATE_SKIP); } -static int nf_tables_abort(struct net *net, struct sk_buff *skb, bool autoload) +static int nf_tables_abort(struct net *net, struct sk_buff *skb, + enum nfnl_abort_action action) { - int ret = __nf_tables_abort(net, autoload); + int ret = __nf_tables_abort(net, action); mutex_unlock(&net->nft.commit_mutex); @@ -8417,6 +8445,17 @@ } EXPORT_SYMBOL_GPL(__nft_release_basechain); +static void __nft_release_hooks(struct net *net) +{ + struct nft_table *table; + struct nft_chain *chain; + + list_for_each_entry(table, &net->nft.tables, list) { + list_for_each_entry(chain, &table->chains, list) + nf_tables_unregister_hook(net, table, chain); + } +} + static void __nft_release_tables(struct net *net) { struct nft_flowtable *flowtable, *nf; @@ -8432,10 +8471,6 @@ list_for_each_entry_safe(table, nt, &net->nft.tables, list) { ctx.family = table->family; - - list_for_each_entry(chain, &table->chains, list) - nf_tables_unregister_hook(net, table, chain); - /* No packets are walking on these chains anymore. */ ctx.table = table; list_for_each_entry(chain, &table->chains, list) { ctx.chain = chain; @@ -8483,11 +8518,16 @@ return 0; } +static void __net_exit nf_tables_pre_exit_net(struct net *net) +{ + __nft_release_hooks(net); +} + static void __net_exit nf_tables_exit_net(struct net *net) { mutex_lock(&net->nft.commit_mutex); if (!list_empty(&net->nft.commit_list)) - __nf_tables_abort(net, false); + __nf_tables_abort(net, NFNL_ABORT_NONE); __nft_release_tables(net); mutex_unlock(&net->nft.commit_mutex); WARN_ON_ONCE(!list_empty(&net->nft.tables)); @@ -8495,8 +8535,9 @@ } static struct pernet_operations nf_tables_net_ops = { - .init = nf_tables_init_net, - .exit = nf_tables_exit_net, + .init = nf_tables_init_net, + .pre_exit = nf_tables_pre_exit_net, + .exit = nf_tables_exit_net, }; static int __init nf_tables_module_init(void) --- linux-5.8.0.orig/net/netfilter/nf_tables_offload.c +++ linux-5.8.0/net/netfilter/nf_tables_offload.c @@ -28,6 +28,23 @@ return flow; } +void nft_flow_rule_set_addr_type(struct nft_flow_rule *flow, + enum flow_dissector_key_id addr_type) +{ + struct nft_flow_match *match = &flow->match; + struct nft_flow_key *mask = &match->mask; + struct nft_flow_key *key = &match->key; + + if (match->dissector.used_keys & BIT(FLOW_DISSECTOR_KEY_CONTROL)) + return; + + key->control.addr_type = addr_type; + mask->control.addr_type = 0xffff; + match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_CONTROL); + match->dissector.offset[FLOW_DISSECTOR_KEY_CONTROL] = + offsetof(struct nft_flow_key, control); +} + struct nft_flow_rule *nft_flow_rule_create(struct net *net, const struct nft_rule *rule) { @@ -37,7 +54,7 @@ struct nft_expr *expr; expr = nft_expr_first(rule); - while (expr->ops && expr != nft_expr_last(rule)) { + while (nft_expr_more(rule, expr)) { if (expr->ops->offload_flags & NFT_OFFLOAD_F_ACTION) num_actions++; @@ -61,7 +78,7 @@ ctx->net = net; ctx->dep.type = NFT_OFFLOAD_DEP_UNSPEC; - while (expr->ops && expr != nft_expr_last(rule)) { + while (nft_expr_more(rule, expr)) { if (!expr->ops->offload) { err = -EOPNOTSUPP; goto err_out; --- linux-5.8.0.orig/net/netfilter/nfnetlink.c +++ linux-5.8.0/net/netfilter/nfnetlink.c @@ -149,10 +149,15 @@ } EXPORT_SYMBOL_GPL(nfnetlink_set_err); -int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid, - int flags) +int nfnetlink_unicast(struct sk_buff *skb, struct net *net, u32 portid) { - return netlink_unicast(net->nfnl, skb, portid, flags); + int err; + + err = nlmsg_unicast(net->nfnl, skb, portid); + if (err == -EAGAIN) + err = -ENOBUFS; + + return err; } EXPORT_SYMBOL_GPL(nfnetlink_unicast); @@ -311,7 +316,7 @@ return netlink_ack(skb, nlh, -EINVAL, NULL); replay: status = 0; - +replay_abort: skb = netlink_skb_clone(oskb, GFP_KERNEL); if (!skb) return netlink_ack(oskb, nlh, -ENOMEM, NULL); @@ -477,7 +482,7 @@ } done: if (status & NFNL_BATCH_REPLAY) { - ss->abort(net, oskb, true); + ss->abort(net, oskb, NFNL_ABORT_AUTOLOAD); nfnl_err_reset(&err_list); kfree_skb(skb); module_put(ss->owner); @@ -488,11 +493,25 @@ status |= NFNL_BATCH_REPLAY; goto done; } else if (err) { - ss->abort(net, oskb, false); + ss->abort(net, oskb, NFNL_ABORT_NONE); netlink_ack(oskb, nlmsg_hdr(oskb), err, NULL); } } else { - ss->abort(net, oskb, false); + enum nfnl_abort_action abort_action; + + if (status & NFNL_BATCH_FAILURE) + abort_action = NFNL_ABORT_NONE; + else + abort_action = NFNL_ABORT_VALIDATE; + + err = ss->abort(net, oskb, abort_action); + if (err == -EAGAIN) { + nfnl_err_reset(&err_list); + kfree_skb(skb); + module_put(ss->owner); + status |= NFNL_BATCH_FAILURE; + goto replay_abort; + } } if (ss->cleanup) ss->cleanup(net); --- linux-5.8.0.orig/net/netfilter/nfnetlink_log.c +++ linux-5.8.0/net/netfilter/nfnetlink_log.c @@ -356,8 +356,7 @@ goto out; } } - nfnetlink_unicast(inst->skb, inst->net, inst->peer_portid, - MSG_DONTWAIT); + nfnetlink_unicast(inst->skb, inst->net, inst->peer_portid); out: inst->qlen = 0; inst->skb = NULL; --- linux-5.8.0.orig/net/netfilter/nfnetlink_queue.c +++ linux-5.8.0/net/netfilter/nfnetlink_queue.c @@ -301,21 +301,29 @@ return -1; } -static u32 nfqnl_get_sk_secctx(struct sk_buff *skb, char **secdata) +static u32 nfqnl_get_sk_secctx(struct sk_buff *skb, struct lsmcontext *context) { - u32 seclen = 0; #if IS_ENABLED(CONFIG_NETWORK_SECMARK) + struct lsmblob blob; + if (!skb || !sk_fullsock(skb->sk)) return 0; read_lock_bh(&skb->sk->sk_callback_lock); - if (skb->secmark) - security_secid_to_secctx(skb->secmark, secdata, &seclen); + if (skb->secmark) { + /* lsmblob_init() puts ct->secmark into all of the secids in + * blob. security_secid_to_secctx() will know which security + * module to use to create the secctx. */ + lsmblob_init(&blob, skb->secmark); + security_secid_to_secctx(&blob, context, LSMBLOB_DISPLAY); + } read_unlock_bh(&skb->sk->sk_callback_lock); + return context->len; +#else + return 0; #endif - return seclen; } static u32 nfqnl_get_bridge_size(struct nf_queue_entry *entry) @@ -391,7 +399,7 @@ enum ip_conntrack_info uninitialized_var(ctinfo); struct nfnl_ct_hook *nfnl_ct; bool csum_verify; - char *secdata = NULL; + struct lsmcontext context = { }; u32 seclen = 0; size = nlmsg_total_size(sizeof(struct nfgenmsg)) @@ -458,7 +466,7 @@ } if ((queue->flags & NFQA_CFG_F_SECCTX) && entskb->sk) { - seclen = nfqnl_get_sk_secctx(entskb, &secdata); + seclen = nfqnl_get_sk_secctx(entskb, &context); if (seclen) size += nla_total_size(seclen); } @@ -593,7 +601,7 @@ nfqnl_put_sk_uidgid(skb, entskb->sk) < 0) goto nla_put_failure; - if (seclen && nla_put(skb, NFQA_SECCTX, seclen, secdata)) + if (seclen && nla_put(skb, NFQA_SECCTX, context.len, context.context)) goto nla_put_failure; if (ct && nfnl_ct->build(skb, ct, ctinfo, NFQA_CT, NFQA_CT_INFO) < 0) @@ -622,7 +630,7 @@ nlh->nlmsg_len = skb->len; if (seclen) - security_release_secctx(secdata, seclen); + security_release_secctx(&context); return skb; nla_put_failure: @@ -631,7 +639,7 @@ net_err_ratelimited("nf_queue: error creating packet message\n"); nlmsg_failure: if (seclen) - security_release_secctx(secdata, seclen); + security_release_secctx(&context); return NULL; } @@ -681,7 +689,7 @@ *packet_id_ptr = htonl(entry->id); /* nfnetlink_unicast will either free the nskb or add it to a socket */ - err = nfnetlink_unicast(nskb, net, queue->peer_portid, MSG_DONTWAIT); + err = nfnetlink_unicast(nskb, net, queue->peer_portid); if (err < 0) { if (queue->flags & NFQA_CFG_F_FAIL_OPEN) { failopen = 1; --- linux-5.8.0.orig/net/netfilter/nft_chain_route.c +++ linux-5.8.0/net/netfilter/nft_chain_route.c @@ -42,7 +42,7 @@ iph->daddr != daddr || skb->mark != mark || iph->tos != tos) { - err = ip_route_me_harder(state->net, skb, RTN_UNSPEC); + err = ip_route_me_harder(state->net, state->sk, skb, RTN_UNSPEC); if (err < 0) ret = NF_DROP_ERR(err); } @@ -92,7 +92,7 @@ skb->mark != mark || ipv6_hdr(skb)->hop_limit != hop_limit || flowlabel != *((u32 *)ipv6_hdr(skb)))) { - err = nf_ip6_route_me_harder(state->net, skb); + err = nf_ip6_route_me_harder(state->net, state->sk, skb); if (err < 0) ret = NF_DROP_ERR(err); } --- linux-5.8.0.orig/net/netfilter/nft_cmp.c +++ linux-5.8.0/net/netfilter/nft_cmp.c @@ -123,11 +123,11 @@ u8 *mask = (u8 *)&flow->match.mask; u8 *key = (u8 *)&flow->match.key; - if (priv->op != NFT_CMP_EQ || reg->len != priv->len) + if (priv->op != NFT_CMP_EQ || priv->len > reg->len) return -EOPNOTSUPP; - memcpy(key + reg->offset, &priv->data, priv->len); - memcpy(mask + reg->offset, ®->mask, priv->len); + memcpy(key + reg->offset, &priv->data, reg->len); + memcpy(mask + reg->offset, ®->mask, reg->len); flow->match.dissector.used_keys |= BIT(reg->key); flow->match.dissector.offset[reg->key] = reg->base_offset; @@ -137,7 +137,7 @@ nft_reg_load16(priv->data.data) != ARPHRD_ETHER) return -EOPNOTSUPP; - nft_offload_update_dependency(ctx, &priv->data, priv->len); + nft_offload_update_dependency(ctx, &priv->data, reg->len); return 0; } --- linux-5.8.0.orig/net/netfilter/nft_compat.c +++ linux-5.8.0/net/netfilter/nft_compat.c @@ -213,6 +213,17 @@ return 0; } +static void nft_compat_wait_for_destructors(void) +{ + /* xtables matches or targets can have side effects, e.g. + * creation/destruction of /proc files. + * The xt ->destroy functions are run asynchronously from + * work queue. If we have pending invocations we thus + * need to wait for those to finish. + */ + nf_tables_trans_destroy_flush_work(); +} + static int nft_target_init(const struct nft_ctx *ctx, const struct nft_expr *expr, const struct nlattr * const tb[]) @@ -236,6 +247,8 @@ nft_target_set_tgchk_param(&par, ctx, target, info, &e, proto, inv); + nft_compat_wait_for_destructors(); + ret = xt_check_target(&par, size, proto, inv); if (ret < 0) return ret; @@ -247,6 +260,12 @@ return 0; } +static void __nft_mt_tg_destroy(struct module *me, const struct nft_expr *expr) +{ + module_put(me); + kfree(expr->ops); +} + static void nft_target_destroy(const struct nft_ctx *ctx, const struct nft_expr *expr) { @@ -262,8 +281,7 @@ if (par.target->destroy != NULL) par.target->destroy(&par); - module_put(me); - kfree(expr->ops); + __nft_mt_tg_destroy(me, expr); } static int nft_extension_dump_info(struct sk_buff *skb, int attr, @@ -451,6 +469,8 @@ nft_match_set_mtchk_param(&par, ctx, match, info, &e, proto, inv); + nft_compat_wait_for_destructors(); + return xt_check_match(&par, size, proto, inv); } @@ -494,8 +514,7 @@ if (par.match->destroy != NULL) par.match->destroy(&par); - module_put(me); - kfree(expr->ops); + __nft_mt_tg_destroy(me, expr); } static void --- linux-5.8.0.orig/net/netfilter/nft_ct.c +++ linux-5.8.0/net/netfilter/nft_ct.c @@ -177,8 +177,6 @@ } #endif case NFT_CT_ID: - if (!nf_ct_is_confirmed(ct)) - goto err; *dest = nf_ct_get_id(ct); return; default: --- linux-5.8.0.orig/net/netfilter/nft_dynset.c +++ linux-5.8.0/net/netfilter/nft_dynset.c @@ -123,7 +123,7 @@ u32 flags = ntohl(nla_get_be32(tb[NFTA_DYNSET_FLAGS])); if (flags & ~NFT_DYNSET_F_INV) - return -EINVAL; + return -EOPNOTSUPP; if (flags & NFT_DYNSET_F_INV) priv->invert = true; } @@ -156,9 +156,11 @@ timeout = 0; if (tb[NFTA_DYNSET_TIMEOUT] != NULL) { if (!(set->flags & NFT_SET_TIMEOUT)) - return -EINVAL; - timeout = msecs_to_jiffies(be64_to_cpu(nla_get_be64( - tb[NFTA_DYNSET_TIMEOUT]))); + return -EOPNOTSUPP; + + err = nf_msecs_to_jiffies64(tb[NFTA_DYNSET_TIMEOUT], &timeout); + if (err) + return err; } priv->sreg_key = nft_parse_register(tb[NFTA_DYNSET_SREG_KEY]); @@ -168,7 +170,7 @@ if (tb[NFTA_DYNSET_SREG_DATA] != NULL) { if (!(set->flags & NFT_SET_MAP)) - return -EINVAL; + return -EOPNOTSUPP; if (set->dtype == NFT_DATA_VERDICT) return -EOPNOTSUPP; @@ -202,8 +204,10 @@ nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_EXPR, priv->expr->ops->size); if (set->flags & NFT_SET_TIMEOUT) { - if (timeout || set->timeout) + if (timeout || set->timeout) { + nft_set_ext_add(&priv->tmpl, NFT_SET_EXT_TIMEOUT); nft_set_ext_add(&priv->tmpl, NFT_SET_EXT_EXPIRATION); + } } priv->timeout = timeout; @@ -267,7 +271,7 @@ if (nla_put_string(skb, NFTA_DYNSET_SET_NAME, priv->set->name)) goto nla_put_failure; if (nla_put_be64(skb, NFTA_DYNSET_TIMEOUT, - cpu_to_be64(jiffies_to_msecs(priv->timeout)), + nf_jiffies64_to_msecs(priv->timeout), NFTA_DYNSET_PAD)) goto nla_put_failure; if (priv->expr && nft_expr_dump(skb, NFTA_DYNSET_EXPR, priv->expr)) --- linux-5.8.0.orig/net/netfilter/nft_exthdr.c +++ linux-5.8.0/net/netfilter/nft_exthdr.c @@ -44,7 +44,7 @@ err = ipv6_find_hdr(pkt->skb, &offset, priv->type, NULL, NULL); if (priv->flags & NFT_EXTHDR_F_PRESENT) { - *dest = (err >= 0); + nft_reg_store8(dest, err >= 0); return; } else if (err < 0) { goto err; @@ -141,7 +141,7 @@ err = ipv4_find_option(nft_net(pkt), skb, &offset, priv->type); if (priv->flags & NFT_EXTHDR_F_PRESENT) { - *dest = (err >= 0); + nft_reg_store8(dest, err >= 0); return; } else if (err < 0) { goto err; --- linux-5.8.0.orig/net/netfilter/nft_flow_offload.c +++ linux-5.8.0/net/netfilter/nft_flow_offload.c @@ -102,7 +102,7 @@ } if (nf_ct_ext_exist(ct, NF_CT_EXT_HELPER) || - ct->status & IPS_SEQ_ADJUST) + ct->status & (IPS_SEQ_ADJUST | IPS_NAT_CLASH)) goto out; if (!nf_ct_is_confirmed(ct)) --- linux-5.8.0.orig/net/netfilter/nft_fwd_netdev.c +++ linux-5.8.0/net/netfilter/nft_fwd_netdev.c @@ -138,6 +138,7 @@ return; skb->dev = dev; + skb->tstamp = 0; neigh_xmit(neigh_table, dev, addr, skb); out: regs->verdict.code = verdict; --- linux-5.8.0.orig/net/netfilter/nft_meta.c +++ linux-5.8.0/net/netfilter/nft_meta.c @@ -147,11 +147,11 @@ switch (key) { case NFT_META_SKUID: - *dest = from_kuid_munged(&init_user_ns, + *dest = from_kuid_munged(sock_net(sk)->user_ns, sock->file->f_cred->fsuid); break; case NFT_META_SKGID: - *dest = from_kgid_munged(&init_user_ns, + *dest = from_kgid_munged(sock_net(sk)->user_ns, sock->file->f_cred->fsgid); break; default: @@ -253,7 +253,7 @@ return false; break; case NFT_META_IIFGROUP: - if (!nft_meta_store_ifgroup(dest, nft_out(pkt))) + if (!nft_meta_store_ifgroup(dest, nft_in(pkt))) return false; break; case NFT_META_OIFGROUP: @@ -724,22 +724,22 @@ switch (priv->key) { case NFT_META_PROTOCOL: - NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_BASIC, basic, n_proto, - sizeof(__u16), reg); + NFT_OFFLOAD_MATCH_EXACT(FLOW_DISSECTOR_KEY_BASIC, basic, n_proto, + sizeof(__u16), reg); nft_offload_set_dependency(ctx, NFT_OFFLOAD_DEP_NETWORK); break; case NFT_META_L4PROTO: - NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_BASIC, basic, ip_proto, - sizeof(__u8), reg); + NFT_OFFLOAD_MATCH_EXACT(FLOW_DISSECTOR_KEY_BASIC, basic, ip_proto, + sizeof(__u8), reg); nft_offload_set_dependency(ctx, NFT_OFFLOAD_DEP_TRANSPORT); break; case NFT_META_IIF: - NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_META, meta, - ingress_ifindex, sizeof(__u32), reg); + NFT_OFFLOAD_MATCH_EXACT(FLOW_DISSECTOR_KEY_META, meta, + ingress_ifindex, sizeof(__u32), reg); break; case NFT_META_IIFTYPE: - NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_META, meta, - ingress_iftype, sizeof(__u16), reg); + NFT_OFFLOAD_MATCH_EXACT(FLOW_DISSECTOR_KEY_META, meta, + ingress_iftype, sizeof(__u16), reg); break; default: return -EOPNOTSUPP; @@ -801,7 +801,7 @@ #ifdef CONFIG_NETWORK_SECMARK struct nft_secmark { - u32 secid; + struct lsmblob lsmdata; char *ctx; }; @@ -811,21 +811,21 @@ static int nft_secmark_compute_secid(struct nft_secmark *priv) { - u32 tmp_secid = 0; + struct lsmblob blob; int err; - err = security_secctx_to_secid(priv->ctx, strlen(priv->ctx), &tmp_secid); + err = security_secctx_to_secid(priv->ctx, strlen(priv->ctx), &blob); if (err) return err; - if (!tmp_secid) + if (!lsmblob_is_set(&blob)) return -ENOENT; - err = security_secmark_relabel_packet(tmp_secid); + err = security_secmark_relabel_packet(&blob); if (err) return err; - priv->secid = tmp_secid; + priv->lsmdata = blob; return 0; } @@ -835,7 +835,11 @@ const struct nft_secmark *priv = nft_obj_data(obj); struct sk_buff *skb = pkt->skb; - skb->secmark = priv->secid; + /* It is not possible for more than one secid to be set in + * the lsmblob structure because it is set using + * security_secctx_to_secid(). Any secid that is set must therefore + * be the one that should go in the secmark. */ + skb->secmark = lsmblob_value(&priv->lsmdata); } static int nft_secmark_obj_init(const struct nft_ctx *ctx, --- linux-5.8.0.orig/net/netfilter/nft_payload.c +++ linux-5.8.0/net/netfilter/nft_payload.c @@ -87,7 +87,9 @@ u32 *dest = ®s->data[priv->dreg]; int offset; - dest[priv->len / NFT_REG32_SIZE] = 0; + if (priv->len % NFT_REG32_SIZE) + dest[priv->len / NFT_REG32_SIZE] = 0; + switch (priv->base) { case NFT_PAYLOAD_LL_HEADER: if (!skb_mac_header_was_set(skb)) @@ -162,6 +164,34 @@ return -1; } +static bool nft_payload_offload_mask(struct nft_offload_reg *reg, + u32 priv_len, u32 field_len) +{ + unsigned int remainder, delta, k; + struct nft_data mask = {}; + __be32 remainder_mask; + + if (priv_len == field_len) { + memset(®->mask, 0xff, priv_len); + return true; + } else if (priv_len > field_len) { + return false; + } + + memset(&mask, 0xff, field_len); + remainder = priv_len % sizeof(u32); + if (remainder) { + k = priv_len / sizeof(u32); + delta = field_len - priv_len; + remainder_mask = htonl(~((1 << (delta * BITS_PER_BYTE)) - 1)); + mask.data[k] = (__force u32)remainder_mask; + } + + memcpy(®->mask, &mask, field_len); + + return true; +} + static int nft_payload_offload_ll(struct nft_offload_ctx *ctx, struct nft_flow_rule *flow, const struct nft_payload *priv) @@ -170,21 +200,21 @@ switch (priv->offset) { case offsetof(struct ethhdr, h_source): - if (priv->len != ETH_ALEN) + if (!nft_payload_offload_mask(reg, priv->len, ETH_ALEN)) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_ETH_ADDRS, eth_addrs, src, ETH_ALEN, reg); break; case offsetof(struct ethhdr, h_dest): - if (priv->len != ETH_ALEN) + if (!nft_payload_offload_mask(reg, priv->len, ETH_ALEN)) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_ETH_ADDRS, eth_addrs, dst, ETH_ALEN, reg); break; case offsetof(struct ethhdr, h_proto): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_BASIC, basic, @@ -192,14 +222,14 @@ nft_offload_set_dependency(ctx, NFT_OFFLOAD_DEP_NETWORK); break; case offsetof(struct vlan_ethhdr, h_vlan_TCI): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_VLAN, vlan, vlan_tci, sizeof(__be16), reg); break; case offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_VLAN, vlan, @@ -207,7 +237,7 @@ nft_offload_set_dependency(ctx, NFT_OFFLOAD_DEP_NETWORK); break; case offsetof(struct vlan_ethhdr, h_vlan_TCI) + sizeof(struct vlan_hdr): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, vlan, @@ -215,7 +245,7 @@ break; case offsetof(struct vlan_ethhdr, h_vlan_encapsulated_proto) + sizeof(struct vlan_hdr): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_CVLAN, vlan, @@ -236,21 +266,25 @@ switch (priv->offset) { case offsetof(struct iphdr, saddr): - if (priv->len != sizeof(struct in_addr)) + if (!nft_payload_offload_mask(reg, priv->len, + sizeof(struct in_addr))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_IPV4_ADDRS, ipv4, src, sizeof(struct in_addr), reg); + nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV4_ADDRS); break; case offsetof(struct iphdr, daddr): - if (priv->len != sizeof(struct in_addr)) + if (!nft_payload_offload_mask(reg, priv->len, + sizeof(struct in_addr))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_IPV4_ADDRS, ipv4, dst, sizeof(struct in_addr), reg); + nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV4_ADDRS); break; case offsetof(struct iphdr, protocol): - if (priv->len != sizeof(__u8)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__u8))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_BASIC, basic, ip_proto, @@ -272,21 +306,25 @@ switch (priv->offset) { case offsetof(struct ipv6hdr, saddr): - if (priv->len != sizeof(struct in6_addr)) + if (!nft_payload_offload_mask(reg, priv->len, + sizeof(struct in6_addr))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_IPV6_ADDRS, ipv6, src, sizeof(struct in6_addr), reg); + nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV6_ADDRS); break; case offsetof(struct ipv6hdr, daddr): - if (priv->len != sizeof(struct in6_addr)) + if (!nft_payload_offload_mask(reg, priv->len, + sizeof(struct in6_addr))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_IPV6_ADDRS, ipv6, dst, sizeof(struct in6_addr), reg); + nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV6_ADDRS); break; case offsetof(struct ipv6hdr, nexthdr): - if (priv->len != sizeof(__u8)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__u8))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_BASIC, basic, ip_proto, @@ -328,14 +366,14 @@ switch (priv->offset) { case offsetof(struct tcphdr, source): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_PORTS, tp, src, sizeof(__be16), reg); break; case offsetof(struct tcphdr, dest): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_PORTS, tp, dst, @@ -356,14 +394,14 @@ switch (priv->offset) { case offsetof(struct udphdr, source): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_PORTS, tp, src, sizeof(__be16), reg); break; case offsetof(struct udphdr, dest): - if (priv->len != sizeof(__be16)) + if (!nft_payload_offload_mask(reg, priv->len, sizeof(__be16))) return -EOPNOTSUPP; NFT_OFFLOAD_MATCH(FLOW_DISSECTOR_KEY_PORTS, tp, dst, --- linux-5.8.0.orig/net/netfilter/nft_set_rbtree.c +++ linux-5.8.0/net/netfilter/nft_set_rbtree.c @@ -218,11 +218,11 @@ struct nft_rbtree_elem *new, struct nft_set_ext **ext) { + bool overlap = false, dup_end_left = false, dup_end_right = false; struct nft_rbtree *priv = nft_set_priv(set); u8 genmask = nft_genmask_next(net); struct nft_rbtree_elem *rbe; struct rb_node *parent, **p; - bool overlap = false; int d; /* Detect overlaps as we descend the tree. Set the flag in these cases: @@ -238,24 +238,44 @@ * * b1. _ _ __>| !_ _ __| (insert end before existing start) * b2. _ _ ___| !_ _ _>| (insert end after existing start) - * b3. _ _ ___! >|_ _ __| (insert start after existing end) + * b3. _ _ ___! >|_ _ __| (insert start after existing end, as a leaf) + * '--' no nodes falling in this range + * b4. >|_ _ ! (insert start before existing start) * * Case a3. resolves to b3.: * - if the inserted start element is the leftmost, because the '0' * element in the tree serves as end element - * - otherwise, if an existing end is found. Note that end elements are - * always inserted after corresponding start elements. + * - otherwise, if an existing end is found immediately to the left. If + * there are existing nodes in between, we need to further descend the + * tree before we can conclude the new start isn't causing an overlap + * + * or to b4., which, preceded by a3., means we already traversed one or + * more existing intervals entirely, from the right. * * For a new, rightmost pair of elements, we'll hit cases b3. and b2., * in that order. * * The flag is also cleared in two special cases: * - * b4. |__ _ _!|<_ _ _ (insert start right before existing end) - * b5. |__ _ >|!__ _ _ (insert end right after existing start) + * b5. |__ _ _!|<_ _ _ (insert start right before existing end) + * b6. |__ _ >|!__ _ _ (insert end right after existing start) * * which always happen as last step and imply that no further * overlapping is possible. + * + * Another special case comes from the fact that start elements matching + * an already existing start element are allowed: insertion is not + * performed but we return -EEXIST in that case, and the error will be + * cleared by the caller if NLM_F_EXCL is not present in the request. + * This way, request for insertion of an exact overlap isn't reported as + * error to userspace if not desired. + * + * However, if the existing start matches a pre-existing start, but the + * end element doesn't match the corresponding pre-existing end element, + * we need to report a partial overlap. This is a local condition that + * can be noticed without need for a tracking flag, by checking for a + * local duplicated end for a corresponding start, from left and right, + * separately. */ parent = NULL; @@ -272,26 +292,41 @@ if (nft_rbtree_interval_start(new)) { if (nft_rbtree_interval_end(rbe) && nft_set_elem_active(&rbe->ext, genmask) && - !nft_set_elem_expired(&rbe->ext)) + !nft_set_elem_expired(&rbe->ext) && !*p) overlap = false; } else { + if (dup_end_left && !*p) + return -ENOTEMPTY; + overlap = nft_rbtree_interval_end(rbe) && nft_set_elem_active(&rbe->ext, genmask) && !nft_set_elem_expired(&rbe->ext); + + if (overlap) { + dup_end_right = true; + continue; + } } } else if (d > 0) { p = &parent->rb_right; if (nft_rbtree_interval_end(new)) { + if (dup_end_right && !*p) + return -ENOTEMPTY; + overlap = nft_rbtree_interval_end(rbe) && nft_set_elem_active(&rbe->ext, genmask) && !nft_set_elem_expired(&rbe->ext); - } else if (nft_rbtree_interval_end(rbe) && - nft_set_elem_active(&rbe->ext, genmask) && + + if (overlap) { + dup_end_left = true; + continue; + } + } else if (nft_set_elem_active(&rbe->ext, genmask) && !nft_set_elem_expired(&rbe->ext)) { - overlap = true; + overlap = nft_rbtree_interval_end(rbe); } } else { if (nft_rbtree_interval_end(rbe) && @@ -316,6 +351,8 @@ p = &parent->rb_left; } } + + dup_end_left = dup_end_right = false; } if (overlap) --- linux-5.8.0.orig/net/netfilter/utils.c +++ linux-5.8.0/net/netfilter/utils.c @@ -191,8 +191,8 @@ skb->mark == rt_info->mark && iph->daddr == rt_info->daddr && iph->saddr == rt_info->saddr)) - return ip_route_me_harder(entry->state.net, skb, - RTN_UNSPEC); + return ip_route_me_harder(entry->state.net, entry->state.sk, + skb, RTN_UNSPEC); } #endif return 0; --- linux-5.8.0.orig/net/netfilter/x_tables.c +++ linux-5.8.0/net/netfilter/x_tables.c @@ -330,6 +330,7 @@ const struct xt_match *m; int have_rev = 0; + mutex_lock(&xt[af].mutex); list_for_each_entry(m, &xt[af].match, list) { if (strcmp(m->name, name) == 0) { if (m->revision > *bestp) @@ -338,6 +339,7 @@ have_rev = 1; } } + mutex_unlock(&xt[af].mutex); if (af != NFPROTO_UNSPEC && !have_rev) return match_revfn(NFPROTO_UNSPEC, name, revision, bestp); @@ -350,6 +352,7 @@ const struct xt_target *t; int have_rev = 0; + mutex_lock(&xt[af].mutex); list_for_each_entry(t, &xt[af].target, list) { if (strcmp(t->name, name) == 0) { if (t->revision > *bestp) @@ -358,6 +361,7 @@ have_rev = 1; } } + mutex_unlock(&xt[af].mutex); if (af != NFPROTO_UNSPEC && !have_rev) return target_revfn(NFPROTO_UNSPEC, name, revision, bestp); @@ -371,12 +375,10 @@ { int have_rev, best = -1; - mutex_lock(&xt[af].mutex); if (target == 1) have_rev = target_revfn(af, name, revision, &best); else have_rev = match_revfn(af, name, revision, &best); - mutex_unlock(&xt[af].mutex); /* Nothing at all? Return 0 to try loading module. */ if (best == -1) { @@ -731,7 +733,7 @@ { const struct xt_match *match = m->u.kernel.match; struct compat_xt_entry_match *cm = (struct compat_xt_entry_match *)m; - int pad, off = xt_compat_match_offset(match); + int off = xt_compat_match_offset(match); u_int16_t msize = cm->u.user.match_size; char name[sizeof(m->u.user.name)]; @@ -741,9 +743,6 @@ match->compat_from_user(m->data, cm->data); else memcpy(m->data, cm->data, msize - sizeof(*cm)); - pad = XT_ALIGN(match->matchsize) - match->matchsize; - if (pad > 0) - memset(m->data + match->matchsize, 0, pad); msize += off; m->u.user.match_size = msize; @@ -1114,7 +1113,7 @@ { const struct xt_target *target = t->u.kernel.target; struct compat_xt_entry_target *ct = (struct compat_xt_entry_target *)t; - int pad, off = xt_compat_target_offset(target); + int off = xt_compat_target_offset(target); u_int16_t tsize = ct->u.user.target_size; char name[sizeof(t->u.user.name)]; @@ -1124,9 +1123,6 @@ target->compat_from_user(t->data, ct->data); else memcpy(t->data, ct->data, tsize - sizeof(*ct)); - pad = XT_ALIGN(target->targetsize) - target->targetsize; - if (pad > 0) - memset(t->data + target->targetsize, 0, pad); tsize += off; t->u.user.target_size = tsize; @@ -1387,7 +1383,7 @@ table->private = newinfo; /* make sure all cpus see new ->private value */ - smp_wmb(); + smp_mb(); /* * Even though table entries have now been swapped, other CPU's --- linux-5.8.0.orig/net/netfilter/xt_RATEEST.c +++ linux-5.8.0/net/netfilter/xt_RATEEST.c @@ -115,6 +115,9 @@ } cfg; int ret; + if (strnlen(info->name, sizeof(est->name)) >= sizeof(est->name)) + return -ENAMETOOLONG; + net_get_random_once(&jhash_rnd, sizeof(jhash_rnd)); mutex_lock(&xn->hash_lock); --- linux-5.8.0.orig/net/netfilter/xt_SECMARK.c +++ linux-5.8.0/net/netfilter/xt_SECMARK.c @@ -43,13 +43,14 @@ static int checkentry_lsm(struct xt_secmark_target_info *info) { + struct lsmblob blob; int err; info->secctx[SECMARK_SECCTX_MAX - 1] = '\0'; info->secid = 0; err = security_secctx_to_secid(info->secctx, strlen(info->secctx), - &info->secid); + &blob); if (err) { if (err == -EINVAL) pr_info_ratelimited("invalid security context \'%s\'\n", @@ -57,13 +58,17 @@ return err; } + /* xt_secmark_target_info can't be changed to use lsmblobs because + * it is exposed as an API. Use lsmblob_value() to get the one + * value that got set by security_secctx_to_secid(). */ + info->secid = lsmblob_value(&blob); if (!info->secid) { pr_info_ratelimited("unable to map security context \'%s\'\n", info->secctx); return -ENOENT; } - err = security_secmark_relabel_packet(info->secid); + err = security_secmark_relabel_packet(&blob); if (err) { pr_info_ratelimited("unable to obtain relabeling permission\n"); return err; --- linux-5.8.0.orig/net/netfilter/xt_recent.c +++ linux-5.8.0/net/netfilter/xt_recent.c @@ -152,7 +152,8 @@ /* * Drop entries with timestamps older then 'time'. */ -static void recent_entry_reap(struct recent_table *t, unsigned long time) +static void recent_entry_reap(struct recent_table *t, unsigned long time, + struct recent_entry *working, bool update) { struct recent_entry *e; @@ -162,6 +163,12 @@ e = list_entry(t->lru_list.next, struct recent_entry, lru_list); /* + * Do not reap the entry which are going to be updated. + */ + if (e == working && update) + return; + + /* * The last time stamp is the most recent. */ if (time_after(time, e->stamps[e->index-1])) @@ -303,7 +310,8 @@ /* info->seconds must be non-zero */ if (info->check_set & XT_RECENT_REAP) - recent_entry_reap(t, time); + recent_entry_reap(t, time, e, + info->check_set & XT_RECENT_UPDATE && ret); } if (info->check_set & XT_RECENT_SET || --- linux-5.8.0.orig/net/netlabel/netlabel_cipso_v4.c +++ linux-5.8.0/net/netlabel/netlabel_cipso_v4.c @@ -575,6 +575,7 @@ break; } + cipso_v4_doi_putdef(doi_def); rcu_read_unlock(); genlmsg_end(ans_skb, data); @@ -583,12 +584,14 @@ list_retry: /* XXX - this limit is a guesstimate */ if (nlsze_mult < 4) { + cipso_v4_doi_putdef(doi_def); rcu_read_unlock(); kfree_skb(ans_skb); nlsze_mult *= 2; goto list_start; } list_failure_lock: + cipso_v4_doi_putdef(doi_def); rcu_read_unlock(); list_failure: kfree_skb(ans_skb); --- linux-5.8.0.orig/net/netlabel/netlabel_domainhash.c +++ linux-5.8.0/net/netlabel/netlabel_domainhash.c @@ -85,6 +85,7 @@ kfree(netlbl_domhsh_addr6_entry(iter6)); } #endif /* IPv6 */ + kfree(ptr->def.addrsel); } kfree(ptr->domain); kfree(ptr); @@ -537,6 +538,8 @@ goto add_return; } #endif /* IPv6 */ + /* cleanup the new entry since we've moved everything over */ + netlbl_domhsh_free_entry(&entry->rcu); } else ret_val = -EINVAL; @@ -580,6 +583,12 @@ { int ret_val = 0; struct audit_buffer *audit_buf; + struct netlbl_af4list *iter4; + struct netlbl_domaddr4_map *map4; +#if IS_ENABLED(CONFIG_IPV6) + struct netlbl_af6list *iter6; + struct netlbl_domaddr6_map *map6; +#endif /* IPv6 */ if (entry == NULL) return -ENOENT; @@ -597,6 +606,9 @@ ret_val = -ENOENT; spin_unlock(&netlbl_domhsh_lock); + if (ret_val) + return ret_val; + audit_buf = netlbl_audit_start_common(AUDIT_MAC_MAP_DEL, audit_info); if (audit_buf != NULL) { audit_log_format(audit_buf, @@ -606,40 +618,29 @@ audit_log_end(audit_buf); } - if (ret_val == 0) { - struct netlbl_af4list *iter4; - struct netlbl_domaddr4_map *map4; -#if IS_ENABLED(CONFIG_IPV6) - struct netlbl_af6list *iter6; - struct netlbl_domaddr6_map *map6; -#endif /* IPv6 */ - - switch (entry->def.type) { - case NETLBL_NLTYPE_ADDRSELECT: - netlbl_af4list_foreach_rcu(iter4, - &entry->def.addrsel->list4) { - map4 = netlbl_domhsh_addr4_entry(iter4); - cipso_v4_doi_putdef(map4->def.cipso); - } + switch (entry->def.type) { + case NETLBL_NLTYPE_ADDRSELECT: + netlbl_af4list_foreach_rcu(iter4, &entry->def.addrsel->list4) { + map4 = netlbl_domhsh_addr4_entry(iter4); + cipso_v4_doi_putdef(map4->def.cipso); + } #if IS_ENABLED(CONFIG_IPV6) - netlbl_af6list_foreach_rcu(iter6, - &entry->def.addrsel->list6) { - map6 = netlbl_domhsh_addr6_entry(iter6); - calipso_doi_putdef(map6->def.calipso); - } + netlbl_af6list_foreach_rcu(iter6, &entry->def.addrsel->list6) { + map6 = netlbl_domhsh_addr6_entry(iter6); + calipso_doi_putdef(map6->def.calipso); + } #endif /* IPv6 */ - break; - case NETLBL_NLTYPE_CIPSOV4: - cipso_v4_doi_putdef(entry->def.cipso); - break; + break; + case NETLBL_NLTYPE_CIPSOV4: + cipso_v4_doi_putdef(entry->def.cipso); + break; #if IS_ENABLED(CONFIG_IPV6) - case NETLBL_NLTYPE_CALIPSO: - calipso_doi_putdef(entry->def.calipso); - break; + case NETLBL_NLTYPE_CALIPSO: + calipso_doi_putdef(entry->def.calipso); + break; #endif /* IPv6 */ - } - call_rcu(&entry->rcu, netlbl_domhsh_free_entry); } + call_rcu(&entry->rcu, netlbl_domhsh_free_entry); return ret_val; } --- linux-5.8.0.orig/net/netlabel/netlabel_kapi.c +++ linux-5.8.0/net/netlabel/netlabel_kapi.c @@ -196,7 +196,7 @@ * @addr: IP address in network byte order (struct in[6]_addr) * @mask: address mask in network byte order (struct in[6]_addr) * @family: address family - * @secid: LSM secid value for the entry + * @lsmblob: LSM data value for the entry * @audit_info: NetLabel audit information * * Description: @@ -210,7 +210,7 @@ const void *addr, const void *mask, u16 family, - u32 secid, + struct lsmblob *lsmblob, struct netlbl_audit *audit_info) { u32 addr_len; @@ -230,7 +230,7 @@ return netlbl_unlhsh_add(net, dev_name, addr, mask, addr_len, - secid, audit_info); + lsmblob, audit_info); } /** --- linux-5.8.0.orig/net/netlabel/netlabel_unlabeled.c +++ linux-5.8.0/net/netlabel/netlabel_unlabeled.c @@ -66,7 +66,7 @@ #define netlbl_unlhsh_addr4_entry(iter) \ container_of(iter, struct netlbl_unlhsh_addr4, list) struct netlbl_unlhsh_addr4 { - u32 secid; + struct lsmblob lsmblob; struct netlbl_af4list list; struct rcu_head rcu; @@ -74,7 +74,7 @@ #define netlbl_unlhsh_addr6_entry(iter) \ container_of(iter, struct netlbl_unlhsh_addr6, list) struct netlbl_unlhsh_addr6 { - u32 secid; + struct lsmblob lsmblob; struct netlbl_af6list list; struct rcu_head rcu; @@ -220,7 +220,7 @@ * @iface: the associated interface entry * @addr: IPv4 address in network byte order * @mask: IPv4 address mask in network byte order - * @secid: LSM secid value for entry + * @lsmblob: LSM data value for entry * * Description: * Add a new address entry into the unlabeled connection hash table using the @@ -231,7 +231,7 @@ static int netlbl_unlhsh_add_addr4(struct netlbl_unlhsh_iface *iface, const struct in_addr *addr, const struct in_addr *mask, - u32 secid) + struct lsmblob *lsmblob) { int ret_val; struct netlbl_unlhsh_addr4 *entry; @@ -243,7 +243,7 @@ entry->list.addr = addr->s_addr & mask->s_addr; entry->list.mask = mask->s_addr; entry->list.valid = 1; - entry->secid = secid; + entry->lsmblob = *lsmblob; spin_lock(&netlbl_unlhsh_lock); ret_val = netlbl_af4list_add(&entry->list, &iface->addr4_list); @@ -260,7 +260,7 @@ * @iface: the associated interface entry * @addr: IPv6 address in network byte order * @mask: IPv6 address mask in network byte order - * @secid: LSM secid value for entry + * @lsmblob: LSM data value for entry * * Description: * Add a new address entry into the unlabeled connection hash table using the @@ -271,7 +271,7 @@ static int netlbl_unlhsh_add_addr6(struct netlbl_unlhsh_iface *iface, const struct in6_addr *addr, const struct in6_addr *mask, - u32 secid) + struct lsmblob *lsmblob) { int ret_val; struct netlbl_unlhsh_addr6 *entry; @@ -287,7 +287,7 @@ entry->list.addr.s6_addr32[3] &= mask->s6_addr32[3]; entry->list.mask = *mask; entry->list.valid = 1; - entry->secid = secid; + entry->lsmblob = *lsmblob; spin_lock(&netlbl_unlhsh_lock); ret_val = netlbl_af6list_add(&entry->list, &iface->addr6_list); @@ -366,7 +366,7 @@ const void *addr, const void *mask, u32 addr_len, - u32 secid, + struct lsmblob *lsmblob, struct netlbl_audit *audit_info) { int ret_val; @@ -374,8 +374,7 @@ struct net_device *dev; struct netlbl_unlhsh_iface *iface; struct audit_buffer *audit_buf = NULL; - char *secctx = NULL; - u32 secctx_len; + struct lsmcontext context; if (addr_len != sizeof(struct in_addr) && addr_len != sizeof(struct in6_addr)) @@ -408,7 +407,7 @@ const struct in_addr *addr4 = addr; const struct in_addr *mask4 = mask; - ret_val = netlbl_unlhsh_add_addr4(iface, addr4, mask4, secid); + ret_val = netlbl_unlhsh_add_addr4(iface, addr4, mask4, lsmblob); if (audit_buf != NULL) netlbl_af4list_audit_addr(audit_buf, 1, dev_name, @@ -421,7 +420,7 @@ const struct in6_addr *addr6 = addr; const struct in6_addr *mask6 = mask; - ret_val = netlbl_unlhsh_add_addr6(iface, addr6, mask6, secid); + ret_val = netlbl_unlhsh_add_addr6(iface, addr6, mask6, lsmblob); if (audit_buf != NULL) netlbl_af6list_audit_addr(audit_buf, 1, dev_name, @@ -438,11 +437,11 @@ unlhsh_add_return: rcu_read_unlock(); if (audit_buf != NULL) { - if (security_secid_to_secctx(secid, - &secctx, - &secctx_len) == 0) { - audit_log_format(audit_buf, " sec_obj=%s", secctx); - security_release_secctx(secctx, secctx_len); + if (security_secid_to_secctx(lsmblob, &context, + LSMBLOB_FIRST) == 0) { + audit_log_format(audit_buf, " sec_obj=%s", + context.context); + security_release_secctx(&context); } audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); audit_log_end(audit_buf); @@ -473,8 +472,7 @@ struct netlbl_unlhsh_addr4 *entry; struct audit_buffer *audit_buf; struct net_device *dev; - char *secctx; - u32 secctx_len; + struct lsmcontext context; spin_lock(&netlbl_unlhsh_lock); list_entry = netlbl_af4list_remove(addr->s_addr, mask->s_addr, @@ -495,10 +493,11 @@ if (dev != NULL) dev_put(dev); if (entry != NULL && - security_secid_to_secctx(entry->secid, - &secctx, &secctx_len) == 0) { - audit_log_format(audit_buf, " sec_obj=%s", secctx); - security_release_secctx(secctx, secctx_len); + security_secid_to_secctx(&entry->lsmblob, &context, + LSMBLOB_FIRST) == 0) { + audit_log_format(audit_buf, " sec_obj=%s", + context.context); + security_release_secctx(&context); } audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0); audit_log_end(audit_buf); @@ -535,8 +534,7 @@ struct netlbl_unlhsh_addr6 *entry; struct audit_buffer *audit_buf; struct net_device *dev; - char *secctx; - u32 secctx_len; + struct lsmcontext context; spin_lock(&netlbl_unlhsh_lock); list_entry = netlbl_af6list_remove(addr, mask, &iface->addr6_list); @@ -556,10 +554,11 @@ if (dev != NULL) dev_put(dev); if (entry != NULL && - security_secid_to_secctx(entry->secid, - &secctx, &secctx_len) == 0) { - audit_log_format(audit_buf, " sec_obj=%s", secctx); - security_release_secctx(secctx, secctx_len); + security_secid_to_secctx(&entry->lsmblob, &context, + LSMBLOB_FIRST) == 0) { + audit_log_format(audit_buf, " sec_obj=%s", + context.context); + security_release_secctx(&context); } audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0); audit_log_end(audit_buf); @@ -882,7 +881,7 @@ void *addr; void *mask; u32 addr_len; - u32 secid; + struct lsmblob blob; struct netlbl_audit audit_info; /* Don't allow users to add both IPv4 and IPv6 addresses for a @@ -906,13 +905,12 @@ ret_val = security_secctx_to_secid( nla_data(info->attrs[NLBL_UNLABEL_A_SECCTX]), nla_len(info->attrs[NLBL_UNLABEL_A_SECCTX]), - &secid); + &blob); if (ret_val != 0) return ret_val; - return netlbl_unlhsh_add(&init_net, - dev_name, addr, mask, addr_len, secid, - &audit_info); + return netlbl_unlhsh_add(&init_net, dev_name, addr, mask, addr_len, + &blob, &audit_info); } /** @@ -933,7 +931,7 @@ void *addr; void *mask; u32 addr_len; - u32 secid; + struct lsmblob blob; struct netlbl_audit audit_info; /* Don't allow users to add both IPv4 and IPv6 addresses for a @@ -955,12 +953,11 @@ ret_val = security_secctx_to_secid( nla_data(info->attrs[NLBL_UNLABEL_A_SECCTX]), nla_len(info->attrs[NLBL_UNLABEL_A_SECCTX]), - &secid); + &blob); if (ret_val != 0) return ret_val; - return netlbl_unlhsh_add(&init_net, - NULL, addr, mask, addr_len, secid, + return netlbl_unlhsh_add(&init_net, NULL, addr, mask, addr_len, &blob, &audit_info); } @@ -1071,10 +1068,9 @@ int ret_val = -ENOMEM; struct netlbl_unlhsh_walk_arg *cb_arg = arg; struct net_device *dev; + struct lsmcontext context; void *data; - u32 secid; - char *secctx; - u32 secctx_len; + struct lsmblob *lsmb; data = genlmsg_put(cb_arg->skb, NETLINK_CB(cb_arg->nl_cb->skb).portid, cb_arg->seq, &netlbl_unlabel_gnl_family, @@ -1112,7 +1108,7 @@ if (ret_val != 0) goto list_cb_failure; - secid = addr4->secid; + lsmb = (struct lsmblob *)&addr4->lsmblob; } else { ret_val = nla_put_in6_addr(cb_arg->skb, NLBL_UNLABEL_A_IPV6ADDR, @@ -1126,17 +1122,17 @@ if (ret_val != 0) goto list_cb_failure; - secid = addr6->secid; + lsmb = (struct lsmblob *)&addr6->lsmblob; } - ret_val = security_secid_to_secctx(secid, &secctx, &secctx_len); + ret_val = security_secid_to_secctx(lsmb, &context, LSMBLOB_FIRST); if (ret_val != 0) goto list_cb_failure; ret_val = nla_put(cb_arg->skb, NLBL_UNLABEL_A_SECCTX, - secctx_len, - secctx); - security_release_secctx(secctx, secctx_len); + context.len, + context.context); + security_release_secctx(&context); if (ret_val != 0) goto list_cb_failure; @@ -1166,12 +1162,13 @@ struct netlbl_unlhsh_walk_arg cb_arg; u32 skip_bkt = cb->args[0]; u32 skip_chain = cb->args[1]; - u32 iter_bkt; - u32 iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0; + u32 skip_addr4 = cb->args[2]; + u32 iter_bkt, iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0; struct netlbl_unlhsh_iface *iface; struct list_head *iter_list; struct netlbl_af4list *addr4; #if IS_ENABLED(CONFIG_IPV6) + u32 skip_addr6 = cb->args[3]; struct netlbl_af6list *addr6; #endif @@ -1182,7 +1179,7 @@ rcu_read_lock(); for (iter_bkt = skip_bkt; iter_bkt < rcu_dereference(netlbl_unlhsh)->size; - iter_bkt++, iter_chain = 0, iter_addr4 = 0, iter_addr6 = 0) { + iter_bkt++) { iter_list = &rcu_dereference(netlbl_unlhsh)->tbl[iter_bkt]; list_for_each_entry_rcu(iface, iter_list, list) { if (!iface->valid || @@ -1190,7 +1187,7 @@ continue; netlbl_af4list_foreach_rcu(addr4, &iface->addr4_list) { - if (iter_addr4++ < cb->args[2]) + if (iter_addr4++ < skip_addr4) continue; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST, @@ -1203,10 +1200,12 @@ goto unlabel_staticlist_return; } } + iter_addr4 = 0; + skip_addr4 = 0; #if IS_ENABLED(CONFIG_IPV6) netlbl_af6list_foreach_rcu(addr6, &iface->addr6_list) { - if (iter_addr6++ < cb->args[3]) + if (iter_addr6++ < skip_addr6) continue; if (netlbl_unlabel_staticlist_gen( NLBL_UNLABEL_C_STATICLIST, @@ -1219,8 +1218,12 @@ goto unlabel_staticlist_return; } } + iter_addr6 = 0; + skip_addr6 = 0; #endif /* IPv6 */ } + iter_chain = 0; + skip_chain = 0; } unlabel_staticlist_return: @@ -1481,7 +1484,7 @@ &iface->addr4_list); if (addr4 == NULL) goto unlabel_getattr_nolabel; - secattr->attr.secid = netlbl_unlhsh_addr4_entry(addr4)->secid; + secattr->attr.lsmblob = netlbl_unlhsh_addr4_entry(addr4)->lsmblob; break; } #if IS_ENABLED(CONFIG_IPV6) @@ -1494,7 +1497,7 @@ &iface->addr6_list); if (addr6 == NULL) goto unlabel_getattr_nolabel; - secattr->attr.secid = netlbl_unlhsh_addr6_entry(addr6)->secid; + secattr->attr.lsmblob = netlbl_unlhsh_addr6_entry(addr6)->lsmblob; break; } #endif /* IPv6 */ @@ -1532,7 +1535,7 @@ /* Only the kernel is allowed to call this function and the only time * it is called is at bootup before the audit subsystem is reporting * messages so don't worry to much about these values. */ - security_task_getsecid(current, &audit_info.secid); + security_task_getsecid(current, &audit_info.lsmdata); audit_info.loginuid = GLOBAL_ROOT_UID; audit_info.sessionid = 0; --- linux-5.8.0.orig/net/netlabel/netlabel_unlabeled.h +++ linux-5.8.0/net/netlabel/netlabel_unlabeled.h @@ -211,7 +211,7 @@ const void *addr, const void *mask, u32 addr_len, - u32 secid, + struct lsmblob *lsmblob, struct netlbl_audit *audit_info); int netlbl_unlhsh_remove(struct net *net, const char *dev_name, --- linux-5.8.0.orig/net/netlabel/netlabel_user.c +++ linux-5.8.0/net/netlabel/netlabel_user.c @@ -84,12 +84,12 @@ struct netlbl_audit *audit_info) { struct audit_buffer *audit_buf; - char *secctx; - u32 secctx_len; if (audit_enabled == AUDIT_OFF) return NULL; + audit_stamp_context(audit_context()); + audit_buf = audit_log_start(audit_context(), GFP_ATOMIC, type); if (audit_buf == NULL) return NULL; @@ -98,13 +98,8 @@ from_kuid(&init_user_ns, audit_info->loginuid), audit_info->sessionid); - if (audit_info->secid != 0 && - security_secid_to_secctx(audit_info->secid, - &secctx, - &secctx_len) == 0) { - audit_log_format(audit_buf, " subj=%s", secctx); - security_release_secctx(secctx, secctx_len); - } + audit_log_task_context(audit_buf, &audit_info->lsmdata); + audit_log_lsm(&audit_info->lsmdata, false); return audit_buf; } --- linux-5.8.0.orig/net/netlabel/netlabel_user.h +++ linux-5.8.0/net/netlabel/netlabel_user.h @@ -34,7 +34,7 @@ static inline void netlbl_netlink_auditinfo(struct sk_buff *skb, struct netlbl_audit *audit_info) { - security_task_getsecid(current, &audit_info->secid); + security_task_getsecid(current, &audit_info->lsmdata); audit_info->loginuid = audit_get_loginuid(current); audit_info->sessionid = audit_get_sessionid(current); } --- linux-5.8.0.orig/net/netlink/genetlink.c +++ linux-5.8.0/net/netlink/genetlink.c @@ -1079,7 +1079,7 @@ if (err) return err; - while (netlink_policy_dump_loop(&cb->args[1])) { + while (netlink_policy_dump_loop(cb->args[1])) { void *hdr; struct nlattr *nest; @@ -1113,6 +1113,12 @@ return skb->len; } +static int ctrl_dumppolicy_done(struct netlink_callback *cb) +{ + netlink_policy_dump_free(cb->args[1]); + return 0; +} + static const struct genl_ops genl_ctrl_ops[] = { { .cmd = CTRL_CMD_GETFAMILY, @@ -1123,6 +1129,7 @@ { .cmd = CTRL_CMD_GETPOLICY, .dumpit = ctrl_dumppolicy, + .done = ctrl_dumppolicy_done, }, }; --- linux-5.8.0.orig/net/netlink/policy.c +++ linux-5.8.0/net/netlink/policy.c @@ -51,6 +51,9 @@ if (!state) return -ENOMEM; + memset(&state->policies[state->n_alloc], 0, + flex_array_size(state, policies, n_alloc - state->n_alloc)); + state->policies[state->n_alloc].policy = policy; state->policies[state->n_alloc].maxtype = maxtype; state->n_alloc = n_alloc; @@ -81,7 +84,6 @@ unsigned int policy_idx; int err; - /* also returns 0 if "*_state" is our ERR_PTR() end marker */ if (*_state) return 0; @@ -137,21 +139,11 @@ !state->policies[state->policy_idx].policy; } -bool netlink_policy_dump_loop(unsigned long *_state) +bool netlink_policy_dump_loop(unsigned long _state) { - struct nl_policy_dump *state = (void *)*_state; - - if (IS_ERR(state)) - return false; - - if (netlink_policy_dump_finished(state)) { - kfree(state); - /* store end marker instead of freed state */ - *_state = (unsigned long)ERR_PTR(-ENOENT); - return false; - } + struct nl_policy_dump *state = (void *)_state; - return true; + return !netlink_policy_dump_finished(state); } int netlink_policy_dump_write(struct sk_buff *skb, unsigned long _state) @@ -306,3 +298,10 @@ nla_nest_cancel(skb, policy); return -ENOBUFS; } + +void netlink_policy_dump_free(unsigned long _state) +{ + struct nl_policy_dump *state = (void *)_state; + + kfree(state); +} --- linux-5.8.0.orig/net/nfc/netlink.c +++ linux-5.8.0/net/nfc/netlink.c @@ -852,6 +852,7 @@ if (!dev->polling) { device_unlock(&dev->dev); + nfc_put_device(dev); return -EINVAL; } @@ -1217,7 +1218,7 @@ u32 idx; char firmware_name[NFC_FIRMWARE_NAME_MAXSIZE + 1]; - if (!info->attrs[NFC_ATTR_DEVICE_INDEX]) + if (!info->attrs[NFC_ATTR_DEVICE_INDEX] || !info->attrs[NFC_ATTR_FIRMWARE_NAME]) return -EINVAL; idx = nla_get_u32(info->attrs[NFC_ATTR_DEVICE_INDEX]); --- linux-5.8.0.orig/net/nfc/rawsock.c +++ linux-5.8.0/net/nfc/rawsock.c @@ -105,7 +105,7 @@ if (addr->target_idx > dev->target_next_idx - 1 || addr->target_idx < dev->target_next_idx - dev->n_targets) { rc = -EINVAL; - goto error; + goto put_dev; } rc = nfc_activate_target(dev, addr->target_idx, addr->nfc_protocol); @@ -332,10 +332,13 @@ if ((sock->type != SOCK_SEQPACKET) && (sock->type != SOCK_RAW)) return -ESOCKTNOSUPPORT; - if (sock->type == SOCK_RAW) + if (sock->type == SOCK_RAW) { + if (!capable(CAP_NET_RAW)) + return -EPERM; sock->ops = &rawsock_raw_ops; - else + } else { sock->ops = &rawsock_ops; + } sk = sk_alloc(net, PF_NFC, GFP_ATOMIC, nfc_proto->proto, kern); if (!sk) --- linux-5.8.0.orig/net/openvswitch/actions.c +++ linux-5.8.0/net/openvswitch/actions.c @@ -200,6 +200,9 @@ __be32 lse; int err; + if (!pskb_may_pull(skb, skb_network_offset(skb) + MPLS_HLEN)) + return -ENOMEM; + stack = mpls_hdr(skb); lse = OVS_MASKED(stack->label_stack_entry, *mpls_lse, *mask); err = skb_mpls_update_lse(skb, lse); @@ -968,17 +971,13 @@ struct sw_flow_key *key, const struct nlattr *attr, bool last) { - /* The first action is always 'OVS_DEC_TTL_ATTR_ARG'. */ - struct nlattr *dec_ttl_arg = nla_data(attr); - int rem = nla_len(attr); + /* The first attribute is always 'OVS_DEC_TTL_ATTR_ACTION'. */ + struct nlattr *actions = nla_data(attr); - if (nla_len(dec_ttl_arg)) { - struct nlattr *actions = nla_next(dec_ttl_arg, &rem); + if (nla_len(actions)) + return clone_execute(dp, skb, key, 0, nla_data(actions), + nla_len(actions), last, false); - if (actions) - return clone_execute(dp, skb, key, 0, actions, rem, - last, false); - } consume_skb(skb); return 0; } @@ -1222,7 +1221,7 @@ return -EHOSTUNREACH; key->ip.ttl = --nh->hop_limit; - } else { + } else if (skb->protocol == htons(ETH_P_IP)) { struct iphdr *nh; u8 old_ttl; --- linux-5.8.0.orig/net/openvswitch/conntrack.c +++ linux-5.8.0/net/openvswitch/conntrack.c @@ -903,15 +903,19 @@ } err = ovs_ct_nat_execute(skb, ct, ctinfo, &info->range, maniptype); - if (err == NF_ACCEPT && - ct->status & IPS_SRC_NAT && ct->status & IPS_DST_NAT) { - if (maniptype == NF_NAT_MANIP_SRC) - maniptype = NF_NAT_MANIP_DST; - else - maniptype = NF_NAT_MANIP_SRC; + if (err == NF_ACCEPT && ct->status & IPS_DST_NAT) { + if (ct->status & IPS_SRC_NAT) { + if (maniptype == NF_NAT_MANIP_SRC) + maniptype = NF_NAT_MANIP_DST; + else + maniptype = NF_NAT_MANIP_SRC; - err = ovs_ct_nat_execute(skb, ct, ctinfo, &info->range, - maniptype); + err = ovs_ct_nat_execute(skb, ct, ctinfo, &info->range, + maniptype); + } else if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) { + err = ovs_ct_nat_execute(skb, ct, ctinfo, NULL, + NF_NAT_MANIP_SRC); + } } /* Mark NAT done if successful and update the flow key. */ --- linux-5.8.0.orig/net/openvswitch/datapath.c +++ linux-5.8.0/net/openvswitch/datapath.c @@ -1736,6 +1736,7 @@ /* Called with ovs_mutex. */ static void __dp_destroy(struct datapath *dp) { + struct flow_table *table = &dp->table; int i; for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++) { @@ -1754,7 +1755,14 @@ */ ovs_dp_detach_port(ovs_vport_ovsl(dp, OVSP_LOCAL)); - /* RCU destroy the flow table */ + /* Flush sw_flow in the tables. RCU cb only releases resource + * such as dp, ports and tables. That may avoid some issues + * such as RCU usage warning. + */ + table_instance_flow_flush(table, ovsl_dereference(table->ti), + ovsl_dereference(table->ufid_ti)); + + /* RCU destroy the ports, meters and flow tables. */ call_rcu(&dp->rcu, destroy_dp_rcu); } --- linux-5.8.0.orig/net/openvswitch/flow_netlink.c +++ linux-5.8.0/net/openvswitch/flow_netlink.c @@ -2503,28 +2503,42 @@ __be16 eth_type, __be16 vlan_tci, u32 mpls_label_count, bool log) { - int start, err; - u32 nested = true; + const struct nlattr *attrs[OVS_DEC_TTL_ATTR_MAX + 1]; + int start, action_start, err, rem; + const struct nlattr *a, *actions; + + memset(attrs, 0, sizeof(attrs)); + nla_for_each_nested(a, attr, rem) { + int type = nla_type(a); + + /* Ignore unknown attributes to be future proof. */ + if (type > OVS_DEC_TTL_ATTR_MAX) + continue; - if (!nla_len(attr)) - return ovs_nla_add_action(sfa, OVS_ACTION_ATTR_DEC_TTL, - NULL, 0, log); + if (!type || attrs[type]) + return -EINVAL; + + attrs[type] = a; + } + + actions = attrs[OVS_DEC_TTL_ATTR_ACTION]; + if (rem || !actions || (nla_len(actions) && nla_len(actions) < NLA_HDRLEN)) + return -EINVAL; start = add_nested_action_start(sfa, OVS_ACTION_ATTR_DEC_TTL, log); if (start < 0) return start; - err = ovs_nla_add_action(sfa, OVS_DEC_TTL_ATTR_ACTION, &nested, - sizeof(nested), log); - - if (err) - return err; + action_start = add_nested_action_start(sfa, OVS_DEC_TTL_ATTR_ACTION, log); + if (action_start < 0) + return start; - err = __ovs_nla_copy_actions(net, attr, key, sfa, eth_type, + err = __ovs_nla_copy_actions(net, actions, key, sfa, eth_type, vlan_tci, mpls_label_count, log); if (err) return err; + add_nested_action_end(*sfa, action_start); add_nested_action_end(*sfa, start); return 0; } @@ -3487,20 +3501,42 @@ static int dec_ttl_action_to_attr(const struct nlattr *attr, struct sk_buff *skb) { - int err = 0, rem = nla_len(attr); - struct nlattr *start; + struct nlattr *start, *action_start; + const struct nlattr *a; + int err = 0, rem; start = nla_nest_start_noflag(skb, OVS_ACTION_ATTR_DEC_TTL); - if (!start) return -EMSGSIZE; - err = ovs_nla_put_actions(nla_data(attr), rem, skb); - if (err) - nla_nest_cancel(skb, start); - else - nla_nest_end(skb, start); + nla_for_each_attr(a, nla_data(attr), nla_len(attr), rem) { + switch (nla_type(a)) { + case OVS_DEC_TTL_ATTR_ACTION: + + action_start = nla_nest_start_noflag(skb, OVS_DEC_TTL_ATTR_ACTION); + if (!action_start) { + err = -EMSGSIZE; + goto out; + } + err = ovs_nla_put_actions(nla_data(a), nla_len(a), skb); + if (err) + goto out; + + nla_nest_end(skb, action_start); + break; + + default: + /* Ignore all other option to be future compatible */ + break; + } + } + + nla_nest_end(skb, start); + return 0; + +out: + nla_nest_cancel(skb, start); return err; } --- linux-5.8.0.orig/net/openvswitch/flow_table.c +++ linux-5.8.0/net/openvswitch/flow_table.c @@ -345,19 +345,15 @@ flow_mask_remove(table, flow->mask); } -static void table_instance_destroy(struct flow_table *table, - struct table_instance *ti, - struct table_instance *ufid_ti, - bool deferred) +/* Must be called with OVS mutex held. */ +void table_instance_flow_flush(struct flow_table *table, + struct table_instance *ti, + struct table_instance *ufid_ti) { int i; - if (!ti) - return; - - BUG_ON(!ufid_ti); if (ti->keep_flows) - goto skip_flows; + return; for (i = 0; i < ti->n_buckets; i++) { struct sw_flow *flow; @@ -369,18 +365,16 @@ table_instance_flow_free(table, ti, ufid_ti, flow, false); - ovs_flow_free(flow, deferred); + ovs_flow_free(flow, true); } } +} -skip_flows: - if (deferred) { - call_rcu(&ti->rcu, flow_tbl_destroy_rcu_cb); - call_rcu(&ufid_ti->rcu, flow_tbl_destroy_rcu_cb); - } else { - __table_instance_destroy(ti); - __table_instance_destroy(ufid_ti); - } +static void table_instance_destroy(struct table_instance *ti, + struct table_instance *ufid_ti) +{ + call_rcu(&ti->rcu, flow_tbl_destroy_rcu_cb); + call_rcu(&ufid_ti->rcu, flow_tbl_destroy_rcu_cb); } /* No need for locking this function is called from RCU callback or @@ -393,7 +387,7 @@ free_percpu(table->mask_cache); kfree_rcu(rcu_dereference_raw(table->mask_array), rcu); - table_instance_destroy(table, ti, ufid_ti, false); + table_instance_destroy(ti, ufid_ti); } struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *ti, @@ -511,7 +505,8 @@ flow_table->count = 0; flow_table->ufid_count = 0; - table_instance_destroy(flow_table, old_ti, old_ufid_ti, true); + table_instance_flow_flush(flow_table, old_ti, old_ufid_ti); + table_instance_destroy(old_ti, old_ufid_ti); return 0; err_free_ti: --- linux-5.8.0.orig/net/openvswitch/flow_table.h +++ linux-5.8.0/net/openvswitch/flow_table.h @@ -86,4 +86,7 @@ void ovs_flow_mask_key(struct sw_flow_key *dst, const struct sw_flow_key *src, bool full, const struct sw_flow_mask *mask); +void table_instance_flow_flush(struct flow_table *table, + struct table_instance *ti, + struct table_instance *ufid_ti); #endif /* flow_table.h */ --- linux-5.8.0.orig/net/packet/af_packet.c +++ linux-5.8.0/net/packet/af_packet.c @@ -93,38 +93,42 @@ /* Assumptions: - - if device has no dev->hard_header routine, it adds and removes ll header - inside itself. In this case ll header is invisible outside of device, - but higher levels still should reserve dev->hard_header_len. - Some devices are enough clever to reallocate skb, when header - will not fit to reserved space (tunnel), another ones are silly - (PPP). + - If the device has no dev->header_ops->create, there is no LL header + visible above the device. In this case, its hard_header_len should be 0. + The device may prepend its own header internally. In this case, its + needed_headroom should be set to the space needed for it to add its + internal header. + For example, a WiFi driver pretending to be an Ethernet driver should + set its hard_header_len to be the Ethernet header length, and set its + needed_headroom to be (the real WiFi header length - the fake Ethernet + header length). - packet socket receives packets with pulled ll header, so that SOCK_RAW should push it back. On receive: ----------- -Incoming, dev->hard_header!=NULL +Incoming, dev_has_header(dev) == true mac_header -> ll header data -> data -Outgoing, dev->hard_header!=NULL +Outgoing, dev_has_header(dev) == true mac_header -> ll header data -> ll header -Incoming, dev->hard_header==NULL - mac_header -> UNKNOWN position. It is very likely, that it points to ll - header. PPP makes it, that is wrong, because introduce - assymetry between rx and tx paths. +Incoming, dev_has_header(dev) == false + mac_header -> data + However drivers often make it point to the ll header. + This is incorrect because the ll header should be invisible to us. data -> data -Outgoing, dev->hard_header==NULL - mac_header -> data. ll header is still not built! +Outgoing, dev_has_header(dev) == false + mac_header -> data. ll header is invisible to us. data -> data Resume - If dev->hard_header==NULL we are unlikely to restore sensible ll header. + If dev_has_header(dev) == false we are unable to restore the ll header, + because it is invisible to us. On transmit: @@ -942,6 +946,7 @@ } static void prb_clear_blk_fill_status(struct packet_ring_buffer *rb) + __releases(&pkc->blk_fill_in_prog_lock) { struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(rb); atomic_dec(&pkc->blk_fill_in_prog); @@ -989,6 +994,7 @@ struct tpacket_kbdq_core *pkc, struct tpacket_block_desc *pbd, unsigned int len) + __acquires(&pkc->blk_fill_in_prog_lock) { struct tpacket3_hdr *ppd; @@ -2064,7 +2070,7 @@ skb->dev = dev; - if (dev->header_ops) { + if (dev_has_header(dev)) { /* The device has an explicit notion of ll header, * exported to higher levels. * @@ -2168,7 +2174,8 @@ int skb_len = skb->len; unsigned int snaplen, res; unsigned long status = TP_STATUS_USER; - unsigned short macoff, netoff, hdrlen; + unsigned short macoff, hdrlen; + unsigned int netoff; struct sk_buff *copy_skb = NULL; struct timespec64 ts; __u32 ts_status; @@ -2192,7 +2199,7 @@ if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; - if (dev->header_ops) { + if (dev_has_header(dev)) { if (sk->sk_type != SOCK_DGRAM) skb_push(skb, skb->data - skb_mac_header(skb)); else if (skb->pkt_type == PACKET_OUTGOING) { @@ -2237,6 +2244,10 @@ } macoff = netoff - maclen; } + if (netoff > USHRT_MAX) { + atomic_inc(&po->tp_drops); + goto drop_n_restore; + } if (po->tp_version <= TPACKET_V2) { if (macoff + snaplen > po->rx_ring.frame_size) { if (po->copy_thresh && @@ -2286,8 +2297,11 @@ if (do_vnet && virtio_net_hdr_from_skb(skb, h.raw + macoff - sizeof(struct virtio_net_hdr), - vio_le(), true, 0)) + vio_le(), true, 0)) { + if (po->tp_version == TPACKET_V3) + prb_clear_blk_fill_status(&po->rx_ring); goto drop_n_account; + } if (po->tp_version <= TPACKET_V2) { packet_increment_rx_head(po, &po->rx_ring); @@ -2393,7 +2407,7 @@ __clear_bit(slot_id, po->rx_ring.rx_owner_map); spin_unlock(&sk->sk_receive_queue.lock); sk->sk_data_ready(sk); - } else { + } else if (po->tp_version == TPACKET_V3) { prb_clear_blk_fill_status(&po->rx_ring); } @@ -4628,9 +4642,11 @@ mutex_init(&net->packet.sklist_lock); INIT_HLIST_HEAD(&net->packet.sklist); +#ifdef CONFIG_PROC_FS if (!proc_create_net("packet", 0, net->proc_net, &packet_seq_ops, sizeof(struct seq_net_private))) return -ENOMEM; +#endif /* CONFIG_PROC_FS */ return 0; } --- linux-5.8.0.orig/net/psample/psample.c +++ linux-5.8.0/net/psample/psample.c @@ -309,10 +309,10 @@ unsigned short tun_proto = ip_tunnel_info_af(tun_info); const struct ip_tunnel_key *tun_key = &tun_info->key; int tun_opts_len = tun_info->options_len; - int sum = 0; + int sum = nla_total_size(0); /* PSAMPLE_ATTR_TUNNEL */ if (tun_key->tun_flags & TUNNEL_KEY) - sum += nla_total_size(sizeof(u64)); + sum += nla_total_size_64bit(sizeof(u64)); if (tun_info->mode & IP_TUNNEL_INFO_BRIDGE) sum += nla_total_size(0); --- linux-5.8.0.orig/net/qrtr/ns.c +++ linux-5.8.0/net/qrtr/ns.c @@ -193,12 +193,13 @@ struct qrtr_server *srv; struct qrtr_node *node; void __rcu **slot; - int ret; + int ret = 0; node = node_get(qrtr_ns.local_node); if (!node) return 0; + rcu_read_lock(); /* Announce the list of servers registered in this node */ radix_tree_for_each_slot(slot, &node->servers, &iter, 0) { srv = radix_tree_deref_slot(slot); @@ -206,11 +207,14 @@ ret = service_announce_new(sq, srv); if (ret < 0) { pr_err("failed to announce new service\n"); - return ret; + goto err_out; } } - return 0; +err_out: + rcu_read_unlock(); + + return ret; } static struct qrtr_server *server_add(unsigned int service, @@ -335,7 +339,7 @@ struct qrtr_node *node; void __rcu **slot; struct kvec iv; - int ret; + int ret = 0; iv.iov_base = &pkt; iv.iov_len = sizeof(pkt); @@ -344,11 +348,13 @@ if (!node) return 0; + rcu_read_lock(); /* Advertise removal of this client to all servers of remote node */ radix_tree_for_each_slot(slot, &node->servers, &iter, 0) { srv = radix_tree_deref_slot(slot); server_del(node, srv->port); } + rcu_read_unlock(); /* Advertise the removal of this client to all local servers */ local_node = node_get(qrtr_ns.local_node); @@ -359,6 +365,7 @@ pkt.cmd = cpu_to_le32(QRTR_TYPE_BYE); pkt.client.node = cpu_to_le32(from->sq_node); + rcu_read_lock(); radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) { srv = radix_tree_deref_slot(slot); @@ -372,11 +379,14 @@ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); if (ret < 0) { pr_err("failed to send bye cmd\n"); - return ret; + goto err_out; } } - return 0; +err_out: + rcu_read_unlock(); + + return ret; } static int ctrl_cmd_del_client(struct sockaddr_qrtr *from, @@ -394,7 +404,7 @@ struct list_head *li; void __rcu **slot; struct kvec iv; - int ret; + int ret = 0; iv.iov_base = &pkt; iv.iov_len = sizeof(pkt); @@ -434,6 +444,7 @@ pkt.client.node = cpu_to_le32(node_id); pkt.client.port = cpu_to_le32(port); + rcu_read_lock(); radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) { srv = radix_tree_deref_slot(slot); @@ -447,11 +458,14 @@ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); if (ret < 0) { pr_err("failed to send del client cmd\n"); - return ret; + goto err_out; } } - return 0; +err_out: + rcu_read_unlock(); + + return ret; } static int ctrl_cmd_new_server(struct sockaddr_qrtr *from, @@ -554,6 +568,7 @@ filter.service = service; filter.instance = instance; + rcu_read_lock(); radix_tree_for_each_slot(node_slot, &nodes, &node_iter, 0) { node = radix_tree_deref_slot(node_slot); @@ -568,6 +583,7 @@ lookup_notify(from, srv, true); } } + rcu_read_unlock(); /* Empty notification, to indicate end of listing */ lookup_notify(from, NULL, true); --- linux-5.8.0.orig/net/qrtr/qrtr.c +++ linux-5.8.0/net/qrtr/qrtr.c @@ -332,8 +332,7 @@ { struct qrtr_hdr_v1 *hdr; size_t len = skb->len; - int rc = -ENODEV; - int confirm_rx; + int rc, confirm_rx; confirm_rx = qrtr_tx_wait(node, to->sq_node, to->sq_port, type); if (confirm_rx < 0) { @@ -348,7 +347,7 @@ hdr->src_port_id = cpu_to_le32(from->sq_port); if (to->sq_port == QRTR_PORT_CTRL) { hdr->dst_node_id = cpu_to_le32(node->nid); - hdr->dst_port_id = cpu_to_le32(QRTR_NODE_BCAST); + hdr->dst_port_id = cpu_to_le32(QRTR_PORT_CTRL); } else { hdr->dst_node_id = cpu_to_le32(to->sq_node); hdr->dst_port_id = cpu_to_le32(to->sq_port); @@ -357,15 +356,17 @@ hdr->size = cpu_to_le32(len); hdr->confirm_rx = !!confirm_rx; - skb_put_padto(skb, ALIGN(len, 4) + sizeof(*hdr)); - - mutex_lock(&node->ep_lock); - if (node->ep) - rc = node->ep->xmit(node->ep, skb); - else - kfree_skb(skb); - mutex_unlock(&node->ep_lock); + rc = skb_put_padto(skb, ALIGN(len, 4) + sizeof(*hdr)); + if (!rc) { + mutex_lock(&node->ep_lock); + rc = -ENODEV; + if (node->ep) + rc = node->ep->xmit(node->ep, skb); + else + kfree_skb(skb); + mutex_unlock(&node->ep_lock); + } /* Need to ensure that a subsequent message carries the otherwise lost * confirm_rx flag if we dropped this one */ if (rc && confirm_rx) @@ -432,7 +433,7 @@ if (len == 0 || len & 3) return -EINVAL; - skb = netdev_alloc_skb(NULL, len); + skb = __netdev_alloc_skb(NULL, len, GFP_ATOMIC | __GFP_NOWARN); if (!skb) return -ENOMEM; @@ -692,23 +693,25 @@ */ static int qrtr_port_assign(struct qrtr_sock *ipc, int *port) { + u32 min_port; int rc; mutex_lock(&qrtr_port_lock); if (!*port) { - rc = idr_alloc(&qrtr_ports, ipc, - QRTR_MIN_EPH_SOCKET, QRTR_MAX_EPH_SOCKET + 1, - GFP_ATOMIC); - if (rc >= 0) - *port = rc; + min_port = QRTR_MIN_EPH_SOCKET; + rc = idr_alloc_u32(&qrtr_ports, ipc, &min_port, QRTR_MAX_EPH_SOCKET, GFP_ATOMIC); + if (!rc) + *port = min_port; } else if (*port < QRTR_MIN_EPH_SOCKET && !capable(CAP_NET_ADMIN)) { rc = -EACCES; } else if (*port == QRTR_PORT_CTRL) { - rc = idr_alloc(&qrtr_ports, ipc, 0, 1, GFP_ATOMIC); + min_port = 0; + rc = idr_alloc_u32(&qrtr_ports, ipc, &min_port, 0, GFP_ATOMIC); } else { - rc = idr_alloc(&qrtr_ports, ipc, *port, *port + 1, GFP_ATOMIC); - if (rc >= 0) - *port = rc; + min_port = *port; + rc = idr_alloc_u32(&qrtr_ports, ipc, &min_port, *port, GFP_ATOMIC); + if (!rc) + *port = min_port; } mutex_unlock(&qrtr_port_lock); @@ -932,8 +935,10 @@ plen = (len + 3) & ~3; skb = sock_alloc_send_skb(sk, plen + QRTR_HDR_MAX_SIZE, msg->msg_flags & MSG_DONTWAIT, &rc); - if (!skb) + if (!skb) { + rc = -ENOMEM; goto out_node; + } skb_reserve(skb, QRTR_HDR_MAX_SIZE); @@ -1030,6 +1035,11 @@ rc = copied; if (addr) { + /* There is an anonymous 2-byte hole after sq_family, + * make sure to clear it. + */ + memset(addr, 0, sizeof(*addr)); + addr->sq_family = AF_QIPCRTR; addr->sq_node = cb->src_node; addr->sq_port = cb->src_port; --- linux-5.8.0.orig/net/qrtr/tun.c +++ linux-5.8.0/net/qrtr/tun.c @@ -31,6 +31,7 @@ static int qrtr_tun_open(struct inode *inode, struct file *filp) { struct qrtr_tun *tun; + int ret; tun = kzalloc(sizeof(*tun), GFP_KERNEL); if (!tun) @@ -43,7 +44,16 @@ filp->private_data = tun; - return qrtr_endpoint_register(&tun->ep, QRTR_EP_NID_AUTO); + ret = qrtr_endpoint_register(&tun->ep, QRTR_EP_NID_AUTO); + if (ret) + goto out; + + return 0; + +out: + filp->private_data = NULL; + kfree(tun); + return ret; } static ssize_t qrtr_tun_read_iter(struct kiocb *iocb, struct iov_iter *to) @@ -80,6 +90,12 @@ ssize_t ret; void *kbuf; + if (!len) + return -EINVAL; + + if (len > KMALLOC_MAX_SIZE) + return -ENOMEM; + kbuf = kzalloc(len, GFP_KERNEL); if (!kbuf) return -ENOMEM; --- linux-5.8.0.orig/net/rds/ib.h +++ linux-5.8.0/net/rds/ib.h @@ -264,13 +264,6 @@ int *vector_load; }; -static inline int ibdev_to_node(struct ib_device *ibdev) -{ - struct device *parent; - - parent = ibdev->dev.parent; - return parent ? dev_to_node(parent) : NUMA_NO_NODE; -} #define rdsibdev_to_node(rdsibdev) ibdev_to_node(rdsibdev->dev) /* bits for i_ack_flags */ --- linux-5.8.0.orig/net/rds/ib_send.c +++ linux-5.8.0/net/rds/ib_send.c @@ -504,7 +504,7 @@ int flow_controlled = 0; int nr_sig = 0; - BUG_ON(off % RDS_FRAG_SIZE); + BUG_ON(!conn->c_loopback && off % RDS_FRAG_SIZE); BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); /* Do not send cong updates to IB loopback */ --- linux-5.8.0.orig/net/rds/rdma.c +++ linux-5.8.0/net/rds/rdma.c @@ -567,6 +567,9 @@ if (args->nr_local == 0) return -EINVAL; + if (args->nr_local > UIO_MAXIOV) + return -EMSGSIZE; + iov->iov = kcalloc(args->nr_local, sizeof(struct rds_iovec), GFP_KERNEL); --- linux-5.8.0.orig/net/rfkill/core.c +++ linux-5.8.0/net/rfkill/core.c @@ -876,6 +876,9 @@ rfkill->suspended = false; + if (!rfkill->registered) + return 0; + if (!rfkill->persistent) { cur = !!(rfkill->state & RFKILL_BLOCK_SW); rfkill_set_block(rfkill, cur); --- linux-5.8.0.orig/net/rose/rose_loopback.c +++ linux-5.8.0/net/rose/rose_loopback.c @@ -96,10 +96,19 @@ } if (frametype == ROSE_CALL_REQUEST) { - if ((dev = rose_dev_get(dest)) != NULL) { - if (rose_rx_call_request(skb, dev, rose_loopback_neigh, lci_o) == 0) - kfree_skb(skb); - } else { + if (!rose_loopback_neigh->dev) { + kfree_skb(skb); + continue; + } + + dev = rose_dev_get(dest); + if (!dev) { + kfree_skb(skb); + continue; + } + + if (rose_rx_call_request(skb, dev, rose_loopback_neigh, lci_o) == 0) { + dev_put(dev); kfree_skb(skb); } } else { --- linux-5.8.0.orig/net/rxrpc/af_rxrpc.c +++ linux-5.8.0/net/rxrpc/af_rxrpc.c @@ -989,7 +989,7 @@ goto error_security; } - ret = register_pernet_subsys(&rxrpc_net_ops); + ret = register_pernet_device(&rxrpc_net_ops); if (ret) goto error_pernet; @@ -1034,7 +1034,7 @@ error_sock: proto_unregister(&rxrpc_proto); error_proto: - unregister_pernet_subsys(&rxrpc_net_ops); + unregister_pernet_device(&rxrpc_net_ops); error_pernet: rxrpc_exit_security(); error_security: @@ -1056,7 +1056,7 @@ unregister_key_type(&key_type_rxrpc); sock_unregister(PF_RXRPC); proto_unregister(&rxrpc_proto); - unregister_pernet_subsys(&rxrpc_net_ops); + unregister_pernet_device(&rxrpc_net_ops); ASSERTCMP(atomic_read(&rxrpc_n_tx_skbs), ==, 0); ASSERTCMP(atomic_read(&rxrpc_n_rx_skbs), ==, 0); --- linux-5.8.0.orig/net/rxrpc/ar-internal.h +++ linux-5.8.0/net/rxrpc/ar-internal.h @@ -488,7 +488,6 @@ RXRPC_CALL_RX_LAST, /* Received the last packet (at rxtx_top) */ RXRPC_CALL_TX_LAST, /* Last packet in Tx buffer (at rxtx_top) */ RXRPC_CALL_SEND_PING, /* A ping will need to be sent */ - RXRPC_CALL_PINGING, /* Ping in process */ RXRPC_CALL_RETRANS_TIMEOUT, /* Retransmission due to timeout occurred */ RXRPC_CALL_BEGAN_RX_TIMER, /* We began the expect_rx_by timer */ RXRPC_CALL_RX_HEARD, /* The peer responded at least once to this call */ @@ -673,9 +672,13 @@ rxrpc_seq_t ackr_consumed; /* Highest packet shown consumed */ rxrpc_seq_t ackr_seen; /* Highest packet shown seen */ - /* ping management */ - rxrpc_serial_t ping_serial; /* Last ping sent */ - ktime_t ping_time; /* Time last ping sent */ + /* RTT management */ + rxrpc_serial_t rtt_serial[4]; /* Serial number of DATA or PING sent */ + ktime_t rtt_sent_at[4]; /* Time packet sent */ + unsigned long rtt_avail; /* Mask of available slots in bits 0-3, + * Mask of pending samples in 8-11 */ +#define RXRPC_CALL_RTT_AVAIL_MASK 0xf +#define RXRPC_CALL_RTT_PEND_SHIFT 8 /* transmission-phase ACK management */ ktime_t acks_latest_ts; /* Timestamp of latest ACK received */ @@ -1037,7 +1040,7 @@ /* * rtt.c */ -void rxrpc_peer_add_rtt(struct rxrpc_call *, enum rxrpc_rtt_rx_trace, +void rxrpc_peer_add_rtt(struct rxrpc_call *, enum rxrpc_rtt_rx_trace, int, rxrpc_serial_t, rxrpc_serial_t, ktime_t, ktime_t); unsigned long rxrpc_get_rto_backoff(struct rxrpc_peer *, bool); void rxrpc_peer_init_rtt(struct rxrpc_peer *); --- linux-5.8.0.orig/net/rxrpc/call_accept.c +++ linux-5.8.0/net/rxrpc/call_accept.c @@ -207,6 +207,7 @@ tail = b->peer_backlog_tail; while (CIRC_CNT(head, tail, size) > 0) { struct rxrpc_peer *peer = b->peer_backlog[tail]; + rxrpc_put_local(peer->local); kfree(peer); tail = (tail + 1) & (size - 1); } --- linux-5.8.0.orig/net/rxrpc/call_object.c +++ linux-5.8.0/net/rxrpc/call_object.c @@ -153,6 +153,7 @@ call->cong_ssthresh = RXRPC_RXTX_BUFF_SIZE - 1; call->rxnet = rxnet; + call->rtt_avail = RXRPC_CALL_RTT_AVAIL_MASK; atomic_inc(&rxnet->nr_calls); return call; @@ -507,8 +508,6 @@ rxrpc_disconnect_call(call); if (call->security) call->security->free_call_crypto(call); - - rxrpc_cleanup_ring(call); _leave(""); } --- linux-5.8.0.orig/net/rxrpc/conn_event.c +++ linux-5.8.0/net/rxrpc/conn_event.c @@ -340,18 +340,18 @@ return ret; spin_lock(&conn->channel_lock); - spin_lock(&conn->state_lock); + spin_lock_bh(&conn->state_lock); if (conn->state == RXRPC_CONN_SERVICE_CHALLENGING) { conn->state = RXRPC_CONN_SERVICE; - spin_unlock(&conn->state_lock); + spin_unlock_bh(&conn->state_lock); for (loop = 0; loop < RXRPC_MAXCALLS; loop++) rxrpc_call_is_secure( rcu_dereference_protected( conn->channels[loop].call, lockdep_is_held(&conn->channel_lock))); } else { - spin_unlock(&conn->state_lock); + spin_unlock_bh(&conn->state_lock); } spin_unlock(&conn->channel_lock); --- linux-5.8.0.orig/net/rxrpc/input.c +++ linux-5.8.0/net/rxrpc/input.c @@ -430,7 +430,7 @@ return; } - if (call->state == RXRPC_CALL_SERVER_RECV_REQUEST) { + if (state == RXRPC_CALL_SERVER_RECV_REQUEST) { unsigned long timo = READ_ONCE(call->next_req_timo); unsigned long now, expect_req_by; @@ -608,36 +608,57 @@ } /* - * Process a requested ACK. + * See if there's a cached RTT probe to complete. */ -static void rxrpc_input_requested_ack(struct rxrpc_call *call, - ktime_t resp_time, - rxrpc_serial_t orig_serial, - rxrpc_serial_t ack_serial) +static void rxrpc_complete_rtt_probe(struct rxrpc_call *call, + ktime_t resp_time, + rxrpc_serial_t acked_serial, + rxrpc_serial_t ack_serial, + enum rxrpc_rtt_rx_trace type) { - struct rxrpc_skb_priv *sp; - struct sk_buff *skb; + rxrpc_serial_t orig_serial; + unsigned long avail; ktime_t sent_at; - int ix; + bool matched = false; + int i; - for (ix = 0; ix < RXRPC_RXTX_BUFF_SIZE; ix++) { - skb = call->rxtx_buffer[ix]; - if (!skb) - continue; + avail = READ_ONCE(call->rtt_avail); + smp_rmb(); /* Read avail bits before accessing data. */ - sent_at = skb->tstamp; - smp_rmb(); /* Read timestamp before serial. */ - sp = rxrpc_skb(skb); - if (sp->hdr.serial != orig_serial) + for (i = 0; i < ARRAY_SIZE(call->rtt_serial); i++) { + if (!test_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &avail)) continue; - goto found; - } - return; + sent_at = call->rtt_sent_at[i]; + orig_serial = call->rtt_serial[i]; + + if (orig_serial == acked_serial) { + clear_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail); + smp_mb(); /* Read data before setting avail bit */ + set_bit(i, &call->rtt_avail); + if (type != rxrpc_rtt_rx_cancel) + rxrpc_peer_add_rtt(call, type, i, acked_serial, ack_serial, + sent_at, resp_time); + else + trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_cancel, i, + orig_serial, acked_serial, 0, 0); + matched = true; + } + + /* If a later serial is being acked, then mark this slot as + * being available. + */ + if (after(acked_serial, orig_serial)) { + trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_obsolete, i, + orig_serial, acked_serial, 0, 0); + clear_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail); + smp_wmb(); + set_bit(i, &call->rtt_avail); + } + } -found: - rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_requested_ack, - orig_serial, ack_serial, sent_at, resp_time); + if (!matched) + trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_lost, 9, 0, acked_serial, 0, 0); } /* @@ -682,27 +703,11 @@ */ static void rxrpc_input_ping_response(struct rxrpc_call *call, ktime_t resp_time, - rxrpc_serial_t orig_serial, + rxrpc_serial_t acked_serial, rxrpc_serial_t ack_serial) { - rxrpc_serial_t ping_serial; - ktime_t ping_time; - - ping_time = call->ping_time; - smp_rmb(); - ping_serial = READ_ONCE(call->ping_serial); - - if (orig_serial == call->acks_lost_ping) + if (acked_serial == call->acks_lost_ping) rxrpc_input_check_for_lost_ack(call); - - if (before(orig_serial, ping_serial) || - !test_and_clear_bit(RXRPC_CALL_PINGING, &call->flags)) - return; - if (after(orig_serial, ping_serial)) - return; - - rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_ping_response, - orig_serial, ack_serial, ping_time, resp_time); } /* @@ -843,7 +848,7 @@ struct rxrpc_ackinfo info; u8 acks[RXRPC_MAXACKS]; } buf; - rxrpc_serial_t acked_serial; + rxrpc_serial_t ack_serial, acked_serial; rxrpc_seq_t first_soft_ack, hard_ack, prev_pkt; int nr_acks, offset, ioffset; @@ -856,6 +861,7 @@ } offset += sizeof(buf.ack); + ack_serial = sp->hdr.serial; acked_serial = ntohl(buf.ack.serial); first_soft_ack = ntohl(buf.ack.firstPacket); prev_pkt = ntohl(buf.ack.previousPacket); @@ -864,31 +870,42 @@ summary.ack_reason = (buf.ack.reason < RXRPC_ACK__INVALID ? buf.ack.reason : RXRPC_ACK__INVALID); - trace_rxrpc_rx_ack(call, sp->hdr.serial, acked_serial, + trace_rxrpc_rx_ack(call, ack_serial, acked_serial, first_soft_ack, prev_pkt, summary.ack_reason, nr_acks); - if (buf.ack.reason == RXRPC_ACK_PING_RESPONSE) + switch (buf.ack.reason) { + case RXRPC_ACK_PING_RESPONSE: rxrpc_input_ping_response(call, skb->tstamp, acked_serial, - sp->hdr.serial); - if (buf.ack.reason == RXRPC_ACK_REQUESTED) - rxrpc_input_requested_ack(call, skb->tstamp, acked_serial, - sp->hdr.serial); + ack_serial); + rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial, + rxrpc_rtt_rx_ping_response); + break; + case RXRPC_ACK_REQUESTED: + rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial, + rxrpc_rtt_rx_requested_ack); + break; + default: + if (acked_serial != 0) + rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial, + rxrpc_rtt_rx_cancel); + break; + } if (buf.ack.reason == RXRPC_ACK_PING) { - _proto("Rx ACK %%%u PING Request", sp->hdr.serial); + _proto("Rx ACK %%%u PING Request", ack_serial); rxrpc_propose_ACK(call, RXRPC_ACK_PING_RESPONSE, - sp->hdr.serial, true, true, + ack_serial, true, true, rxrpc_propose_ack_respond_to_ping); } else if (sp->hdr.flags & RXRPC_REQUEST_ACK) { rxrpc_propose_ACK(call, RXRPC_ACK_REQUESTED, - sp->hdr.serial, true, true, + ack_serial, true, true, rxrpc_propose_ack_respond_to_ack); } /* Discard any out-of-order or duplicate ACKs (outside lock). */ if (!rxrpc_is_ack_valid(call, first_soft_ack, prev_pkt)) { - trace_rxrpc_rx_discard_ack(call->debug_id, sp->hdr.serial, + trace_rxrpc_rx_discard_ack(call->debug_id, ack_serial, first_soft_ack, call->ackr_first_seq, prev_pkt, call->ackr_prev_seq); return; @@ -904,7 +921,7 @@ /* Discard any out-of-order or duplicate ACKs (inside lock). */ if (!rxrpc_is_ack_valid(call, first_soft_ack, prev_pkt)) { - trace_rxrpc_rx_discard_ack(call->debug_id, sp->hdr.serial, + trace_rxrpc_rx_discard_ack(call->debug_id, ack_serial, first_soft_ack, call->ackr_first_seq, prev_pkt, call->ackr_prev_seq); goto out; @@ -964,7 +981,7 @@ RXRPC_TX_ANNO_LAST && summary.nr_acks == call->tx_top - hard_ack && rxrpc_is_client_call(call)) - rxrpc_propose_ACK(call, RXRPC_ACK_PING, sp->hdr.serial, + rxrpc_propose_ACK(call, RXRPC_ACK_PING, ack_serial, false, true, rxrpc_propose_ack_ping_for_lost_reply); --- linux-5.8.0.orig/net/rxrpc/key.c +++ linux-5.8.0/net/rxrpc/key.c @@ -903,7 +903,7 @@ _enter(""); - if (optlen <= 0 || optlen > PAGE_SIZE - 1) + if (optlen <= 0 || optlen > PAGE_SIZE - 1 || rx->securities) return -EINVAL; description = memdup_user_nul(optval, optlen); @@ -941,7 +941,7 @@ if (IS_ERR(description)) return PTR_ERR(description); - key = request_key_net(&key_type_keyring, description, sock_net(&rx->sk), NULL); + key = request_key(&key_type_keyring, description, NULL); if (IS_ERR(key)) { kfree(description); _leave(" = %ld", PTR_ERR(key)); @@ -1073,7 +1073,7 @@ switch (token->security_index) { case RXRPC_SECURITY_RXKAD: - toksize += 9 * 4; /* viceid, kvno, key*2 + len, begin, + toksize += 8 * 4; /* viceid, kvno, key*2, begin, * end, primary, tktlen */ toksize += RND(token->kad->ticket_len); break; @@ -1108,8 +1108,9 @@ break; default: /* we have a ticket we can't encode */ - BUG(); - continue; + pr_err("Unsupported key token type (%u)\n", + token->security_index); + return -ENOPKG; } _debug("token[%u]: toksize=%u", ntoks, toksize); @@ -1139,6 +1140,14 @@ memcpy((u8 *)xdr + _l, &zero, 4 - (_l & 3)); \ xdr += (_l + 3) >> 2; \ } while(0) +#define ENCODE_BYTES(l, s) \ + do { \ + u32 _l = (l); \ + memcpy(xdr, (s), _l); \ + if (_l & 3) \ + memcpy((u8 *)xdr + _l, &zero, 4 - (_l & 3)); \ + xdr += (_l + 3) >> 2; \ + } while(0) #define ENCODE64(x) \ do { \ __be64 y = cpu_to_be64(x); \ @@ -1166,7 +1175,7 @@ case RXRPC_SECURITY_RXKAD: ENCODE(token->kad->vice_id); ENCODE(token->kad->kvno); - ENCODE_DATA(8, token->kad->session_key); + ENCODE_BYTES(8, token->kad->session_key); ENCODE(token->kad->start); ENCODE(token->kad->expiry); ENCODE(token->kad->primary_flag); @@ -1216,8 +1225,9 @@ break; default: - BUG(); - break; + pr_err("Unsupported key token type (%u)\n", + token->security_index); + return -ENOPKG; } ASSERTCMP((unsigned long)xdr - (unsigned long)oldxdr, ==, --- linux-5.8.0.orig/net/rxrpc/output.c +++ linux-5.8.0/net/rxrpc/output.c @@ -124,6 +124,49 @@ } /* + * Record the beginning of an RTT probe. + */ +static int rxrpc_begin_rtt_probe(struct rxrpc_call *call, rxrpc_serial_t serial, + enum rxrpc_rtt_tx_trace why) +{ + unsigned long avail = call->rtt_avail; + int rtt_slot = 9; + + if (!(avail & RXRPC_CALL_RTT_AVAIL_MASK)) + goto no_slot; + + rtt_slot = __ffs(avail & RXRPC_CALL_RTT_AVAIL_MASK); + if (!test_and_clear_bit(rtt_slot, &call->rtt_avail)) + goto no_slot; + + call->rtt_serial[rtt_slot] = serial; + call->rtt_sent_at[rtt_slot] = ktime_get_real(); + smp_wmb(); /* Write data before avail bit */ + set_bit(rtt_slot + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail); + + trace_rxrpc_rtt_tx(call, why, rtt_slot, serial); + return rtt_slot; + +no_slot: + trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_no_slot, rtt_slot, serial); + return -1; +} + +/* + * Cancel an RTT probe. + */ +static void rxrpc_cancel_rtt_probe(struct rxrpc_call *call, + rxrpc_serial_t serial, int rtt_slot) +{ + if (rtt_slot != -1) { + clear_bit(rtt_slot + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail); + smp_wmb(); /* Clear pending bit before setting slot */ + set_bit(rtt_slot, &call->rtt_avail); + trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_cancel, rtt_slot, serial); + } +} + +/* * Send an ACK call packet. */ int rxrpc_send_ack_packet(struct rxrpc_call *call, bool ping, @@ -136,7 +179,7 @@ rxrpc_serial_t serial; rxrpc_seq_t hard_ack, top; size_t len, n; - int ret; + int ret, rtt_slot = -1; u8 reason; if (test_bit(RXRPC_CALL_DISCONNECTED, &call->flags)) @@ -196,18 +239,8 @@ if (_serial) *_serial = serial; - if (ping) { - call->ping_serial = serial; - smp_wmb(); - /* We need to stick a time in before we send the packet in case - * the reply gets back before kernel_sendmsg() completes - but - * asking UDP to send the packet can take a relatively long - * time. - */ - call->ping_time = ktime_get_real(); - set_bit(RXRPC_CALL_PINGING, &call->flags); - trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_ping, serial); - } + if (ping) + rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_ping); ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 2, len); conn->params.peer->last_tx_at = ktime_get_seconds(); @@ -221,8 +254,7 @@ if (call->state < RXRPC_CALL_COMPLETE) { if (ret < 0) { - if (ping) - clear_bit(RXRPC_CALL_PINGING, &call->flags); + rxrpc_cancel_rtt_probe(call, serial, rtt_slot); rxrpc_propose_ACK(call, pkt->ack.reason, ntohl(pkt->ack.serial), false, true, @@ -321,7 +353,7 @@ struct kvec iov[2]; rxrpc_serial_t serial; size_t len; - int ret; + int ret, rtt_slot = -1; _enter(",{%d}", skb->len); @@ -397,6 +429,8 @@ sp->hdr.serial = serial; smp_wmb(); /* Set serial before timestamp */ skb->tstamp = ktime_get_real(); + if (whdr.flags & RXRPC_REQUEST_ACK) + rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data); /* send the packet by UDP * - returns -EMSGSIZE if UDP would have to fragment the packet @@ -408,12 +442,15 @@ conn->params.peer->last_tx_at = ktime_get_seconds(); up_read(&conn->params.local->defrag_sem); - if (ret < 0) + if (ret < 0) { + rxrpc_cancel_rtt_probe(call, serial, rtt_slot); trace_rxrpc_tx_fail(call->debug_id, serial, ret, rxrpc_tx_point_call_data_nofrag); - else + } else { trace_rxrpc_tx_packet(call->debug_id, &whdr, rxrpc_tx_point_call_data_nofrag); + } + rxrpc_tx_backoff(call, ret); if (ret == -EMSGSIZE) goto send_fragmentable; @@ -422,7 +459,6 @@ if (ret >= 0) { if (whdr.flags & RXRPC_REQUEST_ACK) { call->peer->rtt_last_req = skb->tstamp; - trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_data, serial); if (call->peer->rtt_count > 1) { unsigned long nowj = jiffies, ack_lost_at; @@ -469,6 +505,8 @@ sp->hdr.serial = serial; smp_wmb(); /* Set serial before timestamp */ skb->tstamp = ktime_get_real(); + if (whdr.flags & RXRPC_REQUEST_ACK) + rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data); switch (conn->params.local->srx.transport.family) { case AF_INET6: @@ -487,12 +525,14 @@ BUG(); } - if (ret < 0) + if (ret < 0) { + rxrpc_cancel_rtt_probe(call, serial, rtt_slot); trace_rxrpc_tx_fail(call->debug_id, serial, ret, rxrpc_tx_point_call_data_frag); - else + } else { trace_rxrpc_tx_packet(call->debug_id, &whdr, rxrpc_tx_point_call_data_frag); + } rxrpc_tx_backoff(call, ret); up_write(&conn->params.local->defrag_sem); --- linux-5.8.0.orig/net/rxrpc/peer_object.c +++ linux-5.8.0/net/rxrpc/peer_object.c @@ -502,11 +502,21 @@ * rxrpc_kernel_get_srtt - Get a call's peer smoothed RTT * @sock: The socket on which the call is in progress. * @call: The call to query + * @_srtt: Where to store the SRTT value. * - * Get the call's peer smoothed RTT. + * Get the call's peer smoothed RTT in uS. */ -u32 rxrpc_kernel_get_srtt(struct socket *sock, struct rxrpc_call *call) +bool rxrpc_kernel_get_srtt(struct socket *sock, struct rxrpc_call *call, + u32 *_srtt) { - return call->peer->srtt_us >> 3; + struct rxrpc_peer *peer = call->peer; + + if (peer->rtt_count == 0) { + *_srtt = 1000000; /* 1S */ + return false; + } + + *_srtt = call->peer->srtt_us >> 3; + return true; } EXPORT_SYMBOL(rxrpc_kernel_get_srtt); --- linux-5.8.0.orig/net/rxrpc/rtt.c +++ linux-5.8.0/net/rxrpc/rtt.c @@ -146,6 +146,7 @@ * exclusive access to the peer RTT data. */ void rxrpc_peer_add_rtt(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why, + int rtt_slot, rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial, ktime_t send_time, ktime_t resp_time) { @@ -162,7 +163,7 @@ peer->rtt_count++; spin_unlock(&peer->rtt_input_lock); - trace_rxrpc_rtt_rx(call, why, send_serial, resp_serial, + trace_rxrpc_rtt_rx(call, why, rtt_slot, send_serial, resp_serial, peer->srtt_us >> 3, peer->rto_j); } --- linux-5.8.0.orig/net/sched/Kconfig +++ linux-5.8.0/net/sched/Kconfig @@ -809,7 +809,7 @@ config NET_ACT_IPT tristate "IPtables targets" - depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES + depends on NET_CLS_ACT && NETFILTER && NETFILTER_XTABLES help Say Y here to be able to invoke iptables targets after successful classification. @@ -908,7 +908,7 @@ config NET_ACT_CONNMARK tristate "Netfilter Connection Mark Retriever" - depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES + depends on NET_CLS_ACT && NETFILTER depends on NF_CONNTRACK && NF_CONNTRACK_MARK help Say Y here to allow retrieving of conn mark @@ -920,7 +920,7 @@ config NET_ACT_CTINFO tristate "Netfilter Connection Mark Actions" - depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES + depends on NET_CLS_ACT && NETFILTER depends on NF_CONNTRACK && NF_CONNTRACK_MARK help Say Y here to allow transfer of a connmark stored information. --- linux-5.8.0.orig/net/sched/act_api.c +++ linux-5.8.0/net/sched/act_api.c @@ -307,6 +307,8 @@ mutex_lock(&idrinfo->lock); idr_for_each_entry_ul(idr, p, tmp, id) { + if (IS_ERR(p)) + continue; ret = tcf_idr_release_unsafe(p); if (ret == ACT_P_DELETED) { module_put(ops->owner); @@ -467,17 +469,6 @@ } EXPORT_SYMBOL(tcf_idr_create_from_flags); -void tcf_idr_insert(struct tc_action_net *tn, struct tc_action *a) -{ - struct tcf_idrinfo *idrinfo = tn->idrinfo; - - mutex_lock(&idrinfo->lock); - /* Replace ERR_PTR(-EBUSY) allocated by tcf_idr_check_alloc */ - WARN_ON(!IS_ERR(idr_replace(&idrinfo->action_idr, a, a->tcfa_index))); - mutex_unlock(&idrinfo->lock); -} -EXPORT_SYMBOL(tcf_idr_insert); - /* Cleanup idr index that was allocated but not initialized. */ void tcf_idr_cleanup(struct tc_action_net *tn, u32 index) @@ -731,13 +722,6 @@ return ret; } -static int tcf_action_destroy_1(struct tc_action *a, int bind) -{ - struct tc_action *actions[] = { a, NULL }; - - return tcf_action_destroy(actions, bind); -} - static int tcf_action_put(struct tc_action *p) { return __tcf_action_put(p, false); @@ -902,6 +886,26 @@ [TCA_ACT_HW_STATS] = NLA_POLICY_BITFIELD32(TCA_ACT_HW_STATS_ANY), }; +void tcf_idr_insert_many(struct tc_action *actions[]) +{ + int i; + + for (i = 0; i < TCA_ACT_MAX_PRIO; i++) { + struct tc_action *a = actions[i]; + struct tcf_idrinfo *idrinfo; + + if (!a) + continue; + idrinfo = a->idrinfo; + mutex_lock(&idrinfo->lock); + /* Replace ERR_PTR(-EBUSY) allocated by tcf_idr_check_alloc if + * it is just created, otherwise this is just a nop. + */ + idr_replace(&idrinfo->action_idr, a, a->tcfa_index); + mutex_unlock(&idrinfo->lock); + } +} + struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp, struct nlattr *nla, struct nlattr *est, char *name, int ovr, int bind, @@ -1002,13 +1006,6 @@ if (err != ACT_P_CREATED) module_put(a_o->owner); - if (TC_ACT_EXT_CMP(a->tcfa_action, TC_ACT_GOTO_CHAIN) && - !rcu_access_pointer(a->goto_chain)) { - tcf_action_destroy_1(a, bind); - NL_SET_ERR_MSG(extack, "can't use goto chain with NULL chain"); - return ERR_PTR(-EINVAL); - } - return a; err_mod: @@ -1051,6 +1048,11 @@ actions[i - 1] = act; } + /* We have to commit them all together, because if any error happened in + * between, we could not handle the failure gracefully. + */ + tcf_idr_insert_many(actions); + *attr_size = tcf_action_full_attrs_size(sz); return i - 1; --- linux-5.8.0.orig/net/sched/act_bpf.c +++ linux-5.8.0/net/sched/act_bpf.c @@ -365,9 +365,7 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (res == ACT_P_CREATED) { - tcf_idr_insert(tn, *act); - } else { + if (res != ACT_P_CREATED) { /* make sure the program being replaced is no longer executing */ synchronize_rcu(); tcf_bpf_cfg_cleanup(&old); --- linux-5.8.0.orig/net/sched/act_connmark.c +++ linux-5.8.0/net/sched/act_connmark.c @@ -139,7 +139,6 @@ ci->net = net; ci->zone = parm->zone; - tcf_idr_insert(tn, *a); ret = ACT_P_CREATED; } else if (ret > 0) { ci = to_connmark(*a); --- linux-5.8.0.orig/net/sched/act_csum.c +++ linux-5.8.0/net/sched/act_csum.c @@ -110,9 +110,6 @@ if (params_new) kfree_rcu(params_new, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_ct.c +++ linux-5.8.0/net/sched/act_ct.c @@ -156,11 +156,11 @@ __be16 target_dst = target.dst.u.udp.port; if (target_src != tuple->src.u.udp.port) - tcf_ct_add_mangle_action(action, FLOW_ACT_MANGLE_HDR_TYPE_TCP, + tcf_ct_add_mangle_action(action, FLOW_ACT_MANGLE_HDR_TYPE_UDP, offsetof(struct udphdr, source), 0xFFFF, be16_to_cpu(target_src)); if (target_dst != tuple->dst.u.udp.port) - tcf_ct_add_mangle_action(action, FLOW_ACT_MANGLE_HDR_TYPE_TCP, + tcf_ct_add_mangle_action(action, FLOW_ACT_MANGLE_HDR_TYPE_UDP, offsetof(struct udphdr, dest), 0xFFFF, be16_to_cpu(target_dst)); } @@ -704,7 +704,7 @@ err = ip_defrag(net, skb, user); local_bh_enable(); if (err && err != -EINPROGRESS) - goto out_free; + return err; if (!err) *defrag = true; @@ -1293,8 +1293,6 @@ tcf_chain_put_by_act(goto_ch); if (params) call_rcu(¶ms->rcu, tcf_ct_params_free); - if (res == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return res; --- linux-5.8.0.orig/net/sched/act_ctinfo.c +++ linux-5.8.0/net/sched/act_ctinfo.c @@ -269,9 +269,6 @@ if (cp_new) kfree_rcu(cp_new, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; put_chain: --- linux-5.8.0.orig/net/sched/act_gact.c +++ linux-5.8.0/net/sched/act_gact.c @@ -140,8 +140,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; release_idr: tcf_idr_release(*a, bind); --- linux-5.8.0.orig/net/sched/act_gate.c +++ linux-5.8.0/net/sched/act_gate.c @@ -437,9 +437,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; chain_put: --- linux-5.8.0.orig/net/sched/act_ife.c +++ linux-5.8.0/net/sched/act_ife.c @@ -436,6 +436,25 @@ kfree_rcu(p, rcu); } +static int load_metalist(struct nlattr **tb, bool rtnl_held) +{ + int i; + + for (i = 1; i < max_metacnt; i++) { + if (tb[i]) { + void *val = nla_data(tb[i]); + int len = nla_len(tb[i]); + int rc; + + rc = load_metaops_and_vet(i, val, len, rtnl_held); + if (rc != 0) + return rc; + } + } + + return 0; +} + static int populate_metalist(struct tcf_ife_info *ife, struct nlattr **tb, bool exists, bool rtnl_held) { @@ -449,10 +468,6 @@ val = nla_data(tb[i]); len = nla_len(tb[i]); - rc = load_metaops_and_vet(i, val, len, rtnl_held); - if (rc != 0) - return rc; - rc = add_metainfo(ife, i, val, len, exists); if (rc) return rc; @@ -509,6 +524,21 @@ if (!p) return -ENOMEM; + if (tb[TCA_IFE_METALST]) { + err = nla_parse_nested_deprecated(tb2, IFE_META_MAX, + tb[TCA_IFE_METALST], NULL, + NULL); + if (err) { + kfree(p); + return err; + } + err = load_metalist(tb2, rtnl_held); + if (err) { + kfree(p); + return err; + } + } + index = parm->index; err = tcf_idr_check_alloc(tn, &index, a, bind); if (err < 0) { @@ -570,15 +600,9 @@ } if (tb[TCA_IFE_METALST]) { - err = nla_parse_nested_deprecated(tb2, IFE_META_MAX, - tb[TCA_IFE_METALST], NULL, - NULL); - if (err) - goto metadata_parse_err; err = populate_metalist(ife, tb2, exists, rtnl_held); if (err) goto metadata_parse_err; - } else { /* if no passed metadata allow list or passed allow-all * then here we process by adding as many supported metadatum @@ -603,9 +627,6 @@ if (p) kfree_rcu(p, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; metadata_parse_err: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_ipt.c +++ linux-5.8.0/net/sched/act_ipt.c @@ -189,8 +189,6 @@ ipt->tcfi_t = t; ipt->tcfi_hook = hook; spin_unlock_bh(&ipt->tcf_lock); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; err3: --- linux-5.8.0.orig/net/sched/act_mirred.c +++ linux-5.8.0/net/sched/act_mirred.c @@ -194,8 +194,6 @@ spin_lock(&mirred_list_lock); list_add(&m->tcfm_list, &mirred_list); spin_unlock(&mirred_list_lock); - - tcf_idr_insert(tn, *a); } return ret; --- linux-5.8.0.orig/net/sched/act_mpls.c +++ linux-5.8.0/net/sched/act_mpls.c @@ -88,6 +88,9 @@ goto drop; break; case TCA_MPLS_ACT_MODIFY: + if (!pskb_may_pull(skb, + skb_network_offset(skb) + MPLS_HLEN)) + goto drop; new_lse = tcf_mpls_get_lse(mpls_hdr(skb), p, false); if (skb_mpls_update_lse(skb, new_lse)) goto drop; @@ -273,8 +276,6 @@ if (p) kfree_rcu(p, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) @@ -410,6 +411,7 @@ module_init(mpls_init_module); module_exit(mpls_cleanup_module); +MODULE_SOFTDEP("post: mpls_gso"); MODULE_AUTHOR("Netronome Systems "); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("MPLS manipulation actions"); --- linux-5.8.0.orig/net/sched/act_nat.c +++ linux-5.8.0/net/sched/act_nat.c @@ -93,9 +93,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; release_idr: tcf_idr_release(*a, bind); --- linux-5.8.0.orig/net/sched/act_pedit.c +++ linux-5.8.0/net/sched/act_pedit.c @@ -238,8 +238,6 @@ spin_unlock_bh(&p->tcf_lock); if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: --- linux-5.8.0.orig/net/sched/act_police.c +++ linux-5.8.0/net/sched/act_police.c @@ -201,8 +201,6 @@ if (new) kfree_rcu(new, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; failure: --- linux-5.8.0.orig/net/sched/act_sample.c +++ linux-5.8.0/net/sched/act_sample.c @@ -116,8 +116,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_simple.c +++ linux-5.8.0/net/sched/act_simple.c @@ -157,8 +157,6 @@ goto release_idr; } - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_skbedit.c +++ linux-5.8.0/net/sched/act_skbedit.c @@ -224,8 +224,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_skbmod.c +++ linux-5.8.0/net/sched/act_skbmod.c @@ -190,8 +190,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/act_tunnel_key.c +++ linux-5.8.0/net/sched/act_tunnel_key.c @@ -458,7 +458,7 @@ metadata = __ipv6_tun_set_dst(&saddr, &daddr, tos, ttl, dst_port, 0, flags, - key_id, 0); + key_id, opts_len); } else { NL_SET_ERR_MSG(extack, "Missing either ipv4 or ipv6 src and dst"); ret = -EINVAL; @@ -536,9 +536,6 @@ if (goto_ch) tcf_chain_put_by_act(goto_ch); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); - return ret; put_chain: --- linux-5.8.0.orig/net/sched/act_vlan.c +++ linux-5.8.0/net/sched/act_vlan.c @@ -229,8 +229,6 @@ if (p) kfree_rcu(p, rcu); - if (ret == ACT_P_CREATED) - tcf_idr_insert(tn, *a); return ret; put_chain: if (goto_ch) --- linux-5.8.0.orig/net/sched/cls_api.c +++ linux-5.8.0/net/sched/cls_api.c @@ -650,12 +650,12 @@ block_cb->indr.binder_type, &block->flow_block, tcf_block_shared(block), &extack); + rtnl_lock(); down_write(&block->cb_lock); list_del(&block_cb->driver_list); list_move(&block_cb->list, &bo.cb_list); - up_write(&block->cb_lock); - rtnl_lock(); tcf_block_unbind(block, &bo); + up_write(&block->cb_lock); rtnl_unlock(); } @@ -3062,6 +3062,7 @@ act->type = exts->type = TCA_OLD_COMPAT; exts->actions[0] = act; exts->nr_actions = 1; + tcf_idr_insert_many(exts->actions); } else if (exts->action && tb[exts->action]) { int err; @@ -3707,7 +3708,7 @@ entry->gate.num_entries = tcf_gate_num_entries(act); err = tcf_gate_get_entries(entry, act); if (err) - goto err_out; + goto err_out_locked; } else { err = -EOPNOTSUPP; goto err_out_locked; --- linux-5.8.0.orig/net/sched/cls_flower.c +++ linux-5.8.0/net/sched/cls_flower.c @@ -1215,6 +1215,7 @@ } if (tb[TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX]) { nla = tb[TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX]; + memset(&md->u, 0x00, sizeof(md->u)); md->u.index = nla_get_be32(nla); } } else if (md->version == 2) { @@ -1263,6 +1264,10 @@ nla_opt_msk = nla_data(tb[TCA_FLOWER_KEY_ENC_OPTS_MASK]); msk_depth = nla_len(tb[TCA_FLOWER_KEY_ENC_OPTS_MASK]); + if (!nla_ok(nla_opt_msk, msk_depth)) { + NL_SET_ERR_MSG(extack, "Invalid nested attribute for masks"); + return -EINVAL; + } } nla_for_each_attr(nla_opt_key, nla_enc_key, @@ -1298,9 +1303,6 @@ NL_SET_ERR_MSG(extack, "Key and mask miss aligned"); return -EINVAL; } - - if (msk_depth) - nla_opt_msk = nla_next(nla_opt_msk, &msk_depth); break; case TCA_FLOWER_KEY_ENC_OPTS_VXLAN: if (key->enc_opts.dst_opt_type) { @@ -1331,9 +1333,6 @@ NL_SET_ERR_MSG(extack, "Key and mask miss aligned"); return -EINVAL; } - - if (msk_depth) - nla_opt_msk = nla_next(nla_opt_msk, &msk_depth); break; case TCA_FLOWER_KEY_ENC_OPTS_ERSPAN: if (key->enc_opts.dst_opt_type) { @@ -1364,14 +1363,20 @@ NL_SET_ERR_MSG(extack, "Key and mask miss aligned"); return -EINVAL; } - - if (msk_depth) - nla_opt_msk = nla_next(nla_opt_msk, &msk_depth); break; default: NL_SET_ERR_MSG(extack, "Unknown tunnel option type"); return -EINVAL; } + + if (!msk_depth) + continue; + + if (!nla_ok(nla_opt_msk, msk_depth)) { + NL_SET_ERR_MSG(extack, "A mask attribute is invalid"); + return -EINVAL; + } + nla_opt_msk = nla_next(nla_opt_msk, &msk_depth); } return 0; @@ -2409,8 +2414,8 @@ return err; } if (lse_mask->mpls_label) { - err = nla_put_u8(skb, TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL, - lse_key->mpls_label); + err = nla_put_u32(skb, TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL, + lse_key->mpls_label); if (err) return err; } --- linux-5.8.0.orig/net/sched/cls_tcindex.c +++ linux-5.8.0/net/sched/cls_tcindex.c @@ -366,9 +366,13 @@ if (tb[TCA_TCINDEX_MASK]) cp->mask = nla_get_u16(tb[TCA_TCINDEX_MASK]); - if (tb[TCA_TCINDEX_SHIFT]) + if (tb[TCA_TCINDEX_SHIFT]) { cp->shift = nla_get_u32(tb[TCA_TCINDEX_SHIFT]); - + if (cp->shift > 16) { + err = -EINVAL; + goto errout; + } + } if (!cp->hash) { /* Hash not specified, use perfect hash if the upper limit * of the hashing index is below the threshold. --- linux-5.8.0.orig/net/sched/sch_api.c +++ linux-5.8.0/net/sched/sch_api.c @@ -411,7 +411,8 @@ { struct qdisc_rate_table *rtab; - if (tab == NULL || r->rate == 0 || r->cell_log == 0 || + if (tab == NULL || r->rate == 0 || + r->cell_log == 0 || r->cell_log >= 32 || nla_len(tab) != TC_RTAB_SIZE) { NL_SET_ERR_MSG(extack, "Invalid rate table parameters for searching"); return NULL; @@ -2166,7 +2167,7 @@ static int tc_dump_tclass_root(struct Qdisc *root, struct sk_buff *skb, struct tcmsg *tcm, struct netlink_callback *cb, - int *t_p, int s_t) + int *t_p, int s_t, bool recur) { struct Qdisc *q; int b; @@ -2177,7 +2178,7 @@ if (tc_dump_tclass_qdisc(root, skb, tcm, cb, t_p, s_t) < 0) return -1; - if (!qdisc_dev(root)) + if (!qdisc_dev(root) || !recur) return 0; if (tcm->tcm_parent) { @@ -2212,13 +2213,13 @@ s_t = cb->args[0]; t = 0; - if (tc_dump_tclass_root(dev->qdisc, skb, tcm, cb, &t, s_t) < 0) + if (tc_dump_tclass_root(dev->qdisc, skb, tcm, cb, &t, s_t, true) < 0) goto done; dev_queue = dev_ingress_queue(dev); if (dev_queue && tc_dump_tclass_root(dev_queue->qdisc_sleeping, skb, tcm, cb, - &t, s_t) < 0) + &t, s_t, false) < 0) goto done; done: --- linux-5.8.0.orig/net/sched/sch_choke.c +++ linux-5.8.0/net/sched/sch_choke.c @@ -345,6 +345,7 @@ struct sk_buff **old = NULL; unsigned int mask; u32 max_P; + u8 *stab; if (opt == NULL) return -EINVAL; @@ -361,8 +362,8 @@ max_P = tb[TCA_CHOKE_MAX_P] ? nla_get_u32(tb[TCA_CHOKE_MAX_P]) : 0; ctl = nla_data(tb[TCA_CHOKE_PARMS]); - - if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog)) + stab = nla_data(tb[TCA_CHOKE_STAB]); + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log, stab)) return -EINVAL; if (ctl->limit > CHOKE_MAX_QUEUE) @@ -412,7 +413,7 @@ red_set_parms(&q->parms, ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Plog, ctl->Scell_log, - nla_data(tb[TCA_CHOKE_STAB]), + stab, max_P); red_set_vars(&q->vars); --- linux-5.8.0.orig/net/sched/sch_fq_pie.c +++ linux-5.8.0/net/sched/sch_fq_pie.c @@ -401,6 +401,7 @@ INIT_LIST_HEAD(&q->new_flows); INIT_LIST_HEAD(&q->old_flows); + timer_setup(&q->adapt_timer, fq_pie_timer, 0); if (opt) { err = fq_pie_change(sch, opt, extack); @@ -426,7 +427,6 @@ pie_vars_init(&flow->vars); } - timer_setup(&q->adapt_timer, fq_pie_timer, 0); mod_timer(&q->adapt_timer, jiffies + HZ / 2); return 0; --- linux-5.8.0.orig/net/sched/sch_generic.c +++ linux-5.8.0/net/sched/sch_generic.c @@ -1131,24 +1131,10 @@ static void qdisc_deactivate(struct Qdisc *qdisc) { - bool nolock = qdisc->flags & TCQ_F_NOLOCK; - if (qdisc->flags & TCQ_F_BUILTIN) return; - if (test_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state)) - return; - - if (nolock) - spin_lock_bh(&qdisc->seqlock); - spin_lock_bh(qdisc_lock(qdisc)); set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state); - - qdisc_reset(qdisc); - - spin_unlock_bh(qdisc_lock(qdisc)); - if (nolock) - spin_unlock_bh(&qdisc->seqlock); } static void dev_deactivate_queue(struct net_device *dev, @@ -1165,6 +1151,30 @@ } } +static void dev_reset_queue(struct net_device *dev, + struct netdev_queue *dev_queue, + void *_unused) +{ + struct Qdisc *qdisc; + bool nolock; + + qdisc = dev_queue->qdisc_sleeping; + if (!qdisc) + return; + + nolock = qdisc->flags & TCQ_F_NOLOCK; + + if (nolock) + spin_lock_bh(&qdisc->seqlock); + spin_lock_bh(qdisc_lock(qdisc)); + + qdisc_reset(qdisc); + + spin_unlock_bh(qdisc_lock(qdisc)); + if (nolock) + spin_unlock_bh(&qdisc->seqlock); +} + static bool some_qdisc_is_busy(struct net_device *dev) { unsigned int i; @@ -1213,12 +1223,20 @@ dev_watchdog_down(dev); } - /* Wait for outstanding qdisc-less dev_queue_xmit calls. + /* Wait for outstanding qdisc-less dev_queue_xmit calls or + * outstanding qdisc enqueuing calls. * This is avoided if all devices are in dismantle phase : * Caller will call synchronize_net() for us */ synchronize_net(); + list_for_each_entry(dev, head, close_list) { + netdev_for_each_tx_queue(dev, dev_reset_queue, NULL); + + if (dev_ingress_queue(dev)) + dev_reset_queue(dev, dev_ingress_queue(dev), NULL); + } + /* Wait for outstanding qdisc_run calls. */ list_for_each_entry(dev, head, close_list) { while (some_qdisc_is_busy(dev)) { --- linux-5.8.0.orig/net/sched/sch_gred.c +++ linux-5.8.0/net/sched/sch_gred.c @@ -480,7 +480,7 @@ struct gred_sched *table = qdisc_priv(sch); struct gred_sched_data *q = table->tab[dp]; - if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog)) { + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Scell_log, stab)) { NL_SET_ERR_MSG_MOD(extack, "invalid RED parameters"); return -EINVAL; } --- linux-5.8.0.orig/net/sched/sch_netem.c +++ linux-5.8.0/net/sched/sch_netem.c @@ -330,7 +330,7 @@ /* default uniform distribution */ if (dist == NULL) - return ((rnd % (2 * sigma)) + mu) - sigma; + return ((rnd % (2 * (u32)sigma)) + mu) - sigma; t = dist->table[rnd % dist->size]; x = (sigma % NETEM_DIST_SCALE) * t; @@ -812,6 +812,10 @@ q->slot_config.max_packets = INT_MAX; if (q->slot_config.max_bytes == 0) q->slot_config.max_bytes = INT_MAX; + + /* capping dist_jitter to the range acceptable by tabledist() */ + q->slot_config.dist_jitter = min_t(__s64, INT_MAX, abs(q->slot_config.dist_jitter)); + q->slot.packets_left = q->slot_config.max_packets; q->slot.bytes_left = q->slot_config.max_bytes; if (q->slot_config.min_delay | q->slot_config.max_delay | @@ -1037,6 +1041,9 @@ if (tb[TCA_NETEM_SLOT]) get_slot(q, tb[TCA_NETEM_SLOT]); + /* capping jitter to the range acceptable by tabledist() */ + q->jitter = min_t(s64, abs(q->jitter), INT_MAX); + return ret; get_table_failure: --- linux-5.8.0.orig/net/sched/sch_red.c +++ linux-5.8.0/net/sched/sch_red.c @@ -227,6 +227,7 @@ unsigned char flags; int err; u32 max_P; + u8 *stab; if (opt == NULL) return -EINVAL; @@ -243,7 +244,9 @@ max_P = tb[TCA_RED_MAX_P] ? nla_get_u32(tb[TCA_RED_MAX_P]) : 0; ctl = nla_data(tb[TCA_RED_PARMS]); - if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog)) + stab = nla_data(tb[TCA_RED_STAB]); + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog, + ctl->Scell_log, stab)) return -EINVAL; err = red_get_flags(ctl->flags, TC_RED_HISTORIC_FLAGS, @@ -281,7 +284,7 @@ red_set_parms(&q->parms, ctl->qth_min, ctl->qth_max, ctl->Wlog, ctl->Plog, ctl->Scell_log, - nla_data(tb[TCA_RED_STAB]), + stab, max_P); red_set_vars(&q->vars); --- linux-5.8.0.orig/net/sched/sch_sfq.c +++ linux-5.8.0/net/sched/sch_sfq.c @@ -647,7 +647,7 @@ } if (ctl_v1 && !red_check_params(ctl_v1->qth_min, ctl_v1->qth_max, - ctl_v1->Wlog)) + ctl_v1->Wlog, ctl_v1->Scell_log, NULL)) return -EINVAL; if (ctl_v1 && ctl_v1->qth_min) { p = kmalloc(sizeof(*p), GFP_KERNEL); --- linux-5.8.0.orig/net/sched/sch_taprio.c +++ linux-5.8.0/net/sched/sch_taprio.c @@ -777,9 +777,11 @@ [TCA_TAPRIO_ATTR_TXTIME_DELAY] = { .type = NLA_U32 }, }; -static int fill_sched_entry(struct nlattr **tb, struct sched_entry *entry, +static int fill_sched_entry(struct taprio_sched *q, struct nlattr **tb, + struct sched_entry *entry, struct netlink_ext_ack *extack) { + int min_duration = length_to_duration(q, ETH_ZLEN); u32 interval = 0; if (tb[TCA_TAPRIO_SCHED_ENTRY_CMD]) @@ -794,7 +796,10 @@ interval = nla_get_u32( tb[TCA_TAPRIO_SCHED_ENTRY_INTERVAL]); - if (interval == 0) { + /* The interval should allow at least the minimum ethernet + * frame to go out. + */ + if (interval < min_duration) { NL_SET_ERR_MSG(extack, "Invalid interval for schedule entry"); return -EINVAL; } @@ -804,8 +809,9 @@ return 0; } -static int parse_sched_entry(struct nlattr *n, struct sched_entry *entry, - int index, struct netlink_ext_ack *extack) +static int parse_sched_entry(struct taprio_sched *q, struct nlattr *n, + struct sched_entry *entry, int index, + struct netlink_ext_ack *extack) { struct nlattr *tb[TCA_TAPRIO_SCHED_ENTRY_MAX + 1] = { }; int err; @@ -819,10 +825,10 @@ entry->index = index; - return fill_sched_entry(tb, entry, extack); + return fill_sched_entry(q, tb, entry, extack); } -static int parse_sched_list(struct nlattr *list, +static int parse_sched_list(struct taprio_sched *q, struct nlattr *list, struct sched_gate_list *sched, struct netlink_ext_ack *extack) { @@ -847,7 +853,7 @@ return -ENOMEM; } - err = parse_sched_entry(n, entry, i, extack); + err = parse_sched_entry(q, n, entry, i, extack); if (err < 0) { kfree(entry); return err; @@ -862,7 +868,7 @@ return i; } -static int parse_taprio_schedule(struct nlattr **tb, +static int parse_taprio_schedule(struct taprio_sched *q, struct nlattr **tb, struct sched_gate_list *new, struct netlink_ext_ack *extack) { @@ -883,8 +889,8 @@ new->cycle_time = nla_get_s64(tb[TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME]); if (tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST]) - err = parse_sched_list( - tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST], new, extack); + err = parse_sched_list(q, tb[TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST], + new, extack); if (err < 0) return err; @@ -1177,9 +1183,27 @@ spin_unlock(&q->current_entry_lock); } -static void taprio_sched_to_offload(struct taprio_sched *q, +static u32 tc_map_to_queue_mask(struct net_device *dev, u32 tc_mask) +{ + u32 i, queue_mask = 0; + + for (i = 0; i < dev->num_tc; i++) { + u32 offset, count; + + if (!(tc_mask & BIT(i))) + continue; + + offset = dev->tc_to_txq[i].offset; + count = dev->tc_to_txq[i].count; + + queue_mask |= GENMASK(offset + count - 1, offset); + } + + return queue_mask; +} + +static void taprio_sched_to_offload(struct net_device *dev, struct sched_gate_list *sched, - const struct tc_mqprio_qopt *mqprio, struct tc_taprio_qopt_offload *offload) { struct sched_entry *entry; @@ -1194,7 +1218,8 @@ e->command = entry->command; e->interval = entry->interval; - e->gate_mask = entry->gate_mask; + e->gate_mask = tc_map_to_queue_mask(dev, entry->gate_mask); + i++; } @@ -1202,7 +1227,6 @@ } static int taprio_enable_offload(struct net_device *dev, - struct tc_mqprio_qopt *mqprio, struct taprio_sched *q, struct sched_gate_list *sched, struct netlink_ext_ack *extack) @@ -1224,7 +1248,7 @@ return -ENOMEM; } offload->enable = 1; - taprio_sched_to_offload(q, sched, mqprio, offload); + taprio_sched_to_offload(dev, sched, offload); err = ops->ndo_setup_tc(dev, TC_SETUP_QDISC_TAPRIO, offload); if (err < 0) { @@ -1456,7 +1480,7 @@ goto free_sched; } - err = parse_taprio_schedule(tb, new_admin, extack); + err = parse_taprio_schedule(q, tb, new_admin, extack); if (err < 0) goto free_sched; @@ -1486,7 +1510,7 @@ } if (FULL_OFFLOAD_IS_ENABLED(q->flags)) - err = taprio_enable_offload(dev, mqprio, q, new_admin, extack); + err = taprio_enable_offload(dev, q, new_admin, extack); else err = taprio_disable_offload(dev, q, extack); if (err) @@ -1573,6 +1597,22 @@ return err; } +static void taprio_reset(struct Qdisc *sch) +{ + struct taprio_sched *q = qdisc_priv(sch); + struct net_device *dev = qdisc_dev(sch); + int i; + + hrtimer_cancel(&q->advance_timer); + if (q->qdiscs) { + for (i = 0; i < dev->num_tx_queues; i++) + if (q->qdiscs[i]) + qdisc_reset(q->qdiscs[i]); + } + sch->qstats.backlog = 0; + sch->q.qlen = 0; +} + static void taprio_destroy(struct Qdisc *sch) { struct taprio_sched *q = qdisc_priv(sch); @@ -1583,12 +1623,11 @@ list_del(&q->taprio_list); spin_unlock(&taprio_list_lock); - hrtimer_cancel(&q->advance_timer); taprio_disable_offload(dev, q, NULL); if (q->qdiscs) { - for (i = 0; i < dev->num_tx_queues && q->qdiscs[i]; i++) + for (i = 0; i < dev->num_tx_queues; i++) qdisc_put(q->qdiscs[i]); kfree(q->qdiscs); @@ -1930,6 +1969,7 @@ .init = taprio_init, .change = taprio_change, .destroy = taprio_destroy, + .reset = taprio_reset, .peek = taprio_peek, .dequeue = taprio_dequeue, .enqueue = taprio_enqueue, --- linux-5.8.0.orig/net/sctp/auth.c +++ linux-5.8.0/net/sctp/auth.c @@ -494,6 +494,7 @@ out_err: /* Clean up any successful allocations */ sctp_auth_destroy_hmacs(ep->auth_hmacs); + ep->auth_hmacs = NULL; return -ENOMEM; } --- linux-5.8.0.orig/net/sctp/input.c +++ linux-5.8.0/net/sctp/input.c @@ -449,7 +449,7 @@ else { if (!mod_timer(&t->proto_unreach_timer, jiffies + (HZ/20))) - sctp_association_hold(asoc); + sctp_transport_hold(t); } } else { struct net *net = sock_net(sk); @@ -458,7 +458,7 @@ "encountered!\n", __func__); if (del_timer(&t->proto_unreach_timer)) - sctp_association_put(asoc); + sctp_transport_put(t); sctp_do_sm(net, SCTP_EVENT_T_OTHER, SCTP_ST_OTHER(SCTP_EVENT_ICMP_PROTO_UNREACH), --- linux-5.8.0.orig/net/sctp/proc.c +++ linux-5.8.0/net/sctp/proc.c @@ -215,6 +215,12 @@ { struct sctp_ht_iter *iter = seq->private; + if (v && v != SEQ_START_TOKEN) { + struct sctp_transport *transport = v; + + sctp_transport_put(transport); + } + sctp_transport_walk_stop(&iter->hti); } @@ -222,6 +228,12 @@ { struct sctp_ht_iter *iter = seq->private; + if (v && v != SEQ_START_TOKEN) { + struct sctp_transport *transport = v; + + sctp_transport_put(transport); + } + ++*pos; return sctp_transport_get_next(seq_file_net(seq), &iter->hti); @@ -277,8 +289,6 @@ sk->sk_rcvbuf); seq_printf(seq, "\n"); - sctp_transport_put(transport); - return 0; } @@ -354,8 +364,6 @@ seq_printf(seq, "\n"); } - sctp_transport_put(transport); - return 0; } --- linux-5.8.0.orig/net/sctp/sm_sideeffect.c +++ linux-5.8.0/net/sctp/sm_sideeffect.c @@ -419,7 +419,7 @@ /* Try again later. */ if (!mod_timer(&transport->proto_unreach_timer, jiffies + (HZ/20))) - sctp_association_hold(asoc); + sctp_transport_hold(transport); goto out_unlock; } @@ -435,7 +435,7 @@ out_unlock: bh_unlock_sock(sk); - sctp_association_put(asoc); + sctp_transport_put(transport); } /* Handle the timeout of the RE-CONFIG timer. */ @@ -1601,12 +1601,12 @@ break; case SCTP_CMD_INIT_FAILED: - sctp_cmd_init_failed(commands, asoc, cmd->obj.u32); + sctp_cmd_init_failed(commands, asoc, cmd->obj.u16); break; case SCTP_CMD_ASSOC_FAILED: sctp_cmd_assoc_failed(commands, asoc, event_type, - subtype, chunk, cmd->obj.u32); + subtype, chunk, cmd->obj.u16); break; case SCTP_CMD_INIT_COUNTER_INC: --- linux-5.8.0.orig/net/sctp/socket.c +++ linux-5.8.0/net/sctp/socket.c @@ -1325,7 +1325,7 @@ kaddrs = memdup_user(addrs, addrs_size); if (IS_ERR(kaddrs)) - return PTR_ERR(kaddrs); + return PTR_ERR(kaddrs) == -EFAULT ? -EINVAL : PTR_ERR(kaddrs); /* Allow security module to validate connectx addresses. */ err = security_sctp_bind_connect(sk, SCTP_SOCKOPT_CONNECTX, @@ -8297,8 +8297,6 @@ pr_debug("%s: begins, snum:%d\n", __func__, snum); - local_bh_disable(); - if (snum == 0) { /* Search for an available port. */ int low, high, remaining, index; @@ -8316,20 +8314,21 @@ continue; index = sctp_phashfn(net, rover); head = &sctp_port_hashtable[index]; - spin_lock(&head->lock); + spin_lock_bh(&head->lock); sctp_for_each_hentry(pp, &head->chain) if ((pp->port == rover) && net_eq(net, pp->net)) goto next; break; next: - spin_unlock(&head->lock); + spin_unlock_bh(&head->lock); + cond_resched(); } while (--remaining > 0); /* Exhausted local port range during search? */ ret = 1; if (remaining <= 0) - goto fail; + return ret; /* OK, here is the one we will use. HEAD (the port * hash table list entry) is non-NULL and we hold it's @@ -8344,7 +8343,7 @@ * port iterator, pp being NULL. */ head = &sctp_port_hashtable[sctp_phashfn(net, snum)]; - spin_lock(&head->lock); + spin_lock_bh(&head->lock); sctp_for_each_hentry(pp, &head->chain) { if ((pp->port == snum) && net_eq(pp->net, net)) goto pp_found; @@ -8444,10 +8443,7 @@ ret = 0; fail_unlock: - spin_unlock(&head->lock); - -fail: - local_bh_enable(); + spin_unlock_bh(&head->lock); return ret; } @@ -9461,13 +9457,10 @@ static inline void sctp_copy_descendant(struct sock *sk_to, const struct sock *sk_from) { - int ancestor_size = sizeof(struct inet_sock) + - sizeof(struct sctp_sock) - - offsetof(struct sctp_sock, pd_lobby); - - if (sk_from->sk_family == PF_INET6) - ancestor_size += sizeof(struct ipv6_pinfo); + size_t ancestor_size = sizeof(struct inet_sock); + ancestor_size += sk_from->sk_prot->obj_size; + ancestor_size -= offsetof(struct sctp_sock, pd_lobby); __inet_sk_copy_descendant(sk_to, sk_from, ancestor_size); } --- linux-5.8.0.orig/net/sctp/stream.c +++ linux-5.8.0/net/sctp/stream.c @@ -88,12 +88,13 @@ int ret; if (outcnt <= stream->outcnt) - return 0; + goto out; ret = genradix_prealloc(&stream->out, outcnt, gfp); if (ret) return ret; +out: stream->outcnt = outcnt; return 0; } @@ -104,12 +105,13 @@ int ret; if (incnt <= stream->incnt) - return 0; + goto out; ret = genradix_prealloc(&stream->in, incnt, gfp); if (ret) return ret; +out: stream->incnt = incnt; return 0; } --- linux-5.8.0.orig/net/sctp/transport.c +++ linux-5.8.0/net/sctp/transport.c @@ -133,7 +133,7 @@ /* Delete the ICMP proto unreachable timer if it's active. */ if (del_timer(&transport->proto_unreach_timer)) - sctp_association_put(transport->asoc); + sctp_transport_put(transport); sctp_transport_put(transport); } --- linux-5.8.0.orig/net/smc/smc_core.c +++ linux-5.8.0/net/smc/smc_core.c @@ -1595,7 +1595,7 @@ return rc; } -#define SMCD_DMBE_SIZES 7 /* 0 -> 16KB, 1 -> 32KB, .. 6 -> 1MB */ +#define SMCD_DMBE_SIZES 6 /* 0 -> 16KB, 1 -> 32KB, .. 6 -> 1MB */ static struct smc_buf_desc *smcd_new_buf_create(struct smc_link_group *lgr, bool is_dmb, int bufsize) --- linux-5.8.0.orig/net/smc/smc_diag.c +++ linux-5.8.0/net/smc/smc_diag.c @@ -170,13 +170,15 @@ (req->diag_ext & (1 << (SMC_DIAG_DMBINFO - 1))) && !list_empty(&smc->conn.lgr->list)) { struct smc_connection *conn = &smc->conn; - struct smcd_diag_dmbinfo dinfo = { - .linkid = *((u32 *)conn->lgr->id), - .peer_gid = conn->lgr->peer_gid, - .my_gid = conn->lgr->smcd->local_gid, - .token = conn->rmb_desc->token, - .peer_token = conn->peer_token - }; + struct smcd_diag_dmbinfo dinfo; + + memset(&dinfo, 0, sizeof(dinfo)); + + dinfo.linkid = *((u32 *)conn->lgr->id); + dinfo.peer_gid = conn->lgr->peer_gid; + dinfo.my_gid = conn->lgr->smcd->local_gid; + dinfo.token = conn->rmb_desc->token; + dinfo.peer_token = conn->peer_token; if (nla_put(skb, SMC_DIAG_DMBINFO, sizeof(dinfo), &dinfo) < 0) goto errout; --- linux-5.8.0.orig/net/smc/smc_ib.c +++ linux-5.8.0/net/smc/smc_ib.c @@ -198,9 +198,9 @@ rcu_read_lock(); ndev = rdma_read_gid_attr_ndev_rcu(attr); if (!IS_ERR(ndev) && - ((!vlan_id && !is_vlan_dev(attr->ndev)) || - (vlan_id && is_vlan_dev(attr->ndev) && - vlan_dev_vlan_id(attr->ndev) == vlan_id)) && + ((!vlan_id && !is_vlan_dev(ndev)) || + (vlan_id && is_vlan_dev(ndev) && + vlan_dev_vlan_id(ndev) == vlan_id)) && attr->gid_type == IB_GID_TYPE_ROCE) { rcu_read_unlock(); if (gid) --- linux-5.8.0.orig/net/smc/smc_llc.c +++ linux-5.8.0/net/smc/smc_llc.c @@ -233,8 +233,6 @@ default: flow->type = SMC_LLC_FLOW_NONE; } - if (qentry == lgr->delayed_event) - lgr->delayed_event = NULL; smc_llc_flow_qentry_set(flow, qentry); spin_unlock_bh(&lgr->llc_flow_lock); return true; @@ -1590,13 +1588,12 @@ struct smc_llc_qentry *qentry; if (!lgr->llc_flow_lcl.type && lgr->delayed_event) { - if (smc_link_usable(lgr->delayed_event->link)) { - smc_llc_event_handler(lgr->delayed_event); - } else { - qentry = lgr->delayed_event; - lgr->delayed_event = NULL; + qentry = lgr->delayed_event; + lgr->delayed_event = NULL; + if (smc_link_usable(qentry->link)) + smc_llc_event_handler(qentry); + else kfree(qentry); - } } again: --- linux-5.8.0.orig/net/socket.c +++ linux-5.8.0/net/socket.c @@ -500,7 +500,7 @@ if (f.file) { sock = sock_from_file(f.file, err); if (likely(sock)) { - *fput_needed = f.flags; + *fput_needed = f.flags & FDPUT_FPUT; return sock; } fdput(f); --- linux-5.8.0.orig/net/sunrpc/addr.c +++ linux-5.8.0/net/sunrpc/addr.c @@ -185,7 +185,7 @@ scope_id = dev->ifindex; dev_put(dev); } else { - if (kstrtou32(p, 10, &scope_id) == 0) { + if (kstrtou32(p, 10, &scope_id) != 0) { kfree(p); return 0; } --- linux-5.8.0.orig/net/sunrpc/auth_gss/auth_gss.c +++ linux-5.8.0/net/sunrpc/auth_gss/auth_gss.c @@ -29,6 +29,7 @@ #include #include +#include "auth_gss_internal.h" #include "../netns.h" #include @@ -125,35 +126,6 @@ clear_bit(RPCAUTH_CRED_NEW, &cred->cr_flags); } -static const void * -simple_get_bytes(const void *p, const void *end, void *res, size_t len) -{ - const void *q = (const void *)((const char *)p + len); - if (unlikely(q > end || q < p)) - return ERR_PTR(-EFAULT); - memcpy(res, p, len); - return q; -} - -static inline const void * -simple_get_netobj(const void *p, const void *end, struct xdr_netobj *dest) -{ - const void *q; - unsigned int len; - - p = simple_get_bytes(p, end, &len, sizeof(len)); - if (IS_ERR(p)) - return p; - q = (const void *)((const char *)p + len); - if (unlikely(q > end || q < p)) - return ERR_PTR(-EFAULT); - dest->data = kmemdup(p, len, GFP_NOFS); - if (unlikely(dest->data == NULL)) - return ERR_PTR(-ENOMEM); - dest->len = len; - return q; -} - static struct gss_cl_ctx * gss_cred_get_ctx(struct rpc_cred *cred) { --- linux-5.8.0.orig/net/sunrpc/auth_gss/auth_gss_internal.h +++ linux-5.8.0/net/sunrpc/auth_gss/auth_gss_internal.h @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * linux/net/sunrpc/auth_gss/auth_gss_internal.h + * + * Internal definitions for RPCSEC_GSS client authentication + * + * Copyright (c) 2000 The Regents of the University of Michigan. + * All rights reserved. + * + */ +#include +#include +#include + +static inline const void * +simple_get_bytes(const void *p, const void *end, void *res, size_t len) +{ + const void *q = (const void *)((const char *)p + len); + if (unlikely(q > end || q < p)) + return ERR_PTR(-EFAULT); + memcpy(res, p, len); + return q; +} + +static inline const void * +simple_get_netobj(const void *p, const void *end, struct xdr_netobj *dest) +{ + const void *q; + unsigned int len; + + p = simple_get_bytes(p, end, &len, sizeof(len)); + if (IS_ERR(p)) + return p; + q = (const void *)((const char *)p + len); + if (unlikely(q > end || q < p)) + return ERR_PTR(-EFAULT); + if (len) { + dest->data = kmemdup(p, len, GFP_NOFS); + if (unlikely(dest->data == NULL)) + return ERR_PTR(-ENOMEM); + } else + dest->data = NULL; + dest->len = len; + return q; +} --- linux-5.8.0.orig/net/sunrpc/auth_gss/gss_krb5_mech.c +++ linux-5.8.0/net/sunrpc/auth_gss/gss_krb5_mech.c @@ -21,6 +21,8 @@ #include #include +#include "auth_gss_internal.h" + #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) # define RPCDBG_FACILITY RPCDBG_AUTH #endif @@ -164,35 +166,6 @@ return NULL; } -static const void * -simple_get_bytes(const void *p, const void *end, void *res, int len) -{ - const void *q = (const void *)((const char *)p + len); - if (unlikely(q > end || q < p)) - return ERR_PTR(-EFAULT); - memcpy(res, p, len); - return q; -} - -static const void * -simple_get_netobj(const void *p, const void *end, struct xdr_netobj *res) -{ - const void *q; - unsigned int len; - - p = simple_get_bytes(p, end, &len, sizeof(len)); - if (IS_ERR(p)) - return p; - q = (const void *)((const char *)p + len); - if (unlikely(q > end || q < p)) - return ERR_PTR(-EFAULT); - res->data = kmemdup(p, len, GFP_NOFS); - if (unlikely(res->data == NULL)) - return ERR_PTR(-ENOMEM); - res->len = len; - return q; -} - static inline const void * get_key(const void *p, const void *end, struct krb5_ctx *ctx, struct crypto_sync_skcipher **res) --- linux-5.8.0.orig/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ linux-5.8.0/net/sunrpc/auth_gss/gss_krb5_wrap.c @@ -584,7 +584,7 @@ buf->head[0].iov_len); memmove(ptr, ptr + GSS_KRB5_TOK_HDR_LEN + headskip, movelen); buf->head[0].iov_len -= GSS_KRB5_TOK_HDR_LEN + headskip; - buf->len = len - GSS_KRB5_TOK_HDR_LEN + headskip; + buf->len = len - (GSS_KRB5_TOK_HDR_LEN + headskip); /* Trim off the trailing "extra count" and checksum blob */ xdr_buf_trim(buf, ec + GSS_KRB5_TOK_HDR_LEN + tailskip); --- linux-5.8.0.orig/net/sunrpc/auth_gss/svcauth_gss.c +++ linux-5.8.0/net/sunrpc/auth_gss/svcauth_gss.c @@ -958,7 +958,6 @@ maj_stat = gss_unwrap(ctx, 0, priv_len, buf); pad = priv_len - buf->len; - buf->len -= pad; /* The upper layers assume the buffer is aligned on 4-byte boundaries. * In the krb5p case, at least, the data ends up offset, so we need to * move it around. */ @@ -1105,9 +1104,9 @@ struct gssp_in_token *in_token) { struct kvec *argv = &rqstp->rq_arg.head[0]; - unsigned int page_base, length; - int pages, i, res; - size_t inlen; + unsigned int length, pgto_offs, pgfrom_offs; + int pages, i, res, pgto, pgfrom; + size_t inlen, to_offs, from_offs; res = gss_read_common_verf(gc, argv, authp, in_handle); if (res) @@ -1135,17 +1134,24 @@ memcpy(page_address(in_token->pages[0]), argv->iov_base, length); inlen -= length; - i = 1; - page_base = rqstp->rq_arg.page_base; + to_offs = length; + from_offs = rqstp->rq_arg.page_base; while (inlen) { - length = min_t(unsigned int, inlen, PAGE_SIZE); - memcpy(page_address(in_token->pages[i]), - page_address(rqstp->rq_arg.pages[i]) + page_base, + pgto = to_offs >> PAGE_SHIFT; + pgfrom = from_offs >> PAGE_SHIFT; + pgto_offs = to_offs & ~PAGE_MASK; + pgfrom_offs = from_offs & ~PAGE_MASK; + + length = min_t(unsigned int, inlen, + min_t(unsigned int, PAGE_SIZE - pgto_offs, + PAGE_SIZE - pgfrom_offs)); + memcpy(page_address(in_token->pages[pgto]) + pgto_offs, + page_address(rqstp->rq_arg.pages[pgfrom]) + pgfrom_offs, length); + to_offs += length; + from_offs += length; inlen -= length; - page_base = 0; - i++; } return 0; } @@ -1778,11 +1784,14 @@ svcauth_gss_release(struct svc_rqst *rqstp) { struct gss_svc_data *gsd = (struct gss_svc_data *)rqstp->rq_auth_data; - struct rpc_gss_wire_cred *gc = &gsd->clcred; + struct rpc_gss_wire_cred *gc; struct xdr_buf *resbuf = &rqstp->rq_res; int stat = -EINVAL; struct sunrpc_net *sn = net_generic(SVC_NET(rqstp), sunrpc_net_id); + if (!gsd) + goto out; + gc = &gsd->clcred; if (gc->gc_proc != RPC_GSS_PROC_DATA) goto out; /* Release can be called twice, but we only wrap once. */ @@ -1823,10 +1832,10 @@ if (rqstp->rq_cred.cr_group_info) put_group_info(rqstp->rq_cred.cr_group_info); rqstp->rq_cred.cr_group_info = NULL; - if (gsd->rsci) + if (gsd && gsd->rsci) { cache_put(&gsd->rsci->h, sn->rsc_cache); - gsd->rsci = NULL; - + gsd->rsci = NULL; + } return stat; } --- linux-5.8.0.orig/net/sunrpc/debugfs.c +++ linux-5.8.0/net/sunrpc/debugfs.c @@ -128,13 +128,13 @@ return 0; len = snprintf(name, sizeof(name), "../../rpc_xprt/%s", xprt->debugfs->d_name.name); - if (len > sizeof(name)) + if (len >= sizeof(name)) return -1; if (*nump == 0) strcpy(link, "xprt"); else { len = snprintf(link, sizeof(link), "xprt%d", *nump); - if (len > sizeof(link)) + if (len >= sizeof(link)) return -1; } debugfs_create_symlink(link, clnt->cl_debugfs, name); --- linux-5.8.0.orig/net/sunrpc/rpcb_clnt.c +++ linux-5.8.0/net/sunrpc/rpcb_clnt.c @@ -982,8 +982,8 @@ p = xdr_inline_decode(xdr, len); if (unlikely(p == NULL)) goto out_fail; - dprintk("RPC: %5u RPCB_%s reply: %s\n", req->rq_task->tk_pid, - req->rq_task->tk_msg.rpc_proc->p_name, (char *)p); + dprintk("RPC: %5u RPCB_%s reply: %*pE\n", req->rq_task->tk_pid, + req->rq_task->tk_msg.rpc_proc->p_name, len, (char *)p); if (rpc_uaddr2sockaddr(req->rq_xprt->xprt_net, (char *)p, len, sap, sizeof(address)) == 0) --- linux-5.8.0.orig/net/sunrpc/sched.c +++ linux-5.8.0/net/sunrpc/sched.c @@ -700,6 +700,23 @@ EXPORT_SYMBOL_GPL(rpc_wake_up_next); /** + * rpc_wake_up_locked - wake up all rpc_tasks + * @queue: rpc_wait_queue on which the tasks are sleeping + * + */ +static void rpc_wake_up_locked(struct rpc_wait_queue *queue) +{ + struct rpc_task *task; + + for (;;) { + task = __rpc_find_next_queued(queue); + if (task == NULL) + break; + rpc_wake_up_task_queue_locked(queue, task); + } +} + +/** * rpc_wake_up - wake up all rpc_tasks * @queue: rpc_wait_queue on which the tasks are sleeping * @@ -707,25 +724,28 @@ */ void rpc_wake_up(struct rpc_wait_queue *queue) { - struct list_head *head; - spin_lock(&queue->lock); - head = &queue->tasks[queue->maxpriority]; + rpc_wake_up_locked(queue); + spin_unlock(&queue->lock); +} +EXPORT_SYMBOL_GPL(rpc_wake_up); + +/** + * rpc_wake_up_status_locked - wake up all rpc_tasks and set their status value. + * @queue: rpc_wait_queue on which the tasks are sleeping + * @status: status value to set + */ +static void rpc_wake_up_status_locked(struct rpc_wait_queue *queue, int status) +{ + struct rpc_task *task; + for (;;) { - while (!list_empty(head)) { - struct rpc_task *task; - task = list_first_entry(head, - struct rpc_task, - u.tk_wait.list); - rpc_wake_up_task_queue_locked(queue, task); - } - if (head == &queue->tasks[0]) + task = __rpc_find_next_queued(queue); + if (task == NULL) break; - head--; + rpc_wake_up_task_queue_set_status_locked(queue, task, status); } - spin_unlock(&queue->lock); } -EXPORT_SYMBOL_GPL(rpc_wake_up); /** * rpc_wake_up_status - wake up all rpc_tasks and set their status value. @@ -736,23 +756,8 @@ */ void rpc_wake_up_status(struct rpc_wait_queue *queue, int status) { - struct list_head *head; - spin_lock(&queue->lock); - head = &queue->tasks[queue->maxpriority]; - for (;;) { - while (!list_empty(head)) { - struct rpc_task *task; - task = list_first_entry(head, - struct rpc_task, - u.tk_wait.list); - task->tk_status = status; - rpc_wake_up_task_queue_locked(queue, task); - } - if (head == &queue->tasks[0]) - break; - head--; - } + rpc_wake_up_status_locked(queue, status); spin_unlock(&queue->lock); } EXPORT_SYMBOL_GPL(rpc_wake_up_status); @@ -987,8 +992,11 @@ rpc_set_active(task); rpc_make_runnable(rpciod_workqueue, task); - if (!is_async) + if (!is_async) { + unsigned int pflags = memalloc_nofs_save(); __rpc_execute(task); + memalloc_nofs_restore(pflags); + } } static void rpc_async_schedule(struct work_struct *work) --- linux-5.8.0.orig/net/sunrpc/svc.c +++ linux-5.8.0/net/sunrpc/svc.c @@ -1408,7 +1408,7 @@ sendit: if (svc_authorise(rqstp)) - goto close; + goto close_xprt; return 1; /* Caller can now send it */ release_dropit: @@ -1420,6 +1420,8 @@ return 0; close: + svc_authorise(rqstp); +close_xprt: if (rqstp->rq_xprt && test_bit(XPT_TEMP, &rqstp->rq_xprt->xpt_flags)) svc_close_xprt(rqstp->rq_xprt); dprintk("svc: svc_process close\n"); @@ -1428,7 +1430,7 @@ err_short_len: svc_printk(rqstp, "short len %zd, dropping request\n", argv->iov_len); - goto close; + goto close_xprt; err_bad_rpc: serv->sv_stats->rpcbadfmt++; --- linux-5.8.0.orig/net/sunrpc/svc_xprt.c +++ linux-5.8.0/net/sunrpc/svc_xprt.c @@ -1062,7 +1062,7 @@ struct svc_xprt *xprt; int ret = 0; - spin_lock(&serv->sv_lock); + spin_lock_bh(&serv->sv_lock); list_for_each_entry(xprt, xprt_list, xpt_list) { if (xprt->xpt_net != net) continue; @@ -1070,7 +1070,7 @@ set_bit(XPT_CLOSE, &xprt->xpt_flags); svc_xprt_enqueue(xprt); } - spin_unlock(&serv->sv_lock); + spin_unlock_bh(&serv->sv_lock); return ret; } --- linux-5.8.0.orig/net/sunrpc/svcsock.c +++ linux-5.8.0/net/sunrpc/svcsock.c @@ -228,7 +228,7 @@ static void svc_flush_bvec(const struct bio_vec *bvec, size_t size, size_t seek) { struct bvec_iter bi = { - .bi_size = size, + .bi_size = size + seek, }; struct bio_vec bv; @@ -1062,6 +1062,91 @@ return 0; /* record not complete */ } +static int svc_tcp_send_kvec(struct socket *sock, const struct kvec *vec, + int flags) +{ + return kernel_sendpage(sock, virt_to_page(vec->iov_base), + offset_in_page(vec->iov_base), + vec->iov_len, flags); +} + +/* + * kernel_sendpage() is used exclusively to reduce the number of + * copy operations in this path. Therefore the caller must ensure + * that the pages backing @xdr are unchanging. + * + * In addition, the logic assumes that * .bv_len is never larger + * than PAGE_SIZE. + */ +static int svc_tcp_sendmsg(struct socket *sock, struct msghdr *msg, + struct xdr_buf *xdr, rpc_fraghdr marker, + unsigned int *sentp) +{ + const struct kvec *head = xdr->head; + const struct kvec *tail = xdr->tail; + struct kvec rm = { + .iov_base = &marker, + .iov_len = sizeof(marker), + }; + int flags, ret; + + *sentp = 0; + xdr_alloc_bvec(xdr, GFP_KERNEL); + + msg->msg_flags = MSG_MORE; + ret = kernel_sendmsg(sock, msg, &rm, 1, rm.iov_len); + if (ret < 0) + return ret; + *sentp += ret; + if (ret != rm.iov_len) + return -EAGAIN; + + flags = head->iov_len < xdr->len ? MSG_MORE | MSG_SENDPAGE_NOTLAST : 0; + ret = svc_tcp_send_kvec(sock, head, flags); + if (ret < 0) + return ret; + *sentp += ret; + if (ret != head->iov_len) + goto out; + + if (xdr->page_len) { + unsigned int offset, len, remaining; + struct bio_vec *bvec; + + bvec = xdr->bvec + (xdr->page_base >> PAGE_SHIFT); + offset = offset_in_page(xdr->page_base); + remaining = xdr->page_len; + flags = MSG_MORE | MSG_SENDPAGE_NOTLAST; + while (remaining > 0) { + if (remaining <= PAGE_SIZE && tail->iov_len == 0) + flags = 0; + + len = min(remaining, bvec->bv_len - offset); + ret = kernel_sendpage(sock, bvec->bv_page, + bvec->bv_offset + offset, + len, flags); + if (ret < 0) + return ret; + *sentp += ret; + if (ret != len) + goto out; + remaining -= len; + offset = 0; + bvec++; + } + } + + if (tail->iov_len) { + ret = svc_tcp_send_kvec(sock, tail, 0); + if (ret < 0) + return ret; + *sentp += ret; + } + +out: + return 0; +} + /** * svc_tcp_sendto - Send out a reply on a TCP socket * @rqstp: completed svc_rqst @@ -1089,7 +1174,7 @@ mutex_lock(&xprt->xpt_mutex); if (svc_xprt_is_dead(xprt)) goto out_notconn; - err = xprt_sock_sendmsg(svsk->sk_sock, &msg, xdr, 0, marker, &sent); + err = svc_tcp_sendmsg(svsk->sk_sock, &msg, xdr, marker, &sent); xdr_free_bvec(xdr); trace_svcsock_tcp_send(xprt, err < 0 ? err : sent); if (err < 0 || sent != (xdr->len + sizeof(marker))) --- linux-5.8.0.orig/net/sunrpc/sysctl.c +++ linux-5.8.0/net/sunrpc/sysctl.c @@ -70,7 +70,13 @@ return 0; } len = svc_print_xprts(tmpbuf, sizeof(tmpbuf)); - return memory_read_from_buffer(buffer, *lenp, ppos, tmpbuf, len); + *lenp = memory_read_from_buffer(buffer, *lenp, ppos, tmpbuf, len); + + if (*lenp < 0) { + *lenp = 0; + return -EINVAL; + } + return 0; } static int --- linux-5.8.0.orig/net/sunrpc/xprt.c +++ linux-5.8.0/net/sunrpc/xprt.c @@ -151,31 +151,64 @@ } EXPORT_SYMBOL_GPL(xprt_unregister_transport); +static void +xprt_class_release(const struct xprt_class *t) +{ + module_put(t->owner); +} + +static const struct xprt_class * +xprt_class_find_by_netid_locked(const char *netid) +{ + const struct xprt_class *t; + unsigned int i; + + list_for_each_entry(t, &xprt_list, list) { + for (i = 0; t->netid[i][0] != '\0'; i++) { + if (strcmp(t->netid[i], netid) != 0) + continue; + if (!try_module_get(t->owner)) + continue; + return t; + } + } + return NULL; +} + +static const struct xprt_class * +xprt_class_find_by_netid(const char *netid) +{ + const struct xprt_class *t; + + spin_lock(&xprt_list_lock); + t = xprt_class_find_by_netid_locked(netid); + if (!t) { + spin_unlock(&xprt_list_lock); + request_module("rpc%s", netid); + spin_lock(&xprt_list_lock); + t = xprt_class_find_by_netid_locked(netid); + } + spin_unlock(&xprt_list_lock); + return t; +} + /** * xprt_load_transport - load a transport implementation - * @transport_name: transport to load + * @netid: transport to load * * Returns: * 0: transport successfully loaded * -ENOENT: transport module not available */ -int xprt_load_transport(const char *transport_name) +int xprt_load_transport(const char *netid) { - struct xprt_class *t; - int result; + const struct xprt_class *t; - result = 0; - spin_lock(&xprt_list_lock); - list_for_each_entry(t, &xprt_list, list) { - if (strcmp(t->name, transport_name) == 0) { - spin_unlock(&xprt_list_lock); - goto out; - } - } - spin_unlock(&xprt_list_lock); - result = request_module("xprt%s", transport_name); -out: - return result; + t = xprt_class_find_by_netid(netid); + if (!t) + return -ENOENT; + xprt_class_release(t); + return 0; } EXPORT_SYMBOL_GPL(xprt_load_transport); @@ -1511,10 +1544,13 @@ { struct rpc_rqst *next, *req = task->tk_rqstp; struct rpc_xprt *xprt = req->rq_xprt; - int status; + int counter, status; spin_lock(&xprt->queue_lock); + counter = 0; while (!list_empty(&xprt->xmit_queue)) { + if (++counter == 20) + break; next = list_first_entry(&xprt->xmit_queue, struct rpc_rqst, rq_xmit); xprt_pin_rqst(next); @@ -1522,7 +1558,6 @@ status = xprt_request_transmit(next, task); if (status == -EBADMSG && next != req) status = 0; - cond_resched(); spin_lock(&xprt->queue_lock); xprt_unpin_rqst(next); if (status == 0) { --- linux-5.8.0.orig/net/sunrpc/xprtrdma/module.c +++ linux-5.8.0/net/sunrpc/xprtrdma/module.c @@ -24,6 +24,7 @@ MODULE_LICENSE("Dual BSD/GPL"); MODULE_ALIAS("svcrdma"); MODULE_ALIAS("xprtrdma"); +MODULE_ALIAS("rpcrdma6"); static void __exit rpc_rdma_cleanup(void) { --- linux-5.8.0.orig/net/sunrpc/xprtrdma/rpc_rdma.c +++ linux-5.8.0/net/sunrpc/xprtrdma/rpc_rdma.c @@ -179,6 +179,31 @@ r_xprt->rx_ep->re_max_inline_recv; } +/* ACL likes to be lazy in allocating pages. For TCP, these + * pages can be allocated during receive processing. Not true + * for RDMA, which must always provision receive buffers + * up front. + */ +static noinline int +rpcrdma_alloc_sparse_pages(struct xdr_buf *buf) +{ + struct page **ppages; + int len; + + len = buf->page_len; + ppages = buf->pages + (buf->page_base >> PAGE_SHIFT); + while (len > 0) { + if (!*ppages) + *ppages = alloc_page(GFP_NOWAIT | __GFP_NOWARN); + if (!*ppages) + return -ENOBUFS; + ppages++; + len -= PAGE_SIZE; + } + + return 0; +} + /* Split @vec on page boundaries into SGEs. FMR registers pages, not * a byte range. Other modes coalesce these SGEs into a single MR * when they can. @@ -233,15 +258,6 @@ ppages = xdrbuf->pages + (xdrbuf->page_base >> PAGE_SHIFT); page_base = offset_in_page(xdrbuf->page_base); while (len) { - /* ACL likes to be lazy in allocating pages - ACLs - * are small by default but can get huge. - */ - if (unlikely(xdrbuf->flags & XDRBUF_SPARSE_PAGES)) { - if (!*ppages) - *ppages = alloc_page(GFP_NOWAIT | __GFP_NOWARN); - if (!*ppages) - return -ENOBUFS; - } seg->mr_page = *ppages; seg->mr_offset = (char *)page_base; seg->mr_len = min_t(u32, PAGE_SIZE - page_base, len); @@ -875,6 +891,12 @@ __be32 *p; int ret; + if (unlikely(rqst->rq_rcv_buf.flags & XDRBUF_SPARSE_PAGES)) { + ret = rpcrdma_alloc_sparse_pages(&rqst->rq_rcv_buf); + if (ret) + return ret; + } + rpcrdma_set_xdrlen(&req->rl_hdrbuf, 0); xdr_init_encode(xdr, &req->rl_hdrbuf, rdmab_data(req->rl_rdmabuf), rqst); --- linux-5.8.0.orig/net/sunrpc/xprtrdma/svc_rdma_backchannel.c +++ linux-5.8.0/net/sunrpc/xprtrdma/svc_rdma_backchannel.c @@ -246,9 +246,9 @@ xprt->timeout = &xprt_rdma_bc_timeout; xprt_set_bound(xprt); xprt_set_connected(xprt); - xprt->bind_timeout = RPCRDMA_BIND_TO; - xprt->reestablish_timeout = RPCRDMA_INIT_REEST_TO; - xprt->idle_timeout = RPCRDMA_IDLE_DISC_TO; + xprt->bind_timeout = 0; + xprt->reestablish_timeout = 0; + xprt->idle_timeout = 0; xprt->prot = XPRT_TRANSPORT_BC_RDMA; xprt->ops = &xprt_rdma_bc_procs; --- linux-5.8.0.orig/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ linux-5.8.0/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c @@ -265,6 +265,8 @@ { struct svc_rdma_recv_ctxt *ctxt; + if (test_bit(XPT_CLOSE, &rdma->sc_xprt.xpt_flags)) + return 0; ctxt = svc_rdma_recv_ctxt_get(rdma); if (!ctxt) return -ENOMEM; --- linux-5.8.0.orig/net/sunrpc/xprtrdma/svc_rdma_rw.c +++ linux-5.8.0/net/sunrpc/xprtrdma/svc_rdma_rw.c @@ -684,7 +684,6 @@ struct svc_rdma_read_info *info, __be32 *p) { - unsigned int i; int ret; ret = -EINVAL; @@ -707,12 +706,6 @@ info->ri_chunklen += rs_length; } - /* Pages under I/O have been copied to head->rc_pages. - * Prevent their premature release by svc_xprt_release() . - */ - for (i = 0; i < info->ri_readctxt->rc_page_count; i++) - rqstp->rq_pages[i] = NULL; - return ret; } @@ -807,6 +800,26 @@ return ret; } +/* Pages under I/O have been copied to head->rc_pages. Ensure they + * are not released by svc_xprt_release() until the I/O is complete. + * + * This has to be done after all Read WRs are constructed to properly + * handle a page that is part of I/O on behalf of two different RDMA + * segments. + * + * Do this only if I/O has been posted. Otherwise, we do indeed want + * svc_xprt_release() to clean things up properly. + */ +static void svc_rdma_save_io_pages(struct svc_rqst *rqstp, + const unsigned int start, + const unsigned int num_pages) +{ + unsigned int i; + + for (i = start; i < num_pages + start; i++) + rqstp->rq_pages[i] = NULL; +} + /** * svc_rdma_recv_read_chunk - Pull a Read chunk from the client * @rdma: controlling RDMA transport @@ -860,6 +873,7 @@ ret = svc_rdma_post_chunk_ctxt(&info->ri_cc); if (ret < 0) goto out_err; + svc_rdma_save_io_pages(rqstp, 0, head->rc_page_count); return 0; out_err: --- linux-5.8.0.orig/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ linux-5.8.0/net/sunrpc/xprtrdma/svc_rdma_sendto.c @@ -637,10 +637,11 @@ while (remaining) { len = min_t(u32, PAGE_SIZE - pageoff, remaining); - memcpy(dst, page_address(*ppages), len); + memcpy(dst, page_address(*ppages) + pageoff, len); remaining -= len; dst += len; pageoff = 0; + ppages++; } } --- linux-5.8.0.orig/net/sunrpc/xprtrdma/transport.c +++ linux-5.8.0/net/sunrpc/xprtrdma/transport.c @@ -775,6 +775,7 @@ .owner = THIS_MODULE, .ident = XPRT_TRANSPORT_RDMA, .setup = xprt_setup_rdma, + .netid = { "rdma", "rdma6", "" }, }; void xprt_rdma_cleanup(void) --- linux-5.8.0.orig/net/sunrpc/xprtrdma/verbs.c +++ linux-5.8.0/net/sunrpc/xprtrdma/verbs.c @@ -933,6 +933,8 @@ rpcrdma_regbuf_dma_unmap(req->rl_sendbuf); rpcrdma_regbuf_dma_unmap(req->rl_recvbuf); + + frwr_reset(req); } /* ASSUMPTION: the rb_allreqs list is stable for the duration, --- linux-5.8.0.orig/net/sunrpc/xprtsock.c +++ linux-5.8.0/net/sunrpc/xprtsock.c @@ -433,7 +433,8 @@ if (ret <= 0) goto sock_err; xs_flush_bvec(buf->bvec, ret, seek + buf->page_base); - offset += ret - buf->page_base; + ret -= buf->page_base; + offset += ret; if (offset == count || msg->msg_flags & (MSG_EOR|MSG_TRUNC)) goto out; if (ret != want) @@ -3062,6 +3063,7 @@ .owner = THIS_MODULE, .ident = XPRT_TRANSPORT_LOCAL, .setup = xs_setup_local, + .netid = { "" }, }; static struct xprt_class xs_udp_transport = { @@ -3070,6 +3072,7 @@ .owner = THIS_MODULE, .ident = XPRT_TRANSPORT_UDP, .setup = xs_setup_udp, + .netid = { "udp", "udp6", "" }, }; static struct xprt_class xs_tcp_transport = { @@ -3078,6 +3081,7 @@ .owner = THIS_MODULE, .ident = XPRT_TRANSPORT_TCP, .setup = xs_setup_tcp, + .netid = { "tcp", "tcp6", "" }, }; static struct xprt_class xs_bc_tcp_transport = { @@ -3086,6 +3090,7 @@ .owner = THIS_MODULE, .ident = XPRT_TRANSPORT_BC_TCP, .setup = xs_setup_bc_tcp, + .netid = { "" }, }; /** --- linux-5.8.0.orig/net/switchdev/switchdev.c +++ linux-5.8.0/net/switchdev/switchdev.c @@ -461,10 +461,11 @@ extack = switchdev_notifier_info_to_extack(&port_obj_info->info); if (check_cb(dev)) { - /* This flag is only checked if the return value is success. */ - port_obj_info->handled = true; - return add_cb(dev, port_obj_info->obj, port_obj_info->trans, - extack); + err = add_cb(dev, port_obj_info->obj, port_obj_info->trans, + extack); + if (err != -EOPNOTSUPP) + port_obj_info->handled = true; + return err; } /* Switch ports might be stacked under e.g. a LAG. Ignore the @@ -516,9 +517,10 @@ int err = -EOPNOTSUPP; if (check_cb(dev)) { - /* This flag is only checked if the return value is success. */ - port_obj_info->handled = true; - return del_cb(dev, port_obj_info->obj); + err = del_cb(dev, port_obj_info->obj); + if (err != -EOPNOTSUPP) + port_obj_info->handled = true; + return err; } /* Switch ports might be stacked under e.g. a LAG. Ignore the @@ -569,9 +571,10 @@ int err = -EOPNOTSUPP; if (check_cb(dev)) { - port_attr_info->handled = true; - return set_cb(dev, port_attr_info->attr, - port_attr_info->trans); + err = set_cb(dev, port_attr_info->attr, port_attr_info->trans); + if (err != -EOPNOTSUPP) + port_attr_info->handled = true; + return err; } /* Switch ports might be stacked under e.g. a LAG. Ignore the --- linux-5.8.0.orig/net/tipc/bcast.c +++ linux-5.8.0/net/tipc/bcast.c @@ -108,6 +108,8 @@ { struct tipc_bc_base *bb = tipc_bc_base(net); int all_dests = tipc_link_bc_peers(bb->link); + int max_win = tipc_link_max_win(bb->link); + int min_win = tipc_link_min_win(bb->link); int i, mtu, prim; bb->primary_bearer = INVALID_BEARER_ID; @@ -121,8 +123,12 @@ continue; mtu = tipc_bearer_mtu(net, i); - if (mtu < tipc_link_mtu(bb->link)) + if (mtu < tipc_link_mtu(bb->link)) { tipc_link_set_mtu(bb->link, mtu); + tipc_link_set_queue_limits(bb->link, + min_win, + max_win); + } bb->bcast_support &= tipc_bearer_bcast_support(net, i); if (bb->dests[i] < all_dests) continue; @@ -585,7 +591,7 @@ if (max_win > TIPC_MAX_LINK_WIN) return -EINVAL; tipc_bcast_lock(net); - tipc_link_set_queue_limits(l, BCLINK_WIN_MIN, max_win); + tipc_link_set_queue_limits(l, tipc_link_min_win(l), max_win); tipc_bcast_unlock(net); return 0; } --- linux-5.8.0.orig/net/tipc/core.c +++ linux-5.8.0/net/tipc/core.c @@ -60,6 +60,7 @@ tn->trial_addr = 0; tn->addr_trial_end = 0; tn->capabilities = TIPC_NODE_CAPABILITIES; + INIT_WORK(&tn->final_work.work, tipc_net_finalize_work); memset(tn->node_id, 0, sizeof(tn->node_id)); memset(tn->node_id_string, 0, sizeof(tn->node_id_string)); tn->mon_threshold = TIPC_DEF_MON_THRESHOLD; @@ -107,8 +108,13 @@ static void __net_exit tipc_exit_net(struct net *net) { + struct tipc_net *tn = tipc_net(net); + tipc_detach_loopback(net); + /* Make sure the tipc_net_finalize_work() finished */ + cancel_work_sync(&tn->final_work.work); tipc_net_stop(net); + tipc_bcast_stop(net); tipc_nametbl_stop(net); tipc_sk_rht_destroy(net); --- linux-5.8.0.orig/net/tipc/core.h +++ linux-5.8.0/net/tipc/core.h @@ -90,6 +90,12 @@ extern int sysctl_tipc_rmem[3] __read_mostly; extern int sysctl_tipc_named_timeout __read_mostly; +struct tipc_net_work { + struct work_struct work; + struct net *net; + u32 addr; +}; + struct tipc_net { u8 node_id[NODE_ID_LEN]; u32 node_addr; @@ -143,6 +149,8 @@ /* TX crypto handler */ struct tipc_crypto *crypto_tx; #endif + /* Work item for net finalize */ + struct tipc_net_work final_work; }; static inline struct tipc_net *tipc_net(struct net *net) --- linux-5.8.0.orig/net/tipc/crypto.c +++ linux-5.8.0/net/tipc/crypto.c @@ -326,7 +326,8 @@ if (aead->cloned) { tipc_aead_put(aead->cloned); } else { - head = *this_cpu_ptr(aead->tfm_entry); + head = *get_cpu_ptr(aead->tfm_entry); + put_cpu_ptr(aead->tfm_entry); list_for_each_entry_safe(tfm_entry, tmp, &head->list, list) { crypto_free_aead(tfm_entry->tfm); list_del(&tfm_entry->list); @@ -399,10 +400,15 @@ */ static struct crypto_aead *tipc_aead_tfm_next(struct tipc_aead *aead) { - struct tipc_tfm **tfm_entry = this_cpu_ptr(aead->tfm_entry); + struct tipc_tfm **tfm_entry; + struct crypto_aead *tfm; + tfm_entry = get_cpu_ptr(aead->tfm_entry); *tfm_entry = list_next_entry(*tfm_entry, list); - return (*tfm_entry)->tfm; + tfm = (*tfm_entry)->tfm; + put_cpu_ptr(tfm_entry); + + return tfm; } /** @@ -757,10 +763,12 @@ switch (err) { case 0: this_cpu_inc(tx->stats->stat[STAT_ASYNC_OK]); + rcu_read_lock(); if (likely(test_bit(0, &b->up))) b->media->send_msg(net, skb, b, &tx_ctx->dst); else kfree_skb(skb); + rcu_read_unlock(); break; case -EINPROGRESS: return; --- linux-5.8.0.orig/net/tipc/group.c +++ linux-5.8.0/net/tipc/group.c @@ -273,8 +273,8 @@ return NULL; } -static void tipc_group_add_to_tree(struct tipc_group *grp, - struct tipc_member *m) +static int tipc_group_add_to_tree(struct tipc_group *grp, + struct tipc_member *m) { u64 nkey, key = (u64)m->node << 32 | m->port; struct rb_node **n, *parent = NULL; @@ -291,10 +291,11 @@ else if (key > nkey) n = &(*n)->rb_right; else - return; + return -EEXIST; } rb_link_node(&m->tree_node, parent, n); rb_insert_color(&m->tree_node, &grp->members); + return 0; } static struct tipc_member *tipc_group_create_member(struct tipc_group *grp, @@ -302,6 +303,7 @@ u32 instance, int state) { struct tipc_member *m; + int ret; m = kzalloc(sizeof(*m), GFP_ATOMIC); if (!m) @@ -314,8 +316,12 @@ m->port = port; m->instance = instance; m->bc_acked = grp->bc_snd_nxt - 1; + ret = tipc_group_add_to_tree(grp, m); + if (ret < 0) { + kfree(m); + return NULL; + } grp->member_cnt++; - tipc_group_add_to_tree(grp, m); tipc_nlist_add(&grp->dests, m->node); m->state = state; return m; --- linux-5.8.0.orig/net/tipc/link.c +++ linux-5.8.0/net/tipc/link.c @@ -1000,7 +1000,6 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list, struct sk_buff_head *xmitq) { - struct tipc_msg *hdr = buf_msg(skb_peek(list)); struct sk_buff_head *backlogq = &l->backlogq; struct sk_buff_head *transmq = &l->transmq; struct sk_buff *skb, *_skb; @@ -1008,13 +1007,18 @@ u16 ack = l->rcv_nxt - 1; u16 seqno = l->snd_nxt; int pkt_cnt = skb_queue_len(list); - int imp = msg_importance(hdr); unsigned int mss = tipc_link_mss(l); unsigned int cwin = l->window; unsigned int mtu = l->mtu; + struct tipc_msg *hdr; bool new_bundle; int rc = 0; + int imp; + if (pkt_cnt <= 0) + return 0; + + hdr = buf_msg(skb_peek(list)); if (unlikely(msg_size(hdr) > mtu)) { pr_warn("Too large msg, purging xmit list %d %d %d %d %d!\n", skb_queue_len(list), msg_user(hdr), @@ -1023,6 +1027,7 @@ return -EMSGSIZE; } + imp = msg_importance(hdr); /* Allow oversubscription of one data msg per source at congestion */ if (unlikely(l->backlog[imp].len >= l->backlog[imp].limit)) { if (imp == TIPC_SYSTEM_IMPORTANCE) { --- linux-5.8.0.orig/net/tipc/msg.c +++ linux-5.8.0/net/tipc/msg.c @@ -150,10 +150,11 @@ if (fragid == FIRST_FRAGMENT) { if (unlikely(head)) goto err; - if (unlikely(skb_unclone(frag, GFP_ATOMIC))) + *buf = NULL; + frag = skb_unshare(frag, GFP_ATOMIC); + if (unlikely(!frag)) goto err; head = *headbuf = frag; - *buf = NULL; TIPC_SKB_CB(head)->tail = NULL; if (skb_is_nonlinear(head)) { skb_walk_frags(head, tail) { --- linux-5.8.0.orig/net/tipc/net.c +++ linux-5.8.0/net/tipc/net.c @@ -105,12 +105,6 @@ * - A local spin_lock protecting the queue of subscriber events. */ -struct tipc_net_work { - struct work_struct work; - struct net *net; - u32 addr; -}; - static void tipc_net_finalize(struct net *net, u32 addr); int tipc_net_init(struct net *net, u8 *node_id, u32 addr) @@ -142,25 +136,21 @@ TIPC_CLUSTER_SCOPE, 0, addr); } -static void tipc_net_finalize_work(struct work_struct *work) +void tipc_net_finalize_work(struct work_struct *work) { struct tipc_net_work *fwork; fwork = container_of(work, struct tipc_net_work, work); tipc_net_finalize(fwork->net, fwork->addr); - kfree(fwork); } void tipc_sched_net_finalize(struct net *net, u32 addr) { - struct tipc_net_work *fwork = kzalloc(sizeof(*fwork), GFP_ATOMIC); + struct tipc_net *tn = tipc_net(net); - if (!fwork) - return; - INIT_WORK(&fwork->work, tipc_net_finalize_work); - fwork->net = net; - fwork->addr = addr; - schedule_work(&fwork->work); + tn->final_work.net = net; + tn->final_work.addr = addr; + schedule_work(&tn->final_work.work); } void tipc_net_stop(struct net *net) --- linux-5.8.0.orig/net/tipc/net.h +++ linux-5.8.0/net/tipc/net.h @@ -42,6 +42,7 @@ extern const struct nla_policy tipc_nl_net_policy[]; int tipc_net_init(struct net *net, u8 *node_id, u32 addr); +void tipc_net_finalize_work(struct work_struct *work); void tipc_sched_net_finalize(struct net *net, u32 addr); void tipc_net_stop(struct net *net); int tipc_nl_net_dump(struct sk_buff *skb, struct netlink_callback *cb); --- linux-5.8.0.orig/net/tipc/netlink_compat.c +++ linux-5.8.0/net/tipc/netlink_compat.c @@ -275,8 +275,9 @@ static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd, struct tipc_nl_compat_msg *msg) { - int err; + struct nlmsghdr *nlh; struct sk_buff *arg; + int err; if (msg->req_type && (!msg->req_size || !TLV_CHECK_TYPE(msg->req, msg->req_type))) @@ -305,6 +306,15 @@ return -ENOMEM; } + nlh = nlmsg_put(arg, 0, 0, tipc_genl_family.id, 0, NLM_F_MULTI); + if (!nlh) { + kfree_skb(arg); + kfree_skb(msg->rep); + msg->rep = NULL; + return -EMSGSIZE; + } + nlmsg_end(arg, nlh); + err = __tipc_nl_compat_dumpit(cmd, msg, arg); if (err) { kfree_skb(msg->rep); --- linux-5.8.0.orig/net/tipc/node.c +++ linux-5.8.0/net/tipc/node.c @@ -2153,7 +2153,11 @@ &xmitq); else if (prop == TIPC_NLA_PROP_MTU) tipc_link_set_mtu(e->link, b->mtu); + + /* Update MTU for node link entry */ + e->mtu = tipc_link_mss(e->link); } + tipc_node_write_unlock(n); tipc_bearer_xmit(net, bearer_id, &xmitq, &e->maddr, NULL); } @@ -2823,17 +2827,22 @@ #ifdef CONFIG_TIPC_CRYPTO static int tipc_nl_retrieve_key(struct nlattr **attrs, - struct tipc_aead_key **key) + struct tipc_aead_key **pkey) { struct nlattr *attr = attrs[TIPC_NLA_NODE_KEY]; + struct tipc_aead_key *key; if (!attr) return -ENODATA; - *key = (struct tipc_aead_key *)nla_data(attr); - if (nla_len(attr) < tipc_aead_key_size(*key)) + if (nla_len(attr) < sizeof(*key)) + return -EINVAL; + key = (struct tipc_aead_key *)nla_data(attr); + if (key->keylen > TIPC_AEAD_KEYLEN_MAX || + nla_len(attr) < tipc_aead_key_size(key)) return -EINVAL; + *pkey = key; return 0; } --- linux-5.8.0.orig/net/tipc/socket.c +++ linux-5.8.0/net/tipc/socket.c @@ -2773,18 +2773,18 @@ trace_tipc_sk_shutdown(sk, NULL, TIPC_DUMP_ALL, " "); __tipc_shutdown(sock, TIPC_CONN_SHUTDOWN); - sk->sk_shutdown = SEND_SHUTDOWN; + sk->sk_shutdown = SHUTDOWN_MASK; if (sk->sk_state == TIPC_DISCONNECTING) { /* Discard any unreceived messages */ __skb_queue_purge(&sk->sk_receive_queue); - /* Wake up anyone sleeping in poll */ - sk->sk_state_change(sk); res = 0; } else { res = -ENOTCONN; } + /* Wake up anyone sleeping in poll. */ + sk->sk_state_change(sk); release_sock(sk); return res; --- linux-5.8.0.orig/net/tipc/topsrv.c +++ linux-5.8.0/net/tipc/topsrv.c @@ -665,12 +665,18 @@ ret = tipc_topsrv_work_start(srv); if (ret < 0) - return ret; + goto err_start; ret = tipc_topsrv_create_listener(srv); if (ret < 0) - tipc_topsrv_work_stop(srv); + goto err_create; + return 0; + +err_create: + tipc_topsrv_work_stop(srv); +err_start: + kfree(srv); return ret; } --- linux-5.8.0.orig/net/tls/tls_device.c +++ linux-5.8.0/net/tls/tls_device.c @@ -418,14 +418,14 @@ struct tls_context *tls_ctx = tls_get_ctx(sk); struct tls_prot_info *prot = &tls_ctx->prot_info; struct tls_offload_context_tx *ctx = tls_offload_ctx_tx(tls_ctx); - int more = flags & (MSG_SENDPAGE_NOTLAST | MSG_MORE); struct tls_record_info *record = ctx->open_record; int tls_push_record_flags; struct page_frag *pfrag; size_t orig_size = size; u32 max_open_record_len; - int copy, rc = 0; + bool more = false; bool done = false; + int copy, rc = 0; long timeo; if (flags & @@ -492,9 +492,8 @@ if (!size) { last_record: tls_push_record_flags = flags; - if (more) { - tls_ctx->pending_open_record_frags = - !!record->num_frags; + if (flags & (MSG_SENDPAGE_NOTLAST | MSG_MORE)) { + more = true; break; } @@ -526,6 +525,8 @@ } } while (!done); + tls_ctx->pending_open_record_frags = more; + if (orig_size - size > 0) rc = orig_size - size; @@ -561,7 +562,7 @@ { struct tls_context *tls_ctx = tls_get_ctx(sk); struct iov_iter msg_iter; - char *kaddr = kmap(page); + char *kaddr; struct kvec iov; int rc; @@ -576,6 +577,7 @@ goto out; } + kaddr = kmap(page); iov.iov_base = kaddr + offset; iov.iov_len = size; iov_iter_kvec(&msg_iter, WRITE, &iov, 1, size); @@ -690,15 +692,71 @@ TLS_INC_STATS(sock_net(sk), LINUX_MIB_TLSRXDEVICERESYNC); } +static bool +tls_device_rx_resync_async(struct tls_offload_resync_async *resync_async, + s64 resync_req, u32 *seq, u16 *rcd_delta) +{ + u32 is_async = resync_req & RESYNC_REQ_ASYNC; + u32 req_seq = resync_req >> 32; + u32 req_end = req_seq + ((resync_req >> 16) & 0xffff); + u16 i; + + *rcd_delta = 0; + + if (is_async) { + /* shouldn't get to wraparound: + * too long in async stage, something bad happened + */ + if (WARN_ON_ONCE(resync_async->rcd_delta == USHRT_MAX)) + return false; + + /* asynchronous stage: log all headers seq such that + * req_seq <= seq <= end_seq, and wait for real resync request + */ + if (before(*seq, req_seq)) + return false; + if (!after(*seq, req_end) && + resync_async->loglen < TLS_DEVICE_RESYNC_ASYNC_LOGMAX) + resync_async->log[resync_async->loglen++] = *seq; + + resync_async->rcd_delta++; + + return false; + } + + /* synchronous stage: check against the logged entries and + * proceed to check the next entries if no match was found + */ + for (i = 0; i < resync_async->loglen; i++) + if (req_seq == resync_async->log[i] && + atomic64_try_cmpxchg(&resync_async->req, &resync_req, 0)) { + *rcd_delta = resync_async->rcd_delta - i; + *seq = req_seq; + resync_async->loglen = 0; + resync_async->rcd_delta = 0; + return true; + } + + resync_async->loglen = 0; + resync_async->rcd_delta = 0; + + if (req_seq == *seq && + atomic64_try_cmpxchg(&resync_async->req, + &resync_req, 0)) + return true; + + return false; +} + void tls_device_rx_resync_new_rec(struct sock *sk, u32 rcd_len, u32 seq) { struct tls_context *tls_ctx = tls_get_ctx(sk); struct tls_offload_context_rx *rx_ctx; - bool is_req_pending, is_force_resync; u8 rcd_sn[TLS_MAX_REC_SEQ_SIZE]; + u32 sock_data, is_req_pending; struct tls_prot_info *prot; s64 resync_req; - u32 sock_data; + u16 rcd_delta; u32 req_seq; if (tls_ctx->rx_conf != TLS_HW) @@ -713,11 +771,9 @@ resync_req = atomic64_read(&rx_ctx->resync_req); req_seq = resync_req >> 32; seq += TLS_HEADER_SIZE - 1; - is_req_pending = resync_req & RESYNC_REQ; - is_force_resync = resync_req & RESYNC_REQ_FORCE; + is_req_pending = resync_req; - if (likely(!is_req_pending) || - (!is_force_resync && req_seq != seq) || + if (likely(!is_req_pending) || req_seq != seq || !atomic64_try_cmpxchg(&rx_ctx->resync_req, &resync_req, 0)) return; break; @@ -739,6 +795,17 @@ seq += rcd_len; tls_bigint_increment(rcd_sn, prot->rec_seq_size); break; + case TLS_OFFLOAD_SYNC_TYPE_DRIVER_REQ_ASYNC: + resync_req = atomic64_read(&rx_ctx->resync_async->req); + is_req_pending = resync_req; + if (likely(!is_req_pending)) + return; + + if (!tls_device_rx_resync_async(rx_ctx->resync_async, + resync_req, &seq, &rcd_delta)) + return; + tls_bigint_subtract(rcd_sn, rcd_delta); + break; } tls_device_resync_rx(tls_ctx, sk, seq, rcd_sn); @@ -1195,6 +1262,8 @@ if (tls_ctx->tx_conf != TLS_HW) { dev_put(netdev); tls_ctx->netdev = NULL; + } else { + set_bit(TLS_RX_DEV_CLOSED, &tls_ctx->flags); } out: up_read(&device_offload_lock); @@ -1224,7 +1293,8 @@ if (ctx->tx_conf == TLS_HW) netdev->tlsdev_ops->tls_dev_del(netdev, ctx, TLS_OFFLOAD_CTX_DIR_TX); - if (ctx->rx_conf == TLS_HW) + if (ctx->rx_conf == TLS_HW && + !test_bit(TLS_RX_DEV_CLOSED, &ctx->flags)) netdev->tlsdev_ops->tls_dev_del(netdev, ctx, TLS_OFFLOAD_CTX_DIR_RX); WRITE_ONCE(ctx->netdev, NULL); --- linux-5.8.0.orig/net/tls/tls_proc.c +++ linux-5.8.0/net/tls/tls_proc.c @@ -37,9 +37,12 @@ int __net_init tls_proc_init(struct net *net) { +#ifdef CONFIG_PROC_FS if (!proc_create_net_single("tls_stat", 0444, net->proc_net, tls_statistics_seq_show, NULL)) return -ENOMEM; +#endif /* CONFIG_PROC_FS */ + return 0; } --- linux-5.8.0.orig/net/tls/tls_sw.c +++ linux-5.8.0/net/tls/tls_sw.c @@ -1294,6 +1294,12 @@ return NULL; } + if (!skb_queue_empty(&sk->sk_receive_queue)) { + __strp_unpause(&ctx->strp); + if (ctx->recv_pkt) + return ctx->recv_pkt; + } + if (sk->sk_shutdown & RCV_SHUTDOWN) return NULL; @@ -1912,7 +1918,7 @@ * another message type */ msg->msg_flags |= MSG_EOR; - if (ctx->control != TLS_RECORD_TYPE_DATA) + if (control != TLS_RECORD_TYPE_DATA) goto recv_end; } else { break; @@ -2142,10 +2148,15 @@ struct tls_context *tls_ctx = tls_get_ctx(sk); struct tls_sw_context_tx *ctx = tls_sw_ctx_tx(tls_ctx); struct tls_rec *rec, *tmp; + int pending; /* Wait for any pending async encryptions to complete */ - smp_store_mb(ctx->async_notify, true); - if (atomic_read(&ctx->encrypt_pending)) + spin_lock_bh(&ctx->encrypt_compl_lock); + ctx->async_notify = true; + pending = atomic_read(&ctx->encrypt_pending); + spin_unlock_bh(&ctx->encrypt_compl_lock); + + if (pending) crypto_wait_req(-EINPROGRESS, &ctx->async_wait); tls_tx_records(sk, -1); --- linux-5.8.0.orig/net/unix/af_unix.c +++ linux-5.8.0/net/unix/af_unix.c @@ -138,17 +138,17 @@ #ifdef CONFIG_SECURITY_NETWORK static void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) { - UNIXCB(skb).secid = scm->secid; + UNIXCB(skb).lsmblob = scm->lsmblob; } static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) { - scm->secid = UNIXCB(skb).secid; + scm->lsmblob = UNIXCB(skb).lsmblob; } static inline bool unix_secdata_eq(struct scm_cookie *scm, struct sk_buff *skb) { - return (scm->secid == UNIXCB(skb).secid); + return lsmblob_equal(&scm->lsmblob, &(UNIXCB(skb).lsmblob)); } #else static inline void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) --- linux-5.8.0.orig/net/vmw_vsock/af_vsock.c +++ linux-5.8.0/net/vmw_vsock/af_vsock.c @@ -438,7 +438,7 @@ case SOCK_STREAM: if (vsock_use_local_transport(remote_cid)) new_transport = transport_local; - else if (remote_cid <= VMADDR_CID_HOST) + else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g) new_transport = transport_g2h; else new_transport = transport_h2g; @@ -738,8 +738,9 @@ vsk->buffer_size = psk->buffer_size; vsk->buffer_min_size = psk->buffer_min_size; vsk->buffer_max_size = psk->buffer_max_size; + security_sk_clone(parent, sk); } else { - vsk->trusted = capable(CAP_NET_ADMIN); + vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN); vsk->owner = get_current_cred(); vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE; @@ -926,10 +927,12 @@ */ sk = sock->sk; + + lock_sock(sk); if (sock->state == SS_UNCONNECTED) { err = -ENOTCONN; if (sk->sk_type == SOCK_STREAM) - return err; + goto out; } else { sock->state = SS_DISCONNECTING; err = 0; @@ -938,10 +941,8 @@ /* Receive and send shutdowns are treated alike. */ mode = mode & (RCV_SHUTDOWN | SEND_SHUTDOWN); if (mode) { - lock_sock(sk); sk->sk_shutdown |= mode; sk->sk_state_change(sk); - release_sock(sk); if (sk->sk_type == SOCK_STREAM) { sock_reset_flag(sk, SOCK_DONE); @@ -949,6 +950,8 @@ } } +out: + release_sock(sk); return err; } @@ -997,9 +1000,12 @@ mask |= EPOLLOUT | EPOLLWRNORM | EPOLLWRBAND; } else if (sock->type == SOCK_STREAM) { - const struct vsock_transport *transport = vsk->transport; + const struct vsock_transport *transport; + lock_sock(sk); + transport = vsk->transport; + /* Listening sockets that have connections in their accept * queue can be read. */ @@ -1032,7 +1038,7 @@ } /* Connected sockets that can produce data can be written. */ - if (sk->sk_state == TCP_ESTABLISHED) { + if (transport && sk->sk_state == TCP_ESTABLISHED) { if (!(sk->sk_shutdown & SEND_SHUTDOWN)) { bool space_avail_now = false; int ret = transport->notify_poll_out( @@ -1082,10 +1088,11 @@ err = 0; sk = sock->sk; vsk = vsock_sk(sk); - transport = vsk->transport; lock_sock(sk); + transport = vsk->transport; + err = vsock_auto_bind(vsk); if (err) goto out; @@ -1214,7 +1221,7 @@ { const struct vsock_transport *transport = vsk->transport; - if (!transport->cancel_pkt) + if (!transport || !transport->cancel_pkt) return -EOPNOTSUPP; return transport->cancel_pkt(vsk); @@ -1224,7 +1231,6 @@ { struct sock *sk; struct vsock_sock *vsk; - int cancel = 0; vsk = container_of(work, struct vsock_sock, connect_work.work); sk = sk_vsock(vsk); @@ -1235,11 +1241,9 @@ sk->sk_state = TCP_CLOSE; sk->sk_err = ETIMEDOUT; sk->sk_error_report(sk); - cancel = 1; + vsock_transport_cancel_pkt(vsk); } release_sock(sk); - if (cancel) - vsock_transport_cancel_pkt(vsk); sock_put(sk); } @@ -1546,10 +1550,11 @@ err = 0; sk = sock->sk; vsk = vsock_sk(sk); - transport = vsk->transport; lock_sock(sk); + transport = vsk->transport; + switch (optname) { case SO_VM_SOCKETS_BUFFER_SIZE: COPY_IN(val); @@ -1682,7 +1687,6 @@ sk = sock->sk; vsk = vsock_sk(sk); - transport = vsk->transport; total_written = 0; err = 0; @@ -1691,6 +1695,8 @@ lock_sock(sk); + transport = vsk->transport; + /* Callers should not provide a destination with stream sockets. */ if (msg->msg_namelen) { err = sk->sk_state == TCP_ESTABLISHED ? -EISCONN : -EOPNOTSUPP; @@ -1825,11 +1831,12 @@ sk = sock->sk; vsk = vsock_sk(sk); - transport = vsk->transport; err = 0; lock_sock(sk); + transport = vsk->transport; + if (!transport || sk->sk_state != TCP_ESTABLISHED) { /* Recvmsg is supposed to return 0 if a peer performs an * orderly shutdown. Differentiate between that case and when a --- linux-5.8.0.orig/net/vmw_vsock/hyperv_transport.c +++ linux-5.8.0/net/vmw_vsock/hyperv_transport.c @@ -474,14 +474,10 @@ static int hvs_shutdown(struct vsock_sock *vsk, int mode) { - struct sock *sk = sk_vsock(vsk); - if (!(mode & SEND_SHUTDOWN)) return 0; - lock_sock(sk); hvs_shutdown_lock_held(vsk->trans, mode); - release_sock(sk); return 0; } --- linux-5.8.0.orig/net/vmw_vsock/virtio_transport_common.c +++ linux-5.8.0/net/vmw_vsock/virtio_transport_common.c @@ -841,8 +841,10 @@ virtio_transport_free_pkt(pkt); } - if (remove_sock) + if (remove_sock) { + sock_set_flag(sk, SOCK_DONE); vsock_remove_sock(vsk); + } } EXPORT_SYMBOL_GPL(virtio_transport_release); @@ -1128,18 +1130,18 @@ vsk = vsock_sk(sk); - space_available = virtio_transport_space_update(sk, pkt); - lock_sock(sk); - /* Check if sk has been released before lock_sock */ - if (sk->sk_shutdown == SHUTDOWN_MASK) { + /* Check if sk has been closed before lock_sock */ + if (sock_flag(sk, SOCK_DONE)) { (void)virtio_transport_reset_no_sock(t, pkt); release_sock(sk); sock_put(sk); goto free_pkt; } + space_available = virtio_transport_space_update(sk, pkt); + /* Update CID in case it has changed after a transport reset event */ vsk->local_addr.svm_cid = dst.svm_cid; --- linux-5.8.0.orig/net/wireless/Kconfig +++ linux-5.8.0/net/wireless/Kconfig @@ -21,6 +21,7 @@ tristate "cfg80211 - wireless configuration API" depends on RFKILL || !RFKILL select FW_LOADER + select CRC32 # may need to update this when certificates are changed and are # using a different algorithm, though right now they shouldn't # (this is here rather than below to allow it to be a module) @@ -217,6 +218,7 @@ config LIB80211_CRYPT_CCMP tristate + select CRYPTO select CRYPTO_AES select CRYPTO_CCM --- linux-5.8.0.orig/net/wireless/chan.c +++ linux-5.8.0/net/wireless/chan.c @@ -10,6 +10,7 @@ */ #include +#include #include #include "core.h" #include "rdev-ops.h" @@ -892,6 +893,7 @@ struct ieee80211_sta_vht_cap *vht_cap; struct ieee80211_edmg *edmg_cap; u32 width, control_freq, cap; + bool support_80_80 = false; if (WARN_ON(!cfg80211_chandef_valid(chandef))) return false; @@ -944,9 +946,13 @@ return false; break; case NL80211_CHAN_WIDTH_80P80: - cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK; - if (chandef->chan->band != NL80211_BAND_6GHZ && - cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) + cap = vht_cap->cap; + support_80_80 = + (cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) || + (cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ && + cap & IEEE80211_VHT_CAP_EXT_NSS_BW_MASK) || + u32_get_bits(cap, IEEE80211_VHT_CAP_EXT_NSS_BW_MASK) > 1; + if (chandef->chan->band != NL80211_BAND_6GHZ && !support_80_80) return false; /* fall through */ case NL80211_CHAN_WIDTH_80: @@ -966,7 +972,8 @@ return false; cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK; if (cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ && - cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) + cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ && + !(vht_cap->cap & IEEE80211_VHT_CAP_EXT_NSS_BW_MASK)) return false; break; default: --- linux-5.8.0.orig/net/wireless/core.c +++ linux-5.8.0/net/wireless/core.c @@ -1247,8 +1247,7 @@ } EXPORT_SYMBOL(cfg80211_stop_iface); -void cfg80211_init_wdev(struct cfg80211_registered_device *rdev, - struct wireless_dev *wdev) +void cfg80211_init_wdev(struct wireless_dev *wdev) { mutex_init(&wdev->mtx); INIT_LIST_HEAD(&wdev->event_list); @@ -1259,6 +1258,30 @@ spin_lock_init(&wdev->pmsr_lock); INIT_WORK(&wdev->pmsr_free_wk, cfg80211_pmsr_free_wk); +#ifdef CONFIG_CFG80211_WEXT + wdev->wext.default_key = -1; + wdev->wext.default_mgmt_key = -1; + wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; +#endif + + if (wdev->wiphy->flags & WIPHY_FLAG_PS_ON_BY_DEFAULT) + wdev->ps = true; + else + wdev->ps = false; + /* allow mac80211 to determine the timeout */ + wdev->ps_timeout = -1; + + if ((wdev->iftype == NL80211_IFTYPE_STATION || + wdev->iftype == NL80211_IFTYPE_P2P_CLIENT || + wdev->iftype == NL80211_IFTYPE_ADHOC) && !wdev->use_4addr) + wdev->netdev->priv_flags |= IFF_DONT_BRIDGE; + + INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk); +} + +void cfg80211_register_wdev(struct cfg80211_registered_device *rdev, + struct wireless_dev *wdev) +{ /* * We get here also when the interface changes network namespaces, * as it's registered into the new one, but we don't want it to @@ -1292,6 +1315,11 @@ switch (state) { case NETDEV_POST_INIT: SET_NETDEV_DEVTYPE(dev, &wiphy_type); + wdev->netdev = dev; + /* can only change netns with wiphy */ + dev->features |= NETIF_F_NETNS_LOCAL; + + cfg80211_init_wdev(wdev); break; case NETDEV_REGISTER: /* @@ -1299,35 +1327,12 @@ * called within code protected by it when interfaces * are added with nl80211. */ - /* can only change netns with wiphy */ - dev->features |= NETIF_F_NETNS_LOCAL; - if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj, "phy80211")) { pr_err("failed to add phy80211 symlink to netdev!\n"); } - wdev->netdev = dev; -#ifdef CONFIG_CFG80211_WEXT - wdev->wext.default_key = -1; - wdev->wext.default_mgmt_key = -1; - wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; -#endif - - if (wdev->wiphy->flags & WIPHY_FLAG_PS_ON_BY_DEFAULT) - wdev->ps = true; - else - wdev->ps = false; - /* allow mac80211 to determine the timeout */ - wdev->ps_timeout = -1; - - if ((wdev->iftype == NL80211_IFTYPE_STATION || - wdev->iftype == NL80211_IFTYPE_P2P_CLIENT || - wdev->iftype == NL80211_IFTYPE_ADHOC) && !wdev->use_4addr) - dev->priv_flags |= IFF_DONT_BRIDGE; - - INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk); - cfg80211_init_wdev(rdev, wdev); + cfg80211_register_wdev(rdev, wdev); break; case NETDEV_GOING_DOWN: cfg80211_leave(rdev, wdev); --- linux-5.8.0.orig/net/wireless/core.h +++ linux-5.8.0/net/wireless/core.h @@ -208,8 +208,9 @@ int cfg80211_switch_netns(struct cfg80211_registered_device *rdev, struct net *net); -void cfg80211_init_wdev(struct cfg80211_registered_device *rdev, - struct wireless_dev *wdev); +void cfg80211_init_wdev(struct wireless_dev *wdev); +void cfg80211_register_wdev(struct cfg80211_registered_device *rdev, + struct wireless_dev *wdev); static inline void wdev_lock(struct wireless_dev *wdev) __acquires(wdev) @@ -431,6 +432,8 @@ /* internal helpers */ bool cfg80211_supported_cipher_suite(struct wiphy *wiphy, u32 cipher); +bool cfg80211_valid_key_idx(struct cfg80211_registered_device *rdev, + int key_idx, bool pairwise); int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, struct key_params *params, int key_idx, bool pairwise, const u8 *mac_addr); --- linux-5.8.0.orig/net/wireless/nl80211.c +++ linux-5.8.0/net/wireless/nl80211.c @@ -2355,7 +2355,10 @@ * case we'll continue with more data in the next round, * but break unconditionally so unsplit data stops here. */ - state->split_start++; + if (state->split) + state->split_start++; + else + state->split_start = 0; break; case 9: if (rdev->wiphy.extended_capabilities && @@ -3798,7 +3801,8 @@ * P2P Device and NAN do not have a netdev, so don't go * through the netdev notifier and must be added here */ - cfg80211_init_wdev(rdev, wdev); + cfg80211_init_wdev(wdev); + cfg80211_register_wdev(rdev, wdev); break; default: break; @@ -4187,6 +4191,10 @@ key.type != NL80211_KEYTYPE_GROUP) return -EINVAL; + if (!cfg80211_valid_key_idx(rdev, key.idx, + key.type == NL80211_KEYTYPE_PAIRWISE)) + return -EINVAL; + if (!rdev->ops->del_key) return -EOPNOTSUPP; @@ -4680,16 +4688,14 @@ if (err) return err; - if (!tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET] || - !tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]) - return -EINVAL; - - he_obss_pd->min_offset = - nla_get_u32(tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET]); - he_obss_pd->max_offset = - nla_get_u32(tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]); + if (tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET]) + he_obss_pd->min_offset = + nla_get_u8(tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET]); + if (tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]) + he_obss_pd->max_offset = + nla_get_u8(tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]); - if (he_obss_pd->min_offset >= he_obss_pd->max_offset) + if (he_obss_pd->min_offset > he_obss_pd->max_offset) return -EINVAL; he_obss_pd->enable = true; @@ -6010,7 +6016,7 @@ if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) params.he_6ghz_capa = - nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); + nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) params.airtime_weight = @@ -12338,7 +12344,7 @@ struct net_device *dev = info->user_ptr[1]; struct wireless_dev *wdev = dev->ieee80211_ptr; struct nlattr *tb[NUM_NL80211_REKEY_DATA]; - struct cfg80211_gtk_rekey_data rekey_data; + struct cfg80211_gtk_rekey_data rekey_data = {}; int err; if (!info->attrs[NL80211_ATTR_REKEY_DATA]) --- linux-5.8.0.orig/net/wireless/reg.c +++ linux-5.8.0/net/wireless/reg.c @@ -2944,6 +2944,9 @@ if (WARN_ON(!alpha2)) return -EINVAL; + if (!is_world_regdom(alpha2) && !is_an_alpha2(alpha2)) + return -EINVAL; + request = kzalloc(sizeof(struct regulatory_request), GFP_KERNEL); if (!request) return -ENOMEM; @@ -3406,7 +3409,7 @@ power_rule = ®_rule->power_rule; if (reg_rule->flags & NL80211_RRF_AUTO_BW) - snprintf(bw, sizeof(bw), "%d KHz, %d KHz AUTO", + snprintf(bw, sizeof(bw), "%d KHz, %u KHz AUTO", freq_range->max_bandwidth_khz, reg_get_max_bandwidth(rd, reg_rule)); else --- linux-5.8.0.orig/net/wireless/util.c +++ linux-5.8.0/net/wireless/util.c @@ -95,7 +95,7 @@ /* see 802.11ax D6.1 27.3.23.2 */ if (chan == 2) return MHZ_TO_KHZ(5935); - if (chan <= 253) + if (chan <= 233) return MHZ_TO_KHZ(5950 + chan * 5); break; case NL80211_BAND_60GHZ: @@ -121,11 +121,13 @@ return (freq - 2407) / 5; else if (freq >= 4910 && freq <= 4980) return (freq - 4000) / 5; - else if (freq < 5945) + else if (freq < 5925) return (freq - 5000) / 5; + else if (freq == 5935) + return 2; else if (freq <= 45000) /* DMG band lower limit */ - /* see 802.11ax D4.1 27.3.22.2 */ - return (freq - 5940) / 5; + /* see 802.11ax D6.1 27.3.22.2 */ + return (freq - 5950) / 5; else if (freq >= 58320 && freq <= 70200) return (freq - 56160) / 2160; else @@ -235,18 +237,53 @@ return false; } -int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, - struct key_params *params, int key_idx, - bool pairwise, const u8 *mac_addr) +static bool +cfg80211_igtk_cipher_supported(struct cfg80211_registered_device *rdev) +{ + struct wiphy *wiphy = &rdev->wiphy; + int i; + + for (i = 0; i < wiphy->n_cipher_suites; i++) { + switch (wiphy->cipher_suites[i]) { + case WLAN_CIPHER_SUITE_AES_CMAC: + case WLAN_CIPHER_SUITE_BIP_CMAC_256: + case WLAN_CIPHER_SUITE_BIP_GMAC_128: + case WLAN_CIPHER_SUITE_BIP_GMAC_256: + return true; + } + } + + return false; +} + +bool cfg80211_valid_key_idx(struct cfg80211_registered_device *rdev, + int key_idx, bool pairwise) { - int max_key_idx = 5; + int max_key_idx; - if (wiphy_ext_feature_isset(&rdev->wiphy, - NL80211_EXT_FEATURE_BEACON_PROTECTION) || - wiphy_ext_feature_isset(&rdev->wiphy, - NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT)) + if (pairwise) + max_key_idx = 3; + else if (wiphy_ext_feature_isset(&rdev->wiphy, + NL80211_EXT_FEATURE_BEACON_PROTECTION) || + wiphy_ext_feature_isset(&rdev->wiphy, + NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT)) max_key_idx = 7; + else if (cfg80211_igtk_cipher_supported(rdev)) + max_key_idx = 5; + else + max_key_idx = 3; + if (key_idx < 0 || key_idx > max_key_idx) + return false; + + return true; +} + +int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, + struct key_params *params, int key_idx, + bool pairwise, const u8 *mac_addr) +{ + if (!cfg80211_valid_key_idx(rdev, key_idx, pairwise)) return -EINVAL; if (!pairwise && mac_addr && !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) --- linux-5.8.0.orig/net/wireless/wext-core.c +++ linux-5.8.0/net/wireless/wext-core.c @@ -896,8 +896,9 @@ int call_commit_handler(struct net_device *dev) { #ifdef CONFIG_WIRELESS_EXT - if ((netif_running(dev)) && - (dev->wireless_handlers->standard[0] != NULL)) + if (netif_running(dev) && + dev->wireless_handlers && + dev->wireless_handlers->standard[0]) /* Call the commit handler on the driver */ return dev->wireless_handlers->standard[0](dev, NULL, NULL, NULL); --- linux-5.8.0.orig/net/x25/af_x25.c +++ linux-5.8.0/net/x25/af_x25.c @@ -681,7 +681,8 @@ int len, i, rc = 0; if (addr_len != sizeof(struct sockaddr_x25) || - addr->sx25_family != AF_X25) { + addr->sx25_family != AF_X25 || + strnlen(addr->sx25_addr.x25_addr, X25_ADDR_LEN) == X25_ADDR_LEN) { rc = -EINVAL; goto out; } @@ -775,7 +776,8 @@ rc = -EINVAL; if (addr_len != sizeof(struct sockaddr_x25) || - addr->sx25_family != AF_X25) + addr->sx25_family != AF_X25 || + strnlen(addr->sx25_addr.x25_addr, X25_ADDR_LEN) == X25_ADDR_LEN) goto out; rc = -ENETUNREACH; @@ -825,7 +827,7 @@ sock->state = SS_CONNECTED; rc = 0; out_put_neigh: - if (rc) { + if (rc && x25->neighbour) { read_lock_bh(&x25_list_lock); x25_neigh_put(x25->neighbour); x25->neighbour = NULL; @@ -1050,6 +1052,7 @@ makex25->lci = lci; makex25->dest_addr = dest_addr; makex25->source_addr = source_addr; + x25_neigh_hold(nb); makex25->neighbour = nb; makex25->facilities = facilities; makex25->dte_facilities= dte_facilities; --- linux-5.8.0.orig/net/xdp/xdp_umem.c +++ linux-5.8.0/net/xdp/xdp_umem.c @@ -303,10 +303,10 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr) { + u32 npgs_rem, chunk_size = mr->chunk_size, headroom = mr->headroom; bool unaligned_chunks = mr->flags & XDP_UMEM_UNALIGNED_CHUNK_FLAG; - u32 chunk_size = mr->chunk_size, headroom = mr->headroom; u64 npgs, addr = mr->addr, size = mr->len; - unsigned int chunks, chunks_per_page; + unsigned int chunks, chunks_rem; int err; if (chunk_size < XDP_UMEM_MIN_CHUNK_SIZE || chunk_size > PAGE_SIZE) { @@ -336,19 +336,18 @@ if ((addr + size) < addr) return -EINVAL; - npgs = size >> PAGE_SHIFT; + npgs = div_u64_rem(size, PAGE_SIZE, &npgs_rem); + if (npgs_rem) + npgs++; if (npgs > U32_MAX) return -EINVAL; - chunks = (unsigned int)div_u64(size, chunk_size); + chunks = (unsigned int)div_u64_rem(size, chunk_size, &chunks_rem); if (chunks == 0) return -EINVAL; - if (!unaligned_chunks) { - chunks_per_page = PAGE_SIZE / chunk_size; - if (chunks < chunks_per_page || chunks % chunks_per_page) - return -EINVAL; - } + if (!unaligned_chunks && chunks_rem) + return -EINVAL; if (headroom >= chunk_size - XDP_PACKET_HEADROOM) return -EINVAL; --- linux-5.8.0.orig/net/xdp/xsk.c +++ linux-5.8.0/net/xdp/xsk.c @@ -375,10 +375,19 @@ skb_shinfo(skb)->destructor_arg = (void *)(long)desc.addr; skb->destructor = xsk_destruct_skb; - err = dev_direct_xmit(skb, xs->queue_id); + err = __dev_direct_xmit(skb, xs->queue_id); + if (err == NETDEV_TX_BUSY) { + /* Tell user-space to retry the send */ + skb->destructor = sock_wfree; + /* Free skb without triggering the perf drop trace */ + consume_skb(skb); + err = -EAGAIN; + goto out; + } + xskq_cons_release(xs->tx); /* Ignore NET_XMIT_CN as packet might have been sent */ - if (err == NET_XMIT_DROP || err == NETDEV_TX_BUSY) { + if (err == NET_XMIT_DROP) { /* SKB completed but not sent */ err = -EBUSY; goto out; @@ -424,11 +433,13 @@ static __poll_t xsk_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait) { - __poll_t mask = datagram_poll(file, sock, wait); + __poll_t mask = 0; struct sock *sk = sock->sk; struct xdp_sock *xs = xdp_sk(sk); struct xdp_umem *umem; + sock_poll_wait(file, sock, wait); + if (unlikely(!xsk_is_bound(xs))) return mask; --- linux-5.8.0.orig/net/xfrm/espintcp.c +++ linux-5.8.0/net/xfrm/espintcp.c @@ -29,8 +29,12 @@ static void handle_esp(struct sk_buff *skb, struct sock *sk) { + struct tcp_skb_cb *tcp_cb = (struct tcp_skb_cb *)skb->cb; + skb_reset_transport_header(skb); - memset(skb->cb, 0, sizeof(skb->cb)); + + /* restore IP CB, we need at least IP6CB->nhoff */ + memmove(skb->cb, &tcp_cb->header, sizeof(tcp_cb->header)); rcu_read_lock(); skb->dev = dev_get_by_index_rcu(sock_net(sk), skb->skb_iif); --- linux-5.8.0.orig/net/xfrm/xfrm_input.c +++ linux-5.8.0/net/xfrm/xfrm_input.c @@ -658,7 +658,7 @@ /* only the first xfrm gets the encap type */ encap_type = 0; - if (async && x->repl->recheck(x, skb, seq)) { + if (x->repl->recheck(x, skb, seq)) { XFRM_INC_STATS(net, LINUX_MIB_XFRMINSTATESEQERROR); goto drop_unlock; } --- linux-5.8.0.orig/net/xfrm/xfrm_interface.c +++ linux-5.8.0/net/xfrm/xfrm_interface.c @@ -292,7 +292,7 @@ } mtu = dst_mtu(dst); - if (!skb->ignore_df && skb->len > mtu) { + if (skb->len > mtu) { skb_dst_update_pmtu_no_confirm(skb, mtu); if (skb->protocol == htons(ETH_P_IPV6)) { --- linux-5.8.0.orig/net/xfrm/xfrm_policy.c +++ linux-5.8.0/net/xfrm/xfrm_policy.c @@ -793,15 +793,22 @@ const xfrm_address_t *b, u8 prefixlen, u16 family) { + u32 ma, mb, mask; unsigned int pdw, pbi; int delta = 0; switch (family) { case AF_INET: - if (sizeof(long) == 4 && prefixlen == 0) - return ntohl(a->a4) - ntohl(b->a4); - return (ntohl(a->a4) & ((~0UL << (32 - prefixlen)))) - - (ntohl(b->a4) & ((~0UL << (32 - prefixlen)))); + if (prefixlen == 0) + return 0; + mask = ~0U << (32 - prefixlen); + ma = ntohl(a->a4) & mask; + mb = ntohl(b->a4) & mask; + if (ma < mb) + delta = -1; + else if (ma > mb) + delta = 1; + break; case AF_INET6: pdw = prefixlen >> 5; pbi = prefixlen & 0x1f; @@ -812,10 +819,13 @@ return delta; } if (pbi) { - u32 mask = ~0u << (32 - pbi); - - delta = (ntohl(a->a6[pdw]) & mask) - - (ntohl(b->a6[pdw]) & mask); + mask = ~0U << (32 - pbi); + ma = ntohl(a->a6[pdw]) & mask; + mb = ntohl(b->a6[pdw]) & mask; + if (ma < mb) + delta = -1; + else if (ma > mb) + delta = 1; } break; default: @@ -3067,8 +3077,8 @@ xflo.flags = flags; /* To accelerate a bit... */ - if ((dst_orig->flags & DST_NOXFRM) || - !net->xfrm.policy_count[XFRM_POLICY_OUT]) + if (!if_id && ((dst_orig->flags & DST_NOXFRM) || + !net->xfrm.policy_count[XFRM_POLICY_OUT])) goto nopol; xdst = xfrm_bundle_lookup(net, fl, family, dir, &xflo, if_id); --- linux-5.8.0.orig/net/xfrm/xfrm_state.c +++ linux-5.8.0/net/xfrm/xfrm_state.c @@ -1019,7 +1019,8 @@ */ if (x->km.state == XFRM_STATE_VALID) { if ((x->sel.family && - !xfrm_selector_match(&x->sel, fl, x->sel.family)) || + (x->sel.family != family || + !xfrm_selector_match(&x->sel, fl, family))) || !security_xfrm_state_pol_flow_match(x, pol, fl)) return; @@ -1032,7 +1033,9 @@ *acq_in_progress = 1; } else if (x->km.state == XFRM_STATE_ERROR || x->km.state == XFRM_STATE_EXPIRED) { - if (xfrm_selector_match(&x->sel, fl, x->sel.family) && + if ((!x->sel.family || + (x->sel.family == family && + xfrm_selector_match(&x->sel, fl, family))) && security_xfrm_state_pol_flow_match(x, pol, fl)) *error = -ESRCH; } @@ -1072,7 +1075,7 @@ tmpl->mode == x->props.mode && tmpl->id.proto == x->id.proto && (tmpl->id.spi == x->id.spi || !tmpl->id.spi)) - xfrm_state_look_at(pol, x, fl, encap_family, + xfrm_state_look_at(pol, x, fl, family, &best, &acquire_in_progress, &error); } if (best || acquire_in_progress) @@ -1089,7 +1092,7 @@ tmpl->mode == x->props.mode && tmpl->id.proto == x->id.proto && (tmpl->id.spi == x->id.spi || !tmpl->id.spi)) - xfrm_state_look_at(pol, x, fl, encap_family, + xfrm_state_look_at(pol, x, fl, family, &best, &acquire_in_progress, &error); } @@ -1441,6 +1444,30 @@ EXPORT_SYMBOL(xfrm_state_add); #ifdef CONFIG_XFRM_MIGRATE +static inline int clone_security(struct xfrm_state *x, struct xfrm_sec_ctx *security) +{ + struct xfrm_user_sec_ctx *uctx; + int size = sizeof(*uctx) + security->ctx_len; + int err; + + uctx = kmalloc(size, GFP_KERNEL); + if (!uctx) + return -ENOMEM; + + uctx->exttype = XFRMA_SEC_CTX; + uctx->len = size; + uctx->ctx_doi = security->ctx_doi; + uctx->ctx_alg = security->ctx_alg; + uctx->ctx_len = security->ctx_len; + memcpy(uctx + 1, security->ctx_str, security->ctx_len); + err = security_xfrm_state_alloc(x, uctx); + kfree(uctx); + if (err) + return err; + + return 0; +} + static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, struct xfrm_encap_tmpl *encap) { @@ -1497,6 +1524,10 @@ goto error; } + if (orig->security) + if (clone_security(x, orig->security)) + goto error; + if (orig->coaddr) { x->coaddr = kmemdup(orig->coaddr, sizeof(*x->coaddr), GFP_KERNEL); @@ -1510,6 +1541,7 @@ } memcpy(&x->mark, &orig->mark, sizeof(x->mark)); + memcpy(&x->props.smark, &orig->props.smark, sizeof(x->props.smark)); if (xfrm_init_state(x) < 0) goto error; @@ -1521,7 +1553,7 @@ x->tfcpad = orig->tfcpad; x->replay_maxdiff = orig->replay_maxdiff; x->replay_maxage = orig->replay_maxage; - x->curlft.add_time = orig->curlft.add_time; + memcpy(&x->curlft, &orig->curlft, sizeof(x->curlft)); x->km.state = orig->km.state; x->km.seq = orig->km.seq; x->replay = orig->replay; @@ -1972,6 +2004,7 @@ int err = -ENOENT; __be32 minspi = htonl(low); __be32 maxspi = htonl(high); + __be32 newspi = 0; u32 mark = x->mark.v & x->mark.m; spin_lock_bh(&x->lock); @@ -1990,21 +2023,22 @@ xfrm_state_put(x0); goto unlock; } - x->id.spi = minspi; + newspi = minspi; } else { u32 spi = 0; for (h = 0; h < high-low+1; h++) { spi = low + prandom_u32()%(high-low+1); x0 = xfrm_state_lookup(net, mark, &x->id.daddr, htonl(spi), x->id.proto, x->props.family); if (x0 == NULL) { - x->id.spi = htonl(spi); + newspi = htonl(spi); break; } xfrm_state_put(x0); } } - if (x->id.spi) { + if (newspi) { spin_lock_bh(&net->xfrm.xfrm_state_lock); + x->id.spi = newspi; h = xfrm_spi_hash(net, &x->id.daddr, x->id.spi, x->id.proto, x->props.family); hlist_add_head_rcu(&x->byspi, net->xfrm.state_byspi + h); spin_unlock_bh(&net->xfrm.xfrm_state_lock); --- linux-5.8.0.orig/samples/Kconfig +++ linux-5.8.0/samples/Kconfig @@ -210,7 +210,7 @@ depends on CC_CAN_LINK config SAMPLE_WATCH_QUEUE - bool "Build example /dev/watch_queue notification consumer" + bool "Build example watch_queue notification API consumer" depends on CC_CAN_LINK && HEADERS_INSTALL help Build example userspace program to use the new mount_notify(), --- linux-5.8.0.orig/samples/bpf/fds_example.c +++ linux-5.8.0/samples/bpf/fds_example.c @@ -30,6 +30,8 @@ #define BPF_M_MAP 1 #define BPF_M_PROG 2 +char bpf_log_buf[BPF_LOG_BUF_SIZE]; + static void usage(void) { printf("Usage: fds_example [...]\n"); @@ -57,7 +59,6 @@ BPF_EXIT_INSN(), }; size_t insns_cnt = sizeof(insns) / sizeof(struct bpf_insn); - char bpf_log_buf[BPF_LOG_BUF_SIZE]; struct bpf_object *obj; int prog_fd; --- linux-5.8.0.orig/samples/bpf/lwt_len_hist.sh +++ linux-5.8.0/samples/bpf/lwt_len_hist.sh @@ -8,6 +8,8 @@ TRACE_ROOT=/sys/kernel/debug/tracing function cleanup { + # To reset saved histogram, remove pinned map + rm /sys/fs/bpf/tc/globals/lwt_len_hist_map ip route del 192.168.253.2/32 dev $VETH0 2> /dev/null ip link del $VETH0 2> /dev/null ip link del $VETH1 2> /dev/null --- linux-5.8.0.orig/samples/bpf/map_perf_test_kern.c +++ linux-5.8.0/samples/bpf/map_perf_test_kern.c @@ -11,6 +11,8 @@ #include #include "bpf_legacy.h" #include +#include +#include "trace_common.h" #define MAX_ENTRIES 1000 #define MAX_NR_CPUS 1024 @@ -154,9 +156,10 @@ return 0; } -SEC("kprobe/sys_connect") +SEC("kprobe/" SYSCALL(sys_connect)) int stress_lru_hmap_alloc(struct pt_regs *ctx) { + struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1_CORE(ctx); char fmt[] = "Failed at stress_lru_hmap_alloc. ret:%dn"; union { u16 dst6[8]; @@ -175,8 +178,8 @@ long val = 1; u32 key = 0; - in6 = (struct sockaddr_in6 *)PT_REGS_PARM2(ctx); - addrlen = (int)PT_REGS_PARM3(ctx); + in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(real_regs); + addrlen = (int)PT_REGS_PARM3_CORE(real_regs); if (addrlen != sizeof(*in6)) return 0; --- linux-5.8.0.orig/samples/bpf/test_map_in_map_kern.c +++ linux-5.8.0/samples/bpf/test_map_in_map_kern.c @@ -13,6 +13,8 @@ #include #include "bpf_legacy.h" #include +#include +#include "trace_common.h" #define MAX_NR_PORTS 65536 @@ -102,9 +104,10 @@ return result ? *result : -ENOENT; } -SEC("kprobe/sys_connect") +SEC("kprobe/" SYSCALL(sys_connect)) int trace_sys_connect(struct pt_regs *ctx) { + struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1_CORE(ctx); struct sockaddr_in6 *in6; u16 test_case, port, dst6[8]; int addrlen, ret, inline_ret, ret_key = 0; @@ -112,8 +115,8 @@ void *outer_map, *inner_map; bool inline_hash = false; - in6 = (struct sockaddr_in6 *)PT_REGS_PARM2(ctx); - addrlen = (int)PT_REGS_PARM3(ctx); + in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(real_regs); + addrlen = (int)PT_REGS_PARM3_CORE(real_regs); if (addrlen != sizeof(*in6)) return 0; --- linux-5.8.0.orig/samples/bpf/test_probe_write_user_kern.c +++ linux-5.8.0/samples/bpf/test_probe_write_user_kern.c @@ -10,6 +10,8 @@ #include #include #include +#include +#include "trace_common.h" struct bpf_map_def SEC("maps") dnat_map = { .type = BPF_MAP_TYPE_HASH, @@ -26,13 +28,14 @@ * This example sits on a syscall, and the syscall ABI is relatively stable * of course, across platforms, and over time, the ABI may change. */ -SEC("kprobe/sys_connect") +SEC("kprobe/" SYSCALL(sys_connect)) int bpf_prog1(struct pt_regs *ctx) { + struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1_CORE(ctx); + void *sockaddr_arg = (void *)PT_REGS_PARM2_CORE(real_regs); + int sockaddr_len = (int)PT_REGS_PARM3_CORE(real_regs); struct sockaddr_in new_addr, orig_addr = {}; struct sockaddr_in *mapped_addr; - void *sockaddr_arg = (void *)PT_REGS_PARM2(ctx); - int sockaddr_len = (int)PT_REGS_PARM3(ctx); if (sockaddr_len > sizeof(orig_addr)) return 0; --- linux-5.8.0.orig/samples/bpf/xdpsock_user.c +++ linux-5.8.0/samples/bpf/xdpsock_user.c @@ -921,7 +921,7 @@ } } -static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb, int batch_size) +static void tx_only(struct xsk_socket_info *xsk, u32 *frame_nb, int batch_size) { u32 idx; unsigned int i; @@ -929,19 +929,21 @@ while (xsk_ring_prod__reserve(&xsk->tx, batch_size, &idx) < batch_size) { complete_tx_only(xsk, batch_size); + if (benchmark_done) + return; } for (i = 0; i < batch_size; i++) { struct xdp_desc *tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx + i); - tx_desc->addr = (frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT; + tx_desc->addr = (*frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT; tx_desc->len = PKT_SIZE; } xsk_ring_prod__submit(&xsk->tx, batch_size); xsk->outstanding_tx += batch_size; - frame_nb += batch_size; - frame_nb %= NUM_FRAMES; + *frame_nb += batch_size; + *frame_nb %= NUM_FRAMES; complete_tx_only(xsk, batch_size); } @@ -997,7 +999,7 @@ } for (i = 0; i < num_socks; i++) - tx_only(xsks[i], frame_nb[i], batch_size); + tx_only(xsks[i], &frame_nb[i], batch_size); pkt_cnt += batch_size; @@ -1028,6 +1030,7 @@ while (ret != rcvd) { if (ret < 0) exit_with_error(-ret); + complete_tx_l2fwd(xsk, fds); if (xsk_ring_prod__needs_wakeup(&xsk->tx)) kick_tx(xsk); ret = xsk_ring_prod__reserve(&xsk->tx, rcvd, &idx_tx); @@ -1208,5 +1211,7 @@ xdpsock_cleanup(); + munmap(bufs, NUM_FRAMES * opt_xsk_frame_size); + return 0; } --- linux-5.8.0.orig/samples/ftrace/ftrace-direct-modify.c +++ linux-5.8.0/samples/ftrace/ftrace-direct-modify.c @@ -21,6 +21,7 @@ asm ( " .pushsection .text, \"ax\", @progbits\n" " .type my_tramp1, @function\n" +" .globl my_tramp1\n" " my_tramp1:" " pushq %rbp\n" " movq %rsp, %rbp\n" @@ -29,6 +30,7 @@ " .size my_tramp1, .-my_tramp1\n" " ret\n" " .type my_tramp2, @function\n" +" .globl my_tramp2\n" " my_tramp2:" " pushq %rbp\n" " movq %rsp, %rbp\n" --- linux-5.8.0.orig/samples/ftrace/ftrace-direct-too.c +++ linux-5.8.0/samples/ftrace/ftrace-direct-too.c @@ -16,6 +16,7 @@ asm ( " .pushsection .text, \"ax\", @progbits\n" " .type my_tramp, @function\n" +" .globl my_tramp\n" " my_tramp:" " pushq %rbp\n" " movq %rsp, %rbp\n" --- linux-5.8.0.orig/samples/ftrace/ftrace-direct.c +++ linux-5.8.0/samples/ftrace/ftrace-direct.c @@ -14,6 +14,7 @@ asm ( " .pushsection .text, \"ax\", @progbits\n" " .type my_tramp, @function\n" +" .globl my_tramp\n" " my_tramp:" " pushq %rbp\n" " movq %rsp, %rbp\n" --- linux-5.8.0.orig/samples/mic/mpssd/mpssd.c +++ linux-5.8.0/samples/mic/mpssd/mpssd.c @@ -403,9 +403,9 @@ static inline unsigned _vring_size(unsigned int num, unsigned long align) { - return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (3 + num) + return _ALIGN_UP(((sizeof(struct vring_desc) * num + sizeof(__u16) * (3 + num) + align - 1) & ~(align - 1)) - + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; + + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num, 4); } /* --- linux-5.8.0.orig/samples/watch_queue/watch_test.c +++ linux-5.8.0/samples/watch_queue/watch_test.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 -/* Use /dev/watch_queue to watch for notifications. +/* Use watch_queue API to watch for notifications. * * Copyright (C) 2020 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) --- linux-5.8.0.orig/scripts/Makefile +++ linux-5.8.0/scripts/Makefile @@ -3,6 +3,9 @@ # scripts contains sources for various helper programs used throughout # the kernel for the build process. +CRYPTO_LIBS = $(shell pkg-config --libs libcrypto 2> /dev/null || echo -lcrypto) +CRYPTO_CFLAGS = $(shell pkg-config --cflags libcrypto 2> /dev/null) + always-$(CONFIG_BUILD_BIN2C) += bin2c always-$(CONFIG_KALLSYMS) += kallsyms always-$(BUILD_C_RECORDMCOUNT) += recordmcount @@ -14,8 +17,10 @@ HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include -HOSTLDLIBS_sign-file = -lcrypto -HOSTLDLIBS_extract-cert = -lcrypto +HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS) +HOSTLDLIBS_sign-file = $(CRYPTO_LIBS) +HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS) +HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) ifdef CONFIG_UNWINDER_ORC ifeq ($(ARCH),x86_64) --- linux-5.8.0.orig/scripts/Makefile.build +++ linux-5.8.0/scripts/Makefile.build @@ -249,6 +249,15 @@ ifdef CONFIG_TRIM_UNUSED_KSYMS cmd_gen_ksymdeps = \ $(CONFIG_SHELL) $(srctree)/scripts/gen_ksymdeps.sh $@ >> $(dot-target).cmd + +# List module undefined symbols +undefined_syms = $(NM) $< | $(AWK) '$$1 == "U" { printf("%s%s", x++ ? " " : "", $$2) }'; +endif + +ifdef CONFIG_RETPOLINE +cmd_ubuntu_retpoline = $(CONFIG_SHELL) $(srctree)/scripts/ubuntu-retpoline-extract-one $(@) $(<) "$(filter -m16 %code16gcc.h,$(a_flags))"; +else +cmd_ubuntu_retpoline = endif define rule_cc_o_c @@ -258,6 +267,7 @@ $(call cmd,checkdoc) $(call cmd,objtool) $(call cmd,modversions_c) + $(call cmd,ubuntu-retpoline) $(call cmd,record_mcount) endef @@ -266,23 +276,18 @@ $(call cmd,gen_ksymdeps) $(call cmd,objtool) $(call cmd,modversions_S) + $(call cmd,ubuntu-retpoline) endef -# List module undefined symbols (or empty line if not enabled) -ifdef CONFIG_TRIM_UNUSED_KSYMS -cmd_undef_syms = $(NM) $< | sed -n 's/^ *U //p' | xargs echo -else -cmd_undef_syms = echo -endif - # Built-in and composite module parts $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE $(call cmd,force_checksrc) + $(call cmd,force_check_kmsg) $(call if_changed_rule,cc_o_c) cmd_mod = { \ echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \ - $(cmd_undef_syms); \ + $(undefined_syms) echo; \ } > $@ $(obj)/%.mod: $(obj)/%.o FORCE @@ -489,6 +494,19 @@ endif +# kmsg check tool +ifneq ($(KBUILD_KMSG_CHECK),0) + ifeq ($(KBUILD_KMSG_CHECK),2) + kmsg_cmd := print + quiet_cmd_force_check_kmsg = KMSG_PRINT $< + $(shell [ -d $(objtree)/man ] || mkdir -p $(objtree)/man) + else + kmsg_cmd := check + quiet_cmd_force_check_kmsg = KMSG_CHECK $< + endif + cmd_force_check_kmsg = $(KMSG_CHECK) $(kmsg_cmd) $(CC) $(c_flags) $< ; +endif + # Descending # --------------------------------------------------------------------------- --- linux-5.8.0.orig/scripts/Makefile.modinst +++ linux-5.8.0/scripts/Makefile.modinst @@ -20,8 +20,12 @@ mkdir -p $(2) ; \ cp $@ $(2) ; \ $(mod_strip_cmd) $(2)/$(notdir $@) ; \ - $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \ - $(mod_compress_cmd) $(2)/$(notdir $@) + if (echo "$(2)/$(notdir $@)" | egrep -q "\/drivers\/staging\/") && \ + [ -f $(srctree)/drivers/staging/signature-inclusion ] && \ + (! egrep -x "$(notdir $@)" $(srctree)/drivers/staging/signature-inclusion) ; \ + then echo Not signing "$(2)/$(notdir $@)"; \ + else $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \ + $(mod_compress_cmd) $(2)/$(notdir $@); fi # Modules built outside the kernel source tree go into extra by default INSTALL_MOD_DIR ?= extra --- linux-5.8.0.orig/scripts/checkpatch.pl +++ linux-5.8.0/scripts/checkpatch.pl @@ -2636,8 +2636,8 @@ # Check if the commit log has what seems like a diff which can confuse patch if ($in_commit_log && !$commit_log_has_diff && - (($line =~ m@^\s+diff\b.*a/[\w/]+@ && - $line =~ m@^\s+diff\b.*a/([\w/]+)\s+b/$1\b@) || + (($line =~ m@^\s+diff\b.*a/([\w/]+)@ && + $line =~ m@^\s+diff\b.*a/[\w/]+\s+b/$1\b@) || $line =~ m@^\s*(?:\-\-\-\s+a/|\+\+\+\s+b/)@ || $line =~ m/^\s*\@\@ \-\d+,\d+ \+\d+,\d+ \@\@/)) { ERROR("DIFF_IN_COMMIT_MSG", @@ -4265,7 +4265,7 @@ $fix) { fix_delete_line($fixlinenr, $rawline); my $fixed_line = $rawline; - $fixed_line =~ /(^..*$Type\s*$Ident\(.*\)\s*){(.*)$/; + $fixed_line =~ /(^..*$Type\s*$Ident\(.*\)\s*)\{(.*)$/; my $line1 = $1; my $line2 = $2; fix_insert_line($fixlinenr, ltrim($line1)); --- linux-5.8.0.orig/scripts/coccinelle/misc/add_namespace.cocci +++ linux-5.8.0/scripts/coccinelle/misc/add_namespace.cocci @@ -6,6 +6,7 @@ /// add a missing namespace tag to a module source file. /// +virtual nsdeps virtual report @has_ns_import@ @@ -16,10 +17,15 @@ // Add missing imports, but only adjacent to a MODULE_LICENSE statement. // That ensures we are adding it only to the main module source file. -@do_import depends on !has_ns_import@ +@do_import depends on !has_ns_import && nsdeps@ declarer name MODULE_LICENSE; expression license; identifier virtual.ns; @@ MODULE_LICENSE(license); + MODULE_IMPORT_NS(ns); + +// Dummy rule for report mode that would otherwise be empty and make spatch +// fail ("No rules apply.") +@script:python depends on report@ +@@ --- linux-5.8.0.orig/scripts/depmod.sh +++ linux-5.8.0/scripts/depmod.sh @@ -15,6 +15,8 @@ exit 0 fi +# legacy behavior: "depmod" in /sbin, no /sbin in PATH +PATH="$PATH:/sbin" if [ -z $(command -v $DEPMOD) ]; then echo "Warning: 'make modules_install' requires $DEPMOD. Please install it." >&2 echo "This is probably in the kmod package." >&2 --- linux-5.8.0.orig/scripts/dtc/Makefile +++ linux-5.8.0/scripts/dtc/Makefile @@ -10,7 +10,7 @@ dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o # Source files need to get at the userspace version of libfdt_env.h to compile -HOST_EXTRACFLAGS := -I $(srctree)/$(src)/libfdt +HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt ifeq ($(shell pkg-config --exists yaml-0.1 2>/dev/null && echo yes),) ifneq ($(CHECK_DT_BINDING)$(CHECK_DTBS),) --- linux-5.8.0.orig/scripts/dummy-tools/gcc +++ linux-5.8.0/scripts/dummy-tools/gcc @@ -89,3 +89,8 @@ echo $plugin_dir exit 0 fi + +# inverted return value +if arg_contain -D__SIZEOF_INT128__=0 "$@"; then + exit 1 +fi --- linux-5.8.0.orig/scripts/gen_autoksyms.sh +++ linux-5.8.0/scripts/gen_autoksyms.sh @@ -43,6 +43,9 @@ sed 's/ko$/mod/' $modlist | xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- | cat - "$ksym_wl" | +# Remove the dot prefix for ppc64; symbol names with a dot (.) hold entry +# point addresses. +sed -e 's/^\.//' | sort -u | sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$output_file" --- linux-5.8.0.orig/scripts/insert-sys-cert.c +++ linux-5.8.0/scripts/insert-sys-cert.c @@ -7,7 +7,8 @@ * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * - * Usage: insert-sys-cert [-s -b -c + * Usage: insert-sys-cert [-s ] -b -c + * [-s ] -z -c */ #define _GNU_SOURCE @@ -257,6 +258,169 @@ return buf; } +static void get_payload_info(char *bzimage, int *offset, int *size) +{ + unsigned int system_offset; + unsigned char setup_sectors; + + setup_sectors = bzimage[0x1f1] + 1; + system_offset = setup_sectors * 512; + *offset = system_offset + *((int*)&bzimage[0x248]); + *size = *((int*)&bzimage[0x24c]); +} + +static void update_payload_info(char* bzimage, int new_size) +{ + int offset, size; + get_payload_info(bzimage, &offset, &size); + *((int*)&bzimage[0x24c]) = new_size; + if (new_size < size) + memset(bzimage + offset + new_size, 0, size - new_size); +} + +struct zipper { + unsigned char pattern[10]; + int length; + char *command; + char *compress; +}; + +struct zipper zippers[] = { + {{0x7F,'E','L','F'}, 4, "cat", "cat"}, + {{0x1F,0x8B}, 2, "gunzip", "gzip -n -f -9"}, + {{0xFD,'7','z','X','Z',0}, 6, "unxz", "xz"}, + {{'B','Z','h'},3, "bunzip2", "bzip2 -9"}, + {{0xFF,'L','Z','M','A',0}, 6, "unlzma", "lzma -9"}, + {{0xD3,'L','Z','O',0,'\r','\n',0x20,'\n'}, 9, "lzop -d", "lzop -9"} +}; + +static struct zipper* get_zipper(char *p) { + int i; + for (i = 0; i < sizeof(zippers)/sizeof(struct zipper); i++) { + if (memcmp(p, zippers[i].pattern, zippers[i].length) == 0) + return &zippers[i]; + } + return NULL; +} + +/* + * This only works for x86 bzImage + */ +static void extract_vmlinux(char *bzimage, int bzimage_size, + char **file, struct zipper **zipper) +{ + int r; + char src[15] = "vmlinux-XXXXXX"; + char dest[15] = "vmlinux-XXXXXX"; + char cmd[100]; + int src_fd, dest_fd; + int offset, size; + struct zipper *z; + + /* TODO: verify that bzImage is supported */ + + get_payload_info(bzimage, &offset, &size); + z = get_zipper(bzimage + offset); + if (z == NULL) { + err("Unable to determine the compression of vmlinux\n"); + return; + } + + src_fd = mkstemp(src); + if (src_fd == -1) { + perror("Could not create temp file"); + return; + } + + r = write(src_fd, bzimage + offset, size); + if (r != size) { + perror("Could not write vmlinux"); + return; + } + dest_fd = mkstemp(dest); + if (dest_fd == -1) { + perror("Could not create temp file"); + return; + } + + snprintf(cmd, sizeof(cmd), "%s <%s >%s", z->command, src, dest); + info("Executing: %s\n", cmd); + r = system(cmd); + if (r!=0) + warn("Possible errors when extracting\n"); + + r = remove(src); + if (r!=0) + perror(src); + + *file = strdup(dest); + *zipper = z; +} + +static void repack_image(char *bzimage, int bzimage_size, + char* vmlinux_file, struct zipper *z) +{ + char tmp[15] = "vmlinux-XXXXXX"; + char cmd[100]; + int fd; + struct stat st; + int new_size; + int r; + int offset, size; + + get_payload_info(bzimage, &offset, &size); + + fd = mkstemp(tmp); + if (fd == -1) { + perror("Could not create temp file"); + return; + } + snprintf(cmd, sizeof(cmd), "%s <%s >%s", + z->compress, vmlinux_file, tmp); + + info("Executing: %s\n", cmd); + r = system(cmd); + if (r!=0) + warn("Possible errors when compressing\n"); + + r = remove(vmlinux_file); + if (r!=0) + perror(vmlinux_file); + + if (fstat(fd, &st)) { + perror("Could not determine file size"); + close(fd); + + } + new_size = st.st_size; + if (new_size > size) { + err("Increase in compressed size is not supported.\n"); + err("Old size was %d, new size is %d\n", size, new_size); + exit(EXIT_FAILURE); + } + + r = read(fd, bzimage + offset, new_size); + if (r != new_size) + perror(tmp); + + r = remove(tmp); + if (r!=0) + perror(tmp); + + /* x86 specific patching of bzimage */ + update_payload_info(bzimage, new_size); + + /* TODO: update CRC */ + +} + +static void fill_random(unsigned char *p, int n) { + srand(0); + int i; + for (i = 0; i < n; i++) + p[i] = rand(); +} + static void print_sym(Elf_Ehdr *hdr, struct sym *s) { info("sym: %s\n", s->name); @@ -267,18 +431,23 @@ static void print_usage(char *e) { - printf("Usage %s [-s ] -b -c \n", e); + printf("Usage: %s [-s ] -b -c \n", e); + printf(" %s [-s ] -z -c \n", e); } int main(int argc, char **argv) { char *system_map_file = NULL; char *vmlinux_file = NULL; + char *bzimage_file = NULL; char *cert_file = NULL; int vmlinux_size; + int bzimage_size; int cert_size; Elf_Ehdr *hdr; char *cert; + char *bzimage = NULL; + struct zipper *z = NULL; FILE *system_map; unsigned long *lsize; int *used; @@ -286,7 +455,7 @@ Elf_Shdr *symtab = NULL; struct sym cert_sym, lsize_sym, used_sym; - while ((opt = getopt(argc, argv, "b:c:s:")) != -1) { + while ((opt = getopt(argc, argv, "b:z:c:s:")) != -1) { switch (opt) { case 's': system_map_file = optarg; @@ -294,6 +463,9 @@ case 'b': vmlinux_file = optarg; break; + case 'z': + bzimage_file = optarg; + break; case 'c': cert_file = optarg; break; @@ -302,7 +474,9 @@ } } - if (!vmlinux_file || !cert_file) { + if (!cert_file || + (!vmlinux_file && !bzimage_file) || + (vmlinux_file && bzimage_file)) { print_usage(argv[0]); exit(EXIT_FAILURE); } @@ -311,6 +485,16 @@ if (!cert) exit(EXIT_FAILURE); + if (bzimage_file) { + bzimage = map_file(bzimage_file, &bzimage_size); + if (!bzimage) + exit(EXIT_FAILURE); + + extract_vmlinux(bzimage, bzimage_size, &vmlinux_file, &z); + if (!vmlinux_file) + exit(EXIT_FAILURE); + } + hdr = map_file(vmlinux_file, &vmlinux_size); if (!hdr) exit(EXIT_FAILURE); @@ -386,7 +570,7 @@ } /* If the existing cert is the same, don't overwrite */ - if (cert_size == *used && + if (cert_size > 0 && cert_size == *used && strncmp(cert_sym.content, cert, cert_size) == 0) { warn("Certificate was already inserted.\n"); exit(EXIT_SUCCESS); @@ -396,9 +580,11 @@ warn("Replacing previously inserted certificate.\n"); memcpy(cert_sym.content, cert, cert_size); + if (cert_size < cert_sym.size) - memset(cert_sym.content + cert_size, - 0, cert_sym.size - cert_size); + /* This makes the reserved space incompressable */ + fill_random(cert_sym.content + cert_size, + cert_sym.size - cert_size); *lsize = *lsize + cert_size - *used; *used = cert_size; @@ -406,5 +592,15 @@ cert_sym.address); info("Used %d bytes out of %d bytes reserved.\n", *used, cert_sym.size); + + if (munmap(hdr, vmlinux_size) == -1) { + perror(vmlinux_file); + exit(EXIT_FAILURE); + } + + if (bzimage) { + repack_image(bzimage, bzimage_size, vmlinux_file, z); + } + exit(EXIT_SUCCESS); } --- linux-5.8.0.orig/scripts/kallsyms.c +++ linux-5.8.0/scripts/kallsyms.c @@ -82,6 +82,7 @@ static bool is_ignored_symbol(const char *name, char type) { + /* Symbol names that exactly match to the following are ignored.*/ static const char * const ignored_symbols[] = { /* * Symbols which vary between passes. Passes 1 and 2 must have @@ -104,14 +105,22 @@ NULL }; + /* Symbol names that begin with the following are ignored.*/ static const char * const ignored_prefixes[] = { "$", /* local symbols for ARM, MIPS, etc. */ ".LASANPC", /* s390 kasan local symbols */ "__crc_", /* modversions */ "__efistub_", /* arm64 EFI stub namespace */ + "__AArch64ADRPThunk_", /* arm64 lld */ + "__ARMV5PILongThunk_", /* arm lld */ + "__ARMV7PILongThunk_", + "__ThumbV7PILongThunk_", + "__LA25Thunk_", /* mips lld */ + "__microLA25Thunk_", NULL }; + /* Symbol names that end with the following are ignored.*/ static const char * const ignored_suffixes[] = { "_from_arm", /* arm */ "_from_thumb", /* arm */ @@ -119,9 +128,15 @@ NULL }; + /* Symbol names that contain the following are ignored.*/ + static const char * const ignored_matches[] = { + ".long_branch.", /* ppc stub */ + ".plt_branch.", /* ppc stub */ + NULL + }; + const char * const *p; - /* Exclude symbols which vary between passes. */ for (p = ignored_symbols; *p; p++) if (!strcmp(name, *p)) return true; @@ -137,6 +152,11 @@ return true; } + for (p = ignored_matches; *p; p++) { + if (strstr(name, *p)) + return true; + } + if (type == 'U' || type == 'u') return true; /* exclude debugging symbols */ --- linux-5.8.0.orig/scripts/kconfig/lkc.h +++ linux-5.8.0/scripts/kconfig/lkc.h @@ -60,7 +60,9 @@ /* confdata.c and expr.c */ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) { - assert(len != 0); + //assert(len != 0); + if (len == 0) + return; if (fwrite(str, len, count, out) != count) fprintf(stderr, "Error in writing or end of file.\n"); --- linux-5.8.0.orig/scripts/kconfig/preprocess.c +++ linux-5.8.0/scripts/kconfig/preprocess.c @@ -114,7 +114,7 @@ if (!strcmp(argv[0], "y")) pperror("%s", argv[1]); - return NULL; + return xstrdup(""); } static char *do_filename(int argc, char *argv[]) --- linux-5.8.0.orig/scripts/kconfig/qconf.cc +++ linux-5.8.0/scripts/kconfig/qconf.cc @@ -864,40 +864,40 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e) { - if (e->y() <= header()->geometry().bottom()) { - if (!headerPopup) { - QAction *action; - - headerPopup = new QMenu(this); - action = new QAction("Show Name", this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowName(bool))); - connect(parent(), SIGNAL(showNameChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showName); - headerPopup->addAction(action); - action = new QAction("Show Range", this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowRange(bool))); - connect(parent(), SIGNAL(showRangeChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showRange); - headerPopup->addAction(action); - action = new QAction("Show Data", this); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), - parent(), SLOT(setShowData(bool))); - connect(parent(), SIGNAL(showDataChanged(bool)), - action, SLOT(setOn(bool))); - action->setChecked(showData); - headerPopup->addAction(action); - } - headerPopup->exec(e->globalPos()); - e->accept(); - } else - e->ignore(); + if (!headerPopup) { + QAction *action; + + headerPopup = new QMenu(this); + action = new QAction("Show Name", this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setChecked(bool))); + action->setChecked(showName); + headerPopup->addAction(action); + + action = new QAction("Show Range", this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setChecked(bool))); + action->setChecked(showRange); + headerPopup->addAction(action); + + action = new QAction("Show Data", this); + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setChecked(bool))); + action->setChecked(showData); + headerPopup->addAction(action); + } + + headerPopup->exec(e->globalPos()); + e->accept(); } ConfigView*ConfigView::viewList; @@ -1228,7 +1228,6 @@ struct menu *m = NULL; if (count < 1) { - qInfo() << "Clicked link is empty"; delete[] data; return; } @@ -1241,7 +1240,6 @@ strcat(data, "$"); result = sym_re_search(data); if (!result) { - qInfo() << "Clicked symbol is invalid:" << data; delete[] data; return; } @@ -1265,7 +1263,7 @@ } free(result); - delete data; + delete[] data; } QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) @@ -1275,7 +1273,7 @@ action->setCheckable(true); connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setChecked(bool))); action->setChecked(showDebug()); popup->addSeparator(); popup->addAction(action); --- linux-5.8.0.orig/scripts/kconfig/streamline_config.pl +++ linux-5.8.0/scripts/kconfig/streamline_config.pl @@ -593,7 +593,10 @@ } my %setconfigs; -my @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +my @preserved_kconfigs; +if (defined($ENV{'LMC_KEEP'})) { + @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); +} sub in_preserved_kconfigs { my $kconfig = $config2kfile{$_[0]}; --- linux-5.8.0.orig/scripts/kmsg-doc +++ linux-5.8.0/scripts/kmsg-doc @@ -0,0 +1,478 @@ +#!/usr/bin/perl -w +# +# kmsg kernel messages check and print tool. +# +# To check the source code for missing messages the script is called +# with check, the name compiler and the compile parameters +# kmsg-doc check $(CC) $(c_flags) $< +# To create man pages for the messages the script is called with +# kmsg-doc print $(CC) $(c_flags) $< +# +# Copyright IBM Corp. 2008 +# Author(s): Martin Schwidefsky +# Michael Holzheu +# + +use Cwd; +use bigint; + +my $errors = 0; +my $warnings = 0; +my $srctree = ""; +my $objtree = ""; +my $kmsg_count = 0; + +sub remove_quotes($) +{ + my ($string) = @_; + my $inside = 0; + my $slash = 0; + my $result = ""; + + foreach my $str (split(/([\\"])/, $string)) { + if ($inside && ($str ne "\"" || $slash)) { + $result .= $str; + } + # Check for backslash before quote + if ($str eq "\"") { + if (!$slash) { + $inside = !$inside; + } + $slash = 0; + } elsif ($str eq "\\") { + $slash = !$slash; + } elsif ($str ne "") { + $slash = 0; + } + } + return $result; +} + +sub string_to_bytes($) +{ + my ($string) = @_; + my %is_escape = ('"', 0x22, '\'', 0x27, 'n', 0x0a, 'r', 0x0d, 'b', 0x08, + 't', 0x09, 'f', 0x0c, 'a', 0x07, 'v', 0x0b, '?', 0x3f); + my (@ar, $slash, $len); + + # scan string, interpret backslash escapes and write bytes to @ar + $len = 0; + foreach my $ch (split(//, $string)) { + if ($ch eq '\\') { + $slash = !$slash; + if (!$slash) { + $ar[$len] = ord('\\'); + $len++; + } + } elsif ($slash && defined $is_escape{$ch}) { + # C99 backslash escapes: \\ \" \' \n \r \b \t \f \a \v \? + $ar[$len] = $is_escape{$ch}; + $len++; + $slash = 0; + } elsif ($slash) { + # FIXME: C99 backslash escapes \nnn \xhh + die("Unknown backslash escape in message $string."); + } else { + # normal character + $ar[$len] = ord($ch); + $len++; + } + } + return @ar; +} + +sub calc_jhash($) +{ + my ($string) = @_; + my @ar; + my ($a, $b, $c, $i, $length, $len); + + @ar = string_to_bytes($string); + $length = @ar; + # add dummy elements to @ar to avoid if then else hell + push @ar, (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + $a = 0x9e3779b9; + $b = 0x9e3779b9; + $c = 0; + $i = 0; + for ($len = $length + 12; $len >= 12; $len -= 12) { + if ($len < 24) { + # add length for last round + $c += $length; + } + $a += $ar[$i] + ($ar[$i+1]<<8) + ($ar[$i+2]<<16) + ($ar[$i+3]<<24); + $b += $ar[$i+4] + ($ar[$i+5]<<8) + ($ar[$i+6]<<16) + ($ar[$i+7]<<24); + if ($len >= 24) { + $c += $ar[$i+8] + ($ar[$i+9]<<8) + ($ar[$i+10]<<16) + ($ar[$i+11]<<24); + } else { + $c += ($ar[$i+8]<<8) + ($ar[$i+9]<<16) + ($ar[$i+10]<<24); + } + $a &= 0xffffffff; $b &= 0xffffffff; $c &= 0xffffffff; + $a -= $b; $a -= $c; $a ^= ($c >> 13); $a &= 0xffffffff; + $b -= $c; $b -= $a; $b ^= ($a << 8); $b &= 0xffffffff; + $c -= $a; $c -= $b; $c ^= ($b >> 13); $c &= 0xffffffff; + $a -= $b; $a -= $c; $a ^= ($c >> 12); $a &= 0xffffffff; + $b -= $c; $b -= $a; $b ^= ($a << 16); $b &= 0xffffffff; + $c -= $a; $c -= $b; $c ^= ($b >> 5); $c &= 0xffffffff; + $a -= $b; $a -= $c; $a ^= ($c >> 3); $a &= 0xffffffff; + $b -= $c; $b -= $a; $b ^= ($a << 10); $b &= 0xffffffff; + $c -= $a; $c -= $b; $c ^= ($b >> 15); $c &= 0xffffffff; + $i += 12; + } + return $c; +} + +sub add_kmsg_desc($$$$$$) +{ + my ($component, $text, $sev, $argv, $desc, $user) = @_; + my ($hash, $tag); + + $text = remove_quotes($text); + $hash = substr(sprintf("%08x", calc_jhash($text)), 2, 6); + $tag = $component . "." . $hash; + + if ($kmsg_desc{$tag}) { + if ($text ne $kmsg_desc{$tag}->{'TEXT'}) { + warn "Duplicate message with tag $tag\n"; + warn " --- $kmsg_desc{$tag}->{'TEXT'}\n"; + warn " +++ $text\n"; + } else { + warn "Duplicate message description for \"$text\"\n"; + } + $errors++; + return; + } + $kmsg_desc{$tag}->{'TEXT'} = $text; + $kmsg_desc{$tag}->{'SEV'} = $sev; + $kmsg_desc{$tag}->{'ARGV'} = $argv; + $kmsg_desc{$tag}->{'DESC'} = $desc; + $kmsg_desc{$tag}->{'USER'} = $user; +} + +sub add_kmsg_print($$$$) +{ + my ($component, $sev, $text, $argv) = @_; + my ($hash, $tag, $count, $parm); + + $text = remove_quotes($text); + $hash = substr(sprintf("%08x", calc_jhash($text)), 2, 6); + $tag = $component . "." . $hash; + + # Pretty print severity + $sev =~ s/"0"/Emerg/; + $sev =~ s/"1"/Alert/; + $sev =~ s/"2"/Critical/; + $sev =~ s/"3"/Error/; + $sev =~ s/"4"/Warning/; + $sev =~ s/"5"/Notice/; + $sev =~ s/"6"/Informational/; + $sev =~ s/"7"/Debug/; + $kmsg_print{$kmsg_count}->{'TAG'} = $tag; + $kmsg_print{$kmsg_count}->{'TEXT'} = $text; + $kmsg_print{$kmsg_count}->{'SEV'} = $sev; + $kmsg_print{$kmsg_count}->{'ARGV'} = $argv; + $kmsg_count += 1; +} + +sub process_source_file($$) +{ + my ($component, $file) = @_; + my $state; + my ($text, $sev, $argv, $desc, $user); + + if (!open(FD, "$file")) { + return ""; + } + + $state = 0; + while () { + chomp; + # kmsg message component: #define KMSG_COMPONENT "" + if (/^#define\s+KMSG_COMPONENT\s+\"(.*)\"[^\"]*$/o) { + $component = $1; + } + if ($state == 0) { + # single line kmsg for undocumented messages, format: + # /*? Text: "" */ + if (/^\s*\/\*\?\s*Text:\s*(\".*\")\s*\*\/\s*$/o) { + add_kmsg_desc($component, $1, "", "", "", ""); + } + # kmsg message start: '/*?' + if (/^\s*\/\*\?\s*$/o) { + $state = 1; + ($text, $sev, $argv, $desc, $user) = ( "", "", "", "", "" ); + } + } elsif ($state == 1) { + # kmsg message end: ' */' + if (/^\s*\*\/\s*/o) { + add_kmsg_desc($component, $text, $sev, $argv, $desc, $user); + $state = 0; + } + # kmsg message text: ' * Text: ""' + elsif (/^\s*\*\s*Text:\s*(\".*\")\s*$/o) { + $text = $1; + } + # kmsg message severity: ' * Severity: ' + elsif (/^\s*\*\s*Severity:\s*(\S*)\s*$/o) { + $sev = $1; + } + # kmsg message parameter: ' * Parameter: ' + elsif (/^\s*\*\s*Parameter:\s*(\S*)\s*$/o) { + if (!defined($1)) { + $argv = ""; + } else { + $argv = $1; + } + $state = 2; + } + # kmsg message description start: ' * Description:' + elsif (/^\s*\*\s*Description:\s*(\S*)\s*$/o) { + if (!defined($1)) { + $desc = ""; + } else { + $desc = $1; + } + $state = 3; + } + # kmsg has unrecognizable lines + else { + warn "Warning(${file}:$.): Cannot understand $_"; + $warnings++; + $state = 0; + } + } elsif ($state == 2) { + # kmsg message end: ' */' + if (/^\s*\*\//o) { + warn "Warning(${file}:$.): Missing description, skipping message"; + $warnings++; + $state = 0; + } + # kmsg message description start: ' * Description:' + elsif (/^\s*\*\s*Description:\s*$/o) { + $desc = $1; + $state = 3; + } + # kmsg message parameter line: ' * ' + elsif (/^\s*\*(.*)$/o) { + $argv .= "\n" . $1; + } else { + warn "Warning(${file}:$.): Cannot understand $_"; + $warnings++; + $state = 0; + } + } elsif ($state == 3) { + # kmsg message end: ' */' + if (/^\s*\*\/\s*/o) { + add_kmsg_desc($component, $text, $sev, $argv, $desc, $user); + $state = 0; + } + # kmsg message description start: ' * User action:' + elsif (/^\s*\*\s*User action:\s*$/o) { + $user = $1; + $state = 4; + } + # kmsg message description line: ' * ' + elsif (/^\s*\*\s*(.*)$/o) { + $desc .= "\n" . $1; + } else { + warn "Warning(${file}:$.): Cannot understand $_"; + $warnings++; + $state = 0; + } + } elsif ($state == 4) { + # kmsg message end: ' */' + if (/^\s*\*\/\s*/o) { + add_kmsg_desc($component, $text, $sev, $argv, $desc, $user); + $state = 0; + } + # kmsg message user action line: ' * ' + elsif (/^\s*\*\s*(.*)$/o) { + $user .= "\n" . $1; + } else { + warn "Warning(${file}:$.): Cannot understand $_"; + $warnings++; + $state = 0; + } + } + } + return $component; +} + +sub process_cpp_file($$$$) +{ + my ($cc, $options, $file, $component) = @_; + + open(FD, "$cc $gcc_options|") or die ("Preprocessing failed."); + + while () { + chomp; + if (/.*__KMSG_PRINT\(\s*(\S*)\s*(\S*)\s*_FMT_(.*)_ARGS_\s*(.*)?_END_\s*\)/o) { + if ($component ne "") { + add_kmsg_print($component, $2, $3, $4); + } else { + warn "Error(${file}:$.): kmsg without component\n"; + $errors++; + } + } elsif (/.*__KMSG_DEV\(\s*(\S*)\s*(\S*)\s*_FMT_(.*)_ARGS_\s*(.*)?_END_\s*\)/o) { + if ($component ne "") { + add_kmsg_print($component, $2, "\"%s: \"" . $3, $4); + } else { + warn "Error(${file}:$.): kmsg without component\n"; + $errors++; + } + } + } +} + +sub check_messages($) +{ + my $component = "@_"; + my $failed = 0; + + for ($i = 0; $i < $kmsg_count; $i++) { + $tag = $kmsg_print{$i}->{'TAG'}; + if (!defined($kmsg_desc{$tag})) { + add_kmsg_desc($component, + "\"" . $kmsg_print{$i}->{'TEXT'} . "\"", + $kmsg_print{$i}->{'SEV'}, + $kmsg_print{$i}->{'ARGV'}, + "Please insert description here", + "What is the user supposed to do"); + $kmsg_desc{$tag}->{'CHECK'} = 1; + $failed = 1; + warn "$component: Missing description for: ". + $kmsg_print{$i}->{'TEXT'}."\n"; + $errors++; + next; + } + if ($kmsg_desc{$tag}->{'SEV'} ne "" && + $kmsg_desc{$tag}->{'SEV'} ne $kmsg_print{$i}->{'SEV'}) { + warn "Message severity mismatch for \"$kmsg_print{$i}->{'TEXT'}\"\n"; + warn " --- $kmsg_desc{$tag}->{'SEV'}\n"; + warn " +++ $kmsg_print{$i}->{'SEV'}\n"; + } + } + return $failed; +} + +sub print_templates() +{ + print "Templates for missing messages:\n"; + foreach $tag ( sort { $kmsg_desc{$a} <=> $kmsg_desc{$b} } keys %kmsg_desc ) { + if (!defined($kmsg_desc{$tag}->{'CHECK'})) { + next; + } + print "/*?\n"; + print " * Text: \"$kmsg_desc{$tag}->{'TEXT'}\"\n"; + print " * Severity: $kmsg_desc{$tag}->{'SEV'}\n"; + $argv = $kmsg_desc{$tag}->{'ARGV'}; + if ($argv ne "") { + print " * Parameter:\n"; + @parms = split(/\s*,\s*/,$kmsg_desc{$tag}->{'ARGV'}); + $count = 0; + foreach $parm (@parms) { + $count += 1; + if (!($parm eq "")) { + print " * \@$count: $parm\n"; + } + } + } + print " * Description:\n"; + print " * $kmsg_desc{$tag}->{'DESC'}\n"; + print " * User action:\n"; + print " * $kmsg_desc{$tag}->{'USER'}\n"; + print " */\n\n"; + } +} + +sub write_man_pages() +{ + my ($i, $file); + + for ($i = 0; $i < $kmsg_count; $i++) { + $tag = $kmsg_print{$i}->{'TAG'}; + if (!defined($kmsg_desc{$tag}) || + defined($kmsg_desc{$tag}->{'CHECK'}) || + $kmsg_desc{$tag}->{'DESC'} eq "") { + next; + } + $file = $objtree . "man/" . $tag . ".9"; + if (!open(WR, ">$file")) { + warn "Error: Cannot open file $file\n"; + $errors++; + return; + } + print WR ".TH \"$tag\" 9 \"Linux Messages\" LINUX\n"; + print WR ".SH Message\n"; + print WR $tag . ": " . $kmsg_desc{$tag}->{'TEXT'} . "\n"; + print WR ".SH Severity\n"; + print WR "$kmsg_desc{$tag}->{'SEV'}\n"; + $argv = $kmsg_desc{$tag}->{'ARGV'}; + if ($argv ne "") { + print WR ".SH Parameters\n"; + @parms = split(/\s*\n\s*/,$kmsg_desc{$tag}->{'ARGV'}); + foreach $parm (@parms) { + $parm =~ s/^\s*(.*)\s*$/$1/; + if (!($parm eq "")) { + print WR "$parm\n\n"; + } + } + } + print WR ".SH Description"; + print WR "$kmsg_desc{$tag}->{'DESC'}\n"; + $user = $kmsg_desc{$tag}->{'USER'}; + if ($user ne "") { + print WR ".SH User action"; + print WR "$user\n"; + } + } +} + +if (defined($ENV{'srctree'})) { + $srctree = "$ENV{'srctree'}" . "/"; +} else { + $srctree = getcwd; +} + +if (defined($ENV{'objtree'})) { + $objtree = "$ENV{'objtree'}" . "/"; +} else { + $objtree = getcwd; +} + +if (defined($ENV{'SRCARCH'})) { + $srcarch = "$ENV{'SRCARCH'}" . "/"; +} else { + print "kmsg-doc called without a valid \$SRCARCH\n"; + exit 1; +} + +$option = shift; + +$cc = shift; +$gcc_options = "-E -D __KMSG_CHECKER "; +foreach $tmp (@ARGV) { + $tmp =~ s/\(/\\\(/; + $tmp =~ s/\)/\\\)/; + $gcc_options .= " $tmp"; + $filename = $tmp; +} + +$component = process_source_file("", $filename); +if ($component ne "") { + process_source_file($component, $srctree . "Documentation/kmsg/" . + $srcarch . $component); + process_source_file($component, $srctree . "Documentation/kmsg/" . + $component); +} + +process_cpp_file($cc, $gcc_options, $filename, $component); +if ($option eq "check") { + if (check_messages($component)) { + print_templates(); + } +} elsif ($option eq "print") { + write_man_pages(); +} + +exit($errors); --- linux-5.8.0.orig/scripts/nsdeps +++ linux-5.8.0/scripts/nsdeps @@ -29,7 +29,7 @@ generate_deps_for_ns() { $SPATCH --very-quiet --in-place --sp-file \ - $srctree/scripts/coccinelle/misc/add_namespace.cocci -D ns=$1 $2 + $srctree/scripts/coccinelle/misc/add_namespace.cocci -D nsdeps -D ns=$1 $2 } generate_deps() { --- linux-5.8.0.orig/scripts/package/builddeb +++ linux-5.8.0/scripts/package/builddeb @@ -202,8 +202,10 @@ done if [ "$ARCH" != "um" ]; then - deploy_kernel_headers debian/linux-headers - create_package linux-headers-$version debian/linux-headers + if is_enabled CONFIG_MODULES; then + deploy_kernel_headers debian/linux-headers + create_package linux-headers-$version debian/linux-headers + fi deploy_libc_headers debian/linux-libc-dev create_package linux-libc-dev debian/linux-libc-dev --- linux-5.8.0.orig/scripts/package/mkdebian +++ linux-5.8.0/scripts/package/mkdebian @@ -183,13 +183,6 @@ This package contains the Linux kernel, modules and corresponding other files, version: $version. -Package: $kernel_headers_packagename -Architecture: $debarch -Description: Linux kernel headers for $version on $debarch - This package provides kernel header files for $version on $debarch - . - This is useful for people who need to build external modules - Package: linux-libc-dev Section: devel Provides: linux-kernel-headers @@ -200,6 +193,18 @@ Multi-Arch: same EOF +if is_enabled CONFIG_MODULES; then +cat <> debian/control + +Package: $kernel_headers_packagename +Architecture: $debarch +Description: Linux kernel headers for $version on $debarch + This package provides kernel header files for $version on $debarch + . + This is useful for people who need to build external modules +EOF +fi + if is_enabled CONFIG_DEBUG_INFO; then cat <> debian/control --- linux-5.8.0.orig/scripts/recordmcount.c +++ linux-5.8.0/scripts/recordmcount.c @@ -42,6 +42,8 @@ #define R_ARM_THM_CALL 10 #define R_ARM_CALL 28 +#define R_AARCH64_CALL26 283 + static int fd_map; /* File descriptor for file being modified. */ static int mmap_failed; /* Boolean flag. */ static char gpfx; /* prefix for global symbol name (sometimes '_') */ @@ -434,6 +436,11 @@ return 1; } +static int arm64_is_fake_mcount(Elf64_Rel const *rp) +{ + return ELF64_R_TYPE(w8(rp->r_info)) != R_AARCH64_CALL26; +} + /* 64-bit EM_MIPS has weird ELF64_Rela.r_info. * http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf * We interpret Table 29 Relocation Operation (Elf64_Rel, Elf64_Rela) [p.40] @@ -547,6 +554,7 @@ make_nop = make_nop_arm64; rel_type_nop = R_AARCH64_NONE; ideal_nop = ideal_nop4_arm64; + is_fake_mcount64 = arm64_is_fake_mcount; break; case EM_IA_64: reltype = R_IA64_IMM64; break; case EM_MIPS: /* reltype: e_class */ break; --- linux-5.8.0.orig/scripts/recordmcount.pl +++ linux-5.8.0/scripts/recordmcount.pl @@ -268,7 +268,11 @@ # force flags for this arch $ld .= " -m shlelf_linux"; - $objcopy .= " -O elf32-sh-linux"; + if ($endian eq "big") { + $objcopy .= " -O elf32-shbig-linux"; + } else { + $objcopy .= " -O elf32-sh-linux"; + } } elsif ($arch eq "powerpc") { my $ldemulation; --- linux-5.8.0.orig/scripts/selinux/mdp/mdp.c +++ linux-5.8.0/scripts/selinux/mdp/mdp.c @@ -67,8 +67,14 @@ initial_sid_to_string_len = sizeof(initial_sid_to_string) / sizeof (char *); /* print out the sids */ - for (i = 1; i < initial_sid_to_string_len; i++) - fprintf(fout, "sid %s\n", initial_sid_to_string[i]); + for (i = 1; i < initial_sid_to_string_len; i++) { + const char *name = initial_sid_to_string[i]; + + if (name) + fprintf(fout, "sid %s\n", name); + else + fprintf(fout, "sid unused%d\n", i); + } fprintf(fout, "\n"); /* print out the class permissions */ @@ -126,9 +132,16 @@ #define OBJUSERROLETYPE "user_u:object_r:base_t" /* default sids */ - for (i = 1; i < initial_sid_to_string_len; i++) - fprintf(fout, "sid %s " SUBJUSERROLETYPE "%s\n", - initial_sid_to_string[i], mls ? ":" SYSTEMLOW : ""); + for (i = 1; i < initial_sid_to_string_len; i++) { + const char *name = initial_sid_to_string[i]; + + if (name) + fprintf(fout, "sid %s ", name); + else + fprintf(fout, "sid unused%d\n", i); + fprintf(fout, SUBJUSERROLETYPE "%s\n", + mls ? ":" SYSTEMLOW : ""); + } fprintf(fout, "\n"); #define FS_USE(behavior, fstype) \ --- linux-5.8.0.orig/scripts/setlocalversion +++ linux-5.8.0/scripts/setlocalversion @@ -45,7 +45,7 @@ # Check for git and a git repo. if test -z "$(git rev-parse --show-cdup 2>/dev/null)" && - head=$(git rev-parse --verify --short HEAD 2>/dev/null); then + head=$(git rev-parse --verify HEAD 2>/dev/null); then # 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. @@ -59,11 +59,22 @@ fi # If we are past a tagged commit (like # "v2.6.30-rc5-302-g72357d5"), we pretty print it. - if atag="$(git describe 2>/dev/null)"; then - echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' + # + # Ensure the abbreviated sha1 has exactly 12 + # hex characters, to make the output + # independent of git version, local + # core.abbrev settings and/or total number of + # objects in the current repository - passing + # --abbrev=12 ensures a minimum of 12, and the + # awk substr() then picks the 'g' and first 12 + # hex chars. + if atag="$(git describe --abbrev=12 2>/dev/null)"; then + echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),substr($(NF),0,13))}' - # If we don't have a tag at all we print -g{commitish}. + # If we don't have a tag at all we print -g{commitish}, + # again using exactly 12 hex chars. else + head="$(echo $head | cut -c1-12)" printf '%s%s' -g $head fi fi --- linux-5.8.0.orig/scripts/ubuntu-retpoline-extract-one +++ linux-5.8.0/scripts/ubuntu-retpoline-extract-one @@ -0,0 +1,270 @@ +#!/bin/bash + +exec &2 + exit 1 + fi +} + +# Form an associative lookup for the section numbers in the ELF symbol table. +# Uses 8 character 0 expanded hexadecimal key for ease of consumption. +__sectionmap_init() +{ + readelf -W --headers "$1" | \ + awk ' + { sub("\\[", ""); sub("\\]", ""); } + ($1 ~ /^[0-9][0-9]*/) { printf("%08x %s %s %s\n", int($1), $2, $3, $4); } + ' | \ + { + while read section_num section_name section_type section_vma + do + echo "sectionmap_$section_num='$section_name'" + echo "sectionvma_$section_num='$section_vma'" + case "$section_type" in + REL|RELA) section_relocation="$section_type" ;; + esac + done + echo "section_relocation='$section_relocation'" + } +} +sectionmap_init() +{ + eval $(__sectionmap_init "$1") +} +sectionmap() +{ + eval RET="\$sectionmap_$1" + if [ "$RET" = '' ]; then + echo "sectionmap: $1: invalid section" 1>&2 + exit 1 + fi +} +sectionvma() +{ + eval RET="\$sectionvma_$1" + if [ "$RET" = '' ]; then + echo "sectionvma: $1: invalid section" 1>&2 + exit 1 + fi +} + +# Read and parse the hex-dump output. +hex="[0-9a-f]" +hex_8="$hex$hex$hex$hex$hex$hex$hex$hex" +hexspc="[0-9a-f ]" +hexspc_8="$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc$hexspc" + +raw32() +{ + readelf --hex-dump "$2" "$1" 2>/dev/null | + sed \ + -e '/^Hex/d' -e '/^$/d' -e '/^ *NOTE/d' \ + -e 's/ *[^ ][^ ]* *\('"$hex_8"'\) \('"$hexspc_8"'\) \('"$hexspc_8"'\) \('"$hexspc_8"'\) .*/\1 \2 \3 \4 /' \ + -e 's/\('"$hex$hex"'\)\('"$hex$hex"'\)\('"$hex$hex"'\)\('"$hex$hex"'\) /\4\3\2\1 /g' \ + -e 's/ $//g' -e 's/ /\n/g' +} +#-e 's/\([^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]\) \([^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]\) /\2\1 /g' \ + +rela() +{ + #file="$(basename "$1")" + file="$1" + + # Read relocation information for a 64bit binary. Each relocation entry + # is 3 long longs so we collect 6 quads here. Note that the dump is in + # listed in increasing byte order not withstanding the quad split. + # + # The record says to take the value of add and + # shove that into in the segment of the . + # + # Format: + # 64 bits + # 32 bits + # 32 bits + # 64 bits + raw32 "$1" ".rela$SECTION" | \ + { + a1=''; a2=''; a3=''; a4=''; a5='' + while read a6 + do + [ "$a1" = '' ] && { a1="$a6"; continue; } + [ "$a2" = '' ] && { a2="$a6"; continue; } + [ "$a3" = '' ] && { a3="$a6"; continue; } + [ "$a4" = '' ] && { a4="$a6"; continue; } + [ "$a5" = '' ] && { a5="$a6"; continue; } + + #echo ">$a1< >$a2< >$a3< >$a4< >$a5< >$a6<" 1>&2 + #echo "type<$a3> symbol<$a4> offset<$a2$a1> addr<$a6a5>" 1>&2 + + symbolmap "$a4"; section_num="$RET" + #echo "section_num<$section_num>" 1>&2 + + sectionmap "$section_num"; section="$RET" + sectionvma "$section_num"; vma="$RET" + #echo "section<$section> vma<$vma>" 1>&2 + + # Adjust the segment addressing by the segment offset. + printf -v addr "%u" "0x$a6$a5" + printf -v vma "%u" "0x$vma" + let offset="$addr + $vma" + printf -v offset "%x" "$offset" + + echo "$file-$section-$offset" + + a1=''; a2=''; a3=''; a4=''; a5='' + done + } | sed -e 's/-00*\([0-9a-f]\)/-\1/' +} + +# Form an associative lookup for the raw contents for an ELF section. +# Uses 8 character 0 expanded hexadecimal key for ease of consumption. +contentmap_init() +{ + raw32 "$1" "$2" >"$tmp" + let offset=0 + while read value + do + printf -v offset_hex "%08x" $offset + eval contentmap_$offset_hex=\'$value\' + + let offset="$offset + 4" + done <"$tmp" + rm -f "$tmp" +} +contentmap() +{ + eval RET="\$contentmap_$1" + if [ "$RET" = '' ]; then + echo "contentmap: $1: invalid offset" 1>&2 + exit 1 + fi +} + +rel() +{ + # Load up the current contents of the $SECTION segment + # as the offsets (see below) are recorded there and we will need + # those to calculate the actuall address. + contentmap_init "$1" "$SECTION" + + #file="$(basename "$1")" + file="$1" + + # Read relocation information for a 32bit binary. Each relocation entry + # is 3 longs so we collect 3 quads here. Note that the dump is in + # listed in increasing byte order not withstanding the quad split. + # + # The record says to take the value of and add that to the + # existing contents of in the segment of the . + # + # Format: + # 32 bits + # 24 bits + # 8 bits + raw32 "$1" ".rel$SECTION" | \ + { + a1='' + while read a2 + do + [ "$a1" = '' ] && { a1="$a2"; continue; } + + #echo ">$a1< >$a2<" + contentmap "$a1"; offset="$RET" + symbolmap "00${a2%??}"; section_num="$RET" + + sectionmap "$section_num"; section="$RET" + sectionvma "$section_num"; vma="$RET" + #echo ">$a1< >$a2< >$offset< >$section<" + + echo "$file-$section-$offset" + + a1='' + done + } | sed -e 's/-00*\([0-9a-f]\)/-\1/' +} + +tmp=$(mktemp --tmpdir "retpoline-extract-XXXXXX") + +disassemble() +{ + local object="$1" + local src="$2" + local options="$3" + local selector="$4" + + objdump $options --disassemble --no-show-raw-insn "$object" | \ + awk -F' ' ' + BEGIN { file="'"$object"'"; src="'"$src"'"; } + /Disassembly of section/ { segment=$4; sub(":", "", segment); } + /^[0-9a-f][0-9a-f]* <.*>:/ { tag=$0; sub(".*<", "", tag); sub(">.*", "", tag); } + $0 ~ /(call|jmp)q? *\*0x[0-9a-f]*\(%rip\)/ { + next + } + $0 ~ /(call|jmp)q? *\*.*%/ { + sub(":", "", $1); + if ('"$selector"') { + offset=$1 + $1=tag + print(file "-" segment "-" offset " " src " " segment " " $0); + } + } + ' +} + +# Accumulate potentially vunerable indirect call/jmp sequences. We do this +# by examining the raw disassembly for affected forms, recording the location +# of each. +case "$bit16" in +'') disassemble "$object" "$src" '' 'segment != ".init.text"' ;; +*) disassemble "$object" "$src" '--disassembler-options=i8086' 'segment != ".init.text" && segment != ".text32" && segment != ".text64"' + disassemble "$object" "$src" '--disassembler-options=i386' 'segment == ".text32"' + disassemble "$object" "$src" '--disassembler-options=x86-64' 'segment == ".text64"' + ;; +esac | sort -k 1b,1 >"$object.ur-detected" +[ ! -s "$object.ur-detected" ] && rm -f "$object.ur-detected" + +# Load up the symbol table and section mappings. +symbolmap_init "$object" +sectionmap_init "$object" + +# Accumulate annotated safe indirect call/jmp sequences. We do this by examining +# the $SECTION sections (and their associated relocation information), +# each entry represents the address of an instruction which has been marked +# as ok. +case "$section_relocation" in +REL) rel "$object" ;; +RELA) rela "$object" ;; +esac | sort -k 1b,1 >"$object.ur-safe" +[ ! -s "$object.ur-safe" ] && rm -f "$object.ur-safe" + +# We will perform the below join on the summarised and sorted fragments +# formed above. This is performed in retpoline-check. +#join -v 1 -j 1 "$tmp.extracted" "$tmp.safe" | sed -s 's/[^ ]* *//' + +rm -f "$tmp" --- linux-5.8.0.orig/security/Kconfig +++ linux-5.8.0/security/Kconfig @@ -19,6 +19,15 @@ If you are unsure how to answer this question, answer N. +config SECURITY_PERF_EVENTS_RESTRICT + bool "Restrict unprivileged use of performance events" + depends on PERF_EVENTS + help + If you say Y here, the kernel.perf_event_paranoid sysctl + will be set to 3 by default, and no unprivileged use of the + perf_event_open syscall will be permitted unless it is + changed. + config SECURITY bool "Enable different security models" depends on SYSFS --- linux-5.8.0.orig/security/apparmor/Makefile +++ linux-5.8.0/security/apparmor/Makefile @@ -5,7 +5,8 @@ apparmor-y := apparmorfs.o audit.o capability.o task.o ipc.o lib.o match.o \ path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \ - resource.o secid.o file.o policy_ns.o label.o mount.o net.o + resource.o secid.o file.o policy_ns.o label.o mount.o net.o \ + af_unix.o apparmor-$(CONFIG_SECURITY_APPARMOR_HASH) += crypto.o clean-files := capability_names.h rlim_names.h net_names.h --- linux-5.8.0.orig/security/apparmor/af_unix.c +++ linux-5.8.0/security/apparmor/af_unix.c @@ -0,0 +1,652 @@ +/* + * AppArmor security module + * + * This file contains AppArmor af_unix fine grained mediation + * + * Copyright 2018 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include + +#include "include/audit.h" +#include "include/af_unix.h" +#include "include/apparmor.h" +#include "include/file.h" +#include "include/label.h" +#include "include/path.h" +#include "include/policy.h" +#include "include/cred.h" + +static inline struct sock *aa_unix_sk(struct unix_sock *u) +{ + return &u->sk; +} + +static inline int unix_fs_perm(const char *op, u32 mask, struct aa_label *label, + struct unix_sock *u, int flags) +{ + AA_BUG(!label); + AA_BUG(!u); + AA_BUG(!UNIX_FS(aa_unix_sk(u))); + + if (unconfined(label) || !LABEL_MEDIATES(label, AA_CLASS_FILE)) + return 0; + + mask &= NET_FS_PERMS; + if (!u->path.dentry) { + struct path_cond cond = { }; + struct aa_perms perms = { }; + struct aa_profile *profile; + + /* socket path has been cleared because it is being shutdown + * can only fall back to original sun_path request + */ + struct aa_sk_ctx *ctx = aa_sock(&u->sk); + if (ctx->path.dentry) + return aa_path_perm(op, label, &ctx->path, flags, mask, + &cond); + return fn_for_each_confined(label, profile, + ((flags | profile->path_flags) & PATH_MEDIATE_DELETED) ? + __aa_path_perm(op, profile, + u->addr->name->sun_path, mask, + &cond, flags, &perms) : + aa_audit_file(profile, &nullperms, op, mask, + u->addr->name->sun_path, NULL, + NULL, cond.uid, + "Failed name lookup - " + "deleted entry", -EACCES)); + } else { + /* the sunpath may not be valid for this ns so use the path */ + struct path_cond cond = { u->path.dentry->d_inode->i_uid, + u->path.dentry->d_inode->i_mode + }; + + return aa_path_perm(op, label, &u->path, flags, mask, &cond); + } + + return 0; +} + +/* passing in state returned by PROFILE_MEDIATES_AF */ +static unsigned int match_to_prot(struct aa_profile *profile, + unsigned int state, int type, int protocol, + const char **info) +{ + __be16 buffer[2]; + buffer[0] = cpu_to_be16(type); + buffer[1] = cpu_to_be16(protocol); + state = aa_dfa_match_len(profile->policy.dfa, state, (char *) &buffer, + 4); + if (!state) + *info = "failed type and protocol match"; + return state; +} + +static unsigned int match_addr(struct aa_profile *profile, unsigned int state, + struct sockaddr_un *addr, int addrlen) +{ + if (addr) + /* include leading \0 */ + state = aa_dfa_match_len(profile->policy.dfa, state, + addr->sun_path, + unix_addr_len(addrlen)); + else + /* anonymous end point */ + state = aa_dfa_match_len(profile->policy.dfa, state, "\x01", + 1); + /* todo change to out of band */ + state = aa_dfa_null_transition(profile->policy.dfa, state); + return state; +} + +static unsigned int match_to_local(struct aa_profile *profile, + unsigned int state, int type, int protocol, + struct sockaddr_un *addr, int addrlen, + const char **info) +{ + state = match_to_prot(profile, state, type, protocol, info); + if (state) { + state = match_addr(profile, state, addr, addrlen); + if (state) { + /* todo: local label matching */ + state = aa_dfa_null_transition(profile->policy.dfa, + state); + if (!state) + *info = "failed local label match"; + } else + *info = "failed local address match"; + } + + return state; +} + +static unsigned int match_to_sk(struct aa_profile *profile, + unsigned int state, struct unix_sock *u, + const char **info) +{ + struct sockaddr_un *addr = NULL; + int addrlen = 0; + + if (u->addr) { + addr = u->addr->name; + addrlen = u->addr->len; + } + + return match_to_local(profile, state, u->sk.sk_type, u->sk.sk_protocol, + addr, addrlen, info); +} + +#define CMD_ADDR 1 +#define CMD_LISTEN 2 +#define CMD_OPT 4 + +static inline unsigned int match_to_cmd(struct aa_profile *profile, + unsigned int state, struct unix_sock *u, + char cmd, const char **info) +{ + state = match_to_sk(profile, state, u, info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, &cmd, 1); + if (!state) + *info = "failed cmd selection match"; + } + + return state; +} + +static inline unsigned int match_to_peer(struct aa_profile *profile, + unsigned int state, + struct unix_sock *u, + struct sockaddr_un *peer_addr, + int peer_addrlen, + const char **info) +{ + state = match_to_cmd(profile, state, u, CMD_ADDR, info); + if (state) { + state = match_addr(profile, state, peer_addr, peer_addrlen); + if (!state) + *info = "failed peer address match"; + } + return state; +} + +static int do_perms(struct aa_profile *profile, unsigned int state, u32 request, + struct common_audit_data *sa) +{ + struct aa_perms perms; + + AA_BUG(!profile); + + aa_compute_perms(profile->policy.dfa, state, &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, + audit_net_cb); +} + +static int match_label(struct aa_profile *profile, struct aa_profile *peer, + unsigned int state, u32 request, + struct common_audit_data *sa) +{ + AA_BUG(!profile); + AA_BUG(!peer); + + aad(sa)->peer = &peer->label; + + if (state) { + state = aa_dfa_match(profile->policy.dfa, state, + peer->base.hname); + if (!state) + aad(sa)->info = "failed peer label match"; + } + return do_perms(profile, state, request, sa); +} + + +/* unix sock creation comes before we know if the socket will be an fs + * socket + * v6 - semantics are handled by mapping in profile load + * v7 - semantics require sock create for tasks creating an fs socket. + */ +static int profile_create_perm(struct aa_profile *profile, int family, + int type, int protocol) +{ + unsigned int state; + DEFINE_AUDIT_NET(sa, OP_CREATE, NULL, family, type, protocol); + + AA_BUG(!profile); + AA_BUG(profile_unconfined(profile)); + + if ((state = PROFILE_MEDIATES_AF(profile, AF_UNIX))) { + state = match_to_prot(profile, state, type, protocol, + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_CREATE, &sa); + } + + return aa_profile_af_perm(profile, &sa, AA_MAY_CREATE, family, type); +} + +int aa_unix_create_perm(struct aa_label *label, int family, int type, + int protocol) +{ + struct aa_profile *profile; + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + profile_create_perm(profile, family, type, protocol)); +} + + +static inline int profile_sk_perm(struct aa_profile *profile, const char *op, + u32 request, struct sock *sk) +{ + unsigned int state; + DEFINE_AUDIT_SK(sa, op, sk); + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + state = match_to_sk(profile, state, unix_sk(sk), + &aad(&sa)->info); + return do_perms(profile, state, request, &sa); + } + + return aa_profile_af_sk_perm(profile, &sa, request, sk); +} + +int aa_unix_label_sk_perm(struct aa_label *label, const char *op, u32 request, + struct sock *sk) +{ + struct aa_profile *profile; + + return fn_for_each_confined(label, profile, + profile_sk_perm(profile, op, request, sk)); +} + +static int unix_label_sock_perm(struct aa_label *label, const char *op, u32 request, + struct socket *sock) +{ + if (unconfined(label)) + return 0; + if (UNIX_FS(sock->sk)) + return unix_fs_perm(op, request, label, unix_sk(sock->sk), 0); + + return aa_unix_label_sk_perm(label, op, request, sock->sk); +} + +/* revaliation, get/set attr */ +int aa_unix_sock_perm(const char *op, u32 request, struct socket *sock) +{ + struct aa_label *label; + int error; + + label = begin_current_label_crit_section(); + error = unix_label_sock_perm(label, op, request, sock); + end_current_label_crit_section(label); + + return error; +} + +static int profile_bind_perm(struct aa_profile *profile, struct sock *sk, + struct sockaddr *addr, int addrlen) +{ + unsigned int state; + DEFINE_AUDIT_SK(sa, OP_BIND, sk); + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(addr->sa_family != AF_UNIX); + AA_BUG(profile_unconfined(profile)); + AA_BUG(unix_addr_fs(addr, addrlen)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + /* bind for abstract socket */ + aad(&sa)->net.addr = unix_addr(addr); + aad(&sa)->net.addrlen = addrlen; + + state = match_to_local(profile, state, + sk->sk_type, sk->sk_protocol, + unix_addr(addr), addrlen, + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_BIND, &sa); + } + + return aa_profile_af_sk_perm(profile, &sa, AA_MAY_BIND, sk); +} + +int aa_unix_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + struct aa_profile *profile; + struct aa_label *label; + int error = 0; + + label = begin_current_label_crit_section(); + /* fs bind is handled by mknod */ + if (!(unconfined(label) || unix_addr_fs(address, addrlen))) + error = fn_for_each_confined(label, profile, + profile_bind_perm(profile, sock->sk, address, + addrlen)); + end_current_label_crit_section(label); + + return error; +} + +int aa_unix_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + /* unix connections are covered by the + * - unix_stream_connect (stream) and unix_may_send hooks (dgram) + * - fs connect is handled by open + */ + return 0; +} + +static int profile_listen_perm(struct aa_profile *profile, struct sock *sk, + int backlog) +{ + unsigned int state; + DEFINE_AUDIT_SK(sa, OP_LISTEN, sk); + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + __be16 b = cpu_to_be16(backlog); + + state = match_to_cmd(profile, state, unix_sk(sk), CMD_LISTEN, + &aad(&sa)->info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, + (char *) &b, 2); + if (!state) + aad(&sa)->info = "failed listen backlog match"; + } + return do_perms(profile, state, AA_MAY_LISTEN, &sa); + } + + return aa_profile_af_sk_perm(profile, &sa, AA_MAY_LISTEN, sk); +} + +int aa_unix_listen_perm(struct socket *sock, int backlog) +{ + struct aa_profile *profile; + struct aa_label *label; + int error = 0; + + label = begin_current_label_crit_section(); + if (!(unconfined(label) || UNIX_FS(sock->sk))) + error = fn_for_each_confined(label, profile, + profile_listen_perm(profile, sock->sk, + backlog)); + end_current_label_crit_section(label); + + return error; +} + + +static inline int profile_accept_perm(struct aa_profile *profile, + struct sock *sk, + struct sock *newsk) +{ + unsigned int state; + DEFINE_AUDIT_SK(sa, OP_ACCEPT, sk); + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + state = match_to_sk(profile, state, unix_sk(sk), + &aad(&sa)->info); + return do_perms(profile, state, AA_MAY_ACCEPT, &sa); + } + + return aa_profile_af_sk_perm(profile, &sa, AA_MAY_ACCEPT, sk); +} + +/* ability of sock to connect, not peer address binding */ +int aa_unix_accept_perm(struct socket *sock, struct socket *newsock) +{ + struct aa_profile *profile; + struct aa_label *label; + int error = 0; + + label = begin_current_label_crit_section(); + if (!(unconfined(label) || UNIX_FS(sock->sk))) + error = fn_for_each_confined(label, profile, + profile_accept_perm(profile, sock->sk, + newsock->sk)); + end_current_label_crit_section(label); + + return error; +} + + +/* dgram handled by unix_may_sendmsg, right to send on stream done at connect + * could do per msg unix_stream here + */ +/* sendmsg, recvmsg */ +int aa_unix_msg_perm(const char *op, u32 request, struct socket *sock, + struct msghdr *msg, int size) +{ + return 0; +} + + +static int profile_opt_perm(struct aa_profile *profile, const char *op, u32 request, + struct sock *sk, int level, int optname) +{ + unsigned int state; + DEFINE_AUDIT_SK(sa, op, sk); + + AA_BUG(!profile); + AA_BUG(!sk); + AA_BUG(UNIX_FS(sk)); + AA_BUG(profile_unconfined(profile)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + __be16 b = cpu_to_be16(optname); + + state = match_to_cmd(profile, state, unix_sk(sk), CMD_OPT, + &aad(&sa)->info); + if (state) { + state = aa_dfa_match_len(profile->policy.dfa, state, + (char *) &b, 2); + if (!state) + aad(&sa)->info = "failed sockopt match"; + } + return do_perms(profile, state, request, &sa); + } + + return aa_profile_af_sk_perm(profile, &sa, request, sk); +} + +int aa_unix_opt_perm(const char *op, u32 request, struct socket *sock, int level, + int optname) +{ + struct aa_profile *profile; + struct aa_label *label; + int error = 0; + + label = begin_current_label_crit_section(); + if (!(unconfined(label) || UNIX_FS(sock->sk))) + error = fn_for_each_confined(label, profile, + profile_opt_perm(profile, op, request, + sock->sk, level, optname)); + end_current_label_crit_section(label); + + return error; +} + +/* null peer_label is allowed, in which case the peer_sk label is used */ +static int profile_peer_perm(struct aa_profile *profile, const char *op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label, + struct common_audit_data *sa) +{ + unsigned int state; + + AA_BUG(!profile); + AA_BUG(profile_unconfined(profile)); + AA_BUG(!sk); + AA_BUG(!peer_sk); + AA_BUG(UNIX_FS(peer_sk)); + + state = PROFILE_MEDIATES_AF(profile, AF_UNIX); + if (state) { + struct aa_sk_ctx *peer_ctx = aa_sock(peer_sk); + struct aa_profile *peerp; + struct sockaddr_un *addr = NULL; + int len = 0; + if (unix_sk(peer_sk)->addr) { + addr = unix_sk(peer_sk)->addr->name; + len = unix_sk(peer_sk)->addr->len; + } + state = match_to_peer(profile, state, unix_sk(sk), + addr, len, &aad(sa)->info); + if (!peer_label) + peer_label = peer_ctx->label; + return fn_for_each_in_ns(peer_label, peerp, + match_label(profile, peerp, state, request, + sa)); + } + + return aa_profile_af_sk_perm(profile, sa, request, sk); +} + +/** + * + * Requires: lock held on both @sk and @peer_sk + */ +int aa_unix_peer_perm(struct aa_label *label, const char *op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label) +{ + struct unix_sock *peeru = unix_sk(peer_sk); + struct unix_sock *u = unix_sk(sk); + + AA_BUG(!label); + AA_BUG(!sk); + AA_BUG(!peer_sk); + + if (UNIX_FS(aa_unix_sk(peeru))) + return unix_fs_perm(op, request, label, peeru, 0); + else if (UNIX_FS(aa_unix_sk(u))) + return unix_fs_perm(op, request, label, u, 0); + else { + struct aa_profile *profile; + DEFINE_AUDIT_SK(sa, op, sk); + aad(&sa)->net.peer_sk = peer_sk; + + /* TODO: ns!!! */ + if (!net_eq(sock_net(sk), sock_net(peer_sk))) { + ; + } + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + profile_peer_perm(profile, op, request, sk, + peer_sk, peer_label, &sa)); + } +} + + +/* from net/unix/af_unix.c */ +static void unix_state_double_lock(struct sock *sk1, struct sock *sk2) +{ + if (unlikely(sk1 == sk2) || !sk2) { + unix_state_lock(sk1); + return; + } + if (sk1 < sk2) { + unix_state_lock(sk1); + unix_state_lock_nested(sk2); + } else { + unix_state_lock(sk2); + unix_state_lock_nested(sk1); + } +} + +static void unix_state_double_unlock(struct sock *sk1, struct sock *sk2) +{ + if (unlikely(sk1 == sk2) || !sk2) { + unix_state_unlock(sk1); + return; + } + unix_state_unlock(sk1); + unix_state_unlock(sk2); +} + +int aa_unix_file_perm(struct aa_label *label, const char *op, u32 request, + struct socket *sock) +{ + struct sock *peer_sk = NULL; + u32 sk_req = request & ~NET_PEER_MASK; + int error = 0; + + AA_BUG(!label); + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(sock->sk->sk_family != AF_UNIX); + + /* TODO: update sock label with new task label */ + unix_state_lock(sock->sk); + peer_sk = unix_peer(sock->sk); + if (peer_sk) + sock_hold(peer_sk); + if (!unix_connected(sock) && sk_req) { + error = unix_label_sock_perm(label, op, sk_req, sock); + if (!error) { + // update label + } + } + unix_state_unlock(sock->sk); + if (!peer_sk) + return error; + + unix_state_double_lock(sock->sk, peer_sk); + if (UNIX_FS(sock->sk)) { + error = unix_fs_perm(op, request, label, unix_sk(sock->sk), + PATH_SOCK_COND); + } else if (UNIX_FS(peer_sk)) { + error = unix_fs_perm(op, request, label, unix_sk(peer_sk), + PATH_SOCK_COND); + } else { + struct aa_sk_ctx *pctx = aa_sock(peer_sk); + if (sk_req) + error = aa_unix_label_sk_perm(label, op, sk_req, + sock->sk); + last_error(error, + xcheck(aa_unix_peer_perm(label, op, + MAY_READ | MAY_WRITE, + sock->sk, peer_sk, NULL), + aa_unix_peer_perm(pctx->label, op, + MAY_READ | MAY_WRITE, + peer_sk, sock->sk, label))); + } + + unix_state_double_unlock(sock->sk, peer_sk); + sock_put(peer_sk); + + return error; +} --- linux-5.8.0.orig/security/apparmor/apparmorfs.c +++ linux-5.8.0/security/apparmor/apparmorfs.c @@ -2348,6 +2348,11 @@ { } }; +static struct aa_sfs_entry aa_sfs_entry_dbus[] = { + AA_SFS_FILE_STRING("mask", "acquire send receive"), + { } +}; + static struct aa_sfs_entry aa_sfs_entry_query_label[] = { AA_SFS_FILE_STRING("perms", "allow deny audit quiet"), AA_SFS_FILE_BOOLEAN("data", 1), @@ -2364,6 +2369,7 @@ AA_SFS_DIR("domain", aa_sfs_entry_domain), AA_SFS_DIR("file", aa_sfs_entry_file), AA_SFS_DIR("network_v8", aa_sfs_entry_network), + AA_SFS_DIR("network", aa_sfs_entry_network_compat), AA_SFS_DIR("mount", aa_sfs_entry_mount), AA_SFS_DIR("namespaces", aa_sfs_entry_ns), AA_SFS_FILE_U64("capability", VFS_CAP_FLAGS_MASK), @@ -2371,6 +2377,7 @@ AA_SFS_DIR("caps", aa_sfs_entry_caps), AA_SFS_DIR("ptrace", aa_sfs_entry_ptrace), AA_SFS_DIR("signal", aa_sfs_entry_signal), + AA_SFS_DIR("dbus", aa_sfs_entry_dbus), AA_SFS_DIR("query", aa_sfs_entry_query), { } }; --- linux-5.8.0.orig/security/apparmor/crypto.c +++ linux-5.8.0/security/apparmor/crypto.c @@ -25,6 +25,25 @@ return apparmor_hash_size; } +void aa_snprint_hashstr(char *out, unsigned char *hash, unsigned int hsize) +{ + unsigned int i; + + for (i = 0; i < hsize; i++) + sprintf(out + i*2, "%.2x", hash[i]); + out[hsize*2] = 0; +} + +char *aa_asprint_hashstr(unsigned char *hash, unsigned int hsize, gfp_t gfp) +{ + char *buffer = kmalloc(hsize*2 + 1, gfp); + if (!buffer) + return NULL; + aa_snprint_hashstr(buffer, hash, hsize); + + return buffer; +} + char *aa_calc_hash(void *data, size_t len) { SHASH_DESC_ON_STACK(desc, apparmor_tfm); --- linux-5.8.0.orig/security/apparmor/file.c +++ linux-5.8.0/security/apparmor/file.c @@ -12,6 +12,7 @@ #include #include +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/audit.h" #include "include/cred.h" @@ -280,7 +281,8 @@ { int e = 0; - if (profile_unconfined(profile)) + if (profile_unconfined(profile) || + ((flags & PATH_SOCK_COND) && !PROFILE_MEDIATES_AF(profile, AF_UNIX))) return 0; aa_str_perms(profile->file.dfa, profile->file.start, name, cond, perms); if (request & ~perms->allow) --- linux-5.8.0.orig/security/apparmor/include/af_unix.h +++ linux-5.8.0/security/apparmor/include/af_unix.h @@ -0,0 +1,114 @@ +/* + * AppArmor security module + * + * This file contains AppArmor af_unix fine grained mediation + * + * Copyright 2014 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ +#ifndef __AA_AF_UNIX_H + +#include + +#include "label.h" +//#include "include/net.h" + +#define unix_addr_len(L) ((L) - sizeof(sa_family_t)) +#define unix_abstract_name_len(L) (unix_addr_len(L) - 1) +#define unix_abstract_len(U) (unix_abstract_name_len((U)->addr->len)) +#define addr_unix_abstract_name(B) ((B)[0] == 0) +#define addr_unix_anonymous(U) (addr_unix_len(U) <= 0) +#define addr_unix_abstract(U) (!addr_unix_anonymous(U) && addr_unix_abstract_name((U)->addr)) +//#define unix_addr_fs(U) (!unix_addr_anonymous(U) && !unix_addr_abstract_name((U)->addr)) + +#define unix_addr(A) ((struct sockaddr_un *)(A)) +#define unix_addr_anon(A, L) ((A) && unix_addr_len(L) <= 0) +#define unix_addr_fs(A, L) (!unix_addr_anon(A, L) && !addr_unix_abstract_name(unix_addr(A)->sun_path)) + +#define UNIX_ANONYMOUS(U) (!unix_sk(U)->addr) +/* from net/unix/af_unix.c */ +#define UNIX_ABSTRACT(U) (!UNIX_ANONYMOUS(U) && \ + unix_sk(U)->addr->hash < UNIX_HASH_SIZE) +#define UNIX_FS(U) (!UNIX_ANONYMOUS(U) && unix_sk(U)->addr->name->sun_path[0]) +#define unix_peer(sk) (unix_sk(sk)->peer) +#define unix_connected(S) ((S)->state == SS_CONNECTED) + +static inline void print_unix_addr(struct sockaddr_un *A, int L) +{ + char *buf = (A) ? (char *) &(A)->sun_path : NULL; + int len = unix_addr_len(L); + if (!buf || len <= 0) + printk(" "); + else if (buf[0]) + printk(" %s", buf); + else + /* abstract name len includes leading \0 */ + printk(" %d @%.*s", len - 1, len - 1, buf+1); +}; + +/* + printk("%s: %s: f %d, t %d, p %d", __FUNCTION__, \ + #SK , \ +*/ +#define print_unix_sk(SK) \ +do { \ + struct unix_sock *u = unix_sk(SK); \ + printk("%s: f %d, t %d, p %d", #SK , \ + (SK)->sk_family, (SK)->sk_type, (SK)->sk_protocol); \ + if (u->addr) \ + print_unix_addr(u->addr->name, u->addr->len); \ + else \ + print_unix_addr(NULL, sizeof(sa_family_t)); \ + /* printk("\n");*/ \ +} while (0) + +#define print_sk(SK) \ +do { \ + if (!(SK)) { \ + printk("%s: %s is null\n", __FUNCTION__, #SK); \ + } else if ((SK)->sk_family == PF_UNIX) { \ + print_unix_sk(SK); \ + printk("\n"); \ + } else { \ + printk("%s: %s: family %d\n", __FUNCTION__, #SK , \ + (SK)->sk_family); \ + } \ +} while (0) + +#define print_sock_addr(U) \ +do { \ + printk("%s:\n", __FUNCTION__); \ + printk(" sock %s:", sock_ctx && sock_ctx->label ? aa_label_printk(sock_ctx->label, GFP_ATOMIC); : ""); print_sk(sock); \ + printk(" other %s:", other_ctx && other_ctx->label ? aa_label_printk(other_ctx->label, GFP_ATOMIC); : ""); print_sk(other); \ + printk(" new %s", new_ctx && new_ctx->label ? aa_label_printk(new_ctx->label, GFP_ATOMIC); : ""); print_sk(newsk); \ +} while (0) + + + + +int aa_unix_peer_perm(struct aa_label *label, const char *op, u32 request, + struct sock *sk, struct sock *peer_sk, + struct aa_label *peer_label); +int aa_unix_label_sk_perm(struct aa_label *label, const char *op, u32 request, + struct sock *sk); +int aa_unix_sock_perm(const char *op, u32 request, struct socket *sock); +int aa_unix_create_perm(struct aa_label *label, int family, int type, + int protocol); +int aa_unix_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_unix_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_unix_listen_perm(struct socket *sock, int backlog); +int aa_unix_accept_perm(struct socket *sock, struct socket *newsock); +int aa_unix_msg_perm(const char *op, u32 request, struct socket *sock, + struct msghdr *msg, int size); +int aa_unix_opt_perm(const char *op, u32 request, struct socket *sock, int level, + int optname); +int aa_unix_file_perm(struct aa_label *label, const char *op, u32 request, + struct socket *sock); + +#endif /* __AA_AF_UNIX_H */ --- linux-5.8.0.orig/security/apparmor/include/apparmor.h +++ linux-5.8.0/security/apparmor/include/apparmor.h @@ -20,7 +20,7 @@ #define AA_CLASS_UNKNOWN 1 #define AA_CLASS_FILE 2 #define AA_CLASS_CAP 3 -#define AA_CLASS_DEPRECATED 4 +#define AA_CLASS_NET_COMPAT 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 #define AA_CLASS_MOUNT 7 @@ -28,8 +28,9 @@ #define AA_CLASS_SIGNAL 10 #define AA_CLASS_NET 14 #define AA_CLASS_LABEL 16 +#define AA_CLASS_DISPLAY_LSM 17 -#define AA_CLASS_LAST AA_CLASS_LABEL +#define AA_CLASS_LAST AA_CLASS_DISPLAY_LSM /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; --- linux-5.8.0.orig/security/apparmor/include/crypto.h +++ linux-5.8.0/security/apparmor/include/crypto.h @@ -14,6 +14,8 @@ #ifdef CONFIG_SECURITY_APPARMOR_HASH unsigned int aa_hash_size(void); +void aa_snprint_hashstr(char *out, unsigned char *hash, unsigned int hsize); +char *aa_asprint_hashstr(unsigned char *hash, unsigned int hsize, gfp_t gfp); char *aa_calc_hash(void *data, size_t len); int aa_calc_profile_hash(struct aa_profile *profile, u32 version, void *start, size_t len); @@ -32,6 +34,15 @@ { return 0; } + +void aa_snprint_hashstr(char *out, unsigned char *hash, unsigned int hsize) +{ +} + +char *aa_asprint_hashstr(unsigned char *hash, unsigned int hsize, gfp_t gfp); +{ + return NULL; +} #endif #endif /* __APPARMOR_CRYPTO_H */ --- linux-5.8.0.orig/security/apparmor/include/net.h +++ linux-5.8.0/security/apparmor/include/net.h @@ -49,9 +49,14 @@ struct aa_sk_ctx { struct aa_label *label; struct aa_label *peer; + struct path path; }; -#define SK_CTX(X) ((X)->sk_security) +static inline struct aa_sk_ctx *aa_sock(const struct sock *sk) +{ + return sk->sk_security + apparmor_blob_sizes.lbs_sock; +} + #define SOCK_ctx(X) SOCK_INODE(X)->i_security #define DEFINE_AUDIT_NET(NAME, OP, SK, F, T, P) \ struct lsm_network_audit NAME ## _net = { .sk = (SK), \ @@ -68,11 +73,24 @@ DEFINE_AUDIT_NET(NAME, OP, SK, (SK)->sk_family, (SK)->sk_type, \ (SK)->sk_protocol) +/* struct aa_net - network confinement data + * @allow: basic network families permissions + * @audit: which network permissions to force audit + * @quiet: which network permissions to quiet rejects + */ +struct aa_net_compat { + u16 allow[AF_MAX]; + u16 audit[AF_MAX]; + u16 quiet[AF_MAX]; +}; #define af_select(FAMILY, FN, DEF_FN) \ ({ \ int __e; \ switch ((FAMILY)) { \ + case AF_UNIX: \ + __e = aa_unix_ ## FN; \ + break; \ default: \ __e = DEF_FN; \ } \ @@ -87,6 +105,7 @@ }; extern struct aa_sfs_entry aa_sfs_entry_network[]; +extern struct aa_sfs_entry aa_sfs_entry_network_compat[]; void audit_net_cb(struct audit_buffer *ab, void *va); int aa_profile_af_perm(struct aa_profile *profile, struct common_audit_data *sa, --- linux-5.8.0.orig/security/apparmor/include/path.h +++ linux-5.8.0/security/apparmor/include/path.h @@ -13,6 +13,7 @@ enum path_flags { PATH_IS_DIR = 0x1, /* path is a directory */ + PATH_SOCK_COND = 0x2, PATH_CONNECT_PATH = 0x4, /* connect disconnected paths to / */ PATH_CHROOT_REL = 0x8, /* do path lookup relative to chroot */ PATH_CHROOT_NSCONNECT = 0x10, /* connect paths that are at ns root */ --- linux-5.8.0.orig/security/apparmor/include/policy.h +++ linux-5.8.0/security/apparmor/include/policy.h @@ -108,6 +108,7 @@ * @policy: general match rules governing policy * @file: The set of rules governing basic file access and domain transitions * @caps: capabilities for the profile + * @net_compat: v2 compat network controls for the profile * @rlimits: rlimits for the profile * * @dents: dentries for the profiles file entries in apparmorfs @@ -145,6 +146,7 @@ struct aa_policydb policy; struct aa_file_rules file; struct aa_caps caps; + struct aa_net_compat *net_compat; int xattr_count; char **xattrs; @@ -228,9 +230,13 @@ unsigned int state = PROFILE_MEDIATES(profile, AA_CLASS_NET); __be16 be_af = cpu_to_be16(AF); - if (!state) - return 0; - return aa_dfa_match_len(profile->policy.dfa, state, (char *) &be_af, 2); + if (!state) { + state = PROFILE_MEDIATES(profile, AA_CLASS_NET_COMPAT); + if (!state) + return 0; + } + state = aa_dfa_match_len(profile->policy.dfa, state, (char *) &be_af, 2); + return state; } /** --- linux-5.8.0.orig/security/apparmor/include/procattr.h +++ linux-5.8.0/security/apparmor/include/procattr.h @@ -11,7 +11,7 @@ #ifndef __AA_PROCATTR_H #define __AA_PROCATTR_H -int aa_getprocattr(struct aa_label *label, char **string); +int aa_getprocattr(struct aa_label *label, char **string, bool newline); int aa_setprocattr_changehat(char *args, size_t size, int flags); #endif /* __AA_PROCATTR_H */ --- linux-5.8.0.orig/security/apparmor/include/secid.h +++ linux-5.8.0/security/apparmor/include/secid.h @@ -21,6 +21,9 @@ /* secid value that matches any other secid */ #define AA_SECID_WILDCARD 1 +/* sysctl to enable displaying mode when converting secid to secctx */ +extern int apparmor_display_secid_mode; + struct aa_label *aa_secid_to_label(u32 secid); int apparmor_secid_to_secctx(u32 secid, char **secdata, u32 *seclen); int apparmor_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid); --- linux-5.8.0.orig/security/apparmor/label.c +++ linux-5.8.0/security/apparmor/label.c @@ -1632,13 +1632,10 @@ AA_BUG(!str && size != 0); AA_BUG(!label); - if (flags & FLAG_ABS_ROOT) { + if (flags & FLAG_ABS_ROOT) ns = root_ns; - len = snprintf(str, size, "="); - update_for_len(total, len, size, str); - } else if (!ns) { + else if (!ns) ns = labels_ns(label); - } label_for_each(i, label, profile) { if (aa_ns_visible(ns, profile->ns, flags & FLAG_VIEW_SUBNS)) { --- linux-5.8.0.orig/security/apparmor/lib.c +++ linux-5.8.0/security/apparmor/lib.c @@ -334,7 +334,7 @@ /* for v5 perm mapping in the policydb, the other set is used * to extend the general perm set */ - perms->allow |= map_other(dfa_other_allow(dfa, state)); + perms->allow |= map_other(dfa_other_allow(dfa, state)) | AA_MAY_LOCK; perms->audit |= map_other(dfa_other_audit(dfa, state)); perms->quiet |= map_other(dfa_other_quiet(dfa, state)); // perms->xindex = dfa_user_xindex(dfa, state); --- linux-5.8.0.orig/security/apparmor/lsm.c +++ linux-5.8.0/security/apparmor/lsm.c @@ -25,6 +25,7 @@ #include #include +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/apparmorfs.h" #include "include/audit.h" @@ -593,6 +594,7 @@ const struct cred *cred = get_task_cred(task); struct aa_task_ctx *ctx = task_ctx(current); struct aa_label *label = NULL; + bool newline = true; if (strcmp(name, "current") == 0) label = aa_get_newest_label(cred_label(cred)); @@ -600,11 +602,14 @@ label = aa_get_newest_label(ctx->previous); else if (strcmp(name, "exec") == 0 && ctx->onexec) label = aa_get_newest_label(ctx->onexec); - else + else if (strcmp(name, "context") == 0) { + label = aa_get_newest_label(cred_label(cred)); + newline = false; + } else error = -EINVAL; if (label) - error = aa_getprocattr(label, value); + error = aa_getprocattr(label, value, newline); aa_put_label(label); put_cred(cred); @@ -612,6 +617,25 @@ return error; } + +static int profile_display_lsm(struct aa_profile *profile, + struct common_audit_data *sa) +{ + struct aa_perms perms = { }; + unsigned int state; + + state = PROFILE_MEDIATES(profile, AA_CLASS_DISPLAY_LSM); + if (state) { + aa_compute_perms(profile->policy.dfa, state, &perms); + aa_apply_modes_to_perms(profile, &perms); + aad(sa)->label = &profile->label; + + return aa_check_perms(profile, &perms, AA_MAY_WRITE, sa, NULL); + } + + return 0; +} + static int apparmor_setprocattr(const char *name, void *value, size_t size) { @@ -623,6 +647,19 @@ if (size == 0) return -EINVAL; + /* LSM infrastructure does actual setting of display if allowed */ + if (!strcmp(name, "display")) { + struct aa_profile *profile; + struct aa_label *label; + + aad(&sa)->info = "set display lsm"; + label = begin_current_label_crit_section(); + error = fn_for_each_confined(label, profile, + profile_display_lsm(profile, &sa)); + end_current_label_crit_section(label); + return error; + } + /* AppArmor requires that the buffer must be null terminated atm */ if (args[size - 1] != '\0') { /* null terminate */ @@ -767,32 +804,15 @@ } /** - * apparmor_sk_alloc_security - allocate and attach the sk_security field - */ -static int apparmor_sk_alloc_security(struct sock *sk, int family, gfp_t flags) -{ - struct aa_sk_ctx *ctx; - - ctx = kzalloc(sizeof(*ctx), flags); - if (!ctx) - return -ENOMEM; - - SK_CTX(sk) = ctx; - - return 0; -} - -/** * apparmor_sk_free_security - free the sk_security field */ static void apparmor_sk_free_security(struct sock *sk) { - struct aa_sk_ctx *ctx = SK_CTX(sk); + struct aa_sk_ctx *ctx = aa_sock(sk); - SK_CTX(sk) = NULL; aa_put_label(ctx->label); aa_put_label(ctx->peer); - kfree(ctx); + path_put(&ctx->path); } /** @@ -801,8 +821,8 @@ static void apparmor_sk_clone_security(const struct sock *sk, struct sock *newsk) { - struct aa_sk_ctx *ctx = SK_CTX(sk); - struct aa_sk_ctx *new = SK_CTX(newsk); + struct aa_sk_ctx *ctx = aa_sock(sk); + struct aa_sk_ctx *new = aa_sock(newsk); if (new->label) aa_put_label(new->label); @@ -811,6 +831,99 @@ if (new->peer) aa_put_label(new->peer); new->peer = aa_get_label(ctx->peer); + new->path = ctx->path; + path_get(&new->path); +} + +static struct path *UNIX_FS_CONN_PATH(struct sock *sk, struct sock *newsk) +{ + if (sk->sk_family == PF_UNIX && UNIX_FS(sk)) + return &unix_sk(sk)->path; + else if (newsk->sk_family == PF_UNIX && UNIX_FS(newsk)) + return &unix_sk(newsk)->path; + return NULL; +} + +/** + * apparmor_unix_stream_connect - check perms before making unix domain conn + * + * peer is locked when this hook is called + */ +static int apparmor_unix_stream_connect(struct sock *sk, struct sock *peer_sk, + struct sock *newsk) +{ + struct aa_sk_ctx *sk_ctx = aa_sock(sk); + struct aa_sk_ctx *peer_ctx = aa_sock(peer_sk); + struct aa_sk_ctx *new_ctx = aa_sock(newsk); + struct aa_label *label; + struct path *path; + int error; + + label = __begin_current_label_crit_section(); + error = aa_unix_peer_perm(label, OP_CONNECT, + (AA_MAY_CONNECT | AA_MAY_SEND | AA_MAY_RECEIVE), + sk, peer_sk, NULL); + if (!UNIX_FS(peer_sk)) { + last_error(error, + aa_unix_peer_perm(peer_ctx->label, OP_CONNECT, + (AA_MAY_ACCEPT | AA_MAY_SEND | AA_MAY_RECEIVE), + peer_sk, sk, label)); + } + __end_current_label_crit_section(label); + + if (error) + return error; + + /* label newsk if it wasn't labeled in post_create. Normally this + * would be done in sock_graft, but because we are directly looking + * at the peer_sk to obtain peer_labeling for unix socks this + * does not work + */ + if (!new_ctx->label) + new_ctx->label = aa_get_label(peer_ctx->label); + + /* Cross reference the peer labels for SO_PEERSEC */ + if (new_ctx->peer) + aa_put_label(new_ctx->peer); + + if (sk_ctx->peer) + aa_put_label(sk_ctx->peer); + + new_ctx->peer = aa_get_label(sk_ctx->label); + sk_ctx->peer = aa_get_label(peer_ctx->label); + + path = UNIX_FS_CONN_PATH(sk, peer_sk); + if (path) { + new_ctx->path = *path; + sk_ctx->path = *path; + path_get(path); + path_get(path); + } + return 0; +} + +/** + * apparmor_unix_may_send - check perms before conn or sending unix dgrams + * + * other is locked when this hook is called + * + * dgram connect calls may_send, peer setup but path not copied????? + */ +static int apparmor_unix_may_send(struct socket *sock, struct socket *peer) +{ + struct aa_sk_ctx *peer_ctx = aa_sock(peer->sk); + struct aa_label *label; + int error; + + label = __begin_current_label_crit_section(); + error = xcheck(aa_unix_peer_perm(label, OP_SENDMSG, AA_MAY_SEND, + sock->sk, peer->sk, NULL), + aa_unix_peer_perm(peer_ctx->label, OP_SENDMSG, + AA_MAY_RECEIVE, + peer->sk, sock->sk, label)); + __end_current_label_crit_section(label); + + return error; } /** @@ -858,7 +971,7 @@ label = aa_get_current_label(); if (sock->sk) { - struct aa_sk_ctx *ctx = SK_CTX(sock->sk); + struct aa_sk_ctx *ctx = aa_sock(sock->sk); aa_put_label(ctx->label); ctx->label = aa_get_label(label); @@ -1043,7 +1156,7 @@ */ static int apparmor_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) { - struct aa_sk_ctx *ctx = SK_CTX(sk); + struct aa_sk_ctx *ctx = aa_sock(sk); if (!skb->secmark) return 0; @@ -1056,12 +1169,28 @@ static struct aa_label *sk_peer_label(struct sock *sk) { - struct aa_sk_ctx *ctx = SK_CTX(sk); + struct sock *peer_sk; + struct aa_sk_ctx *ctx = aa_sock(sk); + struct aa_label *label = ERR_PTR(-ENOPROTOOPT); if (ctx->peer) - return ctx->peer; + return aa_get_label(ctx->peer); - return ERR_PTR(-ENOPROTOOPT); + if (sk->sk_family != PF_UNIX) + return ERR_PTR(-ENOPROTOOPT); + + /* check for sockpair peering which does not go through + * security_unix_stream_connect + */ + peer_sk = unix_peer_get(sk); + if (peer_sk) { + ctx = aa_sock(peer_sk); + if (ctx->label) + label = aa_get_label(ctx->label); + sock_put(peer_sk); + } + + return label; } /** @@ -1105,6 +1234,7 @@ } + aa_put_label(peer); done: end_current_label_crit_section(label); @@ -1112,22 +1242,6 @@ } /** - * apparmor_socket_getpeersec_dgram - get security label of packet - * @sock: the peer socket - * @skb: packet data - * @secid: pointer to where to put the secid of the packet - * - * Sets the netlabel socket state on sk from parent - */ -static int apparmor_socket_getpeersec_dgram(struct socket *sock, - struct sk_buff *skb, u32 *secid) - -{ - /* TODO: requires secid support */ - return -ENOPROTOOPT; -} - -/** * apparmor_sock_graft - Initialize newly created socket * @sk: child sock * @parent: parent socket @@ -1140,7 +1254,7 @@ */ static void apparmor_sock_graft(struct sock *sk, struct socket *parent) { - struct aa_sk_ctx *ctx = SK_CTX(sk); + struct aa_sk_ctx *ctx = aa_sock(sk); if (!ctx->label) ctx->label = aa_get_current_label(); @@ -1150,7 +1264,7 @@ static int apparmor_inet_conn_request(struct sock *sk, struct sk_buff *skb, struct request_sock *req) { - struct aa_sk_ctx *ctx = SK_CTX(sk); + struct aa_sk_ctx *ctx = aa_sock(sk); if (!skb->secmark) return 0; @@ -1167,6 +1281,12 @@ .lbs_cred = sizeof(struct aa_task_ctx *), .lbs_file = sizeof(struct aa_file_ctx), .lbs_task = sizeof(struct aa_task_ctx), + .lbs_sock = sizeof(struct aa_sk_ctx), +}; + +static struct lsm_id apparmor_lsmid __lsm_ro_after_init = { + .lsm = "apparmor", + .slot = LSMBLOB_NEEDED }; static struct security_hook_list apparmor_hooks[] __lsm_ro_after_init = { @@ -1203,10 +1323,12 @@ LSM_HOOK_INIT(getprocattr, apparmor_getprocattr), LSM_HOOK_INIT(setprocattr, apparmor_setprocattr), - LSM_HOOK_INIT(sk_alloc_security, apparmor_sk_alloc_security), LSM_HOOK_INIT(sk_free_security, apparmor_sk_free_security), LSM_HOOK_INIT(sk_clone_security, apparmor_sk_clone_security), + LSM_HOOK_INIT(unix_stream_connect, apparmor_unix_stream_connect), + LSM_HOOK_INIT(unix_may_send, apparmor_unix_may_send), + LSM_HOOK_INIT(socket_create, apparmor_socket_create), LSM_HOOK_INIT(socket_post_create, apparmor_socket_post_create), LSM_HOOK_INIT(socket_bind, apparmor_socket_bind), @@ -1225,8 +1347,6 @@ #endif LSM_HOOK_INIT(socket_getpeersec_stream, apparmor_socket_getpeersec_stream), - LSM_HOOK_INIT(socket_getpeersec_dgram, - apparmor_socket_getpeersec_dgram), LSM_HOOK_INIT(sock_graft, apparmor_sock_graft), #ifdef CONFIG_NETWORK_SECMARK LSM_HOOK_INIT(inet_conn_request, apparmor_inet_conn_request), @@ -1724,6 +1844,14 @@ .mode = 0600, .proc_handler = apparmor_dointvec, }, + { + .procname = "apparmor_display_secid_mode", + .data = &apparmor_display_secid_mode, + .maxlen = sizeof(int), + .mode = 0600, + .proc_handler = apparmor_dointvec, + }, + { } }; @@ -1754,7 +1882,7 @@ if (sk == NULL) return NF_ACCEPT; - ctx = SK_CTX(sk); + ctx = aa_sock(sk); if (!apparmor_secmark_check(ctx->label, OP_SENDMSG, AA_MAY_SEND, skb->secmark, sk)) return NF_ACCEPT; @@ -1870,7 +1998,7 @@ goto buffers_out; } security_add_hooks(apparmor_hooks, ARRAY_SIZE(apparmor_hooks), - "apparmor"); + &apparmor_lsmid); /* Report that AppArmor successfully initialized */ apparmor_initialized = 1; @@ -1895,7 +2023,7 @@ DEFINE_LSM(apparmor) = { .name = "apparmor", - .flags = LSM_FLAG_LEGACY_MAJOR | LSM_FLAG_EXCLUSIVE, + .flags = LSM_FLAG_LEGACY_MAJOR, .enabled = &apparmor_enabled, .blobs = &apparmor_blob_sizes, .init = apparmor_init, --- linux-5.8.0.orig/security/apparmor/net.c +++ linux-5.8.0/security/apparmor/net.c @@ -8,6 +8,7 @@ * Copyright 2009-2017 Canonical Ltd. */ +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/audit.h" #include "include/cred.h" @@ -24,6 +25,12 @@ { } }; +struct aa_sfs_entry aa_sfs_entry_network_compat[] = { + AA_SFS_FILE_STRING("af_mask", AA_SFS_AF_MASK), + AA_SFS_FILE_BOOLEAN("af_unix", 1), + { } +}; + static const char * const net_mask_names[] = { "unknown", "send", @@ -66,6 +73,36 @@ "unknown", }; +static void audit_unix_addr(struct audit_buffer *ab, const char *str, + struct sockaddr_un *addr, int addrlen) +{ + int len = unix_addr_len(addrlen); + + if (!addr || len <= 0) { + audit_log_format(ab, " %s=none", str); + } else if (addr->sun_path[0]) { + audit_log_format(ab, " %s=", str); + audit_log_untrustedstring(ab, addr->sun_path); + } else { + audit_log_format(ab, " %s=\"@", str); + if (audit_string_contains_control(&addr->sun_path[1], len - 1)) + audit_log_n_hex(ab, &addr->sun_path[1], len - 1); + else + audit_log_format(ab, "%.*s", len - 1, + &addr->sun_path[1]); + audit_log_format(ab, "\""); + } +} + +static void audit_unix_sk_addr(struct audit_buffer *ab, const char *str, + struct sock *sk) +{ + struct unix_sock *u = unix_sk(sk); + if (u && u->addr) + audit_unix_addr(ab, str, u->addr->name, u->addr->len); + else + audit_unix_addr(ab, str, NULL, 0); +} /* audit callback for net specific fields */ void audit_net_cb(struct audit_buffer *ab, void *va) @@ -95,6 +132,23 @@ net_mask_names, NET_PERMS_MASK); } } + if (sa->u.net->family == AF_UNIX) { + if ((aad(sa)->request & ~NET_PEER_MASK) && aad(sa)->net.addr) + audit_unix_addr(ab, "addr", + unix_addr(aad(sa)->net.addr), + aad(sa)->net.addrlen); + else + audit_unix_sk_addr(ab, "addr", sa->u.net->sk); + if (aad(sa)->request & NET_PEER_MASK) { + if (aad(sa)->net.addr) + audit_unix_addr(ab, "peer_addr", + unix_addr(aad(sa)->net.addr), + aad(sa)->net.addrlen); + else + audit_unix_sk_addr(ab, "peer_addr", + aad(sa)->net.peer_sk); + } + } if (aad(sa)->peer) { audit_log_format(ab, " peer="); aa_label_xaudit(ab, labels_ns(aad(sa)->label), aad(sa)->peer, @@ -116,14 +170,26 @@ if (profile_unconfined(profile)) return 0; state = PROFILE_MEDIATES(profile, AA_CLASS_NET); - if (!state) - return 0; + if (state) { + if (!state) + return 0; + buffer[0] = cpu_to_be16(family); + buffer[1] = cpu_to_be16((u16) type); + state = aa_dfa_match_len(profile->policy.dfa, state, + (char *) &buffer, 4); + aa_compute_perms(profile->policy.dfa, state, &perms); + } else if (profile->net_compat) { + /* 2.x socket mediation compat */ + perms.allow = (profile->net_compat->allow[family] & (1 << type)) ? + ALL_PERMS_MASK : 0; + perms.audit = (profile->net_compat->audit[family] & (1 << type)) ? + ALL_PERMS_MASK : 0; + perms.quiet = (profile->net_compat->quiet[family] & (1 << type)) ? + ALL_PERMS_MASK : 0; - buffer[0] = cpu_to_be16(family); - buffer[1] = cpu_to_be16((u16) type); - state = aa_dfa_match_len(profile->policy.dfa, state, (char *) &buffer, - 4); - aa_compute_perms(profile->policy.dfa, state, &perms); + } else { + return 0; + } aa_apply_modes_to_perms(profile, &perms); return aa_check_perms(profile, &perms, request, sa, audit_net_cb); @@ -183,7 +249,9 @@ AA_BUG(!sock); AA_BUG(!sock->sk); - return aa_label_sk_perm(label, op, request, sock->sk); + return af_select(sock->sk->sk_family, + file_perm(label, op, request, sock), + aa_label_sk_perm(label, op, request, sock->sk)); } #ifdef CONFIG_NETWORK_SECMARK --- linux-5.8.0.orig/security/apparmor/policy.c +++ linux-5.8.0/security/apparmor/policy.c @@ -222,6 +222,7 @@ aa_free_file_rules(&profile->file); aa_free_cap_rules(&profile->caps); aa_free_rlimit_rules(&profile->rlimits); + kzfree(profile->net_compat); for (i = 0; i < profile->xattr_count; i++) kzfree(profile->xattrs[i]); --- linux-5.8.0.orig/security/apparmor/policy_unpack.c +++ linux-5.8.0/security/apparmor/policy_unpack.c @@ -34,7 +34,7 @@ #define v5 5 /* base version */ #define v6 6 /* per entry policydb mediation check */ -#define v7 7 +#define v7 7 /* v2 compat networking */ #define v8 8 /* full network masking */ /* @@ -314,6 +314,19 @@ return false; } +static bool unpack_u16(struct aa_ext *e, u16 *data, const char *name) +{ + if (unpack_nameX(e, AA_U16, name)) { + if (!inbounds(e, sizeof(u16))) + return 0; + if (data) + *data = le16_to_cpu(get_unaligned((__le16 *) e->pos)); + e->pos += sizeof(u16); + return 1; + } + return 0; +} + static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name) { void *pos = e->pos; @@ -676,7 +689,7 @@ struct aa_profile *profile = NULL; const char *tmpname, *tmpns = NULL, *name = NULL; const char *info = "failed to unpack profile"; - size_t ns_len; + size_t size = 0, ns_len; struct rhashtable_params params = { 0 }; char *key = NULL; struct aa_data *data; @@ -823,6 +836,43 @@ goto fail; } + size = unpack_array(e, "net_allowed_af"); + if (size || VERSION_LT(e->version, v8)) { + profile->net_compat = kzalloc(sizeof(struct aa_net_compat), GFP_KERNEL); + if (!profile->net_compat) { + info = "out of memory"; + goto fail; + } + for (i = 0; i < size; i++) { + /* discard extraneous rules that this kernel will + * never request + */ + if (i >= AF_MAX) { + u16 tmp; + + if (!unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL)) + goto fail; + continue; + } + if (!unpack_u16(e, &profile->net_compat->allow[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net_compat->audit[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net_compat->quiet[i], NULL)) + goto fail; + } + if (size && !unpack_nameX(e, AA_ARRAYEND, NULL)) + goto fail; + if (VERSION_LT(e->version, v7)) { + /* pre v7 policy always allowed these */ + profile->net_compat->allow[AF_UNIX] = 0xffff; + profile->net_compat->allow[AF_NETLINK] = 0xffff; + } + } + + if (unpack_nameX(e, AA_STRUCT, "policydb")) { /* generic policy dfa - optional and may be NULL */ info = "failed to unpack policydb"; --- linux-5.8.0.orig/security/apparmor/procattr.c +++ linux-5.8.0/security/apparmor/procattr.c @@ -20,6 +20,7 @@ * aa_getprocattr - Return the profile information for @profile * @profile: the profile to print profile info about (NOT NULL) * @string: Returns - string containing the profile info (NOT NULL) + * @newline: Should a newline be added to @string. * * Returns: length of @string on success else error on failure * @@ -30,20 +31,21 @@ * * Returns: size of string placed in @string else error code on failure */ -int aa_getprocattr(struct aa_label *label, char **string) +int aa_getprocattr(struct aa_label *label, char **string, bool newline) { struct aa_ns *ns = labels_ns(label); struct aa_ns *current_ns = aa_get_current_ns(); + int flags = FLAG_VIEW_SUBNS | FLAG_HIDDEN_UNCONFINED; int len; if (!aa_ns_visible(current_ns, ns, true)) { aa_put_ns(current_ns); return -EACCES; } + if (newline) + flags |= FLAG_SHOW_MODE; - len = aa_label_snxprint(NULL, 0, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(NULL, 0, current_ns, label, flags); AA_BUG(len < 0); *string = kmalloc(len + 2, GFP_KERNEL); @@ -52,19 +54,19 @@ return -ENOMEM; } - len = aa_label_snxprint(*string, len + 2, current_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED); + len = aa_label_snxprint(*string, len + 2, current_ns, label, flags); if (len < 0) { aa_put_ns(current_ns); return len; } - (*string)[len] = '\n'; - (*string)[len + 1] = 0; + if (newline) { + (*string)[len] = '\n'; + (*string)[++len] = 0; + } aa_put_ns(current_ns); - return len + 1; + return len; } /** --- linux-5.8.0.orig/security/apparmor/secid.c +++ linux-5.8.0/security/apparmor/secid.c @@ -32,6 +32,8 @@ static DEFINE_IDR(aa_secids); static DEFINE_SPINLOCK(secid_lock); +int apparmor_display_secid_mode = 0; + /* * TODO: allow policy to reserve a secid range? * TODO: add secid pinning @@ -71,6 +73,7 @@ { /* TODO: cache secctx and ref count so we don't have to recreate */ struct aa_label *label = aa_secid_to_label(secid); + int flags = FLAG_VIEW_SUBNS | FLAG_HIDDEN_UNCONFINED | FLAG_ABS_ROOT; int len; AA_BUG(!seclen); @@ -78,15 +81,15 @@ if (!label) return -EINVAL; + if (apparmor_display_secid_mode) + flags |= FLAG_SHOW_MODE; + if (secdata) len = aa_label_asxprint(secdata, root_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED | FLAG_ABS_ROOT, - GFP_ATOMIC); + flags, GFP_ATOMIC); else - len = aa_label_snxprint(NULL, 0, root_ns, label, - FLAG_SHOW_MODE | FLAG_VIEW_SUBNS | - FLAG_HIDDEN_UNCONFINED | FLAG_ABS_ROOT); + len = aa_label_snxprint(NULL, 0, root_ns, label, flags); + if (len < 0) return -ENOMEM; --- linux-5.8.0.orig/security/bpf/hooks.c +++ linux-5.8.0/security/bpf/hooks.c @@ -13,9 +13,19 @@ #undef LSM_HOOK }; +/* + * slot has to be LSMBLOB_NEEDED because some of the hooks + * supplied by this module require a slot. + */ +struct lsm_id bpf_lsmid __lsm_ro_after_init = { + .lsm = "bpf", + .slot = LSMBLOB_NEEDED +}; + static int __init bpf_lsm_init(void) { - security_add_hooks(bpf_lsm_hooks, ARRAY_SIZE(bpf_lsm_hooks), "bpf"); + security_add_hooks(bpf_lsm_hooks, ARRAY_SIZE(bpf_lsm_hooks), + &bpf_lsmid); pr_info("LSM support for eBPF active\n"); return 0; } --- linux-5.8.0.orig/security/commoncap.c +++ linux-5.8.0/security/commoncap.c @@ -371,10 +371,11 @@ { int size, ret; kuid_t kroot; + u32 nsmagic, magic; uid_t root, mappedroot; char *tmpbuf = NULL; struct vfs_cap_data *cap; - struct vfs_ns_cap_data *nscap; + struct vfs_ns_cap_data *nscap = NULL; struct dentry *dentry; struct user_namespace *fs_ns; @@ -396,46 +397,61 @@ fs_ns = inode->i_sb->s_user_ns; cap = (struct vfs_cap_data *) tmpbuf; if (is_v2header((size_t) ret, cap)) { - /* If this is sizeof(vfs_cap_data) then we're ok with the - * on-disk value, so return that. */ - if (alloc) - *buffer = tmpbuf; - else - kfree(tmpbuf); - return ret; - } else if (!is_v3header((size_t) ret, cap)) { - kfree(tmpbuf); - return -EINVAL; + root = 0; + } else if (is_v3header((size_t) ret, cap)) { + nscap = (struct vfs_ns_cap_data *) tmpbuf; + root = le32_to_cpu(nscap->rootid); + } else { + size = -EINVAL; + goto out_free; } - nscap = (struct vfs_ns_cap_data *) tmpbuf; - root = le32_to_cpu(nscap->rootid); kroot = make_kuid(fs_ns, root); /* If the root kuid maps to a valid uid in current ns, then return * this as a nscap. */ mappedroot = from_kuid(current_user_ns(), kroot); if (mappedroot != (uid_t)-1 && mappedroot != (uid_t)0) { + size = sizeof(struct vfs_ns_cap_data); if (alloc) { - *buffer = tmpbuf; + if (!nscap) { + /* v2 -> v3 conversion */ + nscap = kzalloc(size, GFP_ATOMIC); + if (!nscap) { + size = -ENOMEM; + goto out_free; + } + nsmagic = VFS_CAP_REVISION_3; + magic = le32_to_cpu(cap->magic_etc); + if (magic & VFS_CAP_FLAGS_EFFECTIVE) + nsmagic |= VFS_CAP_FLAGS_EFFECTIVE; + memcpy(&nscap->data, &cap->data, sizeof(__le32) * 2 * VFS_CAP_U32); + nscap->magic_etc = cpu_to_le32(nsmagic); + } else { + /* use allocated v3 buffer */ + tmpbuf = NULL; + } nscap->rootid = cpu_to_le32(mappedroot); - } else - kfree(tmpbuf); - return size; + *buffer = nscap; + } + goto out_free; } if (!rootid_owns_currentns(kroot)) { - kfree(tmpbuf); - return -EOPNOTSUPP; + size = -EOVERFLOW; + goto out_free; } /* This comes from a parent namespace. Return as a v2 capability */ size = sizeof(struct vfs_cap_data); if (alloc) { - *buffer = kmalloc(size, GFP_ATOMIC); - if (*buffer) { - struct vfs_cap_data *cap = *buffer; - __le32 nsmagic, magic; + if (nscap) { + /* v3 -> v2 conversion */ + cap = kzalloc(size, GFP_ATOMIC); + if (!cap) { + size = -ENOMEM; + goto out_free; + } magic = VFS_CAP_REVISION_2; nsmagic = le32_to_cpu(nscap->magic_etc); if (nsmagic & VFS_CAP_FLAGS_EFFECTIVE) @@ -443,9 +459,12 @@ memcpy(&cap->data, &nscap->data, sizeof(__le32) * 2 * VFS_CAP_U32); cap->magic_etc = cpu_to_le32(magic); } else { - size = -ENOMEM; + /* use unconverted v2 */ + tmpbuf = NULL; } + *buffer = cap; } +out_free: kfree(tmpbuf); return size; } @@ -473,7 +492,7 @@ * * If all is ok, we return the new size, on error return < 0. */ -int cap_convert_nscap(struct dentry *dentry, void **ivalue, size_t size) +int cap_convert_nscap(struct dentry *dentry, const void **ivalue, size_t size) { struct vfs_ns_cap_data *nscap; uid_t nsrootid; @@ -516,7 +535,6 @@ nscap->magic_etc = cpu_to_le32(nsmagic); memcpy(&nscap->data, &cap->data, sizeof(__le32) * 2 * VFS_CAP_U32); - kvfree(*ivalue); *ivalue = nscap; return newsize; } @@ -658,7 +676,7 @@ if (!file_caps_enabled) return 0; - if (!mnt_may_suid(file->f_path.mnt)) + if (path_nosuid(&file->f_path)) return 0; /* @@ -1341,6 +1359,11 @@ #ifdef CONFIG_SECURITY +static struct lsm_id capability_lsmid __lsm_ro_after_init = { + .lsm = "capability", + .slot = LSMBLOB_NOT_NEEDED +}; + static struct security_hook_list capability_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(capable, cap_capable), LSM_HOOK_INIT(settime, cap_settime), @@ -1365,7 +1388,7 @@ static int __init capability_init(void) { security_add_hooks(capability_hooks, ARRAY_SIZE(capability_hooks), - "capability"); + &capability_lsmid); return 0; } --- linux-5.8.0.orig/security/device_cgroup.c +++ linux-5.8.0/security/device_cgroup.c @@ -354,7 +354,8 @@ { struct dev_exception_item *ex; - list_for_each_entry_rcu(ex, exceptions, list) { + list_for_each_entry_rcu(ex, exceptions, list, + lockdep_is_held(&devcgroup_mutex)) { if ((type & DEVCG_DEV_BLOCK) && !(ex->type & DEVCG_DEV_BLOCK)) continue; if ((type & DEVCG_DEV_CHAR) && !(ex->type & DEVCG_DEV_CHAR)) --- linux-5.8.0.orig/security/integrity/digsig.c +++ linux-5.8.0/security/integrity/digsig.c @@ -169,7 +169,7 @@ int __init integrity_load_x509(const unsigned int id, const char *path) { - void *data; + void *data = NULL; loff_t size; int rc; key_perm_t perm; @@ -177,7 +177,7 @@ rc = kernel_read_file_from_path(path, &data, &size, 0, READING_X509_CERTIFICATE); if (rc < 0) { - pr_err("Unable to open file: %s (%d)", path, rc); + pr_warn("Unable to open file: %s (%d)", path, rc); return rc; } --- linux-5.8.0.orig/security/integrity/evm/evm_crypto.c +++ linux-5.8.0/security/integrity/evm/evm_crypto.c @@ -73,7 +73,7 @@ { long rc; const char *algo; - struct crypto_shash **tfm, *tmp_tfm; + struct crypto_shash **tfm, *tmp_tfm = NULL; struct shash_desc *desc; if (type == EVM_XATTR_HMAC) { @@ -118,13 +118,16 @@ alloc: desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(*tfm), GFP_KERNEL); - if (!desc) + if (!desc) { + crypto_free_shash(tmp_tfm); return ERR_PTR(-ENOMEM); + } desc->tfm = *tfm; rc = crypto_shash_init(desc); if (rc) { + crypto_free_shash(tmp_tfm); kfree(desc); return ERR_PTR(rc); } --- linux-5.8.0.orig/security/integrity/evm/evm_main.c +++ linux-5.8.0/security/integrity/evm/evm_main.c @@ -181,6 +181,12 @@ break; case EVM_IMA_XATTR_DIGSIG: case EVM_XATTR_PORTABLE_DIGSIG: + /* accept xattr with non-empty signature field */ + if (xattr_len <= sizeof(struct signature_v2_hdr)) { + evm_status = INTEGRITY_FAIL; + goto out; + } + hdr = (struct signature_v2_hdr *)xattr_data; digest.hdr.algo = hdr->hash_algo; rc = evm_calc_hash(dentry, xattr_name, xattr_value, --- linux-5.8.0.orig/security/integrity/iint.c +++ linux-5.8.0/security/integrity/iint.c @@ -98,6 +98,14 @@ struct rb_node *node, *parent = NULL; struct integrity_iint_cache *iint, *test_iint; + /* + * The integrity's "iint_cache" is initialized at security_init(), + * unless it is not included in the ordered list of LSMs enabled + * on the boot command line. + */ + if (!iint_cache) + panic("%s: lsm=integrity required.\n", __func__); + iint = integrity_iint_find(inode); if (iint) return iint; --- linux-5.8.0.orig/security/integrity/ima/Kconfig +++ linux-5.8.0/security/integrity/ima/Kconfig @@ -232,7 +232,7 @@ config IMA_APPRAISE_BOOTPARAM bool "ima_appraise boot parameter" - depends on IMA_APPRAISE && !IMA_ARCH_POLICY + depends on IMA_APPRAISE default y help This option enables the different "ima_appraise=" modes --- linux-5.8.0.orig/security/integrity/ima/ima.h +++ linux-5.8.0/security/integrity/ima/ima.h @@ -236,9 +236,9 @@ #endif /* CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS */ /* LIM API function definitions */ -int ima_get_action(struct inode *inode, const struct cred *cred, u32 secid, - int mask, enum ima_hooks func, int *pcr, - struct ima_template_desc **template_desc, +int ima_get_action(struct inode *inode, const struct cred *cred, + struct lsmblob *blob, int mask, enum ima_hooks func, + int *pcr, struct ima_template_desc **template_desc, const char *keyring); int ima_must_measure(struct inode *inode, int mask, enum ima_hooks func); int ima_collect_measurement(struct integrity_iint_cache *iint, @@ -264,8 +264,9 @@ const char *ima_d_path(const struct path *path, char **pathbuf, char *filename); /* IMA policy related functions */ -int ima_match_policy(struct inode *inode, const struct cred *cred, u32 secid, - enum ima_hooks func, int mask, int flags, int *pcr, +int ima_match_policy(struct inode *inode, const struct cred *cred, + struct lsmblob *blob, enum ima_hooks func, int mask, + int flags, int *pcr, struct ima_template_desc **template_desc, const char *keyring); void ima_init_policy(void); @@ -404,6 +405,7 @@ #ifdef CONFIG_IMA_LSM_RULES #define security_filter_rule_init security_audit_rule_init +#define security_filter_rule_free security_audit_rule_free #define security_filter_rule_match security_audit_rule_match #else @@ -414,7 +416,11 @@ return -EINVAL; } -static inline int security_filter_rule_match(u32 secid, u32 field, u32 op, +static inline void security_filter_rule_free(void *lsmrule) +{ +} + +static inline int security_filter_rule_match(strcut lsmblob *blob, u32 field, u32 op, void *lsmrule) { return -EINVAL; --- linux-5.8.0.orig/security/integrity/ima/ima_api.c +++ linux-5.8.0/security/integrity/ima/ima_api.c @@ -164,7 +164,7 @@ * ima_get_action - appraise & measure decision based on policy. * @inode: pointer to inode to measure * @cred: pointer to credentials structure to validate - * @secid: secid of the task being validated + * @blob: LSM data of the task being validated * @mask: contains the permission mask (MAY_READ, MAY_WRITE, MAY_EXEC, * MAY_APPEND) * @func: caller identifier @@ -183,16 +183,16 @@ * Returns IMA_MEASURE, IMA_APPRAISE mask. * */ -int ima_get_action(struct inode *inode, const struct cred *cred, u32 secid, - int mask, enum ima_hooks func, int *pcr, - struct ima_template_desc **template_desc, +int ima_get_action(struct inode *inode, const struct cred *cred, + struct lsmblob *blob, int mask, enum ima_hooks func, + int *pcr, struct ima_template_desc **template_desc, const char *keyring) { int flags = IMA_MEASURE | IMA_AUDIT | IMA_APPRAISE | IMA_HASH; flags &= ima_policy_flag; - return ima_match_policy(inode, cred, secid, func, mask, flags, pcr, + return ima_match_policy(inode, cred, blob, func, mask, flags, pcr, template_desc, keyring); } --- linux-5.8.0.orig/security/integrity/ima/ima_appraise.c +++ linux-5.8.0/security/integrity/ima/ima_appraise.c @@ -19,6 +19,12 @@ static int __init default_appraise_setup(char *str) { #ifdef CONFIG_IMA_APPRAISE_BOOTPARAM + if (arch_ima_get_secureboot()) { + pr_info("Secure boot enabled: ignoring ima_appraise=%s boot parameter option", + str); + return 1; + } + if (strncmp(str, "off", 3) == 0) ima_appraise = 0; else if (strncmp(str, "log", 3) == 0) @@ -48,13 +54,13 @@ */ int ima_must_appraise(struct inode *inode, int mask, enum ima_hooks func) { - u32 secid; + struct lsmblob blob; if (!ima_appraise) return 0; - security_task_getsecid(current, &secid); - return ima_match_policy(inode, current_cred(), secid, func, mask, + security_task_getsecid(current, &blob); + return ima_match_policy(inode, current_cred(), &blob, func, mask, IMA_APPRAISE | IMA_HASH, NULL, NULL, NULL); } --- linux-5.8.0.orig/security/integrity/ima/ima_crypto.c +++ linux-5.8.0/security/integrity/ima/ima_crypto.c @@ -537,7 +537,7 @@ loff_t i_size; int rc; struct file *f = file; - bool new_file_instance = false, modified_mode = false; + bool new_file_instance = false; /* * For consistency, fail file's opened with the O_DIRECT flag on @@ -555,18 +555,10 @@ O_TRUNC | O_CREAT | O_NOCTTY | O_EXCL); flags |= O_RDONLY; f = dentry_open(&file->f_path, flags, file->f_cred); - if (IS_ERR(f)) { - /* - * Cannot open the file again, lets modify f_mode - * of original and continue - */ - pr_info_ratelimited("Unable to reopen file for reading.\n"); - f = file; - f->f_mode |= FMODE_READ; - modified_mode = true; - } else { - new_file_instance = true; - } + if (IS_ERR(f)) + return PTR_ERR(f); + + new_file_instance = true; } i_size = i_size_read(file_inode(f)); @@ -581,8 +573,6 @@ out: if (new_file_instance) fput(f); - else if (modified_mode) - f->f_mode &= ~FMODE_READ; return rc; } @@ -829,6 +819,8 @@ /* now accumulate with current aggregate */ rc = crypto_shash_update(shash, d.digest, crypto_shash_digestsize(tfm)); + if (rc != 0) + return rc; } /* * Extend cumulative digest over TPM registers 8-9, which contain --- linux-5.8.0.orig/security/integrity/ima/ima_fs.c +++ linux-5.8.0/security/integrity/ima/ima_fs.c @@ -272,7 +272,7 @@ static ssize_t ima_read_policy(char *path) { - void *data; + void *data = NULL; char *datap; loff_t size; int rc, pathlen = strlen(path); @@ -285,7 +285,7 @@ rc = kernel_read_file_from_path(path, &data, &size, 0, READING_POLICY); if (rc < 0) { - pr_err("Unable to open file: %s (%d)", path, rc); + pr_warn("Unable to open file: %s (%d)", path, rc); return rc; } --- linux-5.8.0.orig/security/integrity/ima/ima_kexec.c +++ linux-5.8.0/security/integrity/ima/ima_kexec.c @@ -119,6 +119,7 @@ ret = kexec_add_buffer(&kbuf); if (ret) { pr_err("Error passing over kexec measurement buffer.\n"); + vfree(kexec_buffer); return; } @@ -128,6 +129,8 @@ return; } + image->ima_buffer = kexec_buffer; + pr_debug("kexec measurement buffer for the loaded kernel at 0x%lx.\n", kbuf.mem); } --- linux-5.8.0.orig/security/integrity/ima/ima_main.c +++ linux-5.8.0/security/integrity/ima/ima_main.c @@ -188,8 +188,8 @@ } static int process_measurement(struct file *file, const struct cred *cred, - u32 secid, char *buf, loff_t size, int mask, - enum ima_hooks func) + struct lsmblob *blob, char *buf, loff_t size, + int mask, enum ima_hooks func) { struct inode *inode = file_inode(file); struct integrity_iint_cache *iint = NULL; @@ -212,7 +212,7 @@ * bitmask based on the appraise/audit/measurement policy. * Included is the appraise submask. */ - action = ima_get_action(inode, cred, secid, mask, func, &pcr, + action = ima_get_action(inode, cred, blob, mask, func, &pcr, &template_desc, NULL); violation_check = ((func == FILE_CHECK || func == MMAP_CHECK) && (ima_policy_flag & IMA_MEASURE)); @@ -382,12 +382,12 @@ */ int ima_file_mmap(struct file *file, unsigned long prot) { - u32 secid; + struct lsmblob blob; if (file && (prot & PROT_EXEC)) { - security_task_getsecid(current, &secid); - return process_measurement(file, current_cred(), secid, NULL, - 0, MAY_EXEC, MMAP_CHECK); + security_task_getsecid(current, &blob); + return process_measurement(file, current_cred(), &blob, + NULL, 0, MAY_EXEC, MMAP_CHECK); } return 0; @@ -413,9 +413,9 @@ char *pathbuf = NULL; const char *pathname = NULL; struct inode *inode; + struct lsmblob blob; int result = 0; int action; - u32 secid; int pcr; /* Is mprotect making an mmap'ed file executable? */ @@ -423,9 +423,9 @@ !(prot & PROT_EXEC) || (vma->vm_flags & VM_EXEC)) return 0; - security_task_getsecid(current, &secid); + security_task_getsecid(current, &blob); inode = file_inode(vma->vm_file); - action = ima_get_action(inode, current_cred(), secid, MAY_EXEC, + action = ima_get_action(NULL, current_cred(), &blob, 0, MMAP_CHECK, &pcr, &template, 0); /* Is the mmap'ed file in policy? */ @@ -461,16 +461,16 @@ int ima_bprm_check(struct linux_binprm *bprm) { int ret; - u32 secid; + struct lsmblob blob; - security_task_getsecid(current, &secid); - ret = process_measurement(bprm->file, current_cred(), secid, NULL, 0, + security_task_getsecid(current, &blob); + ret = process_measurement(bprm->file, current_cred(), &blob, NULL, 0, MAY_EXEC, BPRM_CHECK); if (ret) return ret; - security_cred_getsecid(bprm->cred, &secid); - return process_measurement(bprm->file, bprm->cred, secid, NULL, 0, + security_cred_getsecid(bprm->cred, &blob); + return process_measurement(bprm->file, bprm->cred, &blob, NULL, 0, MAY_EXEC, CREDS_CHECK); } @@ -486,10 +486,10 @@ */ int ima_file_check(struct file *file, int mask) { - u32 secid; + struct lsmblob blob; - security_task_getsecid(current, &secid); - return process_measurement(file, current_cred(), secid, NULL, 0, + security_task_getsecid(current, &blob); + return process_measurement(file, current_cred(), &blob, NULL, 0, mask & (MAY_READ | MAY_WRITE | MAY_EXEC | MAY_APPEND), FILE_CHECK); } @@ -531,6 +531,16 @@ return -EOPNOTSUPP; mutex_lock(&iint->mutex); + + /* + * ima_file_hash can be called when ima_collect_measurement has still + * not been called, we might not always have a hash. + */ + if (!iint->ima_hash) { + mutex_unlock(&iint->mutex); + return -EOPNOTSUPP; + } + if (buf) { size_t copied_size; @@ -611,19 +621,17 @@ int ima_read_file(struct file *file, enum kernel_read_file_id read_id) { /* - * READING_FIRMWARE_PREALLOC_BUFFER - * * Do devices using pre-allocated memory run the risk of the * firmware being accessible to the device prior to the completion * of IMA's signature verification any more than when using two - * buffers? + * buffers? It may be desirable to include the buffer address + * in this API and walk all the dma_map_single() mappings to check. */ return 0; } const int read_idmap[READING_MAX_ID] = { [READING_FIRMWARE] = FIRMWARE_CHECK, - [READING_FIRMWARE_PREALLOC_BUFFER] = FIRMWARE_CHECK, [READING_MODULE] = MODULE_CHECK, [READING_KEXEC_IMAGE] = KEXEC_KERNEL_CHECK, [READING_KEXEC_INITRAMFS] = KEXEC_INITRAMFS_CHECK, @@ -647,7 +655,7 @@ enum kernel_read_file_id read_id) { enum ima_hooks func; - u32 secid; + struct lsmblob blob; if (!file && read_id == READING_FIRMWARE) { if ((ima_appraise & IMA_APPRAISE_FIRMWARE) && @@ -669,8 +677,8 @@ } func = read_idmap[read_id] ?: FILE_CHECK; - security_task_getsecid(current, &secid); - return process_measurement(file, current_cred(), secid, buf, size, + security_task_getsecid(current, &blob); + return process_measurement(file, current_cred(), &blob, buf, size, MAY_READ, func); } @@ -753,7 +761,7 @@ } hash = {}; int violation = 0; int action = 0; - u32 secid; + struct lsmblob blob; if (!ima_policy_flag) return; @@ -766,8 +774,8 @@ * buffer measurements. */ if (func) { - security_task_getsecid(current, &secid); - action = ima_get_action(NULL, current_cred(), secid, 0, func, + security_task_getsecid(current, &blob); + action = ima_get_action(NULL, current_cred(), &blob, 0, func, &pcr, &template, keyring); if (!(action & IMA_MEASURE)) return; --- linux-5.8.0.orig/security/integrity/ima/ima_mok.c +++ linux-5.8.0/security/integrity/ima/ima_mok.c @@ -38,13 +38,12 @@ (KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_VIEW | KEY_USR_READ | KEY_USR_WRITE | KEY_USR_SEARCH, - KEY_ALLOC_NOT_IN_QUOTA, + KEY_ALLOC_NOT_IN_QUOTA | + KEY_ALLOC_SET_KEEP, restriction, NULL); if (IS_ERR(ima_blacklist_keyring)) panic("Can't allocate IMA blacklist keyring."); - - set_bit(KEY_FLAG_KEEP, &ima_blacklist_keyring->flags); return 0; } device_initcall(ima_mok_init); --- linux-5.8.0.orig/security/integrity/ima/ima_policy.c +++ linux-5.8.0/security/integrity/ima/ima_policy.c @@ -73,7 +73,7 @@ bool (*fowner_op)(kuid_t, kuid_t); /* uid_eq(), uid_gt(), uid_lt() */ int pcr; struct { - void *rule; /* LSM file metadata specific */ + void *rules[LSMBLOB_ENTRIES]; /* LSM file metadata specific */ void *args_p; /* audit value */ int type; /* audit type */ } lsm[MAX_LSM_RULES]; @@ -82,6 +82,22 @@ struct ima_template_desc *template; }; +/** + * ima_lsm_isset - Is a rule set for any of the active security modules + * @rules: The set of IMA rules to check. + * + * If a rule is set for any LSM return true, otherwise return false. + */ +static inline bool ima_lsm_isset(void *rules[]) +{ + int i; + + for (i = 0; i < LSMBLOB_ENTRIES; i++) + if (rules[i]) + return true; + return false; +} + /* * Without LSM specific knowledge, the default policy can only be * written in terms of .action, .func, .mask, .fsmagic, .uid, and .fowner @@ -256,11 +272,28 @@ static void ima_lsm_free_rule(struct ima_rule_entry *entry) { int i; + int r; for (i = 0; i < MAX_LSM_RULES; i++) { - kfree(entry->lsm[i].rule); + for (r = 0; r < LSMBLOB_ENTRIES; r++) + security_filter_rule_free(entry->lsm[i].rules); kfree(entry->lsm[i].args_p); } +} + +static void ima_free_rule(struct ima_rule_entry *entry) +{ + if (!entry) + return; + + /* + * entry->template->fields may be allocated in ima_parse_rule() but that + * reference is owned by the corresponding ima_template_desc element in + * the defined_templates list and cannot be freed here + */ + kfree(entry->fsname); + kfree(entry->keyrings); + ima_lsm_free_rule(entry); kfree(entry); } @@ -293,8 +326,8 @@ security_filter_rule_init(nentry->lsm[i].type, Audit_equal, nentry->lsm[i].args_p, - &nentry->lsm[i].rule); - if (!nentry->lsm[i].rule) + &nentry->lsm[i].rules[0]); + if (!ima_lsm_isset(nentry->lsm[i].rules)) pr_warn("rule for LSM \'%s\' is undefined\n", (char *)entry->lsm[i].args_p); } @@ -302,6 +335,7 @@ out_err: ima_lsm_free_rule(nentry); + kfree(nentry); return NULL; } @@ -315,11 +349,29 @@ list_replace_rcu(&entry->list, &nentry->list); synchronize_rcu(); + /* + * ima_lsm_copy_rule() shallow copied all references, except for the + * LSM references, from entry to nentry so we only want to free the LSM + * references and the entry itself. All other memory refrences will now + * be owned by nentry. + */ ima_lsm_free_rule(entry); + kfree(entry); return 0; } +static bool ima_rule_contains_lsm_cond(struct ima_rule_entry *entry) +{ + int i; + + for (i = 0; i < MAX_LSM_RULES; i++) + if (entry->lsm[i].args_p) + return true; + + return false; +} + /* * The LSM policy can be reloaded, leaving the IMA LSM based rules referring * to the old, stale LSM policy. Update the IMA LSM based rules to reflect @@ -404,7 +456,7 @@ * @rule: a pointer to a rule * @inode: a pointer to an inode * @cred: a pointer to a credentials structure for user validation - * @secid: the secid of the task to be validated + * @blob: the lsm data of the task to be validated * @func: LIM hook identifier * @mask: requested action (MAY_READ | MAY_WRITE | MAY_APPEND | MAY_EXEC) * @keyring: keyring name to check in policy for KEY_CHECK func @@ -412,7 +464,7 @@ * Returns true on rule match, false on failure. */ static bool ima_match_rules(struct ima_rule_entry *rule, struct inode *inode, - const struct cred *cred, u32 secid, + const struct cred *cred, struct lsmblob *blob, enum ima_hooks func, int mask, const char *keyring) { @@ -461,9 +513,9 @@ return false; for (i = 0; i < MAX_LSM_RULES; i++) { int rc = 0; - u32 osid; + struct lsmblob lsmdata; - if (!rule->lsm[i].rule) { + if (!ima_lsm_isset(rule->lsm[i].rules)) { if (!rule->lsm[i].args_p) continue; else @@ -473,19 +525,19 @@ case LSM_OBJ_USER: case LSM_OBJ_ROLE: case LSM_OBJ_TYPE: - security_inode_getsecid(inode, &osid); - rc = security_filter_rule_match(osid, + security_inode_getsecid(inode, &lsmdata); + rc = security_filter_rule_match(&lsmdata, rule->lsm[i].type, Audit_equal, - rule->lsm[i].rule); + rule->lsm[i].rules); break; case LSM_SUBJ_USER: case LSM_SUBJ_ROLE: case LSM_SUBJ_TYPE: - rc = security_filter_rule_match(secid, + rc = security_filter_rule_match(&lsmdata, rule->lsm[i].type, Audit_equal, - rule->lsm[i].rule); + rule->lsm[i].rules); default: break; } @@ -525,7 +577,7 @@ * @inode: pointer to an inode for which the policy decision is being made * @cred: pointer to a credentials structure for which the policy decision is * being made - * @secid: LSM secid of the task to be validated + * @blob: LSM data of the task to be validated * @func: IMA hook identifier * @mask: requested action (MAY_READ | MAY_WRITE | MAY_APPEND | MAY_EXEC) * @pcr: set the pcr to extend @@ -540,8 +592,9 @@ * list when walking it. Reads are many orders of magnitude more numerous * than writes so ima_match_policy() is classical RCU candidate. */ -int ima_match_policy(struct inode *inode, const struct cred *cred, u32 secid, - enum ima_hooks func, int mask, int flags, int *pcr, +int ima_match_policy(struct inode *inode, const struct cred *cred, + struct lsmblob *blob, enum ima_hooks func, int mask, + int flags, int *pcr, struct ima_template_desc **template_desc, const char *keyring) { @@ -557,7 +610,7 @@ if (!(entry->action & actmask)) continue; - if (!ima_match_rules(entry, inode, cred, secid, func, mask, + if (!ima_match_rules(entry, inode, cred, blob, func, mask, keyring)) continue; @@ -872,7 +925,7 @@ { int result; - if (entry->lsm[lsm_rule].rule) + if (ima_lsm_isset(entry->lsm[lsm_rule].rules)) return -EINVAL; entry->lsm[lsm_rule].args_p = match_strdup(args); @@ -883,13 +936,14 @@ result = security_filter_rule_init(entry->lsm[lsm_rule].type, Audit_equal, entry->lsm[lsm_rule].args_p, - &entry->lsm[lsm_rule].rule); - if (!entry->lsm[lsm_rule].rule) { + &entry->lsm[lsm_rule].rules[0]); + if (!ima_lsm_isset(entry->lsm[lsm_rule].rules)) { pr_warn("rule for LSM \'%s\' is undefined\n", (char *)entry->lsm[lsm_rule].args_p); if (ima_rules == &ima_default_rules) { kfree(entry->lsm[lsm_rule].args_p); + entry->lsm[lsm_rule].args_p = NULL; result = -EINVAL; } else result = 0; @@ -949,6 +1003,65 @@ #undef MSG } +static bool ima_validate_rule(struct ima_rule_entry *entry) +{ + /* Ensure that the action is set */ + if (entry->action == UNKNOWN) + return false; + + /* + * Ensure that the hook function is compatible with the other + * components of the rule + */ + switch (entry->func) { + case NONE: + case FILE_CHECK: + case MMAP_CHECK: + case BPRM_CHECK: + case CREDS_CHECK: + case POST_SETATTR: + case MODULE_CHECK: + case FIRMWARE_CHECK: + case KEXEC_KERNEL_CHECK: + case KEXEC_INITRAMFS_CHECK: + case POLICY_CHECK: + /* Validation of these hook functions is in ima_parse_rule() */ + break; + case KEXEC_CMDLINE: + if (entry->action & ~(MEASURE | DONT_MEASURE)) + return false; + + if (entry->flags & ~(IMA_FUNC | IMA_PCR)) + return false; + + if (ima_rule_contains_lsm_cond(entry)) + return false; + + break; + case KEY_CHECK: + if (entry->action & ~(MEASURE | DONT_MEASURE)) + return false; + + if (entry->flags & ~(IMA_FUNC | IMA_UID | IMA_PCR | + IMA_KEYRINGS)) + return false; + + if (ima_rule_contains_lsm_cond(entry)) + return false; + + break; + default: + return false; + } + + /* Ensure that combinations of flags are compatible with each other */ + if (entry->flags & IMA_CHECK_BLACKLIST && + !(entry->flags & IMA_MODSIG_ALLOWED)) + return false; + + return true; +} + static int ima_parse_rule(char *rule, struct ima_rule_entry *entry) { struct audit_buffer *ab; @@ -1126,7 +1239,6 @@ keyrings_len = strlen(args[0].from) + 1; if ((entry->keyrings) || - (entry->action != MEASURE) || (entry->func != KEY_CHECK) || (keyrings_len < 2)) { result = -EINVAL; @@ -1283,9 +1395,17 @@ result = -EINVAL; break; case Opt_appraise_flag: + if (entry->action != APPRAISE) { + result = -EINVAL; + break; + } + ima_log_string(ab, "appraise_flag", args[0].from); - if (strstr(args[0].from, "blacklist")) + if (IS_ENABLED(CONFIG_IMA_APPRAISE_MODSIG) && + strstr(args[0].from, "blacklist")) entry->flags |= IMA_CHECK_BLACKLIST; + else + result = -EINVAL; break; case Opt_permit_directio: entry->flags |= IMA_PERMIT_DIRECTIO; @@ -1332,7 +1452,7 @@ break; } } - if (!result && (entry->action == UNKNOWN)) + if (!result && !ima_validate_rule(entry)) result = -EINVAL; else if (entry->action == APPRAISE) temp_ima_appraise |= ima_appraise_flag(entry->func); @@ -1381,7 +1501,7 @@ result = ima_parse_rule(p, entry); if (result) { - kfree(entry); + ima_free_rule(entry); integrity_audit_msg(AUDIT_INTEGRITY_STATUS, NULL, NULL, op, "invalid-policy", result, audit_info); @@ -1402,15 +1522,11 @@ void ima_delete_rules(void) { struct ima_rule_entry *entry, *tmp; - int i; temp_ima_appraise = 0; list_for_each_entry_safe(entry, tmp, &ima_temp_rules, list) { - for (i = 0; i < MAX_LSM_RULES; i++) - kfree(entry->lsm[i].args_p); - list_del(&entry->list); - kfree(entry); + ima_free_rule(entry); } } @@ -1585,7 +1701,7 @@ } for (i = 0; i < MAX_LSM_RULES; i++) { - if (entry->lsm[i].rule) { + if (ima_lsm_isset(entry->lsm[i].rules)) { switch (i) { case LSM_OBJ_USER: seq_printf(m, pt(Opt_obj_user), --- linux-5.8.0.orig/security/integrity/integrity_audit.c +++ linux-5.8.0/security/integrity/integrity_audit.c @@ -41,7 +41,7 @@ from_kuid(&init_user_ns, current_cred()->uid), from_kuid(&init_user_ns, audit_get_loginuid(current)), audit_get_sessionid(current)); - audit_log_task_context(ab); + audit_log_task_context(ab, NULL); audit_log_format(ab, " op=%s cause=%s comm=", op, cause); audit_log_untrustedstring(ab, get_task_comm(name, current)); if (fname) { --- linux-5.8.0.orig/security/integrity/platform_certs/load_uefi.c +++ linux-5.8.0/security/integrity/platform_certs/load_uefi.c @@ -46,7 +46,8 @@ return NULL; if (*status != EFI_BUFFER_TOO_SMALL) { - pr_err("Couldn't get size: 0x%lx\n", *status); + pr_err("Couldn't get size: %s (0x%lx)\n", + efi_status_to_str(*status), *status); return NULL; } @@ -57,7 +58,8 @@ *status = efi.get_variable(name, guid, NULL, &lsize, db); if (*status != EFI_SUCCESS) { kfree(db); - pr_err("Error reading db var: 0x%lx\n", *status); + pr_err("Error reading db var: %s (0x%lx)\n", + efi_status_to_str(*status), *status); return NULL; } --- linux-5.8.0.orig/security/keys/Kconfig +++ linux-5.8.0/security/keys/Kconfig @@ -119,7 +119,7 @@ bool "Provide key/keyring change notifications" depends on KEYS && WATCH_QUEUE help - This option provides support for getting change notifications on keys - and keyrings on which the caller has View permission. This makes use - of the /dev/watch_queue misc device to handle the notification - buffer and provides KEYCTL_WATCH_KEY to enable/disable watches. + This option provides support for getting change notifications + on keys and keyrings on which the caller has View permission. + This makes use of pipes to handle the notification buffer and + provides KEYCTL_WATCH_KEY to enable/disable watches. --- linux-5.8.0.orig/security/keys/key.c +++ linux-5.8.0/security/keys/key.c @@ -303,6 +303,8 @@ key->flags |= 1 << KEY_FLAG_BUILTIN; if (flags & KEY_ALLOC_UID_KEYRING) key->flags |= 1 << KEY_FLAG_UID_KEYRING; + if (flags & KEY_ALLOC_SET_KEEP) + key->flags |= 1 << KEY_FLAG_KEEP; #ifdef KEY_DEBUGGING key->magic = KEY_DEBUG_MAGIC; --- linux-5.8.0.orig/security/keys/keyctl.c +++ linux-5.8.0/security/keys/keyctl.c @@ -1693,7 +1693,7 @@ /* the replacement session keyring is applied just prior to userspace * restarting */ - ret = task_work_add(parent, newwork, true); + ret = task_work_add(parent, newwork, TWA_RESUME); if (!ret) newwork = NULL; unlock: --- linux-5.8.0.orig/security/keys/trusted-keys/trusted_tpm1.c +++ linux-5.8.0/security/keys/trusted-keys/trusted_tpm1.c @@ -403,9 +403,12 @@ int ret; ret = tpm_get_random(chip, ononce, TPM_NONCE_SIZE); - if (ret != TPM_NONCE_SIZE) + if (ret < 0) return ret; + if (ret != TPM_NONCE_SIZE) + return -EIO; + tpm_buf_reset(tb, TPM_TAG_RQU_COMMAND, TPM_ORD_OSAP); tpm_buf_append_u16(tb, type); tpm_buf_append_u32(tb, handle); @@ -496,8 +499,12 @@ goto out; ret = tpm_get_random(chip, td->nonceodd, TPM_NONCE_SIZE); + if (ret < 0) + return ret; + if (ret != TPM_NONCE_SIZE) - goto out; + return -EIO; + ordinal = htonl(TPM_ORD_SEAL); datsize = htonl(datalen); pcrsize = htonl(pcrinfosize); @@ -601,9 +608,12 @@ ordinal = htonl(TPM_ORD_UNSEAL); ret = tpm_get_random(chip, nonceodd, TPM_NONCE_SIZE); + if (ret < 0) + return ret; + if (ret != TPM_NONCE_SIZE) { pr_info("trusted_key: tpm_get_random failed (%d)\n", ret); - return ret; + return -EIO; } ret = TSS_authhmac(authdata1, keyauth, TPM_NONCE_SIZE, enonce1, nonceodd, cont, sizeof(uint32_t), @@ -791,7 +801,7 @@ case Opt_migratable: if (*args[0].from == '0') pay->migratable = 0; - else + else if (*args[0].from != '1') return -EINVAL; break; case Opt_pcrlock: @@ -1013,8 +1023,12 @@ case Opt_new: key_len = payload->key_len; ret = tpm_get_random(chip, payload->key, key_len); + if (ret < 0) + goto out; + if (ret != key_len) { pr_info("trusted_key: key_create failed (%d)\n", ret); + ret = -EIO; goto out; } if (tpm2) --- linux-5.8.0.orig/security/keys/trusted-keys/trusted_tpm2.c +++ linux-5.8.0/security/keys/trusted-keys/trusted_tpm2.c @@ -83,6 +83,12 @@ if (rc) return rc; + rc = tpm_buf_init(&buf, TPM2_ST_SESSIONS, TPM2_CC_CREATE); + if (rc) { + tpm_put_ops(chip); + return rc; + } + tpm_buf_append_u32(&buf, options->keyhandle); tpm2_buf_append_auth(&buf, TPM2_RS_PW, NULL /* nonce */, 0, @@ -130,7 +136,7 @@ goto out; } - rc = tpm_send(chip, buf.data, tpm_buf_length(&buf)); + rc = tpm_transmit_cmd(chip, &buf, 4, "sealing data"); if (rc) goto out; @@ -157,6 +163,7 @@ rc = -EPERM; } + tpm_put_ops(chip); return rc; } @@ -211,7 +218,7 @@ goto out; } - rc = tpm_send(chip, buf.data, tpm_buf_length(&buf)); + rc = tpm_transmit_cmd(chip, &buf, 4, "loading blob"); if (!rc) *blob_handle = be32_to_cpup( (__be32 *) &buf.data[TPM_HEADER_SIZE]); @@ -260,7 +267,7 @@ options->blobauth /* hmac */, TPM_DIGEST_SIZE); - rc = tpm_send(chip, buf.data, tpm_buf_length(&buf)); + rc = tpm_transmit_cmd(chip, &buf, 6, "unsealing"); if (rc > 0) rc = -EPERM; @@ -304,12 +311,19 @@ u32 blob_handle; int rc; - rc = tpm2_load_cmd(chip, payload, options, &blob_handle); + rc = tpm_try_get_ops(chip); if (rc) return rc; + rc = tpm2_load_cmd(chip, payload, options, &blob_handle); + if (rc) + goto out; + rc = tpm2_unseal_cmd(chip, payload, options, blob_handle); tpm2_flush_context(chip, blob_handle); +out: + tpm_put_ops(chip); + return rc; } --- linux-5.8.0.orig/security/loadpin/loadpin.c +++ linux-5.8.0/security/loadpin/loadpin.c @@ -180,6 +180,11 @@ return loadpin_read_file(NULL, (enum kernel_read_file_id) id); } +static struct lsm_id loadpin_lsmid __lsm_ro_after_init = { + .lsm = "loadpin", + .slot = LSMBLOB_NOT_NEEDED +}; + static struct security_hook_list loadpin_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(sb_free_security, loadpin_sb_free_security), LSM_HOOK_INIT(kernel_read_file, loadpin_read_file), @@ -227,7 +232,8 @@ pr_info("ready to pin (currently %senforcing)\n", enforce ? "" : "not "); parse_exclude(); - security_add_hooks(loadpin_hooks, ARRAY_SIZE(loadpin_hooks), "loadpin"); + security_add_hooks(loadpin_hooks, ARRAY_SIZE(loadpin_hooks), + &loadpin_lsmid); return 0; } --- linux-5.8.0.orig/security/lockdown/Kconfig +++ linux-5.8.0/security/lockdown/Kconfig @@ -16,6 +16,19 @@ subsystem is fully initialised. If enabled, lockdown will unconditionally be called before any other LSMs. +config LOCK_DOWN_IN_SECURE_BOOT + bool "Lock down the kernel in Secure Boot mode" + default n + depends on (EFI || S390 || PPC) && SECURITY_LOCKDOWN_LSM_EARLY + help + Secure Boot provides a mechanism for ensuring that the firmware will + only load signed bootloaders and kernels. Secure boot mode + determination is platform-specific; examples include EFI secure boot + and SIPL on s390. + + Enabling this option results in kernel lockdown being triggered if + booted under secure boot. + choice prompt "Kernel default lockdown mode" default LOCK_DOWN_KERNEL_FORCE_NONE --- linux-5.8.0.orig/security/lockdown/lockdown.c +++ linux-5.8.0/security/lockdown/lockdown.c @@ -73,6 +73,12 @@ static struct security_hook_list lockdown_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(locked_down, lockdown_is_locked_down), + LSM_HOOK_INIT(lock_kernel_down, lock_kernel_down), +}; + +static struct lsm_id lockdown_lsmid __lsm_ro_after_init = { + .lsm = "lockdown", + .slot = LSMBLOB_NOT_NEEDED }; static int __init lockdown_lsm_init(void) @@ -83,7 +89,7 @@ lock_kernel_down("Kernel configuration", LOCKDOWN_CONFIDENTIALITY_MAX); #endif security_add_hooks(lockdown_hooks, ARRAY_SIZE(lockdown_hooks), - "lockdown"); + &lockdown_lsmid); return 0; } --- linux-5.8.0.orig/security/lsm_audit.c +++ linux-5.8.0/security/lsm_audit.c @@ -275,7 +275,9 @@ struct inode *inode; audit_log_format(ab, " name="); + spin_lock(&a->u.dentry->d_lock); audit_log_untrustedstring(ab, a->u.dentry->d_name.name); + spin_unlock(&a->u.dentry->d_lock); inode = d_backing_inode(a->u.dentry); if (inode) { @@ -293,8 +295,9 @@ dentry = d_find_alias(inode); if (dentry) { audit_log_format(ab, " name="); - audit_log_untrustedstring(ab, - dentry->d_name.name); + spin_lock(&dentry->d_lock); + audit_log_untrustedstring(ab, dentry->d_name.name); + spin_unlock(&dentry->d_lock); dput(dentry); } audit_log_format(ab, " dev="); --- linux-5.8.0.orig/security/safesetid/lsm.c +++ linux-5.8.0/security/safesetid/lsm.c @@ -149,6 +149,11 @@ return -EACCES; } +static struct lsm_id safesetid_lsmid __lsm_ro_after_init = { + .lsm = "safesetid", + .slot = LSMBLOB_NOT_NEEDED +}; + static struct security_hook_list safesetid_security_hooks[] = { LSM_HOOK_INIT(task_fix_setuid, safesetid_task_fix_setuid), LSM_HOOK_INIT(capable, safesetid_security_capable) @@ -157,7 +162,8 @@ static int __init safesetid_security_init(void) { security_add_hooks(safesetid_security_hooks, - ARRAY_SIZE(safesetid_security_hooks), "safesetid"); + ARRAY_SIZE(safesetid_security_hooks), + &safesetid_lsmid); /* Report that SafeSetID successfully initialized */ safesetid_initialized = 1; --- linux-5.8.0.orig/security/security.c +++ linux-5.8.0/security/security.c @@ -28,6 +28,7 @@ #include #include #include +#include #define MAX_LSM_EVM_XATTR 2 @@ -74,7 +75,14 @@ static struct kmem_cache *lsm_inode_cache; char *lsm_names; -static struct lsm_blob_sizes blob_sizes __lsm_ro_after_init; + +/* + * The task blob includes the "display" slot used for + * chosing which module presents contexts. + */ +static struct lsm_blob_sizes blob_sizes __lsm_ro_after_init = { + .lbs_task = sizeof(int), +}; /* Boot-time LSM user choice */ static __initdata const char *chosen_lsm_order; @@ -201,6 +209,7 @@ lsm_set_blob_size(&needed->lbs_inode, &blob_sizes.lbs_inode); lsm_set_blob_size(&needed->lbs_ipc, &blob_sizes.lbs_ipc); lsm_set_blob_size(&needed->lbs_msg_msg, &blob_sizes.lbs_msg_msg); + lsm_set_blob_size(&needed->lbs_sock, &blob_sizes.lbs_sock); lsm_set_blob_size(&needed->lbs_task, &blob_sizes.lbs_task); } @@ -336,7 +345,9 @@ init_debug("inode blob size = %d\n", blob_sizes.lbs_inode); init_debug("ipc blob size = %d\n", blob_sizes.lbs_ipc); init_debug("msg_msg blob size = %d\n", blob_sizes.lbs_msg_msg); + init_debug("sock blob size = %d\n", blob_sizes.lbs_sock); init_debug("task blob size = %d\n", blob_sizes.lbs_task); + init_debug("lsmblob size = %zu\n", sizeof(struct lsmblob)); /* * Create any kmem_caches needed for blobs @@ -464,21 +475,63 @@ return 0; } +/* + * Current index to use while initializing the lsmblob secid list. + * Pointers to the LSM id structures for local use. + */ +static int lsm_slot __lsm_ro_after_init; +static struct lsm_id *lsm_slotlist[LSMBLOB_ENTRIES] __lsm_ro_after_init; + +/** + * security_lsm_slot_name - Get the name of the security module in a slot + * @slot: index into the "display" slot list. + * + * Provide the name of the security module associated with + * a display slot. + * + * If @slot is LSMBLOB_INVALID return the value + * for slot 0 if it has been set, otherwise NULL. + * + * Returns a pointer to the name string or NULL. + */ +const char *security_lsm_slot_name(int slot) +{ + if (slot == LSMBLOB_INVALID) + slot = 0; + else if (slot >= LSMBLOB_ENTRIES || slot < 0) + return NULL; + + if (lsm_slotlist[slot] == NULL) + return NULL; + return lsm_slotlist[slot]->lsm; +} + /** * security_add_hooks - Add a modules hooks to the hook lists. * @hooks: the hooks to add * @count: the number of hooks to add - * @lsm: the name of the security module + * @lsmid: the the identification information for the security module * * Each LSM has to register its hooks with the infrastructure. + * If the LSM is using hooks that export secids allocate a slot + * for it in the lsmblob. */ void __init security_add_hooks(struct security_hook_list *hooks, int count, - char *lsm) + struct lsm_id *lsmid) { int i; + if (lsmid->slot == LSMBLOB_NEEDED) { + if (lsm_slot >= LSMBLOB_ENTRIES) + panic("%s Too many LSMs registered.\n", __func__); + lsm_slotlist[lsm_slot] = lsmid; + lsmid->slot = lsm_slot++; + init_debug("%s assigned lsmblob slot %d\n", lsmid->lsm, + lsmid->slot); + } + for (i = 0; i < count; i++) { - hooks[i].lsm = lsm; + hooks[i].lsmid = lsmid; hlist_add_tail_rcu(&hooks[i].list, hooks[i].head); } @@ -487,7 +540,7 @@ * and fix this up afterwards. */ if (slab_is_available()) { - if (lsm_append(lsm, &lsm_names) < 0) + if (lsm_append(lsmid->lsm, &lsm_names) < 0) panic("%s - Cannot get early memory.\n", __func__); } } @@ -601,6 +654,8 @@ */ static int lsm_task_alloc(struct task_struct *task) { + int *display; + if (blob_sizes.lbs_task == 0) { task->security = NULL; return 0; @@ -609,6 +664,15 @@ task->security = kzalloc(blob_sizes.lbs_task, GFP_KERNEL); if (task->security == NULL) return -ENOMEM; + + /* + * The start of the task blob contains the "display" LSM slot number. + * Start with it set to the invalid slot number, indicating that the + * default first registered LSM be displayed. + */ + display = task->security; + *display = LSMBLOB_INVALID; + return 0; } @@ -655,6 +719,28 @@ } /** + * lsm_sock_alloc - allocate a composite sock blob + * @sock: the sock that needs a blob + * @priority: allocation mode + * + * Allocate the sock blob for all the modules + * + * Returns 0, or -ENOMEM if memory can't be allocated. + */ +static int lsm_sock_alloc(struct sock *sock, gfp_t priority) +{ + if (blob_sizes.lbs_sock == 0) { + sock->sk_security = NULL; + return 0; + } + + sock->sk_security = kzalloc(blob_sizes.lbs_sock, priority); + if (sock->sk_security == NULL) + return -ENOMEM; + return 0; +} + +/** * lsm_early_task - during initialization allocate a composite task blob * @task: the task that needs a blob * @@ -668,6 +754,57 @@ panic("%s: Early task alloc failed.\n", __func__); } +/** + * append_ctx - append a lsm/context pair to a compound context + * @ctx: the existing compound context + * @ctxlen: size of the old context, including terminating nul byte + * @lsm: new lsm name, nul terminated + * @new: new context, possibly nul terminated + * @newlen: maximum size of @new + * + * replace @ctx with a new compound context, appending @newlsm and @new + * to @ctx. On exit the new data replaces the old, which is freed. + * @ctxlen is set to the new size, which includes a trailing nul byte. + * + * Returns 0 on success, -ENOMEM if no memory is available. + */ +static int append_ctx(char **ctx, int *ctxlen, const char *lsm, char *new, + int newlen) +{ + char *final; + size_t llen; + size_t nlen; + size_t flen; + + llen = strlen(lsm) + 1; + /* + * A security module may or may not provide a trailing nul on + * when returning a security context. There is no definition + * of which it should be, and there are modules that do it + * each way. + */ + nlen = strnlen(new, newlen); + + flen = *ctxlen + llen + nlen + 1; + final = kzalloc(flen, GFP_KERNEL); + + if (final == NULL) + return -ENOMEM; + + if (*ctxlen) + memcpy(final, *ctx, *ctxlen); + + memcpy(final + *ctxlen, lsm, llen); + memcpy(final + *ctxlen + llen, new, nlen); + + kfree(*ctx); + + *ctx = final; + *ctxlen = flen; + + return 0; +} + /* * The default value of the LSM hook is defined in linux/lsm_hook_defs.h and * can be accessed with: @@ -725,24 +862,57 @@ { return call_int_hook(binder_set_context_mgr, 0, mgr); } +EXPORT_SYMBOL(security_binder_set_context_mgr); +/** + * security_binder_transaction - Binder driver transaction check + * @from: source of the transaction + * @to: destination of the transaction + * + * Verify that the tasks have the same LSM "display", then + * call the security module hooks. + * + * Returns -EINVAL if the displays don't match, or the + * result of the security module checks. + */ int security_binder_transaction(struct task_struct *from, struct task_struct *to) { + int from_display = lsm_task_display(from); + int to_display = lsm_task_display(to); + + /* + * If the display is LSMBLOB_INVALID the first module that has + * an entry is used. This will be in the 0 slot. + * + * This is currently only required if the server has requested + * peer contexts, but it would be unwieldly to have too much of + * the binder driver detail here. + */ + if (from_display == LSMBLOB_INVALID) + from_display = 0; + if (to_display == LSMBLOB_INVALID) + to_display = 0; + if (from_display != to_display) + return -EINVAL; + return call_int_hook(binder_transaction, 0, from, to); } +EXPORT_SYMBOL(security_binder_transaction); int security_binder_transfer_binder(struct task_struct *from, struct task_struct *to) { return call_int_hook(binder_transfer_binder, 0, from, to); } +EXPORT_SYMBOL(security_binder_transfer_binder); int security_binder_transfer_file(struct task_struct *from, struct task_struct *to, struct file *file) { return call_int_hook(binder_transfer_file, 0, from, to, file); } +EXPORT_SYMBOL(security_binder_transfer_file); int security_ptrace_access_check(struct task_struct *child, unsigned int mode) { @@ -1092,6 +1262,7 @@ return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL_GPL(security_path_rmdir); int security_path_unlink(const struct path *dir, struct dentry *dentry) { @@ -1108,6 +1279,7 @@ return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL_GPL(security_path_symlink); int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) @@ -1116,6 +1288,7 @@ return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL_GPL(security_path_link); int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, @@ -1143,6 +1316,7 @@ return 0; return call_int_hook(path_truncate, 0, path); } +EXPORT_SYMBOL_GPL(security_path_truncate); int security_path_chmod(const struct path *path, umode_t mode) { @@ -1150,6 +1324,7 @@ return 0; return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL_GPL(security_path_chmod); int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) { @@ -1157,6 +1332,7 @@ return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL_GPL(security_path_chown); int security_path_chroot(const struct path *path) { @@ -1257,6 +1433,7 @@ return 0; return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL_GPL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -1401,9 +1578,16 @@ } EXPORT_SYMBOL(security_inode_listsecurity); -void security_inode_getsecid(struct inode *inode, u32 *secid) +void security_inode_getsecid(struct inode *inode, struct lsmblob *blob) { - call_void_hook(inode_getsecid, inode, secid); + struct security_hook_list *hp; + + lsmblob_init(blob, 0); + hlist_for_each_entry(hp, &security_hook_heads.inode_getsecid, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + hp->hook.inode_getsecid(inode, &blob->secid[hp->lsmid->slot]); + } } int security_inode_copy_up(struct dentry *src, struct cred **new) @@ -1449,6 +1633,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL_GPL(security_file_permission); int security_file_alloc(struct file *file) { @@ -1580,14 +1765,26 @@ int security_task_alloc(struct task_struct *task, unsigned long clone_flags) { + int *odisplay = current->security; + int *ndisplay; int rc = lsm_task_alloc(task); - if (rc) + if (unlikely(rc)) return rc; + rc = call_int_hook(task_alloc, 0, task, clone_flags); - if (unlikely(rc)) + if (unlikely(rc)) { security_task_free(task); - return rc; + return rc; + } + + if (odisplay) { + ndisplay = task->security; + if (ndisplay) + *ndisplay = *odisplay; + } + + return 0; } void security_task_free(struct task_struct *task) @@ -1644,16 +1841,32 @@ call_void_hook(cred_transfer, new, old); } -void security_cred_getsecid(const struct cred *c, u32 *secid) +void security_cred_getsecid(const struct cred *c, struct lsmblob *blob) { - *secid = 0; - call_void_hook(cred_getsecid, c, secid); + struct security_hook_list *hp; + + lsmblob_init(blob, 0); + hlist_for_each_entry(hp, &security_hook_heads.cred_getsecid, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + hp->hook.cred_getsecid(c, &blob->secid[hp->lsmid->slot]); + } } EXPORT_SYMBOL(security_cred_getsecid); -int security_kernel_act_as(struct cred *new, u32 secid) +int security_kernel_act_as(struct cred *new, struct lsmblob *blob) { - return call_int_hook(kernel_act_as, 0, new, secid); + struct security_hook_list *hp; + int rc; + + hlist_for_each_entry(hp, &security_hook_heads.kernel_act_as, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + rc = hp->hook.kernel_act_as(new, blob->secid[hp->lsmid->slot]); + if (rc != 0) + return rc; + } + return 0; } int security_kernel_create_files_as(struct cred *new, struct inode *inode) @@ -1732,10 +1945,16 @@ return call_int_hook(task_getsid, 0, p); } -void security_task_getsecid(struct task_struct *p, u32 *secid) +void security_task_getsecid(struct task_struct *p, struct lsmblob *blob) { - *secid = 0; - call_void_hook(task_getsecid, p, secid); + struct security_hook_list *hp; + + lsmblob_init(blob, 0); + hlist_for_each_entry(hp, &security_hook_heads.task_getsecid, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + hp->hook.task_getsecid(p, &blob->secid[hp->lsmid->slot]); + } } EXPORT_SYMBOL(security_task_getsecid); @@ -1815,10 +2034,16 @@ return call_int_hook(ipc_permission, 0, ipcp, flag); } -void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid) +void security_ipc_getsecid(struct kern_ipc_perm *ipcp, struct lsmblob *blob) { - *secid = 0; - call_void_hook(ipc_getsecid, ipcp, secid); + struct security_hook_list *hp; + + lsmblob_init(blob, 0); + hlist_for_each_entry(hp, &security_hook_heads.ipc_getsecid, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + hp->hook.ipc_getsecid(ipcp, &blob->secid[hp->lsmid->slot]); + } } int security_msg_msg_alloc(struct msg_msg *msg) @@ -1962,22 +2187,137 @@ char **value) { struct security_hook_list *hp; + char *final = NULL; + char *cp; + int rc = 0; + int finallen = 0; + int display = lsm_task_display(current); + int slot = 0; + + if (!strcmp(name, "display")) { + /* + * lsm_slot will be 0 if there are no displaying modules. + */ + if (lsm_slot == 0) + return -EINVAL; + + /* + * Only allow getting the current process' display. + * There are too few reasons to get another process' + * display and too many LSM policy issues. + */ + if (current != p) + return -EINVAL; + + display = lsm_task_display(p); + if (display != LSMBLOB_INVALID) + slot = display; + *value = kstrdup(lsm_slotlist[slot]->lsm, GFP_KERNEL); + if (*value) + return strlen(*value); + return -ENOMEM; + } + + if (!strcmp(name, "context")) { + hlist_for_each_entry(hp, &security_hook_heads.getprocattr, + list) { + rc = hp->hook.getprocattr(p, "context", &cp); + if (rc == -EINVAL) + continue; + if (rc < 0) { + kfree(final); + return rc; + } + rc = append_ctx(&final, &finallen, hp->lsmid->lsm, + cp, rc); + kfree(cp); + if (rc < 0) { + kfree(final); + return rc; + } + } + if (final == NULL) + return -EINVAL; + *value = final; + return finallen; + } hlist_for_each_entry(hp, &security_hook_heads.getprocattr, list) { - if (lsm != NULL && strcmp(lsm, hp->lsm)) + if (lsm != NULL && strcmp(lsm, hp->lsmid->lsm)) + continue; + if (lsm == NULL && display != LSMBLOB_INVALID && + display != hp->lsmid->slot) continue; return hp->hook.getprocattr(p, name, value); } return LSM_RET_DEFAULT(getprocattr); } +/** + * security_setprocattr - Set process attributes via /proc + * @lsm: name of module involved, or NULL + * @name: name of the attribute + * @value: value to set the attribute to + * @size: size of the value + * + * Set the process attribute for the specified security module + * to the specified value. Note that this can only be used to set + * the process attributes for the current, or "self" process. + * The /proc code has already done this check. + * + * Returns 0 on success, an appropriate code otherwise. + */ int security_setprocattr(const char *lsm, const char *name, void *value, size_t size) { struct security_hook_list *hp; + char *termed; + char *copy; + int *display = current->security; + int rc = -EINVAL; + int slot = 0; + + if (!strcmp(name, "display")) { + /* + * Change the "display" value only if all the security + * modules that support setting a procattr allow it. + * It is assumed that all such security modules will be + * cooperative. + */ + if (size == 0) + return -EINVAL; + + hlist_for_each_entry(hp, &security_hook_heads.setprocattr, + list) { + rc = hp->hook.setprocattr(name, value, size); + if (rc < 0 && rc != -EINVAL) + return rc; + } + + rc = -EINVAL; + + copy = kmemdup_nul(value, size, GFP_KERNEL); + if (copy == NULL) + return -ENOMEM; + + termed = strsep(©, " \n"); + + for (slot = 0; slot < lsm_slot; slot++) + if (!strcmp(termed, lsm_slotlist[slot]->lsm)) { + *display = lsm_slotlist[slot]->slot; + rc = size; + break; + } + + kfree(termed); + return rc; + } hlist_for_each_entry(hp, &security_hook_heads.setprocattr, list) { - if (lsm != NULL && strcmp(lsm, hp->lsm)) + if (lsm != NULL && strcmp(lsm, hp->lsmid->lsm)) + continue; + if (lsm == NULL && *display != LSMBLOB_INVALID && + *display != hp->lsmid->slot) continue; return hp->hook.setprocattr(name, value, size); } @@ -1995,35 +2335,76 @@ } EXPORT_SYMBOL(security_ismaclabel); -int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen) +int security_secid_to_secctx(struct lsmblob *blob, struct lsmcontext *cp, + int display) { struct security_hook_list *hp; - int rc; + + memset(cp, 0, sizeof(*cp)); /* - * Currently, only one LSM can implement secid_to_secctx (i.e this - * LSM hook is not "stackable"). + * display either is the slot number use for formatting + * or an instruction on which relative slot to use. */ + if (display == LSMBLOB_DISPLAY) + display = lsm_task_display(current); + else if (display == LSMBLOB_FIRST) + display = LSMBLOB_INVALID; + else if (display < 0) { + WARN_ONCE(true, + "LSM: %s unknown display\n", __func__); + display = LSMBLOB_INVALID; + } else if (display >= lsm_slot) { + WARN_ONCE(true, + "LSM: %s invalid display\n", __func__); + display = LSMBLOB_INVALID; + } + + hlist_for_each_entry(hp, &security_hook_heads.secid_to_secctx, list) { - rc = hp->hook.secid_to_secctx(secid, secdata, seclen); - if (rc != LSM_RET_DEFAULT(secid_to_secctx)) - return rc; + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + if (display == LSMBLOB_INVALID || display == hp->lsmid->slot) { + cp->slot = hp->lsmid->slot; + return hp->hook.secid_to_secctx( + blob->secid[hp->lsmid->slot], + &cp->context, &cp->len); + } } return LSM_RET_DEFAULT(secid_to_secctx); } EXPORT_SYMBOL(security_secid_to_secctx); -int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid) +int security_secctx_to_secid(const char *secdata, u32 seclen, + struct lsmblob *blob) { - *secid = 0; - return call_int_hook(secctx_to_secid, 0, secdata, seclen, secid); + struct security_hook_list *hp; + int display = lsm_task_display(current); + + lsmblob_init(blob, 0); + hlist_for_each_entry(hp, &security_hook_heads.secctx_to_secid, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + if (display == LSMBLOB_INVALID || display == hp->lsmid->slot) + return hp->hook.secctx_to_secid(secdata, seclen, + &blob->secid[hp->lsmid->slot]); + } + return -EOPNOTSUPP; } EXPORT_SYMBOL(security_secctx_to_secid); -void security_release_secctx(char *secdata, u32 seclen) +void security_release_secctx(struct lsmcontext *cp) { - call_void_hook(release_secctx, secdata, seclen); + struct security_hook_list *hp; + + hlist_for_each_entry(hp, &security_hook_heads.release_secctx, list) + if (cp->slot == hp->lsmid->slot) { + hp->hook.release_secctx(cp->context, cp->len); + break; + } + + memset(cp, 0, sizeof(*cp)); } EXPORT_SYMBOL(security_release_secctx); @@ -2045,9 +2426,18 @@ } EXPORT_SYMBOL(security_inode_setsecctx); -int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen) +int security_inode_getsecctx(struct inode *inode, struct lsmcontext *cp) { - return call_int_hook(inode_getsecctx, -EOPNOTSUPP, inode, ctx, ctxlen); + struct security_hook_list *hp; + + memset(cp, 0, sizeof(*cp)); + + hlist_for_each_entry(hp, &security_hook_heads.inode_getsecctx, list) { + cp->slot = hp->lsmid->slot; + return hp->hook.inode_getsecctx(inode, (void **)&cp->context, + &cp->len); + } + return -EOPNOTSUPP; } EXPORT_SYMBOL(security_inode_getsecctx); @@ -2164,25 +2554,53 @@ int security_socket_getpeersec_stream(struct socket *sock, char __user *optval, int __user *optlen, unsigned len) { - return call_int_hook(socket_getpeersec_stream, -ENOPROTOOPT, sock, - optval, optlen, len); + int display = lsm_task_display(current); + struct security_hook_list *hp; + + hlist_for_each_entry(hp, &security_hook_heads.socket_getpeersec_stream, + list) + if (display == LSMBLOB_INVALID || display == hp->lsmid->slot) + return hp->hook.socket_getpeersec_stream(sock, optval, + optlen, len); + return -ENOPROTOOPT; } -int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid) +int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, + struct lsmblob *blob) { - return call_int_hook(socket_getpeersec_dgram, -ENOPROTOOPT, sock, - skb, secid); + struct security_hook_list *hp; + int rc = -ENOPROTOOPT; + + hlist_for_each_entry(hp, &security_hook_heads.socket_getpeersec_dgram, + list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + rc = hp->hook.socket_getpeersec_dgram(sock, skb, + &blob->secid[hp->lsmid->slot]); + if (rc != 0) + break; + } + return rc; } EXPORT_SYMBOL(security_socket_getpeersec_dgram); int security_sk_alloc(struct sock *sk, int family, gfp_t priority) { - return call_int_hook(sk_alloc_security, 0, sk, family, priority); + int rc = lsm_sock_alloc(sk, priority); + + if (unlikely(rc)) + return rc; + rc = call_int_hook(sk_alloc_security, 0, sk, family, priority); + if (unlikely(rc)) + security_sk_free(sk); + return rc; } void security_sk_free(struct sock *sk) { call_void_hook(sk_free_security, sk); + kfree(sk->sk_security); + sk->sk_security = NULL; } void security_sk_clone(const struct sock *sk, struct sock *newsk) @@ -2229,9 +2647,21 @@ } EXPORT_SYMBOL(security_inet_conn_established); -int security_secmark_relabel_packet(u32 secid) +int security_secmark_relabel_packet(struct lsmblob *blob) { - return call_int_hook(secmark_relabel_packet, 0, secid); + struct security_hook_list *hp; + int rc = 0; + + hlist_for_each_entry(hp, &security_hook_heads.secmark_relabel_packet, + list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + rc = hp->hook.secmark_relabel_packet( + blob->secid[hp->lsmid->slot]); + if (rc != 0) + break; + } + return rc; } EXPORT_SYMBOL(security_secmark_relabel_packet); @@ -2460,7 +2890,18 @@ int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule) { - return call_int_hook(audit_rule_init, 0, field, op, rulestr, lsmrule); + struct security_hook_list *hp; + int display = lsm_task_display(current); + + hlist_for_each_entry(hp, &security_hook_heads.audit_rule_init, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + if (display != LSMBLOB_INVALID && display != hp->lsmid->slot) + continue; + return hp->hook.audit_rule_init(field, op, rulestr, + &lsmrule[hp->lsmid->slot]); + } + return 0; } int security_audit_rule_known(struct audit_krule *krule) @@ -2468,14 +2909,39 @@ return call_int_hook(audit_rule_known, 0, krule); } -void security_audit_rule_free(void *lsmrule) +void security_audit_rule_free(void **lsmrule) { - call_void_hook(audit_rule_free, lsmrule); + struct security_hook_list *hp; + + hlist_for_each_entry(hp, &security_hook_heads.audit_rule_free, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + if (lsmrule[hp->lsmid->slot] == NULL) + continue; + hp->hook.audit_rule_free(lsmrule[hp->lsmid->slot]); + } } -int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule) +int security_audit_rule_match(struct lsmblob *blob, u32 field, u32 op, + void **lsmrule) { - return call_int_hook(audit_rule_match, 0, secid, field, op, lsmrule); + struct security_hook_list *hp; + int rc; + + hlist_for_each_entry(hp, &security_hook_heads.audit_rule_match, list) { + if (WARN_ON(hp->lsmid->slot < 0 || hp->lsmid->slot >= lsm_slot)) + continue; + if (lsmrule[hp->lsmid->slot] == NULL) + continue; + if (lsmrule[hp->lsmid->slot] == NULL) + continue; + rc = hp->hook.audit_rule_match(blob->secid[hp->lsmid->slot], + field, op, + &lsmrule[hp->lsmid->slot]); + if (rc) + return rc; + } + return 0; } #endif /* CONFIG_AUDIT */ @@ -2516,6 +2982,12 @@ } EXPORT_SYMBOL(security_locked_down); +int security_lock_kernel_down(const char *where, enum lockdown_reason level) +{ + return call_int_hook(lock_kernel_down, 0, where, level); +} +EXPORT_SYMBOL(security_lock_kernel_down); + #ifdef CONFIG_PERF_EVENTS int security_perf_event_open(struct perf_event_attr *attr, int type) { --- linux-5.8.0.orig/security/selinux/hooks.c +++ linux-5.8.0/security/selinux/hooks.c @@ -1450,7 +1450,7 @@ * inode_doinit with a dentry, before these inodes could * be used again by userspace. */ - goto out; + goto out_invalid; } rc = inode_doinit_use_xattr(inode, dentry, sbsec->def_sid, @@ -1507,7 +1507,7 @@ * could be used again by userspace. */ if (!dentry) - goto out; + goto out_invalid; rc = selinux_genfs_get_sid(dentry, sclass, sbsec->flags, &sid); if (rc) { @@ -1532,11 +1532,10 @@ out: spin_lock(&isec->lock); if (isec->initialized == LABEL_PENDING) { - if (!sid || rc) { + if (rc) { isec->initialized = LABEL_INVALID; goto out_unlock; } - isec->initialized = LABEL_INITIALIZED; isec->sid = sid; } @@ -1544,6 +1543,15 @@ out_unlock: spin_unlock(&isec->lock); return rc; + +out_invalid: + spin_lock(&isec->lock); + if (isec->initialized == LABEL_PENDING) { + isec->initialized = LABEL_INVALID; + isec->sid = sid; + } + spin_unlock(&isec->lock); + return 0; } /* Convert a Linux signal to an access vector. */ @@ -2237,7 +2245,7 @@ const struct task_security_struct *new_tsec) { int nnp = (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS); - int nosuid = !mnt_may_suid(bprm->file->f_path.mnt); + int nosuid = path_nosuid(&bprm->file->f_path); int rc; u32 av; @@ -3397,6 +3405,10 @@ static int selinux_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size) { const int len = sizeof(XATTR_NAME_SELINUX); + + if (!selinux_initialized(&selinux_state)) + return 0; + if (buffer && len <= buffer_size) memcpy(buffer, XATTR_NAME_SELINUX, len); return len; @@ -4472,7 +4484,7 @@ static int sock_has_perm(struct sock *sk, u32 perms) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct common_audit_data ad; struct lsm_network_audit net = {0,}; @@ -4529,7 +4541,7 @@ isec->initialized = LABEL_INITIALIZED; if (sock->sk) { - sksec = sock->sk->sk_security; + sksec = selinux_sock(sock->sk); sksec->sclass = sclass; sksec->sid = sid; /* Allows detection of the first association on this socket */ @@ -4545,8 +4557,8 @@ static int selinux_socket_socketpair(struct socket *socka, struct socket *sockb) { - struct sk_security_struct *sksec_a = socka->sk->sk_security; - struct sk_security_struct *sksec_b = sockb->sk->sk_security; + struct sk_security_struct *sksec_a = selinux_sock(socka->sk); + struct sk_security_struct *sksec_b = selinux_sock(sockb->sk); sksec_a->peer_sid = sksec_b->sid; sksec_b->peer_sid = sksec_a->sid; @@ -4561,7 +4573,7 @@ static int selinux_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen) { struct sock *sk = sock->sk; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); u16 family; int err; @@ -4696,7 +4708,7 @@ struct sockaddr *address, int addrlen) { struct sock *sk = sock->sk; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); int err; err = sock_has_perm(sk, SOCKET__CONNECT); @@ -4875,9 +4887,9 @@ struct sock *other, struct sock *newsk) { - struct sk_security_struct *sksec_sock = sock->sk_security; - struct sk_security_struct *sksec_other = other->sk_security; - struct sk_security_struct *sksec_new = newsk->sk_security; + struct sk_security_struct *sksec_sock = selinux_sock(sock); + struct sk_security_struct *sksec_other = selinux_sock(other); + struct sk_security_struct *sksec_new = selinux_sock(newsk); struct common_audit_data ad; struct lsm_network_audit net = {0,}; int err; @@ -4909,8 +4921,8 @@ static int selinux_socket_unix_may_send(struct socket *sock, struct socket *other) { - struct sk_security_struct *ssec = sock->sk->sk_security; - struct sk_security_struct *osec = other->sk->sk_security; + struct sk_security_struct *ssec = selinux_sock(sock->sk); + struct sk_security_struct *osec = selinux_sock(other->sk); struct common_audit_data ad; struct lsm_network_audit net = {0,}; @@ -4952,7 +4964,7 @@ u16 family) { int err = 0; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); u32 sk_sid = sksec->sid; struct common_audit_data ad; struct lsm_network_audit net = {0,}; @@ -4985,7 +4997,7 @@ static int selinux_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) { int err; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); u16 family = sk->sk_family; u32 sk_sid = sksec->sid; struct common_audit_data ad; @@ -5053,13 +5065,15 @@ return err; } -static int selinux_socket_getpeersec_stream(struct socket *sock, char __user *optval, - int __user *optlen, unsigned len) +static int selinux_socket_getpeersec_stream(struct socket *sock, + char __user *optval, + int __user *optlen, + unsigned int len) { int err = 0; char *scontext; u32 scontext_len; - struct sk_security_struct *sksec = sock->sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sock->sk); u32 peer_sid = SECSID_NULL; if (sksec->sclass == SECCLASS_UNIX_STREAM_SOCKET || @@ -5119,34 +5133,27 @@ static int selinux_sk_alloc_security(struct sock *sk, int family, gfp_t priority) { - struct sk_security_struct *sksec; - - sksec = kzalloc(sizeof(*sksec), priority); - if (!sksec) - return -ENOMEM; + struct sk_security_struct *sksec = selinux_sock(sk); sksec->peer_sid = SECINITSID_UNLABELED; sksec->sid = SECINITSID_UNLABELED; sksec->sclass = SECCLASS_SOCKET; selinux_netlbl_sk_security_reset(sksec); - sk->sk_security = sksec; return 0; } static void selinux_sk_free_security(struct sock *sk) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); - sk->sk_security = NULL; selinux_netlbl_sk_security_free(sksec); - kfree(sksec); } static void selinux_sk_clone_security(const struct sock *sk, struct sock *newsk) { - struct sk_security_struct *sksec = sk->sk_security; - struct sk_security_struct *newsksec = newsk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); + struct sk_security_struct *newsksec = selinux_sock(newsk); newsksec->sid = sksec->sid; newsksec->peer_sid = sksec->peer_sid; @@ -5160,7 +5167,7 @@ if (!sk) *secid = SECINITSID_ANY_SOCKET; else { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); *secid = sksec->sid; } @@ -5170,7 +5177,7 @@ { struct inode_security_struct *isec = inode_security_novalidate(SOCK_INODE(parent)); - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6 || sk->sk_family == PF_UNIX) @@ -5185,7 +5192,7 @@ static int selinux_sctp_assoc_request(struct sctp_endpoint *ep, struct sk_buff *skb) { - struct sk_security_struct *sksec = ep->base.sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(ep->base.sk); struct common_audit_data ad; struct lsm_network_audit net = {0,}; u8 peerlbl_active; @@ -5336,8 +5343,8 @@ static void selinux_sctp_sk_clone(struct sctp_endpoint *ep, struct sock *sk, struct sock *newsk) { - struct sk_security_struct *sksec = sk->sk_security; - struct sk_security_struct *newsksec = newsk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); + struct sk_security_struct *newsksec = selinux_sock(newsk); /* If policy does not support SECCLASS_SCTP_SOCKET then call * the non-sctp clone version. @@ -5354,7 +5361,7 @@ static int selinux_inet_conn_request(struct sock *sk, struct sk_buff *skb, struct request_sock *req) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); int err; u16 family = req->rsk_ops->family; u32 connsid; @@ -5375,7 +5382,7 @@ static void selinux_inet_csk_clone(struct sock *newsk, const struct request_sock *req) { - struct sk_security_struct *newsksec = newsk->sk_security; + struct sk_security_struct *newsksec = selinux_sock(newsk); newsksec->sid = req->secid; newsksec->peer_sid = req->peer_secid; @@ -5392,7 +5399,7 @@ static void selinux_inet_conn_established(struct sock *sk, struct sk_buff *skb) { u16 family = sk->sk_family; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); /* handle mapped IPv4 packets arriving via IPv6 sockets */ if (family == PF_INET6 && skb->protocol == htons(ETH_P_IP)) @@ -5476,7 +5483,7 @@ static int selinux_tun_dev_attach(struct sock *sk, void *security) { struct tun_security_struct *tunsec = security; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); /* we don't currently perform any NetLabel based labeling here and it * isn't clear that we would want to do so anyway; while we could apply @@ -5620,7 +5627,7 @@ return NF_ACCEPT; /* standard practice, label using the parent socket */ - sksec = sk->sk_security; + sksec = selinux_sock(sk); sid = sksec->sid; } else sid = SECINITSID_KERNEL; @@ -5659,7 +5666,7 @@ if (sk == NULL) return NF_ACCEPT; - sksec = sk->sk_security; + sksec = selinux_sock(sk); ad.type = LSM_AUDIT_DATA_NET; ad.u.net = &net; @@ -5751,7 +5758,7 @@ u32 skb_sid; struct sk_security_struct *sksec; - sksec = sk->sk_security; + sksec = selinux_sock(sk); if (selinux_skb_peerlbl_sid(skb, family, &skb_sid)) return NF_DROP; /* At this point, if the returned skb peerlbl is SECSID_NULL @@ -5780,7 +5787,7 @@ } else { /* Locally generated packet, fetch the security label from the * associated socket. */ - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); peer_sid = sksec->sid; secmark_perm = PACKET__SEND; } @@ -5845,7 +5852,7 @@ unsigned int data_len = skb->len; unsigned char *data = skb->data; struct nlmsghdr *nlh; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); u16 sclass = sksec->sclass; u32 perm; @@ -6293,7 +6300,7 @@ goto bad; } - if (!strcmp(name, "current")) + if (!strcmp(name, "current") || !strcmp(name, "context")) sid = __tsec->sid; else if (!strcmp(name, "prev")) sid = __tsec->osid; @@ -6335,6 +6342,17 @@ /* * Basic control over ability to set these attributes at all. */ + + /* + * For setting display, we only perform a permission check; + * the actual update to the display value is handled by the + * LSM framework. + */ + if (!strcmp(name, "display")) + return avc_has_perm(&selinux_state, + mysid, mysid, SECCLASS_PROCESS2, + PROCESS2__SETDISPLAY, NULL); + if (!strcmp(name, "exec")) error = avc_has_perm(&selinux_state, mysid, mysid, SECCLASS_PROCESS, @@ -6870,6 +6888,7 @@ .lbs_inode = sizeof(struct inode_security_struct), .lbs_ipc = sizeof(struct ipc_security_struct), .lbs_msg_msg = sizeof(struct msg_security_struct), + .lbs_sock = sizeof(struct sk_security_struct), }; #ifdef CONFIG_PERF_EVENTS @@ -6933,6 +6952,11 @@ } #endif +struct lsm_id selinux_lsmid __lsm_ro_after_init = { + .lsm = "selinux", + .slot = LSMBLOB_NEEDED +}; + /* * IMPORTANT NOTE: When adding new hooks, please be careful to keep this order: * 1. any hooks that don't belong to (2.) or (3.) below, @@ -7244,7 +7268,8 @@ hashtab_cache_init(); - security_add_hooks(selinux_hooks, ARRAY_SIZE(selinux_hooks), "selinux"); + security_add_hooks(selinux_hooks, ARRAY_SIZE(selinux_hooks), + &selinux_lsmid); if (avc_add_callback(selinux_netcache_avc_callback, AVC_CALLBACK_RESET)) panic("SELinux: Unable to register AVC netcache callback\n"); --- linux-5.8.0.orig/security/selinux/ibpkey.c +++ linux-5.8.0/security/selinux/ibpkey.c @@ -151,8 +151,10 @@ * is valid, it just won't be added to the cache. */ new = kzalloc(sizeof(*new), GFP_ATOMIC); - if (!new) + if (!new) { + ret = -ENOMEM; goto out; + } new->psec.subnet_prefix = subnet_prefix; new->psec.pkey = pkey_num; --- linux-5.8.0.orig/security/selinux/include/classmap.h +++ linux-5.8.0/security/selinux/include/classmap.h @@ -52,7 +52,7 @@ "execmem", "execstack", "execheap", "setkeycreate", "setsockcreate", "getrlimit", NULL } }, { "process2", - { "nnp_transition", "nosuid_transition", NULL } }, + { "nnp_transition", "nosuid_transition", "setdisplay", NULL } }, { "system", { "ipc_info", "syslog_read", "syslog_mod", "syslog_console", "module_request", "module_load", NULL } }, --- linux-5.8.0.orig/security/selinux/include/objsec.h +++ linux-5.8.0/security/selinux/include/objsec.h @@ -189,4 +189,9 @@ return tsec->sid; } +static inline struct sk_security_struct *selinux_sock(const struct sock *sock) +{ + return sock->sk_security + selinux_blob_sizes.lbs_sock; +} + #endif /* _SELINUX_OBJSEC_H_ */ --- linux-5.8.0.orig/security/selinux/include/security.h +++ linux-5.8.0/security/selinux/include/security.h @@ -71,6 +71,7 @@ struct netlbl_lsm_secattr; extern int selinux_enabled_boot; +extern struct lsm_id selinux_lsmid; /* Policy capabilities */ enum { @@ -177,49 +178,49 @@ { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_NETPEER]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_NETPEER]); } static inline bool selinux_policycap_openperm(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_OPENPERM]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_OPENPERM]); } static inline bool selinux_policycap_extsockclass(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_EXTSOCKCLASS]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_EXTSOCKCLASS]); } static inline bool selinux_policycap_alwaysnetwork(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_ALWAYSNETWORK]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_ALWAYSNETWORK]); } static inline bool selinux_policycap_cgroupseclabel(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_CGROUPSECLABEL]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_CGROUPSECLABEL]); } static inline bool selinux_policycap_nnp_nosuid_transition(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION]); } static inline bool selinux_policycap_genfs_seclabel_symlinks(void) { struct selinux_state *state = &selinux_state; - return state->policycap[POLICYDB_CAPABILITY_GENFS_SECLABEL_SYMLINKS]; + return READ_ONCE(state->policycap[POLICYDB_CAPABILITY_GENFS_SECLABEL_SYMLINKS]); } int security_mls_enabled(struct selinux_state *state); --- linux-5.8.0.orig/security/selinux/netlabel.c +++ linux-5.8.0/security/selinux/netlabel.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -67,7 +68,7 @@ static struct netlbl_lsm_secattr *selinux_netlbl_sock_genattr(struct sock *sk) { int rc; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct netlbl_lsm_secattr *secattr; if (sksec->nlbl_secattr != NULL) @@ -100,14 +101,14 @@ const struct sock *sk, u32 sid) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct netlbl_lsm_secattr *secattr = sksec->nlbl_secattr; if (secattr == NULL) return NULL; if ((secattr->flags & NETLBL_SECATTR_SECID) && - (secattr->attr.secid == sid)) + (secattr->attr.lsmblob.secid[selinux_lsmid.slot] == sid)) return secattr; return NULL; @@ -235,7 +236,7 @@ * being labeled by it's parent socket, if it is just exit */ sk = skb_to_full_sk(skb); if (sk != NULL) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); if (sksec->nlbl_state != NLBL_REQSKB) return 0; @@ -273,7 +274,7 @@ { int rc; struct netlbl_lsm_secattr secattr; - struct sk_security_struct *sksec = ep->base.sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(ep->base.sk); struct sockaddr_in addr4; struct sockaddr_in6 addr6; @@ -352,7 +353,7 @@ */ void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); if (family == PF_INET) sksec->nlbl_state = NLBL_LABELED; @@ -370,8 +371,8 @@ */ void selinux_netlbl_sctp_sk_clone(struct sock *sk, struct sock *newsk) { - struct sk_security_struct *sksec = sk->sk_security; - struct sk_security_struct *newsksec = newsk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); + struct sk_security_struct *newsksec = selinux_sock(newsk); newsksec->nlbl_state = sksec->nlbl_state; } @@ -389,7 +390,7 @@ int selinux_netlbl_socket_post_create(struct sock *sk, u16 family) { int rc; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct netlbl_lsm_secattr *secattr; if (family != PF_INET && family != PF_INET6) @@ -504,7 +505,7 @@ { int rc = 0; struct sock *sk = sock->sk; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct netlbl_lsm_secattr secattr; if (selinux_netlbl_option(level, optname) && @@ -542,7 +543,7 @@ struct sockaddr *addr) { int rc; - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); struct netlbl_lsm_secattr *secattr; /* connected sockets are allowed to disconnect when the address family @@ -581,7 +582,7 @@ int selinux_netlbl_socket_connect_locked(struct sock *sk, struct sockaddr *addr) { - struct sk_security_struct *sksec = sk->sk_security; + struct sk_security_struct *sksec = selinux_sock(sk); if (sksec->nlbl_state != NLBL_REQSKB && sksec->nlbl_state != NLBL_CONNLABELED) --- linux-5.8.0.orig/security/selinux/ss/services.c +++ linux-5.8.0/security/selinux/ss/services.c @@ -2103,7 +2103,8 @@ struct ebitmap_node *node; for (i = 0; i < ARRAY_SIZE(state->policycap); i++) - state->policycap[i] = ebitmap_get_bit(&p->policycaps, i); + WRITE_ONCE(state->policycap[i], + ebitmap_get_bit(&p->policycaps, i)); for (i = 0; i < ARRAY_SIZE(selinux_policycap_names); i++) pr_info("SELinux: policy capability %s=%d\n", @@ -3637,7 +3638,7 @@ if (secattr->flags & NETLBL_SECATTR_CACHE) *sid = *(u32 *)secattr->cache->data; else if (secattr->flags & NETLBL_SECATTR_SECID) - *sid = secattr->attr.secid; + *sid = secattr->attr.lsmblob.secid[selinux_lsmid.slot]; else if (secattr->flags & NETLBL_SECATTR_MLS_LVL) { rc = -EIDRM; ctx = sidtab_search(sidtab, SECINITSID_NETMSG); @@ -3710,7 +3711,7 @@ if (secattr->domain == NULL) goto out; - secattr->attr.secid = sid; + secattr->attr.lsmblob.secid[selinux_lsmid.slot] = sid; secattr->flags |= NETLBL_SECATTR_DOMAIN_CPY | NETLBL_SECATTR_SECID; mls_export_netlbl_lvl(policydb, ctx, secattr); rc = mls_export_netlbl_cat(policydb, ctx, secattr); --- linux-5.8.0.orig/security/smack/smack.h +++ linux-5.8.0/security/smack/smack.h @@ -310,6 +310,7 @@ * Shared data. */ extern int smack_enabled; +extern struct lsm_id smack_lsmid; extern int smack_cipso_direct; extern int smack_cipso_mapped; extern struct smack_known *smack_net_ambient; @@ -364,6 +365,11 @@ return ipc->security + smack_blob_sizes.lbs_ipc; } +static inline struct socket_smack *smack_sock(const struct sock *sock) +{ + return sock->sk_security + smack_blob_sizes.lbs_sock; +} + /* * Is the directory transmuting? */ --- linux-5.8.0.orig/security/smack/smack_access.c +++ linux-5.8.0/security/smack/smack_access.c @@ -669,9 +669,10 @@ bool smack_privileged(int cap) { /* - * All kernel tasks are privileged + * Kernel threads may not have credentials we can use. + * The io_uring kernel threads do have reliable credentials. */ - if (unlikely(current->flags & PF_KTHREAD)) + if ((current->flags & (PF_KTHREAD | PF_IO_WORKER)) == PF_KTHREAD) return true; return smack_privileged_cred(cap, current_cred()); --- linux-5.8.0.orig/security/smack/smack_lsm.c +++ linux-5.8.0/security/smack/smack_lsm.c @@ -1444,7 +1444,7 @@ if (sock == NULL || sock->sk == NULL) return -EOPNOTSUPP; - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); if (strcmp(name, XATTR_SMACK_IPIN) == 0) isp = ssp->smk_in; @@ -1826,7 +1826,7 @@ if (inode->i_sb->s_magic == SOCKFS_MAGIC) { sock = SOCKET_I(inode); - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); tsp = smack_cred(current_cred()); /* * If the receiving process can't write to the @@ -2233,11 +2233,7 @@ static int smack_sk_alloc_security(struct sock *sk, int family, gfp_t gfp_flags) { struct smack_known *skp = smk_of_current(); - struct socket_smack *ssp; - - ssp = kzalloc(sizeof(struct socket_smack), gfp_flags); - if (ssp == NULL) - return -ENOMEM; + struct socket_smack *ssp = smack_sock(sk); /* * Sockets created by kernel threads receive web label. @@ -2251,11 +2247,10 @@ } ssp->smk_packet = NULL; - sk->sk_security = ssp; - return 0; } +#ifdef SMACK_IPV6_PORT_LABELING /** * smack_sk_free_security - Free a socket blob * @sk: the socket @@ -2264,7 +2259,6 @@ */ static void smack_sk_free_security(struct sock *sk) { -#ifdef SMACK_IPV6_PORT_LABELING struct smk_port_label *spp; if (sk->sk_family == PF_INET6) { @@ -2277,9 +2271,8 @@ } rcu_read_unlock(); } -#endif - kfree(sk->sk_security); } +#endif /** * smack_ipv4host_label - check host based restrictions @@ -2395,7 +2388,7 @@ static int smack_netlabel(struct sock *sk, int labeled) { struct smack_known *skp; - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); int rc = 0; /* @@ -2440,7 +2433,7 @@ int rc; int sk_lbl; struct smack_known *hkp; - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); struct smk_audit_info ad; rcu_read_lock(); @@ -2514,7 +2507,7 @@ { struct sock *sk = sock->sk; struct sockaddr_in6 *addr6; - struct socket_smack *ssp = sock->sk->sk_security; + struct socket_smack *ssp = smack_sock(sock->sk); struct smk_port_label *spp; unsigned short port = 0; @@ -2603,7 +2596,7 @@ int act) { struct smk_port_label *spp; - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); struct smack_known *skp = NULL; unsigned short port; struct smack_known *object; @@ -2696,7 +2689,7 @@ if (sock == NULL || sock->sk == NULL) return -EOPNOTSUPP; - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); if (strcmp(name, XATTR_SMACK_IPIN) == 0) ssp->smk_in = skp; @@ -2744,7 +2737,7 @@ * Sockets created by kernel threads receive web label. */ if (unlikely(current->flags & PF_KTHREAD)) { - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); ssp->smk_in = &smack_known_web; ssp->smk_out = &smack_known_web; } @@ -2769,8 +2762,8 @@ static int smack_socket_socketpair(struct socket *socka, struct socket *sockb) { - struct socket_smack *asp = socka->sk->sk_security; - struct socket_smack *bsp = sockb->sk->sk_security; + struct socket_smack *asp = smack_sock(socka->sk); + struct socket_smack *bsp = smack_sock(sockb->sk); asp->smk_packet = bsp->smk_out; bsp->smk_packet = asp->smk_out; @@ -2833,7 +2826,7 @@ if (__is_defined(SMACK_IPV6_SECMARK_LABELING)) rsp = smack_ipv6host_label(sip); if (rsp != NULL) { - struct socket_smack *ssp = sock->sk->sk_security; + struct socket_smack *ssp = smack_sock(sock->sk); rc = smk_ipv6_check(ssp->smk_out, rsp, sip, SMK_CONNECTING); @@ -3470,7 +3463,7 @@ char *cp; int slen; - if (strcmp(name, "current") != 0) + if (strcmp(name, "current") != 0 && strcmp(name, "context") != 0) return -EINVAL; cp = kstrdup(skp->smk_known, GFP_KERNEL); @@ -3501,6 +3494,13 @@ struct smack_known_list_elem *sklep; int rc; + /* + * Allow the /proc/.../attr/current and SO_PEERSEC "display" + * to be reset at will. + */ + if (strcmp(name, "display") == 0) + return 0; + if (!smack_privileged(CAP_MAC_ADMIN) && list_empty(&tsp->smk_relabel)) return -EPERM; @@ -3561,9 +3561,9 @@ { struct smack_known *skp; struct smack_known *okp; - struct socket_smack *ssp = sock->sk_security; - struct socket_smack *osp = other->sk_security; - struct socket_smack *nsp = newsk->sk_security; + struct socket_smack *ssp = smack_sock(sock); + struct socket_smack *osp = smack_sock(other); + struct socket_smack *nsp = smack_sock(newsk); struct smk_audit_info ad; int rc = 0; #ifdef CONFIG_AUDIT @@ -3609,8 +3609,8 @@ */ static int smack_unix_may_send(struct socket *sock, struct socket *other) { - struct socket_smack *ssp = sock->sk->sk_security; - struct socket_smack *osp = other->sk->sk_security; + struct socket_smack *ssp = smack_sock(sock->sk); + struct socket_smack *osp = smack_sock(other->sk); struct smk_audit_info ad; int rc; @@ -3647,7 +3647,7 @@ struct sockaddr_in6 *sap = (struct sockaddr_in6 *) msg->msg_name; #endif #ifdef SMACK_IPV6_SECMARK_LABELING - struct socket_smack *ssp = sock->sk->sk_security; + struct socket_smack *ssp = smack_sock(sock->sk); struct smack_known *rsp; #endif int rc = 0; @@ -3751,7 +3751,8 @@ /* * Looks like a fallback, which gives us a secid. */ - return smack_from_secid(sap->attr.secid); + return smack_from_secid( + sap->attr.lsmblob.secid[smack_lsmid.slot]); /* * Without guidance regarding the smack value * for the packet fall back on the network @@ -3820,7 +3821,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) { struct netlbl_lsm_secattr secattr; - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); struct smack_known *skp = NULL; int rc = 0; struct smk_audit_info ad; @@ -3941,7 +3942,7 @@ int slen = 1; int rc = 0; - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); if (ssp->smk_packet != NULL) { rcp = ssp->smk_packet->smk_known; slen = strlen(rcp) + 1; @@ -3991,7 +3992,7 @@ switch (family) { case PF_UNIX: - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); s = ssp->smk_out->smk_secid; break; case PF_INET: @@ -4004,7 +4005,7 @@ * Translate what netlabel gave us. */ if (sock != NULL && sock->sk != NULL) - ssp = sock->sk->sk_security; + ssp = smack_sock(sock->sk); netlbl_secattr_init(&secattr); rc = netlbl_skbuff_getattr(skb, family, &secattr); if (rc == 0) { @@ -4042,7 +4043,7 @@ (sk->sk_family != PF_INET && sk->sk_family != PF_INET6)) return; - ssp = sk->sk_security; + ssp = smack_sock(sk); ssp->smk_in = skp; ssp->smk_out = skp; /* cssp->smk_packet is already set in smack_inet_csk_clone() */ @@ -4062,7 +4063,7 @@ { u16 family = sk->sk_family; struct smack_known *skp; - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); struct netlbl_lsm_secattr secattr; struct sockaddr_in addr; struct iphdr *hdr; @@ -4161,7 +4162,7 @@ static void smack_inet_csk_clone(struct sock *sk, const struct request_sock *req) { - struct socket_smack *ssp = sk->sk_security; + struct socket_smack *ssp = smack_sock(sk); struct smack_known *skp; if (req->peer_secid != 0) { @@ -4653,6 +4654,12 @@ .lbs_inode = sizeof(struct inode_smack), .lbs_ipc = sizeof(struct smack_known *), .lbs_msg_msg = sizeof(struct smack_known *), + .lbs_sock = sizeof(struct socket_smack), +}; + +struct lsm_id smack_lsmid __lsm_ro_after_init = { + .lsm = "smack", + .slot = LSMBLOB_NEEDED }; static struct security_hook_list smack_hooks[] __lsm_ro_after_init = { @@ -4762,7 +4769,9 @@ LSM_HOOK_INIT(socket_getpeersec_stream, smack_socket_getpeersec_stream), LSM_HOOK_INIT(socket_getpeersec_dgram, smack_socket_getpeersec_dgram), LSM_HOOK_INIT(sk_alloc_security, smack_sk_alloc_security), +#ifdef SMACK_IPV6_PORT_LABELING LSM_HOOK_INIT(sk_free_security, smack_sk_free_security), +#endif LSM_HOOK_INIT(sock_graft, smack_sock_graft), LSM_HOOK_INIT(inet_conn_request, smack_inet_conn_request), LSM_HOOK_INIT(inet_csk_clone, smack_inet_csk_clone), @@ -4852,7 +4861,7 @@ /* * Register with LSM */ - security_add_hooks(smack_hooks, ARRAY_SIZE(smack_hooks), "smack"); + security_add_hooks(smack_hooks, ARRAY_SIZE(smack_hooks), &smack_lsmid); smack_enabled = 1; pr_info("Smack: Initializing.\n"); --- linux-5.8.0.orig/security/smack/smack_netfilter.c +++ linux-5.8.0/security/smack/smack_netfilter.c @@ -28,8 +28,8 @@ struct socket_smack *ssp; struct smack_known *skp; - if (sk && sk->sk_security) { - ssp = sk->sk_security; + if (sk && smack_sock(sk)) { + ssp = smack_sock(sk); skp = ssp->smk_out; skb->secmark = skp->smk_secid; } @@ -46,8 +46,8 @@ struct socket_smack *ssp; struct smack_known *skp; - if (sk && sk->sk_security) { - ssp = sk->sk_security; + if (sk && smack_sock(sk)) { + ssp = smack_sock(sk); skp = ssp->smk_out; skb->secmark = skp->smk_secid; } --- linux-5.8.0.orig/security/smack/smackfs.c +++ linux-5.8.0/security/smack/smackfs.c @@ -185,7 +185,8 @@ nap->loginuid = audit_get_loginuid(current); nap->sessionid = audit_get_sessionid(current); - nap->secid = skp->smk_secid; + lsmblob_init(&nap->lsmdata, 0); + nap->lsmdata.secid[smack_lsmid.slot] = skp->smk_secid; } /* @@ -884,7 +885,7 @@ } ret = sscanf(rule, "%d", &maplevel); - if (ret != 1 || maplevel > SMACK_CIPSO_MAXLEVEL) + if (ret != 1 || maplevel < 0 || maplevel > SMACK_CIPSO_MAXLEVEL) goto out; rule += SMK_DIGITLEN; @@ -905,6 +906,10 @@ for (i = 0; i < catlen; i++) { rule += SMK_DIGITLEN; + if (rule > data + count) { + rc = -EOVERFLOW; + goto out; + } ret = sscanf(rule, "%u", &cat); if (ret != 1 || cat > SMACK_CIPSO_MAXCATNUM) goto out; @@ -1132,6 +1137,7 @@ static ssize_t smk_write_net4addr(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { + struct lsmblob lsmblob; struct smk_net4addr *snp; struct sockaddr_in newname; char *smack; @@ -1159,7 +1165,7 @@ return -EPERM; if (*ppos != 0) return -EINVAL; - if (count < SMK_NETLBLADDRMIN) + if (count < SMK_NETLBLADDRMIN || count > PAGE_SIZE - 1) return -EINVAL; data = memdup_user_nul(buf, count); @@ -1263,10 +1269,13 @@ * this host so that incoming packets get labeled. * but only if we didn't get the special CIPSO option */ - if (rc == 0 && skp != NULL) + if (rc == 0 && skp != NULL) { + lsmblob_init(&lsmblob, 0); + lsmblob.secid[smack_lsmid.slot] = snp->smk_label->smk_secid; rc = netlbl_cfg_unlbl_static_add(&init_net, NULL, - &snp->smk_host, &snp->smk_mask, PF_INET, - snp->smk_label->smk_secid, &audit_info); + &snp->smk_host, &snp->smk_mask, PF_INET, &lsmblob, + &audit_info); + } if (rc == 0) rc = count; @@ -1419,7 +1428,7 @@ return -EPERM; if (*ppos != 0) return -EINVAL; - if (count < SMK_NETLBLADDRMIN) + if (count < SMK_NETLBLADDRMIN || count > PAGE_SIZE - 1) return -EINVAL; data = memdup_user_nul(buf, count); @@ -1826,6 +1835,10 @@ if (!smack_privileged(CAP_MAC_ADMIN)) return -EPERM; + /* Enough data must be present */ + if (count == 0 || count > PAGE_SIZE) + return -EINVAL; + data = memdup_user_nul(buf, count); if (IS_ERR(data)) return PTR_ERR(data); @@ -1997,6 +2010,9 @@ if (!smack_privileged(CAP_MAC_ADMIN)) return -EPERM; + if (count > PAGE_SIZE) + return -EINVAL; + data = memdup_user_nul(buf, count); if (IS_ERR(data)) return PTR_ERR(data); @@ -2084,6 +2100,9 @@ if (!smack_privileged(CAP_MAC_ADMIN)) return -EPERM; + if (count > PAGE_SIZE) + return -EINVAL; + data = memdup_user_nul(buf, count); if (IS_ERR(data)) return PTR_ERR(data); @@ -2639,6 +2658,10 @@ if (!smack_privileged(CAP_MAC_ADMIN)) return -EPERM; + /* Enough data must be present */ + if (count == 0 || count > PAGE_SIZE) + return -EINVAL; + data = memdup_user_nul(buf, count); if (IS_ERR(data)) return PTR_ERR(data); @@ -2720,7 +2743,6 @@ static ssize_t smk_write_relabel_self(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { - struct task_smack *tsp = smack_cred(current_cred()); char *data; int rc; LIST_HEAD(list_tmp); @@ -2732,10 +2754,13 @@ return -EPERM; /* + * No partial write. * Enough data must be present. */ if (*ppos != 0) return -EINVAL; + if (count == 0 || count > PAGE_SIZE) + return -EINVAL; data = memdup_user_nul(buf, count); if (IS_ERR(data)) @@ -2745,11 +2770,21 @@ kfree(data); if (!rc || (rc == -EINVAL && list_empty(&list_tmp))) { + struct cred *new; + struct task_smack *tsp; + + new = prepare_creds(); + if (!new) { + rc = -ENOMEM; + goto out; + } + tsp = smack_cred(new); smk_destroy_label_list(&tsp->smk_relabel); list_splice(&list_tmp, &tsp->smk_relabel); + commit_creds(new); return count; } - +out: smk_destroy_label_list(&list_tmp); return rc; } --- linux-5.8.0.orig/security/tomoyo/file.c +++ linux-5.8.0/security/tomoyo/file.c @@ -362,14 +362,14 @@ { u16 * const a_perm = &container_of(a, struct tomoyo_path_acl, head) ->perm; - u16 perm = *a_perm; + u16 perm = READ_ONCE(*a_perm); const u16 b_perm = container_of(b, struct tomoyo_path_acl, head)->perm; if (is_delete) perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } @@ -437,7 +437,7 @@ { u8 *const a_perm = &container_of(a, struct tomoyo_mkdev_acl, head)->perm; - u8 perm = *a_perm; + u8 perm = READ_ONCE(*a_perm); const u8 b_perm = container_of(b, struct tomoyo_mkdev_acl, head) ->perm; @@ -445,7 +445,7 @@ perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } @@ -517,14 +517,14 @@ { u8 * const a_perm = &container_of(a, struct tomoyo_path2_acl, head) ->perm; - u8 perm = *a_perm; + u8 perm = READ_ONCE(*a_perm); const u8 b_perm = container_of(b, struct tomoyo_path2_acl, head)->perm; if (is_delete) perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } @@ -655,7 +655,7 @@ { u8 * const a_perm = &container_of(a, struct tomoyo_path_number_acl, head)->perm; - u8 perm = *a_perm; + u8 perm = READ_ONCE(*a_perm); const u8 b_perm = container_of(b, struct tomoyo_path_number_acl, head) ->perm; @@ -663,7 +663,7 @@ perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } --- linux-5.8.0.orig/security/tomoyo/network.c +++ linux-5.8.0/security/tomoyo/network.c @@ -233,14 +233,14 @@ { u8 * const a_perm = &container_of(a, struct tomoyo_inet_acl, head)->perm; - u8 perm = *a_perm; + u8 perm = READ_ONCE(*a_perm); const u8 b_perm = container_of(b, struct tomoyo_inet_acl, head)->perm; if (is_delete) perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } @@ -259,14 +259,14 @@ { u8 * const a_perm = &container_of(a, struct tomoyo_unix_acl, head)->perm; - u8 perm = *a_perm; + u8 perm = READ_ONCE(*a_perm); const u8 b_perm = container_of(b, struct tomoyo_unix_acl, head)->perm; if (is_delete) perm &= ~b_perm; else perm |= b_perm; - *a_perm = perm; + WRITE_ONCE(*a_perm, perm); return !perm; } @@ -613,7 +613,7 @@ static bool tomoyo_kernel_service(void) { /* Nothing to do if I am a kernel service. */ - return uaccess_kernel(); + return (current->flags & (PF_KTHREAD | PF_IO_WORKER)) == PF_KTHREAD; } /** --- linux-5.8.0.orig/security/tomoyo/tomoyo.c +++ linux-5.8.0/security/tomoyo/tomoyo.c @@ -523,6 +523,11 @@ } } +static struct lsm_id tomoyo_lsmid __lsm_ro_after_init = { + .lsm = "tomoyo", + .slot = LSMBLOB_NOT_NEEDED +}; + /* * tomoyo_security_ops is a "struct security_operations" which is used for * registering TOMOYO. @@ -575,7 +580,8 @@ struct tomoyo_task *s = tomoyo_task(current); /* register ourselves with the security framework */ - security_add_hooks(tomoyo_hooks, ARRAY_SIZE(tomoyo_hooks), "tomoyo"); + security_add_hooks(tomoyo_hooks, ARRAY_SIZE(tomoyo_hooks), + &tomoyo_lsmid); pr_info("TOMOYO Linux initialized\n"); s->domain_info = &tomoyo_kernel_domain; atomic_inc(&tomoyo_kernel_domain.users); --- linux-5.8.0.orig/security/tomoyo/util.c +++ linux-5.8.0/security/tomoyo/util.c @@ -1036,30 +1036,30 @@ if (ptr->is_deleted) continue; + /* + * Reading perm bitmap might race with tomoyo_merge_*() because + * caller does not hold tomoyo_policy_lock mutex. But exceeding + * max_learning_entry parameter by a few entries does not harm. + */ switch (ptr->type) { case TOMOYO_TYPE_PATH_ACL: - perm = container_of(ptr, struct tomoyo_path_acl, head) - ->perm; + data_race(perm = container_of(ptr, struct tomoyo_path_acl, head)->perm); break; case TOMOYO_TYPE_PATH2_ACL: - perm = container_of(ptr, struct tomoyo_path2_acl, head) - ->perm; + data_race(perm = container_of(ptr, struct tomoyo_path2_acl, head)->perm); break; case TOMOYO_TYPE_PATH_NUMBER_ACL: - perm = container_of(ptr, struct tomoyo_path_number_acl, - head)->perm; + data_race(perm = container_of(ptr, struct tomoyo_path_number_acl, head) + ->perm); break; case TOMOYO_TYPE_MKDEV_ACL: - perm = container_of(ptr, struct tomoyo_mkdev_acl, - head)->perm; + data_race(perm = container_of(ptr, struct tomoyo_mkdev_acl, head)->perm); break; case TOMOYO_TYPE_INET_ACL: - perm = container_of(ptr, struct tomoyo_inet_acl, - head)->perm; + data_race(perm = container_of(ptr, struct tomoyo_inet_acl, head)->perm); break; case TOMOYO_TYPE_UNIX_ACL: - perm = container_of(ptr, struct tomoyo_unix_acl, - head)->perm; + data_race(perm = container_of(ptr, struct tomoyo_unix_acl, head)->perm); break; case TOMOYO_TYPE_MANUAL_TASK_ACL: perm = 0; --- linux-5.8.0.orig/security/yama/yama_lsm.c +++ linux-5.8.0/security/yama/yama_lsm.c @@ -99,7 +99,7 @@ info->access = access; info->target = target; info->agent = agent; - if (task_work_add(current, &info->work, true) == 0) + if (task_work_add(current, &info->work, TWA_RESUME) == 0) return; /* success */ WARN(1, "report_access called from exiting task"); @@ -421,6 +421,11 @@ return rc; } +static struct lsm_id yama_lsmid __lsm_ro_after_init = { + .lsm = "yama", + .slot = LSMBLOB_NOT_NEEDED +}; + static struct security_hook_list yama_hooks[] __lsm_ro_after_init = { LSM_HOOK_INIT(ptrace_access_check, yama_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, yama_ptrace_traceme), @@ -477,7 +482,7 @@ static int __init yama_init(void) { pr_info("Yama: becoming mindful.\n"); - security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks), "yama"); + security_add_hooks(yama_hooks, ARRAY_SIZE(yama_hooks), &yama_lsmid); yama_init_sysctl(); return 0; } --- linux-5.8.0.orig/snapcraft.yaml +++ linux-5.8.0/snapcraft.yaml @@ -0,0 +1,36 @@ +name: pc-kernel +version: null +version-script: | + . debian/debian.env + dpkg-parsechangelog -l $DEBIAN/changelog -S version +summary: The Ubuntu generic Linux kernel +description: This Ubuntu generic Linux kernel +grade: stable +confinement: strict +type: kernel + +parts: + kernel: + plugin: kernel + source: . + source-type: git + kconfigflavour: generic + kconfigs: + - CONFIG_DEBUG_INFO=n + override-build: | + cp debian/scripts/retpoline-extract-one \ + $SNAPCRAFT_PART_BUILD/scripts/ubuntu-retpoline-extract-one + snapcraftctl build + kernel-with-firmware: false + firmware: + plugin: nil + stage-packages: + - linux-firmware + organize: + lib/firmware: firmware + prime: + - -usr + - -lib + build-packages: + - cpio + - libssl-dev --- linux-5.8.0.orig/sound/core/control.c +++ linux-5.8.0/sound/core/control.c @@ -1527,7 +1527,7 @@ unlock: up_write(&card->controls_rwsem); - return 0; + return err; } static int snd_ctl_elem_add_user(struct snd_ctl_file *file, --- linux-5.8.0.orig/sound/core/init.c +++ linux-5.8.0/sound/core/init.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -415,6 +416,9 @@ /* notify all devices that we are disconnected */ snd_device_disconnect_all(card); + if (card->sync_irq > 0) + synchronize_irq(card->sync_irq); + snd_info_card_disconnect(card); if (card->registered) { device_del(&card->card_dev); --- linux-5.8.0.orig/sound/core/memalloc.c +++ linux-5.8.0/sound/core/memalloc.c @@ -77,7 +77,8 @@ /* Assign the pool into private_data field */ dmab->private_data = pool; - dmab->area = gen_pool_dma_alloc(pool, size, &dmab->addr); + dmab->area = gen_pool_dma_alloc_align(pool, size, &dmab->addr, + PAGE_SIZE); } /** --- linux-5.8.0.orig/sound/core/oss/mulaw.c +++ linux-5.8.0/sound/core/oss/mulaw.c @@ -329,8 +329,8 @@ snd_BUG(); return -EINVAL; } - if (snd_BUG_ON(!snd_pcm_format_linear(format->format))) - return -ENXIO; + if (!snd_pcm_format_linear(format->format)) + return -EINVAL; err = snd_pcm_plugin_build(plug, "Mu-Law<->linear conversion", src_format, dst_format, --- linux-5.8.0.orig/sound/core/oss/pcm_oss.c +++ linux-5.8.0/sound/core/oss/pcm_oss.c @@ -693,6 +693,8 @@ oss_buffer_size = snd_pcm_plug_client_size(substream, snd_pcm_hw_param_value_max(slave_params, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, NULL)) * oss_frame_size; + if (!oss_buffer_size) + return -EINVAL; oss_buffer_size = rounddown_pow_of_two(oss_buffer_size); if (atomic_read(&substream->mmap_count)) { if (oss_buffer_size > runtime->oss.mmap_bytes) @@ -728,17 +730,21 @@ min_period_size = snd_pcm_plug_client_size(substream, snd_pcm_hw_param_value_min(slave_params, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, NULL)); - min_period_size *= oss_frame_size; - min_period_size = roundup_pow_of_two(min_period_size); - if (oss_period_size < min_period_size) - oss_period_size = min_period_size; + if (min_period_size) { + min_period_size *= oss_frame_size; + min_period_size = roundup_pow_of_two(min_period_size); + if (oss_period_size < min_period_size) + oss_period_size = min_period_size; + } max_period_size = snd_pcm_plug_client_size(substream, snd_pcm_hw_param_value_max(slave_params, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, NULL)); - max_period_size *= oss_frame_size; - max_period_size = rounddown_pow_of_two(max_period_size); - if (oss_period_size > max_period_size) - oss_period_size = max_period_size; + if (max_period_size) { + max_period_size *= oss_frame_size; + max_period_size = rounddown_pow_of_two(max_period_size); + if (oss_period_size > max_period_size) + oss_period_size = max_period_size; + } oss_periods = oss_buffer_size / oss_period_size; @@ -1935,11 +1941,15 @@ static int snd_pcm_oss_set_fragment1(struct snd_pcm_substream *substream, unsigned int val) { struct snd_pcm_runtime *runtime; + int fragshift; runtime = substream->runtime; if (runtime->oss.subdivision || runtime->oss.fragshift) return -EINVAL; - runtime->oss.fragshift = val & 0xffff; + fragshift = val & 0xffff; + if (fragshift >= 31) + return -EINVAL; + runtime->oss.fragshift = fragshift; runtime->oss.maxfrags = (val >> 16) & 0xffff; if (runtime->oss.fragshift < 4) /* < 16 */ runtime->oss.fragshift = 4; --- linux-5.8.0.orig/sound/core/pcm.c +++ linux-5.8.0/sound/core/pcm.c @@ -1109,6 +1109,10 @@ } } + for (cidx = 0; cidx < 2; cidx++) + for (substream = pcm->streams[cidx].substream; substream; substream = substream->next) + snd_pcm_sync_stop(substream, false); + pcm_call_notify(pcm, n_disconnect); for (cidx = 0; cidx < 2; cidx++) { snd_unregister_device(&pcm->streams[cidx].dev); --- linux-5.8.0.orig/sound/core/pcm_local.h +++ linux-5.8.0/sound/core/pcm_local.h @@ -63,6 +63,7 @@ void __snd_pcm_xrun(struct snd_pcm_substream *substream); void snd_pcm_group_init(struct snd_pcm_group *group); +void snd_pcm_sync_stop(struct snd_pcm_substream *substream, bool sync_irq); #ifdef CONFIG_SND_DMA_SGBUF struct page *snd_pcm_sgbuf_ops_page(struct snd_pcm_substream *substream, --- linux-5.8.0.orig/sound/core/pcm_native.c +++ linux-5.8.0/sound/core/pcm_native.c @@ -583,13 +583,13 @@ #endif } -static void snd_pcm_sync_stop(struct snd_pcm_substream *substream) +void snd_pcm_sync_stop(struct snd_pcm_substream *substream, bool sync_irq) { - if (substream->runtime->stop_operating) { + if (substream->runtime && substream->runtime->stop_operating) { substream->runtime->stop_operating = false; - if (substream->ops->sync_stop) + if (substream->ops && substream->ops->sync_stop) substream->ops->sync_stop(substream); - else if (substream->pcm->card->sync_irq > 0) + else if (sync_irq && substream->pcm->card->sync_irq > 0) synchronize_irq(substream->pcm->card->sync_irq); } } @@ -686,7 +686,7 @@ if (atomic_read(&substream->mmap_count)) return -EBADFD; - snd_pcm_sync_stop(substream); + snd_pcm_sync_stop(substream, true); params->rmask = ~0U; err = snd_pcm_hw_refine(substream, params); @@ -755,8 +755,13 @@ runtime->boundary *= 2; /* clear the buffer for avoiding possible kernel info leaks */ - if (runtime->dma_area && !substream->ops->copy_user) - memset(runtime->dma_area, 0, runtime->dma_bytes); + if (runtime->dma_area && !substream->ops->copy_user) { + size_t size = runtime->dma_bytes; + + if (runtime->info & SNDRV_PCM_INFO_MMAP) + size = PAGE_ALIGN(size); + memset(runtime->dma_area, 0, size); + } snd_pcm_timer_resolution_change(substream); snd_pcm_set_state(substream, SNDRV_PCM_STATE_SETUP); @@ -804,7 +809,7 @@ { int result = 0; - snd_pcm_sync_stop(substream); + snd_pcm_sync_stop(substream, true); if (substream->ops->hw_free) result = substream->ops->hw_free(substream); if (substream->managed_buffer_alloc) @@ -1416,8 +1421,10 @@ snd_pcm_state_t state) { if (substream->runtime->trigger_master == substream && - snd_pcm_running(substream)) + snd_pcm_running(substream)) { substream->ops->trigger(substream, SNDRV_PCM_TRIGGER_STOP); + substream->runtime->stop_operating = true; + } return 0; /* unconditonally stop all substreams */ } @@ -1430,7 +1437,6 @@ runtime->status->state = state; snd_pcm_timer_notify(substream, SNDRV_TIMER_EVENT_MSTOP); } - runtime->stop_operating = true; wake_up(&runtime->sleep); wake_up(&runtime->tsleep); } @@ -1610,6 +1616,7 @@ if (! snd_pcm_running(substream)) return 0; substream->ops->trigger(substream, SNDRV_PCM_TRIGGER_SUSPEND); + runtime->stop_operating = true; return 0; /* suspend unconditionally */ } @@ -1686,6 +1693,12 @@ return err; } } + + for (stream = 0; stream < 2; stream++) + for (substream = pcm->streams[stream].substream; + substream; substream = substream->next) + snd_pcm_sync_stop(substream, false); + return 0; } EXPORT_SYMBOL(snd_pcm_suspend_all); @@ -1731,7 +1744,6 @@ snd_pcm_trigger_tstamp(substream); runtime->status->state = runtime->status->suspended_state; snd_pcm_timer_notify(substream, SNDRV_TIMER_EVENT_MRESUME); - snd_pcm_sync_stop(substream); } static const struct action_ops snd_pcm_action_resume = { @@ -1861,7 +1873,7 @@ snd_pcm_state_t state) { int err; - snd_pcm_sync_stop(substream); + snd_pcm_sync_stop(substream, true); err = substream->ops->prepare(substream); if (err < 0) return err; --- linux-5.8.0.orig/sound/core/rawmidi.c +++ linux-5.8.0/sound/core/rawmidi.c @@ -95,11 +95,21 @@ } } -static inline int snd_rawmidi_ready(struct snd_rawmidi_substream *substream) +static inline bool __snd_rawmidi_ready(struct snd_rawmidi_runtime *runtime) +{ + return runtime->avail >= runtime->avail_min; +} + +static bool snd_rawmidi_ready(struct snd_rawmidi_substream *substream) { struct snd_rawmidi_runtime *runtime = substream->runtime; + unsigned long flags; + bool ready; - return runtime->avail >= runtime->avail_min; + spin_lock_irqsave(&runtime->lock, flags); + ready = __snd_rawmidi_ready(runtime); + spin_unlock_irqrestore(&runtime->lock, flags); + return ready; } static inline int snd_rawmidi_ready_append(struct snd_rawmidi_substream *substream, @@ -1019,7 +1029,7 @@ if (result > 0) { if (runtime->event) schedule_work(&runtime->event_work); - else if (snd_rawmidi_ready(substream)) + else if (__snd_rawmidi_ready(runtime)) wake_up(&runtime->sleep); } spin_unlock_irqrestore(&runtime->lock, flags); @@ -1098,7 +1108,7 @@ result = 0; while (count > 0) { spin_lock_irq(&runtime->lock); - while (!snd_rawmidi_ready(substream)) { + while (!__snd_rawmidi_ready(runtime)) { wait_queue_entry_t wait; if ((file->f_flags & O_NONBLOCK) != 0 || result > 0) { @@ -1115,9 +1125,11 @@ return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; - if (!runtime->avail) - return result > 0 ? result : -EIO; spin_lock_irq(&runtime->lock); + if (!runtime->avail) { + spin_unlock_irq(&runtime->lock); + return result > 0 ? result : -EIO; + } } spin_unlock_irq(&runtime->lock); count1 = snd_rawmidi_kernel_read1(substream, @@ -1255,7 +1267,7 @@ runtime->avail += count; substream->bytes += count; if (count > 0) { - if (runtime->drain || snd_rawmidi_ready(substream)) + if (runtime->drain || __snd_rawmidi_ready(runtime)) wake_up(&runtime->sleep); } return count; @@ -1444,9 +1456,11 @@ return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; - if (!runtime->avail && !timeout) - return result > 0 ? result : -EIO; spin_lock_irq(&runtime->lock); + if (!runtime->avail && !timeout) { + spin_unlock_irq(&runtime->lock); + return result > 0 ? result : -EIO; + } } spin_unlock_irq(&runtime->lock); count1 = snd_rawmidi_kernel_write1(substream, buf, NULL, count); @@ -1526,6 +1540,7 @@ struct snd_rawmidi *rmidi; struct snd_rawmidi_substream *substream; struct snd_rawmidi_runtime *runtime; + unsigned long buffer_size, avail, xruns; rmidi = entry->private_data; snd_iprintf(buffer, "%s\n\n", rmidi->name); @@ -1544,13 +1559,16 @@ " Owner PID : %d\n", pid_vnr(substream->pid)); runtime = substream->runtime; + spin_lock_irq(&runtime->lock); + buffer_size = runtime->buffer_size; + avail = runtime->avail; + spin_unlock_irq(&runtime->lock); snd_iprintf(buffer, " Mode : %s\n" " Buffer size : %lu\n" " Avail : %lu\n", runtime->oss ? "OSS compatible" : "native", - (unsigned long) runtime->buffer_size, - (unsigned long) runtime->avail); + buffer_size, avail); } } } @@ -1568,13 +1586,16 @@ " Owner PID : %d\n", pid_vnr(substream->pid)); runtime = substream->runtime; + spin_lock_irq(&runtime->lock); + buffer_size = runtime->buffer_size; + avail = runtime->avail; + xruns = runtime->xruns; + spin_unlock_irq(&runtime->lock); snd_iprintf(buffer, " Buffer size : %lu\n" " Avail : %lu\n" " Overruns : %lu\n", - (unsigned long) runtime->buffer_size, - (unsigned long) runtime->avail, - (unsigned long) runtime->xruns); + buffer_size, avail, xruns); } } } --- linux-5.8.0.orig/sound/core/seq/oss/seq_oss.c +++ linux-5.8.0/sound/core/seq/oss/seq_oss.c @@ -168,10 +168,19 @@ odev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { struct seq_oss_devinfo *dp; + long rc; + dp = file->private_data; if (snd_BUG_ON(!dp)) return -ENXIO; - return snd_seq_oss_ioctl(dp, cmd, arg); + + if (cmd != SNDCTL_SEQ_SYNC && + mutex_lock_interruptible(®ister_mutex)) + return -ERESTARTSYS; + rc = snd_seq_oss_ioctl(dp, cmd, arg); + if (cmd != SNDCTL_SEQ_SYNC) + mutex_unlock(®ister_mutex); + return rc; } #ifdef CONFIG_COMPAT --- linux-5.8.0.orig/sound/core/seq/oss/seq_oss_synth.c +++ linux-5.8.0/sound/core/seq/oss/seq_oss_synth.c @@ -611,7 +611,8 @@ if (info->is_midi) { struct midi_info minf; - snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf); + if (snd_seq_oss_midi_make_info(dp, info->midi_mapped, &minf)) + return -ENXIO; inf->synth_type = SYNTH_TYPE_MIDI; inf->synth_subtype = 0; inf->nr_voices = 16; --- linux-5.8.0.orig/sound/core/seq/seq_queue.h +++ linux-5.8.0/sound/core/seq/seq_queue.h @@ -26,10 +26,10 @@ struct snd_seq_timer *timer; /* time keeper for this queue */ int owner; /* client that 'owns' the timer */ - unsigned int locked:1, /* timer is only accesibble by owner if set */ - klocked:1, /* kernel lock (after START) */ - check_again:1, - check_blocked:1; + bool locked; /* timer is only accesibble by owner if set */ + bool klocked; /* kernel lock (after START) */ + bool check_again; /* concurrent access happened during check */ + bool check_blocked; /* queue being checked */ unsigned int flags; /* status flags */ unsigned int info_flags; /* info for sync */ --- linux-5.8.0.orig/sound/firewire/bebob/bebob_hwdep.c +++ linux-5.8.0/sound/firewire/bebob/bebob_hwdep.c @@ -36,12 +36,11 @@ } memset(&event, 0, sizeof(event)); + count = min_t(long, count, sizeof(event.lock_status)); if (bebob->dev_lock_changed) { event.lock_status.type = SNDRV_FIREWIRE_EVENT_LOCK_STATUS; event.lock_status.status = (bebob->dev_lock_count > 0); bebob->dev_lock_changed = false; - - count = min_t(long, count, sizeof(event.lock_status)); } spin_unlock_irq(&bebob->lock); --- linux-5.8.0.orig/sound/firewire/dice/dice-stream.c +++ linux-5.8.0/sound/firewire/dice/dice-stream.c @@ -493,11 +493,10 @@ struct reg_params tx_params, rx_params; if (dice->substreams_counter == 0) { - if (get_register_params(dice, &tx_params, &rx_params) >= 0) { - amdtp_domain_stop(&dice->domain); + if (get_register_params(dice, &tx_params, &rx_params) >= 0) finish_session(dice, &tx_params, &rx_params); - } + amdtp_domain_stop(&dice->domain); release_resources(dice); } } --- linux-5.8.0.orig/sound/firewire/digi00x/digi00x.c +++ linux-5.8.0/sound/firewire/digi00x/digi00x.c @@ -14,6 +14,7 @@ #define VENDOR_DIGIDESIGN 0x00a07e #define MODEL_CONSOLE 0x000001 #define MODEL_RACK 0x000002 +#define SPEC_VERSION 0x000001 static int name_card(struct snd_dg00x *dg00x) { @@ -175,14 +176,18 @@ /* Both of 002/003 use the same ID. */ { .match_flags = IEEE1394_MATCH_VENDOR_ID | + IEEE1394_MATCH_VERSION | IEEE1394_MATCH_MODEL_ID, .vendor_id = VENDOR_DIGIDESIGN, + .version = SPEC_VERSION, .model_id = MODEL_CONSOLE, }, { .match_flags = IEEE1394_MATCH_VENDOR_ID | + IEEE1394_MATCH_VERSION | IEEE1394_MATCH_MODEL_ID, .vendor_id = VENDOR_DIGIDESIGN, + .version = SPEC_VERSION, .model_id = MODEL_RACK, }, {} --- linux-5.8.0.orig/sound/firewire/fireface/ff-protocol-latter.c +++ linux-5.8.0/sound/firewire/fireface/ff-protocol-latter.c @@ -15,6 +15,61 @@ #define LATTER_FETCH_MODE 0xffff00000010ULL #define LATTER_SYNC_STATUS 0x0000801c0000ULL +// The content of sync status register differs between models. +// +// Fireface UCX: +// 0xf0000000: (unidentified) +// 0x0f000000: effective rate of sampling clock +// 0x00f00000: detected rate of word clock on BNC interface +// 0x000f0000: detected rate of ADAT or S/PDIF on optical interface +// 0x0000f000: detected rate of S/PDIF on coaxial interface +// 0x00000e00: effective source of sampling clock +// 0x00000e00: Internal +// 0x00000800: (unidentified) +// 0x00000600: Word clock on BNC interface +// 0x00000400: ADAT on optical interface +// 0x00000200: S/PDIF on coaxial or optical interface +// 0x00000100: Optical interface is used for ADAT signal +// 0x00000080: (unidentified) +// 0x00000040: Synchronized to word clock on BNC interface +// 0x00000020: Synchronized to ADAT or S/PDIF on optical interface +// 0x00000010: Synchronized to S/PDIF on coaxial interface +// 0x00000008: (unidentified) +// 0x00000004: Lock word clock on BNC interface +// 0x00000002: Lock ADAT or S/PDIF on optical interface +// 0x00000001: Lock S/PDIF on coaxial interface +// +// Fireface 802 (and perhaps UFX): +// 0xf0000000: effective rate of sampling clock +// 0x0f000000: detected rate of ADAT-B on 2nd optical interface +// 0x00f00000: detected rate of ADAT-A on 1st optical interface +// 0x000f0000: detected rate of AES/EBU on XLR or coaxial interface +// 0x0000f000: detected rate of word clock on BNC interface +// 0x00000e00: effective source of sampling clock +// 0x00000e00: internal +// 0x00000800: ADAT-B +// 0x00000600: ADAT-A +// 0x00000400: AES/EBU +// 0x00000200: Word clock +// 0x00000080: Synchronized to ADAT-B on 2nd optical interface +// 0x00000040: Synchronized to ADAT-A on 1st optical interface +// 0x00000020: Synchronized to AES/EBU on XLR or 2nd optical interface +// 0x00000010: Synchronized to word clock on BNC interface +// 0x00000008: Lock ADAT-B on 2nd optical interface +// 0x00000004: Lock ADAT-A on 1st optical interface +// 0x00000002: Lock AES/EBU on XLR or 2nd optical interface +// 0x00000001: Lock word clock on BNC interface +// +// The pattern for rate bits: +// 0x00: 32.0 kHz +// 0x01: 44.1 kHz +// 0x02: 48.0 kHz +// 0x04: 64.0 kHz +// 0x05: 88.2 kHz +// 0x06: 96.0 kHz +// 0x08: 128.0 kHz +// 0x09: 176.4 kHz +// 0x0a: 192.0 kHz static int parse_clock_bits(u32 data, unsigned int *rate, enum snd_ff_clock_src *src, enum snd_ff_unit_version unit_version) @@ -23,35 +78,48 @@ unsigned int rate; u32 flag; } *rate_entry, rate_entries[] = { - { 32000, 0x00000000, }, - { 44100, 0x01000000, }, - { 48000, 0x02000000, }, - { 64000, 0x04000000, }, - { 88200, 0x05000000, }, - { 96000, 0x06000000, }, - { 128000, 0x08000000, }, - { 176400, 0x09000000, }, - { 192000, 0x0a000000, }, + { 32000, 0x00, }, + { 44100, 0x01, }, + { 48000, 0x02, }, + { 64000, 0x04, }, + { 88200, 0x05, }, + { 96000, 0x06, }, + { 128000, 0x08, }, + { 176400, 0x09, }, + { 192000, 0x0a, }, }; static const struct { enum snd_ff_clock_src src; u32 flag; - } *clk_entry, clk_entries[] = { + } *clk_entry, *clk_entries, ucx_clk_entries[] = { { SND_FF_CLOCK_SRC_SPDIF, 0x00000200, }, { SND_FF_CLOCK_SRC_ADAT1, 0x00000400, }, { SND_FF_CLOCK_SRC_WORD, 0x00000600, }, { SND_FF_CLOCK_SRC_INTERNAL, 0x00000e00, }, + }, ufx_ff802_clk_entries[] = { + { SND_FF_CLOCK_SRC_WORD, 0x00000200, }, + { SND_FF_CLOCK_SRC_SPDIF, 0x00000400, }, + { SND_FF_CLOCK_SRC_ADAT1, 0x00000600, }, + { SND_FF_CLOCK_SRC_ADAT2, 0x00000800, }, + { SND_FF_CLOCK_SRC_INTERNAL, 0x00000e00, }, }; + u32 rate_bits; + unsigned int clk_entry_count; int i; - if (unit_version != SND_FF_UNIT_VERSION_UCX) { - // e.g. 0x00fe0f20 but expected 0x00eff002. - data = ((data & 0xf0f0f0f0) >> 4) | ((data & 0x0f0f0f0f) << 4); + if (unit_version == SND_FF_UNIT_VERSION_UCX) { + rate_bits = (data & 0x0f000000) >> 24; + clk_entries = ucx_clk_entries; + clk_entry_count = ARRAY_SIZE(ucx_clk_entries); + } else { + rate_bits = (data & 0xf0000000) >> 28; + clk_entries = ufx_ff802_clk_entries; + clk_entry_count = ARRAY_SIZE(ufx_ff802_clk_entries); } for (i = 0; i < ARRAY_SIZE(rate_entries); ++i) { rate_entry = rate_entries + i; - if ((data & 0x0f000000) == rate_entry->flag) { + if (rate_bits == rate_entry->flag) { *rate = rate_entry->rate; break; } @@ -59,14 +127,14 @@ if (i == ARRAY_SIZE(rate_entries)) return -EIO; - for (i = 0; i < ARRAY_SIZE(clk_entries); ++i) { + for (i = 0; i < clk_entry_count; ++i) { clk_entry = clk_entries + i; if ((data & 0x000e00) == clk_entry->flag) { *src = clk_entry->src; break; } } - if (i == ARRAY_SIZE(clk_entries)) + if (i == clk_entry_count) return -EIO; return 0; @@ -249,16 +317,22 @@ char *const label; u32 locked_mask; u32 synced_mask; - } *clk_entry, clk_entries[] = { + } *clk_entry, *clk_entries, ucx_clk_entries[] = { { "S/PDIF", 0x00000001, 0x00000010, }, { "ADAT", 0x00000002, 0x00000020, }, { "WDClk", 0x00000004, 0x00000040, }, + }, ufx_ff802_clk_entries[] = { + { "WDClk", 0x00000001, 0x00000010, }, + { "AES/EBU", 0x00000002, 0x00000020, }, + { "ADAT-A", 0x00000004, 0x00000040, }, + { "ADAT-B", 0x00000008, 0x00000080, }, }; __le32 reg; u32 data; unsigned int rate; enum snd_ff_clock_src src; const char *label; + unsigned int clk_entry_count; int i; int err; @@ -270,7 +344,15 @@ snd_iprintf(buffer, "External source detection:\n"); - for (i = 0; i < ARRAY_SIZE(clk_entries); ++i) { + if (ff->unit_version == SND_FF_UNIT_VERSION_UCX) { + clk_entries = ucx_clk_entries; + clk_entry_count = ARRAY_SIZE(ucx_clk_entries); + } else { + clk_entries = ufx_ff802_clk_entries; + clk_entry_count = ARRAY_SIZE(ufx_ff802_clk_entries); + } + + for (i = 0; i < clk_entry_count; ++i) { clk_entry = clk_entries + i; snd_iprintf(buffer, "%s: ", clk_entry->label); if (data & clk_entry->locked_mask) { --- linux-5.8.0.orig/sound/firewire/fireface/ff-transaction.c +++ linux-5.8.0/sound/firewire/fireface/ff-transaction.c @@ -88,7 +88,7 @@ /* Set interval to next transaction. */ ff->next_ktime[port] = ktime_add_ns(ktime_get(), - ff->rx_bytes[port] * 8 * NSEC_PER_SEC / 31250); + ff->rx_bytes[port] * 8 * (NSEC_PER_SEC / 31250)); if (quad_count == 1) tcode = TCODE_WRITE_QUADLET_REQUEST; --- linux-5.8.0.orig/sound/firewire/fireworks/fireworks_transaction.c +++ linux-5.8.0/sound/firewire/fireworks/fireworks_transaction.c @@ -123,7 +123,7 @@ t = (struct snd_efw_transaction *)data; length = min_t(size_t, be32_to_cpu(t->length) * sizeof(u32), length); - spin_lock_irq(&efw->lock); + spin_lock(&efw->lock); if (efw->push_ptr < efw->pull_ptr) capacity = (unsigned int)(efw->pull_ptr - efw->push_ptr); @@ -190,7 +190,7 @@ copy_resp_to_buf(efw, data, length, rcode); end: - spin_unlock_irq(&instances_lock); + spin_unlock(&instances_lock); } static void --- linux-5.8.0.orig/sound/firewire/tascam/tascam-transaction.c +++ linux-5.8.0/sound/firewire/tascam/tascam-transaction.c @@ -209,7 +209,7 @@ /* Set interval to next transaction. */ port->next_ktime = ktime_add_ns(ktime_get(), - port->consume_bytes * 8 * NSEC_PER_SEC / 31250); + port->consume_bytes * 8 * (NSEC_PER_SEC / 31250)); /* Start this transaction. */ port->idling = false; --- linux-5.8.0.orig/sound/firewire/tascam/tascam.c +++ linux-5.8.0/sound/firewire/tascam/tascam.c @@ -39,9 +39,6 @@ .midi_capture_ports = 2, .midi_playback_ports = 4, }, - // This kernel module doesn't support FE-8 because the most of features - // can be implemented in userspace without any specific support of this - // module. }; static int identify_model(struct snd_tscm *tscm) @@ -211,11 +208,39 @@ } static const struct ieee1394_device_id snd_tscm_id_table[] = { + // Tascam, FW-1884. + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | + IEEE1394_MATCH_SPECIFIER_ID | + IEEE1394_MATCH_VERSION, + .vendor_id = 0x00022e, + .specifier_id = 0x00022e, + .version = 0x800000, + }, + // Tascam, FE-8 (.version = 0x800001) + // This kernel module doesn't support FE-8 because the most of features + // can be implemented in userspace without any specific support of this + // module. + // + // .version = 0x800002 is unknown. + // + // Tascam, FW-1082. + { + .match_flags = IEEE1394_MATCH_VENDOR_ID | + IEEE1394_MATCH_SPECIFIER_ID | + IEEE1394_MATCH_VERSION, + .vendor_id = 0x00022e, + .specifier_id = 0x00022e, + .version = 0x800003, + }, + // Tascam, FW-1804. { .match_flags = IEEE1394_MATCH_VENDOR_ID | - IEEE1394_MATCH_SPECIFIER_ID, + IEEE1394_MATCH_SPECIFIER_ID | + IEEE1394_MATCH_VERSION, .vendor_id = 0x00022e, .specifier_id = 0x00022e, + .version = 0x800004, }, {} }; --- linux-5.8.0.orig/sound/hda/ext/hdac_ext_controller.c +++ linux-5.8.0/sound/hda/ext/hdac_ext_controller.c @@ -148,6 +148,8 @@ return NULL; if (bus->idx != bus_idx) return NULL; + if (addr < 0 || addr > 31) + return NULL; list_for_each_entry(hlink, &bus->hlink_list, list) { for (i = 0; i < HDA_MAX_CODECS; i++) { --- linux-5.8.0.orig/sound/hda/hdac_bus.c +++ linux-5.8.0/sound/hda/hdac_bus.c @@ -46,6 +46,18 @@ INIT_LIST_HEAD(&bus->hlink_list); init_waitqueue_head(&bus->rirb_wq); bus->irq = -1; + + /* + * Default value of '8' is as per the HD audio specification (Rev 1.0a). + * Following relation is used to derive STRIPE control value. + * For sample rate <= 48K: + * { ((num_channels * bits_per_sample) / number of SDOs) >= 8 } + * For sample rate > 48K: + * { ((num_channels * bits_per_sample * rate/48000) / + * number of SDOs) >= 8 } + */ + bus->sdo_limit = 8; + return 0; } EXPORT_SYMBOL_GPL(snd_hdac_bus_init); --- linux-5.8.0.orig/sound/hda/hdac_controller.c +++ linux-5.8.0/sound/hda/hdac_controller.c @@ -529,17 +529,6 @@ bus->chip_init = true; - /* - * Default value of '8' is as per the HD audio specification (Rev 1.0a). - * Following relation is used to derive STRIPE control value. - * For sample rate <= 48K: - * { ((num_channels * bits_per_sample) / number of SDOs) >= 8 } - * For sample rate > 48K: - * { ((num_channels * bits_per_sample * rate/48000) / - * number of SDOs) >= 8 } - */ - bus->sdo_limit = 8; - return true; } EXPORT_SYMBOL_GPL(snd_hdac_bus_init_chip); --- linux-5.8.0.orig/sound/hda/hdac_device.c +++ linux-5.8.0/sound/hda/hdac_device.c @@ -127,6 +127,8 @@ void snd_hdac_device_exit(struct hdac_device *codec) { pm_runtime_put_noidle(&codec->dev); + /* keep balance of runtime PM child_count in parent device */ + pm_runtime_set_suspended(&codec->dev); snd_hdac_bus_remove_device(codec->bus, codec); kfree(codec->vendor_name); kfree(codec->chip_name); --- linux-5.8.0.orig/sound/hda/intel-dsp-config.c +++ linux-5.8.0/sound/hda/intel-dsp-config.c @@ -54,7 +54,7 @@ #endif /* * Apollolake (Broxton-P) - * the legacy HDaudio driver is used except on Up Squared (SOF) and + * the legacy HDAudio driver is used except on Up Squared (SOF) and * Chromebooks (SST) */ #if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE) @@ -89,7 +89,7 @@ }, #endif /* - * Skylake and Kabylake use legacy HDaudio driver except for Google + * Skylake and Kabylake use legacy HDAudio driver except for Google * Chromebooks (SST) */ @@ -135,7 +135,7 @@ #endif /* - * Geminilake uses legacy HDaudio driver except for Google + * Geminilake uses legacy HDAudio driver except for Google * Chromebooks */ /* Geminilake */ @@ -157,7 +157,7 @@ /* * CoffeeLake, CannonLake, CometLake, IceLake, TigerLake use legacy - * HDaudio driver except for Google Chromebooks and when DMICs are + * HDAudio driver except for Google Chromebooks and when DMICs are * present. Two cases are required since Coreboot does not expose NHLT * tables. * @@ -306,6 +306,10 @@ .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE, .device = 0xa0c8, }, + { + .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE, + .device = 0x43c8, + }, #endif /* Elkhart Lake */ @@ -391,7 +395,7 @@ if (pci->class == 0x040300) return SND_INTEL_DSP_DRIVER_LEGACY; if (pci->class != 0x040100 && pci->class != 0x040380) { - dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, selecting HDA legacy driver\n", pci->class); + dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, selecting HDAudio legacy driver\n", pci->class); return SND_INTEL_DSP_DRIVER_LEGACY; } --- linux-5.8.0.orig/sound/hda/intel-nhlt.c +++ linux-5.8.0/sound/hda/intel-nhlt.c @@ -31,18 +31,49 @@ struct nhlt_endpoint *epnt; struct nhlt_dmic_array_config *cfg; struct nhlt_vendor_dmic_array_config *cfg_vendor; + struct nhlt_fmt *fmt_configs; unsigned int dmic_geo = 0; - u8 j; + u16 max_ch = 0; + u8 i, j; if (!nhlt) return 0; - epnt = (struct nhlt_endpoint *)nhlt->desc; + if (nhlt->header.length <= sizeof(struct acpi_table_header)) { + dev_warn(dev, "Invalid DMIC description table\n"); + return 0; + } + + for (j = 0, epnt = nhlt->desc; j < nhlt->endpoint_count; j++, + epnt = (struct nhlt_endpoint *)((u8 *)epnt + epnt->length)) { + + if (epnt->linktype != NHLT_LINK_DMIC) + continue; + + cfg = (struct nhlt_dmic_array_config *)(epnt->config.caps); + fmt_configs = (struct nhlt_fmt *)(epnt->config.caps + epnt->config.size); + + /* find max number of channels based on format_configuration */ + if (fmt_configs->fmt_count) { + dev_dbg(dev, "%s: found %d format definitions\n", + __func__, fmt_configs->fmt_count); + + for (i = 0; i < fmt_configs->fmt_count; i++) { + struct wav_fmt_ext *fmt_ext; + + fmt_ext = &fmt_configs->fmt_config[i].fmt_ext; - for (j = 0; j < nhlt->endpoint_count; j++) { - if (epnt->linktype == NHLT_LINK_DMIC) { - cfg = (struct nhlt_dmic_array_config *) - (epnt->config.caps); + if (fmt_ext->fmt.channels > max_ch) + max_ch = fmt_ext->fmt.channels; + } + dev_dbg(dev, "%s: max channels found %d\n", __func__, max_ch); + } else { + dev_dbg(dev, "%s: No format information found\n", __func__); + } + + if (cfg->device_config.config_type != NHLT_CONFIG_TYPE_MIC_ARRAY) { + dmic_geo = max_ch; + } else { switch (cfg->array_type) { case NHLT_MIC_ARRAY_2CH_SMALL: case NHLT_MIC_ARRAY_2CH_BIG: @@ -59,13 +90,23 @@ dmic_geo = cfg_vendor->nb_mics; break; default: - dev_warn(dev, "undefined DMIC array_type 0x%0x\n", - cfg->array_type); + dev_warn(dev, "%s: undefined DMIC array_type 0x%0x\n", + __func__, cfg->array_type); + } + + if (dmic_geo > 0) { + dev_dbg(dev, "%s: Array with %d dmics\n", __func__, dmic_geo); + } + if (max_ch > dmic_geo) { + dev_dbg(dev, "%s: max channels %d exceed dmic number %d\n", + __func__, max_ch, dmic_geo); } } - epnt = (struct nhlt_endpoint *)((u8 *)epnt + epnt->length); } + dev_dbg(dev, "%s: dmic number %d max_ch %d\n", + __func__, dmic_geo, max_ch); + return dmic_geo; } EXPORT_SYMBOL_GPL(intel_nhlt_get_dmic_geo); --- linux-5.8.0.orig/sound/pci/asihpi/hpioctl.c +++ linux-5.8.0/sound/pci/asihpi/hpioctl.c @@ -343,7 +343,7 @@ struct hpi_message hm; struct hpi_response hr; struct hpi_adapter adapter; - struct hpi_pci pci; + struct hpi_pci pci = { 0 }; memset(&adapter, 0, sizeof(adapter)); @@ -499,7 +499,7 @@ return 0; err: - for (idx = 0; idx < HPI_MAX_ADAPTER_MEM_SPACES; idx++) { + while (--idx >= 0) { if (pci.ap_mem_base[idx]) { iounmap(pci.ap_mem_base[idx]); pci.ap_mem_base[idx] = NULL; --- linux-5.8.0.orig/sound/pci/ca0106/ca0106_main.c +++ linux-5.8.0/sound/pci/ca0106/ca0106_main.c @@ -537,7 +537,8 @@ else /* Power down */ chip->spi_dac_reg[reg] |= bit; - return snd_ca0106_spi_write(chip, chip->spi_dac_reg[reg]); + if (snd_ca0106_spi_write(chip, chip->spi_dac_reg[reg]) != 0) + return -ENXIO; } return 0; } --- linux-5.8.0.orig/sound/pci/cs46xx/cs46xx_lib.c +++ linux-5.8.0/sound/pci/cs46xx/cs46xx_lib.c @@ -766,7 +766,7 @@ rate = 48000 / 9; /* - * We can not capture at at rate greater than the Input Rate (48000). + * We can not capture at a rate greater than the Input Rate (48000). * Return an error if an attempt is made to stray outside that limit. */ if (rate > 48000) --- linux-5.8.0.orig/sound/pci/cs46xx/dsp_spos_scb_lib.c +++ linux-5.8.0/sound/pci/cs46xx/dsp_spos_scb_lib.c @@ -1716,7 +1716,7 @@ struct dsp_spos_instance * ins = chip->dsp_spos_instance; if ( ins->spdif_status_out & DSP_SPDIF_STATUS_OUTPUT_ENABLED ) { - /* remove AsynchFGTxSCB and and PCMSerialInput_II */ + /* remove AsynchFGTxSCB and PCMSerialInput_II */ cs46xx_dsp_disable_spdif_out (chip); /* save state */ --- linux-5.8.0.orig/sound/pci/ctxfi/cthw20k2.c +++ linux-5.8.0/sound/pci/ctxfi/cthw20k2.c @@ -991,7 +991,7 @@ if (idx < 4) { /* S/PDIF output */ - switch ((conf & 0x7)) { + switch ((conf & 0xf)) { case 1: set_field(&ctl->txctl[idx], ATXCTL_NUC, 0); break; --- linux-5.8.0.orig/sound/pci/echoaudio/echoaudio.c +++ linux-5.8.0/sound/pci/echoaudio/echoaudio.c @@ -2158,7 +2158,6 @@ if (err < 0) { kfree(commpage_bak); dev_err(dev, "resume init_hw err=%d\n", err); - snd_echo_free(chip); return err; } @@ -2185,7 +2184,6 @@ if (request_irq(pci->irq, snd_echo_interrupt, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(chip->card->dev, "cannot grab irq\n"); - snd_echo_free(chip); return -EBUSY; } chip->irq = pci->irq; --- linux-5.8.0.orig/sound/pci/hda/Kconfig +++ linux-5.8.0/sound/pci/hda/Kconfig @@ -8,6 +8,9 @@ select SND_JACK select SND_HDA_CORE +config SND_HDA_GENERIC_LEDS + bool + config SND_HDA_INTEL tristate "HD Audio PCI" depends on SND_PCI @@ -91,6 +94,7 @@ config SND_HDA_CODEC_REALTEK tristate "Build Realtek HD-audio codec support" select SND_HDA_GENERIC + select SND_HDA_GENERIC_LEDS help Say Y or M here to include Realtek HD-audio codec support in snd-hda-intel driver, such as ALC880. @@ -111,6 +115,7 @@ config SND_HDA_CODEC_SIGMATEL tristate "Build IDT/Sigmatel HD-audio codec support" select SND_HDA_GENERIC + select SND_HDA_GENERIC_LEDS help Say Y or M here to include IDT (Sigmatel) HD-audio codec support in snd-hda-intel driver, such as STAC9200. @@ -155,6 +160,7 @@ config SND_HDA_CODEC_CONEXANT tristate "Build Conexant HD-audio codec support" select SND_HDA_GENERIC + select SND_HDA_GENERIC_LEDS help Say Y or M here to include Conexant HD-audio codec support in snd-hda-intel driver, such as CX20549. @@ -215,6 +221,9 @@ config SND_HDA_GENERIC tristate "Enable generic HD-audio codec parser" + select LEDS_CLASS if SND_HDA_GENERIC_LEDS + select LEDS_TRIGGERS if SND_HDA_GENERIC_LEDS + select LEDS_TRIGGER_AUDIO if SND_HDA_GENERIC_LEDS help Say Y or M here to enable the generic HD-audio codec parser in snd-hda-intel driver. --- linux-5.8.0.orig/sound/pci/hda/hda_bind.c +++ linux-5.8.0/sound/pci/hda/hda_bind.c @@ -47,6 +47,10 @@ if (codec->bus->shutdown) return; + /* ignore unsol events during system suspend/resume */ + if (codec->core.dev.power.power_state.event != PM_EVENT_ON) + return; + if (codec->patch_ops.unsol_event) codec->patch_ops.unsol_event(codec, ev); } --- linux-5.8.0.orig/sound/pci/hda/hda_codec.c +++ linux-5.8.0/sound/pci/hda/hda_codec.c @@ -1799,7 +1799,7 @@ return -EBUSY; /* OK, let it free */ - snd_hdac_device_unregister(&codec->core); + device_release_driver(hda_codec_dev(codec)); /* allow device access again */ snd_hda_unlock_devices(bus); @@ -2963,21 +2963,22 @@ pm_runtime_mark_last_busy(dev); return 0; } + #endif /* CONFIG_PM */ #ifdef CONFIG_PM_SLEEP -static int hda_codec_force_resume(struct device *dev) +static int hda_codec_pm_prepare(struct device *dev) +{ + return pm_runtime_suspended(dev); +} + +static void hda_codec_pm_complete(struct device *dev) { struct hda_codec *codec = dev_to_hda_codec(dev); - int ret; - ret = pm_runtime_force_resume(dev); - /* schedule jackpoll work for jack detection update */ - if (codec->jackpoll_interval || - (pm_runtime_suspended(dev) && hda_codec_need_resume(codec))) - schedule_delayed_work(&codec->jackpoll_work, - codec->jackpoll_interval); - return ret; + if (pm_runtime_suspended(dev) && (codec->jackpoll_interval || + hda_codec_need_resume(codec) || codec->forced_resume)) + pm_request_resume(dev); } static int hda_codec_pm_suspend(struct device *dev) @@ -2989,7 +2990,7 @@ static int hda_codec_pm_resume(struct device *dev) { dev->power.power_state = PMSG_RESUME; - return hda_codec_force_resume(dev); + return pm_runtime_force_resume(dev); } static int hda_codec_pm_freeze(struct device *dev) @@ -3001,19 +3002,21 @@ static int hda_codec_pm_thaw(struct device *dev) { dev->power.power_state = PMSG_THAW; - return hda_codec_force_resume(dev); + return pm_runtime_force_resume(dev); } static int hda_codec_pm_restore(struct device *dev) { dev->power.power_state = PMSG_RESTORE; - return hda_codec_force_resume(dev); + return pm_runtime_force_resume(dev); } #endif /* CONFIG_PM_SLEEP */ /* referred in hda_bind.c */ const struct dev_pm_ops hda_codec_driver_pm = { #ifdef CONFIG_PM_SLEEP + .prepare = hda_codec_pm_prepare, + .complete = hda_codec_pm_complete, .suspend = hda_codec_pm_suspend, .resume = hda_codec_pm_resume, .freeze = hda_codec_pm_freeze, @@ -3427,7 +3430,7 @@ * @nid: NID to check / update * * Check whether the given NID is in the amp list. If it's in the list, - * check the current AMP status, and update the the power-status according + * check the current AMP status, and update the power-status according * to the mute status. * * This function is supposed to be set or called from the check_power_status --- linux-5.8.0.orig/sound/pci/hda/hda_controller.c +++ linux-5.8.0/sound/pci/hda/hda_controller.c @@ -609,13 +609,6 @@ 20, 178000000); - /* by some reason, the playback stream stalls on PulseAudio with - * tsched=1 when a capture stream triggers. Until we figure out the - * real cause, disable tsched mode by telling the PCM info flag. - */ - if (chip->driver_caps & AZX_DCAPS_AMD_WORKAROUND) - runtime->hw.info |= SNDRV_PCM_INFO_BATCH; - if (chip->align_buffer_size) /* constrain buffer sizes to be multiple of 128 bytes. This is more efficient in terms of memory --- linux-5.8.0.orig/sound/pci/hda/hda_controller.h +++ linux-5.8.0/sound/pci/hda/hda_controller.h @@ -41,7 +41,7 @@ /* 24 unused */ #define AZX_DCAPS_COUNT_LPIB_DELAY (1 << 25) /* Take LPIB as delay */ #define AZX_DCAPS_PM_RUNTIME (1 << 26) /* runtime PM support */ -#define AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP (1 << 27) /* Workaround for spurious wakeups after suspend */ +/* 27 unused */ #define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28) /* CORBRP clears itself after reset */ #define AZX_DCAPS_NO_MSI64 (1 << 29) /* Stick to 32-bit MSIs */ #define AZX_DCAPS_SEPARATE_STREAM_TAG (1 << 30) /* capture and playback use separate stream tag */ @@ -143,6 +143,7 @@ unsigned int align_buffer_size:1; unsigned int region_requested:1; unsigned int disabled:1; /* disabled by vga_switcheroo */ + unsigned int pm_prepared:1; /* GTS present */ unsigned int gts_present:1; --- linux-5.8.0.orig/sound/pci/hda/hda_generic.c +++ linux-5.8.0/sound/pci/hda/hda_generic.c @@ -813,7 +813,7 @@ } } -/* sync power of each widget in the the given path */ +/* sync power of each widget in the given path */ static hda_nid_t path_power_update(struct hda_codec *codec, struct nid_path *path, bool allow_powerdown) @@ -1364,16 +1364,20 @@ struct nid_path *path; hda_nid_t pin = pins[i]; - path = snd_hda_get_path_from_idx(codec, path_idx[i]); - if (path) { - badness += assign_out_path_ctls(codec, path); - continue; + if (!spec->obey_preferred_dacs) { + path = snd_hda_get_path_from_idx(codec, path_idx[i]); + if (path) { + badness += assign_out_path_ctls(codec, path); + continue; + } } dacs[i] = get_preferred_dac(codec, pin); if (dacs[i]) { if (is_dac_already_used(codec, dacs[i])) badness += bad->shared_primary; + } else if (spec->obey_preferred_dacs) { + badness += BAD_NO_PRIMARY_DAC; } if (!dacs[i]) @@ -3887,6 +3891,66 @@ return 0; } +#ifdef CONFIG_SND_HDA_GENERIC_LEDS +/* + * vmaster mute LED hook helpers + */ + +static int create_mute_led_cdev(struct hda_codec *codec, + int (*callback)(struct led_classdev *, + enum led_brightness), + bool micmute) +{ + struct led_classdev *cdev; + + cdev = devm_kzalloc(&codec->core.dev, sizeof(*cdev), GFP_KERNEL); + if (!cdev) + return -ENOMEM; + + cdev->name = micmute ? "hda::micmute" : "hda::mute"; + cdev->max_brightness = 1; + cdev->default_trigger = micmute ? "audio-micmute" : "audio-mute"; + cdev->brightness_set_blocking = callback; + cdev->brightness = ledtrig_audio_get(micmute ? LED_AUDIO_MICMUTE : LED_AUDIO_MUTE); + cdev->flags = LED_CORE_SUSPENDRESUME; + + return devm_led_classdev_register(&codec->core.dev, cdev); +} + +static void vmaster_update_mute_led(void *private_data, int enabled) +{ + ledtrig_audio_set(LED_AUDIO_MUTE, enabled ? LED_OFF : LED_ON); +} + +/** + * snd_dha_gen_add_mute_led_cdev - Create a LED classdev and enable as vmaster mute LED + * @codec: the HDA codec + * @callback: the callback for LED classdev brightness_set_blocking + */ +int snd_hda_gen_add_mute_led_cdev(struct hda_codec *codec, + int (*callback)(struct led_classdev *, + enum led_brightness)) +{ + struct hda_gen_spec *spec = codec->spec; + int err; + + if (callback) { + err = create_mute_led_cdev(codec, callback, false); + if (err) { + codec_warn(codec, "failed to create a mute LED cdev\n"); + return err; + } + } + + if (spec->vmaster_mute.hook) + codec_err(codec, "vmaster hook already present before cdev!\n"); + + spec->vmaster_mute.hook = vmaster_update_mute_led; + spec->vmaster_mute_enum = 1; + return 0; +} +EXPORT_SYMBOL_GPL(snd_hda_gen_add_mute_led_cdev); + /* * mic mute LED hook helpers */ @@ -3921,8 +3985,8 @@ if (val == spec->micmute_led.led_value) return; spec->micmute_led.led_value = val; - if (spec->micmute_led.update) - spec->micmute_led.update(codec); + ledtrig_audio_set(LED_AUDIO_MICMUTE, + spec->micmute_led.led_value ? LED_ON : LED_OFF); } static void update_micmute_led(struct hda_codec *codec, @@ -3994,69 +4058,53 @@ .put = micmute_led_mode_put, }; -/** - * snd_hda_gen_add_micmute_led - helper for setting up mic mute LED hook - * @codec: the HDA codec - * @hook: the callback for updating LED - * - * Called from the codec drivers for offering the mic mute LED controls. - * When established, it sets up cap_sync_hook and triggers the callback at - * each time when the capture mixer switch changes. The callback is supposed - * to update the LED accordingly. - * - * Returns 0 if the hook is established or a negative error code. - */ -int snd_hda_gen_add_micmute_led(struct hda_codec *codec, - void (*hook)(struct hda_codec *)) +/* Set up the capture sync hook for controlling the mic-mute LED */ +static int add_micmute_led_hook(struct hda_codec *codec) { struct hda_gen_spec *spec = codec->spec; spec->micmute_led.led_mode = MICMUTE_LED_FOLLOW_MUTE; spec->micmute_led.capture = 0; - spec->micmute_led.led_value = 0; + spec->micmute_led.led_value = -1; spec->micmute_led.old_hook = spec->cap_sync_hook; - spec->micmute_led.update = hook; spec->cap_sync_hook = update_micmute_led; if (!snd_hda_gen_add_kctl(spec, NULL, &micmute_led_mode_ctl)) return -ENOMEM; return 0; } -EXPORT_SYMBOL_GPL(snd_hda_gen_add_micmute_led); - -#if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) -static void call_ledtrig_micmute(struct hda_codec *codec) -{ - struct hda_gen_spec *spec = codec->spec; - - ledtrig_audio_set(LED_AUDIO_MICMUTE, - spec->micmute_led.led_value ? LED_ON : LED_OFF); -} -#endif /** - * snd_hda_gen_fixup_micmute_led - A fixup for mic-mute LED trigger - * - * Pass this function to the quirk entry if another driver supports the - * audio mic-mute LED trigger. Then this will bind the mixer capture switch - * change with the LED. + * snd_dha_gen_add_micmute_led_cdev - Create a LED classdev and enable as mic-mute LED + * @codec: the HDA codec + * @callback: the callback for LED classdev brightness_set_blocking * - * Note that this fixup has to be called after other fixup that sets - * cap_sync_hook. Otherwise the chaining wouldn't work. + * Called from the codec drivers for offering the mic mute LED controls. + * This creates a LED classdev and sets up the cap_sync_hook that is called at + * each time when the capture mixer switch changes. * - * @codec: the HDA codec - * @fix: fixup pointer - * @action: only supports HDA_FIXUP_ACT_PROBE value + * When NULL is passed to @callback, no classdev is created but only the + * LED-trigger is set up. * + * Returns 0 or a negative error. */ -void snd_hda_gen_fixup_micmute_led(struct hda_codec *codec, - const struct hda_fixup *fix, int action) +int snd_hda_gen_add_micmute_led_cdev(struct hda_codec *codec, + int (*callback)(struct led_classdev *, + enum led_brightness)) { -#if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) - if (action == HDA_FIXUP_ACT_PROBE) - snd_hda_gen_add_micmute_led(codec, call_ledtrig_micmute); -#endif + int err; + + if (callback) { + err = create_mute_led_cdev(codec, callback, true); + if (err) { + codec_warn(codec, "failed to create a mic-mute LED cdev\n"); + return err; + } + } + + return add_micmute_led_hook(codec); } -EXPORT_SYMBOL_GPL(snd_hda_gen_fixup_micmute_led); +EXPORT_SYMBOL_GPL(snd_hda_gen_add_micmute_led_cdev); +#endif /* CONFIG_SND_HDA_GENERIC_LEDS */ /* * parse digital I/Os and set up NIDs in BIOS auto-parse mode --- linux-5.8.0.orig/sound/pci/hda/hda_generic.h +++ linux-5.8.0/sound/pci/hda/hda_generic.h @@ -8,6 +8,8 @@ #ifndef __SOUND_HDA_GENERIC_H #define __SOUND_HDA_GENERIC_H +#include + /* table entry for multi-io paths */ struct hda_multi_io { hda_nid_t pin; /* multi-io widget pin NID */ @@ -86,7 +88,6 @@ unsigned int led_mode; unsigned int capture; unsigned int led_value; - void (*update)(struct hda_codec *codec); void (*old_hook)(struct hda_codec *codec, struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); @@ -236,6 +237,7 @@ unsigned int power_down_unused:1; /* power down unused widgets */ unsigned int dac_min_mute:1; /* minimal = mute for DACs */ unsigned int suppress_vmaster:1; /* don't create vmaster kctls */ + unsigned int obey_preferred_dacs:1; /* obey preferred_dacs assignment */ /* other internal flags */ unsigned int no_analog:1; /* digital I/O only */ @@ -353,9 +355,11 @@ void snd_hda_gen_stream_pm(struct hda_codec *codec, hda_nid_t nid, bool on); int snd_hda_gen_fix_pin_power(struct hda_codec *codec, hda_nid_t pin); -int snd_hda_gen_add_micmute_led(struct hda_codec *codec, - void (*hook)(struct hda_codec *)); -void snd_hda_gen_fixup_micmute_led(struct hda_codec *codec, - const struct hda_fixup *fix, int action); +int snd_hda_gen_add_mute_led_cdev(struct hda_codec *codec, + int (*callback)(struct led_classdev *, + enum led_brightness)); +int snd_hda_gen_add_micmute_led_cdev(struct hda_codec *codec, + int (*callback)(struct led_classdev *, + enum led_brightness)); #endif /* __SOUND_HDA_GENERIC_H */ --- linux-5.8.0.orig/sound/pci/hda/hda_intel.c +++ linux-5.8.0/sound/pci/hda/hda_intel.c @@ -298,8 +298,7 @@ /* PCH for HSW/BDW; with runtime PM */ /* no i915 binding for this as HSW/BDW has another controller for HDMI */ #define AZX_DCAPS_INTEL_PCH \ - (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME |\ - AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) + (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME) /* HSW HDMI */ #define AZX_DCAPS_INTEL_HASWELL \ @@ -986,7 +985,7 @@ display_power(chip, false); } -static void __azx_runtime_resume(struct azx *chip, bool from_rt) +static void __azx_runtime_resume(struct azx *chip) { struct hda_intel *hda = container_of(chip, struct hda_intel, chip); struct hdac_bus *bus = azx_bus(chip); @@ -1003,12 +1002,15 @@ azx_init_pci(chip); hda_intel_init_chip(chip, true); - if (status && from_rt) { - list_for_each_codec(codec, &chip->bus) - if (!codec->relaxed_resume && - (status & (1 << codec->addr))) - schedule_delayed_work(&codec->jackpoll_work, - codec->jackpoll_interval); + /* Avoid codec resume if runtime resume is for system suspend */ + if (!chip->pm_prepared) { + list_for_each_codec(codec, &chip->bus) { + if (codec->relaxed_resume) + continue; + + if (codec->forced_resume || (status & (1 << codec->addr))) + pm_request_resume(hda_codec_dev(codec)); + } } /* power down again for link-controlled chips */ @@ -1017,6 +1019,39 @@ } #ifdef CONFIG_PM_SLEEP +static int azx_prepare(struct device *dev) +{ + struct snd_card *card = dev_get_drvdata(dev); + struct azx *chip; + + if (!azx_is_pm_ready(card)) + return 0; + + chip = card->private_data; + chip->pm_prepared = 1; + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); + + flush_work(&azx_bus(chip)->unsol_work); + + /* HDA controller always requires different WAKEEN for runtime suspend + * and system suspend, so don't use direct-complete here. + */ + return 0; +} + +static void azx_complete(struct device *dev) +{ + struct snd_card *card = dev_get_drvdata(dev); + struct azx *chip; + + if (!azx_is_pm_ready(card)) + return; + + chip = card->private_data; + snd_power_change_state(card, SNDRV_CTL_POWER_D0); + chip->pm_prepared = 0; +} + static int azx_suspend(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); @@ -1028,15 +1063,7 @@ chip = card->private_data; bus = azx_bus(chip); - snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); - /* An ugly workaround: direct call of __azx_runtime_suspend() and - * __azx_runtime_resume() for old Intel platforms that suffer from - * spurious wakeups after S3 suspend - */ - if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) - __azx_runtime_suspend(chip); - else - pm_runtime_force_suspend(dev); + __azx_runtime_suspend(chip); if (bus->irq >= 0) { free_irq(bus->irq, chip); bus->irq = -1; @@ -1065,11 +1092,7 @@ if (azx_acquire_irq(chip, 1) < 0) return -EIO; - if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP) - __azx_runtime_resume(chip, false); - else - pm_runtime_force_resume(dev); - snd_power_change_state(card, SNDRV_CTL_POWER_D0); + __azx_runtime_resume(chip); trace_azx_resume(chip); return 0; @@ -1117,10 +1140,7 @@ chip = card->private_data; /* enable controller wake up event */ - if (snd_power_get_state(card) == SNDRV_CTL_POWER_D0) { - azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) | - STATESTS_INT_MASK); - } + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) | STATESTS_INT_MASK); __azx_runtime_suspend(chip); trace_azx_runtime_suspend(chip); @@ -1131,18 +1151,14 @@ { struct snd_card *card = dev_get_drvdata(dev); struct azx *chip; - bool from_rt = snd_power_get_state(card) == SNDRV_CTL_POWER_D0; if (!azx_is_pm_ready(card)) return 0; chip = card->private_data; - __azx_runtime_resume(chip, from_rt); + __azx_runtime_resume(chip); /* disable controller Wake Up event*/ - if (from_rt) { - azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & - ~STATESTS_INT_MASK); - } + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & ~STATESTS_INT_MASK); trace_azx_runtime_resume(chip); return 0; @@ -1176,6 +1192,8 @@ static const struct dev_pm_ops azx_pm = { SET_SYSTEM_SLEEP_PM_OPS(azx_suspend, azx_resume) #ifdef CONFIG_PM_SLEEP + .prepare = azx_prepare, + .complete = azx_complete, .freeze_noirq = azx_freeze_noirq, .thaw_noirq = azx_thaw_noirq, #endif @@ -2212,8 +2230,6 @@ SND_PCI_QUIRK(0x1849, 0x7662, "Asrock H81M-HDS", 0), /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ SND_PCI_QUIRK(0x1043, 0x8733, "Asus Prime X370-Pro", 0), - /* https://bugzilla.redhat.com/show_bug.cgi?id=1581607 */ - SND_PCI_QUIRK(0x1558, 0x3501, "Clevo W35xSS_370SS", 0), /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ SND_PCI_QUIRK(0x1558, 0x6504, "Clevo W65_67SB", 0), /* https://bugzilla.redhat.com/show_bug.cgi?id=1525104 */ @@ -2475,9 +2491,14 @@ /* CometLake-H */ { PCI_DEVICE(0x8086, 0x06C8), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + { PCI_DEVICE(0x8086, 0xf1c8), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* CometLake-S */ { PCI_DEVICE(0x8086, 0xa3f0), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* CometLake-R */ + { PCI_DEVICE(0x8086, 0xf0c8), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Icelake */ { PCI_DEVICE(0x8086, 0x34c8), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, @@ -2495,6 +2516,15 @@ /* Tigerlake-H */ { PCI_DEVICE(0x8086, 0x43c8), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* DG1 */ + { PCI_DEVICE(0x8086, 0x490d), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* Alderlake-S */ + { PCI_DEVICE(0x8086, 0x7ad0), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* Alderlake-P */ + { PCI_DEVICE(0x8086, 0x51c8), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Elkhart Lake */ { PCI_DEVICE(0x8086, 0x4b55), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, --- linux-5.8.0.orig/sound/pci/hda/hda_jack.c +++ linux-5.8.0/sound/pci/hda/hda_jack.c @@ -275,6 +275,23 @@ } EXPORT_SYMBOL_GPL(snd_hda_jack_detect_state_mst); +static struct hda_jack_callback * +find_callback_from_list(struct hda_jack_tbl *jack, + hda_jack_callback_fn func) +{ + struct hda_jack_callback *cb; + + if (!func) + return NULL; + + for (cb = jack->callback; cb; cb = cb->next) { + if (cb->func == func) + return cb; + } + + return NULL; +} + /** * snd_hda_jack_detect_enable_mst - enable the jack-detection * @codec: the HDA codec @@ -297,7 +314,10 @@ jack = snd_hda_jack_tbl_new(codec, nid, dev_id); if (!jack) return ERR_PTR(-ENOMEM); - if (func) { + + callback = find_callback_from_list(jack, func); + + if (func && !callback) { callback = kzalloc(sizeof(*callback), GFP_KERNEL); if (!callback) return ERR_PTR(-ENOMEM); --- linux-5.8.0.orig/sound/pci/hda/hda_sysfs.c +++ linux-5.8.0/sound/pci/hda/hda_sysfs.c @@ -139,7 +139,7 @@ "The codec is being used, can't reconfigure.\n"); goto error; } - err = snd_hda_codec_configure(codec); + err = device_reprobe(hda_codec_dev(codec)); if (err < 0) goto error; err = snd_card_register(codec->card); --- linux-5.8.0.orig/sound/pci/hda/hda_tegra.c +++ linux-5.8.0/sound/pci/hda/hda_tegra.c @@ -179,6 +179,10 @@ struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip); if (chip && chip->running) { + /* enable controller wake up event */ + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) | + STATESTS_INT_MASK); + azx_stop_chip(chip); azx_enter_link_reset(chip); } @@ -200,6 +204,9 @@ if (chip && chip->running) { hda_tegra_init(hda); azx_init_chip(chip, 1); + /* disable controller wake up event*/ + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & + ~STATESTS_INT_MASK); } return 0; @@ -378,7 +385,7 @@ * in powers of 2, next available ratio is 16 which can be * used as a limiting factor here. */ - if (of_device_is_compatible(np, "nvidia,tegra194-hda")) + if (of_device_is_compatible(np, "nvidia,tegra30-hda")) chip->bus.core.sdo_limit = 16; /* codec detection */ --- linux-5.8.0.orig/sound/pci/hda/patch_ca0132.c +++ linux-5.8.0/sound/pci/hda/patch_ca0132.c @@ -93,7 +93,7 @@ }; /* Strings for Input Source Enum Control */ -static const char *const in_src_str[3] = {"Rear Mic", "Line", "Front Mic" }; +static const char *const in_src_str[3] = { "Microphone", "Line In", "Front Microphone" }; #define IN_SRC_NUM_OF_INPUTS 3 enum { REAR_MIC, @@ -1065,6 +1065,7 @@ QUIRK_R3DI, QUIRK_R3D, QUIRK_AE5, + QUIRK_AE7, }; #ifdef CONFIG_PCI @@ -1146,7 +1147,7 @@ { 0x0e, 0x01c510f0 }, /* SPDIF In */ { 0x0f, 0x01017114 }, /* Port A -- Rear L/R. */ { 0x10, 0x01017012 }, /* Port D -- Center/LFE or FP Hp */ - { 0x11, 0x01a170ff }, /* Port B -- LineMicIn2 / Rear Headphone */ + { 0x11, 0x012170ff }, /* Port B -- LineMicIn2 / Rear Headphone */ { 0x12, 0x01a170f0 }, /* Port C -- LineIn1 */ { 0x13, 0x908700f0 }, /* What U Hear In*/ { 0x18, 0x50d000f0 }, /* N/A */ @@ -1182,7 +1183,10 @@ SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI), SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI), SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D), + SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D), SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5), + SND_PCI_QUIRK(0x1102, 0x0191, "Sound Blaster AE-5 Plus", QUIRK_AE5), + SND_PCI_QUIRK(0x1102, 0x0081, "Sound Blaster AE-7", QUIRK_AE7), {} }; @@ -4671,9 +4675,18 @@ tmp = FLOAT_ONE; break; case QUIRK_AE5: - ca0113_mmio_command_set(codec, 0x48, 0x28, 0x00); + ca0113_mmio_command_set(codec, 0x30, 0x28, 0x00); tmp = FLOAT_THREE; break; + case QUIRK_AE7: + ca0113_mmio_command_set(codec, 0x30, 0x28, 0x00); + tmp = FLOAT_THREE; + chipio_set_conn_rate(codec, MEM_CONNID_MICIN2, + SR_96_000); + chipio_set_conn_rate(codec, MEM_CONNID_MICOUT2, + SR_96_000); + dspio_set_uint_param(codec, 0x80, 0x01, FLOAT_ZERO); + break; default: tmp = FLOAT_ONE; break; @@ -4717,7 +4730,15 @@ r3di_gpio_mic_set(codec, R3DI_REAR_MIC); break; case QUIRK_AE5: - ca0113_mmio_command_set(codec, 0x48, 0x28, 0x00); + ca0113_mmio_command_set(codec, 0x30, 0x28, 0x00); + break; + case QUIRK_AE7: + ca0113_mmio_command_set(codec, 0x30, 0x28, 0x3f); + chipio_set_conn_rate(codec, MEM_CONNID_MICIN2, + SR_96_000); + chipio_set_conn_rate(codec, MEM_CONNID_MICOUT2, + SR_96_000); + dspio_set_uint_param(codec, 0x80, 0x01, FLOAT_ZERO); break; default: break; @@ -4728,7 +4749,10 @@ if (ca0132_quirk(spec) == QUIRK_R3DI) chipio_set_conn_rate(codec, 0x0F, SR_96_000); - tmp = FLOAT_ZERO; + if (ca0132_quirk(spec) == QUIRK_AE7) + tmp = FLOAT_THREE; + else + tmp = FLOAT_ZERO; dspio_set_uint_param(codec, 0x80, 0x00, tmp); switch (ca0132_quirk(spec)) { @@ -4756,7 +4780,7 @@ tmp = FLOAT_ONE; break; case QUIRK_AE5: - ca0113_mmio_command_set(codec, 0x48, 0x28, 0x3f); + ca0113_mmio_command_set(codec, 0x30, 0x28, 0x3f); tmp = FLOAT_THREE; break; default: @@ -5748,6 +5772,11 @@ return 0; } + if (nid == ZXR_HEADPHONE_GAIN) { + *valp = spec->zxr_gain_set; + return 0; + } + return 0; } --- linux-5.8.0.orig/sound/pci/hda/patch_conexant.c +++ linux-5.8.0/sound/pci/hda/patch_conexant.c @@ -137,14 +137,31 @@ } /* turn on/off EAPD according to Master switch (inversely!) for mute LED */ -static void cx_auto_vmaster_hook_mute_led(void *private_data, int enabled) +static int cx_auto_vmaster_mute_led(struct led_classdev *led_cdev, + enum led_brightness brightness) { - struct hda_codec *codec = private_data; + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct conexant_spec *spec = codec->spec; snd_hda_codec_write(codec, spec->mute_led_eapd, 0, AC_VERB_SET_EAPD_BTLENABLE, - enabled ? 0x00 : 0x02); + brightness ? 0x02 : 0x00); + return 0; +} + +static void cxt_init_gpio_led(struct hda_codec *codec) +{ + struct conexant_spec *spec = codec->spec; + unsigned int mask = spec->gpio_mute_led_mask | spec->gpio_mic_led_mask; + + if (mask) { + snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_MASK, + mask); + snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DIRECTION, + mask); + snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, + spec->gpio_led); + } } static int cx_auto_init(struct hda_codec *codec) @@ -154,6 +171,7 @@ if (!spec->dynamic_eapd) cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, true); + cxt_init_gpio_led(codec); snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT); return 0; @@ -213,6 +231,7 @@ CXT_FIXUP_HP_SPECTRE, CXT_FIXUP_HP_GATE_MIC, CXT_FIXUP_MUTE_LED_GPIO, + CXT_FIXUP_HP_ZBOOK_MUTE_LED, CXT_FIXUP_HEADSET_MIC, CXT_FIXUP_HP_MIC_NO_PRESENCE, }; @@ -566,7 +585,7 @@ if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->mute_led_eapd = 0x1b; spec->dynamic_eapd = 1; - spec->gen.vmaster_mute.hook = cx_auto_vmaster_hook_mute_led; + snd_hda_gen_add_mute_led_cdev(codec, cx_auto_vmaster_mute_led); } } @@ -631,48 +650,57 @@ } /* turn on/off mute LED via GPIO per vmaster hook */ -static void cxt_fixup_gpio_mute_hook(void *private_data, int enabled) +static int cxt_gpio_mute_update(struct led_classdev *led_cdev, + enum led_brightness brightness) { - struct hda_codec *codec = private_data; + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct conexant_spec *spec = codec->spec; - /* muted -> LED on */ - cxt_update_gpio_led(codec, spec->gpio_mute_led_mask, !enabled); + + cxt_update_gpio_led(codec, spec->gpio_mute_led_mask, brightness); + return 0; } /* turn on/off mic-mute LED via GPIO per capture hook */ -static void cxt_gpio_micmute_update(struct hda_codec *codec) +static int cxt_gpio_micmute_update(struct led_classdev *led_cdev, + enum led_brightness brightness) { + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct conexant_spec *spec = codec->spec; - cxt_update_gpio_led(codec, spec->gpio_mic_led_mask, - spec->gen.micmute_led.led_value); + cxt_update_gpio_led(codec, spec->gpio_mic_led_mask, brightness); + return 0; } - -static void cxt_fixup_mute_led_gpio(struct hda_codec *codec, - const struct hda_fixup *fix, int action) +static void cxt_setup_mute_led(struct hda_codec *codec, + unsigned int mute, unsigned int mic_mute) { struct conexant_spec *spec = codec->spec; - static const struct hda_verb gpio_init[] = { - { 0x01, AC_VERB_SET_GPIO_MASK, 0x03 }, - { 0x01, AC_VERB_SET_GPIO_DIRECTION, 0x03 }, - {} - }; - if (action == HDA_FIXUP_ACT_PRE_PROBE) { - spec->gen.vmaster_mute.hook = cxt_fixup_gpio_mute_hook; - spec->gpio_led = 0; - spec->mute_led_polarity = 0; - spec->gpio_mute_led_mask = 0x01; - spec->gpio_mic_led_mask = 0x02; - snd_hda_gen_add_micmute_led(codec, cxt_gpio_micmute_update); + spec->gpio_led = 0; + spec->mute_led_polarity = 0; + if (mute) { + snd_hda_gen_add_mute_led_cdev(codec, cxt_gpio_mute_update); + spec->gpio_mute_led_mask = mute; + } + if (mic_mute) { + snd_hda_gen_add_micmute_led_cdev(codec, cxt_gpio_micmute_update); + spec->gpio_mic_led_mask = mic_mute; } - snd_hda_add_verbs(codec, gpio_init); - if (spec->gpio_led) - snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, - spec->gpio_led); } +static void cxt_fixup_mute_led_gpio(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + cxt_setup_mute_led(codec, 0x01, 0x02); +} + +static void cxt_fixup_hp_zbook_mute_led(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + cxt_setup_mute_led(codec, 0x10, 0x20); +} /* ThinkPad X200 & co with cxt5051 */ static const struct hda_pintbl cxt_pincfg_lenovo_x200[] = { @@ -833,6 +861,10 @@ .type = HDA_FIXUP_FUNC, .v.func = cxt_fixup_mute_led_gpio, }, + [CXT_FIXUP_HP_ZBOOK_MUTE_LED] = { + .type = HDA_FIXUP_FUNC, + .v.func = cxt_fixup_hp_zbook_mute_led, + }, [CXT_FIXUP_HEADSET_MIC] = { .type = HDA_FIXUP_FUNC, .v.func = cxt_fixup_headset_mic, @@ -911,6 +943,7 @@ SND_PCI_QUIRK(0x103c, 0x8299, "HP 800 G3 SFF", CXT_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x829a, "HP 800 G3 DM", CXT_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x8402, "HP ProBook 645 G4", CXT_FIXUP_MUTE_LED_GPIO), + SND_PCI_QUIRK(0x103c, 0x8427, "HP ZBook Studio G5", CXT_FIXUP_HP_ZBOOK_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x8455, "HP Z2 G4", CXT_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x8456, "HP Z2 G4 SFF", CXT_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x8457, "HP Z2 G4 mini", CXT_FIXUP_HP_MIC_NO_PRESENCE), @@ -950,6 +983,7 @@ { .id = CXT_FIXUP_MUTE_LED_EAPD, .name = "mute-led-eapd" }, { .id = CXT_FIXUP_HP_DOCK, .name = "hp-dock" }, { .id = CXT_FIXUP_MUTE_LED_GPIO, .name = "mute-led-gpio" }, + { .id = CXT_FIXUP_HP_ZBOOK_MUTE_LED, .name = "hp-zbook-mute-led" }, { .id = CXT_FIXUP_HP_MIC_NO_PRESENCE, .name = "hp-mic-fix" }, {} }; @@ -988,8 +1022,6 @@ cx_auto_parse_eapd(codec); spec->gen.own_eapd_ctl = 1; - if (spec->dynamic_eapd) - spec->gen.vmaster_mute.hook = cx_auto_vmaster_hook; switch (codec->core.vendor_id) { case 0x14f15045: @@ -1022,17 +1054,8 @@ break; } - /* Show mute-led control only on HP laptops - * This is a sort of white-list: on HP laptops, EAPD corresponds - * only to the mute-LED without actualy amp function. Meanwhile, - * others may use EAPD really as an amp switch, so it might be - * not good to expose it blindly. - */ - switch (codec->core.subsystem_id >> 16) { - case 0x103c: - spec->gen.vmaster_mute_enum = 1; - break; - } + if (!spec->gen.vmaster_mute.hook && spec->dynamic_eapd) + spec->gen.vmaster_mute.hook = cx_auto_vmaster_hook; snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); @@ -1075,6 +1098,7 @@ static const struct hda_device_id snd_hda_id_conexant[] = { HDA_CODEC_ENTRY(0x14f11f86, "CX8070", patch_conexant_auto), HDA_CODEC_ENTRY(0x14f12008, "CX8200", patch_conexant_auto), + HDA_CODEC_ENTRY(0x14f120d0, "CX11970", patch_conexant_auto), HDA_CODEC_ENTRY(0x14f15045, "CX20549 (Venice)", patch_conexant_auto), HDA_CODEC_ENTRY(0x14f15047, "CX20551 (Waikiki)", patch_conexant_auto), HDA_CODEC_ENTRY(0x14f15051, "CX20561 (Hermosa)", patch_conexant_auto), --- linux-5.8.0.orig/sound/pci/hda/patch_hdmi.c +++ linux-5.8.0/sound/pci/hda/patch_hdmi.c @@ -151,6 +151,7 @@ bool dyn_pin_out; bool dyn_pcm_assign; + bool dyn_pcm_no_legacy; bool intel_hsw_fixup; /* apply Intel platform-specific fixups */ /* * Non-generic VIA/NVIDIA specific @@ -160,6 +161,7 @@ bool use_acomp_notifier; /* use eld_notify callback for hotplug */ bool acomp_registered; /* audio component registered in this driver */ + bool force_connect; /* force connectivity */ struct drm_audio_component_audio_ops drm_audio_ops; int (*port2pin)(struct hda_codec *, int); /* reverse port/pin mapping */ @@ -1333,6 +1335,12 @@ { int i; + /* on the new machines, try to assign the pcm slot dynamically, + * not use the preferred fixed map (legacy way) anymore. + */ + if (spec->dyn_pcm_no_legacy) + goto last_try; + /* * generic_hdmi_build_pcms() may allocate extra PCMs on some * platforms (with maximum of 'num_nids + dev_num - 1') @@ -1362,6 +1370,7 @@ return i; } + last_try: /* the last try; check the empty slots in pins */ for (i = 0; i < spec->num_nids; i++) { if (!test_bit(i, &spec->pcm_bitmap)) @@ -1701,7 +1710,8 @@ * all device entries on the same pin */ config = snd_hda_codec_get_pincfg(codec, pin_nid); - if (get_defcfg_connect(config) == AC_JACK_PORT_NONE) + if (get_defcfg_connect(config) == AC_JACK_PORT_NONE && + !spec->force_connect) return 0; /* @@ -1803,11 +1813,19 @@ return 0; } +static const struct snd_pci_quirk force_connect_list[] = { + SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1), + SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1), + {} +}; + static int hdmi_parse_codec(struct hda_codec *codec) { + struct hdmi_spec *spec = codec->spec; hda_nid_t start_nid; unsigned int caps; int i, nodes; + const struct snd_pci_quirk *q; nodes = snd_hda_get_sub_nodes(codec, codec->core.afg, &start_nid); if (!start_nid || nodes < 0) { @@ -1815,6 +1833,11 @@ return -EINVAL; } + q = snd_pci_quirk_lookup(codec->bus->pci, force_connect_list); + + if (q && q->value) + spec->force_connect = true; + /* * hdmi_add_pin() assumes total amount of converters to * be known, so first discover all converters @@ -1974,22 +1997,24 @@ int pinctl; int err = 0; + mutex_lock(&spec->pcm_lock); if (hinfo->nid) { pcm_idx = hinfo_to_pcm_index(codec, hinfo); - if (snd_BUG_ON(pcm_idx < 0)) - return -EINVAL; + if (snd_BUG_ON(pcm_idx < 0)) { + err = -EINVAL; + goto unlock; + } cvt_idx = cvt_nid_to_cvt_index(codec, hinfo->nid); - if (snd_BUG_ON(cvt_idx < 0)) - return -EINVAL; + if (snd_BUG_ON(cvt_idx < 0)) { + err = -EINVAL; + goto unlock; + } per_cvt = get_cvt(spec, cvt_idx); - - snd_BUG_ON(!per_cvt->assigned); per_cvt->assigned = 0; hinfo->nid = 0; azx_stream(get_azx_dev(substream))->stripe = 0; - mutex_lock(&spec->pcm_lock); snd_hda_spdif_ctls_unassign(codec, pcm_idx); clear_bit(pcm_idx, &spec->pcm_in_use); pin_idx = hinfo_to_pin_index(codec, hinfo); @@ -2019,10 +2044,11 @@ per_pin->setup = false; per_pin->channels = 0; mutex_unlock(&per_pin->lock); - unlock: - mutex_unlock(&spec->pcm_lock); } +unlock: + mutex_unlock(&spec->pcm_lock); + return err; } @@ -2326,6 +2352,18 @@ } #ifdef CONFIG_PM +static int generic_hdmi_suspend(struct hda_codec *codec) +{ + struct hdmi_spec *spec = codec->spec; + int pin_idx; + + for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { + struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); + cancel_delayed_work_sync(&per_pin->work); + } + return 0; +} + static int generic_hdmi_resume(struct hda_codec *codec) { struct hdmi_spec *spec = codec->spec; @@ -2349,6 +2387,7 @@ .build_controls = generic_hdmi_build_controls, .unsol_event = hdmi_unsol_event, #ifdef CONFIG_PM + .suspend = generic_hdmi_suspend, .resume = generic_hdmi_resume, #endif }; @@ -2722,6 +2761,7 @@ hda_nid_t cvt_nid) { if (per_pin) { + haswell_verify_D0(codec, per_pin->cvt_nid, per_pin->pin_nid); snd_hda_set_dev_select(codec, per_pin->pin_nid, per_pin->dev_id); intel_verify_pin_cvt_connect(codec, per_pin); @@ -2833,8 +2873,16 @@ * the index indicate the port number. */ static const int map[] = {0x4, 0x6, 0x8, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}; + int ret; - return intel_hsw_common_init(codec, 0x02, map, ARRAY_SIZE(map)); + ret = intel_hsw_common_init(codec, 0x02, map, ARRAY_SIZE(map)); + if (!ret) { + struct hdmi_spec *spec = codec->spec; + + spec->dyn_pcm_no_legacy = true; + } + + return ret; } /* Intel Baytrail and Braswell; with eld notifier */ @@ -3655,6 +3703,7 @@ static int patch_tegra_hdmi(struct hda_codec *codec) { + struct hdmi_spec *spec; int err; err = patch_generic_hdmi(codec); @@ -3662,6 +3711,10 @@ return err; codec->patch_ops.build_pcms = tegra_hdmi_build_pcms; + spec = codec->spec; + spec->chmap.ops.chmap_cea_alloc_validate_get_type = + nvhdmi_chmap_cea_alloc_validate_get_type; + spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; return 0; } @@ -4184,6 +4237,10 @@ HDA_CODEC_ENTRY(0x8086280d, "Geminilake HDMI", patch_i915_glk_hdmi), HDA_CODEC_ENTRY(0x8086280f, "Icelake HDMI", patch_i915_icl_hdmi), HDA_CODEC_ENTRY(0x80862812, "Tigerlake HDMI", patch_i915_tgl_hdmi), +HDA_CODEC_ENTRY(0x80862814, "DG1 HDMI", patch_i915_tgl_hdmi), +HDA_CODEC_ENTRY(0x80862815, "Alderlake HDMI", patch_i915_tgl_hdmi), +HDA_CODEC_ENTRY(0x8086281c, "Alderlake-P HDMI", patch_i915_tgl_hdmi), +HDA_CODEC_ENTRY(0x80862816, "Rocketlake HDMI", patch_i915_tgl_hdmi), HDA_CODEC_ENTRY(0x8086281a, "Jasperlake HDMI", patch_i915_icl_hdmi), HDA_CODEC_ENTRY(0x8086281b, "Elkhartlake HDMI", patch_i915_icl_hdmi), HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi), --- linux-5.8.0.orig/sound/pci/hda/patch_realtek.c +++ linux-5.8.0/sound/pci/hda/patch_realtek.c @@ -67,6 +67,13 @@ unsigned int fixup:1; /* Means that this sku is set by driver, not read from hw */ }; +struct alc_coef_led { + unsigned int idx; + unsigned int mask; + unsigned int on; + unsigned int off; +}; + struct alc_spec { struct hda_gen_spec gen; /* must be at head */ @@ -80,7 +87,7 @@ unsigned int gpio_data; bool gpio_write_delay; /* add a delay before writing gpio_data */ - /* mute LED for HP laptops, see alc269_fixup_mic_mute_hook() */ + /* mute LED for HP laptops, see vref_mute_led_set() */ int mute_led_polarity; int micmute_led_polarity; hda_nid_t mute_led_nid; @@ -88,14 +95,8 @@ unsigned int gpio_mute_led_mask; unsigned int gpio_mic_led_mask; - unsigned int mute_led_coef_idx; - unsigned int mute_led_coefbit_mask; - unsigned int mute_led_coefbit_on; - unsigned int mute_led_coefbit_off; - unsigned int mic_led_coef_idx; - unsigned int mic_led_coefbit_mask; - unsigned int mic_led_coefbit_on; - unsigned int mic_led_coefbit_off; + struct alc_coef_led mute_led_coef; + struct alc_coef_led mic_led_coef; hda_nid_t headset_mic_pin; hda_nid_t headphone_mic_pin; @@ -118,6 +119,7 @@ unsigned int no_shutup_pins:1; unsigned int ultra_low_power:1; unsigned int has_hs_key:1; + unsigned int no_internal_mic_pin:1; /* for PLL fix */ hda_nid_t pll_nid; @@ -287,6 +289,13 @@ alc_fixup_gpio(codec, action, 0x04); } +static void alc_fixup_micmute_led(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PROBE) + snd_hda_gen_add_micmute_led_cdev(codec, NULL); +} + /* * Fix hardware PLL issue * On some codecs, the analog PLL gating control must be off while @@ -437,6 +446,7 @@ alc_update_coef_idx(codec, 0x7, 1<<5, 0); break; case 0x10ec0892: + case 0x10ec0897: alc_update_coef_idx(codec, 0x7, 1<<5, 0); break; case 0x10ec0899: @@ -1142,6 +1152,7 @@ codec->single_adc_amp = 1; /* FIXME: do we need this for all Realtek codec models? */ codec->spdif_status_reset = 1; + codec->forced_resume = 1; codec->patch_ops = alc_patch_ops; err = alc_codec_rename_from_preset(codec); @@ -1894,6 +1905,7 @@ ALC889_FIXUP_FRONT_HP_NO_PRESENCE, ALC889_FIXUP_VAIO_TT, ALC888_FIXUP_EEE1601, + ALC886_FIXUP_EAPD, ALC882_FIXUP_EAPD, ALC883_FIXUP_EAPD, ALC883_FIXUP_ACER_EAPD, @@ -1921,6 +1933,8 @@ ALC1220_FIXUP_CLEVO_P950, ALC1220_FIXUP_CLEVO_PB51ED, ALC1220_FIXUP_CLEVO_PB51ED_PINS, + ALC887_FIXUP_ASUS_AUDIO, + ALC887_FIXUP_ASUS_HMIC, }; static void alc889_fixup_coef(struct hda_codec *codec, @@ -2133,6 +2147,31 @@ alc_fixup_headset_mode_no_hp_mic(codec, fix, action); } +static void alc887_asus_hp_automute_hook(struct hda_codec *codec, + struct hda_jack_callback *jack) +{ + struct alc_spec *spec = codec->spec; + unsigned int vref; + + snd_hda_gen_hp_automute(codec, jack); + + if (spec->gen.hp_jack_present) + vref = AC_PINCTL_VREF_80; + else + vref = AC_PINCTL_VREF_HIZ; + snd_hda_set_pin_ctl(codec, 0x19, PIN_HP | vref); +} + +static void alc887_fixup_asus_jack(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + if (action != HDA_FIXUP_ACT_PROBE) + return; + snd_hda_set_pin_ctl_cache(codec, 0x1b, PIN_HP); + spec->gen.hp_automute_hook = alc887_asus_hp_automute_hook; +} + static const struct hda_fixup alc882_fixups[] = { [ALC882_FIXUP_ABIT_AW9D_MAX] = { .type = HDA_FIXUP_PINS, @@ -2200,6 +2239,15 @@ { } } }, + [ALC886_FIXUP_EAPD] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* change to EAPD mode */ + { 0x20, AC_VERB_SET_COEF_INDEX, 0x07 }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x0068 }, + { } + } + }, [ALC882_FIXUP_EAPD] = { .type = HDA_FIXUP_VERBS, .v.verbs = (const struct hda_verb[]) { @@ -2390,6 +2438,20 @@ .chained = true, .chain_id = ALC1220_FIXUP_CLEVO_PB51ED, }, + [ALC887_FIXUP_ASUS_AUDIO] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x15, 0x02a14150 }, /* use as headset mic, without its own jack detect */ + { 0x19, 0x22219420 }, + {} + }, + }, + [ALC887_FIXUP_ASUS_HMIC] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc887_fixup_asus_jack, + .chained = true, + .chain_id = ALC887_FIXUP_ASUS_AUDIO, + }, }; static const struct snd_pci_quirk alc882_fixup_tbl[] = { @@ -2423,6 +2485,7 @@ SND_PCI_QUIRK(0x1043, 0x13c2, "Asus A7M", ALC882_FIXUP_EAPD), SND_PCI_QUIRK(0x1043, 0x1873, "ASUS W90V", ALC882_FIXUP_ASUS_W90V), SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC), + SND_PCI_QUIRK(0x1043, 0x2390, "Asus D700SA", ALC887_FIXUP_ASUS_HMIC), SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601), SND_PCI_QUIRK(0x1043, 0x84bc, "ASUS ET2700", ALC887_FIXUP_ASUS_BASS), SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3), @@ -2457,27 +2520,40 @@ SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_MBA11_VREF), SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD), + SND_PCI_QUIRK(0x13fe, 0x1009, "Advantech MIT-W101", ALC886_FIXUP_EAPD), SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte EP45-DS3/Z87X-UD3H", ALC889_FIXUP_FRONT_HP_NO_PRESENCE), SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS), SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1458, 0xa0ce, "Gigabyte X570 Aorus Xtreme", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x11f7, "MSI-GE63", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x1228, "MSI-GP63", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1462, 0x1229, "MSI-GP73", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x1275, "MSI-GL63", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x1293, "MSI-GP65", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD), + SND_PCI_QUIRK(0x1462, 0xcc34, "MSI Godlike X570", ALC1220_FIXUP_GB_DUAL_CODECS), SND_PCI_QUIRK(0x1462, 0xda57, "MSI Z270-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS), SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3), SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX), SND_PCI_QUIRK(0x1558, 0x9501, "Clevo P950HR", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x9506, "Clevo P955HQ", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x950A, "Clevo P955H[PR]", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x95e1, "Clevo P95xER", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x95e2, "Clevo P950ER", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x95e3, "Clevo P955[ER]T", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x95e4, "Clevo P955ER", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x95e5, "Clevo P955EE6", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x95e6, "Clevo P950R[CDF]", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x96e1, "Clevo P960[ER][CDFN]-K", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x97e1, "Clevo P970[ER][CDFN]", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x97e2, "Clevo P970RC-M", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0x50d3, "Clevo PC50[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x65d1, "Clevo PB51[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), + SND_PCI_QUIRK(0x1558, 0x65d2, "Clevo PB51R[CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), + SND_PCI_QUIRK(0x1558, 0x65e1, "Clevo PB51[ED][DF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x67d1, "Clevo PB71[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), - SND_PCI_QUIRK(0x1558, 0x50d3, "Clevo PC50[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), + SND_PCI_QUIRK(0x1558, 0x67e1, "Clevo PB71[DE][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x70d1, "Clevo PC70[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x7714, "Clevo X170", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), @@ -3041,6 +3117,7 @@ case 0x10ec0215: case 0x10ec0225: case 0x10ec0285: + case 0x10ec0287: case 0x10ec0295: case 0x10ec0289: case 0x10ec0299: @@ -3067,6 +3144,7 @@ case 0x10ec0215: case 0x10ec0225: case 0x10ec0285: + case 0x10ec0287: case 0x10ec0295: case 0x10ec0289: case 0x10ec0299: @@ -3419,7 +3497,11 @@ /* 3k pull low control for Headset jack. */ /* NOTE: call this before clearing the pin, otherwise codec stalls */ - alc_update_coef_idx(codec, 0x46, 0, 3 << 12); + /* If disable 3k pulldown control for alc257, the Mic detection will not work correctly + * when booting with headset plugged. So skip setting it for the codec alc257 + */ + if (codec->core.vendor_id != 0x10ec0257) + alc_update_coef_idx(codec, 0x46, 0, 3 << 12); if (!spec->no_shutup_pins) snd_hda_codec_write(codec, hp_pin, 0, @@ -3982,25 +4064,34 @@ } } +static void alc_update_vref_led(struct hda_codec *codec, hda_nid_t pin, + bool polarity, bool on) +{ + unsigned int pinval; + + if (!pin) + return; + if (polarity) + on = !on; + pinval = snd_hda_codec_get_pin_target(codec, pin); + pinval &= ~AC_PINCTL_VREFEN; + pinval |= on ? AC_PINCTL_VREF_80 : AC_PINCTL_VREF_HIZ; + /* temporarily power up/down for setting VREF */ + snd_hda_power_up_pm(codec); + snd_hda_set_pin_ctl_cache(codec, pin, pinval); + snd_hda_power_down_pm(codec); +} /* update mute-LED according to the speaker mute state via mic VREF pin */ -static void alc269_fixup_mic_mute_hook(void *private_data, int enabled) +static int vref_mute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) { - struct hda_codec *codec = private_data; + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct alc_spec *spec = codec->spec; - unsigned int pinval; - if (spec->mute_led_polarity) - enabled = !enabled; - pinval = snd_hda_codec_get_pin_target(codec, spec->mute_led_nid); - pinval &= ~AC_PINCTL_VREFEN; - pinval |= enabled ? AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80; - if (spec->mute_led_nid) { - /* temporarily power up/down for setting VREF */ - snd_hda_power_up_pm(codec); - snd_hda_set_pin_ctl_cache(codec, spec->mute_led_nid, pinval); - snd_hda_power_down_pm(codec); - } + alc_update_vref_led(codec, spec->mute_led_nid, + spec->mute_led_polarity, brightness); + return 0; } /* Make sure the led works even in runtime suspend */ @@ -4038,8 +4129,7 @@ break; spec->mute_led_polarity = pol; spec->mute_led_nid = pin - 0x0a + 0x18; - spec->gen.vmaster_mute.hook = alc269_fixup_mic_mute_hook; - spec->gen.vmaster_mute_enum = 1; + snd_hda_gen_add_mute_led_cdev(codec, vref_mute_led_set); codec->power_filter = led_power_filter; codec_dbg(codec, "Detected mute LED for %x:%d\n", spec->mute_led_nid, @@ -4057,8 +4147,7 @@ if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->mute_led_polarity = 0; spec->mute_led_nid = pin; - spec->gen.vmaster_mute.hook = alc269_fixup_mic_mute_hook; - spec->gen.vmaster_mute_enum = 1; + snd_hda_gen_add_mute_led_cdev(codec, vref_mute_led_set); codec->power_filter = led_power_filter; } } @@ -4091,26 +4180,18 @@ } /* turn on/off mute LED via GPIO per vmaster hook */ -static void alc_fixup_gpio_mute_hook(void *private_data, int enabled) +static int gpio_mute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) { - struct hda_codec *codec = private_data; + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct alc_spec *spec = codec->spec; alc_update_gpio_led(codec, spec->gpio_mute_led_mask, - spec->mute_led_polarity, enabled); + spec->mute_led_polarity, !brightness); + return 0; } /* turn on/off mic-mute LED via GPIO per capture hook */ -static void alc_gpio_micmute_update(struct hda_codec *codec) -{ - struct alc_spec *spec = codec->spec; - - alc_update_gpio_led(codec, spec->gpio_mic_led_mask, - spec->micmute_led_polarity, - spec->gen.micmute_led.led_value); -} - -#if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) static int micmute_led_set(struct led_classdev *led_cdev, enum led_brightness brightness) { @@ -4118,18 +4199,10 @@ struct alc_spec *spec = codec->spec; alc_update_gpio_led(codec, spec->gpio_mic_led_mask, - spec->micmute_led_polarity, !!brightness); + spec->micmute_led_polarity, !brightness); return 0; } -static struct led_classdev micmute_led_cdev = { - .name = "hda::micmute", - .max_brightness = 1, - .brightness_set_blocking = micmute_led_set, - .default_trigger = "audio-micmute", -}; -#endif - /* setup mute and mic-mute GPIO bits, add hooks appropriately */ static void alc_fixup_hp_gpio_led(struct hda_codec *codec, int action, @@ -4137,9 +4210,6 @@ unsigned int micmute_mask) { struct alc_spec *spec = codec->spec; -#if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) - int err; -#endif alc_fixup_gpio(codec, action, mute_mask | micmute_mask); @@ -4147,21 +4217,20 @@ return; if (mute_mask) { spec->gpio_mute_led_mask = mute_mask; - spec->gen.vmaster_mute.hook = alc_fixup_gpio_mute_hook; + snd_hda_gen_add_mute_led_cdev(codec, gpio_mute_led_set); } if (micmute_mask) { spec->gpio_mic_led_mask = micmute_mask; - snd_hda_gen_add_micmute_led(codec, alc_gpio_micmute_update); - -#if IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) - micmute_led_cdev.brightness = ledtrig_audio_get(LED_AUDIO_MICMUTE); - err = devm_led_classdev_register(&codec->core.dev, &micmute_led_cdev); - if (err) - codec_warn(codec, "failed to register micmute LED\n"); -#endif + snd_hda_gen_add_micmute_led_cdev(codec, micmute_led_set); } } +static void alc236_fixup_hp_gpio_led(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + alc_fixup_hp_gpio_led(codec, action, 0x02, 0x01); +} + static void alc269_fixup_hp_gpio_led(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -4171,10 +4240,6 @@ static void alc285_fixup_hp_gpio_led(struct hda_codec *codec, const struct hda_fixup *fix, int action) { - struct alc_spec *spec = codec->spec; - - spec->micmute_led_polarity = 1; - alc_fixup_hp_gpio_led(codec, action, 0x04, 0x01); } @@ -4184,21 +4249,22 @@ alc_fixup_hp_gpio_led(codec, action, 0x02, 0x20); } -/* turn on/off mic-mute LED per capture hook */ -static void alc_cap_micmute_update(struct hda_codec *codec) +static void alc287_fixup_hp_gpio_led(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + alc_fixup_hp_gpio_led(codec, action, 0x10, 0); +} + +/* turn on/off mic-mute LED per capture hook via VREF change */ +static int vref_micmute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) { + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct alc_spec *spec = codec->spec; - unsigned int pinval; - if (!spec->cap_mute_led_nid) - return; - pinval = snd_hda_codec_get_pin_target(codec, spec->cap_mute_led_nid); - pinval &= ~AC_PINCTL_VREFEN; - if (spec->gen.micmute_led.led_value) - pinval |= AC_PINCTL_VREF_80; - else - pinval |= AC_PINCTL_VREF_HIZ; - snd_hda_set_pin_ctl_cache(codec, spec->cap_mute_led_nid, pinval); + alc_update_vref_led(codec, spec->cap_mute_led_nid, + spec->micmute_led_polarity, brightness); + return 0; } static void alc269_fixup_hp_gpio_mic1_led(struct hda_codec *codec, @@ -4214,7 +4280,7 @@ spec->gpio_mask |= 0x10; spec->gpio_dir |= 0x10; spec->cap_mute_led_nid = 0x18; - snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update); + snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set); codec->power_filter = led_power_filter; } } @@ -4227,25 +4293,54 @@ alc_fixup_hp_gpio_led(codec, action, 0x08, 0); if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->cap_mute_led_nid = 0x18; - snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update); + snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set); codec->power_filter = led_power_filter; } } -/* update mute-LED according to the speaker mute state via COEF bit */ -static void alc_fixup_mute_led_coefbit_hook(void *private_data, int enabled) +/* HP Spectre x360 14 model needs a unique workaround for enabling the amp; + * it needs to toggle the GPIO0 once on and off at each time (bko#210633) + */ +static void alc245_fixup_hp_x360_amp(struct hda_codec *codec, + const struct hda_fixup *fix, int action) { - struct hda_codec *codec = private_data; struct alc_spec *spec = codec->spec; - if (spec->mute_led_polarity) - enabled = !enabled; + switch (action) { + case HDA_FIXUP_ACT_PRE_PROBE: + spec->gpio_mask |= 0x01; + spec->gpio_dir |= 0x01; + break; + case HDA_FIXUP_ACT_INIT: + /* need to toggle GPIO to enable the amp */ + alc_update_gpio_data(codec, 0x01, true); + msleep(100); + alc_update_gpio_data(codec, 0x01, false); + break; + } +} +static void alc_update_coef_led(struct hda_codec *codec, + struct alc_coef_led *led, + bool polarity, bool on) +{ + if (polarity) + on = !on; /* temporarily power up/down for setting COEF bit */ - enabled ? alc_update_coef_idx(codec, spec->mute_led_coef_idx, - spec->mute_led_coefbit_mask, spec->mute_led_coefbit_off) : - alc_update_coef_idx(codec, spec->mute_led_coef_idx, - spec->mute_led_coefbit_mask, spec->mute_led_coefbit_on); + alc_update_coef_idx(codec, led->idx, led->mask, + on ? led->on : led->off); +} + +/* update mute-LED according to the speaker mute state via COEF bit */ +static int coef_mute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) +{ + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); + struct alc_spec *spec = codec->spec; + + alc_update_coef_led(codec, &spec->mute_led_coef, + spec->mute_led_polarity, brightness); + return 0; } static void alc285_fixup_hp_mute_led_coefbit(struct hda_codec *codec, @@ -4256,12 +4351,11 @@ if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->mute_led_polarity = 0; - spec->mute_led_coef_idx = 0x0b; - spec->mute_led_coefbit_mask = 1<<3; - spec->mute_led_coefbit_on = 1<<3; - spec->mute_led_coefbit_off = 0; - spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook; - spec->gen.vmaster_mute_enum = 1; + spec->mute_led_coef.idx = 0x0b; + spec->mute_led_coef.mask = 1 << 3; + spec->mute_led_coef.on = 1 << 3; + spec->mute_led_coef.off = 0; + snd_hda_gen_add_mute_led_cdev(codec, coef_mute_led_set); } } @@ -4273,26 +4367,24 @@ if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->mute_led_polarity = 0; - spec->mute_led_coef_idx = 0x34; - spec->mute_led_coefbit_mask = 1<<5; - spec->mute_led_coefbit_on = 0; - spec->mute_led_coefbit_off = 1<<5; - spec->gen.vmaster_mute.hook = alc_fixup_mute_led_coefbit_hook; - spec->gen.vmaster_mute_enum = 1; + spec->mute_led_coef.idx = 0x34; + spec->mute_led_coef.mask = 1 << 5; + spec->mute_led_coef.on = 0; + spec->mute_led_coef.off = 1 << 5; + snd_hda_gen_add_mute_led_cdev(codec, coef_mute_led_set); } } /* turn on/off mic-mute LED per capture hook by coef bit */ -static void alc_hp_cap_micmute_update(struct hda_codec *codec) +static int coef_micmute_led_set(struct led_classdev *led_cdev, + enum led_brightness brightness) { + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct alc_spec *spec = codec->spec; - if (spec->gen.micmute_led.led_value) - alc_update_coef_idx(codec, spec->mic_led_coef_idx, - spec->mic_led_coefbit_mask, spec->mic_led_coefbit_on); - else - alc_update_coef_idx(codec, spec->mic_led_coef_idx, - spec->mic_led_coefbit_mask, spec->mic_led_coefbit_off); + alc_update_coef_led(codec, &spec->mic_led_coef, + spec->micmute_led_polarity, brightness); + return 0; } static void alc285_fixup_hp_coef_micmute_led(struct hda_codec *codec, @@ -4301,11 +4393,11 @@ struct alc_spec *spec = codec->spec; if (action == HDA_FIXUP_ACT_PRE_PROBE) { - spec->mic_led_coef_idx = 0x19; - spec->mic_led_coefbit_mask = 1<<13; - spec->mic_led_coefbit_on = 1<<13; - spec->mic_led_coefbit_off = 0; - snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update); + spec->mic_led_coef.idx = 0x19; + spec->mic_led_coef.mask = 1 << 13; + spec->mic_led_coef.on = 1 << 13; + spec->mic_led_coef.off = 0; + snd_hda_gen_add_micmute_led_cdev(codec, coef_micmute_led_set); } } @@ -4315,11 +4407,11 @@ struct alc_spec *spec = codec->spec; if (action == HDA_FIXUP_ACT_PRE_PROBE) { - spec->mic_led_coef_idx = 0x35; - spec->mic_led_coefbit_mask = 3<<2; - spec->mic_led_coefbit_on = 2<<2; - spec->mic_led_coefbit_off = 1<<2; - snd_hda_gen_add_micmute_led(codec, alc_hp_cap_micmute_update); + spec->mic_led_coef.idx = 0x35; + spec->mic_led_coef.mask = 3 << 2; + spec->mic_led_coef.on = 2 << 2; + spec->mic_led_coef.off = 1 << 2; + snd_hda_gen_add_micmute_led_cdev(codec, coef_micmute_led_set); } } @@ -4459,7 +4551,7 @@ alc269_fixup_hp_mute_led_micx(codec, fix, action, 0x1a); if (action == HDA_FIXUP_ACT_PRE_PROBE) { spec->cap_mute_led_nid = 0x18; - snd_hda_gen_add_micmute_led(codec, alc_cap_micmute_update); + snd_hda_gen_add_micmute_led_cdev(codec, vref_micmute_led_set); } } @@ -4476,6 +4568,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec) { + struct alc_spec *spec = codec->spec; static const struct coef_fw coef0255[] = { WRITE_COEF(0x1b, 0x0c0b), /* LDO and MISC control */ WRITE_COEF(0x45, 0xd089), /* UAJ function set to menual mode */ @@ -4550,6 +4643,11 @@ {} }; + if (spec->no_internal_mic_pin) { + alc_update_coef_idx(codec, 0x45, 0xf<<12 | 1<<10, 5<<12); + return; + } + switch (codec->core.vendor_id) { case 0x10ec0255: alc_process_coef_fw(codec, coef0255); @@ -5116,6 +5214,11 @@ {} }; + if (spec->no_internal_mic_pin) { + alc_update_coef_idx(codec, 0x45, 0xf<<12 | 1<<10, 5<<12); + return; + } + switch (codec->core.vendor_id) { case 0x10ec0255: alc_process_coef_fw(codec, coef0255); @@ -5153,7 +5256,7 @@ case 0x10ec0274: case 0x10ec0294: alc_process_coef_fw(codec, coef0274); - msleep(80); + msleep(850); val = alc_read_coef_idx(codec, 0x46); is_ctia = (val & 0x00f0) == 0x00f0; break; @@ -5337,6 +5440,7 @@ struct hda_jack_callback *jack) { snd_hda_gen_hp_automute(codec, jack); + alc_update_headset_mode(codec); } static void alc_probe_headset_mode(struct hda_codec *codec) @@ -5883,6 +5987,39 @@ } } +/* Quirk for Thinkpad X1 7th and 8th Gen + * The following fixed routing needed + * DAC1 (NID 0x02) -> Speaker (NID 0x14); some eq applied secretly + * DAC2 (NID 0x03) -> Bass (NID 0x17) & Headphone (NID 0x21); sharing a DAC + * DAC3 (NID 0x06) -> Unused, due to the lack of volume amp + */ +static void alc285_fixup_thinkpad_x1_gen7(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + static const hda_nid_t conn[] = { 0x02, 0x03 }; /* exclude 0x06 */ + static const hda_nid_t preferred_pairs[] = { + 0x14, 0x02, 0x17, 0x03, 0x21, 0x03, 0 + }; + struct alc_spec *spec = codec->spec; + + switch (action) { + case HDA_FIXUP_ACT_PRE_PROBE: + snd_hda_override_conn_list(codec, 0x17, ARRAY_SIZE(conn), conn); + spec->gen.preferred_dacs = preferred_pairs; + break; + case HDA_FIXUP_ACT_BUILD: + /* The generic parser creates somewhat unintuitive volume ctls + * with the fixed routing above, and the shared DAC2 may be + * confusing for PA. + * Rename those to unique names so that PA doesn't touch them + * and use only Master volume. + */ + rename_ctl(codec, "Front Playback Volume", "DAC1 Playback Volume"); + rename_ctl(codec, "Bass Speaker Playback Volume", "DAC2 Playback Volume"); + break; + } +} + static void alc233_alc662_fixup_lenovo_dual_codecs(struct hda_codec *codec, const struct hda_fixup *fix, int action) @@ -5934,6 +6071,21 @@ codec->power_save_node = 0; } +/* avoid DAC 0x06 for bass speaker 0x17; it has no volume control */ +static void alc289_fixup_asus_ga401(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + static const hda_nid_t preferred_pairs[] = { + 0x14, 0x02, 0x17, 0x02, 0x21, 0x03, 0 + }; + struct alc_spec *spec = codec->spec; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + spec->gen.preferred_dacs = preferred_pairs; + spec->gen.obey_preferred_dacs = 1; + } +} + /* The DAC of NID 0x3 will introduce click/pop noise on headphones, so invalidate it */ static void alc285_fixup_invalidate_dacs(struct hda_codec *codec, const struct hda_fixup *fix, int action) @@ -5944,6 +6096,27 @@ snd_hda_override_wcaps(codec, 0x03, 0); } +static void alc_combo_jack_hp_jd_restart(struct hda_codec *codec) +{ + switch (codec->core.vendor_id) { + case 0x10ec0274: + case 0x10ec0294: + case 0x10ec0225: + case 0x10ec0295: + case 0x10ec0299: + alc_update_coef_idx(codec, 0x4a, 0x8000, 1 << 15); /* Reset HP JD */ + alc_update_coef_idx(codec, 0x4a, 0x8000, 0 << 15); + break; + case 0x10ec0235: + case 0x10ec0236: + case 0x10ec0255: + case 0x10ec0256: + alc_update_coef_idx(codec, 0x1b, 0x8000, 1 << 15); /* Reset HP JD */ + alc_update_coef_idx(codec, 0x1b, 0x8000, 0 << 15); + break; + } +} + static void alc295_fixup_chromebook(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -5954,16 +6127,7 @@ spec->ultra_low_power = true; break; case HDA_FIXUP_ACT_INIT: - switch (codec->core.vendor_id) { - case 0x10ec0295: - alc_update_coef_idx(codec, 0x4a, 0x8000, 1 << 15); /* Reset HP JD */ - alc_update_coef_idx(codec, 0x4a, 0x8000, 0 << 15); - break; - case 0x10ec0236: - alc_update_coef_idx(codec, 0x1b, 0x8000, 1 << 15); /* Reset HP JD */ - alc_update_coef_idx(codec, 0x1b, 0x8000, 0 << 15); - break; - } + alc_combo_jack_hp_jd_restart(codec); break; } } @@ -5975,6 +6139,40 @@ snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ); } + +static void alc294_gx502_toggle_output(struct hda_codec *codec, + struct hda_jack_callback *cb) +{ + /* The Windows driver sets the codec up in a very different way where + * it appears to leave 0x10 = 0x8a20 set. For Linux we need to toggle it + */ + if (snd_hda_jack_detect_state(codec, 0x21) == HDA_JACK_PRESENT) + alc_write_coef_idx(codec, 0x10, 0x8a20); + else + alc_write_coef_idx(codec, 0x10, 0x0a20); +} + +static void alc294_fixup_gx502_hp(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + /* Pin 0x21: headphones/headset mic */ + if (!is_jack_detectable(codec, 0x21)) + return; + + switch (action) { + case HDA_FIXUP_ACT_PRE_PROBE: + snd_hda_jack_detect_enable_callback(codec, 0x21, + alc294_gx502_toggle_output); + break; + case HDA_FIXUP_ACT_INIT: + /* Make sure to start in a correct state, i.e. if + * headphones have been plugged in before powering up the system + */ + alc294_gx502_toggle_output(codec, NULL); + break; + } +} + static void alc285_fixup_hp_gpio_amp_init(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -5985,6 +6183,33 @@ alc_write_coef_idx(codec, 0x65, 0x0); } +static void alc274_fixup_hp_headset_mic(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + switch (action) { + case HDA_FIXUP_ACT_INIT: + alc_combo_jack_hp_jd_restart(codec); + break; + } +} + +static void alc_fixup_no_int_mic(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + switch (action) { + case HDA_FIXUP_ACT_PRE_PROBE: + /* Mic RING SLEEVE swap for combo jack */ + alc_update_coef_idx(codec, 0x45, 0xf<<12 | 1<<10, 5<<12); + spec->no_internal_mic_pin = true; + break; + case HDA_FIXUP_ACT_INIT: + alc_combo_jack_hp_jd_restart(codec); + break; + } +} + /* for hda_fixup_thinkpad_acpi() */ #include "thinkpad_helper.c" @@ -5999,6 +6224,7 @@ #include "hp_x360_helper.c" enum { + ALC269_FIXUP_GPIO2, ALC269_FIXUP_SONY_VAIO, ALC275_FIXUP_SONY_VAIO_GPIO2, ALC269_FIXUP_DELL_M101Z, @@ -6081,6 +6307,7 @@ ALC280_FIXUP_HP_DOCK_PINS, ALC269_FIXUP_HP_DOCK_GPIO_MIC1_LED, ALC280_FIXUP_HP_9480M, + ALC245_FIXUP_HP_X360_AMP, ALC288_FIXUP_DELL_HEADSET_MODE, ALC288_FIXUP_DELL1_MIC_NO_PRESENCE, ALC288_FIXUP_DELL_XPS_13, @@ -6104,6 +6331,7 @@ ALC221_FIXUP_HP_FRONT_MIC, ALC292_FIXUP_TPT460, ALC298_FIXUP_SPK_VOLUME, + ALC298_FIXUP_LENOVO_SPK_VOLUME, ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER, ALC269_FIXUP_ATIV_BOOK_8, ALC221_FIXUP_HP_MIC_NO_PRESENCE, @@ -6151,11 +6379,16 @@ ALC289_FIXUP_DUAL_SPK, ALC294_FIXUP_SPK2_TO_DAC1, ALC294_FIXUP_ASUS_DUAL_SPK, + ALC285_FIXUP_THINKPAD_X1_GEN7, ALC285_FIXUP_THINKPAD_HEADSET_JACK, ALC294_FIXUP_ASUS_HPE, ALC294_FIXUP_ASUS_COEF_1B, + ALC294_FIXUP_ASUS_GX502_HP, + ALC294_FIXUP_ASUS_GX502_PINS, + ALC294_FIXUP_ASUS_GX502_VERBS, ALC285_FIXUP_HP_GPIO_LED, ALC285_FIXUP_HP_MUTE_LED, + ALC236_FIXUP_HP_GPIO_LED, ALC236_FIXUP_HP_MUTE_LED, ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, ALC295_FIXUP_ASUS_MIC_NO_PRESENCE, @@ -6166,9 +6399,31 @@ ALC289_FIXUP_ASUS_GA502, ALC256_FIXUP_ACER_MIC_NO_PRESENCE, ALC285_FIXUP_HP_GPIO_AMP_INIT, + ALC269_FIXUP_CZC_B20, + ALC269_FIXUP_CZC_TMI, + ALC269_FIXUP_CZC_L101, + ALC269_FIXUP_LEMOTE_A1802, + ALC269_FIXUP_LEMOTE_A190X, + ALC256_FIXUP_INTEL_NUC8_RUGGED, + ALC256_FIXUP_INTEL_NUC10, + ALC255_FIXUP_XIAOMI_HEADSET_MIC, + ALC274_FIXUP_HP_MIC, + ALC274_FIXUP_HP_HEADSET_MIC, + ALC256_FIXUP_ASUS_HPE, + ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK, + ALC287_FIXUP_HP_GPIO_LED, + ALC256_FIXUP_HP_HEADSET_MIC, + ALC236_FIXUP_DELL_AIO_HEADSET_MIC, + ALC282_FIXUP_ACER_DISABLE_LINEOUT, + ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST, + ALC256_FIXUP_ACER_HEADSET_MIC, }; static const struct hda_fixup alc269_fixups[] = { + [ALC269_FIXUP_GPIO2] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_gpio2, + }, [ALC269_FIXUP_SONY_VAIO] = { .type = HDA_FIXUP_PINCTLS, .v.pins = (const struct hda_pintbl[]) { @@ -6706,7 +6961,7 @@ }, [ALC255_FIXUP_MIC_MUTE_LED] = { .type = HDA_FIXUP_FUNC, - .v.func = snd_hda_gen_fixup_micmute_led, + .v.func = alc_fixup_micmute_led, }, [ALC282_FIXUP_ASPIRE_V5_PINS] = { .type = HDA_FIXUP_PINS, @@ -6761,6 +7016,10 @@ .type = HDA_FIXUP_FUNC, .v.func = alc280_fixup_hp_9480m, }, + [ALC245_FIXUP_HP_X360_AMP] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc245_fixup_hp_x360_amp, + }, [ALC288_FIXUP_DELL_HEADSET_MODE] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_headset_mode_dell_alc288, @@ -6809,7 +7068,7 @@ }, [ALC292_FIXUP_DELL_E7X] = { .type = HDA_FIXUP_FUNC, - .v.func = snd_hda_gen_fixup_micmute_led, + .v.func = alc_fixup_micmute_led, /* micmute fixup must be applied at last */ .chained_before = true, .chain_id = ALC292_FIXUP_DELL_E7X_AAMIX, @@ -6911,6 +7170,10 @@ .chained = true, .chain_id = ALC298_FIXUP_DELL_AIO_MIC_NO_PRESENCE, }, + [ALC298_FIXUP_LENOVO_SPK_VOLUME] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc298_fixup_speaker_volume, + }, [ALC295_FIXUP_DISABLE_DAC3] = { .type = HDA_FIXUP_FUNC, .v.func = alc295_fixup_disable_dac3, @@ -6988,6 +7251,8 @@ [ALC233_FIXUP_LENOVO_MULTI_CODECS] = { .type = HDA_FIXUP_FUNC, .v.func = alc233_alc662_fixup_lenovo_dual_codecs, + .chained = true, + .chain_id = ALC269_FIXUP_GPIO2 }, [ALC233_FIXUP_ACER_HEADSET_MIC] = { .type = HDA_FIXUP_VERBS, @@ -7290,11 +7555,17 @@ .chained = true, .chain_id = ALC294_FIXUP_SPK2_TO_DAC1 }, + [ALC285_FIXUP_THINKPAD_X1_GEN7] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc285_fixup_thinkpad_x1_gen7, + .chained = true, + .chain_id = ALC269_FIXUP_THINKPAD_ACPI + }, [ALC285_FIXUP_THINKPAD_HEADSET_JACK] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_headset_jack, .chained = true, - .chain_id = ALC285_FIXUP_SPEAKER2_TO_DAC1 + .chain_id = ALC285_FIXUP_THINKPAD_X1_GEN7 }, [ALC294_FIXUP_ASUS_HPE] = { .type = HDA_FIXUP_VERBS, @@ -7307,6 +7578,33 @@ .chained = true, .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC }, + [ALC294_FIXUP_ASUS_GX502_PINS] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x19, 0x03a11050 }, /* front HP mic */ + { 0x1a, 0x01a11830 }, /* rear external mic */ + { 0x21, 0x03211020 }, /* front HP out */ + { } + }, + .chained = true, + .chain_id = ALC294_FIXUP_ASUS_GX502_VERBS + }, + [ALC294_FIXUP_ASUS_GX502_VERBS] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* set 0x15 to HP-OUT ctrl */ + { 0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0 }, + /* unmute the 0x15 amp */ + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb000 }, + { } + }, + .chained = true, + .chain_id = ALC294_FIXUP_ASUS_GX502_HP + }, + [ALC294_FIXUP_ASUS_GX502_HP] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc294_fixup_gx502_hp, + }, [ALC294_FIXUP_ASUS_COEF_1B] = { .type = HDA_FIXUP_VERBS, .v.verbs = (const struct hda_verb[]) { @@ -7326,6 +7624,10 @@ .type = HDA_FIXUP_FUNC, .v.func = alc285_fixup_hp_mute_led, }, + [ALC236_FIXUP_HP_GPIO_LED] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc236_fixup_hp_gpio_led, + }, [ALC236_FIXUP_HP_MUTE_LED] = { .type = HDA_FIXUP_FUNC, .v.func = alc236_fixup_hp_mute_led, @@ -7376,11 +7678,10 @@ .chain_id = ALC269_FIXUP_HEADSET_MIC }, [ALC289_FIXUP_ASUS_GA401] = { - .type = HDA_FIXUP_PINS, - .v.pins = (const struct hda_pintbl[]) { - { 0x19, 0x03a11020 }, /* headset mic with jack detect */ - { } - }, + .type = HDA_FIXUP_FUNC, + .v.func = alc289_fixup_asus_ga401, + .chained = true, + .chain_id = ALC289_FIXUP_ASUS_GA502, }, [ALC289_FIXUP_ASUS_GA502] = { .type = HDA_FIXUP_PINS, @@ -7404,6 +7705,188 @@ .chained = true, .chain_id = ALC285_FIXUP_HP_GPIO_LED }, + [ALC269_FIXUP_CZC_B20] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x12, 0x411111f0 }, + { 0x14, 0x90170110 }, /* speaker */ + { 0x15, 0x032f1020 }, /* HP out */ + { 0x17, 0x411111f0 }, + { 0x18, 0x03ab1040 }, /* mic */ + { 0x19, 0xb7a7013f }, + { 0x1a, 0x0181305f }, + { 0x1b, 0x411111f0 }, + { 0x1d, 0x411111f0 }, + { 0x1e, 0x411111f0 }, + { } + }, + .chain_id = ALC269_FIXUP_DMIC, + }, + [ALC269_FIXUP_CZC_TMI] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x12, 0x4000c000 }, + { 0x14, 0x90170110 }, /* speaker */ + { 0x15, 0x0421401f }, /* HP out */ + { 0x17, 0x411111f0 }, + { 0x18, 0x04a19020 }, /* mic */ + { 0x19, 0x411111f0 }, + { 0x1a, 0x411111f0 }, + { 0x1b, 0x411111f0 }, + { 0x1d, 0x40448505 }, + { 0x1e, 0x411111f0 }, + { 0x20, 0x8000ffff }, + { } + }, + .chain_id = ALC269_FIXUP_DMIC, + }, + [ALC269_FIXUP_CZC_L101] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x12, 0x40000000 }, + { 0x14, 0x01014010 }, /* speaker */ + { 0x15, 0x411111f0 }, /* HP out */ + { 0x16, 0x411111f0 }, + { 0x18, 0x01a19020 }, /* mic */ + { 0x19, 0x02a19021 }, + { 0x1a, 0x0181302f }, + { 0x1b, 0x0221401f }, + { 0x1c, 0x411111f0 }, + { 0x1d, 0x4044c601 }, + { 0x1e, 0x411111f0 }, + { } + }, + .chain_id = ALC269_FIXUP_DMIC, + }, + [ALC269_FIXUP_LEMOTE_A1802] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x12, 0x40000000 }, + { 0x14, 0x90170110 }, /* speaker */ + { 0x17, 0x411111f0 }, + { 0x18, 0x03a19040 }, /* mic1 */ + { 0x19, 0x90a70130 }, /* mic2 */ + { 0x1a, 0x411111f0 }, + { 0x1b, 0x411111f0 }, + { 0x1d, 0x40489d2d }, + { 0x1e, 0x411111f0 }, + { 0x20, 0x0003ffff }, + { 0x21, 0x03214020 }, + { } + }, + .chain_id = ALC269_FIXUP_DMIC, + }, + [ALC269_FIXUP_LEMOTE_A190X] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x14, 0x99130110 }, /* speaker */ + { 0x15, 0x0121401f }, /* HP out */ + { 0x18, 0x01a19c20 }, /* rear mic */ + { 0x19, 0x99a3092f }, /* front mic */ + { 0x1b, 0x0201401f }, /* front lineout */ + { } + }, + .chain_id = ALC269_FIXUP_DMIC, + }, + [ALC256_FIXUP_INTEL_NUC8_RUGGED] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x1b, 0x01a1913c }, /* use as headset mic, without its own jack detect */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE + }, + [ALC256_FIXUP_INTEL_NUC10] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x19, 0x01a1913c }, /* use as headset mic, without its own jack detect */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE + }, + [ALC255_FIXUP_XIAOMI_HEADSET_MIC] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x5089 }, + { } + }, + .chained = true, + .chain_id = ALC289_FIXUP_ASUS_GA502 + }, + [ALC274_FIXUP_HP_MIC] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x5089 }, + { } + }, + }, + [ALC274_FIXUP_HP_HEADSET_MIC] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc274_fixup_hp_headset_mic, + .chained = true, + .chain_id = ALC274_FIXUP_HP_MIC + }, + [ALC256_FIXUP_ASUS_HPE] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* Set EAPD high */ + { 0x20, AC_VERB_SET_COEF_INDEX, 0x0f }, + { 0x20, AC_VERB_SET_PROC_COEF, 0x7778 }, + { } + }, + .chained = true, + .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC + }, + [ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_headset_jack, + .chained = true, + .chain_id = ALC269_FIXUP_THINKPAD_ACPI + }, + [ALC287_FIXUP_HP_GPIO_LED] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc287_fixup_hp_gpio_led, + }, + [ALC256_FIXUP_HP_HEADSET_MIC] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc274_fixup_hp_headset_mic, + }, + [ALC236_FIXUP_DELL_AIO_HEADSET_MIC] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc_fixup_no_int_mic, + .chained = true, + .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE + }, + [ALC282_FIXUP_ACER_DISABLE_LINEOUT] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x1b, 0x411111f0 }, + { 0x18, 0x01a1913c }, /* use as headset mic, without its own jack detect */ + { }, + }, + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE + }, + [ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc269_fixup_limit_int_mic_boost, + .chained = true, + .chain_id = ALC255_FIXUP_ACER_MIC_NO_PRESENCE, + }, + [ALC256_FIXUP_ACER_HEADSET_MIC] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x19, 0x02a1113c }, /* use as headset mic, without its own jack detect */ + { 0x1a, 0x90a1092f }, /* use as internal mic */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -7418,17 +7901,23 @@ SND_PCI_QUIRK(0x1025, 0x0762, "Acer Aspire E1-472", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572), SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572), SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS), + SND_PCI_QUIRK(0x1025, 0x101c, "Acer Veriton N2510G", ALC269_FIXUP_LIFEBOOK), SND_PCI_QUIRK(0x1025, 0x102b, "Acer Aspire C24-860", ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1025, 0x1065, "Acer Aspire C20-820", ALC269VC_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x106d, "Acer Cloudbook 14", ALC283_FIXUP_CHROME_BOOK), + SND_PCI_QUIRK(0x1025, 0x1094, "Acer Aspire E5-575T", ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST), SND_PCI_QUIRK(0x1025, 0x1099, "Acer Aspire E5-523G", ALC255_FIXUP_ACER_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1025, 0x110e, "Acer Aspire ES1-432", ALC255_FIXUP_ACER_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1025, 0x1166, "Acer Veriton N4640G", ALC269_FIXUP_LIFEBOOK), + SND_PCI_QUIRK(0x1025, 0x1167, "Acer Veriton N6640G", ALC269_FIXUP_LIFEBOOK), SND_PCI_QUIRK(0x1025, 0x1246, "Acer Predator Helios 500", ALC299_FIXUP_PREDATOR_SPK), SND_PCI_QUIRK(0x1025, 0x1247, "Acer vCopperbox", ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS), SND_PCI_QUIRK(0x1025, 0x1248, "Acer Veriton N4660G", ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1025, 0x1269, "Acer SWIFT SF314-54", ALC256_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x128f, "Acer Veriton Z6860G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1290, "Acer Veriton Z4860G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1291, "Acer Veriton Z4660G", ALC286_FIXUP_ACER_AIO_HEADSET_MIC), + SND_PCI_QUIRK(0x1025, 0x129c, "Acer SWIFT SF314-55", ALC256_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1308, "Acer Aspire Z24-890", ALC286_FIXUP_ACER_AIO_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x132a, "Acer TravelMate B114-21", ALC233_FIXUP_ACER_HEADSET_MIC), SND_PCI_QUIRK(0x1025, 0x1330, "Acer TravelMate X514-51T", ALC255_FIXUP_ACER_HEADSET_MIC), @@ -7481,6 +7970,9 @@ SND_PCI_QUIRK(0x1028, 0x097d, "Dell Precision", ALC289_FIXUP_DUAL_SPK), SND_PCI_QUIRK(0x1028, 0x098d, "Dell Precision", ALC233_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x09bf, "Dell Precision", ALC233_FIXUP_ASUS_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1028, 0x0a2e, "Dell", ALC236_FIXUP_DELL_AIO_HEADSET_MIC), + SND_PCI_QUIRK(0x1028, 0x0a30, "Dell", ALC236_FIXUP_DELL_AIO_HEADSET_MIC), + SND_PCI_QUIRK(0x1028, 0x0a58, "Dell", ALC255_FIXUP_DELL_HEADSET_MIC), SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), @@ -7547,16 +8039,31 @@ SND_PCI_QUIRK(0x103c, 0x820d, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x8256, "HP", ALC221_FIXUP_HP_FRONT_MIC), SND_PCI_QUIRK(0x103c, 0x827e, "HP x360", ALC295_FIXUP_HP_X360), + SND_PCI_QUIRK(0x103c, 0x827f, "HP x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x82bf, "HP G3 mini", ALC221_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x82c0, "HP G3 mini premium", ALC221_FIXUP_HP_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x869d, "HP", ALC236_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8724, "HP EliteBook 850 G7", ALC285_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x8729, "HP", ALC285_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8760, "HP", ALC285_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8780, "HP ZBook Fury 17 G7 Mobile Workstation", + ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8783, "HP ZBook Fury 15 G7 Mobile Workstation", + ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87e5, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87f2, "HP ProBook 640 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87f4, "HP", ALC287_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87f5, "HP", ALC287_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), + SND_PCI_QUIRK(0x103c, 0x8846, "HP EliteBook 850 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x884c, "HP EliteBook 840 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), @@ -7565,6 +8072,7 @@ SND_PCI_QUIRK(0x1043, 0x10d0, "ASUS X540LA/X540LJ", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x115d, "Asus 1015E", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), SND_PCI_QUIRK(0x1043, 0x11c0, "ASUS X556UR", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1043, 0x1271, "ASUS X430UN", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1290, "ASUS X441SA", ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x12a0, "ASUS X441UV", ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x12f0, "ASUS X541UV", ALC256_FIXUP_ASUS_MIC), @@ -7577,6 +8085,7 @@ SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC), SND_PCI_QUIRK(0x1043, 0x18f1, "Asus FX505DT", ALC256_FIXUP_ASUS_HEADSET_MIC), SND_PCI_QUIRK(0x1043, 0x194e, "ASUS UX563FD", ALC294_FIXUP_ASUS_HPE), + SND_PCI_QUIRK(0x1043, 0x1982, "ASUS B1400CEPE", ALC256_FIXUP_ASUS_HPE), SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE), SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), @@ -7585,9 +8094,12 @@ SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x1043, 0x125e, "ASUS Q524UQK", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1043, 0x1ccd, "ASUS X555UB", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x1d4e, "ASUS TM420", ALC256_FIXUP_ASUS_HPE), SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502), SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401), + SND_PCI_QUIRK(0x1043, 0x1881, "ASUS Zephyrus S/M", ALC294_FIXUP_ASUS_GX502_PINS), SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2), SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), @@ -7608,20 +8120,65 @@ SND_PCI_QUIRK(0x10cf, 0x1845, "Lifebook U904", ALC269_FIXUP_LIFEBOOK_EXTMIC), SND_PCI_QUIRK(0x10ec, 0x10f2, "Intel Reference board", ALC700_FIXUP_INTEL_REFERENCE), SND_PCI_QUIRK(0x10ec, 0x1230, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), + SND_PCI_QUIRK(0x10ec, 0x1252, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), + SND_PCI_QUIRK(0x10ec, 0x1254, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE), SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), + SND_PCI_QUIRK(0x144d, 0xc189, "Samsung Galaxy Flex Book (NT950QCG-X716)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), + SND_PCI_QUIRK(0x144d, 0xc18a, "Samsung Galaxy Book Ion (NP930XCJ-K01US)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), + SND_PCI_QUIRK(0x144d, 0xc830, "Samsung Galaxy Book Ion (NT950XCJ-X716A)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), SND_PCI_QUIRK(0x144d, 0xc740, "Samsung Ativ book 8 (NP870Z5G)", ALC269_FIXUP_ATIV_BOOK_8), SND_PCI_QUIRK(0x144d, 0xc812, "Samsung Notebook Pen S (NT950SBE-X58)", ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET), SND_PCI_QUIRK(0x1458, 0xfa53, "Gigabyte BXBT-2807", ALC283_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x1462, 0xb120, "MSI Cubi MS-B120", ALC283_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x1462, 0xb171, "Cubi N 8GL (MS-B171)", ALC283_FIXUP_HEADSET_MIC), + SND_PCI_QUIRK(0x152d, 0x1082, "Quanta NL3", ALC269_FIXUP_LIFEBOOK), + SND_PCI_QUIRK(0x1558, 0x1323, "Clevo N130ZU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x1325, "System76 Darter Pro (darp5)", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x1401, "Clevo L140[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x1403, "Clevo N140CU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x1404, "Clevo N150CU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x14a1, "Clevo L141MU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x4018, "Clevo NV40M[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x4019, "Clevo NV40MZ", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x4020, "Clevo NV40MB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x40a1, "Clevo NL40GU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x40c1, "Clevo NL40[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x40d1, "Clevo NL41DU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50a3, "Clevo NJ51GU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50b3, "Clevo NK50S[BEZ]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50b6, "Clevo NK50S5", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50b8, "Clevo NK50SZ", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50d5, "Clevo NP50D5", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50f0, "Clevo NH50A[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x50f3, "Clevo NH58DPQ", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x5101, "Clevo S510WU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x5157, "Clevo W517GU1", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x51a1, "Clevo NS50MU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x70a1, "Clevo NB70T[HJK]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x70b3, "Clevo NK70SB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8228, "Clevo NR40BU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8520, "Clevo NH50D[CD]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8521, "Clevo NH77D[CD]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8535, "Clevo NH50D[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8536, "Clevo NH79D[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x8550, "System76 Gazelle (gaze14)", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x8551, "System76 Gazelle (gaze14)", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x8560, "System76 Gazelle (gaze14)", ALC269_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x1558, 0x8561, "System76 Gazelle (gaze14)", ALC269_FIXUP_HEADSET_MIC), + SND_PCI_QUIRK(0x1558, 0x8562, "Clevo NH[5|7][0-9]RZ[Q]", ALC269_FIXUP_DMIC), + SND_PCI_QUIRK(0x1558, 0x8668, "Clevo NP50B[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8680, "Clevo NJ50LU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8686, "Clevo NH50[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8a20, "Clevo NH55DCQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8a51, "Clevo NH70RCQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x8d50, "Clevo NH55RCQ-M", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x951d, "Clevo N950T[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x961d, "Clevo N960S[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x971d, "Clevo N970T[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0xa500, "Clevo NL53RU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x17aa, 0x1036, "Lenovo P520", ALC233_FIXUP_LENOVO_MULTI_CODECS), SND_PCI_QUIRK(0x17aa, 0x1048, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), @@ -7659,6 +8216,8 @@ SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK), SND_PCI_QUIRK(0x17aa, 0x22be, "Thinkpad X1 Carbon 8th", ALC285_FIXUP_THINKPAD_HEADSET_JACK), + SND_PCI_QUIRK(0x17aa, 0x22c1, "Thinkpad P1 Gen 3", ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK), + SND_PCI_QUIRK(0x17aa, 0x22c2, "Thinkpad X1 Extreme Gen 3", ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK), SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), @@ -7669,6 +8228,7 @@ SND_PCI_QUIRK(0x17aa, 0x3151, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x17aa, 0x3176, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x17aa, 0x3178, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), + SND_PCI_QUIRK(0x17aa, 0x3818, "Lenovo C940", ALC298_FIXUP_LENOVO_SPK_VOLUME), SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI), @@ -7693,9 +8253,19 @@ SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), + SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20), + SND_PCI_QUIRK(0x1b35, 0x1236, "CZC TMI", ALC269_FIXUP_CZC_TMI), + SND_PCI_QUIRK(0x1b35, 0x1237, "CZC L101", ALC269_FIXUP_CZC_L101), SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ + SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC), + SND_PCI_QUIRK(0x1d72, 0x1701, "XiaomiNotebook Pro", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC), + SND_PCI_QUIRK(0x1d72, 0x1947, "RedmiBook Air", ALC255_FIXUP_XIAOMI_HEADSET_MIC), SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE), + SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802), + SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X), + SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED), + SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10), #if 0 /* Below is a quirk table taken from the old code. @@ -7867,6 +8437,10 @@ {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"}, {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"}, {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"}, + {.id = ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, .name = "alc298-samsung-headphone"}, + {.id = ALC255_FIXUP_XIAOMI_HEADSET_MIC, .name = "alc255-xiaomi-headset"}, + {.id = ALC274_FIXUP_HP_MIC, .name = "alc274-hp-mic-detect"}, + {.id = ALC245_FIXUP_HP_X360_AMP, .name = "alc245-hp-x360-amp"}, {} }; #define ALC225_STANDARD_PINS \ @@ -7961,6 +8535,12 @@ {0x19, 0x02a11020}, {0x1a, 0x02a11030}, {0x21, 0x0221101f}), + SND_HDA_PIN_QUIRK(0x10ec0236, 0x1028, "Dell", ALC236_FIXUP_DELL_AIO_HEADSET_MIC, + {0x21, 0x02211010}), + SND_HDA_PIN_QUIRK(0x10ec0236, 0x103c, "HP", ALC256_FIXUP_HP_HEADSET_MIC, + {0x14, 0x90170110}, + {0x19, 0x02a11020}, + {0x21, 0x02211030}), SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL2_MIC_NO_PRESENCE, {0x14, 0x90170110}, {0x21, 0x02211020}), @@ -8063,6 +8643,14 @@ {0x1a, 0x90a70130}, {0x1b, 0x90170110}, {0x21, 0x03211020}), + SND_HDA_PIN_QUIRK(0x10ec0256, 0x103c, "HP", ALC256_FIXUP_HP_HEADSET_MIC, + {0x14, 0x90170110}, + {0x19, 0x02a11020}, + {0x21, 0x0221101f}), + SND_HDA_PIN_QUIRK(0x10ec0274, 0x103c, "HP", ALC274_FIXUP_HP_HEADSET_MIC, + {0x17, 0x90170110}, + {0x19, 0x03a11030}, + {0x21, 0x03211020}), SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, {0x12, 0x90a60130}, {0x14, 0x90170110}, @@ -8100,6 +8688,22 @@ {0x12, 0x90a60140}, {0x19, 0x04a11030}, {0x21, 0x04211020}), + SND_HDA_PIN_QUIRK(0x10ec0282, 0x1025, "Acer", ALC282_FIXUP_ACER_DISABLE_LINEOUT, + ALC282_STANDARD_PINS, + {0x12, 0x90a609c0}, + {0x18, 0x03a11830}, + {0x19, 0x04a19831}, + {0x1a, 0x0481303f}, + {0x1b, 0x04211020}, + {0x21, 0x0321101f}), + SND_HDA_PIN_QUIRK(0x10ec0282, 0x1025, "Acer", ALC282_FIXUP_ACER_DISABLE_LINEOUT, + ALC282_STANDARD_PINS, + {0x12, 0x90a60940}, + {0x18, 0x03a11830}, + {0x19, 0x04a19831}, + {0x1a, 0x0481303f}, + {0x1b, 0x04211020}, + {0x21, 0x0321101f}), SND_HDA_PIN_QUIRK(0x10ec0283, 0x1028, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, ALC282_STANDARD_PINS, {0x12, 0x90a60130}, @@ -8113,11 +8717,20 @@ {0x12, 0x90a60130}, {0x19, 0x03a11020}, {0x21, 0x0321101f}), + SND_HDA_PIN_QUIRK(0x10ec0285, 0x17aa, "Lenovo", ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK, + {0x14, 0x90170110}, + {0x19, 0x04a11040}, + {0x21, 0x04211020}), SND_HDA_PIN_QUIRK(0x10ec0285, 0x17aa, "Lenovo", ALC285_FIXUP_LENOVO_PC_BEEP_IN_NOISE, {0x12, 0x90a60130}, {0x14, 0x90170110}, {0x19, 0x04a11040}, {0x21, 0x04211020}), + SND_HDA_PIN_QUIRK(0x10ec0287, 0x17aa, "Lenovo", ALC285_FIXUP_THINKPAD_HEADSET_JACK, + {0x14, 0x90170110}, + {0x17, 0x90170111}, + {0x19, 0x03a11030}, + {0x21, 0x03211020}), SND_HDA_PIN_QUIRK(0x10ec0286, 0x1025, "Acer", ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE, {0x12, 0x90a60130}, {0x17, 0x90170110}, @@ -8181,6 +8794,9 @@ SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, ALC292_STANDARD_PINS, {0x13, 0x90a60140}), + SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_HPE, + {0x17, 0x90170110}, + {0x21, 0x04211020}), SND_HDA_PIN_QUIRK(0x10ec0294, 0x1043, "ASUS", ALC294_FIXUP_ASUS_MIC, {0x14, 0x90170110}, {0x1b, 0x90a70130}, @@ -8951,6 +9567,7 @@ ALC662_FIXUP_LED_GPIO1, ALC662_FIXUP_IDEAPAD, ALC272_FIXUP_MARIO, + ALC662_FIXUP_CZC_ET26, ALC662_FIXUP_CZC_P10T, ALC662_FIXUP_SKU_IGNORE, ALC662_FIXUP_HP_RP5800, @@ -9020,6 +9637,25 @@ .type = HDA_FIXUP_FUNC, .v.func = alc272_fixup_mario, }, + [ALC662_FIXUP_CZC_ET26] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + {0x12, 0x403cc000}, + {0x14, 0x90170110}, /* speaker */ + {0x15, 0x411111f0}, + {0x16, 0x411111f0}, + {0x18, 0x01a19030}, /* mic */ + {0x19, 0x90a7013f}, /* int-mic */ + {0x1a, 0x01014020}, + {0x1b, 0x0121401f}, + {0x1c, 0x411111f0}, + {0x1d, 0x411111f0}, + {0x1e, 0x40478e35}, + {} + }, + .chained = true, + .chain_id = ALC662_FIXUP_SKU_IGNORE + }, [ALC662_FIXUP_CZC_P10T] = { .type = HDA_FIXUP_VERBS, .v.verbs = (const struct hda_verb[]) { @@ -9381,6 +10017,7 @@ SND_PCI_QUIRK(0x1028, 0x0698, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x069f, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), + SND_PCI_QUIRK(0x103c, 0x873e, "HP", ALC671_FIXUP_HP_HEADSET_MIC2), SND_PCI_QUIRK(0x1043, 0x1080, "Asus UX501VW", ALC668_FIXUP_HEADSET_MODE), SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_ASUS_Nx50), SND_PCI_QUIRK(0x1043, 0x13df, "Asus N550JX", ALC662_FIXUP_BASS_1A), @@ -9403,6 +10040,7 @@ SND_PCI_QUIRK(0x1849, 0x5892, "ASRock B150M", ALC892_FIXUP_ASROCK_MOBO), SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68), SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON), + SND_PCI_QUIRK(0x1b35, 0x1234, "CZC ET26", ALC662_FIXUP_CZC_ET26), SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), SND_PCI_QUIRK(0x1025, 0x0566, "Acer Aspire Ethos 8951G", ALC669_FIXUP_ACER_ASPIRE_ETHOS), @@ -9745,6 +10383,7 @@ HDA_CODEC_ENTRY(0x10ec0888, "ALC888", patch_alc882), HDA_CODEC_ENTRY(0x10ec0889, "ALC889", patch_alc882), HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662), + HDA_CODEC_ENTRY(0x10ec0897, "ALC897", patch_alc662), HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882), HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882), HDA_CODEC_ENTRY(0x10ec0b00, "ALCS1200A", patch_alc882), --- linux-5.8.0.orig/sound/pci/hda/patch_sigmatel.c +++ linux-5.8.0/sound/pci/hda/patch_sigmatel.c @@ -320,15 +320,18 @@ } /* hook for controlling mic-mute LED GPIO */ -static void stac_capture_led_update(struct hda_codec *codec) +static int stac_capture_led_update(struct led_classdev *led_cdev, + enum led_brightness brightness) { + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); struct sigmatel_spec *spec = codec->spec; - if (spec->gen.micmute_led.led_value) + if (brightness) spec->gpio_data |= spec->mic_mute_led_gpio; else spec->gpio_data &= ~spec->mic_mute_led_gpio; stac_gpio_set(codec, spec->gpio_mask, spec->gpio_dir, spec->gpio_data); + return 0; } static int stac_vrefout_set(struct hda_codec *codec, @@ -366,10 +369,9 @@ } /* update mute-LED accoring to the master switch */ -static void stac_update_led_status(struct hda_codec *codec, int enabled) +static void stac_update_led_status(struct hda_codec *codec, bool muted) { struct sigmatel_spec *spec = codec->spec; - int muted = !enabled; if (!spec->gpio_led) return; @@ -393,9 +395,13 @@ } /* vmaster hook to update mute LED */ -static void stac_vmaster_hook(void *private_data, int val) +static int stac_vmaster_hook(struct led_classdev *led_cdev, + enum led_brightness brightness) { - stac_update_led_status(private_data, val); + struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent); + + stac_update_led_status(codec, brightness); + return 0; } /* automute hook to handle GPIO mute and EAPD updates */ @@ -832,7 +838,7 @@ static const struct snd_kcontrol_new beep_vol_ctl = HDA_CODEC_VOLUME(NULL, 0, 0, 0); - /* check for mute support for the the amp */ + /* check for mute support for the amp */ if ((caps & AC_AMPCAP_MUTE) >> AC_AMPCAP_MUTE_SHIFT) { const struct snd_kcontrol_new *temp; if (spec->anabeep_nid == nid) @@ -4313,7 +4319,7 @@ #endif if (spec->gpio_led) - spec->gen.vmaster_mute.hook = stac_vmaster_hook; + snd_hda_gen_add_mute_led_cdev(codec, stac_vmaster_hook); if (spec->aloopback_ctl && snd_hda_get_bool_hint(codec, "loopback") == 1) { @@ -4636,7 +4642,7 @@ spec->gpio_dir |= spec->mic_mute_led_gpio; spec->mic_enabled = 0; spec->gpio_data |= spec->mic_mute_led_gpio; - snd_hda_gen_add_micmute_led(codec, stac_capture_led_update); + snd_hda_gen_add_micmute_led_cdev(codec, stac_capture_led_update); } } --- linux-5.8.0.orig/sound/pci/hda/patch_via.c +++ linux-5.8.0/sound/pci/hda/patch_via.c @@ -113,6 +113,7 @@ spec->codec_type = VT1708S; spec->gen.indep_hp = 1; spec->gen.keep_eapd_on = 1; + spec->gen.dac_min_mute = 1; spec->gen.pcm_playback_hook = via_playback_pcm_hook; spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO; codec->power_save_node = 1; @@ -1002,6 +1003,7 @@ enum { VIA_FIXUP_INTMIC_BOOST, VIA_FIXUP_ASUS_G75, + VIA_FIXUP_POWER_SAVE, }; static void via_fixup_intmic_boost(struct hda_codec *codec, @@ -1011,6 +1013,13 @@ override_mic_boost(codec, 0x30, 0, 2, 40); } +static void via_fixup_power_save(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + codec->power_save_node = 0; +} + static const struct hda_fixup via_fixups[] = { [VIA_FIXUP_INTMIC_BOOST] = { .type = HDA_FIXUP_FUNC, @@ -1025,11 +1034,16 @@ { } } }, + [VIA_FIXUP_POWER_SAVE] = { + .type = HDA_FIXUP_FUNC, + .v.func = via_fixup_power_save, + }, }; static const struct snd_pci_quirk vt2002p_fixups[] = { SND_PCI_QUIRK(0x1043, 0x1487, "Asus G75", VIA_FIXUP_ASUS_G75), SND_PCI_QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_INTMIC_BOOST), + SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", VIA_FIXUP_POWER_SAVE), {} }; --- linux-5.8.0.orig/sound/pci/hda/thinkpad_helper.c +++ linux-5.8.0/sound/pci/hda/thinkpad_helper.c @@ -3,13 +3,11 @@ * to be included from codec driver */ -#if IS_ENABLED(CONFIG_THINKPAD_ACPI) && IS_REACHABLE(CONFIG_LEDS_TRIGGER_AUDIO) +#if IS_ENABLED(CONFIG_THINKPAD_ACPI) #include #include -static void (*old_vmaster_hook)(void *, int); - static bool is_thinkpad(struct hda_codec *codec) { return (codec->core.subsystem_id >> 16 == 0x17aa) && @@ -17,25 +15,14 @@ acpi_dev_found("IBM0068")); } -static void update_tpacpi_mute_led(void *private_data, int enabled) -{ - if (old_vmaster_hook) - old_vmaster_hook(private_data, enabled); - - ledtrig_audio_set(LED_AUDIO_MUTE, enabled ? LED_OFF : LED_ON); -} - static void hda_fixup_thinkpad_acpi(struct hda_codec *codec, const struct hda_fixup *fix, int action) { - struct hda_gen_spec *spec = codec->spec; - if (action == HDA_FIXUP_ACT_PROBE) { if (!is_thinkpad(codec)) return; - old_vmaster_hook = spec->vmaster_mute.hook; - spec->vmaster_mute.hook = update_tpacpi_mute_led; - snd_hda_gen_fixup_micmute_led(codec, fix, action); + snd_hda_gen_add_mute_led_cdev(codec, NULL); + snd_hda_gen_add_micmute_led_cdev(codec, NULL); } } --- linux-5.8.0.orig/sound/pci/ice1712/prodigy192.c +++ linux-5.8.0/sound/pci/ice1712/prodigy192.c @@ -32,7 +32,7 @@ * Experimentally I found out that only a combination of * OCKS0=1, OCKS1=1 (128fs, 64fs output) and ice1724 - * VT1724_MT_I2S_MCLK_128X=0 (256fs input) yields correct - * sampling rate. That means the the FPGA doubles the + * sampling rate. That means that the FPGA doubles the * MCK01 rate. * * Copyright (c) 2003 Takashi Iwai --- linux-5.8.0.orig/sound/pci/mixart/mixart_core.c +++ linux-5.8.0/sound/pci/mixart/mixart_core.c @@ -70,7 +70,6 @@ unsigned int i; #endif - mutex_lock(&mgr->msg_lock); err = 0; /* copy message descriptor from miXart to driver */ @@ -119,8 +118,6 @@ writel_be(headptr, MIXART_MEM(mgr, MSG_OUTBOUND_FREE_HEAD)); _clean_exit: - mutex_unlock(&mgr->msg_lock); - return err; } @@ -258,7 +255,9 @@ resp.data = resp_data; resp.size = max_resp_size; + mutex_lock(&mgr->msg_lock); err = get_msg(mgr, &resp, msg_frame); + mutex_unlock(&mgr->msg_lock); if( request->message_id != resp.message_id ) dev_err(&mgr->pci->dev, "RESPONSE ERROR!\n"); --- linux-5.8.0.orig/sound/pci/oxygen/xonar_dg.c +++ linux-5.8.0/sound/pci/oxygen/xonar_dg.c @@ -29,7 +29,7 @@ * GPIO 4 <- headphone detect * GPIO 5 -> enable ADC analog circuit for the left channel * GPIO 6 -> enable ADC analog circuit for the right channel - * GPIO 7 -> switch green rear output jack between CS4245 and and the first + * GPIO 7 -> switch green rear output jack between CS4245 and the first * channel of CS4361 (mechanical relay) * GPIO 8 -> enable output to speakers * --- linux-5.8.0.orig/sound/soc/amd/acp-da7219-max98357a.c +++ linux-5.8.0/sound/soc/amd/acp-da7219-max98357a.c @@ -73,8 +73,13 @@ return ret; } - da7219_dai_wclk = clk_get(component->dev, "da7219-dai-wclk"); - da7219_dai_bclk = clk_get(component->dev, "da7219-dai-bclk"); + da7219_dai_wclk = devm_clk_get(component->dev, "da7219-dai-wclk"); + if (IS_ERR(da7219_dai_wclk)) + return PTR_ERR(da7219_dai_wclk); + + da7219_dai_bclk = devm_clk_get(component->dev, "da7219-dai-bclk"); + if (IS_ERR(da7219_dai_bclk)) + return PTR_ERR(da7219_dai_bclk); ret = snd_soc_card_jack_new(card, "Headset Jack", SND_JACK_HEADSET | SND_JACK_LINEOUT | --- linux-5.8.0.orig/sound/soc/amd/acp3x-rt5682-max9836.c +++ linux-5.8.0/sound/soc/amd/acp3x-rt5682-max9836.c @@ -346,12 +346,17 @@ ret = devm_snd_soc_register_card(&pdev->dev, &acp3x_card); if (ret) { - dev_err(&pdev->dev, + if (ret != -EPROBE_DEFER) + dev_err(&pdev->dev, "devm_snd_soc_register_card(%s) failed: %d\n", acp3x_card.name, ret); - return ret; + else + dev_dbg(&pdev->dev, + "devm_snd_soc_register_card(%s) probe deferred: %d\n", + card->name, ret); } - return 0; + + return ret; } static const struct acpi_device_id acp3x_audio_acpi_match[] = { --- linux-5.8.0.orig/sound/soc/amd/raven/pci-acp3x.c +++ linux-5.8.0/sound/soc/amd/raven/pci-acp3x.c @@ -115,6 +115,10 @@ int ret, i; u32 addr, val; + /* Raven device detection */ + if (pci->revision != 0x00) + return -ENODEV; + if (pci_enable_device(pci)) { dev_err(&pci->dev, "pci_enable_device failed\n"); return -ENODEV; --- linux-5.8.0.orig/sound/soc/amd/renoir/acp3x-pdm-dma.c +++ linux-5.8.0/sound/soc/amd/renoir/acp3x-pdm-dma.c @@ -314,40 +314,30 @@ return 0; } -static int acp_pdm_dai_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params, - struct snd_soc_dai *dai) +static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream, + int cmd, struct snd_soc_dai *dai) { struct pdm_stream_instance *rtd; + int ret; + bool pdm_status; unsigned int ch_mask; rtd = substream->runtime->private_data; - switch (params_channels(params)) { + ret = 0; + switch (substream->runtime->channels) { case TWO_CH: ch_mask = 0x00; break; default: return -EINVAL; } - rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS); - rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base + - ACP_WOV_PDM_DECIMATION_FACTOR); - return 0; -} - -static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream, - int cmd, struct snd_soc_dai *dai) -{ - struct pdm_stream_instance *rtd; - int ret; - bool pdm_status; - - rtd = substream->runtime->private_data; - ret = 0; switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS); + rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base + + ACP_WOV_PDM_DECIMATION_FACTOR); rtd->bytescount = acp_pdm_get_byte_count(rtd, substream->stream); pdm_status = check_pdm_dma_status(rtd->acp_base); @@ -369,7 +359,6 @@ } static struct snd_soc_dai_ops acp_pdm_dai_ops = { - .hw_params = acp_pdm_dai_hw_params, .trigger = acp_pdm_dai_trigger, }; --- linux-5.8.0.orig/sound/soc/amd/renoir/rn-pci-acp3x.c +++ linux-5.8.0/sound/soc/amd/renoir/rn-pci-acp3x.c @@ -5,6 +5,8 @@ //Copyright 2020 Advanced Micro Devices, Inc. #include +#include +#include #include #include #include @@ -18,6 +20,15 @@ module_param(acp_power_gating, int, 0644); MODULE_PARM_DESC(acp_power_gating, "Enable acp power gating"); +/** + * dmic_acpi_check = -1 - Use ACPI/DMI method to detect the DMIC hardware presence at runtime + * = 0 - Skip the DMIC device creation and return probe failure + * = 1 - Force DMIC support + */ +static int dmic_acpi_check = ACP_DMIC_AUTO; +module_param(dmic_acpi_check, bint, 0644); +MODULE_PARM_DESC(dmic_acpi_check, "Digital microphone presence (-1=auto, 0=none, 1=force)"); + struct acp_dev_data { void __iomem *acp_base; struct resource *res; @@ -152,15 +163,56 @@ return 0; } +static const struct dmi_system_id rn_acp_quirk_table[] = { + { + /* Lenovo IdeaPad S340-14API */ + .matches = { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81NB"), + } + }, + { + /* Lenovo IdeaPad Flex 5 14ARE05 */ + .matches = { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81X2"), + } + }, + { + /* Lenovo IdeaPad 5 15ARE05 */ + .matches = { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81YQ"), + } + }, + { + /* Lenovo ThinkPad X395 */ + .matches = { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "20NLCTO1WW"), + } + }, + {} +}; + static int snd_rn_acp_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { struct acp_dev_data *adata; struct platform_device_info pdevinfo[ACP_DEVS]; +#if defined(CONFIG_ACPI) + acpi_handle handle; + acpi_integer dmic_status; +#endif + const struct dmi_system_id *dmi_id; unsigned int irqflags; int ret, index; u32 addr; + /* Renoir device check */ + if (pci->revision != 0x01) + return -ENODEV; + if (pci_enable_device(pci)) { dev_err(&pci->dev, "pci_enable_device failed\n"); return -ENODEV; @@ -201,6 +253,30 @@ if (ret) goto disable_msi; + if (!dmic_acpi_check) { + ret = -ENODEV; + goto de_init; + } else if (dmic_acpi_check == ACP_DMIC_AUTO) { +#if defined(CONFIG_ACPI) + handle = ACPI_HANDLE(&pci->dev); + ret = acpi_evaluate_integer(handle, "_WOV", NULL, &dmic_status); + if (ACPI_FAILURE(ret)) { + ret = -EINVAL; + goto de_init; + } + if (!dmic_status) { + ret = -ENODEV; + goto de_init; + } +#endif + dmi_id = dmi_first_match(rn_acp_quirk_table); + if (dmi_id && !dmi_id->driver_data) { + dev_info(&pci->dev, "ACPI settings override using DMI (ACP mic is not present)"); + ret = -ENODEV; + goto de_init; + } + } + adata->res = devm_kzalloc(&pci->dev, sizeof(struct resource) * 2, GFP_KERNEL); --- linux-5.8.0.orig/sound/soc/amd/renoir/rn_acp3x.h +++ linux-5.8.0/sound/soc/amd/renoir/rn_acp3x.h @@ -55,6 +55,8 @@ #define MAX_BUFFER (CAPTURE_MAX_PERIOD_SIZE * CAPTURE_MAX_NUM_PERIODS) #define MIN_BUFFER MAX_BUFFER +#define ACP_DMIC_AUTO -1 + struct pdm_dev_data { u32 pdm_irq; void __iomem *acp_base; --- linux-5.8.0.orig/sound/soc/codecs/Kconfig +++ linux-5.8.0/sound/soc/codecs/Kconfig @@ -539,6 +539,7 @@ config SND_SOC_CROS_EC_CODEC tristate "codec driver for ChromeOS EC" depends on CROS_EC + select CRYPTO select CRYPTO_LIB_SHA256 help If you say yes here you will get support for the --- linux-5.8.0.orig/sound/soc/codecs/ak4458.c +++ linux-5.8.0/sound/soc/codecs/ak4458.c @@ -523,18 +523,10 @@ .ops = &ak4458_dai_ops, }; -static void ak4458_power_off(struct ak4458_priv *ak4458) +static void ak4458_reset(struct ak4458_priv *ak4458, bool active) { if (ak4458->reset_gpiod) { - gpiod_set_value_cansleep(ak4458->reset_gpiod, 0); - usleep_range(1000, 2000); - } -} - -static void ak4458_power_on(struct ak4458_priv *ak4458) -{ - if (ak4458->reset_gpiod) { - gpiod_set_value_cansleep(ak4458->reset_gpiod, 1); + gpiod_set_value_cansleep(ak4458->reset_gpiod, active); usleep_range(1000, 2000); } } @@ -548,7 +540,7 @@ if (ak4458->mute_gpiod) gpiod_set_value_cansleep(ak4458->mute_gpiod, 1); - ak4458_power_on(ak4458); + ak4458_reset(ak4458, false); ret = snd_soc_component_update_bits(component, AK4458_00_CONTROL1, 0x80, 0x80); /* ACKS bit = 1; 10000000 */ @@ -571,7 +563,7 @@ { struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component); - ak4458_power_off(ak4458); + ak4458_reset(ak4458, true); } #ifdef CONFIG_PM @@ -581,7 +573,7 @@ regcache_cache_only(ak4458->regmap, true); - ak4458_power_off(ak4458); + ak4458_reset(ak4458, true); if (ak4458->mute_gpiod) gpiod_set_value_cansleep(ak4458->mute_gpiod, 0); @@ -596,8 +588,8 @@ if (ak4458->mute_gpiod) gpiod_set_value_cansleep(ak4458->mute_gpiod, 1); - ak4458_power_off(ak4458); - ak4458_power_on(ak4458); + ak4458_reset(ak4458, true); + ak4458_reset(ak4458, false); regcache_cache_only(ak4458->regmap, false); regcache_mark_dirty(ak4458->regmap); @@ -715,6 +707,7 @@ { .compatible = "asahi-kasei,ak4497", .data = &ak4497_drvdata}, { }, }; +MODULE_DEVICE_TABLE(of, ak4458_of_match); static struct i2c_driver ak4458_i2c_driver = { .driver = { --- linux-5.8.0.orig/sound/soc/codecs/ak5558.c +++ linux-5.8.0/sound/soc/codecs/ak5558.c @@ -389,6 +389,7 @@ { .compatible = "asahi-kasei,ak5558"}, { } }; +MODULE_DEVICE_TABLE(of, ak5558_i2c_dt_ids); static struct i2c_driver ak5558_i2c_driver = { .driver = { --- linux-5.8.0.orig/sound/soc/codecs/cpcap.c +++ linux-5.8.0/sound/soc/codecs/cpcap.c @@ -1263,12 +1263,12 @@ if (direction == SNDRV_PCM_STREAM_CAPTURE) { mask = 0x0000; - mask |= CPCAP_BIT_MIC1_RX_TIMESLOT0; - mask |= CPCAP_BIT_MIC1_RX_TIMESLOT1; - mask |= CPCAP_BIT_MIC1_RX_TIMESLOT2; - mask |= CPCAP_BIT_MIC2_TIMESLOT0; - mask |= CPCAP_BIT_MIC2_TIMESLOT1; - mask |= CPCAP_BIT_MIC2_TIMESLOT2; + mask |= BIT(CPCAP_BIT_MIC1_RX_TIMESLOT0); + mask |= BIT(CPCAP_BIT_MIC1_RX_TIMESLOT1); + mask |= BIT(CPCAP_BIT_MIC1_RX_TIMESLOT2); + mask |= BIT(CPCAP_BIT_MIC2_TIMESLOT0); + mask |= BIT(CPCAP_BIT_MIC2_TIMESLOT1); + mask |= BIT(CPCAP_BIT_MIC2_TIMESLOT2); val = 0x0000; if (channels >= 2) val = BIT(CPCAP_BIT_MIC1_RX_TIMESLOT0); --- linux-5.8.0.orig/sound/soc/codecs/cros_ec_codec.c +++ linux-5.8.0/sound/soc/codecs/cros_ec_codec.c @@ -354,7 +354,7 @@ snd_soc_dapm_to_component(w->dapm); struct cros_ec_codec_priv *priv = snd_soc_component_get_drvdata(component); - struct ec_param_ec_codec_i2s_rx p; + struct ec_param_ec_codec_i2s_rx p = {}; switch (event) { case SND_SOC_DAPM_PRE_PMU: --- linux-5.8.0.orig/sound/soc/codecs/cs42l42.c +++ linux-5.8.0/sound/soc/codecs/cs42l42.c @@ -401,7 +401,7 @@ }; static DECLARE_TLV_DB_SCALE(adc_tlv, -9600, 100, false); -static DECLARE_TLV_DB_SCALE(mixer_tlv, -6200, 100, false); +static DECLARE_TLV_DB_SCALE(mixer_tlv, -6300, 100, true); static const char * const cs42l42_hpf_freq_text[] = { "1.86Hz", "120Hz", "235Hz", "466Hz" @@ -458,7 +458,7 @@ CS42L42_DAC_HPF_EN_SHIFT, true, false), SOC_DOUBLE_R_TLV("Mixer Volume", CS42L42_MIXER_CHA_VOL, CS42L42_MIXER_CHB_VOL, CS42L42_MIXER_CH_VOL_SHIFT, - 0x3e, 1, mixer_tlv) + 0x3f, 1, mixer_tlv) }; static int cs42l42_hpdrv_evt(struct snd_soc_dapm_widget *w, @@ -691,24 +691,6 @@ CS42L42_CLK_OASRC_SEL_MASK, CS42L42_CLK_OASRC_SEL_12 << CS42L42_CLK_OASRC_SEL_SHIFT); - /* channel 1 on low LRCLK, 32 bit */ - snd_soc_component_update_bits(component, - CS42L42_ASP_RX_DAI0_CH1_AP_RES, - CS42L42_ASP_RX_CH_AP_MASK | - CS42L42_ASP_RX_CH_RES_MASK, - (CS42L42_ASP_RX_CH_AP_LOW << - CS42L42_ASP_RX_CH_AP_SHIFT) | - (CS42L42_ASP_RX_CH_RES_32 << - CS42L42_ASP_RX_CH_RES_SHIFT)); - /* Channel 2 on high LRCLK, 32 bit */ - snd_soc_component_update_bits(component, - CS42L42_ASP_RX_DAI0_CH2_AP_RES, - CS42L42_ASP_RX_CH_AP_MASK | - CS42L42_ASP_RX_CH_RES_MASK, - (CS42L42_ASP_RX_CH_AP_HI << - CS42L42_ASP_RX_CH_AP_SHIFT) | - (CS42L42_ASP_RX_CH_RES_32 << - CS42L42_ASP_RX_CH_RES_SHIFT)); if (pll_ratio_table[i].mclk_src_sel == 0) { /* Pass the clock straight through */ snd_soc_component_update_bits(component, @@ -797,27 +779,23 @@ /* Bitclock/frame inversion */ switch (fmt & SND_SOC_DAIFMT_INV_MASK) { case SND_SOC_DAIFMT_NB_NF: + asp_cfg_val |= CS42L42_ASP_SCPOL_NOR << CS42L42_ASP_SCPOL_SHIFT; break; case SND_SOC_DAIFMT_NB_IF: - asp_cfg_val |= CS42L42_ASP_POL_INV << - CS42L42_ASP_LCPOL_IN_SHIFT; + asp_cfg_val |= CS42L42_ASP_SCPOL_NOR << CS42L42_ASP_SCPOL_SHIFT; + asp_cfg_val |= CS42L42_ASP_LCPOL_INV << CS42L42_ASP_LCPOL_SHIFT; break; case SND_SOC_DAIFMT_IB_NF: - asp_cfg_val |= CS42L42_ASP_POL_INV << - CS42L42_ASP_SCPOL_IN_DAC_SHIFT; break; case SND_SOC_DAIFMT_IB_IF: - asp_cfg_val |= CS42L42_ASP_POL_INV << - CS42L42_ASP_LCPOL_IN_SHIFT; - asp_cfg_val |= CS42L42_ASP_POL_INV << - CS42L42_ASP_SCPOL_IN_DAC_SHIFT; + asp_cfg_val |= CS42L42_ASP_LCPOL_INV << CS42L42_ASP_LCPOL_SHIFT; break; } - snd_soc_component_update_bits(component, CS42L42_ASP_CLK_CFG, - CS42L42_ASP_MODE_MASK | - CS42L42_ASP_SCPOL_IN_DAC_MASK | - CS42L42_ASP_LCPOL_IN_MASK, asp_cfg_val); + snd_soc_component_update_bits(component, CS42L42_ASP_CLK_CFG, CS42L42_ASP_MODE_MASK | + CS42L42_ASP_SCPOL_MASK | + CS42L42_ASP_LCPOL_MASK, + asp_cfg_val); return 0; } @@ -828,14 +806,29 @@ { struct snd_soc_component *component = dai->component; struct cs42l42_private *cs42l42 = snd_soc_component_get_drvdata(component); - int retval; + unsigned int width = (params_width(params) / 8) - 1; + unsigned int val = 0; cs42l42->srate = params_rate(params); - cs42l42->swidth = params_width(params); - retval = cs42l42_pll_config(component); + switch(substream->stream) { + case SNDRV_PCM_STREAM_PLAYBACK: + val |= width << CS42L42_ASP_RX_CH_RES_SHIFT; + /* channel 1 on low LRCLK */ + snd_soc_component_update_bits(component, CS42L42_ASP_RX_DAI0_CH1_AP_RES, + CS42L42_ASP_RX_CH_AP_MASK | + CS42L42_ASP_RX_CH_RES_MASK, val); + /* Channel 2 on high LRCLK */ + val |= CS42L42_ASP_RX_CH_AP_HI << CS42L42_ASP_RX_CH_AP_SHIFT; + snd_soc_component_update_bits(component, CS42L42_ASP_RX_DAI0_CH2_AP_RES, + CS42L42_ASP_RX_CH_AP_MASK | + CS42L42_ASP_RX_CH_RES_MASK, val); + break; + default: + break; + } - return retval; + return cs42l42_pll_config(component); } static int cs42l42_set_sysclk(struct snd_soc_dai *dai, @@ -900,9 +893,9 @@ return 0; } -#define CS42L42_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE | \ - SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE | \ - SNDRV_PCM_FMTBIT_S32_LE) +#define CS42L42_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ + SNDRV_PCM_FMTBIT_S24_LE |\ + SNDRV_PCM_FMTBIT_S32_LE ) static const struct snd_soc_dai_ops cs42l42_ops = { @@ -1803,7 +1796,7 @@ dev_dbg(&i2c_client->dev, "Found reset GPIO\n"); gpiod_set_value_cansleep(cs42l42->reset_gpio, 1); } - mdelay(3); + usleep_range(CS42L42_BOOT_TIME_US, CS42L42_BOOT_TIME_US * 2); /* Request IRQ */ ret = devm_request_threaded_irq(&i2c_client->dev, @@ -1928,6 +1921,7 @@ } gpiod_set_value_cansleep(cs42l42->reset_gpio, 1); + usleep_range(CS42L42_BOOT_TIME_US, CS42L42_BOOT_TIME_US * 2); regcache_cache_only(cs42l42->regmap, false); regcache_sync(cs42l42->regmap); --- linux-5.8.0.orig/sound/soc/codecs/cs42l42.h +++ linux-5.8.0/sound/soc/codecs/cs42l42.h @@ -258,11 +258,12 @@ #define CS42L42_ASP_SLAVE_MODE 0x00 #define CS42L42_ASP_MODE_SHIFT 4 #define CS42L42_ASP_MODE_MASK (1 << CS42L42_ASP_MODE_SHIFT) -#define CS42L42_ASP_SCPOL_IN_DAC_SHIFT 2 -#define CS42L42_ASP_SCPOL_IN_DAC_MASK (1 << CS42L42_ASP_SCPOL_IN_DAC_SHIFT) -#define CS42L42_ASP_LCPOL_IN_SHIFT 0 -#define CS42L42_ASP_LCPOL_IN_MASK (1 << CS42L42_ASP_LCPOL_IN_SHIFT) -#define CS42L42_ASP_POL_INV 1 +#define CS42L42_ASP_SCPOL_SHIFT 2 +#define CS42L42_ASP_SCPOL_MASK (3 << CS42L42_ASP_SCPOL_SHIFT) +#define CS42L42_ASP_SCPOL_NOR 3 +#define CS42L42_ASP_LCPOL_SHIFT 0 +#define CS42L42_ASP_LCPOL_MASK (3 << CS42L42_ASP_LCPOL_SHIFT) +#define CS42L42_ASP_LCPOL_INV 3 #define CS42L42_ASP_FRM_CFG (CS42L42_PAGE_12 + 0x08) #define CS42L42_ASP_STP_SHIFT 4 @@ -739,6 +740,7 @@ #define CS42L42_FRAC2_VAL(val) (((val) & 0xff0000) >> 16) #define CS42L42_NUM_SUPPLIES 5 +#define CS42L42_BOOT_TIME_US 3000 static const char *const cs42l42_supply_names[CS42L42_NUM_SUPPLIES] = { "VA", @@ -756,7 +758,6 @@ struct completion pdn_done; u32 sclk; u32 srate; - u32 swidth; u8 plug_state; u8 hs_type; u8 ts_inv; --- linux-5.8.0.orig/sound/soc/codecs/cs42l51.c +++ linux-5.8.0/sound/soc/codecs/cs42l51.c @@ -245,8 +245,28 @@ &cs42l51_adcr_mux_controls), }; +static int mclk_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_component *comp = snd_soc_dapm_to_component(w->dapm); + struct cs42l51_private *cs42l51 = snd_soc_component_get_drvdata(comp); + + switch (event) { + case SND_SOC_DAPM_PRE_PMU: + return clk_prepare_enable(cs42l51->mclk_handle); + case SND_SOC_DAPM_POST_PMD: + /* Delay mclk shutdown to fulfill power-down sequence requirements */ + msleep(20); + clk_disable_unprepare(cs42l51->mclk_handle); + break; + } + + return 0; +} + static const struct snd_soc_dapm_widget cs42l51_dapm_mclk_widgets[] = { - SND_SOC_DAPM_CLOCK_SUPPLY("MCLK") + SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0, mclk_event, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), }; static const struct snd_soc_dapm_route cs42l51_routes[] = { --- linux-5.8.0.orig/sound/soc/codecs/cs42l56.c +++ linux-5.8.0/sound/soc/codecs/cs42l56.c @@ -1248,6 +1248,7 @@ dev_err(&i2c_client->dev, "CS42L56 Device ID (%X). Expected %X\n", devid, CS42L56_DEVID); + ret = -EINVAL; goto err_enable; } alpha_rev = reg & CS42L56_AREV_MASK; @@ -1305,7 +1306,7 @@ ret = devm_snd_soc_register_component(&i2c_client->dev, &soc_component_dev_cs42l56, &cs42l56_dai, 1); if (ret < 0) - return ret; + goto err_enable; return 0; --- linux-5.8.0.orig/sound/soc/codecs/cx2072x.c +++ linux-5.8.0/sound/soc/codecs/cx2072x.c @@ -1579,7 +1579,7 @@ .id = CX2072X_DAI_DSP, .probe = cx2072x_dsp_dai_probe, .playback = { - .stream_name = "Playback", + .stream_name = "DSP Playback", .channels_min = 2, .channels_max = 2, .rates = CX2072X_RATES_DSP, @@ -1591,7 +1591,7 @@ .name = "cx2072x-aec", .id = 3, .capture = { - .stream_name = "Capture", + .stream_name = "AEC Capture", .channels_min = 2, .channels_max = 2, .rates = CX2072X_RATES_DSP, --- linux-5.8.0.orig/sound/soc/codecs/es8316.c +++ linux-5.8.0/sound/soc/codecs/es8316.c @@ -63,13 +63,8 @@ 1, 1, TLV_DB_SCALE_ITEM(0, 0, 0), 2, 2, TLV_DB_SCALE_ITEM(250, 0, 0), 3, 3, TLV_DB_SCALE_ITEM(450, 0, 0), - 4, 4, TLV_DB_SCALE_ITEM(700, 0, 0), - 5, 5, TLV_DB_SCALE_ITEM(1000, 0, 0), - 6, 6, TLV_DB_SCALE_ITEM(1300, 0, 0), - 7, 7, TLV_DB_SCALE_ITEM(1600, 0, 0), - 8, 8, TLV_DB_SCALE_ITEM(1800, 0, 0), - 9, 9, TLV_DB_SCALE_ITEM(2100, 0, 0), - 10, 10, TLV_DB_SCALE_ITEM(2400, 0, 0), + 4, 7, TLV_DB_SCALE_ITEM(700, 300, 0), + 8, 10, TLV_DB_SCALE_ITEM(1800, 300, 0), ); static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(hpout_vol_tlv, --- linux-5.8.0.orig/sound/soc/codecs/hdac_hda.c +++ linux-5.8.0/sound/soc/codecs/hdac_hda.c @@ -289,7 +289,6 @@ struct hdac_hda_priv *hda_pvt; struct hda_pcm_stream *hda_stream; struct hda_pcm *pcm; - int ret; hda_pvt = snd_soc_component_get_drvdata(component); pcm = snd_soc_find_pcm_from_dai(hda_pvt, dai); @@ -300,11 +299,7 @@ hda_stream = &pcm->stream[substream->stream]; - ret = hda_stream->ops.open(hda_stream, &hda_pvt->codec, substream); - if (ret < 0) - snd_hda_codec_pcm_put(pcm); - - return ret; + return hda_stream->ops.open(hda_stream, &hda_pvt->codec, substream); } static void hdac_hda_dai_close(struct snd_pcm_substream *substream, --- linux-5.8.0.orig/sound/soc/codecs/max98390.c +++ linux-5.8.0/sound/soc/codecs/max98390.c @@ -784,6 +784,7 @@ if (fw->size < MAX98390_DSM_PARAM_MIN_SIZE) { dev_err(component->dev, "param fw is invalid.\n"); + ret = -EINVAL; goto err_alloc; } dsm_param = (char *)fw->data; @@ -794,6 +795,7 @@ fw->size < param_size + MAX98390_DSM_PAYLOAD_OFFSET) { dev_err(component->dev, "param fw is invalid.\n"); + ret = -EINVAL; goto err_alloc; } regmap_write(max98390->regmap, MAX98390_R203A_AMP_EN, 0x80); --- linux-5.8.0.orig/sound/soc/codecs/msm8916-wcd-analog.c +++ linux-5.8.0/sound/soc/codecs/msm8916-wcd-analog.c @@ -19,8 +19,8 @@ #define CDC_D_REVISION1 (0xf000) #define CDC_D_PERPH_SUBTYPE (0xf005) -#define CDC_D_INT_EN_SET (0x015) -#define CDC_D_INT_EN_CLR (0x016) +#define CDC_D_INT_EN_SET (0xf015) +#define CDC_D_INT_EN_CLR (0xf016) #define MBHC_SWITCH_INT BIT(7) #define MBHC_MIC_ELECTRICAL_INS_REM_DET BIT(6) #define MBHC_BUTTON_PRESS_DET BIT(5) --- linux-5.8.0.orig/sound/soc/codecs/pcm3168a.c +++ linux-5.8.0/sound/soc/codecs/pcm3168a.c @@ -306,6 +306,13 @@ struct pcm3168a_priv *pcm3168a = snd_soc_component_get_drvdata(dai->component); int ret; + /* + * Some sound card sets 0 Hz as reset, + * but it is impossible to set. Ignore it here + */ + if (freq == 0) + return 0; + if (freq > PCM3168A_MAX_SYSCLK) return -EINVAL; --- linux-5.8.0.orig/sound/soc/codecs/rt1015.c +++ linux-5.8.0/sound/soc/codecs/rt1015.c @@ -203,6 +203,7 @@ case RT1015_VENDOR_ID: case RT1015_DEVICE_ID: case RT1015_PRO_ALT: + case RT1015_MAN_I2C: case RT1015_DAC3: case RT1015_VBAT_TEST_OUT1: case RT1015_VBAT_TEST_OUT2: --- linux-5.8.0.orig/sound/soc/codecs/rt1308-sdw.c +++ linux-5.8.0/sound/soc/codecs/rt1308-sdw.c @@ -684,8 +684,8 @@ /* Regmap Initialization */ regmap = devm_regmap_init_sdw(slave, &rt1308_sdw_regmap); - if (!regmap) - return -EINVAL; + if (IS_ERR(regmap)) + return PTR_ERR(regmap); rt1308_sdw_init(&slave->dev, regmap, slave); --- linux-5.8.0.orig/sound/soc/codecs/rt5640.c +++ linux-5.8.0/sound/soc/codecs/rt5640.c @@ -339,9 +339,9 @@ } static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0); -static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0); static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); -static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000); static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0); /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */ --- linux-5.8.0.orig/sound/soc/codecs/rt5651.c +++ linux-5.8.0/sound/soc/codecs/rt5651.c @@ -285,9 +285,9 @@ } static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0); -static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0); static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); -static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000); static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0); /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */ --- linux-5.8.0.orig/sound/soc/codecs/rt5659.c +++ linux-5.8.0/sound/soc/codecs/rt5659.c @@ -3463,12 +3463,17 @@ { struct rt5659_priv *rt5659 = snd_soc_component_get_drvdata(component); unsigned int reg_val = 0; + int ret; if (freq == rt5659->sysclk && clk_id == rt5659->sysclk_src) return 0; switch (clk_id) { case RT5659_SCLK_S_MCLK: + ret = clk_set_rate(rt5659->mclk, freq); + if (ret) + return ret; + reg_val |= RT5659_SCLK_SRC_MCLK; break; case RT5659_SCLK_S_PLL1: --- linux-5.8.0.orig/sound/soc/codecs/rt5682-i2c.c +++ linux-5.8.0/sound/soc/codecs/rt5682-i2c.c @@ -268,6 +268,9 @@ { struct rt5682_priv *rt5682 = i2c_get_clientdata(client); + cancel_delayed_work_sync(&rt5682->jack_detect_work); + cancel_delayed_work_sync(&rt5682->jd_check_work); + rt5682_reset(rt5682); } --- linux-5.8.0.orig/sound/soc/codecs/rt700-sdw.c +++ linux-5.8.0/sound/soc/codecs/rt700-sdw.c @@ -452,8 +452,8 @@ /* Regmap Initialization */ sdw_regmap = devm_regmap_init_sdw(slave, &rt700_sdw_regmap); - if (!sdw_regmap) - return -EINVAL; + if (IS_ERR(sdw_regmap)) + return PTR_ERR(sdw_regmap); regmap = devm_regmap_init(&slave->dev, NULL, &slave->dev, &rt700_regmap); --- linux-5.8.0.orig/sound/soc/codecs/rt711-sdw.c +++ linux-5.8.0/sound/soc/codecs/rt711-sdw.c @@ -452,8 +452,8 @@ /* Regmap Initialization */ sdw_regmap = devm_regmap_init_sdw(slave, &rt711_sdw_regmap); - if (!sdw_regmap) - return -EINVAL; + if (IS_ERR(sdw_regmap)) + return PTR_ERR(sdw_regmap); regmap = devm_regmap_init(&slave->dev, NULL, &slave->dev, &rt711_regmap); --- linux-5.8.0.orig/sound/soc/codecs/rt711.c +++ linux-5.8.0/sound/soc/codecs/rt711.c @@ -462,6 +462,8 @@ unsigned int read_ll, read_rl; int i; + mutex_lock(&rt711->calibrate_mutex); + /* Can't use update bit function, so read the original value first */ addr_h = mc->reg; addr_l = mc->rreg; @@ -547,6 +549,8 @@ if (dapm->bias_level <= SND_SOC_BIAS_STANDBY) regmap_write(rt711->regmap, RT711_SET_AUDIO_POWER_STATE, AC_PWRST_D3); + + mutex_unlock(&rt711->calibrate_mutex); return 0; } @@ -859,9 +863,11 @@ break; case SND_SOC_BIAS_STANDBY: + mutex_lock(&rt711->calibrate_mutex); regmap_write(rt711->regmap, RT711_SET_AUDIO_POWER_STATE, AC_PWRST_D3); + mutex_unlock(&rt711->calibrate_mutex); break; default: @@ -889,6 +895,13 @@ return 0; } +static void rt711_remove(struct snd_soc_component *component) +{ + struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); + + regcache_cache_only(rt711->regmap, true); +} + static const struct snd_soc_component_driver soc_codec_dev_rt711 = { .probe = rt711_probe, .set_bias_level = rt711_set_bias_level, @@ -899,6 +912,7 @@ .dapm_routes = rt711_audio_map, .num_dapm_routes = ARRAY_SIZE(rt711_audio_map), .set_jack = rt711_set_jack_detect, + .remove = rt711_remove, }; static int rt711_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, --- linux-5.8.0.orig/sound/soc/codecs/rt715-sdw.c +++ linux-5.8.0/sound/soc/codecs/rt715-sdw.c @@ -527,8 +527,8 @@ /* Regmap Initialization */ sdw_regmap = devm_regmap_init_sdw(slave, &rt715_sdw_regmap); - if (!sdw_regmap) - return -EINVAL; + if (IS_ERR(sdw_regmap)) + return PTR_ERR(sdw_regmap); regmap = devm_regmap_init(&slave->dev, NULL, &slave->dev, &rt715_regmap); --- linux-5.8.0.orig/sound/soc/codecs/sgtl5000.c +++ linux-5.8.0/sound/soc/codecs/sgtl5000.c @@ -71,7 +71,7 @@ { SGTL5000_DAP_EQ_BASS_BAND4, 0x002f }, { SGTL5000_DAP_MAIN_CHAN, 0x8000 }, { SGTL5000_DAP_MIX_CHAN, 0x0000 }, - { SGTL5000_DAP_AVC_CTRL, 0x0510 }, + { SGTL5000_DAP_AVC_CTRL, 0x5100 }, { SGTL5000_DAP_AVC_THRESHOLD, 0x1473 }, { SGTL5000_DAP_AVC_ATTACK, 0x0028 }, { SGTL5000_DAP_AVC_DECAY, 0x0050 }, --- linux-5.8.0.orig/sound/soc/codecs/tas2770.c +++ linux-5.8.0/sound/soc/codecs/tas2770.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include @@ -57,7 +56,12 @@ TAS2770_PWR_CTRL_MASK, TAS2770_PWR_CTRL_ACTIVE); break; - + case SND_SOC_BIAS_STANDBY: + case SND_SOC_BIAS_PREPARE: + snd_soc_component_update_bits(component, + TAS2770_PWR_CTRL, + TAS2770_PWR_CTRL_MASK, TAS2770_PWR_CTRL_MUTE); + break; case SND_SOC_BIAS_OFF: snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, @@ -135,23 +139,18 @@ TAS2770_PWR_CTRL, TAS2770_PWR_CTRL_MASK, TAS2770_PWR_CTRL_MUTE); - if (ret) - goto end; break; case SND_SOC_DAPM_PRE_PMD: ret = snd_soc_component_update_bits(component, TAS2770_PWR_CTRL, TAS2770_PWR_CTRL_MASK, TAS2770_PWR_CTRL_SHUTDOWN); - if (ret) - goto end; break; default: dev_err(tas2770->dev, "Not supported evevt\n"); return -EINVAL; } -end: if (ret < 0) return ret; @@ -243,6 +242,9 @@ return -EINVAL; } + if (ret < 0) + return ret; + tas2770->channel_size = bitwidth; ret = snd_soc_component_update_bits(component, @@ -251,16 +253,15 @@ TAS2770_TDM_CFG_REG5_50_MASK, TAS2770_TDM_CFG_REG5_VSNS_ENABLE | tas2770->v_sense_slot); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG6, TAS2770_TDM_CFG_REG6_ISNS_MASK | TAS2770_TDM_CFG_REG6_50_MASK, TAS2770_TDM_CFG_REG6_ISNS_ENABLE | tas2770->i_sense_slot); - -end: if (ret < 0) return ret; @@ -278,36 +279,35 @@ TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_48KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, TAS2770_TDM_CFG_REG0_31_44_1_48KHZ); - if (ret) - goto end; break; case 44100: ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_44_1KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, TAS2770_TDM_CFG_REG0_31_44_1_48KHZ); - if (ret) - goto end; break; case 96000: ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_48KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, @@ -318,8 +318,9 @@ TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_44_1KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, @@ -330,22 +331,22 @@ TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_48KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, TAS2770_TDM_CFG_REG0_31_176_4_192KHZ); - if (ret) - goto end; break; case 17640: ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_SMP_MASK, TAS2770_TDM_CFG_REG0_SMP_44_1KHZ); - if (ret) - goto end; + if (ret < 0) + return ret; + ret = snd_soc_component_update_bits(component, TAS2770_TDM_CFG_REG0, TAS2770_TDM_CFG_REG0_31_MASK, @@ -355,7 +356,6 @@ ret = -EINVAL; } -end: if (ret < 0) return ret; @@ -574,6 +574,8 @@ tas2770->component = component; + tas2770_reset(tas2770); + return 0; } @@ -700,29 +702,28 @@ rc = fwnode_property_read_u32(dev->fwnode, "ti,asi-format", &tas2770->asi_format); if (rc) { - dev_err(tas2770->dev, "Looking up %s property failed %d\n", - "ti,asi-format", rc); - goto end; + dev_info(tas2770->dev, "Property %s is missing setting default slot\n", + "ti,asi-format"); + tas2770->asi_format = 0; } rc = fwnode_property_read_u32(dev->fwnode, "ti,imon-slot-no", &tas2770->i_sense_slot); if (rc) { - dev_err(tas2770->dev, "Looking up %s property failed %d\n", - "ti,imon-slot-no", rc); - goto end; + dev_info(tas2770->dev, "Property %s is missing setting default slot\n", + "ti,imon-slot-no"); + tas2770->i_sense_slot = 0; } rc = fwnode_property_read_u32(dev->fwnode, "ti,vmon-slot-no", &tas2770->v_sense_slot); if (rc) { - dev_err(tas2770->dev, "Looking up %s property failed %d\n", - "ti,vmon-slot-no", rc); - goto end; + dev_info(tas2770->dev, "Property %s is missing setting default slot\n", + "ti,vmon-slot-no"); + tas2770->v_sense_slot = 2; } -end: - return rc; + return 0; } static int tas2770_i2c_probe(struct i2c_client *client, @@ -758,8 +759,7 @@ } } - tas2770->reset_gpio = devm_gpiod_get_optional(tas2770->dev, - "reset-gpio", + tas2770->reset_gpio = devm_gpiod_get_optional(tas2770->dev, "reset", GPIOD_OUT_HIGH); if (IS_ERR(tas2770->reset_gpio)) { if (PTR_ERR(tas2770->reset_gpio) == -EPROBE_DEFER) { @@ -771,8 +771,6 @@ tas2770->channel_size = 0; tas2770->slot_width = 0; - tas2770_reset(tas2770); - result = tas2770_register_codec(tas2770); if (result) dev_err(tas2770->dev, "Register codec failed.\n"); @@ -781,13 +779,6 @@ return result; } -static int tas2770_i2c_remove(struct i2c_client *client) -{ - pm_runtime_disable(&client->dev); - return 0; -} - - static const struct i2c_device_id tas2770_i2c_id[] = { { "tas2770", 0}, { } @@ -808,7 +799,6 @@ .of_match_table = of_match_ptr(tas2770_of_match), }, .probe = tas2770_i2c_probe, - .remove = tas2770_i2c_remove, .id_table = tas2770_i2c_id, }; --- linux-5.8.0.orig/sound/soc/codecs/tlv320adcx140.c +++ linux-5.8.0/sound/soc/codecs/tlv320adcx140.c @@ -154,7 +154,7 @@ }; /* Digital Volume control. From -100 to 27 dB in 0.5 dB steps */ -static DECLARE_TLV_DB_SCALE(dig_vol_tlv, -10000, 50, 0); +static DECLARE_TLV_DB_SCALE(dig_vol_tlv, -10050, 50, 0); /* ADC gain. From 0 to 42 dB in 1 dB steps */ static DECLARE_TLV_DB_SCALE(adc_tlv, 0, 100, 0); @@ -930,6 +930,8 @@ if (!adcx140) return -ENOMEM; + adcx140->dev = &i2c->dev; + adcx140->gpio_reset = devm_gpiod_get_optional(adcx140->dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(adcx140->gpio_reset)) @@ -957,7 +959,7 @@ ret); return ret; } - adcx140->dev = &i2c->dev; + i2c_set_clientdata(i2c, adcx140); return devm_snd_soc_register_component(&i2c->dev, --- linux-5.8.0.orig/sound/soc/codecs/tlv320aic32x4.c +++ linux-5.8.0/sound/soc/codecs/tlv320aic32x4.c @@ -665,7 +665,7 @@ } static int aic32x4_setup_clocks(struct snd_soc_component *component, - unsigned int sample_rate) + unsigned int sample_rate, unsigned int channels) { u8 aosr; u16 dosr; @@ -753,7 +753,9 @@ dosr); clk_set_rate(clocks[5].clk, - sample_rate * 32); + sample_rate * 32 * + channels); + return 0; } } @@ -775,7 +777,8 @@ u8 iface1_reg = 0; u8 dacsetup_reg = 0; - aic32x4_setup_clocks(component, params_rate(params)); + aic32x4_setup_clocks(component, params_rate(params), + params_channels(params)); switch (params_width(params)) { case 16: --- linux-5.8.0.orig/sound/soc/codecs/wcd9335.c +++ linux-5.8.0/sound/soc/codecs/wcd9335.c @@ -618,7 +618,7 @@ "ZERO", "RX_MIX_TX8", "DEC8", "DEC8_192" }; -static const DECLARE_TLV_DB_SCALE(digital_gain, 0, 1, 0); +static const DECLARE_TLV_DB_SCALE(digital_gain, -8400, 100, -8400); static const DECLARE_TLV_DB_SCALE(line_gain, 0, 7, 1); static const DECLARE_TLV_DB_SCALE(analog_gain, 0, 25, 1); static const DECLARE_TLV_DB_SCALE(ear_pa_gain, 0, 150, 0); --- linux-5.8.0.orig/sound/soc/codecs/wcd934x.c +++ linux-5.8.0/sound/soc/codecs/wcd934x.c @@ -551,7 +551,7 @@ struct soc_bytes_ext bytes_ext; }; -static const DECLARE_TLV_DB_SCALE(digital_gain, 0, 1, 0); +static const DECLARE_TLV_DB_SCALE(digital_gain, -8400, 100, -8400); static const DECLARE_TLV_DB_SCALE(line_gain, 0, 7, 1); static const DECLARE_TLV_DB_SCALE(analog_gain, 0, 25, 1); static const DECLARE_TLV_DB_SCALE(ear_pa_gain, 0, 150, 0); @@ -1873,6 +1873,12 @@ wcd = snd_soc_component_get_drvdata(dai->component); + if (tx_num > WCD934X_TX_MAX || rx_num > WCD934X_RX_MAX) { + dev_err(wcd->dev, "Invalid tx %d or rx %d channel count\n", + tx_num, rx_num); + return -EINVAL; + } + if (!tx_slot || !rx_slot) { dev_err(wcd->dev, "Invalid tx_slot=%p, rx_slot=%p\n", tx_slot, rx_slot); --- linux-5.8.0.orig/sound/soc/codecs/wm8958-dsp2.c +++ linux-5.8.0/sound/soc/codecs/wm8958-dsp2.c @@ -412,8 +412,12 @@ struct snd_kcontrol *kcontrol, int event) { struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct wm8994 *control = dev_get_drvdata(component->dev->parent); int i; + if (control->type != WM8958) + return 0; + switch (event) { case SND_SOC_DAPM_POST_PMU: case SND_SOC_DAPM_PRE_PMU: --- linux-5.8.0.orig/sound/soc/codecs/wm8994.c +++ linux-5.8.0/sound/soc/codecs/wm8994.c @@ -3491,6 +3491,8 @@ return -EINVAL; } + pm_runtime_get_sync(component->dev); + switch (micbias) { case 1: micdet = &wm8994->micdet[0]; @@ -3538,6 +3540,8 @@ snd_soc_dapm_sync(dapm); + pm_runtime_put(component->dev); + return 0; } EXPORT_SYMBOL_GPL(wm8994_mic_detect); @@ -3905,6 +3909,8 @@ return -EINVAL; } + pm_runtime_get_sync(component->dev); + if (jack) { snd_soc_dapm_force_enable_pin(dapm, "CLK_SYS"); snd_soc_dapm_sync(dapm); @@ -3973,6 +3979,8 @@ snd_soc_dapm_sync(dapm); } + pm_runtime_put(component->dev); + return 0; } EXPORT_SYMBOL_GPL(wm8958_mic_detect); @@ -4166,11 +4174,13 @@ wm8994->hubs.dcs_readback_mode = 2; break; } + wm8994->hubs.micd_scthr = true; break; case WM8958: wm8994->hubs.dcs_readback_mode = 1; wm8994->hubs.hp_startup_mode = 1; + wm8994->hubs.micd_scthr = true; switch (control->revision) { case 0: @@ -4600,8 +4610,12 @@ pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); - return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994, + ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8994, wm8994_dai, ARRAY_SIZE(wm8994_dai)); + if (ret < 0) + pm_runtime_disable(&pdev->dev); + + return ret; } static int wm8994_remove(struct platform_device *pdev) --- linux-5.8.0.orig/sound/soc/codecs/wm8997.c +++ linux-5.8.0/sound/soc/codecs/wm8997.c @@ -1177,6 +1177,8 @@ goto err_spk_irqs; } + return ret; + err_spk_irqs: arizona_free_spk_irqs(arizona); --- linux-5.8.0.orig/sound/soc/codecs/wm8998.c +++ linux-5.8.0/sound/soc/codecs/wm8998.c @@ -1375,7 +1375,7 @@ ret = arizona_init_spk_irqs(arizona); if (ret < 0) - return ret; + goto err_pm_disable; ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8998, @@ -1390,6 +1390,8 @@ err_spk_irqs: arizona_free_spk_irqs(arizona); +err_pm_disable: + pm_runtime_disable(&pdev->dev); return ret; } --- linux-5.8.0.orig/sound/soc/codecs/wm_adsp.c +++ linux-5.8.0/sound/soc/codecs/wm_adsp.c @@ -1513,7 +1513,7 @@ ctl_work = kzalloc(sizeof(*ctl_work), GFP_KERNEL); if (!ctl_work) { ret = -ENOMEM; - goto err_ctl_cache; + goto err_list_del; } ctl_work->dsp = dsp; @@ -1523,7 +1523,8 @@ return 0; -err_ctl_cache: +err_list_del: + list_del(&ctl->list); kfree(ctl->cache); err_ctl_subname: kfree(ctl->subname); @@ -1931,6 +1932,7 @@ mem = wm_adsp_find_region(dsp, type); if (!mem) { adsp_err(dsp, "No region of type: %x\n", type); + ret = -EINVAL; goto out_fw; } @@ -2023,11 +2025,14 @@ unsigned int alg) { struct wm_coeff_ctl *pos, *rslt = NULL; + const char *fw_txt = wm_adsp_fw_text[dsp->fw]; list_for_each_entry(pos, &dsp->ctl_list, list) { if (!pos->subname) continue; if (strncmp(pos->subname, name, pos->subname_len) == 0 && + strncmp(pos->fw_name, fw_txt, + SNDRV_CTL_ELEM_ID_NAME_MAXLEN) == 0 && pos->alg_region.alg == alg && pos->alg_region.type == type) { rslt = pos; @@ -2043,6 +2048,7 @@ { struct wm_coeff_ctl *ctl; struct snd_kcontrol *kcontrol; + char ctl_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; int ret; ctl = wm_adsp_get_ctl(dsp, name, type, alg); @@ -2053,8 +2059,25 @@ return -EINVAL; ret = wm_coeff_write_ctrl(ctl, buf, len); + if (ret) + return ret; + + if (ctl->flags & WMFW_CTL_FLAG_SYS) + return 0; + + if (dsp->component->name_prefix) + snprintf(ctl_name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN, "%s %s", + dsp->component->name_prefix, ctl->name); + else + snprintf(ctl_name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN, "%s", + ctl->name); + + kcontrol = snd_soc_card_get_kcontrol(dsp->component->card, ctl_name); + if (!kcontrol) { + adsp_err(dsp, "Can't find kcontrol %s\n", ctl_name); + return -EINVAL; + } - kcontrol = snd_soc_card_get_kcontrol(dsp->component->card, ctl->name); snd_ctl_notify(dsp->component->card->snd_card, SNDRV_CTL_EVENT_MASK_VALUE, &kcontrol->id); --- linux-5.8.0.orig/sound/soc/codecs/wm_hubs.c +++ linux-5.8.0/sound/soc/codecs/wm_hubs.c @@ -1223,6 +1223,9 @@ snd_soc_component_update_bits(component, WM8993_ADDITIONAL_CONTROL, WM8993_LINEOUT2_FB, WM8993_LINEOUT2_FB); + if (!hubs->micd_scthr) + return 0; + snd_soc_component_update_bits(component, WM8993_MICBIAS, WM8993_JD_SCTHR_MASK | WM8993_JD_THR_MASK | WM8993_MICB1_LVL | WM8993_MICB2_LVL, --- linux-5.8.0.orig/sound/soc/codecs/wm_hubs.h +++ linux-5.8.0/sound/soc/codecs/wm_hubs.h @@ -27,6 +27,7 @@ int hp_startup_mode; int series_startup; int no_series_update; + bool micd_scthr; bool no_cache_dac_hp_direct; struct list_head dcs_cache; --- linux-5.8.0.orig/sound/soc/codecs/wsa881x.c +++ linux-5.8.0/sound/soc/codecs/wsa881x.c @@ -640,6 +640,7 @@ .val_bits = 8, .cache_type = REGCACHE_RBTREE, .reg_defaults = wsa881x_defaults, + .max_register = WSA881X_SPKR_STATUS3, .num_reg_defaults = ARRAY_SIZE(wsa881x_defaults), .volatile_reg = wsa881x_volatile_register, .readable_reg = wsa881x_readable_register, @@ -1026,6 +1027,8 @@ .id = 0, .playback = { .stream_name = "SPKR Playback", + .rates = SNDRV_PCM_RATE_48000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, .rate_max = 48000, .rate_min = 48000, .channels_min = 1, --- linux-5.8.0.orig/sound/soc/fsl/fsl_easrc.c +++ linux-5.8.0/sound/soc/fsl/fsl_easrc.c @@ -1133,7 +1133,7 @@ struct fsl_easrc_ctx_priv *ctx_priv = ctx->private; struct fsl_easrc_data_fmt *in_fmt = &ctx_priv->in_params.fmt; struct fsl_easrc_data_fmt *out_fmt = &ctx_priv->out_params.fmt; - int ret; + int ret = 0; /* Get the bitfield values for input data format */ if (in_raw_format && out_raw_format) { --- linux-5.8.0.orig/sound/soc/fsl/fsl_sai.c +++ linux-5.8.0/sound/soc/fsl/fsl_sai.c @@ -680,10 +680,11 @@ regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0); regmap_update_bits(sai->regmap, FSL_SAI_TCR1(ofs), - FSL_SAI_CR1_RFW_MASK, + FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth), sai->soc_data->fifo_depth - FSL_SAI_MAXBURST_TX); regmap_update_bits(sai->regmap, FSL_SAI_RCR1(ofs), - FSL_SAI_CR1_RFW_MASK, FSL_SAI_MAXBURST_RX - 1); + FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth), + FSL_SAI_MAXBURST_RX - 1); snd_soc_dai_init_dma_data(cpu_dai, &sai->dma_params_tx, &sai->dma_params_rx); @@ -693,7 +694,7 @@ return 0; } -static struct snd_soc_dai_driver fsl_sai_dai = { +static struct snd_soc_dai_driver fsl_sai_dai_template = { .probe = fsl_sai_dai_probe, .playback = { .stream_name = "CPU-Playback", @@ -965,12 +966,15 @@ return ret; } + memcpy(&sai->cpu_dai_drv, &fsl_sai_dai_template, + sizeof(fsl_sai_dai_template)); + /* Sync Tx with Rx as default by following old DT binding */ sai->synchronous[RX] = true; sai->synchronous[TX] = false; - fsl_sai_dai.symmetric_rates = 1; - fsl_sai_dai.symmetric_channels = 1; - fsl_sai_dai.symmetric_samplebits = 1; + sai->cpu_dai_drv.symmetric_rates = 1; + sai->cpu_dai_drv.symmetric_channels = 1; + sai->cpu_dai_drv.symmetric_samplebits = 1; if (of_find_property(np, "fsl,sai-synchronous-rx", NULL) && of_find_property(np, "fsl,sai-asynchronous", NULL)) { @@ -987,9 +991,9 @@ /* Discard all settings for asynchronous mode */ sai->synchronous[RX] = false; sai->synchronous[TX] = false; - fsl_sai_dai.symmetric_rates = 0; - fsl_sai_dai.symmetric_channels = 0; - fsl_sai_dai.symmetric_samplebits = 0; + sai->cpu_dai_drv.symmetric_rates = 0; + sai->cpu_dai_drv.symmetric_channels = 0; + sai->cpu_dai_drv.symmetric_samplebits = 0; } if (of_find_property(np, "fsl,sai-mclk-direction-output", NULL) && @@ -1018,7 +1022,7 @@ pm_runtime_enable(&pdev->dev); ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component, - &fsl_sai_dai, 1); + &sai->cpu_dai_drv, 1); if (ret) goto err_pm_disable; --- linux-5.8.0.orig/sound/soc/fsl/fsl_sai.h +++ linux-5.8.0/sound/soc/fsl/fsl_sai.h @@ -94,7 +94,7 @@ #define FSL_SAI_CSR_FRDE BIT(0) /* SAI Transmit and Receive Configuration 1 Register */ -#define FSL_SAI_CR1_RFW_MASK 0x1f +#define FSL_SAI_CR1_RFW_MASK(x) ((x) - 1) /* SAI Transmit and Receive Configuration 2 Register */ #define FSL_SAI_CR2_SYNC BIT(30) @@ -180,6 +180,7 @@ unsigned int bclk_ratio; const struct fsl_sai_soc_data *soc_data; + struct snd_soc_dai_driver cpu_dai_drv; struct snd_dmaengine_dai_dma_data dma_params_rx; struct snd_dmaengine_dai_dma_data dma_params_tx; }; --- linux-5.8.0.orig/sound/soc/fsl/fsl_ssi.c +++ linux-5.8.0/sound/soc/fsl/fsl_ssi.c @@ -873,6 +873,7 @@ static int _fsl_ssi_set_dai_fmt(struct fsl_ssi *ssi, unsigned int fmt) { u32 strcr = 0, scr = 0, stcr, srcr, mask; + unsigned int slots; ssi->dai_fmt = fmt; @@ -904,10 +905,11 @@ return -EINVAL; } + slots = ssi->slots ? : 2; regmap_update_bits(ssi->regs, REG_SSI_STCCR, - SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(2)); + SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(slots)); regmap_update_bits(ssi->regs, REG_SSI_SRCCR, - SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(2)); + SSI_SxCCR_DC_MASK, SSI_SxCCR_DC(slots)); /* Data on rising edge of bclk, frame low, 1clk before data */ strcr |= SSI_STCR_TFSI | SSI_STCR_TSCKP | SSI_STCR_TEFS; --- linux-5.8.0.orig/sound/soc/fsl/imx-es8328.c +++ linux-5.8.0/sound/soc/fsl/imx-es8328.c @@ -145,13 +145,13 @@ data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) { ret = -ENOMEM; - goto fail; + goto put_device; } comp = devm_kzalloc(dev, 3 * sizeof(*comp), GFP_KERNEL); if (!comp) { ret = -ENOMEM; - goto fail; + goto put_device; } data->dev = dev; @@ -182,12 +182,12 @@ ret = snd_soc_of_parse_card_name(&data->card, "model"); if (ret) { dev_err(dev, "Unable to parse card name\n"); - goto fail; + goto put_device; } ret = snd_soc_of_parse_audio_routing(&data->card, "audio-routing"); if (ret) { dev_err(dev, "Unable to parse routing: %d\n", ret); - goto fail; + goto put_device; } data->card.num_links = 1; data->card.owner = THIS_MODULE; @@ -196,10 +196,12 @@ ret = snd_soc_register_card(&data->card); if (ret) { dev_err(dev, "Unable to register: %d\n", ret); - goto fail; + goto put_device; } platform_set_drvdata(pdev, data); +put_device: + put_device(&ssi_pdev->dev); fail: of_node_put(ssi_np); of_node_put(codec_np); --- linux-5.8.0.orig/sound/soc/img/img-i2s-in.c +++ linux-5.8.0/sound/soc/img/img-i2s-in.c @@ -343,8 +343,10 @@ chan_control_mask = IMG_I2S_IN_CH_CTL_CLK_TRANS_MASK; ret = pm_runtime_get_sync(i2s->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(i2s->dev); return ret; + } for (i = 0; i < i2s->active_channels; i++) img_i2s_in_ch_disable(i2s, i); --- linux-5.8.0.orig/sound/soc/img/img-parallel-out.c +++ linux-5.8.0/sound/soc/img/img-parallel-out.c @@ -163,8 +163,10 @@ } ret = pm_runtime_get_sync(prl->dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_noidle(prl->dev); return ret; + } reg = img_prl_out_readl(prl, IMG_PRL_OUT_CTL); reg = (reg & ~IMG_PRL_OUT_CTL_EDGE_MASK) | control_set; --- linux-5.8.0.orig/sound/soc/intel/atom/sst-mfld-platform-pcm.c +++ linux-5.8.0/sound/soc/intel/atom/sst-mfld-platform-pcm.c @@ -331,7 +331,7 @@ ret_val = power_up_sst(stream); if (ret_val < 0) - return ret_val; + goto out_power_up; /* Make sure, that the period size is always even */ snd_pcm_hw_constraint_step(substream->runtime, 0, @@ -340,8 +340,9 @@ return snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS); out_ops: - kfree(stream); mutex_unlock(&sst_lock); +out_power_up: + kfree(stream); return ret_val; } --- linux-5.8.0.orig/sound/soc/intel/boards/bxt_rt298.c +++ linux-5.8.0/sound/soc/intel/boards/bxt_rt298.c @@ -565,6 +565,7 @@ /* broxton audio machine driver for SPT + RT298S */ static struct snd_soc_card broxton_rt298 = { .name = "broxton-rt298", + .owner = THIS_MODULE, .dai_link = broxton_rt298_dais, .num_links = ARRAY_SIZE(broxton_rt298_dais), .controls = broxton_controls, @@ -580,6 +581,7 @@ static struct snd_soc_card geminilake_rt298 = { .name = "geminilake-rt298", + .owner = THIS_MODULE, .dai_link = broxton_rt298_dais, .num_links = ARRAY_SIZE(broxton_rt298_dais), .controls = broxton_controls, --- linux-5.8.0.orig/sound/soc/intel/boards/bytcr_rt5640.c +++ linux-5.8.0/sound/soc/intel/boards/bytcr_rt5640.c @@ -72,6 +72,7 @@ #define BYT_RT5640_SSP0_AIF2 BIT(21) #define BYT_RT5640_MCLK_EN BIT(22) #define BYT_RT5640_MCLK_25MHZ BIT(23) +#define BYT_RT5640_NO_SPEAKERS BIT(24) #define BYTCR_INPUT_DEFAULTS \ (BYT_RT5640_IN3_MAP | \ @@ -133,6 +134,8 @@ dev_info(dev, "quirk JD_NOT_INV enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_MONO_SPEAKER) dev_info(dev, "quirk MONO_SPEAKER enabled\n"); + if (byt_rt5640_quirk & BYT_RT5640_NO_SPEAKERS) + dev_info(dev, "quirk NO_SPEAKERS enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_DIFF_MIC) dev_info(dev, "quirk DIFF_MIC enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_SSP0_AIF1) { @@ -400,6 +403,19 @@ BYT_RT5640_SSP0_AIF1 | BYT_RT5640_MCLK_EN), }, + { /* Acer One 10 S1002 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "One S1002"), + }, + .driver_data = (void *)(BYT_RT5640_IN1_MAP | + BYT_RT5640_JD_SRC_JD2_IN4N | + BYT_RT5640_OVCD_TH_2000UA | + BYT_RT5640_OVCD_SF_0P75 | + BYT_RT5640_DIFF_MIC | + BYT_RT5640_SSP0_AIF2 | + BYT_RT5640_MCLK_EN), + }, { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Acer"), @@ -424,6 +440,18 @@ }, { .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ARCHOS"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ARCHOS 140 CESIUM"), + }, + .driver_data = (void *)(BYT_RT5640_IN1_MAP | + BYT_RT5640_JD_SRC_JD2_IN4N | + BYT_RT5640_OVCD_TH_2000UA | + BYT_RT5640_OVCD_SF_0P75 | + BYT_RT5640_SSP0_AIF1 | + BYT_RT5640_MCLK_EN), + }, + { + .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ME176C"), }, @@ -513,6 +541,16 @@ BYT_RT5640_MONO_SPEAKER | BYT_RT5640_MCLK_EN), }, + { /* Estar Beauty HD MID 7316R */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Estar"), + DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"), + }, + .driver_data = (void *)(BYTCR_INPUT_DEFAULTS | + BYT_RT5640_MONO_SPEAKER | + BYT_RT5640_SSP0_AIF1 | + BYT_RT5640_MCLK_EN), + }, { .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), @@ -521,10 +559,10 @@ .driver_data = (void *)(BYT_RT5640_IN1_MAP | BYT_RT5640_MCLK_EN), }, - { /* HP Pavilion x2 10-n000nd */ + { /* HP Pavilion x2 10-k0XX, 10-n0XX */ .matches = { - DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), - DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"), + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion x2 Detachable"), }, .driver_data = (void *)(BYT_RT5640_DMIC1_MAP | BYT_RT5640_JD_SRC_JD2_IN4N | @@ -533,6 +571,17 @@ BYT_RT5640_SSP0_AIF1 | BYT_RT5640_MCLK_EN), }, + { /* HP Pavilion x2 10-p0XX */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "HP"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP x2 Detachable 10-p0XX"), + }, + .driver_data = (void *)(BYT_RT5640_DMIC1_MAP | + BYT_RT5640_JD_SRC_JD1_IN4P | + BYT_RT5640_OVCD_TH_2000UA | + BYT_RT5640_OVCD_SF_0P75 | + BYT_RT5640_MCLK_EN), + }, { /* HP Stream 7 */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), @@ -591,6 +640,16 @@ BYT_RT5640_SSP0_AIF1 | BYT_RT5640_MCLK_EN), }, + { /* MPMAN Converter 9, similar hw as the I.T.Works TW891 2-in-1 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"), + DMI_MATCH(DMI_PRODUCT_NAME, "Converter9"), + }, + .driver_data = (void *)(BYTCR_INPUT_DEFAULTS | + BYT_RT5640_MONO_SPEAKER | + BYT_RT5640_SSP0_AIF1 | + BYT_RT5640_MCLK_EN), + }, { /* MPMAN MPWIN895CL */ .matches = { @@ -766,6 +825,20 @@ BYT_RT5640_SSP0_AIF2 | BYT_RT5640_MCLK_EN), }, + { /* Voyo Winpad A15 */ + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), + DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"), + /* Above strings are too generic, also match on BIOS date */ + DMI_MATCH(DMI_BIOS_DATE, "11/20/2014"), + }, + .driver_data = (void *)(BYT_RT5640_IN1_MAP | + BYT_RT5640_JD_SRC_JD2_IN4N | + BYT_RT5640_OVCD_TH_2000UA | + BYT_RT5640_OVCD_SF_0P75 | + BYT_RT5640_DIFF_MIC | + BYT_RT5640_MCLK_EN), + }, { /* Catch-all for generic Insyde tablets, must be last */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), @@ -914,7 +987,7 @@ ret = snd_soc_dapm_add_routes(&card->dapm, byt_rt5640_mono_spk_map, ARRAY_SIZE(byt_rt5640_mono_spk_map)); - } else { + } else if (!(byt_rt5640_quirk & BYT_RT5640_NO_SPEAKERS)) { ret = snd_soc_dapm_add_routes(&card->dapm, byt_rt5640_stereo_spk_map, ARRAY_SIZE(byt_rt5640_stereo_spk_map)); @@ -1149,6 +1222,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) { static const char * const map_name[] = { "dmic1", "dmic2", "in1", "in3" }; + __maybe_unused const char *spk_type; const struct dmi_system_id *dmi_id; struct byt_rt5640_private *priv; struct snd_soc_acpi_mach *mach; @@ -1156,7 +1230,7 @@ struct acpi_device *adev; int ret_val = 0; int dai_index = 0; - int i; + int i, cfg_spk; is_bytcr = false; priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); @@ -1295,16 +1369,24 @@ } } + if (byt_rt5640_quirk & BYT_RT5640_NO_SPEAKERS) { + cfg_spk = 0; + spk_type = "none"; + } else if (byt_rt5640_quirk & BYT_RT5640_MONO_SPEAKER) { + cfg_spk = 1; + spk_type = "mono"; + } else { + cfg_spk = 2; + spk_type = "stereo"; + } + snprintf(byt_rt5640_components, sizeof(byt_rt5640_components), - "cfg-spk:%s cfg-mic:%s", - (byt_rt5640_quirk & BYT_RT5640_MONO_SPEAKER) ? "1" : "2", + "cfg-spk:%d cfg-mic:%s", cfg_spk, map_name[BYT_RT5640_MAP(byt_rt5640_quirk)]); byt_rt5640_card.components = byt_rt5640_components; #if !IS_ENABLED(CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES) snprintf(byt_rt5640_long_name, sizeof(byt_rt5640_long_name), - "bytcr-rt5640-%s-spk-%s-mic", - (byt_rt5640_quirk & BYT_RT5640_MONO_SPEAKER) ? - "mono" : "stereo", + "bytcr-rt5640-%s-spk-%s-mic", spk_type, map_name[BYT_RT5640_MAP(byt_rt5640_quirk)]); byt_rt5640_card.long_name = byt_rt5640_long_name; #endif --- linux-5.8.0.orig/sound/soc/intel/boards/bytcr_rt5651.c +++ linux-5.8.0/sound/soc/intel/boards/bytcr_rt5651.c @@ -436,6 +436,19 @@ BYT_RT5651_MONO_SPEAKER), }, { + /* Jumper EZpad 7 */ + .callback = byt_rt5651_quirk_cb, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Jumper"), + DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"), + /* Jumper12x.WJ2012.bsBKRCP05 with the version dropped */ + DMI_MATCH(DMI_BIOS_VERSION, "Jumper12x.WJ2012.bsBKRCP"), + }, + .driver_data = (void *)(BYT_RT5651_DEFAULT_QUIRKS | + BYT_RT5651_IN2_MAP | + BYT_RT5651_JD_NOT_INV), + }, + { /* KIANO SlimNote 14.2 */ .callback = byt_rt5651_quirk_cb, .matches = { --- linux-5.8.0.orig/sound/soc/intel/boards/cml_rt1011_rt5682.c +++ linux-5.8.0/sound/soc/intel/boards/cml_rt1011_rt5682.c @@ -34,7 +34,6 @@ #define SOF_RT1011_SPEAKER_WR BIT(1) #define SOF_RT1011_SPEAKER_TL BIT(2) #define SOF_RT1011_SPEAKER_TR BIT(3) -#define SPK_CH 4 /* Default: Woofer speakers */ static unsigned long sof_rt1011_quirk = SOF_RT1011_SPEAKER_WL | @@ -376,10 +375,17 @@ SND_SOC_DAILINK_DEF(ssp1_pin, DAILINK_COMP_ARRAY(COMP_CPU("SSP1 Pin"))); -SND_SOC_DAILINK_DEF(ssp1_codec, +SND_SOC_DAILINK_DEF(ssp1_codec_2spk, DAILINK_COMP_ARRAY( /* WL */ COMP_CODEC("i2c-10EC1011:00", CML_RT1011_CODEC_DAI), /* WR */ COMP_CODEC("i2c-10EC1011:01", CML_RT1011_CODEC_DAI))); +SND_SOC_DAILINK_DEF(ssp1_codec_4spk, + DAILINK_COMP_ARRAY( + /* WL */ COMP_CODEC("i2c-10EC1011:00", CML_RT1011_CODEC_DAI), + /* WR */ COMP_CODEC("i2c-10EC1011:01", CML_RT1011_CODEC_DAI), + /* TL */ COMP_CODEC("i2c-10EC1011:02", CML_RT1011_CODEC_DAI), + /* TR */ COMP_CODEC("i2c-10EC1011:03", CML_RT1011_CODEC_DAI))); + SND_SOC_DAILINK_DEF(dmic_pin, DAILINK_COMP_ARRAY(COMP_CPU("DMIC01 Pin"))); @@ -475,7 +481,7 @@ .no_pcm = 1, .init = cml_rt1011_spk_init, .ops = &cml_rt1011_ops, - SND_SOC_DAILINK_REG(ssp1_pin, ssp1_codec, platform), + SND_SOC_DAILINK_REG(ssp1_pin, ssp1_codec_2spk, platform), }, }; @@ -488,11 +494,21 @@ .dlc = COMP_CODEC_CONF("i2c-10EC1011:01"), .name_prefix = "WR", }, + /* single configuration structure for 2 and 4 channels */ + { + .dlc = COMP_CODEC_CONF("i2c-10EC1011:02"), + .name_prefix = "TL", + }, + { + .dlc = COMP_CODEC_CONF("i2c-10EC1011:03"), + .name_prefix = "TR", + }, }; /* Cometlake audio machine driver for RT1011 and RT5682 */ static struct snd_soc_card snd_soc_card_cml = { .name = "cml_rt1011_rt5682", + .owner = THIS_MODULE, .dai_link = cml_rt1011_rt5682_dailink, .num_links = ARRAY_SIZE(cml_rt1011_rt5682_dailink), .codec_conf = rt1011_conf, @@ -509,8 +525,6 @@ static int snd_cml_rt1011_probe(struct platform_device *pdev) { - struct snd_soc_dai_link_component *rt1011_dais_components; - struct snd_soc_codec_conf *rt1011_dais_confs; struct card_private *ctx; struct snd_soc_acpi_mach *mach; const char *platform_name; @@ -529,65 +543,15 @@ dev_info(&pdev->dev, "sof_rt1011_quirk = %lx\n", sof_rt1011_quirk); + /* when 4 speaker is available, update codec config */ if (sof_rt1011_quirk & (SOF_RT1011_SPEAKER_TL | SOF_RT1011_SPEAKER_TR)) { - rt1011_dais_confs = devm_kzalloc(&pdev->dev, - sizeof(struct snd_soc_codec_conf) * - SPK_CH, GFP_KERNEL); - - if (!rt1011_dais_confs) - return -ENOMEM; - - rt1011_dais_components = devm_kzalloc(&pdev->dev, - sizeof(struct snd_soc_dai_link_component) * - SPK_CH, GFP_KERNEL); - - if (!rt1011_dais_components) - return -ENOMEM; - - for (i = 0; i < SPK_CH; i++) { - rt1011_dais_confs[i].dlc.name = devm_kasprintf(&pdev->dev, - GFP_KERNEL, - "i2c-10EC1011:0%d", - i); - - if (!rt1011_dais_confs[i].dlc.name) - return -ENOMEM; - - switch (i) { - case 0: - rt1011_dais_confs[i].name_prefix = "WL"; - break; - case 1: - rt1011_dais_confs[i].name_prefix = "WR"; - break; - case 2: - rt1011_dais_confs[i].name_prefix = "TL"; - break; - case 3: - rt1011_dais_confs[i].name_prefix = "TR"; - break; - default: - return -EINVAL; - } - rt1011_dais_components[i].name = devm_kasprintf(&pdev->dev, - GFP_KERNEL, - "i2c-10EC1011:0%d", - i); - if (!rt1011_dais_components[i].name) - return -ENOMEM; - - rt1011_dais_components[i].dai_name = CML_RT1011_CODEC_DAI; - } - - snd_soc_card_cml.codec_conf = rt1011_dais_confs; - snd_soc_card_cml.num_configs = SPK_CH; - for (i = 0; i < ARRAY_SIZE(cml_rt1011_rt5682_dailink); i++) { if (!strcmp(cml_rt1011_rt5682_dailink[i].codecs->dai_name, - CML_RT1011_CODEC_DAI)) { - cml_rt1011_rt5682_dailink[i].codecs = rt1011_dais_components; - cml_rt1011_rt5682_dailink[i].num_codecs = SPK_CH; + CML_RT1011_CODEC_DAI)) { + cml_rt1011_rt5682_dailink[i].codecs = ssp1_codec_4spk; + cml_rt1011_rt5682_dailink[i].num_codecs = + ARRAY_SIZE(ssp1_codec_4spk); } } } --- linux-5.8.0.orig/sound/soc/intel/boards/haswell.c +++ linux-5.8.0/sound/soc/intel/boards/haswell.c @@ -205,6 +205,7 @@ .probe = haswell_audio_probe, .driver = { .name = "haswell-audio", + .pm = &snd_soc_pm_ops, }, }; --- linux-5.8.0.orig/sound/soc/intel/boards/kbl_rt5663_max98927.c +++ linux-5.8.0/sound/soc/intel/boards/kbl_rt5663_max98927.c @@ -401,17 +401,40 @@ struct snd_interval *chan = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); struct snd_mask *fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); - struct snd_soc_dpcm *dpcm = container_of( - params, struct snd_soc_dpcm, hw_params); - struct snd_soc_dai_link *fe_dai_link = dpcm->fe->dai_link; - struct snd_soc_dai_link *be_dai_link = dpcm->be->dai_link; + struct snd_soc_dpcm *dpcm, *rtd_dpcm = NULL; + + /* + * The following loop will be called only for playback stream + * In this platform, there is only one playback device on every SSP + */ + for_each_dpcm_fe(rtd, SNDRV_PCM_STREAM_PLAYBACK, dpcm) { + rtd_dpcm = dpcm; + break; + } + + /* + * This following loop will be called only for capture stream + * In this platform, there is only one capture device on every SSP + */ + for_each_dpcm_fe(rtd, SNDRV_PCM_STREAM_CAPTURE, dpcm) { + rtd_dpcm = dpcm; + break; + } + + if (!rtd_dpcm) + return -EINVAL; + + /* + * The above 2 loops are mutually exclusive based on the stream direction, + * thus rtd_dpcm variable will never be overwritten + */ /* * The ADSP will convert the FE rate to 48k, stereo, 24 bit */ - if (!strcmp(fe_dai_link->name, "Kbl Audio Port") || - !strcmp(fe_dai_link->name, "Kbl Audio Headset Playback") || - !strcmp(fe_dai_link->name, "Kbl Audio Capture Port")) { + if (!strcmp(rtd_dpcm->fe->dai_link->name, "Kbl Audio Port") || + !strcmp(rtd_dpcm->fe->dai_link->name, "Kbl Audio Headset Playback") || + !strcmp(rtd_dpcm->fe->dai_link->name, "Kbl Audio Capture Port")) { rate->min = rate->max = 48000; chan->min = chan->max = 2; snd_mask_none(fmt); @@ -421,7 +444,7 @@ * The speaker on the SSP0 supports S16_LE and not S24_LE. * thus changing the mask here */ - if (!strcmp(be_dai_link->name, "SSP0-Codec")) + if (!strcmp(rtd_dpcm->be->dai_link->name, "SSP0-Codec")) snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S16_LE); return 0; --- linux-5.8.0.orig/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c +++ linux-5.8.0/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c @@ -677,6 +677,8 @@ switch (level) { case SND_SOC_BIAS_PREPARE: if (dapm->bias_level == SND_SOC_BIAS_ON) { + if (!__clk_is_enabled(priv->mclk)) + return 0; dev_dbg(card->dev, "Disable mclk"); clk_disable_unprepare(priv->mclk); } else { --- linux-5.8.0.orig/sound/soc/intel/boards/skl_hda_dsp_common.h +++ linux-5.8.0/sound/soc/intel/boards/skl_hda_dsp_common.h @@ -33,6 +33,7 @@ int dai_index; const char *platform_name; bool common_hdmi_codec_drv; + bool idisp_codec; }; extern struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS]; --- linux-5.8.0.orig/sound/soc/intel/boards/skl_hda_dsp_generic.c +++ linux-5.8.0/sound/soc/intel/boards/skl_hda_dsp_generic.c @@ -79,6 +79,9 @@ link->platforms->name = ctx->platform_name; link->nonatomic = 1; + if (!ctx->idisp_codec) + return 0; + if (strstr(link->name, "HDMI")) { ret = skl_hda_hdmi_add_pcm(card, ctx->pcm_count); @@ -118,19 +121,20 @@ static int skl_hda_fill_card_info(struct snd_soc_acpi_mach_params *mach_params) { struct snd_soc_card *card = &hda_soc_card; + struct skl_hda_private *ctx = snd_soc_card_get_drvdata(card); struct snd_soc_dai_link *dai_link; - u32 codec_count, codec_mask, idisp_mask; + u32 codec_count, codec_mask; int i, num_links, num_route; codec_mask = mach_params->codec_mask; codec_count = hweight_long(codec_mask); - idisp_mask = codec_mask & IDISP_CODEC_MASK; + ctx->idisp_codec = !!(codec_mask & IDISP_CODEC_MASK); if (!codec_count || codec_count > 2 || - (codec_count == 2 && !idisp_mask)) + (codec_count == 2 && !ctx->idisp_codec)) return -EINVAL; - if (codec_mask == idisp_mask) { + if (codec_mask == IDISP_CODEC_MASK) { /* topology with iDisp as the only HDA codec */ num_links = IDISP_DAI_COUNT + DMIC_DAI_COUNT; num_route = IDISP_ROUTE_COUNT; @@ -152,7 +156,7 @@ num_route = ARRAY_SIZE(skl_hda_map); card->dapm_widgets = skl_hda_widgets; card->num_dapm_widgets = ARRAY_SIZE(skl_hda_widgets); - if (!idisp_mask) { + if (!ctx->idisp_codec) { for (i = 0; i < IDISP_DAI_COUNT; i++) { skl_hda_be_dai_links[i].codecs = dummy_codec; skl_hda_be_dai_links[i].num_codecs = @@ -177,7 +181,7 @@ struct snd_soc_dai *dai; for_each_card_rtds(card, rtd) { - if (!strstr(rtd->dai_link->codecs->name, "ehdaudio")) + if (!strstr(rtd->dai_link->codecs->name, "ehdaudio0D0")) continue; dai = asoc_rtd_to_codec(rtd, 0); hda_pvt = snd_soc_component_get_drvdata(dai->component); @@ -211,6 +215,8 @@ if (!mach) return -EINVAL; + snd_soc_card_set_drvdata(&hda_soc_card, ctx); + ret = skl_hda_fill_card_info(&mach->mach_params); if (ret < 0) { dev_err(&pdev->dev, "Unsupported HDAudio/iDisp configuration found\n"); @@ -223,7 +229,6 @@ ctx->common_hdmi_codec_drv = mach->mach_params.common_hdmi_codec_drv; hda_soc_card.dev = &pdev->dev; - snd_soc_card_set_drvdata(&hda_soc_card, ctx); if (mach->mach_params.dmic_num > 0) { snprintf(hda_soc_components, sizeof(hda_soc_components), --- linux-5.8.0.orig/sound/soc/intel/boards/sof_rt5682.c +++ linux-5.8.0/sound/soc/intel/boards/sof_rt5682.c @@ -118,6 +118,19 @@ .driver_data = (void *)(SOF_RT5682_MCLK_EN | SOF_RT5682_SSP_CODEC(0)), }, + { + .callback = sof_rt5682_quirk_cb, + .matches = { + DMI_MATCH(DMI_PRODUCT_FAMILY, "Google_Volteer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Terrador"), + }, + .driver_data = (void *)(SOF_RT5682_MCLK_EN | + SOF_RT5682_SSP_CODEC(0) | + SOF_SPEAKER_AMP_PRESENT | + SOF_MAX98373_SPEAKER_AMP_PRESENT | + SOF_RT5682_SSP_AMP(2) | + SOF_RT5682_NUM_HDMIDEV(4)), + }, {} }; --- linux-5.8.0.orig/sound/soc/intel/boards/sof_sdw.c +++ linux-5.8.0/sound/soc/intel/boards/sof_sdw.c @@ -29,6 +29,17 @@ .callback = sof_sdw_quirk_cb, .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), + DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0A32") + }, + .driver_data = (void *)(SOF_SDW_TGL_HDMI | + SOF_RT711_JD_SRC_JD2 | + SOF_RT715_DAI_ID_FIX | + SOF_SDW_FOUR_SPK), + }, + { + .callback = sof_sdw_quirk_cb, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "09C6") }, .driver_data = (void *)(SOF_RT711_JD_SRC_JD2 | @@ -48,6 +59,17 @@ .callback = sof_sdw_quirk_cb, .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), + DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0A5E") + }, + .driver_data = (void *)(SOF_SDW_TGL_HDMI | + SOF_RT711_JD_SRC_JD2 | + SOF_RT715_DAI_ID_FIX | + SOF_SDW_FOUR_SPK), + }, + { + .callback = sof_sdw_quirk_cb, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "098F"), }, .driver_data = (void *)(SOF_RT711_JD_SRC_JD2 | @@ -184,6 +206,7 @@ .direction = {true, true}, .dai_name = "rt711-aif1", .init = sof_sdw_rt711_init, + .exit = sof_sdw_rt711_exit, }, { .id = 0x1308, @@ -707,7 +730,7 @@ } /* enable dmic01 & dmic16k */ - dmic_num = (sof_sdw_quirk & SOF_SDW_PCH_DMIC) ? 2 : 0; + dmic_num = (sof_sdw_quirk & SOF_SDW_PCH_DMIC || mach_params->dmic_num) ? 2 : 0; comp_num += dmic_num; dev_dbg(dev, "sdw %d, ssp %d, dmic %d, hdmi %d", sdw_be_num, ssp_num, @@ -893,6 +916,7 @@ static struct snd_soc_card card_sof_sdw = { .name = "soundwire", + .owner = THIS_MODULE, .late_probe = sof_sdw_hdmi_card_late_probe, .codec_conf = codec_conf, .num_configs = ARRAY_SIZE(codec_conf), --- linux-5.8.0.orig/sound/soc/intel/boards/sof_sdw_common.h +++ linux-5.8.0/sound/soc/intel/boards/sof_sdw_common.h @@ -84,6 +84,7 @@ struct snd_soc_dai_link *dai_links, struct sof_sdw_codec_info *info, bool playback); +int sof_sdw_rt711_exit(struct device *dev, struct snd_soc_dai_link *dai_link); /* RT700 support */ int sof_sdw_rt700_init(const struct snd_soc_acpi_link_adr *link, --- linux-5.8.0.orig/sound/soc/intel/boards/sof_sdw_rt711.c +++ linux-5.8.0/sound/soc/intel/boards/sof_sdw_rt711.c @@ -133,6 +133,21 @@ return ret; } +int sof_sdw_rt711_exit(struct device *dev, struct snd_soc_dai_link *dai_link) +{ + struct device *sdw_dev; + + sdw_dev = bus_find_device_by_name(&sdw_bus_type, NULL, + dai_link->codecs[0].name); + if (!sdw_dev) + return -EINVAL; + + device_remove_properties(sdw_dev); + put_device(sdw_dev); + + return 0; +} + int sof_sdw_rt711_init(const struct snd_soc_acpi_link_adr *link, struct snd_soc_dai_link *dai_links, struct sof_sdw_codec_info *info, --- linux-5.8.0.orig/sound/soc/intel/common/soc-intel-quirks.h +++ linux-5.8.0/sound/soc/intel/common/soc-intel-quirks.h @@ -11,6 +11,7 @@ #if IS_ENABLED(CONFIG_X86) +#include #include #include #include @@ -38,12 +39,36 @@ static inline bool soc_intel_is_byt_cr(struct platform_device *pdev) { + /* + * List of systems which: + * 1. Use a non CR version of the Bay Trail SoC + * 2. Contain at least 6 interrupt resources so that the + * platform_get_resource(pdev, IORESOURCE_IRQ, 5) check below + * succeeds + * 3. Despite 1. and 2. still have their IPC IRQ at index 0 rather then 5 + * + * This needs to be here so that it can be shared between the SST and + * SOF drivers. We rely on the compiler to optimize this out in files + * where soc_intel_is_byt_cr is not used. + */ + static const struct dmi_system_id force_bytcr_table[] = { + { /* Lenovo Yoga Tablet 2 series */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_FAMILY, "YOGATablet2"), + }, + }, + {} + }; struct device *dev = &pdev->dev; int status = 0; if (!soc_intel_is_byt()) return false; + if (dmi_check_system(force_bytcr_table)) + return true; + if (iosf_mbi_available()) { u32 bios_status; --- linux-5.8.0.orig/sound/soc/intel/haswell/sst-haswell-dsp.c +++ linux-5.8.0/sound/soc/intel/haswell/sst-haswell-dsp.c @@ -243,92 +243,45 @@ return ret; } -#define CSR_DEFAULT_VALUE 0x8480040E -#define ISC_DEFAULT_VALUE 0x0 -#define ISD_DEFAULT_VALUE 0x0 -#define IMC_DEFAULT_VALUE 0x7FFF0003 -#define IMD_DEFAULT_VALUE 0x7FFF0003 -#define IPCC_DEFAULT_VALUE 0x0 -#define IPCD_DEFAULT_VALUE 0x0 -#define CLKCTL_DEFAULT_VALUE 0x7FF -#define CSR2_DEFAULT_VALUE 0x0 -#define LTR_CTRL_DEFAULT_VALUE 0x0 -#define HMD_CTRL_DEFAULT_VALUE 0x0 - -static void hsw_set_shim_defaults(struct sst_dsp *sst) -{ - sst_dsp_shim_write_unlocked(sst, SST_CSR, CSR_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_ISRX, ISC_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_ISRD, ISD_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_IMRX, IMC_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_IMRD, IMD_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_IPCX, IPCC_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_IPCD, IPCD_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_CLKCTL, CLKCTL_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_CSR2, CSR2_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_LTRC, LTR_CTRL_DEFAULT_VALUE); - sst_dsp_shim_write_unlocked(sst, SST_HMDC, HMD_CTRL_DEFAULT_VALUE); -} - -/* all clock-gating minus DCLCGE and DTCGE */ -#define SST_VDRTCL2_CG_OTHER 0xB7D - static void hsw_set_dsp_D3(struct sst_dsp *sst) { + u32 val; u32 reg; - /* disable clock core gating */ + /* Disable core clock gating (VDRTCTL2.DCLCGE = 0) */ reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg &= ~(SST_VDRTCL2_DCLCGE); + reg &= ~(SST_VDRTCL2_DCLCGE | SST_VDRTCL2_DTCGE); writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - /* stall, reset and set 24MHz XOSC */ - sst_dsp_shim_update_bits_unlocked(sst, SST_CSR, - SST_CSR_24MHZ_LPCS | SST_CSR_STALL | SST_CSR_RST, - SST_CSR_24MHZ_LPCS | SST_CSR_STALL | SST_CSR_RST); + /* enable power gating and switch off DRAM & IRAM blocks */ + val = readl(sst->addr.pci_cfg + SST_VDRTCTL0); + val |= SST_VDRTCL0_DSRAMPGE_MASK | + SST_VDRTCL0_ISRAMPGE_MASK; + val &= ~(SST_VDRTCL0_D3PGD | SST_VDRTCL0_D3SRAMPGD); + writel(val, sst->addr.pci_cfg + SST_VDRTCTL0); - /* DRAM power gating all */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL0); - reg |= SST_VDRTCL0_ISRAMPGE_MASK | - SST_VDRTCL0_DSRAMPGE_MASK; - reg &= ~(SST_VDRTCL0_D3SRAMPGD); - reg |= SST_VDRTCL0_D3PGD; - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL0); - udelay(50); - - /* PLL shutdown enable */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_APLLSE_MASK; - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); + /* switch off audio PLL */ + val = readl(sst->addr.pci_cfg + SST_VDRTCTL2); + val |= SST_VDRTCL2_APLLSE_MASK; + writel(val, sst->addr.pci_cfg + SST_VDRTCTL2); - /* disable MCLK */ + /* disable MCLK(clkctl.smos = 0) */ sst_dsp_shim_update_bits_unlocked(sst, SST_CLKCTL, - SST_CLKCTL_MASK, 0); + SST_CLKCTL_MASK, 0); - /* switch clock gating */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_CG_OTHER; - reg &= ~(SST_VDRTCL2_DTCGE); - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - /* enable DTCGE separatelly */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_DTCGE; - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - - /* set shim defaults */ - hsw_set_shim_defaults(sst); - - /* set D3 */ - reg = readl(sst->addr.pci_cfg + SST_PMCS); - reg |= SST_PMCS_PS_MASK; - writel(reg, sst->addr.pci_cfg + SST_PMCS); + /* Set D3 state, delay 50 us */ + val = readl(sst->addr.pci_cfg + SST_PMCS); + val |= SST_PMCS_PS_MASK; + writel(val, sst->addr.pci_cfg + SST_PMCS); udelay(50); - /* enable clock core gating */ + /* Enable core clock gating (VDRTCTL2.DCLCGE = 1), delay 50 us */ reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_DCLCGE; + reg |= SST_VDRTCL2_DCLCGE | SST_VDRTCL2_DTCGE; writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); + udelay(50); + } static void hsw_reset(struct sst_dsp *sst) @@ -346,62 +299,75 @@ SST_CSR_RST | SST_CSR_STALL, SST_CSR_STALL); } -/* recommended CSR state for power-up */ -#define SST_CSR_D0_MASK (0x18A09C0C | SST_CSR_DCS_MASK) - static int hsw_set_dsp_D0(struct sst_dsp *sst) { - u32 reg; + int tries = 10; + u32 reg, fw_dump_bit; - /* disable clock core gating */ + /* Disable core clock gating (VDRTCTL2.DCLCGE = 0) */ reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg &= ~(SST_VDRTCL2_DCLCGE); + reg &= ~(SST_VDRTCL2_DCLCGE | SST_VDRTCL2_DTCGE); writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - /* switch clock gating */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_CG_OTHER; - reg &= ~(SST_VDRTCL2_DTCGE); - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); + /* Disable D3PG (VDRTCTL0.D3PGD = 1) */ + reg = readl(sst->addr.pci_cfg + SST_VDRTCTL0); + reg |= SST_VDRTCL0_D3PGD; + writel(reg, sst->addr.pci_cfg + SST_VDRTCTL0); - /* set D0 */ + /* Set D0 state */ reg = readl(sst->addr.pci_cfg + SST_PMCS); - reg &= ~(SST_PMCS_PS_MASK); + reg &= ~SST_PMCS_PS_MASK; writel(reg, sst->addr.pci_cfg + SST_PMCS); - /* DRAM power gating none */ - reg = readl(sst->addr.pci_cfg + SST_VDRTCTL0); - reg &= ~(SST_VDRTCL0_ISRAMPGE_MASK | - SST_VDRTCL0_DSRAMPGE_MASK); - reg |= SST_VDRTCL0_D3SRAMPGD; - reg |= SST_VDRTCL0_D3PGD; - writel(reg, sst->addr.pci_cfg + SST_VDRTCTL0); - mdelay(10); + /* check that ADSP shim is enabled */ + while (tries--) { + reg = readl(sst->addr.pci_cfg + SST_PMCS) & SST_PMCS_PS_MASK; + if (reg == 0) + goto finish; + + msleep(1); + } - /* set shim defaults */ - hsw_set_shim_defaults(sst); + return -ENODEV; - /* restore MCLK */ +finish: + /* select SSP1 19.2MHz base clock, SSP clock 0, turn off Low Power Clock */ + sst_dsp_shim_update_bits_unlocked(sst, SST_CSR, + SST_CSR_S1IOCS | SST_CSR_SBCS1 | SST_CSR_LPCS, 0x0); + + /* stall DSP core, set clk to 192/96Mhz */ + sst_dsp_shim_update_bits_unlocked(sst, + SST_CSR, SST_CSR_STALL | SST_CSR_DCS_MASK, + SST_CSR_STALL | SST_CSR_DCS(4)); + + /* Set 24MHz MCLK, prevent local clock gating, enable SSP0 clock */ sst_dsp_shim_update_bits_unlocked(sst, SST_CLKCTL, - SST_CLKCTL_MASK, SST_CLKCTL_MASK); + SST_CLKCTL_MASK | SST_CLKCTL_DCPLCG | SST_CLKCTL_SCOE0, + SST_CLKCTL_MASK | SST_CLKCTL_DCPLCG | SST_CLKCTL_SCOE0); - /* PLL shutdown disable */ + /* Stall and reset core, set CSR */ + hsw_reset(sst); + + /* Enable core clock gating (VDRTCTL2.DCLCGE = 1), delay 50 us */ reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg &= ~(SST_VDRTCL2_APLLSE_MASK); + reg |= SST_VDRTCL2_DCLCGE | SST_VDRTCL2_DTCGE; writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - sst_dsp_shim_update_bits_unlocked(sst, SST_CSR, - SST_CSR_D0_MASK, SST_CSR_SBCS0 | SST_CSR_SBCS1 | - SST_CSR_STALL | SST_CSR_DCS(4)); udelay(50); - /* enable clock core gating */ + /* switch on audio PLL */ reg = readl(sst->addr.pci_cfg + SST_VDRTCTL2); - reg |= SST_VDRTCL2_DCLCGE; + reg &= ~SST_VDRTCL2_APLLSE_MASK; writel(reg, sst->addr.pci_cfg + SST_VDRTCTL2); - /* clear reset */ - sst_dsp_shim_update_bits_unlocked(sst, SST_CSR, SST_CSR_RST, 0); + /* set default power gating control, enable power gating control for all blocks. that is, + can't be accessed, please enable each block before accessing. */ + reg = readl(sst->addr.pci_cfg + SST_VDRTCTL0); + reg |= SST_VDRTCL0_DSRAMPGE_MASK | SST_VDRTCL0_ISRAMPGE_MASK; + /* for D0, always enable the block(DSRAM[0]) used for FW dump */ + fw_dump_bit = 1 << SST_VDRTCL0_DSRAMPGE_SHIFT; + writel(reg & ~fw_dump_bit, sst->addr.pci_cfg + SST_VDRTCTL0); + /* disable DMA finish function for SSP0 & SSP1 */ sst_dsp_shim_update_bits_unlocked(sst, SST_CSR2, SST_CSR2_SDFD_SSP1, @@ -418,6 +384,12 @@ sst_dsp_shim_update_bits(sst, SST_IMRD, (SST_IMRD_DONE | SST_IMRD_BUSY | SST_IMRD_SSP0 | SST_IMRD_DMAC), 0x0); + /* clear IPC registers */ + sst_dsp_shim_write(sst, SST_IPCX, 0x0); + sst_dsp_shim_write(sst, SST_IPCD, 0x0); + sst_dsp_shim_write(sst, 0x80, 0x6); + sst_dsp_shim_write(sst, 0xe0, 0x300a); + return 0; } @@ -443,6 +415,11 @@ { dev_dbg(sst->dev, "HSW_PM dsp runtime suspend\n"); + /* put DSP into reset and stall */ + sst_dsp_shim_update_bits(sst, SST_CSR, + SST_CSR_24MHZ_LPCS | SST_CSR_RST | SST_CSR_STALL, + SST_CSR_RST | SST_CSR_STALL | SST_CSR_24MHZ_LPCS); + hsw_set_dsp_D3(sst); dev_dbg(sst->dev, "HSW_PM dsp runtime suspend exit\n"); } --- linux-5.8.0.orig/sound/soc/intel/skylake/cnl-sst.c +++ linux-5.8.0/sound/soc/intel/skylake/cnl-sst.c @@ -224,6 +224,7 @@ "dsp boot timeout, status=%#x error=%#x\n", sst_dsp_shim_read(ctx, CNL_ADSP_FW_STATUS), sst_dsp_shim_read(ctx, CNL_ADSP_ERROR_CODE)); + ret = -ETIMEDOUT; goto err; } } else { --- linux-5.8.0.orig/sound/soc/intel/skylake/skl-topology.c +++ linux-5.8.0/sound/soc/intel/skylake/skl-topology.c @@ -3619,19 +3619,20 @@ list_for_each_entry(dobj, &component->dobj_list, list) { struct snd_kcontrol *kcontrol = dobj->control.kcontrol; - struct soc_enum *se = - (struct soc_enum *)kcontrol->private_value; - char **texts = dobj->control.dtexts; + struct soc_enum *se; + char **texts; char chan_text[4]; - if (dobj->type != SND_SOC_DOBJ_ENUM || - dobj->control.kcontrol->put != - skl_tplg_multi_config_set_dmic) + if (dobj->type != SND_SOC_DOBJ_ENUM || !kcontrol || + kcontrol->put != skl_tplg_multi_config_set_dmic) continue; + + se = (struct soc_enum *)kcontrol->private_value; + texts = dobj->control.dtexts; sprintf(chan_text, "c%d", mach->mach_params.dmic_num); for (i = 0; i < se->items; i++) { - struct snd_ctl_elem_value val; + struct snd_ctl_elem_value val = {}; if (strstr(texts[i], chan_text)) { val.value.enumerated.item[0] = i; --- linux-5.8.0.orig/sound/soc/jz4740/jz4740-i2s.c +++ linux-5.8.0/sound/soc/jz4740/jz4740-i2s.c @@ -312,10 +312,14 @@ switch (clk_id) { case JZ4740_I2S_CLKSRC_EXT: parent = clk_get(NULL, "ext"); + if (IS_ERR(parent)) + return PTR_ERR(parent); clk_set_parent(i2s->clk_i2s, parent); break; case JZ4740_I2S_CLKSRC_PLL: parent = clk_get(NULL, "pll half"); + if (IS_ERR(parent)) + return PTR_ERR(parent); clk_set_parent(i2s->clk_i2s, parent); ret = clk_set_rate(i2s->clk_i2s, freq); break; --- linux-5.8.0.orig/sound/soc/meson/Kconfig +++ linux-5.8.0/sound/soc/meson/Kconfig @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only menu "ASoC support for Amlogic platforms" - depends on ARCH_MESON || COMPILE_TEST + depends on ARCH_MESON || (COMPILE_TEST && COMMON_CLK) config SND_MESON_AIU tristate "Amlogic AIU" --- linux-5.8.0.orig/sound/soc/meson/axg-card.c +++ linux-5.8.0/sound/soc/meson/axg-card.c @@ -116,7 +116,7 @@ lb = &card->dai_link[*index + 1]; - lb->name = kasprintf(GFP_KERNEL, "%s-lb", pad->name); + lb->name = devm_kasprintf(card->dev, GFP_KERNEL, "%s-lb", pad->name); if (!lb->name) return -ENOMEM; @@ -327,20 +327,22 @@ return ret; if (axg_card_cpu_is_playback_fe(dai_link->cpus->of_node)) - ret = meson_card_set_fe_link(card, dai_link, np, true); + return meson_card_set_fe_link(card, dai_link, np, true); else if (axg_card_cpu_is_capture_fe(dai_link->cpus->of_node)) - ret = meson_card_set_fe_link(card, dai_link, np, false); - else - ret = meson_card_set_be_link(card, dai_link, np); + return meson_card_set_fe_link(card, dai_link, np, false); + + ret = meson_card_set_be_link(card, dai_link, np); if (ret) return ret; - if (axg_card_cpu_is_tdm_iface(dai_link->cpus->of_node)) - ret = axg_card_parse_tdm(card, np, index); - else if (axg_card_cpu_is_codec(dai_link->cpus->of_node)) { + if (axg_card_cpu_is_codec(dai_link->cpus->of_node)) { dai_link->params = &codec_params; - dai_link->no_pcm = 0; /* link is not a DPCM BE */ + } else { + dai_link->no_pcm = 1; + snd_soc_dai_link_set_capabilities(dai_link); + if (axg_card_cpu_is_tdm_iface(dai_link->cpus->of_node)) + ret = axg_card_parse_tdm(card, np, index); } return ret; --- linux-5.8.0.orig/sound/soc/meson/axg-tdm-formatter.c +++ linux-5.8.0/sound/soc/meson/axg-tdm-formatter.c @@ -70,7 +70,7 @@ static int axg_tdm_formatter_enable(struct axg_tdm_formatter *formatter) { struct axg_tdm_stream *ts = formatter->stream; - bool invert = formatter->drv->quirks->invert_sclk; + bool invert; int ret; /* Do nothing if the formatter is already enabled */ @@ -96,11 +96,12 @@ return ret; /* - * If sclk is inverted, invert it back and provide the inversion - * required by the formatter + * If sclk is inverted, it means the bit should latched on the + * rising edge which is what our HW expects. If not, we need to + * invert it before the formatter. */ - invert ^= axg_tdm_sclk_invert(ts->iface->fmt); - ret = clk_set_phase(formatter->sclk, invert ? 180 : 0); + invert = axg_tdm_sclk_invert(ts->iface->fmt); + ret = clk_set_phase(formatter->sclk, invert ? 0 : 180); if (ret) return ret; --- linux-5.8.0.orig/sound/soc/meson/axg-tdm-formatter.h +++ linux-5.8.0/sound/soc/meson/axg-tdm-formatter.h @@ -16,7 +16,6 @@ struct axg_tdm_formatter_hw { unsigned int skew_offset; - bool invert_sclk; }; struct axg_tdm_formatter_ops { --- linux-5.8.0.orig/sound/soc/meson/axg-tdm-interface.c +++ linux-5.8.0/sound/soc/meson/axg-tdm-interface.c @@ -119,18 +119,25 @@ { struct axg_tdm_iface *iface = snd_soc_dai_get_drvdata(dai); - /* These modes are not supported */ - if (fmt & (SND_SOC_DAIFMT_CBS_CFM | SND_SOC_DAIFMT_CBM_CFS)) { + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { + case SND_SOC_DAIFMT_CBS_CFS: + if (!iface->mclk) { + dev_err(dai->dev, "cpu clock master: mclk missing\n"); + return -ENODEV; + } + break; + + case SND_SOC_DAIFMT_CBM_CFM: + break; + + case SND_SOC_DAIFMT_CBS_CFM: + case SND_SOC_DAIFMT_CBM_CFS: dev_err(dai->dev, "only CBS_CFS and CBM_CFM are supported\n"); + /* Fall-through */ + default: return -EINVAL; } - /* If the TDM interface is the clock master, it requires mclk */ - if (!iface->mclk && (fmt & SND_SOC_DAIFMT_CBS_CFS)) { - dev_err(dai->dev, "cpu clock master: mclk missing\n"); - return -ENODEV; - } - iface->fmt = fmt; return 0; } @@ -319,7 +326,8 @@ if (ret) return ret; - if (iface->fmt & SND_SOC_DAIFMT_CBS_CFS) { + if ((iface->fmt & SND_SOC_DAIFMT_MASTER_MASK) == + SND_SOC_DAIFMT_CBS_CFS) { ret = axg_tdm_iface_set_sclk(dai, params); if (ret) return ret; @@ -459,8 +467,20 @@ return ret; } +static const struct snd_soc_dapm_widget axg_tdm_iface_dapm_widgets[] = { + SND_SOC_DAPM_SIGGEN("Playback Signal"), +}; + +static const struct snd_soc_dapm_route axg_tdm_iface_dapm_routes[] = { + { "Loopback", NULL, "Playback Signal" }, +}; + static const struct snd_soc_component_driver axg_tdm_iface_component_drv = { - .set_bias_level = axg_tdm_iface_set_bias_level, + .dapm_widgets = axg_tdm_iface_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(axg_tdm_iface_dapm_widgets), + .dapm_routes = axg_tdm_iface_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(axg_tdm_iface_dapm_routes), + .set_bias_level = axg_tdm_iface_set_bias_level, }; static const struct of_device_id axg_tdm_iface_of_match[] = { --- linux-5.8.0.orig/sound/soc/meson/axg-tdmin.c +++ linux-5.8.0/sound/soc/meson/axg-tdmin.c @@ -228,8 +228,7 @@ .regmap_cfg = &axg_tdmin_regmap_cfg, .ops = &axg_tdmin_ops, .quirks = &(const struct axg_tdm_formatter_hw) { - .invert_sclk = false, - .skew_offset = 2, + .skew_offset = 3, }, }; @@ -237,6 +236,12 @@ { .compatible = "amlogic,axg-tdmin", .data = &axg_tdmin_drv, + }, { + .compatible = "amlogic,g12a-tdmin", + .data = &axg_tdmin_drv, + }, { + .compatible = "amlogic,sm1-tdmin", + .data = &axg_tdmin_drv, }, {} }; MODULE_DEVICE_TABLE(of, axg_tdmin_of_match); --- linux-5.8.0.orig/sound/soc/meson/axg-tdmout.c +++ linux-5.8.0/sound/soc/meson/axg-tdmout.c @@ -238,7 +238,6 @@ .regmap_cfg = &axg_tdmout_regmap_cfg, .ops = &axg_tdmout_ops, .quirks = &(const struct axg_tdm_formatter_hw) { - .invert_sclk = true, .skew_offset = 1, }, }; @@ -248,7 +247,6 @@ .regmap_cfg = &axg_tdmout_regmap_cfg, .ops = &axg_tdmout_ops, .quirks = &(const struct axg_tdm_formatter_hw) { - .invert_sclk = true, .skew_offset = 2, }, }; @@ -309,7 +307,6 @@ .regmap_cfg = &axg_tdmout_regmap_cfg, .ops = &axg_tdmout_ops, .quirks = &(const struct axg_tdm_formatter_hw) { - .invert_sclk = true, .skew_offset = 2, }, }; --- linux-5.8.0.orig/sound/soc/meson/axg-toddr.c +++ linux-5.8.0/sound/soc/meson/axg-toddr.c @@ -18,6 +18,7 @@ #define CTRL0_TODDR_SEL_RESAMPLE BIT(30) #define CTRL0_TODDR_EXT_SIGNED BIT(29) #define CTRL0_TODDR_PP_MODE BIT(28) +#define CTRL0_TODDR_SYNC_CH BIT(27) #define CTRL0_TODDR_TYPE_MASK GENMASK(15, 13) #define CTRL0_TODDR_TYPE(x) ((x) << 13) #define CTRL0_TODDR_MSB_POS_MASK GENMASK(12, 8) @@ -189,10 +190,31 @@ .dai_drv = &axg_toddr_dai_drv }; +static int g12a_toddr_dai_startup(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct axg_fifo *fifo = snd_soc_dai_get_drvdata(dai); + int ret; + + ret = axg_toddr_dai_startup(substream, dai); + if (ret) + return ret; + + /* + * Make sure the first channel ends up in the at beginning of the output + * As weird as it looks, without this the first channel may be misplaced + * in memory, with a random shift of 2 channels. + */ + regmap_update_bits(fifo->map, FIFO_CTRL0, CTRL0_TODDR_SYNC_CH, + CTRL0_TODDR_SYNC_CH); + + return 0; +} + static const struct snd_soc_dai_ops g12a_toddr_ops = { .prepare = g12a_toddr_dai_prepare, .hw_params = axg_toddr_dai_hw_params, - .startup = axg_toddr_dai_startup, + .startup = g12a_toddr_dai_startup, .shutdown = axg_toddr_dai_shutdown, }; --- linux-5.8.0.orig/sound/soc/meson/gx-card.c +++ linux-5.8.0/sound/soc/meson/gx-card.c @@ -96,21 +96,21 @@ return ret; if (gx_card_cpu_identify(dai_link->cpus, "FIFO")) - ret = meson_card_set_fe_link(card, dai_link, np, true); - else - ret = meson_card_set_be_link(card, dai_link, np); + return meson_card_set_fe_link(card, dai_link, np, true); + ret = meson_card_set_be_link(card, dai_link, np); if (ret) return ret; - /* Check if the cpu is the i2s encoder and parse i2s data */ - if (gx_card_cpu_identify(dai_link->cpus, "I2S Encoder")) - ret = gx_card_parse_i2s(card, np, index); - /* Or apply codec to codec params if necessary */ - else if (gx_card_cpu_identify(dai_link->cpus, "CODEC CTRL")) { + if (gx_card_cpu_identify(dai_link->cpus, "CODEC CTRL")) { dai_link->params = &codec_params; - dai_link->no_pcm = 0; /* link is not a DPCM BE */ + } else { + dai_link->no_pcm = 1; + snd_soc_dai_link_set_capabilities(dai_link); + /* Check if the cpu is the i2s encoder and parse i2s data */ + if (gx_card_cpu_identify(dai_link->cpus, "I2S Encoder")) + ret = gx_card_parse_i2s(card, np, index); } return ret; --- linux-5.8.0.orig/sound/soc/meson/meson-card-utils.c +++ linux-5.8.0/sound/soc/meson/meson-card-utils.c @@ -147,10 +147,6 @@ struct device_node *np; int ret, num_codecs; - link->no_pcm = 1; - link->dpcm_playback = 1; - link->dpcm_capture = 1; - num_codecs = of_get_child_count(node); if (!num_codecs) { dev_err(card->dev, "be link %s has no codec\n", --- linux-5.8.0.orig/sound/soc/qcom/Kconfig +++ linux-5.8.0/sound/soc/qcom/Kconfig @@ -90,6 +90,7 @@ config SND_SOC_MSM8996 tristate "SoC Machine driver for MSM8996 and APQ8096 boards" depends on QCOM_APR + depends on COMMON_CLK select SND_SOC_QDSP6 select SND_SOC_QCOM_COMMON help --- linux-5.8.0.orig/sound/soc/qcom/apq8016_sbc.c +++ linux-5.8.0/sound/soc/qcom/apq8016_sbc.c @@ -234,6 +234,7 @@ return -ENOMEM; card->dev = dev; + card->owner = THIS_MODULE; card->dapm_widgets = apq8016_sbc_dapm_widgets; card->num_dapm_widgets = ARRAY_SIZE(apq8016_sbc_dapm_widgets); data = apq8016_sbc_parse_of(card); --- linux-5.8.0.orig/sound/soc/qcom/apq8096.c +++ linux-5.8.0/sound/soc/qcom/apq8096.c @@ -114,6 +114,7 @@ return -ENOMEM; card->dev = dev; + card->owner = THIS_MODULE; dev_set_drvdata(dev, card); ret = qcom_snd_parse_of(card); if (ret) --- linux-5.8.0.orig/sound/soc/qcom/common.c +++ linux-5.8.0/sound/soc/qcom/common.c @@ -45,8 +45,10 @@ for_each_child_of_node(dev->of_node, np) { dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL); - if (!dlc) - return -ENOMEM; + if (!dlc) { + ret = -ENOMEM; + goto err_put_np; + } link->cpus = &dlc[0]; link->platforms = &dlc[1]; @@ -57,7 +59,7 @@ ret = of_property_read_string(np, "link-name", &link->name); if (ret) { dev_err(card->dev, "error getting codec dai_link name\n"); - goto err; + goto err_put_np; } cpu = of_get_child_by_name(np, "cpu"); @@ -113,8 +115,10 @@ } else { dlc = devm_kzalloc(dev, sizeof(*dlc), GFP_KERNEL); - if (!dlc) - return -ENOMEM; + if (!dlc) { + ret = -ENOMEM; + goto err; + } link->codecs = dlc; link->num_codecs = 1; @@ -139,10 +143,11 @@ return 0; err: - of_node_put(np); of_node_put(cpu); of_node_put(codec); of_node_put(platform); +err_put_np: + of_node_put(np); kfree(card->dai_link); return ret; } --- linux-5.8.0.orig/sound/soc/qcom/lpass-cpu.c +++ linux-5.8.0/sound/soc/qcom/lpass-cpu.c @@ -209,21 +209,6 @@ return 0; } -static int lpass_cpu_daiops_hw_free(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai) -{ - struct lpass_data *drvdata = snd_soc_dai_get_drvdata(dai); - int ret; - - ret = regmap_write(drvdata->lpaif_map, - LPAIF_I2SCTL_REG(drvdata->variant, dai->driver->id), - 0); - if (ret) - dev_err(dai->dev, "error writing to i2sctl reg: %d\n", ret); - - return ret; -} - static int lpass_cpu_daiops_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { @@ -304,7 +289,6 @@ .startup = lpass_cpu_daiops_startup, .shutdown = lpass_cpu_daiops_shutdown, .hw_params = lpass_cpu_daiops_hw_params, - .hw_free = lpass_cpu_daiops_hw_free, .prepare = lpass_cpu_daiops_prepare, .trigger = lpass_cpu_daiops_trigger, }; @@ -501,7 +485,7 @@ for_each_child_of_node(dev->of_node, node) { ret = of_property_read_u32(node, "reg", &id); - if (ret || id < 0 || id >= data->variant->num_dai) { + if (ret || id < 0) { dev_err(dev, "valid dai id not found: %d\n", ret); continue; } --- linux-5.8.0.orig/sound/soc/qcom/lpass-platform.c +++ linux-5.8.0/sound/soc/qcom/lpass-platform.c @@ -61,7 +61,7 @@ int ret, dma_ch, dir = substream->stream; struct lpass_pcm_data *data; - data = devm_kzalloc(soc_runtime->dev, sizeof(*data), GFP_KERNEL); + data = kzalloc(sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; @@ -73,8 +73,10 @@ else dma_ch = 0; - if (dma_ch < 0) + if (dma_ch < 0) { + kfree(data); return dma_ch; + } drvdata->substream[dma_ch] = substream; @@ -95,6 +97,7 @@ ret = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS); if (ret < 0) { + kfree(data); dev_err(soc_runtime->dev, "setting constraints failed: %d\n", ret); return -EINVAL; @@ -118,6 +121,7 @@ if (v->free_dma_channel) v->free_dma_channel(drvdata, data->dma_ch); + kfree(data); return 0; } --- linux-5.8.0.orig/sound/soc/qcom/qdsp6/q6afe-dai.c +++ linux-5.8.0/sound/soc/qcom/qdsp6/q6afe-dai.c @@ -1150,206 +1150,206 @@ } static const struct snd_soc_dapm_widget q6afe_dai_widgets[] = { - SND_SOC_DAPM_AIF_IN("HDMI_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_0_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_1_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_2_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_3_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_4_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_5_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("SLIMBUS_6_RX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_TX", NULL, 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_TX", NULL, 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("HDMI_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_0_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_1_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_2_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_3_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_4_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_5_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("SLIMBUS_6_RX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_TX", NULL, 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_TX", NULL, 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_MI2S_RX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_TX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_MI2S_RX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_MI2S_TX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_MI2S_TX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_MI2S_RX_SD1", "Secondary MI2S Playback SD1", - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRI_MI2S_RX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRI_MI2S_TX", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("PRIMARY_TDM_RX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("PRIMARY_TDM_TX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6", NULL, - 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7", NULL, - 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT_RX", "NULL", 0, 0, 0, 0), + 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT_RX", "NULL", 0, SND_SOC_NOPM, 0, 0), }; static const struct snd_soc_component_driver q6afe_dai_component = { --- linux-5.8.0.orig/sound/soc/qcom/qdsp6/q6asm-dai.c +++ linux-5.8.0/sound/soc/qcom/qdsp6/q6asm-dai.c @@ -1015,6 +1015,25 @@ } } +static const struct snd_soc_dapm_widget q6asm_dapm_widgets[] = { + SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL7", "MultiMedia7 Capture", 0, SND_SOC_NOPM, 0, 0), + SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, SND_SOC_NOPM, 0, 0), +}; + static const struct snd_soc_component_driver q6asm_fe_dai_component = { .name = DRV_NAME, .open = q6asm_dai_open, @@ -1027,6 +1046,8 @@ .pcm_construct = q6asm_dai_pcm_new, .pcm_destruct = q6asm_dai_pcm_free, .compress_ops = &q6asm_dai_compress_ops, + .dapm_widgets = q6asm_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(q6asm_dapm_widgets), }; static struct snd_soc_dai_driver q6asm_fe_dais_template[] = { --- linux-5.8.0.orig/sound/soc/qcom/qdsp6/q6routing.c +++ linux-5.8.0/sound/soc/qcom/qdsp6/q6routing.c @@ -635,24 +635,6 @@ Q6ROUTING_TX_MIXERS(MSM_FRONTEND_DAI_MULTIMEDIA8) }; static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { - /* Frontend AIF */ - SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL7", "MultiMedia7 Capture", 0, 0, 0, 0), - SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0), - /* Mixer definitions */ SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0, hdmi_mixer_controls, @@ -973,6 +955,20 @@ return 0; } +static unsigned int q6routing_reg_read(struct snd_soc_component *component, + unsigned int reg) +{ + /* default value */ + return 0; +} + +static int q6routing_reg_write(struct snd_soc_component *component, + unsigned int reg, unsigned int val) +{ + /* dummy */ + return 0; +} + static const struct snd_soc_component_driver msm_soc_routing_component = { .probe = msm_routing_probe, .name = DRV_NAME, @@ -981,6 +977,8 @@ .num_dapm_widgets = ARRAY_SIZE(msm_qdsp6_widgets), .dapm_routes = intercon, .num_dapm_routes = ARRAY_SIZE(intercon), + .read = q6routing_reg_read, + .write = q6routing_reg_write, }; static int q6pcm_routing_probe(struct platform_device *pdev) --- linux-5.8.0.orig/sound/soc/qcom/sdm845.c +++ linux-5.8.0/sound/soc/qcom/sdm845.c @@ -17,6 +17,7 @@ #include "qdsp6/q6afe.h" #include "../codecs/rt5663.h" +#define DRIVER_NAME "sdm845" #define DEFAULT_SAMPLE_RATE_48K 48000 #define DEFAULT_MCLK_RATE 24576000 #define TDM_BCLK_RATE 6144000 @@ -26,18 +27,18 @@ #define SPK_TDM_RX_MASK 0x03 #define NUM_TDM_SLOTS 8 #define SLIM_MAX_TX_PORTS 16 -#define SLIM_MAX_RX_PORTS 16 +#define SLIM_MAX_RX_PORTS 13 #define WCD934X_DEFAULT_MCLK_RATE 9600000 struct sdm845_snd_data { struct snd_soc_jack jack; bool jack_setup; - bool stream_prepared[SLIM_MAX_RX_PORTS]; + bool stream_prepared[AFE_PORT_MAX]; struct snd_soc_card *card; uint32_t pri_mi2s_clk_count; uint32_t sec_mi2s_clk_count; uint32_t quat_tdm_clk_count; - struct sdw_stream_runtime *sruntime[SLIM_MAX_RX_PORTS]; + struct sdw_stream_runtime *sruntime[AFE_PORT_MAX]; }; static unsigned int tdm_slot_offset[8] = {0, 4, 8, 12, 16, 20, 24, 28}; @@ -554,9 +555,11 @@ goto data_alloc_fail; } + card->driver_name = DRIVER_NAME; card->dapm_widgets = sdm845_snd_widgets; card->num_dapm_widgets = ARRAY_SIZE(sdm845_snd_widgets); card->dev = dev; + card->owner = THIS_MODULE; dev_set_drvdata(dev, card); ret = qcom_snd_parse_of(card); if (ret) --- linux-5.8.0.orig/sound/soc/qcom/storm.c +++ linux-5.8.0/sound/soc/qcom/storm.c @@ -96,6 +96,7 @@ return -ENOMEM; card->dev = &pdev->dev; + card->owner = THIS_MODULE; ret = snd_soc_of_parse_card_name(card, "qcom,model"); if (ret) { --- linux-5.8.0.orig/sound/soc/sh/siu.h +++ linux-5.8.0/sound/soc/sh/siu.h @@ -169,7 +169,7 @@ #define SIU_BRGBSEL (0x108 / sizeof(u32)) #define SIU_BRRB (0x10c / sizeof(u32)) -extern struct snd_soc_component_driver siu_component; +extern const struct snd_soc_component_driver siu_component; extern struct siu_info *siu_i2s_data; int siu_init_port(int port, struct siu_port **port_info, struct snd_card *card); --- linux-5.8.0.orig/sound/soc/sh/siu_pcm.c +++ linux-5.8.0/sound/soc/sh/siu_pcm.c @@ -544,7 +544,7 @@ dev_dbg(pcm->card->dev, "%s\n", __func__); } -struct const snd_soc_component_driver siu_component = { +const struct snd_soc_component_driver siu_component = { .name = DRV_NAME, .open = siu_pcm_open, .close = siu_pcm_close, --- linux-5.8.0.orig/sound/soc/soc-core.c +++ linux-5.8.0/sound/soc/soc-core.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -446,7 +447,6 @@ dev->parent = card->dev; dev->release = soc_release_rtd_dev; - dev->groups = soc_dev_attr_groups; dev_set_name(dev, "%s", dai_link->name); @@ -503,6 +503,10 @@ /* see for_each_card_rtds */ list_add_tail(&rtd->list, &card->rtd_list); + ret = device_add_groups(dev, soc_dev_attr_groups); + if (ret < 0) + goto free_rtd; + return rtd; free_rtd: @@ -831,6 +835,19 @@ } EXPORT_SYMBOL_GPL(snd_soc_find_dai); +struct snd_soc_dai *snd_soc_find_dai_with_mutex( + const struct snd_soc_dai_link_component *dlc) +{ + struct snd_soc_dai *dai; + + mutex_lock(&client_mutex); + dai = snd_soc_find_dai(dlc); + mutex_unlock(&client_mutex); + + return dai; +} +EXPORT_SYMBOL_GPL(snd_soc_find_dai_with_mutex); + static int soc_dai_link_sanity_check(struct snd_soc_card *card, struct snd_soc_dai_link *link) { @@ -1563,6 +1580,9 @@ if (card->long_name) return 0; /* long name already set by driver or from DMI */ + if (!is_acpi_device_node(card->dev->fwnode)) + return 0; + /* make up dmi long name as: vendor-product-version-board */ vendor = dmi_get_system_info(DMI_BOARD_VENDOR); if (!vendor || !is_dmi_valid(vendor)) { --- linux-5.8.0.orig/sound/soc/soc-dai.c +++ linux-5.8.0/sound/soc/soc-dai.c @@ -400,28 +400,30 @@ struct snd_soc_dai_link_component *codec; struct snd_soc_dai *dai; bool supported[SNDRV_PCM_STREAM_LAST + 1]; + bool supported_cpu; + bool supported_codec; int direction; int i; for_each_pcm_streams(direction) { - supported[direction] = true; + supported_cpu = false; + supported_codec = false; for_each_link_cpus(dai_link, i, cpu) { - dai = snd_soc_find_dai(cpu); - if (!dai || !snd_soc_dai_stream_valid(dai, direction)) { - supported[direction] = false; + dai = snd_soc_find_dai_with_mutex(cpu); + if (dai && snd_soc_dai_stream_valid(dai, direction)) { + supported_cpu = true; break; } } - if (!supported[direction]) - continue; for_each_link_codecs(dai_link, i, codec) { - dai = snd_soc_find_dai(codec); - if (!dai || !snd_soc_dai_stream_valid(dai, direction)) { - supported[direction] = false; + dai = snd_soc_find_dai_with_mutex(codec); + if (dai && snd_soc_dai_stream_valid(dai, direction)) { + supported_codec = true; break; } } + supported[direction] = supported_cpu && supported_codec; } dai_link->dpcm_playback = supported[SNDRV_PCM_STREAM_PLAYBACK]; --- linux-5.8.0.orig/sound/soc/soc-dapm.c +++ linux-5.8.0/sound/soc/soc-dapm.c @@ -2487,6 +2487,7 @@ enum snd_soc_dapm_direction dir; list_del(&w->list); + list_del(&w->dirty); /* * remove source and sink paths associated to this widget. * While removing the path, remove reference to it from both --- linux-5.8.0.orig/sound/soc/soc-pcm.c +++ linux-5.8.0/sound/soc/soc-pcm.c @@ -811,7 +811,7 @@ return 0; config_err: - for_each_rtd_dais(rtd, i, dai) + for_each_rtd_dais_rollback(rtd, i, dai) snd_soc_dai_shutdown(dai, substream); snd_soc_link_shutdown(substream); @@ -2329,6 +2329,7 @@ case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + case SNDRV_PCM_TRIGGER_DRAIN: ret = dpcm_dai_trigger_fe_be(substream, cmd, true); break; case SNDRV_PCM_TRIGGER_STOP: @@ -2346,6 +2347,7 @@ case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + case SNDRV_PCM_TRIGGER_DRAIN: ret = dpcm_dai_trigger_fe_be(substream, cmd, false); break; case SNDRV_PCM_TRIGGER_STOP: @@ -2802,30 +2804,36 @@ if (rtd->dai_link->dpcm_playback) { stream = SNDRV_PCM_STREAM_PLAYBACK; - for_each_rtd_cpu_dais(rtd, i, cpu_dai) - if (!snd_soc_dai_stream_valid(cpu_dai, - stream)) { - dev_err(rtd->card->dev, - "CPU DAI %s for rtd %s does not support playback\n", - cpu_dai->name, - rtd->dai_link->stream_name); - return -EINVAL; + for_each_rtd_cpu_dais(rtd, i, cpu_dai) { + if (snd_soc_dai_stream_valid(cpu_dai, stream)) { + playback = 1; + break; } - playback = 1; + } + + if (!playback) { + dev_err(rtd->card->dev, + "No CPU DAIs support playback for stream %s\n", + rtd->dai_link->stream_name); + return -EINVAL; + } } if (rtd->dai_link->dpcm_capture) { stream = SNDRV_PCM_STREAM_CAPTURE; - for_each_rtd_cpu_dais(rtd, i, cpu_dai) - if (!snd_soc_dai_stream_valid(cpu_dai, - stream)) { - dev_err(rtd->card->dev, - "CPU DAI %s for rtd %s does not support capture\n", - cpu_dai->name, - rtd->dai_link->stream_name); - return -EINVAL; + for_each_rtd_cpu_dais(rtd, i, cpu_dai) { + if (snd_soc_dai_stream_valid(cpu_dai, stream)) { + capture = 1; + break; } - capture = 1; + } + + if (!capture) { + dev_err(rtd->card->dev, + "No CPU DAIs support capture for stream %s\n", + rtd->dai_link->stream_name); + return -EINVAL; + } } } else { /* Adapt stream for codec2codec links */ --- linux-5.8.0.orig/sound/soc/soc-topology.c +++ linux-5.8.0/sound/soc/soc-topology.c @@ -506,7 +506,7 @@ { struct snd_soc_dai_driver *dai_drv = container_of(dobj, struct snd_soc_dai_driver, dobj); - struct snd_soc_dai *dai; + struct snd_soc_dai *dai, *_dai; if (pass != SOC_TPLG_PASS_PCM_DAI) return; @@ -514,9 +514,9 @@ if (dobj->ops && dobj->ops->dai_unload) dobj->ops->dai_unload(comp, dobj); - for_each_component_dais(comp, dai) + for_each_component_dais_safe(comp, dai, _dai) if (dai->driver == dai_drv) - dai->driver = NULL; + snd_soc_unregister_dai(dai); kfree(dai_drv->playback.stream_name); kfree(dai_drv->capture.stream_name); @@ -592,6 +592,17 @@ k->info = snd_soc_bytes_info_ext; k->tlv.c = snd_soc_bytes_tlv_callback; + /* + * When a topology-based implementation abuses the + * control interface and uses bytes_ext controls of + * more than 512 bytes, we need to disable the size + * checks, otherwise accesses to such controls will + * return an -EINVAL error and prevent the card from + * being configured. + */ + if (IS_ENABLED(CONFIG_SND_CTL_VALIDATION) && sbe->max > 512) + k->access |= SNDRV_CTL_ELEM_ACCESS_SKIP_CHECK; + ext_ops = tplg->bytes_ext_ops; num_ops = tplg->bytes_ext_ops_count; for (i = 0; i < num_ops; i++) { @@ -973,7 +984,7 @@ return -EINVAL; se->dobj.control.dvalues = kzalloc(le32_to_cpu(ec->items) * - sizeof(u32), + sizeof(*se->dobj.control.dvalues), GFP_KERNEL); if (!se->dobj.control.dvalues) return -ENOMEM; @@ -1863,7 +1874,7 @@ list_add(&dai_drv->dobj.list, &tplg->comp->dobj_list); /* register the DAI to the component */ - dai = devm_snd_soc_register_dai(tplg->comp->dev, tplg->comp, dai_drv, false); + dai = snd_soc_register_dai(tplg->comp, dai_drv, false); if (!dai) return -ENOMEM; @@ -1871,6 +1882,7 @@ ret = snd_soc_dapm_new_dai_widgets(dapm, dai); if (ret != 0) { dev_err(dai->dev, "Failed to create DAI widgets %d\n", ret); + snd_soc_unregister_dai(dai); return ret; } --- linux-5.8.0.orig/sound/soc/sof/control.c +++ linux-5.8.0/sound/soc/sof/control.c @@ -298,6 +298,10 @@ const struct snd_ctl_tlv __user *tlvd = (const struct snd_ctl_tlv __user *)binary_data; + /* make sure we have at least a header */ + if (size < sizeof(struct snd_ctl_tlv)) + return -EINVAL; + /* * The beginning of bytes data contains a header from where * the length (as bytes) is needed to know the correct copy @@ -306,6 +310,13 @@ if (copy_from_user(&header, tlvd, sizeof(const struct snd_ctl_tlv))) return -EFAULT; + /* make sure TLV info is consistent */ + if (header.length + sizeof(struct snd_ctl_tlv) > size) { + dev_err_ratelimited(scomp->dev, "error: inconsistent TLV, data %d + header %zu > %d\n", + header.length, sizeof(struct snd_ctl_tlv), size); + return -EINVAL; + } + /* be->max is coming from topology */ if (header.length > be->max) { dev_err_ratelimited(scomp->dev, "error: Bytes data size %d exceeds max %d.\n", --- linux-5.8.0.orig/sound/soc/sof/debug.c +++ linux-5.8.0/sound/soc/sof/debug.c @@ -350,7 +350,7 @@ char *string; int ret; - string = kzalloc(count, GFP_KERNEL); + string = kzalloc(count+1, GFP_KERNEL); if (!string) return -ENOMEM; --- linux-5.8.0.orig/sound/soc/sof/intel/Kconfig +++ linux-5.8.0/sound/soc/sof/intel/Kconfig @@ -84,7 +84,7 @@ config SND_SOC_SOF_BROADWELL_SUPPORT bool "SOF support for Broadwell" - depends on SND_SOC_INTEL_HASWELL=n + depends on SND_SOC_INTEL_CATPT=n help This adds support for Sound Open Firmware for Intel(R) platforms using the Broadwell processors. @@ -265,6 +265,7 @@ config SND_SOC_SOF_HDA_COMMON tristate + select SND_INTEL_DSP_CONFIG select SND_SOC_SOF_INTEL_COMMON select SND_SOC_SOF_HDA_LINK_BASELINE help @@ -324,7 +325,6 @@ tristate select SND_HDA_EXT_CORE if SND_SOC_SOF_HDA_LINK select SND_SOC_HDAC_HDA if SND_SOC_SOF_HDA_AUDIO_CODEC - select SND_INTEL_DSP_CONFIG help This option is not user-selectable but automagically handled by 'select' statements at a higher level --- linux-5.8.0.orig/sound/soc/sof/intel/hda-codec.c +++ linux-5.8.0/sound/soc/sof/intel/hda-codec.c @@ -63,16 +63,18 @@ } /* enable controller wake up event for all codecs with jack connectors */ -void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev) +void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) { struct hda_bus *hbus = sof_to_hbus(sdev); struct hdac_bus *bus = sof_to_bus(sdev); struct hda_codec *codec; unsigned int mask = 0; - list_for_each_codec(codec, hbus) - if (codec->jacktbl.used) - mask |= BIT(codec->core.addr); + if (enable) { + list_for_each_codec(codec, hbus) + if (codec->jacktbl.used) + mask |= BIT(codec->core.addr); + } snd_hdac_chip_updatew(bus, WAKEEN, STATESTS_INT_MASK, mask); } @@ -81,23 +83,18 @@ void hda_codec_jack_check(struct snd_sof_dev *sdev) { struct hda_bus *hbus = sof_to_hbus(sdev); - struct hdac_bus *bus = sof_to_bus(sdev); struct hda_codec *codec; - /* disable controller Wake Up event*/ - snd_hdac_chip_updatew(bus, WAKEEN, STATESTS_INT_MASK, 0); - list_for_each_codec(codec, hbus) /* * Wake up all jack-detecting codecs regardless whether an event * has been recorded in STATESTS */ if (codec->jacktbl.used) - schedule_delayed_work(&codec->jackpoll_work, - codec->jackpoll_interval); + pm_request_resume(&codec->core.dev); } #else -void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev) {} +void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) {} void hda_codec_jack_check(struct snd_sof_dev *sdev) {} #endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */ EXPORT_SYMBOL_NS(hda_codec_jack_wake_enable, SND_SOC_SOF_HDA_AUDIO_CODEC); @@ -151,7 +148,8 @@ if (!hdev->bus->audio_component) { dev_dbg(sdev->dev, "iDisp hw present but no driver\n"); - return -ENOENT; + ret = -ENOENT; + goto out; } hda_priv->need_display_power = true; } @@ -177,16 +175,20 @@ ret = -ENOENT; } - return ret; +out: + if (ret < 0) { + snd_hdac_device_unregister(hdev); + put_device(&hdev->dev); + } #else hdev = devm_kzalloc(sdev->dev, sizeof(*hdev), GFP_KERNEL); if (!hdev) return -ENOMEM; ret = snd_hdac_ext_bus_device_init(&hbus->core, address, hdev); +#endif return ret; -#endif } /* Codec initialization */ --- linux-5.8.0.orig/sound/soc/sof/intel/hda-dsp.c +++ linux-5.8.0/sound/soc/sof/intel/hda-dsp.c @@ -207,7 +207,7 @@ ret = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_BAR, HDA_DSP_REG_ADSPCS, adspcs, - !(adspcs & HDA_DSP_ADSPCS_SPA_MASK(core_mask)), + !(adspcs & HDA_DSP_ADSPCS_CPA_MASK(core_mask)), HDA_DSP_REG_POLL_INTERVAL_US, HDA_DSP_PD_TIMEOUT * USEC_PER_MSEC); if (ret < 0) @@ -601,7 +601,7 @@ #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) if (runtime_suspend) - hda_codec_jack_wake_enable(sdev); + hda_codec_jack_wake_enable(sdev, true); /* power down all hda link */ snd_hdac_ext_bus_link_power_down_all(bus); @@ -667,8 +667,11 @@ #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA) /* check jack status */ - if (runtime_resume) - hda_codec_jack_check(sdev); + if (runtime_resume) { + hda_codec_jack_wake_enable(sdev, false); + if (sdev->system_suspend_target == SOF_SUSPEND_NONE) + hda_codec_jack_check(sdev); + } /* turn off the links that were off before suspend */ list_for_each_entry(hlink, &bus->hlink_list, list) { @@ -760,11 +763,15 @@ int hda_dsp_runtime_suspend(struct snd_sof_dev *sdev) { + struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; const struct sof_dsp_power_state target_state = { .state = SOF_DSP_PM_D3, }; int ret; + /* cancel any attempt for DSP D0I3 */ + cancel_delayed_work_sync(&hda->d0i3_work); + /* stop hda controller and power dsp off */ ret = hda_suspend(sdev, true); if (ret < 0) --- linux-5.8.0.orig/sound/soc/sof/intel/hda.c +++ linux-5.8.0/sound/soc/sof/intel/hda.c @@ -544,7 +544,7 @@ if (nhlt) { dmic_num = intel_nhlt_get_dmic_geo(sdev->dev, nhlt); intel_nhlt_free(nhlt); - if (dmic_num == 2 || dmic_num == 4) + if (dmic_num >= 1 && dmic_num <= 4) return dmic_num; } @@ -874,6 +874,7 @@ /* dsp_unmap: not currently used */ iounmap(sdev->bar[HDA_DSP_BAR]); hdac_bus_unmap: + platform_device_unregister(hdev->dmic_dev); iounmap(bus->remap_addr); hda_codec_i915_exit(sdev); err: @@ -992,9 +993,15 @@ dmic_num = hda_dmic_num; switch (dmic_num) { + case 1: + dmic_str = "-1ch"; + break; case 2: dmic_str = "-2ch"; break; + case 3: + dmic_str = "-3ch"; + break; case 4: dmic_str = "-4ch"; break; @@ -1179,7 +1186,13 @@ mach = snd_soc_acpi_find_machine(desc->machines); if (mach) { - sof_pdata->tplg_filename = mach->sof_tplg_filename; + /* + * If tplg file name is overridden, use it instead of + * the one set in mach table + */ + if (!sof_pdata->tplg_filename) + sof_pdata->tplg_filename = mach->sof_tplg_filename; + sof_pdata->machine = mach; if (mach->link_mask) { --- linux-5.8.0.orig/sound/soc/sof/intel/hda.h +++ linux-5.8.0/sound/soc/sof/intel/hda.h @@ -636,7 +636,7 @@ */ void hda_codec_probe_bus(struct snd_sof_dev *sdev, bool hda_codec_use_common_hdmi); -void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev); +void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable); void hda_codec_jack_check(struct snd_sof_dev *sdev); #endif /* CONFIG_SND_SOC_SOF_HDA */ --- linux-5.8.0.orig/sound/soc/sof/loader.c +++ linux-5.8.0/sound/soc/sof/loader.c @@ -118,6 +118,11 @@ case SOF_IPC_EXT_CC_INFO: ret = get_cc_info(sdev, ext_hdr); break; + case SOF_IPC_EXT_UNUSED: + case SOF_IPC_EXT_PROBE_INFO: + case SOF_IPC_EXT_USER_ABI_INFO: + /* They are supported but we don't do anything here */ + break; default: dev_warn(sdev->dev, "warning: unknown ext header type %d size 0x%x\n", ext_hdr->type, ext_hdr->hdr.size); --- linux-5.8.0.orig/sound/soc/sof/nocodec.c +++ linux-5.8.0/sound/soc/sof/nocodec.c @@ -14,6 +14,7 @@ static struct snd_soc_card sof_nocodec_card = { .name = "nocodec", /* the sof- prefix is added by the core */ + .owner = THIS_MODULE }; static int sof_nocodec_bes_setup(struct device *dev, --- linux-5.8.0.orig/sound/soc/sof/sof-pci-dev.c +++ linux-5.8.0/sound/soc/sof/sof-pci-dev.c @@ -35,8 +35,28 @@ module_param_named(sof_pci_debug, sof_pci_debug, int, 0444); MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)"); +static const char *sof_override_tplg_name; + #define SOF_PCI_DISABLE_PM_RUNTIME BIT(0) +static int sof_tplg_cb(const struct dmi_system_id *id) +{ + sof_override_tplg_name = id->driver_data; + return 1; +} + +static const struct dmi_system_id sof_tplg_table[] = { + { + .callback = sof_tplg_cb, + .matches = { + DMI_MATCH(DMI_PRODUCT_FAMILY, "Google_Volteer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Terrador"), + }, + .driver_data = "sof-tgl-rt5682-ssp0-max98373-ssp2.tplg", + }, + {} +}; + static const struct dmi_system_id community_key_platforms[] = { { .ident = "Up Squared", @@ -46,6 +66,13 @@ } }, { + .ident = "Up Extreme", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "AAEON"), + DMI_MATCH(DMI_BOARD_NAME, "UP-WHL01"), + } + }, + { .ident = "Google Chromebooks", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Google"), @@ -347,6 +374,10 @@ sof_pdata->tplg_filename_prefix = sof_pdata->desc->default_tplg_path; + dmi_check_system(sof_tplg_table); + if (sof_override_tplg_name) + sof_pdata->tplg_filename = sof_override_tplg_name; + #if IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE) /* set callback to enable runtime_pm */ sof_pdata->sof_probe_complete = sof_pci_probe_complete; --- linux-5.8.0.orig/sound/soc/sunxi/sun4i-i2s.c +++ linux-5.8.0/sound/soc/sunxi/sun4i-i2s.c @@ -442,11 +442,11 @@ switch (i2s->format & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_DSP_A: case SND_SOC_DAIFMT_DSP_B: - case SND_SOC_DAIFMT_LEFT_J: - case SND_SOC_DAIFMT_RIGHT_J: lrck_period = params_physical_width(params) * slots; break; + case SND_SOC_DAIFMT_LEFT_J: + case SND_SOC_DAIFMT_RIGHT_J: case SND_SOC_DAIFMT_I2S: lrck_period = params_physical_width(params); break; --- linux-5.8.0.orig/sound/soc/tegra/tegra30_ahub.c +++ linux-5.8.0/sound/soc/tegra/tegra30_ahub.c @@ -643,8 +643,10 @@ int ret; ret = pm_runtime_get_sync(dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put(dev); return ret; + } ret = regcache_sync(ahub->regmap_ahub); ret |= regcache_sync(ahub->regmap_apbif); pm_runtime_put(dev); --- linux-5.8.0.orig/sound/soc/tegra/tegra30_i2s.c +++ linux-5.8.0/sound/soc/tegra/tegra30_i2s.c @@ -567,8 +567,10 @@ int ret; ret = pm_runtime_get_sync(dev); - if (ret < 0) + if (ret < 0) { + pm_runtime_put(dev); return ret; + } ret = regcache_sync(i2s->regmap); pm_runtime_put(dev); --- linux-5.8.0.orig/sound/usb/card.h +++ linux-5.8.0/sound/usb/card.h @@ -137,6 +137,7 @@ unsigned int tx_length_quirk:1; /* add length specifier to transfers */ unsigned int fmt_type; /* USB audio format type (1-3) */ unsigned int pkt_offset_adj; /* Bytes to drop from beginning of packets (for non-compliant devices) */ + unsigned int stream_offset_adj; /* Bytes to drop from beginning of stream (for non-compliant devices) */ unsigned int running: 1; /* running status */ --- linux-5.8.0.orig/sound/usb/clock.c +++ linux-5.8.0/sound/usb/clock.c @@ -531,6 +531,12 @@ } crate = data[0] | (data[1] << 8) | (data[2] << 16); + if (!crate) { + dev_info(&dev->dev, "failed to read current rate; disabling the check\n"); + chip->sample_rate_read_error = 3; /* three strikes, see above */ + return 0; + } + if (crate != rate) { dev_warn(&dev->dev, "current rate %d is different from the runtime rate %d\n", crate, rate); // runtime->rate = crate; --- linux-5.8.0.orig/sound/usb/endpoint.c +++ linux-5.8.0/sound/usb/endpoint.c @@ -576,9 +576,6 @@ { unsigned int i; - if (!force && atomic_read(&ep->chip->shutdown)) /* to be sure... */ - return -EBADFD; - clear_bit(EP_FLAG_RUNNING, &ep->flags); INIT_LIST_HEAD(&ep->ready_playback_urbs); --- linux-5.8.0.orig/sound/usb/format.c +++ linux-5.8.0/sound/usb/format.c @@ -40,6 +40,8 @@ case UAC_VERSION_1: default: { struct uac_format_type_i_discrete_descriptor *fmt = _fmt; + if (format >= 64) + return 0; /* invalid format */ sample_width = fmt->bBitResolution; sample_bytes = fmt->bSubframeSize; format = 1ULL << format; @@ -406,6 +408,7 @@ case USB_ID(0x0e41, 0x4242): /* Line6 Helix Rack */ case USB_ID(0x0e41, 0x4244): /* Line6 Helix LT */ case USB_ID(0x0e41, 0x4246): /* Line6 HX-Stomp */ + case USB_ID(0x0e41, 0x4247): /* Line6 Pod Go */ case USB_ID(0x0e41, 0x4248): /* Line6 Helix >= fw 2.82 */ case USB_ID(0x0e41, 0x4249): /* Line6 Helix Rack >= fw 2.82 */ case USB_ID(0x0e41, 0x424a): /* Line6 Helix LT >= fw 2.82 */ --- linux-5.8.0.orig/sound/usb/midi.c +++ linux-5.8.0/sound/usb/midi.c @@ -1889,6 +1889,8 @@ ms_ep = find_usb_ms_endpoint_descriptor(hostep); if (!ms_ep) continue; + if (ms_ep->bNumEmbMIDIJack > 0x10) + continue; if (usb_endpoint_dir_out(ep)) { if (endpoints[epidx].out_ep) { if (++epidx >= MIDI_MAX_ENDPOINTS) { @@ -2141,6 +2143,8 @@ cs_desc[1] == USB_DT_CS_INTERFACE && cs_desc[2] == 0xf1 && cs_desc[3] == 0x02) { + if (cs_desc[4] > 0x10 || cs_desc[5] > 0x10) + continue; endpoint->in_cables = (1 << cs_desc[4]) - 1; endpoint->out_cables = (1 << cs_desc[5]) - 1; return snd_usbmidi_detect_endpoints(umidi, endpoint, 1); --- linux-5.8.0.orig/sound/usb/mixer.c +++ linux-5.8.0/sound/usb/mixer.c @@ -1301,6 +1301,17 @@ /* totally crap, return an error */ return -EINVAL; } + } else { + /* if the max volume is too low, it's likely a bogus range; + * here we use -96dB as the threshold + */ + if (cval->dBmax <= -9600) { + usb_audio_info(cval->head.mixer->chip, + "%d:%d: bogus dB values (%d/%d), disabling dB reporting\n", + cval->head.id, mixer_ctrl_intf(cval->head.mixer), + cval->dBmin, cval->dBmax); + cval->dBmin = cval->dBmax = 0; + } } return 0; @@ -1463,6 +1474,10 @@ snd_usb_unlock_shutdown(chip); if (ret < 0) { + if (strstr(kcontrol->id.name, "Speaker")) { + ucontrol->value.integer.value[0] = 1; + return 0; + } error: usb_audio_err(chip, "cannot get connectors status: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", @@ -2367,7 +2382,7 @@ int num_ins; struct usb_mixer_elem_info *cval; struct snd_kcontrol *kctl; - int i, err, nameid, type, len; + int i, err, nameid, type, len, val; const struct procunit_info *info; const struct procunit_value_info *valinfo; const struct usbmix_name_map *map; @@ -2470,6 +2485,12 @@ break; } + err = get_cur_ctl_value(cval, cval->control << 8, &val); + if (err < 0) { + usb_mixer_elem_info_free(cval); + return -EINVAL; + } + kctl = snd_ctl_new1(&mixer_procunit_ctl, cval); if (!kctl) { usb_mixer_elem_info_free(cval); --- linux-5.8.0.orig/sound/usb/mixer_maps.c +++ linux-5.8.0/sound/usb/mixer_maps.c @@ -370,6 +370,12 @@ {} }; +static const struct usbmix_name_map lenovo_p620_rear_map[] = { + { 19, NULL, 2 }, /* FU, Volume */ + { 19, NULL, 12 }, /* FU, Input Gain Pad */ + {} +}; + /* TRX40 mobos with Realtek ALC1220-VB */ static const struct usbmix_name_map trx40_mobo_map[] = { { 18, NULL }, /* OT, IEC958 - broken response, disabled */ @@ -532,6 +538,16 @@ .map = bose_companion5_map, }, { + /* Corsair Virtuoso SE (wired mode) */ + .id = USB_ID(0x1b1c, 0x0a3d), + .map = corsair_virtuoso_map, + }, + { + /* Corsair Virtuoso SE (wireless mode) */ + .id = USB_ID(0x1b1c, 0x0a3e), + .map = corsair_virtuoso_map, + }, + { /* Corsair Virtuoso (wired mode) */ .id = USB_ID(0x1b1c, 0x0a41), .map = corsair_virtuoso_map, @@ -573,6 +589,10 @@ .map = trx40_mobo_map, .connector_map = trx40_mobo_connector_map, }, + { /* Lenovo ThinkStation P620 Rear */ + .id = USB_ID(0x17aa, 0x1046), + .map = lenovo_p620_rear_map, + }, { 0 } /* terminator */ }; --- linux-5.8.0.orig/sound/usb/mixer_quirks.c +++ linux-5.8.0/sound/usb/mixer_quirks.c @@ -185,6 +185,7 @@ { USB_ID(0x041e, 0x3042), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 */ { USB_ID(0x041e, 0x30df), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */ { USB_ID(0x041e, 0x3237), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */ + { USB_ID(0x041e, 0x3263), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */ { USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */ }; --- linux-5.8.0.orig/sound/usb/mixer_us16x08.c +++ linux-5.8.0/sound/usb/mixer_us16x08.c @@ -607,7 +607,7 @@ static int snd_us16x08_meter_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { - uinfo->count = 1; + uinfo->count = 34; uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->value.integer.max = 0x7FFF; uinfo->value.integer.min = 0; --- linux-5.8.0.orig/sound/usb/pcm.c +++ linux-5.8.0/sound/usb/pcm.c @@ -280,10 +280,7 @@ { struct snd_usb_substream *subs = substream->runtime->private_data; - if (!snd_usb_lock_shutdown(subs->stream->chip)) { - sync_pending_stops(subs); - snd_usb_unlock_shutdown(subs->stream->chip); - } + sync_pending_stops(subs); return 0; } @@ -336,6 +333,7 @@ switch (subs->stream->chip->usb_id) { case USB_ID(0x0763, 0x2030): /* M-Audio Fast Track C400 */ case USB_ID(0x0763, 0x2031): /* M-Audio Fast Track C600 */ + case USB_ID(0x22f0, 0x0006): /* Allen&Heath Qu-16 */ ep = 0x81; ifnum = 3; goto add_sync_ep_from_ifnum; @@ -345,6 +343,7 @@ ifnum = 2; goto add_sync_ep_from_ifnum; case USB_ID(0x2466, 0x8003): /* Fractal Audio Axe-Fx II */ + case USB_ID(0x0499, 0x172a): /* Yamaha MODX */ ep = 0x86; ifnum = 2; goto add_sync_ep_from_ifnum; @@ -352,6 +351,10 @@ ep = 0x81; ifnum = 2; goto add_sync_ep_from_ifnum; + case USB_ID(0x1686, 0xf029): /* Zoom UAC-2 */ + ep = 0x82; + ifnum = 2; + goto add_sync_ep_from_ifnum; case USB_ID(0x1397, 0x0001): /* Behringer UFX1604 */ case USB_ID(0x1397, 0x0002): /* Behringer UFX1204 */ ep = 0x81; @@ -369,11 +372,13 @@ case USB_ID(0x07fd, 0x0008): /* MOTU M Series */ case USB_ID(0x31e9, 0x0001): /* Solid State Logic SSL2 */ case USB_ID(0x31e9, 0x0002): /* Solid State Logic SSL2+ */ + case USB_ID(0x0499, 0x172f): /* Steinberg UR22C */ case USB_ID(0x0d9a, 0x00df): /* RTX6001 */ ep = 0x81; ifnum = 2; goto add_sync_ep_from_ifnum; case USB_ID(0x2b73, 0x000a): /* Pioneer DJ DJM-900NXS2 */ + case USB_ID(0x2b73, 0x0017): /* Pioneer DJ DJM-250MK2 */ ep = 0x82; ifnum = 0; goto add_sync_ep_from_ifnum; @@ -1420,6 +1425,12 @@ // continue; } bytes = urb->iso_frame_desc[i].actual_length; + if (subs->stream_offset_adj > 0) { + unsigned int adj = min(subs->stream_offset_adj, bytes); + cp += adj; + bytes -= adj; + subs->stream_offset_adj -= adj; + } frames = bytes / stride; if (!subs->txfr_quirk) bytes = frames * stride; @@ -1847,7 +1858,7 @@ { struct snd_pcm *pcm = subs->stream->pcm; struct snd_pcm_substream *s = pcm->streams[subs->direction].substream; - struct device *dev = subs->dev->bus->controller; + struct device *dev = subs->dev->bus->sysdev; if (snd_usb_use_vmalloc) snd_pcm_set_managed_buffer(s, SNDRV_DMA_TYPE_VMALLOC, --- linux-5.8.0.orig/sound/usb/quirks-table.h +++ linux-5.8.0/sound/usb/quirks-table.h @@ -2680,6 +2680,10 @@ .data = (const struct snd_usb_audio_quirk[]) { { .ifnum = 0, + .type = QUIRK_AUDIO_STANDARD_MIXER, + }, + { + .ifnum = 0, .type = QUIRK_AUDIO_FIXED_ENDPOINT, .data = &(const struct audioformat) { .formats = SNDRV_PCM_FMTBIT_S24_3LE, @@ -2690,6 +2694,32 @@ .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, .endpoint = 0x01, .ep_attr = USB_ENDPOINT_XFER_ISOC, + .datainterval = 1, + .maxpacksize = 0x024c, + .rates = SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000, + .rate_min = 44100, + .rate_max = 48000, + .nr_rates = 2, + .rate_table = (unsigned int[]) { + 44100, 48000 + } + } + }, + { + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S24_3LE, + .channels = 2, + .iface = 0, + .altsetting = 1, + .altset_idx = 1, + .attributes = 0, + .endpoint = 0x82, + .ep_attr = USB_ENDPOINT_XFER_ISOC, + .datainterval = 1, + .maxpacksize = 0x0126, .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000, .rate_min = 44100, @@ -2794,6 +2824,19 @@ QUIRK_RENAME_DEVICE("Rane", "SL-1") }, +/* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */ +{ + USB_DEVICE(0x17aa, 0x1046), + QUIRK_DEVICE_PROFILE("Lenovo", "ThinkStation P620 Rear", + "Lenovo-ThinkStation-P620-Rear"), +}, +/* Lenovo ThinkStation P620 Internal Speaker + Front Headset */ +{ + USB_DEVICE(0x17aa, 0x104d), + QUIRK_DEVICE_PROFILE("Lenovo", "ThinkStation P620 Main", + "Lenovo-ThinkStation-P620-Main"), +}, + /* Native Instruments MK2 series */ { /* Komplete Audio 6 */ @@ -3502,14 +3545,40 @@ { /* * Pioneer DJ DJM-250MK2 - * PCM is 8 channels out @ 48 fixed (endpoints 0x01). - * The output from computer to the mixer is usable. + * PCM is 8 channels out @ 48 fixed (endpoint 0x01) + * and 8 channels in @ 48 fixed (endpoint 0x82). + * + * Both playback and recording is working, even simultaneously. + * + * Playback channels could be mapped to: + * - CH1 + * - CH2 + * - AUX + * + * Recording channels could be mapped to: + * - Post CH1 Fader + * - Post CH2 Fader + * - Cross Fader A + * - Cross Fader B + * - MIC + * - AUX + * - REC OUT + * + * There is remaining problem with recording directly from PHONO/LINE. + * If we map a channel to: + * - CH1 Control Tone PHONO + * - CH1 Control Tone LINE + * - CH2 Control Tone PHONO + * - CH2 Control Tone LINE + * it is silent. + * There is no signal even on other operating systems with official drivers. + * The signal appears only when a supported application is started. + * This needs to be investigated yet... + * (there is quite a lot communication on the USB in both directions) * - * The input (phono or line to computer) is not working. - * It should be at endpoint 0x82 and probably also 8 channels, - * but it seems that it works only with Pioneer proprietary software. - * Even on officially supported OS, the Audacity was unable to record - * and Mixxx to recognize the control vinyls. + * In current version this mixer could be used for playback + * and for recording from vinyls (through Post CH* Fader) + * but not for DVS (Digital Vinyl Systems) like in Mixxx. */ USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017), .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { @@ -3533,6 +3602,82 @@ .rate_max = 48000, .nr_rates = 1, .rate_table = (unsigned int[]) { 48000 } + } + }, + { + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S24_3LE, + .channels = 8, // inputs + .iface = 0, + .altsetting = 1, + .altset_idx = 1, + .endpoint = 0x82, + .ep_attr = USB_ENDPOINT_XFER_ISOC| + USB_ENDPOINT_SYNC_ASYNC| + USB_ENDPOINT_USAGE_IMPLICIT_FB, + .rates = SNDRV_PCM_RATE_48000, + .rate_min = 48000, + .rate_max = 48000, + .nr_rates = 1, + .rate_table = (unsigned int[]) { 48000 } + } + }, + { + .ifnum = -1 + } + } + } +}, +{ + /* + * PIONEER DJ DDJ-RB + * PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed + * The feedback for the output is the dummy input. + */ + USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e), + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = (const struct snd_usb_audio_quirk[]) { + { + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S24_3LE, + .channels = 4, + .iface = 0, + .altsetting = 1, + .altset_idx = 1, + .endpoint = 0x01, + .ep_attr = USB_ENDPOINT_XFER_ISOC| + USB_ENDPOINT_SYNC_ASYNC, + .rates = SNDRV_PCM_RATE_44100, + .rate_min = 44100, + .rate_max = 44100, + .nr_rates = 1, + .rate_table = (unsigned int[]) { 44100 } + } + }, + { + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S24_3LE, + .channels = 2, + .iface = 0, + .altsetting = 1, + .altset_idx = 1, + .endpoint = 0x82, + .ep_attr = USB_ENDPOINT_XFER_ISOC| + USB_ENDPOINT_SYNC_ASYNC| + USB_ENDPOINT_USAGE_IMPLICIT_FB, + .rates = SNDRV_PCM_RATE_44100, + .rate_min = 44100, + .rate_max = 44100, + .nr_rates = 1, + .rate_table = (unsigned int[]) { 44100 } } }, { @@ -3641,11 +3786,17 @@ * they pretend to be 96kHz mono as a workaround for stereo being broken * by that... * - * They also have swapped L-R channels, but that's for userspace to deal - * with. + * They also have an issue with initial stream alignment that causes the + * channels to be swapped and out of phase, which is dealt with in quirks.c. */ { - USB_DEVICE(0x534d, 0x2109), + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | + USB_DEVICE_ID_MATCH_INT_CLASS | + USB_DEVICE_ID_MATCH_INT_SUBCLASS, + .idVendor = 0x534d, + .idProduct = 0x2109, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL, .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { .vendor_name = "MacroSilicon", .product_name = "MS2109", --- linux-5.8.0.orig/sound/usb/quirks.c +++ linux-5.8.0/sound/usb/quirks.c @@ -1493,8 +1493,12 @@ set_format_emu_quirk(subs, fmt); break; case USB_ID(0x2b73, 0x000a): /* Pioneer DJ DJM-900NXS2 */ + case USB_ID(0x2b73, 0x0017): /* Pioneer DJ DJM-250MK2 */ pioneer_djm_set_format_quirk(subs); break; + case USB_ID(0x534d, 0x2109): /* MacroSilicon MS2109 */ + subs->stream_offset_adj = 2; + break; } } @@ -1512,6 +1516,8 @@ case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */ case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */ case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */ + case USB_ID(0x413c, 0xa506): /* Dell AE515 sound bar */ + case USB_ID(0x046d, 0x084c): /* Logitech ConferenceCam Connect */ return true; } @@ -1664,12 +1670,21 @@ && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) msleep(20); - /* Zoom R16/24, Logitech H650e, Jabra 550a, Kingston HyperX needs a tiny - * delay here, otherwise requests like get/set frequency return as - * failed despite actually succeeding. + /* + * Plantronics headsets (C320, C320-M, etc) need a delay to avoid + * random microhpone failures. + */ + if (USB_ID_VENDOR(chip->usb_id) == 0x047f && + (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) + msleep(20); + + /* Zoom R16/24, many Logitech(at least H650e/H570e/BCC950), + * Jabra 550a, Kingston HyperX needs a tiny delay here, + * otherwise requests like get/set frequency return + * as failed despite actually succeeding. */ if ((chip->usb_id == USB_ID(0x1686, 0x00dd) || - chip->usb_id == USB_ID(0x046d, 0x0a46) || + USB_ID_VENDOR(chip->usb_id) == 0x046d || /* Logitech */ chip->usb_id == USB_ID(0x0b0e, 0x0349) || chip->usb_id == USB_ID(0x0951, 0x16ad)) && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) @@ -1790,7 +1805,9 @@ case 0x25ce: /* Mytek devices */ case 0x278b: /* Rotel? */ case 0x292b: /* Gustard/Ess based devices */ + case 0x2972: /* FiiO devices */ case 0x2ab6: /* T+A devices */ + case 0x3353: /* Khadas devices */ case 0x3842: /* EVGA */ case 0xc502: /* HiBy devices */ if (fp->dsd_raw) --- linux-5.8.0.orig/sound/usb/stream.c +++ linux-5.8.0/sound/usb/stream.c @@ -94,6 +94,7 @@ subs->tx_length_quirk = as->chip->tx_length_quirk; subs->speed = snd_usb_get_speed(subs->dev); subs->pkt_offset_adj = 0; + subs->stream_offset_adj = 0; snd_usb_set_pcm_ops(as->pcm, stream); @@ -192,16 +193,16 @@ struct snd_pcm_chmap *info = snd_kcontrol_chip(kcontrol); struct snd_usb_substream *subs = info->private_data; struct snd_pcm_chmap_elem *chmap = NULL; - int i; + int i = 0; - memset(ucontrol->value.integer.value, 0, - sizeof(ucontrol->value.integer.value)); if (subs->cur_audiofmt) chmap = subs->cur_audiofmt->chmap; if (chmap) { for (i = 0; i < chmap->channels; i++) ucontrol->value.integer.value[i] = chmap->map[i]; } + for (; i < subs->channels_max; i++) + ucontrol->value.integer.value[i] = 0; return 0; } --- linux-5.8.0.orig/sound/x86/Kconfig +++ linux-5.8.0/sound/x86/Kconfig @@ -9,7 +9,7 @@ if SND_X86 config HDMI_LPE_AUDIO - tristate "HDMI audio without HDaudio on Intel Atom platforms" + tristate "HDMI audio without HDAudio on Intel Atom platforms" depends on DRM_I915 select SND_PCM help --- linux-5.8.0.orig/tools/arch/x86/include/asm/insn.h +++ linux-5.8.0/tools/arch/x86/include/asm/insn.h @@ -201,6 +201,21 @@ return insn_offset_displacement(insn) + insn->displacement.nbytes; } +/** + * for_each_insn_prefix() -- Iterate prefixes in the instruction + * @insn: Pointer to struct insn. + * @idx: Index storage. + * @prefix: Prefix byte. + * + * Iterate prefix bytes of given @insn. Each prefix byte is stored in @prefix + * and the index is stored in @idx (note that this @idx is just for a cursor, + * do not change it.) + * Since prefixes.nbytes can be bigger than 4 if some prefixes + * are repeated, it cannot be used for looping over the prefixes. + */ +#define for_each_insn_prefix(insn, idx, prefix) \ + for (idx = 0; idx < ARRAY_SIZE(insn->prefixes.bytes) && (prefix = insn->prefixes.bytes[idx]) != 0; idx++) + #define POP_SS_OPCODE 0x1f #define MOV_SREG_OPCODE 0x8e --- linux-5.8.0.orig/tools/arch/x86/lib/memcpy_64.S +++ linux-5.8.0/tools/arch/x86/lib/memcpy_64.S @@ -4,7 +4,6 @@ #include #include #include -#include #include #include @@ -187,117 +186,3 @@ SYM_FUNC_END(memcpy_orig) .popsection - -#ifndef CONFIG_UML - -MCSAFE_TEST_CTL - -/* - * __memcpy_mcsafe - memory copy with machine check exception handling - * Note that we only catch machine checks when reading the source addresses. - * Writes to target are posted and don't generate machine checks. - */ -SYM_FUNC_START(__memcpy_mcsafe) - cmpl $8, %edx - /* Less than 8 bytes? Go to byte copy loop */ - jb .L_no_whole_words - - /* Check for bad alignment of source */ - testl $7, %esi - /* Already aligned */ - jz .L_8byte_aligned - - /* Copy one byte at a time until source is 8-byte aligned */ - movl %esi, %ecx - andl $7, %ecx - subl $8, %ecx - negl %ecx - subl %ecx, %edx -.L_read_leading_bytes: - movb (%rsi), %al - MCSAFE_TEST_SRC %rsi 1 .E_leading_bytes - MCSAFE_TEST_DST %rdi 1 .E_leading_bytes -.L_write_leading_bytes: - movb %al, (%rdi) - incq %rsi - incq %rdi - decl %ecx - jnz .L_read_leading_bytes - -.L_8byte_aligned: - movl %edx, %ecx - andl $7, %edx - shrl $3, %ecx - jz .L_no_whole_words - -.L_read_words: - movq (%rsi), %r8 - MCSAFE_TEST_SRC %rsi 8 .E_read_words - MCSAFE_TEST_DST %rdi 8 .E_write_words -.L_write_words: - movq %r8, (%rdi) - addq $8, %rsi - addq $8, %rdi - decl %ecx - jnz .L_read_words - - /* Any trailing bytes? */ -.L_no_whole_words: - andl %edx, %edx - jz .L_done_memcpy_trap - - /* Copy trailing bytes */ - movl %edx, %ecx -.L_read_trailing_bytes: - movb (%rsi), %al - MCSAFE_TEST_SRC %rsi 1 .E_trailing_bytes - MCSAFE_TEST_DST %rdi 1 .E_trailing_bytes -.L_write_trailing_bytes: - movb %al, (%rdi) - incq %rsi - incq %rdi - decl %ecx - jnz .L_read_trailing_bytes - - /* Copy successful. Return zero */ -.L_done_memcpy_trap: - xorl %eax, %eax -.L_done: - ret -SYM_FUNC_END(__memcpy_mcsafe) -EXPORT_SYMBOL_GPL(__memcpy_mcsafe) - - .section .fixup, "ax" - /* - * Return number of bytes not copied for any failure. Note that - * there is no "tail" handling since the source buffer is 8-byte - * aligned and poison is cacheline aligned. - */ -.E_read_words: - shll $3, %ecx -.E_leading_bytes: - addl %edx, %ecx -.E_trailing_bytes: - mov %ecx, %eax - jmp .L_done - - /* - * For write fault handling, given the destination is unaligned, - * we handle faults on multi-byte writes with a byte-by-byte - * copy up to the write-protected page. - */ -.E_write_words: - shll $3, %ecx - addl %edx, %ecx - movl %ecx, %edx - jmp mcsafe_handle_tail - - .previous - - _ASM_EXTABLE_FAULT(.L_read_leading_bytes, .E_leading_bytes) - _ASM_EXTABLE_FAULT(.L_read_words, .E_read_words) - _ASM_EXTABLE_FAULT(.L_read_trailing_bytes, .E_trailing_bytes) - _ASM_EXTABLE(.L_write_leading_bytes, .E_leading_bytes) - _ASM_EXTABLE(.L_write_words, .E_write_words) - _ASM_EXTABLE(.L_write_trailing_bytes, .E_trailing_bytes) -#endif --- linux-5.8.0.orig/tools/bootconfig/main.c +++ linux-5.8.0/tools/bootconfig/main.c @@ -274,6 +274,7 @@ int apply_xbc(const char *path, const char *xbc_path) { + struct stat stat; u32 size, csum; char *buf, *data; int ret, fd; @@ -330,16 +331,26 @@ return fd; } /* TODO: Ensure the @path is initramfs/initrd image */ + if (fstat(fd, &stat) < 0) { + pr_err("Failed to get the size of %s\n", path); + goto out; + } ret = write(fd, data, size + 8); - if (ret < 0) { + if (ret < size + 8) { + if (ret < 0) + ret = -errno; pr_err("Failed to apply a boot config: %d\n", ret); - goto out; + if (ret < 0) + goto out; + goto out_rollback; } /* Write a magic word of the bootconfig */ ret = write(fd, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN); - if (ret < 0) { + if (ret < BOOTCONFIG_MAGIC_LEN) { + if (ret < 0) + ret = -errno; pr_err("Failed to apply a boot config magic: %d\n", ret); - goto out; + goto out_rollback; } ret = 0; out: @@ -347,6 +358,17 @@ free(data); return ret; + +out_rollback: + /* Map the partial write to -ENOSPC */ + if (ret >= 0) + ret = -ENOSPC; + if (ftruncate(fd, stat.st_size) < 0) { + ret = -errno; + pr_err("Failed to rollback the write error: %d\n", ret); + pr_err("The initrd %s may be corrupted. Recommend to rebuild.\n", path); + } + goto out; } int usage(void) --- linux-5.8.0.orig/tools/bpf/bpftool/btf.c +++ linux-5.8.0/tools/bpf/bpftool/btf.c @@ -596,7 +596,7 @@ goto done; } if (!btf) { - err = ENOENT; + err = -ENOENT; p_err("can't find btf with ID (%u)", btf_id); goto done; } @@ -745,6 +745,7 @@ obj_node = calloc(1, sizeof(*obj_node)); if (!obj_node) { p_err("failed to allocate memory: %s", strerror(errno)); + err = -ENOMEM; goto err_free; } --- linux-5.8.0.orig/tools/bpf/bpftool/btf_dumper.c +++ linux-5.8.0/tools/bpf/bpftool/btf_dumper.c @@ -67,7 +67,7 @@ if (!info->btf_id || !info->nr_func_info || btf__get_from_id(info->btf_id, &prog_btf)) goto print; - finfo = (struct bpf_func_info *)info->func_info; + finfo = u64_to_ptr(info->func_info); func_type = btf__type_by_id(prog_btf, finfo->type_id); if (!func_type || !btf_is_func(func_type)) goto print; --- linux-5.8.0.orig/tools/bpf/bpftool/feature.c +++ linux-5.8.0/tools/bpf/bpftool/feature.c @@ -835,9 +835,14 @@ else p_err("missing %s%s%s%s%s%s%s%srequired for full feature probing; run as root or use 'unprivileged'", capability_msg(bpf_caps, 0), +#ifdef CAP_BPF capability_msg(bpf_caps, 1), capability_msg(bpf_caps, 2), - capability_msg(bpf_caps, 3)); + capability_msg(bpf_caps, 3) +#else + "", "", "", "", "", "" +#endif /* CAP_BPF */ + ); goto exit_free; } --- linux-5.8.0.orig/tools/bpf/bpftool/gen.c +++ linux-5.8.0/tools/bpf/bpftool/gen.c @@ -305,8 +305,11 @@ opts.object_name = obj_name; obj = bpf_object__open_mem(obj_data, file_sz, &opts); if (IS_ERR(obj)) { + char err_buf[256]; + + libbpf_strerror(PTR_ERR(obj), err_buf, sizeof(err_buf)); + p_err("failed to open BPF object file: %s", err_buf); obj = NULL; - p_err("failed to open BPF object file: %ld", PTR_ERR(obj)); goto out; } @@ -397,7 +400,7 @@ { \n\ struct %1$s *obj; \n\ \n\ - obj = (typeof(obj))calloc(1, sizeof(*obj)); \n\ + obj = (struct %1$s *)calloc(1, sizeof(*obj)); \n\ if (!obj) \n\ return NULL; \n\ if (%1$s__create_skeleton(obj)) \n\ @@ -461,7 +464,7 @@ { \n\ struct bpf_object_skeleton *s; \n\ \n\ - s = (typeof(s))calloc(1, sizeof(*s)); \n\ + s = (struct bpf_object_skeleton *)calloc(1, sizeof(*s));\n\ if (!s) \n\ return -1; \n\ obj->skeleton = s; \n\ @@ -479,7 +482,7 @@ /* maps */ \n\ s->map_cnt = %zu; \n\ s->map_skel_sz = sizeof(*s->maps); \n\ - s->maps = (typeof(s->maps))calloc(s->map_cnt, s->map_skel_sz);\n\ + s->maps = (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz);\n\ if (!s->maps) \n\ goto err; \n\ ", @@ -515,7 +518,7 @@ /* programs */ \n\ s->prog_cnt = %zu; \n\ s->prog_skel_sz = sizeof(*s->progs); \n\ - s->progs = (typeof(s->progs))calloc(s->prog_cnt, s->prog_skel_sz);\n\ + s->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz);\n\ if (!s->progs) \n\ goto err; \n\ ", --- linux-5.8.0.orig/tools/bpf/bpftool/link.c +++ linux-5.8.0/tools/bpf/bpftool/link.c @@ -101,7 +101,7 @@ switch (info->type) { case BPF_LINK_TYPE_RAW_TRACEPOINT: jsonw_string_field(json_wtr, "tp_name", - (const char *)info->raw_tracepoint.tp_name); + u64_to_ptr(info->raw_tracepoint.tp_name)); break; case BPF_LINK_TYPE_TRACING: err = get_prog_info(info->prog_id, &prog_info); @@ -177,7 +177,7 @@ switch (info->type) { case BPF_LINK_TYPE_RAW_TRACEPOINT: printf("\n\ttp '%s' ", - (const char *)info->raw_tracepoint.tp_name); + (const char *)u64_to_ptr(info->raw_tracepoint.tp_name)); break; case BPF_LINK_TYPE_TRACING: err = get_prog_info(info->prog_id, &prog_info); --- linux-5.8.0.orig/tools/bpf/bpftool/main.h +++ linux-5.8.0/tools/bpf/bpftool/main.h @@ -21,7 +21,15 @@ /* Make sure we do not use kernel-only integer typedefs */ #pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64 -#define ptr_to_u64(ptr) ((__u64)(unsigned long)(ptr)) +static inline __u64 ptr_to_u64(const void *ptr) +{ + return (__u64)(unsigned long)ptr; +} + +static inline void *u64_to_ptr(__u64 ptr) +{ + return (void *)(unsigned long)ptr; +} #define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); }) #define NEXT_ARGP() ({ (*argc)--; (*argv)++; if (*argc < 0) usage(); }) --- linux-5.8.0.orig/tools/bpf/bpftool/net.c +++ linux-5.8.0/tools/bpf/bpftool/net.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -313,8 +312,8 @@ ifindex = net_parse_dev(&argc, &argv); if (ifindex < 1) { - close(progfd); - return -EINVAL; + err = -EINVAL; + goto cleanup; } if (argc) { @@ -322,8 +321,8 @@ overwrite = true; } else { p_err("expected 'overwrite', got: '%s'?", *argv); - close(progfd); - return -EINVAL; + err = -EINVAL; + goto cleanup; } } @@ -331,17 +330,17 @@ if (is_prefix("xdp", attach_type_strings[attach_type])) err = do_attach_detach_xdp(progfd, attach_type, ifindex, overwrite); - - if (err < 0) { + if (err) { p_err("interface %s attach failed: %s", attach_type_strings[attach_type], strerror(-err)); - return err; + goto cleanup; } if (json_output) jsonw_null(json_wtr); - - return 0; +cleanup: + close(progfd); + return err; } static int do_detach(int argc, char **argv) --- linux-5.8.0.orig/tools/bpf/bpftool/prog.c +++ linux-5.8.0/tools/bpf/bpftool/prog.c @@ -537,14 +537,14 @@ p_info("no instructions returned"); return -1; } - buf = (unsigned char *)(info->jited_prog_insns); + buf = u64_to_ptr(info->jited_prog_insns); member_len = info->jited_prog_len; } else { /* DUMP_XLATED */ if (info->xlated_prog_len == 0 || !info->xlated_prog_insns) { p_err("error retrieving insn dump: kernel.kptr_restrict set?"); return -1; } - buf = (unsigned char *)info->xlated_prog_insns; + buf = u64_to_ptr(info->xlated_prog_insns); member_len = info->xlated_prog_len; } @@ -553,7 +553,7 @@ return -1; } - func_info = (void *)info->func_info; + func_info = u64_to_ptr(info->func_info); if (info->nr_line_info) { prog_linfo = bpf_prog_linfo__new(info); @@ -571,7 +571,7 @@ n = write(fd, buf, member_len); close(fd); - if (n != member_len) { + if (n != (ssize_t)member_len) { p_err("error writing output file: %s", n < 0 ? strerror(errno) : "short write"); return -1; @@ -601,13 +601,13 @@ __u32 i; if (info->nr_jited_ksyms) { kernel_syms_load(&dd); - ksyms = (__u64 *) info->jited_ksyms; + ksyms = u64_to_ptr(info->jited_ksyms); } if (json_output) jsonw_start_array(json_wtr); - lens = (__u32 *) info->jited_func_lens; + lens = u64_to_ptr(info->jited_func_lens); for (i = 0; i < info->nr_jited_func_lens; i++) { if (ksyms) { sym = kernel_syms_search(&dd, ksyms[i]); @@ -668,7 +668,7 @@ } else { kernel_syms_load(&dd); dd.nr_jited_ksyms = info->nr_jited_ksyms; - dd.jited_ksyms = (__u64 *) info->jited_ksyms; + dd.jited_ksyms = u64_to_ptr(info->jited_ksyms); dd.btf = btf; dd.func_info = func_info; dd.finfo_rec_size = info->func_info_rec_size; @@ -850,7 +850,7 @@ } if (*attach_type == BPF_FLOW_DISSECTOR) { - *mapfd = -1; + *mapfd = 0; return 0; } @@ -1790,7 +1790,7 @@ goto out; } - func_info = (struct bpf_func_info *)(info_linear->info.func_info); + func_info = u64_to_ptr(info_linear->info.func_info); t = btf__type_by_id(btf, func_info[0].type_id); if (!t) { p_err("btf %d doesn't have type %d", --- linux-5.8.0.orig/tools/build/Build.include +++ linux-5.8.0/tools/build/Build.include @@ -74,7 +74,8 @@ # dependencies in the cmd file if_changed_dep = $(if $(strip $(any-prereq) $(arg-check)), \ @set -e; \ - $(echo-cmd) $(cmd_$(1)) && $(dep-cmd)) + $(echo-cmd) $(cmd_$(1)); \ + $(dep-cmd)) # if_changed - execute command if any prerequisite is newer than # target, or command line has changed --- linux-5.8.0.orig/tools/build/Makefile +++ linux-5.8.0/tools/build/Makefile @@ -15,10 +15,6 @@ $(call allow-override,CC,$(CROSS_COMPILE)gcc) $(call allow-override,LD,$(CROSS_COMPILE)ld) -HOSTCC ?= gcc -HOSTLD ?= ld -HOSTAR ?= ar - export HOSTCC HOSTLD HOSTAR ifeq ($(V),1) --- linux-5.8.0.orig/tools/build/Makefile.feature +++ linux-5.8.0/tools/build/Makefile.feature @@ -8,7 +8,7 @@ feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CC="$(CC)" CXX="$(CXX)" CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code)) @@ -38,8 +38,6 @@ get_current_dir_name \ gettid \ glibc \ - gtk2 \ - gtk2-infobar \ libbfd \ libcap \ libelf \ @@ -81,6 +79,8 @@ compile-32 \ compile-x32 \ cplus-demangle \ + gtk2 \ + gtk2-infobar \ hello \ libbabeltrace \ libbfd-liberty \ @@ -110,7 +110,6 @@ dwarf \ dwarf_getlocations \ glibc \ - gtk2 \ libbfd \ libcap \ libelf \ --- linux-5.8.0.orig/tools/build/feature/Makefile +++ linux-5.8.0/tools/build/feature/Makefile @@ -74,8 +74,6 @@ FILES := $(addprefix $(OUTPUT),$(FILES)) -CC ?= $(CROSS_COMPILE)gcc -CXX ?= $(CROSS_COMPILE)g++ PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config LLVM_CONFIG ?= llvm-config CLANG ?= clang @@ -91,7 +89,7 @@ ############################### $(OUTPUT)test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -I/usr/include/slang -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap $(OUTPUT)test-hello.bin: $(BUILD) --- linux-5.8.0.orig/tools/build/feature/test-all.c +++ linux-5.8.0/tools/build/feature/test-all.c @@ -78,14 +78,6 @@ # include "test-libslang.c" #undef main -#define main main_test_gtk2 -# include "test-gtk2.c" -#undef main - -#define main main_test_gtk2_infobar -# include "test-gtk2-infobar.c" -#undef main - #define main main_test_libbfd # include "test-libbfd.c" #undef main @@ -205,8 +197,6 @@ main_test_libelf_getshdrstrndx(); main_test_libunwind(); main_test_libslang(); - main_test_gtk2(argc, argv); - main_test_gtk2_infobar(argc, argv); main_test_libbfd(); main_test_backtrace(); main_test_libnuma(); --- linux-5.8.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-5.8.0/tools/hv/hv_kvp_daemon.8 @@ -0,0 +1,26 @@ +.\" This page Copyright (C) 2012 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH HV_KVP_DAEMON 8 +.SH NAME +hv_kvp_daemon \- Hyper-V Key Value Pair daemon +.SH SYNOPSIS +.ft B +.B hv_kvp_daemon +.br +.SH DESCRIPTION +\fBhv_kvp_daemon\fP +is the userspace component of the Hyper-V key value pair functionality, +communicating via a netlink socket with the kernel HV-KVP driver. +This pairing allows the Hyper-V host to pass configuration information +(such as IP addresses) to the guest and allows the host to obtain guest +version information. + +.SH FILES +.ta +.nf +/var/opt/hyperv/.kvp_pool_* +.fi + +.SH AUTHORS +.nf +Written by K. Y. Srinivasan --- linux-5.8.0.orig/tools/hv/lsvmbus +++ linux-5.8.0/tools/hv/lsvmbus @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0 import os --- linux-5.8.0.orig/tools/hv/lsvmbus.8 +++ linux-5.8.0/tools/hv/lsvmbus.8 @@ -0,0 +1,23 @@ +.\" This page Copyright (C) 2016 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH LSVMBUS 8 +.SH NAME +lsvmbus \- List Hyper-V VMBus devices +.SH SYNOPSIS +.ft B +.B lsvmbus [-vv] +.br +.SH DESCRIPTION +\fBlsvmbus\fP +displays devices attached to the Hyper-V VMBus. +.SH OPTIONS +.\" +.TP +.B -v +With -v more information is printed including the VMBus Rel_ID, class ID, +Rel_ID, and which channel is bound to which virtual processor. Use -vv +for additional detail including the Device_ID and the sysfs path. +.\" +.SH AUTHORS +.nf +Written by Dexuan Cui --- linux-5.8.0.orig/tools/include/uapi/linux/bpf.h +++ linux-5.8.0/tools/include/uapi/linux/bpf.h @@ -1416,8 +1416,8 @@ * Return * The return value depends on the result of the test, and can be: * - * * 0, if the *skb* task belongs to the cgroup2. - * * 1, if the *skb* task does not belong to the cgroup2. + * * 0, if current task belongs to the cgroup2. + * * 1, if current task does not belong to the cgroup2. * * A negative error code, if an error occurred. * * int bpf_skb_change_tail(struct sk_buff *skb, u32 len, u64 flags) @@ -3168,7 +3168,7 @@ * Return * The id is returned or 0 in case the id could not be retrieved. * - * int bpf_ringbuf_output(void *ringbuf, void *data, u64 size, u64 flags) + * long bpf_ringbuf_output(void *ringbuf, void *data, u64 size, u64 flags) * Description * Copy *size* bytes from *data* into a ring buffer *ringbuf*. * If **BPF_RB_NO_WAKEUP** is specified in *flags*, no notification --- linux-5.8.0.orig/tools/include/uapi/linux/const.h +++ linux-5.8.0/tools/include/uapi/linux/const.h @@ -28,4 +28,9 @@ #define _BITUL(x) (_UL(1) << (x)) #define _BITULL(x) (_ULL(1) << (x)) +#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) +#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) + +#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) + #endif /* _UAPI_LINUX_CONST_H */ --- linux-5.8.0.orig/tools/include/uapi/linux/fscrypt.h +++ linux-5.8.0/tools/include/uapi/linux/fscrypt.h @@ -20,7 +20,6 @@ #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10 -#define FSCRYPT_POLICY_FLAGS_VALID 0x1F /* Encryption algorithms */ #define FSCRYPT_MODE_AES_256_XTS 1 @@ -28,7 +27,7 @@ #define FSCRYPT_MODE_AES_128_CBC 5 #define FSCRYPT_MODE_AES_128_CTS 6 #define FSCRYPT_MODE_ADIANTUM 9 -#define __FSCRYPT_MODE_MAX 9 +/* If adding a mode number > 9, update FSCRYPT_MODE_MAX in fscrypt_private.h */ /* * Legacy policy version; ad-hoc KDF and no key verification. @@ -177,7 +176,7 @@ #define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32 #define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK #define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY -#define FS_POLICY_FLAGS_VALID FSCRYPT_POLICY_FLAGS_VALID +#define FS_POLICY_FLAGS_VALID 0x07 /* contains old flags only */ #define FS_ENCRYPTION_MODE_INVALID 0 /* never used */ #define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS #define FS_ENCRYPTION_MODE_AES_256_GCM 2 /* never used */ --- linux-5.8.0.orig/tools/include/uapi/linux/perf_event.h +++ linux-5.8.0/tools/include/uapi/linux/perf_event.h @@ -1155,7 +1155,7 @@ #define PERF_MEM_SNOOPX_FWD 0x01 /* forward */ /* 1 free */ -#define PERF_MEM_SNOOPX_SHIFT 37 +#define PERF_MEM_SNOOPX_SHIFT 38 /* locked instruction */ #define PERF_MEM_LOCK_NA 0x01 /* not available */ --- linux-5.8.0.orig/tools/io_uring/io_uring-bench.c +++ linux-5.8.0/tools/io_uring/io_uring-bench.c @@ -130,7 +130,7 @@ s->nr_files); } -static int gettid(void) +static int lk_gettid(void) { return syscall(__NR_gettid); } @@ -281,7 +281,7 @@ struct io_sq_ring *ring = &s->sq_ring; int ret, prepped; - printf("submitter=%d\n", gettid()); + printf("submitter=%d\n", lk_gettid()); srand48_r(pthread_self(), &s->rand); --- linux-5.8.0.orig/tools/lib/bpf/Makefile +++ linux-5.8.0/tools/lib/bpf/Makefile @@ -59,7 +59,7 @@ FEATURE_TESTS = libelf libelf-mmap zlib bpf reallocarray FEATURE_DISPLAY = libelf zlib bpf -INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi +INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/include/uapi FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES) check_feat := 1 @@ -152,6 +152,8 @@ awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}' | \ sort -u | wc -l) VERSIONED_SYM_COUNT = $(shell readelf --dyn-syms --wide $(OUTPUT)libbpf.so | \ + sed 's/\[.*\]//' | \ + awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}' | \ grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | sort -u | wc -l) CMD_TARGETS = $(LIB_TARGET) $(PC_FILE) @@ -219,6 +221,8 @@ awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}'| \ sort -u > $(OUTPUT)libbpf_global_syms.tmp; \ readelf --dyn-syms --wide $(OUTPUT)libbpf.so | \ + sed 's/\[.*\]//' | \ + awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {print $$NF}'| \ grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | \ sort -u > $(OUTPUT)libbpf_versioned_syms.tmp; \ diff -u $(OUTPUT)libbpf_global_syms.tmp \ @@ -238,7 +242,7 @@ if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ fi; \ - $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2' + $(INSTALL) $(if $3,-m $3,) $1 '$(DESTDIR_SQ)$2' endef install_lib: all_cmd --- linux-5.8.0.orig/tools/lib/bpf/bpf_tracing.h +++ linux-5.8.0/tools/lib/bpf/bpf_tracing.h @@ -215,7 +215,7 @@ #define PT_REGS_PARM5(x) ((x)->regs[8]) #define PT_REGS_RET(x) ((x)->regs[31]) #define PT_REGS_FP(x) ((x)->regs[30]) /* Works only with CONFIG_FRAME_POINTER */ -#define PT_REGS_RC(x) ((x)->regs[1]) +#define PT_REGS_RC(x) ((x)->regs[2]) #define PT_REGS_SP(x) ((x)->regs[29]) #define PT_REGS_IP(x) ((x)->cp0_epc) @@ -226,7 +226,7 @@ #define PT_REGS_PARM5_CORE(x) BPF_CORE_READ((x), regs[8]) #define PT_REGS_RET_CORE(x) BPF_CORE_READ((x), regs[31]) #define PT_REGS_FP_CORE(x) BPF_CORE_READ((x), regs[30]) -#define PT_REGS_RC_CORE(x) BPF_CORE_READ((x), regs[1]) +#define PT_REGS_RC_CORE(x) BPF_CORE_READ((x), regs[2]) #define PT_REGS_SP_CORE(x) BPF_CORE_READ((x), regs[29]) #define PT_REGS_IP_CORE(x) BPF_CORE_READ((x), cp0_epc) --- linux-5.8.0.orig/tools/lib/bpf/btf_dump.c +++ linux-5.8.0/tools/lib/bpf/btf_dump.c @@ -448,7 +448,7 @@ return err; case BTF_KIND_ARRAY: - return btf_dump_order_type(d, btf_array(t)->type, through_ptr); + return btf_dump_order_type(d, btf_array(t)->type, false); case BTF_KIND_STRUCT: case BTF_KIND_UNION: { --- linux-5.8.0.orig/tools/lib/bpf/hashmap.h +++ linux-5.8.0/tools/lib/bpf/hashmap.h @@ -15,6 +15,9 @@ static inline size_t hash_bits(size_t h, int bits) { /* shuffle bits and return requested number of upper bits */ + if (bits == 0) + return 0; + #if (__SIZEOF_SIZE_T__ == __SIZEOF_LONG_LONG__) /* LP64 case */ return (h * 11400714819323198485llu) >> (__SIZEOF_LONG_LONG__ * 8 - bits); @@ -162,17 +165,17 @@ * @key: key to iterate entries for */ #define hashmap__for_each_key_entry(map, cur, _key) \ - for (cur = ({ size_t bkt = hash_bits(map->hash_fn((_key), map->ctx),\ - map->cap_bits); \ - map->buckets ? map->buckets[bkt] : NULL; }); \ + for (cur = map->buckets \ + ? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \ + : NULL; \ cur; \ cur = cur->next) \ if (map->equal_fn(cur->key, (_key), map->ctx)) #define hashmap__for_each_key_entry_safe(map, cur, tmp, _key) \ - for (cur = ({ size_t bkt = hash_bits(map->hash_fn((_key), map->ctx),\ - map->cap_bits); \ - cur = map->buckets ? map->buckets[bkt] : NULL; }); \ + for (cur = map->buckets \ + ? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \ + : NULL; \ cur && ({ tmp = cur->next; true; }); \ cur = tmp) \ if (map->equal_fn(cur->key, (_key), map->ctx)) --- linux-5.8.0.orig/tools/lib/bpf/libbpf.c +++ linux-5.8.0/tools/lib/bpf/libbpf.c @@ -811,24 +811,24 @@ if (btf_is_ptr(mtype)) { struct bpf_program *prog; - mtype = skip_mods_and_typedefs(btf, mtype->type, &mtype_id); + prog = st_ops->progs[i]; + if (!prog) + continue; + kern_mtype = skip_mods_and_typedefs(kern_btf, kern_mtype->type, &kern_mtype_id); - if (!btf_is_func_proto(mtype) || - !btf_is_func_proto(kern_mtype)) { - pr_warn("struct_ops init_kern %s: non func ptr %s is not supported\n", + + /* mtype->type must be a func_proto which was + * guaranteed in bpf_object__collect_st_ops_relos(), + * so only check kern_mtype for func_proto here. + */ + if (!btf_is_func_proto(kern_mtype)) { + pr_warn("struct_ops init_kern %s: kernel member %s is not a func ptr\n", map->name, mname); return -ENOTSUP; } - prog = st_ops->progs[i]; - if (!prog) { - pr_debug("struct_ops init_kern %s: func ptr %s is not set\n", - map->name, mname); - continue; - } - prog->attach_btf_id = kern_type_id; prog->expected_attach_type = kern_member_idx; @@ -2237,7 +2237,7 @@ data = elf_getdata(scn, NULL); if (!scn || !data) { pr_warn("failed to get Elf_Data from map section %d (%s)\n", - obj->efile.maps_shndx, MAPS_ELF_SEC); + obj->efile.btf_maps_shndx, MAPS_ELF_SEC); return -EINVAL; } @@ -3319,10 +3319,11 @@ map = bpf_create_map_xattr(&map_attr); if (map < 0) { - cp = libbpf_strerror_r(errno, errmsg, sizeof(errmsg)); + ret = -errno; + cp = libbpf_strerror_r(ret, errmsg, sizeof(errmsg)); pr_warn("Error in %s():%s(%d). Couldn't create simple array map.\n", - __func__, cp, errno); - return -errno; + __func__, cp, -ret); + return ret; } insns[0].imm = map; @@ -3676,6 +3677,36 @@ return 0; } +static int init_map_slots(struct bpf_map *map) +{ + const struct bpf_map *targ_map; + unsigned int i; + int fd, err; + + for (i = 0; i < map->init_slots_sz; i++) { + if (!map->init_slots[i]) + continue; + + targ_map = map->init_slots[i]; + fd = bpf_map__fd(targ_map); + err = bpf_map_update_elem(map->fd, &i, &fd, 0); + if (err) { + err = -errno; + pr_warn("map '%s': failed to initialize slot [%d] to map '%s' fd=%d: %d\n", + map->name, i, targ_map->name, + fd, err); + return err; + } + pr_debug("map '%s': slot [%d] set to map '%s' fd=%d\n", + map->name, i, targ_map->name, fd); + } + + zfree(&map->init_slots); + map->init_slots_sz = 0; + + return 0; +} + static int bpf_object__create_maps(struct bpf_object *obj) { @@ -3718,28 +3749,11 @@ } if (map->init_slots_sz) { - for (j = 0; j < map->init_slots_sz; j++) { - const struct bpf_map *targ_map; - int fd; - - if (!map->init_slots[j]) - continue; - - targ_map = map->init_slots[j]; - fd = bpf_map__fd(targ_map); - err = bpf_map_update_elem(map->fd, &j, &fd, 0); - if (err) { - err = -errno; - pr_warn("map '%s': failed to initialize slot [%d] to map '%s' fd=%d: %d\n", - map->name, j, targ_map->name, - fd, err); - goto err_out; - } - pr_debug("map '%s': slot [%d] set to map '%s' fd=%d\n", - map->name, j, targ_map->name, fd); + err = init_map_slots(map); + if (err < 0) { + zclose(map->fd); + goto err_out; } - zfree(&map->init_slots); - map->init_slots_sz = 0; } if (map->pin_path && !map->pinned) { @@ -5025,11 +5039,12 @@ static int bpf_object__collect_map_relos(struct bpf_object *obj, GElf_Shdr *shdr, Elf_Data *data) { - int i, j, nrels, new_sz, ptr_sz = sizeof(void *); + const int bpf_ptr_sz = 8, host_ptr_sz = sizeof(void *); + int i, j, nrels, new_sz; const struct btf_var_secinfo *vi = NULL; const struct btf_type *sec, *var, *def; + struct bpf_map *map = NULL, *targ_map; const struct btf_member *member; - struct bpf_map *map, *targ_map; const char *name, *mname; Elf_Data *symbols; unsigned int moff; @@ -5074,7 +5089,7 @@ vi = btf_var_secinfos(sec) + map->btf_var_idx; if (vi->offset <= rel.r_offset && - rel.r_offset + sizeof(void *) <= vi->offset + vi->size) + rel.r_offset + bpf_ptr_sz <= vi->offset + vi->size) break; } if (j == obj->nr_maps) { @@ -5110,17 +5125,20 @@ return -EINVAL; moff = rel.r_offset - vi->offset - moff; - if (moff % ptr_sz) + /* here we use BPF pointer size, which is always 64 bit, as we + * are parsing ELF that was built for BPF target + */ + if (moff % bpf_ptr_sz) return -EINVAL; - moff /= ptr_sz; + moff /= bpf_ptr_sz; if (moff >= map->init_slots_sz) { new_sz = moff + 1; - tmp = realloc(map->init_slots, new_sz * ptr_sz); + tmp = realloc(map->init_slots, new_sz * host_ptr_sz); if (!tmp) return -ENOMEM; map->init_slots = tmp; memset(map->init_slots + map->init_slots_sz, 0, - (new_sz - map->init_slots_sz) * ptr_sz); + (new_sz - map->init_slots_sz) * host_ptr_sz); map->init_slots_sz = new_sz; } map->init_slots[moff] = targ_map; @@ -5248,7 +5266,7 @@ free(log_buf); goto retry_load; } - ret = -errno; + ret = errno ? -errno : -LIBBPF_ERRNO__LOAD; cp = libbpf_strerror_r(errno, errmsg, sizeof(errmsg)); pr_warn("load bpf program failed: %s\n", cp); pr_perm_msg(ret); @@ -5775,9 +5793,10 @@ } if (bpf_obj_pin(prog->instances.fds[instance], path)) { - cp = libbpf_strerror_r(errno, errmsg, sizeof(errmsg)); + err = -errno; + cp = libbpf_strerror_r(err, errmsg, sizeof(errmsg)); pr_warn("failed to pin program: %s\n", cp); - return -errno; + return err; } pr_debug("pinned program '%s'\n", path); @@ -6047,6 +6066,16 @@ return map->pinned; } +static void sanitize_pin_path(char *s) +{ + /* bpffs disallows periods in path names */ + while (*s) { + if (*s == '.') + *s = '_'; + s++; + } +} + int bpf_object__pin_maps(struct bpf_object *obj, const char *path) { struct bpf_map *map; @@ -6076,6 +6105,7 @@ err = -ENAMETOOLONG; goto err_unpin_maps; } + sanitize_pin_path(buf); pin_path = buf; } else if (!map->pin_path) { continue; @@ -6120,6 +6150,7 @@ return -EINVAL; else if (len >= PATH_MAX) return -ENAMETOOLONG; + sanitize_pin_path(buf); pin_path = buf; } else if (!map->pin_path) { continue; --- linux-5.8.0.orig/tools/lib/bpf/netlink.c +++ linux-5.8.0/tools/lib/bpf/netlink.c @@ -41,7 +41,7 @@ memset(&sa, 0, sizeof(sa)); sa.nl_family = AF_NETLINK; - sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); + sock = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE); if (sock < 0) return -errno; --- linux-5.8.0.orig/tools/lib/bpf/xsk.c +++ linux-5.8.0/tools/lib/bpf/xsk.c @@ -516,15 +516,16 @@ if (fd < 0) continue; + memset(&map_info, 0, map_len); err = bpf_obj_get_info_by_fd(fd, &map_info, &map_len); if (err) { close(fd); continue; } - if (!strcmp(map_info.name, "xsks_map")) { + if (!strncmp(map_info.name, "xsks_map", sizeof(map_info.name))) { xsk->xsks_map_fd = fd; - continue; + break; } close(fd); --- linux-5.8.0.orig/tools/lib/perf/evlist.c +++ linux-5.8.0/tools/lib/perf/evlist.c @@ -45,6 +45,9 @@ if (!evsel->own_cpus || evlist->has_user_cpus) { perf_cpu_map__put(evsel->cpus); evsel->cpus = perf_cpu_map__get(evlist->cpus); + } else if (!evsel->system_wide && perf_cpu_map__empty(evlist->cpus)) { + perf_cpu_map__put(evsel->cpus); + evsel->cpus = perf_cpu_map__get(evlist->cpus); } else if (evsel->cpus != evsel->own_cpus) { perf_cpu_map__put(evsel->cpus); evsel->cpus = perf_cpu_map__get(evsel->own_cpus); @@ -364,21 +367,13 @@ return map; } -static void perf_evlist__set_sid_idx(struct perf_evlist *evlist, - struct perf_evsel *evsel, int idx, int cpu, - int thread) +static void perf_evsel__set_sid_idx(struct perf_evsel *evsel, int idx, int cpu, int thread) { struct perf_sample_id *sid = SID(evsel, cpu, thread); sid->idx = idx; - if (evlist->cpus && cpu >= 0) - sid->cpu = evlist->cpus->map[cpu]; - else - sid->cpu = -1; - if (!evsel->system_wide && evlist->threads && thread >= 0) - sid->tid = perf_thread_map__pid(evlist->threads, thread); - else - sid->tid = -1; + sid->cpu = perf_cpu_map__cpu(evsel->cpus, cpu); + sid->tid = perf_thread_map__pid(evsel->threads, thread); } static struct perf_mmap* @@ -497,8 +492,7 @@ if (perf_evlist__id_add_fd(evlist, evsel, cpu, thread, fd) < 0) return -1; - perf_evlist__set_sid_idx(evlist, evsel, idx, cpu, - thread); + perf_evsel__set_sid_idx(evsel, idx, cpu, thread); } } --- linux-5.8.0.orig/tools/lib/perf/tests/test-cpumap.c +++ linux-5.8.0/tools/lib/perf/tests/test-cpumap.c @@ -27,5 +27,5 @@ perf_cpu_map__put(cpus); __T_END; - return 0; + return tests_failed == 0 ? 0 : -1; } --- linux-5.8.0.orig/tools/lib/perf/tests/test-evlist.c +++ linux-5.8.0/tools/lib/perf/tests/test-evlist.c @@ -215,6 +215,7 @@ sysfs__mountpoint()); if (filename__read_int(path, &id)) { + tests_failed++; fprintf(stderr, "error: failed to get tracepoint id: %s\n", path); return -1; } @@ -409,5 +410,5 @@ test_mmap_cpus(); __T_END; - return 0; + return tests_failed == 0 ? 0 : -1; } --- linux-5.8.0.orig/tools/lib/perf/tests/test-evsel.c +++ linux-5.8.0/tools/lib/perf/tests/test-evsel.c @@ -131,5 +131,5 @@ test_stat_thread_enable(); __T_END; - return 0; + return tests_failed == 0 ? 0 : -1; } --- linux-5.8.0.orig/tools/lib/perf/tests/test-threadmap.c +++ linux-5.8.0/tools/lib/perf/tests/test-threadmap.c @@ -27,5 +27,5 @@ perf_thread_map__put(threads); __T_END; - return 0; + return tests_failed == 0 ? 0 : -1; } --- linux-5.8.0.orig/tools/objtool/Makefile +++ linux-5.8.0/tools/objtool/Makefile @@ -3,15 +3,6 @@ include ../scripts/Makefile.arch # always use the host compiler -ifneq ($(LLVM),) -HOSTAR ?= llvm-ar -HOSTCC ?= clang -HOSTLD ?= ld.lld -else -HOSTAR ?= ar -HOSTCC ?= gcc -HOSTLD ?= ld -endif AR = $(HOSTAR) CC = $(HOSTCC) LD = $(HOSTLD) --- linux-5.8.0.orig/tools/objtool/check.c +++ linux-5.8.0/tools/objtool/check.c @@ -548,8 +548,9 @@ "__ubsan_handle_shift_out_of_bounds", /* misc */ "csum_partial_copy_generic", - "__memcpy_mcsafe", - "mcsafe_handle_tail", + "copy_mc_fragile", + "copy_mc_fragile_handle_tail", + "copy_mc_enhanced_fast_string", "ftrace_likely_update", /* CONFIG_TRACE_BRANCH_PROFILING */ NULL }; @@ -619,7 +620,7 @@ if (!is_static_jump(insn)) continue; - if (insn->ignore || insn->offset == FAKE_JUMP_OFFSET) + if (insn->offset == FAKE_JUMP_OFFSET) continue; rela = find_rela_by_dest_range(file->elf, insn->sec, @@ -690,8 +691,8 @@ * case where the parent function's only reference to a * subfunction is through a jump table. */ - if (!strstr(insn->func->name, ".cold.") && - strstr(insn->jump_dest->func->name, ".cold.")) { + if (!strstr(insn->func->name, ".cold") && + strstr(insn->jump_dest->func->name, ".cold")) { insn->func->cfunc = insn->jump_dest->func; insn->jump_dest->func->pfunc = insn->func; @@ -2501,15 +2502,19 @@ break; case INSN_STD: - if (state.df) + if (state.df) { WARN_FUNC("recursive STD", sec, insn->offset); + return 1; + } state.df = true; break; case INSN_CLD: - if (!state.df && func) + if (!state.df && func) { WARN_FUNC("redundant CLD", sec, insn->offset); + return 1; + } state.df = false; break; @@ -2855,14 +2860,10 @@ } out: - if (ret < 0) { - /* - * Fatal error. The binary is corrupt or otherwise broken in - * some way, or objtool itself is broken. Fail the kernel - * build. - */ - return ret; - } - + /* + * For now, don't fail the kernel build on fatal warnings. These + * errors are still fairly common due to the growing matrix of + * supported toolchains and their recent pace of change. + */ return 0; } --- linux-5.8.0.orig/tools/objtool/elf.c +++ linux-5.8.0/tools/objtool/elf.c @@ -354,8 +354,11 @@ symtab = find_section_by_name(elf, ".symtab"); if (!symtab) { - WARN("missing symbol table"); - return -1; + /* + * A missing symbol table is actually possible if it's an empty + * .o file. This can happen for thunk_64.o. + */ + return 0; } symtab_shndx = find_section_by_name(elf, ".symtab_shndx"); @@ -422,6 +425,13 @@ list_add(&sym->list, entry); elf_hash_add(elf->symbol_hash, &sym->hash, sym->idx); elf_hash_add(elf->symbol_name_hash, &sym->name_hash, str_hash(sym->name)); + + /* + * Don't store empty STT_NOTYPE symbols in the rbtree. They + * can exist within a function, confusing the sorting. + */ + if (!sym->len) + rb_erase(&sym->node, &sym->sec->symbol_tree); } if (stats) --- linux-5.8.0.orig/tools/perf/Documentation/perf-record.txt +++ linux-5.8.0/tools/perf/Documentation/perf-record.txt @@ -33,6 +33,10 @@ - a raw PMU event (eventsel+umask) in the form of rNNN where NNN is a hexadecimal event descriptor. + - a symbolic or raw PMU event followed by an optional colon + and a list of event modifiers, e.g., cpu-cycles:p. See the + linkperf:perf-list[1] man page for details on event modifiers. + - a symbolically formed PMU event like 'pmu/param1=0x3,param2/' where 'param1', 'param2', etc are defined as formats for the PMU in /sys/bus/event_source/devices//format/*. --- linux-5.8.0.orig/tools/perf/Documentation/perf-stat.txt +++ linux-5.8.0/tools/perf/Documentation/perf-stat.txt @@ -39,6 +39,10 @@ - a raw PMU event (eventsel+umask) in the form of rNNN where NNN is a hexadecimal event descriptor. + - a symbolic or raw PMU event followed by an optional colon + and a list of event modifiers, e.g., cpu-cycles:p. See the + linkperf:perf-list[1] man page for details on event modifiers. + - a symbolically formed event like 'pmu/param1=0x3,param2/' where param1 and param2 are defined as formats for the PMU in /sys/bus/event_source/devices//format/* @@ -376,6 +380,9 @@ hardware thread. This is essentially a replacement for the any bit and convenient for post processing. +--summary:: +Print summary for interval mode (-I). + EXAMPLES -------- --- linux-5.8.0.orig/tools/perf/Makefile.config +++ linux-5.8.0/tools/perf/Makefile.config @@ -716,12 +716,14 @@ endif endif -ifndef NO_GTK2 +ifdef GTK2 FLAGS_GTK2=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) + $(call feature_check,gtk2) ifneq ($(feature-gtk2), 1) msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev); NO_GTK2 := 1 else + $(call feature_check,gtk2-infobar) ifeq ($(feature-gtk2-infobar), 1) GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT endif @@ -794,6 +796,11 @@ endif endif +ifdef HAVE_NO_LIBBFD + feature-libbfd := 0 + $(info libbfd overidden OFF) +else + ifeq ($(feature-libbfd), 1) EXTLIBS += -lbfd -lopcodes else @@ -817,6 +824,8 @@ $(call feature_check,disassembler-four-args) endif +endif + ifdef NO_DEMANGLE CFLAGS += -DNO_DEMANGLE else --- linux-5.8.0.orig/tools/perf/Makefile.perf +++ linux-5.8.0/tools/perf/Makefile.perf @@ -48,7 +48,7 @@ # # Define NO_SLANG if you do not want TUI support. # -# Define NO_GTK2 if you do not want GTK+ GUI support. +# Define GTK2 if you want GTK+ GUI support. # # Define NO_DEMANGLE if you do not want C++ symbol demangling. # @@ -173,10 +173,6 @@ LD += $(EXTRA_LDFLAGS) -HOSTCC ?= gcc -HOSTLD ?= ld -HOSTAR ?= ar - PKG_CONFIG = $(CROSS_COMPILE)pkg-config LLVM_CONFIG ?= llvm-config @@ -384,7 +380,7 @@ CFLAGS += -I$(OUTPUT) endif -ifndef NO_GTK2 +ifdef GTK2 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so GTK_IN := $(OUTPUT)gtk-in.o endif @@ -582,7 +578,7 @@ arch_errno_tbl := $(srctree)/tools/perf/trace/beauty/arch_errno_names.sh $(arch_errno_name_array): $(arch_errno_tbl) - $(Q)$(SHELL) '$(arch_errno_tbl)' $(firstword $(CC)) $(arch_errno_hdr_dir) > $@ + $(Q)$(SHELL) '$(arch_errno_tbl)' '$(patsubst -%,,$(CC))' $(arch_errno_hdr_dir) > $@ sync_file_range_arrays := $(beauty_outdir)/sync_file_range_arrays.c sync_file_range_tbls := $(srctree)/tools/perf/trace/beauty/sync_file_range.sh @@ -876,7 +872,7 @@ ### Installation rules -ifndef NO_GTK2 +ifdef GTK2 install-gtk: $(OUTPUT)libperf-gtk.so $(call QUIET_INSTALL, 'GTK UI') \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \ --- linux-5.8.0.orig/tools/perf/bench/Build +++ linux-5.8.0/tools/perf/bench/Build @@ -11,7 +11,6 @@ perf-y += synthesize.o perf-y += kallsyms-parse.o -perf-$(CONFIG_X86_64) += mem-memcpy-x86-64-lib.o perf-$(CONFIG_X86_64) += mem-memcpy-x86-64-asm.o perf-$(CONFIG_X86_64) += mem-memset-x86-64-asm.o --- linux-5.8.0.orig/tools/perf/bench/mem-functions.c +++ linux-5.8.0/tools/perf/bench/mem-functions.c @@ -223,12 +223,8 @@ return 0; } -static u64 do_memcpy_cycles(const struct function *r, size_t size, void *src, void *dst) +static void memcpy_prefault(memcpy_t fn, size_t size, void *src, void *dst) { - u64 cycle_start = 0ULL, cycle_end = 0ULL; - memcpy_t fn = r->fn.memcpy; - int i; - /* Make sure to always prefault zero pages even if MMAP_THRESH is crossed: */ memset(src, 0, size); @@ -237,6 +233,15 @@ * to not measure page fault overhead: */ fn(dst, src, size); +} + +static u64 do_memcpy_cycles(const struct function *r, size_t size, void *src, void *dst) +{ + u64 cycle_start = 0ULL, cycle_end = 0ULL; + memcpy_t fn = r->fn.memcpy; + int i; + + memcpy_prefault(fn, size, src, dst); cycle_start = get_cycles(); for (i = 0; i < nr_loops; ++i) @@ -252,11 +257,7 @@ memcpy_t fn = r->fn.memcpy; int i; - /* - * We prefault the freshly allocated memory range here, - * to not measure page fault overhead: - */ - fn(dst, src, size); + memcpy_prefault(fn, size, src, dst); BUG_ON(gettimeofday(&tv_start, NULL)); for (i = 0; i < nr_loops; ++i) --- linux-5.8.0.orig/tools/perf/bench/synthesize.c +++ linux-5.8.0/tools/perf/bench/synthesize.c @@ -162,8 +162,8 @@ init_stats(&event_stats); for (i = 0; i < multi_iterations; i++) { session = perf_session__new(NULL, false, NULL); - if (!session) - return -ENOMEM; + if (IS_ERR(session)) + return PTR_ERR(session); atomic_set(&event_count, 0); gettimeofday(&start, NULL); --- linux-5.8.0.orig/tools/perf/builtin-lock.c +++ linux-5.8.0/tools/perf/builtin-lock.c @@ -406,7 +406,7 @@ struct lock_seq_stat *seq; const char *name = evsel__strval(evsel, sample, "name"); u64 tmp = evsel__intval(evsel, sample, "lockdep_addr"); - int flag = evsel__intval(evsel, sample, "flag"); + int flag = evsel__intval(evsel, sample, "flags"); memcpy(&addr, &tmp, sizeof(void *)); @@ -621,7 +621,7 @@ case SEQ_STATE_READ_ACQUIRED: seq->read_count--; BUG_ON(seq->read_count < 0); - if (!seq->read_count) { + if (seq->read_count) { ls->nr_release++; goto end; } --- linux-5.8.0.orig/tools/perf/builtin-record.c +++ linux-5.8.0/tools/perf/builtin-record.c @@ -1489,7 +1489,7 @@ evlist__set_cb(rec->sb_evlist, record__process_signal_event, rec); rec->thread_id = pthread_self(); } - +#ifdef HAVE_LIBBPF_SUPPORT if (!opts->no_bpf_event) { if (rec->sb_evlist == NULL) { rec->sb_evlist = evlist__new(); @@ -1505,7 +1505,7 @@ return -1; } } - +#endif if (perf_evlist__start_sb_thread(rec->sb_evlist, &rec->opts.target)) { pr_debug("Couldn't start the BPF side band thread:\nBPF programs starting from now on won't be annotatable\n"); opts->no_bpf_event = true; @@ -2417,7 +2417,7 @@ OPT_BOOLEAN(0, "tail-synthesize", &record.opts.tail_synthesize, "synthesize non-sample events at the end of output"), OPT_BOOLEAN(0, "overwrite", &record.opts.overwrite, "use overwrite mode"), - OPT_BOOLEAN(0, "no-bpf-event", &record.opts.no_bpf_event, "record bpf events"), + OPT_BOOLEAN(0, "no-bpf-event", &record.opts.no_bpf_event, "do not record bpf events"), OPT_BOOLEAN(0, "strict-freq", &record.opts.strict_freq, "Fail if the specified frequency can't be used"), OPT_CALLBACK('F', "freq", &record.opts, "freq or 'max'", --- linux-5.8.0.orig/tools/perf/builtin-sched.c +++ linux-5.8.0/tools/perf/builtin-sched.c @@ -2575,7 +2575,8 @@ } if (!sched->idle_hist || thread->tid == 0) { - timehist_update_runtime_stats(tr, t, tprev); + if (!cpu_list || test_bit(sample->cpu, cpu_bitmap)) + timehist_update_runtime_stats(tr, t, tprev); if (sched->idle_hist) { struct idle_thread_runtime *itr = (void *)tr; @@ -2848,6 +2849,9 @@ printf("\nIdle stats:\n"); for (i = 0; i < idle_max_cpu; ++i) { + if (cpu_list && !test_bit(i, cpu_bitmap)) + continue; + t = idle_threads[i]; if (!t) continue; --- linux-5.8.0.orig/tools/perf/builtin-stat.c +++ linux-5.8.0/tools/perf/builtin-stat.c @@ -402,7 +402,7 @@ { struct evsel *counter; - if (!stat_config.summary && (read_affinity_counters(rs) < 0)) + if (!stat_config.stop_read_counter && (read_affinity_counters(rs) < 0)) return; evlist__for_each_entry(evsel_list, counter) { @@ -826,9 +826,9 @@ if (stat_config.walltime_run_table) stat_config.walltime_run[run_idx] = t1 - t0; - if (interval) { + if (interval && stat_config.summary) { stat_config.interval = 0; - stat_config.summary = true; + stat_config.stop_read_counter = true; init_stats(&walltime_nsecs_stats); update_stats(&walltime_nsecs_stats, t1 - t0); @@ -1066,6 +1066,8 @@ "Use with 'percore' event qualifier to show the event " "counts of one hardware thread by sum up total hardware " "threads of same physical core"), + OPT_BOOLEAN(0, "summary", &stat_config.summary, + "print summary for interval mode"), #ifdef HAVE_LIBPFM OPT_CALLBACK(0, "pfm-events", &evsel_list, "event", "libpfm4 event selector. use 'perf list' to list available events", @@ -1961,8 +1963,10 @@ struct evsel *counter; evlist__for_each_entry(evsel_list, counter) { - if (!counter->core.system_wide) + if (!counter->core.system_wide && + strcmp(counter->name, "duration_time")) { return; + } } if (evsel_list->core.nr_entries) --- linux-5.8.0.orig/tools/perf/builtin-top.c +++ linux-5.8.0/tools/perf/builtin-top.c @@ -1746,6 +1746,7 @@ goto out_delete_evlist; } +#ifdef HAVE_LIBBPF_SUPPORT if (!top.record_opts.no_bpf_event) { top.sb_evlist = evlist__new(); @@ -1759,6 +1760,7 @@ goto out_delete_evlist; } } +#endif if (perf_evlist__start_sb_thread(top.sb_evlist, target)) { pr_debug("Couldn't start the BPF side band thread:\nBPF programs starting from now on won't be annotatable\n"); --- linux-5.8.0.orig/tools/perf/builtin-trace.c +++ linux-5.8.0/tools/perf/builtin-trace.c @@ -1762,7 +1762,11 @@ if (table == NULL) return -ENOMEM; - memset(table + trace->sctbl->syscalls.max_id, 0, (id - trace->sctbl->syscalls.max_id) * sizeof(*sc)); + // Need to memset from offset 0 and +1 members if brand new + if (trace->syscalls.table == NULL) + memset(table, 0, (id + 1) * sizeof(*sc)); + else + memset(table + trace->sctbl->syscalls.max_id + 1, 0, (id - trace->sctbl->syscalls.max_id) * sizeof(*sc)); trace->syscalls.table = table; trace->sctbl->syscalls.max_id = id; @@ -4636,9 +4640,9 @@ err = 0; if (lists[0]) { - struct option o = OPT_CALLBACK('e', "event", &trace->evlist, "event", - "event selector. use 'perf list' to list available events", - parse_events_option); + struct option o = { + .value = &trace->evlist, + }; err = parse_events_option(&o, lists[0], 0); } out: @@ -4652,9 +4656,12 @@ { struct trace *trace = opt->value; - if (!list_empty(&trace->evlist->core.entries)) - return parse_cgroups(opt, str, unset); - + if (!list_empty(&trace->evlist->core.entries)) { + struct option o = { + .value = &trace->evlist, + }; + return parse_cgroups(&o, str, unset); + } trace->cgroup = evlist__findnew_cgroup(trace->evlist, str); return 0; --- linux-5.8.0.orig/tools/perf/builtin-version.c +++ linux-5.8.0/tools/perf/builtin-version.c @@ -60,7 +60,6 @@ STATUS(HAVE_DWARF_SUPPORT, dwarf); STATUS(HAVE_DWARF_GETLOCATIONS_SUPPORT, dwarf_getlocations); STATUS(HAVE_GLIBC_SUPPORT, glibc); - STATUS(HAVE_GTK2_SUPPORT, gtk2); #ifndef HAVE_SYSCALL_TABLE_SUPPORT STATUS(HAVE_LIBAUDIT_SUPPORT, libaudit); #endif --- linux-5.8.0.orig/tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json +++ linux-5.8.0/tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json @@ -114,7 +114,7 @@ "PublicDescription": "Level 2 access to instruciton TLB that caused a page table walk. This event counts on any instruciton access which causes L2I_TLB_REFILL to count", "EventCode": "0x35", "EventName": "L2I_TLB_ACCESS", - "BriefDescription": "L2D TLB access" + "BriefDescription": "L2I TLB access" }, { "PublicDescription": "Branch target buffer misprediction", --- linux-5.8.0.orig/tools/perf/pmu-events/arch/x86/amdzen1/cache.json +++ linux-5.8.0/tools/perf/pmu-events/arch/x86/amdzen1/cache.json @@ -250,6 +250,24 @@ "UMask": "0x1" }, { + "EventName": "l2_pf_hit_l2", + "EventCode": "0x70", + "BriefDescription": "L2 prefetch hit in L2.", + "UMask": "0xff" + }, + { + "EventName": "l2_pf_miss_l2_hit_l3", + "EventCode": "0x71", + "BriefDescription": "L2 prefetcher hits in L3. Counts all L2 prefetches accepted by the L2 pipeline which miss the L2 cache and hit the L3.", + "UMask": "0xff" + }, + { + "EventName": "l2_pf_miss_l2_l3", + "EventCode": "0x72", + "BriefDescription": "L2 prefetcher misses in L3. All L2 prefetches accepted by the L2 pipeline which miss the L2 and the L3 caches.", + "UMask": "0xff" + }, + { "EventName": "l3_request_g1.caching_l3_cache_accesses", "EventCode": "0x01", "BriefDescription": "Caching: L3 cache accesses", --- linux-5.8.0.orig/tools/perf/pmu-events/jevents.c +++ linux-5.8.0/tools/perf/pmu-events/jevents.c @@ -137,7 +137,7 @@ return s; /* allocate space for a new string */ - fixed = (char *) malloc(len + 1); + fixed = (char *) malloc(len + esc_count + 1); if (!fixed) return NULL; --- linux-5.8.0.orig/tools/perf/tests/bp_signal.c +++ linux-5.8.0/tools/perf/tests/bp_signal.c @@ -45,10 +45,13 @@ #if defined (__x86_64__) extern void __test_function(volatile long *ptr); asm ( + ".pushsection .text;" ".globl __test_function\n" + ".type __test_function, @function;" "__test_function:\n" "incq (%rdi)\n" - "ret\n"); + "ret\n" + ".popsection\n"); #else static void __test_function(volatile long *ptr) { --- linux-5.8.0.orig/tools/perf/tests/parse-events.c +++ linux-5.8.0/tools/perf/tests/parse-events.c @@ -631,6 +631,34 @@ TEST_ASSERT_VAL("wrong val", term->val.num == 1); TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "umask")); + /* + * read + * + * The perf_pmu__test_parse_init injects 'read' term into + * perf_pmu_events_list, so 'read' is evaluated as read term + * and not as raw event with 'ead' hex value. + */ + term = list_entry(term->list.next, struct parse_events_term, list); + TEST_ASSERT_VAL("wrong type term", + term->type_term == PARSE_EVENTS__TERM_TYPE_USER); + TEST_ASSERT_VAL("wrong type val", + term->type_val == PARSE_EVENTS__TERM_TYPE_NUM); + TEST_ASSERT_VAL("wrong val", term->val.num == 1); + TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "read")); + + /* + * r0xead + * + * To be still able to pass 'ead' value with 'r' syntax, + * we added support to parse 'r0xHEX' event. + */ + term = list_entry(term->list.next, struct parse_events_term, list); + TEST_ASSERT_VAL("wrong type term", + term->type_term == PARSE_EVENTS__TERM_TYPE_CONFIG); + TEST_ASSERT_VAL("wrong type val", + term->type_val == PARSE_EVENTS__TERM_TYPE_NUM); + TEST_ASSERT_VAL("wrong val", term->val.num == 0xead); + TEST_ASSERT_VAL("wrong config", !term->config); return 0; } @@ -1776,7 +1804,7 @@ static struct terms_test test__terms[] = { [0] = { - .str = "config=10,config1,config2=3,umask=1", + .str = "config=10,config1,config2=3,umask=1,read,r0xead", .check = test__checkterms_simple, }, }; @@ -1836,6 +1864,13 @@ INIT_LIST_HEAD(&terms); + /* + * The perf_pmu__test_parse_init prepares perf_pmu_events_list + * which gets freed in parse_events_terms. + */ + if (perf_pmu__test_parse_init()) + return -1; + ret = parse_events_terms(&terms, t->str); if (ret) { pr_debug("failed to parse terms '%s', err %d\n", --- linux-5.8.0.orig/tools/perf/tests/pmu-events.c +++ linux-5.8.0/tools/perf/tests/pmu-events.c @@ -274,6 +274,7 @@ int res = 0; bool use_uncore_table; struct pmu_events_map *map = __test_pmu_get_events_map(); + struct perf_pmu_alias *a, *tmp; if (!map) return -1; @@ -347,6 +348,10 @@ pmu_name, alias->name); } + list_for_each_entry_safe(a, tmp, &aliases, list) { + list_del(&a->list); + perf_pmu_free_alias(a); + } free(pmu); return res; } --- linux-5.8.0.orig/tools/perf/tests/pmu.c +++ linux-5.8.0/tools/perf/tests/pmu.c @@ -173,6 +173,7 @@ ret = 0; } while (0); + perf_pmu__del_formats(&formats); test_format_dir_put(format); return ret; } --- linux-5.8.0.orig/tools/perf/tests/sample-parsing.c +++ linux-5.8.0/tools/perf/tests/sample-parsing.c @@ -193,7 +193,7 @@ .data = {1, -1ULL, 211, 212, 213}, }; u64 regs[64]; - const u64 raw_data[] = {0x123456780a0b0c0dULL, 0x1102030405060708ULL}; + const u32 raw_data[] = {0x12345678, 0x0a0b0c0d, 0x11020304, 0x05060708, 0 }; const u64 data[] = {0x2211443366558877ULL, 0, 0xaabbccddeeff4321ULL}; const u64 aux_data[] = {0xa55a, 0, 0xeeddee, 0x0282028202820282}; struct perf_sample sample = { --- linux-5.8.0.orig/tools/perf/ui/browsers/hists.c +++ linux-5.8.0/tools/perf/ui/browsers/hists.c @@ -2963,7 +2963,7 @@ struct popup_action actions[MAX_OPTIONS]; int nr_options = 0; int key = -1; - char buf[64]; + char buf[128]; int delay_secs = hbt ? hbt->refresh : 0; #define HIST_BROWSER_HELP_COMMON \ @@ -3629,8 +3629,8 @@ { int nr_entries = evlist->core.nr_entries; -single_entry: if (perf_evlist__single_entry(evlist)) { +single_entry: { struct evsel *first = evlist__first(evlist); return perf_evsel__hists_browse(first, nr_entries, help, @@ -3638,6 +3638,7 @@ env, warn_lost_event, annotation_opts); } + } if (symbol_conf.event_group) { struct evsel *pos; --- linux-5.8.0.orig/tools/perf/util/auxtrace.c +++ linux-5.8.0/tools/perf/util/auxtrace.c @@ -300,10 +300,6 @@ queue->set = true; queue->tid = buffer->tid; queue->cpu = buffer->cpu; - } else if (buffer->cpu != queue->cpu || buffer->tid != queue->tid) { - pr_err("auxtrace queue conflict: cpu %d, tid %d vs cpu %d, tid %d\n", - queue->cpu, queue->tid, buffer->cpu, buffer->tid); - return -EINVAL; } buffer->buffer_nr = queues->next_buffer_nr++; --- linux-5.8.0.orig/tools/perf/util/cs-etm.c +++ linux-5.8.0/tools/perf/util/cs-etm.c @@ -1344,8 +1344,15 @@ attr.sample_type &= ~(u64)PERF_SAMPLE_ADDR; } - if (etm->synth_opts.last_branch) + if (etm->synth_opts.last_branch) { attr.sample_type |= PERF_SAMPLE_BRANCH_STACK; + /* + * We don't use the hardware index, but the sample generation + * code uses the new format branch_stack with this field, + * so the event attributes must indicate that it's present. + */ + attr.branch_sample_type |= PERF_SAMPLE_BRANCH_HW_INDEX; + } if (etm->synth_opts.instructions) { attr.config = PERF_COUNT_HW_INSTRUCTIONS; --- linux-5.8.0.orig/tools/perf/util/dwarf-aux.c +++ linux-5.8.0/tools/perf/util/dwarf-aux.c @@ -373,6 +373,7 @@ int die_entrypc(Dwarf_Die *dw_die, Dwarf_Addr *addr) { Dwarf_Addr base, end; + Dwarf_Attribute attr; if (!addr) return -EINVAL; @@ -380,6 +381,13 @@ if (dwarf_entrypc(dw_die, addr) == 0) return 0; + /* + * Since the dwarf_ranges() will return 0 if there is no + * DW_AT_ranges attribute, we should check it first. + */ + if (!dwarf_attr(dw_die, DW_AT_ranges, &attr)) + return -ENOENT; + return dwarf_ranges(dw_die, 0, &base, addr, &end) < 0 ? -ENOENT : 0; } --- linux-5.8.0.orig/tools/perf/util/event.c +++ linux-5.8.0/tools/perf/util/event.c @@ -615,6 +615,8 @@ } al->sym = map__find_symbol(al->map, al->addr); + } else if (symbol_conf.dso_list) { + al->filtered |= (1 << HIST_FILTER__DSO); } if (symbol_conf.sym_list) { --- linux-5.8.0.orig/tools/perf/util/evlist.c +++ linux-5.8.0/tools/perf/util/evlist.c @@ -946,6 +946,10 @@ perf_evlist__set_maps(&evlist->core, cpus, threads); + /* as evlist now has references, put count here */ + perf_cpu_map__put(cpus); + perf_thread_map__put(threads); + return 0; out_delete_threads: @@ -1273,11 +1277,12 @@ goto out_put; perf_evlist__set_maps(&evlist->core, cpus, threads); -out: - return err; + + perf_thread_map__put(threads); out_put: perf_cpu_map__put(cpus); - goto out; +out: + return err; } int evlist__open(struct evlist *evlist) --- linux-5.8.0.orig/tools/perf/util/evsel.c +++ linux-5.8.0/tools/perf/util/evsel.c @@ -1014,12 +1014,14 @@ if (callchain && callchain->enabled && !evsel->no_aux_samples) evsel__config_callchain(evsel, opts, callchain); - if (opts->sample_intr_regs && !evsel->no_aux_samples) { + if (opts->sample_intr_regs && !evsel->no_aux_samples && + !evsel__is_dummy_event(evsel)) { attr->sample_regs_intr = opts->sample_intr_regs; evsel__set_sample_bit(evsel, REGS_INTR); } - if (opts->sample_user_regs && !evsel->no_aux_samples) { + if (opts->sample_user_regs && !evsel->no_aux_samples && + !evsel__is_dummy_event(evsel)) { attr->sample_regs_user |= opts->sample_user_regs; evsel__set_sample_bit(evsel, REGS_USER); } --- linux-5.8.0.orig/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +++ linux-5.8.0/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c @@ -24,6 +24,13 @@ #include "intel-pt-decoder.h" #include "intel-pt-log.h" +#define BITULL(x) (1ULL << (x)) + +/* IA32_RTIT_CTL MSR bits */ +#define INTEL_PT_CYC_ENABLE BITULL(1) +#define INTEL_PT_CYC_THRESHOLD (BITULL(22) | BITULL(21) | BITULL(20) | BITULL(19)) +#define INTEL_PT_CYC_THRESHOLD_SHIFT 19 + #define INTEL_PT_BLK_SIZE 1024 #define BIT63 (((uint64_t)1 << 63)) @@ -162,6 +169,8 @@ uint64_t sample_tot_cyc_cnt; uint64_t base_cyc_cnt; uint64_t cyc_cnt_timestamp; + uint64_t ctl; + uint64_t cyc_threshold; double tsc_to_cyc; bool continuous_period; bool overflow; @@ -199,6 +208,14 @@ return x << i; } +static uint64_t intel_pt_cyc_threshold(uint64_t ctl) +{ + if (!(ctl & INTEL_PT_CYC_ENABLE)) + return 0; + + return (ctl & INTEL_PT_CYC_THRESHOLD) >> INTEL_PT_CYC_THRESHOLD_SHIFT; +} + static void intel_pt_setup_period(struct intel_pt_decoder *decoder) { if (decoder->period_type == INTEL_PT_PERIOD_TICKS) { @@ -238,12 +255,15 @@ decoder->flags = params->flags; + decoder->ctl = params->ctl; decoder->period = params->period; decoder->period_type = params->period_type; decoder->max_non_turbo_ratio = params->max_non_turbo_ratio; decoder->max_non_turbo_ratio_fp = params->max_non_turbo_ratio; + decoder->cyc_threshold = intel_pt_cyc_threshold(decoder->ctl); + intel_pt_setup_period(decoder); decoder->mtc_shift = params->mtc_period; @@ -1164,6 +1184,7 @@ return 0; if (err == -EAGAIN || intel_pt_fup_with_nlip(decoder, &intel_pt_insn, ip, err)) { + decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; if (intel_pt_fup_event(decoder)) return 0; return -EAGAIN; @@ -1744,6 +1765,9 @@ break; case INTEL_PT_CYC: + intel_pt_calc_cyc_timestamp(decoder); + break; + case INTEL_PT_VMCS: case INTEL_PT_MNT: case INTEL_PT_PAD: @@ -1876,6 +1900,7 @@ static int intel_pt_walk_trace(struct intel_pt_decoder *decoder) { + int last_packet_type = INTEL_PT_PAD; bool no_tip = false; int err; @@ -1884,6 +1909,12 @@ if (err) return err; next: + if (decoder->cyc_threshold) { + if (decoder->sample_cyc && last_packet_type != INTEL_PT_CYC) + decoder->sample_cyc = false; + last_packet_type = decoder->packet.type; + } + switch (decoder->packet.type) { case INTEL_PT_TNT: if (!decoder->packet.count) @@ -1942,17 +1973,13 @@ } if (decoder->set_fup_mwait) no_tip = true; + if (no_tip) + decoder->pkt_state = INTEL_PT_STATE_FUP_NO_TIP; + else + decoder->pkt_state = INTEL_PT_STATE_FUP; err = intel_pt_walk_fup(decoder); - if (err != -EAGAIN) { - if (err) - return err; - if (no_tip) - decoder->pkt_state = - INTEL_PT_STATE_FUP_NO_TIP; - else - decoder->pkt_state = INTEL_PT_STATE_FUP; - return 0; - } + if (err != -EAGAIN) + return err; if (no_tip) { no_tip = false; break; @@ -1980,8 +2007,10 @@ * possibility of another CBR change that gets caught up * in the PSB+. */ - if (decoder->cbr != decoder->cbr_seen) + if (decoder->cbr != decoder->cbr_seen) { + decoder->state.type = 0; return 0; + } break; case INTEL_PT_PIP: @@ -2022,8 +2051,10 @@ case INTEL_PT_CBR: intel_pt_calc_cbr(decoder); - if (decoder->cbr != decoder->cbr_seen) + if (decoder->cbr != decoder->cbr_seen) { + decoder->state.type = 0; return 0; + } break; case INTEL_PT_MODE_EXEC: @@ -2599,15 +2630,11 @@ err = intel_pt_walk_tip(decoder); break; case INTEL_PT_STATE_FUP: - decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; err = intel_pt_walk_fup(decoder); if (err == -EAGAIN) err = intel_pt_walk_fup_tip(decoder); - else if (!err) - decoder->pkt_state = INTEL_PT_STATE_FUP; break; case INTEL_PT_STATE_FUP_NO_TIP: - decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; err = intel_pt_walk_fup(decoder); if (err == -EAGAIN) err = intel_pt_walk_trace(decoder); @@ -2637,9 +2664,18 @@ } if (intel_pt_sample_time(decoder->pkt_state)) { intel_pt_update_sample_time(decoder); - if (decoder->sample_cyc) + if (decoder->sample_cyc) { decoder->sample_tot_cyc_cnt = decoder->tot_cyc_cnt; + decoder->state.flags |= INTEL_PT_SAMPLE_IPC; + decoder->sample_cyc = false; + } } + /* + * When using only TSC/MTC to compute cycles, IPC can be + * sampled as soon as the cycle count changes. + */ + if (!decoder->have_cyc) + decoder->state.flags |= INTEL_PT_SAMPLE_IPC; } decoder->state.timestamp = decoder->sample_timestamp; --- linux-5.8.0.orig/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h +++ linux-5.8.0/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h @@ -17,6 +17,7 @@ #define INTEL_PT_ABORT_TX (1 << 1) #define INTEL_PT_ASYNC (1 << 2) #define INTEL_PT_FUP_IP (1 << 3) +#define INTEL_PT_SAMPLE_IPC (1 << 4) enum intel_pt_sample_type { INTEL_PT_BRANCH = 1 << 0, @@ -243,6 +244,7 @@ void *data; bool return_compression; bool branch_enable; + uint64_t ctl; uint64_t period; enum intel_pt_period_type period_type; unsigned max_non_turbo_ratio; --- linux-5.8.0.orig/tools/perf/util/intel-pt.c +++ linux-5.8.0/tools/perf/util/intel-pt.c @@ -864,6 +864,18 @@ return false; } +static u64 intel_pt_ctl(struct intel_pt *pt) +{ + struct evsel *evsel; + u64 config; + + evlist__for_each_entry(pt->session->evlist, evsel) { + if (intel_pt_get_config(pt, &evsel->core.attr, &config)) + return config; + } + return 0; +} + static u64 intel_pt_ns_to_ticks(const struct intel_pt *pt, u64 ns) { u64 quot, rem; @@ -997,6 +1009,7 @@ params.data = ptq; params.return_compression = intel_pt_return_compression(pt); params.branch_enable = intel_pt_branch_enable(pt); + params.ctl = intel_pt_ctl(pt); params.max_non_turbo_ratio = pt->max_non_turbo_ratio; params.mtc_period = intel_pt_mtc_period(pt); params.tsc_ctc_ratio_n = pt->tsc_ctc_ratio_n; @@ -1071,6 +1084,8 @@ if (queue->tid == -1 || pt->have_sched_switch) { ptq->tid = machine__get_current_tid(pt->machine, ptq->cpu); + if (ptq->tid == -1) + ptq->pid = -1; thread__zput(ptq->thread); } @@ -1349,7 +1364,8 @@ sample.branch_stack = (struct branch_stack *)&dummy_bs; } - sample.cyc_cnt = ptq->ipc_cyc_cnt - ptq->last_br_cyc_cnt; + if (ptq->state->flags & INTEL_PT_SAMPLE_IPC) + sample.cyc_cnt = ptq->ipc_cyc_cnt - ptq->last_br_cyc_cnt; if (sample.cyc_cnt) { sample.insn_cnt = ptq->ipc_insn_cnt - ptq->last_br_insn_cnt; ptq->last_br_insn_cnt = ptq->ipc_insn_cnt; @@ -1396,7 +1412,8 @@ sample.stream_id = ptq->pt->instructions_id; sample.period = ptq->state->tot_insn_cnt - ptq->last_insn_cnt; - sample.cyc_cnt = ptq->ipc_cyc_cnt - ptq->last_in_cyc_cnt; + if (ptq->state->flags & INTEL_PT_SAMPLE_IPC) + sample.cyc_cnt = ptq->ipc_cyc_cnt - ptq->last_in_cyc_cnt; if (sample.cyc_cnt) { sample.insn_cnt = ptq->ipc_insn_cnt - ptq->last_in_insn_cnt; ptq->last_in_insn_cnt = ptq->ipc_insn_cnt; @@ -1922,14 +1939,8 @@ ptq->have_sample = false; - if (ptq->state->tot_cyc_cnt > ptq->ipc_cyc_cnt) { - /* - * Cycle count and instruction count only go together to create - * a valid IPC ratio when the cycle count changes. - */ - ptq->ipc_insn_cnt = ptq->state->tot_insn_cnt; - ptq->ipc_cyc_cnt = ptq->state->tot_cyc_cnt; - } + ptq->ipc_insn_cnt = ptq->state->tot_insn_cnt; + ptq->ipc_cyc_cnt = ptq->state->tot_cyc_cnt; /* * Do PEBS first to allow for the possibility that the PEBS timestamp @@ -2561,10 +2572,8 @@ tid = sample->tid; } - if (tid == -1) { - pr_err("context_switch event has no tid\n"); - return -EINVAL; - } + if (tid == -1) + intel_pt_log("context_switch event has no tid\n"); intel_pt_log("context_switch: cpu %d pid %d tid %d time %"PRIu64" tsc %#"PRIx64"\n", cpu, pid, tid, sample->time, perf_time_to_tsc(sample->time, @@ -2913,8 +2922,15 @@ if (pt->synth_opts.callchain) attr.sample_type |= PERF_SAMPLE_CALLCHAIN; - if (pt->synth_opts.last_branch) + if (pt->synth_opts.last_branch) { attr.sample_type |= PERF_SAMPLE_BRANCH_STACK; + /* + * We don't use the hardware index, but the sample generation + * code uses the new format branch_stack with this field, + * so the event attributes must indicate that it's present. + */ + attr.branch_sample_type |= PERF_SAMPLE_BRANCH_HW_INDEX; + } if (pt->synth_opts.instructions) { attr.config = PERF_COUNT_HW_INSTRUCTIONS; --- linux-5.8.0.orig/tools/perf/util/machine.c +++ linux-5.8.0/tools/perf/util/machine.c @@ -2921,7 +2921,7 @@ pid_t machine__get_current_tid(struct machine *machine, int cpu) { - int nr_cpus = min(machine->env->nr_cpus_online, MAX_NR_CPUS); + int nr_cpus = min(machine->env->nr_cpus_avail, MAX_NR_CPUS); if (cpu < 0 || cpu >= nr_cpus || !machine->current_tid) return -1; @@ -2933,7 +2933,7 @@ pid_t tid) { struct thread *thread; - int nr_cpus = min(machine->env->nr_cpus_online, MAX_NR_CPUS); + int nr_cpus = min(machine->env->nr_cpus_avail, MAX_NR_CPUS); if (cpu < 0) return -EINVAL; --- linux-5.8.0.orig/tools/perf/util/metricgroup.c +++ linux-5.8.0/tools/perf/util/metricgroup.c @@ -443,6 +443,9 @@ continue; strlist__add(me->metrics, s); } + + if (!raw) + free(s); } free(omg); } @@ -726,7 +729,7 @@ ret = metricgroup__add_metric_list(str, metric_no_group, &extra_events, &group_list); if (ret) - return ret; + goto out; pr_debug("adding %s\n", extra_events.buf); bzero(&parse_error, sizeof(parse_error)); ret = parse_events(perf_evlist, extra_events.buf, &parse_error); @@ -734,11 +737,11 @@ parse_events_print_error(&parse_error, extra_events.buf); goto out; } - strbuf_release(&extra_events); ret = metricgroup__setup_events(&group_list, metric_no_merge, perf_evlist, metric_events); out: metricgroup__free_egroups(&group_list); + strbuf_release(&extra_events); return ret; } --- linux-5.8.0.orig/tools/perf/util/parse-events.c +++ linux-5.8.0/tools/perf/util/parse-events.c @@ -410,7 +410,7 @@ return -ENOMEM; evsel->tool_event = tool_event; if (tool_event == PERF_TOOL_DURATION_TIME) - evsel->unit = strdup("ns"); + evsel->unit = "ns"; return 0; } @@ -2017,6 +2017,32 @@ perf_pmu__parse_cleanup(); } +/* + * This function injects special term in + * perf_pmu_events_list so the test code + * can check on this functionality. + */ +int perf_pmu__test_parse_init(void) +{ + struct perf_pmu_event_symbol *list; + + list = malloc(sizeof(*list) * 1); + if (!list) + return -ENOMEM; + + list->type = PMU_EVENT_SYMBOL; + list->symbol = strdup("read"); + + if (!list->symbol) { + free(list); + return -ENOMEM; + } + + perf_pmu_events_list = list; + perf_pmu_events_list_num = 1; + return 0; +} + enum perf_pmu_event_symbol_type perf_pmu__parse_check(const char *name) { @@ -2078,6 +2104,8 @@ int ret; ret = parse_events__scanner(str, &parse_state); + perf_pmu__parse_cleanup(); + if (!ret) { list_splice(parse_state.terms, terms); zfree(&parse_state.terms); --- linux-5.8.0.orig/tools/perf/util/parse-events.h +++ linux-5.8.0/tools/perf/util/parse-events.h @@ -253,4 +253,6 @@ } #endif /* HAVE_LIBELF_SUPPORT */ +int perf_pmu__test_parse_init(void); + #endif /* __PERF_PARSE_EVENTS_H */ --- linux-5.8.0.orig/tools/perf/util/parse-events.l +++ linux-5.8.0/tools/perf/util/parse-events.l @@ -41,14 +41,6 @@ return __value(yylval, text, base, PE_VALUE); } -static int raw(yyscan_t scanner) -{ - YYSTYPE *yylval = parse_events_get_lval(scanner); - char *text = parse_events_get_text(scanner); - - return __value(yylval, text + 1, 16, PE_RAW); -} - static int str(yyscan_t scanner, int token) { YYSTYPE *yylval = parse_events_get_lval(scanner); @@ -72,6 +64,17 @@ return token; } +static int raw(yyscan_t scanner) +{ + YYSTYPE *yylval = parse_events_get_lval(scanner); + char *text = parse_events_get_text(scanner); + + if (perf_pmu__parse_check(text) == PMU_EVENT_SYMBOL) + return str(scanner, PE_NAME); + + return __value(yylval, text + 1, 16, PE_RAW); +} + static bool isbpf_suffix(char *text) { int len = strlen(text); --- linux-5.8.0.orig/tools/perf/util/parse-regs-options.c +++ linux-5.8.0/tools/perf/util/parse-regs-options.c @@ -54,7 +54,7 @@ #endif fputc('\n', stderr); /* just printing available regs */ - return -1; + goto error; } #ifdef HAVE_PERF_REGS_SUPPORT for (r = sample_reg_masks; r->name; r++) { --- linux-5.8.0.orig/tools/perf/util/pmu.c +++ linux-5.8.0/tools/perf/util/pmu.c @@ -272,7 +272,7 @@ } /* Delete an alias entry. */ -static void perf_pmu_free_alias(struct perf_pmu_alias *newalias) +void perf_pmu_free_alias(struct perf_pmu_alias *newalias) { zfree(&newalias->name); zfree(&newalias->desc); @@ -1352,6 +1352,17 @@ set_bit(b, bits); } +void perf_pmu__del_formats(struct list_head *formats) +{ + struct perf_pmu_format *fmt, *tmp; + + list_for_each_entry_safe(fmt, tmp, formats, list) { + list_del(&fmt->list); + free(fmt->name); + free(fmt); + } +} + static int sub_non_neg(int a, int b) { if (b > a) --- linux-5.8.0.orig/tools/perf/util/pmu.h +++ linux-5.8.0/tools/perf/util/pmu.h @@ -92,6 +92,7 @@ int config, unsigned long *bits); void perf_pmu__set_format(unsigned long *bits, long from, long to); int perf_pmu__format_parse(char *dir, struct list_head *head); +void perf_pmu__del_formats(struct list_head *formats); struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu); @@ -111,6 +112,7 @@ struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu); bool pmu_uncore_alias_match(const char *pmu_name, const char *name); +void perf_pmu_free_alias(struct perf_pmu_alias *alias); int perf_pmu__convert_scale(const char *scale, char **end, double *sval); --- linux-5.8.0.orig/tools/perf/util/print_binary.c +++ linux-5.8.0/tools/perf/util/print_binary.c @@ -50,7 +50,7 @@ len--; - for (i = 0; i < len; i++) { + for (i = 0; i < len && p[i]; i++) { if (!isprint(p[i]) && !isspace(p[i])) return 0; } --- linux-5.8.0.orig/tools/perf/util/probe-file.c +++ linux-5.8.0/tools/perf/util/probe-file.c @@ -791,7 +791,7 @@ const char *sdtgrp) { struct strbuf buf; - char *ret = NULL, **args; + char *ret = NULL; int i, args_count, err; unsigned long long ref_ctr_offset; @@ -813,12 +813,19 @@ goto out; if (note->args) { - args = argv_split(note->args, &args_count); + char **args = argv_split(note->args, &args_count); + + if (args == NULL) + goto error; for (i = 0; i < args_count; ++i) { - if (synthesize_sdt_probe_arg(&buf, i, args[i]) < 0) + if (synthesize_sdt_probe_arg(&buf, i, args[i]) < 0) { + argv_free(args); goto error; + } } + + argv_free(args); } out: --- linux-5.8.0.orig/tools/perf/util/probe-finder.c +++ linux-5.8.0/tools/perf/util/probe-finder.c @@ -1408,6 +1408,9 @@ char *type; int i, j, ret; + if (!ntevs) + return -ENOENT; + for (i = 0; i < pev->nargs; i++) { type = NULL; for (j = 0; j < ntevs; j++) { @@ -1464,7 +1467,7 @@ if (ret >= 0 && tf.pf.skip_empty_arg) ret = fill_empty_trace_arg(pev, tf.tevs, tf.ntevs); - if (ret < 0) { + if (ret < 0 || tf.ntevs == 0) { for (i = 0; i < tf.ntevs; i++) clear_probe_trace_event(&tf.tevs[i]); zfree(tevs); --- linux-5.8.0.orig/tools/perf/util/record.c +++ linux-5.8.0/tools/perf/util/record.c @@ -2,6 +2,7 @@ #include "debug.h" #include "evlist.h" #include "evsel.h" +#include "evsel_config.h" #include "parse-events.h" #include #include @@ -33,11 +34,24 @@ return leader; } +static u64 evsel__config_term_mask(struct evsel *evsel) +{ + struct evsel_config_term *term; + struct list_head *config_terms = &evsel->config_terms; + u64 term_types = 0; + + list_for_each_entry(term, config_terms, list) { + term_types |= 1 << term->type; + } + return term_types; +} + static void evsel__config_leader_sampling(struct evsel *evsel, struct evlist *evlist) { struct perf_event_attr *attr = &evsel->core.attr; struct evsel *leader = evsel->leader; struct evsel *read_sampler; + u64 term_types, freq_mask; if (!leader->sample_read) return; @@ -47,16 +61,20 @@ if (evsel == read_sampler) return; + term_types = evsel__config_term_mask(evsel); /* - * Disable sampling for all group members other than the leader in - * case the leader 'leads' the sampling, except when the leader is an - * AUX area event, in which case the 2nd event in the group is the one - * that 'leads' the sampling. + * Disable sampling for all group members except those with explicit + * config terms or the leader. In the case of an AUX area event, the 2nd + * event in the group is the one that 'leads' the sampling. */ - attr->freq = 0; - attr->sample_freq = 0; - attr->sample_period = 0; - attr->write_backward = 0; + freq_mask = (1 << EVSEL__CONFIG_TERM_FREQ) | (1 << EVSEL__CONFIG_TERM_PERIOD); + if ((term_types & freq_mask) == 0) { + attr->freq = 0; + attr->sample_freq = 0; + attr->sample_period = 0; + } + if ((term_types & (1 << EVSEL__CONFIG_TERM_OVERWRITE)) == 0) + attr->write_backward = 0; /* * We don't get a sample for slave events, we make them when delivering --- linux-5.8.0.orig/tools/perf/util/scripting-engines/trace-event-python.c +++ linux-5.8.0/tools/perf/util/scripting-engines/trace-event-python.c @@ -1592,7 +1592,6 @@ static int python_start_script(const char *script, int argc, const char **argv) { struct tables *tables = &tables_global; - PyMODINIT_FUNC (*initfunc)(void); #if PY_MAJOR_VERSION < 3 const char **command_line; #else @@ -1607,20 +1606,18 @@ FILE *fp; #if PY_MAJOR_VERSION < 3 - initfunc = initperf_trace_context; command_line = malloc((argc + 1) * sizeof(const char *)); command_line[0] = script; for (i = 1; i < argc + 1; i++) command_line[i] = argv[i - 1]; + PyImport_AppendInittab(name, initperf_trace_context); #else - initfunc = PyInit_perf_trace_context; command_line = malloc((argc + 1) * sizeof(wchar_t *)); command_line[0] = Py_DecodeLocale(script, NULL); for (i = 1; i < argc + 1; i++) command_line[i] = Py_DecodeLocale(argv[i - 1], NULL); + PyImport_AppendInittab(name, PyInit_perf_trace_context); #endif - - PyImport_AppendInittab(name, initfunc); Py_Initialize(); #if PY_MAJOR_VERSION < 3 --- linux-5.8.0.orig/tools/perf/util/session.c +++ linux-5.8.0/tools/perf/util/session.c @@ -593,6 +593,7 @@ event->mmap2.maj = bswap_32(event->mmap2.maj); event->mmap2.min = bswap_32(event->mmap2.min); event->mmap2.ino = bswap_64(event->mmap2.ino); + event->mmap2.ino_generation = bswap_64(event->mmap2.ino_generation); if (sample_id_all) { void *data = &event->mmap2.filename; @@ -690,6 +691,18 @@ swap_sample_id_all(event, &event->namespaces.link_info[i]); } +static void perf_event__cgroup_swap(union perf_event *event, bool sample_id_all) +{ + event->cgroup.id = bswap_64(event->cgroup.id); + + if (sample_id_all) { + void *data = &event->cgroup.path; + + data += PERF_ALIGN(strlen(data) + 1, sizeof(u64)); + swap_sample_id_all(event, data); + } +} + static u8 revbyte(u8 b) { int rev = (b >> 4) | ((b & 0xf) << 4); @@ -932,6 +945,7 @@ [PERF_RECORD_SWITCH] = perf_event__switch_swap, [PERF_RECORD_SWITCH_CPU_WIDE] = perf_event__switch_swap, [PERF_RECORD_NAMESPACES] = perf_event__namespaces_swap, + [PERF_RECORD_CGROUP] = perf_event__cgroup_swap, [PERF_RECORD_HEADER_ATTR] = perf_event__hdr_attr_swap, [PERF_RECORD_HEADER_EVENT_TYPE] = perf_event__event_type_swap, [PERF_RECORD_HEADER_TRACING_DATA] = perf_event__tracing_data_swap, @@ -2360,7 +2374,7 @@ { int i, err = -1; struct perf_cpu_map *map; - int nr_cpus = min(session->header.env.nr_cpus_online, MAX_NR_CPUS); + int nr_cpus = min(session->header.env.nr_cpus_avail, MAX_NR_CPUS); for (i = 0; i < PERF_TYPE_MAX; ++i) { struct evsel *evsel; --- linux-5.8.0.orig/tools/perf/util/sort.c +++ linux-5.8.0/tools/perf/util/sort.c @@ -3003,7 +3003,7 @@ if (strncasecmp(tok, sd->name, strlen(tok))) continue; - if (sort__mode != SORT_MODE__MEMORY) + if (sort__mode != SORT_MODE__BRANCH) return -EINVAL; return __sort_dimension__add_output(list, sd); @@ -3015,7 +3015,7 @@ if (strncasecmp(tok, sd->name, strlen(tok))) continue; - if (sort__mode != SORT_MODE__BRANCH) + if (sort__mode != SORT_MODE__MEMORY) return -EINVAL; return __sort_dimension__add_output(list, sd); --- linux-5.8.0.orig/tools/perf/util/stat-display.c +++ linux-5.8.0/tools/perf/util/stat-display.c @@ -118,10 +118,11 @@ config->csv_output ? 0 : -3, cpu_map__id_to_cpu(id), config->csv_sep); } else { - fprintf(config->output, "CPU%*d%s", - config->csv_output ? 0 : -7, - evsel__cpus(evsel)->map[id], - config->csv_sep); + if (id > -1) + fprintf(config->output, "CPU%*d%s", + config->csv_output ? 0 : -7, + evsel__cpus(evsel)->map[id], + config->csv_sep); } break; case AGGR_THREAD: @@ -324,13 +325,10 @@ struct evlist *evlist = evsel->evlist; int i; - if (!config->aggr_get_id) - return 0; - if (config->aggr_mode == AGGR_NONE) return id; - if (config->aggr_mode == AGGR_GLOBAL) + if (!config->aggr_get_id) return 0; for (i = 0; i < evsel__nr_cpus(evsel); i++) { --- linux-5.8.0.orig/tools/perf/util/stat.h +++ linux-5.8.0/tools/perf/util/stat.h @@ -113,6 +113,7 @@ bool summary; bool metric_no_group; bool metric_no_merge; + bool stop_read_counter; FILE *output; unsigned int interval; unsigned int timeout; --- linux-5.8.0.orig/tools/perf/util/synthetic-events.c +++ linux-5.8.0/tools/perf/util/synthetic-events.c @@ -384,7 +384,7 @@ while (!io.eof) { static const char anonstr[] = "//anon"; - size_t size; + size_t size, aligned_size; /* ensure null termination since stack will be reused. */ event->mmap2.filename[0] = '\0'; @@ -444,11 +444,12 @@ } size = strlen(event->mmap2.filename) + 1; - size = PERF_ALIGN(size, sizeof(u64)); + aligned_size = PERF_ALIGN(size, sizeof(u64)); event->mmap2.len -= event->mmap.start; event->mmap2.header.size = (sizeof(event->mmap2) - - (sizeof(event->mmap2.filename) - size)); - memset(event->mmap2.filename + size, 0, machine->id_hdr_size); + (sizeof(event->mmap2.filename) - aligned_size)); + memset(event->mmap2.filename + size, 0, machine->id_hdr_size + + (aligned_size - size)); event->mmap2.header.size += machine->id_hdr_size; event->mmap2.pid = tgid; event->mmap2.tid = pid; @@ -563,6 +564,9 @@ char cgrp_root[PATH_MAX]; size_t mount_len; /* length of mount point in the path */ + if (!tool || !tool->cgroup_events) + return 0; + if (cgroupfs_find_mountpoint(cgrp_root, PATH_MAX, "perf_event") < 0) { pr_debug("cannot find cgroup mount point\n"); return -1; --- linux-5.8.0.orig/tools/perf/util/trace-event-read.c +++ linux-5.8.0/tools/perf/util/trace-event-read.c @@ -361,6 +361,7 @@ pr_debug("error reading saved cmdlines\n"); goto out; } + buf[ret] = '\0'; parse_saved_cmdline(pevent, buf, size); ret = 0; --- linux-5.8.0.orig/tools/power/acpi/Makefile.config +++ linux-5.8.0/tools/power/acpi/Makefile.config @@ -54,7 +54,6 @@ CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc- CROSS_COMPILE ?= $(CROSS) LD = $(CC) -HOSTCC = gcc # check if compiler option is supported cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} --- linux-5.8.0.orig/tools/power/acpi/Makefile.rules +++ linux-5.8.0/tools/power/acpi/Makefile.rules @@ -9,7 +9,7 @@ toolobjs := $(addprefix $(objdir),$(TOOL_OBJS)) $(OUTPUT)$(TOOL): $(toolobjs) FORCE $(ECHO) " LD " $(subst $(OUTPUT),,$@) - $(QUIET) $(LD) $(CFLAGS) $(LDFLAGS) $(toolobjs) -L$(OUTPUT) -o $@ + $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(toolobjs) -L$(OUTPUT) -o $@ $(ECHO) " STRIP " $(subst $(OUTPUT),,$@) $(QUIET) $(STRIPCMD) $@ --- linux-5.8.0.orig/tools/power/x86/intel-speed-select/isst-config.c +++ linux-5.8.0/tools/power/x86/intel-speed-select/isst-config.c @@ -1224,6 +1224,8 @@ isst_ctdp_display_information_end(outf); } +static void adjust_scaling_max_from_base_freq(int cpu); + static void set_tdp_level_for_cpu(int cpu, void *arg1, void *arg2, void *arg3, void *arg4) { @@ -1242,6 +1244,9 @@ int pkg_id = get_physical_package_id(cpu); int die_id = get_physical_die_id(cpu); + /* Wait for updated base frequencies */ + usleep(2000); + fprintf(stderr, "Option is set to online/offline\n"); ctdp_level.core_cpumask_size = alloc_cpu_set(&ctdp_level.core_cpumask); @@ -1254,6 +1259,7 @@ if (CPU_ISSET_S(i, ctdp_level.core_cpumask_size, ctdp_level.core_cpumask)) { fprintf(stderr, "online cpu %d\n", i); set_cpu_online_offline(i, 1); + adjust_scaling_max_from_base_freq(i); } else { fprintf(stderr, "offline cpu %d\n", i); set_cpu_online_offline(i, 0); @@ -1411,6 +1417,31 @@ return 0; } +static int no_turbo(void) +{ + return parse_int_file(0, "/sys/devices/system/cpu/intel_pstate/no_turbo"); +} + +static void adjust_scaling_max_from_base_freq(int cpu) +{ + int base_freq, scaling_max_freq; + + scaling_max_freq = parse_int_file(0, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_max_freq", cpu); + base_freq = get_cpufreq_base_freq(cpu); + if (scaling_max_freq < base_freq || no_turbo()) + set_cpufreq_scaling_min_max(cpu, 1, base_freq); +} + +static void adjust_scaling_min_from_base_freq(int cpu) +{ + int base_freq, scaling_min_freq; + + scaling_min_freq = parse_int_file(0, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_min_freq", cpu); + base_freq = get_cpufreq_base_freq(cpu); + if (scaling_min_freq < base_freq) + set_cpufreq_scaling_min_max(cpu, 0, base_freq); +} + static int set_clx_pbf_cpufreq_scaling_min_max(int cpu) { struct isst_pkg_ctdp_level_info *ctdp_level; @@ -1508,6 +1539,7 @@ continue; set_cpufreq_scaling_min_max_from_cpuinfo(i, 1, 0); + adjust_scaling_min_from_base_freq(i); } } --- linux-5.8.0.orig/tools/power/x86/turbostat/Makefile +++ linux-5.8.0/tools/power/x86/turbostat/Makefile @@ -16,7 +16,7 @@ %: %.c @mkdir -p $(BUILD_OUTPUT) - $(CC) $(CFLAGS) $< -o $(BUILD_OUTPUT)/$@ $(LDFLAGS) -lcap + $(CC) $(CFLAGS) $< -o $(BUILD_OUTPUT)/$@ $(LDFLAGS) .PHONY : clean clean : --- linux-5.8.0.orig/tools/power/x86/turbostat/turbostat.c +++ linux-5.8.0/tools/power/x86/turbostat/turbostat.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include @@ -3150,42 +3150,28 @@ err(-5, "no /dev/cpu/0/msr, Try \"# modprobe msr\" "); } -/* - * check for CAP_SYS_RAWIO - * return 0 on success - * return 1 on fail - */ -int check_for_cap_sys_rawio(void) +void check_permissions() { - cap_t caps; - cap_flag_value_t cap_flag_value; - - caps = cap_get_proc(); - if (caps == NULL) - err(-6, "cap_get_proc\n"); + struct __user_cap_header_struct cap_header_data; + cap_user_header_t cap_header = &cap_header_data; + struct __user_cap_data_struct cap_data_data; + cap_user_data_t cap_data = &cap_data_data; + extern int capget(cap_user_header_t hdrp, cap_user_data_t datap); + int do_exit = 0; + char pathname[32]; - if (cap_get_flag(caps, CAP_SYS_RAWIO, CAP_EFFECTIVE, &cap_flag_value)) - err(-6, "cap_get\n"); + /* check for CAP_SYS_RAWIO */ + cap_header->pid = getpid(); + cap_header->version = _LINUX_CAPABILITY_VERSION; + if (capget(cap_header, cap_data) < 0) + err(-6, "capget(2) failed"); - if (cap_flag_value != CAP_SET) { + if ((cap_data->effective & (1 << CAP_SYS_RAWIO)) == 0) { + do_exit++; warnx("capget(CAP_SYS_RAWIO) failed," " try \"# setcap cap_sys_rawio=ep %s\"", progname); - return 1; } - if (cap_free(caps) == -1) - err(-6, "cap_free\n"); - - return 0; -} -void check_permissions(void) -{ - int do_exit = 0; - char pathname[32]; - - /* check for CAP_SYS_RAWIO */ - do_exit += check_for_cap_sys_rawio(); - /* test file permissions */ sprintf(pathname, "/dev/cpu/%d/msr", base_cpu); if (euidaccess(pathname, R_OK)) { --- linux-5.8.0.orig/tools/scripts/Makefile.include +++ linux-5.8.0/tools/scripts/Makefile.include @@ -59,6 +59,16 @@ $(call allow-override,CXX,$(CROSS_COMPILE)g++) $(call allow-override,STRIP,$(CROSS_COMPILE)strip) +ifneq ($(LLVM),) +HOSTAR ?= llvm-ar +HOSTCC ?= clang +HOSTLD ?= ld.lld +else +HOSTAR ?= ar +HOSTCC ?= gcc +HOSTLD ?= ld +endif + ifeq ($(CC_NO_CLANG), 1) EXTRA_WARNINGS += -Wstrict-aliasing=3 endif --- linux-5.8.0.orig/tools/testing/ktest/ktest.pl +++ linux-5.8.0/tools/testing/ktest/ktest.pl @@ -2008,7 +2008,7 @@ if ($reboot_type eq "grub") { run_ssh "'(echo \"savedefault --default=$grub_number --once\" | grub --batch)'"; - } elsif ($reboot_type eq "grub2") { + } elsif (($reboot_type eq "grub2") or ($reboot_type eq "grub2bls")) { run_ssh "$grub_reboot $grub_number"; } elsif ($reboot_type eq "syslinux") { run_ssh "$syslinux --once \\\"$syslinux_label\\\" $syslinux_path"; @@ -4197,7 +4197,12 @@ $mail_command =~ s/\$SUBJECT/$subject/g; $mail_command =~ s/\$MESSAGE/$message/g; - run_command $mail_command; + my $ret = run_command $mail_command; + if (!$ret && defined($file)) { + # try again without the file + $message .= "\n\n*** FAILED TO SEND LOG ***\n\n"; + do_send_email($subject, $message); + } } sub send_email { --- linux-5.8.0.orig/tools/testing/kunit/kunit.py +++ linux-5.8.0/tools/testing/kunit/kunit.py @@ -240,12 +240,6 @@ if cli_args.subcommand == 'run': if not os.path.exists(cli_args.build_dir): os.mkdir(cli_args.build_dir) - kunit_kernel.kunitconfig_path = os.path.join( - cli_args.build_dir, - kunit_kernel.kunitconfig_path) - - if not os.path.exists(kunit_kernel.kunitconfig_path): - create_default_kunitconfig() if not linux: linux = kunit_kernel.LinuxSourceTree() @@ -263,12 +257,6 @@ if cli_args.build_dir: if not os.path.exists(cli_args.build_dir): os.mkdir(cli_args.build_dir) - kunit_kernel.kunitconfig_path = os.path.join( - cli_args.build_dir, - kunit_kernel.kunitconfig_path) - - if not os.path.exists(kunit_kernel.kunitconfig_path): - create_default_kunitconfig() if not linux: linux = kunit_kernel.LinuxSourceTree() @@ -285,12 +273,6 @@ if cli_args.build_dir: if not os.path.exists(cli_args.build_dir): os.mkdir(cli_args.build_dir) - kunit_kernel.kunitconfig_path = os.path.join( - cli_args.build_dir, - kunit_kernel.kunitconfig_path) - - if not os.path.exists(kunit_kernel.kunitconfig_path): - create_default_kunitconfig() if not linux: linux = kunit_kernel.LinuxSourceTree() @@ -309,12 +291,6 @@ if cli_args.build_dir: if not os.path.exists(cli_args.build_dir): os.mkdir(cli_args.build_dir) - kunit_kernel.kunitconfig_path = os.path.join( - cli_args.build_dir, - kunit_kernel.kunitconfig_path) - - if not os.path.exists(kunit_kernel.kunitconfig_path): - create_default_kunitconfig() if not linux: linux = kunit_kernel.LinuxSourceTree() --- linux-5.8.0.orig/tools/testing/kunit/kunit_config.py +++ linux-5.8.0/tools/testing/kunit/kunit_config.py @@ -12,7 +12,7 @@ CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_(\w+) is not set$' CONFIG_PATTERN = r'^CONFIG_(\w+)=(\S+|".*")$' -KconfigEntryBase = collections.namedtuple('KconfigEntry', ['name', 'value']) +KconfigEntryBase = collections.namedtuple('KconfigEntryBase', ['name', 'value']) class KconfigEntry(KconfigEntryBase): --- linux-5.8.0.orig/tools/testing/kunit/kunit_kernel.py +++ linux-5.8.0/tools/testing/kunit/kunit_kernel.py @@ -34,7 +34,7 @@ def make_mrproper(self): try: - subprocess.check_output(['make', 'mrproper']) + subprocess.check_output(['make', 'mrproper'], stderr=subprocess.STDOUT) except OSError as e: raise ConfigError('Could not call make command: ' + e) except subprocess.CalledProcessError as e: @@ -47,7 +47,7 @@ if build_dir: command += ['O=' + build_dir] try: - subprocess.check_output(command, stderr=subprocess.PIPE) + subprocess.check_output(command, stderr=subprocess.STDOUT) except OSError as e: raise ConfigError('Could not call make command: ' + e) except subprocess.CalledProcessError as e: @@ -77,7 +77,7 @@ if build_dir: command += ['O=' + build_dir] try: - subprocess.check_output(command) + subprocess.check_output(command, stderr=subprocess.STDOUT) except OSError as e: raise BuildError('Could not call execute make: ' + e) except subprocess.CalledProcessError as e: --- linux-5.8.0.orig/tools/testing/kunit/kunit_parser.py +++ linux-5.8.0/tools/testing/kunit/kunit_parser.py @@ -65,7 +65,6 @@ def raw_output(kernel_output): for line in kernel_output: print(line) - yield line DIVIDER = '=' * 60 @@ -233,7 +232,7 @@ return None test_suite.name = name expected_test_case_num = parse_subtest_plan(lines) - if not expected_test_case_num: + if expected_test_case_num is None: return None while expected_test_case_num > 0: test_case = parse_test_case(lines) --- linux-5.8.0.orig/tools/testing/kunit/kunit_tool_test.py +++ linux-5.8.0/tools/testing/kunit/kunit_tool_test.py @@ -237,35 +237,33 @@ class KUnitMainTest(unittest.TestCase): def setUp(self): path = get_absolute_path('test_data/test_is_test_passed-all_passed.log') - file = open(path) - all_passed_log = file.readlines() - self.print_patch = mock.patch('builtins.print') - self.print_mock = self.print_patch.start() + with open(path) as file: + all_passed_log = file.readlines() + + self.print_mock = mock.patch('builtins.print').start() + self.addCleanup(mock.patch.stopall) + self.linux_source_mock = mock.Mock() self.linux_source_mock.build_reconfig = mock.Mock(return_value=True) self.linux_source_mock.build_um_kernel = mock.Mock(return_value=True) self.linux_source_mock.run_kernel = mock.Mock(return_value=all_passed_log) - def tearDown(self): - self.print_patch.stop() - pass - def test_config_passes_args_pass(self): - kunit.main(['config'], self.linux_source_mock) + kunit.main(['config', '--build_dir=.kunit'], self.linux_source_mock) assert self.linux_source_mock.build_reconfig.call_count == 1 assert self.linux_source_mock.run_kernel.call_count == 0 def test_build_passes_args_pass(self): kunit.main(['build'], self.linux_source_mock) assert self.linux_source_mock.build_reconfig.call_count == 0 - self.linux_source_mock.build_um_kernel.assert_called_once_with(False, 8, '', None) + self.linux_source_mock.build_um_kernel.assert_called_once_with(False, 8, '.kunit', None) assert self.linux_source_mock.run_kernel.call_count == 0 def test_exec_passes_args_pass(self): kunit.main(['exec'], self.linux_source_mock) assert self.linux_source_mock.build_reconfig.call_count == 0 assert self.linux_source_mock.run_kernel.call_count == 1 - self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='', timeout=300) + self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='.kunit', timeout=300) self.print_mock.assert_any_call(StrContains('Testing complete.')) def test_run_passes_args_pass(self): @@ -273,7 +271,7 @@ assert self.linux_source_mock.build_reconfig.call_count == 1 assert self.linux_source_mock.run_kernel.call_count == 1 self.linux_source_mock.run_kernel.assert_called_once_with( - build_dir='', timeout=300) + build_dir='.kunit', timeout=300) self.print_mock.assert_any_call(StrContains('Testing complete.')) def test_exec_passes_args_fail(self): @@ -313,7 +311,7 @@ def test_exec_timeout(self): timeout = 3453 kunit.main(['exec', '--timeout', str(timeout)], self.linux_source_mock) - self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='', timeout=timeout) + self.linux_source_mock.run_kernel.assert_called_once_with(build_dir='.kunit', timeout=timeout) self.print_mock.assert_any_call(StrContains('Testing complete.')) def test_run_timeout(self): @@ -321,12 +319,12 @@ kunit.main(['run', '--timeout', str(timeout)], self.linux_source_mock) assert self.linux_source_mock.build_reconfig.call_count == 1 self.linux_source_mock.run_kernel.assert_called_once_with( - build_dir='', timeout=timeout) + build_dir='.kunit', timeout=timeout) self.print_mock.assert_any_call(StrContains('Testing complete.')) def test_run_builddir(self): build_dir = '.kunit' - kunit.main(['run', '--build_dir', build_dir], self.linux_source_mock) + kunit.main(['run', '--build_dir=.kunit'], self.linux_source_mock) assert self.linux_source_mock.build_reconfig.call_count == 1 self.linux_source_mock.run_kernel.assert_called_once_with( build_dir=build_dir, timeout=300) --- linux-5.8.0.orig/tools/testing/nvdimm/test/nfit.c +++ linux-5.8.0/tools/testing/nvdimm/test/nfit.c @@ -23,7 +23,8 @@ #include "nfit_test.h" #include "../watermark.h" -#include +#include +#include /* * Generate an NFIT table to describe the following topology: @@ -3052,7 +3053,7 @@ .id_table = nfit_test_id, }; -static char mcsafe_buf[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); +static char copy_mc_buf[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); enum INJECT { INJECT_NONE, @@ -3060,7 +3061,7 @@ INJECT_DST, }; -static void mcsafe_test_init(char *dst, char *src, size_t size) +static void copy_mc_test_init(char *dst, char *src, size_t size) { size_t i; @@ -3069,7 +3070,7 @@ src[i] = (char) i; } -static bool mcsafe_test_validate(unsigned char *dst, unsigned char *src, +static bool copy_mc_test_validate(unsigned char *dst, unsigned char *src, size_t size, unsigned long rem) { size_t i; @@ -3090,12 +3091,12 @@ return true; } -void mcsafe_test(void) +void copy_mc_test(void) { char *inject_desc[] = { "none", "source", "destination" }; enum INJECT inj; - if (IS_ENABLED(CONFIG_MCSAFE_TEST)) { + if (IS_ENABLED(CONFIG_COPY_MC_TEST)) { pr_info("%s: run...\n", __func__); } else { pr_info("%s: disabled, skip.\n", __func__); @@ -3113,31 +3114,31 @@ switch (inj) { case INJECT_NONE: - mcsafe_inject_src(NULL); - mcsafe_inject_dst(NULL); - dst = &mcsafe_buf[2048]; - src = &mcsafe_buf[1024 - i]; + copy_mc_inject_src(NULL); + copy_mc_inject_dst(NULL); + dst = ©_mc_buf[2048]; + src = ©_mc_buf[1024 - i]; expect = 0; break; case INJECT_SRC: - mcsafe_inject_src(&mcsafe_buf[1024]); - mcsafe_inject_dst(NULL); - dst = &mcsafe_buf[2048]; - src = &mcsafe_buf[1024 - i]; + copy_mc_inject_src(©_mc_buf[1024]); + copy_mc_inject_dst(NULL); + dst = ©_mc_buf[2048]; + src = ©_mc_buf[1024 - i]; expect = 512 - i; break; case INJECT_DST: - mcsafe_inject_src(NULL); - mcsafe_inject_dst(&mcsafe_buf[2048]); - dst = &mcsafe_buf[2048 - i]; - src = &mcsafe_buf[1024]; + copy_mc_inject_src(NULL); + copy_mc_inject_dst(©_mc_buf[2048]); + dst = ©_mc_buf[2048 - i]; + src = ©_mc_buf[1024]; expect = 512 - i; break; } - mcsafe_test_init(dst, src, 512); - rem = __memcpy_mcsafe(dst, src, 512); - valid = mcsafe_test_validate(dst, src, 512, expect); + copy_mc_test_init(dst, src, 512); + rem = copy_mc_fragile(dst, src, 512); + valid = copy_mc_test_validate(dst, src, 512, expect); if (rem == expect && valid) continue; pr_info("%s: copy(%#lx, %#lx, %d) off: %d rem: %ld %s expect: %ld\n", @@ -3149,8 +3150,8 @@ } } - mcsafe_inject_src(NULL); - mcsafe_inject_dst(NULL); + copy_mc_inject_src(NULL); + copy_mc_inject_dst(NULL); } static __init int nfit_test_init(void) @@ -3161,7 +3162,7 @@ libnvdimm_test(); acpi_nfit_test(); device_dax_test(); - mcsafe_test(); + copy_mc_test(); dax_pmem_test(); dax_pmem_core_test(); #ifdef CONFIG_DEV_DAX_PMEM_COMPAT --- linux-5.8.0.orig/tools/testing/radix-tree/idr-test.c +++ linux-5.8.0/tools/testing/radix-tree/idr-test.c @@ -523,8 +523,27 @@ return NULL; } +static void *ida_leak_fn(void *arg) +{ + struct ida *ida = arg; + time_t s = time(NULL); + int i, ret; + + rcu_register_thread(); + + do for (i = 0; i < 1000; i++) { + ret = ida_alloc_range(ida, 128, 128, GFP_KERNEL); + if (ret >= 0) + ida_free(ida, 128); + } while (time(NULL) < s + 2); + + rcu_unregister_thread(); + return NULL; +} + void ida_thread_tests(void) { + DEFINE_IDA(ida); pthread_t threads[20]; int i; @@ -536,6 +555,16 @@ while (i--) pthread_join(threads[i], NULL); + + for (i = 0; i < ARRAY_SIZE(threads); i++) + if (pthread_create(&threads[i], NULL, ida_leak_fn, &ida)) { + perror("creating ida thread"); + exit(1); + } + + while (i--) + pthread_join(threads[i], NULL); + assert(ida_is_empty(&ida)); } void ida_tests(void) --- linux-5.8.0.orig/tools/testing/selftests/Makefile +++ linux-5.8.0/tools/testing/selftests/Makefile @@ -71,8 +71,10 @@ TARGETS_HOTPLUG = cpu-hotplug TARGETS_HOTPLUG += memory-hotplug -# User can optionally provide a TARGETS skiplist. -SKIP_TARGETS ?= +# User can optionally provide a TARGETS skiplist. By default we skip +# BPF since it has cutting edge build time dependencies which require +# more effort to install. +SKIP_TARGETS ?= bpf ifneq ($(SKIP_TARGETS),) TMP := $(filter-out $(SKIP_TARGETS), $(TARGETS)) override TARGETS := $(TMP) --- linux-5.8.0.orig/tools/testing/selftests/bpf/Makefile +++ linux-5.8.0/tools/testing/selftests/bpf/Makefile @@ -32,7 +32,7 @@ # Order correspond to 'make run_tests' order TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test_progs \ - test_align test_verifier_log test_dev_cgroup test_tcpbpf_user \ + test_verifier_log test_dev_cgroup test_tcpbpf_user \ test_sock test_btf test_sockmap get_cgroup_id_user test_socket_cookie \ test_cgroup_storage \ test_netcnt test_tcpnotify_user test_sock_fields test_sysctl \ @@ -102,7 +102,7 @@ OVERRIDE_TARGETS := 1 override define CLEAN $(call msg,CLEAN) - $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) + $(Q)$(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) endef include ../lib.mk @@ -122,17 +122,21 @@ $(TEST_GEN_PROGS_EXTENDED) \ $(TEST_CUSTOM_PROGS)): %: $(OUTPUT)/% ; +$(OUTPUT)/%.o: %.c + $(call msg,CC,,$@) + $(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ + $(OUTPUT)/%:%.c $(call msg,BINARY,,$@) - $(LINK.c) $^ $(LDLIBS) -o $@ + $(Q)$(LINK.c) $^ $(LDLIBS) -o $@ $(OUTPUT)/urandom_read: urandom_read.c $(call msg,BINARY,,$@) - $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id + $(Q)$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id=sha1 $(OUTPUT)/test_stub.o: test_stub.c $(BPFOBJ) $(call msg,CC,,$@) - $(CC) -c $(CFLAGS) -o $@ $< + $(Q)$(CC) -c $(CFLAGS) -o $@ $< VMLINUX_BTF_PATHS := $(if $(O),$(O)/vmlinux) \ $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \ @@ -140,8 +144,13 @@ /sys/kernel/btf/vmlinux \ /boot/vmlinux-$(shell uname -r) VMLINUX_BTF := $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) +ifeq ($(VMLINUX_BTF),) +$(error Cannot find a vmlinux for VMLINUX_BTF at any of "$(VMLINUX_BTF_PATHS)") +endif -$(OUTPUT)/runqslower: $(BPFOBJ) +DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool + +$(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \ OUTPUT=$(SCRATCH_DIR)/ VMLINUX_BTF=$(VMLINUX_BTF) \ BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR) && \ @@ -163,7 +172,6 @@ $(OUTPUT)/test_sock_fields: cgroup_helpers.c $(OUTPUT)/test_sysctl: cgroup_helpers.c -DEFAULT_BPFTOOL := $(SCRATCH_DIR)/sbin/bpftool BPFTOOL ?= $(DEFAULT_BPFTOOL) $(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \ $(BPFOBJ) | $(BUILD_DIR)/bpftool @@ -179,11 +187,11 @@ $(BUILD_DIR)/libbpf $(BUILD_DIR)/bpftool $(INCLUDE_DIR): $(call msg,MKDIR,,$@) - mkdir -p $@ + $(Q)mkdir -p $@ $(INCLUDE_DIR)/vmlinux.h: $(VMLINUX_BTF) | $(BPFTOOL) $(INCLUDE_DIR) $(call msg,GEN,,$@) - $(BPFTOOL) btf dump file $(VMLINUX_BTF) format c > $@ + $(Q)$(BPFTOOL) btf dump file $(VMLINUX_BTF) format c > $@ # Get Clang's default includes on this system, as opposed to those seen by # '-target bpf'. This fixes "missing" files on some architectures/distros, @@ -193,7 +201,8 @@ # build would have failed anyways. define get_sys_includes $(shell $(1) -v -E - &1 \ - | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') + | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') \ +$(shell $(1) -dM -E - $$@ + $(Q)$$(BPFTOOL) gen skeleton $$< > $$@ endif # ensure we set up tests.h header generation rule just once @@ -328,7 +337,7 @@ $(TRUNNER_BPF_SKELS) \ $$(BPFOBJ) | $(TRUNNER_OUTPUT) $$(call msg,TEST-OBJ,$(TRUNNER_BINARY),$$@) - cd $$(@D) && $$(CC) -I. $$(CFLAGS) -c $(CURDIR)/$$< $$(LDLIBS) -o $$(@F) + $(Q)cd $$(@D) && $$(CC) -I. $$(CFLAGS) -c $(CURDIR)/$$< $$(LDLIBS) -o $$(@F) $(TRUNNER_EXTRA_OBJS): $(TRUNNER_OUTPUT)/%.o: \ %.c \ @@ -336,20 +345,20 @@ $(TRUNNER_TESTS_HDR) \ $$(BPFOBJ) | $(TRUNNER_OUTPUT) $$(call msg,EXT-OBJ,$(TRUNNER_BINARY),$$@) - $$(CC) $$(CFLAGS) -c $$< $$(LDLIBS) -o $$@ + $(Q)$$(CC) $$(CFLAGS) -c $$< $$(LDLIBS) -o $$@ # only copy extra resources if in flavored build $(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_FILES) | $(TRUNNER_OUTPUT) ifneq ($2,) $$(call msg,EXT-COPY,$(TRUNNER_BINARY),$(TRUNNER_EXTRA_FILES)) - cp -a $$^ $(TRUNNER_OUTPUT)/ + $(Q)cp -a $$^ $(TRUNNER_OUTPUT)/ endif $(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ | $(TRUNNER_BINARY)-extras $$(call msg,BINARY,,$$@) - $$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ + $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ endef @@ -402,17 +411,17 @@ ) > verifier/tests.h) $(OUTPUT)/test_verifier: test_verifier.c verifier/tests.h $(BPFOBJ) | $(OUTPUT) $(call msg,BINARY,,$@) - $(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@ # Make sure we are able to include and link libbpf against c++. $(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ) $(call msg,CXX,,$@) - $(CXX) $(CFLAGS) $^ $(LDLIBS) -o $@ + $(Q)$(CXX) $(CFLAGS) $^ $(LDLIBS) -o $@ # Benchmark runner $(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h $(call msg,CC,,$@) - $(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ $(OUTPUT)/bench_rename.o: $(OUTPUT)/test_overhead.skel.h $(OUTPUT)/bench_trigger.o: $(OUTPUT)/trigger_bench.skel.h $(OUTPUT)/bench_ringbufs.o: $(OUTPUT)/ringbuf_bench.skel.h \ @@ -425,7 +434,7 @@ $(OUTPUT)/bench_trigger.o \ $(OUTPUT)/bench_ringbufs.o $(call msg,BINARY,,$@) - $(CC) $(LDFLAGS) -o $@ $(filter %.a %.o,$^) $(LDLIBS) + $(Q)$(CC) $(LDFLAGS) -o $@ $(filter %.a %.o,$^) $(LDLIBS) EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) \ prog_tests/tests.h map_tests/tests.h verifier/tests.h \ --- linux-5.8.0.orig/tools/testing/selftests/bpf/bench.c +++ linux-5.8.0/tools/testing/selftests/bpf/bench.c @@ -311,7 +311,6 @@ extern const struct bench bench_rename_rawtp; extern const struct bench bench_rename_fentry; extern const struct bench bench_rename_fexit; -extern const struct bench bench_rename_fmodret; extern const struct bench bench_trig_base; extern const struct bench bench_trig_tp; extern const struct bench bench_trig_rawtp; @@ -332,7 +331,6 @@ &bench_rename_rawtp, &bench_rename_fentry, &bench_rename_fexit, - &bench_rename_fmodret, &bench_trig_base, &bench_trig_tp, &bench_trig_rawtp, @@ -462,4 +460,3 @@ return 0; } - --- linux-5.8.0.orig/tools/testing/selftests/bpf/benchs/bench_rename.c +++ linux-5.8.0/tools/testing/selftests/bpf/benchs/bench_rename.c @@ -106,12 +106,6 @@ attach_bpf(ctx.skel->progs.prog5); } -static void setup_fmodret() -{ - setup_ctx(); - attach_bpf(ctx.skel->progs.prog6); -} - static void *consumer(void *input) { return NULL; @@ -179,17 +173,6 @@ .producer_thread = producer, .consumer_thread = consumer, .measure = measure, - .report_progress = hits_drops_report_progress, - .report_final = hits_drops_report_final, -}; - -const struct bench bench_rename_fmodret = { - .name = "rename-fmodret", - .validate = validate, - .setup = setup_fmodret, - .producer_thread = producer, - .consumer_thread = consumer, - .measure = measure, .report_progress = hits_drops_report_progress, .report_final = hits_drops_report_final, }; --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/bpf_obj_id.c @@ -159,15 +159,15 @@ /* Check getting link info */ info_len = sizeof(struct bpf_link_info) * 2; bzero(&link_infos[i], info_len); - link_infos[i].raw_tracepoint.tp_name = (__u64)&tp_name; + link_infos[i].raw_tracepoint.tp_name = ptr_to_u64(&tp_name); link_infos[i].raw_tracepoint.tp_name_len = sizeof(tp_name); err = bpf_obj_get_info_by_fd(bpf_link__fd(links[i]), &link_infos[i], &info_len); if (CHECK(err || link_infos[i].type != BPF_LINK_TYPE_RAW_TRACEPOINT || link_infos[i].prog_id != prog_infos[i].id || - link_infos[i].raw_tracepoint.tp_name != (__u64)&tp_name || - strcmp((char *)link_infos[i].raw_tracepoint.tp_name, + link_infos[i].raw_tracepoint.tp_name != ptr_to_u64(&tp_name) || + strcmp(u64_to_ptr(link_infos[i].raw_tracepoint.tp_name), "sys_enter") || info_len != sizeof(struct bpf_link_info), "get-link-info(fd)", @@ -178,7 +178,7 @@ link_infos[i].type, BPF_LINK_TYPE_RAW_TRACEPOINT, link_infos[i].id, link_infos[i].prog_id, prog_infos[i].id, - (char *)link_infos[i].raw_tracepoint.tp_name, + (const char *)u64_to_ptr(link_infos[i].raw_tracepoint.tp_name), "sys_enter")) goto done; --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/core_extern.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/core_extern.c @@ -159,8 +159,8 @@ exp = (uint64_t *)&t->data; for (j = 0; j < n; j++) { CHECK(got[j] != exp[j], "check_res", - "result #%d: expected %lx, but got %lx\n", - j, exp[j], got[j]); + "result #%d: expected %llx, but got %llx\n", + j, (__u64)exp[j], (__u64)got[j]); } cleanup: test_core_extern__destroy(skel); --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/core_reloc.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/core_reloc.c @@ -237,8 +237,8 @@ .union_sz = sizeof(((type *)0)->union_field), \ .arr_sz = sizeof(((type *)0)->arr_field), \ .arr_elem_sz = sizeof(((type *)0)->arr_field[0]), \ - .ptr_sz = sizeof(((type *)0)->ptr_field), \ - .enum_sz = sizeof(((type *)0)->enum_field), \ + .ptr_sz = 8, /* always 8-byte pointer for BPF */ \ + .enum_sz = sizeof(((type *)0)->enum_field), \ } #define SIZE_CASE(name) { \ @@ -432,20 +432,20 @@ .sb4 = -1, .sb20 = -0x17654321, .u32 = 0xBEEF, - .s32 = -0x3FEDCBA987654321, + .s32 = -0x3FEDCBA987654321LL, }), BITFIELDS_CASE(bitfields___bitfield_vs_int, { - .ub1 = 0xFEDCBA9876543210, + .ub1 = 0xFEDCBA9876543210LL, .ub2 = 0xA6, - .ub7 = -0x7EDCBA987654321, - .sb4 = -0x6123456789ABCDE, - .sb20 = 0xD00D, + .ub7 = -0x7EDCBA987654321LL, + .sb4 = -0x6123456789ABCDELL, + .sb20 = 0xD00DLL, .u32 = -0x76543, - .s32 = 0x0ADEADBEEFBADB0B, + .s32 = 0x0ADEADBEEFBADB0BLL, }), BITFIELDS_CASE(bitfields___just_big_enough, { - .ub1 = 0xF, - .ub2 = 0x0812345678FEDCBA, + .ub1 = 0xFLL, + .ub2 = 0x0812345678FEDCBALL, }), BITFIELDS_ERR_CASE(bitfields___err_too_big_bitfield), --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/fexit_bpf2bpf.c @@ -16,7 +16,7 @@ __u32 duration = 0, retval; struct bpf_map *data_map; const int zero = 0; - u64 *result = NULL; + __u64 *result = NULL; err = bpf_prog_load(target_obj_file, BPF_PROG_TYPE_UNSPEC, &pkt_obj, &pkt_fd); @@ -29,7 +29,7 @@ link = calloc(sizeof(struct bpf_link *), prog_cnt); prog = calloc(sizeof(struct bpf_program *), prog_cnt); - result = malloc((prog_cnt + 32 /* spare */) * sizeof(u64)); + result = malloc((prog_cnt + 32 /* spare */) * sizeof(__u64)); if (CHECK(!link || !prog || !result, "alloc_memory", "failed to alloc memory")) goto close_prog; @@ -72,7 +72,7 @@ goto close_prog; for (i = 0; i < prog_cnt; i++) - if (CHECK(result[i] != 1, "result", "fexit_bpf2bpf failed err %ld\n", + if (CHECK(result[i] != 1, "result", "fexit_bpf2bpf failed err %llu\n", result[i])) goto close_prog; --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/flow_dissector.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/flow_dissector.c @@ -591,7 +591,7 @@ CHECK_ATTR(tattr.data_size_out != sizeof(flow_keys) || err || tattr.retval != 1, tests[i].name, - "err %d errno %d retval %d duration %d size %u/%lu\n", + "err %d errno %d retval %d duration %d size %u/%zu\n", err, errno, tattr.retval, tattr.duration, tattr.data_size_out, sizeof(flow_keys)); CHECK_FLOW_KEYS(tests[i].name, flow_keys, tests[i].keys); --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/global_data.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/global_data.c @@ -5,7 +5,7 @@ static void test_global_data_number(struct bpf_object *obj, __u32 duration) { int i, err, map_fd; - uint64_t num; + __u64 num; map_fd = bpf_find_map(__func__, obj, "result_number"); if (CHECK_FAIL(map_fd < 0)) @@ -14,7 +14,7 @@ struct { char *name; uint32_t key; - uint64_t num; + __u64 num; } tests[] = { { "relocate .bss reference", 0, 0 }, { "relocate .data reference", 1, 42 }, @@ -32,7 +32,7 @@ for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { err = bpf_map_lookup_elem(map_fd, &tests[i].key, &num); CHECK(err || num != tests[i].num, tests[i].name, - "err %d result %lx expected %lx\n", + "err %d result %llx expected %llx\n", err, num, tests[i].num); } } --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/mmap.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/mmap.c @@ -21,7 +21,7 @@ const long page_size = sysconf(_SC_PAGE_SIZE); int err, duration = 0, i, data_map_fd, data_map_id, tmp_fd, rdmap_fd; struct bpf_map *data_map, *bss_map; - void *bss_mmaped = NULL, *map_mmaped = NULL, *tmp1, *tmp2; + void *bss_mmaped = NULL, *map_mmaped = NULL, *tmp0, *tmp1, *tmp2; struct test_mmap__bss *bss_data; struct bpf_map_info map_info; __u32 map_info_sz = sizeof(map_info); @@ -183,16 +183,23 @@ /* check some more advanced mmap() manipulations */ + tmp0 = mmap(NULL, 4 * page_size, PROT_READ, MAP_SHARED | MAP_ANONYMOUS, + -1, 0); + if (CHECK(tmp0 == MAP_FAILED, "adv_mmap0", "errno %d\n", errno)) + goto cleanup; + /* map all but last page: pages 1-3 mapped */ - tmp1 = mmap(NULL, 3 * page_size, PROT_READ, MAP_SHARED, + tmp1 = mmap(tmp0, 3 * page_size, PROT_READ, MAP_SHARED | MAP_FIXED, data_map_fd, 0); - if (CHECK(tmp1 == MAP_FAILED, "adv_mmap1", "errno %d\n", errno)) + if (CHECK(tmp0 != tmp1, "adv_mmap1", "tmp0: %p, tmp1: %p\n", tmp0, tmp1)) { + munmap(tmp0, 4 * page_size); goto cleanup; + } /* unmap second page: pages 1, 3 mapped */ err = munmap(tmp1 + page_size, page_size); if (CHECK(err, "adv_mmap2", "errno %d\n", errno)) { - munmap(tmp1, map_sz); + munmap(tmp1, 4 * page_size); goto cleanup; } @@ -201,7 +208,7 @@ MAP_SHARED | MAP_FIXED, data_map_fd, 0); if (CHECK(tmp2 == MAP_FAILED, "adv_mmap3", "errno %d\n", errno)) { munmap(tmp1, page_size); - munmap(tmp1 + 2*page_size, page_size); + munmap(tmp1 + 2*page_size, 2 * page_size); goto cleanup; } CHECK(tmp1 + page_size != tmp2, "adv_mmap4", @@ -211,7 +218,7 @@ tmp2 = mmap(tmp1, 4 * page_size, PROT_READ, MAP_SHARED | MAP_FIXED, data_map_fd, 0); if (CHECK(tmp2 == MAP_FAILED, "adv_mmap5", "errno %d\n", errno)) { - munmap(tmp1, 3 * page_size); /* unmap page 1 */ + munmap(tmp1, 4 * page_size); /* unmap page 1 */ goto cleanup; } CHECK(tmp1 != tmp2, "adv_mmap6", "tmp1: %p, tmp2: %p\n", tmp1, tmp2); --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/prog_run_xattr.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/prog_run_xattr.c @@ -28,7 +28,7 @@ "err %d errno %d retval %d\n", err, errno, tattr.retval); CHECK_ATTR(tattr.data_size_out != sizeof(pkt_v4), "data_size_out", - "incorrect output size, want %lu have %u\n", + "incorrect output size, want %zu have %u\n", sizeof(pkt_v4), tattr.data_size_out); CHECK_ATTR(buf[5] != 0, "overflow", --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/sk_assign.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/sk_assign.c @@ -265,7 +265,7 @@ TEST("ipv6 udp port redir", AF_INET6, SOCK_DGRAM, false), TEST("ipv6 udp addr redir", AF_INET6, SOCK_DGRAM, true), }; - int server = -1; + __s64 server = -1; int server_map; int self_net; --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/skb_ctx.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/skb_ctx.c @@ -80,7 +80,7 @@ CHECK_ATTR(tattr.ctx_size_out != sizeof(skb), "ctx_size_out", - "incorrect output size, want %lu have %u\n", + "incorrect output size, want %zu have %u\n", sizeof(skb), tattr.ctx_size_out); for (i = 0; i < 5; i++) --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/sockopt_multi.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/sockopt_multi.c @@ -138,7 +138,8 @@ */ buf = 0x40; - if (setsockopt(sock_fd, SOL_IP, IP_TOS, &buf, 1) < 0) { + err = setsockopt(sock_fd, SOL_IP, IP_TOS, &buf, 1); + if (err < 0) { log_err("Failed to call setsockopt(IP_TOS)"); goto detach; } --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/sockopt_sk.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/sockopt_sk.c @@ -45,9 +45,9 @@ goto err; } - if (*(int *)big_buf != 0x08) { + if (*big_buf != 0x08) { log_err("Unexpected getsockopt(IP_TOS) optval 0x%x != 0x08", - *(int *)big_buf); + (int)*big_buf); goto err; } --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/test_global_funcs.c @@ -19,7 +19,7 @@ log_buf = va_arg(args, char *); if (!log_buf) goto out; - if (strstr(log_buf, err_str) == 0) + if (err_str && strstr(log_buf, err_str) == 0) found = true; out: printf(format, log_buf); --- linux-5.8.0.orig/tools/testing/selftests/bpf/prog_tests/test_overhead.c +++ linux-5.8.0/tools/testing/selftests/bpf/prog_tests/test_overhead.c @@ -61,10 +61,9 @@ const char *raw_tp_name = "raw_tp/task_rename"; const char *fentry_name = "fentry/__set_task_comm"; const char *fexit_name = "fexit/__set_task_comm"; - const char *fmodret_name = "fmod_ret/__set_task_comm"; const char *kprobe_func = "__set_task_comm"; struct bpf_program *kprobe_prog, *kretprobe_prog, *raw_tp_prog; - struct bpf_program *fentry_prog, *fexit_prog, *fmodret_prog; + struct bpf_program *fentry_prog, *fexit_prog; struct bpf_object *obj; struct bpf_link *link; int err, duration = 0; @@ -97,11 +96,6 @@ if (CHECK(!fexit_prog, "find_probe", "prog '%s' not found\n", fexit_name)) goto cleanup; - fmodret_prog = bpf_object__find_program_by_title(obj, fmodret_name); - if (CHECK(!fmodret_prog, "find_probe", - "prog '%s' not found\n", fmodret_name)) - goto cleanup; - err = bpf_object__load(obj); if (CHECK(err, "obj_load", "err %d\n", err)) goto cleanup; @@ -148,12 +142,6 @@ test_run("fexit"); bpf_link__destroy(link); - /* attach fmod_ret */ - link = bpf_program__attach_trace(fmodret_prog); - if (CHECK(IS_ERR(link), "attach fmod_ret", "err %ld\n", PTR_ERR(link))) - goto cleanup; - test_run("fmod_ret"); - bpf_link__destroy(link); cleanup: prctl(PR_SET_NAME, comm, 0L, 0L, 0L); bpf_object__close(obj); --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/core_reloc_types.h +++ linux-5.8.0/tools/testing/selftests/bpf/progs/core_reloc_types.h @@ -1,5 +1,10 @@ #include #include + +void preserce_ptr_sz_fn(long x) {} + +#define __bpf_aligned __attribute__((aligned(8))) + /* * KERNEL */ @@ -444,51 +449,51 @@ char a; int b; enum core_reloc_primitives_enum c; - void *d; - int (*f)(const char *); + void *d __bpf_aligned; + int (*f)(const char *) __bpf_aligned; }; struct core_reloc_primitives___diff_enum_def { char a; int b; - void *d; - int (*f)(const char *); + void *d __bpf_aligned; + int (*f)(const char *) __bpf_aligned; enum { X = 100, Y = 200, - } c; /* inline enum def with differing set of values */ + } c __bpf_aligned; /* inline enum def with differing set of values */ }; struct core_reloc_primitives___diff_func_proto { - void (*f)(int); /* incompatible function prototype */ - void *d; - enum core_reloc_primitives_enum c; + void (*f)(int) __bpf_aligned; /* incompatible function prototype */ + void *d __bpf_aligned; + enum core_reloc_primitives_enum c __bpf_aligned; int b; char a; }; struct core_reloc_primitives___diff_ptr_type { - const char * const d; /* different pointee type + modifiers */ - char a; + const char * const d __bpf_aligned; /* different pointee type + modifiers */ + char a __bpf_aligned; int b; enum core_reloc_primitives_enum c; - int (*f)(const char *); + int (*f)(const char *) __bpf_aligned; }; struct core_reloc_primitives___err_non_enum { char a[1]; int b; int c; /* int instead of enum */ - void *d; - int (*f)(const char *); + void *d __bpf_aligned; + int (*f)(const char *) __bpf_aligned; }; struct core_reloc_primitives___err_non_int { char a[1]; - int *b; /* ptr instead of int */ - enum core_reloc_primitives_enum c; - void *d; - int (*f)(const char *); + int *b __bpf_aligned; /* ptr instead of int */ + enum core_reloc_primitives_enum c __bpf_aligned; + void *d __bpf_aligned; + int (*f)(const char *) __bpf_aligned; }; struct core_reloc_primitives___err_non_ptr { @@ -496,7 +501,7 @@ int b; enum core_reloc_primitives_enum c; int d; /* int instead of ptr */ - int (*f)(const char *); + int (*f)(const char *) __bpf_aligned; }; /* @@ -507,7 +512,7 @@ }; typedef const int int_t; -typedef const char *char_ptr_t; +typedef const char *char_ptr_t __bpf_aligned; typedef const int arr_t[7]; struct core_reloc_mods_substruct { @@ -523,9 +528,9 @@ struct core_reloc_mods { int a; int_t b; - char *c; + char *c __bpf_aligned; char_ptr_t d; - int e[3]; + int e[3] __bpf_aligned; arr_t f; struct core_reloc_mods_substruct g; core_reloc_mods_substruct_t h; @@ -535,9 +540,9 @@ struct core_reloc_mods___mod_swap { int b; int_t a; - char *d; + char *d __bpf_aligned; char_ptr_t c; - int f[3]; + int f[3] __bpf_aligned; arr_t e; struct { int y; @@ -555,7 +560,7 @@ typedef arr2_t arr3_t; typedef arr3_t arr4_t; -typedef const char * const volatile fancy_char_ptr_t; +typedef const char * const volatile fancy_char_ptr_t __bpf_aligned; typedef core_reloc_mods_substruct_t core_reloc_mods_substruct_tt; @@ -567,7 +572,7 @@ arr4_t e; fancy_char_ptr_t d; fancy_char_ptr_t c; - int3_t b; + int3_t b __bpf_aligned; int3_t a; }; @@ -739,19 +744,19 @@ int8_t sb4: 1; /* 4 -> 1 */ int32_t sb20: 30; /* 20 -> 30 */ /* non-bitfields */ - uint16_t u32; /* 32 -> 16 */ - int64_t s32; /* 32 -> 64 */ + uint16_t u32; /* 32 -> 16 */ + int64_t s32 __bpf_aligned; /* 32 -> 64 */ }; /* turn bitfield into non-bitfield and vice versa */ struct core_reloc_bitfields___bitfield_vs_int { uint64_t ub1; /* 3 -> 64 non-bitfield */ uint8_t ub2; /* 20 -> 8 non-bitfield */ - int64_t ub7; /* 7 -> 64 non-bitfield signed */ - int64_t sb4; /* 4 -> 64 non-bitfield signed */ - uint64_t sb20; /* 20 -> 16 non-bitfield unsigned */ - int32_t u32: 20; /* 32 non-bitfield -> 20 bitfield */ - uint64_t s32: 60; /* 32 non-bitfield -> 60 bitfield */ + int64_t ub7 __bpf_aligned; /* 7 -> 64 non-bitfield signed */ + int64_t sb4 __bpf_aligned; /* 4 -> 64 non-bitfield signed */ + uint64_t sb20 __bpf_aligned; /* 20 -> 16 non-bitfield unsigned */ + int32_t u32: 20; /* 32 non-bitfield -> 20 bitfield */ + uint64_t s32: 60 __bpf_aligned; /* 32 non-bitfield -> 60 bitfield */ }; struct core_reloc_bitfields___just_big_enough { --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_overhead.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_overhead.c @@ -39,10 +39,4 @@ return 0; } -SEC("fmod_ret/__set_task_comm") -int BPF_PROG(prog6, struct task_struct *tsk, const char *buf, bool exec) -{ - return !tsk; -} - char _license[] SEC("license") = "GPL"; --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c @@ -18,11 +18,11 @@ #define MAX_ULONG_STR_LEN 7 #define MAX_VALUE_STR_LEN (TCP_MEM_LOOPS * MAX_ULONG_STR_LEN) +const char tcp_mem_name[] = "net/ipv4/tcp_mem/very_very_very_very_long_pointless_string"; static __always_inline int is_tcp_mem(struct bpf_sysctl *ctx) { - volatile char tcp_mem_name[] = "net/ipv4/tcp_mem/very_very_very_very_long_pointless_string"; unsigned char i; - char name[64]; + char name[sizeof(tcp_mem_name)]; int ret; memset(name, 0, sizeof(name)); --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c @@ -18,11 +18,11 @@ #define MAX_ULONG_STR_LEN 7 #define MAX_VALUE_STR_LEN (TCP_MEM_LOOPS * MAX_ULONG_STR_LEN) +const char tcp_mem_name[] = "net/ipv4/tcp_mem/very_very_very_very_long_pointless_string_to_stress_byte_loop"; static __attribute__((noinline)) int is_tcp_mem(struct bpf_sysctl *ctx) { - volatile char tcp_mem_name[] = "net/ipv4/tcp_mem/very_very_very_very_long_pointless_string_to_stress_byte_loop"; unsigned char i; - char name[64]; + char name[sizeof(tcp_mem_name)]; int ret; memset(name, 0, sizeof(name)); --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_sysctl_prog.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_sysctl_prog.c @@ -19,11 +19,11 @@ #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #endif +const char tcp_mem_name[] = "net/ipv4/tcp_mem"; static __always_inline int is_tcp_mem(struct bpf_sysctl *ctx) { - char tcp_mem_name[] = "net/ipv4/tcp_mem"; unsigned char i; - char name[64]; + char name[sizeof(tcp_mem_name)]; int ret; memset(name, 0, sizeof(name)); --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_tunnel_kern.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_tunnel_kern.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -447,10 +446,8 @@ } ret = bpf_skb_get_tunnel_opt(skb, &gopt, sizeof(gopt)); - if (ret < 0) { - ERROR(ret); - return TC_ACT_SHOT; - } + if (ret < 0) + gopt.opt_class = 0; bpf_trace_printk(fmt, sizeof(fmt), key.tunnel_id, key.remote_ipv4, gopt.opt_class); @@ -511,10 +508,8 @@ } ret = bpf_skb_get_tunnel_opt(skb, &gopt, sizeof(gopt)); - if (ret < 0) { - ERROR(ret); - return TC_ACT_SHOT; - } + if (ret < 0) + gopt.opt_class = 0; bpf_trace_printk(fmt, sizeof(fmt), key.tunnel_id, key.remote_ipv4, gopt.opt_class); @@ -528,12 +523,11 @@ struct bpf_tunnel_key key = {}; void *data = (void *)(long)skb->data; struct iphdr *iph = data; - struct tcphdr *tcp = data + sizeof(*iph); void *data_end = (void *)(long)skb->data_end; int ret; /* single length check */ - if (data + sizeof(*iph) + sizeof(*tcp) > data_end) { + if (data + sizeof(*iph) > data_end) { ERROR(1); return TC_ACT_SHOT; } @@ -541,16 +535,6 @@ key.tunnel_ttl = 64; if (iph->protocol == IPPROTO_ICMP) { key.remote_ipv4 = 0xac100164; /* 172.16.1.100 */ - } else { - if (iph->protocol != IPPROTO_TCP || iph->ihl != 5) - return TC_ACT_SHOT; - - if (tcp->dest == bpf_htons(5200)) - key.remote_ipv4 = 0xac100164; /* 172.16.1.100 */ - else if (tcp->dest == bpf_htons(5201)) - key.remote_ipv4 = 0xac100165; /* 172.16.1.101 */ - else - return TC_ACT_SHOT; } ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key), 0); @@ -585,19 +569,20 @@ struct bpf_tunnel_key key = {}; void *data = (void *)(long)skb->data; struct iphdr *iph = data; - struct tcphdr *tcp = data + sizeof(*iph); void *data_end = (void *)(long)skb->data_end; int ret; /* single length check */ - if (data + sizeof(*iph) + sizeof(*tcp) > data_end) { + if (data + sizeof(*iph) > data_end) { ERROR(1); return TC_ACT_SHOT; } __builtin_memset(&key, 0x0, sizeof(key)); - key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */ key.tunnel_ttl = 64; + if (iph->protocol == IPPROTO_ICMP) { + key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */ + } ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key), BPF_F_TUNINFO_IPV6); @@ -634,35 +619,18 @@ struct bpf_tunnel_key key = {}; void *data = (void *)(long)skb->data; struct ipv6hdr *iph = data; - struct tcphdr *tcp = data + sizeof(*iph); void *data_end = (void *)(long)skb->data_end; int ret; /* single length check */ - if (data + sizeof(*iph) + sizeof(*tcp) > data_end) { + if (data + sizeof(*iph) > data_end) { ERROR(1); return TC_ACT_SHOT; } - key.remote_ipv6[0] = bpf_htonl(0x2401db00); key.tunnel_ttl = 64; - if (iph->nexthdr == 58 /* NEXTHDR_ICMP */) { - key.remote_ipv6[3] = bpf_htonl(1); - } else { - if (iph->nexthdr != 6 /* NEXTHDR_TCP */) { - ERROR(iph->nexthdr); - return TC_ACT_SHOT; - } - - if (tcp->dest == bpf_htons(5200)) { - key.remote_ipv6[3] = bpf_htonl(1); - } else if (tcp->dest == bpf_htons(5201)) { - key.remote_ipv6[3] = bpf_htonl(2); - } else { - ERROR(tcp->dest); - return TC_ACT_SHOT; - } + key.remote_ipv6[3] = bpf_htonl(0x11); /* ::11 */ } ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key), --- linux-5.8.0.orig/tools/testing/selftests/bpf/progs/test_vmlinux.c +++ linux-5.8.0/tools/testing/selftests/bpf/progs/test_vmlinux.c @@ -19,12 +19,14 @@ int handle__tp(struct trace_event_raw_sys_enter *args) { struct __kernel_timespec *ts; + long tv_nsec; if (args->id != __NR_nanosleep) return 0; ts = (void *)args->args[0]; - if (BPF_CORE_READ(ts, tv_nsec) != MY_TV_NSEC) + if (bpf_probe_read_user(&tv_nsec, sizeof(ts->tv_nsec), &ts->tv_nsec) || + tv_nsec != MY_TV_NSEC) return 0; tp_called = true; @@ -35,12 +37,14 @@ int BPF_PROG(handle__raw_tp, struct pt_regs *regs, long id) { struct __kernel_timespec *ts; + long tv_nsec; if (id != __NR_nanosleep) return 0; ts = (void *)PT_REGS_PARM1_CORE(regs); - if (BPF_CORE_READ(ts, tv_nsec) != MY_TV_NSEC) + if (bpf_probe_read_user(&tv_nsec, sizeof(ts->tv_nsec), &ts->tv_nsec) || + tv_nsec != MY_TV_NSEC) return 0; raw_tp_called = true; @@ -51,12 +55,14 @@ int BPF_PROG(handle__tp_btf, struct pt_regs *regs, long id) { struct __kernel_timespec *ts; + long tv_nsec; if (id != __NR_nanosleep) return 0; ts = (void *)PT_REGS_PARM1_CORE(regs); - if (BPF_CORE_READ(ts, tv_nsec) != MY_TV_NSEC) + if (bpf_probe_read_user(&tv_nsec, sizeof(ts->tv_nsec), &ts->tv_nsec) || + tv_nsec != MY_TV_NSEC) return 0; tp_btf_called = true; --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_btf.c +++ linux-5.8.0/tools/testing/selftests/bpf/test_btf.c @@ -3883,7 +3883,7 @@ info_garbage.garbage = 0; err = bpf_obj_get_info_by_fd(btf_fd, info, &info_len); if (CHECK(err || info_len != sizeof(*info), - "err:%d errno:%d info_len:%u sizeof(*info):%lu", + "err:%d errno:%d info_len:%u sizeof(*info):%zu", err, errno, info_len, sizeof(*info))) { err = -1; goto done; @@ -4094,7 +4094,7 @@ if (CHECK(err || !info.id || info_len != sizeof(info) || info.btf_size != raw_btf_size || (ret = memcmp(raw_btf, user_btf, expected_nbytes)), - "err:%d errno:%d info.id:%u info_len:%u sizeof(info):%lu raw_btf_size:%u info.btf_size:%u expected_nbytes:%u memcmp:%d", + "err:%d errno:%d info.id:%u info_len:%u sizeof(info):%zu raw_btf_size:%u info.btf_size:%u expected_nbytes:%u memcmp:%d", err, errno, info.id, info_len, sizeof(info), raw_btf_size, info.btf_size, expected_nbytes, ret)) { err = -1; @@ -4730,7 +4730,7 @@ nexpected_line = snprintf(expected_line, line_size, "%s%u: {%u,0,%d,0x%x,0x%x,0x%x," - "{%lu|[%u,%u,%u,%u,%u,%u,%u,%u]},%s," + "{%llu|[%u,%u,%u,%u,%u,%u,%u,%u]},%s," "%u,0x%x,[[%d,%d],[%d,%d]]}\n", percpu_map ? "\tcpu" : "", percpu_map ? cpu : next_key, @@ -4738,7 +4738,7 @@ v->unused_bits2a, v->bits28, v->unused_bits2b, - v->ui64, + (__u64)v->ui64, v->ui8a[0], v->ui8a[1], v->ui8a[2], v->ui8a[3], v->ui8a[4], v->ui8a[5], --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_maps.c +++ linux-5.8.0/tools/testing/selftests/bpf/test_maps.c @@ -1274,6 +1274,8 @@ pid_t pid[tasks]; int i; + fflush(stdout); + for (i = 0; i < tasks; i++) { pid[i] = fork(); if (pid[i] == 0) { --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_offload.py +++ linux-5.8.0/tools/testing/selftests/bpf/test_offload.py @@ -941,6 +941,7 @@ start_test("Test disabling TC offloads is rejected while filters installed...") ret, _ = sim.set_ethtool_tc_offloads(False, fail=False) fail(ret == 0, "Driver should refuse to disable TC offloads with filters installed...") + sim.set_ethtool_tc_offloads(True) start_test("Test qdisc removal frees things...") sim.tc_flush_filters() --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_progs.c +++ linux-5.8.0/tools/testing/selftests/bpf/test_progs.c @@ -12,6 +12,9 @@ #include #include /* backtrace */ +#define EXIT_NO_TEST 2 +#define EXIT_ERR_SETUP_INFRA 3 + /* defined in test_progs.h */ struct test_env env = {}; @@ -111,13 +114,31 @@ if (err < 0) { stdio_restore(); fprintf(stderr, "Failed to reset process affinity: %d!\n", err); - exit(-1); + exit(EXIT_ERR_SETUP_INFRA); } err = pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset); if (err < 0) { stdio_restore(); fprintf(stderr, "Failed to reset thread affinity: %d!\n", err); - exit(-1); + exit(EXIT_ERR_SETUP_INFRA); + } +} + +static void save_netns(void) +{ + env.saved_netns_fd = open("/proc/self/ns/net", O_RDONLY); + if (env.saved_netns_fd == -1) { + perror("open(/proc/self/ns/net)"); + exit(EXIT_ERR_SETUP_INFRA); + } +} + +static void restore_netns(void) +{ + if (setns(env.saved_netns_fd, CLONE_NEWNET) == -1) { + stdio_restore(); + perror("setns(CLONE_NEWNS)"); + exit(EXIT_ERR_SETUP_INFRA); } } @@ -138,8 +159,6 @@ test->test_num, test->subtest_num, test->subtest_name, sub_error_cnt ? "FAIL" : "OK"); - reset_affinity(); - free(test->subtest_name); test->subtest_name = NULL; } @@ -643,6 +662,7 @@ return -1; } + save_netns(); stdio_hijack(); for (i = 0; i < prog_test_cnt; i++) { struct prog_test_def *test = &prog_test_defs[i]; @@ -673,6 +693,7 @@ test->error_cnt ? "FAIL" : "OK"); reset_affinity(); + restore_netns(); if (test->need_cgroup_cleanup) cleanup_cgroup_environment(); } @@ -686,6 +707,10 @@ free_str_set(&env.subtest_selector.blacklist); free_str_set(&env.subtest_selector.whitelist); free(env.subtest_selector.num_set); + close(env.saved_netns_fd); + + if (env.succ_cnt + env.fail_cnt + env.skip_cnt == 0) + return EXIT_NO_TEST; return env.fail_cnt ? EXIT_FAILURE : EXIT_SUCCESS; } --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_progs.h +++ linux-5.8.0/tools/testing/selftests/bpf/test_progs.h @@ -78,6 +78,8 @@ int sub_succ_cnt; /* successful sub-tests */ int fail_cnt; /* total failed tests + sub-tests */ int skip_cnt; /* skipped tests */ + + int saved_netns_fd; }; extern struct test_env env; @@ -131,6 +133,11 @@ return (__u64) (unsigned long) ptr; } +static inline void *u64_to_ptr(__u64 ptr) +{ + return (void *) (unsigned long) ptr; +} + int bpf_find_map(const char *test, struct bpf_object *obj, const char *name); int compare_map_keys(int map1_fd, int map2_fd); int compare_stack_ips(int smap_fd, int amap_fd, int stack_trace_len); --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_sockmap.c +++ linux-5.8.0/tools/testing/selftests/bpf/test_sockmap.c @@ -1281,6 +1281,16 @@ return "unknown"; } +static void append_str(char *dst, const char *src, size_t dst_cap) +{ + size_t avail = dst_cap - strlen(dst); + + if (avail <= 1) /* just zero byte could be written */ + return; + + strncat(dst, src, avail - 1); /* strncat() adds + 1 for zero byte */ +} + #define OPTSTRING 60 static void test_options(char *options) { @@ -1289,42 +1299,42 @@ memset(options, 0, OPTSTRING); if (txmsg_pass) - strncat(options, "pass,", OPTSTRING); + append_str(options, "pass,", OPTSTRING); if (txmsg_redir) - strncat(options, "redir,", OPTSTRING); + append_str(options, "redir,", OPTSTRING); if (txmsg_drop) - strncat(options, "drop,", OPTSTRING); + append_str(options, "drop,", OPTSTRING); if (txmsg_apply) { snprintf(tstr, OPTSTRING, "apply %d,", txmsg_apply); - strncat(options, tstr, OPTSTRING); + append_str(options, tstr, OPTSTRING); } if (txmsg_cork) { snprintf(tstr, OPTSTRING, "cork %d,", txmsg_cork); - strncat(options, tstr, OPTSTRING); + append_str(options, tstr, OPTSTRING); } if (txmsg_start) { snprintf(tstr, OPTSTRING, "start %d,", txmsg_start); - strncat(options, tstr, OPTSTRING); + append_str(options, tstr, OPTSTRING); } if (txmsg_end) { snprintf(tstr, OPTSTRING, "end %d,", txmsg_end); - strncat(options, tstr, OPTSTRING); + append_str(options, tstr, OPTSTRING); } if (txmsg_start_pop) { snprintf(tstr, OPTSTRING, "pop (%d,%d),", txmsg_start_pop, txmsg_start_pop + txmsg_pop); - strncat(options, tstr, OPTSTRING); + append_str(options, tstr, OPTSTRING); } if (txmsg_ingress) - strncat(options, "ingress,", OPTSTRING); + append_str(options, "ingress,", OPTSTRING); if (txmsg_redir_skb) - strncat(options, "redir_skb,", OPTSTRING); + append_str(options, "redir_skb,", OPTSTRING); if (txmsg_ktls_skb) - strncat(options, "ktls_skb,", OPTSTRING); + append_str(options, "ktls_skb,", OPTSTRING); if (ktls) - strncat(options, "ktls,", OPTSTRING); + append_str(options, "ktls,", OPTSTRING); if (peek_flag) - strncat(options, "peek,", OPTSTRING); + append_str(options, "peek,", OPTSTRING); } static int __test_exec(int cgrp, int test, struct sockmap_options *opt) --- linux-5.8.0.orig/tools/testing/selftests/bpf/test_tunnel.sh +++ linux-5.8.0/tools/testing/selftests/bpf/test_tunnel.sh @@ -24,12 +24,12 @@ # Root namespace with metadata-mode tunnel + BPF # Device names and addresses: # veth1 IP: 172.16.1.200, IPv6: 00::22 (underlay) -# tunnel dev 11, ex: gre11, IPv4: 10.1.1.200 (overlay) +# tunnel dev 11, ex: gre11, IPv4: 10.1.1.200, IPv6: 1::22 (overlay) # # Namespace at_ns0 with native tunnel # Device names and addresses: # veth0 IPv4: 172.16.1.100, IPv6: 00::11 (underlay) -# tunnel dev 00, ex: gre00, IPv4: 10.1.1.100 (overlay) +# tunnel dev 00, ex: gre00, IPv4: 10.1.1.100, IPv6: 1::11 (overlay) # # # End-to-end ping packet flow @@ -250,7 +250,7 @@ ip addr add dev $DEV 10.1.1.200/24 } -add_ipip6tnl_tunnel() +add_ip6tnl_tunnel() { ip netns exec at_ns0 ip addr add ::11/96 dev veth0 ip netns exec at_ns0 ip link set dev veth0 up @@ -262,11 +262,13 @@ ip link add dev $DEV_NS type $TYPE \ local ::11 remote ::22 ip netns exec at_ns0 ip addr add dev $DEV_NS 10.1.1.100/24 + ip netns exec at_ns0 ip addr add dev $DEV_NS 1::11/96 ip netns exec at_ns0 ip link set dev $DEV_NS up # root namespace ip link add dev $DEV type $TYPE external ip addr add dev $DEV 10.1.1.200/24 + ip addr add dev $DEV 1::22/96 ip link set dev $DEV up } @@ -534,7 +536,7 @@ check $TYPE config_device - add_ipip6tnl_tunnel + add_ip6tnl_tunnel ip link set dev veth1 mtu 1500 attach_bpf $DEV ipip6_set_tunnel ipip6_get_tunnel # underlay @@ -553,6 +555,34 @@ echo -e ${GREEN}"PASS: $TYPE"${NC} } +test_ip6ip6() +{ + TYPE=ip6tnl + DEV_NS=ip6ip6tnl00 + DEV=ip6ip6tnl11 + ret=0 + + check $TYPE + config_device + add_ip6tnl_tunnel + ip link set dev veth1 mtu 1500 + attach_bpf $DEV ip6ip6_set_tunnel ip6ip6_get_tunnel + # underlay + ping6 $PING_ARG ::11 + # ip6 over ip6 + ping6 $PING_ARG 1::11 + check_err $? + ip netns exec at_ns0 ping6 $PING_ARG 1::22 + check_err $? + cleanup + + if [ $ret -ne 0 ]; then + echo -e ${RED}"FAIL: ip6$TYPE"${NC} + return 1 + fi + echo -e ${GREEN}"PASS: ip6$TYPE"${NC} +} + setup_xfrm_tunnel() { auth=0x$(printf '1%.0s' {1..40}) @@ -646,6 +676,7 @@ ip link del veth1 2> /dev/null ip link del ipip11 2> /dev/null ip link del ipip6tnl11 2> /dev/null + ip link del ip6ip6tnl11 2> /dev/null ip link del gretap11 2> /dev/null ip link del ip6gre11 2> /dev/null ip link del ip6gretap11 2> /dev/null @@ -742,6 +773,10 @@ test_ipip6 errors=$(( $errors + $? )) + echo "Testing IP6IP6 tunnel..." + test_ip6ip6 + errors=$(( $errors + $? )) + echo "Testing IPSec tunnel..." test_xfrm_tunnel errors=$(( $errors + $? )) --- linux-5.8.0.orig/tools/testing/selftests/bpf/verifier/array_access.c +++ linux-5.8.0/tools/testing/selftests/bpf/verifier/array_access.c @@ -250,12 +250,13 @@ BPF_MOV64_IMM(BPF_REG_5, 0), BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_csum_diff), + BPF_ALU64_IMM(BPF_AND, BPF_REG_0, 0xffff), BPF_EXIT_INSN(), }, .prog_type = BPF_PROG_TYPE_SCHED_CLS, .fixup_map_array_ro = { 3 }, .result = ACCEPT, - .retval = -29, + .retval = 65507, }, { "invalid write map access into a read-only array 1", --- linux-5.8.0.orig/tools/testing/selftests/bpf/verifier/bounds_deduction.c +++ linux-5.8.0/tools/testing/selftests/bpf/verifier/bounds_deduction.c @@ -6,8 +6,9 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types", .errstr = "R0 tried to subtract pointer from scalar", + .result = REJECT, }, { "check deducing bounds from const, 2", @@ -20,6 +21,8 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0), BPF_EXIT_INSN(), }, + .errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types", + .result_unpriv = REJECT, .result = ACCEPT, .retval = 1, }, @@ -31,8 +34,9 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types", .errstr = "R0 tried to subtract pointer from scalar", + .result = REJECT, }, { "check deducing bounds from const, 4", @@ -45,6 +49,8 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0), BPF_EXIT_INSN(), }, + .errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types", + .result_unpriv = REJECT, .result = ACCEPT, }, { @@ -55,8 +61,9 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types", .errstr = "R0 tried to subtract pointer from scalar", + .result = REJECT, }, { "check deducing bounds from const, 6", @@ -67,8 +74,9 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types", .errstr = "R0 tried to subtract pointer from scalar", + .result = REJECT, }, { "check deducing bounds from const, 7", @@ -80,8 +88,9 @@ offsetof(struct __sk_buff, mark)), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R1 tried to sub from different maps, paths, or prohibited types", .errstr = "dereference of modified ctx ptr", + .result = REJECT, .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, }, { @@ -94,8 +103,9 @@ offsetof(struct __sk_buff, mark)), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types", .errstr = "dereference of modified ctx ptr", + .result = REJECT, .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, }, { @@ -106,8 +116,9 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, + .errstr_unpriv = "R0 tried to sub from different maps, paths, or prohibited types", .errstr = "R0 tried to subtract pointer from scalar", + .result = REJECT, }, { "check deducing bounds from const, 10", @@ -119,6 +130,6 @@ BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), BPF_EXIT_INSN(), }, - .result = REJECT, .errstr = "math between ctx pointer and register with unbounded min value is not allowed", + .result = REJECT, }, --- linux-5.8.0.orig/tools/testing/selftests/bpf/verifier/unpriv.c +++ linux-5.8.0/tools/testing/selftests/bpf/verifier/unpriv.c @@ -495,7 +495,7 @@ .result = ACCEPT, }, { - "unpriv: adding of fp", + "unpriv: adding of fp, reg", .insns = { BPF_MOV64_IMM(BPF_REG_0, 0), BPF_MOV64_IMM(BPF_REG_1, 0), @@ -503,6 +503,19 @@ BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8), BPF_EXIT_INSN(), }, + .errstr_unpriv = "R1 tried to add from different maps, paths, or prohibited types", + .result_unpriv = REJECT, + .result = ACCEPT, +}, +{ + "unpriv: adding of fp, imm", + .insns = { + BPF_MOV64_IMM(BPF_REG_0, 0), + BPF_MOV64_REG(BPF_REG_1, BPF_REG_10), + BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, 0), + BPF_STX_MEM(BPF_DW, BPF_REG_1, BPF_REG_0, -8), + BPF_EXIT_INSN(), + }, .errstr_unpriv = "R1 stack pointer arithmetic goes out of range", .result_unpriv = REJECT, .result = ACCEPT, --- linux-5.8.0.orig/tools/testing/selftests/bpf/verifier/value_ptr_arith.c +++ linux-5.8.0/tools/testing/selftests/bpf/verifier/value_ptr_arith.c @@ -169,7 +169,7 @@ .fixup_map_array_48b = { 1 }, .result = ACCEPT, .result_unpriv = REJECT, - .errstr_unpriv = "R2 tried to add from different maps or paths", + .errstr_unpriv = "R2 tried to add from different maps, paths, or prohibited types", .retval = 0, }, { @@ -517,6 +517,27 @@ .retval = 0xabcdef12, }, { + "map access: value_ptr += N, value_ptr -= N known scalar", + .insns = { + BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), + BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), + BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), + BPF_LD_MAP_FD(BPF_REG_1, 0), + BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), + BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6), + BPF_MOV32_IMM(BPF_REG_1, 0x12345678), + BPF_STX_MEM(BPF_W, BPF_REG_0, BPF_REG_1, 0), + BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 2), + BPF_MOV64_IMM(BPF_REG_1, 2), + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), + BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_0, 0), + BPF_EXIT_INSN(), + }, + .fixup_map_array_48b = { 3 }, + .result = ACCEPT, + .retval = 0x12345678, +}, +{ "map access: unknown scalar += value_ptr, 1", .insns = { BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), --- linux-5.8.0.orig/tools/testing/selftests/cgroup/cgroup_util.c +++ linux-5.8.0/tools/testing/selftests/cgroup/cgroup_util.c @@ -106,7 +106,7 @@ /* Handle the case of comparing against empty string */ if (!expected) - size = 32; + return -1; else size = strlen(expected) + 1; --- linux-5.8.0.orig/tools/testing/selftests/dmabuf-heaps/Makefile +++ linux-5.8.0/tools/testing/selftests/dmabuf-heaps/Makefile @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -CFLAGS += -static -O3 -Wl,-no-as-needed -Wall -I../../../../usr/include +CFLAGS += -static -O3 -Wl,-no-as-needed -Wall TEST_GEN_PROGS = dmabuf-heap --- linux-5.8.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_user.tc +++ linux-5.8.0/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_user.tc @@ -9,12 +9,16 @@ :;: "user-memory access syntax and ustring working on user memory";: echo 'p:myevent do_sys_open path=+0($arg2):ustring path2=+u0($arg2):string' \ > kprobe_events +echo 'p:myevent2 do_sys_openat2 path=+0($arg2):ustring path2=+u0($arg2):string' \ + >> kprobe_events grep myevent kprobe_events | \ grep -q 'path=+0($arg2):ustring path2=+u0($arg2):string' echo 1 > events/kprobes/myevent/enable +echo 1 > events/kprobes/myevent2/enable echo > /dev/null echo 0 > events/kprobes/myevent/enable +echo 0 > events/kprobes/myevent2/enable grep myevent trace | grep -q 'path="/dev/null" path2="/dev/null"' --- linux-5.8.0.orig/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +++ linux-5.8.0/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc @@ -25,12 +25,12 @@ echo 'hist:keys=pid:ts1=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts1:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid) if next_comm=="ping"' > events/sched/sched_switch/trigger -echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events -echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger -echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger +echo 'waking_plus_wakeup_latency u64 lat; pid_t pid' >> synthetic_events +echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking_plus_wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger +echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking_plus_wakeup_latency/trigger ping $LOCALHOST -c 3 -if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then +if ! grep -q "pid:" events/synthetic/waking_plus_wakeup_latency/hist; then fail "Failed to create combined histogram" fi --- linux-5.8.0.orig/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc +++ linux-5.8.0/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc @@ -14,12 +14,12 @@ x=$2 cat $file | while read line; do - comment=`echo $line | sed -e 's/^#//'` + comment=`echo "$line" | sed -e 's/^#//'` if [ "$line" != "$comment" ]; then continue fi echo "testing $line for >$x<" - match=`echo $line | sed -e "s/>$x$x$x< in it" fi --- linux-5.8.0.orig/tools/testing/selftests/kselftest/runner.sh +++ linux-5.8.0/tools/testing/selftests/kselftest/runner.sh @@ -32,7 +32,7 @@ tap_timeout() { # Make sure tests will time out if utility is available. - if [ -x /usr/bin/timeout ] ; then + if [ -x /usr/bin/timeout ] && [ $kselftest_timeout -gt 0 ] ; then /usr/bin/timeout --foreground "$kselftest_timeout" "$1" else "$1" --- linux-5.8.0.orig/tools/testing/selftests/kvm/include/x86_64/processor.h +++ linux-5.8.0/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -59,7 +59,7 @@ struct desc64 { uint16_t limit0; uint16_t base0; - unsigned base1:8, s:1, type:4, dpl:2, p:1; + unsigned base1:8, type:4, s:1, dpl:2, p:1; unsigned limit1:4, avl:1, l:1, db:1, g:1, base2:8; uint32_t base3; uint32_t zero1; --- linux-5.8.0.orig/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ linux-5.8.0/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -392,11 +392,12 @@ desc->limit0 = segp->limit & 0xFFFF; desc->base0 = segp->base & 0xFFFF; desc->base1 = segp->base >> 16; - desc->s = segp->s; desc->type = segp->type; + desc->s = segp->s; desc->dpl = segp->dpl; desc->p = segp->present; desc->limit1 = segp->limit >> 16; + desc->avl = segp->avl; desc->l = segp->l; desc->db = segp->db; desc->g = segp->g; --- linux-5.8.0.orig/tools/testing/selftests/kvm/x86_64/debug_regs.c +++ linux-5.8.0/tools/testing/selftests/kvm/x86_64/debug_regs.c @@ -40,11 +40,11 @@ /* Single step test, covers 2 basic instructions and 2 emulated */ asm volatile("ss_start: " - "xor %%rax,%%rax\n\t" + "xor %%eax,%%eax\n\t" "cpuid\n\t" "movl $0x1a0,%%ecx\n\t" "rdmsr\n\t" - : : : "rax", "ecx"); + : : : "eax", "ebx", "ecx", "edx"); /* DR6.BD test */ asm volatile("bd_start: mov %%dr0, %%rax" : : : "rax"); --- linux-5.8.0.orig/tools/testing/selftests/lib.mk +++ linux-5.8.0/tools/testing/selftests/lib.mk @@ -139,7 +139,7 @@ ifeq ($(OVERRIDE_TARGETS),) LOCAL_HDRS := $(selfdir)/kselftest_harness.h $(selfdir)/kselftest.h $(OUTPUT)/%:%.c $(LOCAL_HDRS) - $(LINK.c) $^ $(LDLIBS) -o $@ + $(LINK.c) $(filter-out $(LOCAL_HDRS),$^) $(LDLIBS) -o $@ $(OUTPUT)/%.o:%.S $(COMPILE.S) $^ -o $@ --- linux-5.8.0.orig/tools/testing/selftests/lkdtm/run.sh +++ linux-5.8.0/tools/testing/selftests/lkdtm/run.sh @@ -8,6 +8,7 @@ # set -e TRIGGER=/sys/kernel/debug/provoke-crash/DIRECT +CLEAR_ONCE=/sys/kernel/debug/clear_warn_once KSELFTEST_SKIP_TEST=4 # Verify we have LKDTM available in the kernel. @@ -67,6 +68,11 @@ } trap cleanup EXIT +# Reset WARN_ONCE counters so we trip it each time this runs. +if [ -w $CLEAR_ONCE ] ; then + echo 1 > $CLEAR_ONCE +fi + # Save existing dmesg so we can detect new content below dmesg > "$DMESG" @@ -76,7 +82,7 @@ ($SHELL -c 'cat <(echo '"$test"') >'"$TRIGGER" 2>/dev/null) || true # Record and dump the results -dmesg | diff --changed-group-format='%>' --unchanged-group-format='' "$DMESG" - > "$LOG" || true +dmesg | comm --nocheck-order -13 "$DMESG" - > "$LOG" || true cat "$LOG" # Check for expected output --- linux-5.8.0.orig/tools/testing/selftests/lkdtm/tests.txt +++ linux-5.8.0/tools/testing/selftests/lkdtm/tests.txt @@ -14,6 +14,7 @@ STACK_GUARD_PAGE_TRAILING UNSET_SMEP CR4 bits went missing DOUBLE_FAULT +CORRUPT_PAC UNALIGNED_LOAD_STORE_WRITE #OVERWRITE_ALLOCATION Corrupts memory on failure #WRITE_AFTER_FREE Corrupts memory on failure --- linux-5.8.0.orig/tools/testing/selftests/memfd/fuse_test.c +++ linux-5.8.0/tools/testing/selftests/memfd/fuse_test.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/memfd/memfd_test.c +++ linux-5.8.0/tools/testing/selftests/memfd/memfd_test.c @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/net/Makefile +++ linux-5.8.0/tools/testing/selftests/net/Makefile @@ -10,7 +10,7 @@ TEST_PROGS += udpgso_bench.sh fib_rule_tests.sh msg_zerocopy.sh psock_snd.sh TEST_PROGS += udpgro_bench.sh udpgro.sh test_vxlan_under_vrf.sh reuseport_addr_any.sh TEST_PROGS += test_vxlan_fdb_changelink.sh so_txtime.sh ipv6_flowlabel.sh -TEST_PROGS += tcp_fastopen_backup_key.sh fcnal-test.sh l2tp.sh traceroute.sh +TEST_PROGS += tcp_fastopen_backup_key.sh fcnal-test.sh traceroute.sh TEST_PROGS += fin_ack_lat.sh fib_nexthop_multiprefix.sh fib_nexthops.sh TEST_PROGS += altnames.sh icmp_redirect.sh ip6_gre_headroom.sh TEST_PROGS += route_localnet.sh @@ -30,6 +30,8 @@ TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa TEST_GEN_PROGS += reuseport_dualstack reuseaddr_conflict tls +TEST_FILES := settings + KSFT_KHDR_INSTALL := 1 include ../lib.mk --- linux-5.8.0.orig/tools/testing/selftests/net/config +++ linux-5.8.0/tools/testing/selftests/net/config @@ -31,3 +31,4 @@ CONFIG_NET_SCH_NETEM=y CONFIG_TEST_BLACKHOLE_DEV=m CONFIG_KALLSYMS=y +CONFIG_NET_FOU=m --- linux-5.8.0.orig/tools/testing/selftests/net/fcnal-test.sh +++ linux-5.8.0/tools/testing/selftests/net/fcnal-test.sh @@ -256,6 +256,28 @@ fi } +setup_cmd_nsc() +{ + local cmd="$*" + local rc + + run_cmd_nsc ${cmd} + rc=$? + if [ $rc -ne 0 ]; then + # show user the command if not done so already + if [ "$VERBOSE" = "0" ]; then + echo "setup command: $cmd" + fi + echo "failed. stopping tests" + if [ "${PAUSE_ON_FAIL}" = "yes" ]; then + echo + echo "hit enter to continue" + read a + fi + exit $rc + fi +} + # set sysctl values in NS-A set_sysctl() { @@ -471,6 +493,36 @@ sleep 1 } +setup_lla_only() +{ + # make sure we are starting with a clean slate + kill_procs + cleanup 2>/dev/null + + log_debug "Configuring network namespaces" + set -e + + create_ns ${NSA} "-" "-" + create_ns ${NSB} "-" "-" + create_ns ${NSC} "-" "-" + connect_ns ${NSA} ${NSA_DEV} "-" "-" \ + ${NSB} ${NSB_DEV} "-" "-" + connect_ns ${NSA} ${NSA_DEV2} "-" "-" \ + ${NSC} ${NSC_DEV} "-" "-" + + NSA_LINKIP6=$(get_linklocal ${NSA} ${NSA_DEV}) + NSB_LINKIP6=$(get_linklocal ${NSB} ${NSB_DEV}) + NSC_LINKIP6=$(get_linklocal ${NSC} ${NSC_DEV}) + + create_vrf ${NSA} ${VRF} ${VRF_TABLE} "-" "-" + ip -netns ${NSA} link set dev ${NSA_DEV} vrf ${VRF} + ip -netns ${NSA} link set dev ${NSA_DEV2} vrf ${VRF} + + set +e + + sleep 1 +} + ################################################################################ # IPv4 @@ -3787,10 +3839,53 @@ setup_cmd_nsb ip li del vlan100 2>/dev/null } +# VRF only. +# ns-A device is connected to both ns-B and ns-C on a single VRF but only has +# LLA on the interfaces +use_case_ping_lla_multi() +{ + setup_lla_only + # only want reply from ns-A + setup_cmd_nsb sysctl -qw net.ipv6.icmp.echo_ignore_multicast=1 + setup_cmd_nsc sysctl -qw net.ipv6.icmp.echo_ignore_multicast=1 + + log_start + run_cmd_nsb ping -c1 -w1 ${MCAST}%${NSB_DEV} + log_test_addr ${MCAST}%${NSB_DEV} $? 0 "Pre cycle, ping out ns-B" + + run_cmd_nsc ping -c1 -w1 ${MCAST}%${NSC_DEV} + log_test_addr ${MCAST}%${NSC_DEV} $? 0 "Pre cycle, ping out ns-C" + + # cycle/flap the first ns-A interface + setup_cmd ip link set ${NSA_DEV} down + setup_cmd ip link set ${NSA_DEV} up + sleep 1 + + log_start + run_cmd_nsb ping -c1 -w1 ${MCAST}%${NSB_DEV} + log_test_addr ${MCAST}%${NSB_DEV} $? 0 "Post cycle ${NSA} ${NSA_DEV}, ping out ns-B" + run_cmd_nsc ping -c1 -w1 ${MCAST}%${NSC_DEV} + log_test_addr ${MCAST}%${NSC_DEV} $? 0 "Post cycle ${NSA} ${NSA_DEV}, ping out ns-C" + + # cycle/flap the second ns-A interface + setup_cmd ip link set ${NSA_DEV2} down + setup_cmd ip link set ${NSA_DEV2} up + sleep 1 + + log_start + run_cmd_nsb ping -c1 -w1 ${MCAST}%${NSB_DEV} + log_test_addr ${MCAST}%${NSB_DEV} $? 0 "Post cycle ${NSA} ${NSA_DEV2}, ping out ns-B" + run_cmd_nsc ping -c1 -w1 ${MCAST}%${NSC_DEV} + log_test_addr ${MCAST}%${NSC_DEV} $? 0 "Post cycle ${NSA} ${NSA_DEV2}, ping out ns-C" +} + use_cases() { log_section "Use cases" + log_subsection "Device enslaved to bridge" use_case_br + log_subsection "Ping LLA with multiple interfaces" + use_case_ping_lla_multi } ################################################################################ --- linux-5.8.0.orig/tools/testing/selftests/net/fib_nexthops.sh +++ linux-5.8.0/tools/testing/selftests/net/fib_nexthops.sh @@ -825,7 +825,7 @@ pid3=$! ip netns exec me ping -f 2001:db8:101::2 >/dev/null 2>&1 & pid4=$! - ip netns exec me mausezahn veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 & + ip netns exec me mausezahn -6 veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn" >/dev/null 2>&1 & pid5=$! sleep 300 --- linux-5.8.0.orig/tools/testing/selftests/net/fib_rule_tests.sh +++ linux-5.8.0/tools/testing/selftests/net/fib_rule_tests.sh @@ -59,6 +59,8 @@ $IP address add $DEV_ADDR/24 dev dummy0 $IP -6 address add $DEV_ADDR6/64 dev dummy0 + ip netns exec testns sysctl -w net.ipv4.ip_forward=1 + set +e } --- linux-5.8.0.orig/tools/testing/selftests/net/fib_tests.sh +++ linux-5.8.0/tools/testing/selftests/net/fib_tests.sh @@ -449,6 +449,7 @@ $IP link add dummy1 type dummy $IP link set dummy1 address 52:54:00:6a:c7:5e $IP link set dev dummy1 up + $IP address add 192.0.2.1/24 dev dummy1 $NS_EXEC sysctl -qw net.ipv4.conf.all.rp_filter=1 $NS_EXEC sysctl -qw net.ipv4.conf.all.accept_local=1 $NS_EXEC sysctl -qw net.ipv4.conf.all.route_localnet=1 @@ -1055,7 +1056,6 @@ check_route6 "2001:db8:104::1 dev dummy2 proto kernel metric 260" log_test $? 0 "Set metric with peer route on local side" - log_test $? 0 "User specified metric on local address" check_route6 "2001:db8:104::2 dev dummy2 proto kernel metric 260" log_test $? 0 "Set metric with peer route on peer side" --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d_vlan.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d_vlan.sh @@ -86,11 +86,20 @@ test_gretap_stp() { + # Sometimes after mirror installation, the neighbor's state is not valid. + # The reason is that there is no SW datapath activity related to the + # neighbor for the remote GRE address. Therefore whether the corresponding + # neighbor will be valid is a matter of luck, and the test is thus racy. + # Set the neighbor's state to permanent, so it would be always valid. + ip neigh replace 192.0.2.130 lladdr $(mac_get $h3) \ + nud permanent dev br2 full_test_span_gre_stp gt4 $swp3.555 "mirror to gretap" } test_ip6gretap_stp() { + ip neigh replace 2001:db8:2::2 lladdr $(mac_get $h3) \ + nud permanent dev br2 full_test_span_gre_stp gt6 $swp3.555 "mirror to ip6gretap" } --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/router_mpath_nh.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/router_mpath_nh.sh @@ -197,7 +197,7 @@ t0_rp12=$(link_stats_tx_packets_get $rp12) t0_rp13=$(link_stats_tx_packets_get $rp13) - ip vrf exec vrf-h1 $MZ -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ + ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ -d 1msec -t udp "sp=1024,dp=0-32768" t1_rp12=$(link_stats_tx_packets_get $rp12) --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/router_multipath.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/router_multipath.sh @@ -178,7 +178,7 @@ t0_rp12=$(link_stats_tx_packets_get $rp12) t0_rp13=$(link_stats_tx_packets_get $rp13) - ip vrf exec vrf-h1 $MZ -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ + ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ -d 1msec -t udp "sp=1024,dp=0-32768" t1_rp12=$(link_stats_tx_packets_get $rp12) --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/tc_flower.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/tc_flower.sh @@ -3,7 +3,7 @@ ALL_TESTS="match_dst_mac_test match_src_mac_test match_dst_ip_test \ match_src_ip_test match_ip_flags_test match_pcp_test match_vlan_test \ - match_ip_tos_test match_indev_test" + match_ip_tos_test match_indev_test match_ip_ttl_test" NUM_NETIFS=2 source tc_common.sh source lib.sh @@ -310,6 +310,42 @@ log_test "ip_tos match ($tcflags)" } +match_ip_ttl_test() +{ + RET=0 + + tc filter add dev $h2 ingress protocol ip pref 1 handle 101 flower \ + $tcflags dst_ip 192.0.2.2 ip_ttl 63 action drop + tc filter add dev $h2 ingress protocol ip pref 2 handle 102 flower \ + $tcflags dst_ip 192.0.2.2 action drop + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip "ttl=63" -q + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip "ttl=63,mf,frag=256" -q + + tc_check_packets "dev $h2 ingress" 102 1 + check_fail $? "Matched on the wrong filter (no check on ttl)" + + tc_check_packets "dev $h2 ingress" 101 2 + check_err $? "Did not match on correct filter (ttl=63)" + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip "ttl=255" -q + + tc_check_packets "dev $h2 ingress" 101 3 + check_fail $? "Matched on a wrong filter (ttl=63)" + + tc_check_packets "dev $h2 ingress" 102 1 + check_err $? "Did not match on correct filter (no check on ttl)" + + tc filter del dev $h2 ingress protocol ip pref 2 handle 102 flower + tc filter del dev $h2 ingress protocol ip pref 1 handle 101 flower + + log_test "ip_ttl match ($tcflags)" +} + match_indev_test() { RET=0 --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/vxlan_asymmetric.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/vxlan_asymmetric.sh @@ -215,10 +215,16 @@ bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 + + sysctl_set net.ipv4.conf.all.rp_filter 0 + sysctl_set net.ipv4.conf.vlan10-v.rp_filter 0 + sysctl_set net.ipv4.conf.vlan20-v.rp_filter 0 } switch_destroy() { + sysctl_restore net.ipv4.conf.all.rp_filter + bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 20 bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 10 @@ -359,6 +365,10 @@ bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 + + sysctl_set net.ipv4.conf.all.rp_filter 0 + sysctl_set net.ipv4.conf.vlan10-v.rp_filter 0 + sysctl_set net.ipv4.conf.vlan20-v.rp_filter 0 } export -f ns_switch_create --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/vxlan_bridge_1d.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/vxlan_bridge_1d.sh @@ -658,7 +658,7 @@ # In accordance with INET_ECN_decapsulate() __test_ecn_decap 00 00 0x00 __test_ecn_decap 01 01 0x01 - __test_ecn_decap 02 01 0x02 + __test_ecn_decap 02 01 0x01 __test_ecn_decap 01 03 0x03 __test_ecn_decap 02 03 0x03 test_ecn_decap_error --- linux-5.8.0.orig/tools/testing/selftests/net/forwarding/vxlan_symmetric.sh +++ linux-5.8.0/tools/testing/selftests/net/forwarding/vxlan_symmetric.sh @@ -237,10 +237,16 @@ bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 + + sysctl_set net.ipv4.conf.all.rp_filter 0 + sysctl_set net.ipv4.conf.vlan10-v.rp_filter 0 + sysctl_set net.ipv4.conf.vlan20-v.rp_filter 0 } switch_destroy() { + sysctl_restore net.ipv4.conf.all.rp_filter + bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 20 bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 10 @@ -402,6 +408,10 @@ bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10 bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20 + + sysctl_set net.ipv4.conf.all.rp_filter 0 + sysctl_set net.ipv4.conf.vlan10-v.rp_filter 0 + sysctl_set net.ipv4.conf.vlan20-v.rp_filter 0 } export -f ns_switch_create --- linux-5.8.0.orig/tools/testing/selftests/net/icmp_redirect.sh +++ linux-5.8.0/tools/testing/selftests/net/icmp_redirect.sh @@ -180,6 +180,8 @@ ;; r[12]) ip netns exec $ns sysctl -q -w net.ipv4.ip_forward=1 ip netns exec $ns sysctl -q -w net.ipv4.conf.all.send_redirects=1 + ip netns exec $ns sysctl -q -w net.ipv4.conf.default.rp_filter=0 + ip netns exec $ns sysctl -q -w net.ipv4.conf.all.rp_filter=0 ip netns exec $ns sysctl -q -w net.ipv6.conf.all.forwarding=1 ip netns exec $ns sysctl -q -w net.ipv6.route.mtu_expires=10 --- linux-5.8.0.orig/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ linux-5.8.0/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -421,9 +421,9 @@ duration=$(printf "(duration %05sms)" $duration) if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then echo "$duration [ FAIL ] client exit code $retc, server $rets" 1>&2 - echo "\nnetns ${listener_ns} socket stat for $port:" 1>&2 + echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2 ip netns exec ${listener_ns} ss -nita 1>&2 -o "sport = :$port" - echo "\nnetns ${connector_ns} socket stat for $port:" 1>&2 + echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2 ip netns exec ${connector_ns} ss -nita 1>&2 -o "dport = :$port" cat "$capout" --- linux-5.8.0.orig/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ linux-5.8.0/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -167,9 +167,9 @@ if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then echo " client exit code $retc, server $rets" 1>&2 - echo "\nnetns ${listener_ns} socket stat for $port:" 1>&2 + echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2 ip netns exec ${listener_ns} ss -nita 1>&2 -o "sport = :$port" - echo "\nnetns ${connector_ns} socket stat for $port:" 1>&2 + echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2 ip netns exec ${connector_ns} ss -nita 1>&2 -o "dport = :$port" cat "$capout" --- linux-5.8.0.orig/tools/testing/selftests/net/msg_zerocopy.c +++ linux-5.8.0/tools/testing/selftests/net/msg_zerocopy.c @@ -125,9 +125,8 @@ CPU_ZERO(&mask); CPU_SET(cpu, &mask); if (sched_setaffinity(0, sizeof(mask), &mask)) - error(1, 0, "setaffinity %d", cpu); - - if (cfg_verbose) + fprintf(stderr, "cpu: unable to pin, may increase variance.\n"); + else if (cfg_verbose) fprintf(stderr, "cpu: %u\n", cpu); return 0; --- linux-5.8.0.orig/tools/testing/selftests/net/pmtu.sh +++ linux-5.8.0/tools/testing/selftests/net/pmtu.sh @@ -123,7 +123,15 @@ # - list_flush_ipv6_exception # Using the same topology as in pmtu_ipv6, create exceptions, and check # they are shown when listing exception caches, gone after flushing them - +# +# - pmtu_ipv4_route_change +# Use the same topology as in pmtu_ipv4, but issue a route replacement +# command and delete the corresponding device afterward. This tests for +# proper cleanup of the PMTU exceptions by the route replacement path. +# Device unregistration should complete successfully +# +# - pmtu_ipv6_route_change +# Same as above but with IPv6 # Kselftest framework requirement - SKIP code is 4. ksft_skip=4 @@ -169,7 +177,9 @@ cleanup_ipv4_exception ipv4: cleanup of cached exceptions 1 cleanup_ipv6_exception ipv6: cleanup of cached exceptions 1 list_flush_ipv4_exception ipv4: list and flush cached exceptions 1 - list_flush_ipv6_exception ipv6: list and flush cached exceptions 1" + list_flush_ipv6_exception ipv6: list and flush cached exceptions 1 + pmtu_ipv4_route_change ipv4: PMTU exception w/route replace 1 + pmtu_ipv6_route_change ipv6: PMTU exception w/route replace 1" NS_A="ns-A" NS_B="ns-B" @@ -1438,6 +1448,63 @@ return ${fail} } +test_pmtu_ipvX_route_change() { + family=${1} + + setup namespaces routing || return 2 + trace "${ns_a}" veth_A-R1 "${ns_r1}" veth_R1-A \ + "${ns_r1}" veth_R1-B "${ns_b}" veth_B-R1 \ + "${ns_a}" veth_A-R2 "${ns_r2}" veth_R2-A \ + "${ns_r2}" veth_R2-B "${ns_b}" veth_B-R2 + + if [ ${family} -eq 4 ]; then + ping=ping + dst1="${prefix4}.${b_r1}.1" + dst2="${prefix4}.${b_r2}.1" + gw="${prefix4}.${a_r1}.2" + else + ping=${ping6} + dst1="${prefix6}:${b_r1}::1" + dst2="${prefix6}:${b_r2}::1" + gw="${prefix6}:${a_r1}::2" + fi + + # Set up initial MTU values + mtu "${ns_a}" veth_A-R1 2000 + mtu "${ns_r1}" veth_R1-A 2000 + mtu "${ns_r1}" veth_R1-B 1400 + mtu "${ns_b}" veth_B-R1 1400 + + mtu "${ns_a}" veth_A-R2 2000 + mtu "${ns_r2}" veth_R2-A 2000 + mtu "${ns_r2}" veth_R2-B 1500 + mtu "${ns_b}" veth_B-R2 1500 + + # Create route exceptions + run_cmd ${ns_a} ${ping} -q -M want -i 0.1 -w 1 -s 1800 ${dst1} + run_cmd ${ns_a} ${ping} -q -M want -i 0.1 -w 1 -s 1800 ${dst2} + + # Check that exceptions have been created with the correct PMTU + pmtu_1="$(route_get_dst_pmtu_from_exception "${ns_a}" ${dst1})" + check_pmtu_value "1400" "${pmtu_1}" "exceeding MTU" || return 1 + pmtu_2="$(route_get_dst_pmtu_from_exception "${ns_a}" ${dst2})" + check_pmtu_value "1500" "${pmtu_2}" "exceeding MTU" || return 1 + + # Replace the route from A to R1 + run_cmd ${ns_a} ip route change default via ${gw} + + # Delete the device in A + run_cmd ${ns_a} ip link del "veth_A-R1" +} + +test_pmtu_ipv4_route_change() { + test_pmtu_ipvX_route_change 4 +} + +test_pmtu_ipv6_route_change() { + test_pmtu_ipvX_route_change 6 +} + usage() { echo echo "$0 [OPTIONS] [TEST]..." --- linux-5.8.0.orig/tools/testing/selftests/net/psock_snd.sh +++ linux-5.8.0/tools/testing/selftests/net/psock_snd.sh @@ -45,7 +45,7 @@ echo "raw csum_off" ./in_netns.sh ./psock_snd -v -c -echo "raw csum_off with bad offset (fails)" +echo "raw csum_off with bad offset (expected to fail)" (! ./in_netns.sh ./psock_snd -v -c -C) @@ -57,7 +57,7 @@ echo "raw mtu size" ./in_netns.sh ./psock_snd -l "${mss}" -echo "raw mtu size + 1 (fails)" +echo "raw mtu size + 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -l "${mss_exceeds}") # fails due to ARPHRD_ETHER check in packet_extra_vlan_len_allowed @@ -65,19 +65,19 @@ # echo "raw vlan mtu size" # ./in_netns.sh ./psock_snd -V -l "${mss}" -echo "raw vlan mtu size + 1 (fails)" +echo "raw vlan mtu size + 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -V -l "${mss_exceeds}") echo "dgram mtu size" ./in_netns.sh ./psock_snd -d -l "${mss}" -echo "dgram mtu size + 1 (fails)" +echo "dgram mtu size + 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -d -l "${mss_exceeds}") -echo "raw truncate hlen (fails: does not arrive)" +echo "raw truncate hlen (expected to fail: does not arrive)" (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen}))") -echo "raw truncate hlen - 1 (fails: EINVAL)" +echo "raw truncate hlen - 1 (expected to fail: EINVAL)" (! ./in_netns.sh ./psock_snd -t "$((${vnet_hlen} + ${eth_hlen} - 1))") @@ -86,13 +86,13 @@ echo "raw gso min size" ./in_netns.sh ./psock_snd -v -c -g -l "${mss_exceeds}" -echo "raw gso min size - 1 (fails)" +echo "raw gso min size - 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -v -c -g -l "${mss}") echo "raw gso max size" ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss}" -echo "raw gso max size + 1 (fails)" +echo "raw gso max size + 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}") echo "OK. All tests passed" --- linux-5.8.0.orig/tools/testing/selftests/net/reuseaddr_ports_exhausted.c +++ linux-5.8.0/tools/testing/selftests/net/reuseaddr_ports_exhausted.c @@ -30,25 +30,25 @@ }; struct reuse_opts unreusable_opts[12] = { - {0, 0, 0, 0}, - {0, 0, 0, 1}, - {0, 0, 1, 0}, - {0, 0, 1, 1}, - {0, 1, 0, 0}, - {0, 1, 0, 1}, - {0, 1, 1, 0}, - {0, 1, 1, 1}, - {1, 0, 0, 0}, - {1, 0, 0, 1}, - {1, 0, 1, 0}, - {1, 0, 1, 1}, + {{0, 0}, {0, 0}}, + {{0, 0}, {0, 1}}, + {{0, 0}, {1, 0}}, + {{0, 0}, {1, 1}}, + {{0, 1}, {0, 0}}, + {{0, 1}, {0, 1}}, + {{0, 1}, {1, 0}}, + {{0, 1}, {1, 1}}, + {{1, 0}, {0, 0}}, + {{1, 0}, {0, 1}}, + {{1, 0}, {1, 0}}, + {{1, 0}, {1, 1}}, }; struct reuse_opts reusable_opts[4] = { - {1, 1, 0, 0}, - {1, 1, 0, 1}, - {1, 1, 1, 0}, - {1, 1, 1, 1}, + {{1, 1}, {0, 0}}, + {{1, 1}, {0, 1}}, + {{1, 1}, {1, 0}}, + {{1, 1}, {1, 1}}, }; int bind_port(struct __test_metadata *_metadata, int reuseaddr, int reuseport) --- linux-5.8.0.orig/tools/testing/selftests/net/rtnetlink.sh +++ linux-5.8.0/tools/testing/selftests/net/rtnetlink.sh @@ -5,7 +5,6 @@ # set -e devdummy="test-dummy0" -ret=0 # Kselftest framework requirement - SKIP code is 4. ksft_skip=4 @@ -66,7 +65,7 @@ devbr="test-br0" vlandev="testbr-vlan1" - ret=0 + local ret=0 ip link add name "$devbr" type bridge check_err $? @@ -113,7 +112,7 @@ rem=10.42.42.1 loc=10.0.0.1 - ret=0 + local ret=0 ip tunnel add $gredev mode gre remote $rem local $loc ttl 1 check_err $? ip link set $gredev up @@ -149,7 +148,7 @@ kci_test_tc() { dev=lo - ret=0 + local ret=0 tc qdisc add dev "$dev" root handle 1: htb check_err $? @@ -184,7 +183,7 @@ kci_test_polrouting() { - ret=0 + local ret=0 ip rule add fwmark 1 lookup 100 check_err $? ip route add local 0.0.0.0/0 dev lo table 100 @@ -207,7 +206,7 @@ { local hash_policy=$(sysctl -n net.ipv4.fib_multipath_hash_policy) - ret=0 + local ret=0 ip route get 127.0.0.1 > /dev/null check_err $? @@ -290,7 +289,7 @@ kci_test_addrlabel() { - ret=0 + local ret=0 ip addrlabel add prefix dead::/64 dev lo label 1 check_err $? @@ -330,7 +329,7 @@ kci_test_ifalias() { - ret=0 + local ret=0 namewant=$(uuidgen) syspathname="/sys/class/net/$devdummy/ifalias" @@ -385,7 +384,7 @@ kci_test_vrf() { vrfname="test-vrf" - ret=0 + local ret=0 ip link show type vrf 2>/dev/null if [ $? -ne 0 ]; then @@ -425,7 +424,7 @@ kci_test_encap_vxlan() { - ret=0 + local ret=0 vxlan="test-vxlan0" vlan="test-vlan0" testns="$1" @@ -511,7 +510,7 @@ kci_test_encap_fou() { - ret=0 + local ret=0 name="test-fou" testns="$1" @@ -521,6 +520,11 @@ return $ksft_skip fi + if ! /sbin/modprobe -q -n fou; then + echo "SKIP: module fou is not found" + return $ksft_skip + fi + /sbin/modprobe -q fou ip -netns "$testns" fou add port 7777 ipproto 47 2>/dev/null if [ $? -ne 0 ];then echo "FAIL: can't add fou port 7777, skipping test" @@ -548,7 +552,7 @@ kci_test_encap() { testns="testns" - ret=0 + local ret=0 ip netns add "$testns" if [ $? -ne 0 ]; then @@ -565,15 +569,18 @@ check_err $? kci_test_encap_vxlan "$testns" + check_err $? kci_test_encap_fou "$testns" + check_err $? ip netns del "$testns" + return $ret } kci_test_macsec() { msname="test_macsec0" - ret=0 + local ret=0 ip macsec help 2>&1 | grep -q "^Usage: ip macsec" if [ $? -ne 0 ]; then @@ -631,7 +638,7 @@ #------------------------------------------------------------------- kci_test_ipsec() { - ret=0 + local ret=0 algo="aead rfc4106(gcm(aes)) 0x3132333435363738393031323334353664636261 128" srcip=192.168.123.1 dstip=192.168.123.2 @@ -731,7 +738,7 @@ #------------------------------------------------------------------- kci_test_ipsec_offload() { - ret=0 + local ret=0 algo="aead rfc4106(gcm(aes)) 0x3132333435363738393031323334353664636261 128" srcip=192.168.123.3 dstip=192.168.123.4 @@ -841,7 +848,7 @@ { testns="testns" DEV_NS=gretap00 - ret=0 + local ret=0 ip netns add "$testns" if [ $? -ne 0 ]; then @@ -891,7 +898,7 @@ { testns="testns" DEV_NS=ip6gretap00 - ret=0 + local ret=0 ip netns add "$testns" if [ $? -ne 0 ]; then @@ -941,7 +948,7 @@ { testns="testns" DEV_NS=erspan00 - ret=0 + local ret=0 ip link help erspan 2>&1 | grep -q "^Usage:" if [ $? -ne 0 ];then @@ -1006,7 +1013,7 @@ { testns="testns" DEV_NS=ip6erspan00 - ret=0 + local ret=0 ip link help ip6erspan 2>&1 | grep -q "^Usage:" if [ $? -ne 0 ];then @@ -1077,7 +1084,7 @@ test_mac=de:ad:be:ef:13:37 localip="10.0.2.2" dstip="10.0.2.3" - ret=0 + local ret=0 bridge fdb help 2>&1 |grep -q 'bridge fdb get' if [ $? -ne 0 ];then @@ -1125,7 +1132,7 @@ dstmac=de:ad:be:ef:13:37 dstip=10.0.2.4 dstip6=dead::2 - ret=0 + local ret=0 ip neigh help 2>&1 |grep -q 'ip neigh get' if [ $? -ne 0 ];then @@ -1175,6 +1182,7 @@ kci_test_rtnl() { + local ret=0 kci_add_dummy if [ $ret -ne 0 ];then echo "FAIL: cannot add dummy interface" @@ -1182,27 +1190,48 @@ fi kci_test_polrouting + check_err $? kci_test_route_get + check_err $? kci_test_addrlft + check_err $? kci_test_promote_secondaries + check_err $? kci_test_tc + check_err $? kci_test_gre + check_err $? kci_test_gretap + check_err $? kci_test_ip6gretap + check_err $? kci_test_erspan + check_err $? kci_test_ip6erspan + check_err $? kci_test_bridge + check_err $? kci_test_addrlabel + check_err $? kci_test_ifalias + check_err $? kci_test_vrf + check_err $? kci_test_encap + check_err $? kci_test_macsec + check_err $? kci_test_ipsec + check_err $? kci_test_ipsec_offload + check_err $? kci_test_fdb_get + check_err $? kci_test_neigh_get + check_err $? kci_del_dummy + return $ret } #check for needed privileges @@ -1221,4 +1250,4 @@ kci_test_rtnl -exit $ret +exit $? --- linux-5.8.0.orig/tools/testing/selftests/net/settings +++ linux-5.8.0/tools/testing/selftests/net/settings @@ -0,0 +1 @@ +timeout=0 --- linux-5.8.0.orig/tools/testing/selftests/net/socket.c +++ linux-5.8.0/tools/testing/selftests/net/socket.c @@ -6,6 +6,7 @@ #include #include #include +#include struct socket_testcase { int domain; @@ -24,7 +25,10 @@ }; static struct socket_testcase tests[] = { - { AF_MAX, 0, 0, -EAFNOSUPPORT, 0 }, + /* libc might have a smaller value of AF_MAX than the kernel + * actually supports, so use INT_MAX instead. + */ + { INT_MAX, 0, 0, -EAFNOSUPPORT, 0 }, { AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 1 }, { AF_INET, SOCK_DGRAM, IPPROTO_TCP, -EPROTONOSUPPORT, 1 }, { AF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, 1 }, --- linux-5.8.0.orig/tools/testing/selftests/net/test_bpf.sh +++ linux-5.8.0/tools/testing/selftests/net/test_bpf.sh @@ -2,7 +2,10 @@ # SPDX-License-Identifier: GPL-2.0 # Runs bpf test using test_bpf kernel module -if /sbin/modprobe -q test_bpf ; then +# Test whether test_bpf module exists +if ! /sbin/modprobe -q -n test_bpf; then + echo "SKIP: test_bpf module not found" +elif /sbin/modprobe -q test_bpf ; then /sbin/modprobe -q -r test_bpf; echo "test_bpf: ok"; else --- linux-5.8.0.orig/tools/testing/selftests/net/test_vxlan_under_vrf.sh +++ linux-5.8.0/tools/testing/selftests/net/test_vxlan_under_vrf.sh @@ -50,7 +50,7 @@ ip link del veth-tap 2>/dev/null || true for ns in hv-1 hv-2 vm-1 vm-2; do - ip netns del $ns || true + ip netns del $ns 2>/dev/null || true done } @@ -125,5 +125,8 @@ ip -netns hv-2 link set veth0 up echo -n "Check VM connectivity through VXLAN (underlay in a VRF) " -ip netns exec vm-1 ping -c 1 -W 1 10.0.0.2 &> /dev/null || (echo "[FAIL]"; false) -echo "[ OK ]" +if ! ip netns exec vm-1 ping -c 1 -W 1 10.0.0.2 &> /dev/null; then + echo "[XFAIL]" +else + echo "[ OK ]" +fi --- linux-5.8.0.orig/tools/testing/selftests/net/txtimestamp.c +++ linux-5.8.0/tools/testing/selftests/net/txtimestamp.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -34,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -493,12 +493,12 @@ total_len = cfg_payload_len; if (cfg_use_pf_packet || cfg_proto == SOCK_RAW) { total_len += sizeof(struct udphdr); - if (cfg_use_pf_packet || cfg_ipproto == IPPROTO_RAW) + if (cfg_use_pf_packet || cfg_ipproto == IPPROTO_RAW) { if (family == PF_INET) total_len += sizeof(struct iphdr); else total_len += sizeof(struct ipv6hdr); - + } /* special case, only rawv6_sendmsg: * pass proto in sin6_port if not connected * also see ANK comment in net/ipv4/raw.c --- linux-5.8.0.orig/tools/testing/selftests/net/udpgro.sh +++ linux-5.8.0/tools/testing/selftests/net/udpgro.sh @@ -5,6 +5,14 @@ readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)" +# set global exit status, but never reset nonzero one. +check_err() +{ + if [ $ret -eq 0 ]; then + ret=$1 + fi +} + cleanup() { local -r jobs="$(jobs -p)" local -r ns="$(ip netns list|grep $PEER_NS)" @@ -44,7 +52,9 @@ # Hack: let bg programs complete the startup sleep 0.1 ./udpgso_bench_tx ${tx_args} + ret=$? wait $(jobs -p) + return $ret } run_test() { @@ -87,8 +97,10 @@ sleep 0.1 ./udpgso_bench_tx ${tx_args} + ret=$? kill -INT $pid wait $(jobs -p) + return $ret } run_one_2sock() { @@ -110,7 +122,9 @@ sleep 0.1 # first UDP GSO socket should be closed at this point ./udpgso_bench_tx ${tx_args} + ret=$? wait $(jobs -p) + return $ret } run_nat_test() { @@ -131,36 +145,54 @@ local -r core_args="-l 4" local -r ipv4_args="${core_args} -4 -D 192.168.1.1" local -r ipv6_args="${core_args} -6 -D 2001:db8::1" + ret=0 echo "ipv4" run_test "no GRO" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400" + check_err $? # explicitly check we are not receiving UDP_SEGMENT cmsg (-S -1) # when GRO does not take place run_test "no GRO chk cmsg" "${ipv4_args} -M 10 -s 1400" "-4 -n 10 -l 1400 -S -1" + check_err $? # the GSO packets are aggregated because: # * veth schedule napi after each xmit # * segmentation happens in BH context, veth napi poll is delayed after # the transmission of the last segment run_test "GRO" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720" + check_err $? run_test "GRO chk cmsg" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472" + check_err $? run_test "GRO with custom segment size" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720" + check_err $? run_test "GRO with custom segment size cmsg" "${ipv4_args} -M 1 -s 14720 -S 500 " "-4 -n 1 -l 14720 -S 500" + check_err $? run_nat_test "bad GRO lookup" "${ipv4_args} -M 1 -s 14720 -S 0" "-n 10 -l 1472" + check_err $? run_2sock_test "multiple GRO socks" "${ipv4_args} -M 1 -s 14720 -S 0 " "-4 -n 1 -l 14720 -S 1472" + check_err $? echo "ipv6" run_test "no GRO" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400" + check_err $? run_test "no GRO chk cmsg" "${ipv6_args} -M 10 -s 1400" "-n 10 -l 1400 -S -1" + check_err $? run_test "GRO" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520" + check_err $? run_test "GRO chk cmsg" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 1 -l 14520 -S 1452" + check_err $? run_test "GRO with custom segment size" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520" + check_err $? run_test "GRO with custom segment size cmsg" "${ipv6_args} -M 1 -s 14520 -S 500" "-n 1 -l 14520 -S 500" + check_err $? run_nat_test "bad GRO lookup" "${ipv6_args} -M 1 -s 14520 -S 0" "-n 10 -l 1452" + check_err $? run_2sock_test "multiple GRO socks" "${ipv6_args} -M 1 -s 14520 -S 0 " "-n 1 -l 14520 -S 1452" + check_err $? + return $ret } if [ ! -f ../bpf/xdp_dummy.o ]; then @@ -180,3 +212,5 @@ shift run_one_2sock $@ fi + +exit $? --- linux-5.8.0.orig/tools/testing/selftests/net/udpgso_bench_rx.c +++ linux-5.8.0/tools/testing/selftests/net/udpgso_bench_rx.c @@ -113,6 +113,9 @@ interrupted = true; break; } + + /* no events and more time to wait, do poll again */ + continue; } if (pfd.revents != POLLIN) error(1, errno, "poll: 0x%x expected 0x%x\n", --- linux-5.8.0.orig/tools/testing/selftests/net/xfrm_policy.sh +++ linux-5.8.0/tools/testing/selftests/net/xfrm_policy.sh @@ -202,7 +202,7 @@ # 1: iptables -m policy rule count != 0 rval=$1 ip=$2 - lret=0 + local lret=0 ip netns exec ns1 ping -q -c 1 10.0.2.$ip > /dev/null @@ -287,6 +287,47 @@ return 0 } +# insert non-overlapping policies in a random order and check that +# all of them can be fetched using the traffic selectors. +check_random_order() +{ + local ns=$1 + local log=$2 + + for i in $(seq 100); do + ip -net $ns xfrm policy flush + for j in $(seq 0 16 255 | sort -R); do + ip -net $ns xfrm policy add dst $j.0.0.0/24 dir out priority 10 action allow + done + for j in $(seq 0 16 255); do + if ! ip -net $ns xfrm policy get dst $j.0.0.0/24 dir out > /dev/null; then + echo "FAIL: $log" 1>&2 + return 1 + fi + done + done + + for i in $(seq 100); do + ip -net $ns xfrm policy flush + for j in $(seq 0 16 255 | sort -R); do + local addr=$(printf "e000:0000:%02x00::/56" $j) + ip -net $ns xfrm policy add dst $addr dir out priority 10 action allow + done + for j in $(seq 0 16 255); do + local addr=$(printf "e000:0000:%02x00::/56" $j) + if ! ip -net $ns xfrm policy get dst $addr dir out > /dev/null; then + echo "FAIL: $log" 1>&2 + return 1 + fi + done + done + + ip -net $ns xfrm policy flush + + echo "PASS: $log" + return 0 +} + #check for needed privileges if [ "$(id -u)" -ne 0 ];then echo "SKIP: Need root privileges" @@ -438,6 +479,8 @@ check_hthresh_repeat "policies with repeated htresh change" +check_random_order ns3 "policies inserted in random order" + for i in 1 2 3 4;do ip netns del ns$i;done exit $ret --- linux-5.8.0.orig/tools/testing/selftests/netfilter/nft_conntrack_helper.sh +++ linux-5.8.0/tools/testing/selftests/netfilter/nft_conntrack_helper.sh @@ -94,7 +94,13 @@ local message=$2 local port=$3 - ip netns exec ${netns} conntrack -L -p tcp --dport $port 2> /dev/null |grep -q 'helper=ftp' + if echo $message |grep -q 'ipv6';then + local family="ipv6" + else + local family="ipv4" + fi + + ip netns exec ${netns} conntrack -L -f $family -p tcp --dport $port 2> /dev/null |grep -q 'helper=ftp' if [ $? -ne 0 ] ; then echo "FAIL: ${netns} did not show attached helper $message" 1>&2 ret=1 @@ -111,8 +117,8 @@ sleep 3 | ip netns exec ${ns2} nc -w 2 -l -p $port > /dev/null & - sleep 1 sleep 1 | ip netns exec ${ns1} nc -w 2 10.0.1.2 $port > /dev/null & + sleep 1 check_for_helper "$ns1" "ip $msg" $port check_for_helper "$ns2" "ip $msg" $port @@ -128,8 +134,8 @@ sleep 3 | ip netns exec ${ns2} nc -w 2 -6 -l -p $port > /dev/null & - sleep 1 sleep 1 | ip netns exec ${ns1} nc -w 2 -6 dead:1::2 $port > /dev/null & + sleep 1 check_for_helper "$ns1" "ipv6 $msg" $port check_for_helper "$ns2" "ipv6 $msg" $port --- linux-5.8.0.orig/tools/testing/selftests/pidfd/pidfd_open_test.c +++ linux-5.8.0/tools/testing/selftests/pidfd/pidfd_open_test.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/pidfd/pidfd_poll_test.c +++ linux-5.8.0/tools/testing/selftests/pidfd/pidfd_poll_test.c @@ -3,7 +3,6 @@ #define _GNU_SOURCE #include #include -#include #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/powerpc/alignment/alignment_handler.c +++ linux-5.8.0/tools/testing/selftests/powerpc/alignment/alignment_handler.c @@ -226,8 +226,12 @@ } rc = 0; - /* offset = 0 no alignment fault, so skip */ - for (offset = 1; offset < 16; offset++) { + /* + * offset = 0 is aligned but tests the workaround for the P9N + * DD2.1 vector CI load issue (see 5080332c2c89 "powerpc/64s: + * Add workaround for P9 vector CI load issue") + */ + for (offset = 0; offset < 16; offset++) { width = 16; /* vsx == 16 bytes */ r = 0; @@ -380,7 +384,6 @@ LOAD_DFORM_TEST(ldu); LOAD_XFORM_TEST(ldx); LOAD_XFORM_TEST(ldux); - LOAD_DFORM_TEST(lmw); STORE_DFORM_TEST(stb); STORE_XFORM_TEST(stbx); STORE_DFORM_TEST(stbu); @@ -399,7 +402,11 @@ STORE_XFORM_TEST(stdx); STORE_DFORM_TEST(stdu); STORE_XFORM_TEST(stdux); + +#ifdef __BIG_ENDIAN__ + LOAD_DFORM_TEST(lmw); STORE_DFORM_TEST(stmw); +#endif return rc; } --- linux-5.8.0.orig/tools/testing/selftests/powerpc/benchmarks/context_switch.c +++ linux-5.8.0/tools/testing/selftests/powerpc/benchmarks/context_switch.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -104,8 +105,9 @@ static void start_process_on(void *(*fn)(void *), void *arg, unsigned long cpu) { - int pid; - cpu_set_t cpuset; + int pid, ncpus; + cpu_set_t *cpuset; + size_t size; pid = fork(); if (pid == -1) { @@ -116,14 +118,23 @@ if (pid) return; - CPU_ZERO(&cpuset); - CPU_SET(cpu, &cpuset); + ncpus = get_nprocs(); + size = CPU_ALLOC_SIZE(ncpus); + cpuset = CPU_ALLOC(ncpus); + if (!cpuset) { + perror("malloc"); + exit(1); + } + CPU_ZERO_S(size, cpuset); + CPU_SET_S(cpu, size, cpuset); - if (sched_setaffinity(0, sizeof(cpuset), &cpuset)) { + if (sched_setaffinity(0, size, cpuset)) { perror("sched_setaffinity"); + CPU_FREE(cpuset); exit(1); } + CPU_FREE(cpuset); fn(arg); exit(0); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/copyloops/Makefile +++ linux-5.8.0/tools/testing/selftests/powerpc/copyloops/Makefile @@ -12,7 +12,7 @@ TEST_GEN_PROGS := copyuser_64_t0 copyuser_64_t1 copyuser_64_t2 \ copyuser_p7_t0 copyuser_p7_t1 \ memcpy_64_t0 memcpy_64_t1 memcpy_64_t2 \ - memcpy_p7_t0 memcpy_p7_t1 memcpy_mcsafe_64 \ + memcpy_p7_t0 memcpy_p7_t1 copy_mc_64 \ copyuser_64_exc_t0 copyuser_64_exc_t1 copyuser_64_exc_t2 EXTRA_SOURCES := validate.c ../harness.c stubs.S @@ -45,9 +45,9 @@ -D SELFTEST_CASE=$(subst memcpy_p7_t,,$(notdir $@)) \ -o $@ $^ -$(OUTPUT)/memcpy_mcsafe_64: memcpy_mcsafe_64.S $(EXTRA_SOURCES) +$(OUTPUT)/copy_mc_64: copy_mc_64.S $(EXTRA_SOURCES) $(CC) $(CPPFLAGS) $(CFLAGS) \ - -D COPY_LOOP=test_memcpy_mcsafe \ + -D COPY_LOOP=test_copy_mc_generic \ -o $@ $^ $(OUTPUT)/copyuser_64_exc_t%: copyuser_64.S exc_validate.c ../harness.c \ --- linux-5.8.0.orig/tools/testing/selftests/powerpc/copyloops/copy_mc_64.S +++ linux-5.8.0/tools/testing/selftests/powerpc/copyloops/copy_mc_64.S @@ -0,0 +1,242 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) IBM Corporation, 2011 + * Derived from copyuser_power7.s by Anton Blanchard + * Author - Balbir Singh + */ +#include +#include +#include + + .macro err1 +100: + EX_TABLE(100b,.Ldo_err1) + .endm + + .macro err2 +200: + EX_TABLE(200b,.Ldo_err2) + .endm + + .macro err3 +300: EX_TABLE(300b,.Ldone) + .endm + +.Ldo_err2: + ld r22,STK_REG(R22)(r1) + ld r21,STK_REG(R21)(r1) + ld r20,STK_REG(R20)(r1) + ld r19,STK_REG(R19)(r1) + ld r18,STK_REG(R18)(r1) + ld r17,STK_REG(R17)(r1) + ld r16,STK_REG(R16)(r1) + ld r15,STK_REG(R15)(r1) + ld r14,STK_REG(R14)(r1) + addi r1,r1,STACKFRAMESIZE +.Ldo_err1: + /* Do a byte by byte copy to get the exact remaining size */ + mtctr r7 +46: +err3; lbz r0,0(r4) + addi r4,r4,1 +err3; stb r0,0(r3) + addi r3,r3,1 + bdnz 46b + li r3,0 + blr + +.Ldone: + mfctr r3 + blr + + +_GLOBAL(copy_mc_generic) + mr r7,r5 + cmpldi r5,16 + blt .Lshort_copy + +.Lcopy: + /* Get the source 8B aligned */ + neg r6,r4 + mtocrf 0x01,r6 + clrldi r6,r6,(64-3) + + bf cr7*4+3,1f +err1; lbz r0,0(r4) + addi r4,r4,1 +err1; stb r0,0(r3) + addi r3,r3,1 + subi r7,r7,1 + +1: bf cr7*4+2,2f +err1; lhz r0,0(r4) + addi r4,r4,2 +err1; sth r0,0(r3) + addi r3,r3,2 + subi r7,r7,2 + +2: bf cr7*4+1,3f +err1; lwz r0,0(r4) + addi r4,r4,4 +err1; stw r0,0(r3) + addi r3,r3,4 + subi r7,r7,4 + +3: sub r5,r5,r6 + cmpldi r5,128 + + mflr r0 + stdu r1,-STACKFRAMESIZE(r1) + std r14,STK_REG(R14)(r1) + std r15,STK_REG(R15)(r1) + std r16,STK_REG(R16)(r1) + std r17,STK_REG(R17)(r1) + std r18,STK_REG(R18)(r1) + std r19,STK_REG(R19)(r1) + std r20,STK_REG(R20)(r1) + std r21,STK_REG(R21)(r1) + std r22,STK_REG(R22)(r1) + std r0,STACKFRAMESIZE+16(r1) + + blt 5f + srdi r6,r5,7 + mtctr r6 + + /* Now do cacheline (128B) sized loads and stores. */ + .align 5 +4: +err2; ld r0,0(r4) +err2; ld r6,8(r4) +err2; ld r8,16(r4) +err2; ld r9,24(r4) +err2; ld r10,32(r4) +err2; ld r11,40(r4) +err2; ld r12,48(r4) +err2; ld r14,56(r4) +err2; ld r15,64(r4) +err2; ld r16,72(r4) +err2; ld r17,80(r4) +err2; ld r18,88(r4) +err2; ld r19,96(r4) +err2; ld r20,104(r4) +err2; ld r21,112(r4) +err2; ld r22,120(r4) + addi r4,r4,128 +err2; std r0,0(r3) +err2; std r6,8(r3) +err2; std r8,16(r3) +err2; std r9,24(r3) +err2; std r10,32(r3) +err2; std r11,40(r3) +err2; std r12,48(r3) +err2; std r14,56(r3) +err2; std r15,64(r3) +err2; std r16,72(r3) +err2; std r17,80(r3) +err2; std r18,88(r3) +err2; std r19,96(r3) +err2; std r20,104(r3) +err2; std r21,112(r3) +err2; std r22,120(r3) + addi r3,r3,128 + subi r7,r7,128 + bdnz 4b + + clrldi r5,r5,(64-7) + + /* Up to 127B to go */ +5: srdi r6,r5,4 + mtocrf 0x01,r6 + +6: bf cr7*4+1,7f +err2; ld r0,0(r4) +err2; ld r6,8(r4) +err2; ld r8,16(r4) +err2; ld r9,24(r4) +err2; ld r10,32(r4) +err2; ld r11,40(r4) +err2; ld r12,48(r4) +err2; ld r14,56(r4) + addi r4,r4,64 +err2; std r0,0(r3) +err2; std r6,8(r3) +err2; std r8,16(r3) +err2; std r9,24(r3) +err2; std r10,32(r3) +err2; std r11,40(r3) +err2; std r12,48(r3) +err2; std r14,56(r3) + addi r3,r3,64 + subi r7,r7,64 + +7: ld r14,STK_REG(R14)(r1) + ld r15,STK_REG(R15)(r1) + ld r16,STK_REG(R16)(r1) + ld r17,STK_REG(R17)(r1) + ld r18,STK_REG(R18)(r1) + ld r19,STK_REG(R19)(r1) + ld r20,STK_REG(R20)(r1) + ld r21,STK_REG(R21)(r1) + ld r22,STK_REG(R22)(r1) + addi r1,r1,STACKFRAMESIZE + + /* Up to 63B to go */ + bf cr7*4+2,8f +err1; ld r0,0(r4) +err1; ld r6,8(r4) +err1; ld r8,16(r4) +err1; ld r9,24(r4) + addi r4,r4,32 +err1; std r0,0(r3) +err1; std r6,8(r3) +err1; std r8,16(r3) +err1; std r9,24(r3) + addi r3,r3,32 + subi r7,r7,32 + + /* Up to 31B to go */ +8: bf cr7*4+3,9f +err1; ld r0,0(r4) +err1; ld r6,8(r4) + addi r4,r4,16 +err1; std r0,0(r3) +err1; std r6,8(r3) + addi r3,r3,16 + subi r7,r7,16 + +9: clrldi r5,r5,(64-4) + + /* Up to 15B to go */ +.Lshort_copy: + mtocrf 0x01,r5 + bf cr7*4+0,12f +err1; lwz r0,0(r4) /* Less chance of a reject with word ops */ +err1; lwz r6,4(r4) + addi r4,r4,8 +err1; stw r0,0(r3) +err1; stw r6,4(r3) + addi r3,r3,8 + subi r7,r7,8 + +12: bf cr7*4+1,13f +err1; lwz r0,0(r4) + addi r4,r4,4 +err1; stw r0,0(r3) + addi r3,r3,4 + subi r7,r7,4 + +13: bf cr7*4+2,14f +err1; lhz r0,0(r4) + addi r4,r4,2 +err1; sth r0,0(r3) + addi r3,r3,2 + subi r7,r7,2 + +14: bf cr7*4+3,15f +err1; lbz r0,0(r4) +err1; stb r0,0(r3) + +15: li r3,0 + blr + +EXPORT_SYMBOL_GPL(copy_mc_generic); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/eeh/Makefile +++ linux-5.8.0/tools/testing/selftests/powerpc/eeh/Makefile @@ -3,7 +3,7 @@ $(MAKE) -C ../ TEST_PROGS := eeh-basic.sh -TEST_FILES := eeh-functions.sh +TEST_FILES := eeh-functions.sh settings top_srcdir = ../../../../.. include ../../lib.mk --- linux-5.8.0.orig/tools/testing/selftests/powerpc/eeh/eeh-basic.sh +++ linux-5.8.0/tools/testing/selftests/powerpc/eeh/eeh-basic.sh @@ -1,17 +1,19 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0-only +KSELFTESTS_SKIP=4 + . ./eeh-functions.sh if ! eeh_supported ; then echo "EEH not supported on this system, skipping" - exit 0; + exit $KSELFTESTS_SKIP; fi if [ ! -e "/sys/kernel/debug/powerpc/eeh_dev_check" ] && \ [ ! -e "/sys/kernel/debug/powerpc/eeh_dev_break" ] ; then echo "debugfs EEH testing files are missing. Is debugfs mounted?" - exit 1; + exit $KSELFTESTS_SKIP; fi pre_lspci=`mktemp` @@ -84,4 +86,5 @@ lspci | diff -u $pre_lspci - rm -f $pre_lspci -exit $failed +test "$failed" -eq 0 +exit $? --- linux-5.8.0.orig/tools/testing/selftests/powerpc/eeh/eeh-functions.sh +++ linux-5.8.0/tools/testing/selftests/powerpc/eeh/eeh-functions.sh @@ -5,12 +5,17 @@ local dev="$1" local path="/sys/bus/pci/devices/$dev/eeh_pe_state" - if ! [ -e "$path" ] ; then + # if a driver doesn't support the error handling callbacks then the + # device is recovered by removing and re-probing it. This causes the + # sysfs directory to disappear so read the PE state once and squash + # any potential error messages + local eeh_state="$(cat $path 2>/dev/null)" + if [ -z "$eeh_state" ]; then return 1; fi - local fw_state="$(cut -d' ' -f1 < $path)" - local sw_state="$(cut -d' ' -f2 < $path)" + local fw_state="$(echo $eeh_state | cut -d' ' -f1)" + local sw_state="$(echo $eeh_state | cut -d' ' -f2)" # If EEH_PE_ISOLATED or EEH_PE_RECOVERING are set then the PE is in an # error state or being recovered. Either way, not ok. --- linux-5.8.0.orig/tools/testing/selftests/powerpc/eeh/settings +++ linux-5.8.0/tools/testing/selftests/powerpc/eeh/settings @@ -0,0 +1 @@ +timeout=300 --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/back_to_back_ebbs_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/back_to_back_ebbs_test.c @@ -91,8 +91,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); event_close(&event); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/cycles_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/cycles_test.c @@ -42,8 +42,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); event_close(&event); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/cycles_with_freeze_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/cycles_with_freeze_test.c @@ -99,8 +99,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); printf("EBBs while frozen %d\n", ebbs_while_frozen); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/cycles_with_mmcr2_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/cycles_with_mmcr2_test.c @@ -71,8 +71,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); event_close(&event); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/ebb.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/ebb.c @@ -396,8 +396,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); event_close(&event); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/ebb_on_willing_child_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/ebb_on_willing_child_test.c @@ -38,8 +38,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); FAIL_IF(ebb_state.stats.ebb_count == 0); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/lost_exception_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/lost_exception_test.c @@ -75,7 +75,6 @@ ebb_freeze_pmcs(); ebb_global_disable(); - count_pmc(4, sample_period); mtspr(SPRN_PMC4, 0xdead); dump_summary_ebb_state(); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/multi_counter_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/multi_counter_test.c @@ -70,13 +70,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - count_pmc(2, sample_period); - count_pmc(3, sample_period); - count_pmc(4, sample_period); - count_pmc(5, sample_period); - count_pmc(6, sample_period); - dump_ebb_state(); for (i = 0; i < 6; i++) --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/multi_ebb_procs_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/multi_ebb_procs_test.c @@ -61,8 +61,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_summary_ebb_state(); event_close(&event); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/pmae_handling_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/pmae_handling_test.c @@ -82,8 +82,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(1, sample_period); - dump_ebb_state(); if (mmcr0_mismatch) --- linux-5.8.0.orig/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c +++ linux-5.8.0/tools/testing/selftests/powerpc/pmu/ebb/pmc56_overflow_test.c @@ -76,8 +76,6 @@ ebb_global_disable(); ebb_freeze_pmcs(); - count_pmc(2, sample_period); - dump_ebb_state(); printf("PMC5/6 overflow %d\n", pmc56_overflowed); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/ptrace/Makefile +++ linux-5.8.0/tools/testing/selftests/powerpc/ptrace/Makefile @@ -7,7 +7,7 @@ top_srcdir = ../../../../.. include ../../lib.mk -CFLAGS += -m64 -I../../../../../usr/include -I../tm -mhtm -fno-pie +CFLAGS += -m64 -I../../../../../usr/include -I../tm -mhtm -fno-pie -Wno-error=deprecated $(OUTPUT)/ptrace-pkey $(OUTPUT)/core-pkey: child.h $(OUTPUT)/ptrace-pkey $(OUTPUT)/core-pkey: LDLIBS += -pthread --- linux-5.8.0.orig/tools/testing/selftests/powerpc/ptrace/ptrace-pkey.c +++ linux-5.8.0/tools/testing/selftests/powerpc/ptrace/ptrace-pkey.c @@ -44,7 +44,7 @@ unsigned long amr2; /* AMR value that ptrace should refuse to write to the child. */ - unsigned long amr3; + unsigned long invalid_amr; /* IAMR value the parent expects to read from the child. */ unsigned long expected_iamr; @@ -57,8 +57,8 @@ * (even though they're valid ones) because userspace doesn't have * access to those registers. */ - unsigned long new_iamr; - unsigned long new_uamor; + unsigned long invalid_iamr; + unsigned long invalid_uamor; }; static int sys_pkey_alloc(unsigned long flags, unsigned long init_access_rights) @@ -66,11 +66,6 @@ return syscall(__NR_pkey_alloc, flags, init_access_rights); } -static int sys_pkey_free(int pkey) -{ - return syscall(__NR_pkey_free, pkey); -} - static int child(struct shared_info *info) { unsigned long reg; @@ -100,28 +95,32 @@ info->amr1 |= 3ul << pkeyshift(pkey1); info->amr2 |= 3ul << pkeyshift(pkey2); - info->amr3 |= info->amr2 | 3ul << pkeyshift(pkey3); + /* + * invalid amr value where we try to force write + * things which are deined by a uamor setting. + */ + info->invalid_amr = info->amr2 | (~0x0UL & ~info->expected_uamor); + /* + * if PKEY_DISABLE_EXECUTE succeeded we should update the expected_iamr + */ if (disable_execute) info->expected_iamr |= 1ul << pkeyshift(pkey1); else info->expected_iamr &= ~(1ul << pkeyshift(pkey1)); - info->expected_iamr &= ~(1ul << pkeyshift(pkey2) | 1ul << pkeyshift(pkey3)); - - info->expected_uamor |= 3ul << pkeyshift(pkey1) | - 3ul << pkeyshift(pkey2); - info->new_iamr |= 1ul << pkeyshift(pkey1) | 1ul << pkeyshift(pkey2); - info->new_uamor |= 3ul << pkeyshift(pkey1); + /* + * We allocated pkey2 and pkey 3 above. Clear the IAMR bits. + */ + info->expected_iamr &= ~(1ul << pkeyshift(pkey2)); + info->expected_iamr &= ~(1ul << pkeyshift(pkey3)); /* - * We won't use pkey3. We just want a plausible but invalid key to test - * whether ptrace will let us write to AMR bits we are not supposed to. - * - * This also tests whether the kernel restores the UAMOR permissions - * after a key is freed. + * Create an IAMR value different from expected value. + * Kernel will reject an IAMR and UAMOR change. */ - sys_pkey_free(pkey3); + info->invalid_iamr = info->expected_iamr | (1ul << pkeyshift(pkey1) | 1ul << pkeyshift(pkey2)); + info->invalid_uamor = info->expected_uamor & ~(0x3ul << pkeyshift(pkey1)); printf("%-30s AMR: %016lx pkey1: %d pkey2: %d pkey3: %d\n", user_write, info->amr1, pkey1, pkey2, pkey3); @@ -196,9 +195,9 @@ PARENT_SKIP_IF_UNSUPPORTED(ret, &info->child_sync); PARENT_FAIL_IF(ret, &info->child_sync); - info->amr1 = info->amr2 = info->amr3 = regs[0]; - info->expected_iamr = info->new_iamr = regs[1]; - info->expected_uamor = info->new_uamor = regs[2]; + info->amr1 = info->amr2 = regs[0]; + info->expected_iamr = regs[1]; + info->expected_uamor = regs[2]; /* Wake up child so that it can set itself up. */ ret = prod_child(&info->child_sync); @@ -234,10 +233,10 @@ return ret; /* Write invalid AMR value in child. */ - ret = ptrace_write_regs(pid, NT_PPC_PKEY, &info->amr3, 1); + ret = ptrace_write_regs(pid, NT_PPC_PKEY, &info->invalid_amr, 1); PARENT_FAIL_IF(ret, &info->child_sync); - printf("%-30s AMR: %016lx\n", ptrace_write_running, info->amr3); + printf("%-30s AMR: %016lx\n", ptrace_write_running, info->invalid_amr); /* Wake up child so that it can verify it didn't change. */ ret = prod_child(&info->child_sync); @@ -249,7 +248,7 @@ /* Try to write to IAMR. */ regs[0] = info->amr1; - regs[1] = info->new_iamr; + regs[1] = info->invalid_iamr; ret = ptrace_write_regs(pid, NT_PPC_PKEY, regs, 2); PARENT_FAIL_IF(!ret, &info->child_sync); @@ -257,7 +256,7 @@ ptrace_write_running, regs[0], regs[1]); /* Try to write to IAMR and UAMOR. */ - regs[2] = info->new_uamor; + regs[2] = info->invalid_uamor; ret = ptrace_write_regs(pid, NT_PPC_PKEY, regs, 3); PARENT_FAIL_IF(!ret, &info->child_sync); --- linux-5.8.0.orig/tools/testing/selftests/powerpc/security/Makefile +++ linux-5.8.0/tools/testing/selftests/powerpc/security/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0+ -TEST_GEN_PROGS := rfi_flush spectre_v2 +TEST_GEN_PROGS := rfi_flush entry_flush spectre_v2 top_srcdir = ../../../../.. CFLAGS += -I../../../../../usr/include --- linux-5.8.0.orig/tools/testing/selftests/powerpc/security/entry_flush.c +++ linux-5.8.0/tools/testing/selftests/powerpc/security/entry_flush.c @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0+ + +/* + * Copyright 2018 IBM Corporation. + */ + +#define __SANE_USERSPACE_TYPES__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "utils.h" + +#define CACHELINE_SIZE 128 + +struct perf_event_read { + __u64 nr; + __u64 l1d_misses; +}; + +static inline __u64 load(void *addr) +{ + __u64 tmp; + + asm volatile("ld %0,0(%1)" : "=r"(tmp) : "b"(addr)); + + return tmp; +} + +static void syscall_loop(char *p, unsigned long iterations, + unsigned long zero_size) +{ + for (unsigned long i = 0; i < iterations; i++) { + for (unsigned long j = 0; j < zero_size; j += CACHELINE_SIZE) + load(p + j); + getppid(); + } +} + +int entry_flush_test(void) +{ + char *p; + int repetitions = 10; + int fd, passes = 0, iter, rc = 0; + struct perf_event_read v; + __u64 l1d_misses_total = 0; + unsigned long iterations = 100000, zero_size = 24 * 1024; + unsigned long l1d_misses_expected; + int rfi_flush_orig; + int entry_flush, entry_flush_orig; + + SKIP_IF(geteuid() != 0); + + // The PMU event we use only works on Power7 or later + SKIP_IF(!have_hwcap(PPC_FEATURE_ARCH_2_06)); + + if (read_debugfs_file("powerpc/rfi_flush", &rfi_flush_orig) < 0) { + perror("Unable to read powerpc/rfi_flush debugfs file"); + SKIP_IF(1); + } + + if (read_debugfs_file("powerpc/entry_flush", &entry_flush_orig) < 0) { + perror("Unable to read powerpc/entry_flush debugfs file"); + SKIP_IF(1); + } + + if (rfi_flush_orig != 0) { + if (write_debugfs_file("powerpc/rfi_flush", 0) < 0) { + perror("error writing to powerpc/rfi_flush debugfs file"); + FAIL_IF(1); + } + } + + entry_flush = entry_flush_orig; + + fd = perf_event_open_counter(PERF_TYPE_RAW, /* L1d miss */ 0x400f0, -1); + FAIL_IF(fd < 0); + + p = (char *)memalign(zero_size, CACHELINE_SIZE); + + FAIL_IF(perf_event_enable(fd)); + + // disable L1 prefetching + set_dscr(1); + + iter = repetitions; + + /* + * We expect to see l1d miss for each cacheline access when entry_flush + * is set. Allow a small variation on this. + */ + l1d_misses_expected = iterations * (zero_size / CACHELINE_SIZE - 2); + +again: + FAIL_IF(perf_event_reset(fd)); + + syscall_loop(p, iterations, zero_size); + + FAIL_IF(read(fd, &v, sizeof(v)) != sizeof(v)); + + if (entry_flush && v.l1d_misses >= l1d_misses_expected) + passes++; + else if (!entry_flush && v.l1d_misses < (l1d_misses_expected / 2)) + passes++; + + l1d_misses_total += v.l1d_misses; + + while (--iter) + goto again; + + if (passes < repetitions) { + printf("FAIL (L1D misses with entry_flush=%d: %llu %c %lu) [%d/%d failures]\n", + entry_flush, l1d_misses_total, entry_flush ? '<' : '>', + entry_flush ? repetitions * l1d_misses_expected : + repetitions * l1d_misses_expected / 2, + repetitions - passes, repetitions); + rc = 1; + } else { + printf("PASS (L1D misses with entry_flush=%d: %llu %c %lu) [%d/%d pass]\n", + entry_flush, l1d_misses_total, entry_flush ? '>' : '<', + entry_flush ? repetitions * l1d_misses_expected : + repetitions * l1d_misses_expected / 2, + passes, repetitions); + } + + if (entry_flush == entry_flush_orig) { + entry_flush = !entry_flush_orig; + if (write_debugfs_file("powerpc/entry_flush", entry_flush) < 0) { + perror("error writing to powerpc/entry_flush debugfs file"); + return 1; + } + iter = repetitions; + l1d_misses_total = 0; + passes = 0; + goto again; + } + + perf_event_disable(fd); + close(fd); + + set_dscr(0); + + if (write_debugfs_file("powerpc/rfi_flush", rfi_flush_orig) < 0) { + perror("unable to restore original value of powerpc/rfi_flush debugfs file"); + return 1; + } + + if (write_debugfs_file("powerpc/entry_flush", entry_flush_orig) < 0) { + perror("unable to restore original value of powerpc/entry_flush debugfs file"); + return 1; + } + + return rc; +} + +int main(int argc, char *argv[]) +{ + return test_harness(entry_flush_test, "entry_flush_test"); +} --- linux-5.8.0.orig/tools/testing/selftests/powerpc/security/rfi_flush.c +++ linux-5.8.0/tools/testing/selftests/powerpc/security/rfi_flush.c @@ -50,16 +50,30 @@ __u64 l1d_misses_total = 0; unsigned long iterations = 100000, zero_size = 24 * 1024; unsigned long l1d_misses_expected; - int rfi_flush_org, rfi_flush; + int rfi_flush_orig, rfi_flush; + int have_entry_flush, entry_flush_orig; SKIP_IF(geteuid() != 0); - if (read_debugfs_file("powerpc/rfi_flush", &rfi_flush_org)) { + if (read_debugfs_file("powerpc/rfi_flush", &rfi_flush_orig) < 0) { perror("Unable to read powerpc/rfi_flush debugfs file"); SKIP_IF(1); } - rfi_flush = rfi_flush_org; + if (read_debugfs_file("powerpc/entry_flush", &entry_flush_orig) < 0) { + have_entry_flush = 0; + } else { + have_entry_flush = 1; + + if (entry_flush_orig != 0) { + if (write_debugfs_file("powerpc/entry_flush", 0) < 0) { + perror("error writing to powerpc/entry_flush debugfs file"); + return 1; + } + } + } + + rfi_flush = rfi_flush_orig; fd = perf_event_open_counter(PERF_TYPE_RAW, /* L1d miss */ 0x400f0, -1); FAIL_IF(fd < 0); @@ -68,6 +82,7 @@ FAIL_IF(perf_event_enable(fd)); + // disable L1 prefetching set_dscr(1); iter = repetitions; @@ -109,8 +124,8 @@ repetitions * l1d_misses_expected / 2, passes, repetitions); - if (rfi_flush == rfi_flush_org) { - rfi_flush = !rfi_flush_org; + if (rfi_flush == rfi_flush_orig) { + rfi_flush = !rfi_flush_orig; if (write_debugfs_file("powerpc/rfi_flush", rfi_flush) < 0) { perror("error writing to powerpc/rfi_flush debugfs file"); return 1; @@ -126,11 +141,19 @@ set_dscr(0); - if (write_debugfs_file("powerpc/rfi_flush", rfi_flush_org) < 0) { + if (write_debugfs_file("powerpc/rfi_flush", rfi_flush_orig) < 0) { perror("unable to restore original value of powerpc/rfi_flush debugfs file"); return 1; } + if (have_entry_flush) { + if (write_debugfs_file("powerpc/entry_flush", entry_flush_orig) < 0) { + perror("unable to restore original value of powerpc/entry_flush " + "debugfs file"); + return 1; + } + } + return rc; } --- linux-5.8.0.orig/tools/testing/selftests/powerpc/security/spectre_v2.c +++ linux-5.8.0/tools/testing/selftests/powerpc/security/spectre_v2.c @@ -183,6 +183,14 @@ if (miss_percent > 15) { printf("Branch misses > 15%% unexpected in this configuration!\n"); printf("Possible mis-match between reported & actual mitigation\n"); + /* Such a mismatch may be caused by a guest system + * reporting as vulnerable when the host is mitigated. + * Return skip code to avoid detecting this as an + * error. We are not vulnerable and reporting otherwise, + * so missing such a mismatch is safe. + */ + if (state == VULNERABLE) + return 4; return 1; } break; --- linux-5.8.0.orig/tools/testing/selftests/powerpc/utils.c +++ linux-5.8.0/tools/testing/selftests/powerpc/utils.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -88,28 +89,40 @@ int pick_online_cpu(void) { - cpu_set_t mask; - int cpu; + int ncpus, cpu = -1; + cpu_set_t *mask; + size_t size; + + ncpus = get_nprocs_conf(); + size = CPU_ALLOC_SIZE(ncpus); + mask = CPU_ALLOC(ncpus); + if (!mask) { + perror("malloc"); + return -1; + } - CPU_ZERO(&mask); + CPU_ZERO_S(size, mask); - if (sched_getaffinity(0, sizeof(mask), &mask)) { + if (sched_getaffinity(0, size, mask)) { perror("sched_getaffinity"); - return -1; + goto done; } /* We prefer a primary thread, but skip 0 */ - for (cpu = 8; cpu < CPU_SETSIZE; cpu += 8) - if (CPU_ISSET(cpu, &mask)) - return cpu; + for (cpu = 8; cpu < ncpus; cpu += 8) + if (CPU_ISSET_S(cpu, size, mask)) + goto done; /* Search for anything, but in reverse */ - for (cpu = CPU_SETSIZE - 1; cpu >= 0; cpu--) - if (CPU_ISSET(cpu, &mask)) - return cpu; + for (cpu = ncpus - 1; cpu >= 0; cpu--) + if (CPU_ISSET_S(cpu, size, mask)) + goto done; printf("No cpus in affinity mask?!\n"); - return -1; + +done: + CPU_FREE(mask); + return cpu; } bool is_ppc64le(void) --- linux-5.8.0.orig/tools/testing/selftests/proc/proc-loadavg-001.c +++ linux-5.8.0/tools/testing/selftests/proc/proc-loadavg-001.c @@ -14,7 +14,6 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* Test that /proc/loadavg correctly reports last pid in pid namespace. */ -#define _GNU_SOURCE #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/proc/proc-self-syscall.c +++ linux-5.8.0/tools/testing/selftests/proc/proc-self-syscall.c @@ -13,7 +13,6 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define _GNU_SOURCE #include #include #include --- linux-5.8.0.orig/tools/testing/selftests/proc/proc-uptime-002.c +++ linux-5.8.0/tools/testing/selftests/proc/proc-uptime-002.c @@ -15,7 +15,6 @@ */ // Test that values in /proc/uptime increment monotonically // while shifting across CPUs. -#define _GNU_SOURCE #undef NDEBUG #include #include --- linux-5.8.0.orig/tools/testing/selftests/seccomp/Makefile +++ linux-5.8.0/tools/testing/selftests/seccomp/Makefile @@ -2,5 +2,7 @@ CFLAGS += -Wl,-no-as-needed -Wall LDFLAGS += -lpthread +TEST_FILES := settings + TEST_GEN_PROGS := seccomp_bpf seccomp_benchmark include ../lib.mk --- linux-5.8.0.orig/tools/testing/selftests/seccomp/config +++ linux-5.8.0/tools/testing/selftests/seccomp/config @@ -1,2 +1,3 @@ +CONFIG_PID_NS=y CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y --- linux-5.8.0.orig/tools/testing/selftests/seccomp/seccomp_bpf.c +++ linux-5.8.0/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -180,7 +180,7 @@ #define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif) #define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, \ struct seccomp_notif_resp) -#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64) +#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOW(2, __u64) struct seccomp_notif { __u64 id; @@ -1738,6 +1738,14 @@ TH_LOG("Can't modify syscall return on this architecture"); #else regs.SYSCALL_RET = result; +# if defined(__powerpc__) + if (result < 0) { + regs.SYSCALL_RET = -result; + regs.ccr |= 0x10000000; + } else { + regs.ccr &= ~0x10000000; + } +# endif #endif #ifdef HAVE_GETREGS @@ -1796,6 +1804,7 @@ int ret, nr; unsigned long msg; static bool entry; + int *syscall_nr = args; /* * The traditional way to tell PTRACE_SYSCALL entry/exit @@ -1809,10 +1818,15 @@ EXPECT_EQ(entry ? PTRACE_EVENTMSG_SYSCALL_ENTRY : PTRACE_EVENTMSG_SYSCALL_EXIT, msg); - if (!entry) + if (!entry && !syscall_nr) return; - nr = get_syscall(_metadata, tracee); + if (entry) + nr = get_syscall(_metadata, tracee); + else + nr = *syscall_nr; + if (syscall_nr) + *syscall_nr = nr; if (nr == __NR_getpid) change_syscall(_metadata, tracee, __NR_getppid, 0); @@ -1889,9 +1903,10 @@ TEST_F(TRACE_syscall, ptrace_syscall_errno) { + int syscall_nr = -1; /* Swap SECCOMP_RET_TRACE tracer for PTRACE_SYSCALL tracer. */ teardown_trace_fixture(_metadata, self->tracer); - self->tracer = setup_trace_fixture(_metadata, tracer_ptrace, NULL, + self->tracer = setup_trace_fixture(_metadata, tracer_ptrace, &syscall_nr, true); /* Tracer should skip the open syscall, resulting in ESRCH. */ @@ -1900,9 +1915,10 @@ TEST_F(TRACE_syscall, ptrace_syscall_faked) { + int syscall_nr = -1; /* Swap SECCOMP_RET_TRACE tracer for PTRACE_SYSCALL tracer. */ teardown_trace_fixture(_metadata, self->tracer); - self->tracer = setup_trace_fixture(_metadata, tracer_ptrace, NULL, + self->tracer = setup_trace_fixture(_metadata, tracer_ptrace, &syscall_nr, true); /* Tracer should skip the gettid syscall, resulting fake pid. */ @@ -3258,6 +3274,11 @@ int ret; unsigned int flags; + ret = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0); + ASSERT_EQ(0, ret) { + TH_LOG("Kernel does not support PR_SET_NO_NEW_PRIVS!"); + } + /* these were exclusive */ flags = SECCOMP_FILTER_FLAG_NEW_LISTENER | SECCOMP_FILTER_FLAG_TSYNC; --- linux-5.8.0.orig/tools/testing/selftests/seccomp/settings +++ linux-5.8.0/tools/testing/selftests/seccomp/settings @@ -0,0 +1 @@ +timeout=90 --- linux-5.8.0.orig/tools/testing/selftests/tc-testing/tc-tests/filters/tests.json +++ linux-5.8.0/tools/testing/selftests/tc-testing/tc-tests/filters/tests.json @@ -100,7 +100,7 @@ ], "cmdUnderTest": "$TC filter add dev $DEV2 protocol ip pref 1 ingress flower dst_mac e4:11:22:11:4a:51 action drop", "expExitCode": "0", - "verifyCmd": "$TC filter show terse dev $DEV2 ingress", + "verifyCmd": "$TC -br filter show dev $DEV2 ingress", "matchPattern": "filter protocol ip pref 1 flower.*handle", "matchCount": "1", "teardown": [ @@ -119,7 +119,7 @@ ], "cmdUnderTest": "$TC filter add dev $DEV2 protocol ip pref 1 ingress flower dst_mac e4:11:22:11:4a:51 action drop", "expExitCode": "0", - "verifyCmd": "$TC filter show terse dev $DEV2 ingress", + "verifyCmd": "$TC -br filter show dev $DEV2 ingress", "matchPattern": " dst_mac e4:11:22:11:4a:51", "matchCount": "0", "teardown": [ --- linux-5.8.0.orig/tools/testing/selftests/timers/Makefile +++ linux-5.8.0/tools/testing/selftests/timers/Makefile @@ -13,6 +13,7 @@ TEST_GEN_PROGS_EXTENDED = $(DESTRUCTIVE_TESTS) +TEST_FILES := settings include ../lib.mk --- linux-5.8.0.orig/tools/testing/selftests/timers/settings +++ linux-5.8.0/tools/testing/selftests/timers/settings @@ -0,0 +1 @@ +timeout=0 --- linux-5.8.0.orig/tools/testing/selftests/vm/Makefile +++ linux-5.8.0/tools/testing/selftests/vm/Makefile @@ -78,7 +78,7 @@ ifeq ($(CAN_BUILD_I386),1) $(BINARIES_32): CFLAGS += -m32 $(BINARIES_32): LDLIBS += -lrt -ldl -lm -$(BINARIES_32): %_32: %.c +$(BINARIES_32): $(OUTPUT)/%_32: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@ $(foreach t,$(TARGETS),$(eval $(call gen-target-rule-32,$(t)))) endif @@ -86,7 +86,7 @@ ifeq ($(CAN_BUILD_X86_64),1) $(BINARIES_64): CFLAGS += -m64 $(BINARIES_64): LDLIBS += -lrt -ldl -$(BINARIES_64): %_64: %.c +$(BINARIES_64): $(OUTPUT)/%_64: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(notdir $^) $(LDLIBS) -o $@ $(foreach t,$(TARGETS),$(eval $(call gen-target-rule-64,$(t)))) endif --- linux-5.8.0.orig/tools/testing/selftests/vm/config +++ linux-5.8.0/tools/testing/selftests/vm/config @@ -3,3 +3,4 @@ CONFIG_TEST_VMALLOC=m CONFIG_DEVICE_PRIVATE=y CONFIG_TEST_HMM=m +CONFIG_GUP_BENCHMARK=y --- linux-5.8.0.orig/tools/testing/selftests/vm/map_hugetlb.c +++ linux-5.8.0/tools/testing/selftests/vm/map_hugetlb.c @@ -83,7 +83,7 @@ } if (shift) - printf("%u kB hugepages\n", 1 << shift); + printf("%u kB hugepages\n", 1 << (shift - 10)); else printf("Default size hugepages\n"); printf("Mapping %lu Mbytes\n", (unsigned long)length >> 20); --- linux-5.8.0.orig/tools/testing/selftests/wireguard/netns.sh +++ linux-5.8.0/tools/testing/selftests/wireguard/netns.sh @@ -39,7 +39,7 @@ ip1() { pretty 1 "ip $*"; ip -n $netns1 "$@"; } ip2() { pretty 2 "ip $*"; ip -n $netns2 "$@"; } sleep() { read -t "$1" -N 1 || true; } -waitiperf() { pretty "${1//*-}" "wait for iperf:5201 pid $2"; while [[ $(ss -N "$1" -tlpH 'sport = 5201') != *\"iperf3\",pid=$2,fd=* ]]; do sleep 0.1; done; } +waitiperf() { pretty "${1//*-}" "wait for iperf:${3:-5201} pid $2"; while [[ $(ss -N "$1" -tlpH "sport = ${3:-5201}") != *\"iperf3\",pid=$2,fd=* ]]; do sleep 0.1; done; } waitncatudp() { pretty "${1//*-}" "wait for udp:1111 pid $2"; while [[ $(ss -N "$1" -ulpH 'sport = 1111') != *\"ncat\",pid=$2,fd=* ]]; do sleep 0.1; done; } waitiface() { pretty "${1//*-}" "wait for $2 to come up"; ip netns exec "$1" bash -c "while [[ \$(< \"/sys/class/net/$2/operstate\") != up ]]; do read -t .1 -N 0 || true; done;"; } @@ -141,6 +141,19 @@ n2 iperf3 -s -1 -B fd00::2 & waitiperf $netns2 $! n1 iperf3 -Z -t 3 -b 0 -u -c fd00::2 + + # TCP over IPv4, in parallel + for max in 4 5 50; do + local pids=( ) + for ((i=0; i < max; ++i)) do + n2 iperf3 -p $(( 5200 + i )) -s -1 -B 192.168.241.2 & + pids+=( $! ); waitiperf $netns2 $! $(( 5200 + i )) + done + for ((i=0; i < max; ++i)) do + n1 iperf3 -Z -t 3 -p $(( 5200 + i )) -c 192.168.241.2 & + done + wait "${pids[@]}" + done } [[ $(ip1 link show dev wg0) =~ mtu\ ([0-9]+) ]] && orig_mtu="${BASH_REMATCH[1]}" @@ -316,6 +329,14 @@ n2 ping -W 1 -c 1 192.168.241.1 n1 wg set wg0 peer "$pub2" persistent-keepalive 0 +# Test that sk_bound_dev_if works +n1 ping -I wg0 -c 1 -W 1 192.168.241.2 +# What about when the mark changes and the packet must be rerouted? +n1 iptables -t mangle -I OUTPUT -j MARK --set-xmark 1 +n1 ping -c 1 -W 1 192.168.241.2 # First the boring case +n1 ping -I wg0 -c 1 -W 1 192.168.241.2 # Then the sk_bound_dev_if case +n1 iptables -t mangle -D OUTPUT -j MARK --set-xmark 1 + # Test that onion routing works, even when it loops n1 wg set wg0 peer "$pub3" allowed-ips 192.168.242.2/32 endpoint 192.168.241.2:5 ip1 addr add 192.168.242.1/24 dev wg0 --- linux-5.8.0.orig/tools/testing/selftests/wireguard/qemu/kernel.config +++ linux-5.8.0/tools/testing/selftests/wireguard/qemu/kernel.config @@ -18,10 +18,12 @@ CONFIG_NETFILTER_XTABLES=y CONFIG_NETFILTER_XT_NAT=y CONFIG_NETFILTER_XT_MATCH_LENGTH=y +CONFIG_NETFILTER_XT_MARK=y CONFIG_NF_CONNTRACK_IPV4=y CONFIG_NF_NAT_IPV4=y CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_MANGLE=y CONFIG_IP_NF_NAT=y CONFIG_IP_ADVANCED_ROUTER=y CONFIG_IP_MULTIPLE_TABLES=y --- linux-5.8.0.orig/tools/testing/selftests/x86/fsgsbase.c +++ linux-5.8.0/tools/testing/selftests/x86/fsgsbase.c @@ -442,6 +442,68 @@ #define USER_REGS_OFFSET(r) offsetof(struct user_regs_struct, r) +static void test_ptrace_write_gs_read_base(void) +{ + int status; + pid_t child = fork(); + + if (child < 0) + err(1, "fork"); + + if (child == 0) { + printf("[RUN]\tPTRACE_POKE GS, read GSBASE back\n"); + + printf("[RUN]\tARCH_SET_GS to 1\n"); + if (syscall(SYS_arch_prctl, ARCH_SET_GS, 1) != 0) + err(1, "ARCH_SET_GS"); + + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) != 0) + err(1, "PTRACE_TRACEME"); + + raise(SIGTRAP); + _exit(0); + } + + wait(&status); + + if (WSTOPSIG(status) == SIGTRAP) { + unsigned long base; + unsigned long gs_offset = USER_REGS_OFFSET(gs); + unsigned long base_offset = USER_REGS_OFFSET(gs_base); + + /* Read the initial base. It should be 1. */ + base = ptrace(PTRACE_PEEKUSER, child, base_offset, NULL); + if (base == 1) { + printf("[OK]\tGSBASE started at 1\n"); + } else { + nerrs++; + printf("[FAIL]\tGSBASE started at 0x%lx\n", base); + } + + printf("[RUN]\tSet GS = 0x7, read GSBASE\n"); + + /* Poke an LDT selector into GS. */ + if (ptrace(PTRACE_POKEUSER, child, gs_offset, 0x7) != 0) + err(1, "PTRACE_POKEUSER"); + + /* And read the base. */ + base = ptrace(PTRACE_PEEKUSER, child, base_offset, NULL); + + if (base == 0 || base == 1) { + printf("[OK]\tGSBASE reads as 0x%lx with invalid GS\n", base); + } else { + nerrs++; + printf("[FAIL]\tGSBASE=0x%lx (should be 0 or 1)\n", base); + } + } + + ptrace(PTRACE_CONT, child, NULL, NULL); + + wait(&status); + if (!WIFEXITED(status)) + printf("[WARN]\tChild didn't exit cleanly.\n"); +} + static void test_ptrace_write_gsbase(void) { int status; @@ -499,6 +561,9 @@ END: ptrace(PTRACE_CONT, child, NULL, NULL); + wait(&status); + if (!WIFEXITED(status)) + printf("[WARN]\tChild didn't exit cleanly.\n"); } int main() @@ -508,6 +573,9 @@ shared_scratch = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0); + /* Do these tests before we have an LDT. */ + test_ptrace_write_gs_read_base(); + /* Probe FSGSBASE */ sethandler(SIGILL, sigill, 0); if (sigsetjmp(jmpbuf, 1) == 0) { --- linux-5.8.0.orig/tools/testing/selftests/x86/test_vsyscall.c +++ linux-5.8.0/tools/testing/selftests/x86/test_vsyscall.c @@ -462,6 +462,17 @@ return 0; } +/* + * Debuggers expect ptrace() to be able to peek at the vsyscall page. + * Use process_vm_readv() as a proxy for ptrace() to test this. We + * want it to work in the vsyscall=emulate case and to fail in the + * vsyscall=xonly case. + * + * It's worth noting that this ABI is a bit nutty. write(2) can't + * read from the vsyscall page on any kernel version or mode. The + * fact that ptrace() ever worked was a nice courtesy of old kernels, + * but the code to support it is fairly gross. + */ static int test_process_vm_readv(void) { #ifdef __x86_64__ @@ -477,8 +488,12 @@ remote.iov_len = 4096; ret = process_vm_readv(getpid(), &local, 1, &remote, 1, 0); if (ret != 4096) { - printf("[OK]\tprocess_vm_readv() failed (ret = %d, errno = %d)\n", ret, errno); - return 0; + /* + * We expect process_vm_readv() to work if and only if the + * vsyscall page is readable. + */ + printf("[%s]\tprocess_vm_readv() failed (ret = %d, errno = %d)\n", vsyscall_map_r ? "FAIL" : "OK", ret, errno); + return vsyscall_map_r ? 1 : 0; } if (vsyscall_map_r) { @@ -488,6 +503,9 @@ printf("[FAIL]\tIt worked but returned incorrect data\n"); return 1; } + } else { + printf("[FAIL]\tprocess_rm_readv() succeeded, but it should have failed in this configuration\n"); + return 1; } #endif --- linux-5.8.0.orig/tools/usb/usbip/configure.ac +++ linux-5.8.0/tools/usb/usbip/configure.ac @@ -18,7 +18,7 @@ # Silent build for automake >= 1.11 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -AC_SUBST([EXTRA_CFLAGS], ["-Wall -Werror -Wextra -std=gnu99"]) +AC_SUBST([EXTRA_CFLAGS], ["-Wall -Werror -Wextra -Wno-address-of-packed-member -std=gnu99"]) # Checks for programs. AC_PROG_CC --- linux-5.8.0.orig/tools/usb/usbip/libsrc/usbip_host_common.c +++ linux-5.8.0/tools/usb/usbip/libsrc/usbip_host_common.c @@ -23,7 +23,7 @@ #include "list.h" #include "sysfs_utils.h" -struct udev *udev_context; +extern struct udev *udev_context; static int32_t read_attr_usbip_status(struct usbip_usb_device *udev) { --- linux-5.8.0.orig/ubuntu/Kconfig +++ linux-5.8.0/ubuntu/Kconfig @@ -0,0 +1,25 @@ +menu "Ubuntu Supplied Third-Party Device Drivers" + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +source "ubuntu/hio/Kconfig" +## +## +## +source "ubuntu/ubuntu-host/Kconfig" +## +## +## +## +## +## + +endmenu --- linux-5.8.0.orig/ubuntu/Makefile +++ linux-5.8.0/ubuntu/Makefile @@ -0,0 +1,37 @@ +# +# Makefile for the Linux kernel ubuntu supplied third-party device drivers. +# + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +## +## +## +obj-$(CONFIG_HIO) += hio/ +## +## +## +obj-$(CONFIG_UBUNTU_HOST) += ubuntu-host/ +## +## +## +ifeq ($(ARCH),x86) +obj-y += xr-usb-serial/ +endif +## +## +## +## +## +## + +# This is a stupid trick to get kbuild to create ubuntu/built-in.o +obj- += foo.o --- linux-5.8.0.orig/ubuntu/hio/Kconfig +++ linux-5.8.0/ubuntu/hio/Kconfig @@ -0,0 +1,4 @@ +config HIO + tristate "ES3000 V2 High-Performance PCIe SSD" + ---help--- + Driver for ES3000 V2 High-Performance PCIe SSD. --- linux-5.8.0.orig/ubuntu/hio/Makefile +++ linux-5.8.0/ubuntu/hio/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_HIO) += hio.o --- linux-5.8.0.orig/ubuntu/hio/hio.c +++ linux-5.8.0/ubuntu/hio/hio.c @@ -0,0 +1,13285 @@ +/* +* Huawei SSD device driver +* Copyright (c) 2016, Huawei Technologies Co., Ltd. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope 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_VERSION_CODE +#include +#endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)) +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* HDIO_GETGEO */ +#include +#include +#include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +#include +#endif +#include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) +#include +#include +#else +#include +#endif +#include +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,17)) +#include +#endif +#if (LINUX_VERSION_CODE > KERNEL_VERSION(5,6,0)) +#include +#endif + +/* driver */ +#define MODULE_NAME "hio" +#define DRIVER_VERSION "2.1.0.40" +#define DRIVER_VERSION_LEN 16 + +#define SSD_FW_MIN 0x1 + +#define SSD_DEV_NAME MODULE_NAME +#define SSD_DEV_NAME_LEN 16 +#define SSD_CDEV_NAME "c"SSD_DEV_NAME +#define SSD_SDEV_NAME "s"SSD_DEV_NAME + + +#define SSD_CMAJOR 0 +#define SSD_MAJOR 0 +#define SSD_MAJOR_SL 0 +#define SSD_MINORS 16 + +#define SSD_MAX_DEV 702 +#define SSD_ALPHABET_NUM 26 + +#define hio_info(f, arg...) printk(KERN_INFO MODULE_NAME"info: " f , ## arg) +#define hio_note(f, arg...) printk(KERN_NOTICE MODULE_NAME"note: " f , ## arg) +#define hio_warn(f, arg...) printk(KERN_WARNING MODULE_NAME"warn: " f , ## arg) +#define hio_err(f, arg...) printk(KERN_ERR MODULE_NAME"err: " f , ## arg) + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(5,6,0)) +struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, sector_t sector); +#endif + +/* slave port */ +#define SSD_SLAVE_PORT_DEVID 0x000a + +/* int mode */ + +/* 2.6.9 msi affinity bug, should turn msi & msi-x off */ +//#define SSD_MSI +#define SSD_ESCAPE_IRQ + +//#define SSD_MSIX +#ifndef MODULE +#define SSD_MSIX +#endif +#define SSD_MSIX_VEC 8 +#ifdef SSD_MSIX +#undef SSD_MSI +#undef SSD_ESCAPE_IRQ +#define SSD_MSIX_AFFINITY_FORCE +#endif + +#define SSD_TRIM + +/* Over temperature protect */ +#define SSD_OT_PROTECT + +#ifdef SSD_QUEUE_PBIO +#define BIO_SSD_PBIO 20 +#endif + +/* debug */ +//#define SSD_DEBUG_ERR + +/* cmd timer */ +#define SSD_CMD_TIMEOUT (60*HZ) + +/* i2c & smbus */ +#define SSD_SPI_TIMEOUT (5*HZ) +#define SSD_I2C_TIMEOUT (5*HZ) + +#define SSD_I2C_MAX_DATA (127) +#define SSD_SMBUS_BLOCK_MAX (32) +#define SSD_SMBUS_DATA_MAX (SSD_SMBUS_BLOCK_MAX + 2) + +/* wait for init */ +#define SSD_INIT_WAIT (1000) //1s +#define SSD_CONTROLLER_WAIT (20*1000/SSD_INIT_WAIT) //20s +#define SSD_INIT_MAX_WAIT (500*1000/SSD_INIT_WAIT) //500s +#define SSD_INIT_MAX_WAIT_V3_2 (1400*1000/SSD_INIT_WAIT) //1400s +#define SSD_RAM_INIT_MAX_WAIT (10*1000/SSD_INIT_WAIT) //10s +#define SSD_CH_INFO_MAX_WAIT (10*1000/SSD_INIT_WAIT) //10s + +/* blkdev busy wait */ +#define SSD_DEV_BUSY_WAIT 1000 //ms +#define SSD_DEV_BUSY_MAX_WAIT (8*1000/SSD_DEV_BUSY_WAIT) //8s + +/* smbus retry */ +#define SSD_SMBUS_RETRY_INTERVAL (5) //ms +#define SSD_SMBUS_RETRY_MAX (1000/SSD_SMBUS_RETRY_INTERVAL) + +#define SSD_BM_RETRY_MAX 7 + +/* bm routine interval */ +#define SSD_BM_CAP_LEARNING_DELAY (10*60*1000) + +/* routine interval */ +#define SSD_ROUTINE_INTERVAL (10*1000) //10s +#define SSD_HWMON_ROUTINE_TICK (60*1000/SSD_ROUTINE_INTERVAL) +#define SSD_CAPMON_ROUTINE_TICK ((3600*1000/SSD_ROUTINE_INTERVAL)*24*30) +#define SSD_CAPMON2_ROUTINE_TICK (10*60*1000/SSD_ROUTINE_INTERVAL) //fault recover + +/* dma align */ +#define SSD_DMA_ALIGN (16) + +/* some hw defalut */ +#define SSD_LOG_MAX_SZ 4096 + +#define SSD_NAND_OOB_SZ 1024 +#define SSD_NAND_ID_SZ 8 +#define SSD_NAND_ID_BUFF_SZ 1024 +#define SSD_NAND_MAX_CE 2 + +#define SSD_BBT_RESERVED 8 + +#define SSD_ECC_MAX_FLIP (64+1) + +#define SSD_RAM_ALIGN 16 + + +#define SSD_RELOAD_FLAG 0x3333CCCC +#define SSD_RELOAD_FW 0xAA5555AA +#define SSD_RESET_NOINIT 0xAA5555AA +#define SSD_RESET 0x55AAAA55 +#define SSD_RESET_FULL 0x5A +//#define SSD_RESET_WAIT 1000 //1s +//#define SSD_RESET_MAX_WAIT (200*1000/SSD_RESET_WAIT) //200s + + +/* reverion 1 */ +#define SSD_PROTOCOL_V1 0x0 + +#define SSD_ROM_SIZE (16*1024*1024) +#define SSD_ROM_BLK_SIZE (256*1024) +#define SSD_ROM_PAGE_SIZE (256) +#define SSD_ROM_NR_BRIDGE_FW 2 +#define SSD_ROM_NR_CTRL_FW 2 +#define SSD_ROM_BRIDGE_FW_BASE 0 +#define SSD_ROM_BRIDGE_FW_SIZE (2*1024*1024) +#define SSD_ROM_CTRL_FW_BASE (SSD_ROM_NR_BRIDGE_FW*SSD_ROM_BRIDGE_FW_SIZE) +#define SSD_ROM_CTRL_FW_SIZE (5*1024*1024) +#define SSD_ROM_LABEL_BASE (SSD_ROM_CTRL_FW_BASE+SSD_ROM_CTRL_FW_SIZE*SSD_ROM_NR_CTRL_FW) +#define SSD_ROM_VP_BASE (SSD_ROM_LABEL_BASE+SSD_ROM_BLK_SIZE) + +/* reverion 3 */ +#define SSD_PROTOCOL_V3 0x3000000 +#define SSD_PROTOCOL_V3_1_1 0x3010001 +#define SSD_PROTOCOL_V3_1_3 0x3010003 +#define SSD_PROTOCOL_V3_2 0x3020000 +#define SSD_PROTOCOL_V3_2_1 0x3020001 /* <4KB improved */ +#define SSD_PROTOCOL_V3_2_2 0x3020002 /* ot protect */ +#define SSD_PROTOCOL_V3_2_4 0x3020004 + + +#define SSD_PV3_ROM_NR_BM_FW 1 +#define SSD_PV3_ROM_BM_FW_SZ (64*1024*8) + +#define SSD_ROM_LOG_SZ (64*1024*4) + +#define SSD_ROM_NR_SMART_MAX 2 +#define SSD_PV3_ROM_NR_SMART SSD_ROM_NR_SMART_MAX +#define SSD_PV3_ROM_SMART_SZ (64*1024) + +/* reverion 3.2 */ +#define SSD_PV3_2_ROM_LOG_SZ (64*1024*80) /* 5MB */ +#define SSD_PV3_2_ROM_SEC_SZ (256*1024) /* 256KB */ + + +/* register */ +#define SSD_REQ_FIFO_REG 0x0000 +#define SSD_RESP_FIFO_REG 0x0008 //0x0010 +#define SSD_RESP_PTR_REG 0x0010 //0x0018 +#define SSD_INTR_INTERVAL_REG 0x0018 +#define SSD_READY_REG 0x001C +#define SSD_BRIDGE_TEST_REG 0x0020 +#define SSD_STRIPE_SIZE_REG 0x0028 +#define SSD_CTRL_VER_REG 0x0030 //controller +#define SSD_BRIDGE_VER_REG 0x0034 //bridge +#define SSD_PCB_VER_REG 0x0038 +#define SSD_BURN_FLAG_REG 0x0040 +#define SSD_BRIDGE_INFO_REG 0x0044 + +#define SSD_WL_VAL_REG 0x0048 //32-bit + +#define SSD_BB_INFO_REG 0x004C + +#define SSD_ECC_TEST_REG 0x0050 //test only +#define SSD_ERASE_TEST_REG 0x0058 //test only +#define SSD_WRITE_TEST_REG 0x0060 //test only + +#define SSD_RESET_REG 0x0068 +#define SSD_RELOAD_FW_REG 0x0070 + +#define SSD_RESERVED_BLKS_REG 0x0074 +#define SSD_VALID_PAGES_REG 0x0078 +#define SSD_CH_INFO_REG 0x007C + +#define SSD_CTRL_TEST_REG_SZ 0x8 +#define SSD_CTRL_TEST_REG0 0x0080 +#define SSD_CTRL_TEST_REG1 0x0088 +#define SSD_CTRL_TEST_REG2 0x0090 +#define SSD_CTRL_TEST_REG3 0x0098 +#define SSD_CTRL_TEST_REG4 0x00A0 +#define SSD_CTRL_TEST_REG5 0x00A8 +#define SSD_CTRL_TEST_REG6 0x00B0 +#define SSD_CTRL_TEST_REG7 0x00B8 + +#define SSD_FLASH_INFO_REG0 0x00C0 +#define SSD_FLASH_INFO_REG1 0x00C8 +#define SSD_FLASH_INFO_REG2 0x00D0 +#define SSD_FLASH_INFO_REG3 0x00D8 +#define SSD_FLASH_INFO_REG4 0x00E0 +#define SSD_FLASH_INFO_REG5 0x00E8 +#define SSD_FLASH_INFO_REG6 0x00F0 +#define SSD_FLASH_INFO_REG7 0x00F8 + +#define SSD_RESP_INFO_REG 0x01B8 +#define SSD_NAND_BUFF_BASE 0x01BC //for nand write + +#define SSD_CHIP_INFO_REG_SZ 0x10 +#define SSD_CHIP_INFO_REG0 0x0100 //128 bit +#define SSD_CHIP_INFO_REG1 0x0110 +#define SSD_CHIP_INFO_REG2 0x0120 +#define SSD_CHIP_INFO_REG3 0x0130 +#define SSD_CHIP_INFO_REG4 0x0140 +#define SSD_CHIP_INFO_REG5 0x0150 +#define SSD_CHIP_INFO_REG6 0x0160 +#define SSD_CHIP_INFO_REG7 0x0170 + +#define SSD_RAM_INFO_REG 0x01C4 + +#define SSD_BBT_BASE_REG 0x01C8 +#define SSD_ECT_BASE_REG 0x01CC + +#define SSD_CLEAR_INTR_REG 0x01F0 + +#define SSD_INIT_STATE_REG_SZ 0x8 +#define SSD_INIT_STATE_REG0 0x0200 +#define SSD_INIT_STATE_REG1 0x0208 +#define SSD_INIT_STATE_REG2 0x0210 +#define SSD_INIT_STATE_REG3 0x0218 +#define SSD_INIT_STATE_REG4 0x0220 +#define SSD_INIT_STATE_REG5 0x0228 +#define SSD_INIT_STATE_REG6 0x0230 +#define SSD_INIT_STATE_REG7 0x0238 + +#define SSD_ROM_INFO_REG 0x0600 +#define SSD_ROM_BRIDGE_FW_INFO_REG 0x0604 +#define SSD_ROM_CTRL_FW_INFO_REG 0x0608 +#define SSD_ROM_VP_INFO_REG 0x060C + +#define SSD_LOG_INFO_REG 0x0610 +#define SSD_LED_REG 0x0614 +#define SSD_MSG_BASE_REG 0x06F8 + +/*spi reg */ +#define SSD_SPI_REG_CMD 0x0180 +#define SSD_SPI_REG_CMD_HI 0x0184 +#define SSD_SPI_REG_WDATA 0x0188 +#define SSD_SPI_REG_ID 0x0190 +#define SSD_SPI_REG_STATUS 0x0198 +#define SSD_SPI_REG_RDATA 0x01A0 +#define SSD_SPI_REG_READY 0x01A8 + +/* i2c register */ +#define SSD_I2C_CTRL_REG 0x06F0 +#define SSD_I2C_RDATA_REG 0x06F4 + +/* temperature reg */ +#define SSD_BRIGE_TEMP_REG 0x0618 + +#define SSD_CTRL_TEMP_REG0 0x0700 +#define SSD_CTRL_TEMP_REG1 0x0708 +#define SSD_CTRL_TEMP_REG2 0x0710 +#define SSD_CTRL_TEMP_REG3 0x0718 +#define SSD_CTRL_TEMP_REG4 0x0720 +#define SSD_CTRL_TEMP_REG5 0x0728 +#define SSD_CTRL_TEMP_REG6 0x0730 +#define SSD_CTRL_TEMP_REG7 0x0738 + +/* reversion 3 reg */ +#define SSD_PROTOCOL_VER_REG 0x01B4 + +#define SSD_FLUSH_TIMEOUT_REG 0x02A4 +#define SSD_BM_FAULT_REG 0x0660 + +#define SSD_PV3_RAM_STATUS_REG_SZ 0x4 +#define SSD_PV3_RAM_STATUS_REG0 0x0260 +#define SSD_PV3_RAM_STATUS_REG1 0x0264 +#define SSD_PV3_RAM_STATUS_REG2 0x0268 +#define SSD_PV3_RAM_STATUS_REG3 0x026C +#define SSD_PV3_RAM_STATUS_REG4 0x0270 +#define SSD_PV3_RAM_STATUS_REG5 0x0274 +#define SSD_PV3_RAM_STATUS_REG6 0x0278 +#define SSD_PV3_RAM_STATUS_REG7 0x027C + +#define SSD_PV3_CHIP_INFO_REG_SZ 0x40 +#define SSD_PV3_CHIP_INFO_REG0 0x0300 +#define SSD_PV3_CHIP_INFO_REG1 0x0340 +#define SSD_PV3_CHIP_INFO_REG2 0x0380 +#define SSD_PV3_CHIP_INFO_REG3 0x03B0 +#define SSD_PV3_CHIP_INFO_REG4 0x0400 +#define SSD_PV3_CHIP_INFO_REG5 0x0440 +#define SSD_PV3_CHIP_INFO_REG6 0x0480 +#define SSD_PV3_CHIP_INFO_REG7 0x04B0 + +#define SSD_PV3_INIT_STATE_REG_SZ 0x20 +#define SSD_PV3_INIT_STATE_REG0 0x0500 +#define SSD_PV3_INIT_STATE_REG1 0x0520 +#define SSD_PV3_INIT_STATE_REG2 0x0540 +#define SSD_PV3_INIT_STATE_REG3 0x0560 +#define SSD_PV3_INIT_STATE_REG4 0x0580 +#define SSD_PV3_INIT_STATE_REG5 0x05A0 +#define SSD_PV3_INIT_STATE_REG6 0x05C0 +#define SSD_PV3_INIT_STATE_REG7 0x05E0 + +/* reversion 3.1.1 reg */ +#define SSD_FULL_RESET_REG 0x01B0 + +#define SSD_CTRL_REG_ZONE_SZ 0x800 + +#define SSD_BB_THRESHOLD_L1_REG 0x2C0 +#define SSD_BB_THRESHOLD_L2_REG 0x2C4 + +#define SSD_BB_ACC_REG_SZ 0x4 +#define SSD_BB_ACC_REG0 0x21C0 +#define SSD_BB_ACC_REG1 0x29C0 +#define SSD_BB_ACC_REG2 0x31C0 + +#define SSD_EC_THRESHOLD_L1_REG 0x2C8 +#define SSD_EC_THRESHOLD_L2_REG 0x2CC + +#define SSD_EC_ACC_REG_SZ 0x4 +#define SSD_EC_ACC_REG0 0x21E0 +#define SSD_EC_ACC_REG1 0x29E0 +#define SSD_EC_ACC_REG2 0x31E0 + +/* reversion 3.1.2 & 3.1.3 reg */ +#define SSD_HW_STATUS_REG 0x02AC + +#define SSD_PLP_INFO_REG 0x0664 + +/*reversion 3.2 reg*/ +#define SSD_POWER_ON_REG 0x01EC +#define SSD_PCIE_LINKSTATUS_REG 0x01F8 +#define SSD_PL_CAP_LEARN_REG 0x01FC + +#define SSD_FPGA_1V0_REG0 0x2070 +#define SSD_FPGA_1V8_REG0 0x2078 +#define SSD_FPGA_1V0_REG1 0x2870 +#define SSD_FPGA_1V8_REG1 0x2878 + +/*reversion 3.2 reg*/ +#define SSD_READ_OT_REG0 0x2260 +#define SSD_WRITE_OT_REG0 0x2264 +#define SSD_READ_OT_REG1 0x2A60 +#define SSD_WRITE_OT_REG1 0x2A64 + + +/* function */ +#define SSD_FUNC_READ 0x01 +#define SSD_FUNC_WRITE 0x02 +#define SSD_FUNC_NAND_READ_WOOB 0x03 +#define SSD_FUNC_NAND_READ 0x04 +#define SSD_FUNC_NAND_WRITE 0x05 +#define SSD_FUNC_NAND_ERASE 0x06 +#define SSD_FUNC_NAND_READ_ID 0x07 +#define SSD_FUNC_READ_LOG 0x08 +#define SSD_FUNC_TRIM 0x09 +#define SSD_FUNC_RAM_READ 0x10 +#define SSD_FUNC_RAM_WRITE 0x11 +#define SSD_FUNC_FLUSH 0x12 //cache / bbt + +/* spi function */ +#define SSD_SPI_CMD_PROGRAM 0x02 +#define SSD_SPI_CMD_READ 0x03 +#define SSD_SPI_CMD_W_DISABLE 0x04 +#define SSD_SPI_CMD_READ_STATUS 0x05 +#define SSD_SPI_CMD_W_ENABLE 0x06 +#define SSD_SPI_CMD_ERASE 0xd8 +#define SSD_SPI_CMD_CLSR 0x30 +#define SSD_SPI_CMD_READ_ID 0x9f + +/* i2c */ +#define SSD_I2C_CTRL_READ 0x00 +#define SSD_I2C_CTRL_WRITE 0x01 + +/* i2c internal register */ +#define SSD_I2C_CFG_REG 0x00 +#define SSD_I2C_DATA_REG 0x01 +#define SSD_I2C_CMD_REG 0x02 +#define SSD_I2C_STATUS_REG 0x03 +#define SSD_I2C_SADDR_REG 0x04 +#define SSD_I2C_LEN_REG 0x05 +#define SSD_I2C_RLEN_REG 0x06 +#define SSD_I2C_WLEN_REG 0x07 +#define SSD_I2C_RESET_REG 0x08 //write for reset +#define SSD_I2C_PRER_REG 0x09 + + +/* hw mon */ +/* FPGA volt = ADC_value / 4096 * 3v */ +#define SSD_FPGA_1V0_ADC_MIN 1228 // 0.9v +#define SSD_FPGA_1V0_ADC_MAX 1502 // 1.1v +#define SSD_FPGA_1V8_ADC_MIN 2211 // 1.62v +#define SSD_FPGA_1V8_ADC_MAX 2703 // 1.98 + +/* ADC value */ +#define SSD_FPGA_VOLT_MAX(val) (((val) & 0xffff) >> 4) +#define SSD_FPGA_VOLT_MIN(val) (((val >> 16) & 0xffff) >> 4) +#define SSD_FPGA_VOLT_CUR(val) (((val >> 32) & 0xffff) >> 4) +#define SSD_FPGA_VOLT(val) ((val * 3000) >> 12) + +#define SSD_VOLT_LOG_DATA(idx, ctrl, volt) (((uint32_t)idx << 24) | ((uint32_t)ctrl << 16) | ((uint32_t)volt)) + +enum ssd_fpga_volt +{ + SSD_FPGA_1V0 = 0, + SSD_FPGA_1V8, + SSD_FPGA_VOLT_NR +}; + +enum ssd_clock +{ + SSD_CLOCK_166M_LOST = 0, + SSD_CLOCK_166M_SKEW, + SSD_CLOCK_156M_LOST, + SSD_CLOCK_156M_SKEW, + SSD_CLOCK_NR +}; + +/* sensor */ +#define SSD_SENSOR_LM75_SADDRESS (0x49 << 1) +#define SSD_SENSOR_LM80_SADDRESS (0x28 << 1) + +#define SSD_SENSOR_CONVERT_TEMP(val) ((int)(val >> 8)) + +#define SSD_INLET_OT_TEMP (55) //55 DegC +#define SSD_INLET_OT_HYST (50) //50 DegC +#define SSD_FLASH_OT_TEMP (70) //70 DegC +#define SSD_FLASH_OT_HYST (65) //65 DegC + +enum ssd_sensor +{ + SSD_SENSOR_LM80 = 0, + SSD_SENSOR_LM75, + SSD_SENSOR_NR +}; + + +/* lm75 */ +enum ssd_lm75_reg +{ + SSD_LM75_REG_TEMP = 0, + SSD_LM75_REG_CONF, + SSD_LM75_REG_THYST, + SSD_LM75_REG_TOS +}; + +/* lm96080 */ +#define SSD_LM80_REG_IN_MAX(nr) (0x2a + (nr) * 2) +#define SSD_LM80_REG_IN_MIN(nr) (0x2b + (nr) * 2) +#define SSD_LM80_REG_IN(nr) (0x20 + (nr)) + +#define SSD_LM80_REG_FAN1 0x28 +#define SSD_LM80_REG_FAN2 0x29 +#define SSD_LM80_REG_FAN_MIN(nr) (0x3b + (nr)) + +#define SSD_LM80_REG_TEMP 0x27 +#define SSD_LM80_REG_TEMP_HOT_MAX 0x38 +#define SSD_LM80_REG_TEMP_HOT_HYST 0x39 +#define SSD_LM80_REG_TEMP_OS_MAX 0x3a +#define SSD_LM80_REG_TEMP_OS_HYST 0x3b + +#define SSD_LM80_REG_CONFIG 0x00 +#define SSD_LM80_REG_ALARM1 0x01 +#define SSD_LM80_REG_ALARM2 0x02 +#define SSD_LM80_REG_MASK1 0x03 +#define SSD_LM80_REG_MASK2 0x04 +#define SSD_LM80_REG_FANDIV 0x05 +#define SSD_LM80_REG_RES 0x06 + +#define SSD_LM80_CONVERT_VOLT(val) ((val * 10) >> 8) + +#define SSD_LM80_3V3_VOLT(val) ((val)*33/19) + +#define SSD_LM80_CONV_INTERVAL (1000) + +enum ssd_lm80_in +{ + SSD_LM80_IN_CAP = 0, + SSD_LM80_IN_1V2, + SSD_LM80_IN_1V2a, + SSD_LM80_IN_1V5, + SSD_LM80_IN_1V8, + SSD_LM80_IN_FPGA_3V3, + SSD_LM80_IN_3V3, + SSD_LM80_IN_NR +}; + +struct ssd_lm80_limit +{ + uint8_t low; + uint8_t high; +}; + +/* +/- 5% except cap in*/ +static struct ssd_lm80_limit ssd_lm80_limit[SSD_LM80_IN_NR] = { + {171, 217}, /* CAP in: 1710 ~ 2170 */ + {114, 126}, + {114, 126}, + {142, 158}, + {171, 189}, + {180, 200}, + {180, 200}, +}; + +/* temperature sensors */ +enum ssd_temp_sensor +{ + SSD_TEMP_INLET = 0, + SSD_TEMP_FLASH, + SSD_TEMP_CTRL, + SSD_TEMP_NR +}; + + +#ifdef SSD_OT_PROTECT +#define SSD_OT_DELAY (60) //ms + +#define SSD_OT_TEMP (90) //90 DegC + +#define SSD_OT_TEMP_HYST (85) //85 DegC +#endif + +/* fpga temperature */ +//#define CONVERT_TEMP(val) ((float)(val)*503.975f/4096.0f-273.15f) +#define CONVERT_TEMP(val) ((val)*504/4096-273) + +#define MAX_TEMP(val) CONVERT_TEMP(((val & 0xffff) >> 4)) +#define MIN_TEMP(val) CONVERT_TEMP((((val>>16) & 0xffff) >> 4)) +#define CUR_TEMP(val) CONVERT_TEMP((((val>>32) & 0xffff) >> 4)) + + +/* CAP monitor */ +#define SSD_PL_CAP_U1 SSD_LM80_REG_IN(SSD_LM80_IN_CAP) +#define SSD_PL_CAP_U2 SSD_LM80_REG_IN(SSD_LM80_IN_1V8) +#define SSD_PL_CAP_LEARN(u1, u2, t) ((t*(u1+u2))/(2*162*(u1-u2))) +#define SSD_PL_CAP_LEARN_WAIT (20) //20ms +#define SSD_PL_CAP_LEARN_MAX_WAIT (1000/SSD_PL_CAP_LEARN_WAIT) //1s + +#define SSD_PL_CAP_CHARGE_WAIT (1000) +#define SSD_PL_CAP_CHARGE_MAX_WAIT ((120*1000)/SSD_PL_CAP_CHARGE_WAIT) //120s + +#define SSD_PL_CAP_VOLT(val) (val*7) + +#define SSD_PL_CAP_VOLT_FULL (13700) +#define SSD_PL_CAP_VOLT_READY (12880) + +#define SSD_PL_CAP_THRESHOLD (8900) +#define SSD_PL_CAP_CP_THRESHOLD (5800) +#define SSD_PL_CAP_THRESHOLD_HYST (100) + +enum ssd_pl_cap_status +{ + SSD_PL_CAP = 0, + SSD_PL_CAP_NR +}; + +enum ssd_pl_cap_type +{ + SSD_PL_CAP_DEFAULT = 0, /* 4 cap */ + SSD_PL_CAP_CP /* 3 cap */ +}; + + +/* hwmon offset */ +#define SSD_HWMON_OFFS_TEMP (0) +#define SSD_HWMON_OFFS_SENSOR (SSD_HWMON_OFFS_TEMP + SSD_TEMP_NR) +#define SSD_HWMON_OFFS_PL_CAP (SSD_HWMON_OFFS_SENSOR + SSD_SENSOR_NR) +#define SSD_HWMON_OFFS_LM80 (SSD_HWMON_OFFS_PL_CAP + SSD_PL_CAP_NR) +#define SSD_HWMON_OFFS_CLOCK (SSD_HWMON_OFFS_LM80 + SSD_LM80_IN_NR) +#define SSD_HWMON_OFFS_FPGA (SSD_HWMON_OFFS_CLOCK + SSD_CLOCK_NR) + +#define SSD_HWMON_TEMP(idx) (SSD_HWMON_OFFS_TEMP + idx) +#define SSD_HWMON_SENSOR(idx) (SSD_HWMON_OFFS_SENSOR + idx) +#define SSD_HWMON_PL_CAP(idx) (SSD_HWMON_OFFS_PL_CAP + idx) +#define SSD_HWMON_LM80(idx) (SSD_HWMON_OFFS_LM80 + idx) +#define SSD_HWMON_CLOCK(idx) (SSD_HWMON_OFFS_CLOCK + idx) +#define SSD_HWMON_FPGA(ctrl, idx) (SSD_HWMON_OFFS_FPGA + (ctrl * SSD_FPGA_VOLT_NR) + idx) + + + +/* fifo */ +typedef struct sfifo +{ + uint32_t in; + uint32_t out; + uint32_t size; + uint32_t esize; + uint32_t mask; + spinlock_t lock; + void *data; +} sfifo_t; + +static int sfifo_alloc(struct sfifo *fifo, uint32_t size, uint32_t esize) +{ + uint32_t __size = 1; + + if (!fifo || size > INT_MAX || esize == 0) { + return -EINVAL; + } + + while (__size < size) __size <<= 1; + + if (__size < 2) { + return -EINVAL; + } + + fifo->data = vmalloc(esize * __size); + if (!fifo->data) { + return -ENOMEM; + } + + fifo->in = 0; + fifo->out = 0; + fifo->mask = __size - 1; + fifo->size = __size; + fifo->esize = esize; + spin_lock_init(&fifo->lock); + + return 0; +} + +static void sfifo_free(struct sfifo *fifo) +{ + if (!fifo) { + return; + } + + vfree(fifo->data); + fifo->data = NULL; + fifo->in = 0; + fifo->out = 0; + fifo->mask = 0; + fifo->size = 0; + fifo->esize = 0; +} + +static int __sfifo_put(struct sfifo *fifo, void *val) +{ + if (((fifo->in + 1) & fifo->mask) == fifo->out) { + return -1; + } + + memcpy((fifo->data + (fifo->in * fifo->esize)), val, fifo->esize); + fifo->in = (fifo->in + 1) & fifo->mask; + + return 0; +} + +static int sfifo_put(struct sfifo *fifo, void *val) +{ + int ret = 0; + + if (!fifo || !val) { + return -EINVAL; + } + + if (!in_interrupt()) { + spin_lock_irq(&fifo->lock); + ret = __sfifo_put(fifo, val); + spin_unlock_irq(&fifo->lock); + } else { + spin_lock(&fifo->lock); + ret = __sfifo_put(fifo, val); + spin_unlock(&fifo->lock); + } + + return ret; +} + +static int __sfifo_get(struct sfifo *fifo, void *val) +{ + if (fifo->out == fifo->in) { + return -1; + } + + memcpy(val, (fifo->data + (fifo->out * fifo->esize)), fifo->esize); + fifo->out = (fifo->out + 1) & fifo->mask; + + return 0; +} + +static int sfifo_get(struct sfifo *fifo, void *val) +{ + int ret = 0; + + if (!fifo || !val) { + return -EINVAL; + } + + if (!in_interrupt()) { + spin_lock_irq(&fifo->lock); + ret = __sfifo_get(fifo, val); + spin_unlock_irq(&fifo->lock); + } else { + spin_lock(&fifo->lock); + ret = __sfifo_get(fifo, val); + spin_unlock(&fifo->lock); + } + + return ret; +} + +/* bio list */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) +struct ssd_blist { + struct bio *prev; + struct bio *next; +}; + +static inline void ssd_blist_init(struct ssd_blist *ssd_bl) +{ + ssd_bl->prev = NULL; + ssd_bl->next = NULL; +} + +static inline struct bio *ssd_blist_get(struct ssd_blist *ssd_bl) +{ + struct bio *bio = ssd_bl->prev; + + ssd_bl->prev = NULL; + ssd_bl->next = NULL; + + return bio; +} + +static inline void ssd_blist_add(struct ssd_blist *ssd_bl, struct bio *bio) +{ + bio->bi_next = NULL; + + if (ssd_bl->next) { + ssd_bl->next->bi_next = bio; + } else { + ssd_bl->prev = bio; + } + + ssd_bl->next = bio; +} + +#else +#define ssd_blist bio_list +#define ssd_blist_init bio_list_init +#define ssd_blist_get bio_list_get +#define ssd_blist_add bio_list_add +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) +#define bio_start(bio) (bio->bi_sector) +#else +#define bio_start(bio) (bio->bi_iter.bi_sector) +#endif + +/* mutex */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)) +#define mutex_lock down +#define mutex_unlock up +#define mutex semaphore +#define mutex_init init_MUTEX +#endif + +/* i2c */ +typedef union ssd_i2c_ctrl { + uint32_t val; + struct { + uint8_t wdata; + uint8_t addr; + uint16_t rw:1; + uint16_t pad:15; + } bits; +}__attribute__((packed)) ssd_i2c_ctrl_t; + +typedef union ssd_i2c_data { + uint32_t val; + struct { + uint32_t rdata:8; + uint32_t valid:1; + uint32_t pad:23; + } bits; +}__attribute__((packed)) ssd_i2c_data_t; + +/* write mode */ +enum ssd_write_mode +{ + SSD_WMODE_BUFFER = 0, + SSD_WMODE_BUFFER_EX, + SSD_WMODE_FUA, + /* dummy */ + SSD_WMODE_AUTO, + SSD_WMODE_DEFAULT +}; + +/* reset type */ +enum ssd_reset_type +{ + SSD_RST_NOINIT = 0, + SSD_RST_NORMAL, + SSD_RST_FULL +}; + +/* ssd msg */ +typedef struct ssd_sg_entry +{ + uint64_t block:48; + uint64_t length:16; + uint64_t buf; +}__attribute__((packed))ssd_sg_entry_t; + +typedef struct ssd_rw_msg +{ + uint8_t tag; + uint8_t flag; + uint8_t nsegs; + uint8_t fun; + uint32_t reserved; //for 64-bit align + struct ssd_sg_entry sge[1]; //base +}__attribute__((packed))ssd_rw_msg_t; + +typedef struct ssd_resp_msg +{ + uint8_t tag; + uint8_t status:2; + uint8_t bitflip:6; + uint8_t log; + uint8_t fun; + uint32_t reserved; +}__attribute__((packed))ssd_resp_msg_t; + +typedef struct ssd_flush_msg +{ + uint8_t tag; + uint8_t flag:2; //flash cache 0 or bbt 1 + uint8_t flash:6; + uint8_t ctrl_idx; + uint8_t fun; + uint32_t reserved; //align +}__attribute__((packed))ssd_flush_msg_t; + +typedef struct ssd_nand_op_msg +{ + uint8_t tag; + uint8_t flag; + uint8_t ctrl_idx; + uint8_t fun; + uint32_t reserved; //align + uint16_t page_count; + uint8_t chip_ce; + uint8_t chip_no; + uint32_t page_no; + uint64_t buf; +}__attribute__((packed))ssd_nand_op_msg_t; + +typedef struct ssd_ram_op_msg +{ + uint8_t tag; + uint8_t flag; + uint8_t ctrl_idx; + uint8_t fun; + uint32_t reserved; //align + uint32_t start; + uint32_t length; + uint64_t buf; +}__attribute__((packed))ssd_ram_op_msg_t; + + +/* log msg */ +typedef struct ssd_log_msg +{ + uint8_t tag; + uint8_t flag; + uint8_t ctrl_idx; + uint8_t fun; + uint32_t reserved; //align + uint64_t buf; +}__attribute__((packed))ssd_log_msg_t; + +typedef struct ssd_log_op_msg +{ + uint8_t tag; + uint8_t flag; + uint8_t ctrl_idx; + uint8_t fun; + uint32_t reserved; //align + uint64_t reserved1; //align + uint64_t buf; +}__attribute__((packed))ssd_log_op_msg_t; + +typedef struct ssd_log_resp_msg +{ + uint8_t tag; + uint16_t status :2; + uint16_t reserved1 :2; //align with the normal resp msg + uint16_t nr_log :12; + uint8_t fun; + uint32_t reserved; +}__attribute__((packed))ssd_log_resp_msg_t; + + +/* resp msg */ +typedef union ssd_response_msq +{ + ssd_resp_msg_t resp_msg; + ssd_log_resp_msg_t log_resp_msg; + uint64_t u64_msg; + uint32_t u32_msg[2]; +} ssd_response_msq_t; + + +/* custom struct */ +typedef struct ssd_protocol_info +{ + uint32_t ver; + uint32_t init_state_reg; + uint32_t init_state_reg_sz; + uint32_t chip_info_reg; + uint32_t chip_info_reg_sz; +} ssd_protocol_info_t; + +typedef struct ssd_hw_info +{ + uint32_t bridge_ver; + uint32_t ctrl_ver; + + uint32_t cmd_fifo_sz; + uint32_t cmd_fifo_sz_mask; + uint32_t cmd_max_sg; + uint32_t sg_max_sec; + uint32_t resp_ptr_sz; + uint32_t resp_msg_sz; + + uint16_t nr_ctrl; + + uint16_t nr_data_ch; + uint16_t nr_ch; + uint16_t max_ch; + uint16_t nr_chip; + + uint8_t pcb_ver; + uint8_t upper_pcb_ver; + + uint8_t nand_vendor_id; + uint8_t nand_dev_id; + + uint8_t max_ce; + uint8_t id_size; + uint16_t oob_size; + + uint16_t bbf_pages; + uint16_t bbf_seek; // + + uint16_t page_count; //per block + uint32_t page_size; + uint32_t block_count; //per flash + + uint64_t ram_size; + uint32_t ram_align; + uint32_t ram_max_len; + + uint64_t bbt_base; + uint32_t bbt_size; + uint64_t md_base; //metadata + uint32_t md_size; + uint32_t md_entry_sz; + + uint32_t log_sz; + + uint64_t nand_wbuff_base; + + uint32_t md_reserved_blks; + uint32_t reserved_blks; + uint32_t valid_pages; + uint32_t max_valid_pages; + uint64_t size; +} ssd_hw_info_t; + +typedef struct ssd_hw_info_extend +{ + uint8_t board_type; + uint8_t cap_type; + uint8_t plp_type; + uint8_t work_mode; + uint8_t form_factor; + + uint8_t pad[59]; +}ssd_hw_info_extend_t; + +typedef struct ssd_rom_info +{ + uint32_t size; + uint32_t block_size; + uint16_t page_size; + uint8_t nr_bridge_fw; + uint8_t nr_ctrl_fw; + uint8_t nr_bm_fw; + uint8_t nr_smart; + uint32_t bridge_fw_base; + uint32_t bridge_fw_sz; + uint32_t ctrl_fw_base; + uint32_t ctrl_fw_sz; + uint32_t bm_fw_base; + uint32_t bm_fw_sz; + uint32_t log_base; + uint32_t log_sz; + uint32_t smart_base; + uint32_t smart_sz; + uint32_t vp_base; + uint32_t label_base; +} ssd_rom_info_t; + +/* debug info */ +enum ssd_debug_type +{ + SSD_DEBUG_NONE = 0, + SSD_DEBUG_READ_ERR, + SSD_DEBUG_WRITE_ERR, + SSD_DEBUG_RW_ERR, + SSD_DEBUG_READ_TO, + SSD_DEBUG_WRITE_TO, + SSD_DEBUG_RW_TO, + SSD_DEBUG_LOG, + SSD_DEBUG_OFFLINE, + SSD_DEBUG_NR +}; + +typedef struct ssd_debug_info +{ + int type; + union { + struct { + uint64_t off; + uint32_t len; + } loc; + struct { + int event; + uint32_t extra; + } log; + } data; +}ssd_debug_info_t; + +/* label */ +#define SSD_LABEL_FIELD_SZ 32 +#define SSD_SN_SZ 16 + +typedef struct ssd_label +{ + char date[SSD_LABEL_FIELD_SZ]; + char sn[SSD_LABEL_FIELD_SZ]; + char part[SSD_LABEL_FIELD_SZ]; + char desc[SSD_LABEL_FIELD_SZ]; + char other[SSD_LABEL_FIELD_SZ]; + char maf[SSD_LABEL_FIELD_SZ]; +} ssd_label_t; + +#define SSD_LABEL_DESC_SZ 256 + +typedef struct ssd_labelv3 +{ + char boardtype[SSD_LABEL_FIELD_SZ]; + char barcode[SSD_LABEL_FIELD_SZ]; + char item[SSD_LABEL_FIELD_SZ]; + char description[SSD_LABEL_DESC_SZ]; + char manufactured[SSD_LABEL_FIELD_SZ]; + char vendorname[SSD_LABEL_FIELD_SZ]; + char issuenumber[SSD_LABEL_FIELD_SZ]; + char cleicode[SSD_LABEL_FIELD_SZ]; + char bom[SSD_LABEL_FIELD_SZ]; +} ssd_labelv3_t; + +/* battery */ +typedef struct ssd_battery_info +{ + uint32_t fw_ver; +} ssd_battery_info_t; + +/* ssd power stat */ +typedef struct ssd_power_stat +{ + uint64_t nr_poweron; + uint64_t nr_powerloss; + uint64_t init_failed; +} ssd_power_stat_t; + +/* io stat */ +typedef struct ssd_io_stat +{ + uint64_t run_time; + uint64_t nr_to; + uint64_t nr_ioerr; + uint64_t nr_rwerr; + uint64_t nr_read; + uint64_t nr_write; + uint64_t rsectors; + uint64_t wsectors; +} ssd_io_stat_t; + +/* ecc */ +typedef struct ssd_ecc_info +{ + uint64_t bitflip[SSD_ECC_MAX_FLIP]; +} ssd_ecc_info_t; + +/* log */ +enum ssd_log_level +{ + SSD_LOG_LEVEL_INFO = 0, + SSD_LOG_LEVEL_NOTICE, + SSD_LOG_LEVEL_WARNING, + SSD_LOG_LEVEL_ERR, + SSD_LOG_NR_LEVEL +}; + +typedef struct ssd_log_info +{ + uint64_t nr_log; + uint64_t stat[SSD_LOG_NR_LEVEL]; +} ssd_log_info_t; + +/* S.M.A.R.T. */ +#define SSD_SMART_MAGIC (0x5452414D53445353ull) + +typedef struct ssd_smart +{ + struct ssd_power_stat pstat; + struct ssd_io_stat io_stat; + struct ssd_ecc_info ecc_info; + struct ssd_log_info log_info; + uint64_t version; + uint64_t magic; +} ssd_smart_t; + +/* internal log */ +typedef struct ssd_internal_log +{ + uint32_t nr_log; + void *log; +} ssd_internal_log_t; + +/* ssd cmd */ +typedef struct ssd_cmd +{ + struct bio *bio; + struct scatterlist *sgl; + struct list_head list; + void *dev; + int nsegs; + int flag; /*pbio(1) or bio(0)*/ + + int tag; + void *msg; + dma_addr_t msg_dma; + + unsigned long start_time; + + int errors; + unsigned int nr_log; + + struct timer_list cmd_timer; + struct completion *waiting; +} ssd_cmd_t; + +typedef void (*send_cmd_func)(struct ssd_cmd *); +typedef int (*ssd_event_call)(struct gendisk *, int, int); /* gendisk, event id, event level */ + +/* dcmd sz */ +#define SSD_DCMD_MAX_SZ 32 + +typedef struct ssd_dcmd +{ + struct list_head list; + void *dev; + uint8_t msg[SSD_DCMD_MAX_SZ]; +} ssd_dcmd_t; + + +enum ssd_state { + SSD_INIT_WORKQ, + SSD_INIT_BD, + SSD_ONLINE, + /* full reset */ + SSD_RESETING, + /* hw log */ + SSD_LOG_HW, + /* log err */ + SSD_LOG_ERR, +}; + +#define SSD_QUEUE_NAME_LEN 16 +typedef struct ssd_queue { + char name[SSD_QUEUE_NAME_LEN]; + void *dev; + + int idx; + + uint32_t resp_idx; + uint32_t resp_idx_mask; + uint32_t resp_msg_sz; + + void *resp_msg; + void *resp_ptr; + + struct ssd_cmd *cmd; + + struct ssd_io_stat io_stat; + struct ssd_ecc_info ecc_info; +} ssd_queue_t; + +typedef struct ssd_device { + char name[SSD_DEV_NAME_LEN]; + + int idx; + int major; + int readonly; + + int int_mode; +#ifdef SSD_ESCAPE_IRQ + int irq_cpu; +#endif + + int reload_fw; + + int ot_delay; //in ms + + atomic_t refcnt; + atomic_t tocnt; + atomic_t in_flight[2]; //r&w + + uint64_t uptime; + + struct list_head list; + struct pci_dev *pdev; + + unsigned long mmio_base; + unsigned long mmio_len; + void __iomem *ctrlp; + + struct mutex spi_mutex; + struct mutex i2c_mutex; + + struct ssd_protocol_info protocol_info; + struct ssd_hw_info hw_info; + struct ssd_rom_info rom_info; + struct ssd_label label; + + struct ssd_smart smart; + + atomic_t in_sendq; + spinlock_t sendq_lock; + struct ssd_blist sendq; + struct task_struct *send_thread; + wait_queue_head_t send_waitq; + + atomic_t in_doneq; + spinlock_t doneq_lock; + struct ssd_blist doneq; + struct task_struct *done_thread; + wait_queue_head_t done_waitq; + + struct ssd_dcmd *dcmd; + spinlock_t dcmd_lock; + struct list_head dcmd_list; /* direct cmd list */ + wait_queue_head_t dcmd_wq; + + unsigned long *tag_map; + wait_queue_head_t tag_wq; + + spinlock_t cmd_lock; + struct ssd_cmd *cmd; + send_cmd_func scmd; + + ssd_event_call event_call; + void *msg_base; + dma_addr_t msg_base_dma; + + uint32_t resp_idx; + void *resp_msg_base; + void *resp_ptr_base; + dma_addr_t resp_msg_base_dma; + dma_addr_t resp_ptr_base_dma; + + int nr_queue; + struct msix_entry entry[SSD_MSIX_VEC]; + struct ssd_queue queue[SSD_MSIX_VEC]; + + struct request_queue *rq; /* The device request queue */ + struct gendisk *gd; /* The gendisk structure */ + + struct mutex internal_log_mutex; + struct ssd_internal_log internal_log; + struct workqueue_struct *workq; + struct work_struct log_work; /* get log */ + void *log_buf; + + unsigned long state; /* device state, for example, block device inited */ + + struct module *owner; + + /* extend */ + + int slave; + int cmajor; + int save_md; + int ot_protect; + + struct kref kref; + + struct mutex gd_mutex; + struct ssd_log_info log_info; /* volatile */ + + atomic_t queue_depth; + struct mutex barrier_mutex; + struct mutex fw_mutex; + + struct ssd_hw_info_extend hw_info_ext; + struct ssd_labelv3 labelv3; + + int wmode; + int user_wmode; + struct mutex bm_mutex; + struct work_struct bm_work; /* check bm */ + struct timer_list bm_timer; + struct sfifo log_fifo; + + struct timer_list routine_timer; + unsigned long routine_tick; + unsigned long hwmon; + + struct work_struct hwmon_work; /* check hw */ + struct work_struct capmon_work; /* check battery */ + struct work_struct tempmon_work; /* check temp */ + + /* debug info */ + struct ssd_debug_info db_info; + uint64_t reset_time; + int has_non_0x98_reg_access; + spinlock_t in_flight_lock; + + uint64_t last_poweron_id; + +} ssd_device_t; + + +/* Ioctl struct */ +typedef struct ssd_acc_info { + uint32_t threshold_l1; + uint32_t threshold_l2; + uint32_t val; +} ssd_acc_info_t; + +typedef struct ssd_reg_op_info +{ + uint32_t offset; + uint32_t value; +} ssd_reg_op_info_t; + +typedef struct ssd_spi_op_info +{ + void __user *buf; + uint32_t off; + uint32_t len; +} ssd_spi_op_info_t; + +typedef struct ssd_i2c_op_info +{ + uint8_t saddr; + uint8_t wsize; + uint8_t rsize; + void __user *wbuf; + void __user *rbuf; +} ssd_i2c_op_info_t; + +typedef struct ssd_smbus_op_info +{ + uint8_t saddr; + uint8_t cmd; + uint8_t size; + void __user *buf; +} ssd_smbus_op_info_t; + +typedef struct ssd_ram_op_info { + uint8_t ctrl_idx; + uint32_t length; + uint64_t start; + uint8_t __user *buf; +} ssd_ram_op_info_t; + +typedef struct ssd_flash_op_info { + uint32_t page; + uint16_t flash; + uint8_t chip; + uint8_t ctrl_idx; + uint8_t __user *buf; +} ssd_flash_op_info_t; + +typedef struct ssd_sw_log_info { + uint16_t event; + uint16_t pad; + uint32_t data; +} ssd_sw_log_info_t; + +typedef struct ssd_version_info +{ + uint32_t bridge_ver; /* bridge fw version */ + uint32_t ctrl_ver; /* controller fw version */ + uint32_t bm_ver; /* battery manager fw version */ + uint8_t pcb_ver; /* main pcb version */ + uint8_t upper_pcb_ver; + uint8_t pad0; + uint8_t pad1; +} ssd_version_info_t; + +typedef struct pci_addr +{ + uint16_t domain; + uint8_t bus; + uint8_t slot; + uint8_t func; +} pci_addr_t; + +typedef struct ssd_drv_param_info { + int mode; + int status_mask; + int int_mode; + int threaded_irq; + int log_level; + int wmode; + int ot_protect; + int finject; + int pad[8]; +} ssd_drv_param_info_t; + + +/* form factor */ +enum ssd_form_factor +{ + SSD_FORM_FACTOR_HHHL = 0, + SSD_FORM_FACTOR_FHHL +}; + + +/* ssd power loss protect */ +enum ssd_plp_type +{ + SSD_PLP_SCAP = 0, + SSD_PLP_CAP, + SSD_PLP_NONE +}; + +/* ssd bm */ +#define SSD_BM_SLAVE_ADDRESS 0x16 +#define SSD_BM_CAP 5 + +/* SBS cmd */ +#define SSD_BM_SAFETYSTATUS 0x51 +#define SSD_BM_OPERATIONSTATUS 0x54 + +/* ManufacturerAccess */ +#define SSD_BM_MANUFACTURERACCESS 0x00 +#define SSD_BM_ENTER_CAP_LEARNING 0x0023 /* cap learning */ + +/* Data flash access */ +#define SSD_BM_DATA_FLASH_SUBCLASS_ID 0x77 +#define SSD_BM_DATA_FLASH_SUBCLASS_ID_PAGE1 0x78 +#define SSD_BM_SYSTEM_DATA_SUBCLASS_ID 56 +#define SSD_BM_CONFIGURATION_REGISTERS_ID 64 + +/* min cap voltage */ +#define SSD_BM_CAP_VOLT_MIN 500 + +/* +enum ssd_bm_cap +{ + SSD_BM_CAP_VINA = 1, + SSD_BM_CAP_JH = 3 +};*/ + +enum ssd_bmstatus +{ + SSD_BMSTATUS_OK = 0, + SSD_BMSTATUS_CHARGING, /* not fully charged */ + SSD_BMSTATUS_WARNING +}; + +enum sbs_unit { + SBS_UNIT_VALUE = 0, + SBS_UNIT_TEMPERATURE, + SBS_UNIT_VOLTAGE, + SBS_UNIT_CURRENT, + SBS_UNIT_ESR, + SBS_UNIT_PERCENT, + SBS_UNIT_CAPACITANCE +}; + +enum sbs_size { + SBS_SIZE_BYTE = 1, + SBS_SIZE_WORD, + SBS_SIZE_BLK, +}; + +struct sbs_cmd { + uint8_t cmd; + uint8_t size; + uint8_t unit; + uint8_t off; + uint16_t mask; + char *desc; +}; + +struct ssd_bm { + uint16_t temp; + uint16_t volt; + uint16_t curr; + uint16_t esr; + uint16_t rsoc; + uint16_t health; + uint16_t cap; + uint16_t chg_curr; + uint16_t chg_volt; + uint16_t cap_volt[SSD_BM_CAP]; + uint16_t sf_alert; + uint16_t sf_status; + uint16_t op_status; + uint16_t sys_volt; +}; + +struct ssd_bm_manufacturer_data +{ + uint16_t pack_lot_code; + uint16_t pcb_lot_code; + uint16_t firmware_ver; + uint16_t hardware_ver; +}; + +struct ssd_bm_configuration_registers +{ + struct { + uint16_t cc:3; + uint16_t rsvd:5; + uint16_t stack:1; + uint16_t rsvd1:2; + uint16_t temp:2; + uint16_t rsvd2:1; + uint16_t lt_en:1; + uint16_t rsvd3:1; + } operation_cfg; + uint16_t pad; + uint16_t fet_action; + uint16_t pad1; + uint16_t fault; +}; + +#define SBS_VALUE_MASK 0xffff + +#define bm_var_offset(var) ((size_t) &((struct ssd_bm *)0)->var) +#define bm_var(start, offset) ((void *) start + (offset)) + +static struct sbs_cmd ssd_bm_sbs[] = { + {0x08, SBS_SIZE_WORD, SBS_UNIT_TEMPERATURE, bm_var_offset(temp), SBS_VALUE_MASK, "Temperature"}, + {0x09, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, bm_var_offset(volt), SBS_VALUE_MASK, "Voltage"}, + {0x0a, SBS_SIZE_WORD, SBS_UNIT_CURRENT, bm_var_offset(curr), SBS_VALUE_MASK, "Current"}, + {0x0b, SBS_SIZE_WORD, SBS_UNIT_ESR, bm_var_offset(esr), SBS_VALUE_MASK, "ESR"}, + {0x0d, SBS_SIZE_BYTE, SBS_UNIT_PERCENT, bm_var_offset(rsoc), SBS_VALUE_MASK, "RelativeStateOfCharge"}, + {0x0e, SBS_SIZE_BYTE, SBS_UNIT_PERCENT, bm_var_offset(health), SBS_VALUE_MASK, "Health"}, + {0x10, SBS_SIZE_WORD, SBS_UNIT_CAPACITANCE, bm_var_offset(cap), SBS_VALUE_MASK, "Capacitance"}, + {0x14, SBS_SIZE_WORD, SBS_UNIT_CURRENT, bm_var_offset(chg_curr), SBS_VALUE_MASK, "ChargingCurrent"}, + {0x15, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, bm_var_offset(chg_volt), SBS_VALUE_MASK, "ChargingVoltage"}, + {0x3b, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, (uint8_t)bm_var_offset(cap_volt[4]), SBS_VALUE_MASK, "CapacitorVoltage5"}, + {0x3c, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, (uint8_t)bm_var_offset(cap_volt[3]), SBS_VALUE_MASK, "CapacitorVoltage4"}, + {0x3d, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, (uint8_t)bm_var_offset(cap_volt[2]), SBS_VALUE_MASK, "CapacitorVoltage3"}, + {0x3e, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, (uint8_t)bm_var_offset(cap_volt[1]), SBS_VALUE_MASK, "CapacitorVoltage2"}, + {0x3f, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, (uint8_t)bm_var_offset(cap_volt[0]), SBS_VALUE_MASK, "CapacitorVoltage1"}, + {0x50, SBS_SIZE_WORD, SBS_UNIT_VALUE, bm_var_offset(sf_alert), 0x870F, "SafetyAlert"}, + {0x51, SBS_SIZE_WORD, SBS_UNIT_VALUE, bm_var_offset(sf_status), 0xE7BF, "SafetyStatus"}, + {0x54, SBS_SIZE_WORD, SBS_UNIT_VALUE, bm_var_offset(op_status), 0x79F4, "OperationStatus"}, + {0x5a, SBS_SIZE_WORD, SBS_UNIT_VOLTAGE, bm_var_offset(sys_volt), SBS_VALUE_MASK, "SystemVoltage"}, + {0, 0, 0, 0, 0, NULL}, +}; + +/* ssd ioctl */ +#define SSD_CMD_GET_PROTOCOL_INFO _IOR('H', 100, struct ssd_protocol_info) +#define SSD_CMD_GET_HW_INFO _IOR('H', 101, struct ssd_hw_info) +#define SSD_CMD_GET_ROM_INFO _IOR('H', 102, struct ssd_rom_info) +#define SSD_CMD_GET_SMART _IOR('H', 103, struct ssd_smart) +#define SSD_CMD_GET_IDX _IOR('H', 105, int) +#define SSD_CMD_GET_AMOUNT _IOR('H', 106, int) +#define SSD_CMD_GET_TO_INFO _IOR('H', 107, int) +#define SSD_CMD_GET_DRV_VER _IOR('H', 108, char[DRIVER_VERSION_LEN]) + +#define SSD_CMD_GET_BBACC_INFO _IOR('H', 109, struct ssd_acc_info) +#define SSD_CMD_GET_ECACC_INFO _IOR('H', 110, struct ssd_acc_info) + +#define SSD_CMD_GET_HW_INFO_EXT _IOR('H', 111, struct ssd_hw_info_extend) + +#define SSD_CMD_REG_READ _IOWR('H', 120, struct ssd_reg_op_info) +#define SSD_CMD_REG_WRITE _IOWR('H', 121, struct ssd_reg_op_info) + +#define SSD_CMD_SPI_READ _IOWR('H', 125, struct ssd_spi_op_info) +#define SSD_CMD_SPI_WRITE _IOWR('H', 126, struct ssd_spi_op_info) +#define SSD_CMD_SPI_ERASE _IOWR('H', 127, struct ssd_spi_op_info) + +#define SSD_CMD_I2C_READ _IOWR('H', 128, struct ssd_i2c_op_info) +#define SSD_CMD_I2C_WRITE _IOWR('H', 129, struct ssd_i2c_op_info) +#define SSD_CMD_I2C_WRITE_READ _IOWR('H', 130, struct ssd_i2c_op_info) + +#define SSD_CMD_SMBUS_SEND_BYTE _IOWR('H', 131, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_RECEIVE_BYTE _IOWR('H', 132, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_WRITE_BYTE _IOWR('H', 133, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_READ_BYTE _IOWR('H', 135, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_WRITE_WORD _IOWR('H', 136, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_READ_WORD _IOWR('H', 137, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_WRITE_BLOCK _IOWR('H', 138, struct ssd_smbus_op_info) +#define SSD_CMD_SMBUS_READ_BLOCK _IOWR('H', 139, struct ssd_smbus_op_info) + +#define SSD_CMD_BM_GET_VER _IOR('H', 140, uint16_t) +#define SSD_CMD_BM_GET_NR_CAP _IOR('H', 141, int) +#define SSD_CMD_BM_CAP_LEARNING _IOW('H', 142, int) +#define SSD_CMD_CAP_LEARN _IOR('H', 143, uint32_t) +#define SSD_CMD_GET_CAP_STATUS _IOR('H', 144, int) + +#define SSD_CMD_RAM_READ _IOWR('H', 150, struct ssd_ram_op_info) +#define SSD_CMD_RAM_WRITE _IOWR('H', 151, struct ssd_ram_op_info) + +#define SSD_CMD_NAND_READ_ID _IOR('H', 160, struct ssd_flash_op_info) +#define SSD_CMD_NAND_READ _IOWR('H', 161, struct ssd_flash_op_info) //with oob +#define SSD_CMD_NAND_WRITE _IOWR('H', 162, struct ssd_flash_op_info) +#define SSD_CMD_NAND_ERASE _IOWR('H', 163, struct ssd_flash_op_info) +#define SSD_CMD_NAND_READ_EXT _IOWR('H', 164, struct ssd_flash_op_info) //ingore EIO + +#define SSD_CMD_UPDATE_BBT _IOW('H', 180, struct ssd_flash_op_info) + +#define SSD_CMD_CLEAR_ALARM _IOW('H', 190, int) +#define SSD_CMD_SET_ALARM _IOW('H', 191, int) + +#define SSD_CMD_RESET _IOW('H', 200, int) +#define SSD_CMD_RELOAD_FW _IOW('H', 201, int) +#define SSD_CMD_UNLOAD_DEV _IOW('H', 202, int) +#define SSD_CMD_LOAD_DEV _IOW('H', 203, int) +#define SSD_CMD_UPDATE_VP _IOWR('H', 205, uint32_t) +#define SSD_CMD_FULL_RESET _IOW('H', 206, int) + +#define SSD_CMD_GET_NR_LOG _IOR('H', 220, uint32_t) +#define SSD_CMD_GET_LOG _IOR('H', 221, void *) +#define SSD_CMD_LOG_LEVEL _IOW('H', 222, int) + +#define SSD_CMD_OT_PROTECT _IOW('H', 223, int) +#define SSD_CMD_GET_OT_STATUS _IOR('H', 224, int) + +#define SSD_CMD_CLEAR_LOG _IOW('H', 230, int) +#define SSD_CMD_CLEAR_SMART _IOW('H', 231, int) + +#define SSD_CMD_SW_LOG _IOW('H', 232, struct ssd_sw_log_info) + +#define SSD_CMD_GET_LABEL _IOR('H', 235, struct ssd_label) +#define SSD_CMD_GET_VERSION _IOR('H', 236, struct ssd_version_info) +#define SSD_CMD_GET_TEMPERATURE _IOR('H', 237, int) +#define SSD_CMD_GET_BMSTATUS _IOR('H', 238, int) +#define SSD_CMD_GET_LABEL2 _IOR('H', 239, void *) + + +#define SSD_CMD_FLUSH _IOW('H', 240, int) +#define SSD_CMD_SAVE_MD _IOW('H', 241, int) + +#define SSD_CMD_SET_WMODE _IOW('H', 242, int) +#define SSD_CMD_GET_WMODE _IOR('H', 243, int) +#define SSD_CMD_GET_USER_WMODE _IOR('H', 244, int) + +#define SSD_CMD_DEBUG _IOW('H', 250, struct ssd_debug_info) +#define SSD_CMD_DRV_PARAM_INFO _IOR('H', 251, struct ssd_drv_param_info) + +#define SSD_CMD_CLEAR_WARNING _IOW('H', 260, int) + + +/* log */ +#define SSD_LOG_MAX_SZ 4096 +#define SSD_LOG_LEVEL SSD_LOG_LEVEL_NOTICE +#define SSD_DIF_WITH_OLD_LOG 0x3f + +enum ssd_log_data +{ + SSD_LOG_DATA_NONE = 0, + SSD_LOG_DATA_LOC, + SSD_LOG_DATA_HEX +}; + +typedef struct ssd_log_entry +{ + union { + struct { + uint32_t page:10; + uint32_t block:14; + uint32_t flash:8; + } loc; + struct { + uint32_t page:12; + uint32_t block:12; + uint32_t flash:8; + } loc1; + uint32_t val; + } data; + uint16_t event:10; + uint16_t mod:6; + uint16_t idx; +}__attribute__((packed))ssd_log_entry_t; + +typedef struct ssd_log +{ + uint64_t time:56; + uint64_t ctrl_idx:8; + ssd_log_entry_t le; +} __attribute__((packed)) ssd_log_t; + +typedef struct ssd_log_desc +{ + uint16_t event; + uint8_t level; + uint8_t data; + uint8_t sblock; + uint8_t spage; + char *desc; +} __attribute__((packed)) ssd_log_desc_t; + +#define SSD_LOG_SW_IDX 0xF +#define SSD_UNKNOWN_EVENT ((uint16_t)-1) +static struct ssd_log_desc ssd_log_desc[] = { + /* event, level, show flash, show block, show page, desc */ + {0x0, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_LOC, 0, 0, "Create BBT failure"}, //g3 + {0x1, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_LOC, 0, 0, "Read BBT failure"}, //g3 + {0x2, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Mark bad block"}, + {0x3, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Flush BBT failure"}, + {0x4, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0x7, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "No available blocks"}, + {0x8, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Bad EC header"}, + {0x9, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_LOC, 1, 0, "Bad VID header"}, //g3 + {0xa, SSD_LOG_LEVEL_INFO, SSD_LOG_DATA_LOC, 1, 0, "Wear leveling"}, + {0xb, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "WL read back failure"}, + {0x11, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Data recovery failure"}, // err + {0x20, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Init: scan mapping table failure"}, // err g3 + {0x21, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0x22, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0x23, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0x24, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Merge: read mapping page failure"}, + {0x25, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Merge: read back failure"}, + {0x26, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0x27, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_LOC, 1, 1, "Data corrupted for abnormal power down"}, //g3 + {0x28, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Merge: mapping page corrupted"}, + {0x29, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Init: no mapping page"}, + {0x2a, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: mapping pages incomplete"}, + {0x2b, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Read back failure after programming failure"}, // err + {0xf1, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Read failure without recovery"}, // err + {0xf2, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 0, 0, "No available blocks"}, // maybe err g3 + {0xf3, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 0, "Init: RAID incomplete"}, // err g3 + {0xf4, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0xf5, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read failure in moving data"}, + {0xf6, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Program failure"}, + {0xf7, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_LOC, 1, 1, "Init: RAID not complete"}, + {0xf8, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Init: data moving interrupted"}, + {0xfe, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Data inspection failure"}, + {0xff, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "IO: ECC failed"}, + + /* new */ + {0x2e, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 0, 0, "No available reserved blocks" }, // err + {0x30, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Init: PMT membership not found"}, + {0x31, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Init: PMT corrupted"}, + {0x32, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Init: PBT membership not found"}, + {0x33, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Init: PBT not found"}, + {0x34, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Init: PBT corrupted"}, + {0x35, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PMT page read failure"}, + {0x36, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PBT page read failure"}, + {0x37, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PBT backup page read failure"}, + {0x38, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PBMT read failure"}, + {0x39, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Init: PBMT scan failure"}, // err + {0x3a, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: first page read failure"}, + {0x3b, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Init: first page scan failure"}, // err + {0x3c, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Init: scan unclosed block failure"}, // err + {0x3d, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: write pointer mismatch"}, + {0x3e, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PMT recovery: PBMT read failure"}, + {0x3f, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Init: PMT recovery: PBMT scan failure"}, + {0x40, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "Init: PMT recovery: data page read failure"}, //err + {0x41, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PBT write pointer mismatch"}, + {0x42, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: PBT latest version corrupted"}, + {0x43, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 0, "Init: too many unclosed blocks"}, + {0x44, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Init: PDW block found"}, + {0x45, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "Init: more than one PDW block found"}, //err + {0x46, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Init: first page is blank or read failure"}, + {0x47, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Init: PDW block not found"}, + + {0x50, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 0, "Cache: hit error data"}, // err + {0x51, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 0, "Cache: read back failure"}, // err + {0x52, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Cache: unknown command"}, //? + {0x53, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_LOC, 1, 1, "GC/WL read back failure"}, // err + + {0x60, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "Erase failure"}, + + {0x70, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "LPA not matched"}, + {0x71, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "PBN not matched"}, + {0x72, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read retry failure"}, + {0x73, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Need raid recovery"}, + {0x74, SSD_LOG_LEVEL_INFO, SSD_LOG_DATA_LOC, 1, 1, "Need read retry"}, + {0x75, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read invalid data page"}, + {0x76, SSD_LOG_LEVEL_INFO, SSD_LOG_DATA_LOC, 1, 1, "ECC error, data in cache, PBN matched"}, + {0x77, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "ECC error, data in cache, PBN not matched"}, + {0x78, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "ECC error, data in flash, PBN not matched"}, + {0x79, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "ECC ok, data in cache, LPA not matched"}, + {0x7a, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "ECC ok, data in flash, LPA not matched"}, + {0x7b, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID data in cache, LPA not matched"}, + {0x7c, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID data in flash, LPA not matched"}, + {0x7d, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read data page status error"}, + {0x7e, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read blank page"}, + {0x7f, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Access flash timeout"}, + + {0x80, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "EC overflow"}, + {0x81, SSD_LOG_LEVEL_INFO, SSD_LOG_DATA_NONE, 0, 0, "Scrubbing completed"}, + {0x82, SSD_LOG_LEVEL_INFO, SSD_LOG_DATA_LOC, 1, 0, "Unstable block(too much bit flip)"}, + {0x83, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "GC: ram error"}, //? + {0x84, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "GC: one PBMT read failure"}, + + {0x88, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "GC: mark bad block"}, + {0x89, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 0, "GC: invalid page count error"}, // maybe err + {0x8a, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_NONE, 0, 0, "Warning: Bad Block close to limit"}, + {0x8b, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "Error: Bad Block over limit"}, + {0x8c, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_NONE, 0, 0, "Warning: P/E cycles close to limit"}, + {0x8d, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "Error: P/E cycles over limit"}, + + {0x90, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Warning: Over temperature"}, //90 + {0x91, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Temperature is OK"}, //80 + {0x92, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_NONE, 0, 0, "Battery fault"}, + {0x93, SSD_LOG_LEVEL_WARNING, SSD_LOG_DATA_NONE, 0, 0, "SEU fault"}, //err + {0x94, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "DDR error"}, //err + {0x95, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "Controller serdes error"}, //err + {0x96, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "Bridge serdes 1 error"}, //err + {0x97, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_NONE, 0, 0, "Bridge serdes 2 error"}, //err + {0x98, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "SEU fault (corrected)"}, //err + {0x99, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Battery is OK"}, + {0x9a, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Temperature close to limit"}, //85 + + {0x9b, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "SEU fault address (low)"}, + {0x9c, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "SEU fault address (high)"}, + {0x9d, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "I2C fault" }, + {0x9e, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "DDR single bit error" }, + {0x9f, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Board voltage fault" }, + + {0xa0, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "LPA not matched"}, + {0xa1, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Re-read data in cache"}, + {0xa2, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read blank page"}, + {0xa3, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: Read blank page"}, + {0xa4, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: new data in cache"}, + {0xa5, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: PBN not matched"}, + {0xa6, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Read data with error flag"}, + {0xa7, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: recoverd data with error flag"}, + {0xa8, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Blank page in cache, PBN matched"}, + {0xa9, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: Blank page in cache, PBN matched"}, + {0xaa, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 0, 0, "Flash init failure"}, + {0xab, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "Mapping table recovery failure"}, + {0xac, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_LOC, 1, 1, "RAID recovery: ECC failed"}, + {0xb0, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Warning: Temperature is 95 degrees C"}, + {0xb1, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Warning: Temperature is 100 degrees C"}, + + {0x300, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "CMD timeout"}, + {0x301, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Power on"}, + {0x302, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Power off"}, + {0x303, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Clear log"}, + {0x304, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Set capacity"}, + {0x305, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Clear data"}, + {0x306, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "BM safety status"}, + {0x307, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "I/O error"}, + {0x308, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "CMD error"}, + {0x309, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Set wmode"}, + {0x30a, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "DDR init failed" }, + {0x30b, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "PCIe link status" }, + {0x30c, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "Controller reset sync error" }, + {0x30d, SSD_LOG_LEVEL_ERR, SSD_LOG_DATA_HEX, 0, 0, "Clock fault" }, + {0x30e, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "FPGA voltage fault status" }, + {0x30f, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Set capacity finished"}, + {0x310, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Clear data finished"}, + {0x311, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Reset"}, + {0x312, SSD_LOG_LEVEL_WARNING,SSD_LOG_DATA_HEX, 0, 0, "CAP: voltage fault"}, + {0x313, SSD_LOG_LEVEL_WARNING,SSD_LOG_DATA_NONE, 0, 0, "CAP: learn fault"}, + {0x314, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "CAP status"}, + {0x315, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Board voltage fault status"}, + {0x316, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Inlet temperature is 55 degrees C"}, //55 + {0x317, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Inlet temperature is 50 degrees C"}, //50 + {0x318, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Flash over temperature"}, //70 + {0x319, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Info: Flash temperature is OK"}, //65 + {0x31a, SSD_LOG_LEVEL_WARNING,SSD_LOG_DATA_NONE, 0, 0, "CAP: short circuit"}, + {0x31b, SSD_LOG_LEVEL_WARNING,SSD_LOG_DATA_HEX, 0, 0, "Sensor fault"}, + {0x31c, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Erase all data"}, + {0x31d, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Erase all data finished"}, + {0x320, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "Temperature sensor event"}, + + {0x350, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Clear smart"}, + {0x351, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_NONE, 0, 0, "Clear warning"}, + + {SSD_UNKNOWN_EVENT, SSD_LOG_LEVEL_NOTICE, SSD_LOG_DATA_HEX, 0, 0, "unknown event"}, +}; +/* */ +#define SSD_LOG_OVER_TEMP 0x90 +#define SSD_LOG_NORMAL_TEMP 0x91 +#define SSD_LOG_WARN_TEMP 0x9a +#define SSD_LOG_SEU_FAULT 0x93 +#define SSD_LOG_SEU_FAULT1 0x98 +#define SSD_LOG_BATTERY_FAULT 0x92 +#define SSD_LOG_BATTERY_OK 0x99 +#define SSD_LOG_BOARD_VOLT_FAULT 0x9f + +/* software log */ +#define SSD_LOG_TIMEOUT 0x300 +#define SSD_LOG_POWER_ON 0x301 +#define SSD_LOG_POWER_OFF 0x302 +#define SSD_LOG_CLEAR_LOG 0x303 +#define SSD_LOG_SET_CAPACITY 0x304 +#define SSD_LOG_CLEAR_DATA 0x305 +#define SSD_LOG_BM_SFSTATUS 0x306 +#define SSD_LOG_EIO 0x307 +#define SSD_LOG_ECMD 0x308 +#define SSD_LOG_SET_WMODE 0x309 +#define SSD_LOG_DDR_INIT_ERR 0x30a +#define SSD_LOG_PCIE_LINK_STATUS 0x30b +#define SSD_LOG_CTRL_RST_SYNC 0x30c +#define SSD_LOG_CLK_FAULT 0x30d +#define SSD_LOG_VOLT_FAULT 0x30e +#define SSD_LOG_SET_CAPACITY_END 0x30F +#define SSD_LOG_CLEAR_DATA_END 0x310 +#define SSD_LOG_RESET 0x311 +#define SSD_LOG_CAP_VOLT_FAULT 0x312 +#define SSD_LOG_CAP_LEARN_FAULT 0x313 +#define SSD_LOG_CAP_STATUS 0x314 +#define SSD_LOG_VOLT_STATUS 0x315 +#define SSD_LOG_INLET_OVER_TEMP 0x316 +#define SSD_LOG_INLET_NORMAL_TEMP 0x317 +#define SSD_LOG_FLASH_OVER_TEMP 0x318 +#define SSD_LOG_FLASH_NORMAL_TEMP 0x319 +#define SSD_LOG_CAP_SHORT_CIRCUIT 0x31a +#define SSD_LOG_SENSOR_FAULT 0x31b +#define SSD_LOG_ERASE_ALL 0x31c +#define SSD_LOG_ERASE_ALL_END 0x31d +#define SSD_LOG_TEMP_SENSOR_EVENT 0x320 +#define SSD_LOG_CLEAR_SMART 0x350 +#define SSD_LOG_CLEAR_WARNING 0x351 + + +/* sw log fifo depth */ +#define SSD_LOG_FIFO_SZ 1024 + + +/* done queue */ +static DEFINE_PER_CPU(struct list_head, ssd_doneq); +static DEFINE_PER_CPU(struct tasklet_struct, ssd_tasklet); + + +/* unloading driver */ +static volatile int ssd_exiting = 0; + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) +static struct class_simple *ssd_class; +#else +static struct class *ssd_class; +#endif + +static int ssd_cmajor = SSD_CMAJOR; + +/* ssd block device major, minors */ +static int ssd_major = SSD_MAJOR; +static int ssd_major_sl = SSD_MAJOR_SL; +static int ssd_minors = SSD_MINORS; + +/* ssd device list */ +static struct list_head ssd_list; +static unsigned long ssd_index_bits[SSD_MAX_DEV / BITS_PER_LONG + 1]; +static unsigned long ssd_index_bits_sl[SSD_MAX_DEV / BITS_PER_LONG + 1]; +static atomic_t ssd_nr; + +/* module param */ +enum ssd_drv_mode +{ + SSD_DRV_MODE_STANDARD = 0, /* full */ + SSD_DRV_MODE_DEBUG = 2, /* debug */ + SSD_DRV_MODE_BASE /* base only */ +}; + +enum ssd_int_mode +{ + SSD_INT_LEGACY = 0, + SSD_INT_MSI, + SSD_INT_MSIX +}; + +#if (defined SSD_MSIX) +#define SSD_INT_MODE_DEFAULT SSD_INT_MSIX +#elif (defined SSD_MSI) +#define SSD_INT_MODE_DEFAULT SSD_INT_MSI +#else +/* auto select the defaut int mode according to the kernel version*/ +/* suse 11 sp1 irqbalance bug: use msi instead*/ +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) || (defined RHEL_MAJOR && RHEL_MAJOR >= 6) || (defined RHEL_MAJOR && RHEL_MAJOR == 5 && RHEL_MINOR >= 5)) +#define SSD_INT_MODE_DEFAULT SSD_INT_MSIX +#else +#define SSD_INT_MODE_DEFAULT SSD_INT_MSI +#endif +#endif + +static int mode = SSD_DRV_MODE_STANDARD; +static int status_mask = 0xFF; +static int int_mode = SSD_INT_MODE_DEFAULT; +static int threaded_irq = 0; +static int log_level = SSD_LOG_LEVEL_WARNING; +static int ot_protect = 1; +static int wmode = SSD_WMODE_DEFAULT; +static int finject = 0; + +module_param(mode, int, 0); +module_param(status_mask, int, 0); +module_param(int_mode, int, 0); +module_param(threaded_irq, int, 0); +module_param(log_level, int, 0); +module_param(ot_protect, int, 0); +module_param(wmode, int, 0); +module_param(finject, int, 0); + + +MODULE_PARM_DESC(mode, "driver mode, 0 - standard, 1 - debug, 2 - debug without IO, 3 - basic debug mode"); +MODULE_PARM_DESC(status_mask, "command status mask, 0 - without command error, 0xff - with command error"); +MODULE_PARM_DESC(int_mode, "preferred interrupt mode, 0 - legacy, 1 - msi, 2 - msix"); +MODULE_PARM_DESC(threaded_irq, "threaded irq, 0 - normal irq, 1 - threaded irq"); +MODULE_PARM_DESC(log_level, "log level to display, 0 - info and above, 1 - notice and above, 2 - warning and above, 3 - error only"); +MODULE_PARM_DESC(ot_protect, "over temperature protect, 0 - disable, 1 - enable"); +MODULE_PARM_DESC(wmode, "write mode, 0 - write buffer (with risk for the 6xx firmware), 1 - write buffer ex, 2 - write through, 3 - auto, 4 - default"); +MODULE_PARM_DESC(finject, "enable fault simulation, 0 - off, 1 - on, for debug purpose only"); + +// API adaption layer +static inline void ssd_bio_endio(struct bio *bio, int error) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,13,0)) + bio->bi_error = error; +#else + bio->bi_status = errno_to_blk_status(error); +#endif + bio_endio(bio); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + bio_endio(bio, error); +#else + bio_endio(bio, bio->bi_size, error); +#endif +} + +static inline int ssd_bio_has_discard(struct bio *bio) +{ +#ifndef SSD_TRIM + return 0; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) + return bio_op(bio) == REQ_OP_DISCARD; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) + return bio->bi_rw & REQ_DISCARD; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) + return bio_rw_flagged(bio, BIO_RW_DISCARD); +#else + return 0; +#endif +} + +static inline int ssd_bio_has_flush(struct bio *bio) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) + return bio_op(bio) == REQ_OP_FLUSH; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + return bio->bi_rw & REQ_FLUSH; +#else + return 0; +#endif +} + +static inline int ssd_bio_has_barrier_or_fua(struct bio * bio) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) + return bio->bi_opf & REQ_FUA; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + return bio->bi_rw & REQ_FUA; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) + return bio->bi_rw & REQ_HARDBARRIER; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) + return bio_rw_flagged(bio, BIO_RW_BARRIER); +#else + return bio_barrier(bio); +#endif +} + +#ifndef MODULE +static int __init ssd_drv_mode(char *str) +{ + mode = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_status_mask(char *str) +{ + status_mask = (int)simple_strtoul(str, NULL, 16); + + return 1; +} + +static int __init ssd_int_mode(char *str) +{ + int_mode = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_threaded_irq(char *str) +{ + threaded_irq = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_log_level(char *str) +{ + log_level = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_ot_protect(char *str) +{ + ot_protect = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_wmode(char *str) +{ + wmode = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +static int __init ssd_finject(char *str) +{ + finject = (int)simple_strtoul(str, NULL, 0); + + return 1; +} + +__setup(MODULE_NAME"_mode=", ssd_drv_mode); +__setup(MODULE_NAME"_status_mask=", ssd_status_mask); +__setup(MODULE_NAME"_int_mode=", ssd_int_mode); +__setup(MODULE_NAME"_threaded_irq=", ssd_threaded_irq); +__setup(MODULE_NAME"_log_level=", ssd_log_level); +__setup(MODULE_NAME"_ot_protect=", ssd_ot_protect); +__setup(MODULE_NAME"_wmode=", ssd_wmode); +__setup(MODULE_NAME"_finject=", ssd_finject); +#endif + + +#ifdef CONFIG_PROC_FS +#include +#include + +#define SSD_PROC_DIR MODULE_NAME +#define SSD_PROC_INFO "info" + +static struct proc_dir_entry *ssd_proc_dir = NULL; +static struct proc_dir_entry *ssd_proc_info = NULL; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)) +static int ssd_proc_read(char *page, char **start, + off_t off, int count, int *eof, void *data) +{ + struct ssd_device *dev = NULL; + struct ssd_device *n = NULL; + uint64_t size; + int idx; + int len = 0; + //char type; //xx + + if (ssd_exiting || off != 0) { + return 0; + } + + len += snprintf((page + len), (count - len), "Driver Version:\t%s\n", DRIVER_VERSION); + + list_for_each_entry_safe(dev, n, &ssd_list, list) { + idx = dev->idx + 1; + size = dev->hw_info.size ; + do_div(size, 1000000000); + + len += snprintf((page + len), (count - len), "\n"); + + len += snprintf((page + len), (count - len), "HIO %d Size:\t%uGB\n", idx, (uint32_t)size); + + len += snprintf((page + len), (count - len), "HIO %d Bridge FW VER:\t%03X\n", idx, dev->hw_info.bridge_ver); + if (dev->hw_info.ctrl_ver != 0) { + len += snprintf((page + len), (count - len), "HIO %d Controller FW VER:\t%03X\n", idx, dev->hw_info.ctrl_ver); + } + + len += snprintf((page + len), (count - len), "HIO %d PCB VER:\t.%c\n", idx, dev->hw_info.pcb_ver); + + if (dev->hw_info.upper_pcb_ver >= 'A') { + len += snprintf((page + len), (count - len), "HIO %d Upper PCB VER:\t.%c\n", idx, dev->hw_info.upper_pcb_ver); + } + + len += snprintf((page + len), (count - len), "HIO %d Device:\t%s\n", idx, dev->name); + } + + *eof = 1; + return len; +} + +#else + +static int ssd_proc_show(struct seq_file *m, void *v) +{ + struct ssd_device *dev = NULL; + struct ssd_device *n = NULL; + uint64_t size; + int idx; + + if (ssd_exiting) { + return 0; + } + + seq_printf(m, "Driver Version:\t%s\n", DRIVER_VERSION); + + list_for_each_entry_safe(dev, n, &ssd_list, list) { + idx = dev->idx + 1; + size = dev->hw_info.size ; + do_div(size, 1000000000); + + seq_printf(m, "\n"); + + seq_printf(m, "HIO %d Size:\t%uGB\n", idx, (uint32_t)size); + + seq_printf(m, "HIO %d Bridge FW VER:\t%03X\n", idx, dev->hw_info.bridge_ver); + if (dev->hw_info.ctrl_ver != 0) { + seq_printf(m, "HIO %d Controller FW VER:\t%03X\n", idx, dev->hw_info.ctrl_ver); + } + + seq_printf(m, "HIO %d PCB VER:\t.%c\n", idx, dev->hw_info.pcb_ver); + + if (dev->hw_info.upper_pcb_ver >= 'A') { + seq_printf(m, "HIO %d Upper PCB VER:\t.%c\n", idx, dev->hw_info.upper_pcb_ver); + } + + seq_printf(m, "HIO %d Device:\t%s\n", idx, dev->name); + } + + return 0; +} + +static int ssd_proc_open(struct inode *inode, struct file *file) +{ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,0)) + return single_open(file, ssd_proc_show, PDE(inode)->data); +#else + return single_open(file, ssd_proc_show, PDE_DATA(inode)); +#endif +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0)) +static const struct file_operations ssd_proc_fops = { + .open = ssd_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +#else +static const struct proc_ops ssd_proc_fops = { + .proc_open = ssd_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; +#endif +#endif + + +static void ssd_cleanup_proc(void) +{ + if (ssd_proc_info) { + remove_proc_entry(SSD_PROC_INFO, ssd_proc_dir); + ssd_proc_info = NULL; + } + if (ssd_proc_dir) { + remove_proc_entry(SSD_PROC_DIR, NULL); + ssd_proc_dir = NULL; + } +} +static int ssd_init_proc(void) +{ + ssd_proc_dir = proc_mkdir(SSD_PROC_DIR, NULL); + if (!ssd_proc_dir) + goto out_proc_mkdir; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)) + ssd_proc_info = create_proc_entry(SSD_PROC_INFO, S_IFREG | S_IRUGO | S_IWUSR, ssd_proc_dir); + if (!ssd_proc_info) + goto out_create_proc_entry; + + ssd_proc_info->read_proc = ssd_proc_read; + +/* kernel bug */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) + ssd_proc_info->owner = THIS_MODULE; +#endif +#else + ssd_proc_info = proc_create(SSD_PROC_INFO, 0600, ssd_proc_dir, &ssd_proc_fops); + if (!ssd_proc_info) + goto out_create_proc_entry; +#endif + + return 0; + +out_create_proc_entry: + remove_proc_entry(SSD_PROC_DIR, NULL); +out_proc_mkdir: + return -ENOMEM; +} + +#else +static void ssd_cleanup_proc(void) +{ + return; +} +static int ssd_init_proc(void) +{ + return 0; +} +#endif /* CONFIG_PROC_FS */ + +/* sysfs */ +static void ssd_unregister_sysfs(struct ssd_device *dev) +{ + return; +} + +static int ssd_register_sysfs(struct ssd_device *dev) +{ + return 0; +} + +static void ssd_cleanup_sysfs(void) +{ + return; +} + +static int ssd_init_sysfs(void) +{ + return 0; +} + +static inline void ssd_put_index(int slave, int index) +{ + unsigned long *index_bits = ssd_index_bits; + + if (slave) { + index_bits = ssd_index_bits_sl; + } + + if (test_and_clear_bit(index, index_bits)) { + atomic_dec(&ssd_nr); + } +} + +static inline int ssd_get_index(int slave) +{ + unsigned long *index_bits = ssd_index_bits; + int index; + + if (slave) { + index_bits = ssd_index_bits_sl; + } + +find_index: + if ((index = find_first_zero_bit(index_bits, SSD_MAX_DEV)) >= SSD_MAX_DEV) { + return -1; + } + + if (test_and_set_bit(index, index_bits)) { + goto find_index; + } + + atomic_inc(&ssd_nr); + + return index; +} + +static void ssd_cleanup_index(void) +{ + return; +} + +static int ssd_init_index(void) +{ + INIT_LIST_HEAD(&ssd_list); + atomic_set(&ssd_nr, 0); + memset(ssd_index_bits, 0, sizeof(ssd_index_bits)); + memset(ssd_index_bits_sl, 0, sizeof(ssd_index_bits_sl)); + + return 0; +} + +static void ssd_set_dev_name(char *name, size_t size, int idx) +{ + if(idx < SSD_ALPHABET_NUM) { + snprintf(name, size, "%c", 'a'+idx); + } else { + idx -= SSD_ALPHABET_NUM; + snprintf(name, size, "%c%c", 'a'+(idx/SSD_ALPHABET_NUM), 'a'+(idx%SSD_ALPHABET_NUM)); + } +} + +/* pci register r&w */ +static inline void ssd_reg_write(void *addr, uint64_t val) +{ + iowrite32((uint32_t)val, addr); + iowrite32((uint32_t)(val >> 32), addr + 4); + wmb(); +} + +static inline uint64_t ssd_reg_read(void *addr) +{ + uint64_t val; + uint32_t val_lo, val_hi; + + val_lo = ioread32(addr); + val_hi = ioread32(addr + 4); + + rmb(); + val = val_lo | ((uint64_t)val_hi << 32); + + return val; +} + + +#define ssd_reg32_write(addr, val) writel(val, addr) +#define ssd_reg32_read(addr) readl(addr) + +/* alarm led */ +static void ssd_clear_alarm(struct ssd_device *dev) +{ + uint32_t val; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_LED_REG); + + /* firmware control */ + val &= ~0x2; + + ssd_reg32_write(dev->ctrlp + SSD_LED_REG, val); +} + +static void ssd_set_alarm(struct ssd_device *dev) +{ + uint32_t val; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_LED_REG); + + /* light up */ + val &= ~0x1; + /* software control */ + val |= 0x2; + + ssd_reg32_write(dev->ctrlp + SSD_LED_REG, val); +} + +#define u32_swap(x) \ + ((uint32_t)( \ + (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \ + (((uint32_t)(x) & (uint32_t)0x0000ff00UL) << 8) | \ + (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >> 8) | \ + (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24))) + +#define u16_swap(x) \ + ((uint16_t)( \ + (((uint16_t)(x) & (uint16_t)0x00ff) << 8) | \ + (((uint16_t)(x) & (uint16_t)0xff00) >> 8) )) + + +#if 0 +/* No lock, for init only*/ +static int ssd_spi_read_id(struct ssd_device *dev, uint32_t *id) +{ + uint32_t val; + unsigned long st; + int ret = 0; + + if (!dev || !id) { + return -EINVAL; + } + + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_READ_ID); + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + + st = jiffies; + for (;;) { + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + if (val == 0x1000000) { + break; + } + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_ID); + *id = val; + +out: + return ret; +} +#endif + +/* spi access */ +static int ssd_init_spi(struct ssd_device *dev) +{ + uint32_t val; + unsigned long st; + int ret = 0; + + mutex_lock(&dev->spi_mutex); + st = jiffies; + for(;;) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_READ_STATUS); + + do { + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } while (val != 0x1000000); + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_STATUS); + if (!(val & 0x1)) { + break; + } + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + +out: + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (val & 0x1) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_CLSR); + } + } + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_DISABLE); + mutex_unlock(&dev->spi_mutex); + + ret = 0; + + return ret; +} + +static int ssd_spi_page_read(struct ssd_device *dev, void *buf, uint32_t off, uint32_t size) +{ + uint32_t val; + uint32_t rlen = 0; + unsigned long st; + int ret = 0; + + if (!dev || !buf) { + return -EINVAL; + } + + if ((off % sizeof(uint32_t)) != 0 || (size % sizeof(uint32_t)) != 0 || size == 0 || + ((uint64_t)off + (uint64_t)size) > dev->rom_info.size || size > dev->rom_info.page_size) { + return -EINVAL; + } + + mutex_lock(&dev->spi_mutex); + while (rlen < size) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD_HI, ((off + rlen) >> 24)); + wmb(); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, (((off + rlen) << 8) | SSD_SPI_CMD_READ)); + + (void)ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + (void)ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + (void)ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + (void)ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + + st = jiffies; + for (;;) { + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + if (val == 0x1000000) { + break; + } + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_RDATA); + *(uint32_t *)(buf + rlen)= u32_swap(val); + + rlen += sizeof(uint32_t); + } + +out: + mutex_unlock(&dev->spi_mutex); + return ret; +} + +static int ssd_spi_page_write(struct ssd_device *dev, void *buf, uint32_t off, uint32_t size) +{ + uint32_t val; + uint32_t wlen; + unsigned long st; + int i; + int ret = 0; + + if (!dev || !buf) { + return -EINVAL; + } + + if ((off % sizeof(uint32_t)) != 0 || (size % sizeof(uint32_t)) != 0 || size == 0 || + ((uint64_t)off + (uint64_t)size) > dev->rom_info.size || size > dev->rom_info.page_size || + (off / dev->rom_info.page_size) != ((off + size - 1) / dev->rom_info.page_size)) { + return -EINVAL; + } + + mutex_lock(&dev->spi_mutex); + + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_ENABLE); + + wlen = size / sizeof(uint32_t); + for (i=0; i<(int)wlen; i++) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_WDATA, u32_swap(*((uint32_t *)buf + i))); + } + + wmb(); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD_HI, (off >> 24)); + wmb(); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, ((off << 8) | SSD_SPI_CMD_PROGRAM)); + + udelay(1); + + st = jiffies; + for (;;) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_READ_STATUS); + do { + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } while (val != 0x1000000); + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_STATUS); + if (!(val & 0x1)) { + break; + } + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if ((val >> 6) & 0x1) { + ret = -EIO; + goto out; + } + } + +out: + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (val & 0x1) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_CLSR); + } + } + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_DISABLE); + + mutex_unlock(&dev->spi_mutex); + + return ret; +} + +static int ssd_spi_block_erase(struct ssd_device *dev, uint32_t off) +{ + uint32_t val; + unsigned long st; + int ret = 0; + + if (!dev) { + return -EINVAL; + } + + if ((off % dev->rom_info.block_size) != 0 || off >= dev->rom_info.size) { + return -EINVAL; + } + + mutex_lock(&dev->spi_mutex); + + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_ENABLE); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_ENABLE); + + wmb(); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD_HI, (off >> 24)); + wmb(); + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, ((off << 8) | SSD_SPI_CMD_ERASE)); + + st = jiffies; + for (;;) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_READ_STATUS); + + do { + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_READY); + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } while (val != 0x1000000); + + val = ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_STATUS); + if (!(val & 0x1)) { + break; + } + + if (time_after(jiffies, (st + SSD_SPI_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if ((val >> 5) & 0x1) { + ret = -EIO; + goto out; + } + } + +out: + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (val & 0x1) { + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_CLSR); + } + } + ssd_reg32_write(dev->ctrlp + SSD_SPI_REG_CMD, SSD_SPI_CMD_W_DISABLE); + + mutex_unlock(&dev->spi_mutex); + + return ret; +} + +static int ssd_spi_read(struct ssd_device *dev, void *buf, uint32_t off, uint32_t size) +{ + uint32_t len = 0; + uint32_t roff; + uint32_t rsize; + int ret = 0; + + if (!dev || !buf) { + return -EINVAL; + } + + if ((off % sizeof(uint32_t)) != 0 || (size % sizeof(uint32_t)) != 0 || size == 0 || + ((uint64_t)off + (uint64_t)size) > dev->rom_info.size) { + return -EINVAL; + } + + while (len < size) { + roff = (off + len) % dev->rom_info.page_size; + rsize = dev->rom_info.page_size - roff; + if ((size - len) < rsize) { + rsize = (size - len); + } + roff = off + len; + + ret = ssd_spi_page_read(dev, (buf + len), roff, rsize); + if (ret) { + goto out; + } + + len += rsize; + + cond_resched(); + } + +out: + return ret; +} + +static int ssd_spi_write(struct ssd_device *dev, void *buf, uint32_t off, uint32_t size) +{ + uint32_t len = 0; + uint32_t woff; + uint32_t wsize; + int ret = 0; + + if (!dev || !buf) { + return -EINVAL; + } + + if ((off % sizeof(uint32_t)) != 0 || (size % sizeof(uint32_t)) != 0 || size == 0 || + ((uint64_t)off + (uint64_t)size) > dev->rom_info.size) { + return -EINVAL; + } + + while (len < size) { + woff = (off + len) % dev->rom_info.page_size; + wsize = dev->rom_info.page_size - woff; + if ((size - len) < wsize) { + wsize = (size - len); + } + woff = off + len; + + ret = ssd_spi_page_write(dev, (buf + len), woff, wsize); + if (ret) { + goto out; + } + + len += wsize; + + cond_resched(); + } + +out: + return ret; +} + +static int ssd_spi_erase(struct ssd_device *dev, uint32_t off, uint32_t size) +{ + uint32_t len = 0; + uint32_t eoff; + int ret = 0; + + if (!dev) { + return -EINVAL; + } + + if (size == 0 || ((uint64_t)off + (uint64_t)size) > dev->rom_info.size || + (off % dev->rom_info.block_size) != 0 || (size % dev->rom_info.block_size) != 0) { + return -EINVAL; + } + + while (len < size) { + eoff = (off + len); + + ret = ssd_spi_block_erase(dev, eoff); + if (ret) { + goto out; + } + + len += dev->rom_info.block_size; + + cond_resched(); + } + +out: + return ret; +} + +/* i2c access */ +static uint32_t __ssd_i2c_reg32_read(void *addr) +{ + return ssd_reg32_read(addr); +} + +static void __ssd_i2c_reg32_write(void *addr, uint32_t val) +{ + ssd_reg32_write(addr, val); + ssd_reg32_read(addr); +} + +static int __ssd_i2c_clear(struct ssd_device *dev, uint8_t saddr) +{ + ssd_i2c_ctrl_t ctrl; + ssd_i2c_data_t data; + uint8_t status = 0; + int nr_data = 0; + unsigned long st; + int ret = 0; + +check_status: + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_STATUS_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + st = jiffies; + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + status = data.bits.rdata; + + if (!(status & 0x4)) { + /* clear read fifo data */ + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_DATA_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + st = jiffies; + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out; + } + cond_resched(); + } + + nr_data++; + if (nr_data <= SSD_I2C_MAX_DATA) { + goto check_status; + } else { + goto out_reset; + } + } + + if (status & 0x3) { + /* clear int */ + ctrl.bits.wdata = 0x04; + ctrl.bits.addr = SSD_I2C_CMD_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + } + + if (!(status & 0x8)) { +out_reset: + /* reset i2c controller */ + ctrl.bits.wdata = 0x0; + ctrl.bits.addr = SSD_I2C_RESET_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + } + +out: + return ret; +} + +static int ssd_i2c_write(struct ssd_device *dev, uint8_t saddr, uint8_t size, uint8_t *buf) +{ + ssd_i2c_ctrl_t ctrl; + ssd_i2c_data_t data; + uint8_t off = 0; + uint8_t status = 0; + unsigned long st; + int ret = 0; + + mutex_lock(&dev->i2c_mutex); + + ctrl.val = 0; + + /* slave addr */ + ctrl.bits.wdata = saddr; + ctrl.bits.addr = SSD_I2C_SADDR_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* data */ + while (off < size) { + ctrl.bits.wdata = buf[off]; + ctrl.bits.addr = SSD_I2C_DATA_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + off++; + } + + /* write */ + ctrl.bits.wdata = 0x01; + ctrl.bits.addr = SSD_I2C_CMD_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* wait */ + st = jiffies; + for (;;) { + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_STATUS_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + status = data.bits.rdata; + if (status & 0x1) { + break; + } + + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + if (!(status & 0x1)) { + ret = -1; + goto out_clear; + } + + /* busy ? */ + if (status & 0x20) { + ret = -2; + goto out_clear; + } + + /* ack ? */ + if (status & 0x10) { + ret = -3; + goto out_clear; + } + + /* clear */ +out_clear: + if (__ssd_i2c_clear(dev, saddr)) { + if (!ret) ret = -4; + } + + mutex_unlock(&dev->i2c_mutex); + + return ret; +} + +static int ssd_i2c_read(struct ssd_device *dev, uint8_t saddr, uint8_t size, uint8_t *buf) +{ + ssd_i2c_ctrl_t ctrl; + ssd_i2c_data_t data; + uint8_t off = 0; + uint8_t status = 0; + unsigned long st; + int ret = 0; + + mutex_lock(&dev->i2c_mutex); + + ctrl.val = 0; + + /* slave addr */ + ctrl.bits.wdata = saddr; + ctrl.bits.addr = SSD_I2C_SADDR_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* read len */ + ctrl.bits.wdata = size; + ctrl.bits.addr = SSD_I2C_LEN_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* read */ + ctrl.bits.wdata = 0x02; + ctrl.bits.addr = SSD_I2C_CMD_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* wait */ + st = jiffies; + for (;;) { + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_STATUS_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + status = data.bits.rdata; + if (status & 0x2) { + break; + } + + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + if (!(status & 0x2)) { + ret = -1; + goto out_clear; + } + + /* busy ? */ + if (status & 0x20) { + ret = -2; + goto out_clear; + } + + /* ack ? */ + if (status & 0x10) { + ret = -3; + goto out_clear; + } + + /* data */ + while (off < size) { + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_DATA_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + st = jiffies; + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + buf[off] = data.bits.rdata; + + off++; + } + + /* clear */ +out_clear: + if (__ssd_i2c_clear(dev, saddr)) { + if (!ret) ret = -4; + } + + mutex_unlock(&dev->i2c_mutex); + + return ret; +} + +static int ssd_i2c_write_read(struct ssd_device *dev, uint8_t saddr, uint8_t wsize, uint8_t *wbuf, uint8_t rsize, uint8_t *rbuf) +{ + ssd_i2c_ctrl_t ctrl; + ssd_i2c_data_t data; + uint8_t off = 0; + uint8_t status = 0; + unsigned long st; + int ret = 0; + + mutex_lock(&dev->i2c_mutex); + + ctrl.val = 0; + + /* slave addr */ + ctrl.bits.wdata = saddr; + ctrl.bits.addr = SSD_I2C_SADDR_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* data */ + off = 0; + while (off < wsize) { + ctrl.bits.wdata = wbuf[off]; + ctrl.bits.addr = SSD_I2C_DATA_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + off++; + } + + /* read len */ + ctrl.bits.wdata = rsize; + ctrl.bits.addr = SSD_I2C_LEN_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* write -> read */ + ctrl.bits.wdata = 0x03; + ctrl.bits.addr = SSD_I2C_CMD_REG; + ctrl.bits.rw = SSD_I2C_CTRL_WRITE; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + /* wait */ + st = jiffies; + for (;;) { + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_STATUS_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + status = data.bits.rdata; + if (status & 0x2) { + break; + } + + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + if (!(status & 0x2)) { + ret = -1; + goto out_clear; + } + + /* busy ? */ + if (status & 0x20) { + ret = -2; + goto out_clear; + } + + /* ack ? */ + if (status & 0x10) { + ret = -3; + goto out_clear; + } + + /* data */ + off = 0; + while (off < rsize) { + ctrl.bits.wdata = 0; + ctrl.bits.addr = SSD_I2C_DATA_REG; + ctrl.bits.rw = SSD_I2C_CTRL_READ; + __ssd_i2c_reg32_write(dev->ctrlp + SSD_I2C_CTRL_REG, ctrl.val); + + st = jiffies; + for (;;) { + data.val = __ssd_i2c_reg32_read(dev->ctrlp + SSD_I2C_RDATA_REG); + if (data.bits.valid == 0) { + break; + } + + /* retry */ + if (time_after(jiffies, (st + SSD_I2C_TIMEOUT))) { + ret = -ETIMEDOUT; + goto out_clear; + } + cond_resched(); + } + + rbuf[off] = data.bits.rdata; + + off++; + } + + /* clear */ +out_clear: + if (__ssd_i2c_clear(dev, saddr)) { + if (!ret) ret = -4; + } + mutex_unlock(&dev->i2c_mutex); + + return ret; +} + +static int ssd_smbus_send_byte(struct ssd_device *dev, uint8_t saddr, uint8_t *buf) +{ + int i = 0; + int ret = 0; + + for (;;) { + ret = ssd_i2c_write(dev, saddr, 1, buf); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_receive_byte(struct ssd_device *dev, uint8_t saddr, uint8_t *buf) +{ + int i = 0; + int ret = 0; + + for (;;) { + ret = ssd_i2c_read(dev, saddr, 1, buf); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_write_byte(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + memcpy((smb_data + 1), buf, 1); + + for (;;) { + ret = ssd_i2c_write(dev, saddr, 2, smb_data); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_read_byte(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + + for (;;) { + ret = ssd_i2c_write_read(dev, saddr, 1, smb_data, 1, buf); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_write_word(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + memcpy((smb_data + 1), buf, 2); + + for (;;) { + ret = ssd_i2c_write(dev, saddr, 3, smb_data); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_read_word(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + + for (;;) { + ret = ssd_i2c_write_read(dev, saddr, 1, smb_data, 2, buf); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_write_block(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t size, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + smb_data[1] = size; + memcpy((smb_data + 2), buf, size); + + for (;;) { + ret = ssd_i2c_write(dev, saddr, (2 + size), smb_data); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + + return ret; +} + +static int ssd_smbus_read_block(struct ssd_device *dev, uint8_t saddr, uint8_t cmd, uint8_t size, uint8_t *buf) +{ + uint8_t smb_data[SSD_SMBUS_DATA_MAX] = {0}; + uint8_t rsize; + int i = 0; + int ret = 0; + + smb_data[0] = cmd; + + for (;;) { + ret = ssd_i2c_write_read(dev, saddr, 1, smb_data, (SSD_SMBUS_BLOCK_MAX + 1), (smb_data + 1)); + if (!ret || -ETIMEDOUT == ret) { + break; + } + + i++; + if (i >= SSD_SMBUS_RETRY_MAX) { + break; + } + msleep(SSD_SMBUS_RETRY_INTERVAL); + } + if (ret) { + return ret; + } + + rsize = smb_data[1]; + + if (rsize > size ) { + rsize = size; + } + + memcpy(buf, (smb_data + 2), rsize); + + return 0; +} + + +static int ssd_gen_swlog(struct ssd_device *dev, uint16_t event, uint32_t data); + +/* sensor */ +static int ssd_init_lm75(struct ssd_device *dev, uint8_t saddr) +{ + uint8_t conf = 0; + int ret = 0; + + ret = ssd_smbus_read_byte(dev, saddr, SSD_LM75_REG_CONF, &conf); + if (ret) { + goto out; + } + + conf &= (uint8_t)(~1u); + + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM75_REG_CONF, &conf); + if (ret) { + goto out; + } + +out: + return ret; +} + +static int ssd_lm75_read(struct ssd_device *dev, uint8_t saddr, uint16_t *data) +{ + uint16_t val = 0; + int ret; + + ret = ssd_smbus_read_word(dev, saddr, SSD_LM75_REG_TEMP, (uint8_t *)&val); + if (ret) { + return ret; + } + + *data = u16_swap(val); + + return 0; +} + +static int ssd_init_lm80(struct ssd_device *dev, uint8_t saddr) +{ + uint8_t val; + uint8_t low, high; + int i; + int ret = 0; + + /* init */ + val = 0x80; + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_CONFIG, &val); + if (ret) { + goto out; + } + + /* 11-bit temp */ + val = 0x08; + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_RES, &val); + if (ret) { + goto out; + } + + /* set volt limit */ + for (i=0; ihw_info.nr_ctrl <= 1 && SSD_LM80_IN_1V2 == i) { + high = 0xFF; + low = 0; + } + + /* high limit */ + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_IN_MAX(i), &high); + if (ret) { + goto out; + } + + /* low limit*/ + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_IN_MIN(i), &low); + if (ret) { + goto out; + } + } + + /* set interrupt mask: allow volt in interrupt except cap in*/ + val = 0x81; + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_MASK1, &val); + if (ret) { + goto out; + } + + /* set interrupt mask: disable others */ + val = 0xFF; + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_MASK2, &val); + if (ret) { + goto out; + } + + /* start */ + val = 0x03; + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_CONFIG, &val); + if (ret) { + goto out; + } + +out: + return ret; +} + +static int ssd_lm80_enable_in(struct ssd_device *dev, uint8_t saddr, int idx) +{ + uint8_t val = 0; + int ret = 0; + + if (idx >= SSD_LM80_IN_NR || idx < 0) { + return -EINVAL; + } + + ret = ssd_smbus_read_byte(dev, saddr, SSD_LM80_REG_MASK1, &val); + if (ret) { + goto out; + } + + val &= ~(1UL << (uint32_t)idx); + + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_MASK1, &val); + if (ret) { + goto out; + } + +out: + return ret; +} + +static int ssd_lm80_disable_in(struct ssd_device *dev, uint8_t saddr, int idx) +{ + uint8_t val = 0; + int ret = 0; + + if (idx >= SSD_LM80_IN_NR || idx < 0) { + return -EINVAL; + } + + ret = ssd_smbus_read_byte(dev, saddr, SSD_LM80_REG_MASK1, &val); + if (ret) { + goto out; + } + + val |= (1UL << (uint32_t)idx); + + ret = ssd_smbus_write_byte(dev, saddr, SSD_LM80_REG_MASK1, &val); + if (ret) { + goto out; + } + +out: + return ret; +} + +static int ssd_lm80_read_temp(struct ssd_device *dev, uint8_t saddr, uint16_t *data) +{ + uint16_t val = 0; + int ret; + + ret = ssd_smbus_read_word(dev, saddr, SSD_LM80_REG_TEMP, (uint8_t *)&val); + if (ret) { + return ret; + } + + *data = u16_swap(val); + + return 0; +} +static int ssd_generate_sensor_fault_log(struct ssd_device *dev, uint16_t event, uint8_t addr,uint32_t ret) +{ + uint32_t data; + data = ((ret & 0xffff) << 16) | (addr << 8) | addr; + ssd_gen_swlog(dev,event,data); + return 0; +} +static int ssd_lm80_check_event(struct ssd_device *dev, uint8_t saddr) +{ + uint32_t volt; + uint16_t val = 0, status; + uint8_t alarm1 = 0, alarm2 = 0; + uint32_t low, high; + int i,j=0; + int ret = 0; + + /* read interrupt status to clear interrupt */ + ret = ssd_smbus_read_byte(dev, saddr, SSD_LM80_REG_ALARM1, &alarm1); + if (ret) { + goto out; + } + + ret = ssd_smbus_read_byte(dev, saddr, SSD_LM80_REG_ALARM2, &alarm2); + if (ret) { + goto out; + } + + status = (uint16_t)alarm1 | ((uint16_t)alarm2 << 8); + + /* parse inetrrupt status */ + for (i=0; i> (uint32_t)i) & 0x1)) { + if (test_and_clear_bit(SSD_HWMON_LM80(i), &dev->hwmon)) { + /* enable INx irq */ + ret = ssd_lm80_enable_in(dev, saddr, i); + if (ret) { + goto out; + } + } + + continue; + } + + /* disable INx irq */ + ret = ssd_lm80_disable_in(dev, saddr, i); + if (ret) { + goto out; + } + + if (test_and_set_bit(SSD_HWMON_LM80(i), &dev->hwmon)) { + continue; + } + + high = (uint32_t)ssd_lm80_limit[i].high * (uint32_t)10; + low = (uint32_t)ssd_lm80_limit[i].low * (uint32_t)10; + + for (j=0; j<3; j++) { + ret = ssd_smbus_read_word(dev, saddr, SSD_LM80_REG_IN(i), (uint8_t *)&val); + if (ret) { + goto out; + } + volt = SSD_LM80_CONVERT_VOLT(u16_swap(val)); + if ((volt>high) || (volt<=low)) { + if(j<2) { + msleep(SSD_LM80_CONV_INTERVAL); + } + } else { + break; + } + } + + if (j<3) { + continue; + } + + switch (i) { + case SSD_LM80_IN_CAP: { + if (0 == volt) { + ssd_gen_swlog(dev, SSD_LOG_CAP_SHORT_CIRCUIT, 0); + } else { + ssd_gen_swlog(dev, SSD_LOG_CAP_VOLT_FAULT, SSD_PL_CAP_VOLT(volt)); + } + break; + } + + case SSD_LM80_IN_1V2: + case SSD_LM80_IN_1V2a: + case SSD_LM80_IN_1V5: + case SSD_LM80_IN_1V8: { + ssd_gen_swlog(dev, SSD_LOG_VOLT_STATUS, SSD_VOLT_LOG_DATA(i, 0, volt)); + break; + } + case SSD_LM80_IN_FPGA_3V3: + case SSD_LM80_IN_3V3: { + ssd_gen_swlog(dev, SSD_LOG_VOLT_STATUS, SSD_VOLT_LOG_DATA(i, 0, SSD_LM80_3V3_VOLT(volt))); + break; + } + default: + break; + } + } + +out: + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, (uint32_t)saddr,ret); + } + } else { + test_and_clear_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon); + } + return ret; +} + + +static int ssd_init_sensor(struct ssd_device *dev) +{ + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + goto out; + } + + ret = ssd_init_lm75(dev, SSD_SENSOR_LM75_SADDRESS); + if (ret) { + hio_warn("%s: init lm75 failed\n", dev->name); + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM75), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM75_SADDRESS,ret); + } + goto out; + } + + if (dev->hw_info.pcb_ver >= 'B' || dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_HHHL) { + ret = ssd_init_lm80(dev, SSD_SENSOR_LM80_SADDRESS); + if (ret) { + hio_warn("%s: init lm80 failed\n", dev->name); + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +/* board volt */ +static int ssd_mon_boardvolt(struct ssd_device *dev) +{ + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + return 0; + } + + return ssd_lm80_check_event(dev, SSD_SENSOR_LM80_SADDRESS); +} + +/* temperature */ +static int ssd_mon_temp(struct ssd_device *dev) +{ + int cur; + uint16_t val = 0; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + return 0; + } + + /* inlet */ + ret = ssd_lm80_read_temp(dev, SSD_SENSOR_LM80_SADDRESS, &val); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_TEMP_SENSOR_EVENT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + test_and_clear_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon); + + cur = SSD_SENSOR_CONVERT_TEMP(val); + if (cur >= SSD_INLET_OT_TEMP) { + if (!test_and_set_bit(SSD_HWMON_TEMP(SSD_TEMP_INLET), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_INLET_OVER_TEMP, (uint32_t)cur); + } + } else if(cur < SSD_INLET_OT_HYST) { + if (test_and_clear_bit(SSD_HWMON_TEMP(SSD_TEMP_INLET), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_INLET_NORMAL_TEMP, (uint32_t)cur); + } + } + + /* flash */ + ret = ssd_lm75_read(dev, SSD_SENSOR_LM75_SADDRESS, &val); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM75), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_TEMP_SENSOR_EVENT, SSD_SENSOR_LM75_SADDRESS,ret); + } + goto out; + } + test_and_clear_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM75), &dev->hwmon); + + cur = SSD_SENSOR_CONVERT_TEMP(val); + if (cur >= SSD_FLASH_OT_TEMP) { + if (!test_and_set_bit(SSD_HWMON_TEMP(SSD_TEMP_FLASH), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_FLASH_OVER_TEMP, (uint32_t)cur); + } + } else if(cur < SSD_FLASH_OT_HYST) { + if (test_and_clear_bit(SSD_HWMON_TEMP(SSD_TEMP_FLASH), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_FLASH_NORMAL_TEMP, (uint32_t)cur); + } + } + +out: + return ret; +} + +/* cmd tag */ +static inline void ssd_put_tag(struct ssd_device *dev, int tag) +{ + test_and_clear_bit(tag, dev->tag_map); + wake_up(&dev->tag_wq); +} + +static inline int ssd_get_tag(struct ssd_device *dev, int wait) +{ + int tag; + +find_tag: + while ((tag = find_first_zero_bit(dev->tag_map, dev->hw_info.cmd_fifo_sz)) >= atomic_read(&dev->queue_depth)) { + DEFINE_WAIT(__wait); + + if (!wait) { + return -1; + } + + prepare_to_wait_exclusive(&dev->tag_wq, &__wait, TASK_UNINTERRUPTIBLE); + schedule(); + + finish_wait(&dev->tag_wq, &__wait); + } + + if (test_and_set_bit(tag, dev->tag_map)) { + goto find_tag; + } + + return tag; +} + +static void ssd_barrier_put_tag(struct ssd_device *dev, int tag) +{ + test_and_clear_bit(tag, dev->tag_map); +} + +static int ssd_barrier_get_tag(struct ssd_device *dev) +{ + int tag = 0; + + if (test_and_set_bit(tag, dev->tag_map)) { + return -1; + } + + return tag; +} + +static void ssd_barrier_end(struct ssd_device *dev) +{ + atomic_set(&dev->queue_depth, dev->hw_info.cmd_fifo_sz); + wake_up_all(&dev->tag_wq); + + mutex_unlock(&dev->barrier_mutex); +} + +static int ssd_barrier_start(struct ssd_device *dev) +{ + int i; + + mutex_lock(&dev->barrier_mutex); + + atomic_set(&dev->queue_depth, 0); + + for (i=0; itag_map, dev->hw_info.cmd_fifo_sz) >= dev->hw_info.cmd_fifo_sz) { + return 0; + } + + __set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(1); + } + + atomic_set(&dev->queue_depth, dev->hw_info.cmd_fifo_sz); + wake_up_all(&dev->tag_wq); + + mutex_unlock(&dev->barrier_mutex); + + return -EBUSY; +} + +static int ssd_busy(struct ssd_device *dev) +{ + if (find_first_bit(dev->tag_map, dev->hw_info.cmd_fifo_sz) >= dev->hw_info.cmd_fifo_sz) { + return 0; + } + + return 1; +} + +static int ssd_wait_io(struct ssd_device *dev) +{ + int i; + + for (i=0; itag_map, dev->hw_info.cmd_fifo_sz) >= dev->hw_info.cmd_fifo_sz) { + return 0; + } + + __set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(1); + } + + return -EBUSY; +} + +#if 0 +static int ssd_in_barrier(struct ssd_device *dev) +{ + return (0 == atomic_read(&dev->queue_depth)); +} +#endif + +static void ssd_cleanup_tag(struct ssd_device *dev) +{ + kfree(dev->tag_map); +} + +static int ssd_init_tag(struct ssd_device *dev) +{ + int nr_ulongs = ALIGN(dev->hw_info.cmd_fifo_sz, BITS_PER_LONG) / BITS_PER_LONG; + + mutex_init(&dev->barrier_mutex); + + atomic_set(&dev->queue_depth, dev->hw_info.cmd_fifo_sz); + + dev->tag_map = kmalloc(nr_ulongs * sizeof(unsigned long), GFP_ATOMIC); + if (!dev->tag_map) { + return -ENOMEM; + } + + memset(dev->tag_map, 0, nr_ulongs * sizeof(unsigned long)); + + init_waitqueue_head(&dev->tag_wq); + + return 0; +} + +/* io stat */ +static void ssd_end_io_acct(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = cmd->dev; + struct bio *bio = cmd->bio; + unsigned long dur = jiffies - cmd->start_time; + int rw = bio_data_dir(bio); +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)) +#else + unsigned long flag; +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) + bio_end_io_acct(bio, cmd->start_time); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) + struct hd_struct *part = disk_map_sector_rcu(dev->gd, bio_start(bio)); + generic_end_io_acct(dev->rq, rw, part, cmd->start_time); +#elif ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)) + int cpu = part_stat_lock(); + struct hd_struct *part = disk_map_sector_rcu(dev->gd, bio_start(bio)); + part_round_stats(cpu, part); + part_stat_add(cpu, part, ticks[rw], dur); + part_dec_in_flight(part, rw); + part_stat_unlock(); +#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) + int cpu = part_stat_lock(); + struct hd_struct *part = &dev->gd->part0; + part_round_stats(cpu, part); + part_stat_add(cpu, part, ticks[rw], dur); + + spin_lock_irqsave(&dev->in_flight_lock,flag); + part->in_flight[rw]--; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + part_stat_unlock(); + +#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,14)) + preempt_disable(); + disk_round_stats(dev->gd); + disk_stat_add(dev->gd, ticks[rw], dur); + + spin_lock_irqsave(&dev->in_flight_lock,flag); + dev->gd->in_flight--; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + preempt_enable(); + +#else + preempt_disable(); + disk_round_stats(dev->gd); + if (rw == WRITE) { + disk_stat_add(dev->gd, write_ticks, dur); + } else { + disk_stat_add(dev->gd, read_ticks, dur); + } + spin_lock_irqsave(&dev->in_flight_lock,flag); + dev->gd->in_flight--; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + preempt_enable(); + +#endif +} + +static void ssd_start_io_acct(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = cmd->dev; + struct bio *bio = cmd->bio; + int rw = bio_data_dir(bio); +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)) +#else + unsigned long flag; +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) + cmd->start_time = bio_start_io_acct(bio); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) + struct hd_struct *part = disk_map_sector_rcu(dev->gd, bio_start(bio)); + generic_start_io_acct(dev->rq, rw, bio_sectors(bio), part); + cmd->start_time = jiffies; +#elif ((LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)) + int cpu = part_stat_lock(); + struct hd_struct *part = disk_map_sector_rcu(dev->gd, bio_start(bio)); + part_round_stats(cpu, part); + part_stat_inc(cpu, part, ios[rw]); + part_stat_add(cpu, part, sectors[rw], bio_sectors(bio)); + part_inc_in_flight(part, rw); + part_stat_unlock(); + cmd->start_time = jiffies; +#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) + int cpu = part_stat_lock(); + struct hd_struct *part = &dev->gd->part0; + part_round_stats(cpu, part); + part_stat_inc(cpu, part, ios[rw]); + part_stat_add(cpu, part, sectors[rw], bio_sectors(bio)); + + spin_lock_irqsave(&dev->in_flight_lock,flag); + part->in_flight[rw]++; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + part_stat_unlock(); + cmd->start_time = jiffies; + +#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,14)) + preempt_disable(); + disk_round_stats(dev->gd); + disk_stat_inc(dev->gd, ios[rw]); + disk_stat_add(dev->gd, sectors[rw], bio_sectors(bio)); + + spin_lock_irqsave(&dev->in_flight_lock,flag); + dev->gd->in_flight++; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + preempt_enable(); + cmd->start_time = jiffies; +#else + preempt_disable(); + disk_round_stats(dev->gd); + if (rw == WRITE) { + disk_stat_inc(dev->gd, writes); + disk_stat_add(dev->gd, write_sectors, bio_sectors(bio)); + } else { + disk_stat_inc(dev->gd, reads); + disk_stat_add(dev->gd, read_sectors, bio_sectors(bio)); + } + + spin_lock_irqsave(&dev->in_flight_lock,flag); + dev->gd->in_flight++; + spin_unlock_irqrestore(&dev->in_flight_lock,flag); + + preempt_enable(); + cmd->start_time = jiffies; +#endif +} + +/* io */ +static void ssd_queue_bio(struct ssd_device *dev, struct bio *bio) +{ + spin_lock(&dev->sendq_lock); + ssd_blist_add(&dev->sendq, bio); + spin_unlock(&dev->sendq_lock); + + atomic_inc(&dev->in_sendq); + wake_up(&dev->send_waitq); +} + +static inline void ssd_end_request(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = cmd->dev; + struct bio *bio = cmd->bio; + int errors = cmd->errors; + int tag = cmd->tag; + + if (bio) { + if (!ssd_bio_has_discard(bio)) { + ssd_end_io_acct(cmd); + if (!cmd->flag) { + pci_unmap_sg(dev->pdev, cmd->sgl, cmd->nsegs, + bio_data_dir(bio) == READ ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); + } + } + + cmd->bio = NULL; + ssd_put_tag(dev, tag); + + if (SSD_INT_MSIX == dev->int_mode || tag < 16 || errors) { + ssd_bio_endio(bio, errors); + } else /* if (bio->bi_idx >= bio->bi_vcnt)*/ { + spin_lock(&dev->doneq_lock); + ssd_blist_add(&dev->doneq, bio); + spin_unlock(&dev->doneq_lock); + + atomic_inc(&dev->in_doneq); + wake_up(&dev->done_waitq); + } + } else { + if (cmd->waiting) { + complete(cmd->waiting); + } + } +} + +static void ssd_end_timeout_request(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = cmd->dev; + struct ssd_rw_msg *msg = (struct ssd_rw_msg *)cmd->msg; + int i; + + for (i=0; inr_queue; i++) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + disable_irq(dev->entry[i].vector); +#else + disable_irq(pci_irq_vector(dev->pdev, i)); +#endif + } + + atomic_inc(&dev->tocnt); + //if (cmd->bio) { + hio_err("%s: cmd timeout: tag %d fun %#x\n", dev->name, msg->tag, msg->fun); + cmd->errors = -ETIMEDOUT; + ssd_end_request(cmd); + //} + + for (i=0; inr_queue; i++) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + enable_irq(dev->entry[i].vector); +#else + enable_irq(pci_irq_vector(dev->pdev, i)); +#endif + } + + /* alarm led */ + ssd_set_alarm(dev); +} + +/* cmd timer */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) +static void ssd_cmd_add_timer(struct ssd_cmd *cmd, int timeout, void (*complt)(struct ssd_cmd *)) +#else +static void ssd_cmd_add_timer(struct ssd_cmd *cmd, int timeout, void (*complt)(struct timer_list *)) +#endif +{ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) + init_timer(&cmd->cmd_timer); + + cmd->cmd_timer.data = (unsigned long)cmd; + cmd->cmd_timer.function = (void (*)(unsigned long)) complt; +#else + timer_setup(&cmd->cmd_timer, complt, 0); +#endif + + cmd->cmd_timer.expires = jiffies + timeout; + add_timer(&cmd->cmd_timer); +} + +static int ssd_cmd_del_timer(struct ssd_cmd *cmd) +{ + return del_timer(&cmd->cmd_timer); +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) +static void ssd_add_timer(struct timer_list *timer, int timeout, void (*complt)(void *), void *data) +#else +static void ssd_add_timer(struct timer_list *timer, int timeout, void (*complt)(struct timer_list *), void *data) +#endif +{ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) + init_timer(timer); + + timer->data = (unsigned long)data; + timer->function = (void (*)(unsigned long)) complt; +#else + timer_setup(timer, complt, 0); +#endif + + timer->expires = jiffies + timeout; + add_timer(timer); +} + +static int ssd_del_timer(struct timer_list *timer) +{ + return del_timer(timer); +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) +static void ssd_cmd_timeout(struct ssd_cmd *cmd) +#else +static void ssd_cmd_timeout(struct timer_list *t) +#endif +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) + struct ssd_cmd *cmd = from_timer(cmd, t, cmd_timer); +#endif + struct ssd_device *dev = cmd->dev; + uint32_t msg = *(uint32_t *)cmd->msg; + + ssd_end_timeout_request(cmd); + + ssd_gen_swlog(dev, SSD_LOG_TIMEOUT, msg); +} + + +static void __ssd_done(unsigned long data) +{ + struct ssd_cmd *cmd; + LIST_HEAD(localq); + + local_irq_disable(); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)) + list_splice_init(&__get_cpu_var(ssd_doneq), &localq); +#else + list_splice_init(this_cpu_ptr(&ssd_doneq), &localq); +#endif + local_irq_enable(); + + while (!list_empty(&localq)) { + cmd = list_entry(localq.next, struct ssd_cmd, list); + list_del_init(&cmd->list); + + ssd_end_request(cmd); + } +} + +static void __ssd_done_db(unsigned long data) +{ + struct ssd_cmd *cmd; + struct ssd_device *dev; + struct bio *bio; + LIST_HEAD(localq); + + local_irq_disable(); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)) + list_splice_init(&__get_cpu_var(ssd_doneq), &localq); +#else + list_splice_init(this_cpu_ptr(&ssd_doneq), &localq); +#endif + local_irq_enable(); + + while (!list_empty(&localq)) { + cmd = list_entry(localq.next, struct ssd_cmd, list); + list_del_init(&cmd->list); + + dev = (struct ssd_device *)cmd->dev; + bio = cmd->bio; + + if (bio) { + sector_t off = dev->db_info.data.loc.off; + uint32_t len = dev->db_info.data.loc.len; + + switch (dev->db_info.type) { + case SSD_DEBUG_READ_ERR: + if (bio_data_dir(bio) == READ && + !((off + len) <= bio_start(bio) || off >= (bio_start(bio) + bio_sectors(bio)))) { + cmd->errors = -EIO; + } + break; + case SSD_DEBUG_WRITE_ERR: + if (bio_data_dir(bio) == WRITE && + !((off + len) <= bio_start(bio) || off >= (bio_start(bio) + bio_sectors(bio)))) { + cmd->errors = -EROFS; + } + break; + case SSD_DEBUG_RW_ERR: + if (!((off + len) <= bio_start(bio) || off >= (bio_start(bio) + bio_sectors(bio)))) { + if (bio_data_dir(bio) == READ) { + cmd->errors = -EIO; + } else { + cmd->errors = -EROFS; + } + } + break; + default: + break; + } + } + + ssd_end_request(cmd); + } +} + +static inline void ssd_done_bh(struct ssd_cmd *cmd) +{ + unsigned long flags = 0; + + if (unlikely(!ssd_cmd_del_timer(cmd))) { + struct ssd_device *dev = cmd->dev; + struct ssd_rw_msg *msg = (struct ssd_rw_msg *)cmd->msg; + hio_err("%s: unknown cmd: tag %d fun %#x\n", dev->name, msg->tag, msg->fun); + + /* alarm led */ + ssd_set_alarm(dev); + return; + } + + local_irq_save(flags); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)) + list_add_tail(&cmd->list, &__get_cpu_var(ssd_doneq)); + tasklet_hi_schedule(&__get_cpu_var(ssd_tasklet)); +#else + list_add_tail(&cmd->list, this_cpu_ptr(&ssd_doneq)); + tasklet_hi_schedule(this_cpu_ptr(&ssd_tasklet)); +#endif + local_irq_restore(flags); + + return; +} + +static inline void ssd_done(struct ssd_cmd *cmd) +{ + if (unlikely(!ssd_cmd_del_timer(cmd))) { + struct ssd_device *dev = cmd->dev; + struct ssd_rw_msg *msg = (struct ssd_rw_msg *)cmd->msg; + hio_err("%s: unknown cmd: tag %d fun %#x\n", dev->name, msg->tag, msg->fun); + + /* alarm led */ + ssd_set_alarm(dev); + return; + } + + ssd_end_request(cmd); + + return; +} + +static inline void ssd_dispatch_cmd(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = (struct ssd_device *)cmd->dev; + + ssd_cmd_add_timer(cmd, SSD_CMD_TIMEOUT, ssd_cmd_timeout); + + spin_lock(&dev->cmd_lock); + ssd_reg_write(dev->ctrlp + SSD_REQ_FIFO_REG, cmd->msg_dma); + spin_unlock(&dev->cmd_lock); +} + +static inline void ssd_send_cmd(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = (struct ssd_device *)cmd->dev; + + ssd_cmd_add_timer(cmd, SSD_CMD_TIMEOUT, ssd_cmd_timeout); + + ssd_reg32_write(dev->ctrlp + SSD_REQ_FIFO_REG, ((uint32_t)cmd->tag | ((uint32_t)cmd->nsegs << 16))); +} + +static inline void ssd_send_cmd_db(struct ssd_cmd *cmd) +{ + struct ssd_device *dev = (struct ssd_device *)cmd->dev; + struct bio *bio = cmd->bio; + + ssd_cmd_add_timer(cmd, SSD_CMD_TIMEOUT, ssd_cmd_timeout); + + if (bio) { + switch (dev->db_info.type) { + case SSD_DEBUG_READ_TO: + if (bio_data_dir(bio) == READ) { + return; + } + break; + case SSD_DEBUG_WRITE_TO: + if (bio_data_dir(bio) == WRITE) { + return; + } + break; + case SSD_DEBUG_RW_TO: + return; + break; + default: + break; + } + } + + ssd_reg32_write(dev->ctrlp + SSD_REQ_FIFO_REG, ((uint32_t)cmd->tag | ((uint32_t)cmd->nsegs << 16))); +} + + +/* fixed for BIOVEC_PHYS_MERGEABLE */ +#ifdef SSD_BIOVEC_PHYS_MERGEABLE_FIXED +#include +#include +#include + +static bool xen_biovec_phys_mergeable_fixed(const struct bio_vec *vec1, + const struct bio_vec *vec2) +{ + unsigned long mfn1 = pfn_to_mfn(page_to_pfn(vec1->bv_page)); + unsigned long mfn2 = pfn_to_mfn(page_to_pfn(vec2->bv_page)); + + return __BIOVEC_PHYS_MERGEABLE(vec1, vec2) && + ((mfn1 == mfn2) || ((mfn1+1) == mfn2)); +} + +#ifdef BIOVEC_PHYS_MERGEABLE +#undef BIOVEC_PHYS_MERGEABLE +#endif +#define BIOVEC_PHYS_MERGEABLE(vec1, vec2) \ + (__BIOVEC_PHYS_MERGEABLE(vec1, vec2) && \ + (!xen_domain() || xen_biovec_phys_mergeable_fixed(vec1, vec2))) + +#endif + +/* + * BIOVEC_PHYS_MERGEABLE not available from 4.20 onward, and it seems likely + * that all the merging that can be done has been done by the block core + * already. Just stub it out. + */ +#if (LINUX_VERSION_CODE > KERNEL_VERSION(4,20,0)) +# ifdef BIOVEC_PHYS_MERGEABLE +# undef BIOVEC_PHYS_MERGEABLE +# endif +# define BIOVEC_PHYS_MERGEABLE(vec1, vec2) (0) +#endif + +static inline int ssd_bio_map_sg(struct ssd_device *dev, struct bio *bio, struct scatterlist *sgl) +{ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + struct bio_vec *bvec, *bvprv = NULL; + struct scatterlist *sg = NULL; + int i = 0, nsegs = 0; + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23)) + sg_init_table(sgl, dev->hw_info.cmd_max_sg); +#endif + + /* + * for each segment in bio + */ + bio_for_each_segment(bvec, bio, i) { + if (bvprv && BIOVEC_PHYS_MERGEABLE(bvprv, bvec)) { + sg->length += bvec->bv_len; + } else { + if (unlikely(nsegs >= (int)dev->hw_info.cmd_max_sg)) { + break; + } + + sg = sg ? (sg + 1) : sgl; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + sg_set_page(sg, bvec->bv_page, bvec->bv_len, bvec->bv_offset); +#else + sg->page = bvec->bv_page; + sg->length = bvec->bv_len; + sg->offset = bvec->bv_offset; +#endif + nsegs++; + } + bvprv = bvec; + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + if (sg) { + sg_mark_end(sg); + } +#endif + + bio->bi_idx = i; + + return nsegs; +#else + struct bio_vec bvec, bvprv; + struct bvec_iter iter; + struct scatterlist *sg = NULL; + int nsegs = 0; + int first = 1; + + sg_init_table(sgl, dev->hw_info.cmd_max_sg); + + /* + * for each segment in bio + */ + bio_for_each_segment(bvec, bio, iter) { + if (!first && BIOVEC_PHYS_MERGEABLE(&bvprv, &bvec)) { + sg->length += bvec.bv_len; + } else { + if (unlikely(nsegs >= (int)dev->hw_info.cmd_max_sg)) { + break; + } + + sg = sg ? (sg + 1) : sgl; + + sg_set_page(sg, bvec.bv_page, bvec.bv_len, bvec.bv_offset); + + nsegs++; + first = 0; + } + bvprv = bvec; + } + + if (sg) { + sg_mark_end(sg); + } + + return nsegs; +#endif +} + + +static int __ssd_submit_pbio(struct ssd_device *dev, struct bio *bio, int wait) +{ + struct ssd_cmd *cmd; + struct ssd_rw_msg *msg; + struct ssd_sg_entry *sge; + sector_t block = bio_start(bio); + int tag; + int i; + + tag = ssd_get_tag(dev, wait); + if (tag < 0) { + return -EBUSY; + } + + cmd = &dev->cmd[tag]; + cmd->bio = bio; + cmd->flag = 1; + + msg = (struct ssd_rw_msg *)cmd->msg; + + if (ssd_bio_has_discard(bio)) { + unsigned int length = bio_sectors(bio); + + //printk(KERN_WARNING "%s: discard len %u, block %llu\n", dev->name, bio_sectors(bio), block); + msg->tag = tag; + msg->fun = SSD_FUNC_TRIM; + + sge = msg->sge; + for (i=0; i<(dev->hw_info.cmd_max_sg); i++) { + sge->block = block; + sge->length = (length >= dev->hw_info.sg_max_sec) ? dev->hw_info.sg_max_sec : length; + sge->buf = 0; + + block += sge->length; + length -= sge->length; + sge++; + + if (length <= 0) { + ++i; + break; + } + } + msg->nsegs = cmd->nsegs = i; + + dev->scmd(cmd); + return 0; + } + + //msg->nsegs = cmd->nsegs = ssd_bio_map_sg(dev, bio, sgl); + msg->nsegs = cmd->nsegs = bio->bi_vcnt; + + //xx + if (bio_data_dir(bio) == READ) { + msg->fun = SSD_FUNC_READ; + msg->flag = 0; + } else { + msg->fun = SSD_FUNC_WRITE; + msg->flag = dev->wmode; + } + + sge = msg->sge; + for (i=0; ibi_vcnt; i++) { + sge->block = block; + sge->length = bio->bi_io_vec[i].bv_len >> 9; + sge->buf = (uint64_t)((void *)bio->bi_io_vec[i].bv_page + bio->bi_io_vec[i].bv_offset); + + block += sge->length; + sge++; + } + + msg->tag = tag; + +#ifdef SSD_OT_PROTECT + if (unlikely(dev->ot_delay > 0 && dev->ot_protect != 0)) { + msleep_interruptible(dev->ot_delay); + } +#endif + + ssd_start_io_acct(cmd); + dev->scmd(cmd); + + return 0; +} + +static inline int ssd_submit_bio(struct ssd_device *dev, struct bio *bio, int wait) +{ + struct ssd_cmd *cmd; + struct ssd_rw_msg *msg; + struct ssd_sg_entry *sge; + struct scatterlist *sgl; + sector_t block = bio_start(bio); + int tag; + int i; + + tag = ssd_get_tag(dev, wait); + if (tag < 0) { + return -EBUSY; + } + + cmd = &dev->cmd[tag]; + cmd->bio = bio; + cmd->flag = 0; + + msg = (struct ssd_rw_msg *)cmd->msg; + + sgl = cmd->sgl; + + if (ssd_bio_has_discard(bio)) { + unsigned int length = bio_sectors(bio); + + //printk(KERN_WARNING "%s: discard len %u, block %llu\n", dev->name, bio_sectors(bio), block); + msg->tag = tag; + msg->fun = SSD_FUNC_TRIM; + + sge = msg->sge; + for (i=0; i<(dev->hw_info.cmd_max_sg); i++) { + sge->block = block; + sge->length = (length >= dev->hw_info.sg_max_sec) ? dev->hw_info.sg_max_sec : length; + sge->buf = 0; + + block += sge->length; + length -= sge->length; + sge++; + + if (length <= 0) { + ++i; + break; + } + } + msg->nsegs = cmd->nsegs = i; + + dev->scmd(cmd); + return 0; + } + + msg->nsegs = cmd->nsegs = ssd_bio_map_sg(dev, bio, sgl); + + //xx + if (bio_data_dir(bio) == READ) { + msg->fun = SSD_FUNC_READ; + msg->flag = 0; + pci_map_sg(dev->pdev, sgl, cmd->nsegs, PCI_DMA_FROMDEVICE); + } else { + msg->fun = SSD_FUNC_WRITE; + msg->flag = dev->wmode; + pci_map_sg(dev->pdev, sgl, cmd->nsegs, PCI_DMA_TODEVICE); + } + + sge = msg->sge; + for (i=0; insegs; i++) { + sge->block = block; + sge->length = sg_dma_len(sgl) >> 9; + sge->buf = sg_dma_address(sgl); + + block += sge->length; + sgl++; + sge++; + } + + msg->tag = tag; + +#ifdef SSD_OT_PROTECT + if (unlikely(dev->ot_delay > 0 && dev->ot_protect != 0)) { + msleep_interruptible(dev->ot_delay); + } +#endif + + ssd_start_io_acct(cmd); + dev->scmd(cmd); + + return 0; +} + +/* threads */ +static int ssd_done_thread(void *data) +{ + struct ssd_device *dev; + struct bio *bio; + struct bio *next; + + if (!data) { + return -EINVAL; + } + dev = data; + + current->flags |= PF_NOFREEZE; + //set_user_nice(current, -5); + + while (!kthread_should_stop()) { + wait_event_interruptible(dev->done_waitq, (atomic_read(&dev->in_doneq) || kthread_should_stop())); + + while (atomic_read(&dev->in_doneq)) { + if (threaded_irq) { + spin_lock(&dev->doneq_lock); + bio = ssd_blist_get(&dev->doneq); + spin_unlock(&dev->doneq_lock); + } else { + spin_lock_irq(&dev->doneq_lock); + bio = ssd_blist_get(&dev->doneq); + spin_unlock_irq(&dev->doneq_lock); + } + + while (bio) { + next = bio->bi_next; + bio->bi_next = NULL; + ssd_bio_endio(bio, 0); + atomic_dec(&dev->in_doneq); + bio = next; + } + + cond_resched(); + +#ifdef SSD_ESCAPE_IRQ + if (unlikely(smp_processor_id() == dev->irq_cpu)) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) + cpumask_var_t new_mask; + if (alloc_cpumask_var(&new_mask, GFP_ATOMIC)) { + cpumask_setall(new_mask); + cpumask_clear_cpu(dev->irq_cpu, new_mask); + set_cpus_allowed_ptr(current, new_mask); + free_cpumask_var(new_mask); + } +#else + cpumask_t new_mask; + cpus_setall(new_mask); + cpu_clear(dev->irq_cpu, new_mask); + set_cpus_allowed(current, new_mask); +#endif + } +#endif + } + } + return 0; +} + +static int ssd_send_thread(void *data) +{ + struct ssd_device *dev; + struct bio *bio; + struct bio *next; + + if (!data) { + return -EINVAL; + } + dev = data; + + current->flags |= PF_NOFREEZE; + //set_user_nice(current, -5); + + while (!kthread_should_stop()) { + wait_event_interruptible(dev->send_waitq, (atomic_read(&dev->in_sendq) || kthread_should_stop())); + + while (atomic_read(&dev->in_sendq)) { + spin_lock(&dev->sendq_lock); + bio = ssd_blist_get(&dev->sendq); + spin_unlock(&dev->sendq_lock); + + while (bio) { + next = bio->bi_next; + bio->bi_next = NULL; +#ifdef SSD_QUEUE_PBIO + if (test_and_clear_bit(BIO_SSD_PBIO, &bio->bi_flags)) { + __ssd_submit_pbio(dev, bio, 1); + } else { + ssd_submit_bio(dev, bio, 1); + } +#else + ssd_submit_bio(dev, bio, 1); +#endif + atomic_dec(&dev->in_sendq); + bio = next; + } + + cond_resched(); + +#ifdef SSD_ESCAPE_IRQ + if (unlikely(smp_processor_id() == dev->irq_cpu)) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) + cpumask_var_t new_mask; + if (alloc_cpumask_var(&new_mask, GFP_ATOMIC)) { + cpumask_setall(new_mask); + cpumask_clear_cpu(dev->irq_cpu, new_mask); + set_cpus_allowed_ptr(current, new_mask); + free_cpumask_var(new_mask); + } +#else + cpumask_t new_mask; + cpus_setall(new_mask); + cpu_clear(dev->irq_cpu, new_mask); + set_cpus_allowed(current, new_mask); +#endif + } +#endif + } + } + + return 0; +} + +static void ssd_cleanup_thread(struct ssd_device *dev) +{ + kthread_stop(dev->send_thread); + kthread_stop(dev->done_thread); +} + +static int ssd_init_thread(struct ssd_device *dev) +{ + int ret; + + atomic_set(&dev->in_doneq, 0); + atomic_set(&dev->in_sendq, 0); + + spin_lock_init(&dev->doneq_lock); + spin_lock_init(&dev->sendq_lock); + + ssd_blist_init(&dev->doneq); + ssd_blist_init(&dev->sendq); + + init_waitqueue_head(&dev->done_waitq); + init_waitqueue_head(&dev->send_waitq); + + dev->done_thread = kthread_run(ssd_done_thread, dev, "%s/d", dev->name); + if (IS_ERR(dev->done_thread)) { + ret = PTR_ERR(dev->done_thread); + goto out_done_thread; + } + + dev->send_thread = kthread_run(ssd_send_thread, dev, "%s/s", dev->name); + if (IS_ERR(dev->send_thread)) { + ret = PTR_ERR(dev->send_thread); + goto out_send_thread; + } + + return 0; + +out_send_thread: + kthread_stop(dev->done_thread); +out_done_thread: + return ret; +} + +/* dcmd pool */ +static void ssd_put_dcmd(struct ssd_dcmd *dcmd) +{ + struct ssd_device *dev = (struct ssd_device *)dcmd->dev; + + spin_lock(&dev->dcmd_lock); + list_add_tail(&dcmd->list, &dev->dcmd_list); + spin_unlock(&dev->dcmd_lock); +} + +static struct ssd_dcmd *ssd_get_dcmd(struct ssd_device *dev) +{ + struct ssd_dcmd *dcmd = NULL; + + spin_lock(&dev->dcmd_lock); + if (!list_empty(&dev->dcmd_list)) { + dcmd = list_entry(dev->dcmd_list.next, + struct ssd_dcmd, list); + list_del_init(&dcmd->list); + } + spin_unlock(&dev->dcmd_lock); + + return dcmd; +} + +static void ssd_cleanup_dcmd(struct ssd_device *dev) +{ + kfree(dev->dcmd); +} + +static int ssd_init_dcmd(struct ssd_device *dev) +{ + struct ssd_dcmd *dcmd; + int dcmd_sz = sizeof(struct ssd_dcmd)*dev->hw_info.cmd_fifo_sz; + int i; + + spin_lock_init(&dev->dcmd_lock); + INIT_LIST_HEAD(&dev->dcmd_list); + init_waitqueue_head(&dev->dcmd_wq); + + dev->dcmd = kmalloc(dcmd_sz, GFP_KERNEL); + if (!dev->dcmd) { + hio_warn("%s: can not alloc dcmd\n", dev->name); + goto out_alloc_dcmd; + } + memset(dev->dcmd, 0, dcmd_sz); + + for (i=0, dcmd=dev->dcmd; i<(int)dev->hw_info.cmd_fifo_sz; i++, dcmd++) { + dcmd->dev = dev; + INIT_LIST_HEAD(&dcmd->list); + list_add_tail(&dcmd->list, &dev->dcmd_list); + } + + return 0; + +out_alloc_dcmd: + return -ENOMEM; +} + +static void ssd_put_dmsg(void *msg) +{ + struct ssd_dcmd *dcmd = container_of(msg, struct ssd_dcmd, msg); + struct ssd_device *dev = (struct ssd_device *)dcmd->dev; + + memset(dcmd->msg, 0, SSD_DCMD_MAX_SZ); + ssd_put_dcmd(dcmd); + wake_up(&dev->dcmd_wq); +} + +static void *ssd_get_dmsg(struct ssd_device *dev) +{ + struct ssd_dcmd *dcmd = ssd_get_dcmd(dev); + + while (!dcmd) { + DEFINE_WAIT(wait); + prepare_to_wait_exclusive(&dev->dcmd_wq, &wait, TASK_UNINTERRUPTIBLE); + schedule(); + + dcmd = ssd_get_dcmd(dev); + + finish_wait(&dev->dcmd_wq, &wait); + } + return dcmd->msg; +} + +/* do direct cmd */ +static int ssd_do_request(struct ssd_device *dev, int rw, void *msg, int *done) +{ + DECLARE_COMPLETION(wait); + struct ssd_cmd *cmd; + int tag; + int ret = 0; + + tag = ssd_get_tag(dev, 1); + if (tag < 0) { + return -EBUSY; + } + + cmd = &dev->cmd[tag]; + cmd->nsegs = 1; + memcpy(cmd->msg, msg, SSD_DCMD_MAX_SZ); + ((struct ssd_rw_msg *)cmd->msg)->tag = tag; + + cmd->waiting = &wait; + + dev->scmd(cmd); + + wait_for_completion(cmd->waiting); + cmd->waiting = NULL; + + if (cmd->errors == -ETIMEDOUT) { + ret = cmd->errors; + } else if (cmd->errors) { + ret = -EIO; + } + + if (done != NULL) { + *done = cmd->nr_log; + } + ssd_put_tag(dev, cmd->tag); + + return ret; +} + +static int ssd_do_barrier_request(struct ssd_device *dev, int rw, void *msg, int *done) +{ + DECLARE_COMPLETION(wait); + struct ssd_cmd *cmd; + int tag; + int ret = 0; + + tag = ssd_barrier_get_tag(dev); + if (tag < 0) { + return -EBUSY; + } + + cmd = &dev->cmd[tag]; + cmd->nsegs = 1; + memcpy(cmd->msg, msg, SSD_DCMD_MAX_SZ); + ((struct ssd_rw_msg *)cmd->msg)->tag = tag; + + cmd->waiting = &wait; + + dev->scmd(cmd); + + wait_for_completion(cmd->waiting); + cmd->waiting = NULL; + + if (cmd->errors == -ETIMEDOUT) { + ret = cmd->errors; + } else if (cmd->errors) { + ret = -EIO; + } + + if (done != NULL) { + *done = cmd->nr_log; + } + ssd_barrier_put_tag(dev, cmd->tag); + + return ret; +} + +#ifdef SSD_OT_PROTECT +static void ssd_check_temperature(struct ssd_device *dev, int temp) +{ + uint64_t val; + uint32_t off; + int cur; + int i; + + if (mode != SSD_DRV_MODE_STANDARD) { + return; + } + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + } + + for (i=0; ihw_info.nr_ctrl; i++) { + off = SSD_CTRL_TEMP_REG0 + i * sizeof(uint64_t); + + val = ssd_reg_read(dev->ctrlp + off); + if (val == 0xffffffffffffffffull) { + continue; + } + + cur = (int)CUR_TEMP(val); + if (cur >= temp) { + if (!test_and_set_bit(SSD_HWMON_TEMP(SSD_TEMP_CTRL), &dev->hwmon)) { + if (dev->protocol_info.ver > SSD_PROTOCOL_V3 && dev->protocol_info.ver < SSD_PROTOCOL_V3_2_2) { + hio_warn("%s: Over temperature, please check the fans.\n", dev->name); + dev->ot_delay = SSD_OT_DELAY; + } + } + return; + } + } + + if (test_and_clear_bit(SSD_HWMON_TEMP(SSD_TEMP_CTRL), &dev->hwmon)) { + if (dev->protocol_info.ver > SSD_PROTOCOL_V3 && dev->protocol_info.ver < SSD_PROTOCOL_V3_2_2) { + hio_warn("%s: Temperature is OK.\n", dev->name); + dev->ot_delay = 0; + } + } +} +#endif + +static int ssd_get_ot_status(struct ssd_device *dev, int *status) +{ + uint32_t off; + uint32_t val; + int i; + + if (!dev || !status) { + return -EINVAL; + } + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2_2) { + for (i=0; ihw_info.nr_ctrl; i++) { + off = SSD_READ_OT_REG0 + (i * SSD_CTRL_REG_ZONE_SZ); + val = ssd_reg32_read(dev->ctrlp + off); + if ((val >> 22) & 0x1) { + *status = 1; + goto out; + } + + + off = SSD_WRITE_OT_REG0 + (i * SSD_CTRL_REG_ZONE_SZ); + val = ssd_reg32_read(dev->ctrlp + off); + if ((val >> 22) & 0x1) { + *status = 1; + goto out; + } + } + } else { + *status = !!dev->ot_delay; + } + +out: + return 0; +} + +static void ssd_set_ot_protect(struct ssd_device *dev, int protect) +{ + uint32_t off; + uint32_t val; + int i; + + mutex_lock(&dev->fw_mutex); + + dev->ot_protect = !!protect; + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2_2) { + for (i=0; ihw_info.nr_ctrl; i++) { + off = SSD_READ_OT_REG0 + (i * SSD_CTRL_REG_ZONE_SZ); + val = ssd_reg32_read(dev->ctrlp + off); + if (dev->ot_protect) { + val |= (1U << 21); + } else { + val &= ~(1U << 21); + } + ssd_reg32_write(dev->ctrlp + off, val); + + + off = SSD_WRITE_OT_REG0 + (i * SSD_CTRL_REG_ZONE_SZ); + val = ssd_reg32_read(dev->ctrlp + off); + if (dev->ot_protect) { + val |= (1U << 21); + } else { + val &= ~(1U << 21); + } + ssd_reg32_write(dev->ctrlp + off, val); + } + } + + mutex_unlock(&dev->fw_mutex); +} + +static int ssd_init_ot_protect(struct ssd_device *dev) +{ + ssd_set_ot_protect(dev, ot_protect); + +#ifdef SSD_OT_PROTECT + ssd_check_temperature(dev, SSD_OT_TEMP); +#endif + + return 0; +} + +/* log */ +static int ssd_read_log(struct ssd_device *dev, int ctrl_idx, void *buf, int *nr_log) +{ + struct ssd_log_op_msg *msg; + struct ssd_log_msg *lmsg; + dma_addr_t buf_dma; + size_t length = dev->hw_info.log_sz; + int ret = 0; + + if (ctrl_idx >= dev->hw_info.nr_ctrl) { + return -EINVAL; + } + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_FROMDEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map read DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + msg = (struct ssd_log_op_msg *)ssd_get_dmsg(dev); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + lmsg = (struct ssd_log_msg *)msg; + lmsg->fun = SSD_FUNC_READ_LOG; + lmsg->ctrl_idx = ctrl_idx; + lmsg->buf = buf_dma; + } else { + msg->fun = SSD_FUNC_READ_LOG; + msg->ctrl_idx = ctrl_idx; + msg->buf = buf_dma; + } + + ret = ssd_do_request(dev, READ, msg, nr_log); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_FROMDEVICE); + +out_dma_mapping: + return ret; +} + +#define SSD_LOG_PRINT_BUF_SZ 256 +static int ssd_parse_log(struct ssd_device *dev, struct ssd_log *log, int print) +{ + struct ssd_log_desc *log_desc = ssd_log_desc; + struct ssd_log_entry *le; + char *sn = NULL; + char print_buf[SSD_LOG_PRINT_BUF_SZ]; + int print_len; + + le = &log->le; + + /* find desc */ + while (log_desc->event != SSD_UNKNOWN_EVENT) { + if (log_desc->event == le->event) { + break; + } + log_desc++; + } + + if (!print) { + goto out; + } + + if (log_desc->level < log_level) { + goto out; + } + + /* parse */ + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + sn = dev->label.sn; + } else { + sn = dev->labelv3.barcode; + } + + print_len = snprintf(print_buf, SSD_LOG_PRINT_BUF_SZ, "%s (%s): <%#x>", dev->name, sn, le->event); + + if (log->ctrl_idx != SSD_LOG_SW_IDX) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " controller %d", log->ctrl_idx); + } + + switch (log_desc->data) { + case SSD_LOG_DATA_NONE: + break; + case SSD_LOG_DATA_LOC: + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " flash %d", le->data.loc.flash); + if (log_desc->sblock) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " block %d", le->data.loc.block); + } + if (log_desc->spage) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " page %d", le->data.loc.page); + } + } else { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " flash %d", le->data.loc1.flash); + if (log_desc->sblock) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " block %d", le->data.loc1.block); + } + if (log_desc->spage) { + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " page %d", le->data.loc1.page); + } + } + break; + case SSD_LOG_DATA_HEX: + print_len += snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), " info %#x", le->data.val); + break; + default: + break; + } + /*print_len += */snprintf((print_buf + print_len), (SSD_LOG_PRINT_BUF_SZ - print_len), ": %s", log_desc->desc); + + switch (log_desc->level) { + case SSD_LOG_LEVEL_INFO: + hio_info("%s\n", print_buf); + break; + case SSD_LOG_LEVEL_NOTICE: + hio_note("%s\n", print_buf); + break; + case SSD_LOG_LEVEL_WARNING: + hio_warn("%s\n", print_buf); + break; + case SSD_LOG_LEVEL_ERR: + hio_err("%s\n", print_buf); + //printk(KERN_ERR MODULE_NAME": some exception occurred, please check the data or refer to FAQ."); + break; + default: + hio_warn("%s\n", print_buf); + break; + } + +out: + return log_desc->level; +} + +static int ssd_bm_get_sfstatus(struct ssd_device *dev, uint16_t *status); +static int ssd_switch_wmode(struct ssd_device *dev, int wmode); + + +static int ssd_handle_event(struct ssd_device *dev, uint16_t event, int level) +{ + int ret = 0; + + switch (event) { + case SSD_LOG_OVER_TEMP: { +#ifdef SSD_OT_PROTECT + if (!test_and_set_bit(SSD_HWMON_TEMP(SSD_TEMP_CTRL), &dev->hwmon)) { + if (dev->protocol_info.ver > SSD_PROTOCOL_V3 && dev->protocol_info.ver < SSD_PROTOCOL_V3_2_2) { + hio_warn("%s: Over temperature, please check the fans.\n", dev->name); + dev->ot_delay = SSD_OT_DELAY; + } + } +#endif + break; + } + + case SSD_LOG_NORMAL_TEMP: { +#ifdef SSD_OT_PROTECT + /* need to check all controller's temperature */ + ssd_check_temperature(dev, SSD_OT_TEMP_HYST); +#endif + break; + } + + case SSD_LOG_BATTERY_FAULT: { + uint16_t sfstatus; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + if (!ssd_bm_get_sfstatus(dev, &sfstatus)) { + ssd_gen_swlog(dev, SSD_LOG_BM_SFSTATUS, sfstatus); + } + } + + if (!test_and_set_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ssd_switch_wmode(dev, dev->user_wmode); + } + break; + } + + case SSD_LOG_BATTERY_OK: { + if (test_and_clear_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ssd_switch_wmode(dev, dev->user_wmode); + } + break; + } + + case SSD_LOG_BOARD_VOLT_FAULT: { + ssd_mon_boardvolt(dev); + break; + } + + case SSD_LOG_CLEAR_LOG: { + /* update smart */ + memset(&dev->smart.log_info, 0, sizeof(struct ssd_log_info)); + break; + } + + case SSD_LOG_CAP_VOLT_FAULT: + case SSD_LOG_CAP_LEARN_FAULT: + case SSD_LOG_CAP_SHORT_CIRCUIT: { + if (!test_and_set_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ssd_switch_wmode(dev, dev->user_wmode); + } + break; + } + + default: + break; + } + + /* ssd event call */ + if (dev->event_call) { + dev->event_call(dev->gd, event, level); + + /* FIXME */ + if (SSD_LOG_CAP_VOLT_FAULT == event || SSD_LOG_CAP_LEARN_FAULT == event || SSD_LOG_CAP_SHORT_CIRCUIT == event) { + dev->event_call(dev->gd, SSD_LOG_BATTERY_FAULT, level); + } + } + + return ret; +} + +static int ssd_save_log(struct ssd_device *dev, struct ssd_log *log) +{ + uint32_t off, size; + void *internal_log; + int ret = 0; + + mutex_lock(&dev->internal_log_mutex); + + size = sizeof(struct ssd_log); + off = dev->internal_log.nr_log * size; + + if (off == dev->rom_info.log_sz) { + if (dev->internal_log.nr_log == dev->smart.log_info.nr_log) { + hio_warn("%s: internal log is full\n", dev->name); + } + goto out; + } + + internal_log = dev->internal_log.log + off; + memcpy(internal_log, log, size); + + if (dev->protocol_info.ver > SSD_PROTOCOL_V3) { + off += dev->rom_info.log_base; + + ret = ssd_spi_write(dev, log, off, size); + if (ret) { + goto out; + } + } + + dev->internal_log.nr_log++; + +out: + mutex_unlock(&dev->internal_log_mutex); + return ret; +} + +/** CRC table for the CRC-16. The poly is 0x8005 (x^16 + x^15 + x^2 + 1) */ +static unsigned short const crc16_table[256] = { + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 +}; + +static unsigned short crc16_byte(unsigned short crc, const unsigned char data) +{ + return (crc >> 8) ^ crc16_table[(crc ^ data) & 0xff]; +} +/** + * crc16 - compute the CRC-16 for the data buffer + * @crc: previous CRC value + * @buffer: data pointer + * @len: number of bytes in the buffer + * + * Returns the updated CRC value. + */ +static unsigned short crc16(unsigned short crc, unsigned char const *buffer, int len) +{ + while (len--) + crc = crc16_byte(crc, *buffer++); + return crc; +} + +static int ssd_save_swlog(struct ssd_device *dev, uint16_t event, uint32_t data) +{ + struct ssd_log log; + int level; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + memset(&log, 0, sizeof(struct ssd_log)); + + log.ctrl_idx = SSD_LOG_SW_IDX; + log.time = ktime_get_real_seconds(); + log.le.event = event; + log.le.data.val = data; + + log.le.mod = SSD_DIF_WITH_OLD_LOG; + log.le.idx = crc16(0,(const unsigned char *)&log,14); + level = ssd_parse_log(dev, &log, 0); + if (level >= SSD_LOG_LEVEL) { + ret = ssd_save_log(dev, &log); + } + + /* set alarm */ + if (SSD_LOG_LEVEL_ERR == level) { + ssd_set_alarm(dev); + } + + /* update smart */ + dev->smart.log_info.nr_log++; + dev->smart.log_info.stat[level]++; + + /* handle event */ + ssd_handle_event(dev, event, level); + + return ret; +} + +static int ssd_gen_swlog(struct ssd_device *dev, uint16_t event, uint32_t data) +{ + struct ssd_log_entry le; + int ret; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + /* slave port ? */ + if (dev->slave) { + return 0; + } + + memset(&le, 0, sizeof(struct ssd_log_entry)); + le.event = event; + le.data.val = data; + + ret = sfifo_put(&dev->log_fifo, &le); + if (ret) { + return ret; + } + + if (test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->log_work); + } + + return 0; +} + +static int ssd_do_swlog(struct ssd_device *dev) +{ + struct ssd_log_entry le; + int ret = 0; + + memset(&le, 0, sizeof(struct ssd_log_entry)); + while (!sfifo_get(&dev->log_fifo, &le)) { + ret = ssd_save_swlog(dev, le.event, le.data.val); + if (ret) { + break; + } + } + + return ret; +} + +static int __ssd_clear_log(struct ssd_device *dev) +{ + uint32_t off, length; + int ret; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + if (dev->internal_log.nr_log == 0) { + return 0; + } + + mutex_lock(&dev->internal_log_mutex); + + off = dev->rom_info.log_base; + length = dev->rom_info.log_sz; + + ret = ssd_spi_erase(dev, off, length); + if (ret) { + hio_warn("%s: log erase: failed\n", dev->name); + goto out; + } + + dev->internal_log.nr_log = 0; + +out: + mutex_unlock(&dev->internal_log_mutex); + return ret; +} + +static int ssd_clear_log(struct ssd_device *dev) +{ + int ret; + + ret = __ssd_clear_log(dev); + if(!ret) { + ssd_gen_swlog(dev, SSD_LOG_CLEAR_LOG, 0); + } + + return ret; +} + +static int ssd_do_log(struct ssd_device *dev, int ctrl_idx, void *buf) +{ + struct ssd_log_entry *le; + struct ssd_log log; + int nr_log = 0; + int level; + int ret = 0; + + ret = ssd_read_log(dev, ctrl_idx, buf, &nr_log); + if (ret) { + return ret; + } + + log.time = ktime_get_real_seconds(); + log.ctrl_idx = ctrl_idx; + + le = (ssd_log_entry_t *)buf; + while (nr_log > 0) { + memcpy(&log.le, le, sizeof(struct ssd_log_entry)); + + log.le.mod = SSD_DIF_WITH_OLD_LOG; + log.le.idx = crc16(0,(const unsigned char *)&log,14); + level = ssd_parse_log(dev, &log, 1); + if (level >= SSD_LOG_LEVEL) { + ssd_save_log(dev, &log); + } + + /* set alarm */ + if (SSD_LOG_LEVEL_ERR == level) { + ssd_set_alarm(dev); + } + + dev->smart.log_info.nr_log++; + if (SSD_LOG_SEU_FAULT != le->event && SSD_LOG_SEU_FAULT1 != le->event) { + dev->smart.log_info.stat[level]++; + } else { + /* SEU fault */ + + /* log to the volatile log info */ + dev->log_info.nr_log++; + dev->log_info.stat[level]++; + + /* do something */ + dev->reload_fw = 1; + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FLAG); + if (le->event != SSD_LOG_SEU_FAULT1) { + dev->has_non_0x98_reg_access = 1; + } + + /*dev->readonly = 1; + set_disk_ro(dev->gd, 1); + hio_warn("%s: switched to read-only mode.\n", dev->name);*/ + } + + /* handle event */ + ssd_handle_event(dev, le->event, level); + + le++; + nr_log--; + } + + return 0; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static void ssd_log_worker(void *data) +{ + struct ssd_device *dev = (struct ssd_device *)data; +#else +static void ssd_log_worker(struct work_struct *work) +{ + struct ssd_device *dev = container_of(work, struct ssd_device, log_work); +#endif + int i; + int ret; + + if (!test_bit(SSD_LOG_ERR, &dev->state) && test_bit(SSD_ONLINE, &dev->state)) { + /* alloc log buf */ + if (!dev->log_buf) { + dev->log_buf = kmalloc(dev->hw_info.log_sz, GFP_KERNEL); + if (!dev->log_buf) { + hio_warn("%s: ssd_log_worker: no mem\n", dev->name); + return; + } + } + + /* get log */ + if (test_and_clear_bit(SSD_LOG_HW, &dev->state)) { + for (i=0; ihw_info.nr_ctrl; i++) { + ret = ssd_do_log(dev, i, dev->log_buf); + if (ret) { + (void)test_and_set_bit(SSD_LOG_ERR, &dev->state); + hio_warn("%s: do log fail\n", dev->name); + } + } + } + } + + ret = ssd_do_swlog(dev); + if (ret) { + hio_warn("%s: do swlog fail\n", dev->name); + } +} + +static void ssd_cleanup_log(struct ssd_device *dev) +{ + if (dev->log_buf) { + kfree(dev->log_buf); + dev->log_buf = NULL; + } + + sfifo_free(&dev->log_fifo); + + if (dev->internal_log.log) { + vfree(dev->internal_log.log); + dev->internal_log.nr_log = 0; + dev->internal_log.log = NULL; + } +} + +static int ssd_init_log(struct ssd_device *dev) +{ + struct ssd_log *log; + uint32_t off, size; + uint32_t len = 0; + int ret = 0; + + mutex_init(&dev->internal_log_mutex); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + INIT_WORK(&dev->log_work, ssd_log_worker, dev); +#else + INIT_WORK(&dev->log_work, ssd_log_worker); +#endif + + off = dev->rom_info.log_base; + size = dev->rom_info.log_sz; + + dev->internal_log.nr_log = 0; + dev->internal_log.log = vmalloc(size); + if (!dev->internal_log.log) { + ret = -ENOMEM; + goto out_alloc_log; + } + + ret = sfifo_alloc(&dev->log_fifo, SSD_LOG_FIFO_SZ, sizeof(struct ssd_log_entry)); + if (ret < 0) { + goto out_alloc_log_fifo; + } + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + log = (struct ssd_log *)dev->internal_log.log; + while (len < size) { + ret = ssd_spi_read(dev, log, off, sizeof(struct ssd_log)); + if (ret) { + goto out_read_log; + } + + if (log->ctrl_idx == 0xff) { + break; + } + + if (log->le.event == SSD_LOG_POWER_ON) { + if (dev->internal_log.nr_log > dev->last_poweron_id) { + dev->last_poweron_id = dev->internal_log.nr_log; + } + } + + dev->internal_log.nr_log++; + log++; + len += sizeof(struct ssd_log); + off += sizeof(struct ssd_log); + } + + return 0; + +out_read_log: + sfifo_free(&dev->log_fifo); +out_alloc_log_fifo: + vfree(dev->internal_log.log); + dev->internal_log.log = NULL; + dev->internal_log.nr_log = 0; +out_alloc_log: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +/* work queue */ +static void ssd_stop_workq(struct ssd_device *dev) +{ + test_and_clear_bit(SSD_INIT_WORKQ, &dev->state); + flush_workqueue(dev->workq); +} + +static void ssd_start_workq(struct ssd_device *dev) +{ + (void)test_and_set_bit(SSD_INIT_WORKQ, &dev->state); + + /* log ? */ + queue_work(dev->workq, &dev->log_work); +} + +static void ssd_cleanup_workq(struct ssd_device *dev) +{ + flush_workqueue(dev->workq); + destroy_workqueue(dev->workq); + dev->workq = NULL; +} + +static int ssd_init_workq(struct ssd_device *dev) +{ + int ret = 0; + + dev->workq = create_singlethread_workqueue(dev->name); + if (!dev->workq) { + ret = -ESRCH; + goto out; + } + +out: + return ret; +} + +/* rom */ +static int ssd_init_rom_info(struct ssd_device *dev) +{ + uint32_t val; + + mutex_init(&dev->spi_mutex); + mutex_init(&dev->i2c_mutex); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + /* fix bug: read data to clear status */ + (void)ssd_reg32_read(dev->ctrlp + SSD_SPI_REG_RDATA); + + dev->rom_info.size = SSD_ROM_SIZE; + dev->rom_info.block_size = SSD_ROM_BLK_SIZE; + dev->rom_info.page_size = SSD_ROM_PAGE_SIZE; + + dev->rom_info.bridge_fw_base = SSD_ROM_BRIDGE_FW_BASE; + dev->rom_info.bridge_fw_sz = SSD_ROM_BRIDGE_FW_SIZE; + dev->rom_info.nr_bridge_fw = SSD_ROM_NR_BRIDGE_FW; + + dev->rom_info.ctrl_fw_base = SSD_ROM_CTRL_FW_BASE; + dev->rom_info.ctrl_fw_sz = SSD_ROM_CTRL_FW_SIZE; + dev->rom_info.nr_ctrl_fw = SSD_ROM_NR_CTRL_FW; + + dev->rom_info.log_sz = SSD_ROM_LOG_SZ; + + dev->rom_info.vp_base = SSD_ROM_VP_BASE; + dev->rom_info.label_base = SSD_ROM_LABEL_BASE; + } else if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_INFO_REG); + dev->rom_info.size = 0x100000 * (1U << (val & 0xFF)); + dev->rom_info.block_size = 0x10000 * (1U << ((val>>8) & 0xFF)); + dev->rom_info.page_size = (val>>16) & 0xFFFF; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_BRIDGE_FW_INFO_REG); + dev->rom_info.bridge_fw_base = dev->rom_info.block_size * (val & 0xFFFF); + dev->rom_info.bridge_fw_sz = dev->rom_info.block_size * ((val>>16) & 0x3FFF); + dev->rom_info.nr_bridge_fw = ((val >> 30) & 0x3) + 1; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_CTRL_FW_INFO_REG); + dev->rom_info.ctrl_fw_base = dev->rom_info.block_size * (val & 0xFFFF); + dev->rom_info.ctrl_fw_sz = dev->rom_info.block_size * ((val>>16) & 0x3FFF); + dev->rom_info.nr_ctrl_fw = ((val >> 30) & 0x3) + 1; + + dev->rom_info.bm_fw_base = dev->rom_info.ctrl_fw_base + (dev->rom_info.nr_ctrl_fw * dev->rom_info.ctrl_fw_sz); + dev->rom_info.bm_fw_sz = SSD_PV3_ROM_BM_FW_SZ; + dev->rom_info.nr_bm_fw = SSD_PV3_ROM_NR_BM_FW; + + dev->rom_info.log_base = dev->rom_info.bm_fw_base + (dev->rom_info.nr_bm_fw * dev->rom_info.bm_fw_sz); + dev->rom_info.log_sz = SSD_ROM_LOG_SZ; + + dev->rom_info.smart_base = dev->rom_info.log_base + dev->rom_info.log_sz; + dev->rom_info.smart_sz = SSD_PV3_ROM_SMART_SZ; + dev->rom_info.nr_smart = SSD_PV3_ROM_NR_SMART; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_VP_INFO_REG); + dev->rom_info.vp_base = dev->rom_info.block_size * val; + dev->rom_info.label_base = dev->rom_info.vp_base + dev->rom_info.block_size; + if (dev->rom_info.label_base >= dev->rom_info.size) { + dev->rom_info.label_base = dev->rom_info.vp_base - dev->rom_info.block_size; + } + } else { + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_INFO_REG); + dev->rom_info.size = 0x100000 * (1U << (val & 0xFF)); + dev->rom_info.block_size = 0x10000 * (1U << ((val>>8) & 0xFF)); + dev->rom_info.page_size = (val>>16) & 0xFFFF; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_BRIDGE_FW_INFO_REG); + dev->rom_info.bridge_fw_base = dev->rom_info.block_size * (val & 0xFFFF); + dev->rom_info.bridge_fw_sz = dev->rom_info.block_size * ((val>>16) & 0x3FFF); + dev->rom_info.nr_bridge_fw = ((val >> 30) & 0x3) + 1; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_CTRL_FW_INFO_REG); + dev->rom_info.ctrl_fw_base = dev->rom_info.block_size * (val & 0xFFFF); + dev->rom_info.ctrl_fw_sz = dev->rom_info.block_size * ((val>>16) & 0x3FFF); + dev->rom_info.nr_ctrl_fw = ((val >> 30) & 0x3) + 1; + + val = ssd_reg32_read(dev->ctrlp + SSD_ROM_VP_INFO_REG); + dev->rom_info.vp_base = dev->rom_info.block_size * val; + dev->rom_info.label_base = dev->rom_info.vp_base - SSD_PV3_2_ROM_SEC_SZ; + + dev->rom_info.nr_smart = SSD_PV3_ROM_NR_SMART; + dev->rom_info.smart_sz = SSD_PV3_2_ROM_SEC_SZ; + dev->rom_info.smart_base = dev->rom_info.label_base - (dev->rom_info.smart_sz * dev->rom_info.nr_smart); + if (dev->rom_info.smart_sz > dev->rom_info.block_size) { + dev->rom_info.smart_sz = dev->rom_info.block_size; + } + + dev->rom_info.log_sz = SSD_PV3_2_ROM_LOG_SZ; + dev->rom_info.log_base = dev->rom_info.smart_base - dev->rom_info.log_sz; + } + + return ssd_init_spi(dev); +} + +/* smart */ +static int ssd_update_smart(struct ssd_device *dev, struct ssd_smart *smart) +{ + uint64_t cur_time, run_time; +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) + struct hd_struct *part; + int cpu; +#endif + int i, j; + int ret = 0; + + if (!test_bit(SSD_INIT_BD, &dev->state)) { + return 0; + } + + cur_time = (uint64_t)ktime_get_real_seconds(); + if (cur_time < dev->uptime) { + run_time = 0; + } else { + run_time = cur_time - dev->uptime; + } + + /* avoid frequently update */ + if (run_time >= 60) { + ret = 1; + } + + /* io stat */ + smart->io_stat.run_time += run_time; + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,0,0)) + cpu = part_stat_lock(); + part = &dev->gd->part0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) + part_round_stats(dev->rq, cpu, part); +#else + part_round_stats(cpu, part); +#endif + part_stat_unlock(); +#endif + + smart->io_stat.nr_read += part_stat_read(part, ios[READ]); + smart->io_stat.nr_write += part_stat_read(part, ios[WRITE]); + smart->io_stat.rsectors += part_stat_read(part, sectors[READ]); + smart->io_stat.wsectors += part_stat_read(part, sectors[WRITE]); +#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,14)) + preempt_disable(); + disk_round_stats(dev->gd); + preempt_enable(); + + smart->io_stat.nr_read += disk_stat_read(dev->gd, ios[READ]); + smart->io_stat.nr_write += disk_stat_read(dev->gd, ios[WRITE]); + smart->io_stat.rsectors += disk_stat_read(dev->gd, sectors[READ]); + smart->io_stat.wsectors += disk_stat_read(dev->gd, sectors[WRITE]); +#else + preempt_disable(); + disk_round_stats(dev->gd); + preempt_enable(); + + smart->io_stat.nr_read += disk_stat_read(dev->gd, reads); + smart->io_stat.nr_write += disk_stat_read(dev->gd, writes); + smart->io_stat.rsectors += disk_stat_read(dev->gd, read_sectors); + smart->io_stat.wsectors += disk_stat_read(dev->gd, write_sectors); +#endif + + smart->io_stat.nr_to += atomic_read(&dev->tocnt); + + for (i=0; inr_queue; i++) { + smart->io_stat.nr_rwerr += dev->queue[i].io_stat.nr_rwerr; + smart->io_stat.nr_ioerr += dev->queue[i].io_stat.nr_ioerr; + } + + for (i=0; inr_queue; i++) { + for (j=0; jecc_info.bitflip[j] += dev->queue[i].ecc_info.bitflip[j]; + } + } + + //dev->uptime = tv.tv_sec; + + return ret; +} + +static int __ssd_clear_smart(struct ssd_device *dev) +{ + uint64_t sversion; + uint32_t off, length; + int i; + int ret; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + /* clear smart */ + off = dev->rom_info.smart_base; + length = dev->rom_info.smart_sz * dev->rom_info.nr_smart; + + ret = ssd_spi_erase(dev, off, length); + if (ret) { + hio_warn("%s: info erase: failed\n", dev->name); + goto out; + } + + sversion = dev->smart.version; + + memset(&dev->smart, 0, sizeof(struct ssd_smart)); + dev->smart.version = sversion + 1; + dev->smart.magic = SSD_SMART_MAGIC; + + /* clear all tmp acc */ + for (i=0; inr_queue; i++) { + memset(&(dev->queue[i].io_stat), 0, sizeof(struct ssd_io_stat)); + memset(&(dev->queue[i].ecc_info), 0, sizeof(struct ssd_ecc_info)); + } + + atomic_set(&dev->tocnt, 0); + + /* clear tmp log info */ + memset(&dev->log_info, 0, sizeof(struct ssd_log_info)); + + dev->uptime = (uint64_t)ktime_get_real_seconds(); + + /* clear alarm ? */ + //ssd_clear_alarm(dev); +out: + return ret; +} + +static int __ssd_clear_warning(struct ssd_device *dev) +{ + uint32_t off, size; + int i, ret = 0; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + /* clear log_info warning */ + memset(&dev->smart.log_info, 0, sizeof(dev->smart.log_info)); + + /* clear io_stat warning */ + dev->smart.io_stat.nr_to = 0; + dev->smart.io_stat.nr_rwerr = 0; + dev->smart.io_stat.nr_ioerr = 0; + + /* clear ecc_info warning */ + memset(&dev->smart.ecc_info, 0, sizeof(dev->smart.ecc_info)); + + /* clear queued warnings */ + for (i=0; inr_queue; i++) { + /* queued io_stat warning */ + dev->queue[i].io_stat.nr_to = 0; + dev->queue[i].io_stat.nr_rwerr = 0; + dev->queue[i].io_stat.nr_ioerr = 0; + + /* queued ecc_info warning */ + memset(&(dev->queue[i].ecc_info), 0, sizeof(dev->queue[i].ecc_info)); + } + + /* write smart back to nor */ + for (i = 0; i < dev->rom_info.nr_smart; i++) { + off = dev->rom_info.smart_base + (dev->rom_info.smart_sz * i); + size = dev->rom_info.smart_sz; + + ret = ssd_spi_erase(dev, off, size); + if (ret) { + hio_warn("%s: warning erase: failed with code 1\n", dev->name); + goto out; + } + + size = sizeof(struct ssd_smart); + + ret = ssd_spi_write(dev, &dev->smart, off, size); + if (ret) { + hio_warn("%s: warning erase: failed with code 2\n", dev->name); + goto out; + } + } + + dev->smart.version++; + + /* clear cmd timeout warning */ + atomic_set(&dev->tocnt, 0); + + /* clear tmp log info */ + memset(&dev->log_info, 0, sizeof(dev->log_info)); + +out: + return ret; +} + +static int ssd_clear_smart(struct ssd_device *dev) +{ + int ret; + + ret = __ssd_clear_smart(dev); + if(!ret) { + ssd_gen_swlog(dev, SSD_LOG_CLEAR_SMART, 0); + } + + return ret; +} + +static int ssd_clear_warning(struct ssd_device *dev) +{ + int ret; + + ret = __ssd_clear_warning(dev); + if(!ret) { + ssd_gen_swlog(dev, SSD_LOG_CLEAR_WARNING, 0); + } + + return ret; +} + +static int ssd_save_smart(struct ssd_device *dev) +{ + uint32_t off, size; + int i; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + if (!ssd_update_smart(dev, &dev->smart)) { + return 0; + } + + dev->smart.version++; + + for (i=0; irom_info.nr_smart; i++) { + off = dev->rom_info.smart_base + (dev->rom_info.smart_sz * i); + size = dev->rom_info.smart_sz; + + ret = ssd_spi_erase(dev, off, size); + if (ret) { + hio_warn("%s: info erase failed\n", dev->name); + goto out; + } + + size = sizeof(struct ssd_smart); + + ret = ssd_spi_write(dev, &dev->smart, off, size); + if (ret) { + hio_warn("%s: info write failed\n", dev->name); + goto out; + } + + //xx + } + +out: + return ret; +} + +static int ssd_init_smart(struct ssd_device *dev) +{ + struct ssd_smart *smart; + uint32_t off, size, val; + int i; + int ret = 0; + int update_smart = 0; + + dev->uptime = (uint64_t)ktime_get_real_seconds(); + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + smart = kmalloc(sizeof(struct ssd_smart) * SSD_ROM_NR_SMART_MAX, GFP_KERNEL); + if (!smart) { + ret = -ENOMEM; + goto out_nomem; + } + + memset(&dev->smart, 0, sizeof(struct ssd_smart)); + + /* read smart */ + for (i=0; irom_info.nr_smart; i++) { + memset(&smart[i], 0, sizeof(struct ssd_smart)); + + off = dev->rom_info.smart_base + (dev->rom_info.smart_sz * i); + size = sizeof(struct ssd_smart); + + ret = ssd_spi_read(dev, &smart[i], off, size); + if (ret) { + hio_warn("%s: info read failed\n", dev->name); + goto out; + } + + if (smart[i].magic != SSD_SMART_MAGIC) { + smart[i].magic = 0; + smart[i].version = 0; + continue; + } + + if (smart[i].version > dev->smart.version) { + memcpy(&dev->smart, &smart[i], sizeof(struct ssd_smart)); + } + } + + if (dev->smart.magic != SSD_SMART_MAGIC) { + /* first time power up */ + dev->smart.magic = SSD_SMART_MAGIC; + dev->smart.version = 1; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_INTR_INTERVAL_REG); + if (!val) { + dev->last_poweron_id = ~0; + ssd_gen_swlog(dev, SSD_LOG_POWER_ON, dev->hw_info.bridge_ver); + if (dev->smart.io_stat.nr_to) { + dev->smart.io_stat.nr_to = 0; + update_smart = 1; + } + } + + /* check log info */ + { + struct ssd_log_info log_info; + struct ssd_log *log = (struct ssd_log *)dev->internal_log.log; + + memset(&log_info, 0, sizeof(struct ssd_log_info)); + + while (log_info.nr_log < dev->internal_log.nr_log) { + int skip = 0; + + switch (log->le.event) { + /* skip the volatile log info */ + case SSD_LOG_SEU_FAULT: + case SSD_LOG_SEU_FAULT1: + skip = 1; + break; + case SSD_LOG_TIMEOUT: + skip = (dev->last_poweron_id >= log_info.nr_log); + break; + } + + if (!skip) { + log_info.stat[ssd_parse_log(dev, log, 0)]++; + } + + log_info.nr_log++; + log++; + } + + /* check */ + for (i=(SSD_LOG_NR_LEVEL-1); i>=0; i--) { + if (log_info.stat[i] != dev->smart.log_info.stat[i]) { + /* unclean */ + memcpy(&dev->smart.log_info, &log_info, sizeof(struct ssd_log_info)); + update_smart = 1; + break; + } + } + + if (update_smart) { + ++dev->smart.version; + } + } + + for (i=0; irom_info.nr_smart; i++) { + if (smart[i].magic == SSD_SMART_MAGIC && smart[i].version == dev->smart.version) { + continue; + } + + off = dev->rom_info.smart_base + (dev->rom_info.smart_sz * i); + size = dev->rom_info.smart_sz; + + ret = ssd_spi_erase(dev, off, size); + if (ret) { + hio_warn("%s: info erase failed\n", dev->name); + goto out; + } + + size = sizeof(struct ssd_smart); + ret = ssd_spi_write(dev, &dev->smart, off, size); + if (ret) { + hio_warn("%s: info write failed\n", dev->name); + goto out; + } + + //xx + } + + /* sync smart with alarm led */ + if (dev->smart.io_stat.nr_to || dev->smart.io_stat.nr_rwerr || dev->smart.log_info.stat[SSD_LOG_LEVEL_ERR]) { + hio_warn("%s: some fault found in the history info\n", dev->name); + ssd_set_alarm(dev); + } + +out: + kfree(smart); +out_nomem: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +/* bm */ +static int __ssd_bm_get_version(struct ssd_device *dev, uint16_t *ver) +{ + struct ssd_bm_manufacturer_data bm_md = {0}; + uint16_t sc_id = SSD_BM_SYSTEM_DATA_SUBCLASS_ID; + uint8_t cmd; + int ret = 0; + + if (!dev || !ver) { + return -EINVAL; + } + + mutex_lock(&dev->bm_mutex); + + cmd = SSD_BM_DATA_FLASH_SUBCLASS_ID; + ret = ssd_smbus_write_word(dev, SSD_BM_SLAVE_ADDRESS, cmd, (uint8_t *)&sc_id); + if (ret) { + goto out; + } + + cmd = SSD_BM_DATA_FLASH_SUBCLASS_ID_PAGE1; + ret = ssd_smbus_read_block(dev, SSD_BM_SLAVE_ADDRESS, cmd, sizeof(struct ssd_bm_manufacturer_data), (uint8_t *)&bm_md); + if (ret) { + goto out; + } + + if (bm_md.firmware_ver & 0xF000) { + ret = -EIO; + goto out; + } + + *ver = bm_md.firmware_ver; + +out: + mutex_unlock(&dev->bm_mutex); + return ret; +} + +static int ssd_bm_get_version(struct ssd_device *dev, uint16_t *ver) +{ + uint16_t tmp = 0; + int i = SSD_BM_RETRY_MAX; + int ret = 0; + + while (i-- > 0) { + ret = __ssd_bm_get_version(dev, &tmp); + if (!ret) { + break; + } + } + if (ret) { + return ret; + } + + *ver = tmp; + + return 0; +} + +static int __ssd_bm_nr_cap(struct ssd_device *dev, int *nr_cap) +{ + struct ssd_bm_configuration_registers bm_cr; + uint16_t sc_id = SSD_BM_CONFIGURATION_REGISTERS_ID; + uint8_t cmd; + int ret; + + mutex_lock(&dev->bm_mutex); + + cmd = SSD_BM_DATA_FLASH_SUBCLASS_ID; + ret = ssd_smbus_write_word(dev, SSD_BM_SLAVE_ADDRESS, cmd, (uint8_t *)&sc_id); + if (ret) { + goto out; + } + + cmd = SSD_BM_DATA_FLASH_SUBCLASS_ID_PAGE1; + ret = ssd_smbus_read_block(dev, SSD_BM_SLAVE_ADDRESS, cmd, sizeof(struct ssd_bm_configuration_registers), (uint8_t *)&bm_cr); + if (ret) { + goto out; + } + + if (bm_cr.operation_cfg.cc == 0 || bm_cr.operation_cfg.cc > 4) { + ret = -EIO; + goto out; + } + + *nr_cap = bm_cr.operation_cfg.cc + 1; + +out: + mutex_unlock(&dev->bm_mutex); + return ret; +} + +static int ssd_bm_nr_cap(struct ssd_device *dev, int *nr_cap) +{ + int tmp = 0; + int i = SSD_BM_RETRY_MAX; + int ret = 0; + + while (i-- > 0) { + ret = __ssd_bm_nr_cap(dev, &tmp); + if (!ret) { + break; + } + } + if (ret) { + return ret; + } + + *nr_cap = tmp; + + return 0; +} + +static int ssd_bm_enter_cap_learning(struct ssd_device *dev) +{ + uint16_t buf = SSD_BM_ENTER_CAP_LEARNING; + uint8_t cmd = SSD_BM_MANUFACTURERACCESS; + int ret; + + ret = ssd_smbus_write_word(dev, SSD_BM_SLAVE_ADDRESS, cmd, (uint8_t *)&buf); + if (ret) { + goto out; + } + +out: + return ret; +} + +static int ssd_bm_get_sfstatus(struct ssd_device *dev, uint16_t *status) +{ + uint16_t val = 0; + uint8_t cmd = SSD_BM_SAFETYSTATUS; + int ret; + + ret = ssd_smbus_read_word(dev, SSD_BM_SLAVE_ADDRESS, cmd, (uint8_t *)&val); + if (ret) { + goto out; + } + + *status = val; +out: + return ret; +} + +static int ssd_bm_get_opstatus(struct ssd_device *dev, uint16_t *status) +{ + uint16_t val = 0; + uint8_t cmd = SSD_BM_OPERATIONSTATUS; + int ret; + + ret = ssd_smbus_read_word(dev, SSD_BM_SLAVE_ADDRESS, cmd, (uint8_t *)&val); + if (ret) { + goto out; + } + + *status = val; +out: + return ret; +} + +static int ssd_get_bmstruct(struct ssd_device *dev, struct ssd_bm *bm_status_out) +{ + struct sbs_cmd *bm_sbs = ssd_bm_sbs; + struct ssd_bm bm_status; + uint8_t buf[2] = {0, }; + uint16_t val = 0; + uint16_t cval; + int ret = 0; + + memset(&bm_status, 0, sizeof(struct ssd_bm)); + + while (bm_sbs->desc != NULL) { + switch (bm_sbs->size) { + case SBS_SIZE_BYTE: + ret = ssd_smbus_read_byte(dev, SSD_BM_SLAVE_ADDRESS, bm_sbs->cmd, buf); + if (ret) { + //printf("Error: smbus read byte %#x\n", bm_sbs->cmd); + goto out; + } + val = buf[0]; + break; + case SBS_SIZE_WORD: + ret = ssd_smbus_read_word(dev, SSD_BM_SLAVE_ADDRESS, bm_sbs->cmd, (uint8_t *)&val); + if (ret) { + //printf("Error: smbus read word %#x\n", bm_sbs->cmd); + goto out; + } + //val = *(uint16_t *)buf; + break; + default: + ret = -1; + goto out; + break; + } + + switch (bm_sbs->unit) { + case SBS_UNIT_VALUE: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val & bm_sbs->mask; + break; + case SBS_UNIT_TEMPERATURE: + cval = (uint16_t)(val - 2731) / 10; + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = cval; + break; + case SBS_UNIT_VOLTAGE: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val; + break; + case SBS_UNIT_CURRENT: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val; + break; + case SBS_UNIT_ESR: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val; + break; + case SBS_UNIT_PERCENT: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val; + break; + case SBS_UNIT_CAPACITANCE: + *(uint16_t *)bm_var(&bm_status, bm_sbs->off) = val; + break; + default: + ret = -1; + goto out; + break; + } + + bm_sbs++; + } + + memcpy(bm_status_out, &bm_status, sizeof(struct ssd_bm)); + +out: + return ret; +} + +static int __ssd_bm_status(struct ssd_device *dev, int *status) +{ + struct ssd_bm bm_status = {0}; + int nr_cap = 0; + int i; + int ret = 0; + + ret = ssd_get_bmstruct(dev, &bm_status); + if (ret) { + goto out; + } + + /* capacitor voltage */ + ret = ssd_bm_nr_cap(dev, &nr_cap); + if (ret) { + goto out; + } + + for (i=0; i> 12) & 0x1)) { + *status = SSD_BMSTATUS_CHARGING; + }else{ + *status = SSD_BMSTATUS_OK; + } + +out: + return ret; +} + +static void ssd_set_flush_timeout(struct ssd_device *dev, int mode); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static void ssd_bm_worker(void *data) +{ + struct ssd_device *dev = (struct ssd_device *)data; +#else +static void ssd_bm_worker(struct work_struct *work) +{ + struct ssd_device *dev = container_of(work, struct ssd_device, bm_work); +#endif + + uint16_t opstatus; + int ret = 0; + + if (mode != SSD_DRV_MODE_STANDARD) { + return; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_1) { + return; + } + + if (dev->hw_info_ext.plp_type != SSD_PLP_SCAP) { + return; + } + + ret = ssd_bm_get_opstatus(dev, &opstatus); + if (ret) { + hio_warn("%s: get bm operationstatus failed\n", dev->name); + return; + } + + /* need cap learning ? */ + if (!(opstatus & 0xF0)) { + ret = ssd_bm_enter_cap_learning(dev); + if (ret) { + hio_warn("%s: enter capacitance learning failed\n", dev->name); + return; + } + } +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) +static void ssd_bm_routine_start(void *data) +#else +static void ssd_bm_routine_start(struct timer_list *t) +#endif +{ + struct ssd_device *dev; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) + if (!data) { + return; + } + dev = data; +#else + dev = from_timer(dev, t, bm_timer); +#endif + + if (test_bit(SSD_INIT_WORKQ, &dev->state)) { + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + queue_work(dev->workq, &dev->bm_work); + } else { + queue_work(dev->workq, &dev->capmon_work); + } + } +} + +/* CAP */ +static int ssd_do_cap_learn(struct ssd_device *dev, uint32_t *cap) +{ + uint32_t u1, u2, t; + uint16_t val = 0; + int wait = 0; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + *cap = 0; + return 0; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + *cap = 0; + return 0; + } + + /* make sure the lm80 voltage value is updated */ + msleep(SSD_LM80_CONV_INTERVAL); + + /* check if full charged */ + wait = 0; + for (;;) { + ret = ssd_smbus_read_word(dev, SSD_SENSOR_LM80_SADDRESS, SSD_PL_CAP_U1, (uint8_t *)&val); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + u1 = SSD_LM80_CONVERT_VOLT(u16_swap(val)); + if (SSD_PL_CAP_VOLT(u1) >= SSD_PL_CAP_VOLT_FULL) { + break; + } + + wait++; + if (wait > SSD_PL_CAP_CHARGE_MAX_WAIT) { + ret = -ETIMEDOUT; + goto out; + } + msleep(SSD_PL_CAP_CHARGE_WAIT); + } + + ret = ssd_smbus_read_word(dev, SSD_SENSOR_LM80_SADDRESS, SSD_PL_CAP_U2, (uint8_t *)&val); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + u2 = SSD_LM80_CONVERT_VOLT(u16_swap(val)); + + if (u1 == u2) { + ret = -EINVAL; + goto out; + } + + /* enter cap learn */ + ssd_reg32_write(dev->ctrlp + SSD_PL_CAP_LEARN_REG, 0x1); + + wait = 0; + for (;;) { + msleep(SSD_PL_CAP_LEARN_WAIT); + + t = ssd_reg32_read(dev->ctrlp + SSD_PL_CAP_LEARN_REG); + if (!((t >> 1) & 0x1)) { + break; + } + + wait++; + if (wait > SSD_PL_CAP_LEARN_MAX_WAIT) { + ret = -ETIMEDOUT; + goto out; + } + } + + if ((t >> 4) & 0x1) { + ret = -ETIMEDOUT; + goto out; + } + + t = (t >> 8); + if (0 == t) { + ret = -EINVAL; + goto out; + } + + *cap = SSD_PL_CAP_LEARN(u1, u2, t); + +out: + return ret; +} + +static int ssd_cap_learn(struct ssd_device *dev, uint32_t *cap) +{ + int ret = 0; + + if (!dev || !cap) { + return -EINVAL; + } + + mutex_lock(&dev->bm_mutex); + + ssd_stop_workq(dev); + + ret = ssd_do_cap_learn(dev, cap); + if (ret) { + ssd_gen_swlog(dev, SSD_LOG_CAP_LEARN_FAULT, 0); + goto out; + } + + ssd_gen_swlog(dev, SSD_LOG_CAP_STATUS, *cap); + +out: + ssd_start_workq(dev); + mutex_unlock(&dev->bm_mutex); + + return ret; +} + +static int ssd_check_pl_cap(struct ssd_device *dev) +{ + uint32_t u1; + uint16_t val = 0; + uint8_t low = 0; + int wait = 0; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + return 0; + } + + /* cap ready ? */ + wait = 0; + for (;;) { + ret = ssd_smbus_read_word(dev, SSD_SENSOR_LM80_SADDRESS, SSD_PL_CAP_U1, (uint8_t *)&val); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + u1 = SSD_LM80_CONVERT_VOLT(u16_swap(val)); + if (SSD_PL_CAP_VOLT(u1) >= SSD_PL_CAP_VOLT_READY) { + break; + } + + wait++; + if (wait > SSD_PL_CAP_CHARGE_MAX_WAIT) { + ret = -ETIMEDOUT; + ssd_gen_swlog(dev, SSD_LOG_CAP_VOLT_FAULT, SSD_PL_CAP_VOLT(u1)); + goto out; + } + msleep(SSD_PL_CAP_CHARGE_WAIT); + } + + low = ssd_lm80_limit[SSD_LM80_IN_CAP].low; + ret = ssd_smbus_write_byte(dev, SSD_SENSOR_LM80_SADDRESS, SSD_LM80_REG_IN_MIN(SSD_LM80_IN_CAP), &low); + if (ret) { + goto out; + } + + /* enable cap INx */ + ret = ssd_lm80_enable_in(dev, SSD_SENSOR_LM80_SADDRESS, SSD_LM80_IN_CAP); + if (ret) { + if (!test_and_set_bit(SSD_HWMON_SENSOR(SSD_SENSOR_LM80), &dev->hwmon)) { + ssd_generate_sensor_fault_log(dev, SSD_LOG_SENSOR_FAULT, SSD_SENSOR_LM80_SADDRESS,ret); + } + goto out; + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +static int ssd_check_pl_cap_fast(struct ssd_device *dev) +{ + uint32_t u1; + uint16_t val = 0; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + return 0; + } + + /* cap ready ? */ + ret = ssd_smbus_read_word(dev, SSD_SENSOR_LM80_SADDRESS, SSD_PL_CAP_U1, (uint8_t *)&val); + if (ret) { + goto out; + } + u1 = SSD_LM80_CONVERT_VOLT(u16_swap(val)); + if (SSD_PL_CAP_VOLT(u1) < SSD_PL_CAP_VOLT_READY) { + ret = 1; + } + +out: + return ret; +} + +static int ssd_init_pl_cap(struct ssd_device *dev) +{ + int ret = 0; + + /* set here: user write mode */ + dev->user_wmode = wmode; + + mutex_init(&dev->bm_mutex); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + uint32_t val; + val = ssd_reg32_read(dev->ctrlp + SSD_BM_FAULT_REG); + if ((val >> 1) & 0x1) { + (void)test_and_set_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon); + } + } else { + ret = ssd_check_pl_cap(dev); + if (ret) { + (void)test_and_set_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon); + } + } + + return 0; +} + +/* label */ +static void __end_str(char *str, int len) +{ + int i; + + for(i=0; irom_info.label_base; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + size = sizeof(struct ssd_label); + + /* read label */ + ret = ssd_spi_read(dev, &dev->label, off, size); + if (ret) { + memset(&dev->label, 0, size); + goto out; + } + + __end_str(dev->label.date, SSD_LABEL_FIELD_SZ); + __end_str(dev->label.sn, SSD_LABEL_FIELD_SZ); + __end_str(dev->label.part, SSD_LABEL_FIELD_SZ); + __end_str(dev->label.desc, SSD_LABEL_FIELD_SZ); + __end_str(dev->label.other, SSD_LABEL_FIELD_SZ); + __end_str(dev->label.maf, SSD_LABEL_FIELD_SZ); + } else { + size = sizeof(struct ssd_labelv3); + + /* read label */ + ret = ssd_spi_read(dev, &dev->labelv3, off, size); + if (ret) { + memset(&dev->labelv3, 0, size); + goto out; + } + + __end_str(dev->labelv3.boardtype, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.barcode, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.item, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.description, SSD_LABEL_DESC_SZ); + __end_str(dev->labelv3.manufactured, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.vendorname, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.issuenumber, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.cleicode, SSD_LABEL_FIELD_SZ); + __end_str(dev->labelv3.bom, SSD_LABEL_FIELD_SZ); + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +int ssd_get_label(struct block_device *bdev, struct ssd_label *label) +{ + struct ssd_device *dev; + + if (!bdev || !label || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + memset(label, 0, sizeof(struct ssd_label)); + memcpy(label->date, dev->labelv3.manufactured, SSD_LABEL_FIELD_SZ); + memcpy(label->sn, dev->labelv3.barcode, SSD_LABEL_FIELD_SZ); + memcpy(label->desc, dev->labelv3.boardtype, SSD_LABEL_FIELD_SZ); + memcpy(label->maf, dev->labelv3.vendorname, SSD_LABEL_FIELD_SZ); + } else { + memcpy(label, &dev->label, sizeof(struct ssd_label)); + } + + return 0; +} + +static int __ssd_get_version(struct ssd_device *dev, struct ssd_version_info *ver) +{ + uint16_t bm_ver = 0; + int ret = 0; + + if (dev->protocol_info.ver > SSD_PROTOCOL_V3 && dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + ret = ssd_bm_get_version(dev, &bm_ver); + if(ret){ + goto out; + } + } + + ver->bridge_ver = dev->hw_info.bridge_ver; + ver->ctrl_ver = dev->hw_info.ctrl_ver; + ver->bm_ver = bm_ver; + ver->pcb_ver = dev->hw_info.pcb_ver; + ver->upper_pcb_ver = dev->hw_info.upper_pcb_ver; + +out: + return ret; + +} + +int ssd_get_version(struct block_device *bdev, struct ssd_version_info *ver) +{ + struct ssd_device *dev; + int ret; + + if (!bdev || !ver || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + mutex_lock(&dev->fw_mutex); + ret = __ssd_get_version(dev, ver); + mutex_unlock(&dev->fw_mutex); + + return ret; +} + +static int __ssd_get_temperature(struct ssd_device *dev, int *temp) +{ + uint64_t val; + uint32_t off; + int max = -300; + int cur; + int i; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + *temp = 0; + return 0; + } + + if (finject) { + if (dev->db_info.type == SSD_DEBUG_LOG && + (dev->db_info.data.log.event == SSD_LOG_OVER_TEMP || + dev->db_info.data.log.event == SSD_LOG_NORMAL_TEMP || + dev->db_info.data.log.event == SSD_LOG_WARN_TEMP)) { + *temp = (int)dev->db_info.data.log.extra; + return 0; + } + } + + for (i=0; ihw_info.nr_ctrl; i++) { + off = SSD_CTRL_TEMP_REG0 + i * sizeof(uint64_t); + + val = ssd_reg_read(dev->ctrlp + off); + if (val == 0xffffffffffffffffull) { + continue; + } + + cur = (int)CUR_TEMP(val); + if (cur >= max) { + max = cur; + } + } + + *temp = max; + + return 0; +} + +int ssd_get_temperature(struct block_device *bdev, int *temp) +{ + struct ssd_device *dev; + int ret; + + if (!bdev || !temp || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + + mutex_lock(&dev->fw_mutex); + ret = __ssd_get_temperature(dev, temp); + mutex_unlock(&dev->fw_mutex); + + return ret; +} + +int ssd_set_otprotect(struct block_device *bdev, int otprotect) + { + struct ssd_device *dev; + + if (!bdev || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + ssd_set_ot_protect(dev, !!otprotect); + + return 0; + } + +int ssd_bm_status(struct block_device *bdev, int *status) +{ + struct ssd_device *dev; + int ret = 0; + + if (!bdev || !status || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + mutex_lock(&dev->fw_mutex); + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + *status = SSD_BMSTATUS_WARNING; + } else { + *status = SSD_BMSTATUS_OK; + } + } else if(dev->protocol_info.ver > SSD_PROTOCOL_V3) { + ret = __ssd_bm_status(dev, status); + } else { + *status = SSD_BMSTATUS_OK; + } + mutex_unlock(&dev->fw_mutex); + + return ret; +} + +int ssd_get_pciaddr(struct block_device *bdev, struct pci_addr *paddr) +{ + struct ssd_device *dev; + + if (!bdev || !paddr || !bdev->bd_disk) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + paddr->domain = pci_domain_nr(dev->pdev->bus); + paddr->bus = dev->pdev->bus->number; + paddr->slot = PCI_SLOT(dev->pdev->devfn); + paddr->func= PCI_FUNC(dev->pdev->devfn); + + return 0; +} + +/* acc */ +static int ssd_bb_acc(struct ssd_device *dev, struct ssd_acc_info *acc) +{ + uint32_t val; + int ctrl, chip; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_1) { + return -EOPNOTSUPP; + } + + acc->threshold_l1 = ssd_reg32_read(dev->ctrlp + SSD_BB_THRESHOLD_L1_REG); + if (0xffffffffull == acc->threshold_l1) { + return -EIO; + } + acc->threshold_l2 = ssd_reg32_read(dev->ctrlp + SSD_BB_THRESHOLD_L2_REG); + if (0xffffffffull == acc->threshold_l2) { + return -EIO; + } + acc->val = 0; + + for (ctrl=0; ctrlhw_info.nr_ctrl; ctrl++) { + for (chip=0; chiphw_info.nr_chip; chip++) { + val = ssd_reg32_read(dev->ctrlp + SSD_BB_ACC_REG0 + (SSD_CTRL_REG_ZONE_SZ * ctrl) + (SSD_BB_ACC_REG_SZ * chip)); + if (0xffffffffull == acc->val) { + return -EIO; + } + if (val > acc->val) { + acc->val = val; + } + } + } + + return 0; +} + +static int ssd_ec_acc(struct ssd_device *dev, struct ssd_acc_info *acc) +{ + uint32_t val; + int ctrl, chip; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_1) { + return -EOPNOTSUPP; + } + + acc->threshold_l1 = ssd_reg32_read(dev->ctrlp + SSD_EC_THRESHOLD_L1_REG); + if (0xffffffffull == acc->threshold_l1) { + return -EIO; + } + acc->threshold_l2 = ssd_reg32_read(dev->ctrlp + SSD_EC_THRESHOLD_L2_REG); + if (0xffffffffull == acc->threshold_l2) { + return -EIO; + } + acc->val = 0; + + for (ctrl=0; ctrlhw_info.nr_ctrl; ctrl++) { + for (chip=0; chiphw_info.nr_chip; chip++) { + val = ssd_reg32_read(dev->ctrlp + SSD_EC_ACC_REG0 + (SSD_CTRL_REG_ZONE_SZ * ctrl) + (SSD_EC_ACC_REG_SZ * chip)); + if (0xffffffffull == acc->val) { + return -EIO; + } + + if (val > acc->val) { + acc->val = val; + } + } + } + + return 0; +} + + +/* ram r&w */ +static int ssd_ram_read_4k(struct ssd_device *dev, void *buf, size_t length, loff_t ofs, int ctrl_idx) +{ + struct ssd_ram_op_msg *msg; + dma_addr_t buf_dma; + size_t len = length; + loff_t ofs_w = ofs; + int ret = 0; + + if (ctrl_idx >= dev->hw_info.nr_ctrl || (uint64_t)(ofs + length) > dev->hw_info.ram_size + || !length || length > dev->hw_info.ram_max_len + || (length & (dev->hw_info.ram_align - 1)) != 0 || ((uint64_t)ofs & (dev->hw_info.ram_align - 1)) != 0) { + return -EINVAL; + } + + len /= dev->hw_info.ram_align; + do_div(ofs_w, dev->hw_info.ram_align); + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_FROMDEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map read DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + msg = (struct ssd_ram_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_RAM_READ; + msg->ctrl_idx = ctrl_idx; + msg->start = (uint32_t)ofs_w; + msg->length = len; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, READ, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_FROMDEVICE); + +out_dma_mapping: + return ret; +} + +static int ssd_ram_write_4k(struct ssd_device *dev, void *buf, size_t length, loff_t ofs, int ctrl_idx) +{ + struct ssd_ram_op_msg *msg; + dma_addr_t buf_dma; + size_t len = length; + loff_t ofs_w = ofs; + int ret = 0; + + if (ctrl_idx >= dev->hw_info.nr_ctrl || (uint64_t)(ofs + length) > dev->hw_info.ram_size + || !length || length > dev->hw_info.ram_max_len + || (length & (dev->hw_info.ram_align - 1)) != 0 || ((uint64_t)ofs & (dev->hw_info.ram_align - 1)) != 0) { + return -EINVAL; + } + + len /= dev->hw_info.ram_align; + do_div(ofs_w, dev->hw_info.ram_align); + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_TODEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map write DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + msg = (struct ssd_ram_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_RAM_WRITE; + msg->ctrl_idx = ctrl_idx; + msg->start = (uint32_t)ofs_w; + msg->length = len; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_TODEVICE); + +out_dma_mapping: + return ret; + +} + +static int ssd_ram_read(struct ssd_device *dev, void *buf, size_t length, loff_t ofs, int ctrl_idx) +{ + int left = length; + size_t len; + loff_t off = ofs; + int ret = 0; + + if (ctrl_idx >= dev->hw_info.nr_ctrl || (uint64_t)(ofs + length) > dev->hw_info.ram_size || !length + || (length & (dev->hw_info.ram_align - 1)) != 0 || ((uint64_t)ofs & (dev->hw_info.ram_align - 1)) != 0) { + return -EINVAL; + } + + while (left > 0) { + len = dev->hw_info.ram_max_len; + if (left < (int)dev->hw_info.ram_max_len) { + len = left; + } + + ret = ssd_ram_read_4k(dev, buf, len, off, ctrl_idx); + if (ret) { + break; + } + + left -= len; + off += len; + buf += len; + } + + return ret; +} + +static int ssd_ram_write(struct ssd_device *dev, void *buf, size_t length, loff_t ofs, int ctrl_idx) +{ + int left = length; + size_t len; + loff_t off = ofs; + int ret = 0; + + if (ctrl_idx >= dev->hw_info.nr_ctrl || (uint64_t)(ofs + length) > dev->hw_info.ram_size || !length + || (length & (dev->hw_info.ram_align - 1)) != 0 || ((uint64_t)ofs & (dev->hw_info.ram_align - 1)) != 0) { + return -EINVAL; + } + + while (left > 0) { + len = dev->hw_info.ram_max_len; + if (left < (int)dev->hw_info.ram_max_len) { + len = left; + } + + ret = ssd_ram_write_4k(dev, buf, len, off, ctrl_idx); + if (ret) { + break; + } + + left -= len; + off += len; + buf += len; + } + + return ret; +} + + +/* flash op */ +static int ssd_check_flash(struct ssd_device *dev, int flash, int page, int ctrl_idx) +{ + int cur_ch = flash % dev->hw_info.max_ch; + int cur_chip = flash /dev->hw_info.max_ch; + + if (ctrl_idx >= dev->hw_info.nr_ctrl) { + return -EINVAL; + } + + if (cur_ch >= dev->hw_info.nr_ch || cur_chip >= dev->hw_info.nr_chip) { + return -EINVAL; + } + + if (page >= (int)(dev->hw_info.block_count * dev->hw_info.page_count)) { + return -EINVAL; + } + return 0; +} + +static int ssd_nand_read_id(struct ssd_device *dev, void *id, int flash, int chip, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + dma_addr_t buf_dma; + int ret = 0; + + if (unlikely(!id)) + return -EINVAL; + + buf_dma = pci_map_single(dev->pdev, id, SSD_NAND_ID_BUFF_SZ, PCI_DMA_FROMDEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map read DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + flash = ((uint32_t)flash << 1) | (uint32_t)chip; + chip = 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_NAND_READ_ID; + msg->chip_no = flash; + msg->chip_ce = chip; + msg->ctrl_idx = ctrl_idx; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, READ, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, SSD_NAND_ID_BUFF_SZ, PCI_DMA_FROMDEVICE); + +out_dma_mapping: + return ret; +} + +#if 0 +static int ssd_nand_read(struct ssd_device *dev, void *buf, + int flash, int chip, int page, int page_count, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + dma_addr_t buf_dma; + int length; + int ret = 0; + + if (!buf) { + return -EINVAL; + } + + if ((page + page_count) > dev->hw_info.block_count*dev->hw_info.page_count) { + return -EINVAL; + } + + ret = ssd_check_flash(dev, flash, page, ctrl_idx); + if (ret) { + return ret; + } + + length = page_count * dev->hw_info.page_size; + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_FROMDEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map read DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + flash = (flash << 1) | chip; + chip = 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_NAND_READ; + msg->ctrl_idx = ctrl_idx; + msg->chip_no = flash; + msg->chip_ce = chip; + msg->page_no = page; + msg->page_count = page_count; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, READ, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_FROMDEVICE); + +out_dma_mapping: + return ret; +} +#endif + +static int ssd_nand_read_w_oob(struct ssd_device *dev, void *buf, + int flash, int chip, int page, int count, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + dma_addr_t buf_dma; + int length; + int ret = 0; + + if (!buf) { + return -EINVAL; + } + + if ((page + count) > (int)(dev->hw_info.block_count * dev->hw_info.page_count)) { + return -EINVAL; + } + + ret = ssd_check_flash(dev, flash, page, ctrl_idx); + if (ret) { + return ret; + } + + length = count * (dev->hw_info.page_size + dev->hw_info.oob_size); + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_FROMDEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map read DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + flash = ((uint32_t)flash << 1) | (uint32_t)chip; + chip = 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_NAND_READ_WOOB; + msg->ctrl_idx = ctrl_idx; + msg->chip_no = flash; + msg->chip_ce = chip; + msg->page_no = page; + msg->page_count = count; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, READ, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_FROMDEVICE); + +out_dma_mapping: + return ret; +} + +/* write 1 page */ +static int ssd_nand_write(struct ssd_device *dev, void *buf, + int flash, int chip, int page, int count, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + dma_addr_t buf_dma; + int length; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + return -EINVAL; + } + + if (!buf) { + return -EINVAL; + } + + if (count != 1) { + return -EINVAL; + } + + ret = ssd_check_flash(dev, flash, page, ctrl_idx); + if (ret) { + return ret; + } + + length = count * (dev->hw_info.page_size + dev->hw_info.oob_size); + + /* write data to ram */ + /*ret = ssd_ram_write(dev, buf, length, dev->hw_info.nand_wbuff_base, ctrl_idx); + if (ret) { + return ret; + }*/ + + buf_dma = pci_map_single(dev->pdev, buf, length, PCI_DMA_TODEVICE); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + ret = dma_mapping_error(buf_dma); +#else + ret = dma_mapping_error(&(dev->pdev->dev), buf_dma); +#endif + if (ret) { + hio_warn("%s: unable to map write DMA buffer\n", dev->name); + goto out_dma_mapping; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + flash = ((uint32_t)flash << 1) | (uint32_t)chip; + chip = 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_NAND_WRITE; + msg->ctrl_idx = ctrl_idx; + msg->chip_no = flash; + msg->chip_ce = chip; + + msg->page_no = page; + msg->page_count = count; + msg->buf = buf_dma; + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + pci_unmap_single(dev->pdev, buf_dma, length, PCI_DMA_TODEVICE); + +out_dma_mapping: + return ret; +} + +static int ssd_nand_erase(struct ssd_device *dev, int flash, int chip, int page, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + int ret = 0; + + ret = ssd_check_flash(dev, flash, page, ctrl_idx); + if (ret) { + return ret; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + flash = ((uint32_t)flash << 1) | (uint32_t)chip; + chip = 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_NAND_ERASE; + msg->ctrl_idx = ctrl_idx; + msg->chip_no = flash; + msg->chip_ce = chip; + msg->page_no = page; + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +static int ssd_update_bbt(struct ssd_device *dev, int flash, int ctrl_idx) +{ + struct ssd_nand_op_msg *msg; + struct ssd_flush_msg *fmsg; + int ret = 0; + + ret = ssd_check_flash(dev, flash, 0, ctrl_idx); + if (ret) { + return ret; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + fmsg = (struct ssd_flush_msg *)msg; + + fmsg->fun = SSD_FUNC_FLUSH; + fmsg->flag = 0x1; + fmsg->flash = flash; + fmsg->ctrl_idx = ctrl_idx; + } else { + msg->fun = SSD_FUNC_FLUSH; + msg->flag = 0x1; + msg->chip_no = flash; + msg->ctrl_idx = ctrl_idx; + } + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +/* flash controller init state */ +static int __ssd_check_init_state(struct ssd_device *dev) +{ + uint32_t *init_state = NULL; + int reg_base, reg_sz; + int max_wait = SSD_INIT_MAX_WAIT; + int init_wait = 0; + int i, j, k; + int ch_start = 0; + +/* + for (i=0; ihw_info.nr_ctrl; i++) { + ssd_reg32_write(dev->ctrlp + SSD_CTRL_TEST_REG0 + i * 8, test_data); + read_data = ssd_reg32_read(dev->ctrlp + SSD_CTRL_TEST_REG0 + i * 8); + if (read_data == ~test_data) { + //dev->hw_info.nr_ctrl++; + dev->hw_info.nr_ctrl_map |= 1<ctrlp + SSD_READY_REG); + j=0; + for (i=0; ihw_info.nr_ctrl; i++) { + if (((read_data>>i) & 0x1) == 0) { + j++; + } + } + + if (dev->hw_info.nr_ctrl != j) { + printk(KERN_WARNING "%s: nr_ctrl mismatch: %d %d\n", dev->name, dev->hw_info.nr_ctrl, j); + return -1; + } +*/ + +/* + init_state = ssd_reg_read(dev->ctrlp + SSD_FLASH_INFO_REG0); + for (j=1; jhw_info.nr_ctrl;j++) { + if (init_state != ssd_reg_read(dev->ctrlp + SSD_FLASH_INFO_REG0 + j*8)) { + printk(KERN_WARNING "SSD_FLASH_INFO_REG[%d], not match\n", j); + return -1; + } + } +*/ + +/* init_state = ssd_reg_read(dev->ctrlp + SSD_CHIP_INFO_REG0); + for (j=1; jhw_info.nr_ctrl; j++) { + if (init_state != ssd_reg_read(dev->ctrlp + SSD_CHIP_INFO_REG0 + j*16)) { + printk(KERN_WARNING "SSD_CHIP_INFO_REG Lo [%d], not match\n", j); + return -1; + } + } + + init_state = ssd_reg_read(dev->ctrlp + SSD_CHIP_INFO_REG0 + 8); + for (j=1; jhw_info.nr_ctrl; j++) { + if (init_state != ssd_reg_read(dev->ctrlp + SSD_CHIP_INFO_REG0 + 8 + j*16)) { + printk(KERN_WARNING "SSD_CHIP_INFO_REG Hi [%d], not match\n", j); + return -1; + } + } +*/ + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + max_wait = SSD_INIT_MAX_WAIT_V3_2; + } + + reg_base = dev->protocol_info.init_state_reg; + reg_sz = dev->protocol_info.init_state_reg_sz; + + init_state = (uint32_t *)kmalloc(reg_sz, GFP_KERNEL); + if (!init_state) { + return -ENOMEM; + } + + for (i=0; ihw_info.nr_ctrl; i++) { +check_init: + for (j=0, k=0; jctrlp + reg_base + j); + } + + if (dev->protocol_info.ver > SSD_PROTOCOL_V3) { + /* just check the last bit, no need to check all channel */ + ch_start = dev->hw_info.max_ch - 1; + } else { + ch_start = 0; + } + + for (j=0; jhw_info.nr_chip; j++) { + for (k=ch_start; khw_info.max_ch; k++) { + if (test_bit((j*dev->hw_info.max_ch + k), (void *)init_state)) { + continue; + } + + init_wait++; + if (init_wait <= max_wait) { + msleep(SSD_INIT_WAIT); + goto check_init; + } else { + if (k < dev->hw_info.nr_ch) { + hio_warn("%s: controller %d chip %d ch %d init failed\n", + dev->name, i, j, k); + } else { + hio_warn("%s: controller %d chip %d init failed\n", + dev->name, i, j); + } + + kfree(init_state); + return -1; + } + } + } + reg_base += reg_sz; + } + //printk(KERN_WARNING "%s: init wait %d\n", dev->name, init_wait); + + kfree(init_state); + return 0; +} + +static int ssd_check_init_state(struct ssd_device *dev) +{ + if (mode != SSD_DRV_MODE_STANDARD) { + return 0; + } + + return __ssd_check_init_state(dev); +} + +static void ssd_reset_resp_ptr(struct ssd_device *dev); + +/* reset flash controller etc */ +static int __ssd_reset(struct ssd_device *dev, int type) +{ + if (type < SSD_RST_NOINIT || type > SSD_RST_FULL) { + return -EINVAL; + } + + mutex_lock(&dev->fw_mutex); + + if (type == SSD_RST_NOINIT) { //no init + ssd_reg32_write(dev->ctrlp + SSD_RESET_REG, SSD_RESET_NOINIT); + } else if (type == SSD_RST_NORMAL) { //reset & init + ssd_reg32_write(dev->ctrlp + SSD_RESET_REG, SSD_RESET); + } else { // full reset + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + mutex_unlock(&dev->fw_mutex); + return -EINVAL; + } + + ssd_reg32_write(dev->ctrlp + SSD_FULL_RESET_REG, SSD_RESET_FULL); + + /* ?? */ + ssd_reset_resp_ptr(dev); + } + +#ifdef SSD_OT_PROTECT + dev->ot_delay = 0; +#endif + + msleep(1000); + + /* xx */ + ssd_set_flush_timeout(dev, dev->wmode); + + mutex_unlock(&dev->fw_mutex); + ssd_gen_swlog(dev, SSD_LOG_RESET, (uint32_t)type); + dev->reset_time = (uint64_t)ktime_get_real_seconds(); + + return __ssd_check_init_state(dev); +} + +static int ssd_save_md(struct ssd_device *dev) +{ + struct ssd_nand_op_msg *msg; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + if (!dev->save_md) { + return 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_FLUSH; + msg->flag = 0x2; + msg->ctrl_idx = 0; + msg->chip_no = 0; + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +static int ssd_barrier_save_md(struct ssd_device *dev) +{ + struct ssd_nand_op_msg *msg; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return 0; + } + + if (!dev->save_md) { + return 0; + } + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + msg->fun = SSD_FUNC_FLUSH; + msg->flag = 0x2; + msg->ctrl_idx = 0; + msg->chip_no = 0; + + ret = ssd_do_barrier_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +static int ssd_flush(struct ssd_device *dev) +{ + struct ssd_nand_op_msg *msg; + struct ssd_flush_msg *fmsg; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + fmsg = (struct ssd_flush_msg *)msg; + + fmsg->fun = SSD_FUNC_FLUSH; + fmsg->flag = 0; + fmsg->ctrl_idx = 0; + fmsg->flash = 0; + } else { + msg->fun = SSD_FUNC_FLUSH; + msg->flag = 0; + msg->ctrl_idx = 0; + msg->chip_no = 0; + } + + ret = ssd_do_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +static int ssd_barrier_flush(struct ssd_device *dev) +{ + struct ssd_nand_op_msg *msg; + struct ssd_flush_msg *fmsg; + int ret = 0; + + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + + msg = (struct ssd_nand_op_msg *)ssd_get_dmsg(dev); + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + fmsg = (struct ssd_flush_msg *)msg; + + fmsg->fun = SSD_FUNC_FLUSH; + fmsg->flag = 0; + fmsg->ctrl_idx = 0; + fmsg->flash = 0; + } else { + msg->fun = SSD_FUNC_FLUSH; + msg->flag = 0; + msg->ctrl_idx = 0; + msg->chip_no = 0; + } + + ret = ssd_do_barrier_request(dev, WRITE, msg, NULL); + ssd_put_dmsg(msg); + + return ret; +} + +#define SSD_WMODE_BUFFER_TIMEOUT 0x00c82710 +#define SSD_WMODE_BUFFER_EX_TIMEOUT 0x000500c8 +#define SSD_WMODE_FUA_TIMEOUT 0x000503E8 +static void ssd_set_flush_timeout(struct ssd_device *dev, int m) +{ + uint32_t to; + uint32_t val = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_1) { + return; + } + + switch(m) { + case SSD_WMODE_BUFFER: + to = SSD_WMODE_BUFFER_TIMEOUT; + break; + case SSD_WMODE_BUFFER_EX: + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2_1) { + to = SSD_WMODE_BUFFER_EX_TIMEOUT; + } else { + to = SSD_WMODE_BUFFER_TIMEOUT; + } + break; + case SSD_WMODE_FUA: + to = SSD_WMODE_FUA_TIMEOUT; + break; + default: + return; + } + + val = (((uint32_t)((uint32_t)m & 0x3) << 28) | to); + + ssd_reg32_write(dev->ctrlp + SSD_FLUSH_TIMEOUT_REG, val); +} + +static int ssd_do_switch_wmode(struct ssd_device *dev, int m) +{ + int ret = 0; + + ret = ssd_barrier_start(dev); + if (ret) { + goto out; + } + + ret = ssd_barrier_flush(dev); + if (ret) { + goto out_barrier_end; + } + + /* set contoller flush timeout */ + ssd_set_flush_timeout(dev, m); + + dev->wmode = m; + mb(); + +out_barrier_end: + ssd_barrier_end(dev); +out: + return ret; +} + +static int ssd_switch_wmode(struct ssd_device *dev, int m) +{ + int default_wmode; + int next_wmode; + int ret = 0; + + if (!test_bit(SSD_ONLINE, &dev->state)) { + return -ENODEV; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + default_wmode = SSD_WMODE_BUFFER; + } else { + default_wmode = SSD_WMODE_BUFFER_EX; + } + + if (SSD_WMODE_AUTO == m) { + /* battery fault ? */ + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + next_wmode = SSD_WMODE_FUA; + } else { + next_wmode = default_wmode; + } + } else if (SSD_WMODE_DEFAULT == m) { + next_wmode = default_wmode; + } else { + next_wmode = m; + } + + if (next_wmode != dev->wmode) { + hio_warn("%s: switch write mode (%d -> %d)\n", dev->name, dev->wmode, next_wmode); + ret = ssd_do_switch_wmode(dev, next_wmode); + if (ret) { + hio_err("%s: can not switch write mode (%d -> %d)\n", dev->name, dev->wmode, next_wmode); + } + } + + return ret; +} + +static int ssd_init_wmode(struct ssd_device *dev) +{ + int default_wmode; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + default_wmode = SSD_WMODE_BUFFER; + } else { + default_wmode = SSD_WMODE_BUFFER_EX; + } + + /* dummy mode */ + if (SSD_WMODE_AUTO == dev->user_wmode) { + /* battery fault ? */ + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + dev->wmode = SSD_WMODE_FUA; + } else { + dev->wmode = default_wmode; + } + } else if (SSD_WMODE_DEFAULT == dev->user_wmode) { + dev->wmode = default_wmode; + } else { + dev->wmode = dev->user_wmode; + } + ssd_set_flush_timeout(dev, dev->wmode); + + return ret; +} + +static int __ssd_set_wmode(struct ssd_device *dev, int m) +{ + int ret = 0; + + /* not support old fw*/ + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_1) { + ret = -EOPNOTSUPP; + goto out; + } + + if (m < SSD_WMODE_BUFFER || m > SSD_WMODE_DEFAULT) { + ret = -EINVAL; + goto out; + } + + ssd_gen_swlog(dev, SSD_LOG_SET_WMODE, m); + + dev->user_wmode = m; + + ret = ssd_switch_wmode(dev, dev->user_wmode); + if (ret) { + goto out; + } + +out: + return ret; +} + +int ssd_set_wmode(struct block_device *bdev, int m) +{ + struct ssd_device *dev; + + if (!bdev || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + return __ssd_set_wmode(dev, m); +} + +static int ssd_do_reset(struct ssd_device *dev) +{ + int ret = 0; + + if (test_and_set_bit(SSD_RESETING, &dev->state)) { + return 0; + } + + ssd_stop_workq(dev); + + ret = ssd_barrier_start(dev); + if (ret) { + goto out; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + /* old reset */ + ret = __ssd_reset(dev, SSD_RST_NORMAL); + } else { + /* full reset */ + //ret = __ssd_reset(dev, SSD_RST_FULL); + ret = __ssd_reset(dev, SSD_RST_NORMAL); + } + if (ret) { + goto out_barrier_end; + } + +out_barrier_end: + ssd_barrier_end(dev); +out: + ssd_start_workq(dev); + test_and_clear_bit(SSD_RESETING, &dev->state); + return ret; +} + +static int ssd_full_reset(struct ssd_device *dev) +{ + int ret = 0; + + if (test_and_set_bit(SSD_RESETING, &dev->state)) { + return 0; + } + + ssd_stop_workq(dev); + + ret = ssd_barrier_start(dev); + if (ret) { + goto out; + } + + ret = ssd_barrier_flush(dev); + if (ret) { + goto out_barrier_end; + } + + ret = ssd_barrier_save_md(dev); + if (ret) { + goto out_barrier_end; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + /* old reset */ + ret = __ssd_reset(dev, SSD_RST_NORMAL); + } else { + /* full reset */ + //ret = __ssd_reset(dev, SSD_RST_FULL); + ret = __ssd_reset(dev, SSD_RST_NORMAL); + } + if (ret) { + goto out_barrier_end; + } + +out_barrier_end: + ssd_barrier_end(dev); +out: + ssd_start_workq(dev); + test_and_clear_bit(SSD_RESETING, &dev->state); + return ret; +} + +int ssd_reset(struct block_device *bdev) +{ + int ret; + struct ssd_device *dev; + + if (!bdev || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + + ret = ssd_full_reset(dev); + if (!ret) { + if (!dev->has_non_0x98_reg_access) { + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, 0); + } + } + + return ret ; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static int ssd_issue_flush_fn(struct request_queue *q, struct gendisk *disk, + sector_t *error_sector) +{ + struct ssd_device *dev = q->queuedata; + + return ssd_flush(dev); +} +#endif + +void ssd_submit_pbio(struct request_queue *q, struct bio *bio) +{ + struct ssd_device *dev = q->queuedata; +#ifdef SSD_QUEUE_PBIO + int ret = -EBUSY; +#endif + + if (!test_bit(SSD_ONLINE, &dev->state)) { + ssd_bio_endio(bio, -ENODEV); + goto out; + } + +#ifdef SSD_DEBUG_ERR + if (atomic_read(&dev->tocnt)) { + hio_warn("%s: IO rejected because of IO timeout!\n", dev->name); + ssd_bio_endio(bio, -EIO); + goto out; + } +#endif + + if (unlikely(ssd_bio_has_barrier_or_fua(bio))) { + ssd_bio_endio(bio, -EOPNOTSUPP); + goto out; + } + + if (unlikely(dev->readonly && bio_data_dir(bio) == WRITE)) { + ssd_bio_endio(bio, -EROFS); + goto out; + } + +#ifdef SSD_QUEUE_PBIO + if (0 == atomic_read(&dev->in_sendq)) { + ret = __ssd_submit_pbio(dev, bio, 0); + } + + if (ret) { + (void)test_and_set_bit(BIO_SSD_PBIO, &bio->bi_flags); + ssd_queue_bio(dev, bio); + } +#else + __ssd_submit_pbio(dev, bio, 1); +#endif + +out: + return; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)) +static blk_qc_t ssd_make_request(struct request_queue *q, struct bio *bio) +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) +static void ssd_make_request(struct request_queue *q, struct bio *bio) +#else +static int ssd_make_request(struct request_queue *q, struct bio *bio) +#endif +{ + struct ssd_device *dev = q->queuedata; + int ret = -EBUSY; + + if (!test_bit(SSD_ONLINE, &dev->state)) { + ssd_bio_endio(bio, -ENODEV); + goto out; + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0)) + blk_queue_split(q, &bio); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) + blk_queue_split(q, &bio, q->bio_split); +#endif + +#ifdef SSD_DEBUG_ERR + if (atomic_read(&dev->tocnt)) { + hio_warn("%s: IO rejected because of IO timeout!\n", dev->name); + ssd_bio_endio(bio, -EIO); + goto out; + } +#endif + + if (unlikely(ssd_bio_has_barrier_or_fua(bio))) { + ssd_bio_endio(bio, -EOPNOTSUPP); + goto out; + } + + /* writeback_cache_control.txt: REQ_FLUSH requests without data can be completed successfully without doing any work */ + if (unlikely(ssd_bio_has_flush(bio) && !bio_sectors(bio))) { + ssd_bio_endio(bio, 0); + goto out; + } + + if (0 == atomic_read(&dev->in_sendq)) { + ret = ssd_submit_bio(dev, bio, 0); + } + + if (ret) { + ssd_queue_bio(dev, bio); + } + +out: +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)) + return BLK_QC_T_NONE; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) + return; +#else + return 0; +#endif +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)) +static int ssd_block_getgeo(struct block_device *bdev, struct hd_geometry *geo) +{ + struct ssd_device *dev; + + if (!bdev) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } + + geo->heads = 4; + geo->sectors = 16; + geo->cylinders = (dev->hw_info.size & ~0x3f) >> 6; + return 0; +} +#endif + +static int ssd_init_queue(struct ssd_device *dev); +static void ssd_cleanup_queue(struct ssd_device *dev); +static void ssd_cleanup_blkdev(struct ssd_device *dev); +static int ssd_init_blkdev(struct ssd_device *dev); +static int ssd_ioctl_common(struct ssd_device *dev, unsigned int cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + void __user *buf = NULL; + void *kbuf = NULL; + int ret = 0; + + switch (cmd) { + case SSD_CMD_GET_PROTOCOL_INFO: + if (copy_to_user(argp, &dev->protocol_info, sizeof(struct ssd_protocol_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_GET_HW_INFO: + if (copy_to_user(argp, &dev->hw_info, sizeof(struct ssd_hw_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_GET_ROM_INFO: + if (copy_to_user(argp, &dev->rom_info, sizeof(struct ssd_rom_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_GET_SMART: { + struct ssd_smart smart; + int i; + + memcpy(&smart, &dev->smart, sizeof(struct ssd_smart)); + + mutex_lock(&dev->gd_mutex); + ssd_update_smart(dev, &smart); + mutex_unlock(&dev->gd_mutex); + + /* combine the volatile log info */ + if (dev->log_info.nr_log) { + for (i=0; ilog_info.stat[i]; + } + } + + if (copy_to_user(argp, &smart, sizeof(struct ssd_smart))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_GET_IDX: + if (copy_to_user(argp, &dev->idx, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_GET_AMOUNT: { + int nr_ssd = atomic_read(&ssd_nr); + if (copy_to_user(argp, &nr_ssd, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_TO_INFO: { + int tocnt = atomic_read(&dev->tocnt); + + if (copy_to_user(argp, &tocnt, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_DRV_VER: { + char ver[] = DRIVER_VERSION; + int len = sizeof(ver); + + if (len > (DRIVER_VERSION_LEN - 1)) { + len = (DRIVER_VERSION_LEN - 1); + } + if (copy_to_user(argp, ver, len)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_BBACC_INFO: { + struct ssd_acc_info acc; + + mutex_lock(&dev->fw_mutex); + ret = ssd_bb_acc(dev, &acc); + mutex_unlock(&dev->fw_mutex); + if (ret) { + break; + } + + if (copy_to_user(argp, &acc, sizeof(struct ssd_acc_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_ECACC_INFO: { + struct ssd_acc_info acc; + + mutex_lock(&dev->fw_mutex); + ret = ssd_ec_acc(dev, &acc); + mutex_unlock(&dev->fw_mutex); + if (ret) { + break; + } + + if (copy_to_user(argp, &acc, sizeof(struct ssd_acc_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_HW_INFO_EXT: + if (copy_to_user(argp, &dev->hw_info_ext, sizeof(struct ssd_hw_info_extend))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_REG_READ: { + struct ssd_reg_op_info reg_info; + + if (copy_from_user(®_info, argp, sizeof(struct ssd_reg_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + if (reg_info.offset > dev->mmio_len-sizeof(uint32_t)) { + ret = -EINVAL; + break; + } + + reg_info.value = ssd_reg32_read(dev->ctrlp + reg_info.offset); + if (copy_to_user(argp, ®_info, sizeof(struct ssd_reg_op_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_REG_WRITE: { + struct ssd_reg_op_info reg_info; + + if (copy_from_user(®_info, argp, sizeof(struct ssd_reg_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + if (reg_info.offset > dev->mmio_len-sizeof(uint32_t)) { + ret = -EINVAL; + break; + } + + ssd_reg32_write(dev->ctrlp + reg_info.offset, reg_info.value); + + break; + } + + case SSD_CMD_SPI_READ: { + struct ssd_spi_op_info spi_info; + uint32_t off, size; + + if (copy_from_user(&spi_info, argp, sizeof(struct ssd_spi_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + off = spi_info.off; + size = spi_info.len; + buf = spi_info.buf; + + if (size > dev->rom_info.size || 0 == size || (off + size) > dev->rom_info.size) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(size, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + ret = ssd_spi_page_read(dev, kbuf, off, size); + if (ret) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, size)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_SPI_WRITE: { + struct ssd_spi_op_info spi_info; + uint32_t off, size; + + if (copy_from_user(&spi_info, argp, sizeof(struct ssd_spi_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + off = spi_info.off; + size = spi_info.len; + buf = spi_info.buf; + + if (size > dev->rom_info.size || 0 == size || (off + size) > dev->rom_info.size) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(size, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + if (copy_from_user(kbuf, buf, size)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + ret = ssd_spi_page_write(dev, kbuf, off, size); + if (ret) { + kfree(kbuf); + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_SPI_ERASE: { + struct ssd_spi_op_info spi_info; + uint32_t off; + + if (copy_from_user(&spi_info, argp, sizeof(struct ssd_spi_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + off = spi_info.off; + + if ((off + dev->rom_info.block_size) > dev->rom_info.size) { + ret = -EINVAL; + break; + } + + ret = ssd_spi_block_erase(dev, off); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_I2C_READ: { + struct ssd_i2c_op_info i2c_info; + uint8_t saddr; + uint8_t rsize; + + if (copy_from_user(&i2c_info, argp, sizeof(struct ssd_i2c_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = i2c_info.saddr; + rsize = i2c_info.rsize; + buf = i2c_info.rbuf; + + if (rsize <= 0 || rsize > SSD_I2C_MAX_DATA) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(rsize, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + ret = ssd_i2c_read(dev, saddr, rsize, kbuf); + if (ret) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, rsize)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_I2C_WRITE: { + struct ssd_i2c_op_info i2c_info; + uint8_t saddr; + uint8_t wsize; + + if (copy_from_user(&i2c_info, argp, sizeof(struct ssd_i2c_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = i2c_info.saddr; + wsize = i2c_info.wsize; + buf = i2c_info.wbuf; + + if (wsize <= 0 || wsize > SSD_I2C_MAX_DATA) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(wsize, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + if (copy_from_user(kbuf, buf, wsize)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + ret = ssd_i2c_write(dev, saddr, wsize, kbuf); + if (ret) { + kfree(kbuf); + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_I2C_WRITE_READ: { + struct ssd_i2c_op_info i2c_info; + uint8_t saddr; + uint8_t wsize; + uint8_t rsize; + uint8_t size; + + if (copy_from_user(&i2c_info, argp, sizeof(struct ssd_i2c_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = i2c_info.saddr; + wsize = i2c_info.wsize; + rsize = i2c_info.rsize; + buf = i2c_info.wbuf; + + if (wsize <= 0 || wsize > SSD_I2C_MAX_DATA) { + ret = -EINVAL; + break; + } + + if (rsize <= 0 || rsize > SSD_I2C_MAX_DATA) { + ret = -EINVAL; + break; + } + + size = wsize + rsize; + + kbuf = kmalloc(size, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + if (copy_from_user((kbuf + rsize), buf, wsize)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + buf = i2c_info.rbuf; + + ret = ssd_i2c_write_read(dev, saddr, wsize, (kbuf + rsize), rsize, kbuf); + if (ret) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, rsize)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + kfree(kbuf); + ret = -EFAULT; + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_SMBUS_SEND_BYTE: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + buf = smbus_info.buf; + size = 1; + + if (copy_from_user(smb_data, buf, size)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = ssd_smbus_send_byte(dev, saddr, smb_data); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_SMBUS_RECEIVE_BYTE: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + buf = smbus_info.buf; + size = 1; + + ret = ssd_smbus_receive_byte(dev, saddr, smb_data); + if (ret) { + break; + } + + if (copy_to_user(buf, smb_data, size)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_SMBUS_WRITE_BYTE: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = 1; + + if (copy_from_user(smb_data, buf, size)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = ssd_smbus_write_byte(dev, saddr, command, smb_data); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_SMBUS_READ_BYTE: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = 1; + + ret = ssd_smbus_read_byte(dev, saddr, command, smb_data); + if (ret) { + break; + } + + if (copy_to_user(buf, smb_data, size)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_SMBUS_WRITE_WORD: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = 2; + + if (copy_from_user(smb_data, buf, size)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = ssd_smbus_write_word(dev, saddr, command, smb_data); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_SMBUS_READ_WORD: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = 2; + + ret = ssd_smbus_read_word(dev, saddr, command, smb_data); + if (ret) { + break; + } + + if (copy_to_user(buf, smb_data, size)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_SMBUS_WRITE_BLOCK: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = smbus_info.size; + + if (size > SSD_SMBUS_BLOCK_MAX) { + ret = -EINVAL; + break; + } + + if (copy_from_user(smb_data, buf, size)) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = ssd_smbus_write_block(dev, saddr, command, size, smb_data); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_SMBUS_READ_BLOCK: { + struct ssd_smbus_op_info smbus_info; + uint8_t smb_data[SSD_SMBUS_BLOCK_MAX]; + uint8_t saddr; + uint8_t command; + uint8_t size; + + if (copy_from_user(&smbus_info, argp, sizeof(struct ssd_smbus_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + saddr = smbus_info.saddr; + command = smbus_info.cmd; + buf = smbus_info.buf; + size = smbus_info.size; + + if (size > SSD_SMBUS_BLOCK_MAX) { + ret = -EINVAL; + break; + } + + ret = ssd_smbus_read_block(dev, saddr, command, size, smb_data); + if (ret) { + break; + } + + if (copy_to_user(buf, smb_data, size)) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_BM_GET_VER: { + uint16_t ver; + + ret = ssd_bm_get_version(dev, &ver); + if (ret) { + break; + } + + if (copy_to_user(argp, &ver, sizeof(uint16_t))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_BM_GET_NR_CAP: { + int nr_cap; + + ret = ssd_bm_nr_cap(dev, &nr_cap); + if (ret) { + break; + } + + if (copy_to_user(argp, &nr_cap, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_BM_CAP_LEARNING: { + ret = ssd_bm_enter_cap_learning(dev); + + if (ret) { + break; + } + + break; + } + + case SSD_CMD_CAP_LEARN: { + uint32_t cap = 0; + + ret = ssd_cap_learn(dev, &cap); + if (ret) { + break; + } + + if (copy_to_user(argp, &cap, sizeof(uint32_t))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_GET_CAP_STATUS: { + int cap_status = 0; + + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + cap_status = 1; + } + + if (copy_to_user(argp, &cap_status, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_RAM_READ: { + struct ssd_ram_op_info ram_info; + uint64_t ofs; + uint32_t length; + size_t rlen, len = dev->hw_info.ram_max_len; + int ctrl_idx; + + if (copy_from_user(&ram_info, argp, sizeof(struct ssd_ram_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ofs = ram_info.start; + length = ram_info.length; + buf = ram_info.buf; + ctrl_idx = ram_info.ctrl_idx; + + if (ofs >= dev->hw_info.ram_size || length > dev->hw_info.ram_size || 0 == length || (ofs + length) > dev->hw_info.ram_size) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(len, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + for (rlen=0; rlenhw_info.ram_max_len; + int ctrl_idx; + + if (copy_from_user(&ram_info, argp, sizeof(struct ssd_ram_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + ofs = ram_info.start; + length = ram_info.length; + buf = ram_info.buf; + ctrl_idx = ram_info.ctrl_idx; + + if (ofs >= dev->hw_info.ram_size || length > dev->hw_info.ram_size || 0 == length || (ofs + length) > dev->hw_info.ram_size) { + ret = -EINVAL; + break; + } + + kbuf = kmalloc(len, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + for (wlen=0; wlenname); + ret = -EFAULT; + break; + } + + chip_no = flash_info.flash; + chip_ce = flash_info.chip; + ctrl_idx = flash_info.ctrl_idx; + buf = flash_info.buf; + length = dev->hw_info.id_size; + + //kbuf = kmalloc(length, GFP_KERNEL); + kbuf = kmalloc(SSD_NAND_ID_BUFF_SZ, GFP_KERNEL); //xx + if (!kbuf) { + ret = -ENOMEM; + break; + } + memset(kbuf, 0, length); + + ret = ssd_nand_read_id(dev, kbuf, chip_no, chip_ce, ctrl_idx); + if (ret) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, length)) { + kfree(kbuf); + ret = -EFAULT; + break; + } + + kfree(kbuf); + + break; + } + + case SSD_CMD_NAND_READ: { //with oob + struct ssd_flash_op_info flash_info; + uint32_t length; + int flash, chip, page, ctrl_idx; + int err = 0; + + if (copy_from_user(&flash_info, argp, sizeof(struct ssd_flash_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + flash = flash_info.flash; + chip = flash_info.chip; + page = flash_info.page; + buf = flash_info.buf; + ctrl_idx = flash_info.ctrl_idx; + + length = dev->hw_info.page_size + dev->hw_info.oob_size; + + kbuf = kmalloc(length, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + err = ret = ssd_nand_read_w_oob(dev, kbuf, flash, chip, page, 1, ctrl_idx); + if (ret && (-EIO != ret)) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, length)) { + kfree(kbuf); + ret = -EFAULT; + break; + } + + ret = err; + + kfree(kbuf); + break; + } + + case SSD_CMD_NAND_WRITE: { + struct ssd_flash_op_info flash_info; + int flash, chip, page, ctrl_idx; + uint32_t length; + + if (copy_from_user(&flash_info, argp, sizeof(struct ssd_flash_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + flash = flash_info.flash; + chip = flash_info.chip; + page = flash_info.page; + buf = flash_info.buf; + ctrl_idx = flash_info.ctrl_idx; + + length = dev->hw_info.page_size + dev->hw_info.oob_size; + + kbuf = kmalloc(length, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + if (copy_from_user(kbuf, buf, length)) { + kfree(kbuf); + ret = -EFAULT; + break; + } + + ret = ssd_nand_write(dev, kbuf, flash, chip, page, 1, ctrl_idx); + if (ret) { + kfree(kbuf); + break; + } + + kfree(kbuf); + break; + } + + case SSD_CMD_NAND_ERASE: { + struct ssd_flash_op_info flash_info; + int flash, chip, page, ctrl_idx; + + if (copy_from_user(&flash_info, argp, sizeof(struct ssd_flash_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + flash = flash_info.flash; + chip = flash_info.chip; + page = flash_info.page; + ctrl_idx = flash_info.ctrl_idx; + + if ((page % dev->hw_info.page_count) != 0) { + ret = -EINVAL; + break; + } + + //hio_warn("erase fs = %llx\n", ofs); + ret = ssd_nand_erase(dev, flash, chip, page, ctrl_idx); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_NAND_READ_EXT: { //ingore EIO + struct ssd_flash_op_info flash_info; + uint32_t length; + int flash, chip, page, ctrl_idx; + + if (copy_from_user(&flash_info, argp, sizeof(struct ssd_flash_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + flash = flash_info.flash; + chip = flash_info.chip; + page = flash_info.page; + buf = flash_info.buf; + ctrl_idx = flash_info.ctrl_idx; + + length = dev->hw_info.page_size + dev->hw_info.oob_size; + + kbuf = kmalloc(length, GFP_KERNEL); + if (!kbuf) { + ret = -ENOMEM; + break; + } + + ret = ssd_nand_read_w_oob(dev, kbuf, flash, chip, page, 1, ctrl_idx); + if (-EIO == ret) { //ingore EIO + ret = 0; + } + if (ret) { + kfree(kbuf); + break; + } + + if (copy_to_user(buf, kbuf, length)) { + kfree(kbuf); + ret = -EFAULT; + break; + } + + kfree(kbuf); + break; + } + + case SSD_CMD_UPDATE_BBT: { + struct ssd_flash_op_info flash_info; + int ctrl_idx, flash; + + if (copy_from_user(&flash_info, argp, sizeof(struct ssd_flash_op_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ctrl_idx = flash_info.ctrl_idx; + flash = flash_info.flash; + ret = ssd_update_bbt(dev, flash, ctrl_idx); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_CLEAR_ALARM: + ssd_clear_alarm(dev); + break; + + case SSD_CMD_SET_ALARM: + ssd_set_alarm(dev); + break; + + case SSD_CMD_RESET: + ret = ssd_do_reset(dev); + break; + + case SSD_CMD_RELOAD_FW: + dev->reload_fw = 1; + dev->has_non_0x98_reg_access = 1; + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FLAG); + } else if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_1_1) { + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FW); + + } + break; + + case SSD_CMD_UNLOAD_DEV: { + if (atomic_read(&dev->refcnt)) { + ret = -EBUSY; + break; + } + + /* save smart */ + ssd_save_smart(dev); + + ret = ssd_flush(dev); + if (ret) { + break; + } + + /* cleanup the block device */ + if (test_and_clear_bit(SSD_INIT_BD, &dev->state)) { + mutex_lock(&dev->gd_mutex); + ssd_cleanup_blkdev(dev); + ssd_cleanup_queue(dev); + mutex_unlock(&dev->gd_mutex); + } + + break; + } + + case SSD_CMD_LOAD_DEV: { + + if (test_bit(SSD_INIT_BD, &dev->state)) { + ret = -EINVAL; + break; + } + + ret = ssd_init_smart(dev); + if (ret) { + hio_warn("%s: init info: failed\n", dev->name); + break; + } + + ret = ssd_init_queue(dev); + if (ret) { + hio_warn("%s: init queue failed\n", dev->name); + break; + } + ret = ssd_init_blkdev(dev); + if (ret) { + hio_warn("%s: register block device: failed\n", dev->name); + break; + } + (void)test_and_set_bit(SSD_INIT_BD, &dev->state); + + break; + } + + case SSD_CMD_UPDATE_VP: { + uint32_t val; + uint32_t new_vp, new_vp1 = 0; + + if (test_bit(SSD_INIT_BD, &dev->state)) { + ret = -EINVAL; + break; + } + + if (copy_from_user(&new_vp, argp, sizeof(uint32_t))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + if (new_vp > dev->hw_info.max_valid_pages || new_vp <= 0) { + ret = -EINVAL; + break; + } + + while (new_vp <= dev->hw_info.max_valid_pages) { + ssd_reg32_write(dev->ctrlp + SSD_VALID_PAGES_REG, new_vp); + msleep(10); + val = ssd_reg32_read(dev->ctrlp + SSD_VALID_PAGES_REG); + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + new_vp1 = val & 0x3FF; + } else { + new_vp1 = val & 0x7FFF; + } + + if (new_vp1 == new_vp) { + break; + } + + new_vp++; + /*if (new_vp == dev->hw_info.valid_pages) { + new_vp++; + }*/ + } + + if (new_vp1 != new_vp || new_vp > dev->hw_info.max_valid_pages) { + /* restore */ + ssd_reg32_write(dev->ctrlp + SSD_VALID_PAGES_REG, dev->hw_info.valid_pages); + ret = -EINVAL; + break; + } + + if (copy_to_user(argp, &new_vp, sizeof(uint32_t))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ssd_reg32_write(dev->ctrlp + SSD_VALID_PAGES_REG, dev->hw_info.valid_pages); + ret = -EFAULT; + break; + } + + /* new */ + dev->hw_info.valid_pages = new_vp; + dev->hw_info.size = (uint64_t)dev->hw_info.valid_pages * dev->hw_info.page_size; + dev->hw_info.size *= (dev->hw_info.block_count - dev->hw_info.reserved_blks); + dev->hw_info.size *= ((uint64_t)dev->hw_info.nr_data_ch * (uint64_t)dev->hw_info.nr_chip * (uint64_t)dev->hw_info.nr_ctrl); + + break; + } + + case SSD_CMD_FULL_RESET: { + ret = ssd_full_reset(dev); + break; + } + + case SSD_CMD_GET_NR_LOG: { + if (copy_to_user(argp, &dev->internal_log.nr_log, sizeof(dev->internal_log.nr_log))) { + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_LOG: { + uint32_t length = dev->rom_info.log_sz; + + buf = argp; + + if (copy_to_user(buf, dev->internal_log.log, length)) { + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_LOG_LEVEL: { + int level = 0; + if (copy_from_user(&level, argp, sizeof(int))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + if (level >= SSD_LOG_NR_LEVEL || level < SSD_LOG_LEVEL_INFO) { + level = SSD_LOG_LEVEL_ERR; + } + + //just for showing log, no need to protect + log_level = level; + break; + } + + case SSD_CMD_OT_PROTECT: { + int protect = 0; + + if (copy_from_user(&protect, argp, sizeof(int))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ssd_set_ot_protect(dev, !!protect); + break; + } + + case SSD_CMD_GET_OT_STATUS: { + int status = ssd_get_ot_status(dev, &status); + + if (copy_to_user(argp, &status, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_CLEAR_LOG: { + ret = ssd_clear_log(dev); + break; + } + + case SSD_CMD_CLEAR_SMART: { + ret = ssd_clear_smart(dev); + break; + } + + case SSD_CMD_CLEAR_WARNING: { + ret = ssd_clear_warning(dev); + break; + } + + case SSD_CMD_SW_LOG: { + struct ssd_sw_log_info sw_log; + + if (copy_from_user(&sw_log, argp, sizeof(struct ssd_sw_log_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = ssd_gen_swlog(dev, sw_log.event, sw_log.data); + break; + } + + case SSD_CMD_GET_LABEL: { + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + ret = -EINVAL; + break; + } + + if (copy_to_user(argp, &dev->label, sizeof(struct ssd_label))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_VERSION: { + struct ssd_version_info ver; + + mutex_lock(&dev->fw_mutex); + ret = __ssd_get_version(dev, &ver); + mutex_unlock(&dev->fw_mutex); + if (ret) { + break; + } + + if (copy_to_user(argp, &ver, sizeof(struct ssd_version_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_TEMPERATURE: { + int temp; + + mutex_lock(&dev->fw_mutex); + ret = __ssd_get_temperature(dev, &temp); + mutex_unlock(&dev->fw_mutex); + if (ret) { + break; + } + + if (copy_to_user(argp, &temp, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_BMSTATUS: { + int status; + + mutex_lock(&dev->fw_mutex); + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + status = SSD_BMSTATUS_WARNING; + } else { + status = SSD_BMSTATUS_OK; + } + } else if(dev->protocol_info.ver > SSD_PROTOCOL_V3) { + ret = __ssd_bm_status(dev, &status); + } else { + status = SSD_BMSTATUS_OK; + } + mutex_unlock(&dev->fw_mutex); + if (ret) { + break; + } + + if (copy_to_user(argp, &status, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_GET_LABEL2: { + void *label; + int length; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + label = &dev->label; + length = sizeof(struct ssd_label); + } else { + label = &dev->labelv3; + length = sizeof(struct ssd_labelv3); + } + + if (copy_to_user(argp, label, length)) { + ret = -EFAULT; + break; + } + break; + } + + case SSD_CMD_FLUSH: + ret = ssd_flush(dev); + if (ret) { + hio_warn("%s: ssd_flush: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + case SSD_CMD_SAVE_MD: { + int save_md = 0; + + if (copy_from_user(&save_md, argp, sizeof(int))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + dev->save_md = !!save_md; + break; + } + + case SSD_CMD_SET_WMODE: { + int new_wmode = 0; + + if (copy_from_user(&new_wmode, argp, sizeof(int))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + ret = __ssd_set_wmode(dev, new_wmode); + if (ret) { + break; + } + + break; + } + + case SSD_CMD_GET_WMODE: { + if (copy_to_user(argp, &dev->wmode, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_GET_USER_WMODE: { + if (copy_to_user(argp, &dev->user_wmode, sizeof(int))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + break; + } + + case SSD_CMD_DEBUG: { + struct ssd_debug_info db_info; + + if (!finject) { + ret = -EOPNOTSUPP; + break; + } + + if (copy_from_user(&db_info, argp, sizeof(struct ssd_debug_info))) { + hio_warn("%s: copy_from_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + + if (db_info.type < SSD_DEBUG_NONE || db_info.type >= SSD_DEBUG_NR) { + ret = -EINVAL; + break; + } + + /* IO */ + if (db_info.type >= SSD_DEBUG_READ_ERR && db_info.type <= SSD_DEBUG_RW_ERR && + (db_info.data.loc.off + db_info.data.loc.len) > (dev->hw_info.size >> 9)) { + ret = -EINVAL; + break; + } + + memcpy(&dev->db_info, &db_info, sizeof(struct ssd_debug_info)); + +#ifdef SSD_OT_PROTECT + /* temperature */ + if (db_info.type == SSD_DEBUG_NONE) { + ssd_check_temperature(dev, SSD_OT_TEMP); + } else if (db_info.type == SSD_DEBUG_LOG) { + if (db_info.data.log.event == SSD_LOG_OVER_TEMP) { + dev->ot_delay = SSD_OT_DELAY; + } else if (db_info.data.log.event == SSD_LOG_NORMAL_TEMP) { + dev->ot_delay = 0; + } + } +#endif + + /* offline */ + if (db_info.type == SSD_DEBUG_OFFLINE) { + test_and_clear_bit(SSD_ONLINE, &dev->state); + } else if (db_info.type == SSD_DEBUG_NONE) { + (void)test_and_set_bit(SSD_ONLINE, &dev->state); + } + + /* log */ + if (db_info.type == SSD_DEBUG_LOG && dev->event_call && dev->gd) { + dev->event_call(dev->gd, db_info.data.log.event, 0); + } + + break; + } + + case SSD_CMD_DRV_PARAM_INFO: { + struct ssd_drv_param_info drv_param; + + memset(&drv_param, 0, sizeof(struct ssd_drv_param_info)); + + drv_param.mode = mode; + drv_param.status_mask = status_mask; + drv_param.int_mode = int_mode; + drv_param.threaded_irq = threaded_irq; + drv_param.log_level = log_level; + drv_param.wmode = wmode; + drv_param.ot_protect = ot_protect; + drv_param.finject = finject; + + if (copy_to_user(argp, &drv_param, sizeof(struct ssd_drv_param_info))) { + hio_warn("%s: copy_to_user: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + } + + default: + ret = -EINVAL; + break; + } + + return ret; +} + + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) +static int ssd_block_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct ssd_device *dev; + void __user *argp = (void __user *)arg; + int ret = 0; + + if (!inode) { + return -EINVAL; + } + dev = inode->i_bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } +#else +static int ssd_block_ioctl(struct block_device *bdev, fmode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct ssd_device *dev; + void __user *argp = (void __user *)arg; + int ret = 0; + + if (!bdev) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } +#endif + + switch (cmd) { + case HDIO_GETGEO: { + struct hd_geometry geo; + geo.cylinders = (dev->hw_info.size & ~0x3f) >> 6; + geo.heads = 4; + geo.sectors = 16; +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) + geo.start = get_start_sect(inode->i_bdev); +#else + geo.start = get_start_sect(bdev); +#endif + if (copy_to_user(argp, &geo, sizeof(geo))) { + ret = -EFAULT; + break; + } + + break; + } + + case BLKFLSBUF: + ret = ssd_flush(dev); + if (ret) { + hio_warn("%s: ssd_flush: failed\n", dev->name); + ret = -EFAULT; + break; + } + break; + + default: + if (!dev->slave) { + ret = ssd_ioctl_common(dev, cmd, arg); + } else { + ret = -EFAULT; + } + break; + } + + return ret; +} + + +static void ssd_free_dev(struct kref *kref) +{ + struct ssd_device *dev; + + if (!kref) { + return; + } + + dev = container_of(kref, struct ssd_device, kref); + + put_disk(dev->gd); + + ssd_put_index(dev->slave, dev->idx); + + kfree(dev); +} + +static void ssd_put(struct ssd_device *dev) +{ + kref_put(&dev->kref, ssd_free_dev); +} + +static int ssd_get(struct ssd_device *dev) +{ + kref_get(&dev->kref); + return 0; +} + +/* block device */ +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) +static int ssd_block_open(struct inode *inode, struct file *filp) +{ + struct ssd_device *dev; + + if (!inode) { + return -EINVAL; + } + + dev = inode->i_bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } +#else +static int ssd_block_open(struct block_device *bdev, fmode_t mode) +{ + struct ssd_device *dev; + + if (!bdev) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } +#endif + + /*if (!try_module_get(dev->owner)) + return -ENODEV; + */ + + ssd_get(dev); + + atomic_inc(&dev->refcnt); + + return 0; +} + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) +static int ssd_block_release(struct inode *inode, struct file *filp) +{ + struct ssd_device *dev; + + if (!inode) { + return -EINVAL; + } + + dev = inode->i_bdev->bd_disk->private_data; + if (!dev) { + return -EINVAL; + } +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,0)) +static int ssd_block_release(struct gendisk *disk, fmode_t mode) +{ + struct ssd_device *dev; + + if (!disk) { + return -EINVAL; + } + + dev = disk->private_data; + if (!dev) { + return -EINVAL; + } +#else +static void ssd_block_release(struct gendisk *disk, fmode_t mode) +{ + struct ssd_device *dev; + + if (!disk) { + return; + } + + dev = disk->private_data; + if (!dev) { + return; + } +#endif + + atomic_dec(&dev->refcnt); + + ssd_put(dev); + + //module_put(dev->owner); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,0)) + return 0; +#endif +} + +static struct block_device_operations ssd_fops = { + .owner = THIS_MODULE, + .open = ssd_block_open, + .release = ssd_block_release, + .ioctl = ssd_block_ioctl, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)) + .getgeo = ssd_block_getgeo, +#endif +}; + +static void ssd_init_trim(ssd_device_t *dev) +{ +#if (defined SSD_TRIM && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))) + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + return; + } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) + blk_queue_flag_set(QUEUE_FLAG_DISCARD, dev->rq); +#else + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, dev->rq); +#endif + +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)) || (defined RHEL_MAJOR && RHEL_MAJOR >= 6)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)) + dev->rq->limits.discard_zeroes_data = 1; +#endif + dev->rq->limits.discard_alignment = 4096; + dev->rq->limits.discard_granularity = 4096; +#endif + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2_4) { + dev->rq->limits.max_discard_sectors = dev->hw_info.sg_max_sec; + } else { + dev->rq->limits.max_discard_sectors = (dev->hw_info.sg_max_sec) * (dev->hw_info.cmd_max_sg); + } +#endif +} + +static void ssd_cleanup_queue(struct ssd_device *dev) +{ + ssd_wait_io(dev); + + blk_cleanup_queue(dev->rq); + dev->rq = NULL; +} + +static int ssd_init_queue(struct ssd_device *dev) +{ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,7,0)) + dev->rq = blk_alloc_queue(GFP_KERNEL); + if (dev->rq == NULL) { + hio_warn("%s: alloc queue: failed\n ", dev->name); + goto out_init_queue; + } + + /* must be first */ + blk_queue_make_request(dev->rq, ssd_make_request); +#else + dev->rq = blk_alloc_queue(ssd_make_request, NUMA_NO_NODE); + if (dev->rq == NULL) { + hio_warn("%s: blk_alloc_queue(): failed\n ", dev->name); + goto out_init_queue; + } +#endif +#if ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) && !(defined RHEL_MAJOR && RHEL_MAJOR == 6)) + blk_queue_max_hw_segments(dev->rq, dev->hw_info.cmd_max_sg); + blk_queue_max_phys_segments(dev->rq, dev->hw_info.cmd_max_sg); + blk_queue_max_sectors(dev->rq, dev->hw_info.sg_max_sec); +#else + blk_queue_max_segments(dev->rq, dev->hw_info.cmd_max_sg); + blk_queue_max_hw_sectors(dev->rq, dev->hw_info.sg_max_sec); +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) + blk_queue_hardsect_size(dev->rq, 512); +#else + blk_queue_logical_block_size(dev->rq, 512); +#endif + /* not work for make_request based drivers(bio) */ + blk_queue_max_segment_size(dev->rq, dev->hw_info.sg_max_sec << 9); + + blk_queue_bounce_limit(dev->rq, BLK_BOUNCE_HIGH); + + dev->rq->queuedata = dev; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + blk_queue_issue_flush_fn(dev->rq, ssd_issue_flush_fn); +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) + blk_queue_flag_set(QUEUE_FLAG_NONROT, dev->rq); +#else + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, dev->rq); +#endif +#endif + + ssd_init_trim(dev); + + return 0; + +out_init_queue: + return -ENOMEM; +} + +static void ssd_cleanup_blkdev(struct ssd_device *dev) +{ + del_gendisk(dev->gd); +} + +static int ssd_init_blkdev(struct ssd_device *dev) +{ + if (dev->gd) { + put_disk(dev->gd); + } + + dev->gd = alloc_disk(ssd_minors); + if (!dev->gd) { + hio_warn("%s: alloc_disk fail\n", dev->name); + goto out_alloc_gd; + } + dev->gd->major = dev->major; + dev->gd->first_minor = dev->idx * ssd_minors; + dev->gd->fops = &ssd_fops; + dev->gd->queue = dev->rq; + dev->gd->private_data = dev; + + snprintf (dev->gd->disk_name, sizeof(dev->gd->disk_name), "%s", dev->name); + + set_capacity(dev->gd, dev->hw_info.size >> 9); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) + device_add_disk(&dev->pdev->dev, dev->gd, NULL); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) + device_add_disk(&dev->pdev->dev, dev->gd); +#else + dev->gd->driverfs_dev = &dev->pdev->dev; + add_disk(dev->gd); +#endif + + return 0; + +out_alloc_gd: + return -ENOMEM; +} + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,10)) +static int ssd_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +#else +static long ssd_ioctl(struct file *file, + unsigned int cmd, unsigned long arg) +#endif +{ + struct ssd_device *dev; + + if (!file) { + return -EINVAL; + } + + dev = file->private_data; + if (!dev) { + return -EINVAL; + } + + return (long)ssd_ioctl_common(dev, cmd, arg); +} + +static int ssd_open(struct inode *inode, struct file *file) +{ + struct ssd_device *dev = NULL; + struct ssd_device *n = NULL; + int idx; + int ret = -ENODEV; + + if (!inode || !file) { + return -EINVAL; + } + + idx = iminor(inode); + + list_for_each_entry_safe(dev, n, &ssd_list, list) { + if (dev->idx == idx) { + ret = 0; + break; + } + } + + if (ret) { + return ret; + } + + file->private_data = dev; + + ssd_get(dev); + + return 0; +} + +static int ssd_release(struct inode *inode, struct file *file) +{ + struct ssd_device *dev; + + if (!file) { + return -EINVAL; + } + + dev = file->private_data; + if (!dev) { + return -EINVAL; + } + + ssd_put(dev); + + file->private_data = NULL; + + return 0; +} + +static int ssd_reload_ssd_ptr(struct ssd_device *dev) +{ + ssd_reset_resp_ptr(dev); + + //update base reg address + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3) { + + ssd_reg_write(dev->ctrlp + SSD_MSG_BASE_REG, dev->msg_base_dma); + } + + //update response base reg address + ssd_reg_write(dev->ctrlp + SSD_RESP_FIFO_REG, dev->resp_msg_base_dma); + ssd_reg_write(dev->ctrlp + SSD_RESP_PTR_REG, dev->resp_ptr_base_dma); + + return 0; +} + +static struct file_operations ssd_cfops = { + .owner = THIS_MODULE, + .open = ssd_open, + .release = ssd_release, +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,10)) + .ioctl = ssd_ioctl, +#else + .unlocked_ioctl = ssd_ioctl, +#endif +}; + +static void ssd_cleanup_chardev(struct ssd_device *dev) +{ + if (dev->slave) { + return; + } + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) + class_simple_device_remove(MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx)); + devfs_remove("c%s", dev->name); +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,14)) + class_device_destroy(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx)); + devfs_remove("c%s", dev->name); +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,17)) + class_device_destroy(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx)); + devfs_remove("c%s", dev->name); +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24)) + class_device_destroy(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx)); +#else + device_destroy(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx)); +#endif +} + +static int ssd_init_chardev(struct ssd_device *dev) +{ + int ret = 0; + + if (dev->slave) { + return 0; + } + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) + ret = devfs_mk_cdev(MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), S_IFCHR|S_IRUSR|S_IWUSR, "c%s", dev->name); + if (ret) { + goto out; + } + class_simple_device_add(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +out: +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,14)) + ret = devfs_mk_cdev(MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), S_IFCHR|S_IRUSR|S_IWUSR, "c%s", dev->name); + if (ret) { + goto out; + } + class_device_create(ssd_class, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +out: +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,17)) + ret = devfs_mk_cdev(MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), S_IFCHR|S_IRUSR|S_IWUSR, "c%s", dev->name); + if (ret) { + goto out; + } + class_device_create(ssd_class, NULL, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +out: +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24)) + class_device_create(ssd_class, NULL, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)) + device_create(ssd_class, NULL, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), "c%s", dev->name); +#elif (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)) + device_create_drvdata(ssd_class, NULL, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +#else + device_create(ssd_class, NULL, MKDEV((dev_t)dev->cmajor, (dev_t)dev->idx), NULL, "c%s", dev->name); +#endif + + return ret; +} + +static int ssd_check_hw(struct ssd_device *dev) +{ + uint32_t test_data = 0x55AA5AA5; + uint32_t read_data; + + ssd_reg32_write(dev->ctrlp + SSD_BRIDGE_TEST_REG, test_data); + read_data = ssd_reg32_read(dev->ctrlp + SSD_BRIDGE_TEST_REG); + if (read_data != ~(test_data)) { + //hio_warn("%s: check bridge error: %#x\n", dev->name, read_data); + return -1; + } + + return 0; +} + +static int ssd_check_fw(struct ssd_device *dev) +{ + uint32_t val = 0; + int i; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_3) { + return 0; + } + + for (i=0; ictrlp + SSD_HW_STATUS_REG); + if ((val & 0x1) && ((val >> 8) & 0x1)) { + break; + } + + msleep(SSD_INIT_WAIT); + } + + if (!(val & 0x1)) { + /* controller fw status */ + hio_warn("%s: controller firmware load failed: %#x\n", dev->name, val); + return -1; + } else if (!((val >> 8) & 0x1)) { + /* controller state */ + hio_warn("%s: controller state error: %#x\n", dev->name, val); + return -1; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_RELOAD_FW_REG); + if (val) { + dev->reload_fw = 1; + } + + return 0; +} + +static int ssd_init_fw_info(struct ssd_device *dev) +{ + uint32_t val; + int ret = 0; + + val = ssd_reg32_read(dev->ctrlp + SSD_BRIDGE_VER_REG); + dev->hw_info.bridge_ver = val & 0xFFF; + if (dev->hw_info.bridge_ver < SSD_FW_MIN) { + hio_warn("%s: bridge firmware version %03X is not supported\n", dev->name, dev->hw_info.bridge_ver); + return -EINVAL; + } + hio_info("%s: bridge firmware version: %03X\n", dev->name, dev->hw_info.bridge_ver); + + ret = ssd_check_fw(dev); + if (ret) { + goto out; + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +static int ssd_check_clock(struct ssd_device *dev) +{ + uint32_t val; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_3) { + return 0; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_HW_STATUS_REG); + + /* clock status */ + if (!((val >> 4 ) & 0x1)) { + if (!test_and_set_bit(SSD_HWMON_CLOCK(SSD_CLOCK_166M_LOST), &dev->hwmon)) { + hio_warn("%s: 166MHz clock losed: %#x\n", dev->name, val); + ssd_gen_swlog(dev, SSD_LOG_CLK_FAULT, val); + } + ret = -1; + } + + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + if (!((val >> 5 ) & 0x1)) { + if (!test_and_set_bit(SSD_HWMON_CLOCK(SSD_CLOCK_166M_SKEW), &dev->hwmon)) { + hio_warn("%s: 166MHz clock is skew: %#x\n", dev->name, val); + ssd_gen_swlog(dev, SSD_LOG_CLK_FAULT, val); + } + ret = -1; + } + if (!((val >> 6 ) & 0x1)) { + if (!test_and_set_bit(SSD_HWMON_CLOCK(SSD_CLOCK_156M_LOST), &dev->hwmon)) { + hio_warn("%s: 156.25MHz clock lost: %#x\n", dev->name, val); + ssd_gen_swlog(dev, SSD_LOG_CLK_FAULT, val); + } + ret = -1; + } + if (!((val >> 7 ) & 0x1)) { + if (!test_and_set_bit(SSD_HWMON_CLOCK(SSD_CLOCK_156M_SKEW), &dev->hwmon)) { + hio_warn("%s: 156.25MHz clock is skew: %#x\n", dev->name, val); + ssd_gen_swlog(dev, SSD_LOG_CLK_FAULT, val); + } + ret = -1; + } + } + + return ret; +} + +static int ssd_check_volt(struct ssd_device *dev) +{ + int i = 0; + uint64_t val; + uint32_t adc_val; + int ret =0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + for (i=0; ihw_info.nr_ctrl; i++) { + /* 1.0v */ + if (!test_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V0), &dev->hwmon)) { + val = ssd_reg_read(dev->ctrlp + SSD_FPGA_1V0_REG0 + i * SSD_CTRL_REG_ZONE_SZ); + adc_val = SSD_FPGA_VOLT_MAX(val); + if (adc_val < SSD_FPGA_1V0_ADC_MIN || adc_val > SSD_FPGA_1V0_ADC_MAX) { + (void)test_and_set_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V0), &dev->hwmon); + hio_warn("%s: controller %d 1.0V fault: %d mV.\n", dev->name, i, SSD_FPGA_VOLT(adc_val)); + ssd_gen_swlog(dev, SSD_LOG_VOLT_FAULT, SSD_VOLT_LOG_DATA(SSD_FPGA_1V0, i, adc_val)); + ret = -1; + } + + adc_val = SSD_FPGA_VOLT_MIN(val); + if (adc_val < SSD_FPGA_1V0_ADC_MIN || adc_val > SSD_FPGA_1V0_ADC_MAX) { + (void)test_and_set_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V0), &dev->hwmon); + hio_warn("%s: controller %d 1.0V fault: %d mV.\n", dev->name, i, SSD_FPGA_VOLT(adc_val)); + ssd_gen_swlog(dev, SSD_LOG_VOLT_FAULT, SSD_VOLT_LOG_DATA(SSD_FPGA_1V0, i, adc_val)); + ret = -2; + } + } + + /* 1.8v */ + if (!test_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V8), &dev->hwmon)) { + val = ssd_reg_read(dev->ctrlp + SSD_FPGA_1V8_REG0 + i * SSD_CTRL_REG_ZONE_SZ); + adc_val = SSD_FPGA_VOLT_MAX(val); + if (adc_val < SSD_FPGA_1V8_ADC_MIN || adc_val > SSD_FPGA_1V8_ADC_MAX) { + (void)test_and_set_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V8), &dev->hwmon); + hio_warn("%s: controller %d 1.8V fault: %d mV.\n", dev->name, i, SSD_FPGA_VOLT(adc_val)); + ssd_gen_swlog(dev, SSD_LOG_VOLT_FAULT, SSD_VOLT_LOG_DATA(SSD_FPGA_1V8, i, adc_val)); + ret = -3; + } + + adc_val = SSD_FPGA_VOLT_MIN(val); + if (adc_val < SSD_FPGA_1V8_ADC_MIN || adc_val > SSD_FPGA_1V8_ADC_MAX) { + (void)test_and_set_bit(SSD_HWMON_FPGA(i, SSD_FPGA_1V8), &dev->hwmon); + hio_warn("%s: controller %d 1.8V fault: %d mV.\n", dev->name, i, SSD_FPGA_VOLT(adc_val)); + ssd_gen_swlog(dev, SSD_LOG_VOLT_FAULT, SSD_VOLT_LOG_DATA(SSD_FPGA_1V8, i, adc_val)); + ret = -4; + } + } + } + + return ret; +} + +static int ssd_check_reset_sync(struct ssd_device *dev) +{ + uint32_t val; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_3) { + return 0; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_HW_STATUS_REG); + if (!((val >> 8) & 0x1)) { + /* controller state */ + hio_warn("%s: controller state error: %#x\n", dev->name, val); + return -1; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return 0; + } + + if (((val >> 9 ) & 0x1)) { + hio_warn("%s: controller reset asynchronously: %#x\n", dev->name, val); + ssd_gen_swlog(dev, SSD_LOG_CTRL_RST_SYNC, val); + return -1; + } + + return 0; +} + +static int ssd_check_hw_bh(struct ssd_device *dev) +{ + int ret; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_3) { + return 0; + } + + /* clock status */ + ret = ssd_check_clock(dev); + if (ret) { + goto out; + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +static int ssd_check_controller(struct ssd_device *dev) +{ + int ret; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_1_3) { + return 0; + } + + /* sync reset */ + ret = ssd_check_reset_sync(dev); + if (ret) { + goto out; + } + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +static int ssd_check_controller_bh(struct ssd_device *dev) +{ + uint32_t test_data = 0x55AA5AA5; + uint32_t val; + int reg_base, reg_sz; + int init_wait = 0; + int i; + int ret = 0; + + if (mode != SSD_DRV_MODE_STANDARD) { + return 0; + } + + /* controller */ + val = ssd_reg32_read(dev->ctrlp + SSD_READY_REG); + if (val & 0x1) { + hio_warn("%s: controller 0 not ready\n", dev->name); + return -1; + } + + for (i=0; ihw_info.nr_ctrl; i++) { + reg_base = SSD_CTRL_TEST_REG0 + i * SSD_CTRL_TEST_REG_SZ; + ssd_reg32_write(dev->ctrlp + reg_base, test_data); + val = ssd_reg32_read(dev->ctrlp + reg_base); + if (val != ~(test_data)) { + hio_warn("%s: check controller %d error: %#x\n", dev->name, i, val); + return -1; + } + } + + /* clock */ + ret = ssd_check_volt(dev); + if (ret) { + return ret; + } + + /* ddr */ + if (dev->protocol_info.ver > SSD_PROTOCOL_V3) { + reg_base = SSD_PV3_RAM_STATUS_REG0; + reg_sz = SSD_PV3_RAM_STATUS_REG_SZ; + + for (i=0; ihw_info.nr_ctrl; i++) { +check_ram_status: + val = ssd_reg32_read(dev->ctrlp + reg_base); + + if (!((val >> 1) & 0x1)) { + init_wait++; + if (init_wait <= SSD_RAM_INIT_MAX_WAIT) { + msleep(SSD_INIT_WAIT); + goto check_ram_status; + } else { + hio_warn("%s: controller %d ram init failed: %#x\n", dev->name, i, val); + ssd_gen_swlog(dev, SSD_LOG_DDR_INIT_ERR, i); + return -1; + } + } + + reg_base += reg_sz; + } + } + + /* ch info */ + for (i=0; ictrlp + SSD_CH_INFO_REG); + if (!((val >> 31) & 0x1)) { + break; + } + + msleep(SSD_INIT_WAIT); + } + if ((val >> 31) & 0x1) { + hio_warn("%s: channel info init failed: %#x\n", dev->name, val); + return -1; + } + + return 0; +} + +static int ssd_init_protocol_info(struct ssd_device *dev) +{ + uint32_t val; + + val = ssd_reg32_read(dev->ctrlp + SSD_PROTOCOL_VER_REG); + if (val == (uint32_t)-1) { + hio_warn("%s: protocol version error: %#x\n", dev->name, val); + return -EINVAL; + } + dev->protocol_info.ver = val; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + dev->protocol_info.init_state_reg = SSD_INIT_STATE_REG0; + dev->protocol_info.init_state_reg_sz = SSD_INIT_STATE_REG_SZ; + + dev->protocol_info.chip_info_reg = SSD_CHIP_INFO_REG0; + dev->protocol_info.chip_info_reg_sz = SSD_CHIP_INFO_REG_SZ; + } else { + dev->protocol_info.init_state_reg = SSD_PV3_INIT_STATE_REG0; + dev->protocol_info.init_state_reg_sz = SSD_PV3_INIT_STATE_REG_SZ; + + dev->protocol_info.chip_info_reg = SSD_PV3_CHIP_INFO_REG0; + dev->protocol_info.chip_info_reg_sz = SSD_PV3_CHIP_INFO_REG_SZ; + } + + return 0; +} + +static int ssd_init_hw_info(struct ssd_device *dev) +{ + uint64_t val64; + uint32_t val; + uint32_t nr_ctrl; + int ret = 0; + + /* base info */ + val = ssd_reg32_read(dev->ctrlp + SSD_RESP_INFO_REG); + dev->hw_info.resp_ptr_sz = 16 * (1U << (val & 0xFF)); + dev->hw_info.resp_msg_sz = 16 * (1U << ((val >> 8) & 0xFF)); + + if (0 == dev->hw_info.resp_ptr_sz || 0 == dev->hw_info.resp_msg_sz) { + hio_warn("%s: response info error\n", dev->name); + ret = -EINVAL; + goto out; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_BRIDGE_INFO_REG); + dev->hw_info.cmd_fifo_sz = 1U << ((val >> 4) & 0xF); + dev->hw_info.cmd_max_sg = 1U << ((val >> 8) & 0xF); + dev->hw_info.sg_max_sec = 1U << ((val >> 12) & 0xF); + dev->hw_info.cmd_fifo_sz_mask = dev->hw_info.cmd_fifo_sz - 1; + + if (0 == dev->hw_info.cmd_fifo_sz || 0 == dev->hw_info.cmd_max_sg || 0 == dev->hw_info.sg_max_sec) { + hio_warn("%s: cmd info error\n", dev->name); + ret = -EINVAL; + goto out; + } + + /* check hw */ + if (ssd_check_hw_bh(dev)) { + hio_warn("%s: check hardware status failed\n", dev->name); + ret = -EINVAL; + goto out; + } + + if (ssd_check_controller(dev)) { + hio_warn("%s: check controller state failed\n", dev->name); + ret = -EINVAL; + goto out; + } + + /* nr controller : read again*/ + val = ssd_reg32_read(dev->ctrlp + SSD_BRIDGE_INFO_REG); + dev->hw_info.nr_ctrl = (val >> 16) & 0xF; + + /* nr ctrl configured */ + nr_ctrl = (val >> 20) & 0xF; + if (0 == dev->hw_info.nr_ctrl) { + hio_warn("%s: nr controller error: %u\n", dev->name, dev->hw_info.nr_ctrl); + ret = -EINVAL; + goto out; + } else if (0 != nr_ctrl && nr_ctrl != dev->hw_info.nr_ctrl) { + hio_warn("%s: nr controller error: configured %u but found %u\n", dev->name, nr_ctrl, dev->hw_info.nr_ctrl); + if (mode <= SSD_DRV_MODE_STANDARD) { + ret = -EINVAL; + goto out; + } + } + + if (ssd_check_controller_bh(dev)) { + hio_warn("%s: check controller failed\n", dev->name); + ret = -EINVAL; + goto out; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_PCB_VER_REG); + dev->hw_info.pcb_ver = (uint8_t) ((val >> 4) & 0xF) + 'A' -1; + if ((val & 0xF) != 0xF) { + dev->hw_info.upper_pcb_ver = (uint8_t) (val & 0xF) + 'A' -1; + } + + if (dev->hw_info.pcb_ver < 'A' || (0 != dev->hw_info.upper_pcb_ver && dev->hw_info.upper_pcb_ver < 'A')) { + hio_warn("%s: PCB version error: %#x %#x\n", dev->name, dev->hw_info.pcb_ver, dev->hw_info.upper_pcb_ver); + ret = -EINVAL; + goto out; + } + + /* channel info */ + if (mode <= SSD_DRV_MODE_DEBUG) { + val = ssd_reg32_read(dev->ctrlp + SSD_CH_INFO_REG); + dev->hw_info.nr_data_ch = val & 0xFF; + dev->hw_info.nr_ch = dev->hw_info.nr_data_ch + ((val >> 8) & 0xFF); + dev->hw_info.nr_chip = (val >> 16) & 0xFF; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + dev->hw_info.max_ch = 1; + while (dev->hw_info.max_ch < dev->hw_info.nr_ch) dev->hw_info.max_ch <<= 1; + } else { + /* set max channel 32 */ + dev->hw_info.max_ch = 32; + } + + if (0 == dev->hw_info.nr_chip) { + //for debug mode + dev->hw_info.nr_chip = 1; + } + + //xx + dev->hw_info.id_size = SSD_NAND_ID_SZ; + dev->hw_info.max_ce = SSD_NAND_MAX_CE; + + if (0 == dev->hw_info.nr_data_ch || 0 == dev->hw_info.nr_ch || 0 == dev->hw_info.nr_chip) { + hio_warn("%s: channel info error: data_ch %u ch %u chip %u\n", dev->name, dev->hw_info.nr_data_ch, dev->hw_info.nr_ch, dev->hw_info.nr_chip); + ret = -EINVAL; + goto out; + } + } + + /* ram info */ + if (mode <= SSD_DRV_MODE_DEBUG) { + val = ssd_reg32_read(dev->ctrlp + SSD_RAM_INFO_REG); + dev->hw_info.ram_size = 0x4000000ull * (1ULL << (val & 0xF)); + dev->hw_info.ram_align = 1U << ((val >> 12) & 0xF); + if (dev->hw_info.ram_align < SSD_RAM_ALIGN) { + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + dev->hw_info.ram_align = SSD_RAM_ALIGN; + } else { + hio_warn("%s: ram align error: %u\n", dev->name, dev->hw_info.ram_align); + ret = -EINVAL; + goto out; + } + } + dev->hw_info.ram_max_len = 0x1000 * (1U << ((val >> 16) & 0xF)); + + if (0 == dev->hw_info.ram_size || 0 == dev->hw_info.ram_align || 0 == dev->hw_info.ram_max_len || dev->hw_info.ram_align > dev->hw_info.ram_max_len) { + hio_warn("%s: ram info error\n", dev->name); + ret = -EINVAL; + goto out; + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + dev->hw_info.log_sz = SSD_LOG_MAX_SZ; + } else { + val = ssd_reg32_read(dev->ctrlp + SSD_LOG_INFO_REG); + dev->hw_info.log_sz = 0x1000 * (1U << (val & 0xFF)); + } + if (0 == dev->hw_info.log_sz) { + hio_warn("%s: log size error\n", dev->name); + ret = -EINVAL; + goto out; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_BBT_BASE_REG); + dev->hw_info.bbt_base = 0x40000ull * (val & 0xFFFF); + dev->hw_info.bbt_size = 0x40000 * (((val >> 16) & 0xFFFF) + 1) / (dev->hw_info.max_ch * dev->hw_info.nr_chip); + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + if (dev->hw_info.bbt_base > dev->hw_info.ram_size || 0 == dev->hw_info.bbt_size) { + hio_warn("%s: bbt info error\n", dev->name); + ret = -EINVAL; + goto out; + } + } + + val = ssd_reg32_read(dev->ctrlp + SSD_ECT_BASE_REG); + dev->hw_info.md_base = 0x40000ull * (val & 0xFFFF); + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + dev->hw_info.md_size = 0x40000 * (((val >> 16) & 0xFFF) + 1) / (dev->hw_info.max_ch * dev->hw_info.nr_chip); + } else { + dev->hw_info.md_size = 0x40000 * (((val >> 16) & 0xFFF) + 1) / (dev->hw_info.nr_chip); + } + dev->hw_info.md_entry_sz = 8 * (1U << ((val >> 28) & 0xF)); + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3) { + if (dev->hw_info.md_base > dev->hw_info.ram_size || 0 == dev->hw_info.md_size || + 0 == dev->hw_info.md_entry_sz || dev->hw_info.md_entry_sz > dev->hw_info.md_size) { + hio_warn("%s: md info error\n", dev->name); + ret = -EINVAL; + goto out; + } + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + dev->hw_info.nand_wbuff_base = dev->hw_info.ram_size + 1; + } else { + val = ssd_reg32_read(dev->ctrlp + SSD_NAND_BUFF_BASE); + dev->hw_info.nand_wbuff_base = 0x8000ull * val; + } + } + + /* flash info */ + if (mode <= SSD_DRV_MODE_DEBUG) { + if (dev->hw_info.nr_ctrl > 1) { + val = ssd_reg32_read(dev->ctrlp + SSD_CTRL_VER_REG); + dev->hw_info.ctrl_ver = val & 0xFFF; + hio_info("%s: controller firmware version: %03X\n", dev->name, dev->hw_info.ctrl_ver); + } + + val64 = ssd_reg_read(dev->ctrlp + SSD_FLASH_INFO_REG0); + dev->hw_info.nand_vendor_id = ((val64 >> 56) & 0xFF); + dev->hw_info.nand_dev_id = ((val64 >> 48) & 0xFF); + + dev->hw_info.block_count = (((val64 >> 32) & 0xFFFF) + 1); + dev->hw_info.page_count = ((val64>>16) & 0xFFFF); + dev->hw_info.page_size = (val64 & 0xFFFF); + + val = ssd_reg32_read(dev->ctrlp + SSD_BB_INFO_REG); + dev->hw_info.bbf_pages = val & 0xFF; + dev->hw_info.bbf_seek = (val >> 8) & 0x1; + + if (0 == dev->hw_info.block_count || 0 == dev->hw_info.page_count || 0 == dev->hw_info.page_size || dev->hw_info.block_count > INT_MAX) { + hio_warn("%s: flash info error\n", dev->name); + ret = -EINVAL; + goto out; + } + + //xx + dev->hw_info.oob_size = SSD_NAND_OOB_SZ; //(dev->hw_info.page_size) >> 5; + + val = ssd_reg32_read(dev->ctrlp + SSD_VALID_PAGES_REG); + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + dev->hw_info.valid_pages = val & 0x3FF; + dev->hw_info.max_valid_pages = (val>>20) & 0x3FF; + } else { + dev->hw_info.valid_pages = val & 0x7FFF; + dev->hw_info.max_valid_pages = (val>>15) & 0x7FFF; + } + if (0 == dev->hw_info.valid_pages || 0 == dev->hw_info.max_valid_pages || + dev->hw_info.valid_pages > dev->hw_info.max_valid_pages || dev->hw_info.max_valid_pages > dev->hw_info.page_count) { + hio_warn("%s: valid page info error: valid_pages %d, max_valid_pages %d\n", dev->name, dev->hw_info.valid_pages, dev->hw_info.max_valid_pages); + ret = -EINVAL; + goto out; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_RESERVED_BLKS_REG); + dev->hw_info.reserved_blks = val & 0xFFFF; + dev->hw_info.md_reserved_blks = (val >> 16) & 0xFF; + if (dev->protocol_info.ver <= SSD_PROTOCOL_V3) { + dev->hw_info.md_reserved_blks = SSD_BBT_RESERVED; + } + if (dev->hw_info.reserved_blks > dev->hw_info.block_count || dev->hw_info.md_reserved_blks > dev->hw_info.block_count) { + hio_warn("%s: reserved blocks info error: reserved_blks %d, md_reserved_blks %d\n", dev->name, dev->hw_info.reserved_blks, dev->hw_info.md_reserved_blks); + ret = -EINVAL; + goto out; + } + } + + /* size */ + if (mode < SSD_DRV_MODE_DEBUG) { + dev->hw_info.size = (uint64_t)dev->hw_info.valid_pages * dev->hw_info.page_size; + dev->hw_info.size *= (dev->hw_info.block_count - dev->hw_info.reserved_blks); + dev->hw_info.size *= ((uint64_t)dev->hw_info.nr_data_ch * (uint64_t)dev->hw_info.nr_chip * (uint64_t)dev->hw_info.nr_ctrl); + } + + /* extend hardware info */ + val = ssd_reg32_read(dev->ctrlp + SSD_PCB_VER_REG); + dev->hw_info_ext.board_type = (val >> 24) & 0xF; + + dev->hw_info_ext.form_factor = SSD_FORM_FACTOR_FHHL; + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2_1) { + dev->hw_info_ext.form_factor = (val >> 31) & 0x1; + } + /* + dev->hw_info_ext.cap_type = (val >> 28) & 0x3; + if (SSD_BM_CAP_VINA != dev->hw_info_ext.cap_type && SSD_BM_CAP_JH != dev->hw_info_ext.cap_type) { + dev->hw_info_ext.cap_type = SSD_BM_CAP_VINA; + }*/ + + /* power loss protect */ + val = ssd_reg32_read(dev->ctrlp + SSD_PLP_INFO_REG); + dev->hw_info_ext.plp_type = (val & 0x3); + if (dev->protocol_info.ver >= SSD_PROTOCOL_V3_2) { + /* 3 or 4 cap */ + dev->hw_info_ext.cap_type = ((val >> 2)& 0x1); + } + + /* work mode */ + val = ssd_reg32_read(dev->ctrlp + SSD_CH_INFO_REG); + dev->hw_info_ext.work_mode = (val >> 25) & 0x1; + +out: + /* skip error if not in standard mode */ + if (mode != SSD_DRV_MODE_STANDARD) { + ret = 0; + } + return ret; +} + +static void ssd_cleanup_response(struct ssd_device *dev) +{ + int resp_msg_sz = dev->hw_info.resp_msg_sz * dev->hw_info.cmd_fifo_sz * SSD_MSIX_VEC; + int resp_ptr_sz = dev->hw_info.resp_ptr_sz * SSD_MSIX_VEC; + + pci_free_consistent(dev->pdev, resp_ptr_sz, dev->resp_ptr_base, dev->resp_ptr_base_dma); + pci_free_consistent(dev->pdev, resp_msg_sz, dev->resp_msg_base, dev->resp_msg_base_dma); +} + +static int ssd_init_response(struct ssd_device *dev) +{ + int resp_msg_sz = dev->hw_info.resp_msg_sz * dev->hw_info.cmd_fifo_sz * SSD_MSIX_VEC; + int resp_ptr_sz = dev->hw_info.resp_ptr_sz * SSD_MSIX_VEC; + + dev->resp_msg_base = pci_alloc_consistent(dev->pdev, resp_msg_sz, &(dev->resp_msg_base_dma)); + if (!dev->resp_msg_base) { + hio_warn("%s: unable to allocate resp msg DMA buffer\n", dev->name); + goto out_alloc_resp_msg; + } + memset(dev->resp_msg_base, 0xFF, resp_msg_sz); + + dev->resp_ptr_base = pci_alloc_consistent(dev->pdev, resp_ptr_sz, &(dev->resp_ptr_base_dma)); + if (!dev->resp_ptr_base){ + hio_warn("%s: unable to allocate resp ptr DMA buffer\n", dev->name); + goto out_alloc_resp_ptr; + } + memset(dev->resp_ptr_base, 0, resp_ptr_sz); + dev->resp_idx = *(uint32_t *)(dev->resp_ptr_base) = dev->hw_info.cmd_fifo_sz * 2 - 1; + + ssd_reg_write(dev->ctrlp + SSD_RESP_FIFO_REG, dev->resp_msg_base_dma); + ssd_reg_write(dev->ctrlp + SSD_RESP_PTR_REG, dev->resp_ptr_base_dma); + + return 0; + +out_alloc_resp_ptr: + pci_free_consistent(dev->pdev, resp_msg_sz, dev->resp_msg_base, dev->resp_msg_base_dma); +out_alloc_resp_msg: + return -ENOMEM; +} + +static int ssd_cleanup_cmd(struct ssd_device *dev) +{ + int msg_sz = ALIGN(sizeof(struct ssd_rw_msg) + (dev->hw_info.cmd_max_sg - 1) * sizeof(struct ssd_sg_entry), SSD_DMA_ALIGN); + int i; + + for (i=0; i<(int)dev->hw_info.cmd_fifo_sz; i++) { + kfree(dev->cmd[i].sgl); + } + kfree(dev->cmd); + pci_free_consistent(dev->pdev, (msg_sz * dev->hw_info.cmd_fifo_sz), dev->msg_base, dev->msg_base_dma); + return 0; +} + +static int ssd_init_cmd(struct ssd_device *dev) +{ + int sgl_sz = sizeof(struct scatterlist) * dev->hw_info.cmd_max_sg; + int cmd_sz = sizeof(struct ssd_cmd) * dev->hw_info.cmd_fifo_sz; + int msg_sz = ALIGN(sizeof(struct ssd_rw_msg) + (dev->hw_info.cmd_max_sg - 1) * sizeof(struct ssd_sg_entry), SSD_DMA_ALIGN); + int i; + + spin_lock_init(&dev->cmd_lock); + + dev->msg_base = pci_alloc_consistent(dev->pdev, (msg_sz * dev->hw_info.cmd_fifo_sz), &dev->msg_base_dma); + if (!dev->msg_base) { + hio_warn("%s: can not alloc cmd msg\n", dev->name); + goto out_alloc_msg; + } + + dev->cmd = kmalloc(cmd_sz, GFP_KERNEL); + if (!dev->cmd) { + hio_warn("%s: can not alloc cmd\n", dev->name); + goto out_alloc_cmd; + } + memset(dev->cmd, 0, cmd_sz); + + for (i=0; i<(int)dev->hw_info.cmd_fifo_sz; i++) { + dev->cmd[i].sgl = kmalloc(sgl_sz, GFP_KERNEL); + if (!dev->cmd[i].sgl) { + hio_warn("%s: can not alloc cmd sgl %d\n", dev->name, i); + goto out_alloc_sgl; + } + + dev->cmd[i].msg = dev->msg_base + (msg_sz * i); + dev->cmd[i].msg_dma = dev->msg_base_dma + ((dma_addr_t)msg_sz * i); + + dev->cmd[i].dev = dev; + dev->cmd[i].tag = i; + dev->cmd[i].flag = 0; + + INIT_LIST_HEAD(&dev->cmd[i].list); + } + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3) { + dev->scmd = ssd_dispatch_cmd; + } else { + ssd_reg_write(dev->ctrlp + SSD_MSG_BASE_REG, dev->msg_base_dma); + if (finject) { + dev->scmd = ssd_send_cmd_db; + } else { + dev->scmd = ssd_send_cmd; + } + } + + return 0; + +out_alloc_sgl: + for (i--; i>=0; i--) { + kfree(dev->cmd[i].sgl); + } + kfree(dev->cmd); +out_alloc_cmd: + pci_free_consistent(dev->pdev, (msg_sz * dev->hw_info.cmd_fifo_sz), dev->msg_base, dev->msg_base_dma); +out_alloc_msg: + return -ENOMEM; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) +static irqreturn_t ssd_interrupt_check(int irq, void *dev_id) +{ + struct ssd_queue *queue = (struct ssd_queue *)dev_id; + + if (*(uint32_t *)queue->resp_ptr == queue->resp_idx) { + return IRQ_NONE; + } + + return IRQ_WAKE_THREAD; +} + +static irqreturn_t ssd_interrupt_threaded(int irq, void *dev_id) +{ + struct ssd_queue *queue = (struct ssd_queue *)dev_id; + struct ssd_device *dev = (struct ssd_device *)queue->dev; + struct ssd_cmd *cmd; + union ssd_response_msq __msg; + union ssd_response_msq *msg = &__msg; + uint64_t *u64_msg; + uint32_t resp_idx = queue->resp_idx; + uint32_t new_resp_idx = *(uint32_t *)queue->resp_ptr; + uint32_t end_resp_idx; + + if (unlikely(resp_idx == new_resp_idx)) { + return IRQ_NONE; + } + + end_resp_idx = new_resp_idx & queue->resp_idx_mask; + + do { + resp_idx = (resp_idx + 1) & queue->resp_idx_mask; + + /* the resp msg */ + u64_msg = (uint64_t *)(queue->resp_msg + queue->resp_msg_sz * resp_idx); + msg->u64_msg = *u64_msg; + + if (unlikely(msg->u64_msg == (uint64_t)(-1))) { + hio_err("%s: empty resp msg: queue %d idx %u\n", dev->name, queue->idx, resp_idx); + continue; + } + /* clear the resp msg */ + *u64_msg = (uint64_t)(-1); + + cmd = &queue->cmd[msg->resp_msg.tag]; + /*if (unlikely(!cmd->bio)) { + printk(KERN_WARNING "%s: unknown tag %d fun %#x\n", + dev->name, msg->resp_msg.tag, msg->resp_msg.fun); + continue; + }*/ + + if(unlikely(msg->resp_msg.status & (uint32_t)status_mask)) { + cmd->errors = -EIO; + } else { + cmd->errors = 0; + } + cmd->nr_log = msg->log_resp_msg.nr_log; + + ssd_done(cmd); + + if (unlikely(msg->resp_msg.fun != SSD_FUNC_READ_LOG && msg->resp_msg.log > 0)) { + (void)test_and_set_bit(SSD_LOG_HW, &dev->state); + if (test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->log_work); + } + } + + if (unlikely(msg->resp_msg.status)) { + if (msg->resp_msg.fun == SSD_FUNC_READ || msg->resp_msg.fun == SSD_FUNC_WRITE) { + hio_err("%s: I/O error %d: tag %d fun %#x\n", + dev->name, msg->resp_msg.status, msg->resp_msg.tag, msg->resp_msg.fun); + + /* alarm led */ + ssd_set_alarm(dev); + queue->io_stat.nr_rwerr++; + ssd_gen_swlog(dev, SSD_LOG_EIO, msg->u32_msg[0]); + } else { + hio_info("%s: CMD error %d: tag %d fun %#x\n", + dev->name, msg->resp_msg.status, msg->resp_msg.tag, msg->resp_msg.fun); + + ssd_gen_swlog(dev, SSD_LOG_ECMD, msg->u32_msg[0]); + } + queue->io_stat.nr_ioerr++; + } + + if (msg->resp_msg.fun == SSD_FUNC_READ || + msg->resp_msg.fun == SSD_FUNC_NAND_READ_WOOB || + msg->resp_msg.fun == SSD_FUNC_NAND_READ) { + + queue->ecc_info.bitflip[msg->resp_msg.bitflip]++; + } + }while (resp_idx != end_resp_idx); + + queue->resp_idx = new_resp_idx; + + return IRQ_HANDLED; +} +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) +static irqreturn_t ssd_interrupt(int irq, void *dev_id, struct pt_regs *regs) +#else +static irqreturn_t ssd_interrupt(int irq, void *dev_id) +#endif +{ + struct ssd_queue *queue = (struct ssd_queue *)dev_id; + struct ssd_device *dev = (struct ssd_device *)queue->dev; + struct ssd_cmd *cmd; + union ssd_response_msq __msg; + union ssd_response_msq *msg = &__msg; + uint64_t *u64_msg; + uint32_t resp_idx = queue->resp_idx; + uint32_t new_resp_idx = *(uint32_t *)queue->resp_ptr; + uint32_t end_resp_idx; + + if (unlikely(resp_idx == new_resp_idx)) { + return IRQ_NONE; + } + +#if (defined SSD_ESCAPE_IRQ) + if (SSD_INT_MSIX != dev->int_mode) { + dev->irq_cpu = smp_processor_id(); + } +#endif + + end_resp_idx = new_resp_idx & queue->resp_idx_mask; + + do { + resp_idx = (resp_idx + 1) & queue->resp_idx_mask; + + /* the resp msg */ + u64_msg = (uint64_t *)(queue->resp_msg + queue->resp_msg_sz * resp_idx); + msg->u64_msg = *u64_msg; + + if (unlikely(msg->u64_msg == (uint64_t)(-1))) { + hio_err("%s: empty resp msg: queue %d idx %u\n", dev->name, queue->idx, resp_idx); + continue; + } + /* clear the resp msg */ + *u64_msg = (uint64_t)(-1); + + cmd = &queue->cmd[msg->resp_msg.tag]; + /*if (unlikely(!cmd->bio)) { + printk(KERN_WARNING "%s: unknown tag %d fun %#x\n", + dev->name, msg->resp_msg.tag, msg->resp_msg.fun); + continue; + }*/ + + if(unlikely(msg->resp_msg.status & (uint32_t)status_mask)) { + cmd->errors = -EIO; + } else { + cmd->errors = 0; + } + cmd->nr_log = msg->log_resp_msg.nr_log; + + ssd_done_bh(cmd); + + if (unlikely(msg->resp_msg.fun != SSD_FUNC_READ_LOG && msg->resp_msg.log > 0)) { + (void)test_and_set_bit(SSD_LOG_HW, &dev->state); + if (test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->log_work); + } + } + + if (unlikely(msg->resp_msg.status)) { + if (msg->resp_msg.fun == SSD_FUNC_READ || msg->resp_msg.fun == SSD_FUNC_WRITE) { + hio_err("%s: I/O error %d: tag %d fun %#x\n", + dev->name, msg->resp_msg.status, msg->resp_msg.tag, msg->resp_msg.fun); + + /* alarm led */ + ssd_set_alarm(dev); + queue->io_stat.nr_rwerr++; + ssd_gen_swlog(dev, SSD_LOG_EIO, msg->u32_msg[0]); + } else { + hio_info("%s: CMD error %d: tag %d fun %#x\n", + dev->name, msg->resp_msg.status, msg->resp_msg.tag, msg->resp_msg.fun); + + ssd_gen_swlog(dev, SSD_LOG_ECMD, msg->u32_msg[0]); + } + queue->io_stat.nr_ioerr++; + } + + if (msg->resp_msg.fun == SSD_FUNC_READ || + msg->resp_msg.fun == SSD_FUNC_NAND_READ_WOOB || + msg->resp_msg.fun == SSD_FUNC_NAND_READ) { + + queue->ecc_info.bitflip[msg->resp_msg.bitflip]++; + } + }while (resp_idx != end_resp_idx); + + queue->resp_idx = new_resp_idx; + + return IRQ_HANDLED; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) +static irqreturn_t ssd_interrupt_legacy(int irq, void *dev_id, struct pt_regs *regs) +#else +static irqreturn_t ssd_interrupt_legacy(int irq, void *dev_id) +#endif +{ + irqreturn_t ret; + struct ssd_queue *queue = (struct ssd_queue *)dev_id; + struct ssd_device *dev = (struct ssd_device *)queue->dev; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) + ret = ssd_interrupt(irq, dev_id, regs); +#else + ret = ssd_interrupt(irq, dev_id); +#endif + + /* clear intr */ + if (IRQ_HANDLED == ret) { + ssd_reg32_write(dev->ctrlp + SSD_CLEAR_INTR_REG, 1); + } + + return ret; +} + +static void ssd_reset_resp_ptr(struct ssd_device *dev) +{ + int i; + + for (i=0; inr_queue; i++) { + *(uint32_t *)dev->queue[i].resp_ptr = dev->queue[i].resp_idx = (dev->hw_info.cmd_fifo_sz * 2) - 1; + } +} + +static void ssd_free_irq(struct ssd_device *dev) +{ + int i; + +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + if (SSD_INT_MSIX == dev->int_mode) { + for (i=0; inr_queue; i++) { + irq_set_affinity_hint(dev->entry[i].vector, NULL); + } + } +#endif + + for (i=0; inr_queue; i++) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + free_irq(dev->entry[i].vector, &dev->queue[i]); +#else + free_irq(pci_irq_vector(dev->pdev, i), &dev->queue[i]); +#endif + } + + if (SSD_INT_MSIX == dev->int_mode) { + pci_disable_msix(dev->pdev); + } else if (SSD_INT_MSI == dev->int_mode) { + pci_disable_msi(dev->pdev); + } + +} + +static int ssd_init_irq(struct ssd_device *dev) +{ +#if (!defined MODULE) && (defined SSD_MSIX_AFFINITY_FORCE) && (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + const struct cpumask *cpu_mask = NULL; + static int cpu_affinity = 0; +#endif +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + const struct cpumask *mask = NULL; + static int cpu = 0; + int j; +#endif + int i; + unsigned long flags = 0; + int ret = 0; + + ssd_reg32_write(dev->ctrlp + SSD_INTR_INTERVAL_REG, 0x800); + +#ifdef SSD_ESCAPE_IRQ + dev->irq_cpu = -1; +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + if (int_mode >= SSD_INT_MSIX && pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) { + dev->nr_queue = SSD_MSIX_VEC; + + for (i=0; inr_queue; i++) { + dev->entry[i].entry = i; + } + for (;;) { + ret = pci_enable_msix(dev->pdev, dev->entry, dev->nr_queue); + if (ret == 0) { + break; + } else if (ret > 0) { + dev->nr_queue = ret; + } else { + hio_warn("%s: can not enable msix\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out; + } + } + +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6)) + mask = (dev_to_node(&dev->pdev->dev) == -1) ? cpu_online_mask : cpumask_of_node(dev_to_node(&dev->pdev->dev)); + if ((0 == cpu) || (!cpumask_intersects(mask, cpumask_of(cpu)))) { + cpu = cpumask_first(mask); + } + for (i=0; inr_queue; i++) { + irq_set_affinity_hint(dev->entry[i].vector, cpumask_of(cpu)); + cpu = cpumask_next(cpu, mask); + if (cpu >= nr_cpu_ids) { + cpu = cpumask_first(mask); + } + } +#endif + + dev->int_mode = SSD_INT_MSIX; + } else if (int_mode >= SSD_INT_MSI && pci_find_capability(dev->pdev, PCI_CAP_ID_MSI)) { + ret = pci_enable_msi(dev->pdev); + if (ret) { + hio_warn("%s: can not enable msi\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out; + } + + dev->nr_queue = 1; + dev->entry[0].vector = dev->pdev->irq; + + dev->int_mode = SSD_INT_MSI; + } else { + dev->nr_queue = 1; + dev->entry[0].vector = dev->pdev->irq; + + dev->int_mode = SSD_INT_LEGACY; + } +#else + if (int_mode >= SSD_INT_MSIX && pci_find_capability(dev->pdev, PCI_CAP_ID_MSIX)) { + dev->nr_queue = SSD_MSIX_VEC; + + dev->nr_queue = pci_alloc_irq_vectors(dev->pdev, 1, dev->nr_queue, PCI_IRQ_MSIX | PCI_IRQ_AFFINITY); + if (dev->nr_queue <= 0) { + ret = -EIO; + hio_warn("%s: can not enable msix\n", dev->name); + ssd_set_alarm(dev); + goto out; + } + + dev->int_mode = SSD_INT_MSIX; + } else if (int_mode >= SSD_INT_MSI && pci_find_capability(dev->pdev, PCI_CAP_ID_MSI)) { + + ret = pci_alloc_irq_vectors(dev->pdev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_AFFINITY); + if (ret <= 0) { + ret = -EIO; + hio_warn("%s: can not enable msi\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out; + } + dev->nr_queue = 1; + + dev->int_mode = SSD_INT_MSI; + } else { + ret = pci_alloc_irq_vectors(dev->pdev, 1, 1, PCI_IRQ_LEGACY); + + if (ret <= 0) { + ret = -EIO; + hio_warn("%s: can not enable msi\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out; + } + dev->nr_queue = 1; + + dev->int_mode = SSD_INT_LEGACY; + } +#endif + + for (i=0; inr_queue; i++) { + if (dev->nr_queue > 1) { + snprintf(dev->queue[i].name, SSD_QUEUE_NAME_LEN, "%s_e100-%d", dev->name, i); + } else { + snprintf(dev->queue[i].name, SSD_QUEUE_NAME_LEN, "%s_e100", dev->name); + } + + dev->queue[i].dev = dev; + dev->queue[i].idx = i; + + dev->queue[i].resp_idx = (dev->hw_info.cmd_fifo_sz * 2) - 1; + dev->queue[i].resp_idx_mask = dev->hw_info.cmd_fifo_sz - 1; + + dev->queue[i].resp_msg_sz = dev->hw_info.resp_msg_sz; + dev->queue[i].resp_msg = dev->resp_msg_base + dev->hw_info.resp_msg_sz * dev->hw_info.cmd_fifo_sz * i; + dev->queue[i].resp_ptr = dev->resp_ptr_base + dev->hw_info.resp_ptr_sz * i; + *(uint32_t *)dev->queue[i].resp_ptr = dev->queue[i].resp_idx; + + dev->queue[i].cmd = dev->cmd; + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) + flags = IRQF_SHARED; +#else + flags = SA_SHIRQ; +#endif + + for (i=0; inr_queue; i++) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) + if (dev->int_mode == SSD_INT_LEGACY) { + ret = request_irq(dev->entry[i].vector, &ssd_interrupt_legacy, flags, dev->queue[i].name, &dev->queue[i]); + } else { + ret = request_irq(dev->entry[i].vector, &ssd_interrupt, flags, dev->queue[i].name, &dev->queue[i]); + } +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + if (threaded_irq) { + ret = request_threaded_irq(dev->entry[i].vector, ssd_interrupt_check, ssd_interrupt_threaded, flags, dev->queue[i].name, &dev->queue[i]); + } else if (dev->int_mode == SSD_INT_LEGACY) { + ret = request_irq(dev->entry[i].vector, &ssd_interrupt_legacy, flags, dev->queue[i].name, &dev->queue[i]); + } else { + ret = request_irq(dev->entry[i].vector, &ssd_interrupt, flags, dev->queue[i].name, &dev->queue[i]); + } +#else + if (threaded_irq) { + ret = request_threaded_irq(pci_irq_vector(dev->pdev, i), ssd_interrupt_check, ssd_interrupt_threaded, flags, dev->queue[i].name, &dev->queue[i]); + } else if (dev->int_mode == SSD_INT_LEGACY) { + ret = request_irq(pci_irq_vector(dev->pdev, i), &ssd_interrupt_legacy, flags, dev->queue[i].name, &dev->queue[i]); + } else { + ret = request_irq(pci_irq_vector(dev->pdev, i), &ssd_interrupt, flags, dev->queue[i].name, &dev->queue[i]); + } +#endif + if (ret) { + hio_warn("%s: request irq failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_request_irq; + } + +#if (!defined MODULE) && (defined SSD_MSIX_AFFINITY_FORCE) && (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + cpu_mask = (dev_to_node(&dev->pdev->dev) == -1) ? cpu_online_mask : cpumask_of_node(dev_to_node(&dev->pdev->dev)); + if (SSD_INT_MSIX == dev->int_mode) { + if ((0 == cpu_affinity) || (!cpumask_intersects(mask, cpumask_of(cpu_affinity)))) { + cpu_affinity = cpumask_first(cpu_mask); + } + + irq_set_affinity(dev->entry[i].vector, cpumask_of(cpu_affinity)); + cpu_affinity = cpumask_next(cpu_affinity, cpu_mask); + if (cpu_affinity >= nr_cpu_ids) { + cpu_affinity = cpumask_first(cpu_mask); + } + } +#endif + } + + return ret; + +out_request_irq: +#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) || (defined RHEL_MAJOR && RHEL_MAJOR == 6)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + if (SSD_INT_MSIX == dev->int_mode) { + for (j=0; jnr_queue; j++) { + irq_set_affinity_hint(dev->entry[j].vector, NULL); + } + } +#endif + + for (i--; i>=0; i--) { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)) + free_irq(dev->entry[i].vector, &dev->queue[i]); +#else + free_irq(pci_irq_vector(dev->pdev, i), &dev->queue[i]); +#endif + } + + if (SSD_INT_MSIX == dev->int_mode) { + pci_disable_msix(dev->pdev); + } else if (SSD_INT_MSI == dev->int_mode) { + pci_disable_msi(dev->pdev); + } + +out: + return ret; +} + +static void ssd_initial_log(struct ssd_device *dev) +{ + uint32_t val; + uint32_t speed, width; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return; + } + + val = ssd_reg32_read(dev->ctrlp + SSD_POWER_ON_REG); + if (val) { + // Poweron detection switched to SSD_INTR_INTERVAL_REG in 'ssd_init_smart' + //ssd_gen_swlog(dev, SSD_LOG_POWER_ON, dev->hw_info.bridge_ver); + } + + val = ssd_reg32_read(dev->ctrlp + SSD_PCIE_LINKSTATUS_REG); + speed = val & 0xF; + width = (val >> 4)& 0x3F; + if (0x1 == speed) { + hio_info("%s: PCIe: 2.5GT/s, x%u\n", dev->name, width); + } else if (0x2 == speed) { + hio_info("%s: PCIe: 5GT/s, x%u\n", dev->name, width); + } else { + hio_info("%s: PCIe: unknown GT/s, x%u\n", dev->name, width); + } + ssd_gen_swlog(dev, SSD_LOG_PCIE_LINK_STATUS, val); + + return; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static void ssd_hwmon_worker(void *data) +{ + struct ssd_device *dev = (struct ssd_device *)data; +#else +static void ssd_hwmon_worker(struct work_struct *work) +{ + struct ssd_device *dev = container_of(work, struct ssd_device, hwmon_work); +#endif + + if (ssd_check_hw(dev)) { + //hio_err("%s: check hardware failed\n", dev->name); + return; + } + + ssd_check_clock(dev); + ssd_check_volt(dev); + + ssd_mon_boardvolt(dev); +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static void ssd_tempmon_worker(void *data) +{ + struct ssd_device *dev = (struct ssd_device *)data; +#else +static void ssd_tempmon_worker(struct work_struct *work) +{ + struct ssd_device *dev = container_of(work, struct ssd_device, tempmon_work); +#endif + + if (ssd_check_hw(dev)) { + //hio_err("%s: check hardware failed\n", dev->name); + return; + } + + ssd_mon_temp(dev); +} + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) +static void ssd_capmon_worker(void *data) +{ + struct ssd_device *dev = (struct ssd_device *)data; +#else +static void ssd_capmon_worker(struct work_struct *work) +{ + struct ssd_device *dev = container_of(work, struct ssd_device, capmon_work); +#endif + uint32_t cap = 0; + uint32_t cap_threshold = SSD_PL_CAP_THRESHOLD; + int ret = 0; + + if (dev->protocol_info.ver < SSD_PROTOCOL_V3_2) { + return; + } + + if (dev->hw_info_ext.form_factor == SSD_FORM_FACTOR_FHHL && dev->hw_info.pcb_ver < 'B') { + return; + } + + /* fault before? */ + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ret = ssd_check_pl_cap_fast(dev); + if (ret) { + return; + } + } + + /* learn */ + ret = ssd_do_cap_learn(dev, &cap); + if (ret) { + hio_err("%s: cap learn failed\n", dev->name); + ssd_gen_swlog(dev, SSD_LOG_CAP_LEARN_FAULT, 0); + return; + } + + ssd_gen_swlog(dev, SSD_LOG_CAP_STATUS, cap); + + if (SSD_PL_CAP_CP == dev->hw_info_ext.cap_type) { + cap_threshold = SSD_PL_CAP_CP_THRESHOLD; + } + + //use the fw event id? + if (cap < cap_threshold) { + if (!test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_BATTERY_FAULT, 0); + } + } else if (cap >= (cap_threshold + SSD_PL_CAP_THRESHOLD_HYST)) { + if (test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon)) { + ssd_gen_swlog(dev, SSD_LOG_BATTERY_OK, 0); + } + } +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) +static void ssd_routine_start(void *data) +#else +static void ssd_routine_start(struct timer_list *t) +#endif +{ + struct ssd_device *dev; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)) + if (!data) { + return; + } + dev = data; +#else + dev = from_timer(dev, t, routine_timer); +#endif + + dev->routine_tick++; + + if (test_bit(SSD_INIT_WORKQ, &dev->state) && !ssd_busy(dev)) { + (void)test_and_set_bit(SSD_LOG_HW, &dev->state); + queue_work(dev->workq, &dev->log_work); + } + + if ((dev->routine_tick % SSD_HWMON_ROUTINE_TICK) == 0 && test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->hwmon_work); + } + + if ((dev->routine_tick % SSD_CAPMON_ROUTINE_TICK) == 0 && test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->capmon_work); + } + + if ((dev->routine_tick % SSD_CAPMON2_ROUTINE_TICK) == 0 && test_bit(SSD_HWMON_PL_CAP(SSD_PL_CAP), &dev->hwmon) && test_bit(SSD_INIT_WORKQ, &dev->state)) { + /* CAP fault? check again */ + queue_work(dev->workq, &dev->capmon_work); + } + + if (test_bit(SSD_INIT_WORKQ, &dev->state)) { + queue_work(dev->workq, &dev->tempmon_work); + } + + /* schedule routine */ + mod_timer(&dev->routine_timer, jiffies + msecs_to_jiffies(SSD_ROUTINE_INTERVAL)); +} + +static void ssd_cleanup_routine(struct ssd_device *dev) +{ + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return; + + (void)ssd_del_timer(&dev->routine_timer); + + (void)ssd_del_timer(&dev->bm_timer); +} + +static int ssd_init_routine(struct ssd_device *dev) +{ + if (unlikely(mode != SSD_DRV_MODE_STANDARD)) + return 0; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + INIT_WORK(&dev->bm_work, ssd_bm_worker, dev); + INIT_WORK(&dev->hwmon_work, ssd_hwmon_worker, dev); + INIT_WORK(&dev->capmon_work, ssd_capmon_worker, dev); + INIT_WORK(&dev->tempmon_work, ssd_tempmon_worker, dev); +#else + INIT_WORK(&dev->bm_work, ssd_bm_worker); + INIT_WORK(&dev->hwmon_work, ssd_hwmon_worker); + INIT_WORK(&dev->capmon_work, ssd_capmon_worker); + INIT_WORK(&dev->tempmon_work, ssd_tempmon_worker); +#endif + + /* initial log */ + ssd_initial_log(dev); + + /* schedule bm routine */ + ssd_add_timer(&dev->bm_timer, msecs_to_jiffies(SSD_BM_CAP_LEARNING_DELAY), ssd_bm_routine_start, dev); + + /* schedule routine */ + ssd_add_timer(&dev->routine_timer, msecs_to_jiffies(SSD_ROUTINE_INTERVAL), ssd_routine_start, dev); + + return 0; +} + +static void +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) +__devexit +#endif +ssd_remove_one (struct pci_dev *pdev) +{ + struct ssd_device *dev; + + if (!pdev) { + return; + } + + dev = pci_get_drvdata(pdev); + if (!dev) { + return; + } + + list_del_init(&dev->list); + + ssd_unregister_sysfs(dev); + + /* offline firstly */ + test_and_clear_bit(SSD_ONLINE, &dev->state); + + /* clean work queue first */ + if (!dev->slave) { + test_and_clear_bit(SSD_INIT_WORKQ, &dev->state); + ssd_cleanup_workq(dev); + } + + /* flush cache */ + (void)ssd_flush(dev); + (void)ssd_save_md(dev); + + /* save smart */ + if (!dev->slave) { + ssd_save_smart(dev); + } + + if (test_and_clear_bit(SSD_INIT_BD, &dev->state)) { + ssd_cleanup_blkdev(dev); + } + + if (!dev->slave) { + ssd_cleanup_chardev(dev); + } + + /* clean routine */ + if (!dev->slave) { + ssd_cleanup_routine(dev); + } + + ssd_cleanup_queue(dev); + + ssd_cleanup_tag(dev); + ssd_cleanup_thread(dev); + + ssd_free_irq(dev); + + ssd_cleanup_dcmd(dev); + ssd_cleanup_cmd(dev); + ssd_cleanup_response(dev); + + if (!dev->slave) { + ssd_cleanup_log(dev); + } + + if (dev->reload_fw) { //reload fw + dev->has_non_0x98_reg_access = 1; + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FW); + } + + /* unmap physical adress */ +#ifdef LINUX_SUSE_OS + iounmap(dev->ctrlp); +#else + pci_iounmap(pdev, dev->ctrlp); +#endif + + release_mem_region(dev->mmio_base, dev->mmio_len); + + pci_disable_device(pdev); + + pci_set_drvdata(pdev, NULL); + + ssd_put(dev); +} + +static int +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) +__devinit +#endif +ssd_init_one(struct pci_dev *pdev, + const struct pci_device_id *ent) +{ + struct ssd_device *dev; + int ret = 0; + + if (!pdev || !ent) { + ret = -EINVAL; + goto out; + } + + dev = kmalloc(sizeof(struct ssd_device), GFP_KERNEL); + if (!dev) { + ret = -ENOMEM; + goto out_alloc_dev; + } + memset(dev, 0, sizeof(struct ssd_device)); + + dev->owner = THIS_MODULE; + + if (SSD_SLAVE_PORT_DEVID == ent->device) { + dev->slave = 1; + } + + dev->idx = ssd_get_index(dev->slave); + if (dev->idx < 0) { + ret = -ENOMEM; + goto out_get_index; + } + + if (!dev->slave) { + snprintf(dev->name, SSD_DEV_NAME_LEN, SSD_DEV_NAME); + ssd_set_dev_name(&dev->name[strlen(SSD_DEV_NAME)], SSD_DEV_NAME_LEN-strlen(SSD_DEV_NAME), dev->idx); + + dev->major = ssd_major; + dev->cmajor = ssd_cmajor; + } else { + snprintf(dev->name, SSD_DEV_NAME_LEN, SSD_SDEV_NAME); + ssd_set_dev_name(&dev->name[strlen(SSD_SDEV_NAME)], SSD_DEV_NAME_LEN-strlen(SSD_SDEV_NAME), dev->idx); + dev->major = ssd_major_sl; + dev->cmajor = 0; + } + + dev->reset_time = (uint64_t)ktime_get_real_seconds(); + + atomic_set(&(dev->refcnt), 0); + atomic_set(&(dev->tocnt), 0); + + mutex_init(&dev->fw_mutex); + + //xx + mutex_init(&dev->gd_mutex); + dev->has_non_0x98_reg_access = 0; + + //init in_flight lock + spin_lock_init(&dev->in_flight_lock); + + dev->pdev = pdev; + pci_set_drvdata(pdev, dev); + + kref_init(&dev->kref); + + ret = pci_enable_device(pdev); + if (ret) { + hio_warn("%s: can not enable device\n", dev->name); + goto out_enable_device; + } + + pci_set_master(pdev); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) + ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK); +#else + ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); +#endif + if (ret) { + hio_warn("%s: set dma mask: failed\n", dev->name); + goto out_set_dma_mask; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) + ret = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); +#else + ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); +#endif + if (ret) { + hio_warn("%s: set consistent dma mask: failed\n", dev->name); + goto out_set_dma_mask; + } + + dev->mmio_base = pci_resource_start(pdev, 0); + dev->mmio_len = pci_resource_len(pdev, 0); + + if (!request_mem_region(dev->mmio_base, dev->mmio_len, SSD_DEV_NAME)) { + hio_warn("%s: can not reserve MMIO region 0\n", dev->name); + ret = -EBUSY; + goto out_request_mem_region; + } + + /* 2.6.9 kernel bug */ + dev->ctrlp = pci_iomap(pdev, 0, 0); + if (!dev->ctrlp) { + hio_warn("%s: can not remap IO region 0\n", dev->name); + ret = -ENOMEM; + goto out_pci_iomap; + } + + ret = ssd_check_hw(dev); + if (ret) { + hio_err("%s: check hardware failed\n", dev->name); + goto out_check_hw; + } + + ret = ssd_init_protocol_info(dev); + if (ret) { + hio_err("%s: init protocol info failed\n", dev->name); + goto out_init_protocol_info; + } + + /* alarm led ? */ + ssd_clear_alarm(dev); + + ret = ssd_init_fw_info(dev); + if (ret) { + hio_err("%s: init firmware info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_fw_info; + } + + /* slave port ? */ + if (dev->slave) { + goto init_next1; + } + + ret = ssd_init_rom_info(dev); + if (ret) { + hio_err("%s: init rom info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_rom_info; + } + + ret = ssd_init_label(dev); + if (ret) { + hio_err("%s: init label failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_label; + } + + ret = ssd_init_workq(dev); + if (ret) { + hio_warn("%s: init workq failed\n", dev->name); + goto out_init_workq; + } + (void)test_and_set_bit(SSD_INIT_WORKQ, &dev->state); + + ret = ssd_init_log(dev); + if (ret) { + hio_err("%s: init log failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_log; + } + + ret = ssd_init_smart(dev); + if (ret) { + hio_err("%s: init info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_smart; + } + +init_next1: + ret = ssd_init_hw_info(dev); + if (ret) { + hio_err("%s: init hardware info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_hw_info; + } + + /* slave port ? */ + if (dev->slave) { + goto init_next2; + } + + ret = ssd_init_sensor(dev); + if (ret) { + hio_err("%s: init sensor failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_sensor; + } + + ret = ssd_init_pl_cap(dev); + if (ret) { + hio_err("%s: int pl_cap failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_pl_cap; + } + +init_next2: + ret = ssd_check_init_state(dev); + if (ret) { + hio_err("%s: check init state failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_check_init_state; + } + + ret = ssd_init_response(dev); + if (ret) { + hio_warn("%s: init resp_msg failed\n", dev->name); + goto out_init_response; + } + + ret = ssd_init_cmd(dev); + if (ret) { + hio_warn("%s: init msg failed\n", dev->name); + goto out_init_cmd; + } + + ret = ssd_init_dcmd(dev); + if (ret) { + hio_warn("%s: init cmd failed\n", dev->name); + goto out_init_dcmd; + } + + ret = ssd_init_irq(dev); + if (ret) { + hio_warn("%s: init irq failed\n", dev->name); + goto out_init_irq; + } + + ret = ssd_init_thread(dev); + if (ret) { + hio_warn("%s: init thread failed\n", dev->name); + goto out_init_thread; + } + + ret = ssd_init_tag(dev); + if(ret) { + hio_warn("%s: init tags failed\n", dev->name); + goto out_init_tags; + } + + /* */ + (void)test_and_set_bit(SSD_ONLINE, &dev->state); + + ret = ssd_init_queue(dev); + if (ret) { + hio_warn("%s: init queue failed\n", dev->name); + goto out_init_queue; + } + + /* slave port ? */ + if (dev->slave) { + goto init_next3; + } + + ret = ssd_init_ot_protect(dev); + if (ret) { + hio_err("%s: int ot_protect failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_int_ot_protect; + } + + ret = ssd_init_wmode(dev); + if (ret) { + hio_warn("%s: init write mode\n", dev->name); + goto out_init_wmode; + } + + /* init routine after hw is ready */ + ret = ssd_init_routine(dev); + if (ret) { + hio_warn("%s: init routine\n", dev->name); + goto out_init_routine; + } + + ret = ssd_init_chardev(dev); + if (ret) { + hio_warn("%s: register char device failed\n", dev->name); + goto out_init_chardev; + } + +init_next3: + ret = ssd_init_blkdev(dev); + if (ret) { + hio_warn("%s: register block device failed\n", dev->name); + goto out_init_blkdev; + } + (void)test_and_set_bit(SSD_INIT_BD, &dev->state); + + ret = ssd_register_sysfs(dev); + if (ret) { + hio_warn("%s: register sysfs failed\n", dev->name); + goto out_register_sysfs; + } + + dev->save_md = 1; + + list_add_tail(&dev->list, &ssd_list); + + return 0; + +out_register_sysfs: + test_and_clear_bit(SSD_INIT_BD, &dev->state); + ssd_cleanup_blkdev(dev); +out_init_blkdev: + /* slave port ? */ + if (!dev->slave) { + ssd_cleanup_chardev(dev); + } +out_init_chardev: + /* slave port ? */ + if (!dev->slave) { + ssd_cleanup_routine(dev); + } +out_init_routine: +out_init_wmode: +out_int_ot_protect: + ssd_cleanup_queue(dev); +out_init_queue: + test_and_clear_bit(SSD_ONLINE, &dev->state); + ssd_cleanup_tag(dev); +out_init_tags: + ssd_cleanup_thread(dev); +out_init_thread: + ssd_free_irq(dev); +out_init_irq: + ssd_cleanup_dcmd(dev); +out_init_dcmd: + ssd_cleanup_cmd(dev); +out_init_cmd: + ssd_cleanup_response(dev); +out_init_response: +out_check_init_state: +out_init_pl_cap: +out_init_sensor: +out_init_hw_info: +out_init_smart: + /* slave port ? */ + if (!dev->slave) { + ssd_cleanup_log(dev); + } +out_init_log: + /* slave port ? */ + if (!dev->slave) { + test_and_clear_bit(SSD_INIT_WORKQ, &dev->state); + ssd_cleanup_workq(dev); + } +out_init_workq: +out_init_label: +out_init_rom_info: +out_init_fw_info: +out_init_protocol_info: +out_check_hw: +#ifdef LINUX_SUSE_OS + iounmap(dev->ctrlp); +#else + pci_iounmap(pdev, dev->ctrlp); +#endif +out_pci_iomap: + release_mem_region(dev->mmio_base, dev->mmio_len); +out_request_mem_region: +out_set_dma_mask: + pci_disable_device(pdev); +out_enable_device: + pci_set_drvdata(pdev, NULL); +out_get_index: + kfree(dev); +out_alloc_dev: +out: + return ret; +} + +static void ssd_cleanup_tasklet(void) +{ + int i; + for_each_online_cpu(i) { + tasklet_kill(&per_cpu(ssd_tasklet, i)); + } +} + +static int ssd_init_tasklet(void) +{ + int i; + + for_each_online_cpu(i) { + INIT_LIST_HEAD(&per_cpu(ssd_doneq, i)); + + if (finject) { + tasklet_init(&per_cpu(ssd_tasklet, i), __ssd_done_db, 0); + } else { + tasklet_init(&per_cpu(ssd_tasklet, i), __ssd_done, 0); + } + } + + return 0; +} + +static struct pci_device_id ssd_pci_tbl[] = { + { 0x10ee, 0x0007, PCI_ANY_ID, PCI_ANY_ID, }, /* g3 */ + { 0x19e5, 0x0007, PCI_ANY_ID, PCI_ANY_ID, }, /* v1 */ + //{ 0x19e5, 0x0008, PCI_ANY_ID, PCI_ANY_ID, }, /* v1 sp*/ + { 0x19e5, 0x0009, PCI_ANY_ID, PCI_ANY_ID, }, /* v2 */ + { 0x19e5, 0x000a, PCI_ANY_ID, PCI_ANY_ID, }, /* v2 dp slave*/ + { 0, } +}; + +/*driver power management handler for pm_ops*/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) +static int ssd_hio_suspend(struct pci_dev *pdev, pm_message_t state) +{ +#else +static int ssd_hio_suspend(struct device *ddev) +{ + struct pci_dev *pdev = to_pci_dev(ddev); +#endif + struct ssd_device *dev; + + + if (!pdev) { + return -EINVAL; + } + + dev = pci_get_drvdata(pdev); + if (!dev) { + return -EINVAL; + } + + hio_warn("%s: suspend disk start.\n", dev->name); + ssd_unregister_sysfs(dev); + + /* offline firstly */ + test_and_clear_bit(SSD_ONLINE, &dev->state); + + /* clean work queue first */ + if (!dev->slave) { + test_and_clear_bit(SSD_INIT_WORKQ, &dev->state); + ssd_cleanup_workq(dev); + } + + /* flush cache */ + (void)ssd_flush(dev); + (void)ssd_save_md(dev); + + /* save smart */ + if (!dev->slave) { + ssd_save_smart(dev); + } + + /* clean routine */ + if (!dev->slave) { + ssd_cleanup_routine(dev); + } + + ssd_cleanup_thread(dev); + + ssd_free_irq(dev); + + if (!dev->slave) { + ssd_cleanup_log(dev); + } + + if (dev->reload_fw) { //reload fw + dev->has_non_0x98_reg_access = 1; + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FW); + } + + /* unmap physical adress */ + if (dev->ctrlp) { +#ifdef LINUX_SUSE_OS + iounmap(dev->ctrlp); +#else + pci_iounmap(pdev, dev->ctrlp); +#endif + dev->ctrlp = NULL; + } + + if (dev->mmio_base) { + release_mem_region(dev->mmio_base, dev->mmio_len); + dev->mmio_base = 0; + } + + pci_disable_device(pdev); + + hio_warn("%s: suspend disk finish.\n", dev->name); + + return 0; +} + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) +static int ssd_hio_resume(struct pci_dev *pdev) +{ +#else +static int ssd_hio_resume(struct device *ddev) +{ + struct pci_dev *pdev = to_pci_dev(ddev); +#endif + struct ssd_device *dev = NULL; + int ret = 0; + + if (!pdev ) { + ret = -EINVAL; + goto out; + } + + dev = pci_get_drvdata(pdev); + if (!dev) { + ret = -ENOMEM; + goto out_alloc_dev; + } + + hio_warn("%s: resume disk start.\n", dev->name); + ret = pci_enable_device(pdev); + if (ret) { + hio_warn("%s: can not enable device\n", dev->name); + goto out_enable_device; + } + + pci_set_master(pdev); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) + ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK); +#else + ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); +#endif + if (ret) { + hio_warn("%s: set dma mask: failed\n", dev->name); + goto out_set_dma_mask; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) + ret = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); +#else + ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); +#endif + if (ret) { + hio_warn("%s: set consistent dma mask: failed\n", dev->name); + goto out_set_dma_mask; + } + + dev->mmio_base = pci_resource_start(pdev, 0); + dev->mmio_len = pci_resource_len(pdev, 0); + + if (!request_mem_region(dev->mmio_base, dev->mmio_len, SSD_DEV_NAME)) { + hio_warn("%s: can not reserve MMIO region 0\n", dev->name); + ret = -EBUSY; + goto out_request_mem_region; + } + + /* 2.6.9 kernel bug */ + dev->ctrlp = pci_iomap(pdev, 0, 0); + if (!dev->ctrlp) { + hio_warn("%s: can not remap IO region 0\n", dev->name); + ret = -ENOMEM; + goto out_pci_iomap; + } + + ret = ssd_check_hw(dev); + if (ret) { + hio_err("%s: check hardware failed\n", dev->name); + goto out_check_hw; + } + + /* alarm led ? */ + ssd_clear_alarm(dev); + + ret = ssd_init_fw_info(dev); + if (ret) { + hio_err("%s: init firmware info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_fw_info; + } + + /* slave port ? */ + if (dev->slave) { + goto init_next1; + } + + ret = ssd_init_rom_info(dev); + if (ret) { + hio_err("%s: init rom info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_rom_info; + } + + ret = ssd_init_label(dev); + if (ret) { + hio_err("%s: init label failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_label; + } + + ret = ssd_init_workq(dev); + if (ret) { + hio_warn("%s: init workq failed\n", dev->name); + goto out_init_workq; + } + (void)test_and_set_bit(SSD_INIT_WORKQ, &dev->state); + + ret = ssd_init_log(dev); + if (ret) { + hio_err("%s: init log failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_log; + } + + ret = ssd_init_smart(dev); + if (ret) { + hio_err("%s: init info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_smart; + } + +init_next1: + ret = ssd_init_hw_info(dev); + if (ret) { + hio_err("%s: init hardware info failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_hw_info; + } + + /* slave port ? */ + if (dev->slave) { + goto init_next2; + } + + ret = ssd_init_sensor(dev); + if (ret) { + hio_err("%s: init sensor failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_sensor; + } + + ret = ssd_init_pl_cap(dev); + if (ret) { + hio_err("%s: int pl_cap failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_init_pl_cap; + } + +init_next2: + ret = ssd_check_init_state(dev); + if (ret) { + hio_err("%s: check init state failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_check_init_state; + } + + //flush all base pointer to ssd + (void)ssd_reload_ssd_ptr(dev); + + ret = ssd_init_irq(dev); + if (ret) { + hio_warn("%s: init irq failed\n", dev->name); + goto out_init_irq; + } + + ret = ssd_init_thread(dev); + if (ret) { + hio_warn("%s: init thread failed\n", dev->name); + goto out_init_thread; + } + + /* */ + (void)test_and_set_bit(SSD_ONLINE, &dev->state); + + /* slave port ? */ + if (dev->slave) { + goto init_next3; + } + + ret = ssd_init_ot_protect(dev); + if (ret) { + hio_err("%s: int ot_protect failed\n", dev->name); + /* alarm led */ + ssd_set_alarm(dev); + goto out_int_ot_protect; + } + + ret = ssd_init_wmode(dev); + if (ret) { + hio_warn("%s: init write mode\n", dev->name); + goto out_init_wmode; + } + + /* init routine after hw is ready */ + ret = ssd_init_routine(dev); + if (ret) { + hio_warn("%s: init routine\n", dev->name); + goto out_init_routine; + } + +init_next3: + (void)test_and_set_bit(SSD_INIT_BD, &dev->state); + + dev->save_md = 1; + + hio_warn("%s: resume disk finish.\n", dev->name); + + return 0; + +out_init_routine: +out_init_wmode: +out_int_ot_protect: + ssd_cleanup_thread(dev); +out_init_thread: + ssd_free_irq(dev); +out_init_irq: +out_check_init_state: +out_init_pl_cap: +out_init_sensor: +out_init_hw_info: +out_init_smart: + /* slave port ? */ + if (!dev->slave) { + ssd_cleanup_log(dev); + } +out_init_log: + /* slave port ? */ + if (!dev->slave) { + test_and_clear_bit(SSD_INIT_WORKQ, &dev->state); + ssd_cleanup_workq(dev); + } +out_init_workq: +out_init_label: +out_init_rom_info: +out_init_fw_info: +out_check_hw: +#ifdef LINUX_SUSE_OS + iounmap(dev->ctrlp); +#else + pci_iounmap(pdev, dev->ctrlp); +#endif +out_pci_iomap: + release_mem_region(dev->mmio_base, dev->mmio_len); +out_request_mem_region: +out_set_dma_mask: + pci_disable_device(pdev); +out_enable_device: +out_alloc_dev: +out: + + hio_warn("%s: resume disk fail.\n", dev->name); + + return ret; +} + +MODULE_DEVICE_TABLE(pci, ssd_pci_tbl); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) +#else +SIMPLE_DEV_PM_OPS(hio_pm_ops, ssd_hio_suspend, ssd_hio_resume); +#endif + +struct pci_driver ssd_driver = { + .name = MODULE_NAME, + .id_table = ssd_pci_tbl, + .probe = ssd_init_one, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) + .remove = __devexit_p(ssd_remove_one), +#else + .remove = ssd_remove_one, +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) + .suspend = ssd_hio_suspend, + .resume = ssd_hio_resume, +#else + .driver = { + .pm = &hio_pm_ops, + }, +#endif +}; + +/* notifier block to get a notify on system shutdown/halt/reboot */ +static int ssd_notify_reboot(struct notifier_block *nb, unsigned long event, void *buf) +{ + struct ssd_device *dev = NULL; + struct ssd_device *n = NULL; + + list_for_each_entry_safe(dev, n, &ssd_list, list) { + ssd_gen_swlog(dev, SSD_LOG_POWER_OFF, 0); + + (void)ssd_flush(dev); + (void)ssd_save_md(dev); + + /* slave port ? */ + if (!dev->slave) { + ssd_save_smart(dev); + + ssd_stop_workq(dev); + + if (dev->reload_fw) { + dev->has_non_0x98_reg_access = 1; + ssd_reg32_write(dev->ctrlp + SSD_RELOAD_FW_REG, SSD_RELOAD_FW); + } + } + } + + return NOTIFY_OK; +} + +static struct notifier_block ssd_notifier = { + ssd_notify_reboot, NULL, 0 +}; + +static int __init ssd_init_module(void) +{ + int ret = 0; + + hio_info("driver version: %s\n", DRIVER_VERSION); + + ret = ssd_init_index(); + if (ret) { + hio_warn("init index failed\n"); + goto out_init_index; + } + + ret = ssd_init_proc(); + if (ret) { + hio_warn("init proc failed\n"); + goto out_init_proc; + } + + ret = ssd_init_sysfs(); + if (ret) { + hio_warn("init sysfs failed\n"); + goto out_init_sysfs; + } + + ret = ssd_init_tasklet(); + if (ret) { + hio_warn("init tasklet failed\n"); + goto out_init_tasklet; + } + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) + ssd_class = class_simple_create(THIS_MODULE, SSD_DEV_NAME); +#else + ssd_class = class_create(THIS_MODULE, SSD_DEV_NAME); +#endif + if (IS_ERR(ssd_class)) { + ret = PTR_ERR(ssd_class); + goto out_class_create; + } + + if (ssd_cmajor > 0) { + ret = register_chrdev(ssd_cmajor, SSD_CDEV_NAME, &ssd_cfops); + } else { + ret = ssd_cmajor = register_chrdev(ssd_cmajor, SSD_CDEV_NAME, &ssd_cfops); + } + if (ret < 0) { + hio_warn("unable to register chardev major number\n"); + goto out_register_chardev; + } + + if (ssd_major > 0) { + ret = register_blkdev(ssd_major, SSD_DEV_NAME); + } else { + ret = ssd_major = register_blkdev(ssd_major, SSD_DEV_NAME); + } + if (ret < 0) { + hio_warn("unable to register major number\n"); + goto out_register_blkdev; + } + + if (ssd_major_sl > 0) { + ret = register_blkdev(ssd_major_sl, SSD_SDEV_NAME); + } else { + ret = ssd_major_sl = register_blkdev(ssd_major_sl, SSD_SDEV_NAME); + } + if (ret < 0) { + hio_warn("unable to register slave major number\n"); + goto out_register_blkdev_sl; + } + + if (mode < SSD_DRV_MODE_STANDARD || mode > SSD_DRV_MODE_BASE) { + mode = SSD_DRV_MODE_STANDARD; + } + + /* for debug */ + if (mode != SSD_DRV_MODE_STANDARD) { + ssd_minors = 1; + } + + if (int_mode < SSD_INT_LEGACY || int_mode > SSD_INT_MSIX) { + int_mode = SSD_INT_MODE_DEFAULT; + } + + if (threaded_irq) { + int_mode = SSD_INT_MSI; + } + + if (log_level >= SSD_LOG_NR_LEVEL || log_level < SSD_LOG_LEVEL_INFO) { + log_level = SSD_LOG_LEVEL_ERR; + } + + if (wmode < SSD_WMODE_BUFFER || wmode > SSD_WMODE_DEFAULT) { + wmode = SSD_WMODE_DEFAULT; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) + ret = pci_module_init(&ssd_driver); +#else + ret = pci_register_driver(&ssd_driver); +#endif + if (ret) { + hio_warn("pci init failed\n"); + goto out_pci_init; + } + + ret = register_reboot_notifier(&ssd_notifier); + if (ret) { + hio_warn("register reboot notifier failed\n"); + goto out_register_reboot_notifier; + } + + return 0; + +out_register_reboot_notifier: +out_pci_init: + pci_unregister_driver(&ssd_driver); + unregister_blkdev(ssd_major_sl, SSD_SDEV_NAME); +out_register_blkdev_sl: + unregister_blkdev(ssd_major, SSD_DEV_NAME); +out_register_blkdev: + unregister_chrdev(ssd_cmajor, SSD_CDEV_NAME); +out_register_chardev: +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) + class_simple_destroy(ssd_class); +#else + class_destroy(ssd_class); +#endif +out_class_create: + ssd_cleanup_tasklet(); +out_init_tasklet: + ssd_cleanup_sysfs(); +out_init_sysfs: + ssd_cleanup_proc(); +out_init_proc: + ssd_cleanup_index(); +out_init_index: + return ret; + +} + +static void __exit ssd_cleanup_module(void) +{ + + hio_info("unload driver: %s\n", DRIVER_VERSION); + /* exiting */ + ssd_exiting = 1; + + unregister_reboot_notifier(&ssd_notifier); + + pci_unregister_driver(&ssd_driver); + + unregister_blkdev(ssd_major_sl, SSD_SDEV_NAME); + unregister_blkdev(ssd_major, SSD_DEV_NAME); + unregister_chrdev(ssd_cmajor, SSD_CDEV_NAME); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)) + class_simple_destroy(ssd_class); +#else + class_destroy(ssd_class); +#endif + + ssd_cleanup_tasklet(); + ssd_cleanup_sysfs(); + ssd_cleanup_proc(); + ssd_cleanup_index(); +} + +int ssd_register_event_notifier(struct block_device *bdev, ssd_event_call event_call) +{ + struct ssd_device *dev; + struct ssd_log *le, *temp_le = NULL; + uint64_t cur; + int temp = 0; + int log_nr; + + if (!bdev || !event_call || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + dev->event_call = event_call; + + cur = (uint64_t)ktime_get_real_seconds(); + + le = (struct ssd_log *)(dev->internal_log.log); + log_nr = dev->internal_log.nr_log; + + while (log_nr--) { + if (le->time <= cur && le->time >= dev->uptime) { + if ((le->le.event == SSD_LOG_SEU_FAULT1) && (le->time < dev->reset_time)) { + le++; + continue; + } + if (le->le.event == SSD_LOG_OVER_TEMP || le->le.event == SSD_LOG_NORMAL_TEMP || le->le.event == SSD_LOG_WARN_TEMP) { + if (!temp_le || le->time >= temp_le->time) { + temp_le = le; + } + le++; + continue; + } + (void)dev->event_call(dev->gd, le->le.event, ssd_parse_log(dev, le, 0)); + } + le++; + } + + ssd_get_temperature(bdev, &temp); + if (temp_le && (temp >= SSD_OT_TEMP_HYST)) { + (void)dev->event_call(dev->gd, temp_le->le.event, ssd_parse_log(dev, temp_le, 0)); + } + + return 0; +} + +int ssd_unregister_event_notifier(struct block_device *bdev) +{ + struct ssd_device *dev; + + if (!bdev || !(bdev->bd_disk)) { + return -EINVAL; + } + + dev = bdev->bd_disk->private_data; + dev->event_call = NULL; + + return 0; +} + +EXPORT_SYMBOL(ssd_get_label); +EXPORT_SYMBOL(ssd_get_version); +EXPORT_SYMBOL(ssd_set_otprotect); +EXPORT_SYMBOL(ssd_bm_status); +EXPORT_SYMBOL(ssd_submit_pbio); +EXPORT_SYMBOL(ssd_get_pciaddr); +EXPORT_SYMBOL(ssd_get_temperature); +EXPORT_SYMBOL(ssd_register_event_notifier); +EXPORT_SYMBOL(ssd_unregister_event_notifier); +EXPORT_SYMBOL(ssd_reset); +EXPORT_SYMBOL(ssd_set_wmode); + + + +module_init(ssd_init_module); +module_exit(ssd_cleanup_module); +MODULE_VERSION(DRIVER_VERSION); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Huawei SSD DEV Team"); +MODULE_DESCRIPTION("Huawei SSD driver"); --- linux-5.8.0.orig/ubuntu/hio/hio.h +++ linux-5.8.0/ubuntu/hio/hio.h @@ -0,0 +1,104 @@ +/* +* Huawei SSD device driver +* Copyright (c) 2016, Huawei Technologies Co., Ltd. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms and conditions of the GNU General Public License, +* version 2, as published by the Free Software Foundation. +* +* This program is distributed in the hope 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 _HIO_H +#define _HIO_H + +#include +#include +#include +#include + + + +typedef int (*ssd_event_call)(struct gendisk *, int, int); /* gendisk, event id, event level */ +extern int ssd_register_event_notifier(struct block_device *bdev, ssd_event_call event_call); +/* unregister event notifier before module exit */ +extern int ssd_unregister_event_notifier(struct block_device *bdev); + + +/* label */ +#define SSD_LABEL_FIELD_SZ 32 +#define SSD_SN_SZ 16 + +typedef struct ssd_label +{ + char date[SSD_LABEL_FIELD_SZ]; + char sn[SSD_LABEL_FIELD_SZ]; + char part[SSD_LABEL_FIELD_SZ]; + char desc[SSD_LABEL_FIELD_SZ]; + char other[SSD_LABEL_FIELD_SZ]; + char maf[SSD_LABEL_FIELD_SZ]; +} ssd_label_t; + + +/* version */ +typedef struct ssd_version_info +{ + uint32_t bridge_ver; /* bridge fw version: hex */ + uint32_t ctrl_ver; /* controller fw version: hex */ + uint32_t bm_ver; /* battery manager fw version: hex */ + uint8_t pcb_ver; /* main pcb version: char */ + uint8_t upper_pcb_ver; + uint8_t pad0; + uint8_t pad1; +} ssd_version_info_t; + +extern int ssd_get_label(struct block_device *bdev, struct ssd_label *label); +extern int ssd_get_version(struct block_device *bdev, struct ssd_version_info *ver); +extern int ssd_get_temperature(struct block_device *bdev, int *temp); + + +enum ssd_bmstatus +{ + SSD_BMSTATUS_OK = 0, + SSD_BMSTATUS_CHARGING, + SSD_BMSTATUS_WARNING +}; +extern int ssd_bm_status(struct block_device *bdev, int *status); + +enum ssd_otprotect +{ + SSD_OTPROTECT_OFF = 0, + SSD_OTPROTECT_ON +}; +extern int ssd_set_otprotect(struct block_device *bdev, int otprotect); + +typedef struct pci_addr +{ + uint16_t domain; + uint8_t bus; + uint8_t slot; + uint8_t func; +} pci_addr_t; +extern int ssd_get_pciaddr(struct block_device *bdev, struct pci_addr *paddr); + +/* submit phys bio: phys addr in iovec */ +extern void ssd_submit_pbio(struct request_queue *q, struct bio *bio); + +extern int ssd_reset(struct block_device *bdev); + +enum ssd_write_mode +{ + SSD_WMODE_BUFFER = 0, + SSD_WMODE_BUFFER_EX, + SSD_WMODE_FUA, + /* dummy */ + SSD_WMODE_AUTO, + SSD_WMODE_DEFAULT +}; +extern int ssd_set_wmode(struct block_device *bdev, int wmode); + +#endif + --- linux-5.8.0.orig/ubuntu/include/Kbuild +++ linux-5.8.0/ubuntu/include/Kbuild @@ -0,0 +1,2 @@ + + --- linux-5.8.0.orig/ubuntu/include/README +++ linux-5.8.0/ubuntu/include/README @@ -0,0 +1,4 @@ +Only use this directory for things which need to share their headers with +other parts of the kernel or other modules in ubuntu/ + +Otherwise, keep them local to the module directory. --- linux-5.8.0.orig/ubuntu/ubuntu-host/Kconfig +++ linux-5.8.0/ubuntu/ubuntu-host/Kconfig @@ -0,0 +1,5 @@ +config UBUNTU_HOST + tristate "proc dir for exporting host data to containers" + help + Creates an ubuntu-host directory in proc for providing data from + Ubuntu hosts to containers. --- linux-5.8.0.orig/ubuntu/ubuntu-host/Makefile +++ linux-5.8.0/ubuntu/ubuntu-host/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_UBUNTU_HOST) += ubuntu-host.o --- linux-5.8.0.orig/ubuntu/ubuntu-host/ubuntu-host.c +++ linux-5.8.0/ubuntu/ubuntu-host/ubuntu-host.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include +#include + +#define PROC_DIR "ubuntu-host" + +#define ESM_TOKEN_FILE "esm-token" +#define ESM_TOKEN_MAX_SIZE 64 + +static struct proc_dir_entry *proc_dir; +static char esm_token_buffer[ESM_TOKEN_MAX_SIZE]; + +static ssize_t esm_token_read(struct file *f, char __user *buf, size_t len, + loff_t *off) +{ + return simple_read_from_buffer(buf, len, off, esm_token_buffer, + strlen(esm_token_buffer)); +} + +static ssize_t esm_token_write(struct file *f, const char __user *buf, + size_t len, loff_t *off) +{ + ssize_t ret; + + if (len >= ESM_TOKEN_MAX_SIZE - 1) + return -EINVAL; + + ret = simple_write_to_buffer(esm_token_buffer, ESM_TOKEN_MAX_SIZE - 1, + off, buf, len); + if (ret >= 0) + esm_token_buffer[ret] = '\0'; + + return ret; +} + +static const struct proc_ops esm_token_fops = { + .proc_read = esm_token_read, + .proc_write = esm_token_write, +}; + +static void ubuntu_host_cleanup(void) +{ + remove_proc_entry(ESM_TOKEN_FILE, proc_dir); + proc_remove(proc_dir); +} + +static int __init ubuntu_host_init(void) +{ + proc_dir = proc_mkdir(PROC_DIR, NULL); + if (!proc_dir) { + pr_err("Failed to create ubuntu-host dir\n"); + return -ENOMEM; + } + + if (!proc_create_data(ESM_TOKEN_FILE, 0644, proc_dir, &esm_token_fops, NULL)) { + pr_err("Failed to create esm-tokan file\n"); + ubuntu_host_cleanup(); + return -ENOMEM; + } + + return 0; +} + +module_init(ubuntu_host_init); +module_exit(ubuntu_host_cleanup); +MODULE_LICENSE("GPL"); --- linux-5.8.0.orig/ubuntu/xr-usb-serial/Makefile +++ linux-5.8.0/ubuntu/xr-usb-serial/Makefile @@ -0,0 +1,15 @@ +obj-m := xr_usb_serial_common.o + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build +PWD := $(shell pwd) + +EXTRA_CFLAGS := -DDEBUG=0 + +all: + $(MAKE) -C $(KERNELDIR) M=$(PWD) + +modules_install: + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install + +clean: + rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions vtty --- linux-5.8.0.orig/ubuntu/xr-usb-serial/README.txt +++ linux-5.8.0/ubuntu/xr-usb-serial/README.txt @@ -0,0 +1,50 @@ +Exar USB Serial Driver +====================== +Version 1A, 1/9/2015 + +This driver will work with any USB UART function in these Exar devices: + XR21V1410/1412/1414 + XR21B1411 + XR21B1420/1422/1424 + XR22801/802/804 + +The source code has been tested on various Linux kernels from 3.6.x to 3.17.x. +This may also work with newer kernels as well. + + +Installation +------------ + +* Compile and install the common usb serial driver module + + # make + # insmod ./xr_usb_serial_common.ko + + +* Plug the device into the USB host. You should see up to four devices created, + typically /dev/ttyXRUSB[0-3]. + + +Tips for Debugging +------------------ + +* Check that the USB UART is detected by the system + + # lsusb + +* Check that the CDC-ACM driver was not installed for the Exar USB UART + + # ls /dev/tty* + + To remove the CDC-ACM driver and install the driver: + + # rmmod cdc-acm + # modprobe -r usbserial + # modprobe usbserial + # insmod ./xr_usb_serial_common.ko + + +Technical Support +----------------- +Send any technical questions/issues to uarttechsupport@exar.com. + --- linux-5.8.0.orig/ubuntu/xr-usb-serial/xr_usb_serial_common.c +++ linux-5.8.0/ubuntu/xr-usb-serial/xr_usb_serial_common.c @@ -0,0 +1,1802 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + /* + * Copyright (c) 2015 Exar Corporation, Inc. + * + * This driver will work with any USB UART function in these Exar devices: + * XR21V1410/1412/1414 + * XR21B1411 + * XR21B1420/1422/1424 + * XR22801/802/804 + * + * The driver has been tested on various kernel versions from 3.6.x to 3.17.x. + * This driver may work on newer versions as well. There is a different driver available + * from www.exar.com that will work with kernel versions 2.6.18 to 3.4.x. + * + * ChangeLog: + * Version 1A - Initial released version. + */ + +//#undef DEBUG +#undef VERBOSE_DEBUG + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "linux/version.h" + +#include "xr_usb_serial_common.h" +#include "xr_usb_serial_ioctl.h" + + +#define DRIVER_AUTHOR "" +#define DRIVER_DESC "Exar USB UART (serial port) driver" + +static struct usb_driver xr_usb_serial_driver; +static struct tty_driver *xr_usb_serial_tty_driver; +static struct xr_usb_serial *xr_usb_serial_table[XR_USB_SERIAL_TTY_MINORS]; + +static DEFINE_MUTEX(xr_usb_serial_table_lock); + +/* + * xr_usb_serial_table accessors + */ + +/* + * Look up an XR_USB_SERIAL structure by index. If found and not disconnected, increment + * its refcount and return it with its mutex held. + */ +static struct xr_usb_serial *xr_usb_serial_get_by_index(unsigned index) +{ + struct xr_usb_serial *xr_usb_serial; + + mutex_lock(&xr_usb_serial_table_lock); + xr_usb_serial = xr_usb_serial_table[index]; + if (xr_usb_serial) { + mutex_lock(&xr_usb_serial->mutex); + if (xr_usb_serial->disconnected) { + mutex_unlock(&xr_usb_serial->mutex); + xr_usb_serial = NULL; + } else { + tty_port_get(&xr_usb_serial->port); + mutex_unlock(&xr_usb_serial->mutex); + } + } + mutex_unlock(&xr_usb_serial_table_lock); + return xr_usb_serial; +} + +/* + * Try to find an available minor number and if found, associate it with 'xr_usb_serial'. + */ +static int xr_usb_serial_alloc_minor(struct xr_usb_serial *xr_usb_serial) +{ + int minor; + + mutex_lock(&xr_usb_serial_table_lock); + for (minor = 0; minor < XR_USB_SERIAL_TTY_MINORS; minor++) { + if (!xr_usb_serial_table[minor]) { + xr_usb_serial_table[minor] = xr_usb_serial; + break; + } + } + mutex_unlock(&xr_usb_serial_table_lock); + + return minor; +} + +/* Release the minor number associated with 'xr_usb_serial'. */ +static void xr_usb_serial_release_minor(struct xr_usb_serial *xr_usb_serial) +{ + mutex_lock(&xr_usb_serial_table_lock); + xr_usb_serial_table[xr_usb_serial->minor] = NULL; + mutex_unlock(&xr_usb_serial_table_lock); +} + +/* + * Functions for XR_USB_SERIAL control messages. + */ + +static int xr_usb_serial_ctrl_msg(struct xr_usb_serial *xr_usb_serial, int request, int value, + void *buf, int len) +{ + int retval = usb_control_msg(xr_usb_serial->dev, usb_sndctrlpipe(xr_usb_serial->dev, 0), + request, USB_RT_XR_USB_SERIAL, value, + xr_usb_serial->control->altsetting[0].desc.bInterfaceNumber, + buf, len, 5000); + dev_dbg(&xr_usb_serial->control->dev, + "%s - rq 0x%02x, val %#x, len %#x, result %d\n", + __func__, request, value, len, retval); + return retval < 0 ? retval : 0; +} + +#include "xr_usb_serial_hal.c" + + +/* + * Write buffer management. + * All of these assume proper locks taken by the caller. + */ + +static int xr_usb_serial_wb_alloc(struct xr_usb_serial *xr_usb_serial) +{ + int i, wbn; + struct xr_usb_serial_wb *wb; + + wbn = 0; + i = 0; + for (;;) { + wb = &xr_usb_serial->wb[wbn]; + if (!wb->use) { + wb->use = 1; + return wbn; + } + wbn = (wbn + 1) % XR_USB_SERIAL_NW; + if (++i >= XR_USB_SERIAL_NW) + return -1; + } +} + +static int xr_usb_serial_wb_is_avail(struct xr_usb_serial *xr_usb_serial) +{ + int i, n; + unsigned long flags; + + n = XR_USB_SERIAL_NW; + spin_lock_irqsave(&xr_usb_serial->write_lock, flags); + for (i = 0; i < XR_USB_SERIAL_NW; i++) + n -= xr_usb_serial->wb[i].use; + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + return n; +} + +/* + * Finish write. Caller must hold xr_usb_serial->write_lock + */ +static void xr_usb_serial_write_done(struct xr_usb_serial *xr_usb_serial, struct xr_usb_serial_wb *wb) +{ + wb->use = 0; + xr_usb_serial->transmitting--; + usb_autopm_put_interface_async(xr_usb_serial->control); +} + +/* + * Poke write. + * + * the caller is responsible for locking + */ + +static int xr_usb_serial_start_wb(struct xr_usb_serial *xr_usb_serial, struct xr_usb_serial_wb *wb) +{ + int rc; + + xr_usb_serial->transmitting++; + + wb->urb->transfer_buffer = wb->buf; + wb->urb->transfer_dma = wb->dmah; + wb->urb->transfer_buffer_length = wb->len; + wb->urb->dev = xr_usb_serial->dev; + + rc = usb_submit_urb(wb->urb, GFP_ATOMIC); + if (rc < 0) { + dev_err(&xr_usb_serial->data->dev, + "%s - usb_submit_urb(write bulk) failed: %d\n", + __func__, rc); + xr_usb_serial_write_done(xr_usb_serial, wb); + } + return rc; +} + +/* + * attributes exported through sysfs + */ +static ssize_t show_caps +(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct usb_interface *intf = to_usb_interface(dev); + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + + return sprintf(buf, "%d", xr_usb_serial->ctrl_caps); +} +static DEVICE_ATTR(bmCapabilities, S_IRUGO, show_caps, NULL); + +static ssize_t show_country_codes +(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct usb_interface *intf = to_usb_interface(dev); + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + + memcpy(buf, xr_usb_serial->country_codes, xr_usb_serial->country_code_size); + return xr_usb_serial->country_code_size; +} + +static DEVICE_ATTR(wCountryCodes, S_IRUGO, show_country_codes, NULL); + +static ssize_t show_country_rel_date +(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct usb_interface *intf = to_usb_interface(dev); + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + + return sprintf(buf, "%d", xr_usb_serial->country_rel_date); +} + +static DEVICE_ATTR(iCountryCodeRelDate, S_IRUGO, show_country_rel_date, NULL); + +static ssize_t set_rs485_422_en(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t count) +{ + struct usb_interface *intf = to_usb_interface(dev); + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + int error, value = 0; + + error = kstrtoint(buf, 0, &value); + if (error) + return error; + + if (value == 0) { + xr_usb_serial->rs485_422_en = false; + } else if (value == 1) { + // RS485,RS422 HD/FD mode + xr_usb_serial->rs485_422_en = true; + } + + return count; +} + +static ssize_t show_rs485_422_en(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_interface *intf = to_usb_interface(dev); + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + + if (xr_usb_serial->rs485_422_en == false) { + return sprintf(buf, "0"); + } else if (xr_usb_serial->rs485_422_en == true) { + // RS485,RS422 HD/FD mode + return sprintf(buf, "1"); + } + return 0; +} + +static DEVICE_ATTR(bRS485_422_en, 0644, show_rs485_422_en, set_rs485_422_en); + +/* + * Interrupt handlers for various XR_USB_SERIAL device responses + */ + +/* control interface reports status changes with "interrupt" transfers */ +static void xr_usb_serial_ctrl_irq(struct urb *urb) +{ + struct xr_usb_serial *xr_usb_serial = urb->context; + struct usb_cdc_notification *dr = urb->transfer_buffer; + struct tty_struct *tty; + unsigned char *data; + int newctrl; + int retval; + int status = urb->status; + int i; + unsigned char *p; + + switch (status) { + case 0: + p = (unsigned char *)(urb->transfer_buffer); + for(i=0;iactual_length;i++) + { + dev_dbg(&xr_usb_serial->control->dev,"0x%02x\n",p[i]); + } + /* success */ + break; + case -ECONNRESET: + case -ENOENT: + case -ESHUTDOWN: + /* this urb is terminated, clean up */ + dev_dbg(&xr_usb_serial->control->dev, + "%s - urb shutting down with status: %d\n", + __func__, status); + return; + default: + dev_dbg(&xr_usb_serial->control->dev, + "%s - nonzero urb status received: %d\n", + __func__, status); + goto exit; + } + + usb_mark_last_busy(xr_usb_serial->dev); + + data = (unsigned char *)(dr + 1); + switch (dr->bNotificationType) { + case USB_CDC_NOTIFY_NETWORK_CONNECTION: + dev_dbg(&xr_usb_serial->control->dev, "%s - network connection: %d\n", + __func__, dr->wValue); + break; + + case USB_CDC_NOTIFY_SERIAL_STATE: +#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 9, 0) + newctrl = get_unaligned_le16(data); + if (!xr_usb_serial->clocal && (xr_usb_serial->ctrlin & ~newctrl & XR_USB_SERIAL_CTRL_DCD)) { + dev_dbg(&xr_usb_serial->control->dev, "%s - calling hangup\n", + __func__); + tty_port_tty_hangup(&xr_usb_serial->port, false); + } +#else + tty = tty_port_tty_get(&xr_usb_serial->port); + newctrl = get_unaligned_le16(data); + if (tty) + { + if (!xr_usb_serial->clocal && + (xr_usb_serial->ctrlin & ~newctrl & XR_USB_SERIAL_CTRL_DCD)) { + dev_dbg(&xr_usb_serial->control->dev, + "%s - calling hangup\n", __func__); + tty_hangup(tty); + } + tty_kref_put(tty); + } +#endif + xr_usb_serial->ctrlin = newctrl; + + dev_dbg(&xr_usb_serial->control->dev, + "%s - input control lines: dcd%c dsr%c break%c " + "ring%c framing%c parity%c overrun%c\n", + __func__, + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_DCD ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_DSR ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_BRK ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_RI ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_FRAMING ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_PARITY ? '+' : '-', + xr_usb_serial->ctrlin & XR_USB_SERIAL_CTRL_OVERRUN ? '+' : '-'); + break; + + default: + dev_dbg(&xr_usb_serial->control->dev, + "%s - unknown notification %d received: index %d " + "len %d data0 %d data1 %d\n", + __func__, + dr->bNotificationType, dr->wIndex, + dr->wLength, data[0], data[1]); + break; + } +exit: + retval = usb_submit_urb(urb, GFP_ATOMIC); + if (retval) + dev_err(&xr_usb_serial->control->dev, "%s - usb_submit_urb failed: %d\n", + __func__, retval); +} + +static int xr_usb_serial_submit_read_urb(struct xr_usb_serial *xr_usb_serial, int index, gfp_t mem_flags) +{ + int res; + + if (!test_and_clear_bit(index, &xr_usb_serial->read_urbs_free)) + return 0; + + dev_vdbg(&xr_usb_serial->data->dev, "%s - urb %d\n", __func__, index); + + res = usb_submit_urb(xr_usb_serial->read_urbs[index], mem_flags); + if (res) { + if (res != -EPERM) { + dev_err(&xr_usb_serial->data->dev, + "%s - usb_submit_urb failed: %d\n", + __func__, res); + } + set_bit(index, &xr_usb_serial->read_urbs_free); + return res; + } + + return 0; +} + +static int xr_usb_serial_submit_read_urbs(struct xr_usb_serial *xr_usb_serial, gfp_t mem_flags) +{ + int res; + int i; + + for (i = 0; i < xr_usb_serial->rx_buflimit; ++i) { + res = xr_usb_serial_submit_read_urb(xr_usb_serial, i, mem_flags); + if (res) + return res; + } + + return 0; +} +static void xr_usb_serial_process_read_urb(struct xr_usb_serial *xr_usb_serial, struct urb *urb) +{ + struct tty_struct *tty; + if (!urb->actual_length) + return; +#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 9, 0) + tty_insert_flip_string(&xr_usb_serial->port, urb->transfer_buffer, + urb->actual_length); + tty_flip_buffer_push(&xr_usb_serial->port); +#else + tty = tty_port_tty_get(&xr_usb_serial->port); + if (!tty) + return; + tty_insert_flip_string(tty, urb->transfer_buffer, urb->actual_length); + tty_flip_buffer_push(tty); + + tty_kref_put(tty); +#endif +} + +static void xr_usb_serial_read_bulk_callback(struct urb *urb) +{ + struct xr_usb_serial_rb *rb = urb->context; + struct xr_usb_serial *xr_usb_serial = rb->instance; + unsigned long flags; + + dev_vdbg(&xr_usb_serial->data->dev, "%s - urb %d, len %d\n", __func__, + rb->index, urb->actual_length); + set_bit(rb->index, &xr_usb_serial->read_urbs_free); + + if (!xr_usb_serial->dev) { + dev_dbg(&xr_usb_serial->data->dev, "%s - disconnected\n", __func__); + return; + } + usb_mark_last_busy(xr_usb_serial->dev); + + if (urb->status) { + dev_dbg(&xr_usb_serial->data->dev, "%s - non-zero urb status: %d\n", + __func__, urb->status); + return; + } + xr_usb_serial_process_read_urb(xr_usb_serial, urb); + + /* throttle device if requested by tty */ + spin_lock_irqsave(&xr_usb_serial->read_lock, flags); + xr_usb_serial->throttled = xr_usb_serial->throttle_req; + if (!xr_usb_serial->throttled && !xr_usb_serial->susp_count) { + spin_unlock_irqrestore(&xr_usb_serial->read_lock, flags); + xr_usb_serial_submit_read_urb(xr_usb_serial, rb->index, GFP_ATOMIC); + } else { + spin_unlock_irqrestore(&xr_usb_serial->read_lock, flags); + } +} + +/* data interface wrote those outgoing bytes */ +static void xr_usb_serial_write_bulk(struct urb *urb) +{ + struct xr_usb_serial_wb *wb = urb->context; + struct xr_usb_serial *xr_usb_serial = wb->instance; + unsigned long flags; + + if (urb->status || (urb->actual_length != urb->transfer_buffer_length)) + dev_vdbg(&xr_usb_serial->data->dev, "%s - len %d/%d, status %d\n", + __func__, + urb->actual_length, + urb->transfer_buffer_length, + urb->status); + + spin_lock_irqsave(&xr_usb_serial->write_lock, flags); + xr_usb_serial_write_done(xr_usb_serial, wb); + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + schedule_work(&xr_usb_serial->work); +} + +static void xr_usb_serial_softint(struct work_struct *work) +{ + struct xr_usb_serial *xr_usb_serial = container_of(work, struct xr_usb_serial, work); + struct tty_struct *tty; + + dev_vdbg(&xr_usb_serial->data->dev, "%s\n", __func__); +#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 9, 0) + tty_port_tty_wakeup(&xr_usb_serial->port); +#else + tty = tty_port_tty_get(&xr_usb_serial->port); + if (!tty) + return; + tty_wakeup(tty); + tty_kref_put(tty); +#endif +} + +/* + * TTY handlers + */ + +static int xr_usb_serial_tty_install(struct tty_driver *driver, struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial; + int retval; + + dev_dbg(tty->dev, "%s\n", __func__); + + xr_usb_serial = xr_usb_serial_get_by_index(tty->index); + if (!xr_usb_serial) + return -ENODEV; + + retval = tty_standard_install(driver, tty); + if (retval) + goto error_init_termios; + + tty->driver_data = xr_usb_serial; + + return 0; + +error_init_termios: + tty_port_put(&xr_usb_serial->port); + return retval; +} + +static int xr_usb_serial_tty_open(struct tty_struct *tty, struct file *filp) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + + dev_dbg(tty->dev, "%s\n", __func__); + + return tty_port_open(&xr_usb_serial->port, tty, filp); +} + +static int xr_usb_serial_port_activate(struct tty_port *port, struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = container_of(port, struct xr_usb_serial, port); + int retval = -ENODEV; + + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + + mutex_lock(&xr_usb_serial->mutex); + if (xr_usb_serial->disconnected) + goto disconnected; + + retval = usb_autopm_get_interface(xr_usb_serial->control); + if (retval) + goto error_get_interface; + + /* + * FIXME: Why do we need this? Allocating 64K of physically contiguous + * memory is really nasty... + */ + set_bit(TTY_NO_WRITE_SPLIT, &tty->flags); + xr_usb_serial->control->needs_remote_wakeup = 1; + + xr_usb_serial->ctrlurb->dev = xr_usb_serial->dev; + if (usb_submit_urb(xr_usb_serial->ctrlurb, GFP_KERNEL)) { + dev_err(&xr_usb_serial->control->dev, + "%s - usb_submit_urb(ctrl irq) failed\n", __func__); + goto error_submit_urb; + } + + xr_usb_serial->ctrlout = XR_USB_SERIAL_CTRL_DTR | XR_USB_SERIAL_CTRL_RTS; + if (xr_usb_serial_set_control(xr_usb_serial, xr_usb_serial->ctrlout) < 0 && + (xr_usb_serial->ctrl_caps & USB_CDC_CAP_LINE)) + goto error_set_control; + + usb_autopm_put_interface(xr_usb_serial->control); + + /* + * Unthrottle device in case the TTY was closed while throttled. + */ + spin_lock_irq(&xr_usb_serial->read_lock); + xr_usb_serial->throttled = 0; + xr_usb_serial->throttle_req = 0; + spin_unlock_irq(&xr_usb_serial->read_lock); + + if (xr_usb_serial_submit_read_urbs(xr_usb_serial, GFP_KERNEL)) + goto error_submit_read_urbs; + + mutex_unlock(&xr_usb_serial->mutex); + + return 0; + +error_submit_read_urbs: + xr_usb_serial->ctrlout = 0; + xr_usb_serial_set_control(xr_usb_serial, xr_usb_serial->ctrlout); +error_set_control: + usb_kill_urb(xr_usb_serial->ctrlurb); +error_submit_urb: + usb_autopm_put_interface(xr_usb_serial->control); +error_get_interface: +disconnected: + mutex_unlock(&xr_usb_serial->mutex); + return retval; +} + +static void xr_usb_serial_port_destruct(struct tty_port *port) +{ + struct xr_usb_serial *xr_usb_serial = container_of(port, struct xr_usb_serial, port); + + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) + tty_unregister_device(xr_usb_serial_tty_driver, xr_usb_serial->minor); + #endif + xr_usb_serial_release_minor(xr_usb_serial); + usb_put_intf(xr_usb_serial->control); + kfree(xr_usb_serial->country_codes); + kfree(xr_usb_serial); +} + +static void xr_usb_serial_port_shutdown(struct tty_port *port) +{ + struct xr_usb_serial *xr_usb_serial = container_of(port, struct xr_usb_serial, port); + int i; + + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + + mutex_lock(&xr_usb_serial->mutex); + if (!xr_usb_serial->disconnected) { + usb_autopm_get_interface(xr_usb_serial->control); + xr_usb_serial_set_control(xr_usb_serial, xr_usb_serial->ctrlout = 0); + usb_kill_urb(xr_usb_serial->ctrlurb); + for (i = 0; i < XR_USB_SERIAL_NW; i++) + usb_kill_urb(xr_usb_serial->wb[i].urb); + for (i = 0; i < xr_usb_serial->rx_buflimit; i++) + usb_kill_urb(xr_usb_serial->read_urbs[i]); + xr_usb_serial->control->needs_remote_wakeup = 0; + usb_autopm_put_interface(xr_usb_serial->control); + } + mutex_unlock(&xr_usb_serial->mutex); +} + +static void xr_usb_serial_tty_cleanup(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + tty_port_put(&xr_usb_serial->port); +} + +static void xr_usb_serial_tty_hangup(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + tty_port_hangup(&xr_usb_serial->port); +} + +static void xr_usb_serial_tty_close(struct tty_struct *tty, struct file *filp) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + tty_port_close(&xr_usb_serial->port, tty, filp); +} + +static int xr_usb_serial_tty_write(struct tty_struct *tty, + const unsigned char *buf, int count) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + int stat; + unsigned long flags; + int wbn; + struct xr_usb_serial_wb *wb; + + if (!count) + return 0; + + dev_vdbg(&xr_usb_serial->data->dev, "%s - count %d\n", __func__, count); + + spin_lock_irqsave(&xr_usb_serial->write_lock, flags); + wbn = xr_usb_serial_wb_alloc(xr_usb_serial); + if (wbn < 0) { + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + return 0; + } + wb = &xr_usb_serial->wb[wbn]; + + if (!xr_usb_serial->dev) { + wb->use = 0; + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + return -ENODEV; + } + + count = (count > xr_usb_serial->writesize) ? xr_usb_serial->writesize : count; + dev_vdbg(&xr_usb_serial->data->dev, "%s - write %d\n", __func__, count); + memcpy(wb->buf, buf, count); + wb->len = count; + + usb_autopm_get_interface_async(xr_usb_serial->control); + if (xr_usb_serial->susp_count) { + if (!xr_usb_serial->delayed_wb) + xr_usb_serial->delayed_wb = wb; + else + usb_autopm_put_interface_async(xr_usb_serial->control); + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + return count; /* A white lie */ + } + usb_mark_last_busy(xr_usb_serial->dev); + + stat = xr_usb_serial_start_wb(xr_usb_serial, wb); + spin_unlock_irqrestore(&xr_usb_serial->write_lock, flags); + + if (stat < 0) + return stat; + return count; +} + +static int xr_usb_serial_tty_write_room(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + /* + * Do not let the line discipline to know that we have a reserve, + * or it might get too enthusiastic. + */ + return xr_usb_serial_wb_is_avail(xr_usb_serial) ? xr_usb_serial->writesize : 0; +} + +static int xr_usb_serial_tty_chars_in_buffer(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + /* + * if the device was unplugged then any remaining characters fell out + * of the connector ;) + */ + if (xr_usb_serial->disconnected) + return 0; + /* + * This is inaccurate (overcounts), but it works. + */ + return (XR_USB_SERIAL_NW - xr_usb_serial_wb_is_avail(xr_usb_serial)) * xr_usb_serial->writesize; +} + +static void xr_usb_serial_tty_throttle(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + + spin_lock_irq(&xr_usb_serial->read_lock); + xr_usb_serial->throttle_req = 1; + spin_unlock_irq(&xr_usb_serial->read_lock); +} + +static void xr_usb_serial_tty_unthrottle(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + unsigned int was_throttled; + + spin_lock_irq(&xr_usb_serial->read_lock); + was_throttled = xr_usb_serial->throttled; + xr_usb_serial->throttled = 0; + xr_usb_serial->throttle_req = 0; + spin_unlock_irq(&xr_usb_serial->read_lock); + + if (was_throttled) + xr_usb_serial_submit_read_urbs(xr_usb_serial, GFP_KERNEL); +} + +static int xr_usb_serial_tty_break_ctl(struct tty_struct *tty, int state) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + int retval; + + retval = xr_usb_serial_send_break(xr_usb_serial, state ? 0xffff : 0); + if (retval < 0) + dev_dbg(&xr_usb_serial->control->dev, "%s - send break failed\n", + __func__); + return retval; +} + +static int xr_usb_serial_tty_tiocmget(struct tty_struct *tty) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_tty_tiocmget\n"); + return xr_usb_serial_tiocmget(xr_usb_serial); + +} + +static int xr_usb_serial_tty_tiocmset(struct tty_struct *tty, + unsigned int set, unsigned int clear) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_tty_tiocmset set=0x%x clear=0x%x\n",set,clear); + return xr_usb_serial_tiocmset(xr_usb_serial,set,clear); + +} + +static int get_serial_info(struct xr_usb_serial *xr_usb_serial, struct serial_struct __user *info) +{ + struct serial_struct tmp; + + if (!info) + return -EINVAL; + + memset(&tmp, 0, sizeof(tmp)); + tmp.flags = ASYNC_LOW_LATENCY; + tmp.xmit_fifo_size = xr_usb_serial->writesize; + tmp.baud_base = le32_to_cpu(xr_usb_serial->line.dwDTERate); + tmp.close_delay = xr_usb_serial->port.close_delay / 10; + tmp.closing_wait = xr_usb_serial->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : + xr_usb_serial->port.closing_wait / 10; + + if (copy_to_user(info, &tmp, sizeof(tmp))) + return -EFAULT; + else + return 0; +} + +static int set_serial_info(struct xr_usb_serial *xr_usb_serial, + struct serial_struct __user *newinfo) +{ + struct serial_struct new_serial; + unsigned int closing_wait, close_delay; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + close_delay = new_serial.close_delay * 10; + closing_wait = new_serial.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : new_serial.closing_wait * 10; + + mutex_lock(&xr_usb_serial->port.mutex); + + if (!capable(CAP_SYS_ADMIN)) { + if ((close_delay != xr_usb_serial->port.close_delay) || + (closing_wait != xr_usb_serial->port.closing_wait)) + retval = -EPERM; + else + retval = -EOPNOTSUPP; + } else { + xr_usb_serial->port.close_delay = close_delay; + xr_usb_serial->port.closing_wait = closing_wait; + } + + mutex_unlock(&xr_usb_serial->port.mutex); + return retval; +} + +static int xr_usb_serial_tty_ioctl(struct tty_struct *tty, + unsigned int cmd, unsigned long arg) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; + int rv = -ENOIOCTLCMD; + unsigned int channel, reg, val; + + short *data; + switch (cmd) { + case TIOCGSERIAL: /* gets serial port data */ + rv = get_serial_info(xr_usb_serial, (struct serial_struct __user *) arg); + break; + case TIOCSSERIAL: + rv = set_serial_info(xr_usb_serial, (struct serial_struct __user *) arg); + break; + case XR_USB_SERIAL_GET_REG: + if (get_user(channel, (int __user *)arg)) + return -EFAULT; + if (get_user(reg, (int __user *)(arg + sizeof(int)))) + return -EFAULT; + + data = kmalloc(2, GFP_KERNEL); + if (data == NULL) { + dev_err(&xr_usb_serial->control->dev, "%s - Cannot allocate USB buffer.\n", __func__); + return -ENOMEM; + } + + if (channel == -1) + { + rv = xr_usb_serial_get_reg(xr_usb_serial,reg, data); + } + else + { + rv = xr_usb_serial_get_reg_ext(xr_usb_serial,channel,reg, data); + } + if (rv != 1) { + dev_err(&xr_usb_serial->control->dev, "Cannot get register (%d)\n", rv); + kfree(data); + return -EFAULT; + } + if (put_user(le16_to_cpu(*data), (int __user *)(arg + 2 * sizeof(int)))) + { + dev_err(&xr_usb_serial->control->dev, "Cannot put user result\n"); + kfree(data); + return -EFAULT; + } + rv = 0; + kfree(data); + break; + + case XR_USB_SERIAL_SET_REG: + if (get_user(channel, (int __user *)arg)) + return -EFAULT; + if (get_user(reg, (int __user *)(arg + sizeof(int)))) + return -EFAULT; + if (get_user(val, (int __user *)(arg + 2 * sizeof(int)))) + return -EFAULT; + + if (channel == -1) + { + rv = xr_usb_serial_set_reg(xr_usb_serial,reg, val); + } + else + { + rv = xr_usb_serial_set_reg_ext(xr_usb_serial,channel,reg, val); + + } + if (rv < 0) + return -EFAULT; + rv = 0; + break; + case XR_USB_SERIAL_LOOPBACK: + if (get_user(channel, (int __user *)arg)) + return -EFAULT; + if (channel == -1) + channel = xr_usb_serial->channel; + rv = xr_usb_serial_set_loopback(xr_usb_serial,channel); + if (rv < 0) + return -EFAULT; + rv = 0; + break; + + } + + return rv; +} + +static void xr_usb_serial_tty_set_termios(struct tty_struct *tty, + struct ktermios *termios_old) +{ + struct xr_usb_serial *xr_usb_serial = tty->driver_data; +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) + struct ktermios *termios = tty->termios; +#else + struct ktermios *termios = &tty->termios; +#endif + unsigned int cflag = termios->c_cflag; + struct usb_cdc_line_coding newline; + int newctrl = xr_usb_serial->ctrlout; + xr_usb_serial_disable(xr_usb_serial); + newline.dwDTERate = cpu_to_le32(tty_get_baud_rate(tty)); + newline.bCharFormat = termios->c_cflag & CSTOPB ? 1 : 0; + newline.bParityType = termios->c_cflag & PARENB ? + (termios->c_cflag & PARODD ? 1 : 2) + + (termios->c_cflag & CMSPAR ? 2 : 0) : 0; + switch (termios->c_cflag & CSIZE) { + case CS5:/*using CS5 replace of the 9 bit data mode*/ + newline.bDataBits = 9; + break; + case CS6: + newline.bDataBits = 6; + break; + case CS7: + newline.bDataBits = 7; + break; + case CS8: + default: + newline.bDataBits = 8; + break; + } + /* FIXME: Needs to clear unsupported bits in the termios */ + xr_usb_serial->clocal = ((termios->c_cflag & CLOCAL) != 0); + + if (!newline.dwDTERate) { + newline.dwDTERate = xr_usb_serial->line.dwDTERate; + newctrl &= ~XR_USB_SERIAL_CTRL_DTR; + } else + newctrl |= XR_USB_SERIAL_CTRL_DTR; + + if (newctrl != xr_usb_serial->ctrlout) + xr_usb_serial_set_control(xr_usb_serial, xr_usb_serial->ctrlout = newctrl); + + xr_usb_serial_set_flow_mode(xr_usb_serial,tty,cflag);/*set the serial flow mode*/ + + if (memcmp(&xr_usb_serial->line, &newline, sizeof newline)) + { + memcpy(&xr_usb_serial->line, &newline, sizeof newline); + dev_dbg(&xr_usb_serial->control->dev, "%s - set line: %d %d %d %d\n", + __func__, + le32_to_cpu(newline.dwDTERate), + newline.bCharFormat, newline.bParityType, + newline.bDataBits); + xr_usb_serial_set_line(xr_usb_serial, &xr_usb_serial->line); + } + xr_usb_serial_enable(xr_usb_serial); +} + +static const struct tty_port_operations xr_usb_serial_port_ops = { + .shutdown = xr_usb_serial_port_shutdown, + .activate = xr_usb_serial_port_activate, + .destruct = xr_usb_serial_port_destruct, +}; + +/* + * USB probe and disconnect routines. + */ + +/* Little helpers: write/read buffers free */ +static void xr_usb_serial_write_buffers_free(struct xr_usb_serial *xr_usb_serial) +{ + int i; + struct xr_usb_serial_wb *wb; + struct usb_device *usb_dev = interface_to_usbdev(xr_usb_serial->control); + + for (wb = &xr_usb_serial->wb[0], i = 0; i < XR_USB_SERIAL_NW; i++, wb++) + usb_free_coherent(usb_dev, xr_usb_serial->writesize, wb->buf, wb->dmah); +} + +static void xr_usb_serial_read_buffers_free(struct xr_usb_serial *xr_usb_serial) +{ + struct usb_device *usb_dev = interface_to_usbdev(xr_usb_serial->control); + int i; + + for (i = 0; i < xr_usb_serial->rx_buflimit; i++) + usb_free_coherent(usb_dev, xr_usb_serial->readsize, + xr_usb_serial->read_buffers[i].base, xr_usb_serial->read_buffers[i].dma); +} + +/* Little helper: write buffers allocate */ +static int xr_usb_serial_write_buffers_alloc(struct xr_usb_serial *xr_usb_serial) +{ + int i; + struct xr_usb_serial_wb *wb; + + for (wb = &xr_usb_serial->wb[0], i = 0; i < XR_USB_SERIAL_NW; i++, wb++) { + wb->buf = usb_alloc_coherent(xr_usb_serial->dev, xr_usb_serial->writesize, GFP_KERNEL, + &wb->dmah); + if (!wb->buf) { + while (i != 0) { + --i; + --wb; + usb_free_coherent(xr_usb_serial->dev, xr_usb_serial->writesize, + wb->buf, wb->dmah); + } + return -ENOMEM; + } + } + return 0; +} + +static int xr_usb_serial_probe(struct usb_interface *intf, + const struct usb_device_id *id) +{ + struct usb_cdc_union_desc *union_header = NULL; + struct usb_cdc_country_functional_desc *cfd = NULL; + unsigned char *buffer = intf->altsetting->extra; + int buflen = intf->altsetting->extralen; + struct usb_interface *control_interface; + struct usb_interface *data_interface; + struct usb_endpoint_descriptor *epctrl = NULL; + struct usb_endpoint_descriptor *epread = NULL; + struct usb_endpoint_descriptor *epwrite = NULL; + struct usb_device *usb_dev = interface_to_usbdev(intf); + struct xr_usb_serial *xr_usb_serial; + int minor; + int ctrlsize, readsize; + u8 *buf; + u8 ac_management_function = 0; + u8 call_management_function = 0; + int call_interface_num = -1; + int data_interface_num = -1; + unsigned long quirks; + int num_rx_buf; + int i; + int combined_interfaces = 0; + struct device *tty_dev; + int rv = -ENOMEM; + + /* normal quirks */ + quirks = (unsigned long)id->driver_info; + + if (quirks == IGNORE_DEVICE) + return -ENODEV; + + num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : XR_USB_SERIAL_NR; + + dev_dbg(&intf->dev, "USB_device_id idVendor:%04x, idProduct %04x\n",id->idVendor,id->idProduct); + + /* handle quirks deadly to normal probing*/ + if (quirks == NO_UNION_NORMAL) { + data_interface = usb_ifnum_to_if(usb_dev, 1); + control_interface = usb_ifnum_to_if(usb_dev, 0); + goto skip_normal_probe; + } + + /* normal probing*/ + if (!buffer) { + dev_err(&intf->dev, "Weird descriptor references\n"); + return -EINVAL; + } + + if (!buflen) { + if (intf->cur_altsetting->endpoint && + intf->cur_altsetting->endpoint->extralen && + intf->cur_altsetting->endpoint->extra) { + dev_dbg(&intf->dev, + "Seeking extra descriptors on endpoint\n"); + buflen = intf->cur_altsetting->endpoint->extralen; + buffer = intf->cur_altsetting->endpoint->extra; + } else { + dev_err(&intf->dev, + "Zero length descriptor references\n"); + return -EINVAL; + } + } + + while (buflen > 0) { + if (buffer[1] != USB_DT_CS_INTERFACE) { + dev_err(&intf->dev, "skipping garbage\n"); + goto next_desc; + } + + switch (buffer[2]) { + case USB_CDC_UNION_TYPE: /* we've found it */ + if (union_header) { + dev_err(&intf->dev, "More than one " + "union descriptor, skipping ...\n"); + goto next_desc; + } + union_header = (struct usb_cdc_union_desc *)buffer; + break; + case USB_CDC_COUNTRY_TYPE: /* export through sysfs*/ + cfd = (struct usb_cdc_country_functional_desc *)buffer; + break; + case USB_CDC_HEADER_TYPE: /* maybe check version */ + break; /* for now we ignore it */ + case USB_CDC_ACM_TYPE: + ac_management_function = buffer[3]; + break; + case USB_CDC_CALL_MANAGEMENT_TYPE: + call_management_function = buffer[3]; + call_interface_num = buffer[4]; + if ((quirks & NOT_A_MODEM) == 0 && (call_management_function & 3) != 3) + dev_err(&intf->dev, "This device cannot do calls on its own. It is not a modem.\n"); + break; + default: + /* there are LOTS more CDC descriptors that + * could legitimately be found here. + */ + dev_dbg(&intf->dev, "Ignoring descriptor: " + "type %02x, length %d\n", + buffer[2], buffer[0]); + break; + } +next_desc: + buflen -= buffer[0]; + buffer += buffer[0]; + } + + if (!union_header) { + if (call_interface_num > 0) { + dev_dbg(&intf->dev, "No union descriptor, using call management descriptor\n"); + /* quirks for Droids MuIn LCD */ + if (quirks & NO_DATA_INTERFACE) + data_interface = usb_ifnum_to_if(usb_dev, 0); + else + data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = call_interface_num)); + control_interface = intf; + } else { + if (intf->cur_altsetting->desc.bNumEndpoints != 3) { + dev_dbg(&intf->dev,"No union descriptor, giving up\n"); + return -ENODEV; + } else { + dev_warn(&intf->dev,"No union descriptor, testing for castrated device\n"); + combined_interfaces = 1; + control_interface = data_interface = intf; + goto look_for_collapsed_interface; + } + } + } else { + control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); + data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); + if (!control_interface || !data_interface) { + dev_dbg(&intf->dev, "no interfaces\n"); + return -ENODEV; + } + } + + if (data_interface_num != call_interface_num) + dev_dbg(&intf->dev, "Separate call control interface. That is not fully supported.\n"); + + if (control_interface == data_interface) { + /* some broken devices designed for windows work this way */ + dev_warn(&intf->dev,"Control and data interfaces are not separated!\n"); + combined_interfaces = 1; + /* a popular other OS doesn't use it */ + quirks |= NO_CAP_LINE; + if (data_interface->cur_altsetting->desc.bNumEndpoints != 3) { + dev_err(&intf->dev, "This needs exactly 3 endpoints\n"); + return -EINVAL; + } +look_for_collapsed_interface: + for (i = 0; i < 3; i++) { + struct usb_endpoint_descriptor *ep; + ep = &data_interface->cur_altsetting->endpoint[i].desc; + + if (usb_endpoint_is_int_in(ep)) + epctrl = ep; + else if (usb_endpoint_is_bulk_out(ep)) + epwrite = ep; + else if (usb_endpoint_is_bulk_in(ep)) + epread = ep; + else + return -EINVAL; + } + if (!epctrl || !epread || !epwrite) + return -ENODEV; + else + goto made_compressed_probe; + } + +skip_normal_probe: + + /*workaround for switched interfaces */ + if (data_interface->cur_altsetting->desc.bInterfaceClass + != CDC_DATA_INTERFACE_TYPE) { + if (control_interface->cur_altsetting->desc.bInterfaceClass + == CDC_DATA_INTERFACE_TYPE) { + struct usb_interface *t; + dev_dbg(&intf->dev, + "Your device has switched interfaces.\n"); + t = control_interface; + control_interface = data_interface; + data_interface = t; + } else { + return -EINVAL; + } + } + + /* Accept probe requests only for the control interface */ + if (!combined_interfaces && intf != control_interface) + return -ENODEV; + + if (!combined_interfaces && usb_interface_claimed(data_interface)) { + /* valid in this context */ + dev_dbg(&intf->dev, "The data interface isn't available\n"); + return -EBUSY; + } + + + if (data_interface->cur_altsetting->desc.bNumEndpoints < 2 || + control_interface->cur_altsetting->desc.bNumEndpoints == 0) + return -EINVAL; + + epctrl = &control_interface->cur_altsetting->endpoint[0].desc; + epread = &data_interface->cur_altsetting->endpoint[0].desc; + epwrite = &data_interface->cur_altsetting->endpoint[1].desc; + + + /* workaround for switched endpoints */ + if (!usb_endpoint_dir_in(epread)) { + /* descriptors are swapped */ + struct usb_endpoint_descriptor *t; + dev_dbg(&intf->dev, + "The data interface has switched endpoints\n"); + t = epread; + epread = epwrite; + epwrite = t; + } +made_compressed_probe: + dev_dbg(&intf->dev, "interfaces are valid\n"); + + xr_usb_serial = kzalloc(sizeof(struct xr_usb_serial), GFP_KERNEL); + if (xr_usb_serial == NULL) { + dev_err(&intf->dev, "out of memory (xr_usb_serial kzalloc)\n"); + goto alloc_fail; + } + + minor = xr_usb_serial_alloc_minor(xr_usb_serial); + if (minor == XR_USB_SERIAL_TTY_MINORS) { + dev_err(&intf->dev, "no more free xr_usb_serial devices\n"); + kfree(xr_usb_serial); + return -ENODEV; + } + + ctrlsize = usb_endpoint_maxp(epctrl); + readsize = usb_endpoint_maxp(epread) * + (quirks == SINGLE_RX_URB ? 1 : 2); + xr_usb_serial->combined_interfaces = combined_interfaces; + xr_usb_serial->writesize = usb_endpoint_maxp(epwrite) * 20; + xr_usb_serial->control = control_interface; + xr_usb_serial->data = data_interface; + xr_usb_serial->minor = minor; + xr_usb_serial->dev = usb_dev; + xr_usb_serial->ctrl_caps = ac_management_function; + if (quirks & NO_CAP_LINE) + xr_usb_serial->ctrl_caps &= ~USB_CDC_CAP_LINE; + xr_usb_serial->ctrlsize = ctrlsize; + xr_usb_serial->readsize = readsize; + xr_usb_serial->rx_buflimit = num_rx_buf; + INIT_WORK(&xr_usb_serial->work, xr_usb_serial_softint); + spin_lock_init(&xr_usb_serial->write_lock); + spin_lock_init(&xr_usb_serial->read_lock); + mutex_init(&xr_usb_serial->mutex); + xr_usb_serial->rx_endpoint = usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress); + xr_usb_serial->is_int_ep = usb_endpoint_xfer_int(epread); + if (xr_usb_serial->is_int_ep) + xr_usb_serial->bInterval = epread->bInterval; + tty_port_init(&xr_usb_serial->port); + xr_usb_serial->port.ops = &xr_usb_serial_port_ops; + xr_usb_serial->DeviceVendor = id->idVendor; + xr_usb_serial->DeviceProduct = id->idProduct; + #if 0 + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1410) + {//map the serial port A B C D to blocknum 0 1 2 3 for the xr21v141x device + xr_usb_serial->channel = epwrite->bEndpointAddress - 1; + } + else if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1420) + {//map the serial port A B C D to blocknum 0 2 4 6 for the xr21B142x device + xr_usb_serial->channel = (epwrite->bEndpointAddress - 4)*2; + } + else + { + xr_usb_serial->channel = epwrite->bEndpointAddress; + } + #else + xr_usb_serial->channel = epwrite->bEndpointAddress; + dev_dbg(&intf->dev, "epwrite->bEndpointAddress =%d\n",epwrite->bEndpointAddress); + #endif + buf = usb_alloc_coherent(usb_dev, ctrlsize, GFP_KERNEL, &xr_usb_serial->ctrl_dma); + if (!buf) { + dev_err(&intf->dev, "out of memory (ctrl buffer alloc)\n"); + goto alloc_fail2; + } + xr_usb_serial->ctrl_buffer = buf; + + if (xr_usb_serial_write_buffers_alloc(xr_usb_serial) < 0) { + dev_err(&intf->dev, "out of memory (write buffer alloc)\n"); + goto alloc_fail4; + } + + xr_usb_serial->ctrlurb = usb_alloc_urb(0, GFP_KERNEL); + if (!xr_usb_serial->ctrlurb) { + dev_err(&intf->dev, "out of memory (ctrlurb kmalloc)\n"); + goto alloc_fail5; + } + for (i = 0; i < num_rx_buf; i++) { + struct xr_usb_serial_rb *rb = &(xr_usb_serial->read_buffers[i]); + struct urb *urb; + + rb->base = usb_alloc_coherent(xr_usb_serial->dev, readsize, GFP_KERNEL, + &rb->dma); + if (!rb->base) { + dev_err(&intf->dev, "out of memory " + "(read bufs usb_alloc_coherent)\n"); + goto alloc_fail6; + } + rb->index = i; + rb->instance = xr_usb_serial; + + urb = usb_alloc_urb(0, GFP_KERNEL); + if (!urb) { + dev_err(&intf->dev, + "out of memory (read urbs usb_alloc_urb)\n"); + goto alloc_fail6; + } + urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + urb->transfer_dma = rb->dma; + if (xr_usb_serial->is_int_ep) { + usb_fill_int_urb(urb, xr_usb_serial->dev, + xr_usb_serial->rx_endpoint, + rb->base, + xr_usb_serial->readsize, + xr_usb_serial_read_bulk_callback, rb, + xr_usb_serial->bInterval); + } else { + usb_fill_bulk_urb(urb, xr_usb_serial->dev, + xr_usb_serial->rx_endpoint, + rb->base, + xr_usb_serial->readsize, + xr_usb_serial_read_bulk_callback, rb); + } + + xr_usb_serial->read_urbs[i] = urb; + __set_bit(i, &xr_usb_serial->read_urbs_free); + } + for (i = 0; i < XR_USB_SERIAL_NW; i++) { + struct xr_usb_serial_wb *snd = &(xr_usb_serial->wb[i]); + + snd->urb = usb_alloc_urb(0, GFP_KERNEL); + if (snd->urb == NULL) { + dev_err(&intf->dev, + "out of memory (write urbs usb_alloc_urb)\n"); + goto alloc_fail7; + } + + if (usb_endpoint_xfer_int(epwrite)) + usb_fill_int_urb(snd->urb, usb_dev, +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) + usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), +#else + usb_sndintpipe(usb_dev, epwrite->bEndpointAddress), +#endif + NULL, xr_usb_serial->writesize, xr_usb_serial_write_bulk, snd, epwrite->bInterval); + else + usb_fill_bulk_urb(snd->urb, usb_dev, + usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), + NULL, xr_usb_serial->writesize, xr_usb_serial_write_bulk, snd); + snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + snd->instance = xr_usb_serial; + } + + usb_set_intfdata(intf, xr_usb_serial); + + xr_usb_serial->rs485_422_en = false; //default enable rs232 + i = device_create_file(&intf->dev, &dev_attr_bRS485_422_en); + if (i < 0) + goto alloc_fail7; + + i = device_create_file(&intf->dev, &dev_attr_bmCapabilities); + if (i < 0) + goto alloc_fail8; + + if (cfd) { /* export the country data */ + xr_usb_serial->country_codes = kmalloc(cfd->bLength - 4, GFP_KERNEL); + if (!xr_usb_serial->country_codes) + goto skip_countries; + xr_usb_serial->country_code_size = cfd->bLength - 4; + memcpy(xr_usb_serial->country_codes, (u8 *)&cfd->wCountyCode0, + cfd->bLength - 4); + xr_usb_serial->country_rel_date = cfd->iCountryCodeRelDate; + + i = device_create_file(&intf->dev, &dev_attr_wCountryCodes); + if (i < 0) { + kfree(xr_usb_serial->country_codes); + xr_usb_serial->country_codes = NULL; + xr_usb_serial->country_code_size = 0; + goto skip_countries; + } + + i = device_create_file(&intf->dev, + &dev_attr_iCountryCodeRelDate); + if (i < 0) { + device_remove_file(&intf->dev, &dev_attr_wCountryCodes); + kfree(xr_usb_serial->country_codes); + xr_usb_serial->country_codes = NULL; + xr_usb_serial->country_code_size = 0; + goto skip_countries; + } + } + +skip_countries: + usb_fill_int_urb(xr_usb_serial->ctrlurb, usb_dev, + usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress), + xr_usb_serial->ctrl_buffer, ctrlsize, xr_usb_serial_ctrl_irq, xr_usb_serial, + /* works around buggy devices */ + epctrl->bInterval ? epctrl->bInterval : 0xff); + xr_usb_serial->ctrlurb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + xr_usb_serial->ctrlurb->transfer_dma = xr_usb_serial->ctrl_dma; + + dev_info(&intf->dev, "ttyXR_USB_SERIAL%d: USB XR_USB_SERIAL device\n", minor); + + xr_usb_serial_pre_setup(xr_usb_serial); + + xr_usb_serial_set_control(xr_usb_serial, xr_usb_serial->ctrlout); + + xr_usb_serial->line.dwDTERate = cpu_to_le32(9600); + xr_usb_serial->line.bDataBits = 8; + xr_usb_serial_set_line(xr_usb_serial, &xr_usb_serial->line); + + usb_driver_claim_interface(&xr_usb_serial_driver, data_interface, xr_usb_serial); + usb_set_intfdata(data_interface, xr_usb_serial); + + usb_get_intf(control_interface); +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0) + tty_register_device(xr_usb_serial_tty_driver, minor, &control_interface->dev); +#else + tty_dev = tty_port_register_device(&xr_usb_serial->port, xr_usb_serial_tty_driver, minor, + &control_interface->dev); + if (IS_ERR(tty_dev)) { + rv = PTR_ERR(tty_dev); + goto alloc_fail9; + } +#endif + + return 0; +alloc_fail9: + if (xr_usb_serial->country_codes) { + device_remove_file(&xr_usb_serial->control->dev, + &dev_attr_wCountryCodes); + device_remove_file(&xr_usb_serial->control->dev, + &dev_attr_iCountryCodeRelDate); + } + device_remove_file(&xr_usb_serial->control->dev, &dev_attr_bmCapabilities); +alloc_fail8: + device_remove_file(&xr_usb_serial->control->dev, &dev_attr_bRS485_422_en); +alloc_fail7: + usb_set_intfdata(intf, NULL); + for (i = 0; i < XR_USB_SERIAL_NW; i++) + usb_free_urb(xr_usb_serial->wb[i].urb); +alloc_fail6: + for (i = 0; i < num_rx_buf; i++) + usb_free_urb(xr_usb_serial->read_urbs[i]); + xr_usb_serial_read_buffers_free(xr_usb_serial); + usb_free_urb(xr_usb_serial->ctrlurb); +alloc_fail5: + xr_usb_serial_write_buffers_free(xr_usb_serial); +alloc_fail4: + usb_free_coherent(usb_dev, ctrlsize, xr_usb_serial->ctrl_buffer, xr_usb_serial->ctrl_dma); +alloc_fail2: + xr_usb_serial_release_minor(xr_usb_serial); + kfree(xr_usb_serial); +alloc_fail: + return rv; +} + +static void stop_data_traffic(struct xr_usb_serial *xr_usb_serial) +{ + int i; + + dev_dbg(&xr_usb_serial->control->dev, "%s\n", __func__); + + usb_kill_urb(xr_usb_serial->ctrlurb); + for (i = 0; i < XR_USB_SERIAL_NW; i++) + usb_kill_urb(xr_usb_serial->wb[i].urb); + for (i = 0; i < xr_usb_serial->rx_buflimit; i++) + usb_kill_urb(xr_usb_serial->read_urbs[i]); + + cancel_work_sync(&xr_usb_serial->work); +} + +static void xr_usb_serial_disconnect(struct usb_interface *intf) +{ + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + struct usb_device *usb_dev = interface_to_usbdev(intf); + struct tty_struct *tty; + int i; + + dev_dbg(&intf->dev, "%s\n", __func__); + + /* sibling interface is already cleaning up */ + if (!xr_usb_serial) + return; + + mutex_lock(&xr_usb_serial->mutex); + xr_usb_serial->disconnected = true; + if (xr_usb_serial->country_codes) { + device_remove_file(&xr_usb_serial->control->dev, + &dev_attr_wCountryCodes); + device_remove_file(&xr_usb_serial->control->dev, + &dev_attr_iCountryCodeRelDate); + } + device_remove_file(&xr_usb_serial->control->dev, &dev_attr_bmCapabilities); + device_remove_file(&xr_usb_serial->control->dev, &dev_attr_bRS485_422_en); + usb_set_intfdata(xr_usb_serial->control, NULL); + usb_set_intfdata(xr_usb_serial->data, NULL); + mutex_unlock(&xr_usb_serial->mutex); + + tty = tty_port_tty_get(&xr_usb_serial->port); + if (tty) { + tty_vhangup(tty); + tty_kref_put(tty); + } + stop_data_traffic(xr_usb_serial); +#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 7, 0) + tty_unregister_device(xr_usb_serial_tty_driver, xr_usb_serial->minor); +#endif + + usb_free_urb(xr_usb_serial->ctrlurb); + for (i = 0; i < XR_USB_SERIAL_NW; i++) + usb_free_urb(xr_usb_serial->wb[i].urb); + for (i = 0; i < xr_usb_serial->rx_buflimit; i++) + usb_free_urb(xr_usb_serial->read_urbs[i]); + xr_usb_serial_write_buffers_free(xr_usb_serial); + usb_free_coherent(usb_dev, xr_usb_serial->ctrlsize, xr_usb_serial->ctrl_buffer, xr_usb_serial->ctrl_dma); + xr_usb_serial_read_buffers_free(xr_usb_serial); + + if (!xr_usb_serial->combined_interfaces) + usb_driver_release_interface(&xr_usb_serial_driver, intf == xr_usb_serial->control ? + xr_usb_serial->data : xr_usb_serial->control); + + tty_port_put(&xr_usb_serial->port); +} + +#ifdef CONFIG_PM +static int xr_usb_serial_suspend(struct usb_interface *intf, pm_message_t message) +{ + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + int cnt; + + if (PMSG_IS_AUTO(message)) { + int b; + + spin_lock_irq(&xr_usb_serial->write_lock); + b = xr_usb_serial->transmitting; + spin_unlock_irq(&xr_usb_serial->write_lock); + if (b) + return -EBUSY; + } + + spin_lock_irq(&xr_usb_serial->read_lock); + spin_lock(&xr_usb_serial->write_lock); + cnt = xr_usb_serial->susp_count++; + spin_unlock(&xr_usb_serial->write_lock); + spin_unlock_irq(&xr_usb_serial->read_lock); + + if (cnt) + return 0; + + if (test_bit(ASYNCB_INITIALIZED, &xr_usb_serial->port.flags)) + stop_data_traffic(xr_usb_serial); + + return 0; +} + +static int xr_usb_serial_resume(struct usb_interface *intf) +{ + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + struct xr_usb_serial_wb *wb; + int rv = 0; + int cnt; + + spin_lock_irq(&xr_usb_serial->read_lock); + xr_usb_serial->susp_count -= 1; + cnt = xr_usb_serial->susp_count; + spin_unlock_irq(&xr_usb_serial->read_lock); + + if (cnt) + return 0; + + if (test_bit(ASYNCB_INITIALIZED, &xr_usb_serial->port.flags)) { + rv = usb_submit_urb(xr_usb_serial->ctrlurb, GFP_NOIO); + + spin_lock_irq(&xr_usb_serial->write_lock); + if (xr_usb_serial->delayed_wb) { + wb = xr_usb_serial->delayed_wb; + xr_usb_serial->delayed_wb = NULL; + spin_unlock_irq(&xr_usb_serial->write_lock); + xr_usb_serial_start_wb(xr_usb_serial, wb); + } else { + spin_unlock_irq(&xr_usb_serial->write_lock); + } + + /* + * delayed error checking because we must + * do the write path at all cost + */ + if (rv < 0) + goto err_out; + + rv = xr_usb_serial_submit_read_urbs(xr_usb_serial, GFP_NOIO); + } + +err_out: + return rv; +} + +static int xr_usb_serial_reset_resume(struct usb_interface *intf) +{ + struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf); + struct tty_struct *tty; + if (test_bit(ASYNCB_INITIALIZED, &xr_usb_serial->port.flags)){ +#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 9, 0) + tty_port_tty_hangup(&xr_usb_serial->port, false); +#else + tty = tty_port_tty_get(&xr_usb_serial->port); + if (tty) { + tty_hangup(tty); + tty_kref_put(tty); + } +#endif + } + return xr_usb_serial_resume(intf); +} + +#endif /* CONFIG_PM */ + +/* + * USB driver structure. + */ +static const struct usb_device_id xr_usb_serial_ids[] = { + { USB_DEVICE(0x04e2, 0x1410)}, + { USB_DEVICE(0x04e2, 0x1411)}, + { USB_DEVICE(0x04e2, 0x1412)}, + { USB_DEVICE(0x04e2, 0x1414)}, + { USB_DEVICE(0x04e2, 0x1420)}, + { USB_DEVICE(0x04e2, 0x1421)}, + { USB_DEVICE(0x04e2, 0x1422)}, + { USB_DEVICE(0x04e2, 0x1424)}, + { USB_DEVICE(0x04e2, 0x1400)}, + { USB_DEVICE(0x04e2, 0x1401)}, + { USB_DEVICE(0x04e2, 0x1402)}, + { USB_DEVICE(0x04e2, 0x1403)}, + { } +}; + +MODULE_DEVICE_TABLE(usb, xr_usb_serial_ids); + +static struct usb_driver xr_usb_serial_driver = { + .name = "cdc_xr_usb_serial", + .probe = xr_usb_serial_probe, + .disconnect = xr_usb_serial_disconnect, +#ifdef CONFIG_PM + .suspend = xr_usb_serial_suspend, + .resume = xr_usb_serial_resume, + .reset_resume = xr_usb_serial_reset_resume, +#endif + .id_table = xr_usb_serial_ids, +#ifdef CONFIG_PM + .supports_autosuspend = 1, +#endif + .disable_hub_initiated_lpm = 1, +}; + +/* + * TTY driver structures. + */ + +static const struct tty_operations xr_usb_serial_ops = { + .install = xr_usb_serial_tty_install, + .open = xr_usb_serial_tty_open, + .close = xr_usb_serial_tty_close, + .cleanup = xr_usb_serial_tty_cleanup, + .hangup = xr_usb_serial_tty_hangup, + .write = xr_usb_serial_tty_write, + .write_room = xr_usb_serial_tty_write_room, + .ioctl = xr_usb_serial_tty_ioctl, + .throttle = xr_usb_serial_tty_throttle, + .unthrottle = xr_usb_serial_tty_unthrottle, + .chars_in_buffer = xr_usb_serial_tty_chars_in_buffer, + .break_ctl = xr_usb_serial_tty_break_ctl, + .set_termios = xr_usb_serial_tty_set_termios, + .tiocmget = xr_usb_serial_tty_tiocmget, + .tiocmset = xr_usb_serial_tty_tiocmset, +}; + +/* + * Init / exit. + */ + +static int __init xr_usb_serial_init(void) +{ + int retval; + xr_usb_serial_tty_driver = alloc_tty_driver(XR_USB_SERIAL_TTY_MINORS); + if (!xr_usb_serial_tty_driver) + return -ENOMEM; + xr_usb_serial_tty_driver->driver_name = "xr_usb_serial", + xr_usb_serial_tty_driver->name = "ttyXRUSB", + xr_usb_serial_tty_driver->major = XR_USB_SERIAL_TTY_MAJOR, + xr_usb_serial_tty_driver->minor_start = 0, + xr_usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL, + xr_usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL, + xr_usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; + xr_usb_serial_tty_driver->init_termios = tty_std_termios; + xr_usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | + HUPCL | CLOCAL; + tty_set_operations(xr_usb_serial_tty_driver, &xr_usb_serial_ops); + + retval = tty_register_driver(xr_usb_serial_tty_driver); + if (retval) { + put_tty_driver(xr_usb_serial_tty_driver); + return retval; + } + + retval = usb_register(&xr_usb_serial_driver); + if (retval) { + tty_unregister_driver(xr_usb_serial_tty_driver); + put_tty_driver(xr_usb_serial_tty_driver); + return retval; + } + + printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "\n"); + + return 0; +} + +static void __exit xr_usb_serial_exit(void) +{ + usb_deregister(&xr_usb_serial_driver); + tty_unregister_driver(xr_usb_serial_tty_driver); + put_tty_driver(xr_usb_serial_tty_driver); +} + +module_init(xr_usb_serial_init); +module_exit(xr_usb_serial_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_LICENSE("GPL"); +MODULE_ALIAS_CHARDEV_MAJOR(XR_USB_SERIAL_TTY_MAJOR); --- linux-5.8.0.orig/ubuntu/xr-usb-serial/xr_usb_serial_common.h +++ linux-5.8.0/ubuntu/xr-usb-serial/xr_usb_serial_common.h @@ -0,0 +1,187 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * CMSPAR, some architectures can't have space and mark parity. + */ + +#ifndef CMSPAR +#define CMSPAR 0 +#endif + +/* + * Major and minor numbers. + */ + +#define XR_USB_SERIAL_TTY_MAJOR 266 +#define XR_USB_SERIAL_TTY_MINORS 32 + +/* + * Requests. + */ + +#define USB_RT_XR_USB_SERIAL (USB_TYPE_CLASS | USB_RECIP_INTERFACE) + +/* + * Output control lines. + */ + +#define XR_USB_SERIAL_CTRL_DTR 0x01 +#define XR_USB_SERIAL_CTRL_RTS 0x02 + +/* + * Input control lines and line errors. + */ + +#define XR_USB_SERIAL_CTRL_DCD 0x01 +#define XR_USB_SERIAL_CTRL_DSR 0x02 +#define XR_USB_SERIAL_CTRL_BRK 0x04 +#define XR_USB_SERIAL_CTRL_RI 0x08 + +#define XR_USB_SERIAL_CTRL_FRAMING 0x10 +#define XR_USB_SERIAL_CTRL_PARITY 0x20 +#define XR_USB_SERIAL_CTRL_OVERRUN 0x40 + +/* + * Internal driver structures. + */ + +/* + * The only reason to have several buffers is to accommodate assumptions + * in line disciplines. They ask for empty space amount, receive our URB size, + * and proceed to issue several 1-character writes, assuming they will fit. + * The very first write takes a complete URB. Fortunately, this only happens + * when processing onlcr, so we only need 2 buffers. These values must be + * powers of 2. + */ +#define XR_USB_SERIAL_NW 16 +#define XR_USB_SERIAL_NR 16 + +struct xr_usb_serial_wb { + unsigned char *buf; + dma_addr_t dmah; + int len; + int use; + struct urb *urb; + struct xr_usb_serial *instance; +}; + +struct xr_usb_serial_rb { + int size; + unsigned char *base; + dma_addr_t dma; + int index; + struct xr_usb_serial *instance; +}; + +struct reg_addr_map { + unsigned int uart_enable_addr; + unsigned int uart_format_addr; + unsigned int uart_flow_addr; + unsigned int uart_loopback_addr; + unsigned int uart_xon_char_addr; + unsigned int uart_xoff_char_addr; + unsigned int uart_gpio_mode_addr; + unsigned int uart_gpio_dir_addr; + unsigned int uart_gpio_set_addr; + unsigned int uart_gpio_clr_addr; + unsigned int uart_gpio_status_addr; + unsigned int tx_break_addr; + unsigned int uart_custom_driver; + unsigned int uart_low_latency; +}; + +struct xr_usb_serial { + struct usb_device *dev; /* the corresponding usb device */ + struct usb_interface *control; /* control interface */ + struct usb_interface *data; /* data interface */ + struct tty_port port; /* our tty port data */ + struct urb *ctrlurb; /* urbs */ + u8 *ctrl_buffer; /* buffers of urbs */ + dma_addr_t ctrl_dma; /* dma handles of buffers */ + u8 *country_codes; /* country codes from device */ + unsigned int country_code_size; /* size of this buffer */ + unsigned int country_rel_date; /* release date of version */ + struct xr_usb_serial_wb wb[XR_USB_SERIAL_NW]; + unsigned long read_urbs_free; + struct urb *read_urbs[XR_USB_SERIAL_NR]; + struct xr_usb_serial_rb read_buffers[XR_USB_SERIAL_NR]; + int rx_buflimit; + int rx_endpoint; + spinlock_t read_lock; + int write_used; /* number of non-empty write buffers */ + int transmitting; + spinlock_t write_lock; + struct mutex mutex; + bool disconnected; + struct usb_cdc_line_coding line; /* bits, stop, parity */ + struct work_struct work; /* work queue entry for line discipline waking up */ + unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ + unsigned int ctrlout; /* output control lines (DTR, RTS) */ + unsigned int writesize; /* max packet size for the output bulk endpoint */ + unsigned int readsize,ctrlsize; /* buffer sizes for freeing */ + unsigned int minor; /* xr_usb_serial minor number */ + unsigned char clocal; /* termios CLOCAL */ + unsigned int ctrl_caps; /* control capabilities from the class specific header */ + unsigned int susp_count; /* number of suspended interfaces */ + unsigned int combined_interfaces:1; /* control and data collapsed */ + unsigned int is_int_ep:1; /* interrupt endpoints contrary to spec used */ + unsigned int throttled:1; /* actually throttled */ + unsigned int throttle_req:1; /* throttle requested */ + u8 bInterval; + struct xr_usb_serial_wb *delayed_wb; /* write queued for a device about to be woken */ + unsigned int channel; + unsigned short DeviceVendor; + unsigned short DeviceProduct; + struct reg_addr_map reg_map; + bool rs485_422_en; +}; + +#define CDC_DATA_INTERFACE_TYPE 0x0a + +/* constants describing various quirks and errors */ +#define NO_UNION_NORMAL 1 +#define SINGLE_RX_URB 2 +#define NO_CAP_LINE 4 +#define NOT_A_MODEM 8 +#define NO_DATA_INTERFACE 16 +#define IGNORE_DEVICE 32 + + +#define UART_ENABLE_TX 1 +#define UART_ENABLE_RX 2 + +#define UART_GPIO_CLR_DTR 0x8 +#define UART_GPIO_SET_DTR 0x8 +#define UART_GPIO_CLR_RTS 0x20 +#define UART_GPIO_SET_RTS 0x20 + +#define LOOPBACK_ENABLE_TX_RX 1 +#define LOOPBACK_ENABLE_RTS_CTS 2 +#define LOOPBACK_ENABLE_DTR_DSR 4 + +#define UART_FLOW_MODE_NONE 0x0 +#define UART_FLOW_MODE_HW 0x1 +#define UART_FLOW_MODE_SW 0x2 + +#define UART_GPIO_MODE_SEL_GPIO 0x0 +#define UART_GPIO_MODE_SEL_RTS_CTS 0x1 + +#define XR2280x_FUNC_MGR_OFFSET 0x40 + + + + --- linux-5.8.0.orig/ubuntu/xr-usb-serial/xr_usb_serial_hal.c +++ linux-5.8.0/ubuntu/xr-usb-serial/xr_usb_serial_hal.c @@ -0,0 +1,724 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define XR_SET_MAP_XR2280X 5 +#define XR_GET_MAP_XR2280X 5 + +#define XR_SET_MAP_XR21B142X 0 +#define XR_GET_MAP_XR21B142X 0 + +#define XR_SET_MAP_XR21V141X 0 +#define XR_GET_MAP_XR21V141X 1 + +#define XR_SET_MAP_XR21B1411 0 +#define XR_GET_MAP_XR21B1411 1 + + +int xr_usb_serial_set_reg(struct xr_usb_serial *xr_usb_serial,int regnum, int value) +{ + int result; + int channel = 0; + dev_dbg(&xr_usb_serial->control->dev, "%s Channel:%d 0x%02x = 0x%02x\n", __func__,channel,regnum, value); + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1400) + { + int XR2280xaddr = XR2280x_FUNC_MGR_OFFSET + regnum; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR2280X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR, /* request_type */ + value, /* request value */ + XR2280xaddr, /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + + } + else if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + + if(xr_usb_serial->channel) + channel = xr_usb_serial->channel - 1; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21V141X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR, /* request_type */ + value, /* request value */ + regnum | (channel << 8), /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else if(xr_usb_serial->DeviceProduct == 0x1411) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21B1411, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR , /* request_type */ + value, /* request value */ + regnum , /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else if((xr_usb_serial->DeviceProduct == 0x1420)|| + (xr_usb_serial->DeviceProduct == 0x1422)|| + (xr_usb_serial->DeviceProduct == 0x1424)) + + { + + channel = (xr_usb_serial->channel - 4)*2; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21B142X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR | 1, /* request_type */ + value, /* request value */ + regnum | (channel << 8), /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else + { + result = -1; + } + if(result < 0) + dev_dbg(&xr_usb_serial->control->dev, "%s Error:%d\n", __func__,result); + return result; + + +} +int xr_usb_serial_set_reg_ext(struct xr_usb_serial *xr_usb_serial,int channel,int regnum, int value) +{ + int result; + int XR2280xaddr = XR2280x_FUNC_MGR_OFFSET + regnum; + dev_dbg(&xr_usb_serial->control->dev, "%s channel:%d 0x%02x = 0x%02x\n", __func__,channel,regnum, value); + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1400) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR2280X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR, /* request_type */ + value, /* request value */ + XR2280xaddr, /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + + } + else if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21V141X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR, /* request_type */ + value, /* request value */ + regnum | (channel << 8), /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else if(xr_usb_serial->DeviceProduct == 0x1411) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21B1411, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR , /* request_type */ + value, /* request value */ + regnum , /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else if((xr_usb_serial->DeviceProduct == 0x1420)|| + (xr_usb_serial->DeviceProduct == 0x1422)|| + (xr_usb_serial->DeviceProduct == 0x1424)) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_sndctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_SET_MAP_XR21B142X, /* request */ + USB_DIR_OUT | USB_TYPE_VENDOR | 1, /* request_type */ + value, /* request value */ + regnum | (channel << 8), /* index */ + NULL, /* data */ + 0, /* size */ + 5000); /* timeout */ + } + else + { + result = -1; + } + if(result < 0) + dev_dbg(&xr_usb_serial->control->dev, "%s Error:%d\n", __func__,result); + return result; + + +} + +int xr_usb_serial_get_reg(struct xr_usb_serial *xr_usb_serial,int regnum, short *value) +{ + int result; + int channel = 0; + + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1400) + { + int XR2280xaddr = XR2280x_FUNC_MGR_OFFSET + regnum; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR2280X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR , /* request_type */ + 0, /* request value */ + XR2280xaddr, /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + + + + } + else if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + if(xr_usb_serial->channel) + channel = xr_usb_serial->channel -1; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21V141X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR, /* request_type */ + 0, /* request value */ + regnum | (channel << 8), /* index */ + value, /* data */ + 1, /* size */ + 5000); /* timeout */ + } + else if(xr_usb_serial->DeviceProduct == 0x1411) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21B1411, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR, /* request_type */ + 0, /* request value */ + regnum, /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + } + else if((xr_usb_serial->DeviceProduct == 0x1420)|| + (xr_usb_serial->DeviceProduct == 0x1422)|| + (xr_usb_serial->DeviceProduct == 0x1424)) + + { + channel = (xr_usb_serial->channel -4)*2; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21B142X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR | 1, /* request_type */ + 0, /* request value */ + regnum | (channel << 8), /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + } + else + { + result = -1; + } + + if(result < 0) + dev_dbg(&xr_usb_serial->control->dev, "%s channel:%d Reg 0x%x Error:%d\n", __func__,channel,regnum,result); + else + dev_dbg(&xr_usb_serial->control->dev, "%s channel:%d 0x%x = 0x%04x\n", __func__,channel,regnum, *value); + + return result; + +} + + +int xr_usb_serial_get_reg_ext(struct xr_usb_serial *xr_usb_serial,int channel,int regnum, short *value) +{ + int result; + int XR2280xaddr = XR2280x_FUNC_MGR_OFFSET + regnum; + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1400) + { + + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR2280X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR , /* request_type */ + 0, /* request value */ + XR2280xaddr, /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + + + + } + else if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + unsigned char reg_value = 0; + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21V141X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR, /* request_type */ + 0, /* request value */ + regnum | (channel << 8), /* index */ + ®_value, /* data */ + 1, /* size */ + 5000); /* timeout */ + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_get_reg_ext reg:%x\n",reg_value); + *value = reg_value; + } + else if(xr_usb_serial->DeviceProduct == 0x1411) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21B1411, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR , /* request_type */ + 0, /* request value */ + regnum | (channel << 8), /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + } + else if((xr_usb_serial->DeviceProduct == 0x1420)|| + (xr_usb_serial->DeviceProduct == 0x1422)|| + (xr_usb_serial->DeviceProduct == 0x1424)) + { + result = usb_control_msg(xr_usb_serial->dev, /* usb device */ + usb_rcvctrlpipe(xr_usb_serial->dev, 0), /* endpoint pipe */ + XR_GET_MAP_XR21B142X, /* request */ + USB_DIR_IN | USB_TYPE_VENDOR | 1, /* request_type */ + 0, /* request value */ + regnum | (channel << 8), /* index */ + value, /* data */ + 2, /* size */ + 5000); /* timeout */ + } + else + { + result = -1; + } + + if(result < 0) + dev_dbg(&xr_usb_serial->control->dev, "%s Error:%d\n", __func__,result); + else + dev_dbg(&xr_usb_serial->control->dev, "%s channel:%d 0x%x = 0x%04x\n", __func__,channel,regnum, *value); + + return result; + +} + +struct xr21v141x_baud_rate +{ + unsigned int tx; + unsigned int rx0; + unsigned int rx1; +}; + +static struct xr21v141x_baud_rate xr21v141x_baud_rates[] = { + { 0x000, 0x000, 0x000 }, + { 0x000, 0x000, 0x000 }, + { 0x100, 0x000, 0x100 }, + { 0x020, 0x400, 0x020 }, + { 0x010, 0x100, 0x010 }, + { 0x208, 0x040, 0x208 }, + { 0x104, 0x820, 0x108 }, + { 0x844, 0x210, 0x884 }, + { 0x444, 0x110, 0x444 }, + { 0x122, 0x888, 0x224 }, + { 0x912, 0x448, 0x924 }, + { 0x492, 0x248, 0x492 }, + { 0x252, 0x928, 0x292 }, + { 0X94A, 0X4A4, 0XA52 }, + { 0X52A, 0XAA4, 0X54A }, + { 0XAAA, 0x954, 0X4AA }, + { 0XAAA, 0x554, 0XAAA }, + { 0x555, 0XAD4, 0X5AA }, + { 0XB55, 0XAB4, 0X55A }, + { 0X6B5, 0X5AC, 0XB56 }, + { 0X5B5, 0XD6C, 0X6D6 }, + { 0XB6D, 0XB6A, 0XDB6 }, + { 0X76D, 0X6DA, 0XBB6 }, + { 0XEDD, 0XDDA, 0X76E }, + { 0XDDD, 0XBBA, 0XEEE }, + { 0X7BB, 0XF7A, 0XDDE }, + { 0XF7B, 0XEF6, 0X7DE }, + { 0XDF7, 0XBF6, 0XF7E }, + { 0X7F7, 0XFEE, 0XEFE }, + { 0XFDF, 0XFBE, 0X7FE }, + { 0XF7F, 0XEFE, 0XFFE }, + { 0XFFF, 0XFFE, 0XFFD }, +}; +#define UART_CLOCK_DIVISOR_0 0x004 +#define UART_CLOCK_DIVISOR_1 0x005 +#define UART_CLOCK_DIVISOR_2 0x006 +#define UART_TX_CLOCK_MASK_0 0x007 +#define UART_TX_CLOCK_MASK_1 0x008 +#define UART_RX_CLOCK_MASK_0 0x009 +#define UART_RX_CLOCK_MASK_1 0x00a + +static int xr21v141x_set_baud_rate(struct xr_usb_serial *xr_usb_serial, unsigned int rate) +{ + unsigned int divisor = 48000000 / rate; + unsigned int i = ((32 * 48000000) / rate) & 0x1f; + unsigned int tx_mask = xr21v141x_baud_rates[i].tx; + unsigned int rx_mask = (divisor & 1) ? xr21v141x_baud_rates[i].rx1 : xr21v141x_baud_rates[i].rx0; + + dev_dbg(&xr_usb_serial->control->dev, "Setting baud rate to %d: i=%u div=%u tx=%03x rx=%03x\n", rate, i, divisor, tx_mask, rx_mask); + + xr_usb_serial_set_reg(xr_usb_serial,UART_CLOCK_DIVISOR_0, (divisor >> 0) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_CLOCK_DIVISOR_1, (divisor >> 8) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_CLOCK_DIVISOR_2, (divisor >> 16) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_TX_CLOCK_MASK_0, (tx_mask >> 0) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_TX_CLOCK_MASK_1, (tx_mask >> 8) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_RX_CLOCK_MASK_0, (rx_mask >> 0) & 0xff); + xr_usb_serial_set_reg(xr_usb_serial,UART_RX_CLOCK_MASK_1, (rx_mask >> 8) & 0xff); + + return 0; +} +/* devices aren't required to support these requests. + * the cdc xr_usb_serial descriptor tells whether they do... + */ +int xr_usb_serial_set_control(struct xr_usb_serial *xr_usb_serial, unsigned int control) +{ + int ret = 0; + + if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + if (control & XR_USB_SERIAL_CTRL_DTR) + xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_gpio_clr_addr, 0x08); + else + xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_gpio_set_addr, 0x08); + + if (control & XR_USB_SERIAL_CTRL_RTS) + xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_gpio_clr_addr, 0x20); + else + xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_gpio_set_addr, 0x20); + } + else + { + ret = xr_usb_serial_ctrl_msg(xr_usb_serial, USB_CDC_REQ_SET_CONTROL_LINE_STATE, control, NULL, 0); + } + + return ret; +} + +int xr_usb_serial_set_line(struct xr_usb_serial *xr_usb_serial, struct usb_cdc_line_coding* line) + { + int ret = 0; + unsigned int format_size; + unsigned int format_parity; + unsigned int format_stop; + if((xr_usb_serial->DeviceProduct == 0x1410) || + (xr_usb_serial->DeviceProduct == 0x1412) || + (xr_usb_serial->DeviceProduct == 0x1414)) + { + xr21v141x_set_baud_rate(xr_usb_serial,line->dwDTERate); + format_size = line->bDataBits; + format_parity = line->bParityType; + format_stop = line->bCharFormat; + xr_usb_serial_set_reg(xr_usb_serial, + xr_usb_serial->reg_map.uart_format_addr, + (format_size << 0) | (format_parity << 4) | (format_stop << 7) ); + + } + else + { + ret = xr_usb_serial_ctrl_msg(xr_usb_serial, USB_CDC_REQ_SET_LINE_CODING, 0, line, sizeof *(line)); + } + return ret; + } + int xr_usb_serial_set_flow_mode(struct xr_usb_serial *xr_usb_serial, + struct tty_struct *tty, unsigned int cflag) + { + unsigned int flow; + unsigned int gpio_mode; + + if (cflag & CRTSCTS) + { + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_set_flow_mode:hardware\n"); + flow = UART_FLOW_MODE_HW; + gpio_mode = UART_GPIO_MODE_SEL_RTS_CTS; + } + else if (I_IXOFF(tty) || I_IXON(tty)) + { + unsigned char start_char = START_CHAR(tty); + unsigned char stop_char = STOP_CHAR(tty); + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_set_flow_mode:software\n"); + flow = UART_FLOW_MODE_SW; + gpio_mode = UART_GPIO_MODE_SEL_GPIO; + + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_xon_char_addr, start_char); + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_xoff_char_addr, stop_char); + } + else + { + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_set_flow_mode:none\n"); + flow = UART_FLOW_MODE_NONE; + gpio_mode = UART_GPIO_MODE_SEL_GPIO; + } + // rs485,rs422 FD/HD mode + if (xr_usb_serial->rs485_422_en) { + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_flow_addr, 0x00); + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_mode_addr, 0x0B); + } else { + //rs232, default mode + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_flow_addr, flow); + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_mode_addr, gpio_mode); + } + return 0; + + + } + +int xr_usb_serial_send_break(struct xr_usb_serial *xr_usb_serial, int state) +{ + int ret = 0; + if((xr_usb_serial->DeviceProduct == 0x1410)|| + (xr_usb_serial->DeviceProduct == 0x1412)|| + (xr_usb_serial->DeviceProduct == 0x1414)) + { + if(state) + ret = xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.tx_break_addr,0xffff); + else + ret = xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.tx_break_addr,0); + } + else + { + ret = xr_usb_serial_ctrl_msg(xr_usb_serial, USB_CDC_REQ_SEND_BREAK, state, NULL, 0); + } + return ret; +} + +#define URM_REG_BLOCK 4 +#define URM_ENABLE_BASE 0x010 +#define URM_ENABLE_0_TX 0x001 +#define URM_ENABLE_0_RX 0x002 + +int xr_usb_serial_enable(struct xr_usb_serial *xr_usb_serial) +{ + int ret = 0; + int channel = xr_usb_serial->channel; + if((xr_usb_serial->DeviceProduct == 0x1410)|| + (xr_usb_serial->DeviceProduct == 0x1412)|| + (xr_usb_serial->DeviceProduct == 0x1414)) + { + ret = xr_usb_serial_set_reg_ext(xr_usb_serial,URM_REG_BLOCK,URM_ENABLE_BASE + channel,URM_ENABLE_0_TX); + ret = xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_enable_addr,UART_ENABLE_TX | UART_ENABLE_RX); + ret = xr_usb_serial_set_reg_ext(xr_usb_serial,URM_REG_BLOCK,URM_ENABLE_BASE + channel,URM_ENABLE_0_TX | URM_ENABLE_0_RX); + } + else + { + ret = xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_enable_addr,UART_ENABLE_TX | UART_ENABLE_RX); + } + + return ret; +} +int xr_usb_serial_disable(struct xr_usb_serial *xr_usb_serial) +{ + int ret = 0; + int channel = xr_usb_serial->channel; + ret = xr_usb_serial_set_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_enable_addr,0); + if((xr_usb_serial->DeviceProduct == 0x1410)|| + (xr_usb_serial->DeviceProduct == 0x1412)|| + (xr_usb_serial->DeviceProduct == 0x1414)) + { + ret = xr_usb_serial_set_reg_ext(xr_usb_serial,URM_REG_BLOCK,URM_ENABLE_BASE + channel,URM_ENABLE_0_TX); + } + + return ret; +} +int xr_usb_serial_set_loopback(struct xr_usb_serial *xr_usb_serial, int channel) +{ + int ret = 0; + xr_usb_serial_disable(xr_usb_serial); + ret = xr_usb_serial_set_reg_ext(xr_usb_serial,channel, + xr_usb_serial->reg_map.uart_loopback_addr,0x07); + xr_usb_serial_enable(xr_usb_serial); + return ret; +} + + +static int xr_usb_serial_tiocmget(struct xr_usb_serial *xr_usb_serial) + +{ + short data; + int result; + result = xr_usb_serial_get_reg(xr_usb_serial,xr_usb_serial->reg_map.uart_gpio_status_addr, &data); + dev_dbg(&xr_usb_serial->control->dev, "xr_usb_serial_tiocmget uart_gpio_status_addr:0x%04x\n",data); + if (result) + return ((data & 0x8) ? 0: TIOCM_DTR) | ((data & 0x20) ? 0:TIOCM_RTS ) | ((data & 0x4) ? 0:TIOCM_DSR) | ((data & 0x1) ? 0 : TIOCM_RI) | ((data & 0x2) ? 0:TIOCM_CD) | ((data & 0x10) ? 0 : TIOCM_CTS); + else + return -EFAULT; +} +static int xr_usb_serial_tiocmset(struct xr_usb_serial *xr_usb_serial, + + unsigned int set, unsigned int clear) + +{ + unsigned int newctrl = 0; + newctrl = xr_usb_serial->ctrlout; + + set = (set & TIOCM_DTR ? XR_USB_SERIAL_CTRL_DTR : 0) | (set & TIOCM_RTS ? XR_USB_SERIAL_CTRL_RTS : 0); + + clear = (clear & TIOCM_DTR ? XR_USB_SERIAL_CTRL_DTR : 0) | (clear & TIOCM_RTS ? XR_USB_SERIAL_CTRL_RTS : 0); + + newctrl = (newctrl & ~clear) | set; + + if (xr_usb_serial->ctrlout == newctrl) + return 0; + + xr_usb_serial->ctrlout = newctrl; + + if (newctrl & XR_USB_SERIAL_CTRL_DTR) + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_clr_addr, 0x08); + else + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_set_addr, 0x08); + + if (newctrl & XR_USB_SERIAL_CTRL_RTS) + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_clr_addr, 0x20); + else + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_set_addr, 0x20); + + return 0; +} + + +static struct reg_addr_map xr21b140x_reg_map; +static struct reg_addr_map xr21b1411_reg_map; +static struct reg_addr_map xr21v141x_reg_map; +static struct reg_addr_map xr21b142x_reg_map; + +static void init_xr21b140x_reg_map(void) +{ + xr21b140x_reg_map.uart_enable_addr = 0x00; + xr21b140x_reg_map.uart_format_addr = 0x05; + xr21b140x_reg_map.uart_flow_addr = 0x06; + xr21b140x_reg_map.uart_loopback_addr = 0x16; + xr21b140x_reg_map.uart_xon_char_addr = 0x07; + xr21b140x_reg_map.uart_xoff_char_addr = 0x08; + xr21b140x_reg_map.uart_gpio_mode_addr = 0x0c; + xr21b140x_reg_map.uart_gpio_dir_addr = 0x0d; + xr21b140x_reg_map.uart_gpio_set_addr = 0x0e; + xr21b140x_reg_map.uart_gpio_clr_addr = 0x0f; + xr21b140x_reg_map.uart_gpio_status_addr = 0x10; + xr21b140x_reg_map.tx_break_addr = 0x0a; + xr21b140x_reg_map.uart_custom_driver = 0x41; +} + +static void init_xr21b1411_reg_map(void) +{ + xr21b1411_reg_map.uart_enable_addr = 0xc00; + xr21b1411_reg_map.uart_flow_addr = 0xc06; + xr21b1411_reg_map.uart_loopback_addr = 0xc16; + xr21b1411_reg_map.uart_xon_char_addr = 0xc07; + xr21b1411_reg_map.uart_xoff_char_addr = 0xc08; + xr21b1411_reg_map.uart_gpio_mode_addr = 0xc0c; + xr21b1411_reg_map.uart_gpio_dir_addr = 0xc0d; + xr21b1411_reg_map.uart_gpio_set_addr = 0xc0e; + xr21b1411_reg_map.uart_gpio_clr_addr = 0xc0f; + xr21b1411_reg_map.uart_gpio_status_addr = 0xc10; + xr21b1411_reg_map.tx_break_addr = 0xc0a; + xr21b1411_reg_map.uart_custom_driver = 0x20d; +} + +static void init_xr21v141x_reg_map(void) +{ + xr21v141x_reg_map.uart_enable_addr = 0x03; + xr21v141x_reg_map.uart_format_addr = 0x0b; + xr21v141x_reg_map.uart_flow_addr = 0x0c; + xr21v141x_reg_map.uart_loopback_addr = 0x12; + xr21v141x_reg_map.uart_xon_char_addr = 0x10; + xr21v141x_reg_map.uart_xoff_char_addr = 0x11; + xr21v141x_reg_map.uart_gpio_mode_addr = 0x1a; + xr21v141x_reg_map.uart_gpio_dir_addr = 0x1b; + xr21v141x_reg_map.uart_gpio_set_addr = 0x1d; + xr21v141x_reg_map.uart_gpio_clr_addr = 0x1e; + xr21v141x_reg_map.uart_gpio_status_addr = 0x1f; + xr21v141x_reg_map.tx_break_addr = 0x14; +} +static void init_xr21b142x_reg_map(void) +{ + xr21b142x_reg_map.uart_enable_addr = 0x00; + xr21b142x_reg_map.uart_flow_addr = 0x06; + xr21b142x_reg_map.uart_loopback_addr = 0x16; + xr21b142x_reg_map.uart_xon_char_addr = 0x07; + xr21b142x_reg_map.uart_xoff_char_addr = 0x08; + xr21b142x_reg_map.uart_gpio_mode_addr = 0x0c; + xr21b142x_reg_map.uart_gpio_dir_addr = 0x0d; + xr21b142x_reg_map.uart_gpio_set_addr = 0x0e; + xr21b142x_reg_map.uart_gpio_clr_addr = 0x0f; + xr21b142x_reg_map.uart_gpio_status_addr = 0x10; + xr21b140x_reg_map.tx_break_addr = 0x0a; + xr21b140x_reg_map.uart_custom_driver = 0x60; + xr21b140x_reg_map.uart_low_latency = 0x46; +} + +int xr_usb_serial_pre_setup(struct xr_usb_serial *xr_usb_serial) +{ + int ret = 0; + + init_xr21b140x_reg_map(); + init_xr21b1411_reg_map(); + init_xr21v141x_reg_map(); + init_xr21b142x_reg_map(); + if((xr_usb_serial->DeviceProduct&0xfff0) == 0x1400) + { + memcpy(&(xr_usb_serial->reg_map),&xr21b140x_reg_map,sizeof(struct reg_addr_map)); + + } + else if(xr_usb_serial->DeviceProduct == 0x1411) + { + memcpy(&(xr_usb_serial->reg_map),&xr21b1411_reg_map,sizeof(struct reg_addr_map)); + } + else if((xr_usb_serial->DeviceProduct == 0x1410)|| + (xr_usb_serial->DeviceProduct == 0x1412)|| + (xr_usb_serial->DeviceProduct == 0x1414)) + { + memcpy(&(xr_usb_serial->reg_map),&xr21v141x_reg_map,sizeof(struct reg_addr_map)); + } + else if((xr_usb_serial->DeviceProduct == 0x1420)|| + (xr_usb_serial->DeviceProduct == 0x1422)|| + (xr_usb_serial->DeviceProduct == 0x1424)) + { + memcpy(&(xr_usb_serial->reg_map),&xr21b142x_reg_map,sizeof(struct reg_addr_map)); + } + else + { + ret = -1; + } + if(xr_usb_serial->reg_map.uart_custom_driver) + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_custom_driver, 1); + + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_mode_addr, 0); + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_dir_addr, 0x28); + xr_usb_serial_set_reg(xr_usb_serial, xr_usb_serial->reg_map.uart_gpio_set_addr, UART_GPIO_SET_DTR | UART_GPIO_SET_RTS); + + return ret; + +} + + + --- linux-5.8.0.orig/ubuntu/xr-usb-serial/xr_usb_serial_ioctl.h +++ linux-5.8.0/ubuntu/xr-usb-serial/xr_usb_serial_ioctl.h @@ -0,0 +1,31 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#define XR_USB_SERIAL_IOC_MAGIC 'v' + +#define XR_USB_SERIAL_GET_REG _IOWR(XR_USB_SERIAL_IOC_MAGIC, 1, int) +#define XR_USB_SERIAL_SET_REG _IOWR(XR_USB_SERIAL_IOC_MAGIC, 2, int) +#define XR_USB_SERIAL_SET_ADDRESS_MATCH _IO(XR_USB_SERIAL_IOC_MAGIC, 3) +#define XR_USB_SERIAL_SET_PRECISE_FLAGS _IO(XR_USB_SERIAL_IOC_MAGIC, 4) +#define XR_USB_SERIAL_TEST_MODE _IO(XR_USB_SERIAL_IOC_MAGIC, 5) +#define XR_USB_SERIAL_LOOPBACK _IO(XR_USB_SERIAL_IOC_MAGIC, 6) + +#define VZ_ADDRESS_UNICAST_S 0 +#define VZ_ADDRESS_BROADCAST_S 8 +#define VZ_ADDRESS_MATCH(U, B) (0x8000000 | ((B) << VZ_ADDRESS_BROADCAST_S) | ((U) << VZ_ADDRESS_UNICAST_S)) +#define VZ_ADDRESS_MATCH_DISABLE 0 --- linux-5.8.0.orig/update-version-dkms +++ linux-5.8.0/update-version-dkms @@ -0,0 +1,58 @@ +#!/bin/bash + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +pocket="$1" + +case "$pocket" in +proposed) pocket_list="-$pocket -updates -release" ;; +updates|security) pocket_list="-$pocket -release" ;; +release) pocket_list="-release" ;; +*) + echo "$0: $pocket: unknown archive pocket" 1>&2 + exit 1 + ;; +esac + +# find our changelog. +debian=$(awk -F= '($1 == "DEBIAN") { print $2 }' "debian/dkms-versions.new" +while read package version remainder +do + for pocket_raw in $pocket_list + do + pocket="${pocket_raw#-release}" + read x x pocket_version x <&2 + exit 1 + else + echo "$package: $pocket_version found in $pocket_raw" + fi + if [ "$version" != "$pocket_version" ]; then + echo "$package: updated to $pocket_version" + fi + echo "$package $pocket_version $remainder" | sed -e 's/ *$//' >>"debian/dkms-versions.new" +done <"debian/dkms-versions" +if ! cmp -s "debian/dkms-versions.new" "debian/dkms-versions"; then + mv -f "debian/dkms-versions.new" "debian/dkms-versions" + git commit -s -m "UBUNTU: update dkms package versions" \ + -m "BugLink: https://bugs.launchpad.net/bugs/1786013" \ + "debian/dkms-versions" +else + rm -f "debian/dkms-versions.new" +fi --- linux-5.8.0.orig/virt/kvm/kvm_main.c +++ linux-5.8.0/virt/kvm/kvm_main.c @@ -427,10 +427,10 @@ * count is also read inside the mmu_lock critical section. */ kvm->mmu_notifier_count++; - need_tlb_flush = kvm_unmap_hva_range(kvm, range->start, range->end); - need_tlb_flush |= kvm->tlbs_dirty; + need_tlb_flush = kvm_unmap_hva_range(kvm, range->start, range->end, + range->flags); /* we've to flush the tlb before the pages can be freed */ - if (need_tlb_flush) + if (need_tlb_flush || kvm->tlbs_dirty) kvm_flush_remote_tlbs(kvm); spin_unlock(&kvm->mmu_lock); @@ -1231,6 +1231,7 @@ return -EINVAL; /* We can read the guest memory with __xxx_user() later on. */ if ((mem->userspace_addr & (PAGE_SIZE - 1)) || + (mem->userspace_addr != untagged_addr(mem->userspace_addr)) || !access_ok((void __user *)(unsigned long)mem->userspace_addr, mem->memory_size)) return -EINVAL; @@ -1820,10 +1821,12 @@ bool write_fault, bool *writable, kvm_pfn_t *p_pfn) { - unsigned long pfn; + kvm_pfn_t pfn; + pte_t *ptep; + spinlock_t *ptl; int r; - r = follow_pfn(vma, addr, &pfn); + r = follow_pte(vma->vm_mm, addr, &ptep, &ptl); if (r) { /* * get_user_pages fails for VM_IO and VM_PFNMAP vmas and does @@ -1838,14 +1841,19 @@ if (r) return r; - r = follow_pfn(vma, addr, &pfn); + r = follow_pte(vma->vm_mm, addr, &ptep, &ptl); if (r) return r; + } + if (write_fault && !pte_write(*ptep)) { + pfn = KVM_PFN_ERR_RO_FAULT; + goto out; } if (writable) - *writable = true; + *writable = pte_write(*ptep); + pfn = pte_pfn(*ptep); /* * Get a reference here because callers of *hva_to_pfn* and @@ -1860,6 +1868,8 @@ */ kvm_get_pfn(pfn); +out: + pte_unmap_unlock(ptep, ptl); *p_pfn = pfn; return 0; } @@ -4268,7 +4278,7 @@ void kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, struct kvm_io_device *dev) { - int i; + int i, j; struct kvm_io_bus *new_bus, *bus; bus = kvm_get_bus(kvm, bus_idx); @@ -4285,17 +4295,20 @@ new_bus = kmalloc(struct_size(bus, range, bus->dev_count - 1), GFP_KERNEL_ACCOUNT); - if (!new_bus) { + if (new_bus) { + memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); + new_bus->dev_count--; + memcpy(new_bus->range + i, bus->range + i + 1, + (new_bus->dev_count - i) * sizeof(struct kvm_io_range)); + } else { pr_err("kvm: failed to shrink bus, removing it completely\n"); - goto broken; + for (j = 0; j < bus->dev_count; j++) { + if (j == i) + continue; + kvm_iodevice_destructor(bus->range[j].dev); + } } - memcpy(new_bus, bus, sizeof(*bus) + i * sizeof(struct kvm_io_range)); - new_bus->dev_count--; - memcpy(new_bus->range + i, bus->range + i + 1, - (new_bus->dev_count - i) * sizeof(struct kvm_io_range)); - -broken: rcu_assign_pointer(kvm->buses[bus_idx], new_bus); synchronize_srcu_expedited(&kvm->srcu); kfree(bus);